aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorredmatrix <git@macgirvin.com>2016-06-19 19:12:33 -0700
committerredmatrix <git@macgirvin.com>2016-06-19 19:12:33 -0700
commitfb61c4fb3497d3751bb43f12cadee9e9c7776be9 (patch)
tree604989e10424456783fccff1fccc5b14da26db7f
parentbfaabfb7b5ff639992a01b0e1fc374cd43d536e9 (diff)
parent4578649f758e65f1d87ebb98da7cd891d0b90d0d (diff)
downloadvolse-hubzilla-fb61c4fb3497d3751bb43f12cadee9e9c7776be9.tar.gz
volse-hubzilla-fb61c4fb3497d3751bb43f12cadee9e9c7776be9.tar.bz2
volse-hubzilla-fb61c4fb3497d3751bb43f12cadee9e9c7776be9.zip
Merge branch '1.8RC'
-rwxr-xr-x.gitignore2
-rw-r--r--CHANGELOG76
-rw-r--r--LICENSE2
-rw-r--r--README.md7
-rw-r--r--Zotlabs/Daemon/Checksites.php55
-rw-r--r--Zotlabs/Daemon/Cli_suggest.php14
-rw-r--r--Zotlabs/Daemon/Cron.php181
-rw-r--r--Zotlabs/Daemon/Cron_daily.php90
-rw-r--r--Zotlabs/Daemon/Cron_weekly.php49
-rw-r--r--Zotlabs/Daemon/Cronhooks.php17
-rw-r--r--Zotlabs/Daemon/Deliver.php85
-rw-r--r--Zotlabs/Daemon/Deliver_hooks.php24
-rw-r--r--Zotlabs/Daemon/Directory.php100
-rw-r--r--Zotlabs/Daemon/Expire.php93
-rw-r--r--Zotlabs/Daemon/Externals.php98
-rw-r--r--Zotlabs/Daemon/Gprobe.php33
-rwxr-xr-xZotlabs/Daemon/Importdoc.php35
-rw-r--r--Zotlabs/Daemon/Master.php31
-rw-r--r--Zotlabs/Daemon/Notifier.php663
-rw-r--r--Zotlabs/Daemon/Onedirsync.php76
-rw-r--r--Zotlabs/Daemon/Onepoll.php152
-rw-r--r--Zotlabs/Daemon/Poller.php202
-rw-r--r--Zotlabs/Daemon/Queue.php90
-rw-r--r--Zotlabs/Daemon/Ratenotif.php113
-rw-r--r--Zotlabs/Extend/Hook.php8
-rw-r--r--Zotlabs/Lib/AConfig.php25
-rw-r--r--Zotlabs/Lib/AbConfig.php73
-rw-r--r--Zotlabs/Lib/Apps.php708
-rw-r--r--Zotlabs/Lib/Chatroom.php267
-rw-r--r--Zotlabs/Lib/Config.php166
-rw-r--r--Zotlabs/Lib/Enotify.php685
-rw-r--r--Zotlabs/Lib/IConfig.php165
-rw-r--r--Zotlabs/Lib/PConfig.php189
-rw-r--r--Zotlabs/Lib/ProtoDriver.php19
-rw-r--r--Zotlabs/Lib/System.php58
-rw-r--r--Zotlabs/Lib/ThreadItem.php780
-rw-r--r--Zotlabs/Lib/ThreadStream.php220
-rw-r--r--Zotlabs/Lib/XConfig.php160
-rw-r--r--Zotlabs/Lib/ZotDriver.php30
-rw-r--r--Zotlabs/Module/Acl.php34
-rw-r--r--Zotlabs/Module/Admin.php168
-rw-r--r--Zotlabs/Module/Api.php2
-rw-r--r--Zotlabs/Module/Appman.php17
-rw-r--r--Zotlabs/Module/Apps.php17
-rw-r--r--Zotlabs/Module/Attach.php4
-rw-r--r--Zotlabs/Module/Blocks.php2
-rw-r--r--Zotlabs/Module/Cal.php31
-rw-r--r--Zotlabs/Module/Channel.php550
-rw-r--r--Zotlabs/Module/Chanview.php11
-rw-r--r--Zotlabs/Module/Chat.php24
-rw-r--r--Zotlabs/Module/Chatsvc.php12
-rw-r--r--Zotlabs/Module/Cloud.php5
-rw-r--r--Zotlabs/Module/Connect.php5
-rw-r--r--Zotlabs/Module/Connections.php4
-rw-r--r--Zotlabs/Module/Connedit.php19
-rw-r--r--Zotlabs/Module/Contactgroup.php4
-rw-r--r--Zotlabs/Module/Cover_photo.php46
-rw-r--r--Zotlabs/Module/Dav.php1
-rw-r--r--Zotlabs/Module/Directory.php4
-rw-r--r--Zotlabs/Module/Display.php10
-rw-r--r--Zotlabs/Module/Editblock.php2
-rw-r--r--Zotlabs/Module/Editlayout.php2
-rw-r--r--Zotlabs/Module/Editpost.php4
-rw-r--r--Zotlabs/Module/Editwebpage.php2
-rw-r--r--Zotlabs/Module/Events.php46
-rw-r--r--Zotlabs/Module/Fbrowser.php4
-rw-r--r--Zotlabs/Module/Feed.php2
-rw-r--r--Zotlabs/Module/Filer.php2
-rw-r--r--Zotlabs/Module/Filerm.php2
-rw-r--r--Zotlabs/Module/Follow.php5
-rw-r--r--Zotlabs/Module/Fsuggest.php117
-rw-r--r--Zotlabs/Module/Getfile.php1
-rw-r--r--Zotlabs/Module/Group.php14
-rw-r--r--Zotlabs/Module/Help.php2
-rw-r--r--Zotlabs/Module/Import.php14
-rw-r--r--Zotlabs/Module/Item.php20
-rw-r--r--Zotlabs/Module/Layouts.php2
-rw-r--r--Zotlabs/Module/Like.php6
-rw-r--r--Zotlabs/Module/Linkinfo.php2
-rw-r--r--Zotlabs/Module/Lockview.php8
-rw-r--r--Zotlabs/Module/Locs.php6
-rw-r--r--Zotlabs/Module/Magic.php8
-rw-r--r--Zotlabs/Module/Mail.php16
-rw-r--r--Zotlabs/Module/Manage.php10
-rw-r--r--Zotlabs/Module/Menu.php2
-rw-r--r--Zotlabs/Module/Message.php2
-rw-r--r--Zotlabs/Module/Mood.php2
-rw-r--r--Zotlabs/Module/Network.php4
-rw-r--r--Zotlabs/Module/New_channel.php2
-rw-r--r--Zotlabs/Module/Notifications.php6
-rw-r--r--Zotlabs/Module/Notify.php4
-rw-r--r--Zotlabs/Module/Oep.php20
-rw-r--r--Zotlabs/Module/Photo.php18
-rw-r--r--Zotlabs/Module/Photos.php87
-rw-r--r--Zotlabs/Module/Ping.php43
-rw-r--r--Zotlabs/Module/Poke.php2
-rw-r--r--Zotlabs/Module/Prate.php2
-rw-r--r--Zotlabs/Module/Probe.php16
-rw-r--r--Zotlabs/Module/Profile.php4
-rw-r--r--Zotlabs/Module/Profile_photo.php50
-rw-r--r--Zotlabs/Module/Profiles.php49
-rw-r--r--Zotlabs/Module/Profperm.php2
-rw-r--r--Zotlabs/Module/Pubsites.php7
-rw-r--r--Zotlabs/Module/Pubstream.php4
-rw-r--r--Zotlabs/Module/Randprof.php1
-rw-r--r--Zotlabs/Module/Rate.php6
-rw-r--r--Zotlabs/Module/Ratings.php6
-rw-r--r--Zotlabs/Module/React.php51
-rw-r--r--Zotlabs/Module/Regdir.php13
-rw-r--r--Zotlabs/Module/Register.php2
-rw-r--r--Zotlabs/Module/Removeaccount.php11
-rw-r--r--Zotlabs/Module/Removeme.php5
-rw-r--r--Zotlabs/Module/Rmagic.php8
-rw-r--r--Zotlabs/Module/Rsd_xml.php2
-rw-r--r--Zotlabs/Module/Search.php4
-rw-r--r--Zotlabs/Module/Search_ac.php2
-rw-r--r--Zotlabs/Module/Settings.php26
-rw-r--r--Zotlabs/Module/Setup.php73
-rw-r--r--Zotlabs/Module/Share.php2
-rw-r--r--Zotlabs/Module/Sharedwithme.php4
-rw-r--r--Zotlabs/Module/Siteinfo.php4
-rw-r--r--Zotlabs/Module/Subthread.php2
-rw-r--r--Zotlabs/Module/Tagger.php4
-rw-r--r--Zotlabs/Module/Tagrm.php2
-rw-r--r--Zotlabs/Module/Tasks.php20
-rw-r--r--Zotlabs/Module/Thing.php8
-rw-r--r--Zotlabs/Module/Uexport.php2
-rw-r--r--Zotlabs/Module/Viewconnections.php9
-rw-r--r--Zotlabs/Module/Wall_attach.php2
-rw-r--r--Zotlabs/Module/Wall_upload.php2
-rw-r--r--Zotlabs/Module/Webpages.php2
-rw-r--r--Zotlabs/Module/Wiki.php424
-rw-r--r--Zotlabs/Module/Zotfeed.php4
-rw-r--r--Zotlabs/Project/System.php58
-rw-r--r--Zotlabs/Render/Comanche.php7
-rwxr-xr-xZotlabs/Render/SimpleTemplate.php310
-rwxr-xr-xZotlabs/Render/SmartyInterface.php48
-rwxr-xr-xZotlabs/Render/SmartyTemplate.php75
-rwxr-xr-xZotlabs/Render/TemplateEngine.php12
-rw-r--r--Zotlabs/Render/Theme.php131
-rw-r--r--Zotlabs/Storage/BasicAuth.php25
-rw-r--r--Zotlabs/Storage/Browser.php9
-rw-r--r--Zotlabs/Storage/Directory.php12
-rw-r--r--Zotlabs/Storage/File.php14
-rw-r--r--Zotlabs/Storage/GitRepo.php18
-rw-r--r--Zotlabs/Web/Router.php8
-rw-r--r--Zotlabs/Web/Session.php48
-rw-r--r--Zotlabs/Web/SessionHandler.php6
-rw-r--r--Zotlabs/Web/WebServer.php130
-rw-r--r--Zotlabs/Zot/Auth.php8
-rw-r--r--Zotlabs/Zot/Finger.php130
-rw-r--r--Zotlabs/Zot/Verify.php6
-rw-r--r--app/wiki.apd4
-rw-r--r--app/wiki.pngbin0 -> 10668 bytes
-rwxr-xr-xboot.php361
-rw-r--r--doc/Privacy.md4
-rw-r--r--doc/addons.bb19
-rw-r--r--doc/bugs.bb16
-rw-r--r--doc/ca/develop.bb3
-rw-r--r--doc/classRedmatrix_1_1Import_1_1Import-members.html131
-rw-r--r--doc/classRedmatrix_1_1Import_1_1Import.html446
l---------doc/context/es1
-rw-r--r--doc/de/develop.bb3
-rw-r--r--doc/develop.bb3
-rw-r--r--doc/developer_function_primer.bb4
-rw-r--r--doc/faq_developers.bb454
-rw-r--r--doc/hooks.html2
-rw-r--r--doc/html/index.php16
-rw-r--r--doc/roadmap.bb12
-rw-r--r--doc/roadmapv4.bb12
-rw-r--r--doc/sv/main.bb3
-rw-r--r--doc/to_do_code.bb7
-rw-r--r--doc/zot.md5
-rw-r--r--images/emoji/0023-20e3.pngbin0 -> 604 bytes
-rw-r--r--images/emoji/0023.pngbin0 -> 634 bytes
-rw-r--r--images/emoji/002a-20e3.pngbin0 -> 627 bytes
-rw-r--r--images/emoji/002a.pngbin0 -> 645 bytes
-rw-r--r--images/emoji/0030-20e3.pngbin0 -> 560 bytes
-rw-r--r--images/emoji/0030.pngbin0 -> 573 bytes
-rw-r--r--images/emoji/0031-20e3.pngbin0 -> 442 bytes
-rw-r--r--images/emoji/0031.pngbin0 -> 505 bytes
-rw-r--r--images/emoji/0032-20e3.pngbin0 -> 567 bytes
-rw-r--r--images/emoji/0032.pngbin0 -> 604 bytes
-rw-r--r--images/emoji/0033-20e3.pngbin0 -> 602 bytes
-rw-r--r--images/emoji/0033.pngbin0 -> 644 bytes
-rw-r--r--images/emoji/0034-20e3.pngbin0 -> 497 bytes
-rw-r--r--images/emoji/0034.pngbin0 -> 542 bytes
-rw-r--r--images/emoji/0035-20e3.pngbin0 -> 577 bytes
-rw-r--r--images/emoji/0035.pngbin0 -> 615 bytes
-rw-r--r--images/emoji/0036-20e3.pngbin0 -> 612 bytes
-rw-r--r--images/emoji/0036.pngbin0 -> 649 bytes
-rw-r--r--images/emoji/0037-20e3.pngbin0 -> 522 bytes
-rw-r--r--images/emoji/0037.pngbin0 -> 559 bytes
-rw-r--r--images/emoji/0038-20e3.pngbin0 -> 608 bytes
-rw-r--r--images/emoji/0038.pngbin0 -> 646 bytes
-rw-r--r--images/emoji/0039-20e3.pngbin0 -> 607 bytes
-rw-r--r--images/emoji/0039.pngbin0 -> 654 bytes
-rw-r--r--images/emoji/00a9.pngbin0 -> 530 bytes
-rw-r--r--images/emoji/00ae.pngbin0 -> 547 bytes
-rw-r--r--images/emoji/1f004.pngbin0 -> 951 bytes
-rw-r--r--images/emoji/1f0cf.pngbin0 -> 1091 bytes
-rw-r--r--images/emoji/1f170.pngbin0 -> 469 bytes
-rw-r--r--images/emoji/1f171.pngbin0 -> 391 bytes
-rw-r--r--images/emoji/1f17e.pngbin0 -> 425 bytes
-rw-r--r--images/emoji/1f17f.pngbin0 -> 385 bytes
-rw-r--r--images/emoji/1f18e.pngbin0 -> 505 bytes
-rw-r--r--images/emoji/1f191.pngbin0 -> 393 bytes
-rw-r--r--images/emoji/1f192.pngbin0 -> 396 bytes
-rw-r--r--images/emoji/1f193.pngbin0 -> 370 bytes
-rw-r--r--images/emoji/1f194.pngbin0 -> 348 bytes
-rw-r--r--images/emoji/1f195.pngbin0 -> 486 bytes
-rw-r--r--images/emoji/1f196.pngbin0 -> 445 bytes
-rw-r--r--images/emoji/1f197.pngbin0 -> 511 bytes
-rw-r--r--images/emoji/1f198.pngbin0 -> 604 bytes
-rw-r--r--images/emoji/1f199.pngbin0 -> 405 bytes
-rw-r--r--images/emoji/1f19a.pngbin0 -> 604 bytes
-rw-r--r--images/emoji/1f1e6-1f1e8.pngbin0 -> 1935 bytes
-rw-r--r--images/emoji/1f1e6-1f1e9.pngbin0 -> 1285 bytes
-rw-r--r--images/emoji/1f1e6-1f1ea.pngbin0 -> 544 bytes
-rw-r--r--images/emoji/1f1e6-1f1eb.pngbin0 -> 942 bytes
-rw-r--r--images/emoji/1f1e6-1f1ec.pngbin0 -> 913 bytes
-rw-r--r--images/emoji/1f1e6-1f1ee.pngbin0 -> 1056 bytes
-rw-r--r--images/emoji/1f1e6-1f1f1.pngbin0 -> 905 bytes
-rw-r--r--images/emoji/1f1e6-1f1f2.pngbin0 -> 514 bytes
-rw-r--r--images/emoji/1f1e6-1f1f4.pngbin0 -> 997 bytes
-rw-r--r--images/emoji/1f1e6-1f1f6.pngbin0 -> 657 bytes
-rw-r--r--images/emoji/1f1e6-1f1f7.pngbin0 -> 975 bytes
-rw-r--r--images/emoji/1f1e6-1f1f8.pngbin0 -> 1489 bytes
-rw-r--r--images/emoji/1f1e6-1f1f9.pngbin0 -> 430 bytes
-rw-r--r--images/emoji/1f1e6-1f1fa.pngbin0 -> 962 bytes
-rw-r--r--images/emoji/1f1e6-1f1fc.pngbin0 -> 709 bytes
-rw-r--r--images/emoji/1f1e6-1f1fd.pngbin0 -> 496 bytes
-rw-r--r--images/emoji/1f1e6-1f1ff.pngbin0 -> 709 bytes
-rw-r--r--images/emoji/1f1e7-1f1e6.pngbin0 -> 848 bytes
-rw-r--r--images/emoji/1f1e7-1f1e7.pngbin0 -> 789 bytes
-rw-r--r--images/emoji/1f1e7-1f1e9.pngbin0 -> 490 bytes
-rw-r--r--images/emoji/1f1e7-1f1ea.pngbin0 -> 444 bytes
-rw-r--r--images/emoji/1f1e7-1f1eb.pngbin0 -> 717 bytes
-rw-r--r--images/emoji/1f1e7-1f1ec.pngbin0 -> 513 bytes
-rw-r--r--images/emoji/1f1e7-1f1ed.pngbin0 -> 593 bytes
-rw-r--r--images/emoji/1f1e7-1f1ee.pngbin0 -> 795 bytes
-rw-r--r--images/emoji/1f1e7-1f1ef.pngbin0 -> 554 bytes
-rw-r--r--images/emoji/1f1e7-1f1f1.pngbin0 -> 1692 bytes
-rw-r--r--images/emoji/1f1e7-1f1f2.pngbin0 -> 1374 bytes
-rw-r--r--images/emoji/1f1e7-1f1f3.pngbin0 -> 1358 bytes
-rw-r--r--images/emoji/1f1e7-1f1f4.pngbin0 -> 1132 bytes
-rw-r--r--images/emoji/1f1e7-1f1f6.pngbin0 -> 1144 bytes
-rw-r--r--images/emoji/1f1e7-1f1f7.pngbin0 -> 819 bytes
-rw-r--r--images/emoji/1f1e7-1f1f8.pngbin0 -> 448 bytes
-rw-r--r--images/emoji/1f1e7-1f1f9.pngbin0 -> 1214 bytes
-rw-r--r--images/emoji/1f1e7-1f1fb.pngbin0 -> 495 bytes
-rw-r--r--images/emoji/1f1e7-1f1fc.pngbin0 -> 391 bytes
-rw-r--r--images/emoji/1f1e7-1f1fe.pngbin0 -> 1120 bytes
-rw-r--r--images/emoji/1f1e7-1f1ff.pngbin0 -> 1597 bytes
-rw-r--r--images/emoji/1f1e7.pngbin0 -> 572 bytes
-rw-r--r--images/emoji/1f1e8-1f1e6.pngbin0 -> 755 bytes
-rw-r--r--images/emoji/1f1e8-1f1e8.pngbin0 -> 851 bytes
-rw-r--r--images/emoji/1f1e8-1f1e9.pngbin0 -> 707 bytes
-rw-r--r--images/emoji/1f1e8-1f1eb.pngbin0 -> 673 bytes
-rw-r--r--images/emoji/1f1e8-1f1ec.pngbin0 -> 586 bytes
-rw-r--r--images/emoji/1f1e8-1f1ed.pngbin0 -> 390 bytes
-rw-r--r--images/emoji/1f1e8-1f1ee.pngbin0 -> 440 bytes
-rw-r--r--images/emoji/1f1e8-1f1f0.pngbin0 -> 1083 bytes
-rw-r--r--images/emoji/1f1e8-1f1f1.pngbin0 -> 748 bytes
-rw-r--r--images/emoji/1f1e8-1f1f2.pngbin0 -> 627 bytes
-rw-r--r--images/emoji/1f1e8-1f1f3.pngbin0 -> 676 bytes
-rw-r--r--images/emoji/1f1e8-1f1f4.pngbin0 -> 524 bytes
-rw-r--r--images/emoji/1f1e8-1f1f5.pngbin0 -> 443 bytes
-rw-r--r--images/emoji/1f1e8-1f1f7.pngbin0 -> 419 bytes
-rw-r--r--images/emoji/1f1e8-1f1fa.pngbin0 -> 586 bytes
-rw-r--r--images/emoji/1f1e8-1f1fb.pngbin0 -> 642 bytes
-rw-r--r--images/emoji/1f1e8-1f1fc.pngbin0 -> 665 bytes
-rw-r--r--images/emoji/1f1e8-1f1fd.pngbin0 -> 1142 bytes
-rw-r--r--images/emoji/1f1e8-1f1fe.pngbin0 -> 830 bytes
-rw-r--r--images/emoji/1f1e8-1f1ff.pngbin0 -> 600 bytes
-rw-r--r--images/emoji/1f1e8.pngbin0 -> 612 bytes
-rw-r--r--images/emoji/1f1e9-1f1ea.pngbin0 -> 502 bytes
-rw-r--r--images/emoji/1f1e9-1f1ec.pngbin0 -> 1918 bytes
-rw-r--r--images/emoji/1f1e9-1f1ef.pngbin0 -> 753 bytes
-rw-r--r--images/emoji/1f1e9-1f1f0.pngbin0 -> 450 bytes
-rw-r--r--images/emoji/1f1e9-1f1f2.pngbin0 -> 1077 bytes
-rw-r--r--images/emoji/1f1e9-1f1f4.pngbin0 -> 1135 bytes
-rw-r--r--images/emoji/1f1e9-1f1ff.pngbin0 -> 734 bytes
-rw-r--r--images/emoji/1f1e9.pngbin0 -> 561 bytes
-rw-r--r--images/emoji/1f1ea-1f1e6.pngbin0 -> 1338 bytes
-rw-r--r--images/emoji/1f1ea-1f1e8.pngbin0 -> 1431 bytes
-rw-r--r--images/emoji/1f1ea-1f1ea.pngbin0 -> 512 bytes
-rw-r--r--images/emoji/1f1ea-1f1ec.pngbin0 -> 818 bytes
-rw-r--r--images/emoji/1f1ea-1f1ed.pngbin0 -> 742 bytes
-rw-r--r--images/emoji/1f1ea-1f1f7.pngbin0 -> 1218 bytes
-rw-r--r--images/emoji/1f1ea-1f1f8.pngbin0 -> 1338 bytes
-rw-r--r--images/emoji/1f1ea-1f1f9.pngbin0 -> 947 bytes
-rw-r--r--images/emoji/1f1ea-1f1fa.pngbin0 -> 760 bytes
-rw-r--r--images/emoji/1f1ea.pngbin0 -> 443 bytes
-rw-r--r--images/emoji/1f1eb-1f1ee.pngbin0 -> 487 bytes
-rw-r--r--images/emoji/1f1eb-1f1ef.pngbin0 -> 1381 bytes
-rw-r--r--images/emoji/1f1eb-1f1f0.pngbin0 -> 1558 bytes
-rw-r--r--images/emoji/1f1eb-1f1f2.pngbin0 -> 554 bytes
-rw-r--r--images/emoji/1f1eb-1f1f4.pngbin0 -> 495 bytes
-rw-r--r--images/emoji/1f1eb-1f1f7.pngbin0 -> 443 bytes
-rw-r--r--images/emoji/1f1eb.pngbin0 -> 462 bytes
-rw-r--r--images/emoji/1f1ec-1f1e6.pngbin0 -> 512 bytes
-rw-r--r--images/emoji/1f1ec-1f1e7.pngbin0 -> 919 bytes
-rw-r--r--images/emoji/1f1ec-1f1e9.pngbin0 -> 1017 bytes
-rw-r--r--images/emoji/1f1ec-1f1ea.pngbin0 -> 583 bytes
-rw-r--r--images/emoji/1f1ec-1f1eb.pngbin0 -> 865 bytes
-rw-r--r--images/emoji/1f1ec-1f1ec.pngbin0 -> 521 bytes
-rw-r--r--images/emoji/1f1ec-1f1ed.pngbin0 -> 723 bytes
-rw-r--r--images/emoji/1f1ec-1f1ee.pngbin0 -> 1053 bytes
-rw-r--r--images/emoji/1f1ec-1f1f1.pngbin0 -> 700 bytes
-rw-r--r--images/emoji/1f1ec-1f1f2.pngbin0 -> 501 bytes
-rw-r--r--images/emoji/1f1ec-1f1f3.pngbin0 -> 434 bytes
-rw-r--r--images/emoji/1f1ec-1f1f5.pngbin0 -> 1587 bytes
-rw-r--r--images/emoji/1f1ec-1f1f6.pngbin0 -> 1132 bytes
-rw-r--r--images/emoji/1f1ec-1f1f7.pngbin0 -> 549 bytes
-rw-r--r--images/emoji/1f1ec-1f1f8.pngbin0 -> 2115 bytes
-rw-r--r--images/emoji/1f1ec-1f1f9.pngbin0 -> 1087 bytes
-rw-r--r--images/emoji/1f1ec-1f1fa.pngbin0 -> 1045 bytes
-rw-r--r--images/emoji/1f1ec-1f1fc.pngbin0 -> 705 bytes
-rw-r--r--images/emoji/1f1ec-1f1fe.pngbin0 -> 690 bytes
-rw-r--r--images/emoji/1f1ec.pngbin0 -> 644 bytes
-rw-r--r--images/emoji/1f1ed-1f1f0.pngbin0 -> 759 bytes
-rw-r--r--images/emoji/1f1ed-1f1f2.pngbin0 -> 1036 bytes
-rw-r--r--images/emoji/1f1ed-1f1f3.pngbin0 -> 513 bytes
-rw-r--r--images/emoji/1f1ed-1f1f7.pngbin0 -> 1411 bytes
-rw-r--r--images/emoji/1f1ed-1f1f9.pngbin0 -> 1205 bytes
-rw-r--r--images/emoji/1f1ed-1f1fa.pngbin0 -> 513 bytes
-rw-r--r--images/emoji/1f1ed.pngbin0 -> 434 bytes
-rw-r--r--images/emoji/1f1ee-1f1e8.pngbin0 -> 1330 bytes
-rw-r--r--images/emoji/1f1ee-1f1e9.pngbin0 -> 498 bytes
-rw-r--r--images/emoji/1f1ee-1f1ea.pngbin0 -> 478 bytes
-rw-r--r--images/emoji/1f1ee-1f1f1.pngbin0 -> 658 bytes
-rw-r--r--images/emoji/1f1ee-1f1f2.pngbin0 -> 976 bytes
-rw-r--r--images/emoji/1f1ee-1f1f3.pngbin0 -> 773 bytes
-rw-r--r--images/emoji/1f1ee-1f1f4.pngbin0 -> 1918 bytes
-rw-r--r--images/emoji/1f1ee-1f1f6.pngbin0 -> 811 bytes
-rw-r--r--images/emoji/1f1ee-1f1f7.pngbin0 -> 1036 bytes
-rw-r--r--images/emoji/1f1ee-1f1f8.pngbin0 -> 491 bytes
-rw-r--r--images/emoji/1f1ee-1f1f9.pngbin0 -> 472 bytes
-rw-r--r--images/emoji/1f1ee.pngbin0 -> 395 bytes
-rw-r--r--images/emoji/1f1ef-1f1ea.pngbin0 -> 956 bytes
-rw-r--r--images/emoji/1f1ef-1f1f2.pngbin0 -> 837 bytes
-rw-r--r--images/emoji/1f1ef-1f1f4.pngbin0 -> 740 bytes
-rw-r--r--images/emoji/1f1ef-1f1f5.pngbin0 -> 455 bytes
-rw-r--r--images/emoji/1f1ef.pngbin0 -> 527 bytes
-rw-r--r--images/emoji/1f1f0-1f1ea.pngbin0 -> 1160 bytes
-rw-r--r--images/emoji/1f1f0-1f1ec.pngbin0 -> 1081 bytes
-rw-r--r--images/emoji/1f1f0-1f1ed.pngbin0 -> 872 bytes
-rw-r--r--images/emoji/1f1f0-1f1ee.pngbin0 -> 1375 bytes
-rw-r--r--images/emoji/1f1f0-1f1f2.pngbin0 -> 783 bytes
-rw-r--r--images/emoji/1f1f0-1f1f3.pngbin0 -> 1316 bytes
-rw-r--r--images/emoji/1f1f0-1f1f5.pngbin0 -> 696 bytes
-rw-r--r--images/emoji/1f1f0-1f1f7.pngbin0 -> 968 bytes
-rw-r--r--images/emoji/1f1f0-1f1fc.pngbin0 -> 560 bytes
-rw-r--r--images/emoji/1f1f0-1f1fe.pngbin0 -> 1671 bytes
-rw-r--r--images/emoji/1f1f0-1f1ff.pngbin0 -> 1136 bytes
-rw-r--r--images/emoji/1f1f0.pngbin0 -> 582 bytes
-rw-r--r--images/emoji/1f1f1-1f1e6.pngbin0 -> 479 bytes
-rw-r--r--images/emoji/1f1f1-1f1e7.pngbin0 -> 740 bytes
-rw-r--r--images/emoji/1f1f1-1f1e8.pngbin0 -> 561 bytes
-rw-r--r--images/emoji/1f1f1-1f1ee.pngbin0 -> 946 bytes
-rw-r--r--images/emoji/1f1f1-1f1f0.pngbin0 -> 974 bytes
-rw-r--r--images/emoji/1f1f1-1f1f7.pngbin0 -> 772 bytes
-rw-r--r--images/emoji/1f1f1-1f1f8.pngbin0 -> 775 bytes
-rw-r--r--images/emoji/1f1f1-1f1f9.pngbin0 -> 510 bytes
-rw-r--r--images/emoji/1f1f1-1f1fa.pngbin0 -> 512 bytes
-rw-r--r--images/emoji/1f1f1-1f1fb.pngbin0 -> 388 bytes
-rw-r--r--images/emoji/1f1f1-1f1fe.pngbin0 -> 685 bytes
-rw-r--r--images/emoji/1f1f1.pngbin0 -> 436 bytes
-rw-r--r--images/emoji/1f1f2-1f1e6.pngbin0 -> 626 bytes
-rw-r--r--images/emoji/1f1f2-1f1e8.pngbin0 -> 528 bytes
-rw-r--r--images/emoji/1f1f2-1f1e9.pngbin0 -> 1170 bytes
-rw-r--r--images/emoji/1f1f2-1f1ea.pngbin0 -> 1074 bytes
-rw-r--r--images/emoji/1f1f2-1f1eb.pngbin0 -> 443 bytes
-rw-r--r--images/emoji/1f1f2-1f1ec.pngbin0 -> 556 bytes
-rw-r--r--images/emoji/1f1f2-1f1ed.pngbin0 -> 1138 bytes
-rw-r--r--images/emoji/1f1f2-1f1f0.pngbin0 -> 1023 bytes
-rw-r--r--images/emoji/1f1f2-1f1f1.pngbin0 -> 440 bytes
-rw-r--r--images/emoji/1f1f2-1f1f2.pngbin0 -> 937 bytes
-rw-r--r--images/emoji/1f1f2-1f1f3.pngbin0 -> 698 bytes
-rw-r--r--images/emoji/1f1f2-1f1f4.pngbin0 -> 792 bytes
-rw-r--r--images/emoji/1f1f2-1f1f5.pngbin0 -> 1797 bytes
-rw-r--r--images/emoji/1f1f2-1f1f6.pngbin0 -> 780 bytes
-rw-r--r--images/emoji/1f1f2-1f1f7.pngbin0 -> 657 bytes
-rw-r--r--images/emoji/1f1f2-1f1f8.pngbin0 -> 1477 bytes
-rw-r--r--images/emoji/1f1f2-1f1f9.pngbin0 -> 799 bytes
-rw-r--r--images/emoji/1f1f2-1f1fa.pngbin0 -> 544 bytes
-rw-r--r--images/emoji/1f1f2-1f1fb.pngbin0 -> 598 bytes
-rw-r--r--images/emoji/1f1f2-1f1fc.pngbin0 -> 825 bytes
-rw-r--r--images/emoji/1f1f2-1f1fd.pngbin0 -> 951 bytes
-rw-r--r--images/emoji/1f1f2-1f1fe.pngbin0 -> 775 bytes
-rw-r--r--images/emoji/1f1f2-1f1ff.pngbin0 -> 1159 bytes
-rw-r--r--images/emoji/1f1f2.pngbin0 -> 666 bytes
-rw-r--r--images/emoji/1f1f3-1f1e6.pngbin0 -> 1249 bytes
-rw-r--r--images/emoji/1f1f3-1f1e8.pngbin0 -> 1151 bytes
-rw-r--r--images/emoji/1f1f3-1f1ea.pngbin0 -> 593 bytes
-rw-r--r--images/emoji/1f1f3-1f1eb.pngbin0 -> 877 bytes
-rw-r--r--images/emoji/1f1f3-1f1ec.pngbin0 -> 438 bytes
-rw-r--r--images/emoji/1f1f3-1f1ee.pngbin0 -> 823 bytes
-rw-r--r--images/emoji/1f1f3-1f1f1.pngbin0 -> 499 bytes
-rw-r--r--images/emoji/1f1f3-1f1f4.pngbin0 -> 484 bytes
-rw-r--r--images/emoji/1f1f3-1f1f5.pngbin0 -> 802 bytes
-rw-r--r--images/emoji/1f1f3-1f1f7.pngbin0 -> 529 bytes
-rw-r--r--images/emoji/1f1f3-1f1fa.pngbin0 -> 1128 bytes
-rw-r--r--images/emoji/1f1f3-1f1ff.pngbin0 -> 1099 bytes
-rw-r--r--images/emoji/1f1f3.pngbin0 -> 579 bytes
-rw-r--r--images/emoji/1f1f4-1f1f2.pngbin0 -> 754 bytes
-rw-r--r--images/emoji/1f1f4.pngbin0 -> 607 bytes
-rw-r--r--images/emoji/1f1f5-1f1e6.pngbin0 -> 830 bytes
-rw-r--r--images/emoji/1f1f5-1f1ea.pngbin0 -> 439 bytes
-rw-r--r--images/emoji/1f1f5-1f1eb.pngbin0 -> 1091 bytes
-rw-r--r--images/emoji/1f1f5-1f1ec.pngbin0 -> 1076 bytes
-rw-r--r--images/emoji/1f1f5-1f1ed.pngbin0 -> 867 bytes
-rw-r--r--images/emoji/1f1f5-1f1f0.pngbin0 -> 753 bytes
-rw-r--r--images/emoji/1f1f5-1f1f1.pngbin0 -> 522 bytes
-rw-r--r--images/emoji/1f1f5-1f1f2.pngbin0 -> 2314 bytes
-rw-r--r--images/emoji/1f1f5-1f1f3.pngbin0 -> 1896 bytes
-rw-r--r--images/emoji/1f1f5-1f1f7.pngbin0 -> 605 bytes
-rw-r--r--images/emoji/1f1f5-1f1f8.pngbin0 -> 574 bytes
-rw-r--r--images/emoji/1f1f5-1f1f9.pngbin0 -> 1055 bytes
-rw-r--r--images/emoji/1f1f5-1f1fc.pngbin0 -> 475 bytes
-rw-r--r--images/emoji/1f1f5-1f1fe.pngbin0 -> 1085 bytes
-rw-r--r--images/emoji/1f1f5.pngbin0 -> 541 bytes
-rw-r--r--images/emoji/1f1f6-1f1e6.pngbin0 -> 657 bytes
-rw-r--r--images/emoji/1f1f6.pngbin0 -> 659 bytes
-rw-r--r--images/emoji/1f1f7-1f1ea.pngbin0 -> 837 bytes
-rw-r--r--images/emoji/1f1f7-1f1f4.pngbin0 -> 441 bytes
-rw-r--r--images/emoji/1f1f7-1f1f8.pngbin0 -> 1237 bytes
-rw-r--r--images/emoji/1f1f7-1f1fa.pngbin0 -> 496 bytes
-rw-r--r--images/emoji/1f1f7-1f1fc.pngbin0 -> 940 bytes
-rw-r--r--images/emoji/1f1f7.pngbin0 -> 580 bytes
-rw-r--r--images/emoji/1f1f8-1f1e6.pngbin0 -> 781 bytes
-rw-r--r--images/emoji/1f1f8-1f1e7.pngbin0 -> 1102 bytes
-rw-r--r--images/emoji/1f1f8-1f1e8.pngbin0 -> 1073 bytes
-rw-r--r--images/emoji/1f1f8-1f1e9.pngbin0 -> 578 bytes
-rw-r--r--images/emoji/1f1f8-1f1ea.pngbin0 -> 455 bytes
-rw-r--r--images/emoji/1f1f8-1f1ec.pngbin0 -> 730 bytes
-rw-r--r--images/emoji/1f1f8-1f1ed.pngbin0 -> 1369 bytes
-rw-r--r--images/emoji/1f1f8-1f1ee.pngbin0 -> 1030 bytes
-rw-r--r--images/emoji/1f1f8-1f1ef.pngbin0 -> 495 bytes
-rw-r--r--images/emoji/1f1f8-1f1f0.pngbin0 -> 780 bytes
-rw-r--r--images/emoji/1f1f8-1f1f1.pngbin0 -> 510 bytes
-rw-r--r--images/emoji/1f1f8-1f1f2.pngbin0 -> 2001 bytes
-rw-r--r--images/emoji/1f1f8-1f1f3.pngbin0 -> 621 bytes
-rw-r--r--images/emoji/1f1f8-1f1f4.pngbin0 -> 609 bytes
-rw-r--r--images/emoji/1f1f8-1f1f7.pngbin0 -> 650 bytes
-rw-r--r--images/emoji/1f1f8-1f1f8.pngbin0 -> 722 bytes
-rw-r--r--images/emoji/1f1f8-1f1f9.pngbin0 -> 562 bytes
-rw-r--r--images/emoji/1f1f8-1f1fb.pngbin0 -> 1125 bytes
-rw-r--r--images/emoji/1f1f8-1f1fd.pngbin0 -> 1195 bytes
-rw-r--r--images/emoji/1f1f8-1f1fe.pngbin0 -> 696 bytes
-rw-r--r--images/emoji/1f1f8-1f1ff.pngbin0 -> 1102 bytes
-rw-r--r--images/emoji/1f1f8.pngbin0 -> 653 bytes
-rw-r--r--images/emoji/1f1f9-1f1e6.pngbin0 -> 1907 bytes
-rw-r--r--images/emoji/1f1f9-1f1e8.pngbin0 -> 1538 bytes
-rw-r--r--images/emoji/1f1f9-1f1e9.pngbin0 -> 443 bytes
-rw-r--r--images/emoji/1f1f9-1f1eb.pngbin0 -> 857 bytes
-rw-r--r--images/emoji/1f1f9-1f1ec.pngbin0 -> 790 bytes
-rw-r--r--images/emoji/1f1f9-1f1ed.pngbin0 -> 421 bytes
-rw-r--r--images/emoji/1f1f9-1f1ef.pngbin0 -> 906 bytes
-rw-r--r--images/emoji/1f1f9-1f1f0.pngbin0 -> 835 bytes
-rw-r--r--images/emoji/1f1f9-1f1f1.pngbin0 -> 849 bytes
-rw-r--r--images/emoji/1f1f9-1f1f2.pngbin0 -> 1178 bytes
-rw-r--r--images/emoji/1f1f9-1f1f3.pngbin0 -> 625 bytes
-rw-r--r--images/emoji/1f1f9-1f1f4.pngbin0 -> 553 bytes
-rw-r--r--images/emoji/1f1f9-1f1f7.pngbin0 -> 576 bytes
-rw-r--r--images/emoji/1f1f9-1f1f9.pngbin0 -> 604 bytes
-rw-r--r--images/emoji/1f1f9-1f1fb.pngbin0 -> 1120 bytes
-rw-r--r--images/emoji/1f1f9-1f1fc.pngbin0 -> 761 bytes
-rw-r--r--images/emoji/1f1f9-1f1ff.pngbin0 -> 1061 bytes
-rw-r--r--images/emoji/1f1f9.pngbin0 -> 453 bytes
-rw-r--r--images/emoji/1f1fa-1f1e6.pngbin0 -> 528 bytes
-rw-r--r--images/emoji/1f1fa-1f1ec.pngbin0 -> 887 bytes
-rw-r--r--images/emoji/1f1fa-1f1f2.pngbin0 -> 776 bytes
-rw-r--r--images/emoji/1f1fa-1f1f8.pngbin0 -> 776 bytes
-rw-r--r--images/emoji/1f1fa-1f1fe.pngbin0 -> 966 bytes
-rw-r--r--images/emoji/1f1fa-1f1ff.pngbin0 -> 750 bytes
-rw-r--r--images/emoji/1f1fa.pngbin0 -> 544 bytes
-rw-r--r--images/emoji/1f1fb-1f1e6.pngbin0 -> 1335 bytes
-rw-r--r--images/emoji/1f1fb-1f1e8.pngbin0 -> 897 bytes
-rw-r--r--images/emoji/1f1fb-1f1ea.pngbin0 -> 748 bytes
-rw-r--r--images/emoji/1f1fb-1f1ec.pngbin0 -> 1789 bytes
-rw-r--r--images/emoji/1f1fb-1f1ee.pngbin0 -> 1380 bytes
-rw-r--r--images/emoji/1f1fb-1f1f3.pngbin0 -> 583 bytes
-rw-r--r--images/emoji/1f1fb-1f1fa.pngbin0 -> 844 bytes
-rw-r--r--images/emoji/1f1fb.pngbin0 -> 632 bytes
-rw-r--r--images/emoji/1f1fc-1f1eb.pngbin0 -> 443 bytes
-rw-r--r--images/emoji/1f1fc-1f1f8.pngbin0 -> 634 bytes
-rw-r--r--images/emoji/1f1fc.pngbin0 -> 737 bytes
-rw-r--r--images/emoji/1f1fd-1f1f0.pngbin0 -> 722 bytes
-rw-r--r--images/emoji/1f1fd.pngbin0 -> 635 bytes
-rw-r--r--images/emoji/1f1fe-1f1ea.pngbin0 -> 507 bytes
-rw-r--r--images/emoji/1f1fe-1f1f9.pngbin0 -> 1627 bytes
-rw-r--r--images/emoji/1f1fe.pngbin0 -> 590 bytes
-rw-r--r--images/emoji/1f1ff-1f1e6.pngbin0 -> 676 bytes
-rw-r--r--images/emoji/1f1ff-1f1f2.pngbin0 -> 881 bytes
-rw-r--r--images/emoji/1f1ff-1f1fc.pngbin0 -> 993 bytes
-rw-r--r--images/emoji/1f1ff.pngbin0 -> 571 bytes
-rw-r--r--images/emoji/1f201.pngbin0 -> 266 bytes
-rw-r--r--images/emoji/1f202.pngbin0 -> 420 bytes
-rw-r--r--images/emoji/1f21a.pngbin0 -> 534 bytes
-rw-r--r--images/emoji/1f22f.pngbin0 -> 504 bytes
-rw-r--r--images/emoji/1f232.pngbin0 -> 584 bytes
-rw-r--r--images/emoji/1f233.pngbin0 -> 456 bytes
-rw-r--r--images/emoji/1f234.pngbin0 -> 484 bytes
-rw-r--r--images/emoji/1f235.pngbin0 -> 564 bytes
-rw-r--r--images/emoji/1f236.pngbin0 -> 434 bytes
-rw-r--r--images/emoji/1f237.pngbin0 -> 409 bytes
-rw-r--r--images/emoji/1f238.pngbin0 -> 306 bytes
-rw-r--r--images/emoji/1f239.pngbin0 -> 411 bytes
-rw-r--r--images/emoji/1f23a.pngbin0 -> 460 bytes
-rw-r--r--images/emoji/1f250.pngbin0 -> 716 bytes
-rw-r--r--images/emoji/1f251.pngbin0 -> 491 bytes
-rw-r--r--images/emoji/1f300.pngbin0 -> 797 bytes
-rw-r--r--images/emoji/1f301.pngbin0 -> 1069 bytes
-rw-r--r--images/emoji/1f302.pngbin0 -> 1002 bytes
-rw-r--r--images/emoji/1f303.pngbin0 -> 835 bytes
-rw-r--r--images/emoji/1f304.pngbin0 -> 1578 bytes
-rw-r--r--images/emoji/1f305.pngbin0 -> 812 bytes
-rw-r--r--images/emoji/1f306.pngbin0 -> 431 bytes
-rw-r--r--images/emoji/1f307.pngbin0 -> 997 bytes
-rw-r--r--images/emoji/1f308.pngbin0 -> 1299 bytes
-rw-r--r--images/emoji/1f309.pngbin0 -> 637 bytes
-rw-r--r--images/emoji/1f30a.pngbin0 -> 1018 bytes
-rw-r--r--images/emoji/1f30b.pngbin0 -> 1259 bytes
-rw-r--r--images/emoji/1f30c.pngbin0 -> 622 bytes
-rw-r--r--images/emoji/1f30d.pngbin0 -> 978 bytes
-rw-r--r--images/emoji/1f30e.pngbin0 -> 1031 bytes
-rw-r--r--images/emoji/1f30f.pngbin0 -> 966 bytes
-rw-r--r--images/emoji/1f310.pngbin0 -> 796 bytes
-rw-r--r--images/emoji/1f311.pngbin0 -> 829 bytes
-rw-r--r--images/emoji/1f312.pngbin0 -> 1200 bytes
-rw-r--r--images/emoji/1f313.pngbin0 -> 1152 bytes
-rw-r--r--images/emoji/1f314.pngbin0 -> 1229 bytes
-rw-r--r--images/emoji/1f315.pngbin0 -> 841 bytes
-rw-r--r--images/emoji/1f316.pngbin0 -> 1211 bytes
-rw-r--r--images/emoji/1f317.pngbin0 -> 1180 bytes
-rw-r--r--images/emoji/1f318.pngbin0 -> 1213 bytes
-rw-r--r--images/emoji/1f319.pngbin0 -> 446 bytes
-rw-r--r--images/emoji/1f31a.pngbin0 -> 975 bytes
-rw-r--r--images/emoji/1f31b.pngbin0 -> 1068 bytes
-rw-r--r--images/emoji/1f31c.pngbin0 -> 1030 bytes
-rw-r--r--images/emoji/1f31d.pngbin0 -> 1186 bytes
-rw-r--r--images/emoji/1f31e.pngbin0 -> 741 bytes
-rw-r--r--images/emoji/1f31f.pngbin0 -> 732 bytes
-rw-r--r--images/emoji/1f320.pngbin0 -> 1048 bytes
-rw-r--r--images/emoji/1f321.pngbin0 -> 759 bytes
-rw-r--r--images/emoji/1f324.pngbin0 -> 989 bytes
-rw-r--r--images/emoji/1f325.pngbin0 -> 968 bytes
-rw-r--r--images/emoji/1f326.pngbin0 -> 1161 bytes
-rw-r--r--images/emoji/1f327.pngbin0 -> 876 bytes
-rw-r--r--images/emoji/1f328.pngbin0 -> 823 bytes
-rw-r--r--images/emoji/1f329.pngbin0 -> 767 bytes
-rw-r--r--images/emoji/1f32a.pngbin0 -> 1519 bytes
-rw-r--r--images/emoji/1f32b.pngbin0 -> 713 bytes
-rw-r--r--images/emoji/1f32c.pngbin0 -> 1827 bytes
-rw-r--r--images/emoji/1f32d.pngbin0 -> 1770 bytes
-rw-r--r--images/emoji/1f32e.pngbin0 -> 3045 bytes
-rw-r--r--images/emoji/1f32f.pngbin0 -> 2938 bytes
-rw-r--r--images/emoji/1f330.pngbin0 -> 1339 bytes
-rw-r--r--images/emoji/1f331.pngbin0 -> 749 bytes
-rw-r--r--images/emoji/1f332.pngbin0 -> 719 bytes
-rw-r--r--images/emoji/1f333.pngbin0 -> 1270 bytes
-rw-r--r--images/emoji/1f334.pngbin0 -> 1452 bytes
-rw-r--r--images/emoji/1f335.pngbin0 -> 628 bytes
-rw-r--r--images/emoji/1f336.pngbin0 -> 677 bytes
-rw-r--r--images/emoji/1f337.pngbin0 -> 1065 bytes
-rw-r--r--images/emoji/1f338.pngbin0 -> 1129 bytes
-rw-r--r--images/emoji/1f339.pngbin0 -> 1182 bytes
-rw-r--r--images/emoji/1f33a.pngbin0 -> 1815 bytes
-rw-r--r--images/emoji/1f33b.pngbin0 -> 1915 bytes
-rw-r--r--images/emoji/1f33c.pngbin0 -> 867 bytes
-rw-r--r--images/emoji/1f33d.pngbin0 -> 1547 bytes
-rw-r--r--images/emoji/1f33e.pngbin0 -> 1422 bytes
-rw-r--r--images/emoji/1f33f.pngbin0 -> 886 bytes
-rw-r--r--images/emoji/1f340.pngbin0 -> 1156 bytes
-rw-r--r--images/emoji/1f341.pngbin0 -> 1117 bytes
-rw-r--r--images/emoji/1f342.pngbin0 -> 951 bytes
-rw-r--r--images/emoji/1f343.pngbin0 -> 993 bytes
-rw-r--r--images/emoji/1f344.pngbin0 -> 1024 bytes
-rw-r--r--images/emoji/1f345.pngbin0 -> 1055 bytes
-rw-r--r--images/emoji/1f346.pngbin0 -> 773 bytes
-rw-r--r--images/emoji/1f347.pngbin0 -> 1552 bytes
-rw-r--r--images/emoji/1f348.pngbin0 -> 2005 bytes
-rw-r--r--images/emoji/1f349.pngbin0 -> 1275 bytes
-rw-r--r--images/emoji/1f34a.pngbin0 -> 1184 bytes
-rw-r--r--images/emoji/1f34b.pngbin0 -> 1033 bytes
-rw-r--r--images/emoji/1f34c.pngbin0 -> 1157 bytes
-rw-r--r--images/emoji/1f34d.pngbin0 -> 1643 bytes
-rw-r--r--images/emoji/1f34e.pngbin0 -> 655 bytes
-rw-r--r--images/emoji/1f34f.pngbin0 -> 656 bytes
-rw-r--r--images/emoji/1f350.pngbin0 -> 747 bytes
-rw-r--r--images/emoji/1f351.pngbin0 -> 1189 bytes
-rw-r--r--images/emoji/1f352.pngbin0 -> 1211 bytes
-rw-r--r--images/emoji/1f353.pngbin0 -> 1206 bytes
-rw-r--r--images/emoji/1f354.pngbin0 -> 1974 bytes
-rw-r--r--images/emoji/1f355.pngbin0 -> 2009 bytes
-rw-r--r--images/emoji/1f356.pngbin0 -> 1465 bytes
-rw-r--r--images/emoji/1f357.pngbin0 -> 925 bytes
-rw-r--r--images/emoji/1f358.pngbin0 -> 1443 bytes
-rw-r--r--images/emoji/1f359.pngbin0 -> 1091 bytes
-rw-r--r--images/emoji/1f35a.pngbin0 -> 1195 bytes
-rw-r--r--images/emoji/1f35b.pngbin0 -> 1754 bytes
-rw-r--r--images/emoji/1f35c.pngbin0 -> 1992 bytes
-rw-r--r--images/emoji/1f35d.pngbin0 -> 1797 bytes
-rw-r--r--images/emoji/1f35e.pngbin0 -> 1419 bytes
-rw-r--r--images/emoji/1f35f.pngbin0 -> 1874 bytes
-rw-r--r--images/emoji/1f360.pngbin0 -> 951 bytes
-rw-r--r--images/emoji/1f361.pngbin0 -> 802 bytes
-rw-r--r--images/emoji/1f362.pngbin0 -> 794 bytes
-rw-r--r--images/emoji/1f363.pngbin0 -> 2101 bytes
-rw-r--r--images/emoji/1f364.pngbin0 -> 1241 bytes
-rw-r--r--images/emoji/1f365.pngbin0 -> 1245 bytes
-rw-r--r--images/emoji/1f366.pngbin0 -> 1502 bytes
-rw-r--r--images/emoji/1f367.pngbin0 -> 997 bytes
-rw-r--r--images/emoji/1f368.pngbin0 -> 1780 bytes
-rw-r--r--images/emoji/1f369.pngbin0 -> 1322 bytes
-rw-r--r--images/emoji/1f36a.pngbin0 -> 1351 bytes
-rw-r--r--images/emoji/1f36b.pngbin0 -> 771 bytes
-rw-r--r--images/emoji/1f36c.pngbin0 -> 1054 bytes
-rw-r--r--images/emoji/1f36d.pngbin0 -> 2164 bytes
-rw-r--r--images/emoji/1f36e.pngbin0 -> 1273 bytes
-rw-r--r--images/emoji/1f36f.pngbin0 -> 1217 bytes
-rw-r--r--images/emoji/1f370.pngbin0 -> 2266 bytes
-rw-r--r--images/emoji/1f371.pngbin0 -> 1128 bytes
-rw-r--r--images/emoji/1f372.pngbin0 -> 1960 bytes
-rw-r--r--images/emoji/1f373.pngbin0 -> 764 bytes
-rw-r--r--images/emoji/1f374.pngbin0 -> 668 bytes
-rw-r--r--images/emoji/1f375.pngbin0 -> 1297 bytes
-rw-r--r--images/emoji/1f376.pngbin0 -> 826 bytes
-rw-r--r--images/emoji/1f377.pngbin0 -> 655 bytes
-rw-r--r--images/emoji/1f378.pngbin0 -> 1027 bytes
-rw-r--r--images/emoji/1f379.pngbin0 -> 1428 bytes
-rw-r--r--images/emoji/1f37a.pngbin0 -> 1340 bytes
-rw-r--r--images/emoji/1f37b.pngbin0 -> 2100 bytes
-rw-r--r--images/emoji/1f37c.pngbin0 -> 818 bytes
-rw-r--r--images/emoji/1f37d.pngbin0 -> 976 bytes
-rw-r--r--images/emoji/1f37e.pngbin0 -> 1205 bytes
-rw-r--r--images/emoji/1f37f.pngbin0 -> 1844 bytes
-rw-r--r--images/emoji/1f380.pngbin0 -> 968 bytes
-rw-r--r--images/emoji/1f381.pngbin0 -> 1966 bytes
-rw-r--r--images/emoji/1f382.pngbin0 -> 2219 bytes
-rw-r--r--images/emoji/1f383.pngbin0 -> 2289 bytes
-rw-r--r--images/emoji/1f384.pngbin0 -> 1542 bytes
-rw-r--r--images/emoji/1f385-1f3fb.pngbin0 -> 1588 bytes
-rw-r--r--images/emoji/1f385-1f3fc.pngbin0 -> 1579 bytes
-rw-r--r--images/emoji/1f385-1f3fd.pngbin0 -> 1579 bytes
-rw-r--r--images/emoji/1f385-1f3fe.pngbin0 -> 1579 bytes
-rw-r--r--images/emoji/1f385-1f3ff.pngbin0 -> 1579 bytes
-rw-r--r--images/emoji/1f385.pngbin0 -> 1588 bytes
-rw-r--r--images/emoji/1f386.pngbin0 -> 1365 bytes
-rw-r--r--images/emoji/1f387.pngbin0 -> 910 bytes
-rw-r--r--images/emoji/1f388.pngbin0 -> 501 bytes
-rw-r--r--images/emoji/1f389.pngbin0 -> 1778 bytes
-rw-r--r--images/emoji/1f38a.pngbin0 -> 1703 bytes
-rw-r--r--images/emoji/1f38b.pngbin0 -> 1479 bytes
-rw-r--r--images/emoji/1f38c.pngbin0 -> 1239 bytes
-rw-r--r--images/emoji/1f38d.pngbin0 -> 1947 bytes
-rw-r--r--images/emoji/1f38e.pngbin0 -> 2249 bytes
-rw-r--r--images/emoji/1f38f.pngbin0 -> 1725 bytes
-rw-r--r--images/emoji/1f390.pngbin0 -> 1046 bytes
-rw-r--r--images/emoji/1f391.pngbin0 -> 1350 bytes
-rw-r--r--images/emoji/1f392.pngbin0 -> 1490 bytes
-rw-r--r--images/emoji/1f393.pngbin0 -> 710 bytes
-rw-r--r--images/emoji/1f396.pngbin0 -> 949 bytes
-rw-r--r--images/emoji/1f397.pngbin0 -> 921 bytes
-rw-r--r--images/emoji/1f399.pngbin0 -> 839 bytes
-rw-r--r--images/emoji/1f39a.pngbin0 -> 454 bytes
-rw-r--r--images/emoji/1f39b.pngbin0 -> 1104 bytes
-rw-r--r--images/emoji/1f39e.pngbin0 -> 560 bytes
-rw-r--r--images/emoji/1f39f.pngbin0 -> 1750 bytes
-rw-r--r--images/emoji/1f3a0.pngbin0 -> 1739 bytes
-rw-r--r--images/emoji/1f3a1.pngbin0 -> 2185 bytes
-rw-r--r--images/emoji/1f3a2.pngbin0 -> 1724 bytes
-rw-r--r--images/emoji/1f3a3.pngbin0 -> 1442 bytes
-rw-r--r--images/emoji/1f3a4.pngbin0 -> 1165 bytes
-rw-r--r--images/emoji/1f3a5.pngbin0 -> 576 bytes
-rw-r--r--images/emoji/1f3a6.pngbin0 -> 585 bytes
-rw-r--r--images/emoji/1f3a7.pngbin0 -> 1202 bytes
-rw-r--r--images/emoji/1f3a8.pngbin0 -> 1455 bytes
-rw-r--r--images/emoji/1f3a9.pngbin0 -> 845 bytes
-rw-r--r--images/emoji/1f3aa.pngbin0 -> 1369 bytes
-rw-r--r--images/emoji/1f3ab.pngbin0 -> 763 bytes
-rw-r--r--images/emoji/1f3ac.pngbin0 -> 1535 bytes
-rw-r--r--images/emoji/1f3ad.pngbin0 -> 1971 bytes
-rw-r--r--images/emoji/1f3ae.pngbin0 -> 765 bytes
-rw-r--r--images/emoji/1f3af.pngbin0 -> 1374 bytes
-rw-r--r--images/emoji/1f3b0.pngbin0 -> 1648 bytes
-rw-r--r--images/emoji/1f3b1.pngbin0 -> 810 bytes
-rw-r--r--images/emoji/1f3b2.pngbin0 -> 1136 bytes
-rw-r--r--images/emoji/1f3b3.pngbin0 -> 1426 bytes
-rw-r--r--images/emoji/1f3b4.pngbin0 -> 449 bytes
-rw-r--r--images/emoji/1f3b5.pngbin0 -> 419 bytes
-rw-r--r--images/emoji/1f3b6.pngbin0 -> 501 bytes
-rw-r--r--images/emoji/1f3b7.pngbin0 -> 1442 bytes
-rw-r--r--images/emoji/1f3b8.pngbin0 -> 1056 bytes
-rw-r--r--images/emoji/1f3b9.pngbin0 -> 1695 bytes
-rw-r--r--images/emoji/1f3ba.pngbin0 -> 1286 bytes
-rw-r--r--images/emoji/1f3bb.pngbin0 -> 1156 bytes
-rw-r--r--images/emoji/1f3bc.pngbin0 -> 1289 bytes
-rw-r--r--images/emoji/1f3bd.pngbin0 -> 784 bytes
-rw-r--r--images/emoji/1f3be.pngbin0 -> 1561 bytes
-rw-r--r--images/emoji/1f3bf.pngbin0 -> 1762 bytes
-rw-r--r--images/emoji/1f3c0.pngbin0 -> 1546 bytes
-rw-r--r--images/emoji/1f3c1.pngbin0 -> 787 bytes
-rw-r--r--images/emoji/1f3c2.pngbin0 -> 2020 bytes
-rw-r--r--images/emoji/1f3c3-1f3fb.pngbin0 -> 1163 bytes
-rw-r--r--images/emoji/1f3c3-1f3fc.pngbin0 -> 1162 bytes
-rw-r--r--images/emoji/1f3c3-1f3fd.pngbin0 -> 1151 bytes
-rw-r--r--images/emoji/1f3c3-1f3fe.pngbin0 -> 1156 bytes
-rw-r--r--images/emoji/1f3c3-1f3ff.pngbin0 -> 1145 bytes
-rw-r--r--images/emoji/1f3c3.pngbin0 -> 1161 bytes
-rw-r--r--images/emoji/1f3c4-1f3fb.pngbin0 -> 1781 bytes
-rw-r--r--images/emoji/1f3c4-1f3fc.pngbin0 -> 1769 bytes
-rw-r--r--images/emoji/1f3c4-1f3fd.pngbin0 -> 1777 bytes
-rw-r--r--images/emoji/1f3c4-1f3fe.pngbin0 -> 1784 bytes
-rw-r--r--images/emoji/1f3c4-1f3ff.pngbin0 -> 1782 bytes
-rw-r--r--images/emoji/1f3c4.pngbin0 -> 1777 bytes
-rw-r--r--images/emoji/1f3c5.pngbin0 -> 1702 bytes
-rw-r--r--images/emoji/1f3c6.pngbin0 -> 863 bytes
-rw-r--r--images/emoji/1f3c7-1f3fb.pngbin0 -> 2099 bytes
-rw-r--r--images/emoji/1f3c7-1f3fc.pngbin0 -> 2103 bytes
-rw-r--r--images/emoji/1f3c7-1f3fd.pngbin0 -> 2090 bytes
-rw-r--r--images/emoji/1f3c7-1f3fe.pngbin0 -> 2090 bytes
-rw-r--r--images/emoji/1f3c7-1f3ff.pngbin0 -> 2085 bytes
-rw-r--r--images/emoji/1f3c7.pngbin0 -> 2096 bytes
-rw-r--r--images/emoji/1f3c8.pngbin0 -> 958 bytes
-rw-r--r--images/emoji/1f3c9.pngbin0 -> 1620 bytes
-rw-r--r--images/emoji/1f3ca-1f3fb.pngbin0 -> 1184 bytes
-rw-r--r--images/emoji/1f3ca-1f3fc.pngbin0 -> 1184 bytes
-rw-r--r--images/emoji/1f3ca-1f3fd.pngbin0 -> 1184 bytes
-rw-r--r--images/emoji/1f3ca-1f3fe.pngbin0 -> 1184 bytes
-rw-r--r--images/emoji/1f3ca-1f3ff.pngbin0 -> 1184 bytes
-rw-r--r--images/emoji/1f3ca.pngbin0 -> 1184 bytes
-rw-r--r--images/emoji/1f3cb-1f3fb.pngbin0 -> 1346 bytes
-rw-r--r--images/emoji/1f3cb-1f3fc.pngbin0 -> 1347 bytes
-rw-r--r--images/emoji/1f3cb-1f3fd.pngbin0 -> 1339 bytes
-rw-r--r--images/emoji/1f3cb-1f3fe.pngbin0 -> 1343 bytes
-rw-r--r--images/emoji/1f3cb-1f3ff.pngbin0 -> 1337 bytes
-rw-r--r--images/emoji/1f3cb.pngbin0 -> 1356 bytes
-rw-r--r--images/emoji/1f3cc.pngbin0 -> 1189 bytes
-rw-r--r--images/emoji/1f3cd.pngbin0 -> 2081 bytes
-rw-r--r--images/emoji/1f3ce.pngbin0 -> 2140 bytes
-rw-r--r--images/emoji/1f3cf.pngbin0 -> 1060 bytes
-rw-r--r--images/emoji/1f3d0.pngbin0 -> 1204 bytes
-rw-r--r--images/emoji/1f3d1.pngbin0 -> 947 bytes
-rw-r--r--images/emoji/1f3d2.pngbin0 -> 1010 bytes
-rw-r--r--images/emoji/1f3d3.pngbin0 -> 823 bytes
-rw-r--r--images/emoji/1f3d4.pngbin0 -> 1194 bytes
-rw-r--r--images/emoji/1f3d5.pngbin0 -> 1515 bytes
-rw-r--r--images/emoji/1f3d6.pngbin0 -> 942 bytes
-rw-r--r--images/emoji/1f3d7.pngbin0 -> 668 bytes
-rw-r--r--images/emoji/1f3d8.pngbin0 -> 981 bytes
-rw-r--r--images/emoji/1f3d9.pngbin0 -> 599 bytes
-rw-r--r--images/emoji/1f3da.pngbin0 -> 1606 bytes
-rw-r--r--images/emoji/1f3db.pngbin0 -> 1006 bytes
-rw-r--r--images/emoji/1f3dc.pngbin0 -> 1443 bytes
-rw-r--r--images/emoji/1f3dd.pngbin0 -> 1273 bytes
-rw-r--r--images/emoji/1f3de.pngbin0 -> 929 bytes
-rw-r--r--images/emoji/1f3df.pngbin0 -> 1516 bytes
-rw-r--r--images/emoji/1f3e0.pngbin0 -> 863 bytes
-rw-r--r--images/emoji/1f3e1.pngbin0 -> 1614 bytes
-rw-r--r--images/emoji/1f3e2.pngbin0 -> 524 bytes
-rw-r--r--images/emoji/1f3e3.pngbin0 -> 676 bytes
-rw-r--r--images/emoji/1f3e4.pngbin0 -> 551 bytes
-rw-r--r--images/emoji/1f3e5.pngbin0 -> 530 bytes
-rw-r--r--images/emoji/1f3e6.pngbin0 -> 1358 bytes
-rw-r--r--images/emoji/1f3e7.pngbin0 -> 1397 bytes
-rw-r--r--images/emoji/1f3e8.pngbin0 -> 1322 bytes
-rw-r--r--images/emoji/1f3e9.pngbin0 -> 372 bytes
-rw-r--r--images/emoji/1f3ea.pngbin0 -> 528 bytes
-rw-r--r--images/emoji/1f3eb.pngbin0 -> 1234 bytes
-rw-r--r--images/emoji/1f3ec.pngbin0 -> 673 bytes
-rw-r--r--images/emoji/1f3ed.pngbin0 -> 936 bytes
-rw-r--r--images/emoji/1f3ee.pngbin0 -> 1228 bytes
-rw-r--r--images/emoji/1f3ef.pngbin0 -> 1404 bytes
-rw-r--r--images/emoji/1f3f0.pngbin0 -> 965 bytes
-rw-r--r--images/emoji/1f3f3.pngbin0 -> 699 bytes
-rw-r--r--images/emoji/1f3f4.pngbin0 -> 702 bytes
-rw-r--r--images/emoji/1f3f5.pngbin0 -> 1023 bytes
-rw-r--r--images/emoji/1f3f7.pngbin0 -> 669 bytes
-rw-r--r--images/emoji/1f3f8.pngbin0 -> 1255 bytes
-rw-r--r--images/emoji/1f3f9.pngbin0 -> 1402 bytes
-rw-r--r--images/emoji/1f3fa.pngbin0 -> 1044 bytes
-rw-r--r--images/emoji/1f400.pngbin0 -> 1193 bytes
-rw-r--r--images/emoji/1f401.pngbin0 -> 1324 bytes
-rw-r--r--images/emoji/1f402.pngbin0 -> 1436 bytes
-rw-r--r--images/emoji/1f403.pngbin0 -> 1536 bytes
-rw-r--r--images/emoji/1f404.pngbin0 -> 1810 bytes
-rw-r--r--images/emoji/1f405.pngbin0 -> 2623 bytes
-rw-r--r--images/emoji/1f406.pngbin0 -> 2222 bytes
-rw-r--r--images/emoji/1f407.pngbin0 -> 1805 bytes
-rw-r--r--images/emoji/1f408.pngbin0 -> 1781 bytes
-rw-r--r--images/emoji/1f409.pngbin0 -> 1575 bytes
-rw-r--r--images/emoji/1f40a.pngbin0 -> 2408 bytes
-rw-r--r--images/emoji/1f40b.pngbin0 -> 1196 bytes
-rw-r--r--images/emoji/1f40c.pngbin0 -> 1731 bytes
-rw-r--r--images/emoji/1f40d.pngbin0 -> 1579 bytes
-rw-r--r--images/emoji/1f40e.pngbin0 -> 1404 bytes
-rw-r--r--images/emoji/1f40f.pngbin0 -> 1951 bytes
-rw-r--r--images/emoji/1f410.pngbin0 -> 981 bytes
-rw-r--r--images/emoji/1f411.pngbin0 -> 1374 bytes
-rw-r--r--images/emoji/1f412.pngbin0 -> 1349 bytes
-rw-r--r--images/emoji/1f413.pngbin0 -> 1333 bytes
-rw-r--r--images/emoji/1f414.pngbin0 -> 1267 bytes
-rw-r--r--images/emoji/1f415.pngbin0 -> 2085 bytes
-rw-r--r--images/emoji/1f416.pngbin0 -> 1548 bytes
-rw-r--r--images/emoji/1f417.pngbin0 -> 1368 bytes
-rw-r--r--images/emoji/1f418.pngbin0 -> 1293 bytes
-rw-r--r--images/emoji/1f419.pngbin0 -> 1188 bytes
-rw-r--r--images/emoji/1f41a.pngbin0 -> 1497 bytes
-rw-r--r--images/emoji/1f41b.pngbin0 -> 1604 bytes
-rw-r--r--images/emoji/1f41c.pngbin0 -> 1412 bytes
-rw-r--r--images/emoji/1f41d.pngbin0 -> 1383 bytes
-rw-r--r--images/emoji/1f41e.pngbin0 -> 1288 bytes
-rw-r--r--images/emoji/1f41f.pngbin0 -> 1080 bytes
-rw-r--r--images/emoji/1f420.pngbin0 -> 1676 bytes
-rw-r--r--images/emoji/1f421.pngbin0 -> 1621 bytes
-rw-r--r--images/emoji/1f422.pngbin0 -> 1516 bytes
-rw-r--r--images/emoji/1f423.pngbin0 -> 1599 bytes
-rw-r--r--images/emoji/1f424.pngbin0 -> 1181 bytes
-rw-r--r--images/emoji/1f425.pngbin0 -> 1174 bytes
-rw-r--r--images/emoji/1f426.pngbin0 -> 1068 bytes
-rw-r--r--images/emoji/1f427.pngbin0 -> 1034 bytes
-rw-r--r--images/emoji/1f428.pngbin0 -> 1430 bytes
-rw-r--r--images/emoji/1f429.pngbin0 -> 1531 bytes
-rw-r--r--images/emoji/1f42a.pngbin0 -> 1515 bytes
-rw-r--r--images/emoji/1f42b.pngbin0 -> 1190 bytes
-rw-r--r--images/emoji/1f42c.pngbin0 -> 1700 bytes
-rw-r--r--images/emoji/1f42d.pngbin0 -> 1246 bytes
-rw-r--r--images/emoji/1f42e.pngbin0 -> 1641 bytes
-rw-r--r--images/emoji/1f42f.pngbin0 -> 2104 bytes
-rw-r--r--images/emoji/1f430.pngbin0 -> 1661 bytes
-rw-r--r--images/emoji/1f431.pngbin0 -> 1358 bytes
-rw-r--r--images/emoji/1f432.pngbin0 -> 1769 bytes
-rw-r--r--images/emoji/1f433.pngbin0 -> 1578 bytes
-rw-r--r--images/emoji/1f434.pngbin0 -> 1695 bytes
-rw-r--r--images/emoji/1f435.pngbin0 -> 1027 bytes
-rw-r--r--images/emoji/1f436.pngbin0 -> 1680 bytes
-rw-r--r--images/emoji/1f437.pngbin0 -> 1138 bytes
-rw-r--r--images/emoji/1f438.pngbin0 -> 897 bytes
-rw-r--r--images/emoji/1f439.pngbin0 -> 1280 bytes
-rw-r--r--images/emoji/1f43a.pngbin0 -> 1528 bytes
-rw-r--r--images/emoji/1f43b.pngbin0 -> 1023 bytes
-rw-r--r--images/emoji/1f43c.pngbin0 -> 1478 bytes
-rw-r--r--images/emoji/1f43d.pngbin0 -> 820 bytes
-rw-r--r--images/emoji/1f43e.pngbin0 -> 603 bytes
-rw-r--r--images/emoji/1f43f.pngbin0 -> 1459 bytes
-rw-r--r--images/emoji/1f440.pngbin0 -> 791 bytes
-rw-r--r--images/emoji/1f441-1f5e8.pngbin0 -> 698 bytes
-rw-r--r--images/emoji/1f441.pngbin0 -> 664 bytes
-rw-r--r--images/emoji/1f442-1f3fb.pngbin0 -> 860 bytes
-rw-r--r--images/emoji/1f442-1f3fc.pngbin0 -> 860 bytes
-rw-r--r--images/emoji/1f442-1f3fd.pngbin0 -> 860 bytes
-rw-r--r--images/emoji/1f442-1f3fe.pngbin0 -> 860 bytes
-rw-r--r--images/emoji/1f442-1f3ff.pngbin0 -> 860 bytes
-rw-r--r--images/emoji/1f442.pngbin0 -> 860 bytes
-rw-r--r--images/emoji/1f443-1f3fb.pngbin0 -> 703 bytes
-rw-r--r--images/emoji/1f443-1f3fc.pngbin0 -> 703 bytes
-rw-r--r--images/emoji/1f443-1f3fd.pngbin0 -> 703 bytes
-rw-r--r--images/emoji/1f443-1f3fe.pngbin0 -> 703 bytes
-rw-r--r--images/emoji/1f443-1f3ff.pngbin0 -> 703 bytes
-rw-r--r--images/emoji/1f443.pngbin0 -> 703 bytes
-rw-r--r--images/emoji/1f444.pngbin0 -> 599 bytes
-rw-r--r--images/emoji/1f445.pngbin0 -> 599 bytes
-rw-r--r--images/emoji/1f446-1f3fb.pngbin0 -> 822 bytes
-rw-r--r--images/emoji/1f446-1f3fc.pngbin0 -> 822 bytes
-rw-r--r--images/emoji/1f446-1f3fd.pngbin0 -> 871 bytes
-rw-r--r--images/emoji/1f446-1f3fe.pngbin0 -> 822 bytes
-rw-r--r--images/emoji/1f446-1f3ff.pngbin0 -> 822 bytes
-rw-r--r--images/emoji/1f446.pngbin0 -> 822 bytes
-rw-r--r--images/emoji/1f447-1f3fb.pngbin0 -> 856 bytes
-rw-r--r--images/emoji/1f447-1f3fc.pngbin0 -> 856 bytes
-rw-r--r--images/emoji/1f447-1f3fd.pngbin0 -> 858 bytes
-rw-r--r--images/emoji/1f447-1f3fe.pngbin0 -> 856 bytes
-rw-r--r--images/emoji/1f447-1f3ff.pngbin0 -> 856 bytes
-rw-r--r--images/emoji/1f447.pngbin0 -> 853 bytes
-rw-r--r--images/emoji/1f448-1f3fb.pngbin0 -> 832 bytes
-rw-r--r--images/emoji/1f448-1f3fc.pngbin0 -> 830 bytes
-rw-r--r--images/emoji/1f448-1f3fd.pngbin0 -> 830 bytes
-rw-r--r--images/emoji/1f448-1f3fe.pngbin0 -> 830 bytes
-rw-r--r--images/emoji/1f448-1f3ff.pngbin0 -> 832 bytes
-rw-r--r--images/emoji/1f448.pngbin0 -> 825 bytes
-rw-r--r--images/emoji/1f449-1f3fb.pngbin0 -> 805 bytes
-rw-r--r--images/emoji/1f449-1f3fc.pngbin0 -> 805 bytes
-rw-r--r--images/emoji/1f449-1f3fd.pngbin0 -> 805 bytes
-rw-r--r--images/emoji/1f449-1f3fe.pngbin0 -> 805 bytes
-rw-r--r--images/emoji/1f449-1f3ff.pngbin0 -> 805 bytes
-rw-r--r--images/emoji/1f449.pngbin0 -> 805 bytes
-rw-r--r--images/emoji/1f44a-1f3fb.pngbin0 -> 838 bytes
-rw-r--r--images/emoji/1f44a-1f3fc.pngbin0 -> 838 bytes
-rw-r--r--images/emoji/1f44a-1f3fd.pngbin0 -> 838 bytes
-rw-r--r--images/emoji/1f44a-1f3fe.pngbin0 -> 838 bytes
-rw-r--r--images/emoji/1f44a-1f3ff.pngbin0 -> 838 bytes
-rw-r--r--images/emoji/1f44a.pngbin0 -> 838 bytes
-rw-r--r--images/emoji/1f44b-1f3fb.pngbin0 -> 1311 bytes
-rw-r--r--images/emoji/1f44b-1f3fc.pngbin0 -> 1311 bytes
-rw-r--r--images/emoji/1f44b-1f3fd.pngbin0 -> 1295 bytes
-rw-r--r--images/emoji/1f44b-1f3fe.pngbin0 -> 1311 bytes
-rw-r--r--images/emoji/1f44b-1f3ff.pngbin0 -> 1311 bytes
-rw-r--r--images/emoji/1f44b.pngbin0 -> 1311 bytes
-rw-r--r--images/emoji/1f44c-1f3fb.pngbin0 -> 979 bytes
-rw-r--r--images/emoji/1f44c-1f3fc.pngbin0 -> 979 bytes
-rw-r--r--images/emoji/1f44c-1f3fd.pngbin0 -> 979 bytes
-rw-r--r--images/emoji/1f44c-1f3fe.pngbin0 -> 979 bytes
-rw-r--r--images/emoji/1f44c-1f3ff.pngbin0 -> 979 bytes
-rw-r--r--images/emoji/1f44c.pngbin0 -> 979 bytes
-rw-r--r--images/emoji/1f44d-1f3fb.pngbin0 -> 814 bytes
-rw-r--r--images/emoji/1f44d-1f3fc.pngbin0 -> 814 bytes
-rw-r--r--images/emoji/1f44d-1f3fd.pngbin0 -> 814 bytes
-rw-r--r--images/emoji/1f44d-1f3fe.pngbin0 -> 814 bytes
-rw-r--r--images/emoji/1f44d-1f3ff.pngbin0 -> 814 bytes
-rw-r--r--images/emoji/1f44d.pngbin0 -> 814 bytes
-rw-r--r--images/emoji/1f44e-1f3fb.pngbin0 -> 815 bytes
-rw-r--r--images/emoji/1f44e-1f3fc.pngbin0 -> 815 bytes
-rw-r--r--images/emoji/1f44e-1f3fd.pngbin0 -> 815 bytes
-rw-r--r--images/emoji/1f44e-1f3fe.pngbin0 -> 815 bytes
-rw-r--r--images/emoji/1f44e-1f3ff.pngbin0 -> 815 bytes
-rw-r--r--images/emoji/1f44e.pngbin0 -> 815 bytes
-rw-r--r--images/emoji/1f44f-1f3fb.pngbin0 -> 1460 bytes
-rw-r--r--images/emoji/1f44f-1f3fc.pngbin0 -> 1460 bytes
-rw-r--r--images/emoji/1f44f-1f3fd.pngbin0 -> 1460 bytes
-rw-r--r--images/emoji/1f44f-1f3fe.pngbin0 -> 1459 bytes
-rw-r--r--images/emoji/1f44f-1f3ff.pngbin0 -> 1445 bytes
-rw-r--r--images/emoji/1f44f.pngbin0 -> 1456 bytes
-rw-r--r--images/emoji/1f450-1f3fb.pngbin0 -> 1053 bytes
-rw-r--r--images/emoji/1f450-1f3fc.pngbin0 -> 1053 bytes
-rw-r--r--images/emoji/1f450-1f3fd.pngbin0 -> 1053 bytes
-rw-r--r--images/emoji/1f450-1f3fe.pngbin0 -> 1053 bytes
-rw-r--r--images/emoji/1f450-1f3ff.pngbin0 -> 1053 bytes
-rw-r--r--images/emoji/1f450.pngbin0 -> 1053 bytes
-rw-r--r--images/emoji/1f451.pngbin0 -> 1534 bytes
-rw-r--r--images/emoji/1f452.pngbin0 -> 1553 bytes
-rw-r--r--images/emoji/1f453.pngbin0 -> 577 bytes
-rw-r--r--images/emoji/1f454.pngbin0 -> 995 bytes
-rw-r--r--images/emoji/1f455.pngbin0 -> 670 bytes
-rw-r--r--images/emoji/1f456.pngbin0 -> 1158 bytes
-rw-r--r--images/emoji/1f457.pngbin0 -> 1001 bytes
-rw-r--r--images/emoji/1f458.pngbin0 -> 1539 bytes
-rw-r--r--images/emoji/1f459.pngbin0 -> 613 bytes
-rw-r--r--images/emoji/1f45a.pngbin0 -> 1042 bytes
-rw-r--r--images/emoji/1f45b.pngbin0 -> 1558 bytes
-rw-r--r--images/emoji/1f45c.pngbin0 -> 1285 bytes
-rw-r--r--images/emoji/1f45d.pngbin0 -> 1259 bytes
-rw-r--r--images/emoji/1f45e.pngbin0 -> 1652 bytes
-rw-r--r--images/emoji/1f45f.pngbin0 -> 1595 bytes
-rw-r--r--images/emoji/1f460.pngbin0 -> 1008 bytes
-rw-r--r--images/emoji/1f461.pngbin0 -> 1180 bytes
-rw-r--r--images/emoji/1f462.pngbin0 -> 662 bytes
-rw-r--r--images/emoji/1f463.pngbin0 -> 621 bytes
-rw-r--r--images/emoji/1f464.pngbin0 -> 426 bytes
-rw-r--r--images/emoji/1f465.pngbin0 -> 526 bytes
-rw-r--r--images/emoji/1f466-1f3fb.pngbin0 -> 876 bytes
-rw-r--r--images/emoji/1f466-1f3fc.pngbin0 -> 876 bytes
-rw-r--r--images/emoji/1f466-1f3fd.pngbin0 -> 876 bytes
-rw-r--r--images/emoji/1f466-1f3fe.pngbin0 -> 870 bytes
-rw-r--r--images/emoji/1f466-1f3ff.pngbin0 -> 873 bytes
-rw-r--r--images/emoji/1f466.pngbin0 -> 881 bytes
-rw-r--r--images/emoji/1f467-1f3fb.pngbin0 -> 1260 bytes
-rw-r--r--images/emoji/1f467-1f3fc.pngbin0 -> 1255 bytes
-rw-r--r--images/emoji/1f467-1f3fd.pngbin0 -> 1255 bytes
-rw-r--r--images/emoji/1f467-1f3fe.pngbin0 -> 1241 bytes
-rw-r--r--images/emoji/1f467-1f3ff.pngbin0 -> 1245 bytes
-rw-r--r--images/emoji/1f467.pngbin0 -> 1262 bytes
-rw-r--r--images/emoji/1f468-1f3fb.pngbin0 -> 1069 bytes
-rw-r--r--images/emoji/1f468-1f3fc.pngbin0 -> 1069 bytes
-rw-r--r--images/emoji/1f468-1f3fd.pngbin0 -> 1069 bytes
-rw-r--r--images/emoji/1f468-1f3fe.pngbin0 -> 1069 bytes
-rw-r--r--images/emoji/1f468-1f3ff.pngbin0 -> 1087 bytes
-rw-r--r--images/emoji/1f468-1f468-1f466-1f466.pngbin0 -> 1354 bytes
-rw-r--r--images/emoji/1f468-1f468-1f466.pngbin0 -> 1206 bytes
-rw-r--r--images/emoji/1f468-1f468-1f467-1f466.pngbin0 -> 1626 bytes
-rw-r--r--images/emoji/1f468-1f468-1f467-1f467.pngbin0 -> 1448 bytes
-rw-r--r--images/emoji/1f468-1f468-1f467.pngbin0 -> 1362 bytes
-rw-r--r--images/emoji/1f468-1f469-1f466-1f466.pngbin0 -> 1641 bytes
-rw-r--r--images/emoji/1f468-1f469-1f467-1f466.pngbin0 -> 1838 bytes
-rw-r--r--images/emoji/1f468-1f469-1f467-1f467.pngbin0 -> 1739 bytes
-rw-r--r--images/emoji/1f468-1f469-1f467.pngbin0 -> 1555 bytes
-rw-r--r--images/emoji/1f468-2764-1f468.pngbin0 -> 1091 bytes
-rw-r--r--images/emoji/1f468-2764-1f48b-1f468.pngbin0 -> 1269 bytes
-rw-r--r--images/emoji/1f468.pngbin0 -> 1092 bytes
-rw-r--r--images/emoji/1f469-1f3fb.pngbin0 -> 1212 bytes
-rw-r--r--images/emoji/1f469-1f3fc.pngbin0 -> 1212 bytes
-rw-r--r--images/emoji/1f469-1f3fd.pngbin0 -> 1206 bytes
-rw-r--r--images/emoji/1f469-1f3fe.pngbin0 -> 1197 bytes
-rw-r--r--images/emoji/1f469-1f3ff.pngbin0 -> 1203 bytes
-rw-r--r--images/emoji/1f469-1f469-1f466-1f466.pngbin0 -> 1297 bytes
-rw-r--r--images/emoji/1f469-1f469-1f466.pngbin0 -> 1155 bytes
-rw-r--r--images/emoji/1f469-1f469-1f467-1f466.pngbin0 -> 1550 bytes
-rw-r--r--images/emoji/1f469-1f469-1f467-1f467.pngbin0 -> 1374 bytes
-rw-r--r--images/emoji/1f469-1f469-1f467.pngbin0 -> 1290 bytes
-rw-r--r--images/emoji/1f469-2764-1f469.pngbin0 -> 1034 bytes
-rw-r--r--images/emoji/1f469-2764-1f48b-1f469.pngbin0 -> 1150 bytes
-rw-r--r--images/emoji/1f469.pngbin0 -> 1212 bytes
-rw-r--r--images/emoji/1f46a.pngbin0 -> 1437 bytes
-rw-r--r--images/emoji/1f46b.pngbin0 -> 1538 bytes
-rw-r--r--images/emoji/1f46c.pngbin0 -> 1347 bytes
-rw-r--r--images/emoji/1f46d.pngbin0 -> 1547 bytes
-rw-r--r--images/emoji/1f46e-1f3fb.pngbin0 -> 1421 bytes
-rw-r--r--images/emoji/1f46e-1f3fc.pngbin0 -> 1424 bytes
-rw-r--r--images/emoji/1f46e-1f3fd.pngbin0 -> 1422 bytes
-rw-r--r--images/emoji/1f46e-1f3fe.pngbin0 -> 1422 bytes
-rw-r--r--images/emoji/1f46e-1f3ff.pngbin0 -> 1434 bytes
-rw-r--r--images/emoji/1f46e.pngbin0 -> 1442 bytes
-rw-r--r--images/emoji/1f46f.pngbin0 -> 1876 bytes
-rw-r--r--images/emoji/1f470-1f3fb.pngbin0 -> 2464 bytes
-rw-r--r--images/emoji/1f470-1f3fc.pngbin0 -> 2457 bytes
-rw-r--r--images/emoji/1f470-1f3fd.pngbin0 -> 2463 bytes
-rw-r--r--images/emoji/1f470-1f3fe.pngbin0 -> 2463 bytes
-rw-r--r--images/emoji/1f470-1f3ff.pngbin0 -> 2462 bytes
-rw-r--r--images/emoji/1f470.pngbin0 -> 2452 bytes
-rw-r--r--images/emoji/1f471-1f3fb.pngbin0 -> 1181 bytes
-rw-r--r--images/emoji/1f471-1f3fc.pngbin0 -> 1181 bytes
-rw-r--r--images/emoji/1f471-1f3fd.pngbin0 -> 1181 bytes
-rw-r--r--images/emoji/1f471-1f3fe.pngbin0 -> 1189 bytes
-rw-r--r--images/emoji/1f471-1f3ff.pngbin0 -> 1214 bytes
-rw-r--r--images/emoji/1f471.pngbin0 -> 1205 bytes
-rw-r--r--images/emoji/1f472-1f3fb.pngbin0 -> 1328 bytes
-rw-r--r--images/emoji/1f472-1f3fc.pngbin0 -> 1332 bytes
-rw-r--r--images/emoji/1f472-1f3fd.pngbin0 -> 1329 bytes
-rw-r--r--images/emoji/1f472-1f3fe.pngbin0 -> 1325 bytes
-rw-r--r--images/emoji/1f472-1f3ff.pngbin0 -> 1337 bytes
-rw-r--r--images/emoji/1f472.pngbin0 -> 1339 bytes
-rw-r--r--images/emoji/1f473-1f3fb.pngbin0 -> 1584 bytes
-rw-r--r--images/emoji/1f473-1f3fc.pngbin0 -> 1591 bytes
-rw-r--r--images/emoji/1f473-1f3fd.pngbin0 -> 1584 bytes
-rw-r--r--images/emoji/1f473-1f3fe.pngbin0 -> 1583 bytes
-rw-r--r--images/emoji/1f473-1f3ff.pngbin0 -> 1607 bytes
-rw-r--r--images/emoji/1f473.pngbin0 -> 1619 bytes
-rw-r--r--images/emoji/1f474-1f3fb.pngbin0 -> 1256 bytes
-rw-r--r--images/emoji/1f474-1f3fc.pngbin0 -> 1256 bytes
-rw-r--r--images/emoji/1f474-1f3fd.pngbin0 -> 1256 bytes
-rw-r--r--images/emoji/1f474-1f3fe.pngbin0 -> 1254 bytes
-rw-r--r--images/emoji/1f474-1f3ff.pngbin0 -> 1254 bytes
-rw-r--r--images/emoji/1f474.pngbin0 -> 1256 bytes
-rw-r--r--images/emoji/1f475-1f3fb.pngbin0 -> 1562 bytes
-rw-r--r--images/emoji/1f475-1f3fc.pngbin0 -> 1564 bytes
-rw-r--r--images/emoji/1f475-1f3fd.pngbin0 -> 1555 bytes
-rw-r--r--images/emoji/1f475-1f3fe.pngbin0 -> 1563 bytes
-rw-r--r--images/emoji/1f475-1f3ff.pngbin0 -> 1544 bytes
-rw-r--r--images/emoji/1f475.pngbin0 -> 1472 bytes
-rw-r--r--images/emoji/1f476-1f3fb.pngbin0 -> 1394 bytes
-rw-r--r--images/emoji/1f476-1f3fc.pngbin0 -> 1394 bytes
-rw-r--r--images/emoji/1f476-1f3fd.pngbin0 -> 1405 bytes
-rw-r--r--images/emoji/1f476-1f3fe.pngbin0 -> 1414 bytes
-rw-r--r--images/emoji/1f476-1f3ff.pngbin0 -> 1408 bytes
-rw-r--r--images/emoji/1f476.pngbin0 -> 1383 bytes
-rw-r--r--images/emoji/1f477-1f3fb.pngbin0 -> 1102 bytes
-rw-r--r--images/emoji/1f477-1f3fc.pngbin0 -> 1102 bytes
-rw-r--r--images/emoji/1f477-1f3fd.pngbin0 -> 1102 bytes
-rw-r--r--images/emoji/1f477-1f3fe.pngbin0 -> 1095 bytes
-rw-r--r--images/emoji/1f477-1f3ff.pngbin0 -> 1119 bytes
-rw-r--r--images/emoji/1f477.pngbin0 -> 1126 bytes
-rw-r--r--images/emoji/1f478-1f3fb.pngbin0 -> 1814 bytes
-rw-r--r--images/emoji/1f478-1f3fc.pngbin0 -> 1808 bytes
-rw-r--r--images/emoji/1f478-1f3fd.pngbin0 -> 1808 bytes
-rw-r--r--images/emoji/1f478-1f3fe.pngbin0 -> 1813 bytes
-rw-r--r--images/emoji/1f478-1f3ff.pngbin0 -> 1812 bytes
-rw-r--r--images/emoji/1f478.pngbin0 -> 1816 bytes
-rw-r--r--images/emoji/1f479.pngbin0 -> 1864 bytes
-rw-r--r--images/emoji/1f47a.pngbin0 -> 1563 bytes
-rw-r--r--images/emoji/1f47b.pngbin0 -> 1468 bytes
-rw-r--r--images/emoji/1f47c-1f3fb.pngbin0 -> 2088 bytes
-rw-r--r--images/emoji/1f47c-1f3fc.pngbin0 -> 2075 bytes
-rw-r--r--images/emoji/1f47c-1f3fd.pngbin0 -> 2078 bytes
-rw-r--r--images/emoji/1f47c-1f3fe.pngbin0 -> 2076 bytes
-rw-r--r--images/emoji/1f47c-1f3ff.pngbin0 -> 2078 bytes
-rw-r--r--images/emoji/1f47c.pngbin0 -> 2077 bytes
-rw-r--r--images/emoji/1f47d.pngbin0 -> 839 bytes
-rw-r--r--images/emoji/1f47e.pngbin0 -> 1325 bytes
-rw-r--r--images/emoji/1f47f.pngbin0 -> 1990 bytes
-rw-r--r--images/emoji/1f480.pngbin0 -> 628 bytes
-rw-r--r--images/emoji/1f481-1f3fb.pngbin0 -> 1597 bytes
-rw-r--r--images/emoji/1f481-1f3fc.pngbin0 -> 1591 bytes
-rw-r--r--images/emoji/1f481-1f3fd.pngbin0 -> 1580 bytes
-rw-r--r--images/emoji/1f481-1f3fe.pngbin0 -> 1578 bytes
-rw-r--r--images/emoji/1f481-1f3ff.pngbin0 -> 1588 bytes
-rw-r--r--images/emoji/1f481.pngbin0 -> 1585 bytes
-rw-r--r--images/emoji/1f482-1f3fb.pngbin0 -> 1122 bytes
-rw-r--r--images/emoji/1f482-1f3fc.pngbin0 -> 1164 bytes
-rw-r--r--images/emoji/1f482-1f3fd.pngbin0 -> 1164 bytes
-rw-r--r--images/emoji/1f482-1f3fe.pngbin0 -> 1157 bytes
-rw-r--r--images/emoji/1f482-1f3ff.pngbin0 -> 1167 bytes
-rw-r--r--images/emoji/1f482.pngbin0 -> 1140 bytes
-rw-r--r--images/emoji/1f483-1f3fb.pngbin0 -> 1421 bytes
-rw-r--r--images/emoji/1f483-1f3fc.pngbin0 -> 1423 bytes
-rw-r--r--images/emoji/1f483-1f3fd.pngbin0 -> 1429 bytes
-rw-r--r--images/emoji/1f483-1f3fe.pngbin0 -> 1428 bytes
-rw-r--r--images/emoji/1f483-1f3ff.pngbin0 -> 1418 bytes
-rw-r--r--images/emoji/1f483.pngbin0 -> 1406 bytes
-rw-r--r--images/emoji/1f484.pngbin0 -> 549 bytes
-rw-r--r--images/emoji/1f485-1f3fb.pngbin0 -> 1717 bytes
-rw-r--r--images/emoji/1f485-1f3fc.pngbin0 -> 1716 bytes
-rw-r--r--images/emoji/1f485-1f3fd.pngbin0 -> 1733 bytes
-rw-r--r--images/emoji/1f485-1f3fe.pngbin0 -> 1730 bytes
-rw-r--r--images/emoji/1f485-1f3ff.pngbin0 -> 1719 bytes
-rw-r--r--images/emoji/1f485.pngbin0 -> 1639 bytes
-rw-r--r--images/emoji/1f486-1f3fb.pngbin0 -> 1585 bytes
-rw-r--r--images/emoji/1f486-1f3fc.pngbin0 -> 1565 bytes
-rw-r--r--images/emoji/1f486-1f3fd.pngbin0 -> 1554 bytes
-rw-r--r--images/emoji/1f486-1f3fe.pngbin0 -> 1550 bytes
-rw-r--r--images/emoji/1f486-1f3ff.pngbin0 -> 1557 bytes
-rw-r--r--images/emoji/1f486.pngbin0 -> 1572 bytes
-rw-r--r--images/emoji/1f487-1f3fb.pngbin0 -> 1945 bytes
-rw-r--r--images/emoji/1f487-1f3fc.pngbin0 -> 1936 bytes
-rw-r--r--images/emoji/1f487-1f3fd.pngbin0 -> 1923 bytes
-rw-r--r--images/emoji/1f487-1f3fe.pngbin0 -> 1904 bytes
-rw-r--r--images/emoji/1f487-1f3ff.pngbin0 -> 1920 bytes
-rw-r--r--images/emoji/1f487.pngbin0 -> 1935 bytes
-rw-r--r--images/emoji/1f488.pngbin0 -> 820 bytes
-rw-r--r--images/emoji/1f489.pngbin0 -> 737 bytes
-rw-r--r--images/emoji/1f48a.pngbin0 -> 442 bytes
-rw-r--r--images/emoji/1f48b.pngbin0 -> 842 bytes
-rw-r--r--images/emoji/1f48c.pngbin0 -> 923 bytes
-rw-r--r--images/emoji/1f48d.pngbin0 -> 1113 bytes
-rw-r--r--images/emoji/1f48e.pngbin0 -> 715 bytes
-rw-r--r--images/emoji/1f48f.pngbin0 -> 1380 bytes
-rw-r--r--images/emoji/1f490.pngbin0 -> 1662 bytes
-rw-r--r--images/emoji/1f491.pngbin0 -> 1285 bytes
-rw-r--r--images/emoji/1f492.pngbin0 -> 1260 bytes
-rw-r--r--images/emoji/1f493.pngbin0 -> 699 bytes
-rw-r--r--images/emoji/1f494.pngbin0 -> 556 bytes
-rw-r--r--images/emoji/1f495.pngbin0 -> 493 bytes
-rw-r--r--images/emoji/1f496.pngbin0 -> 821 bytes
-rw-r--r--images/emoji/1f497.pngbin0 -> 675 bytes
-rw-r--r--images/emoji/1f498.pngbin0 -> 846 bytes
-rw-r--r--images/emoji/1f499.pngbin0 -> 435 bytes
-rw-r--r--images/emoji/1f49a.pngbin0 -> 435 bytes
-rw-r--r--images/emoji/1f49b.pngbin0 -> 435 bytes
-rw-r--r--images/emoji/1f49c.pngbin0 -> 435 bytes
-rw-r--r--images/emoji/1f49d.pngbin0 -> 1141 bytes
-rw-r--r--images/emoji/1f49e.pngbin0 -> 920 bytes
-rw-r--r--images/emoji/1f49f.pngbin0 -> 557 bytes
-rw-r--r--images/emoji/1f4a0.pngbin0 -> 693 bytes
-rw-r--r--images/emoji/1f4a1.pngbin0 -> 805 bytes
-rw-r--r--images/emoji/1f4a2.pngbin0 -> 594 bytes
-rw-r--r--images/emoji/1f4a3.pngbin0 -> 702 bytes
-rw-r--r--images/emoji/1f4a4.pngbin0 -> 540 bytes
-rw-r--r--images/emoji/1f4a5.pngbin0 -> 1110 bytes
-rw-r--r--images/emoji/1f4a6.pngbin0 -> 549 bytes
-rw-r--r--images/emoji/1f4a7.pngbin0 -> 411 bytes
-rw-r--r--images/emoji/1f4a8.pngbin0 -> 840 bytes
-rw-r--r--images/emoji/1f4a9.pngbin0 -> 1273 bytes
-rw-r--r--images/emoji/1f4aa-1f3fb.pngbin0 -> 1012 bytes
-rw-r--r--images/emoji/1f4aa-1f3fc.pngbin0 -> 1012 bytes
-rw-r--r--images/emoji/1f4aa-1f3fd.pngbin0 -> 1012 bytes
-rw-r--r--images/emoji/1f4aa-1f3fe.pngbin0 -> 1012 bytes
-rw-r--r--images/emoji/1f4aa-1f3ff.pngbin0 -> 1012 bytes
-rw-r--r--images/emoji/1f4aa.pngbin0 -> 1012 bytes
-rw-r--r--images/emoji/1f4ab.pngbin0 -> 795 bytes
-rw-r--r--images/emoji/1f4ac.pngbin0 -> 384 bytes
-rw-r--r--images/emoji/1f4ad.pngbin0 -> 489 bytes
-rw-r--r--images/emoji/1f4ae.pngbin0 -> 941 bytes
-rw-r--r--images/emoji/1f4af.pngbin0 -> 793 bytes
-rw-r--r--images/emoji/1f4b0.pngbin0 -> 2310 bytes
-rw-r--r--images/emoji/1f4b1.pngbin0 -> 576 bytes
-rw-r--r--images/emoji/1f4b2.pngbin0 -> 429 bytes
-rw-r--r--images/emoji/1f4b3.pngbin0 -> 1012 bytes
-rw-r--r--images/emoji/1f4b4.pngbin0 -> 421 bytes
-rw-r--r--images/emoji/1f4b5.pngbin0 -> 405 bytes
-rw-r--r--images/emoji/1f4b6.pngbin0 -> 460 bytes
-rw-r--r--images/emoji/1f4b7.pngbin0 -> 452 bytes
-rw-r--r--images/emoji/1f4b8.pngbin0 -> 2327 bytes
-rw-r--r--images/emoji/1f4b9.pngbin0 -> 724 bytes
-rw-r--r--images/emoji/1f4ba.pngbin0 -> 884 bytes
-rw-r--r--images/emoji/1f4bb.pngbin0 -> 369 bytes
-rw-r--r--images/emoji/1f4bc.pngbin0 -> 1275 bytes
-rw-r--r--images/emoji/1f4bd.pngbin0 -> 522 bytes
-rw-r--r--images/emoji/1f4be.pngbin0 -> 258 bytes
-rw-r--r--images/emoji/1f4bf.pngbin0 -> 908 bytes
-rw-r--r--images/emoji/1f4c0.pngbin0 -> 933 bytes
-rw-r--r--images/emoji/1f4c1.pngbin0 -> 1445 bytes
-rw-r--r--images/emoji/1f4c2.pngbin0 -> 755 bytes
-rw-r--r--images/emoji/1f4c3.pngbin0 -> 1157 bytes
-rw-r--r--images/emoji/1f4c4.pngbin0 -> 1110 bytes
-rw-r--r--images/emoji/1f4c5.pngbin0 -> 788 bytes
-rw-r--r--images/emoji/1f4c6.pngbin0 -> 2077 bytes
-rw-r--r--images/emoji/1f4c7.pngbin0 -> 1929 bytes
-rw-r--r--images/emoji/1f4c8.pngbin0 -> 688 bytes
-rw-r--r--images/emoji/1f4c9.pngbin0 -> 709 bytes
-rw-r--r--images/emoji/1f4ca.pngbin0 -> 408 bytes
-rw-r--r--images/emoji/1f4cb.pngbin0 -> 1349 bytes
-rw-r--r--images/emoji/1f4cc.pngbin0 -> 640 bytes
-rw-r--r--images/emoji/1f4cd.pngbin0 -> 455 bytes
-rw-r--r--images/emoji/1f4ce.pngbin0 -> 439 bytes
-rw-r--r--images/emoji/1f4cf.pngbin0 -> 1406 bytes
-rw-r--r--images/emoji/1f4d0.pngbin0 -> 369 bytes
-rw-r--r--images/emoji/1f4d1.pngbin0 -> 1398 bytes
-rw-r--r--images/emoji/1f4d2.pngbin0 -> 1530 bytes
-rw-r--r--images/emoji/1f4d3.pngbin0 -> 1215 bytes
-rw-r--r--images/emoji/1f4d4.pngbin0 -> 1782 bytes
-rw-r--r--images/emoji/1f4d5.pngbin0 -> 1359 bytes
-rw-r--r--images/emoji/1f4d6.pngbin0 -> 1716 bytes
-rw-r--r--images/emoji/1f4d7.pngbin0 -> 1366 bytes
-rw-r--r--images/emoji/1f4d8.pngbin0 -> 1348 bytes
-rw-r--r--images/emoji/1f4d9.pngbin0 -> 1329 bytes
-rw-r--r--images/emoji/1f4da.pngbin0 -> 2474 bytes
-rw-r--r--images/emoji/1f4db.pngbin0 -> 632 bytes
-rw-r--r--images/emoji/1f4dc.pngbin0 -> 989 bytes
-rw-r--r--images/emoji/1f4dd.pngbin0 -> 1625 bytes
-rw-r--r--images/emoji/1f4de.pngbin0 -> 941 bytes
-rw-r--r--images/emoji/1f4df.pngbin0 -> 553 bytes
-rw-r--r--images/emoji/1f4e0.pngbin0 -> 1188 bytes
-rw-r--r--images/emoji/1f4e1.pngbin0 -> 1173 bytes
-rw-r--r--images/emoji/1f4e2.pngbin0 -> 1316 bytes
-rw-r--r--images/emoji/1f4e3.pngbin0 -> 1751 bytes
-rw-r--r--images/emoji/1f4e4.pngbin0 -> 1002 bytes
-rw-r--r--images/emoji/1f4e5.pngbin0 -> 1029 bytes
-rw-r--r--images/emoji/1f4e6.pngbin0 -> 950 bytes
-rw-r--r--images/emoji/1f4e7.pngbin0 -> 1196 bytes
-rw-r--r--images/emoji/1f4e8.pngbin0 -> 1129 bytes
-rw-r--r--images/emoji/1f4e9.pngbin0 -> 1062 bytes
-rw-r--r--images/emoji/1f4ea.pngbin0 -> 1192 bytes
-rw-r--r--images/emoji/1f4eb.pngbin0 -> 1166 bytes
-rw-r--r--images/emoji/1f4ec.pngbin0 -> 1307 bytes
-rw-r--r--images/emoji/1f4ed.pngbin0 -> 960 bytes
-rw-r--r--images/emoji/1f4ee.pngbin0 -> 1077 bytes
-rw-r--r--images/emoji/1f4ef.pngbin0 -> 809 bytes
-rw-r--r--images/emoji/1f4f0.pngbin0 -> 1178 bytes
-rw-r--r--images/emoji/1f4f1.pngbin0 -> 695 bytes
-rw-r--r--images/emoji/1f4f2.pngbin0 -> 815 bytes
-rw-r--r--images/emoji/1f4f3.pngbin0 -> 683 bytes
-rw-r--r--images/emoji/1f4f4.pngbin0 -> 621 bytes
-rw-r--r--images/emoji/1f4f5.pngbin0 -> 790 bytes
-rw-r--r--images/emoji/1f4f6.pngbin0 -> 445 bytes
-rw-r--r--images/emoji/1f4f7.pngbin0 -> 1783 bytes
-rw-r--r--images/emoji/1f4f8.pngbin0 -> 2097 bytes
-rw-r--r--images/emoji/1f4f9.pngbin0 -> 1613 bytes
-rw-r--r--images/emoji/1f4fa.pngbin0 -> 776 bytes
-rw-r--r--images/emoji/1f4fb.pngbin0 -> 851 bytes
-rw-r--r--images/emoji/1f4fc.pngbin0 -> 632 bytes
-rw-r--r--images/emoji/1f4fd.pngbin0 -> 943 bytes
-rw-r--r--images/emoji/1f4ff.pngbin0 -> 1059 bytes
-rw-r--r--images/emoji/1f500.pngbin0 -> 574 bytes
-rw-r--r--images/emoji/1f501.pngbin0 -> 644 bytes
-rw-r--r--images/emoji/1f502.pngbin0 -> 688 bytes
-rw-r--r--images/emoji/1f503.pngbin0 -> 519 bytes
-rw-r--r--images/emoji/1f504.pngbin0 -> 693 bytes
-rw-r--r--images/emoji/1f505.pngbin0 -> 431 bytes
-rw-r--r--images/emoji/1f506.pngbin0 -> 474 bytes
-rw-r--r--images/emoji/1f507.pngbin0 -> 823 bytes
-rw-r--r--images/emoji/1f508.pngbin0 -> 575 bytes
-rw-r--r--images/emoji/1f509.pngbin0 -> 690 bytes
-rw-r--r--images/emoji/1f50a.pngbin0 -> 977 bytes
-rw-r--r--images/emoji/1f50b.pngbin0 -> 228 bytes
-rw-r--r--images/emoji/1f50c.pngbin0 -> 548 bytes
-rw-r--r--images/emoji/1f50d.pngbin0 -> 1240 bytes
-rw-r--r--images/emoji/1f50e.pngbin0 -> 1251 bytes
-rw-r--r--images/emoji/1f50f.pngbin0 -> 1123 bytes
-rw-r--r--images/emoji/1f510.pngbin0 -> 1250 bytes
-rw-r--r--images/emoji/1f511.pngbin0 -> 770 bytes
-rw-r--r--images/emoji/1f512.pngbin0 -> 986 bytes
-rw-r--r--images/emoji/1f513.pngbin0 -> 856 bytes
-rw-r--r--images/emoji/1f514.pngbin0 -> 1497 bytes
-rw-r--r--images/emoji/1f515.pngbin0 -> 823 bytes
-rw-r--r--images/emoji/1f516.pngbin0 -> 747 bytes
-rw-r--r--images/emoji/1f517.pngbin0 -> 477 bytes
-rw-r--r--images/emoji/1f518.pngbin0 -> 674 bytes
-rw-r--r--images/emoji/1f519.pngbin0 -> 562 bytes
-rw-r--r--images/emoji/1f51a.pngbin0 -> 393 bytes
-rw-r--r--images/emoji/1f51b.pngbin0 -> 459 bytes
-rw-r--r--images/emoji/1f51c.pngbin0 -> 483 bytes
-rw-r--r--images/emoji/1f51d.pngbin0 -> 389 bytes
-rw-r--r--images/emoji/1f51e.pngbin0 -> 863 bytes
-rw-r--r--images/emoji/1f51f.pngbin0 -> 621 bytes
-rw-r--r--images/emoji/1f520.pngbin0 -> 805 bytes
-rw-r--r--images/emoji/1f521.pngbin0 -> 670 bytes
-rw-r--r--images/emoji/1f522.pngbin0 -> 676 bytes
-rw-r--r--images/emoji/1f523.pngbin0 -> 746 bytes
-rw-r--r--images/emoji/1f524.pngbin0 -> 646 bytes
-rw-r--r--images/emoji/1f525.pngbin0 -> 1020 bytes
-rw-r--r--images/emoji/1f526.pngbin0 -> 964 bytes
-rw-r--r--images/emoji/1f527.pngbin0 -> 418 bytes
-rw-r--r--images/emoji/1f528.pngbin0 -> 834 bytes
-rw-r--r--images/emoji/1f529.pngbin0 -> 899 bytes
-rw-r--r--images/emoji/1f52a.pngbin0 -> 616 bytes
-rw-r--r--images/emoji/1f52b.pngbin0 -> 1859 bytes
-rw-r--r--images/emoji/1f52c.pngbin0 -> 1113 bytes
-rw-r--r--images/emoji/1f52d.pngbin0 -> 1256 bytes
-rw-r--r--images/emoji/1f52e.pngbin0 -> 1914 bytes
-rw-r--r--images/emoji/1f52f.pngbin0 -> 540 bytes
-rw-r--r--images/emoji/1f530.pngbin0 -> 545 bytes
-rw-r--r--images/emoji/1f531.pngbin0 -> 668 bytes
-rw-r--r--images/emoji/1f532.pngbin0 -> 122 bytes
-rw-r--r--images/emoji/1f533.pngbin0 -> 122 bytes
-rw-r--r--images/emoji/1f534.pngbin0 -> 374 bytes
-rw-r--r--images/emoji/1f535.pngbin0 -> 371 bytes
-rw-r--r--images/emoji/1f536.pngbin0 -> 248 bytes
-rw-r--r--images/emoji/1f537.pngbin0 -> 245 bytes
-rw-r--r--images/emoji/1f538.pngbin0 -> 194 bytes
-rw-r--r--images/emoji/1f539.pngbin0 -> 191 bytes
-rw-r--r--images/emoji/1f53a.pngbin0 -> 273 bytes
-rw-r--r--images/emoji/1f53b.pngbin0 -> 291 bytes
-rw-r--r--images/emoji/1f53c.pngbin0 -> 454 bytes
-rw-r--r--images/emoji/1f53d.pngbin0 -> 455 bytes
-rw-r--r--images/emoji/1f549.pngbin0 -> 773 bytes
-rw-r--r--images/emoji/1f54a.pngbin0 -> 967 bytes
-rw-r--r--images/emoji/1f54b.pngbin0 -> 1251 bytes
-rw-r--r--images/emoji/1f54c.pngbin0 -> 984 bytes
-rw-r--r--images/emoji/1f54d.pngbin0 -> 1309 bytes
-rw-r--r--images/emoji/1f54e.pngbin0 -> 1279 bytes
-rw-r--r--images/emoji/1f550.pngbin0 -> 586 bytes
-rw-r--r--images/emoji/1f551.pngbin0 -> 591 bytes
-rw-r--r--images/emoji/1f552.pngbin0 -> 482 bytes
-rw-r--r--images/emoji/1f553.pngbin0 -> 592 bytes
-rw-r--r--images/emoji/1f554.pngbin0 -> 585 bytes
-rw-r--r--images/emoji/1f555.pngbin0 -> 466 bytes
-rw-r--r--images/emoji/1f556.pngbin0 -> 581 bytes
-rw-r--r--images/emoji/1f557.pngbin0 -> 590 bytes
-rw-r--r--images/emoji/1f558.pngbin0 -> 484 bytes
-rw-r--r--images/emoji/1f559.pngbin0 -> 593 bytes
-rw-r--r--images/emoji/1f55a.pngbin0 -> 590 bytes
-rw-r--r--images/emoji/1f55b.pngbin0 -> 480 bytes
-rw-r--r--images/emoji/1f55c.pngbin0 -> 526 bytes
-rw-r--r--images/emoji/1f55d.pngbin0 -> 576 bytes
-rw-r--r--images/emoji/1f55e.pngbin0 -> 568 bytes
-rw-r--r--images/emoji/1f55f.pngbin0 -> 531 bytes
-rw-r--r--images/emoji/1f560.pngbin0 -> 552 bytes
-rw-r--r--images/emoji/1f561.pngbin0 -> 536 bytes
-rw-r--r--images/emoji/1f562.pngbin0 -> 531 bytes
-rw-r--r--images/emoji/1f563.pngbin0 -> 570 bytes
-rw-r--r--images/emoji/1f564.pngbin0 -> 576 bytes
-rw-r--r--images/emoji/1f565.pngbin0 -> 530 bytes
-rw-r--r--images/emoji/1f566.pngbin0 -> 583 bytes
-rw-r--r--images/emoji/1f567.pngbin0 -> 579 bytes
-rw-r--r--images/emoji/1f56f.pngbin0 -> 1250 bytes
-rw-r--r--images/emoji/1f570.pngbin0 -> 592 bytes
-rw-r--r--images/emoji/1f573.pngbin0 -> 1390 bytes
-rw-r--r--images/emoji/1f574.pngbin0 -> 914 bytes
-rw-r--r--images/emoji/1f575-1f3fb.pngbin0 -> 1639 bytes
-rw-r--r--images/emoji/1f575-1f3fc.pngbin0 -> 1636 bytes
-rw-r--r--images/emoji/1f575-1f3fd.pngbin0 -> 1647 bytes
-rw-r--r--images/emoji/1f575-1f3fe.pngbin0 -> 1639 bytes
-rw-r--r--images/emoji/1f575-1f3ff.pngbin0 -> 1639 bytes
-rw-r--r--images/emoji/1f575.pngbin0 -> 1650 bytes
-rw-r--r--images/emoji/1f576.pngbin0 -> 829 bytes
-rw-r--r--images/emoji/1f577.pngbin0 -> 1724 bytes
-rw-r--r--images/emoji/1f578.pngbin0 -> 929 bytes
-rw-r--r--images/emoji/1f579.pngbin0 -> 1039 bytes
-rw-r--r--images/emoji/1f57a-1f3fb.pngbin0 -> 1404 bytes
-rw-r--r--images/emoji/1f57a-1f3fc.pngbin0 -> 1402 bytes
-rw-r--r--images/emoji/1f57a-1f3fd.pngbin0 -> 1409 bytes
-rw-r--r--images/emoji/1f57a-1f3fe.pngbin0 -> 1421 bytes
-rw-r--r--images/emoji/1f57a-1f3ff.pngbin0 -> 1418 bytes
-rw-r--r--images/emoji/1f57a.pngbin0 -> 1400 bytes
-rw-r--r--images/emoji/1f587.pngbin0 -> 642 bytes
-rw-r--r--images/emoji/1f58a.pngbin0 -> 696 bytes
-rw-r--r--images/emoji/1f58b.pngbin0 -> 623 bytes
-rw-r--r--images/emoji/1f58c.pngbin0 -> 950 bytes
-rw-r--r--images/emoji/1f58d.pngbin0 -> 633 bytes
-rw-r--r--images/emoji/1f590-1f3fb.pngbin0 -> 1081 bytes
-rw-r--r--images/emoji/1f590-1f3fc.pngbin0 -> 1081 bytes
-rw-r--r--images/emoji/1f590-1f3fd.pngbin0 -> 1081 bytes
-rw-r--r--images/emoji/1f590-1f3fe.pngbin0 -> 1081 bytes
-rw-r--r--images/emoji/1f590-1f3ff.pngbin0 -> 1081 bytes
-rw-r--r--images/emoji/1f590.pngbin0 -> 1081 bytes
-rw-r--r--images/emoji/1f595-1f3fb.pngbin0 -> 892 bytes
-rw-r--r--images/emoji/1f595-1f3fc.pngbin0 -> 892 bytes
-rw-r--r--images/emoji/1f595-1f3fd.pngbin0 -> 892 bytes
-rw-r--r--images/emoji/1f595-1f3fe.pngbin0 -> 892 bytes
-rw-r--r--images/emoji/1f595-1f3ff.pngbin0 -> 892 bytes
-rw-r--r--images/emoji/1f595.pngbin0 -> 893 bytes
-rw-r--r--images/emoji/1f596-1f3fb.pngbin0 -> 1083 bytes
-rw-r--r--images/emoji/1f596-1f3fc.pngbin0 -> 1083 bytes
-rw-r--r--images/emoji/1f596-1f3fd.pngbin0 -> 1083 bytes
-rw-r--r--images/emoji/1f596-1f3fe.pngbin0 -> 1083 bytes
-rw-r--r--images/emoji/1f596-1f3ff.pngbin0 -> 1083 bytes
-rw-r--r--images/emoji/1f596.pngbin0 -> 1083 bytes
-rw-r--r--images/emoji/1f5a4.pngbin0 -> 435 bytes
-rw-r--r--images/emoji/1f5a5.pngbin0 -> 311 bytes
-rw-r--r--images/emoji/1f5a8.pngbin0 -> 926 bytes
-rw-r--r--images/emoji/1f5b1.pngbin0 -> 934 bytes
-rw-r--r--images/emoji/1f5b2.pngbin0 -> 892 bytes
-rw-r--r--images/emoji/1f5bc.pngbin0 -> 514 bytes
-rw-r--r--images/emoji/1f5c2.pngbin0 -> 810 bytes
-rw-r--r--images/emoji/1f5c3.pngbin0 -> 1523 bytes
-rw-r--r--images/emoji/1f5c4.pngbin0 -> 1420 bytes
-rw-r--r--images/emoji/1f5d1.pngbin0 -> 2414 bytes
-rw-r--r--images/emoji/1f5d2.pngbin0 -> 1377 bytes
-rw-r--r--images/emoji/1f5d3.pngbin0 -> 1491 bytes
-rw-r--r--images/emoji/1f5dc.pngbin0 -> 1614 bytes
-rw-r--r--images/emoji/1f5dd.pngbin0 -> 593 bytes
-rw-r--r--images/emoji/1f5de.pngbin0 -> 1046 bytes
-rw-r--r--images/emoji/1f5e1.pngbin0 -> 916 bytes
-rw-r--r--images/emoji/1f5e3.pngbin0 -> 531 bytes
-rw-r--r--images/emoji/1f5e8.pngbin0 -> 390 bytes
-rw-r--r--images/emoji/1f5ef.pngbin0 -> 551 bytes
-rw-r--r--images/emoji/1f5f3.pngbin0 -> 1355 bytes
-rw-r--r--images/emoji/1f5fa.pngbin0 -> 2352 bytes
-rw-r--r--images/emoji/1f5fb.pngbin0 -> 881 bytes
-rw-r--r--images/emoji/1f5fc.pngbin0 -> 765 bytes
-rw-r--r--images/emoji/1f5fd.pngbin0 -> 1145 bytes
-rw-r--r--images/emoji/1f5fe.pngbin0 -> 539 bytes
-rw-r--r--images/emoji/1f5ff.pngbin0 -> 1593 bytes
-rw-r--r--images/emoji/1f600.pngbin0 -> 810 bytes
-rw-r--r--images/emoji/1f601.pngbin0 -> 767 bytes
-rw-r--r--images/emoji/1f602.pngbin0 -> 1136 bytes
-rw-r--r--images/emoji/1f603.pngbin0 -> 686 bytes
-rw-r--r--images/emoji/1f604.pngbin0 -> 737 bytes
-rw-r--r--images/emoji/1f605.pngbin0 -> 851 bytes
-rw-r--r--images/emoji/1f606.pngbin0 -> 901 bytes
-rw-r--r--images/emoji/1f607.pngbin0 -> 935 bytes
-rw-r--r--images/emoji/1f608.pngbin0 -> 1078 bytes
-rw-r--r--images/emoji/1f609.pngbin0 -> 746 bytes
-rw-r--r--images/emoji/1f60a.pngbin0 -> 812 bytes
-rw-r--r--images/emoji/1f60b.pngbin0 -> 896 bytes
-rw-r--r--images/emoji/1f60c.pngbin0 -> 785 bytes
-rw-r--r--images/emoji/1f60d.pngbin0 -> 1069 bytes
-rw-r--r--images/emoji/1f60e.pngbin0 -> 824 bytes
-rw-r--r--images/emoji/1f60f.pngbin0 -> 775 bytes
-rw-r--r--images/emoji/1f610.pngbin0 -> 517 bytes
-rw-r--r--images/emoji/1f611.pngbin0 -> 438 bytes
-rw-r--r--images/emoji/1f612.pngbin0 -> 632 bytes
-rw-r--r--images/emoji/1f613.pngbin0 -> 861 bytes
-rw-r--r--images/emoji/1f614.pngbin0 -> 718 bytes
-rw-r--r--images/emoji/1f615.pngbin0 -> 647 bytes
-rw-r--r--images/emoji/1f616.pngbin0 -> 844 bytes
-rw-r--r--images/emoji/1f617.pngbin0 -> 738 bytes
-rw-r--r--images/emoji/1f618.pngbin0 -> 843 bytes
-rw-r--r--images/emoji/1f619.pngbin0 -> 648 bytes
-rw-r--r--images/emoji/1f61a.pngbin0 -> 888 bytes
-rw-r--r--images/emoji/1f61b.pngbin0 -> 752 bytes
-rw-r--r--images/emoji/1f61c.pngbin0 -> 1061 bytes
-rw-r--r--images/emoji/1f61d.pngbin0 -> 867 bytes
-rw-r--r--images/emoji/1f61e.pngbin0 -> 757 bytes
-rw-r--r--images/emoji/1f61f.pngbin0 -> 715 bytes
-rw-r--r--images/emoji/1f620.pngbin0 -> 845 bytes
-rw-r--r--images/emoji/1f621.pngbin0 -> 845 bytes
-rw-r--r--images/emoji/1f622.pngbin0 -> 1123 bytes
-rw-r--r--images/emoji/1f623.pngbin0 -> 891 bytes
-rw-r--r--images/emoji/1f624.pngbin0 -> 1532 bytes
-rw-r--r--images/emoji/1f625.pngbin0 -> 835 bytes
-rw-r--r--images/emoji/1f626.pngbin0 -> 633 bytes
-rw-r--r--images/emoji/1f627.pngbin0 -> 821 bytes
-rw-r--r--images/emoji/1f628.pngbin0 -> 1002 bytes
-rw-r--r--images/emoji/1f629.pngbin0 -> 871 bytes
-rw-r--r--images/emoji/1f62a.pngbin0 -> 1185 bytes
-rw-r--r--images/emoji/1f62b.pngbin0 -> 1132 bytes
-rw-r--r--images/emoji/1f62c.pngbin0 -> 694 bytes
-rw-r--r--images/emoji/1f62d.pngbin0 -> 1241 bytes
-rw-r--r--images/emoji/1f62e.pngbin0 -> 575 bytes
-rw-r--r--images/emoji/1f62f.pngbin0 -> 634 bytes
-rw-r--r--images/emoji/1f630.pngbin0 -> 971 bytes
-rw-r--r--images/emoji/1f631.pngbin0 -> 1588 bytes
-rw-r--r--images/emoji/1f632.pngbin0 -> 862 bytes
-rw-r--r--images/emoji/1f633.pngbin0 -> 1127 bytes
-rw-r--r--images/emoji/1f634.pngbin0 -> 1075 bytes
-rw-r--r--images/emoji/1f635.pngbin0 -> 710 bytes
-rw-r--r--images/emoji/1f636.pngbin0 -> 465 bytes
-rw-r--r--images/emoji/1f637.pngbin0 -> 1323 bytes
-rw-r--r--images/emoji/1f638.pngbin0 -> 1407 bytes
-rw-r--r--images/emoji/1f639.pngbin0 -> 1633 bytes
-rw-r--r--images/emoji/1f63a.pngbin0 -> 1677 bytes
-rw-r--r--images/emoji/1f63b.pngbin0 -> 1513 bytes
-rw-r--r--images/emoji/1f63c.pngbin0 -> 1665 bytes
-rw-r--r--images/emoji/1f63d.pngbin0 -> 1469 bytes
-rw-r--r--images/emoji/1f63e.pngbin0 -> 1675 bytes
-rw-r--r--images/emoji/1f63f.pngbin0 -> 1876 bytes
-rw-r--r--images/emoji/1f640.pngbin0 -> 2120 bytes
-rw-r--r--images/emoji/1f641.pngbin0 -> 580 bytes
-rw-r--r--images/emoji/1f642.pngbin0 -> 600 bytes
-rw-r--r--images/emoji/1f643.pngbin0 -> 602 bytes
-rw-r--r--images/emoji/1f644.pngbin0 -> 743 bytes
-rw-r--r--images/emoji/1f645-1f3fb.pngbin0 -> 1768 bytes
-rw-r--r--images/emoji/1f645-1f3fc.pngbin0 -> 1756 bytes
-rw-r--r--images/emoji/1f645-1f3fd.pngbin0 -> 1766 bytes
-rw-r--r--images/emoji/1f645-1f3fe.pngbin0 -> 1786 bytes
-rw-r--r--images/emoji/1f645-1f3ff.pngbin0 -> 1786 bytes
-rw-r--r--images/emoji/1f645.pngbin0 -> 1751 bytes
-rw-r--r--images/emoji/1f646-1f3fb.pngbin0 -> 1702 bytes
-rw-r--r--images/emoji/1f646-1f3fc.pngbin0 -> 1695 bytes
-rw-r--r--images/emoji/1f646-1f3fd.pngbin0 -> 1699 bytes
-rw-r--r--images/emoji/1f646-1f3fe.pngbin0 -> 1692 bytes
-rw-r--r--images/emoji/1f646-1f3ff.pngbin0 -> 1702 bytes
-rw-r--r--images/emoji/1f646.pngbin0 -> 1702 bytes
-rw-r--r--images/emoji/1f647-1f3fb.pngbin0 -> 1396 bytes
-rw-r--r--images/emoji/1f647-1f3fc.pngbin0 -> 1396 bytes
-rw-r--r--images/emoji/1f647-1f3fd.pngbin0 -> 1396 bytes
-rw-r--r--images/emoji/1f647-1f3fe.pngbin0 -> 1396 bytes
-rw-r--r--images/emoji/1f647-1f3ff.pngbin0 -> 1396 bytes
-rw-r--r--images/emoji/1f647.pngbin0 -> 1396 bytes
-rw-r--r--images/emoji/1f648.pngbin0 -> 1227 bytes
-rw-r--r--images/emoji/1f649.pngbin0 -> 1210 bytes
-rw-r--r--images/emoji/1f64a.pngbin0 -> 1503 bytes
-rw-r--r--images/emoji/1f64b-1f3fb.pngbin0 -> 1678 bytes
-rw-r--r--images/emoji/1f64b-1f3fc.pngbin0 -> 1665 bytes
-rw-r--r--images/emoji/1f64b-1f3fd.pngbin0 -> 1661 bytes
-rw-r--r--images/emoji/1f64b-1f3fe.pngbin0 -> 1658 bytes
-rw-r--r--images/emoji/1f64b-1f3ff.pngbin0 -> 1661 bytes
-rw-r--r--images/emoji/1f64b.pngbin0 -> 1669 bytes
-rw-r--r--images/emoji/1f64c-1f3fb.pngbin0 -> 1098 bytes
-rw-r--r--images/emoji/1f64c-1f3fc.pngbin0 -> 1098 bytes
-rw-r--r--images/emoji/1f64c-1f3fd.pngbin0 -> 1098 bytes
-rw-r--r--images/emoji/1f64c-1f3fe.pngbin0 -> 1098 bytes
-rw-r--r--images/emoji/1f64c-1f3ff.pngbin0 -> 1098 bytes
-rw-r--r--images/emoji/1f64c.pngbin0 -> 1098 bytes
-rw-r--r--images/emoji/1f64d-1f3fb.pngbin0 -> 1141 bytes
-rw-r--r--images/emoji/1f64d-1f3fc.pngbin0 -> 1141 bytes
-rw-r--r--images/emoji/1f64d-1f3fd.pngbin0 -> 1141 bytes
-rw-r--r--images/emoji/1f64d-1f3fe.pngbin0 -> 1109 bytes
-rw-r--r--images/emoji/1f64d-1f3ff.pngbin0 -> 1114 bytes
-rw-r--r--images/emoji/1f64d.pngbin0 -> 1148 bytes
-rw-r--r--images/emoji/1f64e-1f3fb.pngbin0 -> 1309 bytes
-rw-r--r--images/emoji/1f64e-1f3fc.pngbin0 -> 1292 bytes
-rw-r--r--images/emoji/1f64e-1f3fd.pngbin0 -> 1305 bytes
-rw-r--r--images/emoji/1f64e-1f3fe.pngbin0 -> 1296 bytes
-rw-r--r--images/emoji/1f64e-1f3ff.pngbin0 -> 1303 bytes
-rw-r--r--images/emoji/1f64e.pngbin0 -> 1297 bytes
-rw-r--r--images/emoji/1f64f-1f3fb.pngbin0 -> 1131 bytes
-rw-r--r--images/emoji/1f64f-1f3fc.pngbin0 -> 1134 bytes
-rw-r--r--images/emoji/1f64f-1f3fd.pngbin0 -> 1137 bytes
-rw-r--r--images/emoji/1f64f-1f3fe.pngbin0 -> 1126 bytes
-rw-r--r--images/emoji/1f64f-1f3ff.pngbin0 -> 1117 bytes
-rw-r--r--images/emoji/1f64f.pngbin0 -> 1122 bytes
-rw-r--r--images/emoji/1f680.pngbin0 -> 1639 bytes
-rw-r--r--images/emoji/1f681.pngbin0 -> 1098 bytes
-rw-r--r--images/emoji/1f682.pngbin0 -> 1736 bytes
-rw-r--r--images/emoji/1f683.pngbin0 -> 847 bytes
-rw-r--r--images/emoji/1f684.pngbin0 -> 1538 bytes
-rw-r--r--images/emoji/1f685.pngbin0 -> 1450 bytes
-rw-r--r--images/emoji/1f686.pngbin0 -> 1501 bytes
-rw-r--r--images/emoji/1f687.pngbin0 -> 1020 bytes
-rw-r--r--images/emoji/1f688.pngbin0 -> 902 bytes
-rw-r--r--images/emoji/1f689.pngbin0 -> 1336 bytes
-rw-r--r--images/emoji/1f68a.pngbin0 -> 1065 bytes
-rw-r--r--images/emoji/1f68b.pngbin0 -> 1031 bytes
-rw-r--r--images/emoji/1f68c.pngbin0 -> 1086 bytes
-rw-r--r--images/emoji/1f68d.pngbin0 -> 964 bytes
-rw-r--r--images/emoji/1f68e.pngbin0 -> 1168 bytes
-rw-r--r--images/emoji/1f68f.pngbin0 -> 626 bytes
-rw-r--r--images/emoji/1f690.pngbin0 -> 1256 bytes
-rw-r--r--images/emoji/1f691.pngbin0 -> 1238 bytes
-rw-r--r--images/emoji/1f692.pngbin0 -> 1658 bytes
-rw-r--r--images/emoji/1f693.pngbin0 -> 1431 bytes
-rw-r--r--images/emoji/1f694.pngbin0 -> 1548 bytes
-rw-r--r--images/emoji/1f695.pngbin0 -> 1230 bytes
-rw-r--r--images/emoji/1f696.pngbin0 -> 1410 bytes
-rw-r--r--images/emoji/1f697.pngbin0 -> 1065 bytes
-rw-r--r--images/emoji/1f698.pngbin0 -> 1238 bytes
-rw-r--r--images/emoji/1f699.pngbin0 -> 1275 bytes
-rw-r--r--images/emoji/1f69a.pngbin0 -> 1367 bytes
-rw-r--r--images/emoji/1f69b.pngbin0 -> 1711 bytes
-rw-r--r--images/emoji/1f69c.pngbin0 -> 1192 bytes
-rw-r--r--images/emoji/1f69d.pngbin0 -> 1068 bytes
-rw-r--r--images/emoji/1f69e.pngbin0 -> 1320 bytes
-rw-r--r--images/emoji/1f69f.pngbin0 -> 927 bytes
-rw-r--r--images/emoji/1f6a0.pngbin0 -> 811 bytes
-rw-r--r--images/emoji/1f6a1.pngbin0 -> 759 bytes
-rw-r--r--images/emoji/1f6a2.pngbin0 -> 1405 bytes
-rw-r--r--images/emoji/1f6a3-1f3fb.pngbin0 -> 1972 bytes
-rw-r--r--images/emoji/1f6a3-1f3fc.pngbin0 -> 1972 bytes
-rw-r--r--images/emoji/1f6a3-1f3fd.pngbin0 -> 1967 bytes
-rw-r--r--images/emoji/1f6a3-1f3fe.pngbin0 -> 1974 bytes
-rw-r--r--images/emoji/1f6a3-1f3ff.pngbin0 -> 1971 bytes
-rw-r--r--images/emoji/1f6a3.pngbin0 -> 1963 bytes
-rw-r--r--images/emoji/1f6a4.pngbin0 -> 1255 bytes
-rw-r--r--images/emoji/1f6a5.pngbin0 -> 590 bytes
-rw-r--r--images/emoji/1f6a6.pngbin0 -> 752 bytes
-rw-r--r--images/emoji/1f6a7.pngbin0 -> 1083 bytes
-rw-r--r--images/emoji/1f6a8.pngbin0 -> 1969 bytes
-rw-r--r--images/emoji/1f6a9.pngbin0 -> 415 bytes
-rw-r--r--images/emoji/1f6aa.pngbin0 -> 1105 bytes
-rw-r--r--images/emoji/1f6ab.pngbin0 -> 555 bytes
-rw-r--r--images/emoji/1f6ac.pngbin0 -> 417 bytes
-rw-r--r--images/emoji/1f6ad.pngbin0 -> 1140 bytes
-rw-r--r--images/emoji/1f6ae.pngbin0 -> 650 bytes
-rw-r--r--images/emoji/1f6af.pngbin0 -> 1010 bytes
-rw-r--r--images/emoji/1f6b0.pngbin0 -> 633 bytes
-rw-r--r--images/emoji/1f6b1.pngbin0 -> 827 bytes
-rw-r--r--images/emoji/1f6b2.pngbin0 -> 1506 bytes
-rw-r--r--images/emoji/1f6b3.pngbin0 -> 998 bytes
-rw-r--r--images/emoji/1f6b4-1f3fb.pngbin0 -> 1860 bytes
-rw-r--r--images/emoji/1f6b4-1f3fc.pngbin0 -> 1866 bytes
-rw-r--r--images/emoji/1f6b4-1f3fd.pngbin0 -> 1851 bytes
-rw-r--r--images/emoji/1f6b4-1f3fe.pngbin0 -> 1852 bytes
-rw-r--r--images/emoji/1f6b4-1f3ff.pngbin0 -> 1840 bytes
-rw-r--r--images/emoji/1f6b4.pngbin0 -> 1911 bytes
-rw-r--r--images/emoji/1f6b5-1f3fb.pngbin0 -> 2294 bytes
-rw-r--r--images/emoji/1f6b5-1f3fc.pngbin0 -> 2298 bytes
-rw-r--r--images/emoji/1f6b5-1f3fd.pngbin0 -> 2284 bytes
-rw-r--r--images/emoji/1f6b5-1f3fe.pngbin0 -> 2288 bytes
-rw-r--r--images/emoji/1f6b5-1f3ff.pngbin0 -> 2281 bytes
-rw-r--r--images/emoji/1f6b5.pngbin0 -> 2288 bytes
-rw-r--r--images/emoji/1f6b6-1f3fb.pngbin0 -> 1084 bytes
-rw-r--r--images/emoji/1f6b6-1f3fc.pngbin0 -> 1084 bytes
-rw-r--r--images/emoji/1f6b6-1f3fd.pngbin0 -> 1066 bytes
-rw-r--r--images/emoji/1f6b6-1f3fe.pngbin0 -> 1075 bytes
-rw-r--r--images/emoji/1f6b6-1f3ff.pngbin0 -> 1065 bytes
-rw-r--r--images/emoji/1f6b6.pngbin0 -> 1082 bytes
-rw-r--r--images/emoji/1f6b7.pngbin0 -> 875 bytes
-rw-r--r--images/emoji/1f6b8.pngbin0 -> 778 bytes
-rw-r--r--images/emoji/1f6b9.pngbin0 -> 561 bytes
-rw-r--r--images/emoji/1f6ba.pngbin0 -> 577 bytes
-rw-r--r--images/emoji/1f6bb.pngbin0 -> 676 bytes
-rw-r--r--images/emoji/1f6bc.pngbin0 -> 665 bytes
-rw-r--r--images/emoji/1f6bd.pngbin0 -> 726 bytes
-rw-r--r--images/emoji/1f6be.pngbin0 -> 752 bytes
-rw-r--r--images/emoji/1f6bf.pngbin0 -> 2537 bytes
-rw-r--r--images/emoji/1f6c0-1f3fb.pngbin0 -> 1235 bytes
-rw-r--r--images/emoji/1f6c0-1f3fc.pngbin0 -> 1231 bytes
-rw-r--r--images/emoji/1f6c0-1f3fd.pngbin0 -> 1236 bytes
-rw-r--r--images/emoji/1f6c0-1f3fe.pngbin0 -> 1252 bytes
-rw-r--r--images/emoji/1f6c0-1f3ff.pngbin0 -> 1239 bytes
-rw-r--r--images/emoji/1f6c0.pngbin0 -> 1238 bytes
-rw-r--r--images/emoji/1f6c1.pngbin0 -> 767 bytes
-rw-r--r--images/emoji/1f6c2.pngbin0 -> 683 bytes
-rw-r--r--images/emoji/1f6c3.pngbin0 -> 648 bytes
-rw-r--r--images/emoji/1f6c4.pngbin0 -> 490 bytes
-rw-r--r--images/emoji/1f6c5.pngbin0 -> 576 bytes
-rw-r--r--images/emoji/1f6cb.pngbin0 -> 1362 bytes
-rw-r--r--images/emoji/1f6cc.pngbin0 -> 926 bytes
-rw-r--r--images/emoji/1f6cd.pngbin0 -> 1234 bytes
-rw-r--r--images/emoji/1f6ce.pngbin0 -> 891 bytes
-rw-r--r--images/emoji/1f6cf.pngbin0 -> 1573 bytes
-rw-r--r--images/emoji/1f6d0.pngbin0 -> 487 bytes
-rw-r--r--images/emoji/1f6d1.pngbin0 -> 260 bytes
-rw-r--r--images/emoji/1f6d2.pngbin0 -> 1072 bytes
-rw-r--r--images/emoji/1f6e0.pngbin0 -> 1225 bytes
-rw-r--r--images/emoji/1f6e1.pngbin0 -> 1602 bytes
-rw-r--r--images/emoji/1f6e2.pngbin0 -> 674 bytes
-rw-r--r--images/emoji/1f6e3.pngbin0 -> 1102 bytes
-rw-r--r--images/emoji/1f6e4.pngbin0 -> 1552 bytes
-rw-r--r--images/emoji/1f6e5.pngbin0 -> 990 bytes
-rw-r--r--images/emoji/1f6e9.pngbin0 -> 1229 bytes
-rw-r--r--images/emoji/1f6eb.pngbin0 -> 1111 bytes
-rw-r--r--images/emoji/1f6ec.pngbin0 -> 1101 bytes
-rw-r--r--images/emoji/1f6f0.pngbin0 -> 762 bytes
-rw-r--r--images/emoji/1f6f3.pngbin0 -> 2272 bytes
-rw-r--r--images/emoji/1f6f4.pngbin0 -> 1228 bytes
-rw-r--r--images/emoji/1f6f5.pngbin0 -> 1207 bytes
-rw-r--r--images/emoji/1f6f6.pngbin0 -> 1244 bytes
-rw-r--r--images/emoji/1f910.pngbin0 -> 722 bytes
-rw-r--r--images/emoji/1f911.pngbin0 -> 967 bytes
-rw-r--r--images/emoji/1f912.pngbin0 -> 1507 bytes
-rw-r--r--images/emoji/1f913.pngbin0 -> 975 bytes
-rw-r--r--images/emoji/1f914.pngbin0 -> 1345 bytes
-rw-r--r--images/emoji/1f915.pngbin0 -> 1201 bytes
-rw-r--r--images/emoji/1f916.pngbin0 -> 1228 bytes
-rw-r--r--images/emoji/1f917.pngbin0 -> 1427 bytes
-rw-r--r--images/emoji/1f918-1f3fb.pngbin0 -> 894 bytes
-rw-r--r--images/emoji/1f918-1f3fc.pngbin0 -> 888 bytes
-rw-r--r--images/emoji/1f918-1f3fd.pngbin0 -> 894 bytes
-rw-r--r--images/emoji/1f918-1f3fe.pngbin0 -> 888 bytes
-rw-r--r--images/emoji/1f918-1f3ff.pngbin0 -> 894 bytes
-rw-r--r--images/emoji/1f918.pngbin0 -> 894 bytes
-rw-r--r--images/emoji/1f919-1f3fb.pngbin0 -> 893 bytes
-rw-r--r--images/emoji/1f919-1f3fc.pngbin0 -> 891 bytes
-rw-r--r--images/emoji/1f919-1f3fd.pngbin0 -> 891 bytes
-rw-r--r--images/emoji/1f919-1f3fe.pngbin0 -> 891 bytes
-rw-r--r--images/emoji/1f919-1f3ff.pngbin0 -> 893 bytes
-rw-r--r--images/emoji/1f919.pngbin0 -> 894 bytes
-rw-r--r--images/emoji/1f91a-1f3fb.pngbin0 -> 848 bytes
-rw-r--r--images/emoji/1f91a-1f3fc.pngbin0 -> 848 bytes
-rw-r--r--images/emoji/1f91a-1f3fd.pngbin0 -> 848 bytes
-rw-r--r--images/emoji/1f91a-1f3fe.pngbin0 -> 848 bytes
-rw-r--r--images/emoji/1f91a-1f3ff.pngbin0 -> 848 bytes
-rw-r--r--images/emoji/1f91a.pngbin0 -> 848 bytes
-rw-r--r--images/emoji/1f91b-1f3fb.pngbin0 -> 960 bytes
-rw-r--r--images/emoji/1f91b-1f3fc.pngbin0 -> 972 bytes
-rw-r--r--images/emoji/1f91b-1f3fd.pngbin0 -> 960 bytes
-rw-r--r--images/emoji/1f91b-1f3fe.pngbin0 -> 960 bytes
-rw-r--r--images/emoji/1f91b-1f3ff.pngbin0 -> 976 bytes
-rw-r--r--images/emoji/1f91b.pngbin0 -> 972 bytes
-rw-r--r--images/emoji/1f91c-1f3fb.pngbin0 -> 964 bytes
-rw-r--r--images/emoji/1f91c-1f3fc.pngbin0 -> 964 bytes
-rw-r--r--images/emoji/1f91c-1f3fd.pngbin0 -> 964 bytes
-rw-r--r--images/emoji/1f91c-1f3fe.pngbin0 -> 964 bytes
-rw-r--r--images/emoji/1f91c-1f3ff.pngbin0 -> 964 bytes
-rw-r--r--images/emoji/1f91c.pngbin0 -> 975 bytes
-rw-r--r--images/emoji/1f91d-1f3fb.pngbin0 -> 1384 bytes
-rw-r--r--images/emoji/1f91d-1f3fc.pngbin0 -> 1384 bytes
-rw-r--r--images/emoji/1f91d-1f3fd.pngbin0 -> 1384 bytes
-rw-r--r--images/emoji/1f91d-1f3fe.pngbin0 -> 1384 bytes
-rw-r--r--images/emoji/1f91d-1f3ff.pngbin0 -> 1384 bytes
-rw-r--r--images/emoji/1f91d.pngbin0 -> 1369 bytes
-rw-r--r--images/emoji/1f91e-1f3fb.pngbin0 -> 1047 bytes
-rw-r--r--images/emoji/1f91e-1f3fc.pngbin0 -> 1050 bytes
-rw-r--r--images/emoji/1f91e-1f3fd.pngbin0 -> 1050 bytes
-rw-r--r--images/emoji/1f91e-1f3fe.pngbin0 -> 1046 bytes
-rw-r--r--images/emoji/1f91e-1f3ff.pngbin0 -> 1050 bytes
-rw-r--r--images/emoji/1f91e.pngbin0 -> 1050 bytes
-rw-r--r--images/emoji/1f920.pngbin0 -> 1361 bytes
-rw-r--r--images/emoji/1f921.pngbin0 -> 1820 bytes
-rw-r--r--images/emoji/1f922.pngbin0 -> 965 bytes
-rw-r--r--images/emoji/1f923.pngbin0 -> 1760 bytes
-rw-r--r--images/emoji/1f924.pngbin0 -> 1049 bytes
-rw-r--r--images/emoji/1f925.pngbin0 -> 1103 bytes
-rw-r--r--images/emoji/1f926-1f3fb.pngbin0 -> 1563 bytes
-rw-r--r--images/emoji/1f926-1f3fc.pngbin0 -> 1548 bytes
-rw-r--r--images/emoji/1f926-1f3fd.pngbin0 -> 1550 bytes
-rw-r--r--images/emoji/1f926-1f3fe.pngbin0 -> 1553 bytes
-rw-r--r--images/emoji/1f926-1f3ff.pngbin0 -> 1532 bytes
-rw-r--r--images/emoji/1f926.pngbin0 -> 1523 bytes
-rw-r--r--images/emoji/1f927.pngbin0 -> 1292 bytes
-rw-r--r--images/emoji/1f930-1f3fb.pngbin0 -> 1255 bytes
-rw-r--r--images/emoji/1f930-1f3fc.pngbin0 -> 1246 bytes
-rw-r--r--images/emoji/1f930-1f3fd.pngbin0 -> 1237 bytes
-rw-r--r--images/emoji/1f930-1f3fe.pngbin0 -> 1246 bytes
-rw-r--r--images/emoji/1f930-1f3ff.pngbin0 -> 1235 bytes
-rw-r--r--images/emoji/1f930.pngbin0 -> 1252 bytes
-rw-r--r--images/emoji/1f933-1f3fb.pngbin0 -> 1166 bytes
-rw-r--r--images/emoji/1f933-1f3fc.pngbin0 -> 1167 bytes
-rw-r--r--images/emoji/1f933-1f3fd.pngbin0 -> 1154 bytes
-rw-r--r--images/emoji/1f933-1f3fe.pngbin0 -> 1153 bytes
-rw-r--r--images/emoji/1f933-1f3ff.pngbin0 -> 1148 bytes
-rw-r--r--images/emoji/1f933.pngbin0 -> 1160 bytes
-rw-r--r--images/emoji/1f934-1f3fb.pngbin0 -> 1622 bytes
-rw-r--r--images/emoji/1f934-1f3fc.pngbin0 -> 1621 bytes
-rw-r--r--images/emoji/1f934-1f3fd.pngbin0 -> 1623 bytes
-rw-r--r--images/emoji/1f934-1f3fe.pngbin0 -> 1619 bytes
-rw-r--r--images/emoji/1f934-1f3ff.pngbin0 -> 1616 bytes
-rw-r--r--images/emoji/1f934.pngbin0 -> 1616 bytes
-rw-r--r--images/emoji/1f935-1f3fb.pngbin0 -> 1307 bytes
-rw-r--r--images/emoji/1f935-1f3fc.pngbin0 -> 1307 bytes
-rw-r--r--images/emoji/1f935-1f3fd.pngbin0 -> 1307 bytes
-rw-r--r--images/emoji/1f935-1f3fe.pngbin0 -> 1307 bytes
-rw-r--r--images/emoji/1f935-1f3ff.pngbin0 -> 1302 bytes
-rw-r--r--images/emoji/1f935.pngbin0 -> 1307 bytes
-rw-r--r--images/emoji/1f936-1f3fb.pngbin0 -> 1999 bytes
-rw-r--r--images/emoji/1f936-1f3fc.pngbin0 -> 2006 bytes
-rw-r--r--images/emoji/1f936-1f3fd.pngbin0 -> 2018 bytes
-rw-r--r--images/emoji/1f936-1f3fe.pngbin0 -> 2016 bytes
-rw-r--r--images/emoji/1f936-1f3ff.pngbin0 -> 2016 bytes
-rw-r--r--images/emoji/1f936.pngbin0 -> 2206 bytes
-rw-r--r--images/emoji/1f937-1f3fb.pngbin0 -> 1676 bytes
-rw-r--r--images/emoji/1f937-1f3fc.pngbin0 -> 1675 bytes
-rw-r--r--images/emoji/1f937-1f3fd.pngbin0 -> 1679 bytes
-rw-r--r--images/emoji/1f937-1f3fe.pngbin0 -> 1641 bytes
-rw-r--r--images/emoji/1f937-1f3ff.pngbin0 -> 1635 bytes
-rw-r--r--images/emoji/1f937.pngbin0 -> 1671 bytes
-rw-r--r--images/emoji/1f938-1f3fb.pngbin0 -> 1234 bytes
-rw-r--r--images/emoji/1f938-1f3fc.pngbin0 -> 1235 bytes
-rw-r--r--images/emoji/1f938-1f3fd.pngbin0 -> 1229 bytes
-rw-r--r--images/emoji/1f938-1f3fe.pngbin0 -> 1227 bytes
-rw-r--r--images/emoji/1f938-1f3ff.pngbin0 -> 1214 bytes
-rw-r--r--images/emoji/1f938.pngbin0 -> 1233 bytes
-rw-r--r--images/emoji/1f939-1f3fb.pngbin0 -> 1171 bytes
-rw-r--r--images/emoji/1f939-1f3fc.pngbin0 -> 1160 bytes
-rw-r--r--images/emoji/1f939-1f3fd.pngbin0 -> 1170 bytes
-rw-r--r--images/emoji/1f939-1f3fe.pngbin0 -> 1167 bytes
-rw-r--r--images/emoji/1f939-1f3ff.pngbin0 -> 1161 bytes
-rw-r--r--images/emoji/1f939.pngbin0 -> 1165 bytes
-rw-r--r--images/emoji/1f93a.pngbin0 -> 1871 bytes
-rw-r--r--images/emoji/1f93b-1f3fb.pngbin0 -> 2045 bytes
-rw-r--r--images/emoji/1f93b-1f3fc.pngbin0 -> 2049 bytes
-rw-r--r--images/emoji/1f93b-1f3fd.pngbin0 -> 2039 bytes
-rw-r--r--images/emoji/1f93b-1f3fe.pngbin0 -> 2042 bytes
-rw-r--r--images/emoji/1f93b-1f3ff.pngbin0 -> 2035 bytes
-rw-r--r--images/emoji/1f93b.pngbin0 -> 2556 bytes
-rw-r--r--images/emoji/1f93c-1f3fb.pngbin0 -> 2563 bytes
-rw-r--r--images/emoji/1f93c-1f3fc.pngbin0 -> 2553 bytes
-rw-r--r--images/emoji/1f93c-1f3fd.pngbin0 -> 2541 bytes
-rw-r--r--images/emoji/1f93c-1f3fe.pngbin0 -> 2553 bytes
-rw-r--r--images/emoji/1f93c-1f3ff.pngbin0 -> 2542 bytes
-rw-r--r--images/emoji/1f93c.pngbin0 -> 1575 bytes
-rw-r--r--images/emoji/1f93d-1f3fb.pngbin0 -> 1758 bytes
-rw-r--r--images/emoji/1f93d-1f3fc.pngbin0 -> 1757 bytes
-rw-r--r--images/emoji/1f93d-1f3fd.pngbin0 -> 1760 bytes
-rw-r--r--images/emoji/1f93d-1f3fe.pngbin0 -> 1749 bytes
-rw-r--r--images/emoji/1f93d-1f3ff.pngbin0 -> 1749 bytes
-rw-r--r--images/emoji/1f93d.pngbin0 -> 1412 bytes
-rw-r--r--images/emoji/1f93e-1f3fb.pngbin0 -> 1646 bytes
-rw-r--r--images/emoji/1f93e-1f3fc.pngbin0 -> 1629 bytes
-rw-r--r--images/emoji/1f93e-1f3fd.pngbin0 -> 1639 bytes
-rw-r--r--images/emoji/1f93e-1f3fe.pngbin0 -> 1634 bytes
-rw-r--r--images/emoji/1f93e-1f3ff.pngbin0 -> 1606 bytes
-rw-r--r--images/emoji/1f93e.pngbin0 -> 1755 bytes
-rw-r--r--images/emoji/1f93f.pngbin0 -> 1636 bytes
-rw-r--r--images/emoji/1f940.pngbin0 -> 1349 bytes
-rw-r--r--images/emoji/1f942.pngbin0 -> 1986 bytes
-rw-r--r--images/emoji/1f943.pngbin0 -> 2312 bytes
-rw-r--r--images/emoji/1f944.pngbin0 -> 700 bytes
-rw-r--r--images/emoji/1f945.pngbin0 -> 1244 bytes
-rw-r--r--images/emoji/1f946.pngbin0 -> 828 bytes
-rw-r--r--images/emoji/1f947.pngbin0 -> 1421 bytes
-rw-r--r--images/emoji/1f948.pngbin0 -> 1514 bytes
-rw-r--r--images/emoji/1f949.pngbin0 -> 1531 bytes
-rw-r--r--images/emoji/1f950.pngbin0 -> 1315 bytes
-rw-r--r--images/emoji/1f951.pngbin0 -> 1523 bytes
-rw-r--r--images/emoji/1f952.pngbin0 -> 1358 bytes
-rw-r--r--images/emoji/1f953.pngbin0 -> 2148 bytes
-rw-r--r--images/emoji/1f954.pngbin0 -> 1247 bytes
-rw-r--r--images/emoji/1f955.pngbin0 -> 1236 bytes
-rw-r--r--images/emoji/1f956.pngbin0 -> 1556 bytes
-rw-r--r--images/emoji/1f957.pngbin0 -> 2398 bytes
-rw-r--r--images/emoji/1f958.pngbin0 -> 1738 bytes
-rw-r--r--images/emoji/1f959.pngbin0 -> 2160 bytes
-rw-r--r--images/emoji/1f95a.pngbin0 -> 710 bytes
-rw-r--r--images/emoji/1f95b.pngbin0 -> 1224 bytes
-rw-r--r--images/emoji/1f95c.pngbin0 -> 3266 bytes
-rw-r--r--images/emoji/1f95d.pngbin0 -> 1896 bytes
-rw-r--r--images/emoji/1f95e.pngbin0 -> 3661 bytes
-rw-r--r--images/emoji/1f960.pngbin0 -> 2051 bytes
-rw-r--r--images/emoji/1f961.pngbin0 -> 1344 bytes
-rw-r--r--images/emoji/1f980.pngbin0 -> 1488 bytes
-rw-r--r--images/emoji/1f981.pngbin0 -> 1728 bytes
-rw-r--r--images/emoji/1f982.pngbin0 -> 1503 bytes
-rw-r--r--images/emoji/1f983.pngbin0 -> 1240 bytes
-rw-r--r--images/emoji/1f984.pngbin0 -> 2107 bytes
-rw-r--r--images/emoji/1f985.pngbin0 -> 2222 bytes
-rw-r--r--images/emoji/1f986.pngbin0 -> 1729 bytes
-rw-r--r--images/emoji/1f987.pngbin0 -> 1194 bytes
-rw-r--r--images/emoji/1f988.pngbin0 -> 1811 bytes
-rw-r--r--images/emoji/1f989.pngbin0 -> 2046 bytes
-rw-r--r--images/emoji/1f98a.pngbin0 -> 1557 bytes
-rw-r--r--images/emoji/1f98b.pngbin0 -> 1981 bytes
-rw-r--r--images/emoji/1f98c.pngbin0 -> 1608 bytes
-rw-r--r--images/emoji/1f98d.pngbin0 -> 1096 bytes
-rw-r--r--images/emoji/1f98e.pngbin0 -> 1709 bytes
-rw-r--r--images/emoji/1f98f.pngbin0 -> 1558 bytes
-rw-r--r--images/emoji/1f990.pngbin0 -> 1376 bytes
-rw-r--r--images/emoji/1f991.pngbin0 -> 1395 bytes
-rw-r--r--images/emoji/1f9c0.pngbin0 -> 1697 bytes
-rw-r--r--images/emoji/203c.pngbin0 -> 390 bytes
-rw-r--r--images/emoji/2049.pngbin0 -> 601 bytes
-rw-r--r--images/emoji/2122.pngbin0 -> 300 bytes
-rw-r--r--images/emoji/2139.pngbin0 -> 506 bytes
-rw-r--r--images/emoji/2194.pngbin0 -> 495 bytes
-rw-r--r--images/emoji/2195.pngbin0 -> 474 bytes
-rw-r--r--images/emoji/2196.pngbin0 -> 521 bytes
-rw-r--r--images/emoji/2197.pngbin0 -> 524 bytes
-rw-r--r--images/emoji/2198.pngbin0 -> 526 bytes
-rw-r--r--images/emoji/2199.pngbin0 -> 520 bytes
-rw-r--r--images/emoji/21a9.pngbin0 -> 643 bytes
-rw-r--r--images/emoji/21aa.pngbin0 -> 644 bytes
-rw-r--r--images/emoji/231a.pngbin0 -> 785 bytes
-rw-r--r--images/emoji/231b.pngbin0 -> 800 bytes
-rw-r--r--images/emoji/2328.pngbin0 -> 429 bytes
-rw-r--r--images/emoji/23cf.pngbin0 -> 548 bytes
-rw-r--r--images/emoji/23e9.pngbin0 -> 523 bytes
-rw-r--r--images/emoji/23ea.pngbin0 -> 523 bytes
-rw-r--r--images/emoji/23eb.pngbin0 -> 535 bytes
-rw-r--r--images/emoji/23ec.pngbin0 -> 543 bytes
-rw-r--r--images/emoji/23ed.pngbin0 -> 551 bytes
-rw-r--r--images/emoji/23ee.pngbin0 -> 549 bytes
-rw-r--r--images/emoji/23ef.pngbin0 -> 509 bytes
-rw-r--r--images/emoji/23f0.pngbin0 -> 1044 bytes
-rw-r--r--images/emoji/23f1.pngbin0 -> 1330 bytes
-rw-r--r--images/emoji/23f2.pngbin0 -> 1897 bytes
-rw-r--r--images/emoji/23f3.pngbin0 -> 847 bytes
-rw-r--r--images/emoji/23f8.pngbin0 -> 395 bytes
-rw-r--r--images/emoji/23f9.pngbin0 -> 385 bytes
-rw-r--r--images/emoji/23fa.pngbin0 -> 475 bytes
-rw-r--r--images/emoji/24c2.pngbin0 -> 500 bytes
-rw-r--r--images/emoji/25aa.pngbin0 -> 108 bytes
-rw-r--r--images/emoji/25ab.pngbin0 -> 108 bytes
-rw-r--r--images/emoji/25b6.pngbin0 -> 429 bytes
-rw-r--r--images/emoji/25c0.pngbin0 -> 429 bytes
-rw-r--r--images/emoji/25fb.pngbin0 -> 108 bytes
-rw-r--r--images/emoji/25fc.pngbin0 -> 108 bytes
-rw-r--r--images/emoji/25fd.pngbin0 -> 110 bytes
-rw-r--r--images/emoji/25fe.pngbin0 -> 110 bytes
-rw-r--r--images/emoji/2600.pngbin0 -> 746 bytes
-rw-r--r--images/emoji/2601.pngbin0 -> 626 bytes
-rw-r--r--images/emoji/2602.pngbin0 -> 897 bytes
-rw-r--r--images/emoji/2603.pngbin0 -> 2176 bytes
-rw-r--r--images/emoji/2604.pngbin0 -> 1821 bytes
-rw-r--r--images/emoji/260e.pngbin0 -> 1761 bytes
-rw-r--r--images/emoji/2611.pngbin0 -> 639 bytes
-rw-r--r--images/emoji/2614.pngbin0 -> 1229 bytes
-rw-r--r--images/emoji/2615.pngbin0 -> 1679 bytes
-rw-r--r--images/emoji/2618.pngbin0 -> 1023 bytes
-rw-r--r--images/emoji/261d-1f3fb.pngbin0 -> 820 bytes
-rw-r--r--images/emoji/261d-1f3fc.pngbin0 -> 820 bytes
-rw-r--r--images/emoji/261d-1f3fd.pngbin0 -> 820 bytes
-rw-r--r--images/emoji/261d-1f3fe.pngbin0 -> 820 bytes
-rw-r--r--images/emoji/261d-1f3ff.pngbin0 -> 820 bytes
-rw-r--r--images/emoji/261d.pngbin0 -> 819 bytes
-rw-r--r--images/emoji/2620.pngbin0 -> 726 bytes
-rw-r--r--images/emoji/2622.pngbin0 -> 858 bytes
-rw-r--r--images/emoji/2623.pngbin0 -> 794 bytes
-rw-r--r--images/emoji/2626.pngbin0 -> 239 bytes
-rw-r--r--images/emoji/262a.pngbin0 -> 490 bytes
-rw-r--r--images/emoji/262e.pngbin0 -> 933 bytes
-rw-r--r--images/emoji/262f.pngbin0 -> 776 bytes
-rw-r--r--images/emoji/2638.pngbin0 -> 666 bytes
-rw-r--r--images/emoji/2639.pngbin0 -> 589 bytes
-rw-r--r--images/emoji/263a.pngbin0 -> 636 bytes
-rw-r--r--images/emoji/2648.pngbin0 -> 711 bytes
-rw-r--r--images/emoji/2649.pngbin0 -> 701 bytes
-rw-r--r--images/emoji/264a.pngbin0 -> 547 bytes
-rw-r--r--images/emoji/264b.pngbin0 -> 729 bytes
-rw-r--r--images/emoji/264c.pngbin0 -> 745 bytes
-rw-r--r--images/emoji/264d.pngbin0 -> 618 bytes
-rw-r--r--images/emoji/264e.pngbin0 -> 657 bytes
-rw-r--r--images/emoji/264f.pngbin0 -> 612 bytes
-rw-r--r--images/emoji/2650.pngbin0 -> 602 bytes
-rw-r--r--images/emoji/2651.pngbin0 -> 688 bytes
-rw-r--r--images/emoji/2652.pngbin0 -> 648 bytes
-rw-r--r--images/emoji/2653.pngbin0 -> 678 bytes
-rw-r--r--images/emoji/2660.pngbin0 -> 454 bytes
-rw-r--r--images/emoji/2663.pngbin0 -> 458 bytes
-rw-r--r--images/emoji/2665.pngbin0 -> 449 bytes
-rw-r--r--images/emoji/2666.pngbin0 -> 247 bytes
-rw-r--r--images/emoji/2668.pngbin0 -> 733 bytes
-rw-r--r--images/emoji/267b.pngbin0 -> 914 bytes
-rw-r--r--images/emoji/267f.pngbin0 -> 683 bytes
-rw-r--r--images/emoji/2692.pngbin0 -> 1068 bytes
-rw-r--r--images/emoji/2693.pngbin0 -> 779 bytes
-rw-r--r--images/emoji/2694.pngbin0 -> 1591 bytes
-rw-r--r--images/emoji/2696.pngbin0 -> 1181 bytes
-rw-r--r--images/emoji/2697.pngbin0 -> 953 bytes
-rw-r--r--images/emoji/2699.pngbin0 -> 747 bytes
-rw-r--r--images/emoji/269b.pngbin0 -> 912 bytes
-rw-r--r--images/emoji/269c.pngbin0 -> 632 bytes
-rw-r--r--images/emoji/26a0.pngbin0 -> 565 bytes
-rw-r--r--images/emoji/26a1.pngbin0 -> 413 bytes
-rw-r--r--images/emoji/26aa.pngbin0 -> 351 bytes
-rw-r--r--images/emoji/26ab.pngbin0 -> 374 bytes
-rw-r--r--images/emoji/26b0.pngbin0 -> 2195 bytes
-rw-r--r--images/emoji/26b1.pngbin0 -> 742 bytes
-rw-r--r--images/emoji/26bd.pngbin0 -> 1034 bytes
-rw-r--r--images/emoji/26be.pngbin0 -> 1185 bytes
-rw-r--r--images/emoji/26c4.pngbin0 -> 1481 bytes
-rw-r--r--images/emoji/26c5.pngbin0 -> 977 bytes
-rw-r--r--images/emoji/26c8.pngbin0 -> 1020 bytes
-rw-r--r--images/emoji/26ce.pngbin0 -> 723 bytes
-rw-r--r--images/emoji/26cf.pngbin0 -> 1023 bytes
-rw-r--r--images/emoji/26d1.pngbin0 -> 1014 bytes
-rw-r--r--images/emoji/26d3.pngbin0 -> 708 bytes
-rw-r--r--images/emoji/26d4.pngbin0 -> 377 bytes
-rw-r--r--images/emoji/26e9.pngbin0 -> 579 bytes
-rw-r--r--images/emoji/26ea.pngbin0 -> 1302 bytes
-rw-r--r--images/emoji/26f0.pngbin0 -> 1409 bytes
-rw-r--r--images/emoji/26f1.pngbin0 -> 1488 bytes
-rw-r--r--images/emoji/26f2.pngbin0 -> 1768 bytes
-rw-r--r--images/emoji/26f3.pngbin0 -> 823 bytes
-rw-r--r--images/emoji/26f4.pngbin0 -> 528 bytes
-rw-r--r--images/emoji/26f5.pngbin0 -> 1274 bytes
-rw-r--r--images/emoji/26f7.pngbin0 -> 1539 bytes
-rw-r--r--images/emoji/26f8.pngbin0 -> 1576 bytes
-rw-r--r--images/emoji/26f9-1f3fb.pngbin0 -> 1493 bytes
-rw-r--r--images/emoji/26f9-1f3fc.pngbin0 -> 1493 bytes
-rw-r--r--images/emoji/26f9-1f3fd.pngbin0 -> 1492 bytes
-rw-r--r--images/emoji/26f9-1f3fe.pngbin0 -> 1494 bytes
-rw-r--r--images/emoji/26f9-1f3ff.pngbin0 -> 1479 bytes
-rw-r--r--images/emoji/26f9.pngbin0 -> 1493 bytes
-rw-r--r--images/emoji/26fa.pngbin0 -> 1684 bytes
-rw-r--r--images/emoji/26fd.pngbin0 -> 864 bytes
-rw-r--r--images/emoji/2702.pngbin0 -> 937 bytes
-rw-r--r--images/emoji/2705.pngbin0 -> 547 bytes
-rw-r--r--images/emoji/2708.pngbin0 -> 1152 bytes
-rw-r--r--images/emoji/2709.pngbin0 -> 916 bytes
-rw-r--r--images/emoji/270a-1f3fb.pngbin0 -> 1014 bytes
-rw-r--r--images/emoji/270a-1f3fc.pngbin0 -> 1014 bytes
-rw-r--r--images/emoji/270a-1f3fd.pngbin0 -> 1014 bytes
-rw-r--r--images/emoji/270a-1f3fe.pngbin0 -> 1014 bytes
-rw-r--r--images/emoji/270a-1f3ff.pngbin0 -> 1014 bytes
-rw-r--r--images/emoji/270a.pngbin0 -> 1014 bytes
-rw-r--r--images/emoji/270b-1f3fb.pngbin0 -> 791 bytes
-rw-r--r--images/emoji/270b-1f3fc.pngbin0 -> 791 bytes
-rw-r--r--images/emoji/270b-1f3fd.pngbin0 -> 791 bytes
-rw-r--r--images/emoji/270b-1f3fe.pngbin0 -> 791 bytes
-rw-r--r--images/emoji/270b-1f3ff.pngbin0 -> 791 bytes
-rw-r--r--images/emoji/270b.pngbin0 -> 791 bytes
-rw-r--r--images/emoji/270c-1f3fb.pngbin0 -> 1009 bytes
-rw-r--r--images/emoji/270c-1f3fc.pngbin0 -> 1009 bytes
-rw-r--r--images/emoji/270c-1f3fd.pngbin0 -> 1009 bytes
-rw-r--r--images/emoji/270c-1f3fe.pngbin0 -> 1009 bytes
-rw-r--r--images/emoji/270c-1f3ff.pngbin0 -> 1009 bytes
-rw-r--r--images/emoji/270c.pngbin0 -> 1009 bytes
-rw-r--r--images/emoji/270d-1f3fb.pngbin0 -> 988 bytes
-rw-r--r--images/emoji/270d-1f3fc.pngbin0 -> 987 bytes
-rw-r--r--images/emoji/270d-1f3fd.pngbin0 -> 977 bytes
-rw-r--r--images/emoji/270d-1f3fe.pngbin0 -> 973 bytes
-rw-r--r--images/emoji/270d-1f3ff.pngbin0 -> 970 bytes
-rw-r--r--images/emoji/270d.pngbin0 -> 1001 bytes
-rw-r--r--images/emoji/270f.pngbin0 -> 654 bytes
-rw-r--r--images/emoji/2712.pngbin0 -> 620 bytes
-rw-r--r--images/emoji/2714.pngbin0 -> 438 bytes
-rw-r--r--images/emoji/2716.pngbin0 -> 298 bytes
-rw-r--r--images/emoji/271d.pngbin0 -> 408 bytes
-rw-r--r--images/emoji/2721.pngbin0 -> 491 bytes
-rw-r--r--images/emoji/2728.pngbin0 -> 651 bytes
-rw-r--r--images/emoji/2733.pngbin0 -> 493 bytes
-rw-r--r--images/emoji/2734.pngbin0 -> 493 bytes
-rw-r--r--images/emoji/2744.pngbin0 -> 691 bytes
-rw-r--r--images/emoji/2747.pngbin0 -> 663 bytes
-rw-r--r--images/emoji/274c.pngbin0 -> 298 bytes
-rw-r--r--images/emoji/274e.pngbin0 -> 370 bytes
-rw-r--r--images/emoji/2753.pngbin0 -> 449 bytes
-rw-r--r--images/emoji/2754.pngbin0 -> 449 bytes
-rw-r--r--images/emoji/2755.pngbin0 -> 354 bytes
-rw-r--r--images/emoji/2757.pngbin0 -> 354 bytes
-rw-r--r--images/emoji/2763.pngbin0 -> 471 bytes
-rw-r--r--images/emoji/2764.pngbin0 -> 435 bytes
-rw-r--r--images/emoji/2795.pngbin0 -> 115 bytes
-rw-r--r--images/emoji/2796.pngbin0 -> 108 bytes
-rw-r--r--images/emoji/2797.pngbin0 -> 204 bytes
-rw-r--r--images/emoji/27a1.pngbin0 -> 468 bytes
-rw-r--r--images/emoji/27b0.pngbin0 -> 545 bytes
-rw-r--r--images/emoji/27bf.pngbin0 -> 550 bytes
-rw-r--r--images/emoji/2934.pngbin0 -> 559 bytes
-rw-r--r--images/emoji/2935.pngbin0 -> 563 bytes
-rw-r--r--images/emoji/2b05.pngbin0 -> 471 bytes
-rw-r--r--images/emoji/2b06.pngbin0 -> 507 bytes
-rw-r--r--images/emoji/2b07.pngbin0 -> 512 bytes
-rw-r--r--images/emoji/2b1b.pngbin0 -> 110 bytes
-rw-r--r--images/emoji/2b1c.pngbin0 -> 110 bytes
-rw-r--r--images/emoji/2b50.pngbin0 -> 456 bytes
-rw-r--r--images/emoji/2b55.pngbin0 -> 475 bytes
-rw-r--r--images/emoji/3030.pngbin0 -> 359 bytes
-rw-r--r--images/emoji/303d.pngbin0 -> 521 bytes
-rw-r--r--images/emoji/3297.pngbin0 -> 729 bytes
-rw-r--r--images/emoji/3299.pngbin0 -> 857 bytes
-rw-r--r--images/emoji/README2
-rw-r--r--include/BaseObject.php38
-rw-r--r--include/Contact.php637
-rw-r--r--include/ConversationObject.php225
-rwxr-xr-xinclude/ITemplateEngine.php10
-rw-r--r--include/Import/import_diaspora.php1
-rw-r--r--include/ItemObject.php773
-rw-r--r--include/PermissionDescription.php12
-rw-r--r--include/ProtoDriver.php43
-rw-r--r--include/account.php11
-rw-r--r--include/acl_selectors.php16
-rw-r--r--include/activities.php3
-rw-r--r--include/api.php48
-rw-r--r--include/apps.php658
-rw-r--r--include/attach.php30
-rw-r--r--include/auth.php16
-rw-r--r--include/bb2diaspora.php2
-rw-r--r--include/bbcode.php23
-rw-r--r--include/channel.php1826
-rw-r--r--include/chat.php262
-rw-r--r--include/checksites.php62
-rw-r--r--include/cli_startup.php31
-rw-r--r--include/cli_suggest.php22
-rw-r--r--include/config.php717
-rw-r--r--include/connections.php614
-rw-r--r--include/contact_selectors.php97
-rw-r--r--include/contact_widgets.php12
-rw-r--r--include/conversation.php37
-rw-r--r--include/cronhooks.php23
-rw-r--r--include/crypto.php24
-rw-r--r--include/datetime.php1
-rwxr-xr-xinclude/dba/dba_driver.php187
-rwxr-xr-xinclude/dba/dba_pdo.php95
-rw-r--r--include/deliver.php87
-rw-r--r--include/deliver_hooks.php29
-rw-r--r--include/dir_fns.php8
-rw-r--r--include/directory.php113
-rw-r--r--include/enotify.php652
-rw-r--r--include/environment.php2
-rw-r--r--include/event.php234
-rw-r--r--include/expire.php98
-rw-r--r--include/externals.php103
-rw-r--r--include/features.php1
-rw-r--r--include/feedutils.php1315
-rw-r--r--include/follow.php11
-rw-r--r--include/gprobe.php38
-rw-r--r--include/group.php20
-rw-r--r--include/help.php2
-rw-r--r--include/hubloc.php2
-rw-r--r--include/identity.php1949
-rw-r--r--include/import.php82
-rwxr-xr-xinclude/importdoc.php41
-rwxr-xr-xinclude/items.php1469
-rw-r--r--include/language.php12
-rw-r--r--include/message.php2
-rw-r--r--include/network.php64
-rw-r--r--include/notifier.php664
-rw-r--r--include/notify.php37
-rw-r--r--include/oauth.php12
-rwxr-xr-xinclude/oembed.php2
-rw-r--r--include/onedirsync.php82
-rw-r--r--include/onepoll.php159
-rw-r--r--include/photo/photo_driver.php56
-rw-r--r--include/photos.php60
-rwxr-xr-xinclude/plugin.php56
-rw-r--r--include/poller.php436
-rw-r--r--include/profile_selectors.php110
-rw-r--r--include/queue.php95
-rw-r--r--include/ratenotif.php119
-rw-r--r--include/selectors.php154
-rw-r--r--include/sharedwithme.php4
-rwxr-xr-xinclude/smarty.php114
-rw-r--r--include/socgraph.php10
-rw-r--r--include/taxonomy.php18
-rwxr-xr-xinclude/template_processor.php307
-rw-r--r--include/text.php157
-rw-r--r--include/widgets.php119
-rw-r--r--include/wiki.php399
-rw-r--r--include/zot.php120
-rwxr-xr-xindex.php179
-rw-r--r--install/INSTALL.txt17
-rwxr-xr-xinstall/htconfig.sample.php4
-rw-r--r--install/schema_mysql.sql153
-rw-r--r--install/schema_postgres.sql151
-rw-r--r--install/update.php159
-rw-r--r--library/ace/ace.js11
-rw-r--r--library/ace/ext-beautify.js5
-rw-r--r--library/ace/ext-chromevox.js5
-rw-r--r--library/ace/ext-elastic_tabstops_lite.js5
-rw-r--r--library/ace/ext-emmet.js5
-rw-r--r--library/ace/ext-error_marker.js5
-rw-r--r--library/ace/ext-keybinding_menu.js5
-rw-r--r--library/ace/ext-language_tools.js5
-rw-r--r--library/ace/ext-linking.js5
-rw-r--r--library/ace/ext-modelist.js5
-rw-r--r--library/ace/ext-old_ie.js5
-rw-r--r--library/ace/ext-searchbox.js5
-rw-r--r--library/ace/ext-settings_menu.js5
-rw-r--r--library/ace/ext-spellcheck.js5
-rw-r--r--library/ace/ext-split.js5
-rw-r--r--library/ace/ext-static_highlight.js5
-rw-r--r--library/ace/ext-statusbar.js5
-rw-r--r--library/ace/ext-textarea.js5
-rw-r--r--library/ace/ext-themelist.js5
-rw-r--r--library/ace/ext-whitespace.js5
-rw-r--r--library/ace/keybinding-emacs.js1
-rw-r--r--library/ace/keybinding-vim.js1
-rw-r--r--library/ace/mode-abap.js1
-rw-r--r--library/ace/mode-abc.js1
-rw-r--r--library/ace/mode-actionscript.js1
-rw-r--r--library/ace/mode-ada.js1
-rw-r--r--library/ace/mode-apache_conf.js1
-rw-r--r--library/ace/mode-applescript.js1
-rw-r--r--library/ace/mode-asciidoc.js1
-rw-r--r--library/ace/mode-assembly_x86.js1
-rw-r--r--library/ace/mode-autohotkey.js1
-rw-r--r--library/ace/mode-batchfile.js1
-rw-r--r--library/ace/mode-c9search.js1
-rw-r--r--library/ace/mode-c_cpp.js1
-rw-r--r--library/ace/mode-cirru.js1
-rw-r--r--library/ace/mode-clojure.js1
-rw-r--r--library/ace/mode-cobol.js1
-rw-r--r--library/ace/mode-coffee.js1
-rw-r--r--library/ace/mode-coldfusion.js1
-rw-r--r--library/ace/mode-csharp.js1
-rw-r--r--library/ace/mode-css.js1
-rw-r--r--library/ace/mode-curly.js1
-rw-r--r--library/ace/mode-d.js1
-rw-r--r--library/ace/mode-dart.js1
-rw-r--r--library/ace/mode-diff.js1
-rw-r--r--library/ace/mode-django.js1
-rw-r--r--library/ace/mode-dockerfile.js1
-rw-r--r--library/ace/mode-dot.js1
-rw-r--r--library/ace/mode-eiffel.js1
-rw-r--r--library/ace/mode-ejs.js1
-rw-r--r--library/ace/mode-elixir.js1
-rw-r--r--library/ace/mode-elm.js1
-rw-r--r--library/ace/mode-erlang.js1
-rw-r--r--library/ace/mode-forth.js1
-rw-r--r--library/ace/mode-fortran.js1
-rw-r--r--library/ace/mode-ftl.js1
-rw-r--r--library/ace/mode-gcode.js1
-rw-r--r--library/ace/mode-gherkin.js1
-rw-r--r--library/ace/mode-gitignore.js1
-rw-r--r--library/ace/mode-glsl.js1
-rw-r--r--library/ace/mode-gobstones.js1
-rw-r--r--library/ace/mode-golang.js1
-rw-r--r--library/ace/mode-groovy.js1
-rw-r--r--library/ace/mode-haml.js1
-rw-r--r--library/ace/mode-handlebars.js1
-rw-r--r--library/ace/mode-haskell.js1
-rw-r--r--library/ace/mode-haxe.js1
-rw-r--r--library/ace/mode-html.js1
-rw-r--r--library/ace/mode-html_elixir.js1
-rw-r--r--library/ace/mode-html_ruby.js1
-rw-r--r--library/ace/mode-ini.js1
-rw-r--r--library/ace/mode-io.js1
-rw-r--r--library/ace/mode-jack.js1
-rw-r--r--library/ace/mode-jade.js1
-rw-r--r--library/ace/mode-java.js1
-rw-r--r--library/ace/mode-javascript.js1
-rw-r--r--library/ace/mode-json.js1
-rw-r--r--library/ace/mode-jsoniq.js1
-rw-r--r--library/ace/mode-jsp.js1
-rw-r--r--library/ace/mode-jsx.js1
-rw-r--r--library/ace/mode-julia.js1
-rw-r--r--library/ace/mode-latex.js1
-rw-r--r--library/ace/mode-lean.js1
-rw-r--r--library/ace/mode-less.js1
-rw-r--r--library/ace/mode-liquid.js1
-rw-r--r--library/ace/mode-lisp.js1
-rw-r--r--library/ace/mode-live_script.js1
-rw-r--r--library/ace/mode-livescript.js1
-rw-r--r--library/ace/mode-logiql.js1
-rw-r--r--library/ace/mode-lsl.js1
-rw-r--r--library/ace/mode-lua.js1
-rw-r--r--library/ace/mode-luapage.js1
-rw-r--r--library/ace/mode-lucene.js1
-rw-r--r--library/ace/mode-makefile.js1
-rw-r--r--library/ace/mode-markdown.js1
-rw-r--r--library/ace/mode-mask.js1
-rw-r--r--library/ace/mode-matlab.js1
-rw-r--r--library/ace/mode-maze.js1
-rw-r--r--library/ace/mode-mel.js1
-rw-r--r--library/ace/mode-mips_assembler.js1
-rw-r--r--library/ace/mode-mipsassembler.js1
-rw-r--r--library/ace/mode-mushcode.js1
-rw-r--r--library/ace/mode-mysql.js1
-rw-r--r--library/ace/mode-nix.js1
-rw-r--r--library/ace/mode-nsis.js1
-rw-r--r--library/ace/mode-objectivec.js1
-rw-r--r--library/ace/mode-ocaml.js1
-rw-r--r--library/ace/mode-pascal.js1
-rw-r--r--library/ace/mode-perl.js1
-rw-r--r--library/ace/mode-pgsql.js1
-rw-r--r--library/ace/mode-php.js1
-rw-r--r--library/ace/mode-plain_text.js1
-rw-r--r--library/ace/mode-powershell.js1
-rw-r--r--library/ace/mode-praat.js1
-rw-r--r--library/ace/mode-prolog.js1
-rw-r--r--library/ace/mode-properties.js1
-rw-r--r--library/ace/mode-protobuf.js1
-rw-r--r--library/ace/mode-python.js1
-rw-r--r--library/ace/mode-r.js1
-rw-r--r--library/ace/mode-razor.js1
-rw-r--r--library/ace/mode-rdoc.js1
-rw-r--r--library/ace/mode-rhtml.js1
-rw-r--r--library/ace/mode-rst.js1
-rw-r--r--library/ace/mode-ruby.js1
-rw-r--r--library/ace/mode-rust.js1
-rw-r--r--library/ace/mode-sass.js1
-rw-r--r--library/ace/mode-scad.js1
-rw-r--r--library/ace/mode-scala.js1
-rw-r--r--library/ace/mode-scheme.js1
-rw-r--r--library/ace/mode-scss.js1
-rw-r--r--library/ace/mode-sh.js1
-rw-r--r--library/ace/mode-sjs.js1
-rw-r--r--library/ace/mode-smarty.js1
-rw-r--r--library/ace/mode-snippets.js1
-rw-r--r--library/ace/mode-soy_template.js1
-rw-r--r--library/ace/mode-space.js1
-rw-r--r--library/ace/mode-sql.js1
-rw-r--r--library/ace/mode-sqlserver.js1
-rw-r--r--library/ace/mode-stylus.js1
-rw-r--r--library/ace/mode-svg.js1
-rw-r--r--library/ace/mode-swift.js1
-rw-r--r--library/ace/mode-swig.js1
-rw-r--r--library/ace/mode-tcl.js1
-rw-r--r--library/ace/mode-tex.js1
-rw-r--r--library/ace/mode-text.js0
-rw-r--r--library/ace/mode-textile.js1
-rw-r--r--library/ace/mode-toml.js1
-rw-r--r--library/ace/mode-twig.js1
-rw-r--r--library/ace/mode-typescript.js1
-rw-r--r--library/ace/mode-vala.js1
-rw-r--r--library/ace/mode-vbscript.js1
-rw-r--r--library/ace/mode-velocity.js1
-rw-r--r--library/ace/mode-verilog.js1
-rw-r--r--library/ace/mode-vhdl.js1
-rw-r--r--library/ace/mode-wollok.js1
-rw-r--r--library/ace/mode-xml.js1
-rw-r--r--library/ace/mode-xquery.js1
-rw-r--r--library/ace/mode-yaml.js1
-rw-r--r--library/ace/snippets/abap.js1
-rw-r--r--library/ace/snippets/abc.js1
-rw-r--r--library/ace/snippets/actionscript.js1
-rw-r--r--library/ace/snippets/ada.js1
-rw-r--r--library/ace/snippets/apache_conf.js1
-rw-r--r--library/ace/snippets/applescript.js1
-rw-r--r--library/ace/snippets/asciidoc.js1
-rw-r--r--library/ace/snippets/assembly_x86.js1
-rw-r--r--library/ace/snippets/autohotkey.js1
-rw-r--r--library/ace/snippets/batchfile.js1
-rw-r--r--library/ace/snippets/c9search.js1
-rw-r--r--library/ace/snippets/c_cpp.js1
-rw-r--r--library/ace/snippets/cirru.js1
-rw-r--r--library/ace/snippets/clojure.js1
-rw-r--r--library/ace/snippets/cobol.js1
-rw-r--r--library/ace/snippets/coffee.js1
-rw-r--r--library/ace/snippets/coldfusion.js1
-rw-r--r--library/ace/snippets/csharp.js1
-rw-r--r--library/ace/snippets/css.js1
-rw-r--r--library/ace/snippets/curly.js1
-rw-r--r--library/ace/snippets/d.js1
-rw-r--r--library/ace/snippets/dart.js1
-rw-r--r--library/ace/snippets/diff.js1
-rw-r--r--library/ace/snippets/django.js1
-rw-r--r--library/ace/snippets/dockerfile.js1
-rw-r--r--library/ace/snippets/dot.js1
-rw-r--r--library/ace/snippets/eiffel.js1
-rw-r--r--library/ace/snippets/ejs.js1
-rw-r--r--library/ace/snippets/elixir.js1
-rw-r--r--library/ace/snippets/elm.js1
-rw-r--r--library/ace/snippets/erlang.js1
-rw-r--r--library/ace/snippets/forth.js1
-rw-r--r--library/ace/snippets/fortran.js1
-rw-r--r--library/ace/snippets/ftl.js1
-rw-r--r--library/ace/snippets/gcode.js1
-rw-r--r--library/ace/snippets/gherkin.js1
-rw-r--r--library/ace/snippets/gitignore.js1
-rw-r--r--library/ace/snippets/glsl.js1
-rw-r--r--library/ace/snippets/gobstones.js1
-rw-r--r--library/ace/snippets/golang.js1
-rw-r--r--library/ace/snippets/groovy.js1
-rw-r--r--library/ace/snippets/haml.js1
-rw-r--r--library/ace/snippets/handlebars.js1
-rw-r--r--library/ace/snippets/haskell.js1
-rw-r--r--library/ace/snippets/haxe.js1
-rw-r--r--library/ace/snippets/html.js1
-rw-r--r--library/ace/snippets/html_elixir.js1
-rw-r--r--library/ace/snippets/html_ruby.js1
-rw-r--r--library/ace/snippets/ini.js1
-rw-r--r--library/ace/snippets/io.js1
-rw-r--r--library/ace/snippets/jack.js1
-rw-r--r--library/ace/snippets/jade.js1
-rw-r--r--library/ace/snippets/java.js1
-rw-r--r--library/ace/snippets/javascript.js1
-rw-r--r--library/ace/snippets/json.js1
-rw-r--r--library/ace/snippets/jsoniq.js1
-rw-r--r--library/ace/snippets/jsp.js1
-rw-r--r--library/ace/snippets/jsx.js1
-rw-r--r--library/ace/snippets/julia.js1
-rw-r--r--library/ace/snippets/latex.js1
-rw-r--r--library/ace/snippets/lean.js1
-rw-r--r--library/ace/snippets/less.js1
-rw-r--r--library/ace/snippets/liquid.js1
-rw-r--r--library/ace/snippets/lisp.js1
-rw-r--r--library/ace/snippets/live_script.js1
-rw-r--r--library/ace/snippets/livescript.js1
-rw-r--r--library/ace/snippets/logiql.js1
-rw-r--r--library/ace/snippets/lsl.js1
-rw-r--r--library/ace/snippets/lua.js1
-rw-r--r--library/ace/snippets/luapage.js1
-rw-r--r--library/ace/snippets/lucene.js1
-rw-r--r--library/ace/snippets/makefile.js1
-rw-r--r--library/ace/snippets/markdown.js1
-rw-r--r--library/ace/snippets/mask.js1
-rw-r--r--library/ace/snippets/matlab.js1
-rw-r--r--library/ace/snippets/maze.js1
-rw-r--r--library/ace/snippets/mel.js1
-rw-r--r--library/ace/snippets/mips_assembler.js1
-rw-r--r--library/ace/snippets/mipsassembler.js1
-rw-r--r--library/ace/snippets/mushcode.js1
-rw-r--r--library/ace/snippets/mysql.js1
-rw-r--r--library/ace/snippets/nix.js1
-rw-r--r--library/ace/snippets/nsis.js1
-rw-r--r--library/ace/snippets/objectivec.js1
-rw-r--r--library/ace/snippets/ocaml.js1
-rw-r--r--library/ace/snippets/pascal.js1
-rw-r--r--library/ace/snippets/perl.js1
-rw-r--r--library/ace/snippets/pgsql.js1
-rw-r--r--library/ace/snippets/php.js1
-rw-r--r--library/ace/snippets/plain_text.js1
-rw-r--r--library/ace/snippets/powershell.js1
-rw-r--r--library/ace/snippets/praat.js1
-rw-r--r--library/ace/snippets/prolog.js1
-rw-r--r--library/ace/snippets/properties.js1
-rw-r--r--library/ace/snippets/protobuf.js1
-rw-r--r--library/ace/snippets/python.js1
-rw-r--r--library/ace/snippets/r.js1
-rw-r--r--library/ace/snippets/razor.js1
-rw-r--r--library/ace/snippets/rdoc.js1
-rw-r--r--library/ace/snippets/rhtml.js1
-rw-r--r--library/ace/snippets/rst.js1
-rw-r--r--library/ace/snippets/ruby.js1
-rw-r--r--library/ace/snippets/rust.js1
-rw-r--r--library/ace/snippets/sass.js1
-rw-r--r--library/ace/snippets/scad.js1
-rw-r--r--library/ace/snippets/scala.js1
-rw-r--r--library/ace/snippets/scheme.js1
-rw-r--r--library/ace/snippets/scss.js1
-rw-r--r--library/ace/snippets/sh.js1
-rw-r--r--library/ace/snippets/sjs.js1
-rw-r--r--library/ace/snippets/smarty.js1
-rw-r--r--library/ace/snippets/snippets.js1
-rw-r--r--library/ace/snippets/soy_template.js1
-rw-r--r--library/ace/snippets/space.js1
-rw-r--r--library/ace/snippets/sql.js1
-rw-r--r--library/ace/snippets/sqlserver.js1
-rw-r--r--library/ace/snippets/stylus.js1
-rw-r--r--library/ace/snippets/svg.js1
-rw-r--r--library/ace/snippets/swift.js1
-rw-r--r--library/ace/snippets/swig.js1
-rw-r--r--library/ace/snippets/tcl.js1
-rw-r--r--library/ace/snippets/tex.js1
-rw-r--r--library/ace/snippets/text.js1
-rw-r--r--library/ace/snippets/textile.js1
-rw-r--r--library/ace/snippets/toml.js1
-rw-r--r--library/ace/snippets/twig.js1
-rw-r--r--library/ace/snippets/typescript.js1
-rw-r--r--library/ace/snippets/vala.js1
-rw-r--r--library/ace/snippets/vbscript.js1
-rw-r--r--library/ace/snippets/velocity.js1
-rw-r--r--library/ace/snippets/verilog.js1
-rw-r--r--library/ace/snippets/vhdl.js1
-rw-r--r--library/ace/snippets/wollok.js1
-rw-r--r--library/ace/snippets/xml.js1
-rw-r--r--library/ace/snippets/xquery.js1
-rw-r--r--library/ace/snippets/yaml.js1
-rw-r--r--library/ace/theme-ambiance.js1
-rw-r--r--library/ace/theme-chaos.js1
-rw-r--r--library/ace/theme-chrome.js1
-rw-r--r--library/ace/theme-clouds.js1
-rw-r--r--library/ace/theme-clouds_midnight.js1
-rw-r--r--library/ace/theme-cobalt.js1
-rw-r--r--library/ace/theme-crimson_editor.js1
-rw-r--r--library/ace/theme-dawn.js1
-rw-r--r--library/ace/theme-dreamweaver.js1
-rw-r--r--library/ace/theme-eclipse.js1
-rw-r--r--library/ace/theme-github.js1
-rw-r--r--library/ace/theme-idle_fingers.js1
-rw-r--r--library/ace/theme-iplastic.js1
-rw-r--r--library/ace/theme-katzenmilch.js1
-rw-r--r--library/ace/theme-kr_theme.js1
-rw-r--r--library/ace/theme-kuroir.js1
-rw-r--r--library/ace/theme-merbivore.js1
-rw-r--r--library/ace/theme-merbivore_soft.js1
-rw-r--r--library/ace/theme-mono_industrial.js1
-rw-r--r--library/ace/theme-monokai.js1
-rw-r--r--library/ace/theme-pastel_on_dark.js1
-rw-r--r--library/ace/theme-solarized_dark.js1
-rw-r--r--library/ace/theme-solarized_light.js1
-rw-r--r--library/ace/theme-sqlserver.js1
-rw-r--r--library/ace/theme-terminal.js1
-rw-r--r--library/ace/theme-textmate.js1
-rw-r--r--library/ace/theme-tomorrow.js1
-rw-r--r--library/ace/theme-tomorrow_night.js1
-rw-r--r--library/ace/theme-tomorrow_night_blue.js1
-rw-r--r--library/ace/theme-tomorrow_night_bright.js1
-rw-r--r--library/ace/theme-tomorrow_night_eighties.js1
-rw-r--r--library/ace/theme-twilight.js1
-rw-r--r--library/ace/theme-vibrant_ink.js1
-rw-r--r--library/ace/theme-xcode.js1
-rw-r--r--library/ace/worker-coffee.js1
-rw-r--r--library/ace/worker-css.js1
-rw-r--r--library/ace/worker-html.js1
-rw-r--r--library/ace/worker-javascript.js1
-rw-r--r--library/ace/worker-json.js1
-rw-r--r--library/ace/worker-lua.js1
-rw-r--r--library/ace/worker-php.js1
-rw-r--r--library/ace/worker-xml.js1
-rw-r--r--library/ace/worker-xquery.js1
-rw-r--r--library/bbedit/editor.css9
-rw-r--r--library/bbedit/editor.js524
-rw-r--r--library/bbedit/images/.svn/all-wcprops53
-rw-r--r--library/bbedit/images/.svn/entries300
-rw-r--r--library/bbedit/images/.svn/prop-base/colors.gif.svn-base5
-rw-r--r--library/bbedit/images/.svn/prop-base/editbar_bg.gif.svn-base5
-rw-r--r--library/bbedit/images/.svn/prop-base/icon_html.gif.svn-base5
-rw-r--r--library/bbedit/images/.svn/prop-base/icon_list.gif.svn-base5
-rw-r--r--library/bbedit/images/.svn/prop-base/icon_quote.png.svn-base5
-rw-r--r--library/bbedit/images/.svn/prop-base/icon_youtube.gif.svn-base5
-rw-r--r--library/bbedit/images/.svn/prop-base/img.gif.svn-base5
-rw-r--r--library/bbedit/images/.svn/prop-base/url.gif.svn-base5
-rw-r--r--library/bbedit/images/.svn/text-base/colors.gif.svn-basebin1024 -> 0 bytes
-rw-r--r--library/bbedit/images/.svn/text-base/editbar_bg.gif.svn-basebin301 -> 0 bytes
-rw-r--r--library/bbedit/images/.svn/text-base/icon_html.gif.svn-basebin178 -> 0 bytes
-rw-r--r--library/bbedit/images/.svn/text-base/icon_list.gif.svn-basebin82 -> 0 bytes
-rw-r--r--library/bbedit/images/.svn/text-base/icon_quote.png.svn-basebin1239 -> 0 bytes
-rw-r--r--library/bbedit/images/.svn/text-base/icon_youtube.gif.svn-basebin613 -> 0 bytes
-rw-r--r--library/bbedit/images/.svn/text-base/img.gif.svn-basebin570 -> 0 bytes
-rw-r--r--library/bbedit/images/.svn/text-base/url.gif.svn-basebin209 -> 0 bytes
-rw-r--r--library/bbedit/images/colors.gifbin1024 -> 0 bytes
-rw-r--r--library/bbedit/images/editbar_bg.gifbin301 -> 0 bytes
-rw-r--r--library/bbedit/images/icon_html.gifbin178 -> 0 bytes
-rw-r--r--library/bbedit/images/icon_list.gifbin82 -> 0 bytes
-rw-r--r--library/bbedit/images/icon_quote.pngbin1239 -> 0 bytes
-rw-r--r--library/bbedit/images/icon_youtube.gifbin613 -> 0 bytes
-rw-r--r--library/bbedit/images/img.gifbin570 -> 0 bytes
-rw-r--r--library/bbedit/images/url.gifbin209 -> 0 bytes
-rw-r--r--library/bbedit/readme.txt28
-rw-r--r--library/bbedit/sample.htm37
-rw-r--r--library/emoji.json1
-rw-r--r--library/facebook.php955
-rw-r--r--library/html5.js8
-rw-r--r--library/markdown.php2
-rw-r--r--library/mcefixes/README8
-rw-r--r--library/mcefixes/plugins.bbcode.editor_plugin_src.js268
-rw-r--r--library/mcefixes/themes.advanced.img.icons.gifbin11776 -> 0 bytes
-rw-r--r--library/mcefixes/themes.advanced.skins.default.dialog.css117
-rw-r--r--library/mcefixes/themes.advanced.skins.default.ui.css213
-rw-r--r--library/spam/README12
-rw-r--r--library/spam/b8/b8.php503
-rw-r--r--library/spam/b8/b8.php.ORIG503
-rw-r--r--library/spam/b8/degenerator/degenerator_default.php127
-rw-r--r--library/spam/b8/lexer/lexer_default.php205
-rw-r--r--library/spam/b8/storage/storage_base.php396
-rw-r--r--library/spam/b8/storage/storage_base.php.ORIG395
-rw-r--r--library/spam/b8/storage/storage_dba.php198
-rw-r--r--library/spam/b8/storage/storage_frndc.php318
-rw-r--r--library/spam/b8/storage/storage_mysql.php351
-rw-r--r--library/spam/doc/COPYING504
-rw-r--r--library/spam/doc/ChangeLog179
-rw-r--r--library/spam/doc/readme.htm707
-rw-r--r--library/spam/doc/readme.rst371
-rw-r--r--library/spam/example/index.php241
-rw-r--r--library/spam/install/setup_berkeleydb.php240
-rw-r--r--library/spam/install/setup_mysql.sql27
-rw-r--r--library/stylish_select/index.html314
-rw-r--r--library/stylish_select/jquery.stylish-select.js492
-rwxr-xr-xlibrary/stylish_select/select-bg.pngbin2438 -> 0 bytes
-rw-r--r--library/stylish_select/stylish-select.css121
-rw-r--r--library/tinymce/changelog.txt1562
-rw-r--r--library/tinymce/examples/accessibility.html101
-rw-r--r--library/tinymce/examples/css/content.css105
-rw-r--r--library/tinymce/examples/css/word.css53
-rw-r--r--library/tinymce/examples/custom_formats.html111
-rw-r--r--library/tinymce/examples/full.html101
-rw-r--r--library/tinymce/examples/index.html10
-rw-r--r--library/tinymce/examples/lists/image_list.js9
-rw-r--r--library/tinymce/examples/lists/link_list.js10
-rw-r--r--library/tinymce/examples/lists/media_list.js14
-rw-r--r--library/tinymce/examples/lists/template_list.js9
-rw-r--r--library/tinymce/examples/media/logo.jpgbin2729 -> 0 bytes
-rw-r--r--library/tinymce/examples/media/logo_over.jpgbin6473 -> 0 bytes
-rw-r--r--library/tinymce/examples/media/sample.avibin82944 -> 0 bytes
-rw-r--r--library/tinymce/examples/media/sample.dcrbin6774 -> 0 bytes
-rw-r--r--library/tinymce/examples/media/sample.flvbin88722 -> 0 bytes
-rw-r--r--library/tinymce/examples/media/sample.movbin55622 -> 0 bytes
-rw-r--r--library/tinymce/examples/media/sample.ram1
-rw-r--r--library/tinymce/examples/media/sample.rmbin17846 -> 0 bytes
-rw-r--r--library/tinymce/examples/media/sample.swfbin6118 -> 0 bytes
-rw-r--r--library/tinymce/examples/menu.html18
-rw-r--r--library/tinymce/examples/simple.html47
-rw-r--r--library/tinymce/examples/skins.html216
-rw-r--r--library/tinymce/examples/templates/layout1.htm15
-rw-r--r--library/tinymce/examples/templates/snippet1.htm1
-rw-r--r--library/tinymce/examples/word.html72
-rw-r--r--library/tinymce/jscripts/tiny_mce/langs/en.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/license.txt504
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css5
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js57
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js43
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm58
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css13
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js50
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm235
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gifbin1624 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js462
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css8
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js61
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js539
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm338
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js176
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js180
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js119
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js431
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js4
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js21
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js220
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js2216
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js161
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js82
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js43
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm42
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gifbin354 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gifbin329 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gifbin331 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gifbin342 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gifbin340 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gifbin336 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gifbin338 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gifbin343 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gifbin321 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gifbin323 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gifbin344 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gifbin338 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gifbin328 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gifbin337 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gifbin350 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gifbin336 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/js/emotions.js43
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm22
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js84
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/example/img/example.gifbin87 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/example/js/dialog.js19
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/example/langs/en.js3
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/example/langs/en_dlg.js3
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/example_dependency/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/example_dependency/editor_plugin_src.js50
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css143
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js405
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm259
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js232
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js159
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm110
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js54
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js699
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gifbin810 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gifbin272 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gifbin1195 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gifbin907 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gifbin909 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gifbin769 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gifbin84 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css90
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/template.htm387
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js83
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js262
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js139
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js951
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/media/css/media.css17
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js890
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js73
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/media/js/media.js470
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/media/media.htm922
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/media/moxieplayer.swfbin19980 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js54
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js540
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js74
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js871
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js36
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js51
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm27
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm21
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js53
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/preview/example.html28
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js73
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/preview/preview.html17
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js34
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js101
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css6
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js61
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js142
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm100
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/content.css1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js436
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gifbin46 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/style/css/props.css14
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js71
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/style/js/props.js709
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/style/props.htm845
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/style/readme.txt19
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js122
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/table/cell.htm180
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css17
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/table/css/row.css25
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/table/css/table.css13
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js1428
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js319
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js27
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/table/js/row.js237
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/table/js/table.js489
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/table/langs/en_dlg.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm32
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/table/row.htm158
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/table/table.htm188
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/template/blank.htm12
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/template/css/template.css23
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js159
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/template/js/template.js106
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/template/template.htm31
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/visualblocks.css21
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin_src.js63
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js83
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js122
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm142
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm142
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm149
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm142
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css11
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css9
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm162
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js132
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm162
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js28
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js28
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js111
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js28
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js53
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js229
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js53
-rw-r--r--library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/about.htm52
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm26
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm55
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm70
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js1481
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/image.htm80
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpgbin2584 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/img/flash.gifbin239 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gifbin11776 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/img/iframe.gifbin600 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/img/pagebreak.gifbin325 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/img/quicktime.gifbin301 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/img/realmedia.gifbin439 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/img/shockwave.gifbin384 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/img/trans.gifbin43 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/img/video.gifbin597 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/img/windowsmedia.gifbin415 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js73
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js44
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js363
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js345
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js253
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js153
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js78
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/link.htm57
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/shortcuts.htm47
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css51
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css117
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.pngbin3133 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gifbin64 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gifbin68 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gifbin70 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gifbin1787 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gifbin1322 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css213
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/content.css25
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css106
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css106
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css49
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css118
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.pngbin2766 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.pngbin651 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.pngbin2084 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css222
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css8
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css5
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm25
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js84
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gifbin806 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css25
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css32
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css17
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.pngbin5102 -> 0 bytes
-rw-r--r--library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css35
-rw-r--r--library/tinymce/jscripts/tiny_mce/tiny_mce.js1
-rw-r--r--library/tinymce/jscripts/tiny_mce/tiny_mce_popup.js5
-rw-r--r--library/tinymce/jscripts/tiny_mce/tiny_mce_src.js18121
-rw-r--r--library/tinymce/jscripts/tiny_mce/utils/editable_selects.js70
-rw-r--r--library/tinymce/jscripts/tiny_mce/utils/form_utils.js210
-rw-r--r--library/tinymce/jscripts/tiny_mce/utils/mctabs.js162
-rw-r--r--library/tinymce/jscripts/tiny_mce/utils/validate.js252
-rwxr-xr-xutil/addons1
-rwxr-xr-xutil/fresh4
-rw-r--r--util/hmessages.po8414
-rw-r--r--util/messages.po126
-rw-r--r--util/po2php.php4
-rwxr-xr-xutil/safemode27
-rw-r--r--view/ca/hmessages.po14250
-rw-r--r--view/ca/hstrings.php3452
-rw-r--r--view/ca/messages.po10804
-rw-r--r--view/ca/strings.php2822
-rw-r--r--view/cs/hmessages.po4618
-rw-r--r--view/cs/hstrings.php1044
-rw-r--r--view/cs/htconfig.tpl82
-rw-r--r--view/cs/lostpass_eml.tpl32
-rw-r--r--view/cs/messages.po4618
-rw-r--r--view/cs/passchanged_eml.tpl20
-rw-r--r--view/cs/register_open_eml.tpl19
-rw-r--r--view/cs/register_verify_eml.tpl25
-rw-r--r--view/cs/strings.php1044
-rw-r--r--view/cs/update_fail_eml.tpl13
-rw-r--r--view/css/bootstrap-red.css4
-rw-r--r--view/css/conversation.css25
-rw-r--r--view/de/hmessages.po9782
-rw-r--r--view/de/hstrings.php2029
-rw-r--r--view/de/htconfig.tpl2
-rw-r--r--view/en-au/htconfig.tpl2
-rw-r--r--view/en-gb/htconfig.tpl2
-rw-r--r--view/en/htconfig.tpl2
-rw-r--r--view/eo/hmessages.po7714
-rw-r--r--view/eo/hstrings.php1771
-rw-r--r--view/eo/htconfig.tpl82
-rw-r--r--view/eo/lostpass_eml.tpl32
-rw-r--r--view/eo/messages.po7714
-rw-r--r--view/eo/passchanged_eml.tpl20
-rw-r--r--view/eo/register_open_eml.tpl19
-rw-r--r--view/eo/register_verify_eml.tpl25
-rw-r--r--view/eo/strings.php1771
-rw-r--r--view/eo/update_fail_eml.tpl13
-rw-r--r--view/es-es/hmessages.po9407
-rw-r--r--view/es-es/hstrings.php1904
-rw-r--r--view/fr/hmessages.po13058
-rw-r--r--view/fr/hstrings.php2721
-rw-r--r--view/fr/htconfig.tpl2
-rw-r--r--view/fr/messages.po10813
-rw-r--r--view/fr/strings.php2592
-rw-r--r--view/he/strings.php2168
-rw-r--r--view/it/hmessages.po12805
-rw-r--r--view/it/hstrings.php2631
-rw-r--r--view/it/htconfig.tpl2
-rw-r--r--view/it/messages.po10133
-rw-r--r--view/it/strings.php2844
-rw-r--r--view/js/acl.js139
-rw-r--r--view/js/autocomplete.js2
-rw-r--r--view/js/main.js16
-rw-r--r--view/nb-no/hmessages.po12901
-rw-r--r--view/nb-no/hstrings.php2661
-rw-r--r--view/nb-no/htconfig.tpl2
-rw-r--r--view/nl/hmessages.po9394
-rw-r--r--view/nl/hstrings.php1898
-rw-r--r--view/pdl/mod_wiki.pdl4
-rw-r--r--view/php/theme_init.php2
-rw-r--r--view/pt-br/htconfig.tpl2
-rw-r--r--view/ru/htconfig.tpl2
-rw-r--r--view/sv/htconfig.tpl2
-rw-r--r--view/theme/redbasic/css/style.css7
-rw-r--r--view/theme/redbasic/schema/bluegrid.css11
-rw-r--r--view/theme/redbasic/schema/dark.css29
-rw-r--r--view/theme/redbasic/schema/simple_black_on_white.css23
-rw-r--r--view/theme/redbasic/schema/simple_green_on_black.css38
-rw-r--r--view/theme/redbasic/schema/simple_white_on_black.css39
-rwxr-xr-xview/tpl/acl_selector.tpl32
-rwxr-xr-xview/tpl/admin_accounts.tpl88
-rwxr-xr-xview/tpl/admin_channels.tpl2
-rwxr-xr-xview/tpl/admin_plugins.tpl49
-rwxr-xr-xview/tpl/admin_users.tpl88
-rw-r--r--view/tpl/app.tpl2
-rwxr-xr-xview/tpl/atom_feed.tpl2
-rw-r--r--view/tpl/chat.tpl48
-rwxr-xr-xview/tpl/conv_item.tpl151
-rw-r--r--view/tpl/hdr.tpl2
-rwxr-xr-xview/tpl/jot-header.tpl8
-rwxr-xr-xview/tpl/profile_advanced.tpl18
-rwxr-xr-xview/tpl/profile_edit.tpl6
-rwxr-xr-xview/tpl/profile_vcard.tpl4
-rwxr-xr-xview/tpl/settings_oauth.tpl2
-rw-r--r--view/tpl/wiki.tpl277
-rw-r--r--view/tpl/wiki_page_history.tpl12
-rw-r--r--view/tpl/wiki_page_list.tpl10
-rw-r--r--view/tpl/wikilist.tpl20
2861 files changed, 92849 insertions, 171567 deletions
diff --git a/.gitignore b/.gitignore
index 6ceac139f..a5f149548 100755
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,8 @@
*.rej
# OSX .DS_Store files
.DS_Store
+# version scripts (repo master only)
+.version*
Thumbs.db
diff --git a/CHANGELOG b/CHANGELOG
index cf8386317..7fc5835a7 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,79 @@
+Hubzilla 1.8
+ Administration:
+ Cleanup and resolve some edge cases with addon repository manager
+ Provide sort field and direction on all fields of account and channel administration tables
+ Rename 'user' administration to account administration to reflect its true purpose
+ 'safemode' tool to quickly disable and re-enable addons during a hypothetical upgrade crisis
+ Security:
+ Edited comments to private posts could lose their privacy settings under some circumstances
+ Provide zot-finger signatures to prevent a possible but rare exploit involving DNS spoofing and phishing
+ ACL selections:
+ Various improvements to the ACL editor to further simplify the concepts and make it more intuitive
+ Chat:
+ Notifications of chatroom activity using standard browser notification interfaces.
+ Themes:
+ Allow a theme:schema string to represent a valid theme name. This fixes issues with setting schemas on site themes.
+ Pubsites:
+ Show server role (identify UNO or basic sites as opposed to hubzilla pro) and link to statistics
+ Documentation:
+ Clarify privacy rights of commenters w/r/t conversation owners, as this policy is network dependent.
+ Wiki (Git backed):
+ Brand new feature. We'll call it experimental until it has undergone a bit more testing.
+ Account Cloning:
+ Regression on clone channel creation created a new channel name each time.
+ New issue (fixed) with directory creation on cloned file content
+ Content Rendering:
+ Add inline code (in addition to the existing code blocks) to BBcode
+ Add emoji reactions
+ Add emojis as extended smilies with auto-complete support
+ Emoji added as feature so it can be enabled/disabled and locked
+ Ability to configure the standard reactions available on a site basis
+ Disable 'convenience' ajax autoload on pgdn key, as it could lead to premature memory exhaustion
+ Photos:
+ Change album sort ordering, allow widgets and plugins to define other orderings
+ Apps:
+ Synchronise app list with changes to system apps
+ Preserve existing app categories on app updates/edits
+ Regression: fixed translated system app names
+ Architecture:
+ Provide autoloaded class files and libraries for plugins.
+ Further refactoring of session driver to sort out some cookie anomolies
+ Experimental PDO database driver
+ Creation of Daemon Master class and port all daemon (background task) interfaces to use it
+ Create separate class for each of 'Cron', 'Cron daily', and 'Cron weekly'.
+ Always run a Cron maintenance task if not run in the last four hours
+ Refactor the template classes
+ Refactor the ConversationItem mess into ThreadItem and ThreadStream
+ Refactor Apps, Enotify, and Chat library code
+ Refactor the various Config libraries (Config, PConfig, XConfig, AConfig, AbConfig, and IConfig)
+ Created WebServer class for top level
+ Remove mcrypt dependencies (deprecated in PHP 7.1)
+ Remove all reserved (including merely 'not recommended') words as DB table column names
+ Provide mutex lock on DB logging to prevent recursion under rare failure modes.
+ Bugfixes:
+ Remove db_close function on page end - not needed and will not work with persistent DB connections.
+ Undefined ref_session_write
+ Some session functions needed to be static to work with CalDAV/CardDAV
+ CLI interface: argc and argv were reversed
+ HTML entities double encoded in edited titles
+ Prevent delivering to empty recipients
+ Sabre library setting some security headers for SAML after we've emitted HTML content
+ Always initialise miniApp (caused obscure warning message if not set)
+ Block 'sys' channels from being 'random profile' candidates
+ DB update failed email could be sent in the wrong language under rare circumstances
+ Openid remote authentication used incorrect namespace
+ URL attached to profile "things" was not linked, always showing the "thing" manage page
+ New connection wasn't added to default privacy group when "auto-accept" was enabled
+ Regression: iconfig sharing wasn't working properly
+ Plugins:
+ CalDAV/CardDAV plugin provided
+ Issue sending Diaspora 'like' activities from sources that did not propagate the DCV
+ Allow 'superblock' to work across API calls from third party clients
+ statistics.json: use 'zot' as protocol
+ Issues fixed during testing of ability to follow Diaspora tags
+ Parse issue with Diaspora reshare content
+ Chess: moved to main repo, ported to 1.8
+
Hubzilla 1.6
Cleanup and standardise the interfaces to the "jot" editor
Router re-written to support calling class object methods as controllers
diff --git a/LICENSE b/LICENSE
index a2c2d1599..ab37f5ba7 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2010-2016 Hubzilla
+Copyright (c) 2010-2016 the Hubzilla Community
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/README.md b/README.md
index ad7a4a9ca..8a6c003fc 100644
--- a/README.md
+++ b/README.md
@@ -3,8 +3,11 @@
Hubzilla - Community Server
===========================
-Connected and linked web communities.
--------------------------------------
+Groupware re-imagined and re-invented.
+--------------------------------------
+
+Connect and link decentralised web communities.
+-----------------------------------------------
<p align="center" markdown="1">
<em><a href="https://github.com/redmatrix/hubzilla/blob/master/install/INSTALL.txt">Installing Hubzilla</a></em>
diff --git a/Zotlabs/Daemon/Checksites.php b/Zotlabs/Daemon/Checksites.php
new file mode 100644
index 000000000..991456319
--- /dev/null
+++ b/Zotlabs/Daemon/Checksites.php
@@ -0,0 +1,55 @@
+<?php /** @file */
+
+namespace Zotlabs\Daemon;
+
+require_once('include/zot.php');
+require_once('include/hubloc.php');
+
+
+class Checksites {
+
+ static public function run($argc,$argv) {
+
+ logger('checksites: start');
+
+ if(($argc > 1) && ($argv[1]))
+ $site_id = $argv[1];
+
+ if($site_id)
+ $sql_options = " and site_url = '" . dbesc($argv[1]) . "' ";
+
+ $days = intval(get_config('system','sitecheckdays'));
+ if($days < 1)
+ $days = 30;
+
+ $r = q("select * from site where site_dead = 0 and site_update < %s - INTERVAL %s and site_type = %d $sql_options ",
+ db_utcnow(), db_quoteinterval($days . ' DAY'),
+ intval(SITE_TYPE_ZOT)
+ );
+
+ if(! $r)
+ return;
+
+ foreach($r as $rr) {
+ if(! strcasecmp($rr['site_url'],z_root()))
+ continue;
+
+ $x = ping_site($rr['site_url']);
+ if($x['success']) {
+ logger('checksites: ' . $rr['site_url']);
+ q("update site set site_update = '%s' where site_url = '%s' ",
+ dbesc(datetime_convert()),
+ dbesc($rr['site_url'])
+ );
+ }
+ else {
+ logger('marking dead site: ' . $x['message']);
+ q("update site set site_dead = 1 where site_url = '%s' ",
+ dbesc($rr['site_url'])
+ );
+ }
+ }
+
+ return;
+ }
+}
diff --git a/Zotlabs/Daemon/Cli_suggest.php b/Zotlabs/Daemon/Cli_suggest.php
new file mode 100644
index 000000000..5dced462d
--- /dev/null
+++ b/Zotlabs/Daemon/Cli_suggest.php
@@ -0,0 +1,14 @@
+<?php /** @file */
+
+namespace Zotlabs\Daemon;
+
+require_once('include/socgraph.php');
+
+class Cli_suggest {
+
+ static public function run($argc,$argv) {
+
+ update_suggestions();
+
+ }
+}
diff --git a/Zotlabs/Daemon/Cron.php b/Zotlabs/Daemon/Cron.php
new file mode 100644
index 000000000..f23cb14dc
--- /dev/null
+++ b/Zotlabs/Daemon/Cron.php
@@ -0,0 +1,181 @@
+<?php /** @file */
+
+namespace Zotlabs\Daemon;
+
+class Cron {
+
+ static public function run($argc,$argv) {
+
+ $maxsysload = intval(get_config('system','maxloadavg'));
+ if($maxsysload < 1)
+ $maxsysload = 50;
+ if(function_exists('sys_getloadavg')) {
+ $load = sys_getloadavg();
+ if(intval($load[0]) > $maxsysload) {
+ logger('system: load ' . $load . ' too high. Cron deferred to next scheduled run.');
+ return;
+ }
+ }
+
+ // Check for a lockfile. If it exists, but is over an hour old, it's stale. Ignore it.
+ $lockfile = 'store/[data]/cron';
+ if((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 3600))
+ && (! get_config('system','override_cron_lockfile'))) {
+ logger("cron: Already running");
+ return;
+ }
+
+ // Create a lockfile. Needs two vars, but $x doesn't need to contain anything.
+ file_put_contents($lockfile, $x);
+
+ logger('cron: start');
+
+ // run queue delivery process in the background
+
+ Master::Summon(array('Queue'));
+
+ Master::Summon(array('Poller'));
+
+ // maintenance for mod sharedwithme - check for updated items and remove them
+
+ require_once('include/sharedwithme.php');
+ apply_updates();
+
+
+ // expire any expired mail
+
+ q("delete from mail where expires != '%s' and expires < %s ",
+ dbesc(NULL_DATE),
+ db_utcnow()
+ );
+
+ // expire any expired items
+
+ $r = q("select id from item where expires != '%s' and expires < %s
+ and item_deleted = 0 ",
+ dbesc(NULL_DATE),
+ db_utcnow()
+ );
+ if($r) {
+ require_once('include/items.php');
+ foreach($r as $rr)
+ drop_item($rr['id'],false);
+ }
+
+
+ // Ensure that every channel pings a directory server once a month. This way we can discover
+ // channels and sites that quietly vanished and prevent the directory from accumulating stale
+ // or dead entries.
+
+ $r = q("select channel_id from channel where channel_dirdate < %s - INTERVAL %s",
+ db_utcnow(),
+ db_quoteinterval('30 DAY')
+ );
+ if($r) {
+ foreach($r as $rr) {
+ Master::Summon(array('Directory',$rr['channel_id'],'force'));
+ if($interval)
+ @time_sleep_until(microtime(true) + (float) $interval);
+ }
+ }
+
+ // publish any applicable items that were set to be published in the future
+ // (time travel posts). Restrict to items that have come of age in the last
+ // couple of days to limit the query to something reasonable.
+
+ $r = q("select id from item where item_delayed = 1 and created <= %s and created > '%s' ",
+ db_utcnow(),
+ dbesc(datetime_convert('UTC','UTC','now - 2 days'))
+ );
+ if($r) {
+ foreach($r as $rr) {
+ $x = q("update item set item_delayed = 0 where id = %d",
+ intval($rr['id'])
+ );
+ if($x) {
+ Master::Summon(array('Notifier','wall-new',$rr['id']));
+ }
+ }
+ }
+
+ $abandon_days = intval(get_config('system','account_abandon_days'));
+ if($abandon_days < 1)
+ $abandon_days = 0;
+
+
+ // once daily run birthday_updates and then expire in background
+
+ // FIXME: add birthday updates, both locally and for xprof for use
+ // by directory servers
+
+ $d1 = intval(get_config('system','last_expire_day'));
+ $d2 = intval(datetime_convert('UTC','UTC','now','d'));
+
+ // Allow somebody to staggger daily activities if they have more than one site on their server,
+ // or if it happens at an inconvenient (busy) hour.
+
+ $h1 = intval(get_config('system','cron_hour'));
+ $h2 = intval(datetime_convert('UTC','UTC','now','G'));
+
+
+ if(($d2 != $d1) && ($h1 == $h2)) {
+ Master::Summon(array('Cron_daily'));
+ }
+
+ // update any photos which didn't get imported properly
+ // This should be rare
+
+ $r = q("select xchan_photo_l, xchan_hash from xchan where xchan_photo_l != '' and xchan_photo_m = ''
+ and xchan_photo_date < %s - INTERVAL %s",
+ db_utcnow(),
+ db_quoteinterval('1 DAY')
+ );
+ if($r) {
+ require_once('include/photo/photo_driver.php');
+ foreach($r as $rr) {
+ $photos = import_xchan_photo($rr['xchan_photo_l'],$rr['xchan_hash']);
+ $x = q("update xchan set xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s'
+ where xchan_hash = '%s'",
+ dbesc($photos[0]),
+ dbesc($photos[1]),
+ dbesc($photos[2]),
+ dbesc($photos[3]),
+ dbesc($rr['xchan_hash'])
+ );
+ }
+ }
+
+
+ // pull in some public posts
+
+ if(! get_config('system','disable_discover_tab'))
+ Master::Summon(array('Externals'));
+
+ $generation = 0;
+
+ $restart = false;
+
+ if(($argc > 1) && ($argv[1] == 'restart')) {
+ $restart = true;
+ $generation = intval($argv[2]);
+ if(! $generation)
+ killme();
+ }
+
+ reload_plugins();
+
+ $d = datetime_convert();
+
+ // TODO check to see if there are any cronhooks before wasting a process
+
+ if(! $restart)
+ Master::Summon(array('Cronhooks'));
+
+ set_config('system','lastcron',datetime_convert());
+
+ //All done - clear the lockfile
+ @unlink($lockfile);
+
+ return;
+ }
+}
diff --git a/Zotlabs/Daemon/Cron_daily.php b/Zotlabs/Daemon/Cron_daily.php
new file mode 100644
index 000000000..a16d49853
--- /dev/null
+++ b/Zotlabs/Daemon/Cron_daily.php
@@ -0,0 +1,90 @@
+<?php /** @file */
+
+namespace Zotlabs\Daemon;
+
+class Cron_daily {
+
+ static public function run($argc,$argv) {
+
+ logger('cron_daily: start');
+
+ /**
+ * Cron Daily
+ *
+ */
+
+
+ require_once('include/dir_fns.php');
+ check_upstream_directory();
+
+
+ // Fire off the Cron_weekly process if it's the correct day.
+
+ $d3 = intval(datetime_convert('UTC','UTC','now','N'));
+ if($d3 == 7) {
+ Master::Summon(array('Cron_weekly'));
+ }
+
+ // once daily run birthday_updates and then expire in background
+
+ // FIXME: add birthday updates, both locally and for xprof for use
+ // by directory servers
+
+ update_birthdays();
+
+ // expire any read notifications over a month old
+
+ q("delete from notify where seen = 1 and created < %s - INTERVAL %s",
+ db_utcnow(), db_quoteinterval('30 DAY')
+ );
+
+ //update statistics in config
+ require_once('include/statistics_fns.php');
+ update_channels_total_stat();
+ update_channels_active_halfyear_stat();
+ update_channels_active_monthly_stat();
+ update_local_posts_stat();
+
+
+ // expire old delivery reports
+
+ $keep_reports = intval(get_config('system','expire_delivery_reports'));
+ if($keep_reports === 0)
+ $keep_reports = 10;
+
+ q("delete from dreport where dreport_time < %s - INTERVAL %s",
+ db_utcnow(),
+ db_quoteinterval($keep_reports . ' DAY')
+ );
+
+ // expire any expired accounts
+ downgrade_accounts();
+
+ // If this is a directory server, request a sync with an upstream
+ // directory at least once a day, up to once every poll interval.
+ // Pull remote changes and push local changes.
+ // potential issue: how do we keep from creating an endless update loop?
+
+ $dirmode = get_config('system','directory_mode');
+
+ if($dirmode == DIRECTORY_MODE_SECONDARY || $dirmode == DIRECTORY_MODE_PRIMARY) {
+ require_once('include/dir_fns.php');
+ sync_directories($dirmode);
+ }
+
+
+ Master::Summon(array('Expire'));
+ Master::Summon(array('Cli_suggest'));
+
+ require_once('include/hubloc.php');
+ remove_obsolete_hublocs();
+
+ call_hooks('cron_daily',datetime_convert());
+
+ set_config('system','last_expire_day',$d2);
+
+ /**
+ * End Cron Daily
+ */
+ }
+}
diff --git a/Zotlabs/Daemon/Cron_weekly.php b/Zotlabs/Daemon/Cron_weekly.php
new file mode 100644
index 000000000..1d8420947
--- /dev/null
+++ b/Zotlabs/Daemon/Cron_weekly.php
@@ -0,0 +1,49 @@
+<?php
+
+namespace Zotlabs\Daemon;
+
+class Cron_weekly {
+
+ static public function run($argc,$argv) {
+
+ /**
+ * Cron Weekly
+ *
+ * Actions in the following block are executed once per day only on Sunday (once per week).
+ *
+ */
+
+ call_hooks('cron_weekly',datetime_convert());
+
+
+ z_check_cert();
+
+ require_once('include/hubloc.php');
+ prune_hub_reinstalls();
+
+ mark_orphan_hubsxchans();
+
+
+ // get rid of really old poco records
+
+ q("delete from xlink where xlink_updated < %s - INTERVAL %s and xlink_static = 0 ",
+ db_utcnow(), db_quoteinterval('14 DAY')
+ );
+
+ $dirmode = intval(get_config('system','directory_mode'));
+ if($dirmode === DIRECTORY_MODE_SECONDARY || $dirmode === DIRECTORY_MODE_PRIMARY) {
+ logger('regdir: ' . print_r(z_fetch_url(get_directory_primary() . '/regdir?f=&url=' . urlencode(z_root()) . '&realm=' . urlencode(get_directory_realm())),true));
+ }
+
+ // Check for dead sites
+ Master::Summon(array('Checksites'));
+
+ // update searchable doc indexes
+ Master::Summon(array('Importdoc'));
+
+ /**
+ * End Cron Weekly
+ */
+
+ }
+} \ No newline at end of file
diff --git a/Zotlabs/Daemon/Cronhooks.php b/Zotlabs/Daemon/Cronhooks.php
new file mode 100644
index 000000000..df0a5442e
--- /dev/null
+++ b/Zotlabs/Daemon/Cronhooks.php
@@ -0,0 +1,17 @@
+<?php /** @file */
+
+namespace Zotlabs\Daemon;
+
+class Cronhooks {
+
+ static public function run($argc,$argv){
+
+ logger('cronhooks: start');
+
+ $d = datetime_convert();
+
+ call_hooks('cron', $d);
+
+ return;
+ }
+}
diff --git a/Zotlabs/Daemon/Deliver.php b/Zotlabs/Daemon/Deliver.php
new file mode 100644
index 000000000..dbc311cf5
--- /dev/null
+++ b/Zotlabs/Daemon/Deliver.php
@@ -0,0 +1,85 @@
+<?php /** @file */
+
+namespace Zotlabs\Daemon;
+
+require_once('include/zot.php');
+require_once('include/queue_fn.php');
+
+
+class Deliver {
+
+ static public function run($argc,$argv) {
+
+ if($argc < 2)
+ return;
+
+ logger('deliver: invoked: ' . print_r($argv,true), LOGGER_DATA);
+
+ for($x = 1; $x < $argc; $x ++) {
+
+ if(! $argv[$x])
+ continue;
+
+ $dresult = null;
+ $r = q("select * from outq where outq_hash = '%s' limit 1",
+ dbesc($argv[$x])
+ );
+ if($r) {
+
+ $notify = json_decode($r[0]['outq_notify'],true);
+
+ // Messages without an outq_msg will need to go via the web, even if it's a
+ // local delivery. This includes conversation requests and refresh packets.
+
+ if(($r[0]['outq_posturl'] === z_root() . '/post') && ($r[0]['outq_msg'])) {
+ logger('deliver: local delivery', LOGGER_DEBUG);
+
+ // local delivery
+ // we should probably batch these and save a few delivery processes
+
+ if($r[0]['outq_msg']) {
+ $m = json_decode($r[0]['outq_msg'],true);
+ if(array_key_exists('message_list',$m)) {
+ foreach($m['message_list'] as $mm) {
+ $msg = array('body' => json_encode(array('success' => true, 'pickup' => array(array('notify' => $notify,'message' => $mm)))));
+ zot_import($msg,z_root());
+ }
+ }
+ else {
+ $msg = array('body' => json_encode(array('success' => true, 'pickup' => array(array('notify' => $notify,'message' => $m)))));
+ $dresult = zot_import($msg,z_root());
+ }
+
+ remove_queue_item($r[0]['outq_hash']);
+
+ if($dresult && is_array($dresult)) {
+ foreach($dresult as $xx) {
+ if(is_array($xx) && array_key_exists('message_id',$xx)) {
+ if(delivery_report_is_storable($xx)) {
+ q("insert into dreport ( dreport_mid, dreport_site, dreport_recip, dreport_result, dreport_time, dreport_xchan ) values ( '%s', '%s','%s','%s','%s','%s' ) ",
+ dbesc($xx['message_id']),
+ dbesc($xx['location']),
+ dbesc($xx['recipient']),
+ dbesc($xx['status']),
+ dbesc(datetime_convert($xx['date'])),
+ dbesc($xx['sender'])
+ );
+ }
+ }
+ }
+ }
+
+ q("delete from dreport where dreport_queue = '%s'",
+ dbesc($argv[$x])
+ );
+ }
+ }
+
+ // otherwise it's a remote delivery - call queue_deliver() with the $immediate flag
+
+ queue_deliver($r[0],true);
+
+ }
+ }
+ }
+}
diff --git a/Zotlabs/Daemon/Deliver_hooks.php b/Zotlabs/Daemon/Deliver_hooks.php
new file mode 100644
index 000000000..e8b5acef0
--- /dev/null
+++ b/Zotlabs/Daemon/Deliver_hooks.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Zotlabs\Daemon;
+
+require_once('include/zot.php');
+
+class Deliver_hooks {
+
+ static public function run($argc,$argv) {
+
+ if($argc < 2)
+ return;
+
+
+ $r = q("select * from item where id = '%d'",
+ intval($argv[1])
+ );
+ if($r)
+ call_hooks('notifier_normal',$r[0]);
+
+ }
+}
+
+
diff --git a/Zotlabs/Daemon/Directory.php b/Zotlabs/Daemon/Directory.php
new file mode 100644
index 000000000..c8cdafdf5
--- /dev/null
+++ b/Zotlabs/Daemon/Directory.php
@@ -0,0 +1,100 @@
+<?php
+
+namespace Zotlabs\Daemon;
+
+require_once('include/zot.php');
+require_once('include/dir_fns.php');
+require_once('include/queue_fn.php');
+
+
+class Directory {
+
+ static public function run($argc,$argv){
+
+ if($argc < 2)
+ return;
+
+ $force = false;
+ $pushall = true;
+
+ if($argc > 2) {
+ if($argv[2] === 'force')
+ $force = true;
+ if($argv[2] === 'nopush')
+ $pushall = false;
+ }
+
+ logger('directory update', LOGGER_DEBUG);
+
+ $dirmode = get_config('system','directory_mode');
+ if($dirmode === false)
+ $dirmode = DIRECTORY_MODE_NORMAL;
+
+ $x = q("select * from channel where channel_id = %d limit 1",
+ intval($argv[1])
+ );
+ if(! $x)
+ return;
+
+ $channel = $x[0];
+
+ if($dirmode != DIRECTORY_MODE_NORMAL) {
+
+ // this is an in-memory update and we don't need to send a network packet.
+
+ local_dir_update($argv[1],$force);
+
+ q("update channel set channel_dirdate = '%s' where channel_id = %d",
+ dbesc(datetime_convert()),
+ intval($channel['channel_id'])
+ );
+
+ // Now update all the connections
+ if($pushall)
+ Master::Summon(array('Notifier','refresh_all',$channel['channel_id']));
+
+ return;
+ }
+
+ // otherwise send the changes upstream
+
+ $directory = find_upstream_directory($dirmode);
+ $url = $directory['url'] . '/post';
+
+ // ensure the upstream directory is updated
+
+ $packet = zot_build_packet($channel,(($force) ? 'force_refresh' : 'refresh'));
+ $z = zot_zot($url,$packet);
+
+ // re-queue if unsuccessful
+
+ if(! $z['success']) {
+
+ /** @FIXME we aren't updating channel_dirdate if we have to queue
+ * the directory packet. That means we'll try again on the next poll run.
+ */
+
+ $hash = random_string();
+
+ queue_insert(array(
+ 'hash' => $hash,
+ 'account_id' => $channel['channel_account_id'],
+ 'channel_id' => $channel['channel_id'],
+ 'posturl' => $url,
+ 'notify' => $packet,
+ ));
+
+ }
+ else {
+ q("update channel set channel_dirdate = '%s' where channel_id = %d",
+ dbesc(datetime_convert()),
+ intval($channel['channel_id'])
+ );
+ }
+
+ // Now update all the connections
+ if($pushall)
+ Master::Summon(array('Notifier','refresh_all',$channel['channel_id']));
+
+ }
+}
diff --git a/Zotlabs/Daemon/Expire.php b/Zotlabs/Daemon/Expire.php
new file mode 100644
index 000000000..0ba83b240
--- /dev/null
+++ b/Zotlabs/Daemon/Expire.php
@@ -0,0 +1,93 @@
+<?php
+
+namespace Zotlabs\Daemon;
+
+
+class Expire {
+
+ static public function run($argc,$argv){
+
+ cli_startup();
+
+ // perform final cleanup on previously delete items
+
+ $r = q("select id from item where item_deleted = 1 and item_pending_remove = 0 and changed < %s - INTERVAL %s",
+ db_utcnow(), db_quoteinterval('10 DAY')
+ );
+ if ($r) {
+ foreach ($r as $rr) {
+ drop_item($rr['id'], false, DROPITEM_PHASE2);
+ }
+ }
+
+ // physically remove anything that has been deleted for more than two months
+ /** @FIXME - this is a wretchedly inefficient query */
+
+ $r = q("delete from item where item_pending_remove = 1 and changed < %s - INTERVAL %s",
+ db_utcnow(), db_quoteinterval('36 DAY')
+ );
+
+ /** @FIXME make this optional as it could have a performance impact on large sites */
+
+ if (intval(get_config('system', 'optimize_items')))
+ q("optimize table item");
+
+ logger('expire: start', LOGGER_DEBUG);
+
+ $site_expire = get_config('system', 'default_expire_days');
+
+ logger('site_expire: ' . $site_expire);
+
+ $r = q("SELECT channel_id, channel_address, channel_pageflags, channel_expire_days from channel where true");
+
+ if ($r) {
+ foreach ($r as $rr) {
+
+ // expire the sys channel separately
+ if (intval($rr['channel_system']))
+ continue;
+
+ // service class default (if non-zero) over-rides the site default
+
+ $service_class_expire = service_class_fetch($rr['channel_id'], 'expire_days');
+ if (intval($service_class_expire))
+ $channel_expire = $service_class_expire;
+ else
+ $channel_expire = $site_expire;
+
+ if (intval($channel_expire) && (intval($channel_expire) < intval($rr['channel_expire_days'])) ||
+ intval($rr['channel_expire_days'] == 0)) {
+ $expire_days = $channel_expire;
+ } else {
+ $expire_days = $rr['channel_expire_days'];
+ }
+
+ // if the site or service class expiration is non-zero and less than person expiration, use that
+ logger('Expire: ' . $rr['channel_address'] . ' interval: ' . $expire_days, LOGGER_DEBUG);
+ item_expire($rr['channel_id'], $expire_days);
+ }
+ }
+
+ $x = get_sys_channel();
+ if ($x) {
+
+ // this should probably just fetch the channel_expire_days from the sys channel,
+ // but there's no convenient way to set it.
+
+ $expire_days = get_config('system', 'sys_expire_days');
+ if ($expire_days === false)
+ $expire_days = 30;
+
+ if (intval($site_expire) && (intval($site_expire) < intval($expire_days))) {
+ $expire_days = $site_expire;
+ }
+
+ logger('Expire: sys interval: ' . $expire_days, LOGGER_DEBUG);
+
+ if ($expire_days)
+ item_expire($x['channel_id'], $expire_days);
+
+ logger('Expire: sys: done', LOGGER_DEBUG);
+ }
+ }
+}
diff --git a/Zotlabs/Daemon/Externals.php b/Zotlabs/Daemon/Externals.php
new file mode 100644
index 000000000..24cfe64ec
--- /dev/null
+++ b/Zotlabs/Daemon/Externals.php
@@ -0,0 +1,98 @@
+<?php /** @file */
+
+namespace Zotlabs\Daemon;
+
+require_once('include/zot.php');
+require_once('include/channel.php');
+
+
+class Externals {
+
+ static public function run($argc,$argv){
+
+ $total = 0;
+ $attempts = 0;
+
+ logger('externals: startup', LOGGER_DEBUG);
+
+ // pull in some public posts
+
+
+ while($total == 0 && $attempts < 3) {
+ $arr = array('url' => '');
+ call_hooks('externals_url_select',$arr);
+
+ if($arr['url']) {
+ $url = $arr['url'];
+ }
+ else {
+ $randfunc = db_getfunc('RAND');
+
+ // fixme this query does not deal with directory realms.
+
+ $r = q("select site_url, site_pull from site where site_url != '%s' and site_flags != %d and site_type = %d and site_dead = 0 order by $randfunc limit 1",
+ dbesc(z_root()),
+ intval(DIRECTORY_MODE_STANDALONE),
+ intval(SITE_TYPE_ZOT)
+ );
+ if($r)
+ $url = $r[0]['site_url'];
+ }
+
+ $blacklisted = false;
+
+ if(! check_siteallowed($url)) {
+ logger('blacklisted site: ' . $url);
+ $blacklisted = true;
+ }
+
+ $attempts ++;
+
+ // make sure we can eventually break out if somebody blacklists all known sites
+
+ if($blacklisted) {
+ if($attempts > 20)
+ break;
+ $attempts --;
+ continue;
+ }
+
+ if($url) {
+ if($r[0]['site_pull'] !== NULL_DATE)
+ $mindate = urlencode(datetime_convert('','',$r[0]['site_pull'] . ' - 1 day'));
+ else {
+ $days = get_config('externals','since_days');
+ if($days === false)
+ $days = 15;
+ $mindate = urlencode(datetime_convert('','','now - ' . intval($days) . ' days'));
+ }
+
+ $feedurl = $url . '/zotfeed?f=&mindate=' . $mindate;
+
+ logger('externals: pulling public content from ' . $feedurl, LOGGER_DEBUG);
+
+ $x = z_fetch_url($feedurl);
+ if(($x) && ($x['success'])) {
+
+ q("update site set site_pull = '%s' where site_url = '%s'",
+ dbesc(datetime_convert()),
+ dbesc($url)
+ );
+
+ $j = json_decode($x['body'],true);
+ if($j['success'] && $j['messages']) {
+ $sys = get_sys_channel();
+ foreach($j['messages'] as $message) {
+ // on these posts, clear any route info.
+ $message['route'] = '';
+ $results = process_delivery(array('hash' => 'undefined'), get_item_elements($message),
+ array(array('hash' => $sys['xchan_hash'])), false, true);
+ $total ++;
+ }
+ logger('externals: import_public_posts: ' . $total . ' messages imported', LOGGER_DEBUG);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/Zotlabs/Daemon/Gprobe.php b/Zotlabs/Daemon/Gprobe.php
new file mode 100644
index 000000000..43cce93c3
--- /dev/null
+++ b/Zotlabs/Daemon/Gprobe.php
@@ -0,0 +1,33 @@
+<?php /** @file */
+
+namespace Zotlabs\Daemon;
+
+require_once('include/zot.php');
+
+// performs zot_finger on $argv[1], which is a hex_encoded webbie/reddress
+
+class Gprobe {
+ static public function run($argc,$argv) {
+
+ if($argc != 2)
+ return;
+
+ $url = hex2bin($argv[1]);
+
+ if(! strpos($url,'@'))
+ return;
+
+ $r = q("select * from xchan where xchan_addr = '%s' limit 1",
+ dbesc($url)
+ );
+
+ if(! $r) {
+ $j = \Zotlabs\Zot\Finger::run($url,null);
+ if($j['success']) {
+ $y = import_xchan($j);
+ }
+ }
+
+ return;
+ }
+}
diff --git a/Zotlabs/Daemon/Importdoc.php b/Zotlabs/Daemon/Importdoc.php
new file mode 100755
index 000000000..3109a5d86
--- /dev/null
+++ b/Zotlabs/Daemon/Importdoc.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace Zotlabs\Daemon;
+
+
+class Importdoc {
+
+ static public function run($argc,$argv) {
+
+ require_once('include/help.php');
+
+ self::update_docs_dir('doc/*');
+
+ }
+
+ static public function update_docs_dir($s) {
+ $f = basename($s);
+ $d = dirname($s);
+ if($s === 'doc/html')
+ return;
+ $files = glob("$d/$f");
+ if($files) {
+ foreach($files as $fi) {
+ if($fi === 'doc/html')
+ continue;
+ if(is_dir($fi))
+ self::update_docs_dir("$fi/*");
+ else
+ store_doc_file($fi);
+ }
+ }
+ }
+}
+
+
diff --git a/Zotlabs/Daemon/Master.php b/Zotlabs/Daemon/Master.php
new file mode 100644
index 000000000..56076f612
--- /dev/null
+++ b/Zotlabs/Daemon/Master.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace Zotlabs\Daemon;
+
+if(array_search( __file__ , get_included_files()) === 0) {
+
+ require_once('include/cli_startup.php');
+ array_shift($argv);
+ $argc = count($argv);
+
+ if($argc)
+ Master::Release($argc,$argv);
+ killme();
+}
+
+
+
+class Master {
+
+ static public function Summon($arr) {
+ proc_run('php','Zotlabs/Daemon/Master.php',$arr);
+ }
+
+ static public function Release($argc,$argv) {
+ cli_startup();
+ logger('Master: release: ' . print_r($argv,true), LOGGER_ALL,LOG_DEBUG);
+ require_once('Zotlabs/Daemon/' . $argv[0] . '.php');
+ $cls = '\\Zotlabs\\Daemon\\' . $argv[0];
+ $cls::run($argc,$argv);
+ }
+} \ No newline at end of file
diff --git a/Zotlabs/Daemon/Notifier.php b/Zotlabs/Daemon/Notifier.php
new file mode 100644
index 000000000..ebc9d83a5
--- /dev/null
+++ b/Zotlabs/Daemon/Notifier.php
@@ -0,0 +1,663 @@
+<?php /** @file */
+
+namespace Zotlabs\Daemon;
+
+require_once('include/queue_fn.php');
+require_once('include/html2plain.php');
+
+/*
+ * This file was at one time responsible for doing all deliveries, but this caused
+ * big problems on shared hosting systems, where the process might get killed by the
+ * hosting provider and nothing would get delivered.
+ * It now only delivers one message under certain cases, and invokes a queued
+ * delivery mechanism (include/deliver.php) to deliver individual contacts at
+ * controlled intervals.
+ * This has a much better chance of surviving random processes getting killed
+ * by the hosting provider.
+ *
+ * The basic flow is:
+ * Identify the type of message
+ * Collect any information that needs to be sent
+ * Convert it into a suitable generic format for sending
+ * Figure out who the recipients are and if we need to relay
+ * through a conversation owner
+ * Once we know what recipients are involved, collect a list of
+ * destination sites
+ * Build and store a queue item for each unique site and invoke
+ * a delivery process for each site or a small number of sites (1-3)
+ * and add a slight delay between each delivery invocation if desired (usually)
+ *
+ */
+
+/*
+ * The notifier is typically called with:
+ *
+ * Zotlabs\Daemon\Master::Summon(array('Notifier', COMMAND, ITEM_ID));
+ *
+ * where COMMAND is one of the following:
+ *
+ * activity (in diaspora.php, dfrn_confirm.php, profiles.php)
+ * comment-import (in diaspora.php, items.php)
+ * comment-new (in item.php)
+ * drop (in diaspora.php, items.php, photos.php)
+ * edit_post (in item.php)
+ * event (in events.php)
+ * expire (in items.php)
+ * like (in like.php, poke.php)
+ * mail (in message.php)
+ * tag (in photos.php, poke.php, tagger.php)
+ * tgroup (in items.php)
+ * wall-new (in photos.php, item.php)
+ *
+ * and ITEM_ID is the id of the item in the database that needs to be sent to others.
+ *
+ * ZOT
+ * permission_create abook_id
+ * permission_update abook_id
+ * refresh_all channel_id
+ * purge_all channel_id
+ * expire channel_id
+ * relay item_id (item was relayed to owner, we will deliver it as owner)
+ * single_activity item_id (deliver to a singleton network from the appropriate clone)
+ * single_mail mail_id (deliver to a singleton network from the appropriate clone)
+ * location channel_id
+ * request channel_id xchan_hash message_id
+ * rating xlink_id
+ *
+ */
+
+
+require_once('include/zot.php');
+require_once('include/queue_fn.php');
+require_once('include/datetime.php');
+require_once('include/items.php');
+require_once('include/bbcode.php');
+require_once('include/channel.php');
+
+
+class Notifier {
+
+ static public function run($argc,$argv){
+
+ if($argc < 3)
+ return;
+
+ logger('notifier: invoked: ' . print_r($argv,true), LOGGER_DEBUG);
+
+ $cmd = $argv[1];
+
+ $item_id = $argv[2];
+
+ $extra = (($argc > 3) ? $argv[3] : null);
+
+ if(! $item_id)
+ return;
+
+ $sys = get_sys_channel();
+
+ $deliveries = array();
+
+ $dead_hubs = array();
+
+ $dh = q("select site_url from site where site_dead = 1");
+ if($dh) {
+ foreach($dh as $dead) {
+ $dead_hubs[] = $dead['site_url'];
+ }
+ }
+
+
+ $request = false;
+ $mail = false;
+ $top_level = false;
+ $location = false;
+ $recipients = array();
+ $url_recipients = array();
+ $normal_mode = true;
+ $packet_type = 'undefined';
+
+ if($cmd === 'mail' || $cmd === 'single_mail') {
+ $normal_mode = false;
+ $mail = true;
+ $private = true;
+ $message = q("SELECT * FROM `mail` WHERE `id` = %d LIMIT 1",
+ intval($item_id)
+ );
+ if(! $message) {
+ return;
+ }
+ xchan_mail_query($message[0]);
+ $uid = $message[0]['channel_id'];
+ $recipients[] = $message[0]['from_xchan']; // include clones
+ $recipients[] = $message[0]['to_xchan'];
+ $item = $message[0];
+
+ $encoded_item = encode_mail($item);
+
+ $s = q("select * from channel where channel_id = %d limit 1",
+ intval($item['channel_id'])
+ );
+ if($s)
+ $channel = $s[0];
+
+ }
+ elseif($cmd === 'request') {
+ $channel_id = $item_id;
+ $xchan = $argv[3];
+ $request_message_id = $argv[4];
+
+ $s = q("select * from channel where channel_id = %d limit 1",
+ intval($channel_id)
+ );
+ if($s)
+ $channel = $s[0];
+
+ $private = true;
+ $recipients[] = $xchan;
+ $packet_type = 'request';
+ $normal_mode = false;
+ }
+ elseif($cmd == 'permission_update' || $cmd == 'permission_create') {
+ // Get the (single) recipient
+ $r = q("select * from abook left join xchan on abook_xchan = xchan_hash where abook_id = %d and abook_self = 0",
+ intval($item_id)
+ );
+ if($r) {
+ $uid = $r[0]['abook_channel'];
+ // Get the sender
+ $channel = channelx_by_n($uid);
+ if($channel) {
+ $perm_update = array('sender' => $channel, 'recipient' => $r[0], 'success' => false, 'deliveries' => '');
+
+ if($cmd == 'permission_create')
+ call_hooks('permissions_create',$perm_update);
+ else
+ call_hooks('permissions_update',$perm_update);
+
+ if($perm_update['success']) {
+ if($perm_update['deliveries']) {
+ $deliveries[] = $perm_update['deliveries'];
+ do_delivery($deliveries);
+ }
+ return;
+ }
+ else {
+ $recipients[] = $r[0]['abook_xchan'];
+ $private = false;
+ $packet_type = 'refresh';
+ $packet_recips = array(array('guid' => $r[0]['xchan_guid'],'guid_sig' => $r[0]['xchan_guid_sig'],'hash' => $r[0]['xchan_hash']));
+ }
+ }
+ }
+ }
+ elseif($cmd === 'refresh_all') {
+ logger('notifier: refresh_all: ' . $item_id);
+ $uid = $item_id;
+ $channel = channelx_by_n($item_id);
+ $r = q("select abook_xchan from abook where abook_channel = %d",
+ intval($item_id)
+ );
+ if($r) {
+ foreach($r as $rr) {
+ $recipients[] = $rr['abook_xchan'];
+ }
+ }
+ $private = false;
+ $packet_type = 'refresh';
+ }
+ elseif($cmd === 'location') {
+ logger('notifier: location: ' . $item_id);
+ $s = q("select * from channel where channel_id = %d limit 1",
+ intval($item_id)
+ );
+ if($s)
+ $channel = $s[0];
+ $uid = $item_id;
+ $recipients = array();
+ $r = q("select abook_xchan from abook where abook_channel = %d",
+ intval($item_id)
+ );
+ if($r) {
+ foreach($r as $rr) {
+ $recipients[] = $rr['abook_xchan'];
+ }
+ }
+
+ $encoded_item = array('locations' => zot_encode_locations($channel),'type' => 'location', 'encoding' => 'zot');
+ $target_item = array('aid' => $channel['channel_account_id'],'uid' => $channel['channel_id']);
+ $private = false;
+ $packet_type = 'location';
+ $location = true;
+ }
+ elseif($cmd === 'purge_all') {
+ logger('notifier: purge_all: ' . $item_id);
+ $s = q("select * from channel where channel_id = %d limit 1",
+ intval($item_id)
+ );
+ if($s)
+ $channel = $s[0];
+ $uid = $item_id;
+ $recipients = array();
+ $r = q("select abook_xchan from abook where abook_channel = %d",
+ intval($item_id)
+ );
+ if($r) {
+ foreach($r as $rr) {
+ $recipients[] = $rr['abook_xchan'];
+ }
+ }
+ $private = false;
+ $packet_type = 'purge';
+ }
+ else {
+
+ // Normal items
+
+ // Fetch the target item
+
+ $r = q("SELECT * FROM item WHERE id = %d and parent != 0 LIMIT 1",
+ intval($item_id)
+ );
+
+ if(! $r)
+ return;
+
+ xchan_query($r);
+
+ $r = fetch_post_tags($r);
+
+ $target_item = $r[0];
+ $deleted_item = false;
+
+ if(intval($target_item['item_deleted'])) {
+ logger('notifier: target item ITEM_DELETED', LOGGER_DEBUG);
+ $deleted_item = true;
+ }
+
+ if(intval($target_item['item_type']) != ITEM_TYPE_POST) {
+ logger('notifier: target item not forwardable: type ' . $target_item['item_type'], LOGGER_DEBUG);
+ return;
+ }
+
+ // Check for non published items, but allow an exclusion for transmitting hidden file activities
+
+ if(intval($target_item['item_unpublished']) || intval($target_item['item_delayed']) ||
+ ( intval($target_item['item_hidden']) && ($target_item['obj_type'] !== ACTIVITY_OBJ_FILE))) {
+ logger('notifier: target item not published, so not forwardable', LOGGER_DEBUG);
+ return;
+ }
+
+ if(strpos($target_item['postopts'],'nodeliver') !== false) {
+ logger('notifier: target item is undeliverable', LOGGER_DEBUG);
+ return;
+ }
+
+ $s = q("select * from channel left join xchan on channel_hash = xchan_hash where channel_id = %d limit 1",
+ intval($target_item['uid'])
+ );
+ if($s)
+ $channel = $s[0];
+
+ if($channel['channel_hash'] !== $target_item['author_xchan'] && $channel['channel_hash'] !== $target_item['owner_xchan']) {
+ logger("notifier: Sending channel {$channel['channel_hash']} is not owner {$target_item['owner_xchan']} or author {$target_item['author_xchan']}", LOGGER_NORMAL, LOG_WARNING);
+ return;
+ }
+
+
+ if($target_item['id'] == $target_item['parent']) {
+ $parent_item = $target_item;
+ $top_level_post = true;
+ }
+ else {
+ // fetch the parent item
+ $r = q("SELECT * from item where id = %d order by id asc",
+ intval($target_item['parent'])
+ );
+
+ if(! $r)
+ return;
+
+ if(strpos($r[0]['postopts'],'nodeliver') !== false) {
+ logger('notifier: target item is undeliverable', LOGGER_DEBUG, LOG_NOTICE);
+ return;
+ }
+
+ xchan_query($r);
+ $r = fetch_post_tags($r);
+
+ $parent_item = $r[0];
+ $top_level_post = false;
+ }
+
+ // avoid looping of discover items 12/4/2014
+
+ if($sys && $parent_item['uid'] == $sys['channel_id'])
+ return;
+
+ $encoded_item = encode_item($target_item);
+
+ // Send comments to the owner to re-deliver to everybody in the conversation
+ // We only do this if the item in question originated on this site. This prevents looping.
+ // To clarify, a site accepting a new comment is responsible for sending it to the owner for relay.
+ // Relaying should never be initiated on a post that arrived from elsewhere.
+
+ // We should normally be able to rely on ITEM_ORIGIN, but start_delivery_chain() incorrectly set this
+ // flag on comments for an extended period. So we'll also call comment_local_origin() which looks at
+ // the hostname in the message_id and provides a second (fallback) opinion.
+
+ $relay_to_owner = (((! $top_level_post) && (intval($target_item['item_origin'])) && comment_local_origin($target_item)) ? true : false);
+
+
+
+ $uplink = false;
+
+ // $cmd === 'relay' indicates the owner is sending it to the original recipients
+ // don't allow the item in the relay command to relay to owner under any circumstances, it will loop
+
+ logger('notifier: relay_to_owner: ' . (($relay_to_owner) ? 'true' : 'false'), LOGGER_DATA, LOG_DEBUG);
+ logger('notifier: top_level_post: ' . (($top_level_post) ? 'true' : 'false'), LOGGER_DATA, LOG_DEBUG);
+
+ // tag_deliver'd post which needs to be sent back to the original author
+
+ if(($cmd === 'uplink') && intval($parent_item['item_uplink']) && (! $top_level_post)) {
+ logger('notifier: uplink');
+ $uplink = true;
+ }
+
+ if(($relay_to_owner || $uplink) && ($cmd !== 'relay')) {
+ logger('notifier: followup relay', LOGGER_DEBUG);
+ $recipients = array(($uplink) ? $parent_item['source_xchan'] : $parent_item['owner_xchan']);
+ $private = true;
+ if(! $encoded_item['flags'])
+ $encoded_item['flags'] = array();
+ $encoded_item['flags'][] = 'relay';
+ }
+ else {
+ logger('notifier: normal distribution', LOGGER_DEBUG);
+ if($cmd === 'relay')
+ logger('notifier: owner relay');
+
+ // if our parent is a tag_delivery recipient, uplink to the original author causing
+ // a delivery fork.
+
+ if(($parent_item) && intval($parent_item['item_uplink']) && (! $top_level_post) && ($cmd !== 'uplink')) {
+ // don't uplink a relayed post to the relay owner
+ if($parent_item['source_xchan'] !== $parent_item['owner_xchan']) {
+ logger('notifier: uplinking this item');
+ Master::Summon(array('Notifier','uplink',$item_id));
+ }
+ }
+
+ $private = false;
+ $recipients = collect_recipients($parent_item,$private);
+
+ // FIXME add any additional recipients such as mentions, etc.
+
+ // don't send deletions onward for other people's stuff
+ // TODO verify this is needed - copied logic from same place in old code
+
+ if(intval($target_item['item_deleted']) && (! intval($target_item['item_wall']))) {
+ logger('notifier: ignoring delete notification for non-wall item', LOGGER_NORMAL, LOG_NOTICE);
+ return;
+ }
+ }
+
+ }
+
+ $walltowall = (($top_level_post && $channel['xchan_hash'] === $target_item['author_xchan']) ? true : false);
+
+ // Generic delivery section, we have an encoded item and recipients
+ // Now start the delivery process
+
+ $x = $encoded_item;
+ $x['title'] = 'private';
+ $x['body'] = 'private';
+ logger('notifier: encoded item: ' . print_r($x,true), LOGGER_DATA, LOG_DEBUG);
+
+ stringify_array_elms($recipients);
+ if(! $recipients)
+ return;
+
+// logger('notifier: recipients: ' . print_r($recipients,true), LOGGER_NORMAL, LOG_DEBUG);
+
+ $env_recips = (($private) ? array() : null);
+
+ $details = q("select xchan_hash, xchan_instance_url, xchan_network, xchan_addr, xchan_guid, xchan_guid_sig from xchan where xchan_hash in (" . implode(',',$recipients) . ")");
+
+
+ $recip_list = array();
+
+ if($details) {
+ foreach($details as $d) {
+
+ $recip_list[] = $d['xchan_addr'] . ' (' . $d['xchan_hash'] . ')';
+ if($private)
+ $env_recips[] = array('guid' => $d['xchan_guid'],'guid_sig' => $d['xchan_guid_sig'],'hash' => $d['xchan_hash']);
+
+ if($d['xchan_network'] === 'mail' && $normal_mode) {
+ $delivery_options = get_xconfig($d['xchan_hash'],'system','delivery_mode');
+ if(! $delivery_options)
+ format_and_send_email($channel,$d,$target_item);
+ }
+ }
+ }
+
+
+ $narr = array(
+ 'channel' => $channel,
+ 'env_recips' => $env_recips,
+ 'packet_recips' => $packet_recips,
+ 'recipients' => $recipients,
+ 'item' => $item,
+ 'target_item' => $target_item,
+ 'top_level_post' => $top_level_post,
+ 'private' => $private,
+ 'relay_to_owner' => $relay_to_owner,
+ 'uplink' => $uplink,
+ 'cmd' => $cmd,
+ 'mail' => $mail,
+ 'single' => (($cmd === 'single_mail' || $cmd === 'single_activity') ? true : false),
+ 'location' => $location,
+ 'request' => $request,
+ 'normal_mode' => $normal_mode,
+ 'packet_type' => $packet_type,
+ 'walltowall' => $walltowall,
+ 'queued' => array()
+ );
+
+ call_hooks('notifier_process', $narr);
+ if($narr['queued']) {
+ foreach($narr['queued'] as $pq)
+ $deliveries[] = $pq;
+ }
+
+ // notifier_process can alter the recipient list
+
+ $recipients = $narr['recipients'];
+ $env_recips = $narr['env_recips'];
+ $packet_recips = $narr['packet_recips'];
+
+ if(($private) && (! $env_recips)) {
+ // shouldn't happen
+ logger('notifier: private message with no envelope recipients.' . print_r($argv,true), LOGGER_NORMAL, LOG_NOTICE);
+ }
+
+ logger('notifier: recipients (may be delivered to more if public): ' . print_r($recip_list,true), LOGGER_DEBUG);
+
+
+ // Now we have collected recipients (except for external mentions, FIXME)
+ // Let's reduce this to a set of hubs.
+
+ $r = q("select * from hubloc where hubloc_hash in (" . implode(',',$recipients) . ")
+ and hubloc_error = 0 and hubloc_deleted = 0"
+ );
+
+
+ if(! $r) {
+ logger('notifier: no hubs', LOGGER_NORMAL, LOG_NOTICE);
+ return;
+ }
+
+ $hubs = $r;
+
+
+
+ /**
+ * Reduce the hubs to those that are unique. For zot hubs, we need to verify uniqueness by the sitekey, since it may have been
+ * a re-install which has not yet been detected and pruned.
+ * For other networks which don't have or require sitekeys, we'll have to use the URL
+ */
+
+
+ $hublist = array(); // this provides an easily printable list for the logs
+ $dhubs = array(); // delivery hubs where we store our resulting unique array
+ $keys = array(); // array of keys to check uniquness for zot hubs
+ $urls = array(); // array of urls to check uniqueness of hubs from other networks
+
+
+ foreach($hubs as $hub) {
+ if(in_array($hub['hubloc_url'],$dead_hubs)) {
+ logger('skipping dead hub: ' . $hub['hubloc_url'], LOGGER_DEBUG, LOG_INFO);
+ continue;
+ }
+
+ if($hub['hubloc_network'] == 'zot') {
+ if(! in_array($hub['hubloc_sitekey'],$keys)) {
+ $hublist[] = $hub['hubloc_host'];
+ $dhubs[] = $hub;
+ $keys[] = $hub['hubloc_sitekey'];
+ }
+ }
+ else {
+ if(! in_array($hub['hubloc_url'],$urls)) {
+ $hublist[] = $hub['hubloc_host'];
+ $dhubs[] = $hub;
+ $urls[] = $hub['hubloc_url'];
+ }
+ }
+ }
+
+ logger('notifier: will notify/deliver to these hubs: ' . print_r($hublist,true), LOGGER_DEBUG, LOG_DEBUG);
+
+
+ foreach($dhubs as $hub) {
+
+ if($hub['hubloc_network'] !== 'zot') {
+
+ $narr = array(
+ 'channel' => $channel,
+ 'env_recips' => $env_recips,
+ 'packet_recips' => $packet_recips,
+ 'recipients' => $recipients,
+ 'item' => $item,
+ 'target_item' => $target_item,
+ 'hub' => $hub,
+ 'top_level_post' => $top_level_post,
+ 'private' => $private,
+ 'relay_to_owner' => $relay_to_owner,
+ 'uplink' => $uplink,
+ 'cmd' => $cmd,
+ 'mail' => $mail,
+ 'single' => (($cmd === 'single_mail' || $cmd === 'single_activity') ? true : false),
+ 'location' => $location,
+ 'request' => $request,
+ 'normal_mode' => $normal_mode,
+ 'packet_type' => $packet_type,
+ 'walltowall' => $walltowall,
+ 'queued' => array()
+ );
+
+
+ call_hooks('notifier_hub',$narr);
+ if($narr['queued']) {
+ foreach($narr['queued'] as $pq)
+ $deliveries[] = $pq;
+ }
+ continue;
+
+ }
+
+ // singleton deliveries by definition 'not got zot'.
+ // Single deliveries are other federated networks (plugins) and we're essentially
+ // delivering only to those that have this site url in their abook_instance
+ // and only from within a sync operation. This means if you post from a clone,
+ // and a connection is connected to one of your other clones; assuming that hub
+ // is running it will receive a sync packet. On receipt of this sync packet it
+ // will invoke a delivery to those connections which are connected to just that
+ // hub instance.
+
+ if($cmd === 'single_mail' || $cmd === 'single_activity') {
+ continue;
+ }
+
+ // default: zot protocol
+
+ $hash = random_string();
+ $packet = null;
+
+ if($packet_type === 'refresh' || $packet_type === 'purge') {
+ $packet = zot_build_packet($channel,$packet_type,(($packet_recips) ? $packet_recips : null));
+ }
+ elseif($packet_type === 'request') {
+ $packet = zot_build_packet($channel,$packet_type,$env_recips,$hub['hubloc_sitekey'],$hash,
+ array('message_id' => $request_message_id)
+ );
+ }
+
+ if($packet) {
+ queue_insert(array(
+ 'hash' => $hash,
+ 'account_id' => $channel['channel_account_id'],
+ 'channel_id' => $channel['channel_id'],
+ 'posturl' => $hub['hubloc_callback'],
+ 'notify' => $packet
+ ));
+ }
+ else {
+ $packet = zot_build_packet($channel,'notify',$env_recips,(($private) ? $hub['hubloc_sitekey'] : null),$hash);
+ queue_insert(array(
+ 'hash' => $hash,
+ 'account_id' => $target_item['aid'],
+ 'channel_id' => $target_item['uid'],
+ 'posturl' => $hub['hubloc_callback'],
+ 'notify' => $packet,
+ 'msg' => json_encode($encoded_item)
+ ));
+
+ // only create delivery reports for normal undeleted items
+ if(is_array($target_item) && array_key_exists('postopts',$target_item) && (! $target_item['item_deleted']) && (! get_config('system','disable_dreport'))) {
+ q("insert into dreport ( dreport_mid, dreport_site, dreport_recip, dreport_result, dreport_time, dreport_xchan, dreport_queue ) values ( '%s','%s','%s','%s','%s','%s','%s' ) ",
+ dbesc($target_item['mid']),
+ dbesc($hub['hubloc_host']),
+ dbesc($hub['hubloc_host']),
+ dbesc('queued'),
+ dbesc(datetime_convert()),
+ dbesc($channel['channel_hash']),
+ dbesc($hash)
+ );
+ }
+ }
+
+ $deliveries[] = $hash;
+ }
+
+ if($normal_mode) {
+ $x = q("select * from hook where hook = 'notifier_normal'");
+ if($x)
+ Master::Summon(array('Deliver_hooks',$target_item['id']));
+
+ }
+
+ if($deliveries)
+ do_delivery($deliveries);
+
+ logger('notifier: basic loop complete.', LOGGER_DEBUG);
+
+ call_hooks('notifier_end',$target_item);
+
+ logger('notifer: complete.');
+ return;
+
+ }
+}
+
diff --git a/Zotlabs/Daemon/Onedirsync.php b/Zotlabs/Daemon/Onedirsync.php
new file mode 100644
index 000000000..cc16c0b58
--- /dev/null
+++ b/Zotlabs/Daemon/Onedirsync.php
@@ -0,0 +1,76 @@
+<?php /** @file */
+
+namespace Zotlabs\Daemon;
+
+require_once('include/zot.php');
+require_once('include/dir_fns.php');
+
+
+class Onedirsync {
+
+ static public function run($argc,$argv) {
+
+ logger('onedirsync: start ' . intval($argv[1]));
+
+ if(($argc > 1) && (intval($argv[1])))
+ $update_id = intval($argv[1]);
+
+ if(! $update_id) {
+ logger('onedirsync: no update');
+ return;
+ }
+
+ $r = q("select * from updates where ud_id = %d limit 1",
+ intval($update_id)
+ );
+
+ if(! $r)
+ return;
+ if(($r[0]['ud_flags'] & UPDATE_FLAGS_UPDATED) || (! $r[0]['ud_addr']))
+ return;
+
+ // Have we probed this channel more recently than the other directory server
+ // (where we received this update from) ?
+ // If we have, we don't need to do anything except mark any older entries updated
+
+ $x = q("select * from updates where ud_addr = '%s' and ud_date > '%s' and ( ud_flags & %d )>0 order by ud_date desc limit 1",
+ dbesc($r[0]['ud_addr']),
+ dbesc($r[0]['ud_date']),
+ intval(UPDATE_FLAGS_UPDATED)
+ );
+ if($x) {
+ $y = q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and ( ud_flags & %d ) = 0 and ud_date != '%s'",
+ intval(UPDATE_FLAGS_UPDATED),
+ dbesc($r[0]['ud_addr']),
+ intval(UPDATE_FLAGS_UPDATED),
+ dbesc($x[0]['ud_date'])
+ );
+ return;
+ }
+
+ // ignore doing an update if this ud_addr refers to a known dead hubloc
+
+ $h = q("select * from hubloc where hubloc_addr = '%s' limit 1",
+ dbesc($r[0]['ud_addr'])
+ );
+ if(($h) && ($h[0]['hubloc_status'] & HUBLOC_OFFLINE)) {
+ $y = q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and ( ud_flags & %d ) = 0 ",
+ intval(UPDATE_FLAGS_UPDATED),
+ dbesc($r[0]['ud_addr']),
+ intval(UPDATE_FLAGS_UPDATED)
+ );
+
+ return;
+ }
+
+ // we might have to pull this out some day, but for now update_directory_entry()
+ // runs zot_finger() and is kind of zot specific
+
+ if($h && $h[0]['hubloc_network'] !== 'zot')
+ return;
+
+ update_directory_entry($r[0]);
+
+ return;
+ }
+}
diff --git a/Zotlabs/Daemon/Onepoll.php b/Zotlabs/Daemon/Onepoll.php
new file mode 100644
index 000000000..036a4991b
--- /dev/null
+++ b/Zotlabs/Daemon/Onepoll.php
@@ -0,0 +1,152 @@
+<?php /** @file */
+
+namespace Zotlabs\Daemon;
+
+require_once('include/zot.php');
+require_once('include/socgraph.php');
+
+
+class Onepoll {
+
+ static public function run($argc,$argv) {
+
+ logger('onepoll: start');
+
+ if(($argc > 1) && (intval($argv[1])))
+ $contact_id = intval($argv[1]);
+
+ if(! $contact_id) {
+ logger('onepoll: no contact');
+ return;
+ }
+
+ $d = datetime_convert();
+
+ $contacts = q("SELECT abook.*, xchan.*, account.*
+ FROM abook LEFT JOIN account on abook_account = account_id left join xchan on xchan_hash = abook_xchan
+ where abook_id = %d
+ and abook_pending = 0 and abook_archived = 0 and abook_blocked = 0 and abook_ignored = 0
+ AND (( account_flags = %d ) OR ( account_flags = %d )) limit 1",
+ intval($contact_id),
+ intval(ACCOUNT_OK),
+ intval(ACCOUNT_UNVERIFIED)
+ );
+
+ if(! $contacts) {
+ logger('onepoll: abook_id not found: ' . $contact_id);
+ return;
+ }
+
+ $contact = $contacts[0];
+
+ $t = $contact['abook_updated'];
+
+ $importer_uid = $contact['abook_channel'];
+
+ $r = q("SELECT * from channel left join xchan on channel_hash = xchan_hash where channel_id = %d limit 1",
+ intval($importer_uid)
+ );
+
+ if(! $r)
+ return;
+
+ $importer = $r[0];
+
+ logger("onepoll: poll: ({$contact['id']}) IMPORTER: {$importer['xchan_name']}, CONTACT: {$contact['xchan_name']}");
+
+ $last_update = ((($contact['abook_updated'] === $contact['abook_created']) || ($contact['abook_updated'] === NULL_DATE))
+ ? datetime_convert('UTC','UTC','now - 7 days')
+ : datetime_convert('UTC','UTC',$contact['abook_updated'] . ' - 2 days')
+ );
+
+ if($contact['xchan_network'] === 'rss') {
+ logger('onepoll: processing feed ' . $contact['xchan_name'], LOGGER_DEBUG);
+ handle_feed($importer['channel_id'],$contact_id,$contact['xchan_hash']);
+ q("update abook set abook_connected = '%s' where abook_id = %d",
+ dbesc(datetime_convert()),
+ intval($contact['abook_id'])
+ );
+ return;
+ }
+
+ if($contact['xchan_network'] !== 'zot')
+ return;
+
+ // update permissions
+
+ $x = zot_refresh($contact,$importer);
+
+ $responded = false;
+ $updated = datetime_convert();
+ $connected = datetime_convert();
+ if(! $x) {
+ // mark for death by not updating abook_connected, this is caught in include/poller.php
+ q("update abook set abook_updated = '%s' where abook_id = %d",
+ dbesc($updated),
+ intval($contact['abook_id'])
+ );
+ }
+ else {
+ q("update abook set abook_updated = '%s', abook_connected = '%s' where abook_id = %d",
+ dbesc($updated),
+ dbesc($connected),
+ intval($contact['abook_id'])
+ );
+ $responded = true;
+ }
+
+ if(! $responded)
+ return;
+
+ if($contact['xchan_connurl']) {
+ $fetch_feed = true;
+ $x = null;
+
+ if(! ($contact['abook_their_perms'] & PERMS_R_STREAM ))
+ $fetch_feed = false;
+
+ if($fetch_feed) {
+
+ $feedurl = str_replace('/poco/','/zotfeed/',$contact['xchan_connurl']);
+ $feedurl .= '?f=&mindate=' . urlencode($last_update);
+
+ $x = z_fetch_url($feedurl);
+
+ logger('feed_update: ' . print_r($x,true), LOGGER_DATA);
+
+ }
+
+ if(($x) && ($x['success'])) {
+ $total = 0;
+ logger('onepoll: feed update ' . $contact['xchan_name'] . ' ' . $feedurl);
+
+ $j = json_decode($x['body'],true);
+ if($j['success'] && $j['messages']) {
+ foreach($j['messages'] as $message) {
+ $results = process_delivery(array('hash' => $contact['xchan_hash']), get_item_elements($message),
+ array(array('hash' => $importer['xchan_hash'])), false);
+ logger('onepoll: feed_update: process_delivery: ' . print_r($results,true), LOGGER_DATA);
+ $total ++;
+ }
+ logger("onepoll: $total messages processed");
+ }
+ }
+ }
+
+
+ // update the poco details for this connection
+
+ if($contact['xchan_connurl']) {
+ $r = q("SELECT xlink_id from xlink
+ where xlink_xchan = '%s' and xlink_updated > %s - INTERVAL %s and xlink_static = 0 limit 1",
+ intval($contact['xchan_hash']),
+ db_utcnow(), db_quoteinterval('1 DAY')
+ );
+ if(! $r) {
+ poco_load($contact['xchan_hash'],$contact['xchan_connurl']);
+ }
+ }
+
+ return;
+ }
+}
diff --git a/Zotlabs/Daemon/Poller.php b/Zotlabs/Daemon/Poller.php
new file mode 100644
index 000000000..75efbf8f7
--- /dev/null
+++ b/Zotlabs/Daemon/Poller.php
@@ -0,0 +1,202 @@
+<?php /** @file */
+
+namespace Zotlabs\Daemon;
+
+class Poller {
+
+ static public function run($argc,$argv) {
+
+ $maxsysload = intval(get_config('system','maxloadavg'));
+ if($maxsysload < 1)
+ $maxsysload = 50;
+ if(function_exists('sys_getloadavg')) {
+ $load = sys_getloadavg();
+ if(intval($load[0]) > $maxsysload) {
+ logger('system: load ' . $load . ' too high. Poller deferred to next scheduled run.');
+ return;
+ }
+ }
+
+ $interval = intval(get_config('system','poll_interval'));
+ if(! $interval)
+ $interval = ((get_config('system','delivery_interval') === false) ? 3 : intval(get_config('system','delivery_interval')));
+
+ // Check for a lockfile. If it exists, but is over an hour old, it's stale. Ignore it.
+ $lockfile = 'store/[data]/poller';
+ if((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 3600))
+ && (! get_config('system','override_poll_lockfile'))) {
+ logger("poller: Already running");
+ return;
+ }
+
+ // Create a lockfile. Needs two vars, but $x doesn't need to contain anything.
+ file_put_contents($lockfile, $x);
+
+ logger('poller: start');
+
+ $manual_id = 0;
+ $generation = 0;
+
+ $force = false;
+ $restart = false;
+
+ if(($argc > 1) && ($argv[1] == 'force'))
+ $force = true;
+
+ if(($argc > 1) && ($argv[1] == 'restart')) {
+ $restart = true;
+ $generation = intval($argv[2]);
+ if(! $generation)
+ killme();
+ }
+
+ if(($argc > 1) && intval($argv[1])) {
+ $manual_id = intval($argv[1]);
+ $force = true;
+ }
+
+
+ $sql_extra = (($manual_id) ? " AND abook_id = " . intval($manual_id) . " " : "");
+
+ reload_plugins();
+
+ $d = datetime_convert();
+
+ // Only poll from those with suitable relationships
+
+ $abandon_sql = (($abandon_days)
+ ? sprintf(" AND account_lastlog > %s - INTERVAL %s ", db_utcnow(), db_quoteinterval(intval($abandon_days).' DAY'))
+ : ''
+ );
+
+ $randfunc = db_getfunc('RAND');
+
+ $contacts = q("SELECT * FROM abook LEFT JOIN xchan on abook_xchan = xchan_hash
+ LEFT JOIN account on abook_account = account_id
+ where abook_self = 0
+ $sql_extra
+ AND (( account_flags = %d ) OR ( account_flags = %d )) $abandon_sql ORDER BY $randfunc",
+ intval(ACCOUNT_OK),
+ intval(ACCOUNT_UNVERIFIED) // FIXME
+
+ );
+
+ if($contacts) {
+
+ foreach($contacts as $contact) {
+
+ $update = false;
+
+ $t = $contact['abook_updated'];
+ $c = $contact['abook_connected'];
+
+ if(intval($contact['abook_feed'])) {
+ $min = service_class_fetch($contact['abook_channel'],'minimum_feedcheck_minutes');
+ if(! $min)
+ $min = intval(get_config('system','minimum_feedcheck_minutes'));
+ if(! $min)
+ $min = 60;
+ $x = datetime_convert('UTC','UTC',"now - $min minutes");
+ if($c < $x) {
+ Master::Summon(array('Onepoll',$contact['abook_id']));
+ if($interval)
+ @time_sleep_until(microtime(true) + (float) $interval);
+ }
+ continue;
+ }
+
+
+ if($contact['xchan_network'] !== 'zot')
+ continue;
+
+ if($c == $t) {
+ if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day"))
+ $update = true;
+ }
+ else {
+
+ // if we've never connected with them, start the mark for death countdown from now
+
+ if($c == NULL_DATE) {
+ $r = q("update abook set abook_connected = '%s' where abook_id = %d",
+ dbesc(datetime_convert()),
+ intval($contact['abook_id'])
+ );
+ $c = datetime_convert();
+ $update = true;
+ }
+
+ // He's dead, Jim
+
+ if(strcmp(datetime_convert('UTC','UTC', 'now'),datetime_convert('UTC','UTC', $c . " + 30 day")) > 0) {
+ $r = q("update abook set abook_archived = 1 where abook_id = %d",
+ intval($contact['abook_id'])
+ );
+ $update = false;
+ continue;
+ }
+
+ if(intval($contact['abook_archived'])) {
+ $update = false;
+ continue;
+ }
+
+ // might be dead, so maybe don't poll quite so often
+
+ // recently deceased, so keep up the regular schedule for 3 days
+
+ if((strcmp(datetime_convert('UTC','UTC', 'now'),datetime_convert('UTC','UTC', $c . " + 3 day")) > 0)
+ && (strcmp(datetime_convert('UTC','UTC', 'now'),datetime_convert('UTC','UTC', $t . " + 1 day")) > 0))
+ $update = true;
+
+ // After that back off and put them on a morphine drip
+
+ if(strcmp(datetime_convert('UTC','UTC', 'now'),datetime_convert('UTC','UTC', $t . " + 2 day")) > 0) {
+ $update = true;
+ }
+
+ }
+
+ if(intval($contact['abook_pending']) || intval($contact['abook_archived']) || intval($contact['abook_ignored']) || intval($contact['abook_blocked']))
+ continue;
+
+ if((! $update) && (! $force))
+ continue;
+
+ Master::Summon(array('Onepoll',$contact['abook_id']));
+ if($interval)
+ @time_sleep_until(microtime(true) + (float) $interval);
+
+ }
+ }
+
+ if($dirmode == DIRECTORY_MODE_SECONDARY || $dirmode == DIRECTORY_MODE_PRIMARY) {
+ $r = q("SELECT u.ud_addr, u.ud_id, u.ud_last FROM updates AS u INNER JOIN (SELECT ud_addr, max(ud_id) AS ud_id FROM updates WHERE ( ud_flags & %d ) = 0 AND ud_addr != '' AND ( ud_last = '%s' OR ud_last > %s - INTERVAL %s ) GROUP BY ud_addr) AS s ON s.ud_id = u.ud_id ",
+ intval(UPDATE_FLAGS_UPDATED),
+ dbesc(NULL_DATE),
+ db_utcnow(), db_quoteinterval('7 DAY')
+ );
+ if($r) {
+ foreach($r as $rr) {
+
+ // If they didn't respond when we attempted before, back off to once a day
+ // After 7 days we won't bother anymore
+
+ if($rr['ud_last'] != NULL_DATE)
+ if($rr['ud_last'] > datetime_convert('UTC','UTC', 'now - 1 day'))
+ continue;
+ Master::Summon(array('Onedirsync',$rr['ud_id']));
+ if($interval)
+ @time_sleep_until(microtime(true) + (float) $interval);
+ }
+ }
+ }
+
+ set_config('system','lastpoll',datetime_convert());
+
+ //All done - clear the lockfile
+ @unlink($lockfile);
+
+ return;
+ }
+}
diff --git a/Zotlabs/Daemon/Queue.php b/Zotlabs/Daemon/Queue.php
new file mode 100644
index 000000000..27306589d
--- /dev/null
+++ b/Zotlabs/Daemon/Queue.php
@@ -0,0 +1,90 @@
+<?php /** @file */
+
+namespace Zotlabs\Daemon;
+
+require_once('include/queue_fn.php');
+require_once('include/zot.php');
+
+class Queue {
+
+ static public function run($argc,$argv) {
+
+ require_once('include/items.php');
+ require_once('include/bbcode.php');
+
+ if(argc() > 1)
+ $queue_id = argv(1);
+ else
+ $queue_id = 0;
+
+ logger('queue: start');
+
+ // delete all queue items more than 3 days old
+ // but first mark these sites dead if we haven't heard from them in a month
+
+ $r = q("select outq_posturl from outq where outq_created < %s - INTERVAL %s",
+ db_utcnow(), db_quoteinterval('3 DAY')
+ );
+ if($r) {
+ foreach($r as $rr) {
+ $site_url = '';
+ $h = parse_url($rr['outq_posturl']);
+ $desturl = $h['scheme'] . '://' . $h['host'] . (($h['port']) ? ':' . $h['port'] : '');
+ q("update site set site_dead = 1 where site_dead = 0 and site_url = '%s' and site_update < %s - INTERVAL %s",
+ dbesc($desturl),
+ db_utcnow(), db_quoteinterval('1 MONTH')
+ );
+ }
+ }
+
+ $r = q("DELETE FROM outq WHERE outq_created < %s - INTERVAL %s",
+ db_utcnow(), db_quoteinterval('3 DAY')
+ );
+
+ if($queue_id) {
+ $r = q("SELECT * FROM outq WHERE outq_hash = '%s' LIMIT 1",
+ dbesc($queue_id)
+ );
+ }
+ else {
+
+ // For the first 12 hours we'll try to deliver every 15 minutes
+ // After that, we'll only attempt delivery once per hour.
+ // This currently only handles the default queue drivers ('zot' or '') which we will group by posturl
+ // so that we don't start off a thousand deliveries for a couple of dead hubs.
+ // The zot driver will deliver everything destined for a single hub once contact is made (*if* contact is made).
+ // Other drivers will have to do something different here and may need their own query.
+
+ // Note: this requires some tweaking as new posts to long dead hubs once a day will keep them in the
+ // "every 15 minutes" category. We probably need to prioritise them when inserted into the queue
+ // or just prior to this query based on recent and long-term delivery history. If we have good reason to believe
+ // the site is permanently down, there's no reason to attempt delivery at all, or at most not more than once
+ // or twice a day.
+
+ // FIXME: can we sort postgres on outq_priority and maintain the 'distinct' ?
+ // The order by max(outq_priority) might be a dodgy query because of the group by.
+ // The desired result is to return a sequence in the order most likely to be delivered in this run.
+ // If a hub has already been sitting in the queue for a few days, they should be delivered last;
+ // hence every failure should drop them further down the priority list.
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $prefix = 'DISTINCT ON (outq_posturl)';
+ $suffix = 'ORDER BY outq_posturl';
+ } else {
+ $prefix = '';
+ $suffix = 'GROUP BY outq_posturl ORDER BY max(outq_priority)';
+ }
+ $r = q("SELECT $prefix * FROM outq WHERE outq_delivered = 0 and (( outq_created > %s - INTERVAL %s and outq_updated < %s - INTERVAL %s ) OR ( outq_updated < %s - INTERVAL %s )) $suffix",
+ db_utcnow(), db_quoteinterval('12 HOUR'),
+ db_utcnow(), db_quoteinterval('15 MINUTE'),
+ db_utcnow(), db_quoteinterval('1 HOUR')
+ );
+ }
+ if(! $r)
+ return;
+
+ foreach($r as $rr) {
+ queue_deliver($rr);
+ }
+ }
+}
diff --git a/Zotlabs/Daemon/Ratenotif.php b/Zotlabs/Daemon/Ratenotif.php
new file mode 100644
index 000000000..1cba5e26d
--- /dev/null
+++ b/Zotlabs/Daemon/Ratenotif.php
@@ -0,0 +1,113 @@
+<?php
+
+namespace Zotlabs\Daemon;
+
+require_once('include/zot.php');
+require_once('include/queue_fn.php');
+
+
+class Ratenotif {
+
+ static public function run($argc,$argv) {
+
+ require_once("datetime.php");
+ require_once('include/items.php');
+
+ if($argc < 3)
+ return;
+
+
+ logger('ratenotif: invoked: ' . print_r($argv,true), LOGGER_DEBUG);
+
+ $cmd = $argv[1];
+
+ $item_id = $argv[2];
+
+
+ if($cmd === 'rating') {
+ $r = q("select * from xlink where xlink_id = %d and xlink_static = 1 limit 1",
+ intval($item_id)
+ );
+ if(! $r) {
+ logger('rating not found');
+ return;
+ }
+
+ $encoded_item = array(
+ 'type' => 'rating',
+ 'encoding' => 'zot',
+ 'target' => $r[0]['xlink_link'],
+ 'rating' => intval($r[0]['xlink_rating']),
+ 'rating_text' => $r[0]['xlink_rating_text'],
+ 'signature' => $r[0]['xlink_sig'],
+ 'edited' => $r[0]['xlink_updated']
+ );
+ }
+
+ $channel = channelx_by_hash($r[0]['xlink_xchan']);
+ if(! $channel) {
+ logger('no channel');
+ return;
+ }
+
+
+ $primary = get_directory_primary();
+
+ if(! $primary)
+ return;
+
+
+ $interval = ((get_config('system','delivery_interval') !== false)
+ ? intval(get_config('system','delivery_interval')) : 2 );
+
+ $deliveries_per_process = intval(get_config('system','delivery_batch_count'));
+
+ if($deliveries_per_process <= 0)
+ $deliveries_per_process = 1;
+
+ $deliver = array();
+
+ $x = z_fetch_url($primary . '/regdir');
+ if($x['success']) {
+ $j = json_decode($x['body'],true);
+ if($j && $j['success'] && is_array($j['directories'])) {
+
+ foreach($j['directories'] as $h) {
+ if($h == z_root())
+ continue;
+
+ $hash = random_string();
+ $n = zot_build_packet($channel,'notify',null,null,$hash);
+
+ queue_insert(array(
+ 'hash' => $hash,
+ 'account_id' => $channel['channel_account_id'],
+ 'channel_id' => $channel['channel_id'],
+ 'posturl' => $h . '/post',
+ 'notify' => $n,
+ 'msg' => json_encode($encoded_item)
+ ));
+
+ $deliver[] = $hash;
+
+ if(count($deliver) >= $deliveries_per_process) {
+ Master::Summon(array('Deliver',$deliver));
+ $deliver = array();
+ if($interval)
+ @time_sleep_until(microtime(true) + (float) $interval);
+ }
+ }
+
+ // catch any stragglers
+
+ if(count($deliver)) {
+ Master::Summon(array('Deliver',$deliver));
+ }
+ }
+ }
+
+ logger('ratenotif: complete.');
+ return;
+
+ }
+}
diff --git a/Zotlabs/Extend/Hook.php b/Zotlabs/Extend/Hook.php
index 713165faf..fc1e95367 100644
--- a/Zotlabs/Extend/Hook.php
+++ b/Zotlabs/Extend/Hook.php
@@ -10,7 +10,7 @@ class Hook {
$function = serialize($function);
}
- $r = q("SELECT * FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `function` = '%s' and priority = %d and hook_version = %d LIMIT 1",
+ $r = q("SELECT * FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `fn` = '%s' and priority = %d and hook_version = %d LIMIT 1",
dbesc($hook),
dbesc($file),
dbesc($function),
@@ -23,13 +23,13 @@ class Hook {
// To aid in upgrade and transition, remove old settings for any registered hooks that match in all respects except
// for priority or hook_version
- $r = q("DELETE FROM `hook` where `hook` = '%s' and `file` = '%s' and `function` = '%s'",
+ $r = q("DELETE FROM `hook` where `hook` = '%s' and `file` = '%s' and `fn` = '%s'",
dbesc($hook),
dbesc($file),
dbesc($function)
);
- $r = q("INSERT INTO `hook` (`hook`, `file`, `function`, `priority`, `hook_version`) VALUES ( '%s', '%s', '%s', %d, %d )",
+ $r = q("INSERT INTO `hook` (`hook`, `file`, `fn`, `priority`, `hook_version`) VALUES ( '%s', '%s', '%s', %d, %d )",
dbesc($hook),
dbesc($file),
dbesc($function),
@@ -44,7 +44,7 @@ class Hook {
if(is_array($function)) {
$function = serialize($function);
}
- $r = q("DELETE FROM hook WHERE hook = '%s' AND `file` = '%s' AND `function` = '%s' and priority = %d and hook_version = %d",
+ $r = q("DELETE FROM hook WHERE hook = '%s' AND `file` = '%s' AND `fn` = '%s' and priority = %d and hook_version = %d",
dbesc($hook),
dbesc($file),
dbesc($function),
diff --git a/Zotlabs/Lib/AConfig.php b/Zotlabs/Lib/AConfig.php
new file mode 100644
index 000000000..24ec97dfa
--- /dev/null
+++ b/Zotlabs/Lib/AConfig.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Zotlabs\Lib;
+
+// account configuration storage is built on top of the under-utilised xconfig
+
+class AConfig {
+
+ static public function Load($account_id) {
+ return XConfig::Load('a_' . $account_id);
+ }
+
+ static public function Get($account_id,$family,$key) {
+ return XConfig::Get('a_' . $account_id,$family,$key);
+ }
+
+ static public function Set($account_id,$family,$key,$value) {
+ return XConfig::Get('a_' . $account_id,$family,$key,$value);
+ }
+
+ static public function Delete($account_id,$family,$key) {
+ return XConfig::Delete('a_' . $account_id,$family,$key);
+ }
+
+}
diff --git a/Zotlabs/Lib/AbConfig.php b/Zotlabs/Lib/AbConfig.php
new file mode 100644
index 000000000..f2d6522b9
--- /dev/null
+++ b/Zotlabs/Lib/AbConfig.php
@@ -0,0 +1,73 @@
+<?php
+
+namespace Zotlabs\Lib;
+
+
+class AbConfig {
+
+ static public function Load($chash,$xhash) {
+ $r = q("select * from abconfig where chan = '%s' and xchan = '%s'",
+ dbesc($chash),
+ dbesc($xhash)
+ );
+ return $r;
+ }
+
+
+ static public function Get($chash,$xhash,$family,$key) {
+ $r = q("select * from abconfig where chan = '%s' and xchan = '%s' and cat = '%s' and k = '%s' limit 1",
+ dbesc($chash),
+ dbesc($xhash),
+ dbesc($family),
+ dbesc($key)
+ );
+ if($r) {
+ return ((preg_match('|^a:[0-9]+:{.*}$|s', $r[0]['v'])) ? unserialize($r[0]['v']) : $r[0]['v']);
+ }
+ return false;
+ }
+
+
+ static public function Set($chash,$xhash,$family,$key,$value) {
+
+ $dbvalue = ((is_array($value)) ? serialize($value) : $value);
+ $dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
+
+ if(self::Get($chash,$xhash,$family,$key) === false) {
+ $r = q("insert into abconfig ( chan, xchan, cat, k, v ) values ( '%s', '%s', '%s', '%s', '%s' ) ",
+ dbesc($chash),
+ dbesc($xhash),
+ dbesc($family),
+ dbesc($key),
+ dbesc($dbvalue)
+ );
+ }
+ else {
+ $r = q("update abconfig set v = '%s' where chan = '%s' and xchan = '%s' and cat = '%s' and k = '%s' ",
+ dbesc($dbvalue),
+ dbesc($chash),
+ dbesc($xhash),
+ dbesc($family),
+ dbesc($key)
+ );
+ }
+
+ if($r)
+ return $value;
+ return false;
+ }
+
+
+ static public function Delete($chash,$xhash,$family,$key) {
+
+ $r = q("delete from abconfig where chan = '%s' and xchan = '%s' and cat = '%s' and k = '%s' ",
+ dbesc($chash),
+ dbesc($xhash),
+ dbesc($family),
+ dbesc($key)
+ );
+
+ return $r;
+ }
+
+} \ No newline at end of file
diff --git a/Zotlabs/Lib/Apps.php b/Zotlabs/Lib/Apps.php
new file mode 100644
index 000000000..20556212a
--- /dev/null
+++ b/Zotlabs/Lib/Apps.php
@@ -0,0 +1,708 @@
+<?php /** @file */
+
+namespace Zotlabs\Lib;
+
+/**
+ * Apps
+ *
+ */
+
+require_once('include/plugin.php');
+require_once('include/channel.php');
+
+
+class Apps {
+
+ static public $installed_system_apps = null;
+
+ static public function get_system_apps($translate = true) {
+
+ $ret = array();
+ if(is_dir('apps'))
+ $files = glob('apps/*.apd');
+ else
+ $files = glob('app/*.apd');
+ if($files) {
+ foreach($files as $f) {
+ $x = self::parse_app_description($f,$translate);
+ if($x) {
+ $ret[] = $x;
+ }
+ }
+ }
+ $files = glob('addon/*/*.apd');
+ if($files) {
+ foreach($files as $f) {
+ $n = basename($f,'.apd');
+ if(plugin_is_installed($n)) {
+ $x = self::parse_app_description($f,$translate);
+ if($x) {
+ $ret[] = $x;
+ }
+ }
+ }
+ }
+
+ return $ret;
+
+ }
+
+
+ static public function import_system_apps() {
+ if(! local_channel())
+ return;
+ $apps = self::get_system_apps(false);
+
+
+ self::$installed_system_apps = q("select * from app where app_system = 1 and app_channel = %d",
+ intval(local_channel())
+ );
+
+ if($apps) {
+ foreach($apps as $app) {
+ $id = self::check_install_system_app($app);
+ // $id will be boolean true or false to install an app, or an integer id to update an existing app
+ if($id === false)
+ continue;
+ if($id !== true) {
+ // if we already installed this app, but it changed, preserve any categories we created
+ $s = '';
+ $r = q("select * from term where otype = %d and oid = d",
+ intval(TERM_OBJ_APP),
+ intval($id)
+ );
+ if($r) {
+ foreach($r as $t) {
+ if($s)
+ $s .= ',';
+ $s .= $t['term'];
+ }
+ $app['categories'] = $s;
+ }
+ }
+ $app['uid'] = local_channel();
+ $app['guid'] = hash('whirlpool',$app['name']);
+ $app['system'] = 1;
+ self::app_install(local_channel(),$app);
+ }
+ }
+ }
+
+ /**
+ * Install the system app if no system apps have been installed, or if a new system app
+ * is discovered, or if the version of a system app changes.
+ */
+
+ static public function check_install_system_app($app) {
+ if((! is_array(self::$installed_system_apps)) || (! count(self::$installed_system_apps))) {
+ return true;
+ }
+ $notfound = true;
+ foreach(self::$installed_system_apps as $iapp) {
+ if($iapp['app_id'] == hash('whirlpool',$app['name'])) {
+ $notfound = false;
+ if($iapp['app_version'] != $app['version']) {
+ return intval($iapp['app_id']);
+ }
+ }
+ }
+ return $notfound;
+ }
+
+
+ static public function app_name_compare($a,$b) {
+ return strcmp($a['name'],$b['name']);
+ }
+
+
+ static public function parse_app_description($f,$translate = true) {
+ $ret = array();
+
+ $baseurl = z_root();
+ $channel = \App::get_channel();
+ $address = (($channel) ? $channel['channel_address'] : '');
+
+ //future expansion
+
+ $observer = \App::get_observer();
+
+
+ $lines = @file($f);
+ if($lines) {
+ foreach($lines as $x) {
+ if(preg_match('/^([a-zA-Z].*?):(.*?)$/ism',$x,$matches)) {
+ $ret[$matches[1]] = trim(str_replace(array('$baseurl','$nick'),array($baseurl,$address),$matches[2]));
+ }
+ }
+ }
+
+
+ if(! $ret['photo'])
+ $ret['photo'] = $baseurl . '/' . get_default_profile_photo(80);
+
+ $ret['type'] = 'system';
+
+ foreach($ret as $k => $v) {
+ if(strpos($v,'http') === 0)
+ $ret[$k] = zid($v);
+ }
+
+ if(array_key_exists('desc',$ret))
+ $ret['desc'] = str_replace(array('\'','"'),array('&#39;','&dquot;'),$ret['desc']);
+
+ if(array_key_exists('target',$ret))
+ $ret['target'] = str_replace(array('\'','"'),array('&#39;','&dquot;'),$ret['target']);
+
+ if(array_key_exists('version',$ret))
+ $ret['version'] = str_replace(array('\'','"'),array('&#39;','&dquot;'),$ret['version']);
+
+
+ if(array_key_exists('requires',$ret)) {
+ $requires = explode(',',$ret['requires']);
+ foreach($requires as $require) {
+ $require = trim(strtolower($require));
+ switch($require) {
+ case 'nologin':
+ if(local_channel())
+ unset($ret);
+ break;
+ case 'admin':
+ if(! is_site_admin())
+ unset($ret);
+ break;
+ case 'local_channel':
+ if(! local_channel())
+ unset($ret);
+ break;
+ case 'public_profile':
+ if(! is_public_profile())
+ unset($ret);
+ break;
+ case 'observer':
+ if(! $observer)
+ unset($ret);
+ break;
+ default:
+ if(! (local_channel() && feature_enabled(local_channel(),$require)))
+ unset($ret);
+ break;
+
+ }
+ }
+ }
+ if($ret) {
+ if($translate)
+ self::translate_system_apps($ret);
+ return $ret;
+ }
+ return false;
+ }
+
+
+ static public function translate_system_apps(&$arr) {
+ $apps = array(
+ 'Site Admin' => t('Site Admin'),
+ 'Bug Report' => t('Bug Report'),
+ 'View Bookmarks' => t('View Bookmarks'),
+ 'My Chatrooms' => t('My Chatrooms'),
+ 'Connections' => t('Connections'),
+ 'Firefox Share' => t('Firefox Share'),
+ 'Remote Diagnostics' => t('Remote Diagnostics'),
+ 'Suggest Channels' => t('Suggest Channels'),
+ 'Login' => t('Login'),
+ 'Channel Manager' => t('Channel Manager'),
+ 'Grid' => t('Grid'),
+ 'Settings' => t('Settings'),
+ 'Files' => t('Files'),
+ 'Webpages' => t('Webpages'),
+ 'Wiki' => t('Wiki'),
+ 'Channel Home' => t('Channel Home'),
+ 'View Profile' => t('View Profile'),
+ 'Photos' => t('Photos'),
+ 'Events' => t('Events'),
+ 'Directory' => t('Directory'),
+ 'Help' => t('Help'),
+ 'Mail' => t('Mail'),
+ 'Mood' => t('Mood'),
+ 'Poke' => t('Poke'),
+ 'Chat' => t('Chat'),
+ 'Search' => t('Search'),
+ 'Probe' => t('Probe'),
+ 'Suggest' => t('Suggest'),
+ 'Random Channel' => t('Random Channel'),
+ 'Invite' => t('Invite'),
+ 'Features' => t('Features'),
+ 'Language' => t('Language'),
+ 'Post' => t('Post'),
+ 'Profile Photo' => t('Profile Photo')
+ );
+
+ if(array_key_exists($arr['name'],$apps))
+ $arr['name'] = $apps[$arr['name']];
+
+ }
+
+
+ // papp is a portable app
+
+ static public function app_render($papp,$mode = 'view') {
+
+ /**
+ * modes:
+ * view: normal mode for viewing an app via bbcode from a conversation or page
+ * provides install/update button if you're logged in locally
+ * list: normal mode for viewing an app on the app page
+ * no buttons are shown
+ * edit: viewing the app page in editing mode provides a delete button
+ */
+
+ $installed = false;
+
+ if(! $papp)
+ return;
+
+ if(! $papp['photo'])
+ $papp['photo'] = z_root() . '/' . get_default_profile_photo(80);
+
+ self::translate_system_apps($papp);
+
+ $papp['papp'] = self::papp_encode($papp);
+
+ if(! strstr($papp['url'],'://'))
+ $papp['url'] = z_root() . ((strpos($papp['url'],'/') === 0) ? '' : '/') . $papp['url'];
+
+ foreach($papp as $k => $v) {
+ if(strpos($v,'http') === 0 && $k != 'papp')
+ $papp[$k] = zid($v);
+ if($k === 'desc')
+ $papp['desc'] = str_replace(array('\'','"'),array('&#39;','&dquot;'),$papp['desc']);
+
+ if($k === 'requires') {
+ $requires = explode(',',$v);
+ foreach($requires as $require) {
+ $require = trim(strtolower($require));
+ switch($require) {
+ case 'nologin':
+ if(local_channel())
+ return '';
+ break;
+ case 'admin':
+ if(! is_site_admin())
+ return '';
+ break;
+ case 'local_channel':
+ if(! local_channel())
+ return '';
+ break;
+ case 'public_profile':
+ if(! is_public_profile())
+ return '';
+ break;
+ case 'observer':
+ $observer = \App::get_observer();
+ if(! $observer)
+ return '';
+ break;
+ default:
+ if(! (local_channel() && feature_enabled(local_channel(),$require)))
+ return '';
+ break;
+
+ }
+ }
+ }
+ }
+
+ $hosturl = '';
+
+ if(local_channel()) {
+ $installed = self::app_installed(local_channel(),$papp);
+ $hosturl = z_root() . '/';
+ }
+ elseif(remote_channel()) {
+ $observer = \App::get_observer();
+ if($observer && $observer['xchan_network'] === 'zot') {
+ // some folks might have xchan_url redirected offsite, use the connurl
+ $x = parse_url($observer['xchan_connurl']);
+ if($x) {
+ $hosturl = $x['scheme'] . '://' . $x['host'] . '/';
+ }
+ }
+ }
+
+ $install_action = (($installed) ? t('Update') : t('Install'));
+
+ return replace_macros(get_markup_template('app.tpl'),array(
+ '$app' => $papp,
+ '$hosturl' => $hosturl,
+ '$purchase' => (($papp['page'] && (! $installed)) ? t('Purchase') : ''),
+ '$install' => (($hosturl && $mode == 'view') ? $install_action : ''),
+ '$edit' => ((local_channel() && $installed && $mode == 'edit') ? t('Edit') : ''),
+ '$delete' => ((local_channel() && $installed && $mode == 'edit') ? t('Delete') : '')
+ ));
+ }
+
+ static public function app_install($uid,$app) {
+ $app['uid'] = $uid;
+
+ if(self::app_installed($uid,$app))
+ $x = self::app_update($app);
+ else
+ $x = self::app_store($app);
+
+ if($x['success']) {
+ $r = q("select * from app where app_id = '%s' and app_channel = %d limit 1",
+ dbesc($x['app_id']),
+ intval($uid)
+ );
+ if($r) {
+ if(! $r[0]['app_system']) {
+ if($app['categories'] && (! $app['term'])) {
+ $r[0]['term'] = q("select * from term where otype = %d and oid = d",
+ intval(TERM_OBJ_APP),
+ intval($r[0]['id'])
+ );
+ build_sync_packet($uid,array('app' => $r[0]));
+ }
+ }
+ }
+ return $x['app_id'];
+ }
+ return false;
+ }
+
+ static public function app_destroy($uid,$app) {
+
+
+ if($uid && $app['guid']) {
+
+ $x = q("select * from app where app_id = '%s' and app_channel = %d limit 1",
+ dbesc($app['guid']),
+ intval($uid)
+ );
+ if($x) {
+ $x[0]['app_deleted'] = 1;
+ q("delete from term where otype = %d and oid = %d",
+ intval(TERM_OBJ_APP),
+ intval($x[0]['id'])
+ );
+ if($x[0]['app_system']) {
+ $r = q("update app set app_deleted = 1 where app_id = '%s' and app_channel = %d",
+ dbesc($app['guid']),
+ intval($uid)
+ );
+ }
+ else {
+ $r = q("delete from app where app_id = '%s' and app_channel = %d",
+ dbesc($app['guid']),
+ intval($uid)
+ );
+
+ // we don't sync system apps - they may be completely different on the other system
+ build_sync_packet($uid,array('app' => $x));
+ }
+ }
+ }
+ }
+
+
+ static public function app_installed($uid,$app) {
+
+ $r = q("select id from app where app_id = '%s' and app_version = '%s' and app_channel = %d limit 1",
+ dbesc((array_key_exists('guid',$app)) ? $app['guid'] : ''),
+ dbesc((array_key_exists('version',$app)) ? $app['version'] : ''),
+ intval($uid)
+ );
+ return(($r) ? true : false);
+
+ }
+
+
+ static public function app_list($uid, $deleted = false, $cat = '') {
+ if($deleted)
+ $sql_extra = " and app_deleted = 1 ";
+ else
+ $sql_extra = " and app_deleted = 0 ";
+
+ if($cat) {
+ $r = q("select oid from term where otype = %d and term = '%s'",
+ intval(TERM_OBJ_APP),
+ dbesc($cat)
+ );
+ if(! $r)
+ return $r;
+ $sql_extra .= " and app.id in ( ";
+ $s = '';
+ foreach($r as $rr) {
+ if($s)
+ $s .= ',';
+ $s .= intval($rr['oid']);
+ }
+ $sql_extra .= $s . ') ';
+ }
+
+ $r = q("select * from app where app_channel = %d $sql_extra order by app_name asc",
+ intval($uid)
+ );
+ if($r) {
+ for($x = 0; $x < count($r); $x ++) {
+ if(! $r[$x]['app_system'])
+ $r[$x]['type'] = 'personal';
+ $r[$x]['term'] = q("select * from term where otype = %d and oid = %d",
+ intval(TERM_OBJ_APP),
+ intval($r[$x]['id'])
+ );
+ }
+ }
+ return($r);
+ }
+
+
+ static public function app_decode($s) {
+ $x = base64_decode(str_replace(array('<br />',"\r","\n",' '),array('','','',''),$s));
+ return json_decode($x,true);
+ }
+
+
+ static public function app_store($arr) {
+
+ // logger('app_store: ' . print_r($arr,true));
+
+ $darray = array();
+ $ret = array('success' => false);
+
+ $darray['app_url'] = ((x($arr,'url')) ? $arr['url'] : '');
+ $darray['app_channel'] = ((x($arr,'uid')) ? $arr['uid'] : 0);
+
+ if((! $darray['app_url']) || (! $darray['app_channel']))
+ return $ret;
+
+ if($arr['photo'] && ! strstr($arr['photo'],z_root())) {
+ $x = import_xchan_photo($arr['photo'],get_observer_hash(),true);
+ $arr['photo'] = $x[1];
+ }
+
+
+ $darray['app_id'] = ((x($arr,'guid')) ? $arr['guid'] : random_string(). '.' . \App::get_hostname());
+ $darray['app_sig'] = ((x($arr,'sig')) ? $arr['sig'] : '');
+ $darray['app_author'] = ((x($arr,'author')) ? $arr['author'] : get_observer_hash());
+ $darray['app_name'] = ((x($arr,'name')) ? escape_tags($arr['name']) : t('Unknown'));
+ $darray['app_desc'] = ((x($arr,'desc')) ? escape_tags($arr['desc']) : '');
+ $darray['app_photo'] = ((x($arr,'photo')) ? $arr['photo'] : z_root() . '/' . get_default_profile_photo(80));
+ $darray['app_version'] = ((x($arr,'version')) ? escape_tags($arr['version']) : '');
+ $darray['app_addr'] = ((x($arr,'addr')) ? escape_tags($arr['addr']) : '');
+ $darray['app_price'] = ((x($arr,'price')) ? escape_tags($arr['price']) : '');
+ $darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : '');
+ $darray['app_requires'] = ((x($arr,'requires')) ? escape_tags($arr['requires']) : '');
+ $darray['app_system'] = ((x($arr,'system')) ? intval($arr['system']) : 0);
+ $darray['app_deleted'] = ((x($arr,'deleted')) ? intval($arr['deleted']) : 0);
+
+ $created = datetime_convert();
+
+ $r = q("insert into app ( app_id, app_sig, app_author, app_name, app_desc, app_url, app_photo, app_version, app_channel, app_addr, app_price, app_page, app_requires, app_created, app_edited, app_system, app_deleted ) values ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', %d, %d )",
+ dbesc($darray['app_id']),
+ dbesc($darray['app_sig']),
+ dbesc($darray['app_author']),
+ dbesc($darray['app_name']),
+ dbesc($darray['app_desc']),
+ dbesc($darray['app_url']),
+ dbesc($darray['app_photo']),
+ dbesc($darray['app_version']),
+ intval($darray['app_channel']),
+ dbesc($darray['app_addr']),
+ dbesc($darray['app_price']),
+ dbesc($darray['app_page']),
+ dbesc($darray['app_requires']),
+ dbesc($created),
+ dbesc($created),
+ intval($darray['app_system']),
+ intval($darray['app_deleted'])
+ );
+ if($r) {
+ $ret['success'] = true;
+ $ret['app_id'] = $darray['app_id'];
+ }
+ if($arr['categories']) {
+ $x = q("select id from app where app_id = '%s' and app_channel = %d limit 1",
+ dbesc($darray['app_id']),
+ intval($darray['app_channel'])
+ );
+ $y = explode(',',$arr['categories']);
+ if($y) {
+ foreach($y as $t) {
+ $t = trim($t);
+ if($t) {
+ store_item_tag($darray['app_channel'],$x[0]['id'],TERM_OBJ_APP,TERM_CATEGORY,escape_tags($t),escape_tags(z_root() . '/apps/?f=&cat=' . escape_tags($t)));
+ }
+ }
+ }
+ }
+
+ return $ret;
+ }
+
+
+ static public function app_update($arr) {
+
+ $darray = array();
+ $ret = array('success' => false);
+
+ $darray['app_url'] = ((x($arr,'url')) ? $arr['url'] : '');
+ $darray['app_channel'] = ((x($arr,'uid')) ? $arr['uid'] : 0);
+ $darray['app_id'] = ((x($arr,'guid')) ? $arr['guid'] : 0);
+
+ if((! $darray['app_url']) || (! $darray['app_channel']) || (! $darray['app_id']))
+ return $ret;
+
+ if($arr['photo'] && ! strstr($arr['photo'],z_root())) {
+ $x = import_xchan_photo($arr['photo'],get_observer_hash(),true);
+ $arr['photo'] = $x[1];
+ }
+
+ $darray['app_sig'] = ((x($arr,'sig')) ? $arr['sig'] : '');
+ $darray['app_author'] = ((x($arr,'author')) ? $arr['author'] : get_observer_hash());
+ $darray['app_name'] = ((x($arr,'name')) ? escape_tags($arr['name']) : t('Unknown'));
+ $darray['app_desc'] = ((x($arr,'desc')) ? escape_tags($arr['desc']) : '');
+ $darray['app_photo'] = ((x($arr,'photo')) ? $arr['photo'] : z_root() . '/' . get_default_profile_photo(80));
+ $darray['app_version'] = ((x($arr,'version')) ? escape_tags($arr['version']) : '');
+ $darray['app_addr'] = ((x($arr,'addr')) ? escape_tags($arr['addr']) : '');
+ $darray['app_price'] = ((x($arr,'price')) ? escape_tags($arr['price']) : '');
+ $darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : '');
+ $darray['app_requires'] = ((x($arr,'requires')) ? escape_tags($arr['requires']) : '');
+ $darray['app_system'] = ((x($arr,'system')) ? intval($arr['system']) : 0);
+ $darray['app_deleted'] = ((x($arr,'deleted')) ? intval($arr['deleted']) : 0);
+
+ $edited = datetime_convert();
+
+ $r = q("update app set app_sig = '%s', app_author = '%s', app_name = '%s', app_desc = '%s', app_url = '%s', app_photo = '%s', app_version = '%s', app_addr = '%s', app_price = '%s', app_page = '%s', app_requires = '%s', app_edited = '%s', app_system = %d, app_deleted = %d where app_id = '%s' and app_channel = %d",
+ dbesc($darray['app_sig']),
+ dbesc($darray['app_author']),
+ dbesc($darray['app_name']),
+ dbesc($darray['app_desc']),
+ dbesc($darray['app_url']),
+ dbesc($darray['app_photo']),
+ dbesc($darray['app_version']),
+ dbesc($darray['app_addr']),
+ dbesc($darray['app_price']),
+ dbesc($darray['app_page']),
+ dbesc($darray['app_requires']),
+ dbesc($edited),
+ intval($darray['app_system']),
+ intval($darray['app_deleted']),
+ dbesc($darray['app_id']),
+ intval($darray['app_channel'])
+ );
+ if($r) {
+ $ret['success'] = true;
+ $ret['app_id'] = $darray['app_id'];
+ }
+
+ $x = q("select id from app where app_id = '%s' and app_channel = %d limit 1",
+ dbesc($darray['app_id']),
+ intval($darray['app_channel'])
+ );
+ if($x) {
+ q("delete from term where otype = %d and oid = %d",
+ intval(TERM_OBJ_APP),
+ intval($x[0]['id'])
+ );
+ if($arr['categories']) {
+ $y = explode(',',$arr['categories']);
+ if($y) {
+ foreach($y as $t) {
+ $t = trim($t);
+ if($t) {
+ store_item_tag($darray['app_channel'],$x[0]['id'],TERM_OBJ_APP,TERM_CATEGORY,escape_tags($t),escape_tags(z_root() . '/apps/?f=&cat=' . escape_tags($t)));
+ }
+ }
+ }
+ }
+ }
+
+ return $ret;
+
+ }
+
+
+ static public function app_encode($app,$embed = false) {
+
+ $ret = array();
+
+ $ret['type'] = 'personal';
+
+ if($app['app_id'])
+ $ret['guid'] = $app['app_id'];
+
+ if($app['app_id'])
+ $ret['guid'] = $app['app_id'];
+
+ if($app['app_sig'])
+ $ret['sig'] = $app['app_sig'];
+
+ if($app['app_author'])
+ $ret['author'] = $app['app_author'];
+
+ if($app['app_name'])
+ $ret['name'] = $app['app_name'];
+
+ if($app['app_desc'])
+ $ret['desc'] = $app['app_desc'];
+
+ if($app['app_url'])
+ $ret['url'] = $app['app_url'];
+
+ if($app['app_photo'])
+ $ret['photo'] = $app['app_photo'];
+
+ if($app['app_version'])
+ $ret['version'] = $app['app_version'];
+
+ if($app['app_addr'])
+ $ret['addr'] = $app['app_addr'];
+
+ if($app['app_price'])
+ $ret['price'] = $app['app_price'];
+
+ if($app['app_page'])
+ $ret['page'] = $app['app_page'];
+
+ if($app['app_requires'])
+ $ret['requires'] = $app['app_requires'];
+
+ if($app['app_system'])
+ $ret['system'] = $app['app_system'];
+
+ if($app['app_deleted'])
+ $ret['deleted'] = $app['app_deleted'];
+
+ if($app['term']) {
+ $s = '';
+ foreach($app['term'] as $t) {
+ if($s)
+ $s .= ',';
+ $s .= $t['term'];
+ }
+ $ret['categories'] = $s;
+ }
+
+
+ if(! $embed)
+ return $ret;
+
+ if(array_key_exists('categories',$ret))
+ unset($ret['categories']);
+
+ $j = json_encode($ret);
+ return '[app]' . chunk_split(base64_encode($j),72,"\n") . '[/app]';
+
+ }
+
+
+ static public function papp_encode($papp) {
+ return chunk_split(base64_encode(json_encode($papp)),72,"\n");
+
+ }
+
+}
+
+
diff --git a/Zotlabs/Lib/Chatroom.php b/Zotlabs/Lib/Chatroom.php
new file mode 100644
index 000000000..e1a9a10b3
--- /dev/null
+++ b/Zotlabs/Lib/Chatroom.php
@@ -0,0 +1,267 @@
+<?php
+namespace Zotlabs\Lib;
+
+/**
+ * @brief Chat related functions.
+ */
+
+
+
+class Chatroom {
+ /**
+ * @brief Creates a chatroom.
+ *
+ * @param array $channel
+ * @param array $arr
+ * @return An associative array containing:
+ * - success: A boolean
+ * - message: (optional) A string
+ */
+
+ static public function create($channel, $arr) {
+
+ $ret = array('success' => false);
+
+ $name = trim($arr['name']);
+ if(! $name) {
+ $ret['message'] = t('Missing room name');
+ return $ret;
+ }
+
+ $r = q("select cr_id from chatroom where cr_uid = %d and cr_name = '%s' limit 1",
+ intval($channel['channel_id']),
+ dbesc($name)
+ );
+ if($r) {
+ $ret['message'] = t('Duplicate room name');
+ return $ret;
+ }
+
+ $r = q("select count(cr_id) as total from chatroom where cr_aid = %d",
+ intval($channel['channel_account_id'])
+ );
+ if($r)
+ $limit = service_class_fetch($channel['channel_id'], 'chatrooms');
+
+ if(($r) && ($limit !== false) && ($r[0]['total'] >= $limit)) {
+ $ret['message'] = upgrade_message();
+ return $ret;
+ }
+
+ if(! array_key_exists('expire', $arr))
+ $arr['expire'] = 120; // minutes, e.g. 2 hours
+
+ $created = datetime_convert();
+
+ $x = q("insert into chatroom ( cr_aid, cr_uid, cr_name, cr_created, cr_edited, cr_expire, allow_cid, allow_gid, deny_cid, deny_gid )
+ values ( %d, %d , '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s' ) ",
+ intval($channel['channel_account_id']),
+ intval($channel['channel_id']),
+ dbesc($name),
+ dbesc($created),
+ dbesc($created),
+ intval($arr['expire']),
+ dbesc($arr['allow_cid']),
+ dbesc($arr['allow_gid']),
+ dbesc($arr['deny_cid']),
+ dbesc($arr['deny_gid'])
+ );
+
+ if($x)
+ $ret['success'] = true;
+
+ return $ret;
+ }
+
+
+ static public function destroy($channel,$arr) {
+
+ $ret = array('success' => false);
+
+ if(intval($arr['cr_id']))
+ $sql_extra = " and cr_id = " . intval($arr['cr_id']) . " ";
+ elseif(trim($arr['cr_name']))
+ $sql_extra = " and cr_name = '" . protect_sprintf(dbesc(trim($arr['cr_name']))) . "' ";
+ else {
+ $ret['message'] = t('Invalid room specifier.');
+ return $ret;
+ }
+
+ $r = q("select * from chatroom where cr_uid = %d $sql_extra limit 1",
+ intval($channel['channel_id'])
+ );
+ if(! $r) {
+ $ret['message'] = t('Invalid room specifier.');
+ return $ret;
+ }
+
+ build_sync_packet($channel['channel_id'],array('chatroom' => $r));
+
+ q("delete from chatroom where cr_id = %d",
+ intval($r[0]['cr_id'])
+ );
+ if($r[0]['cr_id']) {
+ q("delete from chatpresence where cp_room = %d",
+ intval($r[0]['cr_id'])
+ );
+ q("delete from chat where chat_room = %d",
+ intval($r[0]['cr_id'])
+ );
+ }
+
+ $ret['success'] = true;
+ return $ret;
+ }
+
+
+ static public function enter($observer_xchan, $room_id, $status, $client) {
+
+ if(! $room_id || ! $observer_xchan)
+ return;
+
+ $r = q("select * from chatroom where cr_id = %d limit 1",
+ intval($room_id)
+ );
+ if(! $r) {
+ notice( t('Room not found.') . EOL);
+ return false;
+ }
+ require_once('include/security.php');
+ $sql_extra = permissions_sql($r[0]['cr_uid']);
+
+ $x = q("select * from chatroom where cr_id = %d and cr_uid = %d $sql_extra limit 1",
+ intval($room_id),
+ intval($r[0]['cr_uid'])
+ );
+ if(! $x) {
+ notice( t('Permission denied.') . EOL);
+ return false;
+ }
+
+ $limit = service_class_fetch($r[0]['cr_uid'], 'chatters_inroom');
+ if($limit !== false) {
+ $y = q("select count(*) as total from chatpresence where cp_room = %d",
+ intval($room_id)
+ );
+ if($y && $y[0]['total'] > $limit) {
+ notice( t('Room is full') . EOL);
+ return false;
+ }
+ }
+
+ if(intval($x[0]['cr_expire'])) {
+ $r = q("delete from chat where created < %s - INTERVAL %s and chat_room = %d",
+ db_utcnow(),
+ db_quoteinterval( intval($x[0]['cr_expire']) . ' MINUTE' ),
+ intval($x[0]['cr_id'])
+ );
+ }
+
+ $r = q("select * from chatpresence where cp_xchan = '%s' and cp_room = %d limit 1",
+ dbesc($observer_xchan),
+ intval($room_id)
+ );
+ if($r) {
+ q("update chatpresence set cp_last = '%s' where cp_id = %d and cp_client = '%s'",
+ dbesc(datetime_convert()),
+ intval($r[0]['cp_id']),
+ dbesc($client)
+ );
+ return true;
+ }
+
+ $r = q("insert into chatpresence ( cp_room, cp_xchan, cp_last, cp_status, cp_client )
+ values ( %d, '%s', '%s', '%s', '%s' )",
+ intval($room_id),
+ dbesc($observer_xchan),
+ dbesc(datetime_convert()),
+ dbesc($status),
+ dbesc($client)
+ );
+
+ return $r;
+ }
+
+
+ function leave($observer_xchan, $room_id, $client) {
+ if(! $room_id || ! $observer_xchan)
+ return;
+
+ $r = q("select * from chatpresence where cp_xchan = '%s' and cp_room = %d and cp_client = '%s' limit 1",
+ dbesc($observer_xchan),
+ intval($room_id),
+ dbesc($client)
+ );
+ if($r) {
+ q("delete from chatpresence where cp_id = %d",
+ intval($r[0]['cp_id'])
+ );
+ }
+
+ return true;
+ }
+
+
+ static public function roomlist($uid) {
+ require_once('include/security.php');
+ $sql_extra = permissions_sql($uid);
+
+ $r = q("select allow_cid, allow_gid, deny_cid, deny_gid, cr_name, cr_expire, cr_id, count(cp_id) as cr_inroom from chatroom left join chatpresence on cr_id = cp_room where cr_uid = %d $sql_extra group by cr_name, cr_id order by cr_name",
+ intval($uid)
+ );
+
+ return $r;
+ }
+
+ static public function list_count($uid) {
+ require_once('include/security.php');
+ $sql_extra = permissions_sql($uid);
+
+ $r = q("select count(*) as total from chatroom where cr_uid = %d $sql_extra",
+ intval($uid)
+ );
+
+ return $r[0]['total'];
+ }
+
+ /**
+ * create a chat message via API.
+ * It is the caller's responsibility to enter the room.
+ */
+
+ static public function message($uid, $room_id, $xchan, $text) {
+
+ $ret = array('success' => false);
+
+ if(! $text)
+ return;
+
+ $sql_extra = permissions_sql($uid);
+
+ $r = q("select * from chatroom where cr_uid = %d and cr_id = %d $sql_extra",
+ intval($uid),
+ intval($room_id)
+ );
+ if(! $r)
+ return $ret;
+
+ $arr = array(
+ 'chat_room' => $room_id,
+ 'chat_xchan' => $xchan,
+ 'chat_text' => $text
+ );
+
+ call_hooks('chat_message', $arr);
+
+ $x = q("insert into chat ( chat_room, chat_xchan, created, chat_text )
+ values( %d, '%s', '%s', '%s' )",
+ intval($room_id),
+ dbesc($xchan),
+ dbesc(datetime_convert()),
+ dbesc($arr['chat_text'])
+ );
+
+ $ret['success'] = true;
+ return $ret;
+ }
+}
diff --git a/Zotlabs/Lib/Config.php b/Zotlabs/Lib/Config.php
new file mode 100644
index 000000000..d4ee1aeda
--- /dev/null
+++ b/Zotlabs/Lib/Config.php
@@ -0,0 +1,166 @@
+<?php /** @file */
+
+namespace Zotlabs\Lib;
+
+
+class Config {
+
+ /**
+ * @brief Loads the hub's configuration from database to a cached storage.
+ *
+ * Retrieve a category ($family) of config variables from database to a cached
+ * storage in the global App::$config[$family].
+ *
+ * @param string $family
+ * The category of the configuration value
+ */
+
+ static public function Load($family) {
+ if(! array_key_exists($family, \App::$config))
+ \App::$config[$family] = array();
+
+ if(! array_key_exists('config_loaded', \App::$config[$family])) {
+ $r = q("SELECT * FROM config WHERE cat = '%s'", dbesc($family));
+ if($r !== false) {
+ if($r) {
+ foreach($r as $rr) {
+ $k = $rr['k'];
+ \App::$config[$family][$k] = $rr['v'];
+ }
+ }
+ \App::$config[$family]['config_loaded'] = true;
+ }
+ }
+ }
+
+ /**
+ * @brief Sets a configuration value for the hub.
+ *
+ * Stores a config value ($value) in the category ($family) under the key ($key).
+ *
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to set
+ * @param mixed $value
+ * The value to store in the configuration
+ * @return mixed
+ * Return the set value, or false if the database update failed
+ */
+
+ static public function Set($family,$key,$value) {
+ // manage array value
+ $dbvalue = ((is_array($value)) ? serialize($value) : $value);
+ $dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
+
+ if(get_config($family, $key) === false || (! self::get_from_storage($family, $key))) {
+ $ret = q("INSERT INTO config ( cat, k, v ) VALUES ( '%s', '%s', '%s' ) ",
+ dbesc($family),
+ dbesc($key),
+ dbesc($dbvalue)
+ );
+ if($ret) {
+ \App::$config[$family][$key] = $value;
+ $ret = $value;
+ }
+ return $ret;
+ }
+
+ $ret = q("UPDATE config SET v = '%s' WHERE cat = '%s' AND k = '%s'",
+ dbesc($dbvalue),
+ dbesc($family),
+ dbesc($key)
+ );
+
+ if($ret) {
+ \App::$config[$family][$key] = $value;
+ $ret = $value;
+ }
+ return $ret;
+
+ }
+
+ /**
+ * @brief Get a particular config variable given the category name ($family)
+ * and a key.
+ *
+ * Get a particular config variable from the given category ($family) and the
+ * $key from a cached storage in App::$config[$family]. If a key is found in the
+ * DB but does not exist in local config cache, pull it into the cache so we
+ * do not have to hit the DB again for this item.
+ *
+ * Returns false if not set.
+ *
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to query
+ * @return mixed Return value or false on error or if not set
+ */
+
+ static public function Get($family,$key) {
+ if((! array_key_exists($family, \App::$config)) || (! array_key_exists('config_loaded', \App::$config[$family])))
+ self::Load($family);
+
+ if(array_key_exists('config_loaded', \App::$config[$family])) {
+ if(! array_key_exists($key, \App::$config[$family])) {
+ return false;
+ }
+ return ((! is_array(\App::$config[$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', \App::$config[$family][$key]))
+ ? unserialize(\App::$config[$family][$key])
+ : \App::$config[$family][$key]
+ );
+ }
+
+ return false;
+ }
+
+ /**
+ * @brief Deletes the given key from the hub's configuration database.
+ *
+ * Removes the configured value from the stored cache in App::$config[$family]
+ * and removes it from the database.
+ *
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to delete
+ * @return mixed
+ */
+
+ static public function Delete($family,$key) {
+
+ $ret = false;
+
+ if(array_key_exists($family, \App::$config) && array_key_exists($key, \App::$config[$family]))
+ unset(\App::$config[$family][$key]);
+ $ret = q("DELETE FROM config WHERE cat = '%s' AND k = '%s'",
+ dbesc($family),
+ dbesc($key)
+ );
+ return $ret;
+ }
+
+
+ /**
+ * @brief Returns a value directly from the database configuration storage.
+ *
+ * This function queries directly the database and bypasses the chached storage
+ * from get_config($family, $key).
+ *
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to query
+ * @return mixed
+ */
+
+ static private function get_from_storage($family,$key) {
+ $ret = q("SELECT * FROM config WHERE cat = '%s' AND k = '%s' LIMIT 1",
+ dbesc($family),
+ dbesc($key)
+ );
+ return $ret;
+ }
+
+}
diff --git a/Zotlabs/Lib/Enotify.php b/Zotlabs/Lib/Enotify.php
new file mode 100644
index 000000000..56c717468
--- /dev/null
+++ b/Zotlabs/Lib/Enotify.php
@@ -0,0 +1,685 @@
+<?php
+
+namespace Zotlabs\Lib;
+
+/**
+ * @brief File with functions and a class for generating system and email notifications.
+ */
+
+
+class Enotify {
+
+ /**
+ * @brief
+ *
+ * @param array $params an assoziative array with:
+ * * \e string \b from_xchan sender xchan hash
+ * * \e string \b to_xchan recipient xchan hash
+ * * \e array \b item an assoziative array
+ * * \e int \b type one of the NOTIFY_* constants from boot.php
+ * * \e string \b link
+ * * \e string \b parent_mid
+ * * \e string \b otype
+ * * \e string \b verb
+ * * \e string \b activity
+ */
+
+
+ static public function submit($params) {
+
+ logger('notification: entry', LOGGER_DEBUG);
+
+ // throw a small amount of entropy into the system to breakup duplicates arriving at the same precise instant.
+ usleep(mt_rand(0, 10000));
+
+ if ($params['from_xchan']) {
+ $x = q("select * from xchan where xchan_hash = '%s' limit 1",
+ dbesc($params['from_xchan'])
+ );
+ }
+ if ($params['to_xchan']) {
+ $y = q("select channel.*, account.* from channel left join account on channel_account_id = account_id
+ where channel_hash = '%s' and channel_removed = 0 limit 1",
+ dbesc($params['to_xchan'])
+ );
+ }
+ if ($x & $y) {
+ $sender = $x[0];
+ $recip = $y[0];
+ } else {
+ logger('notification: no sender or recipient.');
+ logger('sender: ' . $params['from_xchan']);
+ logger('recip: ' . $params['to_xchan']);
+ return;
+ }
+
+ // from here on everything is in the recipients language
+
+ push_lang($recip['account_language']); // should probably have a channel language
+
+ $banner = t('$Projectname Notification');
+ $product = t('$projectname'); // PLATFORM_NAME;
+ $siteurl = z_root();
+ $thanks = t('Thank You,');
+ $sitename = get_config('system','sitename');
+ $site_admin = sprintf( t('%s Administrator'), $sitename);
+
+ $sender_name = $product;
+ $hostname = \App::get_hostname();
+ if(strpos($hostname,':'))
+ $hostname = substr($hostname,0,strpos($hostname,':'));
+
+ // Do not translate 'noreply' as it must be a legal 7-bit email address
+ $sender_email = 'noreply' . '@' . $hostname;
+
+ $additional_mail_header = "";
+
+ if(array_key_exists('item', $params)) {
+ require_once('include/conversation.php');
+ // if it's a normal item...
+ if (array_key_exists('verb', $params['item'])) {
+ // localize_item() alters the original item so make a copy first
+ $i = $params['item'];
+ logger('calling localize');
+ localize_item($i);
+ $title = $i['title'];
+ $body = $i['body'];
+ $private = (($i['item_private']) || intval($i['item_obscured']));
+ }
+ else {
+ $title = $params['item']['title'];
+ $body = $params['item']['body'];
+ }
+ }
+ else {
+ $title = $body = '';
+ }
+
+
+ // e.g. "your post", "David's photo", etc.
+ $possess_desc = t('%s <!item_type!>');
+
+ if ($params['type'] == NOTIFY_MAIL) {
+ logger('notification: mail');
+ $subject = sprintf( t('[Hubzilla:Notify] New mail received at %s'),$sitename);
+
+ $preamble = sprintf( t('%1$s, %2$s sent you a new private message at %3$s.'),$recip['channel_name'], $sender['xchan_name'],$sitename);
+ $epreamble = sprintf( t('%1$s sent you %2$s.'),'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]', '[zrl=$itemlink]' . t('a private message') . '[/zrl]');
+ $sitelink = t('Please visit %s to view and/or reply to your private messages.');
+ $tsitelink = sprintf( $sitelink, $siteurl . '/mail/' . $params['item']['id'] );
+ $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '/mail/' . $params['item']['id'] . '">' . $sitename . '</a>');
+ $itemlink = $siteurl . '/mail/' . $params['item']['id'];
+ }
+
+ if ($params['type'] == NOTIFY_COMMENT) {
+// logger("notification: params = " . print_r($params, true), LOGGER_DEBUG);
+
+ $itemlink = $params['link'];
+
+ // ignore like/unlike activity on posts - they probably require a sepearate notification preference
+
+ if (array_key_exists('item',$params) && (! visible_activity($params['item'])))
+ return;
+
+ $parent_mid = $params['parent_mid'];
+
+ // Check to see if there was already a notify for this post.
+ // If so don't create a second notification
+
+ $p = null;
+ $p = q("select id from notify where link = '%s' and uid = %d limit 1",
+ dbesc($params['link']),
+ intval($recip['channel_id'])
+ );
+ if ($p) {
+ logger('notification: comment already notified');
+ pop_lang();
+ return;
+ }
+
+
+ // if it's a post figure out who's post it is.
+
+ $p = null;
+
+ if($params['otype'] === 'item' && $parent_mid) {
+ $p = q("select * from item where mid = '%s' and uid = %d limit 1",
+ dbesc($parent_mid),
+ intval($recip['channel_id'])
+ );
+ }
+
+ xchan_query($p);
+
+
+ $item_post_type = item_post_type($p[0]);
+// $private = $p[0]['item_private'];
+ $parent_id = $p[0]['id'];
+
+ $parent_item = $p[0];
+
+ //$possess_desc = str_replace('<!item_type!>',$possess_desc);
+
+ // "a post"
+ $dest_str = sprintf(t('%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]'),
+ $recip['channel_name'],
+ '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
+ $itemlink,
+ $item_post_type);
+
+ // "George Bull's post"
+ if($p)
+ $dest_str = sprintf(t('%1$s, %2$s commented on [zrl=%3$s]%4$s\'s %5$s[/zrl]'),
+ $recip['channel_name'],
+ '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
+ $itemlink,
+ $p[0]['author']['xchan_name'],
+ $item_post_type);
+
+ // "your post"
+ if($p[0]['owner']['xchan_name'] == $p[0]['author']['xchan_name'] && intval($p[0]['item_wall']))
+ $dest_str = sprintf(t('%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]'),
+ $recip['channel_name'],
+ '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
+ $itemlink,
+ $item_post_type);
+
+ // Some mail softwares relies on subject field for threading.
+ // So, we cannot have different subjects for notifications of the same thread.
+ // Before this we have the name of the replier on the subject rendering
+ // differents subjects for messages on the same thread.
+
+ $subject = sprintf( t('[Hubzilla:Notify] Comment to conversation #%1$d by %2$s'), $parent_id, $sender['xchan_name']);
+ $preamble = sprintf( t('%1$s, %2$s commented on an item/conversation you have been following.'), $recip['channel_name'], $sender['xchan_name']);
+ $epreamble = $dest_str;
+
+ $sitelink = t('Please visit %s to view and/or reply to the conversation.');
+ $tsitelink = sprintf( $sitelink, $siteurl );
+ $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
+ }
+
+ if($params['type'] == NOTIFY_WALL) {
+ $subject = sprintf( t('[Hubzilla:Notify] %s posted to your profile wall') , $sender['xchan_name']);
+
+ $preamble = sprintf( t('%1$s, %2$s posted to your profile wall at %3$s') , $recip['channel_name'], $sender['xchan_name'], $sitename);
+
+ $epreamble = sprintf( t('%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]') ,
+ $recip['channel_name'],
+ '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
+ $params['link']);
+
+ $sitelink = t('Please visit %s to view and/or reply to the conversation.');
+ $tsitelink = sprintf( $sitelink, $siteurl );
+ $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
+ $itemlink = $params['link'];
+ }
+
+ if ($params['type'] == NOTIFY_TAGSELF) {
+
+ $p = null;
+ $p = q("select id from notify where link = '%s' and uid = %d limit 1",
+ dbesc($params['link']),
+ intval($recip['channel_id'])
+ );
+ if ($p) {
+ logger('enotify: tag: already notified about this post');
+ pop_lang();
+ return;
+ }
+
+ $subject = sprintf( t('[Hubzilla:Notify] %s tagged you') , $sender['xchan_name']);
+ $preamble = sprintf( t('%1$s, %2$s tagged you at %3$s') , $recip['channel_name'], $sender['xchan_name'], $sitename);
+ $epreamble = sprintf( t('%1$s, %2$s [zrl=%3$s]tagged you[/zrl].') ,
+ $recip['channel_name'],
+ '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
+ $params['link']);
+
+ $sitelink = t('Please visit %s to view and/or reply to the conversation.');
+ $tsitelink = sprintf( $sitelink, $siteurl );
+ $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
+ $itemlink = $params['link'];
+ }
+
+ if ($params['type'] == NOTIFY_POKE) {
+ $subject = sprintf( t('[Hubzilla:Notify] %1$s poked you') , $sender['xchan_name']);
+ $preamble = sprintf( t('%1$s, %2$s poked you at %3$s') , $recip['channel_name'], $sender['xchan_name'], $sitename);
+ $epreamble = sprintf( t('%1$s, %2$s [zrl=%2$s]poked you[/zrl].') ,
+ $recip['channel_name'],
+ '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
+ $params['link']);
+
+ $subject = str_replace('poked', t($params['activity']), $subject);
+ $preamble = str_replace('poked', t($params['activity']), $preamble);
+ $epreamble = str_replace('poked', t($params['activity']), $epreamble);
+
+ $sitelink = t('Please visit %s to view and/or reply to the conversation.');
+ $tsitelink = sprintf( $sitelink, $siteurl );
+ $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
+ $itemlink = $params['link'];
+ }
+
+ if ($params['type'] == NOTIFY_TAGSHARE) {
+ $subject = sprintf( t('[Hubzilla:Notify] %s tagged your post') , $sender['xchan_name']);
+ $preamble = sprintf( t('%1$s, %2$s tagged your post at %3$s') , $recip['channel_name'],$sender['xchan_name'], $sitename);
+ $epreamble = sprintf( t('%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]') ,
+ $recip['channel_name'],
+ '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
+ $itemlink);
+
+ $sitelink = t('Please visit %s to view and/or reply to the conversation.');
+ $tsitelink = sprintf( $sitelink, $siteurl );
+ $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
+ $itemlink = $params['link'];
+ }
+
+ if ($params['type'] == NOTIFY_INTRO) {
+ $subject = sprintf( t('[Hubzilla:Notify] Introduction received'));
+ $preamble = sprintf( t('%1$s, you\'ve received an new connection request from \'%2$s\' at %3$s'), $recip['channel_name'], $sender['xchan_name'], $sitename);
+ $epreamble = sprintf( t('%1$s, you\'ve received [zrl=%2$s]a new connection request[/zrl] from %3$s.'),
+ $recip['channel_name'],
+ $siteurl . '/connections/ifpending',
+ '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]');
+ $body = sprintf( t('You may visit their profile at %s'),$sender['xchan_url']);
+
+ $sitelink = t('Please visit %s to approve or reject the connection request.');
+ $tsitelink = sprintf( $sitelink, $siteurl . '/connections/ifpending');
+ $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '/connections/ifpending">' . $sitename . '</a>');
+ $itemlink = $params['link'];
+ }
+
+ if ($params['type'] == NOTIFY_SUGGEST) {
+ $subject = sprintf( t('[Hubzilla:Notify] Friend suggestion received'));
+ $preamble = sprintf( t('%1$s, you\'ve received a friend suggestion from \'%2$s\' at %3$s'), $recip['channel_name'], $sender['xchan_name'], $sitename);
+ $epreamble = sprintf( t('%1$s, you\'ve received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from %4$s.'),
+ $recip['channel_name'],
+ $itemlink,
+ '[zrl=' . $params['item']['url'] . ']' . $params['item']['name'] . '[/zrl]',
+ '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]');
+
+ $body = t('Name:') . ' ' . $params['item']['name'] . "\n";
+ $body .= t('Photo:') . ' ' . $params['item']['photo'] . "\n";
+ $body .= sprintf( t('You may visit their profile at %s'),$params['item']['url']);
+
+ $sitelink = t('Please visit %s to approve or reject the suggestion.');
+ $tsitelink = sprintf( $sitelink, $siteurl );
+ $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
+ $itemlink = $params['link'];
+ }
+
+ if ($params['type'] == NOTIFY_CONFIRM) {
+ // ?
+ }
+
+ if ($params['type'] == NOTIFY_SYSTEM) {
+ // ?
+ }
+
+ $h = array(
+ 'params' => $params,
+ 'subject' => $subject,
+ 'preamble' => $preamble,
+ 'epreamble' => $epreamble,
+ 'body' => $body,
+ 'sitelink' => $sitelink,
+ 'sitename' => $sitename,
+ 'tsitelink' => $tsitelink,
+ 'hsitelink' => $hsitelink,
+ 'itemlink' => $itemlink,
+ 'sender' => $sender,
+ 'recipient' => $recip
+ );
+
+ call_hooks('enotify', $h);
+
+ $subject = $h['subject'];
+ $preamble = $h['preamble'];
+ $epreamble = $h['epreamble'];
+ $body = $h['body'];
+ $sitelink = $h['sitelink'];
+ $tsitelink = $h['tsitelink'];
+ $hsitelink = $h['hsitelink'];
+ $itemlink = $h['itemlink'];
+
+
+ require_once('include/html2bbcode.php');
+
+ do {
+ $dups = false;
+ $hash = random_string();
+ $r = q("SELECT `id` FROM `notify` WHERE `hash` = '%s' LIMIT 1",
+ dbesc($hash));
+ if ($r)
+ $dups = true;
+ } while ($dups === true);
+
+
+ $datarray = array();
+ $datarray['hash'] = $hash;
+ $datarray['sender_hash'] = $sender['xchan_hash'];
+ $datarray['xname'] = $sender['xchan_name'];
+ $datarray['url'] = $sender['xchan_url'];
+ $datarray['photo'] = $sender['xchan_photo_s'];
+ $datarray['created'] = datetime_convert();
+ $datarray['aid'] = $recip['channel_account_id'];
+ $datarray['uid'] = $recip['channel_id'];
+ $datarray['link'] = $itemlink;
+ $datarray['parent'] = $parent_mid;
+ $datarray['parent_item'] = $parent_item;
+ $datarray['ntype'] = $params['type'];
+ $datarray['verb'] = $params['verb'];
+ $datarray['otype'] = $params['otype'];
+ $datarray['abort'] = false;
+
+ $datarray['item'] = $params['item'];
+
+ call_hooks('enotify_store', $datarray);
+
+ if ($datarray['abort']) {
+ pop_lang();
+ return;
+ }
+
+
+ // create notification entry in DB
+ $seen = 0;
+
+ // Mark some notifications as seen right away
+ // Note! The notification have to be created, because they are used to send emails
+ // So easiest solution to hide them from Notices is to mark them as seen right away.
+ // Another option would be to not add them to the DB, and change how emails are handled (probably would be better that way)
+ $always_show_in_notices = get_pconfig($recip['channel_id'],'system','always_show_in_notices');
+ if (!$always_show_in_notices) {
+ if (($params['type'] == NOTIFY_WALL) || ($params['type'] == NOTIFY_MAIL) || ($params['type'] == NOTIFY_INTRO)) {
+ $seen = 1;
+ }
+ }
+
+ $r = q("insert into notify (hash,xname,url,photo,created,aid,uid,link,parent,seen,ntype,verb,otype)
+ values('%s','%s','%s','%s','%s',%d,%d,'%s','%s',%d,%d,'%s','%s')",
+ dbesc($datarray['hash']),
+ dbesc($datarray['xname']),
+ dbesc($datarray['url']),
+ dbesc($datarray['photo']),
+ dbesc($datarray['created']),
+ intval($datarray['aid']),
+ intval($datarray['uid']),
+ dbesc($datarray['link']),
+ dbesc($datarray['parent']),
+ intval($seen),
+ intval($datarray['ntype']),
+ dbesc($datarray['verb']),
+ dbesc($datarray['otype'])
+ );
+
+ $r = q("select id from notify where hash = '%s' and uid = %d limit 1",
+ dbesc($hash),
+ intval($recip['channel_id'])
+ );
+ if ($r) {
+ $notify_id = $r[0]['id'];
+ } else {
+ logger('notification not found.');
+ pop_lang();
+ return;
+ }
+
+ $itemlink = z_root() . '/notify/view/' . $notify_id;
+ $msg = str_replace('$itemlink',$itemlink,$epreamble);
+
+ // wretched hack, but we don't want to duplicate all the preamble variations and we also don't want to screw up a translation
+
+ if ((\App::$language === 'en' || (! \App::$language)) && strpos($msg,', '))
+ $msg = substr($msg,strpos($msg,', ')+1);
+
+ $r = q("update notify set msg = '%s' where id = %d and uid = %d",
+ dbesc($msg),
+ intval($notify_id),
+ intval($datarray['uid'])
+ );
+
+ // send email notification if notification preferences permit
+
+ require_once('bbcode.php');
+ if ((intval($recip['channel_notifyflags']) & intval($params['type'])) || $params['type'] == NOTIFY_SYSTEM) {
+
+ logger('notification: sending notification email');
+
+ $hn = get_pconfig($recip['channel_id'],'system','email_notify_host');
+ if($hn && (! stristr(\App::get_hostname(),$hn))) {
+ // this isn't the email notification host
+ pop_lang();
+ return;
+ }
+
+ $textversion = strip_tags(html_entity_decode(bbcode(stripslashes(str_replace(array("\\r", "\\n"), array( "", "\n"), $body))),ENT_QUOTES,'UTF-8'));
+
+ $htmlversion = bbcode(stripslashes(str_replace(array("\\r","\\n"), array("","<br />\n"),$body)));
+
+
+ // use $_SESSION['zid_override'] to force zid() to use
+ // the recipient address instead of the current observer
+
+ $_SESSION['zid_override'] = $recip['channel_address'] . '@' . \App::get_hostname();
+ $_SESSION['zrl_override'] = z_root() . '/channel/' . $recip['channel_address'];
+
+ $textversion = zidify_links($textversion);
+ $htmlversion = zidify_links($htmlversion);
+
+ // unset when done to revert to normal behaviour
+
+ unset($_SESSION['zid_override']);
+ unset($_SESSION['zrl_override']);
+
+ $datarray = array();
+ $datarray['banner'] = $banner;
+ $datarray['product'] = $product;
+ $datarray['preamble'] = $preamble;
+ $datarray['sitename'] = $sitename;
+ $datarray['siteurl'] = $siteurl;
+ $datarray['type'] = $params['type'];
+ $datarray['parent'] = $params['parent_mid'];
+ $datarray['source_name'] = $sender['xchan_name'];
+ $datarray['source_link'] = $sender['xchan_url'];
+ $datarray['source_photo'] = $sender['xchan_photo_s'];
+ $datarray['uid'] = $recip['channel_id'];
+ $datarray['username'] = $recip['channel_name'];
+ $datarray['hsitelink'] = $hsitelink;
+ $datarray['tsitelink'] = $tsitelink;
+ $datarray['hitemlink'] = '<a href="' . $itemlink . '">' . $itemlink . '</a>';
+ $datarray['titemlink'] = $itemlink;
+ $datarray['thanks'] = $thanks;
+ $datarray['site_admin'] = $site_admin;
+ $datarray['title'] = stripslashes($title);
+ $datarray['htmlversion'] = $htmlversion;
+ $datarray['textversion'] = $textversion;
+ $datarray['subject'] = $subject;
+ $datarray['headers'] = $additional_mail_header;
+ $datarray['email_secure'] = false;
+
+ call_hooks('enotify_mail', $datarray);
+
+ // Default to private - don't disclose message contents over insecure channels (such as email)
+ // Might be interesting to use GPG,PGP,S/MIME encryption instead
+ // but we'll save that for a clever plugin developer to implement
+
+ $private_activity = false;
+
+ if (! $datarray['email_secure']) {
+ switch ($params['type']) {
+ case NOTIFY_WALL:
+ case NOTIFY_TAGSELF:
+ case NOTIFY_POKE:
+ case NOTIFY_COMMENT:
+ if (! $private)
+ break;
+ $private_activity = true;
+ case NOTIFY_MAIL:
+ $datarray['textversion'] = $datarray['htmlversion'] = $datarray['title'] = '';
+ $datarray['subject'] = preg_replace('/' . preg_quote(t('[Hubzilla:Notify]')) . '/','$0*',$datarray['subject']);
+ break;
+ default:
+ break;
+ }
+ }
+
+ if ($private_activity
+ && intval(get_pconfig($datarray['uid'], 'system', 'ignore_private_notifications'))) {
+
+ pop_lang();
+ return;
+ }
+
+ // load the template for private message notifications
+ $tpl = get_markup_template('email_notify_html.tpl');
+ $email_html_body = replace_macros($tpl,array(
+ '$banner' => $datarray['banner'],
+ '$notify_icon' => \Zotlabs\Lib\System::get_notify_icon(),
+ '$product' => $datarray['product'],
+ '$preamble' => $datarray['preamble'],
+ '$sitename' => $datarray['sitename'],
+ '$siteurl' => $datarray['siteurl'],
+ '$source_name' => $datarray['source_name'],
+ '$source_link' => $datarray['source_link'],
+ '$source_photo' => $datarray['source_photo'],
+ '$username' => $datarray['to_name'],
+ '$hsitelink' => $datarray['hsitelink'],
+ '$hitemlink' => $datarray['hitemlink'],
+ '$thanks' => $datarray['thanks'],
+ '$site_admin' => $datarray['site_admin'],
+ '$title' => $datarray['title'],
+ '$htmlversion' => $datarray['htmlversion'],
+ ));
+
+ // load the template for private message notifications
+ $tpl = get_markup_template('email_notify_text.tpl');
+ $email_text_body = replace_macros($tpl, array(
+ '$banner' => $datarray['banner'],
+ '$product' => $datarray['product'],
+ '$preamble' => $datarray['preamble'],
+ '$sitename' => $datarray['sitename'],
+ '$siteurl' => $datarray['siteurl'],
+ '$source_name' => $datarray['source_name'],
+ '$source_link' => $datarray['source_link'],
+ '$source_photo' => $datarray['source_photo'],
+ '$username' => $datarray['to_name'],
+ '$tsitelink' => $datarray['tsitelink'],
+ '$titemlink' => $datarray['titemlink'],
+ '$thanks' => $datarray['thanks'],
+ '$site_admin' => $datarray['site_admin'],
+ '$title' => $datarray['title'],
+ '$textversion' => $datarray['textversion'],
+ ));
+
+// logger('text: ' . $email_text_body);
+
+ // use the EmailNotification library to send the message
+
+ self::send(array(
+ 'fromName' => $sender_name,
+ 'fromEmail' => $sender_email,
+ 'replyTo' => $sender_email,
+ 'toEmail' => $recip['account_email'],
+ 'messageSubject' => $datarray['subject'],
+ 'htmlVersion' => $email_html_body,
+ 'textVersion' => $email_text_body,
+ 'additionalMailHeader' => $datarray['headers'],
+ ));
+ }
+
+ pop_lang();
+
+}
+
+
+ /**
+ * @brief Send a multipart/alternative message with Text and HTML versions.
+ *
+ * @param array $params an assoziative array with:
+ * * \e string \b fromName name of the sender
+ * * \e string \b fromEmail email of the sender
+ * * \e string \b replyTo replyTo address to direct responses
+ * * \e string \b toEmail destination email address
+ * * \e string \b messageSubject subject of the message
+ * * \e string \b htmlVersion html version of the message
+ * * \e string \b textVersion text only version of the message
+ * * \e string \b additionalMailHeader additions to the smtp mail header
+ */
+ static public function send($params) {
+
+ $fromName = email_header_encode(html_entity_decode($params['fromName'],ENT_QUOTES,'UTF-8'),'UTF-8');
+ $messageSubject = email_header_encode(html_entity_decode($params['messageSubject'],ENT_QUOTES,'UTF-8'),'UTF-8');
+
+ // generate a mime boundary
+ $mimeBoundary = rand(0, 9) . "-"
+ .rand(10000000000, 9999999999) . "-"
+ .rand(10000000000, 9999999999) . "=:"
+ .rand(10000, 99999);
+
+ // generate a multipart/alternative message header
+ $messageHeader =
+ $params['additionalMailHeader'] .
+ "From: $fromName <{$params['fromEmail']}>\n" .
+ "Reply-To: $fromName <{$params['replyTo']}>\n" .
+ "MIME-Version: 1.0\n" .
+ "Content-Type: multipart/alternative; boundary=\"{$mimeBoundary}\"";
+
+ // assemble the final multipart message body with the text and html types included
+ $textBody = chunk_split(base64_encode($params['textVersion']));
+ $htmlBody = chunk_split(base64_encode($params['htmlVersion']));
+
+ $multipartMessageBody =
+ "--" . $mimeBoundary . "\n" . // plain text section
+ "Content-Type: text/plain; charset=UTF-8\n" .
+ "Content-Transfer-Encoding: base64\n\n" .
+ $textBody . "\n" .
+ "--" . $mimeBoundary . "\n" . // text/html section
+ "Content-Type: text/html; charset=UTF-8\n" .
+ "Content-Transfer-Encoding: base64\n\n" .
+ $htmlBody . "\n" .
+ "--" . $mimeBoundary . "--\n"; // message ending
+
+ // send the message
+ $res = mail(
+ $params['toEmail'], // send to address
+ $messageSubject, // subject
+ $multipartMessageBody, // message body
+ $messageHeader // message headers
+ );
+ logger("notification: enotify::send returns " . $res, LOGGER_DEBUG);
+ }
+
+ static public function format($item) {
+
+ $ret = '';
+
+ require_once('include/conversation.php');
+
+ // Call localize_item with the "brief" flag to get a one line status for activities.
+ // This should set $item['localized'] to indicate we have a brief summary.
+
+ localize_item($item);
+
+ if($item_localize) {
+ $itemem_text = $item['localize'];
+ }
+ else {
+ $itemem_text = (($item['item_thread_top'])
+ ? t('created a new post')
+ : sprintf( t('commented on %s\'s post'), $item['owner']['xchan_name']));
+ }
+
+ // convert this logic into a json array just like the system notifications
+
+ return array(
+ 'notify_link' => $item['llink'],
+ 'name' => $item['author']['xchan_name'],
+ 'url' => $item['author']['xchan_url'],
+ 'photo' => $item['author']['xchan_photo_s'],
+ 'when' => relative_date($item['created']),
+ 'class' => (intval($item['item_unseen']) ? 'notify-unseen' : 'notify-seen'),
+ 'message' => strip_tags(bbcode($itemem_text))
+ );
+
+ }
+
+}
diff --git a/Zotlabs/Lib/IConfig.php b/Zotlabs/Lib/IConfig.php
new file mode 100644
index 000000000..28c9ab58e
--- /dev/null
+++ b/Zotlabs/Lib/IConfig.php
@@ -0,0 +1,165 @@
+<?php
+
+namespace Zotlabs\Lib;
+
+
+
+class IConfig {
+
+ static public function Load(&$item) {
+ return;
+ }
+
+ static public function Get(&$item, $family, $key) {
+
+ $is_item = false;
+
+ if(is_array($item)) {
+ $is_item = true;
+ if((! array_key_exists('iconfig',$item)) || (! is_array($item['iconfig'])))
+ $item['iconfig'] = array();
+
+ if(array_key_exists('item_id',$item))
+ $iid = $item['item_id'];
+ else
+ $iid = $item['id'];
+ }
+ elseif(intval($item))
+ $iid = $item;
+
+ if(! $iid)
+ return false;
+
+ if(is_array($item) && array_key_exists('iconfig',$item) && is_array($item['iconfig'])) {
+ foreach($item['iconfig'] as $c) {
+ if($c['iid'] == $iid && $c['cat'] == $family && $c['k'] == $key)
+ return $c['v'];
+ }
+ }
+
+ $r = q("select * from iconfig where iid = %d and cat = '%s' and k = '%s' limit 1",
+ intval($iid),
+ dbesc($family),
+ dbesc($key)
+ );
+ if($r) {
+ $r[0]['v'] = ((preg_match('|^a:[0-9]+:{.*}$|s',$r[0]['v'])) ? unserialize($r[0]['v']) : $r[0]['v']);
+ if($is_item)
+ $item['iconfig'][] = $r[0];
+ return $r[0]['v'];
+ }
+ return false;
+
+ }
+
+ /**
+ * IConfig::Set(&$item, $family, $key, $value, $sharing = false);
+ *
+ * $item - item array or item id. If passed an array the iconfig meta information is
+ * added to the item structure (which will need to be saved with item_store eventually).
+ * If passed an id, the DB is updated, but may not be federated and/or cloned.
+ * $family - namespace of meta variable
+ * $key - key of meta variable
+ * $value - value of meta variable
+ * $sharing - boolean (default false); if true the meta information is propagated with the item
+ * to other sites/channels, mostly useful when $item is an array and has not yet been stored/delivered.
+ * If the meta information is added after delivery and you wish it to be shared, it may be necessary to
+ * alter the item edited timestamp and invoke the delivery process on the updated item. The edited
+ * timestamp needs to be altered in order to trigger an item_store_update() at the receiving end.
+ */
+
+
+ static public function Set(&$item, $family, $key, $value, $sharing = false) {
+
+ $dbvalue = ((is_array($value)) ? serialize($value) : $value);
+ $dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
+
+ $is_item = false;
+ $idx = null;
+
+ if(is_array($item)) {
+ $is_item = true;
+ if((! array_key_exists('iconfig',$item)) || (! is_array($item['iconfig'])))
+ $item['iconfig'] = array();
+ elseif($item['iconfig']) {
+ for($x = 0; $x < count($item['iconfig']); $x ++) {
+ if($item['iconfig'][$x]['cat'] == $family && $item['iconfig'][$x]['k'] == $key) {
+ $idx = $x;
+ }
+ }
+ }
+ $entry = array('cat' => $family, 'k' => $key, 'v' => $value, 'sharing' => $sharing);
+
+ if(is_null($idx))
+ $item['iconfig'][] = $entry;
+ else
+ $item['iconfig'][$idx] = $entry;
+ return $value;
+ }
+
+ if(intval($item))
+ $iid = intval($item);
+
+ if(! $iid)
+ return false;
+
+ if(self::Get($item, $family, $key) === false) {
+ $r = q("insert into iconfig( iid, cat, k, v, sharing ) values ( %d, '%s', '%s', '%s', %d ) ",
+ intval($iid),
+ dbesc($family),
+ dbesc($key),
+ dbesc($dbvalue),
+ intval($sharing)
+ );
+ }
+ else {
+ $r = q("update iconfig set v = '%s', sharing = %d where iid = %d and cat = '%s' and k = '%s' ",
+ dbesc($dbvalue),
+ intval($sharing),
+ intval($iid),
+ dbesc($family),
+ dbesc($key)
+ );
+ }
+
+ if(! $r)
+ return false;
+
+ return $value;
+ }
+
+
+
+ static public function Delete(&$item, $family, $key) {
+
+
+ $is_item = false;
+ $idx = null;
+
+ if(is_array($item)) {
+ $is_item = true;
+ if(is_array($item['iconfig'])) {
+ for($x = 0; $x < count($item['iconfig']); $x ++) {
+ if($item['iconfig'][$x]['cat'] == $family && $item['iconfig'][$x]['k'] == $key) {
+ unset($item['iconfig'][$x]);
+ }
+ }
+ }
+ return true;
+ }
+
+ if(intval($item))
+ $iid = intval($item);
+
+ if(! $iid)
+ return false;
+
+ return q("delete from iconfig where iid = %d and cat = '%s' and k = '%s' ",
+ intval($iid),
+ dbesc($family),
+ dbesc($key)
+ );
+
+ }
+
+} \ No newline at end of file
diff --git a/Zotlabs/Lib/PConfig.php b/Zotlabs/Lib/PConfig.php
new file mode 100644
index 000000000..195321375
--- /dev/null
+++ b/Zotlabs/Lib/PConfig.php
@@ -0,0 +1,189 @@
+<?php /** @file */
+
+namespace Zotlabs\Lib;
+
+
+class PConfig {
+
+ /**
+ * @brief Loads all configuration values of a channel into a cached storage.
+ *
+ * All configuration values of the given channel are stored in global cache
+ * which is available under the global variable App::$config[$uid].
+ *
+ * @param string $uid
+ * The channel_id
+ * @return void|false Nothing or false if $uid is false
+ */
+
+ static public function Load($uid) {
+ if($uid === false)
+ return false;
+
+ if(! array_key_exists($uid, \App::$config))
+ \App::$config[$uid] = array();
+
+ $r = q("SELECT * FROM pconfig WHERE uid = %d",
+ intval($uid)
+ );
+
+ if($r) {
+ foreach($r as $rr) {
+ $k = $rr['k'];
+ $c = $rr['cat'];
+ if(! array_key_exists($c, \App::$config[$uid])) {
+ \App::$config[$uid][$c] = array();
+ \App::$config[$uid][$c]['config_loaded'] = true;
+ }
+ \App::$config[$uid][$c][$k] = $rr['v'];
+ }
+ }
+ }
+
+ /**
+ * @brief Get a particular channel's config variable given the category name
+ * ($family) and a key.
+ *
+ * Get a particular channel's config value from the given category ($family)
+ * and the $key from a cached storage in App::$config[$uid].
+ *
+ * Returns false if not set.
+ *
+ * @param string $uid
+ * The channel_id
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to query
+ * @param boolean $instore (deprecated, without function)
+ * @return mixed Stored value or false if it does not exist
+ */
+
+ static public function Get($uid,$family,$key,$instore = false) {
+
+ if($uid === false)
+ return false;
+
+ if(! array_key_exists($uid, \App::$config))
+ self::Load($uid);
+
+ if((! array_key_exists($family, \App::$config[$uid])) || (! array_key_exists($key, \App::$config[$uid][$family])))
+ return false;
+
+ return ((! is_array(\App::$config[$uid][$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', \App::$config[$uid][$family][$key]))
+ ? unserialize(\App::$config[$uid][$family][$key])
+ : \App::$config[$uid][$family][$key]
+ );
+
+ }
+
+ /**
+ * @brief Sets a configuration value for a channel.
+ *
+ * Stores a config value ($value) in the category ($family) under the key ($key)
+ * for the channel_id $uid.
+ *
+ * @param string $uid
+ * The channel_id
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to set
+ * @param string $value
+ * The value to store
+ * @return mixed Stored $value or false
+ */
+
+ static public function Set($uid, $family, $key, $value) {
+
+ // this catches subtle errors where this function has been called
+ // with local_channel() when not logged in (which returns false)
+ // and throws an error in array_key_exists below.
+ // we provide a function backtrace in the logs so that we can find
+ // and fix the calling function.
+
+ if($uid === false) {
+ btlogger('UID is FALSE!', LOGGER_NORMAL, LOG_ERR);
+ return;
+ }
+
+ // manage array value
+ $dbvalue = ((is_array($value)) ? serialize($value) : $value);
+ $dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
+
+ if(get_pconfig($uid, $family, $key) === false) {
+ if(! array_key_exists($uid, \App::$config))
+ \App::$config[$uid] = array();
+ if(! array_key_exists($family, \App::$config[$uid]))
+ \App::$config[$uid][$family] = array();
+
+ $ret = q("INSERT INTO pconfig ( uid, cat, k, v ) VALUES ( %d, '%s', '%s', '%s' ) ",
+ intval($uid),
+ dbesc($family),
+ dbesc($key),
+ dbesc($dbvalue)
+ );
+
+ }
+ else {
+
+ $ret = q("UPDATE pconfig SET v = '%s' WHERE uid = %d and cat = '%s' AND k = '%s'",
+ dbesc($dbvalue),
+ intval($uid),
+ dbesc($family),
+ dbesc($key)
+ );
+
+ }
+
+ // keep a separate copy for all variables which were
+ // set in the life of this page. We need this to
+ // synchronise channel clones.
+
+ if(! array_key_exists('transient', \App::$config[$uid]))
+ \App::$config[$uid]['transient'] = array();
+ if(! array_key_exists($family, \App::$config[$uid]['transient']))
+ \App::$config[$uid]['transient'][$family] = array();
+
+ \App::$config[$uid][$family][$key] = $value;
+ \App::$config[$uid]['transient'][$family][$key] = $value;
+
+ if($ret)
+ return $value;
+
+ return $ret;
+ }
+
+
+ /**
+ * @brief Deletes the given key from the channel's configuration.
+ *
+ * Removes the configured value from the stored cache in App::$config[$uid]
+ * and removes it from the database.
+ *
+ * @param string $uid
+ * The channel_id
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to delete
+ * @return mixed
+ */
+
+ static public function Delete($uid, $family, $key) {
+
+ $ret = false;
+
+ if(array_key_exists($key, \App::$config[$uid][$family]))
+ unset(\App::$config[$uid][$family][$key]);
+ $ret = q("DELETE FROM pconfig WHERE uid = %d AND cat = '%s' AND k = '%s'",
+ intval($uid),
+ dbesc($family),
+ dbesc($key)
+ );
+
+ return $ret;
+ }
+
+}
+ \ No newline at end of file
diff --git a/Zotlabs/Lib/ProtoDriver.php b/Zotlabs/Lib/ProtoDriver.php
new file mode 100644
index 000000000..daf887dbb
--- /dev/null
+++ b/Zotlabs/Lib/ProtoDriver.php
@@ -0,0 +1,19 @@
+<?php /** @file */
+
+namespace Zotlabs\Lib;
+
+/*
+ * Abstraction class for dealing with alternate networks (which of course do not exist, hence the abstraction)
+ */
+
+
+abstract class ProtoDriver {
+ abstract protected function discover($channel,$location);
+ abstract protected function deliver($item,$channel,$recipients);
+ abstract protected function collect($channel,$connection);
+ abstract protected function change_permissions($permissions,$channel,$recipient);
+ abstract protected function acknowledge_permissions($permissions,$channel,$recipient);
+ abstract protected function deliver_private($item,$channel,$recipients);
+ abstract protected function collect_private($channel,$connection);
+
+}
diff --git a/Zotlabs/Lib/System.php b/Zotlabs/Lib/System.php
new file mode 100644
index 000000000..c52a90338
--- /dev/null
+++ b/Zotlabs/Lib/System.php
@@ -0,0 +1,58 @@
+<?php
+
+namespace Zotlabs\Lib;
+
+class System {
+
+ static public function get_platform_name() {
+ if(is_array(\App::$config) && is_array(\App::$config['system']) && array_key_exists('platform_name',\App::$config['system']))
+ return \App::$config['system']['platform_name'];
+ return PLATFORM_NAME;
+ }
+
+ static public function get_site_name() {
+ if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['sitename'])
+ return \App::$config['system']['sitename'];
+ return '';
+ }
+
+ static public function get_project_version() {
+ if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['hide_version'])
+ return '';
+ return self::get_std_version();
+ }
+
+ static public function get_update_version() {
+ if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['hide_version'])
+ return '';
+ return DB_UPDATE_VERSION;
+ }
+
+
+ static public function get_notify_icon() {
+ if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['email_notify_icon_url'])
+ return \App::$config['system']['email_notify_icon_url'];
+ return z_root() . '/images/hz-white-32.png';
+ }
+
+ static public function get_site_icon() {
+ if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['site_icon_url'])
+ return \App::$config['system']['site_icon_url'];
+ return z_root() . '/images/hz-32.png';
+ }
+
+
+ static public function get_server_role() {
+ if(UNO)
+ return 'basic';
+ return 'pro';
+ }
+
+ static public function get_std_version() {
+ if(defined('STD_VERSION'))
+ return STD_VERSION;
+ return '0.0.0';
+ }
+
+
+}
diff --git a/Zotlabs/Lib/ThreadItem.php b/Zotlabs/Lib/ThreadItem.php
new file mode 100644
index 000000000..f724ac95d
--- /dev/null
+++ b/Zotlabs/Lib/ThreadItem.php
@@ -0,0 +1,780 @@
+<?php /** @file */
+
+namespace Zotlabs\Lib;
+
+require_once('include/text.php');
+
+/**
+ * A thread item
+ */
+
+class ThreadItem {
+
+ public $data = array();
+ private $template = 'conv_item.tpl';
+ private $comment_box_template = 'comment_item.tpl';
+ private $commentable = false;
+ // list of supported reaction emojis - a site can over-ride this via config system.reactions
+ private $reactions = ['1f60a','1f44f','1f37e','1f48b','1f61e','2665','1f606','1f62e','1f634','1f61c','1f607','1f608'];
+ private $toplevel = false;
+ private $children = array();
+ private $parent = null;
+ private $conversation = null;
+ private $redirect_url = null;
+ private $owner_url = '';
+ private $owner_photo = '';
+ private $owner_name = '';
+ private $wall_to_wall = false;
+ private $threaded = false;
+ private $visiting = false;
+ private $channel = null;
+ private $display_mode = 'normal';
+
+
+ public function __construct($data) {
+
+ $this->data = $data;
+ $this->toplevel = ($this->get_id() == $this->get_data_value('parent'));
+
+ // Prepare the children
+ if(count($data['children'])) {
+ foreach($data['children'] as $item) {
+
+ /*
+ * Only add those that will be displayed
+ */
+
+ if((! visible_activity($item)) || array_key_exists('author_blocked',$item)) {
+ continue;
+ }
+
+ $child = new ThreadItem($item);
+ $this->add_child($child);
+ }
+ }
+
+ // allow a site to configure the order and content of the reaction emoji list
+ if($this->toplevel) {
+ $x = get_config('system','reactions');
+ if($x && is_array($x) && count($x)) {
+ $this->reactions = $x;
+ }
+ }
+ }
+
+ /**
+ * Get data in a form usable by a conversation template
+ *
+ * Returns:
+ * _ The data requested on success
+ * _ false on failure
+ */
+
+ public function get_template_data($conv_responses, $thread_level=1) {
+
+ $result = array();
+
+ $item = $this->get_data();
+
+ $commentww = '';
+ $sparkle = '';
+ $buttons = '';
+ $dropping = false;
+ $star = false;
+ $isstarred = "unstarred fa-star-o";
+ $indent = '';
+ $osparkle = '';
+ $total_children = $this->count_descendants();
+ $unseen_comments = (($item['real_uid']) ? 0 : $this->count_unseen_descendants());
+
+ $conv = $this->get_conversation();
+ $observer = $conv->get_observer();
+
+ $lock = ((($item['item_private'] == 1) || (($item['uid'] == local_channel()) && (strlen($item['allow_cid']) || strlen($item['allow_gid'])
+ || strlen($item['deny_cid']) || strlen($item['deny_gid']))))
+ ? t('Private Message')
+ : false);
+ $shareable = ((($conv->get_profile_owner() == local_channel() && local_channel()) && ($item['item_private'] != 1)) ? true : false);
+
+ // allow an exemption for sharing stuff from your private feeds
+ if($item['author']['xchan_network'] === 'rss')
+ $shareable = true;
+
+ $mode = $conv->get_mode();
+
+ if(local_channel() && $observer['xchan_hash'] === $item['author_xchan'])
+ $edpost = array(z_root()."/editpost/".$item['id'], t("Edit"));
+ else
+ $edpost = false;
+
+
+ if($observer['xchan_hash'] == $this->get_data_value('author_xchan')
+ || $observer['xchan_hash'] == $this->get_data_value('owner_xchan')
+ || $this->get_data_value('uid') == local_channel())
+ $dropping = true;
+
+
+ if(array_key_exists('real_uid',$item)) {
+ $edpost = false;
+ $dropping = false;
+ }
+
+
+ if($dropping) {
+ $drop = array(
+ 'dropping' => $dropping,
+ 'delete' => t('Delete'),
+ );
+ }
+// FIXME
+ if($observer_is_pageowner) {
+ $multidrop = array(
+ 'select' => t('Select'),
+ );
+ }
+
+ $filer = ((($conv->get_profile_owner() == local_channel()) && (! array_key_exists('real_uid',$item))) ? t("Save to Folder") : false);
+
+ $profile_avatar = $item['author']['xchan_photo_m'];
+ $profile_link = chanlink_url($item['author']['xchan_url']);
+ $profile_name = $item['author']['xchan_name'];
+
+ $location = format_location($item);
+ $isevent = false;
+ $attend = null;
+ $canvote = false;
+
+ // process action responses - e.g. like/dislike/attend/agree/whatever
+ $response_verbs = array('like');
+ if(feature_enabled($conv->get_profile_owner(),'dislike'))
+ $response_verbs[] = 'dislike';
+ if($item['obj_type'] === ACTIVITY_OBJ_EVENT) {
+ $response_verbs[] = 'attendyes';
+ $response_verbs[] = 'attendno';
+ $response_verbs[] = 'attendmaybe';
+ if($this->is_commentable()) {
+ $isevent = true;
+ $attend = array( t('I will attend'), t('I will not attend'), t('I might attend'));
+ }
+ }
+
+ $consensus = (intval($item['item_consensus']) ? true : false);
+ if($consensus) {
+ $response_verbs[] = 'agree';
+ $response_verbs[] = 'disagree';
+ $response_verbs[] = 'abstain';
+ if($this->is_commentable()) {
+ $conlabels = array( t('I agree'), t('I disagree'), t('I abstain'));
+ $canvote = true;
+ }
+ }
+
+ if(! feature_enabled($conv->get_profile_owner(),'dislike'))
+ unset($conv_responses['dislike']);
+
+ $responses = get_responses($conv_responses,$response_verbs,$this,$item);
+
+ $like_count = ((x($conv_responses['like'],$item['mid'])) ? $conv_responses['like'][$item['mid']] : '');
+ $like_list = ((x($conv_responses['like'],$item['mid'])) ? $conv_responses['like'][$item['mid'] . '-l'] : '');
+ if (count($like_list) > MAX_LIKERS) {
+ $like_list_part = array_slice($like_list, 0, MAX_LIKERS);
+ array_push($like_list_part, '<a href="#" data-toggle="modal" data-target="#likeModal-' . $this->get_id() . '"><b>' . t('View all') . '</b></a>');
+ } else {
+ $like_list_part = '';
+ }
+ $like_button_label = tt('Like','Likes',$like_count,'noun');
+
+ if (feature_enabled($conv->get_profile_owner(),'dislike')) {
+ $dislike_count = ((x($conv_responses['dislike'],$item['mid'])) ? $conv_responses['dislike'][$item['mid']] : '');
+ $dislike_list = ((x($conv_responses['dislike'],$item['mid'])) ? $conv_responses['dislike'][$item['mid'] . '-l'] : '');
+ $dislike_button_label = tt('Dislike','Dislikes',$dislike_count,'noun');
+ if (count($dislike_list) > MAX_LIKERS) {
+ $dislike_list_part = array_slice($dislike_list, 0, MAX_LIKERS);
+ array_push($dislike_list_part, '<a href="#" data-toggle="modal" data-target="#dislikeModal-' . $this->get_id() . '"><b>' . t('View all') . '</b></a>');
+ } else {
+ $dislike_list_part = '';
+ }
+ }
+
+ $showlike = ((x($conv_responses['like'],$item['mid'])) ? format_like($conv_responses['like'][$item['mid']],$conv_responses['like'][$item['mid'] . '-l'],'like',$item['mid']) : '');
+ $showdislike = ((x($conv_responses['dislike'],$item['mid']) && feature_enabled($conv->get_profile_owner(),'dislike'))
+ ? format_like($conv_responses['dislike'][$item['mid']],$conv_responses['dislike'][$item['mid'] . '-l'],'dislike',$item['mid']) : '');
+
+ /*
+ * We should avoid doing this all the time, but it depends on the conversation mode
+ * And the conv mode may change when we change the conv, or it changes its mode
+ * Maybe we should establish a way to be notified about conversation changes
+ */
+
+ $this->check_wall_to_wall();
+
+ if($this->is_toplevel()) {
+ // FIXME check this permission
+ if(($conv->get_profile_owner() == local_channel()) && (! array_key_exists('real_uid',$item))) {
+
+// FIXME we don't need all this stuff, some can be done in the template
+
+ $star = array(
+ 'do' => t("Add Star"),
+ 'undo' => t("Remove Star"),
+ 'toggle' => t("Toggle Star Status"),
+ 'classdo' => (intval($item['item_starred']) ? "hidden" : ""),
+ 'classundo' => (intval($item['item_starred']) ? "" : "hidden"),
+ 'isstarred' => (intval($item['item_starred']) ? "starred fa-star" : "unstarred fa-star-o"),
+ 'starred' => t('starred'),
+ );
+
+ }
+ }
+ else {
+ $indent = 'comment';
+ }
+
+
+ $verified = (intval($item['item_verified']) ? t('Message signature validated') : '');
+ $forged = ((($item['sig']) && (! intval($item['item_verified']))) ? t('Message signature incorrect') : '');
+ $unverified = '' ; // (($this->is_wall_to_wall() && (! intval($item['item_verified']))) ? t('Message cannot be verified') : '');
+
+
+
+ // FIXME - check this permission
+ if($conv->get_profile_owner() == local_channel()) {
+ $tagger = array(
+ 'tagit' => t("Add Tag"),
+ 'classtagger' => "",
+ );
+ }
+
+ $has_bookmarks = false;
+ if(is_array($item['term'])) {
+ foreach($item['term'] as $t) {
+ if(!UNO && $t['type'] == TERM_BOOKMARK)
+ $has_bookmarks = true;
+ }
+ }
+
+ $has_event = false;
+ if(($item['obj_type'] === ACTIVITY_OBJ_EVENT) && $conv->get_profile_owner() == local_channel())
+ $has_event = true;
+
+ if($this->is_commentable()) {
+ $like = array( t("I like this \x28toggle\x29"), t("like"));
+ $dislike = array( t("I don't like this \x28toggle\x29"), t("dislike"));
+ }
+
+ if ($shareable)
+ $share = array( t('Share This'), t('share'));
+
+ $dreport = '';
+
+ $keep_reports = intval(get_config('system','expire_delivery_reports'));
+ if($keep_reports === 0)
+ $keep_reports = 30;
+
+ if((! get_config('system','disable_dreport')) && strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC',"now - $keep_reports days")) > 0)
+ $dreport = t('Delivery Report');
+
+ if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0)
+ $indent .= ' shiny';
+
+
+ localize_item($item);
+
+ $body = prepare_body($item,true);
+
+ // $viewthread (below) is only valid in list mode. If this is a channel page, build the thread viewing link
+ // since we can't depend on llink or plink pointing to the right local location.
+
+ $owner_address = substr($item['owner']['xchan_addr'],0,strpos($item['owner']['xchan_addr'],'@'));
+ $viewthread = $item['llink'];
+ if($conv->get_mode() === 'channel')
+ $viewthread = z_root() . '/channel/' . $owner_address . '?f=&mid=' . $item['mid'];
+
+ $comment_count_txt = sprintf( tt('%d comment','%d comments',$total_children),$total_children );
+ $list_unseen_txt = (($unseen_comments) ? sprintf('%d unseen',$unseen_comments) : '');
+
+
+
+
+
+ $children = $this->get_children();
+
+ $has_tags = (($body['tags'] || $body['categories'] || $body['mentions'] || $body['attachments'] || $body['folders']) ? true : false);
+
+ $tmp_item = array(
+ 'template' => $this->get_template(),
+ 'mode' => $mode,
+ 'type' => implode("",array_slice(explode("/",$item['verb']),-1)),
+ 'body' => $body['html'],
+ 'tags' => $body['tags'],
+ 'categories' => $body['categories'],
+ 'mentions' => $body['mentions'],
+ 'attachments' => $body['attachments'],
+ 'folders' => $body['folders'],
+ 'text' => strip_tags($body['html']),
+ 'id' => $this->get_id(),
+ 'mid' => $item['mid'],
+ 'isevent' => $isevent,
+ 'attend' => $attend,
+ 'consensus' => $consensus,
+ 'conlabels' => $conlabels,
+ 'canvote' => $canvote,
+ 'linktitle' => sprintf( t('View %s\'s profile - %s'), $profile_name, $item['author']['xchan_addr']),
+ 'olinktitle' => sprintf( t('View %s\'s profile - %s'), $this->get_owner_name(), $item['owner']['xchan_addr']),
+ 'llink' => $item['llink'],
+ 'viewthread' => $viewthread,
+ 'to' => t('to'),
+ 'via' => t('via'),
+ 'wall' => t('Wall-to-Wall'),
+ 'vwall' => t('via Wall-To-Wall:'),
+ 'profile_url' => $profile_link,
+ 'item_photo_menu' => item_photo_menu($item),
+ 'dreport' => $dreport,
+ 'name' => $profile_name,
+ 'thumb' => $profile_avatar,
+ 'osparkle' => $osparkle,
+ 'sparkle' => $sparkle,
+ 'title' => $item['title'],
+ 'title_tosource' => get_pconfig($conv->get_profile_owner(),'system','title_tosource'),
+ 'ago' => relative_date($item['created']),
+ 'app' => $item['app'],
+ 'str_app' => sprintf( t('from %s'), $item['app']),
+ 'isotime' => datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'c'),
+ 'localtime' => datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'r'),
+ 'editedtime' => (($item['edited'] != $item['created']) ? sprintf( t('last edited: %s'), datetime_convert('UTC', date_default_timezone_get(), $item['edited'], 'r')) : ''),
+ 'expiretime' => (($item['expires'] !== NULL_DATE) ? sprintf( t('Expires: %s'), datetime_convert('UTC', date_default_timezone_get(), $item['expires'], 'r')):''),
+ 'lock' => $lock,
+ 'verified' => $verified,
+ 'unverified' => $unverified,
+ 'forged' => $forged,
+ 'location' => $location,
+ 'indent' => $indent,
+ 'owner_url' => $this->get_owner_url(),
+ 'owner_photo' => $this->get_owner_photo(),
+ 'owner_name' => $this->get_owner_name(),
+ 'photo' => $body['photo'],
+ 'event' => $body['event'],
+ 'has_tags' => $has_tags,
+ 'reactions' => $this->reactions,
+// Item toolbar buttons
+ 'emojis' => (($this->is_toplevel() && $this->is_commentable() && feature_enabled($conv->get_profile_owner(),'emojis')) ? '1' : ''),
+ 'like' => $like,
+ 'dislike' => ((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike : ''),
+ 'share' => $share,
+ 'rawmid' => $item['mid'],
+ 'plink' => get_plink($item),
+ 'edpost' => $edpost, // ((feature_enabled($conv->get_profile_owner(),'edit_posts')) ? $edpost : ''),
+ 'star' => ((feature_enabled($conv->get_profile_owner(),'star_posts')) ? $star : ''),
+ 'tagger' => ((feature_enabled($conv->get_profile_owner(),'commtag')) ? $tagger : ''),
+ 'filer' => ((feature_enabled($conv->get_profile_owner(),'filing')) ? $filer : ''),
+ 'bookmark' => (($conv->get_profile_owner() == local_channel() && local_channel() && $has_bookmarks) ? t('Save Bookmarks') : ''),
+ 'addtocal' => (($has_event) ? t('Add to Calendar') : ''),
+ 'drop' => $drop,
+ 'multidrop' => ((feature_enabled($conv->get_profile_owner(),'multi_delete')) ? $multidrop : ''),
+// end toolbar buttons
+
+ 'unseen_comments' => $unseen_comments,
+ 'comment_count' => $total_children,
+ 'comment_count_txt' => $comment_count_txt,
+ 'list_unseen_txt' => $list_unseen_txt,
+ 'markseen' => t('Mark all seen'),
+ 'responses' => $responses,
+ 'like_count' => $like_count,
+ 'like_list' => $like_list,
+ 'like_list_part' => $like_list_part,
+ 'like_button_label' => $like_button_label,
+ 'like_modal_title' => t('Likes','noun'),
+ 'dislike_modal_title' => t('Dislikes','noun'),
+ 'dislike_count' => ((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike_count : ''),
+ 'dislike_list' => ((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike_list : ''),
+ 'dislike_list_part' => ((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike_list_part : ''),
+ 'dislike_button_label' => ((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike_button_label : ''),
+ 'modal_dismiss' => t('Close'),
+ 'showlike' => $showlike,
+ 'showdislike' => $showdislike,
+ 'comment' => $this->get_comment_box($indent),
+ 'previewing' => ($conv->is_preview() ? ' preview ' : ''),
+ 'wait' => t('Please wait'),
+ 'thread_level' => $thread_level
+ );
+
+ $arr = array('item' => $item, 'output' => $tmp_item);
+ call_hooks('display_item', $arr);
+
+ $result = $arr['output'];
+
+ $result['children'] = array();
+ $nb_children = count($children);
+
+ $visible_comments = get_config('system','expanded_comments');
+ if($visible_comments === false)
+ $visible_comments = 3;
+
+ if(($this->get_display_mode() === 'normal') && ($nb_children > 0)) {
+ foreach($children as $child) {
+ $result['children'][] = $child->get_template_data($conv_responses, $thread_level + 1);
+ }
+ // Collapse
+ if(($nb_children > $visible_comments) || ($thread_level > 1)) {
+ $result['children'][0]['comment_firstcollapsed'] = true;
+ $result['children'][0]['num_comments'] = $comment_count_txt;
+ $result['children'][0]['hide_text'] = t('[+] show all');
+ if($thread_level > 1) {
+ $result['children'][$nb_children - 1]['comment_lastcollapsed'] = true;
+ }
+ else {
+ $result['children'][$nb_children - ($visible_comments + 1)]['comment_lastcollapsed'] = true;
+ }
+ }
+ }
+
+ $result['private'] = $item['item_private'];
+ $result['toplevel'] = ($this->is_toplevel() ? 'toplevel_item' : '');
+
+ if($this->is_threaded()) {
+ $result['flatten'] = false;
+ $result['threaded'] = true;
+ }
+ else {
+ $result['flatten'] = true;
+ $result['threaded'] = false;
+ }
+
+ return $result;
+ }
+
+ public function get_id() {
+ return $this->get_data_value('id');
+ }
+
+ public function get_display_mode() {
+ return $this->display_mode;
+ }
+
+ public function set_display_mode($mode) {
+ $this->display_mode = $mode;
+ }
+
+ public function is_threaded() {
+ return $this->threaded;
+ }
+
+ public function set_commentable($val) {
+ $this->commentable = $val;
+ foreach($this->get_children() as $child)
+ $child->set_commentable($val);
+ }
+
+ public function is_commentable() {
+ return $this->commentable;
+ }
+
+ /**
+ * Add a child item
+ */
+ public function add_child($item) {
+ $item_id = $item->get_id();
+ if(!$item_id) {
+ logger('[ERROR] Item::add_child : Item has no ID!!', LOGGER_DEBUG);
+ return false;
+ }
+ if($this->get_child($item->get_id())) {
+ logger('[WARN] Item::add_child : Item already exists ('. $item->get_id() .').', LOGGER_DEBUG);
+ return false;
+ }
+ /*
+ * Only add what will be displayed
+ */
+
+ if(activity_match($item->get_data_value('verb'),ACTIVITY_LIKE) || activity_match($item->get_data_value('verb'),ACTIVITY_DISLIKE)) {
+ return false;
+ }
+
+ $item->set_parent($this);
+ $this->children[] = $item;
+ return end($this->children);
+ }
+
+ /**
+ * Get a child by its ID
+ */
+ public function get_child($id) {
+ foreach($this->get_children() as $child) {
+ if($child->get_id() == $id)
+ return $child;
+ }
+ return null;
+ }
+
+ /**
+ * Get all our children
+ */
+ public function get_children() {
+ return $this->children;
+ }
+
+ /**
+ * Set our parent
+ */
+ protected function set_parent($item) {
+ $parent = $this->get_parent();
+ if($parent) {
+ $parent->remove_child($this);
+ }
+ $this->parent = $item;
+ $this->set_conversation($item->get_conversation());
+ }
+
+ /**
+ * Remove our parent
+ */
+ protected function remove_parent() {
+ $this->parent = null;
+ $this->conversation = null;
+ }
+
+ /**
+ * Remove a child
+ */
+ public function remove_child($item) {
+ $id = $item->get_id();
+ foreach($this->get_children() as $key => $child) {
+ if($child->get_id() == $id) {
+ $child->remove_parent();
+ unset($this->children[$key]);
+ // Reindex the array, in order to make sure there won't be any trouble on loops using count()
+ $this->children = array_values($this->children);
+ return true;
+ }
+ }
+ logger('[WARN] Item::remove_child : Item is not a child ('. $id .').', LOGGER_DEBUG);
+ return false;
+ }
+
+ /**
+ * Get parent item
+ */
+ protected function get_parent() {
+ return $this->parent;
+ }
+
+ /**
+ * set conversation
+ */
+ public function set_conversation($conv) {
+ $previous_mode = ($this->conversation ? $this->conversation->get_mode() : '');
+
+ $this->conversation = $conv;
+
+ // Set it on our children too
+ foreach($this->get_children() as $child)
+ $child->set_conversation($conv);
+ }
+
+ /**
+ * get conversation
+ */
+ public function get_conversation() {
+ return $this->conversation;
+ }
+
+ /**
+ * Get raw data
+ *
+ * We shouldn't need this
+ */
+ public function get_data() {
+ return $this->data;
+ }
+
+ /**
+ * Get a data value
+ *
+ * Returns:
+ * _ value on success
+ * _ false on failure
+ */
+ public function get_data_value($name) {
+ if(!isset($this->data[$name])) {
+// logger('[ERROR] Item::get_data_value : Item has no value name "'. $name .'".', LOGGER_DEBUG);
+ return false;
+ }
+
+ return $this->data[$name];
+ }
+
+ /**
+ * Get template
+ */
+ public function get_template() {
+ return $this->template;
+ }
+
+
+ public function set_template($t) {
+ $this->template = $t;
+ }
+
+ /**
+ * Check if this is a toplevel post
+ */
+ private function is_toplevel() {
+ return $this->toplevel;
+ }
+
+ /**
+ * Count the total of our descendants
+ */
+ private function count_descendants() {
+ $children = $this->get_children();
+ $total = count($children);
+ if($total > 0) {
+ foreach($children as $child) {
+ $total += $child->count_descendants();
+ }
+ }
+ return $total;
+ }
+
+ private function count_unseen_descendants() {
+ $children = $this->get_children();
+ $total = count($children);
+ if($total > 0) {
+ $total = 0;
+ foreach($children as $child) {
+ if((! visible_activity($child->data)) || array_key_exists('author_blocked',$child->data)) {
+ continue;
+ }
+ if(intval($child->data['item_unseen']))
+ $total ++;
+ }
+ }
+ return $total;
+ }
+
+
+ /**
+ * Get the template for the comment box
+ */
+ private function get_comment_box_template() {
+ return $this->comment_box_template;
+ }
+
+ /**
+ * Get the comment box
+ *
+ * Returns:
+ * _ The comment box string (empty if no comment box)
+ * _ false on failure
+ */
+ private function get_comment_box($indent) {
+
+ if(!$this->is_toplevel() && !get_config('system','thread_allow')) {
+ return '';
+ }
+
+ $comment_box = '';
+ $conv = $this->get_conversation();
+
+// logger('Commentable conv: ' . $conv->is_commentable());
+
+ if(! $this->is_commentable())
+ return;
+
+ $template = get_markup_template($this->get_comment_box_template());
+
+ $observer = $conv->get_observer();
+
+ $qc = ((local_channel()) ? get_pconfig(local_channel(),'system','qcomment') : null);
+ $qcomment = (($qc) ? explode("\n",$qc) : null);
+
+ $arr = array('comment_buttons' => '','id' => $this->get_id());
+ call_hooks('comment_buttons',$arr);
+ $comment_buttons = $arr['comment_buttons'];
+
+
+ $comment_box = replace_macros($template,array(
+ '$return_path' => '',
+ '$threaded' => $this->is_threaded(),
+ '$jsreload' => '', //(($conv->get_mode() === 'display') ? $_SESSION['return_url'] : ''),
+ '$type' => (($conv->get_mode() === 'channel') ? 'wall-comment' : 'net-comment'),
+ '$id' => $this->get_id(),
+ '$parent' => $this->get_id(),
+ '$qcomment' => $qcomment,
+ '$comment_buttons' => $comment_buttons,
+ '$profile_uid' => $conv->get_profile_owner(),
+ '$mylink' => $observer['xchan_url'],
+ '$mytitle' => t('This is you'),
+ '$myphoto' => $observer['xchan_photo_s'],
+ '$comment' => t('Comment'),
+ '$submit' => t('Submit'),
+ '$edbold' => t('Bold'),
+ '$editalic' => t('Italic'),
+ '$eduline' => t('Underline'),
+ '$edquote' => t('Quote'),
+ '$edcode' => t('Code'),
+ '$edimg' => t('Image'),
+ '$edurl' => t('Insert Link'),
+ '$edvideo' => t('Video'),
+ '$preview' => t('Preview'), // ((feature_enabled($conv->get_profile_owner(),'preview')) ? t('Preview') : ''),
+ '$indent' => $indent,
+ '$feature_encrypt' => ((feature_enabled($conv->get_profile_owner(),'content_encrypt')) ? true : false),
+ '$encrypt' => t('Encrypt text'),
+ '$cipher' => $conv->get_cipher(),
+ '$sourceapp' => \App::$sourcename
+
+ ));
+
+ return $comment_box;
+ }
+
+ private function get_redirect_url() {
+ return $this->redirect_url;
+ }
+
+ /**
+ * Check if we are a wall to wall item and set the relevant properties
+ */
+ protected function check_wall_to_wall() {
+ $conv = $this->get_conversation();
+ $this->wall_to_wall = false;
+ $this->owner_url = '';
+ $this->owner_photo = '';
+ $this->owner_name = '';
+
+ if($conv->get_mode() === 'channel')
+ return;
+
+ if($this->is_toplevel() && ($this->get_data_value('author_xchan') != $this->get_data_value('owner_xchan'))) {
+ $this->owner_url = chanlink_url($this->data['owner']['xchan_url']);
+ $this->owner_photo = $this->data['owner']['xchan_photo_m'];
+ $this->owner_name = $this->data['owner']['xchan_name'];
+ $this->wall_to_wall = true;
+ }
+ }
+
+ private function is_wall_to_wall() {
+ return $this->wall_to_wall;
+ }
+
+ private function get_owner_url() {
+ return $this->owner_url;
+ }
+
+ private function get_owner_photo() {
+ return $this->owner_photo;
+ }
+
+ private function get_owner_name() {
+ return $this->owner_name;
+ }
+
+ private function is_visiting() {
+ return $this->visiting;
+ }
+
+
+
+
+}
+
diff --git a/Zotlabs/Lib/ThreadStream.php b/Zotlabs/Lib/ThreadStream.php
new file mode 100644
index 000000000..a6d4f8517
--- /dev/null
+++ b/Zotlabs/Lib/ThreadStream.php
@@ -0,0 +1,220 @@
+<?php /** @file */
+
+namespace Zotlabs\Lib;
+
+require_once('boot.php');
+require_once('include/text.php');
+require_once('include/items.php');
+
+/**
+ * A list of threads
+ *
+ */
+
+class ThreadStream {
+
+ private $threads = array();
+ private $mode = null;
+ private $observer = null;
+ private $writable = false;
+ private $commentable = false;
+ private $profile_owner = 0;
+ private $preview = false;
+ private $prepared_item = '';
+ private $cipher = 'aes256';
+
+ // $prepared_item is for use by alternate conversation structures such as photos
+ // wherein we've already prepared a top level item which doesn't look anything like
+ // a normal "post" item
+
+ public function __construct($mode, $preview, $prepared_item = '') {
+ $this->set_mode($mode);
+ $this->preview = $preview;
+ $this->prepared_item = $prepared_item;
+ $c = ((local_channel()) ? get_pconfig(local_channel(),'system','default_cipher') : '');
+ if($c)
+ $this->cipher = $c;
+ }
+
+ /**
+ * Set the mode we'll be displayed on
+ */
+ private function set_mode($mode) {
+ if($this->get_mode() == $mode)
+ return;
+
+ $this->observer = \App::get_observer();
+ $ob_hash = (($this->observer) ? $this->observer['xchan_hash'] : '');
+
+ switch($mode) {
+ case 'network':
+ $this->profile_owner = local_channel();
+ $this->writable = true;
+ break;
+ case 'channel':
+ $this->profile_owner = \App::$profile['profile_uid'];
+ $this->writable = perm_is_allowed($this->profile_owner,$ob_hash,'post_comments');
+ break;
+ case 'display':
+ // in this mode we set profile_owner after initialisation (from conversation()) and then
+ // pull some trickery which allows us to re-invoke this function afterward
+ // it's an ugly hack so FIXME
+ $this->writable = perm_is_allowed($this->profile_owner,$ob_hash,'post_comments');
+ break;
+ case 'page':
+ $this->profile_owner = \App::$profile['uid'];
+ $this->writable = perm_is_allowed($this->profile_owner,$ob_hash,'post_comments');
+ break;
+ default:
+ logger('[ERROR] Conversation::set_mode : Unhandled mode ('. $mode .').', LOGGER_DEBUG);
+ return false;
+ break;
+ }
+ $this->mode = $mode;
+ }
+
+ /**
+ * Get mode
+ */
+ public function get_mode() {
+ return $this->mode;
+ }
+
+ /**
+ * Check if page is writable
+ */
+ public function is_writable() {
+ return $this->writable;
+ }
+
+ public function is_commentable() {
+ return $this->commentable;
+ }
+
+ /**
+ * Check if page is a preview
+ */
+ public function is_preview() {
+ return $this->preview;
+ }
+
+ /**
+ * Get profile owner
+ */
+ public function get_profile_owner() {
+ return $this->profile_owner;
+ }
+
+ public function set_profile_owner($uid) {
+ $this->profile_owner = $uid;
+ $mode = $this->get_mode();
+ $this->mode = null;
+ $this->set_mode($mode);
+ }
+
+ public function get_observer() {
+ return $this->observer;
+ }
+
+ public function get_cipher() {
+ return $this->cipher;
+ }
+
+
+ /**
+ * Add a thread to the conversation
+ *
+ * Returns:
+ * _ The inserted item on success
+ * _ false on failure
+ */
+ public function add_thread($item) {
+ $item_id = $item->get_id();
+ if(!$item_id) {
+ logger('Item has no ID!!', LOGGER_DEBUG, LOG_ERR);
+ return false;
+ }
+ if($this->get_thread($item->get_id())) {
+ logger('Thread already exists ('. $item->get_id() .').', LOGGER_DEBUG, LOG_WARNING);
+ return false;
+ }
+
+ /*
+ * Only add things that will be displayed
+ */
+
+
+ if(($item->get_data_value('id') != $item->get_data_value('parent')) && (activity_match($item->get_data_value('verb'),ACTIVITY_LIKE) || activity_match($item->get_data_value('verb'),ACTIVITY_DISLIKE))) {
+ return false;
+ }
+
+ $item->set_commentable(false);
+ $ob_hash = (($this->observer) ? $this->observer['xchan_hash'] : '');
+
+ if(! comments_are_now_closed($item->get_data())) {
+ if(($item->get_data_value('author_xchan') === $ob_hash) || ($item->get_data_value('owner_xchan') === $ob_hash))
+ $item->set_commentable(true);
+
+ if(intval($item->get_data_value('item_nocomment'))) {
+ $item->set_commentable(false);
+ }
+ elseif(($this->observer) && (! $item->is_commentable())) {
+ if((array_key_exists('owner',$item->data)) && intval($item->data['owner']['abook_self']))
+ $item->set_commentable(perm_is_allowed($this->profile_owner,$this->observer['xchan_hash'],'post_comments'));
+ else
+ $item->set_commentable(can_comment_on_post($this->observer['xchan_hash'],$item->data));
+ }
+ }
+ require_once('include/channel.php');
+
+ $item->set_conversation($this);
+ $this->threads[] = $item;
+ return end($this->threads);
+ }
+
+ /**
+ * Get data in a form usable by a conversation template
+ *
+ * We should find a way to avoid using those arguments (at least most of them)
+ *
+ * Returns:
+ * _ The data requested on success
+ * _ false on failure
+ */
+ public function get_template_data($conv_responses) {
+ $result = array();
+
+ foreach($this->threads as $item) {
+
+ if(($item->get_data_value('id') == $item->get_data_value('parent')) && $this->prepared_item) {
+ $item_data = $this->prepared_item;
+ }
+ else {
+ $item_data = $item->get_template_data($conv_responses);
+ }
+ if(!$item_data) {
+ logger('Failed to get item template data ('. $item->get_id() .').', LOGGER_DEBUG, LOG_ERR);
+ return false;
+ }
+ $result[] = $item_data;
+ }
+
+ return $result;
+ }
+
+ /**
+ * Get a thread based on its item id
+ *
+ * Returns:
+ * _ The found item on success
+ * _ false on failure
+ */
+ private function get_thread($id) {
+ foreach($this->threads as $item) {
+ if($item->get_id() == $id)
+ return $item;
+ }
+
+ return false;
+ }
+}
diff --git a/Zotlabs/Lib/XConfig.php b/Zotlabs/Lib/XConfig.php
new file mode 100644
index 000000000..e28dcf559
--- /dev/null
+++ b/Zotlabs/Lib/XConfig.php
@@ -0,0 +1,160 @@
+<?php
+
+namespace Zotlabs\Lib;
+
+
+class XConfig {
+
+ /**
+ * @brief Loads a full xchan's configuration into a cached storage.
+ *
+ * All configuration values of the given observer hash are stored in global
+ * cache which is available under the global variable App::$config[$xchan].
+ *
+ * @param string $xchan
+ * The observer's hash
+ * @return void|false Returns false if xchan is not set
+ */
+
+ static public function Load($xchan) {
+
+ if(! $xchan)
+ return false;
+
+ if(! array_key_exists($xchan, \App::$config))
+ \App::$config[$xchan] = array();
+
+ $r = q("SELECT * FROM xconfig WHERE xchan = '%s'",
+ dbesc($xchan)
+ );
+
+ if($r) {
+ foreach($r as $rr) {
+ $k = $rr['k'];
+ $c = $rr['cat'];
+ if(! array_key_exists($c, \App::$config[$xchan])) {
+ \App::$config[$xchan][$c] = array();
+ \App::$config[$xchan][$c]['config_loaded'] = true;
+ }
+ \App::$config[$xchan][$c][$k] = $rr['v'];
+ }
+ }
+ }
+
+ /**
+ * @brief Get a particular observer's config variable given the category
+ * name ($family) and a key.
+ *
+ * Get a particular observer's config value from the given category ($family)
+ * and the $key from a cached storage in App::$config[$xchan].
+ *
+ * Returns false if not set.
+ *
+ * @param string $xchan
+ * The observer's hash
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to query
+ * @return mixed Stored $value or false if it does not exist
+ */
+
+ static public function Get($xchan, $family, $key) {
+
+ if(! $xchan)
+ return false;
+
+ if(! array_key_exists($xchan, \App::$config))
+ load_xconfig($xchan);
+
+ if((! array_key_exists($family, \App::$config[$xchan])) || (! array_key_exists($key, \App::$config[$xchan][$family])))
+ return false;
+
+ return ((! is_array(\App::$config[$xchan][$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', \App::$config[$xchan][$family][$key]))
+ ? unserialize(\App::$config[$xchan][$family][$key])
+ : \App::$config[$xchan][$family][$key]
+ );
+ }
+
+ /**
+ * @brief Sets a configuration value for an observer.
+ *
+ * Stores a config value ($value) in the category ($family) under the key ($key)
+ * for the observer's $xchan hash.
+ *
+ *
+ * @param string $xchan
+ * The observer's hash
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to set
+ * @param string $value
+ * The value to store
+ * @return mixed Stored $value or false
+ */
+
+ static public function Set($xchan, $family, $key, $value) {
+
+ // manage array value
+ $dbvalue = ((is_array($value)) ? serialize($value) : $value);
+ $dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
+
+ if(self::Get($xchan, $family, $key) === false) {
+ if(! array_key_exists($xchan, \App::$config))
+ \App::$config[$xchan] = array();
+ if(! array_key_exists($family, \App::$config[$xchan]))
+ \App::$config[$xchan][$family] = array();
+
+ $ret = q("INSERT INTO xconfig ( xchan, cat, k, v ) VALUES ( '%s', '%s', '%s', '%s' ) ",
+ dbesc($xchan),
+ dbesc($family),
+ dbesc($key),
+ dbesc($dbvalue)
+ );
+ }
+ else {
+ $ret = q("UPDATE xconfig SET v = '%s' WHERE xchan = '%s' and cat = '%s' AND k = '%s'",
+ dbesc($dbvalue),
+ dbesc($xchan),
+ dbesc($family),
+ dbesc($key)
+ );
+ }
+
+ App::$config[$xchan][$family][$key] = $value;
+
+ if($ret)
+ return $value;
+ return $ret;
+ }
+
+ /**
+ * @brief Deletes the given key from the observer's config.
+ *
+ * Removes the configured value from the stored cache in App::$config[$xchan]
+ * and removes it from the database.
+ *
+ * @param string $xchan
+ * The observer's hash
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to delete
+ * @return mixed
+ */
+
+ static public function Delete($xchan, $family, $key) {
+
+ if(x(\App::$config[$xchan][$family], $key))
+ unset(\App::$config[$xchan][$family][$key]);
+ $ret = q("DELETE FROM xconfig WHERE xchan = '%s' AND cat = '%s' AND k = '%s'",
+ dbesc($xchan),
+ dbesc($family),
+ dbesc($key)
+ );
+
+ return $ret;
+ }
+
+} \ No newline at end of file
diff --git a/Zotlabs/Lib/ZotDriver.php b/Zotlabs/Lib/ZotDriver.php
new file mode 100644
index 000000000..e14cc7f35
--- /dev/null
+++ b/Zotlabs/Lib/ZotDriver.php
@@ -0,0 +1,30 @@
+<?php /** @file */
+
+namespace Zotlabs\Lib;
+
+
+class ZotDriver extends ProtoDriver {
+
+ protected function discover($channel,$location) {
+
+ }
+ protected function deliver($item,$channel,$recipients) {
+
+ }
+ protected function collect($channel,$connection) {
+
+ }
+ protected function change_permissions($permissions,$channel,$recipient) {
+
+ }
+ protected function acknowledge_permissions($permissions,$channel,$recipient) {
+
+ }
+ protected function deliver_private($item,$channel,$recipients) {
+
+ }
+ protected function collect_private($channel,$connection) {
+
+ }
+
+}
diff --git a/Zotlabs/Module/Acl.php b/Zotlabs/Module/Acl.php
index 5c14ab599..2bc4ba62d 100644
--- a/Zotlabs/Module/Acl.php
+++ b/Zotlabs/Module/Acl.php
@@ -53,30 +53,32 @@ class Acl extends \Zotlabs\Web\Controller {
if ($type=='' || $type=='g'){
- $r = q("SELECT `groups`.`id`, `groups`.`hash`, `groups`.`name`
+ $r = q("SELECT `groups`.`id`, `groups`.`hash`, `groups`.`gname`
FROM `groups`,`group_member`
WHERE `groups`.`deleted` = 0 AND `groups`.`uid` = %d
AND `group_member`.`gid`=`groups`.`id`
$sql_extra
GROUP BY `groups`.`id`
- ORDER BY `groups`.`name`
+ ORDER BY `groups`.`gname`
LIMIT %d OFFSET %d",
intval(local_channel()),
intval($count),
intval($start)
);
-
- foreach($r as $g){
- // logger('acl: group: ' . $g['name'] . ' members: ' . group_get_members_xchan($g['id']));
- $groups[] = array(
- "type" => "g",
- "photo" => "images/twopeople.png",
- "name" => $g['name'],
- "id" => $g['id'],
- "xid" => $g['hash'],
- "uids" => group_get_members_xchan($g['id']),
- "link" => ''
- );
+
+ if($r) {
+ foreach($r as $g){
+ // logger('acl: group: ' . $g['gname'] . ' members: ' . group_get_members_xchan($g['id']));
+ $groups[] = array(
+ "type" => "g",
+ "photo" => "images/twopeople.png",
+ "name" => $g['gname'],
+ "id" => $g['id'],
+ "xid" => $g['hash'],
+ "uids" => group_get_members_xchan($g['id']),
+ "link" => ''
+ );
+ }
}
}
@@ -204,7 +206,7 @@ class Acl extends \Zotlabs\Web\Controller {
else
$r = array();
- if(count($r)) {
+ if($r) {
foreach($r as $g){
// remove RSS feeds from ACLs - they are inaccessible
@@ -260,7 +262,7 @@ class Acl extends \Zotlabs\Web\Controller {
// logger('navbar_complete');
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
return;
}
diff --git a/Zotlabs/Module/Admin.php b/Zotlabs/Module/Admin.php
index e2e6146f8..085d13fd7 100644
--- a/Zotlabs/Module/Admin.php
+++ b/Zotlabs/Module/Admin.php
@@ -32,8 +32,8 @@ class Admin extends \Zotlabs\Web\Controller {
case 'site':
$this->admin_page_site_post($a);
break;
- case 'users':
- $this->admin_page_users_post($a);
+ case 'accounts':
+ $this->admin_page_accounts_post($a);
break;
case 'channels':
$this->admin_page_channels_post($a);
@@ -127,8 +127,8 @@ class Admin extends \Zotlabs\Web\Controller {
case 'site':
$o = $this->admin_page_site($a);
break;
- case 'users':
- $o = $this->admin_page_users($a);
+ case 'accounts':
+ $o = $this->admin_page_accounts($a);
break;
case 'channels':
$o = $this->admin_page_channels($a);
@@ -872,20 +872,20 @@ class Admin extends \Zotlabs\Web\Controller {
}
/**
- * @brief Handle POST actions on users admin page.
+ * @brief Handle POST actions on accounts admin page.
*
* This function is called when on the admin user/account page the form was
* submitted to handle multiple operations at once. If one of the icons next
- * to an entry are pressed the function admin_page_users() will handle this.
+ * to an entry are pressed the function admin_page_accounts() will handle this.
*
* @param App $a
*/
- function admin_page_users_post($a) {
+ function admin_page_accounts_post($a) {
$pending = ( x($_POST, 'pending') ? $_POST['pending'] : array() );
$users = ( x($_POST, 'user') ? $_POST['user'] : array() );
$blocked = ( x($_POST, 'blocked') ? $_POST['blocked'] : array() );
- check_form_security_token_redirectOnErr('/admin/users', 'admin_users');
+ check_form_security_token_redirectOnErr('/admin/accounts', 'admin_accounts');
// change to switch structure?
// account block/unblock button was submitted
@@ -901,8 +901,7 @@ class Admin extends \Zotlabs\Web\Controller {
notice( sprintf( tt("%s account blocked/unblocked", "%s account blocked/unblocked", count($users)), count($users)) );
}
// account delete button was submitted
- if (x($_POST, 'page_users_delete')) {
- require_once('include/Contact.php');
+ if (x($_POST, 'page_accounts_delete')) {
foreach ($users as $uid){
account_remove($uid, true, false);
}
@@ -921,20 +920,20 @@ class Admin extends \Zotlabs\Web\Controller {
}
}
- goaway(z_root() . '/admin/users' );
+ goaway(z_root() . '/admin/accounts' );
}
/**
- * @brief Generate users admin page and handle single item operations.
+ * @brief Generate accounts admin page and handle single item operations.
*
- * This function generates the users/account admin page and handles the actions
+ * This function generates the accounts/account admin page and handles the actions
* if an icon next to an entry was clicked. If several items were selected and
- * the form was submitted it is handled by the function admin_page_users_post().
+ * the form was submitted it is handled by the function admin_page_accounts_post().
*
* @param App &$a
* @return string
*/
- function admin_page_users(&$a){
+ function admin_page_accounts(&$a){
if (argc() > 2) {
$uid = argv(3);
$account = q("SELECT * FROM account WHERE account_id = %d",
@@ -943,15 +942,14 @@ class Admin extends \Zotlabs\Web\Controller {
if (! $account) {
notice( t('Account not found') . EOL);
- goaway(z_root() . '/admin/users' );
+ goaway(z_root() . '/admin/accounts' );
}
- check_form_security_token_redirectOnErr('/admin/users', 'admin_users', 't');
+ check_form_security_token_redirectOnErr('/admin/accounts', 'admin_accounts', 't');
switch (argv(2)){
case 'delete':
// delete user
- require_once('include/Contact.php');
account_remove($uid,true,false);
notice( sprintf(t("Account '%s' deleted"), $account[0]['account_email']) . EOL);
@@ -974,7 +972,7 @@ class Admin extends \Zotlabs\Web\Controller {
break;
}
- goaway(z_root() . '/admin/users' );
+ goaway(z_root() . '/admin/accounts' );
}
/* get pending */
@@ -982,7 +980,7 @@ class Admin extends \Zotlabs\Web\Controller {
intval(ACCOUNT_PENDING)
);
- /* get users */
+ /* get accounts */
$total = q("SELECT count(*) as total FROM account");
if (count($total)) {
@@ -990,22 +988,20 @@ class Admin extends \Zotlabs\Web\Controller {
\App::set_pager_itemspage(100);
}
-
- // We'll still need to link email addresses to admin/users/channels or some such, but this bit doesn't exist yet.
- // That's where we need to be doing last post/channel flags/etc, not here.
-
$serviceclass = (($_REQUEST['class']) ? " and account_service_class = '" . dbesc($_REQUEST['class']) . "' " : '');
+
+ $key = (($_REQUEST['key']) ? dbesc($_REQUEST['key']) : 'account_id');
+ $dir = 'asc';
+ if(array_key_exists('dir',$_REQUEST))
+ $dir = ((intval($_REQUEST['dir'])) ? 'asc' : 'desc');
+
+ $base = z_root() . '/admin/accounts?f=';
+ $odir = (($dir === 'asc') ? '0' : '1');
- $order = " order by account_email asc ";
- if($_REQUEST['order'] === 'expires')
- $order = " order by account_expires desc ";
- if($_REQUEST['order'] === 'created')
- $order = " order by account_created desc ";
-
- $users = q("SELECT `account_id` , `account_email`, `account_lastlog`, `account_created`, `account_expires`, " . "`account_service_class`, ( account_flags & %d )>0 as `blocked`, " .
+ $users = q("SELECT `account_id` , `account_email`, `account_lastlog`, `account_created`, `account_expires`, " . "`account_service_class`, ( account_flags & %d ) > 0 as `blocked`, " .
"(SELECT %s FROM channel as ch " .
"WHERE ch.channel_account_id = ac.account_id and ch.channel_removed = 0 ) as `channels` " .
- "FROM account as ac where true $serviceclass $order limit %d offset %d ",
+ "FROM account as ac where true $serviceclass order by $key $dir limit %d offset %d ",
intval(ACCOUNT_BLOCKED),
db_concat('ch.channel_address', ' '),
intval(\App::$pager['itemspage']),
@@ -1028,14 +1024,14 @@ class Admin extends \Zotlabs\Web\Controller {
// }
// $users = array_map("_setup_users", $users);
- $t = get_markup_template('admin_users.tpl');
+ $t = get_markup_template('admin_accounts.tpl');
$o = replace_macros($t, array(
// strings //
'$title' => t('Administration'),
- '$page' => t('Users'),
+ '$page' => t('Accounts'),
'$submit' => t('Submit'),
'$select_all' => t('select all'),
- '$h_pending' => t('User registrations waiting for confirm'),
+ '$h_pending' => t('Registrations waiting for confirm'),
'$th_pending' => array( t('Request date'), t('Email') ),
'$no_pending' => t('No registrations.'),
'$approve' => t('Approve'),
@@ -1043,14 +1039,22 @@ class Admin extends \Zotlabs\Web\Controller {
'$delete' => t('Delete'),
'$block' => t('Block'),
'$unblock' => t('Unblock'),
-
- '$h_users' => t('Users'),
- '$th_users' => array( t('ID'), t('Email'), t('All Channels'), t('Register date'), t('Last login'), t('Expires'), t('Service Class')),
+ '$odir' => $odir,
+ '$base' => $base,
+ '$h_users' => t('Accounts'),
+ '$th_users' => array(
+ [ t('ID'), 'account_id' ],
+ [ t('Email'), 'account_email' ],
+ [ t('All Channels'), 'channels' ],
+ [ t('Register date'), 'account_created' ],
+ [ t('Last login'), 'account_lastlog' ],
+ [ t('Expires'), 'account_expires' ],
+ [ t('Service Class'), 'account_service_class'] ),
'$confirm_delete_multi' => t('Selected accounts will be deleted!\n\nEverything these accounts had posted on this site will be permanently deleted!\n\nAre you sure?'),
'$confirm_delete' => t('The account {0} will be deleted!\n\nEverything this account has posted on this site will be permanently deleted!\n\nAre you sure?'),
- '$form_security_token' => get_form_security_token("admin_users"),
+ '$form_security_token' => get_form_security_token("admin_accounts"),
// values //
'$baseurl' => z_root(),
@@ -1082,7 +1086,7 @@ class Admin extends \Zotlabs\Web\Controller {
intval(PAGE_CENSORED),
intval( $uid )
);
- proc_run('php','include/directory.php',$uid,'nopush');
+ \Zotlabs\Daemon\Master::Summon(array('Directory',$uid,'nopush'));
}
notice( sprintf( tt("%s channel censored/uncensored", "%s channels censored/uncensored", count($channels)), count($channels)) );
}
@@ -1096,7 +1100,6 @@ class Admin extends \Zotlabs\Web\Controller {
notice( sprintf( tt("%s channel code allowed/disallowed", "%s channels code allowed/disallowed", count($channels)), count($channels)) );
}
if (x($_POST,'page_channels_delete')){
- require_once("include/Contact.php");
foreach($channels as $uid){
channel_remove($uid,true);
}
@@ -1128,7 +1131,6 @@ class Admin extends \Zotlabs\Web\Controller {
case "delete":{
check_form_security_token_redirectOnErr('/admin/channels', 'admin_channels', 't');
// delete channel
- require_once("include/Contact.php");
channel_remove($uid,true);
notice( sprintf(t("Channel '%s' deleted"), $channel[0]['channel_name']) . EOL);
@@ -1141,7 +1143,7 @@ class Admin extends \Zotlabs\Web\Controller {
intval($pflags),
intval( $uid )
);
- proc_run('php','include/directory.php',$uid,'nopush');
+ \Zotlabs\Daemon\Master::Summon(array('Directory',$uid,'nopush'));
notice( sprintf( (($pflags & PAGE_CENSORED) ? t("Channel '%s' censored"): t("Channel '%s' uncensored")) , $channel[0]['channel_name'] . ' (' . $channel[0]['channel_address'] . ')' ) . EOL);
}; break;
@@ -1162,6 +1164,17 @@ class Admin extends \Zotlabs\Web\Controller {
}
goaway(z_root() . '/admin/channels' );
}
+
+
+ $key = (($_REQUEST['key']) ? dbesc($_REQUEST['key']) : 'channel_id');
+ $dir = 'asc';
+ if(array_key_exists('dir',$_REQUEST))
+ $dir = ((intval($_REQUEST['dir'])) ? 'asc' : 'desc');
+
+ $base = z_root() . '/admin/channels?f=';
+ $odir = (($dir === 'asc') ? '0' : '1');
+
+
/* get channels */
@@ -1170,14 +1183,12 @@ class Admin extends \Zotlabs\Web\Controller {
\App::set_pager_total($total[0]['total']);
\App::set_pager_itemspage(100);
}
-
- $order = " order by channel_name asc ";
-
- $channels = q("SELECT * from channel where channel_removed = 0 and channel_system = 0 $order limit %d offset %d ",
+
+ $channels = q("SELECT * from channel where channel_removed = 0 and channel_system = 0 order by $key $dir limit %d offset %d ",
intval(\App::$pager['itemspage']),
intval(\App::$pager['start'])
);
-
+
if($channels) {
for($x = 0; $x < count($channels); $x ++) {
if($channels[$x]['channel_pageflags'] & PAGE_CENSORED)
@@ -1205,7 +1216,12 @@ class Admin extends \Zotlabs\Web\Controller {
'$code' => t('Allow Code'),
'$uncode' => t('Disallow Code'),
'$h_channels' => t('Channel'),
- '$th_channels' => array( t('UID'), t('Name'), t('Address')),
+ '$base' => $base,
+ '$odir' => $odir,
+ '$th_channels' => array(
+ [ t('UID'), 'channel_id' ],
+ [ t('Name'), 'channel_name' ],
+ [ t('Address'), 'channel_address' ]),
'$confirm_delete_multi' => t('Selected channels will be deleted!\n\nEverything that was posted in these channels on this site will be permanently deleted!\n\nAre you sure?'),
'$confirm_delete' => t('The channel {0} will be deleted!\n\nEverything that was posted in this channel on this site will be permanently deleted!\n\nAre you sure?'),
@@ -1295,7 +1311,7 @@ class Admin extends \Zotlabs\Web\Controller {
$admin_form = '';
- $r = q("select * from addon where plugin_admin = 1 and name = '%s' limit 1",
+ $r = q("select * from addon where plugin_admin = 1 and aname = '%s' limit 1",
dbesc($plugin)
);
@@ -1408,7 +1424,9 @@ class Admin extends \Zotlabs\Web\Controller {
'$plugins' => $plugins,
'$disabled' => t('Disabled - version incompatibility'),
'$form_security_token' => get_form_security_token('admin_plugins'),
- '$addrepo' => t('Add Plugin Repo'),
+ '$managerepos' => t('Manage Repos'),
+ '$installedtitle' => t('Installed Plugin Repositories'),
+ '$addnewrepotitle' => t('Install a New Plugin Repository'),
'$expandform' => false,
'$form' => $admin_plugins_add_repo_form,
'$newRepoModal' => $newRepoModal,
@@ -1423,13 +1441,15 @@ class Admin extends \Zotlabs\Web\Controller {
function listAddonRepos() {
$addonrepos = [];
$addonDir = __DIR__ . '/../../extend/addon/';
- if ($handle = opendir($addonDir)) {
- while (false !== ($entry = readdir($handle))) {
- if ($entry != "." && $entry != "..") {
- $addonrepos[] = $entry;
+ if(is_dir($addonDir)) {
+ if ($handle = opendir($addonDir)) {
+ while (false !== ($entry = readdir($handle))) {
+ if ($entry != "." && $entry != "..") {
+ $addonrepos[] = $entry;
+ }
}
+ closedir($handle);
}
- closedir($handle);
}
return $addonrepos;
}
@@ -1718,7 +1738,7 @@ class Admin extends \Zotlabs\Web\Controller {
// name, label, value, help string, extra data...
'$debugging' => array('debugging', t("Debugging"),get_config('system','debugging'), ""),
- '$logfile' => array('logfile', t("Log file"), get_config('system','logfile'), t("Must be writable by web server. Relative to your Red top-level directory.")),
+ '$logfile' => array('logfile', t("Log file"), get_config('system','logfile'), t("Must be writable by web server. Relative to your top-level webserver directory.")),
'$loglevel' => array('loglevel', t("Log level"), get_config('system','loglevel'), "", $log_choices),
'$form_security_token' => get_form_security_token('admin_logs'),
@@ -1733,7 +1753,7 @@ class Admin extends \Zotlabs\Web\Controller {
} else {
json_return_and_die(array('message' => 'No repo name provided.', 'success' => false));
}
- $extendDir = __DIR__ . '/../../store/git/sys/extend';
+ $extendDir = __DIR__ . '/../../store/[data]/git/sys/extend';
$addonDir = $extendDir . '/addon';
if (!file_exists($extendDir)) {
if (!mkdir($extendDir, 0770, true)) {
@@ -1746,7 +1766,7 @@ class Admin extends \Zotlabs\Web\Controller {
}
}
}
- $repoDir = __DIR__ . '/../../store/git/sys/extend/addon/' . $repoName;
+ $repoDir = __DIR__ . '/../../store/[data]/git/sys/extend/addon/' . $repoName;
if (!is_dir($repoDir)) {
logger('Repo directory does not exist: ' . $repoDir);
json_return_and_die(array('message' => 'Invalid addon repo.', 'success' => false));
@@ -1758,6 +1778,18 @@ class Admin extends \Zotlabs\Web\Controller {
$git = new GitRepo('sys', null, false, $repoName, $repoDir);
try {
if ($git->pull()) {
+ $files = array_diff(scandir($repoDir), array('.', '..'));
+ foreach ($files as $file) {
+ if (is_dir($repoDir . '/' . $file) && $file !== '.git') {
+ $source = '../extend/addon/' . $repoName . '/' . $file;
+ $target = realpath(__DIR__ . '/../../addon/') . '/' . $file;
+ unlink($target);
+ if (!symlink($source, $target)) {
+ logger('Error linking addons to /addon');
+ json_return_and_die(array('message' => 'Error linking addons to /addon', 'success' => false));
+ }
+ }
+ }
json_return_and_die(array('message' => 'Repo updated.', 'success' => true));
} else {
json_return_and_die(array('message' => 'Error updating addon repo.', 'success' => false));
@@ -1771,7 +1803,7 @@ class Admin extends \Zotlabs\Web\Controller {
} else {
json_return_and_die(array('message' => 'No repo name provided.', 'success' => false));
}
- $extendDir = __DIR__ . '/../../store/git/sys/extend';
+ $extendDir = __DIR__ . '/../../store/[data]/git/sys/extend';
$addonDir = $extendDir . '/addon';
if (!file_exists($extendDir)) {
if (!mkdir($extendDir, 0770, true)) {
@@ -1784,7 +1816,7 @@ class Admin extends \Zotlabs\Web\Controller {
}
}
}
- $repoDir = __DIR__ . '/../../store/git/sys/extend/addon/' . $repoName;
+ $repoDir = __DIR__ . '/../../store/[data]/git/sys/extend/addon/' . $repoName;
if (!is_dir($repoDir)) {
logger('Repo directory does not exist: ' . $repoDir);
json_return_and_die(array('message' => 'Invalid addon repo.', 'success' => false));
@@ -1804,7 +1836,7 @@ class Admin extends \Zotlabs\Web\Controller {
if (array_key_exists('repoURL', $_REQUEST)) {
require __DIR__ . '/../../library/PHPGit.autoload.php'; // Load PHPGit dependencies
$repoURL = $_REQUEST['repoURL'];
- $extendDir = __DIR__ . '/../../store/git/sys/extend';
+ $extendDir = __DIR__ . '/../../store/[data]/git/sys/extend';
$addonDir = $extendDir . '/addon';
if (!file_exists($extendDir)) {
if (!mkdir($extendDir, 0770, true)) {
@@ -1832,7 +1864,7 @@ class Admin extends \Zotlabs\Web\Controller {
json_return_and_die(array('message' => 'Invalid git repo', 'success' => false));
}
$repoDir = $addonDir . '/' . $repoName;
- $tempRepoBaseDir = __DIR__ . '/../../store/git/sys/temp/';
+ $tempRepoBaseDir = __DIR__ . '/../../store/[data]/git/sys/temp/';
$tempAddonDir = $tempRepoBaseDir . $repoName;
if (!is_writable($addonDir) || !is_writable($tempAddonDir)) {
@@ -1866,9 +1898,9 @@ class Admin extends \Zotlabs\Web\Controller {
if (array_key_exists('repoURL', $_REQUEST)) {
require __DIR__ . '/../../library/PHPGit.autoload.php'; // Load PHPGit dependencies
$repoURL = $_REQUEST['repoURL'];
- $extendDir = __DIR__ . '/../../store/git/sys/extend';
+ $extendDir = __DIR__ . '/../../store/[data]/git/sys/extend';
$addonDir = $extendDir . '/addon';
- $tempAddonDir = __DIR__ . '/../../store/git/sys/temp';
+ $tempAddonDir = __DIR__ . '/../../store/[data]/git/sys/temp';
if (!file_exists($extendDir)) {
if (!mkdir($extendDir, 0770, true)) {
logger('Error creating extend folder: ' . $extendDir);
@@ -1880,6 +1912,12 @@ class Admin extends \Zotlabs\Web\Controller {
}
}
}
+ if (!is_dir($tempAddonDir)) {
+ if (!mkdir($tempAddonDir, 0770, true)) {
+ logger('Error creating temp plugin repo folder: ' . $tempAddonDir);
+ json_return_and_die(array('message' => 'Error creating temp plugin repo folder: ' . $tempAddonDir, 'success' => false));
+ }
+ }
$repoName = null;
if (array_key_exists('repoName', $_REQUEST) && $_REQUEST['repoName'] !== '') {
$repoName = $_REQUEST['repoName'];
diff --git a/Zotlabs/Module/Api.php b/Zotlabs/Module/Api.php
index 3e7f23b6c..e4744c29f 100644
--- a/Zotlabs/Module/Api.php
+++ b/Zotlabs/Module/Api.php
@@ -107,7 +107,7 @@ class Api extends \Zotlabs\Web\Controller {
$r = q("SELECT `clients`.*
FROM `clients`, `tokens`
WHERE `clients`.`client_id`=`tokens`.`client_id`
- AND `tokens`.`id`='%s' AND `tokens`.`scope`='request'",
+ AND `tokens`.`id`='%s' AND `tokens`.`auth_scope`='request'",
dbesc($token));
if (!count($r))
diff --git a/Zotlabs/Module/Appman.php b/Zotlabs/Module/Appman.php
index ba2a64f35..a200e986a 100644
--- a/Zotlabs/Module/Appman.php
+++ b/Zotlabs/Module/Appman.php
@@ -2,8 +2,9 @@
namespace Zotlabs\Module;
-require_once('include/apps.php');
+//require_once('include/apps.php');
+use \Zotlabs\Lib as Zlib;
class Appman extends \Zotlabs\Web\Controller {
@@ -30,16 +31,16 @@ class Appman extends \Zotlabs\Web\Controller {
'categories' => escape_tags($_REQUEST['categories'])
);
- $_REQUEST['appid'] = app_install(local_channel(),$arr);
+ $_REQUEST['appid'] = Zlib\Apps::app_install(local_channel(),$arr);
- if(app_installed(local_channel(),$arr))
+ if(Zlib\Apps::app_installed(local_channel(),$arr))
info( t('App installed.') . EOL);
return;
}
- $papp = app_decode($_POST['papp']);
+ $papp = Zlib\Apps::app_decode($_POST['papp']);
if(! is_array($papp)) {
notice( t('Malformed app.') . EOL);
@@ -47,13 +48,13 @@ class Appman extends \Zotlabs\Web\Controller {
}
if($_POST['install']) {
- app_install(local_channel(),$papp);
- if(app_installed(local_channel(),$papp))
+ Zlib\Apps::app_install(local_channel(),$papp);
+ if(Zlib\Apps::app_installed(local_channel(),$papp))
info( t('App installed.') . EOL);
}
if($_POST['delete']) {
- app_destroy(local_channel(),$papp);
+ Zlib\Apps::app_destroy(local_channel(),$papp);
}
if($_POST['edit']) {
@@ -100,7 +101,7 @@ class Appman extends \Zotlabs\Web\Controller {
}
}
- $embed = array('embed', t('Embed code'), app_encode($app,true),'', 'onclick="this.select();"');
+ $embed = array('embed', t('Embed code'), Zlib\Apps::app_encode($app,true),'', 'onclick="this.select();"');
}
diff --git a/Zotlabs/Module/Apps.php b/Zotlabs/Module/Apps.php
index 33259b319..4bdec4573 100644
--- a/Zotlabs/Module/Apps.php
+++ b/Zotlabs/Module/Apps.php
@@ -1,8 +1,9 @@
<?php
namespace Zotlabs\Module;
-require_once('include/apps.php');
+//require_once('include/apps.php');
+use \Zotlabs\Lib as Zlib;
class Apps extends \Zotlabs\Web\Controller {
@@ -19,25 +20,25 @@ class Apps extends \Zotlabs\Web\Controller {
if(local_channel()) {
- import_system_apps();
+ Zlib\Apps::import_system_apps();
$syslist = array();
- $list = app_list(local_channel(), false, $_GET['cat']);
+ $list = Zlib\Apps::app_list(local_channel(), false, $_GET['cat']);
if($list) {
foreach($list as $x) {
- $syslist[] = app_encode($x);
+ $syslist[] = Zlib\Apps::app_encode($x);
}
}
- translate_system_apps($syslist);
+ Zlib\Apps::translate_system_apps($syslist);
}
else
- $syslist = get_system_apps(true);
+ $syslist = Zlib\Apps::get_system_apps(true);
- usort($syslist,'app_name_compare');
+ usort($syslist,'Zotlabs\\Lib\\Apps::app_name_compare');
// logger('apps: ' . print_r($syslist,true));
foreach($syslist as $app) {
- $apps[] = app_render($app,$mode);
+ $apps[] = Zlib\Apps::app_render($app,$mode);
}
return replace_macros(get_markup_template('myapps.tpl'), array(
diff --git a/Zotlabs/Module/Attach.php b/Zotlabs/Module/Attach.php
index 8948b66d7..de941d52c 100644
--- a/Zotlabs/Module/Attach.php
+++ b/Zotlabs/Module/Attach.php
@@ -40,7 +40,7 @@ class Attach extends \Zotlabs\Web\Controller {
header('Content-disposition: attachment; filename="' . $r['data']['filename'] . '"');
if(intval($r['data']['os_storage'])) {
- $fname = dbunescbin($r['data']['data']);
+ $fname = dbunescbin($r['data']['content']);
if(strpos($fname,'store') !== false)
$istream = fopen($fname,'rb');
else
@@ -53,7 +53,7 @@ class Attach extends \Zotlabs\Web\Controller {
}
}
else
- echo dbunescbin($r['data']['data']);
+ echo dbunescbin($r['data']['content']);
killme();
}
diff --git a/Zotlabs/Module/Blocks.php b/Zotlabs/Module/Blocks.php
index ed702befb..32650a090 100644
--- a/Zotlabs/Module/Blocks.php
+++ b/Zotlabs/Module/Blocks.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/conversation.php');
require_once('include/acl_selectors.php');
diff --git a/Zotlabs/Module/Cal.php b/Zotlabs/Module/Cal.php
index 958ce5aa6..1da42684d 100644
--- a/Zotlabs/Module/Cal.php
+++ b/Zotlabs/Module/Cal.php
@@ -6,14 +6,12 @@ require_once('include/bbcode.php');
require_once('include/datetime.php');
require_once('include/event.php');
require_once('include/items.php');
-require_once('include/Contact.php');
-
class Cal extends \Zotlabs\Web\Controller {
function init() {
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
return;
}
@@ -47,13 +45,12 @@ class Cal extends \Zotlabs\Web\Controller {
- function get() {
+ function get() {
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
return;
}
-
-
+
$channel = null;
if(argc() > 1) {
@@ -94,7 +91,7 @@ class Cal extends \Zotlabs\Web\Controller {
$mode = 'view';
$y = 0;
$m = 0;
- $ignored = ((x($_REQUEST,'ignored')) ? " and ignored = " . intval($_REQUEST['ignored']) . " " : '');
+ $ignored = ((x($_REQUEST,'ignored')) ? " and dismissed = " . intval($_REQUEST['ignored']) . " " : '');
// logger('args: ' . print_r(\App::$argv,true));
@@ -149,7 +146,7 @@ class Cal extends \Zotlabs\Web\Controller {
$ftext = datetime_convert('UTC',$tz,$fdt);
$ftext = substr($ftext,0,14) . "00:00";
- $type = ((x($orig_event)) ? $orig_event['type'] : 'event');
+ $type = ((x($orig_event)) ? $orig_event['etype'] : 'event');
$f = get_config('system','event_input_format');
if(! $f)
@@ -160,7 +157,7 @@ class Cal extends \Zotlabs\Web\Controller {
$show_bd = perm_is_allowed($channel['channel_id'], get_observer_hash(), 'view_contacts');
if(! $show_bd) {
- $sql_extra .= " and event.type != 'birthday' ";
+ $sql_extra .= " and event.etype != 'birthday' ";
}
@@ -228,8 +225,8 @@ class Cal extends \Zotlabs\Web\Controller {
$r = q("SELECT event.*, item.plink, item.item_flags, item.author_xchan, item.owner_xchan
from event left join item on event_hash = resource_id
where resource_type = 'event' and event.uid = %d $ignored
- AND (( adjust = 0 AND ( finish >= '%s' or nofinish = 1 ) AND start <= '%s' )
- OR ( adjust = 1 AND ( finish >= '%s' or nofinish = 1 ) AND start <= '%s' )) $sql_extra ",
+ AND (( adjust = 0 AND ( dtend >= '%s' or nofinish = 1 ) AND dtstart <= '%s' )
+ OR ( adjust = 1 AND ( dtend >= '%s' or nofinish = 1 ) AND dtstart <= '%s' )) $sql_extra ",
intval($channel['channel_id']),
dbesc($start),
dbesc($finish),
@@ -250,7 +247,7 @@ class Cal extends \Zotlabs\Web\Controller {
if($r) {
foreach($r as $rr) {
- $j = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], 'j') : datetime_convert('UTC','UTC',$rr['start'],'j'));
+ $j = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['dtstart'], 'j') : datetime_convert('UTC','UTC',$rr['dtstart'],'j'));
if(! x($links,$j))
$links[$j] = z_root() . '/' . \App::$cmd . '#link-' . $j;
}
@@ -265,15 +262,15 @@ class Cal extends \Zotlabs\Web\Controller {
foreach($r as $rr) {
- $j = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], 'j') : datetime_convert('UTC','UTC',$rr['start'],'j'));
- $d = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], $fmt) : datetime_convert('UTC','UTC',$rr['start'],$fmt));
+ $j = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['dtstart'], 'j') : datetime_convert('UTC','UTC',$rr['dtstart'],'j'));
+ $d = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['dtstart'], $fmt) : datetime_convert('UTC','UTC',$rr['dtstart'],$fmt));
$d = day_translate($d);
- $start = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], 'c') : datetime_convert('UTC','UTC',$rr['start'],'c'));
+ $start = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['dtstart'], 'c') : datetime_convert('UTC','UTC',$rr['dtstart'],'c'));
if ($rr['nofinish']){
$end = null;
} else {
- $end = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['finish'], 'c') : datetime_convert('UTC','UTC',$rr['finish'],'c'));
+ $end = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['dtend'], 'c') : datetime_convert('UTC','UTC',$rr['dtend'],'c'));
}
diff --git a/Zotlabs/Module/Channel.php b/Zotlabs/Module/Channel.php
index f55705442..29bfcbc3c 100644
--- a/Zotlabs/Module/Channel.php
+++ b/Zotlabs/Module/Channel.php
@@ -13,353 +13,355 @@ require_once('include/PermissionDescription.php');
class Channel extends \Zotlabs\Web\Controller {
-function init() {
-
- $which = null;
- if(argc() > 1)
- $which = argv(1);
- if(! $which) {
- if(local_channel()) {
- $channel = \App::get_channel();
- if($channel && $channel['channel_address'])
- $which = $channel['channel_address'];
+ function init() {
+
+ $which = null;
+ if(argc() > 1)
+ $which = argv(1);
+ if(! $which) {
+ if(local_channel()) {
+ $channel = \App::get_channel();
+ if($channel && $channel['channel_address'])
+ $which = $channel['channel_address'];
+ }
+ }
+ if(! $which) {
+ notice( t('You must be logged in to see this page.') . EOL );
+ return;
}
- }
- if(! $which) {
- notice( t('You must be logged in to see this page.') . EOL );
- return;
- }
- $profile = 0;
- $channel = \App::get_channel();
+ $profile = 0;
+ $channel = \App::get_channel();
- if((local_channel()) && (argc() > 2) && (argv(2) === 'view')) {
- $which = $channel['channel_address'];
- $profile = argv(1);
- }
+ if((local_channel()) && (argc() > 2) && (argv(2) === 'view')) {
+ $which = $channel['channel_address'];
+ $profile = argv(1);
+ }
- \App::$page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" title="' . t('Posts and comments') . '" href="' . z_root() . '/feed/' . $which . '" />' . "\r\n" ;
- \App::$page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" title="' . t('Only posts') . '" href="' . z_root() . '/feed/' . $which . '?top=1" />' . "\r\n" ;
+ \App::$page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" title="' . t('Posts and comments') . '" href="' . z_root() . '/feed/' . $which . '" />' . "\r\n" ;
+ \App::$page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" title="' . t('Only posts') . '" href="' . z_root() . '/feed/' . $which . '?top=1" />' . "\r\n" ;
-// Not yet ready for prime time
-// \App::$page['htmlhead'] .= '<link rel="openid.server" href="' . z_root() . '/id/' . $which .'?f=" />' . "\r\n" ;
-// \App::$page['htmlhead'] .= '<link rel="openid.delegate" href="' . z_root() . '/channel/' . $which .'" />' . "\r\n" ;
+ // Not yet ready for prime time
+ // \App::$page['htmlhead'] .= '<link rel="openid.server" href="' . z_root() . '/id/' . $which .'?f=" />' . "\r\n" ;
+ // \App::$page['htmlhead'] .= '<link rel="openid.delegate" href="' . z_root() . '/channel/' . $which .'" />' . "\r\n" ;
- // Run profile_load() here to make sure the theme is set before
- // we start loading content
+ // Run profile_load() here to make sure the theme is set before
+ // we start loading content
- profile_load($a,$which,$profile);
+ profile_load($a,$which,$profile);
-}
+ }
-function get($update = 0, $load = false) {
+ function get($update = 0, $load = false) {
- if($load)
- $_SESSION['loadtime'] = datetime_convert();
+ if($load)
+ $_SESSION['loadtime'] = datetime_convert();
- $checkjs = new \Zotlabs\Web\CheckJS(1);
+ $checkjs = new \Zotlabs\Web\CheckJS(1);
- $category = $datequery = $datequery2 = '';
+ $category = $datequery = $datequery2 = '';
- $mid = ((x($_REQUEST,'mid')) ? $_REQUEST['mid'] : '');
+ $mid = ((x($_REQUEST,'mid')) ? $_REQUEST['mid'] : '');
- $datequery = ((x($_GET,'dend') && is_a_date_arg($_GET['dend'])) ? notags($_GET['dend']) : '');
- $datequery2 = ((x($_GET,'dbegin') && is_a_date_arg($_GET['dbegin'])) ? notags($_GET['dbegin']) : '');
+ $datequery = ((x($_GET,'dend') && is_a_date_arg($_GET['dend'])) ? notags($_GET['dend']) : '');
+ $datequery2 = ((x($_GET,'dbegin') && is_a_date_arg($_GET['dbegin'])) ? notags($_GET['dbegin']) : '');
- if(get_config('system','block_public') && (! get_account_id()) && (! remote_channel())) {
+ if(observer_prohibited(true)) {
return login();
- }
+ }
- $category = ((x($_REQUEST,'cat')) ? $_REQUEST['cat'] : '');
- $hashtags = ((x($_REQUEST,'tag')) ? $_REQUEST['tag'] : '');
+ $category = ((x($_REQUEST,'cat')) ? $_REQUEST['cat'] : '');
+ $hashtags = ((x($_REQUEST,'tag')) ? $_REQUEST['tag'] : '');
- $groups = array();
+ $groups = array();
- $o = '';
+ $o = '';
- if($update) {
- // Ensure we've got a profile owner if updating.
- \App::$profile['profile_uid'] = \App::$profile_uid = $update;
- }
- else {
- if(\App::$profile['profile_uid'] == local_channel()) {
- nav_set_selected('home');
+ if($update) {
+ // Ensure we've got a profile owner if updating.
+ \App::$profile['profile_uid'] = \App::$profile_uid = $update;
+ }
+ else {
+ if(\App::$profile['profile_uid'] == local_channel()) {
+ nav_set_selected('home');
+ }
}
- }
- $is_owner = (((local_channel()) && (\App::$profile['profile_uid'] == local_channel())) ? true : false);
+ $is_owner = (((local_channel()) && (\App::$profile['profile_uid'] == local_channel())) ? true : false);
- $channel = \App::get_channel();
- $observer = \App::get_observer();
- $ob_hash = (($observer) ? $observer['xchan_hash'] : '');
+ $channel = \App::get_channel();
+ $observer = \App::get_observer();
+ $ob_hash = (($observer) ? $observer['xchan_hash'] : '');
- $perms = get_all_perms(\App::$profile['profile_uid'],$ob_hash);
+ $perms = get_all_perms(\App::$profile['profile_uid'],$ob_hash);
- if(! $perms['view_stream']) {
+ if(! $perms['view_stream']) {
// We may want to make the target of this redirect configurable
if($perms['view_profile']) {
notice( t('Insufficient permissions. Request redirected to profile page.') . EOL);
goaway (z_root() . "/profile/" . \App::$profile['channel_address']);
}
- notice( t('Permission denied.') . EOL);
- return;
- }
+ notice( t('Permission denied.') . EOL);
+ return;
+ }
- if(! $update) {
+ if(! $update) {
- $o .= profile_tabs($a, $is_owner, \App::$profile['channel_address']);
+ $o .= profile_tabs($a, $is_owner, \App::$profile['channel_address']);
- $o .= common_friends_visitor_widget(\App::$profile['profile_uid']);
+ $o .= common_friends_visitor_widget(\App::$profile['profile_uid']);
- if($channel && $is_owner) {
- $channel_acl = array(
- 'allow_cid' => $channel['channel_allow_cid'],
- 'allow_gid' => $channel['channel_allow_gid'],
- 'deny_cid' => $channel['channel_deny_cid'],
- 'deny_gid' => $channel['channel_deny_gid']
- );
- }
- else
- $channel_acl = array();
-
-
- if($perms['post_wall']) {
-
- $x = array(
- 'is_owner' => $is_owner,
- 'allow_location' => ((($is_owner || $observer) && (intval(get_pconfig(\App::$profile['profile_uid'],'system','use_browser_location')))) ? true : false),
- 'default_location' => (($is_owner) ? \App::$profile['channel_location'] : ''),
- 'nickname' => \App::$profile['channel_address'],
- 'lockstate' => (((strlen(\App::$profile['channel_allow_cid'])) || (strlen(\App::$profile['channel_allow_gid'])) || (strlen(\App::$profile['channel_deny_cid'])) || (strlen(\App::$profile['channel_deny_gid']))) ? 'lock' : 'unlock'),
- 'acl' => (($is_owner) ? populate_acl($channel_acl,true, \PermissionDescription::fromGlobalPermission('view_stream'), get_post_aclDialogDescription(), 'acl_dialog_post') : ''),
- 'showacl' => (($is_owner) ? 'yes' : ''),
- 'bang' => '',
- 'visitor' => (($is_owner || $observer) ? true : false),
- 'profile_uid' => \App::$profile['profile_uid'],
- 'editor_autocomplete' => true,
- 'bbco_autocomplete' => 'bbcode',
- 'bbcode' => true
- );
-
- $o .= status_editor($a,$x);
- }
+ if($channel && $is_owner) {
+ $channel_acl = array(
+ 'allow_cid' => $channel['channel_allow_cid'],
+ 'allow_gid' => $channel['channel_allow_gid'],
+ 'deny_cid' => $channel['channel_deny_cid'],
+ 'deny_gid' => $channel['channel_deny_gid']
+ );
+ }
+ else
+ $channel_acl = array();
+
+
+ if($perms['post_wall']) {
+
+ $x = array(
+ 'is_owner' => $is_owner,
+ 'allow_location' => ((($is_owner || $observer) && (intval(get_pconfig(\App::$profile['profile_uid'],'system','use_browser_location')))) ? true : false),
+ 'default_location' => (($is_owner) ? \App::$profile['channel_location'] : ''),
+ 'nickname' => \App::$profile['channel_address'],
+ 'lockstate' => (((strlen(\App::$profile['channel_allow_cid'])) || (strlen(\App::$profile['channel_allow_gid'])) || (strlen(\App::$profile['channel_deny_cid'])) || (strlen(\App::$profile['channel_deny_gid']))) ? 'lock' : 'unlock'),
+ 'acl' => (($is_owner) ? populate_acl($channel_acl,true, \PermissionDescription::fromGlobalPermission('view_stream'), get_post_aclDialogDescription(), 'acl_dialog_post') : ''),
+ 'showacl' => (($is_owner) ? 'yes' : ''),
+ 'bang' => '',
+ 'visitor' => (($is_owner || $observer) ? true : false),
+ 'profile_uid' => \App::$profile['profile_uid'],
+ 'editor_autocomplete' => true,
+ 'bbco_autocomplete' => 'bbcode',
+ 'bbcode' => true
+ );
+
+ $o .= status_editor($a,$x);
+ }
- }
+ }
- /**
- * Get permissions SQL - if $remote_contact is true, our remote user has been pre-verified and we already have fetched his/her groups
- */
+ /**
+ * Get permissions SQL - if $remote_contact is true, our remote user has been pre-verified and we already have fetched his/her groups
+ */
- $item_normal = item_normal();
- $sql_extra = item_permissions_sql(\App::$profile['profile_uid']);
+ $item_normal = item_normal();
+ $sql_extra = item_permissions_sql(\App::$profile['profile_uid']);
- if(get_pconfig(\App::$profile['profile_uid'],'system','channel_list_mode') && (! $mid))
- $page_mode = 'list';
- else
- $page_mode = 'client';
+ if(get_pconfig(\App::$profile['profile_uid'],'system','channel_list_mode') && (! $mid))
+ $page_mode = 'list';
+ else
+ $page_mode = 'client';
- $abook_uids = " and abook.abook_channel = " . intval(\App::$profile['profile_uid']) . " ";
+ $abook_uids = " and abook.abook_channel = " . intval(\App::$profile['profile_uid']) . " ";
- $simple_update = (($update) ? " AND item_unseen = 1 " : '');
+ $simple_update = (($update) ? " AND item_unseen = 1 " : '');
- \App::$page['htmlhead'] .= "\r\n" . '<link rel="alternate" type="application/json+oembed" href="' . z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$query_string) . '" title="oembed" />' . "\r\n";
+ \App::$page['htmlhead'] .= "\r\n" . '<link rel="alternate" type="application/json+oembed" href="' . z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$query_string) . '" title="oembed" />' . "\r\n";
- if($update && $_SESSION['loadtime'])
- $simple_update = " AND (( item_unseen = 1 AND item.changed > '" . datetime_convert('UTC','UTC',$_SESSION['loadtime']) . "' ) OR item.changed > '" . datetime_convert('UTC','UTC',$_SESSION['loadtime']) . "' ) ";
- if($load)
- $simple_update = '';
-
- if(($update) && (! $load)) {
-
- if ($mid) {
- $r = q("SELECT parent AS item_id from item where mid like '%s' and uid = %d $item_normal
- AND item_wall = 1 AND item_unseen = 1 $sql_extra limit 1",
- dbesc($mid . '%'),
- intval(\App::$profile['profile_uid'])
- );
- } else {
- $r = q("SELECT distinct parent AS `item_id`, created from item
- left join abook on ( item.owner_xchan = abook.abook_xchan $abook_uids )
- WHERE uid = %d $item_normal
- AND item_wall = 1 $simple_update
- AND (abook.abook_blocked = 0 or abook.abook_flags is null)
- $sql_extra
- ORDER BY created DESC",
- intval(\App::$profile['profile_uid'])
- );
- $_SESSION['loadtime'] = datetime_convert();
- }
-
- }
- else {
-
- if(x($category)) {
- $sql_extra .= protect_sprintf(term_query('item', $category, TERM_CATEGORY));
- }
- if(x($hashtags)) {
- $sql_extra .= protect_sprintf(term_query('item', $hashtags, TERM_HASHTAG, TERM_COMMUNITYTAG));
- }
-
- if($datequery) {
- $sql_extra2 .= protect_sprintf(sprintf(" AND item.created <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery))));
- }
- if($datequery2) {
- $sql_extra2 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2))));
- }
+ if($update && $_SESSION['loadtime'])
+ $simple_update = " AND (( item_unseen = 1 AND item.changed > '" . datetime_convert('UTC','UTC',$_SESSION['loadtime']) . "' ) OR item.changed > '" . datetime_convert('UTC','UTC',$_SESSION['loadtime']) . "' ) ";
+ if($load)
+ $simple_update = '';
- $itemspage = get_pconfig(local_channel(),'system','itemspage');
- \App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20));
- $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']), intval(\App::$pager['start']));
+ if(($update) && (! $load)) {
- if($load || ($checkjs->disabled())) {
- if ($mid) {
- $r = q("SELECT parent AS item_id from item where mid = '%s' and uid = %d $item_normal
- AND item_wall = 1 $sql_extra limit 1",
- dbesc($mid),
+ if($mid) {
+ $r = q("SELECT parent AS item_id from item where mid like '%s' and uid = %d $item_normal
+ AND item_wall = 1 AND item_unseen = 1 $sql_extra limit 1",
+ dbesc($mid . '%'),
intval(\App::$profile['profile_uid'])
);
- if (! $r) {
- notice( t('Permission denied.') . EOL);
- }
-
- } else {
- $r = q("SELECT distinct id AS item_id, created FROM item
- left join abook on item.author_xchan = abook.abook_xchan
+ }
+ else {
+ $r = q("SELECT distinct parent AS `item_id`, created from item
+ left join abook on ( item.owner_xchan = abook.abook_xchan $abook_uids )
WHERE uid = %d $item_normal
- AND item_wall = 1 and item_thread_top = 1
- AND (abook_blocked = 0 or abook.abook_flags is null)
- $sql_extra $sql_extra2
- ORDER BY created DESC $pager_sql ",
+ AND item_wall = 1 $simple_update
+ AND (abook.abook_blocked = 0 or abook.abook_flags is null)
+ $sql_extra
+ ORDER BY created DESC",
intval(\App::$profile['profile_uid'])
);
+ $_SESSION['loadtime'] = datetime_convert();
}
+
}
else {
- $r = array();
- }
- }
- if($r) {
+ if(x($category)) {
+ $sql_extra .= protect_sprintf(term_query('item', $category, TERM_CATEGORY));
+ }
+ if(x($hashtags)) {
+ $sql_extra .= protect_sprintf(term_query('item', $hashtags, TERM_HASHTAG, TERM_COMMUNITYTAG));
+ }
- $parents_str = ids_to_querystr($r,'item_id');
-
- $items = q("SELECT `item`.*, `item`.`id` AS `item_id`
- FROM `item`
- WHERE `item`.`uid` = %d $item_normal
- AND `item`.`parent` IN ( %s )
- $sql_extra ",
- intval(\App::$profile['profile_uid']),
- dbesc($parents_str)
- );
-
- xchan_query($items);
- $items = fetch_post_tags($items, true);
- $items = conv_sort($items,'created');
-
- if ($load && $mid && (! count($items))) {
- // This will happen if we don't have sufficient permissions
- // to view the parent item (or the item itself if it is toplevel)
- notice( t('Permission denied.') . EOL);
+ if($datequery) {
+ $sql_extra2 .= protect_sprintf(sprintf(" AND item.created <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery))));
+ }
+ if($datequery2) {
+ $sql_extra2 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2))));
+ }
+
+ $itemspage = get_pconfig(local_channel(),'system','itemspage');
+ \App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20));
+ $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']), intval(\App::$pager['start']));
+
+ if($load || ($checkjs->disabled())) {
+ if($mid) {
+ $r = q("SELECT parent AS item_id from item where mid = '%s' and uid = %d $item_normal
+ AND item_wall = 1 $sql_extra limit 1",
+ dbesc($mid),
+ intval(\App::$profile['profile_uid'])
+ );
+ if (! $r) {
+ notice( t('Permission denied.') . EOL);
+ }
+
+ }
+ else {
+ $r = q("SELECT distinct id AS item_id, created FROM item
+ left join abook on item.author_xchan = abook.abook_xchan
+ WHERE uid = %d $item_normal
+ AND item_wall = 1 and item_thread_top = 1
+ AND (abook_blocked = 0 or abook.abook_flags is null)
+ $sql_extra $sql_extra2
+ ORDER BY created DESC $pager_sql ",
+ intval(\App::$profile['profile_uid'])
+ );
+ }
+ }
+ else {
+ $r = array();
+ }
}
- } else {
- $items = array();
- }
+ if($r) {
- if((! $update) && (! $load)) {
-
- // This is ugly, but we can't pass the profile_uid through the session to the ajax updater,
- // because browser prefetching might change it on us. We have to deliver it with the page.
-
- $maxheight = get_pconfig(\App::$profile['profile_uid'],'system','channel_divmore_height');
- if(! $maxheight)
- $maxheight = 400;
-
- $o .= '<div id="live-channel"></div>' . "\r\n";
- $o .= "<script> var profile_uid = " . \App::$profile['profile_uid']
- . "; var netargs = '?f='; var profile_page = " . \App::$pager['page']
- . "; divmore_height = " . intval($maxheight) . "; </script>\r\n";
-
- \App::$page['htmlhead'] .= replace_macros(get_markup_template("build_query.tpl"),array(
- '$baseurl' => z_root(),
- '$pgtype' => 'channel',
- '$uid' => ((\App::$profile['profile_uid']) ? \App::$profile['profile_uid'] : '0'),
- '$gid' => '0',
- '$cid' => '0',
- '$cmin' => '0',
- '$cmax' => '0',
- '$star' => '0',
- '$liked' => '0',
- '$conv' => '0',
- '$spam' => '0',
- '$nouveau' => '0',
- '$wall' => '1',
- '$fh' => '0',
- '$page' => ((\App::$pager['page'] != 1) ? \App::$pager['page'] : 1),
- '$search' => '',
- '$order' => '',
- '$list' => ((x($_REQUEST,'list')) ? intval($_REQUEST['list']) : 0),
- '$file' => '',
- '$cats' => (($category) ? $category : ''),
- '$tags' => (($hashtags) ? $hashtags : ''),
- '$mid' => $mid,
- '$verb' => '',
- '$dend' => $datequery,
- '$dbegin' => $datequery2
- ));
+ $parents_str = ids_to_querystr($r,'item_id');
+
+ $items = q("SELECT `item`.*, `item`.`id` AS `item_id`
+ FROM `item`
+ WHERE `item`.`uid` = %d $item_normal
+ AND `item`.`parent` IN ( %s )
+ $sql_extra ",
+ intval(\App::$profile['profile_uid']),
+ dbesc($parents_str)
+ );
+ xchan_query($items);
+ $items = fetch_post_tags($items, true);
+ $items = conv_sort($items,'created');
- }
+ if($load && $mid && (! count($items))) {
+ // This will happen if we don't have sufficient permissions
+ // to view the parent item (or the item itself if it is toplevel)
+ notice( t('Permission denied.') . EOL);
+ }
- $update_unseen = '';
+ }
+ else {
+ $items = array();
+ }
- if($page_mode === 'list') {
+ if((! $update) && (! $load)) {
+
+ // This is ugly, but we can't pass the profile_uid through the session to the ajax updater,
+ // because browser prefetching might change it on us. We have to deliver it with the page.
+
+ $maxheight = get_pconfig(\App::$profile['profile_uid'],'system','channel_divmore_height');
+ if(! $maxheight)
+ $maxheight = 400;
+
+ $o .= '<div id="live-channel"></div>' . "\r\n";
+ $o .= "<script> var profile_uid = " . \App::$profile['profile_uid']
+ . "; var netargs = '?f='; var profile_page = " . \App::$pager['page']
+ . "; divmore_height = " . intval($maxheight) . "; </script>\r\n";
+
+ \App::$page['htmlhead'] .= replace_macros(get_markup_template("build_query.tpl"),array(
+ '$baseurl' => z_root(),
+ '$pgtype' => 'channel',
+ '$uid' => ((\App::$profile['profile_uid']) ? \App::$profile['profile_uid'] : '0'),
+ '$gid' => '0',
+ '$cid' => '0',
+ '$cmin' => '0',
+ '$cmax' => '0',
+ '$star' => '0',
+ '$liked' => '0',
+ '$conv' => '0',
+ '$spam' => '0',
+ '$nouveau' => '0',
+ '$wall' => '1',
+ '$fh' => '0',
+ '$page' => ((\App::$pager['page'] != 1) ? \App::$pager['page'] : 1),
+ '$search' => '',
+ '$order' => '',
+ '$list' => ((x($_REQUEST,'list')) ? intval($_REQUEST['list']) : 0),
+ '$file' => '',
+ '$cats' => (($category) ? $category : ''),
+ '$tags' => (($hashtags) ? $hashtags : ''),
+ '$mid' => $mid,
+ '$verb' => '',
+ '$dend' => $datequery,
+ '$dbegin' => $datequery2
+ ));
- /**
- * in "list mode", only mark the parent item and any like activities as "seen".
- * We won't distinguish between comment likes and post likes. The important thing
- * is that the number of unseen comments will be accurate. The SQL to separate the
- * comment likes could also get somewhat hairy.
- */
- if($parents_str) {
- $update_unseen = " AND ( id IN ( " . dbesc($parents_str) . " )";
- $update_unseen .= " OR ( parent IN ( " . dbesc($parents_str) . " ) AND verb in ( '" . dbesc(ACTIVITY_LIKE) . "','" . dbesc(ACTIVITY_DISLIKE) . "' ))) ";
- }
- }
- else {
- if($parents_str) {
- $update_unseen = " AND parent IN ( " . dbesc($parents_str) . " )";
}
- }
- if($is_owner && $update_unseen) {
- $r = q("UPDATE item SET item_unseen = 0 where item_unseen = 1 and item_wall = 1 AND uid = %d $update_unseen",
- intval(local_channel())
- );
- }
+ $update_unseen = '';
+ if($page_mode === 'list') {
- if($checkjs->disabled()) {
- $o .= conversation($a,$items,'channel',$update,'traditional');
- } else {
- $o .= conversation($a,$items,'channel',$update,$page_mode);
- }
+ /**
+ * in "list mode", only mark the parent item and any like activities as "seen".
+ * We won't distinguish between comment likes and post likes. The important thing
+ * is that the number of unseen comments will be accurate. The SQL to separate the
+ * comment likes could also get somewhat hairy.
+ */
- if((! $update) || ($checkjs->disabled())) {
- $o .= alt_pager($a,count($items));
- if ($mid && $items[0]['title'])
- \App::$page['title'] = $items[0]['title'] . " - " . \App::$page['title'];
- }
+ if($parents_str) {
+ $update_unseen = " AND ( id IN ( " . dbesc($parents_str) . " )";
+ $update_unseen .= " OR ( parent IN ( " . dbesc($parents_str) . " ) AND verb in ( '" . dbesc(ACTIVITY_LIKE) . "','" . dbesc(ACTIVITY_DISLIKE) . "' ))) ";
+ }
+ }
+ else {
+ if($parents_str) {
+ $update_unseen = " AND parent IN ( " . dbesc($parents_str) . " )";
+ }
+ }
+
+ if($is_owner && $update_unseen) {
+ $r = q("UPDATE item SET item_unseen = 0 where item_unseen = 1 and item_wall = 1 AND uid = %d $update_unseen",
+ intval(local_channel())
+ );
+ }
- if($mid)
- $o .= '<div id="content-complete"></div>';
- return $o;
-}
+ if($checkjs->disabled()) {
+ $o .= conversation($a,$items,'channel',$update,'traditional');
+ }
+ else {
+ $o .= conversation($a,$items,'channel',$update,$page_mode);
+ }
+ if((! $update) || ($checkjs->disabled())) {
+ $o .= alt_pager($a,count($items));
+ if ($mid && $items[0]['title'])
+ \App::$page['title'] = $items[0]['title'] . " - " . \App::$page['title'];
+ }
+ if($mid)
+ $o .= '<div id="content-complete"></div>';
+
+ return $o;
+ }
} \ No newline at end of file
diff --git a/Zotlabs/Module/Chanview.php b/Zotlabs/Module/Chanview.php
index f70444816..c6dd07eb7 100644
--- a/Zotlabs/Module/Chanview.php
+++ b/Zotlabs/Module/Chanview.php
@@ -1,10 +1,8 @@
<?php
namespace Zotlabs\Module;
-require_once('include/Contact.php');
require_once('include/zot.php');
-
class Chanview extends \Zotlabs\Web\Controller {
function get() {
@@ -62,18 +60,15 @@ class Chanview extends \Zotlabs\Web\Controller {
}
if($_REQUEST['address']) {
- $ret = zot_finger($_REQUEST['address'],null);
- if($ret['success']) {
- $j = json_decode($ret['body'],true);
- if($j)
- import_xchan($j);
+ $j = \Zotlabs\Zot\Finger::run($_REQUEST['address'],null);
+ if($j['success']) {
+ import_xchan($j);
$r = q("select * from xchan where xchan_addr = '%s' limit 1",
dbesc($_REQUEST['address'])
);
if($r)
\App::$poi = $r[0];
}
-
}
}
diff --git a/Zotlabs/Module/Chat.php b/Zotlabs/Module/Chat.php
index 9508ed3de..026e8369a 100644
--- a/Zotlabs/Module/Chat.php
+++ b/Zotlabs/Module/Chat.php
@@ -1,9 +1,11 @@
-<?php
-namespace Zotlabs\Module; /** @file */
+<?php /** @file */
+
+namespace Zotlabs\Module;
+
-require_once('include/chat.php');
require_once('include/bookmarks.php');
+use \Zotlabs\Lib as Zlib;
class Chat extends \Zotlabs\Web\Controller {
@@ -41,7 +43,7 @@ class Chat extends \Zotlabs\Web\Controller {
}
- function post() {
+ function post() {
if($_POST['room_name'])
$room = strip_tags(trim($_POST['room_name']));
@@ -54,7 +56,7 @@ class Chat extends \Zotlabs\Web\Controller {
if($_POST['action'] === 'drop') {
logger('delete chatroom');
- chatroom_destroy($channel,array('cr_name' => $room));
+ Zlib\Chatroom::destroy($channel,array('cr_name' => $room));
goaway(z_root() . '/chat/' . $channel['channel_address']);
}
@@ -67,7 +69,7 @@ class Chat extends \Zotlabs\Web\Controller {
if(intval($arr['expire']) < 0)
$arr['expire'] = 0;
- chatroom_create($channel,$arr);
+ Zlib\Chatroom::create($channel,$arr);
$x = q("select * from chatroom where cr_name = '%s' and cr_uid = %d limit 1",
dbesc($room),
@@ -87,7 +89,7 @@ class Chat extends \Zotlabs\Web\Controller {
}
- function get() {
+ function get() {
if(local_channel())
$channel = \App::get_channel();
@@ -105,7 +107,7 @@ class Chat extends \Zotlabs\Web\Controller {
}
if((argc() > 3) && intval(argv(2)) && (argv(3) === 'leave')) {
- chatroom_leave($observer,argv(2),$_SERVER['REMOTE_ADDR']);
+ Zlib\Chatroom::leave($observer,argv(2),$_SERVER['REMOTE_ADDR']);
goaway(z_root() . '/channel/' . argv(1));
}
@@ -158,7 +160,7 @@ class Chat extends \Zotlabs\Web\Controller {
$room_id = intval(argv(2));
$bookmark_link = get_bookmark_link($ob);
- $x = chatroom_enter($observer,$room_id,'online',$_SERVER['REMOTE_ADDR']);
+ $x = Zlib\Chatroom::enter($observer,$room_id,'online',$_SERVER['REMOTE_ADDR']);
if(! $x)
return;
$x = q("select * from chatroom where cr_id = %d and cr_uid = %d $sql_extra limit 1",
@@ -238,10 +240,10 @@ class Chat extends \Zotlabs\Web\Controller {
));
}
- $rooms = chatroom_list(\App::$profile['profile_uid']);
+ $rooms = Zlib\Chatroom::roomlist(\App::$profile['profile_uid']);
$o .= replace_macros(get_markup_template('chatrooms.tpl'), array(
- '$header' => sprintf( t('%1$s\'s Chatrooms'), \App::$profile['name']),
+ '$header' => sprintf( t('%1$s\'s Chatrooms'), \App::$profile['fullname']),
'$name' => t('Name'),
'$baseurl' => z_root(),
'$nickname' => \App::$profile['channel_address'],
diff --git a/Zotlabs/Module/Chatsvc.php b/Zotlabs/Module/Chatsvc.php
index a9bc97301..6a28a7c4d 100644
--- a/Zotlabs/Module/Chatsvc.php
+++ b/Zotlabs/Module/Chatsvc.php
@@ -1,14 +1,16 @@
-<?php
-namespace Zotlabs\Module; /** @file */
+<?php /** @file */
+
+namespace Zotlabs\Module;
require_once('include/security.php');
+use \Zotlabs\Lib as Zlib;
class Chatsvc extends \Zotlabs\Web\Controller {
function init() {
- //logger('chatsvc');
+ //logger('chatsvc');
$ret = array('success' => false);
@@ -27,7 +29,7 @@ class Chatsvc extends \Zotlabs\Web\Controller {
}
- function post() {
+ function post() {
$ret = array('success' => false);
@@ -65,7 +67,7 @@ class Chatsvc extends \Zotlabs\Web\Controller {
json_return_and_die($ret);
}
- function get() {
+ function get() {
$status = strip_tags($_REQUEST['status']);
$room_id = intval(\App::$data['chat']['room_id']);
diff --git a/Zotlabs/Module/Cloud.php b/Zotlabs/Module/Cloud.php
index f3767e3f0..b691475ce 100644
--- a/Zotlabs/Module/Cloud.php
+++ b/Zotlabs/Module/Cloud.php
@@ -100,9 +100,12 @@ class Cloud extends \Zotlabs\Web\Controller {
// require_once('\Zotlabs\Storage/QuotaPlugin.php');
// $server->addPlugin(new \Zotlabs\Storage\\QuotaPlugin($auth));
+ ob_start();
// All we need to do now, is to fire up the server
$server->exec();
-
+
+ ob_end_flush();
+
killme();
}
diff --git a/Zotlabs/Module/Connect.php b/Zotlabs/Module/Connect.php
index 6ef3577d7..f68e0baac 100644
--- a/Zotlabs/Module/Connect.php
+++ b/Zotlabs/Module/Connect.php
@@ -2,7 +2,7 @@
namespace Zotlabs\Module; /** @file */
-require_once('include/Contact.php');
+
require_once('include/contact_widgets.php');
require_once('include/items.php');
@@ -47,7 +47,8 @@ class Connect extends \Zotlabs\Web\Controller {
intval(PAGE_PREMIUM),
intval(local_channel())
);
- proc_run('php','include/notifier.php','refresh_all',\App::$data['channel']['channel_id']);
+
+ \Zotlabs\Daemon\Master::Summon(array('Notifier','refresh_all',\App::$data['channel']['channel_id']));
}
set_pconfig(\App::$data['channel']['channel_id'],'system','selltext',$text);
// reload the page completely to get fresh data
diff --git a/Zotlabs/Module/Connections.php b/Zotlabs/Module/Connections.php
index 564f4e527..a412d16ae 100644
--- a/Zotlabs/Module/Connections.php
+++ b/Zotlabs/Module/Connections.php
@@ -1,9 +1,9 @@
<?php
namespace Zotlabs\Module;
-require_once('include/Contact.php');
+
require_once('include/socgraph.php');
-require_once('include/contact_selectors.php');
+require_once('include/selectors.php');
require_once('include/group.php');
require_once('include/contact_widgets.php');
require_once('include/zot.php');
diff --git a/Zotlabs/Module/Connedit.php b/Zotlabs/Module/Connedit.php
index a1268510d..33deac4c8 100644
--- a/Zotlabs/Module/Connedit.php
+++ b/Zotlabs/Module/Connedit.php
@@ -7,9 +7,9 @@ namespace Zotlabs\Module;
*
*/
-require_once('include/Contact.php');
+
require_once('include/socgraph.php');
-require_once('include/contact_selectors.php');
+require_once('include/selectors.php');
require_once('include/group.php');
require_once('include/contact_widgets.php');
require_once('include/zot.php');
@@ -176,7 +176,7 @@ class Connedit extends \Zotlabs\Web\Controller {
$record = $z[0]['xlink_id'];
}
if($record) {
- proc_run('php','include/ratenotif.php','rating',$record);
+ \Zotlabs\Daemon\Master::Summon(array('Ratenotif','rating',$record));
}
}
@@ -230,7 +230,7 @@ class Connedit extends \Zotlabs\Web\Controller {
if(\App::$poi && \App::$poi['abook_my_perms'] != $abook_my_perms
&& (! intval(\App::$poi['abook_self']))) {
- proc_run('php', 'include/notifier.php', (($new_friend) ? 'permission_create' : 'permission_update'), $contact_id);
+ \Zotlabs\Daemon\Master::Summon(array('Notifier', (($new_friend) ? 'permission_create' : 'permission_update'), $contact_id));
}
if($new_friend) {
@@ -270,7 +270,7 @@ class Connedit extends \Zotlabs\Web\Controller {
array('rel' => 'photo', 'type' => \App::$poi['xchan_photo_mimetype'], 'href' => \App::$poi['xchan_photo_l'])
),
);
- $xarr['object'] = json_encode($obj);
+ $xarr['obj'] = json_encode($obj);
$xarr['obj_type'] = ACTIVITY_OBJ_PERSON;
$xarr['body'] = '[zrl=' . $channel['xchan_url'] . ']' . $channel['xchan_name'] . '[/zrl]' . ' ' . t('is now connected to') . ' ' . '[zrl=' . \App::$poi['xchan_url'] . ']' . \App::$poi['xchan_name'] . '[/zrl]';
@@ -283,7 +283,7 @@ class Connedit extends \Zotlabs\Web\Controller {
// pull in a bit of content if there is any to pull in
- proc_run('php','include/onepoll.php',$contact_id);
+ \Zotlabs\Daemon\Master::Summon(array('Onepoll',$contact_id));
}
@@ -414,7 +414,7 @@ class Connedit extends \Zotlabs\Web\Controller {
if($cmd === 'update') {
// pull feed and consume it, which should subscribe to the hub.
- proc_run('php',"include/poller.php","$contact_id");
+ \Zotlabs\Daemon\Master::Summon(array('Poller',$contact_id));
goaway(z_root() . '/connedit/' . $contact_id);
}
@@ -427,7 +427,7 @@ class Connedit extends \Zotlabs\Web\Controller {
else {
// if you are on a different network we'll force a refresh of the connection basic info
- proc_run('php','include/notifier.php','permission_update',$contact_id);
+ Zotlabs\Daemon\Master::Summon(array('Notifier','permission_update',$contact_id));
}
goaway(z_root() . '/connedit/' . $contact_id);
}
@@ -485,7 +485,6 @@ class Connedit extends \Zotlabs\Web\Controller {
if($cmd === 'drop') {
- require_once('include/Contact.php');
// FIXME
// We need to send either a purge or a refresh packet to the other side (the channel being unfriended).
@@ -583,8 +582,6 @@ class Connedit extends \Zotlabs\Web\Controller {
if(intval($contact['abook_self']))
$self = true;
- require_once('include/contact_selectors.php');
-
$tpl = get_markup_template("abook_edit.tpl");
if(feature_enabled(local_channel(),'affinity')) {
diff --git a/Zotlabs/Module/Contactgroup.php b/Zotlabs/Module/Contactgroup.php
index 497442ff4..bbe56b4ad 100644
--- a/Zotlabs/Module/Contactgroup.php
+++ b/Zotlabs/Module/Contactgroup.php
@@ -41,10 +41,10 @@ class Contactgroup extends \Zotlabs\Web\Controller {
if($change) {
if(in_array($change,$preselected)) {
- group_rmv_member(local_channel(),$group['name'],$change);
+ group_rmv_member(local_channel(),$group['gname'],$change);
}
else {
- group_add_member(local_channel(),$group['name'],$change);
+ group_add_member(local_channel(),$group['gname'],$change);
}
}
}
diff --git a/Zotlabs/Module/Cover_photo.php b/Zotlabs/Module/Cover_photo.php
index be27a99ef..a72c3389f 100644
--- a/Zotlabs/Module/Cover_photo.php
+++ b/Zotlabs/Module/Cover_photo.php
@@ -8,7 +8,7 @@ namespace Zotlabs\Module;
*/
require_once('include/photo/photo_driver.php');
-require_once('include/identity.php');
+require_once('include/channel.php');
@@ -80,7 +80,7 @@ class Cover_photo extends \Zotlabs\Web\Controller {
$profile = $r[0];
}
- $r = q("SELECT * FROM photo WHERE resource_id = '%s' AND uid = %d AND scale = 0 LIMIT 1",
+ $r = q("SELECT * FROM photo WHERE resource_id = '%s' AND uid = %d AND imgscale = 0 LIMIT 1",
dbesc($image_id),
intval(local_channel())
);
@@ -88,9 +88,9 @@ class Cover_photo extends \Zotlabs\Web\Controller {
if($r) {
$base_image = $r[0];
- $base_image['data'] = (($r[0]['os_storage']) ? @file_get_contents($base_image['data']) : dbunescbin($base_image['data']));
+ $base_image['content'] = (($r[0]['os_storage']) ? @file_get_contents($base_image['content']) : dbunescbin($base_image['content']));
- $im = photo_factory($base_image['data'], $base_image['type']);
+ $im = photo_factory($base_image['content'], $base_image['mimetype']);
if($im->is_valid()) {
// We are scaling and cropping the relative pixel locations to the original photo instead of the
@@ -99,7 +99,7 @@ class Cover_photo extends \Zotlabs\Web\Controller {
// First load the scaled photo to check its size. (Should probably pass this in the post form and save
// a query.)
- $g = q("select width, height from photo where resource_id = '%s' and uid = %d and scale = 3",
+ $g = q("select width, height from photo where resource_id = '%s' and uid = %d and imgscale = 3",
dbesc($image_id),
intval(local_channel())
);
@@ -133,26 +133,26 @@ class Cover_photo extends \Zotlabs\Web\Controller {
$p = array('aid' => $aid, 'uid' => local_channel(), 'resource_id' => $base_image['resource_id'],
'filename' => $base_image['filename'], 'album' => t('Cover Photos'));
- $p['scale'] = 7;
+ $p['imgscale'] = 7;
$p['photo_usage'] = PHOTO_COVER;
$r1 = $im->save($p);
$im->doScaleImage(850,310);
- $p['scale'] = 8;
+ $p['imgscale'] = 8;
$r2 = $im->save($p);
$im->doScaleImage(425,160);
- $p['scale'] = 9;
+ $p['imgscale'] = 9;
$r3 = $im->save($p);
if($r1 === false || $r2 === false || $r3 === false) {
// if one failed, delete them all so we can start over.
notice( t('Image resize failed.') . EOL );
- $x = q("delete from photo where resource_id = '%s' and uid = %d and scale >= 7 ",
+ $x = q("delete from photo where resource_id = '%s' and uid = %d and imgscale >= 7 ",
dbesc($base_image['resource_id']),
local_channel()
);
@@ -183,7 +183,7 @@ class Cover_photo extends \Zotlabs\Web\Controller {
logger('attach_store: ' . print_r($res,true));
if($res && intval($res['data']['is_photo'])) {
- $i = q("select * from photo where resource_id = '%s' and uid = %d and scale = 0",
+ $i = q("select * from photo where resource_id = '%s' and uid = %d and imgscale = 0",
dbesc($hash),
intval(local_channel())
);
@@ -195,10 +195,10 @@ class Cover_photo extends \Zotlabs\Web\Controller {
$os_storage = false;
foreach($i as $ii) {
- $smallest = intval($ii['scale']);
+ $smallest = intval($ii['imgscale']);
$os_storage = intval($ii['os_storage']);
- $imagedata = $ii['data'];
- $filetype = $ii['type'];
+ $imagedata = $ii['content'];
+ $filetype = $ii['mimetype'];
}
}
@@ -224,10 +224,10 @@ class Cover_photo extends \Zotlabs\Web\Controller {
$arr['obj_type'] = ACTIVITY_OBJ_PHOTO;
$arr['verb'] = ACTIVITY_UPDATE;
- $arr['object'] = json_encode(array(
+ $arr['obj'] = json_encode(array(
'type' => $arr['obj_type'],
'id' => z_root() . '/photo/' . $photo['resource_id'] . '-7',
- 'link' => array('rel' => 'photo', 'type' => $photo['type'], 'href' => z_root() . '/photo/' . $photo['resource_id'] . '-7')
+ 'link' => array('rel' => 'photo', 'type' => $photo['mimetype'], 'href' => z_root() . '/photo/' . $photo['resource_id'] . '-7')
));
if($profile && stripos($profile['gender'],t('female')) !== false)
@@ -295,7 +295,7 @@ class Cover_photo extends \Zotlabs\Web\Controller {
$resource_id = argv(2);
- $r = q("SELECT id, album, scale FROM photo WHERE uid = %d AND resource_id = '%s' ORDER BY scale ASC",
+ $r = q("SELECT id, album, imgscale FROM photo WHERE uid = %d AND resource_id = '%s' ORDER BY imgscale ASC",
intval(local_channel()),
dbesc($resource_id)
);
@@ -305,11 +305,11 @@ class Cover_photo extends \Zotlabs\Web\Controller {
}
$havescale = false;
foreach($r as $rr) {
- if($rr['scale'] == 7)
+ if($rr['imgscale'] == 7)
$havescale = true;
}
- $r = q("SELECT `data`, `type`, resource_id, os_storage FROM photo WHERE id = %d and uid = %d limit 1",
+ $r = q("SELECT `content`, `mimetype`, resource_id, os_storage FROM photo WHERE id = %d and uid = %d limit 1",
intval($r[0]['id']),
intval(local_channel())
@@ -320,15 +320,15 @@ class Cover_photo extends \Zotlabs\Web\Controller {
}
if(intval($r[0]['os_storage']))
- $data = @file_get_contents($r[0]['data']);
+ $data = @file_get_contents($r[0]['content']);
else
- $data = dbunescbin($r[0]['data']);
+ $data = dbunescbin($r[0]['content']);
- $ph = photo_factory($data, $r[0]['type']);
+ $ph = photo_factory($data, $r[0]['mimetype']);
$smallest = 0;
if($ph->is_valid()) {
// go ahead as if we have just uploaded a new photo to crop
- $i = q("select resource_id, scale from photo where resource_id = '%s' and uid = %d and scale = 0",
+ $i = q("select resource_id, imgscale from photo where resource_id = '%s' and uid = %d and imgscale = 0",
dbesc($r[0]['resource_id']),
intval(local_channel())
);
@@ -336,7 +336,7 @@ class Cover_photo extends \Zotlabs\Web\Controller {
if($i) {
$hash = $i[0]['resource_id'];
foreach($i as $ii) {
- $smallest = intval($ii['scale']);
+ $smallest = intval($ii['imgscale']);
}
}
}
diff --git a/Zotlabs/Module/Dav.php b/Zotlabs/Module/Dav.php
index 549c992cc..2fddabe19 100644
--- a/Zotlabs/Module/Dav.php
+++ b/Zotlabs/Module/Dav.php
@@ -64,6 +64,7 @@ class Dav extends \Zotlabs\Web\Controller {
$auth = new \Zotlabs\Storage\BasicAuth();
+ $auth->setRealm(ucfirst(\Zotlabs\Lib\System::get_platform_name()) . 'WebDAV');
// $authBackend = new \Sabre\DAV\Auth\Backend\BasicCallBack(function($userName,$password) {
// if(account_verify_password($userName,$password))
diff --git a/Zotlabs/Module/Directory.php b/Zotlabs/Module/Directory.php
index b8bac53bb..560038ffc 100644
--- a/Zotlabs/Module/Directory.php
+++ b/Zotlabs/Module/Directory.php
@@ -57,9 +57,9 @@ class Directory extends \Zotlabs\Web\Controller {
}
}
- function get() {
+ function get() {
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
notice( t('Public access denied.') . EOL);
return;
}
diff --git a/Zotlabs/Module/Display.php b/Zotlabs/Module/Display.php
index 2a5a04a2a..c1a0d84bc 100644
--- a/Zotlabs/Module/Display.php
+++ b/Zotlabs/Module/Display.php
@@ -7,17 +7,13 @@ class Display extends \Zotlabs\Web\Controller {
function get($update = 0, $load = false) {
- // logger("mod-display: update = $update load = $load");
-
-
$checkjs = new \Zotlabs\Web\CheckJS(1);
-
if($load)
$_SESSION['loadtime'] = datetime_convert();
- if(intval(get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
notice( t('Public access denied.') . EOL);
return;
}
@@ -185,7 +181,7 @@ class Display extends \Zotlabs\Web\Controller {
if($load || ($checkjs->disabled())) {
$r = null;
- require_once('include/identity.php');
+ require_once('include/channel.php');
$sys = get_sys_channel();
$sysid = $sys['channel_id'];
@@ -233,7 +229,7 @@ class Display extends \Zotlabs\Web\Controller {
elseif($update && !$load) {
$r = null;
- require_once('include/identity.php');
+ require_once('include/channel.php');
$sys = get_sys_channel();
$sysid = $sys['channel_id'];
diff --git a/Zotlabs/Module/Editblock.php b/Zotlabs/Module/Editblock.php
index a79962033..fb86557f2 100644
--- a/Zotlabs/Module/Editblock.php
+++ b/Zotlabs/Module/Editblock.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/acl_selectors.php');
require_once('include/conversation.php');
diff --git a/Zotlabs/Module/Editlayout.php b/Zotlabs/Module/Editlayout.php
index c5b50235a..5028882d2 100644
--- a/Zotlabs/Module/Editlayout.php
+++ b/Zotlabs/Module/Editlayout.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/acl_selectors.php');
require_once('include/conversation.php');
diff --git a/Zotlabs/Module/Editpost.php b/Zotlabs/Module/Editpost.php
index 43edf2c00..da859de3e 100644
--- a/Zotlabs/Module/Editpost.php
+++ b/Zotlabs/Module/Editpost.php
@@ -87,11 +87,11 @@ class Editpost extends \Zotlabs\Web\Controller {
'hide_location' => true,
'mimetype' => $itm[0]['mimetype'],
'ptyp' => $itm[0]['obj_type'],
- 'body' => undo_post_tagging($itm[0]['body']),
+ 'body' => htmlspecialchars_decode(undo_post_tagging($itm[0]['body']),ENT_COMPAT),
'post_id' => $post_id,
'defloc' => $channel['channel_location'],
'visitor' => true,
- 'title' => htmlspecialchars($itm[0]['title'],ENT_COMPAT,'UTF-8'),
+ 'title' => htmlspecialchars_decode($itm[0]['title'],ENT_COMPAT),
'category' => $category,
'showacl' => false,
'profile_uid' => $owner_uid,
diff --git a/Zotlabs/Module/Editwebpage.php b/Zotlabs/Module/Editwebpage.php
index c2346c53b..1b5c320a0 100644
--- a/Zotlabs/Module/Editwebpage.php
+++ b/Zotlabs/Module/Editwebpage.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/acl_selectors.php');
require_once('include/conversation.php');
require_once('include/PermissionDescription.php');
diff --git a/Zotlabs/Module/Events.php b/Zotlabs/Module/Events.php
index 9519ca11b..3f3f9fb4c 100644
--- a/Zotlabs/Module/Events.php
+++ b/Zotlabs/Module/Events.php
@@ -171,7 +171,7 @@ class Events extends \Zotlabs\Web\Controller {
foreach($cats as $cat) {
$post_tags[] = array(
'uid' => $profile_uid,
- 'type' => TERM_CATEGORY,
+ 'ttype' => TERM_CATEGORY,
'otype' => TERM_OBJ_POST,
'term' => trim($cat),
'url' => $channel['xchan_url'] . '?f=&cat=' . urlencode(trim($cat))
@@ -180,12 +180,12 @@ class Events extends \Zotlabs\Web\Controller {
}
$datarray = array();
- $datarray['start'] = $start;
- $datarray['finish'] = $finish;
+ $datarray['dtstart'] = $start;
+ $datarray['dtend'] = $finish;
$datarray['summary'] = $summary;
$datarray['description'] = $desc;
$datarray['location'] = $location;
- $datarray['type'] = $type;
+ $datarray['etype'] = $type;
$datarray['adjust'] = $adjust;
$datarray['nofinish'] = $nofinish;
$datarray['uid'] = local_channel();
@@ -232,7 +232,7 @@ class Events extends \Zotlabs\Web\Controller {
}
if($share)
- proc_run('php',"include/notifier.php","event","$item_id");
+ \Zotlabs\Daemon\Master::Summon(array('Notifier','event',$item_id));
}
@@ -269,14 +269,14 @@ class Events extends \Zotlabs\Web\Controller {
nav_set_selected('all_events');
if((argc() > 2) && (argv(1) === 'ignore') && intval(argv(2))) {
- $r = q("update event set ignore = 1 where id = %d and uid = %d",
+ $r = q("update event set dismissed = 1 where id = %d and uid = %d",
intval(argv(2)),
intval(local_channel())
);
}
if((argc() > 2) && (argv(1) === 'unignore') && intval(argv(2))) {
- $r = q("update event set ignore = 0 where id = %d and uid = %d",
+ $r = q("update event set dismissed = 0 where id = %d and uid = %d",
intval(argv(2)),
intval(local_channel())
);
@@ -301,7 +301,7 @@ class Events extends \Zotlabs\Web\Controller {
$mode = 'view';
$y = 0;
$m = 0;
- $ignored = ((x($_REQUEST,'ignored')) ? " and ignored = " . intval($_REQUEST['ignored']) . " " : '');
+ $ignored = ((x($_REQUEST,'ignored')) ? " and dismissed = " . intval($_REQUEST['ignored']) . " " : '');
// logger('args: ' . print_r(\App::$argv,true));
@@ -358,9 +358,9 @@ class Events extends \Zotlabs\Web\Controller {
if(x($_REQUEST,'summary')) $orig_event['summary'] = $_REQUEST['summary'];
if(x($_REQUEST,'description')) $orig_event['description'] = $_REQUEST['description'];
if(x($_REQUEST,'location')) $orig_event['location'] = $_REQUEST['location'];
- if(x($_REQUEST,'start')) $orig_event['start'] = $_REQUEST['start'];
- if(x($_REQUEST,'finish')) $orig_event['finish'] = $_REQUEST['finish'];
- if(x($_REQUEST,'type')) $orig_event['type'] = $_REQUEST['type'];
+ if(x($_REQUEST,'start')) $orig_event['dtstart'] = $_REQUEST['start'];
+ if(x($_REQUEST,'finish')) $orig_event['dtend'] = $_REQUEST['finish'];
+ if(x($_REQUEST,'type')) $orig_event['etype'] = $_REQUEST['type'];
*/
$n_checked = ((x($orig_event) && $orig_event['nofinish']) ? ' checked="checked" ' : '');
@@ -380,9 +380,9 @@ class Events extends \Zotlabs\Web\Controller {
if($orig_event['event_xchan'])
$sh_checked .= ' disabled="disabled" ';
- $sdt = ((x($orig_event)) ? $orig_event['start'] : 'now');
+ $sdt = ((x($orig_event)) ? $orig_event['dtstart'] : 'now');
- $fdt = ((x($orig_event)) ? $orig_event['finish'] : '+1 hour');
+ $fdt = ((x($orig_event)) ? $orig_event['dtend'] : '+1 hour');
$tz = date_default_timezone_get();
if(x($orig_event))
@@ -406,7 +406,7 @@ class Events extends \Zotlabs\Web\Controller {
$ftext = datetime_convert('UTC',$tz,$fdt);
$ftext = substr($ftext,0,14) . "00:00";
- $type = ((x($orig_event)) ? $orig_event['type'] : 'event');
+ $type = ((x($orig_event)) ? $orig_event['etype'] : 'event');
$f = get_config('system','event_input_format');
if(! $f)
@@ -536,8 +536,8 @@ class Events extends \Zotlabs\Web\Controller {
);
} elseif($export) {
$r = q("SELECT * from event where uid = %d
- AND (( `adjust` = 0 AND ( `finish` >= '%s' or nofinish = 1 ) AND `start` <= '%s' )
- OR ( `adjust` = 1 AND ( `finish` >= '%s' or nofinish = 1 ) AND `start` <= '%s' )) ",
+ AND (( `adjust` = 0 AND ( `dtend` >= '%s' or nofinish = 1 ) AND `dtstart` <= '%s' )
+ OR ( `adjust` = 1 AND ( `dtend` >= '%s' or nofinish = 1 ) AND `dtstart` <= '%s' )) ",
intval(local_channel()),
dbesc($start),
dbesc($finish),
@@ -554,8 +554,8 @@ class Events extends \Zotlabs\Web\Controller {
$r = q("SELECT event.*, item.plink, item.item_flags, item.author_xchan, item.owner_xchan
from event left join item on event_hash = resource_id
where resource_type = 'event' and event.uid = %d $ignored
- AND (( adjust = 0 AND ( finish >= '%s' or nofinish = 1 ) AND start <= '%s' )
- OR ( adjust = 1 AND ( finish >= '%s' or nofinish = 1 ) AND start <= '%s' )) ",
+ AND (( adjust = 0 AND ( dtend >= '%s' or nofinish = 1 ) AND dtstart <= '%s' )
+ OR ( adjust = 1 AND ( dtend >= '%s' or nofinish = 1 ) AND dtstart <= '%s' )) ",
intval(local_channel()),
dbesc($start),
dbesc($finish),
@@ -576,7 +576,7 @@ class Events extends \Zotlabs\Web\Controller {
if($r) {
foreach($r as $rr) {
- $j = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], 'j') : datetime_convert('UTC','UTC',$rr['start'],'j'));
+ $j = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['dtstart'], 'j') : datetime_convert('UTC','UTC',$rr['dtstart'],'j'));
if(! x($links,$j))
$links[$j] = z_root() . '/' . \App::$cmd . '#link-' . $j;
}
@@ -591,15 +591,15 @@ class Events extends \Zotlabs\Web\Controller {
foreach($r as $rr) {
- $j = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], 'j') : datetime_convert('UTC','UTC',$rr['start'],'j'));
- $d = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], $fmt) : datetime_convert('UTC','UTC',$rr['start'],$fmt));
+ $j = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['dtstart'], 'j') : datetime_convert('UTC','UTC',$rr['dtstart'],'j'));
+ $d = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['dtstart'], $fmt) : datetime_convert('UTC','UTC',$rr['dtstart'],$fmt));
$d = day_translate($d);
- $start = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], 'c') : datetime_convert('UTC','UTC',$rr['start'],'c'));
+ $start = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['dtstart'], 'c') : datetime_convert('UTC','UTC',$rr['dtstart'],'c'));
if ($rr['nofinish']){
$end = null;
} else {
- $end = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['finish'], 'c') : datetime_convert('UTC','UTC',$rr['finish'],'c'));
+ $end = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['dtend'], 'c') : datetime_convert('UTC','UTC',$rr['dtend'],'c'));
}
diff --git a/Zotlabs/Module/Fbrowser.php b/Zotlabs/Module/Fbrowser.php
index eef3cb67d..c534e8f72 100644
--- a/Zotlabs/Module/Fbrowser.php
+++ b/Zotlabs/Module/Fbrowser.php
@@ -45,10 +45,10 @@ class Fbrowser extends \Zotlabs\Web\Controller {
$album = hex2bin(\App::$argv[2]);
$sql_extra = sprintf("AND `album` = '%s' ",dbesc($album));
$sql_extra2 = "";
- $path[]=array(z_root()."/fbrowser/image/".\App::$argv[2]."/", $album);
+ $path[]=array(z_root() . "/fbrowser/image/" . \App::$argv[2] . "/", $album);
}
- $r = q("SELECT `resource_id`, `id`, `filename`, type, min(`scale`) AS `hiq`,max(`scale`) AS `loq`, `description`
+ $r = q("SELECT `resource_id`, `id`, `filename`, type, min(`imgscale`) AS `hiq`,max(`imgscale`) AS `loq`, `description`
FROM `photo` WHERE `uid` = %d $sql_extra
GROUP BY `resource_id` $sql_extra2",
intval(local_channel())
diff --git a/Zotlabs/Module/Feed.php b/Zotlabs/Module/Feed.php
index 9d33ba2c3..47871eafb 100644
--- a/Zotlabs/Module/Feed.php
+++ b/Zotlabs/Module/Feed.php
@@ -31,7 +31,7 @@ class Feed extends \Zotlabs\Web\Controller {
$channel = $r[0];
- if((intval(get_config('system','block_public'))) && (! get_account_id()))
+ if(observer_prohibited(true))
killme();
logger('mod_feed: public feed request from ' . $_SERVER['REMOTE_ADDR'] . ' for ' . $channel['channel_address']);
diff --git a/Zotlabs/Module/Filer.php b/Zotlabs/Module/Filer.php
index 607d088db..6a57cdb2a 100644
--- a/Zotlabs/Module/Filer.php
+++ b/Zotlabs/Module/Filer.php
@@ -39,7 +39,7 @@ class Filer extends \Zotlabs\Web\Controller {
}
else {
$filetags = array();
- $r = q("select distinct(term) from term where uid = %d and type = %d order by term asc",
+ $r = q("select distinct(term) from term where uid = %d and ttype = %d order by term asc",
intval(local_channel()),
intval(TERM_FILE)
);
diff --git a/Zotlabs/Module/Filerm.php b/Zotlabs/Module/Filerm.php
index eb9a42c1e..cbf6a118d 100644
--- a/Zotlabs/Module/Filerm.php
+++ b/Zotlabs/Module/Filerm.php
@@ -22,7 +22,7 @@ class Filerm extends \Zotlabs\Web\Controller {
logger('filerm: tag ' . $term . ' item ' . $item_id);
if($item_id && strlen($term)) {
- $r = q("delete from term where uid = %d and type = %d and oid = %d and term = '%s'",
+ $r = q("delete from term where uid = %d and ttype = %d and oid = %d and term = '%s'",
intval(local_channel()),
intval(($category) ? TERM_CATEGORY : TERM_FILE),
intval($item_id),
diff --git a/Zotlabs/Module/Follow.php b/Zotlabs/Module/Follow.php
index 1701328bf..1df382a89 100644
--- a/Zotlabs/Module/Follow.php
+++ b/Zotlabs/Module/Follow.php
@@ -53,14 +53,13 @@ class Follow extends \Zotlabs\Web\Controller {
// If we can view their stream, pull in some posts
if(($result['abook']['abook_their_perms'] & PERMS_R_STREAM) || ($result['abook']['xchan_network'] === 'rss'))
- proc_run('php','include/onepoll.php',$result['abook']['abook_id']);
+ \Zotlabs\Daemon\Master::Summon(array('Onepoll',$result['abook']['abook_id']));
goaway(z_root() . '/connedit/' . $result['abook']['abook_id'] . '?f=&follow=1');
}
- function get() {
-
+ function get() {
if(! local_channel()) {
return login();
}
diff --git a/Zotlabs/Module/Fsuggest.php b/Zotlabs/Module/Fsuggest.php
deleted file mode 100644
index 143fd34e1..000000000
--- a/Zotlabs/Module/Fsuggest.php
+++ /dev/null
@@ -1,117 +0,0 @@
-<?php
-namespace Zotlabs\Module;
-
-
-
-class Fsuggest extends \Zotlabs\Web\Controller {
-
- function post() {
-
- if(! local_channel()) {
- return;
- }
-
- if(\App::$argc != 2)
- return;
-
- $contact_id = intval(\App::$argv[1]);
-
- $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
- intval($contact_id),
- intval(local_channel())
- );
- if(! count($r)) {
- notice( t('Contact not found.') . EOL);
- return;
- }
- $contact = $r[0];
-
- $new_contact = intval($_POST['suggest']);
-
- $hash = random_string();
-
- $note = escape_tags(trim($_POST['note']));
-
- if($new_contact) {
- $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
- intval($new_contact),
- intval(local_channel())
- );
- if(count($r)) {
-
- $x = q("INSERT INTO `fsuggest` ( `uid`,`cid`,`name`,`url`,`request`,`photo`,`note`,`created`)
- VALUES ( %d, %d, '%s','%s','%s','%s','%s','%s')",
- intval(local_channel()),
- intval($contact_id),
- dbesc($r[0]['name']),
- dbesc($r[0]['url']),
- dbesc($r[0]['request']),
- dbesc($r[0]['photo']),
- dbesc($hash),
- dbesc(datetime_convert())
- );
- $r = q("SELECT `id` FROM `fsuggest` WHERE `note` = '%s' AND `uid` = %d LIMIT 1",
- dbesc($hash),
- intval(local_channel())
- );
- if(count($r)) {
- $fsuggest_id = $r[0]['id'];
- q("UPDATE `fsuggest` SET `note` = '%s' WHERE `id` = %d AND `uid` = %d",
- dbesc($note),
- intval($fsuggest_id),
- intval(local_channel())
- );
- proc_run('php', 'include/notifier.php', 'suggest' , $fsuggest_id);
- }
-
- info( t('Friend suggestion sent.') . EOL);
- }
-
- }
-
-
- }
-
-
-
- function get() {
-
- require_once('include/acl_selectors.php');
-
- if(! local_channel()) {
- notice( t('Permission denied.') . EOL);
- return;
- }
-
- if(\App::$argc != 2)
- return;
-
- $contact_id = intval(\App::$argv[1]);
-
- $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
- intval($contact_id),
- intval(local_channel())
- );
- if(! count($r)) {
- notice( t('Contact not found.') . EOL);
- return;
- }
- $contact = $r[0];
-
- $o = '<h3>' . t('Suggest Friends') . '</h3>';
-
- $o .= '<div id="fsuggest-desc" >' . sprintf( t('Suggest a friend for %s'), $contact['name']) . '</div>';
-
- $o .= '<form id="fsuggest-form" action="fsuggest/' . $contact_id . '" method="post" >';
-
- // FIXME contact_selector deprecated, removed
- // $o .= contact_selector('suggest','suggest-select', false,
- // array('size' => 4, 'exclude' => $contact_id, 'networks' => 'DFRN_ONLY', 'single' => true));
-
-
- $o .= '<div id="fsuggest-submit-wrapper"><input id="fsuggest-submit" type="submit" name="submit" value="' . t('Submit') . '" /></div>';
- $o .= '</form>';
-
- return $o;
- }
-}
diff --git a/Zotlabs/Module/Getfile.php b/Zotlabs/Module/Getfile.php
index 6999e77e8..09d761887 100644
--- a/Zotlabs/Module/Getfile.php
+++ b/Zotlabs/Module/Getfile.php
@@ -21,7 +21,6 @@ namespace Zotlabs\Module;
-require_once('include/Contact.php');
require_once('include/attach.php');
diff --git a/Zotlabs/Module/Group.php b/Zotlabs/Module/Group.php
index 144797baf..254ee6ef2 100644
--- a/Zotlabs/Module/Group.php
+++ b/Zotlabs/Module/Group.php
@@ -47,8 +47,8 @@ class Group extends \Zotlabs\Web\Controller {
$groupname = notags(trim($_POST['groupname']));
$public = intval($_POST['public']);
- if((strlen($groupname)) && (($groupname != $group['name']) || ($public != $group['visible']))) {
- $r = q("UPDATE `groups` SET `name` = '%s', visible = %d WHERE `uid` = %d AND `id` = %d",
+ if((strlen($groupname)) && (($groupname != $group['gname']) || ($public != $group['visible']))) {
+ $r = q("UPDATE `groups` SET `gname` = '%s', visible = %d WHERE `uid` = %d AND `id` = %d",
dbesc($groupname),
intval($public),
intval(local_channel()),
@@ -106,7 +106,7 @@ class Group extends \Zotlabs\Web\Controller {
intval(local_channel())
);
if($r)
- $result = group_rmv(local_channel(),$r[0]['name']);
+ $result = group_rmv(local_channel(),$r[0]['gname']);
if($result)
info( t('Privacy group removed.') . EOL);
else
@@ -156,10 +156,10 @@ class Group extends \Zotlabs\Web\Controller {
if($change) {
if(in_array($change,$preselected)) {
- group_rmv_member(local_channel(),$group['name'],$change);
+ group_rmv_member(local_channel(),$group['gname'],$change);
}
else {
- group_add_member(local_channel(),$group['name'],$change);
+ group_add_member(local_channel(),$group['gname'],$change);
}
$members = group_get_members($group['id']);
@@ -181,7 +181,7 @@ class Group extends \Zotlabs\Web\Controller {
$context = $context + array(
'$title' => t('Privacy group editor'),
- '$gname' => array('groupname',t('Privacy group name: '),$group['name'], ''),
+ '$gname' => array('groupname',t('Privacy group name: '),$group['gname'], ''),
'$gid' => $group['id'],
'$drop' => $drop_txt,
'$public' => array('public',t('Members are visible to other channels'), $group['visible'], ''),
@@ -209,7 +209,7 @@ class Group extends \Zotlabs\Web\Controller {
$groupeditor['members'][] = micropro($member,true,'mpgroup', $textmode);
}
else
- group_rmv_member(local_channel(),$group['name'],$member['xchan_hash']);
+ group_rmv_member(local_channel(),$group['gname'],$member['xchan_hash']);
}
$r = q("SELECT abook.*, xchan.* FROM `abook` left join xchan on abook_xchan = xchan_hash WHERE `abook_channel` = %d AND abook_self = 0 and abook_blocked = 0 and abook_pending = 0 and xchan_deleted = 0 order by xchan_name asc",
diff --git a/Zotlabs/Module/Help.php b/Zotlabs/Module/Help.php
index 4842c56c6..cc46c550b 100644
--- a/Zotlabs/Module/Help.php
+++ b/Zotlabs/Module/Help.php
@@ -37,7 +37,7 @@ class Help extends \Zotlabs\Web\Controller {
$path = trim(substr($dirname,4),'/');
$o .= '<li><a href="help/' . (($path) ? $path . '/' : '') . $fname . '" >' . ucwords(str_replace('_',' ',notags($fname))) . '</a><br />' .
- str_replace('$Projectname',\Zotlabs\Project\System::get_platform_name(),substr($rr['text'],0,200)) . '...<br /><br /></li>';
+ str_replace('$Projectname',\Zotlabs\Lib\System::get_platform_name(),substr($rr['text'],0,200)) . '...<br /><br /></li>';
}
$o .= '</ul>';
diff --git a/Zotlabs/Module/Import.php b/Zotlabs/Module/Import.php
index dadbf8ff1..122e27e90 100644
--- a/Zotlabs/Module/Import.php
+++ b/Zotlabs/Module/Import.php
@@ -4,9 +4,9 @@ namespace Zotlabs\Module;
// Import a channel, either by direct file upload or via
// connection to original server.
-require_once('include/Contact.php');
+
require_once('include/zot.php');
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/import.php');
@@ -408,8 +408,12 @@ class Import extends \Zotlabs\Web\Controller {
$saved = array();
foreach($groups as $group) {
$saved[$group['hash']] = array('old' => $group['id']);
+ if(array_key_exists('name',$group)) {
+ $group['gname'] = $group['name'];
+ unset($group['name']);
+ }
unset($group['id']);
- $group['uid'] = $channel['channel_id'];
+ $group['uid'] = $channel['channel_id'];
dbesc_array($group);
$r = dbq("INSERT INTO groups (`"
. implode("`, `", array_keys($group))
@@ -496,11 +500,11 @@ class Import extends \Zotlabs\Web\Controller {
// send out refresh requests
// notify old server that it may no longer be primary.
- proc_run('php','include/notifier.php','location',$channel['channel_id']);
+ \Zotlabs\Daemon\Master::Summon(array('Notifier','location',$channel['channel_id']));
// This will indirectly perform a refresh_all *and* update the directory
- proc_run('php', 'include/directory.php', $channel['channel_id']);
+ \Zotlabs\Daemon\Master::Summon(array('Directory', $channel['channel_id']));
notice( t('Import completed.') . EOL);
diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php
index 93570fdec..2601feb0a 100644
--- a/Zotlabs/Module/Item.php
+++ b/Zotlabs/Module/Item.php
@@ -17,10 +17,10 @@ namespace Zotlabs\Module;
*/
require_once('include/crypto.php');
-require_once('include/enotify.php');
require_once('include/items.php');
require_once('include/attach.php');
+use \Zotlabs\Lib as Zlib;
class Item extends \Zotlabs\Web\Controller {
@@ -56,7 +56,7 @@ class Item extends \Zotlabs\Web\Controller {
$remote_xchan = $remote_observer = false;
$profile_uid = ((x($_REQUEST,'profile_uid')) ? intval($_REQUEST['profile_uid']) : 0);
- require_once('include/identity.php');
+ require_once('include/channel.php');
$sys = get_sys_channel();
if($sys && $profile_uid && ($sys['channel_id'] == $profile_uid) && is_site_admin()) {
$uid = intval($sys['channel_id']);
@@ -581,7 +581,7 @@ class Item extends \Zotlabs\Web\Controller {
if($success['replaced']) {
$post_tags[] = array(
'uid' => $profile_uid,
- 'type' => $success['termtype'],
+ 'ttype' => $success['termtype'],
'otype' => TERM_OBJ_POST,
'term' => $success['term'],
'url' => $success['url']
@@ -666,7 +666,7 @@ class Item extends \Zotlabs\Web\Controller {
foreach($cats as $cat) {
$post_tags[] = array(
'uid' => $profile_uid,
- 'type' => TERM_CATEGORY,
+ 'ttype' => TERM_CATEGORY,
'otype' => TERM_OBJ_POST,
'term' => trim($cat),
'url' => $owner_xchan['xchan_url'] . '?f=&cat=' . urlencode(trim($cat))
@@ -676,7 +676,7 @@ class Item extends \Zotlabs\Web\Controller {
if($orig_post) {
// preserve original tags
- $t = q("select * from term where oid = %d and otype = %d and uid = %d and type in ( %d, %d, %d )",
+ $t = q("select * from term where oid = %d and otype = %d and uid = %d and ttype in ( %d, %d, %d )",
intval($orig_post['id']),
intval(TERM_OBJ_POST),
intval($profile_uid),
@@ -688,7 +688,7 @@ class Item extends \Zotlabs\Web\Controller {
foreach($t as $t1) {
$post_tags[] = array(
'uid' => $profile_uid,
- 'type' => $t1['type'],
+ 'ttype' => $t1['type'],
'otype' => TERM_OBJ_POST,
'term' => $t1['term'],
'url' => $t1['url'],
@@ -901,7 +901,7 @@ class Item extends \Zotlabs\Web\Controller {
}
}
if(! $nopush)
- proc_run('php', "include/notifier.php", 'edit_post', $post_id);
+ \Zotlabs\Daemon\Master::Summon(array('Notifier', 'edit_post', $post_id));
if((x($_REQUEST,'return')) && strlen($return_path)) {
logger('return: ' . $return_path);
@@ -925,7 +925,7 @@ class Item extends \Zotlabs\Web\Controller {
// otherwise it will happen during delivery
if(($datarray['owner_xchan'] != $datarray['author_xchan']) && (intval($parent_item['item_wall']))) {
- notification(array(
+ Zlib\Enotify::submit(array(
'type' => NOTIFY_COMMENT,
'from_xchan' => $datarray['author_xchan'],
'to_xchan' => $datarray['owner_xchan'],
@@ -943,7 +943,7 @@ class Item extends \Zotlabs\Web\Controller {
$parent = $post_id;
if(($datarray['owner_xchan'] != $datarray['author_xchan']) && ($datarray['item_type'] == ITEM_TYPE_POST)) {
- notification(array(
+ Zlib\Enotify::submit(array(
'type' => NOTIFY_WALL,
'from_xchan' => $datarray['author_xchan'],
'to_xchan' => $datarray['owner_xchan'],
@@ -1008,7 +1008,7 @@ class Item extends \Zotlabs\Web\Controller {
call_hooks('post_local_end', $datarray);
if(! $nopush)
- proc_run('php', 'include/notifier.php', $notify_type, $post_id);
+ \Zotlabs\Daemon\Master::Summon(array('Notifier', $notify_type, $post_id));
logger('post_complete');
diff --git a/Zotlabs/Module/Layouts.php b/Zotlabs/Module/Layouts.php
index 8a7207fc2..9b9fc22f3 100644
--- a/Zotlabs/Module/Layouts.php
+++ b/Zotlabs/Module/Layouts.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/conversation.php');
require_once('include/acl_selectors.php');
diff --git a/Zotlabs/Module/Like.php b/Zotlabs/Module/Like.php
index ac8791950..1ca37d646 100644
--- a/Zotlabs/Module/Like.php
+++ b/Zotlabs/Module/Like.php
@@ -346,7 +346,7 @@ class Like extends \Zotlabs\Web\Controller {
// drop_item was not done interactively, so we need to invoke the notifier
// in order to push the changes to connections
- proc_run('php','include/notifier.php','drop',$rr['id']);
+ \Zotlabs\Daemon\Master::Summon(array('Notifier','drop',$rr['id']));
}
@@ -483,7 +483,7 @@ class Like extends \Zotlabs\Web\Controller {
$arr['verb'] = $activity;
$arr['obj_type'] = $objtype;
- $arr['object'] = $object;
+ $arr['obj'] = $object;
if($target) {
$arr['tgt_type'] = $tgttype;
@@ -531,7 +531,7 @@ class Like extends \Zotlabs\Web\Controller {
}
- proc_run('php',"include/notifier.php","like","$post_id");
+ \Zotlabs\Daemon\Master::Summon(array('Notifier','like',$post_id));
if($interactive) {
notice( t('Action completed.') . EOL);
diff --git a/Zotlabs/Module/Linkinfo.php b/Zotlabs/Module/Linkinfo.php
index ef34bb465..e1a3a6abe 100644
--- a/Zotlabs/Module/Linkinfo.php
+++ b/Zotlabs/Module/Linkinfo.php
@@ -115,7 +115,7 @@ class Linkinfo extends \Zotlabs\Web\Controller {
// If this is a Red site, use zrl rather than url so they get zids sent to them by default
- if( x($siteinfo,'generator') && (strpos($siteinfo['generator'], \Zotlabs\Project\System::get_platform_name() . ' ') === 0))
+ if( x($siteinfo,'generator') && (strpos($siteinfo['generator'], \Zotlabs\Lib\System::get_platform_name() . ' ') === 0))
$template = str_replace('url','zrl',$template);
if($siteinfo["title"] == "") {
diff --git a/Zotlabs/Module/Lockview.php b/Zotlabs/Module/Lockview.php
index 0df0dd4da..4776e1c56 100644
--- a/Zotlabs/Module/Lockview.php
+++ b/Zotlabs/Module/Lockview.php
@@ -88,10 +88,10 @@ class Lockview extends \Zotlabs\Web\Controller {
stringify_array_elms($deny_users,true);
if(count($allowed_groups)) {
- $r = q("SELECT name FROM `groups` WHERE hash IN ( " . implode(', ', $allowed_groups) . " )");
+ $r = q("SELECT gname FROM `groups` WHERE hash IN ( " . implode(', ', $allowed_groups) . " )");
if($r)
foreach($r as $rr)
- $l[] = '<li><b>' . $rr['name'] . '</b></li>';
+ $l[] = '<li><b>' . $rr['gname'] . '</b></li>';
}
if(count($allowed_users)) {
$r = q("SELECT xchan_name FROM xchan WHERE xchan_hash IN ( " . implode(', ',$allowed_users) . " )");
@@ -100,10 +100,10 @@ class Lockview extends \Zotlabs\Web\Controller {
$l[] = '<li>' . $rr['xchan_name'] . '</li>';
}
if(count($deny_groups)) {
- $r = q("SELECT name FROM `groups` WHERE hash IN ( " . implode(', ', $deny_groups) . " )");
+ $r = q("SELECT gname FROM `groups` WHERE hash IN ( " . implode(', ', $deny_groups) . " )");
if($r)
foreach($r as $rr)
- $l[] = '<li><b><strike>' . $rr['name'] . '</strike></b></li>';
+ $l[] = '<li><b><strike>' . $rr['gname'] . '</strike></b></li>';
}
if(count($deny_users)) {
$r = q("SELECT xchan_name FROM xchan WHERE xchan_hash IN ( " . implode(', ', $deny_users) . " )");
diff --git a/Zotlabs/Module/Locs.php b/Zotlabs/Module/Locs.php
index 4b5d58df5..4b1e3ffe2 100644
--- a/Zotlabs/Module/Locs.php
+++ b/Zotlabs/Module/Locs.php
@@ -34,7 +34,7 @@ class Locs extends \Zotlabs\Web\Controller {
dbesc($channel['channel_hash'])
);
- proc_run('php','include/notifier.php','location',$channel['channel_id']);
+ \Zotlabs\Daemon\Master::Summon(array('Notifier','location',$channel['channel_id']));
return;
}
}
@@ -72,7 +72,7 @@ class Locs extends \Zotlabs\Web\Controller {
intval($hubloc_id),
dbesc($channel['channel_hash'])
);
- proc_run('php','include/notifier.php','location',$channel['channel_id']);
+ \Zotlabs\Daemon\Master::Summon(array('Notifier','location',$channel['channel_id']));
return;
}
}
@@ -91,7 +91,7 @@ class Locs extends \Zotlabs\Web\Controller {
$channel = \App::get_channel();
if($_REQUEST['sync']) {
- proc_run('php','include/notifier.php','location',$channel['channel_id']);
+ \Zotlabs\Daemon\Master::Summon(array('Notifier','location',$channel['channel_id']));
info( t('Syncing locations') . EOL);
goaway(z_root() . '/locs');
}
diff --git a/Zotlabs/Module/Magic.php b/Zotlabs/Module/Magic.php
index 63db4a317..6798f72a9 100644
--- a/Zotlabs/Module/Magic.php
+++ b/Zotlabs/Module/Magic.php
@@ -47,11 +47,9 @@ class Magic extends \Zotlabs\Web\Controller {
*
*/
- $ret = zot_finger((($addr) ? $addr : '[system]@' . $parsed['host']),null);
- if($ret['success']) {
- $j = json_decode($ret['body'],true);
- if($j)
- import_xchan($j);
+ $j = \Zotlabs\Zot\Finger::run((($addr) ? $addr : '[system]@' . $parsed['host']),null);
+ if($j['success']) {
+ import_xchan($j);
// Now try again
diff --git a/Zotlabs/Module/Mail.php b/Zotlabs/Module/Mail.php
index 35cb3b9bf..aae7585c4 100644
--- a/Zotlabs/Module/Mail.php
+++ b/Zotlabs/Module/Mail.php
@@ -5,7 +5,7 @@ require_once('include/acl_selectors.php');
require_once('include/message.php');
require_once('include/zot.php');
require_once("include/bbcode.php");
-require_once('include/Contact.php');
+
@@ -32,17 +32,16 @@ class Mail extends \Zotlabs\Web\Controller {
if(! $recipient) {
$channel = \App::get_channel();
- $ret = zot_finger($rstr,$channel);
+ $j = \Zotlabs\Zot\Finger::run($rstr,$channel);
- if(! $ret['success']) {
+ if(! $j['success']) {
notice( t('Unable to lookup recipient.') . EOL);
return;
}
- $j = json_decode($ret['body'],true);
logger('message_post: lookup: ' . $url . ' ' . print_r($j,true));
- if(! ($j['success'] && $j['guid'])) {
+ if(! $j['guid']) {
notice( t('Unable to communicate with requested channel.'));
return;
}
@@ -173,7 +172,7 @@ class Mail extends \Zotlabs\Web\Controller {
build_sync_packet(local_channel(),array('mail' => encode_mail($x[0],true)));
}
- proc_run('php','include/notifier.php','mail',intval(argv(3)));
+ \Zotlabs\Daemon\Master::Summon(array('Notifier','mail',intval(argv(3))));
if($r) {
info( t('Message recalled.') . EOL );
@@ -306,11 +305,6 @@ class Mail extends \Zotlabs\Web\Controller {
else
\App::$poi = $messages[0]['to'];
- // require_once('include/Contact.php');
-
- // \App::set_widget('mail_conversant',vcard_from_xchan(\App::$poi,$get_observer_hash,'mail'));
-
-
$tpl = get_markup_template('msg-header.tpl');
\App::$page['htmlhead'] .= replace_macros($tpl, array(
diff --git a/Zotlabs/Module/Manage.php b/Zotlabs/Module/Manage.php
index 5ae79dbb2..4ca044c4a 100644
--- a/Zotlabs/Module/Manage.php
+++ b/Zotlabs/Module/Manage.php
@@ -93,9 +93,9 @@ class Manage extends \Zotlabs\Web\Controller {
$channels[$x]['mail'] = intval($mails[0]['total']);
- $events = q("SELECT type, start, adjust FROM `event`
- WHERE `event`.`uid` = %d AND start < '%s' AND start > '%s' and `ignore` = 0
- ORDER BY `start` ASC ",
+ $events = q("SELECT etype, dtstart, adjust FROM `event`
+ WHERE `event`.`uid` = %d AND dtstart < '%s' AND dtstart > '%s' and `dismissed` = 0
+ ORDER BY `dtstart` ASC ",
intval($channels[$x]['channel_id']),
dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + 7 days')),
dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now - 1 days'))
@@ -108,14 +108,14 @@ class Manage extends \Zotlabs\Web\Controller {
$str_now = datetime_convert('UTC', date_default_timezone_get(), 'now', 'Y-m-d');
foreach($events as $e) {
$bd = false;
- if($e['type'] === 'birthday') {
+ if($e['etype'] === 'birthday') {
$channels[$x]['birthdays'] ++;
$bd = true;
}
else {
$channels[$x]['events'] ++;
}
- if(datetime_convert('UTC', ((intval($e['adjust'])) ? date_default_timezone_get() : 'UTC'), $e['start'], 'Y-m-d') === $str_now) {
+ if(datetime_convert('UTC', ((intval($e['adjust'])) ? date_default_timezone_get() : 'UTC'), $e['dtstart'], 'Y-m-d') === $str_now) {
$channels[$x]['all_events_today'] ++;
if($bd)
$channels[$x]['birthdays_today'] ++;
diff --git a/Zotlabs/Module/Menu.php b/Zotlabs/Module/Menu.php
index 9ada63911..e98053f8c 100644
--- a/Zotlabs/Module/Menu.php
+++ b/Zotlabs/Module/Menu.php
@@ -2,7 +2,7 @@
namespace Zotlabs\Module;
require_once('include/menu.php');
-require_once('include/identity.php');
+require_once('include/channel.php');
class Menu extends \Zotlabs\Web\Controller {
diff --git a/Zotlabs/Module/Message.php b/Zotlabs/Module/Message.php
index 58a138899..ea2127a1d 100644
--- a/Zotlabs/Module/Message.php
+++ b/Zotlabs/Module/Message.php
@@ -5,8 +5,6 @@ require_once('include/acl_selectors.php');
require_once('include/message.php');
require_once('include/zot.php');
require_once("include/bbcode.php");
-require_once('include/Contact.php');
-
class Message extends \Zotlabs\Web\Controller {
diff --git a/Zotlabs/Module/Mood.php b/Zotlabs/Module/Mood.php
index b1007fd06..d1bd44526 100644
--- a/Zotlabs/Module/Mood.php
+++ b/Zotlabs/Module/Mood.php
@@ -97,7 +97,7 @@ class Mood extends \Zotlabs\Web\Controller {
$item_id = $post['item_id'];
if($item_id) {
- proc_run('php',"include/notifier.php","activity", $item_id);
+ \Zotlabs\Daemon\Master::Summon(array('Notifier','activity', $item_id));
}
call_hooks('post_local_end', $arr);
diff --git a/Zotlabs/Module/Network.php b/Zotlabs/Module/Network.php
index c88258a78..87ed326e2 100644
--- a/Zotlabs/Module/Network.php
+++ b/Zotlabs/Module/Network.php
@@ -223,7 +223,7 @@ class Network extends \Zotlabs\Web\Controller {
if($x) {
$title = replace_macros(get_markup_template("section_title.tpl"),array(
- '$title' => t('Privacy group: ') . $x['name']
+ '$title' => t('Privacy group: ') . $x['gname']
));
}
@@ -385,7 +385,7 @@ class Network extends \Zotlabs\Web\Controller {
$abook_uids = " and abook.abook_channel = " . local_channel() . " ";
if($firehose && (! get_config('system','disable_discover_tab'))) {
- require_once('include/identity.php');
+ require_once('include/channel.php');
$sys = get_sys_channel();
$uids = " and item.uid = " . intval($sys['channel_id']) . " ";
\App::$data['firehose'] = intval($sys['channel_id']);
diff --git a/Zotlabs/Module/New_channel.php b/Zotlabs/Module/New_channel.php
index 3dca1b0b4..30d7c83c6 100644
--- a/Zotlabs/Module/New_channel.php
+++ b/Zotlabs/Module/New_channel.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/permissions.php');
diff --git a/Zotlabs/Module/Notifications.php b/Zotlabs/Module/Notifications.php
index d51d2861c..9da28a360 100644
--- a/Zotlabs/Module/Notifications.php
+++ b/Zotlabs/Module/Notifications.php
@@ -80,18 +80,18 @@ class Notifications extends \Zotlabs\Web\Controller {
$not_tpl = get_markup_template('notify.tpl');
require_once('include/bbcode.php');
- $r = q("SELECT * from notify where uid = %d and seen = 0 order by date desc",
+ $r = q("SELECT * from notify where uid = %d and seen = 0 order by created desc",
intval(local_channel())
);
- if (count($r) > 0) {
+ if ($r > 0) {
$notifications_available =1;
foreach ($r as $it) {
$notif_content .= replace_macros($not_tpl,array(
'$item_link' => z_root().'/notify/view/'. $it['id'],
'$item_image' => $it['photo'],
'$item_text' => strip_tags(bbcode($it['msg'])),
- '$item_when' => relative_date($it['date'])
+ '$item_when' => relative_date($it['created'])
));
}
} else {
diff --git a/Zotlabs/Module/Notify.php b/Zotlabs/Module/Notify.php
index 227491145..f592f6f37 100644
--- a/Zotlabs/Module/Notify.php
+++ b/Zotlabs/Module/Notify.php
@@ -39,7 +39,7 @@ class Notify extends \Zotlabs\Web\Controller {
$not_tpl = get_markup_template('notify.tpl');
require_once('include/bbcode.php');
- $r = q("SELECT * from notify where uid = %d and seen = 0 order by date desc",
+ $r = q("SELECT * from notify where uid = %d and seen = 0 order by created desc",
intval(local_channel())
);
@@ -49,7 +49,7 @@ class Notify extends \Zotlabs\Web\Controller {
'$item_link' => z_root().'/notify/view/'. $it['id'],
'$item_image' => $it['photo'],
'$item_text' => strip_tags(bbcode($it['msg'])),
- '$item_when' => relative_date($it['date'])
+ '$item_when' => relative_date($it['created'])
));
}
}
diff --git a/Zotlabs/Module/Oep.php b/Zotlabs/Module/Oep.php
index 638ea7e2d..dc0547a42 100644
--- a/Zotlabs/Module/Oep.php
+++ b/Zotlabs/Module/Oep.php
@@ -181,8 +181,8 @@ class Oep extends \Zotlabs\Web\Controller {
function oep_profile_reply($args) {
- require_once('include/identity.php');
- require_once('include/Contact.php');
+ require_once('include/channel.php');
+
$url = $args['url'];
if(preg_match('#//(.*?)/(.*?)/(.*?)(/|\?|&|$)#',$url,$matches)) {
@@ -249,7 +249,7 @@ class Oep extends \Zotlabs\Web\Controller {
$sql_extra = permissions_sql($c[0]['channel_id']);
- $p = q("select resource_id from photo where album = '%s' and uid = %d and scale = 0 $sql_extra order by created desc limit 1",
+ $p = q("select resource_id from photo where album = '%s' and uid = %d and imgscale = 0 $sql_extra order by created desc limit 1",
dbesc($res),
intval($c[0]['channel_id'])
);
@@ -258,7 +258,7 @@ class Oep extends \Zotlabs\Web\Controller {
$res = $p[0]['resource_id'];
- $r = q("select height, width, scale, resource_id from photo where uid = %d and resource_id = '%s' $sql_extra order by scale asc",
+ $r = q("select height, width, imgscale, resource_id from photo where uid = %d and resource_id = '%s' $sql_extra order by imgscale asc",
intval($c[0]['channel_id']),
dbesc($res)
);
@@ -276,7 +276,7 @@ class Oep extends \Zotlabs\Web\Controller {
if($foundres) {
$ret['type'] = 'link';
- $ret['thumbnail_url'] = z_root() . '/photo/' . '/' . $rr['resource_id'] . '-' . $rr['scale'];
+ $ret['thumbnail_url'] = z_root() . '/photo/' . '/' . $rr['resource_id'] . '-' . $rr['imgscale'];
$ret['thumbnail_width'] = $rr['width'];
$ret['thumbnail_height'] = $rr['height'];
}
@@ -310,7 +310,7 @@ class Oep extends \Zotlabs\Web\Controller {
$sql_extra = permissions_sql($c[0]['channel_id']);
- $p = q("select resource_id from photo where uid = %d and scale = 0 $sql_extra order by created desc limit 1",
+ $p = q("select resource_id from photo where uid = %d and imgscale = 0 $sql_extra order by created desc limit 1",
intval($c[0]['channel_id'])
);
if(! $p)
@@ -318,7 +318,7 @@ class Oep extends \Zotlabs\Web\Controller {
$res = $p[0]['resource_id'];
- $r = q("select height, width, scale, resource_id from photo where uid = %d and resource_id = '%s' $sql_extra order by scale asc",
+ $r = q("select height, width, imgscale, resource_id from photo where uid = %d and resource_id = '%s' $sql_extra order by imgscale asc",
intval($c[0]['channel_id']),
dbesc($res)
);
@@ -336,7 +336,7 @@ class Oep extends \Zotlabs\Web\Controller {
if($foundres) {
$ret['type'] = 'link';
- $ret['thumbnail_url'] = z_root() . '/photo/' . '/' . $rr['resource_id'] . '-' . $rr['scale'];
+ $ret['thumbnail_url'] = z_root() . '/photo/' . '/' . $rr['resource_id'] . '-' . $rr['imgscale'];
$ret['thumbnail_width'] = $rr['width'];
$ret['thumbnail_height'] = $rr['height'];
}
@@ -372,7 +372,7 @@ class Oep extends \Zotlabs\Web\Controller {
$sql_extra = permissions_sql($c[0]['channel_id']);
- $r = q("select height, width, scale, resource_id from photo where uid = %d and resource_id = '%s' $sql_extra order by scale asc",
+ $r = q("select height, width, imgscale, resource_id from photo where uid = %d and resource_id = '%s' $sql_extra order by imgscale asc",
intval($c[0]['channel_id']),
dbesc($res)
);
@@ -390,7 +390,7 @@ class Oep extends \Zotlabs\Web\Controller {
if($foundres) {
$ret['type'] = 'link';
- $ret['thumbnail_url'] = z_root() . '/photo/' . '/' . $rr['resource_id'] . '-' . $rr['scale'];
+ $ret['thumbnail_url'] = z_root() . '/photo/' . '/' . $rr['resource_id'] . '-' . $rr['imgscale'];
$ret['thumbnail_width'] = $rr['width'];
$ret['thumbnail_height'] = $rr['height'];
}
diff --git a/Zotlabs/Module/Photo.php b/Zotlabs/Module/Photo.php
index 408688886..92c9ac3c0 100644
--- a/Zotlabs/Module/Photo.php
+++ b/Zotlabs/Module/Photo.php
@@ -57,14 +57,14 @@ class Photo extends \Zotlabs\Web\Controller {
$uid = $person;
- $r = q("SELECT * FROM photo WHERE scale = %d AND uid = %d AND photo_usage = %d LIMIT 1",
+ $r = q("SELECT * FROM photo WHERE imgscale = %d AND uid = %d AND photo_usage = %d LIMIT 1",
intval($resolution),
intval($uid),
intval(PHOTO_PROFILE)
);
if(count($r)) {
- $data = dbunescbin($r[0]['data']);
- $mimetype = $r[0]['type'];
+ $data = dbunescbin($r[0]['content']);
+ $mimetype = $r[0]['mimetype'];
}
if(intval($r[0]['os_storage']))
$data = file_get_contents($data);
@@ -113,7 +113,7 @@ class Photo extends \Zotlabs\Web\Controller {
// If using resolution 1, make sure it exists before proceeding:
if ($resolution == 1)
{
- $r = q("SELECT uid FROM photo WHERE resource_id = '%s' AND scale = %d LIMIT 1",
+ $r = q("SELECT uid FROM photo WHERE resource_id = '%s' AND imgscale = %d LIMIT 1",
dbesc($photo),
intval($resolution)
);
@@ -121,7 +121,7 @@ class Photo extends \Zotlabs\Web\Controller {
$resolution = 2;
}
- $r = q("SELECT uid FROM photo WHERE resource_id = '%s' AND scale = %d LIMIT 1",
+ $r = q("SELECT uid FROM photo WHERE resource_id = '%s' AND imgscale = %d LIMIT 1",
dbesc($photo),
intval($resolution)
);
@@ -133,14 +133,14 @@ class Photo extends \Zotlabs\Web\Controller {
// Now we'll see if we can access the photo
- $r = q("SELECT * FROM photo WHERE resource_id = '%s' AND scale = %d $sql_extra LIMIT 1",
+ $r = q("SELECT * FROM photo WHERE resource_id = '%s' AND imgscale = %d $sql_extra LIMIT 1",
dbesc($photo),
intval($resolution)
);
if($r && $allowed) {
- $data = dbunescbin($r[0]['data']);
- $mimetype = $r[0]['type'];
+ $data = dbunescbin($r[0]['content']);
+ $mimetype = $r[0]['mimetype'];
if(intval($r[0]['os_storage']))
$data = file_get_contents($data);
}
@@ -154,7 +154,7 @@ class Photo extends \Zotlabs\Web\Controller {
// they won't have the photo link, so there's a reasonable chance that the person
// might be able to obtain permission to view it.
- $r = q("SELECT * FROM `photo` WHERE `resource_id` = '%s' AND `scale` = %d LIMIT 1",
+ $r = q("SELECT * FROM `photo` WHERE `resource_id` = '%s' AND `imgscale` = %d LIMIT 1",
dbesc($photo),
intval($resolution)
);
diff --git a/Zotlabs/Module/Photos.php b/Zotlabs/Module/Photos.php
index 1659350a5..1bdc23897 100644
--- a/Zotlabs/Module/Photos.php
+++ b/Zotlabs/Module/Photos.php
@@ -1,12 +1,12 @@
<?php
namespace Zotlabs\Module;
+
require_once('include/photo/photo_driver.php');
require_once('include/photos.php');
require_once('include/items.php');
require_once('include/acl_selectors.php');
require_once('include/bbcode.php');
require_once('include/security.php');
-require_once('include/Contact.php');
require_once('include/attach.php');
require_once('include/text.php');
require_once('include/PermissionDescription.php');
@@ -18,7 +18,7 @@ class Photos extends \Zotlabs\Web\Controller {
function init() {
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
return;
}
@@ -255,13 +255,13 @@ class Photos extends \Zotlabs\Web\Controller {
( (intval($_POST['rotate']) == 1) || (intval($_POST['rotate']) == 2) )) {
logger('rotate');
- $r = q("select * from photo where `resource_id` = '%s' and uid = %d and scale = 0 limit 1",
+ $r = q("select * from photo where `resource_id` = '%s' and uid = %d and imgscale = 0 limit 1",
dbesc($resource_id),
intval($page_owner_uid)
);
if(count($r)) {
- $d = (($r[0]['os_storage']) ? @file_get_contents($r[0]['data']) : dbunescbin($r[0]['data']));
- $ph = photo_factory($d, $r[0]['type']);
+ $d = (($r[0]['os_storage']) ? @file_get_contents($r[0]['content']) : dbunescbin($r[0]['content']));
+ $ph = photo_factory($d, $r[0]['mimetype']);
if($ph->is_valid()) {
$rotate_deg = ( (intval($_POST['rotate']) == 1) ? 270 : 90 );
$ph->rotate($rotate_deg);
@@ -270,9 +270,9 @@ class Photos extends \Zotlabs\Web\Controller {
$height = $ph->getHeight();
if(intval($r[0]['os_storage'])) {
- @file_put_contents($r[0]['data'],$ph->imageString());
- $data = $r[0]['data'];
- $fsize = @filesize($r[0]['data']);
+ @file_put_contents($r[0]['content'],$ph->imageString());
+ $data = $r[0]['content'];
+ $fsize = @filesize($r[0]['content']);
q("update attach set filesize = %d where hash = '%s' and uid = %d limit 1",
intval($fsize),
dbesc($resource_id),
@@ -284,7 +284,7 @@ class Photos extends \Zotlabs\Web\Controller {
$fsize = strlen($data);
}
- $x = q("update photo set data = '%s', `size` = %d, height = %d, width = %d where `resource_id` = '%s' and uid = %d and scale = 0",
+ $x = q("update photo set content = '%s', filesize = %d, height = %d, width = %d where `resource_id` = '%s' and uid = %d and imgscale = 0",
dbescbin($data),
intval($fsize),
intval($height),
@@ -299,7 +299,7 @@ class Photos extends \Zotlabs\Web\Controller {
$width = $ph->getWidth();
$height = $ph->getHeight();
- $x = q("update photo set data = '%s', height = %d, width = %d where `resource_id` = '%s' and uid = %d and scale = 1",
+ $x = q("update photo set content = '%s', height = %d, width = %d where `resource_id` = '%s' and uid = %d and imgscale = 1",
dbescbin($ph->imageString()),
intval($height),
intval($width),
@@ -314,7 +314,7 @@ class Photos extends \Zotlabs\Web\Controller {
$width = $ph->getWidth();
$height = $ph->getHeight();
- $x = q("update photo set data = '%s', height = %d, width = %d where `resource_id` = '%s' and uid = %d and scale = 2",
+ $x = q("update photo set content = '%s', height = %d, width = %d where `resource_id` = '%s' and uid = %d and imgscale = 2",
dbescbin($ph->imageString()),
intval($height),
intval($width),
@@ -329,7 +329,7 @@ class Photos extends \Zotlabs\Web\Controller {
$width = $ph->getWidth();
$height = $ph->getHeight();
- $x = q("update photo set data = '%s', height = %d, width = %d where `resource_id` = '%s' and uid = %d and scale = 3",
+ $x = q("update photo set content = '%s', height = %d, width = %d where `resource_id` = '%s' and uid = %d and imgscale = 3",
dbescbin($ph->imageString()),
intval($height),
intval($width),
@@ -340,12 +340,12 @@ class Photos extends \Zotlabs\Web\Controller {
}
}
- $p = q("SELECT type, is_nsfw, description, resource_id, scale, allow_cid, allow_gid, deny_cid, deny_gid FROM photo WHERE resource_id = '%s' AND uid = %d ORDER BY scale DESC",
+ $p = q("SELECT mimetype, is_nsfw, description, resource_id, imgscale, allow_cid, allow_gid, deny_cid, deny_gid FROM photo WHERE resource_id = '%s' AND uid = %d ORDER BY imgscale DESC",
dbesc($resource_id),
intval($page_owner_uid)
);
if($p) {
- $ext = $phototypes[$p[0]['type']];
+ $ext = $phototypes[$p[0]['mimetype']];
$r = q("UPDATE `photo` SET `description` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s' WHERE `resource_id` = '%s' AND `uid` = %d",
dbesc($desc),
@@ -440,7 +440,7 @@ class Photos extends \Zotlabs\Web\Controller {
if($success['replaced']) {
$post_tags[] = array(
'uid' => $profile_uid,
- 'type' => $success['termtype'],
+ 'ttype' => $success['termtype'],
'otype' => TERM_OBJ_POST,
'term' => $success['term'],
'url' => $success['url']
@@ -510,7 +510,7 @@ class Photos extends \Zotlabs\Web\Controller {
- function get() {
+ function get() {
// URLs:
// photos/name
@@ -518,7 +518,7 @@ class Photos extends \Zotlabs\Web\Controller {
// photos/name/image/xxxxx
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
notice( t('Public access denied.') . EOL);
return;
}
@@ -611,7 +611,7 @@ class Photos extends \Zotlabs\Web\Controller {
/* Show space usage */
- $r = q("select sum(size) as total from photo where aid = %d and scale = 0 ",
+ $r = q("select sum(filesize) as total from photo where aid = %d and imgscale = 0 ",
intval(\App::$data['channel']['channel_account_id'])
);
@@ -704,8 +704,8 @@ class Photos extends \Zotlabs\Web\Controller {
\App::$page['htmlhead'] .= "\r\n" . '<link rel="alternate" type="application/json+oembed" href="' . z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$cmd) . '" title="oembed" />' . "\r\n";
- $r = q("SELECT `resource_id`, max(`scale`) AS `scale` FROM `photo` WHERE `uid` = %d AND `album` = '%s'
- AND `scale` <= 4 and photo_usage IN ( %d, %d ) and is_nsfw = %d $sql_extra GROUP BY `resource_id`",
+ $r = q("SELECT `resource_id`, max(`imgscale`) AS `imgscale` FROM `photo` WHERE `uid` = %d AND `album` = '%s'
+ AND `imgscale` <= 4 and photo_usage IN ( %d, %d ) and is_nsfw = %d $sql_extra GROUP BY `resource_id`",
intval($owner_uid),
dbesc($album),
intval(PHOTO_NORMAL),
@@ -725,9 +725,9 @@ class Photos extends \Zotlabs\Web\Controller {
$order = 'DESC';
- $r = q("SELECT p.resource_id, p.id, p.filename, p.type, p.scale, p.description, p.created FROM photo p INNER JOIN
- (SELECT resource_id, max(scale) scale FROM photo WHERE uid = %d AND album = '%s' AND scale <= 4 AND photo_usage IN ( %d, %d ) and is_nsfw = %d $sql_extra GROUP BY resource_id) ph
- ON (p.resource_id = ph.resource_id AND p.scale = ph.scale)
+ $r = q("SELECT p.resource_id, p.id, p.filename, p.mimetype, p.imgscale, p.description, p.created FROM photo p INNER JOIN
+ (SELECT resource_id, max(imgscale) imgscale FROM photo WHERE uid = %d AND album = '%s' AND imgscale <= 4 AND photo_usage IN ( %d, %d ) and is_nsfw = %d $sql_extra GROUP BY resource_id) ph
+ ON (p.resource_id = ph.resource_id AND p.imgscale = ph.imgscale)
ORDER BY created $order LIMIT %d OFFSET %d",
intval($owner_uid),
dbesc($album),
@@ -777,7 +777,7 @@ class Photos extends \Zotlabs\Web\Controller {
else
$twist = 'rotright';
- $ext = $phototypes[$rr['type']];
+ $ext = $phototypes[$rr['mimetype']];
$imgalt_e = $rr['filename'];
$desc_e = $rr['description'];
@@ -790,7 +790,7 @@ class Photos extends \Zotlabs\Web\Controller {
'twist' => ' ' . $twist . rand(2,4),
'link' => $imagelink,
'title' => t('View Photo'),
- 'src' => z_root() . '/photo/' . $rr['resource_id'] . '-' . $rr['scale'] . '.' .$ext,
+ 'src' => z_root() . '/photo/' . $rr['resource_id'] . '-' . $rr['imgscale'] . '.' .$ext,
'alt' => $imgalt_e,
'desc'=> $desc_e,
'ext' => $ext,
@@ -852,8 +852,8 @@ class Photos extends \Zotlabs\Web\Controller {
// fetch image, item containing image, then comments
- $ph = q("SELECT id,aid,uid,xchan,resource_id,created,edited,title,`description`,album,filename,`type`,height,width,`size`,scale,photo_usage,is_nsfw,allow_cid,allow_gid,deny_cid,deny_gid FROM `photo` WHERE `uid` = %d AND `resource_id` = '%s'
- $sql_extra ORDER BY `scale` ASC ",
+ $ph = q("SELECT id,aid,uid,xchan,resource_id,created,edited,title,`description`,album,filename,mimetype,height,width,filesize,imgscale,photo_usage,is_nsfw,allow_cid,allow_gid,deny_cid,deny_gid FROM `photo` WHERE `uid` = %d AND `resource_id` = '%s'
+ $sql_extra ORDER BY `imgscale` ASC ",
intval($owner_uid),
dbesc($datum)
);
@@ -884,7 +884,7 @@ class Photos extends \Zotlabs\Web\Controller {
$order = 'DESC';
- $prvnxt = q("SELECT `resource_id` FROM `photo` WHERE `album` = '%s' AND `uid` = %d AND `scale` = 0
+ $prvnxt = q("SELECT `resource_id` FROM `photo` WHERE `album` = '%s' AND `uid` = %d AND `imgscale` = 0
$sql_extra ORDER BY `created` $order ",
dbesc($ph[0]['album']),
intval($owner_uid)
@@ -911,7 +911,7 @@ class Photos extends \Zotlabs\Web\Controller {
if(count($ph) == 1)
$hires = $lores = $ph[0];
if(count($ph) > 1) {
- if($ph[1]['scale'] == 2) {
+ if($ph[1]['imgscale'] == 2) {
// original is 640 or less, we can display it directly
$hires = $lores = $ph[0];
}
@@ -949,9 +949,9 @@ class Photos extends \Zotlabs\Web\Controller {
$prevlink = array($prevlink, t('Previous'));
$photo = array(
- 'href' => z_root() . '/photo/' . $hires['resource_id'] . '-' . $hires['scale'] . '.' . $phototypes[$hires['type']],
+ 'href' => z_root() . '/photo/' . $hires['resource_id'] . '-' . $hires['imgscale'] . '.' . $phototypes[$hires['mimetype']],
'title'=> t('View Full Size'),
- 'src' => z_root() . '/photo/' . $lores['resource_id'] . '-' . $lores['scale'] . '.' . $phototypes[$lores['type']] . '?f=&_u=' . datetime_convert('','','','ymdhis')
+ 'src' => z_root() . '/photo/' . $lores['resource_id'] . '-' . $lores['imgscale'] . '.' . $phototypes[$lores['mimetype']] . '?f=&_u=' . datetime_convert('','','','ymdhis')
);
if($nextlink)
@@ -1277,28 +1277,25 @@ class Photos extends \Zotlabs\Web\Controller {
\App::$page['htmlhead'] .= "\r\n" . '<link rel="alternate" type="application/json+oembed" href="' . z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$cmd) . '" title="oembed" />' . "\r\n";
- $r = q("SELECT `resource_id`, max(`scale`) AS `scale` FROM `photo` WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s'
+ $r = q("SELECT `resource_id`, max(`imgscale`) AS `imgscale` FROM `photo` WHERE `uid` = %d
and photo_usage in ( %d, %d ) and is_nsfw = %d $sql_extra GROUP BY `resource_id`",
intval(\App::$data['channel']['channel_id']),
- dbesc('Contact Photos'),
- dbesc( t('Contact Photos')),
intval(PHOTO_NORMAL),
intval(PHOTO_PROFILE),
intval($unsafe)
);
- if(count($r)) {
+ if($r) {
\App::set_pager_total(count($r));
\App::set_pager_itemspage(60);
}
- $r = q("SELECT p.resource_id, p.id, p.filename, p.type, p.album, p.scale, p.created FROM photo p INNER JOIN
- (SELECT resource_id, max(scale) scale FROM photo
- WHERE uid=%d AND album != '%s' AND album != '%s'
- AND photo_usage IN ( %d, %d ) and is_nsfw = %d $sql_extra group by resource_id) ph
- ON (p.resource_id = ph.resource_id and p.scale = ph.scale) ORDER by p.created DESC LIMIT %d OFFSET %d",
+ $r = q("SELECT p.resource_id, p.id, p.filename, p.mimetype, p.album, p.imgscale, p.created FROM photo p
+ INNER JOIN ( SELECT resource_id, max(imgscale) imgscale FROM photo
+ WHERE uid = %d AND photo_usage IN ( %d, %d )
+ AND is_nsfw = %d $sql_extra group by resource_id ) ph
+ ON (p.resource_id = ph.resource_id and p.imgscale = ph.imgscale)
+ ORDER by p.created DESC LIMIT %d OFFSET %d",
intval(\App::$data['channel']['channel_id']),
- dbesc('Contact Photos'),
- dbesc( t('Contact Photos')),
intval(PHOTO_NORMAL),
intval(PHOTO_PROFILE),
intval($unsafe),
@@ -1309,14 +1306,14 @@ class Photos extends \Zotlabs\Web\Controller {
$photos = array();
- if(count($r)) {
+ if($r) {
$twist = 'rotright';
foreach($r as $rr) {
if($twist == 'rotright')
$twist = 'rotleft';
else
$twist = 'rotright';
- $ext = $phototypes[$rr['type']];
+ $ext = $phototypes[$rr['mimetype']];
if(\App::get_template_engine() === 'internal') {
$alt_e = template_escape($rr['filename']);
@@ -1332,7 +1329,7 @@ class Photos extends \Zotlabs\Web\Controller {
'twist' => ' ' . $twist . rand(2,4),
'link' => z_root() . '/photos/' . \App::$data['channel']['channel_address'] . '/image/' . $rr['resource_id'],
'title' => t('View Photo'),
- 'src' => z_root() . '/photo/' . $rr['resource_id'] . '-' . ((($rr['scale']) == 6) ? 4 : $rr['scale']) . '.' . $ext,
+ 'src' => z_root() . '/photo/' . $rr['resource_id'] . '-' . ((($rr['imgscale']) == 6) ? 4 : $rr['imgscale']) . '.' . $ext,
'alt' => $alt_e,
'album' => array(
'link' => z_root() . '/photos/' . \App::$data['channel']['channel_address'] . '/album/' . bin2hex($rr['album']),
diff --git a/Zotlabs/Module/Ping.php b/Zotlabs/Module/Ping.php
index bea4a08b7..5cbf45daa 100644
--- a/Zotlabs/Module/Ping.php
+++ b/Zotlabs/Module/Ping.php
@@ -1,12 +1,13 @@
<?php
namespace Zotlabs\Module;
+
/**
* @file mod/ping.php
*
*/
require_once('include/bbcode.php');
-require_once('include/notify.php');
+
/**
* @brief do several updates when pinged.
@@ -172,7 +173,7 @@ class Ping extends \Zotlabs\Web\Controller {
);
break;
case 'all_events':
- $r = q("update event set `ignore` = 1 where `ignore` = 0 and uid = %d AND start < '%s' AND start > '%s' ",
+ $r = q("update event set `dimissed` = 1 where `dismissed` = 0 and uid = %d AND dtstart < '%s' AND dtstart > '%s' ",
intval(local_channel()),
dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + ' . intval($evdays) . ' days')),
dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now - 1 days'))
@@ -208,17 +209,17 @@ class Ping extends \Zotlabs\Web\Controller {
);
if($t && intval($t[0]['total']) > 49) {
$z = q("select * from notify where uid = %d
- and seen = 0 order by date desc limit 50",
+ and seen = 0 order by created desc limit 50",
intval(local_channel())
);
}
else {
$z1 = q("select * from notify where uid = %d
- and seen = 0 order by date desc limit 50",
+ and seen = 0 order by created desc limit 50",
intval(local_channel())
);
$z2 = q("select * from notify where uid = %d
- and seen = 1 order by date desc limit %d",
+ and seen = 1 order by created desc limit %d",
intval(local_channel()),
intval(50 - intval($t[0]['total']))
);
@@ -229,10 +230,10 @@ class Ping extends \Zotlabs\Web\Controller {
foreach($z as $zz) {
$notifs[] = array(
'notify_link' => z_root() . '/notify/view/' . $zz['id'],
- 'name' => $zz['name'],
+ 'name' => $zz['xname'],
'url' => $zz['url'],
'photo' => $zz['photo'],
- 'when' => relative_date($zz['date']),
+ 'when' => relative_date($zz['created']),
'hclass' => (($zz['seen']) ? 'notify-seen' : 'notify-unseen'),
'message' => strip_tags(bbcode($zz['msg']))
);
@@ -285,7 +286,7 @@ class Ping extends \Zotlabs\Web\Controller {
foreach($r as $item) {
if((argv(1) === 'home') && (! intval($item['item_wall'])))
continue;
- $result[] = format_notification($item);
+ $result[] = \Zotlabs\Lib\Enotify::format($item);
}
}
// logger('ping (network||home): ' . print_r($result, true), LOGGER_DATA);
@@ -324,9 +325,9 @@ class Ping extends \Zotlabs\Web\Controller {
$result = array();
$r = q("SELECT * FROM event left join xchan on event_xchan = xchan_hash
- WHERE `event`.`uid` = %d AND start < '%s' AND start > '%s' and `ignore` = 0
- and type in ( 'event', 'birthday' )
- ORDER BY `start` DESC LIMIT 1000",
+ WHERE `event`.`uid` = %d AND dtstart < '%s' AND dtstart > '%s' and `dismissed` = 0
+ and etype in ( 'event', 'birthday' )
+ ORDER BY `dtstart` DESC LIMIT 1000",
intval(local_channel()),
dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + ' . intval($evdays) . ' days')),
dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now - 1 days'))
@@ -335,14 +336,14 @@ class Ping extends \Zotlabs\Web\Controller {
if($r) {
foreach($r as $rr) {
if($rr['adjust'])
- $md = datetime_convert('UTC', date_default_timezone_get(), $rr['start'], 'Y/m');
+ $md = datetime_convert('UTC', date_default_timezone_get(), $rr['dtstart'], 'Y/m');
else
- $md = datetime_convert('UTC', 'UTC', $rr['start'], 'Y/m');
+ $md = datetime_convert('UTC', 'UTC', $rr['dtstart'], 'Y/m');
- $strt = datetime_convert('UTC', (($rr['adjust']) ? date_default_timezone_get() : 'UTC'), $rr['start']);
+ $strt = datetime_convert('UTC', (($rr['adjust']) ? date_default_timezone_get() : 'UTC'), $rr['dtstart']);
$today = ((substr($strt, 0, 10) === datetime_convert('UTC', date_default_timezone_get(), 'now', 'Y-m-d')) ? true : false);
- $when = day_translate(datetime_convert('UTC', (($rr['adjust']) ? date_default_timezone_get() : 'UTC'), $rr['start'], $bd_format)) . (($today) ? ' ' . t('[today]') : '');
+ $when = day_translate(datetime_convert('UTC', (($rr['adjust']) ? date_default_timezone_get() : 'UTC'), $rr['dtstart'], $bd_format)) . (($today) ? ' ' . t('[today]') : '');
$result[] = array(
'notify_link' => z_root() . '/events', // FIXME this takes you to an edit page and it may not be yours, we really want to just view the single event --> '/events/event/' . $rr['event_hash'],
@@ -442,10 +443,10 @@ class Ping extends \Zotlabs\Web\Controller {
$t5 = dba_timer();
if($vnotify & (VNOTIFY_EVENT|VNOTIFY_EVENTTODAY|VNOTIFY_BIRTHDAY)) {
- $events = q("SELECT type, start, adjust FROM `event`
- WHERE `event`.`uid` = %d AND start < '%s' AND start > '%s' and `ignore` = 0
- and type in ( 'event', 'birthday' )
- ORDER BY `start` ASC ",
+ $events = q("SELECT etype, dtstart, adjust FROM `event`
+ WHERE `event`.`uid` = %d AND dtstart < '%s' AND dtstart > '%s' and `dismissed` = 0
+ and etype in ( 'event', 'birthday' )
+ ORDER BY `dtstart` ASC ",
intval(local_channel()),
dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + ' . intval($evdays) . ' days')),
dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now - 1 days'))
@@ -458,14 +459,14 @@ class Ping extends \Zotlabs\Web\Controller {
$str_now = datetime_convert('UTC', date_default_timezone_get(), 'now', 'Y-m-d');
foreach($events as $x) {
$bd = false;
- if($x['type'] === 'birthday') {
+ if($x['etype'] === 'birthday') {
$result['birthdays'] ++;
$bd = true;
}
else {
$result['events'] ++;
}
- if(datetime_convert('UTC', ((intval($x['adjust'])) ? date_default_timezone_get() : 'UTC'), $x['start'], 'Y-m-d') === $str_now) {
+ if(datetime_convert('UTC', ((intval($x['adjust'])) ? date_default_timezone_get() : 'UTC'), $x['dtstart'], 'Y-m-d') === $str_now) {
$result['all_events_today'] ++;
if($bd)
$result['birthdays_today'] ++;
diff --git a/Zotlabs/Module/Poke.php b/Zotlabs/Module/Poke.php
index 123ecbc7b..cf8d83023 100644
--- a/Zotlabs/Module/Poke.php
+++ b/Zotlabs/Module/Poke.php
@@ -115,7 +115,7 @@ class Poke extends \Zotlabs\Web\Controller {
),
);
- $arr['object'] = json_encode($obj);
+ $arr['obj'] = json_encode($obj);
$arr['item_origin'] = 1;
$arr['item_wall'] = 1;
diff --git a/Zotlabs/Module/Prate.php b/Zotlabs/Module/Prate.php
index 65bbcca9a..2a8539ed0 100644
--- a/Zotlabs/Module/Prate.php
+++ b/Zotlabs/Module/Prate.php
@@ -85,7 +85,7 @@ class Prate extends \Zotlabs\Web\Controller {
$record = $z[0]['xlink_id'];
}
if($record) {
- proc_run('php','include/ratenotif.php','rating',$record);
+ \Zotlabs\Daemon\Master::Summon(array('Ratenotif','rating',$record));
}
json_return_and_die(array('result' => true));;
diff --git a/Zotlabs/Module/Probe.php b/Zotlabs/Module/Probe.php
index 79abe9819..dda792131 100644
--- a/Zotlabs/Module/Probe.php
+++ b/Zotlabs/Module/Probe.php
@@ -20,17 +20,17 @@ class Probe extends \Zotlabs\Web\Controller {
$channel = \App::get_channel();
$addr = trim($_GET['addr']);
$do_import = ((intval($_GET['import']) && is_site_admin()) ? true : false);
- $res = zot_finger($addr,$channel,false);
+
+ $j = \Zotlabs\Zot\Finger::run($addr,$channel,false);
+
+ // $res = zot_finger($addr,$channel,false);
+
$o .= '<pre>';
- if($res['success'])
- $j = json_decode($res['body'],true);
- else {
+ if(! $j['success']) {
$o .= sprintf( t('Fetching URL returns error: %1$s'),$res['error'] . "\r\n\r\n");
$o .= "<strong>https connection failed. Trying again with auto failover to http.</strong>\r\n\r\n";
- $res = zot_finger($addr,$channel,true);
- if($res['success'])
- $j = json_decode($res['body'],true);
- else
+ $j = \Zotlabs\Zot\Finger::run($addr,$channel,true);
+ if(! $j['success'])
$o .= sprintf( t('Fetching URL returns error: %1$s'),$res['error'] . "\r\n\r\n");
}
diff --git a/Zotlabs/Module/Profile.php b/Zotlabs/Module/Profile.php
index 04a64fe76..8bf358bc8 100644
--- a/Zotlabs/Module/Profile.php
+++ b/Zotlabs/Module/Profile.php
@@ -55,8 +55,8 @@ class Profile extends \Zotlabs\Web\Controller {
function get() {
- if(get_config('system','block_public') && (! get_account_id()) && (! remote_channel())) {
- return login();
+ if(observer_prohibited(true)) {
+ return login();
}
$groups = array();
diff --git a/Zotlabs/Module/Profile_photo.php b/Zotlabs/Module/Profile_photo.php
index 8f879503c..6129a7492 100644
--- a/Zotlabs/Module/Profile_photo.php
+++ b/Zotlabs/Module/Profile_photo.php
@@ -9,7 +9,7 @@ namespace Zotlabs\Module;
require_once('include/photo/photo_driver.php');
require_once('include/photos.php');
-require_once('include/identity.php');
+require_once('include/channel.php');
/* @brief Function for sync'ing permissions of profile-photos and their profile
*
@@ -93,7 +93,7 @@ class Profile_photo extends \Zotlabs\Web\Controller {
$srcW = $_POST['xfinal'] - $srcX;
$srcH = $_POST['yfinal'] - $srcY;
- $r = q("SELECT * FROM photo WHERE resource_id = '%s' AND uid = %d AND scale = %d LIMIT 1",
+ $r = q("SELECT * FROM photo WHERE resource_id = '%s' AND uid = %d AND imgscale = %d LIMIT 1",
dbesc($image_id),
dbesc(local_channel()),
intval($scale));
@@ -101,9 +101,9 @@ class Profile_photo extends \Zotlabs\Web\Controller {
if($r) {
$base_image = $r[0];
- $base_image['data'] = (($r[0]['os_storage']) ? @file_get_contents($base_image['data']) : dbunescbin($base_image['data']));
+ $base_image['content'] = (($r[0]['os_storage']) ? @file_get_contents($base_image['content']) : dbunescbin($base_image['content']));
- $im = photo_factory($base_image['data'], $base_image['type']);
+ $im = photo_factory($base_image['content'], $base_image['mimetype']);
if($im->is_valid()) {
$im->cropImage(300,$srcX,$srcY,$srcW,$srcH);
@@ -113,25 +113,25 @@ class Profile_photo extends \Zotlabs\Web\Controller {
$p = array('aid' => $aid, 'uid' => local_channel(), 'resource_id' => $base_image['resource_id'],
'filename' => $base_image['filename'], 'album' => t('Profile Photos'));
- $p['scale'] = 4;
+ $p['imgscale'] = 4;
$p['photo_usage'] = (($is_default_profile) ? PHOTO_PROFILE : PHOTO_NORMAL);
$r1 = $im->save($p);
$im->scaleImage(80);
- $p['scale'] = 5;
+ $p['imgscale'] = 5;
$r2 = $im->save($p);
$im->scaleImage(48);
- $p['scale'] = 6;
+ $p['imgscale'] = 6;
$r3 = $im->save($p);
if($r1 === false || $r2 === false || $r3 === false) {
// if one failed, delete them all so we can start over.
notice( t('Image resize failed.') . EOL );
- $x = q("delete from photo where resource_id = '%s' and uid = %d and scale >= 4 ",
+ $x = q("delete from photo where resource_id = '%s' and uid = %d and imgscale >= 4 ",
dbesc($base_image['resource_id']),
local_channel()
);
@@ -179,7 +179,7 @@ class Profile_photo extends \Zotlabs\Web\Controller {
info( t('Shift-reload the page or clear browser cache if the new photo does not display immediately.') . EOL);
// Update directory in background
- proc_run('php',"include/directory.php",$channel['channel_id']);
+ \Zotlabs\Daemon\Master::Summon(array('Directory',$channel['channel_id']));
// Now copy profile-permissions to pictures, to prevent privacyleaks by automatically created folder 'Profile Pictures'
@@ -208,7 +208,7 @@ class Profile_photo extends \Zotlabs\Web\Controller {
logger('attach_store: ' . print_r($res,true));
if($res && intval($res['data']['is_photo'])) {
- $i = q("select * from photo where resource_id = '%s' and uid = %d order by scale",
+ $i = q("select * from photo where resource_id = '%s' and uid = %d order by imgscale",
dbesc($hash),
intval(local_channel())
);
@@ -220,11 +220,11 @@ class Profile_photo extends \Zotlabs\Web\Controller {
$os_storage = false;
foreach($i as $ii) {
- if(intval($ii['scale']) < 2) {
- $smallest = intval($ii['scale']);
+ if(intval($ii['imgscale']) < 2) {
+ $smallest = intval($ii['imgscale']);
$os_storage = intval($ii['os_storage']);
- $imagedata = $ii['data'];
- $filetype = $ii['type'];
+ $imagedata = $ii['content'];
+ $filetype = $ii['mimetype'];
}
}
}
@@ -250,7 +250,7 @@ class Profile_photo extends \Zotlabs\Web\Controller {
*/
- function get() {
+ function get() {
if(! local_channel()) {
notice( t('Permission denied.') . EOL );
@@ -275,7 +275,7 @@ class Profile_photo extends \Zotlabs\Web\Controller {
$resource_id = argv(2);
- $r = q("SELECT id, album, scale FROM photo WHERE uid = %d AND resource_id = '%s' ORDER BY scale ASC",
+ $r = q("SELECT id, album, imgscale FROM photo WHERE uid = %d AND resource_id = '%s' ORDER BY imgscale ASC",
intval(local_channel()),
dbesc($resource_id)
);
@@ -285,7 +285,7 @@ class Profile_photo extends \Zotlabs\Web\Controller {
}
$havescale = false;
foreach($r as $rr) {
- if($rr['scale'] == 5)
+ if($rr['imgscale'] == 5)
$havescale = true;
}
@@ -311,11 +311,11 @@ class Profile_photo extends \Zotlabs\Web\Controller {
);
profile_photo_set_profile_perms(); //Reset default photo permissions to public
- proc_run('php','include/directory.php',local_channel());
+ \Zotlabs\Daemon\Master::Summon(array('Directory',local_channel()));
goaway(z_root() . '/profiles');
}
- $r = q("SELECT `data`, `type`, resource_id, os_storage FROM photo WHERE id = %d and uid = %d limit 1",
+ $r = q("SELECT content, mimetype, resource_id, os_storage FROM photo WHERE id = %d and uid = %d limit 1",
intval($r[0]['id']),
intval(local_channel())
@@ -326,15 +326,15 @@ class Profile_photo extends \Zotlabs\Web\Controller {
}
if(intval($r[0]['os_storage']))
- $data = @file_get_contents($r[0]['data']);
+ $data = @file_get_contents($r[0]['content']);
else
- $data = dbunescbin($r[0]['data']);
+ $data = dbunescbin($r[0]['content']);
- $ph = photo_factory($data, $r[0]['type']);
+ $ph = photo_factory($data, $r[0]['mimetype']);
$smallest = 0;
if($ph->is_valid()) {
// go ahead as if we have just uploaded a new photo to crop
- $i = q("select resource_id, scale from photo where resource_id = '%s' and uid = %d order by scale",
+ $i = q("select resource_id, imgscale from photo where resource_id = '%s' and uid = %d order by imgscale",
dbesc($r[0]['resource_id']),
intval(local_channel())
);
@@ -342,8 +342,8 @@ class Profile_photo extends \Zotlabs\Web\Controller {
if($i) {
$hash = $i[0]['resource_id'];
foreach($i as $ii) {
- if(intval($ii['scale']) < 2) {
- $smallest = intval($ii['scale']);
+ if(intval($ii['imgscale']) < 2) {
+ $smallest = intval($ii['imgscale']);
}
}
}
diff --git a/Zotlabs/Module/Profiles.php b/Zotlabs/Module/Profiles.php
index 72edf396f..06e5cfd7b 100644
--- a/Zotlabs/Module/Profiles.php
+++ b/Zotlabs/Module/Profiles.php
@@ -1,7 +1,8 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
+require_once('include/selectors.php');
class Profiles extends \Zotlabs\Web\Controller {
@@ -66,16 +67,16 @@ class Profiles extends \Zotlabs\Web\Controller {
$name = t('Profile-') . ($num_profiles + 1);
- $r1 = q("SELECT `name`, `photo`, `thumb` FROM `profile` WHERE `uid` = %d AND `is_default` = 1 LIMIT 1",
+ $r1 = q("SELECT `fullname`, `photo`, `thumb` FROM `profile` WHERE `uid` = %d AND `is_default` = 1 LIMIT 1",
intval(local_channel()));
- $r2 = q("INSERT INTO `profile` (`aid`, `uid` , `profile_guid`, `profile_name` , `name`, `photo`, `thumb`)
+ $r2 = q("INSERT INTO `profile` (`aid`, `uid` , `profile_guid`, `profile_name` , `fullname`, `photo`, `thumb`)
VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s' )",
intval(get_account_id()),
intval(local_channel()),
dbesc(random_string()),
dbesc($name),
- dbesc($r1[0]['name']),
+ dbesc($r1[0]['fullname']),
dbesc($r1[0]['photo']),
dbesc($r1[0]['thumb'])
);
@@ -276,14 +277,14 @@ class Profiles extends \Zotlabs\Web\Controller {
$name = escape_tags(trim($_POST['name']));
- if($orig[0]['name'] != $name) {
+ if($orig[0]['fullname'] != $name) {
$namechanged = true;
$v = validate_channelname($name);
if($v) {
notice($v);
$namechanged = false;
- $name = $orig[0]['name'];
+ $name = $orig[0]['fullname'];
}
}
@@ -349,7 +350,7 @@ class Profiles extends \Zotlabs\Web\Controller {
$withchanged = false;
if(strlen($with)) {
- if($with != strip_tags($orig[0]['with'])) {
+ if($with != strip_tags($orig[0]['partner'])) {
$withchanged = true;
$prf = '';
$lookup = $with;
@@ -381,7 +382,7 @@ class Profiles extends \Zotlabs\Web\Controller {
}
}
else
- $with = $orig[0]['with'];
+ $with = $orig[0]['partner'];
}
$profile_fields_basic = get_profile_fields_basic();
@@ -438,7 +439,7 @@ class Profiles extends \Zotlabs\Web\Controller {
$changes[] = t('Dislikes');
$value = $dislikes;
}
- if($work != $orig[0]['work']) {
+ if($work != $orig[0]['employment']) {
$changes[] = t('Work/Employment');
}
if($religion != $orig[0]['religion']) {
@@ -485,7 +486,7 @@ class Profiles extends \Zotlabs\Web\Controller {
$r = q("UPDATE `profile`
SET `profile_name` = '%s',
- `name` = '%s',
+ `fullname` = '%s',
`pdesc` = '%s',
`gender` = '%s',
`dob` = '%s',
@@ -495,7 +496,7 @@ class Profiles extends \Zotlabs\Web\Controller {
`postal_code` = '%s',
`country_name` = '%s',
`marital` = '%s',
- `with` = '%s',
+ `partner` = '%s',
`howlong` = '%s',
`sexual` = '%s',
`homepage` = '%s',
@@ -514,7 +515,7 @@ class Profiles extends \Zotlabs\Web\Controller {
`tv` = '%s',
`film` = '%s',
`romance` = '%s',
- `work` = '%s',
+ `employment` = '%s',
`education` = '%s',
`hide_friends` = %d
WHERE `id` = %d AND `uid` = %d",
@@ -584,13 +585,13 @@ class Profiles extends \Zotlabs\Web\Controller {
if($is_default) {
// reload the info for the sidebar widget - why does this not work?
profile_load($a,$channel['channel_address']);
- proc_run('php','include/directory.php',local_channel());
+ \Zotlabs\Daemon\Master::Summon(array('Directory',local_channel()));
}
}
}
- function get() {
+ function get() {
$o = '';
@@ -601,7 +602,7 @@ class Profiles extends \Zotlabs\Web\Controller {
return;
}
- require_once('include/identity.php');
+ require_once('include/channel.php');
$profile_fields_basic = get_profile_fields_basic();
$profile_fields_advanced = get_profile_fields_advanced();
@@ -625,12 +626,7 @@ class Profiles extends \Zotlabs\Web\Controller {
return;
}
- require_once('include/profile_selectors.php');
-
-
$editselect = 'none';
- // if(feature_enabled(local_channel(),'richtext'))
- // $editselect = 'textareas';
\App::$page['htmlhead'] .= replace_macros(get_markup_template('profed_head.tpl'), array(
'$baseurl' => z_root(),
@@ -714,7 +710,7 @@ class Profiles extends \Zotlabs\Web\Controller {
'$is_default' => $is_default,
'$default' => t('This is your default profile.') . EOL . translate_scope(map_scope($channel['channel_r_profile'])),
'$advanced' => $advanced,
- '$name' => array('name', t('Your full name'), $r[0]['name'], t('Required'), '*'),
+ '$name' => array('name', t('Your full name'), $r[0]['fullname'], t('Required'), '*'),
'$pdesc' => array('pdesc', t('Title/Description'), $r[0]['pdesc']),
'$dob' => dob($r[0]['dob']),
'$hide_friends' => $hide_friends,
@@ -727,7 +723,7 @@ class Profiles extends \Zotlabs\Web\Controller {
'$gender_min' => gender_selector_min($r[0]['gender']),
'$marital' => marital_selector($r[0]['marital']),
'$marital_min' => marital_selector_min($r[0]['marital']),
- '$with' => array('with', t("Who (if applicable)"), $r[0]['with'], t('Examples: cathy123, Cathy Williams, cathy@example.com')),
+ '$with' => array('with', t("Who (if applicable)"), $r[0]['partner'], t('Examples: cathy123, Cathy Williams, cathy@example.com')),
'$howlong' => array('howlong', t('Since (date)'), ($r[0]['howlong'] === NULL_DATE ? '' : datetime_convert('UTC',date_default_timezone_get(),$r[0]['howlong']))),
'$sexual' => sexpref_selector($r[0]['sexual']),
'$sexual_min' => sexpref_selector_min($r[0]['sexual']),
@@ -745,7 +741,7 @@ class Profiles extends \Zotlabs\Web\Controller {
'$film' => array('film', t('Film/Dance/Culture/Entertainment'), $r[0]['film']),
'$interest' => array('interest', t('Hobbies/Interests'), $r[0]['interest']),
'$romance' => array('romance',t('Love/Romance'), $r[0]['romance']),
- '$work' => array('work', t('Work/Employment'), $r[0]['work']),
+ '$work' => array('work', t('Work/Employment'), $r[0]['employment']),
'$education' => array('education', t('School/Education'), $r[0]['education']),
'$contact' => array('contact', t('Contact information and social networks'), $r[0]['contact']),
'$channels' => array('channels', t('My other channels'), $r[0]['channels']),
@@ -761,7 +757,7 @@ class Profiles extends \Zotlabs\Web\Controller {
$r = q("SELECT * FROM `profile` WHERE `uid` = %d",
local_channel());
- if(count($r)) {
+ if($r) {
$tpl = get_markup_template('profile_entry.tpl');
foreach($r as $rr) {
@@ -782,10 +778,7 @@ class Profiles extends \Zotlabs\Web\Controller {
'$cr_new' => t('Create New'),
'$cr_new_link' => 'profiles/new?t=' . get_form_security_token("profile_new"),
'$profiles' => $profiles
- ));
-
-
-
+ ));
}
return $o;
diff --git a/Zotlabs/Module/Profperm.php b/Zotlabs/Module/Profperm.php
index 94267aaac..33e9d1ece 100644
--- a/Zotlabs/Module/Profperm.php
+++ b/Zotlabs/Module/Profperm.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/Contact.php');
+
require_once('include/photos.php');
diff --git a/Zotlabs/Module/Pubsites.php b/Zotlabs/Module/Pubsites.php
index 9313a3c5a..0dda08e6d 100644
--- a/Zotlabs/Module/Pubsites.php
+++ b/Zotlabs/Module/Pubsites.php
@@ -28,10 +28,11 @@ class Pubsites extends \Zotlabs\Web\Controller {
if($ret['success']) {
$j = json_decode($ret['body'],true);
if($j) {
- $o .= '<table class="table table-striped table-hover"><tr><td>' . t('Hub URL') . '</td><td>' . t('Access Type') . '</td><td>' . t('Registration Policy') . '</td><td colspan="2">' . t('Ratings') . '</td></tr>';
+ $o .= '<table class="table table-striped table-hover"><tr><td>' . t('Hub URL') . '</td><td>' . t('Access Type') . '</td><td>' . t('Registration Policy') . '</td><td>' . t('Stats') . '</td><td>' . t('Software') . '</td><td colspan="2">' . t('Ratings') . '</td></tr>';
if($j['sites']) {
foreach($j['sites'] as $jj) {
- if($jj['project'] !== \Zotlabs\Project\System::get_platform_name())
+ $m = parse_url($jj['url']);
+ if(strpos($jj['project'],\Zotlabs\Lib\System::get_platform_name()) === false)
continue;
$host = strtolower(substr($jj['url'],strpos($jj['url'],'://')+3));
$rate_links = ((local_channel()) ? '<td><a href="rate?f=&target=' . $host . '" class="btn-btn-default"><i class="fa fa-check-square-o"></i> ' . t('Rate') . '</a></td>' : '');
@@ -43,7 +44,7 @@ class Pubsites extends \Zotlabs\Web\Controller {
$location = '<br />&nbsp;';
}
$urltext = str_replace(array('https://'), '', $jj['url']);
- $o .= '<tr><td><a href="'. (($jj['sellpage']) ? $jj['sellpage'] : $jj['url'] . '/register' ) . '" ><i class="fa fa-link"></i> ' . $urltext . '</a>' . $location . '</td><td>' . $jj['access'] . '</td><td>' . $jj['register'] . '</td><td><a href="ratings/' . $host . '" class="btn-btn-default"><i class="fa fa-eye"></i> ' . t('View') . '</a></td>' . $rate_links . '</tr>';
+ $o .= '<tr><td><a href="'. (($jj['sellpage']) ? $jj['sellpage'] : $jj['url'] . '/register' ) . '" ><i class="fa fa-link"></i> ' . $urltext . '</a>' . $location . '</td><td>' . $jj['access'] . '</td><td>' . $jj['register'] . '</td><td>' . '<a target="stats" href="https://hubchart-tarine.rhcloud.com/hub.jsp?hubFqdn=' . $m['host'] . '"><i class="fa fa-area-chart"></i></a></td><td>' . ucwords($jj['project']) . '</td><td><a href="ratings/' . $host . '" class="btn-btn-default"><i class="fa fa-eye"></i> ' . t('View') . '</a></td>' . $rate_links . '</tr>';
}
}
diff --git a/Zotlabs/Module/Pubstream.php b/Zotlabs/Module/Pubstream.php
index adc16e6e6..312be7718 100644
--- a/Zotlabs/Module/Pubstream.php
+++ b/Zotlabs/Module/Pubstream.php
@@ -12,7 +12,7 @@ class Pubstream extends \Zotlabs\Web\Controller {
$_SESSION['loadtime'] = datetime_convert();
- if(get_config('system','block_public') && (! get_account_id()) && (! remote_channel())) {
+ if(observer_prohibited(true)) {
return login();
}
@@ -71,7 +71,7 @@ class Pubstream extends \Zotlabs\Web\Controller {
$pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']), intval(\App::$pager['start']));
}
- require_once('include/identity.php');
+ require_once('include/channel.php');
require_once('include/security.php');
if(get_config('system','site_firehose')) {
diff --git a/Zotlabs/Module/Randprof.php b/Zotlabs/Module/Randprof.php
index 86b25c22a..dc2e925fe 100644
--- a/Zotlabs/Module/Randprof.php
+++ b/Zotlabs/Module/Randprof.php
@@ -6,7 +6,6 @@ namespace Zotlabs\Module;
class Randprof extends \Zotlabs\Web\Controller {
function init() {
- require_once('include/Contact.php');
$x = random_profile();
if($x)
goaway(chanlink_url($x));
diff --git a/Zotlabs/Module/Rate.php b/Zotlabs/Module/Rate.php
index e2c05b6d4..da23b840e 100644
--- a/Zotlabs/Module/Rate.php
+++ b/Zotlabs/Module/Rate.php
@@ -102,14 +102,12 @@ class Rate extends \Zotlabs\Web\Controller {
}
if($record) {
- proc_run('php','include/ratenotif.php','rating',$record);
+ \Zotlabs\Daemon\Master::Summon(array('Ratenotif','rating',$record));
}
}
-
-
- function get() {
+ function get() {
if(! local_channel()) {
notice( t('Permission denied.') . EOL);
diff --git a/Zotlabs/Module/Ratings.php b/Zotlabs/Module/Ratings.php
index 802bbfec2..969fb5015 100644
--- a/Zotlabs/Module/Ratings.php
+++ b/Zotlabs/Module/Ratings.php
@@ -8,7 +8,7 @@ class Ratings extends \Zotlabs\Web\Controller {
function init() {
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
return;
}
@@ -80,9 +80,9 @@ class Ratings extends \Zotlabs\Web\Controller {
- function get() {
+ function get() {
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
notice( t('Public access denied.') . EOL);
return;
}
diff --git a/Zotlabs/Module/React.php b/Zotlabs/Module/React.php
new file mode 100644
index 000000000..ed4f87e7e
--- /dev/null
+++ b/Zotlabs/Module/React.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace Zotlabs\Module;
+
+
+class React extends \Zotlabs\Web\Controller {
+
+ function get() {
+ if(! local_channel())
+ return;
+
+ $postid = $_REQUEST['postid'];
+
+ if(! $postid)
+ return;
+
+ $emoji = $_REQUEST['emoji'];
+ if($_REQUEST['emoji']) {
+
+ $i = q("select * from item where id = %d and uid = %d",
+ intval($postid),
+ intval(local_channel())
+ );
+
+ if(! $i)
+ return;
+
+ $channel = \App::get_channel();
+
+ $n = array();
+ $n['aid'] = $channel['channel_account_id'];
+ $n['uid'] = $channel['channel_id'];
+ $n['item_origin'] = true;
+ $n['parent'] = $postid;
+ $n['parent_mid'] = $i[0]['mid'];
+ $n['mid'] = item_message_id();
+ $n['verb'] = ACTIVITY_REACT . '#' . $emoji;
+ $n['body'] = "\n\n[zmg=32x32]" . z_root() . '/images/emoji/' . $emoji . '.png[/zmg]' . "\n\n";
+ $n['author_xchan'] = $channel['channel_hash'];
+
+ $x = item_store($n);
+ if($x['success']) {
+ $nid = $x['item_id'];
+ \Zotlabs\Daemon\Master::Summon(array('Notifier','like',$nid));
+ }
+
+ }
+
+ }
+
+} \ No newline at end of file
diff --git a/Zotlabs/Module/Regdir.php b/Zotlabs/Module/Regdir.php
index 65f8daf67..48a7cc16d 100644
--- a/Zotlabs/Module/Regdir.php
+++ b/Zotlabs/Module/Regdir.php
@@ -60,14 +60,11 @@ class Regdir extends \Zotlabs\Web\Controller {
json_return_and_die($result);
}
- $f = zot_finger('[system]@' . $m['host']);
- if($f['success']) {
- $j = json_decode($f['body'],true);
- if($j['success'] && $j['guid']) {
- $x = import_xchan($j);
- if($x['success']) {
- $result['success'] = true;
- }
+ $j = \Zotlabs\Zot\Finger::run('[system]@' . $m['host']);
+ if($j['success'] && $j['guid']) {
+ $x = import_xchan($j);
+ if($x['success']) {
+ $result['success'] = true;
}
}
diff --git a/Zotlabs/Module/Register.php b/Zotlabs/Module/Register.php
index ca3f33238..7cd1ee501 100644
--- a/Zotlabs/Module/Register.php
+++ b/Zotlabs/Module/Register.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
class Register extends \Zotlabs\Web\Controller {
diff --git a/Zotlabs/Module/Removeaccount.php b/Zotlabs/Module/Removeaccount.php
index da496dfad..39e06bb7f 100644
--- a/Zotlabs/Module/Removeaccount.php
+++ b/Zotlabs/Module/Removeaccount.php
@@ -36,17 +36,12 @@ class Removeaccount extends \Zotlabs\Web\Controller {
}
}
- require_once('include/Contact.php');
-
$global_remove = intval($_POST['global']);
- account_remove($account_id,true);
-
+ account_remove($account_id, 1 - $global_remove);
}
-
-
-
- function get() {
+
+ function get() {
if(! local_channel())
goaway(z_root());
diff --git a/Zotlabs/Module/Removeme.php b/Zotlabs/Module/Removeme.php
index 9b634672a..e611d8112 100644
--- a/Zotlabs/Module/Removeme.php
+++ b/Zotlabs/Module/Removeme.php
@@ -35,8 +35,6 @@ class Removeme extends \Zotlabs\Web\Controller {
}
}
- require_once('include/Contact.php');
-
$global_remove = intval($_POST['global']);
channel_remove(local_channel(),1 - $global_remove,true);
@@ -44,8 +42,7 @@ class Removeme extends \Zotlabs\Web\Controller {
}
-
- function get() {
+ function get() {
if(! local_channel())
goaway(z_root());
diff --git a/Zotlabs/Module/Rmagic.php b/Zotlabs/Module/Rmagic.php
index bcdbf6c90..26b0c46a6 100644
--- a/Zotlabs/Module/Rmagic.php
+++ b/Zotlabs/Module/Rmagic.php
@@ -24,7 +24,7 @@ class Rmagic extends \Zotlabs\Web\Controller {
}
}
- function post() {
+ function post() {
$address = trim($_REQUEST['address']);
@@ -34,13 +34,13 @@ class Rmagic extends \Zotlabs\Web\Controller {
try {
require_once('library/openid/openid.php');
- $openid = new LightOpenID(z_root());
+ $openid = new \LightOpenID(z_root());
$openid->identity = $address;
$openid->returnUrl = z_root() . '/openid';
$openid->required = array('namePerson/friendly', 'namePerson');
$openid->optional = array('namePerson/first','media/image/aspect11','media/image/default');
goaway($openid->authUrl());
- } catch (Exception $e) {
+ } catch (\Exception $e) {
notice( t('We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID.').'<br /><br >'. t('The error message was:').' '.$e->getMessage());
}
@@ -82,7 +82,7 @@ class Rmagic extends \Zotlabs\Web\Controller {
}
- function get() {
+ function get() {
$o = replace_macros(get_markup_template('rmagic.tpl'),array(
'$title' => t('Remote Authentication'),
diff --git a/Zotlabs/Module/Rsd_xml.php b/Zotlabs/Module/Rsd_xml.php
index 06af39ad1..e5059834b 100644
--- a/Zotlabs/Module/Rsd_xml.php
+++ b/Zotlabs/Module/Rsd_xml.php
@@ -6,7 +6,7 @@ class Rsd_xml extends \Zotlabs\Web\Controller {
function init() {
header ("Content-Type: text/xml");
echo replace_macros(get_markup_template('rsd.tpl'),array(
- '$project' => \Zotlabs\Project\System::get_platform_name(),
+ '$project' => \Zotlabs\Lib\System::get_platform_name(),
'$baseurl' => z_root(),
'$apipath' => z_root() . '/api/'
));
diff --git a/Zotlabs/Module/Search.php b/Zotlabs/Module/Search.php
index 9941ebbd2..402a27d40 100644
--- a/Zotlabs/Module/Search.php
+++ b/Zotlabs/Module/Search.php
@@ -79,7 +79,7 @@ class Search extends \Zotlabs\Web\Controller {
return $o;
if($tag) {
- $sql_extra = sprintf(" AND `item`.`id` IN (select `oid` from term where otype = %d and type in ( %d , %d) and term = '%s') ",
+ $sql_extra = sprintf(" AND `item`.`id` IN (select `oid` from term where otype = %d and ttype in ( %d , %d) and term = '%s') ",
intval(TERM_OBJ_POST),
intval(TERM_HASHTAG),
intval(TERM_COMMUNITYTAG),
@@ -139,7 +139,7 @@ class Search extends \Zotlabs\Web\Controller {
$item_normal = item_normal();
$pub_sql = public_permissions_sql($observer_hash);
- require_once('include/identity.php');
+ require_once('include/channel.php');
$sys = get_sys_channel();
diff --git a/Zotlabs/Module/Search_ac.php b/Zotlabs/Module/Search_ac.php
index 78bcf374d..4e936d97b 100644
--- a/Zotlabs/Module/Search_ac.php
+++ b/Zotlabs/Module/Search_ac.php
@@ -46,7 +46,7 @@ class Search_ac extends \Zotlabs\Web\Controller {
}
}
- $r = q("select distinct term, tid, url from term where type in ( %d, %d ) $tag_sql_extra group by term order by term asc",
+ $r = q("select distinct term, tid, url from term where ttype in ( %d, %d ) $tag_sql_extra group by term order by term asc",
intval(TERM_HASHTAG),
intval(TERM_COMMUNITYTAG)
);
diff --git a/Zotlabs/Module/Settings.php b/Zotlabs/Module/Settings.php
index a6293e842..875004fae 100644
--- a/Zotlabs/Module/Settings.php
+++ b/Zotlabs/Module/Settings.php
@@ -78,7 +78,7 @@ class Settings extends \Zotlabs\Web\Controller {
$r = q("UPDATE clients SET
client_id='%s',
pw='%s',
- name='%s',
+ clname='%s',
redirect_uri='%s',
icon='%s',
uid=%d
@@ -91,7 +91,7 @@ class Settings extends \Zotlabs\Web\Controller {
intval(local_channel()),
dbesc($key));
} else {
- $r = q("INSERT INTO clients (client_id, pw, name, redirect_uri, icon, uid)
+ $r = q("INSERT INTO clients (client_id, pw, clname, redirect_uri, icon, uid)
VALUES ('%s','%s','%s','%s','%s',%d)",
dbesc($key),
dbesc($secret),
@@ -337,7 +337,7 @@ class Settings extends \Zotlabs\Web\Controller {
}
$hide_presence = 1 - (intval($role_permissions['online']));
if($role_permissions['default_collection']) {
- $r = q("select hash from groups where uid = %d and name = '%s' limit 1",
+ $r = q("select hash from groups where uid = %d and gname = '%s' limit 1",
intval(local_channel()),
dbesc( t('Friends') )
);
@@ -345,7 +345,7 @@ class Settings extends \Zotlabs\Web\Controller {
require_once('include/group.php');
group_add(local_channel(), t('Friends'));
group_add_member(local_channel(),t('Friends'),$channel['channel_hash']);
- $r = q("select hash from groups where uid = %d and name = '%s' limit 1",
+ $r = q("select hash from groups where uid = %d and gname = '%s' limit 1",
intval(local_channel()),
dbesc( t('Friends') )
);
@@ -483,7 +483,7 @@ class Settings extends \Zotlabs\Web\Controller {
if($username != $channel['channel_name']) {
$name_change = true;
- require_once('include/identity.php');
+ require_once('include/channel.php');
$err = validate_channelname($username);
if($err) {
notice($err);
@@ -537,13 +537,13 @@ class Settings extends \Zotlabs\Web\Controller {
dbesc(datetime_convert()),
dbesc($channel['channel_hash'])
);
- $r = q("update profile set name = '%s' where uid = %d and is_default = 1",
+ $r = q("update profile set fullname = '%s' where uid = %d and is_default = 1",
dbesc($username),
intval($channel['channel_id'])
);
}
- proc_run('php','include/directory.php',local_channel());
+ \Zotlabs\Daemon\Master::Summon(array('Directory',local_channel()));
build_sync_packet();
@@ -562,7 +562,7 @@ class Settings extends \Zotlabs\Web\Controller {
- function get() {
+ function get() {
$o = '';
nav_set_selected('settings');
@@ -615,7 +615,7 @@ class Settings extends \Zotlabs\Web\Controller {
'$title' => t('Add application'),
'$submit' => t('Update'),
'$cancel' => t('Cancel'),
- '$name' => array('name', t('Name'), $app['name'] , ''),
+ '$name' => array('name', t('Name'), $app['clname'] , ''),
'$key' => array('key', t('Consumer Key'), $app['client_id'], ''),
'$secret' => array('secret', t('Consumer Secret'), $app['pw'], ''),
'$redirect' => array('redirect', t('Redirect'), $app['redirect_uri'], ''),
@@ -1047,7 +1047,7 @@ class Settings extends \Zotlabs\Web\Controller {
'$h_prv' => t('Security and Privacy Settings'),
'$permissions_set' => $permissions_set,
- '$server_role' => \Zotlabs\Project\System::get_server_role(),
+ '$server_role' => \Zotlabs\Lib\System::get_server_role(),
'$perms_set_msg' => t('Your permissions are already configured. Click to view/adjust'),
'$hide_presence' => array('hide_presence', t('Hide my online presence'),$hide_presence, t('Prevents displaying in your profile that you are online'), $yes_no),
@@ -1062,11 +1062,11 @@ class Settings extends \Zotlabs\Web\Controller {
'$lbl_p2macro' => t('Advanced Privacy Settings'),
- '$expire' => array('expire',t('Expire other channel content after this many days'),$expire,sprintf( t('0 or blank to use the website limit. The website expires after %d days.'),intval($sys_expire))),
+ '$expire' => array('expire',t('Expire other channel content after this many days'),$expire, t('0 or blank to use the website limit.') . ' ' . ((intval($sys_expire)) ? sprintf( t('This website expires after %d days.'),intval($sys_expire)) : t('This website does not expire imported content.')) . ' ' . t('The website limit takes precedence if lower than your limit.')),
'$maxreq' => array('maxreq', t('Maximum Friend Requests/Day:'), intval($channel['channel_max_friend_req']) , t('May reduce spam activity')),
- '$permissions' => t('Default Post Permissions'),
+ '$permissions' => t('Default Post and Publish Permissions'),
'$permdesc' => t("\x28click to open/close\x29"),
- '$aclselect' => populate_acl($perm_defaults, false, \PermissionDescription::fromDescription(t('Use my default audience setting for the type of post'))),
+ '$aclselect' => populate_acl($perm_defaults, false, \PermissionDescription::fromDescription(t('Use my default audience setting for the type of object published'))),
'$suggestme' => $suggestme,
'$group_select' => $group_select,
'$role' => array('permissions_role' , t('Channel permissions category:'), $permissions_role, '', get_roles()),
diff --git a/Zotlabs/Module/Setup.php b/Zotlabs/Module/Setup.php
index f8c14951b..c4878e217 100644
--- a/Zotlabs/Module/Setup.php
+++ b/Zotlabs/Module/Setup.php
@@ -12,7 +12,6 @@ namespace Zotlabs\Module;
/**
* @brief Initialisation for the setup module.
*
- * @param[in,out] App &$a
*/
class Setup extends \Zotlabs\Web\Controller {
@@ -54,16 +53,15 @@ class Setup extends \Zotlabs\Web\Controller {
/**
* @brief Handle the actions of the different setup steps.
*
- * @param[in,out] App &$a
*/
- function post() {
- global $db;
+
+ function post() {
switch($this->install_wizard_pass) {
case 1:
case 2:
return;
- break; // just in case return don't return :)
+ // implied break;
case 3:
$urlpath = \App::get_path();
$dbhost = trim($_POST['dbhost']);
@@ -82,39 +80,15 @@ class Setup extends \Zotlabs\Web\Controller {
$siteurl = rtrim($siteurl,'/');
require_once('include/dba/dba_driver.php');
- unset($db);
- $db = dba_factory($dbhost, $dbport, $dbuser, $dbpass, $dbdata, $dbtype, true);
+
+ $db = \DBA::dba_factory($dbhost, $dbport, $dbuser, $dbpass, $dbdata, $dbtype, true);
- if(! $db->connected) {
- echo 'Database Connect failed: ' . $db->error;
+ if(! \DBA::$dba->connected) {
+ echo 'Database Connect failed: ' . DBA::$dba->error;
killme();
- \App::$data['db_conn_failed']=true;
}
- /*if(get_db_errno()) {
- unset($db);
- $db = dba_factory($dbhost, $dbport, $dbuser, $dbpass, '', true);
-
- if(! get_db_errno()) {
- $r = q("CREATE DATABASE '%s'",
- dbesc($dbdata)
- );
- if($r) {
- unset($db);
- $db = new dba($dbhost, $dbport, $dbuser, $dbpass, $dbdata, true);
- } else {
- \App::$data['db_create_failed']=true;
- }
- } else {
- \App::$data['db_conn_failed']=true;
- return;
- }
- }*/
- //if(get_db_errno()) {
-
- //}
-
return;
- break;
+ // implied break;
case 4:
$urlpath = \App::get_path();
$dbhost = notags(trim($_POST['dbhost']));
@@ -138,10 +112,12 @@ class Setup extends \Zotlabs\Web\Controller {
}
}
- // connect to db
- $db = dba_factory($dbhost, $dbport, $dbuser, $dbpass, $dbdata, $dbtype, true);
-
- if(! $db->connected) {
+ if(! \DBA::$dba->connected) {
+ // connect to db
+ $db = \DBA::dba_factory($dbhost, $dbport, $dbuser, $dbpass, $dbdata, $dbtype, true);
+ }
+
+ if(! \DBA::$dba->connected) {
echo 'CRITICAL: DB not connected.';
killme();
}
@@ -175,6 +151,8 @@ class Setup extends \Zotlabs\Web\Controller {
\App::$data['db_installed'] = true;
return;
+ // implied break;
+ default:
break;
}
}
@@ -191,11 +169,10 @@ class Setup extends \Zotlabs\Web\Controller {
*
* Depending on the state we are currently in it returns different content.
*
- * @param App &$a
* @return string parsed HTML output
*/
- function get() {
- global $db;
+
+ function get() {
$o = '';
$wizard_status = '';
@@ -228,7 +205,7 @@ class Setup extends \Zotlabs\Web\Controller {
$txt .= "<pre>".\App::$data['db_failed'] . "</pre>". EOL ;
$db_return_text .= $txt;
}
- if($db && $db->connected) {
+ if(\DBA::$dba && \DBA::$dba->connected) {
$r = q("SELECT COUNT(*) as `total` FROM `account`");
if($r && count($r) && $r[0]['total']) {
$tpl = get_markup_template('install.tpl');
@@ -407,8 +384,8 @@ class Setup extends \Zotlabs\Web\Controller {
function check_php(&$phpath, &$checks) {
$help = '';
- if(version_compare(PHP_VERSION, '5.4') < 0) {
- $help .= t('PHP version 5.4 or greater is required.');
+ if(version_compare(PHP_VERSION, '5.5') < 0) {
+ $help .= t('PHP version 5.5 or greater is required.');
$this->check_add($checks, t('PHP version'), false, false, $help);
}
@@ -598,7 +575,7 @@ class Setup extends \Zotlabs\Web\Controller {
if(! is_writable(TEMPLATE_BUILD_PATH) ) {
$status = false;
$help = t('Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering.') .EOL;
- $help .= sprintf( t('In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder.'), TEMPLATE_BUILD_PATH) . EOL;
+ $help .= sprintf( t('In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder.'), TEMPLATE_BUILD_PATH) . EOL;
$help .= t('Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder.').EOL;
$help .= sprintf( t('Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains.'), TEMPLATE_BUILD_PATH) . EOL;
}
@@ -698,12 +675,12 @@ class Setup extends \Zotlabs\Web\Controller {
function load_database($db) {
- $str = file_get_contents($db->get_install_script());
+ $str = file_get_contents(\DBA::$dba->get_install_script());
$arr = explode(';',$str);
$errors = false;
foreach($arr as $a) {
if(strlen(trim($a))) {
- $r = @$db->q(trim($a));
+ $r = dbq(trim($a));
if(! $r) {
$errors .= t('Errors encountered creating database tables.') . $a . EOL;
}
@@ -734,7 +711,7 @@ class Setup extends \Zotlabs\Web\Controller {
set_config('system','curl_ssl_ciphers','ALL:!eNULL');
// Create a system channel
- require_once ('include/identity.php');
+ require_once ('include/channel.php');
create_sys_channel();
$baseurl = z_root();
diff --git a/Zotlabs/Module/Share.php b/Zotlabs/Module/Share.php
index 73db01657..fcc2486ba 100644
--- a/Zotlabs/Module/Share.php
+++ b/Zotlabs/Module/Share.php
@@ -48,7 +48,7 @@ class Share extends \Zotlabs\Web\Controller {
$is_photo = (($r[0]['obj_type'] === ACTIVITY_OBJ_PHOTO) ? true : false);
if($is_photo) {
- $object = json_decode($r[0]['object'],true);
+ $object = json_decode($r[0]['obj'],true);
$photo_bb = $object['body'];
}
diff --git a/Zotlabs/Module/Sharedwithme.php b/Zotlabs/Module/Sharedwithme.php
index 8eaa47dba..25bc7dba3 100644
--- a/Zotlabs/Module/Sharedwithme.php
+++ b/Zotlabs/Module/Sharedwithme.php
@@ -46,7 +46,7 @@ class Sharedwithme extends \Zotlabs\Web\Controller {
}
//list files
- $r = q("SELECT id, uid, object, item_unseen FROM item WHERE verb = '%s' AND obj_type = '%s' AND uid = %d AND owner_xchan != '%s'",
+ $r = q("SELECT id, uid, obj, item_unseen FROM item WHERE verb = '%s' AND obj_type = '%s' AND uid = %d AND owner_xchan != '%s'",
dbesc(ACTIVITY_POST),
dbesc(ACTIVITY_OBJ_FILE),
intval(local_channel()),
@@ -59,7 +59,7 @@ class Sharedwithme extends \Zotlabs\Web\Controller {
if($r) {
foreach($r as $rr) {
- $object = json_decode($rr['object'],true);
+ $object = json_decode($rr['obj'],true);
$item = array();
$item['id'] = $rr['id'];
diff --git a/Zotlabs/Module/Siteinfo.php b/Zotlabs/Module/Siteinfo.php
index c65277004..41f6e9f0b 100644
--- a/Zotlabs/Module/Siteinfo.php
+++ b/Zotlabs/Module/Siteinfo.php
@@ -16,10 +16,10 @@ class Siteinfo extends \Zotlabs\Web\Controller {
function get() {
if(! get_config('system','hidden_version_siteinfo')) {
- $version = sprintf( t('Version %s'), \Zotlabs\Project\System::get_project_version());
+ $version = sprintf( t('Version %s'), \Zotlabs\Lib\System::get_project_version());
if(@is_dir('.git') && function_exists('shell_exec')) {
$commit = @shell_exec('git log -1 --format="%h"');
- $tag = \Zotlabs\Project\System::get_std_version(); // @shell_exec('git describe --tags --abbrev=0');
+ $tag = \Zotlabs\Lib\System::get_std_version(); // @shell_exec('git describe --tags --abbrev=0');
}
if(! isset($commit) || strlen($commit) > 16)
$commit = '';
diff --git a/Zotlabs/Module/Subthread.php b/Zotlabs/Module/Subthread.php
index 16a011a40..0226664d7 100644
--- a/Zotlabs/Module/Subthread.php
+++ b/Zotlabs/Module/Subthread.php
@@ -144,7 +144,7 @@ class Subthread extends \Zotlabs\Web\Controller {
$arr['verb'] = $activity;
$arr['obj_type'] = $objtype;
- $arr['object'] = $obj;
+ $arr['obj'] = $obj;
$arr['allow_cid'] = $item['allow_cid'];
$arr['allow_gid'] = $item['allow_gid'];
diff --git a/Zotlabs/Module/Tagger.php b/Zotlabs/Module/Tagger.php
index 879cf3dbb..0a46cf56d 100644
--- a/Zotlabs/Module/Tagger.php
+++ b/Zotlabs/Module/Tagger.php
@@ -124,14 +124,14 @@ class Tagger extends \Zotlabs\Web\Controller {
$arr['tgt_type'] = $targettype;
$arr['target'] = $target;
$arr['obj_type'] = $objtype;
- $arr['object'] = $obj;
+ $arr['obj'] = $obj;
$arr['parent_mid'] = $item['mid'];
store_item_tag($item['uid'],$item['id'],TERM_OBJ_POST,TERM_COMMUNITYTAG,$term,$tagid);
$ret = post_activity_item($arr);
if($ret['success'])
- proc_run('php','include/notifier.php','tag',$ret['activity']['id']);
+ \Zotlabs\Daemon\Master::Summon(array('Notifier','tag',$ret['activity']['id']));
killme();
diff --git a/Zotlabs/Module/Tagrm.php b/Zotlabs/Module/Tagrm.php
index 81ae30aa5..42aa6e90f 100644
--- a/Zotlabs/Module/Tagrm.php
+++ b/Zotlabs/Module/Tagrm.php
@@ -54,7 +54,7 @@ class Tagrm extends \Zotlabs\Web\Controller {
- function get() {
+ function get() {
if(! local_channel()) {
goaway(z_root() . '/' . $_SESSION['photo_return']);
diff --git a/Zotlabs/Module/Tasks.php b/Zotlabs/Module/Tasks.php
index ab05f8be9..6d0a92d91 100644
--- a/Zotlabs/Module/Tasks.php
+++ b/Zotlabs/Module/Tasks.php
@@ -45,7 +45,7 @@ class Tasks extends \Zotlabs\Web\Controller {
if((argc() > 2) && (argv(1) === 'complete') && intval(argv(2))) {
$ret = array('success' => false);
- $r = q("select * from event where `type` = 'task' and uid = %d and id = %d limit 1",
+ $r = q("select * from event where `etype` = 'task' and uid = %d and id = %d limit 1",
intval(local_channel()),
intval(argv(2))
);
@@ -80,9 +80,9 @@ class Tasks extends \Zotlabs\Web\Controller {
$event['account'] = $channel['channel_account_id'];
$event['uid'] = $channel['channel_id'];
$event['event_xchan'] = $channel['channel_hash'];
- $event['type'] = 'task';
+ $event['etype'] = 'task';
$event['nofinish'] = true;
- $event['created'] = $event['edited'] = $event['start'] = datetime_convert();
+ $event['created'] = $event['edited'] = $event['dtstart'] = datetime_convert();
$event['adjust'] = 1;
$event['allow_cid'] = '<' . $channel['channel_hash'] . '>';
$event['summary'] = escape_tags($_REQUEST['summary']);
@@ -92,21 +92,13 @@ class Tasks extends \Zotlabs\Web\Controller {
else
$x = array('success' => false);
json_return_and_die($x);
- }
-
-
+ }
}
-
-
-
-
- function get() {
-
+ function get() {
if(! local_channel())
return;
-
-
+
return '';
}
}
diff --git a/Zotlabs/Module/Thing.php b/Zotlabs/Module/Thing.php
index e95ec53f6..65fc0588e 100644
--- a/Zotlabs/Module/Thing.php
+++ b/Zotlabs/Module/Thing.php
@@ -7,7 +7,7 @@ namespace Zotlabs\Module;
require_once('include/items.php');
require_once('include/security.php');
-require_once('include/contact_selectors.php');
+require_once('include/selectors.php');
require_once('include/acl_selectors.php');
@@ -26,7 +26,7 @@ class Thing extends \Zotlabs\Web\Controller {
$verb = escape_tags($_REQUEST['verb']);
$activity = intval($_REQUEST['activity']);
$profile_guid = escape_tags($_REQUEST['profile_assign']);
- $url = $_REQUEST['link'];
+ $url = $_REQUEST['url'];
$photo = $_REQUEST['img'];
$hash = random_string();
@@ -212,7 +212,7 @@ class Thing extends \Zotlabs\Web\Controller {
$arr['verb'] = $verb;
$arr['obj_type'] = $objtype;
- $arr['object'] = $obj;
+ $arr['obj'] = $obj;
if(! $profile['is_default']) {
$arr['item_private'] = true;
@@ -235,7 +235,7 @@ class Thing extends \Zotlabs\Web\Controller {
}
- function get() {
+ function get() {
// @FIXME one problem with things is we can't share them unless we provide the channel in the url
// so we can definitively lookup the owner.
diff --git a/Zotlabs/Module/Uexport.php b/Zotlabs/Module/Uexport.php
index ada7e0986..d48f96d76 100644
--- a/Zotlabs/Module/Uexport.php
+++ b/Zotlabs/Module/Uexport.php
@@ -11,7 +11,7 @@ class Uexport extends \Zotlabs\Web\Controller {
if(argc() > 1) {
$channel = \App::get_channel();
- require_once('include/identity.php');
+ require_once('include/channel.php');
if(argc() > 1 && intval(argv(1)) > 1900) {
$year = intval(argv(1));
diff --git a/Zotlabs/Module/Viewconnections.php b/Zotlabs/Module/Viewconnections.php
index 726ef043b..ea478f92a 100644
--- a/Zotlabs/Module/Viewconnections.php
+++ b/Zotlabs/Module/Viewconnections.php
@@ -1,23 +1,22 @@
<?php
namespace Zotlabs\Module;
-require_once('include/contact_selectors.php');
-require_once('include/Contact.php');
+require_once('include/selectors.php');
class Viewconnections extends \Zotlabs\Web\Controller {
function init() {
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
return;
}
if(argc() > 1)
profile_load($a,argv(1));
}
- function get() {
+ function get() {
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
notice( t('Public access denied.') . EOL);
return;
}
diff --git a/Zotlabs/Module/Wall_attach.php b/Zotlabs/Module/Wall_attach.php
index 5bdecfa75..9a1019ddb 100644
--- a/Zotlabs/Module/Wall_attach.php
+++ b/Zotlabs/Module/Wall_attach.php
@@ -2,7 +2,7 @@
namespace Zotlabs\Module;
require_once('include/attach.php');
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/photos.php');
diff --git a/Zotlabs/Module/Wall_upload.php b/Zotlabs/Module/Wall_upload.php
index fff3ed03a..3868cb14e 100644
--- a/Zotlabs/Module/Wall_upload.php
+++ b/Zotlabs/Module/Wall_upload.php
@@ -2,7 +2,7 @@
namespace Zotlabs\Module;
require_once('include/photo/photo_driver.php');
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/photos.php');
diff --git a/Zotlabs/Module/Webpages.php b/Zotlabs/Module/Webpages.php
index d8adb55b2..bb8d454c8 100644
--- a/Zotlabs/Module/Webpages.php
+++ b/Zotlabs/Module/Webpages.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/conversation.php');
require_once('include/acl_selectors.php');
require_once('include/PermissionDescription.php');
diff --git a/Zotlabs/Module/Wiki.php b/Zotlabs/Module/Wiki.php
new file mode 100644
index 000000000..1e6446904
--- /dev/null
+++ b/Zotlabs/Module/Wiki.php
@@ -0,0 +1,424 @@
+<?php
+
+namespace Zotlabs\Module;/** @file */
+
+class Wiki extends \Zotlabs\Web\Controller {
+
+ function init() {
+ // Determine which channel's wikis to display to the observer
+ $nick = null;
+ if (argc() > 1)
+ $nick = argv(1); // if the channel name is in the URL, use that
+ if (!$nick && local_channel()) { // if no channel name was provided, assume the current logged in channel
+ $channel = \App::get_channel();
+ if ($channel && $channel['channel_address']) {
+ $nick = $channel['channel_address'];
+ goaway(z_root() . '/wiki/' . $nick);
+ }
+ }
+ if (!$nick) {
+ notice(t('You must be logged in to see this page.') . EOL);
+ goaway('/login');
+ }
+ }
+
+ function get() {
+ require_once('include/wiki.php');
+ require_once('include/acl_selectors.php');
+ // TODO: Combine the interface configuration into a unified object
+ // Something like $interface = array('new_page_button' => false, 'new_wiki_button' => false, ...)
+ $wiki_owner = false;
+ $showNewWikiButton = false;
+ $showCommitMsg = false;
+ $hidePageHistory = false;
+ $pageHistory = array();
+ $local_observer = null;
+ $resource_id = '';
+
+ // init() should have forced the URL to redirect to /wiki/channel so assume argc() > 1
+ $nick = argv(1);
+ $channel = get_channel_by_nick($nick); // The channel who owns the wikis being viewed
+ if(! $channel) {
+ notice('Invalid channel' . EOL);
+ goaway('/' . argv(0));
+ }
+ // Determine if the observer is the channel owner so the ACL dialog can be populated
+ if (local_channel() === intval($channel['channel_id'])) {
+ $local_observer = \App::get_channel();
+ $wiki_owner = true;
+
+ // Obtain the default permission settings of the channel
+ $channel_acl = array(
+ 'allow_cid' => $local_observer['channel_allow_cid'],
+ 'allow_gid' => $local_observer['channel_allow_gid'],
+ 'deny_cid' => $local_observer['channel_deny_cid'],
+ 'deny_gid' => $local_observer['channel_deny_gid']
+ );
+ // Initialize the ACL to the channel default permissions
+ $x = array(
+ 'lockstate' => (( $local_observer['channel_allow_cid'] ||
+ $local_observer['channel_allow_gid'] ||
+ $local_observer['channel_deny_cid'] ||
+ $local_observer['channel_deny_gid'])
+ ? 'lock' : 'unlock'),
+ 'acl' => populate_acl($channel_acl),
+ 'bang' => ''
+ );
+ } else {
+ // Not the channel owner
+ $channel_acl = $x = array();
+ }
+
+ switch (argc()) {
+ case 2:
+ // Configure page template
+ $wikiheader = t('Wiki Sandbox');
+ $content = '"# Wiki Sandbox\n\nContent you **edit** and **preview** here *will not be saved*."';
+ $hide_editor = false;
+ $showPageControls = false;
+ $showNewWikiButton = $wiki_owner;
+ $showNewPageButton = false;
+ $hidePageHistory = true;
+ $showCommitMsg = false;
+ break;
+ case 3:
+ // /wiki/channel/wiki -> No page was specified, so redirect to Home.md
+ $wikiUrlName = urlencode(argv(2));
+ goaway('/'.argv(0).'/'.argv(1).'/'.$wikiUrlName.'/Home');
+ case 4:
+ // GET /wiki/channel/wiki/page
+ // Fetch the wiki info and determine observer permissions
+ $wikiUrlName = urlencode(argv(2));
+ $pageUrlName = urlencode(argv(3));
+ $w = wiki_exists_by_name($channel['channel_id'], $wikiUrlName);
+ if(!$w['resource_id']) {
+ notice('Wiki not found' . EOL);
+ goaway('/'.argv(0).'/'.argv(1));
+ }
+ $resource_id = $w['resource_id'];
+
+ if (!$wiki_owner) {
+ // Check for observer permissions
+ $observer_hash = get_observer_hash();
+ $perms = wiki_get_permissions($resource_id, intval($channel['channel_id']), $observer_hash);
+ if(!$perms['read']) {
+ notice('Permission denied.' . EOL);
+ goaway('/'.argv(0).'/'.argv(1));
+ }
+ if($perms['write']) {
+ $wiki_editor = true;
+ } else {
+ $wiki_editor = false;
+ }
+ } else {
+ $wiki_editor = true;
+ }
+ $wikiheader = urldecode($wikiUrlName) . ': ' . urldecode($pageUrlName); // show wiki name and page
+ $p = wiki_get_page_content(array('resource_id' => $resource_id, 'pageUrlName' => $pageUrlName));
+ if(!$p['success']) {
+ notice('Error retrieving page content' . EOL);
+ goaway('/'.argv(0).'/'.argv(1).'/'.$wikiUrlName);
+ }
+ $content = ($p['content'] !== '' ? $p['content'] : '"# New page\n"');
+ $hide_editor = false;
+ $showPageControls = $wiki_editor;
+ $showNewWikiButton = $wiki_owner;
+ $showNewPageButton = $wiki_editor;
+ $hidePageHistory = false;
+ $showCommitMsg = true;
+ $pageHistory = wiki_page_history(array('resource_id' => $resource_id, 'pageUrlName' => $pageUrlName));
+ break;
+ default: // Strip the extraneous URL components
+ goaway('/'.argv(0).'/'.argv(1).'/'.$wikiUrlName.'/'.$pageUrlName);
+ }
+ // Render the Markdown-formatted page content in HTML
+ require_once('library/markdown.php');
+
+ $o .= replace_macros(get_markup_template('wiki.tpl'),array(
+ '$wikiheader' => $wikiheader,
+ '$hideEditor' => $hide_editor,
+ '$showPageControls' => $showPageControls,
+ '$showNewWikiButton'=> $showNewWikiButton,
+ '$showNewPageButton'=> $showNewPageButton,
+ '$hidePageHistory' => $hidePageHistory,
+ '$showCommitMsg' => $showCommitMsg,
+ '$channel' => $channel['channel_address'],
+ '$resource_id' => $resource_id,
+ '$page' => $pageUrlName,
+ '$lockstate' => $x['lockstate'],
+ '$acl' => $x['acl'],
+ '$bang' => $x['bang'],
+ '$content' => $content,
+ '$renderedContent' => Markdown(json_decode($content)),
+ '$wikiName' => array('wikiName', t('Enter the name of your new wiki:'), '', ''),
+ '$pageName' => array('pageName', t('Enter the name of the new page:'), '', ''),
+ '$commitMsg' => array('commitMsg', '', '', '', '', 'placeholder="(optional) Enter a custom message when saving the page..."'),
+ '$pageHistory' => $pageHistory['history']
+ ));
+ head_add_js('library/ace/ace.js'); // Ace Code Editor
+ return $o;
+ }
+
+ function post() {
+ require_once('include/wiki.php');
+
+ // /wiki/channel/preview
+ // Render mardown-formatted text in HTML for preview
+ if((argc() > 2) && (argv(2) === 'preview')) {
+ $content = $_POST['content'];
+ require_once('library/markdown.php');
+ $html = purify_html(Markdown($content));
+ json_return_and_die(array('html' => $html, 'success' => true));
+ }
+
+ // Create a new wiki
+ // /wiki/channel/create/wiki
+ if ((argc() > 3) && (argv(2) === 'create') && (argv(3) === 'wiki')) {
+ $nick = argv(1);
+ $channel = get_channel_by_nick($nick);
+ // Determine if observer has permission to create wiki
+ $observer_hash = get_observer_hash();
+ // Only the channel owner can create a wiki, at least until we create a
+ // more detail permissions framework
+ if (local_channel() !== intval($channel['channel_id'])) {
+ goaway('/'.argv(0).'/'.$nick.'/');
+ }
+ $wiki = array();
+ // Generate new wiki info from input name
+ $wiki['rawName'] = $_POST['wikiName'];
+ $wiki['htmlName'] = escape_tags($_POST['wikiName']);
+ $wiki['urlName'] = urlencode($_POST['wikiName']);
+ if($wiki['urlName'] === '') {
+ notice('Error creating wiki. Invalid name.');
+ goaway('/wiki');
+ }
+ // Get ACL for permissions
+ $acl = new \Zotlabs\Access\AccessList($channel);
+ $acl->set_from_array($_POST);
+ $r = wiki_create_wiki($channel, $observer_hash, $wiki, $acl);
+ if ($r['success']) {
+ $homePage = wiki_create_page('Home', $r['item']['resource_id']);
+ if(!$homePage['success']) {
+ notice('Wiki created, but error creating Home page.');
+ goaway('/wiki/'.$nick.'/'.$wiki['urlName']);
+ }
+ goaway('/wiki/'.$nick.'/'.$wiki['urlName'].'/'.$homePage['page']['urlName']);
+ } else {
+ notice('Error creating wiki');
+ goaway('/wiki');
+ }
+ }
+
+ // Delete a wiki
+ if ((argc() > 3) && (argv(2) === 'delete') && (argv(3) === 'wiki')) {
+ $nick = argv(1);
+ $channel = get_channel_by_nick($nick);
+ // Only the channel owner can delete a wiki, at least until we create a
+ // more detail permissions framework
+ if (local_channel() !== intval($channel['channel_id'])) {
+ logger('Wiki delete permission denied.' . EOL);
+ json_return_and_die(array('message' => 'Wiki delete permission denied.', 'success' => false));
+ } else {
+ /*
+ $channel = get_channel_by_nick($nick);
+ $observer_hash = get_observer_hash();
+ // Figure out who the page owner is.
+ $perms = get_all_perms(intval($channel['channel_id']), $observer_hash);
+ // TODO: Create a new permission setting for wiki analogous to webpages. Until
+ // then, use webpage permissions
+ if (!$perms['write_pages']) {
+ logger('Wiki delete permission denied.' . EOL);
+ json_return_and_die(array('success' => false));
+ }
+ */
+ }
+ $resource_id = $_POST['resource_id'];
+ $deleted = wiki_delete_wiki($resource_id);
+ if ($deleted['success']) {
+ json_return_and_die(array('message' => '', 'success' => true));
+ } else {
+ logger('Error deleting wiki: ' . $resource_id);
+ json_return_and_die(array('message' => 'Error deleting wiki', 'success' => false));
+ }
+ }
+
+ // Create a page
+ if ((argc() === 4) && (argv(2) === 'create') && (argv(3) === 'page')) {
+ $nick = argv(1);
+ $resource_id = $_POST['resource_id'];
+ // Determine if observer has permission to create a page
+ $channel = get_channel_by_nick($nick);
+ if (local_channel() !== intval($channel['channel_id'])) {
+ $observer_hash = get_observer_hash();
+ $perms = wiki_get_permissions($resource_id, intval($channel['channel_id']), $observer_hash);
+ if(!$perms['write']) {
+ logger('Wiki write permission denied. ' . EOL);
+ json_return_and_die(array('success' => false));
+ }
+ }
+ $name = $_POST['name']; //Get new page name
+ if(urlencode(escape_tags($_POST['name'])) === '') {
+ json_return_and_die(array('message' => 'Error creating page. Invalid name.', 'success' => false));
+ }
+ $page = wiki_create_page($name, $resource_id);
+ if ($page['success']) {
+ json_return_and_die(array('url' => '/'.argv(0).'/'.argv(1).'/'.$page['wiki']['urlName'].'/'.urlencode($page['page']['urlName']), 'success' => true));
+ } else {
+ logger('Error creating page');
+ json_return_and_die(array('message' => 'Error creating page.', 'success' => false));
+ }
+ }
+
+ // Fetch page list for a wiki
+ if ((argc() === 5) && (argv(2) === 'get') && (argv(3) === 'page') && (argv(4) === 'list')) {
+ $resource_id = $_POST['resource_id']; // resource_id for wiki in db
+ $channel = get_channel_by_nick(argv(1));
+ $observer_hash = get_observer_hash();
+ if (local_channel() !== intval($channel['channel_id'])) {
+ $perms = wiki_get_permissions($resource_id, intval($channel['channel_id']), $observer_hash);
+ if(!$perms['read']) {
+ logger('Wiki read permission denied.' . EOL);
+ json_return_and_die(array('pages' => null, 'message' => 'Permission denied.', 'success' => false));
+ }
+ }
+ $page_list_html = widget_wiki_pages(array(
+ 'resource_id' => $resource_id,
+ 'refresh' => true,
+ 'channel' => argv(1)));
+ json_return_and_die(array('pages' => $page_list_html, 'message' => '', 'success' => true));
+ }
+
+ // Save a page
+ if ((argc() === 4) && (argv(2) === 'save') && (argv(3) === 'page')) {
+
+ $resource_id = $_POST['resource_id'];
+ $pageUrlName = $_POST['name'];
+ $pageHtmlName = escape_tags($_POST['name']);
+ $content = $_POST['content']; //Get new content
+ $commitMsg = $_POST['commitMsg'];
+ if ($commitMsg === '') {
+ $commitMsg = 'Updated ' . $pageHtmlName;
+ }
+ $nick = argv(1);
+ $channel = get_channel_by_nick($nick);
+ // Determine if observer has permission to save content
+ if (local_channel() !== intval($channel['channel_id'])) {
+ $observer_hash = get_observer_hash();
+ $perms = wiki_get_permissions($resource_id, intval($channel['channel_id']), $observer_hash);
+ if(!$perms['write']) {
+ logger('Wiki write permission denied. ' . EOL);
+ json_return_and_die(array('success' => false));
+ }
+ }
+
+ $saved = wiki_save_page(array('resource_id' => $resource_id, 'pageUrlName' => $pageUrlName, 'content' => $content));
+ if($saved['success']) {
+ $ob = \App::get_observer();
+ $commit = wiki_git_commit(array(
+ 'commit_msg' => $commitMsg,
+ 'resource_id' => $resource_id,
+ 'observer' => $ob,
+ 'files' => array($pageUrlName.'.md')
+ ));
+ if($commit['success']) {
+ json_return_and_die(array('message' => 'Wiki git repo commit made', 'success' => true));
+ } else {
+ json_return_and_die(array('message' => 'Error making git commit','success' => false));
+ }
+ } else {
+ json_return_and_die(array('message' => 'Error saving page', 'success' => false));
+ }
+ }
+
+ // Update page history
+ // /wiki/channel/history/page
+ if ((argc() === 4) && (argv(2) === 'history') && (argv(3) === 'page')) {
+
+ $resource_id = $_POST['resource_id'];
+ $pageUrlName = $_POST['name'];
+
+ $nick = argv(1);
+ $channel = get_channel_by_nick($nick);
+ // Determine if observer has permission to read content
+ if (local_channel() !== intval($channel['channel_id'])) {
+ $observer_hash = get_observer_hash();
+ $perms = wiki_get_permissions($resource_id, intval($channel['channel_id']), $observer_hash);
+ if(!$perms['read']) {
+ logger('Wiki read permission denied.' . EOL);
+ json_return_and_die(array('historyHTML' => '', 'message' => 'Permission denied.', 'success' => false));
+ }
+ }
+ $historyHTML = widget_wiki_page_history(array(
+ 'resource_id' => $resource_id,
+ 'pageUrlName' => $pageUrlName
+ ));
+ json_return_and_die(array('historyHTML' => $historyHTML, 'message' => '', 'success' => true));
+ }
+
+ // Delete a page
+ if ((argc() === 4) && (argv(2) === 'delete') && (argv(3) === 'page')) {
+ $resource_id = $_POST['resource_id'];
+ $pageUrlName = $_POST['name'];
+ if ($pageUrlName === 'Home') {
+ json_return_and_die(array('message' => 'Cannot delete Home','success' => false));
+ }
+ // Determine if observer has permission to delete pages
+ $nick = argv(1);
+ $channel = get_channel_by_nick($nick);
+ if (local_channel() !== intval($channel['channel_id'])) {
+ $observer_hash = get_observer_hash();
+ $perms = wiki_get_permissions($resource_id, intval($channel['channel_id']), $observer_hash);
+ if(!$perms['write']) {
+ logger('Wiki write permission denied. ' . EOL);
+ json_return_and_die(array('success' => false));
+ }
+ }
+ $deleted = wiki_delete_page(array('resource_id' => $resource_id, 'pageUrlName' => $pageUrlName));
+ if($deleted['success']) {
+ $ob = \App::get_observer();
+ $commit = wiki_git_commit(array(
+ 'commit_msg' => 'Deleted ' . $pageHtmlName,
+ 'resource_id' => $resource_id,
+ 'observer' => $ob,
+ 'files' => null
+ ));
+ if($commit['success']) {
+ json_return_and_die(array('message' => 'Wiki git repo commit made', 'success' => true));
+ } else {
+ json_return_and_die(array('message' => 'Error making git commit','success' => false));
+ }
+ } else {
+ json_return_and_die(array('message' => 'Error deleting page', 'success' => false));
+ }
+ }
+
+ // Revert a page
+ if ((argc() === 4) && (argv(2) === 'revert') && (argv(3) === 'page')) {
+ $resource_id = $_POST['resource_id'];
+ $pageUrlName = $_POST['name'];
+ $commitHash = $_POST['commitHash'];
+ // Determine if observer has permission to revert pages
+ $nick = argv(1);
+ $channel = get_channel_by_nick($nick);
+ if (local_channel() !== intval($channel['channel_id'])) {
+ $observer_hash = get_observer_hash();
+ $perms = wiki_get_permissions($resource_id, intval($channel['channel_id']), $observer_hash);
+ if(!$perms['write']) {
+ logger('Wiki write permission denied.' . EOL);
+ json_return_and_die(array('success' => false));
+ }
+ }
+ $reverted = wiki_revert_page(array('commitHash' => $commitHash, 'observer' => \App::get_observer(), 'resource_id' => $resource_id, 'pageUrlName' => $pageUrlName));
+ if($reverted['success']) {
+ json_return_and_die(array('content' => $reverted['content'], 'message' => '', 'success' => true));
+ } else {
+ json_return_and_die(array('content' => '', 'message' => 'Error reverting page', 'success' => false));
+ }
+ }
+
+
+ //notice('You must be authenticated.');
+ json_return_and_die(array('message' => 'You must be authenticated.', 'success' => false));
+
+ }
+}
diff --git a/Zotlabs/Module/Zotfeed.php b/Zotlabs/Module/Zotfeed.php
index 28040149f..6b505c890 100644
--- a/Zotlabs/Module/Zotfeed.php
+++ b/Zotlabs/Module/Zotfeed.php
@@ -15,7 +15,7 @@ class Zotfeed extends \Zotlabs\Web\Controller {
if(! $mindate)
$mindate = datetime_convert('UTC','UTC', 'now - 14 days');
- if(get_config('system','block_public') && (! get_account_id()) && (! remote_channel())) {
+ if(observer_prohibited()) {
$result['message'] = 'Public access denied';
json_return_and_die($result);
}
@@ -45,8 +45,6 @@ class Zotfeed extends \Zotlabs\Web\Controller {
$result['messages'] = zot_feed($r[0]['channel_id'],$observer['xchan_hash'],array('mindate' => $mindate));
$result['success'] = true;
json_return_and_die($result);
-
-
}
}
diff --git a/Zotlabs/Project/System.php b/Zotlabs/Project/System.php
deleted file mode 100644
index f61313da0..000000000
--- a/Zotlabs/Project/System.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-namespace Zotlabs\Project;
-
-class System {
-
- static public function get_platform_name() {
- if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['platform_name'])
- return \App::$config['system']['platform_name'];
- return PLATFORM_NAME;
- }
-
- static public function get_site_name() {
- if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['sitename'])
- return \App::$config['system']['sitename'];
- return '';
- }
-
- static public function get_project_version() {
- if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['hide_version'])
- return '';
- return self::get_std_version();
- }
-
- static public function get_update_version() {
- if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['hide_version'])
- return '';
- return DB_UPDATE_VERSION;
- }
-
-
- static public function get_notify_icon() {
- if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['email_notify_icon_url'])
- return \App::$config['system']['email_notify_icon_url'];
- return z_root() . '/images/hz-white-32.png';
- }
-
- static public function get_site_icon() {
- if(is_array(\App::$config) && is_array(\App::$config['system']) && \App::$config['system']['site_icon_url'])
- return \App::$config['system']['site_icon_url'];
- return z_root() . '/images/hz-32.png';
- }
-
-
- static public function get_server_role() {
- if(UNO)
- return 'basic';
- return 'advanced';
- }
-
- static public function get_std_version() {
- if(defined('STD_VERSION'))
- return STD_VERSION;
- return '0.0.0';
- }
-
-
-}
diff --git a/Zotlabs/Render/Comanche.php b/Zotlabs/Render/Comanche.php
index 776874e35..1017ec6aa 100644
--- a/Zotlabs/Render/Comanche.php
+++ b/Zotlabs/Render/Comanche.php
@@ -8,7 +8,6 @@ require_once('include/widgets.php');
-
class Comanche {
@@ -95,7 +94,7 @@ class Comanche {
$cnt = preg_match_all("/\[region=(.*?)\](.*?)\[\/region\]/ism", $s, $matches, PREG_SET_ORDER);
if($cnt) {
foreach($matches as $mtch) {
- \App::$layout['region_' . $mtch[1]] = $this->region($mtch[2]);
+ \App::$layout['region_' . $mtch[1]] = $this->region($mtch[2],$mtch[1]);
}
}
}
@@ -320,7 +319,9 @@ class Comanche {
}
- function region($s) {
+ function region($s,$region_name) {
+
+ $s = str_replace('$region',$region_name,$s);
$matches = array();
diff --git a/Zotlabs/Render/SimpleTemplate.php b/Zotlabs/Render/SimpleTemplate.php
new file mode 100755
index 000000000..ff1bb5c3c
--- /dev/null
+++ b/Zotlabs/Render/SimpleTemplate.php
@@ -0,0 +1,310 @@
+<?php
+
+namespace Zotlabs\Render;
+
+define ("KEY_NOT_EXISTS", '^R_key_not_Exists^');
+
+class SimpleTemplate implements TemplateEngine {
+
+ static $name ="internal";
+
+ var $r;
+ var $search;
+ var $replace;
+ var $stack = array();
+ var $nodes = array();
+ var $done = false;
+ var $d = false;
+ var $lang = null;
+ var $debug=false;
+
+ private function _preg_error() {
+ switch(preg_last_error()) {
+ case PREG_INTERNAL_ERROR: echo('PREG_INTERNAL_ERROR'); break;
+ case PREG_BACKTRACK_LIMIT_ERROR: echo('PREG_BACKTRACK_LIMIT_ERROR'); break;
+ case PREG_RECURSION_LIMIT_ERROR: echo('PREG_RECURSION_LIMIT_ERROR'); break;
+ case PREG_BAD_UTF8_ERROR: echo('PREG_BAD_UTF8_ERROR'); break;
+// This is only valid for php > 5.3, not certain how to code around it for unit tests
+// case PREG_BAD_UTF8_OFFSET_ERROR: echo('PREG_BAD_UTF8_OFFSET_ERROR'); break;
+ default:
+ //die("Unknown preg error.");
+ return;
+ }
+ echo "<hr><pre>";
+ debug_print_backtrace();
+ die();
+ }
+
+ private function _push_stack() {
+ $this->stack[] = array($this->r, $this->nodes);
+ }
+
+ private function _pop_stack(){
+ list($this->r, $this->nodes) = array_pop($this->stack);
+ }
+
+ private function _get_var($name, $retNoKey=false) {
+ $keys = array_map('trim',explode(".",$name));
+ if ($retNoKey && !array_key_exists($keys[0], $this->r))
+ return KEY_NOT_EXISTS;
+
+ $val = $this->r;
+ foreach($keys as $k) {
+ $val = (isset($val[$k]) ? $val[$k] : null);
+ }
+
+ return template_escape($val);
+ }
+
+ /**
+ * IF node
+ * \code
+ * {{ if <$var> }}...[{{ else }} ...] {{ endif }}
+ * {{ if <$var>==<val|$var> }}...[{{ else }} ...]{{ endif }}
+ * {{ if <$var>!=<val|$var> }}...[{{ else }} ...]{{ endif }}
+ * \endcode
+ */
+ private function _replcb_if($args) {
+ if (strpos($args[2],"==")>0){
+ list($a,$b) = array_map("trim",explode("==",$args[2]));
+ $a = $this->_get_var($a);
+ if ($b[0]=="$") $b = $this->_get_var($b);
+ $val = ($a == $b);
+ } else if (strpos($args[2],"!=")>0){
+ list($a,$b) = array_map("trim", explode("!=",$args[2]));
+ $a = $this->_get_var($a);
+ if ($b[0]=="$") $b = $this->_get_var($b);
+ $val = ($a != $b);
+ } else {
+ $val = $this->_get_var($args[2]);
+ }
+ $x = preg_split("|{{ *else *}}|", $args[3]);
+
+ return ( ($val) ? $x[0] : (isset($x[1]) ? $x[1] : ""));
+ }
+
+ /**
+ * FOR node
+ * \code
+ * {{ for <$var> as $name }}...{{ endfor }}
+ * {{ for <$var> as $key=>$name }}...{{ endfor }}
+ * \endcode
+ */
+ private function _replcb_for($args) {
+ $m = array_map('trim', explode(" as ", $args[2]));
+ $x = explode("=>",$m[1]);
+ if (count($x) == 1) {
+ $varname = $x[0];
+ $keyname = "";
+ } else {
+ list($keyname, $varname) = $x;
+ }
+ if ($m[0]=="" || $varname=="" || is_null($varname)) die("template error: 'for ".$m[0]." as ".$varname."'") ;
+ //$vals = $this->r[$m[0]];
+ $vals = $this->_get_var($m[0]);
+ $ret="";
+ if (!is_array($vals)) return $ret;
+
+ foreach ($vals as $k=>$v){
+ $this->_push_stack();
+ $r = $this->r;
+ $r[$varname] = $v;
+ if ($keyname!='') $r[$keyname] = (($k === 0) ? '0' : $k);
+ $ret .= $this->replace($args[3], $r);
+ $this->_pop_stack();
+ }
+
+ return $ret;
+ }
+
+ /**
+ * INC node
+ * \code
+ * {{ inc <templatefile> [with $var1=$var2] }}{{ endinc }}
+ * \endcode
+ */
+ private function _replcb_inc($args) {
+ if (strpos($args[2],"with")) {
+ list($tplfile, $newctx) = array_map('trim', explode("with",$args[2]));
+ } else {
+ $tplfile = trim($args[2]);
+ $newctx = null;
+ }
+
+ if ($tplfile[0]=="$") $tplfile = $this->_get_var($tplfile);
+
+ $this->_push_stack();
+ $r = $this->r;
+ if (!is_null($newctx)) {
+ list($a,$b) = array_map('trim', explode("=",$newctx));
+ $r[$a] = $this->_get_var($b);
+ }
+ $this->nodes = Array();
+ $tpl = get_markup_template($tplfile);
+ $ret = $this->replace($tpl, $r);
+ $this->_pop_stack();
+
+ return $ret;
+ }
+
+ /**
+ * DEBUG node
+ * \code
+ * {{ debug $var [$var [$var [...]]] }}{{ enddebug }}
+ * \endcode
+ * replace node with <pre>var_dump($var, $var, ...);</pre>
+ */
+ private function _replcb_debug($args) {
+ $vars = array_map('trim', explode(" ",$args[2]));
+ $vars[] = $args[1];
+
+ $ret = "<pre>";
+ foreach ($vars as $var){
+ $ret .= htmlspecialchars(var_export( $this->_get_var($var), true ));
+ $ret .= "\n";
+ }
+ $ret .= "</pre>";
+
+ return $ret;
+ }
+
+ private function _replcb_node($m) {
+ $node = $this->nodes[$m[1]];
+ if (method_exists($this, "_replcb_".$node[1])){
+ $s = call_user_func(array($this, "_replcb_".$node[1]), $node);
+ } else {
+ $s = "";
+ }
+ $s = preg_replace_callback('/\|\|([0-9]+)\|\|/', array($this, "_replcb_node"), $s);
+
+ return $s;
+ }
+
+ private function _replcb($m) {
+ //var_dump(array_map('htmlspecialchars', $m));
+ $this->done = false;
+ $this->nodes[] = (array) $m;
+
+ return "||". (count($this->nodes)-1) ."||";
+ }
+
+ private function _build_nodes($s) {
+ $this->done = false;
+ while (!$this->done) {
+ $this->done=true;
+ $s = preg_replace_callback('|{{ *([a-z]*) *([^}]*)}}([^{]*({{ *else *}}[^{]*)?){{ *end\1 *}}|', array($this, "_replcb"), $s);
+ if ($s==Null) $this->_preg_error();
+ }
+ //({{ *else *}}[^{]*)?
+ krsort($this->nodes);
+
+ return $s;
+ }
+
+ private function var_replace($s) {
+ $m = array();
+ /** regexp:
+ * \$ literal $
+ * (\[)? optional open square bracket
+ * ([a-zA-Z0-9-_]+\.?)+ var name, followed by optional
+ * dot, repeated at least 1 time
+ * (?(1)\]) if there was opened square bracket
+ * (subgrup 1), match close bracket
+ */
+ if (preg_match_all('/\$(\[)?([a-zA-Z0-9-_]+\.?)+(?(1)\])/', $s,$m)) {
+ foreach ($m[0] as $var) {
+ $exp = str_replace(array("[", "]"), array("", ""), $var);
+ $exptks = explode("|", $exp);
+
+ $varn = $exptks[0];
+ unset($exptks[0]);
+ $val = $this->_get_var($varn, true);
+ if ($val != KEY_NOT_EXISTS) {
+ /* run filters */
+ /*
+ * Filter are in form of:
+ * filtername:arg:arg:arg
+ *
+ * "filtername" is function name
+ * "arg"s are optional, var value is appended to the end
+ * if one "arg"==='x' , is replaced with var value
+ *
+ * examples:
+ * $item.body|htmlspecialchars // escape html chars
+ * $item.body|htmlspecialchars|strtoupper // escape html and uppercase result
+ * $item.created|date:%Y %M %j // format date (created is a timestamp)
+ * $item.body|str_replace:cat:dog // replace all "cat" with "dog"
+ * $item.body|str_replace:cat:dog:x:1 // replace one "cat" with "dog"
+ */
+ foreach ($exptks as $filterstr) {
+ $filter = explode(":", $filterstr);
+ $filtername = $filter[0];
+ unset($filter[0]);
+ $valkey = array_search("x", $filter);
+ if ($valkey === false) {
+ $filter[] = $val;
+ } else {
+ $filter[$valkey] = $val;
+ }
+ if (function_exists($filtername)) {
+ $val = call_user_func_array($filtername, $filter);
+ }
+ }
+ $s = str_replace($var, $val, $s);
+ }
+ }
+ }
+
+ return $s;
+ }
+
+ private function replace($s, $r) {
+ $this->replace_macros($s, $r);
+ }
+
+ // TemplateEngine interface
+
+ public function replace_macros($s, $r) {
+ $this->r = $r;
+
+ $s = $this->_build_nodes($s);
+
+ $s = preg_replace_callback('/\|\|([0-9]+)\|\|/', array($this, "_replcb_node"), $s);
+ if ($s == Null)
+ $this->_preg_error();
+
+ // remove comments block
+ $s = preg_replace('/{#[^#]*#}/', "" , $s);
+
+ //$t2 = dba_timer();
+
+ // replace strings recursively (limit to 10 loops)
+ $os = "";
+ $count=0;
+ while (($os !== $s) && $count<10) {
+ $os=$s;
+ $count++;
+ $s = $this->var_replace($s);
+ }
+
+ return $s;
+ }
+
+ public function get_markup_template($file, $root='') {
+ $template_file = theme_include($file, $root);
+ if ($template_file) {
+ $content = file_get_contents($template_file);
+ }
+
+ return $content;
+ }
+}
+
+
+function template_escape($s) {
+ return str_replace(array('$','{{'),array('!_Doll^Ars1Az_!','!_DoubLe^BraceS4Rw_!'),$s);
+}
+
+function template_unescape($s) {
+ return str_replace(array('!_Doll^Ars1Az_!','!_DoubLe^BraceS4Rw_!'),array('$','{{'),$s);
+}
diff --git a/Zotlabs/Render/SmartyInterface.php b/Zotlabs/Render/SmartyInterface.php
new file mode 100755
index 000000000..0e3a47c2f
--- /dev/null
+++ b/Zotlabs/Render/SmartyInterface.php
@@ -0,0 +1,48 @@
+<?php /** @file */
+
+namespace Zotlabs\Render;
+
+require_once('library/Smarty/libs/Smarty.class.php');
+
+class SmartyInterface extends \Smarty {
+
+ public $filename;
+
+ function __construct() {
+ parent::__construct();
+
+ $theme = Theme::current();
+ $thname = $theme[0];
+
+ // setTemplateDir can be set to an array, which Smarty will parse in order.
+ // The order is thus very important here
+
+ $template_dirs = array('theme' => "view/theme/$thname/tpl/");
+ if( x(\App::$theme_info,"extends") )
+ $template_dirs = $template_dirs + array('extends' => "view/theme/" . \App::$theme_info["extends"] . "/tpl/");
+ $template_dirs = $template_dirs + array('base' => 'view/tpl/');
+ $this->setTemplateDir($template_dirs);
+
+ $basecompiledir = \App::$config['system']['smarty3_folder'];
+
+ $this->setCompileDir($basecompiledir.'/compiled/');
+ $this->setConfigDir($basecompiledir.'/config/');
+ $this->setCacheDir($basecompiledir.'/cache/');
+
+ $this->left_delimiter = \App::get_template_ldelim('smarty3');
+ $this->right_delimiter = \App::get_template_rdelim('smarty3');
+
+ // Don't report errors so verbosely
+ $this->error_reporting = E_ALL & (~E_NOTICE);
+ }
+
+ function parsed($template = '') {
+ if($template) {
+ return $this->fetch('string:' . $template);
+ }
+ return $this->fetch('file:' . $this->filename);
+ }
+}
+
+
+
diff --git a/Zotlabs/Render/SmartyTemplate.php b/Zotlabs/Render/SmartyTemplate.php
new file mode 100755
index 000000000..532d6e42f
--- /dev/null
+++ b/Zotlabs/Render/SmartyTemplate.php
@@ -0,0 +1,75 @@
+<?php /** @file */
+
+namespace Zotlabs\Render;
+
+class SmartyTemplate implements TemplateEngine {
+
+ static $name ="smarty3";
+
+ public function __construct(){
+
+ // Cannot use get_config() here because it is called during installation when there is no DB.
+ // FIXME: this may leak private information such as system pathnames.
+
+ $basecompiledir = ((array_key_exists('smarty3_folder',\App::$config['system']))
+ ? \App::$config['system']['smarty3_folder'] : '');
+ if (!$basecompiledir) $basecompiledir = str_replace('Zotlabs','',dirname(__dir__)) . "/" . TEMPLATE_BUILD_PATH;
+ if (!is_dir($basecompiledir)) {
+ echo "<b>ERROR:</b> folder <tt>$basecompiledir</tt> does not exist."; killme();
+ }
+ if(!is_writable($basecompiledir)){
+ echo "<b>ERROR:</b> folder <tt>$basecompiledir</tt> must be writable by webserver."; killme();
+ }
+ \App::$config['system']['smarty3_folder'] = $basecompiledir;
+ }
+
+ // TemplateEngine interface
+
+ public function replace_macros($s, $r) {
+ $template = '';
+ if(gettype($s) === 'string') {
+ $template = $s;
+ $s = new SmartyInterface();
+ }
+ foreach($r as $key=>$value) {
+ if($key[0] === '$') {
+ $key = substr($key, 1);
+ }
+ $s->assign($key, $value);
+ }
+ return $s->parsed($template);
+ }
+
+ public function get_markup_template($file, $root=''){
+ $template_file = theme_include($file, $root);
+ if($template_file) {
+ $template = new SmartyInterface();
+ $template->filename = $template_file;
+
+ return $template;
+ }
+ return "";
+ }
+
+ public function get_intltext_template($file, $root='') {
+
+ $lang = \App::$language;
+
+ if(file_exists("view/$lang/$file"))
+ $template_file = "view/$lang/$file";
+ elseif(file_exists("view/en/$file"))
+ $template_file = "view/en/$file";
+ else
+ $template_file = theme_include($file,$root);
+ if($template_file) {
+ $template = new SmartyInterface();
+ $template->filename = $template_file;
+
+ return $template;
+ }
+ return "";
+ }
+
+
+
+}
diff --git a/Zotlabs/Render/TemplateEngine.php b/Zotlabs/Render/TemplateEngine.php
new file mode 100755
index 000000000..600ff913e
--- /dev/null
+++ b/Zotlabs/Render/TemplateEngine.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace Zotlabs\Render;
+
+/**
+ * @brief Interface for template engines.
+ */
+
+interface TemplateEngine {
+ public function replace_macros($s, $v);
+ public function get_markup_template($file, $root='');
+}
diff --git a/Zotlabs/Render/Theme.php b/Zotlabs/Render/Theme.php
new file mode 100644
index 000000000..a8b86f371
--- /dev/null
+++ b/Zotlabs/Render/Theme.php
@@ -0,0 +1,131 @@
+<?php
+
+namespace Zotlabs\Render;
+
+
+class Theme {
+
+ static $system_theme = null;
+ static $system_mobile_theme = null;
+
+ static $session_theme = null;
+ static $session_mobile_theme = null;
+
+ static $base_themes = array('redbasic');
+
+ static public function current(){
+
+ self::$system_theme = ((isset(\App::$config['system']['theme']))
+ ? \App::$config['system']['theme'] : '');
+ self::$session_theme = ((isset($_SESSION) && x($_SESSION,'theme'))
+ ? $_SESSION['theme'] : self::$system_theme);
+ self::$system_mobile_theme = ((isset(\App::$config['system']['mobile_theme']))
+ ? \App::$config['system']['mobile_theme'] : '');
+ self::$session_mobile_theme = ((isset($_SESSION) && x($_SESSION,'mobile_theme'))
+ ? $_SESSION['mobile_theme'] : self::$system_mobile_theme);
+
+ $page_theme = null;
+
+ // Find the theme that belongs to the channel whose stuff we are looking at
+
+ if(\App::$profile_uid) {
+ $r = q("select channel_theme from channel where channel_id = %d limit 1",
+ intval(\App::$profile_uid)
+ );
+ if($r) {
+ $page_theme = $r[0]['channel_theme'];
+ }
+ }
+
+ // Themes from Comanche layouts over-ride the channel theme
+
+ if(array_key_exists('theme', \App::$layout) && \App::$layout['theme'])
+ $page_theme = \App::$layout['theme'];
+
+ // If the viewer is on a mobile device, ensure that we're using a mobile
+ // theme of some kind or whatever the viewer's preference is for mobile
+ // viewing (if applicable)
+
+ if(\App::$is_mobile || \App::$is_tablet) {
+ if(isset($_SESSION['show_mobile']) && (! $_SESSION['show_mobile'])) {
+ $chosen_theme = self::$session_theme;
+ }
+ else {
+ $chosen_theme = self::$session_mobile_theme;
+
+ if($chosen_theme === '' || $chosen_theme === '---' ) {
+ // user has selected to have the mobile theme be the same as the normal one
+ $chosen_theme = self::$session_theme;
+ }
+ }
+ }
+ else {
+ $chosen_theme = self::$session_theme;
+
+ if($page_theme) {
+ $chosen_theme = $page_theme;
+ }
+ }
+
+ // Allow theme selection of the form 'theme_name:schema_name'
+
+ $themepair = explode(':', $chosen_theme);
+
+ if($chosen_theme && (file_exists('view/theme/' . $themepair[0] . '/css/style.css') || file_exists('view/theme/' . $themepair[0] . '/php/style.php'))) {
+ return($themepair);
+ }
+
+ foreach(self::$base_themes as $t) {
+ if(file_exists('view/theme/' . $t . '/css/style.css') ||
+ file_exists('view/theme/' . $t . '/php/style.php')) {
+ return(array($t));
+ }
+ }
+
+ // Worst case scenario, the default base theme or themes don't exist; perhaps somebody renamed it/them.
+
+ // Find any theme at all and use it.
+
+ $fallback = array_merge(glob('view/theme/*/css/style.css'),glob('view/theme/*/php/style.php'));
+ if(count($fallback))
+ return(array(str_replace('view/theme/','', substr($fallback[0],0,-14))));
+
+
+ }
+
+
+ /**
+ * @brief Return full URL to theme which is currently in effect.
+ *
+ * Provide a sane default if nothing is chosen or the specified theme does not exist.
+ *
+ * @param bool $installing default false
+ *
+ * @return string
+ */
+
+ function url($installing = false) {
+
+ if($installing)
+ return self::$base_themes[0];
+
+ $theme = self::current();
+
+ $t = $theme[0];
+ $s = ((count($theme) > 1) ? $t[1] : '');
+
+ $opts = '';
+ $opts = ((\App::$profile_uid) ? '?f=&puid=' . \App::$profile_uid : '');
+
+ $schema_str = ((x(\App::$layout,'schema')) ? '&schema=' . App::$layout['schema'] : '');
+ if(($s) && (! $schema_str))
+ $schema_str = '&schema=' . $s;
+ $opts .= $schema_str;
+
+ if(file_exists('view/theme/' . $t . '/php/style.php'))
+ return('view/theme/' . $t . '/php/style.pcss' . $opts);
+
+ return('view/theme/' . $t . '/css/style.css');
+ }
+}
+
diff --git a/Zotlabs/Storage/BasicAuth.php b/Zotlabs/Storage/BasicAuth.php
index da5af7659..121a9c3a1 100644
--- a/Zotlabs/Storage/BasicAuth.php
+++ b/Zotlabs/Storage/BasicAuth.php
@@ -73,10 +73,12 @@ class BasicAuth extends DAV\Auth\Backend\AbstractBasic {
protected $timezone = '';
+ public $module_disabled = false;
+
+
/**
* @brief Validates a username and password.
*
- * Guest access is granted with the password "+++".
*
* @see \Sabre\DAV\Auth\Backend\AbstractBasic::validateUserPass
* @param string $username
@@ -92,7 +94,7 @@ class BasicAuth extends DAV\Auth\Backend\AbstractBasic {
intval($record['account_id']),
intval($record['account_default_channel'])
);
- if ($r) {
+ if($r && $this->check_module_access($r[0]['channel_id'])) {
return $this->setAuthenticated($r[0]);
}
}
@@ -109,13 +111,17 @@ class BasicAuth extends DAV\Auth\Backend\AbstractBasic {
if ((($record['account_flags'] == ACCOUNT_OK) || ($record['account_flags'] == ACCOUNT_UNVERIFIED))
&& (hash('whirlpool', $record['account_salt'] . $password) === $record['account_password'])) {
logger('password verified for ' . $username);
- return $this->setAuthenticated($r[0]);
+ if($this->check_module_access($r[0]['channel_id']))
+ return $this->setAuthenticated($r[0]);
}
}
}
}
- $error = 'password failed for ' . $username;
+ if($this->module_disabled)
+ $error = 'module not enabled for ' . $username;
+ else
+ $error = 'password failed for ' . $username;
logger($error);
log_failed_login($error);
@@ -139,6 +145,17 @@ class BasicAuth extends DAV\Auth\Backend\AbstractBasic {
return true;
}
+ protected function check_module_access($channel_id) {
+ if($channel_id && \App::$module === 'cdav') {
+ $x = get_pconfig($channel_id,'cdav','enabled');
+ if(! $x) {
+ $this->module_disabled = true;
+ return false;
+ }
+ }
+ return true;
+ }
+
/**
* Sets the channel_name from the currently logged-in channel.
*
diff --git a/Zotlabs/Storage/Browser.php b/Zotlabs/Storage/Browser.php
index ca262b739..f875cbf33 100644
--- a/Zotlabs/Storage/Browser.php
+++ b/Zotlabs/Storage/Browser.php
@@ -246,14 +246,17 @@ class Browser extends DAV\Browser\Plugin {
\App::$page['content'] = $html;
load_pdl($a);
- $theme_info_file = "view/theme/" . current_theme() . "/php/theme.php";
+ $current_theme = \Zotlabs\Render\Theme::current();
+
+ $theme_info_file = "view/theme/" . $current_theme[0] . "/php/theme.php";
if (file_exists($theme_info_file)){
require_once($theme_info_file);
- if (function_exists(str_replace('-', '_', current_theme()) . '_init')) {
- $func = str_replace('-', '_', current_theme()) . '_init';
+ if (function_exists(str_replace('-', '_', $current_theme[0]) . '_init')) {
+ $func = str_replace('-', '_', $current_theme[0]) . '_init';
$func($a);
}
}
+ $this->server->httpResponse->setHeader('Content-Security-Policy', "script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'");
construct_page($a);
}
diff --git a/Zotlabs/Storage/Directory.php b/Zotlabs/Storage/Directory.php
index 3c0cff6ef..06ae90a5f 100644
--- a/Zotlabs/Storage/Directory.php
+++ b/Zotlabs/Storage/Directory.php
@@ -194,7 +194,7 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota {
* @return null|string ETag
*/
public function createFile($name, $data = null) {
- logger($name, LOGGER_DEBUG);
+ logger('create file in directory ' . $name, LOGGER_DEBUG);
if (! $this->auth->owner_id) {
logger('permission denied ' . $name);
@@ -246,7 +246,7 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota {
$deny_gid = $c[0]['channel_deny_gid'];
}
- $r = q("INSERT INTO attach ( aid, uid, hash, creator, filename, folder, os_storage, filetype, filesize, revision, is_photo, data, created, edited, allow_cid, allow_gid, deny_cid, deny_gid )
+ $r = q("INSERT INTO attach ( aid, uid, hash, creator, filename, folder, os_storage, filetype, filesize, revision, is_photo, content, created, edited, allow_cid, allow_gid, deny_cid, deny_gid )
VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ",
intval($c[0]['channel_account_id']),
intval($c[0]['channel_id']),
@@ -358,7 +358,7 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota {
* @return void
*/
public function createDirectory($name) {
- logger($name, LOGGER_DEBUG);
+ logger('create directory ' . $name, LOGGER_DEBUG);
if ((! $this->auth->owner_id) || (! perm_is_allowed($this->auth->owner_id, $this->auth->observer, 'write_storage'))) {
throw new DAV\Exception\Forbidden('Permission denied.');
@@ -372,7 +372,9 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota {
$result = attach_mkdir($r[0], $this->auth->observer, array('filename' => $name, 'folder' => $this->folder_hash));
if($result['success']) {
- $sync = attach_export_data($r[0],$ret['data']['hash']);
+ $sync = attach_export_data($r[0],$result['data']['hash']);
+ logger('createDirectory: attach_export_data returns $sync:' . print_r($sync, true), LOGGER_DEBUG);
+
if($sync) {
build_sync_packet($r[0]['channel_id'],array('file' => array($sync)));
}
@@ -563,4 +565,4 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota {
$free
);
}
-} \ No newline at end of file
+}
diff --git a/Zotlabs/Storage/File.php b/Zotlabs/Storage/File.php
index d40fee0ea..ecd15cc55 100644
--- a/Zotlabs/Storage/File.php
+++ b/Zotlabs/Storage/File.php
@@ -124,7 +124,7 @@ class File extends DAV\Node implements DAV\IFile {
);
if ($r) {
if (intval($r[0]['os_storage'])) {
- $d = q("select folder, data from attach where hash = '%s' and uid = %d limit 1",
+ $d = q("select folder, content from attach where hash = '%s' and uid = %d limit 1",
dbesc($this->data['hash']),
intval($c[0]['channel_id'])
);
@@ -139,7 +139,7 @@ class File extends DAV\Node implements DAV\IFile {
$direct = $f1[0];
}
}
- $fname = dbunescbin($d[0]['data']);
+ $fname = dbunescbin($d[0]['content']);
if(strpos($fname,'store') === false)
$f = 'store/' . $this->auth->owner_nick . '/' . $fname ;
else
@@ -158,12 +158,12 @@ class File extends DAV\Node implements DAV\IFile {
}
else {
// this shouldn't happen any more
- $r = q("UPDATE attach SET data = '%s' WHERE hash = '%s' AND uid = %d",
+ $r = q("UPDATE attach SET content = '%s' WHERE hash = '%s' AND uid = %d",
dbescbin(stream_get_contents($data)),
dbesc($this->data['hash']),
intval($this->data['uid'])
);
- $r = q("SELECT length(data) AS fsize FROM attach WHERE hash = '%s' AND uid = %d LIMIT 1",
+ $r = q("SELECT length(content) AS fsize FROM attach WHERE hash = '%s' AND uid = %d LIMIT 1",
dbesc($this->data['hash']),
intval($this->data['uid'])
);
@@ -236,7 +236,7 @@ class File extends DAV\Node implements DAV\IFile {
logger('get file ' . basename($this->name), LOGGER_DEBUG);
logger('os_path: ' . $this->os_path, LOGGER_DATA);
- $r = q("SELECT data, flags, os_storage, filename, filetype FROM attach WHERE hash = '%s' AND uid = %d LIMIT 1",
+ $r = q("SELECT content, flags, os_storage, filename, filetype FROM attach WHERE hash = '%s' AND uid = %d LIMIT 1",
dbesc($this->data['hash']),
intval($this->data['uid'])
);
@@ -250,14 +250,14 @@ class File extends DAV\Node implements DAV\IFile {
}
if (intval($r[0]['os_storage'])) {
- $x = dbunescbin($r[0]['data']);
+ $x = dbunescbin($r[0]['content']);
if(strpos($x,'store') === false)
$f = 'store/' . $this->auth->owner_nick . '/' . (($this->os_path) ? $this->os_path . '/' : '') . $x;
else
$f = $x;
return fopen($f, 'rb');
}
- return dbunescbin($r[0]['data']);
+ return dbunescbin($r[0]['content']);
}
}
diff --git a/Zotlabs/Storage/GitRepo.php b/Zotlabs/Storage/GitRepo.php
index 2a24e03c0..306abc0ba 100644
--- a/Zotlabs/Storage/GitRepo.php
+++ b/Zotlabs/Storage/GitRepo.php
@@ -75,6 +75,15 @@ class GitRepo {
}
}
}
+
+ public function initRepo() {
+ if(!$this->path) return false;
+ try {
+ return $this->git->init($this->path);
+ } catch (\PHPGit\Exception\GitException $ex) {
+ return false;
+ }
+ }
public function pull() {
try {
@@ -118,6 +127,15 @@ class GitRepo {
$repo['logs'] = $git->log(array('limit' => 50));
return $repo;
}
+
+ // Commit changes to the repo. Default is to stage all changes and commit everything.
+ public function commit($msg, $options = array()) {
+ try {
+ return $this->git->commit($msg, $options);
+ } catch (\PHPGit\Exception\GitException $ex) {
+ return false;
+ }
+ }
public static function isValidGitRepoURL($url) {
if (validate_url($url) && strrpos(parse_url($url, PHP_URL_PATH), '.')) {
diff --git a/Zotlabs/Web/Router.php b/Zotlabs/Web/Router.php
index e6733ffdb..f9290ac30 100644
--- a/Zotlabs/Web/Router.php
+++ b/Zotlabs/Web/Router.php
@@ -206,13 +206,15 @@ class Router {
* load current theme info
*/
- $theme_info_file = 'view/theme/' . current_theme() . '/php/theme.php';
+ $current_theme = \Zotlabs\Render\Theme::current();
+
+ $theme_info_file = 'view/theme/' . $current_theme[0] . '/php/theme.php';
if (file_exists($theme_info_file)){
require_once($theme_info_file);
}
- if(function_exists(str_replace('-', '_', current_theme()) . '_init')) {
- $func = str_replace('-', '_', current_theme()) . '_init';
+ if(function_exists(str_replace('-', '_', $current_theme[0]) . '_init')) {
+ $func = str_replace('-', '_', $current_theme[0]) . '_init';
$func($a);
}
elseif (x(\App::$theme_info, 'extends') && file_exists('view/theme/' . \App::$theme_info['extends'] . '/php/theme.php')) {
diff --git a/Zotlabs/Web/Session.php b/Zotlabs/Web/Session.php
index e18ad38fb..4f2a3f1f7 100644
--- a/Zotlabs/Web/Session.php
+++ b/Zotlabs/Web/Session.php
@@ -13,10 +13,10 @@ namespace Zotlabs\Web;
class Session {
- private static $handler = null;
- private static $session_started = false;
+ private $handler = null;
+ private $session_started = false;
- function init() {
+ public function init() {
$gc_probability = 50;
@@ -29,7 +29,8 @@ class Session {
*/
$handler = new \Zotlabs\Web\SessionHandler();
- self::$handler = $handler;
+
+ $this->handler = $handler;
$x = session_set_save_handler($handler,false);
if(! $x)
@@ -38,11 +39,17 @@ class Session {
// Force cookies to be secure (https only) if this site is SSL enabled.
// Must be done before session_start().
+
$arr = session_get_cookie_params();
+
+ // Note when setting cookies: set the domain to false which creates a single domain
+ // cookie. If you use a hostname it will create a .domain.com wildcard which will
+ // have some nasty side effects if you have any other subdomains running hubzilla.
+
session_set_cookie_params(
((isset($arr['lifetime'])) ? $arr['lifetime'] : 0),
((isset($arr['path'])) ? $arr['path'] : '/'),
- ((isset($arr['domain'])) ? $arr['domain'] : App::get_hostname()),
+ (($arr['domain']) ? $arr['domain'] : false),
((isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') ? true : false),
((isset($arr['httponly'])) ? $arr['httponly'] : true)
);
@@ -51,9 +58,9 @@ class Session {
}
- function start() {
+ public function start() {
session_start();
- self::$session_started = true;
+ $this->session_started = true;
}
/**
@@ -62,8 +69,8 @@ class Session {
* @return void
*/
- function nuke() {
- self::new_cookie(0); // 0 means delete on browser exit
+ public function nuke() {
+ $this->new_cookie(0); // 0 means delete on browser exit
if($_SESSION && count($_SESSION)) {
foreach($_SESSION as $k => $v) {
unset($_SESSION[$k]);
@@ -71,48 +78,53 @@ class Session {
}
}
- function new_cookie($xtime) {
+ public function new_cookie($xtime) {
$newxtime = (($xtime> 0) ? (time() + $xtime) : 0);
$old_sid = session_id();
- if(self::$handler && self::$session_started) {
+ $arr = session_get_cookie_params();
+
+ if($this->handler && $this->session_started) {
+
session_regenerate_id(true);
// force SessionHandler record creation with the new session_id
// which occurs as a side effect of read()
- self::$handler->read(session_id());
+ $this->handler->read(session_id());
}
else
logger('no session handler');
if (x($_COOKIE, 'jsdisabled')) {
- setcookie('jsdisabled', $_COOKIE['jsdisabled'], $newxtime);
+ setcookie('jsdisabled', $_COOKIE['jsdisabled'], $newxtime, '/', false,((isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') ? true : false),((isset($arr['httponly'])) ? $arr['httponly'] : true));
}
- setcookie(session_name(),session_id(),$newxtime);
+ setcookie(session_name(),session_id(),$newxtime, '/', false,((isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') ? true : false),((isset($arr['httponly'])) ? $arr['httponly'] : true));
$arr = array('expire' => $xtime);
call_hooks('new_cookie', $arr);
}
- function extend_cookie() {
+ public function extend_cookie() {
+
+ $arr = session_get_cookie_params();
// if there's a long-term cookie, extend it
$xtime = (($_SESSION['remember_me']) ? (60 * 60 * 24 * 365) : 0 );
if($xtime)
- setcookie(session_name(),session_id(),(time() + $xtime));
+ setcookie(session_name(),session_id(),(time() + $xtime), '/', false,((isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') ? true : false),((isset($arr['httponly'])) ? $arr['httponly'] : true));
$arr = array('expire' => $xtime);
call_hooks('extend_cookie', $arr);
}
- function return_check() {
+ public function return_check() {
// check a returning visitor against IP changes.
// If the change results in being blocked from re-entry with the current cookie
@@ -152,7 +164,7 @@ class Session {
// check any difference at all
logger('Session address changed. Paranoid setting in effect, blocking session. '
. $_SESSION['addr'] . ' != ' . $_SERVER['REMOTE_ADDR']);
- self::nuke();
+ $this->nuke();
goaway(z_root());
break;
}
diff --git a/Zotlabs/Web/SessionHandler.php b/Zotlabs/Web/SessionHandler.php
index 6980a6408..6e7333b4b 100644
--- a/Zotlabs/Web/SessionHandler.php
+++ b/Zotlabs/Web/SessionHandler.php
@@ -18,10 +18,10 @@ class SessionHandler implements \SessionHandlerInterface {
function read ($id) {
if($id) {
- $r = q("SELECT `data` FROM `session` WHERE `sid`= '%s'", dbesc($id));
+ $r = q("SELECT `sess_data` FROM `session` WHERE `sid`= '%s'", dbesc($id));
if($r) {
- return $r[0]['data'];
+ return $r[0]['sess_data'];
}
else {
q("INSERT INTO `session` (sid, expire) values ('%s', '%s')",
@@ -59,7 +59,7 @@ class SessionHandler implements \SessionHandlerInterface {
}
q("UPDATE `session`
- SET `data` = '%s', `expire` = '%s' WHERE `sid` = '%s'",
+ SET `sess_data` = '%s', `expire` = '%s' WHERE `sid` = '%s'",
dbesc($data),
dbesc($expire),
dbesc($id)
diff --git a/Zotlabs/Web/WebServer.php b/Zotlabs/Web/WebServer.php
new file mode 100644
index 000000000..88ab4995b
--- /dev/null
+++ b/Zotlabs/Web/WebServer.php
@@ -0,0 +1,130 @@
+<?php /** @file */
+
+namespace Zotlabs\Web;
+
+class WebServer {
+
+ public function run() {
+
+
+ /*
+ * Bootstrap the application, load configuration, load modules, load theme, etc.
+ */
+
+ require_once('boot.php');
+
+ sys_boot();
+
+
+ \App::$language = get_best_language();
+ load_translation_table(\App::$language,\App::$install);
+
+
+ /**
+ *
+ * Important stuff we always need to do.
+ *
+ * The order of these may be important so use caution if you think they're all
+ * intertwingled with no logical order and decide to sort it out. Some of the
+ * dependencies have changed, but at least at one time in the recent past - the
+ * order was critical to everything working properly
+ *
+ */
+
+ if(\App::$session) {
+ \App::$session->start();
+ }
+ else {
+ session_start();
+ register_shutdown_function('session_write_close');
+ }
+
+ /**
+ * Language was set earlier, but we can over-ride it in the session.
+ * We have to do it here because the session was just now opened.
+ */
+
+ if(array_key_exists('system_language',$_POST)) {
+ if(strlen($_POST['system_language']))
+ $_SESSION['language'] = $_POST['system_language'];
+ else
+ unset($_SESSION['language']);
+ }
+ if((x($_SESSION, 'language')) && ($_SESSION['language'] !== $lang)) {
+ \App::$language = $_SESSION['language'];
+ load_translation_table(\App::$language);
+ }
+
+ if((x($_GET,'zid')) && (! \App::$install)) {
+ \App::$query_string = strip_zids(\App::$query_string);
+ if(! local_channel()) {
+ $_SESSION['my_address'] = $_GET['zid'];
+ zid_init($a);
+ }
+ }
+
+ if((x($_SESSION, 'authenticated')) || (x($_POST, 'auth-params')) || (\App::$module === 'login'))
+ require('include/auth.php');
+
+ if(! x($_SESSION, 'sysmsg'))
+ $_SESSION['sysmsg'] = array();
+
+ if(! x($_SESSION, 'sysmsg_info'))
+ $_SESSION['sysmsg_info'] = array();
+
+ /*
+ * check_config() is responsible for running update scripts. These automatically
+ * update the DB schema whenever we push a new one out. It also checks to see if
+ * any plugins have been added or removed and reacts accordingly.
+ */
+
+
+ if(\App::$install) {
+ /* Allow an exception for the view module so that pcss will be interpreted during installation */
+ if(\App::$module != 'view')
+ \App::$module = 'setup';
+ }
+ else
+ check_config($a);
+
+ nav_set_selected('nothing');
+
+ $Router = new Router($a);
+
+ /* initialise content region */
+
+ if(! x(\App::$page, 'content'))
+ \App::$page['content'] = '';
+
+ call_hooks('page_content_top', \App::$page['content']);
+
+
+ $Router->Dispatch($a);
+
+
+ // If you're just visiting, let javascript take you home
+
+ if(x($_SESSION, 'visitor_home')) {
+ $homebase = $_SESSION['visitor_home'];
+ } elseif(local_channel()) {
+ $homebase = z_root() . '/channel/' . \App::$channel['channel_address'];
+ }
+
+ if(isset($homebase)) {
+ \App::$page['content'] .= '<script>var homebase = "' . $homebase . '";</script>';
+ }
+
+ // now that we've been through the module content, see if the page reported
+ // a permission problem and if so, a 403 response would seem to be in order.
+
+ if(stristr(implode("", $_SESSION['sysmsg']), t('Permission denied'))) {
+ header($_SERVER['SERVER_PROTOCOL'] . ' 403 ' . t('Permission denied.'));
+ }
+
+ call_hooks('page_end', \App::$page['content']);
+
+ construct_page($a);
+
+ killme();
+ }
+} \ No newline at end of file
diff --git a/Zotlabs/Zot/Auth.php b/Zotlabs/Zot/Auth.php
index f764172fa..0837be21a 100644
--- a/Zotlabs/Zot/Auth.php
+++ b/Zotlabs/Zot/Auth.php
@@ -80,11 +80,9 @@ class Auth {
if(! $x) {
// finger them if they can't be found.
- $ret = zot_finger($address, null);
- if ($ret['success']) {
- $j = json_decode($ret['body'], true);
- if($j)
- import_xchan($j);
+ $j = Finger::run($address, null);
+ if ($j['success']) {
+ import_xchan($j);
$x = q("select * from hubloc left join xchan on xchan_hash = hubloc_hash
where hubloc_addr = '%s' order by hubloc_id desc",
dbesc($address)
diff --git a/Zotlabs/Zot/Finger.php b/Zotlabs/Zot/Finger.php
new file mode 100644
index 000000000..229fda8bd
--- /dev/null
+++ b/Zotlabs/Zot/Finger.php
@@ -0,0 +1,130 @@
+<?php
+
+namespace Zotlabs\Zot;
+
+
+class Finger {
+
+ static private $token;
+
+ /**
+ * @brief Look up information about channel.
+ *
+ * @param string $webbie
+ * does not have to be host qualified e.g. 'foo' is treated as 'foo\@thishub'
+ * @param array $channel
+ * (optional), if supplied permissions will be enumerated specifically for $channel
+ * @param boolean $autofallback
+ * fallback/failover to http if https connection cannot be established. Default is true.
+ *
+ * @return zotinfo array (with 'success' => true) or array('success' => false);
+ */
+
+ static public function run($webbie, $channel = null, $autofallback = true) {
+
+ $ret = array('success' => false);
+
+ self::$token = random_string();
+
+ if (strpos($webbie,'@') === false) {
+ $address = $webbie;
+ $host = App::get_hostname();
+ } else {
+ $address = substr($webbie,0,strpos($webbie,'@'));
+ $host = substr($webbie,strpos($webbie,'@')+1);
+ }
+
+ $xchan_addr = $address . '@' . $host;
+
+ if ((! $address) || (! $xchan_addr)) {
+ logger('zot_finger: no address :' . $webbie);
+ return $ret;
+ }
+
+ logger('using xchan_addr: ' . $xchan_addr, LOGGER_DATA, LOG_DEBUG);
+
+ // potential issue here; the xchan_addr points to the primary hub.
+ // The webbie we were called with may not, so it might not be found
+ // unless we query for hubloc_addr instead of xchan_addr
+
+ $r = q("select xchan.*, hubloc.* from xchan
+ left join hubloc on xchan_hash = hubloc_hash
+ where xchan_addr = '%s' and hubloc_primary = 1 limit 1",
+ dbesc($xchan_addr)
+ );
+
+ if ($r) {
+ $url = $r[0]['hubloc_url'];
+
+ if ($r[0]['hubloc_network'] && $r[0]['hubloc_network'] !== 'zot') {
+ logger('zot_finger: alternate network: ' . $webbie);
+ logger('url: '.$url.', net: '.var_export($r[0]['hubloc_network'],true), LOGGER_DATA, LOG_DEBUG);
+ return $ret;
+ }
+ }
+ else {
+ $url = 'https://' . $host;
+ }
+
+ $rhs = '/.well-known/zot-info';
+ $https = ((strpos($url,'https://') === 0) ? true : false);
+
+ logger('zot_finger: ' . $address . ' at ' . $url, LOGGER_DEBUG);
+
+ if ($channel) {
+ $postvars = array(
+ 'address' => $address,
+ 'target' => $channel['channel_guid'],
+ 'target_sig' => $channel['channel_guid_sig'],
+ 'key' => $channel['channel_pubkey'],
+ 'token' => self::$token
+ );
+
+ $result = z_post_url($url . $rhs,$postvars);
+
+ if ((! $result['success']) && ($autofallback)) {
+ if ($https) {
+ logger('zot_finger: https failed. falling back to http');
+ $result = z_post_url('http://' . $host . $rhs,$postvars);
+ }
+ }
+ }
+ else {
+ $rhs .= '?f=&address=' . urlencode($address) . '&token=' . self::$token;
+
+ $result = z_fetch_url($url . $rhs);
+ if ((! $result['success']) && ($autofallback)) {
+ if ($https) {
+ logger('zot_finger: https failed. falling back to http');
+ $result = z_fetch_url('http://' . $host . $rhs);
+ }
+ }
+ }
+
+ if(! $result['success']) {
+ logger('zot_finger: no results');
+ return $ret;
+ }
+
+ $x = json_decode($result['body'],true);
+ if($x) {
+ $signed_token = ((is_array($x) && array_key_exists('signed_token',$x)) ? $x['signed_token'] : null);
+ if($signed_token) {
+ $valid = rsa_verify('token.' . self::$token,base64url_decode($signed_token),$x['key']);
+ if(! $valid) {
+ logger('invalid signed token: ' . $url . $rhs, LOGGER_NORMAL, LOG_ERR);
+ return $ret;
+ }
+ }
+ else {
+ logger('No signed token from ' . $url . $rhs, LOGGER_NORMAL, LOG_WARNING);
+ // after 2017-01-01 this will be a hard error unless you over-ride it.
+ if((time() > 1483228800) && (! get_config('system','allow_unsigned_zotfinger')))
+ return $ret;
+ }
+ }
+
+ return $x;
+ }
+
+} \ No newline at end of file
diff --git a/Zotlabs/Zot/Verify.php b/Zotlabs/Zot/Verify.php
index 1192202db..06bd3188c 100644
--- a/Zotlabs/Zot/Verify.php
+++ b/Zotlabs/Zot/Verify.php
@@ -6,7 +6,7 @@ namespace Zotlabs\Zot;
class Verify {
function create($type,$channel_id,$token,$meta) {
- return q("insert into verify ( type, channel, token, meta, created ) values ( '%s', %d, '%s', '%s', '%s' )",
+ return q("insert into verify ( vtype, channel, token, meta, created ) values ( '%s', %d, '%s', '%s', '%s' )",
dbesc($type),
intval($channel_id),
dbesc($token),
@@ -16,7 +16,7 @@ class Verify {
}
function match($type,$channel_id,$token,$meta) {
- $r = q("select id from verify where type = '%s' and channel = %d and token = '%s' and meta = '%s' limit 1",
+ $r = q("select id from verify where vtype = '%s' and channel = %d and token = '%s' and meta = '%s' limit 1",
dbesc($type),
intval($channel_id),
dbesc($token),
@@ -32,7 +32,7 @@ class Verify {
}
function purge($type,$interval) {
- q("delete from verify where type = '%s' and created < %s - INTERVAL %s",
+ q("delete from verify where vtype = '%s' and created < %s - INTERVAL %s",
dbesc($type),
db_utcnow(),
db_quoteinterval($interval)
diff --git a/app/wiki.apd b/app/wiki.apd
new file mode 100644
index 000000000..95245055c
--- /dev/null
+++ b/app/wiki.apd
@@ -0,0 +1,4 @@
+url: $baseurl/wiki/$nick
+requires: local_channel
+name: Wiki
+photo: $baseurl/app/wiki.png
diff --git a/app/wiki.png b/app/wiki.png
new file mode 100644
index 000000000..31d981679
--- /dev/null
+++ b/app/wiki.png
Binary files differ
diff --git a/boot.php b/boot.php
index 625bc39fa..94f1c5342 100755
--- a/boot.php
+++ b/boot.php
@@ -37,19 +37,18 @@ require_once('include/nav.php');
require_once('include/cache.php');
require_once('include/permissions.php');
require_once('library/Mobile_Detect/Mobile_Detect.php');
-require_once('include/BaseObject.php');
require_once('include/features.php');
require_once('include/taxonomy.php');
-require_once('include/identity.php');
-require_once('include/Contact.php');
+require_once('include/channel.php');
+require_once('include/connections.php');
require_once('include/account.php');
define ( 'PLATFORM_NAME', 'hubzilla' );
-define ( 'STD_VERSION', '1.6.6' );
-define ( 'ZOT_REVISION', 1 );
+define ( 'STD_VERSION', '1.8' );
+define ( 'ZOT_REVISION', 1.1 );
-define ( 'DB_UPDATE_VERSION', 1168 );
+define ( 'DB_UPDATE_VERSION', 1176 );
/**
@@ -474,6 +473,7 @@ define ( 'NAMESPACE_YMEDIA', 'http://search.yahoo.com/mrss/' );
* activity stream defines
*/
+define ( 'ACTIVITY_REACT', NAMESPACE_ZOT . '/activity/react' );
define ( 'ACTIVITY_LIKE', NAMESPACE_ACTIVITY_SCHEMA . 'like' );
define ( 'ACTIVITY_DISLIKE', NAMESPACE_ZOT . '/activity/dislike' );
define ( 'ACTIVITY_AGREE', NAMESPACE_ZOT . '/activity/agree' );
@@ -514,6 +514,7 @@ define ( 'ACTIVITY_OBJ_ALBUM', NAMESPACE_ACTIVITY_SCHEMA . 'photo-album' );
define ( 'ACTIVITY_OBJ_EVENT', NAMESPACE_ACTIVITY_SCHEMA . 'event' );
define ( 'ACTIVITY_OBJ_GROUP', NAMESPACE_ACTIVITY_SCHEMA . 'group' );
define ( 'ACTIVITY_OBJ_GAME', NAMESPACE_ACTIVITY_SCHEMA . 'game' );
+define ( 'ACTIVITY_OBJ_WIKI', NAMESPACE_ACTIVITY_SCHEMA . 'wiki' );
define ( 'ACTIVITY_OBJ_TAGTERM', NAMESPACE_ZOT . '/activity/tagterm' );
define ( 'ACTIVITY_OBJ_PROFILE', NAMESPACE_ZOT . '/activity/profile' );
define ( 'ACTIVITY_OBJ_THING', NAMESPACE_ZOT . '/activity/thing' );
@@ -580,6 +581,72 @@ define ( 'ITEM_IS_STICKY', 1000 );
define ( 'DBTYPE_MYSQL', 0 );
define ( 'DBTYPE_POSTGRES', 1 );
+
+function sys_boot() {
+
+ // our central App object
+
+ App::init();
+
+ /*
+ * Load the configuration file which contains our DB credentials.
+ * Ignore errors. If the file doesn't exist or is empty, we are running in
+ * installation mode.
+ */
+
+ // miniApp is a conversion object from old style .htconfig.php files
+
+ $a = new miniApp;
+
+
+ App::$install = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? false : true);
+
+ @include('.htconfig.php');
+
+ if(! defined('UNO'))
+ define('UNO', 0);
+
+ if(array_key_exists('default_timezone',get_defined_vars())) {
+ App::$config['system']['timezone'] = $default_timezone;
+ }
+
+ $a->convert();
+
+ App::$timezone = ((App::$config['system']['timezone']) ? App::$config['system']['timezone'] : 'UTC');
+ date_default_timezone_set(App::$timezone);
+
+
+ /*
+ * Try to open the database;
+ */
+
+ require_once('include/dba/dba_driver.php');
+
+ if(! App::$install) {
+ DBA::dba_factory($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type, App::$install);
+ if(! DBA::$dba->connected) {
+ system_unavailable();
+ }
+
+ unset($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type);
+
+ /**
+ * Load configs from db. Overwrite configs from .htconfig.php
+ */
+
+ load_config('config');
+ load_config('system');
+ load_config('feature');
+
+ App::$session = new Zotlabs\Web\Session();
+ App::$session->init();
+ load_hooks();
+ call_hooks('init_1');
+ }
+
+}
+
+
/**
*
* Reverse the effect of magic_quotes_gpc if it is enabled.
@@ -626,12 +693,25 @@ function startup() {
class ZotlabsAutoloader {
static public function loader($className) {
$filename = str_replace('\\', '/', $className) . ".php";
- if (file_exists($filename)) {
+ if(file_exists($filename)) {
include($filename);
if (class_exists($className)) {
return TRUE;
}
}
+ $arr = explode('\\',$className);
+ if($arr && count($arr) > 1) {
+ if(! $arr[0])
+ $arr = array_shift($arr);
+ $filename = 'addon/' . lcfirst($arr[0]) . '/' . $arr[1] . ((count($arr) === 2) ? '.php' : '/' . $arr[2] . ".php");
+ if(file_exists($filename)) {
+ include($filename);
+ if (class_exists($className)) {
+ return TRUE;
+ }
+ }
+ }
+
return FALSE;
}
}
@@ -687,6 +767,7 @@ class App {
private static $perms = null; // observer permissions
private static $widgets = array(); // widgets for this page
+ public static $session = null;
public static $groups;
public static $language;
public static $langsave;
@@ -703,6 +784,7 @@ class App {
public static $content;
public static $data = array();
public static $error = false;
+ public static $emojitab = false;
public static $cmd;
public static $argv;
public static $argc;
@@ -889,21 +971,27 @@ class App {
self::head_set_icon('/images/hz-32.png');
- BaseObject::set_app($this);
-
/*
* register template engines
*/
+
+ spl_autoload_register('ZotlabsAutoloader::loader');
+
+ self::$meta= new Zotlabs\Web\HttpMeta();
+
+ // create an instance of the smarty template engine so we can register it.
+
+ $smarty = new Zotlabs\Render\SmartyTemplate();
+
$dc = get_declared_classes();
+
foreach ($dc as $k) {
- if (in_array("ITemplateEngine", class_implements($k))){
+ if(in_array('Zotlabs\\Render\\TemplateEngine', class_implements($k))) {
self::register_template_engine($k);
}
}
- spl_autoload_register('ZotlabsAutoloader::loader');
- self::$meta= new Zotlabs\Web\HttpMeta();
}
@@ -1057,7 +1145,7 @@ class App {
if(! self::$meta->get_field('og:title'))
self::$meta->set('og:title',self::$page['title']);
- self::$meta->set('generator', Zotlabs\Project\System::get_platform_name());
+ self::$meta->set('generator', Zotlabs\Lib\System::get_platform_name());
/* put the head template at the beginning of page['htmlhead']
* since the code added by the modules frequently depends on it
@@ -1072,7 +1160,7 @@ class App {
'$local_channel' => local_channel(),
'$metas' => self::$meta->get(),
'$update_interval' => $interval,
- 'osearch' => sprintf( t('Search %1$s (%2$s)','opensearch'), Zotlabs\Project\System::get_site_name(), t('$Projectname','opensearch')),
+ 'osearch' => sprintf( t('Search %1$s (%2$s)','opensearch'), Zotlabs\Lib\System::get_site_name(), t('$Projectname','opensearch')),
'$icon' => head_get_icon(),
'$head_css' => head_get_css(),
'$head_js' => head_get_js(),
@@ -1178,7 +1266,6 @@ class App {
* @return App
*/
function get_app() {
- global $a;
return $a;
}
@@ -1228,7 +1315,6 @@ function system_unavailable() {
function clean_urls() {
- global $a;
// if(App::$config['system']['clean_urls'])
return true;
@@ -1236,8 +1322,6 @@ function clean_urls() {
}
function z_path() {
- global $a;
-
$base = z_root();
if(! clean_urls())
$base .= '/?q=';
@@ -1253,7 +1337,6 @@ function z_path() {
* @return string
*/
function z_root() {
- global $a;
return App::get_baseurl();
}
@@ -1383,6 +1466,12 @@ function check_config(&$a) {
@unlink($lockfile);
//send the administrator an e-mail
file_put_contents($lockfile, $x);
+
+ $r = q("select account_language from account where account_email = '%s' limit 1",
+ dbesc(App::$config['system']['admin_email'])
+ );
+ push_lang(($r) ? $r[0]['account_language'] : 'en');
+
$email_tpl = get_intltext_template("update_fail_eml.tpl");
$email_msg = replace_macros($email_tpl, array(
@@ -1400,6 +1489,7 @@ function check_config(&$a) {
. 'Content-transfer-encoding: 8bit' );
//try the logger
logger('CRITICAL: Update Failed: ' . $x);
+ pop_lang();
}
else
set_config('database','update_r' . $x, 'success');
@@ -1442,11 +1532,11 @@ function check_config(&$a) {
if(count($installed)) {
foreach($installed as $i) {
- if(! in_array($i['name'], $plugins_arr)) {
- unload_plugin($i['name']);
+ if(! in_array($i['aname'], $plugins_arr)) {
+ unload_plugin($i['aname']);
}
else {
- $installed_arr[] = $i['name'];
+ $installed_arr[] = $i['aname'];
}
}
}
@@ -1556,7 +1646,7 @@ function fix_system_urls($oldurl, $newurl) {
}
}
- proc_run('php', 'include/notifier.php', 'refresh_all', $c[0]['channel_id']);
+ Zotlabs\Daemon\Master::Summon(array('Notifier', 'refresh_all', $c[0]['channel_id']));
}
}
@@ -1585,7 +1675,6 @@ function fix_system_urls($oldurl, $newurl) {
// returns the complete html for inserting into the page
function login($register = false, $form_id = 'main-login', $hiddens=false) {
- $a = get_app();
$o = '';
$reg = false;
$reglink = get_config('system', 'register_link');
@@ -1655,9 +1744,13 @@ function goaway($s) {
}
function shutdown() {
+<<<<<<< HEAD
global $db;
if(is_object($db) && $db->connected)
$db->close();
+=======
+
+>>>>>>> 1.8RC
}
/**
@@ -1691,7 +1784,9 @@ function get_account_id() {
* @return int|bool channel_id or false
*/
function local_channel() {
- if((x($_SESSION, 'authenticated')) && (x($_SESSION, 'uid')))
+ if(session_id()
+ && array_key_exists('authenticated',$_SESSION) && $_SESSION['authenticated']
+ && array_key_exists('uid',$_SESSION) && intval($_SESSION['uid']))
return intval($_SESSION['uid']);
return false;
@@ -1722,7 +1817,9 @@ function local_user() {
* @return string|bool visitor_id or false
*/
function remote_channel() {
- if((x($_SESSION, 'authenticated')) && (x($_SESSION, 'visitor_id')))
+ if(session_id()
+ && array_key_exists('authenticated',$_SESSION) && $_SESSION['authenticated']
+ && array_key_exists('visitor_id',$_SESSION) && $_SESSION['visitor_id'])
return $_SESSION['visitor_id'];
return false;
@@ -1747,7 +1844,9 @@ function remote_user() {
* @param string $s Text to display
*/
function notice($s) {
- $a = get_app();
+ if(! session_id())
+ return;
+
if(! x($_SESSION, 'sysmsg')) $_SESSION['sysmsg'] = array();
// ignore duplicated error messages which haven't yet been displayed
@@ -1771,8 +1870,10 @@ function notice($s) {
* @param string $s Text to display
*/
function info($s) {
- $a = get_app();
- if(! x($_SESSION, 'sysmsg_info')) $_SESSION['sysmsg_info'] = array();
+ if(! session_id())
+ return;
+ if(! x($_SESSION, 'sysmsg_info'))
+ $_SESSION['sysmsg_info'] = array();
if(App::$interactive)
$_SESSION['sysmsg_info'][] = $s;
}
@@ -1800,42 +1901,45 @@ function get_max_import_size() {
*
* $cmd and string args are surrounded with ""
*/
-function proc_run($cmd){
-
- $a = get_app();
+function proc_run(){
$args = func_get_args();
$newargs = array();
+
if(! count($args))
return;
- // expand any arrays
-
- foreach($args as $arg) {
- if(is_array($arg)) {
- foreach($arg as $n) {
- $newargs[] = $n;
- }
- }
- else
- $newargs[] = $arg;
- }
-
- $args = $newargs;
+ $args = flatten_array_recursive($args);
$arr = array('args' => $args, 'run_cmd' => true);
call_hooks('proc_run', $arr);
+
if(! $arr['run_cmd'])
return;
if(count($args) && $args[0] === 'php')
$args[0] = ((x(App::$config,'system')) && (x(App::$config['system'],'php_path')) && (strlen(App::$config['system']['php_path'])) ? App::$config['system']['php_path'] : 'php');
- for($x = 0; $x < count($args); $x++)
- $args[$x] = escapeshellarg($args[$x]);
+ // redirect proc_run statements of legacy daemon processes to the newer Daemon Master object class
+ // We will keep this interface until everybody has transitioned. (2016-05-20)
+
+ if(strstr($args[1],'include/')) {
+ // convert 'include/foo.php' to 'Foo'
+ $orig = substr(ucfirst(substr($args[1],8)),0,-4);
+ logger('proc_run_redirect: ' . $orig);
+ if(file_exists('Zotlabs/Daemon/' . $orig . '.php')) {
+ array_shift($args); // daemons are all run by php, pop it off the top of the array
+ $args[0] = $orig; // replace with the new daemon name
+ logger('Redirecting old proc_run interface: ' . print_r($args,true), LOGGER_DEBUG, LOG_DEBUG);
+ \Zotlabs\Daemon\Master::Summon($args); // summon the daemon
+ return;
+ }
+ }
+
+ $args = array_map('escapeshellarg',$args);
$cmdline = implode($args," ");
if(is_windows()) {
@@ -1855,110 +1959,15 @@ function proc_run($cmd){
* @brief Checks if we are running on M$ Windows.
*
* @return bool true if we run on M$ Windows
+ *
+ * It's possible you might be able to run on WAMP or XAMPP, and this
+ * has been accomplished, but is not officially supported. Good luck.
+ *
*/
function is_windows() {
return ((strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? true : false);
}
-
-function current_theme(){
- $app_base_themes = array('redbasic');
-
- $a = get_app();
- $page_theme = null;
-
- // Find the theme that belongs to the channel whose stuff we are looking at
-
- if(App::$profile_uid && App::$profile_uid != local_channel()) {
- $r = q("select channel_theme from channel where channel_id = %d limit 1",
- intval(App::$profile_uid)
- );
- if($r)
- $page_theme = $r[0]['channel_theme'];
- }
-
- if(array_key_exists('theme', App::$layout) && App::$layout['theme'])
- $page_theme = App::$layout['theme'];
-
- // Allow folks to over-rule channel themes and always use their own on their own site.
- // The default is for channel themes to take precedence over your own on pages belonging
- // to that channel.
-
- if($page_theme && local_channel() && App::$profile_uid && local_channel() != App::$profile_uid) {
- if(get_pconfig(local_channel(),'system','always_my_theme'))
- $page_theme = null;
- }
-
- $is_mobile = App::$is_mobile || App::$is_tablet;
-
- $standard_system_theme = ((isset(App::$config['system']['theme'])) ? App::$config['system']['theme'] : '');
- $standard_theme_name = ((isset($_SESSION) && x($_SESSION,'theme')) ? $_SESSION['theme'] : $standard_system_theme);
-
- if($is_mobile) {
- if(isset($_SESSION['show_mobile']) && !$_SESSION['show_mobile']) {
- $system_theme = $standard_system_theme;
- $theme_name = $standard_theme_name;
- }
- else {
- $system_theme = ((isset(App::$config['system']['mobile_theme'])) ? App::$config['system']['mobile_theme'] : '');
- $theme_name = ((isset($_SESSION) && x($_SESSION,'mobile_theme')) ? $_SESSION['mobile_theme'] : $system_theme);
-
- if($theme_name === '' || $theme_name === '---' ) {
- // user has selected to have the mobile theme be the same as the normal one
- $system_theme = $standard_system_theme;
- $theme_name = $standard_theme_name;
- }
- }
- }
- else {
- $system_theme = $standard_system_theme;
- $theme_name = $standard_theme_name;
-
- if($page_theme)
- $theme_name = $page_theme;
- }
-
- if($theme_name &&
- (file_exists('view/theme/' . $theme_name . '/css/style.css') ||
- file_exists('view/theme/' . $theme_name . '/php/style.php')))
- return($theme_name);
-
- foreach($app_base_themes as $t) {
- if(file_exists('view/theme/' . $t . '/css/style.css') ||
- file_exists('view/theme/' . $t . '/php/style.php'))
- return($t);
- }
-
- $fallback = array_merge(glob('view/theme/*/css/style.css'),glob('view/theme/*/php/style.php'));
- if(count($fallback))
- return (str_replace('view/theme/','', substr($fallback[0],0,-10)));
-
-}
-
-
-/**
- * @brief Return full URL to theme which is currently in effect.
- *
- * Provide a sane default if nothing is chosen or the specified theme does not exist.
- *
- * @param bool $installing default false
- *
- * @return string
- */
-function current_theme_url($installing = false) {
- global $a;
-
- $t = current_theme();
-
- $opts = '';
- $opts = ((App::$profile_uid) ? '?f=&puid=' . App::$profile_uid : '');
- $opts .= ((x(App::$layout,'schema')) ? '&schema=' . App::$layout['schema'] : '');
- if(file_exists('view/theme/' . $t . '/php/style.php'))
- return('view/theme/' . $t . '/php/style.pcss' . $opts);
-
- return('view/theme/' . $t . '/css/style.css');
-}
-
/**
* @brief Check if current user has admin role.
*
@@ -1966,8 +1975,11 @@ function current_theme_url($installing = false) {
*
* @return bool true if user is an admin
*/
+
function is_site_admin() {
- $a = get_app();
+
+ if(! session_id())
+ return false;
if($_SESSION['delegate'])
return false;
@@ -1988,7 +2000,10 @@ function is_site_admin() {
* @return bool true if user is a developer
*/
function is_developer() {
- $a = get_app();
+
+ if(! session_id())
+ return false;
+
if((intval($_SESSION['authenticated']))
&& (is_array(App::$account))
&& (App::$account['account_roles'] & ACCOUNT_ROLE_DEVELOPER))
@@ -1999,7 +2014,6 @@ function is_developer() {
function load_contact_links($uid) {
- $a = get_app();
$ret = array();
@@ -2008,7 +2022,7 @@ function load_contact_links($uid) {
// logger('load_contact_links');
- $r = q("SELECT abook_id, abook_flags, abook_my_perms, abook_their_perms, xchan_hash, xchan_photo_m, xchan_name, xchan_url from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d ",
+ $r = q("SELECT abook_id, abook_flags, abook_my_perms, abook_their_perms, xchan_hash, xchan_photo_m, xchan_name, xchan_url, xchan_network from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d ",
intval($uid)
);
if($r) {
@@ -2031,6 +2045,7 @@ function load_contact_links($uid) {
*
* @return string
*/
+
function build_querystring($params, $name = null) {
$ret = '';
foreach($params as $key => $val) {
@@ -2073,8 +2088,9 @@ function dba_timer() {
/**
* @brief Returns xchan_hash from the observer.
*
- * @return string Empty if no observer, otherwise xchan_hash from observer
+ * @return empty string if no observer, otherwise xchan_hash from observer
*/
+
function get_observer_hash() {
$observer = App::get_observer();
if(is_array($observer))
@@ -2131,8 +2147,6 @@ function load_pdl(&$a) {
App::$comanche = new Zotlabs\Render\Comanche();
- // require_once('include/comanche.php');
-
if (! count(App::$layout)) {
$arr = array('module' => App::$module, 'layout' => '');
@@ -2153,13 +2167,10 @@ function load_pdl(&$a) {
App::$pdl = $s;
}
}
-
}
function exec_pdl(&$a) {
-// require_once('include/comanche.php');
-
if(App::$pdl) {
App::$comanche->parse(App::$pdl,1);
}
@@ -2195,7 +2206,9 @@ function construct_page(&$a) {
}
}
- if (($p = theme_include(current_theme() . '.js')) != '')
+ $current_theme = Zotlabs\Render\Theme::current();
+
+ if (($p = theme_include($current_theme[0] . '.js')) != '')
head_add_js($p);
if (($p = theme_include('mod_' . App::$module . '.php')) != '')
@@ -2209,7 +2222,7 @@ function construct_page(&$a) {
head_add_css(((x(App::$page, 'template')) ? App::$page['template'] : 'default' ) . '.css');
head_add_css('mod_' . App::$module . '.css');
- head_add_css(current_theme_url($installing));
+ head_add_css(Zotlabs\Render\Theme::url($installing));
head_add_js('mod_' . App::$module . '.js');
@@ -2315,7 +2328,6 @@ function appdirpath() {
* @param string $icon
*/
function head_set_icon($icon) {
- global $a;
App::$data['pageicon'] = $icon;
// logger('head_set_icon: ' . $icon);
@@ -2327,7 +2339,6 @@ function head_set_icon($icon) {
* @return string absolut path to pageicon
*/
function head_get_icon() {
- global $a;
$icon = App::$data['pageicon'];
if(! strpos($icon, '://'))
@@ -2393,7 +2404,7 @@ function z_get_temp_dir() {
}
function z_check_cert() {
- $a = get_app();
+
if(strpos(z_root(),'https://') !== false) {
$x = z_fetch_url(z_root() . '/siteinfo/json');
if(! $x['success']) {
@@ -2414,8 +2425,6 @@ function z_check_cert() {
*/
function cert_bad_email() {
- $a = get_app();
-
$email_tpl = get_intltext_template("cert_bad_eml.tpl");
$email_msg = replace_macros($email_tpl, array(
'$sitename' => App::$config['system']['sitename'],
@@ -2436,26 +2445,30 @@ function cert_bad_email() {
*/
function check_cron_broken() {
- $t = get_config('system','lastpollcheck');
+ $d = get_config('system','lastcron');
+
+ if((! $d) || ($d < datetime_convert('UTC','UTC','now - 4 hours'))) {
+ Zotlabs\Daemon\Master::Summon(array('Cron'));
+ }
+
+ $t = get_config('system','lastcroncheck');
if(! $t) {
// never checked before. Start the timer.
- set_config('system','lastpollcheck',datetime_convert());
+ set_config('system','lastcroncheck',datetime_convert());
return;
}
+
if($t > datetime_convert('UTC','UTC','now - 3 days')) {
// Wait for 3 days before we do anything so as not to swamp the admin with messages
return;
}
- $d = get_config('system','lastpoll');
if(($d) && ($d > datetime_convert('UTC','UTC','now - 3 days'))) {
// Scheduled tasks have run successfully in the last 3 days.
- set_config('system','lastpollcheck',datetime_convert());
+ set_config('system','lastcroncheck',datetime_convert());
return;
}
- $a = get_app();
-
$email_tpl = get_intltext_template("cron_bad_eml.tpl");
$email_msg = replace_macros($email_tpl, array(
'$sitename' => App::$config['system']['sitename'],
@@ -2469,8 +2482,16 @@ function check_cron_broken() {
'From: Administrator' . '@' . App::get_hostname() . "\n"
. 'Content-type: text/plain; charset=UTF-8' . "\n"
. 'Content-transfer-encoding: 8bit' );
- set_config('system','lastpollcheck',datetime_convert());
return;
}
+
+function observer_prohibited($allow_account = false) {
+
+ if($allow_account)
+ return (((get_config('system','block_public')) && (! get_account_id()) && (! remote_channel())) ? true : false );
+ return (((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) ? true : false );
+
+}
+
diff --git a/doc/Privacy.md b/doc/Privacy.md
index 511293c52..089977d7e 100644
--- a/doc/Privacy.md
+++ b/doc/Privacy.md
@@ -42,11 +42,11 @@ You MAY additionally provide other profile information. Any information which yo
Content you provide (status posts, photos, files, etc.) belongs to you. The $Projectname default is to publish content openly and visible to anybody on the internet (PUBLIC). You MAY control this in your channel settings and restrict the default permissions or you MAY restrict the visibility of any single published item separately (PRIVATE). $Projectname developers will ensure that restricted content is ONLY visible to those in the restriction list - to the best of their ability.
-Content (especially status posts) that you share with other networks or that you have made visible to anybody on the internet (PUBLIC) cannot easily be taken back once it has been published. It MAY be shared with other networks and made available through RSS/Atom feeds. It may also be syndicated on other $Projectname sites. It MAY appear on spy networks and internet searches. If you do not wish this default behaviour please adjust your channel settings and restrict who can see your content.
+Content (especially status posts) that you share with other networks or that you have made visible to anybody on the internet (PUBLIC) cannot easily be taken back once it has been published. It MAY be shared with other networks and made available through RSS/Atom feeds. It may also be syndicated on other $Projectname sites. It MAY appear on other networks and websites and be visible in internet searches. If you do not wish this default behaviour please adjust your channel settings and restrict who can see your content.
**Comments and Forum posts**
-Comments to posts that were created by others and posts which are designated as forum posts belong to you as the creator/author, but the distribution of these posts is not under your direct control. These posts/comments MAY be re-distributed to others, and MAY be visible to anybody on the internet. In the case of comments, the creator of the "first message" in the thread to which you are replying controls the distribution of all comments and replies to that message.
+Comments to posts that were created by others and posts which are designated as forum posts belong to you as the creator/author, but the distribution of these posts is not under your direct control, and you relinquish SOME rights to these items. These posts/comments MAY be re-distributed to others, and MAY be visible to anybody on the internet. In the case of comments, the creator of the "first message" in the thread (conversation) to which you are replying controls the distribution of all comments and replies to that message. They "own" and therefore have certain rights with regard to the entire conversation (including all comments contained within it). You can still edit or delete the comment, but the conversation owner also has rights to edit, delete, re-distribute, and backup/restore any or all the content from the conversation.
**Private Information**
diff --git a/doc/addons.bb b/doc/addons.bb
index 67282521f..b83b3276a 100644
--- a/doc/addons.bb
+++ b/doc/addons.bb
@@ -2,10 +2,12 @@
[list=1]
[*] abcjsplugin - Create musical scores in your posts
[*] adultphotoflag - prevents nsfw photos from being displayed in public albums
+[*] b2tbtn - provide button to go directly to top of page if you are scrolled a long way down
[*] bbmath - use complex math expressions in your posts
[*] bookmarker - replace #^ with bookmark link in posts
[*] buglink - provide a bug reporting icon in the lower-left corner of every page
[*] calc - a scientific calculator
+[*] cdav - CalDAV/CardDAV server
[*] chess - cross domain identity aware interactive chess games
[*] chords - generate fingering charts and alternatives for every known guitar chord
[*] custom_home - set a custom page as the hub start page
@@ -13,18 +15,24 @@
[*] diaspora - Diaspora protocol emulator
[*] diaspost - crosspost to a Diaspora account (different from the Diaspora protocol emulator)
[*] dirstats - show some interesting statistics generated by the driectory server
+[*] docs - alternate documentation pages
[*] donate - provides a project donation page
[*] dwpost - crosspost to Dreamwidth
+[*] embedphotos - tool to embed photos from your albums in a post
[*] extcron - use an external cron service to run your hub's scheduled tasks
[*] flattrwidget - provides a "Flattr Us" button
[*] flip - create upside down text
[*] fortunate - displays random quote (fortune cookie). Requires setting up a fortune server.
+[*] friendica - Friendica (DFRN) protocol. Under development.
[*] frphotos - import photo albums from Friendica
+[*] gnusoc - GNU-Social (OStatus) protocol. Under development.
[*] hexit - headecimal conversion tool
+[*] hubwall - send an admin email to all hub accounts
[*] ijpost - crosspost to Insanejournal
[*] irc - connect to IRC chatrooms
[*] jappixmini - XMPP chat
-[*] jsupload - (recommended) upload multiple photos to photo albums at once.
+[*] jsupload - upload multiple photos to photo albums at once.
+[*] keepout - prevents nearly all use of site when not logged in, more restrictive than 'block public' setting
[*] ldapauth - login via account on LDAP or Windows Active Directory domain
[*] libertree - crosspost to Libertree
[*] likebanner - create a "like us on red#matrix" banner image
@@ -32,6 +40,7 @@
[*] logrot - logfile rotation utility
[*] mahjongg - Chinese puzzle game
[*] mailhost - when using multiple channel clones, select one to receive email notifications
+[*] metatag - provide SEO friendly pages
[*] mayan_places - set location field to a random city in the Mayan world
[*] morechoice - additional gender/sexual-preference choices for profiles (not safe for work)
[*] moremoods - Additional mood options
@@ -60,6 +69,7 @@
[*] startpage - set a personal preferred page to redirect after logging in.
[*] statistics_json - Diaspora statistics generator
[*] statusnet - GNU-social and StatusNet crosspost [zrl=[baseurl]/help/addons_gnusocial]Posting To Gnu Social[/zrl]
+[*] std_embeds - allow unfiltered embeds for popular providers like youtube, vimeo and soundcloud
[*] superblock - Highly recommended - completely block an offensive channel from your stream
[*] testdrive - Turns your hub into a test drive site with accounts that expire after a trail period.
[*] tictac - 3D tic-tac-toe
@@ -76,6 +86,13 @@
[h3]Addon Repositories[/h3]
+We [b]strongly recommend[/b] that authors of addons publish/submit them to the project addon repository. This has several advantages. Project developers can easily fix security flaws and make changes to comply with recent changes in core code. Addons provided in third-party repositories are considered untrusted. If the project core code changes in an incompatible way, there may be no alternative but to physically remove or rename the addon files in order to get your site working again. Often only the plugin/addon author can help you regain control of your website, and project developers are unable to assist you; because by definition your site configuration has been modified in ways that we cannot easily test or verify.
+
+For these reasons we [b]strongly recommend[/b] that you do NOT install addons from third-party repositories.
+
+We also recognise that some developers prefer working on their own and do not wish their code to be mingled with the project repository for a variety of reasons. These developers can ease troubleshooting and debugging by providing a README file in their respective code repository outlining the process for submitting patches and bug fixes. It is also recommended that these projects provide both a 'dev' (development) and 'master' (production) branch which tracks the current project branches of those names. This is because dev and master are often not compatible from the viewpoint of library interfaces. It is also highly recommended that your repository versions are tagged and moved forward within 24 hours of project releases. This is a major inconvenience for everybdy involved, and can present downtime for production sites while this process is being carried out; which is one more reason why we [b]strongly recommend[/b] that addons be submitted to the project addon repository and that you do NOT install such third-party addons.
+
+
[url=https://github.com/redmatrix/hubzilla-addons]https://github.com/redmatrix/hubzilla-addons[/url] Main project addon repository
[url=https://github.com/23n/red-addons]https://github.com/23n/red-addons[/url] Oliver's repository (mayan_places and flip)
diff --git a/doc/bugs.bb b/doc/bugs.bb
index 1a27e66ba..f50337648 100644
--- a/doc/bugs.bb
+++ b/doc/bugs.bb
@@ -5,11 +5,6 @@
Hubzilla Community Server is open source software which is maintained by "the community" - essentially unpaid volunteers.
-[b]Hubzilla Enterprise Server[/b]
-
-Hubzilla Enterprise Server is commercial software with a variety of support plans depending on the specific license terms.
-
-
The first thing you need to do is talk to your hub administrator - the person who runs and manages your site. They are in the unique position of having access to the internal software and database and [b]logfiles[/b] and will need to be involved in fixing your problem. Other people "on the net" can't really help with this. The first thing the hub administrator needs to do is look at their logs and/or try to reproduce the problem. So try to be as helpful and courteous as possible in helping them look into the problem.
To find your hub administrator (if you don't know who they are) please look at [url=[baseurl]/siteinfo]this page[/url]. If they have not provided any contact info on that page or provided an "Impressum" there, see [url=[baseurl]/siteinfo/json]this site info summary[/url] under the heading "admin:".
@@ -24,13 +19,6 @@ If you get a blank white screen when doing something, this is almost always a co
[h3]I'm stumped. I can't figure out what is wrong.[/h3]
-[b]Hubzilla Enterprise Server[/b]
-
-Please make contact with the vendor - who will have provided you with support contact details. Preferably this contact will be made by the hub administrator so that he/she can assist us in collecting the necessary issue details. We will assign a ticket and notify you of progress.
-
-
-[b]Hubzilla Community Server[/b]
-
At this point it might be worthwhile discussing the issue on one of the online forums. There may be several of these and some may be more suited to your spoken language. As a last resort, try "Channel One", which is in English.
If the community developers can't help you right away, understand that they are volunteers and may have a lot of other work and demands on their time. At this point you need to file a bug report. You will need an account on github.com to do this. So register, and then visit https://github.com/redmatrix/hubzilla/issues
@@ -39,7 +27,5 @@ If the community developers can't help you right away, understand that they are
Then you wait. If it's a high profile issue, it may get fixed quickly. But nobody is in charge of fixing bugs. If it lingers without resolution, please spend some more time investigating the problem. Ask about anything you don't understand related to the behaviour. You will learn more about how the software works and quite possibly figure out why it isn't working now. Ultimately it is somebody in the community who is going to fix this and you are a member of the community; and this is how the open source process works.
-[b]In either case[/b]
-
-Other developers working to fix the problem may need to find out more, so do your homework and document what is happening and everything you've tried. Don't say "I did xyz and it didn't work." That doesn't tell us anything. Tell us precisely what steps you took and what you expected the result to be, and precisely what happened as a result. If there were any error messages, don't say "there was an error message". Tell us exactly what the message said.
+Other developers working to fix the problem may need to find out more, so do your homework and document what is happening and everything you've tried. Don't say "I did xyz and it didn't work." That doesn't tell us anything. Tell us precisely what steps you took and what you expected the result to be, and precisely what happened as a result. If there were any error messages, don't say "there was an error message". Tell us exactly what the message said. Tell us what version you're running and any other details that may be unique about your site configuration.
\ No newline at end of file
diff --git a/doc/ca/develop.bb b/doc/ca/develop.bb
index 7e82049c7..bc709963c 100644
--- a/doc/ca/develop.bb
+++ b/doc/ca/develop.bb
@@ -26,9 +26,6 @@
[zrl=[baseurl]/help/git_for_non_developers]Git per a No-Desenvolupadors[/zrl]
[zrl=[baseurl]/help/dev_beginner]Manual pas-a-pas per a desenvolupadors principiants[/zrl]
-[h3]Preguntes Més Freqüents (FAQ) Per Desenvolupadors[/h3]
-[zrl=[baseurl]/help/faq_developers]FAQ Per Desenvoupadors[/zrl]
-
[h3]Recursos Externs[/h3]
[url=https://zothub.com/channel/one]Development Channel[/url]
[url=https://federated.social/channel/postgres]Postgres-specific $Projectname Admin Support Channel[/url]
diff --git a/doc/classRedmatrix_1_1Import_1_1Import-members.html b/doc/classRedmatrix_1_1Import_1_1Import-members.html
deleted file mode 100644
index d5e2f9277..000000000
--- a/doc/classRedmatrix_1_1Import_1_1Import-members.html
+++ /dev/null
@@ -1,131 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.3.1"/>
-<title>The Hubzilla: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="navtree.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="resize.js"></script>
-<script type="text/javascript" src="navtree.js"></script>
-<script type="text/javascript">
- $(document).ready(initResizable);
- $(window).load(resizeHeight);
-</script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
- <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
- <td style="padding-left: 0.5em;">
- <div id="projectname">The Hubzilla
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.3.1 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- <li>
- <div id="MSearchBox" class="MSearchBoxInactive">
- <span class="left">
- <img id="MSearchSelect" src="search/mag_sel.png"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- alt=""/>
- <input type="text" id="MSearchField" value="Search" accesskey="S"
- onfocus="searchBox.OnSearchFieldFocus(true)"
- onblur="searchBox.OnSearchFieldFocus(false)"
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
- </span><span class="right">
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
- </span>
- </div>
- </li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
- <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
- <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div id="side-nav" class="ui-resizable side-nav-resizable">
- <div id="nav-tree">
- <div id="nav-tree-contents">
- <div id="nav-sync" class="sync"></div>
- </div>
- </div>
- <div id="splitbar" style="-moz-user-select:none;"
- class="ui-resizable-handle">
- </div>
-</div>
-<script type="text/javascript">
-$(document).ready(function(){initNavTree('classHubzilla_1_1Import_1_1Import.html','');});
-</script>
-<div id="doc-content">
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0"
- name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="header">
- <div class="headertitle">
-<div class="title">Hubzilla\Import\Import Member List</div> </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a>, including all inherited members.</p>
-<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a864aac9fadb4846f5d9f840e8e0f440f">$credentials</a></td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#ad0d2bdc3b388220479063915b4f5c2fc">$itemlist</a></td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a0a05dac405ccc5b617b7b7b3c8ed783c">$items</a></td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
- <tr><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a88c2eeba8d0cba3e7c12a2c45ba0fbc6">$src_items</a></td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a5434325afb2c633c52540127d717800a">convert_child</a>($child)</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a107703a43a1b0ceb2af7ae470cb3f218">convert_item</a>($item_ident)</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#addf6e53dacd971eaab49be4b17a767d6">convert_taxonomy</a>($item_ident)</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a57561904b0f127e0d9a3e2c33688daf8">get_children</a>($item_ident)</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367">get_credentials</a>()</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a27987a41cb703a796f1821baeb4774a2">get_item</a>($item_ident)</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a772c28edf36aaf8e66007a95004c4059">get_item_ident</a>($item)</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc">get_itemlist</a>()</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#ae3c6472bea1a44025bc2e152604eb20c">get_taxonomy</a>($item_ident)</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">run</a>()</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a33ed595de044c0ec1cd84cca719e31dc">store</a>($item, $update=false)</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-</div><!-- doc-content --> \ No newline at end of file
diff --git a/doc/classRedmatrix_1_1Import_1_1Import.html b/doc/classRedmatrix_1_1Import_1_1Import.html
deleted file mode 100644
index 9a7128d65..000000000
--- a/doc/classRedmatrix_1_1Import_1_1Import.html
+++ /dev/null
@@ -1,446 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.3.1"/>
-<title>The Hubzilla: Hubzilla\Import\Import Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="navtree.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="resize.js"></script>
-<script type="text/javascript" src="navtree.js"></script>
-<script type="text/javascript">
- $(document).ready(initResizable);
- $(window).load(resizeHeight);
-</script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
- <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
- <td style="padding-left: 0.5em;">
- <div id="projectname">The Hubzilla
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.3.1 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- <li>
- <div id="MSearchBox" class="MSearchBoxInactive">
- <span class="left">
- <img id="MSearchSelect" src="search/mag_sel.png"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- alt=""/>
- <input type="text" id="MSearchField" value="Search" accesskey="S"
- onfocus="searchBox.OnSearchFieldFocus(true)"
- onblur="searchBox.OnSearchFieldFocus(false)"
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
- </span><span class="right">
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
- </span>
- </div>
- </li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
- <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
- <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div id="side-nav" class="ui-resizable side-nav-resizable">
- <div id="nav-tree">
- <div id="nav-tree-contents">
- <div id="nav-sync" class="sync"></div>
- </div>
- </div>
- <div id="splitbar" style="-moz-user-select:none;"
- class="ui-resizable-handle">
- </div>
-</div>
-<script type="text/javascript">
-$(document).ready(function(){initNavTree('classHubzilla_1_1Import_1_1Import.html','');});
-</script>
-<div id="doc-content">
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0"
- name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="#pro-attribs">Protected Attributes</a> &#124;
-<a href="#pri-attribs">Private Attributes</a> &#124;
-<a href="classHubzilla_1_1Import_1_1Import-members.html">List of all members</a> </div>
- <div class="headertitle">
-<div class="title">Hubzilla\Import\Import Class Reference</div> </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a24134929d9a8a682da2036a0bf326367"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367">get_credentials</a> ()</td></tr>
-<tr class="separator:a24134929d9a8a682da2036a0bf326367"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a855cd5a79b95d269ae8737fae774e3bc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc">get_itemlist</a> ()</td></tr>
-<tr class="separator:a855cd5a79b95d269ae8737fae774e3bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a772c28edf36aaf8e66007a95004c4059"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a772c28edf36aaf8e66007a95004c4059">get_item_ident</a> ($item)</td></tr>
-<tr class="separator:a772c28edf36aaf8e66007a95004c4059"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a27987a41cb703a796f1821baeb4774a2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a27987a41cb703a796f1821baeb4774a2">get_item</a> ($item_ident)</td></tr>
-<tr class="separator:a27987a41cb703a796f1821baeb4774a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae3c6472bea1a44025bc2e152604eb20c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#ae3c6472bea1a44025bc2e152604eb20c">get_taxonomy</a> ($item_ident)</td></tr>
-<tr class="separator:ae3c6472bea1a44025bc2e152604eb20c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a57561904b0f127e0d9a3e2c33688daf8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a57561904b0f127e0d9a3e2c33688daf8">get_children</a> ($item_ident)</td></tr>
-<tr class="separator:a57561904b0f127e0d9a3e2c33688daf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a107703a43a1b0ceb2af7ae470cb3f218"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a107703a43a1b0ceb2af7ae470cb3f218">convert_item</a> ($item_ident)</td></tr>
-<tr class="separator:a107703a43a1b0ceb2af7ae470cb3f218"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:addf6e53dacd971eaab49be4b17a767d6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#addf6e53dacd971eaab49be4b17a767d6">convert_taxonomy</a> ($item_ident)</td></tr>
-<tr class="separator:addf6e53dacd971eaab49be4b17a767d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5434325afb2c633c52540127d717800a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a5434325afb2c633c52540127d717800a">convert_child</a> ($child)</td></tr>
-<tr class="separator:a5434325afb2c633c52540127d717800a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a33ed595de044c0ec1cd84cca719e31dc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a33ed595de044c0ec1cd84cca719e31dc">store</a> ($item, $update=false)</td></tr>
-<tr class="separator:a33ed595de044c0ec1cd84cca719e31dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8d138a9a7d4f79b81d3446ca216a602c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">run</a> ()</td></tr>
-<tr class="separator:a8d138a9a7d4f79b81d3446ca216a602c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:ad0d2bdc3b388220479063915b4f5c2fc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#ad0d2bdc3b388220479063915b4f5c2fc">$itemlist</a> = null</td></tr>
-<tr class="separator:ad0d2bdc3b388220479063915b4f5c2fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a88c2eeba8d0cba3e7c12a2c45ba0fbc6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a88c2eeba8d0cba3e7c12a2c45ba0fbc6">$src_items</a> = null</td></tr>
-<tr class="separator:a88c2eeba8d0cba3e7c12a2c45ba0fbc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0a05dac405ccc5b617b7b7b3c8ed783c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a0a05dac405ccc5b617b7b7b3c8ed783c">$items</a> = null</td></tr>
-<tr class="separator:a0a05dac405ccc5b617b7b7b3c8ed783c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
-Private Attributes</h2></td></tr>
-<tr class="memitem:a864aac9fadb4846f5d9f840e8e0f440f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a864aac9fadb4846f5d9f840e8e0f440f">$credentials</a> = null</td></tr>
-<tr class="separator:a864aac9fadb4846f5d9f840e8e0f440f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a5434325afb2c633c52540127d717800a"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::convert_child </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$child</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">Hubzilla\Import\Import\run()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a107703a43a1b0ceb2af7ae470cb3f218"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::convert_item </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$item_ident</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">Hubzilla\Import\Import\run()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="addf6e53dacd971eaab49be4b17a767d6"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::convert_taxonomy </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$item_ident</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">Hubzilla\Import\Import\run()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a57561904b0f127e0d9a3e2c33688daf8"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::get_children </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$item_ident</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">Hubzilla\Import\Import\run()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a24134929d9a8a682da2036a0bf326367"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::get_credentials </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">Hubzilla\Import\Import\run()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a27987a41cb703a796f1821baeb4774a2"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::get_item </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$item_ident</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">Hubzilla\Import\Import\run()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a772c28edf36aaf8e66007a95004c4059"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::get_item_ident </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$item</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a855cd5a79b95d269ae8737fae774e3bc"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::get_itemlist </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">Hubzilla\Import\Import\run()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae3c6472bea1a44025bc2e152604eb20c"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::get_taxonomy </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$item_ident</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">Hubzilla\Import\Import\run()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a8d138a9a7d4f79b81d3446ca216a602c"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::run </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a33ed595de044c0ec1cd84cca719e31dc"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::store </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$item</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$update</em> = <code>false</code>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a864aac9fadb4846f5d9f840e8e0f440f"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::$credentials = null</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367">Hubzilla\Import\Import\get_credentials()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad0d2bdc3b388220479063915b4f5c2fc"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::$itemlist = null</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">protected</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc">Hubzilla\Import\Import\get_itemlist()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0a05dac405ccc5b617b7b7b3c8ed783c"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::$items = null</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">protected</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a88c2eeba8d0cba3e7c12a2c45ba0fbc6"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::$src_items = null</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">protected</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>include/Import/<a class="el" href="Importer_8php.html">Importer.php</a></li>
-</ul>
-</div><!-- contents -->
-</div><!-- doc-content --> \ No newline at end of file
diff --git a/doc/context/es b/doc/context/es
deleted file mode 120000
index 55914a5c4..000000000
--- a/doc/context/es
+++ /dev/null
@@ -1 +0,0 @@
-es-es/ \ No newline at end of file
diff --git a/doc/de/develop.bb b/doc/de/develop.bb
index 473b18b68..30e2954c6 100644
--- a/doc/de/develop.bb
+++ b/doc/de/develop.bb
@@ -25,9 +25,6 @@
[zrl=[baseurl]/help/git_for_non_developers]Git für Nicht-Entwickler[/zrl]
[zrl=[baseurl]/help/dev_beginner]Schritt-für-Schritt-Einführung für neue Entwickler[/zrl]
-[h3]Häufig gestellte Fragen für Entwickler[/h3]
-[zrl=[baseurl]/help/faq_developers]FAQ für Entwickler[/zrl]
-
[h3]Externe Ressourcen[/h3]
[url=https://zothub.com/channel/one]Entwickler-Kanal[/url]
[url=https://federated.social/channel/postgres]Postgres-spezifischer Admin-Support-Kanal[/url]
diff --git a/doc/develop.bb b/doc/develop.bb
index 56ba08421..ef3ea5bd0 100644
--- a/doc/develop.bb
+++ b/doc/develop.bb
@@ -26,9 +26,6 @@
[zrl=[baseurl]/help/git_for_non_developers]Git for Non-Developers[/zrl]
[zrl=[baseurl]/help/dev_beginner]Step-for-step manual for beginning developers[/zrl]
-[h3]Frequently Asked Questions For Developers[/h3]
-[zrl=[baseurl]/help/faq_developers]FAQ For Developers[/zrl]
-
[h3]External Resources[/h3]
[url=https://zothub.com/channel/one]Development Channel[/url]
[url=https://federated.social/channel/postgres]Postgres-specific $Projectname Admin Support Channel[/url]
diff --git a/doc/developer_function_primer.bb b/doc/developer_function_primer.bb
index 684fea569..183581361 100644
--- a/doc/developer_function_primer.bb
+++ b/doc/developer_function_primer.bb
@@ -12,10 +12,6 @@ Returns authenticated numeric channel_id if authenticated and connected to a cha
Returns authenticated string hash of Red global identifier, if authenticated via remote auth, or an empty string.
-[b]get_app()[/b]
-
-Returns the global app structure ($a).
-
[b]App::get_observer()[/b]
returns an xchan structure representing the current viewer if authenticated (locally or remotely).
diff --git a/doc/faq_developers.bb b/doc/faq_developers.bb
deleted file mode 100644
index 5da2c19ff..000000000
--- a/doc/faq_developers.bb
+++ /dev/null
@@ -1,454 +0,0 @@
-[size=large][b]Frequently Asked Questions For Developers[/b][/size]
-
-[toc]
-
-
-[h3]What does $a mean?[/h3]
-$a is a class defined in boot.php and passed all around $Projectname as a global reference variable. It defines everything necessary for the $Projectname application: Server variables, URL arguments, page structures, layouts, content, installed plugins, output device info, theme info, identity of the observer and (potential) page owner ...
-
-We don't ever create more than one instance and always modify the elements of the single instance. The mechanics of this are somewhat tricky. If you have a function that is passed $a and needs to modify $a you need to declare it as a reference with '&' e.g.
-
-[code]function foo(&$a) { App::$something = 'x'; // whatever };
-
-*or* access it within your function as a global variable via get_app()
-
-function foo() {
- $a = get_app();
- App::$something = 'x';
-}
-
-
-function foo($a) { App::$something = 'x'; };
-
-will *not* change the global app state.
-
-function foo() {
- App::$something = 'x';
-}
-[/code]
-
-
-An example (large) &$a object showing some of its many members and structures-- in JSON format for easier readability-- is here:
-
-[code] {
- "category": null,
- "nav_sel": {
- "home": null,
- "community": null,
- "contacts": null,
- "directory": null,
- "settings": null,
- "notifications": null,
- "intros": null,
- "messages": null,
- "register": null,
- "manage": null,
- "profiles": null,
- "network": null,
- "help": "active"
- },
- "argc": 2,
- "install": false,
- "is_mobile": false,
- "timezone": "America/Los_Angeles",
- "sourcename": "",
- "module_loaded": true,
- "contacts": null,
- "interactive": true,
- "config": {
- "system": {
- "max_import_size": 200000,
- "logfile": "/tmp/hubzilla.log",
- "channels_active_monthly_stat": "3",
- "last_expire_day": "4",
- "loglevel": "4",
- "sitename": "Hubzilla",
- "access_policy": 0,
- "directory_mode": 0,
- "debugging": "1",
- "verify_email": 1,
- "register_text": "",
- "urlverify": "687474703a2f2f6875627a696c6c61",
- "register_policy": 2,
- "theme": "redbasic",
- "smarty3_folder": "/home/src/hubzilla/store/[data]/smarty3",
- "channels_total_stat": "4",
- "admin_email": "foo@bar.com",
- "channels_active_halfyear_stat": "3",
- "location_hash": "910792b7bf75296cbf238ae29a5493f3c78805812652d3f0396e88763a26ce1b",
- "local_posts_stat": "63",
- "lastpollcheck": "2015-11-03 07:40:38",
- "baseurl": "http://hubzilla",
- "config_loaded": true,
- "pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuR4neYAxuWwZg34fqofU\nZg8y1YSTX39Tzhgcgn7QFCeH600NHJBHWXbPdS5imdYq6W+P1vtKxsVNLI9d01+j\ns3MF3amgEuJH0X+JLLjyittQksyAiukvh/o4MSit8mcYcXs8Dxaybe+KaY09N4ys\ndxKcn6EPlthUiQPJMPitybp4vYkw9LupWZOQWThz9ur6T5wnk9ehBIPFN8gYvKrT\nAG9RFfbq3y59rTOiSHNA2PIUMzo2HEh4QBVCvVolKt7GPhUM4Bze40VRe8ELZTPp\nyehNxEHyhHZfnC+XRVNlvSPXBU2vtE+zcok+5DXsKAqMt8YgFIThNEOLQKvff/lv\nsdGvk6jJZok7+9lKtYfwnNnRWf51aVVuSAO3aIIVLroLyhiji0KA7G5YRHeF1rNL\np88e8peMyUMCX2Svv1wudJzqOfWSvOpY0NLZrdGZXRN2/rXyHPRD/TtS3SNDdd7J\nYQUjyxGjF1/zB3xqvPr09s8tzXqJl9pZNcN9iz58oPBbTuGdUr8CJro/3nVHgkRf\nw7/zhapSW1UaroJjecrC9yWx5QUD3KNU51phsP9iHCFdMyPBdUHjmNvE5f7YJWBh\nO1rRKUoE3i+eHLYAWeYblFX7T+EKOCB2hd3NUrIqDL98OSpfDiZT7rf9PdcWCOY5\nuddm6KzwHjffl5kZd8MM8bMCAwEAAQ==\n-----END PUBLIC KEY-----\n",
- "addon": "converse",
- "lastpoll": "2015-11-04 07:40:01",
- "php_path": "/usr/bin/php",
- "allowed_themes": "redbasic",
- "sellpage": "",
- "prvkey": "-----BEGIN PRIVATE KEY-----\n-----END PRIVATE KEY-----\n",
- "directory_server": "https://red.zottel.red",
- "curl_ssl_ciphers": "ALL:!eNULL",
- "db_version": "1158"
- },
- "config": {
- "config_loaded": true
- },
- "feature": {
- "config_loaded": true
- },
- "2": {
- "redbasic": {
- "schema": "dark",
- "comment_indent": "",
- "toolicon_activecolour": "",
- "item_colour": "",
- "nav_gradient_top": "",
- "nav_active_icon_colour": "",
- "nav_active_gradient_top": "",
- "top_photo": "",
- "converse_width": "",
- "nav_min_opacity": "",
- "body_font_size": "",
- "reply_photo": "",
- "background_colour": "",
- "radius": "",
- "nav_gradient_bottom": "",
- "toolicon_colour": "",
- "nav_active_gradient_bottom": "",
- "nav_icon_colour": "",
- "narrow_navbar": "",
- "nav_bg": "",
- "comment_item_colour": "",
- "config_loaded": true,
- "banner_colour": "",
- "comment_border_colour": "",
- "align_left": "",
- "font_size": "",
- "font_colour": "",
- "nav_bd": "",
- "photo_shadow": "",
- "background_image": "",
- "link_colour": ""
- },
- "system": {
- "network_list_mode": "0",
- "post_joingroup": "0",
- "channel_list_mode": "0",
- "title_tosource": "0",
- "blocktags": "0",
- "photo_path": "%Y-%m",
- "suggestme": "0",
- "autoperms": "0",
- "hide_presence": "0",
- "channel_divmore_height": "400",
- "network_divmore_height": "400",
- "post_profilechange": "0",
- "channel_menu": "",
- "always_show_in_notices": "0",
- "use_browser_location": "0",
- "update_interval": "80000",
- "itemspage": "20",
- "attach_path": "%Y-%m",
- "permissions_role": "social",
- "vnotify": "2047",
- "post_newfriend": "0",
- "config_loaded": true,
- "no_smilies": "0",
- "evdays": "3",
- "user_scalable": "1"
- }
- }
- },
- "layout": {
- "region_aside": "\n&lt;div class=&quot;widget&quot;&gt;&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul class=&quot;nav nav-pills nav-stacked&quot;&gt;&lt;li&gt;&lt;a href=&quot;help/general&quot;&gt;Project/Site Information&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;help/members&quot;&gt;For Members&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;help/admins&quot;&gt;For Administrators&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;help/develop&quot;&gt;For Developers&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;\n"
- },
- "is_sys": false,
- "content": null,
- "cid": null,
- "profile_uid": 0,
- "hooks": {
- "construct_page": [
- [
- "addon/converse/converse.php",
- "converse_content"
- ]
- ]
- },
- "strings": [],
- "js_sources": [
- "jquery.js",
- "library/justifiedGallery/jquery.justifiedGallery.min.js",
- "library/sprintf.js/dist/sprintf.min.js",
- "spin.js",
- "jquery.spin.js",
- "jquery.textinputs.js",
- "autocomplete.js",
- "library/jquery-textcomplete/jquery.textcomplete.js",
- "library/jquery.timeago.js",
- "library/readmore.js/readmore.js",
- "library/jgrowl/jquery.jgrowl_minimized.js",
- "library/cryptojs/components/core-min.js",
- "library/cryptojs/rollups/aes.js",
- "library/cryptojs/rollups/rabbit.js",
- "library/cryptojs/rollups/tripledes.js",
- "acl.js",
- "webtoolkit.base64.js",
- "main.js",
- "crypto.js",
- "library/jRange/jquery.range.js",
- "library/colorbox/jquery.colorbox-min.js",
- "library/jquery.AreYouSure/jquery.are-you-sure.js",
- "library/tableofcontents/jquery.toc.js",
- "library/bootstrap/js/bootstrap.min.js",
- "library/bootbox/bootbox.min.js",
- "library/bootstrap-tagsinput/bootstrap-tagsinput.js",
- "library/datetimepicker/jquery.datetimepicker.js",
- "library/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js",
- "view/theme/redbasic/js/redbasic.js",
- "mod_help.js"
- ],
- "channel": {
- "channel_hash": "uRy0nF-urp6k_bFrkdtCc2EkBynwpgCJL_FQFoTwyw2Hep7AHkrSt1MZcHWV_8DQucNlHSY1vHgUNS2Fvoirpw",
- "channel_address": "testes",
- "channel_primary": "1",
- "channel_allow_gid": "",
- "xchan_deleted": "0",
- "xchan_connpage": "",
- "channel_r_storage": "1",
- "xchan_pubforum": "0",
- "channel_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7MP/xxsq/srA8I7m+WKf\nHlguwwg0b1tz+I3o+djp7b+wF8q03XPKQpYmKfXIj47vpAOu75nKA4Tn90lLymmk\nSXUHogOqOMy1CHoaVrAw2T2/tAeRoMAjAJ5IxSOAM7Xda0nVUK6FmfxPcvftKf9y\nPmvvFadXpaHT4JGPH0tszDhGXLkqlt9xSkIkpsgMA6emj/7bacc6x8eTdtvzo2e5\n/NyPXvBKH4henmYaKjq/4aIYZcBWYVGt6onxaP2j1cSNbksnOY7GbJl+hy95iFoZ\nDWGxiFwQd+CroiBbdlpVGp13cV/WKp2spZzlzkmCRGYoNbbM5RlgFLnmyTa4XMZE\nwnA3ZUB59MsrUJK+0H/utiZrpX5NQcFl33z8k5zB3pPnhc5S5/P+UJZRnqhet1wQ\n7AZVmdP30D75QD8LZ4SytZ1DHn/N76EsVhSADNMnUfEphs708V33Z0gFWultYDoK\nlvXUf4O0/V8GTufFHb6XdAiy92IUzrormXCpXoOmdOcJdaH9RnotZi/DkuQ0zP+Y\nCvxU9nrjyZvAwAdew//XFDjw4HoThVM4k4jzkIhCTlCao/yRnNM7A/i3OKcXq9wU\n7OZqcRfM9o0BFpZTIoXB7BMtpeioJcBi/7FUaV9U9uYLFuLL0qWa1YxLwfsN9rDk\n6A1gbhD60G9/dAbolp8xAHkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
- "xchan_flags": "0",
- "channel_allow_cid": "",
- "xchan_censored": "0",
- "channel_w_pages": "128",
- "xchan_instance_url": "",
- "xchan_photo_s": "http://hubzilla/photo/profile/s/2",
- "channel_w_stream": "128",
- "channel_timezone": "America/Los_Angeles",
- "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7MP/xxsq/srA8I7m+WKf\nHlguwwg0b1tz+I3o+djp7b+wF8q03XPKQpYmKfXIj47vpAOu75nKA4Tn90lLymmk\nSXUHogOqOMy1CHoaVrAw2T2/tAeRoMAjAJ5IxSOAM7Xda0nVUK6FmfxPcvftKf9y\nPmvvFadXpaHT4JGPH0tszDhGXLkqlt9xSkIkpsgMA6emj/7bacc6x8eTdtvzo2e5\n/NyPXvBKH4henmYaKjq/4aIYZcBWYVGt6onxaP2j1cSNbksnOY7GbJl+hy95iFoZ\nDWGxiFwQd+CroiBbdlpVGp13cV/WKp2spZzlzkmCRGYoNbbM5RlgFLnmyTa4XMZE\nwnA3ZUB59MsrUJK+0H/utiZrpX5NQcFl33z8k5zB3pPnhc5S5/P+UJZRnqhet1wQ\n7AZVmdP30D75QD8LZ4SytZ1DHn/N76EsVhSADNMnUfEphs708V33Z0gFWultYDoK\nlvXUf4O0/V8GTufFHb6XdAiy92IUzrormXCpXoOmdOcJdaH9RnotZi/DkuQ0zP+Y\nCvxU9nrjyZvAwAdew//XFDjw4HoThVM4k4jzkIhCTlCao/yRnNM7A/i3OKcXq9wU\n7OZqcRfM9o0BFpZTIoXB7BMtpeioJcBi/7FUaV9U9uYLFuLL0qWa1YxLwfsN9rDk\n6A1gbhD60G9/dAbolp8xAHkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
- "channel_w_chat": "128",
- "xchan_connurl": "http://hubzilla/poco/testes",
- "channel_guid_sig": "XXX",
- "xchan_name_date": "2015-10-09 00:45:41",
- "channel_expire_days": "0",
- "xchan_system": "0",
- "xchan_photo_date": "2015-10-09 00:45:41",
- "channel_startpage": "",
- "channel_deny_gid": "",
- "channel_lastpost": "2015-10-09 02:53:23",
- "xchan_photo_m": "http://hubzilla/photo/profile/m/2",
- "channel_passwd_reset": "",
- "xchan_hidden": "0",
- "xchan_selfcensored": "0",
- "xchan_photo_mimetype": "image/jpeg",
- "channel_a_republish": "128",
- "channel_w_tagwall": "128",
- "channel_r_stream": "1",
- "channel_w_comment": "128",
- "channel_system": "0",
- "channel_w_mail": "128",
- "channel_pageflags": "0",
- "xchan_network": "zot",
- "channel_id": "2",
- "xchan_guid": "Ok-ycNKQYMzjokLnIz5OTCF8M5f4CtRT4vJCUeUivJhIOJWk3ORwIQgGx3P5g2Yz79KxQ-rs_Cn2G_jsgM6hmw",
- "channel_removed": "0",
- "channel_dirdate": "2015-10-09 00:46:00",
- "channel_w_storage": "128",
- "channel_w_photos": "0",
- "channel_prvkey": "-----BEGIN PRIVATE KEY----------END PRIVATE KEY-----\n",
- "channel_guid": "Ok-ycNKQYMzjokLnIz5OTCF8M5f4CtRT4vJCUeUivJhIOJWk3ORwIQgGx3P5g2Yz79KxQ-rs_Cn2G_jsgM6hmw",
- "channel_max_friend_req": "0",
- "channel_w_wall": "128",
- "channel_r_abook": "1",
- "channel_max_anon_mail": "0",
- "channel_location": "",
- "channel_a_delegate": "128",
- "channel_deny_cid": "",
- "channel_r_profile": "1",
- "channel_name": "testes",
- "xchan_guid_sig": "XXX",
- "xchan_hash": "uRy0nF-urp6k_bFrkdtCc2EkBynwpgCJL_FQFoTwyw2Hep7AHkrSt1MZcHWV_8DQucNlHSY1vHgUNS2Fvoirpw",
- "channel_notifyflags": "703",
- "channel_theme": "redbasic",
- "channel_w_like": "2",
- "xchan_url": "http://hubzilla/channel/testes",
- "channel_default_group": "",
- "channel_r_photos": "0",
- "channel_account_id": "1",
- "xchan_addr": "testes@hubzilla",
- "channel_r_pages": "1",
- "channel_deleted": "0000-00-00 00:00:00",
- "xchan_orphan": "0",
- "xchan_follow": "http://hubzilla/follow?f=&amp;url=%s",
- "xchan_name": "testes",
- "xchan_photo_l": "http://hubzilla/photo/profile/l/2"
- },
- "page": {
- "content": "&lt;div id=&quot;help-content&quot; class=&quot;generic-content-wrapper&quot;&gt;\n\t&lt;div class=&quot;section-title-wrapper&quot;&gt;\n\t&lt;h2&gt;Hubzilla Documentation&lt;/h2&gt;\n\t&lt;/div&gt;\n\t&lt;div class=&quot;section-content-wrapper&quot;&gt;\n\t&lt;h2&gt;Documentation for Developers&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Technical Documentation&lt;/h3&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/Zot---A-High-Level-Overview&quot; target=&quot;_blank&quot; &gt;A high level overview of Zot&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/zot&quot; target=&quot;_blank&quot; &gt;An introduction to Zot&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/zot_structures&quot; target=&quot;_blank&quot; &gt;Zot Stuctures&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/comanche&quot; target=&quot;_blank&quot; &gt;Comanche Page Descriptions&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/Creating-Templates&quot; target=&quot;_blank&quot; &gt;Creating Comanche Templates&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/Widgets&quot; target=&quot;_blank&quot; &gt;Widgets&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/plugins&quot; target=&quot;_blank&quot; &gt;Plugins&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/hooks&quot; target=&quot;_blank&quot; &gt;Hooks&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/doco&quot; target=&quot;_blank&quot; &gt;Contributing Documentation&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/DerivedTheme1&quot; target=&quot;_blank&quot; &gt;Creating Derivative Themes&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/schema_development&quot; target=&quot;_blank&quot; &gt;Schemas&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/Translations&quot; target=&quot;_blank&quot; &gt;Translations&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/developers&quot; target=&quot;_blank&quot; &gt;Developers&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/intro_for_developers&quot; target=&quot;_blank&quot; &gt;Intro for Developers&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/database&quot; target=&quot;_blank&quot; &gt;Database schema documentation&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/api_functions&quot; target=&quot;_blank&quot; &gt;API functions&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/api_posting&quot; target=&quot;_blank&quot; &gt;Posting to the red# using the API&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/developer_function_primer&quot; target=&quot;_blank&quot; &gt;Red Functions 101&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/doc/html/&quot; target=&quot;_blank&quot; &gt;Code Reference (Doxygen generated - sets cookies)&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/to_do_doco&quot; target=&quot;_blank&quot; &gt;To-Do list for the Red Documentation Project&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/to_do_code&quot; target=&quot;_blank&quot; &gt;To-Do list for Developers&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/roadmap&quot; target=&quot;_blank&quot; &gt;Version 3 roadmap&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/git_for_non_developers&quot; target=&quot;_blank&quot; &gt;Git for Non-Developers&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/dev_beginner&quot; target=&quot;_blank&quot; &gt;Step-for-step manual for beginning developers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Frequently Asked Questions For Developers&lt;/h3&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/faq_developers&quot; target=&quot;_blank&quot; &gt;FAQ For Developers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;External Resources&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://zothub.com/channel/one&quot; target=&quot;_blank&quot; &gt;Development Channel&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://federated.social/channel/postgres&quot; target=&quot;_blank&quot; &gt;Postgres-specific Hubzilla Admin Support Channel&lt;/a&gt;&lt;br /&gt;\n\t&lt;/div&gt;\n&lt;/div&gt;\n&lt;script&gt;var homebase = &quot;http://hubzilla/channel/testes&quot;;&lt;/script&gt;",
- "page_title": "help",
- "title": "Help: Develop",
- "nav": "\t&lt;div class=&quot;container-fluid&quot;&gt;\n\t\t&lt;div class=&quot;navbar-header&quot;&gt;\n\t\t\t&lt;button type=&quot;button&quot; class=&quot;navbar-toggle&quot; data-toggle=&quot;collapse&quot; data-target=&quot;#navbar-collapse-1&quot;&gt;\n\t\t\t\t&lt;span class=&quot;icon-bar&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;span class=&quot;icon-bar&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;span class=&quot;icon-bar&quot;&gt;&lt;/span&gt;\n\t\t\t&lt;/button&gt;\n\t\t\t&lt;button id=&quot;expand-tabs&quot; type=&quot;button&quot; class=&quot;navbar-toggle&quot; data-toggle=&quot;collapse&quot; data-target=&quot;#tabs-collapse-1&quot;&gt;\n\t\t\t\t&lt;i class=&quot;icon-circle-arrow-down&quot; id=&quot;expand-tabs-icon&quot;&gt;&lt;/i&gt;\n\t\t\t&lt;/button&gt;\n\t\t\t&lt;button id=&quot;expand-aside&quot; type=&quot;button&quot; class=&quot;navbar-toggle&quot; data-toggle=&quot;offcanvas&quot; data-target=&quot;#region_1&quot;&gt;\n\t\t\t\t&lt;i class=&quot;icon-circle-arrow-right&quot; id=&quot;expand-aside-icon&quot;&gt;&lt;/i&gt;\n\t\t\t&lt;/button&gt;\n\t\t\t\t\t\t\t&lt;img class=&quot;dropdown-toggle fakelink&quot; data-toggle=&quot;dropdown&quot; id=&quot;avatar&quot; src=&quot;http://hubzilla/photo/profile/m/2&quot; alt=&quot;testes@hubzilla&quot;&gt;&lt;span class=&quot;caret&quot; id=&quot;usermenu-caret&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;ul class=&quot;dropdown-menu&quot; role=&quot;menu&quot; aria-labelledby=&quot;avatar&quot;&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;channel/testes&quot; title=&quot;Your posts and conversations&quot; role=&quot;menuitem&quot; id=&quot;channel_nav_btn&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;profile/testes&quot; title=&quot;Your profile page&quot; role=&quot;menuitem&quot; id=&quot;profile_nav_btn&quot;&gt;View Profile&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;profiles/2&quot; title=&quot;Edit your profile&quot; role=&quot;menuitem&quot; id=&quot;profiles_nav_btn&quot;&gt;Edit Profile&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;photos/testes&quot; title=&quot;Your photos&quot; role=&quot;menuitem&quot; id=&quot;photos_nav_btn&quot;&gt;Photos&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;cloud/testes&quot; title=&quot;Your files&quot; role=&quot;menuitem&quot; id=&quot;cloud_nav_btn&quot;&gt;Files&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;chat/testes/new&quot; title=&quot;Your chatrooms&quot; role=&quot;menuitem&quot; id=&quot;chat_nav_btn&quot;&gt;Chat&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot; class=&quot;divider&quot;&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;settings&quot; title=&quot;Account/Channel Settings&quot; role=&quot;menuitem&quot; id=&quot;settings_nav_btn&quot;&gt;Settings&lt;/a&gt;&lt;/li&gt;\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;manage&quot; title=&quot;Manage Your Channels&quot; role=&quot;menuitem&quot; id=&quot;manage_nav_btn&quot;&gt;Channel Manager&lt;/a&gt;&lt;/li&gt;\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot; class=&quot;divider&quot;&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;admin/&quot; title=&quot;Site Setup and Configuration&quot; role=&quot;menuitem&quot; id=&quot;admin_nav_btn&quot;&gt;Admin&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot; class=&quot;divider&quot;&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;logout&quot; title=&quot;End this session&quot; role=&quot;menuitem&quot; id=&quot;logout_nav_btn&quot;&gt;Logout&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t\t\t\t\t\t&lt;/div&gt;\n\t\t&lt;div class=&quot;collapse navbar-collapse&quot; id=&quot;navbar-collapse-1&quot;&gt;\n\t\t\t&lt;ul class=&quot;nav navbar-nav navbar-left&quot;&gt;\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a href=&quot;network&quot; title=&quot;Your grid&quot; id=&quot;network_nav_btn&quot;&gt;&lt;i class=&quot;icon-th&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;net-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-network-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-network-menu&quot; role=&quot;menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;network&quot;&gt;\n\t\t\t\t\t\t\n\t\t\t\t\t\t&lt;li id=&quot;nav-network-mark-all&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;markRead('network'); return false;&quot;&gt;Mark all grid notifications seen&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a href=&quot;network&quot; title=&quot;Your grid&quot; &gt;&lt;i class=&quot;icon-th&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;net-update badge&quot; rel=&quot;#nav-network-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;channel/testes&quot; title=&quot;Channel home&quot; id=&quot;home_nav_btn&quot;&gt;&lt;i class=&quot;icon-home&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;home-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-home-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-home-menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;home&quot;&gt;\n\t\t\t\t\t\t\n\t\t\t\t\t\t&lt;li id=&quot;nav-home-mark-all&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;markRead('home'); return false;&quot;&gt;Mark all channel notifications seen&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;channel/testes&quot; title=&quot;Channel home&quot; &gt;&lt;i class=&quot;icon-home&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;home-update badge&quot; rel=&quot;#nav-home-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;mail/combined&quot; title=&quot;Private mail&quot; id=&quot;mail_nav_btn&quot;&gt;&lt;i class=&quot;icon-envelope&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;mail-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-messages-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-messages-menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;messages&quot;&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-messages-see-all&quot;&gt;&lt;a href=&quot;mail/combined&quot;&gt;See all private messages&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-messages-mark-all&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;markRead('messages'); return false;&quot;&gt;Mark all private messages seen&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;mail/combined&quot; title=&quot;Private mail&quot; &gt;&lt;i class=&quot;icon-envelope&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;mail-update badge&quot; rel=&quot;#nav-messages-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;events&quot; title=&quot;Event Calendar&quot; id='events_nav_btn'&gt;&lt;i class=&quot;icon-calendar&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;all_events-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-all_events-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-all_events-menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;all_events&quot;&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-all_events-see-all&quot;&gt;&lt;a href=&quot;events&quot;&gt;See all events&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-all_events-mark-all&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;markRead('all_events'); return false;&quot;&gt;Mark all events seen&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;events&quot; title=&quot;Event Calendar&quot; &gt;&lt;i class=&quot;icon-calendar&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;all_events-update badge&quot; rel=&quot;#nav-all_events-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;connections/ifpending&quot; title=&quot;Connections&quot; id=&quot;connections_nav_btn&quot;&gt;&lt;i class=&quot;icon-user&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;intro-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-intros-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-intros-menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;intros&quot;&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-intros-see-all&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;connections/ifpending&quot; title=&quot;Connections&quot; &gt;&lt;i class=&quot;icon-user&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;intro-update badge&quot; rel=&quot;#nav-intros-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a href=&quot;notifications/system&quot; title=&quot;Notices&quot; id=&quot;notifications_nav_btn&quot;&gt;&lt;i class=&quot;icon-exclamation&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;notify-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-notify-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-notify-menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;notify&quot;&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-notify-see-all&quot;&gt;&lt;a href=&quot;notifications/system&quot;&gt;See all notifications&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-notify-mark-all&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;markRead('notify'); return false;&quot;&gt;Mark all system notifications seen&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a href=&quot;notifications/system&quot; title=&quot;Notices&quot;&gt;&lt;i class=&quot;icon-exclamation&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;notify-update badge&quot; rel=&quot;#nav-notify-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t\t\t&lt;/ul&gt;\n\t\t\t&lt;ul class=&quot;nav navbar-nav navbar-right&quot;&gt;\n\t\t\t\t&lt;li class=&quot;hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;form method=&quot;get&quot; action=&quot;search&quot; role=&quot;search&quot;&gt;\n\t\t\t\t\t\t&lt;div id=&quot;nav-search-spinner&quot;&gt;&lt;/div&gt;&lt;input class=&quot;icon-search&quot; id=&quot;nav-search-text&quot; type=&quot;text&quot; value=&quot;&quot; placeholder=&quot;&amp;#xf002; @name, #tag, ?doc, content&quot; name=&quot;search&quot; title=&quot;Search site @name, #tag, ?docs, content&quot; onclick=&quot;this.submit();&quot;/&gt;\n\t\t\t\t\t&lt;/form&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot;visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a href=&quot;/search&quot; title=&quot;Search site @name, #tag, ?docs, content&quot;&gt;&lt;i class=&quot;icon-search&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t&lt;/li&gt;\n\n\t\t\t\t\t\t\t\t\t\t&lt;li class=&quot;&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;directory&quot; title=&quot;Channel Directory&quot; id=&quot;directory_nav_btn&quot;&gt;&lt;i class=&quot;icon-sitemap&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot;&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;apps&quot; title=&quot;Applications, utilities, links, games&quot; id=&quot;apps_nav_btn&quot;&gt;&lt;i class=&quot;icon-cogs&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot;active&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; target=&quot;hubzilla-help&quot; href=&quot;http://hubzilla/help?f=&amp;cmd=help/develop&quot; title=&quot;Help and documentation&quot; id=&quot;help_nav_btn&quot;&gt;&lt;i class=&quot;icon-question&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t\t\t&lt;/ul&gt;\n\t\t&lt;/div&gt;\n\t&lt;/div&gt;\n",
- "htmlhead": "&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html;charset=utf-8&quot; /&gt;\n&lt;base href=&quot;http://hubzilla/&quot; /&gt;\n&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, height=device-height, initial-scale=1, user-scalable=1&quot; /&gt;\n&lt;meta name=&quot;generator&quot; content=&quot;hubzilla 2015-11-03.1205H&quot; /&gt;\n\n&lt;!--[if IE]&gt;\n&lt;script src=&quot;http://hubzilla/library/html5.js&quot;&gt;&lt;/script&gt;\n&lt;![endif]--&gt;\n\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/font_awesome/css/font-awesome.min.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/bootstrap/css/bootstrap.min.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/bootstrap-tagsinput/bootstrap-tagsinput.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/css/bootstrap-red.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/datetimepicker/jquery.datetimepicker.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/tiptip/tipTip.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/jgrowl/jquery.jgrowl.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/jRange/jquery.range.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/css/conversation.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/css/widgets.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/css/colorbox.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/justifiedGallery/justifiedGallery.min.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/css/default.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/theme/redbasic/php/style.pcss&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n\n\n&lt;script&gt;\n\n\tvar aStr = {\n\n\t\t'delitem' : &quot;Delete this item?&quot;,\n\t\t'comment' : &quot;Comment&quot;,\n\t\t'showmore' : &quot;[+] show all&quot;,\n\t\t'showfewer' : &quot;[-] show less&quot;,\n\t\t'divgrowmore' : &quot;[+] expand&quot;,\n\t\t'divgrowless' : &quot;[-] collapse&quot;,\n\t\t'pwshort' : &quot;Password too short&quot;,\n\t\t'pwnomatch' : &quot;Passwords do not match&quot;,\n\t\t'everybody' : &quot;everybody&quot;,\n\t\t'passphrase' : &quot;Secret Passphrase&quot;,\n\t\t'passhint' : &quot;Passphrase hint&quot;,\n\t\t'permschange' : &quot;Notice: Permissions have changed but have not yet been submitted.&quot;,\n\t\t'closeAll' : &quot;close all&quot;,\n\t\t'nothingnew' : &quot;Nothing new here&quot;,\n\t\t'rating_desc' : &quot;Rate This Channel (this is public)&quot;,\n\t\t'rating_val' : &quot;Rating&quot;,\n\t\t'rating_text' : &quot;Describe (optional)&quot;,\n\t\t'submit' : &quot;Submit&quot;,\n\t\t'linkurl' : &quot;Please enter a link URL&quot;,\n\t\t'leavethispage' : &quot;Unsaved changes. Are you sure you wish to leave this page?&quot;,\n\n\t\t't01' : &quot;&quot;,\n\t\t't02' : &quot;&quot;,\n\t\t't03' : &quot;ago&quot;,\n\t\t't04' : &quot;from now&quot;,\n\t\t't05' : &quot;less than a minute&quot;,\n\t\t't06' : &quot;about a minute&quot;,\n\t\t't07' : &quot;%d minutes&quot;,\n\t\t't08' : &quot;about an hour&quot;,\n\t\t't09' : &quot;about %d hours&quot;,\n\t\t't10' : &quot;a day&quot;,\n\t\t't11' : &quot;%d days&quot;,\n\t\t't12' : &quot;about a month&quot;,\n\t\t't13' : &quot;%d months&quot;,\n\t\t't14' : &quot;about a year&quot;,\n\t\t't15' : &quot;%d years&quot;,\n\t\t't16' : &quot; &quot;,\n\t\t't17' : &quot;[]&quot;,\n\n\t\t'monthNames' : [ &quot;January&quot;,&quot;February&quot;,&quot;March&quot;,&quot;April&quot;,&quot;May&quot;,&quot;June&quot;,&quot;July&quot;,&quot;August&quot;,&quot;September&quot;,&quot;October&quot;,&quot;November&quot;,&quot;December&quot; ],\n\t\t'monthNamesShort' : [ &quot;Jan&quot;,&quot;Feb&quot;,&quot;Mar&quot;,&quot;Apr&quot;,&quot;May&quot;,&quot;Jun&quot;,&quot;Jul&quot;,&quot;Aug&quot;,&quot;Sep&quot;,&quot;Oct&quot;,&quot;Nov&quot;,&quot;Dec&quot; ],\n\t\t'dayNames' : [&quot;Sunday&quot;,&quot;Monday&quot;,&quot;Tuesday&quot;,&quot;Wednesday&quot;,&quot;Thursday&quot;,&quot;Friday&quot;,&quot;Saturday&quot;],\n\t\t'dayNamesShort' : [&quot;Sun&quot;,&quot;Mon&quot;,&quot;Tue&quot;,&quot;Wed&quot;,&quot;Thu&quot;,&quot;Fri&quot;,&quot;Sat&quot;],\n\t\t'today' : &quot;today&quot;,\n\t\t'month' : &quot;month&quot;,\n\t\t'week' : &quot;week&quot;,\n\t\t'day' : &quot;day&quot;,\n\t\t'allday' : &quot;All day&quot;\n\t};\n\n&lt;/script&gt;\n\t\t\n\n\n&lt;script src=&quot;http://hubzilla/view/js/jquery.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/justifiedGallery/jquery.justifiedGallery.min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/sprintf.js/dist/sprintf.min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/spin.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/jquery.spin.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/jquery.textinputs.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/autocomplete.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/jquery-textcomplete/jquery.textcomplete.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/jquery.timeago.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/readmore.js/readmore.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/jgrowl/jquery.jgrowl_minimized.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/cryptojs/components/core-min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/cryptojs/rollups/aes.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/cryptojs/rollups/rabbit.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/cryptojs/rollups/tripledes.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/acl.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/webtoolkit.base64.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/crypto.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/jRange/jquery.range.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/colorbox/jquery.colorbox-min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/jquery.AreYouSure/jquery.are-you-sure.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/tableofcontents/jquery.toc.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/bootstrap/js/bootstrap.min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/bootbox/bootbox.min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/bootstrap-tagsinput/bootstrap-tagsinput.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/datetimepicker/jquery.datetimepicker.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/theme/redbasic/js/redbasic.js&quot; &gt;&lt;/script&gt;\r\n\n\n&lt;link rel=&quot;shortcut icon&quot; href=&quot;http://hubzilla/images/hz-32.png&quot; /&gt;\n&lt;link rel=&quot;search&quot;\n href=&quot;http://hubzilla/opensearch&quot; \n type=&quot;application/opensearchdescription+xml&quot; \n title=&quot;Search in the Hubzilla&quot; /&gt;\n\n\n&lt;script&gt;\n\n\tvar updateInterval = 80000;\n\tvar localUser = 2;\n\tvar zid = 'testes@hubzilla';\n\tvar justifiedGalleryActive = false;\n\t\t\n&lt;/script&gt;\n\n\n\n\n&lt;script&gt;$(document).ready(function() {\n\t$(&quot;#nav-search-text&quot;).search_autocomplete('http://hubzilla/acl');\n});\n\n&lt;/script&gt;&lt;script src=&quot;http://hubzilla/view/js/main.js&quot; &gt;&lt;/script&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/addon/converse/converse.min.js&quot; media=&quot;all&quot; /&gt;&lt;script src=&quot;http://hubzilla/addon/converse/converse.min.js&quot;&gt;&lt;/script&gt;",
- "header": "&lt;div id=&quot;banner&quot; class=&quot;hidden-sm hidden-xs&quot;&gt;Hubzilla&lt;/div&gt;\n\n&lt;ul id=&quot;nav-notifications-template&quot; style=&quot;display:none;&quot; rel=&quot;template&quot;&gt;\n\t&lt;li class=&quot;{5}&quot;&gt;&lt;a href=&quot;{0}&quot; title=&quot;{2} {3}&quot;&gt;&lt;img data-src=&quot;{1}&quot;&gt;&lt;span class=&quot;contactname&quot;&gt;{2}&lt;/span&gt;&lt;span class=&quot;dropdown-sub-text&quot;&gt;{3}&lt;br&gt;{4}&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;\n&lt;/ul&gt;\n"
- },
- "poi": null,
- "force_max_items": 0,
- "module": "help",
- "template_engines": {
- "smarty3": "FriendicaSmartyEngine",
- "internal": "Template"
- },
- "account": {
- "account_flags": "0",
- "account_service_class": "",
- "account_id": "1",
- "account_salt": "9bf8c193c35a56c4c666f47728fe20da",
- "account_expires": "0000-00-00 00:00:00",
- "account_lastlog": "2015-11-04 07:47:55",
- "account_password_changed": "0000-00-00 00:00:00",
- "account_language": "en",
- "account_default_channel": "2",
- "account_password": "",
- "account_parent": "1",
- "account_expire_notified": "0000-00-00 00:00:00",
- "account_reset": "",
- "account_email": "foo@bar.com",
- "account_level": "0",
- "account_roles": "4096",
- "account_external": "",
- "account_created": "2015-10-09 00:44:51"
- },
- "theme_info": [],
- "argv": [
- "help",
- "develop"
- ],
- "template_engine_instance": {
- "smarty3": {}
- },
- "language": "en",
- "pager": {
- "page": 1,
- "itemspage": 60,
- "start": 0,
- "total": 0
- },
- "plugins": [
- "converse"
- ],
- "error": false,
- "pdl": "[region=aside]\n[widget=helpindex][/widget]\n[/region]\n",
- "query_string": "help/develop",
- "cmd": "help/develop",
- "groups": null,
- "videowidth": 425,
- "css_sources": [
- [
- "library/font_awesome/css/font-awesome.min.css",
- "screen"
- ],
- [
- "library/bootstrap/css/bootstrap.min.css",
- "screen"
- ],
- [
- "library/bootstrap-tagsinput/bootstrap-tagsinput.css",
- "screen"
- ],
- [
- "view/css/bootstrap-red.css",
- "screen"
- ],
- [
- "library/datetimepicker/jquery.datetimepicker.css",
- "screen"
- ],
- [
- "library/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css",
- "screen"
- ],
- [
- "library/tiptip/tipTip.css",
- "screen"
- ],
- [
- "library/jgrowl/jquery.jgrowl.css",
- "screen"
- ],
- [
- "library/jRange/jquery.range.css",
- "screen"
- ],
- [
- "view/css/conversation.css",
- "screen"
- ],
- [
- "view/css/widgets.css",
- "screen"
- ],
- [
- "view/css/colorbox.css",
- "screen"
- ],
- [
- "library/justifiedGallery/justifiedGallery.min.css",
- "screen"
- ],
- [
- "default.css",
- "screen"
- ],
- [
- "mod_help.css",
- "screen"
- ],
- [
- "view/theme/redbasic/php/style.pcss",
- "screen"
- ]
- ],
- "is_tablet": false,
- "observer": {
- "xchan_deleted": "0",
- "xchan_connpage": "",
- "xchan_pubforum": "0",
- "xchan_flags": "0",
- "xchan_censored": "0",
- "xchan_instance_url": "",
- "xchan_photo_s": "http://hubzilla/photo/profile/s/2",
- "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7MP/xxsq/srA8I7m+WKf\nHlguwwg0b1tz+I3o+djp7b+wF8q03XPKQpYmKfXIj47vpAOu75nKA4Tn90lLymmk\nSXUHogOqOMy1CHoaVrAw2T2/tAeRoMAjAJ5IxSOAM7Xda0nVUK6FmfxPcvftKf9y\nPmvvFadXpaHT4JGPH0tszDhGXLkqlt9xSkIkpsgMA6emj/7bacc6x8eTdtvzo2e5\n/NyPXvBKH4henmYaKjq/4aIYZcBWYVGt6onxaP2j1cSNbksnOY7GbJl+hy95iFoZ\nDWGxiFwQd+CroiBbdlpVGp13cV/WKp2spZzlzkmCRGYoNbbM5RlgFLnmyTa4XMZE\nwnA3ZUB59MsrUJK+0H/utiZrpX5NQcFl33z8k5zB3pPnhc5S5/P+UJZRnqhet1wQ\n7AZVmdP30D75QD8LZ4SytZ1DHn/N76EsVhSADNMnUfEphs708V33Z0gFWultYDoK\nlvXUf4O0/V8GTufFHb6XdAiy92IUzrormXCpXoOmdOcJdaH9RnotZi/DkuQ0zP+Y\nCvxU9nrjyZvAwAdew//XFDjw4HoThVM4k4jzkIhCTlCao/yRnNM7A/i3OKcXq9wU\n7OZqcRfM9o0BFpZTIoXB7BMtpeioJcBi/7FUaV9U9uYLFuLL0qWa1YxLwfsN9rDk\n6A1gbhD60G9/dAbolp8xAHkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
- "xchan_connurl": "http://hubzilla/poco/testes",
- "xchan_name_date": "2015-10-09 00:45:41",
- "xchan_system": "0",
- "xchan_photo_date": "2015-10-09 00:45:41",
- "xchan_photo_m": "http://hubzilla/photo/profile/m/2",
- "xchan_hidden": "0",
- "xchan_selfcensored": "0",
- "xchan_photo_mimetype": "image/jpeg",
- "xchan_network": "zot",
- "xchan_guid": "Ok-ycNKQYMzjokLnIz5OTCF8M5f4CtRT4vJCUeUivJhIOJWk3ORwIQgGx3P5g2Yz79KxQ-rs_Cn2G_jsgM6hmw",
- "xchan_guid_sig": "XXX",
- "xchan_hash": "uRy0nF-urp6k_bFrkdtCc2EkBynwpgCJL_FQFoTwyw2Hep7AHkrSt1MZcHWV_8DQucNlHSY1vHgUNS2Fvoirpw",
- "xchan_url": "http://hubzilla/channel/testes",
- "xchan_addr": "testes@hubzilla",
- "xchan_orphan": "0",
- "xchan_follow": "http://hubzilla/follow?f=&amp;url=%s",
- "xchan_name": "testes",
- "xchan_photo_l": "http://hubzilla/photo/profile/l/2"
- },
- "contact": null,
- "identities": null,
- "user": null,
- "videoheight": 350,
- "profile": null,
- "theme_thread_allow": true,
- "data": {
- "pageicon": "/images/hz-32.png"
- }
-}[/code]
-
-
-#include doc/macros/main_footer.bb;
-
diff --git a/doc/hooks.html b/doc/hooks.html
index c05de58ef..f4a5a7630 100644
--- a/doc/hooks.html
+++ b/doc/hooks.html
@@ -1 +1 @@
-<div><h3>Hooks</h3><table><tr><td>Function</td><td>Source File</td><td>Arg</td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td>$a-&gt;module . _mod_aftercontent</td><td>index.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _mod_content</td><td>index.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _mod_init</td><td>index.php</td><td>$placeholder</td></tr><tr><td>$a-&gt;module . _mod_post</td><td>index.php</td><td>$_POST</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$name</td><td>include/plugin.php</td><td>&amp;$data = null</td></tr><tr><td>about_hook</td><td>mod/siteinfo.php</td><td>$o</td></tr><tr><td>accept_follow</td><td>mod/connedit.php</td><td>$arr</td></tr><tr><td>account_downgrade</td><td>include/account.php</td><td>$ret</td></tr><tr><td>account_downgrade</td><td>include/account.php</td><td>$ret</td></tr><tr><td>account_settings</td><td>mod/settings.php</td><td>$account_settings</td></tr><tr><td>activity_received</td><td>include/zot.php</td><td>$parr</td></tr><tr><td>affinity_labels</td><td>include/widgets.php</td><td>$labels</td></tr><tr><td>affinity_labels</td><td>mod/connedit.php</td><td>$labels</td></tr><tr><td>api_perm_is_allowed</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>app_menu</td><td>index.php</td><td>$arr</td></tr><tr><td>atom_author</td><td>include/items.php</td><td>$o</td></tr><tr><td>atom_entry</td><td>include/items.php</td><td>$o</td></tr><tr><td>atom_feed</td><td>include/items.php</td><td>$atom</td></tr><tr><td>atom_feed_end</td><td>include/items.php</td><td>$atom</td></tr><tr><td>attach_upload_file</td><td>include/attach.php</td><td>$f</td></tr><tr><td>authenticate</td><td>include/auth.php</td><td>$addon_auth</td></tr><tr><td>avatar_lookup</td><td>include/network.php</td><td>$avatar</td></tr><tr><td>bb2diaspora</td><td>include/bb2diaspora.php</td><td>$Text</td></tr><tr><td>bbcode</td><td>include/bbcode.php</td><td>$Text</td></tr><tr><td>channel_remove</td><td>include/Contact.php</td><td>$r[0]</td></tr><tr><td>chat_message</td><td>include/chat.php</td><td>$arr</td></tr><tr><td>chat_post</td><td>mod/chatsvc.php</td><td>$arr</td></tr><tr><td>check_account_email</td><td>include/account.php</td><td>$arr</td></tr><tr><td>check_account_invite</td><td>include/account.php</td><td>$arr</td></tr><tr><td>check_account_password</td><td>include/account.php</td><td>$arr</td></tr><tr><td>connect_premium</td><td>mod/connect.php</td><td>$arr</td></tr><tr><td>connector_settings</td><td>mod/settings.php</td><td>$settings_connectors</td></tr><tr><td>construct_page</td><td>boot.php</td><td>$arr</td></tr><tr><td>contact_block_end</td><td>include/text.php</td><td>$arr</td></tr><tr><td>contact_edit</td><td>mod/connedit.php</td><td>$arr</td></tr><tr><td>contact_edit_post</td><td>mod/connedit.php</td><td>$_POST</td></tr><tr><td>contact_select_options</td><td>include/acl_selectors.php</td><td>$x</td></tr><tr><td>conversation_start</td><td>include/conversation.php</td><td>$cb</td></tr><tr><td>create_identity</td><td>include/identity.php</td><td>$newuid</td></tr><tr><td>cron</td><td>include/cronhooks.php</td><td>$d</td></tr><tr><td>cron_daily</td><td>include/poller.php</td><td>datetime_convert()</td></tr><tr><td>cron_weekly</td><td>include/poller.php</td><td>datetime_convert()</td></tr><tr><td>directory_item</td><td>mod/directory.php</td><td>$arr</td></tr><tr><td>discover_by_webbie</td><td>include/network.php</td><td>$arr</td></tr><tr><td>display_item</td><td>include/ItemObject.php</td><td>$arr</td></tr><tr><td>display_item</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>display_settings</td><td>mod/settings.php</td><td>$o</td></tr><tr><td>display_settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>donate_contributors</td><td>extend/addon/matrix/donate/donate.php</td><td>$contributors</td></tr><tr><td>donate_plugin</td><td>extend/addon/matrix/donate/donate.php</td><td>$o</td></tr><tr><td>donate_sponsors</td><td>extend/addon/matrix/donate/donate.php</td><td>$sponsors</td></tr><tr><td>dreport_is_storable</td><td>include/zot.php</td><td>$dr</td></tr><tr><td>drop_item</td><td>include/items.php</td><td>$arr</td></tr><tr><td>enotify</td><td>include/enotify.php</td><td>$h</td></tr><tr><td>enotify_mail</td><td>include/enotify.php</td><td>$datarray</td></tr><tr><td>enotify_store</td><td>include/enotify.php</td><td>$datarray</td></tr><tr><td>event_created</td><td>include/event.php</td><td>$event[id]</td></tr><tr><td>event_updated</td><td>include/event.php</td><td>$event[id]</td></tr><tr><td>externals_url_select</td><td>include/externals.php</td><td>$arr</td></tr><tr><td>feature_enabled</td><td>include/features.php</td><td>$arr</td></tr><tr><td>feature_settings</td><td>mod/settings.php</td><td>$settings_addons</td></tr><tr><td>feature_settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>follow</td><td>include/follow.php</td><td>$arr</td></tr><tr><td>follow</td><td>include/follow.php</td><td>$arr</td></tr><tr><td>follow_allow</td><td>include/follow.php</td><td>$x</td></tr><tr><td>gender_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>gender_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>generate_map</td><td>include/text.php</td><td>$arr</td></tr><tr><td>generate_named_map</td><td>include/text.php</td><td>$arr</td></tr><tr><td>get_all_api_perms</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>get_all_perms</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>get_features</td><td>include/features.php</td><td>$arr</td></tr><tr><td>get_role_perms</td><td>include/permissions.php</td><td>$ret</td></tr><tr><td>get_widgets</td><td>boot.php</td><td>$arr</td></tr><tr><td>get_widgets</td><td>boot.php</td><td>$arr</td></tr><tr><td>global_permissions</td><td>include/permissions.php</td><td>$ret</td></tr><tr><td>home_content</td><td>mod/home.php</td><td>$o</td></tr><tr><td>home_init</td><td>mod/home.php</td><td>$ret</td></tr><tr><td>hostxrd</td><td>mod/hostxrd.php</td><td>$arr</td></tr><tr><td>html2bbcode</td><td>include/html2bbcode.php</td><td>$message</td></tr><tr><td>identity_basic_export</td><td>include/identity.php</td><td>$addon</td></tr><tr><td>import_author_xchan</td><td>include/items.php</td><td>$arr</td></tr><tr><td>import_channel</td><td>mod/import.php</td><td>$addon</td></tr><tr><td>import_directory_profile</td><td>include/zot.php</td><td>$d</td></tr><tr><td>import_xchan</td><td>include/zot.php</td><td>$arr</td></tr><tr><td>item_photo_menu</td><td>include/conversation.php</td><td>$args</td></tr><tr><td>item_store</td><td>include/items.php</td><td>$d</td></tr><tr><td>item_store</td><td>include/items.php</td><td>$arr</td></tr><tr><td>item_store_update</td><td>include/items.php</td><td>$d</td></tr><tr><td>item_translate</td><td>include/items.php</td><td>$translate</td></tr><tr><td>item_translate</td><td>include/items.php</td><td>$translate</td></tr><tr><td>jot_networks</td><td>include/acl_selectors.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>include/conversation.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editblock.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editpost.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editwebpage.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editlayout.php</td><td>$jotnets</td></tr><tr><td>jot_tool</td><td>include/conversation.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editblock.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editpost.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editwebpage.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editlayout.php</td><td>$jotplugins</td></tr><tr><td>load_pdl</td><td>boot.php</td><td>$arr</td></tr><tr><td>local_dir_update</td><td>include/dir_fns.php</td><td>$arr</td></tr><tr><td>logged_in</td><td>include/oauth.php</td><td>$a-&gt;user</td></tr><tr><td>logged_in</td><td>include/api.php</td><td>$a-&gt;user</td></tr><tr><td>logged_in</td><td>include/security.php</td><td>$a-&gt;account</td></tr><tr><td>logged_in</td><td>include/security.php</td><td>$user_record</td></tr><tr><td>logging_out</td><td>include/auth.php</td><td>$args</td></tr><tr><td>login_hook</td><td>boot.php</td><td>$o</td></tr><tr><td>magic_auth</td><td>mod/magic.php</td><td>$arr</td></tr><tr><td>magic_auth_openid_success</td><td>mod/openid.php</td><td>$arr</td></tr><tr><td>magic_auth_openid_success</td><td>mod/openid.php</td><td>$arr</td></tr><tr><td>magic_auth_success</td><td>mod/post.php</td><td>$arr</td></tr><tr><td>main_slider</td><td>include/widgets.php</td><td>$arr</td></tr><tr><td>marital_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>marital_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>module_loaded</td><td>index.php</td><td>$x</td></tr><tr><td>mood_verbs</td><td>include/text.php</td><td>$arr</td></tr><tr><td>nav</td><td>include/nav.php</td><td>$x</td></tr><tr><td>network_content_init</td><td>mod/network.php</td><td>$arr</td></tr><tr><td>network_ping</td><td>mod/ping.php</td><td>$arr</td></tr><tr><td>network_tabs</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>network_to_name</td><td>include/contact_selectors.php</td><td>$nets</td></tr><tr><td>notifier_end</td><td>include/notifier.php</td><td>$target_item</td></tr><tr><td>notifier_hub</td><td>include/notifier.php</td><td>$narr</td></tr><tr><td>notifier_normal</td><td>include/deliver_hooks.php</td><td>$r[0]</td></tr><tr><td>obj_verbs</td><td>include/taxonomy.php</td><td>$arr</td></tr><tr><td>oembed_probe</td><td>include/oembed.php</td><td>$x</td></tr><tr><td>page_content_top</td><td>index.php</td><td>$a-&gt;page[content]</td></tr><tr><td>page_end</td><td>index.php</td><td>$a-&gt;page[content]</td></tr><tr><td>page_header</td><td>include/nav.php</td><td>$a-&gt;page[nav]</td></tr><tr><td>parse_atom</td><td>include/items.php</td><td>$arr</td></tr><tr><td>parse_link</td><td>mod/linkinfo.php</td><td>$arr</td></tr><tr><td>pdl_selector</td><td>include/comanche.php</td><td>$arr</td></tr><tr><td>perm_is_allowed</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>permissions_create</td><td>include/notifier.php</td><td>$perm_update</td></tr><tr><td>permissions_update</td><td>include/notifier.php</td><td>$perm_update</td></tr><tr><td>personal_xrd</td><td>mod/xrd.php</td><td>$arr</td></tr><tr><td>photo_post_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_post_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_begin</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>photo_upload_begin</td><td>include/photos.php</td><td>$args</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_file</td><td>include/attach.php</td><td>$f</td></tr><tr><td>photo_upload_file</td><td>include/photos.php</td><td>$f</td></tr><tr><td>photo_upload_form</td><td>mod/photos.php</td><td>$ret</td></tr><tr><td>poke_verbs</td><td>include/text.php</td><td>$arr</td></tr><tr><td>post_local</td><td>include/zot.php</td><td>$arr</td></tr><tr><td>post_local</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_local</td><td>mod/item.php</td><td>$datarray</td></tr><tr><td>post_local_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>extend/addon/matrix/randpost/randpost.php</td><td>$x</td></tr><tr><td>post_local_end</td><td>extend/addon/matrix/randpost/randpost.php</td><td>$x</td></tr><tr><td>post_local_end</td><td>mod/mood.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>mod/like.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>mod/item.php</td><td>$datarray</td></tr><tr><td>post_local_end</td><td>mod/subthread.php</td><td>$arr</td></tr><tr><td>post_local_start</td><td>mod/item.php</td><td>$_REQUEST</td></tr><tr><td>post_mail</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_mail_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_update</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_update_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>prepare_body</td><td>include/text.php</td><td>$prep_arr</td></tr><tr><td>prepare_body_final</td><td>include/text.php</td><td>$prep_arr</td></tr><tr><td>prepare_body_init</td><td>include/text.php</td><td>$item</td></tr><tr><td>probe_well_known</td><td>include/probe.php</td><td>$ret</td></tr><tr><td>proc_run</td><td>boot.php</td><td>$arr</td></tr><tr><td>process_channel_sync_delivery</td><td>include/zot.php</td><td>$addon</td></tr><tr><td>profile_advanced</td><td>mod/profile.php</td><td>$o</td></tr><tr><td>profile_edit</td><td>mod/profiles.php</td><td>$arr</td></tr><tr><td>profile_photo_content_end</td><td>mod/profile_photo.php</td><td>$o</td></tr><tr><td>profile_post</td><td>mod/profiles.php</td><td>$_POST</td></tr><tr><td>profile_sidebar</td><td>include/identity.php</td><td>$arr</td></tr><tr><td>profile_sidebar_enter</td><td>include/identity.php</td><td>$profile</td></tr><tr><td>profile_tabs</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>register_account</td><td>include/account.php</td><td>$result</td></tr><tr><td>render_location</td><td>include/conversation.php</td><td>$locate</td></tr><tr><td>replace_macros</td><td>include/text.php</td><td>$arr</td></tr><tr><td>reverse_magic_auth</td><td>mod/rmagic.php</td><td>$arr</td></tr><tr><td>settings_account</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>settings_form</td><td>mod/settings.php</td><td>$o</td></tr><tr><td>settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>sexpref_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>sexpref_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>smilie</td><td>include/text.php</td><td>$params</td></tr><tr><td>smilie</td><td>extend/addon/matrix/smileybutton/smileybutton.php</td><td>$params</td></tr><tr><td>tagged</td><td>include/items.php</td><td>$arr</td></tr><tr><td>validate_channelname</td><td>include/identity.php</td><td>$arr</td></tr><tr><td>webfinger</td><td>mod/wfinger.php</td><td>$arr</td></tr><tr><td>well_known</td><td>mod/_well_known.php</td><td>$arr</td></tr><tr><td>zid</td><td>include/identity.php</td><td>$arr</td></tr><tr><td>zid_init</td><td>include/identity.php</td><td>$arr</td></tr><tr><td>zot_finger</td><td>include/zot.php</td><td>$ret</td></tr></table><p>Generated Tue Nov 03 21:19:02 PST 2015</p></div> \ No newline at end of file
+<div><h3>Hooks</h3><table><tr><td>Function</td><td>Source File</td><td>Arg</td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td>$a-&gt;module . _mod_aftercontent</td><td>index.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _mod_content</td><td>index.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _mod_init</td><td>index.php</td><td>$placeholder</td></tr><tr><td>$a-&gt;module . _mod_post</td><td>index.php</td><td>$_POST</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$name</td><td>include/plugin.php</td><td>&amp;$data = null</td></tr><tr><td>about_hook</td><td>mod/siteinfo.php</td><td>$o</td></tr><tr><td>accept_follow</td><td>mod/connedit.php</td><td>$arr</td></tr><tr><td>account_downgrade</td><td>include/account.php</td><td>$ret</td></tr><tr><td>account_downgrade</td><td>include/account.php</td><td>$ret</td></tr><tr><td>account_settings</td><td>mod/settings.php</td><td>$account_settings</td></tr><tr><td>activity_received</td><td>include/zot.php</td><td>$parr</td></tr><tr><td>affinity_labels</td><td>include/widgets.php</td><td>$labels</td></tr><tr><td>affinity_labels</td><td>mod/connedit.php</td><td>$labels</td></tr><tr><td>api_perm_is_allowed</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>app_menu</td><td>index.php</td><td>$arr</td></tr><tr><td>atom_author</td><td>include/items.php</td><td>$o</td></tr><tr><td>atom_entry</td><td>include/items.php</td><td>$o</td></tr><tr><td>atom_feed</td><td>include/items.php</td><td>$atom</td></tr><tr><td>atom_feed_end</td><td>include/items.php</td><td>$atom</td></tr><tr><td>attach_upload_file</td><td>include/attach.php</td><td>$f</td></tr><tr><td>authenticate</td><td>include/auth.php</td><td>$addon_auth</td></tr><tr><td>avatar_lookup</td><td>include/network.php</td><td>$avatar</td></tr><tr><td>bb2diaspora</td><td>include/bb2diaspora.php</td><td>$Text</td></tr><tr><td>bbcode</td><td>include/bbcode.php</td><td>$Text</td></tr><tr><td>channel_remove</td><td>include/Contact.php</td><td>$r[0]</td></tr><tr><td>chat_message</td><td>include/chat.php</td><td>$arr</td></tr><tr><td>chat_post</td><td>mod/chatsvc.php</td><td>$arr</td></tr><tr><td>check_account_email</td><td>include/account.php</td><td>$arr</td></tr><tr><td>check_account_invite</td><td>include/account.php</td><td>$arr</td></tr><tr><td>check_account_password</td><td>include/account.php</td><td>$arr</td></tr><tr><td>connect_premium</td><td>mod/connect.php</td><td>$arr</td></tr><tr><td>connector_settings</td><td>mod/settings.php</td><td>$settings_connectors</td></tr><tr><td>construct_page</td><td>boot.php</td><td>$arr</td></tr><tr><td>contact_block_end</td><td>include/text.php</td><td>$arr</td></tr><tr><td>contact_edit</td><td>mod/connedit.php</td><td>$arr</td></tr><tr><td>contact_edit_post</td><td>mod/connedit.php</td><td>$_POST</td></tr><tr><td>contact_select_options</td><td>include/acl_selectors.php</td><td>$x</td></tr><tr><td>conversation_start</td><td>include/conversation.php</td><td>$cb</td></tr><tr><td>create_identity</td><td>include/channel.php</td><td>$newuid</td></tr><tr><td>cron</td><td>include/cronhooks.php</td><td>$d</td></tr><tr><td>cron_daily</td><td>include/poller.php</td><td>datetime_convert()</td></tr><tr><td>cron_weekly</td><td>include/poller.php</td><td>datetime_convert()</td></tr><tr><td>directory_item</td><td>mod/directory.php</td><td>$arr</td></tr><tr><td>discover_by_webbie</td><td>include/network.php</td><td>$arr</td></tr><tr><td>display_item</td><td>include/ItemObject.php</td><td>$arr</td></tr><tr><td>display_item</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>display_settings</td><td>mod/settings.php</td><td>$o</td></tr><tr><td>display_settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>donate_contributors</td><td>extend/addon/matrix/donate/donate.php</td><td>$contributors</td></tr><tr><td>donate_plugin</td><td>extend/addon/matrix/donate/donate.php</td><td>$o</td></tr><tr><td>donate_sponsors</td><td>extend/addon/matrix/donate/donate.php</td><td>$sponsors</td></tr><tr><td>dreport_is_storable</td><td>include/zot.php</td><td>$dr</td></tr><tr><td>drop_item</td><td>include/items.php</td><td>$arr</td></tr><tr><td>enotify</td><td>include/enotify.php</td><td>$h</td></tr><tr><td>enotify_mail</td><td>include/enotify.php</td><td>$datarray</td></tr><tr><td>enotify_store</td><td>include/enotify.php</td><td>$datarray</td></tr><tr><td>event_created</td><td>include/event.php</td><td>$event[id]</td></tr><tr><td>event_updated</td><td>include/event.php</td><td>$event[id]</td></tr><tr><td>externals_url_select</td><td>include/externals.php</td><td>$arr</td></tr><tr><td>feature_enabled</td><td>include/features.php</td><td>$arr</td></tr><tr><td>feature_settings</td><td>mod/settings.php</td><td>$settings_addons</td></tr><tr><td>feature_settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>follow</td><td>include/follow.php</td><td>$arr</td></tr><tr><td>follow</td><td>include/follow.php</td><td>$arr</td></tr><tr><td>follow_allow</td><td>include/follow.php</td><td>$x</td></tr><tr><td>gender_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>gender_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>generate_map</td><td>include/text.php</td><td>$arr</td></tr><tr><td>generate_named_map</td><td>include/text.php</td><td>$arr</td></tr><tr><td>get_all_api_perms</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>get_all_perms</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>get_features</td><td>include/features.php</td><td>$arr</td></tr><tr><td>get_role_perms</td><td>include/permissions.php</td><td>$ret</td></tr><tr><td>get_widgets</td><td>boot.php</td><td>$arr</td></tr><tr><td>get_widgets</td><td>boot.php</td><td>$arr</td></tr><tr><td>global_permissions</td><td>include/permissions.php</td><td>$ret</td></tr><tr><td>home_content</td><td>mod/home.php</td><td>$o</td></tr><tr><td>home_init</td><td>mod/home.php</td><td>$ret</td></tr><tr><td>hostxrd</td><td>mod/hostxrd.php</td><td>$arr</td></tr><tr><td>html2bbcode</td><td>include/html2bbcode.php</td><td>$message</td></tr><tr><td>identity_basic_export</td><td>include/channel.php</td><td>$addon</td></tr><tr><td>import_author_xchan</td><td>include/items.php</td><td>$arr</td></tr><tr><td>import_channel</td><td>mod/import.php</td><td>$addon</td></tr><tr><td>import_directory_profile</td><td>include/zot.php</td><td>$d</td></tr><tr><td>import_xchan</td><td>include/zot.php</td><td>$arr</td></tr><tr><td>item_photo_menu</td><td>include/conversation.php</td><td>$args</td></tr><tr><td>item_store</td><td>include/items.php</td><td>$d</td></tr><tr><td>item_store</td><td>include/items.php</td><td>$arr</td></tr><tr><td>item_store_update</td><td>include/items.php</td><td>$d</td></tr><tr><td>item_translate</td><td>include/items.php</td><td>$translate</td></tr><tr><td>item_translate</td><td>include/items.php</td><td>$translate</td></tr><tr><td>jot_networks</td><td>include/acl_selectors.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>include/conversation.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editblock.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editpost.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editwebpage.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editlayout.php</td><td>$jotnets</td></tr><tr><td>jot_tool</td><td>include/conversation.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editblock.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editpost.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editwebpage.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editlayout.php</td><td>$jotplugins</td></tr><tr><td>load_pdl</td><td>boot.php</td><td>$arr</td></tr><tr><td>local_dir_update</td><td>include/dir_fns.php</td><td>$arr</td></tr><tr><td>logged_in</td><td>include/oauth.php</td><td>$a-&gt;user</td></tr><tr><td>logged_in</td><td>include/api.php</td><td>$a-&gt;user</td></tr><tr><td>logged_in</td><td>include/security.php</td><td>$a-&gt;account</td></tr><tr><td>logged_in</td><td>include/security.php</td><td>$user_record</td></tr><tr><td>logging_out</td><td>include/auth.php</td><td>$args</td></tr><tr><td>login_hook</td><td>boot.php</td><td>$o</td></tr><tr><td>magic_auth</td><td>mod/magic.php</td><td>$arr</td></tr><tr><td>magic_auth_openid_success</td><td>mod/openid.php</td><td>$arr</td></tr><tr><td>magic_auth_openid_success</td><td>mod/openid.php</td><td>$arr</td></tr><tr><td>magic_auth_success</td><td>mod/post.php</td><td>$arr</td></tr><tr><td>main_slider</td><td>include/widgets.php</td><td>$arr</td></tr><tr><td>marital_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>marital_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>module_loaded</td><td>index.php</td><td>$x</td></tr><tr><td>mood_verbs</td><td>include/text.php</td><td>$arr</td></tr><tr><td>nav</td><td>include/nav.php</td><td>$x</td></tr><tr><td>network_content_init</td><td>mod/network.php</td><td>$arr</td></tr><tr><td>network_ping</td><td>mod/ping.php</td><td>$arr</td></tr><tr><td>network_tabs</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>network_to_name</td><td>include/contact_selectors.php</td><td>$nets</td></tr><tr><td>notifier_end</td><td>include/notifier.php</td><td>$target_item</td></tr><tr><td>notifier_hub</td><td>include/notifier.php</td><td>$narr</td></tr><tr><td>notifier_normal</td><td>include/deliver_hooks.php</td><td>$r[0]</td></tr><tr><td>obj_verbs</td><td>include/taxonomy.php</td><td>$arr</td></tr><tr><td>oembed_probe</td><td>include/oembed.php</td><td>$x</td></tr><tr><td>page_content_top</td><td>index.php</td><td>$a-&gt;page[content]</td></tr><tr><td>page_end</td><td>index.php</td><td>$a-&gt;page[content]</td></tr><tr><td>page_header</td><td>include/nav.php</td><td>$a-&gt;page[nav]</td></tr><tr><td>parse_atom</td><td>include/items.php</td><td>$arr</td></tr><tr><td>parse_link</td><td>mod/linkinfo.php</td><td>$arr</td></tr><tr><td>pdl_selector</td><td>include/comanche.php</td><td>$arr</td></tr><tr><td>perm_is_allowed</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>permissions_create</td><td>include/notifier.php</td><td>$perm_update</td></tr><tr><td>permissions_update</td><td>include/notifier.php</td><td>$perm_update</td></tr><tr><td>personal_xrd</td><td>mod/xrd.php</td><td>$arr</td></tr><tr><td>photo_post_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_post_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_begin</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>photo_upload_begin</td><td>include/photos.php</td><td>$args</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_file</td><td>include/attach.php</td><td>$f</td></tr><tr><td>photo_upload_file</td><td>include/photos.php</td><td>$f</td></tr><tr><td>photo_upload_form</td><td>mod/photos.php</td><td>$ret</td></tr><tr><td>poke_verbs</td><td>include/text.php</td><td>$arr</td></tr><tr><td>post_local</td><td>include/zot.php</td><td>$arr</td></tr><tr><td>post_local</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_local</td><td>mod/item.php</td><td>$datarray</td></tr><tr><td>post_local_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>extend/addon/matrix/randpost/randpost.php</td><td>$x</td></tr><tr><td>post_local_end</td><td>extend/addon/matrix/randpost/randpost.php</td><td>$x</td></tr><tr><td>post_local_end</td><td>mod/mood.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>mod/like.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>mod/item.php</td><td>$datarray</td></tr><tr><td>post_local_end</td><td>mod/subthread.php</td><td>$arr</td></tr><tr><td>post_local_start</td><td>mod/item.php</td><td>$_REQUEST</td></tr><tr><td>post_mail</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_mail_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_update</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_update_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>prepare_body</td><td>include/text.php</td><td>$prep_arr</td></tr><tr><td>prepare_body_final</td><td>include/text.php</td><td>$prep_arr</td></tr><tr><td>prepare_body_init</td><td>include/text.php</td><td>$item</td></tr><tr><td>probe_well_known</td><td>include/probe.php</td><td>$ret</td></tr><tr><td>proc_run</td><td>boot.php</td><td>$arr</td></tr><tr><td>process_channel_sync_delivery</td><td>include/zot.php</td><td>$addon</td></tr><tr><td>profile_advanced</td><td>mod/profile.php</td><td>$o</td></tr><tr><td>profile_edit</td><td>mod/profiles.php</td><td>$arr</td></tr><tr><td>profile_photo_content_end</td><td>mod/profile_photo.php</td><td>$o</td></tr><tr><td>profile_post</td><td>mod/profiles.php</td><td>$_POST</td></tr><tr><td>profile_sidebar</td><td>include/channel.php</td><td>$arr</td></tr><tr><td>profile_sidebar_enter</td><td>include/channel.php</td><td>$profile</td></tr><tr><td>profile_tabs</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>register_account</td><td>include/account.php</td><td>$result</td></tr><tr><td>render_location</td><td>include/conversation.php</td><td>$locate</td></tr><tr><td>replace_macros</td><td>include/text.php</td><td>$arr</td></tr><tr><td>reverse_magic_auth</td><td>mod/rmagic.php</td><td>$arr</td></tr><tr><td>settings_account</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>settings_form</td><td>mod/settings.php</td><td>$o</td></tr><tr><td>settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>sexpref_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>sexpref_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>smilie</td><td>include/text.php</td><td>$params</td></tr><tr><td>smilie</td><td>extend/addon/matrix/smileybutton/smileybutton.php</td><td>$params</td></tr><tr><td>tagged</td><td>include/items.php</td><td>$arr</td></tr><tr><td>validate_channelname</td><td>include/channel.php</td><td>$arr</td></tr><tr><td>webfinger</td><td>mod/wfinger.php</td><td>$arr</td></tr><tr><td>well_known</td><td>mod/_well_known.php</td><td>$arr</td></tr><tr><td>zid</td><td>include/channel.php</td><td>$arr</td></tr><tr><td>zid_init</td><td>include/channel.php</td><td>$arr</td></tr><tr><td>zot_finger</td><td>include/zot.php</td><td>$ret</td></tr></table><p>Generated Tue Nov 03 21:19:02 PST 2015</p></div> \ No newline at end of file
diff --git a/doc/html/index.php b/doc/html/index.php
deleted file mode 100644
index 2e1b4277c..000000000
--- a/doc/html/index.php
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <title>$Projectname Doxygen API Documentation</title>
-</head>
-<body>
-<h1>$Projectname Doxygen API Documentation not rendered</h1>
-
-To get the Doxygen API Documentation you must render it with the program <a href="http://www.doxygen.org">Doxygen</a> (included in most distributions).
-<pre>
-$ doxygen util/Doxyfile
-</pre>
-<br>
-<a href="javascript:history.back()">back</a>
-</body>
-</html>
diff --git a/doc/roadmap.bb b/doc/roadmap.bb
index f57c76b74..9ef9f146a 100644
--- a/doc/roadmap.bb
+++ b/doc/roadmap.bb
@@ -8,18 +8,8 @@ Roadmap for $Projectname V3
Crypto
Convert E2EE to dynamic loading (on demand) using jQuery.getScript() [or other methods] to only load encryption libs when you require them. This should also support multiple encryption libraries (e.g. SJCL, others) triggered from the choice of algorithm and remain pluggable.
-Diaspora
- Convert core Diaspora federation code into a plugin. This presents a number of challenges since it touches and special cases a lot of core functionality. (HZ - in progress)
-
Subscriptions and business models
- Build enough into core(/addons) to generate income (or at least try and cover costs) out of the box (in progress Habeas Codice)
-
-Merge all uploads into common DAV interface
- Separate photo albums from photos and turn them into file directories. (HZ - done)
- Upload everything direct to /store (HZ - done)
- If photo, generate thumbnails and image resources (HZ - done)
- Provide default upload folders with %y (and other?) macros for both photos and other file resources (HZ - done)
- Allow "media" (anything that we can generate a thumbnail for) in the Photos section (and show thumbnails in the Files section where possible) (HZ - done)
+ Build enough into core(/addons) to generate income (or at least try and cover costs) out of the box
Resolve the "every photo has an item" confusion, perhaps every file should also - but only if we can explain it and separate them conceptually.
diff --git a/doc/roadmapv4.bb b/doc/roadmapv4.bb
index 33a3384c5..419cd8d4c 100644
--- a/doc/roadmapv4.bb
+++ b/doc/roadmapv4.bb
@@ -9,20 +9,20 @@ Goals/Highlights:
Focus on visual website design tools, widgets, and sharing mechanisms
-App organisation.
+[x] App organisation.
-Conversion of core application to a composer format living under the namespace "Zotlabs"
+[x] Conversion of core application to a composer format living under the namespace "Zotlabs"
-Conversion of Modules to a more general purpose Controllers layout with DB/memory based
+[x] Conversion of Modules to a more general purpose Controllers layout with DB/memory based
controller routing as opposed to filesystem routing.
-Conversion of core Zot Protocol to a class library
+[x] (partial) Conversion of core Zot Protocol to a class library
-Abstraction of nomadic identity so that sending/receiving to/from singleton networks to/from any clone works flawlessly - [b]provided[/b] the clone physically connected to that singleton identity is up.
+[x] Abstraction of nomadic identity so that sending/receiving to/from singleton networks to/from any clone works flawlessly - [b]provided[/b] the clone physically connected to that singleton identity is up.
[h3]Community Development[/h3]
-CalDAV/CardDAV
+[x] CalDAV/CardDAV
E-Commerce
diff --git a/doc/sv/main.bb b/doc/sv/main.bb
index 26d9c78f6..a5c1d4f7a 100644
--- a/doc/sv/main.bb
+++ b/doc/sv/main.bb
@@ -67,9 +67,6 @@ Zot är en fantastisk ny kommunikationsprotokoll uppfunnit speciellt för $Proje
[zrl=[baseurl]/help/git_for_non_developers]Git for Non-Developers[/zrl]
[zrl=[baseurl]/help/dev_beginner]Sep-for-step manual for beginning developers[/zrl]
-[h3]FAQ för utvecklare[/h3]
-[zrl=[baseurl]/help/faq_developers]FAQ For Developers[/zrl]
-
[h3]Externa resurser[/h3]
[zrl=[baseurl]/help/external-resource-links]External Resource Links[/zrl]
[url=https://github.com/friendica/red]Main Website[/url]
diff --git a/doc/to_do_code.bb b/doc/to_do_code.bb
index 577d0e66f..b1c4923b1 100644
--- a/doc/to_do_code.bb
+++ b/doc/to_do_code.bb
@@ -6,6 +6,7 @@ We need much more than this, but here are areas where developers can help. Pleas
[li]Include TOS link in registration/verification email[/li]
[li]Auto preview posts/comments (configurable timer kicks in the preview if not 0)[/li]
[li]SAML 2.0 and OpenID Connect provider functionality[/li]
+[li]relmeauth (aka indieauth) support[/li]
[li]Create bug tracker module[/li]
[li]Filing posts - provide a dropdown menu integrated with the 'post actions menu'[/li]
[li]translation plugins - moses or apertium[/li]
@@ -17,7 +18,6 @@ We need much more than this, but here are areas where developers can help. Pleas
[li]Integrate the &quot;open site&quot; list with the register page[/li]
[li]Support comments and member notes on documentation pages (to achieve an effect similar to php.net)[/li]
[li]Support comments on webpages[/li]
-[li]refactor the oembed client interface so that we can safely sandbox remote content[/li]
[li]Write more webpage layouts[/li]
[li]Write more webpage widgets[/li]
[li]restricted access OAuth clients[/li]
@@ -27,14 +27,11 @@ We need much more than this, but here are areas where developers can help. Pleas
[li]External post connectors, add popular services[/li]
[li]service classes - provide a pluggable subscription payment gateway for premium accounts[/li]
[li]service classes - account overview page showing resources consumed by channel. With special consideration this page can also be accessed at a meta level by the site admin to drill down on problematic accounts/channels.[/li]
-[li]implement CalDAV/CardDAV sync[/li]
[li]Uploads - integrate #^[url=https://github.com/blueimp/jQuery-File-Upload]https://github.com/blueimp/jQuery-File-Upload[/url][/li]
[li]API extensions, for Twitter API - search, friending, threading. For Red API, lots of stuff[/li]
[li]Import channel from Diaspora/Friendica (Diaspora partially done)[/li]
[li]MediaGoblin photo "crosspost" connector[/li]
-[li]App taxonomy[/li]
-[li]Customisable App collection pages[/li]
-[li]replace the tinymce visual editor and/or make the visual editor pluggable and responsive to different output formats. We probably want library/bbedit for bbcode. This needs a fair bit of work to catch up with our &quot;enhanced bbcode&quot;, but start with images, links, bold and highlight and work from there.[/li]
+[li]provide a visual editor[/li]
[li]Create mobile clients for the top platforms - which involves extending the API so that we can do stuff far beyond the current crop of Twitter/Statusnet clients. Ditto for mobile themes. We can probably use something like the Friendica Android app as a base to start from.[/li]
[li]Implement owned and exchangeable &quot;things&quot;.[/li]
[li]Family Account creation - using service classes (an account holder can create a certain number of sub-accounts which are all tied to their subscription - if the subscription lapses they all go away).[/li]
diff --git a/doc/zot.md b/doc/zot.md
index f8881c551..1e454e495 100644
--- a/doc/zot.md
+++ b/doc/zot.md
@@ -140,6 +140,8 @@ target_sig => an RSA signature (base64url encoded) of the guid
key => The public key needed to verify the signature
+token => a string (possibly random) chosen by the requesting service. If provided, an entry in the discovered packet will be provided called 'signed_token' which consists of the base64url_encoded RSA signature of the concatenation of the string 'token.' and the provided token using the private key of the discovered channel. This can be verified using the provided 'key' entry, and provides assurance that the server is in possession of the private key for the discovered identity. After 2017-01-01 it is **required** that a server provide a signed_token *if* a token was provided in the request.
+
With no target provided, the permissions returned will be generic permissions
for unknown or unauthenticated observers
@@ -148,6 +150,7 @@ Example of discovery packet for 'mike@zothub.com'
{
"success": true,
+ "signed_token": "KBJrKTq1qrctNuxF3GwVh3GAGRqmgkirlXANPcJZAeWlvSt_9TMV097slR4AYnYCBEushbVqHEJ9Rb5wHTa0HzMbfRo8cRdl2yAirvvv5d98dtwHddQgX1jB0xEypXtmIYMdPGDLvhI1RNdIBhHkkrRcNreRzoy4xD--HM6m1W0-A8PJJJ9BcNxmGPcBtLzW08wzoP9trJ3M7DQ6Gkk6j7iwVsyApw1ZBaDvabGTdc_SFV-Iegtqw3rjzT_xXWsfzMlKBy-019MYn_KS-gu23YzjvGu5tS_zDfkQb8DMUlPLz5yyxM0yOMlUDtG2qQgIJAU2O0X6T5xDdJ6mtolNyhepg845PvFDEqBQGMIH1nc47CNumeudDi8IWymEALhjG_U8KAK7JVlQTJj2EKUb0au1g6fpiBFab5mmxCMtZEX3Jreyak5GOcFFz-WpxuXJD9TdSoIvaBfBFOoJnXkg2zE4RHXeQzZ2FotmrbBG5dm8B-_6byYGoHBc08ZsWze1K96JIeRnLpBaj6ifUDcVHxZMPcGHHT27dvU2PNbgLiBjlAsxhYqkhN5qOHN8XBcg2KRjcMBaI3V0YMxlzXz5MztmZq3fcB1p-ccIoIyMPMzSj3yMB7J9CEU2LYPSTHMdPkIeDE6GaCkQKviaQQJQde346tK_YjA2k7_SOBmvPYE",
"guid": "sebQ-IC4rmFn9d9iu17m4BXO-kHuNutWo2ySjeV2SIW1LzksUkss12xVo3m3fykYxN5HMcc7gUZVYv26asx-Pg",
"guid_sig": "Llenlbl4zHo6-g4sa63MlQmTP5dRCrsPmXHHFmoCHG63BLq5CUZJRLS1vRrrr_MNxr7zob_Ykt_m5xPKe5H0_i4pDj-UdP8dPZqH2fqhhx00kuYL4YUMJ8gRr5eO17vsZQ3XxTcyKewtgeW0j7ytwMp6-hFVUx_Cq08MrXas429ZrjzaEwgTfxGnbgeQYQ0R5EXpHpEmoERnZx77VaEahftmdjAUx9R4YKAp13pGYadJOX5xnLfqofHQD8DyRHWeMJ4G1OfWPSOlXfRayrV_jhnFlZjMU7vOdQwHoCMoR5TFsRsHuzd-qepbvo3pzvQZRWnTNu6oPucgbf94p13QbalYRpBXKOxdTXJrGdESNhGvhtaZnpT9c1QVqC46jdfP0LOX2xrVdbvvG2JMWFv7XJUVjLSk_yjzY6or2VD4V6ztYcjpCi9d_WoNHruoxro_br1YO3KatySxJs-LQ7SOkQI60FpysfbphNyvYMkotwUFI59G08IGKTMu3-GPnV1wp7NOQD1yzJbGGEGSEEysmEP0SO9vnN45kp3MiqbffBGc1r4_YM4e7DPmqOGM94qksOcLOJk1HNESw2dQYWxWQTBXPfOJT6jW9_crGLMEOsZ3Jcss0XS9KzBUA2p_9osvvhUKuKXbNztqH0oZIWlg37FEVsDs_hUwUJpv2Ar09k4",
"key": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7QCwvuEIwCHjhjbpz3Oc\ntyei/Pz9nDksNbsc44Cm8jxYGMXsTPFXDZYCcCB5rcAhPPdZSlzaPkv4vPVcMIrw\n5cdX0tvbwa3rNTng6uFE7qkt15D3YCTkwF0Y9FVZiZ2Ko+G23QeBt9wqb9dlDN1d\nuPmu9BLYXIT/JXoBwf0vjIPFM9WBi5W/EHGaiuqw7lt0qI7zDGw77yO5yehKE4cu\n7dt3SakrXphL70LGiZh2XGoLg9Gmpz98t+gvPAUEotAJxIUqnoiTA8jlxoiQjeRK\nHlJkwMOGmRNPS33awPos0kcSxAywuBbh2X3aSqUMjcbE4cGJ++/13zoa6RUZRObC\nZnaLYJxqYBh13/N8SfH7d005hecDxWnoYXeYuuMeT3a2hV0J84ztkJX5OoxIwk7S\nWmvBq4+m66usn6LNL+p5IAcs93KbvOxxrjtQrzohBXc6+elfLVSQ1Rr9g5xbgpub\npSc+hvzbB6p0tleDRzwAy9X16NI4DYiTj4nkmVjigNo9v2VPnAle5zSam86eiYLO\nt2u9YRqysMLPKevNdj3CIvst+BaGGQONlQalRdIcq8Lin+BhuX+1TBgqyav4XD9K\nd+JHMb1aBk/rFLI9/f2S3BJ1XqpbjXz7AbYlaCwKiJ836+HS8PmLKxwVOnpLMbfH\nPYM8k83Lip4bEKIyAuf02qkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
@@ -217,6 +220,8 @@ Discovery returns a JSON array with the following components:
'success' => ('1' or '') Operation was successful if '1'. Otherwise an optional 'message' may be present indicating the source of error.
+'signed_token' => If a token parameter was provided in the request, it is prepended with the text 'token.' and then RSA signed with the channel private key and base64url encoded and returned as 'signed_token'.
+
'guid' => the guid of the address on the target system
'guid_sig' => the base64url encoded RSA signature of the guid, signed with the private key associated with that guid.
diff --git a/images/emoji/0023-20e3.png b/images/emoji/0023-20e3.png
new file mode 100644
index 000000000..6e26f0070
--- /dev/null
+++ b/images/emoji/0023-20e3.png
Binary files differ
diff --git a/images/emoji/0023.png b/images/emoji/0023.png
new file mode 100644
index 000000000..811f22af8
--- /dev/null
+++ b/images/emoji/0023.png
Binary files differ
diff --git a/images/emoji/002a-20e3.png b/images/emoji/002a-20e3.png
new file mode 100644
index 000000000..2f8e51138
--- /dev/null
+++ b/images/emoji/002a-20e3.png
Binary files differ
diff --git a/images/emoji/002a.png b/images/emoji/002a.png
new file mode 100644
index 000000000..c39443e24
--- /dev/null
+++ b/images/emoji/002a.png
Binary files differ
diff --git a/images/emoji/0030-20e3.png b/images/emoji/0030-20e3.png
new file mode 100644
index 000000000..13aca83e0
--- /dev/null
+++ b/images/emoji/0030-20e3.png
Binary files differ
diff --git a/images/emoji/0030.png b/images/emoji/0030.png
new file mode 100644
index 000000000..e730b28df
--- /dev/null
+++ b/images/emoji/0030.png
Binary files differ
diff --git a/images/emoji/0031-20e3.png b/images/emoji/0031-20e3.png
new file mode 100644
index 000000000..e6d84b801
--- /dev/null
+++ b/images/emoji/0031-20e3.png
Binary files differ
diff --git a/images/emoji/0031.png b/images/emoji/0031.png
new file mode 100644
index 000000000..9c4cbd6f7
--- /dev/null
+++ b/images/emoji/0031.png
Binary files differ
diff --git a/images/emoji/0032-20e3.png b/images/emoji/0032-20e3.png
new file mode 100644
index 000000000..927339c9b
--- /dev/null
+++ b/images/emoji/0032-20e3.png
Binary files differ
diff --git a/images/emoji/0032.png b/images/emoji/0032.png
new file mode 100644
index 000000000..9a0b49a0e
--- /dev/null
+++ b/images/emoji/0032.png
Binary files differ
diff --git a/images/emoji/0033-20e3.png b/images/emoji/0033-20e3.png
new file mode 100644
index 000000000..dbaa6183e
--- /dev/null
+++ b/images/emoji/0033-20e3.png
Binary files differ
diff --git a/images/emoji/0033.png b/images/emoji/0033.png
new file mode 100644
index 000000000..bc898b986
--- /dev/null
+++ b/images/emoji/0033.png
Binary files differ
diff --git a/images/emoji/0034-20e3.png b/images/emoji/0034-20e3.png
new file mode 100644
index 000000000..b0e914aac
--- /dev/null
+++ b/images/emoji/0034-20e3.png
Binary files differ
diff --git a/images/emoji/0034.png b/images/emoji/0034.png
new file mode 100644
index 000000000..7216ee32b
--- /dev/null
+++ b/images/emoji/0034.png
Binary files differ
diff --git a/images/emoji/0035-20e3.png b/images/emoji/0035-20e3.png
new file mode 100644
index 000000000..d14371f3f
--- /dev/null
+++ b/images/emoji/0035-20e3.png
Binary files differ
diff --git a/images/emoji/0035.png b/images/emoji/0035.png
new file mode 100644
index 000000000..c64709a7e
--- /dev/null
+++ b/images/emoji/0035.png
Binary files differ
diff --git a/images/emoji/0036-20e3.png b/images/emoji/0036-20e3.png
new file mode 100644
index 000000000..371b3acef
--- /dev/null
+++ b/images/emoji/0036-20e3.png
Binary files differ
diff --git a/images/emoji/0036.png b/images/emoji/0036.png
new file mode 100644
index 000000000..68e1e71e4
--- /dev/null
+++ b/images/emoji/0036.png
Binary files differ
diff --git a/images/emoji/0037-20e3.png b/images/emoji/0037-20e3.png
new file mode 100644
index 000000000..9b3476ae7
--- /dev/null
+++ b/images/emoji/0037-20e3.png
Binary files differ
diff --git a/images/emoji/0037.png b/images/emoji/0037.png
new file mode 100644
index 000000000..e4aa065c6
--- /dev/null
+++ b/images/emoji/0037.png
Binary files differ
diff --git a/images/emoji/0038-20e3.png b/images/emoji/0038-20e3.png
new file mode 100644
index 000000000..8c95874d4
--- /dev/null
+++ b/images/emoji/0038-20e3.png
Binary files differ
diff --git a/images/emoji/0038.png b/images/emoji/0038.png
new file mode 100644
index 000000000..27eae28e6
--- /dev/null
+++ b/images/emoji/0038.png
Binary files differ
diff --git a/images/emoji/0039-20e3.png b/images/emoji/0039-20e3.png
new file mode 100644
index 000000000..9fce3d1ec
--- /dev/null
+++ b/images/emoji/0039-20e3.png
Binary files differ
diff --git a/images/emoji/0039.png b/images/emoji/0039.png
new file mode 100644
index 000000000..fd9e98055
--- /dev/null
+++ b/images/emoji/0039.png
Binary files differ
diff --git a/images/emoji/00a9.png b/images/emoji/00a9.png
new file mode 100644
index 000000000..6b9a6adbf
--- /dev/null
+++ b/images/emoji/00a9.png
Binary files differ
diff --git a/images/emoji/00ae.png b/images/emoji/00ae.png
new file mode 100644
index 000000000..53ef9f2d4
--- /dev/null
+++ b/images/emoji/00ae.png
Binary files differ
diff --git a/images/emoji/1f004.png b/images/emoji/1f004.png
new file mode 100644
index 000000000..66fd32025
--- /dev/null
+++ b/images/emoji/1f004.png
Binary files differ
diff --git a/images/emoji/1f0cf.png b/images/emoji/1f0cf.png
new file mode 100644
index 000000000..3d0924b68
--- /dev/null
+++ b/images/emoji/1f0cf.png
Binary files differ
diff --git a/images/emoji/1f170.png b/images/emoji/1f170.png
new file mode 100644
index 000000000..8603ff05a
--- /dev/null
+++ b/images/emoji/1f170.png
Binary files differ
diff --git a/images/emoji/1f171.png b/images/emoji/1f171.png
new file mode 100644
index 000000000..25875bc6a
--- /dev/null
+++ b/images/emoji/1f171.png
Binary files differ
diff --git a/images/emoji/1f17e.png b/images/emoji/1f17e.png
new file mode 100644
index 000000000..73278ba19
--- /dev/null
+++ b/images/emoji/1f17e.png
Binary files differ
diff --git a/images/emoji/1f17f.png b/images/emoji/1f17f.png
new file mode 100644
index 000000000..7be7dac27
--- /dev/null
+++ b/images/emoji/1f17f.png
Binary files differ
diff --git a/images/emoji/1f18e.png b/images/emoji/1f18e.png
new file mode 100644
index 000000000..d9f2d17de
--- /dev/null
+++ b/images/emoji/1f18e.png
Binary files differ
diff --git a/images/emoji/1f191.png b/images/emoji/1f191.png
new file mode 100644
index 000000000..8b01b4343
--- /dev/null
+++ b/images/emoji/1f191.png
Binary files differ
diff --git a/images/emoji/1f192.png b/images/emoji/1f192.png
new file mode 100644
index 000000000..74674978d
--- /dev/null
+++ b/images/emoji/1f192.png
Binary files differ
diff --git a/images/emoji/1f193.png b/images/emoji/1f193.png
new file mode 100644
index 000000000..b71956eb4
--- /dev/null
+++ b/images/emoji/1f193.png
Binary files differ
diff --git a/images/emoji/1f194.png b/images/emoji/1f194.png
new file mode 100644
index 000000000..5bf69bf7b
--- /dev/null
+++ b/images/emoji/1f194.png
Binary files differ
diff --git a/images/emoji/1f195.png b/images/emoji/1f195.png
new file mode 100644
index 000000000..b4f85488d
--- /dev/null
+++ b/images/emoji/1f195.png
Binary files differ
diff --git a/images/emoji/1f196.png b/images/emoji/1f196.png
new file mode 100644
index 000000000..ee8d20f5e
--- /dev/null
+++ b/images/emoji/1f196.png
Binary files differ
diff --git a/images/emoji/1f197.png b/images/emoji/1f197.png
new file mode 100644
index 000000000..d0d775532
--- /dev/null
+++ b/images/emoji/1f197.png
Binary files differ
diff --git a/images/emoji/1f198.png b/images/emoji/1f198.png
new file mode 100644
index 000000000..d7d8c9953
--- /dev/null
+++ b/images/emoji/1f198.png
Binary files differ
diff --git a/images/emoji/1f199.png b/images/emoji/1f199.png
new file mode 100644
index 000000000..0d42142ba
--- /dev/null
+++ b/images/emoji/1f199.png
Binary files differ
diff --git a/images/emoji/1f19a.png b/images/emoji/1f19a.png
new file mode 100644
index 000000000..e1180f4a4
--- /dev/null
+++ b/images/emoji/1f19a.png
Binary files differ
diff --git a/images/emoji/1f1e6-1f1e8.png b/images/emoji/1f1e6-1f1e8.png
new file mode 100644
index 000000000..b939efeab
--- /dev/null
+++ b/images/emoji/1f1e6-1f1e8.png
Binary files differ
diff --git a/images/emoji/1f1e6-1f1e9.png b/images/emoji/1f1e6-1f1e9.png
new file mode 100644
index 000000000..20f4b14e8
--- /dev/null
+++ b/images/emoji/1f1e6-1f1e9.png
Binary files differ
diff --git a/images/emoji/1f1e6-1f1ea.png b/images/emoji/1f1e6-1f1ea.png
new file mode 100644
index 000000000..d16ffe4b8
--- /dev/null
+++ b/images/emoji/1f1e6-1f1ea.png
Binary files differ
diff --git a/images/emoji/1f1e6-1f1eb.png b/images/emoji/1f1e6-1f1eb.png
new file mode 100644
index 000000000..a51533b55
--- /dev/null
+++ b/images/emoji/1f1e6-1f1eb.png
Binary files differ
diff --git a/images/emoji/1f1e6-1f1ec.png b/images/emoji/1f1e6-1f1ec.png
new file mode 100644
index 000000000..07f2ce397
--- /dev/null
+++ b/images/emoji/1f1e6-1f1ec.png
Binary files differ
diff --git a/images/emoji/1f1e6-1f1ee.png b/images/emoji/1f1e6-1f1ee.png
new file mode 100644
index 000000000..500b5ab09
--- /dev/null
+++ b/images/emoji/1f1e6-1f1ee.png
Binary files differ
diff --git a/images/emoji/1f1e6-1f1f1.png b/images/emoji/1f1e6-1f1f1.png
new file mode 100644
index 000000000..03a20132c
--- /dev/null
+++ b/images/emoji/1f1e6-1f1f1.png
Binary files differ
diff --git a/images/emoji/1f1e6-1f1f2.png b/images/emoji/1f1e6-1f1f2.png
new file mode 100644
index 000000000..2ad60a273
--- /dev/null
+++ b/images/emoji/1f1e6-1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1e6-1f1f4.png b/images/emoji/1f1e6-1f1f4.png
new file mode 100644
index 000000000..cb46c31f8
--- /dev/null
+++ b/images/emoji/1f1e6-1f1f4.png
Binary files differ
diff --git a/images/emoji/1f1e6-1f1f6.png b/images/emoji/1f1e6-1f1f6.png
new file mode 100644
index 000000000..b272021d3
--- /dev/null
+++ b/images/emoji/1f1e6-1f1f6.png
Binary files differ
diff --git a/images/emoji/1f1e6-1f1f7.png b/images/emoji/1f1e6-1f1f7.png
new file mode 100644
index 000000000..73136caf3
--- /dev/null
+++ b/images/emoji/1f1e6-1f1f7.png
Binary files differ
diff --git a/images/emoji/1f1e6-1f1f8.png b/images/emoji/1f1e6-1f1f8.png
new file mode 100644
index 000000000..3db45a0d9
--- /dev/null
+++ b/images/emoji/1f1e6-1f1f8.png
Binary files differ
diff --git a/images/emoji/1f1e6-1f1f9.png b/images/emoji/1f1e6-1f1f9.png
new file mode 100644
index 000000000..c43769dcb
--- /dev/null
+++ b/images/emoji/1f1e6-1f1f9.png
Binary files differ
diff --git a/images/emoji/1f1e6-1f1fa.png b/images/emoji/1f1e6-1f1fa.png
new file mode 100644
index 000000000..7794309c7
--- /dev/null
+++ b/images/emoji/1f1e6-1f1fa.png
Binary files differ
diff --git a/images/emoji/1f1e6-1f1fc.png b/images/emoji/1f1e6-1f1fc.png
new file mode 100644
index 000000000..02c840d12
--- /dev/null
+++ b/images/emoji/1f1e6-1f1fc.png
Binary files differ
diff --git a/images/emoji/1f1e6-1f1fd.png b/images/emoji/1f1e6-1f1fd.png
new file mode 100644
index 000000000..fc5466174
--- /dev/null
+++ b/images/emoji/1f1e6-1f1fd.png
Binary files differ
diff --git a/images/emoji/1f1e6-1f1ff.png b/images/emoji/1f1e6-1f1ff.png
new file mode 100644
index 000000000..89d3d15fd
--- /dev/null
+++ b/images/emoji/1f1e6-1f1ff.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1e6.png b/images/emoji/1f1e7-1f1e6.png
new file mode 100644
index 000000000..25fe407e1
--- /dev/null
+++ b/images/emoji/1f1e7-1f1e6.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1e7.png b/images/emoji/1f1e7-1f1e7.png
new file mode 100644
index 000000000..bccd8c5c9
--- /dev/null
+++ b/images/emoji/1f1e7-1f1e7.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1e9.png b/images/emoji/1f1e7-1f1e9.png
new file mode 100644
index 000000000..b0597a314
--- /dev/null
+++ b/images/emoji/1f1e7-1f1e9.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1ea.png b/images/emoji/1f1e7-1f1ea.png
new file mode 100644
index 000000000..551f086e3
--- /dev/null
+++ b/images/emoji/1f1e7-1f1ea.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1eb.png b/images/emoji/1f1e7-1f1eb.png
new file mode 100644
index 000000000..444d4829f
--- /dev/null
+++ b/images/emoji/1f1e7-1f1eb.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1ec.png b/images/emoji/1f1e7-1f1ec.png
new file mode 100644
index 000000000..821eee5e1
--- /dev/null
+++ b/images/emoji/1f1e7-1f1ec.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1ed.png b/images/emoji/1f1e7-1f1ed.png
new file mode 100644
index 000000000..f33724249
--- /dev/null
+++ b/images/emoji/1f1e7-1f1ed.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1ee.png b/images/emoji/1f1e7-1f1ee.png
new file mode 100644
index 000000000..ea20ac932
--- /dev/null
+++ b/images/emoji/1f1e7-1f1ee.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1ef.png b/images/emoji/1f1e7-1f1ef.png
new file mode 100644
index 000000000..7cca4f804
--- /dev/null
+++ b/images/emoji/1f1e7-1f1ef.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1f1.png b/images/emoji/1f1e7-1f1f1.png
new file mode 100644
index 000000000..0316ac99d
--- /dev/null
+++ b/images/emoji/1f1e7-1f1f1.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1f2.png b/images/emoji/1f1e7-1f1f2.png
new file mode 100644
index 000000000..ab8cafdac
--- /dev/null
+++ b/images/emoji/1f1e7-1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1f3.png b/images/emoji/1f1e7-1f1f3.png
new file mode 100644
index 000000000..16a58f8f6
--- /dev/null
+++ b/images/emoji/1f1e7-1f1f3.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1f4.png b/images/emoji/1f1e7-1f1f4.png
new file mode 100644
index 000000000..98af62b3d
--- /dev/null
+++ b/images/emoji/1f1e7-1f1f4.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1f6.png b/images/emoji/1f1e7-1f1f6.png
new file mode 100644
index 000000000..cb978ef9d
--- /dev/null
+++ b/images/emoji/1f1e7-1f1f6.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1f7.png b/images/emoji/1f1e7-1f1f7.png
new file mode 100644
index 000000000..b139366a4
--- /dev/null
+++ b/images/emoji/1f1e7-1f1f7.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1f8.png b/images/emoji/1f1e7-1f1f8.png
new file mode 100644
index 000000000..d36bcd2fb
--- /dev/null
+++ b/images/emoji/1f1e7-1f1f8.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1f9.png b/images/emoji/1f1e7-1f1f9.png
new file mode 100644
index 000000000..b571dce1a
--- /dev/null
+++ b/images/emoji/1f1e7-1f1f9.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1fb.png b/images/emoji/1f1e7-1f1fb.png
new file mode 100644
index 000000000..5884e6482
--- /dev/null
+++ b/images/emoji/1f1e7-1f1fb.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1fc.png b/images/emoji/1f1e7-1f1fc.png
new file mode 100644
index 000000000..cb12f3473
--- /dev/null
+++ b/images/emoji/1f1e7-1f1fc.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1fe.png b/images/emoji/1f1e7-1f1fe.png
new file mode 100644
index 000000000..859c05beb
--- /dev/null
+++ b/images/emoji/1f1e7-1f1fe.png
Binary files differ
diff --git a/images/emoji/1f1e7-1f1ff.png b/images/emoji/1f1e7-1f1ff.png
new file mode 100644
index 000000000..db2c28bd7
--- /dev/null
+++ b/images/emoji/1f1e7-1f1ff.png
Binary files differ
diff --git a/images/emoji/1f1e7.png b/images/emoji/1f1e7.png
new file mode 100644
index 000000000..8f69fa973
--- /dev/null
+++ b/images/emoji/1f1e7.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1e6.png b/images/emoji/1f1e8-1f1e6.png
new file mode 100644
index 000000000..7c5b390e8
--- /dev/null
+++ b/images/emoji/1f1e8-1f1e6.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1e8.png b/images/emoji/1f1e8-1f1e8.png
new file mode 100644
index 000000000..b6555a23d
--- /dev/null
+++ b/images/emoji/1f1e8-1f1e8.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1e9.png b/images/emoji/1f1e8-1f1e9.png
new file mode 100644
index 000000000..fa9200977
--- /dev/null
+++ b/images/emoji/1f1e8-1f1e9.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1eb.png b/images/emoji/1f1e8-1f1eb.png
new file mode 100644
index 000000000..b969ae29e
--- /dev/null
+++ b/images/emoji/1f1e8-1f1eb.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1ec.png b/images/emoji/1f1e8-1f1ec.png
new file mode 100644
index 000000000..3a38a40a9
--- /dev/null
+++ b/images/emoji/1f1e8-1f1ec.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1ed.png b/images/emoji/1f1e8-1f1ed.png
new file mode 100644
index 000000000..5ff86b8a3
--- /dev/null
+++ b/images/emoji/1f1e8-1f1ed.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1ee.png b/images/emoji/1f1e8-1f1ee.png
new file mode 100644
index 000000000..e3b4d15c7
--- /dev/null
+++ b/images/emoji/1f1e8-1f1ee.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1f0.png b/images/emoji/1f1e8-1f1f0.png
new file mode 100644
index 000000000..b6b53dbc1
--- /dev/null
+++ b/images/emoji/1f1e8-1f1f0.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1f1.png b/images/emoji/1f1e8-1f1f1.png
new file mode 100644
index 000000000..c9390da54
--- /dev/null
+++ b/images/emoji/1f1e8-1f1f1.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1f2.png b/images/emoji/1f1e8-1f1f2.png
new file mode 100644
index 000000000..2d3f6ec45
--- /dev/null
+++ b/images/emoji/1f1e8-1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1f3.png b/images/emoji/1f1e8-1f1f3.png
new file mode 100644
index 000000000..0a7f350a6
--- /dev/null
+++ b/images/emoji/1f1e8-1f1f3.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1f4.png b/images/emoji/1f1e8-1f1f4.png
new file mode 100644
index 000000000..7e0f5e0dc
--- /dev/null
+++ b/images/emoji/1f1e8-1f1f4.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1f5.png b/images/emoji/1f1e8-1f1f5.png
new file mode 100644
index 000000000..70c761036
--- /dev/null
+++ b/images/emoji/1f1e8-1f1f5.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1f7.png b/images/emoji/1f1e8-1f1f7.png
new file mode 100644
index 000000000..a5fce1265
--- /dev/null
+++ b/images/emoji/1f1e8-1f1f7.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1fa.png b/images/emoji/1f1e8-1f1fa.png
new file mode 100644
index 000000000..447328f7d
--- /dev/null
+++ b/images/emoji/1f1e8-1f1fa.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1fb.png b/images/emoji/1f1e8-1f1fb.png
new file mode 100644
index 000000000..43faf4d64
--- /dev/null
+++ b/images/emoji/1f1e8-1f1fb.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1fc.png b/images/emoji/1f1e8-1f1fc.png
new file mode 100644
index 000000000..eb39e8d00
--- /dev/null
+++ b/images/emoji/1f1e8-1f1fc.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1fd.png b/images/emoji/1f1e8-1f1fd.png
new file mode 100644
index 000000000..09d21359f
--- /dev/null
+++ b/images/emoji/1f1e8-1f1fd.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1fe.png b/images/emoji/1f1e8-1f1fe.png
new file mode 100644
index 000000000..154a7aa31
--- /dev/null
+++ b/images/emoji/1f1e8-1f1fe.png
Binary files differ
diff --git a/images/emoji/1f1e8-1f1ff.png b/images/emoji/1f1e8-1f1ff.png
new file mode 100644
index 000000000..9737ca223
--- /dev/null
+++ b/images/emoji/1f1e8-1f1ff.png
Binary files differ
diff --git a/images/emoji/1f1e8.png b/images/emoji/1f1e8.png
new file mode 100644
index 000000000..f94e668a2
--- /dev/null
+++ b/images/emoji/1f1e8.png
Binary files differ
diff --git a/images/emoji/1f1e9-1f1ea.png b/images/emoji/1f1e9-1f1ea.png
new file mode 100644
index 000000000..98ed76b3b
--- /dev/null
+++ b/images/emoji/1f1e9-1f1ea.png
Binary files differ
diff --git a/images/emoji/1f1e9-1f1ec.png b/images/emoji/1f1e9-1f1ec.png
new file mode 100644
index 000000000..fb6cc3cd4
--- /dev/null
+++ b/images/emoji/1f1e9-1f1ec.png
Binary files differ
diff --git a/images/emoji/1f1e9-1f1ef.png b/images/emoji/1f1e9-1f1ef.png
new file mode 100644
index 000000000..73c2a2acb
--- /dev/null
+++ b/images/emoji/1f1e9-1f1ef.png
Binary files differ
diff --git a/images/emoji/1f1e9-1f1f0.png b/images/emoji/1f1e9-1f1f0.png
new file mode 100644
index 000000000..e5a60b062
--- /dev/null
+++ b/images/emoji/1f1e9-1f1f0.png
Binary files differ
diff --git a/images/emoji/1f1e9-1f1f2.png b/images/emoji/1f1e9-1f1f2.png
new file mode 100644
index 000000000..4d4cf6444
--- /dev/null
+++ b/images/emoji/1f1e9-1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1e9-1f1f4.png b/images/emoji/1f1e9-1f1f4.png
new file mode 100644
index 000000000..037a45d7c
--- /dev/null
+++ b/images/emoji/1f1e9-1f1f4.png
Binary files differ
diff --git a/images/emoji/1f1e9-1f1ff.png b/images/emoji/1f1e9-1f1ff.png
new file mode 100644
index 000000000..24945b10f
--- /dev/null
+++ b/images/emoji/1f1e9-1f1ff.png
Binary files differ
diff --git a/images/emoji/1f1e9.png b/images/emoji/1f1e9.png
new file mode 100644
index 000000000..4a36666e5
--- /dev/null
+++ b/images/emoji/1f1e9.png
Binary files differ
diff --git a/images/emoji/1f1ea-1f1e6.png b/images/emoji/1f1ea-1f1e6.png
new file mode 100644
index 000000000..9d05e1b0d
--- /dev/null
+++ b/images/emoji/1f1ea-1f1e6.png
Binary files differ
diff --git a/images/emoji/1f1ea-1f1e8.png b/images/emoji/1f1ea-1f1e8.png
new file mode 100644
index 000000000..138145946
--- /dev/null
+++ b/images/emoji/1f1ea-1f1e8.png
Binary files differ
diff --git a/images/emoji/1f1ea-1f1ea.png b/images/emoji/1f1ea-1f1ea.png
new file mode 100644
index 000000000..84f317e77
--- /dev/null
+++ b/images/emoji/1f1ea-1f1ea.png
Binary files differ
diff --git a/images/emoji/1f1ea-1f1ec.png b/images/emoji/1f1ea-1f1ec.png
new file mode 100644
index 000000000..57786064a
--- /dev/null
+++ b/images/emoji/1f1ea-1f1ec.png
Binary files differ
diff --git a/images/emoji/1f1ea-1f1ed.png b/images/emoji/1f1ea-1f1ed.png
new file mode 100644
index 000000000..4d7a76687
--- /dev/null
+++ b/images/emoji/1f1ea-1f1ed.png
Binary files differ
diff --git a/images/emoji/1f1ea-1f1f7.png b/images/emoji/1f1ea-1f1f7.png
new file mode 100644
index 000000000..0c3c724c1
--- /dev/null
+++ b/images/emoji/1f1ea-1f1f7.png
Binary files differ
diff --git a/images/emoji/1f1ea-1f1f8.png b/images/emoji/1f1ea-1f1f8.png
new file mode 100644
index 000000000..c37fdfe5c
--- /dev/null
+++ b/images/emoji/1f1ea-1f1f8.png
Binary files differ
diff --git a/images/emoji/1f1ea-1f1f9.png b/images/emoji/1f1ea-1f1f9.png
new file mode 100644
index 000000000..9560a134c
--- /dev/null
+++ b/images/emoji/1f1ea-1f1f9.png
Binary files differ
diff --git a/images/emoji/1f1ea-1f1fa.png b/images/emoji/1f1ea-1f1fa.png
new file mode 100644
index 000000000..0b456cf33
--- /dev/null
+++ b/images/emoji/1f1ea-1f1fa.png
Binary files differ
diff --git a/images/emoji/1f1ea.png b/images/emoji/1f1ea.png
new file mode 100644
index 000000000..66f7e8d8c
--- /dev/null
+++ b/images/emoji/1f1ea.png
Binary files differ
diff --git a/images/emoji/1f1eb-1f1ee.png b/images/emoji/1f1eb-1f1ee.png
new file mode 100644
index 000000000..ebcf58abf
--- /dev/null
+++ b/images/emoji/1f1eb-1f1ee.png
Binary files differ
diff --git a/images/emoji/1f1eb-1f1ef.png b/images/emoji/1f1eb-1f1ef.png
new file mode 100644
index 000000000..9cc8c37fe
--- /dev/null
+++ b/images/emoji/1f1eb-1f1ef.png
Binary files differ
diff --git a/images/emoji/1f1eb-1f1f0.png b/images/emoji/1f1eb-1f1f0.png
new file mode 100644
index 000000000..61372fd25
--- /dev/null
+++ b/images/emoji/1f1eb-1f1f0.png
Binary files differ
diff --git a/images/emoji/1f1eb-1f1f2.png b/images/emoji/1f1eb-1f1f2.png
new file mode 100644
index 000000000..0889825c8
--- /dev/null
+++ b/images/emoji/1f1eb-1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1eb-1f1f4.png b/images/emoji/1f1eb-1f1f4.png
new file mode 100644
index 000000000..9a4431b08
--- /dev/null
+++ b/images/emoji/1f1eb-1f1f4.png
Binary files differ
diff --git a/images/emoji/1f1eb-1f1f7.png b/images/emoji/1f1eb-1f1f7.png
new file mode 100644
index 000000000..62ca19c3f
--- /dev/null
+++ b/images/emoji/1f1eb-1f1f7.png
Binary files differ
diff --git a/images/emoji/1f1eb.png b/images/emoji/1f1eb.png
new file mode 100644
index 000000000..913b230fd
--- /dev/null
+++ b/images/emoji/1f1eb.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1e6.png b/images/emoji/1f1ec-1f1e6.png
new file mode 100644
index 000000000..2e68e527a
--- /dev/null
+++ b/images/emoji/1f1ec-1f1e6.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1e7.png b/images/emoji/1f1ec-1f1e7.png
new file mode 100644
index 000000000..3ed10f623
--- /dev/null
+++ b/images/emoji/1f1ec-1f1e7.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1e9.png b/images/emoji/1f1ec-1f1e9.png
new file mode 100644
index 000000000..527aad338
--- /dev/null
+++ b/images/emoji/1f1ec-1f1e9.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1ea.png b/images/emoji/1f1ec-1f1ea.png
new file mode 100644
index 000000000..a75d14248
--- /dev/null
+++ b/images/emoji/1f1ec-1f1ea.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1eb.png b/images/emoji/1f1ec-1f1eb.png
new file mode 100644
index 000000000..0cf96f327
--- /dev/null
+++ b/images/emoji/1f1ec-1f1eb.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1ec.png b/images/emoji/1f1ec-1f1ec.png
new file mode 100644
index 000000000..970002c7f
--- /dev/null
+++ b/images/emoji/1f1ec-1f1ec.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1ed.png b/images/emoji/1f1ec-1f1ed.png
new file mode 100644
index 000000000..f31b5eb7b
--- /dev/null
+++ b/images/emoji/1f1ec-1f1ed.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1ee.png b/images/emoji/1f1ec-1f1ee.png
new file mode 100644
index 000000000..e554a2a1d
--- /dev/null
+++ b/images/emoji/1f1ec-1f1ee.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1f1.png b/images/emoji/1f1ec-1f1f1.png
new file mode 100644
index 000000000..2e795dd4e
--- /dev/null
+++ b/images/emoji/1f1ec-1f1f1.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1f2.png b/images/emoji/1f1ec-1f1f2.png
new file mode 100644
index 000000000..bb69c0975
--- /dev/null
+++ b/images/emoji/1f1ec-1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1f3.png b/images/emoji/1f1ec-1f1f3.png
new file mode 100644
index 000000000..1981f61db
--- /dev/null
+++ b/images/emoji/1f1ec-1f1f3.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1f5.png b/images/emoji/1f1ec-1f1f5.png
new file mode 100644
index 000000000..10e42e672
--- /dev/null
+++ b/images/emoji/1f1ec-1f1f5.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1f6.png b/images/emoji/1f1ec-1f1f6.png
new file mode 100644
index 000000000..11475e61e
--- /dev/null
+++ b/images/emoji/1f1ec-1f1f6.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1f7.png b/images/emoji/1f1ec-1f1f7.png
new file mode 100644
index 000000000..0f6bb1b6b
--- /dev/null
+++ b/images/emoji/1f1ec-1f1f7.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1f8.png b/images/emoji/1f1ec-1f1f8.png
new file mode 100644
index 000000000..6fc927804
--- /dev/null
+++ b/images/emoji/1f1ec-1f1f8.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1f9.png b/images/emoji/1f1ec-1f1f9.png
new file mode 100644
index 000000000..7213d4139
--- /dev/null
+++ b/images/emoji/1f1ec-1f1f9.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1fa.png b/images/emoji/1f1ec-1f1fa.png
new file mode 100644
index 000000000..4027549ca
--- /dev/null
+++ b/images/emoji/1f1ec-1f1fa.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1fc.png b/images/emoji/1f1ec-1f1fc.png
new file mode 100644
index 000000000..6357f6225
--- /dev/null
+++ b/images/emoji/1f1ec-1f1fc.png
Binary files differ
diff --git a/images/emoji/1f1ec-1f1fe.png b/images/emoji/1f1ec-1f1fe.png
new file mode 100644
index 000000000..746e2fb7e
--- /dev/null
+++ b/images/emoji/1f1ec-1f1fe.png
Binary files differ
diff --git a/images/emoji/1f1ec.png b/images/emoji/1f1ec.png
new file mode 100644
index 000000000..271163075
--- /dev/null
+++ b/images/emoji/1f1ec.png
Binary files differ
diff --git a/images/emoji/1f1ed-1f1f0.png b/images/emoji/1f1ed-1f1f0.png
new file mode 100644
index 000000000..cf0c7151b
--- /dev/null
+++ b/images/emoji/1f1ed-1f1f0.png
Binary files differ
diff --git a/images/emoji/1f1ed-1f1f2.png b/images/emoji/1f1ed-1f1f2.png
new file mode 100644
index 000000000..b613509e4
--- /dev/null
+++ b/images/emoji/1f1ed-1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1ed-1f1f3.png b/images/emoji/1f1ed-1f1f3.png
new file mode 100644
index 000000000..402cdcefd
--- /dev/null
+++ b/images/emoji/1f1ed-1f1f3.png
Binary files differ
diff --git a/images/emoji/1f1ed-1f1f7.png b/images/emoji/1f1ed-1f1f7.png
new file mode 100644
index 000000000..46f4f06b4
--- /dev/null
+++ b/images/emoji/1f1ed-1f1f7.png
Binary files differ
diff --git a/images/emoji/1f1ed-1f1f9.png b/images/emoji/1f1ed-1f1f9.png
new file mode 100644
index 000000000..d8d0c8884
--- /dev/null
+++ b/images/emoji/1f1ed-1f1f9.png
Binary files differ
diff --git a/images/emoji/1f1ed-1f1fa.png b/images/emoji/1f1ed-1f1fa.png
new file mode 100644
index 000000000..a898de636
--- /dev/null
+++ b/images/emoji/1f1ed-1f1fa.png
Binary files differ
diff --git a/images/emoji/1f1ed.png b/images/emoji/1f1ed.png
new file mode 100644
index 000000000..ca88e46bf
--- /dev/null
+++ b/images/emoji/1f1ed.png
Binary files differ
diff --git a/images/emoji/1f1ee-1f1e8.png b/images/emoji/1f1ee-1f1e8.png
new file mode 100644
index 000000000..69fd990aa
--- /dev/null
+++ b/images/emoji/1f1ee-1f1e8.png
Binary files differ
diff --git a/images/emoji/1f1ee-1f1e9.png b/images/emoji/1f1ee-1f1e9.png
new file mode 100644
index 000000000..85b4c063a
--- /dev/null
+++ b/images/emoji/1f1ee-1f1e9.png
Binary files differ
diff --git a/images/emoji/1f1ee-1f1ea.png b/images/emoji/1f1ee-1f1ea.png
new file mode 100644
index 000000000..a28295838
--- /dev/null
+++ b/images/emoji/1f1ee-1f1ea.png
Binary files differ
diff --git a/images/emoji/1f1ee-1f1f1.png b/images/emoji/1f1ee-1f1f1.png
new file mode 100644
index 000000000..85c410d45
--- /dev/null
+++ b/images/emoji/1f1ee-1f1f1.png
Binary files differ
diff --git a/images/emoji/1f1ee-1f1f2.png b/images/emoji/1f1ee-1f1f2.png
new file mode 100644
index 000000000..60a2458e3
--- /dev/null
+++ b/images/emoji/1f1ee-1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1ee-1f1f3.png b/images/emoji/1f1ee-1f1f3.png
new file mode 100644
index 000000000..feccc8952
--- /dev/null
+++ b/images/emoji/1f1ee-1f1f3.png
Binary files differ
diff --git a/images/emoji/1f1ee-1f1f4.png b/images/emoji/1f1ee-1f1f4.png
new file mode 100644
index 000000000..fb6cc3cd4
--- /dev/null
+++ b/images/emoji/1f1ee-1f1f4.png
Binary files differ
diff --git a/images/emoji/1f1ee-1f1f6.png b/images/emoji/1f1ee-1f1f6.png
new file mode 100644
index 000000000..41fd1db6f
--- /dev/null
+++ b/images/emoji/1f1ee-1f1f6.png
Binary files differ
diff --git a/images/emoji/1f1ee-1f1f7.png b/images/emoji/1f1ee-1f1f7.png
new file mode 100644
index 000000000..ff7aaf62b
--- /dev/null
+++ b/images/emoji/1f1ee-1f1f7.png
Binary files differ
diff --git a/images/emoji/1f1ee-1f1f8.png b/images/emoji/1f1ee-1f1f8.png
new file mode 100644
index 000000000..ad8d4131d
--- /dev/null
+++ b/images/emoji/1f1ee-1f1f8.png
Binary files differ
diff --git a/images/emoji/1f1ee-1f1f9.png b/images/emoji/1f1ee-1f1f9.png
new file mode 100644
index 000000000..f21563ec5
--- /dev/null
+++ b/images/emoji/1f1ee-1f1f9.png
Binary files differ
diff --git a/images/emoji/1f1ee.png b/images/emoji/1f1ee.png
new file mode 100644
index 000000000..48dc16788
--- /dev/null
+++ b/images/emoji/1f1ee.png
Binary files differ
diff --git a/images/emoji/1f1ef-1f1ea.png b/images/emoji/1f1ef-1f1ea.png
new file mode 100644
index 000000000..198a918f6
--- /dev/null
+++ b/images/emoji/1f1ef-1f1ea.png
Binary files differ
diff --git a/images/emoji/1f1ef-1f1f2.png b/images/emoji/1f1ef-1f1f2.png
new file mode 100644
index 000000000..f84e4f9e8
--- /dev/null
+++ b/images/emoji/1f1ef-1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1ef-1f1f4.png b/images/emoji/1f1ef-1f1f4.png
new file mode 100644
index 000000000..20bfa147e
--- /dev/null
+++ b/images/emoji/1f1ef-1f1f4.png
Binary files differ
diff --git a/images/emoji/1f1ef-1f1f5.png b/images/emoji/1f1ef-1f1f5.png
new file mode 100644
index 000000000..8d8838e47
--- /dev/null
+++ b/images/emoji/1f1ef-1f1f5.png
Binary files differ
diff --git a/images/emoji/1f1ef.png b/images/emoji/1f1ef.png
new file mode 100644
index 000000000..16599daa7
--- /dev/null
+++ b/images/emoji/1f1ef.png
Binary files differ
diff --git a/images/emoji/1f1f0-1f1ea.png b/images/emoji/1f1f0-1f1ea.png
new file mode 100644
index 000000000..9e417ab30
--- /dev/null
+++ b/images/emoji/1f1f0-1f1ea.png
Binary files differ
diff --git a/images/emoji/1f1f0-1f1ec.png b/images/emoji/1f1f0-1f1ec.png
new file mode 100644
index 000000000..b3eaf7e57
--- /dev/null
+++ b/images/emoji/1f1f0-1f1ec.png
Binary files differ
diff --git a/images/emoji/1f1f0-1f1ed.png b/images/emoji/1f1f0-1f1ed.png
new file mode 100644
index 000000000..9a2877dd6
--- /dev/null
+++ b/images/emoji/1f1f0-1f1ed.png
Binary files differ
diff --git a/images/emoji/1f1f0-1f1ee.png b/images/emoji/1f1f0-1f1ee.png
new file mode 100644
index 000000000..9a5abed3f
--- /dev/null
+++ b/images/emoji/1f1f0-1f1ee.png
Binary files differ
diff --git a/images/emoji/1f1f0-1f1f2.png b/images/emoji/1f1f0-1f1f2.png
new file mode 100644
index 000000000..bd5a0588e
--- /dev/null
+++ b/images/emoji/1f1f0-1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1f0-1f1f3.png b/images/emoji/1f1f0-1f1f3.png
new file mode 100644
index 000000000..776207c96
--- /dev/null
+++ b/images/emoji/1f1f0-1f1f3.png
Binary files differ
diff --git a/images/emoji/1f1f0-1f1f5.png b/images/emoji/1f1f0-1f1f5.png
new file mode 100644
index 000000000..6b3fd89ea
--- /dev/null
+++ b/images/emoji/1f1f0-1f1f5.png
Binary files differ
diff --git a/images/emoji/1f1f0-1f1f7.png b/images/emoji/1f1f0-1f1f7.png
new file mode 100644
index 000000000..faa466f2d
--- /dev/null
+++ b/images/emoji/1f1f0-1f1f7.png
Binary files differ
diff --git a/images/emoji/1f1f0-1f1fc.png b/images/emoji/1f1f0-1f1fc.png
new file mode 100644
index 000000000..4d19bfa6c
--- /dev/null
+++ b/images/emoji/1f1f0-1f1fc.png
Binary files differ
diff --git a/images/emoji/1f1f0-1f1fe.png b/images/emoji/1f1f0-1f1fe.png
new file mode 100644
index 000000000..40daa4da5
--- /dev/null
+++ b/images/emoji/1f1f0-1f1fe.png
Binary files differ
diff --git a/images/emoji/1f1f0-1f1ff.png b/images/emoji/1f1f0-1f1ff.png
new file mode 100644
index 000000000..2f97a8fd3
--- /dev/null
+++ b/images/emoji/1f1f0-1f1ff.png
Binary files differ
diff --git a/images/emoji/1f1f0.png b/images/emoji/1f1f0.png
new file mode 100644
index 000000000..204b95d1b
--- /dev/null
+++ b/images/emoji/1f1f0.png
Binary files differ
diff --git a/images/emoji/1f1f1-1f1e6.png b/images/emoji/1f1f1-1f1e6.png
new file mode 100644
index 000000000..4d4179f34
--- /dev/null
+++ b/images/emoji/1f1f1-1f1e6.png
Binary files differ
diff --git a/images/emoji/1f1f1-1f1e7.png b/images/emoji/1f1f1-1f1e7.png
new file mode 100644
index 000000000..3d5944670
--- /dev/null
+++ b/images/emoji/1f1f1-1f1e7.png
Binary files differ
diff --git a/images/emoji/1f1f1-1f1e8.png b/images/emoji/1f1f1-1f1e8.png
new file mode 100644
index 000000000..45547b1e4
--- /dev/null
+++ b/images/emoji/1f1f1-1f1e8.png
Binary files differ
diff --git a/images/emoji/1f1f1-1f1ee.png b/images/emoji/1f1f1-1f1ee.png
new file mode 100644
index 000000000..0eafa6a22
--- /dev/null
+++ b/images/emoji/1f1f1-1f1ee.png
Binary files differ
diff --git a/images/emoji/1f1f1-1f1f0.png b/images/emoji/1f1f1-1f1f0.png
new file mode 100644
index 000000000..ab4fe10c4
--- /dev/null
+++ b/images/emoji/1f1f1-1f1f0.png
Binary files differ
diff --git a/images/emoji/1f1f1-1f1f7.png b/images/emoji/1f1f1-1f1f7.png
new file mode 100644
index 000000000..f66f267fe
--- /dev/null
+++ b/images/emoji/1f1f1-1f1f7.png
Binary files differ
diff --git a/images/emoji/1f1f1-1f1f8.png b/images/emoji/1f1f1-1f1f8.png
new file mode 100644
index 000000000..24745631e
--- /dev/null
+++ b/images/emoji/1f1f1-1f1f8.png
Binary files differ
diff --git a/images/emoji/1f1f1-1f1f9.png b/images/emoji/1f1f1-1f1f9.png
new file mode 100644
index 000000000..d644b56d6
--- /dev/null
+++ b/images/emoji/1f1f1-1f1f9.png
Binary files differ
diff --git a/images/emoji/1f1f1-1f1fa.png b/images/emoji/1f1f1-1f1fa.png
new file mode 100644
index 000000000..a2df9c929
--- /dev/null
+++ b/images/emoji/1f1f1-1f1fa.png
Binary files differ
diff --git a/images/emoji/1f1f1-1f1fb.png b/images/emoji/1f1f1-1f1fb.png
new file mode 100644
index 000000000..ae680d5f0
--- /dev/null
+++ b/images/emoji/1f1f1-1f1fb.png
Binary files differ
diff --git a/images/emoji/1f1f1-1f1fe.png b/images/emoji/1f1f1-1f1fe.png
new file mode 100644
index 000000000..f6e77b0f3
--- /dev/null
+++ b/images/emoji/1f1f1-1f1fe.png
Binary files differ
diff --git a/images/emoji/1f1f1.png b/images/emoji/1f1f1.png
new file mode 100644
index 000000000..7992b4f68
--- /dev/null
+++ b/images/emoji/1f1f1.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1e6.png b/images/emoji/1f1f2-1f1e6.png
new file mode 100644
index 000000000..c4a056722
--- /dev/null
+++ b/images/emoji/1f1f2-1f1e6.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1e8.png b/images/emoji/1f1f2-1f1e8.png
new file mode 100644
index 000000000..d479eab98
--- /dev/null
+++ b/images/emoji/1f1f2-1f1e8.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1e9.png b/images/emoji/1f1f2-1f1e9.png
new file mode 100644
index 000000000..a7a725398
--- /dev/null
+++ b/images/emoji/1f1f2-1f1e9.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1ea.png b/images/emoji/1f1f2-1f1ea.png
new file mode 100644
index 000000000..7c771e7e1
--- /dev/null
+++ b/images/emoji/1f1f2-1f1ea.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1eb.png b/images/emoji/1f1f2-1f1eb.png
new file mode 100644
index 000000000..70c761036
--- /dev/null
+++ b/images/emoji/1f1f2-1f1eb.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1ec.png b/images/emoji/1f1f2-1f1ec.png
new file mode 100644
index 000000000..2f3ccdda7
--- /dev/null
+++ b/images/emoji/1f1f2-1f1ec.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1ed.png b/images/emoji/1f1f2-1f1ed.png
new file mode 100644
index 000000000..598016481
--- /dev/null
+++ b/images/emoji/1f1f2-1f1ed.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1f0.png b/images/emoji/1f1f2-1f1f0.png
new file mode 100644
index 000000000..7ba775ee7
--- /dev/null
+++ b/images/emoji/1f1f2-1f1f0.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1f1.png b/images/emoji/1f1f2-1f1f1.png
new file mode 100644
index 000000000..683437854
--- /dev/null
+++ b/images/emoji/1f1f2-1f1f1.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1f2.png b/images/emoji/1f1f2-1f1f2.png
new file mode 100644
index 000000000..37dc7d715
--- /dev/null
+++ b/images/emoji/1f1f2-1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1f3.png b/images/emoji/1f1f2-1f1f3.png
new file mode 100644
index 000000000..1f146bbcd
--- /dev/null
+++ b/images/emoji/1f1f2-1f1f3.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1f4.png b/images/emoji/1f1f2-1f1f4.png
new file mode 100644
index 000000000..7edde31f6
--- /dev/null
+++ b/images/emoji/1f1f2-1f1f4.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1f5.png b/images/emoji/1f1f2-1f1f5.png
new file mode 100644
index 000000000..17ec1c441
--- /dev/null
+++ b/images/emoji/1f1f2-1f1f5.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1f6.png b/images/emoji/1f1f2-1f1f6.png
new file mode 100644
index 000000000..1e672dc90
--- /dev/null
+++ b/images/emoji/1f1f2-1f1f6.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1f7.png b/images/emoji/1f1f2-1f1f7.png
new file mode 100644
index 000000000..f87de46ef
--- /dev/null
+++ b/images/emoji/1f1f2-1f1f7.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1f8.png b/images/emoji/1f1f2-1f1f8.png
new file mode 100644
index 000000000..480b0d4eb
--- /dev/null
+++ b/images/emoji/1f1f2-1f1f8.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1f9.png b/images/emoji/1f1f2-1f1f9.png
new file mode 100644
index 000000000..c9e1dbdce
--- /dev/null
+++ b/images/emoji/1f1f2-1f1f9.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1fa.png b/images/emoji/1f1f2-1f1fa.png
new file mode 100644
index 000000000..55b33cb7c
--- /dev/null
+++ b/images/emoji/1f1f2-1f1fa.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1fb.png b/images/emoji/1f1f2-1f1fb.png
new file mode 100644
index 000000000..ce5867126
--- /dev/null
+++ b/images/emoji/1f1f2-1f1fb.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1fc.png b/images/emoji/1f1f2-1f1fc.png
new file mode 100644
index 000000000..003d85484
--- /dev/null
+++ b/images/emoji/1f1f2-1f1fc.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1fd.png b/images/emoji/1f1f2-1f1fd.png
new file mode 100644
index 000000000..42572bcd0
--- /dev/null
+++ b/images/emoji/1f1f2-1f1fd.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1fe.png b/images/emoji/1f1f2-1f1fe.png
new file mode 100644
index 000000000..17526c267
--- /dev/null
+++ b/images/emoji/1f1f2-1f1fe.png
Binary files differ
diff --git a/images/emoji/1f1f2-1f1ff.png b/images/emoji/1f1f2-1f1ff.png
new file mode 100644
index 000000000..2352a78e7
--- /dev/null
+++ b/images/emoji/1f1f2-1f1ff.png
Binary files differ
diff --git a/images/emoji/1f1f2.png b/images/emoji/1f1f2.png
new file mode 100644
index 000000000..7b848b2ce
--- /dev/null
+++ b/images/emoji/1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1f3-1f1e6.png b/images/emoji/1f1f3-1f1e6.png
new file mode 100644
index 000000000..ed31c3df0
--- /dev/null
+++ b/images/emoji/1f1f3-1f1e6.png
Binary files differ
diff --git a/images/emoji/1f1f3-1f1e8.png b/images/emoji/1f1f3-1f1e8.png
new file mode 100644
index 000000000..3c57ee942
--- /dev/null
+++ b/images/emoji/1f1f3-1f1e8.png
Binary files differ
diff --git a/images/emoji/1f1f3-1f1ea.png b/images/emoji/1f1f3-1f1ea.png
new file mode 100644
index 000000000..f98a1173c
--- /dev/null
+++ b/images/emoji/1f1f3-1f1ea.png
Binary files differ
diff --git a/images/emoji/1f1f3-1f1eb.png b/images/emoji/1f1f3-1f1eb.png
new file mode 100644
index 000000000..9099e7674
--- /dev/null
+++ b/images/emoji/1f1f3-1f1eb.png
Binary files differ
diff --git a/images/emoji/1f1f3-1f1ec.png b/images/emoji/1f1f3-1f1ec.png
new file mode 100644
index 000000000..ea0abeff1
--- /dev/null
+++ b/images/emoji/1f1f3-1f1ec.png
Binary files differ
diff --git a/images/emoji/1f1f3-1f1ee.png b/images/emoji/1f1f3-1f1ee.png
new file mode 100644
index 000000000..772920dfa
--- /dev/null
+++ b/images/emoji/1f1f3-1f1ee.png
Binary files differ
diff --git a/images/emoji/1f1f3-1f1f1.png b/images/emoji/1f1f3-1f1f1.png
new file mode 100644
index 000000000..83a0e817e
--- /dev/null
+++ b/images/emoji/1f1f3-1f1f1.png
Binary files differ
diff --git a/images/emoji/1f1f3-1f1f4.png b/images/emoji/1f1f3-1f1f4.png
new file mode 100644
index 000000000..99d3142eb
--- /dev/null
+++ b/images/emoji/1f1f3-1f1f4.png
Binary files differ
diff --git a/images/emoji/1f1f3-1f1f5.png b/images/emoji/1f1f3-1f1f5.png
new file mode 100644
index 000000000..87425a8df
--- /dev/null
+++ b/images/emoji/1f1f3-1f1f5.png
Binary files differ
diff --git a/images/emoji/1f1f3-1f1f7.png b/images/emoji/1f1f3-1f1f7.png
new file mode 100644
index 000000000..b3e3a5d56
--- /dev/null
+++ b/images/emoji/1f1f3-1f1f7.png
Binary files differ
diff --git a/images/emoji/1f1f3-1f1fa.png b/images/emoji/1f1f3-1f1fa.png
new file mode 100644
index 000000000..f03614443
--- /dev/null
+++ b/images/emoji/1f1f3-1f1fa.png
Binary files differ
diff --git a/images/emoji/1f1f3-1f1ff.png b/images/emoji/1f1f3-1f1ff.png
new file mode 100644
index 000000000..a4eeeab9c
--- /dev/null
+++ b/images/emoji/1f1f3-1f1ff.png
Binary files differ
diff --git a/images/emoji/1f1f3.png b/images/emoji/1f1f3.png
new file mode 100644
index 000000000..4a11e5043
--- /dev/null
+++ b/images/emoji/1f1f3.png
Binary files differ
diff --git a/images/emoji/1f1f4-1f1f2.png b/images/emoji/1f1f4-1f1f2.png
new file mode 100644
index 000000000..ea824ba31
--- /dev/null
+++ b/images/emoji/1f1f4-1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1f4.png b/images/emoji/1f1f4.png
new file mode 100644
index 000000000..2a0760b31
--- /dev/null
+++ b/images/emoji/1f1f4.png
Binary files differ
diff --git a/images/emoji/1f1f5-1f1e6.png b/images/emoji/1f1f5-1f1e6.png
new file mode 100644
index 000000000..c3091d898
--- /dev/null
+++ b/images/emoji/1f1f5-1f1e6.png
Binary files differ
diff --git a/images/emoji/1f1f5-1f1ea.png b/images/emoji/1f1f5-1f1ea.png
new file mode 100644
index 000000000..39223aa9d
--- /dev/null
+++ b/images/emoji/1f1f5-1f1ea.png
Binary files differ
diff --git a/images/emoji/1f1f5-1f1eb.png b/images/emoji/1f1f5-1f1eb.png
new file mode 100644
index 000000000..113445f8f
--- /dev/null
+++ b/images/emoji/1f1f5-1f1eb.png
Binary files differ
diff --git a/images/emoji/1f1f5-1f1ec.png b/images/emoji/1f1f5-1f1ec.png
new file mode 100644
index 000000000..825e9dcb7
--- /dev/null
+++ b/images/emoji/1f1f5-1f1ec.png
Binary files differ
diff --git a/images/emoji/1f1f5-1f1ed.png b/images/emoji/1f1f5-1f1ed.png
new file mode 100644
index 000000000..8260e15bd
--- /dev/null
+++ b/images/emoji/1f1f5-1f1ed.png
Binary files differ
diff --git a/images/emoji/1f1f5-1f1f0.png b/images/emoji/1f1f5-1f1f0.png
new file mode 100644
index 000000000..a7b6a1c50
--- /dev/null
+++ b/images/emoji/1f1f5-1f1f0.png
Binary files differ
diff --git a/images/emoji/1f1f5-1f1f1.png b/images/emoji/1f1f5-1f1f1.png
new file mode 100644
index 000000000..19de2edec
--- /dev/null
+++ b/images/emoji/1f1f5-1f1f1.png
Binary files differ
diff --git a/images/emoji/1f1f5-1f1f2.png b/images/emoji/1f1f5-1f1f2.png
new file mode 100644
index 000000000..2ca605541
--- /dev/null
+++ b/images/emoji/1f1f5-1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1f5-1f1f3.png b/images/emoji/1f1f5-1f1f3.png
new file mode 100644
index 000000000..9a6327847
--- /dev/null
+++ b/images/emoji/1f1f5-1f1f3.png
Binary files differ
diff --git a/images/emoji/1f1f5-1f1f7.png b/images/emoji/1f1f5-1f1f7.png
new file mode 100644
index 000000000..d0209cddb
--- /dev/null
+++ b/images/emoji/1f1f5-1f1f7.png
Binary files differ
diff --git a/images/emoji/1f1f5-1f1f8.png b/images/emoji/1f1f5-1f1f8.png
new file mode 100644
index 000000000..7ccab0977
--- /dev/null
+++ b/images/emoji/1f1f5-1f1f8.png
Binary files differ
diff --git a/images/emoji/1f1f5-1f1f9.png b/images/emoji/1f1f5-1f1f9.png
new file mode 100644
index 000000000..cc93f27c6
--- /dev/null
+++ b/images/emoji/1f1f5-1f1f9.png
Binary files differ
diff --git a/images/emoji/1f1f5-1f1fc.png b/images/emoji/1f1f5-1f1fc.png
new file mode 100644
index 000000000..154b2f12d
--- /dev/null
+++ b/images/emoji/1f1f5-1f1fc.png
Binary files differ
diff --git a/images/emoji/1f1f5-1f1fe.png b/images/emoji/1f1f5-1f1fe.png
new file mode 100644
index 000000000..662ad2f6f
--- /dev/null
+++ b/images/emoji/1f1f5-1f1fe.png
Binary files differ
diff --git a/images/emoji/1f1f5.png b/images/emoji/1f1f5.png
new file mode 100644
index 000000000..bcb3298f9
--- /dev/null
+++ b/images/emoji/1f1f5.png
Binary files differ
diff --git a/images/emoji/1f1f6-1f1e6.png b/images/emoji/1f1f6-1f1e6.png
new file mode 100644
index 000000000..a01d8b05c
--- /dev/null
+++ b/images/emoji/1f1f6-1f1e6.png
Binary files differ
diff --git a/images/emoji/1f1f6.png b/images/emoji/1f1f6.png
new file mode 100644
index 000000000..6c92a9dfb
--- /dev/null
+++ b/images/emoji/1f1f6.png
Binary files differ
diff --git a/images/emoji/1f1f7-1f1ea.png b/images/emoji/1f1f7-1f1ea.png
new file mode 100644
index 000000000..57f2bbe9d
--- /dev/null
+++ b/images/emoji/1f1f7-1f1ea.png
Binary files differ
diff --git a/images/emoji/1f1f7-1f1f4.png b/images/emoji/1f1f7-1f1f4.png
new file mode 100644
index 000000000..3e48c4477
--- /dev/null
+++ b/images/emoji/1f1f7-1f1f4.png
Binary files differ
diff --git a/images/emoji/1f1f7-1f1f8.png b/images/emoji/1f1f7-1f1f8.png
new file mode 100644
index 000000000..9df6c9a52
--- /dev/null
+++ b/images/emoji/1f1f7-1f1f8.png
Binary files differ
diff --git a/images/emoji/1f1f7-1f1fa.png b/images/emoji/1f1f7-1f1fa.png
new file mode 100644
index 000000000..e50c9db90
--- /dev/null
+++ b/images/emoji/1f1f7-1f1fa.png
Binary files differ
diff --git a/images/emoji/1f1f7-1f1fc.png b/images/emoji/1f1f7-1f1fc.png
new file mode 100644
index 000000000..c238c874e
--- /dev/null
+++ b/images/emoji/1f1f7-1f1fc.png
Binary files differ
diff --git a/images/emoji/1f1f7.png b/images/emoji/1f1f7.png
new file mode 100644
index 000000000..627892c91
--- /dev/null
+++ b/images/emoji/1f1f7.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1e6.png b/images/emoji/1f1f8-1f1e6.png
new file mode 100644
index 000000000..4941be7d1
--- /dev/null
+++ b/images/emoji/1f1f8-1f1e6.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1e7.png b/images/emoji/1f1f8-1f1e7.png
new file mode 100644
index 000000000..7d8f1ac61
--- /dev/null
+++ b/images/emoji/1f1f8-1f1e7.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1e8.png b/images/emoji/1f1f8-1f1e8.png
new file mode 100644
index 000000000..6ae4d9076
--- /dev/null
+++ b/images/emoji/1f1f8-1f1e8.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1e9.png b/images/emoji/1f1f8-1f1e9.png
new file mode 100644
index 000000000..963be1b36
--- /dev/null
+++ b/images/emoji/1f1f8-1f1e9.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1ea.png b/images/emoji/1f1f8-1f1ea.png
new file mode 100644
index 000000000..fc0d0e0ce
--- /dev/null
+++ b/images/emoji/1f1f8-1f1ea.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1ec.png b/images/emoji/1f1f8-1f1ec.png
new file mode 100644
index 000000000..de3c7737c
--- /dev/null
+++ b/images/emoji/1f1f8-1f1ec.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1ed.png b/images/emoji/1f1f8-1f1ed.png
new file mode 100644
index 000000000..40cd9e44e
--- /dev/null
+++ b/images/emoji/1f1f8-1f1ed.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1ee.png b/images/emoji/1f1f8-1f1ee.png
new file mode 100644
index 000000000..e308999db
--- /dev/null
+++ b/images/emoji/1f1f8-1f1ee.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1ef.png b/images/emoji/1f1f8-1f1ef.png
new file mode 100644
index 000000000..5884e6482
--- /dev/null
+++ b/images/emoji/1f1f8-1f1ef.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1f0.png b/images/emoji/1f1f8-1f1f0.png
new file mode 100644
index 000000000..4259d0e14
--- /dev/null
+++ b/images/emoji/1f1f8-1f1f0.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1f1.png b/images/emoji/1f1f8-1f1f1.png
new file mode 100644
index 000000000..d2cc68830
--- /dev/null
+++ b/images/emoji/1f1f8-1f1f1.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1f2.png b/images/emoji/1f1f8-1f1f2.png
new file mode 100644
index 000000000..b96ba87d0
--- /dev/null
+++ b/images/emoji/1f1f8-1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1f3.png b/images/emoji/1f1f8-1f1f3.png
new file mode 100644
index 000000000..5368bbe93
--- /dev/null
+++ b/images/emoji/1f1f8-1f1f3.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1f4.png b/images/emoji/1f1f8-1f1f4.png
new file mode 100644
index 000000000..68a059736
--- /dev/null
+++ b/images/emoji/1f1f8-1f1f4.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1f7.png b/images/emoji/1f1f8-1f1f7.png
new file mode 100644
index 000000000..d32513270
--- /dev/null
+++ b/images/emoji/1f1f8-1f1f7.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1f8.png b/images/emoji/1f1f8-1f1f8.png
new file mode 100644
index 000000000..122977e79
--- /dev/null
+++ b/images/emoji/1f1f8-1f1f8.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1f9.png b/images/emoji/1f1f8-1f1f9.png
new file mode 100644
index 000000000..f83a863d6
--- /dev/null
+++ b/images/emoji/1f1f8-1f1f9.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1fb.png b/images/emoji/1f1f8-1f1fb.png
new file mode 100644
index 000000000..efb83e2f2
--- /dev/null
+++ b/images/emoji/1f1f8-1f1fb.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1fd.png b/images/emoji/1f1f8-1f1fd.png
new file mode 100644
index 000000000..94b760fbe
--- /dev/null
+++ b/images/emoji/1f1f8-1f1fd.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1fe.png b/images/emoji/1f1f8-1f1fe.png
new file mode 100644
index 000000000..09a8ee8f7
--- /dev/null
+++ b/images/emoji/1f1f8-1f1fe.png
Binary files differ
diff --git a/images/emoji/1f1f8-1f1ff.png b/images/emoji/1f1f8-1f1ff.png
new file mode 100644
index 000000000..f74e82ea1
--- /dev/null
+++ b/images/emoji/1f1f8-1f1ff.png
Binary files differ
diff --git a/images/emoji/1f1f8.png b/images/emoji/1f1f8.png
new file mode 100644
index 000000000..9d0dbf93a
--- /dev/null
+++ b/images/emoji/1f1f8.png
Binary files differ
diff --git a/images/emoji/1f1f9-1f1e6.png b/images/emoji/1f1f9-1f1e6.png
new file mode 100644
index 000000000..b44283e90
--- /dev/null
+++ b/images/emoji/1f1f9-1f1e6.png
Binary files differ
diff --git a/images/emoji/1f1f9-1f1e8.png b/images/emoji/1f1f9-1f1e8.png
new file mode 100644
index 000000000..156b33d1b
--- /dev/null
+++ b/images/emoji/1f1f9-1f1e8.png
Binary files differ
diff --git a/images/emoji/1f1f9-1f1e9.png b/images/emoji/1f1f9-1f1e9.png
new file mode 100644
index 000000000..ebe7f5928
--- /dev/null
+++ b/images/emoji/1f1f9-1f1e9.png
Binary files differ
diff --git a/images/emoji/1f1f9-1f1eb.png b/images/emoji/1f1f9-1f1eb.png
new file mode 100644
index 000000000..a1a3ad68e
--- /dev/null
+++ b/images/emoji/1f1f9-1f1eb.png
Binary files differ
diff --git a/images/emoji/1f1f9-1f1ec.png b/images/emoji/1f1f9-1f1ec.png
new file mode 100644
index 000000000..826b73c9a
--- /dev/null
+++ b/images/emoji/1f1f9-1f1ec.png
Binary files differ
diff --git a/images/emoji/1f1f9-1f1ed.png b/images/emoji/1f1f9-1f1ed.png
new file mode 100644
index 000000000..93ff542c5
--- /dev/null
+++ b/images/emoji/1f1f9-1f1ed.png
Binary files differ
diff --git a/images/emoji/1f1f9-1f1ef.png b/images/emoji/1f1f9-1f1ef.png
new file mode 100644
index 000000000..7a8a0b619
--- /dev/null
+++ b/images/emoji/1f1f9-1f1ef.png
Binary files differ
diff --git a/images/emoji/1f1f9-1f1f0.png b/images/emoji/1f1f9-1f1f0.png
new file mode 100644
index 000000000..2fa5a21b1
--- /dev/null
+++ b/images/emoji/1f1f9-1f1f0.png
Binary files differ
diff --git a/images/emoji/1f1f9-1f1f1.png b/images/emoji/1f1f9-1f1f1.png
new file mode 100644
index 000000000..5b120eccc
--- /dev/null
+++ b/images/emoji/1f1f9-1f1f1.png
Binary files differ
diff --git a/images/emoji/1f1f9-1f1f2.png b/images/emoji/1f1f9-1f1f2.png
new file mode 100644
index 000000000..c3c4f5323
--- /dev/null
+++ b/images/emoji/1f1f9-1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1f9-1f1f3.png b/images/emoji/1f1f9-1f1f3.png
new file mode 100644
index 000000000..58ef16122
--- /dev/null
+++ b/images/emoji/1f1f9-1f1f3.png
Binary files differ
diff --git a/images/emoji/1f1f9-1f1f4.png b/images/emoji/1f1f9-1f1f4.png
new file mode 100644
index 000000000..1ffa7bb9d
--- /dev/null
+++ b/images/emoji/1f1f9-1f1f4.png
Binary files differ
diff --git a/images/emoji/1f1f9-1f1f7.png b/images/emoji/1f1f9-1f1f7.png
new file mode 100644
index 000000000..325251fae
--- /dev/null
+++ b/images/emoji/1f1f9-1f1f7.png
Binary files differ
diff --git a/images/emoji/1f1f9-1f1f9.png b/images/emoji/1f1f9-1f1f9.png
new file mode 100644
index 000000000..ed3bb39a3
--- /dev/null
+++ b/images/emoji/1f1f9-1f1f9.png
Binary files differ
diff --git a/images/emoji/1f1f9-1f1fb.png b/images/emoji/1f1f9-1f1fb.png
new file mode 100644
index 000000000..e82c65c7b
--- /dev/null
+++ b/images/emoji/1f1f9-1f1fb.png
Binary files differ
diff --git a/images/emoji/1f1f9-1f1fc.png b/images/emoji/1f1f9-1f1fc.png
new file mode 100644
index 000000000..3a8f00b59
--- /dev/null
+++ b/images/emoji/1f1f9-1f1fc.png
Binary files differ
diff --git a/images/emoji/1f1f9-1f1ff.png b/images/emoji/1f1f9-1f1ff.png
new file mode 100644
index 000000000..2a020853d
--- /dev/null
+++ b/images/emoji/1f1f9-1f1ff.png
Binary files differ
diff --git a/images/emoji/1f1f9.png b/images/emoji/1f1f9.png
new file mode 100644
index 000000000..2d882f66b
--- /dev/null
+++ b/images/emoji/1f1f9.png
Binary files differ
diff --git a/images/emoji/1f1fa-1f1e6.png b/images/emoji/1f1fa-1f1e6.png
new file mode 100644
index 000000000..cd84d1bbd
--- /dev/null
+++ b/images/emoji/1f1fa-1f1e6.png
Binary files differ
diff --git a/images/emoji/1f1fa-1f1ec.png b/images/emoji/1f1fa-1f1ec.png
new file mode 100644
index 000000000..dc97690eb
--- /dev/null
+++ b/images/emoji/1f1fa-1f1ec.png
Binary files differ
diff --git a/images/emoji/1f1fa-1f1f2.png b/images/emoji/1f1fa-1f1f2.png
new file mode 100644
index 000000000..4a7ee3cdf
--- /dev/null
+++ b/images/emoji/1f1fa-1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1fa-1f1f8.png b/images/emoji/1f1fa-1f1f8.png
new file mode 100644
index 000000000..9f7303058
--- /dev/null
+++ b/images/emoji/1f1fa-1f1f8.png
Binary files differ
diff --git a/images/emoji/1f1fa-1f1fe.png b/images/emoji/1f1fa-1f1fe.png
new file mode 100644
index 000000000..b8002a697
--- /dev/null
+++ b/images/emoji/1f1fa-1f1fe.png
Binary files differ
diff --git a/images/emoji/1f1fa-1f1ff.png b/images/emoji/1f1fa-1f1ff.png
new file mode 100644
index 000000000..d56ca9bc4
--- /dev/null
+++ b/images/emoji/1f1fa-1f1ff.png
Binary files differ
diff --git a/images/emoji/1f1fa.png b/images/emoji/1f1fa.png
new file mode 100644
index 000000000..ae0cabeb1
--- /dev/null
+++ b/images/emoji/1f1fa.png
Binary files differ
diff --git a/images/emoji/1f1fb-1f1e6.png b/images/emoji/1f1fb-1f1e6.png
new file mode 100644
index 000000000..7f0676fc8
--- /dev/null
+++ b/images/emoji/1f1fb-1f1e6.png
Binary files differ
diff --git a/images/emoji/1f1fb-1f1e8.png b/images/emoji/1f1fb-1f1e8.png
new file mode 100644
index 000000000..43703c62a
--- /dev/null
+++ b/images/emoji/1f1fb-1f1e8.png
Binary files differ
diff --git a/images/emoji/1f1fb-1f1ea.png b/images/emoji/1f1fb-1f1ea.png
new file mode 100644
index 000000000..1b6279682
--- /dev/null
+++ b/images/emoji/1f1fb-1f1ea.png
Binary files differ
diff --git a/images/emoji/1f1fb-1f1ec.png b/images/emoji/1f1fb-1f1ec.png
new file mode 100644
index 000000000..536f780f1
--- /dev/null
+++ b/images/emoji/1f1fb-1f1ec.png
Binary files differ
diff --git a/images/emoji/1f1fb-1f1ee.png b/images/emoji/1f1fb-1f1ee.png
new file mode 100644
index 000000000..1b4219cb9
--- /dev/null
+++ b/images/emoji/1f1fb-1f1ee.png
Binary files differ
diff --git a/images/emoji/1f1fb-1f1f3.png b/images/emoji/1f1fb-1f1f3.png
new file mode 100644
index 000000000..427036046
--- /dev/null
+++ b/images/emoji/1f1fb-1f1f3.png
Binary files differ
diff --git a/images/emoji/1f1fb-1f1fa.png b/images/emoji/1f1fb-1f1fa.png
new file mode 100644
index 000000000..706eba440
--- /dev/null
+++ b/images/emoji/1f1fb-1f1fa.png
Binary files differ
diff --git a/images/emoji/1f1fb.png b/images/emoji/1f1fb.png
new file mode 100644
index 000000000..e01e179b4
--- /dev/null
+++ b/images/emoji/1f1fb.png
Binary files differ
diff --git a/images/emoji/1f1fc-1f1eb.png b/images/emoji/1f1fc-1f1eb.png
new file mode 100644
index 000000000..70c761036
--- /dev/null
+++ b/images/emoji/1f1fc-1f1eb.png
Binary files differ
diff --git a/images/emoji/1f1fc-1f1f8.png b/images/emoji/1f1fc-1f1f8.png
new file mode 100644
index 000000000..a1ea07031
--- /dev/null
+++ b/images/emoji/1f1fc-1f1f8.png
Binary files differ
diff --git a/images/emoji/1f1fc.png b/images/emoji/1f1fc.png
new file mode 100644
index 000000000..e8f614ac8
--- /dev/null
+++ b/images/emoji/1f1fc.png
Binary files differ
diff --git a/images/emoji/1f1fd-1f1f0.png b/images/emoji/1f1fd-1f1f0.png
new file mode 100644
index 000000000..e587a4466
--- /dev/null
+++ b/images/emoji/1f1fd-1f1f0.png
Binary files differ
diff --git a/images/emoji/1f1fd.png b/images/emoji/1f1fd.png
new file mode 100644
index 000000000..e3bedba0b
--- /dev/null
+++ b/images/emoji/1f1fd.png
Binary files differ
diff --git a/images/emoji/1f1fe-1f1ea.png b/images/emoji/1f1fe-1f1ea.png
new file mode 100644
index 000000000..eadfebd5f
--- /dev/null
+++ b/images/emoji/1f1fe-1f1ea.png
Binary files differ
diff --git a/images/emoji/1f1fe-1f1f9.png b/images/emoji/1f1fe-1f1f9.png
new file mode 100644
index 000000000..e55fd8d85
--- /dev/null
+++ b/images/emoji/1f1fe-1f1f9.png
Binary files differ
diff --git a/images/emoji/1f1fe.png b/images/emoji/1f1fe.png
new file mode 100644
index 000000000..9bfa7f2db
--- /dev/null
+++ b/images/emoji/1f1fe.png
Binary files differ
diff --git a/images/emoji/1f1ff-1f1e6.png b/images/emoji/1f1ff-1f1e6.png
new file mode 100644
index 000000000..f397ef507
--- /dev/null
+++ b/images/emoji/1f1ff-1f1e6.png
Binary files differ
diff --git a/images/emoji/1f1ff-1f1f2.png b/images/emoji/1f1ff-1f1f2.png
new file mode 100644
index 000000000..2494a31f6
--- /dev/null
+++ b/images/emoji/1f1ff-1f1f2.png
Binary files differ
diff --git a/images/emoji/1f1ff-1f1fc.png b/images/emoji/1f1ff-1f1fc.png
new file mode 100644
index 000000000..e09b9652b
--- /dev/null
+++ b/images/emoji/1f1ff-1f1fc.png
Binary files differ
diff --git a/images/emoji/1f1ff.png b/images/emoji/1f1ff.png
new file mode 100644
index 000000000..5bf03f100
--- /dev/null
+++ b/images/emoji/1f1ff.png
Binary files differ
diff --git a/images/emoji/1f201.png b/images/emoji/1f201.png
new file mode 100644
index 000000000..6450eb44d
--- /dev/null
+++ b/images/emoji/1f201.png
Binary files differ
diff --git a/images/emoji/1f202.png b/images/emoji/1f202.png
new file mode 100644
index 000000000..900f96332
--- /dev/null
+++ b/images/emoji/1f202.png
Binary files differ
diff --git a/images/emoji/1f21a.png b/images/emoji/1f21a.png
new file mode 100644
index 000000000..d3a19b420
--- /dev/null
+++ b/images/emoji/1f21a.png
Binary files differ
diff --git a/images/emoji/1f22f.png b/images/emoji/1f22f.png
new file mode 100644
index 000000000..078e23e4f
--- /dev/null
+++ b/images/emoji/1f22f.png
Binary files differ
diff --git a/images/emoji/1f232.png b/images/emoji/1f232.png
new file mode 100644
index 000000000..4c704e034
--- /dev/null
+++ b/images/emoji/1f232.png
Binary files differ
diff --git a/images/emoji/1f233.png b/images/emoji/1f233.png
new file mode 100644
index 000000000..47966c1ea
--- /dev/null
+++ b/images/emoji/1f233.png
Binary files differ
diff --git a/images/emoji/1f234.png b/images/emoji/1f234.png
new file mode 100644
index 000000000..8375ad9d9
--- /dev/null
+++ b/images/emoji/1f234.png
Binary files differ
diff --git a/images/emoji/1f235.png b/images/emoji/1f235.png
new file mode 100644
index 000000000..f9dea8b88
--- /dev/null
+++ b/images/emoji/1f235.png
Binary files differ
diff --git a/images/emoji/1f236.png b/images/emoji/1f236.png
new file mode 100644
index 000000000..a4510de41
--- /dev/null
+++ b/images/emoji/1f236.png
Binary files differ
diff --git a/images/emoji/1f237.png b/images/emoji/1f237.png
new file mode 100644
index 000000000..c41bd36a2
--- /dev/null
+++ b/images/emoji/1f237.png
Binary files differ
diff --git a/images/emoji/1f238.png b/images/emoji/1f238.png
new file mode 100644
index 000000000..6b7af0ee2
--- /dev/null
+++ b/images/emoji/1f238.png
Binary files differ
diff --git a/images/emoji/1f239.png b/images/emoji/1f239.png
new file mode 100644
index 000000000..c4f837fe6
--- /dev/null
+++ b/images/emoji/1f239.png
Binary files differ
diff --git a/images/emoji/1f23a.png b/images/emoji/1f23a.png
new file mode 100644
index 000000000..d21cb30ea
--- /dev/null
+++ b/images/emoji/1f23a.png
Binary files differ
diff --git a/images/emoji/1f250.png b/images/emoji/1f250.png
new file mode 100644
index 000000000..0c0d589ca
--- /dev/null
+++ b/images/emoji/1f250.png
Binary files differ
diff --git a/images/emoji/1f251.png b/images/emoji/1f251.png
new file mode 100644
index 000000000..8afd7ce99
--- /dev/null
+++ b/images/emoji/1f251.png
Binary files differ
diff --git a/images/emoji/1f300.png b/images/emoji/1f300.png
new file mode 100644
index 000000000..ff00b1afe
--- /dev/null
+++ b/images/emoji/1f300.png
Binary files differ
diff --git a/images/emoji/1f301.png b/images/emoji/1f301.png
new file mode 100644
index 000000000..57702d8d3
--- /dev/null
+++ b/images/emoji/1f301.png
Binary files differ
diff --git a/images/emoji/1f302.png b/images/emoji/1f302.png
new file mode 100644
index 000000000..ecefba9e4
--- /dev/null
+++ b/images/emoji/1f302.png
Binary files differ
diff --git a/images/emoji/1f303.png b/images/emoji/1f303.png
new file mode 100644
index 000000000..ca2018f45
--- /dev/null
+++ b/images/emoji/1f303.png
Binary files differ
diff --git a/images/emoji/1f304.png b/images/emoji/1f304.png
new file mode 100644
index 000000000..39c57c86a
--- /dev/null
+++ b/images/emoji/1f304.png
Binary files differ
diff --git a/images/emoji/1f305.png b/images/emoji/1f305.png
new file mode 100644
index 000000000..4ad36003c
--- /dev/null
+++ b/images/emoji/1f305.png
Binary files differ
diff --git a/images/emoji/1f306.png b/images/emoji/1f306.png
new file mode 100644
index 000000000..80cdff7cf
--- /dev/null
+++ b/images/emoji/1f306.png
Binary files differ
diff --git a/images/emoji/1f307.png b/images/emoji/1f307.png
new file mode 100644
index 000000000..7cded0ba5
--- /dev/null
+++ b/images/emoji/1f307.png
Binary files differ
diff --git a/images/emoji/1f308.png b/images/emoji/1f308.png
new file mode 100644
index 000000000..154735d71
--- /dev/null
+++ b/images/emoji/1f308.png
Binary files differ
diff --git a/images/emoji/1f309.png b/images/emoji/1f309.png
new file mode 100644
index 000000000..1d444e0be
--- /dev/null
+++ b/images/emoji/1f309.png
Binary files differ
diff --git a/images/emoji/1f30a.png b/images/emoji/1f30a.png
new file mode 100644
index 000000000..45ff1e877
--- /dev/null
+++ b/images/emoji/1f30a.png
Binary files differ
diff --git a/images/emoji/1f30b.png b/images/emoji/1f30b.png
new file mode 100644
index 000000000..adb522980
--- /dev/null
+++ b/images/emoji/1f30b.png
Binary files differ
diff --git a/images/emoji/1f30c.png b/images/emoji/1f30c.png
new file mode 100644
index 000000000..b2b8ac59c
--- /dev/null
+++ b/images/emoji/1f30c.png
Binary files differ
diff --git a/images/emoji/1f30d.png b/images/emoji/1f30d.png
new file mode 100644
index 000000000..66c3348c2
--- /dev/null
+++ b/images/emoji/1f30d.png
Binary files differ
diff --git a/images/emoji/1f30e.png b/images/emoji/1f30e.png
new file mode 100644
index 000000000..538c3cddd
--- /dev/null
+++ b/images/emoji/1f30e.png
Binary files differ
diff --git a/images/emoji/1f30f.png b/images/emoji/1f30f.png
new file mode 100644
index 000000000..d8df97fec
--- /dev/null
+++ b/images/emoji/1f30f.png
Binary files differ
diff --git a/images/emoji/1f310.png b/images/emoji/1f310.png
new file mode 100644
index 000000000..82450c1a4
--- /dev/null
+++ b/images/emoji/1f310.png
Binary files differ
diff --git a/images/emoji/1f311.png b/images/emoji/1f311.png
new file mode 100644
index 000000000..ecff72caa
--- /dev/null
+++ b/images/emoji/1f311.png
Binary files differ
diff --git a/images/emoji/1f312.png b/images/emoji/1f312.png
new file mode 100644
index 000000000..921224a34
--- /dev/null
+++ b/images/emoji/1f312.png
Binary files differ
diff --git a/images/emoji/1f313.png b/images/emoji/1f313.png
new file mode 100644
index 000000000..5dccaf72a
--- /dev/null
+++ b/images/emoji/1f313.png
Binary files differ
diff --git a/images/emoji/1f314.png b/images/emoji/1f314.png
new file mode 100644
index 000000000..3a8081563
--- /dev/null
+++ b/images/emoji/1f314.png
Binary files differ
diff --git a/images/emoji/1f315.png b/images/emoji/1f315.png
new file mode 100644
index 000000000..c9a2d6aa7
--- /dev/null
+++ b/images/emoji/1f315.png
Binary files differ
diff --git a/images/emoji/1f316.png b/images/emoji/1f316.png
new file mode 100644
index 000000000..741bd5931
--- /dev/null
+++ b/images/emoji/1f316.png
Binary files differ
diff --git a/images/emoji/1f317.png b/images/emoji/1f317.png
new file mode 100644
index 000000000..0842a0dd4
--- /dev/null
+++ b/images/emoji/1f317.png
Binary files differ
diff --git a/images/emoji/1f318.png b/images/emoji/1f318.png
new file mode 100644
index 000000000..cf68706b8
--- /dev/null
+++ b/images/emoji/1f318.png
Binary files differ
diff --git a/images/emoji/1f319.png b/images/emoji/1f319.png
new file mode 100644
index 000000000..765420ece
--- /dev/null
+++ b/images/emoji/1f319.png
Binary files differ
diff --git a/images/emoji/1f31a.png b/images/emoji/1f31a.png
new file mode 100644
index 000000000..150dd1240
--- /dev/null
+++ b/images/emoji/1f31a.png
Binary files differ
diff --git a/images/emoji/1f31b.png b/images/emoji/1f31b.png
new file mode 100644
index 000000000..cd8a3d7ac
--- /dev/null
+++ b/images/emoji/1f31b.png
Binary files differ
diff --git a/images/emoji/1f31c.png b/images/emoji/1f31c.png
new file mode 100644
index 000000000..94099343c
--- /dev/null
+++ b/images/emoji/1f31c.png
Binary files differ
diff --git a/images/emoji/1f31d.png b/images/emoji/1f31d.png
new file mode 100644
index 000000000..a5c25bbaf
--- /dev/null
+++ b/images/emoji/1f31d.png
Binary files differ
diff --git a/images/emoji/1f31e.png b/images/emoji/1f31e.png
new file mode 100644
index 000000000..14a4ea971
--- /dev/null
+++ b/images/emoji/1f31e.png
Binary files differ
diff --git a/images/emoji/1f31f.png b/images/emoji/1f31f.png
new file mode 100644
index 000000000..2f5cba592
--- /dev/null
+++ b/images/emoji/1f31f.png
Binary files differ
diff --git a/images/emoji/1f320.png b/images/emoji/1f320.png
new file mode 100644
index 000000000..aa45384d1
--- /dev/null
+++ b/images/emoji/1f320.png
Binary files differ
diff --git a/images/emoji/1f321.png b/images/emoji/1f321.png
new file mode 100644
index 000000000..b11473924
--- /dev/null
+++ b/images/emoji/1f321.png
Binary files differ
diff --git a/images/emoji/1f324.png b/images/emoji/1f324.png
new file mode 100644
index 000000000..cead0bfa5
--- /dev/null
+++ b/images/emoji/1f324.png
Binary files differ
diff --git a/images/emoji/1f325.png b/images/emoji/1f325.png
new file mode 100644
index 000000000..0a4cc1002
--- /dev/null
+++ b/images/emoji/1f325.png
Binary files differ
diff --git a/images/emoji/1f326.png b/images/emoji/1f326.png
new file mode 100644
index 000000000..491f9ca48
--- /dev/null
+++ b/images/emoji/1f326.png
Binary files differ
diff --git a/images/emoji/1f327.png b/images/emoji/1f327.png
new file mode 100644
index 000000000..385685e05
--- /dev/null
+++ b/images/emoji/1f327.png
Binary files differ
diff --git a/images/emoji/1f328.png b/images/emoji/1f328.png
new file mode 100644
index 000000000..9720384eb
--- /dev/null
+++ b/images/emoji/1f328.png
Binary files differ
diff --git a/images/emoji/1f329.png b/images/emoji/1f329.png
new file mode 100644
index 000000000..0831e88aa
--- /dev/null
+++ b/images/emoji/1f329.png
Binary files differ
diff --git a/images/emoji/1f32a.png b/images/emoji/1f32a.png
new file mode 100644
index 000000000..4821c89da
--- /dev/null
+++ b/images/emoji/1f32a.png
Binary files differ
diff --git a/images/emoji/1f32b.png b/images/emoji/1f32b.png
new file mode 100644
index 000000000..4e73c2de2
--- /dev/null
+++ b/images/emoji/1f32b.png
Binary files differ
diff --git a/images/emoji/1f32c.png b/images/emoji/1f32c.png
new file mode 100644
index 000000000..df81b652e
--- /dev/null
+++ b/images/emoji/1f32c.png
Binary files differ
diff --git a/images/emoji/1f32d.png b/images/emoji/1f32d.png
new file mode 100644
index 000000000..3c3354d94
--- /dev/null
+++ b/images/emoji/1f32d.png
Binary files differ
diff --git a/images/emoji/1f32e.png b/images/emoji/1f32e.png
new file mode 100644
index 000000000..10e847a46
--- /dev/null
+++ b/images/emoji/1f32e.png
Binary files differ
diff --git a/images/emoji/1f32f.png b/images/emoji/1f32f.png
new file mode 100644
index 000000000..02bd5601d
--- /dev/null
+++ b/images/emoji/1f32f.png
Binary files differ
diff --git a/images/emoji/1f330.png b/images/emoji/1f330.png
new file mode 100644
index 000000000..f8a01e281
--- /dev/null
+++ b/images/emoji/1f330.png
Binary files differ
diff --git a/images/emoji/1f331.png b/images/emoji/1f331.png
new file mode 100644
index 000000000..ae0948bcf
--- /dev/null
+++ b/images/emoji/1f331.png
Binary files differ
diff --git a/images/emoji/1f332.png b/images/emoji/1f332.png
new file mode 100644
index 000000000..f679d8dd7
--- /dev/null
+++ b/images/emoji/1f332.png
Binary files differ
diff --git a/images/emoji/1f333.png b/images/emoji/1f333.png
new file mode 100644
index 000000000..7cd2bc708
--- /dev/null
+++ b/images/emoji/1f333.png
Binary files differ
diff --git a/images/emoji/1f334.png b/images/emoji/1f334.png
new file mode 100644
index 000000000..aaaa6aec3
--- /dev/null
+++ b/images/emoji/1f334.png
Binary files differ
diff --git a/images/emoji/1f335.png b/images/emoji/1f335.png
new file mode 100644
index 000000000..9b48ccf3d
--- /dev/null
+++ b/images/emoji/1f335.png
Binary files differ
diff --git a/images/emoji/1f336.png b/images/emoji/1f336.png
new file mode 100644
index 000000000..266675bd5
--- /dev/null
+++ b/images/emoji/1f336.png
Binary files differ
diff --git a/images/emoji/1f337.png b/images/emoji/1f337.png
new file mode 100644
index 000000000..f799d75c1
--- /dev/null
+++ b/images/emoji/1f337.png
Binary files differ
diff --git a/images/emoji/1f338.png b/images/emoji/1f338.png
new file mode 100644
index 000000000..282f3e7bc
--- /dev/null
+++ b/images/emoji/1f338.png
Binary files differ
diff --git a/images/emoji/1f339.png b/images/emoji/1f339.png
new file mode 100644
index 000000000..52c286d31
--- /dev/null
+++ b/images/emoji/1f339.png
Binary files differ
diff --git a/images/emoji/1f33a.png b/images/emoji/1f33a.png
new file mode 100644
index 000000000..39dd35242
--- /dev/null
+++ b/images/emoji/1f33a.png
Binary files differ
diff --git a/images/emoji/1f33b.png b/images/emoji/1f33b.png
new file mode 100644
index 000000000..08cc07761
--- /dev/null
+++ b/images/emoji/1f33b.png
Binary files differ
diff --git a/images/emoji/1f33c.png b/images/emoji/1f33c.png
new file mode 100644
index 000000000..4083026c1
--- /dev/null
+++ b/images/emoji/1f33c.png
Binary files differ
diff --git a/images/emoji/1f33d.png b/images/emoji/1f33d.png
new file mode 100644
index 000000000..36e201279
--- /dev/null
+++ b/images/emoji/1f33d.png
Binary files differ
diff --git a/images/emoji/1f33e.png b/images/emoji/1f33e.png
new file mode 100644
index 000000000..3564d9d64
--- /dev/null
+++ b/images/emoji/1f33e.png
Binary files differ
diff --git a/images/emoji/1f33f.png b/images/emoji/1f33f.png
new file mode 100644
index 000000000..d984d1562
--- /dev/null
+++ b/images/emoji/1f33f.png
Binary files differ
diff --git a/images/emoji/1f340.png b/images/emoji/1f340.png
new file mode 100644
index 000000000..fdedfcc2b
--- /dev/null
+++ b/images/emoji/1f340.png
Binary files differ
diff --git a/images/emoji/1f341.png b/images/emoji/1f341.png
new file mode 100644
index 000000000..c49acea67
--- /dev/null
+++ b/images/emoji/1f341.png
Binary files differ
diff --git a/images/emoji/1f342.png b/images/emoji/1f342.png
new file mode 100644
index 000000000..0d60e7bdf
--- /dev/null
+++ b/images/emoji/1f342.png
Binary files differ
diff --git a/images/emoji/1f343.png b/images/emoji/1f343.png
new file mode 100644
index 000000000..1e43e1af8
--- /dev/null
+++ b/images/emoji/1f343.png
Binary files differ
diff --git a/images/emoji/1f344.png b/images/emoji/1f344.png
new file mode 100644
index 000000000..dd85742ba
--- /dev/null
+++ b/images/emoji/1f344.png
Binary files differ
diff --git a/images/emoji/1f345.png b/images/emoji/1f345.png
new file mode 100644
index 000000000..497da8f6b
--- /dev/null
+++ b/images/emoji/1f345.png
Binary files differ
diff --git a/images/emoji/1f346.png b/images/emoji/1f346.png
new file mode 100644
index 000000000..fafd7c1a1
--- /dev/null
+++ b/images/emoji/1f346.png
Binary files differ
diff --git a/images/emoji/1f347.png b/images/emoji/1f347.png
new file mode 100644
index 000000000..30d222188
--- /dev/null
+++ b/images/emoji/1f347.png
Binary files differ
diff --git a/images/emoji/1f348.png b/images/emoji/1f348.png
new file mode 100644
index 000000000..c01232d41
--- /dev/null
+++ b/images/emoji/1f348.png
Binary files differ
diff --git a/images/emoji/1f349.png b/images/emoji/1f349.png
new file mode 100644
index 000000000..0761488b4
--- /dev/null
+++ b/images/emoji/1f349.png
Binary files differ
diff --git a/images/emoji/1f34a.png b/images/emoji/1f34a.png
new file mode 100644
index 000000000..ab14e5378
--- /dev/null
+++ b/images/emoji/1f34a.png
Binary files differ
diff --git a/images/emoji/1f34b.png b/images/emoji/1f34b.png
new file mode 100644
index 000000000..9a7d95ca2
--- /dev/null
+++ b/images/emoji/1f34b.png
Binary files differ
diff --git a/images/emoji/1f34c.png b/images/emoji/1f34c.png
new file mode 100644
index 000000000..f49872795
--- /dev/null
+++ b/images/emoji/1f34c.png
Binary files differ
diff --git a/images/emoji/1f34d.png b/images/emoji/1f34d.png
new file mode 100644
index 000000000..d30d73307
--- /dev/null
+++ b/images/emoji/1f34d.png
Binary files differ
diff --git a/images/emoji/1f34e.png b/images/emoji/1f34e.png
new file mode 100644
index 000000000..da650c60f
--- /dev/null
+++ b/images/emoji/1f34e.png
Binary files differ
diff --git a/images/emoji/1f34f.png b/images/emoji/1f34f.png
new file mode 100644
index 000000000..5fd51bd39
--- /dev/null
+++ b/images/emoji/1f34f.png
Binary files differ
diff --git a/images/emoji/1f350.png b/images/emoji/1f350.png
new file mode 100644
index 000000000..3869f718b
--- /dev/null
+++ b/images/emoji/1f350.png
Binary files differ
diff --git a/images/emoji/1f351.png b/images/emoji/1f351.png
new file mode 100644
index 000000000..9ab57cbb7
--- /dev/null
+++ b/images/emoji/1f351.png
Binary files differ
diff --git a/images/emoji/1f352.png b/images/emoji/1f352.png
new file mode 100644
index 000000000..9b10cbaac
--- /dev/null
+++ b/images/emoji/1f352.png
Binary files differ
diff --git a/images/emoji/1f353.png b/images/emoji/1f353.png
new file mode 100644
index 000000000..7bb86f0b2
--- /dev/null
+++ b/images/emoji/1f353.png
Binary files differ
diff --git a/images/emoji/1f354.png b/images/emoji/1f354.png
new file mode 100644
index 000000000..4b13f3b8d
--- /dev/null
+++ b/images/emoji/1f354.png
Binary files differ
diff --git a/images/emoji/1f355.png b/images/emoji/1f355.png
new file mode 100644
index 000000000..240d5c469
--- /dev/null
+++ b/images/emoji/1f355.png
Binary files differ
diff --git a/images/emoji/1f356.png b/images/emoji/1f356.png
new file mode 100644
index 000000000..b20a59d16
--- /dev/null
+++ b/images/emoji/1f356.png
Binary files differ
diff --git a/images/emoji/1f357.png b/images/emoji/1f357.png
new file mode 100644
index 000000000..eea4a53a2
--- /dev/null
+++ b/images/emoji/1f357.png
Binary files differ
diff --git a/images/emoji/1f358.png b/images/emoji/1f358.png
new file mode 100644
index 000000000..7fbd08e4f
--- /dev/null
+++ b/images/emoji/1f358.png
Binary files differ
diff --git a/images/emoji/1f359.png b/images/emoji/1f359.png
new file mode 100644
index 000000000..d3d8ee25c
--- /dev/null
+++ b/images/emoji/1f359.png
Binary files differ
diff --git a/images/emoji/1f35a.png b/images/emoji/1f35a.png
new file mode 100644
index 000000000..6e3ac7956
--- /dev/null
+++ b/images/emoji/1f35a.png
Binary files differ
diff --git a/images/emoji/1f35b.png b/images/emoji/1f35b.png
new file mode 100644
index 000000000..69657ca81
--- /dev/null
+++ b/images/emoji/1f35b.png
Binary files differ
diff --git a/images/emoji/1f35c.png b/images/emoji/1f35c.png
new file mode 100644
index 000000000..c1cb7cd73
--- /dev/null
+++ b/images/emoji/1f35c.png
Binary files differ
diff --git a/images/emoji/1f35d.png b/images/emoji/1f35d.png
new file mode 100644
index 000000000..4f0b7ed07
--- /dev/null
+++ b/images/emoji/1f35d.png
Binary files differ
diff --git a/images/emoji/1f35e.png b/images/emoji/1f35e.png
new file mode 100644
index 000000000..6676510aa
--- /dev/null
+++ b/images/emoji/1f35e.png
Binary files differ
diff --git a/images/emoji/1f35f.png b/images/emoji/1f35f.png
new file mode 100644
index 000000000..3a0899d5a
--- /dev/null
+++ b/images/emoji/1f35f.png
Binary files differ
diff --git a/images/emoji/1f360.png b/images/emoji/1f360.png
new file mode 100644
index 000000000..92a425f2e
--- /dev/null
+++ b/images/emoji/1f360.png
Binary files differ
diff --git a/images/emoji/1f361.png b/images/emoji/1f361.png
new file mode 100644
index 000000000..f73f37b01
--- /dev/null
+++ b/images/emoji/1f361.png
Binary files differ
diff --git a/images/emoji/1f362.png b/images/emoji/1f362.png
new file mode 100644
index 000000000..d38a849fe
--- /dev/null
+++ b/images/emoji/1f362.png
Binary files differ
diff --git a/images/emoji/1f363.png b/images/emoji/1f363.png
new file mode 100644
index 000000000..f171fd2f7
--- /dev/null
+++ b/images/emoji/1f363.png
Binary files differ
diff --git a/images/emoji/1f364.png b/images/emoji/1f364.png
new file mode 100644
index 000000000..752ba7f13
--- /dev/null
+++ b/images/emoji/1f364.png
Binary files differ
diff --git a/images/emoji/1f365.png b/images/emoji/1f365.png
new file mode 100644
index 000000000..157bded65
--- /dev/null
+++ b/images/emoji/1f365.png
Binary files differ
diff --git a/images/emoji/1f366.png b/images/emoji/1f366.png
new file mode 100644
index 000000000..f1f21a3b8
--- /dev/null
+++ b/images/emoji/1f366.png
Binary files differ
diff --git a/images/emoji/1f367.png b/images/emoji/1f367.png
new file mode 100644
index 000000000..36dfb53ca
--- /dev/null
+++ b/images/emoji/1f367.png
Binary files differ
diff --git a/images/emoji/1f368.png b/images/emoji/1f368.png
new file mode 100644
index 000000000..720ae7428
--- /dev/null
+++ b/images/emoji/1f368.png
Binary files differ
diff --git a/images/emoji/1f369.png b/images/emoji/1f369.png
new file mode 100644
index 000000000..0ca4cd0bd
--- /dev/null
+++ b/images/emoji/1f369.png
Binary files differ
diff --git a/images/emoji/1f36a.png b/images/emoji/1f36a.png
new file mode 100644
index 000000000..1b6bcb155
--- /dev/null
+++ b/images/emoji/1f36a.png
Binary files differ
diff --git a/images/emoji/1f36b.png b/images/emoji/1f36b.png
new file mode 100644
index 000000000..318bbd40e
--- /dev/null
+++ b/images/emoji/1f36b.png
Binary files differ
diff --git a/images/emoji/1f36c.png b/images/emoji/1f36c.png
new file mode 100644
index 000000000..8c67ace3a
--- /dev/null
+++ b/images/emoji/1f36c.png
Binary files differ
diff --git a/images/emoji/1f36d.png b/images/emoji/1f36d.png
new file mode 100644
index 000000000..ad76d7bf9
--- /dev/null
+++ b/images/emoji/1f36d.png
Binary files differ
diff --git a/images/emoji/1f36e.png b/images/emoji/1f36e.png
new file mode 100644
index 000000000..fa3df67b8
--- /dev/null
+++ b/images/emoji/1f36e.png
Binary files differ
diff --git a/images/emoji/1f36f.png b/images/emoji/1f36f.png
new file mode 100644
index 000000000..9d8f59295
--- /dev/null
+++ b/images/emoji/1f36f.png
Binary files differ
diff --git a/images/emoji/1f370.png b/images/emoji/1f370.png
new file mode 100644
index 000000000..4368177be
--- /dev/null
+++ b/images/emoji/1f370.png
Binary files differ
diff --git a/images/emoji/1f371.png b/images/emoji/1f371.png
new file mode 100644
index 000000000..92cd17233
--- /dev/null
+++ b/images/emoji/1f371.png
Binary files differ
diff --git a/images/emoji/1f372.png b/images/emoji/1f372.png
new file mode 100644
index 000000000..6b3f010c1
--- /dev/null
+++ b/images/emoji/1f372.png
Binary files differ
diff --git a/images/emoji/1f373.png b/images/emoji/1f373.png
new file mode 100644
index 000000000..918c98057
--- /dev/null
+++ b/images/emoji/1f373.png
Binary files differ
diff --git a/images/emoji/1f374.png b/images/emoji/1f374.png
new file mode 100644
index 000000000..09f1feaea
--- /dev/null
+++ b/images/emoji/1f374.png
Binary files differ
diff --git a/images/emoji/1f375.png b/images/emoji/1f375.png
new file mode 100644
index 000000000..b53b98f0c
--- /dev/null
+++ b/images/emoji/1f375.png
Binary files differ
diff --git a/images/emoji/1f376.png b/images/emoji/1f376.png
new file mode 100644
index 000000000..2933f5672
--- /dev/null
+++ b/images/emoji/1f376.png
Binary files differ
diff --git a/images/emoji/1f377.png b/images/emoji/1f377.png
new file mode 100644
index 000000000..3cc986891
--- /dev/null
+++ b/images/emoji/1f377.png
Binary files differ
diff --git a/images/emoji/1f378.png b/images/emoji/1f378.png
new file mode 100644
index 000000000..2e50c57e9
--- /dev/null
+++ b/images/emoji/1f378.png
Binary files differ
diff --git a/images/emoji/1f379.png b/images/emoji/1f379.png
new file mode 100644
index 000000000..cd714f81b
--- /dev/null
+++ b/images/emoji/1f379.png
Binary files differ
diff --git a/images/emoji/1f37a.png b/images/emoji/1f37a.png
new file mode 100644
index 000000000..894da40a7
--- /dev/null
+++ b/images/emoji/1f37a.png
Binary files differ
diff --git a/images/emoji/1f37b.png b/images/emoji/1f37b.png
new file mode 100644
index 000000000..b55deb66b
--- /dev/null
+++ b/images/emoji/1f37b.png
Binary files differ
diff --git a/images/emoji/1f37c.png b/images/emoji/1f37c.png
new file mode 100644
index 000000000..2bd105241
--- /dev/null
+++ b/images/emoji/1f37c.png
Binary files differ
diff --git a/images/emoji/1f37d.png b/images/emoji/1f37d.png
new file mode 100644
index 000000000..7411755f7
--- /dev/null
+++ b/images/emoji/1f37d.png
Binary files differ
diff --git a/images/emoji/1f37e.png b/images/emoji/1f37e.png
new file mode 100644
index 000000000..285a79a93
--- /dev/null
+++ b/images/emoji/1f37e.png
Binary files differ
diff --git a/images/emoji/1f37f.png b/images/emoji/1f37f.png
new file mode 100644
index 000000000..573ab05af
--- /dev/null
+++ b/images/emoji/1f37f.png
Binary files differ
diff --git a/images/emoji/1f380.png b/images/emoji/1f380.png
new file mode 100644
index 000000000..0f253c3d8
--- /dev/null
+++ b/images/emoji/1f380.png
Binary files differ
diff --git a/images/emoji/1f381.png b/images/emoji/1f381.png
new file mode 100644
index 000000000..844e21645
--- /dev/null
+++ b/images/emoji/1f381.png
Binary files differ
diff --git a/images/emoji/1f382.png b/images/emoji/1f382.png
new file mode 100644
index 000000000..317e9a419
--- /dev/null
+++ b/images/emoji/1f382.png
Binary files differ
diff --git a/images/emoji/1f383.png b/images/emoji/1f383.png
new file mode 100644
index 000000000..44c3fc0ae
--- /dev/null
+++ b/images/emoji/1f383.png
Binary files differ
diff --git a/images/emoji/1f384.png b/images/emoji/1f384.png
new file mode 100644
index 000000000..4197d37a5
--- /dev/null
+++ b/images/emoji/1f384.png
Binary files differ
diff --git a/images/emoji/1f385-1f3fb.png b/images/emoji/1f385-1f3fb.png
new file mode 100644
index 000000000..2052920ab
--- /dev/null
+++ b/images/emoji/1f385-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f385-1f3fc.png b/images/emoji/1f385-1f3fc.png
new file mode 100644
index 000000000..ec9375e14
--- /dev/null
+++ b/images/emoji/1f385-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f385-1f3fd.png b/images/emoji/1f385-1f3fd.png
new file mode 100644
index 000000000..d1d16bceb
--- /dev/null
+++ b/images/emoji/1f385-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f385-1f3fe.png b/images/emoji/1f385-1f3fe.png
new file mode 100644
index 000000000..1088f1c07
--- /dev/null
+++ b/images/emoji/1f385-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f385-1f3ff.png b/images/emoji/1f385-1f3ff.png
new file mode 100644
index 000000000..c92daf749
--- /dev/null
+++ b/images/emoji/1f385-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f385.png b/images/emoji/1f385.png
new file mode 100644
index 000000000..8bf8757a3
--- /dev/null
+++ b/images/emoji/1f385.png
Binary files differ
diff --git a/images/emoji/1f386.png b/images/emoji/1f386.png
new file mode 100644
index 000000000..e0a6c6a7c
--- /dev/null
+++ b/images/emoji/1f386.png
Binary files differ
diff --git a/images/emoji/1f387.png b/images/emoji/1f387.png
new file mode 100644
index 000000000..30339cd6e
--- /dev/null
+++ b/images/emoji/1f387.png
Binary files differ
diff --git a/images/emoji/1f388.png b/images/emoji/1f388.png
new file mode 100644
index 000000000..07916fe6d
--- /dev/null
+++ b/images/emoji/1f388.png
Binary files differ
diff --git a/images/emoji/1f389.png b/images/emoji/1f389.png
new file mode 100644
index 000000000..0244d60f2
--- /dev/null
+++ b/images/emoji/1f389.png
Binary files differ
diff --git a/images/emoji/1f38a.png b/images/emoji/1f38a.png
new file mode 100644
index 000000000..ba4fd9b12
--- /dev/null
+++ b/images/emoji/1f38a.png
Binary files differ
diff --git a/images/emoji/1f38b.png b/images/emoji/1f38b.png
new file mode 100644
index 000000000..46fcb3a1a
--- /dev/null
+++ b/images/emoji/1f38b.png
Binary files differ
diff --git a/images/emoji/1f38c.png b/images/emoji/1f38c.png
new file mode 100644
index 000000000..273bd0f0f
--- /dev/null
+++ b/images/emoji/1f38c.png
Binary files differ
diff --git a/images/emoji/1f38d.png b/images/emoji/1f38d.png
new file mode 100644
index 000000000..769f5ffae
--- /dev/null
+++ b/images/emoji/1f38d.png
Binary files differ
diff --git a/images/emoji/1f38e.png b/images/emoji/1f38e.png
new file mode 100644
index 000000000..109556151
--- /dev/null
+++ b/images/emoji/1f38e.png
Binary files differ
diff --git a/images/emoji/1f38f.png b/images/emoji/1f38f.png
new file mode 100644
index 000000000..5443bab90
--- /dev/null
+++ b/images/emoji/1f38f.png
Binary files differ
diff --git a/images/emoji/1f390.png b/images/emoji/1f390.png
new file mode 100644
index 000000000..3c9ef3a95
--- /dev/null
+++ b/images/emoji/1f390.png
Binary files differ
diff --git a/images/emoji/1f391.png b/images/emoji/1f391.png
new file mode 100644
index 000000000..9bdc9d8d7
--- /dev/null
+++ b/images/emoji/1f391.png
Binary files differ
diff --git a/images/emoji/1f392.png b/images/emoji/1f392.png
new file mode 100644
index 000000000..9997c86e7
--- /dev/null
+++ b/images/emoji/1f392.png
Binary files differ
diff --git a/images/emoji/1f393.png b/images/emoji/1f393.png
new file mode 100644
index 000000000..8b17ddd9d
--- /dev/null
+++ b/images/emoji/1f393.png
Binary files differ
diff --git a/images/emoji/1f396.png b/images/emoji/1f396.png
new file mode 100644
index 000000000..ecd3fb035
--- /dev/null
+++ b/images/emoji/1f396.png
Binary files differ
diff --git a/images/emoji/1f397.png b/images/emoji/1f397.png
new file mode 100644
index 000000000..3988bbd09
--- /dev/null
+++ b/images/emoji/1f397.png
Binary files differ
diff --git a/images/emoji/1f399.png b/images/emoji/1f399.png
new file mode 100644
index 000000000..cd9167654
--- /dev/null
+++ b/images/emoji/1f399.png
Binary files differ
diff --git a/images/emoji/1f39a.png b/images/emoji/1f39a.png
new file mode 100644
index 000000000..720a3b341
--- /dev/null
+++ b/images/emoji/1f39a.png
Binary files differ
diff --git a/images/emoji/1f39b.png b/images/emoji/1f39b.png
new file mode 100644
index 000000000..6635ac93b
--- /dev/null
+++ b/images/emoji/1f39b.png
Binary files differ
diff --git a/images/emoji/1f39e.png b/images/emoji/1f39e.png
new file mode 100644
index 000000000..30143aedb
--- /dev/null
+++ b/images/emoji/1f39e.png
Binary files differ
diff --git a/images/emoji/1f39f.png b/images/emoji/1f39f.png
new file mode 100644
index 000000000..e510f4a7a
--- /dev/null
+++ b/images/emoji/1f39f.png
Binary files differ
diff --git a/images/emoji/1f3a0.png b/images/emoji/1f3a0.png
new file mode 100644
index 000000000..a17074edf
--- /dev/null
+++ b/images/emoji/1f3a0.png
Binary files differ
diff --git a/images/emoji/1f3a1.png b/images/emoji/1f3a1.png
new file mode 100644
index 000000000..55c8ff047
--- /dev/null
+++ b/images/emoji/1f3a1.png
Binary files differ
diff --git a/images/emoji/1f3a2.png b/images/emoji/1f3a2.png
new file mode 100644
index 000000000..7d187be0c
--- /dev/null
+++ b/images/emoji/1f3a2.png
Binary files differ
diff --git a/images/emoji/1f3a3.png b/images/emoji/1f3a3.png
new file mode 100644
index 000000000..dfcdf07eb
--- /dev/null
+++ b/images/emoji/1f3a3.png
Binary files differ
diff --git a/images/emoji/1f3a4.png b/images/emoji/1f3a4.png
new file mode 100644
index 000000000..d4e6b0def
--- /dev/null
+++ b/images/emoji/1f3a4.png
Binary files differ
diff --git a/images/emoji/1f3a5.png b/images/emoji/1f3a5.png
new file mode 100644
index 000000000..4e73b1301
--- /dev/null
+++ b/images/emoji/1f3a5.png
Binary files differ
diff --git a/images/emoji/1f3a6.png b/images/emoji/1f3a6.png
new file mode 100644
index 000000000..65f27b386
--- /dev/null
+++ b/images/emoji/1f3a6.png
Binary files differ
diff --git a/images/emoji/1f3a7.png b/images/emoji/1f3a7.png
new file mode 100644
index 000000000..e9fd34041
--- /dev/null
+++ b/images/emoji/1f3a7.png
Binary files differ
diff --git a/images/emoji/1f3a8.png b/images/emoji/1f3a8.png
new file mode 100644
index 000000000..bd6afe9ff
--- /dev/null
+++ b/images/emoji/1f3a8.png
Binary files differ
diff --git a/images/emoji/1f3a9.png b/images/emoji/1f3a9.png
new file mode 100644
index 000000000..131b657b1
--- /dev/null
+++ b/images/emoji/1f3a9.png
Binary files differ
diff --git a/images/emoji/1f3aa.png b/images/emoji/1f3aa.png
new file mode 100644
index 000000000..b0379775b
--- /dev/null
+++ b/images/emoji/1f3aa.png
Binary files differ
diff --git a/images/emoji/1f3ab.png b/images/emoji/1f3ab.png
new file mode 100644
index 000000000..605936bb6
--- /dev/null
+++ b/images/emoji/1f3ab.png
Binary files differ
diff --git a/images/emoji/1f3ac.png b/images/emoji/1f3ac.png
new file mode 100644
index 000000000..813908831
--- /dev/null
+++ b/images/emoji/1f3ac.png
Binary files differ
diff --git a/images/emoji/1f3ad.png b/images/emoji/1f3ad.png
new file mode 100644
index 000000000..685441fda
--- /dev/null
+++ b/images/emoji/1f3ad.png
Binary files differ
diff --git a/images/emoji/1f3ae.png b/images/emoji/1f3ae.png
new file mode 100644
index 000000000..316a9106a
--- /dev/null
+++ b/images/emoji/1f3ae.png
Binary files differ
diff --git a/images/emoji/1f3af.png b/images/emoji/1f3af.png
new file mode 100644
index 000000000..f6704aeb8
--- /dev/null
+++ b/images/emoji/1f3af.png
Binary files differ
diff --git a/images/emoji/1f3b0.png b/images/emoji/1f3b0.png
new file mode 100644
index 000000000..ee71b6c26
--- /dev/null
+++ b/images/emoji/1f3b0.png
Binary files differ
diff --git a/images/emoji/1f3b1.png b/images/emoji/1f3b1.png
new file mode 100644
index 000000000..38ca662ed
--- /dev/null
+++ b/images/emoji/1f3b1.png
Binary files differ
diff --git a/images/emoji/1f3b2.png b/images/emoji/1f3b2.png
new file mode 100644
index 000000000..ad3626fe5
--- /dev/null
+++ b/images/emoji/1f3b2.png
Binary files differ
diff --git a/images/emoji/1f3b3.png b/images/emoji/1f3b3.png
new file mode 100644
index 000000000..63add89e5
--- /dev/null
+++ b/images/emoji/1f3b3.png
Binary files differ
diff --git a/images/emoji/1f3b4.png b/images/emoji/1f3b4.png
new file mode 100644
index 000000000..6766b044d
--- /dev/null
+++ b/images/emoji/1f3b4.png
Binary files differ
diff --git a/images/emoji/1f3b5.png b/images/emoji/1f3b5.png
new file mode 100644
index 000000000..06691ef61
--- /dev/null
+++ b/images/emoji/1f3b5.png
Binary files differ
diff --git a/images/emoji/1f3b6.png b/images/emoji/1f3b6.png
new file mode 100644
index 000000000..57d499aa1
--- /dev/null
+++ b/images/emoji/1f3b6.png
Binary files differ
diff --git a/images/emoji/1f3b7.png b/images/emoji/1f3b7.png
new file mode 100644
index 000000000..a392faec2
--- /dev/null
+++ b/images/emoji/1f3b7.png
Binary files differ
diff --git a/images/emoji/1f3b8.png b/images/emoji/1f3b8.png
new file mode 100644
index 000000000..43d752f1e
--- /dev/null
+++ b/images/emoji/1f3b8.png
Binary files differ
diff --git a/images/emoji/1f3b9.png b/images/emoji/1f3b9.png
new file mode 100644
index 000000000..442b74568
--- /dev/null
+++ b/images/emoji/1f3b9.png
Binary files differ
diff --git a/images/emoji/1f3ba.png b/images/emoji/1f3ba.png
new file mode 100644
index 000000000..87674cf78
--- /dev/null
+++ b/images/emoji/1f3ba.png
Binary files differ
diff --git a/images/emoji/1f3bb.png b/images/emoji/1f3bb.png
new file mode 100644
index 000000000..e1e76cce2
--- /dev/null
+++ b/images/emoji/1f3bb.png
Binary files differ
diff --git a/images/emoji/1f3bc.png b/images/emoji/1f3bc.png
new file mode 100644
index 000000000..47dc05a8e
--- /dev/null
+++ b/images/emoji/1f3bc.png
Binary files differ
diff --git a/images/emoji/1f3bd.png b/images/emoji/1f3bd.png
new file mode 100644
index 000000000..6d83c06b8
--- /dev/null
+++ b/images/emoji/1f3bd.png
Binary files differ
diff --git a/images/emoji/1f3be.png b/images/emoji/1f3be.png
new file mode 100644
index 000000000..7e68ba8f3
--- /dev/null
+++ b/images/emoji/1f3be.png
Binary files differ
diff --git a/images/emoji/1f3bf.png b/images/emoji/1f3bf.png
new file mode 100644
index 000000000..4a2d2c123
--- /dev/null
+++ b/images/emoji/1f3bf.png
Binary files differ
diff --git a/images/emoji/1f3c0.png b/images/emoji/1f3c0.png
new file mode 100644
index 000000000..64c76b79c
--- /dev/null
+++ b/images/emoji/1f3c0.png
Binary files differ
diff --git a/images/emoji/1f3c1.png b/images/emoji/1f3c1.png
new file mode 100644
index 000000000..5a71eecb8
--- /dev/null
+++ b/images/emoji/1f3c1.png
Binary files differ
diff --git a/images/emoji/1f3c2.png b/images/emoji/1f3c2.png
new file mode 100644
index 000000000..6361c0f2c
--- /dev/null
+++ b/images/emoji/1f3c2.png
Binary files differ
diff --git a/images/emoji/1f3c3-1f3fb.png b/images/emoji/1f3c3-1f3fb.png
new file mode 100644
index 000000000..9355239a5
--- /dev/null
+++ b/images/emoji/1f3c3-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f3c3-1f3fc.png b/images/emoji/1f3c3-1f3fc.png
new file mode 100644
index 000000000..6112fd5c3
--- /dev/null
+++ b/images/emoji/1f3c3-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f3c3-1f3fd.png b/images/emoji/1f3c3-1f3fd.png
new file mode 100644
index 000000000..625ec708f
--- /dev/null
+++ b/images/emoji/1f3c3-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f3c3-1f3fe.png b/images/emoji/1f3c3-1f3fe.png
new file mode 100644
index 000000000..242f1b563
--- /dev/null
+++ b/images/emoji/1f3c3-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f3c3-1f3ff.png b/images/emoji/1f3c3-1f3ff.png
new file mode 100644
index 000000000..2976c6f01
--- /dev/null
+++ b/images/emoji/1f3c3-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f3c3.png b/images/emoji/1f3c3.png
new file mode 100644
index 000000000..e91491597
--- /dev/null
+++ b/images/emoji/1f3c3.png
Binary files differ
diff --git a/images/emoji/1f3c4-1f3fb.png b/images/emoji/1f3c4-1f3fb.png
new file mode 100644
index 000000000..b5faaa524
--- /dev/null
+++ b/images/emoji/1f3c4-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f3c4-1f3fc.png b/images/emoji/1f3c4-1f3fc.png
new file mode 100644
index 000000000..6d92e412f
--- /dev/null
+++ b/images/emoji/1f3c4-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f3c4-1f3fd.png b/images/emoji/1f3c4-1f3fd.png
new file mode 100644
index 000000000..f05ef5949
--- /dev/null
+++ b/images/emoji/1f3c4-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f3c4-1f3fe.png b/images/emoji/1f3c4-1f3fe.png
new file mode 100644
index 000000000..35e143d19
--- /dev/null
+++ b/images/emoji/1f3c4-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f3c4-1f3ff.png b/images/emoji/1f3c4-1f3ff.png
new file mode 100644
index 000000000..38917658e
--- /dev/null
+++ b/images/emoji/1f3c4-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f3c4.png b/images/emoji/1f3c4.png
new file mode 100644
index 000000000..3ab017adf
--- /dev/null
+++ b/images/emoji/1f3c4.png
Binary files differ
diff --git a/images/emoji/1f3c5.png b/images/emoji/1f3c5.png
new file mode 100644
index 000000000..09718d001
--- /dev/null
+++ b/images/emoji/1f3c5.png
Binary files differ
diff --git a/images/emoji/1f3c6.png b/images/emoji/1f3c6.png
new file mode 100644
index 000000000..ac2895c18
--- /dev/null
+++ b/images/emoji/1f3c6.png
Binary files differ
diff --git a/images/emoji/1f3c7-1f3fb.png b/images/emoji/1f3c7-1f3fb.png
new file mode 100644
index 000000000..e9bf4092e
--- /dev/null
+++ b/images/emoji/1f3c7-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f3c7-1f3fc.png b/images/emoji/1f3c7-1f3fc.png
new file mode 100644
index 000000000..031bbc3d8
--- /dev/null
+++ b/images/emoji/1f3c7-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f3c7-1f3fd.png b/images/emoji/1f3c7-1f3fd.png
new file mode 100644
index 000000000..b40ef891f
--- /dev/null
+++ b/images/emoji/1f3c7-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f3c7-1f3fe.png b/images/emoji/1f3c7-1f3fe.png
new file mode 100644
index 000000000..e286cb850
--- /dev/null
+++ b/images/emoji/1f3c7-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f3c7-1f3ff.png b/images/emoji/1f3c7-1f3ff.png
new file mode 100644
index 000000000..453c51c60
--- /dev/null
+++ b/images/emoji/1f3c7-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f3c7.png b/images/emoji/1f3c7.png
new file mode 100644
index 000000000..addf9edac
--- /dev/null
+++ b/images/emoji/1f3c7.png
Binary files differ
diff --git a/images/emoji/1f3c8.png b/images/emoji/1f3c8.png
new file mode 100644
index 000000000..909ddf95d
--- /dev/null
+++ b/images/emoji/1f3c8.png
Binary files differ
diff --git a/images/emoji/1f3c9.png b/images/emoji/1f3c9.png
new file mode 100644
index 000000000..659e134f7
--- /dev/null
+++ b/images/emoji/1f3c9.png
Binary files differ
diff --git a/images/emoji/1f3ca-1f3fb.png b/images/emoji/1f3ca-1f3fb.png
new file mode 100644
index 000000000..38441c9ca
--- /dev/null
+++ b/images/emoji/1f3ca-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f3ca-1f3fc.png b/images/emoji/1f3ca-1f3fc.png
new file mode 100644
index 000000000..b0d431124
--- /dev/null
+++ b/images/emoji/1f3ca-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f3ca-1f3fd.png b/images/emoji/1f3ca-1f3fd.png
new file mode 100644
index 000000000..211e77e2a
--- /dev/null
+++ b/images/emoji/1f3ca-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f3ca-1f3fe.png b/images/emoji/1f3ca-1f3fe.png
new file mode 100644
index 000000000..f34c34db9
--- /dev/null
+++ b/images/emoji/1f3ca-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f3ca-1f3ff.png b/images/emoji/1f3ca-1f3ff.png
new file mode 100644
index 000000000..3e9231ff8
--- /dev/null
+++ b/images/emoji/1f3ca-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f3ca.png b/images/emoji/1f3ca.png
new file mode 100644
index 000000000..55b4d72f9
--- /dev/null
+++ b/images/emoji/1f3ca.png
Binary files differ
diff --git a/images/emoji/1f3cb-1f3fb.png b/images/emoji/1f3cb-1f3fb.png
new file mode 100644
index 000000000..febaad123
--- /dev/null
+++ b/images/emoji/1f3cb-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f3cb-1f3fc.png b/images/emoji/1f3cb-1f3fc.png
new file mode 100644
index 000000000..27ae794a1
--- /dev/null
+++ b/images/emoji/1f3cb-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f3cb-1f3fd.png b/images/emoji/1f3cb-1f3fd.png
new file mode 100644
index 000000000..45c4c22c7
--- /dev/null
+++ b/images/emoji/1f3cb-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f3cb-1f3fe.png b/images/emoji/1f3cb-1f3fe.png
new file mode 100644
index 000000000..67dd21d24
--- /dev/null
+++ b/images/emoji/1f3cb-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f3cb-1f3ff.png b/images/emoji/1f3cb-1f3ff.png
new file mode 100644
index 000000000..fa0152038
--- /dev/null
+++ b/images/emoji/1f3cb-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f3cb.png b/images/emoji/1f3cb.png
new file mode 100644
index 000000000..afdeaa476
--- /dev/null
+++ b/images/emoji/1f3cb.png
Binary files differ
diff --git a/images/emoji/1f3cc.png b/images/emoji/1f3cc.png
new file mode 100644
index 000000000..39c552de8
--- /dev/null
+++ b/images/emoji/1f3cc.png
Binary files differ
diff --git a/images/emoji/1f3cd.png b/images/emoji/1f3cd.png
new file mode 100644
index 000000000..3d1d567e8
--- /dev/null
+++ b/images/emoji/1f3cd.png
Binary files differ
diff --git a/images/emoji/1f3ce.png b/images/emoji/1f3ce.png
new file mode 100644
index 000000000..fe3f045f4
--- /dev/null
+++ b/images/emoji/1f3ce.png
Binary files differ
diff --git a/images/emoji/1f3cf.png b/images/emoji/1f3cf.png
new file mode 100644
index 000000000..d602294a2
--- /dev/null
+++ b/images/emoji/1f3cf.png
Binary files differ
diff --git a/images/emoji/1f3d0.png b/images/emoji/1f3d0.png
new file mode 100644
index 000000000..ce89e6d74
--- /dev/null
+++ b/images/emoji/1f3d0.png
Binary files differ
diff --git a/images/emoji/1f3d1.png b/images/emoji/1f3d1.png
new file mode 100644
index 000000000..839637716
--- /dev/null
+++ b/images/emoji/1f3d1.png
Binary files differ
diff --git a/images/emoji/1f3d2.png b/images/emoji/1f3d2.png
new file mode 100644
index 000000000..be94e9cbf
--- /dev/null
+++ b/images/emoji/1f3d2.png
Binary files differ
diff --git a/images/emoji/1f3d3.png b/images/emoji/1f3d3.png
new file mode 100644
index 000000000..ff3c51727
--- /dev/null
+++ b/images/emoji/1f3d3.png
Binary files differ
diff --git a/images/emoji/1f3d4.png b/images/emoji/1f3d4.png
new file mode 100644
index 000000000..f63a205dc
--- /dev/null
+++ b/images/emoji/1f3d4.png
Binary files differ
diff --git a/images/emoji/1f3d5.png b/images/emoji/1f3d5.png
new file mode 100644
index 000000000..7da5a756e
--- /dev/null
+++ b/images/emoji/1f3d5.png
Binary files differ
diff --git a/images/emoji/1f3d6.png b/images/emoji/1f3d6.png
new file mode 100644
index 000000000..69108c8ea
--- /dev/null
+++ b/images/emoji/1f3d6.png
Binary files differ
diff --git a/images/emoji/1f3d7.png b/images/emoji/1f3d7.png
new file mode 100644
index 000000000..8206a20f6
--- /dev/null
+++ b/images/emoji/1f3d7.png
Binary files differ
diff --git a/images/emoji/1f3d8.png b/images/emoji/1f3d8.png
new file mode 100644
index 000000000..6ab4a2a26
--- /dev/null
+++ b/images/emoji/1f3d8.png
Binary files differ
diff --git a/images/emoji/1f3d9.png b/images/emoji/1f3d9.png
new file mode 100644
index 000000000..d7b9844a0
--- /dev/null
+++ b/images/emoji/1f3d9.png
Binary files differ
diff --git a/images/emoji/1f3da.png b/images/emoji/1f3da.png
new file mode 100644
index 000000000..c55e81de9
--- /dev/null
+++ b/images/emoji/1f3da.png
Binary files differ
diff --git a/images/emoji/1f3db.png b/images/emoji/1f3db.png
new file mode 100644
index 000000000..de7b559da
--- /dev/null
+++ b/images/emoji/1f3db.png
Binary files differ
diff --git a/images/emoji/1f3dc.png b/images/emoji/1f3dc.png
new file mode 100644
index 000000000..e9966ff8c
--- /dev/null
+++ b/images/emoji/1f3dc.png
Binary files differ
diff --git a/images/emoji/1f3dd.png b/images/emoji/1f3dd.png
new file mode 100644
index 000000000..7fd834389
--- /dev/null
+++ b/images/emoji/1f3dd.png
Binary files differ
diff --git a/images/emoji/1f3de.png b/images/emoji/1f3de.png
new file mode 100644
index 000000000..63ec70163
--- /dev/null
+++ b/images/emoji/1f3de.png
Binary files differ
diff --git a/images/emoji/1f3df.png b/images/emoji/1f3df.png
new file mode 100644
index 000000000..1fee9a34b
--- /dev/null
+++ b/images/emoji/1f3df.png
Binary files differ
diff --git a/images/emoji/1f3e0.png b/images/emoji/1f3e0.png
new file mode 100644
index 000000000..01c98a0ba
--- /dev/null
+++ b/images/emoji/1f3e0.png
Binary files differ
diff --git a/images/emoji/1f3e1.png b/images/emoji/1f3e1.png
new file mode 100644
index 000000000..1a276d153
--- /dev/null
+++ b/images/emoji/1f3e1.png
Binary files differ
diff --git a/images/emoji/1f3e2.png b/images/emoji/1f3e2.png
new file mode 100644
index 000000000..7eee927d1
--- /dev/null
+++ b/images/emoji/1f3e2.png
Binary files differ
diff --git a/images/emoji/1f3e3.png b/images/emoji/1f3e3.png
new file mode 100644
index 000000000..a23848f9a
--- /dev/null
+++ b/images/emoji/1f3e3.png
Binary files differ
diff --git a/images/emoji/1f3e4.png b/images/emoji/1f3e4.png
new file mode 100644
index 000000000..3745aff8d
--- /dev/null
+++ b/images/emoji/1f3e4.png
Binary files differ
diff --git a/images/emoji/1f3e5.png b/images/emoji/1f3e5.png
new file mode 100644
index 000000000..1cbce4ae7
--- /dev/null
+++ b/images/emoji/1f3e5.png
Binary files differ
diff --git a/images/emoji/1f3e6.png b/images/emoji/1f3e6.png
new file mode 100644
index 000000000..dffdcef36
--- /dev/null
+++ b/images/emoji/1f3e6.png
Binary files differ
diff --git a/images/emoji/1f3e7.png b/images/emoji/1f3e7.png
new file mode 100644
index 000000000..4d935307b
--- /dev/null
+++ b/images/emoji/1f3e7.png
Binary files differ
diff --git a/images/emoji/1f3e8.png b/images/emoji/1f3e8.png
new file mode 100644
index 000000000..ea8f4c497
--- /dev/null
+++ b/images/emoji/1f3e8.png
Binary files differ
diff --git a/images/emoji/1f3e9.png b/images/emoji/1f3e9.png
new file mode 100644
index 000000000..5e136be6f
--- /dev/null
+++ b/images/emoji/1f3e9.png
Binary files differ
diff --git a/images/emoji/1f3ea.png b/images/emoji/1f3ea.png
new file mode 100644
index 000000000..26b53b566
--- /dev/null
+++ b/images/emoji/1f3ea.png
Binary files differ
diff --git a/images/emoji/1f3eb.png b/images/emoji/1f3eb.png
new file mode 100644
index 000000000..269759534
--- /dev/null
+++ b/images/emoji/1f3eb.png
Binary files differ
diff --git a/images/emoji/1f3ec.png b/images/emoji/1f3ec.png
new file mode 100644
index 000000000..58867c7a6
--- /dev/null
+++ b/images/emoji/1f3ec.png
Binary files differ
diff --git a/images/emoji/1f3ed.png b/images/emoji/1f3ed.png
new file mode 100644
index 000000000..e1d2ddf4a
--- /dev/null
+++ b/images/emoji/1f3ed.png
Binary files differ
diff --git a/images/emoji/1f3ee.png b/images/emoji/1f3ee.png
new file mode 100644
index 000000000..97cf5dbe1
--- /dev/null
+++ b/images/emoji/1f3ee.png
Binary files differ
diff --git a/images/emoji/1f3ef.png b/images/emoji/1f3ef.png
new file mode 100644
index 000000000..64b4e33a1
--- /dev/null
+++ b/images/emoji/1f3ef.png
Binary files differ
diff --git a/images/emoji/1f3f0.png b/images/emoji/1f3f0.png
new file mode 100644
index 000000000..888d11332
--- /dev/null
+++ b/images/emoji/1f3f0.png
Binary files differ
diff --git a/images/emoji/1f3f3.png b/images/emoji/1f3f3.png
new file mode 100644
index 000000000..86d6e96d5
--- /dev/null
+++ b/images/emoji/1f3f3.png
Binary files differ
diff --git a/images/emoji/1f3f4.png b/images/emoji/1f3f4.png
new file mode 100644
index 000000000..0e28d05d5
--- /dev/null
+++ b/images/emoji/1f3f4.png
Binary files differ
diff --git a/images/emoji/1f3f5.png b/images/emoji/1f3f5.png
new file mode 100644
index 000000000..8030e494b
--- /dev/null
+++ b/images/emoji/1f3f5.png
Binary files differ
diff --git a/images/emoji/1f3f7.png b/images/emoji/1f3f7.png
new file mode 100644
index 000000000..d41c9b4f1
--- /dev/null
+++ b/images/emoji/1f3f7.png
Binary files differ
diff --git a/images/emoji/1f3f8.png b/images/emoji/1f3f8.png
new file mode 100644
index 000000000..e0af4d99b
--- /dev/null
+++ b/images/emoji/1f3f8.png
Binary files differ
diff --git a/images/emoji/1f3f9.png b/images/emoji/1f3f9.png
new file mode 100644
index 000000000..6a538bf47
--- /dev/null
+++ b/images/emoji/1f3f9.png
Binary files differ
diff --git a/images/emoji/1f3fa.png b/images/emoji/1f3fa.png
new file mode 100644
index 000000000..96de50560
--- /dev/null
+++ b/images/emoji/1f3fa.png
Binary files differ
diff --git a/images/emoji/1f400.png b/images/emoji/1f400.png
new file mode 100644
index 000000000..86219144f
--- /dev/null
+++ b/images/emoji/1f400.png
Binary files differ
diff --git a/images/emoji/1f401.png b/images/emoji/1f401.png
new file mode 100644
index 000000000..20fb041f0
--- /dev/null
+++ b/images/emoji/1f401.png
Binary files differ
diff --git a/images/emoji/1f402.png b/images/emoji/1f402.png
new file mode 100644
index 000000000..badf5708f
--- /dev/null
+++ b/images/emoji/1f402.png
Binary files differ
diff --git a/images/emoji/1f403.png b/images/emoji/1f403.png
new file mode 100644
index 000000000..80446615c
--- /dev/null
+++ b/images/emoji/1f403.png
Binary files differ
diff --git a/images/emoji/1f404.png b/images/emoji/1f404.png
new file mode 100644
index 000000000..4d0ca534f
--- /dev/null
+++ b/images/emoji/1f404.png
Binary files differ
diff --git a/images/emoji/1f405.png b/images/emoji/1f405.png
new file mode 100644
index 000000000..871a8b74d
--- /dev/null
+++ b/images/emoji/1f405.png
Binary files differ
diff --git a/images/emoji/1f406.png b/images/emoji/1f406.png
new file mode 100644
index 000000000..8aac3d494
--- /dev/null
+++ b/images/emoji/1f406.png
Binary files differ
diff --git a/images/emoji/1f407.png b/images/emoji/1f407.png
new file mode 100644
index 000000000..2c8a29c64
--- /dev/null
+++ b/images/emoji/1f407.png
Binary files differ
diff --git a/images/emoji/1f408.png b/images/emoji/1f408.png
new file mode 100644
index 000000000..46abe8cbc
--- /dev/null
+++ b/images/emoji/1f408.png
Binary files differ
diff --git a/images/emoji/1f409.png b/images/emoji/1f409.png
new file mode 100644
index 000000000..e298d2f6c
--- /dev/null
+++ b/images/emoji/1f409.png
Binary files differ
diff --git a/images/emoji/1f40a.png b/images/emoji/1f40a.png
new file mode 100644
index 000000000..3005c46f1
--- /dev/null
+++ b/images/emoji/1f40a.png
Binary files differ
diff --git a/images/emoji/1f40b.png b/images/emoji/1f40b.png
new file mode 100644
index 000000000..0df9d3c73
--- /dev/null
+++ b/images/emoji/1f40b.png
Binary files differ
diff --git a/images/emoji/1f40c.png b/images/emoji/1f40c.png
new file mode 100644
index 000000000..f4ea071e2
--- /dev/null
+++ b/images/emoji/1f40c.png
Binary files differ
diff --git a/images/emoji/1f40d.png b/images/emoji/1f40d.png
new file mode 100644
index 000000000..f041d3b2e
--- /dev/null
+++ b/images/emoji/1f40d.png
Binary files differ
diff --git a/images/emoji/1f40e.png b/images/emoji/1f40e.png
new file mode 100644
index 000000000..0b4d8903c
--- /dev/null
+++ b/images/emoji/1f40e.png
Binary files differ
diff --git a/images/emoji/1f40f.png b/images/emoji/1f40f.png
new file mode 100644
index 000000000..52a44464c
--- /dev/null
+++ b/images/emoji/1f40f.png
Binary files differ
diff --git a/images/emoji/1f410.png b/images/emoji/1f410.png
new file mode 100644
index 000000000..f9d9e38a1
--- /dev/null
+++ b/images/emoji/1f410.png
Binary files differ
diff --git a/images/emoji/1f411.png b/images/emoji/1f411.png
new file mode 100644
index 000000000..eea1f2f8d
--- /dev/null
+++ b/images/emoji/1f411.png
Binary files differ
diff --git a/images/emoji/1f412.png b/images/emoji/1f412.png
new file mode 100644
index 000000000..65042c09f
--- /dev/null
+++ b/images/emoji/1f412.png
Binary files differ
diff --git a/images/emoji/1f413.png b/images/emoji/1f413.png
new file mode 100644
index 000000000..bbf2bbff9
--- /dev/null
+++ b/images/emoji/1f413.png
Binary files differ
diff --git a/images/emoji/1f414.png b/images/emoji/1f414.png
new file mode 100644
index 000000000..9a6992e55
--- /dev/null
+++ b/images/emoji/1f414.png
Binary files differ
diff --git a/images/emoji/1f415.png b/images/emoji/1f415.png
new file mode 100644
index 000000000..976143dbd
--- /dev/null
+++ b/images/emoji/1f415.png
Binary files differ
diff --git a/images/emoji/1f416.png b/images/emoji/1f416.png
new file mode 100644
index 000000000..5f31c1a2d
--- /dev/null
+++ b/images/emoji/1f416.png
Binary files differ
diff --git a/images/emoji/1f417.png b/images/emoji/1f417.png
new file mode 100644
index 000000000..3073bf026
--- /dev/null
+++ b/images/emoji/1f417.png
Binary files differ
diff --git a/images/emoji/1f418.png b/images/emoji/1f418.png
new file mode 100644
index 000000000..b8a6d1405
--- /dev/null
+++ b/images/emoji/1f418.png
Binary files differ
diff --git a/images/emoji/1f419.png b/images/emoji/1f419.png
new file mode 100644
index 000000000..72c84074a
--- /dev/null
+++ b/images/emoji/1f419.png
Binary files differ
diff --git a/images/emoji/1f41a.png b/images/emoji/1f41a.png
new file mode 100644
index 000000000..55721629f
--- /dev/null
+++ b/images/emoji/1f41a.png
Binary files differ
diff --git a/images/emoji/1f41b.png b/images/emoji/1f41b.png
new file mode 100644
index 000000000..c9a00cf3e
--- /dev/null
+++ b/images/emoji/1f41b.png
Binary files differ
diff --git a/images/emoji/1f41c.png b/images/emoji/1f41c.png
new file mode 100644
index 000000000..994127ed6
--- /dev/null
+++ b/images/emoji/1f41c.png
Binary files differ
diff --git a/images/emoji/1f41d.png b/images/emoji/1f41d.png
new file mode 100644
index 000000000..6bf6f67e1
--- /dev/null
+++ b/images/emoji/1f41d.png
Binary files differ
diff --git a/images/emoji/1f41e.png b/images/emoji/1f41e.png
new file mode 100644
index 000000000..3d93174d7
--- /dev/null
+++ b/images/emoji/1f41e.png
Binary files differ
diff --git a/images/emoji/1f41f.png b/images/emoji/1f41f.png
new file mode 100644
index 000000000..c2d2faaac
--- /dev/null
+++ b/images/emoji/1f41f.png
Binary files differ
diff --git a/images/emoji/1f420.png b/images/emoji/1f420.png
new file mode 100644
index 000000000..252105235
--- /dev/null
+++ b/images/emoji/1f420.png
Binary files differ
diff --git a/images/emoji/1f421.png b/images/emoji/1f421.png
new file mode 100644
index 000000000..2939344a5
--- /dev/null
+++ b/images/emoji/1f421.png
Binary files differ
diff --git a/images/emoji/1f422.png b/images/emoji/1f422.png
new file mode 100644
index 000000000..46f59337b
--- /dev/null
+++ b/images/emoji/1f422.png
Binary files differ
diff --git a/images/emoji/1f423.png b/images/emoji/1f423.png
new file mode 100644
index 000000000..56515ad34
--- /dev/null
+++ b/images/emoji/1f423.png
Binary files differ
diff --git a/images/emoji/1f424.png b/images/emoji/1f424.png
new file mode 100644
index 000000000..dccd96576
--- /dev/null
+++ b/images/emoji/1f424.png
Binary files differ
diff --git a/images/emoji/1f425.png b/images/emoji/1f425.png
new file mode 100644
index 000000000..31dfb511e
--- /dev/null
+++ b/images/emoji/1f425.png
Binary files differ
diff --git a/images/emoji/1f426.png b/images/emoji/1f426.png
new file mode 100644
index 000000000..e201c22be
--- /dev/null
+++ b/images/emoji/1f426.png
Binary files differ
diff --git a/images/emoji/1f427.png b/images/emoji/1f427.png
new file mode 100644
index 000000000..c0064fb97
--- /dev/null
+++ b/images/emoji/1f427.png
Binary files differ
diff --git a/images/emoji/1f428.png b/images/emoji/1f428.png
new file mode 100644
index 000000000..c846cd223
--- /dev/null
+++ b/images/emoji/1f428.png
Binary files differ
diff --git a/images/emoji/1f429.png b/images/emoji/1f429.png
new file mode 100644
index 000000000..8ec39e396
--- /dev/null
+++ b/images/emoji/1f429.png
Binary files differ
diff --git a/images/emoji/1f42a.png b/images/emoji/1f42a.png
new file mode 100644
index 000000000..5271637c7
--- /dev/null
+++ b/images/emoji/1f42a.png
Binary files differ
diff --git a/images/emoji/1f42b.png b/images/emoji/1f42b.png
new file mode 100644
index 000000000..b421d07a8
--- /dev/null
+++ b/images/emoji/1f42b.png
Binary files differ
diff --git a/images/emoji/1f42c.png b/images/emoji/1f42c.png
new file mode 100644
index 000000000..c2a914f59
--- /dev/null
+++ b/images/emoji/1f42c.png
Binary files differ
diff --git a/images/emoji/1f42d.png b/images/emoji/1f42d.png
new file mode 100644
index 000000000..a52c8414f
--- /dev/null
+++ b/images/emoji/1f42d.png
Binary files differ
diff --git a/images/emoji/1f42e.png b/images/emoji/1f42e.png
new file mode 100644
index 000000000..602495bd9
--- /dev/null
+++ b/images/emoji/1f42e.png
Binary files differ
diff --git a/images/emoji/1f42f.png b/images/emoji/1f42f.png
new file mode 100644
index 000000000..a4d3ef086
--- /dev/null
+++ b/images/emoji/1f42f.png
Binary files differ
diff --git a/images/emoji/1f430.png b/images/emoji/1f430.png
new file mode 100644
index 000000000..20c67d11b
--- /dev/null
+++ b/images/emoji/1f430.png
Binary files differ
diff --git a/images/emoji/1f431.png b/images/emoji/1f431.png
new file mode 100644
index 000000000..10e20b530
--- /dev/null
+++ b/images/emoji/1f431.png
Binary files differ
diff --git a/images/emoji/1f432.png b/images/emoji/1f432.png
new file mode 100644
index 000000000..3c2720446
--- /dev/null
+++ b/images/emoji/1f432.png
Binary files differ
diff --git a/images/emoji/1f433.png b/images/emoji/1f433.png
new file mode 100644
index 000000000..c2f52b443
--- /dev/null
+++ b/images/emoji/1f433.png
Binary files differ
diff --git a/images/emoji/1f434.png b/images/emoji/1f434.png
new file mode 100644
index 000000000..f4f45047c
--- /dev/null
+++ b/images/emoji/1f434.png
Binary files differ
diff --git a/images/emoji/1f435.png b/images/emoji/1f435.png
new file mode 100644
index 000000000..fe49a5467
--- /dev/null
+++ b/images/emoji/1f435.png
Binary files differ
diff --git a/images/emoji/1f436.png b/images/emoji/1f436.png
new file mode 100644
index 000000000..4a5b7b859
--- /dev/null
+++ b/images/emoji/1f436.png
Binary files differ
diff --git a/images/emoji/1f437.png b/images/emoji/1f437.png
new file mode 100644
index 000000000..afe05ca16
--- /dev/null
+++ b/images/emoji/1f437.png
Binary files differ
diff --git a/images/emoji/1f438.png b/images/emoji/1f438.png
new file mode 100644
index 000000000..8825d1ad5
--- /dev/null
+++ b/images/emoji/1f438.png
Binary files differ
diff --git a/images/emoji/1f439.png b/images/emoji/1f439.png
new file mode 100644
index 000000000..376c36b0a
--- /dev/null
+++ b/images/emoji/1f439.png
Binary files differ
diff --git a/images/emoji/1f43a.png b/images/emoji/1f43a.png
new file mode 100644
index 000000000..ba7220f2d
--- /dev/null
+++ b/images/emoji/1f43a.png
Binary files differ
diff --git a/images/emoji/1f43b.png b/images/emoji/1f43b.png
new file mode 100644
index 000000000..272d56bbb
--- /dev/null
+++ b/images/emoji/1f43b.png
Binary files differ
diff --git a/images/emoji/1f43c.png b/images/emoji/1f43c.png
new file mode 100644
index 000000000..978382775
--- /dev/null
+++ b/images/emoji/1f43c.png
Binary files differ
diff --git a/images/emoji/1f43d.png b/images/emoji/1f43d.png
new file mode 100644
index 000000000..3610ae4a9
--- /dev/null
+++ b/images/emoji/1f43d.png
Binary files differ
diff --git a/images/emoji/1f43e.png b/images/emoji/1f43e.png
new file mode 100644
index 000000000..5fe568cee
--- /dev/null
+++ b/images/emoji/1f43e.png
Binary files differ
diff --git a/images/emoji/1f43f.png b/images/emoji/1f43f.png
new file mode 100644
index 000000000..a9ab60f51
--- /dev/null
+++ b/images/emoji/1f43f.png
Binary files differ
diff --git a/images/emoji/1f440.png b/images/emoji/1f440.png
new file mode 100644
index 000000000..2102ada7e
--- /dev/null
+++ b/images/emoji/1f440.png
Binary files differ
diff --git a/images/emoji/1f441-1f5e8.png b/images/emoji/1f441-1f5e8.png
new file mode 100644
index 000000000..21bd22bbc
--- /dev/null
+++ b/images/emoji/1f441-1f5e8.png
Binary files differ
diff --git a/images/emoji/1f441.png b/images/emoji/1f441.png
new file mode 100644
index 000000000..9d989cdd3
--- /dev/null
+++ b/images/emoji/1f441.png
Binary files differ
diff --git a/images/emoji/1f442-1f3fb.png b/images/emoji/1f442-1f3fb.png
new file mode 100644
index 000000000..d09e1e419
--- /dev/null
+++ b/images/emoji/1f442-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f442-1f3fc.png b/images/emoji/1f442-1f3fc.png
new file mode 100644
index 000000000..300d60a99
--- /dev/null
+++ b/images/emoji/1f442-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f442-1f3fd.png b/images/emoji/1f442-1f3fd.png
new file mode 100644
index 000000000..2a56eebe4
--- /dev/null
+++ b/images/emoji/1f442-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f442-1f3fe.png b/images/emoji/1f442-1f3fe.png
new file mode 100644
index 000000000..bd270f776
--- /dev/null
+++ b/images/emoji/1f442-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f442-1f3ff.png b/images/emoji/1f442-1f3ff.png
new file mode 100644
index 000000000..b96bb441d
--- /dev/null
+++ b/images/emoji/1f442-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f442.png b/images/emoji/1f442.png
new file mode 100644
index 000000000..f84f9ff15
--- /dev/null
+++ b/images/emoji/1f442.png
Binary files differ
diff --git a/images/emoji/1f443-1f3fb.png b/images/emoji/1f443-1f3fb.png
new file mode 100644
index 000000000..8008d1750
--- /dev/null
+++ b/images/emoji/1f443-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f443-1f3fc.png b/images/emoji/1f443-1f3fc.png
new file mode 100644
index 000000000..ac17f26e8
--- /dev/null
+++ b/images/emoji/1f443-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f443-1f3fd.png b/images/emoji/1f443-1f3fd.png
new file mode 100644
index 000000000..d8b6cbe0f
--- /dev/null
+++ b/images/emoji/1f443-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f443-1f3fe.png b/images/emoji/1f443-1f3fe.png
new file mode 100644
index 000000000..004b2631e
--- /dev/null
+++ b/images/emoji/1f443-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f443-1f3ff.png b/images/emoji/1f443-1f3ff.png
new file mode 100644
index 000000000..7b33821f6
--- /dev/null
+++ b/images/emoji/1f443-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f443.png b/images/emoji/1f443.png
new file mode 100644
index 000000000..2f04ac5f9
--- /dev/null
+++ b/images/emoji/1f443.png
Binary files differ
diff --git a/images/emoji/1f444.png b/images/emoji/1f444.png
new file mode 100644
index 000000000..35f3cc200
--- /dev/null
+++ b/images/emoji/1f444.png
Binary files differ
diff --git a/images/emoji/1f445.png b/images/emoji/1f445.png
new file mode 100644
index 000000000..70ce9c122
--- /dev/null
+++ b/images/emoji/1f445.png
Binary files differ
diff --git a/images/emoji/1f446-1f3fb.png b/images/emoji/1f446-1f3fb.png
new file mode 100644
index 000000000..a12a7e784
--- /dev/null
+++ b/images/emoji/1f446-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f446-1f3fc.png b/images/emoji/1f446-1f3fc.png
new file mode 100644
index 000000000..cdff40cea
--- /dev/null
+++ b/images/emoji/1f446-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f446-1f3fd.png b/images/emoji/1f446-1f3fd.png
new file mode 100644
index 000000000..a07ce9e5a
--- /dev/null
+++ b/images/emoji/1f446-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f446-1f3fe.png b/images/emoji/1f446-1f3fe.png
new file mode 100644
index 000000000..4f86c88ba
--- /dev/null
+++ b/images/emoji/1f446-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f446-1f3ff.png b/images/emoji/1f446-1f3ff.png
new file mode 100644
index 000000000..ed1b26c35
--- /dev/null
+++ b/images/emoji/1f446-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f446.png b/images/emoji/1f446.png
new file mode 100644
index 000000000..bc496dfea
--- /dev/null
+++ b/images/emoji/1f446.png
Binary files differ
diff --git a/images/emoji/1f447-1f3fb.png b/images/emoji/1f447-1f3fb.png
new file mode 100644
index 000000000..140f157d8
--- /dev/null
+++ b/images/emoji/1f447-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f447-1f3fc.png b/images/emoji/1f447-1f3fc.png
new file mode 100644
index 000000000..d518544f7
--- /dev/null
+++ b/images/emoji/1f447-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f447-1f3fd.png b/images/emoji/1f447-1f3fd.png
new file mode 100644
index 000000000..018b688b8
--- /dev/null
+++ b/images/emoji/1f447-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f447-1f3fe.png b/images/emoji/1f447-1f3fe.png
new file mode 100644
index 000000000..98845bf6f
--- /dev/null
+++ b/images/emoji/1f447-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f447-1f3ff.png b/images/emoji/1f447-1f3ff.png
new file mode 100644
index 000000000..9a9b039a9
--- /dev/null
+++ b/images/emoji/1f447-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f447.png b/images/emoji/1f447.png
new file mode 100644
index 000000000..00d3d13ab
--- /dev/null
+++ b/images/emoji/1f447.png
Binary files differ
diff --git a/images/emoji/1f448-1f3fb.png b/images/emoji/1f448-1f3fb.png
new file mode 100644
index 000000000..88e2c3060
--- /dev/null
+++ b/images/emoji/1f448-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f448-1f3fc.png b/images/emoji/1f448-1f3fc.png
new file mode 100644
index 000000000..d3c89d87c
--- /dev/null
+++ b/images/emoji/1f448-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f448-1f3fd.png b/images/emoji/1f448-1f3fd.png
new file mode 100644
index 000000000..b23b91673
--- /dev/null
+++ b/images/emoji/1f448-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f448-1f3fe.png b/images/emoji/1f448-1f3fe.png
new file mode 100644
index 000000000..3093f325c
--- /dev/null
+++ b/images/emoji/1f448-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f448-1f3ff.png b/images/emoji/1f448-1f3ff.png
new file mode 100644
index 000000000..2b4cbfa12
--- /dev/null
+++ b/images/emoji/1f448-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f448.png b/images/emoji/1f448.png
new file mode 100644
index 000000000..599fa2e3c
--- /dev/null
+++ b/images/emoji/1f448.png
Binary files differ
diff --git a/images/emoji/1f449-1f3fb.png b/images/emoji/1f449-1f3fb.png
new file mode 100644
index 000000000..4a28c6bbc
--- /dev/null
+++ b/images/emoji/1f449-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f449-1f3fc.png b/images/emoji/1f449-1f3fc.png
new file mode 100644
index 000000000..7cb132317
--- /dev/null
+++ b/images/emoji/1f449-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f449-1f3fd.png b/images/emoji/1f449-1f3fd.png
new file mode 100644
index 000000000..5514807d7
--- /dev/null
+++ b/images/emoji/1f449-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f449-1f3fe.png b/images/emoji/1f449-1f3fe.png
new file mode 100644
index 000000000..b8541d644
--- /dev/null
+++ b/images/emoji/1f449-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f449-1f3ff.png b/images/emoji/1f449-1f3ff.png
new file mode 100644
index 000000000..1b7aab07b
--- /dev/null
+++ b/images/emoji/1f449-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f449.png b/images/emoji/1f449.png
new file mode 100644
index 000000000..93a3cd34a
--- /dev/null
+++ b/images/emoji/1f449.png
Binary files differ
diff --git a/images/emoji/1f44a-1f3fb.png b/images/emoji/1f44a-1f3fb.png
new file mode 100644
index 000000000..93c7d17fb
--- /dev/null
+++ b/images/emoji/1f44a-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f44a-1f3fc.png b/images/emoji/1f44a-1f3fc.png
new file mode 100644
index 000000000..c0a1af6e1
--- /dev/null
+++ b/images/emoji/1f44a-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f44a-1f3fd.png b/images/emoji/1f44a-1f3fd.png
new file mode 100644
index 000000000..1458b0212
--- /dev/null
+++ b/images/emoji/1f44a-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f44a-1f3fe.png b/images/emoji/1f44a-1f3fe.png
new file mode 100644
index 000000000..c1466bfcd
--- /dev/null
+++ b/images/emoji/1f44a-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f44a-1f3ff.png b/images/emoji/1f44a-1f3ff.png
new file mode 100644
index 000000000..00b4ddb89
--- /dev/null
+++ b/images/emoji/1f44a-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f44a.png b/images/emoji/1f44a.png
new file mode 100644
index 000000000..b14ca5f52
--- /dev/null
+++ b/images/emoji/1f44a.png
Binary files differ
diff --git a/images/emoji/1f44b-1f3fb.png b/images/emoji/1f44b-1f3fb.png
new file mode 100644
index 000000000..beea09dda
--- /dev/null
+++ b/images/emoji/1f44b-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f44b-1f3fc.png b/images/emoji/1f44b-1f3fc.png
new file mode 100644
index 000000000..a7679d5fe
--- /dev/null
+++ b/images/emoji/1f44b-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f44b-1f3fd.png b/images/emoji/1f44b-1f3fd.png
new file mode 100644
index 000000000..6283b670f
--- /dev/null
+++ b/images/emoji/1f44b-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f44b-1f3fe.png b/images/emoji/1f44b-1f3fe.png
new file mode 100644
index 000000000..b771b52c3
--- /dev/null
+++ b/images/emoji/1f44b-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f44b-1f3ff.png b/images/emoji/1f44b-1f3ff.png
new file mode 100644
index 000000000..6bbedc9b5
--- /dev/null
+++ b/images/emoji/1f44b-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f44b.png b/images/emoji/1f44b.png
new file mode 100644
index 000000000..02ae68b85
--- /dev/null
+++ b/images/emoji/1f44b.png
Binary files differ
diff --git a/images/emoji/1f44c-1f3fb.png b/images/emoji/1f44c-1f3fb.png
new file mode 100644
index 000000000..cecf7b2ab
--- /dev/null
+++ b/images/emoji/1f44c-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f44c-1f3fc.png b/images/emoji/1f44c-1f3fc.png
new file mode 100644
index 000000000..c19239bcd
--- /dev/null
+++ b/images/emoji/1f44c-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f44c-1f3fd.png b/images/emoji/1f44c-1f3fd.png
new file mode 100644
index 000000000..94b65b03e
--- /dev/null
+++ b/images/emoji/1f44c-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f44c-1f3fe.png b/images/emoji/1f44c-1f3fe.png
new file mode 100644
index 000000000..03d26f08e
--- /dev/null
+++ b/images/emoji/1f44c-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f44c-1f3ff.png b/images/emoji/1f44c-1f3ff.png
new file mode 100644
index 000000000..d4b240863
--- /dev/null
+++ b/images/emoji/1f44c-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f44c.png b/images/emoji/1f44c.png
new file mode 100644
index 000000000..028d69b0d
--- /dev/null
+++ b/images/emoji/1f44c.png
Binary files differ
diff --git a/images/emoji/1f44d-1f3fb.png b/images/emoji/1f44d-1f3fb.png
new file mode 100644
index 000000000..39684cd5c
--- /dev/null
+++ b/images/emoji/1f44d-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f44d-1f3fc.png b/images/emoji/1f44d-1f3fc.png
new file mode 100644
index 000000000..a9b597235
--- /dev/null
+++ b/images/emoji/1f44d-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f44d-1f3fd.png b/images/emoji/1f44d-1f3fd.png
new file mode 100644
index 000000000..c5e291670
--- /dev/null
+++ b/images/emoji/1f44d-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f44d-1f3fe.png b/images/emoji/1f44d-1f3fe.png
new file mode 100644
index 000000000..5bf4857a8
--- /dev/null
+++ b/images/emoji/1f44d-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f44d-1f3ff.png b/images/emoji/1f44d-1f3ff.png
new file mode 100644
index 000000000..d829f787c
--- /dev/null
+++ b/images/emoji/1f44d-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f44d.png b/images/emoji/1f44d.png
new file mode 100644
index 000000000..f9e6f13a3
--- /dev/null
+++ b/images/emoji/1f44d.png
Binary files differ
diff --git a/images/emoji/1f44e-1f3fb.png b/images/emoji/1f44e-1f3fb.png
new file mode 100644
index 000000000..a1631af8e
--- /dev/null
+++ b/images/emoji/1f44e-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f44e-1f3fc.png b/images/emoji/1f44e-1f3fc.png
new file mode 100644
index 000000000..85fff82d5
--- /dev/null
+++ b/images/emoji/1f44e-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f44e-1f3fd.png b/images/emoji/1f44e-1f3fd.png
new file mode 100644
index 000000000..eeba3be80
--- /dev/null
+++ b/images/emoji/1f44e-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f44e-1f3fe.png b/images/emoji/1f44e-1f3fe.png
new file mode 100644
index 000000000..1addafdae
--- /dev/null
+++ b/images/emoji/1f44e-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f44e-1f3ff.png b/images/emoji/1f44e-1f3ff.png
new file mode 100644
index 000000000..37ec07b57
--- /dev/null
+++ b/images/emoji/1f44e-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f44e.png b/images/emoji/1f44e.png
new file mode 100644
index 000000000..b63da2f20
--- /dev/null
+++ b/images/emoji/1f44e.png
Binary files differ
diff --git a/images/emoji/1f44f-1f3fb.png b/images/emoji/1f44f-1f3fb.png
new file mode 100644
index 000000000..770aa9ca0
--- /dev/null
+++ b/images/emoji/1f44f-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f44f-1f3fc.png b/images/emoji/1f44f-1f3fc.png
new file mode 100644
index 000000000..37c6b559a
--- /dev/null
+++ b/images/emoji/1f44f-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f44f-1f3fd.png b/images/emoji/1f44f-1f3fd.png
new file mode 100644
index 000000000..e95bf2fc7
--- /dev/null
+++ b/images/emoji/1f44f-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f44f-1f3fe.png b/images/emoji/1f44f-1f3fe.png
new file mode 100644
index 000000000..b6e9a9160
--- /dev/null
+++ b/images/emoji/1f44f-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f44f-1f3ff.png b/images/emoji/1f44f-1f3ff.png
new file mode 100644
index 000000000..59cccdb73
--- /dev/null
+++ b/images/emoji/1f44f-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f44f.png b/images/emoji/1f44f.png
new file mode 100644
index 000000000..b0ffe9289
--- /dev/null
+++ b/images/emoji/1f44f.png
Binary files differ
diff --git a/images/emoji/1f450-1f3fb.png b/images/emoji/1f450-1f3fb.png
new file mode 100644
index 000000000..352d2614f
--- /dev/null
+++ b/images/emoji/1f450-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f450-1f3fc.png b/images/emoji/1f450-1f3fc.png
new file mode 100644
index 000000000..70824a50c
--- /dev/null
+++ b/images/emoji/1f450-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f450-1f3fd.png b/images/emoji/1f450-1f3fd.png
new file mode 100644
index 000000000..d7d136bd3
--- /dev/null
+++ b/images/emoji/1f450-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f450-1f3fe.png b/images/emoji/1f450-1f3fe.png
new file mode 100644
index 000000000..df4eaa711
--- /dev/null
+++ b/images/emoji/1f450-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f450-1f3ff.png b/images/emoji/1f450-1f3ff.png
new file mode 100644
index 000000000..7dc04eaeb
--- /dev/null
+++ b/images/emoji/1f450-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f450.png b/images/emoji/1f450.png
new file mode 100644
index 000000000..1cf75c910
--- /dev/null
+++ b/images/emoji/1f450.png
Binary files differ
diff --git a/images/emoji/1f451.png b/images/emoji/1f451.png
new file mode 100644
index 000000000..93b82d92f
--- /dev/null
+++ b/images/emoji/1f451.png
Binary files differ
diff --git a/images/emoji/1f452.png b/images/emoji/1f452.png
new file mode 100644
index 000000000..b837b6a2e
--- /dev/null
+++ b/images/emoji/1f452.png
Binary files differ
diff --git a/images/emoji/1f453.png b/images/emoji/1f453.png
new file mode 100644
index 000000000..865d8274a
--- /dev/null
+++ b/images/emoji/1f453.png
Binary files differ
diff --git a/images/emoji/1f454.png b/images/emoji/1f454.png
new file mode 100644
index 000000000..1804e7f3f
--- /dev/null
+++ b/images/emoji/1f454.png
Binary files differ
diff --git a/images/emoji/1f455.png b/images/emoji/1f455.png
new file mode 100644
index 000000000..af08dec8b
--- /dev/null
+++ b/images/emoji/1f455.png
Binary files differ
diff --git a/images/emoji/1f456.png b/images/emoji/1f456.png
new file mode 100644
index 000000000..2a6869d67
--- /dev/null
+++ b/images/emoji/1f456.png
Binary files differ
diff --git a/images/emoji/1f457.png b/images/emoji/1f457.png
new file mode 100644
index 000000000..a697ca5c5
--- /dev/null
+++ b/images/emoji/1f457.png
Binary files differ
diff --git a/images/emoji/1f458.png b/images/emoji/1f458.png
new file mode 100644
index 000000000..297a42c7e
--- /dev/null
+++ b/images/emoji/1f458.png
Binary files differ
diff --git a/images/emoji/1f459.png b/images/emoji/1f459.png
new file mode 100644
index 000000000..77a8a0aae
--- /dev/null
+++ b/images/emoji/1f459.png
Binary files differ
diff --git a/images/emoji/1f45a.png b/images/emoji/1f45a.png
new file mode 100644
index 000000000..01410dc81
--- /dev/null
+++ b/images/emoji/1f45a.png
Binary files differ
diff --git a/images/emoji/1f45b.png b/images/emoji/1f45b.png
new file mode 100644
index 000000000..981346193
--- /dev/null
+++ b/images/emoji/1f45b.png
Binary files differ
diff --git a/images/emoji/1f45c.png b/images/emoji/1f45c.png
new file mode 100644
index 000000000..cbf75c5d2
--- /dev/null
+++ b/images/emoji/1f45c.png
Binary files differ
diff --git a/images/emoji/1f45d.png b/images/emoji/1f45d.png
new file mode 100644
index 000000000..8795c6c66
--- /dev/null
+++ b/images/emoji/1f45d.png
Binary files differ
diff --git a/images/emoji/1f45e.png b/images/emoji/1f45e.png
new file mode 100644
index 000000000..16ccafb93
--- /dev/null
+++ b/images/emoji/1f45e.png
Binary files differ
diff --git a/images/emoji/1f45f.png b/images/emoji/1f45f.png
new file mode 100644
index 000000000..423fa07dd
--- /dev/null
+++ b/images/emoji/1f45f.png
Binary files differ
diff --git a/images/emoji/1f460.png b/images/emoji/1f460.png
new file mode 100644
index 000000000..b331cbccc
--- /dev/null
+++ b/images/emoji/1f460.png
Binary files differ
diff --git a/images/emoji/1f461.png b/images/emoji/1f461.png
new file mode 100644
index 000000000..9d9f5122b
--- /dev/null
+++ b/images/emoji/1f461.png
Binary files differ
diff --git a/images/emoji/1f462.png b/images/emoji/1f462.png
new file mode 100644
index 000000000..11f1065ed
--- /dev/null
+++ b/images/emoji/1f462.png
Binary files differ
diff --git a/images/emoji/1f463.png b/images/emoji/1f463.png
new file mode 100644
index 000000000..b2673c5a1
--- /dev/null
+++ b/images/emoji/1f463.png
Binary files differ
diff --git a/images/emoji/1f464.png b/images/emoji/1f464.png
new file mode 100644
index 000000000..123b2cbe1
--- /dev/null
+++ b/images/emoji/1f464.png
Binary files differ
diff --git a/images/emoji/1f465.png b/images/emoji/1f465.png
new file mode 100644
index 000000000..d7656860a
--- /dev/null
+++ b/images/emoji/1f465.png
Binary files differ
diff --git a/images/emoji/1f466-1f3fb.png b/images/emoji/1f466-1f3fb.png
new file mode 100644
index 000000000..2fc436ea5
--- /dev/null
+++ b/images/emoji/1f466-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f466-1f3fc.png b/images/emoji/1f466-1f3fc.png
new file mode 100644
index 000000000..09a5f18d3
--- /dev/null
+++ b/images/emoji/1f466-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f466-1f3fd.png b/images/emoji/1f466-1f3fd.png
new file mode 100644
index 000000000..3cfe675dd
--- /dev/null
+++ b/images/emoji/1f466-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f466-1f3fe.png b/images/emoji/1f466-1f3fe.png
new file mode 100644
index 000000000..780be0ace
--- /dev/null
+++ b/images/emoji/1f466-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f466-1f3ff.png b/images/emoji/1f466-1f3ff.png
new file mode 100644
index 000000000..f32fe22e3
--- /dev/null
+++ b/images/emoji/1f466-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f466.png b/images/emoji/1f466.png
new file mode 100644
index 000000000..8ecfb0a4e
--- /dev/null
+++ b/images/emoji/1f466.png
Binary files differ
diff --git a/images/emoji/1f467-1f3fb.png b/images/emoji/1f467-1f3fb.png
new file mode 100644
index 000000000..2be1f0bee
--- /dev/null
+++ b/images/emoji/1f467-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f467-1f3fc.png b/images/emoji/1f467-1f3fc.png
new file mode 100644
index 000000000..a59ed4a3f
--- /dev/null
+++ b/images/emoji/1f467-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f467-1f3fd.png b/images/emoji/1f467-1f3fd.png
new file mode 100644
index 000000000..517e7f2a7
--- /dev/null
+++ b/images/emoji/1f467-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f467-1f3fe.png b/images/emoji/1f467-1f3fe.png
new file mode 100644
index 000000000..542d96c84
--- /dev/null
+++ b/images/emoji/1f467-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f467-1f3ff.png b/images/emoji/1f467-1f3ff.png
new file mode 100644
index 000000000..66b7c28c2
--- /dev/null
+++ b/images/emoji/1f467-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f467.png b/images/emoji/1f467.png
new file mode 100644
index 000000000..649eea6a5
--- /dev/null
+++ b/images/emoji/1f467.png
Binary files differ
diff --git a/images/emoji/1f468-1f3fb.png b/images/emoji/1f468-1f3fb.png
new file mode 100644
index 000000000..bb86e963a
--- /dev/null
+++ b/images/emoji/1f468-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f468-1f3fc.png b/images/emoji/1f468-1f3fc.png
new file mode 100644
index 000000000..fdeeaff46
--- /dev/null
+++ b/images/emoji/1f468-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f468-1f3fd.png b/images/emoji/1f468-1f3fd.png
new file mode 100644
index 000000000..7ae0b5df9
--- /dev/null
+++ b/images/emoji/1f468-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f468-1f3fe.png b/images/emoji/1f468-1f3fe.png
new file mode 100644
index 000000000..db14cde99
--- /dev/null
+++ b/images/emoji/1f468-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f468-1f3ff.png b/images/emoji/1f468-1f3ff.png
new file mode 100644
index 000000000..7c67a7052
--- /dev/null
+++ b/images/emoji/1f468-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f468-1f468-1f466-1f466.png b/images/emoji/1f468-1f468-1f466-1f466.png
new file mode 100644
index 000000000..0944001a3
--- /dev/null
+++ b/images/emoji/1f468-1f468-1f466-1f466.png
Binary files differ
diff --git a/images/emoji/1f468-1f468-1f466.png b/images/emoji/1f468-1f468-1f466.png
new file mode 100644
index 000000000..7a2e4e2c4
--- /dev/null
+++ b/images/emoji/1f468-1f468-1f466.png
Binary files differ
diff --git a/images/emoji/1f468-1f468-1f467-1f466.png b/images/emoji/1f468-1f468-1f467-1f466.png
new file mode 100644
index 000000000..41e351666
--- /dev/null
+++ b/images/emoji/1f468-1f468-1f467-1f466.png
Binary files differ
diff --git a/images/emoji/1f468-1f468-1f467-1f467.png b/images/emoji/1f468-1f468-1f467-1f467.png
new file mode 100644
index 000000000..8e8ccfe6c
--- /dev/null
+++ b/images/emoji/1f468-1f468-1f467-1f467.png
Binary files differ
diff --git a/images/emoji/1f468-1f468-1f467.png b/images/emoji/1f468-1f468-1f467.png
new file mode 100644
index 000000000..9bca550d0
--- /dev/null
+++ b/images/emoji/1f468-1f468-1f467.png
Binary files differ
diff --git a/images/emoji/1f468-1f469-1f466-1f466.png b/images/emoji/1f468-1f469-1f466-1f466.png
new file mode 100644
index 000000000..579eb59f8
--- /dev/null
+++ b/images/emoji/1f468-1f469-1f466-1f466.png
Binary files differ
diff --git a/images/emoji/1f468-1f469-1f467-1f466.png b/images/emoji/1f468-1f469-1f467-1f466.png
new file mode 100644
index 000000000..c5c7b0942
--- /dev/null
+++ b/images/emoji/1f468-1f469-1f467-1f466.png
Binary files differ
diff --git a/images/emoji/1f468-1f469-1f467-1f467.png b/images/emoji/1f468-1f469-1f467-1f467.png
new file mode 100644
index 000000000..b47f3b1c7
--- /dev/null
+++ b/images/emoji/1f468-1f469-1f467-1f467.png
Binary files differ
diff --git a/images/emoji/1f468-1f469-1f467.png b/images/emoji/1f468-1f469-1f467.png
new file mode 100644
index 000000000..ffa6f4293
--- /dev/null
+++ b/images/emoji/1f468-1f469-1f467.png
Binary files differ
diff --git a/images/emoji/1f468-2764-1f468.png b/images/emoji/1f468-2764-1f468.png
new file mode 100644
index 000000000..8759fa5db
--- /dev/null
+++ b/images/emoji/1f468-2764-1f468.png
Binary files differ
diff --git a/images/emoji/1f468-2764-1f48b-1f468.png b/images/emoji/1f468-2764-1f48b-1f468.png
new file mode 100644
index 000000000..a9a0edae1
--- /dev/null
+++ b/images/emoji/1f468-2764-1f48b-1f468.png
Binary files differ
diff --git a/images/emoji/1f468.png b/images/emoji/1f468.png
new file mode 100644
index 000000000..857a02e51
--- /dev/null
+++ b/images/emoji/1f468.png
Binary files differ
diff --git a/images/emoji/1f469-1f3fb.png b/images/emoji/1f469-1f3fb.png
new file mode 100644
index 000000000..ff089b888
--- /dev/null
+++ b/images/emoji/1f469-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f469-1f3fc.png b/images/emoji/1f469-1f3fc.png
new file mode 100644
index 000000000..0719c3780
--- /dev/null
+++ b/images/emoji/1f469-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f469-1f3fd.png b/images/emoji/1f469-1f3fd.png
new file mode 100644
index 000000000..b4d7f21f4
--- /dev/null
+++ b/images/emoji/1f469-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f469-1f3fe.png b/images/emoji/1f469-1f3fe.png
new file mode 100644
index 000000000..6f21d631f
--- /dev/null
+++ b/images/emoji/1f469-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f469-1f3ff.png b/images/emoji/1f469-1f3ff.png
new file mode 100644
index 000000000..cd47bfdd6
--- /dev/null
+++ b/images/emoji/1f469-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f469-1f469-1f466-1f466.png b/images/emoji/1f469-1f469-1f466-1f466.png
new file mode 100644
index 000000000..e3fc2686e
--- /dev/null
+++ b/images/emoji/1f469-1f469-1f466-1f466.png
Binary files differ
diff --git a/images/emoji/1f469-1f469-1f466.png b/images/emoji/1f469-1f469-1f466.png
new file mode 100644
index 000000000..836feae7c
--- /dev/null
+++ b/images/emoji/1f469-1f469-1f466.png
Binary files differ
diff --git a/images/emoji/1f469-1f469-1f467-1f466.png b/images/emoji/1f469-1f469-1f467-1f466.png
new file mode 100644
index 000000000..284d29ab5
--- /dev/null
+++ b/images/emoji/1f469-1f469-1f467-1f466.png
Binary files differ
diff --git a/images/emoji/1f469-1f469-1f467-1f467.png b/images/emoji/1f469-1f469-1f467-1f467.png
new file mode 100644
index 000000000..d8d3f49b8
--- /dev/null
+++ b/images/emoji/1f469-1f469-1f467-1f467.png
Binary files differ
diff --git a/images/emoji/1f469-1f469-1f467.png b/images/emoji/1f469-1f469-1f467.png
new file mode 100644
index 000000000..d8619fa1f
--- /dev/null
+++ b/images/emoji/1f469-1f469-1f467.png
Binary files differ
diff --git a/images/emoji/1f469-2764-1f469.png b/images/emoji/1f469-2764-1f469.png
new file mode 100644
index 000000000..08fdabcdc
--- /dev/null
+++ b/images/emoji/1f469-2764-1f469.png
Binary files differ
diff --git a/images/emoji/1f469-2764-1f48b-1f469.png b/images/emoji/1f469-2764-1f48b-1f469.png
new file mode 100644
index 000000000..4905a5b3e
--- /dev/null
+++ b/images/emoji/1f469-2764-1f48b-1f469.png
Binary files differ
diff --git a/images/emoji/1f469.png b/images/emoji/1f469.png
new file mode 100644
index 000000000..ece440e7a
--- /dev/null
+++ b/images/emoji/1f469.png
Binary files differ
diff --git a/images/emoji/1f46a.png b/images/emoji/1f46a.png
new file mode 100644
index 000000000..0350719a2
--- /dev/null
+++ b/images/emoji/1f46a.png
Binary files differ
diff --git a/images/emoji/1f46b.png b/images/emoji/1f46b.png
new file mode 100644
index 000000000..73f22f0ad
--- /dev/null
+++ b/images/emoji/1f46b.png
Binary files differ
diff --git a/images/emoji/1f46c.png b/images/emoji/1f46c.png
new file mode 100644
index 000000000..a511fda82
--- /dev/null
+++ b/images/emoji/1f46c.png
Binary files differ
diff --git a/images/emoji/1f46d.png b/images/emoji/1f46d.png
new file mode 100644
index 000000000..8623da423
--- /dev/null
+++ b/images/emoji/1f46d.png
Binary files differ
diff --git a/images/emoji/1f46e-1f3fb.png b/images/emoji/1f46e-1f3fb.png
new file mode 100644
index 000000000..6ccba3879
--- /dev/null
+++ b/images/emoji/1f46e-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f46e-1f3fc.png b/images/emoji/1f46e-1f3fc.png
new file mode 100644
index 000000000..7814ea9f5
--- /dev/null
+++ b/images/emoji/1f46e-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f46e-1f3fd.png b/images/emoji/1f46e-1f3fd.png
new file mode 100644
index 000000000..c29f0709b
--- /dev/null
+++ b/images/emoji/1f46e-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f46e-1f3fe.png b/images/emoji/1f46e-1f3fe.png
new file mode 100644
index 000000000..8a009e55e
--- /dev/null
+++ b/images/emoji/1f46e-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f46e-1f3ff.png b/images/emoji/1f46e-1f3ff.png
new file mode 100644
index 000000000..5bdc53c99
--- /dev/null
+++ b/images/emoji/1f46e-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f46e.png b/images/emoji/1f46e.png
new file mode 100644
index 000000000..bd37a787e
--- /dev/null
+++ b/images/emoji/1f46e.png
Binary files differ
diff --git a/images/emoji/1f46f.png b/images/emoji/1f46f.png
new file mode 100644
index 000000000..7a33d199b
--- /dev/null
+++ b/images/emoji/1f46f.png
Binary files differ
diff --git a/images/emoji/1f470-1f3fb.png b/images/emoji/1f470-1f3fb.png
new file mode 100644
index 000000000..c4fb141ae
--- /dev/null
+++ b/images/emoji/1f470-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f470-1f3fc.png b/images/emoji/1f470-1f3fc.png
new file mode 100644
index 000000000..c248769fc
--- /dev/null
+++ b/images/emoji/1f470-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f470-1f3fd.png b/images/emoji/1f470-1f3fd.png
new file mode 100644
index 000000000..962c0a6ee
--- /dev/null
+++ b/images/emoji/1f470-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f470-1f3fe.png b/images/emoji/1f470-1f3fe.png
new file mode 100644
index 000000000..740ca208c
--- /dev/null
+++ b/images/emoji/1f470-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f470-1f3ff.png b/images/emoji/1f470-1f3ff.png
new file mode 100644
index 000000000..5cc559858
--- /dev/null
+++ b/images/emoji/1f470-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f470.png b/images/emoji/1f470.png
new file mode 100644
index 000000000..eaf4bd978
--- /dev/null
+++ b/images/emoji/1f470.png
Binary files differ
diff --git a/images/emoji/1f471-1f3fb.png b/images/emoji/1f471-1f3fb.png
new file mode 100644
index 000000000..7d18ef244
--- /dev/null
+++ b/images/emoji/1f471-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f471-1f3fc.png b/images/emoji/1f471-1f3fc.png
new file mode 100644
index 000000000..dae130731
--- /dev/null
+++ b/images/emoji/1f471-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f471-1f3fd.png b/images/emoji/1f471-1f3fd.png
new file mode 100644
index 000000000..684677e8e
--- /dev/null
+++ b/images/emoji/1f471-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f471-1f3fe.png b/images/emoji/1f471-1f3fe.png
new file mode 100644
index 000000000..012be0b51
--- /dev/null
+++ b/images/emoji/1f471-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f471-1f3ff.png b/images/emoji/1f471-1f3ff.png
new file mode 100644
index 000000000..d4ecc4cf4
--- /dev/null
+++ b/images/emoji/1f471-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f471.png b/images/emoji/1f471.png
new file mode 100644
index 000000000..ad6f01a7d
--- /dev/null
+++ b/images/emoji/1f471.png
Binary files differ
diff --git a/images/emoji/1f472-1f3fb.png b/images/emoji/1f472-1f3fb.png
new file mode 100644
index 000000000..5b7b3def1
--- /dev/null
+++ b/images/emoji/1f472-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f472-1f3fc.png b/images/emoji/1f472-1f3fc.png
new file mode 100644
index 000000000..c8b9cf87f
--- /dev/null
+++ b/images/emoji/1f472-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f472-1f3fd.png b/images/emoji/1f472-1f3fd.png
new file mode 100644
index 000000000..effdd0c4c
--- /dev/null
+++ b/images/emoji/1f472-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f472-1f3fe.png b/images/emoji/1f472-1f3fe.png
new file mode 100644
index 000000000..f885ff46f
--- /dev/null
+++ b/images/emoji/1f472-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f472-1f3ff.png b/images/emoji/1f472-1f3ff.png
new file mode 100644
index 000000000..a6d55ca13
--- /dev/null
+++ b/images/emoji/1f472-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f472.png b/images/emoji/1f472.png
new file mode 100644
index 000000000..7841e1360
--- /dev/null
+++ b/images/emoji/1f472.png
Binary files differ
diff --git a/images/emoji/1f473-1f3fb.png b/images/emoji/1f473-1f3fb.png
new file mode 100644
index 000000000..1e12ee4b2
--- /dev/null
+++ b/images/emoji/1f473-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f473-1f3fc.png b/images/emoji/1f473-1f3fc.png
new file mode 100644
index 000000000..7fe9f01c6
--- /dev/null
+++ b/images/emoji/1f473-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f473-1f3fd.png b/images/emoji/1f473-1f3fd.png
new file mode 100644
index 000000000..f607afd34
--- /dev/null
+++ b/images/emoji/1f473-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f473-1f3fe.png b/images/emoji/1f473-1f3fe.png
new file mode 100644
index 000000000..c05695888
--- /dev/null
+++ b/images/emoji/1f473-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f473-1f3ff.png b/images/emoji/1f473-1f3ff.png
new file mode 100644
index 000000000..df935551c
--- /dev/null
+++ b/images/emoji/1f473-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f473.png b/images/emoji/1f473.png
new file mode 100644
index 000000000..993fd952c
--- /dev/null
+++ b/images/emoji/1f473.png
Binary files differ
diff --git a/images/emoji/1f474-1f3fb.png b/images/emoji/1f474-1f3fb.png
new file mode 100644
index 000000000..cd7d20789
--- /dev/null
+++ b/images/emoji/1f474-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f474-1f3fc.png b/images/emoji/1f474-1f3fc.png
new file mode 100644
index 000000000..3574be8d4
--- /dev/null
+++ b/images/emoji/1f474-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f474-1f3fd.png b/images/emoji/1f474-1f3fd.png
new file mode 100644
index 000000000..bbd95afe0
--- /dev/null
+++ b/images/emoji/1f474-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f474-1f3fe.png b/images/emoji/1f474-1f3fe.png
new file mode 100644
index 000000000..b350a764b
--- /dev/null
+++ b/images/emoji/1f474-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f474-1f3ff.png b/images/emoji/1f474-1f3ff.png
new file mode 100644
index 000000000..05fe24a17
--- /dev/null
+++ b/images/emoji/1f474-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f474.png b/images/emoji/1f474.png
new file mode 100644
index 000000000..5f214571b
--- /dev/null
+++ b/images/emoji/1f474.png
Binary files differ
diff --git a/images/emoji/1f475-1f3fb.png b/images/emoji/1f475-1f3fb.png
new file mode 100644
index 000000000..b49e82140
--- /dev/null
+++ b/images/emoji/1f475-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f475-1f3fc.png b/images/emoji/1f475-1f3fc.png
new file mode 100644
index 000000000..e86bf5ab3
--- /dev/null
+++ b/images/emoji/1f475-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f475-1f3fd.png b/images/emoji/1f475-1f3fd.png
new file mode 100644
index 000000000..83fc14b08
--- /dev/null
+++ b/images/emoji/1f475-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f475-1f3fe.png b/images/emoji/1f475-1f3fe.png
new file mode 100644
index 000000000..ebbf7930f
--- /dev/null
+++ b/images/emoji/1f475-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f475-1f3ff.png b/images/emoji/1f475-1f3ff.png
new file mode 100644
index 000000000..4009012bb
--- /dev/null
+++ b/images/emoji/1f475-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f475.png b/images/emoji/1f475.png
new file mode 100644
index 000000000..52dc49871
--- /dev/null
+++ b/images/emoji/1f475.png
Binary files differ
diff --git a/images/emoji/1f476-1f3fb.png b/images/emoji/1f476-1f3fb.png
new file mode 100644
index 000000000..8c1cada59
--- /dev/null
+++ b/images/emoji/1f476-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f476-1f3fc.png b/images/emoji/1f476-1f3fc.png
new file mode 100644
index 000000000..4ba95bd75
--- /dev/null
+++ b/images/emoji/1f476-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f476-1f3fd.png b/images/emoji/1f476-1f3fd.png
new file mode 100644
index 000000000..f4734c0dc
--- /dev/null
+++ b/images/emoji/1f476-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f476-1f3fe.png b/images/emoji/1f476-1f3fe.png
new file mode 100644
index 000000000..02d864833
--- /dev/null
+++ b/images/emoji/1f476-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f476-1f3ff.png b/images/emoji/1f476-1f3ff.png
new file mode 100644
index 000000000..0653e1603
--- /dev/null
+++ b/images/emoji/1f476-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f476.png b/images/emoji/1f476.png
new file mode 100644
index 000000000..7b28ba891
--- /dev/null
+++ b/images/emoji/1f476.png
Binary files differ
diff --git a/images/emoji/1f477-1f3fb.png b/images/emoji/1f477-1f3fb.png
new file mode 100644
index 000000000..2f24a2bab
--- /dev/null
+++ b/images/emoji/1f477-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f477-1f3fc.png b/images/emoji/1f477-1f3fc.png
new file mode 100644
index 000000000..93c8fec5a
--- /dev/null
+++ b/images/emoji/1f477-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f477-1f3fd.png b/images/emoji/1f477-1f3fd.png
new file mode 100644
index 000000000..abc1f2af2
--- /dev/null
+++ b/images/emoji/1f477-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f477-1f3fe.png b/images/emoji/1f477-1f3fe.png
new file mode 100644
index 000000000..eed83289a
--- /dev/null
+++ b/images/emoji/1f477-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f477-1f3ff.png b/images/emoji/1f477-1f3ff.png
new file mode 100644
index 000000000..acbb220b8
--- /dev/null
+++ b/images/emoji/1f477-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f477.png b/images/emoji/1f477.png
new file mode 100644
index 000000000..a9970a890
--- /dev/null
+++ b/images/emoji/1f477.png
Binary files differ
diff --git a/images/emoji/1f478-1f3fb.png b/images/emoji/1f478-1f3fb.png
new file mode 100644
index 000000000..7e4d850d1
--- /dev/null
+++ b/images/emoji/1f478-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f478-1f3fc.png b/images/emoji/1f478-1f3fc.png
new file mode 100644
index 000000000..8179de403
--- /dev/null
+++ b/images/emoji/1f478-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f478-1f3fd.png b/images/emoji/1f478-1f3fd.png
new file mode 100644
index 000000000..de04809d1
--- /dev/null
+++ b/images/emoji/1f478-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f478-1f3fe.png b/images/emoji/1f478-1f3fe.png
new file mode 100644
index 000000000..c71e69caa
--- /dev/null
+++ b/images/emoji/1f478-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f478-1f3ff.png b/images/emoji/1f478-1f3ff.png
new file mode 100644
index 000000000..063e26459
--- /dev/null
+++ b/images/emoji/1f478-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f478.png b/images/emoji/1f478.png
new file mode 100644
index 000000000..a9958dfff
--- /dev/null
+++ b/images/emoji/1f478.png
Binary files differ
diff --git a/images/emoji/1f479.png b/images/emoji/1f479.png
new file mode 100644
index 000000000..fe8670fda
--- /dev/null
+++ b/images/emoji/1f479.png
Binary files differ
diff --git a/images/emoji/1f47a.png b/images/emoji/1f47a.png
new file mode 100644
index 000000000..e2ffb0c19
--- /dev/null
+++ b/images/emoji/1f47a.png
Binary files differ
diff --git a/images/emoji/1f47b.png b/images/emoji/1f47b.png
new file mode 100644
index 000000000..d22b1ccba
--- /dev/null
+++ b/images/emoji/1f47b.png
Binary files differ
diff --git a/images/emoji/1f47c-1f3fb.png b/images/emoji/1f47c-1f3fb.png
new file mode 100644
index 000000000..391694dc0
--- /dev/null
+++ b/images/emoji/1f47c-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f47c-1f3fc.png b/images/emoji/1f47c-1f3fc.png
new file mode 100644
index 000000000..700cbe6ed
--- /dev/null
+++ b/images/emoji/1f47c-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f47c-1f3fd.png b/images/emoji/1f47c-1f3fd.png
new file mode 100644
index 000000000..be597437d
--- /dev/null
+++ b/images/emoji/1f47c-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f47c-1f3fe.png b/images/emoji/1f47c-1f3fe.png
new file mode 100644
index 000000000..b06d3c853
--- /dev/null
+++ b/images/emoji/1f47c-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f47c-1f3ff.png b/images/emoji/1f47c-1f3ff.png
new file mode 100644
index 000000000..17bd677e3
--- /dev/null
+++ b/images/emoji/1f47c-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f47c.png b/images/emoji/1f47c.png
new file mode 100644
index 000000000..66ea97a3b
--- /dev/null
+++ b/images/emoji/1f47c.png
Binary files differ
diff --git a/images/emoji/1f47d.png b/images/emoji/1f47d.png
new file mode 100644
index 000000000..3b90e9743
--- /dev/null
+++ b/images/emoji/1f47d.png
Binary files differ
diff --git a/images/emoji/1f47e.png b/images/emoji/1f47e.png
new file mode 100644
index 000000000..2e73f5f32
--- /dev/null
+++ b/images/emoji/1f47e.png
Binary files differ
diff --git a/images/emoji/1f47f.png b/images/emoji/1f47f.png
new file mode 100644
index 000000000..83b68e404
--- /dev/null
+++ b/images/emoji/1f47f.png
Binary files differ
diff --git a/images/emoji/1f480.png b/images/emoji/1f480.png
new file mode 100644
index 000000000..26abb1729
--- /dev/null
+++ b/images/emoji/1f480.png
Binary files differ
diff --git a/images/emoji/1f481-1f3fb.png b/images/emoji/1f481-1f3fb.png
new file mode 100644
index 000000000..3d9e22479
--- /dev/null
+++ b/images/emoji/1f481-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f481-1f3fc.png b/images/emoji/1f481-1f3fc.png
new file mode 100644
index 000000000..7853bc60a
--- /dev/null
+++ b/images/emoji/1f481-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f481-1f3fd.png b/images/emoji/1f481-1f3fd.png
new file mode 100644
index 000000000..307514eab
--- /dev/null
+++ b/images/emoji/1f481-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f481-1f3fe.png b/images/emoji/1f481-1f3fe.png
new file mode 100644
index 000000000..95cc7ff36
--- /dev/null
+++ b/images/emoji/1f481-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f481-1f3ff.png b/images/emoji/1f481-1f3ff.png
new file mode 100644
index 000000000..26f8f22b2
--- /dev/null
+++ b/images/emoji/1f481-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f481.png b/images/emoji/1f481.png
new file mode 100644
index 000000000..328cfb316
--- /dev/null
+++ b/images/emoji/1f481.png
Binary files differ
diff --git a/images/emoji/1f482-1f3fb.png b/images/emoji/1f482-1f3fb.png
new file mode 100644
index 000000000..cea9ba274
--- /dev/null
+++ b/images/emoji/1f482-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f482-1f3fc.png b/images/emoji/1f482-1f3fc.png
new file mode 100644
index 000000000..c8c3c6444
--- /dev/null
+++ b/images/emoji/1f482-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f482-1f3fd.png b/images/emoji/1f482-1f3fd.png
new file mode 100644
index 000000000..29d9fc477
--- /dev/null
+++ b/images/emoji/1f482-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f482-1f3fe.png b/images/emoji/1f482-1f3fe.png
new file mode 100644
index 000000000..85fcf9a3b
--- /dev/null
+++ b/images/emoji/1f482-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f482-1f3ff.png b/images/emoji/1f482-1f3ff.png
new file mode 100644
index 000000000..b140a2d23
--- /dev/null
+++ b/images/emoji/1f482-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f482.png b/images/emoji/1f482.png
new file mode 100644
index 000000000..8d7ab3c47
--- /dev/null
+++ b/images/emoji/1f482.png
Binary files differ
diff --git a/images/emoji/1f483-1f3fb.png b/images/emoji/1f483-1f3fb.png
new file mode 100644
index 000000000..27975615e
--- /dev/null
+++ b/images/emoji/1f483-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f483-1f3fc.png b/images/emoji/1f483-1f3fc.png
new file mode 100644
index 000000000..cb04b1f90
--- /dev/null
+++ b/images/emoji/1f483-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f483-1f3fd.png b/images/emoji/1f483-1f3fd.png
new file mode 100644
index 000000000..98c5bca7b
--- /dev/null
+++ b/images/emoji/1f483-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f483-1f3fe.png b/images/emoji/1f483-1f3fe.png
new file mode 100644
index 000000000..fdb1e00cb
--- /dev/null
+++ b/images/emoji/1f483-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f483-1f3ff.png b/images/emoji/1f483-1f3ff.png
new file mode 100644
index 000000000..0e34e0e23
--- /dev/null
+++ b/images/emoji/1f483-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f483.png b/images/emoji/1f483.png
new file mode 100644
index 000000000..d1cdad8dd
--- /dev/null
+++ b/images/emoji/1f483.png
Binary files differ
diff --git a/images/emoji/1f484.png b/images/emoji/1f484.png
new file mode 100644
index 000000000..61a0c084c
--- /dev/null
+++ b/images/emoji/1f484.png
Binary files differ
diff --git a/images/emoji/1f485-1f3fb.png b/images/emoji/1f485-1f3fb.png
new file mode 100644
index 000000000..f1fbfcf52
--- /dev/null
+++ b/images/emoji/1f485-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f485-1f3fc.png b/images/emoji/1f485-1f3fc.png
new file mode 100644
index 000000000..02b836b2f
--- /dev/null
+++ b/images/emoji/1f485-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f485-1f3fd.png b/images/emoji/1f485-1f3fd.png
new file mode 100644
index 000000000..7432e3cf2
--- /dev/null
+++ b/images/emoji/1f485-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f485-1f3fe.png b/images/emoji/1f485-1f3fe.png
new file mode 100644
index 000000000..e4272692c
--- /dev/null
+++ b/images/emoji/1f485-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f485-1f3ff.png b/images/emoji/1f485-1f3ff.png
new file mode 100644
index 000000000..d29e1c553
--- /dev/null
+++ b/images/emoji/1f485-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f485.png b/images/emoji/1f485.png
new file mode 100644
index 000000000..aa52af705
--- /dev/null
+++ b/images/emoji/1f485.png
Binary files differ
diff --git a/images/emoji/1f486-1f3fb.png b/images/emoji/1f486-1f3fb.png
new file mode 100644
index 000000000..f9dea75f3
--- /dev/null
+++ b/images/emoji/1f486-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f486-1f3fc.png b/images/emoji/1f486-1f3fc.png
new file mode 100644
index 000000000..0bb244a27
--- /dev/null
+++ b/images/emoji/1f486-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f486-1f3fd.png b/images/emoji/1f486-1f3fd.png
new file mode 100644
index 000000000..06941c86b
--- /dev/null
+++ b/images/emoji/1f486-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f486-1f3fe.png b/images/emoji/1f486-1f3fe.png
new file mode 100644
index 000000000..671d52310
--- /dev/null
+++ b/images/emoji/1f486-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f486-1f3ff.png b/images/emoji/1f486-1f3ff.png
new file mode 100644
index 000000000..6a388c0d0
--- /dev/null
+++ b/images/emoji/1f486-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f486.png b/images/emoji/1f486.png
new file mode 100644
index 000000000..9ed04ff13
--- /dev/null
+++ b/images/emoji/1f486.png
Binary files differ
diff --git a/images/emoji/1f487-1f3fb.png b/images/emoji/1f487-1f3fb.png
new file mode 100644
index 000000000..c743b74ab
--- /dev/null
+++ b/images/emoji/1f487-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f487-1f3fc.png b/images/emoji/1f487-1f3fc.png
new file mode 100644
index 000000000..dbbddcb34
--- /dev/null
+++ b/images/emoji/1f487-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f487-1f3fd.png b/images/emoji/1f487-1f3fd.png
new file mode 100644
index 000000000..d5ad19563
--- /dev/null
+++ b/images/emoji/1f487-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f487-1f3fe.png b/images/emoji/1f487-1f3fe.png
new file mode 100644
index 000000000..244fd3af0
--- /dev/null
+++ b/images/emoji/1f487-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f487-1f3ff.png b/images/emoji/1f487-1f3ff.png
new file mode 100644
index 000000000..20a94a886
--- /dev/null
+++ b/images/emoji/1f487-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f487.png b/images/emoji/1f487.png
new file mode 100644
index 000000000..91266b129
--- /dev/null
+++ b/images/emoji/1f487.png
Binary files differ
diff --git a/images/emoji/1f488.png b/images/emoji/1f488.png
new file mode 100644
index 000000000..896f4d716
--- /dev/null
+++ b/images/emoji/1f488.png
Binary files differ
diff --git a/images/emoji/1f489.png b/images/emoji/1f489.png
new file mode 100644
index 000000000..71c1a9528
--- /dev/null
+++ b/images/emoji/1f489.png
Binary files differ
diff --git a/images/emoji/1f48a.png b/images/emoji/1f48a.png
new file mode 100644
index 000000000..1d4530e77
--- /dev/null
+++ b/images/emoji/1f48a.png
Binary files differ
diff --git a/images/emoji/1f48b.png b/images/emoji/1f48b.png
new file mode 100644
index 000000000..85e6dcfc4
--- /dev/null
+++ b/images/emoji/1f48b.png
Binary files differ
diff --git a/images/emoji/1f48c.png b/images/emoji/1f48c.png
new file mode 100644
index 000000000..3c3c767e7
--- /dev/null
+++ b/images/emoji/1f48c.png
Binary files differ
diff --git a/images/emoji/1f48d.png b/images/emoji/1f48d.png
new file mode 100644
index 000000000..87d227adb
--- /dev/null
+++ b/images/emoji/1f48d.png
Binary files differ
diff --git a/images/emoji/1f48e.png b/images/emoji/1f48e.png
new file mode 100644
index 000000000..db122d26a
--- /dev/null
+++ b/images/emoji/1f48e.png
Binary files differ
diff --git a/images/emoji/1f48f.png b/images/emoji/1f48f.png
new file mode 100644
index 000000000..9aa519da9
--- /dev/null
+++ b/images/emoji/1f48f.png
Binary files differ
diff --git a/images/emoji/1f490.png b/images/emoji/1f490.png
new file mode 100644
index 000000000..11455af6d
--- /dev/null
+++ b/images/emoji/1f490.png
Binary files differ
diff --git a/images/emoji/1f491.png b/images/emoji/1f491.png
new file mode 100644
index 000000000..62111601b
--- /dev/null
+++ b/images/emoji/1f491.png
Binary files differ
diff --git a/images/emoji/1f492.png b/images/emoji/1f492.png
new file mode 100644
index 000000000..d0d8aa0bf
--- /dev/null
+++ b/images/emoji/1f492.png
Binary files differ
diff --git a/images/emoji/1f493.png b/images/emoji/1f493.png
new file mode 100644
index 000000000..0bcf2d1d5
--- /dev/null
+++ b/images/emoji/1f493.png
Binary files differ
diff --git a/images/emoji/1f494.png b/images/emoji/1f494.png
new file mode 100644
index 000000000..718e26ee1
--- /dev/null
+++ b/images/emoji/1f494.png
Binary files differ
diff --git a/images/emoji/1f495.png b/images/emoji/1f495.png
new file mode 100644
index 000000000..4d8c33860
--- /dev/null
+++ b/images/emoji/1f495.png
Binary files differ
diff --git a/images/emoji/1f496.png b/images/emoji/1f496.png
new file mode 100644
index 000000000..670926945
--- /dev/null
+++ b/images/emoji/1f496.png
Binary files differ
diff --git a/images/emoji/1f497.png b/images/emoji/1f497.png
new file mode 100644
index 000000000..d6e694e97
--- /dev/null
+++ b/images/emoji/1f497.png
Binary files differ
diff --git a/images/emoji/1f498.png b/images/emoji/1f498.png
new file mode 100644
index 000000000..2df0078dd
--- /dev/null
+++ b/images/emoji/1f498.png
Binary files differ
diff --git a/images/emoji/1f499.png b/images/emoji/1f499.png
new file mode 100644
index 000000000..bdf1287e5
--- /dev/null
+++ b/images/emoji/1f499.png
Binary files differ
diff --git a/images/emoji/1f49a.png b/images/emoji/1f49a.png
new file mode 100644
index 000000000..c52d60a58
--- /dev/null
+++ b/images/emoji/1f49a.png
Binary files differ
diff --git a/images/emoji/1f49b.png b/images/emoji/1f49b.png
new file mode 100644
index 000000000..7901a9d01
--- /dev/null
+++ b/images/emoji/1f49b.png
Binary files differ
diff --git a/images/emoji/1f49c.png b/images/emoji/1f49c.png
new file mode 100644
index 000000000..95c53a9ad
--- /dev/null
+++ b/images/emoji/1f49c.png
Binary files differ
diff --git a/images/emoji/1f49d.png b/images/emoji/1f49d.png
new file mode 100644
index 000000000..902ceafe4
--- /dev/null
+++ b/images/emoji/1f49d.png
Binary files differ
diff --git a/images/emoji/1f49e.png b/images/emoji/1f49e.png
new file mode 100644
index 000000000..7b9d1948f
--- /dev/null
+++ b/images/emoji/1f49e.png
Binary files differ
diff --git a/images/emoji/1f49f.png b/images/emoji/1f49f.png
new file mode 100644
index 000000000..5443f60bc
--- /dev/null
+++ b/images/emoji/1f49f.png
Binary files differ
diff --git a/images/emoji/1f4a0.png b/images/emoji/1f4a0.png
new file mode 100644
index 000000000..2a22a26d1
--- /dev/null
+++ b/images/emoji/1f4a0.png
Binary files differ
diff --git a/images/emoji/1f4a1.png b/images/emoji/1f4a1.png
new file mode 100644
index 000000000..38e32e02d
--- /dev/null
+++ b/images/emoji/1f4a1.png
Binary files differ
diff --git a/images/emoji/1f4a2.png b/images/emoji/1f4a2.png
new file mode 100644
index 000000000..d63c2e000
--- /dev/null
+++ b/images/emoji/1f4a2.png
Binary files differ
diff --git a/images/emoji/1f4a3.png b/images/emoji/1f4a3.png
new file mode 100644
index 000000000..c7f8f81c9
--- /dev/null
+++ b/images/emoji/1f4a3.png
Binary files differ
diff --git a/images/emoji/1f4a4.png b/images/emoji/1f4a4.png
new file mode 100644
index 000000000..9bc72b446
--- /dev/null
+++ b/images/emoji/1f4a4.png
Binary files differ
diff --git a/images/emoji/1f4a5.png b/images/emoji/1f4a5.png
new file mode 100644
index 000000000..9b0f027b1
--- /dev/null
+++ b/images/emoji/1f4a5.png
Binary files differ
diff --git a/images/emoji/1f4a6.png b/images/emoji/1f4a6.png
new file mode 100644
index 000000000..4106117eb
--- /dev/null
+++ b/images/emoji/1f4a6.png
Binary files differ
diff --git a/images/emoji/1f4a7.png b/images/emoji/1f4a7.png
new file mode 100644
index 000000000..71241ec30
--- /dev/null
+++ b/images/emoji/1f4a7.png
Binary files differ
diff --git a/images/emoji/1f4a8.png b/images/emoji/1f4a8.png
new file mode 100644
index 000000000..064b8525c
--- /dev/null
+++ b/images/emoji/1f4a8.png
Binary files differ
diff --git a/images/emoji/1f4a9.png b/images/emoji/1f4a9.png
new file mode 100644
index 000000000..10b15e72d
--- /dev/null
+++ b/images/emoji/1f4a9.png
Binary files differ
diff --git a/images/emoji/1f4aa-1f3fb.png b/images/emoji/1f4aa-1f3fb.png
new file mode 100644
index 000000000..1522942ce
--- /dev/null
+++ b/images/emoji/1f4aa-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f4aa-1f3fc.png b/images/emoji/1f4aa-1f3fc.png
new file mode 100644
index 000000000..569c6e832
--- /dev/null
+++ b/images/emoji/1f4aa-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f4aa-1f3fd.png b/images/emoji/1f4aa-1f3fd.png
new file mode 100644
index 000000000..0a76b00fa
--- /dev/null
+++ b/images/emoji/1f4aa-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f4aa-1f3fe.png b/images/emoji/1f4aa-1f3fe.png
new file mode 100644
index 000000000..f0cf31328
--- /dev/null
+++ b/images/emoji/1f4aa-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f4aa-1f3ff.png b/images/emoji/1f4aa-1f3ff.png
new file mode 100644
index 000000000..4fda92460
--- /dev/null
+++ b/images/emoji/1f4aa-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f4aa.png b/images/emoji/1f4aa.png
new file mode 100644
index 000000000..7e67c1880
--- /dev/null
+++ b/images/emoji/1f4aa.png
Binary files differ
diff --git a/images/emoji/1f4ab.png b/images/emoji/1f4ab.png
new file mode 100644
index 000000000..85f52efad
--- /dev/null
+++ b/images/emoji/1f4ab.png
Binary files differ
diff --git a/images/emoji/1f4ac.png b/images/emoji/1f4ac.png
new file mode 100644
index 000000000..a34ef7417
--- /dev/null
+++ b/images/emoji/1f4ac.png
Binary files differ
diff --git a/images/emoji/1f4ad.png b/images/emoji/1f4ad.png
new file mode 100644
index 000000000..72fe8fa70
--- /dev/null
+++ b/images/emoji/1f4ad.png
Binary files differ
diff --git a/images/emoji/1f4ae.png b/images/emoji/1f4ae.png
new file mode 100644
index 000000000..d6af8b600
--- /dev/null
+++ b/images/emoji/1f4ae.png
Binary files differ
diff --git a/images/emoji/1f4af.png b/images/emoji/1f4af.png
new file mode 100644
index 000000000..6903ff030
--- /dev/null
+++ b/images/emoji/1f4af.png
Binary files differ
diff --git a/images/emoji/1f4b0.png b/images/emoji/1f4b0.png
new file mode 100644
index 000000000..b9296be09
--- /dev/null
+++ b/images/emoji/1f4b0.png
Binary files differ
diff --git a/images/emoji/1f4b1.png b/images/emoji/1f4b1.png
new file mode 100644
index 000000000..4d46c6050
--- /dev/null
+++ b/images/emoji/1f4b1.png
Binary files differ
diff --git a/images/emoji/1f4b2.png b/images/emoji/1f4b2.png
new file mode 100644
index 000000000..ef2c2e205
--- /dev/null
+++ b/images/emoji/1f4b2.png
Binary files differ
diff --git a/images/emoji/1f4b3.png b/images/emoji/1f4b3.png
new file mode 100644
index 000000000..372777d5c
--- /dev/null
+++ b/images/emoji/1f4b3.png
Binary files differ
diff --git a/images/emoji/1f4b4.png b/images/emoji/1f4b4.png
new file mode 100644
index 000000000..63ee4799d
--- /dev/null
+++ b/images/emoji/1f4b4.png
Binary files differ
diff --git a/images/emoji/1f4b5.png b/images/emoji/1f4b5.png
new file mode 100644
index 000000000..a9904c282
--- /dev/null
+++ b/images/emoji/1f4b5.png
Binary files differ
diff --git a/images/emoji/1f4b6.png b/images/emoji/1f4b6.png
new file mode 100644
index 000000000..a49020820
--- /dev/null
+++ b/images/emoji/1f4b6.png
Binary files differ
diff --git a/images/emoji/1f4b7.png b/images/emoji/1f4b7.png
new file mode 100644
index 000000000..a0d4c4099
--- /dev/null
+++ b/images/emoji/1f4b7.png
Binary files differ
diff --git a/images/emoji/1f4b8.png b/images/emoji/1f4b8.png
new file mode 100644
index 000000000..f022b04b3
--- /dev/null
+++ b/images/emoji/1f4b8.png
Binary files differ
diff --git a/images/emoji/1f4b9.png b/images/emoji/1f4b9.png
new file mode 100644
index 000000000..9773f03be
--- /dev/null
+++ b/images/emoji/1f4b9.png
Binary files differ
diff --git a/images/emoji/1f4ba.png b/images/emoji/1f4ba.png
new file mode 100644
index 000000000..a6d72d95a
--- /dev/null
+++ b/images/emoji/1f4ba.png
Binary files differ
diff --git a/images/emoji/1f4bb.png b/images/emoji/1f4bb.png
new file mode 100644
index 000000000..c1fee27e3
--- /dev/null
+++ b/images/emoji/1f4bb.png
Binary files differ
diff --git a/images/emoji/1f4bc.png b/images/emoji/1f4bc.png
new file mode 100644
index 000000000..b9912ba21
--- /dev/null
+++ b/images/emoji/1f4bc.png
Binary files differ
diff --git a/images/emoji/1f4bd.png b/images/emoji/1f4bd.png
new file mode 100644
index 000000000..9fa94cfbe
--- /dev/null
+++ b/images/emoji/1f4bd.png
Binary files differ
diff --git a/images/emoji/1f4be.png b/images/emoji/1f4be.png
new file mode 100644
index 000000000..072a76d3c
--- /dev/null
+++ b/images/emoji/1f4be.png
Binary files differ
diff --git a/images/emoji/1f4bf.png b/images/emoji/1f4bf.png
new file mode 100644
index 000000000..e6b01449c
--- /dev/null
+++ b/images/emoji/1f4bf.png
Binary files differ
diff --git a/images/emoji/1f4c0.png b/images/emoji/1f4c0.png
new file mode 100644
index 000000000..045a6f7a0
--- /dev/null
+++ b/images/emoji/1f4c0.png
Binary files differ
diff --git a/images/emoji/1f4c1.png b/images/emoji/1f4c1.png
new file mode 100644
index 000000000..addedaf08
--- /dev/null
+++ b/images/emoji/1f4c1.png
Binary files differ
diff --git a/images/emoji/1f4c2.png b/images/emoji/1f4c2.png
new file mode 100644
index 000000000..3993b0922
--- /dev/null
+++ b/images/emoji/1f4c2.png
Binary files differ
diff --git a/images/emoji/1f4c3.png b/images/emoji/1f4c3.png
new file mode 100644
index 000000000..06355319c
--- /dev/null
+++ b/images/emoji/1f4c3.png
Binary files differ
diff --git a/images/emoji/1f4c4.png b/images/emoji/1f4c4.png
new file mode 100644
index 000000000..ba4ed757e
--- /dev/null
+++ b/images/emoji/1f4c4.png
Binary files differ
diff --git a/images/emoji/1f4c5.png b/images/emoji/1f4c5.png
new file mode 100644
index 000000000..f05b3da97
--- /dev/null
+++ b/images/emoji/1f4c5.png
Binary files differ
diff --git a/images/emoji/1f4c6.png b/images/emoji/1f4c6.png
new file mode 100644
index 000000000..47353b744
--- /dev/null
+++ b/images/emoji/1f4c6.png
Binary files differ
diff --git a/images/emoji/1f4c7.png b/images/emoji/1f4c7.png
new file mode 100644
index 000000000..151e11cb3
--- /dev/null
+++ b/images/emoji/1f4c7.png
Binary files differ
diff --git a/images/emoji/1f4c8.png b/images/emoji/1f4c8.png
new file mode 100644
index 000000000..f13cfcf99
--- /dev/null
+++ b/images/emoji/1f4c8.png
Binary files differ
diff --git a/images/emoji/1f4c9.png b/images/emoji/1f4c9.png
new file mode 100644
index 000000000..5222ec72d
--- /dev/null
+++ b/images/emoji/1f4c9.png
Binary files differ
diff --git a/images/emoji/1f4ca.png b/images/emoji/1f4ca.png
new file mode 100644
index 000000000..53c894550
--- /dev/null
+++ b/images/emoji/1f4ca.png
Binary files differ
diff --git a/images/emoji/1f4cb.png b/images/emoji/1f4cb.png
new file mode 100644
index 000000000..ffd5b315d
--- /dev/null
+++ b/images/emoji/1f4cb.png
Binary files differ
diff --git a/images/emoji/1f4cc.png b/images/emoji/1f4cc.png
new file mode 100644
index 000000000..57e07d7f4
--- /dev/null
+++ b/images/emoji/1f4cc.png
Binary files differ
diff --git a/images/emoji/1f4cd.png b/images/emoji/1f4cd.png
new file mode 100644
index 000000000..28b9d7286
--- /dev/null
+++ b/images/emoji/1f4cd.png
Binary files differ
diff --git a/images/emoji/1f4ce.png b/images/emoji/1f4ce.png
new file mode 100644
index 000000000..8cd8d4f87
--- /dev/null
+++ b/images/emoji/1f4ce.png
Binary files differ
diff --git a/images/emoji/1f4cf.png b/images/emoji/1f4cf.png
new file mode 100644
index 000000000..1017b7433
--- /dev/null
+++ b/images/emoji/1f4cf.png
Binary files differ
diff --git a/images/emoji/1f4d0.png b/images/emoji/1f4d0.png
new file mode 100644
index 000000000..77dee9ee8
--- /dev/null
+++ b/images/emoji/1f4d0.png
Binary files differ
diff --git a/images/emoji/1f4d1.png b/images/emoji/1f4d1.png
new file mode 100644
index 000000000..23a3083ad
--- /dev/null
+++ b/images/emoji/1f4d1.png
Binary files differ
diff --git a/images/emoji/1f4d2.png b/images/emoji/1f4d2.png
new file mode 100644
index 000000000..ef0ea3b1f
--- /dev/null
+++ b/images/emoji/1f4d2.png
Binary files differ
diff --git a/images/emoji/1f4d3.png b/images/emoji/1f4d3.png
new file mode 100644
index 000000000..f6c28b491
--- /dev/null
+++ b/images/emoji/1f4d3.png
Binary files differ
diff --git a/images/emoji/1f4d4.png b/images/emoji/1f4d4.png
new file mode 100644
index 000000000..03f566b6d
--- /dev/null
+++ b/images/emoji/1f4d4.png
Binary files differ
diff --git a/images/emoji/1f4d5.png b/images/emoji/1f4d5.png
new file mode 100644
index 000000000..6395cf215
--- /dev/null
+++ b/images/emoji/1f4d5.png
Binary files differ
diff --git a/images/emoji/1f4d6.png b/images/emoji/1f4d6.png
new file mode 100644
index 000000000..0f4447ed3
--- /dev/null
+++ b/images/emoji/1f4d6.png
Binary files differ
diff --git a/images/emoji/1f4d7.png b/images/emoji/1f4d7.png
new file mode 100644
index 000000000..e5e411cf3
--- /dev/null
+++ b/images/emoji/1f4d7.png
Binary files differ
diff --git a/images/emoji/1f4d8.png b/images/emoji/1f4d8.png
new file mode 100644
index 000000000..d73dfd725
--- /dev/null
+++ b/images/emoji/1f4d8.png
Binary files differ
diff --git a/images/emoji/1f4d9.png b/images/emoji/1f4d9.png
new file mode 100644
index 000000000..ab40e6ae6
--- /dev/null
+++ b/images/emoji/1f4d9.png
Binary files differ
diff --git a/images/emoji/1f4da.png b/images/emoji/1f4da.png
new file mode 100644
index 000000000..59a8bafeb
--- /dev/null
+++ b/images/emoji/1f4da.png
Binary files differ
diff --git a/images/emoji/1f4db.png b/images/emoji/1f4db.png
new file mode 100644
index 000000000..ec5ee213e
--- /dev/null
+++ b/images/emoji/1f4db.png
Binary files differ
diff --git a/images/emoji/1f4dc.png b/images/emoji/1f4dc.png
new file mode 100644
index 000000000..50ee5dcd4
--- /dev/null
+++ b/images/emoji/1f4dc.png
Binary files differ
diff --git a/images/emoji/1f4dd.png b/images/emoji/1f4dd.png
new file mode 100644
index 000000000..9e44f60f4
--- /dev/null
+++ b/images/emoji/1f4dd.png
Binary files differ
diff --git a/images/emoji/1f4de.png b/images/emoji/1f4de.png
new file mode 100644
index 000000000..69388316c
--- /dev/null
+++ b/images/emoji/1f4de.png
Binary files differ
diff --git a/images/emoji/1f4df.png b/images/emoji/1f4df.png
new file mode 100644
index 000000000..b24b99306
--- /dev/null
+++ b/images/emoji/1f4df.png
Binary files differ
diff --git a/images/emoji/1f4e0.png b/images/emoji/1f4e0.png
new file mode 100644
index 000000000..6f929e294
--- /dev/null
+++ b/images/emoji/1f4e0.png
Binary files differ
diff --git a/images/emoji/1f4e1.png b/images/emoji/1f4e1.png
new file mode 100644
index 000000000..db0372795
--- /dev/null
+++ b/images/emoji/1f4e1.png
Binary files differ
diff --git a/images/emoji/1f4e2.png b/images/emoji/1f4e2.png
new file mode 100644
index 000000000..5fd76a95b
--- /dev/null
+++ b/images/emoji/1f4e2.png
Binary files differ
diff --git a/images/emoji/1f4e3.png b/images/emoji/1f4e3.png
new file mode 100644
index 000000000..4e6735188
--- /dev/null
+++ b/images/emoji/1f4e3.png
Binary files differ
diff --git a/images/emoji/1f4e4.png b/images/emoji/1f4e4.png
new file mode 100644
index 000000000..46493ed5b
--- /dev/null
+++ b/images/emoji/1f4e4.png
Binary files differ
diff --git a/images/emoji/1f4e5.png b/images/emoji/1f4e5.png
new file mode 100644
index 000000000..41a6be2b0
--- /dev/null
+++ b/images/emoji/1f4e5.png
Binary files differ
diff --git a/images/emoji/1f4e6.png b/images/emoji/1f4e6.png
new file mode 100644
index 000000000..85431756a
--- /dev/null
+++ b/images/emoji/1f4e6.png
Binary files differ
diff --git a/images/emoji/1f4e7.png b/images/emoji/1f4e7.png
new file mode 100644
index 000000000..d22e654a2
--- /dev/null
+++ b/images/emoji/1f4e7.png
Binary files differ
diff --git a/images/emoji/1f4e8.png b/images/emoji/1f4e8.png
new file mode 100644
index 000000000..fd22e8818
--- /dev/null
+++ b/images/emoji/1f4e8.png
Binary files differ
diff --git a/images/emoji/1f4e9.png b/images/emoji/1f4e9.png
new file mode 100644
index 000000000..7448a6b76
--- /dev/null
+++ b/images/emoji/1f4e9.png
Binary files differ
diff --git a/images/emoji/1f4ea.png b/images/emoji/1f4ea.png
new file mode 100644
index 000000000..ddc705db0
--- /dev/null
+++ b/images/emoji/1f4ea.png
Binary files differ
diff --git a/images/emoji/1f4eb.png b/images/emoji/1f4eb.png
new file mode 100644
index 000000000..ef5174e40
--- /dev/null
+++ b/images/emoji/1f4eb.png
Binary files differ
diff --git a/images/emoji/1f4ec.png b/images/emoji/1f4ec.png
new file mode 100644
index 000000000..5460616a5
--- /dev/null
+++ b/images/emoji/1f4ec.png
Binary files differ
diff --git a/images/emoji/1f4ed.png b/images/emoji/1f4ed.png
new file mode 100644
index 000000000..f9aeee6b1
--- /dev/null
+++ b/images/emoji/1f4ed.png
Binary files differ
diff --git a/images/emoji/1f4ee.png b/images/emoji/1f4ee.png
new file mode 100644
index 000000000..07c9c4ab3
--- /dev/null
+++ b/images/emoji/1f4ee.png
Binary files differ
diff --git a/images/emoji/1f4ef.png b/images/emoji/1f4ef.png
new file mode 100644
index 000000000..c173b8dbd
--- /dev/null
+++ b/images/emoji/1f4ef.png
Binary files differ
diff --git a/images/emoji/1f4f0.png b/images/emoji/1f4f0.png
new file mode 100644
index 000000000..2aa8f060b
--- /dev/null
+++ b/images/emoji/1f4f0.png
Binary files differ
diff --git a/images/emoji/1f4f1.png b/images/emoji/1f4f1.png
new file mode 100644
index 000000000..fd377acf8
--- /dev/null
+++ b/images/emoji/1f4f1.png
Binary files differ
diff --git a/images/emoji/1f4f2.png b/images/emoji/1f4f2.png
new file mode 100644
index 000000000..e2f308f8e
--- /dev/null
+++ b/images/emoji/1f4f2.png
Binary files differ
diff --git a/images/emoji/1f4f3.png b/images/emoji/1f4f3.png
new file mode 100644
index 000000000..cc46510e4
--- /dev/null
+++ b/images/emoji/1f4f3.png
Binary files differ
diff --git a/images/emoji/1f4f4.png b/images/emoji/1f4f4.png
new file mode 100644
index 000000000..8b661ec1c
--- /dev/null
+++ b/images/emoji/1f4f4.png
Binary files differ
diff --git a/images/emoji/1f4f5.png b/images/emoji/1f4f5.png
new file mode 100644
index 000000000..7b1ae6ea5
--- /dev/null
+++ b/images/emoji/1f4f5.png
Binary files differ
diff --git a/images/emoji/1f4f6.png b/images/emoji/1f4f6.png
new file mode 100644
index 000000000..ee2b5a4b5
--- /dev/null
+++ b/images/emoji/1f4f6.png
Binary files differ
diff --git a/images/emoji/1f4f7.png b/images/emoji/1f4f7.png
new file mode 100644
index 000000000..0a3429f72
--- /dev/null
+++ b/images/emoji/1f4f7.png
Binary files differ
diff --git a/images/emoji/1f4f8.png b/images/emoji/1f4f8.png
new file mode 100644
index 000000000..27471da20
--- /dev/null
+++ b/images/emoji/1f4f8.png
Binary files differ
diff --git a/images/emoji/1f4f9.png b/images/emoji/1f4f9.png
new file mode 100644
index 000000000..8008d1414
--- /dev/null
+++ b/images/emoji/1f4f9.png
Binary files differ
diff --git a/images/emoji/1f4fa.png b/images/emoji/1f4fa.png
new file mode 100644
index 000000000..999f1fb5c
--- /dev/null
+++ b/images/emoji/1f4fa.png
Binary files differ
diff --git a/images/emoji/1f4fb.png b/images/emoji/1f4fb.png
new file mode 100644
index 000000000..dec381fa2
--- /dev/null
+++ b/images/emoji/1f4fb.png
Binary files differ
diff --git a/images/emoji/1f4fc.png b/images/emoji/1f4fc.png
new file mode 100644
index 000000000..b9eb78ecd
--- /dev/null
+++ b/images/emoji/1f4fc.png
Binary files differ
diff --git a/images/emoji/1f4fd.png b/images/emoji/1f4fd.png
new file mode 100644
index 000000000..ce9ab0daa
--- /dev/null
+++ b/images/emoji/1f4fd.png
Binary files differ
diff --git a/images/emoji/1f4ff.png b/images/emoji/1f4ff.png
new file mode 100644
index 000000000..a4b6dfcc6
--- /dev/null
+++ b/images/emoji/1f4ff.png
Binary files differ
diff --git a/images/emoji/1f500.png b/images/emoji/1f500.png
new file mode 100644
index 000000000..5904badde
--- /dev/null
+++ b/images/emoji/1f500.png
Binary files differ
diff --git a/images/emoji/1f501.png b/images/emoji/1f501.png
new file mode 100644
index 000000000..540ce4e0f
--- /dev/null
+++ b/images/emoji/1f501.png
Binary files differ
diff --git a/images/emoji/1f502.png b/images/emoji/1f502.png
new file mode 100644
index 000000000..9567e8333
--- /dev/null
+++ b/images/emoji/1f502.png
Binary files differ
diff --git a/images/emoji/1f503.png b/images/emoji/1f503.png
new file mode 100644
index 000000000..26e49c383
--- /dev/null
+++ b/images/emoji/1f503.png
Binary files differ
diff --git a/images/emoji/1f504.png b/images/emoji/1f504.png
new file mode 100644
index 000000000..8d06d8e09
--- /dev/null
+++ b/images/emoji/1f504.png
Binary files differ
diff --git a/images/emoji/1f505.png b/images/emoji/1f505.png
new file mode 100644
index 000000000..543011d39
--- /dev/null
+++ b/images/emoji/1f505.png
Binary files differ
diff --git a/images/emoji/1f506.png b/images/emoji/1f506.png
new file mode 100644
index 000000000..c41f2d5fd
--- /dev/null
+++ b/images/emoji/1f506.png
Binary files differ
diff --git a/images/emoji/1f507.png b/images/emoji/1f507.png
new file mode 100644
index 000000000..7c1788e50
--- /dev/null
+++ b/images/emoji/1f507.png
Binary files differ
diff --git a/images/emoji/1f508.png b/images/emoji/1f508.png
new file mode 100644
index 000000000..7bcffb8fc
--- /dev/null
+++ b/images/emoji/1f508.png
Binary files differ
diff --git a/images/emoji/1f509.png b/images/emoji/1f509.png
new file mode 100644
index 000000000..e75ddca53
--- /dev/null
+++ b/images/emoji/1f509.png
Binary files differ
diff --git a/images/emoji/1f50a.png b/images/emoji/1f50a.png
new file mode 100644
index 000000000..8370033a5
--- /dev/null
+++ b/images/emoji/1f50a.png
Binary files differ
diff --git a/images/emoji/1f50b.png b/images/emoji/1f50b.png
new file mode 100644
index 000000000..f593e2bdb
--- /dev/null
+++ b/images/emoji/1f50b.png
Binary files differ
diff --git a/images/emoji/1f50c.png b/images/emoji/1f50c.png
new file mode 100644
index 000000000..31d1eb215
--- /dev/null
+++ b/images/emoji/1f50c.png
Binary files differ
diff --git a/images/emoji/1f50d.png b/images/emoji/1f50d.png
new file mode 100644
index 000000000..55487156a
--- /dev/null
+++ b/images/emoji/1f50d.png
Binary files differ
diff --git a/images/emoji/1f50e.png b/images/emoji/1f50e.png
new file mode 100644
index 000000000..0f4b1bca8
--- /dev/null
+++ b/images/emoji/1f50e.png
Binary files differ
diff --git a/images/emoji/1f50f.png b/images/emoji/1f50f.png
new file mode 100644
index 000000000..19a07d162
--- /dev/null
+++ b/images/emoji/1f50f.png
Binary files differ
diff --git a/images/emoji/1f510.png b/images/emoji/1f510.png
new file mode 100644
index 000000000..1c1cd5d07
--- /dev/null
+++ b/images/emoji/1f510.png
Binary files differ
diff --git a/images/emoji/1f511.png b/images/emoji/1f511.png
new file mode 100644
index 000000000..319cd1b88
--- /dev/null
+++ b/images/emoji/1f511.png
Binary files differ
diff --git a/images/emoji/1f512.png b/images/emoji/1f512.png
new file mode 100644
index 000000000..5a739c466
--- /dev/null
+++ b/images/emoji/1f512.png
Binary files differ
diff --git a/images/emoji/1f513.png b/images/emoji/1f513.png
new file mode 100644
index 000000000..4a74a6939
--- /dev/null
+++ b/images/emoji/1f513.png
Binary files differ
diff --git a/images/emoji/1f514.png b/images/emoji/1f514.png
new file mode 100644
index 000000000..776f4fdd0
--- /dev/null
+++ b/images/emoji/1f514.png
Binary files differ
diff --git a/images/emoji/1f515.png b/images/emoji/1f515.png
new file mode 100644
index 000000000..15cb38dd1
--- /dev/null
+++ b/images/emoji/1f515.png
Binary files differ
diff --git a/images/emoji/1f516.png b/images/emoji/1f516.png
new file mode 100644
index 000000000..bbb444611
--- /dev/null
+++ b/images/emoji/1f516.png
Binary files differ
diff --git a/images/emoji/1f517.png b/images/emoji/1f517.png
new file mode 100644
index 000000000..ae20f0f8e
--- /dev/null
+++ b/images/emoji/1f517.png
Binary files differ
diff --git a/images/emoji/1f518.png b/images/emoji/1f518.png
new file mode 100644
index 000000000..3a23449d9
--- /dev/null
+++ b/images/emoji/1f518.png
Binary files differ
diff --git a/images/emoji/1f519.png b/images/emoji/1f519.png
new file mode 100644
index 000000000..d32c5d4f1
--- /dev/null
+++ b/images/emoji/1f519.png
Binary files differ
diff --git a/images/emoji/1f51a.png b/images/emoji/1f51a.png
new file mode 100644
index 000000000..ef3ccd5f3
--- /dev/null
+++ b/images/emoji/1f51a.png
Binary files differ
diff --git a/images/emoji/1f51b.png b/images/emoji/1f51b.png
new file mode 100644
index 000000000..a0c371ae2
--- /dev/null
+++ b/images/emoji/1f51b.png
Binary files differ
diff --git a/images/emoji/1f51c.png b/images/emoji/1f51c.png
new file mode 100644
index 000000000..8cdfd8669
--- /dev/null
+++ b/images/emoji/1f51c.png
Binary files differ
diff --git a/images/emoji/1f51d.png b/images/emoji/1f51d.png
new file mode 100644
index 000000000..49dea8c08
--- /dev/null
+++ b/images/emoji/1f51d.png
Binary files differ
diff --git a/images/emoji/1f51e.png b/images/emoji/1f51e.png
new file mode 100644
index 000000000..6dfe6da51
--- /dev/null
+++ b/images/emoji/1f51e.png
Binary files differ
diff --git a/images/emoji/1f51f.png b/images/emoji/1f51f.png
new file mode 100644
index 000000000..782d40049
--- /dev/null
+++ b/images/emoji/1f51f.png
Binary files differ
diff --git a/images/emoji/1f520.png b/images/emoji/1f520.png
new file mode 100644
index 000000000..fe9482d2d
--- /dev/null
+++ b/images/emoji/1f520.png
Binary files differ
diff --git a/images/emoji/1f521.png b/images/emoji/1f521.png
new file mode 100644
index 000000000..0996a8705
--- /dev/null
+++ b/images/emoji/1f521.png
Binary files differ
diff --git a/images/emoji/1f522.png b/images/emoji/1f522.png
new file mode 100644
index 000000000..248dc7e55
--- /dev/null
+++ b/images/emoji/1f522.png
Binary files differ
diff --git a/images/emoji/1f523.png b/images/emoji/1f523.png
new file mode 100644
index 000000000..ac2fc1f35
--- /dev/null
+++ b/images/emoji/1f523.png
Binary files differ
diff --git a/images/emoji/1f524.png b/images/emoji/1f524.png
new file mode 100644
index 000000000..7688de692
--- /dev/null
+++ b/images/emoji/1f524.png
Binary files differ
diff --git a/images/emoji/1f525.png b/images/emoji/1f525.png
new file mode 100644
index 000000000..bd3775a46
--- /dev/null
+++ b/images/emoji/1f525.png
Binary files differ
diff --git a/images/emoji/1f526.png b/images/emoji/1f526.png
new file mode 100644
index 000000000..eee36c250
--- /dev/null
+++ b/images/emoji/1f526.png
Binary files differ
diff --git a/images/emoji/1f527.png b/images/emoji/1f527.png
new file mode 100644
index 000000000..c16b74396
--- /dev/null
+++ b/images/emoji/1f527.png
Binary files differ
diff --git a/images/emoji/1f528.png b/images/emoji/1f528.png
new file mode 100644
index 000000000..00736cce4
--- /dev/null
+++ b/images/emoji/1f528.png
Binary files differ
diff --git a/images/emoji/1f529.png b/images/emoji/1f529.png
new file mode 100644
index 000000000..4b9ae1553
--- /dev/null
+++ b/images/emoji/1f529.png
Binary files differ
diff --git a/images/emoji/1f52a.png b/images/emoji/1f52a.png
new file mode 100644
index 000000000..1acb9f307
--- /dev/null
+++ b/images/emoji/1f52a.png
Binary files differ
diff --git a/images/emoji/1f52b.png b/images/emoji/1f52b.png
new file mode 100644
index 000000000..89c5c244c
--- /dev/null
+++ b/images/emoji/1f52b.png
Binary files differ
diff --git a/images/emoji/1f52c.png b/images/emoji/1f52c.png
new file mode 100644
index 000000000..90f5acf6a
--- /dev/null
+++ b/images/emoji/1f52c.png
Binary files differ
diff --git a/images/emoji/1f52d.png b/images/emoji/1f52d.png
new file mode 100644
index 000000000..d63154614
--- /dev/null
+++ b/images/emoji/1f52d.png
Binary files differ
diff --git a/images/emoji/1f52e.png b/images/emoji/1f52e.png
new file mode 100644
index 000000000..54334c18b
--- /dev/null
+++ b/images/emoji/1f52e.png
Binary files differ
diff --git a/images/emoji/1f52f.png b/images/emoji/1f52f.png
new file mode 100644
index 000000000..2eb170745
--- /dev/null
+++ b/images/emoji/1f52f.png
Binary files differ
diff --git a/images/emoji/1f530.png b/images/emoji/1f530.png
new file mode 100644
index 000000000..bc434fb7c
--- /dev/null
+++ b/images/emoji/1f530.png
Binary files differ
diff --git a/images/emoji/1f531.png b/images/emoji/1f531.png
new file mode 100644
index 000000000..777a1dad1
--- /dev/null
+++ b/images/emoji/1f531.png
Binary files differ
diff --git a/images/emoji/1f532.png b/images/emoji/1f532.png
new file mode 100644
index 000000000..a78fc2f6b
--- /dev/null
+++ b/images/emoji/1f532.png
Binary files differ
diff --git a/images/emoji/1f533.png b/images/emoji/1f533.png
new file mode 100644
index 000000000..934b1cedf
--- /dev/null
+++ b/images/emoji/1f533.png
Binary files differ
diff --git a/images/emoji/1f534.png b/images/emoji/1f534.png
new file mode 100644
index 000000000..4bef930d9
--- /dev/null
+++ b/images/emoji/1f534.png
Binary files differ
diff --git a/images/emoji/1f535.png b/images/emoji/1f535.png
new file mode 100644
index 000000000..84078ef31
--- /dev/null
+++ b/images/emoji/1f535.png
Binary files differ
diff --git a/images/emoji/1f536.png b/images/emoji/1f536.png
new file mode 100644
index 000000000..73ff0ac36
--- /dev/null
+++ b/images/emoji/1f536.png
Binary files differ
diff --git a/images/emoji/1f537.png b/images/emoji/1f537.png
new file mode 100644
index 000000000..416a58bd5
--- /dev/null
+++ b/images/emoji/1f537.png
Binary files differ
diff --git a/images/emoji/1f538.png b/images/emoji/1f538.png
new file mode 100644
index 000000000..e1c6ed9b2
--- /dev/null
+++ b/images/emoji/1f538.png
Binary files differ
diff --git a/images/emoji/1f539.png b/images/emoji/1f539.png
new file mode 100644
index 000000000..b86b5bc4d
--- /dev/null
+++ b/images/emoji/1f539.png
Binary files differ
diff --git a/images/emoji/1f53a.png b/images/emoji/1f53a.png
new file mode 100644
index 000000000..785887c19
--- /dev/null
+++ b/images/emoji/1f53a.png
Binary files differ
diff --git a/images/emoji/1f53b.png b/images/emoji/1f53b.png
new file mode 100644
index 000000000..a83beff19
--- /dev/null
+++ b/images/emoji/1f53b.png
Binary files differ
diff --git a/images/emoji/1f53c.png b/images/emoji/1f53c.png
new file mode 100644
index 000000000..20a13dcd5
--- /dev/null
+++ b/images/emoji/1f53c.png
Binary files differ
diff --git a/images/emoji/1f53d.png b/images/emoji/1f53d.png
new file mode 100644
index 000000000..5870b9a22
--- /dev/null
+++ b/images/emoji/1f53d.png
Binary files differ
diff --git a/images/emoji/1f549.png b/images/emoji/1f549.png
new file mode 100644
index 000000000..a35c63c45
--- /dev/null
+++ b/images/emoji/1f549.png
Binary files differ
diff --git a/images/emoji/1f54a.png b/images/emoji/1f54a.png
new file mode 100644
index 000000000..9580c4917
--- /dev/null
+++ b/images/emoji/1f54a.png
Binary files differ
diff --git a/images/emoji/1f54b.png b/images/emoji/1f54b.png
new file mode 100644
index 000000000..1778c1138
--- /dev/null
+++ b/images/emoji/1f54b.png
Binary files differ
diff --git a/images/emoji/1f54c.png b/images/emoji/1f54c.png
new file mode 100644
index 000000000..ef770b26d
--- /dev/null
+++ b/images/emoji/1f54c.png
Binary files differ
diff --git a/images/emoji/1f54d.png b/images/emoji/1f54d.png
new file mode 100644
index 000000000..ee347904c
--- /dev/null
+++ b/images/emoji/1f54d.png
Binary files differ
diff --git a/images/emoji/1f54e.png b/images/emoji/1f54e.png
new file mode 100644
index 000000000..b42973628
--- /dev/null
+++ b/images/emoji/1f54e.png
Binary files differ
diff --git a/images/emoji/1f550.png b/images/emoji/1f550.png
new file mode 100644
index 000000000..d6e34941f
--- /dev/null
+++ b/images/emoji/1f550.png
Binary files differ
diff --git a/images/emoji/1f551.png b/images/emoji/1f551.png
new file mode 100644
index 000000000..a54253d7d
--- /dev/null
+++ b/images/emoji/1f551.png
Binary files differ
diff --git a/images/emoji/1f552.png b/images/emoji/1f552.png
new file mode 100644
index 000000000..27ec4b1f5
--- /dev/null
+++ b/images/emoji/1f552.png
Binary files differ
diff --git a/images/emoji/1f553.png b/images/emoji/1f553.png
new file mode 100644
index 000000000..60a1ef4cc
--- /dev/null
+++ b/images/emoji/1f553.png
Binary files differ
diff --git a/images/emoji/1f554.png b/images/emoji/1f554.png
new file mode 100644
index 000000000..c9382d1e0
--- /dev/null
+++ b/images/emoji/1f554.png
Binary files differ
diff --git a/images/emoji/1f555.png b/images/emoji/1f555.png
new file mode 100644
index 000000000..8fd5d3f5b
--- /dev/null
+++ b/images/emoji/1f555.png
Binary files differ
diff --git a/images/emoji/1f556.png b/images/emoji/1f556.png
new file mode 100644
index 000000000..8c7084036
--- /dev/null
+++ b/images/emoji/1f556.png
Binary files differ
diff --git a/images/emoji/1f557.png b/images/emoji/1f557.png
new file mode 100644
index 000000000..fcddf722e
--- /dev/null
+++ b/images/emoji/1f557.png
Binary files differ
diff --git a/images/emoji/1f558.png b/images/emoji/1f558.png
new file mode 100644
index 000000000..dfbe01179
--- /dev/null
+++ b/images/emoji/1f558.png
Binary files differ
diff --git a/images/emoji/1f559.png b/images/emoji/1f559.png
new file mode 100644
index 000000000..e62b245cd
--- /dev/null
+++ b/images/emoji/1f559.png
Binary files differ
diff --git a/images/emoji/1f55a.png b/images/emoji/1f55a.png
new file mode 100644
index 000000000..098334527
--- /dev/null
+++ b/images/emoji/1f55a.png
Binary files differ
diff --git a/images/emoji/1f55b.png b/images/emoji/1f55b.png
new file mode 100644
index 000000000..e61caa4b3
--- /dev/null
+++ b/images/emoji/1f55b.png
Binary files differ
diff --git a/images/emoji/1f55c.png b/images/emoji/1f55c.png
new file mode 100644
index 000000000..86b7689b8
--- /dev/null
+++ b/images/emoji/1f55c.png
Binary files differ
diff --git a/images/emoji/1f55d.png b/images/emoji/1f55d.png
new file mode 100644
index 000000000..7a787e018
--- /dev/null
+++ b/images/emoji/1f55d.png
Binary files differ
diff --git a/images/emoji/1f55e.png b/images/emoji/1f55e.png
new file mode 100644
index 000000000..c6860395c
--- /dev/null
+++ b/images/emoji/1f55e.png
Binary files differ
diff --git a/images/emoji/1f55f.png b/images/emoji/1f55f.png
new file mode 100644
index 000000000..3c05b3621
--- /dev/null
+++ b/images/emoji/1f55f.png
Binary files differ
diff --git a/images/emoji/1f560.png b/images/emoji/1f560.png
new file mode 100644
index 000000000..c21fa926d
--- /dev/null
+++ b/images/emoji/1f560.png
Binary files differ
diff --git a/images/emoji/1f561.png b/images/emoji/1f561.png
new file mode 100644
index 000000000..2aec87fef
--- /dev/null
+++ b/images/emoji/1f561.png
Binary files differ
diff --git a/images/emoji/1f562.png b/images/emoji/1f562.png
new file mode 100644
index 000000000..f7a1135e0
--- /dev/null
+++ b/images/emoji/1f562.png
Binary files differ
diff --git a/images/emoji/1f563.png b/images/emoji/1f563.png
new file mode 100644
index 000000000..799b4aebc
--- /dev/null
+++ b/images/emoji/1f563.png
Binary files differ
diff --git a/images/emoji/1f564.png b/images/emoji/1f564.png
new file mode 100644
index 000000000..4a2092ee6
--- /dev/null
+++ b/images/emoji/1f564.png
Binary files differ
diff --git a/images/emoji/1f565.png b/images/emoji/1f565.png
new file mode 100644
index 000000000..0802b3c65
--- /dev/null
+++ b/images/emoji/1f565.png
Binary files differ
diff --git a/images/emoji/1f566.png b/images/emoji/1f566.png
new file mode 100644
index 000000000..d970d03b8
--- /dev/null
+++ b/images/emoji/1f566.png
Binary files differ
diff --git a/images/emoji/1f567.png b/images/emoji/1f567.png
new file mode 100644
index 000000000..f2b1d2617
--- /dev/null
+++ b/images/emoji/1f567.png
Binary files differ
diff --git a/images/emoji/1f56f.png b/images/emoji/1f56f.png
new file mode 100644
index 000000000..0b56444e3
--- /dev/null
+++ b/images/emoji/1f56f.png
Binary files differ
diff --git a/images/emoji/1f570.png b/images/emoji/1f570.png
new file mode 100644
index 000000000..ffdb451e3
--- /dev/null
+++ b/images/emoji/1f570.png
Binary files differ
diff --git a/images/emoji/1f573.png b/images/emoji/1f573.png
new file mode 100644
index 000000000..517d2ae0d
--- /dev/null
+++ b/images/emoji/1f573.png
Binary files differ
diff --git a/images/emoji/1f574.png b/images/emoji/1f574.png
new file mode 100644
index 000000000..3dc315a3d
--- /dev/null
+++ b/images/emoji/1f574.png
Binary files differ
diff --git a/images/emoji/1f575-1f3fb.png b/images/emoji/1f575-1f3fb.png
new file mode 100644
index 000000000..2d1c022ca
--- /dev/null
+++ b/images/emoji/1f575-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f575-1f3fc.png b/images/emoji/1f575-1f3fc.png
new file mode 100644
index 000000000..13e01ad93
--- /dev/null
+++ b/images/emoji/1f575-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f575-1f3fd.png b/images/emoji/1f575-1f3fd.png
new file mode 100644
index 000000000..a814dca2e
--- /dev/null
+++ b/images/emoji/1f575-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f575-1f3fe.png b/images/emoji/1f575-1f3fe.png
new file mode 100644
index 000000000..d8300af49
--- /dev/null
+++ b/images/emoji/1f575-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f575-1f3ff.png b/images/emoji/1f575-1f3ff.png
new file mode 100644
index 000000000..ca1462595
--- /dev/null
+++ b/images/emoji/1f575-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f575.png b/images/emoji/1f575.png
new file mode 100644
index 000000000..a729e9584
--- /dev/null
+++ b/images/emoji/1f575.png
Binary files differ
diff --git a/images/emoji/1f576.png b/images/emoji/1f576.png
new file mode 100644
index 000000000..b1b6db0ac
--- /dev/null
+++ b/images/emoji/1f576.png
Binary files differ
diff --git a/images/emoji/1f577.png b/images/emoji/1f577.png
new file mode 100644
index 000000000..3849fa90b
--- /dev/null
+++ b/images/emoji/1f577.png
Binary files differ
diff --git a/images/emoji/1f578.png b/images/emoji/1f578.png
new file mode 100644
index 000000000..ba448ee7f
--- /dev/null
+++ b/images/emoji/1f578.png
Binary files differ
diff --git a/images/emoji/1f579.png b/images/emoji/1f579.png
new file mode 100644
index 000000000..1ee190543
--- /dev/null
+++ b/images/emoji/1f579.png
Binary files differ
diff --git a/images/emoji/1f57a-1f3fb.png b/images/emoji/1f57a-1f3fb.png
new file mode 100644
index 000000000..e0b9f82d9
--- /dev/null
+++ b/images/emoji/1f57a-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f57a-1f3fc.png b/images/emoji/1f57a-1f3fc.png
new file mode 100644
index 000000000..a5beed56e
--- /dev/null
+++ b/images/emoji/1f57a-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f57a-1f3fd.png b/images/emoji/1f57a-1f3fd.png
new file mode 100644
index 000000000..2fa20180a
--- /dev/null
+++ b/images/emoji/1f57a-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f57a-1f3fe.png b/images/emoji/1f57a-1f3fe.png
new file mode 100644
index 000000000..bd3528c83
--- /dev/null
+++ b/images/emoji/1f57a-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f57a-1f3ff.png b/images/emoji/1f57a-1f3ff.png
new file mode 100644
index 000000000..41fd4f880
--- /dev/null
+++ b/images/emoji/1f57a-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f57a.png b/images/emoji/1f57a.png
new file mode 100644
index 000000000..ccff3bede
--- /dev/null
+++ b/images/emoji/1f57a.png
Binary files differ
diff --git a/images/emoji/1f587.png b/images/emoji/1f587.png
new file mode 100644
index 000000000..76021e8c7
--- /dev/null
+++ b/images/emoji/1f587.png
Binary files differ
diff --git a/images/emoji/1f58a.png b/images/emoji/1f58a.png
new file mode 100644
index 000000000..6ef7a3424
--- /dev/null
+++ b/images/emoji/1f58a.png
Binary files differ
diff --git a/images/emoji/1f58b.png b/images/emoji/1f58b.png
new file mode 100644
index 000000000..3ca4bd2c2
--- /dev/null
+++ b/images/emoji/1f58b.png
Binary files differ
diff --git a/images/emoji/1f58c.png b/images/emoji/1f58c.png
new file mode 100644
index 000000000..28bffbaa3
--- /dev/null
+++ b/images/emoji/1f58c.png
Binary files differ
diff --git a/images/emoji/1f58d.png b/images/emoji/1f58d.png
new file mode 100644
index 000000000..8d7b427aa
--- /dev/null
+++ b/images/emoji/1f58d.png
Binary files differ
diff --git a/images/emoji/1f590-1f3fb.png b/images/emoji/1f590-1f3fb.png
new file mode 100644
index 000000000..a7888e6bd
--- /dev/null
+++ b/images/emoji/1f590-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f590-1f3fc.png b/images/emoji/1f590-1f3fc.png
new file mode 100644
index 000000000..cc10fbc27
--- /dev/null
+++ b/images/emoji/1f590-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f590-1f3fd.png b/images/emoji/1f590-1f3fd.png
new file mode 100644
index 000000000..707236ae8
--- /dev/null
+++ b/images/emoji/1f590-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f590-1f3fe.png b/images/emoji/1f590-1f3fe.png
new file mode 100644
index 000000000..1430df9c6
--- /dev/null
+++ b/images/emoji/1f590-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f590-1f3ff.png b/images/emoji/1f590-1f3ff.png
new file mode 100644
index 000000000..80bec971b
--- /dev/null
+++ b/images/emoji/1f590-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f590.png b/images/emoji/1f590.png
new file mode 100644
index 000000000..fb5ae8ebb
--- /dev/null
+++ b/images/emoji/1f590.png
Binary files differ
diff --git a/images/emoji/1f595-1f3fb.png b/images/emoji/1f595-1f3fb.png
new file mode 100644
index 000000000..61ef12a15
--- /dev/null
+++ b/images/emoji/1f595-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f595-1f3fc.png b/images/emoji/1f595-1f3fc.png
new file mode 100644
index 000000000..c31a69be9
--- /dev/null
+++ b/images/emoji/1f595-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f595-1f3fd.png b/images/emoji/1f595-1f3fd.png
new file mode 100644
index 000000000..73ac216ce
--- /dev/null
+++ b/images/emoji/1f595-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f595-1f3fe.png b/images/emoji/1f595-1f3fe.png
new file mode 100644
index 000000000..80b8ab770
--- /dev/null
+++ b/images/emoji/1f595-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f595-1f3ff.png b/images/emoji/1f595-1f3ff.png
new file mode 100644
index 000000000..a8826b196
--- /dev/null
+++ b/images/emoji/1f595-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f595.png b/images/emoji/1f595.png
new file mode 100644
index 000000000..697f7a25e
--- /dev/null
+++ b/images/emoji/1f595.png
Binary files differ
diff --git a/images/emoji/1f596-1f3fb.png b/images/emoji/1f596-1f3fb.png
new file mode 100644
index 000000000..8aff5d8fa
--- /dev/null
+++ b/images/emoji/1f596-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f596-1f3fc.png b/images/emoji/1f596-1f3fc.png
new file mode 100644
index 000000000..82b7ad519
--- /dev/null
+++ b/images/emoji/1f596-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f596-1f3fd.png b/images/emoji/1f596-1f3fd.png
new file mode 100644
index 000000000..d1400e1dd
--- /dev/null
+++ b/images/emoji/1f596-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f596-1f3fe.png b/images/emoji/1f596-1f3fe.png
new file mode 100644
index 000000000..47e2b2801
--- /dev/null
+++ b/images/emoji/1f596-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f596-1f3ff.png b/images/emoji/1f596-1f3ff.png
new file mode 100644
index 000000000..60b5c6077
--- /dev/null
+++ b/images/emoji/1f596-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f596.png b/images/emoji/1f596.png
new file mode 100644
index 000000000..54728bcaf
--- /dev/null
+++ b/images/emoji/1f596.png
Binary files differ
diff --git a/images/emoji/1f5a4.png b/images/emoji/1f5a4.png
new file mode 100644
index 000000000..b4068c3e6
--- /dev/null
+++ b/images/emoji/1f5a4.png
Binary files differ
diff --git a/images/emoji/1f5a5.png b/images/emoji/1f5a5.png
new file mode 100644
index 000000000..909bd42b5
--- /dev/null
+++ b/images/emoji/1f5a5.png
Binary files differ
diff --git a/images/emoji/1f5a8.png b/images/emoji/1f5a8.png
new file mode 100644
index 000000000..027c830f0
--- /dev/null
+++ b/images/emoji/1f5a8.png
Binary files differ
diff --git a/images/emoji/1f5b1.png b/images/emoji/1f5b1.png
new file mode 100644
index 000000000..e84e96ff6
--- /dev/null
+++ b/images/emoji/1f5b1.png
Binary files differ
diff --git a/images/emoji/1f5b2.png b/images/emoji/1f5b2.png
new file mode 100644
index 000000000..3bea84ad7
--- /dev/null
+++ b/images/emoji/1f5b2.png
Binary files differ
diff --git a/images/emoji/1f5bc.png b/images/emoji/1f5bc.png
new file mode 100644
index 000000000..9fe84607b
--- /dev/null
+++ b/images/emoji/1f5bc.png
Binary files differ
diff --git a/images/emoji/1f5c2.png b/images/emoji/1f5c2.png
new file mode 100644
index 000000000..46a7e403f
--- /dev/null
+++ b/images/emoji/1f5c2.png
Binary files differ
diff --git a/images/emoji/1f5c3.png b/images/emoji/1f5c3.png
new file mode 100644
index 000000000..f2e764ce5
--- /dev/null
+++ b/images/emoji/1f5c3.png
Binary files differ
diff --git a/images/emoji/1f5c4.png b/images/emoji/1f5c4.png
new file mode 100644
index 000000000..fddc65dde
--- /dev/null
+++ b/images/emoji/1f5c4.png
Binary files differ
diff --git a/images/emoji/1f5d1.png b/images/emoji/1f5d1.png
new file mode 100644
index 000000000..2b3c484b4
--- /dev/null
+++ b/images/emoji/1f5d1.png
Binary files differ
diff --git a/images/emoji/1f5d2.png b/images/emoji/1f5d2.png
new file mode 100644
index 000000000..85faa10d8
--- /dev/null
+++ b/images/emoji/1f5d2.png
Binary files differ
diff --git a/images/emoji/1f5d3.png b/images/emoji/1f5d3.png
new file mode 100644
index 000000000..dec8d49bf
--- /dev/null
+++ b/images/emoji/1f5d3.png
Binary files differ
diff --git a/images/emoji/1f5dc.png b/images/emoji/1f5dc.png
new file mode 100644
index 000000000..67c13258d
--- /dev/null
+++ b/images/emoji/1f5dc.png
Binary files differ
diff --git a/images/emoji/1f5dd.png b/images/emoji/1f5dd.png
new file mode 100644
index 000000000..e11d706c6
--- /dev/null
+++ b/images/emoji/1f5dd.png
Binary files differ
diff --git a/images/emoji/1f5de.png b/images/emoji/1f5de.png
new file mode 100644
index 000000000..f64748df2
--- /dev/null
+++ b/images/emoji/1f5de.png
Binary files differ
diff --git a/images/emoji/1f5e1.png b/images/emoji/1f5e1.png
new file mode 100644
index 000000000..66e97b0aa
--- /dev/null
+++ b/images/emoji/1f5e1.png
Binary files differ
diff --git a/images/emoji/1f5e3.png b/images/emoji/1f5e3.png
new file mode 100644
index 000000000..2df93aaae
--- /dev/null
+++ b/images/emoji/1f5e3.png
Binary files differ
diff --git a/images/emoji/1f5e8.png b/images/emoji/1f5e8.png
new file mode 100644
index 000000000..00c05959b
--- /dev/null
+++ b/images/emoji/1f5e8.png
Binary files differ
diff --git a/images/emoji/1f5ef.png b/images/emoji/1f5ef.png
new file mode 100644
index 000000000..f5c97c4d2
--- /dev/null
+++ b/images/emoji/1f5ef.png
Binary files differ
diff --git a/images/emoji/1f5f3.png b/images/emoji/1f5f3.png
new file mode 100644
index 000000000..9b6767aea
--- /dev/null
+++ b/images/emoji/1f5f3.png
Binary files differ
diff --git a/images/emoji/1f5fa.png b/images/emoji/1f5fa.png
new file mode 100644
index 000000000..15efe32c7
--- /dev/null
+++ b/images/emoji/1f5fa.png
Binary files differ
diff --git a/images/emoji/1f5fb.png b/images/emoji/1f5fb.png
new file mode 100644
index 000000000..88a547524
--- /dev/null
+++ b/images/emoji/1f5fb.png
Binary files differ
diff --git a/images/emoji/1f5fc.png b/images/emoji/1f5fc.png
new file mode 100644
index 000000000..37df7fc65
--- /dev/null
+++ b/images/emoji/1f5fc.png
Binary files differ
diff --git a/images/emoji/1f5fd.png b/images/emoji/1f5fd.png
new file mode 100644
index 000000000..05df8289b
--- /dev/null
+++ b/images/emoji/1f5fd.png
Binary files differ
diff --git a/images/emoji/1f5fe.png b/images/emoji/1f5fe.png
new file mode 100644
index 000000000..d86d0a59e
--- /dev/null
+++ b/images/emoji/1f5fe.png
Binary files differ
diff --git a/images/emoji/1f5ff.png b/images/emoji/1f5ff.png
new file mode 100644
index 000000000..e6a7779c4
--- /dev/null
+++ b/images/emoji/1f5ff.png
Binary files differ
diff --git a/images/emoji/1f600.png b/images/emoji/1f600.png
new file mode 100644
index 000000000..3e8e0dab7
--- /dev/null
+++ b/images/emoji/1f600.png
Binary files differ
diff --git a/images/emoji/1f601.png b/images/emoji/1f601.png
new file mode 100644
index 000000000..418d94c81
--- /dev/null
+++ b/images/emoji/1f601.png
Binary files differ
diff --git a/images/emoji/1f602.png b/images/emoji/1f602.png
new file mode 100644
index 000000000..0ba3b1859
--- /dev/null
+++ b/images/emoji/1f602.png
Binary files differ
diff --git a/images/emoji/1f603.png b/images/emoji/1f603.png
new file mode 100644
index 000000000..30957a659
--- /dev/null
+++ b/images/emoji/1f603.png
Binary files differ
diff --git a/images/emoji/1f604.png b/images/emoji/1f604.png
new file mode 100644
index 000000000..aa47ffe97
--- /dev/null
+++ b/images/emoji/1f604.png
Binary files differ
diff --git a/images/emoji/1f605.png b/images/emoji/1f605.png
new file mode 100644
index 000000000..cb18d9c89
--- /dev/null
+++ b/images/emoji/1f605.png
Binary files differ
diff --git a/images/emoji/1f606.png b/images/emoji/1f606.png
new file mode 100644
index 000000000..d94e9505b
--- /dev/null
+++ b/images/emoji/1f606.png
Binary files differ
diff --git a/images/emoji/1f607.png b/images/emoji/1f607.png
new file mode 100644
index 000000000..57f515112
--- /dev/null
+++ b/images/emoji/1f607.png
Binary files differ
diff --git a/images/emoji/1f608.png b/images/emoji/1f608.png
new file mode 100644
index 000000000..cc2c5f1ec
--- /dev/null
+++ b/images/emoji/1f608.png
Binary files differ
diff --git a/images/emoji/1f609.png b/images/emoji/1f609.png
new file mode 100644
index 000000000..7ea7810a3
--- /dev/null
+++ b/images/emoji/1f609.png
Binary files differ
diff --git a/images/emoji/1f60a.png b/images/emoji/1f60a.png
new file mode 100644
index 000000000..aac1a424a
--- /dev/null
+++ b/images/emoji/1f60a.png
Binary files differ
diff --git a/images/emoji/1f60b.png b/images/emoji/1f60b.png
new file mode 100644
index 000000000..2df15753c
--- /dev/null
+++ b/images/emoji/1f60b.png
Binary files differ
diff --git a/images/emoji/1f60c.png b/images/emoji/1f60c.png
new file mode 100644
index 000000000..715ad0bf5
--- /dev/null
+++ b/images/emoji/1f60c.png
Binary files differ
diff --git a/images/emoji/1f60d.png b/images/emoji/1f60d.png
new file mode 100644
index 000000000..73fbee29d
--- /dev/null
+++ b/images/emoji/1f60d.png
Binary files differ
diff --git a/images/emoji/1f60e.png b/images/emoji/1f60e.png
new file mode 100644
index 000000000..200117351
--- /dev/null
+++ b/images/emoji/1f60e.png
Binary files differ
diff --git a/images/emoji/1f60f.png b/images/emoji/1f60f.png
new file mode 100644
index 000000000..878521099
--- /dev/null
+++ b/images/emoji/1f60f.png
Binary files differ
diff --git a/images/emoji/1f610.png b/images/emoji/1f610.png
new file mode 100644
index 000000000..065d193af
--- /dev/null
+++ b/images/emoji/1f610.png
Binary files differ
diff --git a/images/emoji/1f611.png b/images/emoji/1f611.png
new file mode 100644
index 000000000..2954017f6
--- /dev/null
+++ b/images/emoji/1f611.png
Binary files differ
diff --git a/images/emoji/1f612.png b/images/emoji/1f612.png
new file mode 100644
index 000000000..25e3677f2
--- /dev/null
+++ b/images/emoji/1f612.png
Binary files differ
diff --git a/images/emoji/1f613.png b/images/emoji/1f613.png
new file mode 100644
index 000000000..f0dae7b78
--- /dev/null
+++ b/images/emoji/1f613.png
Binary files differ
diff --git a/images/emoji/1f614.png b/images/emoji/1f614.png
new file mode 100644
index 000000000..490fb5669
--- /dev/null
+++ b/images/emoji/1f614.png
Binary files differ
diff --git a/images/emoji/1f615.png b/images/emoji/1f615.png
new file mode 100644
index 000000000..502b6bf0e
--- /dev/null
+++ b/images/emoji/1f615.png
Binary files differ
diff --git a/images/emoji/1f616.png b/images/emoji/1f616.png
new file mode 100644
index 000000000..aa4b29e93
--- /dev/null
+++ b/images/emoji/1f616.png
Binary files differ
diff --git a/images/emoji/1f617.png b/images/emoji/1f617.png
new file mode 100644
index 000000000..39d325fd8
--- /dev/null
+++ b/images/emoji/1f617.png
Binary files differ
diff --git a/images/emoji/1f618.png b/images/emoji/1f618.png
new file mode 100644
index 000000000..0ff808fd6
--- /dev/null
+++ b/images/emoji/1f618.png
Binary files differ
diff --git a/images/emoji/1f619.png b/images/emoji/1f619.png
new file mode 100644
index 000000000..e181f1709
--- /dev/null
+++ b/images/emoji/1f619.png
Binary files differ
diff --git a/images/emoji/1f61a.png b/images/emoji/1f61a.png
new file mode 100644
index 000000000..b684d7d4d
--- /dev/null
+++ b/images/emoji/1f61a.png
Binary files differ
diff --git a/images/emoji/1f61b.png b/images/emoji/1f61b.png
new file mode 100644
index 000000000..25757341f
--- /dev/null
+++ b/images/emoji/1f61b.png
Binary files differ
diff --git a/images/emoji/1f61c.png b/images/emoji/1f61c.png
new file mode 100644
index 000000000..4817eaa3d
--- /dev/null
+++ b/images/emoji/1f61c.png
Binary files differ
diff --git a/images/emoji/1f61d.png b/images/emoji/1f61d.png
new file mode 100644
index 000000000..5c0401e9b
--- /dev/null
+++ b/images/emoji/1f61d.png
Binary files differ
diff --git a/images/emoji/1f61e.png b/images/emoji/1f61e.png
new file mode 100644
index 000000000..efe4e67e2
--- /dev/null
+++ b/images/emoji/1f61e.png
Binary files differ
diff --git a/images/emoji/1f61f.png b/images/emoji/1f61f.png
new file mode 100644
index 000000000..7074afcf5
--- /dev/null
+++ b/images/emoji/1f61f.png
Binary files differ
diff --git a/images/emoji/1f620.png b/images/emoji/1f620.png
new file mode 100644
index 000000000..cfc4a6ecd
--- /dev/null
+++ b/images/emoji/1f620.png
Binary files differ
diff --git a/images/emoji/1f621.png b/images/emoji/1f621.png
new file mode 100644
index 000000000..9d739bd40
--- /dev/null
+++ b/images/emoji/1f621.png
Binary files differ
diff --git a/images/emoji/1f622.png b/images/emoji/1f622.png
new file mode 100644
index 000000000..b7877f8a1
--- /dev/null
+++ b/images/emoji/1f622.png
Binary files differ
diff --git a/images/emoji/1f623.png b/images/emoji/1f623.png
new file mode 100644
index 000000000..646a05fe9
--- /dev/null
+++ b/images/emoji/1f623.png
Binary files differ
diff --git a/images/emoji/1f624.png b/images/emoji/1f624.png
new file mode 100644
index 000000000..4f3312854
--- /dev/null
+++ b/images/emoji/1f624.png
Binary files differ
diff --git a/images/emoji/1f625.png b/images/emoji/1f625.png
new file mode 100644
index 000000000..aef864d2b
--- /dev/null
+++ b/images/emoji/1f625.png
Binary files differ
diff --git a/images/emoji/1f626.png b/images/emoji/1f626.png
new file mode 100644
index 000000000..43ab6b0a1
--- /dev/null
+++ b/images/emoji/1f626.png
Binary files differ
diff --git a/images/emoji/1f627.png b/images/emoji/1f627.png
new file mode 100644
index 000000000..f99026a3b
--- /dev/null
+++ b/images/emoji/1f627.png
Binary files differ
diff --git a/images/emoji/1f628.png b/images/emoji/1f628.png
new file mode 100644
index 000000000..eb8b347ce
--- /dev/null
+++ b/images/emoji/1f628.png
Binary files differ
diff --git a/images/emoji/1f629.png b/images/emoji/1f629.png
new file mode 100644
index 000000000..98bfbd24a
--- /dev/null
+++ b/images/emoji/1f629.png
Binary files differ
diff --git a/images/emoji/1f62a.png b/images/emoji/1f62a.png
new file mode 100644
index 000000000..836b41077
--- /dev/null
+++ b/images/emoji/1f62a.png
Binary files differ
diff --git a/images/emoji/1f62b.png b/images/emoji/1f62b.png
new file mode 100644
index 000000000..19aba1bc1
--- /dev/null
+++ b/images/emoji/1f62b.png
Binary files differ
diff --git a/images/emoji/1f62c.png b/images/emoji/1f62c.png
new file mode 100644
index 000000000..871b2f071
--- /dev/null
+++ b/images/emoji/1f62c.png
Binary files differ
diff --git a/images/emoji/1f62d.png b/images/emoji/1f62d.png
new file mode 100644
index 000000000..e4f818360
--- /dev/null
+++ b/images/emoji/1f62d.png
Binary files differ
diff --git a/images/emoji/1f62e.png b/images/emoji/1f62e.png
new file mode 100644
index 000000000..a62cd27e1
--- /dev/null
+++ b/images/emoji/1f62e.png
Binary files differ
diff --git a/images/emoji/1f62f.png b/images/emoji/1f62f.png
new file mode 100644
index 000000000..cad0e2313
--- /dev/null
+++ b/images/emoji/1f62f.png
Binary files differ
diff --git a/images/emoji/1f630.png b/images/emoji/1f630.png
new file mode 100644
index 000000000..85b2231bb
--- /dev/null
+++ b/images/emoji/1f630.png
Binary files differ
diff --git a/images/emoji/1f631.png b/images/emoji/1f631.png
new file mode 100644
index 000000000..6ab43a0d3
--- /dev/null
+++ b/images/emoji/1f631.png
Binary files differ
diff --git a/images/emoji/1f632.png b/images/emoji/1f632.png
new file mode 100644
index 000000000..bd0ac55ec
--- /dev/null
+++ b/images/emoji/1f632.png
Binary files differ
diff --git a/images/emoji/1f633.png b/images/emoji/1f633.png
new file mode 100644
index 000000000..829220bc4
--- /dev/null
+++ b/images/emoji/1f633.png
Binary files differ
diff --git a/images/emoji/1f634.png b/images/emoji/1f634.png
new file mode 100644
index 000000000..9ecf600d6
--- /dev/null
+++ b/images/emoji/1f634.png
Binary files differ
diff --git a/images/emoji/1f635.png b/images/emoji/1f635.png
new file mode 100644
index 000000000..3120316ab
--- /dev/null
+++ b/images/emoji/1f635.png
Binary files differ
diff --git a/images/emoji/1f636.png b/images/emoji/1f636.png
new file mode 100644
index 000000000..b642f6c11
--- /dev/null
+++ b/images/emoji/1f636.png
Binary files differ
diff --git a/images/emoji/1f637.png b/images/emoji/1f637.png
new file mode 100644
index 000000000..23852e578
--- /dev/null
+++ b/images/emoji/1f637.png
Binary files differ
diff --git a/images/emoji/1f638.png b/images/emoji/1f638.png
new file mode 100644
index 000000000..e27290a67
--- /dev/null
+++ b/images/emoji/1f638.png
Binary files differ
diff --git a/images/emoji/1f639.png b/images/emoji/1f639.png
new file mode 100644
index 000000000..aac353179
--- /dev/null
+++ b/images/emoji/1f639.png
Binary files differ
diff --git a/images/emoji/1f63a.png b/images/emoji/1f63a.png
new file mode 100644
index 000000000..d5b1cef0b
--- /dev/null
+++ b/images/emoji/1f63a.png
Binary files differ
diff --git a/images/emoji/1f63b.png b/images/emoji/1f63b.png
new file mode 100644
index 000000000..5a59eed04
--- /dev/null
+++ b/images/emoji/1f63b.png
Binary files differ
diff --git a/images/emoji/1f63c.png b/images/emoji/1f63c.png
new file mode 100644
index 000000000..0bfeae4eb
--- /dev/null
+++ b/images/emoji/1f63c.png
Binary files differ
diff --git a/images/emoji/1f63d.png b/images/emoji/1f63d.png
new file mode 100644
index 000000000..7f1ef2056
--- /dev/null
+++ b/images/emoji/1f63d.png
Binary files differ
diff --git a/images/emoji/1f63e.png b/images/emoji/1f63e.png
new file mode 100644
index 000000000..41ddfeab4
--- /dev/null
+++ b/images/emoji/1f63e.png
Binary files differ
diff --git a/images/emoji/1f63f.png b/images/emoji/1f63f.png
new file mode 100644
index 000000000..ccc8d4f25
--- /dev/null
+++ b/images/emoji/1f63f.png
Binary files differ
diff --git a/images/emoji/1f640.png b/images/emoji/1f640.png
new file mode 100644
index 000000000..15803ad8e
--- /dev/null
+++ b/images/emoji/1f640.png
Binary files differ
diff --git a/images/emoji/1f641.png b/images/emoji/1f641.png
new file mode 100644
index 000000000..b2f1d983d
--- /dev/null
+++ b/images/emoji/1f641.png
Binary files differ
diff --git a/images/emoji/1f642.png b/images/emoji/1f642.png
new file mode 100644
index 000000000..ddd7d65dd
--- /dev/null
+++ b/images/emoji/1f642.png
Binary files differ
diff --git a/images/emoji/1f643.png b/images/emoji/1f643.png
new file mode 100644
index 000000000..128f31c98
--- /dev/null
+++ b/images/emoji/1f643.png
Binary files differ
diff --git a/images/emoji/1f644.png b/images/emoji/1f644.png
new file mode 100644
index 000000000..2f77b9fc3
--- /dev/null
+++ b/images/emoji/1f644.png
Binary files differ
diff --git a/images/emoji/1f645-1f3fb.png b/images/emoji/1f645-1f3fb.png
new file mode 100644
index 000000000..7f28bf121
--- /dev/null
+++ b/images/emoji/1f645-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f645-1f3fc.png b/images/emoji/1f645-1f3fc.png
new file mode 100644
index 000000000..80d8021f8
--- /dev/null
+++ b/images/emoji/1f645-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f645-1f3fd.png b/images/emoji/1f645-1f3fd.png
new file mode 100644
index 000000000..635e6a008
--- /dev/null
+++ b/images/emoji/1f645-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f645-1f3fe.png b/images/emoji/1f645-1f3fe.png
new file mode 100644
index 000000000..42006e7da
--- /dev/null
+++ b/images/emoji/1f645-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f645-1f3ff.png b/images/emoji/1f645-1f3ff.png
new file mode 100644
index 000000000..309096cba
--- /dev/null
+++ b/images/emoji/1f645-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f645.png b/images/emoji/1f645.png
new file mode 100644
index 000000000..381753cd8
--- /dev/null
+++ b/images/emoji/1f645.png
Binary files differ
diff --git a/images/emoji/1f646-1f3fb.png b/images/emoji/1f646-1f3fb.png
new file mode 100644
index 000000000..ac28746a5
--- /dev/null
+++ b/images/emoji/1f646-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f646-1f3fc.png b/images/emoji/1f646-1f3fc.png
new file mode 100644
index 000000000..5d845b042
--- /dev/null
+++ b/images/emoji/1f646-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f646-1f3fd.png b/images/emoji/1f646-1f3fd.png
new file mode 100644
index 000000000..74c7b794f
--- /dev/null
+++ b/images/emoji/1f646-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f646-1f3fe.png b/images/emoji/1f646-1f3fe.png
new file mode 100644
index 000000000..2fbcd7f67
--- /dev/null
+++ b/images/emoji/1f646-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f646-1f3ff.png b/images/emoji/1f646-1f3ff.png
new file mode 100644
index 000000000..da2d13546
--- /dev/null
+++ b/images/emoji/1f646-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f646.png b/images/emoji/1f646.png
new file mode 100644
index 000000000..3de4594bd
--- /dev/null
+++ b/images/emoji/1f646.png
Binary files differ
diff --git a/images/emoji/1f647-1f3fb.png b/images/emoji/1f647-1f3fb.png
new file mode 100644
index 000000000..003d66052
--- /dev/null
+++ b/images/emoji/1f647-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f647-1f3fc.png b/images/emoji/1f647-1f3fc.png
new file mode 100644
index 000000000..d774be9c9
--- /dev/null
+++ b/images/emoji/1f647-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f647-1f3fd.png b/images/emoji/1f647-1f3fd.png
new file mode 100644
index 000000000..43e06fd86
--- /dev/null
+++ b/images/emoji/1f647-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f647-1f3fe.png b/images/emoji/1f647-1f3fe.png
new file mode 100644
index 000000000..2d0f1a7c7
--- /dev/null
+++ b/images/emoji/1f647-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f647-1f3ff.png b/images/emoji/1f647-1f3ff.png
new file mode 100644
index 000000000..91f1a8ace
--- /dev/null
+++ b/images/emoji/1f647-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f647.png b/images/emoji/1f647.png
new file mode 100644
index 000000000..3a0e83ee8
--- /dev/null
+++ b/images/emoji/1f647.png
Binary files differ
diff --git a/images/emoji/1f648.png b/images/emoji/1f648.png
new file mode 100644
index 000000000..5187e4745
--- /dev/null
+++ b/images/emoji/1f648.png
Binary files differ
diff --git a/images/emoji/1f649.png b/images/emoji/1f649.png
new file mode 100644
index 000000000..74b6be0c6
--- /dev/null
+++ b/images/emoji/1f649.png
Binary files differ
diff --git a/images/emoji/1f64a.png b/images/emoji/1f64a.png
new file mode 100644
index 000000000..c75f42ae7
--- /dev/null
+++ b/images/emoji/1f64a.png
Binary files differ
diff --git a/images/emoji/1f64b-1f3fb.png b/images/emoji/1f64b-1f3fb.png
new file mode 100644
index 000000000..1c90e3e26
--- /dev/null
+++ b/images/emoji/1f64b-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f64b-1f3fc.png b/images/emoji/1f64b-1f3fc.png
new file mode 100644
index 000000000..82c3ef2bf
--- /dev/null
+++ b/images/emoji/1f64b-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f64b-1f3fd.png b/images/emoji/1f64b-1f3fd.png
new file mode 100644
index 000000000..92a389f72
--- /dev/null
+++ b/images/emoji/1f64b-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f64b-1f3fe.png b/images/emoji/1f64b-1f3fe.png
new file mode 100644
index 000000000..8b95f0533
--- /dev/null
+++ b/images/emoji/1f64b-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f64b-1f3ff.png b/images/emoji/1f64b-1f3ff.png
new file mode 100644
index 000000000..b86200fd8
--- /dev/null
+++ b/images/emoji/1f64b-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f64b.png b/images/emoji/1f64b.png
new file mode 100644
index 000000000..7c803b315
--- /dev/null
+++ b/images/emoji/1f64b.png
Binary files differ
diff --git a/images/emoji/1f64c-1f3fb.png b/images/emoji/1f64c-1f3fb.png
new file mode 100644
index 000000000..1168b8236
--- /dev/null
+++ b/images/emoji/1f64c-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f64c-1f3fc.png b/images/emoji/1f64c-1f3fc.png
new file mode 100644
index 000000000..322de6229
--- /dev/null
+++ b/images/emoji/1f64c-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f64c-1f3fd.png b/images/emoji/1f64c-1f3fd.png
new file mode 100644
index 000000000..2aa24e05a
--- /dev/null
+++ b/images/emoji/1f64c-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f64c-1f3fe.png b/images/emoji/1f64c-1f3fe.png
new file mode 100644
index 000000000..f31bf0db9
--- /dev/null
+++ b/images/emoji/1f64c-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f64c-1f3ff.png b/images/emoji/1f64c-1f3ff.png
new file mode 100644
index 000000000..5e95067f9
--- /dev/null
+++ b/images/emoji/1f64c-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f64c.png b/images/emoji/1f64c.png
new file mode 100644
index 000000000..c0155f728
--- /dev/null
+++ b/images/emoji/1f64c.png
Binary files differ
diff --git a/images/emoji/1f64d-1f3fb.png b/images/emoji/1f64d-1f3fb.png
new file mode 100644
index 000000000..21d3bb439
--- /dev/null
+++ b/images/emoji/1f64d-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f64d-1f3fc.png b/images/emoji/1f64d-1f3fc.png
new file mode 100644
index 000000000..973f5fc83
--- /dev/null
+++ b/images/emoji/1f64d-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f64d-1f3fd.png b/images/emoji/1f64d-1f3fd.png
new file mode 100644
index 000000000..41fbcc788
--- /dev/null
+++ b/images/emoji/1f64d-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f64d-1f3fe.png b/images/emoji/1f64d-1f3fe.png
new file mode 100644
index 000000000..5a37c7410
--- /dev/null
+++ b/images/emoji/1f64d-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f64d-1f3ff.png b/images/emoji/1f64d-1f3ff.png
new file mode 100644
index 000000000..e08141f3e
--- /dev/null
+++ b/images/emoji/1f64d-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f64d.png b/images/emoji/1f64d.png
new file mode 100644
index 000000000..579324959
--- /dev/null
+++ b/images/emoji/1f64d.png
Binary files differ
diff --git a/images/emoji/1f64e-1f3fb.png b/images/emoji/1f64e-1f3fb.png
new file mode 100644
index 000000000..57e826b75
--- /dev/null
+++ b/images/emoji/1f64e-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f64e-1f3fc.png b/images/emoji/1f64e-1f3fc.png
new file mode 100644
index 000000000..3f317c0c2
--- /dev/null
+++ b/images/emoji/1f64e-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f64e-1f3fd.png b/images/emoji/1f64e-1f3fd.png
new file mode 100644
index 000000000..d2fbb6c20
--- /dev/null
+++ b/images/emoji/1f64e-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f64e-1f3fe.png b/images/emoji/1f64e-1f3fe.png
new file mode 100644
index 000000000..643ceb4a5
--- /dev/null
+++ b/images/emoji/1f64e-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f64e-1f3ff.png b/images/emoji/1f64e-1f3ff.png
new file mode 100644
index 000000000..b2eb6859c
--- /dev/null
+++ b/images/emoji/1f64e-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f64e.png b/images/emoji/1f64e.png
new file mode 100644
index 000000000..10eb05710
--- /dev/null
+++ b/images/emoji/1f64e.png
Binary files differ
diff --git a/images/emoji/1f64f-1f3fb.png b/images/emoji/1f64f-1f3fb.png
new file mode 100644
index 000000000..060ef2571
--- /dev/null
+++ b/images/emoji/1f64f-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f64f-1f3fc.png b/images/emoji/1f64f-1f3fc.png
new file mode 100644
index 000000000..56dc607c0
--- /dev/null
+++ b/images/emoji/1f64f-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f64f-1f3fd.png b/images/emoji/1f64f-1f3fd.png
new file mode 100644
index 000000000..0f33b8620
--- /dev/null
+++ b/images/emoji/1f64f-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f64f-1f3fe.png b/images/emoji/1f64f-1f3fe.png
new file mode 100644
index 000000000..2ea8dc116
--- /dev/null
+++ b/images/emoji/1f64f-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f64f-1f3ff.png b/images/emoji/1f64f-1f3ff.png
new file mode 100644
index 000000000..2128a6c47
--- /dev/null
+++ b/images/emoji/1f64f-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f64f.png b/images/emoji/1f64f.png
new file mode 100644
index 000000000..8347f2435
--- /dev/null
+++ b/images/emoji/1f64f.png
Binary files differ
diff --git a/images/emoji/1f680.png b/images/emoji/1f680.png
new file mode 100644
index 000000000..0d8da089a
--- /dev/null
+++ b/images/emoji/1f680.png
Binary files differ
diff --git a/images/emoji/1f681.png b/images/emoji/1f681.png
new file mode 100644
index 000000000..7ec5f39a5
--- /dev/null
+++ b/images/emoji/1f681.png
Binary files differ
diff --git a/images/emoji/1f682.png b/images/emoji/1f682.png
new file mode 100644
index 000000000..9ac0d999c
--- /dev/null
+++ b/images/emoji/1f682.png
Binary files differ
diff --git a/images/emoji/1f683.png b/images/emoji/1f683.png
new file mode 100644
index 000000000..a9acbf130
--- /dev/null
+++ b/images/emoji/1f683.png
Binary files differ
diff --git a/images/emoji/1f684.png b/images/emoji/1f684.png
new file mode 100644
index 000000000..ed61c67bf
--- /dev/null
+++ b/images/emoji/1f684.png
Binary files differ
diff --git a/images/emoji/1f685.png b/images/emoji/1f685.png
new file mode 100644
index 000000000..4f698e056
--- /dev/null
+++ b/images/emoji/1f685.png
Binary files differ
diff --git a/images/emoji/1f686.png b/images/emoji/1f686.png
new file mode 100644
index 000000000..8701e41e7
--- /dev/null
+++ b/images/emoji/1f686.png
Binary files differ
diff --git a/images/emoji/1f687.png b/images/emoji/1f687.png
new file mode 100644
index 000000000..1de8f0551
--- /dev/null
+++ b/images/emoji/1f687.png
Binary files differ
diff --git a/images/emoji/1f688.png b/images/emoji/1f688.png
new file mode 100644
index 000000000..a64829f50
--- /dev/null
+++ b/images/emoji/1f688.png
Binary files differ
diff --git a/images/emoji/1f689.png b/images/emoji/1f689.png
new file mode 100644
index 000000000..5c26fee52
--- /dev/null
+++ b/images/emoji/1f689.png
Binary files differ
diff --git a/images/emoji/1f68a.png b/images/emoji/1f68a.png
new file mode 100644
index 000000000..b6f0e6903
--- /dev/null
+++ b/images/emoji/1f68a.png
Binary files differ
diff --git a/images/emoji/1f68b.png b/images/emoji/1f68b.png
new file mode 100644
index 000000000..3c80321f7
--- /dev/null
+++ b/images/emoji/1f68b.png
Binary files differ
diff --git a/images/emoji/1f68c.png b/images/emoji/1f68c.png
new file mode 100644
index 000000000..641ddc56c
--- /dev/null
+++ b/images/emoji/1f68c.png
Binary files differ
diff --git a/images/emoji/1f68d.png b/images/emoji/1f68d.png
new file mode 100644
index 000000000..ad91e256c
--- /dev/null
+++ b/images/emoji/1f68d.png
Binary files differ
diff --git a/images/emoji/1f68e.png b/images/emoji/1f68e.png
new file mode 100644
index 000000000..139a9931b
--- /dev/null
+++ b/images/emoji/1f68e.png
Binary files differ
diff --git a/images/emoji/1f68f.png b/images/emoji/1f68f.png
new file mode 100644
index 000000000..b2b62208b
--- /dev/null
+++ b/images/emoji/1f68f.png
Binary files differ
diff --git a/images/emoji/1f690.png b/images/emoji/1f690.png
new file mode 100644
index 000000000..c60dd8f47
--- /dev/null
+++ b/images/emoji/1f690.png
Binary files differ
diff --git a/images/emoji/1f691.png b/images/emoji/1f691.png
new file mode 100644
index 000000000..6fb8076d7
--- /dev/null
+++ b/images/emoji/1f691.png
Binary files differ
diff --git a/images/emoji/1f692.png b/images/emoji/1f692.png
new file mode 100644
index 000000000..249ffaabd
--- /dev/null
+++ b/images/emoji/1f692.png
Binary files differ
diff --git a/images/emoji/1f693.png b/images/emoji/1f693.png
new file mode 100644
index 000000000..3da4253de
--- /dev/null
+++ b/images/emoji/1f693.png
Binary files differ
diff --git a/images/emoji/1f694.png b/images/emoji/1f694.png
new file mode 100644
index 000000000..a50388fc9
--- /dev/null
+++ b/images/emoji/1f694.png
Binary files differ
diff --git a/images/emoji/1f695.png b/images/emoji/1f695.png
new file mode 100644
index 000000000..55f4cc847
--- /dev/null
+++ b/images/emoji/1f695.png
Binary files differ
diff --git a/images/emoji/1f696.png b/images/emoji/1f696.png
new file mode 100644
index 000000000..b4a9ddde4
--- /dev/null
+++ b/images/emoji/1f696.png
Binary files differ
diff --git a/images/emoji/1f697.png b/images/emoji/1f697.png
new file mode 100644
index 000000000..b3e6a774d
--- /dev/null
+++ b/images/emoji/1f697.png
Binary files differ
diff --git a/images/emoji/1f698.png b/images/emoji/1f698.png
new file mode 100644
index 000000000..3c7e1d52e
--- /dev/null
+++ b/images/emoji/1f698.png
Binary files differ
diff --git a/images/emoji/1f699.png b/images/emoji/1f699.png
new file mode 100644
index 000000000..e8ba817d3
--- /dev/null
+++ b/images/emoji/1f699.png
Binary files differ
diff --git a/images/emoji/1f69a.png b/images/emoji/1f69a.png
new file mode 100644
index 000000000..c7677a769
--- /dev/null
+++ b/images/emoji/1f69a.png
Binary files differ
diff --git a/images/emoji/1f69b.png b/images/emoji/1f69b.png
new file mode 100644
index 000000000..b3b7742e6
--- /dev/null
+++ b/images/emoji/1f69b.png
Binary files differ
diff --git a/images/emoji/1f69c.png b/images/emoji/1f69c.png
new file mode 100644
index 000000000..c1bf8cae4
--- /dev/null
+++ b/images/emoji/1f69c.png
Binary files differ
diff --git a/images/emoji/1f69d.png b/images/emoji/1f69d.png
new file mode 100644
index 000000000..11eb1f574
--- /dev/null
+++ b/images/emoji/1f69d.png
Binary files differ
diff --git a/images/emoji/1f69e.png b/images/emoji/1f69e.png
new file mode 100644
index 000000000..d136d60aa
--- /dev/null
+++ b/images/emoji/1f69e.png
Binary files differ
diff --git a/images/emoji/1f69f.png b/images/emoji/1f69f.png
new file mode 100644
index 000000000..a59d5f48c
--- /dev/null
+++ b/images/emoji/1f69f.png
Binary files differ
diff --git a/images/emoji/1f6a0.png b/images/emoji/1f6a0.png
new file mode 100644
index 000000000..1dea73ca5
--- /dev/null
+++ b/images/emoji/1f6a0.png
Binary files differ
diff --git a/images/emoji/1f6a1.png b/images/emoji/1f6a1.png
new file mode 100644
index 000000000..3eb4b61bf
--- /dev/null
+++ b/images/emoji/1f6a1.png
Binary files differ
diff --git a/images/emoji/1f6a2.png b/images/emoji/1f6a2.png
new file mode 100644
index 000000000..62d54f7d6
--- /dev/null
+++ b/images/emoji/1f6a2.png
Binary files differ
diff --git a/images/emoji/1f6a3-1f3fb.png b/images/emoji/1f6a3-1f3fb.png
new file mode 100644
index 000000000..947471874
--- /dev/null
+++ b/images/emoji/1f6a3-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f6a3-1f3fc.png b/images/emoji/1f6a3-1f3fc.png
new file mode 100644
index 000000000..9b123ef88
--- /dev/null
+++ b/images/emoji/1f6a3-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f6a3-1f3fd.png b/images/emoji/1f6a3-1f3fd.png
new file mode 100644
index 000000000..8ebd89a55
--- /dev/null
+++ b/images/emoji/1f6a3-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f6a3-1f3fe.png b/images/emoji/1f6a3-1f3fe.png
new file mode 100644
index 000000000..2b0d04f87
--- /dev/null
+++ b/images/emoji/1f6a3-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f6a3-1f3ff.png b/images/emoji/1f6a3-1f3ff.png
new file mode 100644
index 000000000..b346f2dfc
--- /dev/null
+++ b/images/emoji/1f6a3-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f6a3.png b/images/emoji/1f6a3.png
new file mode 100644
index 000000000..dd4dfc095
--- /dev/null
+++ b/images/emoji/1f6a3.png
Binary files differ
diff --git a/images/emoji/1f6a4.png b/images/emoji/1f6a4.png
new file mode 100644
index 000000000..74059d12d
--- /dev/null
+++ b/images/emoji/1f6a4.png
Binary files differ
diff --git a/images/emoji/1f6a5.png b/images/emoji/1f6a5.png
new file mode 100644
index 000000000..6b312285b
--- /dev/null
+++ b/images/emoji/1f6a5.png
Binary files differ
diff --git a/images/emoji/1f6a6.png b/images/emoji/1f6a6.png
new file mode 100644
index 000000000..8085973ee
--- /dev/null
+++ b/images/emoji/1f6a6.png
Binary files differ
diff --git a/images/emoji/1f6a7.png b/images/emoji/1f6a7.png
new file mode 100644
index 000000000..ef8db5f47
--- /dev/null
+++ b/images/emoji/1f6a7.png
Binary files differ
diff --git a/images/emoji/1f6a8.png b/images/emoji/1f6a8.png
new file mode 100644
index 000000000..cad66b0af
--- /dev/null
+++ b/images/emoji/1f6a8.png
Binary files differ
diff --git a/images/emoji/1f6a9.png b/images/emoji/1f6a9.png
new file mode 100644
index 000000000..c12d8b068
--- /dev/null
+++ b/images/emoji/1f6a9.png
Binary files differ
diff --git a/images/emoji/1f6aa.png b/images/emoji/1f6aa.png
new file mode 100644
index 000000000..36ae3e274
--- /dev/null
+++ b/images/emoji/1f6aa.png
Binary files differ
diff --git a/images/emoji/1f6ab.png b/images/emoji/1f6ab.png
new file mode 100644
index 000000000..d2efd65e7
--- /dev/null
+++ b/images/emoji/1f6ab.png
Binary files differ
diff --git a/images/emoji/1f6ac.png b/images/emoji/1f6ac.png
new file mode 100644
index 000000000..910f648c8
--- /dev/null
+++ b/images/emoji/1f6ac.png
Binary files differ
diff --git a/images/emoji/1f6ad.png b/images/emoji/1f6ad.png
new file mode 100644
index 000000000..d33b9de53
--- /dev/null
+++ b/images/emoji/1f6ad.png
Binary files differ
diff --git a/images/emoji/1f6ae.png b/images/emoji/1f6ae.png
new file mode 100644
index 000000000..82a84f9a3
--- /dev/null
+++ b/images/emoji/1f6ae.png
Binary files differ
diff --git a/images/emoji/1f6af.png b/images/emoji/1f6af.png
new file mode 100644
index 000000000..341d2575f
--- /dev/null
+++ b/images/emoji/1f6af.png
Binary files differ
diff --git a/images/emoji/1f6b0.png b/images/emoji/1f6b0.png
new file mode 100644
index 000000000..2c6100494
--- /dev/null
+++ b/images/emoji/1f6b0.png
Binary files differ
diff --git a/images/emoji/1f6b1.png b/images/emoji/1f6b1.png
new file mode 100644
index 000000000..827d4193f
--- /dev/null
+++ b/images/emoji/1f6b1.png
Binary files differ
diff --git a/images/emoji/1f6b2.png b/images/emoji/1f6b2.png
new file mode 100644
index 000000000..6125842f8
--- /dev/null
+++ b/images/emoji/1f6b2.png
Binary files differ
diff --git a/images/emoji/1f6b3.png b/images/emoji/1f6b3.png
new file mode 100644
index 000000000..19c85421c
--- /dev/null
+++ b/images/emoji/1f6b3.png
Binary files differ
diff --git a/images/emoji/1f6b4-1f3fb.png b/images/emoji/1f6b4-1f3fb.png
new file mode 100644
index 000000000..decc2f728
--- /dev/null
+++ b/images/emoji/1f6b4-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f6b4-1f3fc.png b/images/emoji/1f6b4-1f3fc.png
new file mode 100644
index 000000000..0067717b8
--- /dev/null
+++ b/images/emoji/1f6b4-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f6b4-1f3fd.png b/images/emoji/1f6b4-1f3fd.png
new file mode 100644
index 000000000..a4f7b5e27
--- /dev/null
+++ b/images/emoji/1f6b4-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f6b4-1f3fe.png b/images/emoji/1f6b4-1f3fe.png
new file mode 100644
index 000000000..a3c8a797d
--- /dev/null
+++ b/images/emoji/1f6b4-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f6b4-1f3ff.png b/images/emoji/1f6b4-1f3ff.png
new file mode 100644
index 000000000..1606a8740
--- /dev/null
+++ b/images/emoji/1f6b4-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f6b4.png b/images/emoji/1f6b4.png
new file mode 100644
index 000000000..9274da110
--- /dev/null
+++ b/images/emoji/1f6b4.png
Binary files differ
diff --git a/images/emoji/1f6b5-1f3fb.png b/images/emoji/1f6b5-1f3fb.png
new file mode 100644
index 000000000..e9f1daf5e
--- /dev/null
+++ b/images/emoji/1f6b5-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f6b5-1f3fc.png b/images/emoji/1f6b5-1f3fc.png
new file mode 100644
index 000000000..555b9e29d
--- /dev/null
+++ b/images/emoji/1f6b5-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f6b5-1f3fd.png b/images/emoji/1f6b5-1f3fd.png
new file mode 100644
index 000000000..7df5508ec
--- /dev/null
+++ b/images/emoji/1f6b5-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f6b5-1f3fe.png b/images/emoji/1f6b5-1f3fe.png
new file mode 100644
index 000000000..f94b34506
--- /dev/null
+++ b/images/emoji/1f6b5-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f6b5-1f3ff.png b/images/emoji/1f6b5-1f3ff.png
new file mode 100644
index 000000000..16a45861e
--- /dev/null
+++ b/images/emoji/1f6b5-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f6b5.png b/images/emoji/1f6b5.png
new file mode 100644
index 000000000..41d3dc3ac
--- /dev/null
+++ b/images/emoji/1f6b5.png
Binary files differ
diff --git a/images/emoji/1f6b6-1f3fb.png b/images/emoji/1f6b6-1f3fb.png
new file mode 100644
index 000000000..4e391b45a
--- /dev/null
+++ b/images/emoji/1f6b6-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f6b6-1f3fc.png b/images/emoji/1f6b6-1f3fc.png
new file mode 100644
index 000000000..31f94a1bc
--- /dev/null
+++ b/images/emoji/1f6b6-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f6b6-1f3fd.png b/images/emoji/1f6b6-1f3fd.png
new file mode 100644
index 000000000..f7ed8e39c
--- /dev/null
+++ b/images/emoji/1f6b6-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f6b6-1f3fe.png b/images/emoji/1f6b6-1f3fe.png
new file mode 100644
index 000000000..e58dc04c7
--- /dev/null
+++ b/images/emoji/1f6b6-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f6b6-1f3ff.png b/images/emoji/1f6b6-1f3ff.png
new file mode 100644
index 000000000..ba4e1b58f
--- /dev/null
+++ b/images/emoji/1f6b6-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f6b6.png b/images/emoji/1f6b6.png
new file mode 100644
index 000000000..06dc169a3
--- /dev/null
+++ b/images/emoji/1f6b6.png
Binary files differ
diff --git a/images/emoji/1f6b7.png b/images/emoji/1f6b7.png
new file mode 100644
index 000000000..286aa577a
--- /dev/null
+++ b/images/emoji/1f6b7.png
Binary files differ
diff --git a/images/emoji/1f6b8.png b/images/emoji/1f6b8.png
new file mode 100644
index 000000000..fa4c091c7
--- /dev/null
+++ b/images/emoji/1f6b8.png
Binary files differ
diff --git a/images/emoji/1f6b9.png b/images/emoji/1f6b9.png
new file mode 100644
index 000000000..f5a1e1ba0
--- /dev/null
+++ b/images/emoji/1f6b9.png
Binary files differ
diff --git a/images/emoji/1f6ba.png b/images/emoji/1f6ba.png
new file mode 100644
index 000000000..d4ecc22e7
--- /dev/null
+++ b/images/emoji/1f6ba.png
Binary files differ
diff --git a/images/emoji/1f6bb.png b/images/emoji/1f6bb.png
new file mode 100644
index 000000000..9588e0f0e
--- /dev/null
+++ b/images/emoji/1f6bb.png
Binary files differ
diff --git a/images/emoji/1f6bc.png b/images/emoji/1f6bc.png
new file mode 100644
index 000000000..64a10b717
--- /dev/null
+++ b/images/emoji/1f6bc.png
Binary files differ
diff --git a/images/emoji/1f6bd.png b/images/emoji/1f6bd.png
new file mode 100644
index 000000000..1392f7618
--- /dev/null
+++ b/images/emoji/1f6bd.png
Binary files differ
diff --git a/images/emoji/1f6be.png b/images/emoji/1f6be.png
new file mode 100644
index 000000000..aa433e84b
--- /dev/null
+++ b/images/emoji/1f6be.png
Binary files differ
diff --git a/images/emoji/1f6bf.png b/images/emoji/1f6bf.png
new file mode 100644
index 000000000..156776a2e
--- /dev/null
+++ b/images/emoji/1f6bf.png
Binary files differ
diff --git a/images/emoji/1f6c0-1f3fb.png b/images/emoji/1f6c0-1f3fb.png
new file mode 100644
index 000000000..2152eabf2
--- /dev/null
+++ b/images/emoji/1f6c0-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f6c0-1f3fc.png b/images/emoji/1f6c0-1f3fc.png
new file mode 100644
index 000000000..2102e6133
--- /dev/null
+++ b/images/emoji/1f6c0-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f6c0-1f3fd.png b/images/emoji/1f6c0-1f3fd.png
new file mode 100644
index 000000000..fae66181e
--- /dev/null
+++ b/images/emoji/1f6c0-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f6c0-1f3fe.png b/images/emoji/1f6c0-1f3fe.png
new file mode 100644
index 000000000..1f8959d0d
--- /dev/null
+++ b/images/emoji/1f6c0-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f6c0-1f3ff.png b/images/emoji/1f6c0-1f3ff.png
new file mode 100644
index 000000000..c8a08e84f
--- /dev/null
+++ b/images/emoji/1f6c0-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f6c0.png b/images/emoji/1f6c0.png
new file mode 100644
index 000000000..43fba5c8a
--- /dev/null
+++ b/images/emoji/1f6c0.png
Binary files differ
diff --git a/images/emoji/1f6c1.png b/images/emoji/1f6c1.png
new file mode 100644
index 000000000..9a5f09361
--- /dev/null
+++ b/images/emoji/1f6c1.png
Binary files differ
diff --git a/images/emoji/1f6c2.png b/images/emoji/1f6c2.png
new file mode 100644
index 000000000..079e34ee4
--- /dev/null
+++ b/images/emoji/1f6c2.png
Binary files differ
diff --git a/images/emoji/1f6c3.png b/images/emoji/1f6c3.png
new file mode 100644
index 000000000..21b7ce2c6
--- /dev/null
+++ b/images/emoji/1f6c3.png
Binary files differ
diff --git a/images/emoji/1f6c4.png b/images/emoji/1f6c4.png
new file mode 100644
index 000000000..409b593e7
--- /dev/null
+++ b/images/emoji/1f6c4.png
Binary files differ
diff --git a/images/emoji/1f6c5.png b/images/emoji/1f6c5.png
new file mode 100644
index 000000000..887b23f3f
--- /dev/null
+++ b/images/emoji/1f6c5.png
Binary files differ
diff --git a/images/emoji/1f6cb.png b/images/emoji/1f6cb.png
new file mode 100644
index 000000000..27b19b13b
--- /dev/null
+++ b/images/emoji/1f6cb.png
Binary files differ
diff --git a/images/emoji/1f6cc.png b/images/emoji/1f6cc.png
new file mode 100644
index 000000000..c739e7fb6
--- /dev/null
+++ b/images/emoji/1f6cc.png
Binary files differ
diff --git a/images/emoji/1f6cd.png b/images/emoji/1f6cd.png
new file mode 100644
index 000000000..99f2a2b13
--- /dev/null
+++ b/images/emoji/1f6cd.png
Binary files differ
diff --git a/images/emoji/1f6ce.png b/images/emoji/1f6ce.png
new file mode 100644
index 000000000..6b3297cea
--- /dev/null
+++ b/images/emoji/1f6ce.png
Binary files differ
diff --git a/images/emoji/1f6cf.png b/images/emoji/1f6cf.png
new file mode 100644
index 000000000..cf75349a3
--- /dev/null
+++ b/images/emoji/1f6cf.png
Binary files differ
diff --git a/images/emoji/1f6d0.png b/images/emoji/1f6d0.png
new file mode 100644
index 000000000..207d59cce
--- /dev/null
+++ b/images/emoji/1f6d0.png
Binary files differ
diff --git a/images/emoji/1f6d1.png b/images/emoji/1f6d1.png
new file mode 100644
index 000000000..5ed610040
--- /dev/null
+++ b/images/emoji/1f6d1.png
Binary files differ
diff --git a/images/emoji/1f6d2.png b/images/emoji/1f6d2.png
new file mode 100644
index 000000000..1086fe6e4
--- /dev/null
+++ b/images/emoji/1f6d2.png
Binary files differ
diff --git a/images/emoji/1f6e0.png b/images/emoji/1f6e0.png
new file mode 100644
index 000000000..3c6049273
--- /dev/null
+++ b/images/emoji/1f6e0.png
Binary files differ
diff --git a/images/emoji/1f6e1.png b/images/emoji/1f6e1.png
new file mode 100644
index 000000000..610bf033c
--- /dev/null
+++ b/images/emoji/1f6e1.png
Binary files differ
diff --git a/images/emoji/1f6e2.png b/images/emoji/1f6e2.png
new file mode 100644
index 000000000..c4c4d42da
--- /dev/null
+++ b/images/emoji/1f6e2.png
Binary files differ
diff --git a/images/emoji/1f6e3.png b/images/emoji/1f6e3.png
new file mode 100644
index 000000000..8c3d3d03e
--- /dev/null
+++ b/images/emoji/1f6e3.png
Binary files differ
diff --git a/images/emoji/1f6e4.png b/images/emoji/1f6e4.png
new file mode 100644
index 000000000..3bde6fb65
--- /dev/null
+++ b/images/emoji/1f6e4.png
Binary files differ
diff --git a/images/emoji/1f6e5.png b/images/emoji/1f6e5.png
new file mode 100644
index 000000000..0506db1a4
--- /dev/null
+++ b/images/emoji/1f6e5.png
Binary files differ
diff --git a/images/emoji/1f6e9.png b/images/emoji/1f6e9.png
new file mode 100644
index 000000000..b731b15e3
--- /dev/null
+++ b/images/emoji/1f6e9.png
Binary files differ
diff --git a/images/emoji/1f6eb.png b/images/emoji/1f6eb.png
new file mode 100644
index 000000000..a5766f9f4
--- /dev/null
+++ b/images/emoji/1f6eb.png
Binary files differ
diff --git a/images/emoji/1f6ec.png b/images/emoji/1f6ec.png
new file mode 100644
index 000000000..d66841962
--- /dev/null
+++ b/images/emoji/1f6ec.png
Binary files differ
diff --git a/images/emoji/1f6f0.png b/images/emoji/1f6f0.png
new file mode 100644
index 000000000..4ba55d6e2
--- /dev/null
+++ b/images/emoji/1f6f0.png
Binary files differ
diff --git a/images/emoji/1f6f3.png b/images/emoji/1f6f3.png
new file mode 100644
index 000000000..19d4acbe4
--- /dev/null
+++ b/images/emoji/1f6f3.png
Binary files differ
diff --git a/images/emoji/1f6f4.png b/images/emoji/1f6f4.png
new file mode 100644
index 000000000..4ab7ef59c
--- /dev/null
+++ b/images/emoji/1f6f4.png
Binary files differ
diff --git a/images/emoji/1f6f5.png b/images/emoji/1f6f5.png
new file mode 100644
index 000000000..c5afa72d8
--- /dev/null
+++ b/images/emoji/1f6f5.png
Binary files differ
diff --git a/images/emoji/1f6f6.png b/images/emoji/1f6f6.png
new file mode 100644
index 000000000..e26cdb9da
--- /dev/null
+++ b/images/emoji/1f6f6.png
Binary files differ
diff --git a/images/emoji/1f910.png b/images/emoji/1f910.png
new file mode 100644
index 000000000..f8ced2502
--- /dev/null
+++ b/images/emoji/1f910.png
Binary files differ
diff --git a/images/emoji/1f911.png b/images/emoji/1f911.png
new file mode 100644
index 000000000..75fd1e90c
--- /dev/null
+++ b/images/emoji/1f911.png
Binary files differ
diff --git a/images/emoji/1f912.png b/images/emoji/1f912.png
new file mode 100644
index 000000000..8a1e841af
--- /dev/null
+++ b/images/emoji/1f912.png
Binary files differ
diff --git a/images/emoji/1f913.png b/images/emoji/1f913.png
new file mode 100644
index 000000000..7820bd581
--- /dev/null
+++ b/images/emoji/1f913.png
Binary files differ
diff --git a/images/emoji/1f914.png b/images/emoji/1f914.png
new file mode 100644
index 000000000..c18f6fd14
--- /dev/null
+++ b/images/emoji/1f914.png
Binary files differ
diff --git a/images/emoji/1f915.png b/images/emoji/1f915.png
new file mode 100644
index 000000000..53c7be1d2
--- /dev/null
+++ b/images/emoji/1f915.png
Binary files differ
diff --git a/images/emoji/1f916.png b/images/emoji/1f916.png
new file mode 100644
index 000000000..7cc62612c
--- /dev/null
+++ b/images/emoji/1f916.png
Binary files differ
diff --git a/images/emoji/1f917.png b/images/emoji/1f917.png
new file mode 100644
index 000000000..f398b783a
--- /dev/null
+++ b/images/emoji/1f917.png
Binary files differ
diff --git a/images/emoji/1f918-1f3fb.png b/images/emoji/1f918-1f3fb.png
new file mode 100644
index 000000000..c080d2add
--- /dev/null
+++ b/images/emoji/1f918-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f918-1f3fc.png b/images/emoji/1f918-1f3fc.png
new file mode 100644
index 000000000..12313529b
--- /dev/null
+++ b/images/emoji/1f918-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f918-1f3fd.png b/images/emoji/1f918-1f3fd.png
new file mode 100644
index 000000000..ca9be6ae6
--- /dev/null
+++ b/images/emoji/1f918-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f918-1f3fe.png b/images/emoji/1f918-1f3fe.png
new file mode 100644
index 000000000..abe28cbf8
--- /dev/null
+++ b/images/emoji/1f918-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f918-1f3ff.png b/images/emoji/1f918-1f3ff.png
new file mode 100644
index 000000000..0c6b5dd34
--- /dev/null
+++ b/images/emoji/1f918-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f918.png b/images/emoji/1f918.png
new file mode 100644
index 000000000..4aa6e7e0a
--- /dev/null
+++ b/images/emoji/1f918.png
Binary files differ
diff --git a/images/emoji/1f919-1f3fb.png b/images/emoji/1f919-1f3fb.png
new file mode 100644
index 000000000..2c9320118
--- /dev/null
+++ b/images/emoji/1f919-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f919-1f3fc.png b/images/emoji/1f919-1f3fc.png
new file mode 100644
index 000000000..c39f45a41
--- /dev/null
+++ b/images/emoji/1f919-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f919-1f3fd.png b/images/emoji/1f919-1f3fd.png
new file mode 100644
index 000000000..83a57f63c
--- /dev/null
+++ b/images/emoji/1f919-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f919-1f3fe.png b/images/emoji/1f919-1f3fe.png
new file mode 100644
index 000000000..65b3468fe
--- /dev/null
+++ b/images/emoji/1f919-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f919-1f3ff.png b/images/emoji/1f919-1f3ff.png
new file mode 100644
index 000000000..94ef68ff3
--- /dev/null
+++ b/images/emoji/1f919-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f919.png b/images/emoji/1f919.png
new file mode 100644
index 000000000..a10c59ba7
--- /dev/null
+++ b/images/emoji/1f919.png
Binary files differ
diff --git a/images/emoji/1f91a-1f3fb.png b/images/emoji/1f91a-1f3fb.png
new file mode 100644
index 000000000..813d28499
--- /dev/null
+++ b/images/emoji/1f91a-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f91a-1f3fc.png b/images/emoji/1f91a-1f3fc.png
new file mode 100644
index 000000000..192ff795e
--- /dev/null
+++ b/images/emoji/1f91a-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f91a-1f3fd.png b/images/emoji/1f91a-1f3fd.png
new file mode 100644
index 000000000..61a727abe
--- /dev/null
+++ b/images/emoji/1f91a-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f91a-1f3fe.png b/images/emoji/1f91a-1f3fe.png
new file mode 100644
index 000000000..2e83da511
--- /dev/null
+++ b/images/emoji/1f91a-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f91a-1f3ff.png b/images/emoji/1f91a-1f3ff.png
new file mode 100644
index 000000000..d7a5b95a0
--- /dev/null
+++ b/images/emoji/1f91a-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f91a.png b/images/emoji/1f91a.png
new file mode 100644
index 000000000..479234294
--- /dev/null
+++ b/images/emoji/1f91a.png
Binary files differ
diff --git a/images/emoji/1f91b-1f3fb.png b/images/emoji/1f91b-1f3fb.png
new file mode 100644
index 000000000..1262a6b4b
--- /dev/null
+++ b/images/emoji/1f91b-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f91b-1f3fc.png b/images/emoji/1f91b-1f3fc.png
new file mode 100644
index 000000000..40bf70b82
--- /dev/null
+++ b/images/emoji/1f91b-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f91b-1f3fd.png b/images/emoji/1f91b-1f3fd.png
new file mode 100644
index 000000000..93f581451
--- /dev/null
+++ b/images/emoji/1f91b-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f91b-1f3fe.png b/images/emoji/1f91b-1f3fe.png
new file mode 100644
index 000000000..d82b5ec91
--- /dev/null
+++ b/images/emoji/1f91b-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f91b-1f3ff.png b/images/emoji/1f91b-1f3ff.png
new file mode 100644
index 000000000..09ae4cd49
--- /dev/null
+++ b/images/emoji/1f91b-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f91b.png b/images/emoji/1f91b.png
new file mode 100644
index 000000000..a9d9fd8d5
--- /dev/null
+++ b/images/emoji/1f91b.png
Binary files differ
diff --git a/images/emoji/1f91c-1f3fb.png b/images/emoji/1f91c-1f3fb.png
new file mode 100644
index 000000000..33ded2f61
--- /dev/null
+++ b/images/emoji/1f91c-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f91c-1f3fc.png b/images/emoji/1f91c-1f3fc.png
new file mode 100644
index 000000000..88054e335
--- /dev/null
+++ b/images/emoji/1f91c-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f91c-1f3fd.png b/images/emoji/1f91c-1f3fd.png
new file mode 100644
index 000000000..84b9f5da7
--- /dev/null
+++ b/images/emoji/1f91c-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f91c-1f3fe.png b/images/emoji/1f91c-1f3fe.png
new file mode 100644
index 000000000..e741cfea6
--- /dev/null
+++ b/images/emoji/1f91c-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f91c-1f3ff.png b/images/emoji/1f91c-1f3ff.png
new file mode 100644
index 000000000..cf66d760c
--- /dev/null
+++ b/images/emoji/1f91c-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f91c.png b/images/emoji/1f91c.png
new file mode 100644
index 000000000..754ed066d
--- /dev/null
+++ b/images/emoji/1f91c.png
Binary files differ
diff --git a/images/emoji/1f91d-1f3fb.png b/images/emoji/1f91d-1f3fb.png
new file mode 100644
index 000000000..255fc7ec6
--- /dev/null
+++ b/images/emoji/1f91d-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f91d-1f3fc.png b/images/emoji/1f91d-1f3fc.png
new file mode 100644
index 000000000..1aec7450e
--- /dev/null
+++ b/images/emoji/1f91d-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f91d-1f3fd.png b/images/emoji/1f91d-1f3fd.png
new file mode 100644
index 000000000..104d65691
--- /dev/null
+++ b/images/emoji/1f91d-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f91d-1f3fe.png b/images/emoji/1f91d-1f3fe.png
new file mode 100644
index 000000000..999966d4b
--- /dev/null
+++ b/images/emoji/1f91d-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f91d-1f3ff.png b/images/emoji/1f91d-1f3ff.png
new file mode 100644
index 000000000..9a38f1b66
--- /dev/null
+++ b/images/emoji/1f91d-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f91d.png b/images/emoji/1f91d.png
new file mode 100644
index 000000000..75e8d58e9
--- /dev/null
+++ b/images/emoji/1f91d.png
Binary files differ
diff --git a/images/emoji/1f91e-1f3fb.png b/images/emoji/1f91e-1f3fb.png
new file mode 100644
index 000000000..dd2384a6c
--- /dev/null
+++ b/images/emoji/1f91e-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f91e-1f3fc.png b/images/emoji/1f91e-1f3fc.png
new file mode 100644
index 000000000..6228401be
--- /dev/null
+++ b/images/emoji/1f91e-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f91e-1f3fd.png b/images/emoji/1f91e-1f3fd.png
new file mode 100644
index 000000000..b1074da15
--- /dev/null
+++ b/images/emoji/1f91e-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f91e-1f3fe.png b/images/emoji/1f91e-1f3fe.png
new file mode 100644
index 000000000..75e05e4d3
--- /dev/null
+++ b/images/emoji/1f91e-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f91e-1f3ff.png b/images/emoji/1f91e-1f3ff.png
new file mode 100644
index 000000000..761aebdc3
--- /dev/null
+++ b/images/emoji/1f91e-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f91e.png b/images/emoji/1f91e.png
new file mode 100644
index 000000000..4cd18514e
--- /dev/null
+++ b/images/emoji/1f91e.png
Binary files differ
diff --git a/images/emoji/1f920.png b/images/emoji/1f920.png
new file mode 100644
index 000000000..e67709b88
--- /dev/null
+++ b/images/emoji/1f920.png
Binary files differ
diff --git a/images/emoji/1f921.png b/images/emoji/1f921.png
new file mode 100644
index 000000000..f0e05bac4
--- /dev/null
+++ b/images/emoji/1f921.png
Binary files differ
diff --git a/images/emoji/1f922.png b/images/emoji/1f922.png
new file mode 100644
index 000000000..a566c109c
--- /dev/null
+++ b/images/emoji/1f922.png
Binary files differ
diff --git a/images/emoji/1f923.png b/images/emoji/1f923.png
new file mode 100644
index 000000000..b1736fedf
--- /dev/null
+++ b/images/emoji/1f923.png
Binary files differ
diff --git a/images/emoji/1f924.png b/images/emoji/1f924.png
new file mode 100644
index 000000000..a54605325
--- /dev/null
+++ b/images/emoji/1f924.png
Binary files differ
diff --git a/images/emoji/1f925.png b/images/emoji/1f925.png
new file mode 100644
index 000000000..02827e262
--- /dev/null
+++ b/images/emoji/1f925.png
Binary files differ
diff --git a/images/emoji/1f926-1f3fb.png b/images/emoji/1f926-1f3fb.png
new file mode 100644
index 000000000..2f4b010bb
--- /dev/null
+++ b/images/emoji/1f926-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f926-1f3fc.png b/images/emoji/1f926-1f3fc.png
new file mode 100644
index 000000000..9cba0b0e1
--- /dev/null
+++ b/images/emoji/1f926-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f926-1f3fd.png b/images/emoji/1f926-1f3fd.png
new file mode 100644
index 000000000..b5b5c1e53
--- /dev/null
+++ b/images/emoji/1f926-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f926-1f3fe.png b/images/emoji/1f926-1f3fe.png
new file mode 100644
index 000000000..2840b1134
--- /dev/null
+++ b/images/emoji/1f926-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f926-1f3ff.png b/images/emoji/1f926-1f3ff.png
new file mode 100644
index 000000000..6f070db98
--- /dev/null
+++ b/images/emoji/1f926-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f926.png b/images/emoji/1f926.png
new file mode 100644
index 000000000..defc796cf
--- /dev/null
+++ b/images/emoji/1f926.png
Binary files differ
diff --git a/images/emoji/1f927.png b/images/emoji/1f927.png
new file mode 100644
index 000000000..d6c796746
--- /dev/null
+++ b/images/emoji/1f927.png
Binary files differ
diff --git a/images/emoji/1f930-1f3fb.png b/images/emoji/1f930-1f3fb.png
new file mode 100644
index 000000000..a78703b33
--- /dev/null
+++ b/images/emoji/1f930-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f930-1f3fc.png b/images/emoji/1f930-1f3fc.png
new file mode 100644
index 000000000..0068c6c4a
--- /dev/null
+++ b/images/emoji/1f930-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f930-1f3fd.png b/images/emoji/1f930-1f3fd.png
new file mode 100644
index 000000000..3206296b6
--- /dev/null
+++ b/images/emoji/1f930-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f930-1f3fe.png b/images/emoji/1f930-1f3fe.png
new file mode 100644
index 000000000..120fda5cd
--- /dev/null
+++ b/images/emoji/1f930-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f930-1f3ff.png b/images/emoji/1f930-1f3ff.png
new file mode 100644
index 000000000..569bfdf05
--- /dev/null
+++ b/images/emoji/1f930-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f930.png b/images/emoji/1f930.png
new file mode 100644
index 000000000..084e83a41
--- /dev/null
+++ b/images/emoji/1f930.png
Binary files differ
diff --git a/images/emoji/1f933-1f3fb.png b/images/emoji/1f933-1f3fb.png
new file mode 100644
index 000000000..290e075b5
--- /dev/null
+++ b/images/emoji/1f933-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f933-1f3fc.png b/images/emoji/1f933-1f3fc.png
new file mode 100644
index 000000000..fcd9595b6
--- /dev/null
+++ b/images/emoji/1f933-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f933-1f3fd.png b/images/emoji/1f933-1f3fd.png
new file mode 100644
index 000000000..f3a22fdf4
--- /dev/null
+++ b/images/emoji/1f933-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f933-1f3fe.png b/images/emoji/1f933-1f3fe.png
new file mode 100644
index 000000000..cdecf6d9f
--- /dev/null
+++ b/images/emoji/1f933-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f933-1f3ff.png b/images/emoji/1f933-1f3ff.png
new file mode 100644
index 000000000..86acbb6c2
--- /dev/null
+++ b/images/emoji/1f933-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f933.png b/images/emoji/1f933.png
new file mode 100644
index 000000000..6a1ba75c7
--- /dev/null
+++ b/images/emoji/1f933.png
Binary files differ
diff --git a/images/emoji/1f934-1f3fb.png b/images/emoji/1f934-1f3fb.png
new file mode 100644
index 000000000..9102f9c46
--- /dev/null
+++ b/images/emoji/1f934-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f934-1f3fc.png b/images/emoji/1f934-1f3fc.png
new file mode 100644
index 000000000..23d8b3b12
--- /dev/null
+++ b/images/emoji/1f934-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f934-1f3fd.png b/images/emoji/1f934-1f3fd.png
new file mode 100644
index 000000000..e7692efb7
--- /dev/null
+++ b/images/emoji/1f934-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f934-1f3fe.png b/images/emoji/1f934-1f3fe.png
new file mode 100644
index 000000000..8e10f8be6
--- /dev/null
+++ b/images/emoji/1f934-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f934-1f3ff.png b/images/emoji/1f934-1f3ff.png
new file mode 100644
index 000000000..138d4ea70
--- /dev/null
+++ b/images/emoji/1f934-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f934.png b/images/emoji/1f934.png
new file mode 100644
index 000000000..38d69344c
--- /dev/null
+++ b/images/emoji/1f934.png
Binary files differ
diff --git a/images/emoji/1f935-1f3fb.png b/images/emoji/1f935-1f3fb.png
new file mode 100644
index 000000000..7b6b3acd9
--- /dev/null
+++ b/images/emoji/1f935-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f935-1f3fc.png b/images/emoji/1f935-1f3fc.png
new file mode 100644
index 000000000..7975191b3
--- /dev/null
+++ b/images/emoji/1f935-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f935-1f3fd.png b/images/emoji/1f935-1f3fd.png
new file mode 100644
index 000000000..a2816f600
--- /dev/null
+++ b/images/emoji/1f935-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f935-1f3fe.png b/images/emoji/1f935-1f3fe.png
new file mode 100644
index 000000000..ea8291760
--- /dev/null
+++ b/images/emoji/1f935-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f935-1f3ff.png b/images/emoji/1f935-1f3ff.png
new file mode 100644
index 000000000..c743e05fc
--- /dev/null
+++ b/images/emoji/1f935-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f935.png b/images/emoji/1f935.png
new file mode 100644
index 000000000..5f7e9303f
--- /dev/null
+++ b/images/emoji/1f935.png
Binary files differ
diff --git a/images/emoji/1f936-1f3fb.png b/images/emoji/1f936-1f3fb.png
new file mode 100644
index 000000000..d8a695d70
--- /dev/null
+++ b/images/emoji/1f936-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f936-1f3fc.png b/images/emoji/1f936-1f3fc.png
new file mode 100644
index 000000000..0e17e8c51
--- /dev/null
+++ b/images/emoji/1f936-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f936-1f3fd.png b/images/emoji/1f936-1f3fd.png
new file mode 100644
index 000000000..195ebc400
--- /dev/null
+++ b/images/emoji/1f936-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f936-1f3fe.png b/images/emoji/1f936-1f3fe.png
new file mode 100644
index 000000000..68a556da2
--- /dev/null
+++ b/images/emoji/1f936-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f936-1f3ff.png b/images/emoji/1f936-1f3ff.png
new file mode 100644
index 000000000..ccab3c40f
--- /dev/null
+++ b/images/emoji/1f936-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f936.png b/images/emoji/1f936.png
new file mode 100644
index 000000000..078f0657f
--- /dev/null
+++ b/images/emoji/1f936.png
Binary files differ
diff --git a/images/emoji/1f937-1f3fb.png b/images/emoji/1f937-1f3fb.png
new file mode 100644
index 000000000..1c895e644
--- /dev/null
+++ b/images/emoji/1f937-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f937-1f3fc.png b/images/emoji/1f937-1f3fc.png
new file mode 100644
index 000000000..d76ac4b19
--- /dev/null
+++ b/images/emoji/1f937-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f937-1f3fd.png b/images/emoji/1f937-1f3fd.png
new file mode 100644
index 000000000..dc3a5a9fb
--- /dev/null
+++ b/images/emoji/1f937-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f937-1f3fe.png b/images/emoji/1f937-1f3fe.png
new file mode 100644
index 000000000..5fbef3f22
--- /dev/null
+++ b/images/emoji/1f937-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f937-1f3ff.png b/images/emoji/1f937-1f3ff.png
new file mode 100644
index 000000000..303640fe7
--- /dev/null
+++ b/images/emoji/1f937-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f937.png b/images/emoji/1f937.png
new file mode 100644
index 000000000..76e63bfac
--- /dev/null
+++ b/images/emoji/1f937.png
Binary files differ
diff --git a/images/emoji/1f938-1f3fb.png b/images/emoji/1f938-1f3fb.png
new file mode 100644
index 000000000..db6d65895
--- /dev/null
+++ b/images/emoji/1f938-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f938-1f3fc.png b/images/emoji/1f938-1f3fc.png
new file mode 100644
index 000000000..e00ffbc27
--- /dev/null
+++ b/images/emoji/1f938-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f938-1f3fd.png b/images/emoji/1f938-1f3fd.png
new file mode 100644
index 000000000..49321be39
--- /dev/null
+++ b/images/emoji/1f938-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f938-1f3fe.png b/images/emoji/1f938-1f3fe.png
new file mode 100644
index 000000000..d4562b5e3
--- /dev/null
+++ b/images/emoji/1f938-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f938-1f3ff.png b/images/emoji/1f938-1f3ff.png
new file mode 100644
index 000000000..6e09a8707
--- /dev/null
+++ b/images/emoji/1f938-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f938.png b/images/emoji/1f938.png
new file mode 100644
index 000000000..cbcaa5782
--- /dev/null
+++ b/images/emoji/1f938.png
Binary files differ
diff --git a/images/emoji/1f939-1f3fb.png b/images/emoji/1f939-1f3fb.png
new file mode 100644
index 000000000..c18eda400
--- /dev/null
+++ b/images/emoji/1f939-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f939-1f3fc.png b/images/emoji/1f939-1f3fc.png
new file mode 100644
index 000000000..de3b7a555
--- /dev/null
+++ b/images/emoji/1f939-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f939-1f3fd.png b/images/emoji/1f939-1f3fd.png
new file mode 100644
index 000000000..74ab6d854
--- /dev/null
+++ b/images/emoji/1f939-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f939-1f3fe.png b/images/emoji/1f939-1f3fe.png
new file mode 100644
index 000000000..1c5782320
--- /dev/null
+++ b/images/emoji/1f939-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f939-1f3ff.png b/images/emoji/1f939-1f3ff.png
new file mode 100644
index 000000000..c343d6ee9
--- /dev/null
+++ b/images/emoji/1f939-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f939.png b/images/emoji/1f939.png
new file mode 100644
index 000000000..a37f6224a
--- /dev/null
+++ b/images/emoji/1f939.png
Binary files differ
diff --git a/images/emoji/1f93a.png b/images/emoji/1f93a.png
new file mode 100644
index 000000000..9f6cb6ff8
--- /dev/null
+++ b/images/emoji/1f93a.png
Binary files differ
diff --git a/images/emoji/1f93b-1f3fb.png b/images/emoji/1f93b-1f3fb.png
new file mode 100644
index 000000000..f29209325
--- /dev/null
+++ b/images/emoji/1f93b-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f93b-1f3fc.png b/images/emoji/1f93b-1f3fc.png
new file mode 100644
index 000000000..fea2cc7ee
--- /dev/null
+++ b/images/emoji/1f93b-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f93b-1f3fd.png b/images/emoji/1f93b-1f3fd.png
new file mode 100644
index 000000000..030f32fdd
--- /dev/null
+++ b/images/emoji/1f93b-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f93b-1f3fe.png b/images/emoji/1f93b-1f3fe.png
new file mode 100644
index 000000000..d4d011091
--- /dev/null
+++ b/images/emoji/1f93b-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f93b-1f3ff.png b/images/emoji/1f93b-1f3ff.png
new file mode 100644
index 000000000..69a9789f5
--- /dev/null
+++ b/images/emoji/1f93b-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f93b.png b/images/emoji/1f93b.png
new file mode 100644
index 000000000..71e67cfad
--- /dev/null
+++ b/images/emoji/1f93b.png
Binary files differ
diff --git a/images/emoji/1f93c-1f3fb.png b/images/emoji/1f93c-1f3fb.png
new file mode 100644
index 000000000..379070fd0
--- /dev/null
+++ b/images/emoji/1f93c-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f93c-1f3fc.png b/images/emoji/1f93c-1f3fc.png
new file mode 100644
index 000000000..6863ea920
--- /dev/null
+++ b/images/emoji/1f93c-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f93c-1f3fd.png b/images/emoji/1f93c-1f3fd.png
new file mode 100644
index 000000000..b7e629101
--- /dev/null
+++ b/images/emoji/1f93c-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f93c-1f3fe.png b/images/emoji/1f93c-1f3fe.png
new file mode 100644
index 000000000..750f95892
--- /dev/null
+++ b/images/emoji/1f93c-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f93c-1f3ff.png b/images/emoji/1f93c-1f3ff.png
new file mode 100644
index 000000000..36ab9bb3f
--- /dev/null
+++ b/images/emoji/1f93c-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f93c.png b/images/emoji/1f93c.png
new file mode 100644
index 000000000..9838f24e5
--- /dev/null
+++ b/images/emoji/1f93c.png
Binary files differ
diff --git a/images/emoji/1f93d-1f3fb.png b/images/emoji/1f93d-1f3fb.png
new file mode 100644
index 000000000..bed1a908d
--- /dev/null
+++ b/images/emoji/1f93d-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f93d-1f3fc.png b/images/emoji/1f93d-1f3fc.png
new file mode 100644
index 000000000..2e44151d3
--- /dev/null
+++ b/images/emoji/1f93d-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f93d-1f3fd.png b/images/emoji/1f93d-1f3fd.png
new file mode 100644
index 000000000..b081a4a5a
--- /dev/null
+++ b/images/emoji/1f93d-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f93d-1f3fe.png b/images/emoji/1f93d-1f3fe.png
new file mode 100644
index 000000000..82cfbc3b0
--- /dev/null
+++ b/images/emoji/1f93d-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f93d-1f3ff.png b/images/emoji/1f93d-1f3ff.png
new file mode 100644
index 000000000..6b8e245dc
--- /dev/null
+++ b/images/emoji/1f93d-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f93d.png b/images/emoji/1f93d.png
new file mode 100644
index 000000000..8d6114761
--- /dev/null
+++ b/images/emoji/1f93d.png
Binary files differ
diff --git a/images/emoji/1f93e-1f3fb.png b/images/emoji/1f93e-1f3fb.png
new file mode 100644
index 000000000..a68057a7d
--- /dev/null
+++ b/images/emoji/1f93e-1f3fb.png
Binary files differ
diff --git a/images/emoji/1f93e-1f3fc.png b/images/emoji/1f93e-1f3fc.png
new file mode 100644
index 000000000..74972f8a5
--- /dev/null
+++ b/images/emoji/1f93e-1f3fc.png
Binary files differ
diff --git a/images/emoji/1f93e-1f3fd.png b/images/emoji/1f93e-1f3fd.png
new file mode 100644
index 000000000..0e3a37c3d
--- /dev/null
+++ b/images/emoji/1f93e-1f3fd.png
Binary files differ
diff --git a/images/emoji/1f93e-1f3fe.png b/images/emoji/1f93e-1f3fe.png
new file mode 100644
index 000000000..e1233f382
--- /dev/null
+++ b/images/emoji/1f93e-1f3fe.png
Binary files differ
diff --git a/images/emoji/1f93e-1f3ff.png b/images/emoji/1f93e-1f3ff.png
new file mode 100644
index 000000000..6b1eb9b64
--- /dev/null
+++ b/images/emoji/1f93e-1f3ff.png
Binary files differ
diff --git a/images/emoji/1f93e.png b/images/emoji/1f93e.png
new file mode 100644
index 000000000..cb4457678
--- /dev/null
+++ b/images/emoji/1f93e.png
Binary files differ
diff --git a/images/emoji/1f93f.png b/images/emoji/1f93f.png
new file mode 100644
index 000000000..677c060b4
--- /dev/null
+++ b/images/emoji/1f93f.png
Binary files differ
diff --git a/images/emoji/1f940.png b/images/emoji/1f940.png
new file mode 100644
index 000000000..62412b143
--- /dev/null
+++ b/images/emoji/1f940.png
Binary files differ
diff --git a/images/emoji/1f942.png b/images/emoji/1f942.png
new file mode 100644
index 000000000..32f18d4c9
--- /dev/null
+++ b/images/emoji/1f942.png
Binary files differ
diff --git a/images/emoji/1f943.png b/images/emoji/1f943.png
new file mode 100644
index 000000000..7bf092298
--- /dev/null
+++ b/images/emoji/1f943.png
Binary files differ
diff --git a/images/emoji/1f944.png b/images/emoji/1f944.png
new file mode 100644
index 000000000..3c4da766a
--- /dev/null
+++ b/images/emoji/1f944.png
Binary files differ
diff --git a/images/emoji/1f945.png b/images/emoji/1f945.png
new file mode 100644
index 000000000..3bec11c5b
--- /dev/null
+++ b/images/emoji/1f945.png
Binary files differ
diff --git a/images/emoji/1f946.png b/images/emoji/1f946.png
new file mode 100644
index 000000000..2815a1bb3
--- /dev/null
+++ b/images/emoji/1f946.png
Binary files differ
diff --git a/images/emoji/1f947.png b/images/emoji/1f947.png
new file mode 100644
index 000000000..83011ad99
--- /dev/null
+++ b/images/emoji/1f947.png
Binary files differ
diff --git a/images/emoji/1f948.png b/images/emoji/1f948.png
new file mode 100644
index 000000000..41926fcf5
--- /dev/null
+++ b/images/emoji/1f948.png
Binary files differ
diff --git a/images/emoji/1f949.png b/images/emoji/1f949.png
new file mode 100644
index 000000000..c713851bc
--- /dev/null
+++ b/images/emoji/1f949.png
Binary files differ
diff --git a/images/emoji/1f950.png b/images/emoji/1f950.png
new file mode 100644
index 000000000..502df5b15
--- /dev/null
+++ b/images/emoji/1f950.png
Binary files differ
diff --git a/images/emoji/1f951.png b/images/emoji/1f951.png
new file mode 100644
index 000000000..96b847232
--- /dev/null
+++ b/images/emoji/1f951.png
Binary files differ
diff --git a/images/emoji/1f952.png b/images/emoji/1f952.png
new file mode 100644
index 000000000..c01fd0edd
--- /dev/null
+++ b/images/emoji/1f952.png
Binary files differ
diff --git a/images/emoji/1f953.png b/images/emoji/1f953.png
new file mode 100644
index 000000000..f38a485fb
--- /dev/null
+++ b/images/emoji/1f953.png
Binary files differ
diff --git a/images/emoji/1f954.png b/images/emoji/1f954.png
new file mode 100644
index 000000000..5fa341216
--- /dev/null
+++ b/images/emoji/1f954.png
Binary files differ
diff --git a/images/emoji/1f955.png b/images/emoji/1f955.png
new file mode 100644
index 000000000..c68829b58
--- /dev/null
+++ b/images/emoji/1f955.png
Binary files differ
diff --git a/images/emoji/1f956.png b/images/emoji/1f956.png
new file mode 100644
index 000000000..72477ff78
--- /dev/null
+++ b/images/emoji/1f956.png
Binary files differ
diff --git a/images/emoji/1f957.png b/images/emoji/1f957.png
new file mode 100644
index 000000000..c89f93411
--- /dev/null
+++ b/images/emoji/1f957.png
Binary files differ
diff --git a/images/emoji/1f958.png b/images/emoji/1f958.png
new file mode 100644
index 000000000..663a1006a
--- /dev/null
+++ b/images/emoji/1f958.png
Binary files differ
diff --git a/images/emoji/1f959.png b/images/emoji/1f959.png
new file mode 100644
index 000000000..a2e10df40
--- /dev/null
+++ b/images/emoji/1f959.png
Binary files differ
diff --git a/images/emoji/1f95a.png b/images/emoji/1f95a.png
new file mode 100644
index 000000000..c171974d9
--- /dev/null
+++ b/images/emoji/1f95a.png
Binary files differ
diff --git a/images/emoji/1f95b.png b/images/emoji/1f95b.png
new file mode 100644
index 000000000..e4fcf2e64
--- /dev/null
+++ b/images/emoji/1f95b.png
Binary files differ
diff --git a/images/emoji/1f95c.png b/images/emoji/1f95c.png
new file mode 100644
index 000000000..b64fadad0
--- /dev/null
+++ b/images/emoji/1f95c.png
Binary files differ
diff --git a/images/emoji/1f95d.png b/images/emoji/1f95d.png
new file mode 100644
index 000000000..f04835776
--- /dev/null
+++ b/images/emoji/1f95d.png
Binary files differ
diff --git a/images/emoji/1f95e.png b/images/emoji/1f95e.png
new file mode 100644
index 000000000..6223d1a28
--- /dev/null
+++ b/images/emoji/1f95e.png
Binary files differ
diff --git a/images/emoji/1f960.png b/images/emoji/1f960.png
new file mode 100644
index 000000000..e890c30d4
--- /dev/null
+++ b/images/emoji/1f960.png
Binary files differ
diff --git a/images/emoji/1f961.png b/images/emoji/1f961.png
new file mode 100644
index 000000000..4d09f0ee4
--- /dev/null
+++ b/images/emoji/1f961.png
Binary files differ
diff --git a/images/emoji/1f980.png b/images/emoji/1f980.png
new file mode 100644
index 000000000..ca9350f51
--- /dev/null
+++ b/images/emoji/1f980.png
Binary files differ
diff --git a/images/emoji/1f981.png b/images/emoji/1f981.png
new file mode 100644
index 000000000..5062ab47e
--- /dev/null
+++ b/images/emoji/1f981.png
Binary files differ
diff --git a/images/emoji/1f982.png b/images/emoji/1f982.png
new file mode 100644
index 000000000..449a6b281
--- /dev/null
+++ b/images/emoji/1f982.png
Binary files differ
diff --git a/images/emoji/1f983.png b/images/emoji/1f983.png
new file mode 100644
index 000000000..344af94c9
--- /dev/null
+++ b/images/emoji/1f983.png
Binary files differ
diff --git a/images/emoji/1f984.png b/images/emoji/1f984.png
new file mode 100644
index 000000000..05a97969f
--- /dev/null
+++ b/images/emoji/1f984.png
Binary files differ
diff --git a/images/emoji/1f985.png b/images/emoji/1f985.png
new file mode 100644
index 000000000..4f277debe
--- /dev/null
+++ b/images/emoji/1f985.png
Binary files differ
diff --git a/images/emoji/1f986.png b/images/emoji/1f986.png
new file mode 100644
index 000000000..74330b77c
--- /dev/null
+++ b/images/emoji/1f986.png
Binary files differ
diff --git a/images/emoji/1f987.png b/images/emoji/1f987.png
new file mode 100644
index 000000000..c8f23c515
--- /dev/null
+++ b/images/emoji/1f987.png
Binary files differ
diff --git a/images/emoji/1f988.png b/images/emoji/1f988.png
new file mode 100644
index 000000000..c75076d57
--- /dev/null
+++ b/images/emoji/1f988.png
Binary files differ
diff --git a/images/emoji/1f989.png b/images/emoji/1f989.png
new file mode 100644
index 000000000..a2c318b15
--- /dev/null
+++ b/images/emoji/1f989.png
Binary files differ
diff --git a/images/emoji/1f98a.png b/images/emoji/1f98a.png
new file mode 100644
index 000000000..aaf1dad35
--- /dev/null
+++ b/images/emoji/1f98a.png
Binary files differ
diff --git a/images/emoji/1f98b.png b/images/emoji/1f98b.png
new file mode 100644
index 000000000..5631fe992
--- /dev/null
+++ b/images/emoji/1f98b.png
Binary files differ
diff --git a/images/emoji/1f98c.png b/images/emoji/1f98c.png
new file mode 100644
index 000000000..4a501f880
--- /dev/null
+++ b/images/emoji/1f98c.png
Binary files differ
diff --git a/images/emoji/1f98d.png b/images/emoji/1f98d.png
new file mode 100644
index 000000000..4f2f9bb38
--- /dev/null
+++ b/images/emoji/1f98d.png
Binary files differ
diff --git a/images/emoji/1f98e.png b/images/emoji/1f98e.png
new file mode 100644
index 000000000..836387605
--- /dev/null
+++ b/images/emoji/1f98e.png
Binary files differ
diff --git a/images/emoji/1f98f.png b/images/emoji/1f98f.png
new file mode 100644
index 000000000..12f4e0d9d
--- /dev/null
+++ b/images/emoji/1f98f.png
Binary files differ
diff --git a/images/emoji/1f990.png b/images/emoji/1f990.png
new file mode 100644
index 000000000..49eff28a7
--- /dev/null
+++ b/images/emoji/1f990.png
Binary files differ
diff --git a/images/emoji/1f991.png b/images/emoji/1f991.png
new file mode 100644
index 000000000..f01eeba24
--- /dev/null
+++ b/images/emoji/1f991.png
Binary files differ
diff --git a/images/emoji/1f9c0.png b/images/emoji/1f9c0.png
new file mode 100644
index 000000000..00e997622
--- /dev/null
+++ b/images/emoji/1f9c0.png
Binary files differ
diff --git a/images/emoji/203c.png b/images/emoji/203c.png
new file mode 100644
index 000000000..58a9c528f
--- /dev/null
+++ b/images/emoji/203c.png
Binary files differ
diff --git a/images/emoji/2049.png b/images/emoji/2049.png
new file mode 100644
index 000000000..509813e9b
--- /dev/null
+++ b/images/emoji/2049.png
Binary files differ
diff --git a/images/emoji/2122.png b/images/emoji/2122.png
new file mode 100644
index 000000000..7a0c44a2c
--- /dev/null
+++ b/images/emoji/2122.png
Binary files differ
diff --git a/images/emoji/2139.png b/images/emoji/2139.png
new file mode 100644
index 000000000..871f2db93
--- /dev/null
+++ b/images/emoji/2139.png
Binary files differ
diff --git a/images/emoji/2194.png b/images/emoji/2194.png
new file mode 100644
index 000000000..7937f24f2
--- /dev/null
+++ b/images/emoji/2194.png
Binary files differ
diff --git a/images/emoji/2195.png b/images/emoji/2195.png
new file mode 100644
index 000000000..dfa32b971
--- /dev/null
+++ b/images/emoji/2195.png
Binary files differ
diff --git a/images/emoji/2196.png b/images/emoji/2196.png
new file mode 100644
index 000000000..f38718fbe
--- /dev/null
+++ b/images/emoji/2196.png
Binary files differ
diff --git a/images/emoji/2197.png b/images/emoji/2197.png
new file mode 100644
index 000000000..c43e12d0f
--- /dev/null
+++ b/images/emoji/2197.png
Binary files differ
diff --git a/images/emoji/2198.png b/images/emoji/2198.png
new file mode 100644
index 000000000..7e807da73
--- /dev/null
+++ b/images/emoji/2198.png
Binary files differ
diff --git a/images/emoji/2199.png b/images/emoji/2199.png
new file mode 100644
index 000000000..88b377160
--- /dev/null
+++ b/images/emoji/2199.png
Binary files differ
diff --git a/images/emoji/21a9.png b/images/emoji/21a9.png
new file mode 100644
index 000000000..ba45c2ad9
--- /dev/null
+++ b/images/emoji/21a9.png
Binary files differ
diff --git a/images/emoji/21aa.png b/images/emoji/21aa.png
new file mode 100644
index 000000000..e7258ad32
--- /dev/null
+++ b/images/emoji/21aa.png
Binary files differ
diff --git a/images/emoji/231a.png b/images/emoji/231a.png
new file mode 100644
index 000000000..64819bc6e
--- /dev/null
+++ b/images/emoji/231a.png
Binary files differ
diff --git a/images/emoji/231b.png b/images/emoji/231b.png
new file mode 100644
index 000000000..a5db2d1d3
--- /dev/null
+++ b/images/emoji/231b.png
Binary files differ
diff --git a/images/emoji/2328.png b/images/emoji/2328.png
new file mode 100644
index 000000000..75027cb9a
--- /dev/null
+++ b/images/emoji/2328.png
Binary files differ
diff --git a/images/emoji/23cf.png b/images/emoji/23cf.png
new file mode 100644
index 000000000..ec5cfc489
--- /dev/null
+++ b/images/emoji/23cf.png
Binary files differ
diff --git a/images/emoji/23e9.png b/images/emoji/23e9.png
new file mode 100644
index 000000000..c406fedfd
--- /dev/null
+++ b/images/emoji/23e9.png
Binary files differ
diff --git a/images/emoji/23ea.png b/images/emoji/23ea.png
new file mode 100644
index 000000000..e22e2bd3d
--- /dev/null
+++ b/images/emoji/23ea.png
Binary files differ
diff --git a/images/emoji/23eb.png b/images/emoji/23eb.png
new file mode 100644
index 000000000..13543d5ee
--- /dev/null
+++ b/images/emoji/23eb.png
Binary files differ
diff --git a/images/emoji/23ec.png b/images/emoji/23ec.png
new file mode 100644
index 000000000..90193bfcb
--- /dev/null
+++ b/images/emoji/23ec.png
Binary files differ
diff --git a/images/emoji/23ed.png b/images/emoji/23ed.png
new file mode 100644
index 000000000..f8880d33b
--- /dev/null
+++ b/images/emoji/23ed.png
Binary files differ
diff --git a/images/emoji/23ee.png b/images/emoji/23ee.png
new file mode 100644
index 000000000..1ffd0566c
--- /dev/null
+++ b/images/emoji/23ee.png
Binary files differ
diff --git a/images/emoji/23ef.png b/images/emoji/23ef.png
new file mode 100644
index 000000000..a9f857139
--- /dev/null
+++ b/images/emoji/23ef.png
Binary files differ
diff --git a/images/emoji/23f0.png b/images/emoji/23f0.png
new file mode 100644
index 000000000..cdbc2fbb9
--- /dev/null
+++ b/images/emoji/23f0.png
Binary files differ
diff --git a/images/emoji/23f1.png b/images/emoji/23f1.png
new file mode 100644
index 000000000..6a3a2ef64
--- /dev/null
+++ b/images/emoji/23f1.png
Binary files differ
diff --git a/images/emoji/23f2.png b/images/emoji/23f2.png
new file mode 100644
index 000000000..8a3be574c
--- /dev/null
+++ b/images/emoji/23f2.png
Binary files differ
diff --git a/images/emoji/23f3.png b/images/emoji/23f3.png
new file mode 100644
index 000000000..b93b15ed6
--- /dev/null
+++ b/images/emoji/23f3.png
Binary files differ
diff --git a/images/emoji/23f8.png b/images/emoji/23f8.png
new file mode 100644
index 000000000..4f07e7ebf
--- /dev/null
+++ b/images/emoji/23f8.png
Binary files differ
diff --git a/images/emoji/23f9.png b/images/emoji/23f9.png
new file mode 100644
index 000000000..cfa99988a
--- /dev/null
+++ b/images/emoji/23f9.png
Binary files differ
diff --git a/images/emoji/23fa.png b/images/emoji/23fa.png
new file mode 100644
index 000000000..ada52830f
--- /dev/null
+++ b/images/emoji/23fa.png
Binary files differ
diff --git a/images/emoji/24c2.png b/images/emoji/24c2.png
new file mode 100644
index 000000000..8a3506fc1
--- /dev/null
+++ b/images/emoji/24c2.png
Binary files differ
diff --git a/images/emoji/25aa.png b/images/emoji/25aa.png
new file mode 100644
index 000000000..48595d3e1
--- /dev/null
+++ b/images/emoji/25aa.png
Binary files differ
diff --git a/images/emoji/25ab.png b/images/emoji/25ab.png
new file mode 100644
index 000000000..d7ebdb0c0
--- /dev/null
+++ b/images/emoji/25ab.png
Binary files differ
diff --git a/images/emoji/25b6.png b/images/emoji/25b6.png
new file mode 100644
index 000000000..4e2b68285
--- /dev/null
+++ b/images/emoji/25b6.png
Binary files differ
diff --git a/images/emoji/25c0.png b/images/emoji/25c0.png
new file mode 100644
index 000000000..ee38e3b03
--- /dev/null
+++ b/images/emoji/25c0.png
Binary files differ
diff --git a/images/emoji/25fb.png b/images/emoji/25fb.png
new file mode 100644
index 000000000..8daacf570
--- /dev/null
+++ b/images/emoji/25fb.png
Binary files differ
diff --git a/images/emoji/25fc.png b/images/emoji/25fc.png
new file mode 100644
index 000000000..05a30a6aa
--- /dev/null
+++ b/images/emoji/25fc.png
Binary files differ
diff --git a/images/emoji/25fd.png b/images/emoji/25fd.png
new file mode 100644
index 000000000..ae8741267
--- /dev/null
+++ b/images/emoji/25fd.png
Binary files differ
diff --git a/images/emoji/25fe.png b/images/emoji/25fe.png
new file mode 100644
index 000000000..39765bba6
--- /dev/null
+++ b/images/emoji/25fe.png
Binary files differ
diff --git a/images/emoji/2600.png b/images/emoji/2600.png
new file mode 100644
index 000000000..fd521ae31
--- /dev/null
+++ b/images/emoji/2600.png
Binary files differ
diff --git a/images/emoji/2601.png b/images/emoji/2601.png
new file mode 100644
index 000000000..5b4f57f77
--- /dev/null
+++ b/images/emoji/2601.png
Binary files differ
diff --git a/images/emoji/2602.png b/images/emoji/2602.png
new file mode 100644
index 000000000..97fe859e7
--- /dev/null
+++ b/images/emoji/2602.png
Binary files differ
diff --git a/images/emoji/2603.png b/images/emoji/2603.png
new file mode 100644
index 000000000..896f28502
--- /dev/null
+++ b/images/emoji/2603.png
Binary files differ
diff --git a/images/emoji/2604.png b/images/emoji/2604.png
new file mode 100644
index 000000000..d775d6387
--- /dev/null
+++ b/images/emoji/2604.png
Binary files differ
diff --git a/images/emoji/260e.png b/images/emoji/260e.png
new file mode 100644
index 000000000..0fbb8c12c
--- /dev/null
+++ b/images/emoji/260e.png
Binary files differ
diff --git a/images/emoji/2611.png b/images/emoji/2611.png
new file mode 100644
index 000000000..284d95738
--- /dev/null
+++ b/images/emoji/2611.png
Binary files differ
diff --git a/images/emoji/2614.png b/images/emoji/2614.png
new file mode 100644
index 000000000..5b35b7ff6
--- /dev/null
+++ b/images/emoji/2614.png
Binary files differ
diff --git a/images/emoji/2615.png b/images/emoji/2615.png
new file mode 100644
index 000000000..553061471
--- /dev/null
+++ b/images/emoji/2615.png
Binary files differ
diff --git a/images/emoji/2618.png b/images/emoji/2618.png
new file mode 100644
index 000000000..f202aecfe
--- /dev/null
+++ b/images/emoji/2618.png
Binary files differ
diff --git a/images/emoji/261d-1f3fb.png b/images/emoji/261d-1f3fb.png
new file mode 100644
index 000000000..6a9db21d6
--- /dev/null
+++ b/images/emoji/261d-1f3fb.png
Binary files differ
diff --git a/images/emoji/261d-1f3fc.png b/images/emoji/261d-1f3fc.png
new file mode 100644
index 000000000..15aa9ea0e
--- /dev/null
+++ b/images/emoji/261d-1f3fc.png
Binary files differ
diff --git a/images/emoji/261d-1f3fd.png b/images/emoji/261d-1f3fd.png
new file mode 100644
index 000000000..652b73a9c
--- /dev/null
+++ b/images/emoji/261d-1f3fd.png
Binary files differ
diff --git a/images/emoji/261d-1f3fe.png b/images/emoji/261d-1f3fe.png
new file mode 100644
index 000000000..692bad926
--- /dev/null
+++ b/images/emoji/261d-1f3fe.png
Binary files differ
diff --git a/images/emoji/261d-1f3ff.png b/images/emoji/261d-1f3ff.png
new file mode 100644
index 000000000..1e1b10fb7
--- /dev/null
+++ b/images/emoji/261d-1f3ff.png
Binary files differ
diff --git a/images/emoji/261d.png b/images/emoji/261d.png
new file mode 100644
index 000000000..f4978ff0f
--- /dev/null
+++ b/images/emoji/261d.png
Binary files differ
diff --git a/images/emoji/2620.png b/images/emoji/2620.png
new file mode 100644
index 000000000..b459df922
--- /dev/null
+++ b/images/emoji/2620.png
Binary files differ
diff --git a/images/emoji/2622.png b/images/emoji/2622.png
new file mode 100644
index 000000000..3b46199fe
--- /dev/null
+++ b/images/emoji/2622.png
Binary files differ
diff --git a/images/emoji/2623.png b/images/emoji/2623.png
new file mode 100644
index 000000000..007b4fc2d
--- /dev/null
+++ b/images/emoji/2623.png
Binary files differ
diff --git a/images/emoji/2626.png b/images/emoji/2626.png
new file mode 100644
index 000000000..0530e33a4
--- /dev/null
+++ b/images/emoji/2626.png
Binary files differ
diff --git a/images/emoji/262a.png b/images/emoji/262a.png
new file mode 100644
index 000000000..e18263645
--- /dev/null
+++ b/images/emoji/262a.png
Binary files differ
diff --git a/images/emoji/262e.png b/images/emoji/262e.png
new file mode 100644
index 000000000..86033faf4
--- /dev/null
+++ b/images/emoji/262e.png
Binary files differ
diff --git a/images/emoji/262f.png b/images/emoji/262f.png
new file mode 100644
index 000000000..f2900f633
--- /dev/null
+++ b/images/emoji/262f.png
Binary files differ
diff --git a/images/emoji/2638.png b/images/emoji/2638.png
new file mode 100644
index 000000000..3666db001
--- /dev/null
+++ b/images/emoji/2638.png
Binary files differ
diff --git a/images/emoji/2639.png b/images/emoji/2639.png
new file mode 100644
index 000000000..6ae71f233
--- /dev/null
+++ b/images/emoji/2639.png
Binary files differ
diff --git a/images/emoji/263a.png b/images/emoji/263a.png
new file mode 100644
index 000000000..e9e53c03d
--- /dev/null
+++ b/images/emoji/263a.png
Binary files differ
diff --git a/images/emoji/2648.png b/images/emoji/2648.png
new file mode 100644
index 000000000..21a189d0e
--- /dev/null
+++ b/images/emoji/2648.png
Binary files differ
diff --git a/images/emoji/2649.png b/images/emoji/2649.png
new file mode 100644
index 000000000..b2a370df4
--- /dev/null
+++ b/images/emoji/2649.png
Binary files differ
diff --git a/images/emoji/264a.png b/images/emoji/264a.png
new file mode 100644
index 000000000..1a09698cf
--- /dev/null
+++ b/images/emoji/264a.png
Binary files differ
diff --git a/images/emoji/264b.png b/images/emoji/264b.png
new file mode 100644
index 000000000..a64af07cb
--- /dev/null
+++ b/images/emoji/264b.png
Binary files differ
diff --git a/images/emoji/264c.png b/images/emoji/264c.png
new file mode 100644
index 000000000..30158d34d
--- /dev/null
+++ b/images/emoji/264c.png
Binary files differ
diff --git a/images/emoji/264d.png b/images/emoji/264d.png
new file mode 100644
index 000000000..a6b56c2cb
--- /dev/null
+++ b/images/emoji/264d.png
Binary files differ
diff --git a/images/emoji/264e.png b/images/emoji/264e.png
new file mode 100644
index 000000000..8fd133a35
--- /dev/null
+++ b/images/emoji/264e.png
Binary files differ
diff --git a/images/emoji/264f.png b/images/emoji/264f.png
new file mode 100644
index 000000000..c31a99204
--- /dev/null
+++ b/images/emoji/264f.png
Binary files differ
diff --git a/images/emoji/2650.png b/images/emoji/2650.png
new file mode 100644
index 000000000..f8d94ff29
--- /dev/null
+++ b/images/emoji/2650.png
Binary files differ
diff --git a/images/emoji/2651.png b/images/emoji/2651.png
new file mode 100644
index 000000000..6293d31d4
--- /dev/null
+++ b/images/emoji/2651.png
Binary files differ
diff --git a/images/emoji/2652.png b/images/emoji/2652.png
new file mode 100644
index 000000000..641a4f688
--- /dev/null
+++ b/images/emoji/2652.png
Binary files differ
diff --git a/images/emoji/2653.png b/images/emoji/2653.png
new file mode 100644
index 000000000..7f6f646a9
--- /dev/null
+++ b/images/emoji/2653.png
Binary files differ
diff --git a/images/emoji/2660.png b/images/emoji/2660.png
new file mode 100644
index 000000000..f822f184c
--- /dev/null
+++ b/images/emoji/2660.png
Binary files differ
diff --git a/images/emoji/2663.png b/images/emoji/2663.png
new file mode 100644
index 000000000..4f2abf791
--- /dev/null
+++ b/images/emoji/2663.png
Binary files differ
diff --git a/images/emoji/2665.png b/images/emoji/2665.png
new file mode 100644
index 000000000..393c3ed52
--- /dev/null
+++ b/images/emoji/2665.png
Binary files differ
diff --git a/images/emoji/2666.png b/images/emoji/2666.png
new file mode 100644
index 000000000..1f25f51f9
--- /dev/null
+++ b/images/emoji/2666.png
Binary files differ
diff --git a/images/emoji/2668.png b/images/emoji/2668.png
new file mode 100644
index 000000000..3d9df2d94
--- /dev/null
+++ b/images/emoji/2668.png
Binary files differ
diff --git a/images/emoji/267b.png b/images/emoji/267b.png
new file mode 100644
index 000000000..9221f095c
--- /dev/null
+++ b/images/emoji/267b.png
Binary files differ
diff --git a/images/emoji/267f.png b/images/emoji/267f.png
new file mode 100644
index 000000000..4e5b2698e
--- /dev/null
+++ b/images/emoji/267f.png
Binary files differ
diff --git a/images/emoji/2692.png b/images/emoji/2692.png
new file mode 100644
index 000000000..3bee30ec5
--- /dev/null
+++ b/images/emoji/2692.png
Binary files differ
diff --git a/images/emoji/2693.png b/images/emoji/2693.png
new file mode 100644
index 000000000..b036f70a0
--- /dev/null
+++ b/images/emoji/2693.png
Binary files differ
diff --git a/images/emoji/2694.png b/images/emoji/2694.png
new file mode 100644
index 000000000..907e96071
--- /dev/null
+++ b/images/emoji/2694.png
Binary files differ
diff --git a/images/emoji/2696.png b/images/emoji/2696.png
new file mode 100644
index 000000000..0757eda16
--- /dev/null
+++ b/images/emoji/2696.png
Binary files differ
diff --git a/images/emoji/2697.png b/images/emoji/2697.png
new file mode 100644
index 000000000..307a73242
--- /dev/null
+++ b/images/emoji/2697.png
Binary files differ
diff --git a/images/emoji/2699.png b/images/emoji/2699.png
new file mode 100644
index 000000000..2a1cc2c0f
--- /dev/null
+++ b/images/emoji/2699.png
Binary files differ
diff --git a/images/emoji/269b.png b/images/emoji/269b.png
new file mode 100644
index 000000000..5f4567aa0
--- /dev/null
+++ b/images/emoji/269b.png
Binary files differ
diff --git a/images/emoji/269c.png b/images/emoji/269c.png
new file mode 100644
index 000000000..c9250d27f
--- /dev/null
+++ b/images/emoji/269c.png
Binary files differ
diff --git a/images/emoji/26a0.png b/images/emoji/26a0.png
new file mode 100644
index 000000000..35691c2ed
--- /dev/null
+++ b/images/emoji/26a0.png
Binary files differ
diff --git a/images/emoji/26a1.png b/images/emoji/26a1.png
new file mode 100644
index 000000000..47e68e48e
--- /dev/null
+++ b/images/emoji/26a1.png
Binary files differ
diff --git a/images/emoji/26aa.png b/images/emoji/26aa.png
new file mode 100644
index 000000000..c19e15684
--- /dev/null
+++ b/images/emoji/26aa.png
Binary files differ
diff --git a/images/emoji/26ab.png b/images/emoji/26ab.png
new file mode 100644
index 000000000..b62b87170
--- /dev/null
+++ b/images/emoji/26ab.png
Binary files differ
diff --git a/images/emoji/26b0.png b/images/emoji/26b0.png
new file mode 100644
index 000000000..fb2932aa5
--- /dev/null
+++ b/images/emoji/26b0.png
Binary files differ
diff --git a/images/emoji/26b1.png b/images/emoji/26b1.png
new file mode 100644
index 000000000..6b5b35034
--- /dev/null
+++ b/images/emoji/26b1.png
Binary files differ
diff --git a/images/emoji/26bd.png b/images/emoji/26bd.png
new file mode 100644
index 000000000..28cfa218d
--- /dev/null
+++ b/images/emoji/26bd.png
Binary files differ
diff --git a/images/emoji/26be.png b/images/emoji/26be.png
new file mode 100644
index 000000000..f8463f153
--- /dev/null
+++ b/images/emoji/26be.png
Binary files differ
diff --git a/images/emoji/26c4.png b/images/emoji/26c4.png
new file mode 100644
index 000000000..20c177c2a
--- /dev/null
+++ b/images/emoji/26c4.png
Binary files differ
diff --git a/images/emoji/26c5.png b/images/emoji/26c5.png
new file mode 100644
index 000000000..a55e59c34
--- /dev/null
+++ b/images/emoji/26c5.png
Binary files differ
diff --git a/images/emoji/26c8.png b/images/emoji/26c8.png
new file mode 100644
index 000000000..31a26a1b6
--- /dev/null
+++ b/images/emoji/26c8.png
Binary files differ
diff --git a/images/emoji/26ce.png b/images/emoji/26ce.png
new file mode 100644
index 000000000..0a780a700
--- /dev/null
+++ b/images/emoji/26ce.png
Binary files differ
diff --git a/images/emoji/26cf.png b/images/emoji/26cf.png
new file mode 100644
index 000000000..6370fe6d7
--- /dev/null
+++ b/images/emoji/26cf.png
Binary files differ
diff --git a/images/emoji/26d1.png b/images/emoji/26d1.png
new file mode 100644
index 000000000..7140a6760
--- /dev/null
+++ b/images/emoji/26d1.png
Binary files differ
diff --git a/images/emoji/26d3.png b/images/emoji/26d3.png
new file mode 100644
index 000000000..57f46139a
--- /dev/null
+++ b/images/emoji/26d3.png
Binary files differ
diff --git a/images/emoji/26d4.png b/images/emoji/26d4.png
new file mode 100644
index 000000000..476800fc5
--- /dev/null
+++ b/images/emoji/26d4.png
Binary files differ
diff --git a/images/emoji/26e9.png b/images/emoji/26e9.png
new file mode 100644
index 000000000..5a344975b
--- /dev/null
+++ b/images/emoji/26e9.png
Binary files differ
diff --git a/images/emoji/26ea.png b/images/emoji/26ea.png
new file mode 100644
index 000000000..24df10f1a
--- /dev/null
+++ b/images/emoji/26ea.png
Binary files differ
diff --git a/images/emoji/26f0.png b/images/emoji/26f0.png
new file mode 100644
index 000000000..6722ebdd2
--- /dev/null
+++ b/images/emoji/26f0.png
Binary files differ
diff --git a/images/emoji/26f1.png b/images/emoji/26f1.png
new file mode 100644
index 000000000..258e1e757
--- /dev/null
+++ b/images/emoji/26f1.png
Binary files differ
diff --git a/images/emoji/26f2.png b/images/emoji/26f2.png
new file mode 100644
index 000000000..293f5d91c
--- /dev/null
+++ b/images/emoji/26f2.png
Binary files differ
diff --git a/images/emoji/26f3.png b/images/emoji/26f3.png
new file mode 100644
index 000000000..f65a21d8a
--- /dev/null
+++ b/images/emoji/26f3.png
Binary files differ
diff --git a/images/emoji/26f4.png b/images/emoji/26f4.png
new file mode 100644
index 000000000..41816b3ae
--- /dev/null
+++ b/images/emoji/26f4.png
Binary files differ
diff --git a/images/emoji/26f5.png b/images/emoji/26f5.png
new file mode 100644
index 000000000..772ef11da
--- /dev/null
+++ b/images/emoji/26f5.png
Binary files differ
diff --git a/images/emoji/26f7.png b/images/emoji/26f7.png
new file mode 100644
index 000000000..2eb3bdce2
--- /dev/null
+++ b/images/emoji/26f7.png
Binary files differ
diff --git a/images/emoji/26f8.png b/images/emoji/26f8.png
new file mode 100644
index 000000000..c56b7b8a5
--- /dev/null
+++ b/images/emoji/26f8.png
Binary files differ
diff --git a/images/emoji/26f9-1f3fb.png b/images/emoji/26f9-1f3fb.png
new file mode 100644
index 000000000..43f97e7c3
--- /dev/null
+++ b/images/emoji/26f9-1f3fb.png
Binary files differ
diff --git a/images/emoji/26f9-1f3fc.png b/images/emoji/26f9-1f3fc.png
new file mode 100644
index 000000000..f892fd596
--- /dev/null
+++ b/images/emoji/26f9-1f3fc.png
Binary files differ
diff --git a/images/emoji/26f9-1f3fd.png b/images/emoji/26f9-1f3fd.png
new file mode 100644
index 000000000..e109997a9
--- /dev/null
+++ b/images/emoji/26f9-1f3fd.png
Binary files differ
diff --git a/images/emoji/26f9-1f3fe.png b/images/emoji/26f9-1f3fe.png
new file mode 100644
index 000000000..354e8f9c2
--- /dev/null
+++ b/images/emoji/26f9-1f3fe.png
Binary files differ
diff --git a/images/emoji/26f9-1f3ff.png b/images/emoji/26f9-1f3ff.png
new file mode 100644
index 000000000..9581dbbea
--- /dev/null
+++ b/images/emoji/26f9-1f3ff.png
Binary files differ
diff --git a/images/emoji/26f9.png b/images/emoji/26f9.png
new file mode 100644
index 000000000..63bff9c3e
--- /dev/null
+++ b/images/emoji/26f9.png
Binary files differ
diff --git a/images/emoji/26fa.png b/images/emoji/26fa.png
new file mode 100644
index 000000000..3fddcfc56
--- /dev/null
+++ b/images/emoji/26fa.png
Binary files differ
diff --git a/images/emoji/26fd.png b/images/emoji/26fd.png
new file mode 100644
index 000000000..05b187944
--- /dev/null
+++ b/images/emoji/26fd.png
Binary files differ
diff --git a/images/emoji/2702.png b/images/emoji/2702.png
new file mode 100644
index 000000000..270571c8c
--- /dev/null
+++ b/images/emoji/2702.png
Binary files differ
diff --git a/images/emoji/2705.png b/images/emoji/2705.png
new file mode 100644
index 000000000..e55f087e5
--- /dev/null
+++ b/images/emoji/2705.png
Binary files differ
diff --git a/images/emoji/2708.png b/images/emoji/2708.png
new file mode 100644
index 000000000..268d2ac3c
--- /dev/null
+++ b/images/emoji/2708.png
Binary files differ
diff --git a/images/emoji/2709.png b/images/emoji/2709.png
new file mode 100644
index 000000000..ec77ac375
--- /dev/null
+++ b/images/emoji/2709.png
Binary files differ
diff --git a/images/emoji/270a-1f3fb.png b/images/emoji/270a-1f3fb.png
new file mode 100644
index 000000000..02809e2dd
--- /dev/null
+++ b/images/emoji/270a-1f3fb.png
Binary files differ
diff --git a/images/emoji/270a-1f3fc.png b/images/emoji/270a-1f3fc.png
new file mode 100644
index 000000000..5de348103
--- /dev/null
+++ b/images/emoji/270a-1f3fc.png
Binary files differ
diff --git a/images/emoji/270a-1f3fd.png b/images/emoji/270a-1f3fd.png
new file mode 100644
index 000000000..0d5240129
--- /dev/null
+++ b/images/emoji/270a-1f3fd.png
Binary files differ
diff --git a/images/emoji/270a-1f3fe.png b/images/emoji/270a-1f3fe.png
new file mode 100644
index 000000000..a95c0dd63
--- /dev/null
+++ b/images/emoji/270a-1f3fe.png
Binary files differ
diff --git a/images/emoji/270a-1f3ff.png b/images/emoji/270a-1f3ff.png
new file mode 100644
index 000000000..a2f092fd8
--- /dev/null
+++ b/images/emoji/270a-1f3ff.png
Binary files differ
diff --git a/images/emoji/270a.png b/images/emoji/270a.png
new file mode 100644
index 000000000..de33592bf
--- /dev/null
+++ b/images/emoji/270a.png
Binary files differ
diff --git a/images/emoji/270b-1f3fb.png b/images/emoji/270b-1f3fb.png
new file mode 100644
index 000000000..3b752902c
--- /dev/null
+++ b/images/emoji/270b-1f3fb.png
Binary files differ
diff --git a/images/emoji/270b-1f3fc.png b/images/emoji/270b-1f3fc.png
new file mode 100644
index 000000000..44e2a514c
--- /dev/null
+++ b/images/emoji/270b-1f3fc.png
Binary files differ
diff --git a/images/emoji/270b-1f3fd.png b/images/emoji/270b-1f3fd.png
new file mode 100644
index 000000000..5bb62a752
--- /dev/null
+++ b/images/emoji/270b-1f3fd.png
Binary files differ
diff --git a/images/emoji/270b-1f3fe.png b/images/emoji/270b-1f3fe.png
new file mode 100644
index 000000000..c7f8c9ec2
--- /dev/null
+++ b/images/emoji/270b-1f3fe.png
Binary files differ
diff --git a/images/emoji/270b-1f3ff.png b/images/emoji/270b-1f3ff.png
new file mode 100644
index 000000000..c601b58a7
--- /dev/null
+++ b/images/emoji/270b-1f3ff.png
Binary files differ
diff --git a/images/emoji/270b.png b/images/emoji/270b.png
new file mode 100644
index 000000000..6b2954315
--- /dev/null
+++ b/images/emoji/270b.png
Binary files differ
diff --git a/images/emoji/270c-1f3fb.png b/images/emoji/270c-1f3fb.png
new file mode 100644
index 000000000..6ac54a745
--- /dev/null
+++ b/images/emoji/270c-1f3fb.png
Binary files differ
diff --git a/images/emoji/270c-1f3fc.png b/images/emoji/270c-1f3fc.png
new file mode 100644
index 000000000..6dd966986
--- /dev/null
+++ b/images/emoji/270c-1f3fc.png
Binary files differ
diff --git a/images/emoji/270c-1f3fd.png b/images/emoji/270c-1f3fd.png
new file mode 100644
index 000000000..a615e53f0
--- /dev/null
+++ b/images/emoji/270c-1f3fd.png
Binary files differ
diff --git a/images/emoji/270c-1f3fe.png b/images/emoji/270c-1f3fe.png
new file mode 100644
index 000000000..33a34bd5a
--- /dev/null
+++ b/images/emoji/270c-1f3fe.png
Binary files differ
diff --git a/images/emoji/270c-1f3ff.png b/images/emoji/270c-1f3ff.png
new file mode 100644
index 000000000..45ad14b6c
--- /dev/null
+++ b/images/emoji/270c-1f3ff.png
Binary files differ
diff --git a/images/emoji/270c.png b/images/emoji/270c.png
new file mode 100644
index 000000000..70c5516ff
--- /dev/null
+++ b/images/emoji/270c.png
Binary files differ
diff --git a/images/emoji/270d-1f3fb.png b/images/emoji/270d-1f3fb.png
new file mode 100644
index 000000000..7923d8ebb
--- /dev/null
+++ b/images/emoji/270d-1f3fb.png
Binary files differ
diff --git a/images/emoji/270d-1f3fc.png b/images/emoji/270d-1f3fc.png
new file mode 100644
index 000000000..bcb304e15
--- /dev/null
+++ b/images/emoji/270d-1f3fc.png
Binary files differ
diff --git a/images/emoji/270d-1f3fd.png b/images/emoji/270d-1f3fd.png
new file mode 100644
index 000000000..fd885fd2d
--- /dev/null
+++ b/images/emoji/270d-1f3fd.png
Binary files differ
diff --git a/images/emoji/270d-1f3fe.png b/images/emoji/270d-1f3fe.png
new file mode 100644
index 000000000..d065b8c64
--- /dev/null
+++ b/images/emoji/270d-1f3fe.png
Binary files differ
diff --git a/images/emoji/270d-1f3ff.png b/images/emoji/270d-1f3ff.png
new file mode 100644
index 000000000..a44b3dd75
--- /dev/null
+++ b/images/emoji/270d-1f3ff.png
Binary files differ
diff --git a/images/emoji/270d.png b/images/emoji/270d.png
new file mode 100644
index 000000000..85639f8ac
--- /dev/null
+++ b/images/emoji/270d.png
Binary files differ
diff --git a/images/emoji/270f.png b/images/emoji/270f.png
new file mode 100644
index 000000000..3833d590f
--- /dev/null
+++ b/images/emoji/270f.png
Binary files differ
diff --git a/images/emoji/2712.png b/images/emoji/2712.png
new file mode 100644
index 000000000..872d0ae15
--- /dev/null
+++ b/images/emoji/2712.png
Binary files differ
diff --git a/images/emoji/2714.png b/images/emoji/2714.png
new file mode 100644
index 000000000..03bd69537
--- /dev/null
+++ b/images/emoji/2714.png
Binary files differ
diff --git a/images/emoji/2716.png b/images/emoji/2716.png
new file mode 100644
index 000000000..e47cc1b68
--- /dev/null
+++ b/images/emoji/2716.png
Binary files differ
diff --git a/images/emoji/271d.png b/images/emoji/271d.png
new file mode 100644
index 000000000..42b10e822
--- /dev/null
+++ b/images/emoji/271d.png
Binary files differ
diff --git a/images/emoji/2721.png b/images/emoji/2721.png
new file mode 100644
index 000000000..fc59d0dde
--- /dev/null
+++ b/images/emoji/2721.png
Binary files differ
diff --git a/images/emoji/2728.png b/images/emoji/2728.png
new file mode 100644
index 000000000..169bc10b0
--- /dev/null
+++ b/images/emoji/2728.png
Binary files differ
diff --git a/images/emoji/2733.png b/images/emoji/2733.png
new file mode 100644
index 000000000..3307ffa62
--- /dev/null
+++ b/images/emoji/2733.png
Binary files differ
diff --git a/images/emoji/2734.png b/images/emoji/2734.png
new file mode 100644
index 000000000..820179bda
--- /dev/null
+++ b/images/emoji/2734.png
Binary files differ
diff --git a/images/emoji/2744.png b/images/emoji/2744.png
new file mode 100644
index 000000000..db319a77e
--- /dev/null
+++ b/images/emoji/2744.png
Binary files differ
diff --git a/images/emoji/2747.png b/images/emoji/2747.png
new file mode 100644
index 000000000..6aa7b6ec9
--- /dev/null
+++ b/images/emoji/2747.png
Binary files differ
diff --git a/images/emoji/274c.png b/images/emoji/274c.png
new file mode 100644
index 000000000..9f9ed0f7a
--- /dev/null
+++ b/images/emoji/274c.png
Binary files differ
diff --git a/images/emoji/274e.png b/images/emoji/274e.png
new file mode 100644
index 000000000..dae487f1f
--- /dev/null
+++ b/images/emoji/274e.png
Binary files differ
diff --git a/images/emoji/2753.png b/images/emoji/2753.png
new file mode 100644
index 000000000..5a58f3458
--- /dev/null
+++ b/images/emoji/2753.png
Binary files differ
diff --git a/images/emoji/2754.png b/images/emoji/2754.png
new file mode 100644
index 000000000..6e7824c75
--- /dev/null
+++ b/images/emoji/2754.png
Binary files differ
diff --git a/images/emoji/2755.png b/images/emoji/2755.png
new file mode 100644
index 000000000..9b64da8bf
--- /dev/null
+++ b/images/emoji/2755.png
Binary files differ
diff --git a/images/emoji/2757.png b/images/emoji/2757.png
new file mode 100644
index 000000000..2c1440642
--- /dev/null
+++ b/images/emoji/2757.png
Binary files differ
diff --git a/images/emoji/2763.png b/images/emoji/2763.png
new file mode 100644
index 000000000..91b520be4
--- /dev/null
+++ b/images/emoji/2763.png
Binary files differ
diff --git a/images/emoji/2764.png b/images/emoji/2764.png
new file mode 100644
index 000000000..638cb72dc
--- /dev/null
+++ b/images/emoji/2764.png
Binary files differ
diff --git a/images/emoji/2795.png b/images/emoji/2795.png
new file mode 100644
index 000000000..40799798a
--- /dev/null
+++ b/images/emoji/2795.png
Binary files differ
diff --git a/images/emoji/2796.png b/images/emoji/2796.png
new file mode 100644
index 000000000..054211caf
--- /dev/null
+++ b/images/emoji/2796.png
Binary files differ
diff --git a/images/emoji/2797.png b/images/emoji/2797.png
new file mode 100644
index 000000000..df32ab21b
--- /dev/null
+++ b/images/emoji/2797.png
Binary files differ
diff --git a/images/emoji/27a1.png b/images/emoji/27a1.png
new file mode 100644
index 000000000..4755670b5
--- /dev/null
+++ b/images/emoji/27a1.png
Binary files differ
diff --git a/images/emoji/27b0.png b/images/emoji/27b0.png
new file mode 100644
index 000000000..440aa56d5
--- /dev/null
+++ b/images/emoji/27b0.png
Binary files differ
diff --git a/images/emoji/27bf.png b/images/emoji/27bf.png
new file mode 100644
index 000000000..0b82c8fe3
--- /dev/null
+++ b/images/emoji/27bf.png
Binary files differ
diff --git a/images/emoji/2934.png b/images/emoji/2934.png
new file mode 100644
index 000000000..f29bfcfc0
--- /dev/null
+++ b/images/emoji/2934.png
Binary files differ
diff --git a/images/emoji/2935.png b/images/emoji/2935.png
new file mode 100644
index 000000000..2d9d24bca
--- /dev/null
+++ b/images/emoji/2935.png
Binary files differ
diff --git a/images/emoji/2b05.png b/images/emoji/2b05.png
new file mode 100644
index 000000000..8c685e0a8
--- /dev/null
+++ b/images/emoji/2b05.png
Binary files differ
diff --git a/images/emoji/2b06.png b/images/emoji/2b06.png
new file mode 100644
index 000000000..af8218a87
--- /dev/null
+++ b/images/emoji/2b06.png
Binary files differ
diff --git a/images/emoji/2b07.png b/images/emoji/2b07.png
new file mode 100644
index 000000000..b8eefd0b1
--- /dev/null
+++ b/images/emoji/2b07.png
Binary files differ
diff --git a/images/emoji/2b1b.png b/images/emoji/2b1b.png
new file mode 100644
index 000000000..162f2bb42
--- /dev/null
+++ b/images/emoji/2b1b.png
Binary files differ
diff --git a/images/emoji/2b1c.png b/images/emoji/2b1c.png
new file mode 100644
index 000000000..6f06c1c79
--- /dev/null
+++ b/images/emoji/2b1c.png
Binary files differ
diff --git a/images/emoji/2b50.png b/images/emoji/2b50.png
new file mode 100644
index 000000000..c93094707
--- /dev/null
+++ b/images/emoji/2b50.png
Binary files differ
diff --git a/images/emoji/2b55.png b/images/emoji/2b55.png
new file mode 100644
index 000000000..3fe75ce46
--- /dev/null
+++ b/images/emoji/2b55.png
Binary files differ
diff --git a/images/emoji/3030.png b/images/emoji/3030.png
new file mode 100644
index 000000000..001c8d6e4
--- /dev/null
+++ b/images/emoji/3030.png
Binary files differ
diff --git a/images/emoji/303d.png b/images/emoji/303d.png
new file mode 100644
index 000000000..70453d415
--- /dev/null
+++ b/images/emoji/303d.png
Binary files differ
diff --git a/images/emoji/3297.png b/images/emoji/3297.png
new file mode 100644
index 000000000..ba8c89d95
--- /dev/null
+++ b/images/emoji/3297.png
Binary files differ
diff --git a/images/emoji/3299.png b/images/emoji/3299.png
new file mode 100644
index 000000000..5fd72608e
--- /dev/null
+++ b/images/emoji/3299.png
Binary files differ
diff --git a/images/emoji/README b/images/emoji/README
new file mode 100644
index 000000000..ab478b753
--- /dev/null
+++ b/images/emoji/README
@@ -0,0 +1,2 @@
+These files supplied by emojione. License is CC BY 4.0. Attribution is required for commercial use.
+See http://emojione.com
diff --git a/include/BaseObject.php b/include/BaseObject.php
deleted file mode 100644
index a88978a83..000000000
--- a/include/BaseObject.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php /** @file */
-
-if(class_exists('BaseObject'))
- return;
-
-require_once('boot.php');
-
-/**
- * Basic object
- *
- * Contains what is usefull to any object
- */
-class BaseObject {
- private static $app = null;
-
- /**
- * Get the app
- *
- * Same as get_app from boot.php
- */
- public function get_app() {
- if(self::$app)
- return self::$app;
-
- global $a;
- self::$app = $a;
-
- return self::$app;
- }
-
- /**
- * Set the app
- */
- public static function set_app($app) {
- self::$app = $app;
- }
-}
-
diff --git a/include/Contact.php b/include/Contact.php
deleted file mode 100644
index e011c60c8..000000000
--- a/include/Contact.php
+++ /dev/null
@@ -1,637 +0,0 @@
-<?php /** @file */
-
-
-
-function rconnect_url($channel_id,$xchan) {
-
- if(! $xchan)
- return '';
-
- $r = q("select abook_id from abook where abook_channel = %d and abook_xchan = '%s' limit 1",
- intval($channel_id),
- dbesc($xchan)
- );
-
- if($r)
- return '';
-
- $r = q("select * from xchan where xchan_hash = '%s' limit 1",
- dbesc($xchan)
- );
-
- if(($r) && ($r[0]['xchan_follow']))
- return $r[0]['xchan_follow'];
-
- $r = q("select hubloc_url from hubloc where hubloc_hash = '%s' and hubloc_primary = 1 limit 1",
- dbesc($xchan)
- );
-
- if($r)
- return $r[0]['hubloc_url'] . '/follow?f=&url=%s';
- return '';
-
-}
-
-function abook_connections($channel_id, $sql_conditions = '') {
- $r = q("select * from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d
- and abook_self = 0 $sql_conditions",
- intval($channel_id)
- );
- return(($r) ? $r : array());
-}
-
-function abook_self($channel_id) {
- $r = q("select * from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d
- and abook_self = 1 limit 1",
- intval($channel_id)
- );
- return(($r) ? $r[0] : array());
-}
-
-function channelx_by_nick($nick) {
- $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_address = '%s' and channel_removed = 0 LIMIT 1",
- dbesc($nick)
- );
- return(($r) ? $r[0] : false);
-}
-
-function channelx_by_hash($hash) {
- $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_hash = '%s' and channel_removed = 0 LIMIT 1",
- dbesc($hash)
- );
- return(($r) ? $r[0] : false);
-}
-
-function channelx_by_n($id) {
- $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_id = %d and channel_removed = 0 LIMIT 1",
- dbesc($id)
- );
- return(($r) ? $r[0] : false);
-}
-
-
-function vcard_from_xchan($xchan, $observer = null, $mode = '') {
-
- $a = get_app();
-
- if(! $xchan) {
- if(App::$poi) {
- $xchan = App::$poi;
- }
- elseif(is_array(App::$profile) && App::$profile['channel_hash']) {
- $r = q("select * from xchan where xchan_hash = '%s' limit 1",
- dbesc(App::$profile['channel_hash'])
- );
- if($r)
- $xchan = $r[0];
- }
- }
-
- if(! $xchan)
- return;
-
-// FIXME - show connect button to observer if appropriate
- $connect = false;
- if(local_channel()) {
- $r = q("select * from abook where abook_xchan = '%s' and abook_channel = %d limit 1",
- dbesc($xchan['xchan_hash']),
- intval(local_channel())
- );
- if(! $r)
- $connect = t('Connect');
- }
-
- if(array_key_exists('channel_id',$xchan))
- App::$profile_uid = $xchan['channel_id'];
-
- $url = (($observer)
- ? z_root() . '/magic?f=&dest=' . $xchan['xchan_url'] . '&addr=' . $xchan['xchan_addr']
- : $xchan['xchan_url']
- );
-
- return replace_macros(get_markup_template('xchan_vcard.tpl'),array(
- '$name' => $xchan['xchan_name'],
- '$photo' => ((is_array(App::$profile) && array_key_exists('photo',App::$profile)) ? App::$profile['photo'] : $xchan['xchan_photo_l']),
- '$follow' => $xchan['xchan_addr'],
- '$link' => zid($xchan['xchan_url']),
- '$connect' => $connect,
- '$newwin' => (($mode === 'chanview') ? t('New window') : ''),
- '$newtit' => t('Open the selected location in a different window or browser tab'),
- '$url' => $url,
- ));
-}
-
-function abook_toggle_flag($abook,$flag) {
-
- $field = '';
-
- switch($flag) {
- case ABOOK_FLAG_BLOCKED:
- $field = 'abook_blocked';
- break;
- case ABOOK_FLAG_IGNORED:
- $field = 'abook_ignored';
- break;
- case ABOOK_FLAG_HIDDEN:
- $field = 'abook_hidden';
- break;
- case ABOOK_FLAG_ARCHIVED:
- $field = 'abook_archived';
- break;
- case ABOOK_FLAG_PENDING:
- $field = 'abook_pending';
- break;
- case ABOOK_FLAG_UNCONNECTED:
- $field = 'abook_unconnected';
- break;
- case ABOOK_FLAG_SELF:
- $field = 'abook_self';
- break;
- case ABOOK_FLAG_FEED:
- $field = 'abook_feed';
- break;
- default:
- break;
- }
- if(! $field)
- return;
-
- $r = q("UPDATE abook set $field = (1 - $field) where abook_id = %d and abook_channel = %d",
- intval($abook['abook_id']),
- intval($abook['abook_channel'])
- );
-
-
- // if unsetting the archive bit, update the timestamps so we'll try to connect for an additional 30 days.
-
- if(($flag === ABOOK_FLAG_ARCHIVED) && (intval($abook['abook_archived']))) {
- $r = q("update abook set abook_connected = '%s', abook_updated = '%s'
- where abook_id = %d and abook_channel = %d",
- dbesc(datetime_convert()),
- dbesc(datetime_convert()),
- intval($abook['abook_id']),
- intval($abook['abook_channel'])
- );
- }
-
- return $r;
-
-}
-
-
-// Included here for completeness, but this is a very dangerous operation.
-// It is the caller's responsibility to confirm the requestor's intent and
-// authorisation to do this.
-
-function user_remove($uid) {
-
-}
-
-function account_remove($account_id,$local = true,$unset_session=true) {
-
- logger('account_remove: ' . $account_id);
-
- if(! intval($account_id)) {
- logger('account_remove: no account.');
- return false;
- }
-
- // Don't let anybody nuke the only admin account.
-
- $r = q("select account_id from account where (account_roles & %d)>0",
- intval(ACCOUNT_ROLE_ADMIN)
- );
-
- if($r !== false && count($r) == 1 && $r[0]['account_id'] == $account_id) {
- logger("Unable to remove the only remaining admin account");
- return false;
- }
-
- $r = q("select * from account where account_id = %d limit 1",
- intval($account_id)
- );
- $account_email=$r[0]['account_email'];
-
- if(! $r) {
- logger('account_remove: No account with id: ' . $account_id);
- return false;
- }
-
- $x = q("select channel_id from channel where channel_account_id = %d",
- intval($account_id)
- );
- if($x) {
- foreach($x as $xx) {
- channel_remove($xx['channel_id'],$local,false);
- }
- }
-
- $r = q("delete from account where account_id = %d",
- intval($account_id)
- );
-
-
- if ($unset_session) {
- unset($_SESSION['authenticated']);
- unset($_SESSION['uid']);
- notice( sprintf(t("User '%s' deleted"),$account_email) . EOL);
- goaway(z_root());
- }
- return $r;
-
-}
-// recursively delete a directory
-function rrmdir($path)
-{
- if (is_dir($path) === true)
- {
- $files = array_diff(scandir($path), array('.', '..'));
-
- foreach ($files as $file)
- {
- rrmdir(realpath($path) . '/' . $file);
- }
-
- return rmdir($path);
- }
-
- else if (is_file($path) === true)
- {
- return unlink($path);
- }
-
- return false;
-}
-
-function channel_remove($channel_id, $local = true, $unset_session=false) {
-
- if(! $channel_id)
- return;
- $a = get_app();
- logger('Removing channel: ' . $channel_id);
- logger('channel_remove: local only: ' . intval($local));
-
- $r = q("select * from channel where channel_id = %d limit 1", intval($channel_id));
- if(! $r) {
- logger('channel_remove: channel not found: ' . $channel_id);
- return;
- }
-
- $channel = $r[0];
-
- call_hooks('channel_remove',$r[0]);
-
- if(! $local) {
-
- $r = q("update channel set channel_deleted = '%s', channel_removed = 1, channel_r_stream = 0, channel_r_profile = 0,
- channel_r_photos = 0, channel_r_abook = 0, channel_w_stream = 0, channel_w_wall = 0, channel_w_tagwall = 0,
- channel_w_comment = 0, channel_w_mail = 0, channel_w_photos = 0, channel_w_chat = 0, channel_a_delegate = 0,
- channel_r_storage = 0, channel_w_storage = 0, channel_r_pages = 0, channel_w_pages = 0, channel_a_republish = 0
- where channel_id = %d",
- dbesc(datetime_convert()),
- intval($channel_id)
- );
-
- logger('deleting hublocs',LOGGER_DEBUG);
-
- $r = q("update hubloc set hubloc_deleted = 1 where hubloc_hash = '%s'",
- dbesc($channel['channel_hash'])
- );
-
-
- $r = q("update xchan set xchan_deleted = 1 where xchan_hash = '%s'",
- dbesc($channel['channel_hash'])
- );
-
- proc_run('php','include/notifier.php','purge_all',$channel_id);
-
- }
-
- q("DELETE FROM `groups` WHERE `uid` = %d", intval($channel_id));
- q("DELETE FROM `group_member` WHERE `uid` = %d", intval($channel_id));
- q("DELETE FROM `event` WHERE `uid` = %d", intval($channel_id));
- q("DELETE FROM `item` WHERE `uid` = %d", intval($channel_id));
- q("DELETE FROM `item_id` WHERE `uid` = %d", intval($channel_id));
- q("DELETE FROM `mail` WHERE `channel_id` = %d", intval($channel_id));
- q("DELETE FROM `notify` WHERE `uid` = %d", intval($channel_id));
- q("DELETE FROM `photo` WHERE `uid` = %d", intval($channel_id));
- q("DELETE FROM `attach` WHERE `uid` = %d", intval($channel_id));
- q("DELETE FROM `profile` WHERE `uid` = %d", intval($channel_id));
- q("DELETE FROM `pconfig` WHERE `uid` = %d", intval($channel_id));
- q("DELETE FROM `spam` WHERE `uid` = %d", intval($channel_id));
-
- // @FIXME At this stage we need to remove the file resources located under /store/$nickname
-
-
- q("delete from abook where abook_xchan = '%s' and abook_self = 1 ",
- dbesc($channel['channel_hash'])
- );
-
- $r = q("update channel set channel_deleted = '%s', channel_removed = 1 where channel_id = %d",
- dbesc(datetime_convert()),
- intval($channel_id)
- );
-
- // if this was the default channel, set another one as default
- if(App::$account['account_default_channel'] == $channel_id) {
- $r = q("select channel_id from channel where channel_account_id = %d and channel_removed = 0 limit 1",
- intval(App::$account['account_id']),
- intval(PAGE_REMOVED));
- if ($r) {
- $rr = q("update account set account_default_channel = %d where account_id = %d",
- intval($r[0]['channel_id']),
- intval(App::$account['account_id']));
- logger("Default channel deleted, changing default to channel_id " . $r[0]['channel_id']);
- }
- else {
- $rr = q("update account set account_default_channel = 0 where account_id = %d",
- intval(App::$account['account_id'])
- );
- }
- }
-
- logger('deleting hublocs',LOGGER_DEBUG);
-
- $r = q("update hubloc set hubloc_deleted = 1 where hubloc_hash = '%s' and hubloc_url = '%s' ",
- dbesc($channel['channel_hash']),
- dbesc(z_root())
- );
-
- // Do we have any valid hublocs remaining?
-
- $hublocs = 0;
-
- $r = q("select hubloc_id from hubloc where hubloc_hash = '%s' and hubloc_deleted = 0",
- dbesc($channel['channel_hash'])
- );
- if($r)
- $hublocs = count($r);
-
- if(! $hublocs) {
- $r = q("update xchan set xchan_deleted = 1 where xchan_hash = '%s' ",
- dbesc($channel['channel_hash'])
- );
- }
-
- //remove from file system
- $r = q("select channel_address from channel where channel_id = %d limit 1",
- intval($channel_id)
- );
- if($r)
- $channel_address = $r[0]['channel_address'] ;
- if ($channel_address !== '') {
- $f = 'store/' . $channel_address.'/';
- logger ('delete '. $f);
- if(is_dir($f))
- @rrmdir($f);
- }
-
- proc_run('php','include/directory.php',$channel_id);
-
- if($channel_id == local_channel() && $unset_session) {
- \Zotlabs\Web\Session::nuke();
- goaway(z_root());
- }
-
-}
-
-/**
- * mark any hubs "offline" that haven't been heard from in more than 30 days
- * Allow them to redeem themselves if they come back later.
- * Then go through all those that are newly marked and see if any other hubs
- * are attached to the controlling xchan that are still alive.
- * If not, they're dead (although they could come back some day).
- */
-
-
-function mark_orphan_hubsxchans() {
-
- $dirmode = intval(get_config('system','directory_mode'));
- if($dirmode == DIRECTORY_MODE_NORMAL)
- return;
-
- $r = q("update hubloc set hubloc_error = 1 where hubloc_error = 0
- and hubloc_network = 'zot' and hubloc_connected < %s - interval %s",
- db_utcnow(), db_quoteinterval('36 day')
- );
-
-// $realm = get_directory_realm();
-// if($realm == DIRECTORY_REALM) {
-// $r = q("select * from site where site_access != 0 and site_register !=0 and ( site_realm = '%s' or site_realm = '') order by rand()",
-// dbesc($realm)
-// );
-// }
-// else {
-// $r = q("select * from site where site_access != 0 and site_register !=0 and site_realm = '%s' order by rand()",
-// dbesc($realm)
-// );
-// }
-
-
- $r = q("select hubloc_id, hubloc_hash from hubloc where hubloc_error = 0 and hubloc_orphancheck = 0");
-
- if($r) {
- foreach($r as $rr) {
-
- // see if any other hublocs are still alive for this channel
-
- $x = q("select * from hubloc where hubloc_hash = '%s' and hubloc_error = 0",
- dbesc($rr['hubloc_hash'])
- );
- if($x) {
-
- // yes - if the xchan was marked as an orphan, undo it
-
- $y = q("update xchan set xchan_orphan = 0 where xchan_orphan = 1 and xchan_hash = '%s'",
- dbesc($rr['hubloc_hash'])
- );
-
- }
- else {
-
- // nope - mark the xchan as an orphan
-
- $y = q("update xchan set xchan_orphan = 1 where xchan_hash = '%s'",
- dbesc($rr['hubloc_hash'])
- );
- }
-
- // mark that we've checked this entry so we don't need to do it again
-
- $y = q("update hubloc set hubloc_orphancheck = 1 where hubloc_id = %d",
- dbesc($rr['hubloc_id'])
- );
- }
- }
-
-}
-
-
-
-
-function remove_all_xchan_resources($xchan, $channel_id = 0) {
-
- if(intval($channel_id)) {
-
-
-
- }
- else {
-
- $dirmode = intval(get_config('system','directory_mode'));
-
-
- $r = q("delete from photo where xchan = '%s'",
- dbesc($xchan)
- );
- $r = q("select resource_id, resource_type, uid, id from item where ( author_xchan = '%s' or owner_xchan = '%s' ) ",
- dbesc($xchan),
- dbesc($xchan)
- );
- if($r) {
- foreach($r as $rr) {
- drop_item($rr,false);
- }
- }
- $r = q("delete from event where event_xchan = '%s'",
- dbesc($xchan)
- );
- $r = q("delete from group_member where xchan = '%s'",
- dbesc($xchan)
- );
- $r = q("delete from mail where ( from_xchan = '%s' or to_xchan = '%s' )",
- dbesc($xchan),
- dbesc($xchan)
- );
- $r = q("delete from xlink where ( xlink_xchan = '%s' or xlink_link = '%s' )",
- dbesc($xchan),
- dbesc($xchan)
- );
-
- $r = q("delete from abook where abook_xchan = '%s'",
- dbesc($xchan)
- );
-
-
- if($dirmode === false || $dirmode == DIRECTORY_MODE_NORMAL) {
-
- $r = q("delete from xchan where xchan_hash = '%s'",
- dbesc($xchan)
- );
- $r = q("delete from hubloc where hubloc_hash = '%s'",
- dbesc($xchan)
- );
-
- }
- else {
-
- // directory servers need to keep the record around for sync purposes - mark it deleted
-
- $r = q("update hubloc set hubloc_deleted = 1 where hubloc_hash = '%s'",
- dbesc($xchan)
- );
-
- $r = q("update xchan set xchan_deleted = 1 where xchan_hash = '%s'",
- dbesc($xchan)
- );
- }
- }
-}
-
-
-function contact_remove($channel_id, $abook_id) {
-
- if((! $channel_id) || (! $abook_id))
- return false;
-
- logger('removing contact ' . $abook_id . ' for channel ' . $channel_id,LOGGER_DEBUG);
-
- $archive = get_pconfig($channel_id, 'system','archive_removed_contacts');
- if($archive) {
- q("update abook set abook_archived = 1 where abook_id = %d and abook_channel = %d",
- intval($abook_id),
- intval($channel_id)
- );
- return true;
- }
-
- $r = q("select * from abook where abook_id = %d and abook_channel = %d limit 1",
- intval($abook_id),
- intval($channel_id)
- );
-
- if(! $r)
- return false;
-
- $abook = $r[0];
-
- if(intval($abook['abook_self']))
- return false;
-
-
- $r = q("select * from item where author_xchan = '%s' and uid = %d",
- dbesc($abook['abook_xchan']),
- intval($channel_id)
- );
- if($r) {
- foreach($r as $rr) {
- drop_item($rr['id'],false);
- }
- }
-
- q("delete from abook where abook_id = %d and abook_channel = %d",
- intval($abook['abook_id']),
- intval($channel_id)
- );
-
- $r = q("delete from event where event_xchan = '%s' and uid = %d",
- dbesc($abook['abook_xchan']),
- intval($channel_id)
- );
-
- $r = q("delete from group_member where xchan = '%s' and uid = %d",
- dbesc($abook['abook_xchan']),
- intval($channel_id)
- );
-
- $r = q("delete from mail where ( from_xchan = '%s' or to_xchan = '%s' ) and channel_id = %d ",
- dbesc($abook['abook_xchan']),
- dbesc($abook['abook_xchan']),
- intval($channel_id)
- );
-
- return true;
-}
-
-
-
-function random_profile() {
- $randfunc = db_getfunc('rand');
-
- $checkrandom = get_config('randprofile','check'); // False by default
- $retryrandom = intval(get_config('randprofile','retry'));
- if($retryrandom == 0) $retryrandom = 5;
-
- for($i = 0; $i < $retryrandom; $i++) {
-
- $r = q("select xchan_url from xchan left join hubloc on hubloc_hash = xchan_hash where hubloc_connected > %s - interval %s order by $randfunc limit 1",
- db_utcnow(), db_quoteinterval('30 day')
- );
-
- if(!$r) return ''; // Couldn't get a random channel
-
- if($checkrandom) {
- $x = z_fetch_url($r[0]['xchan_url']);
- if($x['success'])
- return $r[0]['xchan_url'];
- else
- logger('Random channel turned out to be bad.');
- }
- else {
- return $r[0]['xchan_url'];
- }
-
- }
- return '';
-}
-
diff --git a/include/ConversationObject.php b/include/ConversationObject.php
deleted file mode 100644
index 82f381b0c..000000000
--- a/include/ConversationObject.php
+++ /dev/null
@@ -1,225 +0,0 @@
-<?php /** @file */
-
-if(class_exists('Conversation'))
- return;
-
-require_once('boot.php');
-require_once('include/BaseObject.php');
-require_once('include/ItemObject.php');
-require_once('include/text.php');
-require_once('include/items.php');
-
-/**
- * A list of threads
- *
- */
-
-class Conversation extends BaseObject {
-
- private $threads = array();
- private $mode = null;
- private $observer = null;
- private $writable = false;
- private $commentable = false;
- private $profile_owner = 0;
- private $preview = false;
- private $prepared_item = '';
- private $cipher = 'aes256';
-
- // $prepared_item is for use by alternate conversation structures such as photos
- // wherein we've already prepared a top level item which doesn't look anything like
- // a normal "post" item
-
- public function __construct($mode, $preview, $prepared_item = '') {
- $this->set_mode($mode);
- $this->preview = $preview;
- $this->prepared_item = $prepared_item;
- $c = ((local_channel()) ? get_pconfig(local_channel(),'system','default_cipher') : '');
- if($c)
- $this->cipher = $c;
- }
-
- /**
- * Set the mode we'll be displayed on
- */
- private function set_mode($mode) {
- if($this->get_mode() == $mode)
- return;
-
- $a = $this->get_app();
-
- $this->observer = App::get_observer();
- $ob_hash = (($this->observer) ? $this->observer['xchan_hash'] : '');
-
- switch($mode) {
- case 'network':
- $this->profile_owner = local_channel();
- $this->writable = true;
- break;
- case 'channel':
- $this->profile_owner = App::$profile['profile_uid'];
- $this->writable = perm_is_allowed($this->profile_owner,$ob_hash,'post_comments');
- break;
- case 'display':
- // in this mode we set profile_owner after initialisation (from conversation()) and then
- // pull some trickery which allows us to re-invoke this function afterward
- // it's an ugly hack so FIXME
- $this->writable = perm_is_allowed($this->profile_owner,$ob_hash,'post_comments');
- break;
- case 'page':
- $this->profile_owner = App::$profile['uid'];
- $this->writable = perm_is_allowed($this->profile_owner,$ob_hash,'post_comments');
- break;
- default:
- logger('[ERROR] Conversation::set_mode : Unhandled mode ('. $mode .').', LOGGER_DEBUG);
- return false;
- break;
- }
- $this->mode = $mode;
- }
-
- /**
- * Get mode
- */
- public function get_mode() {
- return $this->mode;
- }
-
- /**
- * Check if page is writable
- */
- public function is_writable() {
- return $this->writable;
- }
-
- public function is_commentable() {
- return $this->commentable;
- }
-
- /**
- * Check if page is a preview
- */
- public function is_preview() {
- return $this->preview;
- }
-
- /**
- * Get profile owner
- */
- public function get_profile_owner() {
- return $this->profile_owner;
- }
-
- public function set_profile_owner($uid) {
- $this->profile_owner = $uid;
- $mode = $this->get_mode();
- $this->mode = null;
- $this->set_mode($mode);
- }
-
- public function get_observer() {
- return $this->observer;
- }
-
- public function get_cipher() {
- return $this->cipher;
- }
-
-
- /**
- * Add a thread to the conversation
- *
- * Returns:
- * _ The inserted item on success
- * _ false on failure
- */
- public function add_thread($item) {
- $item_id = $item->get_id();
- if(!$item_id) {
- logger('Item has no ID!!', LOGGER_DEBUG, LOG_ERR);
- return false;
- }
- if($this->get_thread($item->get_id())) {
- logger('Thread already exists ('. $item->get_id() .').', LOGGER_DEBUG, LOG_WARNING);
- return false;
- }
-
- /*
- * Only add things that will be displayed
- */
-
-
- if(($item->get_data_value('id') != $item->get_data_value('parent')) && (activity_match($item->get_data_value('verb'),ACTIVITY_LIKE) || activity_match($item->get_data_value('verb'),ACTIVITY_DISLIKE))) {
- return false;
- }
-
- $item->set_commentable(false);
- $ob_hash = (($this->observer) ? $this->observer['xchan_hash'] : '');
-
- if(! comments_are_now_closed($item->get_data())) {
- if(($item->get_data_value('author_xchan') === $ob_hash) || ($item->get_data_value('owner_xchan') === $ob_hash))
- $item->set_commentable(true);
-
- if(intval($item->get_data_value('item_nocomment'))) {
- $item->set_commentable(false);
- }
- elseif(($this->observer) && (! $item->is_commentable())) {
- if((array_key_exists('owner',$item->data)) && intval($item->data['owner']['abook_self']))
- $item->set_commentable(perm_is_allowed($this->profile_owner,$this->observer['xchan_hash'],'post_comments'));
- else
- $item->set_commentable(can_comment_on_post($this->observer['xchan_hash'],$item->data));
- }
- }
- require_once('include/identity.php');
-
- $item->set_conversation($this);
- $this->threads[] = $item;
- return end($this->threads);
- }
-
- /**
- * Get data in a form usable by a conversation template
- *
- * We should find a way to avoid using those arguments (at least most of them)
- *
- * Returns:
- * _ The data requested on success
- * _ false on failure
- */
- public function get_template_data($conv_responses) {
- $result = array();
-
- foreach($this->threads as $item) {
-
- if(($item->get_data_value('id') == $item->get_data_value('parent')) && $this->prepared_item) {
- $item_data = $this->prepared_item;
- }
- else {
- $item_data = $item->get_template_data($conv_responses);
- }
- if(!$item_data) {
- logger('Failed to get item template data ('. $item->get_id() .').', LOGGER_DEBUG, LOG_ERR);
- return false;
- }
- $result[] = $item_data;
- }
-
- return $result;
- }
-
- /**
- * Get a thread based on its item id
- *
- * Returns:
- * _ The found item on success
- * _ false on failure
- */
- private function get_thread($id) {
- foreach($this->threads as $item) {
- if($item->get_id() == $id)
- return $item;
- }
-
- return false;
- }
-}
diff --git a/include/ITemplateEngine.php b/include/ITemplateEngine.php
deleted file mode 100755
index 7bd559a63..000000000
--- a/include/ITemplateEngine.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-require_once 'boot.php';
-
-/**
- * @brief Interface for template engines.
- */
-interface ITemplateEngine {
- public function replace_macros($s, $v);
- public function get_markup_template($file, $root='');
-}
diff --git a/include/Import/import_diaspora.php b/include/Import/import_diaspora.php
index a94e73395..b664badf1 100644
--- a/include/Import/import_diaspora.php
+++ b/include/Import/import_diaspora.php
@@ -6,7 +6,6 @@ require_once('include/follow.php');
require_once('include/photo/photo_driver.php');
function import_diaspora($data) {
- $a = get_app();
$account = App::get_account();
if(! $account)
diff --git a/include/ItemObject.php b/include/ItemObject.php
deleted file mode 100644
index 019fa87ad..000000000
--- a/include/ItemObject.php
+++ /dev/null
@@ -1,773 +0,0 @@
-<?php /** @file */
-
-if(class_exists('Item'))
- return;
-
-require_once('include/BaseObject.php');
-require_once('include/text.php');
-require_once('boot.php');
-
-/**
- * An item
- */
-
-class Item extends BaseObject {
- public $data = array();
- private $template = 'conv_item.tpl';
- private $comment_box_template = 'comment_item.tpl';
- private $commentable = false;
- private $toplevel = false;
- private $children = array();
- private $parent = null;
- private $conversation = null;
- private $redirect_url = null;
- private $owner_url = '';
- private $owner_photo = '';
- private $owner_name = '';
- private $wall_to_wall = false;
- private $threaded = false;
- private $visiting = false;
- private $channel = null;
- private $display_mode = 'normal';
-
-
- public function __construct($data) {
- $a = $this->get_app();
-
- $this->data = $data;
- $this->toplevel = ($this->get_id() == $this->get_data_value('parent'));
-
- // Prepare the children
- if(count($data['children'])) {
- foreach($data['children'] as $item) {
-
- /*
- * Only add those that will be displayed
- */
-
- if((! visible_activity($item)) || array_key_exists('author_blocked',$item)) {
- continue;
- }
-
- $child = new Item($item);
- $this->add_child($child);
- }
- }
- }
-
- /**
- * Get data in a form usable by a conversation template
- *
- * Returns:
- * _ The data requested on success
- * _ false on failure
- */
-
- public function get_template_data($conv_responses, $thread_level=1) {
-
- $result = array();
-
- $a = $this->get_app();
- $item = $this->get_data();
-
- $commentww = '';
- $sparkle = '';
- $buttons = '';
- $dropping = false;
- $star = false;
- $isstarred = "unstarred fa-star-o";
- $indent = '';
- $osparkle = '';
- $total_children = $this->count_descendants();
- $unseen_comments = (($item['real_uid']) ? 0 : $this->count_unseen_descendants());
-
- $conv = $this->get_conversation();
- $observer = $conv->get_observer();
-
- $lock = ((($item['item_private'] == 1) || (($item['uid'] == local_channel()) && (strlen($item['allow_cid']) || strlen($item['allow_gid'])
- || strlen($item['deny_cid']) || strlen($item['deny_gid']))))
- ? t('Private Message')
- : false);
- $shareable = ((($conv->get_profile_owner() == local_channel() && local_channel()) && ($item['item_private'] != 1)) ? true : false);
-
- // allow an exemption for sharing stuff from your private feeds
- if($item['author']['xchan_network'] === 'rss')
- $shareable = true;
-
- $mode = $conv->get_mode();
-
- if(local_channel() && $observer['xchan_hash'] === $item['author_xchan'])
- $edpost = array(z_root()."/editpost/".$item['id'], t("Edit"));
- else
- $edpost = false;
-
-
- if($observer['xchan_hash'] == $this->get_data_value('author_xchan')
- || $observer['xchan_hash'] == $this->get_data_value('owner_xchan')
- || $this->get_data_value('uid') == local_channel())
- $dropping = true;
-
-
- if(array_key_exists('real_uid',$item)) {
- $edpost = false;
- $dropping = false;
- }
-
-
- if($dropping) {
- $drop = array(
- 'dropping' => $dropping,
- 'delete' => t('Delete'),
- );
- }
-// FIXME
- if($observer_is_pageowner) {
- $multidrop = array(
- 'select' => t('Select'),
- );
- }
-
- $filer = ((($conv->get_profile_owner() == local_channel()) && (! array_key_exists('real_uid',$item))) ? t("Save to Folder") : false);
-
- $profile_avatar = $item['author']['xchan_photo_m'];
- $profile_link = chanlink_url($item['author']['xchan_url']);
- $profile_name = $item['author']['xchan_name'];
-
- $location = format_location($item);
- $isevent = false;
- $attend = null;
- $canvote = false;
-
- // process action responses - e.g. like/dislike/attend/agree/whatever
- $response_verbs = array('like');
- if(feature_enabled($conv->get_profile_owner(),'dislike'))
- $response_verbs[] = 'dislike';
- if($item['obj_type'] === ACTIVITY_OBJ_EVENT) {
- $response_verbs[] = 'attendyes';
- $response_verbs[] = 'attendno';
- $response_verbs[] = 'attendmaybe';
- if($this->is_commentable()) {
- $isevent = true;
- $attend = array( t('I will attend'), t('I will not attend'), t('I might attend'));
- }
- }
-
- $consensus = (intval($item['item_consensus']) ? true : false);
- if($consensus) {
- $response_verbs[] = 'agree';
- $response_verbs[] = 'disagree';
- $response_verbs[] = 'abstain';
- if($this->is_commentable()) {
- $conlabels = array( t('I agree'), t('I disagree'), t('I abstain'));
- $canvote = true;
- }
- }
-
- if(! feature_enabled($conv->get_profile_owner(),'dislike'))
- unset($conv_responses['dislike']);
-
- $responses = get_responses($conv_responses,$response_verbs,$this,$item);
-
- $like_count = ((x($conv_responses['like'],$item['mid'])) ? $conv_responses['like'][$item['mid']] : '');
- $like_list = ((x($conv_responses['like'],$item['mid'])) ? $conv_responses['like'][$item['mid'] . '-l'] : '');
- if (count($like_list) > MAX_LIKERS) {
- $like_list_part = array_slice($like_list, 0, MAX_LIKERS);
- array_push($like_list_part, '<a href="#" data-toggle="modal" data-target="#likeModal-' . $this->get_id() . '"><b>' . t('View all') . '</b></a>');
- } else {
- $like_list_part = '';
- }
- $like_button_label = tt('Like','Likes',$like_count,'noun');
-
- if (feature_enabled($conv->get_profile_owner(),'dislike')) {
- $dislike_count = ((x($conv_responses['dislike'],$item['mid'])) ? $conv_responses['dislike'][$item['mid']] : '');
- $dislike_list = ((x($conv_responses['dislike'],$item['mid'])) ? $conv_responses['dislike'][$item['mid'] . '-l'] : '');
- $dislike_button_label = tt('Dislike','Dislikes',$dislike_count,'noun');
- if (count($dislike_list) > MAX_LIKERS) {
- $dislike_list_part = array_slice($dislike_list, 0, MAX_LIKERS);
- array_push($dislike_list_part, '<a href="#" data-toggle="modal" data-target="#dislikeModal-' . $this->get_id() . '"><b>' . t('View all') . '</b></a>');
- } else {
- $dislike_list_part = '';
- }
- }
-
- $showlike = ((x($conv_responses['like'],$item['mid'])) ? format_like($conv_responses['like'][$item['mid']],$conv_responses['like'][$item['mid'] . '-l'],'like',$item['mid']) : '');
- $showdislike = ((x($conv_responses['dislike'],$item['mid']) && feature_enabled($conv->get_profile_owner(),'dislike'))
- ? format_like($conv_responses['dislike'][$item['mid']],$conv_responses['dislike'][$item['mid'] . '-l'],'dislike',$item['mid']) : '');
-
- /*
- * We should avoid doing this all the time, but it depends on the conversation mode
- * And the conv mode may change when we change the conv, or it changes its mode
- * Maybe we should establish a way to be notified about conversation changes
- */
-
- $this->check_wall_to_wall();
-
- if($this->is_toplevel()) {
- // FIXME check this permission
- if(($conv->get_profile_owner() == local_channel()) && (! array_key_exists('real_uid',$item))) {
-
-// FIXME we don't need all this stuff, some can be done in the template
-
- $star = array(
- 'do' => t("Add Star"),
- 'undo' => t("Remove Star"),
- 'toggle' => t("Toggle Star Status"),
- 'classdo' => (intval($item['item_starred']) ? "hidden" : ""),
- 'classundo' => (intval($item['item_starred']) ? "" : "hidden"),
- 'isstarred' => (intval($item['item_starred']) ? "starred fa-star" : "unstarred fa-star-o"),
- 'starred' => t('starred'),
- );
-
- }
- } else {
- $indent = 'comment';
- }
-
-
- $verified = (intval($item['item_verified']) ? t('Message signature validated') : '');
- $forged = ((($item['sig']) && (! intval($item['item_verified']))) ? t('Message signature incorrect') : '');
- $unverified = '' ; // (($this->is_wall_to_wall() && (! intval($item['item_verified']))) ? t('Message cannot be verified') : '');
-
-
-
- // FIXME - check this permission
- if($conv->get_profile_owner() == local_channel()) {
- $tagger = array(
- 'tagit' => t("Add Tag"),
- 'classtagger' => "",
- );
- }
-
- $has_bookmarks = false;
- if(is_array($item['term'])) {
- foreach($item['term'] as $t) {
- if(!UNO && $t['type'] == TERM_BOOKMARK)
- $has_bookmarks = true;
- }
- }
-
- $has_event = false;
- if(($item['obj_type'] === ACTIVITY_OBJ_EVENT) && $conv->get_profile_owner() == local_channel())
- $has_event = true;
-
- if($this->is_commentable()) {
- $like = array( t("I like this \x28toggle\x29"), t("like"));
- $dislike = array( t("I don't like this \x28toggle\x29"), t("dislike"));
- }
-
- if ($shareable)
- $share = array( t('Share This'), t('share'));
-
- $dreport = '';
-
- $keep_reports = intval(get_config('system','expire_delivery_reports'));
- if($keep_reports === 0)
- $keep_reports = 30;
-
- if((! get_config('system','disable_dreport')) && strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC',"now - $keep_reports days")) > 0)
- $dreport = t('Delivery Report');
-
- if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0)
- $indent .= ' shiny';
-
-
- localize_item($item);
-
- $body = prepare_body($item,true);
-
- // $viewthread (below) is only valid in list mode. If this is a channel page, build the thread viewing link
- // since we can't depend on llink or plink pointing to the right local location.
-
- $owner_address = substr($item['owner']['xchan_addr'],0,strpos($item['owner']['xchan_addr'],'@'));
- $viewthread = $item['llink'];
- if($conv->get_mode() === 'channel')
- $viewthread = z_root() . '/channel/' . $owner_address . '?f=&mid=' . $item['mid'];
-
- $comment_count_txt = sprintf( tt('%d comment','%d comments',$total_children),$total_children );
- $list_unseen_txt = (($unseen_comments) ? sprintf('%d unseen',$unseen_comments) : '');
-
-
-
-
-
- $children = $this->get_children();
-
- $has_tags = (($body['tags'] || $body['categories'] || $body['mentions'] || $body['attachments'] || $body['folders']) ? true : false);
-
- $tmp_item = array(
- 'template' => $this->get_template(),
- 'mode' => $mode,
- 'type' => implode("",array_slice(explode("/",$item['verb']),-1)),
- 'body' => $body['html'],
- 'tags' => $body['tags'],
- 'categories' => $body['categories'],
- 'mentions' => $body['mentions'],
- 'attachments' => $body['attachments'],
- 'folders' => $body['folders'],
- 'text' => strip_tags($body['html']),
- 'id' => $this->get_id(),
- 'mid' => $item['mid'],
- 'isevent' => $isevent,
- 'attend' => $attend,
- 'consensus' => $consensus,
- 'conlabels' => $conlabels,
- 'canvote' => $canvote,
- 'linktitle' => sprintf( t('View %s\'s profile - %s'), $profile_name, $item['author']['xchan_addr']),
- 'olinktitle' => sprintf( t('View %s\'s profile - %s'), $this->get_owner_name(), $item['owner']['xchan_addr']),
- 'llink' => $item['llink'],
- 'viewthread' => $viewthread,
- 'to' => t('to'),
- 'via' => t('via'),
- 'wall' => t('Wall-to-Wall'),
- 'vwall' => t('via Wall-To-Wall:'),
- 'profile_url' => $profile_link,
- 'item_photo_menu' => item_photo_menu($item),
- 'dreport' => $dreport,
- 'name' => $profile_name,
- 'thumb' => $profile_avatar,
- 'osparkle' => $osparkle,
- 'sparkle' => $sparkle,
- 'title' => $item['title'],
- 'title_tosource' => get_pconfig($conv->get_profile_owner(),'system','title_tosource'),
- 'ago' => relative_date($item['created']),
- 'app' => $item['app'],
- 'str_app' => sprintf( t('from %s'), $item['app']),
- 'isotime' => datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'c'),
- 'localtime' => datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'r'),
- 'editedtime' => (($item['edited'] != $item['created']) ? sprintf( t('last edited: %s'), datetime_convert('UTC', date_default_timezone_get(), $item['edited'], 'r')) : ''),
- 'expiretime' => (($item['expires'] !== NULL_DATE) ? sprintf( t('Expires: %s'), datetime_convert('UTC', date_default_timezone_get(), $item['expires'], 'r')):''),
- 'lock' => $lock,
- 'verified' => $verified,
- 'unverified' => $unverified,
- 'forged' => $forged,
- 'location' => $location,
- 'indent' => $indent,
- 'owner_url' => $this->get_owner_url(),
- 'owner_photo' => $this->get_owner_photo(),
- 'owner_name' => $this->get_owner_name(),
- 'photo' => $body['photo'],
- 'event' => $body['event'],
- 'has_tags' => $has_tags,
-
-// Item toolbar buttons
- 'like' => $like,
- 'dislike' => ((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike : ''),
- 'share' => $share,
- 'rawmid' => $item['mid'],
- 'plink' => get_plink($item),
- 'edpost' => $edpost, // ((feature_enabled($conv->get_profile_owner(),'edit_posts')) ? $edpost : ''),
- 'star' => ((feature_enabled($conv->get_profile_owner(),'star_posts')) ? $star : ''),
- 'tagger' => ((feature_enabled($conv->get_profile_owner(),'commtag')) ? $tagger : ''),
- 'filer' => ((feature_enabled($conv->get_profile_owner(),'filing')) ? $filer : ''),
- 'bookmark' => (($conv->get_profile_owner() == local_channel() && local_channel() && $has_bookmarks) ? t('Save Bookmarks') : ''),
- 'addtocal' => (($has_event) ? t('Add to Calendar') : ''),
- 'drop' => $drop,
- 'multidrop' => ((feature_enabled($conv->get_profile_owner(),'multi_delete')) ? $multidrop : ''),
-// end toolbar buttons
-
- 'unseen_comments' => $unseen_comments,
- 'comment_count' => $total_children,
- 'comment_count_txt' => $comment_count_txt,
- 'list_unseen_txt' => $list_unseen_txt,
- 'markseen' => t('Mark all seen'),
- 'responses' => $responses,
- 'like_count' => $like_count,
- 'like_list' => $like_list,
- 'like_list_part' => $like_list_part,
- 'like_button_label' => $like_button_label,
- 'like_modal_title' => t('Likes','noun'),
- 'dislike_modal_title' => t('Dislikes','noun'),
- 'dislike_count' => ((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike_count : ''),
- 'dislike_list' => ((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike_list : ''),
- 'dislike_list_part' => ((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike_list_part : ''),
- 'dislike_button_label' => ((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike_button_label : ''),
- 'modal_dismiss' => t('Close'),
- 'showlike' => $showlike,
- 'showdislike' => $showdislike,
- 'comment' => $this->get_comment_box($indent),
- 'previewing' => ($conv->is_preview() ? ' preview ' : ''),
- 'wait' => t('Please wait'),
- 'thread_level' => $thread_level
- );
-
- $arr = array('item' => $item, 'output' => $tmp_item);
- call_hooks('display_item', $arr);
-
- $result = $arr['output'];
-
- $result['children'] = array();
- $nb_children = count($children);
-
- $visible_comments = get_config('system','expanded_comments');
- if($visible_comments === false)
- $visible_comments = 3;
-
- if(($this->get_display_mode() === 'normal') && ($nb_children > 0)) {
- foreach($children as $child) {
- $result['children'][] = $child->get_template_data($conv_responses, $thread_level + 1);
- }
- // Collapse
- if(($nb_children > $visible_comments) || ($thread_level > 1)) {
- $result['children'][0]['comment_firstcollapsed'] = true;
- $result['children'][0]['num_comments'] = $comment_count_txt;
- $result['children'][0]['hide_text'] = t('[+] show all');
- if($thread_level > 1) {
- $result['children'][$nb_children - 1]['comment_lastcollapsed'] = true;
- }
- else {
- $result['children'][$nb_children - ($visible_comments + 1)]['comment_lastcollapsed'] = true;
- }
- }
- }
-
- $result['private'] = $item['item_private'];
- $result['toplevel'] = ($this->is_toplevel() ? 'toplevel_item' : '');
-
- if($this->is_threaded()) {
- $result['flatten'] = false;
- $result['threaded'] = true;
- }
- else {
- $result['flatten'] = true;
- $result['threaded'] = false;
- }
-
- return $result;
- }
-
- public function get_id() {
- return $this->get_data_value('id');
- }
-
- public function get_display_mode() {
- return $this->display_mode;
- }
-
- public function set_display_mode($mode) {
- $this->display_mode = $mode;
- }
-
- public function is_threaded() {
- return $this->threaded;
- }
-
- public function set_commentable($val) {
- $this->commentable = $val;
- foreach($this->get_children() as $child)
- $child->set_commentable($val);
- }
-
- public function is_commentable() {
- return $this->commentable;
- }
-
- /**
- * Add a child item
- */
- public function add_child($item) {
- $item_id = $item->get_id();
- if(!$item_id) {
- logger('[ERROR] Item::add_child : Item has no ID!!', LOGGER_DEBUG);
- return false;
- }
- if($this->get_child($item->get_id())) {
- logger('[WARN] Item::add_child : Item already exists ('. $item->get_id() .').', LOGGER_DEBUG);
- return false;
- }
- /*
- * Only add what will be displayed
- */
-
- if(activity_match($item->get_data_value('verb'),ACTIVITY_LIKE) || activity_match($item->get_data_value('verb'),ACTIVITY_DISLIKE)) {
- return false;
- }
-
- $item->set_parent($this);
- $this->children[] = $item;
- return end($this->children);
- }
-
- /**
- * Get a child by its ID
- */
- public function get_child($id) {
- foreach($this->get_children() as $child) {
- if($child->get_id() == $id)
- return $child;
- }
- return null;
- }
-
- /**
- * Get all our children
- */
- public function get_children() {
- return $this->children;
- }
-
- /**
- * Set our parent
- */
- protected function set_parent($item) {
- $parent = $this->get_parent();
- if($parent) {
- $parent->remove_child($this);
- }
- $this->parent = $item;
- $this->set_conversation($item->get_conversation());
- }
-
- /**
- * Remove our parent
- */
- protected function remove_parent() {
- $this->parent = null;
- $this->conversation = null;
- }
-
- /**
- * Remove a child
- */
- public function remove_child($item) {
- $id = $item->get_id();
- foreach($this->get_children() as $key => $child) {
- if($child->get_id() == $id) {
- $child->remove_parent();
- unset($this->children[$key]);
- // Reindex the array, in order to make sure there won't be any trouble on loops using count()
- $this->children = array_values($this->children);
- return true;
- }
- }
- logger('[WARN] Item::remove_child : Item is not a child ('. $id .').', LOGGER_DEBUG);
- return false;
- }
-
- /**
- * Get parent item
- */
- protected function get_parent() {
- return $this->parent;
- }
-
- /**
- * set conversation
- */
- public function set_conversation($conv) {
- $previous_mode = ($this->conversation ? $this->conversation->get_mode() : '');
-
- $this->conversation = $conv;
-
- // Set it on our children too
- foreach($this->get_children() as $child)
- $child->set_conversation($conv);
- }
-
- /**
- * get conversation
- */
- public function get_conversation() {
- return $this->conversation;
- }
-
- /**
- * Get raw data
- *
- * We shouldn't need this
- */
- public function get_data() {
- return $this->data;
- }
-
- /**
- * Get a data value
- *
- * Returns:
- * _ value on success
- * _ false on failure
- */
- public function get_data_value($name) {
- if(!isset($this->data[$name])) {
-// logger('[ERROR] Item::get_data_value : Item has no value name "'. $name .'".', LOGGER_DEBUG);
- return false;
- }
-
- return $this->data[$name];
- }
-
- /**
- * Get template
- */
- public function get_template() {
- return $this->template;
- }
-
-
- public function set_template($t) {
- $this->template = $t;
- }
-
- /**
- * Check if this is a toplevel post
- */
- private function is_toplevel() {
- return $this->toplevel;
- }
-
- /**
- * Count the total of our descendants
- */
- private function count_descendants() {
- $children = $this->get_children();
- $total = count($children);
- if($total > 0) {
- foreach($children as $child) {
- $total += $child->count_descendants();
- }
- }
- return $total;
- }
-
- private function count_unseen_descendants() {
- $children = $this->get_children();
- $total = count($children);
- if($total > 0) {
- $total = 0;
- foreach($children as $child) {
- if((! visible_activity($child->data)) || array_key_exists('author_blocked',$child->data)) {
- continue;
- }
- if(intval($child->data['item_unseen']))
- $total ++;
- }
- }
- return $total;
- }
-
-
- /**
- * Get the template for the comment box
- */
- private function get_comment_box_template() {
- return $this->comment_box_template;
- }
-
- /**
- * Get the comment box
- *
- * Returns:
- * _ The comment box string (empty if no comment box)
- * _ false on failure
- */
- private function get_comment_box($indent) {
-
- if(!$this->is_toplevel() && !get_config('system','thread_allow')) {
- return '';
- }
-
- $comment_box = '';
- $conv = $this->get_conversation();
-
-// logger('Commentable conv: ' . $conv->is_commentable());
-
- if(! $this->is_commentable())
- return;
-
- $template = get_markup_template($this->get_comment_box_template());
-
- $a = $this->get_app();
- $observer = $conv->get_observer();
-
- $qc = ((local_channel()) ? get_pconfig(local_channel(),'system','qcomment') : null);
- $qcomment = (($qc) ? explode("\n",$qc) : null);
-
- $arr = array('comment_buttons' => '','id' => $this->get_id());
- call_hooks('comment_buttons',$arr);
- $comment_buttons = $arr['comment_buttons'];
-
-
- $comment_box = replace_macros($template,array(
- '$return_path' => '',
- '$threaded' => $this->is_threaded(),
- '$jsreload' => '', //(($conv->get_mode() === 'display') ? $_SESSION['return_url'] : ''),
- '$type' => (($conv->get_mode() === 'channel') ? 'wall-comment' : 'net-comment'),
- '$id' => $this->get_id(),
- '$parent' => $this->get_id(),
- '$qcomment' => $qcomment,
- '$comment_buttons' => $comment_buttons,
- '$profile_uid' => $conv->get_profile_owner(),
- '$mylink' => $observer['xchan_url'],
- '$mytitle' => t('This is you'),
- '$myphoto' => $observer['xchan_photo_s'],
- '$comment' => t('Comment'),
- '$submit' => t('Submit'),
- '$edbold' => t('Bold'),
- '$editalic' => t('Italic'),
- '$eduline' => t('Underline'),
- '$edquote' => t('Quote'),
- '$edcode' => t('Code'),
- '$edimg' => t('Image'),
- '$edurl' => t('Insert Link'),
- '$edvideo' => t('Video'),
- '$preview' => t('Preview'), // ((feature_enabled($conv->get_profile_owner(),'preview')) ? t('Preview') : ''),
- '$indent' => $indent,
- '$feature_encrypt' => ((feature_enabled($conv->get_profile_owner(),'content_encrypt')) ? true : false),
- '$encrypt' => t('Encrypt text'),
- '$cipher' => $conv->get_cipher(),
- '$sourceapp' => App::$sourcename
-
- ));
-
- return $comment_box;
- }
-
- private function get_redirect_url() {
- return $this->redirect_url;
- }
-
- /**
- * Check if we are a wall to wall item and set the relevant properties
- */
- protected function check_wall_to_wall() {
- $conv = $this->get_conversation();
- $this->wall_to_wall = false;
- $this->owner_url = '';
- $this->owner_photo = '';
- $this->owner_name = '';
-
- if($conv->get_mode() === 'channel')
- return;
-
- if($this->is_toplevel() && ($this->get_data_value('author_xchan') != $this->get_data_value('owner_xchan'))) {
- $this->owner_url = chanlink_url($this->data['owner']['xchan_url']);
- $this->owner_photo = $this->data['owner']['xchan_photo_m'];
- $this->owner_name = $this->data['owner']['xchan_name'];
- $this->wall_to_wall = true;
- }
- }
-
- private function is_wall_to_wall() {
- return $this->wall_to_wall;
- }
-
- private function get_owner_url() {
- return $this->owner_url;
- }
-
- private function get_owner_photo() {
- return $this->owner_photo;
- }
-
- private function get_owner_name() {
- return $this->owner_name;
- }
-
- private function is_visiting() {
- return $this->visiting;
- }
-
-
-
-
-}
-
diff --git a/include/PermissionDescription.php b/include/PermissionDescription.php
index 75dd9ecf7..1f7799406 100644
--- a/include/PermissionDescription.php
+++ b/include/PermissionDescription.php
@@ -117,11 +117,7 @@ class PermissionDescription {
case PERMS_NETWORK: return t('Anybody in the $Projectname network');
case PERMS_SITE: return sprintf(t('Any account on %s'), \App::get_hostname());
case PERMS_CONTACTS: return t('Any of my connections');
- case PERMS_SPECIFIC:
- // Because we're describing the permissions of an item with an empty ACL,
- // the owner will be the only person able to see it if the permissions are
- // set to "only specified connections".
- return t('Only me (only specified contacts and me)');
+ case PERMS_SPECIFIC: return t('Only connections I specifically allow');
case PERMS_AUTHED: return t('Anybody authenticated (could include visitors from other networks)');
case PERMS_PENDING: return t('Any connections including those who haven\'t yet been approved');
default: return $this->fallback_description;
@@ -143,11 +139,7 @@ class PermissionDescription {
case PERMS_NETWORK: return 'fa-share-alt-square'; // fa-share-alt-square is very similiar to the hubzilla logo, but we should create our own logo class to use
case PERMS_SITE: return 'fa-sitemap';
case PERMS_CONTACTS: return 'fa-group';
- case PERMS_SPECIFIC:
- // Because we're describing the permissions of an item with an empty ACL,
- // the owner will be the only person able to see it if the permissions are
- // set to "only specified connections".
- return 'fa-eye-slash';
+ case PERMS_SPECIFIC: return 'fa-list';
case PERMS_AUTHED: return '';
case PERMS_PENDING: return '';
default: return '';
diff --git a/include/ProtoDriver.php b/include/ProtoDriver.php
deleted file mode 100644
index 7585a0135..000000000
--- a/include/ProtoDriver.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php /** @file */
-
-/*
- * Abstraction class for dealing with alternate networks (which of course do not exist, hence the abstraction)
- */
-
-
-abstract class ProtoDriver {
- abstract protected function discover($channel,$location);
- abstract protected function deliver($item,$channel,$recipients);
- abstract protected function collect($channel,$connection);
- abstract protected function change_permissions($permissions,$channel,$recipient);
- abstract protected function acknowledge_permissions($permissions,$channel,$recipient);
- abstract protected function deliver_private($item,$channel,$recipients);
- abstract protected function collect_private($channel,$connection);
-
-}
-
-class ZotDriver extends ProtoDriver {
-
- protected function discover($channel,$location) {
-
- }
- protected function deliver($item,$channel,$recipients) {
-
- }
- protected function collect($channel,$connection) {
-
- }
- protected function change_permissions($permissions,$channel,$recipient) {
-
- }
- protected function acknowledge_permissions($permissions,$channel,$recipient) {
-
- }
- protected function deliver_private($item,$channel,$recipients) {
-
- }
- protected function collect_private($channel,$connection) {
-
- }
-
-}
diff --git a/include/account.php b/include/account.php
index 5998609d4..caf12878e 100644
--- a/include/account.php
+++ b/include/account.php
@@ -11,7 +11,7 @@ require_once('include/text.php');
require_once('include/language.php');
require_once('include/datetime.php');
require_once('include/crypto.php');
-require_once('include/identity.php');
+require_once('include/channel.php');
function check_account_email($email) {
@@ -229,7 +229,7 @@ function verify_email_address($arr) {
$hash = random_string();
- $r = q("INSERT INTO register ( hash, created, uid, password, language ) VALUES ( '%s', '%s', %d, '%s', '%s' ) ",
+ $r = q("INSERT INTO register ( hash, created, uid, password, lang ) VALUES ( '%s', '%s', %d, '%s', '%s' ) ",
dbesc($hash),
dbesc(datetime_convert()),
intval($arr['account']['account_id']),
@@ -283,7 +283,7 @@ function send_reg_approval_email($arr) {
$hash = random_string();
- $r = q("INSERT INTO register ( hash, created, uid, password, language ) VALUES ( '%s', '%s', %d, '%s', '%s' ) ",
+ $r = q("INSERT INTO register ( hash, created, uid, password, lang ) VALUES ( '%s', '%s', %d, '%s', '%s' ) ",
dbesc($hash),
dbesc(datetime_convert()),
intval($arr['account']['account_id']),
@@ -387,7 +387,7 @@ function account_allow($hash) {
intval($register[0]['uid'])
);
- push_lang($register[0]['language']);
+ push_lang($register[0]['lang']);
$email_tpl = get_intltext_template("register_open_eml.tpl");
$email_tpl = replace_macros($email_tpl, array(
@@ -656,7 +656,8 @@ function account_service_class_allows($aid, $property, $usage = false) {
* @todo Should we merge this with account_service_class_fetch()?
*/
function service_class_fetch($uid, $property) {
- $a = get_app();
+
+
if($uid == local_channel()) {
$service_class = App::$account['account_service_class'];
}
diff --git a/include/acl_selectors.php b/include/acl_selectors.php
index ce0a32798..89d054e3b 100644
--- a/include/acl_selectors.php
+++ b/include/acl_selectors.php
@@ -11,13 +11,11 @@ require_once("include/PermissionDescription.php");
function group_select($selname,$selclass,$preselected = false,$size = 4) {
- $a = get_app();
-
$o = '';
$o .= "<select name=\"{$selname}[]\" id=\"$selclass\" class=\"$selclass\" multiple=\"multiple\" size=\"$size\" >\r\n";
- $r = q("SELECT * FROM `groups` WHERE `deleted` = 0 AND `uid` = %d ORDER BY `name` ASC",
+ $r = q("SELECT * FROM `groups` WHERE `deleted` = 0 AND `uid` = %d ORDER BY `gname` ASC",
intval(local_channel())
);
@@ -34,7 +32,7 @@ function group_select($selname,$selclass,$preselected = false,$size = 4) {
$selected = " selected=\"selected\" ";
else
$selected = '';
- $trimmed = mb_substr($rr['name'],0,12);
+ $trimmed = mb_substr($rr['gname'],0,12);
$o .= "<option value=\"{$rr['id']}\" $selected title=\"{$rr['name']}\" >$trimmed</option>\r\n";
}
@@ -51,7 +49,6 @@ function group_select($selname,$selclass,$preselected = false,$size = 4) {
/* MicMee 20130114 function contact_selector no longer in use, sql table contact does no longer exist
function contact_selector($selname, $selclass, $preselected = false, $options) {
- $a = get_app();
$mutual = false;
$networks = null;
@@ -157,7 +154,6 @@ function contact_selector($selname, $selclass, $preselected = false, $options) {
function contact_select($selname, $selclass, $preselected = false, $size = 4, $privmail = false, $celeb = false, $privatenet = false, $tabindex = null) {
- $a = get_app();
$o = '';
@@ -230,14 +226,14 @@ function populate_acl($defaults = null,$show_jotnets = true, $emptyACL_descripti
$allow_cid = $allow_gid = $deny_cid = $deny_gid = false;
$showall_origin = '';
$showall_icon = 'fa-globe';
-
+ $role = get_pconfig(local_channel(),'system','permissions_role');
if(! $emptyACL_description) {
$showall_caption = t('Visible to your default audience');
} else if (is_a($emptyACL_description, 'PermissionDescription')) {
$showall_caption = $emptyACL_description->get_permission_description();
- $showall_origin = $emptyACL_description->get_permission_origin_description();
+ $showall_origin = (($role === 'custom') ? $emptyACL_description->get_permission_origin_description() : '');
$showall_icon = $emptyACL_description->get_permission_icon();
} else {
@@ -269,9 +265,11 @@ function populate_acl($defaults = null,$show_jotnets = true, $emptyACL_descripti
$tpl = get_markup_template("acl_selector.tpl");
$o = replace_macros($tpl, array(
'$showall' => $showall_caption,
+ '$onlyme' => t('Only me'),
'$showallOrigin' => $showall_origin,
'$showallIcon' => $showall_icon,
- '$showlimited' => t("Limit access:"),
+ '$select_label' => t('Who can see this?'),
+ '$showlimited' => t('Custom selection'),
'$showlimitedDesc' => t('Select "Show" to allow viewing. "Don\'t show" lets you override and limit the scope of "Show".'),
'$show' => t("Show"),
'$hide' => t("Don't show"),
diff --git a/include/activities.php b/include/activities.php
index 9ba191391..3271db993 100644
--- a/include/activities.php
+++ b/include/activities.php
@@ -1,7 +1,6 @@
<?php /** @file */
function profile_activity($changed, $value) {
- $a = get_app();
if(! local_channel() || ! is_array($changed) || ! count($changed))
return;
@@ -89,7 +88,7 @@ function profile_activity($changed, $value) {
if($i) {
// FIXME - limit delivery in notifier.php to those specificed in the perms argument
- proc_run('php',"include/notifier.php","activity","$i", 'PERMS_R_PROFILE');
+ Zotlabs\Daemon\Master::Summon(array('Notifier','activity', $i, 'PERMS_R_PROFILE'));
}
}
diff --git a/include/api.php b/include/api.php
index 3b2c71923..be525f7e9 100644
--- a/include/api.php
+++ b/include/api.php
@@ -368,7 +368,7 @@ require_once('include/api_auth.php');
else
$redirect = trim($_REQUEST['redirect_uris']);
$icon = trim($_REQUEST['logo_uri']);
- $r = q("INSERT INTO clients (client_id, pw, name, redirect_uri, icon, uid)
+ $r = q("INSERT INTO clients (client_id, pw, clname, redirect_uri, icon, uid)
VALUES ('%s','%s','%s','%s','%s',%d)",
dbesc($key),
dbesc($secret),
@@ -451,8 +451,6 @@ require_once('include/api_auth.php');
*/
function api_apply_template($templatename, $type, $data){
- $a = get_app();
-
switch($type){
case "atom":
case "rss":
@@ -486,7 +484,7 @@ require_once('include/api_auth.php');
function api_account_logout(&$a, $type){
require_once('include/auth.php');
- \Zotlabs\Web\Session::nuke();
+ App::$session->nuke();
return api_apply_template("user", $type, array('$user' => null));
}
@@ -514,7 +512,7 @@ require_once('include/api_auth.php');
return false;
}
- require_once('include/identity.php');
+ require_once('include/channel.php');
json_return_and_die(identity_basic_export(api_user(),(($_REQUEST['posts']) ? intval($_REQUEST['posts']) : 0 )));
}
@@ -556,7 +554,7 @@ require_once('include/api_auth.php');
dbesc($_REQUEST['file_id'])
);
if($r) {
- unset($r[0]['data']);
+ unset($r[0]['content']);
$ret = array('attach' => $r[0]);
json_return_and_die($ret);
}
@@ -582,21 +580,21 @@ require_once('include/api_auth.php');
$length = intval($ptr['filesize']);
if($ptr['is_dir'])
- $ptr['data'] = '';
+ $ptr['content'] = '';
elseif(! intval($r[0]['os_storage'])) {
$ptr['start'] = $start;
- $x = substr(dbunescbin($ptr['data'],$start,$length));
+ $x = substr(dbunescbin($ptr['content'],$start,$length));
$ptr['length'] = strlen($x);
- $ptr['data'] = base64_encode($x);
+ $ptr['content'] = base64_encode($x);
}
else {
- $fp = fopen(dbunescbin($ptr['data']),'r');
+ $fp = fopen(dbunescbin($ptr['content']),'r');
if($fp) {
$seek = fseek($fp,$start,SEEK_SET);
$x = fread($fp,$length);
$ptr['start'] = $start;
$ptr['length'] = strlen($x);
- $ptr['data'] = base64_encode($x);
+ $ptr['content'] = base64_encode($x);
}
}
@@ -619,11 +617,11 @@ require_once('include/api_auth.php');
);
if($r) {
if($r[0]['is_dir'])
- $r[0]['data'] = '';
+ $r[0]['content'] = '';
elseif(intval($r[0]['os_storage']))
- $r[0]['data'] = base64_encode(file_get_contents(dbunescbin($r[0]['data'])));
+ $r[0]['content'] = base64_encode(file_get_contents(dbunescbin($r[0]['content'])));
else
- $r[0]['data'] = base64_encode(dbunescbin($r[0]['data']));
+ $r[0]['content'] = base64_encode(dbunescbin($r[0]['content']));
$ret = array('attach' => $r[0]);
json_return_and_die($ret);
@@ -649,16 +647,16 @@ require_once('include/api_auth.php');
if (api_user()===false) return false;
if(! $_REQUEST['photo_id']) return false;
$scale = ((array_key_exists('scale',$_REQUEST)) ? intval($_REQUEST['scale']) : 0);
- $r = q("select * from photo where uid = %d and resource_id = '%s' and scale = %d limit 1",
+ $r = q("select * from photo where uid = %d and resource_id = '%s' and imgscale = %d limit 1",
intval(local_channel()),
dbesc($_REQUEST['photo_id']),
intval($scale)
);
if($r) {
- $data = dbunescbin($r[0]['data']);
+ $data = dbunescbin($r[0]['content']);
if(array_key_exists('os_storage',$r[0]) && intval($r[0]['os_storage']))
$data = file_get_contents($data);
- $r[0]['data'] = base64_encode($data);
+ $r[0]['content'] = base64_encode($data);
$ret = array('photo' => $r[0]);
$i = q("select id from item where uid = %d and resource_type = 'photo' and resource_id = '%s' limit 1",
intval(local_channel()),
@@ -1904,13 +1902,17 @@ require_once('include/api_auth.php');
//logger('api_format_items: ' . print_r($user_info,true));
- $a = get_app();
$ret = array();
+ $x = array('items' => $r,'api_user' => api_user(),'user_info' => $user_info);
+ call_hooks('api_format_items',$x);
+ $r = $x['items'];
+
if(! $r)
return $ret;
foreach($r as $item) {
+
localize_item($item);
$status_user = (($item['author_xchan']==$user_info['guid'])?$user_info: api_item_get_user($a,$item));
@@ -2107,10 +2109,10 @@ require_once('include/api_auth.php');
'private' => $private, 'textlimit' => $textlimit, 'sslserver' => $sslserver, 'ssl' => $ssl,
'shorturllength' => '30',
'hubzilla' => array(
- 'PLATFORM_NAME' => Zotlabs\Project\System::get_platform_name(),
- 'STD_VERSION' => Zotlabs\Project\System::get_project_version(),
+ 'PLATFORM_NAME' => Zotlabs\Lib\System::get_platform_name(),
+ 'STD_VERSION' => Zotlabs\Lib\System::get_project_version(),
'ZOT_REVISION' => ZOT_REVISION,
- 'DB_UPDATE_VERSION' => Zotlabs\Project\System::get_update_version()
+ 'DB_UPDATE_VERSION' => Zotlabs\Lib\System::get_update_version()
)
));
@@ -2143,12 +2145,12 @@ require_once('include/api_auth.php');
if($type === 'xml') {
header("Content-type: application/xml");
- echo '<?xml version="1.0" encoding="UTF-8"?>' . "\r\n" . '<version>' . Zotlabs\Project\System::get_project_version() . '</version>' . "\r\n";
+ echo '<?xml version="1.0" encoding="UTF-8"?>' . "\r\n" . '<version>' . Zotlabs\Lib\System::get_project_version() . '</version>' . "\r\n";
killme();
}
elseif($type === 'json') {
header("Content-type: application/json");
- echo '"' . Zotlabs\Project\System::get_project_version() . '"';
+ echo '"' . Zotlabs\Lib\System::get_project_version() . '"';
killme();
}
}
diff --git a/include/apps.php b/include/apps.php
deleted file mode 100644
index 7439be6d4..000000000
--- a/include/apps.php
+++ /dev/null
@@ -1,658 +0,0 @@
-<?php /** @file */
-
-/**
- * apps
- *
- */
-
-require_once('include/plugin.php');
-require_once('include/identity.php');
-
-function get_system_apps($translate = true) {
-
- $ret = array();
- if(is_dir('apps'))
- $files = glob('apps/*.apd');
- else
- $files = glob('app/*.apd');
- if($files) {
- foreach($files as $f) {
- $x = parse_app_description($f,$translate);
- if($x) {
- $ret[] = $x;
- }
- }
- }
- $files = glob('addon/*/*.apd');
- if($files) {
- foreach($files as $f) {
- $n = basename($f,'.apd');
- if(plugin_is_installed($n)) {
- $x = parse_app_description($f,$translate);
- if($x) {
- $ret[] = $x;
- }
- }
- }
- }
-
- return $ret;
-
-}
-
-
-function import_system_apps() {
- if(! local_channel())
- return;
-
- // Eventually we want to look at modification dates and update system apps.
-
- $installed = get_pconfig(local_channel(),'system','apps_installed');
- if($installed)
- return;
- $apps = get_system_apps(false);
- if($apps) {
- foreach($apps as $app) {
- $app['uid'] = local_channel();
- $app['guid'] = hash('whirlpool',$app['name']);
- $app['system'] = 1;
- app_install(local_channel(),$app);
- }
- }
- set_pconfig(local_channel(),'system','apps_installed',1);
-}
-
-
-
-
-function app_name_compare($a,$b) {
- return strcmp($a['name'],$b['name']);
-}
-
-
-function parse_app_description($f,$translate = true) {
- $ret = array();
-
- $baseurl = z_root();
- $channel = App::get_channel();
- $address = (($channel) ? $channel['channel_address'] : '');
-
- //future expansion
-
- $observer = App::get_observer();
-
-
- $lines = @file($f);
- if($lines) {
- foreach($lines as $x) {
- if(preg_match('/^([a-zA-Z].*?):(.*?)$/ism',$x,$matches)) {
- $ret[$matches[1]] = trim(str_replace(array('$baseurl','$nick'),array($baseurl,$address),$matches[2]));
- }
- }
- }
-
-
- if(! $ret['photo'])
- $ret['photo'] = $baseurl . '/' . get_default_profile_photo(80);
-
- $ret['type'] = 'system';
-
- foreach($ret as $k => $v) {
- if(strpos($v,'http') === 0)
- $ret[$k] = zid($v);
- }
-
- if(array_key_exists('desc',$ret))
- $ret['desc'] = str_replace(array('\'','"'),array('&#39;','&dquot;'),$ret['desc']);
-
- if(array_key_exists('target',$ret))
- $ret['target'] = str_replace(array('\'','"'),array('&#39;','&dquot;'),$ret['target']);
-
- if(array_key_exists('requires',$ret)) {
- $requires = explode(',',$ret['requires']);
- foreach($requires as $require) {
- $require = trim(strtolower($require));
- switch($require) {
- case 'nologin':
- if(local_channel())
- unset($ret);
- break;
- case 'admin':
- if(! is_site_admin())
- unset($ret);
- break;
- case 'local_channel':
- if(! local_channel())
- unset($ret);
- break;
- case 'public_profile':
- if(! is_public_profile())
- unset($ret);
- break;
- case 'observer':
- if(! $observer)
- unset($ret);
- break;
- default:
- if(! (local_channel() && feature_enabled(local_channel(),$require)))
- unset($ret);
- break;
-
- }
- }
- }
- if($ret) {
- if($translate)
- translate_system_apps($ret);
- return $ret;
- }
- return false;
-}
-
-
-function translate_system_apps(&$arr) {
- $apps = array(
- 'Site Admin' => t('Site Admin'),
- 'Bug Report' => t('Bug Report'),
- 'View Bookmarks' => t('View Bookmarks'),
- 'My Chatrooms' => t('My Chatrooms'),
- 'Connections' => t('Connections'),
- 'Firefox Share' => t('Firefox Share'),
- 'Remote Diagnostics' => t('Remote Diagnostics'),
- 'Suggest Channels' => t('Suggest Channels'),
- 'Login' => t('Login'),
- 'Channel Manager' => t('Channel Manager'),
- 'Grid' => t('Grid'),
- 'Settings' => t('Settings'),
- 'Files' => t('Files'),
- 'Webpages' => t('Webpages'),
- 'Channel Home' => t('Channel Home'),
- 'View Profile' => t('View Profile'),
- 'Photos' => t('Photos'),
- 'Events' => t('Events'),
- 'Directory' => t('Directory'),
- 'Help' => t('Help'),
- 'Mail' => t('Mail'),
- 'Mood' => t('Mood'),
- 'Poke' => t('Poke'),
- 'Chat' => t('Chat'),
- 'Search' => t('Search'),
- 'Probe' => t('Probe'),
- 'Suggest' => t('Suggest'),
- 'Random Channel' => t('Random Channel'),
- 'Invite' => t('Invite'),
- 'Features' => t('Features'),
- 'Language' => t('Language'),
- 'Post' => t('Post'),
- 'Profile Photo' => t('Profile Photo')
- );
-
- if(array_key_exists($arr['name'],$apps))
- $arr['name'] = $apps[$arr['name']];
-
-}
-
-
-// papp is a portable app
-
-function app_render($papp,$mode = 'view') {
-
- /**
- * modes:
- * view: normal mode for viewing an app via bbcode from a conversation or page
- * provides install/update button if you're logged in locally
- * list: normal mode for viewing an app on the app page
- * no buttons are shown
- * edit: viewing the app page in editing mode provides a delete button
- */
-
- $installed = false;
-
- if(! $papp)
- return;
-
- if(! $papp['photo'])
- $papp['photo'] = z_root() . '/' . get_default_profile_photo(80);
-
-
-
- $papp['papp'] = papp_encode($papp);
-
- if(! strstr($papp['url'],'://'))
- $papp['url'] = z_root() . ((strpos($papp['url'],'/') === 0) ? '' : '/') . $papp['url'];
-
- foreach($papp as $k => $v) {
- if(strpos($v,'http') === 0 && $k != 'papp')
- $papp[$k] = zid($v);
- if($k === 'desc')
- $papp['desc'] = str_replace(array('\'','"'),array('&#39;','&dquot;'),$papp['desc']);
-
- if($k === 'requires') {
- $requires = explode(',',$v);
- foreach($requires as $require) {
- $require = trim(strtolower($require));
- switch($require) {
- case 'nologin':
- if(local_channel())
- return '';
- break;
- case 'admin':
- if(! is_site_admin())
- return '';
- break;
- case 'local_channel':
- if(! local_channel())
- return '';
- break;
- case 'public_profile':
- if(! is_public_profile())
- return '';
- break;
- case 'observer':
- $observer = App::get_observer();
- if(! $observer)
- return '';
- break;
- default:
- if(! (local_channel() && feature_enabled(local_channel(),$require)))
- return '';
- break;
-
- }
- }
-
- }
- }
-
- $hosturl = '';
-
- if(local_channel()) {
- $installed = app_installed(local_channel(),$papp);
- $hosturl = z_root() . '/';
- }
- elseif(remote_channel()) {
- $observer = App::get_observer();
- if($observer && $observer['xchan_network'] === 'zot') {
- // some folks might have xchan_url redirected offsite, use the connurl
- $x = parse_url($observer['xchan_connurl']);
- if($x) {
- $hosturl = $x['scheme'] . '://' . $x['host'] . '/';
- }
- }
- }
-
- $install_action = (($installed) ? t('Update') : t('Install'));
-
- return replace_macros(get_markup_template('app.tpl'),array(
- '$app' => $papp,
- '$hosturl' => $hosturl,
- '$purchase' => (($papp['page'] && (! $installed)) ? t('Purchase') : ''),
- '$install' => (($hosturl && $mode == 'view') ? $install_action : ''),
- '$edit' => ((local_channel() && $installed && $mode == 'edit') ? t('Edit') : ''),
- '$delete' => ((local_channel() && $installed && $mode == 'edit') ? t('Delete') : '')
- ));
-}
-
-
-function app_install($uid,$app) {
- $app['uid'] = $uid;
-
- if(app_installed($uid,$app))
- $x = app_update($app);
- else
- $x = app_store($app);
-
- if($x['success']) {
- $r = q("select * from app where app_id = '%s' and app_channel = %d limit 1",
- dbesc($x['app_id']),
- intval($uid)
- );
- if($r) {
- if(! $r[0]['app_system']) {
- if($app['categories'] && (! $app['term'])) {
- $r[0]['term'] = q("select * from term where otype = %d and oid = d",
- intval(TERM_OBJ_APP),
- intval($r[0]['id'])
- );
- build_sync_packet($uid,array('app' => $r[0]));
- }
- }
- }
- return $x['app_id'];
- }
- return false;
-}
-
-function app_destroy($uid,$app) {
-
-
- if($uid && $app['guid']) {
-
- $x = q("select * from app where app_id = '%s' and app_channel = %d limit 1",
- dbesc($app['guid']),
- intval($uid)
- );
- if($x) {
- $x[0]['app_deleted'] = 1;
- q("delete from term where otype = %d and oid = %d",
- intval(TERM_OBJ_APP),
- intval($x[0]['id'])
- );
- if($x[0]['app_system']) {
- $r = q("update app set app_deleted = 1 where app_id = '%s' and app_channel = %d",
- dbesc($app['guid']),
- intval($uid)
- );
- }
- else {
- $r = q("delete from app where app_id = '%s' and app_channel = %d",
- dbesc($app['guid']),
- intval($uid)
- );
-
- // we don't sync system apps - they may be completely different on the other system
- build_sync_packet($uid,array('app' => $x));
- }
- }
- }
-}
-
-
-function app_installed($uid,$app) {
-
- $r = q("select id from app where app_id = '%s' and app_version = '%s' and app_channel = %d limit 1",
- dbesc((array_key_exists('guid',$app)) ? $app['guid'] : ''),
- dbesc((array_key_exists('version',$app)) ? $app['version'] : ''),
- intval($uid)
- );
- return(($r) ? true : false);
-
-}
-
-
-function app_list($uid, $deleted = false, $cat = '') {
- if($deleted)
- $sql_extra = " and app_deleted = 1 ";
- else
- $sql_extra = " and app_deleted = 0 ";
-
- if($cat) {
- $r = q("select oid from term where otype = %d and term = '%s'",
- intval(TERM_OBJ_APP),
- dbesc($cat)
- );
- if(! $r)
- return $r;
- $sql_extra .= " and app.id in ( ";
- $s = '';
- foreach($r as $rr) {
- if($s)
- $s .= ',';
- $s .= intval($rr['oid']);
- }
- $sql_extra .= $s . ') ';
- }
-
- $r = q("select * from app where app_channel = %d $sql_extra order by app_name asc",
- intval($uid)
- );
- if($r) {
- for($x = 0; $x < count($r); $x ++) {
- if(! $r[$x]['app_system'])
- $r[$x]['type'] = 'personal';
- $r[$x]['term'] = q("select * from term where otype = %d and oid = %d",
- intval(TERM_OBJ_APP),
- intval($r[$x]['id'])
- );
- }
- }
- return($r);
-}
-
-
-function app_decode($s) {
- $x = base64_decode(str_replace(array('<br />',"\r","\n",' '),array('','','',''),$s));
- return json_decode($x,true);
-}
-
-
-function app_store($arr) {
-
- // logger('app_store: ' . print_r($arr,true));
-
- $darray = array();
- $ret = array('success' => false);
-
- $darray['app_url'] = ((x($arr,'url')) ? $arr['url'] : '');
- $darray['app_channel'] = ((x($arr,'uid')) ? $arr['uid'] : 0);
-
- if((! $darray['app_url']) || (! $darray['app_channel']))
- return $ret;
-
- if($arr['photo'] && ! strstr($arr['photo'],z_root())) {
- $x = import_xchan_photo($arr['photo'],get_observer_hash(),true);
- $arr['photo'] = $x[1];
- }
-
-
- $darray['app_id'] = ((x($arr,'guid')) ? $arr['guid'] : random_string(). '.' . App::get_hostname());
- $darray['app_sig'] = ((x($arr,'sig')) ? $arr['sig'] : '');
- $darray['app_author'] = ((x($arr,'author')) ? $arr['author'] : get_observer_hash());
- $darray['app_name'] = ((x($arr,'name')) ? escape_tags($arr['name']) : t('Unknown'));
- $darray['app_desc'] = ((x($arr,'desc')) ? escape_tags($arr['desc']) : '');
- $darray['app_photo'] = ((x($arr,'photo')) ? $arr['photo'] : z_root() . '/' . get_default_profile_photo(80));
- $darray['app_version'] = ((x($arr,'version')) ? escape_tags($arr['version']) : '');
- $darray['app_addr'] = ((x($arr,'addr')) ? escape_tags($arr['addr']) : '');
- $darray['app_price'] = ((x($arr,'price')) ? escape_tags($arr['price']) : '');
- $darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : '');
- $darray['app_requires'] = ((x($arr,'requires')) ? escape_tags($arr['requires']) : '');
- $darray['app_system'] = ((x($arr,'system')) ? intval($arr['system']) : 0);
- $darray['app_deleted'] = ((x($arr,'deleted')) ? intval($arr['deleted']) : 0);
-
- $created = datetime_convert();
-
- $r = q("insert into app ( app_id, app_sig, app_author, app_name, app_desc, app_url, app_photo, app_version, app_channel, app_addr, app_price, app_page, app_requires, app_created, app_edited, app_system, app_deleted ) values ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', %d, %d )",
- dbesc($darray['app_id']),
- dbesc($darray['app_sig']),
- dbesc($darray['app_author']),
- dbesc($darray['app_name']),
- dbesc($darray['app_desc']),
- dbesc($darray['app_url']),
- dbesc($darray['app_photo']),
- dbesc($darray['app_version']),
- intval($darray['app_channel']),
- dbesc($darray['app_addr']),
- dbesc($darray['app_price']),
- dbesc($darray['app_page']),
- dbesc($darray['app_requires']),
- dbesc($created),
- dbesc($created),
- intval($darray['app_system']),
- intval($darray['app_deleted'])
- );
- if($r) {
- $ret['success'] = true;
- $ret['app_id'] = $darray['app_id'];
- }
- if($arr['categories']) {
- $x = q("select id from app where app_id = '%s' and app_channel = %d limit 1",
- dbesc($darray['app_id']),
- intval($darray['app_channel'])
- );
- $y = explode(',',$arr['categories']);
- if($y) {
- foreach($y as $t) {
- $t = trim($t);
- if($t) {
- store_item_tag($darray['app_channel'],$x[0]['id'],TERM_OBJ_APP,TERM_CATEGORY,escape_tags($t),escape_tags(z_root() . '/apps/?f=&cat=' . escape_tags($t)));
- }
- }
- }
- }
-
- return $ret;
-}
-
-
-function app_update($arr) {
-
- $darray = array();
- $ret = array('success' => false);
-
- $darray['app_url'] = ((x($arr,'url')) ? $arr['url'] : '');
- $darray['app_channel'] = ((x($arr,'uid')) ? $arr['uid'] : 0);
- $darray['app_id'] = ((x($arr,'guid')) ? $arr['guid'] : 0);
-
- if((! $darray['app_url']) || (! $darray['app_channel']) || (! $darray['app_id']))
- return $ret;
-
- if($arr['photo'] && ! strstr($arr['photo'],z_root())) {
- $x = import_xchan_photo($arr['photo'],get_observer_hash(),true);
- $arr['photo'] = $x[1];
- }
-
- $darray['app_sig'] = ((x($arr,'sig')) ? $arr['sig'] : '');
- $darray['app_author'] = ((x($arr,'author')) ? $arr['author'] : get_observer_hash());
- $darray['app_name'] = ((x($arr,'name')) ? escape_tags($arr['name']) : t('Unknown'));
- $darray['app_desc'] = ((x($arr,'desc')) ? escape_tags($arr['desc']) : '');
- $darray['app_photo'] = ((x($arr,'photo')) ? $arr['photo'] : z_root() . '/' . get_default_profile_photo(80));
- $darray['app_version'] = ((x($arr,'version')) ? escape_tags($arr['version']) : '');
- $darray['app_addr'] = ((x($arr,'addr')) ? escape_tags($arr['addr']) : '');
- $darray['app_price'] = ((x($arr,'price')) ? escape_tags($arr['price']) : '');
- $darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : '');
- $darray['app_requires'] = ((x($arr,'requires')) ? escape_tags($arr['requires']) : '');
- $darray['app_system'] = ((x($arr,'system')) ? intval($arr['system']) : 0);
- $darray['app_deleted'] = ((x($arr,'deleted')) ? intval($arr['deleted']) : 0);
-
- $edited = datetime_convert();
-
- $r = q("update app set app_sig = '%s', app_author = '%s', app_name = '%s', app_desc = '%s', app_url = '%s', app_photo = '%s', app_version = '%s', app_addr = '%s', app_price = '%s', app_page = '%s', app_requires = '%s', app_edited = '%s', app_system = %d, app_deleted = %d where app_id = '%s' and app_channel = %d",
- dbesc($darray['app_sig']),
- dbesc($darray['app_author']),
- dbesc($darray['app_name']),
- dbesc($darray['app_desc']),
- dbesc($darray['app_url']),
- dbesc($darray['app_photo']),
- dbesc($darray['app_version']),
- dbesc($darray['app_addr']),
- dbesc($darray['app_price']),
- dbesc($darray['app_page']),
- dbesc($darray['app_requires']),
- dbesc($edited),
- intval($darray['app_system']),
- intval($darray['app_deleted']),
- dbesc($darray['app_id']),
- intval($darray['app_channel'])
- );
- if($r) {
- $ret['success'] = true;
- $ret['app_id'] = $darray['app_id'];
- }
-
- $x = q("select id from app where app_id = '%s' and app_channel = %d limit 1",
- dbesc($darray['app_id']),
- intval($darray['app_channel'])
- );
- if($x) {
- q("delete from term where otype = %d and oid = %d",
- intval(TERM_OBJ_APP),
- intval($x[0]['id'])
- );
- if($arr['categories']) {
- $y = explode(',',$arr['categories']);
- if($y) {
- foreach($y as $t) {
- $t = trim($t);
- if($t) {
- store_item_tag($darray['app_channel'],$x[0]['id'],TERM_OBJ_APP,TERM_CATEGORY,escape_tags($t),escape_tags(z_root() . '/apps/?f=&cat=' . escape_tags($t)));
- }
- }
- }
- }
- }
-
- return $ret;
-
-}
-
-
-function app_encode($app,$embed = false) {
-
- $ret = array();
-
- $ret['type'] = 'personal';
-
- if($app['app_id'])
- $ret['guid'] = $app['app_id'];
-
- if($app['app_id'])
- $ret['guid'] = $app['app_id'];
-
- if($app['app_sig'])
- $ret['sig'] = $app['app_sig'];
-
- if($app['app_author'])
- $ret['author'] = $app['app_author'];
-
- if($app['app_name'])
- $ret['name'] = $app['app_name'];
-
- if($app['app_desc'])
- $ret['desc'] = $app['app_desc'];
-
- if($app['app_url'])
- $ret['url'] = $app['app_url'];
-
- if($app['app_photo'])
- $ret['photo'] = $app['app_photo'];
-
- if($app['app_version'])
- $ret['version'] = $app['app_version'];
-
- if($app['app_addr'])
- $ret['addr'] = $app['app_addr'];
-
- if($app['app_price'])
- $ret['price'] = $app['app_price'];
-
- if($app['app_page'])
- $ret['page'] = $app['app_page'];
-
- if($app['app_requires'])
- $ret['requires'] = $app['app_requires'];
-
- if($app['app_system'])
- $ret['system'] = $app['app_system'];
-
- if($app['app_deleted'])
- $ret['deleted'] = $app['app_deleted'];
-
- if($app['term']) {
- $s = '';
- foreach($app['term'] as $t) {
- if($s)
- $s .= ',';
- $s .= $t['term'];
- }
- $ret['categories'] = $s;
- }
-
-
- if(! $embed)
- return $ret;
-
- if(array_key_exists('categories',$ret))
- unset($ret['categories']);
-
- $j = json_encode($ret);
- return '[app]' . chunk_split(base64_encode($j),72,"\n") . '[/app]';
-
-}
-
-
-function papp_encode($papp) {
- return chunk_split(base64_encode(json_encode($papp)),72,"\n");
-
-}
-
-
diff --git a/include/attach.php b/include/attach.php
index ae4681994..78efde51f 100644
--- a/include/attach.php
+++ b/include/attach.php
@@ -720,7 +720,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
$edited = $created;
if($options === 'replace') {
- $r = q("update attach set filename = '%s', filetype = '%s', folder = '%s', filesize = %d, os_storage = %d, is_photo = %d, data = '%s', edited = '%s' where id = %d and uid = %d",
+ $r = q("update attach set filename = '%s', filetype = '%s', folder = '%s', filesize = %d, os_storage = %d, is_photo = %d, content = '%s', edited = '%s' where id = %d and uid = %d",
dbesc($filename),
dbesc($mimetype),
dbesc($folder_hash),
@@ -734,7 +734,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
);
}
elseif($options === 'revise') {
- $r = q("insert into attach ( aid, uid, hash, creator, filename, filetype, folder, filesize, revision, os_storage, is_photo, data, created, edited, allow_cid, allow_gid, deny_cid, deny_gid )
+ $r = q("insert into attach ( aid, uid, hash, creator, filename, filetype, folder, filesize, revision, os_storage, is_photo, content, created, edited, allow_cid, allow_gid, deny_cid, deny_gid )
VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ",
intval($x[0]['aid']),
intval($channel_id),
@@ -775,7 +775,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
}
else {
- $r = q("INSERT INTO attach ( aid, uid, hash, creator, filename, filetype, folder, filesize, revision, os_storage, is_photo, data, created, edited, allow_cid, allow_gid,deny_cid, deny_gid )
+ $r = q("INSERT INTO attach ( aid, uid, hash, creator, filename, filetype, folder, filesize, revision, os_storage, is_photo, content, created, edited, allow_cid, allow_gid,deny_cid, deny_gid )
VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ",
intval($channel['channel_account_id']),
intval($channel_id),
@@ -1032,7 +1032,7 @@ function attach_mkdir($channel, $observer_hash, $arr = null) {
$created = datetime_convert();
- $r = q("INSERT INTO attach ( aid, uid, hash, creator, filename, filetype, filesize, revision, folder, os_storage, is_dir, data, created, edited, allow_cid, allow_gid, deny_cid, deny_gid )
+ $r = q("INSERT INTO attach ( aid, uid, hash, creator, filename, filetype, filesize, revision, folder, os_storage, is_dir, content, created, edited, allow_cid, allow_gid, deny_cid, deny_gid )
VALUES ( %d, %d, '%s', '%s', '%s', '%s', %d, %d, '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ",
intval($channel['channel_account_id']),
intval($channel_id),
@@ -1275,16 +1275,16 @@ function attach_delete($channel_id, $resource, $is_photo = 0) {
// delete a file from filesystem
if(intval($r[0]['os_storage'])) {
- $y = q("SELECT data FROM attach WHERE hash = '%s' AND uid = %d LIMIT 1",
+ $y = q("SELECT content FROM attach WHERE hash = '%s' AND uid = %d LIMIT 1",
dbesc($resource),
intval($channel_id)
);
if($y) {
- if(strpos($y[0]['data'],'store') === false)
- $f = 'store/' . $channel_address . '/' . $y[0]['data'];
+ if(strpos($y[0]['content'],'store') === false)
+ $f = 'store/' . $channel_address . '/' . $y[0]['content'];
else
- $f = $y[0]['data'];
+ $f = $y[0]['content'];
if(is_dir($f))
@rmdir($f);
@@ -1585,13 +1585,13 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid,
$arr['deny_gid'] = perms2str($u_arr_deny_gid);
$arr['item_private'] = $private;
$arr['verb'] = ACTIVITY_UPDATE;
- $arr['object'] = $u_jsonobject;
+ $arr['obj'] = $u_jsonobject;
$arr['body'] = '';
$post = item_store($arr);
$item_id = $post['item_id'];
if($item_id) {
- proc_run('php',"include/notifier.php","activity",$item_id);
+ Zotlabs\Daemon\Master::Summon(array('Notifier','activity',$item_id));
}
call_hooks('post_local_end', $arr);
@@ -1620,14 +1620,14 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid,
$arr['deny_gid'] = perms2str($arr_deny_gid);
$arr['item_private'] = $private;
$arr['verb'] = (($update) ? ACTIVITY_UPDATE : ACTIVITY_POST);
- $arr['object'] = (($update) ? $u_jsonobject : $jsonobject);
+ $arr['obj'] = (($update) ? $u_jsonobject : $jsonobject);
$arr['body'] = '';
$post = item_store($arr);
$item_id = $post['item_id'];
if($item_id) {
- proc_run('php',"include/notifier.php","activity",$item_id);
+ Zotlabs\Daemon\Master::Summon(array('Notifier','activity',$item_id));
}
call_hooks('post_local_end', $arr);
@@ -1854,21 +1854,19 @@ function attach_export_data($channel, $resource_id, $deleted = false) {
} while($hash_ptr);
-
-
$paths = array_reverse($paths);
$ret['attach'] = $paths;
if($attach_ptr['is_photo']) {
- $r = q("select * from photo where resource_id = '%s' and uid = %d order by scale asc",
+ $r = q("select * from photo where resource_id = '%s' and uid = %d order by imgscale asc",
dbesc($resource_id),
intval($channel['channel_id'])
);
if($r) {
for($x = 0; $x < count($r); $x ++) {
- $r[$x]['data'] = base64_encode($r[$x]['data']);
+ $r[$x]['content'] = base64_encode($r[$x]['content']);
}
$ret['photo'] = $r;
}
diff --git a/include/auth.php b/include/auth.php
index 9643da8eb..01fcf0094 100644
--- a/include/auth.php
+++ b/include/auth.php
@@ -101,7 +101,7 @@ if((isset($_SESSION)) && (x($_SESSION, 'authenticated')) &&
// process logout request
$args = array('channel_id' => local_channel());
call_hooks('logging_out', $args);
- \Zotlabs\Web\Session::nuke();
+ App::$session->nuke();
info( t('Logged out.') . EOL);
goaway(z_root());
}
@@ -117,7 +117,7 @@ if((isset($_SESSION)) && (x($_SESSION, 'authenticated')) &&
intval(ACCOUNT_ROLE_ADMIN)
);
if($x) {
- \Zotlabs\Web\Session::new_cookie(60 * 60 * 24); // one day
+ App::$session->new_cookie(60 * 60 * 24); // one day
$_SESSION['last_login_date'] = datetime_convert();
unset($_SESSION['visitor_id']); // no longer a visitor
authenticate_success($x[0], true, true);
@@ -141,7 +141,7 @@ if((isset($_SESSION)) && (x($_SESSION, 'authenticated')) &&
if(x($_SESSION, 'uid') || x($_SESSION, 'account_id')) {
- Zotlabs\Web\Session::return_check();
+ App::$session->return_check();
$r = q("select * from account where account_id = %d limit 1",
intval($_SESSION['account_id'])
@@ -155,14 +155,14 @@ if((isset($_SESSION)) && (x($_SESSION, 'authenticated')) &&
}
if(strcmp(datetime_convert('UTC','UTC','now - 12 hours'), $_SESSION['last_login_date']) > 0 ) {
$_SESSION['last_login_date'] = datetime_convert();
- Zotlabs\Web\Session::extend_cookie();
+ App::$session->extend_cookie();
$login_refresh = true;
}
authenticate_success($r[0], false, false, false, $login_refresh);
}
else {
$_SESSION['account_id'] = 0;
- \Zotlabs\Web\Session::nuke();
+ App::$session->nuke();
goaway(z_root());
}
} // end logged in user returning
@@ -170,7 +170,7 @@ if((isset($_SESSION)) && (x($_SESSION, 'authenticated')) &&
else {
if(isset($_SESSION)) {
- \Zotlabs\Web\Session::nuke();
+ App::$session->nuke();
}
// handle a fresh login request
@@ -242,11 +242,11 @@ else {
if($_POST['remember_me']) {
$_SESSION['remember_me'] = 1;
- \Zotlabs\Web\Session::new_cookie(31449600); // one year
+ App::$session->new_cookie(31449600); // one year
}
else {
$_SESSION['remember_me'] = 0;
- \Zotlabs\Web\Session::new_cookie(0); // 0 means delete on browser exit
+ App::$session->new_cookie(0); // 0 means delete on browser exit
}
// if we haven't failed up this point, log them in.
diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php
index 9167cb5ad..c7d0e56b1 100644
--- a/include/bb2diaspora.php
+++ b/include/bb2diaspora.php
@@ -479,8 +479,6 @@ function unescape_underscores_in_links($m) {
function format_event_diaspora($ev) {
- $a = get_app();
-
if(! ((is_array($ev)) && count($ev)))
return '';
diff --git a/include/bbcode.php b/include/bbcode.php
index fd2d2f97a..42741b392 100644
--- a/include/bbcode.php
+++ b/include/bbcode.php
@@ -165,11 +165,10 @@ function bb_parse_crypt($match) {
}
function bb_parse_app($match) {
- require_once('include/apps.php');
- $app = app_decode($match[1]);
+ $app = Zotlabs\Lib\Apps::app_decode($match[1]);
if ($app)
- return app_render($app);
+ return Zotlabs\Lib\Apps::app_render($app);
}
function bb_parse_element($match) {
@@ -276,7 +275,6 @@ function bb_location($match) {
* @return string HTML iframe with content of $match[1]
*/
function bb_iframe($match) {
- $a = get_app();
$sandbox = ((strpos($match[1], App::get_hostname())) ? ' sandbox="allow-scripts" ' : '');
@@ -450,8 +448,6 @@ function bb_sanitize_style($input) {
function bb_observer($Text) {
- $a = get_app();
-
$observer = App::get_observer();
if ((strpos($Text,'[/observer]') !== false) || (strpos($Text,'[/rpost]') !== false)) {
@@ -481,9 +477,12 @@ function bb_observer($Text) {
return $Text;
}
-
-
-
+function bb_code($match) {
+ if(strpos($match[0], "<br />"))
+ return '<code>' . trim($match[1]) . '</code>';
+ else
+ return '<code class="inline-code">' . trim($match[1]) . '</code>';
+}
@@ -789,12 +788,9 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $cache = false)
$Text = preg_replace("/\[font=(.*?)\](.*?)\[\/font\]/sm", "<span style=\"font-family: $1;\">$2</span>", $Text);
}
- // Declare the format for [code] layout
- $CodeLayout = '<code>$1</code>';
-
// Check for [code] text
if (strpos($Text,'[code]') !== false) {
- $Text = preg_replace("/\[code\](.*?)\[\/code\]/ism", "$CodeLayout", $Text);
+ $Text = preg_replace_callback("/\[code\](.*?)\[\/code\]/ism", 'bb_code', $Text);
}
// Check for [spoiler] text
@@ -985,6 +981,7 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $cache = false)
$Text = preg_replace("/\[event\-summary\](.*?)\[\/event\-summary\]/ism",'',$Text);
$Text = preg_replace("/\[event\-description\](.*?)\[\/event\-description\]/ism",'',$Text);
$Text = preg_replace("/\[event\-finish\](.*?)\[\/event\-finish\]/ism",'',$Text);
+ $Text = preg_replace("/\[event\-id\](.*?)\[\/event\-id\]/ism",'',$Text);
$Text = preg_replace("/\[event\-location\](.*?)\[\/event\-location\]/ism",'',$Text);
$Text = preg_replace("/\[event\-adjust\](.*?)\[\/event\-adjust\]/ism",'',$Text);
diff --git a/include/channel.php b/include/channel.php
new file mode 100644
index 000000000..087bd4162
--- /dev/null
+++ b/include/channel.php
@@ -0,0 +1,1826 @@
+<?php
+/**
+ * @file include/channel.php
+ */
+
+require_once('include/zot.php');
+require_once('include/crypto.php');
+require_once('include/menu.php');
+
+/**
+ * @brief Called when creating a new channel.
+ *
+ * Checks the account's service class and number of current channels to determine
+ * whether creating a new channel is within the current service class constraints.
+ *
+ * @param int $account_id
+ * Account_id used for this request
+ *
+ * @returns assoziative array with:
+ * * \e boolean \b success boolean true if creating a new channel is allowed for this account
+ * * \e string \b message (optional) if success is false, optional error text
+ * * \e int \b total_identities
+ */
+function identity_check_service_class($account_id) {
+ $ret = array('success' => false, 'message' => '');
+
+ $r = q("select count(channel_id) as total from channel where channel_account_id = %d and channel_removed = 0 ",
+ intval($account_id)
+ );
+ if(! ($r && count($r))) {
+ $ret['total_identities'] = 0;
+ $ret['message'] = t('Unable to obtain identity information from database');
+ return $ret;
+ }
+
+ $ret['total_identities'] = intval($r[0]['total']);
+
+ if (! account_service_class_allows($account_id, 'total_identities', $r[0]['total'])) {
+ $ret['message'] .= upgrade_message();
+ return $ret;
+ }
+
+ $ret['success'] = true;
+
+ return $ret;
+}
+
+
+/**
+ * @brief Determine if the channel name is allowed when creating a new channel.
+ *
+ * This action is pluggable.
+ * We're currently only checking for an empty name or one that exceeds our
+ * storage limit (255 chars). 255 chars is probably going to create a mess on
+ * some pages.
+ * Plugins can set additional policies such as full name requirements, character
+ * sets, multi-byte length, etc.
+ *
+ * @param string $name
+ *
+ * @returns nil return if name is valid, or string describing the error state.
+ */
+function validate_channelname($name) {
+
+ if (! $name)
+ return t('Empty name');
+
+ if (strlen($name) > 255)
+ return t('Name too long');
+
+ $arr = array('name' => $name);
+ call_hooks('validate_channelname', $arr);
+
+ if (x($arr, 'message'))
+ return $arr['message'];
+}
+
+
+/**
+ * @brief Create a system channel - which has no account attached.
+ *
+ */
+function create_sys_channel() {
+ if (get_sys_channel())
+ return;
+
+ // Ensure that there is a host keypair.
+
+ if ((! get_config('system', 'pubkey')) && (! get_config('system', 'prvkey'))) {
+ require_once('include/crypto.php');
+ $hostkey = new_keypair(4096);
+ set_config('system', 'pubkey', $hostkey['pubkey']);
+ set_config('system', 'prvkey', $hostkey['prvkey']);
+ }
+
+ create_identity(array(
+ 'account_id' => 'xxx', // This will create an identity with an (integer) account_id of 0, but account_id is required
+ 'nickname' => 'sys',
+ 'name' => 'System',
+ 'pageflags' => 0,
+ 'publish' => 0,
+ 'system' => 1
+ ));
+}
+
+
+/**
+ * @brief Returns the sys channel.
+ *
+ * @return array|boolean
+ */
+function get_sys_channel() {
+ $r = q("select * from channel left join xchan on channel_hash = xchan_hash where channel_system = 1 limit 1");
+
+ if ($r)
+ return $r[0];
+
+ return false;
+}
+
+
+/**
+ * @brief Checks if $channel_id is sys channel.
+ *
+ * @param int $channel_id
+ * @return boolean
+ */
+function is_sys_channel($channel_id) {
+ $r = q("select channel_system from channel where channel_id = %d and channel_system = 1 limit 1",
+ intval($channel_id)
+ );
+
+ if($r)
+ return true;
+
+ return false;
+}
+
+
+/**
+ * @brief Return the total number of channels on this site.
+ *
+ * No filtering is performed except to check PAGE_REMOVED.
+ *
+ * @returns int|booleean
+ * on error returns boolean false
+ */
+function channel_total() {
+ $r = q("select channel_id from channel where channel_removed = 0");
+
+ if (is_array($r))
+ return count($r);
+
+ return false;
+}
+
+
+/**
+ * @brief Create a new channel.
+ *
+ * Also creates the related xchan, hubloc, profile, and "self" abook records,
+ * and an empty "Friends" group/collection for the new channel.
+ *
+ * @param array $arr assoziative array with:
+ * * \e string \b name full name of channel
+ * * \e string \b nickname "email/url-compliant" nickname
+ * * \e int \b account_id to attach with this channel
+ * * [other identity fields as desired]
+ *
+ * @returns array
+ * 'success' => boolean true or false
+ * 'message' => optional error text if success is false
+ * 'channel' => if successful the created channel array
+ */
+function create_identity($arr) {
+
+ $ret = array('success' => false);
+
+ if(! $arr['account_id']) {
+ $ret['message'] = t('No account identifier');
+ return $ret;
+ }
+ $ret = identity_check_service_class($arr['account_id']);
+ if (!$ret['success']) {
+ return $ret;
+ }
+ // save this for auto_friending
+ $total_identities = $ret['total_identities'];
+
+ $nick = mb_strtolower(trim($arr['nickname']));
+ if(! $nick) {
+ $ret['message'] = t('Nickname is required.');
+ return $ret;
+ }
+
+ $name = escape_tags($arr['name']);
+ $pageflags = ((x($arr,'pageflags')) ? intval($arr['pageflags']) : PAGE_NORMAL);
+ $system = ((x($arr,'system')) ? intval($arr['system']) : 0);
+ $name_error = validate_channelname($arr['name']);
+ if($name_error) {
+ $ret['message'] = $name_error;
+ return $ret;
+ }
+
+ if($nick === 'sys' && (! $system)) {
+ $ret['message'] = t('Reserved nickname. Please choose another.');
+ return $ret;
+ }
+
+ if(check_webbie(array($nick)) !== $nick) {
+ $ret['message'] = t('Nickname has unsupported characters or is already being used on this site.');
+ return $ret;
+ }
+
+ $guid = zot_new_uid($nick);
+ $key = new_keypair(4096);
+
+ $sig = base64url_encode(rsa_sign($guid,$key['prvkey']));
+ $hash = make_xchan_hash($guid,$sig);
+
+ // Force a few things on the short term until we can provide a theme or app with choice
+
+ $publish = 1;
+
+ if(array_key_exists('publish', $arr))
+ $publish = intval($arr['publish']);
+
+ $primary = true;
+
+ if(array_key_exists('primary', $arr))
+ $primary = intval($arr['primary']);
+
+ $role_permissions = null;
+ $global_perms = get_perms();
+
+ if(array_key_exists('permissions_role',$arr) && $arr['permissions_role']) {
+ $role_permissions = get_role_perms($arr['permissions_role']);
+
+ if($role_permissions) {
+ foreach($role_permissions as $p => $v) {
+ if(strpos($p,'channel_') !== false) {
+ $perms_keys .= ', ' . $p;
+ $perms_vals .= ', ' . intval($v);
+ }
+ if($p === 'directory_publish')
+ $publish = intval($v);
+ }
+ }
+ }
+ else {
+ $defperms = site_default_perms();
+ foreach($defperms as $p => $v) {
+ $perms_keys .= ', ' . $global_perms[$p][0];
+ $perms_vals .= ', ' . intval($v);
+ }
+ }
+
+ $expire = 0;
+
+ $r = q("insert into channel ( channel_account_id, channel_primary,
+ channel_name, channel_address, channel_guid, channel_guid_sig,
+ channel_hash, channel_prvkey, channel_pubkey, channel_pageflags, channel_system, channel_expire_days, channel_timezone $perms_keys )
+ values ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, '%s' $perms_vals ) ",
+
+ intval($arr['account_id']),
+ intval($primary),
+ dbesc($name),
+ dbesc($nick),
+ dbesc($guid),
+ dbesc($sig),
+ dbesc($hash),
+ dbesc($key['prvkey']),
+ dbesc($key['pubkey']),
+ intval($pageflags),
+ intval($system),
+ intval($expire),
+ dbesc(App::$timezone)
+ );
+
+ $r = q("select * from channel where channel_account_id = %d
+ and channel_guid = '%s' limit 1",
+ intval($arr['account_id']),
+ dbesc($guid)
+ );
+
+ if(! $r) {
+ $ret['message'] = t('Unable to retrieve created identity');
+ return $ret;
+ }
+
+ $ret['channel'] = $r[0];
+
+ if(intval($arr['account_id']))
+ set_default_login_identity($arr['account_id'],$ret['channel']['channel_id'],false);
+
+ // Create a verified hub location pointing to this site.
+
+ $r = q("insert into hubloc ( hubloc_guid, hubloc_guid_sig, hubloc_hash, hubloc_addr, hubloc_primary,
+ hubloc_url, hubloc_url_sig, hubloc_host, hubloc_callback, hubloc_sitekey, hubloc_network )
+ values ( '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s' )",
+ dbesc($guid),
+ dbesc($sig),
+ dbesc($hash),
+ dbesc($ret['channel']['channel_address'] . '@' . App::get_hostname()),
+ intval($primary),
+ dbesc(z_root()),
+ dbesc(base64url_encode(rsa_sign(z_root(),$ret['channel']['channel_prvkey']))),
+ dbesc(App::get_hostname()),
+ dbesc(z_root() . '/post'),
+ dbesc(get_config('system','pubkey')),
+ dbesc('zot')
+ );
+ if(! $r)
+ logger('create_identity: Unable to store hub location');
+
+ $newuid = $ret['channel']['channel_id'];
+
+ $r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_guid_sig, xchan_pubkey, xchan_photo_l, xchan_photo_m, xchan_photo_s, xchan_addr, xchan_url, xchan_follow, xchan_connurl, xchan_name, xchan_network, xchan_photo_date, xchan_name_date, xchan_system ) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d)",
+ dbesc($hash),
+ dbesc($guid),
+ dbesc($sig),
+ dbesc($key['pubkey']),
+ dbesc(z_root() . "/photo/profile/l/{$newuid}"),
+ dbesc(z_root() . "/photo/profile/m/{$newuid}"),
+ dbesc(z_root() . "/photo/profile/s/{$newuid}"),
+ dbesc($ret['channel']['channel_address'] . '@' . App::get_hostname()),
+ dbesc(z_root() . '/channel/' . $ret['channel']['channel_address']),
+ dbesc(z_root() . '/follow?f=&url=%s'),
+ dbesc(z_root() . '/poco/' . $ret['channel']['channel_address']),
+ dbesc($ret['channel']['channel_name']),
+ dbesc('zot'),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ intval($system)
+ );
+
+ // Not checking return value.
+ // It's ok for this to fail if it's an imported channel, and therefore the hash is a duplicate
+
+ $r = q("INSERT INTO profile ( aid, uid, profile_guid, profile_name, is_default, publish, fullname, photo, thumb)
+ VALUES ( %d, %d, '%s', '%s', %d, %d, '%s', '%s', '%s') ",
+ intval($ret['channel']['channel_account_id']),
+ intval($newuid),
+ dbesc(random_string()),
+ t('Default Profile'),
+ 1,
+ $publish,
+ dbesc($ret['channel']['channel_name']),
+ dbesc(z_root() . "/photo/profile/l/{$newuid}"),
+ dbesc(z_root() . "/photo/profile/m/{$newuid}")
+ );
+
+ if($role_permissions) {
+ $myperms = ((array_key_exists('perms_accept',$role_permissions)) ? intval($role_permissions['perms_accept']) : 0);
+ }
+ else
+ $myperms = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE;
+
+ $r = q("insert into abook ( abook_account, abook_channel, abook_xchan, abook_closeness, abook_created, abook_updated, abook_self, abook_my_perms )
+ values ( %d, %d, '%s', %d, '%s', '%s', %d, %d ) ",
+ intval($ret['channel']['channel_account_id']),
+ intval($newuid),
+ dbesc($hash),
+ intval(0),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ intval(1),
+ intval($myperms)
+ );
+
+ if(intval($ret['channel']['channel_account_id'])) {
+
+ // Save our permissions role so we can perhaps call it up and modify it later.
+
+ if($role_permissions) {
+ set_pconfig($newuid,'system','permissions_role',$arr['permissions_role']);
+ if(array_key_exists('online',$role_permissions))
+ set_pconfig($newuid,'system','hide_presence',1-intval($role_permissions['online']));
+ if(array_key_exists('perms_auto',$role_permissions))
+ set_pconfig($newuid,'system','autoperms',(($role_permissions['perms_auto']) ? $role_permissions['perms_accept'] : 0));
+ }
+
+ // Create a group with yourself as a member. This allows somebody to use it
+ // right away as a default group for new contacts.
+
+ require_once('include/group.php');
+ group_add($newuid, t('Friends'));
+ group_add_member($newuid,t('Friends'),$ret['channel']['channel_hash']);
+
+ // if our role_permissions indicate that we're using a default collection ACL, add it.
+
+ if(is_array($role_permissions) && $role_permissions['default_collection']) {
+ $r = q("select hash from groups where uid = %d and gname = '%s' limit 1",
+ intval($newuid),
+ dbesc( t('Friends') )
+ );
+ if($r) {
+ q("update channel set channel_default_group = '%s', channel_allow_gid = '%s' where channel_id = %d",
+ dbesc($r[0]['hash']),
+ dbesc('<' . $r[0]['hash'] . '>'),
+ intval($newuid)
+ );
+ }
+ }
+
+ if(! $system) {
+ set_pconfig($ret['channel']['channel_id'],'system','photo_path', '%Y-%m');
+ set_pconfig($ret['channel']['channel_id'],'system','attach_path','%Y-%m');
+ }
+
+ // UNO: channel defaults, incl addons (addons specific pconfig will only work after the relevant addon is enabled by the admin). It's located here, so members can modify these defaults after the channel is created.
+ if(UNO) {
+ //diaspora protocol addon
+ set_pconfig($ret['channel']['channel_id'],'system','diaspora_allowed', '1');
+ set_pconfig($ret['channel']['channel_id'],'system','diaspora_public_comments', '1');
+ set_pconfig($ret['channel']['channel_id'],'system','prevent_tag_hijacking', '0');
+ }
+
+ // auto-follow any of the hub's pre-configured channel choices.
+ // Only do this if it's the first channel for this account;
+ // otherwise it could get annoying. Don't make this list too big
+ // or it will impact registration time.
+
+ $accts = get_config('system','auto_follow');
+ if(($accts) && (! $total_identities)) {
+ require_once('include/follow.php');
+ if(! is_array($accts))
+ $accts = array($accts);
+ foreach($accts as $acct) {
+ if(trim($acct))
+ new_contact($newuid,trim($acct),$ret['channel'],false);
+ }
+ }
+
+ call_hooks('create_identity', $newuid);
+
+ Zotlabs\Daemon\Master::Summon(array('Directory', $ret['channel']['channel_id']));
+ }
+
+ $ret['success'] = true;
+ return $ret;
+}
+
+/**
+ * @brief Set default channel to be used on login.
+ *
+ * @param int $account_id
+ * login account
+ * @param int $channel_id
+ * channel id to set as default for this account
+ * @param boolean $force
+ * if true, set this default unconditionally
+ * if $force is false only do this if there is no existing default
+ */
+function set_default_login_identity($account_id, $channel_id, $force = true) {
+ $r = q("select account_default_channel from account where account_id = %d limit 1",
+ intval($account_id)
+ );
+ if ($r) {
+ if ((intval($r[0]['account_default_channel']) == 0) || ($force)) {
+ $r = q("update account set account_default_channel = %d where account_id = %d",
+ intval($channel_id),
+ intval($account_id)
+ );
+ }
+ }
+}
+
+/**
+ * @brief Create an array representing the important channel information
+ * which would be necessary to create a nomadic identity clone. This includes
+ * most channel resources and connection information with the exception of content.
+ *
+ * @param int $channel_id
+ * Channel_id to export
+ * @param boolean $items
+ * Include channel posts (wall items), default false
+ *
+ * @returns array
+ * See function for details
+ */
+function identity_basic_export($channel_id, $items = false) {
+
+ /*
+ * Red basic channel export
+ */
+
+ $ret = array();
+
+ // use constants here as otherwise we will have no idea if we can import from a site
+ // with a non-standard platform and version.
+ $ret['compatibility'] = array('project' => PLATFORM_NAME, 'version' => STD_VERSION, 'database' => DB_UPDATE_VERSION, 'server_role' => Zotlabs\Lib\System::get_server_role());
+
+ $r = q("select * from channel where channel_id = %d limit 1",
+ intval($channel_id)
+ );
+ if($r)
+ $ret['channel'] = $r[0];
+
+ $r = q("select * from profile where uid = %d",
+ intval($channel_id)
+ );
+ if($r)
+ $ret['profile'] = $r;
+
+ $xchans = array();
+ $r = q("select * from abook where abook_channel = %d ",
+ intval($channel_id)
+ );
+ if($r) {
+ $ret['abook'] = $r;
+
+ for($x = 0; $x < count($ret['abook']); $x ++) {
+ $xchans[] = $ret['abook'][$x]['abook_chan'];
+ $abconfig = load_abconfig($ret['channel']['channel_hash'],$ret['abook'][$x]['abook_xchan']);
+ if($abconfig)
+ $ret['abook'][$x]['abconfig'] = $abconfig;
+ }
+ stringify_array_elms($xchans);
+ }
+
+ if($xchans) {
+ $r = q("select * from xchan where xchan_hash in ( " . implode(',',$xchans) . " ) ");
+ if($r)
+ $ret['xchan'] = $r;
+
+ $r = q("select * from hubloc where hubloc_hash in ( " . implode(',',$xchans) . " ) ");
+ if($r)
+ $ret['hubloc'] = $r;
+ }
+
+ $r = q("select * from `groups` where uid = %d ",
+ intval($channel_id)
+ );
+
+ if($r)
+ $ret['group'] = $r;
+
+ $r = q("select * from group_member where uid = %d ",
+ intval($channel_id)
+ );
+ if($r)
+ $ret['group_member'] = $r;
+
+ $r = q("select * from pconfig where uid = %d",
+ intval($channel_id)
+ );
+ if($r)
+ $ret['config'] = $r;
+
+ $r = q("select mimetype, content, os_storage from photo where imgscale = 4 and photo_usage = %d and uid = %d limit 1",
+ intval(PHOTO_PROFILE),
+ intval($channel_id)
+ );
+
+ if($r) {
+ $ret['photo'] = array('type' => $r[0]['mimetype'], 'data' => (($r[0]['os_storage']) ? base64url_encode(file_get_contents($r[0]['content'])) : base64url_encode($r[0]['content'])));
+ }
+
+ // All other term types will be included in items, if requested.
+
+ $r = q("select * from term where ttype in (%d,%d) and uid = %d",
+ intval(TERM_SAVEDSEARCH),
+ intval(TERM_THING),
+ intval($channel_id)
+ );
+ if($r)
+ $ret['term'] = $r;
+
+
+ // add psuedo-column obj_baseurl to aid in relocations
+
+ $r = q("select obj.*, '%s' as obj_baseurl from obj where obj_channel = %d",
+ dbesc(z_root()),
+ intval($channel_id)
+ );
+
+ if($r)
+ $ret['obj'] = $r;
+
+ $r = q("select * from app where app_channel = %d and app_system = 0",
+ intval($channel_id)
+ );
+ if($r) {
+ for($x = 0; $x < count($r); $x ++) {
+ $r[$x]['term'] = q("select * from term where otype = %d and oid = %d",
+ intval(TERM_OBJ_APP),
+ intval($r[$x]['id'])
+ );
+ }
+ $ret['app'] = $r;
+ }
+
+ $r = q("select * from chatroom where cr_uid = %d",
+ intval($channel_id)
+ );
+ if($r)
+ $ret['chatroom'] = $r;
+
+
+ $r = q("select * from event where uid = %d",
+ intval($channel_id)
+ );
+ if($r)
+ $ret['event'] = $r;
+
+ $r = q("select * from item where resource_type = 'event' and uid = %d",
+ intval($channel_id)
+ );
+ if($r) {
+ $ret['event_item'] = array();
+ xchan_query($r);
+ $r = fetch_post_tags($r,true);
+ foreach($r as $rr)
+ $ret['event_item'][] = encode_item($rr,true);
+ }
+
+ $x = menu_list($channel_id);
+ if($x) {
+ $ret['menu'] = array();
+ for($y = 0; $y < count($x); $y ++) {
+ $m = menu_fetch($x[$y]['menu_name'],$channel_id,$ret['channel']['channel_hash']);
+ if($m)
+ $ret['menu'][] = menu_element($m);
+ }
+ }
+
+ $x = menu_list($channel_id);
+ if($x) {
+ $ret['menu'] = array();
+ for($y = 0; $y < count($x); $y ++) {
+ $m = menu_fetch($x[$y]['menu_name'],$channel_id,$ret['channel']['channel_hash']);
+ if($m)
+ $ret['menu'][] = menu_element($m);
+ }
+ }
+
+ $addon = array('channel_id' => $channel_id,'data' => $ret);
+ call_hooks('identity_basic_export',$addon);
+ $ret = $addon['data'];
+
+
+ if(! $items)
+ return $ret;
+
+ $r = q("select * from likes where channel_id = %d",
+ intval($channel_id)
+ );
+
+ if($r)
+ $ret['likes'] = $r;
+
+
+ $r = q("select * from conv where uid = %d",
+ intval($channel_id)
+ );
+ if($r) {
+ for($x = 0; $x < count($r); $x ++) {
+ $r[$x]['subject'] = base64url_decode(str_rot47($r[$x]['subject']));
+ }
+ $ret['conv'] = $r;
+ }
+
+
+ $r = q("select * from mail where mail.uid = %d",
+ intval($channel_id)
+ );
+ if($r) {
+ $m = array();
+ foreach($r as $rr) {
+ xchan_mail_query($rr);
+ $m[] = mail_encode($rr,true);
+ }
+ $ret['mail'] = $m;
+ }
+
+ $r = q("select item_id.*, item.mid from item_id left join item on item_id.iid = item.id where item_id.uid = %d",
+ intval($channel_id)
+ );
+
+ if($r)
+ $ret['item_id'] = $r;
+
+ //$key = get_config('system','prvkey');
+
+ /** @warning this may run into memory limits on smaller systems */
+
+
+ /** export three months of posts. If you want to export and import all posts you have to start with
+ * the first year and export/import them in ascending order.
+ *
+ * Don't export linked resource items. we'll have to pull those out separately.
+ */
+
+ $r = q("select * from item where item_wall = 1 and item_deleted = 0 and uid = %d and created > %s - INTERVAL %s and resource_type = '' order by created",
+ intval($channel_id),
+ db_utcnow(),
+ db_quoteinterval('3 MONTH')
+ );
+ if($r) {
+ $ret['item'] = array();
+ xchan_query($r);
+ $r = fetch_post_tags($r,true);
+ foreach($r as $rr)
+ $ret['item'][] = encode_item($rr,true);
+ }
+
+ return $ret;
+}
+
+
+function identity_export_year($channel_id,$year,$month = 0) {
+
+ if(! $year)
+ return array();
+
+ if($month && $month <= 12) {
+ $target_month = sprintf('%02d',$month);
+ $target_month_plus = sprintf('%02d',$month+1);
+ }
+ else
+ $target_month = '01';
+
+ $ret = array();
+
+ $mindate = datetime_convert('UTC','UTC',$year . '-' . $target_month . '-01 00:00:00');
+ if($month && $month < 12)
+ $maxdate = datetime_convert('UTC','UTC',$year . '-' . $target_month_plus . '-01 00:00:00');
+ else
+ $maxdate = datetime_convert('UTC','UTC',$year+1 . '-01-01 00:00:00');
+
+ $r = q("select * from item where ( item_wall = 1 or item_type != %d ) and item_deleted = 0 and uid = %d and created >= '%s' and created < '%s' and resource_type = '' order by created",
+ intval(ITEM_TYPE_POST),
+ intval($channel_id),
+ dbesc($mindate),
+ dbesc($maxdate)
+ );
+
+ if($r) {
+ $ret['item'] = array();
+ xchan_query($r);
+ $r = fetch_post_tags($r,true);
+ foreach($r as $rr)
+ $ret['item'][] = encode_item($rr,true);
+ }
+
+ $r = q("select item_id.*, item.mid from item_id left join item on item_id.iid = item.id where item_id.uid = %d
+ and item.created >= '%s' and item.created < '%s' order by created ",
+ intval($channel_id),
+ dbesc($mindate),
+ dbesc($maxdate)
+ );
+
+ if($r)
+ $ret['item_id'] = $r;
+
+
+ return $ret;
+}
+
+
+/**
+ * @brief Loads a profile into the App structure.
+ *
+ * The function requires a writeable copy of the main App structure, and the
+ * nickname of a valid channel.
+ *
+ * Permissions of the current observer are checked. If a restricted profile is available
+ * to the current observer, that will be loaded instead of the channel default profile.
+ *
+ * The channel owner can set $profile to a valid profile_guid to preview that profile.
+ *
+ * The channel default theme is also selected for use, unless over-riden elsewhere.
+ *
+ * @param[in,out] App &$a
+ * @param string $nickname
+ * @param string $profile
+ */
+function profile_load(&$a, $nickname, $profile = '') {
+
+// logger('profile_load: ' . $nickname . (($profile) ? ' profile: ' . $profile : ''));
+
+ $user = q("select channel_id from channel where channel_address = '%s' and channel_removed = 0 limit 1",
+ dbesc($nickname)
+ );
+
+ if(! $user) {
+ logger('profile error: ' . App::$query_string, LOGGER_DEBUG);
+ notice( t('Requested channel is not available.') . EOL );
+ App::$error = 404;
+ return;
+ }
+
+ // get the current observer
+ $observer = App::get_observer();
+
+ $can_view_profile = true;
+
+ // Can the observer see our profile?
+ require_once('include/permissions.php');
+ if(! perm_is_allowed($user[0]['channel_id'],$observer['xchan_hash'],'view_profile')) {
+ $can_view_profile = false;
+ }
+
+ if(! $profile) {
+ $r = q("SELECT abook_profile FROM abook WHERE abook_xchan = '%s' and abook_channel = '%d' limit 1",
+ dbesc($observer['xchan_hash']),
+ intval($user[0]['channel_id'])
+ );
+ if($r)
+ $profile = $r[0]['abook_profile'];
+ }
+ $p = null;
+
+ if($profile) {
+ $p = q("SELECT profile.uid AS profile_uid, profile.*, channel.* FROM profile
+ LEFT JOIN channel ON profile.uid = channel.channel_id
+ WHERE channel.channel_address = '%s' AND profile.profile_guid = '%s' LIMIT 1",
+ dbesc($nickname),
+ dbesc($profile)
+ );
+ }
+
+ if(! $p) {
+ $p = q("SELECT profile.uid AS profile_uid, profile.*, channel.* FROM profile
+ LEFT JOIN channel ON profile.uid = channel.channel_id
+ WHERE channel.channel_address = '%s' and channel_removed = 0
+ AND profile.is_default = 1 LIMIT 1",
+ dbesc($nickname)
+ );
+ }
+
+ if(! $p) {
+ logger('profile error: ' . App::$query_string, LOGGER_DEBUG);
+ notice( t('Requested profile is not available.') . EOL );
+ App::$error = 404;
+ return;
+ }
+
+ $q = q("select * from profext where hash = '%s' and channel_id = %d",
+ dbesc($p[0]['profile_guid']),
+ intval($p[0]['profile_uid'])
+ );
+ if($q) {
+
+ $extra_fields = array();
+
+ require_once('include/channel.php');
+ $profile_fields_basic = get_profile_fields_basic();
+ $profile_fields_advanced = get_profile_fields_advanced();
+
+ $advanced = ((feature_enabled(local_channel(),'advanced_profiles')) ? true : false);
+ if($advanced)
+ $fields = $profile_fields_advanced;
+ else
+ $fields = $profile_fields_basic;
+
+ foreach($q as $qq) {
+ foreach($fields as $k => $f) {
+ if($k == $qq['k']) {
+ $p[0][$k] = $qq['v'];
+ $extra_fields[] = $k;
+ break;
+ }
+ }
+ }
+ }
+
+ $p[0]['extra_fields'] = $extra_fields;
+
+ $z = q("select xchan_photo_date, xchan_addr from xchan where xchan_hash = '%s' limit 1",
+ dbesc($p[0]['channel_hash'])
+ );
+ if($z) {
+ $p[0]['picdate'] = $z[0]['xchan_photo_date'];
+ $p[0]['reddress'] = str_replace('@','&#xff20;',$z[0]['xchan_addr']);
+ }
+
+ // fetch user tags if this isn't the default profile
+
+ if(! $p[0]['is_default']) {
+ $x = q("select `keywords` from `profile` where uid = %d and `is_default` = 1 limit 1",
+ intval($p[0]['profile_uid'])
+ );
+ if($x && $can_view_profile)
+ $p[0]['keywords'] = $x[0]['keywords'];
+ }
+
+ if($p[0]['keywords']) {
+ $keywords = str_replace(array('#',',',' ',',,'),array('',' ',',',','),$p[0]['keywords']);
+ if(strlen($keywords) && $can_view_profile)
+ App::$page['htmlhead'] .= '<meta name="keywords" content="' . htmlentities($keywords,ENT_COMPAT,'UTF-8') . '" />' . "\r\n" ;
+ }
+
+ App::$profile = $p[0];
+ App::$profile_uid = $p[0]['profile_uid'];
+ App::$page['title'] = App::$profile['channel_name'] . " - " . App::$profile['channel_address'] . "@" . App::get_hostname();
+
+ App::$profile['permission_to_view'] = $can_view_profile;
+
+ if($can_view_profile) {
+ $online = get_online_status($nickname);
+ App::$profile['online_status'] = $online['result'];
+ }
+
+ if(local_channel()) {
+ App::$profile['channel_mobile_theme'] = get_pconfig(local_channel(),'system', 'mobile_theme');
+ $_SESSION['mobile_theme'] = App::$profile['channel_mobile_theme'];
+ }
+
+ /*
+ * load/reload current theme info
+ */
+
+ $_SESSION['theme'] = $p[0]['channel_theme'];
+
+}
+
+function profile_edit_menu($uid) {
+
+ $ret = array();
+
+ $is_owner = (($uid == local_channel()) ? true : false);
+
+ // show edit profile to profile owner
+ if($is_owner) {
+ $ret['menu'] = array(
+ 'chg_photo' => t('Change profile photo'),
+ 'entries' => array(),
+ );
+
+ $multi_profiles = feature_enabled(local_channel(), 'multi_profiles');
+ if($multi_profiles) {
+ $ret['multi'] = 1;
+ $ret['edit'] = array(z_root(). '/profiles', t('Edit Profiles'), '', t('Edit'));
+ $ret['menu']['cr_new'] = t('Create New Profile');
+ }
+ else {
+ $ret['edit'] = array(z_root() . '/profiles/' . $uid, t('Edit Profile'), '', t('Edit'));
+ }
+
+ $r = q("SELECT * FROM profile WHERE uid = %d",
+ local_channel()
+ );
+
+ if($r) {
+ foreach($r as $rr) {
+ if(!($multi_profiles || $rr['is_default']))
+ continue;
+ $ret['menu']['entries'][] = array(
+ 'photo' => $rr['thumb'],
+ 'id' => $rr['id'],
+ 'alt' => t('Profile Image'),
+ 'profile_name' => $rr['profile_name'],
+ 'isdefault' => $rr['is_default'],
+ 'visible_to_everybody' => t('Visible to everybody'),
+ 'edit_visibility' => t('Edit visibility'),
+ );
+ }
+ }
+ }
+
+ return $ret;
+
+}
+
+/**
+ * @brief Formats a profile for display in the sidebar.
+ *
+ * It is very difficult to templatise the HTML completely
+ * because of all the conditional logic.
+ *
+ * @param array $profile
+ * @param int $block
+ * @param boolean $show_connect
+ *
+ * @return HTML string suitable for sidebar inclusion
+ * Exceptions: Returns empty string if passed $profile is wrong type or not populated
+ */
+function profile_sidebar($profile, $block = 0, $show_connect = true, $zcard = false) {
+
+ $observer = App::get_observer();
+
+ $o = '';
+ $location = false;
+ $pdesc = true;
+ $reddress = true;
+
+ if(! perm_is_allowed($profile['uid'],((is_array($observer)) ? $observer['xchan_hash'] : ''),'view_profile')) {
+ $block = true;
+ }
+
+ if((! is_array($profile)) && (! count($profile)))
+ return $o;
+
+ head_set_icon($profile['thumb']);
+
+ if(is_sys_channel($profile['uid']))
+ $show_connect = false;
+
+ $profile['picdate'] = urlencode($profile['picdate']);
+
+ call_hooks('profile_sidebar_enter', $profile);
+
+ if($show_connect) {
+
+ // This will return an empty string if we're already connected.
+
+ $connect_url = rconnect_url($profile['uid'],get_observer_hash());
+ $connect = (($connect_url) ? t('Connect') : '');
+ if($connect_url)
+ $connect_url = sprintf($connect_url,urlencode($profile['channel_address'] . '@' . App::get_hostname()));
+
+ // premium channel - over-ride
+
+ if($profile['channel_pageflags'] & PAGE_PREMIUM)
+ $connect_url = z_root() . '/connect/' . $profile['channel_address'];
+ }
+
+ if((x($profile,'address') == 1)
+ || (x($profile,'locality') == 1)
+ || (x($profile,'region') == 1)
+ || (x($profile,'postal_code') == 1)
+ || (x($profile,'country_name') == 1))
+ $location = t('Location:');
+
+ $profile['homepage'] = linkify($profile['homepage'],true);
+
+ $gender = ((x($profile,'gender') == 1) ? t('Gender:') : False);
+ $marital = ((x($profile,'marital') == 1) ? t('Status:') : False);
+ $homepage = ((x($profile,'homepage') == 1) ? t('Homepage:') : False);
+ $profile['online'] = (($profile['online_status'] === 'online') ? t('Online Now') : False);
+
+// logger('online: ' . $profile['online']);
+
+
+ if(($profile['hidewall'] && (! local_channel()) && (! remote_channel())) || $block ) {
+ $location = $reddress = $pdesc = $gender = $marital = $homepage = False;
+ }
+
+ $firstname = ((strpos($profile['channel_name'],' '))
+ ? trim(substr($profile['channel_name'],0,strpos($profile['channel_name'],' '))) : $profile['channel_name']);
+ $lastname = (($firstname === $profile['channel_name']) ? '' : trim(substr($profile['channel_name'],strlen($firstname))));
+
+ $diaspora = array(
+ 'podloc' => z_root(),
+ 'searchable' => (($block) ? 'false' : 'true'),
+ 'nickname' => $profile['channel_address'],
+ 'fullname' => $profile['channel_name'],
+ 'firstname' => $firstname,
+ 'lastname' => $lastname,
+ 'photo300' => z_root() . '/photo/profile/300/' . $profile['uid'] . '.jpg',
+ 'photo100' => z_root() . '/photo/profile/100/' . $profile['uid'] . '.jpg',
+ 'photo50' => z_root() . '/photo/profile/50/' . $profile['uid'] . '.jpg',
+ );
+
+ $contact_block = contact_block();
+
+ $channel_menu = false;
+ $menu = get_pconfig($profile['uid'],'system','channel_menu');
+ if($menu && ! $block) {
+ require_once('include/menu.php');
+ $m = menu_fetch($menu,$profile['uid'],$observer['xchan_hash']);
+ if($m)
+ $channel_menu = menu_render($m);
+ }
+ $menublock = get_pconfig($profile['uid'],'system','channel_menublock');
+ if ($menublock && (! $block)) {
+ $comanche = new Zotlabs\Render\Comanche();
+ $channel_menu .= $comanche->block($menublock);
+ }
+
+ if($zcard)
+ $tpl = get_markup_template('profile_vcard_short.tpl');
+ else
+ $tpl = get_markup_template('profile_vcard.tpl');
+
+ require_once('include/widgets.php');
+
+ if(! feature_enabled($profile['uid'],'hide_rating'))
+ $z = widget_rating(array('target' => $profile['channel_hash']));
+
+ $o .= replace_macros($tpl, array(
+ '$zcard' => $zcard,
+ '$profile' => $profile,
+ '$connect' => $connect,
+ '$connect_url' => $connect_url,
+ '$location' => $location,
+ '$gender' => $gender,
+ '$pdesc' => $pdesc,
+ '$marital' => $marital,
+ '$homepage' => $homepage,
+ '$chanmenu' => $channel_menu,
+ '$diaspora' => $diaspora,
+ '$reddress' => $reddress,
+ '$rating' => $z,
+ '$contact_block' => $contact_block,
+ '$editmenu' => profile_edit_menu($profile['uid'])
+ ));
+
+ $arr = array('profile' => &$profile, 'entry' => &$o);
+
+ call_hooks('profile_sidebar', $arr);
+
+ return $o;
+}
+
+
+function advanced_profile(&$a) {
+ require_once('include/text.php');
+ if(! perm_is_allowed(App::$profile['profile_uid'],get_observer_hash(),'view_profile'))
+ return '';
+
+ if(App::$profile['fullname']) {
+
+ $profile_fields_basic = get_profile_fields_basic();
+ $profile_fields_advanced = get_profile_fields_advanced();
+
+ $advanced = ((feature_enabled(App::$profile['profile_uid'],'advanced_profiles')) ? true : false);
+ if($advanced)
+ $fields = $profile_fields_advanced;
+ else
+ $fields = $profile_fields_basic;
+
+ $clean_fields = array();
+ if($fields) {
+ foreach($fields as $k => $v) {
+ $clean_fields[] = trim($k);
+ }
+ }
+
+
+
+ $tpl = get_markup_template('profile_advanced.tpl');
+
+ $profile = array();
+
+ $profile['fullname'] = array( t('Full Name:'), App::$profile['fullname'] ) ;
+
+ if(App::$profile['gender']) $profile['gender'] = array( t('Gender:'), App::$profile['gender'] );
+
+ $ob_hash = get_observer_hash();
+ if($ob_hash && perm_is_allowed(App::$profile['profile_uid'],$ob_hash,'post_like')) {
+ $profile['canlike'] = true;
+ $profile['likethis'] = t('Like this channel');
+ $profile['profile_guid'] = App::$profile['profile_guid'];
+ }
+
+ $likers = q("select liker, xchan.* from likes left join xchan on liker = xchan_hash where channel_id = %d and target_type = '%s' and verb = '%s'",
+ intval(App::$profile['profile_uid']),
+ dbesc(ACTIVITY_OBJ_PROFILE),
+ dbesc(ACTIVITY_LIKE)
+ );
+ $profile['likers'] = array();
+ $profile['like_count'] = count($likers);
+ $profile['like_button_label'] = tt('Like','Likes',$profile['like_count'],'noun');
+ if($likers) {
+ foreach($likers as $l)
+ $profile['likers'][] = array('name' => $l['xchan_name'],'photo' => zid($l['xchan_photo_s']), 'url' => zid($l['xchan_url']));
+ }
+
+ if((App::$profile['dob']) && (App::$profile['dob'] != '0000-00-00')) {
+
+ $val = '';
+
+ if((substr(App::$profile['dob'],5,2) === '00') || (substr(App::$profile['dob'],8,2) === '00'))
+ $val = substr(App::$profile['dob'],0,4);
+
+ $year_bd_format = t('j F, Y');
+ $short_bd_format = t('j F');
+
+ if(! $val) {
+ $val = ((intval(App::$profile['dob']))
+ ? day_translate(datetime_convert('UTC','UTC',App::$profile['dob'] . ' 00:00 +00:00',$year_bd_format))
+ : day_translate(datetime_convert('UTC','UTC','2001-' . substr(App::$profile['dob'],5) . ' 00:00 +00:00',$short_bd_format)));
+ }
+ $profile['birthday'] = array( t('Birthday:'), $val);
+ }
+
+ if($age = age(App::$profile['dob'],App::$profile['timezone'],''))
+ $profile['age'] = array( t('Age:'), $age );
+
+ if(App::$profile['marital'])
+ $profile['marital'] = array( t('Status:'), App::$profile['marital']);
+
+ if(App::$profile['partner'])
+ $profile['marital']['partner'] = bbcode(App::$profile['partner']);
+
+ if(strlen(App::$profile['howlong']) && App::$profile['howlong'] !== NULL_DATE) {
+ $profile['howlong'] = relative_date(App::$profile['howlong'], t('for %1$d %2$s'));
+ }
+
+ if(App::$profile['sexual']) $profile['sexual'] = array( t('Sexual Preference:'), App::$profile['sexual'] );
+
+ if(App::$profile['homepage']) $profile['homepage'] = array( t('Homepage:'), linkify(App::$profile['homepage']) );
+
+ if(App::$profile['hometown']) $profile['hometown'] = array( t('Hometown:'), linkify(App::$profile['hometown']) );
+
+ if(App::$profile['keywords']) $profile['keywords'] = array( t('Tags:'), App::$profile['keywords']);
+
+ if(App::$profile['politic']) $profile['politic'] = array( t('Political Views:'), App::$profile['politic']);
+
+ if(App::$profile['religion']) $profile['religion'] = array( t('Religion:'), App::$profile['religion']);
+
+ if($txt = prepare_text(App::$profile['about'])) $profile['about'] = array( t('About:'), $txt );
+
+ if($txt = prepare_text(App::$profile['interest'])) $profile['interest'] = array( t('Hobbies/Interests:'), $txt);
+
+ if($txt = prepare_text(App::$profile['likes'])) $profile['likes'] = array( t('Likes:'), $txt);
+
+ if($txt = prepare_text(App::$profile['dislikes'])) $profile['dislikes'] = array( t('Dislikes:'), $txt);
+
+ if($txt = prepare_text(App::$profile['contact'])) $profile['contact'] = array( t('Contact information and Social Networks:'), $txt);
+
+ if($txt = prepare_text(App::$profile['channels'])) $profile['channels'] = array( t('My other channels:'), $txt);
+
+ if($txt = prepare_text(App::$profile['music'])) $profile['music'] = array( t('Musical interests:'), $txt);
+
+ if($txt = prepare_text(App::$profile['book'])) $profile['book'] = array( t('Books, literature:'), $txt);
+
+ if($txt = prepare_text(App::$profile['tv'])) $profile['tv'] = array( t('Television:'), $txt);
+
+ if($txt = prepare_text(App::$profile['film'])) $profile['film'] = array( t('Film/dance/culture/entertainment:'), $txt);
+
+ if($txt = prepare_text(App::$profile['romance'])) $profile['romance'] = array( t('Love/Romance:'), $txt);
+
+ if($txt = prepare_text(App::$profile['employment'])) $profile['employment'] = array( t('Work/employment:'), $txt);
+
+ if($txt = prepare_text(App::$profile['education'])) $profile['education'] = array( t('School/education:'), $txt );
+
+ if(App::$profile['extra_fields']) {
+ foreach(App::$profile['extra_fields'] as $f) {
+ $x = q("select * from profdef where field_name = '%s' limit 1",
+ dbesc($f)
+ );
+ if($x && $txt = prepare_text(App::$profile[$f]))
+ $profile[$f] = array( $x[0]['field_desc'] . ':',$txt);
+ }
+ $profile['extra_fields'] = App::$profile['extra_fields'];
+ }
+
+ $things = get_things(App::$profile['profile_guid'],App::$profile['profile_uid']);
+
+// logger('mod_profile: things: ' . print_r($things,true), LOGGER_DATA);
+
+ return replace_macros($tpl, array(
+ '$title' => t('Profile'),
+ '$canlike' => (($profile['canlike'])? true : false),
+ '$likethis' => t('Like this thing'),
+ '$profile' => $profile,
+ '$fields' => $clean_fields,
+ '$editmenu' => profile_edit_menu(App::$profile['profile_uid']),
+ '$things' => $things
+ ));
+ }
+
+ return '';
+}
+
+
+function get_my_url() {
+ if(x($_SESSION, 'zrl_override'))
+ return $_SESSION['zrl_override'];
+ if(x($_SESSION, 'my_url'))
+ return $_SESSION['my_url'];
+
+ return false;
+}
+
+function get_my_address() {
+ if(x($_SESSION, 'zid_override'))
+ return $_SESSION['zid_override'];
+ if(x($_SESSION, 'my_address'))
+ return $_SESSION['my_address'];
+
+ return false;
+}
+
+/**
+ * @brief
+ *
+ * If somebody arrives at our site using a zid, add their xchan to our DB if we don't have it already.
+ * And if they aren't already authenticated here, attempt reverse magic auth.
+ *
+ * @param App &$a
+ *
+ * @hooks 'zid_init'
+ * string 'zid' - their zid
+ * string 'url' - the destination url
+ */
+function zid_init(&$a) {
+ $tmp_str = get_my_address();
+ if(validate_email($tmp_str)) {
+ Zotlabs\Daemon\Master::Summon(array('Gprobe',bin2hex($tmp_str)));
+ $arr = array('zid' => $tmp_str, 'url' => App::$cmd);
+ call_hooks('zid_init',$arr);
+ if(! local_channel()) {
+ $r = q("select * from hubloc where hubloc_addr = '%s' order by hubloc_connected desc limit 1",
+ dbesc($tmp_str)
+ );
+ if($r && remote_channel() && remote_channel() === $r[0]['hubloc_hash'])
+ return;
+ logger('zid_init: not authenticated. Invoking reverse magic-auth for ' . $tmp_str);
+ // try to avoid recursion - but send them home to do a proper magic auth
+ $query = App::$query_string;
+ $query = str_replace(array('?zid=','&zid='),array('?rzid=','&rzid='),$query);
+ $dest = '/' . urlencode($query);
+ if($r && ($r[0]['hubloc_url'] != z_root()) && (! strstr($dest,'/magic')) && (! strstr($dest,'/rmagic'))) {
+ goaway($r[0]['hubloc_url'] . '/magic' . '?f=&rev=1&dest=' . z_root() . $dest);
+ }
+ else
+ logger('zid_init: no hubloc found.');
+ }
+ }
+}
+
+/**
+ * @brief Adds a zid parameter to a url.
+ *
+ * @param string $s
+ * The url to accept the zid
+ * @param boolean $address
+ * $address to use instead of session environment
+ * @return string
+ *
+ * @hooks 'zid'
+ * string url - url to accept zid
+ * string zid - urlencoded zid
+ * string result - the return string we calculated, change it if you want to return something else
+ */
+function zid($s,$address = '') {
+ if (! strlen($s) || strpos($s,'zid='))
+ return $s;
+
+ $has_params = ((strpos($s,'?')) ? true : false);
+ $num_slashes = substr_count($s, '/');
+ if (! $has_params)
+ $has_params = ((strpos($s, '&')) ? true : false);
+
+ $achar = strpos($s,'?') ? '&' : '?';
+
+ $mine = get_my_url();
+ $myaddr = (($address) ? $address : get_my_address());
+
+ /** @FIXME checking against our own channel url is no longer reliable. We may have a lot
+ * of urls attached to out channel. Should probably match against our site, since we
+ * will not need to remote authenticate on our own site anyway.
+ */
+
+ if ($mine && $myaddr && (! link_compare($mine,$s)))
+ $zurl = $s . (($num_slashes >= 3) ? '' : '/') . $achar . 'zid=' . urlencode($myaddr);
+ else
+ $zurl = $s;
+
+ $arr = array('url' => $s, 'zid' => urlencode($myaddr), 'result' => $zurl);
+ call_hooks('zid', $arr);
+
+ return $arr['result'];
+}
+
+// Used from within PCSS themes to set theme parameters. If there's a
+// puid request variable, that is the "page owner" and normally their theme
+// settings take precedence; unless a local user sets the "always_my_theme"
+// system pconfig, which means they don't want to see anybody else's theme
+// settings except their own while on this site.
+
+function get_theme_uid() {
+ $uid = (($_REQUEST['puid']) ? intval($_REQUEST['puid']) : 0);
+ if(local_channel()) {
+ if((get_pconfig(local_channel(),'system','always_my_theme')) || (! $uid))
+ return local_channel();
+ }
+ if(! $uid) {
+ $x = get_sys_channel();
+ if($x)
+ return $x['channel_id'];
+ }
+
+ return $uid;
+}
+
+/**
+* @brief Retrieves the path of the default_profile_photo for this system
+* with the specified size.
+*
+* @param int $size
+* one of (300, 80, 48)
+* @returns string
+*/
+function get_default_profile_photo($size = 300) {
+ $scheme = get_config('system','default_profile_photo');
+ if(! $scheme)
+ $scheme = 'rainbow_man';
+
+ return 'images/default_profile_photos/' . $scheme . '/' . $size . '.png';
+}
+
+/**
+ * @brief Test whether a given identity is NOT a member of the Hubzilla.
+ *
+ * @param string $s;
+ * xchan_hash of the identity in question
+ * @returns boolean true or false
+ */
+function is_foreigner($s) {
+ return((strpbrk($s, '.:@')) ? true : false);
+}
+
+/**
+ * @brief Test whether a given identity is a member of the Hubzilla.
+ *
+ * @param string $s;
+ * xchan_hash of the identity in question
+ * @returns boolean true or false
+ */
+function is_member($s) {
+ return((is_foreigner($s)) ? false : true);
+}
+
+function get_online_status($nick) {
+
+ $ret = array('result' => false);
+
+ if(observer_prohibited())
+ return $ret;
+
+ $r = q("select channel_id, channel_hash from channel where channel_address = '%s' limit 1",
+ dbesc(argv(1))
+ );
+ if($r) {
+ $hide = get_pconfig($r[0]['channel_id'],'system','hide_online_status');
+ if($hide)
+ return $ret;
+ $x = q("select cp_status from chatpresence where cp_xchan = '%s' and cp_room = 0 limit 1",
+ dbesc($r[0]['channel_hash'])
+ );
+ if($x)
+ $ret['result'] = $x[0]['cp_status'];
+ }
+
+ return $ret;
+}
+
+
+function remote_online_status($webbie) {
+
+ $result = false;
+ $r = q("select * from hubloc where hubloc_addr = '%s' limit 1",
+ dbesc($webbie)
+ );
+ if(! $r)
+ return $result;
+
+ $url = $r[0]['hubloc_url'] . '/online/' . substr($webbie,0,strpos($webbie,'@'));
+
+ $x = z_fetch_url($url);
+ if($x['success']) {
+ $j = json_decode($x['body'],true);
+ if($j)
+ $result = (($j['result']) ? $j['result'] : false);
+ }
+
+ return $result;
+}
+
+
+function get_channel_by_nick($nick) {
+ $r = q("select * from channel where channel_address = '%s' limit 1",
+ dbesc($nick)
+ );
+ return(($r) ? $r[0] : false);
+
+}
+
+/**
+ * @brief
+ *
+ * @return string
+ */
+function identity_selector() {
+ if (local_channel()) {
+ $r = q("select channel.*, xchan.* from channel left join xchan on channel.channel_hash = xchan.xchan_hash where channel.channel_account_id = %d and channel_removed = 0 order by channel_name ",
+ intval(get_account_id())
+ );
+ if (count($r) > 1) {
+ //$account = App::get_account();
+ $o = replace_macros(get_markup_template('channel_id_select.tpl'), array(
+ '$channels' => $r,
+ '$selected' => local_channel()
+ ));
+ return $o;
+ }
+ }
+
+ return '';
+}
+
+
+function is_public_profile() {
+ if(! local_channel())
+ return false;
+ if(intval(get_config('system','block_public')))
+ return false;
+ $channel = App::get_channel();
+ if($channel && $channel['channel_r_profile'] == PERMS_PUBLIC)
+ return true;
+
+ return false;
+}
+
+function get_profile_fields_basic($filter = 0) {
+
+ $profile_fields_basic = (($filter == 0) ? get_config('system','profile_fields_basic') : null);
+ if(! $profile_fields_basic)
+ $profile_fields_basic = array('fullname','pdesc','chandesc','gender','dob','dob_tz','address','locality','region','postal_code','country_name','marital','sexual','homepage','hometown','keywords','about','contact');
+
+ $x = array();
+ if($profile_fields_basic)
+ foreach($profile_fields_basic as $f)
+ $x[$f] = 1;
+
+ return $x;
+}
+
+
+function get_profile_fields_advanced($filter = 0) {
+ $basic = get_profile_fields_basic($filter);
+ $profile_fields_advanced = (($filter == 0) ? get_config('system','profile_fields_advanced') : null);
+ if(! $profile_fields_advanced)
+ $profile_fields_advanced = array('partner','howlong','politic','religion','likes','dislikes','interest','channels','music','book','film','tv','romance','employment','education');
+
+ $x = array();
+ if($basic)
+ foreach($basic as $f => $v)
+ $x[$f] = $v;
+
+ if($profile_fields_advanced)
+ foreach($profile_fields_advanced as $f)
+ $x[$f] = 1;
+
+ return $x;
+}
+
+/**
+ * @brief Clear notifyflags for a channel.
+ *
+ * Most likely during bulk import of content or other activity that is likely
+ * to generate huge amounts of undesired notifications.
+ *
+ * @param int $channel_id
+ * The channel to disable notifications for
+ * @returns int
+ * Current notification flag value. Send this to notifications_on() to restore the channel settings when finished
+ * with the activity requiring notifications_off();
+ */
+function notifications_off($channel_id) {
+ $r = q("select channel_notifyflags from channel where channel_id = %d limit 1",
+ intval($channel_id)
+ );
+ q("update channel set channel_notifyflags = 0 where channel_id = %d",
+ intval($channel_id)
+ );
+
+ return intval($r[0]['channel_notifyflags']);
+}
+
+
+function notifications_on($channel_id,$value) {
+ $x = q("update channel set channel_notifyflags = %d where channel_id = %d",
+ intval($value),
+ intval($channel_id)
+ );
+ return $x;
+}
+
+
+function get_channel_default_perms($uid) {
+
+ $r = q("select abook_my_perms from abook where abook_channel = %d and abook_self = 1 limit 1",
+ intval($uid)
+ );
+ if($r)
+ return $r[0]['abook_my_perms'];
+
+ return 0;
+}
+
+
+function profiles_build_sync($channel_id) {
+
+ $r = q("select * from profile where uid = %d",
+ intval($channel_id)
+ );
+ if($r) {
+ build_sync_packet($channel_id,array('profile' => $r));
+ }
+}
+
+
+function auto_channel_create($account_id) {
+
+ if(! $account_id)
+ return false;
+
+ $arr = array();
+ $arr['account_id'] = $account_id;
+ $arr['name'] = get_aconfig($account_id,'register','channel_name');
+ $arr['nickname'] = legal_webbie(get_aconfig($account_id,'register','channel_address'));
+ $arr['permissions_role'] = get_aconfig($account_id,'register','permissions_role');
+
+ del_aconfig($account_id,'register','channel_name');
+ del_aconfig($account_id,'register','channel_address');
+ del_aconfig($account_id,'register','permissions_role');
+
+ if((! $arr['name']) || (! $arr['nickname'])) {
+ $x = q("select * from account where account_id = %d limit 1",
+ intval($account_id)
+ );
+ if($x) {
+ if(! $arr['name'])
+ $arr['name'] = substr($x[0]['account_email'],0,strpos($x[0]['account_email'],'@'));
+ if(! $arr['nickname'])
+ $arr['nickname'] = legal_webbie(substr($x[0]['account_email'],0,strpos($x[0]['account_email'],'@')));
+ }
+ }
+ if(! $arr['permissions_role'])
+ $arr['permissions_role'] = 'social';
+
+ if(validate_channelname($arr['name']))
+ return false;
+ if($arr['nickname'] === 'sys')
+ $arr['nickname'] = $arr['nickname'] . mt_rand(1000,9999);
+
+ $arr['nickname'] = check_webbie(array($arr['nickname'], $arr['nickname'] . mt_rand(1000,9999)));
+
+ return create_identity($arr);
+
+}
+
+function get_cover_photo($channel_id,$format = 'bbcode', $res = PHOTO_RES_COVER_1200) {
+
+ $r = q("select height, width, resource_id, mimetype from photo where uid = %d and imgscale = %d and photo_usage = %d",
+ intval($channel_id),
+ intval($res),
+ intval(PHOTO_COVER)
+ );
+ if(! $r)
+ return false;
+
+ $output = false;
+
+ $url = z_root() . '/photo/' . $r[0]['resource_id'] . '-' . $res ;
+
+ switch($format) {
+ case 'bbcode':
+ $output = '[zrl=' . $r[0]['width'] . 'x' . $r[0]['height'] . ']' . $url . '[/zrl]';
+ break;
+ case 'html':
+ $output = '<img class="zrl" width="' . $r[0]['width'] . '" height="' . $r[0]['height'] . '" src="' . $url . '" alt="' . t('cover photo') . '" />';
+ break;
+ case 'array':
+ default:
+ $output = array(
+ 'width' => $r[0]['width'],
+ 'height' => $r[0]['height'],
+ 'type' => $r[0]['mimetype'],
+ 'url' => $url
+ );
+ break;
+ }
+
+ return $output;
+
+}
+
+function get_zcard($channel,$observer_hash = '',$args = array()) {
+
+ logger('get_zcard');
+
+ $maxwidth = (($args['width']) ? intval($args['width']) : 0);
+ $maxheight = (($args['height']) ? intval($args['height']) : 0);
+
+
+ if(($maxwidth > 1200) || ($maxwidth < 1))
+ $maxwidth = 1200;
+
+ if($maxwidth <= 425) {
+ $width = 425;
+ $size = 'hz_small';
+ $cover_size = PHOTO_RES_COVER_425;
+ $pphoto = array('mimetype' => $channel['xchan_photo_mimetype'], 'width' => 80 , 'height' => 80, 'href' => $channel['xchan_photo_m']);
+ }
+ elseif($maxwidth <= 900) {
+ $width = 900;
+ $size = 'hz_medium';
+ $cover_size = PHOTO_RES_COVER_850;
+ $pphoto = array('mimetype' => $channel['xchan_photo_mimetype'], 'width' => 160 , 'height' => 160, 'href' => $channel['xchan_photo_l']);
+ }
+ elseif($maxwidth <= 1200) {
+ $width = 1200;
+ $size = 'hz_large';
+ $cover_size = PHOTO_RES_COVER_1200;
+ $pphoto = array('mimetype' => $channel['xchan_photo_mimetype'], 'width' => 300 , 'height' => 300, 'href' => $channel['xchan_photo_l']);
+ }
+
+// $scale = (float) $maxwidth / $width;
+// $translate = intval(($scale / 1.0) * 100);
+
+
+ $channel['channel_addr'] = $channel['channel_address'] . '@' . App::get_hostname();
+ $zcard = array('chan' => $channel);
+
+ $r = q("select height, width, resource_id, imgscale, mimetype from photo where uid = %d and imgscale = %d and photo_usage = %d",
+ intval($channel['channel_id']),
+ intval($cover_size),
+ intval(PHOTO_COVER)
+ );
+
+ if($r) {
+ $cover = $r[0];
+ $cover['href'] = z_root() . '/photo/' . $r[0]['resource_id'] . '-' . $r[0]['imgscale'];
+ }
+ else {
+ $cover = $pphoto;
+ }
+
+ $o .= replace_macros(get_markup_template('zcard.tpl'),array(
+ '$maxwidth' => $maxwidth,
+ '$scale' => $scale,
+ '$translate' => $translate,
+ '$size' => $size,
+ '$cover' => $cover,
+ '$pphoto' => $pphoto,
+ '$zcard' => $zcard
+ ));
+
+ return $o;
+
+}
+
+
+function get_zcard_embed($channel,$observer_hash = '',$args = array()) {
+
+ logger('get_zcard_embed');
+
+ $maxwidth = (($args['width']) ? intval($args['width']) : 0);
+ $maxheight = (($args['height']) ? intval($args['height']) : 0);
+
+
+ if(($maxwidth > 1200) || ($maxwidth < 1))
+ $maxwidth = 1200;
+
+ if($maxwidth <= 425) {
+ $width = 425;
+ $size = 'hz_small';
+ $cover_size = PHOTO_RES_COVER_425;
+ $pphoto = array('mimetype' => $channel['xchan_photo_mimetype'], 'width' => 80 , 'height' => 80, 'href' => $channel['xchan_photo_m']);
+ }
+ elseif($maxwidth <= 900) {
+ $width = 900;
+ $size = 'hz_medium';
+ $cover_size = PHOTO_RES_COVER_850;
+ $pphoto = array('mimetype' => $channel['xchan_photo_mimetype'], 'width' => 160 , 'height' => 160, 'href' => $channel['xchan_photo_l']);
+ }
+ elseif($maxwidth <= 1200) {
+ $width = 1200;
+ $size = 'hz_large';
+ $cover_size = PHOTO_RES_COVER_1200;
+ $pphoto = array('mimetype' => $channel['xchan_photo_mimetype'], 'width' => 300 , 'height' => 300, 'href' => $channel['xchan_photo_l']);
+ }
+
+ $channel['channel_addr'] = $channel['channel_address'] . '@' . App::get_hostname();
+ $zcard = array('chan' => $channel);
+
+ $r = q("select height, width, resource_id, imgscale, mimetype from photo where uid = %d and imgscale = %d and photo_usage = %d",
+ intval($channel['channel_id']),
+ intval($cover_size),
+ intval(PHOTO_COVER)
+ );
+
+ if($r) {
+ $cover = $r[0];
+ $cover['href'] = z_root() . '/photo/' . $r[0]['resource_id'] . '-' . $r[0]['imgscale'];
+ }
+ else {
+ $cover = $pphoto;
+ }
+
+ $o .= replace_macros(get_markup_template('zcard_embed.tpl'),array(
+ '$maxwidth' => $maxwidth,
+ '$scale' => $scale,
+ '$translate' => $translate,
+ '$size' => $size,
+ '$cover' => $cover,
+ '$pphoto' => $pphoto,
+ '$zcard' => $zcard
+ ));
+
+ return $o;
+
+}
+
+
+function channelx_by_nick($nick) {
+ $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_address = '%s' and channel_removed = 0 LIMIT 1",
+ dbesc($nick)
+ );
+ return(($r) ? $r[0] : false);
+}
+
+function channelx_by_hash($hash) {
+ $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_hash = '%s' and channel_removed = 0 LIMIT 1",
+ dbesc($hash)
+ );
+ return(($r) ? $r[0] : false);
+}
+
+function channelx_by_n($id) {
+ $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_id = %d and channel_removed = 0 LIMIT 1",
+ dbesc($id)
+ );
+ return(($r) ? $r[0] : false);
+}
+
diff --git a/include/chat.php b/include/chat.php
deleted file mode 100644
index 604402045..000000000
--- a/include/chat.php
+++ /dev/null
@@ -1,262 +0,0 @@
-<?php
-/**
- * @file include/chat.php
- * @brief Chat related functions.
- */
-
-
-/**
- * @brief Creates a chatroom.
- *
- * @param array $channel
- * @param array $arr
- * @return An associative array containing:
- * - success: A boolean
- * - message: (optional) A string
- */
-function chatroom_create($channel, $arr) {
-
- $ret = array('success' => false);
-
- $name = trim($arr['name']);
- if(! $name) {
- $ret['message'] = t('Missing room name');
- return $ret;
- }
-
- $r = q("select cr_id from chatroom where cr_uid = %d and cr_name = '%s' limit 1",
- intval($channel['channel_id']),
- dbesc($name)
- );
- if($r) {
- $ret['message'] = t('Duplicate room name');
- return $ret;
- }
-
- $r = q("select count(cr_id) as total from chatroom where cr_aid = %d",
- intval($channel['channel_account_id'])
- );
- if($r)
- $limit = service_class_fetch($channel['channel_id'], 'chatrooms');
-
- if(($r) && ($limit !== false) && ($r[0]['total'] >= $limit)) {
- $ret['message'] = upgrade_message();
- return $ret;
- }
-
- if(! array_key_exists('expire', $arr))
- $arr['expire'] = 120; // minutes, e.g. 2 hours
-
- $created = datetime_convert();
-
- $x = q("insert into chatroom ( cr_aid, cr_uid, cr_name, cr_created, cr_edited, cr_expire, allow_cid, allow_gid, deny_cid, deny_gid )
- values ( %d, %d , '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s' ) ",
- intval($channel['channel_account_id']),
- intval($channel['channel_id']),
- dbesc($name),
- dbesc($created),
- dbesc($created),
- intval($arr['expire']),
- dbesc($arr['allow_cid']),
- dbesc($arr['allow_gid']),
- dbesc($arr['deny_cid']),
- dbesc($arr['deny_gid'])
- );
-
- if($x)
- $ret['success'] = true;
-
- return $ret;
-}
-
-
-function chatroom_destroy($channel,$arr) {
-
- $ret = array('success' => false);
-
- if(intval($arr['cr_id']))
- $sql_extra = " and cr_id = " . intval($arr['cr_id']) . " ";
- elseif(trim($arr['cr_name']))
- $sql_extra = " and cr_name = '" . protect_sprintf(dbesc(trim($arr['cr_name']))) . "' ";
- else {
- $ret['message'] = t('Invalid room specifier.');
- return $ret;
- }
-
- $r = q("select * from chatroom where cr_uid = %d $sql_extra limit 1",
- intval($channel['channel_id'])
- );
- if(! $r) {
- $ret['message'] = t('Invalid room specifier.');
- return $ret;
- }
-
- build_sync_packet($channel['channel_id'],array('chatroom' => $r));
-
- q("delete from chatroom where cr_id = %d",
- intval($r[0]['cr_id'])
- );
- if($r[0]['cr_id']) {
- q("delete from chatpresence where cp_room = %d",
- intval($r[0]['cr_id'])
- );
- q("delete from chat where chat_room = %d",
- intval($r[0]['cr_id'])
- );
- }
-
- $ret['success'] = true;
- return $ret;
-}
-
-
-function chatroom_enter($observer_xchan, $room_id, $status, $client) {
-
- if(! $room_id || ! $observer_xchan)
- return;
-
- $r = q("select * from chatroom where cr_id = %d limit 1",
- intval($room_id)
- );
- if(! $r) {
- notice( t('Room not found.') . EOL);
- return false;
- }
- require_once('include/security.php');
- $sql_extra = permissions_sql($r[0]['cr_uid']);
-
- $x = q("select * from chatroom where cr_id = %d and cr_uid = %d $sql_extra limit 1",
- intval($room_id),
- intval($r[0]['cr_uid'])
- );
- if(! $x) {
- notice( t('Permission denied.') . EOL);
- return false;
- }
-
- $limit = service_class_fetch($r[0]['cr_uid'], 'chatters_inroom');
- if($limit !== false) {
- $y = q("select count(*) as total from chatpresence where cp_room = %d",
- intval($room_id)
- );
- if($y && $y[0]['total'] > $limit) {
- notice( t('Room is full') . EOL);
- return false;
- }
- }
-
- if(intval($x[0]['cr_expire'])) {
- $r = q("delete from chat where created < %s - INTERVAL %s and chat_room = %d",
- db_utcnow(),
- db_quoteinterval( intval($x[0]['cr_expire']) . ' MINUTE' ),
- intval($x[0]['cr_id'])
- );
- }
-
- $r = q("select * from chatpresence where cp_xchan = '%s' and cp_room = %d limit 1",
- dbesc($observer_xchan),
- intval($room_id)
- );
- if($r) {
- q("update chatpresence set cp_last = '%s' where cp_id = %d and cp_client = '%s'",
- dbesc(datetime_convert()),
- intval($r[0]['cp_id']),
- dbesc($client)
- );
- return true;
- }
-
- $r = q("insert into chatpresence ( cp_room, cp_xchan, cp_last, cp_status, cp_client )
- values ( %d, '%s', '%s', '%s', '%s' )",
- intval($room_id),
- dbesc($observer_xchan),
- dbesc(datetime_convert()),
- dbesc($status),
- dbesc($client)
- );
-
- return $r;
-}
-
-
-function chatroom_leave($observer_xchan, $room_id, $client) {
- if(! $room_id || ! $observer_xchan)
- return;
-
- $r = q("select * from chatpresence where cp_xchan = '%s' and cp_room = %d and cp_client = '%s' limit 1",
- dbesc($observer_xchan),
- intval($room_id),
- dbesc($client)
- );
- if($r) {
- q("delete from chatpresence where cp_id = %d",
- intval($r[0]['cp_id'])
- );
- }
-
- return true;
-}
-
-
-function chatroom_list($uid) {
- require_once('include/security.php');
- $sql_extra = permissions_sql($uid);
-
- $r = q("select allow_cid, allow_gid, deny_cid, deny_gid, cr_name, cr_expire, cr_id, count(cp_id) as cr_inroom from chatroom left join chatpresence on cr_id = cp_room where cr_uid = %d $sql_extra group by cr_name, cr_id order by cr_name",
- intval($uid)
- );
-
- return $r;
-}
-
-function chatroom_list_count($uid) {
- require_once('include/security.php');
- $sql_extra = permissions_sql($uid);
-
- $r = q("select count(*) as total from chatroom where cr_uid = %d $sql_extra",
- intval($uid)
- );
-
- return $r[0]['total'];
-}
-
-/**
- * create a chat message via API.
- * It is the caller's responsibility to enter the room.
- */
-
-function chat_message($uid, $room_id, $xchan, $text) {
-
- $ret = array('success' => false);
-
- if(! $text)
- return;
-
- $sql_extra = permissions_sql($uid);
-
- $r = q("select * from chatroom where cr_uid = %d and cr_id = %d $sql_extra",
- intval($uid),
- intval($room_id)
- );
- if(! $r)
- return $ret;
-
- $arr = array(
- 'chat_room' => $room_id,
- 'chat_xchan' => $xchan,
- 'chat_text' => $text
- );
-
- call_hooks('chat_message', $arr);
-
- $x = q("insert into chat ( chat_room, chat_xchan, created, chat_text )
- values( %d, '%s', '%s', '%s' )",
- intval($room_id),
- dbesc($xchan),
- dbesc(datetime_convert()),
- dbesc($arr['chat_text'])
- );
-
- $ret['success'] = true;
- return $ret;
-}
diff --git a/include/checksites.php b/include/checksites.php
deleted file mode 100644
index e9c08c202..000000000
--- a/include/checksites.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php /** @file */
-
-require_once('boot.php');
-require_once('include/cli_startup.php');
-require_once('include/zot.php');
-require_once('include/hubloc.php');
-
-
-
-function checksites_run($argv, $argc){
-
-
- cli_startup();
- $a = get_app();
-
- logger('checksites: start');
-
- if(($argc > 1) && ($argv[1]))
- $site_id = $argv[1];
-
- if($site_id)
- $sql_options = " and site_url = '" . dbesc($argv[1]) . "' ";
-
- $days = intval(get_config('system','sitecheckdays'));
- if($days < 1)
- $days = 30;
-
- $r = q("select * from site where site_dead = 0 and site_update < %s - INTERVAL %s and site_type = %d $sql_options ",
- db_utcnow(), db_quoteinterval($days . ' DAY'),
- intval(SITE_TYPE_ZOT)
- );
-
- if(! $r)
- return;
-
- foreach($r as $rr) {
- if(! strcasecmp($rr['site_url'],z_root()))
- continue;
-
- $x = ping_site($rr['site_url']);
- if($x['success']) {
- logger('checksites: ' . $rr['site_url']);
- q("update site set site_update = '%s' where site_url = '%s' ",
- dbesc(datetime_convert()),
- dbesc($rr['site_url'])
- );
- }
- else {
- logger('marking dead site: ' . $x['message']);
- q("update site set site_dead = 1 where site_url = '%s' ",
- dbesc($rr['site_url'])
- );
- }
- }
-
- return;
-}
-
-if (array_search(__file__,get_included_files())===0){
- checksites_run($argv,$argc);
- killme();
-}
diff --git a/include/cli_startup.php b/include/cli_startup.php
index a99164d4c..a4c1f629a 100644
--- a/include/cli_startup.php
+++ b/include/cli_startup.php
@@ -6,36 +6,7 @@ require_once('boot.php');
function cli_startup() {
- global $a, $db, $default_timezone;
-
- if(is_null($a)) {
- $a = new miniApp;
- }
-
- App::init();
-
- if(is_null($db)) {
- @include(".htconfig.php");
-
- $a->convert();
-
- if(! defined('UNO'))
- define('UNO', 0);
-
- App::$timezone = ((x($default_timezone)) ? $default_timezone : 'UTC');
- date_default_timezone_set(App::$timezone);
-
- require_once('include/dba/dba_driver.php');
- $db = dba_factory($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type);
- unset($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type);
- };
-
- \Zotlabs\Web\Session::init();
-
- load_config('system');
-
+ sys_boot();
App::set_baseurl(get_config('system','baseurl'));
- load_hooks();
-
} \ No newline at end of file
diff --git a/include/cli_suggest.php b/include/cli_suggest.php
deleted file mode 100644
index 321ffd2e0..000000000
--- a/include/cli_suggest.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php /** @file */
-
-require_once('boot.php');
-require_once('include/cli_startup.php');
-require_once('include/socgraph.php');
-
-
-function cli_suggest_run($argv, $argc){
-
- cli_startup();
-
- $a = get_app();
-
- update_suggestions();
-
-}
-
-if (array_search(__file__,get_included_files())===0){
- cli_suggest_run($argv,$argc);
- killme();
-}
-
diff --git a/include/config.php b/include/config.php
index 12768f4da..65199283d 100644
--- a/include/config.php
+++ b/include/config.php
@@ -1,17 +1,13 @@
<?php
+
/**
* @file include/config.php
* @brief Arbitrary configuration storage.
*
- * @note Please do not store booleans - convert to 0/1 integer values.
- * The get_?config() functions return boolean false for keys that are unset,
- * and this could lead to subtle bugs.
- *
- * Arrays get stored as serialize strings.
- *
- * @todo There are a few places in the code (such as the admin panel) where
- * boolean configurations need to be fixed as of 10/08/2011.
+ * Arrays get stored as serialized strings.
+ * Booleans are stored as integer 0/1.
*
+
* - <b>config</b> is used for hub specific configurations. It overrides the
* configurations from .htconfig file. The storage is of size TEXT.
* - <b>pconfig</b> is used for channel specific configurations and takes a
@@ -34,751 +30,102 @@
*
*/
-/**
- * @brief Loads the hub's configuration from database to a cached storage.
- *
- * Retrieve a category ($family) of config variables from database to a cached
- * storage in the global App::$config[$family].
- *
- * @param string $family
- * The category of the configuration value
- */
-function load_config($family) {
- global $a;
- if(! array_key_exists($family, App::$config))
- App::$config[$family] = array();
+use Zotlabs\Lib as Zlib;
- if(! array_key_exists('config_loaded', App::$config[$family])) {
- $r = q("SELECT * FROM config WHERE cat = '%s'", dbesc($family));
- if($r !== false) {
- if($r) {
- foreach($r as $rr) {
- $k = $rr['k'];
- App::$config[$family][$k] = $rr['v'];
- }
- }
- App::$config[$family]['config_loaded'] = true;
- }
- }
+function load_config($family) {
+ Zlib\Config::Load($family);
}
-/**
- * @brief Get a particular config variable given the category name ($family)
- * and a key.
- *
- * Get a particular config variable from the given category ($family) and the
- * $key from a cached storage in App::$config[$family]. If a key is found in the
- * DB but does not exist in local config cache, pull it into the cache so we
- * do not have to hit the DB again for this item.
- *
- * Returns false if not set.
- *
- * @param string $family
- * The category of the configuration value
- * @param string $key
- * The configuration key to query
- * @return mixed Return value or false on error or if not set
- */
function get_config($family, $key) {
- global $a;
-
- if((! array_key_exists($family, App::$config)) || (! array_key_exists('config_loaded', App::$config[$family])))
- load_config($family);
-
- if(array_key_exists('config_loaded', App::$config[$family])) {
- if(! array_key_exists($key, App::$config[$family])) {
- return false;
- }
- return ((! is_array(App::$config[$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', App::$config[$family][$key]))
- ? unserialize(App::$config[$family][$key])
- : App::$config[$family][$key]
- );
- }
- return false;
+ return Zlib\Config::Get($family,$key);
}
-/**
- * @brief Returns a value directly from the database configuration storage.
- *
- * This function queries directly the database and bypasses the chached storage
- * from get_config($family, $key).
- *
- * @param string $family
- * The category of the configuration value
- * @param string $key
- * The configuration key to query
- * @return mixed
- */
-function get_config_from_storage($family, $key) {
- $ret = q("SELECT * FROM config WHERE cat = '%s' AND k = '%s' LIMIT 1",
- dbesc($family),
- dbesc($key)
- );
- return $ret;
-}
-
-/**
- * @brief Sets a configuration value for the hub.
- *
- * Stores a config value ($value) in the category ($family) under the key ($key).
- *
- * @note Please do not store booleans - convert to 0/1 integer values!
- *
- * @param string $family
- * The category of the configuration value
- * @param string $key
- * The configuration key to set
- * @param mixed $value
- * The value to store in the configuration
- * @return mixed
- * Return the set value, or false if the database update failed
- */
function set_config($family, $key, $value) {
- global $a;
-
- // manage array value
- $dbvalue = ((is_array($value)) ? serialize($value) : $value);
- $dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
-
- if(get_config($family, $key) === false || (! get_config_from_storage($family, $key))) {
- $ret = q("INSERT INTO config ( cat, k, v ) VALUES ( '%s', '%s', '%s' ) ",
- dbesc($family),
- dbesc($key),
- dbesc($dbvalue)
- );
- if($ret) {
- App::$config[$family][$key] = $value;
- $ret = $value;
- }
- return $ret;
- }
-
- $ret = q("UPDATE config SET v = '%s' WHERE cat = '%s' AND k = '%s'",
- dbesc($dbvalue),
- dbesc($family),
- dbesc($key)
- );
-
- if($ret) {
- App::$config[$family][$key] = $value;
- $ret = $value;
- }
- return $ret;
+ return Zlib\Config::Set($family,$key,$value);
}
-/**
- * @brief Deletes the given key from the hub's configuration database.
- *
- * Removes the configured value from the stored cache in App::$config[$family]
- * and removes it from the database.
- *
- * @param string $family
- * The category of the configuration value
- * @param string $key
- * The configuration key to delete
- * @return mixed
- */
function del_config($family, $key) {
- global $a;
- $ret = false;
-
- if(array_key_exists($family, App::$config) && array_key_exists($key, App::$config[$family]))
- unset(App::$config[$family][$key]);
- $ret = q("DELETE FROM config WHERE cat = '%s' AND k = '%s'",
- dbesc($family),
- dbesc($key)
- );
- return $ret;
+ return Zlib\Config::Delete($family,$key);
}
-
-/**
- * @brief Loads all configuration values of a channel into a cached storage.
- *
- * All configuration values of the given channel are stored in global cache
- * which is available under the global variable App::$config[$uid].
- *
- * @param string $uid
- * The channel_id
- * @return void|false Nothing or false if $uid is false
- */
function load_pconfig($uid) {
- global $a;
-
- if($uid === false)
- return false;
-
- if(! array_key_exists($uid, App::$config))
- App::$config[$uid] = array();
-
- $r = q("SELECT * FROM pconfig WHERE uid = %d",
- intval($uid)
- );
-
- if($r) {
- foreach($r as $rr) {
- $k = $rr['k'];
- $c = $rr['cat'];
- if(! array_key_exists($c, App::$config[$uid])) {
- App::$config[$uid][$c] = array();
- App::$config[$uid][$c]['config_loaded'] = true;
- }
- App::$config[$uid][$c][$k] = $rr['v'];
- }
- }
+ Zlib\PConfig::Load($uid);
}
-/**
- * @brief Get a particular channel's config variable given the category name
- * ($family) and a key.
- *
- * Get a particular channel's config value from the given category ($family)
- * and the $key from a cached storage in App::$config[$uid].
- *
- * Returns false if not set.
- *
- * @param string $uid
- * The channel_id
- * @param string $family
- * The category of the configuration value
- * @param string $key
- * The configuration key to query
- * @param boolean $instore (deprecated, without function)
- * @return mixed Stored value or false if it does not exist
- */
function get_pconfig($uid, $family, $key, $instore = false) {
-// logger('include/config.php: get_pconfig() deprecated instore param used', LOGGER_DEBUG);
- global $a;
-
- if($uid === false)
- return false;
-
- if(! array_key_exists($uid, App::$config))
- load_pconfig($uid);
-
- if((! array_key_exists($family, App::$config[$uid])) || (! array_key_exists($key, App::$config[$uid][$family])))
- return false;
-
- return ((! is_array(App::$config[$uid][$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', App::$config[$uid][$family][$key]))
- ? unserialize(App::$config[$uid][$family][$key])
- : App::$config[$uid][$family][$key]
- );
+ return Zlib\PConfig::Get($uid,$family,$key,$instore = false);
}
-/**
- * @brief Sets a configuration value for a channel.
- *
- * Stores a config value ($value) in the category ($family) under the key ($key)
- * for the channel_id $uid.
- *
- * @note Please do not store booleans - convert to 0/1 integer values!
- *
- * @param string $uid
- * The channel_id
- * @param string $family
- * The category of the configuration value
- * @param string $key
- * The configuration key to set
- * @param string $value
- * The value to store
- * @return mixed Stored $value or false
- */
function set_pconfig($uid, $family, $key, $value) {
- global $a;
-
- // this catches subtle errors where this function has been called
- // with local_channel() when not logged in (which returns false)
- // and throws an error in array_key_exists below.
- // we provide a function backtrace in the logs so that we can find
- // and fix the calling function.
-
- if($uid === false) {
- btlogger('UID is FALSE!', LOGGER_NORMAL, LOG_ERR);
- return;
- }
-
- // manage array value
- $dbvalue = ((is_array($value)) ? serialize($value) : $value);
- $dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
-
- if(get_pconfig($uid, $family, $key) === false) {
- if(! array_key_exists($uid, App::$config))
- App::$config[$uid] = array();
- if(! array_key_exists($family, App::$config[$uid]))
- App::$config[$uid][$family] = array();
-
- // keep a separate copy for all variables which were
- // set in the life of this page. We need this to
- // synchronise channel clones.
-
- if(! array_key_exists('transient', App::$config[$uid]))
- App::$config[$uid]['transient'] = array();
- if(! array_key_exists($family, App::$config[$uid]['transient']))
- App::$config[$uid]['transient'][$family] = array();
-
- App::$config[$uid][$family][$key] = $value;
- App::$config[$uid]['transient'][$family][$key] = $value;
-
- $ret = q("INSERT INTO pconfig ( uid, cat, k, v ) VALUES ( %d, '%s', '%s', '%s' ) ",
- intval($uid),
- dbesc($family),
- dbesc($key),
- dbesc($dbvalue)
- );
- if($ret)
- return $value;
-
- return $ret;
- }
-
- $ret = q("UPDATE pconfig SET v = '%s' WHERE uid = %d and cat = '%s' AND k = '%s'",
- dbesc($dbvalue),
- intval($uid),
- dbesc($family),
- dbesc($key)
- );
-
- // keep a separate copy for all variables which were
- // set in the life of this page. We need this to
- // synchronise channel clones.
-
- if(! array_key_exists('transient', App::$config[$uid]))
- App::$config[$uid]['transient'] = array();
- if(! array_key_exists($family, App::$config[$uid]['transient']))
- App::$config[$uid]['transient'][$family] = array();
-
- App::$config[$uid][$family][$key] = $value;
- App::$config[$uid]['transient'][$family][$key] = $value;
-
- if($ret)
- return $value;
-
- return $ret;
+ return Zlib\PConfig::Set($uid,$family,$key,$value);
}
-/**
- * @brief Deletes the given key from the channel's configuration.
- *
- * Removes the configured value from the stored cache in App::$config[$uid]
- * and removes it from the database.
- *
- * @param string $uid
- * The channel_id
- * @param string $family
- * The category of the configuration value
- * @param string $key
- * The configuration key to delete
- * @return mixed
- */
function del_pconfig($uid, $family, $key) {
- global $a;
- $ret = false;
-
- if (x(App::$config[$uid][$family], $key))
- unset(App::$config[$uid][$family][$key]);
- $ret = q("DELETE FROM pconfig WHERE uid = %d AND cat = '%s' AND k = '%s'",
- intval($uid),
- dbesc($family),
- dbesc($key)
- );
-
- return $ret;
+ return Zlib\PConfig::Delete($uid,$family,$key);
}
-
-/**
- * @brief Loads a full xchan's configuration into a cached storage.
- *
- * All configuration values of the given observer hash are stored in global
- * cache which is available under the global variable App::$config[$xchan].
- *
- * @param string $xchan
- * The observer's hash
- * @return void|false Returns false if xchan is not set
- */
function load_xconfig($xchan) {
- global $a;
-
- if(! $xchan)
- return false;
-
- if(! array_key_exists($xchan, App::$config))
- App::$config[$xchan] = array();
-
- $r = q("SELECT * FROM xconfig WHERE xchan = '%s'",
- dbesc($xchan)
- );
-
- if($r) {
- foreach($r as $rr) {
- $k = $rr['k'];
- $c = $rr['cat'];
- if(! array_key_exists($c, App::$config[$xchan])) {
- App::$config[$xchan][$c] = array();
- App::$config[$xchan][$c]['config_loaded'] = true;
- }
- App::$config[$xchan][$c][$k] = $rr['v'];
- }
- }
+ Zlib\XConfig::Load($xchan);
}
-/**
- * @brief Get a particular observer's config variable given the category
- * name ($family) and a key.
- *
- * Get a particular observer's config value from the given category ($family)
- * and the $key from a cached storage in App::$config[$xchan].
- *
- * Returns false if not set.
- *
- * @param string $xchan
- * The observer's hash
- * @param string $family
- * The category of the configuration value
- * @param string $key
- * The configuration key to query
- * @return mixed Stored $value or false if it does not exist
- */
function get_xconfig($xchan, $family, $key) {
- global $a;
-
- if(! $xchan)
- return false;
-
- if(! array_key_exists($xchan, App::$config))
- load_xconfig($xchan);
-
- if((! array_key_exists($family, App::$config[$xchan])) || (! array_key_exists($key, App::$config[$xchan][$family])))
- return false;
-
- return ((! is_array(App::$config[$xchan][$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', App::$config[$xchan][$family][$key]))
- ? unserialize(App::$config[$xchan][$family][$key])
- : App::$config[$xchan][$family][$key]
- );
+ return Zlib\XConfig::Get($xchan,$family,$key);
}
-/**
- * @brief Sets a configuration value for an observer.
- *
- * Stores a config value ($value) in the category ($family) under the key ($key)
- * for the observer's $xchan hash.
- *
- * @note Please do not store booleans - convert to 0/1 integer values!
- *
- * @param string $xchan
- * The observer's hash
- * @param string $family
- * The category of the configuration value
- * @param string $key
- * The configuration key to set
- * @param string $value
- * The value to store
- * @return mixed Stored $value or false
- */
function set_xconfig($xchan, $family, $key, $value) {
- global $a;
-
- // manage array value
- $dbvalue = ((is_array($value)) ? serialize($value) : $value);
- $dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
-
- if(get_xconfig($xchan, $family, $key) === false) {
- if(! array_key_exists($xchan, App::$config))
- App::$config[$xchan] = array();
- if(! array_key_exists($family, App::$config[$xchan]))
- App::$config[$xchan][$family] = array();
-
- App::$config[$xchan][$family][$key] = $value;
- $ret = q("INSERT INTO xconfig ( xchan, cat, k, v ) VALUES ( '%s', '%s', '%s', '%s' ) ",
- dbesc($xchan),
- dbesc($family),
- dbesc($key),
- dbesc($dbvalue)
- );
- if($ret)
- return $value;
- return $ret;
- }
-
- $ret = q("UPDATE xconfig SET v = '%s' WHERE xchan = '%s' and cat = '%s' AND k = '%s'",
- dbesc($dbvalue),
- dbesc($xchan),
- dbesc($family),
- dbesc($key)
- );
-
- App::$config[$xchan][$family][$key] = $value;
-
- if($ret)
- return $value;
- return $ret;
+ return Zlib\XConfig::Set($xchan,$family,$key,$value);
}
-/**
- * @brief Deletes the given key from the observer's config.
- *
- * Removes the configured value from the stored cache in App::$config[$xchan]
- * and removes it from the database.
- *
- * @param string $xchan
- * The observer's hash
- * @param string $family
- * The category of the configuration value
- * @param string $key
- * The configuration key to delete
- * @return mixed
- */
function del_xconfig($xchan, $family, $key) {
- global $a;
- $ret = false;
-
- if(x(App::$config[$xchan][$family], $key))
- unset(App::$config[$xchan][$family][$key]);
- $ret = q("DELETE FROM xconfig WHERE xchan = '%s' AND cat = '%s' AND k = '%s'",
- dbesc($xchan),
- dbesc($family),
- dbesc($key)
- );
- return $ret;
+ return Zlib\XConfig::Delete($xchan,$family,$key);
}
-
-// account configuration storage is built on top of the under-utilised xconfig
-
function load_aconfig($account_id) {
- load_xconfig('a_' . $account_id);
+ Zlib\AConfig::Load($account_id);
}
function get_aconfig($account_id, $family, $key) {
- return get_xconfig('a_' . $account_id, $family, $key);
+ return Zlib\AConfig::Get($account_id, $family, $key);
}
function set_aconfig($account_id, $family, $key, $value) {
- return set_xconfig('a_' . $account_id, $family, $key, $value);
+ return Zlib\AConfig::Set($account_id, $family, $key, $value);
}
function del_aconfig($account_id, $family, $key) {
- return del_xconfig('a_' . $account_id, $family, $key);
+ return Zlib\AConfig::Delete($account_id, $family, $key);
}
function load_abconfig($chash,$xhash) {
- $r = q("select * from abconfig where chan = '%s' and xchan = '%s'",
- dbesc($chash),
- dbesc($xhash)
- );
- return $r;
+ Zlib\AbConfig::Load($chash,$xhash);
}
function get_abconfig($chash,$xhash,$family,$key) {
- $r = q("select * from abconfig where chan = '%s' and xchan = '%s' and cat = '%s' and k = '%s' limit 1",
- dbesc($chash),
- dbesc($xhash),
- dbesc($family),
- dbesc($key)
- );
- if($r) {
- return ((preg_match('|^a:[0-9]+:{.*}$|s', $r[0]['v'])) ? unserialize($r[0]['v']) : $r[0]['v']);
- }
- return false;
+ return Zlib\AbConfig::Get($chash,$xhash,$family,$key);
}
-
function set_abconfig($chash,$xhash,$family,$key,$value) {
-
- $dbvalue = ((is_array($value)) ? serialize($value) : $value);
- $dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
-
- if(get_abconfig($chash,$xhash,$family,$key) === false) {
- $r = q("insert into abconfig ( chan, xchan, cat, k, v ) values ( '%s', '%s', '%s', '%s', '%s' ) ",
- dbesc($chash),
- dbesc($xhash),
- dbesc($family),
- dbesc($key),
- dbesc($dbvalue)
- );
- }
- else {
- $r = q("update abconfig set v = '%s' where chan = '%s' and xchan = '%s' and cat = '%s' and k = '%s' ",
- dbesc($dbvalue),
- dbesc($chash),
- dbesc($xhash),
- dbesc($family),
- dbesc($key)
- );
- }
- if($r)
- return $value;
- return false;
+ return Zlib\AbConfig::Set($chash,$xhash,$family,$key,$value);
}
-
function del_abconfig($chash,$xhash,$family,$key) {
-
- $r = q("delete from abconfig where chan = '%s' and xchan = '%s' and cat = '%s' and k = '%s' ",
- dbesc($chash),
- dbesc($xhash),
- dbesc($family),
- dbesc($key)
- );
-
- return $r;
+ return Zlib\AbConfig::Delete($chash,$xhash,$family,$key);
}
-
-
-
-
+function load_iconfig(&$item) {
+ Zlib\IConfig::Load($item);
+}
function get_iconfig(&$item, $family, $key) {
-
- $is_item = false;
- if(is_array($item)) {
- $is_item = true;
- if((! array_key_exists('iconfig',$item)) || (! is_array($item['iconfig'])))
- $item['iconfig'] = array();
-
- if(array_key_exists('item_id',$item))
- $iid = $item['item_id'];
- else
- $iid = $item['id'];
- }
- elseif(intval($item))
- $iid = $item;
-
- if(! $iid)
- return false;
-
- if(is_array($item) && array_key_exists('iconfig',$item) && is_array($item['iconfig'])) {
- foreach($item['iconfig'] as $c) {
- if($c['iid'] == $iid && $c['cat'] == $family && $c['k'] == $key)
- return $c['v'];
- }
- }
-
- $r = q("select * from iconfig where iid = %d and cat = '%s' and k = '%s' limit 1",
- intval($iid),
- dbesc($family),
- dbesc($key)
- );
- if($r) {
- $r[0]['v'] = ((preg_match('|^a:[0-9]+:{.*}$|s',$r[0]['v'])) ? unserialize($r[0]['v']) : $r[0]['v']);
- if($is_item)
- $item['iconfig'][] = $r[0];
- return $r[0]['v'];
- }
- return false;
-
+ return Zlib\IConfig::Get($item, $family, $key);
}
-/**
- * set_iconfig(&$item, $family, $key, $value, $sharing = false);
- *
- * $item - item array or item id. If passed an array the iconfig meta information is
- * added to the item structure (which will need to be saved with item_store eventually).
- * If passed an id, the DB is updated, but may not be federated and/or cloned.
- * $family - namespace of meta variable
- * $key - key of meta variable
- * $value - value of meta variable
- * $sharing - boolean (default false); if true the meta information is propagated with the item
- * to other sites/channels, mostly useful when $item is an array and has not yet been stored/delivered.
- * If the meta information is added after delivery and you wish it to be shared, it may be necessary to
- * alter the item edited timestamp and invoke the delivery process on the updated item. The edited
- * timestamp needs to be altered in order to trigger an item_store_update() at the receiving end.
- */
-
-
function set_iconfig(&$item, $family, $key, $value, $sharing = false) {
-
- $dbvalue = ((is_array($value)) ? serialize($value) : $value);
- $dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
-
- $is_item = false;
- $idx = null;
-
- if(is_array($item)) {
- $is_item = true;
- if((! array_key_exists('iconfig',$item)) || (! is_array($item['iconfig'])))
- $item['iconfig'] = array();
- elseif($item['iconfig']) {
- for($x = 0; $x < count($item['iconfig']); $x ++) {
- if($item['iconfig'][$x]['cat'] == $family && $item['iconfig'][$x]['k'] == $key) {
- $idx = $x;
- }
- }
- }
- $entry = array('cat' => $family, 'k' => $key, 'v' => $value, 'sharing' => $sharing);
-
- if(is_null($idx))
- $item['iconfig'][] = $entry;
- else
- $item['iconfig'][$idx] = $entry;
- return $value;
- }
-
- if(intval($item))
- $iid = intval($item);
-
- if(! $iid)
- return false;
-
- if(get_iconfig($item, $family, $key) === false) {
- $r = q("insert into iconfig( iid, cat, k, v, sharing ) values ( %d, '%s', '%s', '%s', %d ) ",
- intval($iid),
- dbesc($family),
- dbesc($key),
- dbesc($dbvalue),
- intval($sharing)
- );
- }
- else {
- $r = q("update iconfig set v = '%s', sharing = %d where iid = %d and cat = '%s' and k = '%s' ",
- dbesc($dbvalue),
- intval($sharing),
- intval($iid),
- dbesc($family),
- dbesc($key)
- );
- }
-
- if(! $r)
- return false;
-
- return $value;
+ return Zlib\IConfig::Set($item, $family, $key, $value, $sharing);
}
-
-
function del_iconfig(&$item, $family, $key) {
-
-
- $is_item = false;
- $idx = null;
-
- if(is_array($item)) {
- $is_item = true;
- if(is_array($item['iconfig'])) {
- for($x = 0; $x < count($item['iconfig']); $x ++) {
- if($item['iconfig'][$x]['cat'] == $family && $item['iconfig'][$x]['k'] == $key) {
- unset($item['iconfig'][$x]);
- }
- }
- }
- return true;
- }
-
- if(intval($item))
- $iid = intval($item);
-
- if(! $iid)
- return false;
-
- return q("delete from iconfig where iid = %d and cat = '%s' and k = '%s' ",
- intval($iid),
- dbesc($family),
- dbesc($key)
- );
-
+ return Zlib\IConfig::Delete($item, $family, $key);
}
-
diff --git a/include/connections.php b/include/connections.php
new file mode 100644
index 000000000..2d10b8354
--- /dev/null
+++ b/include/connections.php
@@ -0,0 +1,614 @@
+<?php /** @file */
+
+
+
+function rconnect_url($channel_id,$xchan) {
+
+ if(! $xchan)
+ return '';
+
+ $r = q("select abook_id from abook where abook_channel = %d and abook_xchan = '%s' limit 1",
+ intval($channel_id),
+ dbesc($xchan)
+ );
+
+ if($r)
+ return '';
+
+ $r = q("select * from xchan where xchan_hash = '%s' limit 1",
+ dbesc($xchan)
+ );
+
+ if(($r) && ($r[0]['xchan_follow']))
+ return $r[0]['xchan_follow'];
+
+ $r = q("select hubloc_url from hubloc where hubloc_hash = '%s' and hubloc_primary = 1 limit 1",
+ dbesc($xchan)
+ );
+
+ if($r)
+ return $r[0]['hubloc_url'] . '/follow?f=&url=%s';
+ return '';
+
+}
+
+function abook_connections($channel_id, $sql_conditions = '') {
+ $r = q("select * from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d
+ and abook_self = 0 $sql_conditions",
+ intval($channel_id)
+ );
+ return(($r) ? $r : array());
+}
+
+function abook_self($channel_id) {
+ $r = q("select * from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d
+ and abook_self = 1 limit 1",
+ intval($channel_id)
+ );
+ return(($r) ? $r[0] : array());
+}
+
+
+function vcard_from_xchan($xchan, $observer = null, $mode = '') {
+
+ if(! $xchan) {
+ if(App::$poi) {
+ $xchan = App::$poi;
+ }
+ elseif(is_array(App::$profile) && App::$profile['channel_hash']) {
+ $r = q("select * from xchan where xchan_hash = '%s' limit 1",
+ dbesc(App::$profile['channel_hash'])
+ );
+ if($r)
+ $xchan = $r[0];
+ }
+ }
+
+ if(! $xchan)
+ return;
+
+// FIXME - show connect button to observer if appropriate
+ $connect = false;
+ if(local_channel()) {
+ $r = q("select * from abook where abook_xchan = '%s' and abook_channel = %d limit 1",
+ dbesc($xchan['xchan_hash']),
+ intval(local_channel())
+ );
+ if(! $r)
+ $connect = t('Connect');
+ }
+
+ if(array_key_exists('channel_id',$xchan))
+ App::$profile_uid = $xchan['channel_id'];
+
+ $url = (($observer)
+ ? z_root() . '/magic?f=&dest=' . $xchan['xchan_url'] . '&addr=' . $xchan['xchan_addr']
+ : $xchan['xchan_url']
+ );
+
+ return replace_macros(get_markup_template('xchan_vcard.tpl'),array(
+ '$name' => $xchan['xchan_name'],
+ '$photo' => ((is_array(App::$profile) && array_key_exists('photo',App::$profile)) ? App::$profile['photo'] : $xchan['xchan_photo_l']),
+ '$follow' => $xchan['xchan_addr'],
+ '$link' => zid($xchan['xchan_url']),
+ '$connect' => $connect,
+ '$newwin' => (($mode === 'chanview') ? t('New window') : ''),
+ '$newtit' => t('Open the selected location in a different window or browser tab'),
+ '$url' => $url,
+ ));
+}
+
+function abook_toggle_flag($abook,$flag) {
+
+ $field = '';
+
+ switch($flag) {
+ case ABOOK_FLAG_BLOCKED:
+ $field = 'abook_blocked';
+ break;
+ case ABOOK_FLAG_IGNORED:
+ $field = 'abook_ignored';
+ break;
+ case ABOOK_FLAG_HIDDEN:
+ $field = 'abook_hidden';
+ break;
+ case ABOOK_FLAG_ARCHIVED:
+ $field = 'abook_archived';
+ break;
+ case ABOOK_FLAG_PENDING:
+ $field = 'abook_pending';
+ break;
+ case ABOOK_FLAG_UNCONNECTED:
+ $field = 'abook_unconnected';
+ break;
+ case ABOOK_FLAG_SELF:
+ $field = 'abook_self';
+ break;
+ case ABOOK_FLAG_FEED:
+ $field = 'abook_feed';
+ break;
+ default:
+ break;
+ }
+ if(! $field)
+ return;
+
+ $r = q("UPDATE abook set $field = (1 - $field) where abook_id = %d and abook_channel = %d",
+ intval($abook['abook_id']),
+ intval($abook['abook_channel'])
+ );
+
+
+ // if unsetting the archive bit, update the timestamps so we'll try to connect for an additional 30 days.
+
+ if(($flag === ABOOK_FLAG_ARCHIVED) && (intval($abook['abook_archived']))) {
+ $r = q("update abook set abook_connected = '%s', abook_updated = '%s'
+ where abook_id = %d and abook_channel = %d",
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ intval($abook['abook_id']),
+ intval($abook['abook_channel'])
+ );
+ }
+
+ return $r;
+
+}
+
+
+// Included here for completeness, but this is a very dangerous operation.
+// It is the caller's responsibility to confirm the requestor's intent and
+// authorisation to do this.
+
+function user_remove($uid) {
+
+}
+
+function account_remove($account_id,$local = true,$unset_session=true) {
+
+ logger('account_remove: ' . $account_id);
+
+ if(! intval($account_id)) {
+ logger('account_remove: no account.');
+ return false;
+ }
+
+ // Don't let anybody nuke the only admin account.
+
+ $r = q("select account_id from account where (account_roles & %d) > 0",
+ intval(ACCOUNT_ROLE_ADMIN)
+ );
+
+ if($r !== false && count($r) == 1 && $r[0]['account_id'] == $account_id) {
+ logger("Unable to remove the only remaining admin account");
+ return false;
+ }
+
+ $r = q("select * from account where account_id = %d limit 1",
+ intval($account_id)
+ );
+ $account_email=$r[0]['account_email'];
+
+ if(! $r) {
+ logger('account_remove: No account with id: ' . $account_id);
+ return false;
+ }
+
+ $x = q("select channel_id from channel where channel_account_id = %d",
+ intval($account_id)
+ );
+ if($x) {
+ foreach($x as $xx) {
+ channel_remove($xx['channel_id'],$local,false);
+ }
+ }
+
+ $r = q("delete from account where account_id = %d",
+ intval($account_id)
+ );
+
+
+ if ($unset_session) {
+ unset($_SESSION['authenticated']);
+ unset($_SESSION['uid']);
+ notice( sprintf(t("User '%s' deleted"),$account_email) . EOL);
+ goaway(z_root());
+ }
+ return $r;
+
+}
+// recursively delete a directory
+function rrmdir($path)
+{
+ if (is_dir($path) === true)
+ {
+ $files = array_diff(scandir($path), array('.', '..'));
+
+ foreach ($files as $file)
+ {
+ rrmdir(realpath($path) . '/' . $file);
+ }
+
+ return rmdir($path);
+ }
+
+ else if (is_file($path) === true)
+ {
+ return unlink($path);
+ }
+
+ return false;
+}
+
+function channel_remove($channel_id, $local = true, $unset_session=false) {
+
+ if(! $channel_id)
+ return;
+
+ logger('Removing channel: ' . $channel_id);
+ logger('channel_remove: local only: ' . intval($local));
+
+ $r = q("select * from channel where channel_id = %d limit 1", intval($channel_id));
+ if(! $r) {
+ logger('channel_remove: channel not found: ' . $channel_id);
+ return;
+ }
+
+ $channel = $r[0];
+
+ call_hooks('channel_remove',$r[0]);
+
+ if(! $local) {
+
+ $r = q("update channel set channel_deleted = '%s', channel_removed = 1, channel_r_stream = 0, channel_r_profile = 0,
+ channel_r_photos = 0, channel_r_abook = 0, channel_w_stream = 0, channel_w_wall = 0, channel_w_tagwall = 0,
+ channel_w_comment = 0, channel_w_mail = 0, channel_w_photos = 0, channel_w_chat = 0, channel_a_delegate = 0,
+ channel_r_storage = 0, channel_w_storage = 0, channel_r_pages = 0, channel_w_pages = 0, channel_a_republish = 0
+ where channel_id = %d",
+ dbesc(datetime_convert()),
+ intval($channel_id)
+ );
+
+ logger('deleting hublocs',LOGGER_DEBUG);
+
+ $r = q("update hubloc set hubloc_deleted = 1 where hubloc_hash = '%s'",
+ dbesc($channel['channel_hash'])
+ );
+
+
+ $r = q("update xchan set xchan_deleted = 1 where xchan_hash = '%s'",
+ dbesc($channel['channel_hash'])
+ );
+
+ Zotlabs\Daemon\Master::Summon(array('Notifier','purge_all',$channel_id));
+ }
+
+ q("DELETE FROM `groups` WHERE `uid` = %d", intval($channel_id));
+ q("DELETE FROM `group_member` WHERE `uid` = %d", intval($channel_id));
+ q("DELETE FROM `event` WHERE `uid` = %d", intval($channel_id));
+ q("DELETE FROM `item` WHERE `uid` = %d", intval($channel_id));
+ q("DELETE FROM `item_id` WHERE `uid` = %d", intval($channel_id));
+ q("DELETE FROM `mail` WHERE `channel_id` = %d", intval($channel_id));
+ q("DELETE FROM `notify` WHERE `uid` = %d", intval($channel_id));
+ q("DELETE FROM `photo` WHERE `uid` = %d", intval($channel_id));
+ q("DELETE FROM `attach` WHERE `uid` = %d", intval($channel_id));
+ q("DELETE FROM `profile` WHERE `uid` = %d", intval($channel_id));
+ q("DELETE FROM `pconfig` WHERE `uid` = %d", intval($channel_id));
+ q("DELETE FROM `spam` WHERE `uid` = %d", intval($channel_id));
+
+ // @FIXME At this stage we need to remove the file resources located under /store/$nickname
+
+
+ q("delete from abook where abook_xchan = '%s' and abook_self = 1 ",
+ dbesc($channel['channel_hash'])
+ );
+
+ $r = q("update channel set channel_deleted = '%s', channel_removed = 1 where channel_id = %d",
+ dbesc(datetime_convert()),
+ intval($channel_id)
+ );
+
+ // if this was the default channel, set another one as default
+ if(App::$account['account_default_channel'] == $channel_id) {
+ $r = q("select channel_id from channel where channel_account_id = %d and channel_removed = 0 limit 1",
+ intval(App::$account['account_id']),
+ intval(PAGE_REMOVED));
+ if ($r) {
+ $rr = q("update account set account_default_channel = %d where account_id = %d",
+ intval($r[0]['channel_id']),
+ intval(App::$account['account_id']));
+ logger("Default channel deleted, changing default to channel_id " . $r[0]['channel_id']);
+ }
+ else {
+ $rr = q("update account set account_default_channel = 0 where account_id = %d",
+ intval(App::$account['account_id'])
+ );
+ }
+ }
+
+ logger('deleting hublocs',LOGGER_DEBUG);
+
+ $r = q("update hubloc set hubloc_deleted = 1 where hubloc_hash = '%s' and hubloc_url = '%s' ",
+ dbesc($channel['channel_hash']),
+ dbesc(z_root())
+ );
+
+ // Do we have any valid hublocs remaining?
+
+ $hublocs = 0;
+
+ $r = q("select hubloc_id from hubloc where hubloc_hash = '%s' and hubloc_deleted = 0",
+ dbesc($channel['channel_hash'])
+ );
+ if($r)
+ $hublocs = count($r);
+
+ if(! $hublocs) {
+ $r = q("update xchan set xchan_deleted = 1 where xchan_hash = '%s' ",
+ dbesc($channel['channel_hash'])
+ );
+ }
+
+ //remove from file system
+ $r = q("select channel_address from channel where channel_id = %d limit 1",
+ intval($channel_id)
+ );
+ if($r)
+ $channel_address = $r[0]['channel_address'] ;
+ if ($channel_address !== '') {
+ $f = 'store/' . $channel_address.'/';
+ logger ('delete '. $f);
+ if(is_dir($f))
+ @rrmdir($f);
+ }
+
+ Zotlabs\Daemon\Master::Summon(array('Directory',$channel_id));
+
+ if($channel_id == local_channel() && $unset_session) {
+ App::$session->nuke();
+ goaway(z_root());
+ }
+
+}
+
+/**
+ * mark any hubs "offline" that haven't been heard from in more than 30 days
+ * Allow them to redeem themselves if they come back later.
+ * Then go through all those that are newly marked and see if any other hubs
+ * are attached to the controlling xchan that are still alive.
+ * If not, they're dead (although they could come back some day).
+ */
+
+
+function mark_orphan_hubsxchans() {
+
+ $dirmode = intval(get_config('system','directory_mode'));
+ if($dirmode == DIRECTORY_MODE_NORMAL)
+ return;
+
+ $r = q("update hubloc set hubloc_error = 1 where hubloc_error = 0
+ and hubloc_network = 'zot' and hubloc_connected < %s - interval %s",
+ db_utcnow(), db_quoteinterval('36 day')
+ );
+
+// $realm = get_directory_realm();
+// if($realm == DIRECTORY_REALM) {
+// $r = q("select * from site where site_access != 0 and site_register !=0 and ( site_realm = '%s' or site_realm = '') order by rand()",
+// dbesc($realm)
+// );
+// }
+// else {
+// $r = q("select * from site where site_access != 0 and site_register !=0 and site_realm = '%s' order by rand()",
+// dbesc($realm)
+// );
+// }
+
+
+ $r = q("select hubloc_id, hubloc_hash from hubloc where hubloc_error = 0 and hubloc_orphancheck = 0");
+
+ if($r) {
+ foreach($r as $rr) {
+
+ // see if any other hublocs are still alive for this channel
+
+ $x = q("select * from hubloc where hubloc_hash = '%s' and hubloc_error = 0",
+ dbesc($rr['hubloc_hash'])
+ );
+ if($x) {
+
+ // yes - if the xchan was marked as an orphan, undo it
+
+ $y = q("update xchan set xchan_orphan = 0 where xchan_orphan = 1 and xchan_hash = '%s'",
+ dbesc($rr['hubloc_hash'])
+ );
+
+ }
+ else {
+
+ // nope - mark the xchan as an orphan
+
+ $y = q("update xchan set xchan_orphan = 1 where xchan_hash = '%s'",
+ dbesc($rr['hubloc_hash'])
+ );
+ }
+
+ // mark that we've checked this entry so we don't need to do it again
+
+ $y = q("update hubloc set hubloc_orphancheck = 1 where hubloc_id = %d",
+ dbesc($rr['hubloc_id'])
+ );
+ }
+ }
+
+}
+
+
+
+
+function remove_all_xchan_resources($xchan, $channel_id = 0) {
+
+ if(intval($channel_id)) {
+
+
+
+ }
+ else {
+
+ $dirmode = intval(get_config('system','directory_mode'));
+
+
+ $r = q("delete from photo where xchan = '%s'",
+ dbesc($xchan)
+ );
+ $r = q("select resource_id, resource_type, uid, id from item where ( author_xchan = '%s' or owner_xchan = '%s' ) ",
+ dbesc($xchan),
+ dbesc($xchan)
+ );
+ if($r) {
+ foreach($r as $rr) {
+ drop_item($rr,false);
+ }
+ }
+ $r = q("delete from event where event_xchan = '%s'",
+ dbesc($xchan)
+ );
+ $r = q("delete from group_member where xchan = '%s'",
+ dbesc($xchan)
+ );
+ $r = q("delete from mail where ( from_xchan = '%s' or to_xchan = '%s' )",
+ dbesc($xchan),
+ dbesc($xchan)
+ );
+ $r = q("delete from xlink where ( xlink_xchan = '%s' or xlink_link = '%s' )",
+ dbesc($xchan),
+ dbesc($xchan)
+ );
+
+ $r = q("delete from abook where abook_xchan = '%s'",
+ dbesc($xchan)
+ );
+
+
+ if($dirmode === false || $dirmode == DIRECTORY_MODE_NORMAL) {
+
+ $r = q("delete from xchan where xchan_hash = '%s'",
+ dbesc($xchan)
+ );
+ $r = q("delete from hubloc where hubloc_hash = '%s'",
+ dbesc($xchan)
+ );
+
+ }
+ else {
+
+ // directory servers need to keep the record around for sync purposes - mark it deleted
+
+ $r = q("update hubloc set hubloc_deleted = 1 where hubloc_hash = '%s'",
+ dbesc($xchan)
+ );
+
+ $r = q("update xchan set xchan_deleted = 1 where xchan_hash = '%s'",
+ dbesc($xchan)
+ );
+ }
+ }
+}
+
+
+function contact_remove($channel_id, $abook_id) {
+
+ if((! $channel_id) || (! $abook_id))
+ return false;
+
+ logger('removing contact ' . $abook_id . ' for channel ' . $channel_id,LOGGER_DEBUG);
+
+ $archive = get_pconfig($channel_id, 'system','archive_removed_contacts');
+ if($archive) {
+ q("update abook set abook_archived = 1 where abook_id = %d and abook_channel = %d",
+ intval($abook_id),
+ intval($channel_id)
+ );
+ return true;
+ }
+
+ $r = q("select * from abook where abook_id = %d and abook_channel = %d limit 1",
+ intval($abook_id),
+ intval($channel_id)
+ );
+
+ if(! $r)
+ return false;
+
+ $abook = $r[0];
+
+ if(intval($abook['abook_self']))
+ return false;
+
+
+ $r = q("select * from item where author_xchan = '%s' and uid = %d",
+ dbesc($abook['abook_xchan']),
+ intval($channel_id)
+ );
+ if($r) {
+ foreach($r as $rr) {
+ drop_item($rr['id'],false);
+ }
+ }
+
+ q("delete from abook where abook_id = %d and abook_channel = %d",
+ intval($abook['abook_id']),
+ intval($channel_id)
+ );
+
+ $r = q("delete from event where event_xchan = '%s' and uid = %d",
+ dbesc($abook['abook_xchan']),
+ intval($channel_id)
+ );
+
+ $r = q("delete from group_member where xchan = '%s' and uid = %d",
+ dbesc($abook['abook_xchan']),
+ intval($channel_id)
+ );
+
+ $r = q("delete from mail where ( from_xchan = '%s' or to_xchan = '%s' ) and channel_id = %d ",
+ dbesc($abook['abook_xchan']),
+ dbesc($abook['abook_xchan']),
+ intval($channel_id)
+ );
+
+ return true;
+}
+
+
+
+function random_profile() {
+ $randfunc = db_getfunc('rand');
+
+ $checkrandom = get_config('randprofile','check'); // False by default
+ $retryrandom = intval(get_config('randprofile','retry'));
+ if($retryrandom == 0) $retryrandom = 5;
+
+ for($i = 0; $i < $retryrandom; $i++) {
+
+ $r = q("select xchan_url from xchan left join hubloc on hubloc_hash = xchan_hash where xchan_addr not like '%s' and hubloc_connected > %s - interval %s order by $randfunc limit 1",
+ dbesc('sys@%'),
+ db_utcnow(), db_quoteinterval('30 day')
+ );
+
+ if(!$r) return ''; // Couldn't get a random channel
+
+ if($checkrandom) {
+ $x = z_fetch_url($r[0]['xchan_url']);
+ if($x['success'])
+ return $r[0]['xchan_url'];
+ else
+ logger('Random channel turned out to be bad.');
+ }
+ else {
+ return $r[0]['xchan_url'];
+ }
+
+ }
+ return '';
+}
+
diff --git a/include/contact_selectors.php b/include/contact_selectors.php
deleted file mode 100644
index 0de4ece00..000000000
--- a/include/contact_selectors.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php /** @file */
-
-
-function contact_profile_assign($current) {
-
- $o = '';
-
- $o .= "<select id=\"contact-profile-selector\" name=\"profile_assign\" class=\"form-control\"/>\r\n";
-
- $r = q("SELECT profile_guid, profile_name FROM `profile` WHERE `uid` = %d",
- intval($_SESSION['uid']));
-
- if($r) {
- foreach($r as $rr) {
- $selected = (($rr['profile_guid'] == $current) ? " selected=\"selected\" " : "");
- $o .= "<option value=\"{$rr['profile_guid']}\" $selected >{$rr['profile_name']}</option>\r\n";
- }
- }
- $o .= "</select>\r\n";
- return $o;
-}
-
-/* unused currently
-
-function contact_reputation($current) {
-
- $o = '';
- $o .= "<select id=\"contact-reputation-selector\" name=\"reputation\" />\r\n";
-
- $rep = array(
- 0 => t('Unknown | Not categorized'),
- 1 => t('Block immediately'),
- 2 => t('Shady, spammer, self-marketer'),
- 3 => t('Known to me, but no opinion'),
- 4 => t('OK, probably harmless'),
- 5 => t('Reputable, has my trust')
- );
-
- foreach($rep as $k => $v) {
- $selected = (($k == $current) ? " selected=\"selected\" " : "");
- $o .= "<option value=\"$k\" $selected >$v</option>\r\n";
- }
- $o .= "</select>\r\n";
- return $o;
-}
-
-*/
-
-function contact_poll_interval($current, $disabled = false) {
-
- $dis = (($disabled) ? ' disabled="disabled" ' : '');
- $o = '';
- $o .= "<select id=\"contact-poll-interval\" name=\"poll\" $dis />" . "\r\n";
-
- $rep = array(
- 0 => t('Frequently'),
- 1 => t('Hourly'),
- 2 => t('Twice daily'),
- 3 => t('Daily'),
- 4 => t('Weekly'),
- 5 => t('Monthly')
- );
-
- foreach($rep as $k => $v) {
- $selected = (($k == $current) ? " selected=\"selected\" " : "");
- $o .= "<option value=\"$k\" $selected >$v</option>\r\n";
- }
- $o .= "</select>\r\n";
- return $o;
-}
-
-
-function network_to_name($s) {
-
- $nets = array(
- NETWORK_DFRN => t('Friendica'),
- NETWORK_FRND => t('Friendica'),
- NETWORK_OSTATUS => t('OStatus'),
- NETWORK_GNUSOCIAL => t('GNU-Social'),
- NETWORK_FEED => t('RSS/Atom'),
- NETWORK_MAIL => t('Email'),
- NETWORK_DIASPORA => t('Diaspora'),
- NETWORK_FACEBOOK => t('Facebook'),
- NETWORK_ZOT => t('Zot'),
- NETWORK_LINKEDIN => t('LinkedIn'),
- NETWORK_XMPP => t('XMPP/IM'),
- NETWORK_MYSPACE => t('MySpace'),
- );
-
- call_hooks('network_to_name', $nets);
-
- $search = array_keys($nets);
- $replace = array_values($nets);
-
- return str_replace($search,$replace,$s);
-
-}
diff --git a/include/contact_widgets.php b/include/contact_widgets.php
index e62d57aa2..85c46b0d1 100644
--- a/include/contact_widgets.php
+++ b/include/contact_widgets.php
@@ -3,9 +3,6 @@
function findpeople_widget() {
- require_once('include/Contact.php');
-
- $a = get_app();
if(get_config('system','invitation_only')) {
$x = get_pconfig(local_channel(),'system','invites_remaining');
@@ -37,13 +34,12 @@ function findpeople_widget() {
function fileas_widget($baseurl,$selected = '') {
- $a = get_app();
if(! local_channel())
return '';
$terms = array();
- $r = q("select distinct(term) from term where uid = %d and type = %d order by term asc",
+ $r = q("select distinct(term) from term where uid = %d and ttype = %d order by term asc",
intval(local_channel()),
intval(TERM_FILE)
);
@@ -65,8 +61,6 @@ function fileas_widget($baseurl,$selected = '') {
}
function categories_widget($baseurl,$selected = '') {
-
- $a = get_app();
if(! feature_enabled(App::$profile['profile_uid'],'categories'))
return '';
@@ -78,7 +72,7 @@ function categories_widget($baseurl,$selected = '') {
from term join item on term.oid = item.id
where item.uid = %d
and term.uid = item.uid
- and term.type = %d
+ and term.ttype = %d
and term.otype = %d
and item.owner_xchan = '%s'
and item.item_wall = 1
@@ -108,8 +102,6 @@ function categories_widget($baseurl,$selected = '') {
function common_friends_visitor_widget($profile_uid) {
- $a = get_app();
-
if(local_channel() == $profile_uid)
return;
diff --git a/include/conversation.php b/include/conversation.php
index 8be0557e7..518193b08 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -93,15 +93,15 @@ function localize_item(&$item){
if (activity_match($item['verb'],ACTIVITY_LIKE) || activity_match($item['verb'],ACTIVITY_DISLIKE)){
- if(! $item['object'])
+ if(! $item['obj'])
return;
if(intval($item['item_thread_top']))
return;
- $obj = json_decode_plus($item['object']);
- if((! $obj) && ($item['object'])) {
- logger('localize_item: failed to decode object: ' . print_r($item['object'],true));
+ $obj = json_decode_plus($item['obj']);
+ if((! $obj) && ($item['obj'])) {
+ logger('localize_item: failed to decode object: ' . print_r($item['obj'],true));
}
if($obj['author'] && $obj['author']['link'])
@@ -186,7 +186,7 @@ function localize_item(&$item){
$Alink = $item['author']['xchan_url'];
- $obj= json_decode_plus($item['object']);
+ $obj= json_decode_plus($item['obj']);
$Blink = $Bphoto = '';
@@ -219,7 +219,7 @@ function localize_item(&$item){
$Aname = $item['author']['xchan_name'];
$Alink = $item['author']['xchan_url'];
- $obj= json_decode_plus($item['object']);
+ $obj= json_decode_plus($item['obj']);
$Blink = $Bphoto = '';
@@ -299,7 +299,7 @@ function localize_item(&$item){
}
$plink = '[zrl=' . $obj['plink'] . ']' . $post_type . '[/zrl]';
- $parsedobj = parse_xml_string($xmlhead.$item['object']);
+ $parsedobj = parse_xml_string($xmlhead.$item['obj']);
$tag = sprintf('#[zrl=%s]%s[/zrl]', $parsedobj->id, $parsedobj->content);
$item['body'] = sprintf( t('%1$s tagged %2$s\'s %3$s with %4$s'), $author, $objauthor, $plink, $tag );
@@ -316,7 +316,7 @@ function localize_item(&$item){
$xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
- $obj = parse_xml_string($xmlhead.$item['object']);
+ $obj = parse_xml_string($xmlhead.$item['obj']);
if(strlen($obj->id)) {
$r = q("select * from item where mid = '%s' and uid = %d limit 1",
dbesc($obj->id),
@@ -754,10 +754,7 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
// Normal View
// logger('conv: items: ' . print_r($items,true));
- require_once('include/ConversationObject.php');
- require_once('include/ItemObject.php');
-
- $conv = new Conversation($mode, $preview, $prepared_item);
+ $conv = new Zotlabs\Lib\ThreadStream($mode, $preview, $prepared_item);
// In the display mode we don't have a profile owner.
@@ -806,7 +803,7 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
if($item['id'] == $item['parent']) {
- $item_object = new Item($item);
+ $item_object = new Zotlabs\Lib\ThreadItem($item);
$conv->add_thread($item_object);
if($page_mode === 'list') {
$item_object->set_template('conv_list.tpl');
@@ -861,8 +858,6 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
function best_link_url($item) {
- $a = get_app();
-
$best_url = '';
$sparkle = false;
@@ -891,7 +886,7 @@ function best_link_url($item) {
function item_photo_menu($item){
- $a = get_app();
+
$contact = null;
$ssl_state = false;
@@ -1110,7 +1105,6 @@ function status_editor($a, $x, $popup = false) {
$o = '';
- require_once('include/Contact.php');
$c = channelx_by_n($x['profile_uid']);
if($c && $c['channel_moved'])
return $o;
@@ -1163,7 +1157,7 @@ function status_editor($a, $x, $popup = false) {
$layoutselect = '<input type="hidden" name="layout_mid" value="' . $layout . '" />';
if(array_key_exists('channel_select',$x) && $x['channel_select']) {
- require_once('include/identity.php');
+ require_once('include/channel.php');
$id_select = identity_selector();
}
else
@@ -1412,7 +1406,7 @@ function render_location_default($item) {
function prepare_page($item) {
- $a = get_app();
+
$naked = 1;
// $naked = ((get_pconfig($item['uid'],'system','nakedpage')) ? 1 : 0);
$observer = App::get_observer();
@@ -1446,7 +1440,7 @@ function prepare_page($item) {
function network_tabs() {
- $a = get_app();
+
$no_active='';
$starred_active = '';
$new_active = '';
@@ -1662,8 +1656,7 @@ function profile_tabs($a, $is_owner = false, $nickname = null){
if ($p['chat'] && feature_enabled($uid,'ajaxchat')) {
- require_once('include/chat.php');
- $has_chats = chatroom_list_count($uid);
+ $has_chats = Zotlabs\Lib\Chatroom::list_count($uid);
if ($has_chats) {
$tabs[] = array(
'label' => t('Chatrooms'),
diff --git a/include/cronhooks.php b/include/cronhooks.php
deleted file mode 100644
index a314593d2..000000000
--- a/include/cronhooks.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php /** @file */
-
-require_once('boot.php');
-require_once('include/cli_startup.php');
-
-
-function cronhooks_run($argv, $argc){
-
- cli_startup();
-
- logger('cronhooks: start');
-
- $d = datetime_convert();
-
- call_hooks('cron', $d);
-
- return;
-}
-
-if (array_search(__file__,get_included_files())===0){
- cronhooks_run($argv,$argc);
- killme();
-}
diff --git a/include/crypto.php b/include/crypto.php
index d636c6848..bc798d919 100644
--- a/include/crypto.php
+++ b/include/crypto.php
@@ -46,27 +46,15 @@ function pkcs5_unpad($text)
}
function AES256CBC_encrypt($data,$key,$iv) {
- if(get_config('system','openssl_encrypt')) {
- return openssl_encrypt($data,'aes-256-cbc',str_pad($key,32,"\0"),OPENSSL_RAW_DATA,str_pad($iv,16,"\0"));
- }
- return mcrypt_encrypt(
- MCRYPT_RIJNDAEL_128,
- str_pad($key,32,"\0"),
- pkcs5_pad($data,16),
- MCRYPT_MODE_CBC,
- str_pad($iv,16,"\0"));
+
+ return openssl_encrypt($data,'aes-256-cbc',str_pad($key,32,"\0"),OPENSSL_RAW_DATA,str_pad($iv,16,"\0"));
+
}
function AES256CBC_decrypt($data,$key,$iv) {
- if(get_config('system','openssl_encrypt')) {
- return openssl_decrypt($data,'aes-256-cbc',str_pad($key,32,"\0"),OPENSSL_RAW_DATA,str_pad($iv,16,"\0"));
- }
- return pkcs5_unpad(mcrypt_decrypt(
- MCRYPT_RIJNDAEL_128,
- str_pad($key,32,"\0"),
- $data,
- MCRYPT_MODE_CBC,
- str_pad($iv,16,"\0")));
+
+ return openssl_decrypt($data,'aes-256-cbc',str_pad($key,32,"\0"),OPENSSL_RAW_DATA,str_pad($iv,16,"\0"));
+
}
function crypto_encapsulate($data,$pubkey,$alg='aes256cbc') {
diff --git a/include/datetime.php b/include/datetime.php
index e756df6b4..600ad6ec4 100644
--- a/include/datetime.php
+++ b/include/datetime.php
@@ -119,7 +119,6 @@ function datetime_convert($from = 'UTC', $to = 'UTC', $s = 'now', $fmt = "Y-m-d
* @return string
*/
function dob($dob) {
- $a = get_app();
list($year, $month, $day) = sscanf($dob, '%4d-%2d-%2d');
$f = get_config('system', 'birthday_input_format');
diff --git a/include/dba/dba_driver.php b/include/dba/dba_driver.php
index 8e205a4aa..df072ed76 100755
--- a/include/dba/dba_driver.php
+++ b/include/dba/dba_driver.php
@@ -1,50 +1,78 @@
<?php
-/**
- * @file dba_driver.php
- * @brief some database related functions and abstract driver class.
- *
- * This file contains the abstract database driver class dba_driver and some
- * functions for working with databases.
- */
-/**
- * @brief Returns the database driver object.
- *
- * If available it will use PHP's mysqli otherwise mysql driver.
- *
- * @param string $server DB server name
- * @param string $port DB port
- * @param string $user DB username
- * @param string $pass DB password
- * @param string $db database name
- * @param string $dbtype 0 for mysql, 1 for postgres
- * @param bool $install Defaults to false
- * @return null|dba_driver A database driver object (dba_mysql|dba_mysqli) or null if no driver found.
- */
-function dba_factory($server, $port,$user,$pass,$db,$dbtype,$install = false) {
- $dba = null;
-
- $dbtype = intval($dbtype);
-
- if($dbtype == DBTYPE_POSTGRES) {
- require_once('include/dba/dba_postgres.php');
- if(is_null($port)) $port = 5432;
- $dba = new dba_postgres($server, $port, $user, $pass, $db, $install);
- } else {
- if(class_exists('mysqli')) {
- if (is_null($port)) $port = ini_get("mysqli.default_port");
- require_once('include/dba/dba_mysqli.php');
- $dba = new dba_mysqli($server, $port,$user,$pass,$db,$install);
- } else {
- if (is_null($port)) $port = "3306";
- require_once('include/dba/dba_mysql.php');
- $dba = new dba_mysql($server, $port,$user,$pass,$db,$install);
+class DBA {
+
+ /**
+ * @file dba_driver.php
+ * @brief some database related functions and abstract driver class.
+ *
+ * This file contains the abstract database driver class dba_driver and some
+ * functions for working with databases.
+ */
+
+ static public $dba = null;
+ static public $dbtype = null;
+ static public $logging = false;
+
+ /**
+ * @brief Returns the database driver object.
+ *
+ * If available it will use PHP's mysqli otherwise mysql driver.
+ *
+ * @param string $server DB server name
+ * @param string $port DB port
+ * @param string $user DB username
+ * @param string $pass DB password
+ * @param string $db database name
+ * @param string $dbtype 0 for mysql, 1 for postgres
+ * @param bool $install Defaults to false
+ * @return null|dba_driver A database driver object (dba_mysql|dba_mysqli) or null if no driver found.
+ */
+
+ static public function dba_factory($server, $port,$user,$pass,$db,$dbtype,$install = false) {
+
+ self::$dba = null;
+
+ self::$dbtype = intval($dbtype);
+ $set_port = $port;
+
+ if(self::$dbtype == DBTYPE_POSTGRES) {
+ require_once('include/dba/dba_postgres.php');
+ if(is_null($port)) $set_port = 5432;
+ self::$dba = new dba_postgres($server, $set_port, $user, $pass, $db, $install);
}
+ else {
+
+// Highly experimental at the present time.
+// require_once('include/dba/dba_pdo.php');
+// self::$dba = new dba_pdo($server, $set_port,$user,$pass,$db,$install);
+// }
+
+ if(class_exists('mysqli')) {
+ if (is_null($port)) $set_port = ini_get("mysqli.default_port");
+ require_once('include/dba/dba_mysqli.php');
+ self::$dba = new dba_mysqli($server, $set_port,$user,$pass,$db,$install);
+ }
+ }
+
+ // Until we have a proper PDO driver, store the DB connection parameters for
+ // plugins/addons which use PDO natively (such as cdav). This is wasteful as
+ // it opens a separate connection to the DB, but saves a lot of effort re-writing
+ // third-party interfaces that are working and well tested.
+
+
+ if(is_object(self::$dba) && self::$dba->connected) {
+ $dns = ((self::$dbtype == DBTYPE_POSTGRES) ? 'postgres' : 'mysql')
+ . ':host=' . $server . (is_null($port) ? '' : ';port=' . $port)
+ . ';dbname=' . $db;
+ self::$dba->pdo_set(array($dns,$user,$pass));
+ }
+
+ define('NULL_DATE', self::$dba->get_null_date());
+ define('ACTIVE_DBTYPE', self::$dbtype);
+ return self::$dba;
}
- define('NULL_DATE', $dba->get_null_date());
- define('ACTIVE_DBTYPE', $dbtype);
- return $dba;
}
/**
@@ -60,6 +88,7 @@ abstract class dba_driver {
const UTC_NOW = 'UTC_TIMESTAMP()';
protected $db;
+ protected $pdo = array();
public $debug = 0;
public $connected = false;
@@ -183,6 +212,15 @@ abstract class dba_driver {
function unescapebin($str) {
return $str;
}
+
+ function pdo_set($x) {
+ $this->pdo = $x;
+ }
+
+ function pdo_get() {
+ return $this->pdo;
+ }
+
} // end abstract dba_driver class
@@ -206,8 +244,8 @@ function printable($s) {
function dbg($state) {
global $db;
- if($db)
- $db->dbg($state);
+ if(\DBA::$dba)
+ \DBA::$dba->dbg($state);
}
/**
@@ -221,21 +259,18 @@ function dbg($state) {
* @return Return an escaped string of the value to pass to a DB query.
*/
function dbesc($str) {
- global $db;
- if($db && $db->connected)
- return($db->escape($str));
+ if(\DBA::$dba && \DBA::$dba->connected)
+ return(\DBA::$dba->escape($str));
else
return(str_replace("'", "\\'", $str));
}
function dbescbin($str) {
- global $db;
- return $db->escapebin($str);
+ return \DBA::$dba->escapebin($str);
}
function dbunescbin($str) {
- global $db;
- return $db->unescapebin($str);
+ return \DBA::$dba->unescapebin($str);
}
function dbescdate($date) {
@@ -248,36 +283,25 @@ function dbescdate($date) {
}
function db_quoteinterval($txt) {
- global $db;
- return $db->quote_interval($txt);
+ return \DBA::$dba->quote_interval($txt);
}
function dbesc_identifier($str) {
- global $db;
- return $db->escape_identifier($str);
+ return \DBA::$dba->escape_identifier($str);
}
function db_utcnow() {
- global $db;
- return $db->utcnow();
+ return \DBA::$dba->utcnow();
}
function db_optimizetable($table) {
- global $db;
- $db->optimize_table($table);
+ \DBA::$dba->optimize_table($table);
}
function db_concat($fld, $sep) {
- global $db;
- return $db->concat($fld, $sep);
+ return \DBA::$dba->concat($fld, $sep);
}
-// Function: q($sql,$args);
-// Description: execute SQL query with printf style args.
-// Example: $r = q("SELECT * FROM `%s` WHERE `uid` = %d",
-// 'user', 1);
-
-
/**
* @brief Execute a SQL query with printf style args.
*
@@ -293,13 +317,13 @@ function db_concat($fld, $sep) {
* @param string $sql The SQL query to execute
* @return bool|array
*/
+
function q($sql) {
- global $db;
$args = func_get_args();
unset($args[0]);
- if($db && $db->connected) {
+ if(\DBA::$dba && \DBA::$dba->connected) {
$stmt = vsprintf($sql, $args);
if($stmt === false) {
if(version_compare(PHP_VERSION, '5.4.0') >= 0)
@@ -308,13 +332,14 @@ function q($sql) {
else
db_logger('dba: vsprintf error: ' . print_r(debug_backtrace(), true),LOGGER_NORMAL,LOG_CRIT);
}
- return $db->q($stmt);
+ return \DBA::$dba->q($stmt);
}
/*
* This will happen occasionally trying to store the
* session data after abnormal program termination
*/
+
db_logger('dba: no database: ' . print_r($args,true),LOGGER_NORMAL,LOG_CRIT);
return false;
@@ -328,10 +353,9 @@ function q($sql) {
* @param string $sql The SQL query to execute
*/
function dbq($sql) {
- global $db;
- if($db && $db->connected)
- $ret = $db->q($sql);
+ if(\DBA::$dba && \DBA::$dba->connected)
+ $ret = \DBA::$dba->q($sql);
else
$ret = false;
@@ -392,13 +416,18 @@ function db_getfunc($f) {
// The logger function may make DB calls internally to query the system logging parameters.
// This can cause a recursion if database debugging is enabled.
-// So this function preserves the current database debugging state and then turns it off while
-// doing the logger() call
+// So this function preserves the current database debugging state and then turns it off
+// temporarily while doing the logger() call
function db_logger($s,$level = LOGGER_NORMAL,$syslog = LOG_INFO) {
- global $db;
- $saved = $db->debug;
- $db->debug = false;
+
+ if(\DBA::$logging)
+ return;
+
+ $saved = \DBA::$dba->debug;
+ \DBA::$dba->debug = false;
+ \DBA::$logging = true;
logger($s,$level,$syslog);
- $db->debug = $saved;
+ \DBA::$logging = false;
+ \DBA::$dba->debug = $saved;
} \ No newline at end of file
diff --git a/include/dba/dba_pdo.php b/include/dba/dba_pdo.php
new file mode 100755
index 000000000..7255a2b66
--- /dev/null
+++ b/include/dba/dba_pdo.php
@@ -0,0 +1,95 @@
+<?php /** @file */
+
+require_once('include/dba/dba_driver.php');
+
+class dba_pdo extends dba_driver {
+
+
+ public $driver_dbtype = null;
+
+ function connect($server,$port,$user,$pass,$db) {
+
+ $this->driver_dbtype = 'mysql'; // (($dbtype == DBTYPE_POSTGRES) ? 'postgres' : 'mysql');
+ $dns = $this->driver_dbtype
+ . ':host=' . $server . (is_null($port) ? '' : ';port=' . $port)
+ . ';dbname=' . $db;
+
+
+ try {
+ $this->db = new PDO($dns,$user,$pass);
+ $this->db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
+ }
+ catch(PDOException $e) {
+ if(file_exists('dbfail.out')) {
+ file_put_contents('dbfail.out', datetime_convert() . "\nConnect: " . $e->getMessage() . "\n", FILE_APPEND);
+ }
+
+ return false;
+ }
+
+ $this->connected = true;
+ return true;
+
+ }
+
+ function q($sql) {
+ if((! $this->db) || (! $this->connected))
+ return false;
+
+ $this->error = '';
+ $select = ((stripos($sql,'select') === 0) ? true : false);
+
+ try {
+ $result = $this->db->query($sql);
+ }
+ catch(PDOException $e) {
+
+ $this->error = $e->getMessage();
+ if($this->error) {
+ db_logger('dba_mysqli: ERROR: ' . printable($sql) . "\n" . $this->error, LOGGER_NORMAL, LOG_ERR);
+ if(file_exists('dbfail.out')) {
+ file_put_contents('dbfail.out', datetime_convert() . "\n" . printable($sql) . "\n" . $this->error . "\n", FILE_APPEND);
+ }
+ }
+ }
+
+ if(!($select)) {
+ if($this->debug) {
+ db_logger('dba_mysqli: DEBUG: ' . printable($sql) . ' returns ' . (($result) ? 'true' : 'false'), LOGGER_NORMAL,(($result) ? LOG_INFO : LOG_ERR));
+ }
+ return $result;
+ }
+
+ if($this->debug) {
+ db_logger('dba_mysqli: DEBUG: ' . printable($sql) . ' returned ' . count($result) . ' results.', LOGGER_NORMAL, LOG_INFO);
+ }
+
+ $r = array();
+ if($result) {
+ foreach($result as $x) {
+ $r[] = $x;
+ }
+ if($this->debug) {
+ db_logger('dba_pdo: ' . printable(print_r($r,true)), LOGGER_NORMAL, LOG_INFO);
+ }
+ }
+ return $r;
+ }
+
+ function escape($str) {
+ if($this->db && $this->connected) {
+ return substr(substr(@$this->db->quote($str),1),0,-1);
+ }
+ }
+
+ function close() {
+ if($this->db)
+ $this->db = null;
+ $this->connected = false;
+ }
+
+ function getdriver() {
+ return 'pdo';
+ }
+
+} \ No newline at end of file
diff --git a/include/deliver.php b/include/deliver.php
deleted file mode 100644
index 40df543d5..000000000
--- a/include/deliver.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php /** @file */
-
-require_once('include/cli_startup.php');
-require_once('include/zot.php');
-require_once('include/queue_fn.php');
-
-
-function deliver_run($argv, $argc) {
-
- cli_startup();
-
- $a = get_app();
-
- if($argc < 2)
- return;
-
- logger('deliver: invoked: ' . print_r($argv,true), LOGGER_DATA);
-
- for($x = 1; $x < $argc; $x ++) {
-
- $dresult = null;
- $r = q("select * from outq where outq_hash = '%s' limit 1",
- dbesc($argv[$x])
- );
- if($r) {
-
- $notify = json_decode($r[0]['outq_notify'],true);
-
- // Messages without an outq_msg will need to go via the web, even if it's a
- // local delivery. This includes conversation requests and refresh packets.
-
- if(($r[0]['outq_posturl'] === z_root() . '/post') && ($r[0]['outq_msg'])) {
- logger('deliver: local delivery', LOGGER_DEBUG);
-
- // local delivery
- // we should probably batch these and save a few delivery processes
-
- if($r[0]['outq_msg']) {
- $m = json_decode($r[0]['outq_msg'],true);
- if(array_key_exists('message_list',$m)) {
- foreach($m['message_list'] as $mm) {
- $msg = array('body' => json_encode(array('success' => true, 'pickup' => array(array('notify' => $notify,'message' => $mm)))));
- zot_import($msg,z_root());
- }
- }
- else {
- $msg = array('body' => json_encode(array('success' => true, 'pickup' => array(array('notify' => $notify,'message' => $m)))));
- $dresult = zot_import($msg,z_root());
- }
-
- remove_queue_item($r[0]['outq_hash']);
-
- if($dresult && is_array($dresult)) {
- foreach($dresult as $xx) {
- if(is_array($xx) && array_key_exists('message_id',$xx)) {
- if(delivery_report_is_storable($xx)) {
- q("insert into dreport ( dreport_mid, dreport_site, dreport_recip, dreport_result, dreport_time, dreport_xchan ) values ( '%s', '%s','%s','%s','%s','%s' ) ",
- dbesc($xx['message_id']),
- dbesc($xx['location']),
- dbesc($xx['recipient']),
- dbesc($xx['status']),
- dbesc(datetime_convert($xx['date'])),
- dbesc($xx['sender'])
- );
- }
- }
- }
- }
-
- q("delete from dreport where dreport_queue = '%s'",
- dbesc($argv[$x])
- );
- }
- }
-
- // otherwise it's a remote delivery - call queue_deliver() with the $immediate flag
-
- queue_deliver($r[0],true);
-
- }
- }
-}
-
-if (array_search(__file__,get_included_files())===0){
- deliver_run($argv,$argc);
- killme();
-}
diff --git a/include/deliver_hooks.php b/include/deliver_hooks.php
deleted file mode 100644
index f0d6ba1b1..000000000
--- a/include/deliver_hooks.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-
-require_once('include/cli_startup.php');
-require_once('include/zot.php');
-
-
-function deliver_hooks_run($argv, $argc) {
-
- cli_startup();
-
- $a = get_app();
-
- if($argc < 2)
- return;
-
-
- $r = q("select * from item where id = '%d'",
- intval($argv[1])
- );
- if($r)
- call_hooks('notifier_normal',$r[0]);
-
-}
-
-if (array_search(__file__,get_included_files())===0){
- deliver_hooks_run($argv,$argc);
- killme();
-}
diff --git a/include/dir_fns.php b/include/dir_fns.php
index 1c3149081..9f1be1a42 100644
--- a/include/dir_fns.php
+++ b/include/dir_fns.php
@@ -69,9 +69,8 @@ function check_upstream_directory() {
if ($directory) {
$h = parse_url($directory);
if ($h) {
- $x = zot_finger('[system]@' . $h['host']);
- if ($x['success']) {
- $j = json_decode($x['body'], true);
+ $j = Zotlabs\Zot\Finger::run('[system]@' . $h['host']);
+ if ($j['success']) {
if (array_key_exists('site', $j) && array_key_exists('directory_mode', $j['site'])) {
if ($j['site']['directory_mode'] === 'normal') {
$isadir = false;
@@ -95,6 +94,9 @@ function get_directory_setting($observer, $setting) {
if($ret === false)
$ret = get_config('directory', $setting);
+
+ // 'safemode' is the default if there is no observer or no established preference.
+
if($setting == 'safemode' && $ret === false)
$ret = 1;
diff --git a/include/directory.php b/include/directory.php
deleted file mode 100644
index 8792a15e1..000000000
--- a/include/directory.php
+++ /dev/null
@@ -1,113 +0,0 @@
-<?php
-/**
- * @file include/directory.php
- * @brief executes directory_run()
- */
-
-require_once('boot.php');
-require_once('include/zot.php');
-require_once('include/cli_startup.php');
-require_once('include/dir_fns.php');
-require_once('include/queue_fn.php');
-
-/**
- * @brief
- *
- * @param array $argv
- * @param array $argc
- */
-function directory_run($argv, $argc){
-
- cli_startup();
-
- if($argc < 2)
- return;
-
- $force = false;
- $pushall = true;
-
- if($argc > 2) {
- if($argv[2] === 'force')
- $force = true;
- if($argv[2] === 'nopush')
- $pushall = false;
- }
-
- logger('directory update', LOGGER_DEBUG);
-
- $dirmode = get_config('system','directory_mode');
- if($dirmode === false)
- $dirmode = DIRECTORY_MODE_NORMAL;
-
- $x = q("select * from channel where channel_id = %d limit 1",
- intval($argv[1])
- );
- if(! $x)
- return;
-
- $channel = $x[0];
-
- if($dirmode != DIRECTORY_MODE_NORMAL) {
-
- // this is an in-memory update and we don't need to send a network packet.
-
- local_dir_update($argv[1],$force);
-
- q("update channel set channel_dirdate = '%s' where channel_id = %d",
- dbesc(datetime_convert()),
- intval($channel['channel_id'])
- );
-
- // Now update all the connections
- if($pushall)
- proc_run('php','include/notifier.php','refresh_all',$channel['channel_id']);
-
- return;
- }
-
- // otherwise send the changes upstream
-
- $directory = find_upstream_directory($dirmode);
- $url = $directory['url'] . '/post';
-
- // ensure the upstream directory is updated
-
- $packet = zot_build_packet($channel,(($force) ? 'force_refresh' : 'refresh'));
- $z = zot_zot($url,$packet);
-
- // re-queue if unsuccessful
-
- if(! $z['success']) {
-
- /** @FIXME we aren't updating channel_dirdate if we have to queue
- * the directory packet. That means we'll try again on the next poll run.
- */
-
- $hash = random_string();
-
- queue_insert(array(
- 'hash' => $hash,
- 'account_id' => $channel['channel_account_id'],
- 'channel_id' => $channel['channel_id'],
- 'posturl' => $url,
- 'notify' => $packet,
- ));
-
- }
- else {
- q("update channel set channel_dirdate = '%s' where channel_id = %d",
- dbesc(datetime_convert()),
- intval($channel['channel_id'])
- );
- }
-
- // Now update all the connections
- if($pushall)
- proc_run('php','include/notifier.php','refresh_all',$channel['channel_id']);
-
-}
-
-if (array_search(__file__, get_included_files()) === 0) {
- directory_run($argv, $argc);
- killme();
-}
diff --git a/include/enotify.php b/include/enotify.php
deleted file mode 100644
index d87c5af11..000000000
--- a/include/enotify.php
+++ /dev/null
@@ -1,652 +0,0 @@
-<?php
-/**
- * @file include/enotify.php
- *
- * @brief File with functions and a class for email notifications.
- */
-
-/**
- * @brief
- *
- * @param array $params an assoziative array with:
- * * \e string \b from_xchan sender xchan hash
- * * \e string \b to_xchan recipient xchan hash
- * * \e array \b item an assoziative array
- * * \e int \b type one of the NOTIFY_* constants from boot.php
- * * \e string \b link
- * * \e string \b parent_mid
- * * \e string \b otype
- * * \e string \b verb
- * * \e string \b activity
- */
-function notification($params) {
-
- logger('notification: entry', LOGGER_DEBUG);
-
- // throw a small amount of entropy into the system to breakup duplicates arriving at the same precise instant.
- usleep(mt_rand(0, 10000));
-
- $a = get_app();
-
-
- if ($params['from_xchan']) {
- $x = q("select * from xchan where xchan_hash = '%s' limit 1",
- dbesc($params['from_xchan'])
- );
- }
- if ($params['to_xchan']) {
- $y = q("select channel.*, account.* from channel left join account on channel_account_id = account_id
- where channel_hash = '%s' and channel_removed = 0 limit 1",
- dbesc($params['to_xchan'])
- );
- }
- if ($x & $y) {
- $sender = $x[0];
- $recip = $y[0];
- } else {
- logger('notification: no sender or recipient.');
- logger('sender: ' . $params['from_xchan']);
- logger('recip: ' . $params['to_xchan']);
- return;
- }
-
- // from here on everything is in the recipients language
-
- push_lang($recip['account_language']); // should probably have a channel language
-
- $banner = t('$Projectname Notification');
- $product = t('$projectname'); // PLATFORM_NAME;
- $siteurl = z_root();
- $thanks = t('Thank You,');
- $sitename = get_config('system','sitename');
- $site_admin = sprintf( t('%s Administrator'), $sitename);
-
- $sender_name = $product;
- $hostname = App::get_hostname();
- if(strpos($hostname,':'))
- $hostname = substr($hostname,0,strpos($hostname,':'));
-
- // Do not translate 'noreply' as it must be a legal 7-bit email address
- $sender_email = 'noreply' . '@' . $hostname;
-
- $additional_mail_header = "";
-
- if (array_key_exists('item', $params)) {
- require_once('include/conversation.php');
- // if it's a normal item...
- if (array_key_exists('verb', $params['item'])) {
- // localize_item() alters the original item so make a copy first
- $i = $params['item'];
- logger('calling localize');
- localize_item($i);
- $title = $i['title'];
- $body = $i['body'];
- $private = (($i['item_private']) || intval($i['item_obscured']));
- }
- else {
- $title = $params['item']['title'];
- $body = $params['item']['body'];
- }
- } else {
- $title = $body = '';
- }
-
-
- // e.g. "your post", "David's photo", etc.
- $possess_desc = t('%s <!item_type!>');
-
- if ($params['type'] == NOTIFY_MAIL) {
- logger('notification: mail');
- $subject = sprintf( t('[Hubzilla:Notify] New mail received at %s'),$sitename);
-
- $preamble = sprintf( t('%1$s, %2$s sent you a new private message at %3$s.'),$recip['channel_name'], $sender['xchan_name'],$sitename);
- $epreamble = sprintf( t('%1$s sent you %2$s.'),'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]', '[zrl=$itemlink]' . t('a private message') . '[/zrl]');
- $sitelink = t('Please visit %s to view and/or reply to your private messages.');
- $tsitelink = sprintf( $sitelink, $siteurl . '/mail/' . $params['item']['id'] );
- $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '/mail/' . $params['item']['id'] . '">' . $sitename . '</a>');
- $itemlink = $siteurl . '/mail/' . $params['item']['id'];
- }
-
- if ($params['type'] == NOTIFY_COMMENT) {
-// logger("notification: params = " . print_r($params, true), LOGGER_DEBUG);
-
- $itemlink = $params['link'];
-
- // ignore like/unlike activity on posts - they probably require a sepearate notification preference
-
- if (array_key_exists('item',$params) && (! visible_activity($params['item'])))
- return;
-
- $parent_mid = $params['parent_mid'];
-
- // Check to see if there was already a notify for this post.
- // If so don't create a second notification
-
- $p = null;
- $p = q("select id from notify where link = '%s' and uid = %d limit 1",
- dbesc($params['link']),
- intval($recip['channel_id'])
- );
- if ($p) {
- logger('notification: comment already notified');
- pop_lang();
- return;
- }
-
-
- // if it's a post figure out who's post it is.
-
- $p = null;
-
- if($params['otype'] === 'item' && $parent_mid) {
- $p = q("select * from item where mid = '%s' and uid = %d limit 1",
- dbesc($parent_mid),
- intval($recip['channel_id'])
- );
- }
-
- xchan_query($p);
-
-
- $item_post_type = item_post_type($p[0]);
-// $private = $p[0]['item_private'];
- $parent_id = $p[0]['id'];
-
- $parent_item = $p[0];
-
- //$possess_desc = str_replace('<!item_type!>',$possess_desc);
-
- // "a post"
- $dest_str = sprintf(t('%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]'),
- $recip['channel_name'],
- '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
- $itemlink,
- $item_post_type);
-
- // "George Bull's post"
- if($p)
- $dest_str = sprintf(t('%1$s, %2$s commented on [zrl=%3$s]%4$s\'s %5$s[/zrl]'),
- $recip['channel_name'],
- '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
- $itemlink,
- $p[0]['author']['xchan_name'],
- $item_post_type);
-
- // "your post"
- if($p[0]['owner']['xchan_name'] == $p[0]['author']['xchan_name'] && intval($p[0]['item_wall']))
- $dest_str = sprintf(t('%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]'),
- $recip['channel_name'],
- '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
- $itemlink,
- $item_post_type);
-
- // Some mail softwares relies on subject field for threading.
- // So, we cannot have different subjects for notifications of the same thread.
- // Before this we have the name of the replier on the subject rendering
- // differents subjects for messages on the same thread.
-
- $subject = sprintf( t('[Hubzilla:Notify] Comment to conversation #%1$d by %2$s'), $parent_id, $sender['xchan_name']);
- $preamble = sprintf( t('%1$s, %2$s commented on an item/conversation you have been following.'), $recip['channel_name'], $sender['xchan_name']);
- $epreamble = $dest_str;
-
- $sitelink = t('Please visit %s to view and/or reply to the conversation.');
- $tsitelink = sprintf( $sitelink, $siteurl );
- $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
- }
-
- if($params['type'] == NOTIFY_WALL) {
- $subject = sprintf( t('[Hubzilla:Notify] %s posted to your profile wall') , $sender['xchan_name']);
-
- $preamble = sprintf( t('%1$s, %2$s posted to your profile wall at %3$s') , $recip['channel_name'], $sender['xchan_name'], $sitename);
-
- $epreamble = sprintf( t('%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]') ,
- $recip['channel_name'],
- '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
- $params['link']);
-
- $sitelink = t('Please visit %s to view and/or reply to the conversation.');
- $tsitelink = sprintf( $sitelink, $siteurl );
- $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
- $itemlink = $params['link'];
- }
-
- if ($params['type'] == NOTIFY_TAGSELF) {
-
- $p = null;
- $p = q("select id from notify where link = '%s' and uid = %d limit 1",
- dbesc($params['link']),
- intval($recip['channel_id'])
- );
- if ($p) {
- logger('enotify: tag: already notified about this post');
- pop_lang();
- return;
- }
-
- $subject = sprintf( t('[Hubzilla:Notify] %s tagged you') , $sender['xchan_name']);
- $preamble = sprintf( t('%1$s, %2$s tagged you at %3$s') , $recip['channel_name'], $sender['xchan_name'], $sitename);
- $epreamble = sprintf( t('%1$s, %2$s [zrl=%3$s]tagged you[/zrl].') ,
- $recip['channel_name'],
- '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
- $params['link']);
-
- $sitelink = t('Please visit %s to view and/or reply to the conversation.');
- $tsitelink = sprintf( $sitelink, $siteurl );
- $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
- $itemlink = $params['link'];
- }
-
- if ($params['type'] == NOTIFY_POKE) {
- $subject = sprintf( t('[Hubzilla:Notify] %1$s poked you') , $sender['xchan_name']);
- $preamble = sprintf( t('%1$s, %2$s poked you at %3$s') , $recip['channel_name'], $sender['xchan_name'], $sitename);
- $epreamble = sprintf( t('%1$s, %2$s [zrl=%2$s]poked you[/zrl].') ,
- $recip['channel_name'],
- '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
- $params['link']);
-
- $subject = str_replace('poked', t($params['activity']), $subject);
- $preamble = str_replace('poked', t($params['activity']), $preamble);
- $epreamble = str_replace('poked', t($params['activity']), $epreamble);
-
- $sitelink = t('Please visit %s to view and/or reply to the conversation.');
- $tsitelink = sprintf( $sitelink, $siteurl );
- $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
- $itemlink = $params['link'];
- }
-
- if ($params['type'] == NOTIFY_TAGSHARE) {
- $subject = sprintf( t('[Hubzilla:Notify] %s tagged your post') , $sender['xchan_name']);
- $preamble = sprintf( t('%1$s, %2$s tagged your post at %3$s') , $recip['channel_name'],$sender['xchan_name'], $sitename);
- $epreamble = sprintf( t('%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]') ,
- $recip['channel_name'],
- '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
- $itemlink);
-
- $sitelink = t('Please visit %s to view and/or reply to the conversation.');
- $tsitelink = sprintf( $sitelink, $siteurl );
- $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
- $itemlink = $params['link'];
- }
-
- if ($params['type'] == NOTIFY_INTRO) {
- $subject = sprintf( t('[Hubzilla:Notify] Introduction received'));
- $preamble = sprintf( t('%1$s, you\'ve received an new connection request from \'%2$s\' at %3$s'), $recip['channel_name'], $sender['xchan_name'], $sitename);
- $epreamble = sprintf( t('%1$s, you\'ve received [zrl=%2$s]a new connection request[/zrl] from %3$s.'),
- $recip['channel_name'],
- $siteurl . '/connections/ifpending',
- '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]');
- $body = sprintf( t('You may visit their profile at %s'),$sender['xchan_url']);
-
- $sitelink = t('Please visit %s to approve or reject the connection request.');
- $tsitelink = sprintf( $sitelink, $siteurl . '/connections/ifpending');
- $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '/connections/ifpending">' . $sitename . '</a>');
- $itemlink = $params['link'];
- }
-
- if ($params['type'] == NOTIFY_SUGGEST) {
- $subject = sprintf( t('[Hubzilla:Notify] Friend suggestion received'));
- $preamble = sprintf( t('%1$s, you\'ve received a friend suggestion from \'%2$s\' at %3$s'), $recip['channel_name'], $sender['xchan_name'], $sitename);
- $epreamble = sprintf( t('%1$s, you\'ve received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from %4$s.'),
- $recip['channel_name'],
- $itemlink,
- '[zrl=' . $params['item']['url'] . ']' . $params['item']['name'] . '[/zrl]',
- '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]');
-
- $body = t('Name:') . ' ' . $params['item']['name'] . "\n";
- $body .= t('Photo:') . ' ' . $params['item']['photo'] . "\n";
- $body .= sprintf( t('You may visit their profile at %s'),$params['item']['url']);
-
- $sitelink = t('Please visit %s to approve or reject the suggestion.');
- $tsitelink = sprintf( $sitelink, $siteurl );
- $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '">' . $sitename . '</a>');
- $itemlink = $params['link'];
- }
-
- if ($params['type'] == NOTIFY_CONFIRM) {
- // ?
- }
-
- if ($params['type'] == NOTIFY_SYSTEM) {
- // ?
- }
-
- $h = array(
- 'params' => $params,
- 'subject' => $subject,
- 'preamble' => $preamble,
- 'epreamble' => $epreamble,
- 'body' => $body,
- 'sitelink' => $sitelink,
- 'sitename' => $sitename,
- 'tsitelink' => $tsitelink,
- 'hsitelink' => $hsitelink,
- 'itemlink' => $itemlink,
- 'sender' => $sender,
- 'recipient' => $recip
- );
-
- call_hooks('enotify', $h);
-
- $subject = $h['subject'];
- $preamble = $h['preamble'];
- $epreamble = $h['epreamble'];
- $body = $h['body'];
- $sitelink = $h['sitelink'];
- $tsitelink = $h['tsitelink'];
- $hsitelink = $h['hsitelink'];
- $itemlink = $h['itemlink'];
-
-
- require_once('include/html2bbcode.php');
-
- do {
- $dups = false;
- $hash = random_string();
- $r = q("SELECT `id` FROM `notify` WHERE `hash` = '%s' LIMIT 1",
- dbesc($hash));
- if (count($r))
- $dups = true;
- } while ($dups === true);
-
-
- $datarray = array();
- $datarray['hash'] = $hash;
- $datarray['sender_hash'] = $sender['xchan_hash'];
- $datarray['name'] = $sender['xchan_name'];
- $datarray['url'] = $sender['xchan_url'];
- $datarray['photo'] = $sender['xchan_photo_s'];
- $datarray['date'] = datetime_convert();
- $datarray['aid'] = $recip['channel_account_id'];
- $datarray['uid'] = $recip['channel_id'];
- $datarray['link'] = $itemlink;
- $datarray['parent'] = $parent_mid;
- $datarray['parent_item'] = $parent_item;
- $datarray['type'] = $params['type'];
- $datarray['verb'] = $params['verb'];
- $datarray['otype'] = $params['otype'];
- $datarray['abort'] = false;
-
- $datarray['item'] = $params['item'];
-
- call_hooks('enotify_store', $datarray);
-
- if ($datarray['abort']) {
- pop_lang();
- return;
- }
-
-
- // create notification entry in DB
- $seen = 0;
-
- // Mark some notifications as seen right away
- // Note! The notification have to be created, because they are used to send emails
- // So easiest solution to hide them from Notices is to mark them as seen right away.
- // Another option would be to not add them to the DB, and change how emails are handled (probably would be better that way)
- $always_show_in_notices = get_pconfig($recip['channel_id'],'system','always_show_in_notices');
- if (!$always_show_in_notices) {
- if (($params['type'] == NOTIFY_WALL) || ($params['type'] == NOTIFY_MAIL) || ($params['type'] == NOTIFY_INTRO)) {
- $seen = 1;
- }
- }
-
- $r = q("insert into notify (hash,name,url,photo,date,aid,uid,link,parent,seen,type,verb,otype)
- values('%s','%s','%s','%s','%s',%d,%d,'%s','%s',%d,%d,'%s','%s')",
- dbesc($datarray['hash']),
- dbesc($datarray['name']),
- dbesc($datarray['url']),
- dbesc($datarray['photo']),
- dbesc($datarray['date']),
- intval($datarray['aid']),
- intval($datarray['uid']),
- dbesc($datarray['link']),
- dbesc($datarray['parent']),
- intval($seen),
- intval($datarray['type']),
- dbesc($datarray['verb']),
- dbesc($datarray['otype'])
- );
-
- $r = q("select id from notify where hash = '%s' and uid = %d limit 1",
- dbesc($hash),
- intval($recip['channel_id'])
- );
- if ($r) {
- $notify_id = $r[0]['id'];
- } else {
- logger('notification not found.');
- pop_lang();
- return;
- }
-
- $itemlink = z_root() . '/notify/view/' . $notify_id;
- $msg = str_replace('$itemlink',$itemlink,$epreamble);
-
- // wretched hack, but we don't want to duplicate all the preamble variations and we also don't want to screw up a translation
-
- if ((App::$language === 'en' || (! App::$language)) && strpos($msg,', '))
- $msg = substr($msg,strpos($msg,', ')+1);
-
- $r = q("update notify set msg = '%s' where id = %d and uid = %d",
- dbesc($msg),
- intval($notify_id),
- intval($datarray['uid'])
- );
-
- // send email notification if notification preferences permit
-
- require_once('bbcode.php');
- if ((intval($recip['channel_notifyflags']) & intval($params['type'])) || $params['type'] == NOTIFY_SYSTEM) {
-
- logger('notification: sending notification email');
-
- $hn = get_pconfig($recip['channel_id'],'system','email_notify_host');
- if($hn && (! stristr(App::get_hostname(),$hn))) {
- // this isn't the email notification host
- pop_lang();
- return;
- }
-
- $textversion = strip_tags(html_entity_decode(bbcode(stripslashes(str_replace(array("\\r", "\\n"), array( "", "\n"), $body))),ENT_QUOTES,'UTF-8'));
-
- $htmlversion = bbcode(stripslashes(str_replace(array("\\r","\\n"), array("","<br />\n"),$body)));
-
-
- // use $_SESSION['zid_override'] to force zid() to use
- // the recipient address instead of the current observer
-
- $_SESSION['zid_override'] = $recip['channel_address'] . '@' . App::get_hostname();
- $_SESSION['zrl_override'] = z_root() . '/channel/' . $recip['channel_address'];
-
- $textversion = zidify_links($textversion);
- $htmlversion = zidify_links($htmlversion);
-
- // unset when done to revert to normal behaviour
-
- unset($_SESSION['zid_override']);
- unset($_SESSION['zrl_override']);
-
- $datarray = array();
- $datarray['banner'] = $banner;
- $datarray['product'] = $product;
- $datarray['preamble'] = $preamble;
- $datarray['sitename'] = $sitename;
- $datarray['siteurl'] = $siteurl;
- $datarray['type'] = $params['type'];
- $datarray['parent'] = $params['parent_mid'];
- $datarray['source_name'] = $sender['xchan_name'];
- $datarray['source_link'] = $sender['xchan_url'];
- $datarray['source_photo'] = $sender['xchan_photo_s'];
- $datarray['uid'] = $recip['channel_id'];
- $datarray['username'] = $recip['channel_name'];
- $datarray['hsitelink'] = $hsitelink;
- $datarray['tsitelink'] = $tsitelink;
- $datarray['hitemlink'] = '<a href="' . $itemlink . '">' . $itemlink . '</a>';
- $datarray['titemlink'] = $itemlink;
- $datarray['thanks'] = $thanks;
- $datarray['site_admin'] = $site_admin;
- $datarray['title'] = stripslashes($title);
- $datarray['htmlversion'] = $htmlversion;
- $datarray['textversion'] = $textversion;
- $datarray['subject'] = $subject;
- $datarray['headers'] = $additional_mail_header;
- $datarray['email_secure'] = false;
-
- call_hooks('enotify_mail', $datarray);
-
- // Default to private - don't disclose message contents over insecure channels (such as email)
- // Might be interesting to use GPG,PGP,S/MIME encryption instead
- // but we'll save that for a clever plugin developer to implement
-
- $private_activity = false;
-
- if (! $datarray['email_secure']) {
- switch ($params['type']) {
- case NOTIFY_WALL:
- case NOTIFY_TAGSELF:
- case NOTIFY_POKE:
- case NOTIFY_COMMENT:
- if (! $private)
- break;
- $private_activity = true;
- case NOTIFY_MAIL:
- $datarray['textversion'] = $datarray['htmlversion'] = $datarray['title'] = '';
- $datarray['subject'] = preg_replace('/' . preg_quote(t('[Hubzilla:Notify]')) . '/','$0*',$datarray['subject']);
- break;
- default:
- break;
- }
- }
-
- if ($private_activity
- && intval(get_pconfig($datarray['uid'], 'system', 'ignore_private_notifications'))) {
-
- pop_lang();
- return;
- }
-
- // load the template for private message notifications
- $tpl = get_markup_template('email_notify_html.tpl');
- $email_html_body = replace_macros($tpl,array(
- '$banner' => $datarray['banner'],
- '$notify_icon' => Zotlabs\Project\System::get_notify_icon(),
- '$product' => $datarray['product'],
- '$preamble' => $datarray['preamble'],
- '$sitename' => $datarray['sitename'],
- '$siteurl' => $datarray['siteurl'],
- '$source_name' => $datarray['source_name'],
- '$source_link' => $datarray['source_link'],
- '$source_photo' => $datarray['source_photo'],
- '$username' => $datarray['to_name'],
- '$hsitelink' => $datarray['hsitelink'],
- '$hitemlink' => $datarray['hitemlink'],
- '$thanks' => $datarray['thanks'],
- '$site_admin' => $datarray['site_admin'],
- '$title' => $datarray['title'],
- '$htmlversion' => $datarray['htmlversion'],
- ));
-
- // load the template for private message notifications
- $tpl = get_markup_template('email_notify_text.tpl');
- $email_text_body = replace_macros($tpl, array(
- '$banner' => $datarray['banner'],
- '$product' => $datarray['product'],
- '$preamble' => $datarray['preamble'],
- '$sitename' => $datarray['sitename'],
- '$siteurl' => $datarray['siteurl'],
- '$source_name' => $datarray['source_name'],
- '$source_link' => $datarray['source_link'],
- '$source_photo' => $datarray['source_photo'],
- '$username' => $datarray['to_name'],
- '$tsitelink' => $datarray['tsitelink'],
- '$titemlink' => $datarray['titemlink'],
- '$thanks' => $datarray['thanks'],
- '$site_admin' => $datarray['site_admin'],
- '$title' => $datarray['title'],
- '$textversion' => $datarray['textversion'],
- ));
-
-// logger('text: ' . $email_text_body);
-
- // use the EmailNotification library to send the message
-
- enotify::send(array(
- 'fromName' => $sender_name,
- 'fromEmail' => $sender_email,
- 'replyTo' => $sender_email,
- 'toEmail' => $recip['account_email'],
- 'messageSubject' => $datarray['subject'],
- 'htmlVersion' => $email_html_body,
- 'textVersion' => $email_text_body,
- 'additionalMailHeader' => $datarray['headers'],
- ));
- }
-
- pop_lang();
-
-}
-
-
-/**
- * @brief A class for sending email notifications.
- *
- * @fixme Class names start mostly with capital letter to distinguish them easier.
- */
-class enotify {
- /**
- * @brief Send a multipart/alternative message with Text and HTML versions.
- *
- * @param array $params an assoziative array with:
- * * \e string \b fromName name of the sender
- * * \e string \b fromEmail email of the sender
- * * \e string \b replyTo replyTo address to direct responses
- * * \e string \b toEmail destination email address
- * * \e string \b messageSubject subject of the message
- * * \e string \b htmlVersion html version of the message
- * * \e string \b textVersion text only version of the message
- * * \e string \b additionalMailHeader additions to the smtp mail header
- */
- static public function send($params) {
-
- $fromName = email_header_encode(html_entity_decode($params['fromName'],ENT_QUOTES,'UTF-8'),'UTF-8');
- $messageSubject = email_header_encode(html_entity_decode($params['messageSubject'],ENT_QUOTES,'UTF-8'),'UTF-8');
-
- // generate a mime boundary
- $mimeBoundary = rand(0, 9) . "-"
- .rand(10000000000, 9999999999) . "-"
- .rand(10000000000, 9999999999) . "=:"
- .rand(10000, 99999);
-
- // generate a multipart/alternative message header
- $messageHeader =
- $params['additionalMailHeader'] .
- "From: $fromName <{$params['fromEmail']}>\n" .
- "Reply-To: $fromName <{$params['replyTo']}>\n" .
- "MIME-Version: 1.0\n" .
- "Content-Type: multipart/alternative; boundary=\"{$mimeBoundary}\"";
-
- // assemble the final multipart message body with the text and html types included
- $textBody = chunk_split(base64_encode($params['textVersion']));
- $htmlBody = chunk_split(base64_encode($params['htmlVersion']));
-
- $multipartMessageBody =
- "--" . $mimeBoundary . "\n" . // plain text section
- "Content-Type: text/plain; charset=UTF-8\n" .
- "Content-Transfer-Encoding: base64\n\n" .
- $textBody . "\n" .
- "--" . $mimeBoundary . "\n" . // text/html section
- "Content-Type: text/html; charset=UTF-8\n" .
- "Content-Transfer-Encoding: base64\n\n" .
- $htmlBody . "\n" .
- "--" . $mimeBoundary . "--\n"; // message ending
-
- // send the message
- $res = mail(
- $params['toEmail'], // send to address
- $messageSubject, // subject
- $multipartMessageBody, // message body
- $messageHeader // message headers
- );
- logger("notification: enotify::send returns " . $res, LOGGER_DEBUG);
- }
-}
diff --git a/include/environment.php b/include/environment.php
index 47ad241a7..11d465b84 100644
--- a/include/environment.php
+++ b/include/environment.php
@@ -60,6 +60,8 @@ function phpiniSizeToBytes($val) {
$val *= 1024;
case 'k':
$val *= 1024;
+ default:
+ break;
}
return (int)$val;
diff --git a/include/event.php b/include/event.php
index e41bf2db7..a4118ec78 100644
--- a/include/event.php
+++ b/include/event.php
@@ -28,22 +28,22 @@ function format_event_html($ev) {
$o .= '<div class="event-title"><h3><i class="fa fa-calendar"></i>&nbsp;' . bbcode($ev['summary']) . '</h3></div>' . "\r\n";
$o .= '<div class="event-start"><span class="event-label">' . t('Starts:') . '</span>&nbsp;<span class="dtstart" title="'
- . datetime_convert('UTC', 'UTC', $ev['start'], (($ev['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' ))
+ . datetime_convert('UTC', 'UTC', $ev['dtstart'], (($ev['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' ))
. '" >'
. (($ev['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(),
- $ev['start'] , $bd_format ))
+ $ev['dtstart'] , $bd_format ))
: day_translate(datetime_convert('UTC', 'UTC',
- $ev['start'] , $bd_format)))
+ $ev['dtstart'] , $bd_format)))
. '</span></div>' . "\r\n";
if(! $ev['nofinish'])
$o .= '<div class="event-end" ><span class="event-label">' . t('Finishes:') . '</span>&nbsp;<span class="dtend" title="'
- . datetime_convert('UTC','UTC',$ev['finish'], (($ev['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' ))
+ . datetime_convert('UTC','UTC',$ev['dtend'], (($ev['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' ))
. '" >'
. (($ev['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(),
- $ev['finish'] , $bd_format ))
+ $ev['dtend'] , $bd_format ))
: day_translate(datetime_convert('UTC', 'UTC',
- $ev['finish'] , $bd_format )))
+ $ev['dtend'] , $bd_format )))
. '</span></div>' . "\r\n";
$o .= '<div class="event-description">' . bbcode($ev['description']) . '</div>' . "\r\n";
@@ -58,6 +58,37 @@ function format_event_html($ev) {
return $o;
}
+function format_event_obj($jobject) {
+ $event = array();
+
+ $object = json_decode($jobject,true);
+
+ //ensure compatibility with older items - this check can be removed at a later point
+ if(array_key_exists('description', $object)) {
+
+ $bd_format = t('l F d, Y \@ g:i A'); // Friday January 18, 2011 @ 8:01 AM
+
+ $event['header'] = replace_macros(get_markup_template('event_item_header.tpl'),array(
+ '$title' => bbcode($object['title']),
+ '$dtstart_label' => t('Starts:'),
+ '$dtstart_title' => datetime_convert('UTC', 'UTC', $object['dtstart'], (($object['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' )),
+ '$dtstart_dt' => (($object['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(), $object['dtstart'] , $bd_format )) : day_translate(datetime_convert('UTC', 'UTC', $object['dtstart'] , $bd_format))),
+ '$finish' => (($object['nofinish']) ? false : true),
+ '$dtend_label' => t('Finishes:'),
+ '$dtend_title' => datetime_convert('UTC','UTC',$object['dtend'], (($object['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' )),
+ '$dtend_dt' => (($object['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(), $object['dtend'] , $bd_format )) : day_translate(datetime_convert('UTC', 'UTC', $object['dtend'] , $bd_format )))
+ ));
+
+ $event['content'] = replace_macros(get_markup_template('event_item_content.tpl'),array(
+ '$description' => bbcode($object['description']),
+ '$location_label' => t('Location:'),
+ '$location' => bbcode($object['location'])
+ ));
+
+ }
+
+ return $event;
+}
function ical_wrapper($ev) {
@@ -67,8 +98,8 @@ function ical_wrapper($ev) {
$o .= "BEGIN:VCALENDAR";
$o .= "\r\nVERSION:2.0";
$o .= "\r\nMETHOD:PUBLISH";
- $o .= "\r\nPRODID:-//" . get_config('system','sitename') . "//" . Zotlabs\Project\System::get_platform_name() . "//" . strtoupper(App::$language). "\r\n";
- if(array_key_exists('start', $ev))
+ $o .= "\r\nPRODID:-//" . get_config('system','sitename') . "//" . Zotlabs\Lib\System::get_platform_name() . "//" . strtoupper(App::$language). "\r\n";
+ if(array_key_exists('dtstart', $ev))
$o .= format_event_ical($ev);
else {
foreach($ev as $e) {
@@ -82,7 +113,7 @@ function ical_wrapper($ev) {
function format_event_ical($ev) {
- if($ev['type'] === 'task')
+ if($ev['etype'] === 'task')
return format_todo_ical($ev);
$o = '';
@@ -92,10 +123,10 @@ function format_event_ical($ev) {
$o .= "\r\nCREATED:" . datetime_convert('UTC','UTC', $ev['created'],'Ymd\\THis\\Z');
$o .= "\r\nLAST-MODIFIED:" . datetime_convert('UTC','UTC', $ev['edited'],'Ymd\\THis\\Z');
$o .= "\r\nDTSTAMP:" . datetime_convert('UTC','UTC', $ev['edited'],'Ymd\\THis\\Z');
- if($ev['start'])
- $o .= "\r\nDTSTART:" . datetime_convert('UTC','UTC', $ev['start'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
- if($ev['finish'] && ! $ev['nofinish'])
- $o .= "\r\nDTEND:" . datetime_convert('UTC','UTC', $ev['finish'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
+ if($ev['dtstart'])
+ $o .= "\r\nDTSTART:" . datetime_convert('UTC','UTC', $ev['dtstart'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
+ if($ev['dtend'] && ! $ev['nofinish'])
+ $o .= "\r\nDTEND:" . datetime_convert('UTC','UTC', $ev['dtend'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
if($ev['summary'])
$o .= "\r\nSUMMARY:" . format_ical_text($ev['summary']);
if($ev['location'])
@@ -119,10 +150,10 @@ function format_todo_ical($ev) {
$o .= "\r\nCREATED:" . datetime_convert('UTC','UTC', $ev['created'],'Ymd\\THis\\Z');
$o .= "\r\nLAST-MODIFIED:" . datetime_convert('UTC','UTC', $ev['edited'],'Ymd\\THis\\Z');
$o .= "\r\nDTSTAMP:" . datetime_convert('UTC','UTC', $ev['edited'],'Ymd\\THis\\Z');
- if($ev['start'])
- $o .= "\r\nDTSTART:" . datetime_convert('UTC','UTC', $ev['start'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
- if($ev['finish'] && ! $ev['nofinish'])
- $o .= "\r\nDUE:" . datetime_convert('UTC','UTC', $ev['finish'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
+ if($ev['dtstart'])
+ $o .= "\r\nDTSTART:" . datetime_convert('UTC','UTC', $ev['dtstart'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
+ if($ev['dtend'] && ! $ev['nofinish'])
+ $o .= "\r\nDUE:" . datetime_convert('UTC','UTC', $ev['dtend'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
if($ev['summary'])
$o .= "\r\nSUMMARY:" . format_ical_text($ev['summary']);
if($ev['event_status']) {
@@ -166,15 +197,18 @@ function format_event_bbcode($ev) {
if($ev['description'])
$o .= '[event-description]' . $ev['description'] . '[/event-description]';
- if($ev['start'])
- $o .= '[event-start]' . $ev['start'] . '[/event-start]';
+ if($ev['dtstart'])
+ $o .= '[event-start]' . $ev['dtstart'] . '[/event-start]';
- if(($ev['finish']) && (! $ev['nofinish']))
- $o .= '[event-finish]' . $ev['finish'] . '[/event-finish]';
+ if(($ev['dtend']) && (! $ev['nofinish']))
+ $o .= '[event-finish]' . $ev['dtend'] . '[/event-finish]';
if($ev['location'])
$o .= '[event-location]' . $ev['location'] . '[/event-location]';
+ if($ev['event_hash'])
+ $o .= '[event-id]' . $ev['event_hash'] . '[/event-id]';
+
if($ev['adjust'])
$o .= '[event-adjust]' . $ev['adjust'] . '[/event-adjust]';
@@ -204,21 +238,24 @@ function bbtoevent($s) {
$ev['description'] = $match[1];
$match = '';
if(preg_match("/\[event\-start\](.*?)\[\/event\-start\]/is",$s,$match))
- $ev['start'] = $match[1];
+ $ev['dtstart'] = $match[1];
$match = '';
if(preg_match("/\[event\-finish\](.*?)\[\/event\-finish\]/is",$s,$match))
- $ev['finish'] = $match[1];
+ $ev['dtend'] = $match[1];
$match = '';
if(preg_match("/\[event\-location\](.*?)\[\/event\-location\]/is",$s,$match))
$ev['location'] = $match[1];
$match = '';
+ if(preg_match("/\[event\-id\](.*?)\[\/event\-id\]/is",$s,$match))
+ $ev['event_hash'] = $match[1];
+ $match = '';
if(preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",$s,$match))
$ev['adjust'] = $match[1];
- if(array_key_exists('start',$ev)) {
- if(array_key_exists('finish',$ev)) {
- if($ev['finish'] === $ev['start'])
+ if(array_key_exists('dtstart',$ev)) {
+ if(array_key_exists('dtend',$ev)) {
+ if($ev['dtend'] === $ev['dtstart'])
$ev['nofinish'] = 1;
- elseif($ev['finish'])
+ elseif($ev['dtend'])
$ev['nofinish'] = 0;
else
$ev['nofinish'] = 1;
@@ -254,8 +291,8 @@ function sort_by_date($arr) {
*/
function ev_compare($a, $b) {
- $date_a = (($a['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$a['start']) : $a['start']);
- $date_b = (($b['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$b['start']) : $b['start']);
+ $date_a = (($a['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$a['dtstart']) : $a['dtstart']);
+ $date_b = (($b['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$b['dtstart']) : $b['dtstart']);
if ($date_a === $date_b)
return strcasecmp($a['description'], $b['description']);
@@ -268,7 +305,7 @@ function event_store_event($arr) {
$arr['created'] = (($arr['created']) ? $arr['created'] : datetime_convert());
$arr['edited'] = (($arr['edited']) ? $arr['edited'] : datetime_convert());
- $arr['type'] = (($arr['type']) ? $arr['type'] : 'event' );
+ $arr['etype'] = (($arr['etype']) ? $arr['etype'] : 'event' );
$arr['event_xchan'] = (($arr['event_xchan']) ? $arr['event_xchan'] : '');
$arr['event_priority'] = (($arr['event_priority']) ? $arr['event_priority'] : 0);
@@ -278,45 +315,52 @@ function event_store_event($arr) {
else
$arr['event_status_date'] = NULL_DATE;
- // Existing event being modified
- if($arr['id'] || $arr['event_hash']) {
+ $existing_event = null;
- // has the event actually changed?
+ if($arr['event_hash']) {
+ $r = q("SELECT * FROM event WHERE event_hash = '%s' AND uid = %d LIMIT 1",
+ dbesc($arr['event_hash']),
+ intval($arr['uid'])
+ );
+ if($r) {
+ $existing_event = $r[0];
+ }
+ }
- if($arr['event_hash']) {
- $r = q("SELECT * FROM event WHERE event_hash = '%s' AND uid = %d LIMIT 1",
- dbesc($arr['event_hash']),
- intval($arr['uid'])
- );
+ if($arr['id']) {
+ $r = q("SELECT * FROM event WHERE id = %d AND uid = %d LIMIT 1",
+ intval($arr['id']),
+ intval($arr['uid'])
+ );
+ if($r) {
+ $existing_event = $r[0];
}
else {
- $r = q("SELECT * FROM event WHERE id = %d AND uid = %d LIMIT 1",
- intval($arr['id']),
- intval($arr['uid'])
- );
+ return false;
}
+ }
- if(! $r)
- return false;
- if($r[0]['edited'] === $arr['edited']) {
- // Nothing has changed. Return the ID.
- return $r[0];
+ if($existing_event) {
+
+ if($existing_event['edited'] >= $arr['edited']) {
+ // Nothing has changed.
+ return $existing_event;
}
- $hash = $r[0]['event_hash'];
+ $hash = $existing_event['event_hash'];
// The event changed. Update it.
$r = q("UPDATE `event` SET
`edited` = '%s',
- `start` = '%s',
- `finish` = '%s',
+ `dtstart` = '%s',
+ `dtend` = '%s',
`summary` = '%s',
`description` = '%s',
`location` = '%s',
- `type` = '%s',
+ `etype` = '%s',
`adjust` = %d,
`nofinish` = %d,
`event_status` = '%s',
@@ -332,12 +376,12 @@ function event_store_event($arr) {
WHERE `id` = %d AND `uid` = %d",
dbesc($arr['edited']),
- dbesc($arr['start']),
- dbesc($arr['finish']),
+ dbesc($arr['dtstart']),
+ dbesc($arr['dtend']),
dbesc($arr['summary']),
dbesc($arr['description']),
dbesc($arr['location']),
- dbesc($arr['type']),
+ dbesc($arr['etype']),
intval($arr['adjust']),
intval($arr['nofinish']),
dbesc($arr['event_status']),
@@ -350,7 +394,7 @@ function event_store_event($arr) {
dbesc($arr['allow_gid']),
dbesc($arr['deny_cid']),
dbesc($arr['deny_gid']),
- intval($r[0]['id']),
+ intval($existing_event['id']),
intval($arr['uid'])
);
} else {
@@ -360,10 +404,12 @@ function event_store_event($arr) {
if(array_key_exists('external_id',$arr))
$hash = $arr['external_id'];
+ elseif(array_key_exists('event_hash',$arr))
+ $hash = $arr['event_hash'];
else
$hash = random_string() . '@' . App::get_hostname();
- $r = q("INSERT INTO event ( uid,aid,event_xchan,event_hash,created,edited,start,finish,summary,description,location,type,
+ $r = q("INSERT INTO event ( uid,aid,event_xchan,event_hash,created,edited,dtstart,dtend,summary,description,location,etype,
adjust,nofinish, event_status, event_status_date, event_percent, event_repeat, event_sequence, event_priority, allow_cid,allow_gid,deny_cid,deny_gid)
VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', '%s', %d, '%s', %d, %d, '%s', '%s', '%s', '%s' ) ",
intval($arr['uid']),
@@ -372,12 +418,12 @@ function event_store_event($arr) {
dbesc($hash),
dbesc($arr['created']),
dbesc($arr['edited']),
- dbesc($arr['start']),
- dbesc($arr['finish']),
+ dbesc($arr['dtstart']),
+ dbesc($arr['dtend']),
dbesc($arr['summary']),
dbesc($arr['description']),
dbesc($arr['location']),
- dbesc($arr['type']),
+ dbesc($arr['etype']),
intval($arr['adjust']),
intval($arr['nofinish']),
dbesc($arr['event_status']),
@@ -426,7 +472,7 @@ function event_addtocal($item_id, $uid) {
$ev = bbtoevent($r[0]['body']);
- if(x($ev,'summary') && x($ev,'start')) {
+ if(x($ev,'summary') && x($ev,'dtstart')) {
$ev['event_xchan'] = $item['author_xchan'];
$ev['uid'] = $channel['channel_id'];
$ev['account'] = $channel['channel_account_id'];
@@ -436,7 +482,7 @@ function event_addtocal($item_id, $uid) {
// is this an edit?
- if($item['resource_type'] === 'event') {
+ if($item['resource_type'] === 'event' && (! $ev['event_hash'])) {
$ev['event_hash'] = $item['resource_id'];
}
@@ -472,7 +518,6 @@ function event_addtocal($item_id, $uid) {
if($z) {
build_sync_packet($channel['channel_id'],array('event_item' => array(encode_item($sync_item[0],true)),'event' => $z));
}
-
return true;
}
}
@@ -540,20 +585,20 @@ function event_import_ical($ical, $uid) {
// logger('dtstart: ' . var_export($dtstart,true));
- $ev['start'] = datetime_convert((($ev['adjust']) ? 'UTC' : date_default_timezone_get()),'UTC',
+ $ev['dtstart'] = datetime_convert((($ev['adjust']) ? 'UTC' : date_default_timezone_get()),'UTC',
$dtstart->format(\DateTime::W3C));
if(isset($ical->DTEND)) {
$dtend = $ical->DTEND->getDateTime();
- $ev['finish'] = datetime_convert((($ev['adjust']) ? 'UTC' : date_default_timezone_get()),'UTC',
+ $ev['dtend'] = datetime_convert((($ev['adjust']) ? 'UTC' : date_default_timezone_get()),'UTC',
$dtend->format(\DateTime::W3C));
}
else
$ev['nofinish'] = 1;
- if($ev['start'] === $ev['finish'])
+ if($ev['dtstart'] === $ev['dtend'])
$ev['nofinish'] = 1;
if(isset($ical->CREATED)) {
@@ -587,7 +632,7 @@ function event_import_ical($ical, $uid) {
$ev['external_id'] = $evuid;
}
- if($ev['summary'] && $ev['start']) {
+ if($ev['summary'] && $ev['dtstart']) {
$ev['event_xchan'] = $channel['channel_hash'];
$ev['uid'] = $channel['channel_id'];
$ev['account'] = $channel['channel_account_id'];
@@ -626,29 +671,24 @@ function event_import_ical_task($ical, $uid) {
$dtstart = $ical->DTSTART->getDateTime();
+ $ev['adjust'] = (($ical->DTSTART->isFloating()) ? 1 : 0);
+
// logger('dtstart: ' . var_export($dtstart,true));
- if(($dtstart->timezone_type == 2) || (($dtstart->timezone_type == 3) && ($dtstart->timezone === 'UTC'))) {
- $ev['adjust'] = 1;
- }
- else {
- $ev['adjust'] = 0;
- }
-
- $ev['start'] = datetime_convert((($ev['adjust']) ? 'UTC' : date_default_timezone_get()),'UTC',
+ $ev['dtstart'] = datetime_convert((($ev['adjust']) ? 'UTC' : date_default_timezone_get()),'UTC',
$dtstart->format(\DateTime::W3C));
if(isset($ical->DUE)) {
$dtend = $ical->DUE->getDateTime();
- $ev['finish'] = datetime_convert((($ev['adjust']) ? 'UTC' : date_default_timezone_get()),'UTC',
+ $ev['dtend'] = datetime_convert((($ev['adjust']) ? 'UTC' : date_default_timezone_get()),'UTC',
$dtend->format(\DateTime::W3C));
}
else
$ev['nofinish'] = 1;
- if($ev['start'] === $ev['finish'])
+ if($ev['dtstart'] === $ev['dtend'])
$ev['nofinish'] = 1;
if(isset($ical->CREATED)) {
@@ -713,9 +753,9 @@ function event_import_ical_task($ical, $uid) {
$ev['event_percent'] = (string) $ical->{'PERCENT-COMPLETE'} ;
}
- $ev['type'] = 'task';
+ $ev['etype'] = 'task';
- if($ev['summary'] && $ev['start']) {
+ if($ev['summary'] && $ev['dtstart']) {
$ev['event_xchan'] = $channel['channel_hash'];
$ev['uid'] = $channel['channel_id'];
$ev['account'] = $channel['channel_account_id'];
@@ -764,7 +804,10 @@ function event_store_item($arr, $event) {
$prefix = '';
// $birthday = false;
- if($event['type'] === 'birthday') {
+ if(($event) && array_key_exists('event_hash',$event) && (! array_key_exists('event_hash',$arr)))
+ $arr['event_hash'] = $event['event_hash'];
+
+ if($event['etype'] === 'birthday') {
if(! is_sys_channel($arr['uid']))
$prefix = t('This event has been added to your calendar.');
// $birthday = true;
@@ -788,21 +831,22 @@ function event_store_item($arr, $event) {
'type' => ACTIVITY_OBJ_EVENT,
'id' => z_root() . '/event/' . $r[0]['resource_id'],
'title' => $arr['summary'],
- 'start' => $arr['start'],
- 'finish' => $arr['finish'],
+ 'dtstart' => $arr['dtstart'],
+ 'dtend' => $arr['dtend'],
'nofinish' => $arr['nofinish'],
'description' => $arr['description'],
'location' => $arr['location'],
'adjust' => $arr['adjust'],
'content' => format_event_bbcode($arr),
'author' => array(
- 'name' => $r[0]['xchan_name'],
- 'address' => $r[0]['xchan_addr'],
- 'guid' => $r[0]['xchan_guid'],
- 'guid_sig' => $r[0]['xchan_guid_sig'],
- 'link' => array(
- array('rel' => 'alternate', 'type' => 'text/html', 'href' => $r[0]['xchan_url']),
- array('rel' => 'photo', 'type' => $r[0]['xchan_photo_mimetype'], 'href' => $r[0]['xchan_photo_m'])),
+ 'name' => $r[0]['xchan_name'],
+ 'address' => $r[0]['xchan_addr'],
+ 'guid' => $r[0]['xchan_guid'],
+ 'guid_sig' => $r[0]['xchan_guid_sig'],
+ 'link' => array(
+ array('rel' => 'alternate', 'type' => 'text/html', 'href' => $r[0]['xchan_url']),
+ array('rel' => 'photo', 'type' => $r[0]['xchan_photo_mimetype'], 'href' => $r[0]['xchan_photo_m'])
+ ),
),
));
@@ -813,7 +857,7 @@ function event_store_item($arr, $event) {
$sig = '';
- q("UPDATE item SET title = '%s', body = '%s', object = '%s', allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s', edited = '%s', sig = '%s', item_flags = %d, item_private = %d, obj_type = '%s' WHERE id = %d AND uid = %d",
+ q("UPDATE item SET title = '%s', body = '%s', obj = '%s', allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s', edited = '%s', sig = '%s', item_flags = %d, item_private = %d, obj_type = '%s' WHERE id = %d AND uid = %d",
dbesc($arr['summary']),
dbesc($prefix . format_event_bbcode($arr)),
dbesc($object),
@@ -837,12 +881,12 @@ function event_store_item($arr, $event) {
if(($arr['term']) && (is_array($arr['term']))) {
foreach($arr['term'] as $t) {
- q("insert into term (uid,oid,otype,type,term,url)
+ q("insert into term (uid,oid,otype,ttype,term,url)
values(%d,%d,%d,%d,'%s','%s') ",
intval($arr['uid']),
intval($r[0]['id']),
intval(TERM_OBJ_POST),
- intval($t['type']),
+ intval($t['ttype']),
dbesc($t['term']),
dbesc($t['url'])
);
@@ -929,12 +973,12 @@ function event_store_item($arr, $event) {
dbesc($arr['event_xchan'])
);
if($x) {
- $item_arr['object'] = json_encode(array(
+ $item_arr['obj'] = json_encode(array(
'type' => ACTIVITY_OBJ_EVENT,
'id' => z_root() . '/event/' . $event['event_hash'],
'title' => $arr['summary'],
- 'start' => $arr['start'],
- 'finish' => $arr['finish'],
+ 'dtstart' => $arr['dtstart'],
+ 'dtend' => $arr['dtend'],
'nofinish' => $arr['nofinish'],
'description' => $arr['description'],
'location' => $arr['location'],
@@ -984,7 +1028,7 @@ function tasks_fetch($arr) {
if($arr && $arr['all'] == 1)
$sql_extra = '';
- $r = q("select * from event where type = 'task' and uid = %d $sql_extra order by created desc",
+ $r = q("select * from event where etype = 'task' and uid = %d $sql_extra order by created desc",
intval(local_channel())
);
diff --git a/include/expire.php b/include/expire.php
deleted file mode 100644
index e75594b5f..000000000
--- a/include/expire.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-/**
- * @file include/expire.php
- */
-
-require_once('boot.php');
-require_once('include/cli_startup.php');
-
-function expire_run($argv, $argc){
-
- cli_startup();
-
- // perform final cleanup on previously delete items
-
- $r = q("select id from item where item_deleted = 1 and item_pending_remove = 0 and changed < %s - INTERVAL %s",
- db_utcnow(), db_quoteinterval('10 DAY')
- );
- if ($r) {
- foreach ($r as $rr) {
- drop_item($rr['id'], false, DROPITEM_PHASE2);
- }
- }
-
- // physically remove anything that has been deleted for more than two months
- /** @FIXME - this is a wretchedly inefficient query */
-
- $r = q("delete from item where item_pending_remove = 1 and changed < %s - INTERVAL %s",
- db_utcnow(), db_quoteinterval('36 DAY')
- );
-
- /** @FIXME make this optional as it could have a performance impact on large sites */
-
- if (intval(get_config('system', 'optimize_items')))
- q("optimize table item");
-
- logger('expire: start', LOGGER_DEBUG);
-
- $site_expire = get_config('system', 'default_expire_days');
-
- logger('site_expire: ' . $site_expire);
-
- $r = q("SELECT channel_id, channel_address, channel_pageflags, channel_expire_days from channel where true");
-
- if ($r) {
- foreach ($r as $rr) {
-
- // expire the sys channel separately
- if (intval($rr['channel_system']))
- continue;
-
- // service class default (if non-zero) over-rides the site default
-
- $service_class_expire = service_class_fetch($rr['channel_id'], 'expire_days');
- if (intval($service_class_expire))
- $channel_expire = $service_class_expire;
- else
- $channel_expire = $site_expire;
-
- if (intval($channel_expire) && (intval($channel_expire) < intval($rr['channel_expire_days'])) ||
- intval($rr['channel_expire_days'] == 0)) {
- $expire_days = $channel_expire;
- } else {
- $expire_days = $rr['channel_expire_days'];
- }
-
- // if the site or service class expiration is non-zero and less than person expiration, use that
- logger('Expire: ' . $rr['channel_address'] . ' interval: ' . $expire_days, LOGGER_DEBUG);
- item_expire($rr['channel_id'], $expire_days);
- }
- }
-
- $x = get_sys_channel();
- if ($x) {
-
- // this should probably just fetch the channel_expire_days from the sys channel,
- // but there's no convenient way to set it.
-
- $expire_days = get_config('system', 'sys_expire_days');
- if ($expire_days === false)
- $expire_days = 30;
-
- if (intval($site_expire) && (intval($site_expire) < intval($expire_days))) {
- $expire_days = $site_expire;
- }
-
- logger('Expire: sys interval: ' . $expire_days, LOGGER_DEBUG);
-
- if ($expire_days)
- item_expire($x['channel_id'], $expire_days);
-
- logger('Expire: sys: done', LOGGER_DEBUG);
- }
-}
-
-if (array_search(__file__, get_included_files()) === 0){
- expire_run($argv, $argc);
- killme();
-}
diff --git a/include/externals.php b/include/externals.php
deleted file mode 100644
index 3a3a32420..000000000
--- a/include/externals.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?php /** @file */
-
-require_once('boot.php');
-require_once('include/cli_startup.php');
-require_once('include/zot.php');
-require_once('include/identity.php');
-
-function externals_run($argv, $argc){
-
- cli_startup();
- $a = get_app();
-
-
- $total = 0;
- $attempts = 0;
-
- logger('externals: startup', LOGGER_DEBUG);
-
- // pull in some public posts
-
-
- while($total == 0 && $attempts < 3) {
- $arr = array('url' => '');
- call_hooks('externals_url_select',$arr);
-
- if($arr['url']) {
- $url = $arr['url'];
- }
- else {
- $randfunc = db_getfunc('RAND');
-
- // fixme this query does not deal with directory realms.
-
- $r = q("select site_url, site_pull from site where site_url != '%s' and site_flags != %d and site_type = %d and site_dead = 0 order by $randfunc limit 1",
- dbesc(z_root()),
- intval(DIRECTORY_MODE_STANDALONE),
- intval(SITE_TYPE_ZOT)
- );
- if($r)
- $url = $r[0]['site_url'];
- }
-
- $blacklisted = false;
-
- if(! check_siteallowed($url)) {
- logger('blacklisted site: ' . $url);
- $blacklisted = true;
- }
-
- $attempts ++;
-
- // make sure we can eventually break out if somebody blacklists all known sites
-
- if($blacklisted) {
- if($attempts > 20)
- break;
- $attempts --;
- continue;
- }
-
- if($url) {
- if($r[0]['site_pull'] !== NULL_DATE)
- $mindate = urlencode(datetime_convert('','',$r[0]['site_pull'] . ' - 1 day'));
- else {
- $days = get_config('externals','since_days');
- if($days === false)
- $days = 15;
- $mindate = urlencode(datetime_convert('','','now - ' . intval($days) . ' days'));
- }
-
- $feedurl = $url . '/zotfeed?f=&mindate=' . $mindate;
-
- logger('externals: pulling public content from ' . $feedurl, LOGGER_DEBUG);
-
- $x = z_fetch_url($feedurl);
- if(($x) && ($x['success'])) {
-
- q("update site set site_pull = '%s' where site_url = '%s'",
- dbesc(datetime_convert()),
- dbesc($url)
- );
-
- $j = json_decode($x['body'],true);
- if($j['success'] && $j['messages']) {
- $sys = get_sys_channel();
- foreach($j['messages'] as $message) {
- // on these posts, clear any route info.
- $message['route'] = '';
- $results = process_delivery(array('hash' => 'undefined'), get_item_elements($message),
- array(array('hash' => $sys['xchan_hash'])), false, true);
- $total ++;
- }
- logger('externals: import_public_posts: ' . $total . ' messages imported', LOGGER_DEBUG);
- }
- }
- }
- }
-}
-
-if (array_search(__file__,get_included_files())===0){
- externals_run($argv,$argc);
- killme();
-}
diff --git a/include/features.php b/include/features.php
index 38700f9f5..6d38bcfb4 100644
--- a/include/features.php
+++ b/include/features.php
@@ -94,6 +94,7 @@ function get_features($filtered = true) {
t('Post/Comment Tools'),
array('commtag', t('Community Tagging'), t('Ability to tag existing posts'),false,get_config('feature_lock','commtag')),
array('categories', t('Post Categories'), t('Add categories to your posts'),false,get_config('feature_lock','categories')),
+ array('emojis', t('Emoji Reactions'), t('Add emoji reaction ability to posts'),true,get_config('feature_lock','emojis')),
array('filing', t('Saved Folders'), t('Ability to file posts under folders'),false,get_config('feature_lock','filing')),
array('dislike', t('Dislike Posts'), t('Ability to dislike posts/comments'),false,get_config('feature_lock','dislike')),
array('star_posts', t('Star Posts'), t('Ability to mark special posts with a star indicator'),false,get_config('feature_lock','star_posts')),
diff --git a/include/feedutils.php b/include/feedutils.php
new file mode 100644
index 000000000..685b2f982
--- /dev/null
+++ b/include/feedutils.php
@@ -0,0 +1,1315 @@
+<?php
+
+
+/**
+ * @brief Generate an Atom feed.
+ *
+ * @param array $channel
+ * @param array $params
+ */
+function get_public_feed($channel, $params) {
+
+ $type = 'xml';
+ $begin = NULL_DATE;
+ $end = '';
+ $start = 0;
+ $records = 40;
+ $direction = 'desc';
+ $pages = 0;
+
+ if(! $params)
+ $params = array();
+
+ $params['type'] = ((x($params,'type')) ? $params['type'] : 'xml');
+ $params['begin'] = ((x($params,'begin')) ? $params['begin'] : NULL_DATE);
+ $params['end'] = ((x($params,'end')) ? $params['end'] : datetime_convert('UTC','UTC','now'));
+ $params['start'] = ((x($params,'start')) ? $params['start'] : 0);
+ $params['records'] = ((x($params,'records')) ? $params['records'] : 40);
+ $params['direction'] = ((x($params,'direction')) ? $params['direction'] : 'desc');
+ $params['pages'] = ((x($params,'pages')) ? intval($params['pages']) : 0);
+ $params['top'] = ((x($params,'top')) ? intval($params['top']) : 0);
+ $params['cat'] = ((x($params,'cat')) ? $params['cat'] : '');
+
+
+ // put a sane lower limit on feed requests if not specified
+
+// if($params['begin'] === NULL_DATE)
+// $params['begin'] = datetime_convert('UTC','UTC','now - 1 month');
+
+ switch($params['type']) {
+ case 'json':
+ header("Content-type: application/atom+json");
+ break;
+ case 'xml':
+ default:
+ header("Content-type: application/atom+xml");
+ break;
+ }
+
+ return get_feed_for($channel, get_observer_hash(), $params);
+}
+
+/**
+ * @brief
+ *
+ * @param array $channel
+ * @param string $observer_hash
+ * @param array $params
+ * @return string
+ */
+function get_feed_for($channel, $observer_hash, $params) {
+
+ if(! channel)
+ http_status_exit(401);
+
+ if($params['pages']) {
+ if(! perm_is_allowed($channel['channel_id'],$observer_hash,'view_pages'))
+ http_status_exit(403);
+ } else {
+ if(! perm_is_allowed($channel['channel_id'],$observer_hash,'view_stream'))
+ http_status_exit(403);
+ }
+ $items = items_fetch(array(
+ 'wall' => '1',
+ 'datequery' => $params['end'],
+ 'datequery2' => $params['begin'],
+ 'start' => $params['start'], // FIXME
+ 'records' => $params['records'], // FIXME
+ 'direction' => $params['direction'], // FIXME
+ 'pages' => $params['pages'],
+ 'order' => 'post',
+ 'top' => $params['top'],
+ 'cat' => $params['cat']
+ ), $channel, $observer_hash, CLIENT_MODE_NORMAL, App::$module);
+
+
+ $feed_template = get_markup_template('atom_feed.tpl');
+
+ $atom = '';
+
+ $atom .= replace_macros($feed_template, array(
+ '$version' => xmlify(Zotlabs\Lib\System::get_project_version()),
+ '$red' => xmlify(Zotlabs\Lib\System::get_platform_name()),
+ '$feed_id' => xmlify($channel['xchan_url']),
+ '$feed_title' => xmlify($channel['channel_name']),
+ '$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', 'now' , ATOM_TIME)) ,
+ '$hub' => '', // feed_hublinks(),
+ '$salmon' => '', // feed_salmonlinks($channel['channel_address']),
+ '$name' => xmlify($channel['channel_name']),
+ '$profile_page' => xmlify($channel['xchan_url']),
+ '$mimephoto' => xmlify($channel['xchan_photo_mimetype']),
+ '$photo' => xmlify($channel['xchan_photo_l']),
+ '$thumb' => xmlify($channel['xchan_photo_m']),
+ '$picdate' => '',
+ '$uridate' => '',
+ '$namdate' => '',
+ '$birthday' => '',
+ '$community' => '',
+ ));
+
+
+ call_hooks('atom_feed', $atom);
+
+ if($items) {
+ $type = 'html';
+ foreach($items as $item) {
+ if($item['item_private'])
+ continue;
+
+ /** @BUG $owner is undefined in this call */
+ $atom .= atom_entry($item, $type, null, $owner, true);
+ }
+ }
+
+ call_hooks('atom_feed_end', $atom);
+
+ $atom .= '</feed>' . "\r\n";
+
+ return $atom;
+}
+
+/**
+ * @brief
+ *
+ * @param array $item an associative array with
+ * * \b string \b verb
+ * @return string item's verb if set, default ACTIVITY_POST see boot.php
+ */
+function construct_verb($item) {
+ if ($item['verb'])
+ return $item['verb'];
+
+ return ACTIVITY_POST;
+}
+
+function construct_activity_object($item) {
+
+ if($item['obj']) {
+ $o = '<as:object>' . "\r\n";
+ $r = json_decode($item['obj'],false);
+
+ if(! $r)
+ return '';
+ if($r->type)
+ $o .= '<as:obj_type>' . xmlify($r->type) . '</as:obj_type>' . "\r\n";
+ if($r->id)
+ $o .= '<id>' . xmlify($r->id) . '</id>' . "\r\n";
+ if($r->title)
+ $o .= '<title>' . xmlify($r->title) . '</title>' . "\r\n";
+ if($r->links) {
+ /** @FIXME!! */
+ if(substr($r->link,0,1) === '<') {
+ $r->link = preg_replace('/\<link(.*?)\"\>/','<link$1"/>',$r->link);
+ $o .= $r->link;
+ }
+ else
+ $o .= '<link rel="alternate" type="text/html" href="' . xmlify($r->link) . '" />' . "\r\n";
+ }
+ if($r->content)
+ $o .= '<content type="html" >' . xmlify(bbcode($r->content)) . '</content>' . "\r\n";
+ $o .= '</as:object>' . "\r\n";
+ return $o;
+ }
+
+ return '';
+}
+
+function construct_activity_target($item) {
+
+ if($item['target']) {
+ $o = '<as:target>' . "\r\n";
+ $r = json_decode($item['target'],false);
+ if(! $r)
+ return '';
+ if($r->type)
+ $o .= '<as:obj_type>' . xmlify($r->type) . '</as:obj_type>' . "\r\n";
+ if($r->id)
+ $o .= '<id>' . xmlify($r->id) . '</id>' . "\r\n";
+ if($r->title)
+ $o .= '<title>' . xmlify($r->title) . '</title>' . "\r\n";
+ if($r->links) {
+ /** @FIXME !!! */
+ if(substr($r->link,0,1) === '<') {
+ if(strstr($r->link,'&') && (! strstr($r->link,'&amp;')))
+ $r->link = str_replace('&','&amp;', $r->link);
+ $r->link = preg_replace('/\<link(.*?)\"\>/','<link$1"/>',$r->link);
+ $o .= $r->link;
+ }
+ else
+ $o .= '<link rel="alternate" type="text/html" href="' . xmlify($r->link) . '" />' . "\r\n";
+ }
+ if($r->content)
+ $o .= '<content type="html" >' . xmlify(bbcode($r->content)) . '</content>' . "\r\n";
+
+ $o .= '</as:target>' . "\r\n";
+
+ return $o;
+ }
+
+ return '';
+}
+
+/**
+ * @param object $feed
+ * @param array $item
+ * @param[out] array $author
+ * @return multitype:multitype: string NULL number Ambigous <NULL, string, number> Ambigous <mixed, string> Ambigous <multitype:multitype:string Ambigous <NULL, string> , multitype:multitype:string unknown > multitype:NULL unknown
+ */
+function get_atom_elements($feed, $item, &$author) {
+
+ //$best_photo = array();
+
+ $res = array();
+
+ $found_author = $item->get_author();
+ if($found_author) {
+ $author['author_name'] = unxmlify($found_author->get_name());
+ $author['author_link'] = unxmlify($found_author->get_link());
+ $author['author_is_feed'] = false;
+ }
+ else {
+ $author['author_name'] = unxmlify($feed->get_title());
+ $author['author_link'] = unxmlify($feed->get_permalink());
+ $author['author_is_feed'] = true;
+ }
+
+ if(substr($author['author_link'],-1,1) == '/')
+ $author['author_link'] = substr($author['author_link'],0,-1);
+
+ $res['mid'] = base64url_encode(unxmlify($item->get_id()));
+ $res['title'] = unxmlify($item->get_title());
+ $res['body'] = unxmlify($item->get_content());
+ $res['plink'] = unxmlify($item->get_link(0));
+ $res['item_rss'] = 1;
+
+
+ // removing the content of the title if its identically to the body
+ // This helps with auto generated titles e.g. from tumblr
+
+ if (title_is_body($res["title"], $res["body"]))
+ $res['title'] = "";
+
+ if($res['plink'])
+ $base_url = implode('/', array_slice(explode('/',$res['plink']),0,3));
+ else
+ $base_url = '';
+
+ // look for a photo. We should check media size and find the best one,
+ // but for now let's just find any author photo
+
+ $rawauthor = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'author');
+
+ if($rawauthor && $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) {
+ $base = $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
+ foreach($base as $link) {
+ if(!x($author, 'author_photo') || ! $author['author_photo']) {
+ if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar')
+ $author['author_photo'] = unxmlify($link['attribs']['']['href']);
+ }
+ }
+ }
+
+ $rawactor = $item->get_item_tags(NAMESPACE_ACTIVITY, 'actor');
+
+ if($rawactor && activity_match($rawactor[0]['child'][NAMESPACE_ACTIVITY]['obj_type'][0]['data'],ACTIVITY_OBJ_PERSON)) {
+ $base = $rawactor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
+ if($base && count($base)) {
+ foreach($base as $link) {
+ if($link['attribs']['']['rel'] === 'alternate' && (! $res['author_link']))
+ $author['author_link'] = unxmlify($link['attribs']['']['href']);
+ if(!x($author, 'author_photo') || ! $author['author_photo']) {
+ if($link['attribs']['']['rel'] === 'avatar' || $link['attribs']['']['rel'] === 'photo')
+ $author['author_photo'] = unxmlify($link['attribs']['']['href']);
+ }
+ }
+ }
+ }
+
+ // check for a yahoo media element (github etc.)
+
+ if(! $author['author_photo']) {
+ $rawmedia = $item->get_item_tags(NAMESPACE_YMEDIA,'thumbnail');
+ if($rawmedia && $rawmedia[0]['attribs']['']['url']) {
+ $author['author_photo'] = strip_tags(unxmlify($rawmedia[0]['attribs']['']['url']));
+ }
+ }
+
+
+ // No photo/profile-link on the item - look at the feed level
+
+ if((! (x($author,'author_link'))) || (! (x($author,'author_photo')))) {
+ $rawauthor = $feed->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'author');
+ if($rawauthor && $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) {
+ $base = $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
+ foreach($base as $link) {
+ if($link['attribs']['']['rel'] === 'alternate' && (! $author['author_link'])) {
+ $author['author_link'] = unxmlify($link['attribs']['']['href']);
+ $author['author_is_feed'] = true;
+ }
+ if(! $author['author_photo']) {
+ if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar')
+ $author['author_photo'] = unxmlify($link['attribs']['']['href']);
+ }
+ }
+ }
+
+ $rawactor = $feed->get_feed_tags(NAMESPACE_ACTIVITY, 'subject');
+
+ if($rawactor && activity_match($rawactor[0]['child'][NAMESPACE_ACTIVITY]['obj_type'][0]['data'],ACTIVITY_OBJ_PERSON)) {
+ $base = $rawactor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
+
+ if($base && count($base)) {
+ foreach($base as $link) {
+ if($link['attribs']['']['rel'] === 'alternate' && (! $res['author_link']))
+ $author['author_link'] = unxmlify($link['attribs']['']['href']);
+ if(! (x($author,'author_photo'))) {
+ if($link['attribs']['']['rel'] === 'avatar' || $link['attribs']['']['rel'] === 'photo')
+ $author['author_photo'] = unxmlify($link['attribs']['']['href']);
+ }
+ }
+ }
+ }
+ }
+
+ $apps = $item->get_item_tags(NAMESPACE_STATUSNET,'notice_info');
+ if($apps && $apps[0]['attribs']['']['source']) {
+ $res['app'] = strip_tags(unxmlify($apps[0]['attribs']['']['source']));
+ }
+
+ /*
+ * If there's a copy of the body content which is guaranteed to have survived mangling in transit, use it.
+ */
+
+ $have_real_body = false;
+
+ $rawenv = $item->get_item_tags(NAMESPACE_DFRN, 'env');
+ if($rawenv) {
+ $have_real_body = true;
+ $res['body'] = $rawenv[0]['data'];
+ $res['body'] = str_replace(array(' ',"\t","\r","\n"), array('','','',''),$res['body']);
+ // make sure nobody is trying to sneak some html tags by us
+ $res['body'] = notags(base64url_decode($res['body']));
+
+ // We could probably turn these old Friendica bbcode bookmarks into bookmark tags but we'd have to
+ // create a term table item for them. For now just make sure they stay as links.
+
+ $res['body'] = preg_replace('/\[bookmark(.*?)\](.*?)\[\/bookmark\]/','[url$1]$2[/url]',$res['body']);
+ }
+
+ $res['body'] = limit_body_size($res['body']);
+
+ // It isn't certain at this point whether our content is plaintext or html and we'd be foolish to trust
+ // the content type. Our own network only emits text normally, though it might have been converted to
+ // html if we used a pubsubhubbub transport. But if we see even one html tag in our text, we will
+ // have to assume it is all html and needs to be purified.
+
+ // It doesn't matter all that much security wise - because before this content is used anywhere, we are
+ // going to escape any tags we find regardless, but this lets us import a limited subset of html from
+ // the wild, by sanitising it and converting supported tags to bbcode before we rip out any remaining
+ // html.
+
+ if((strpos($res['body'],'<') !== false) && (strpos($res['body'],'>') !== false)) {
+
+ $res['body'] = reltoabs($res['body'],$base_url);
+
+ $res['body'] = html2bb_video($res['body']);
+
+ $res['body'] = oembed_html2bbcode($res['body']);
+
+ $res['body'] = purify_html($res['body']);
+
+ $res['body'] = @html2bbcode($res['body']);
+ }
+ elseif(! $have_real_body) {
+
+ // it's not one of our messages and it has no tags
+ // so it's probably just text. We'll escape it just to be safe.
+
+ $res['body'] = escape_tags($res['body']);
+ }
+
+ if($res['plink'] && $res['title']) {
+ $res['body'] = '#^[url=' . $res['plink'] . ']' . $res['title'] . '[/url]' . "\n\n" . $res['body'];
+ $terms = array();
+ $terms[] = array(
+ 'otype' => TERM_OBJ_POST,
+ 'type' => TERM_BOOKMARK,
+ 'url' => $res['plink'],
+ 'term' => $res['title'],
+ );
+ }
+ elseif($res['plink']) {
+ $res['body'] = '#^[url]' . $res['plink'] . '[/url]' . "\n\n" . $res['body'];
+ $terms = array();
+ $terms[] = array(
+ 'otype' => TERM_OBJ_POST,
+ 'type' => TERM_BOOKMARK,
+ 'url' => $res['plink'],
+ 'term' => $res['plink'],
+ );
+ }
+
+ $private = $item->get_item_tags(NAMESPACE_DFRN,'private');
+ if($private && intval($private[0]['data']) > 0)
+ $res['item_private'] = ((intval($private[0]['data'])) ? 1 : 0);
+ else
+ $res['item_private'] = 0;
+
+ $rawlocation = $item->get_item_tags(NAMESPACE_DFRN, 'location');
+ if($rawlocation)
+ $res['location'] = unxmlify($rawlocation[0]['data']);
+
+ $rawcreated = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'published');
+ if($rawcreated)
+ $res['created'] = unxmlify($rawcreated[0]['data']);
+
+ $rawedited = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'updated');
+ if($rawedited)
+ $res['edited'] = unxmlify($rawedited[0]['data']);
+
+ if((x($res,'edited')) && (! (x($res,'created'))))
+ $res['created'] = $res['edited'];
+
+ if(! $res['created'])
+ $res['created'] = $item->get_date('c');
+
+ if(! $res['edited'])
+ $res['edited'] = $item->get_date('c');
+
+
+ // Disallow time travelling posts
+
+ $d1 = strtotime($res['created']);
+ $d2 = strtotime($res['edited']);
+ $d3 = strtotime('now');
+
+ if($d1 > $d3)
+ $res['created'] = datetime_convert();
+ if($d2 > $d3)
+ $res['edited'] = datetime_convert();
+
+ $res['created'] = datetime_convert('UTC','UTC',$res['created']);
+ $res['edited'] = datetime_convert('UTC','UTC',$res['edited']);
+
+ $rawowner = $item->get_item_tags(NAMESPACE_DFRN, 'owner');
+ if(! $rawowner)
+ $rawowner = $item->get_item_tags(NAMESPACE_ZOT,'owner');
+
+ if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])
+ $author['owner_name'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']);
+ elseif($rawowner[0]['child'][NAMESPACE_DFRN]['name'][0]['data'])
+ $author['owner_name'] = unxmlify($rawowner[0]['child'][NAMESPACE_DFRN]['name'][0]['data']);
+ if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])
+ $author['owner_link'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']);
+ elseif($rawowner[0]['child'][NAMESPACE_DFRN]['uri'][0]['data'])
+ $author['owner_link'] = unxmlify($rawowner[0]['child'][NAMESPACE_DFRN]['uri'][0]['data']);
+
+ if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) {
+ $base = $rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
+
+ foreach($base as $link) {
+ if(!x($author, 'owner_photo') || ! $author['owner_photo']) {
+ if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar')
+ $author['owner_photo'] = unxmlify($link['attribs']['']['href']);
+ }
+ }
+ }
+
+ $rawgeo = $item->get_item_tags(NAMESPACE_GEORSS,'point');
+ if($rawgeo)
+ $res['coord'] = unxmlify($rawgeo[0]['data']);
+
+
+ $rawverb = $item->get_item_tags(NAMESPACE_ACTIVITY, 'verb');
+
+ // select between supported verbs
+
+ if($rawverb) {
+ $res['verb'] = unxmlify($rawverb[0]['data']);
+ }
+
+ // translate OStatus unfollow to activity streams if it happened to get selected
+
+ if((x($res,'verb')) && ($res['verb'] === 'http://ostatus.org/schema/1.0/unfollow'))
+ $res['verb'] = ACTIVITY_UNFOLLOW;
+
+ $cats = $item->get_categories();
+ if($cats) {
+ if(is_null($terms))
+ $terms = array();
+ foreach($cats as $cat) {
+ $term = $cat->get_term();
+ if(! $term)
+ $term = $cat->get_label();
+ $scheme = $cat->get_scheme();
+ $termurl = '';
+ if($scheme && $term && stristr($scheme,'X-DFRN:')) {
+ $termtype = ((substr($scheme,7,1) === '#') ? TERM_HASHTAG : TERM_MENTION);
+ $termurl = unxmlify(substr($scheme,9));
+ }
+ else {
+ $termtype = TERM_CATEGORY;
+ }
+ $termterm = notags(trim(unxmlify($term)));
+
+ if($termterm) {
+ $terms[] = array(
+ 'otype' => TERM_OBJ_POST,
+ 'ttype' => $termtype,
+ 'url' => $termurl,
+ 'term' => $termterm,
+ );
+ }
+ }
+ }
+
+ if(! is_null($terms))
+ $res['term'] = $terms;
+
+ $attach = $item->get_enclosures();
+ if($attach) {
+ $res['attach'] = array();
+ foreach($attach as $att) {
+ $len = intval($att->get_length());
+ $link = str_replace(array(',','"'),array('%2D','%22'),notags(trim(unxmlify($att->get_link()))));
+ $title = str_replace(array(',','"'),array('%2D','%22'),notags(trim(unxmlify($att->get_title()))));
+ $type = str_replace(array(',','"'),array('%2D','%22'),notags(trim(unxmlify($att->get_type()))));
+ if(strpos($type,';'))
+ $type = substr($type,0,strpos($type,';'));
+ if((! $link) || (strpos($link,'http') !== 0))
+ continue;
+
+ if(! $title)
+ $title = ' ';
+ if(! $type)
+ $type = 'application/octet-stream';
+
+ $res['attach'][] = array('href' => $link, 'length' => $len, 'type' => $type, 'title' => $title );
+ }
+ }
+
+ $rawobj = $item->get_item_tags(NAMESPACE_ACTIVITY, 'object');
+
+ if($rawobj) {
+ $obj = array();
+
+ $child = $rawobj[0]['child'];
+ if($child[NAMESPACE_ACTIVITY]['obj_type'][0]['data']) {
+ $res['obj_type'] = $child[NAMESPACE_ACTIVITY]['obj_type'][0]['data'];
+ $obj['type'] = $child[NAMESPACE_ACTIVITY]['obj_type'][0]['data'];
+ }
+ if($child[NAMESPACE_ACTIVITY]['object-type'][0]['data']) {
+ $res['obj_type'] = $child[NAMESPACE_ACTIVITY]['object-type'][0]['data'];
+ $obj['type'] = $child[NAMESPACE_ACTIVITY]['object-type'][0]['data'];
+ }
+ if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'id') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data'])
+ $obj['id'] = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data'];
+ if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'link') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['link'])
+ $obj['link'] = encode_rel_links($child[SIMPLEPIE_NAMESPACE_ATOM_10]['link']);
+ if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'title') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['title'][0]['data'])
+ $obj['title'] = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['title'][0]['data'];
+ if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'content') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['content'][0]['data']) {
+ $body = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['content'][0]['data'];
+ if(! $body)
+ $body = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['summary'][0]['data'];
+ // preserve a copy of the original body content in case we later need to parse out any microformat information, e.g. events
+ $obj['orig'] = xmlify($body);
+ if((strpos($body,'<') !== false) || (strpos($body,'>') !== false)) {
+ $body = purify_html($body);
+ $body = html2bbcode($body);
+ }
+
+ $obj['content'] = $body;
+ }
+
+ $res['obj'] = $obj;
+ }
+
+ $rawobj = $item->get_item_tags(NAMESPACE_ACTIVITY, 'target');
+
+ if($rawobj) {
+ $obj = array();
+
+ $child = $rawobj[0]['child'];
+ if($child[NAMESPACE_ACTIVITY]['obj_type'][0]['data']) {
+ $res['tgt_type'] = $child[NAMESPACE_ACTIVITY]['obj_type'][0]['data'];
+ $obj['type'] = $child[NAMESPACE_ACTIVITY]['obj_type'][0]['data'];
+ }
+ if($child[NAMESPACE_ACTIVITY]['object-type'][0]['data']) {
+ $res['tgt_type'] = $child[NAMESPACE_ACTIVITY]['object-type'][0]['data'];
+ $obj['type'] = $child[NAMESPACE_ACTIVITY]['object-type'][0]['data'];
+ }
+ if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'id') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data'])
+ $obj['id'] = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data'];
+ if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'link') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['link'])
+ $obj['link'] = encode_rel_links($child[SIMPLEPIE_NAMESPACE_ATOM_10]['link']);
+ if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'title') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['title'][0]['data'])
+ $obj['title'] = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['title'][0]['data'];
+ if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'content') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['content'][0]['data']) {
+ $body = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['content'][0]['data'];
+ if(! $body)
+ $body = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['summary'][0]['data'];
+
+ // preserve a copy of the original body content in case we later need to parse out any microformat information, e.g. events
+ $obj['orig'] = xmlify($body);
+ if((strpos($body,'<') !== false) || (strpos($body,'>') !== false)) {
+ $body = purify_html($body);
+ $body = html2bbcode($body);
+ }
+
+ $obj['content'] = $body;
+ }
+
+ $res['target'] = $obj;
+ }
+
+ $arr = array('feed' => $feed, 'item' => $item, 'result' => $res);
+
+ call_hooks('parse_atom', $arr);
+ logger('get_atom_elements: author: ' . print_r($author,true),LOGGER_DATA);
+
+ logger('get_atom_elements: ' . print_r($res,true),LOGGER_DATA);
+
+ return $res;
+}
+
+function encode_rel_links($links) {
+ $o = array();
+ if(! ((is_array($links)) && (count($links))))
+ return $o;
+
+ foreach($links as $link) {
+ $l = array();
+ if($link['attribs']['']['rel'])
+ $l['rel'] = $link['attribs']['']['rel'];
+ if($link['attribs']['']['type'])
+ $l['type'] = $link['attribs']['']['type'];
+ if($link['attribs']['']['href'])
+ $l['href'] = $link['attribs']['']['href'];
+ if( (x($link['attribs'],NAMESPACE_MEDIA)) && $link['attribs'][NAMESPACE_MEDIA]['width'])
+ $l['width'] = $link['attribs'][NAMESPACE_MEDIA]['width'];
+ if( (x($link['attribs'],NAMESPACE_MEDIA)) && $link['attribs'][NAMESPACE_MEDIA]['height'])
+ $l['height'] = $link['attribs'][NAMESPACE_MEDIA]['height'];
+
+ if($l)
+ $o[] = $l;
+ }
+ return $o;
+}
+
+/**
+ * @brief Process atom feed and update anything/everything we might need to update.
+ *
+ * @param array $xml
+ * The (atom) feed to consume - RSS isn't as fully supported but may work for simple feeds.
+ * @param $importer
+ * The contact_record (joined to user_record) of the local user who owns this
+ * relationship. It is this person's stuff that is going to be updated.
+ * @param $contact
+ * The person who is sending us stuff. If not set, we MAY be processing a "follow" activity
+ * from an external network and MAY create an appropriate contact record. Otherwise, we MUST
+ * have a contact record.
+ * @param int $pass by default ($pass = 0) we cannot guarantee that a parent item has been
+ * imported prior to its children being seen in the stream unless we are certain
+ * of how the feed is arranged/ordered.
+ * * With $pass = 1, we only pull parent items out of the stream.
+ * * With $pass = 2, we only pull children (comments/likes).
+ *
+ * So running this twice, first with pass 1 and then with pass 2 will do the right
+ * thing regardless of feed ordering. This won't be adequate in a fully-threaded
+ * model where comments can have sub-threads. That would require some massive sorting
+ * to get all the feed items into a mostly linear ordering, and might still require
+ * recursion.
+ */
+function consume_feed($xml, $importer, &$contact, $pass = 0) {
+
+ require_once('library/simplepie/simplepie.inc');
+
+ if(! strlen($xml)) {
+ logger('consume_feed: empty input');
+ return;
+ }
+
+ $sys_expire = intval(get_config('system','default_expire_days'));
+ $chn_expire = intval($importer['channel_expire_days']);
+
+ $expire_days = $sys_expire;
+
+ if(($chn_expire != 0) && ($chn_expire < $sys_expire))
+ $expire_days = $chn_expire;
+
+ // logger('expire_days: ' . $expire_days);
+
+ $feed = new SimplePie();
+ $feed->set_raw_data($xml);
+ $feed->init();
+
+ if($feed->error())
+ logger('consume_feed: Error parsing XML: ' . $feed->error());
+
+ $permalink = $feed->get_permalink();
+
+ // Check at the feed level for updated contact name and/or photo
+
+ // process any deleted entries
+
+ $del_entries = $feed->get_feed_tags(NAMESPACE_TOMB, 'deleted-entry');
+ if(is_array($del_entries) && count($del_entries) && $pass != 2) {
+ foreach($del_entries as $dentry) {
+ $deleted = false;
+ if(isset($dentry['attribs']['']['ref'])) {
+ $mid = $dentry['attribs']['']['ref'];
+ $deleted = true;
+ if(isset($dentry['attribs']['']['when'])) {
+ $when = $dentry['attribs']['']['when'];
+ $when = datetime_convert('UTC','UTC', $when, 'Y-m-d H:i:s');
+ }
+ else
+ $when = datetime_convert('UTC','UTC','now','Y-m-d H:i:s');
+ }
+
+ if($deleted && is_array($contact)) {
+ $r = q("SELECT * from item where mid = '%s' and author_xchan = '%s' and uid = %d limit 1",
+ dbesc(base64url_encode($mid)),
+ dbesc($contact['xchan_hash']),
+ intval($importer['channel_id'])
+ );
+
+ if($r) {
+ $item = $r[0];
+
+ if(! intval($item['item_deleted'])) {
+ logger('consume_feed: deleting item ' . $item['id'] . ' mid=' . base64url_decode($item['mid']), LOGGER_DEBUG);
+ drop_item($item['id'],false);
+ }
+ }
+ }
+ }
+ }
+
+ // Now process the feed
+
+ if($feed->get_item_quantity()) {
+
+ logger('consume_feed: feed item count = ' . $feed->get_item_quantity(), LOGGER_DEBUG);
+
+ $items = $feed->get_items();
+
+ foreach($items as $item) {
+
+ $is_reply = false;
+ $item_id = base64url_encode($item->get_id());
+
+ logger('consume_feed: processing ' . $item_id, LOGGER_DEBUG);
+
+ $rawthread = $item->get_item_tags( NAMESPACE_THREAD,'in-reply-to');
+ if(isset($rawthread[0]['attribs']['']['ref'])) {
+ $is_reply = true;
+ $parent_mid = base64url_encode($rawthread[0]['attribs']['']['ref']);
+ }
+
+ if($is_reply) {
+
+ if($pass == 1)
+ continue;
+
+ // Have we seen it? If not, import it.
+
+ $item_id = base64url_encode($item->get_id());
+ $author = array();
+ $datarray = get_atom_elements($feed,$item,$author);
+
+ if($contact['xchan_network'] === 'rss') {
+ $datarray['public_policy'] = 'specific';
+ $datarray['comment_policy'] = 'none';
+ }
+
+ if((! x($author,'author_name')) || ($author['author_is_feed']))
+ $author['author_name'] = $contact['xchan_name'];
+ if((! x($author,'author_link')) || ($author['author_is_feed']))
+ $author['author_link'] = $contact['xchan_url'];
+ if((! x($author,'author_photo'))|| ($author['author_is_feed']))
+ $author['author_photo'] = $contact['xchan_photo_m'];
+
+ $datarray['author_xchan'] = '';
+
+ if($author['author_link'] != $contact['xchan_url']) {
+ $x = import_author_unknown(array('name' => $author['author_name'],'url' => $author['author_link'],'photo' => array('src' => $author['author_photo'])));
+ if($x)
+ $datarray['author_xchan'] = $x;
+ }
+ if(! $datarray['author_xchan'])
+ $datarray['author_xchan'] = $contact['xchan_hash'];
+
+ $datarray['owner_xchan'] = $contact['xchan_hash'];
+
+ $r = q("SELECT edited FROM item WHERE mid = '%s' AND uid = %d LIMIT 1",
+ dbesc($item_id),
+ intval($importer['channel_id'])
+ );
+
+
+ // Update content if 'updated' changes
+
+ if($r) {
+ if((x($datarray,'edited') !== false)
+ && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) {
+
+ // do not accept (ignore) an earlier edit than one we currently have.
+ if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited'])
+ continue;
+
+ update_feed_item($importer['channel_id'],$datarray);
+ }
+ continue;
+ }
+
+ $datarray['parent_mid'] = $parent_mid;
+ $datarray['aid'] = $importer['channel_account_id'];
+ $datarray['uid'] = $importer['channel_id'];
+
+ logger('consume_feed: ' . print_r($datarray,true),LOGGER_DATA);
+
+ $xx = item_store($datarray);
+ $r = $xx['item_id'];
+ continue;
+ }
+ else {
+
+ // Head post of a conversation. Have we seen it? If not, import it.
+
+ $item_id = base64url_encode($item->get_id());
+ $author = array();
+ $datarray = get_atom_elements($feed,$item,$author);
+
+ if($contact['xchan_network'] === 'rss') {
+ $datarray['public_policy'] = 'specific';
+ $datarray['comment_policy'] = 'none';
+ }
+
+
+ if(is_array($contact)) {
+ if((! x($author,'author_name')) || ($author['author_is_feed']))
+ $author['author_name'] = $contact['xchan_name'];
+ if((! x($author,'author_link')) || ($author['author_is_feed']))
+ $author['author_link'] = $contact['xchan_url'];
+ if((! x($author,'author_photo'))|| ($author['author_is_feed']))
+ $author['author_photo'] = $contact['xchan_photo_m'];
+ }
+
+ if((! x($author,'author_name')) || (! x($author,'author_link'))) {
+ logger('consume_feed: no author information! ' . print_r($author,true));
+ continue;
+ }
+
+ $datarray['author_xchan'] = '';
+
+ if(activity_match($datarray['verb'],ACTIVITY_FOLLOW) && $datarray['obj_type'] === ACTIVITY_OBJ_PERSON) {
+ $cb = array('item' => $datarray,'channel' => $importer, 'xchan' => null, 'author' => $author, 'caught' => false);
+ call_hooks('follow_from_feed',$cb);
+ if($cb['caught']) {
+ if($cb['return_code'])
+ http_status_exit($cb['return_code']);
+ continue;
+ }
+ }
+
+ if($author['author_link'] != $contact['xchan_url']) {
+ $x = import_author_unknown(array('name' => $author['author_name'],'url' => $author['author_link'],'photo' => array('src' => $author['author_photo'])));
+ if($x)
+ $datarray['author_xchan'] = $x;
+ }
+ if(! $datarray['author_xchan'])
+ $datarray['author_xchan'] = $contact['xchan_hash'];
+
+ $datarray['owner_xchan'] = $contact['xchan_hash'];
+
+ if(array_key_exists('created',$datarray) && $datarray['created'] != NULL_DATE && $expire_days) {
+ $t1 = $datarray['created'];
+ $t2 = datetime_convert('UTC','UTC','now - ' . $expire_days . 'days');
+ if($t1 < $t2) {
+ logger('feed content older than expiration. Ignoring.', LOGGER_DEBUG, LOG_INFO);
+ continue;
+ }
+ }
+
+
+
+ $r = q("SELECT edited FROM item WHERE mid = '%s' AND uid = %d LIMIT 1",
+ dbesc($item_id),
+ intval($importer['channel_id'])
+ );
+
+ // Update content if 'updated' changes
+
+ if($r) {
+ if((x($datarray,'edited') !== false)
+ && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) {
+
+ // do not accept (ignore) an earlier edit than one we currently have.
+ if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited'])
+ continue;
+
+ update_feed_item($importer['channel_id'],$datarray);
+ }
+
+ continue;
+ }
+
+ $datarray['parent_mid'] = $item_id;
+ $datarray['uid'] = $importer['channel_id'];
+ $datarray['aid'] = $importer['channel_account_id'];
+
+ if(! link_compare($author['owner_link'],$contact['xchan_url'])) {
+ logger('consume_feed: Correcting item owner.', LOGGER_DEBUG);
+ $author['owner_name'] = $contact['name'];
+ $author['owner_link'] = $contact['url'];
+ $author['owner_avatar'] = $contact['thumb'];
+ }
+
+ if(! post_is_importable($datarray,$contact))
+ continue;
+
+ logger('consume_feed: author ' . print_r($author,true),LOGGER_DEBUG);
+
+ logger('consume_feed: ' . print_r($datarray,true),LOGGER_DATA);
+
+ $xx = item_store($datarray);
+ $r = $xx['item_id'];
+ continue;
+ }
+ }
+ }
+}
+
+
+/**
+ * @brief Process atom feed and return the first post and structure
+ *
+ * @param array $xml
+ * The (atom) feed to consume - RSS isn't as fully supported but may work for simple feeds.
+ * @param $importer
+ * The contact_record (joined to user_record) of the local user who owns this
+ * relationship. It is this person's stuff that is going to be updated.
+ */
+
+function process_salmon_feed($xml, $importer) {
+
+ $ret = array();
+
+ require_once('library/simplepie/simplepie.inc');
+
+ if(! strlen($xml)) {
+ logger('process_feed: empty input');
+ return;
+ }
+
+ $feed = new SimplePie();
+ $feed->set_raw_data($xml);
+ $feed->init();
+
+ if($feed->error())
+ logger('Error parsing XML: ' . $feed->error());
+
+ $permalink = $feed->get_permalink();
+
+ if($feed->get_item_quantity()) {
+
+ // this should be exactly one
+
+ logger('feed item count = ' . $feed->get_item_quantity(), LOGGER_DEBUG);
+
+ $items = $feed->get_items();
+
+ foreach($items as $item) {
+
+ $item_id = base64url_encode($item->get_id());
+
+ logger('processing ' . $item_id, LOGGER_DEBUG);
+
+ $rawthread = $item->get_item_tags( NAMESPACE_THREAD,'in-reply-to');
+ if(isset($rawthread[0]['attribs']['']['ref'])) {
+ $is_reply = true;
+ $parent_mid = base64url_encode($rawthread[0]['attribs']['']['ref']);
+ }
+
+ if($is_reply)
+ $ret['parent_mid'] = $parent_mid;
+
+ $ret['author'] = array();
+
+ $datarray = get_atom_elements($feed,$item,$ret['author']);
+
+ // reset policies which are restricted by default for RSS connections
+ // This item is likely coming from GNU-social via salmon and allows public interaction
+ $datarray['public_policy'] = '';
+ $datarray['comment_policy'] = '';
+
+ $ret['item'] = $datarray;
+ }
+ }
+
+ return $ret;
+}
+
+/*
+ * Given an xml (atom) feed, find author and hub links
+ */
+
+
+function feed_meta($xml) {
+ require_once('library/simplepie/simplepie.inc');
+
+ $ret = array();
+
+ if(! strlen($xml)) {
+ logger('empty input');
+ return $ret;
+ }
+
+ $feed = new SimplePie();
+ $feed->set_raw_data($xml);
+ $feed->init();
+
+ if($feed->error()) {
+ logger('Error parsing XML: ' . $feed->error());
+ return $ret;
+ }
+
+ $ret['hubs'] = $feed->get_links('hub');
+
+// logger('consume_feed: hubs: ' . print_r($hubs,true), LOGGER_DATA);
+
+ $author = array();
+
+ $found_author = $feed->get_author();
+ if($found_author) {
+ $author['author_name'] = unxmlify($found_author->get_name());
+ $author['author_link'] = unxmlify($found_author->get_link());
+
+ $rawauthor = $feed->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'author');
+ logger('rawauthor: ' . print_r($rawauthor,true));
+
+ if($rawauthor) {
+ if($rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) {
+ $base = $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
+ foreach($base as $link) {
+ if(!x($author, 'author_photo') || ! $author['author_photo']) {
+ if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar') {
+ $author['author_photo'] = unxmlify($link['attribs']['']['href']);
+ break;
+ }
+ }
+ }
+ }
+ if($rawauthor[0]['child'][NAMESPACE_POCO]['displayName'][0]['data'])
+ $author['full_name'] = unxmlify($rawauthor[0]['child'][NAMESPACE_POCO]['displayName'][0]['data']);
+ if($rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])
+ $author['author_uri'] = unxmlify($rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']);
+
+ }
+ }
+
+ if(substr($author['author_link'],-1,1) == '/')
+ $author['author_link'] = substr($author['author_link'],0,-1);
+
+ $ret['author'] = $author;
+
+ return $ret;
+}
+
+
+
+function update_feed_item($uid,$datarray) {
+ logger('update_feed_item: not implemented! ' . $uid . ' ' . print_r($datarray,true), LOGGER_DATA);
+}
+
+
+function handle_feed($uid,$abook_id,$url) {
+
+ $channel = channelx_by_n($uid);
+ if(! $channel)
+ return;
+
+ $x = q("select * from abook left join xchan on abook_xchan = xchan_hash where abook_id = %d and abook_channel = %d limit 1",
+ dbesc($abook_id),
+ intval($uid)
+ );
+
+ $recurse = 0;
+ $z = z_fetch_url($url,false,$recurse,array('novalidate' => true));
+
+//logger('handle_feed:' . print_r($z,true));
+
+ if($z['success']) {
+ consume_feed($z['body'],$channel,$x[0],1);
+ consume_feed($z['body'],$channel,$x[0],2);
+ }
+}
+
+
+function atom_author($tag,$name,$uri,$h,$w,$type,$photo) {
+ $o = '';
+ if(! $tag)
+ return $o;
+
+ $name = xmlify($name);
+ $uri = xmlify($uri);
+ $h = intval($h);
+ $w = intval($w);
+ $photo = xmlify($photo);
+
+ $o .= "<$tag>\r\n";
+ $o .= "<name>$name</name>\r\n";
+ $o .= "<uri>$uri</uri>\r\n";
+ $o .= '<link rel="photo" type="' . $type . '" media:width="' . $w . '" media:height="' . $h . '" href="' . $photo . '" />' . "\r\n";
+ $o .= '<link rel="avatar" type="' . $type . '" media:width="' . $w . '" media:height="' . $h . '" href="' . $photo . '" />' . "\r\n";
+
+ call_hooks('atom_author', $o);
+
+ $o .= "</$tag>\r\n";
+
+ return $o;
+}
+
+function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) {
+
+ if(! $item['parent'])
+ return;
+
+ if($item['deleted'])
+ return '<at:deleted-entry ref="' . xmlify($item['mid']) . '" when="' . xmlify(datetime_convert('UTC','UTC',$item['edited'] . '+00:00',ATOM_TIME)) . '" />' . "\r\n";
+
+
+ create_export_photo_body($item);
+
+ if($item['allow_cid'] || $item['allow_gid'] || $item['deny_cid'] || $item['deny_gid'])
+ $body = fix_private_photos($item['body'],$owner['uid'],$item,$cid);
+ else
+ $body = $item['body'];
+
+ $o = "\r\n\r\n<entry>\r\n";
+
+ if(is_array($author))
+ $o .= atom_author('author',$author['xchan_name'],$author['xchan_url'],80,80,$author['xchan_photo_mimetype'],$author['xchan_photo_m']);
+ else
+ $o .= atom_author('author',$item['author']['xchan_name'],$item['author']['xchan_url'],80,80,$item['author']['xchan_photo_mimetype'], $item['author']['xchan_photo_m']);
+
+ $o .= atom_author('zot:owner',$item['owner']['xchan_name'],$item['owner']['xchan_url'],80,80,$item['owner']['xchan_photo_mimetype'],$item['owner']['xchan_photo_m']);
+
+ if(($item['parent'] != $item['id']) || ($item['parent_mid'] !== $item['mid']) || (($item['thr_parent'] !== '') && ($item['thr_parent'] !== $item['mid']))) {
+ $parent_item = (($item['thr_parent']) ? $item['thr_parent'] : $item['parent_mid']);
+ $o .= '<thr:in-reply-to ref="' . z_root() . '/display/' . xmlify($parent_item) . '" type="text/html" href="' . xmlify($item['plink']) . '" />' . "\r\n";
+ }
+
+ if(activity_match($item['obj_type'],ACTIVITY_OBJ_EVENT) && activity_match($item['verb'],ACTIVITY_POST)) {
+ $obj = ((is_array($item['obj'])) ? $item['obj'] : json_decode($item['obj'],true));
+
+ $o .= '<title>' . xmlify($item['title']) . '</title>' . "\r\n";
+ $o .= '<summary xmlns="urn:ietf:params:xml:ns:xcal">' . xmlify(bbcode($obj['title'])) . '</summary>' . "\r\n";
+ $o .= '<dtstart xmlns="urn:ietf:params:xml:ns:xcal">' . datetime_convert('UTC','UTC', $obj['dtstart'],'Ymd\\THis' . (($obj['adjust']) ? '\\Z' : '')) . '</dtstart>' . "\r\n";
+ $o .= '<dtend xmlns="urn:ietf:params:xml:ns:xcal">' . datetime_convert('UTC','UTC', $obj['dtend'],'Ymd\\THis' . (($obj['adjust']) ? '\\Z' : '')) . '</dtend>' . "\r\n";
+ $o .= '<location xmlns="urn:ietf:params:xml:ns:xcal">' . xmlify(bbcode($obj['location'])) . '</location>' . "\r\n";
+ $o .= '<content type="' . $type . '" >' . xmlify(bbcode($obj['description'])) . '</content>' . "\r\n";
+ }
+ else {
+ $o .= '<title>' . xmlify($item['title']) . '</title>' . "\r\n";
+ $o .= '<content type="' . $type . '" >' . xmlify(prepare_text($body,$item['mimetype'])) . '</content>' . "\r\n";
+ }
+
+ $o .= '<id>' . z_root() . '/display/' . xmlify($item['mid']) . '</id>' . "\r\n";
+ $o .= '<published>' . xmlify(datetime_convert('UTC','UTC',$item['created'] . '+00:00',ATOM_TIME)) . '</published>' . "\r\n";
+ $o .= '<updated>' . xmlify(datetime_convert('UTC','UTC',$item['edited'] . '+00:00',ATOM_TIME)) . '</updated>' . "\r\n";
+
+ $o .= '<link rel="alternate" type="text/html" href="' . xmlify($item['plink']) . '" />' . "\r\n";
+
+ if($item['location']) {
+ $o .= '<zot:location>' . xmlify($item['location']) . '</zot:location>' . "\r\n";
+ $o .= '<poco:address><poco:formatted>' . xmlify($item['location']) . '</poco:formatted></poco:address>' . "\r\n";
+ }
+
+ if($item['coord'])
+ $o .= '<georss:point>' . xmlify($item['coord']) . '</georss:point>' . "\r\n";
+
+ if(($item['item_private']) || strlen($item['allow_cid']) || strlen($item['allow_gid']) || strlen($item['deny_cid']) || strlen($item['deny_gid']))
+ $o .= '<zot:private>' . (($item['item_private']) ? $item['item_private'] : 1) . '</zot:private>' . "\r\n";
+
+ if($item['app'])
+ $o .= '<statusnet:notice_info local_id="' . $item['id'] . '" source="' . xmlify($item['app']) . '" ></statusnet:notice_info>' . "\r\n";
+
+ $verb = construct_verb($item);
+ $o .= '<as:verb>' . xmlify($verb) . '</as:verb>' . "\r\n";
+ $actobj = construct_activity_object($item);
+ if(strlen($actobj))
+ $o .= $actobj;
+ $actarg = construct_activity_target($item);
+ if(strlen($actarg))
+ $o .= $actarg;
+
+ // FIXME
+// $tags = item_getfeedtags($item);
+// if(count($tags)) {
+// foreach($tags as $t) {
+// $o .= '<category scheme="X-DFRN:' . xmlify($t[0]) . ':' . xmlify($t[1]) . '" term="' . xmlify($t[2]) . '" />' . "\r\n";
+// }
+// }
+
+// FIXME
+// $o .= item_getfeedattach($item);
+
+// $mentioned = get_mentions($item,$tags);
+// if($mentioned)
+// $o .= $mentioned;
+
+ call_hooks('atom_entry', $o);
+
+ $o .= '</entry>' . "\r\n";
+
+ return $o;
+}
+
+
+function gen_asld($items) {
+ $ret = array();
+ if(! $items)
+ return $ret;
+ foreach($items as $item) {
+ $ret[] = i2asld($item);
+ }
+ return $ret;
+}
+
+
+function i2asld($i) {
+
+ if(! $i)
+ return array();
+
+ $ret = array();
+
+ $ret['@context'] = array( 'http://www.w3.org/ns/activitystreams', 'zot' => 'http://purl.org/zot/protocol');
+
+ if($i['verb']) {
+ if(strpos(dirname($i['verb'],'activitystrea.ms/schema/1.0'))) {
+ $ret['@type'] = ucfirst(basename($i['verb']));
+ }
+ elseif(strpos(dirname($i['verb'],'purl.org/zot'))) {
+ $ret['@type'] = 'zot:' . ucfirst(basename($i['verb']));
+ }
+ }
+ $ret['@id'] = $i['plink'];
+
+ $ret['published'] = datetime_convert('UTC','UTC',$i['created'],ATOM_TIME);
+
+ // we need to pass the parent into this
+// if($i['id'] != $i['parent'] && $i['obj_type'] === ACTIVITY_OBJ_NOTE) {
+// $ret['inReplyTo'] = asencode_note
+// }
+
+ if($i['obj_type'] === ACTIVITY_OBJ_NOTE)
+ $ret['object'] = asencode_note($i);
+
+
+ $ret['actor'] = asencode_person($i['author']);
+
+
+ return $ret;
+
+}
+
+function asencode_note($i) {
+
+ $ret = array();
+
+ $ret['@type'] = 'Note';
+ $ret['@id'] = $i['plink'];
+ if($i['title'])
+ $ret['title'] = bbcode($i['title']);
+ $ret['content'] = bbcode($i['body']);
+ $ret['zot:owner'] = asencode_person($i['owner']);
+ $ret['published'] = datetime_convert('UTC','UTC',$i['created'],ATOM_TIME);
+ if($i['created'] !== $i['edited'])
+ $ret['updated'] = datetime_convert('UTC','UTC',$i['edited'],ATOM_TIME);
+
+ return $ret;
+}
+
+
+function asencode_person($p) {
+ $ret = array();
+ $ret['@type'] = 'Person';
+ $ret['@id'] = 'acct:' . $p['xchan_addr'];
+ $ret['displayName'] = $p['xchan_name'];
+ $ret['icon'] = array(
+ '@type' => 'Link',
+ 'mediaType' => $p['xchan_photo_mimetype'],
+ 'href' => $p['xchan_photo_m']
+ );
+ $ret['url'] = array(
+ '@type' => 'Link',
+ 'mediaType' => 'text/html',
+ 'href' => $p['xchan_url']
+ );
+
+ return $ret;
+}
diff --git a/include/follow.php b/include/follow.php
index 70e717cfc..e5a74f85e 100644
--- a/include/follow.php
+++ b/include/follow.php
@@ -17,7 +17,6 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
$result = array('success' => false,'message' => '');
- $a = get_app();
$is_red = false;
$is_http = ((strpos($url,'://') !== false) ? true : false);
@@ -56,11 +55,11 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
if($arr['channel']['success'])
$ret = $arr['channel'];
elseif(! $is_http)
- $ret = zot_finger($url,$channel);
+ $ret = Zotlabs\Zot\Finger::run($url,$channel);
- if($ret && $ret['success']) {
+ if($ret && is_array($ret) && $ret['success']) {
$is_red = true;
- $j = json_decode($ret['body'],true);
+ $j = $ret;
}
$my_perms = get_channel_default_perms($uid);
@@ -269,14 +268,14 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
if($r) {
$result['abook'] = $r[0];
- proc_run('php', 'include/notifier.php', 'permission_create', $result['abook']['abook_id']);
+ Zotlabs\Daemon\Master::Summon(array('Notifier', 'permission_create', $result['abook']['abook_id']));
}
$arr = array('channel_id' => $uid, 'channel' => $channel, 'abook' => $result['abook']);
call_hooks('follow', $arr);
- /** If there is a default group for this channel, add this member to it */
+ /** If there is a default group for this channel, add this connection to it */
if($default_group) {
require_once('include/group.php');
diff --git a/include/gprobe.php b/include/gprobe.php
deleted file mode 100644
index d8d893d9e..000000000
--- a/include/gprobe.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php /** @file */
-
-require_once('include/cli_startup.php');
-require_once('include/zot.php');
-
-function gprobe_run($argv, $argc){
-
- cli_startup();
-
- $a = get_app();
-
- if($argc != 2)
- return;
-
- $url = hex2bin($argv[1]);
-
- if(! strpos($url,'@'))
- return;
-
- $r = q("select * from xchan where xchan_addr = '%s' limit 1",
- dbesc($url)
- );
-
- if(! $r) {
- $x = zot_finger($url,null);
- if($x['success']) {
- $j = json_decode($x['body'],true);
- $y = import_xchan($j);
- }
- }
-
- return;
-}
-
-if (array_search(__file__,get_included_files())===0){
- gprobe_run($argv,$argc);
- killme();
-}
diff --git a/include/group.php b/include/group.php
index 748ec0c13..a4938b848 100644
--- a/include/group.php
+++ b/include/group.php
@@ -18,7 +18,7 @@ function group_add($uid,$name,$public = 0) {
intval($r)
);
if(count($z) && $z[0]['deleted']) {
- /*$r = q("UPDATE `groups` SET `deleted` = 0 WHERE `uid` = %d AND `name` = '%s' LIMIT 1",
+ /*$r = q("UPDATE `groups` SET `deleted` = 0 WHERE `uid` = %d AND `gname` = '%s' LIMIT 1",
intval($uid),
dbesc($name)
);*/
@@ -38,7 +38,7 @@ function group_add($uid,$name,$public = 0) {
} while($dups == true);
- $r = q("INSERT INTO `groups` ( hash, uid, visible, name )
+ $r = q("INSERT INTO `groups` ( hash, uid, visible, gname )
VALUES( '%s', %d, %d, '%s' ) ",
dbesc($hash),
intval($uid),
@@ -57,7 +57,7 @@ function group_add($uid,$name,$public = 0) {
function group_rmv($uid,$name) {
$ret = false;
if(x($uid) && x($name)) {
- $r = q("SELECT id, hash FROM `groups` WHERE `uid` = %d AND `name` = '%s' LIMIT 1",
+ $r = q("SELECT id, hash FROM `groups` WHERE `uid` = %d AND `gname` = '%s' LIMIT 1",
intval($uid),
dbesc($name)
);
@@ -108,7 +108,7 @@ function group_rmv($uid,$name) {
);
// remove group
- $r = q("UPDATE `groups` SET `deleted` = 1 WHERE `uid` = %d AND `name` = '%s'",
+ $r = q("UPDATE `groups` SET `deleted` = 1 WHERE `uid` = %d AND `gname` = '%s'",
intval($uid),
dbesc($name)
);
@@ -125,7 +125,7 @@ function group_rmv($uid,$name) {
function group_byname($uid,$name) {
if((! $uid) || (! strlen($name)))
return false;
- $r = q("SELECT * FROM `groups` WHERE `uid` = %d AND `name` = '%s' LIMIT 1",
+ $r = q("SELECT * FROM `groups` WHERE `uid` = %d AND `gname` = '%s' LIMIT 1",
intval($uid),
dbesc($name)
);
@@ -232,13 +232,13 @@ function mini_group_select($uid,$group = '') {
$grps = array();
$o = '';
- $r = q("SELECT * FROM `groups` WHERE `deleted` = 0 AND `uid` = %d ORDER BY `name` ASC",
+ $r = q("SELECT * FROM `groups` WHERE `deleted` = 0 AND `uid` = %d ORDER BY `gname` ASC",
intval($uid)
);
$grps[] = array('name' => '', 'hash' => '0', 'selected' => '');
if(count($r)) {
foreach($r as $rr) {
- $grps[] = array('name' => $rr['name'], 'id' => $rr['hash'], 'selected' => (($group == $rr['hash']) ? 'true' : ''));
+ $grps[] = array('name' => $rr['gname'], 'id' => $rr['hash'], 'selected' => (($group == $rr['hash']) ? 'true' : ''));
}
}
@@ -271,7 +271,7 @@ function group_side($every="connections",$each="group",$edit = false, $group_id
);
- $r = q("SELECT * FROM `groups` WHERE `deleted` = 0 AND `uid` = %d ORDER BY `name` ASC",
+ $r = q("SELECT * FROM `groups` WHERE `deleted` = 0 AND `uid` = %d ORDER BY `gname` ASC",
intval($_SESSION['uid'])
);
$member_of = array();
@@ -296,7 +296,7 @@ function group_side($every="connections",$each="group",$edit = false, $group_id
'id' => $rr['id'],
'enc_cid' => base64url_encode($cid),
'cid' => $cid,
- 'text' => $rr['name'],
+ 'text' => $rr['gname'],
'selected' => $selected,
'href' => (($mode == 0) ? $each.'?f=&gid='.$rr['id'] : $each."/".$rr['id']) . ((x($_GET,'new')) ? '&new=' . $_GET['new'] : '') . ((x($_GET,'order')) ? '&order=' . $_GET['order'] : ''),
'edit' => $groupedit,
@@ -340,7 +340,7 @@ function expand_groups($a) {
function member_of($c) {
- $r = q("SELECT `groups`.`name`, `groups`.`id` FROM `groups` LEFT JOIN `group_member` ON `group_member`.`gid` = `groups`.`id` WHERE `group_member`.`xchan` = '%s' AND `groups`.`deleted` = 0 ORDER BY `groups`.`name` ASC ",
+ $r = q("SELECT `groups`.`gname`, `groups`.`id` FROM `groups` LEFT JOIN `group_member` ON `group_member`.`gid` = `groups`.`id` WHERE `group_member`.`xchan` = '%s' AND `groups`.`deleted` = 0 ORDER BY `groups`.`gname` ASC ",
dbesc($c)
);
diff --git a/include/help.php b/include/help.php
index 13473164d..5518eeb70 100644
--- a/include/help.php
+++ b/include/help.php
@@ -24,8 +24,6 @@ function find_doc_file($s) {
function search_doc_files($s) {
- $a = get_app();
-
$itemspage = get_pconfig(local_channel(),'system','itemspage');
\App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20));
$pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']), intval(\App::$pager['start']));
diff --git a/include/hubloc.php b/include/hubloc.php
index 695cada3c..397646449 100644
--- a/include/hubloc.php
+++ b/include/hubloc.php
@@ -106,7 +106,7 @@ function remove_obsolete_hublocs() {
dbesc($rr['hubloc_hash'])
);
if($x) {
- proc_run('php','include/notifier.php','location',$x[0]['channel_id']);
+ Zotlabs\Daemon\Master::Summon(array('Notifier','location',$x[0]['channel_id']));
if($interval)
@time_sleep_until(microtime(true) + (float) $interval);
}
diff --git a/include/identity.php b/include/identity.php
deleted file mode 100644
index 807f850db..000000000
--- a/include/identity.php
+++ /dev/null
@@ -1,1949 +0,0 @@
-<?php
-/**
- * @file include/identity.php
- */
-
-require_once('include/zot.php');
-require_once('include/crypto.php');
-require_once('include/menu.php');
-
-/**
- * @brief Called when creating a new channel.
- *
- * Checks the account's service class and number of current channels to determine
- * whether creating a new channel is within the current service class constraints.
- *
- * @param int $account_id
- * Account_id used for this request
- *
- * @returns assoziative array with:
- * * \e boolean \b success boolean true if creating a new channel is allowed for this account
- * * \e string \b message (optional) if success is false, optional error text
- * * \e int \b total_identities
- */
-function identity_check_service_class($account_id) {
- $ret = array('success' => false, 'message' => '');
-
- $r = q("select count(channel_id) as total from channel where channel_account_id = %d and channel_removed = 0 ",
- intval($account_id)
- );
- if(! ($r && count($r))) {
- $ret['total_identities'] = 0;
- $ret['message'] = t('Unable to obtain identity information from database');
- return $ret;
- }
-
- $ret['total_identities'] = intval($r[0]['total']);
-
- if (! account_service_class_allows($account_id, 'total_identities', $r[0]['total'])) {
- $ret['message'] .= upgrade_message();
- return $ret;
- }
-
- $ret['success'] = true;
-
- return $ret;
-}
-
-
-/**
- * @brief Determine if the channel name is allowed when creating a new channel.
- *
- * This action is pluggable.
- * We're currently only checking for an empty name or one that exceeds our
- * storage limit (255 chars). 255 chars is probably going to create a mess on
- * some pages.
- * Plugins can set additional policies such as full name requirements, character
- * sets, multi-byte length, etc.
- *
- * @param string $name
- *
- * @returns nil return if name is valid, or string describing the error state.
- */
-function validate_channelname($name) {
-
- if (! $name)
- return t('Empty name');
-
- if (strlen($name) > 255)
- return t('Name too long');
-
- $arr = array('name' => $name);
- call_hooks('validate_channelname', $arr);
-
- if (x($arr, 'message'))
- return $arr['message'];
-}
-
-
-/**
- * @brief Create a system channel - which has no account attached.
- *
- */
-function create_sys_channel() {
- if (get_sys_channel())
- return;
-
- // Ensure that there is a host keypair.
-
- if ((! get_config('system', 'pubkey')) && (! get_config('system', 'prvkey'))) {
- require_once('include/crypto.php');
- $hostkey = new_keypair(4096);
- set_config('system', 'pubkey', $hostkey['pubkey']);
- set_config('system', 'prvkey', $hostkey['prvkey']);
- }
-
- create_identity(array(
- 'account_id' => 'xxx', // This will create an identity with an (integer) account_id of 0, but account_id is required
- 'nickname' => 'sys',
- 'name' => 'System',
- 'pageflags' => 0,
- 'publish' => 0,
- 'system' => 1
- ));
-}
-
-
-/**
- * @brief Returns the sys channel.
- *
- * @return array|boolean
- */
-function get_sys_channel() {
- $r = q("select * from channel left join xchan on channel_hash = xchan_hash where channel_system = 1 limit 1");
-
- if ($r)
- return $r[0];
-
- return false;
-}
-
-
-/**
- * @brief Checks if $channel_id is sys channel.
- *
- * @param int $channel_id
- * @return boolean
- */
-function is_sys_channel($channel_id) {
- $r = q("select channel_system from channel where channel_id = %d and channel_system = 1 limit 1",
- intval($channel_id)
- );
-
- if($r)
- return true;
-
- return false;
-}
-
-
-/**
- * @brief Return the total number of channels on this site.
- *
- * No filtering is performed except to check PAGE_REMOVED.
- *
- * @returns int|booleean
- * on error returns boolean false
- */
-function channel_total() {
- $r = q("select channel_id from channel where channel_removed = 0");
-
- if (is_array($r))
- return count($r);
-
- return false;
-}
-
-
-/**
- * @brief Create a new channel.
- *
- * Also creates the related xchan, hubloc, profile, and "self" abook records,
- * and an empty "Friends" group/collection for the new channel.
- *
- * @param array $arr assoziative array with:
- * * \e string \b name full name of channel
- * * \e string \b nickname "email/url-compliant" nickname
- * * \e int \b account_id to attach with this channel
- * * [other identity fields as desired]
- *
- * @returns array
- * 'success' => boolean true or false
- * 'message' => optional error text if success is false
- * 'channel' => if successful the created channel array
- */
-function create_identity($arr) {
-
- $ret = array('success' => false);
-
- if(! $arr['account_id']) {
- $ret['message'] = t('No account identifier');
- return $ret;
- }
- $ret = identity_check_service_class($arr['account_id']);
- if (!$ret['success']) {
- return $ret;
- }
- // save this for auto_friending
- $total_identities = $ret['total_identities'];
-
- $nick = mb_strtolower(trim($arr['nickname']));
- if(! $nick) {
- $ret['message'] = t('Nickname is required.');
- return $ret;
- }
-
- $name = escape_tags($arr['name']);
- $pageflags = ((x($arr,'pageflags')) ? intval($arr['pageflags']) : PAGE_NORMAL);
- $system = ((x($arr,'system')) ? intval($arr['system']) : 0);
- $name_error = validate_channelname($arr['name']);
- if($name_error) {
- $ret['message'] = $name_error;
- return $ret;
- }
-
- if($nick === 'sys' && (! $system)) {
- $ret['message'] = t('Reserved nickname. Please choose another.');
- return $ret;
- }
-
- if(check_webbie(array($nick)) !== $nick) {
- $ret['message'] = t('Nickname has unsupported characters or is already being used on this site.');
- return $ret;
- }
-
- $guid = zot_new_uid($nick);
- $key = new_keypair(4096);
-
- $sig = base64url_encode(rsa_sign($guid,$key['prvkey']));
- $hash = make_xchan_hash($guid,$sig);
-
- // Force a few things on the short term until we can provide a theme or app with choice
-
- $publish = 1;
-
- if(array_key_exists('publish', $arr))
- $publish = intval($arr['publish']);
-
- $primary = true;
-
- if(array_key_exists('primary', $arr))
- $primary = intval($arr['primary']);
-
- $role_permissions = null;
- $global_perms = get_perms();
-
- if(array_key_exists('permissions_role',$arr) && $arr['permissions_role']) {
- $role_permissions = get_role_perms($arr['permissions_role']);
-
- if($role_permissions) {
- foreach($role_permissions as $p => $v) {
- if(strpos($p,'channel_') !== false) {
- $perms_keys .= ', ' . $p;
- $perms_vals .= ', ' . intval($v);
- }
- if($p === 'directory_publish')
- $publish = intval($v);
- }
- }
- }
- else {
- $defperms = site_default_perms();
- foreach($defperms as $p => $v) {
- $perms_keys .= ', ' . $global_perms[$p][0];
- $perms_vals .= ', ' . intval($v);
- }
- }
-
- $expire = 0;
-
- $r = q("insert into channel ( channel_account_id, channel_primary,
- channel_name, channel_address, channel_guid, channel_guid_sig,
- channel_hash, channel_prvkey, channel_pubkey, channel_pageflags, channel_system, channel_expire_days, channel_timezone $perms_keys )
- values ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, '%s' $perms_vals ) ",
-
- intval($arr['account_id']),
- intval($primary),
- dbesc($name),
- dbesc($nick),
- dbesc($guid),
- dbesc($sig),
- dbesc($hash),
- dbesc($key['prvkey']),
- dbesc($key['pubkey']),
- intval($pageflags),
- intval($system),
- intval($expire),
- dbesc(App::$timezone)
- );
-
- $r = q("select * from channel where channel_account_id = %d
- and channel_guid = '%s' limit 1",
- intval($arr['account_id']),
- dbesc($guid)
- );
-
- if(! $r) {
- $ret['message'] = t('Unable to retrieve created identity');
- return $ret;
- }
-
- $ret['channel'] = $r[0];
-
- if(intval($arr['account_id']))
- set_default_login_identity($arr['account_id'],$ret['channel']['channel_id'],false);
-
- // Create a verified hub location pointing to this site.
-
- $r = q("insert into hubloc ( hubloc_guid, hubloc_guid_sig, hubloc_hash, hubloc_addr, hubloc_primary,
- hubloc_url, hubloc_url_sig, hubloc_host, hubloc_callback, hubloc_sitekey, hubloc_network )
- values ( '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s' )",
- dbesc($guid),
- dbesc($sig),
- dbesc($hash),
- dbesc($ret['channel']['channel_address'] . '@' . App::get_hostname()),
- intval($primary),
- dbesc(z_root()),
- dbesc(base64url_encode(rsa_sign(z_root(),$ret['channel']['channel_prvkey']))),
- dbesc(App::get_hostname()),
- dbesc(z_root() . '/post'),
- dbesc(get_config('system','pubkey')),
- dbesc('zot')
- );
- if(! $r)
- logger('create_identity: Unable to store hub location');
-
- $newuid = $ret['channel']['channel_id'];
-
- $r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_guid_sig, xchan_pubkey, xchan_photo_l, xchan_photo_m, xchan_photo_s, xchan_addr, xchan_url, xchan_follow, xchan_connurl, xchan_name, xchan_network, xchan_photo_date, xchan_name_date, xchan_system ) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d)",
- dbesc($hash),
- dbesc($guid),
- dbesc($sig),
- dbesc($key['pubkey']),
- dbesc(z_root() . "/photo/profile/l/{$newuid}"),
- dbesc(z_root() . "/photo/profile/m/{$newuid}"),
- dbesc(z_root() . "/photo/profile/s/{$newuid}"),
- dbesc($ret['channel']['channel_address'] . '@' . App::get_hostname()),
- dbesc(z_root() . '/channel/' . $ret['channel']['channel_address']),
- dbesc(z_root() . '/follow?f=&url=%s'),
- dbesc(z_root() . '/poco/' . $ret['channel']['channel_address']),
- dbesc($ret['channel']['channel_name']),
- dbesc('zot'),
- dbesc(datetime_convert()),
- dbesc(datetime_convert()),
- intval($system)
- );
-
- // Not checking return value.
- // It's ok for this to fail if it's an imported channel, and therefore the hash is a duplicate
-
- $r = q("INSERT INTO profile ( aid, uid, profile_guid, profile_name, is_default, publish, name, photo, thumb)
- VALUES ( %d, %d, '%s', '%s', %d, %d, '%s', '%s', '%s') ",
- intval($ret['channel']['channel_account_id']),
- intval($newuid),
- dbesc(random_string()),
- t('Default Profile'),
- 1,
- $publish,
- dbesc($ret['channel']['channel_name']),
- dbesc(z_root() . "/photo/profile/l/{$newuid}"),
- dbesc(z_root() . "/photo/profile/m/{$newuid}")
- );
-
- if($role_permissions) {
- $myperms = ((array_key_exists('perms_accept',$role_permissions)) ? intval($role_permissions['perms_accept']) : 0);
- }
- else
- $myperms = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
- |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
- |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE;
-
- $r = q("insert into abook ( abook_account, abook_channel, abook_xchan, abook_closeness, abook_created, abook_updated, abook_self, abook_my_perms )
- values ( %d, %d, '%s', %d, '%s', '%s', %d, %d ) ",
- intval($ret['channel']['channel_account_id']),
- intval($newuid),
- dbesc($hash),
- intval(0),
- dbesc(datetime_convert()),
- dbesc(datetime_convert()),
- intval(1),
- intval($myperms)
- );
-
- if(intval($ret['channel']['channel_account_id'])) {
-
- // Save our permissions role so we can perhaps call it up and modify it later.
-
- if($role_permissions) {
- set_pconfig($newuid,'system','permissions_role',$arr['permissions_role']);
- if(array_key_exists('online',$role_permissions))
- set_pconfig($newuid,'system','hide_presence',1-intval($role_permissions['online']));
- if(array_key_exists('perms_auto',$role_permissions))
- set_pconfig($newuid,'system','autoperms',(($role_permissions['perms_auto']) ? $role_permissions['perms_accept'] : 0));
- }
-
- // Create a group with yourself as a member. This allows somebody to use it
- // right away as a default group for new contacts.
-
- require_once('include/group.php');
- group_add($newuid, t('Friends'));
- group_add_member($newuid,t('Friends'),$ret['channel']['channel_hash']);
-
- // if our role_permissions indicate that we're using a default collection ACL, add it.
-
- if(is_array($role_permissions) && $role_permissions['default_collection']) {
- $r = q("select hash from groups where uid = %d and name = '%s' limit 1",
- intval($newuid),
- dbesc( t('Friends') )
- );
- if($r) {
- q("update channel set channel_default_group = '%s', channel_allow_gid = '%s' where channel_id = %d",
- dbesc($r[0]['hash']),
- dbesc('<' . $r[0]['hash'] . '>'),
- intval($newuid)
- );
- }
- }
-
- if(! $system) {
- set_pconfig($ret['channel']['channel_id'],'system','photo_path', '%Y-%m');
- set_pconfig($ret['channel']['channel_id'],'system','attach_path','%Y-%m');
- }
-
- // UNO: channel defaults, incl addons (addons specific pconfig will only work after the relevant addon is enabled by the admin). It's located here, so members can modify these defaults after the channel is created.
- if(UNO) {
- //diaspora protocol addon
- set_pconfig($ret['channel']['channel_id'],'system','diaspora_allowed', '1');
- set_pconfig($ret['channel']['channel_id'],'system','diaspora_public_comments', '1');
- set_pconfig($ret['channel']['channel_id'],'system','prevent_tag_hijacking', '0');
- }
-
- // auto-follow any of the hub's pre-configured channel choices.
- // Only do this if it's the first channel for this account;
- // otherwise it could get annoying. Don't make this list too big
- // or it will impact registration time.
-
- $accts = get_config('system','auto_follow');
- if(($accts) && (! $total_identities)) {
- require_once('include/follow.php');
- if(! is_array($accts))
- $accts = array($accts);
- foreach($accts as $acct) {
- if(trim($acct))
- new_contact($newuid,trim($acct),$ret['channel'],false);
- }
- }
-
- call_hooks('create_identity', $newuid);
-
- proc_run('php','include/directory.php', $ret['channel']['channel_id']);
- }
-
- $ret['success'] = true;
- return $ret;
-}
-
-/**
- * @brief Set default channel to be used on login.
- *
- * @param int $account_id
- * login account
- * @param int $channel_id
- * channel id to set as default for this account
- * @param boolean $force
- * if true, set this default unconditionally
- * if $force is false only do this if there is no existing default
- */
-function set_default_login_identity($account_id, $channel_id, $force = true) {
- $r = q("select account_default_channel from account where account_id = %d limit 1",
- intval($account_id)
- );
- if ($r) {
- if ((intval($r[0]['account_default_channel']) == 0) || ($force)) {
- $r = q("update account set account_default_channel = %d where account_id = %d",
- intval($channel_id),
- intval($account_id)
- );
- }
- }
-}
-
-/**
- * @brief Create an array representing the important channel information
- * which would be necessary to create a nomadic identity clone. This includes
- * most channel resources and connection information with the exception of content.
- *
- * @param int $channel_id
- * Channel_id to export
- * @param boolean $items
- * Include channel posts (wall items), default false
- *
- * @returns array
- * See function for details
- */
-function identity_basic_export($channel_id, $items = false) {
-
- /*
- * Red basic channel export
- */
-
- $ret = array();
-
- // use constants here as otherwise we will have no idea if we can import from a site
- // with a non-standard platform and version.
- $ret['compatibility'] = array('project' => PLATFORM_NAME, 'version' => STD_VERSION, 'database' => DB_UPDATE_VERSION, 'server_role' => Zotlabs\Project\System::get_server_role());
-
- $r = q("select * from channel where channel_id = %d limit 1",
- intval($channel_id)
- );
- if($r)
- $ret['channel'] = $r[0];
-
- $r = q("select * from profile where uid = %d",
- intval($channel_id)
- );
- if($r)
- $ret['profile'] = $r;
-
- $xchans = array();
- $r = q("select * from abook where abook_channel = %d ",
- intval($channel_id)
- );
- if($r) {
- $ret['abook'] = $r;
-
- for($x = 0; $x < count($ret['abook']); $x ++) {
- $xchans[] = $ret['abook'][$x]['abook_chan'];
- $abconfig = load_abconfig($ret['channel']['channel_hash'],$ret['abook'][$x]['abook_xchan']);
- if($abconfig)
- $ret['abook'][$x]['abconfig'] = $abconfig;
- }
- stringify_array_elms($xchans);
- }
-
- if($xchans) {
- $r = q("select * from xchan where xchan_hash in ( " . implode(',',$xchans) . " ) ");
- if($r)
- $ret['xchan'] = $r;
-
- $r = q("select * from hubloc where hubloc_hash in ( " . implode(',',$xchans) . " ) ");
- if($r)
- $ret['hubloc'] = $r;
- }
-
- $r = q("select * from `groups` where uid = %d ",
- intval($channel_id)
- );
-
- if($r)
- $ret['group'] = $r;
-
- $r = q("select * from group_member where uid = %d ",
- intval($channel_id)
- );
- if($r)
- $ret['group_member'] = $r;
-
- $r = q("select * from pconfig where uid = %d",
- intval($channel_id)
- );
- if($r)
- $ret['config'] = $r;
-
- $r = q("select type, data, os_storage from photo where scale = 4 and photo_usage = %d and uid = %d limit 1",
- intval(PHOTO_PROFILE),
- intval($channel_id)
- );
-
- if($r) {
- $ret['photo'] = array('type' => $r[0]['type'], 'data' => (($r[0]['os_storage']) ? base64url_encode(file_get_contents($r[0]['data'])) : base64url_encode($r[0]['data'])));
- }
-
- // All other term types will be included in items, if requested.
-
- $r = q("select * from term where type in (%d,%d) and uid = %d",
- intval(TERM_SAVEDSEARCH),
- intval(TERM_THING),
- intval($channel_id)
- );
- if($r)
- $ret['term'] = $r;
-
-
- // add psuedo-column obj_baseurl to aid in relocations
-
- $r = q("select obj.*, '%s' as obj_baseurl from obj where obj_channel = %d",
- dbesc(z_root()),
- intval($channel_id)
- );
-
- if($r)
- $ret['obj'] = $r;
-
- $r = q("select * from app where app_channel = %d and app_system = 0",
- intval($channel_id)
- );
- if($r) {
- for($x = 0; $x < count($r); $x ++) {
- $r[$x]['term'] = q("select * from term where otype = %d and oid = %d",
- intval(TERM_OBJ_APP),
- intval($r[$x]['id'])
- );
- }
- $ret['app'] = $r;
- }
-
- $r = q("select * from chatroom where cr_uid = %d",
- intval($channel_id)
- );
- if($r)
- $ret['chatroom'] = $r;
-
-
- $r = q("select * from event where uid = %d",
- intval($channel_id)
- );
- if($r)
- $ret['event'] = $r;
-
- $r = q("select * from item where resource_type = 'event' and uid = %d",
- intval($channel_id)
- );
- if($r) {
- $ret['event_item'] = array();
- xchan_query($r);
- $r = fetch_post_tags($r,true);
- foreach($r as $rr)
- $ret['event_item'][] = encode_item($rr,true);
- }
-
- $x = menu_list($channel_id);
- if($x) {
- $ret['menu'] = array();
- for($y = 0; $y < count($x); $y ++) {
- $m = menu_fetch($x[$y]['menu_name'],$channel_id,$ret['channel']['channel_hash']);
- if($m)
- $ret['menu'][] = menu_element($m);
- }
- }
-
- $x = menu_list($channel_id);
- if($x) {
- $ret['menu'] = array();
- for($y = 0; $y < count($x); $y ++) {
- $m = menu_fetch($x[$y]['menu_name'],$channel_id,$ret['channel']['channel_hash']);
- if($m)
- $ret['menu'][] = menu_element($m);
- }
- }
-
- $addon = array('channel_id' => $channel_id,'data' => $ret);
- call_hooks('identity_basic_export',$addon);
- $ret = $addon['data'];
-
-
- if(! $items)
- return $ret;
-
- $r = q("select * from likes where channel_id = %d",
- intval($channel_id)
- );
-
- if($r)
- $ret['likes'] = $r;
-
-
- $r = q("select * from conv where uid = %d",
- intval($channel_id)
- );
- if($r) {
- for($x = 0; $x < count($r); $x ++) {
- $r[$x]['subject'] = base64url_decode(str_rot47($r[$x]['subject']));
- }
- $ret['conv'] = $r;
- }
-
-
- $r = q("select * from mail where mail.uid = %d",
- intval($channel_id)
- );
- if($r) {
- $m = array();
- foreach($r as $rr) {
- xchan_mail_query($rr);
- $m[] = mail_encode($rr,true);
- }
- $ret['mail'] = $m;
- }
-
- $r = q("select item_id.*, item.mid from item_id left join item on item_id.iid = item.id where item_id.uid = %d",
- intval($channel_id)
- );
-
- if($r)
- $ret['item_id'] = $r;
-
- //$key = get_config('system','prvkey');
-
- /** @warning this may run into memory limits on smaller systems */
-
-
- /** export three months of posts. If you want to export and import all posts you have to start with
- * the first year and export/import them in ascending order.
- *
- * Don't export linked resource items. we'll have to pull those out separately.
- */
-
- $r = q("select * from item where item_wall = 1 and item_deleted = 0 and uid = %d and created > %s - INTERVAL %s and resource_type = '' order by created",
- intval($channel_id),
- db_utcnow(),
- db_quoteinterval('3 MONTH')
- );
- if($r) {
- $ret['item'] = array();
- xchan_query($r);
- $r = fetch_post_tags($r,true);
- foreach($r as $rr)
- $ret['item'][] = encode_item($rr,true);
- }
-
- return $ret;
-}
-
-
-function identity_export_year($channel_id,$year,$month = 0) {
-
- if(! $year)
- return array();
-
- if($month && $month <= 12) {
- $target_month = sprintf('%02d',$month);
- $target_month_plus = sprintf('%02d',$month+1);
- }
- else
- $target_month = '01';
-
- $ret = array();
-
- $mindate = datetime_convert('UTC','UTC',$year . '-' . $target_month . '-01 00:00:00');
- if($month && $month < 12)
- $maxdate = datetime_convert('UTC','UTC',$year . '-' . $target_month_plus . '-01 00:00:00');
- else
- $maxdate = datetime_convert('UTC','UTC',$year+1 . '-01-01 00:00:00');
-
- $r = q("select * from item where ( item_wall = 1 or item_type != %d ) and item_deleted = 0 and uid = %d and created >= '%s' and created < '%s' and resource_type = '' order by created",
- intval(ITEM_TYPE_POST),
- intval($channel_id),
- dbesc($mindate),
- dbesc($maxdate)
- );
-
- if($r) {
- $ret['item'] = array();
- xchan_query($r);
- $r = fetch_post_tags($r,true);
- foreach($r as $rr)
- $ret['item'][] = encode_item($rr,true);
- }
-
- $r = q("select item_id.*, item.mid from item_id left join item on item_id.iid = item.id where item_id.uid = %d
- and item.created >= '%s' and item.created < '%s' order by created ",
- intval($channel_id),
- dbesc($mindate),
- dbesc($maxdate)
- );
-
- if($r)
- $ret['item_id'] = $r;
-
-
- return $ret;
-}
-
-
-/**
- * @brief Loads a profile into the App structure.
- *
- * The function requires a writeable copy of the main App structure, and the
- * nickname of a valid channel.
- *
- * Permissions of the current observer are checked. If a restricted profile is available
- * to the current observer, that will be loaded instead of the channel default profile.
- *
- * The channel owner can set $profile to a valid profile_guid to preview that profile.
- *
- * The channel default theme is also selected for use, unless over-riden elsewhere.
- *
- * @param[in,out] App &$a
- * @param string $nickname
- * @param string $profile
- */
-function profile_load(&$a, $nickname, $profile = '') {
-
-// logger('profile_load: ' . $nickname . (($profile) ? ' profile: ' . $profile : ''));
-
- $user = q("select channel_id from channel where channel_address = '%s' and channel_removed = 0 limit 1",
- dbesc($nickname)
- );
-
- if(! $user) {
- logger('profile error: ' . App::$query_string, LOGGER_DEBUG);
- notice( t('Requested channel is not available.') . EOL );
- App::$error = 404;
- return;
- }
-
- // get the current observer
- $observer = App::get_observer();
-
- $can_view_profile = true;
-
- // Can the observer see our profile?
- require_once('include/permissions.php');
- if(! perm_is_allowed($user[0]['channel_id'],$observer['xchan_hash'],'view_profile')) {
- $can_view_profile = false;
- }
-
- if(! $profile) {
- $r = q("SELECT abook_profile FROM abook WHERE abook_xchan = '%s' and abook_channel = '%d' limit 1",
- dbesc($observer['xchan_hash']),
- intval($user[0]['channel_id'])
- );
- if($r)
- $profile = $r[0]['abook_profile'];
- }
- $p = null;
-
- if($profile) {
- $p = q("SELECT profile.uid AS profile_uid, profile.*, channel.* FROM profile
- LEFT JOIN channel ON profile.uid = channel.channel_id
- WHERE channel.channel_address = '%s' AND profile.profile_guid = '%s' LIMIT 1",
- dbesc($nickname),
- dbesc($profile)
- );
- }
-
- if(! $p) {
- $p = q("SELECT profile.uid AS profile_uid, profile.*, channel.* FROM profile
- LEFT JOIN channel ON profile.uid = channel.channel_id
- WHERE channel.channel_address = '%s' and channel_removed = 0
- AND profile.is_default = 1 LIMIT 1",
- dbesc($nickname)
- );
- }
-
- if(! $p) {
- logger('profile error: ' . App::$query_string, LOGGER_DEBUG);
- notice( t('Requested profile is not available.') . EOL );
- App::$error = 404;
- return;
- }
-
- $q = q("select * from profext where hash = '%s' and channel_id = %d",
- dbesc($p[0]['profile_guid']),
- intval($p[0]['profile_uid'])
- );
- if($q) {
-
- $extra_fields = array();
-
- require_once('include/identity.php');
- $profile_fields_basic = get_profile_fields_basic();
- $profile_fields_advanced = get_profile_fields_advanced();
-
- $advanced = ((feature_enabled(local_channel(),'advanced_profiles')) ? true : false);
- if($advanced)
- $fields = $profile_fields_advanced;
- else
- $fields = $profile_fields_basic;
-
- foreach($q as $qq) {
- foreach($fields as $k => $f) {
- if($k == $qq['k']) {
- $p[0][$k] = $qq['v'];
- $extra_fields[] = $k;
- break;
- }
- }
- }
- }
-
- $p[0]['extra_fields'] = $extra_fields;
-
- $z = q("select xchan_photo_date, xchan_addr from xchan where xchan_hash = '%s' limit 1",
- dbesc($p[0]['channel_hash'])
- );
- if($z) {
- $p[0]['picdate'] = $z[0]['xchan_photo_date'];
- $p[0]['reddress'] = str_replace('@','&#xff20;',$z[0]['xchan_addr']);
- }
-
- // fetch user tags if this isn't the default profile
-
- if(! $p[0]['is_default']) {
- $x = q("select `keywords` from `profile` where uid = %d and `is_default` = 1 limit 1",
- intval($p[0]['profile_uid'])
- );
- if($x && $can_view_profile)
- $p[0]['keywords'] = $x[0]['keywords'];
- }
-
- if($p[0]['keywords']) {
- $keywords = str_replace(array('#',',',' ',',,'),array('',' ',',',','),$p[0]['keywords']);
- if(strlen($keywords) && $can_view_profile)
- App::$page['htmlhead'] .= '<meta name="keywords" content="' . htmlentities($keywords,ENT_COMPAT,'UTF-8') . '" />' . "\r\n" ;
- }
-
- App::$profile = $p[0];
- App::$profile_uid = $p[0]['profile_uid'];
- App::$page['title'] = App::$profile['channel_name'] . " - " . App::$profile['channel_address'] . "@" . App::get_hostname();
-
- App::$profile['permission_to_view'] = $can_view_profile;
-
- if($can_view_profile) {
- $online = get_online_status($nickname);
- App::$profile['online_status'] = $online['result'];
- }
-
- if(local_channel()) {
- App::$profile['channel_mobile_theme'] = get_pconfig(local_channel(),'system', 'mobile_theme');
- $_SESSION['mobile_theme'] = App::$profile['channel_mobile_theme'];
- }
-
- /*
- * load/reload current theme info
- */
-
- $_SESSION['theme'] = $p[0]['channel_theme'];
-
-}
-
-function profile_edit_menu($uid) {
-
- $ret = array();
-
- $is_owner = (($uid == local_channel()) ? true : false);
-
- // show edit profile to profile owner
- if($is_owner) {
- $ret['menu'] = array(
- 'chg_photo' => t('Change profile photo'),
- 'entries' => array(),
- );
-
- $multi_profiles = feature_enabled(local_channel(), 'multi_profiles');
- if($multi_profiles) {
- $ret['multi'] = 1;
- $ret['edit'] = array(z_root(). '/profiles', t('Edit Profiles'), '', t('Edit'));
- $ret['menu']['cr_new'] = t('Create New Profile');
- }
- else {
- $ret['edit'] = array(z_root() . '/profiles/' . $uid, t('Edit Profile'), '', t('Edit'));
- }
-
- $r = q("SELECT * FROM profile WHERE uid = %d",
- local_channel()
- );
-
- if($r) {
- foreach($r as $rr) {
- if(!($multi_profiles || $rr['is_default']))
- continue;
- $ret['menu']['entries'][] = array(
- 'photo' => $rr['thumb'],
- 'id' => $rr['id'],
- 'alt' => t('Profile Image'),
- 'profile_name' => $rr['profile_name'],
- 'isdefault' => $rr['is_default'],
- 'visible_to_everybody' => t('Visible to everybody'),
- 'edit_visibility' => t('Edit visibility'),
- );
- }
- }
- }
-
- return $ret;
-
-}
-
-/**
- * @brief Formats a profile for display in the sidebar.
- *
- * It is very difficult to templatise the HTML completely
- * because of all the conditional logic.
- *
- * @param array $profile
- * @param int $block
- * @param boolean $show_connect
- *
- * @return HTML string suitable for sidebar inclusion
- * Exceptions: Returns empty string if passed $profile is wrong type or not populated
- */
-function profile_sidebar($profile, $block = 0, $show_connect = true, $zcard = false) {
-
- $observer = App::get_observer();
-
- $o = '';
- $location = false;
- $pdesc = true;
- $reddress = true;
-
- if(! perm_is_allowed($profile['uid'],((is_array($observer)) ? $observer['xchan_hash'] : ''),'view_profile')) {
- $block = true;
- }
-
- if((! is_array($profile)) && (! count($profile)))
- return $o;
-
- head_set_icon($profile['thumb']);
-
- if(is_sys_channel($profile['uid']))
- $show_connect = false;
-
- $profile['picdate'] = urlencode($profile['picdate']);
-
- call_hooks('profile_sidebar_enter', $profile);
-
- require_once('include/Contact.php');
-
- if($show_connect) {
-
- // This will return an empty string if we're already connected.
-
- $connect_url = rconnect_url($profile['uid'],get_observer_hash());
- $connect = (($connect_url) ? t('Connect') : '');
- if($connect_url)
- $connect_url = sprintf($connect_url,urlencode($profile['channel_address'] . '@' . App::get_hostname()));
-
- // premium channel - over-ride
-
- if($profile['channel_pageflags'] & PAGE_PREMIUM)
- $connect_url = z_root() . '/connect/' . $profile['channel_address'];
- }
-
- if((x($profile,'address') == 1)
- || (x($profile,'locality') == 1)
- || (x($profile,'region') == 1)
- || (x($profile,'postal_code') == 1)
- || (x($profile,'country_name') == 1))
- $location = t('Location:');
-
- $profile['homepage'] = linkify($profile['homepage'],true);
-
- $gender = ((x($profile,'gender') == 1) ? t('Gender:') : False);
- $marital = ((x($profile,'marital') == 1) ? t('Status:') : False);
- $homepage = ((x($profile,'homepage') == 1) ? t('Homepage:') : False);
- $profile['online'] = (($profile['online_status'] === 'online') ? t('Online Now') : False);
-
-// logger('online: ' . $profile['online']);
-
-
- if(($profile['hidewall'] && (! local_channel()) && (! remote_channel())) || $block ) {
- $location = $reddress = $pdesc = $gender = $marital = $homepage = False;
- }
-
- $firstname = ((strpos($profile['channel_name'],' '))
- ? trim(substr($profile['channel_name'],0,strpos($profile['channel_name'],' '))) : $profile['channel_name']);
- $lastname = (($firstname === $profile['channel_name']) ? '' : trim(substr($profile['channel_name'],strlen($firstname))));
-
- $diaspora = array(
- 'podloc' => z_root(),
- 'searchable' => (($block) ? 'false' : 'true'),
- 'nickname' => $profile['channel_address'],
- 'fullname' => $profile['channel_name'],
- 'firstname' => $firstname,
- 'lastname' => $lastname,
- 'photo300' => z_root() . '/photo/profile/300/' . $profile['uid'] . '.jpg',
- 'photo100' => z_root() . '/photo/profile/100/' . $profile['uid'] . '.jpg',
- 'photo50' => z_root() . '/photo/profile/50/' . $profile['uid'] . '.jpg',
- );
-
- $contact_block = contact_block();
-
- $channel_menu = false;
- $menu = get_pconfig($profile['uid'],'system','channel_menu');
- if($menu && ! $block) {
- require_once('include/menu.php');
- $m = menu_fetch($menu,$profile['uid'],$observer['xchan_hash']);
- if($m)
- $channel_menu = menu_render($m);
- }
- $menublock = get_pconfig($profile['uid'],'system','channel_menublock');
- if ($menublock && (! $block)) {
- $comanche = new Zotlabs\Render\Comanche();
- $channel_menu .= $comanche->block($menublock);
- }
-
- if($zcard)
- $tpl = get_markup_template('profile_vcard_short.tpl');
- else
- $tpl = get_markup_template('profile_vcard.tpl');
-
- require_once('include/widgets.php');
-
- if(! feature_enabled($profile['uid'],'hide_rating'))
- $z = widget_rating(array('target' => $profile['channel_hash']));
-
- $o .= replace_macros($tpl, array(
- '$zcard' => $zcard,
- '$profile' => $profile,
- '$connect' => $connect,
- '$connect_url' => $connect_url,
- '$location' => $location,
- '$gender' => $gender,
- '$pdesc' => $pdesc,
- '$marital' => $marital,
- '$homepage' => $homepage,
- '$chanmenu' => $channel_menu,
- '$diaspora' => $diaspora,
- '$reddress' => $reddress,
- '$rating' => $z,
- '$contact_block' => $contact_block,
- '$editmenu' => profile_edit_menu($profile['uid'])
- ));
-
- $arr = array('profile' => &$profile, 'entry' => &$o);
-
- call_hooks('profile_sidebar', $arr);
-
- return $o;
-}
-
-
-/**
- * @FIXME or remove
- */
- function get_birthdays() {
-
- $o = '';
-
- if(! local_channel())
- return $o;
-
- $bd_format = t('g A l F d') ; // 8 AM Friday January 18
- $bd_short = t('F d');
-
- $r = q("SELECT `event`.*, `event`.`id` AS `eid`, `contact`.* FROM `event`
- LEFT JOIN `contact` ON `contact`.`id` = `event`.`cid`
- WHERE `event`.`uid` = %d AND `type` = 'birthday' AND `start` < '%s' AND `finish` > '%s'
- ORDER BY `start` ASC ",
- intval(local_channel()),
- dbesc(datetime_convert('UTC','UTC','now + 6 days')),
- dbesc(datetime_convert('UTC','UTC','now'))
- );
-
- if($r && count($r)) {
- $total = 0;
- $now = strtotime('now');
- $cids = array();
-
- $istoday = false;
- foreach($r as $rr) {
- if(strlen($rr['name']))
- $total ++;
- if((strtotime($rr['start'] . ' +00:00') < $now) && (strtotime($rr['finish'] . ' +00:00') > $now))
- $istoday = true;
- }
- $classtoday = $istoday ? ' birthday-today ' : '';
- if($total) {
- foreach($r as &$rr) {
- if(! strlen($rr['name']))
- continue;
-
- // avoid duplicates
-
- if(in_array($rr['cid'],$cids))
- continue;
- $cids[] = $rr['cid'];
-
- $today = (((strtotime($rr['start'] . ' +00:00') < $now) && (strtotime($rr['finish'] . ' +00:00') > $now)) ? true : false);
- $sparkle = '';
- $url = $rr['url'];
- if($rr['network'] === NETWORK_DFRN) {
- $sparkle = " sparkle";
- $url = z_root() . '/redir/' . $rr['cid'];
- }
-
- $rr['link'] = $url;
- $rr['title'] = $rr['name'];
- $rr['date'] = day_translate(datetime_convert('UTC', App::$timezone, $rr['start'], $rr['adjust'] ? $bd_format : $bd_short)) . (($today) ? ' ' . t('[today]') : '');
- $rr['startime'] = Null;
- $rr['today'] = $today;
- }
- }
- }
- $tpl = get_markup_template("birthdays_reminder.tpl");
- return replace_macros($tpl, array(
- '$baseurl' => z_root(),
- '$classtoday' => $classtoday,
- '$count' => $total,
- '$event_reminders' => t('Birthday Reminders'),
- '$event_title' => t('Birthdays this week:'),
- '$events' => $r,
- '$lbr' => '{', // raw brackets mess up if/endif macro processing
- '$rbr' => '}'
- ));
- }
-
-
-/**
- * @FIXME
- */
- function get_events() {
-
- require_once('include/bbcode.php');
-
- if(! local_channel())
- return $o;
-
- $bd_format = t('g A l F d') ; // 8 AM Friday January 18
- $bd_short = t('F d');
-
- $r = q("SELECT `event`.* FROM `event`
- WHERE `event`.`uid` = %d AND `type` != 'birthday' AND `start` < '%s' AND `start` > '%s'
- ORDER BY `start` ASC ",
- intval(local_channel()),
- dbesc(datetime_convert('UTC','UTC','now + 6 days')),
- dbesc(datetime_convert('UTC','UTC','now - 1 days'))
- );
-
- if($r && count($r)) {
- $now = strtotime('now');
- $istoday = false;
- foreach($r as $rr) {
- if(strlen($rr['name']))
- $total ++;
-
- $strt = datetime_convert('UTC',$rr['convert'] ? App::$timezone : 'UTC',$rr['start'],'Y-m-d');
- if($strt === datetime_convert('UTC',App::$timezone,'now','Y-m-d'))
- $istoday = true;
- }
- $classtoday = (($istoday) ? 'event-today' : '');
-
- foreach($r as &$rr) {
- if($rr['adjust'])
- $md = datetime_convert('UTC',App::$timezone,$rr['start'],'Y/m');
- else
- $md = datetime_convert('UTC','UTC',$rr['start'],'Y/m');
- $md .= "/#link-".$rr['id'];
-
- $title = substr(strip_tags(bbcode($rr['desc'])),0,32) . '... ';
- if(! $title)
- $title = t('[No description]');
-
- $strt = datetime_convert('UTC',$rr['convert'] ? App::$timezone : 'UTC',$rr['start']);
- $today = ((substr($strt,0,10) === datetime_convert('UTC',App::$timezone,'now','Y-m-d')) ? true : false);
-
- $rr['link'] = $md;
- $rr['title'] = $title;
- $rr['date'] = day_translate(datetime_convert('UTC', $rr['adjust'] ? App::$timezone : 'UTC', $rr['start'], $bd_format)) . (($today) ? ' ' . t('[today]') : '');
- $rr['startime'] = $strt;
- $rr['today'] = $today;
- }
- }
-
- $tpl = get_markup_template("events_reminder.tpl");
- return replace_macros($tpl, array(
- '$baseurl' => z_root(),
- '$classtoday' => $classtoday,
- '$count' => count($r),
- '$event_reminders' => t('Event Reminders'),
- '$event_title' => t('Events this week:'),
- '$events' => $r,
- ));
- }
-
-
-function advanced_profile(&$a) {
- require_once('include/text.php');
- if(! perm_is_allowed(App::$profile['profile_uid'],get_observer_hash(),'view_profile'))
- return '';
-
- if(App::$profile['name']) {
-
- $profile_fields_basic = get_profile_fields_basic();
- $profile_fields_advanced = get_profile_fields_advanced();
-
- $advanced = ((feature_enabled(App::$profile['profile_uid'],'advanced_profiles')) ? true : false);
- if($advanced)
- $fields = $profile_fields_advanced;
- else
- $fields = $profile_fields_basic;
-
- $clean_fields = array();
- if($fields) {
- foreach($fields as $k => $v) {
- $clean_fields[] = trim($k);
- }
- }
-
-
-
- $tpl = get_markup_template('profile_advanced.tpl');
-
- $profile = array();
-
- $profile['fullname'] = array( t('Full Name:'), App::$profile['name'] ) ;
-
- if(App::$profile['gender']) $profile['gender'] = array( t('Gender:'), App::$profile['gender'] );
-
- $ob_hash = get_observer_hash();
- if($ob_hash && perm_is_allowed(App::$profile['profile_uid'],$ob_hash,'post_like')) {
- $profile['canlike'] = true;
- $profile['likethis'] = t('Like this channel');
- $profile['profile_guid'] = App::$profile['profile_guid'];
- }
-
- $likers = q("select liker, xchan.* from likes left join xchan on liker = xchan_hash where channel_id = %d and target_type = '%s' and verb = '%s'",
- intval(App::$profile['profile_uid']),
- dbesc(ACTIVITY_OBJ_PROFILE),
- dbesc(ACTIVITY_LIKE)
- );
- $profile['likers'] = array();
- $profile['like_count'] = count($likers);
- $profile['like_button_label'] = tt('Like','Likes',$profile['like_count'],'noun');
- if($likers) {
- foreach($likers as $l)
- $profile['likers'][] = array('name' => $l['xchan_name'],'photo' => zid($l['xchan_photo_s']), 'url' => zid($l['xchan_url']));
- }
-
- if((App::$profile['dob']) && (App::$profile['dob'] != '0000-00-00')) {
-
- $val = '';
-
- if((substr(App::$profile['dob'],5,2) === '00') || (substr(App::$profile['dob'],8,2) === '00'))
- $val = substr(App::$profile['dob'],0,4);
-
- $year_bd_format = t('j F, Y');
- $short_bd_format = t('j F');
-
- if(! $val) {
- $val = ((intval(App::$profile['dob']))
- ? day_translate(datetime_convert('UTC','UTC',App::$profile['dob'] . ' 00:00 +00:00',$year_bd_format))
- : day_translate(datetime_convert('UTC','UTC','2001-' . substr(App::$profile['dob'],5) . ' 00:00 +00:00',$short_bd_format)));
- }
- $profile['birthday'] = array( t('Birthday:'), $val);
- }
-
- if($age = age(App::$profile['dob'],App::$profile['timezone'],''))
- $profile['age'] = array( t('Age:'), $age );
-
- if(App::$profile['marital'])
- $profile['marital'] = array( t('Status:'), App::$profile['marital']);
-
- if(App::$profile['with'])
- $profile['marital']['with'] = bbcode(App::$profile['with']);
-
- if(strlen(App::$profile['howlong']) && App::$profile['howlong'] !== NULL_DATE) {
- $profile['howlong'] = relative_date(App::$profile['howlong'], t('for %1$d %2$s'));
- }
-
- if(App::$profile['sexual']) $profile['sexual'] = array( t('Sexual Preference:'), App::$profile['sexual'] );
-
- if(App::$profile['homepage']) $profile['homepage'] = array( t('Homepage:'), linkify(App::$profile['homepage']) );
-
- if(App::$profile['hometown']) $profile['hometown'] = array( t('Hometown:'), linkify(App::$profile['hometown']) );
-
- if(App::$profile['keywords']) $profile['keywords'] = array( t('Tags:'), App::$profile['keywords']);
-
- if(App::$profile['politic']) $profile['politic'] = array( t('Political Views:'), App::$profile['politic']);
-
- if(App::$profile['religion']) $profile['religion'] = array( t('Religion:'), App::$profile['religion']);
-
- if($txt = prepare_text(App::$profile['about'])) $profile['about'] = array( t('About:'), $txt );
-
- if($txt = prepare_text(App::$profile['interest'])) $profile['interest'] = array( t('Hobbies/Interests:'), $txt);
-
- if($txt = prepare_text(App::$profile['likes'])) $profile['likes'] = array( t('Likes:'), $txt);
-
- if($txt = prepare_text(App::$profile['dislikes'])) $profile['dislikes'] = array( t('Dislikes:'), $txt);
-
- if($txt = prepare_text(App::$profile['contact'])) $profile['contact'] = array( t('Contact information and Social Networks:'), $txt);
-
- if($txt = prepare_text(App::$profile['channels'])) $profile['channels'] = array( t('My other channels:'), $txt);
-
- if($txt = prepare_text(App::$profile['music'])) $profile['music'] = array( t('Musical interests:'), $txt);
-
- if($txt = prepare_text(App::$profile['book'])) $profile['book'] = array( t('Books, literature:'), $txt);
-
- if($txt = prepare_text(App::$profile['tv'])) $profile['tv'] = array( t('Television:'), $txt);
-
- if($txt = prepare_text(App::$profile['film'])) $profile['film'] = array( t('Film/dance/culture/entertainment:'), $txt);
-
- if($txt = prepare_text(App::$profile['romance'])) $profile['romance'] = array( t('Love/Romance:'), $txt);
-
- if($txt = prepare_text(App::$profile['work'])) $profile['work'] = array( t('Work/employment:'), $txt);
-
- if($txt = prepare_text(App::$profile['education'])) $profile['education'] = array( t('School/education:'), $txt );
-
- if(App::$profile['extra_fields']) {
- foreach(App::$profile['extra_fields'] as $f) {
- $x = q("select * from profdef where field_name = '%s' limit 1",
- dbesc($f)
- );
- if($x && $txt = prepare_text(App::$profile[$f]))
- $profile[$f] = array( $x[0]['field_desc'] . ':',$txt);
- }
- $profile['extra_fields'] = App::$profile['extra_fields'];
- }
-
- $things = get_things(App::$profile['profile_guid'],App::$profile['profile_uid']);
-
-// logger('mod_profile: things: ' . print_r($things,true), LOGGER_DATA);
-
- return replace_macros($tpl, array(
- '$title' => t('Profile'),
- '$canlike' => (($profile['canlike'])? true : false),
- '$likethis' => t('Like this thing'),
- '$profile' => $profile,
- '$fields' => $clean_fields,
- '$editmenu' => profile_edit_menu(App::$profile['profile_uid']),
- '$things' => $things
- ));
- }
-
- return '';
-}
-
-
-function get_my_url() {
- if(x($_SESSION, 'zrl_override'))
- return $_SESSION['zrl_override'];
- if(x($_SESSION, 'my_url'))
- return $_SESSION['my_url'];
-
- return false;
-}
-
-function get_my_address() {
- if(x($_SESSION, 'zid_override'))
- return $_SESSION['zid_override'];
- if(x($_SESSION, 'my_address'))
- return $_SESSION['my_address'];
-
- return false;
-}
-
-/**
- * @brief
- *
- * If somebody arrives at our site using a zid, add their xchan to our DB if we don't have it already.
- * And if they aren't already authenticated here, attempt reverse magic auth.
- *
- * @param App &$a
- *
- * @hooks 'zid_init'
- * string 'zid' - their zid
- * string 'url' - the destination url
- */
-function zid_init(&$a) {
- $tmp_str = get_my_address();
- if(validate_email($tmp_str)) {
- proc_run('php','include/gprobe.php',bin2hex($tmp_str));
- $arr = array('zid' => $tmp_str, 'url' => App::$cmd);
- call_hooks('zid_init',$arr);
- if(! local_channel()) {
- $r = q("select * from hubloc where hubloc_addr = '%s' order by hubloc_connected desc limit 1",
- dbesc($tmp_str)
- );
- if($r && remote_channel() && remote_channel() === $r[0]['hubloc_hash'])
- return;
- logger('zid_init: not authenticated. Invoking reverse magic-auth for ' . $tmp_str);
- // try to avoid recursion - but send them home to do a proper magic auth
- $query = App::$query_string;
- $query = str_replace(array('?zid=','&zid='),array('?rzid=','&rzid='),$query);
- $dest = '/' . urlencode($query);
- if($r && ($r[0]['hubloc_url'] != z_root()) && (! strstr($dest,'/magic')) && (! strstr($dest,'/rmagic'))) {
- goaway($r[0]['hubloc_url'] . '/magic' . '?f=&rev=1&dest=' . z_root() . $dest);
- }
- else
- logger('zid_init: no hubloc found.');
- }
- }
-}
-
-/**
- * @brief Adds a zid parameter to a url.
- *
- * @param string $s
- * The url to accept the zid
- * @param boolean $address
- * $address to use instead of session environment
- * @return string
- *
- * @hooks 'zid'
- * string url - url to accept zid
- * string zid - urlencoded zid
- * string result - the return string we calculated, change it if you want to return something else
- */
-function zid($s,$address = '') {
- if (! strlen($s) || strpos($s,'zid='))
- return $s;
-
- $has_params = ((strpos($s,'?')) ? true : false);
- $num_slashes = substr_count($s, '/');
- if (! $has_params)
- $has_params = ((strpos($s, '&')) ? true : false);
-
- $achar = strpos($s,'?') ? '&' : '?';
-
- $mine = get_my_url();
- $myaddr = (($address) ? $address : get_my_address());
-
- /** @FIXME checking against our own channel url is no longer reliable. We may have a lot
- * of urls attached to out channel. Should probably match against our site, since we
- * will not need to remote authenticate on our own site anyway.
- */
-
- if ($mine && $myaddr && (! link_compare($mine,$s)))
- $zurl = $s . (($num_slashes >= 3) ? '' : '/') . $achar . 'zid=' . urlencode($myaddr);
- else
- $zurl = $s;
-
- $arr = array('url' => $s, 'zid' => urlencode($myaddr), 'result' => $zurl);
- call_hooks('zid', $arr);
-
- return $arr['result'];
-}
-
-// Used from within PCSS themes to set theme parameters. If there's a
-// puid request variable, that is the "page owner" and normally their theme
-// settings take precedence; unless a local user sets the "always_my_theme"
-// system pconfig, which means they don't want to see anybody else's theme
-// settings except their own while on this site.
-
-function get_theme_uid() {
- $uid = (($_REQUEST['puid']) ? intval($_REQUEST['puid']) : 0);
- if(local_channel()) {
- if((get_pconfig(local_channel(),'system','always_my_theme')) || (! $uid))
- return local_channel();
- }
- if(! $uid) {
- $x = get_sys_channel();
- if($x)
- return $x['channel_id'];
- }
-
- return $uid;
-}
-
-/**
-* @brief Retrieves the path of the default_profile_photo for this system
-* with the specified size.
-*
-* @param int $size
-* one of (300, 80, 48)
-* @returns string
-*/
-function get_default_profile_photo($size = 300) {
- $scheme = get_config('system','default_profile_photo');
- if(! $scheme)
- $scheme = 'rainbow_man';
-
- return 'images/default_profile_photos/' . $scheme . '/' . $size . '.png';
-}
-
-/**
- * @brief Test whether a given identity is NOT a member of the Hubzilla.
- *
- * @param string $s;
- * xchan_hash of the identity in question
- * @returns boolean true or false
- */
-function is_foreigner($s) {
- return((strpbrk($s, '.:@')) ? true : false);
-}
-
-/**
- * @brief Test whether a given identity is a member of the Hubzilla.
- *
- * @param string $s;
- * xchan_hash of the identity in question
- * @returns boolean true or false
- */
-function is_member($s) {
- return((is_foreigner($s)) ? false : true);
-}
-
-function get_online_status($nick) {
-
- $ret = array('result' => false);
-
- if(get_config('system','block_public') && ! local_channel() && ! remote_channel())
- return $ret;
-
- $r = q("select channel_id, channel_hash from channel where channel_address = '%s' limit 1",
- dbesc(argv(1))
- );
- if($r) {
- $hide = get_pconfig($r[0]['channel_id'],'system','hide_online_status');
- if($hide)
- return $ret;
- $x = q("select cp_status from chatpresence where cp_xchan = '%s' and cp_room = 0 limit 1",
- dbesc($r[0]['channel_hash'])
- );
- if($x)
- $ret['result'] = $x[0]['cp_status'];
- }
-
- return $ret;
-}
-
-
-function remote_online_status($webbie) {
-
- $result = false;
- $r = q("select * from hubloc where hubloc_addr = '%s' limit 1",
- dbesc($webbie)
- );
- if(! $r)
- return $result;
-
- $url = $r[0]['hubloc_url'] . '/online/' . substr($webbie,0,strpos($webbie,'@'));
-
- $x = z_fetch_url($url);
- if($x['success']) {
- $j = json_decode($x['body'],true);
- if($j)
- $result = (($j['result']) ? $j['result'] : false);
- }
-
- return $result;
-}
-
-
-function get_channel_by_nick($nick) {
- $r = q("select * from channel where channel_address = '%s' limit 1",
- dbesc($nick)
- );
- return(($r) ? $r[0] : false);
-
-}
-
-/**
- * @brief
- *
- * @return string
- */
-function identity_selector() {
- if (local_channel()) {
- $r = q("select channel.*, xchan.* from channel left join xchan on channel.channel_hash = xchan.xchan_hash where channel.channel_account_id = %d and channel_removed = 0 order by channel_name ",
- intval(get_account_id())
- );
- if (count($r) > 1) {
- //$account = App::get_account();
- $o = replace_macros(get_markup_template('channel_id_select.tpl'), array(
- '$channels' => $r,
- '$selected' => local_channel()
- ));
- return $o;
- }
- }
-
- return '';
-}
-
-
-function is_public_profile() {
- if(! local_channel())
- return false;
- if(intval(get_config('system','block_public')))
- return false;
- $channel = App::get_channel();
- if($channel && $channel['channel_r_profile'] == PERMS_PUBLIC)
- return true;
-
- return false;
-}
-
-function get_profile_fields_basic($filter = 0) {
-
- $profile_fields_basic = (($filter == 0) ? get_config('system','profile_fields_basic') : null);
- if(! $profile_fields_basic)
- $profile_fields_basic = array('name','pdesc','chandesc','gender','dob','dob_tz','address','locality','region','postal_code','country_name','marital','sexual','homepage','hometown','keywords','about','contact');
-
- $x = array();
- if($profile_fields_basic)
- foreach($profile_fields_basic as $f)
- $x[$f] = 1;
-
- return $x;
-}
-
-
-function get_profile_fields_advanced($filter = 0) {
- $basic = get_profile_fields_basic($filter);
- $profile_fields_advanced = (($filter == 0) ? get_config('system','profile_fields_advanced') : null);
- if(! $profile_fields_advanced)
- $profile_fields_advanced = array('with','howlong','politic','religion','likes','dislikes','interest','channels','music','book','film','tv','romance','work','education');
-
- $x = array();
- if($basic)
- foreach($basic as $f => $v)
- $x[$f] = $v;
-
- if($profile_fields_advanced)
- foreach($profile_fields_advanced as $f)
- $x[$f] = 1;
-
- return $x;
-}
-
-/**
- * @brief Clear notifyflags for a channel.
- *
- * Most likely during bulk import of content or other activity that is likely
- * to generate huge amounts of undesired notifications.
- *
- * @param int $channel_id
- * The channel to disable notifications for
- * @returns int
- * Current notification flag value. Send this to notifications_on() to restore the channel settings when finished
- * with the activity requiring notifications_off();
- */
-function notifications_off($channel_id) {
- $r = q("select channel_notifyflags from channel where channel_id = %d limit 1",
- intval($channel_id)
- );
- q("update channel set channel_notifyflags = 0 where channel_id = %d",
- intval($channel_id)
- );
-
- return intval($r[0]['channel_notifyflags']);
-}
-
-
-function notifications_on($channel_id,$value) {
- $x = q("update channel set channel_notifyflags = %d where channel_id = %d",
- intval($value),
- intval($channel_id)
- );
- return $x;
-}
-
-
-function get_channel_default_perms($uid) {
-
- $r = q("select abook_my_perms from abook where abook_channel = %d and abook_self = 1 limit 1",
- intval($uid)
- );
- if($r)
- return $r[0]['abook_my_perms'];
-
- return 0;
-}
-
-
-function profiles_build_sync($channel_id) {
-
- $r = q("select * from profile where uid = %d",
- intval($channel_id)
- );
- if($r) {
- build_sync_packet($channel_id,array('profile' => $r));
- }
-}
-
-
-function auto_channel_create($account_id) {
-
- if(! $account_id)
- return false;
-
- $arr = array();
- $arr['account_id'] = $account_id;
- $arr['name'] = get_aconfig($account_id,'register','channel_name');
- $arr['nickname'] = legal_webbie(get_aconfig($account_id,'register','channel_address'));
- $arr['permissions_role'] = get_aconfig($account_id,'register','permissions_role');
-
- del_aconfig($account_id,'register','channel_name');
- del_aconfig($account_id,'register','channel_address');
- del_aconfig($account_id,'register','permissions_role');
-
- if((! $arr['name']) || (! $arr['nickname'])) {
- $x = q("select * from account where account_id = %d limit 1",
- intval($account_id)
- );
- if($x) {
- if(! $arr['name'])
- $arr['name'] = substr($x[0]['account_email'],0,strpos($x[0]['account_email'],'@'));
- if(! $arr['nickname'])
- $arr['nickname'] = legal_webbie(substr($x[0]['account_email'],0,strpos($x[0]['account_email'],'@')));
- }
- }
- if(! $arr['permissions_role'])
- $arr['permissions_role'] = 'social';
-
- if(validate_channelname($arr['name']))
- return false;
- if($arr['nickname'] === 'sys')
- $arr['nickname'] = $arr['nickname'] . mt_rand(1000,9999);
-
- $arr['nickname'] = check_webbie(array($arr['nickname'], $arr['nickname'] . mt_rand(1000,9999)));
-
- return create_identity($arr);
-
-}
-
-function get_cover_photo($channel_id,$format = 'bbcode', $res = PHOTO_RES_COVER_1200) {
-
- $r = q("select height, width, resource_id, type from photo where uid = %d and scale = %d and photo_usage = %d",
- intval($channel_id),
- intval($res),
- intval(PHOTO_COVER)
- );
- if(! $r)
- return false;
-
- $output = false;
-
- $url = z_root() . '/photo/' . $r[0]['resource_id'] . '-' . $res ;
-
- switch($format) {
- case 'bbcode':
- $output = '[zrl=' . $r[0]['width'] . 'x' . $r[0]['height'] . ']' . $url . '[/zrl]';
- break;
- case 'html':
- $output = '<img class="zrl" width="' . $r[0]['width'] . '" height="' . $r[0]['height'] . '" src="' . $url . '" alt="' . t('cover photo') . '" />';
- break;
- case 'array':
- default:
- $output = array(
- 'width' => $r[0]['width'],
- 'height' => $r[0]['type'],
- 'type' => $r[0]['type'],
- 'url' => $url
- );
- break;
- }
-
- return $output;
-
-}
-
-function get_zcard($channel,$observer_hash = '',$args = array()) {
-
- logger('get_zcard');
-
- $maxwidth = (($args['width']) ? intval($args['width']) : 0);
- $maxheight = (($args['height']) ? intval($args['height']) : 0);
-
-
- if(($maxwidth > 1200) || ($maxwidth < 1))
- $maxwidth = 1200;
-
- if($maxwidth <= 425) {
- $width = 425;
- $size = 'hz_small';
- $cover_size = PHOTO_RES_COVER_425;
- $pphoto = array('type' => $channel['xchan_photo_mimetype'], 'width' => 80 , 'height' => 80, 'href' => $channel['xchan_photo_m']);
- }
- elseif($maxwidth <= 900) {
- $width = 900;
- $size = 'hz_medium';
- $cover_size = PHOTO_RES_COVER_850;
- $pphoto = array('type' => $channel['xchan_photo_mimetype'], 'width' => 160 , 'height' => 160, 'href' => $channel['xchan_photo_l']);
- }
- elseif($maxwidth <= 1200) {
- $width = 1200;
- $size = 'hz_large';
- $cover_size = PHOTO_RES_COVER_1200;
- $pphoto = array('type' => $channel['xchan_photo_mimetype'], 'width' => 300 , 'height' => 300, 'href' => $channel['xchan_photo_l']);
- }
-
-// $scale = (float) $maxwidth / $width;
-// $translate = intval(($scale / 1.0) * 100);
-
-
- $channel['channel_addr'] = $channel['channel_address'] . '@' . App::get_hostname();
- $zcard = array('chan' => $channel);
-
- $r = q("select height, width, resource_id, scale, type from photo where uid = %d and scale = %d and photo_usage = %d",
- intval($channel['channel_id']),
- intval($cover_size),
- intval(PHOTO_COVER)
- );
-
- if($r) {
- $cover = $r[0];
- $cover['href'] = z_root() . '/photo/' . $r[0]['resource_id'] . '-' . $r[0]['scale'];
- }
- else {
- $cover = $pphoto;
- }
-
- $o .= replace_macros(get_markup_template('zcard.tpl'),array(
- '$maxwidth' => $maxwidth,
- '$scale' => $scale,
- '$translate' => $translate,
- '$size' => $size,
- '$cover' => $cover,
- '$pphoto' => $pphoto,
- '$zcard' => $zcard
- ));
-
- return $o;
-
-}
-
-
-function get_zcard_embed($channel,$observer_hash = '',$args = array()) {
-
- logger('get_zcard_embed');
-
- $maxwidth = (($args['width']) ? intval($args['width']) : 0);
- $maxheight = (($args['height']) ? intval($args['height']) : 0);
-
-
- if(($maxwidth > 1200) || ($maxwidth < 1))
- $maxwidth = 1200;
-
- if($maxwidth <= 425) {
- $width = 425;
- $size = 'hz_small';
- $cover_size = PHOTO_RES_COVER_425;
- $pphoto = array('type' => $channel['xchan_photo_mimetype'], 'width' => 80 , 'height' => 80, 'href' => $channel['xchan_photo_m']);
- }
- elseif($maxwidth <= 900) {
- $width = 900;
- $size = 'hz_medium';
- $cover_size = PHOTO_RES_COVER_850;
- $pphoto = array('type' => $channel['xchan_photo_mimetype'], 'width' => 160 , 'height' => 160, 'href' => $channel['xchan_photo_l']);
- }
- elseif($maxwidth <= 1200) {
- $width = 1200;
- $size = 'hz_large';
- $cover_size = PHOTO_RES_COVER_1200;
- $pphoto = array('type' => $channel['xchan_photo_mimetype'], 'width' => 300 , 'height' => 300, 'href' => $channel['xchan_photo_l']);
- }
-
- $channel['channel_addr'] = $channel['channel_address'] . '@' . App::get_hostname();
- $zcard = array('chan' => $channel);
-
- $r = q("select height, width, resource_id, scale, type from photo where uid = %d and scale = %d and photo_usage = %d",
- intval($channel['channel_id']),
- intval($cover_size),
- intval(PHOTO_COVER)
- );
-
- if($r) {
- $cover = $r[0];
- $cover['href'] = z_root() . '/photo/' . $r[0]['resource_id'] . '-' . $r[0]['scale'];
- }
- else {
- $cover = $pphoto;
- }
-
- $o .= replace_macros(get_markup_template('zcard_embed.tpl'),array(
- '$maxwidth' => $maxwidth,
- '$scale' => $scale,
- '$translate' => $translate,
- '$size' => $size,
- '$cover' => $cover,
- '$pphoto' => $pphoto,
- '$zcard' => $zcard
- ));
-
- return $o;
-
-}
diff --git a/include/import.php b/include/import.php
index 00058047e..be456bfa9 100644
--- a/include/import.php
+++ b/include/import.php
@@ -20,6 +20,8 @@ function import_channel($channel, $account_id, $seize) {
dbesc($channel['channel_hash']),
dbesc($channel['channel_address'])
);
+ if($r && $r[0]['channel_guid'] == $channel['channel_guid'] && $r[0]['channel_pubkey'] === $channel['channel_pubkey'] && $r[0]['channel_hash'] === $channel['channel_hash'])
+ return $r[0];
if(($r) || (check_webbie(array($channel['channel_address'])) !== $channel['channel_address'])) {
if($r[0]['channel_guid'] === $channel['channel_guid'] || $r[0]['channel_hash'] === $channel['channel_hash']) {
@@ -120,6 +122,11 @@ function import_profiles($channel,$profiles) {
$profile['aid'] = get_account_id();
$profile['uid'] = $channel['channel_id'];
+ convert_oldfields($profile,'name','fullname');
+ convert_oldfields($profile,'with','partner');
+ convert_oldfields($profile,'work','employment');
+
+
// we are going to reset all profile photos to the original
// somebody will have to fix this later and put all the applicable photos into the export
@@ -330,7 +337,9 @@ function import_apps($channel,$apps) {
);
if($x) {
foreach($term as $t) {
- store_item_tag($channel['channel_id'],$x[0]['id'],TERM_OBJ_APP,$t['type'],escape_tags($t['term']),escape_tags($t['url']));
+ if(array_key_exists('type',$t))
+ $t['ttype'] = $t['type'];
+ store_item_tag($channel['channel_id'],$x[0]['id'],TERM_OBJ_APP,$t['ttype'],escape_tags($t['term']),escape_tags($t['url']));
}
}
}
@@ -398,7 +407,9 @@ function sync_apps($channel,$apps) {
if($exists && $term) {
foreach($term as $t) {
- store_item_tag($channel['channel_id'],$exists['id'],TERM_OBJ_APP,$t['type'],escape_tags($t['term']),escape_tags($t['url']));
+ if(array_key_exists('type',$t))
+ $t['ttype'] = $t['type'];
+ store_item_tag($channel['channel_id'],$exists['id'],TERM_OBJ_APP,$t['ttype'],escape_tags($t['term']),escape_tags($t['url']));
}
}
@@ -434,7 +445,9 @@ function sync_apps($channel,$apps) {
);
if($x) {
foreach($term as $t) {
- store_item_tag($channel['channel_id'],$x[0]['id'],TERM_OBJ_APP,$t['type'],escape_tags($t['term']),escape_tags($t['url']));
+ if(array_key_exists('type',$t))
+ $t['ttype'] = $t['type'];
+ store_item_tag($channel['channel_id'],$x[0]['id'],TERM_OBJ_APP,$t['ttype'],escape_tags($t['term']),escape_tags($t['url']));
}
}
}
@@ -574,7 +587,7 @@ function import_items($channel,$items,$sync = false) {
if($sync && $item['item_wall']) {
// deliver singletons if we have any
if($item_result && $item_result['success']) {
- proc_run('php','include/notifier.php','single_activity',$item_result['item_id']);
+ Zotlabs\Daemon\Master::Summon(array('Notifier','single_activity',$item_result['item_id']));
}
}
continue;
@@ -588,7 +601,7 @@ function import_items($channel,$items,$sync = false) {
if($sync && $item['item_wall']) {
// deliver singletons if we have any
if($item_result && $item_result['success']) {
- proc_run('php','include/notifier.php','single_activity',$item_result['item_id']);
+ Zotlabs\Daemon\Master::Summon(array('Notifier','single_activity',$item_result['item_id']));
}
}
}
@@ -636,6 +649,10 @@ function import_events($channel,$events) {
unset($event['id']);
$event['aid'] = $channel['channel_account_id'];
$event['uid'] = $channel['channel_id'];
+ convert_oldfields($event,'start','dtstart');
+ convert_oldfields($event,'finish','dtend');
+ convert_oldfields($event,'type','etype');
+ convert_oldfields($event,'ignore','dismissed');
dbesc_array($event);
$r = dbq("INSERT INTO event (`"
@@ -669,6 +686,12 @@ function sync_events($channel,$events) {
$event['aid'] = $channel['channel_account_id'];
$event['uid'] = $channel['channel_id'];
+ convert_oldfields($event,'start','dtstart');
+ convert_oldfields($event,'finish','dtend');
+ convert_oldfields($event,'type','etype');
+ convert_oldfields($event,'ignore','dismissed');
+
+
$exists = false;
$x = q("select * from event where event_hash = '%s' and uid = %d limit 1",
@@ -936,7 +959,7 @@ function import_mail($channel,$mails,$sync = false) {
$m['uid'] = $channel['channel_id'];
$mail_id = mail_store($m);
if($sync && $mail_id) {
- proc_run('php','include/notifier.php','single_mail',$mail_id);
+ Zotlabs\Daemon\Master::Summon(array('Notifier','single_mail',$mail_id));
}
}
}
@@ -966,6 +989,8 @@ function sync_files($channel,$files) {
$attachment_stored = false;
foreach($f['attach'] as $att) {
+ convert_oldfields($att,'data','content');
+
if($att['deleted']) {
attach_delete($channel,$att['hash']);
continue;
@@ -973,8 +998,11 @@ function sync_files($channel,$files) {
$attach_exists = false;
$x = attach_by_hash($att['hash']);
+ logger('sync_files duplicate check: attach_exists=' . $attach_exists, LOGGER_DEBUG);
+ logger('sync_files duplicate check: att=' . print_r($att,true), LOGGER_DEBUG);
+ logger('sync_files duplicate check: attach_by_hash() returned ' . print_r($x,true), LOGGER_DEBUG);
- if($x) {
+ if($x['success']) {
$attach_exists = true;
$attach_id = $x[0]['id'];
}
@@ -1032,7 +1060,7 @@ function sync_files($channel,$files) {
// @fixme - update attachment structures if they are modified rather than created
- $att['data'] = $newfname;
+ $att['content'] = $newfname;
// Note: we use $att['hash'] below after it has been escaped to
// fetch the file contents.
@@ -1043,15 +1071,17 @@ function sync_files($channel,$files) {
if($attach_exists) {
- $str = '';
- foreach($att as $k => $v) {
- if($str)
- $str .= ",";
- $str .= " `" . $k . "` = '" . $v . "' ";
- }
- $r = dbq("update `attach` set " . $str . " where id = " . intval($attach_id) );
+ logger('sync_files attach exists: ' . print_r($att,true), LOGGER_DEBUG);
+ $str = '';
+ foreach($att as $k => $v) {
+ if($str)
+ $str .= ",";
+ $str .= " `" . $k . "` = '" . $v . "' ";
+ }
+ $r = dbq("update `attach` set " . $str . " where id = " . intval($attach_id) );
}
else {
+ logger('sync_files attach does not exists: ' . print_r($att,true), LOGGER_DEBUG);
$r = dbq("INSERT INTO attach (`"
. implode("`, `", array_keys($att))
. "`) VALUES ('"
@@ -1064,6 +1094,7 @@ function sync_files($channel,$files) {
if($att['filetype'] === 'multipart/mixed' && $att['is_dir']) {
os_mkdir($newfname, STORAGE_DEFAULT_PERMISSIONS,true);
+ $attachment_stored = true;
continue;
}
else {
@@ -1111,6 +1142,11 @@ function sync_files($channel,$files) {
$p['aid'] = $channel['channel_account_id'];
$p['uid'] = $channel['channel_id'];
+ convert_oldfields($p,'data','content');
+ convert_oldfields($p,'scale','imgscale');
+ convert_oldfields($p,'size','filesize');
+ convert_oldfields($p,'type','mimetype');
+
// if this is a profile photo, undo the profile photo bit
// for any other photo which previously held it.
@@ -1136,15 +1172,15 @@ function sync_files($channel,$files) {
);
}
- if($p['scale'] === 0 && $p['os_storage'])
- $p['data'] = $store_path;
+ if($p['imgscale'] === 0 && $p['os_storage'])
+ $p['content'] = $store_path;
else
- $p['data'] = base64_decode($p['data']);
+ $p['content'] = base64_decode($p['content']);
- $exists = q("select * from photo where resource_id = '%s' and scale = %d and uid = %d limit 1",
+ $exists = q("select * from photo where resource_id = '%s' and imgscale = %d and uid = %d limit 1",
dbesc($p['resource_id']),
- intval($p['scale']),
+ intval($p['imgscale']),
intval($channel['channel_id'])
);
@@ -1200,3 +1236,9 @@ function sync_files($channel,$files) {
}
+function convert_oldfields(&$arr,$old,$new) {
+ if(array_key_exists($old,$arr)) {
+ $arr[$new] = $arr[$old];
+ unset($arr[$old]);
+ }
+}
diff --git a/include/importdoc.php b/include/importdoc.php
deleted file mode 100755
index 90dfb2fc4..000000000
--- a/include/importdoc.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-
-
-require_once('include/cli_startup.php');
-
-
-function importdoc_run($argv, $argc){
-
- cli_startup();
-
- require_once('include/help.php');
-
-
- update_docs_dir('doc/*');
-
-}
-if (array_search(__file__,get_included_files())===0){
- importdoc_run($argv,$argc);
- killme();
-}
-
-function update_docs_dir($s) {
- $f = basename($s);
- $d = dirname($s);
- if($s === 'doc/html')
- return;
- $files = glob("$d/$f");
- if($files) {
- foreach($files as $fi) {
- if($fi === 'doc/html')
- continue;
- if(is_dir($fi))
- update_docs_dir("$fi/*");
- else
- store_doc_file($fi);
- }
- }
-}
-
-
diff --git a/include/items.php b/include/items.php
index bef04237b..93385c6e6 100755
--- a/include/items.php
+++ b/include/items.php
@@ -3,12 +3,15 @@
* @file include/items.php
*/
-/** @todo deprecated in newer SabreDAV releases Sabre\HTTP\URLUtil */
-use Sabre\DAV\URLUtil;
+// uncertain if this line is needed and why
+use Sabre\HTTP\URLUtil;
+
+use Zotlabs\Lib as Zlib;
require_once('include/bbcode.php');
require_once('include/oembed.php');
require_once('include/crypto.php');
+require_once('include/feedutils.php');
require_once('include/photo/photo_driver.php');
require_once('include/permissions.php');
@@ -33,7 +36,6 @@ function collect_recipients($item, &$private_envelope) {
$allow_people = expand_acl($item['allow_cid']);
$allow_groups = expand_groups(expand_acl($item['allow_gid']));
- $allow_groups = filter_insecure($item['uid'],$allow_groups);
$recipients = array_unique(array_merge($allow_people,$allow_groups));
@@ -77,7 +79,7 @@ function collect_recipients($item, &$private_envelope) {
// by the directives in $item['public_policy'].
$private_envelope = false;
- require_once('include/identity.php');
+ require_once('include/channel.php');
//$sys = get_sys_channel();
if(array_key_exists('public_policy',$item) && $item['public_policy'] !== 'self') {
@@ -140,46 +142,6 @@ function collect_recipients($item, &$private_envelope) {
return $recipients;
}
-/**
- * If channel is configured to filter insecure members of privacy groups
- * (those whose networks leak privacy via email notifications or other criteria)
- * remove them from any privacy groups (collections) that were included in a post.
- * They can still be addressed individually.
- * Networks may need to be added or removed from this list as circumstances change.
- *
- * Update: this may need to be the default, which will force people to opt-in to
- * sending stuff privately to insecure platforms.
- *
- * @param int $channel_id
- * @param array $arr
- * @return array containing the sane xchan_hashes
- */
-function filter_insecure($channel_id, $arr) {
- $insecure_nets = " and not xchan_network in ('diaspora', 'friendica-over-diaspora') ";
-
- $ret = array();
-
- if((! intval(get_pconfig($channel_id, 'system', 'filter_insecure_privacy_groups'))) || (! $arr))
- return $arr;
-
- $str = '';
- foreach($arr as $rr) {
- if(strlen($str))
- $str .= ',';
-
- $str .= "'" . dbesc($rr) . "'";
- }
- $r = q("select xchan_hash from xchan where xchan_hash in ($str) $insecure_nets");
- if($r) {
- foreach($r as $rr) {
- $ret[] = $rr['xchan_hash'];
- }
- }
-
- return $ret;
-}
-
-
function comments_are_now_closed($item) {
if($item['comments_closed'] !== NULL_DATE) {
$d = datetime_convert();
@@ -485,7 +447,7 @@ function post_activity_item($arr) {
if($post_id) {
$arr['id'] = $post_id;
call_hooks('post_local_end', $arr);
- proc_run('php','include/notifier.php','activity',$post_id);
+ Zotlabs\Daemon\Master::Summon(array('Notifier','activity',$post_id));
$ret['success'] = true;
$r = q("select * from item where id = %d limit 1",
intval($post_id)
@@ -524,214 +486,6 @@ function validate_item_elements($message,$arr) {
/**
- * @brief Generate an Atom feed.
- *
- * @param array $channel
- * @param array $params
- */
-function get_public_feed($channel, $params) {
-
- $type = 'xml';
- $begin = NULL_DATE;
- $end = '';
- $start = 0;
- $records = 40;
- $direction = 'desc';
- $pages = 0;
-
- if(! $params)
- $params = array();
-
- $params['type'] = ((x($params,'type')) ? $params['type'] : 'xml');
- $params['begin'] = ((x($params,'begin')) ? $params['begin'] : NULL_DATE);
- $params['end'] = ((x($params,'end')) ? $params['end'] : datetime_convert('UTC','UTC','now'));
- $params['start'] = ((x($params,'start')) ? $params['start'] : 0);
- $params['records'] = ((x($params,'records')) ? $params['records'] : 40);
- $params['direction'] = ((x($params,'direction')) ? $params['direction'] : 'desc');
- $params['pages'] = ((x($params,'pages')) ? intval($params['pages']) : 0);
- $params['top'] = ((x($params,'top')) ? intval($params['top']) : 0);
- $params['cat'] = ((x($params,'cat')) ? $params['cat'] : '');
-
-
- // put a sane lower limit on feed requests if not specified
-
-// if($params['begin'] === NULL_DATE)
-// $params['begin'] = datetime_convert('UTC','UTC','now - 1 month');
-
- switch($params['type']) {
- case 'json':
- header("Content-type: application/atom+json");
- break;
- case 'xml':
- default:
- header("Content-type: application/atom+xml");
- break;
- }
-
- return get_feed_for($channel, get_observer_hash(), $params);
-}
-
-/**
- * @brief
- *
- * @param array $channel
- * @param string $observer_hash
- * @param array $params
- * @return string
- */
-function get_feed_for($channel, $observer_hash, $params) {
-
- if(! channel)
- http_status_exit(401);
-
- if($params['pages']) {
- if(! perm_is_allowed($channel['channel_id'],$observer_hash,'view_pages'))
- http_status_exit(403);
- } else {
- if(! perm_is_allowed($channel['channel_id'],$observer_hash,'view_stream'))
- http_status_exit(403);
- }
- $items = items_fetch(array(
- 'wall' => '1',
- 'datequery' => $params['end'],
- 'datequery2' => $params['begin'],
- 'start' => $params['start'], // FIXME
- 'records' => $params['records'], // FIXME
- 'direction' => $params['direction'], // FIXME
- 'pages' => $params['pages'],
- 'order' => 'post',
- 'top' => $params['top'],
- 'cat' => $params['cat']
- ), $channel, $observer_hash, CLIENT_MODE_NORMAL, App::$module);
-
-
- $feed_template = get_markup_template('atom_feed.tpl');
-
- $atom = '';
-
- $atom .= replace_macros($feed_template, array(
- '$version' => xmlify(Zotlabs\Project\System::get_project_version()),
- '$red' => xmlify(Zotlabs\Project\System::get_platform_name()),
- '$feed_id' => xmlify($channel['xchan_url']),
- '$feed_title' => xmlify($channel['channel_name']),
- '$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', 'now' , ATOM_TIME)) ,
- '$hub' => '', // feed_hublinks(),
- '$salmon' => '', // feed_salmonlinks($channel['channel_address']),
- '$name' => xmlify($channel['channel_name']),
- '$profile_page' => xmlify($channel['xchan_url']),
- '$mimephoto' => xmlify($channel['xchan_photo_mimetype']),
- '$photo' => xmlify($channel['xchan_photo_l']),
- '$thumb' => xmlify($channel['xchan_photo_m']),
- '$picdate' => '',
- '$uridate' => '',
- '$namdate' => '',
- '$birthday' => '',
- '$community' => '',
- ));
-
-
- call_hooks('atom_feed', $atom);
-
- if($items) {
- $type = 'html';
- foreach($items as $item) {
- if($item['item_private'])
- continue;
-
- /** @BUG $owner is undefined in this call */
- $atom .= atom_entry($item, $type, null, $owner, true);
- }
- }
-
- call_hooks('atom_feed_end', $atom);
-
- $atom .= '</feed>' . "\r\n";
-
- return $atom;
-}
-
-/**
- * @brief
- *
- * @param array $item an associative array with
- * * \b string \b verb
- * @return string item's verb if set, default ACTIVITY_POST see boot.php
- */
-function construct_verb($item) {
- if ($item['verb'])
- return $item['verb'];
-
- return ACTIVITY_POST;
-}
-
-function construct_activity_object($item) {
-
- if($item['object']) {
- $o = '<as:object>' . "\r\n";
- $r = json_decode($item['object'],false);
-
- if(! $r)
- return '';
- if($r->type)
- $o .= '<as:obj_type>' . xmlify($r->type) . '</as:obj_type>' . "\r\n";
- if($r->id)
- $o .= '<id>' . xmlify($r->id) . '</id>' . "\r\n";
- if($r->title)
- $o .= '<title>' . xmlify($r->title) . '</title>' . "\r\n";
- if($r->links) {
- /** @FIXME!! */
- if(substr($r->link,0,1) === '<') {
- $r->link = preg_replace('/\<link(.*?)\"\>/','<link$1"/>',$r->link);
- $o .= $r->link;
- }
- else
- $o .= '<link rel="alternate" type="text/html" href="' . xmlify($r->link) . '" />' . "\r\n";
- }
- if($r->content)
- $o .= '<content type="html" >' . xmlify(bbcode($r->content)) . '</content>' . "\r\n";
- $o .= '</as:object>' . "\r\n";
- return $o;
- }
-
- return '';
-}
-
-function construct_activity_target($item) {
-
- if($item['target']) {
- $o = '<as:target>' . "\r\n";
- $r = json_decode($item['target'],false);
- if(! $r)
- return '';
- if($r->type)
- $o .= '<as:obj_type>' . xmlify($r->type) . '</as:obj_type>' . "\r\n";
- if($r->id)
- $o .= '<id>' . xmlify($r->id) . '</id>' . "\r\n";
- if($r->title)
- $o .= '<title>' . xmlify($r->title) . '</title>' . "\r\n";
- if($r->links) {
- /** @FIXME !!! */
- if(substr($r->link,0,1) === '<') {
- if(strstr($r->link,'&') && (! strstr($r->link,'&amp;')))
- $r->link = str_replace('&','&amp;', $r->link);
- $r->link = preg_replace('/\<link(.*?)\"\>/','<link$1"/>',$r->link);
- $o .= $r->link;
- }
- else
- $o .= '<link rel="alternate" type="text/html" href="' . xmlify($r->link) . '" />' . "\r\n";
- }
- if($r->content)
- $o .= '<content type="html" >' . xmlify(bbcode($r->content)) . '</content>' . "\r\n";
-
- $o .= '</as:target>' . "\r\n";
-
- return $o;
- }
-
- return '';
-}
-
-/**
* @brief Limit lenght on imported system messages.
*
* The purpose of this function is to apply system message length limits to
@@ -912,7 +666,7 @@ function get_item_elements($x,$allow_code = false) {
$arr['diaspora_meta'] = (($x['diaspora_signature']) ? $x['diaspora_signature'] : '');
- $arr['object'] = activity_sanitise($x['object']);
+ $arr['obj'] = activity_sanitise($x['object']);
$arr['target'] = activity_sanitise($x['target']);
$arr['attach'] = activity_sanitise($x['attach']);
@@ -1301,8 +1055,8 @@ function encode_item($item,$mirror = false) {
$x['owner'] = encode_item_xchan($item['owner']);
$x['author'] = encode_item_xchan($item['author']);
- if($item['object'])
- $x['object'] = json_decode_plus($item['object']);
+ if($item['obj'])
+ $x['object'] = json_decode_plus($item['obj']);
if($item['target'])
$x['target'] = json_decode_plus($item['target']);
if($item['attach'])
@@ -1428,8 +1182,8 @@ function encode_item_terms($terms,$mirror = false) {
if($terms) {
foreach($terms as $term) {
- if(in_array($term['type'],$allowed_export_terms))
- $ret[] = array('tag' => $term['term'], 'url' => $term['url'], 'type' => termtype($term['type']));
+ if(in_array($term['ttype'],$allowed_export_terms))
+ $ret[] = array('tag' => $term['term'], 'url' => $term['url'], 'type' => termtype($term['ttype']));
}
}
@@ -1490,35 +1244,35 @@ function decode_tags($t) {
$tag['url'] = htmlspecialchars($x['url'], ENT_COMPAT, 'UTF-8', false);
switch($x['type']) {
case 'hashtag':
- $tag['type'] = TERM_HASHTAG;
+ $tag['ttype'] = TERM_HASHTAG;
break;
case 'mention':
- $tag['type'] = TERM_MENTION;
+ $tag['ttype'] = TERM_MENTION;
break;
case 'category':
- $tag['type'] = TERM_CATEGORY;
+ $tag['ttype'] = TERM_CATEGORY;
break;
case 'private_category':
- $tag['type'] = TERM_PCATEGORY;
+ $tag['ttype'] = TERM_PCATEGORY;
break;
case 'file':
- $tag['type'] = TERM_FILE;
+ $tag['ttype'] = TERM_FILE;
break;
case 'search':
- $tag['type'] = TERM_SEARCH;
+ $tag['ttype'] = TERM_SEARCH;
break;
case 'thing':
- $tag['type'] = TERM_THING;
+ $tag['ttype'] = TERM_THING;
break;
case 'bookmark':
- $tag['type'] = TERM_BOOKMARK;
+ $tag['ttype'] = TERM_BOOKMARK;
break;
case 'communitytag':
- $tag['type'] = TERM_COMMUNITYTAG;
+ $tag['ttype'] = TERM_COMMUNITYTAG;
break;
default:
case 'unknown':
- $tag['type'] = TERM_UNKNOWN;
+ $tag['ttype'] = TERM_UNKNOWN;
break;
}
$ret[] = $tag;
@@ -1742,453 +1496,6 @@ function get_profile_elements($x) {
return $arr;
}
-/**
- * @param object $feed
- * @param array $item
- * @param[out] array $author
- * @return multitype:multitype: string NULL number Ambigous <NULL, string, number> Ambigous <mixed, string> Ambigous <multitype:multitype:string Ambigous <NULL, string> , multitype:multitype:string unknown > multitype:NULL unknown
- */
-function get_atom_elements($feed, $item, &$author) {
-
- //$best_photo = array();
-
- $res = array();
-
- $found_author = $item->get_author();
- if($found_author) {
- $author['author_name'] = unxmlify($found_author->get_name());
- $author['author_link'] = unxmlify($found_author->get_link());
- $author['author_is_feed'] = false;
- }
- else {
- $author['author_name'] = unxmlify($feed->get_title());
- $author['author_link'] = unxmlify($feed->get_permalink());
- $author['author_is_feed'] = true;
- }
-
- if(substr($author['author_link'],-1,1) == '/')
- $author['author_link'] = substr($author['author_link'],0,-1);
-
- $res['mid'] = base64url_encode(unxmlify($item->get_id()));
- $res['title'] = unxmlify($item->get_title());
- $res['body'] = unxmlify($item->get_content());
- $res['plink'] = unxmlify($item->get_link(0));
- $res['item_rss'] = 1;
-
-
- // removing the content of the title if its identically to the body
- // This helps with auto generated titles e.g. from tumblr
-
- if (title_is_body($res["title"], $res["body"]))
- $res['title'] = "";
-
- if($res['plink'])
- $base_url = implode('/', array_slice(explode('/',$res['plink']),0,3));
- else
- $base_url = '';
-
- // look for a photo. We should check media size and find the best one,
- // but for now let's just find any author photo
-
- $rawauthor = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'author');
-
- if($rawauthor && $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) {
- $base = $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
- foreach($base as $link) {
- if(!x($author, 'author_photo') || ! $author['author_photo']) {
- if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar')
- $author['author_photo'] = unxmlify($link['attribs']['']['href']);
- }
- }
- }
-
- $rawactor = $item->get_item_tags(NAMESPACE_ACTIVITY, 'actor');
-
- if($rawactor && activity_match($rawactor[0]['child'][NAMESPACE_ACTIVITY]['obj_type'][0]['data'],ACTIVITY_OBJ_PERSON)) {
- $base = $rawactor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
- if($base && count($base)) {
- foreach($base as $link) {
- if($link['attribs']['']['rel'] === 'alternate' && (! $res['author_link']))
- $author['author_link'] = unxmlify($link['attribs']['']['href']);
- if(!x($author, 'author_photo') || ! $author['author_photo']) {
- if($link['attribs']['']['rel'] === 'avatar' || $link['attribs']['']['rel'] === 'photo')
- $author['author_photo'] = unxmlify($link['attribs']['']['href']);
- }
- }
- }
- }
-
- // check for a yahoo media element (github etc.)
-
- if(! $author['author_photo']) {
- $rawmedia = $item->get_item_tags(NAMESPACE_YMEDIA,'thumbnail');
- if($rawmedia && $rawmedia[0]['attribs']['']['url']) {
- $author['author_photo'] = strip_tags(unxmlify($rawmedia[0]['attribs']['']['url']));
- }
- }
-
-
- // No photo/profile-link on the item - look at the feed level
-
- if((! (x($author,'author_link'))) || (! (x($author,'author_photo')))) {
- $rawauthor = $feed->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'author');
- if($rawauthor && $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) {
- $base = $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
- foreach($base as $link) {
- if($link['attribs']['']['rel'] === 'alternate' && (! $author['author_link'])) {
- $author['author_link'] = unxmlify($link['attribs']['']['href']);
- $author['author_is_feed'] = true;
- }
- if(! $author['author_photo']) {
- if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar')
- $author['author_photo'] = unxmlify($link['attribs']['']['href']);
- }
- }
- }
-
- $rawactor = $feed->get_feed_tags(NAMESPACE_ACTIVITY, 'subject');
-
- if($rawactor && activity_match($rawactor[0]['child'][NAMESPACE_ACTIVITY]['obj_type'][0]['data'],ACTIVITY_OBJ_PERSON)) {
- $base = $rawactor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
-
- if($base && count($base)) {
- foreach($base as $link) {
- if($link['attribs']['']['rel'] === 'alternate' && (! $res['author_link']))
- $author['author_link'] = unxmlify($link['attribs']['']['href']);
- if(! (x($author,'author_photo'))) {
- if($link['attribs']['']['rel'] === 'avatar' || $link['attribs']['']['rel'] === 'photo')
- $author['author_photo'] = unxmlify($link['attribs']['']['href']);
- }
- }
- }
- }
- }
-
- $apps = $item->get_item_tags(NAMESPACE_STATUSNET,'notice_info');
- if($apps && $apps[0]['attribs']['']['source']) {
- $res['app'] = strip_tags(unxmlify($apps[0]['attribs']['']['source']));
- }
-
- /*
- * If there's a copy of the body content which is guaranteed to have survived mangling in transit, use it.
- */
-
- $have_real_body = false;
-
- $rawenv = $item->get_item_tags(NAMESPACE_DFRN, 'env');
- if($rawenv) {
- $have_real_body = true;
- $res['body'] = $rawenv[0]['data'];
- $res['body'] = str_replace(array(' ',"\t","\r","\n"), array('','','',''),$res['body']);
- // make sure nobody is trying to sneak some html tags by us
- $res['body'] = notags(base64url_decode($res['body']));
-
- // We could probably turn these old Friendica bbcode bookmarks into bookmark tags but we'd have to
- // create a term table item for them. For now just make sure they stay as links.
-
- $res['body'] = preg_replace('/\[bookmark(.*?)\](.*?)\[\/bookmark\]/','[url$1]$2[/url]',$res['body']);
- }
-
- $res['body'] = limit_body_size($res['body']);
-
- // It isn't certain at this point whether our content is plaintext or html and we'd be foolish to trust
- // the content type. Our own network only emits text normally, though it might have been converted to
- // html if we used a pubsubhubbub transport. But if we see even one html tag in our text, we will
- // have to assume it is all html and needs to be purified.
-
- // It doesn't matter all that much security wise - because before this content is used anywhere, we are
- // going to escape any tags we find regardless, but this lets us import a limited subset of html from
- // the wild, by sanitising it and converting supported tags to bbcode before we rip out any remaining
- // html.
-
- if((strpos($res['body'],'<') !== false) && (strpos($res['body'],'>') !== false)) {
-
- $res['body'] = reltoabs($res['body'],$base_url);
-
- $res['body'] = html2bb_video($res['body']);
-
- $res['body'] = oembed_html2bbcode($res['body']);
-
- $res['body'] = purify_html($res['body']);
-
- $res['body'] = @html2bbcode($res['body']);
- }
- elseif(! $have_real_body) {
-
- // it's not one of our messages and it has no tags
- // so it's probably just text. We'll escape it just to be safe.
-
- $res['body'] = escape_tags($res['body']);
- }
-
- if($res['plink'] && $res['title']) {
- $res['body'] = '#^[url=' . $res['plink'] . ']' . $res['title'] . '[/url]' . "\n\n" . $res['body'];
- $terms = array();
- $terms[] = array(
- 'otype' => TERM_OBJ_POST,
- 'type' => TERM_BOOKMARK,
- 'url' => $res['plink'],
- 'term' => $res['title'],
- );
- }
- elseif($res['plink']) {
- $res['body'] = '#^[url]' . $res['plink'] . '[/url]' . "\n\n" . $res['body'];
- $terms = array();
- $terms[] = array(
- 'otype' => TERM_OBJ_POST,
- 'type' => TERM_BOOKMARK,
- 'url' => $res['plink'],
- 'term' => $res['plink'],
- );
- }
-
- $private = $item->get_item_tags(NAMESPACE_DFRN,'private');
- if($private && intval($private[0]['data']) > 0)
- $res['item_private'] = ((intval($private[0]['data'])) ? 1 : 0);
- else
- $res['item_private'] = 0;
-
- $rawlocation = $item->get_item_tags(NAMESPACE_DFRN, 'location');
- if($rawlocation)
- $res['location'] = unxmlify($rawlocation[0]['data']);
-
- $rawcreated = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'published');
- if($rawcreated)
- $res['created'] = unxmlify($rawcreated[0]['data']);
-
- $rawedited = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'updated');
- if($rawedited)
- $res['edited'] = unxmlify($rawedited[0]['data']);
-
- if((x($res,'edited')) && (! (x($res,'created'))))
- $res['created'] = $res['edited'];
-
- if(! $res['created'])
- $res['created'] = $item->get_date('c');
-
- if(! $res['edited'])
- $res['edited'] = $item->get_date('c');
-
-
- // Disallow time travelling posts
-
- $d1 = strtotime($res['created']);
- $d2 = strtotime($res['edited']);
- $d3 = strtotime('now');
-
- if($d1 > $d3)
- $res['created'] = datetime_convert();
- if($d2 > $d3)
- $res['edited'] = datetime_convert();
-
- $res['created'] = datetime_convert('UTC','UTC',$res['created']);
- $res['edited'] = datetime_convert('UTC','UTC',$res['edited']);
-
- $rawowner = $item->get_item_tags(NAMESPACE_DFRN, 'owner');
- if(! $rawowner)
- $rawowner = $item->get_item_tags(NAMESPACE_ZOT,'owner');
-
- if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])
- $author['owner_name'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']);
- elseif($rawowner[0]['child'][NAMESPACE_DFRN]['name'][0]['data'])
- $author['owner_name'] = unxmlify($rawowner[0]['child'][NAMESPACE_DFRN]['name'][0]['data']);
- if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])
- $author['owner_link'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']);
- elseif($rawowner[0]['child'][NAMESPACE_DFRN]['uri'][0]['data'])
- $author['owner_link'] = unxmlify($rawowner[0]['child'][NAMESPACE_DFRN]['uri'][0]['data']);
-
- if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) {
- $base = $rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
-
- foreach($base as $link) {
- if(!x($author, 'owner_photo') || ! $author['owner_photo']) {
- if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar')
- $author['owner_photo'] = unxmlify($link['attribs']['']['href']);
- }
- }
- }
-
- $rawgeo = $item->get_item_tags(NAMESPACE_GEORSS,'point');
- if($rawgeo)
- $res['coord'] = unxmlify($rawgeo[0]['data']);
-
-
- $rawverb = $item->get_item_tags(NAMESPACE_ACTIVITY, 'verb');
-
- // select between supported verbs
-
- if($rawverb) {
- $res['verb'] = unxmlify($rawverb[0]['data']);
- }
-
- // translate OStatus unfollow to activity streams if it happened to get selected
-
- if((x($res,'verb')) && ($res['verb'] === 'http://ostatus.org/schema/1.0/unfollow'))
- $res['verb'] = ACTIVITY_UNFOLLOW;
-
- $cats = $item->get_categories();
- if($cats) {
- if(is_null($terms))
- $terms = array();
- foreach($cats as $cat) {
- $term = $cat->get_term();
- if(! $term)
- $term = $cat->get_label();
- $scheme = $cat->get_scheme();
- $termurl = '';
- if($scheme && $term && stristr($scheme,'X-DFRN:')) {
- $termtype = ((substr($scheme,7,1) === '#') ? TERM_HASHTAG : TERM_MENTION);
- $termurl = unxmlify(substr($scheme,9));
- }
- else {
- $termtype = TERM_CATEGORY;
- }
- $termterm = notags(trim(unxmlify($term)));
-
- if($termterm) {
- $terms[] = array(
- 'otype' => TERM_OBJ_POST,
- 'type' => $termtype,
- 'url' => $termurl,
- 'term' => $termterm,
- );
- }
- }
- }
-
- if(! is_null($terms))
- $res['term'] = $terms;
-
- $attach = $item->get_enclosures();
- if($attach) {
- $res['attach'] = array();
- foreach($attach as $att) {
- $len = intval($att->get_length());
- $link = str_replace(array(',','"'),array('%2D','%22'),notags(trim(unxmlify($att->get_link()))));
- $title = str_replace(array(',','"'),array('%2D','%22'),notags(trim(unxmlify($att->get_title()))));
- $type = str_replace(array(',','"'),array('%2D','%22'),notags(trim(unxmlify($att->get_type()))));
- if(strpos($type,';'))
- $type = substr($type,0,strpos($type,';'));
- if((! $link) || (strpos($link,'http') !== 0))
- continue;
-
- if(! $title)
- $title = ' ';
- if(! $type)
- $type = 'application/octet-stream';
-
- $res['attach'][] = array('href' => $link, 'length' => $len, 'type' => $type, 'title' => $title );
- }
- }
-
- $rawobj = $item->get_item_tags(NAMESPACE_ACTIVITY, 'object');
-
- if($rawobj) {
- $obj = array();
-
- $child = $rawobj[0]['child'];
- if($child[NAMESPACE_ACTIVITY]['obj_type'][0]['data']) {
- $res['obj_type'] = $child[NAMESPACE_ACTIVITY]['obj_type'][0]['data'];
- $obj['type'] = $child[NAMESPACE_ACTIVITY]['obj_type'][0]['data'];
- }
- if($child[NAMESPACE_ACTIVITY]['object-type'][0]['data']) {
- $res['obj_type'] = $child[NAMESPACE_ACTIVITY]['object-type'][0]['data'];
- $obj['type'] = $child[NAMESPACE_ACTIVITY]['object-type'][0]['data'];
- }
- if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'id') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data'])
- $obj['id'] = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data'];
- if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'link') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['link'])
- $obj['link'] = encode_rel_links($child[SIMPLEPIE_NAMESPACE_ATOM_10]['link']);
- if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'title') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['title'][0]['data'])
- $obj['title'] = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['title'][0]['data'];
- if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'content') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['content'][0]['data']) {
- $body = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['content'][0]['data'];
- if(! $body)
- $body = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['summary'][0]['data'];
- // preserve a copy of the original body content in case we later need to parse out any microformat information, e.g. events
- $obj['orig'] = xmlify($body);
- if((strpos($body,'<') !== false) || (strpos($body,'>') !== false)) {
- $body = purify_html($body);
- $body = html2bbcode($body);
- }
-
- $obj['content'] = $body;
- }
-
- $res['object'] = $obj;
- }
-
- $rawobj = $item->get_item_tags(NAMESPACE_ACTIVITY, 'target');
-
- if($rawobj) {
- $obj = array();
-
- $child = $rawobj[0]['child'];
- if($child[NAMESPACE_ACTIVITY]['obj_type'][0]['data']) {
- $res['tgt_type'] = $child[NAMESPACE_ACTIVITY]['obj_type'][0]['data'];
- $obj['type'] = $child[NAMESPACE_ACTIVITY]['obj_type'][0]['data'];
- }
- if($child[NAMESPACE_ACTIVITY]['object-type'][0]['data']) {
- $res['tgt_type'] = $child[NAMESPACE_ACTIVITY]['object-type'][0]['data'];
- $obj['type'] = $child[NAMESPACE_ACTIVITY]['object-type'][0]['data'];
- }
- if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'id') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data'])
- $obj['id'] = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data'];
- if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'link') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['link'])
- $obj['link'] = encode_rel_links($child[SIMPLEPIE_NAMESPACE_ATOM_10]['link']);
- if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'title') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['title'][0]['data'])
- $obj['title'] = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['title'][0]['data'];
- if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'content') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['content'][0]['data']) {
- $body = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['content'][0]['data'];
- if(! $body)
- $body = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['summary'][0]['data'];
-
- // preserve a copy of the original body content in case we later need to parse out any microformat information, e.g. events
- $obj['orig'] = xmlify($body);
- if((strpos($body,'<') !== false) || (strpos($body,'>') !== false)) {
- $body = purify_html($body);
- $body = html2bbcode($body);
- }
-
- $obj['content'] = $body;
- }
-
- $res['target'] = $obj;
- }
-
- $arr = array('feed' => $feed, 'item' => $item, 'result' => $res);
-
- call_hooks('parse_atom', $arr);
- logger('get_atom_elements: author: ' . print_r($author,true),LOGGER_DATA);
-
- logger('get_atom_elements: ' . print_r($res,true),LOGGER_DATA);
-
- return $res;
-}
-
-function encode_rel_links($links) {
- $o = array();
- if(! ((is_array($links)) && (count($links))))
- return $o;
-
- foreach($links as $link) {
- $l = array();
- if($link['attribs']['']['rel'])
- $l['rel'] = $link['attribs']['']['rel'];
- if($link['attribs']['']['type'])
- $l['type'] = $link['attribs']['']['type'];
- if($link['attribs']['']['href'])
- $l['href'] = $link['attribs']['']['href'];
- if( (x($link['attribs'],NAMESPACE_MEDIA)) && $link['attribs'][NAMESPACE_MEDIA]['width'])
- $l['width'] = $link['attribs'][NAMESPACE_MEDIA]['width'];
- if( (x($link['attribs'],NAMESPACE_MEDIA)) && $link['attribs'][NAMESPACE_MEDIA]['height'])
- $l['height'] = $link['attribs'][NAMESPACE_MEDIA]['height'];
-
- if($l)
- $o[] = $l;
- }
- return $o;
-}
/**
* @brief
@@ -2286,9 +1593,9 @@ function item_store($arr, $allow_exec = false, $deliver = true) {
}
}
- if((x($arr,'object')) && is_array($arr['object'])) {
- activity_sanitise($arr['object']);
- $arr['object'] = json_encode($arr['object']);
+ if((x($arr,'obj')) && is_array($arr['obj'])) {
+ activity_sanitise($arr['obj']);
+ $arr['obj'] = json_encode($arr['obj']);
}
if((x($arr,'target')) && is_array($arr['target'])) {
@@ -2319,7 +1626,7 @@ function item_store($arr, $allow_exec = false, $deliver = true) {
$arr['thr_parent'] = ((x($arr,'thr_parent')) ? notags(trim($arr['thr_parent'])) : $arr['parent_mid']);
$arr['verb'] = ((x($arr,'verb')) ? notags(trim($arr['verb'])) : ACTIVITY_POST);
$arr['obj_type'] = ((x($arr,'obj_type')) ? notags(trim($arr['obj_type'])) : ACTIVITY_OBJ_NOTE);
- $arr['object'] = ((x($arr,'object')) ? trim($arr['object']) : '');
+ $arr['obj'] = ((x($arr,'obj')) ? trim($arr['obj']) : '');
$arr['tgt_type'] = ((x($arr,'tgt_type')) ? notags(trim($arr['tgt_type'])) : '');
$arr['target'] = ((x($arr,'target')) ? trim($arr['target']) : '');
$arr['plink'] = ((x($arr,'plink')) ? notags(trim($arr['plink'])) : '');
@@ -2388,7 +1695,7 @@ function item_store($arr, $allow_exec = false, $deliver = true) {
return $ret;
}
- if(($arr['obj_type'] == ACTIVITY_OBJ_NOTE) && (! $arr['object']))
+ if(($arr['obj_type'] == ACTIVITY_OBJ_NOTE) && (! $arr['obj']))
$arr['obj_type'] = ACTIVITY_OBJ_COMMENT;
// is the new message multi-level threaded?
@@ -2548,12 +1855,12 @@ function item_store($arr, $allow_exec = false, $deliver = true) {
if(($terms) && (is_array($terms))) {
foreach($terms as $t) {
- q("insert into term (uid,oid,otype,type,term,url)
+ q("insert into term (uid,oid,otype,ttype,term,url)
values(%d,%d,%d,%d,'%s','%s') ",
intval($arr['uid']),
intval($current_post),
intval(TERM_OBJ_POST),
- intval($t['type']),
+ intval($t['ttype']),
dbesc($t['term']),
dbesc($t['url'])
);
@@ -2682,9 +1989,9 @@ function item_store_update($arr,$allow_exec = false, $deliver = true) {
}
}
- if((x($arr,'object')) && is_array($arr['object'])) {
- activity_sanitise($arr['object']);
- $arr['object'] = json_encode($arr['object']);
+ if((x($arr,'obj')) && is_array($arr['obj'])) {
+ activity_sanitise($arr['obj']);
+ $arr['obj'] = json_encode($arr['obj']);
}
if((x($arr,'target')) && is_array($arr['target'])) {
@@ -2726,7 +2033,7 @@ function item_store_update($arr,$allow_exec = false, $deliver = true) {
$arr['coord'] = ((x($arr,'coord')) ? notags(trim($arr['coord'])) : $orig[0]['coord']);
$arr['verb'] = ((x($arr,'verb')) ? notags(trim($arr['verb'])) : $orig[0]['verb']);
$arr['obj_type'] = ((x($arr,'obj_type')) ? notags(trim($arr['obj_type'])) : $orig[0]['obj_type']);
- $arr['object'] = ((x($arr,'object')) ? trim($arr['object']) : $orig[0]['object']);
+ $arr['obj'] = ((x($arr,'obj')) ? trim($arr['obj']) : $orig[0]['obj']);
$arr['tgt_type'] = ((x($arr,'tgt_type')) ? notags(trim($arr['tgt_type'])) : $orig[0]['tgt_type']);
$arr['target'] = ((x($arr,'target')) ? trim($arr['target']) : $orig[0]['target']);
$arr['plink'] = ((x($arr,'plink')) ? notags(trim($arr['plink'])) : $orig[0]['plink']);
@@ -2827,12 +2134,12 @@ function item_store_update($arr,$allow_exec = false, $deliver = true) {
if(is_array($terms)) {
foreach($terms as $t) {
- q("insert into term (uid,oid,otype,type,term,url)
+ q("insert into term (uid,oid,otype,ttype,term,url)
values(%d,%d,%d,%d,'%s','%s') ",
intval($uid),
intval($orig_post_id),
intval(TERM_OBJ_POST),
- intval($t['type']),
+ intval($t['ttype']),
dbesc($t['term']),
dbesc($t['url'])
);
@@ -2979,8 +2286,8 @@ function send_status_notifications($post_id,$item) {
if(! $notify)
return;
- require_once('include/enotify.php');
- notification(array(
+
+ Zlib\Enotify::submit(array(
'type' => NOTIFY_COMMENT,
'from_xchan' => $item['author_xchan'],
'to_xchan' => $r[0]['channel_hash'],
@@ -3060,10 +2367,10 @@ function tag_deliver($uid, $item_id) {
if (stristr($item['verb'],ACTIVITY_POKE)) {
$poke_notify = true;
- if(($item['obj_type'] == "") || ($item['obj_type'] !== ACTIVITY_OBJ_PERSON) || (! $item['object']))
+ if(($item['obj_type'] == "") || ($item['obj_type'] !== ACTIVITY_OBJ_PERSON) || (! $item['obj']))
$poke_notify = false;
- $obj = json_decode_plus($item['object']);
+ $obj = json_decode_plus($item['obj']);
if($obj) {
if($obj['id'] !== $u[0]['channel_hash'])
$poke_notify = false;
@@ -3073,8 +2380,7 @@ function tag_deliver($uid, $item_id) {
$verb = urldecode(substr($item['verb'],strpos($item['verb'],'#')+1));
if($poke_notify) {
- require_once('include/enotify.php');
- notification(array(
+ Zlib\Enotify::submit(array(
'to_xchan' => $u[0]['channel_hash'],
'from_xchan' => $item['author_xchan'],
'type' => NOTIFY_POKE,
@@ -3108,7 +2414,7 @@ function tag_deliver($uid, $item_id) {
intval($u[0]['channel_id'])
);
if($p) {
- $j_obj = json_decode_plus($item['object']);
+ $j_obj = json_decode_plus($item['obj']);
logger('tag_deliver: tag object: ' . print_r($j_obj,true), LOGGER_DATA);
if($j_obj && $j_obj['id'] && $j_obj['title']) {
if(is_array($j_obj['link']))
@@ -3122,7 +2428,7 @@ function tag_deliver($uid, $item_id) {
dbesc($j_tgt['id']),
intval($u[0]['channel_id'])
);
- proc_run('php','include/notifier.php','edit_post',$p[0]['id']);
+ Zotlabs\Daemon\Master::Summon(array('Notifier','edit_post',$p[0]['id']));
}
}
}
@@ -3239,8 +2545,7 @@ function tag_deliver($uid, $item_id) {
* Kill two birds with one stone. As long as we're here, send a mention notification.
*/
- require_once('include/enotify.php');
- notification(array(
+ Zlib\Enotify::submit(array(
'to_xchan' => $u[0]['channel_hash'],
'from_xchan' => $item['author_xchan'],
'type' => NOTIFY_TAGSELF,
@@ -3415,7 +2720,7 @@ function start_delivery_chain($channel, $item, $item_id, $parent) {
foreach($tags as $tt) {
$tt = trim($tt);
if($tt) {
- q("insert into term (uid,oid,otype,type,term,url)
+ q("insert into term (uid,oid,otype,ttype,term,url)
values(%d,%d,%d,%d,'%s','%s') ",
intval($channel['channel_id']),
intval($item_id),
@@ -3494,7 +2799,7 @@ function start_delivery_chain($channel, $item, $item_id, $parent) {
if($r)
- proc_run('php','include/notifier.php','tgroup',$item_id);
+ Zotlabs\Daemon\Master::Summon(array('Notifier','tgroup',$item_id));
else {
logger('start_delivery_chain: failed to update item');
// reset the source xchan to prevent loops
@@ -3558,7 +2863,7 @@ function check_item_source($uid, $item) {
foreach($words as $word) {
if(substr($word,0,1) === '#' && $tags) {
foreach($tags as $t)
- if((($t['type'] == TERM_HASHTAG) || ($t['type'] == TERM_COMMUNITYTAG)) && (($t['term'] === substr($word,1)) || (substr($word,1) === '*')))
+ if((($t['ttype'] == TERM_HASHTAG) || ($t['ttype'] == TERM_COMMUNITYTAG)) && (($t['term'] === substr($word,1)) || (substr($word,1) === '*')))
return true;
}
elseif((strpos($word,'/') === 0) && preg_match($word,$text))
@@ -3611,7 +2916,7 @@ function post_is_importable($item,$abook) {
continue;
if(substr($word,0,1) === '#' && $tags) {
foreach($tags as $t)
- if((($t['type'] == TERM_HASHTAG) || ($t['type'] == TERM_COMMUNITYTAG)) && (($t['term'] === substr($word,1)) || (substr($word,1) === '*')))
+ if((($t['ttype'] == TERM_HASHTAG) || ($t['ttype'] == TERM_COMMUNITYTAG)) && (($t['term'] === substr($word,1)) || (substr($word,1) === '*')))
return false;
}
elseif((strpos($word,'/') === 0) && preg_match($word,$text))
@@ -3632,7 +2937,7 @@ function post_is_importable($item,$abook) {
continue;
if(substr($word,0,1) === '#' && $tags) {
foreach($tags as $t)
- if((($t['type'] == TERM_HASHTAG) || ($t['type'] == TERM_COMMUNITYTAG)) && (($t['term'] === substr($word,1)) || (substr($word,1) === '*')))
+ if((($t['ttype'] == TERM_HASHTAG) || ($t['ttype'] == TERM_COMMUNITYTAG)) && (($t['term'] === substr($word,1)) || (substr($word,1) === '*')))
return true;
}
elseif((strpos($word,'/') === 0) && preg_match($word,$text))
@@ -3741,7 +3046,6 @@ function mail_store($arr) {
);
}
else {
- require_once('include/enotify.php');
$notif_params = array(
'from_xchan' => $arr['from_xchan'],
@@ -3752,584 +3056,13 @@ function mail_store($arr) {
'otype' => 'mail'
);
- notification($notif_params);
+ Zlib\Enotify::submit($notif_params);
}
call_hooks('post_mail_end',$arr);
return $current_post;
}
-/**
- * @brief Process atom feed and update anything/everything we might need to update.
- *
- * @param array $xml
- * The (atom) feed to consume - RSS isn't as fully supported but may work for simple feeds.
- * @param $importer
- * The contact_record (joined to user_record) of the local user who owns this
- * relationship. It is this person's stuff that is going to be updated.
- * @param $contact
- * The person who is sending us stuff. If not set, we MAY be processing a "follow" activity
- * from an external network and MAY create an appropriate contact record. Otherwise, we MUST
- * have a contact record.
- * @param int $pass by default ($pass = 0) we cannot guarantee that a parent item has been
- * imported prior to its children being seen in the stream unless we are certain
- * of how the feed is arranged/ordered.
- * * With $pass = 1, we only pull parent items out of the stream.
- * * With $pass = 2, we only pull children (comments/likes).
- *
- * So running this twice, first with pass 1 and then with pass 2 will do the right
- * thing regardless of feed ordering. This won't be adequate in a fully-threaded
- * model where comments can have sub-threads. That would require some massive sorting
- * to get all the feed items into a mostly linear ordering, and might still require
- * recursion.
- */
-function consume_feed($xml, $importer, &$contact, $pass = 0) {
-
- require_once('library/simplepie/simplepie.inc');
-
- if(! strlen($xml)) {
- logger('consume_feed: empty input');
- return;
- }
-
- $sys_expire = intval(get_config('system','default_expire_days'));
- $chn_expire = intval($importer['channel_expire_days']);
-
- $expire_days = $sys_expire;
-
- if(($chn_expire != 0) && ($chn_expire < $sys_expire))
- $expire_days = $chn_expire;
-
- // logger('expire_days: ' . $expire_days);
-
- $feed = new SimplePie();
- $feed->set_raw_data($xml);
- $feed->init();
-
- if($feed->error())
- logger('consume_feed: Error parsing XML: ' . $feed->error());
-
- $permalink = $feed->get_permalink();
-
- // Check at the feed level for updated contact name and/or photo
-
- // process any deleted entries
-
- $del_entries = $feed->get_feed_tags(NAMESPACE_TOMB, 'deleted-entry');
- if(is_array($del_entries) && count($del_entries) && $pass != 2) {
- foreach($del_entries as $dentry) {
- $deleted = false;
- if(isset($dentry['attribs']['']['ref'])) {
- $mid = $dentry['attribs']['']['ref'];
- $deleted = true;
- if(isset($dentry['attribs']['']['when'])) {
- $when = $dentry['attribs']['']['when'];
- $when = datetime_convert('UTC','UTC', $when, 'Y-m-d H:i:s');
- }
- else
- $when = datetime_convert('UTC','UTC','now','Y-m-d H:i:s');
- }
-
- if($deleted && is_array($contact)) {
- $r = q("SELECT * from item where mid = '%s' and author_xchan = '%s' and uid = %d limit 1",
- dbesc(base64url_encode($mid)),
- dbesc($contact['xchan_hash']),
- intval($importer['channel_id'])
- );
-
- if($r) {
- $item = $r[0];
-
- if(! intval($item['item_deleted'])) {
- logger('consume_feed: deleting item ' . $item['id'] . ' mid=' . base64url_decode($item['mid']), LOGGER_DEBUG);
- drop_item($item['id'],false);
- }
- }
- }
- }
- }
-
- // Now process the feed
-
- if($feed->get_item_quantity()) {
-
- logger('consume_feed: feed item count = ' . $feed->get_item_quantity(), LOGGER_DEBUG);
-
- $items = $feed->get_items();
-
- foreach($items as $item) {
-
- $is_reply = false;
- $item_id = base64url_encode($item->get_id());
-
- logger('consume_feed: processing ' . $item_id, LOGGER_DEBUG);
-
- $rawthread = $item->get_item_tags( NAMESPACE_THREAD,'in-reply-to');
- if(isset($rawthread[0]['attribs']['']['ref'])) {
- $is_reply = true;
- $parent_mid = base64url_encode($rawthread[0]['attribs']['']['ref']);
- }
-
- if($is_reply) {
-
- if($pass == 1)
- continue;
-
- // Have we seen it? If not, import it.
-
- $item_id = base64url_encode($item->get_id());
- $author = array();
- $datarray = get_atom_elements($feed,$item,$author);
-
- if($contact['xchan_network'] === 'rss') {
- $datarray['public_policy'] = 'specific';
- $datarray['comment_policy'] = 'none';
- }
-
- if((! x($author,'author_name')) || ($author['author_is_feed']))
- $author['author_name'] = $contact['xchan_name'];
- if((! x($author,'author_link')) || ($author['author_is_feed']))
- $author['author_link'] = $contact['xchan_url'];
- if((! x($author,'author_photo'))|| ($author['author_is_feed']))
- $author['author_photo'] = $contact['xchan_photo_m'];
-
- $datarray['author_xchan'] = '';
-
- if($author['author_link'] != $contact['xchan_url']) {
- $x = import_author_unknown(array('name' => $author['author_name'],'url' => $author['author_link'],'photo' => array('src' => $author['author_photo'])));
- if($x)
- $datarray['author_xchan'] = $x;
- }
- if(! $datarray['author_xchan'])
- $datarray['author_xchan'] = $contact['xchan_hash'];
-
- $datarray['owner_xchan'] = $contact['xchan_hash'];
-
- $r = q("SELECT edited FROM item WHERE mid = '%s' AND uid = %d LIMIT 1",
- dbesc($item_id),
- intval($importer['channel_id'])
- );
-
-
- // Update content if 'updated' changes
-
- if($r) {
- if((x($datarray,'edited') !== false)
- && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) {
-
- // do not accept (ignore) an earlier edit than one we currently have.
- if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited'])
- continue;
-
- update_feed_item($importer['channel_id'],$datarray);
- }
- continue;
- }
-
- $datarray['parent_mid'] = $parent_mid;
- $datarray['aid'] = $importer['channel_account_id'];
- $datarray['uid'] = $importer['channel_id'];
-
- logger('consume_feed: ' . print_r($datarray,true),LOGGER_DATA);
-
- $xx = item_store($datarray);
- $r = $xx['item_id'];
- continue;
- }
- else {
-
- // Head post of a conversation. Have we seen it? If not, import it.
-
- $item_id = base64url_encode($item->get_id());
- $author = array();
- $datarray = get_atom_elements($feed,$item,$author);
-
- if($contact['xchan_network'] === 'rss') {
- $datarray['public_policy'] = 'specific';
- $datarray['comment_policy'] = 'none';
- }
-
-
- if(is_array($contact)) {
- if((! x($author,'author_name')) || ($author['author_is_feed']))
- $author['author_name'] = $contact['xchan_name'];
- if((! x($author,'author_link')) || ($author['author_is_feed']))
- $author['author_link'] = $contact['xchan_url'];
- if((! x($author,'author_photo'))|| ($author['author_is_feed']))
- $author['author_photo'] = $contact['xchan_photo_m'];
- }
-
- if((! x($author,'author_name')) || (! x($author,'author_link'))) {
- logger('consume_feed: no author information! ' . print_r($author,true));
- continue;
- }
-
- $datarray['author_xchan'] = '';
-
- if(activity_match($datarray['verb'],ACTIVITY_FOLLOW) && $datarray['obj_type'] === ACTIVITY_OBJ_PERSON) {
- $cb = array('item' => $datarray,'channel' => $importer, 'xchan' => null, 'author' => $author, 'caught' => false);
- call_hooks('follow_from_feed',$cb);
- if($cb['caught']) {
- if($cb['return_code'])
- http_status_exit($cb['return_code']);
- continue;
- }
- }
-
- if($author['author_link'] != $contact['xchan_url']) {
- $x = import_author_unknown(array('name' => $author['author_name'],'url' => $author['author_link'],'photo' => array('src' => $author['author_photo'])));
- if($x)
- $datarray['author_xchan'] = $x;
- }
- if(! $datarray['author_xchan'])
- $datarray['author_xchan'] = $contact['xchan_hash'];
-
- $datarray['owner_xchan'] = $contact['xchan_hash'];
-
- if(array_key_exists('created',$datarray) && $datarray['created'] != NULL_DATE && $expire_days) {
- $t1 = $datarray['created'];
- $t2 = datetime_convert('UTC','UTC','now - ' . $expire_days . 'days');
- if($t1 < $t2) {
- logger('feed content older than expiration. Ignoring.', LOGGER_DEBUG, LOG_INFO);
- continue;
- }
- }
-
-
-
- $r = q("SELECT edited FROM item WHERE mid = '%s' AND uid = %d LIMIT 1",
- dbesc($item_id),
- intval($importer['channel_id'])
- );
-
- // Update content if 'updated' changes
-
- if($r) {
- if((x($datarray,'edited') !== false)
- && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) {
-
- // do not accept (ignore) an earlier edit than one we currently have.
- if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited'])
- continue;
-
- update_feed_item($importer['channel_id'],$datarray);
- }
-
- continue;
- }
-
- $datarray['parent_mid'] = $item_id;
- $datarray['uid'] = $importer['channel_id'];
- $datarray['aid'] = $importer['channel_account_id'];
-
- if(! link_compare($author['owner_link'],$contact['xchan_url'])) {
- logger('consume_feed: Correcting item owner.', LOGGER_DEBUG);
- $author['owner_name'] = $contact['name'];
- $author['owner_link'] = $contact['url'];
- $author['owner_avatar'] = $contact['thumb'];
- }
-
- if(! post_is_importable($datarray,$contact))
- continue;
-
- logger('consume_feed: author ' . print_r($author,true),LOGGER_DEBUG);
-
- logger('consume_feed: ' . print_r($datarray,true),LOGGER_DATA);
-
- $xx = item_store($datarray);
- $r = $xx['item_id'];
- continue;
- }
- }
- }
-}
-
-
-/**
- * @brief Process atom feed and return the first post and structure
- *
- * @param array $xml
- * The (atom) feed to consume - RSS isn't as fully supported but may work for simple feeds.
- * @param $importer
- * The contact_record (joined to user_record) of the local user who owns this
- * relationship. It is this person's stuff that is going to be updated.
- */
-
-function process_salmon_feed($xml, $importer) {
-
- $ret = array();
-
- require_once('library/simplepie/simplepie.inc');
-
- if(! strlen($xml)) {
- logger('process_feed: empty input');
- return;
- }
-
- $feed = new SimplePie();
- $feed->set_raw_data($xml);
- $feed->init();
-
- if($feed->error())
- logger('Error parsing XML: ' . $feed->error());
-
- $permalink = $feed->get_permalink();
-
- if($feed->get_item_quantity()) {
-
- // this should be exactly one
-
- logger('feed item count = ' . $feed->get_item_quantity(), LOGGER_DEBUG);
-
- $items = $feed->get_items();
-
- foreach($items as $item) {
-
- $item_id = base64url_encode($item->get_id());
-
- logger('processing ' . $item_id, LOGGER_DEBUG);
-
- $rawthread = $item->get_item_tags( NAMESPACE_THREAD,'in-reply-to');
- if(isset($rawthread[0]['attribs']['']['ref'])) {
- $is_reply = true;
- $parent_mid = base64url_encode($rawthread[0]['attribs']['']['ref']);
- }
-
- if($is_reply)
- $ret['parent_mid'] = $parent_mid;
-
- $ret['author'] = array();
-
- $datarray = get_atom_elements($feed,$item,$ret['author']);
-
- // reset policies which are restricted by default for RSS connections
- // This item is likely coming from GNU-social via salmon and allows public interaction
- $datarray['public_policy'] = '';
- $datarray['comment_policy'] = '';
-
- $ret['item'] = $datarray;
- }
- }
-
- return $ret;
-}
-
-/*
- * Given an xml (atom) feed, find author and hub links
- */
-
-
-function feed_meta($xml) {
- require_once('library/simplepie/simplepie.inc');
-
- $ret = array();
-
- if(! strlen($xml)) {
- logger('empty input');
- return $ret;
- }
-
- $feed = new SimplePie();
- $feed->set_raw_data($xml);
- $feed->init();
-
- if($feed->error()) {
- logger('Error parsing XML: ' . $feed->error());
- return $ret;
- }
-
- $ret['hubs'] = $feed->get_links('hub');
-
-// logger('consume_feed: hubs: ' . print_r($hubs,true), LOGGER_DATA);
-
- $author = array();
-
- $found_author = $feed->get_author();
- if($found_author) {
- $author['author_name'] = unxmlify($found_author->get_name());
- $author['author_link'] = unxmlify($found_author->get_link());
-
- $rawauthor = $feed->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'author');
- logger('rawauthor: ' . print_r($rawauthor,true));
-
- if($rawauthor) {
- if($rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) {
- $base = $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
- foreach($base as $link) {
- if(!x($author, 'author_photo') || ! $author['author_photo']) {
- if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar') {
- $author['author_photo'] = unxmlify($link['attribs']['']['href']);
- break;
- }
- }
- }
- }
- if($rawauthor[0]['child'][NAMESPACE_POCO]['displayName'][0]['data'])
- $author['full_name'] = unxmlify($rawauthor[0]['child'][NAMESPACE_POCO]['displayName'][0]['data']);
- if($rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])
- $author['author_uri'] = unxmlify($rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']);
-
- }
- }
-
- if(substr($author['author_link'],-1,1) == '/')
- $author['author_link'] = substr($author['author_link'],0,-1);
-
- $ret['author'] = $author;
-
- return $ret;
-}
-
-
-
-function update_feed_item($uid,$datarray) {
- logger('update_feed_item: not implemented! ' . $uid . ' ' . print_r($datarray,true), LOGGER_DATA);
-}
-
-
-function handle_feed($uid,$abook_id,$url) {
-
- require_once('include/Contact.php');
- $channel = channelx_by_n($uid);
- if(! $channel)
- return;
-
- $x = q("select * from abook left join xchan on abook_xchan = xchan_hash where abook_id = %d and abook_channel = %d limit 1",
- dbesc($abook_id),
- intval($uid)
- );
-
- $recurse = 0;
- $z = z_fetch_url($url,false,$recurse,array('novalidate' => true));
-
-//logger('handle_feed:' . print_r($z,true));
-
- if($z['success']) {
- consume_feed($z['body'],$channel,$x[0],1);
- consume_feed($z['body'],$channel,$x[0],2);
- }
-}
-
-
-function atom_author($tag,$name,$uri,$h,$w,$type,$photo) {
- $o = '';
- if(! $tag)
- return $o;
-
- $name = xmlify($name);
- $uri = xmlify($uri);
- $h = intval($h);
- $w = intval($w);
- $photo = xmlify($photo);
-
- $o .= "<$tag>\r\n";
- $o .= "<name>$name</name>\r\n";
- $o .= "<uri>$uri</uri>\r\n";
- $o .= '<link rel="photo" type="' . $type . '" media:width="' . $w . '" media:height="' . $h . '" href="' . $photo . '" />' . "\r\n";
- $o .= '<link rel="avatar" type="' . $type . '" media:width="' . $w . '" media:height="' . $h . '" href="' . $photo . '" />' . "\r\n";
-
- call_hooks('atom_author', $o);
-
- $o .= "</$tag>\r\n";
-
- return $o;
-}
-
-function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) {
-
- if(! $item['parent'])
- return;
-
- if($item['deleted'])
- return '<at:deleted-entry ref="' . xmlify($item['mid']) . '" when="' . xmlify(datetime_convert('UTC','UTC',$item['edited'] . '+00:00',ATOM_TIME)) . '" />' . "\r\n";
-
-
- create_export_photo_body($item);
-
- if($item['allow_cid'] || $item['allow_gid'] || $item['deny_cid'] || $item['deny_gid'])
- $body = fix_private_photos($item['body'],$owner['uid'],$item,$cid);
- else
- $body = $item['body'];
-
- $o = "\r\n\r\n<entry>\r\n";
-
- if(is_array($author))
- $o .= atom_author('author',$author['xchan_name'],$author['xchan_url'],80,80,$author['xchan_photo_mimetype'],$author['xchan_photo_m']);
- else
- $o .= atom_author('author',$item['author']['xchan_name'],$item['author']['xchan_url'],80,80,$item['author']['xchan_photo_mimetype'], $item['author']['xchan_photo_m']);
-
- $o .= atom_author('zot:owner',$item['owner']['xchan_name'],$item['owner']['xchan_url'],80,80,$item['owner']['xchan_photo_mimetype'],$item['owner']['xchan_photo_m']);
-
- if(($item['parent'] != $item['id']) || ($item['parent_mid'] !== $item['mid']) || (($item['thr_parent'] !== '') && ($item['thr_parent'] !== $item['mid']))) {
- $parent_item = (($item['thr_parent']) ? $item['thr_parent'] : $item['parent_mid']);
- $o .= '<thr:in-reply-to ref="' . z_root() . '/display/' . xmlify($parent_item) . '" type="text/html" href="' . xmlify($item['plink']) . '" />' . "\r\n";
- }
-
- if(activity_match($item['obj_type'],ACTIVITY_OBJ_EVENT) && activity_match($item['verb'],ACTIVITY_POST)) {
- $obj = ((is_array($item['obj'])) ? $item['object'] : json_decode($item['object'],true));
-
- $o .= '<title>' . xmlify($item['title']) . '</title>' . "\r\n";
- $o .= '<summary xmlns="urn:ietf:params:xml:ns:xcal">' . xmlify(bbcode($obj['title'])) . '</summary>' . "\r\n";
- $o .= '<dtstart xmlns="urn:ietf:params:xml:ns:xcal">' . datetime_convert('UTC','UTC', $obj['start'],'Ymd\\THis' . (($obj['adjust']) ? '\\Z' : '')) . '</dtstart>' . "\r\n";
- $o .= '<dtend xmlns="urn:ietf:params:xml:ns:xcal">' . datetime_convert('UTC','UTC', $obj['finish'],'Ymd\\THis' . (($obj['adjust']) ? '\\Z' : '')) . '</dtend>' . "\r\n";
- $o .= '<location xmlns="urn:ietf:params:xml:ns:xcal">' . xmlify(bbcode($obj['location'])) . '</location>' . "\r\n";
- $o .= '<content type="' . $type . '" >' . xmlify(bbcode($obj['description'])) . '</content>' . "\r\n";
- }
- else {
- $o .= '<title>' . xmlify($item['title']) . '</title>' . "\r\n";
- $o .= '<content type="' . $type . '" >' . xmlify(prepare_text($body,$item['mimetype'])) . '</content>' . "\r\n";
- }
-
- $o .= '<id>' . z_root() . '/display/' . xmlify($item['mid']) . '</id>' . "\r\n";
- $o .= '<published>' . xmlify(datetime_convert('UTC','UTC',$item['created'] . '+00:00',ATOM_TIME)) . '</published>' . "\r\n";
- $o .= '<updated>' . xmlify(datetime_convert('UTC','UTC',$item['edited'] . '+00:00',ATOM_TIME)) . '</updated>' . "\r\n";
-
- $o .= '<link rel="alternate" type="text/html" href="' . xmlify($item['plink']) . '" />' . "\r\n";
-
- if($item['location']) {
- $o .= '<zot:location>' . xmlify($item['location']) . '</zot:location>' . "\r\n";
- $o .= '<poco:address><poco:formatted>' . xmlify($item['location']) . '</poco:formatted></poco:address>' . "\r\n";
- }
-
- if($item['coord'])
- $o .= '<georss:point>' . xmlify($item['coord']) . '</georss:point>' . "\r\n";
-
- if(($item['item_private']) || strlen($item['allow_cid']) || strlen($item['allow_gid']) || strlen($item['deny_cid']) || strlen($item['deny_gid']))
- $o .= '<zot:private>' . (($item['item_private']) ? $item['item_private'] : 1) . '</zot:private>' . "\r\n";
-
- if($item['app'])
- $o .= '<statusnet:notice_info local_id="' . $item['id'] . '" source="' . xmlify($item['app']) . '" ></statusnet:notice_info>' . "\r\n";
-
- $verb = construct_verb($item);
- $o .= '<as:verb>' . xmlify($verb) . '</as:verb>' . "\r\n";
- $actobj = construct_activity_object($item);
- if(strlen($actobj))
- $o .= $actobj;
- $actarg = construct_activity_target($item);
- if(strlen($actarg))
- $o .= $actarg;
-
- // FIXME
-// $tags = item_getfeedtags($item);
-// if(count($tags)) {
-// foreach($tags as $t) {
-// $o .= '<category scheme="X-DFRN:' . xmlify($t[0]) . ':' . xmlify($t[1]) . '" term="' . xmlify($t[2]) . '" />' . "\r\n";
-// }
-// }
-
-// FIXME
-// $o .= item_getfeedattach($item);
-
-// $mentioned = get_mentions($item,$tags);
-// if($mentioned)
-// $o .= $mentioned;
-
- call_hooks('atom_entry', $o);
-
- $o .= '</entry>' . "\r\n";
-
- return $o;
-}
function fix_private_photos($s, $uid, $item = null, $cid = 0) {
@@ -4358,7 +3091,7 @@ function fix_private_photos($s, $uid, $item = null, $cid = 0) {
if($x) {
$res = substr($i,$x+1);
$i = substr($i,0,$x);
- $r = q("SELECT * FROM `photo` WHERE `resource_id` = '%s' AND `scale` = %d AND `uid` = %d",
+ $r = q("SELECT * FROM `photo` WHERE `resource_id` = '%s' AND `imgscale` = %d AND `uid` = %d",
dbesc($i),
intval($res),
intval($uid)
@@ -4481,7 +3214,7 @@ function item_getfeedtags($item) {
if(count($terms)) {
foreach($terms as $term) {
- if(($term['type'] == TERM_HASHTAG) || ($term['type'] == TERM_COMMUNITYTAG))
+ if(($term['ttype'] == TERM_HASHTAG) || ($term['ttype'] == TERM_COMMUNITYTAG))
$ret[] = array('#',$term['url'],$term['term']);
else
$ret[] = array('@',$term['url'],$term['term']);
@@ -4573,7 +3306,7 @@ function item_expire($uid,$days) {
drop_item($item['id'],false);
}
-// proc_run('php',"include/notifier.php","expire","$uid");
+// Zotlabs\Daemon\Master::Summon(array('Notifier','expire',$uid));
}
function retain_item($id) {
@@ -4599,7 +3332,7 @@ function drop_items($items) {
// multiple threads may have been deleted, send an expire notification
if($uid)
- proc_run('php',"include/notifier.php","expire","$uid");
+ Zotlabs\Daemon\Master::Summon(array('Notifier','expire',$uid));
}
@@ -4695,7 +3428,7 @@ function drop_item($id,$interactive = true,$stage = DROPITEM_NORMAL,$force = fal
// set if we know we're going to send delete notifications out to others.
if((intval($item['item_wall']) && ($stage != DROPITEM_PHASE2)) || ($stage == DROPITEM_PHASE1))
- proc_run('php','include/notifier.php','drop',$notify_id);
+ Zotlabs\Daemon\Master::Summon(array('Notifier','drop',$notify_id));
goaway(z_root() . '/' . $_SESSION['return_url']);
}
@@ -4952,7 +3685,7 @@ function fetch_post_tags($items,$link = false) {
for($x = 0; $x < count($items); $x ++) {
if($tags) {
foreach($tags as $t) {
- if(($link) && ($t['type'] == TERM_MENTION))
+ if(($link) && ($t['ttype'] == TERM_MENTION))
$t['url'] = chanlink_url($t['url']);
if(array_key_exists('item_id',$items[$x])) {
if($t['oid'] == $items[$x]['item_id']) {
@@ -5162,8 +3895,8 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C
}
$contact_str = '';
- /** @FIXME $group is undefined */
- $contacts = group_get_members($group);
+
+ $contacts = group_get_members($r[0]['id']);
if ($contacts) {
foreach($contacts as $c) {
if($contact_str)
@@ -5180,7 +3913,7 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C
$sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND (( author_xchan IN ( $contact_str ) OR owner_xchan in ( $contact_str)) or allow_gid like '" . protect_sprintf('%<' . dbesc($r[0]['hash']) . '>%') . "' ) and id = parent $item_normal ) ";
$x = group_rec_byhash($uid,$r[0]['hash']);
- $result['headline'] = sprintf( t('Privacy group: %s'),$x['name']);
+ $result['headline'] = sprintf( t('Privacy group: %s'),$x['gname']);
}
elseif($arr['cid'] && $uid) {
@@ -5512,90 +4245,6 @@ function comment_local_origin($item) {
}
-function gen_asld($items) {
- $ret = array();
- if(! $items)
- return $ret;
- foreach($items as $item) {
- $ret[] = i2asld($item);
- }
- return $ret;
-}
-
-
-function i2asld($i) {
-
- if(! $i)
- return array();
-
- $ret = array();
-
- $ret['@context'] = array( 'http://www.w3.org/ns/activitystreams', 'zot' => 'http://purl.org/zot/protocol');
-
- if($i['verb']) {
- if(strpos(dirname($i['verb'],'activitystrea.ms/schema/1.0'))) {
- $ret['@type'] = ucfirst(basename($i['verb']));
- }
- elseif(strpos(dirname($i['verb'],'purl.org/zot'))) {
- $ret['@type'] = 'zot:' . ucfirst(basename($i['verb']));
- }
- }
- $ret['@id'] = $i['plink'];
-
- $ret['published'] = datetime_convert('UTC','UTC',$i['created'],ATOM_TIME);
-
- // we need to pass the parent into this
-// if($i['id'] != $i['parent'] && $i['obj_type'] === ACTIVITY_OBJ_NOTE) {
-// $ret['inReplyTo'] = asencode_note
-// }
-
- if($i['obj_type'] === ACTIVITY_OBJ_NOTE)
- $ret['object'] = asencode_note($i);
-
-
- $ret['actor'] = asencode_person($i['author']);
-
-
- return $ret;
-
-}
-
-function asencode_note($i) {
-
- $ret = array();
-
- $ret['@type'] = 'Note';
- $ret['@id'] = $i['plink'];
- if($i['title'])
- $ret['title'] = bbcode($i['title']);
- $ret['content'] = bbcode($i['body']);
- $ret['zot:owner'] = asencode_person($i['owner']);
- $ret['published'] = datetime_convert('UTC','UTC',$i['created'],ATOM_TIME);
- if($i['created'] !== $i['edited'])
- $ret['updated'] = datetime_convert('UTC','UTC',$i['edited'],ATOM_TIME);
-
- return $ret;
-}
-
-
-function asencode_person($p) {
- $ret = array();
- $ret['@type'] = 'Person';
- $ret['@id'] = 'acct:' . $p['xchan_addr'];
- $ret['displayName'] = $p['xchan_name'];
- $ret['icon'] = array(
- '@type' => 'Link',
- 'mediaType' => $p['xchan_photo_mimetype'],
- 'href' => $p['xchan_photo_m']
- );
- $ret['url'] = array(
- '@type' => 'Link',
- 'mediaType' => 'text/html',
- 'href' => $p['xchan_url']
- );
-
- return $ret;
-}
function send_profile_photo_activity($channel,$photo,$profile) {
@@ -5612,7 +4261,7 @@ function send_profile_photo_activity($channel,$photo,$profile) {
$arr['obj_type'] = ACTIVITY_OBJ_PHOTO;
$arr['verb'] = ACTIVITY_UPDATE;
- $arr['object'] = json_encode(array(
+ $arr['obj'] = json_encode(array(
'type' => $arr['obj_type'],
'id' => z_root() . '/photo/profile/l/' . $channel['channel_id'],
'link' => array('rel' => 'photo', 'type' => $photo['type'], 'href' => z_root() . '/photo/profile/l/' . $channel['channel_id'])
diff --git a/include/language.php b/include/language.php
index d6b7606ca..96d3e48a9 100644
--- a/include/language.php
+++ b/include/language.php
@@ -82,13 +82,11 @@ function get_best_language() {
if($arr['preferred'] !== 'unset')
return $arr['preferred'];
- $a = get_app();
return ((isset(App::$config['system']['language'])) ? App::$config['system']['language'] : 'en');
}
function push_lang($language) {
- global $a;
App::$langsave = App::$language;
@@ -104,7 +102,6 @@ function push_lang($language) {
}
function pop_lang() {
- global $a;
if(App::$language === App::$langsave)
return;
@@ -124,7 +121,6 @@ function pop_lang() {
* @param boolean $install (optional) default false
*/
function load_translation_table($lang, $install = false) {
- global $a;
App::$strings = array();
@@ -136,10 +132,10 @@ function load_translation_table($lang, $install = false) {
}
if(! $install) {
- $plugins = q("SELECT name FROM addon WHERE installed=1;");
+ $plugins = q("SELECT aname FROM addon WHERE installed=1;");
if ($plugins !== false) {
foreach($plugins as $p) {
- $name = $p['name'];
+ $name = $p['aname'];
if(file_exists("addon/$name/lang/$lang/hstrings.php")) {
include("addon/$name/lang/$lang/hstrings.php");
}
@@ -170,7 +166,6 @@ function load_translation_table($lang, $install = false) {
*
*/
function t($s, $ctx = '') {
- global $a;
$cs = $ctx ? '__ctx:' . $ctx . '__ ' . $s : $s;
if (x(App::$strings, $cs)) {
@@ -189,7 +184,7 @@ function t($s, $ctx = '') {
function translate_projectname($s) {
- return str_replace(array('$projectname','$Projectname'),array(Zotlabs\Project\System::get_platform_name(),ucfirst(Zotlabs\Project\System::get_platform_name())),$s);
+ return str_replace(array('$projectname','$Projectname'),array(Zotlabs\Lib\System::get_platform_name(),ucfirst(Zotlabs\Lib\System::get_platform_name())),$s);
}
@@ -205,7 +200,6 @@ function translate_projectname($s) {
* @return string
*/
function tt($singular, $plural, $count, $ctx = ''){
- $a = get_app();
$cs = $ctx ? "__ctx:" . $ctx . "__ " . $singular : $singular;
if (x(App::$strings,$cs)) {
diff --git a/include/message.php b/include/message.php
index a7883d50e..d3d8181ae 100644
--- a/include/message.php
+++ b/include/message.php
@@ -257,7 +257,7 @@ function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto='
}
}
- proc_run('php','include/notifier.php','mail',$post_id);
+ Zotlabs\Daemon\Master::Summon(array('Notifier','mail',$post_id));
$ret['success'] = true;
$ret['message_item'] = intval($post_id);
diff --git a/include/network.php b/include/network.php
index 9f68d3df3..0dd10e29b 100644
--- a/include/network.php
+++ b/include/network.php
@@ -595,8 +595,6 @@ function parse_xml_string($s,$strict = true) {
function scale_external_images($s, $include_link = true, $scale_replace = false) {
- $a = get_app();
-
// Picture addresses can contain special characters
$s = htmlspecialchars_decode($s, ENT_COMPAT);
@@ -1168,6 +1166,10 @@ function discover_by_webbie($webbie) {
if(! $x)
$probe_old = true;
+
+ if((! $dfrn) && (! $has_salmon))
+ $probe_old = true;
+
if($probe_old) {
$y = old_webfinger($webbie);
if($y) {
@@ -1614,8 +1616,6 @@ function fetch_xrd_links($url) {
function scrape_vcard($url) {
- $a = get_app();
-
$ret = array();
logger('scrape_vcard: url=' . $url);
@@ -1695,8 +1695,6 @@ function scrape_vcard($url) {
function scrape_feed($url) {
- $a = get_app();
-
$ret = array();
$level = 0;
$x = z_fetch_url($url,false,$level,array('novalidate' => true));
@@ -1815,8 +1813,6 @@ function service_plink($contact, $guid) {
function format_and_send_email($sender,$xchan,$item) {
- require_once('include/enotify.php');
-
$title = $item['title'];
$body = $item['body'];
@@ -1835,7 +1831,7 @@ function format_and_send_email($sender,$xchan,$item) {
$tpl = get_markup_template('email_notify_html.tpl');
$email_html_body = replace_macros($tpl,array(
'$banner' => $banner,
- '$notify_icon' => Zotlabs\Project\System::get_notify_icon(),
+ '$notify_icon' => Zotlabs\Lib\System::get_notify_icon(),
'$product' => $product,
'$preamble' => '',
'$sitename' => $sitename,
@@ -1881,7 +1877,7 @@ function format_and_send_email($sender,$xchan,$item) {
// use the EmailNotification library to send the message
- enotify::send(array(
+ Zotlabs\Lib\Enotify::send(array(
'fromName' => $product,
'fromEmail' => $sender_email,
'replyTo' => $sender_email,
@@ -1912,10 +1908,13 @@ function do_delivery($deliveries) {
$deliver = array();
foreach($deliveries as $d) {
+ if(! $d)
+ continue;
+
$deliver[] = $d;
if(count($deliver) >= $deliveries_per_process) {
- proc_run('php','include/deliver.php',$deliver);
+ Zotlabs\Daemon\Master::Summon(array('Deliver',$deliver));
$deliver = array();
if($interval)
@time_sleep_until(microtime(true) + (float) $interval);
@@ -1925,7 +1924,7 @@ function do_delivery($deliveries) {
// catch any stragglers
if($deliver)
- proc_run('php','include/deliver.php',$deliver);
+ Zotlabs\Daemon\Master::Summon(array('Deliver',$deliver));
}
@@ -1933,9 +1932,6 @@ function do_delivery($deliveries) {
function get_site_info() {
- global $db;
- global $a;
-
$register_policy = Array('REGISTER_CLOSED', 'REGISTER_APPROVE', 'REGISTER_OPEN');
$directory_mode = Array('DIRECTORY_MODE_NORMAL', 'DIRECTORY_MODE_PRIMARY', 'DIRECTORY_MODE_SECONDARY', 256 => 'DIRECTORY_MODE_STANDALONE');
@@ -1971,7 +1967,7 @@ function get_site_info() {
$r = q("select * from addon where hidden = 0");
if(count($r))
foreach($r as $rr)
- $visible_plugins[] = $rr['name'];
+ $visible_plugins[] = $rr['aname'];
}
sort($visible_plugins);
@@ -1983,8 +1979,8 @@ function get_site_info() {
$site_info = get_config('system','info');
$site_name = get_config('system','sitename');
if(! get_config('system','hidden_version_siteinfo')) {
- $version = Zotlabs\Project\System::get_project_version();
- $tag = Zotlabs\Project\System::get_std_version();
+ $version = Zotlabs\Lib\System::get_project_version();
+ $tag = Zotlabs\Lib\System::get_std_version();
if(@is_dir('.git') && function_exists('shell_exec')) {
$commit = trim( @shell_exec('git log -1 --format="%h"'));
@@ -2020,7 +2016,7 @@ function get_site_info() {
$data = Array(
'version' => $version,
'version_tag' => $tag,
- 'server_role' => Zotlabs\Project\System::get_server_role(),
+ 'server_role' => Zotlabs\Lib\System::get_server_role(),
'commit' => $commit,
'url' => z_root(),
'plugins' => $visible_plugins,
@@ -2034,8 +2030,8 @@ function get_site_info() {
'locked_features' => $locked_features,
'admin' => $admin,
'site_name' => (($site_name) ? $site_name : ''),
- 'platform' => Zotlabs\Project\System::get_platform_name(),
- 'dbdriver' => $db->getdriver(),
+ 'platform' => Zotlabs\Lib\System::get_platform_name(),
+ 'dbdriver' => DBA::$dba->getdriver(),
'lastpoll' => get_config('system','lastpoll'),
'info' => (($site_info) ? $site_info : ''),
'channels_total' => $channels_total_stat,
@@ -2143,3 +2139,29 @@ function get_repository_version($branch = 'master') {
return '?.?';
}
+
+function network_to_name($s) {
+
+ $nets = array(
+ NETWORK_DFRN => t('Friendica'),
+ NETWORK_FRND => t('Friendica'),
+ NETWORK_OSTATUS => t('OStatus'),
+ NETWORK_GNUSOCIAL => t('GNU-Social'),
+ NETWORK_FEED => t('RSS/Atom'),
+ NETWORK_MAIL => t('Email'),
+ NETWORK_DIASPORA => t('Diaspora'),
+ NETWORK_FACEBOOK => t('Facebook'),
+ NETWORK_ZOT => t('Zot'),
+ NETWORK_LINKEDIN => t('LinkedIn'),
+ NETWORK_XMPP => t('XMPP/IM'),
+ NETWORK_MYSPACE => t('MySpace'),
+ );
+
+ call_hooks('network_to_name', $nets);
+
+ $search = array_keys($nets);
+ $replace = array_values($nets);
+
+ return str_replace($search,$replace,$s);
+
+}
diff --git a/include/notifier.php b/include/notifier.php
deleted file mode 100644
index 708d42bd0..000000000
--- a/include/notifier.php
+++ /dev/null
@@ -1,664 +0,0 @@
-<?php /** @file */
-
-require_once("boot.php");
-require_once('include/queue_fn.php');
-require_once('include/html2plain.php');
-
-/*
- * This file was at one time responsible for doing all deliveries, but this caused
- * big problems on shared hosting systems, where the process might get killed by the
- * hosting provider and nothing would get delivered.
- * It now only delivers one message under certain cases, and invokes a queued
- * delivery mechanism (include/deliver.php) to deliver individual contacts at
- * controlled intervals.
- * This has a much better chance of surviving random processes getting killed
- * by the hosting provider.
- *
- * The basic flow is:
- * Identify the type of message
- * Collect any information that needs to be sent
- * Convert it into a suitable generic format for sending
- * Figure out who the recipients are and if we need to relay
- * through a conversation owner
- * Once we know what recipients are involved, collect a list of
- * destination sites
- * Build and store a queue item for each unique site and invoke
- * a delivery process for each site or a small number of sites (1-3)
- * and add a slight delay between each delivery invocation if desired (usually)
- *
- */
-
-/*
- * The notifier is typically called with:
- *
- * proc_run('php', "include/notifier.php", COMMAND, ITEM_ID);
- *
- * where COMMAND is one of the following:
- *
- * activity (in diaspora.php, dfrn_confirm.php, profiles.php)
- * comment-import (in diaspora.php, items.php)
- * comment-new (in item.php)
- * drop (in diaspora.php, items.php, photos.php)
- * edit_post (in item.php)
- * event (in events.php)
- * expire (in items.php)
- * like (in like.php, poke.php)
- * mail (in message.php)
- * tag (in photos.php, poke.php, tagger.php)
- * tgroup (in items.php)
- * wall-new (in photos.php, item.php)
- *
- * and ITEM_ID is the id of the item in the database that needs to be sent to others.
- *
- * ZOT
- * permission_create abook_id
- * permission_update abook_id
- * refresh_all channel_id
- * purge_all channel_id
- * expire channel_id
- * relay item_id (item was relayed to owner, we will deliver it as owner)
- * single_activity item_id (deliver to a singleton network from the appropriate clone)
- * single_mail mail_id (deliver to a singleton network from the appropriate clone)
- * location channel_id
- * request channel_id xchan_hash message_id
- * rating xlink_id
- *
- */
-
-require_once('include/cli_startup.php');
-require_once('include/zot.php');
-require_once('include/queue_fn.php');
-require_once('include/datetime.php');
-require_once('include/items.php');
-require_once('include/bbcode.php');
-require_once('include/identity.php');
-require_once('include/Contact.php');
-
-function notifier_run($argv, $argc){
-
- cli_startup();
-
- $a = get_app();
-
-
- if($argc < 3)
- return;
-
- logger('notifier: invoked: ' . print_r($argv,true), LOGGER_DEBUG);
-
- $cmd = $argv[1];
-
- $item_id = $argv[2];
-
- $extra = (($argc > 3) ? $argv[3] : null);
-
- if(! $item_id)
- return;
-
- $sys = get_sys_channel();
-
- $deliveries = array();
-
- $dead_hubs = array();
-
- $dh = q("select site_url from site where site_dead = 1");
- if($dh) {
- foreach($dh as $dead) {
- $dead_hubs[] = $dead['site_url'];
- }
- }
-
-
- $request = false;
- $mail = false;
- $top_level = false;
- $location = false;
- $recipients = array();
- $url_recipients = array();
- $normal_mode = true;
- $packet_type = 'undefined';
-
- if($cmd === 'mail' || $cmd === 'single_mail') {
- $normal_mode = false;
- $mail = true;
- $private = true;
- $message = q("SELECT * FROM `mail` WHERE `id` = %d LIMIT 1",
- intval($item_id)
- );
- if(! $message) {
- return;
- }
- xchan_mail_query($message[0]);
- $uid = $message[0]['channel_id'];
- $recipients[] = $message[0]['from_xchan']; // include clones
- $recipients[] = $message[0]['to_xchan'];
- $item = $message[0];
-
- $encoded_item = encode_mail($item);
-
- $s = q("select * from channel where channel_id = %d limit 1",
- intval($item['channel_id'])
- );
- if($s)
- $channel = $s[0];
-
- }
- elseif($cmd === 'request') {
- $channel_id = $item_id;
- $xchan = $argv[3];
- $request_message_id = $argv[4];
-
- $s = q("select * from channel where channel_id = %d limit 1",
- intval($channel_id)
- );
- if($s)
- $channel = $s[0];
-
- $private = true;
- $recipients[] = $xchan;
- $packet_type = 'request';
- $normal_mode = false;
- }
- elseif($cmd == 'permission_update' || $cmd == 'permission_create') {
- // Get the (single) recipient
- $r = q("select * from abook left join xchan on abook_xchan = xchan_hash where abook_id = %d and abook_self = 0",
- intval($item_id)
- );
- if($r) {
- $uid = $r[0]['abook_channel'];
- // Get the sender
- $channel = channelx_by_n($uid);
- if($channel) {
- $perm_update = array('sender' => $channel, 'recipient' => $r[0], 'success' => false, 'deliveries' => '');
-
- if($cmd == 'permission_create')
- call_hooks('permissions_create',$perm_update);
- else
- call_hooks('permissions_update',$perm_update);
-
- if($perm_update['success']) {
- if($perm_update['deliveries']) {
- $deliveries[] = $perm_update['deliveries'];
- do_delivery($deliveries);
- }
- return;
- }
- else {
- $recipients[] = $r[0]['abook_xchan'];
- $private = false;
- $packet_type = 'refresh';
- $packet_recips = array(array('guid' => $r[0]['xchan_guid'],'guid_sig' => $r[0]['xchan_guid_sig'],'hash' => $r[0]['xchan_hash']));
- }
- }
- }
- }
- elseif($cmd === 'refresh_all') {
- logger('notifier: refresh_all: ' . $item_id);
- $uid = $item_id;
- $channel = channelx_by_n($item_id);
- $r = q("select abook_xchan from abook where abook_channel = %d",
- intval($item_id)
- );
- if($r) {
- foreach($r as $rr) {
- $recipients[] = $rr['abook_xchan'];
- }
- }
- $private = false;
- $packet_type = 'refresh';
- }
- elseif($cmd === 'location') {
- logger('notifier: location: ' . $item_id);
- $s = q("select * from channel where channel_id = %d limit 1",
- intval($item_id)
- );
- if($s)
- $channel = $s[0];
- $uid = $item_id;
- $recipients = array();
- $r = q("select abook_xchan from abook where abook_channel = %d",
- intval($item_id)
- );
- if($r) {
- foreach($r as $rr) {
- $recipients[] = $rr['abook_xchan'];
- }
- }
-
- $encoded_item = array('locations' => zot_encode_locations($channel),'type' => 'location', 'encoding' => 'zot');
- $target_item = array('aid' => $channel['channel_account_id'],'uid' => $channel['channel_id']);
- $private = false;
- $packet_type = 'location';
- $location = true;
- }
- elseif($cmd === 'purge_all') {
- logger('notifier: purge_all: ' . $item_id);
- $s = q("select * from channel where channel_id = %d limit 1",
- intval($item_id)
- );
- if($s)
- $channel = $s[0];
- $uid = $item_id;
- $recipients = array();
- $r = q("select abook_xchan from abook where abook_channel = %d",
- intval($item_id)
- );
- if($r) {
- foreach($r as $rr) {
- $recipients[] = $rr['abook_xchan'];
- }
- }
- $private = false;
- $packet_type = 'purge';
- }
- else {
-
- // Normal items
-
- // Fetch the target item
-
- $r = q("SELECT * FROM item WHERE id = %d and parent != 0 LIMIT 1",
- intval($item_id)
- );
-
- if(! $r)
- return;
-
- xchan_query($r);
-
- $r = fetch_post_tags($r);
-
- $target_item = $r[0];
- $deleted_item = false;
-
- if(intval($target_item['item_deleted'])) {
- logger('notifier: target item ITEM_DELETED', LOGGER_DEBUG);
- $deleted_item = true;
- }
-
- if(intval($target_item['item_type']) != ITEM_TYPE_POST) {
- logger('notifier: target item not forwardable: type ' . $target_item['item_type'], LOGGER_DEBUG);
- return;
- }
- if(intval($target_item['item_unpublished']) || intval($target_item['item_delayed']) || intval($target_item['item_hidden'])) {
- logger('notifier: target item not published, so not forwardable', LOGGER_DEBUG);
- return;
- }
-
- if(strpos($target_item['postopts'],'nodeliver') !== false) {
- logger('notifier: target item is undeliverable', LOGGER_DEBUG);
- return;
- }
-
- $s = q("select * from channel left join xchan on channel_hash = xchan_hash where channel_id = %d limit 1",
- intval($target_item['uid'])
- );
- if($s)
- $channel = $s[0];
-
- if($channel['channel_hash'] !== $target_item['author_xchan'] && $channel['channel_hash'] !== $target_item['owner_xchan']) {
- logger("notifier: Sending channel {$channel['channel_hash']} is not owner {$target_item['owner_xchan']} or author {$target_item['author_xchan']}", LOGGER_NORMAL, LOG_WARNING);
- return;
- }
-
-
- if($target_item['id'] == $target_item['parent']) {
- $parent_item = $target_item;
- $top_level_post = true;
- }
- else {
- // fetch the parent item
- $r = q("SELECT * from item where id = %d order by id asc",
- intval($target_item['parent'])
- );
-
- if(! $r)
- return;
-
- if(strpos($r[0]['postopts'],'nodeliver') !== false) {
- logger('notifier: target item is undeliverable', LOGGER_DEBUG, LOG_NOTICE);
- return;
- }
-
- xchan_query($r);
- $r = fetch_post_tags($r);
-
- $parent_item = $r[0];
- $top_level_post = false;
- }
-
- // avoid looping of discover items 12/4/2014
-
- if($sys && $parent_item['uid'] == $sys['channel_id'])
- return;
-
- $encoded_item = encode_item($target_item);
-
- // Send comments to the owner to re-deliver to everybody in the conversation
- // We only do this if the item in question originated on this site. This prevents looping.
- // To clarify, a site accepting a new comment is responsible for sending it to the owner for relay.
- // Relaying should never be initiated on a post that arrived from elsewhere.
-
- // We should normally be able to rely on ITEM_ORIGIN, but start_delivery_chain() incorrectly set this
- // flag on comments for an extended period. So we'll also call comment_local_origin() which looks at
- // the hostname in the message_id and provides a second (fallback) opinion.
-
- $relay_to_owner = (((! $top_level_post) && (intval($target_item['item_origin'])) && comment_local_origin($target_item)) ? true : false);
-
-
-
- $uplink = false;
-
- // $cmd === 'relay' indicates the owner is sending it to the original recipients
- // don't allow the item in the relay command to relay to owner under any circumstances, it will loop
-
- logger('notifier: relay_to_owner: ' . (($relay_to_owner) ? 'true' : 'false'), LOGGER_DATA, LOG_DEBUG);
- logger('notifier: top_level_post: ' . (($top_level_post) ? 'true' : 'false'), LOGGER_DATA, LOG_DEBUG);
-
- // tag_deliver'd post which needs to be sent back to the original author
-
- if(($cmd === 'uplink') && intval($parent_item['item_uplink']) && (! $top_level_post)) {
- logger('notifier: uplink');
- $uplink = true;
- }
-
- if(($relay_to_owner || $uplink) && ($cmd !== 'relay')) {
- logger('notifier: followup relay', LOGGER_DEBUG);
- $recipients = array(($uplink) ? $parent_item['source_xchan'] : $parent_item['owner_xchan']);
- $private = true;
- if(! $encoded_item['flags'])
- $encoded_item['flags'] = array();
- $encoded_item['flags'][] = 'relay';
- }
- else {
- logger('notifier: normal distribution', LOGGER_DEBUG);
- if($cmd === 'relay')
- logger('notifier: owner relay');
-
- // if our parent is a tag_delivery recipient, uplink to the original author causing
- // a delivery fork.
-
- if(($parent_item) && intval($parent_item['item_uplink']) && (! $top_level_post) && ($cmd !== 'uplink')) {
- // don't uplink a relayed post to the relay owner
- if($parent_item['source_xchan'] !== $parent_item['owner_xchan']) {
- logger('notifier: uplinking this item');
- proc_run('php','include/notifier.php','uplink',$item_id);
- }
- }
-
- $private = false;
- $recipients = collect_recipients($parent_item,$private);
-
- // FIXME add any additional recipients such as mentions, etc.
-
- // don't send deletions onward for other people's stuff
- // TODO verify this is needed - copied logic from same place in old code
-
- if(intval($target_item['item_deleted']) && (! intval($target_item['item_wall']))) {
- logger('notifier: ignoring delete notification for non-wall item', LOGGER_NORMAL, LOG_NOTICE);
- return;
- }
- }
-
- }
-
- $walltowall = (($top_level_post && $channel['xchan_hash'] === $target_item['author_xchan']) ? true : false);
-
- // Generic delivery section, we have an encoded item and recipients
- // Now start the delivery process
-
- $x = $encoded_item;
- $x['title'] = 'private';
- $x['body'] = 'private';
- logger('notifier: encoded item: ' . print_r($x,true), LOGGER_DATA, LOG_DEBUG);
-
- stringify_array_elms($recipients);
- if(! $recipients)
- return;
-
-// logger('notifier: recipients: ' . print_r($recipients,true), LOGGER_NORMAL, LOG_DEBUG);
-
- $env_recips = (($private) ? array() : null);
-
- $details = q("select xchan_hash, xchan_instance_url, xchan_network, xchan_addr, xchan_guid, xchan_guid_sig from xchan where xchan_hash in (" . implode(',',$recipients) . ")");
-
-
- $recip_list = array();
-
- if($details) {
- foreach($details as $d) {
-
- $recip_list[] = $d['xchan_addr'] . ' (' . $d['xchan_hash'] . ')';
- if($private)
- $env_recips[] = array('guid' => $d['xchan_guid'],'guid_sig' => $d['xchan_guid_sig'],'hash' => $d['xchan_hash']);
-
- if($d['xchan_network'] === 'mail' && $normal_mode) {
- $delivery_options = get_xconfig($d['xchan_hash'],'system','delivery_mode');
- if(! $delivery_options)
- format_and_send_email($channel,$d,$target_item);
- }
- }
- }
-
-
- $narr = array(
- 'channel' => $channel,
- 'env_recips' => $env_recips,
- 'packet_recips' => $packet_recips,
- 'recipients' => $recipients,
- 'item' => $item,
- 'target_item' => $target_item,
- 'top_level_post' => $top_level_post,
- 'private' => $private,
- 'relay_to_owner' => $relay_to_owner,
- 'uplink' => $uplink,
- 'cmd' => $cmd,
- 'mail' => $mail,
- 'single' => (($cmd === 'single_mail' || $cmd === 'single_activity') ? true : false),
- 'location' => $location,
- 'request' => $request,
- 'normal_mode' => $normal_mode,
- 'packet_type' => $packet_type,
- 'walltowall' => $walltowall,
- 'queued' => array()
- );
-
- call_hooks('notifier_process', $narr);
- if($narr['queued']) {
- foreach($narr['queued'] as $pq)
- $deliveries[] = $pq;
- }
-
- // notifier_process can alter the recipient list
-
- $recipients = $narr['recipients'];
- $env_recips = $narr['env_recips'];
- $packet_recips = $narr['packet_recips'];
-
- if(($private) && (! $env_recips)) {
- // shouldn't happen
- logger('notifier: private message with no envelope recipients.' . print_r($argv,true), LOGGER_NORMAL, LOG_NOTICE);
- }
-
- logger('notifier: recipients (may be delivered to more if public): ' . print_r($recip_list,true), LOGGER_DEBUG);
-
-
- // Now we have collected recipients (except for external mentions, FIXME)
- // Let's reduce this to a set of hubs.
-
- $r = q("select * from hubloc where hubloc_hash in (" . implode(',',$recipients) . ")
- and hubloc_error = 0 and hubloc_deleted = 0"
- );
-
-
- if(! $r) {
- logger('notifier: no hubs', LOGGER_NORMAL, LOG_NOTICE);
- return;
- }
-
- $hubs = $r;
-
-
-
- /**
- * Reduce the hubs to those that are unique. For zot hubs, we need to verify uniqueness by the sitekey, since it may have been
- * a re-install which has not yet been detected and pruned.
- * For other networks which don't have or require sitekeys, we'll have to use the URL
- */
-
-
- $hublist = array(); // this provides an easily printable list for the logs
- $dhubs = array(); // delivery hubs where we store our resulting unique array
- $keys = array(); // array of keys to check uniquness for zot hubs
- $urls = array(); // array of urls to check uniqueness of hubs from other networks
-
-
- foreach($hubs as $hub) {
- if(in_array($hub['hubloc_url'],$dead_hubs)) {
- logger('skipping dead hub: ' . $hub['hubloc_url'], LOGGER_DEBUG, LOG_INFO);
- continue;
- }
-
- if($hub['hubloc_network'] == 'zot') {
- if(! in_array($hub['hubloc_sitekey'],$keys)) {
- $hublist[] = $hub['hubloc_host'];
- $dhubs[] = $hub;
- $keys[] = $hub['hubloc_sitekey'];
- }
- }
- else {
- if(! in_array($hub['hubloc_url'],$urls)) {
- $hublist[] = $hub['hubloc_host'];
- $dhubs[] = $hub;
- $urls[] = $hub['hubloc_url'];
- }
- }
- }
-
- logger('notifier: will notify/deliver to these hubs: ' . print_r($hublist,true), LOGGER_DEBUG, LOG_DEBUG);
-
-
- foreach($dhubs as $hub) {
-
- if($hub['hubloc_network'] !== 'zot') {
-
- $narr = array(
- 'channel' => $channel,
- 'env_recips' => $env_recips,
- 'packet_recips' => $packet_recips,
- 'recipients' => $recipients,
- 'item' => $item,
- 'target_item' => $target_item,
- 'hub' => $hub,
- 'top_level_post' => $top_level_post,
- 'private' => $private,
- 'relay_to_owner' => $relay_to_owner,
- 'uplink' => $uplink,
- 'cmd' => $cmd,
- 'mail' => $mail,
- 'single' => (($cmd === 'single_mail' || $cmd === 'single_activity') ? true : false),
- 'location' => $location,
- 'request' => $request,
- 'normal_mode' => $normal_mode,
- 'packet_type' => $packet_type,
- 'walltowall' => $walltowall,
- 'queued' => array()
- );
-
-
- call_hooks('notifier_hub',$narr);
- if($narr['queued']) {
- foreach($narr['queued'] as $pq)
- $deliveries[] = $pq;
- }
- continue;
-
- }
-
- // singleton deliveries by definition 'not got zot'.
- // Single deliveries are other federated networks (plugins) and we're essentially
- // delivering only to those that have this site url in their abook_instance
- // and only from within a sync operation. This means if you post from a clone,
- // and a connection is connected to one of your other clones; assuming that hub
- // is running it will receive a sync packet. On receipt of this sync packet it
- // will invoke a delivery to those connections which are connected to just that
- // hub instance.
-
- if($cmd === 'single_mail' || $cmd === 'single_activity') {
- continue;
- }
-
- // default: zot protocol
-
- $hash = random_string();
- $packet = null;
-
- if($packet_type === 'refresh' || $packet_type === 'purge') {
- $packet = zot_build_packet($channel,$packet_type,(($packet_recips) ? $packet_recips : null));
- }
- elseif($packet_type === 'request') {
- $packet = zot_build_packet($channel,$packet_type,$env_recips,$hub['hubloc_sitekey'],$hash,
- array('message_id' => $request_message_id)
- );
- }
-
- if($packet) {
- queue_insert(array(
- 'hash' => $hash,
- 'account_id' => $channel['channel_account_id'],
- 'channel_id' => $channel['channel_id'],
- 'posturl' => $hub['hubloc_callback'],
- 'notify' => $packet
- ));
- }
- else {
- $packet = zot_build_packet($channel,'notify',$env_recips,(($private) ? $hub['hubloc_sitekey'] : null),$hash);
- queue_insert(array(
- 'hash' => $hash,
- 'account_id' => $target_item['aid'],
- 'channel_id' => $target_item['uid'],
- 'posturl' => $hub['hubloc_callback'],
- 'notify' => $packet,
- 'msg' => json_encode($encoded_item)
- ));
-
- // only create delivery reports for normal undeleted items
- if(is_array($target_item) && array_key_exists('postopts',$target_item) && (! $target_item['item_deleted']) && (! get_config('system','disable_dreport'))) {
- q("insert into dreport ( dreport_mid, dreport_site, dreport_recip, dreport_result, dreport_time, dreport_xchan, dreport_queue ) values ( '%s','%s','%s','%s','%s','%s','%s' ) ",
- dbesc($target_item['mid']),
- dbesc($hub['hubloc_host']),
- dbesc($hub['hubloc_host']),
- dbesc('queued'),
- dbesc(datetime_convert()),
- dbesc($channel['channel_hash']),
- dbesc($hash)
- );
- }
- }
-
- $deliveries[] = $hash;
- }
-
- if($normal_mode) {
- $x = q("select * from hook where hook = 'notifier_normal'");
- if($x)
- proc_run('php','include/deliver_hooks.php', $target_item['id']);
- }
-
- if($deliveries)
- do_delivery($deliveries);
-
- logger('notifier: basic loop complete.', LOGGER_DEBUG);
-
- call_hooks('notifier_end',$target_item);
-
- logger('notifer: complete.');
- return;
-
-}
-
-
-if (array_search(__file__,get_included_files())===0){
- notifier_run($argv,$argc);
- killme();
-}
diff --git a/include/notify.php b/include/notify.php
deleted file mode 100644
index 2b032b56b..000000000
--- a/include/notify.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php /** @file */
-
-
-function format_notification($item) {
-
- $ret = '';
-
- require_once('include/conversation.php');
-
- // Call localize_item with the "brief" flag to get a one line status for activities.
- // This should set $item['localized'] to indicate we have a brief summary.
-
- localize_item($item);
-
- if($item_localize) {
- $itemem_text = $item['localize'];
- }
- else {
- $itemem_text = (($item['item_thread_top'])
- ? t('created a new post')
- : sprintf( t('commented on %s\'s post'), $item['owner']['xchan_name']));
- }
-
- // convert this logic into a json array just like the system notifications
-
- return array(
- 'notify_link' => $item['llink'],
- 'name' => $item['author']['xchan_name'],
- 'url' => $item['author']['xchan_url'],
- 'photo' => $item['author']['xchan_photo_s'],
- 'when' => relative_date($item['created']),
- 'class' => (intval($item['item_unseen']) ? 'notify-unseen' : 'notify-seen'),
- 'message' => strip_tags(bbcode($itemem_text))
- );
-
-}
-
diff --git a/include/oauth.php b/include/oauth.php
index ec41a5dd2..984e0e6c6 100644
--- a/include/oauth.php
+++ b/include/oauth.php
@@ -37,7 +37,7 @@ class ZotOAuth1DataStore extends OAuth1DataStore {
logger(__function__.":".$consumer.", ". $token_type.", ".$token, LOGGER_DEBUG);
- $r = q("SELECT id, secret, scope, expires, uid FROM tokens WHERE client_id = '%s' AND scope = '%s' AND id = '%s'",
+ $r = q("SELECT id, secret, auth_scope, expires, uid FROM tokens WHERE client_id = '%s' AND auth_scope = '%s' AND id = '%s'",
dbesc($consumer->key),
dbesc($token_type),
dbesc($token)
@@ -45,7 +45,7 @@ class ZotOAuth1DataStore extends OAuth1DataStore {
if (count($r)){
$ot=new OAuth1Token($r[0]['id'],$r[0]['secret']);
- $ot->scope=$r[0]['scope'];
+ $ot->scope=$r[0]['auth_scope'];
$ot->expires = $r[0]['expires'];
$ot->uid = $r[0]['uid'];
return $ot;
@@ -79,7 +79,7 @@ class ZotOAuth1DataStore extends OAuth1DataStore {
$k = $consumer;
}
- $r = q("INSERT INTO tokens (id, secret, client_id, scope, expires) VALUES ('%s','%s','%s','%s', %d)",
+ $r = q("INSERT INTO tokens (id, secret, client_id, auth_scope, expires) VALUES ('%s','%s','%s','%s', %d)",
dbesc($key),
dbesc($sec),
dbesc($k),
@@ -110,7 +110,7 @@ class ZotOAuth1DataStore extends OAuth1DataStore {
$key = $this->gen_token();
$sec = $this->gen_token();
- $r = q("INSERT INTO tokens (id, secret, client_id, scope, expires, uid) VALUES ('%s','%s','%s','%s', %d, %d)",
+ $r = q("INSERT INTO tokens (id, secret, client_id, auth_scope, expires, uid) VALUES ('%s','%s','%s','%s', %d, %d)",
dbesc($key),
dbesc($sec),
dbesc($consumer->key),
@@ -249,7 +249,7 @@ class FKOAuth2 extends OAuth2 {
protected function getAuthCode($code) {
- $r = q("SELECT id, client_id, redirect_uri, expires, scope FROM auth_codes WHERE id = '%s'",
+ $r = q("SELECT id, client_id, redirect_uri, expires, auth_scope FROM auth_codes WHERE id = '%s'",
dbesc($code));
if (count($r))
@@ -259,7 +259,7 @@ class FKOAuth2 extends OAuth2 {
protected function setAuthCode($code, $client_id, $redirect_uri, $expires, $scope = NULL) {
$r = q("INSERT INTO auth_codes
- (id, client_id, redirect_uri, expires, scope) VALUES
+ (id, client_id, redirect_uri, expires, auth_scope) VALUES
('%s', '%s', '%s', %d, '%s')",
dbesc($code),
dbesc($client_id),
diff --git a/include/oembed.php b/include/oembed.php
index 1e5c51172..08363e488 100755
--- a/include/oembed.php
+++ b/include/oembed.php
@@ -227,7 +227,7 @@ function oembed_fetch_url($embedurl){
}
function oembed_format_object($j){
- $a = get_app();
+
$embedurl = $j->embedurl;
// logger('format: ' . print_r($j,true));
diff --git a/include/onedirsync.php b/include/onedirsync.php
deleted file mode 100644
index ce516da9d..000000000
--- a/include/onedirsync.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php /** @file */
-
-require_once('boot.php');
-require_once('include/cli_startup.php');
-require_once('include/zot.php');
-require_once('include/dir_fns.php');
-
-
-function onedirsync_run($argv, $argc){
-
-
- cli_startup();
- $a = get_app();
-
- logger('onedirsync: start ' . intval($argv[1]));
-
- if(($argc > 1) && (intval($argv[1])))
- $update_id = intval($argv[1]);
-
- if(! $update_id) {
- logger('onedirsync: no update');
- return;
- }
-
- $r = q("select * from updates where ud_id = %d limit 1",
- intval($update_id)
- );
-
- if(! $r)
- return;
- if(($r[0]['ud_flags'] & UPDATE_FLAGS_UPDATED) || (! $r[0]['ud_addr']))
- return;
-
- // Have we probed this channel more recently than the other directory server
- // (where we received this update from) ?
- // If we have, we don't need to do anything except mark any older entries updated
-
- $x = q("select * from updates where ud_addr = '%s' and ud_date > '%s' and ( ud_flags & %d )>0 order by ud_date desc limit 1",
- dbesc($r[0]['ud_addr']),
- dbesc($r[0]['ud_date']),
- intval(UPDATE_FLAGS_UPDATED)
- );
- if($x) {
- $y = q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and ( ud_flags & %d ) = 0 and ud_date != '%s'",
- intval(UPDATE_FLAGS_UPDATED),
- dbesc($r[0]['ud_addr']),
- intval(UPDATE_FLAGS_UPDATED),
- dbesc($x[0]['ud_date'])
- );
- return;
- }
-
- // ignore doing an update if this ud_addr refers to a known dead hubloc
-
- $h = q("select * from hubloc where hubloc_addr = '%s' limit 1",
- dbesc($r[0]['ud_addr'])
- );
- if(($h) && ($h[0]['hubloc_status'] & HUBLOC_OFFLINE)) {
- $y = q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and ( ud_flags & %d ) = 0 ",
- intval(UPDATE_FLAGS_UPDATED),
- dbesc($r[0]['ud_addr']),
- intval(UPDATE_FLAGS_UPDATED)
- );
-
- return;
- }
-
- // we might have to pull this out some day, but for now update_directory_entry()
- // runs zot_finger() and is kind of zot specific
-
- if($h && $h[0]['hubloc_network'] !== 'zot')
- return;
-
- update_directory_entry($r[0]);
-
- return;
-}
-
-if (array_search(__file__,get_included_files())===0){
- onedirsync_run($argv,$argc);
- killme();
-}
diff --git a/include/onepoll.php b/include/onepoll.php
deleted file mode 100644
index fedeb1e95..000000000
--- a/include/onepoll.php
+++ /dev/null
@@ -1,159 +0,0 @@
-<?php /** @file */
-
-require_once('boot.php');
-require_once('include/cli_startup.php');
-require_once('include/zot.php');
-require_once('include/socgraph.php');
-require_once('include/Contact.php');
-
-
-function onepoll_run($argv, $argc){
-
-
- cli_startup();
- $a = get_app();
-
- logger('onepoll: start');
-
- if(($argc > 1) && (intval($argv[1])))
- $contact_id = intval($argv[1]);
-
- if(! $contact_id) {
- logger('onepoll: no contact');
- return;
- }
-
- $d = datetime_convert();
-
- $contacts = q("SELECT abook.*, xchan.*, account.*
- FROM abook LEFT JOIN account on abook_account = account_id left join xchan on xchan_hash = abook_xchan
- where abook_id = %d
- and abook_pending = 0 and abook_archived = 0 and abook_blocked = 0 and abook_ignored = 0
- AND (( account_flags = %d ) OR ( account_flags = %d )) limit 1",
- intval($contact_id),
- intval(ACCOUNT_OK),
- intval(ACCOUNT_UNVERIFIED)
- );
-
- if(! $contacts) {
- logger('onepoll: abook_id not found: ' . $contact_id);
- return;
- }
-
- $contact = $contacts[0];
-
- $t = $contact['abook_updated'];
-
- $importer_uid = $contact['abook_channel'];
-
- $r = q("SELECT * from channel left join xchan on channel_hash = xchan_hash where channel_id = %d limit 1",
- intval($importer_uid)
- );
-
- if(! $r)
- return;
-
- $importer = $r[0];
-
- logger("onepoll: poll: ({$contact['id']}) IMPORTER: {$importer['xchan_name']}, CONTACT: {$contact['xchan_name']}");
-
- $last_update = ((($contact['abook_updated'] === $contact['abook_created']) || ($contact['abook_updated'] === NULL_DATE))
- ? datetime_convert('UTC','UTC','now - 7 days')
- : datetime_convert('UTC','UTC',$contact['abook_updated'] . ' - 2 days')
- );
-
- if($contact['xchan_network'] === 'rss') {
- logger('onepoll: processing feed ' . $contact['xchan_name'], LOGGER_DEBUG);
- handle_feed($importer['channel_id'],$contact_id,$contact['xchan_hash']);
- q("update abook set abook_connected = '%s' where abook_id = %d",
- dbesc(datetime_convert()),
- intval($contact['abook_id'])
- );
- return;
- }
-
- if($contact['xchan_network'] !== 'zot')
- return;
-
- // update permissions
-
- $x = zot_refresh($contact,$importer);
-
- $responded = false;
- $updated = datetime_convert();
- $connected = datetime_convert();
- if(! $x) {
- // mark for death by not updating abook_connected, this is caught in include/poller.php
- q("update abook set abook_updated = '%s' where abook_id = %d",
- dbesc($updated),
- intval($contact['abook_id'])
- );
- }
- else {
- q("update abook set abook_updated = '%s', abook_connected = '%s' where abook_id = %d",
- dbesc($updated),
- dbesc($connected),
- intval($contact['abook_id'])
- );
- $responded = true;
- }
-
- if(! $responded)
- return;
-
- if($contact['xchan_connurl']) {
- $fetch_feed = true;
- $x = null;
-
- if(! ($contact['abook_their_perms'] & PERMS_R_STREAM ))
- $fetch_feed = false;
-
- if($fetch_feed) {
-
- $feedurl = str_replace('/poco/','/zotfeed/',$contact['xchan_connurl']);
- $feedurl .= '?f=&mindate=' . urlencode($last_update);
-
- $x = z_fetch_url($feedurl);
-
- logger('feed_update: ' . print_r($x,true), LOGGER_DATA);
-
- }
-
- if(($x) && ($x['success'])) {
- $total = 0;
- logger('onepoll: feed update ' . $contact['xchan_name'] . ' ' . $feedurl);
-
- $j = json_decode($x['body'],true);
- if($j['success'] && $j['messages']) {
- foreach($j['messages'] as $message) {
- $results = process_delivery(array('hash' => $contact['xchan_hash']), get_item_elements($message),
- array(array('hash' => $importer['xchan_hash'])), false);
- logger('onepoll: feed_update: process_delivery: ' . print_r($results,true), LOGGER_DATA);
- $total ++;
- }
- logger("onepoll: $total messages processed");
- }
- }
- }
-
-
- // update the poco details for this connection
-
- if($contact['xchan_connurl']) {
- $r = q("SELECT xlink_id from xlink
- where xlink_xchan = '%s' and xlink_updated > %s - INTERVAL %s and xlink_static = 0 limit 1",
- intval($contact['xchan_hash']),
- db_utcnow(), db_quoteinterval('1 DAY')
- );
- if(! $r) {
- poco_load($contact['xchan_hash'],$contact['xchan_connurl']);
- }
- }
-
- return;
-}
-
-if (array_search(__file__,get_included_files())===0){
- onepoll_run($argv,$argc);
- killme();
-}
diff --git a/include/photo/photo_driver.php b/include/photo/photo_driver.php
index 3bea54fd4..6de75d497 100644
--- a/include/photo/photo_driver.php
+++ b/include/photo/photo_driver.php
@@ -316,7 +316,7 @@ abstract class photo_driver {
$p['resource_id'] = (($arr['resource_id']) ? $arr['resource_id'] : '');
$p['filename'] = (($arr['filename']) ? $arr['filename'] : '');
$p['album'] = (($arr['album']) ? $arr['album'] : '');
- $p['scale'] = ((intval($arr['scale'])) ? intval($arr['scale']) : 0);
+ $p['imgscale'] = ((intval($arr['imgscale'])) ? intval($arr['imgscale']) : 0);
$p['allow_cid'] = (($arr['allow_cid']) ? $arr['allow_cid'] : '');
$p['allow_gid'] = (($arr['allow_gid']) ? $arr['allow_gid'] : '');
$p['deny_cid'] = (($arr['deny_cid']) ? $arr['deny_cid'] : '');
@@ -329,14 +329,14 @@ abstract class photo_driver {
$p['os_storage'] = intval($arr['os_storage']);
$p['os_path'] = $arr['os_path'];
- if(! intval($p['scale']))
- logger('save: ' . print_r($arr,true));
+ if(! intval($p['imgscale']))
+ logger('save: ' . print_r($arr,true), LOGGER_DATA);
- $x = q("select id from photo where resource_id = '%s' and uid = %d and xchan = '%s' and `scale` = %d limit 1",
+ $x = q("select id from photo where resource_id = '%s' and uid = %d and xchan = '%s' and imgscale = %d limit 1",
dbesc($p['resource_id']),
intval($p['uid']),
dbesc($p['xchan']),
- intval($p['scale'])
+ intval($p['imgscale'])
);
if($x) {
$r = q("UPDATE `photo` set
@@ -347,14 +347,14 @@ abstract class photo_driver {
`created` = '%s',
`edited` = '%s',
`filename` = '%s',
- `type` = '%s',
+ `mimetype` = '%s',
`album` = '%s',
`height` = %d,
`width` = %d,
- `data` = '%s',
+ `content` = '%s',
`os_storage` = %d,
- `size` = %d,
- `scale` = %d,
+ `filesize` = %d,
+ `imgscale` = %d,
`photo_usage` = %d,
`title` = '%s',
`description` = '%s',
@@ -378,7 +378,7 @@ abstract class photo_driver {
(intval($p['os_storage']) ? dbesc($p['os_path']) : dbescbin($this->imageString())),
intval($p['os_storage']),
intval(strlen($this->imageString())),
- intval($p['scale']),
+ intval($p['imgscale']),
intval($p['photo_usage']),
dbesc($p['title']),
dbesc($p['description']),
@@ -391,7 +391,7 @@ abstract class photo_driver {
}
else {
$r = q("INSERT INTO `photo`
- ( `aid`, `uid`, `xchan`, `resource_id`, `created`, `edited`, `filename`, type, `album`, `height`, `width`, `data`, `os_storage`, `size`, `scale`, `photo_usage`, `title`, `description`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid` )
+ ( `aid`, `uid`, `xchan`, `resource_id`, `created`, `edited`, `filename`, mimetype, `album`, `height`, `width`, `content`, `os_storage`, `filesize`, `imgscale`, `photo_usage`, `title`, `description`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid` )
VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d, %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s' )",
intval($p['aid']),
intval($p['uid']),
@@ -407,7 +407,7 @@ abstract class photo_driver {
(intval($p['os_storage']) ? dbesc($p['os_path']) : dbescbin($this->imageString())),
intval($p['os_storage']),
intval(strlen($this->imageString())),
- intval($p['scale']),
+ intval($p['imgscale']),
intval($p['photo_usage']),
dbesc($p['title']),
dbesc($p['description']),
@@ -422,7 +422,7 @@ abstract class photo_driver {
public function store($aid, $uid, $xchan, $rid, $filename, $album, $scale, $usage = PHOTO_NORMAL, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '') {
- $x = q("select id from photo where `resource_id` = '%s' and uid = %d and `xchan` = '%s' and `scale` = %d limit 1",
+ $x = q("select id from photo where `resource_id` = '%s' and uid = %d and `xchan` = '%s' and `imgscale` = %d limit 1",
dbesc($rid),
intval($uid),
dbesc($xchan),
@@ -437,13 +437,13 @@ abstract class photo_driver {
`created` = '%s',
`edited` = '%s',
`filename` = '%s',
- `type` = '%s',
+ `mimetype` = '%s',
`album` = '%s',
`height` = %d,
`width` = %d,
- `data` = '%s',
- `size` = %d,
- `scale` = %d,
+ `content` = '%s',
+ `filesize` = %d,
+ `imgscale` = %d,
`photo_usage` = %d,
`allow_cid` = '%s',
`allow_gid` = '%s',
@@ -475,7 +475,7 @@ abstract class photo_driver {
}
else {
$r = q("INSERT INTO `photo`
- ( `aid`, `uid`, `xchan`, `resource_id`, `created`, `edited`, `filename`, type, `album`, `height`, `width`, `data`, `size`, `scale`, `photo_usage`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid` )
+ ( `aid`, `uid`, `xchan`, `resource_id`, `created`, `edited`, `filename`, mimetype, `album`, `height`, `width`, `content`, `filesize`, `imgscale`, `photo_usage`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid` )
VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d, %d, %d, '%s', '%s', '%s', '%s' )",
intval($aid),
intval($uid),
@@ -521,7 +521,7 @@ function guess_image_type($filename, $headers = '') {
logger('Photo: guess_image_type: '.$filename . ($headers?' from curl headers':''), LOGGER_DEBUG);
$type = null;
if ($headers) {
- $a = get_app();
+
$hdrs=array();
$h = explode("\n",$headers);
foreach ($h as $l) {
@@ -580,8 +580,6 @@ function guess_image_type($filename, $headers = '') {
function import_xchan_photo($photo,$xchan,$thing = false) {
- $a = get_app();
-
$flags = (($thing) ? PHOTO_THING : PHOTO_XCHAN);
$album = (($thing) ? 'Things' : 'Contact Photos');
@@ -590,7 +588,7 @@ function import_xchan_photo($photo,$xchan,$thing = false) {
if($thing)
$hash = photo_new_resource();
else {
- $r = q("select resource_id from photo where xchan = '%s' and photo_usage = %d and scale = 4 limit 1",
+ $r = q("select resource_id from photo where xchan = '%s' and photo_usage = %d and imgscale = 4 limit 1",
dbesc($xchan),
intval(PHOTO_XCHAN)
);
@@ -656,7 +654,7 @@ function import_xchan_photo($photo,$xchan,$thing = false) {
else
$photo_failure = true;
- $p = array('xchan' => $xchan,'resource_id' => $hash, 'filename' => basename($photo), 'album' => $album, 'photo_usage' => $flags, 'scale' => 4);
+ $p = array('xchan' => $xchan,'resource_id' => $hash, 'filename' => basename($photo), 'album' => $album, 'photo_usage' => $flags, 'imgscale' => 4);
$r = $img->save($p);
@@ -664,7 +662,7 @@ function import_xchan_photo($photo,$xchan,$thing = false) {
$photo_failure = true;
$img->scaleImage(80);
- $p['scale'] = 5;
+ $p['imgscale'] = 5;
$r = $img->save($p);
@@ -672,7 +670,7 @@ function import_xchan_photo($photo,$xchan,$thing = false) {
$photo_failure = true;
$img->scaleImage(48);
- $p['scale'] = 6;
+ $p['imgscale'] = 6;
$r = $img->save($p);
@@ -703,8 +701,6 @@ function import_xchan_photo($photo,$xchan,$thing = false) {
function import_channel_photo($photo,$type,$aid,$uid) {
- $a = get_app();
-
logger('import_channel_photo: importing channel photo for ' . $uid, LOGGER_DEBUG);
$hash = photo_new_resource();
@@ -719,7 +715,7 @@ function import_channel_photo($photo,$type,$aid,$uid) {
$img->scaleImageSquare(300);
- $p = array('aid' => $aid, 'uid' => $uid, 'resource_id' => $hash, 'filename' => $filename, 'album' => t('Profile Photos'), 'photo_usage' => PHOTO_PROFILE, 'scale' => 4);
+ $p = array('aid' => $aid, 'uid' => $uid, 'resource_id' => $hash, 'filename' => $filename, 'album' => t('Profile Photos'), 'photo_usage' => PHOTO_PROFILE, 'imgscale' => 4);
$r = $img->save($p);
@@ -727,7 +723,7 @@ function import_channel_photo($photo,$type,$aid,$uid) {
$photo_failure = true;
$img->scaleImage(80);
- $p['scale'] = 5;
+ $p['imgscale'] = 5;
$r = $img->save($p);
@@ -735,7 +731,7 @@ function import_channel_photo($photo,$type,$aid,$uid) {
$photo_failure = true;
$img->scaleImage(48);
- $p['scale'] = 6;
+ $p['imgscale'] = 6;
$r = $img->save($p);
diff --git a/include/photos.php b/include/photos.php
index 73a29d8eb..c64d662ea 100644
--- a/include/photos.php
+++ b/include/photos.php
@@ -19,8 +19,6 @@ require_once('include/text.php');
*/
function photo_upload($channel, $observer, $args) {
- $a = get_app();
-
$ret = array('success' => false);
$channel_id = $channel['channel_id'];
$account_id = $channel['channel_account_id'];
@@ -73,17 +71,17 @@ function photo_upload($channel, $observer, $args) {
$type = $args['getimagesize']['mime'];
$os_storage = 1;
}
- elseif ($args['data']) {
+ elseif ($args['data'] || $args['content']) {
// allow an import from a binary string representing the image.
// This bypasses the upload step and max size limit checking
- $imagedata = $args['data'];
+ $imagedata = (($args['content']) ? $args['content'] : $args['data']);
$filename = $args['filename'];
$filesize = strlen($imagedata);
// this is going to be deleted if it exists
$src = '/tmp/deletemenow';
- $type = $args['type'];
+ $type = (($args['mimetype']) ? $args['mimetype'] : $args['type']);
} else {
$f = array('src' => '', 'filename' => '', 'filesize' => 0, 'type' => '');
@@ -127,7 +125,7 @@ function photo_upload($channel, $observer, $args) {
$imagedata = @file_get_contents($src);
}
- $r = q("select sum(size) as total from photo where aid = %d and scale = 0 ",
+ $r = q("select sum(filesize) as total from photo where aid = %d and imgscale = 0 ",
intval($account_id)
);
@@ -174,7 +172,7 @@ function photo_upload($channel, $observer, $args) {
$errors = false;
$p = array('aid' => $account_id, 'uid' => $channel_id, 'xchan' => $visitor, 'resource_id' => $photo_hash,
- 'filename' => $filename, 'album' => $album, 'scale' => 0, 'photo_usage' => PHOTO_NORMAL,
+ 'filename' => $filename, 'album' => $album, 'imgscale' => 0, 'photo_usage' => PHOTO_NORMAL,
'allow_cid' => $ac['allow_cid'], 'allow_gid' => $ac['allow_gid'],
'deny_cid' => $ac['deny_cid'], 'deny_gid' => $ac['deny_gid'],
'os_storage' => $os_storage, 'os_path' => $args['os_path']
@@ -207,7 +205,7 @@ function photo_upload($channel, $observer, $args) {
if(($width > 1024 || $height > 1024) && (! $errors))
$ph->scaleImage(1024);
- $p['scale'] = 1;
+ $p['imgscale'] = 1;
$r1 = $ph->save($p);
$link[1] = array(
'rel' => 'alternate',
@@ -222,7 +220,7 @@ function photo_upload($channel, $observer, $args) {
if(($width > 640 || $height > 640) && (! $errors))
$ph->scaleImage(640);
- $p['scale'] = 2;
+ $p['imgscale'] = 2;
$r2 = $ph->save($p);
$link[2] = array(
'rel' => 'alternate',
@@ -237,7 +235,7 @@ function photo_upload($channel, $observer, $args) {
if(($width > 320 || $height > 320) && (! $errors))
$ph->scaleImage(320);
- $p['scale'] = 3;
+ $p['imgscale'] = 3;
$r3 = $ph->save($p);
$link[3] = array(
'rel' => 'alternate',
@@ -334,7 +332,7 @@ function photo_upload($channel, $observer, $args) {
$item['body'] = $args['body'];
$item['obj_type'] = ACTIVITY_OBJ_PHOTO;
- $item['object'] = json_encode($object);
+ $item['obj'] = json_encode($object);
$item['tgt_type'] = ACTIVITY_OBJ_ALBUM;
$item['target'] = json_encode($target);
@@ -391,8 +389,8 @@ function photo_upload($channel, $observer, $args) {
$arr['deny_cid'] = $ac['deny_cid'];
$arr['deny_gid'] = $ac['deny_gid'];
$arr['verb'] = ACTIVITY_POST;
- $arr['obj_type'] = ACTIVITY_OBJ_PHOTO;
- $arr['object'] = json_encode($object);
+ $arr['obj_type'] = ACTIVITY_OBJ_PHOTO;
+ $arr['obj'] = json_encode($object);
$arr['tgt_type'] = ACTIVITY_OBJ_ALBUM;
$arr['target'] = json_encode($target);
$arr['item_wall'] = 1;
@@ -420,7 +418,7 @@ function photo_upload($channel, $observer, $args) {
$item_id = $result['item_id'];
if($visible)
- proc_run('php', "include/notifier.php", 'wall-new', $item_id);
+ Zotlabs\Daemon\Master::Summon(array('Notifier', 'wall-new', $item_id));
}
$ret['success'] = true;
@@ -445,7 +443,7 @@ function photo_upload($channel, $observer, $args) {
* * success (bool)
* * albums (array)
*/
-function photos_albums_list($channel, $observer) {
+function photos_albums_list($channel, $observer, $sort_key = 'album', $direction = 'asc') {
$channel_id = $channel['channel_id'];
$observer_xchan = (($observer) ? $observer['xchan_hash'] : '');
@@ -453,11 +451,15 @@ function photos_albums_list($channel, $observer) {
if(! perm_is_allowed($channel_id, $observer_xchan, 'view_storage'))
return false;
- /** @FIXME create a permissions SQL which works on arbitrary observers and channels, regardless of login or web status */
- $sql_extra = permissions_sql($channel_id);
+ $sql_extra = permissions_sql($channel_id,$observer_xchan);
+
+ $sort_key = dbesc($sort_key);
+ $direction = dbesc($direction);
+
- $albums = q("SELECT count( distinct resource_id ) as total, album from photo where uid = %d and photo_usage IN ( %d, %d ) $sql_extra group by album order by max(created) desc",
+
+ $albums = q("SELECT count( distinct resource_id ) as total, album from photo where uid = %d and photo_usage IN ( %d, %d ) $sql_extra group by album order by $sort_key $direction",
intval($channel_id),
intval(PHOTO_NORMAL),
intval(PHOTO_PROFILE)
@@ -485,20 +487,14 @@ function photos_albums_list($channel, $observer) {
return $ret;
}
-function photos_album_widget($channelx,$observer,$albums = null) {
+function photos_album_widget($channelx,$observer,$sortkey = 'album',$direction = 'asc') {
$o = '';
- // If we weren't passed an album list, see if the photos module
- // dropped one for us to find in App::$data['albums'].
- // If all else fails, load it.
-
- if(! $albums) {
- if(array_key_exists('albums', App::$data))
- $albums = App::$data['albums'];
- else
- $albums = photos_albums_list($channelx,$observer);
- }
+ if(array_key_exists('albums', App::$data))
+ $albums = App::$data['albums'];
+ else
+ $albums = photos_albums_list($channelx,$observer,$sortkey,$direction);
if($albums['success']) {
$o = replace_macros(get_markup_template('photo_albums.tpl'),array(
@@ -537,7 +533,7 @@ function photos_list_photos($channel, $observer, $album = '') {
$ret = array('success' => false);
- $r = q("select resource_id, created, edited, title, description, album, filename, type, height, width, size, scale, photo_usage, allow_cid, allow_gid, deny_cid, deny_gid from photo where uid = %d and photo_usage in ( %d, %d ) $sql_extra ",
+ $r = q("select resource_id, created, edited, title, description, album, filename, mimetype, height, width, filesize, imgscale, photo_usage, allow_cid, allow_gid, deny_cid, deny_gid from photo where uid = %d and photo_usage in ( %d, %d ) $sql_extra ",
intval($channel_id),
intval(PHOTO_NORMAL),
intval(PHOTO_PROFILE)
@@ -545,7 +541,7 @@ function photos_list_photos($channel, $observer, $album = '') {
if($r) {
for($x = 0; $x < count($r); $x ++) {
- $r[$x]['src'] = z_root() . '/photo/' . $r[$x]['resource_id'] . '-' . $r[$x]['scale'];
+ $r[$x]['src'] = z_root() . '/photo/' . $r[$x]['resource_id'] . '-' . $r[$x]['imgscale'];
}
$ret['success'] = true;
$ret['photos'] = $r;
@@ -663,7 +659,7 @@ function photos_create_item($channel, $creator_hash, $photo, $visible = false) {
$arr['plink'] = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . $arr['mid'];
$arr['body'] = '[zrl=' . z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $photo['resource_id'] . ']'
- . '[zmg]' . z_root() . '/photo/' . $photo['resource_id'] . '-' . $photo['scale'] . '[/zmg]'
+ . '[zmg]' . z_root() . '/photo/' . $photo['resource_id'] . '-' . $photo['imgscale'] . '[/zmg]'
. '[/zrl]';
$result = item_store($arr);
diff --git a/include/plugin.php b/include/plugin.php
index 8dd67bb0c..be4e92f03 100755
--- a/include/plugin.php
+++ b/include/plugin.php
@@ -5,8 +5,6 @@
* @brief Some functions to handle addons and themes.
*/
-require_once("include/smarty.php");
-
/**
* @brief unloads an addon.
@@ -43,7 +41,7 @@ function uninstall_plugin($plugin) {
$func();
}
- q("DELETE FROM `addon` WHERE `name` = '%s' ",
+ q("DELETE FROM `addon` WHERE `aname` = '%s' ",
dbesc($plugin)
);
}
@@ -68,7 +66,7 @@ function install_plugin($plugin) {
$plugin_admin = (function_exists($plugin . '_plugin_admin') ? 1 : 0);
- q("INSERT INTO `addon` (`name`, `installed`, `timestamp`, `plugin_admin`) VALUES ( '%s', 1, %d , %d ) ",
+ q("INSERT INTO `addon` (`aname`, `installed`, `tstamp`, `plugin_admin`) VALUES ( '%s', 1, %d , %d ) ",
dbesc($plugin),
intval($t),
$plugin_admin
@@ -113,7 +111,7 @@ function load_plugin($plugin) {
}
function plugin_is_installed($name) {
- $r = q("select name from addon where name = '%s' and installed = 1 limit 1",
+ $r = q("select aname from addon where aname = '%s' and installed = 1 limit 1",
dbesc($name)
);
if($r)
@@ -145,8 +143,8 @@ function reload_plugins() {
if(file_exists($fname)) {
$t = @filemtime($fname);
foreach($installed as $i) {
- if(($i['name'] == $pl) && ($i['timestamp'] != $t)) {
- logger('Reloading plugin: ' . $i['name']);
+ if(($i['aname'] == $pl) && ($i['tstamp'] != $t)) {
+ logger('Reloading plugin: ' . $i['aname']);
@include_once($fname);
if(function_exists($pl . '_unload')) {
@@ -157,7 +155,7 @@ function reload_plugins() {
$func = $pl . '_load';
$func();
}
- q("UPDATE `addon` SET `timestamp` = %d WHERE `id` = %d",
+ q("UPDATE `addon` SET `tstamp` = %d WHERE `id` = %d",
intval($t),
intval($i['id'])
);
@@ -180,7 +178,7 @@ function reload_plugins() {
* @return mixed|bool
*/
function register_hook($hook, $file, $function, $priority = 0) {
- $r = q("SELECT * FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `function` = '%s' LIMIT 1",
+ $r = q("SELECT * FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `fn` = '%s' LIMIT 1",
dbesc($hook),
dbesc($file),
dbesc($function)
@@ -188,7 +186,7 @@ function register_hook($hook, $file, $function, $priority = 0) {
if($r)
return true;
- $r = q("INSERT INTO `hook` (`hook`, `file`, `function`, `priority`) VALUES ( '%s', '%s', '%s', '%s' )",
+ $r = q("INSERT INTO `hook` (`hook`, `file`, `fn`, `priority`) VALUES ( '%s', '%s', '%s', '%s' )",
dbesc($hook),
dbesc($file),
dbesc($function),
@@ -208,7 +206,7 @@ function register_hook($hook, $file, $function, $priority = 0) {
* @return array
*/
function unregister_hook($hook, $file, $function) {
- $r = q("DELETE FROM hook WHERE hook = '%s' AND `file` = '%s' AND `function` = '%s'",
+ $r = q("DELETE FROM hook WHERE hook = '%s' AND `file` = '%s' AND `fn` = '%s'",
dbesc($hook),
dbesc($file),
dbesc($function)
@@ -235,7 +233,7 @@ function load_hooks() {
if(! array_key_exists($rr['hook'],App::$hooks))
App::$hooks[$rr['hook']] = array();
- App::$hooks[$rr['hook']][] = array($rr['file'],$rr['function'],$rr['priority'],$rr['hook_version']);
+ App::$hooks[$rr['hook']][] = array($rr['file'],$rr['fn'],$rr['priority'],$rr['hook_version']);
}
}
//logger('hooks: ' . print_r(App::$hooks,true));
@@ -302,12 +300,18 @@ function call_hooks($name, &$data = null) {
$func($data);
else
$func($a, $data);
- } else {
- q("DELETE FROM hook WHERE hook = '%s' AND file = '%s' AND function = '%s'",
- dbesc($name),
- dbesc($hook[0]),
- dbesc($origfn)
- );
+ }
+ else {
+
+ // Don't do any DB write calls if we're currently logging a possibly failed DB call.
+ if(! DBA::$logging) {
+ // The hook should be removed so we don't process it.
+ q("DELETE FROM hook WHERE hook = '%s' AND file = '%s' AND fn = '%s'",
+ dbesc($name),
+ dbesc($hook[0]),
+ dbesc($origfn)
+ );
+ }
}
}
}
@@ -502,7 +506,7 @@ function get_theme_info($theme){
* @return string
*/
function get_theme_screenshot($theme) {
- $a = get_app();
+
$exts = array('.png', '.jpg');
foreach($exts as $ext) {
if(file_exists('view/theme/' . $theme . '/img/screenshot' . $ext))
@@ -523,7 +527,7 @@ function head_add_css($src, $media = 'screen') {
}
function head_remove_css($src, $media = 'screen') {
- $a = get_app();
+
$index = array_search(array($src, $media), App::$css_sources);
if ($index !== false)
unset(App::$css_sources[$index]);
@@ -594,7 +598,7 @@ function head_add_js($src) {
}
function head_remove_js($src) {
- $a = get_app();
+
$index = array_search($src, App::$js_sources);
if($index !== false)
unset(App::$js_sources[$index]);
@@ -635,7 +639,6 @@ function format_js_if_exists($source) {
function theme_include($file, $root = '') {
- $a = get_app();
// Make sure $root ends with a slash / if it's not blank
if($root !== '' && $root[strlen($root)-1] !== '/')
@@ -648,12 +651,13 @@ function theme_include($file, $root = '') {
else
$parent = 'NOPATH';
- $theme = current_theme();
+ $theme = Zotlabs\Render\Theme::current();
+ $thname = $theme[0];
$ext = substr($file,strrpos($file,'.')+1);
$paths = array(
- "{$root}view/theme/$theme/$ext/$file",
+ "{$root}view/theme/$thname/$ext/$file",
"{$root}view/theme/$parent/$ext/$file",
"{$root}view/site/$ext/$file",
"{$root}view/$ext/$file",
@@ -672,7 +676,7 @@ function theme_include($file, $root = '') {
function get_intltext_template($s, $root = '') {
- $a = get_app();
+
$t = App::template_engine();
$template = $t->get_intltext_template($s, $root);
@@ -681,7 +685,7 @@ function get_intltext_template($s, $root = '') {
function get_markup_template($s, $root = '') {
- $a = get_app();
+
$t = App::template_engine();
$template = $t->get_markup_template($s, $root);
return $template;
diff --git a/include/poller.php b/include/poller.php
index 808b54ee5..e72121a8a 100644
--- a/include/poller.php
+++ b/include/poller.php
@@ -1,445 +1,15 @@
<?php /** @file */
-require_once('boot.php');
require_once('include/cli_startup.php');
-
-function poller_run($argv, $argc){
+function poller_run($argc,$argv){
cli_startup();
+ \Zotlabs\Daemon\Master::Summon(array('Cron'));
- $a = get_app();
-
- $maxsysload = intval(get_config('system','maxloadavg'));
- if($maxsysload < 1)
- $maxsysload = 50;
- if(function_exists('sys_getloadavg')) {
- $load = sys_getloadavg();
- if(intval($load[0]) > $maxsysload) {
- logger('system: load ' . $load . ' too high. Poller deferred to next scheduled run.');
- return;
- }
- }
-
- $interval = intval(get_config('system','poll_interval'));
- if(! $interval)
- $interval = ((get_config('system','delivery_interval') === false) ? 3 : intval(get_config('system','delivery_interval')));
-
- // Check for a lockfile. If it exists, but is over an hour old, it's stale. Ignore it.
- $lockfile = 'store/[data]/poller';
- if((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 3600))
- && (! get_config('system','override_poll_lockfile'))) {
- logger("poller: Already running");
- return;
- }
-
- // Create a lockfile. Needs two vars, but $x doesn't need to contain anything.
- file_put_contents($lockfile, $x);
-
- logger('poller: start');
-
- // run queue delivery process in the background
-
- proc_run('php',"include/queue.php");
-
-
- // maintenance for mod sharedwithme - check for updated items and remove them
-
- require_once('include/sharedwithme.php');
- apply_updates();
-
-
- // expire any expired mail
-
- q("delete from mail where expires != '%s' and expires < %s ",
- dbesc(NULL_DATE),
- db_utcnow()
- );
-
- // expire any expired items
-
- $r = q("select id from item where expires != '%s' and expires < %s
- and item_deleted = 0 ",
- dbesc(NULL_DATE),
- db_utcnow()
- );
- if($r) {
- require_once('include/items.php');
- foreach($r as $rr)
- drop_item($rr['id'],false);
- }
-
-
- // Ensure that every channel pings a directory server once a month. This way we can discover
- // channels and sites that quietly vanished and prevent the directory from accumulating stale
- // or dead entries.
-
- $r = q("select channel_id from channel where channel_dirdate < %s - INTERVAL %s",
- db_utcnow(),
- db_quoteinterval('30 DAY')
- );
- if($r) {
- foreach($r as $rr) {
- proc_run('php','include/directory.php',$rr['channel_id'],'force');
- if($interval)
- @time_sleep_until(microtime(true) + (float) $interval);
- }
- }
-
- // publish any applicable items that were set to be published in the future
- // (time travel posts). Restrict to items that have come of age in the last
- // couple of days to limit the query to something reasonable.
-
- $r = q("select id from item where item_delayed = 1 and created <= %s and created > '%s' ",
- db_utcnow(),
- dbesc(datetime_convert('UTC','UTC','now - 2 days'))
- );
- if($r) {
- foreach($r as $rr) {
- $x = q("update item set item_delayed = 0 where id = %d",
- intval($rr['id'])
- );
- if($x) {
- proc_run('php','include/notifier.php','wall-new',$rr['id']);
- }
- }
- }
-
- $abandon_days = intval(get_config('system','account_abandon_days'));
- if($abandon_days < 1)
- $abandon_days = 0;
-
-
- // once daily run birthday_updates and then expire in background
-
- // FIXME: add birthday updates, both locally and for xprof for use
- // by directory servers
-
- $d1 = intval(get_config('system','last_expire_day'));
- $d2 = intval(datetime_convert('UTC','UTC','now','d'));
-
- // Allow somebody to staggger daily activities if they have more than one site on their server,
- // or if it happens at an inconvenient (busy) hour.
-
- $h1 = intval(get_config('system','cron_hour'));
- $h2 = intval(datetime_convert('UTC','UTC','now','G'));
-
- $dirmode = get_config('system','directory_mode');
-
- /**
- * Cron Daily
- *
- * Actions in the following block are executed once per day, not on every poller run
- *
- */
-
- if(($d2 != $d1) && ($h1 == $h2)) {
-
- require_once('include/dir_fns.php');
- check_upstream_directory();
-
- call_hooks('cron_daily',datetime_convert());
-
-
- $d3 = intval(datetime_convert('UTC','UTC','now','N'));
- if($d3 == 7) {
-
- /**
- * Cron Weekly
- *
- * Actions in the following block are executed once per day only on Sunday (once per week).
- *
- */
-
-
- call_hooks('cron_weekly',datetime_convert());
-
-
- z_check_cert();
-
- require_once('include/hubloc.php');
- prune_hub_reinstalls();
-
- require_once('include/Contact.php');
- mark_orphan_hubsxchans();
-
-
- // get rid of really old poco records
-
- q("delete from xlink where xlink_updated < %s - INTERVAL %s and xlink_static = 0 ",
- db_utcnow(), db_quoteinterval('14 DAY')
- );
-
- $dirmode = intval(get_config('system','directory_mode'));
- if($dirmode === DIRECTORY_MODE_SECONDARY || $dirmode === DIRECTORY_MODE_PRIMARY) {
- logger('regdir: ' . print_r(z_fetch_url(get_directory_primary() . '/regdir?f=&url=' . urlencode(z_root()) . '&realm=' . urlencode(get_directory_realm())),true));
- }
-
- // Check for dead sites
- proc_run('php', 'include/checksites.php');
-
- // update searchable doc indexes
- proc_run('php', 'include/importdoc.php');
-
- /**
- * End Cron Weekly
- */
- }
-
- update_birthdays();
-
- //update statistics in config
- require_once('include/statistics_fns.php');
- update_channels_total_stat();
- update_channels_active_halfyear_stat();
- update_channels_active_monthly_stat();
- update_local_posts_stat();
-
- // expire any read notifications over a month old
-
- q("delete from notify where seen = 1 and date < %s - INTERVAL %s",
- db_utcnow(), db_quoteinterval('30 DAY')
- );
-
- // expire old delivery reports
-
- $keep_reports = intval(get_config('system','expire_delivery_reports'));
- if($keep_reports === 0)
- $keep_reports = 10;
-
- q("delete from dreport where dreport_time < %s - INTERVAL %s",
- db_utcnow(),
- db_quoteinterval($keep_reports . ' DAY')
- );
-
- // expire any expired accounts
- downgrade_accounts();
-
- // If this is a directory server, request a sync with an upstream
- // directory at least once a day, up to once every poll interval.
- // Pull remote changes and push local changes.
- // potential issue: how do we keep from creating an endless update loop?
-
- if($dirmode == DIRECTORY_MODE_SECONDARY || $dirmode == DIRECTORY_MODE_PRIMARY) {
- require_once('include/dir_fns.php');
- sync_directories($dirmode);
- }
-
- set_config('system','last_expire_day',$d2);
-
- proc_run('php','include/expire.php');
- proc_run('php','include/cli_suggest.php');
-
- require_once('include/hubloc.php');
- remove_obsolete_hublocs();
-
- /**
- * End Cron Daily
- */
- }
-
- // update any photos which didn't get imported properly
- // This should be rare
-
- $r = q("select xchan_photo_l, xchan_hash from xchan where xchan_photo_l != '' and xchan_photo_m = ''
- and xchan_photo_date < %s - INTERVAL %s",
- db_utcnow(),
- db_quoteinterval('1 DAY')
- );
- if($r) {
- require_once('include/photo/photo_driver.php');
- foreach($r as $rr) {
- $photos = import_xchan_photo($rr['xchan_photo_l'],$rr['xchan_hash']);
- $x = q("update xchan set xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s'
- where xchan_hash = '%s'",
- dbesc($photos[0]),
- dbesc($photos[1]),
- dbesc($photos[2]),
- dbesc($photos[3]),
- dbesc($rr['xchan_hash'])
- );
- }
- }
-
-
- // pull in some public posts
-
- if(! get_config('system','disable_discover_tab'))
- proc_run('php','include/externals.php');
-
-
- $manual_id = 0;
- $generation = 0;
-
- $force = false;
- $restart = false;
-
- if(($argc > 1) && ($argv[1] == 'force'))
- $force = true;
-
- if(($argc > 1) && ($argv[1] == 'restart')) {
- $restart = true;
- $generation = intval($argv[2]);
- if(! $generation)
- killme();
- }
-
- if(($argc > 1) && intval($argv[1])) {
- $manual_id = intval($argv[1]);
- $force = true;
- }
-
-
- $sql_extra = (($manual_id) ? " AND abook_id = " . intval($manual_id) . " " : "");
-
- reload_plugins();
-
- $d = datetime_convert();
-
- // TODO check to see if there are any cronhooks before wasting a process
-
- if(! $restart)
- proc_run('php','include/cronhooks.php');
-
- // Only poll from those with suitable relationships
-
- $abandon_sql = (($abandon_days)
- ? sprintf(" AND account_lastlog > %s - INTERVAL %s ", db_utcnow(), db_quoteinterval(intval($abandon_days).' DAY'))
- : ''
- );
-
- $randfunc = db_getfunc('RAND');
-
- $contacts = q("SELECT * FROM abook LEFT JOIN xchan on abook_xchan = xchan_hash
- LEFT JOIN account on abook_account = account_id
- where abook_self = 0
- $sql_extra
- AND (( account_flags = %d ) OR ( account_flags = %d )) $abandon_sql ORDER BY $randfunc",
- intval(ACCOUNT_OK),
- intval(ACCOUNT_UNVERIFIED) // FIXME
-
- );
-
- if($contacts) {
-
- foreach($contacts as $contact) {
-
- $update = false;
-
- $t = $contact['abook_updated'];
- $c = $contact['abook_connected'];
-
- if(intval($contact['abook_feed'])) {
- $min = service_class_fetch($contact['abook_channel'],'minimum_feedcheck_minutes');
- if(! $min)
- $min = intval(get_config('system','minimum_feedcheck_minutes'));
- if(! $min)
- $min = 60;
- $x = datetime_convert('UTC','UTC',"now - $min minutes");
- if($c < $x) {
- proc_run('php','include/onepoll.php',$contact['abook_id']);
- if($interval)
- @time_sleep_until(microtime(true) + (float) $interval);
- }
- continue;
- }
-
-
- if($contact['xchan_network'] !== 'zot')
- continue;
-
- if($c == $t) {
- if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day"))
- $update = true;
- }
- else {
-
- // if we've never connected with them, start the mark for death countdown from now
-
- if($c == NULL_DATE) {
- $r = q("update abook set abook_connected = '%s' where abook_id = %d",
- dbesc(datetime_convert()),
- intval($contact['abook_id'])
- );
- $c = datetime_convert();
- $update = true;
- }
-
- // He's dead, Jim
-
- if(strcmp(datetime_convert('UTC','UTC', 'now'),datetime_convert('UTC','UTC', $c . " + 30 day")) > 0) {
- $r = q("update abook set abook_archived = 1 where abook_id = %d",
- intval($contact['abook_id'])
- );
- $update = false;
- continue;
- }
-
- if(intval($contact['abook_archived'])) {
- $update = false;
- continue;
- }
-
- // might be dead, so maybe don't poll quite so often
-
- // recently deceased, so keep up the regular schedule for 3 days
-
- if((strcmp(datetime_convert('UTC','UTC', 'now'),datetime_convert('UTC','UTC', $c . " + 3 day")) > 0)
- && (strcmp(datetime_convert('UTC','UTC', 'now'),datetime_convert('UTC','UTC', $t . " + 1 day")) > 0))
- $update = true;
-
- // After that back off and put them on a morphine drip
-
- if(strcmp(datetime_convert('UTC','UTC', 'now'),datetime_convert('UTC','UTC', $t . " + 2 day")) > 0) {
- $update = true;
- }
-
- }
-
- if(intval($contact['abook_pending']) || intval($contact['abook_archived']) || intval($contact['abook_ignored']) || intval($contact['abook_blocked']))
- continue;
-
- if((! $update) && (! $force))
- continue;
-
- proc_run('php','include/onepoll.php',$contact['abook_id']);
- if($interval)
- @time_sleep_until(microtime(true) + (float) $interval);
-
- }
- }
-
- if($dirmode == DIRECTORY_MODE_SECONDARY || $dirmode == DIRECTORY_MODE_PRIMARY) {
- $r = q("SELECT u.ud_addr, u.ud_id, u.ud_last FROM updates AS u INNER JOIN (SELECT ud_addr, max(ud_id) AS ud_id FROM updates WHERE ( ud_flags & %d ) = 0 AND ud_addr != '' AND ( ud_last = '%s' OR ud_last > %s - INTERVAL %s ) GROUP BY ud_addr) AS s ON s.ud_id = u.ud_id ",
- intval(UPDATE_FLAGS_UPDATED),
- dbesc(NULL_DATE),
- db_utcnow(), db_quoteinterval('7 DAY')
- );
- if($r) {
- foreach($r as $rr) {
-
- // If they didn't respond when we attempted before, back off to once a day
- // After 7 days we won't bother anymore
-
- if($rr['ud_last'] != NULL_DATE)
- if($rr['ud_last'] > datetime_convert('UTC','UTC', 'now - 1 day'))
- continue;
- proc_run('php','include/onedirsync.php',$rr['ud_id']);
- if($interval)
- @time_sleep_until(microtime(true) + (float) $interval);
- }
- }
- }
-
- set_config('system','lastpoll',datetime_convert());
-
- //All done - clear the lockfile
- @unlink($lockfile);
-
- return;
}
if (array_search(__file__,get_included_files())===0){
- poller_run($argv,$argc);
+ poller_run($argc,$argv);
killme();
}
diff --git a/include/profile_selectors.php b/include/profile_selectors.php
deleted file mode 100644
index 9f993f803..000000000
--- a/include/profile_selectors.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php /** @file */
-
-
-function gender_selector($current="",$suffix="") {
- $o = '';
- $select = array('', t('Male'), t('Female'), t('Currently Male'), t('Currently Female'), t('Mostly Male'), t('Mostly Female'), t('Transgender'), t('Intersex'), t('Transsexual'), t('Hermaphrodite'), t('Neuter'), t('Non-specific'), t('Other'), t('Undecided'));
-
- call_hooks('gender_selector', $select);
-
- $o .= "<select class=\"form-control\" name=\"gender$suffix\" id=\"gender-select$suffix\" size=\"1\" >";
- foreach($select as $selection) {
- if($selection !== 'NOTRANSLATION') {
- $selected = (($selection == $current) ? ' selected="selected" ' : '');
- $o .= "<option value=\"$selection\" $selected >$selection</option>";
- }
- }
- $o .= '</select>';
- return $o;
-}
-
-function gender_selector_min($current="",$suffix="") {
- $o = '';
- $select = array('', t('Male'), t('Female'), t('Other'));
-
- call_hooks('gender_selector_min', $select);
-
- $o .= "<select class=\"form-control\" name=\"gender$suffix\" id=\"gender-select$suffix\" size=\"1\" >";
- foreach($select as $selection) {
- if($selection !== 'NOTRANSLATION') {
- $selected = (($selection == $current) ? ' selected="selected" ' : '');
- $o .= "<option value=\"$selection\" $selected >$selection</option>";
- }
- }
- $o .= '</select>';
- return $o;
-}
-
-
-
-function sexpref_selector($current="",$suffix="") {
- $o = '';
- $select = array('', t('Males'), t('Females'), t('Gay'), t('Lesbian'), t('No Preference'), t('Bisexual'), t('Autosexual'), t('Abstinent'), t('Virgin'), t('Deviant'), t('Fetish'), t('Oodles'), t('Nonsexual'));
-
-
- call_hooks('sexpref_selector', $select);
-
- $o .= "<select class=\"form-control\" name=\"sexual$suffix\" id=\"sexual-select$suffix\" size=\"1\" >";
- foreach($select as $selection) {
- if($selection !== 'NOTRANSLATION') {
- $selected = (($selection == $current) ? ' selected="selected" ' : '');
- $o .= "<option value=\"$selection\" $selected >$selection</option>";
- }
- }
- $o .= '</select>';
- return $o;
-}
-
-
-function sexpref_selector_min($current="",$suffix="") {
- $o = '';
- $select = array('', t('Males'), t('Females'), t('Other'));
-
- call_hooks('sexpref_selector_min', $select);
-
- $o .= "<select class=\"form-control\" name=\"sexual$suffix\" id=\"sexual-select$suffix\" size=\"1\" >";
- foreach($select as $selection) {
- if($selection !== 'NOTRANSLATION') {
- $selected = (($selection == $current) ? ' selected="selected" ' : '');
- $o .= "<option value=\"$selection\" $selected >$selection</option>";
- }
- }
- $o .= '</select>';
- return $o;
-}
-
-
-
-function marital_selector($current="",$suffix="") {
- $o = '';
- $select = array('', t('Single'), t('Lonely'), t('Available'), t('Unavailable'), t('Has crush'), t('Infatuated'), t('Dating'), t('Unfaithful'), t('Sex Addict'), t('Friends'), t('Friends/Benefits'), t('Casual'), t('Engaged'), t('Married'), t('Imaginarily married'), t('Partners'), t('Cohabiting'), t('Common law'), t('Happy'), t('Not looking'), t('Swinger'), t('Betrayed'), t('Separated'), t('Unstable'), t('Divorced'), t('Imaginarily divorced'), t('Widowed'), t('Uncertain'), t('It\'s complicated'), t('Don\'t care'), t('Ask me') );
-
- call_hooks('marital_selector', $select);
-
- $o .= "<select class=\"form-control\" name=\"marital\" id=\"marital-select\" size=\"1\" >";
- foreach($select as $selection) {
- if($selection !== 'NOTRANSLATION') {
- $selected = (($selection == $current) ? ' selected="selected" ' : '');
- $o .= "<option value=\"$selection\" $selected >$selection</option>";
- }
- }
- $o .= '</select>';
- return $o;
-}
-
-function marital_selector_min($current="",$suffix="") {
- $o = '';
- $select = array('', t('Single'), t('Dating'), t('Cohabiting'), t('Married'), t('Separated'), t('Divorced'), t('Widowed'), t('It\'s complicated'), t('Other'));
-
- call_hooks('marital_selector_min', $select);
-
- $o .= "<select class=\"form-control\" name=\"marital\" id=\"marital-select\" size=\"1\" >";
- foreach($select as $selection) {
- if($selection !== 'NOTRANSLATION') {
- $selected = (($selection == $current) ? ' selected="selected" ' : '');
- $o .= "<option value=\"$selection\" $selected >$selection</option>";
- }
- }
- $o .= '</select>';
- return $o;
-}
diff --git a/include/queue.php b/include/queue.php
deleted file mode 100644
index 8a3b2aa58..000000000
--- a/include/queue.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php /** @file */
-require_once("boot.php");
-require_once('include/cli_startup.php');
-require_once('include/queue_fn.php');
-require_once('include/zot.php');
-
-function queue_run($argv, $argc){
-
- cli_startup();
-
- global $a;
-
- require_once('include/items.php');
- require_once('include/bbcode.php');
-
- if(argc() > 1)
- $queue_id = argv(1);
- else
- $queue_id = 0;
-
- logger('queue: start');
-
- // delete all queue items more than 3 days old
- // but first mark these sites dead if we haven't heard from them in a month
-
- $r = q("select outq_posturl from outq where outq_created < %s - INTERVAL %s",
- db_utcnow(), db_quoteinterval('3 DAY')
- );
- if($r) {
- foreach($r as $rr) {
- $site_url = '';
- $h = parse_url($rr['outq_posturl']);
- $desturl = $h['scheme'] . '://' . $h['host'] . (($h['port']) ? ':' . $h['port'] : '');
- q("update site set site_dead = 1 where site_dead = 0 and site_url = '%s' and site_update < %s - INTERVAL %s",
- dbesc($desturl),
- db_utcnow(), db_quoteinterval('1 MONTH')
- );
- }
- }
-
- $r = q("DELETE FROM outq WHERE outq_created < %s - INTERVAL %s",
- db_utcnow(), db_quoteinterval('3 DAY')
- );
-
- if($queue_id) {
- $r = q("SELECT * FROM outq WHERE outq_hash = '%s' LIMIT 1",
- dbesc($queue_id)
- );
- }
- else {
-
- // For the first 12 hours we'll try to deliver every 15 minutes
- // After that, we'll only attempt delivery once per hour.
- // This currently only handles the default queue drivers ('zot' or '') which we will group by posturl
- // so that we don't start off a thousand deliveries for a couple of dead hubs.
- // The zot driver will deliver everything destined for a single hub once contact is made (*if* contact is made).
- // Other drivers will have to do something different here and may need their own query.
-
- // Note: this requires some tweaking as new posts to long dead hubs once a day will keep them in the
- // "every 15 minutes" category. We probably need to prioritise them when inserted into the queue
- // or just prior to this query based on recent and long-term delivery history. If we have good reason to believe
- // the site is permanently down, there's no reason to attempt delivery at all, or at most not more than once
- // or twice a day.
-
- // FIXME: can we sort postgres on outq_priority and maintain the 'distinct' ?
- // The order by max(outq_priority) might be a dodgy query because of the group by.
- // The desired result is to return a sequence in the order most likely to be delivered in this run.
- // If a hub has already been sitting in the queue for a few days, they should be delivered last;
- // hence every failure should drop them further down the priority list.
-
- if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
- $prefix = 'DISTINCT ON (outq_posturl)';
- $suffix = 'ORDER BY outq_posturl';
- } else {
- $prefix = '';
- $suffix = 'GROUP BY outq_posturl ORDER BY max(outq_priority)';
- }
- $r = q("SELECT $prefix * FROM outq WHERE outq_delivered = 0 and (( outq_created > %s - INTERVAL %s and outq_updated < %s - INTERVAL %s ) OR ( outq_updated < %s - INTERVAL %s )) $suffix",
- db_utcnow(), db_quoteinterval('12 HOUR'),
- db_utcnow(), db_quoteinterval('15 MINUTE'),
- db_utcnow(), db_quoteinterval('1 HOUR')
- );
- }
- if(! $r)
- return;
-
- foreach($r as $rr) {
- queue_deliver($rr);
- }
-}
-
-if (array_search(__file__,get_included_files())===0){
- queue_run($argv,$argc);
- killme();
-}
diff --git a/include/ratenotif.php b/include/ratenotif.php
deleted file mode 100644
index 2c636c710..000000000
--- a/include/ratenotif.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-
-require_once('include/cli_startup.php');
-require_once('include/zot.php');
-require_once('include/queue_fn.php');
-
-
-function ratenotif_run($argv, $argc){
-
- cli_startup();
-
- $a = get_app();
-
- require_once("datetime.php");
- require_once('include/items.php');
- require_once('include/Contact.php');
-
- if($argc < 3)
- return;
-
-
- logger('ratenotif: invoked: ' . print_r($argv,true), LOGGER_DEBUG);
-
- $cmd = $argv[1];
-
- $item_id = $argv[2];
-
-
- if($cmd === 'rating') {
- $r = q("select * from xlink where xlink_id = %d and xlink_static = 1 limit 1",
- intval($item_id)
- );
- if(! $r) {
- logger('rating not found');
- return;
- }
-
- $encoded_item = array(
- 'type' => 'rating',
- 'encoding' => 'zot',
- 'target' => $r[0]['xlink_link'],
- 'rating' => intval($r[0]['xlink_rating']),
- 'rating_text' => $r[0]['xlink_rating_text'],
- 'signature' => $r[0]['xlink_sig'],
- 'edited' => $r[0]['xlink_updated']
- );
- }
-
- $channel = channelx_by_hash($r[0]['xlink_xchan']);
- if(! $channel) {
- logger('no channel');
- return;
- }
-
-
- $primary = get_directory_primary();
-
- if(! $primary)
- return;
-
-
- $interval = ((get_config('system','delivery_interval') !== false)
- ? intval(get_config('system','delivery_interval')) : 2 );
-
- $deliveries_per_process = intval(get_config('system','delivery_batch_count'));
-
- if($deliveries_per_process <= 0)
- $deliveries_per_process = 1;
-
- $deliver = array();
-
- $x = z_fetch_url($primary . '/regdir');
- if($x['success']) {
- $j = json_decode($x['body'],true);
- if($j && $j['success'] && is_array($j['directories'])) {
-
- foreach($j['directories'] as $h) {
- if($h == z_root())
- continue;
-
- $hash = random_string();
- $n = zot_build_packet($channel,'notify',null,null,$hash);
-
- queue_insert(array(
- 'hash' => $hash,
- 'account_id' => $channel['channel_account_id'],
- 'channel_id' => $channel['channel_id'],
- 'posturl' => $h . '/post',
- 'notify' => $n,
- 'msg' => json_encode($encoded_item)
- ));
-
- $deliver[] = $hash;
-
- if(count($deliver) >= $deliveries_per_process) {
- proc_run('php','include/deliver.php',$deliver);
- $deliver = array();
- if($interval)
- @time_sleep_until(microtime(true) + (float) $interval);
- }
- }
-
- // catch any stragglers
-
- if(count($deliver)) {
- proc_run('php','include/deliver.php',$deliver);
- }
- }
- }
-
- logger('ratenotif: complete.');
- return;
-
-}
-
-if (array_search(__file__,get_included_files())===0){
- ratenotif_run($argv,$argc);
- killme();
-}
diff --git a/include/selectors.php b/include/selectors.php
new file mode 100644
index 000000000..d7d070d31
--- /dev/null
+++ b/include/selectors.php
@@ -0,0 +1,154 @@
+<?php /** @file */
+
+
+function contact_profile_assign($current) {
+
+ $o = '';
+
+ $o .= "<select id=\"contact-profile-selector\" name=\"profile_assign\" class=\"form-control\"/>\r\n";
+
+ $r = q("SELECT profile_guid, profile_name FROM `profile` WHERE `uid` = %d",
+ intval($_SESSION['uid']));
+
+ if($r) {
+ foreach($r as $rr) {
+ $selected = (($rr['profile_guid'] == $current) ? " selected=\"selected\" " : "");
+ $o .= "<option value=\"{$rr['profile_guid']}\" $selected >{$rr['profile_name']}</option>\r\n";
+ }
+ }
+ $o .= "</select>\r\n";
+ return $o;
+}
+
+function contact_poll_interval($current, $disabled = false) {
+
+ $dis = (($disabled) ? ' disabled="disabled" ' : '');
+ $o = '';
+ $o .= "<select id=\"contact-poll-interval\" name=\"poll\" $dis />" . "\r\n";
+
+ $rep = array(
+ 0 => t('Frequently'),
+ 1 => t('Hourly'),
+ 2 => t('Twice daily'),
+ 3 => t('Daily'),
+ 4 => t('Weekly'),
+ 5 => t('Monthly')
+ );
+
+ foreach($rep as $k => $v) {
+ $selected = (($k == $current) ? " selected=\"selected\" " : "");
+ $o .= "<option value=\"$k\" $selected >$v</option>\r\n";
+ }
+ $o .= "</select>\r\n";
+ return $o;
+}
+
+
+function gender_selector($current="",$suffix="") {
+ $o = '';
+ $select = array('', t('Male'), t('Female'), t('Currently Male'), t('Currently Female'), t('Mostly Male'), t('Mostly Female'), t('Transgender'), t('Intersex'), t('Transsexual'), t('Hermaphrodite'), t('Neuter'), t('Non-specific'), t('Other'), t('Undecided'));
+
+ call_hooks('gender_selector', $select);
+
+ $o .= "<select class=\"form-control\" name=\"gender$suffix\" id=\"gender-select$suffix\" size=\"1\" >";
+ foreach($select as $selection) {
+ if($selection !== 'NOTRANSLATION') {
+ $selected = (($selection == $current) ? ' selected="selected" ' : '');
+ $o .= "<option value=\"$selection\" $selected >$selection</option>";
+ }
+ }
+ $o .= '</select>';
+ return $o;
+}
+
+function gender_selector_min($current="",$suffix="") {
+ $o = '';
+ $select = array('', t('Male'), t('Female'), t('Other'));
+
+ call_hooks('gender_selector_min', $select);
+
+ $o .= "<select class=\"form-control\" name=\"gender$suffix\" id=\"gender-select$suffix\" size=\"1\" >";
+ foreach($select as $selection) {
+ if($selection !== 'NOTRANSLATION') {
+ $selected = (($selection == $current) ? ' selected="selected" ' : '');
+ $o .= "<option value=\"$selection\" $selected >$selection</option>";
+ }
+ }
+ $o .= '</select>';
+ return $o;
+}
+
+
+
+function sexpref_selector($current="",$suffix="") {
+ $o = '';
+ $select = array('', t('Males'), t('Females'), t('Gay'), t('Lesbian'), t('No Preference'), t('Bisexual'), t('Autosexual'), t('Abstinent'), t('Virgin'), t('Deviant'), t('Fetish'), t('Oodles'), t('Nonsexual'));
+
+
+ call_hooks('sexpref_selector', $select);
+
+ $o .= "<select class=\"form-control\" name=\"sexual$suffix\" id=\"sexual-select$suffix\" size=\"1\" >";
+ foreach($select as $selection) {
+ if($selection !== 'NOTRANSLATION') {
+ $selected = (($selection == $current) ? ' selected="selected" ' : '');
+ $o .= "<option value=\"$selection\" $selected >$selection</option>";
+ }
+ }
+ $o .= '</select>';
+ return $o;
+}
+
+
+function sexpref_selector_min($current="",$suffix="") {
+ $o = '';
+ $select = array('', t('Males'), t('Females'), t('Other'));
+
+ call_hooks('sexpref_selector_min', $select);
+
+ $o .= "<select class=\"form-control\" name=\"sexual$suffix\" id=\"sexual-select$suffix\" size=\"1\" >";
+ foreach($select as $selection) {
+ if($selection !== 'NOTRANSLATION') {
+ $selected = (($selection == $current) ? ' selected="selected" ' : '');
+ $o .= "<option value=\"$selection\" $selected >$selection</option>";
+ }
+ }
+ $o .= '</select>';
+ return $o;
+}
+
+
+
+function marital_selector($current="",$suffix="") {
+ $o = '';
+ $select = array('', t('Single'), t('Lonely'), t('Available'), t('Unavailable'), t('Has crush'), t('Infatuated'), t('Dating'), t('Unfaithful'), t('Sex Addict'), t('Friends'), t('Friends/Benefits'), t('Casual'), t('Engaged'), t('Married'), t('Imaginarily married'), t('Partners'), t('Cohabiting'), t('Common law'), t('Happy'), t('Not looking'), t('Swinger'), t('Betrayed'), t('Separated'), t('Unstable'), t('Divorced'), t('Imaginarily divorced'), t('Widowed'), t('Uncertain'), t('It\'s complicated'), t('Don\'t care'), t('Ask me') );
+
+ call_hooks('marital_selector', $select);
+
+ $o .= "<select class=\"form-control\" name=\"marital\" id=\"marital-select\" size=\"1\" >";
+ foreach($select as $selection) {
+ if($selection !== 'NOTRANSLATION') {
+ $selected = (($selection == $current) ? ' selected="selected" ' : '');
+ $o .= "<option value=\"$selection\" $selected >$selection</option>";
+ }
+ }
+ $o .= '</select>';
+ return $o;
+}
+
+function marital_selector_min($current="",$suffix="") {
+ $o = '';
+ $select = array('', t('Single'), t('Dating'), t('Cohabiting'), t('Married'), t('Separated'), t('Divorced'), t('Widowed'), t('It\'s complicated'), t('Other'));
+
+ call_hooks('marital_selector_min', $select);
+
+ $o .= "<select class=\"form-control\" name=\"marital\" id=\"marital-select\" size=\"1\" >";
+ foreach($select as $selection) {
+ if($selection !== 'NOTRANSLATION') {
+ $selected = (($selection == $current) ? ' selected="selected" ' : '');
+ $o .= "<option value=\"$selection\" $selected >$selection</option>";
+ }
+ }
+ $o .= '</select>';
+ return $o;
+}
+
diff --git a/include/sharedwithme.php b/include/sharedwithme.php
index b01764ad3..b342f51d5 100644
--- a/include/sharedwithme.php
+++ b/include/sharedwithme.php
@@ -3,7 +3,7 @@
function apply_updates() {
//check for updated items and remove them
- $x = q("SELECT mid, max(object) AS object FROM item WHERE verb = '%s' AND obj_type = '%s' GROUP BY mid",
+ $x = q("SELECT mid, max(obj) AS obj FROM item WHERE verb = '%s' AND obj_type = '%s' GROUP BY mid",
dbesc(ACTIVITY_UPDATE),
dbesc(ACTIVITY_OBJ_FILE)
);
@@ -12,7 +12,7 @@ function apply_updates() {
foreach($x as $xx) {
- $object = json_decode($xx['object'],true);
+ $object = json_decode($xx['obj'],true);
$d_mid = $object['d_mid'];
$u_mid = $xx['mid'];
diff --git a/include/smarty.php b/include/smarty.php
deleted file mode 100755
index 3812c6021..000000000
--- a/include/smarty.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php /** @file */
-require_once 'include/ITemplateEngine.php';
-require_once("library/Smarty/libs/Smarty.class.php");
-
-
-class FriendicaSmarty extends Smarty {
-
- public $filename;
-
- function __construct() {
- parent::__construct();
-
- $a = get_app();
- $theme = current_theme();
-
- // setTemplateDir can be set to an array, which Smarty will parse in order.
- // The order is thus very important here
- $template_dirs = array('theme' => "view/theme/$theme/tpl/");
- if( x(App::$theme_info,"extends") )
- $template_dirs = $template_dirs + array('extends' => "view/theme/".App::$theme_info["extends"]."/tpl/");
- $template_dirs = $template_dirs + array('base' => 'view/tpl/');
- $this->setTemplateDir($template_dirs);
-
- $basecompiledir = App::$config['system']['smarty3_folder'];
-
- $this->setCompileDir($basecompiledir.'/compiled/');
- $this->setConfigDir($basecompiledir.'/config/');
- $this->setCacheDir($basecompiledir.'/cache/');
-
- $this->left_delimiter = App::get_template_ldelim('smarty3');
- $this->right_delimiter = App::get_template_rdelim('smarty3');
-
- // Don't report errors so verbosely
- $this->error_reporting = E_ALL & ~E_NOTICE;
- }
-
- function parsed($template = '') {
- if($template) {
- return $this->fetch('string:' . $template);
- }
- return $this->fetch('file:' . $this->filename);
- }
-}
-
-
-
-class FriendicaSmartyEngine implements ITemplateEngine {
- static $name ="smarty3";
-
- public function __construct(){
- $a = get_app();
-
- // Cannot use get_config() here because it is called during installation when there is no DB.
- // FIXME: this may leak private information such as system pathnames.
-
- $basecompiledir = ((array_key_exists('smarty3_folder',App::$config['system'])) ? App::$config['system']['smarty3_folder'] : '');
- if (!$basecompiledir) $basecompiledir = dirname(__dir__) . "/" . TEMPLATE_BUILD_PATH;
- if (!is_dir($basecompiledir)) {
- echo "<b>ERROR:</b> folder <tt>$basecompiledir</tt> does not exist."; killme();
- }
- if(!is_writable($basecompiledir)){
- echo "<b>ERROR:</b> folder <tt>$basecompiledir</tt> must be writable by webserver."; killme();
- }
- App::$config['system']['smarty3_folder'] = $basecompiledir;
- }
-
- // ITemplateEngine interface
- public function replace_macros($s, $r) {
- $template = '';
- if(gettype($s) === 'string') {
- $template = $s;
- $s = new FriendicaSmarty();
- }
- foreach($r as $key=>$value) {
- if($key[0] === '$') {
- $key = substr($key, 1);
- }
- $s->assign($key, $value);
- }
- return $s->parsed($template);
- }
-
- public function get_markup_template($file, $root=''){
- $template_file = theme_include($file, $root);
- if($template_file) {
- $template = new FriendicaSmarty();
- $template->filename = $template_file;
-
- return $template;
- }
- return "";
- }
-
- public function get_intltext_template($file, $root='') {
- $a = get_app();
-
- if(file_exists("view/{App::$language}/$file"))
- $template_file = "view/{App::$language}/$file";
- elseif(file_exists("view/en/$file"))
- $template_file = "view/en/$file";
- else
- $template_file = theme_include($file,$root);
- if($template_file) {
- $template = new FriendicaSmarty();
- $template->filename = $template_file;
-
- return $template;
- }
- return "";
- }
-
-
-
-}
diff --git a/include/socgraph.php b/include/socgraph.php
index 1b1bccf20..4cb5600ec 100644
--- a/include/socgraph.php
+++ b/include/socgraph.php
@@ -152,11 +152,9 @@ function poco_load($xchan = '', $url = null) {
if(($x !== false) && (! count($x))) {
if($address) {
if($network === 'zot') {
- $z = zot_finger($address,null);
- if($z['success']) {
- $j = json_decode($z['body'],true);
- if($j)
- import_xchan($j);
+ $j = Zotlabs\Zot\Finger::run($address,null);
+ if($j['success']) {
+ import_xchan($j);
}
$x = q("select xchan_hash from xchan where xchan_hash = '%s' limit 1",
dbesc($hash)
@@ -404,7 +402,7 @@ function poco($a,$extended = false) {
$system_mode = false;
- if(intval(get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
logger('mod_poco: block_public');
http_status_exit(401);
}
diff --git a/include/taxonomy.php b/include/taxonomy.php
index e43f5e5d0..177215fe8 100644
--- a/include/taxonomy.php
+++ b/include/taxonomy.php
@@ -20,7 +20,7 @@ function file_tag_file_query($table,$s,$type = 'file') {
else
$termtype = TERM_CATEGORY;
- return sprintf(" AND " . (($table) ? dbesc($table) . '.' : '') . "id in (select term.oid from term where term.type = %d and term.term = '%s' and term.uid = " . (($table) ? dbesc($table) . '.' : '') . "uid ) ",
+ return sprintf(" AND " . (($table) ? dbesc($table) . '.' : '') . "id in (select term.oid from term where term.ttype = %d and term.term = '%s' and term.uid = " . (($table) ? dbesc($table) . '.' : '') . "uid ) ",
intval($termtype),
protect_sprintf(dbesc($s))
);
@@ -29,14 +29,14 @@ function file_tag_file_query($table,$s,$type = 'file') {
function term_query($table,$s,$type = TERM_UNKNOWN, $type2 = '') {
if($type2) {
- return sprintf(" AND " . (($table) ? dbesc($table) . '.' : '') . "id in (select term.oid from term where term.type in (%d, %d) and term.term = '%s' and term.uid = " . (($table) ? dbesc($table) . '.' : '') . "uid ) ",
+ return sprintf(" AND " . (($table) ? dbesc($table) . '.' : '') . "id in (select term.oid from term where term.ttype in (%d, %d) and term.term = '%s' and term.uid = " . (($table) ? dbesc($table) . '.' : '') . "uid ) ",
intval($type),
intval($type2),
protect_sprintf(dbesc($s))
);
}
else {
- return sprintf(" AND " . (($table) ? dbesc($table) . '.' : '') . "id in (select term.oid from term where term.type = %d and term.term = '%s' and term.uid = " . (($table) ? dbesc($table) . '.' : '') . "uid ) ",
+ return sprintf(" AND " . (($table) ? dbesc($table) . '.' : '') . "id in (select term.oid from term where term.ttype = %d and term.term = '%s' and term.uid = " . (($table) ? dbesc($table) . '.' : '') . "uid ) ",
intval($type),
protect_sprintf(dbesc($s))
);
@@ -49,7 +49,7 @@ function store_item_tag($uid,$iid,$otype,$type,$term,$url = '') {
return false;
$r = q("select * from term
- where uid = %d and oid = %d and otype = %d and type = %d
+ where uid = %d and oid = %d and otype = %d and ttype = %d
and term = '%s' and url = '%s' ",
intval($uid),
intval($iid),
@@ -61,7 +61,7 @@ function store_item_tag($uid,$iid,$otype,$type,$term,$url = '') {
if($r)
return false;
- $r = q("insert into term (uid, oid, otype, type, term, url)
+ $r = q("insert into term (uid, oid, otype, ttype, term, url)
values( %d, %d, %d, %d, '%s', '%s') ",
intval($uid),
intval($iid),
@@ -85,7 +85,7 @@ function get_terms_oftype($arr,$type) {
foreach($type as $t)
foreach($arr as $x)
- if($x['type'] == $t)
+ if($x['ttype'] == $t)
$ret[] = $x;
return $ret;
@@ -93,9 +93,9 @@ function get_terms_oftype($arr,$type) {
function format_term_for_display($term) {
$s = '';
- if(($term['type'] == TERM_HASHTAG) || ($term['type'] == TERM_COMMUNITYTAG))
+ if(($term['ttype'] == TERM_HASHTAG) || ($term['ttype'] == TERM_COMMUNITYTAG))
$s .= '#';
- elseif($term['type'] == TERM_MENTION)
+ elseif($term['ttype'] == TERM_MENTION)
$s .= '@';
else
return $s;
@@ -142,7 +142,7 @@ function tagadelic($uid, $count = 0, $authors = '', $owner = '', $flags = 0, $re
// Fetch tags
$r = q("select term, count(term) as total from term left join item on term.oid = item.id
- where term.uid = %d and term.type = %d
+ where term.uid = %d and term.ttype = %d
and otype = %d and item_type = %d and item_private = 0
$sql_options $item_normal
group by term order by total desc %s",
diff --git a/include/template_processor.php b/include/template_processor.php
deleted file mode 100755
index d2bf283e3..000000000
--- a/include/template_processor.php
+++ /dev/null
@@ -1,307 +0,0 @@
-<?php
-require_once 'include/ITemplateEngine.php';
-
-define ("KEY_NOT_EXISTS", '^R_key_not_Exists^');
-
-class Template implements ITemplateEngine {
- static $name ="internal";
-
- var $r;
- var $search;
- var $replace;
- var $stack = array();
- var $nodes = array();
- var $done = false;
- var $d = false;
- var $lang = null;
- var $debug=false;
-
- private function _preg_error() {
- switch(preg_last_error()) {
- case PREG_INTERNAL_ERROR: echo('PREG_INTERNAL_ERROR'); break;
- case PREG_BACKTRACK_LIMIT_ERROR: echo('PREG_BACKTRACK_LIMIT_ERROR'); break;
- case PREG_RECURSION_LIMIT_ERROR: echo('PREG_RECURSION_LIMIT_ERROR'); break;
- case PREG_BAD_UTF8_ERROR: echo('PREG_BAD_UTF8_ERROR'); break;
-// This is only valid for php > 5.3, not certain how to code around it for unit tests
-// case PREG_BAD_UTF8_OFFSET_ERROR: echo('PREG_BAD_UTF8_OFFSET_ERROR'); break;
- default:
- //die("Unknown preg error.");
- return;
- }
- echo "<hr><pre>";
- debug_print_backtrace();
- die();
- }
-
- private function _push_stack() {
- $this->stack[] = array($this->r, $this->nodes);
- }
-
- private function _pop_stack(){
- list($this->r, $this->nodes) = array_pop($this->stack);
- }
-
- private function _get_var($name, $retNoKey=false) {
- $keys = array_map('trim',explode(".",$name));
- if ($retNoKey && !array_key_exists($keys[0], $this->r))
- return KEY_NOT_EXISTS;
-
- $val = $this->r;
- foreach($keys as $k) {
- $val = (isset($val[$k]) ? $val[$k] : null);
- }
-
- return template_escape($val);
- }
-
- /**
- * IF node
- * \code
- * {{ if <$var> }}...[{{ else }} ...] {{ endif }}
- * {{ if <$var>==<val|$var> }}...[{{ else }} ...]{{ endif }}
- * {{ if <$var>!=<val|$var> }}...[{{ else }} ...]{{ endif }}
- * \endcode
- */
- private function _replcb_if($args) {
- if (strpos($args[2],"==")>0){
- list($a,$b) = array_map("trim",explode("==",$args[2]));
- $a = $this->_get_var($a);
- if ($b[0]=="$") $b = $this->_get_var($b);
- $val = ($a == $b);
- } else if (strpos($args[2],"!=")>0){
- list($a,$b) = array_map("trim", explode("!=",$args[2]));
- $a = $this->_get_var($a);
- if ($b[0]=="$") $b = $this->_get_var($b);
- $val = ($a != $b);
- } else {
- $val = $this->_get_var($args[2]);
- }
- $x = preg_split("|{{ *else *}}|", $args[3]);
-
- return ( ($val) ? $x[0] : (isset($x[1]) ? $x[1] : ""));
- }
-
- /**
- * FOR node
- * \code
- * {{ for <$var> as $name }}...{{ endfor }}
- * {{ for <$var> as $key=>$name }}...{{ endfor }}
- * \endcode
- */
- private function _replcb_for($args) {
- $m = array_map('trim', explode(" as ", $args[2]));
- $x = explode("=>",$m[1]);
- if (count($x) == 1) {
- $varname = $x[0];
- $keyname = "";
- } else {
- list($keyname, $varname) = $x;
- }
- if ($m[0]=="" || $varname=="" || is_null($varname)) die("template error: 'for ".$m[0]." as ".$varname."'") ;
- //$vals = $this->r[$m[0]];
- $vals = $this->_get_var($m[0]);
- $ret="";
- if (!is_array($vals)) return $ret;
-
- foreach ($vals as $k=>$v){
- $this->_push_stack();
- $r = $this->r;
- $r[$varname] = $v;
- if ($keyname!='') $r[$keyname] = (($k === 0) ? '0' : $k);
- $ret .= $this->replace($args[3], $r);
- $this->_pop_stack();
- }
-
- return $ret;
- }
-
- /**
- * INC node
- * \code
- * {{ inc <templatefile> [with $var1=$var2] }}{{ endinc }}
- * \endcode
- */
- private function _replcb_inc($args) {
- if (strpos($args[2],"with")) {
- list($tplfile, $newctx) = array_map('trim', explode("with",$args[2]));
- } else {
- $tplfile = trim($args[2]);
- $newctx = null;
- }
-
- if ($tplfile[0]=="$") $tplfile = $this->_get_var($tplfile);
-
- $this->_push_stack();
- $r = $this->r;
- if (!is_null($newctx)) {
- list($a,$b) = array_map('trim', explode("=",$newctx));
- $r[$a] = $this->_get_var($b);
- }
- $this->nodes = Array();
- $tpl = get_markup_template($tplfile);
- $ret = $this->replace($tpl, $r);
- $this->_pop_stack();
-
- return $ret;
- }
-
- /**
- * DEBUG node
- * \code
- * {{ debug $var [$var [$var [...]]] }}{{ enddebug }}
- * \endcode
- * replace node with <pre>var_dump($var, $var, ...);</pre>
- */
- private function _replcb_debug($args) {
- $vars = array_map('trim', explode(" ",$args[2]));
- $vars[] = $args[1];
-
- $ret = "<pre>";
- foreach ($vars as $var){
- $ret .= htmlspecialchars(var_export( $this->_get_var($var), true ));
- $ret .= "\n";
- }
- $ret .= "</pre>";
-
- return $ret;
- }
-
- private function _replcb_node($m) {
- $node = $this->nodes[$m[1]];
- if (method_exists($this, "_replcb_".$node[1])){
- $s = call_user_func(array($this, "_replcb_".$node[1]), $node);
- } else {
- $s = "";
- }
- $s = preg_replace_callback('/\|\|([0-9]+)\|\|/', array($this, "_replcb_node"), $s);
-
- return $s;
- }
-
- private function _replcb($m) {
- //var_dump(array_map('htmlspecialchars', $m));
- $this->done = false;
- $this->nodes[] = (array) $m;
-
- return "||". (count($this->nodes)-1) ."||";
- }
-
- private function _build_nodes($s) {
- $this->done = false;
- while (!$this->done) {
- $this->done=true;
- $s = preg_replace_callback('|{{ *([a-z]*) *([^}]*)}}([^{]*({{ *else *}}[^{]*)?){{ *end\1 *}}|', array($this, "_replcb"), $s);
- if ($s==Null) $this->_preg_error();
- }
- //({{ *else *}}[^{]*)?
- krsort($this->nodes);
-
- return $s;
- }
-
- private function var_replace($s) {
- $m = array();
- /** regexp:
- * \$ literal $
- * (\[)? optional open square bracket
- * ([a-zA-Z0-9-_]+\.?)+ var name, followed by optional
- * dot, repeated at least 1 time
- * (?(1)\]) if there was opened square bracket
- * (subgrup 1), match close bracket
- */
- if (preg_match_all('/\$(\[)?([a-zA-Z0-9-_]+\.?)+(?(1)\])/', $s,$m)) {
- foreach ($m[0] as $var) {
- $exp = str_replace(array("[", "]"), array("", ""), $var);
- $exptks = explode("|", $exp);
-
- $varn = $exptks[0];
- unset($exptks[0]);
- $val = $this->_get_var($varn, true);
- if ($val != KEY_NOT_EXISTS) {
- /* run filters */
- /*
- * Filter are in form of:
- * filtername:arg:arg:arg
- *
- * "filtername" is function name
- * "arg"s are optional, var value is appended to the end
- * if one "arg"==='x' , is replaced with var value
- *
- * examples:
- * $item.body|htmlspecialchars // escape html chars
- * $item.body|htmlspecialchars|strtoupper // escape html and uppercase result
- * $item.created|date:%Y %M %j // format date (created is a timestamp)
- * $item.body|str_replace:cat:dog // replace all "cat" with "dog"
- * $item.body|str_replace:cat:dog:x:1 // replace one "cat" with "dog"
- */
- foreach ($exptks as $filterstr) {
- $filter = explode(":", $filterstr);
- $filtername = $filter[0];
- unset($filter[0]);
- $valkey = array_search("x", $filter);
- if ($valkey === false) {
- $filter[] = $val;
- } else {
- $filter[$valkey] = $val;
- }
- if (function_exists($filtername)) {
- $val = call_user_func_array($filtername, $filter);
- }
- }
- $s = str_replace($var, $val, $s);
- }
- }
- }
-
- return $s;
- }
-
- private function replace($s, $r) {
- $this->replace_macros($s, $r);
- }
-
- // TemplateEngine interface
- public function replace_macros($s, $r) {
- $this->r = $r;
-
- $s = $this->_build_nodes($s);
-
- $s = preg_replace_callback('/\|\|([0-9]+)\|\|/', array($this, "_replcb_node"), $s);
- if ($s == Null)
- $this->_preg_error();
-
- // remove comments block
- $s = preg_replace('/{#[^#]*#}/', "" , $s);
-
- //$t2 = dba_timer();
-
- // replace strings recursively (limit to 10 loops)
- $os = "";
- $count=0;
- while (($os !== $s) && $count<10) {
- $os=$s;
- $count++;
- $s = $this->var_replace($s);
- }
-
- return $s;
- }
-
- public function get_markup_template($file, $root='') {
- $template_file = theme_include($file, $root);
- if ($template_file) {
- $content = file_get_contents($template_file);
- }
-
- return $content;
- }
-}
-
-
-function template_escape($s) {
- return str_replace(array('$','{{'),array('!_Doll^Ars1Az_!','!_DoubLe^BraceS4Rw_!'),$s);
-}
-
-function template_unescape($s) {
- return str_replace(array('!_Doll^Ars1Az_!','!_DoubLe^BraceS4Rw_!'),array('$','{{'),$s);
-}
diff --git a/include/text.php b/include/text.php
index 3f2e85fc8..1bc19da34 100644
--- a/include/text.php
+++ b/include/text.php
@@ -3,8 +3,6 @@
* @file include/text.php
*/
-require_once("include/template_processor.php");
-require_once("include/smarty.php");
require_once("include/bbcode.php");
// random string, there are 86 characters max in text mode, 128 for hex
@@ -16,13 +14,12 @@ define('RANDOM_STRING_TEXT', 0x01 );
/**
* @brief This is our template processor.
*
- * @param string|FriendicaSmarty $s the string requiring macro substitution,
- * or an instance of FriendicaSmarty
+ * @param string|SmartyEngine $s the string requiring macro substitution,
+ * or an instance of SmartyEngine
* @param array $r key value pairs (search => replace)
* @return string substituted string
*/
function replace_macros($s, $r) {
- $a = get_app();
$arr = array('template' => $s, 'params' => $r);
call_hooks('replace_macros', $arr);
@@ -98,7 +95,6 @@ function z_input_filter($channel_id,$s,$type = 'text/bbcode') {
if($type == 'application/x-pdl')
return escape_tags($s);
- $a = get_app();
if(App::$is_sys) {
return $s;
}
@@ -326,6 +322,15 @@ function autoname($len) {
function xmlify($str) {
$buffer = '';
+ if(is_array($str)) {
+
+ // allow to fall through so we ge a PHP error, as the log statement will
+ // probably get lost in the noise unless we're specifically looking for it.
+
+ btlogger('xmlify called with array: ' . print_r($str,true), LOGGER_NORMAL, LOG_WARNING);
+ }
+
+
$len = mb_strlen($str);
for($x = 0; $x < $len; $x ++) {
$char = mb_substr($str,$x,1);
@@ -569,21 +574,25 @@ function attribute_contains($attr, $s) {
*/
function logger($msg, $level = LOGGER_NORMAL, $priority = LOG_INFO) {
- // turn off logger in install mode
- global $a;
- global $db;
- if((App::$module == 'install') || (! ($db && $db->connected)))
- return;
-
- $debugging = get_config('system', 'debugging');
- $loglevel = intval(get_config('system', 'loglevel'));
- $logfile = get_config('system', 'logfile');
+ if(App::$module == 'setup' && is_writable('install.log')) {
+ $debugging = true;
+ $logfile = 'install.log';
+ $loglevel = LOGGER_ALL;
+ }
+ else {
+ $debugging = get_config('system', 'debugging');
+ $loglevel = intval(get_config('system', 'loglevel'));
+ $logfile = get_config('system', 'logfile');
+ }
if((! $debugging) || (! $logfile) || ($level > $loglevel))
return;
$where = '';
+
+ // We require > 5.4 but leave the version check so that install issues (including version) can be logged
+
if(version_compare(PHP_VERSION, '5.4.0') >= 0) {
$stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2);
$where = basename($stack[0]['file']) . ':' . $stack[0]['line'] . ':' . $stack[1]['function'] . ': ';
@@ -592,7 +601,8 @@ function logger($msg, $level = LOGGER_NORMAL, $priority = LOG_INFO) {
$s = datetime_convert() . ':' . log_priority_str($priority) . ':' . session_id() . ':' . $where . $msg . PHP_EOL;
$pluginfo = array('filename' => $logfile, 'loglevel' => $level, 'message' => $s,'priority' => $priority, 'logged' => false);
- call_hooks('logger',$pluginfo);
+ if(! (App::$module == 'setup'))
+ call_hooks('logger',$pluginfo);
if(! $pluginfo['logged'])
@file_put_contents($pluginfo['filename'], $pluginfo['message'], FILE_APPEND);
@@ -650,11 +660,10 @@ function log_priority_str($priority) {
* @param int $level A log level.
*/
function dlogger($msg, $level = 0) {
+
// turn off logger in install mode
- global $a;
- global $db;
- if((App::$module == 'install') || (! ($db && $db->connected)))
+ if(App::$module == 'setup')
return;
$debugging = get_config('system','debugging');
@@ -725,6 +734,10 @@ function get_tags($s) {
// '=' needs to be avoided because when the replacement is made (in handle_tag()) it has to be ignored there
// Feel free to allow '=' if the issue with '=' is solved in handle_tag()
// added / ? and [ to avoid issues with hashchars in url paths
+
+ // added ; to single word tags to allow emojis and other unicode character constructs in bbcode
+ // (this would actually be &#xnnnnn; but the ampersand will have been escaped to &amp; by the time we see it.)
+
if(preg_match_all('/(?<![a-zA-Z0-9=\/\?])(@[^ \x0D\x0A,:?\[]+ [^ \x0D\x0A@,:?\[]+)/',$s,$match)) {
foreach($match[1] as $mtch) {
if(substr($mtch,-1,1) === '.')
@@ -737,7 +750,7 @@ function get_tags($s) {
// Otherwise pull out single word tags. These can be @nickname, @first_last
// and #hash tags.
- if(preg_match_all('/(?<![a-zA-Z0-9=\/\?])([@#][^ \x0D\x0A,;:?\[]+)/',$s,$match)) {
+ if(preg_match_all('/(?<![a-zA-Z0-9=\/\?\;])([@#][^ \x0D\x0A,;:?\[]+)/',$s,$match)) {
foreach($match[1] as $mtch) {
if(substr($mtch,-1,1) === '.')
$mtch = substr($mtch,0,-1);
@@ -801,7 +814,7 @@ function get_mentions($item,$tags) {
return $o;
foreach($tags as $x) {
- if($x['type'] == TERM_MENTION) {
+ if($x['ttype'] == TERM_MENTION) {
$o .= "\t\t" . '<link rel="mentioned" href="' . $x['url'] . '" />' . "\r\n";
$o .= "\t\t" . '<link rel="ostatus:attention" href="' . $x['url'] . '" />' . "\r\n";
}
@@ -812,7 +825,6 @@ function get_mentions($item,$tags) {
function contact_block() {
$o = '';
- $a = get_app();
if(! App::$profile['uid'])
return;
@@ -925,7 +937,7 @@ function micropro($contact, $redirect = false, $class = '', $textmode = false) {
function search($s,$id='search-box',$url='/search',$save = false) {
- $a = get_app();
+
return replace_macros(get_markup_template('searchbox.tpl'),array(
'$s' => $s,
'$id' => $id,
@@ -1070,7 +1082,7 @@ function get_mood_verbs() {
// Function to list all smilies, both internal and from addons
// Returns array with keys 'texts' and 'icons'
function list_smilies() {
- $a = get_app();
+
$texts = array(
'&lt;3',
'&lt;/3',
@@ -1104,9 +1116,7 @@ function list_smilies() {
':facepalm',
':like',
':dislike',
- 'red#matrix',
- 'red#',
- 'r#'
+ ':hubzilla'
);
$icons = array(
@@ -1142,12 +1152,24 @@ function list_smilies() {
'<img class="smiley" src="' . z_root() . '/images/smiley-facepalm.gif" alt=":facepalm" />',
'<img class="smiley" src="' . z_root() . '/images/like.gif" alt=":like" />',
'<img class="smiley" src="' . z_root() . '/images/dislike.gif" alt=":dislike" />',
- '<a href="http://getzot.com"><strong>red<img class="smiley bb_rm-logo" src="' . z_root() . '/images/rm-32.png" alt="' . urlencode('red#matrix') . '" />matrix</strong></a>',
- '<a href="http://getzot.com"><strong>red<img class="smiley bb_rm-logo" src="' . z_root() . '/images/rm-32.png" alt="' . urlencode('red#') . '" />matrix</strong></a>',
- '<a href="http://getzot.com"><strong>red<img class="smiley bb_rm-logo" src="' . z_root() . '/images/rm-32.png" alt="r#" />matrix</strong></a>'
+ '<img class="smiley" src="' . z_root() . '/images/hz-16.png" alt=":hubzilla" />',
);
+ $x = get_config('feature','emoji');
+ if($x === false)
+ $x = 1;
+ if($x) {
+ if(! App::$emojitab)
+ App::$emojitab = json_decode(file_get_contents('library/emoji.json'),true);
+ foreach(App::$emojitab as $e) {
+ if(strpos($e['shortname'],':tone') === 0)
+ continue;
+ $texts[] = $e['shortname'];
+ $icons[] = '<img class="smiley emoji" height="16" width="16" src="images/emoji/' . $e['unicode'] . '.png' . '" alt="' . $e['name'] . '" />';
+ }
+ }
+
$params = array('texts' => $texts, 'icons' => $icons);
call_hooks('smilie', $params);
@@ -1215,7 +1237,7 @@ function smile_unshield($m) {
* @param array $x
*/
function preg_heart($x) {
- $a = get_app();
+
if (strlen($x[1]) == 1)
return $x[0];
@@ -1321,7 +1343,7 @@ function theme_attachments(&$item) {
$title = t('Size') . ' ' . (($r['length']) ? userReadableSize($r['length']) : t('unknown'));
- require_once('include/identity.php');
+ require_once('include/channel.php');
if(is_foreigner($item['author_xchan']))
$url = $r['href'];
else
@@ -1455,40 +1477,8 @@ function generate_named_map($location) {
return (($arr['html']) ? $arr['html'] : $location);
}
-function format_event($jobject) {
- $event = array();
-
- $object = json_decode($jobject,true);
-
- //ensure compatibility with older items - this check can be removed at a later point
- if(array_key_exists('description', $object)) {
-
- $bd_format = t('l F d, Y \@ g:i A'); // Friday January 18, 2011 @ 8:01 AM
-
- $event['header'] = replace_macros(get_markup_template('event_item_header.tpl'),array(
- '$title' => bbcode($object['title']),
- '$dtstart_label' => t('Starts:'),
- '$dtstart_title' => datetime_convert('UTC', 'UTC', $object['start'], (($object['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' )),
- '$dtstart_dt' => (($object['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(), $object['start'] , $bd_format )) : day_translate(datetime_convert('UTC', 'UTC', $object['start'] , $bd_format))),
- '$finish' => (($object['nofinish']) ? false : true),
- '$dtend_label' => t('Finishes:'),
- '$dtend_title' => datetime_convert('UTC','UTC',$object['finish'], (($object['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' )),
- '$dtend_dt' => (($object['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(), $object['finish'] , $bd_format )) : day_translate(datetime_convert('UTC', 'UTC', $object['finish'] , $bd_format )))
- ));
-
- $event['content'] = replace_macros(get_markup_template('event_item_content.tpl'),array(
- '$description' => bbcode($object['description']),
- '$location_label' => t('Location:'),
- '$location' => bbcode($object['location'])
- ));
-
- }
-
- return $event;
-}
function prepare_body(&$item,$attach = false) {
- require_once('include/identity.php');
call_hooks('prepare_body_init', $item);
@@ -1498,7 +1488,7 @@ function prepare_body(&$item,$attach = false) {
if($is_photo) {
- $object = json_decode($item['object'],true);
+ $object = json_decode($item['obj'],true);
// if original photo width is <= 640px prepend it to item body
if($object['link'][0]['width'] && $object['link'][0]['width'] <= 640) {
@@ -1514,7 +1504,7 @@ function prepare_body(&$item,$attach = false) {
$s .= prepare_text($item['body'],$item['mimetype'], false);
- $event = (($item['obj_type'] === ACTIVITY_OBJ_EVENT) ? format_event($item['object']) : false);
+ $event = (($item['obj_type'] === ACTIVITY_OBJ_EVENT) ? format_event_obj($item['obj']) : false);
$prep_arr = array(
'item' => $item,
@@ -1718,7 +1708,6 @@ function feed_hublinks() {
/* return atom link elements for salmon endpoints */
function feed_salmonlinks($nick) {
- $a = get_app();
$salmon = '<link rel="salmon" href="' . xmlify(z_root() . '/salmon/' . $nick) . '" />' . "\n" ;
@@ -1786,7 +1775,7 @@ function mimetype_select($channel_id, $current = 'text/bbcode') {
'application/x-pdl'
);
- $a = get_app();
+
if(App::$is_sys) {
$x[] = 'application/x-php';
}
@@ -1819,7 +1808,6 @@ function mimetype_select($channel_id, $current = 'text/bbcode') {
function lang_selector() {
- global $a;
$langs = glob('view/*/hstrings.php');
@@ -2263,7 +2251,7 @@ function design_tools() {
$sys = false;
if(App::$is_sys && is_site_admin()) {
- require_once('include/identity.php');
+ require_once('include/channel.php');
$channel = get_sys_channel();
$sys = true;
}
@@ -2860,3 +2848,32 @@ function pdl_selector($uid, $current="") {
return $o;
}
+/*
+ * array flatten_array_recursive(array);
+ * returns a one-dimensional array from a multi-dimensional array
+ * empty values are discarded
+ * example: print_r(flatten_array_recursive(array('foo','bar',array('baz','blip',array('zob','glob')),'','grip')));
+ *
+ * Array ( [0] => foo [1] => bar [2] => baz [3] => blip [4] => zob [5] => glob [6] => grip )
+ *
+ */
+
+function flatten_array_recursive($arr) {
+ $ret = array();
+
+ if(! $arr)
+ return $ret;
+
+ foreach($arr as $a) {
+ if(is_array($a)) {
+ $tmp = flatten_array_recursive($a);
+ if($tmp) {
+ $ret = array_merge($ret,$tmp);
+ }
+ }
+ elseif($a) {
+ $ret[] = $a;
+ }
+ }
+ return($ret);
+}
diff --git a/include/widgets.php b/include/widgets.php
index 2641a718e..3ca189af0 100644
--- a/include/widgets.php
+++ b/include/widgets.php
@@ -8,17 +8,17 @@
require_once('include/dir_fns.php');
require_once('include/contact_widgets.php');
require_once('include/attach.php');
-require_once('include/Contact.php');
+
function widget_profile($args) {
- $block = (((get_config('system', 'block_public')) && (! local_channel()) && (! remote_channel())) ? true : false);
+ $block = observer_prohibited();
return profile_sidebar(App::$profile, $block, true);
}
function widget_zcard($args) {
- $block = (((get_config('system', 'block_public')) && (! local_channel()) && (! remote_channel())) ? true : false);
+ $block = observer_prohibited();
$channel = channelx_by_n(App::$profile_uid);
return get_zcard($channel,get_observer_hash(),array('width' => 875));
}
@@ -212,13 +212,13 @@ function widget_savedsearch($arr) {
$search = ((x($_GET,'search')) ? $_GET['search'] : '');
if(x($_GET,'searchsave') && $search) {
- $r = q("select * from `term` where `uid` = %d and `type` = %d and `term` = '%s' limit 1",
+ $r = q("select * from `term` where `uid` = %d and `ttype` = %d and `term` = '%s' limit 1",
intval(local_channel()),
intval(TERM_SAVEDSEARCH),
dbesc($search)
);
if(! $r) {
- q("insert into `term` ( `uid`,`type`,`term` ) values ( %d, %d, '%s') ",
+ q("insert into `term` ( `uid`,`ttype`,`term` ) values ( %d, %d, '%s') ",
intval(local_channel()),
intval(TERM_SAVEDSEARCH),
dbesc($search)
@@ -227,7 +227,7 @@ function widget_savedsearch($arr) {
}
if(x($_GET,'searchremove') && $search) {
- q("delete from `term` where `uid` = %d and `type` = %d and `term` = '%s'",
+ q("delete from `term` where `uid` = %d and `ttype` = %d and `term` = '%s'",
intval(local_channel()),
intval(TERM_SAVEDSEARCH),
dbesc($search)
@@ -254,7 +254,7 @@ function widget_savedsearch($arr) {
$o = '';
- $r = q("select `tid`,`term` from `term` WHERE `uid` = %d and `type` = %d ",
+ $r = q("select `tid`,`term` from `term` WHERE `uid` = %d and `ttype` = %d ",
intval(local_channel()),
intval(TERM_SAVEDSEARCH)
);
@@ -296,7 +296,7 @@ function widget_filer($arr) {
$selected = ((x($_REQUEST,'file')) ? $_REQUEST['file'] : '');
$terms = array();
- $r = q("select distinct(term) from term where uid = %d and type = %d order by term asc",
+ $r = q("select distinct(term) from term where uid = %d and ttype = %d order by term asc",
intval(local_channel()),
intval(TERM_FILE)
);
@@ -369,7 +369,7 @@ function widget_fullprofile($arr) {
if(! App::$profile['profile_uid'])
return;
- $block = (((get_config('system', 'block_public')) && (! local_channel()) && (! remote_channel())) ? true : false);
+ $block = observer_prohibited();
return profile_sidebar(App::$profile, $block);
}
@@ -379,7 +379,7 @@ function widget_shortprofile($arr) {
if(! App::$profile['profile_uid'])
return;
- $block = (((get_config('system', 'block_public')) && (! local_channel()) && (! remote_channel())) ? true : false);
+ $block = observer_prohibited();
return profile_sidebar(App::$profile, $block, true, true);
}
@@ -771,7 +771,6 @@ function widget_eventstools($arr) {
}
function widget_design_tools($arr) {
- $a = get_app();
// mod menu doesn't load a profile. For any modules which load a profile, check it.
// otherwise local_channel() is sufficient for permissions.
@@ -800,13 +799,14 @@ function widget_photo_albums($arr) {
if((! $channelx) || (! perm_is_allowed(App::$profile['profile_uid'], get_observer_hash(), 'view_storage')))
return '';
require_once('include/photos.php');
+ $sortkey = ((array_key_exists('sortkey',$arr)) ? $arr['sortkey'] : 'album');
+ $direction = ((array_key_exists('direction',$arr)) ? $arr['direction'] : 'asc');
- return photos_album_widget($channelx, App::get_observer());
+ return photos_album_widget($channelx, App::get_observer(),$sortkey,$direction);
}
function widget_vcard($arr) {
- require_once ('include/Contact.php');
return vcard_from_xchan('', App::get_observer());
}
@@ -835,8 +835,7 @@ function widget_menu_preview($arr) {
function widget_chatroom_list($arr) {
- require_once("include/chat.php");
- $r = chatroom_list(App::$profile['profile_uid']);
+ $r = Zotlabs\Lib\Chatroom::roomlist(App::$profile['profile_uid']);
if($r) {
return replace_macros(get_markup_template('chatroomlist.tpl'), array(
@@ -857,6 +856,78 @@ function widget_chatroom_members() {
return $o;
}
+function widget_wiki_list($arr) {
+
+ require_once("include/wiki.php");
+ $channel = null;
+ if (argc() < 2 && local_channel()) {
+ // This should not occur because /wiki should redirect to /wiki/channel ...
+ $channel = \App::get_channel();
+ } else {
+ $channel = get_channel_by_nick(argv(1)); // Channel being viewed by observer
+ }
+ if (!$channel) {
+ return '';
+ }
+ $wikis = wiki_list($channel, get_observer_hash());
+ if ($wikis) {
+ return replace_macros(get_markup_template('wikilist.tpl'), array(
+ '$header' => t('Wiki List'),
+ '$channel' => $channel['channel_address'],
+ '$wikis' => $wikis['wikis'],
+ // If the observer is the local channel owner, show the wiki controls
+ '$showControls' => ((local_channel() === intval($channel['channel_id'])) ? true : false)
+ ));
+ }
+ return '';
+}
+
+function widget_wiki_pages($arr) {
+
+ require_once("include/wiki.php");
+ $channelname = ((array_key_exists('channel',$arr)) ? $arr['channel'] : '');
+ $wikiname = '';
+ if (array_key_exists('refresh', $arr)) {
+ $not_refresh = (($arr['refresh']=== true) ? false : true);
+ } else {
+ $not_refresh = true;
+ }
+ $pages = array();
+ if (!array_key_exists('resource_id', $arr)) {
+ $hide = true;
+ } else {
+ $p = wiki_page_list($arr['resource_id']);
+ if ($p['pages']) {
+ $pages = $p['pages'];
+ $w = $p['wiki'];
+ // Wiki item record is $w['wiki']
+ $wikiname = $w['urlName'];
+ if (!$wikiname) {
+ $wikiname = '';
+ }
+ }
+ }
+ return replace_macros(get_markup_template('wiki_page_list.tpl'), array(
+ '$hide' => $hide,
+ '$not_refresh' => $not_refresh,
+ '$header' => t('Wiki Pages'),
+ '$channel' => $channelname,
+ '$wikiname' => $wikiname,
+ '$pages' => $pages
+ ));
+}
+
+function widget_wiki_page_history($arr) {
+ require_once("include/wiki.php");
+ $pageUrlName = ((array_key_exists('pageUrlName', $arr)) ? $arr['pageUrlName'] : '');
+ $resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : '');
+ $pageHistory = wiki_page_history(array('resource_id' => $resource_id, 'pageUrlName' => $pageUrlName));
+
+ return replace_macros(get_markup_template('wiki_page_history.tpl'), array(
+ '$pageHistory' => $pageHistory['history']
+ ));
+}
+
function widget_bookmarkedchats($arr) {
if(! feature_enabled(App::$profile['profile_uid'],'ajaxchat'))
@@ -1052,7 +1123,7 @@ function widget_photo($arr) {
function widget_cover_photo($arr) {
- require_once('include/identity.php');
+ require_once('include/channel.php');
$o = '';
if(App::$module == 'channel' && $_REQUEST['mid'])
@@ -1129,7 +1200,7 @@ function widget_photo_rand($arr) {
$filtered = array();
if($ret['success'] && $ret['photos'])
foreach($ret['photos'] as $p)
- if($p['scale'] == $scale)
+ if($p['imgscale'] == $scale)
$filtered[] = $p['src'];
if($filtered) {
@@ -1381,7 +1452,7 @@ function widget_admin($arr) {
$aside = array(
'site' => array(z_root() . '/admin/site/', t('Site'), 'site'),
- 'users' => array(z_root() . '/admin/users/', t('Accounts'), 'users', 'pending-update', t('Member registrations waiting for confirmation')),
+ 'accounts' => array(z_root() . '/admin/accounts/', t('Accounts'), 'accounts', 'pending-update', t('Member registrations waiting for confirmation')),
'channels' => array(z_root() . '/admin/channels/', t('Channels'), 'channels'),
'security' => array(z_root() . '/admin/security/', t('Security'), 'security'),
'features' => array(z_root() . '/admin/features/', t('Features'), 'features'),
@@ -1400,7 +1471,7 @@ function widget_admin($arr) {
$plugins = array();
if($r) {
foreach ($r as $h){
- $plugin = $h['name'];
+ $plugin = $h['aname'];
$plugins[] = array(z_root() . '/admin/plugins/' . $plugin, $plugin, 'plugin');
// temp plugins with admin
App::$plugins_admin[] = $plugin;
@@ -1462,9 +1533,9 @@ function widget_album($args) {
$order = 'DESC';
- $r = q("SELECT p.resource_id, p.id, p.filename, p.type, p.scale, p.description, p.created FROM photo p INNER JOIN
- (SELECT resource_id, max(scale) scale FROM photo WHERE uid = %d AND album = '%s' AND scale <= 4 AND photo_usage IN ( %d, %d ) $sql_extra GROUP BY resource_id) ph
- ON (p.resource_id = ph.resource_id AND p.scale = ph.scale)
+ $r = q("SELECT p.resource_id, p.id, p.filename, p.mimetype, p.imgscale, p.description, p.created FROM photo p INNER JOIN
+ (SELECT resource_id, max(imgscale) imgscale FROM photo WHERE uid = %d AND album = '%s' AND imgscale <= 4 AND photo_usage IN ( %d, %d ) $sql_extra GROUP BY resource_id) ph
+ ON (p.resource_id = ph.resource_id AND p.imgscale = ph.imgscale)
ORDER BY created $order ",
intval($owner_uid),
dbesc($album),
@@ -1485,7 +1556,7 @@ function widget_album($args) {
else
$twist = 'rotright';
- $ext = $phototypes[$rr['type']];
+ $ext = $phototypes[$rr['mimetype']];
$imgalt_e = $rr['filename'];
$desc_e = $rr['description'];
@@ -1498,7 +1569,7 @@ function widget_album($args) {
'twist' => ' ' . $twist . rand(2,4),
'link' => $imagelink,
'title' => t('View Photo'),
- 'src' => z_root() . '/photo/' . $rr['resource_id'] . '-' . $rr['scale'] . '.' .$ext,
+ 'src' => z_root() . '/photo/' . $rr['resource_id'] . '-' . $rr['imgscale'] . '.' .$ext,
'alt' => $imgalt_e,
'desc'=> $desc_e,
'ext' => $ext,
diff --git a/include/wiki.php b/include/wiki.php
new file mode 100644
index 000000000..4aa3fc1b4
--- /dev/null
+++ b/include/wiki.php
@@ -0,0 +1,399 @@
+<?php
+/**
+ * @file include/wiki.php
+ * @brief Wiki related functions.
+ */
+
+use \Zotlabs\Storage\GitRepo as GitRepo;
+define ( 'WIKI_ITEM_RESOURCE_TYPE', 'wiki' );
+
+function wiki_list($channel, $observer_hash) {
+ $sql_extra = item_permissions_sql($channel['channel_id'], $observer_hash);
+ $wikis = q("SELECT * FROM item WHERE resource_type = '%s' AND mid = parent_mid AND uid = %d AND item_deleted = 0 $sql_extra",
+ dbesc(WIKI_ITEM_RESOURCE_TYPE),
+ intval($channel['channel_id'])
+ );
+ foreach($wikis as &$w) {
+ $w['rawName'] = get_iconfig($w, 'wiki', 'rawName');
+ $w['htmlName'] = get_iconfig($w, 'wiki', 'htmlName');
+ $w['urlName'] = get_iconfig($w, 'wiki', 'urlName');
+ $w['path'] = get_iconfig($w, 'wiki', 'path');
+ }
+ // TODO: query db for wikis the observer can access. Return with two lists, for read and write access
+ return array('wikis' => $wikis);
+}
+
+function wiki_page_list($resource_id) {
+ // TODO: Create item table records for pages so that metadata like title can be applied
+ $w = wiki_get_wiki($resource_id);
+ if (!$w['path']) {
+ return array('pages' => null, 'wiki' => null);
+ }
+ $pages = array();
+ if (is_dir($w['path']) === true) {
+ $files = array_diff(scandir($w['path']), array('.', '..', '.git'));
+ // TODO: Check that the files are all text files
+
+ foreach($files as $file) {
+ // strip the .md file extension and unwrap URL encoding to leave HTML encoded name
+ $pages[] = array('title' => urldecode(substr($file, 0, -3)), 'url' => urlencode(substr($file, 0, -3)));
+ }
+ }
+
+ return array('pages' => $pages, 'wiki' => $w);
+}
+
+function wiki_init_wiki($channel, $wiki) {
+ // Store the path as a relative path, but pass absolute path to mkdir
+ $path = 'store/[data]/git/'.$channel['channel_address'].'/wiki/'.$wiki['urlName'];
+ if (!os_mkdir(__DIR__ . '/../' . $path, 0770, true)) {
+ logger('Error creating wiki path: ' . $path);
+ return null;
+ }
+ // Create GitRepo object
+ $git = new GitRepo($channel['channel_address'], null, false, $name, __DIR__ . '/../' . $path);
+ if(!$git->initRepo()) {
+ logger('Error creating new git repo in ' . $git->path);
+ return null;
+ }
+
+ return array('path' => $path);
+}
+
+function wiki_create_wiki($channel, $observer_hash, $wiki, $acl) {
+ $wikiinit = wiki_init_wiki($channel, $wiki);
+ if (!$wikiinit['path']) {
+ notice('Error creating wiki');
+ return array('item' => null, 'success' => false);
+ }
+ $path = $wikiinit['path'];
+ // Generate unique resource_id using the same method as item_message_id()
+ do {
+ $dups = false;
+ $resource_id = random_string();
+ $r = q("SELECT mid FROM item WHERE resource_id = '%s' AND resource_type = '%s' AND uid = %d LIMIT 1",
+ dbesc($resource_id),
+ dbesc(WIKI_ITEM_RESOURCE_TYPE),
+ intval($channel['channel_id'])
+ );
+ if (count($r))
+ $dups = true;
+ } while ($dups == true);
+ $ac = $acl->get();
+ $mid = item_message_id();
+ $arr = array(); // Initialize the array of parameters for the post
+ $item_hidden = 0; // TODO: Allow form creator to send post to ACL about new game automatically
+ $wiki_url = z_root() . '/wiki/' . $channel['channel_address'] . '/' . $wiki['urlName'];
+ $arr['aid'] = $channel['channel_account_id'];
+ $arr['uid'] = $channel['channel_id'];
+ $arr['mid'] = $mid;
+ $arr['parent_mid'] = $mid;
+ $arr['item_hidden'] = $item_hidden;
+ $arr['resource_type'] = WIKI_ITEM_RESOURCE_TYPE;
+ $arr['resource_id'] = $resource_id;
+ $arr['owner_xchan'] = $channel['channel_hash'];
+ $arr['author_xchan'] = $observer_hash;
+ $arr['plink'] = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . $arr['mid'];
+ $arr['llink'] = $arr['plink'];
+ $arr['title'] = $wiki['htmlName']; // name of new wiki;
+ $arr['allow_cid'] = $ac['allow_cid'];
+ $arr['allow_gid'] = $ac['allow_gid'];
+ $arr['deny_cid'] = $ac['deny_cid'];
+ $arr['deny_gid'] = $ac['deny_gid'];
+ $arr['item_wall'] = 1;
+ $arr['item_origin'] = 1;
+ $arr['item_thread_top'] = 1;
+ $arr['item_private'] = intval($acl->is_private());
+ $arr['verb'] = ACTIVITY_CREATE;
+ $arr['obj_type'] = ACTIVITY_OBJ_WIKI;
+ $arr['body'] = '[table][tr][td][h1]New Wiki[/h1][/td][/tr][tr][td][zrl=' . $wiki_url . ']' . $wiki['htmlName'] . '[/zrl][/td][/tr][/table]';
+ // Save the path using iconfig. The file path should not be shared with other hubs
+ if (!set_iconfig($arr, 'wiki', 'path', $path, false)) {
+ return array('item' => null, 'success' => false);
+ }
+ // Save the wiki name information using iconfig. This is shareable.
+ if (!set_iconfig($arr, 'wiki', 'rawName', $wiki['rawName'], true)) {
+ return array('item' => null, 'success' => false);
+ }
+ if (!set_iconfig($arr, 'wiki', 'htmlName', $wiki['htmlName'], true)) {
+ return array('item' => null, 'success' => false);
+ }
+ if (!set_iconfig($arr, 'wiki', 'urlName', $wiki['urlName'], true)) {
+ return array('item' => null, 'success' => false);
+ }
+ $post = item_store($arr);
+ $item_id = $post['item_id'];
+
+ if ($item_id) {
+ proc_run('php', "include/notifier.php", "activity", $item_id);
+ return array('item' => $arr, 'success' => true);
+ } else {
+ return array('item' => null, 'success' => false);
+ }
+}
+
+function wiki_delete_wiki($resource_id) {
+
+ $w = wiki_get_wiki($resource_id);
+ $item = $w['wiki'];
+ if (!$item || !$w['path']) {
+ return array('item' => null, 'success' => false);
+ } else {
+ $drop = drop_item($item['id'], false, DROPITEM_NORMAL, true);
+ $pathdel = rrmdir($w['path']);
+ if ($pathdel) {
+ info('Wiki files deleted successfully');
+ }
+ return array('item' => $item, 'success' => (($drop === 1 && $pathdel) ? true : false));
+ }
+}
+
+function wiki_get_wiki($resource_id) {
+ $item = q("SELECT * FROM item WHERE resource_type = '%s' AND resource_id = '%s' AND item_deleted = 0 limit 1",
+ dbesc(WIKI_ITEM_RESOURCE_TYPE),
+ dbesc($resource_id)
+ );
+ if (!$item) {
+ return array('wiki' => null, 'path' => null);
+ } else {
+ $w = $item[0]; // wiki item table record
+ // Get wiki metadata
+ $rawName = get_iconfig($w, 'wiki', 'rawName');
+ $htmlName = get_iconfig($w, 'wiki', 'htmlName');
+ $urlName = get_iconfig($w, 'wiki', 'urlName');
+ $path = get_iconfig($w, 'wiki', 'path');
+ if (!realpath(__DIR__ . '/../' . $path)) {
+ return array('wiki' => null, 'path' => null);
+ }
+ // Path to wiki exists
+ $abs_path = realpath(__DIR__ . '/../' . $path);
+ return array( 'wiki' => $w,
+ 'path' => $abs_path,
+ 'rawName' => $rawName,
+ 'htmlName' => $htmlName,
+ 'urlName' => $urlName
+ );
+ }
+}
+
+function wiki_exists_by_name($uid, $urlName) {
+ $item = q("SELECT id,resource_id FROM item WHERE resource_type = '%s' AND title = '%s' AND uid = '%s' AND item_deleted = 0 limit 1",
+ dbesc(WIKI_ITEM_RESOURCE_TYPE),
+ dbesc(escape_tags(urldecode($urlName))),
+ dbesc($uid)
+ );
+ if (!$item) {
+ return array('id' => null, 'resource_id' => null);
+ } else {
+ return array('id' => $item[0]['id'], 'resource_id' => $item[0]['resource_id']);
+ }
+}
+
+function wiki_get_permissions($resource_id, $owner_id, $observer_hash) {
+ // TODO: For now, only the owner can edit
+ $sql_extra = item_permissions_sql($owner_id, $observer_hash);
+ $r = q("SELECT * FROM item WHERE resource_type = '%s' AND resource_id = '%s' $sql_extra LIMIT 1",
+ dbesc(WIKI_ITEM_RESOURCE_TYPE),
+ dbesc($resource_id)
+ );
+
+ if (!$r) {
+ return array('read' => false, 'write' => false, 'success' => true);
+ } else {
+ $perms = get_all_perms($owner_id, $observer_hash);
+ // TODO: Create a new permission setting for wiki analogous to webpages. Until
+ // then, use webpage permissions
+ if (!$perms['write_pages']) {
+ $write = false;
+ } else {
+ $write = true;
+ }
+ return array('read' => true, 'write' => $write, 'success' => true);
+ }
+}
+
+function wiki_create_page($name, $resource_id) {
+ $w = wiki_get_wiki($resource_id);
+ if (!$w['path']) {
+ return array('page' => null, 'wiki' => null, 'message' => 'Wiki not found.', 'success' => false);
+ }
+ $page = array('rawName' => $name, 'htmlName' => escape_tags($name), 'urlName' => urlencode(escape_tags($name)), 'fileName' => urlencode(escape_tags($name)).'.md');
+ $page_path = $w['path'] . '/' . $page['fileName'];
+ if (is_file($page_path)) {
+ return array('page' => null, 'wiki' => null, 'message' => 'Page already exists.', 'success' => false);
+ }
+ // Create the page file in the wiki repo
+ if(!touch($page_path)) {
+ return array('page' => null, 'wiki' => null, 'message' => 'Page file cannot be created.', 'success' => false);
+ } else {
+ return array('page' => $page, 'wiki' => $w, 'message' => '', 'success' => true);
+ }
+
+}
+
+function wiki_get_page_content($arr) {
+ $pageUrlName = ((array_key_exists('pageUrlName',$arr)) ? $arr['pageUrlName'] : '');
+ $resource_id = ((array_key_exists('resource_id',$arr)) ? $arr['resource_id'] : '');
+ $w = wiki_get_wiki($resource_id);
+ if (!$w['path']) {
+ return array('content' => null, 'message' => 'Error reading wiki', 'success' => false);
+ }
+ $page_path = $w['path'].'/'.$pageUrlName.'.md';
+ if (is_readable($page_path) === true) {
+ if(filesize($page_path) === 0) {
+ $content = '';
+ } else {
+ $content = file_get_contents($page_path);
+ if(!$content) {
+ return array('content' => null, 'message' => 'Error reading page content', 'success' => false);
+ }
+ }
+ // TODO: Check that the files are all text files
+ return array('content' => json_encode($content), 'message' => '', 'success' => true);
+ }
+}
+
+function wiki_page_history($arr) {
+ $pageUrlName = ((array_key_exists('pageUrlName',$arr)) ? $arr['pageUrlName'] : '');
+ $resource_id = ((array_key_exists('resource_id',$arr)) ? $arr['resource_id'] : '');
+ $w = wiki_get_wiki($resource_id);
+ if (!$w['path']) {
+ return array('history' => null, 'message' => 'Error reading wiki', 'success' => false);
+ }
+ $page_path = $w['path'].'/'.$pageUrlName.'.md';
+ if (!is_readable($page_path) === true) {
+ return array('history' => null, 'message' => 'Cannot read wiki page: ' . $page_path, 'success' => false);
+ }
+ $reponame = ((array_key_exists('title', $w['wiki'])) ? $w['wiki']['title'] : 'repo');
+ if($reponame === '') {
+ $reponame = 'repo';
+ }
+ $git = new GitRepo('', null, false, $w['wiki']['title'], $w['path']);
+ try {
+ $gitlog = $git->git->log('', $page_path , array('limit' => 500));
+ return array('history' => $gitlog, 'message' => '', 'success' => true);
+ } catch (\PHPGit\Exception\GitException $e) {
+ return array('history' => null, 'message' => 'GitRepo error thrown', 'success' => false);
+ }
+}
+
+function wiki_save_page($arr) {
+ $pageUrlName = ((array_key_exists('pageUrlName',$arr)) ? $arr['pageUrlName'] : '');
+ $content = ((array_key_exists('content',$arr)) ? purify_html($arr['content']) : '');
+ $resource_id = ((array_key_exists('resource_id',$arr)) ? $arr['resource_id'] : '');
+ $w = wiki_get_wiki($resource_id);
+ if (!$w['path']) {
+ return array('message' => 'Error reading wiki', 'success' => false);
+ }
+ $page_path = $w['path'].'/'.$pageUrlName.'.md';
+ if (is_writable($page_path) === true) {
+ if(!file_put_contents($page_path, $content)) {
+ return array('message' => 'Error writing to page file', 'success' => false);
+ }
+ return array('message' => '', 'success' => true);
+ } else {
+ return array('message' => 'Page file not writable', 'success' => false);
+ }
+}
+
+function wiki_delete_page($arr) {
+ $pageUrlName = ((array_key_exists('pageUrlName',$arr)) ? $arr['pageUrlName'] : '');
+ $resource_id = ((array_key_exists('resource_id',$arr)) ? $arr['resource_id'] : '');
+ $w = wiki_get_wiki($resource_id);
+ if (!$w['path']) {
+ return array('message' => 'Error reading wiki', 'success' => false);
+ }
+ $page_path = $w['path'].'/'.$pageUrlName.'.md';
+ if (is_writable($page_path) === true) {
+ if(!unlink($page_path)) {
+ return array('message' => 'Error deleting page file', 'success' => false);
+ }
+ return array('message' => '', 'success' => true);
+ } else {
+ return array('message' => 'Page file not writable', 'success' => false);
+ }
+}
+
+function wiki_revert_page($arr) {
+ $pageUrlName = ((array_key_exists('pageUrlName',$arr)) ? $arr['pageUrlName'] : '');
+ $resource_id = ((array_key_exists('resource_id',$arr)) ? $arr['resource_id'] : '');
+ $commitHash = ((array_key_exists('commitHash',$arr)) ? $arr['commitHash'] : null);
+ if (! $commitHash) {
+ return array('content' => $content, 'message' => 'No commit has provided', 'success' => false);
+ }
+ $w = wiki_get_wiki($resource_id);
+ if (!$w['path']) {
+ return array('content' => $content, 'message' => 'Error reading wiki', 'success' => false);
+ }
+ $page_path = $w['path'].'/'.$pageUrlName.'.md';
+ if (is_writable($page_path) === true) {
+
+ $reponame = ((array_key_exists('title', $w['wiki'])) ? urlencode($w['wiki']['title']) : 'repo');
+ if($reponame === '') {
+ $reponame = 'repo';
+ }
+ $git = new GitRepo($observer['xchan_addr'], null, false, $w['wiki']['title'], $w['path']);
+ $content = null;
+ try {
+ $git->setIdentity($observer['xchan_name'], $observer['xchan_addr']);
+ foreach ($git->git->tree($commitHash) as $object) {
+ if ($object['type'] == 'blob' && $object['file'] === $pageUrlName.'.md' ) {
+ $content = $git->git->cat->blob($object['hash']);
+ }
+ }
+ } catch (\PHPGit\Exception\GitException $e) {
+ json_return_and_die(array('content' => $content, 'message' => 'GitRepo error thrown', 'success' => false));
+ }
+ return array('content' => $content, 'message' => '', 'success' => true);
+ } else {
+ return array('content' => $content, 'message' => 'Page file not writable', 'success' => false);
+ }
+}
+
+function wiki_git_commit($arr) {
+ $files = ((array_key_exists('files', $arr)) ? $arr['files'] : null);
+ $commit_msg = ((array_key_exists('commit_msg', $arr)) ? $arr['commit_msg'] : 'Repo updated');
+ $resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : json_return_and_die(array('message' => 'Wiki resource_id required for git commit', 'success' => false)));
+ $observer = ((array_key_exists('observer', $arr)) ? $arr['observer'] : json_return_and_die(array('message' => 'Observer required for git commit', 'success' => false)));
+ $w = wiki_get_wiki($resource_id);
+ if (!$w['path']) {
+ return array('message' => 'Error reading wiki', 'success' => false);
+ }
+ $reponame = ((array_key_exists('title', $w['wiki'])) ? urlencode($w['wiki']['title']) : 'repo');
+ if($reponame === '') {
+ $reponame = 'repo';
+ }
+ $git = new GitRepo($observer['xchan_addr'], null, false, $w['wiki']['title'], $w['path']);
+ try {
+ $git->setIdentity($observer['xchan_name'], $observer['xchan_addr']);
+ if ($files === null) {
+ $options = array('all' => true); // git commit option to include all changes
+ } else {
+ $options = array(); // git commit options
+ foreach ($files as $file) {
+ if (!$git->git->add($file)) { // add specified files to the git repo stage
+ if (!$git->git->reset->hard()) {
+ json_return_and_die(array('message' => 'Error adding file to git stage: ' . $file . '. Error resetting git repo.', 'success' => false));
+ }
+ json_return_and_die(array('message' => 'Error adding file to git stage: ' . $file, 'success' => false));
+ }
+ }
+ }
+ if ($git->commit($commit_msg, $options)) {
+ json_return_and_die(array('message' => 'Wiki repo commit succeeded', 'success' => true));
+ } else {
+ json_return_and_die(array('message' => 'Wiki repo commit failed', 'success' => false));
+ }
+ } catch (\PHPGit\Exception\GitException $e) {
+ json_return_and_die(array('message' => 'GitRepo error thrown', 'success' => false));
+ }
+}
+
+function wiki_generate_page_filename($name) {
+ $file = urlencode(escape_tags($name));
+ if( $file === '') {
+ return null;
+ } else {
+ return $file . '.md';
+ }
+} \ No newline at end of file
diff --git a/include/zot.php b/include/zot.php
index 8adc74ffa..043139e2f 100644
--- a/include/zot.php
+++ b/include/zot.php
@@ -329,8 +329,12 @@ function zot_refresh($them, $channel = null, $force = false) {
return false;
}
+ $token = random_string();
+
$postvars = array();
+ $postvars['token'] = $token;
+
if($channel) {
$postvars['target'] = $channel['channel_guid'];
$postvars['target_sig'] = $channel['channel_guid_sig'];
@@ -343,9 +347,9 @@ function zot_refresh($them, $channel = null, $force = false) {
$postvars['guid_hash'] = $them['xchan_hash'];
if (array_key_exists('xchan_guid',$them) && $them['xchan_guid']
&& array_key_exists('xchan_guid_sig',$them) && $them['xchan_guid_sig']) {
-
$postvars['guid'] = $them['xchan_guid'];
$postvars['guid_sig'] = $them['xchan_guid_sig'];
+
}
$rhs = '/.well-known/zot-info';
@@ -363,6 +367,22 @@ function zot_refresh($them, $channel = null, $force = false) {
return false;
}
+ $signed_token = ((is_array($j) && array_key_exists('signed_token',$j)) ? $j['signed_token'] : null);
+ if($signed_token) {
+ $valid = rsa_verify('token.' . $token,base64url_decode($signed_token),$j['key']);
+ if(! $valid) {
+ logger('invalid signed token: ' . $url . $rhs, LOGGER_NORMAL, LOG_ERR);
+ return false;
+ }
+ }
+ else {
+ logger('No signed token from ' . $url . $rhs, LOGGER_NORMAL, LOG_WARNING);
+ // after 2017-01-01 this will be a hard error unless you over-ride it.
+ if((time() > 1483228800) && (! get_config('system','allow_unsigned_zotfinger'))) {
+ return false;
+ }
+ }
+
$x = import_xchan($j, (($force) ? UPDATE_FLAGS_FORCED : UPDATE_FLAGS_UPDATED));
if(! $x['success'])
@@ -453,7 +473,7 @@ function zot_refresh($them, $channel = null, $force = false) {
else {
// if we were just granted read stream permission and didn't have it before, try to pull in some posts
if((! ($r[0]['abook_their_perms'] & PERMS_R_STREAM)) && ($their_perms & PERMS_R_STREAM))
- proc_run('php','include/onepoll.php',$r[0]['abook_id']);
+ Zotlabs\Daemon\Master::Summon(array('Onepoll',$r[0]['abook_id']));
}
}
else {
@@ -504,9 +524,8 @@ function zot_refresh($them, $channel = null, $force = false) {
if($new_connection) {
if($new_perms != $previous_perms)
- proc_run('php','include/notifier.php','permission_create',$new_connection[0]['abook_id']);
- require_once('include/enotify.php');
- notification(array(
+ Zotlabs\Daemon\Master::Summon(array('Notifier','permission_create',$new_connection[0]['abook_id']));
+ Zotlabs\Lib\Enotify::submit(array(
'type' => NOTIFY_INTRO,
'from_xchan' => $x['hash'],
'to_xchan' => $channel['channel_hash'],
@@ -516,7 +535,17 @@ function zot_refresh($them, $channel = null, $force = false) {
if($their_perms & PERMS_R_STREAM) {
if(($channel['channel_w_stream'] & PERMS_PENDING)
|| (! intval($new_connection[0]['abook_pending'])) )
- proc_run('php','include/onepoll.php',$new_connection[0]['abook_id']);
+ Zotlabs\Daemon\Master::Summon(array('Onepoll',$new_connection[0]['abook_id']));
+ }
+
+
+ /** If there is a default group for this channel, add this connection to it */
+ $default_group = $channel['channel_default_group'];
+ if($default_group) {
+ require_once('include/group.php');
+ $g = group_rec_byhash($channel['channel_id'],$default_group);
+ if($g)
+ group_add_member($channel['channel_id'],'',$x['hash'],$g['id']);
}
unset($new_connection[0]['abook_id']);
@@ -1027,8 +1056,9 @@ function zot_process_response($hub, $arr, $outq) {
/**
* @brief
*
- * We received a notification packet (in mod/post.php) that a message is waiting for us, and we've verified the sender.
- * Now send back a pickup message, using our message tracking ID ($arr['secret']), which we will sign with our site private key.
+ * We received a notification packet (in mod_post) that a message is waiting for us, and we've verified the sender.
+ * Now send back a pickup message, using our message tracking ID ($arr['secret']), which we will sign with our site
+ * private key.
* The entire pickup message is encrypted with the remote site's public key.
* If everything checks out on the remote end, we will receive back a packet containing one or more messages,
* which will be processed and delivered before this function ultimately returns.
@@ -1102,6 +1132,7 @@ function zot_fetch($arr) {
* * [1] => \e string $delivery_status
* * [2] => \e string $address
*/
+
function zot_import($arr, $sender_url) {
$data = json_decode($arr['body'], true);
@@ -1332,7 +1363,7 @@ function zot_import($arr, $sender_url) {
*/
function public_recips($msg) {
- require_once('include/identity.php');
+ require_once('include/channel.php');
$check_mentions = false;
$include_sys = false;
@@ -1494,7 +1525,7 @@ function public_recips($msg) {
/**
* @brief
*
- * This is the second part of public_recipes().
+ * This is the second part of public_recips().
* We'll find all the channels willing to accept public posts from us, then
* match them against the sender privacy scope and see who in that list that
* the sender is allowing.
@@ -1703,7 +1734,7 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
if((! $relay) && (! $request) && (! $local_public)
&& perm_is_allowed($channel['channel_id'],$sender['hash'],'send_stream')) {
- proc_run('php', 'include/notifier.php', 'request', $channel['channel_id'], $sender['hash'], $arr['parent_mid']);
+ Zotlabs\Daemon\Master::Summon(array('Notifier', 'request', $channel['channel_id'], $sender['hash'], $arr['parent_mid']));
}
continue;
}
@@ -1775,7 +1806,7 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
if($relay && $item_id) {
logger('process_delivery: invoking relay');
- proc_run('php','include/notifier.php','relay',intval($item_id));
+ Zotlabs\Daemon\Master::Summon(array('Notifier','relay',intval($item_id)));
$DR->update('relayed');
$result[] = $DR->get();
}
@@ -1858,7 +1889,7 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
if($relay && $item_id) {
logger('process_delivery: invoking relay');
- proc_run('php','include/notifier.php','relay',intval($item_id));
+ Zotlabs\Daemon\Master::Summon(array('Notifier','relay',intval($item_id)));
$DR->addto_update('relayed');
$result[] = $DR->get();
}
@@ -1932,7 +1963,7 @@ function remove_community_tag($sender, $arr, $uid) {
return;
}
- q("delete from term where uid = %d and oid = %d and otype = %d and type in ( %d, %d ) and term = '%s' and url = '%s'",
+ q("delete from term where uid = %d and oid = %d and otype = %d and ttype in ( %d, %d ) and term = '%s' and url = '%s'",
intval($uid),
intval($r[0]['id']),
intval(TERM_OBJ_POST),
@@ -2381,11 +2412,14 @@ function sync_locations($sender, $arr, $absolute = false) {
$current_site = false;
+ $t = datetime_convert('UTC','UTC','now - 15 minutes');
+
if(array_key_exists('site',$arr) && $location['url'] == $arr['site']['url']) {
- q("update hubloc set hubloc_connected = '%s', hubloc_updated = '%s' where hubloc_id = %d",
+ q("update hubloc set hubloc_connected = '%s', hubloc_updated = '%s' where hubloc_id = %d and hubloc_connected < '%s'",
dbesc(datetime_convert()),
dbesc(datetime_convert()),
- intval($r[0]['hubloc_id'])
+ intval($r[0]['hubloc_id']),
+ dbesc($t)
);
$current_site = true;
}
@@ -2945,8 +2979,6 @@ function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) {
if(UNO)
return;
- $a = get_app();
-
logger('build_sync_packet');
if($packet)
@@ -3029,7 +3061,7 @@ function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) {
}
if($groups_changed) {
- $r = q("select hash as collection, visible, deleted, name from groups where uid = %d",
+ $r = q("select hash as collection, visible, deleted, gname as name from groups where uid = %d",
intval($uid)
);
if($r)
@@ -3060,7 +3092,7 @@ function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) {
'msg' => json_encode($info)
));
- proc_run('php', 'include/deliver.php', $hash);
+ Zotlabs\Daemon\Master::Summon(array('Deliver', $hash));
$total = $total - 1;
if($interval && $total)
@@ -3222,7 +3254,6 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
$clean = array();
if($abook['abook_xchan'] && $abook['entry_deleted']) {
logger('process_channel_sync_delivery: removing abook entry for ' . $abook['abook_xchan']);
- require_once('include/Contact.php');
$r = q("select abook_id, abook_feed from abook where abook_xchan = '%s' and abook_channel = %d and abook_self = 0 limit 1",
dbesc($abook['abook_xchan']),
@@ -3323,10 +3354,10 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
}
}
if($found) {
- if(($y['name'] != $cl['name'])
+ if(($y['gname'] != $cl['name'])
|| ($y['visible'] != $cl['visible'])
|| ($y['deleted'] != $cl['deleted'])) {
- q("update groups set name = '%s', visible = %d, deleted = %d where hash = '%s' and uid = %d",
+ q("update groups set gname = '%s', visible = %d, deleted = %d where hash = '%s' and uid = %d",
dbesc($cl['name']),
intval($cl['visible']),
intval($cl['deleted']),
@@ -3342,7 +3373,7 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
}
}
if(! $found) {
- $r = q("INSERT INTO `groups` ( hash, uid, visible, deleted, name )
+ $r = q("INSERT INTO `groups` ( hash, uid, visible, deleted, gname )
VALUES( '%s', %d, %d, %d, '%s' ) ",
dbesc($cl['collection']),
intval($channel['channel_id']),
@@ -3449,7 +3480,7 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
if(array_key_exists('profile',$arr) && is_array($arr['profile']) && count($arr['profile'])) {
- $disallowed = array('id','aid','uid');
+ $disallowed = array('id','aid','uid','guid');
foreach($arr['profile'] as $profile) {
$x = q("select * from profile where profile_guid = '%s' and uid = %d limit 1",
@@ -3473,13 +3504,22 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
foreach($profile as $k => $v) {
if(in_array($k,$disallowed))
continue;
+
+ if($k === 'name')
+ $clean['fullname'] = $v;
+ elseif($k === 'with')
+ $clean['partner'] = $v;
+ elseif($k === 'work')
+ $clean['employment'] = $v;
+ elseif(array_key_exists($k,$x[0]))
+ $clean[$k] = $v;
- $clean[$k] = $v;
/**
- * @TODO check if these are allowed, otherwise we'll error
+ * @TODO
* We also need to import local photos if a custom photo is selected
*/
}
+
if(count($clean)) {
foreach($clean as $k => $v) {
$r = dbq("UPDATE profile set `" . dbesc($k) . "` = '" . dbesc($v)
@@ -3652,7 +3692,7 @@ function zot_reply_message_request($data) {
* invoke delivery to send out the notify packet
*/
- proc_run('php', 'include/deliver.php', $hash);
+ Zotlabs\Daemon\Master::Summon(array('Deliver', $hash));
}
}
$ret['success'] = true;
@@ -3672,6 +3712,8 @@ function zotinfo($arr) {
$zsig = ((x($arr,'target_sig')) ? $arr['target_sig'] : '');
$zkey = ((x($arr,'key')) ? $arr['key'] : '');
$mindate = ((x($arr,'mindate')) ? $arr['mindate'] : '');
+ $token = ((x($arr,'token')) ? $arr['token'] : '');
+
$feed = ((x($arr,'feed')) ? intval($arr['feed']) : 0);
if($ztarget) {
@@ -3816,6 +3858,10 @@ function zotinfo($arr) {
// Communication details
+ if($token)
+ $ret['signed_token'] = base64url_encode(rsa_sign('token.' . $token,$e['channel_prvkey']));
+
+
$ret['guid'] = $e['xchan_guid'];
$ret['guid_sig'] = $e['xchan_guid_sig'];
$ret['key'] = $e['xchan_pubkey'];
@@ -3920,16 +3966,14 @@ function zotinfo($arr) {
$ret['site']['accounts'] = account_total();
- require_once('include/identity.php');
+ require_once('include/channel.php');
$ret['site']['channels'] = channel_total();
- $ret['site']['version'] = Zotlabs\Project\System::get_platform_name() . ' ' . STD_VERSION . '[' . DB_UPDATE_VERSION . ']';
+ $ret['site']['version'] = Zotlabs\Lib\System::get_platform_name() . ' ' . STD_VERSION . '[' . DB_UPDATE_VERSION . ']';
$ret['site']['admin'] = get_config('system','admin_email');
- $a = get_app();
-
$visible_plugins = array();
if(is_array(App::$plugins) && count(App::$plugins)) {
$r = q("select * from addon where hidden = 0");
@@ -3944,7 +3988,7 @@ function zotinfo($arr) {
$ret['site']['sellpage'] = get_config('system','sellpage');
$ret['site']['location'] = get_config('system','site_location');
$ret['site']['realm'] = get_directory_realm();
- $ret['site']['project'] = Zotlabs\Project\System::get_platform_name();
+ $ret['site']['project'] = Zotlabs\Lib\System::get_platform_name() . ' ' . Zotlabs\Lib\System::get_server_role();
}
@@ -4103,7 +4147,7 @@ function update_hub_connected($hub,$sitekey = '') {
$sitekey = $hub['sitekey'];
}
- // $sender['sitekey'] is a new addition to the protcol to distinguish
+ // $sender['sitekey'] is a new addition to the protocol to distinguish
// hublocs coming from re-installed sites. Older sites will not provide
// this field and we have to still mark them valid, since we can't tell
// if this hubloc has the same sitekey as the packet we received.
@@ -4112,10 +4156,13 @@ function update_hub_connected($hub,$sitekey = '') {
// Update our DB to show when we last communicated successfully with this hub
// This will allow us to prune dead hubs from using up resources
- $r = q("update hubloc set hubloc_connected = '%s' where hubloc_id = %d and hubloc_sitekey = '%s' ",
+ $t = datetime_convert('UTC','UTC','now - 15 minutes');
+
+ $r = q("update hubloc set hubloc_connected = '%s' where hubloc_id = %d and hubloc_sitekey = '%s' and hubloc_connected < '%s' ",
dbesc(datetime_convert()),
intval($hub['hubloc_id']),
- dbesc($sitekey)
+ dbesc($sitekey),
+ dbesc($t)
);
// a dead hub came back to life - reset any tombstones we might have
@@ -4415,7 +4462,6 @@ function zot_reply_purge($sender,$recipients) {
$arr = $sender;
$sender_hash = make_xchan_hash($arr['guid'],$arr['guid_sig']);
- require_once('include/Contact.php');
remove_all_xchan_resources($sender_hash);
$ret['success'] = true;
diff --git a/index.php b/index.php
index 1178881ba..d47bda27e 100755
--- a/index.php
+++ b/index.php
@@ -1,182 +1,15 @@
<?php
-/**
- * @file index.php
- *
- * @brief The main entry point to the application.
- *
- * Bootstrap the application, load configuration, load modules, load theme, etc.
- */
-
-/*
- * bootstrap the application
- */
-require_once('boot.php');
-
-if(file_exists('.htsite.php'))
- include('.htsite.php');
-
-// our global App object
-
-$a = new miniApp;
-
-App::init();
-
-/*
- * Load the configuration file which contains our DB credentials.
- * Ignore errors. If the file doesn't exist or is empty, we are running in
- * installation mode.
- */
-
-App::$install = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? false : true);
-
-@include('.htconfig.php');
-
-if(! defined('UNO'))
- define('UNO', 0);
-
-$a->convert();
-
-App::$timezone = ((x($default_timezone)) ? $default_timezone : 'UTC');
-date_default_timezone_set(App::$timezone);
-
-
-/*
- * Try to open the database;
- */
-
-require_once('include/dba/dba_driver.php');
-
-if(! App::$install) {
- $db = dba_factory($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type, App::$install);
- if(! $db->connected) {
- system_unavailable();
- }
-
- unset($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type);
-
- /**
- * Load configs from db. Overwrite configs from .htconfig.php
- */
-
- load_config('config');
- load_config('system');
- load_config('feature');
-
- \Zotlabs\Web\Session::init();
- load_hooks();
- call_hooks('init_1');
-
-}
-
-
- App::$language = get_best_language();
- load_translation_table(App::$language,App::$install);
+namespace Zotlabs\Web;
/**
+ * @file index.php
*
- * Important stuff we always need to do.
- *
- * The order of these may be important so use caution if you think they're all
- * intertwingled with no logical order and decide to sort it out. Some of the
- * dependencies have changed, but at least at one time in the recent past - the
- * order was critical to everything working properly
- *
- */
-
-\Zotlabs\Web\Session::start();
-
-/**
- * Language was set earlier, but we can over-ride it in the session.
- * We have to do it here because the session was just now opened.
- */
-
-if(array_key_exists('system_language',$_POST)) {
- if(strlen($_POST['system_language']))
- $_SESSION['language'] = $_POST['system_language'];
- else
- unset($_SESSION['language']);
-}
-if((x($_SESSION, 'language')) && ($_SESSION['language'] !== $lang)) {
- App::$language = $_SESSION['language'];
- load_translation_table(App::$language);
-}
-
-if((x($_GET,'zid')) && (! App::$install)) {
- App::$query_string = strip_zids(App::$query_string);
- if(! local_channel()) {
- $_SESSION['my_address'] = $_GET['zid'];
- zid_init($a);
- }
-}
-
-if((x($_SESSION, 'authenticated')) || (x($_POST, 'auth-params')) || (App::$module === 'login'))
- require('include/auth.php');
-
-if(! x($_SESSION, 'sysmsg'))
- $_SESSION['sysmsg'] = array();
-
-if(! x($_SESSION, 'sysmsg_info'))
- $_SESSION['sysmsg_info'] = array();
-
-/*
- * check_config() is responsible for running update scripts. These automatically
- * update the DB schema whenever we push a new one out. It also checks to see if
- * any plugins have been added or removed and reacts accordingly.
+ * @brief The main entry point to the application.
*/
+require_once('Zotlabs/Web/WebServer.php');
-if(App::$install) {
- /* Allow an exception for the view module so that pcss will be interpreted during installation */
- if(App::$module != 'view')
- App::$module = 'setup';
-}
-else
- check_config($a);
-
-nav_set_selected('nothing');
-
-$arr = array('app_menu' => App::get_apps());
-
-call_hooks('app_menu', $arr);
-
-App::set_apps($arr['app_menu']);
-
-$Router = new Zotlabs\Web\Router($a);
-
-/* initialise content region */
-
-if(! x(App::$page, 'content'))
- App::$page['content'] = '';
-
-call_hooks('page_content_top', App::$page['content']);
-
-
-$Router->Dispatch($a);
-
-
-// If you're just visiting, let javascript take you home
-
-if(x($_SESSION, 'visitor_home')) {
- $homebase = $_SESSION['visitor_home'];
-} elseif(local_channel()) {
- $homebase = z_root() . '/channel/' . App::$channel['channel_address'];
-}
-
-if(isset($homebase)) {
- App::$page['content'] .= '<script>var homebase = "' . $homebase . '";</script>';
-}
-
-// now that we've been through the module content, see if the page reported
-// a permission problem and if so, a 403 response would seem to be in order.
-
-if(stristr(implode("", $_SESSION['sysmsg']), t('Permission denied'))) {
- header($_SERVER['SERVER_PROTOCOL'] . ' 403 ' . t('Permission denied.'));
-}
-
-
-call_hooks('page_end', App::$page['content']);
-
-construct_page($a);
+$server = new WebServer();
+$server->run();
-killme();
diff --git a/install/INSTALL.txt b/install/INSTALL.txt
index 18cf4a1db..670ad5af5 100644
--- a/install/INSTALL.txt
+++ b/install/INSTALL.txt
@@ -77,16 +77,15 @@ but may be an issue with nginx or other web server platforms.
Example config scripts are available for these platforms in doc/install.
Apache and nginx have the most support.
- - PHP 5.4 or later. The later the better.
+ - PHP 5.5 or later.
- PHP *command line* access with register_argc_argv set to true in the
php.ini file - and with no hosting provider restrictions on the use of
exec() and proc_open().
- - curl, gd (with at least jpeg and png support), mysqli, mbstring, mcrypt,
- and openssl extensions. The imagick extension is not required but desirable.
-
- - xml extension is required if you want webdav to work.
+ - curl, gd (with at least jpeg and png support), mysqli, mbstring, xml,
+ and openssl extensions. The imagick extension MAY be used instead of gd,
+ but is not required and MAY also be disabled via configuration option.
- some form of email server or email gateway such that PHP mail() works.
@@ -204,17 +203,17 @@ using web forms.
****************************************************************************
****************************************************************************
-8. Set up a cron job or scheduled task to run the poller once every 10-15
-minutes to pick up the recent "public" postings of your friends. Example:
+8. Set up a cron job or scheduled task to run the Cron manager once every 10-15
+minutes to perform background processing and maintenance. Example:
- cd /base/directory; /path/to/php include/poller.php
+ cd /base/directory; /path/to/php Zotlabs/Daemon/Master.php Cron
Change "/base/directory", and "/path/to/php" as appropriate for your situation.
If you are using a Linux server, run "crontab -e" and add a line like the
one shown, substituting for your unique paths and settings:
-*/10 * * * * cd /home/myname/mywebsite; /usr/bin/php include/poller.php
+*/10 * * * * cd /home/myname/mywebsite; /usr/bin/php Zotlabs/Daemon/Master.php Cron
You can generally find the location of PHP by executing "which php". If you
have troubles with this section please contact your hosting provider for
diff --git a/install/htconfig.sample.php b/install/htconfig.sample.php
index 5e506225e..c46805171 100755
--- a/install/htconfig.sample.php
+++ b/install/htconfig.sample.php
@@ -37,11 +37,11 @@ define( 'UNO', 0 );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = 'America/Los_Angeles';
+App::$config['system']['timezone'] = 'America/Los_Angeles';
// What is your site name? DO NOT ADD A TRAILING SLASH!
-App::$config['system']['baseurl'] = 'https://myredsite.example';
+App::$config['system']['baseurl'] = 'https://mysite.example';
App::$config['system']['sitename'] = "Hubzilla";
App::$config['system']['location_hash'] = 'if the auto install failed, put a unique random string here';
diff --git a/install/schema_mysql.sql b/install/schema_mysql.sql
index 4751106da..a536c3f9a 100644
--- a/install/schema_mysql.sql
+++ b/install/schema_mysql.sql
@@ -96,15 +96,15 @@ CREATE TABLE IF NOT EXISTS `account` (
CREATE TABLE IF NOT EXISTS `addon` (
`id` int(11) NOT NULL AUTO_INCREMENT,
- `name` char(255) NOT NULL DEFAULT '',
+ `aname` char(255) NOT NULL DEFAULT '',
`version` char(255) NOT NULL DEFAULT '',
`installed` tinyint(1) NOT NULL DEFAULT '0',
`hidden` tinyint(1) NOT NULL DEFAULT '0',
- `timestamp` bigint(20) NOT NULL DEFAULT '0',
+ `tstamp` bigint(20) NOT NULL DEFAULT '0',
`plugin_admin` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `hidden` (`hidden`),
- KEY `name` (`name`),
+ KEY `aname` (`aname`),
KEY `installed` (`installed`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
@@ -158,7 +158,7 @@ CREATE TABLE IF NOT EXISTS `attach` (
`os_storage` tinyint(1) NOT NULL DEFAULT '0',
`os_path` mediumtext NOT NULL,
`display_path` mediumtext NOT NULL,
- `data` longblob NOT NULL,
+ `content` longblob NOT NULL,
`created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`allow_cid` mediumtext NOT NULL,
@@ -188,7 +188,7 @@ CREATE TABLE IF NOT EXISTS `auth_codes` (
`client_id` varchar(20) NOT NULL DEFAULT '',
`redirect_uri` varchar(200) NOT NULL DEFAULT '',
`expires` int(11) NOT NULL DEFAULT '0',
- `scope` varchar(250) NOT NULL DEFAULT '',
+ `auth_scope` varchar(512) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
@@ -342,7 +342,7 @@ CREATE TABLE IF NOT EXISTS `clients` (
`client_id` varchar(20) NOT NULL DEFAULT '',
`pw` varchar(20) NOT NULL DEFAULT '',
`redirect_uri` varchar(200) NOT NULL DEFAULT '',
- `name` text,
+ `clname` text,
`icon` text,
`uid` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`client_id`)
@@ -398,15 +398,15 @@ CREATE TABLE IF NOT EXISTS `event` (
`event_hash` char(255) NOT NULL DEFAULT '',
`created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `start` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `finish` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `dtstart` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `dtend` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`summary` text NOT NULL,
`description` text NOT NULL,
`location` text NOT NULL,
- `type` char(255) NOT NULL DEFAULT '',
+ `etype` char(255) NOT NULL DEFAULT '',
`nofinish` tinyint(1) NOT NULL DEFAULT '0',
`adjust` tinyint(1) NOT NULL DEFAULT '1',
- `ignore` tinyint(1) NOT NULL DEFAULT '0',
+ `dismissed` tinyint(1) NOT NULL DEFAULT '0',
`allow_cid` mediumtext NOT NULL,
`allow_gid` mediumtext NOT NULL,
`deny_cid` mediumtext NOT NULL,
@@ -420,12 +420,12 @@ CREATE TABLE IF NOT EXISTS `event` (
`event_vdata` text NOT NULL,
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
- KEY `type` (`type`),
- KEY `start` (`start`),
- KEY `finish` (`finish`),
+ KEY `etype` (`etype`),
+ KEY `dtstart` (`dtstart`),
+ KEY `dtend` (`dtend`),
KEY `adjust` (`adjust`),
KEY `nofinish` (`nofinish`),
- KEY `ignore` (`ignore`),
+ KEY `dismissed` (`dismissed`),
KEY `aid` (`aid`),
KEY `event_hash` (`event_hash`),
KEY `event_xchan` (`event_xchan`),
@@ -434,74 +434,19 @@ CREATE TABLE IF NOT EXISTS `event` (
KEY `event_priority` (`event_priority`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-CREATE TABLE IF NOT EXISTS `fcontact` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `url` char(255) NOT NULL,
- `name` char(255) NOT NULL,
- `photo` char(255) NOT NULL,
- `request` char(255) NOT NULL,
- `nick` char(255) NOT NULL,
- `addr` char(255) NOT NULL,
- `batch` char(255) NOT NULL,
- `notify` char(255) NOT NULL,
- `poll` char(255) NOT NULL,
- `confirm` char(255) NOT NULL,
- `priority` tinyint(1) NOT NULL,
- `network` char(32) NOT NULL,
- `alias` char(255) NOT NULL,
- `pubkey` text NOT NULL,
- `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- PRIMARY KEY (`id`),
- KEY `addr` (`addr`),
- KEY `network` (`network`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `ffinder` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `uid` int(10) unsigned NOT NULL,
- `cid` int(10) unsigned NOT NULL,
- `fid` int(10) unsigned NOT NULL,
- PRIMARY KEY (`id`),
- KEY `uid` (`uid`),
- KEY `cid` (`cid`),
- KEY `fid` (`fid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `fserver` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `server` char(255) NOT NULL DEFAULT '',
- `posturl` char(255) NOT NULL DEFAULT '',
- `key` text NOT NULL,
- PRIMARY KEY (`id`),
- KEY `server` (`server`),
- KEY `posturl` (`posturl`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `fsuggest` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `uid` int(11) NOT NULL DEFAULT '0',
- `cid` int(11) NOT NULL DEFAULT '0',
- `name` char(255) NOT NULL DEFAULT '',
- `url` char(255) NOT NULL DEFAULT '',
- `request` char(255) NOT NULL DEFAULT '',
- `photo` char(255) NOT NULL DEFAULT '',
- `note` text NOT NULL,
- `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- PRIMARY KEY (`id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
CREATE TABLE IF NOT EXISTS `groups` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`hash` char(255) NOT NULL DEFAULT '',
`uid` int(10) unsigned NOT NULL DEFAULT '0',
`visible` tinyint(1) NOT NULL DEFAULT '0',
`deleted` tinyint(1) NOT NULL DEFAULT '0',
- `name` char(255) NOT NULL DEFAULT '',
+ `gname` char(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
KEY `visible` (`visible`),
KEY `deleted` (`deleted`),
- KEY `hash` (`hash`)
+ KEY `hash` (`hash`),
+ KEY `gname` (`gname`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `group_member` (
@@ -519,7 +464,7 @@ CREATE TABLE IF NOT EXISTS `hook` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`hook` char(255) NOT NULL DEFAULT '',
`file` char(255) NOT NULL DEFAULT '',
- `function` char(255) NOT NULL DEFAULT '',
+ `fn` char(255) NOT NULL DEFAULT '',
`priority` int(11) unsigned NOT NULL DEFAULT '0',
`hook_version` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
@@ -624,7 +569,7 @@ CREATE TABLE IF NOT EXISTS `item` (
`revision` int(10) unsigned NOT NULL DEFAULT '0',
`verb` char(255) NOT NULL DEFAULT '',
`obj_type` char(255) NOT NULL DEFAULT '',
- `object` text NOT NULL,
+ `obj` text NOT NULL,
`tgt_type` char(255) NOT NULL DEFAULT '',
`target` text NOT NULL,
`layout_mid` char(255) NOT NULL DEFAULT '',
@@ -846,24 +791,24 @@ CREATE TABLE IF NOT EXISTS `menu_item` (
CREATE TABLE IF NOT EXISTS `notify` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`hash` char(64) NOT NULL DEFAULT '',
- `name` char(255) NOT NULL DEFAULT '',
+ `xname` char(255) NOT NULL DEFAULT '',
`url` char(255) NOT NULL DEFAULT '',
`photo` char(255) NOT NULL DEFAULT '',
- `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`msg` mediumtext NOT NULL,
`aid` int(11) NOT NULL DEFAULT '0',
`uid` int(11) NOT NULL DEFAULT '0',
`link` char(255) NOT NULL DEFAULT '',
`parent` char(255) NOT NULL DEFAULT '',
`seen` tinyint(1) NOT NULL DEFAULT '0',
- `type` int(11) NOT NULL DEFAULT '0',
+ `ntype` int(11) NOT NULL DEFAULT '0',
`verb` char(255) NOT NULL DEFAULT '',
`otype` char(16) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
- KEY `type` (`type`),
+ KEY `ntype` (`ntype`),
KEY `seen` (`seen`),
KEY `uid` (`uid`),
- KEY `date` (`date`),
+ KEY `created` (`created`),
KEY `hash` (`hash`),
KEY `parent` (`parent`),
KEY `link` (`link`),
@@ -883,6 +828,7 @@ CREATE TABLE IF NOT EXISTS `obj` (
`obj_imgurl` char(255) NOT NULL DEFAULT '',
`obj_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`obj_edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `obj_quantity` int(11) NOT NULL DEFAULT '0',
`allow_cid` mediumtext NOT NULL,
`allow_gid` mediumtext NOT NULL,
`deny_cid` mediumtext NOT NULL,
@@ -897,6 +843,7 @@ CREATE TABLE IF NOT EXISTS `obj` (
KEY `obj_imgurl` (`obj_imgurl`),
KEY `obj_created` (`obj_created`),
KEY `obj_edited` (`obj_edited`),
+ KEY `obj_quantity` (`obj_quantity`),
KEY `obj_obj` (`obj_obj`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
@@ -946,12 +893,12 @@ CREATE TABLE IF NOT EXISTS `photo` (
`description` text NOT NULL,
`album` char(255) NOT NULL DEFAULT '',
`filename` char(255) NOT NULL DEFAULT '',
- `type` char(128) NOT NULL DEFAULT 'image/jpeg',
+ `mimetype` char(128) NOT NULL DEFAULT 'image/jpeg',
`height` smallint(6) NOT NULL DEFAULT '0',
`width` smallint(6) NOT NULL DEFAULT '0',
- `size` int(10) unsigned NOT NULL DEFAULT '0',
- `data` mediumblob NOT NULL,
- `scale` tinyint(3) NOT NULL DEFAULT '0',
+ `filesize` int(10) unsigned NOT NULL DEFAULT '0',
+ `content` mediumblob NOT NULL,
+ `imgscale` tinyint(3) NOT NULL DEFAULT '0',
`photo_usage` smallint(6) NOT NULL DEFAULT '0',
`profile` tinyint(1) NOT NULL DEFAULT '0',
`is_nsfw` tinyint(1) NOT NULL DEFAULT '0',
@@ -966,13 +913,13 @@ CREATE TABLE IF NOT EXISTS `photo` (
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
KEY `album` (`album`),
- KEY `scale` (`scale`),
+ KEY `imgscale` (`imgscale`),
KEY `profile` (`profile`),
KEY `photo_flags` (`photo_flags`),
- KEY `type` (`type`),
+ KEY `mimetype` (`mimetype`),
KEY `aid` (`aid`),
KEY `xchan` (`xchan`),
- KEY `size` (`size`),
+ KEY `filesize` (`filesize`),
KEY `resource_id` (`resource_id`),
KEY `is_nsfw` (`is_nsfw`),
KEY `os_storage` (`os_storage`),
@@ -1033,7 +980,7 @@ CREATE TABLE IF NOT EXISTS `profile` (
`profile_name` char(255) NOT NULL DEFAULT '',
`is_default` tinyint(1) NOT NULL DEFAULT '0',
`hide_friends` tinyint(1) NOT NULL DEFAULT '0',
- `name` char(255) NOT NULL DEFAULT '',
+ `fullname` char(255) NOT NULL DEFAULT '',
`pdesc` char(255) NOT NULL DEFAULT '',
`chandesc` text NOT NULL,
`dob` char(32) NOT NULL DEFAULT '0000-00-00',
@@ -1046,7 +993,7 @@ CREATE TABLE IF NOT EXISTS `profile` (
`hometown` char(255) NOT NULL DEFAULT '',
`gender` char(32) NOT NULL DEFAULT '',
`marital` char(255) NOT NULL DEFAULT '',
- `with` text NOT NULL,
+ `partner` text NOT NULL,
`howlong` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`sexual` char(255) NOT NULL DEFAULT '',
`politic` char(255) NOT NULL DEFAULT '',
@@ -1062,7 +1009,7 @@ CREATE TABLE IF NOT EXISTS `profile` (
`film` text NOT NULL,
`interest` text NOT NULL,
`romance` text NOT NULL,
- `work` text NOT NULL,
+ `employment` text NOT NULL,
`education` text NOT NULL,
`contact` text NOT NULL,
`channels` text NOT NULL,
@@ -1108,7 +1055,7 @@ CREATE TABLE IF NOT EXISTS `register` (
`created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`uid` int(10) unsigned NOT NULL DEFAULT '0',
`password` char(255) NOT NULL DEFAULT '',
- `language` char(16) NOT NULL DEFAULT '',
+ `lang` char(16) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `hash` (`hash`),
KEY `created` (`created`),
@@ -1118,7 +1065,7 @@ CREATE TABLE IF NOT EXISTS `register` (
CREATE TABLE IF NOT EXISTS `session` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`sid` char(255) NOT NULL DEFAULT '',
- `data` text NOT NULL,
+ `sess_data` text NOT NULL,
`expire` bigint(20) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `sid` (`sid`),
@@ -1192,20 +1139,6 @@ CREATE TABLE IF NOT EXISTS `source` (
KEY `src_xchan` (`src_xchan`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-CREATE TABLE IF NOT EXISTS `spam` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `uid` int(11) NOT NULL DEFAULT '0',
- `spam` int(11) NOT NULL DEFAULT '0',
- `ham` int(11) NOT NULL DEFAULT '0',
- `term` char(255) NOT NULL DEFAULT '',
- `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- PRIMARY KEY (`id`),
- KEY `uid` (`uid`),
- KEY `spam` (`spam`),
- KEY `ham` (`ham`),
- KEY `term` (`term`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
CREATE TABLE IF NOT EXISTS `sys_perms` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cat` char(255) NOT NULL DEFAULT '',
@@ -1221,7 +1154,7 @@ CREATE TABLE IF NOT EXISTS `term` (
`uid` int(10) unsigned NOT NULL DEFAULT '0',
`oid` int(10) unsigned NOT NULL DEFAULT '0',
`otype` tinyint(3) unsigned NOT NULL DEFAULT '0',
- `type` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `ttype` tinyint(3) unsigned NOT NULL DEFAULT '0',
`term` char(255) NOT NULL DEFAULT '',
`url` char(255) NOT NULL DEFAULT '',
`imgurl` char(255) NOT NULL DEFAULT '',
@@ -1230,7 +1163,7 @@ CREATE TABLE IF NOT EXISTS `term` (
PRIMARY KEY (`tid`),
KEY `oid` (`oid`),
KEY `otype` (`otype`),
- KEY `type` (`type`),
+ KEY `ttype` (`ttype`),
KEY `term` (`term`),
KEY `uid` (`uid`),
KEY `aid` (`aid`),
@@ -1244,7 +1177,7 @@ CREATE TABLE IF NOT EXISTS `tokens` (
`secret` text NOT NULL,
`client_id` varchar(20) NOT NULL DEFAULT '',
`expires` bigint(20) unsigned NOT NULL DEFAULT '0',
- `scope` varchar(200) NOT NULL DEFAULT '',
+ `auth_scope` varchar(512) NOT NULL DEFAULT '',
`uid` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `client_id` (`client_id`),
@@ -1272,13 +1205,13 @@ CREATE TABLE IF NOT EXISTS `updates` (
CREATE TABLE IF NOT EXISTS `verify` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`channel` int(10) unsigned NOT NULL DEFAULT '0',
- `type` char(32) NOT NULL DEFAULT '',
+ `vtype` char(32) NOT NULL DEFAULT '',
`token` char(255) NOT NULL DEFAULT '',
`meta` char(255) NOT NULL DEFAULT '',
`created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
KEY `channel` (`channel`),
- KEY `type` (`type`),
+ KEY `vtype` (`vtype`),
KEY `token` (`token`),
KEY `meta` (`meta`),
KEY `created` (`created`)
diff --git a/install/schema_postgres.sql b/install/schema_postgres.sql
index 75e53d3dd..b637fea43 100644
--- a/install/schema_postgres.sql
+++ b/install/schema_postgres.sql
@@ -94,16 +94,16 @@ create index "account_level" on account ("account_level");
create index "account_password_changed" on account ("account_password_changed");
CREATE TABLE "addon" (
"id" serial NOT NULL,
- "name" text NOT NULL,
+ "aname" text NOT NULL,
"version" text NOT NULL DEFAULT '0',
"installed" numeric(1) NOT NULL DEFAULT '0',
"hidden" numeric(1) NOT NULL DEFAULT '0',
- "timestamp" numeric(20) NOT NULL DEFAULT '0',
+ "tstamp" numeric(20) NOT NULL DEFAULT '0',
"plugin_admin" numeric(1) NOT NULL DEFAULT '0',
PRIMARY KEY ("id")
);
create index "addon_hidden_idx" on addon ("hidden");
-create index "addon_name_idx" on addon ("name");
+create index "addon_name_idx" on addon ("aname");
create index "addon_installed_idx" on addon ("installed");
CREATE TABLE "app" (
"id" serial NOT NULL,
@@ -154,7 +154,7 @@ CREATE TABLE "attach" (
"os_storage" smallint NOT NULL DEFAULT '0',
"os_path" text NOT NULL,
"display_path" text NOT NULL,
- "data" bytea NOT NULL,
+ "content" bytea NOT NULL,
"created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"edited" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"allow_cid" text NOT NULL,
@@ -184,7 +184,7 @@ CREATE TABLE "auth_codes" (
"client_id" varchar(20) NOT NULL,
"redirect_uri" varchar(200) NOT NULL,
"expires" bigint NOT NULL,
- "scope" varchar(250) NOT NULL,
+ "auth_scope" varchar(512) NOT NULL,
PRIMARY KEY ("id")
);
CREATE TABLE "cache" (
@@ -333,7 +333,7 @@ CREATE TABLE "clients" (
"client_id" varchar(20) NOT NULL,
"pw" varchar(20) NOT NULL,
"redirect_uri" varchar(200) NOT NULL,
- "name" text,
+ "clname" text,
"icon" text,
"uid" bigint NOT NULL DEFAULT '0',
PRIMARY KEY ("client_id")
@@ -390,17 +390,17 @@ CREATE TABLE "event" (
"uid" bigint NOT NULL,
"event_xchan" text NOT NULL DEFAULT '',
"event_hash" text NOT NULL DEFAULT '',
- "created" timestamp NOT NULL,
- "edited" timestamp NOT NULL,
- "start" timestamp NOT NULL,
- "finish" timestamp NOT NULL,
+ "created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "edited" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "dtstart" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "dtend" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"summary" text NOT NULL,
"description" text NOT NULL,
"location" text NOT NULL,
- "type" text NOT NULL,
+ "etype" text NOT NULL,
"nofinish" numeric(1) NOT NULL DEFAULT '0',
"adjust" numeric(1) NOT NULL DEFAULT '1',
- "ignore" numeric(1) NOT NULL DEFAULT '0',
+ "dismissed" numeric(1) NOT NULL DEFAULT '0',
"allow_cid" text NOT NULL,
"allow_gid" text NOT NULL,
"deny_cid" text NOT NULL,
@@ -415,12 +415,12 @@ CREATE TABLE "event" (
PRIMARY KEY ("id")
);
create index "event_uid_idx" on event ("uid");
-create index "event_type_idx" on event ("type");
-create index "event_start_idx" on event ("start");
-create index "event_finish_idx" on event ("finish");
+create index "event_etype_idx" on event ("etype");
+create index "event_dtstart_idx" on event ("dtstart");
+create index "event_dtend_idx" on event ("dtend");
create index "event_adjust_idx" on event ("adjust");
create index "event_nofinish_idx" on event ("nofinish");
-create index "event_ignore_idx" on event ("ignore");
+create index "event_dismissed_idx" on event ("dismissed");
create index "event_aid_idx" on event ("aid");
create index "event_hash_idx" on event ("event_hash");
create index "event_xchan_idx" on event ("event_xchan");
@@ -428,62 +428,6 @@ create index "event_status_idx" on event ("event_status");
create index "event_sequence_idx" on event ("event_sequence");
create index "event_priority_idx" on event ("event_priority");
-
-CREATE TABLE "fcontact" (
- "id" serial NOT NULL,
- "url" text NOT NULL,
- "name" text NOT NULL,
- "photo" text NOT NULL,
- "request" text NOT NULL,
- "nick" text NOT NULL,
- "addr" text NOT NULL,
- "batch" text NOT NULL,
- "notify" text NOT NULL,
- "poll" text NOT NULL,
- "confirm" text NOT NULL,
- "priority" numeric(1) NOT NULL,
- "network" varchar(32) NOT NULL DEFAULT '',
- "alias" text NOT NULL,
- "pubkey" text NOT NULL,
- "updated" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- PRIMARY KEY ("id")
-);
-create index "fcontact_addr_idx" on fcontact ("addr");
-create index "fcontact_network_idx" on fcontact ("network");
-
-CREATE TABLE "ffinder" (
- "id" serial NOT NULL,
- "uid" bigint NOT NULL,
- "cid" bigint NOT NULL,
- "fid" bigint NOT NULL,
- PRIMARY KEY ("id")
-);
-create index "ffinder_uid_idx" on ffinder ("uid");
-create index "ffinder_cid_idx" on ffinder ("cid");
-create index "ffinder_fid_idx" on ffinder ("fid");
-
-CREATE TABLE "fserver" (
- "id" serial NOT NULL,
- "server" text NOT NULL,
- "posturl" text NOT NULL,
- "key" text NOT NULL,
- PRIMARY KEY ("id")
-);
-create index "fserver_server_idx" on fserver ("server");
-create index "fserver_posturl_idx" on fserver ("posturl");
-
-CREATE TABLE "fsuggest" (
- "id" serial NOT NULL,
- "uid" bigint NOT NULL,
- "cid" bigint NOT NULL,
- "name" text NOT NULL,
- "url" text NOT NULL,
- "request" text NOT NULL,
- "photo" text NOT NULL,
- "note" text NOT NULL,
- "created" timestamp NOT NULL,
- PRIMARY KEY ("id")
-);
CREATE TABLE "group_member" (
"id" serial NOT NULL,
"uid" bigint NOT NULL,
@@ -501,7 +445,7 @@ CREATE TABLE "groups" (
"uid" bigint NOT NULL,
"visible" numeric(1) NOT NULL DEFAULT '0',
"deleted" numeric(1) NOT NULL DEFAULT '0',
- "name" text NOT NULL,
+ "gname" text NOT NULL,
PRIMARY KEY ("id")
);
@@ -514,7 +458,7 @@ CREATE TABLE "hook" (
"id" serial NOT NULL,
"hook" text NOT NULL,
"file" text NOT NULL,
- "function" text NOT NULL,
+ "fn" text NOT NULL,
"priority" bigint NOT NULL DEFAULT '0',
"hook_version" smallint NOT NULL DEFAULT '0',
PRIMARY KEY ("id")
@@ -616,7 +560,7 @@ CREATE TABLE "item" (
"revision" bigint NOT NULL DEFAULT '0',
"verb" text NOT NULL DEFAULT '',
"obj_type" text NOT NULL DEFAULT '',
- "object" text NOT NULL,
+ "obj" text NOT NULL,
"tgt_type" text NOT NULL DEFAULT '',
"target" text NOT NULL,
"layout_mid" text NOT NULL DEFAULT '',
@@ -837,25 +781,25 @@ create index "mitem_flags" on menu_item ("mitem_flags");
CREATE TABLE "notify" (
"id" serial NOT NULL,
"hash" char(64) NOT NULL,
- "name" text NOT NULL,
+ "xname" text NOT NULL,
"url" text NOT NULL,
"photo" text NOT NULL,
- "date" timestamp NOT NULL,
+ "created" timestamp NOT NULL,
"msg" text NOT NULL DEFAULT '',
"aid" bigint NOT NULL,
"uid" bigint NOT NULL,
"link" text NOT NULL,
"parent" text NOT NULL DEFAULT '',
"seen" numeric(1) NOT NULL DEFAULT '0',
- "type" bigint NOT NULL,
+ "ntype" bigint NOT NULL,
"verb" text NOT NULL,
"otype" varchar(16) NOT NULL,
PRIMARY KEY ("id")
);
-create index "notify_type" on notify ("type");
+create index "notify_ntype" on notify ("ntype");
create index "notify_seen" on notify ("seen");
create index "notify_uid" on notify ("uid");
-create index "notify_date" on notify ("date");
+create index "notify_created" on notify ("created");
create index "notify_hash" on notify ("hash");
create index "notify_parent" on notify ("parent");
create index "notify_link" on notify ("link");
@@ -873,6 +817,7 @@ CREATE TABLE "obj" (
"obj_imgurl" char(255) NOT NULL DEFAULT '',
"obj_created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"obj_edited" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "obj_quantity" int(11) NOT NULL DEFAUL '0'.
"allow_cid" text NOT NULL,
"allow_gid" text NOT NULL,
"deny_cid" text NOT NULL,
@@ -890,6 +835,7 @@ create index "obj_url" on obj ("obj_url");
create index "obj_imgurl" on obj ("obj_imgurl");
create index "obj_created" on obj ("obj_created");
create index "obj_edited" on obj ("obj_edited");
+create index "obj_quantity" on obj ("obj_quantity");
CREATE TABLE "outq" (
"outq_hash" text NOT NULL,
@@ -936,12 +882,12 @@ CREATE TABLE "photo" (
"description" text NOT NULL,
"album" text NOT NULL,
"filename" text NOT NULL,
- "type" varchar(128) NOT NULL DEFAULT 'image/jpeg',
+ "mimetype" varchar(128) NOT NULL DEFAULT 'image/jpeg',
"height" numeric(6) NOT NULL,
"width" numeric(6) NOT NULL,
- "size" bigint NOT NULL DEFAULT '0',
- "data" bytea NOT NULL,
- "scale" numeric(3) NOT NULL,
+ "filesize" bigint NOT NULL DEFAULT '0',
+ "content" bytea NOT NULL,
+ "imgscale" numeric(3) NOT NULL DEFAULT '0',
"profile" numeric(1) NOT NULL DEFAULT '0',
"photo_usage" smallint NOT NULL DEFAULT '0',
"is_nsfw" smallint NOT NULL DEFAULT '0',
@@ -957,13 +903,13 @@ CREATE TABLE "photo" (
);
create index "photo_uid" on photo ("uid");
create index "photo_album" on photo ("album");
-create index "photo_scale" on photo ("scale");
+create index "photo_imgscale" on photo ("imgscale");
create index "photo_profile" on photo ("profile");
create index "photo_flags" on photo ("photo_flags");
create index "photo_type" on photo ("type");
create index "photo_aid" on photo ("aid");
create index "photo_xchan" on photo ("xchan");
-create index "photo_size" on photo ("size");
+create index "photo_filesize" on photo ("filesize");
create index "photo_resource_id" on photo ("resource_id");
create index "photo_usage" on photo ("photo_usage");
create index "photo_is_nsfw" on photo ("is_nsfw");
@@ -1022,7 +968,7 @@ CREATE TABLE "profile" (
"profile_name" text NOT NULL,
"is_default" numeric(1) NOT NULL DEFAULT '0',
"hide_friends" numeric(1) NOT NULL DEFAULT '0',
- "name" text NOT NULL,
+ "fullname" text NOT NULL,
"pdesc" text NOT NULL DEFAULT '',
"chandesc" text NOT NULL DEFAULT '',
"dob" varchar(32) NOT NULL DEFAULT '',
@@ -1035,7 +981,7 @@ CREATE TABLE "profile" (
"hometown" text NOT NULL DEFAULT '',
"gender" varchar(32) NOT NULL DEFAULT '',
"marital" text NOT NULL DEFAULT '',
- "with" text NOT NULL DEFAULT '',
+ "partner" text NOT NULL DEFAULT '',
"howlong" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"sexual" text NOT NULL DEFAULT '',
"politic" text NOT NULL DEFAULT '',
@@ -1051,7 +997,7 @@ CREATE TABLE "profile" (
"film" text NOT NULL DEFAULT '',
"interest" text NOT NULL DEFAULT '',
"romance" text NOT NULL DEFAULT '',
- "work" text NOT NULL DEFAULT '',
+ "employment" text NOT NULL DEFAULT '',
"education" text NOT NULL DEFAULT '',
"contact" text NOT NULL DEFAULT '',
"channels" text NOT NULL DEFAULT '',
@@ -1097,7 +1043,7 @@ CREATE TABLE "register" (
"created" timestamp NOT NULL,
"uid" bigint NOT NULL,
"password" text NOT NULL,
- "language" varchar(16) NOT NULL,
+ "lang" varchar(16) NOT NULL,
PRIMARY KEY ("id")
);
create index "reg_hash" on register ("hash");
@@ -1106,7 +1052,7 @@ create index "reg_uid" on register ("uid");
CREATE TABLE "session" (
"id" serial,
"sid" text NOT NULL,
- "data" text NOT NULL,
+ "sess_data" text NOT NULL,
"expire" numeric(20) NOT NULL,
PRIMARY KEY ("id")
);
@@ -1177,19 +1123,6 @@ CREATE TABLE "source" (
create index "src_channel_id" on "source" ("src_channel_id");
create index "src_channel_xchan" on "source" ("src_channel_xchan");
create index "src_xchan" on "source" ("src_xchan");
-CREATE TABLE "spam" (
- "id" serial NOT NULL,
- "uid" bigint NOT NULL,
- "spam" bigint NOT NULL DEFAULT '0',
- "ham" bigint NOT NULL DEFAULT '0',
- "term" text NOT NULL,
- "date" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- PRIMARY KEY ("id")
-);
-create index "spam_uid" on spam ("uid");
-create index "spam_spam" on spam ("spam");
-create index "spam_ham" on spam ("ham");
-create index "spam_term" on spam ("term");
CREATE TABLE "sys_perms" (
"id" serial NOT NULL,
"cat" text NOT NULL,
@@ -1204,7 +1137,7 @@ CREATE TABLE "term" (
"uid" bigint NOT NULL DEFAULT '0',
"oid" bigint NOT NULL,
"otype" numeric(3) NOT NULL,
- "type" numeric(3) NOT NULL,
+ "ttype" numeric(3) NOT NULL,
"term" text NOT NULL,
"url" text NOT NULL,
"imgurl" text NOT NULL DEFAULT '',
@@ -1214,7 +1147,7 @@ CREATE TABLE "term" (
);
create index "term_oid" on term ("oid");
create index "term_otype" on term ("otype");
-create index "term_type" on term ("type");
+create index "term_ttype" on term ("ttype");
create index "term_term" on term ("term");
create index "term_uid" on term ("uid");
create index "term_aid" on term ("aid");
@@ -1226,7 +1159,7 @@ CREATE TABLE "tokens" (
"secret" text NOT NULL,
"client_id" varchar(20) NOT NULL,
"expires" numeric(20) NOT NULL,
- "scope" varchar(200) NOT NULL,
+ "auth_scope" varchar(512) NOT NULL,
"uid" bigint NOT NULL,
PRIMARY KEY ("id")
);
@@ -1253,14 +1186,14 @@ create index "ud_last" on updates ("ud_last");
CREATE TABLE "verify" (
"id" serial NOT NULL,
"channel" bigint NOT NULL DEFAULT '0',
- "type" varchar(32) NOT NULL DEFAULT '',
+ "vtype" varchar(32) NOT NULL DEFAULT '',
"token" text NOT NULL DEFAULT '',
"meta" text NOT NULL DEFAULT '',
"created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY ("id")
);
create index "verify_channel" on verify ("channel");
-create index "verify_type" on verify ("type");
+create index "verify_vtype" on verify ("vtype");
create index "verify_token" on verify ("token");
create index "verify_meta" on verify ("meta");
create index "verify_created" on verify ("created");
diff --git a/install/update.php b/install/update.php
index ea1bd8bc7..908f60498 100644
--- a/install/update.php
+++ b/install/update.php
@@ -1,6 +1,6 @@
<?php
-define( 'UPDATE_VERSION' , 1168 );
+define( 'UPDATE_VERSION' , 1176 );
/**
*
@@ -2097,3 +2097,160 @@ function update_r1167() {
return UPDATE_SUCCESS;
return UPDATE_FAILED;
}
+
+function update_r1168() {
+
+ $r1 = q("alter table obj add obj_quantity int not null default '0' ");
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r2 = q("create index \"obj_quantity_idx\" on obj (\"obj_quantity\") ");
+ }
+ else {
+ $r2 = q("alter table obj add index ( obj_quantity ) ");
+ }
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+function update_r1169() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE `addon` CHANGE `timestamp` `tstamp` numeric( 20 ) UNSIGNED NOT NULL DEFAULT '0' ");
+ $r2 = q("ALTER TABLE `addon` CHANGE `name` `aname` text NOT NULL DEFAULT '' ");
+ $r3 = q("ALTER TABLE `hook` CHANGE `function` `fn` text NOT NULL DEFAULT '' ");
+
+ }
+ else {
+ $r1 = q("ALTER TABLE `addon` CHANGE `timestamp` `tstamp` BIGINT( 20 ) UNSIGNED NOT NULL DEFAULT '0' ");
+ $r2 = q("ALTER TABLE `addon` CHANGE `name` `aname` CHAR(255) NOT NULL DEFAULT '' ");
+ $r3 = q("ALTER TABLE `hook` CHANGE `function` `fn` CHAR(255) NOT NULL DEFAULT '' ");
+ }
+
+ if($r1 && $r2 && $r3)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+function update_r1170() {
+
+ $r1 = q("drop table fcontact");
+ $r2 = q("drop table ffinder");
+ $r3 = q("drop table fserver");
+ $r4 = q("drop table fsuggest");
+ $r5 = q("drop table spam");
+
+ if($r1 && $r2 && $r3 && $r4 && $r5)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+function update_r1171() {
+
+ $r1 = q("ALTER TABLE verify CHANGE `type` `vtype` varchar(32) NOT NULL DEFAULT '' ");
+ $r2 = q("ALTER TABLE tokens CHANGE `scope` `auth_scope` varchar(512) NOT NULL DEFAULT '' ");
+ $r3 = q("ALTER TABLE auth_codes CHANGE `scope` `auth_scope` varchar(512) NOT NULL DEFAULT '' ");
+ $r4 = q("ALTER TABLE clients CHANGE `name` `clname` TEXT ");
+ $r5 = q("ALTER TABLE session CHANGE `data` `sess_data` TEXT NOT NULL ");
+ $r6 = q("ALTER TABLE register CHANGE `language` `lang` varchar(16) NOT NULL DEFAULT '' ");
+
+ if($r1 && $r2 && $r3 && $r4 && $r5 && $r6)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+
+
+}
+
+function update_r1172() {
+
+ $r1 = q("ALTER TABLE term CHANGE `type` `ttype` int(3) NOT NULL DEFAULT '0' ");
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r2 = q("ALTER TABLE groups CHANGE `name` `gname` TEXT NOT NULL ");
+ $r3 = q("ALTER TABLE profile CHANGE `name` `fullname` TEXT NOT NULL ");
+ $r4 = q("ALTER TABLE profile CHANGE `with` `partner` TEXT NOT NULL ");
+ $r5 = q("ALTER TABLE profile CHANGE `work` `employment` TEXT NOT NULL ");
+ }
+ else {
+ $r2 = q("ALTER TABLE groups CHANGE `name` `gname` char(255) NOT NULL DEFAULT '' ");
+ $r3 = q("ALTER TABLE profile CHANGE `name` `fullname` char(255) NOT NULL DEFAULT '' ");
+ $r4 = q("ALTER TABLE profile CHANGE `with` `partner` char(255) NOT NULL DEFAULT '' ");
+ $r5 = q("ALTER TABLE profile CHANGE `work` `employment` TEXT NOT NULL ");
+ }
+ if($r1 && $r2 && $r3 && $r4 && $r5)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+function update_r1173() {
+
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE notify CHANGE `name` `xname` TEXT NOT NULL ");
+ $r2 = q("ALTER TABLE notify CHANGE `date` `created` timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' ");
+ $r3 = q("ALTER TABLE notify CHANGE `type` `ntype` numeric(3) NOT NULL DEFAULT '0' ");
+ }
+ else {
+ $r1 = q("ALTER TABLE notify CHANGE `name` `xname` char(255) NOT NULL DEFAULT '' ");
+ $r2 = q("ALTER TABLE notify CHANGE `date` `created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ");
+ $r3 = q("ALTER TABLE notify CHANGE `type` `ntype` smallint(3) NOT NULL DEFAULT '0' ");
+ }
+
+ if($r1 && $r2 && $r3)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+function update_r1174() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE event CHANGE `type` `etype` varchar(255) NOT NULL DEFAULT '' ");
+ $r2 = q("ALTER TABLE event CHANGE `start` `dtstart` timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' ");
+ $r3 = q("ALTER TABLE event CHANGE `finish` `dtend` timestamp NOT NULL DEFAULT '0001-01-01 00:00:00' ");
+ $r4 = q("ALTER TABLE event CHANGE `ignore` `dismissed` numeric(1) NOT NULL DEFAULT '0' ");
+ $r5 = q("ALTER TABLE attach CHANGE `data` `content` bytea NOT NULL ");
+ $r6 = q("ALTER TABLE photo CHANGE `data` `content` bytea NOT NULL ");
+ }
+ else {
+ $r1 = q("ALTER TABLE event CHANGE `type` `etype` char(255) NOT NULL DEFAULT '' ");
+ $r2 = q("ALTER TABLE event CHANGE `start` `dtstart` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ");
+ $r3 = q("ALTER TABLE event CHANGE `finish` `dtend` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ");
+ $r4 = q("ALTER TABLE event CHANGE `ignore` `dismissed` tinyint(1) NOT NULL DEFAULT '0' ");
+ $r5 = q("ALTER TABLE attach CHANGE `data` `content` longblob NOT NULL ");
+ $r6 = q("ALTER TABLE photo CHANGE `data` `content` mediumblob NOT NULL ");
+ }
+
+ if($r1 && $r2 && $r3 && $r4 && $r5 && $r6)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+function update_r1175() {
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $r1 = q("ALTER TABLE item CHANGE `object` `obj` text NOT NULL");
+ $r2 = q("ALTER TABLE photo CHANGE `size` `filesize` bigint NOT NULL DEFAULT '0' ");
+ $r3 = q("ALTER TABLE photo CHANGE `scale` `imgscale` numeric(3) NOT NULL DEFAULT '0' ");
+ $r4 = q("ALTER TABLE photo CHANGE `type` `mimetype` varchar(128) NOT NULL DEFAULT 'image/jpeg' ");
+
+ }
+ else {
+ $r1 = q("ALTER TABLE item CHANGE `object` `obj` text NOT NULL");
+ $r2 = q("ALTER TABLE photo CHANGE `size` `filesize` int(10) unsigned NOT NULL DEFAULT '0' ");
+ $r3 = q("ALTER TABLE photo CHANGE `scale` `imgscale` tinyint(3) unsigned NOT NULL DEFAULT '0' ");
+ $r4 = q("ALTER TABLE photo CHANGE `type` `mimetype` char(128) NOT NULL DEFAULT 'image/jpeg' ");
+
+ }
+
+ if($r1 && $r2 && $r3 && $r4)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
diff --git a/library/ace/ace.js b/library/ace/ace.js
new file mode 100644
index 000000000..2923ef0c4
--- /dev/null
+++ b/library/ace/ace.js
@@ -0,0 +1,11 @@
+(function(){function o(n){var i=e;n&&(e[n]||(e[n]={}),i=e[n]);if(!i.define||!i.define.packaged)t.original=i.define,i.define=t,i.define.packaged=!0;if(!i.require||!i.require.packaged)r.original=i.require,i.require=r,i.require.packaged=!0}var ACE_NAMESPACE = "ace",e=function(){return this}();!e&&typeof window!="undefined"&&(e=window);if(!ACE_NAMESPACE&&typeof requirejs!="undefined")return;var t=function(e,n,r){if(typeof e!="string"){t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=n),t.modules[e]||(t.payloads[e]=r,t.modules[e]=null)};t.modules={},t.payloads={};var n=function(e,t,n){if(typeof t=="string"){var i=s(e,t);if(i!=undefined)return n&&n(),i}else if(Object.prototype.toString.call(t)==="[object Array]"){var o=[];for(var u=0,a=t.length;u<a;++u){var f=s(e,t[u]);if(f==undefined&&r.original)return;o.push(f)}return n&&n.apply(null,o)||!0}},r=function(e,t){var i=n("",e,t);return i==undefined&&r.original?r.original.apply(this,arguments):i},i=function(e,t){if(t.indexOf("!")!==-1){var n=t.split("!");return i(e,n[0])+"!"+i(e,n[1])}if(t.charAt(0)=="."){var r=e.split("/").slice(0,-1).join("/");t=r+"/"+t;while(t.indexOf(".")!==-1&&s!=t){var s=t;t=t.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return t},s=function(e,r){r=i(e,r);var s=t.modules[r];if(!s){s=t.payloads[r];if(typeof s=="function"){var o={},u={id:r,uri:"",exports:o,packaged:!0},a=function(e,t){return n(r,e,t)},f=s(a,o,u);o=f||u.exports,t.modules[r]=o,delete t.payloads[r]}s=t.modules[r]=o||s}return s};o(ACE_NAMESPACE)})(),ace.define("ace/lib/regexp",["require","exports","module"],function(e,t,n){"use strict";function o(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.extended?"x":"")+(e.sticky?"y":"")}function u(e,t,n){if(Array.prototype.indexOf)return e.indexOf(t,n);for(var r=n||0;r<e.length;r++)if(e[r]===t)return r;return-1}var r={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},i=r.exec.call(/()??/,"")[1]===undefined,s=function(){var e=/^/g;return r.test.call(e,""),!e.lastIndex}();if(s&&i)return;RegExp.prototype.exec=function(e){var t=r.exec.apply(this,arguments),n,a;if(typeof e=="string"&&t){!i&&t.length>1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;e<arguments.length-2;e++)arguments[e]===undefined&&(t[e]=undefined)}));if(this._xregexp&&this._xregexp.captureNames)for(var f=1;f<t.length;f++)n=this._xregexp.captureNames[f-1],n&&(t[n]=t[f]);!s&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _=" \n \f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(e,t,n){"use strict";e("./regexp"),e("./es5-shim")}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t,n){"use strict";var r="http://www.w3.org/1999/xhtml";t.getDocumentHead=function(e){return e||(e=document),e.head||e.getElementsByTagName("head")[0]||e.documentElement},t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||r,e):document.createElement(e)},t.hasCssClass=function(e,t){var n=(e.className||"").split(/\s+/g);return n.indexOf(t)!==-1},t.addCssClass=function(e,n){t.hasCssClass(e,n)||(e.className+=" "+n)},t.removeCssClass=function(e,t){var n=e.className.split(/\s+/g);for(;;){var r=n.indexOf(t);if(r==-1)break;n.splice(r,1)}e.className=n.join(" ")},t.toggleCssClass=function(e,t){var n=e.className.split(/\s+/g),r=!0;for(;;){var i=n.indexOf(t);if(i==-1)break;r=!1,n.splice(i,1)}return r&&n.push(t),e.className=n.join(" "),r},t.setCssClass=function(e,n,r){r?t.addCssClass(e,n):t.removeCssClass(e,n)},t.hasCssString=function(e,t){var n=0,r;t=t||document;if(t.createStyleSheet&&(r=t.styleSheets)){while(n<r.length)if(r[n++].owningElement.id===e)return!0}else if(r=t.getElementsByTagName("style"))while(n<r.length)if(r[n++].id===e)return!0;return!1},t.importCssString=function(n,r,i){i=i||document;if(r&&t.hasCssString(r,i))return null;var s;r&&(n+="\n/*# sourceURL=ace/css/"+r+" */"),i.createStyleSheet?(s=i.createStyleSheet(),s.cssText=n,r&&(s.owningElement.id=r)):(s=t.createElement("style"),s.appendChild(i.createTextNode(n)),r&&(s.id=r),t.getDocumentHead(i).appendChild(s))},t.importCssStylsheet=function(e,n){if(n.createStyleSheet)n.createStyleSheet(e);else{var r=t.createElement("link");r.rel="stylesheet",r.href=e,t.getDocumentHead(n).appendChild(r)}},t.getInnerWidth=function(e){return parseInt(t.computedStyle(e,"paddingLeft"),10)+parseInt(t.computedStyle(e,"paddingRight"),10)+e.clientWidth},t.getInnerHeight=function(e){return parseInt(t.computedStyle(e,"paddingTop"),10)+parseInt(t.computedStyle(e,"paddingBottom"),10)+e.clientHeight},t.scrollbarWidth=function(e){var n=t.createElement("ace_inner");n.style.width="100%",n.style.minWidth="0px",n.style.height="200px",n.style.display="block";var r=t.createElement("ace_outer"),i=r.style;i.position="absolute",i.left="-10000px",i.overflow="hidden",i.width="200px",i.minWidth="0px",i.height="150px",i.display="block",r.appendChild(n);var s=e.documentElement;s.appendChild(r);var o=n.offsetWidth;i.overflow="scroll";var u=n.offsetWidth;return o==u&&(u=r.clientWidth),s.removeChild(r),o-u};if(typeof document=="undefined"){t.importCssString=function(){};return}window.pageYOffset!==undefined?(t.getPageScrollTop=function(){return window.pageYOffset},t.getPageScrollLeft=function(){return window.pageXOffset}):(t.getPageScrollTop=function(){return document.body.scrollTop},t.getPageScrollLeft=function(){return document.body.scrollLeft}),window.getComputedStyle?t.computedStyle=function(e,t){return t?(window.getComputedStyle(e,"")||{})[t]||"":window.getComputedStyle(e,"")||{}}:t.computedStyle=function(e,t){return t?e.currentStyle[t]:e.currentStyle},t.setInnerHtml=function(e,t){var n=e.cloneNode(!1);return n.innerHTML=t,e.parentNode.replaceChild(n,e),n},"textContent"in document.documentElement?(t.setInnerText=function(e,t){e.textContent=t},t.getInnerText=function(e){return e.textContent}):(t.setInnerText=function(e,t){e.innerText=t},t.getInnerText=function(e){return e.innerText}),t.getParentWindow=function(e){return e.defaultView||e.parentWindow}}),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/keys",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop"],function(e,t,n){"use strict";e("./fixoldbrowsers");var r=e("./oop"),i=function(){var e={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,"super":8,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9","-13":"NumpadEnter",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",107:"+",109:"-",110:".",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",111:"/",106:"*"}},t,n;for(n in e.FUNCTION_KEYS)t=e.FUNCTION_KEYS[n].toLowerCase(),e[t]=parseInt(n,10);for(n in e.PRINTABLE_KEYS)t=e.PRINTABLE_KEYS[n].toLowerCase(),e[t]=parseInt(n,10);return r.mixin(e,e.MODIFIER_KEYS),r.mixin(e,e.PRINTABLE_KEYS),r.mixin(e,e.FUNCTION_KEYS),e.enter=e["return"],e.escape=e.esc,e.del=e["delete"],e[173]="-",function(){var t=["cmd","ctrl","alt","shift"];for(var n=Math.pow(2,t.length);n--;)e.KEY_MODS[n]=t.filter(function(t){return n&e.KEY_MODS[t]}).join("-")+"-"}(),e.KEY_MODS[0]="",e.KEY_MODS[-1]="input-",e}();r.mixin(t,i),t.keyCodeToString=function(e){var t=i[e];return typeof t!="string"&&(t=String.fromCharCode(e)),t.toLowerCase()}}),ace.define("ace/lib/useragent",["require","exports","module"],function(e,t,n){"use strict";t.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},t.getOS=function(){return t.isMac?t.OS.MAC:t.isLinux?t.OS.LINUX:t.OS.WINDOWS};if(typeof navigator!="object")return;var r=(navigator.platform.match(/mac|win|linux/i)||["other"])[0].toLowerCase(),i=navigator.userAgent;t.isWin=r=="win",t.isMac=r=="mac",t.isLinux=r=="linux",t.isIE=navigator.appName=="Microsoft Internet Explorer"||navigator.appName.indexOf("MSAppHost")>=0?parseFloat((i.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((i.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((i.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isTouchPad=i.indexOf("TouchPad")>=0,t.isChromeOS=i.indexOf(" CrOS ")>=0}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function a(e,t,n){var a=u(t);if(!i.isMac&&s){s.OSKey&&(a|=8);if(s.altGr){if((3&a)==3)return;s.altGr=0}if(n===18||n===17){var f="location"in t?t.location:t.keyLocation;if(n===17&&f===1)s[n]==1&&(o=t.timeStamp);else if(n===18&&a===3&&f===2){var l=t.timeStamp-o;l<50&&(s.altGr=!0)}}}n in r.MODIFIER_KEYS&&(n=-1),a&8&&n>=91&&n<=93&&(n=-1);if(!a&&n===13){var f="location"in t?t.location:t.keyLocation;if(f===3){e(t,a,-n);if(t.defaultPrevented)return}}if(i.isChromeOS&&a&8){e(t,a,n);if(t.defaultPrevented)return;a&=-9}return!!a||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,a,n):!1}function f(){s=Object.create(null),s.count=0,s.lastT=0}var r=e("./keys"),i=e("./useragent"),s=null,o=0;t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var r=function(){n.call(e,window.event)};n._wrapper=r,e.attachEvent("on"+t,r)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return e.type=="dblclick"?0:e.type=="contextmenu"||i.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,r){function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",i,!0),t.removeListener(document,"dragstart",i,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",i,!0),t.addListener(document,"dragstart",i,!0),i},t.addTouchMoveListener=function(e,n){if("ontouchmove"in e){var r,i;t.addListener(e,"touchstart",function(e){var t=e.changedTouches[0];r=t.clientX,i=t.clientY}),t.addListener(e,"touchmove",function(e){var t=1,s=e.changedTouches[0];e.wheelX=-(s.clientX-r)/t,e.wheelY=-(s.clientY-i)/t,r=s.clientX,i=s.clientY,n(e)})}},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;e.wheelDeltaX!==undefined?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=(e.deltaX||0)*5,e.wheelY=(e.deltaY||0)*5}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=(e.detail||0)*5,e.wheelY=0):(e.wheelX=0,e.wheelY=(e.detail||0)*5),n(e)})},t.addMultiMouseDownListener=function(e,n,r,s){function c(e){t.getButton(e)!==0?o=0:e.detail>1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var c=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;if(!f||c)o=1;f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),o==1&&(u=e.clientX,a=e.clientY)}e._clicks=o,r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}function h(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)}var o=0,u,a,f,l={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",c),i.isOldIE&&t.addListener(e,"dblclick",h)})};var u=!i.isMac||!i.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};t.getModifierString=function(e){return r.KEY_MODS[u(e)]},t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var o=null;r(e,"keydown",function(e){o=e.keyCode}),r(e,"keypress",function(e){return a(n,e,o)})}else{var u=null;r(e,"keydown",function(e){var t=e.keyCode;s[t]=(s[t]||0)+1,t==91||t==92?s.OSKey=!0:s.OSKey&&e.timeStamp-s.lastT>200&&s.count==1&&f(),s[t]==1&&s.count++,s.lastT=e.timeStamp;var r=a(n,e,t);return u=e.defaultPrevented,r}),r(e,"keypress",function(e){u&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),u=null)}),r(e,"keyup",function(e){var t=e.keyCode;s[t]?s.count=Math.max(s.count-1,0):f();if(t==91||t==92)s.OSKey=!1;s[t]=null}),s||(f(),r(window,"focus",f))}};if(typeof window=="object"&&window.postMessage&&!i.isOldIE){var l=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+l;t.addListener(n,"message",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())}),n.postMessage(r,"*")}}t.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function s(e){if(typeof e!="object"||!e)return e;var t;if(Array.isArray(e)){t=[];for(var n=0;n<e.length;n++)t[n]=s(e[n]);return t}var r=e.constructor;if(r===RegExp)return e;t=r();for(var n in e)t[n]=s(e[n]);return t},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("../lib/dom"),o=e("../lib/lang"),u=i.isChrome<18,a=i.isIE,f=function(e,t){function b(e){if(h)return;h=!0;if(k)t=0,r=e?0:n.value.length-1;else var t=e?2:1,r=2;try{n.setSelectionRange(t,r)}catch(i){}h=!1}function w(){if(h)return;n.value=f,i.isWebKit&&y.schedule()}function R(){clearTimeout(q),q=setTimeout(function(){p&&(n.style.cssText=p,p=""),t.renderer.$keepTextAreaAtCursor==null&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())},i.isOldIE?200:0)}var n=s.createElement("textarea");n.className="ace_text-input",i.isTouchPad&&n.setAttribute("x-palm-disable-auto-cap",!0),n.setAttribute("wrap","off"),n.setAttribute("autocorrect","off"),n.setAttribute("autocapitalize","off"),n.setAttribute("spellcheck",!1),n.style.opacity="0",i.isOldIE&&(n.style.top="-1000px"),e.insertBefore(n,e.firstChild);var f="",l=!1,c=!1,h=!1,p="",d=!0;try{var v=document.activeElement===n}catch(m){}r.addListener(n,"blur",function(e){t.onBlur(e),v=!1}),r.addListener(n,"focus",function(e){v=!0,t.onFocus(e),b()}),this.focus=function(){if(p)return n.focus();var e=n.style.top;n.style.position="fixed",n.style.top="0px",n.focus(),setTimeout(function(){n.style.position="",n.style.top=="0px"&&(n.style.top=e)},0)},this.blur=function(){n.blur()},this.isFocused=function(){return v};var g=o.delayedCall(function(){v&&b(d)}),y=o.delayedCall(function(){h||(n.value=f,v&&b())});i.isWebKit||t.addEventListener("changeSelection",function(){t.selection.isEmpty()!=d&&(d=!d,g.schedule())}),w(),v&&t.onFocus();var E=function(e){return e.selectionStart===0&&e.selectionEnd===e.value.length};!n.setSelectionRange&&n.createTextRange&&(n.setSelectionRange=function(e,t){var n=this.createTextRange();n.collapse(!0),n.moveStart("character",e),n.moveEnd("character",t),n.select()},E=function(e){try{var t=e.ownerDocument.selection.createRange()}catch(n){}return!t||t.parentElement()!=e?!1:t.text==e.value});if(i.isOldIE){var S=!1,x=function(e){if(S)return;var t=n.value;if(h||!t||t==f)return;if(e&&t==f[0])return T.schedule();A(t),S=!0,w(),S=!1},T=o.delayedCall(x);r.addListener(n,"propertychange",x);var N={13:1,27:1};r.addListener(n,"keyup",function(e){h&&(!n.value||N[e.keyCode])&&setTimeout(F,0);if((n.value.charCodeAt(0)||0)<129)return T.call();h?j():B()}),r.addListener(n,"keydown",function(e){T.schedule(50)})}var C=function(e){l?l=!1:E(n)?(t.selectAll(),b()):k&&b(t.selection.isEmpty())},k=null;this.setInputHandler=function(e){k=e},this.getInputHandler=function(){return k};var L=!1,A=function(e){k&&(e=k(e),k=null),c?(b(),e&&t.onPaste(e),c=!1):e==f.charAt(0)?L?t.execCommand("del",{source:"ace"}):t.execCommand("backspace",{source:"ace"}):(e.substring(0,2)==f?e=e.substr(2):e.charAt(0)==f.charAt(0)?e=e.substr(1):e.charAt(e.length-1)==f.charAt(0)&&(e=e.slice(0,-1)),e.charAt(e.length-1)==f.charAt(0)&&(e=e.slice(0,-1)),e&&t.onTextInput(e)),L&&(L=!1)},O=function(e){if(h)return;var t=n.value;A(t),w()},M=function(e,t){var n=e.clipboardData||window.clipboardData;if(!n||u)return;var r=a?"Text":"text/plain";return t?n.setData(r,t)!==!1:n.getData(r)},_=function(e,i){var s=t.getCopyText();if(!s)return r.preventDefault(e);M(e,s)?(i?t.onCut():t.onCopy(),r.preventDefault(e)):(l=!0,n.value=s,n.select(),setTimeout(function(){l=!1,w(),b(),i?t.onCut():t.onCopy()}))},D=function(e){_(e,!0)},P=function(e){_(e,!1)},H=function(e){var s=M(e);typeof s=="string"?(s&&t.onPaste(s,e),i.isIE&&setTimeout(b),r.preventDefault(e)):(n.value="",c=!0)};r.addCommandKeyListener(n,t.onCommandKey.bind(t)),r.addListener(n,"select",C),r.addListener(n,"input",O),r.addListener(n,"cut",D),r.addListener(n,"copy",P),r.addListener(n,"paste",H),(!("oncut"in n)||!("oncopy"in n)||!("onpaste"in n))&&r.addListener(e,"keydown",function(e){if(i.isMac&&!e.metaKey||!e.ctrlKey)return;switch(e.keyCode){case 67:P(e);break;case 86:H(e);break;case 88:D(e)}});var B=function(e){if(h||!t.onCompositionStart||t.$readOnly)return;h={},t.onCompositionStart(),setTimeout(j,0),t.on("mousedown",F),t.selection.isEmpty()||(t.insert(""),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup()},j=function(){if(!h||!t.onCompositionUpdate||t.$readOnly)return;var e=n.value.replace(/\x01/g,"");if(h.lastValue===e)return;t.onCompositionUpdate(e),h.lastValue&&t.undo(),h.lastValue=e;if(h.lastValue){var r=t.selection.getRange();t.insert(h.lastValue),t.session.markUndoGroup(),h.range=t.selection.getRange(),t.selection.setRange(r),t.selection.clearSelection()}},F=function(e){if(!t.onCompositionEnd||t.$readOnly)return;var r=h;h=!1;var i=setTimeout(function(){i=null;var e=n.value.replace(/\x01/g,"");if(h)return;e==r.lastValue?w():!r.lastValue&&e&&(w(),A(e))});k=function(n){return i&&clearTimeout(i),n=n.replace(/\x01/g,""),n==r.lastValue?"":(r.lastValue&&i&&t.undo(),n)},t.onCompositionEnd(),t.removeListener("mousedown",F),e.type=="compositionend"&&r.range&&t.selection.setRange(r.range)},I=o.delayedCall(j,50);r.addListener(n,"compositionstart",B),i.isGecko?r.addListener(n,"text",function(){I.schedule()}):(r.addListener(n,"keyup",function(){I.schedule()}),r.addListener(n,"keydown",function(){I.schedule()})),r.addListener(n,"compositionend",F),this.getElement=function(){return n},this.setReadOnly=function(e){n.readOnly=e},this.onContextMenu=function(e){L=!0,b(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,o){if(!o&&i.isOldIE)return;p||(p=n.style.cssText),n.style.cssText=(o?"z-index:100000;":"")+"height:"+n.style.height+";"+(i.isIE?"opacity:0.1;":"");var u=t.container.getBoundingClientRect(),a=s.computedStyle(t.container),f=u.top+(parseInt(a.borderTopWidth)||0),l=u.left+(parseInt(u.borderLeftWidth)||0),c=u.bottom-f-n.clientHeight-2,h=function(e){n.style.left=e.clientX-l-2+"px",n.style.top=Math.min(e.clientY-f-2,c)+"px"};h(e);if(e.type!="mousedown")return;t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(q),i.isWin&&!i.isOldIE&&r.capture(t.container,h,R)},this.onContextMenuClose=R;var q,U=function(e){t.textInput.onContextMenu(e),R()};r.addListener(n,"mouseup",U),r.addListener(n,"mousedown",function(e){e.preventDefault(),R()}),r.addListener(t.renderer.scroller,"contextmenu",U),r.addListener(n,"contextmenu",U)};t.TextInput=f}),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function u(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),t.setDefaultHandler("touchmove",this.onTouchMove.bind(e));var n=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];n.forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function a(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}function f(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row==e.end.row-1&&!e.start.column&&!e.end.column)var n=t.column-4;else var n=2*t.row-e.start.row-e.end.row;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=0;(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var r=this.editor,i=e.getButton();if(i!==0){var s=r.getSelectionRange(),o=s.isEmpty();r.$blockScrolling++,(o||i==1)&&r.selection.moveToPosition(n),r.$blockScrolling--,i==2&&r.textInput.onContextMenu(e.domEvent);return}this.mousedownEvent.time=Date.now();if(t&&!r.isFocused()){r.focus();if(this.$focusTimout&&!this.$clickSelection&&!r.inMultiSelectMode){this.setState("focusWait"),this.captureMouse(e);return}}return this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;n.$blockScrolling++,this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select"),n.$blockScrolling--},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);t.$blockScrolling++;if(this.$clickSelection){var r=this.$clickSelection.comparePoint(n);if(r==-1)e=this.$clickSelection.end;else if(r==1)e=this.$clickSelection.start;else{var i=f(this.$clickSelection,n);n=i.cursor,e=i.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,r=n.renderer.screenToTextCoordinates(this.x,this.y),i=n.selection[e](r.row,r.column);n.$blockScrolling++;if(this.$clickSelection){var s=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end);if(s==-1&&o<=0){t=this.$clickSelection.end;if(i.end.row!=r.row||i.end.column!=r.column)r=i.start}else if(o==1&&s>=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=f(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.$blockScrolling--,n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>o||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var r=n.getSelectionRange();r.isMultiLine()&&r.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(r.start.row),this.$clickSelection.end=n.selection.getLineRange(r.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()},this.onTouchMove=function(e){var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(u.prototype),t.DefaultHandlers=u}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,n){"use strict";function s(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=e("./lib/oop"),i=e("./lib/dom");(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){i.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){i.addCssClass(this.getElement(),e)},this.show=function(e,t,n){e!=null&&this.setText(e),t!=null&&n!=null&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(s.prototype),t.Tooltip=s}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,n){"use strict";function u(e){function l(){var r=u.getDocumentPosition().row,s=n.$annotations[r];if(!s)return c();var o=t.session.getLength();if(r==o){var a=t.renderer.pixelToScreenCoordinates(0,u.y).row,l=u.$pos;if(a>t.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("<br/>"),i.setHtml(f),i.show(),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=u.domEvent.target,d=p.getBoundingClientRect(),v=i.getElement().style;v.left=d.right+"px",v.top=d.bottom+"px"}}function c(){o&&(o=clearTimeout(o)),f&&(i.hide(),f=null,t.removeEventListener("mousewheel",c))}function h(e){i.setPosition(e.x,e.y)}var t=e.editor,n=t.renderer.$gutterLayer,i=new a(t.container);e.editor.setDefaultHandler("guttermousedown",function(r){if(!t.isFocused()||r.getButton()!=0)return;var i=n.getRegion(r);if(i=="foldWidgets")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.setState("selectByLines"),e.captureMouse(r),r.preventDefault()});var o,u,f;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();f&&e.$tooltipFollowsMouse&&h(t),u=t;if(o)return;o=setTimeout(function(){o=null,u&&!e.isMousePressed?l():c()},50)}),s.addListener(t.renderer.$gutter,"mouseout",function(e){u=null;if(!f||o)return;o=setTimeout(function(){o=null,c()},50)}),t.on("changeSession",c)}function a(e){o.call(this,e)}var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;i.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,i=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+i>n&&(e-=e+i-n),t+s>r&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=u}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=i.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!S||i||s)t.$blockScrolling+=1,t.moveCursorToPosition(e),t.$blockScrolling-=1,S=r,x={x:p,y:d};else{var o=l(x.x,x.y,p,d);o>a?S=null:r-S>=u&&(t.renderer.scrollCursorIntoView(),S=null)}}function N(e,n){var r=Date.now(),i=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,u=t.renderer.scroller.getBoundingClientRect(),a={x:{left:p-u.left,right:u.right-p},y:{top:d-u.top,bottom:u.bottom-d}},f=Math.min(a.x.left,a.x.right),l=Math.min(a.y.top,a.y.bottom),c={row:e.row,column:e.column};f/s<=2&&(c.column+=a.x.left<a.x.right?-3:2),l/i<=1&&(c.row+=a.y.top<a.y.bottom?-1:1);var h=e.row!=c.row,v=e.column!=c.column,m=!n||e.row!=n.row;h||v&&!m?E?r-E>=o&&t.renderer.scrollCursorIntoView(c):E=r:E=null}function C(){var e=g;g=t.renderer.screenToTextCoordinates(p,d),T(g,e),N(g,e)}function k(){m=t.selection.toOrientedRange(),h=t.session.addMarker(m,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(v),C(),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.$blockScrolling+=1,t.selection.fromOrientedRange(m),t.$blockScrolling-=1,t.isFocused()&&!w&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),m=null,g=null,y=0,E=null,S=null,i.removeListener(document,"mousemove",O)}function O(){A==null&&(A=setTimeout(function(){A!=null&&h&&L()},20))}function M(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return e=="text/plain"||e=="Text"})}function _(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],r=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return r&&t.indexOf(i)>=0?o="copy":n.indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}var t=e.editor,n=r.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var f=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];f.forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c=t.container,h,p,d,v,m,g,y=0,b,w,E,S,x;this.onDragStart=function(e){if(this.cancelDrag||!c.draggable){var r=this;return setTimeout(function(){r.startSelect(),r.captureMouse(e)},0),e.preventDefault()}m=t.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n.scrollTop=0),i.setDragImage&&i.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),i.clearData(),i.setData("Text",t.session.getTextRange()),w=!0,this.setState("drag")},this.onDragEnd=function(e){c.draggable=!1,w=!1,this.setState(null);if(!t.getReadOnly()){var n=e.dataTransfer.dropEffect;!b&&n=="move"&&t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||(k(),y++),A!==null&&(A=null),e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragLeave=function(e){y--;if(y<=0&&h)return L(),b=null,i.preventDefault(e)},this.onDrop=function(e){if(!g)return;var n=e.dataTransfer;if(w)switch(b){case"move":m.contains(g.row,g.column)?m={start:g,end:g}:m=t.moveText(m,g);break;case"copy":m=t.moveText(m,g,!0)}else{var r=n.getData("Text");m={start:g,end:t.session.insert(g,r)},t.focus(),b=null}return L(),i.preventDefault(e)},i.addListener(c,"dragstart",this.onDragStart.bind(e)),i.addListener(c,"dragend",this.onDragEnd.bind(e)),i.addListener(c,"dragenter",this.onDragEnter.bind(e)),i.addListener(c,"dragover",this.onDragOver.bind(e)),i.addListener(c,"dragleave",this.onDragLeave.bind(e)),i.addListener(c,"drop",this.onDrop.bind(e));var A=null}function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=200,u=200,a=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var n=s.isWin?"default":"move";e.renderer.setCursorStyle(n),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&this.state=="dragReady"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(this.state==="dragWait"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),r=e.getButton(),i=e.domEvent.detail||1;if(i===1&&r===0&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on");if(t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var u=t.container;u.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}).call(f.prototype),t.DragdropHandler=f}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=r.getDocumentHead(),i=document.createElement("script");i.src=e,n.appendChild(i),i.onload=i.onreadystatechange=function(e,n){if(n||!i.readyState||i.readyState=="loaded"||i.readyState=="complete")i=i.onload=i.onreadystatechange=null,n||t()}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/lib/app_config",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"no use strict";function o(e){typeof console!="undefined"&&console.warn&&console.warn.apply(console,arguments)}function u(e,t){var n=new Error(e);n.data=t,typeof console=="object"&&console.error&&console.error(n),setTimeout(function(){throw n})}var r=e("./oop"),i=e("./event_emitter").EventEmitter,s={setOptions:function(e){Object.keys(e).forEach(function(t){this.setOption(t,e[t])},this)},getOptions:function(e){var t={};return e?Array.isArray(e)||(t=e,e=Object.keys(t)):e=Object.keys(this.$options),e.forEach(function(e){t[e]=this.getOption(e)},this),t},setOption:function(e,t){if(this["$"+e]===t)return;var n=this.$options[e];if(!n)return o('misspelled option "'+e+'"');if(n.forwardTo)return this[n.forwardTo]&&this[n.forwardTo].setOption(e,t);n.handlesSet||(this["$"+e]=t),n&&n.set&&n.set.call(this,t)},getOption:function(e){var t=this.$options[e];return t?t.forwardTo?this[t.forwardTo]&&this[t.forwardTo].getOption(e):t&&t.get?t.get.call(this):this["$"+e]:o('misspelled option "'+e+'"')}},a=function(){this.$defaultOptions={}};(function(){r.implement(this,i),this.defineOptions=function(e,t,n){return e.$options||(this.$defaultOptions[t]=e.$options={}),Object.keys(n).forEach(function(t){var r=n[t];typeof r=="string"&&(r={forwardTo:r}),r.name||(r.name=t),e.$options[r.name]=r,"initialValue"in r&&(e["$"+r.name]=r.initialValue)}),r.implement(e,s),this},this.resetOptions=function(e){Object.keys(e.$options).forEach(function(t){var n=e.$options[t];"value"in n&&e.setOption(t,n.value)})},this.setDefaultValue=function(e,t,n){var r=this.$defaultOptions[e]||(this.$defaultOptions[e]={});r[t]&&(r.forwardTo?this.setDefaultValue(r.forwardTo,t,n):r[t].value=n)},this.setDefaultValues=function(e,t){Object.keys(t).forEach(function(n){this.setDefaultValue(e,n,t[n])},this)},this.warn=o,this.reportError=u}).call(a.prototype),t.AppConfig=a}),ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/lib/net","ace/lib/app_config"],function(e,t,n){"no use strict";function f(r){if(!u||!u.document)return;a.packaged=r||e.packaged||n.packaged||u.define&&define.packaged;var i={},s="",o=document.currentScript||document._currentScript,f=o&&o.ownerDocument||document,c=f.getElementsByTagName("script");for(var h=0;h<c.length;h++){var p=c[h],d=p.src||p.getAttribute("src");if(!d)continue;var v=p.attributes;for(var m=0,g=v.length;m<g;m++){var y=v[m];y.name.indexOf("data-ace-")===0&&(i[l(y.name.replace(/^data-ace-/,""))]=y.value)}var b=d.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);b&&(s=b[1])}s&&(i.base=i.base||s,i.packaged=!0),i.basePath=i.base,i.workerPath=i.workerPath||i.base,i.modePath=i.modePath||i.base,i.themePath=i.themePath||i.base,delete i.base;for(var w in i)typeof i[w]!="undefined"&&t.set(w,i[w])}function l(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCase()})}var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./lib/net"),o=e("./lib/app_config").AppConfig;n.exports=t=new o;var u=function(){return this||typeof window!="undefined"&&window}(),a={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{}};t.get=function(e){if(!a.hasOwnProperty(e))throw new Error("Unknown config key: "+e);return a[e]},t.set=function(e,t){if(!a.hasOwnProperty(e))throw new Error("Unknown config key: "+e);a[e]=t},t.all=function(){return r.copyObject(a)},t.moduleUrl=function(e,t){if(a.$moduleUrls[e])return a.$moduleUrls[e];var n=e.split("/");t=t||n[n.length-2]||"";var r=t=="snippets"?"/":"-",i=n[n.length-1];if(t=="worker"&&r=="-"){var s=new RegExp("^"+t+"[\\-_]|[\\-_]"+t+"$","g");i=i.replace(s,"")}(!i||i==t)&&n.length>1&&(i=n[n.length-2]);var o=a[t+"Path"];return o==null?o=a.basePath:r=="/"&&(t=r=""),o&&o.slice(-1)!="/"&&(o+="/"),o+t+r+i+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a)},t.init=f}),ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("./default_handlers").DefaultHandlers,o=e("./default_gutter_handler").GutterHandler,u=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,f=e("../config"),l=function(e){var t=this;this.editor=e,new s(this),new o(this),new a(this);var n=function(t){var n=!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement());n&&window.focus(),e.focus()},u=e.renderer.getMouseEventTarget();r.addListener(u,"click",this.onMouseEvent.bind(this,"click")),r.addListener(u,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener([u,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),r.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var f=e.renderer.$gutter;r.addListener(f,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(f,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(f,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(f,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(u,"mousedown",n),r.addListener(f,"mousedown",n),i.isIE&&e.renderer.scrollBarV&&(r.addListener(e.renderer.scrollBarV.element,"mousedown",n),r.addListener(e.renderer.scrollBarH.element,"mousedown",n)),e.on("mousemove",function(n){if(t.state||t.$dragDelay||!t.$dragEnabled)return;var r=e.renderer.screenToTextCoordinates(n.x,n.y),i=e.session.selection.getRange(),s=e.renderer;!i.isEmpty()&&i.insideStart(r.row,r.column)?s.setCursorStyle("default"):s.setCursorStyle("")})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new u(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!n||!n.length)return;this.editor._emit(e,new u(t,this.editor))},this.onMouseWheel=function(e,t){var n=new u(t,this.editor);n.speed=this.$scrollSpeed*2,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.onTouchMove=function(e,t){var n=new u(t,this.editor);n.speed=1,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var s=this,o=function(e){if(!e)return;if(i.isWebKit&&!e.which&&s.releaseMouse)return s.releaseMouse();s.x=e.clientX,s.y=e.clientY,t&&t(e),s.mouseEvent=new u(e,s.editor),s.$mouseMoved=!0},a=function(e){clearInterval(l),f(),s[s.state+"End"]&&s[s.state+"End"](e),s.state="",n.$keepTextAreaAtCursor==null&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1,s.$onCaptureMouseMove=s.releaseMouse=null,e&&s.onMouseEvent("mouseup",e)},f=function(){s[s.state]&&s[s.state](),s.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){a(e)});s.$onCaptureMouseMove=o,s.releaseMouse=r.capture(this.editor.container,o,a);var l=setInterval(f,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){if(t&&t.domEvent&&t.domEvent.type!="contextmenu")return;this.editor.off("nativecontextmenu",e),t&&t.domEvent&&r.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:i.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=l}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){"use strict";function r(e){e.on("click",function(t){var n=t.getDocumentPosition(),r=e.session,i=r.getFoldAt(n.row,n.column,1);i&&(t.getAccelKey()?r.removeFold(i):r.expandFold(i),t.stop())}),e.on("gutterclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session,s=i.getParentFoldRangeData(r,!0),o=s.range||s.firstRange;if(o){r=o.start.row;var u=i.getFoldAt(r,i.getLine(r).length,1);u?i.removeFold(u):(i.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}t.FoldHandler=r}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){"use strict";var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]==e)return;while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;typeof e=="function"&&!e.handleKeyboard&&(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(n){return n.getStatusText&&n.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,n,r){var s,o=!1,u=this.$editor.commands;for(var a=this.$handlers.length;a--;){s=this.$handlers[a].handleKeyboard(this.$data,e,t,n,r);if(!s||!s.command)continue;s.command=="null"?o=!0:o=u.exec(s.command,this.$editor,s.args,r),o&&r&&e!=-1&&s.passEvent!=1&&s.command.passEvent!=1&&i.stopEvent(r);if(o)break}return!o&&e==-1&&(s={command:"insertstring"},o=u.exec("insertstring",this.$editor,t)),o&&this.$editor._signal("keyboardActivity",s),o},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(s.prototype),t.KeyBinding=s}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=function(e){this.session=e,this.doc=e.getDocument(),this.clearSelection(),this.lead=this.selectionLead=this.doc.createAnchor(0,0),this.anchor=this.selectionAnchor=this.doc.createAnchor(0,0);var t=this;this.lead.on("change",function(e){t._emit("changeCursor"),t.$isEmpty||t._emit("changeSelection"),!t.$keepDesiredColumnOnChange&&e.old.column!=e.value.column&&(t.$desiredColumn=null)}),this.selectionAnchor.on("change",function(){t.$isEmpty||t._emit("changeSelection")})};(function(){r.implement(this,s),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return this.isEmpty()?!1:this.getRange().isMultiLine()},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(e,t){this.anchor.setPosition(e,t),this.$isEmpty&&(this.$isEmpty=!1,this._emit("changeSelection"))},this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.shiftSelection=function(e){if(this.$isEmpty){this.moveCursorTo(this.lead.row,this.lead.column+e);return}var t=this.getSelectionAnchor(),n=this.getSelectionLead(),r=this.isBackwards();(!r||t.column!==0)&&this.setSelectionAnchor(t.row,t.column+e),(r||n.column!==0)&&this.$moveSelection(function(){this.moveCursorTo(n.row,n.column+e)})},this.isBackwards=function(){var e=this.anchor,t=this.lead;return e.row>t.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t===!0?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column===0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-n,e.column).split(" ").length-1==n?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row<this.doc.getLength()-1&&this.moveCursorTo(this.lead.row+1,0);else{var n=this.session.getTabSize(),e=this.lead;this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column,e.column+n).split(" ").length-1==n?this.moveCursorBy(0,n):this.moveCursorBy(0,1)}},this.moveCursorLineStart=function(){var e=this.lead.row,t=this.lead.column,n=this.session.documentToScreenRow(e,t),r=this.session.screenToDocumentPosition(n,0),i=this.session.getDisplayLine(e,null,r.row,r.column),s=i.match(/^\s*/);s[0].length!=t&&!this.session.$useEmacsStyleLineStart&&(r.column+=s[0].length),this.moveCursorToPosition(r)},this.moveCursorLineEnd=function(){var e=this.lead,t=this.session.getDocumentLastRowColumnPosition(e.row,e.column);if(this.lead.column==t.column){var n=this.session.getLine(t.row);if(t.column==n.length){var r=n.search(/\s+$/);r>0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=this.session.nonTokenRe.exec(r))t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t);if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e<this.doc.getLength()-1&&this.moveCursorWordRight();return}if(i=this.session.tokenRe.exec(r))t+=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.moveCursorLongWordLeft=function(){var e=this.lead.row,t=this.lead.column,n;if(n=this.session.getFoldAt(e,t,-1)){this.moveCursorTo(n.start.row,n.start.column);return}var r=this.session.getFoldStringAt(e,t,-1);r==null&&(r=this.doc.getLine(e).substring(0,t));var s=i.stringReverse(r),o;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;if(o=this.session.nonTokenRe.exec(s))t-=this.session.nonTokenRe.lastIndex,s=s.slice(this.session.nonTokenRe.lastIndex),this.session.nonTokenRe.lastIndex=0;if(t<=0){this.moveCursorTo(e,0),this.moveCursorLeft(),e>0&&this.moveCursorWordLeft();return}if(o=this.session.tokenRe.exec(s))t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t,n=0,r,i=/\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e<s&&/^\s*$/.test(r));/^\s+/.test(r)||(r=""),t=0}var o=this.$shortWordEndIndex(r);this.moveCursorTo(e,t+o)},this.moveCursorShortWordLeft=function(){var e=this.lead.row,t=this.lead.column,n;if(n=this.session.getFoldAt(e,t,-1))return this.moveCursorTo(n.start.row,n.start.column);var r=this.session.getLine(e).substring(0,t);if(t===0){do e--,r=this.doc.getLine(e);while(e>0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);t===0&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var r=this.session.screenToDocumentPosition(n.row+e,n.column);e!==0&&t===0&&r.row===this.lead.row&&r.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[r.row]&&(r.row>0||e>0)&&r.row++,this.moveCursorTo(r.row,r.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return o.fromPoints(t,n)}catch(r){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(e.start==undefined){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(u.prototype),t.Selection=u}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,n){"use strict";var r=e("./config"),i=2e3,s=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){var n=this.states[t],r=[],i=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",u=[];for(var a=0;a<n.length;a++){var f=n[a];f.defaultToken&&(s.defaultToken=f.defaultToken),f.caseInsensitive&&(o="gi");if(f.regex==null)continue;f.regex instanceof RegExp&&(f.regex=f.regex.toString().slice(1,-1));var l=f.regex,c=(new RegExp("(?:("+l+")|(.))")).exec("a").length-2;Array.isArray(f.token)?f.token.length==1||c==1?f.token=f.token[0]:c-1!=f.token.length?(this.reportError("number of classes and regexp groups doesn't match",{rule:f,groupCount:c-1}),f.token=f.token[0]):(f.tokenArray=f.token,f.token=null,f.onMatch=this.$arrayTokens):typeof f.token=="function"&&!f.onMatch&&(c>1?f.onMatch=this.$applyToken:f.onMatch=f.token),c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null)}r.length||(s[0]=0,r.push("$")),u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){i=e|0},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;i<s;i++)t[i]&&(r[r.length]={type:n[i],value:t[i]});return r},this.$arrayTokens=function(e){if(!e)return[];var t=this.splitRegex.exec(e);if(!t)return"text";var n=[],r=this.tokenArray;for(var i=0,s=r.length;i<s;i++)t[i+1]&&(n[n.length]={type:r[i],value:t[i+1]});return n},this.removeCapturingGroups=function(e){var t=e.replace(/\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g,function(e,t){return t?"(?:":e});return t},this.createSplitterRegexp=function(e,t){if(e.indexOf("(?=")!=-1){var n=0,r=!1,i={};e.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g,function(e,t,s,o,u,a){return r?r=u!="]":u?r=!0:o?(n==i.stack&&(i.end=a+1,i.stack=-1),n--):s&&(n++,s.length!=1&&(i.stack=n,i.start=a)),e}),i.end!=null&&/^\)*$/.test(e.substr(i.end))&&(e=e.substring(0,i.start)+e.substr(i.end))}return e.charAt(0)!="^"&&(e="^"+e),e.charAt(e.length-1)!="$"&&(e+="$"),new RegExp(e,(t||"").replace("g",""))},this.getLineTokens=function(e,t){if(t&&typeof t!="string"){var n=t.slice(0);t=n[0],t==="#tmp"&&(n.shift(),t=n.shift())}else var n=[];var r=t||"start",s=this.states[r];s||(r="start",s=this.states[r]);var o=this.matchMappings[r],u=this.regExps[r];u.lastIndex=0;var a,f=[],l=0,c=0,h={type:null,value:""};while(a=u.exec(e)){var p=o.defaultToken,d=null,v=a[0],m=u.lastIndex;if(m-v.length>l){var g=e.substring(l,m-v.length);h.type==p?h.value+=g:(h.type&&f.push(h),h={type:p,value:g})}for(var y=0;y<a.length-2;y++){if(a[y+1]===undefined)continue;d=s[o[y]],d.onMatch?p=d.onMatch(v,r,n):p=d.token,d.next&&(typeof d.next=="string"?r=d.next:r=d.next(r,n),s=this.states[r],s||(this.reportError("state doesn't exist",r),r="start",s=this.states[r]),o=this.matchMappings[r],l=m,u=this.regExps[r],u.lastIndex=m);break}if(v)if(typeof p=="string")!!d&&d.merge===!1||h.type!==p?(h.type&&f.push(h),h={type:p,value:v}):h.value+=v;else if(p){h.type&&f.push(h),h={type:null,value:""};for(var y=0;y<p.length;y++)f.push(p[y])}if(l==e.length)break;l=m;if(c++>i){c>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});while(l<e.length)h.type&&f.push(h),h={value:e.substring(l,l+=2e3),type:"overflow"};r="start",n=[];break}}return h.type&&f.push(h),n.length>1&&n[0]!==r&&n.unshift("#tmp",r),{tokens:f,state:n.length?n:r}},this.reportError=r.reportError}).call(s.prototype),t.Tokenizer=s}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang"),i=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(!t){for(var n in e)this.$rules[n]=e[n];return}for(var n in e){var r=e[n];for(var i=0;i<r.length;i++){var s=r[i];if(s.next||s.onMatch)typeof s.next=="string"&&s.next.indexOf(t)!==0&&(s.next=t+s.next),s.nextState&&s.nextState.indexOf(t)!==0&&(s.nextState=t+s.nextState)}this.$rules[t+n]=r}},this.getRules=function(){return this.$rules},this.embedRules=function(e,t,n,i,s){var o=typeof e=="function"?(new e).getRules():e;if(i)for(var u=0;u<i.length;u++)i[u]=t+i[u];else{i=[];for(var a in o)i.push(t+a)}this.addRules(o,t);if(n){var f=Array.prototype[s?"push":"unshift"];for(var u=0;u<i.length;u++)f.apply(this.$rules[i[u]],r.deepCopy(n))}this.$embeds||(this.$embeds=[]),this.$embeds.push(t)},this.getEmbeds=function(){return this.$embeds};var e=function(e,t){return(e!="start"||t.length)&&t.unshift(this.nextState,e),this.nextState},t=function(e,t){return t.shift(),t.shift()||"start"};this.normalizeRules=function(){function i(s){var o=r[s];o.processed=!0;for(var u=0;u<o.length;u++){var a=o[u],f=null;Array.isArray(a)&&(f=a,a={}),!a.regex&&a.start&&(a.regex=a.start,a.next||(a.next=[]),a.next.push({defaultToken:a.token},{token:a.token+".end",regex:a.end||a.start,next:"pop"}),a.token=a.token+".start",a.push=!0);var l=a.next||a.push;if(l&&Array.isArray(l)){var c=a.stateName;c||(c=a.token,typeof c!="string"&&(c=c[0]||""),r[c]&&(c+=n++)),r[c]=l,a.next=c,i(c)}else l=="pop"&&(a.next=t);a.push&&(a.nextState=a.next||a.push,a.next=e,delete a.push);if(a.rules)for(var h in a.rules)r[h]?r[h].push&&r[h].push.apply(r[h],a.rules[h]):r[h]=a.rules[h];var p=typeof a=="string"?a:typeof a.include=="string"?a.include:"";p&&(f=r[p]);if(f){var d=[u,1].concat(f);a.noEscape&&(d=d.filter(function(e){return!e.next})),o.splice.apply(o,d),u--}a.keywordMap&&(a.token=this.createKeywordMapper(a.keywordMap,a.defaultToken||"text",a.caseInsensitive),delete a.defaultToken)}}var n=0,r=this.$rules;Object.keys(r).forEach(i,this)},this.createKeywordMapper=function(e,t,n,r){var i=Object.create(null);return Object.keys(e).forEach(function(t){var s=e[t];n&&(s=s.toLowerCase());var o=s.split(r||"|");for(var u=o.length;u--;)i[o[u]]=t}),Object.getPrototypeOf(i)&&(i.__proto__=null),this.$keywordList=Object.keys(i),e=null,n?function(e){return i[e.toLowerCase()]||t}:function(e){return i[e]||t}},this.getKeywords=function(){return this.$keywords}}).call(i.prototype),t.TextHighlightRules=i}),ace.define("ace/mode/behaviour",["require","exports","module"],function(e,t,n){"use strict";var r=function(){this.$behaviours={}};(function(){this.add=function(e,t,n){switch(undefined){case this.$behaviours:this.$behaviours={};case this.$behaviours[e]:this.$behaviours[e]={}}this.$behaviours[e][t]=n},this.addBehaviours=function(e){for(var t in e)for(var n in e[t])this.add(t,n,e[t][n])},this.remove=function(e){this.$behaviours&&this.$behaviours[e]&&delete this.$behaviours[e]},this.inherit=function(e,t){if(typeof e=="function")var n=(new e).getBehaviours(t);else var n=e.getBehaviours(t);this.addBehaviours(n)},this.getBehaviours=function(e){if(!e)return this.$behaviours;var t={};for(var n=0;n<e.length;n++)this.$behaviours[e[n]]&&(t[e[n]]=this.$behaviours[e[n]]);return t}}).call(r.prototype),t.Behaviour=r}),ace.define("ace/unicode",["require","exports","module"],function(e,t,n){"use strict";function r(e){var n=/\w{4}/g;for(var r in e)t.packages[r]=e[r].replace(n,"\\u$&")}t.packages={},r({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Ll:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",Lo:"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048906DE20DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",So:"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"})}),ace.define("ace/token_iterator",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t,n){this.$session=e,this.$row=t,this.$rowTokens=e.getTokens(t);var r=e.getTokenAt(t,n);this.$tokenIndex=r?r.index:-1};(function(){this.stepBackward=function(){this.$tokenIndex-=1;while(this.$tokenIndex<0){this.$row-=1;if(this.$row<0)return this.$row=0,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=this.$rowTokens.length-1}return this.$rowTokens[this.$tokenIndex]},this.stepForward=function(){this.$tokenIndex+=1;var e;while(this.$tokenIndex>=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(r.prototype),t.TokenIterator=r}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,n){"use strict";var r=e("../tokenizer").Tokenizer,i=e("./text_highlight_rules").TextHighlightRules,s=e("./behaviour").Behaviour,o=e("../unicode"),u=e("../lib/lang"),a=e("../token_iterator").TokenIterator,f=e("../range").Range,l=function(){this.HighlightRules=i,this.$behaviour=new s};(function(){this.tokenRe=new RegExp("^["+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new r(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,n,r){function w(e){for(var t=n;t<=r;t++)e(i.getLine(t),t)}var i=t.doc,s=!0,o=!0,a=Infinity,f=t.getTabSize(),l=!1;if(!this.lineCommentStart){if(!this.blockComment)return!1;var c=this.blockComment.start,h=this.blockComment.end,p=new RegExp("^(\\s*)(?:"+u.escapeRegExp(c)+")"),d=new RegExp("(?:"+u.escapeRegExp(h)+")\\s*$"),v=function(e,t){if(g(e,t))return;if(!s||/\S/.test(e))i.insertInLine({row:t,column:e.length},h),i.insertInLine({row:t,column:a},c)},m=function(e,t){var n;(n=e.match(d))&&i.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(p))&&i.removeInLine(t,n[1].length,n[0].length)},g=function(e,n){if(p.test(e))return!0;var r=t.getTokens(n);for(var i=0;i<r.length;i++)if(r[i].type==="comment")return!0}}else{if(Array.isArray(this.lineCommentStart))var p=this.lineCommentStart.map(u.escapeRegExp).join("|"),c=this.lineCommentStart[0];else var p=u.escapeRegExp(this.lineCommentStart),c=this.lineCommentStart;p=new RegExp("^(\\s*)(?:"+p+") ?"),l=t.getUseSoftTabs();var m=function(e,t){var n=e.match(p);if(!n)return;var r=n[1].length,s=n[0].length;!b(e,r,s)&&n[0][s-1]==" "&&s--,i.removeInLine(t,r,s)},y=c+" ",v=function(e,t){if(!s||/\S/.test(e))b(e,a,a)?i.insertInLine({row:t,column:a},y):i.insertInLine({row:t,column:a},c)},g=function(e,t){return p.test(e)},b=function(e,t,n){var r=0;while(t--&&e.charAt(t)==" ")r++;if(r%f!=0)return!1;var r=0;while(e.charAt(n++)==" ")r++;return f>2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(n<a&&(a=n),o&&!g(e,t)&&(o=!1)):E>e.length&&(E=e.length)}),a==Infinity&&(a=E,s=!1,o=!1),l&&a%f!=0&&(a=Math.floor(a/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new a(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,l=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new f(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new a(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new f(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);l.start.row==c&&(l.start.column+=h),l.end.row==c&&(l.end.column+=h),t.selection.fromOrientedRange(l)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);var n=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;t<n.length;t++)(function(e){var r=n[t],i=e[r];e[n[t]]=function(){return this.$delegator(r,arguments,i)}})(this)},this.$delegator=function(e,t,n){var r=t[0];typeof r!="string"&&(r=r[0]);for(var i=0;i<this.$embeds.length;i++){if(!this.$modes[this.$embeds[i]])continue;var s=r.split(this.$embeds[i]);if(!s[0]&&s[1]){t[0]=s[1];var o=this.$modes[this.$embeds[i]];return o[e].apply(o,t)}}var u=n.apply(this,t);return n?u:undefined},this.transformAction=function(e,t,n,r,i){if(this.$behaviour){var s=this.$behaviour.getBehaviours();for(var o in s)if(s[o][t]){var u=s[o][t].apply(this,arguments);if(u)return u}}},this.getKeywords=function(e){if(!this.completionKeywords){var t=this.$tokenizer.rules,n=[];for(var r in t){var i=t[r];for(var s=0,o=i.length;s<o;s++)if(typeof i[s].token=="string")/keyword|support|storage/.test(i[s].token)&&n.push(i[s].regex);else if(typeof i[s].token=="object")for(var u=0,a=i[s].token.length;u<a;u++)if(/keyword|support|storage/.test(i[s].token[u])){var r=i[s].regex.match(/\(.+?\)/g)[u];n.push(r.substr(1,r.length-2))}}this.completionKeywords=n}return e?n.concat(this.$keywordList||[]):this.$keywordList},this.$createKeywordList=function(){return this.$highlightRules||this.getTokenizer(),this.$keywordList=this.$highlightRules.$keywordList||[]},this.getCompletions=function(e,t,n,r){var i=this.$keywordList||this.$createKeywordList();return i.map(function(e){return{name:e,value:e,score:0,meta:"keyword"}})},this.$id="ace/mode/text"}).call(l.prototype),t.Mode=l}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,n){"use strict";function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: "+t}function i(e,t){return t.row>=0&&t.row<e.length&&t.column>=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.column<t.column;return e.row<t.row||e.row==t.row&&r}function t(t,n,r){var i=t.action=="insert",s=(i?1:-1)*(t.end.row-t.start.row),o=(i?1:-1)*(t.end.column-t.start.column),u=t.start,a=i?u:t.end;return e(n,u,r)?{row:n.row,column:n.column}:e(a,n,!r)?{row:n.row+s,column:n.column+(n.row==a.row?o:0)}:{row:u.row,column:u.column}}r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){if(e.start.row==e.end.row&&e.start.row!=this.row)return;if(e.start.row>this.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e<this.getLength()?(t=t.concat([""]),n=0):(t=[""].concat(t),e--,n=this.$lines[e].length),this.insertMergedLines({row:e,column:n},t)},this.insertMergedLines=function(e,t){var n=this.clippedPos(e.row,e.column),r={row:n.row+t.length-1,column:(t.length==1?n.column:0)+t[t.length-1].length};return this.applyDelta({start:n,end:r,action:"insert",lines:t}),this.clonePos(r)},this.remove=function(e){var t=this.clippedPos(e.start.row,e.start.column),n=this.clippedPos(e.end.row,e.end.column);return this.applyDelta({start:t,end:n,action:"remove",lines:this.getLinesForRange({start:t,end:n})}),this.clonePos(t)},this.removeInLine=function(e,t,n){var r=this.clippedPos(e,t),i=this.clippedPos(e,n);return this.applyDelta({start:r,end:i,action:"remove",lines:this.getLinesForRange({start:r,end:i})},!0),this.clonePos(r)},this.removeFullLines=function(e,t){e=Math.min(Math.max(0,e),this.getLength()-1),t=Math.min(Math.max(0,t),this.getLength()-1);var n=t==this.getLength()-1&&e>0,r=t<this.getLength()-1,i=n?e-1:e,s=n?this.getLine(i).length:0,u=r?t+1:t,a=r?0:this.getLine(u).length,f=new o(i,s,u,a),l=this.$lines.slice(e,t+1);return this.applyDelta({start:f.start,end:f.end,action:"remove",lines:this.getLinesForRange(f)}),l},this.removeNewLine=function(e){e<this.getLength()-1&&e>=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++)this.applyDelta(e[t])},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(a.prototype),t.Document=a}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var n=this;this.$worker=function(){if(!n.running)return;var e=new Date,t=n.currentLine,r=-1,i=n.doc,s=t;while(n.lines[t])t++;var o=i.getLength(),u=0;n.running=!1;while(t<o){n.$tokenizeRow(t),r=t;do t++;while(n.lines[t]);u++;if(u%5===0&&new Date-e>20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,s<=r&&n.fireUpdateEvent(s,r)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.lines[t]=null;else if(e.action=="remove")this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.lines.splice.apply(this.lines,r),this.states.splice.apply(this.states,r)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.row<this.startRow||e.endRow>this.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f<i.length;f++){s=i[f],o=s.range.compareStart(t,n);if(o==-1){e(null,t,n,r,a);return}u=e(null,s.start.row,s.start.column,r,a),u=!u&&e(s.placeholder,s.start.row,s.start.column,r);if(u||o===0)return;a=!s.sameRow,r=s.end.column}e(null,t,n,r,a)},this.getNextFoldTo=function(e,t){var n,r;for(var i=0;i<this.folds.length;i++){n=this.folds[i],r=n.range.compareEnd(e,t);if(r==-1)return{fold:n,kind:"after"};if(r===0)return{fold:n,kind:"inside"}}return null},this.addRemoveChars=function(e,t,n){var r=this.getNextFoldTo(e,t),i,s;if(r){i=r.fold;if(r.kind=="inside"&&i.start.column!=t&&i.start.row!=e)window.console&&window.console.log(e,t,i);else if(i.start.row==e){s=this.folds;var o=s.indexOf(i);o===0&&(this.start.column+=n);for(o;o<s.length;o++){i=s[o],i.start.column+=n;if(!i.sameRow)return;i.end.column+=n}this.end.column+=n}}},this.split=function(e,t){var n=this.getNextFoldTo(e,t);if(!n||n.kind=="inside")return null;var r=n.fold,s=this.folds,o=this.foldData,u=s.indexOf(r),a=s[u-1];this.end.row=a.end.row,this.end.column=a.end.column,s=s.splice(u,s.length-u);var f=new i(o,s);return o.splice(o.indexOf(this)+1,0,f),f},this.merge=function(e){var t=e.folds;for(var n=0;n<t.length;n++)this.addFold(t[n]);var r=this.foldData;r.splice(r.indexOf(e),1)},this.toString=function(){var e=[this.range.toString()+": ["];return this.folds.forEach(function(t){e.push(" "+t.toString())}),e.push("]"),e.join("\n")},this.idxToPosition=function(e){var t=0;for(var n=0;n<this.folds.length;n++){var r=this.folds[n];e-=r.start.column-t;if(e<0)return{row:r.start.row,column:r.start.column+e};e-=r.placeholder.length;if(e<0)return r.start;t=r.end.column}return{row:this.end.row,column:this.end.column+e}}}).call(i.prototype),t.FoldLine=i}),ace.define("ace/range_list",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("./range").Range,i=r.comparePoints,s=function(){this.ranges=[]};(function(){this.comparePoints=i,this.pointIndex=function(e,t,n){var r=this.ranges;for(var s=n||0;s<r.length;s++){var o=r[s],u=i(e,o.end);if(u>0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s<t.length;s++){r=n,n=t[s];var o=i(r.end,n.start);if(o<0)continue;if(o==0&&!r.isEmpty()&&!n.isEmpty())continue;i(r.end,n.end)<0&&(r.end.row=n.end.row,r.end.column=n.end.column),t.splice(s,1),e.push(n),n=r,s--}return this.ranges=t,e},this.contains=function(e,t){return this.pointIndex({row:e,column:t})>=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.row<e)return[];var r=this.pointIndex({row:e,column:0});r<0&&(r=-r-1);var i=this.pointIndex({row:t,column:0},r);i<0&&(i=-i-1);var s=[];for(var o=r;o<i;o++)s.push(n[o]);return s},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(e){this.session&&this.detach(),this.session=e,this.onChange=this.$onChange.bind(this),this.session.on("change",this.onChange)},this.detach=function(){if(!this.session)return;this.session.removeListener("change",this.onChange),this.session=null},this.$onChange=function(e){if(e.action=="insert")var t=e.start,n=e.end;else var n=e.start,t=e.end;var r=t.row,i=n.row,s=i-r,o=-t.column+n.column,u=this.ranges;for(var a=0,f=u.length;a<f;a++){var l=u[a];if(l.end.row<r)continue;if(l.start.row>r)break;l.start.row==r&&l.start.column>=t.column&&(l.start.column!=t.column||!this.$insertRight)&&(l.start.column+=o,l.start.row+=s);if(l.end.row==r&&l.end.column>=t.column){if(l.end.column==t.column&&this.$insertRight)continue;l.end.column==t.column&&o>0&&a<f-1&&l.end.column>l.start.column&&l.end.column==u[a+1].start.column&&(l.end.column-=o),l.end.column+=o,l.end.row+=s}}if(s!=0&&a<f)for(;a<f;a++){var l=u[a];l.start.row+=s,l.end.row+=s}}}).call(s.prototype),t.RangeList=s}),ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(e,t,n){"use strict";function u(e,t){e.row-=t.row,e.row==0&&(e.column-=t.column)}function a(e,t){u(e.start,t),u(e.end,t)}function f(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row}function l(e,t){f(e.start,t),f(e.end,t)}var r=e("../range").Range,i=e("../range_list").RangeList,s=e("../lib/oop"),o=t.Fold=function(e,t){this.foldLine=null,this.placeholder=t,this.range=e,this.start=e.start,this.end=e.end,this.sameRow=e.start.row==e.end.row,this.subFolds=this.ranges=[]};s.inherits(o,i),function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString()},this.setFoldLine=function(e){this.foldLine=e,this.subFolds.forEach(function(t){t.setFoldLine(e)})},this.clone=function(){var e=this.range.clone(),t=new o(e,this.placeholder);return this.subFolds.forEach(function(e){t.subFolds.push(e.clone())}),t.collapseChildren=this.collapseChildren,t},this.addSubFold=function(e){if(this.range.isEqual(e))return;if(!this.range.containsRange(e))throw new Error("A fold can't intersect already existing fold"+e.range+this.range);a(e,this.start);var t=e.start.row,n=e.start.column;for(var r=0,i=-1;r<this.subFolds.length;r++){i=this.subFolds[r].range.compare(t,n);if(i!=1)break}var s=this.subFolds[r];if(i==0)return s.addSubFold(e);var t=e.range.end.row,n=e.range.end.column;for(var o=r,i=-1;o<this.subFolds.length;o++){i=this.subFolds[o].range.compare(t,n);if(i!=1)break}var u=this.subFolds[o];if(i==0)throw new Error("A fold can't intersect already existing fold"+e.range+this.range);var f=this.subFolds.splice(r,o-r,e);return e.setFoldLine(this.foldLine),e},this.restoreRange=function(e){return l(e,this.start)}}.call(o.prototype)}),ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator"],function(e,t,n){"use strict";function u(){this.getFoldAt=function(e,t,n){var r=this.getFoldLine(e);if(!r)return null;var i=r.folds;for(var s=0;s<i.length;s++){var o=i[s];if(o.range.contains(e,t)){if(n==1&&o.range.isEnd(e,t))continue;if(n==-1&&o.range.isStart(e,t))continue;return o}}},this.getFoldsInRange=function(e){var t=e.start,n=e.end,r=this.$foldData,i=[];t.column+=1,n.column-=1;for(var s=0;s<r.length;s++){var o=r[s].range.compareRange(e);if(o==2)continue;if(o==-2)break;var u=r[s].folds;for(var a=0;a<u.length;a++){var f=u[a];o=f.range.compareRange(e);if(o==-2)break;if(o==2)continue;if(o==42)break;i.push(f)}}return t.column-=1,n.column+=1,i},this.getFoldsInRangeList=function(e){if(Array.isArray(e)){var t=[];e.forEach(function(e){t=t.concat(this.getFoldsInRange(e))},this)}else var t=this.getFoldsInRange(e);return t},this.getAllFolds=function(){var e=[],t=this.$foldData;for(var n=0;n<t.length;n++)for(var r=0;r<t[n].folds.length;r++)e.push(t[n].folds[r]);return e},this.getFoldStringAt=function(e,t,n,r){r=r||this.getFoldLine(e);if(!r)return null;var i={end:{column:0}},s,o;for(var u=0;u<r.folds.length;u++){o=r.folds[u];var a=o.range.compareEnd(e,t);if(a==-1){s=this.getLine(o.start.row).substring(i.end.column,o.start.column);break}if(a===0)return null;i=o}return s||(s=this.getLine(o.start.row).substring(i.end.column)),n==-1?s.substring(0,t-i.end.column):n==1?s.substring(t-i.end.column):s},this.getFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r<n.length;r++){var i=n[r];if(i.start.row<=e&&i.end.row>=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r<n.length;r++){var i=n[r];if(i.end.row>=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i<n.length;i++){var s=n[i],o=s.end.row,u=s.start.row;if(o>=t){u<t&&(u>=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u<f||u==f&&a<=l-2){var c=this.getFoldAt(u,a,1),h=this.getFoldAt(f,l,-1);if(c&&h==c)return c.addSubFold(o);c&&!c.range.isStart(u,a)&&this.removeFold(c),h&&!h.range.isEnd(f,l)&&this.removeFold(h);var p=this.getFoldsInRange(o.range);p.length>0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d<n.length;d++){var v=n[d];if(f==v.start.row){v.addFold(o),r=!0;break}if(u==v.end.row){v.addFold(o),r=!0;if(!o.sameRow){var m=n[d+1];if(m&&m.start.row==f){v.merge(m);break}}break}if(f<=v.start.row)break}return r||(v=this.$addFoldLine(new i(this.$foldData,o))),this.$useWrapMode?this.$updateWrapData(v.start.row,v.start.row):this.$updateRowLengthCache(v.start.row,v.start.row),this.$modified=!0,this._signal("changeFold",{data:o,action:"add"}),o}throw new Error("The range has to be at least 2 characters width")},this.addFolds=function(e){e.forEach(function(e){this.addFold(e)},this)},this.removeFold=function(e){var t=e.foldLine,n=t.start.row,r=t.end.row,i=this.$foldData,s=t.folds;if(s.length==1)i.splice(i.indexOf(t),1);else if(t.range.isEnd(e.end.row,e.end.column))s.pop(),t.end.row=s[s.length-1].end.row,t.end.column=s[s.length-1].end.column;else if(t.range.isStart(e.start.row,e.start.column))s.shift(),t.start.row=s[0].start.row,t.start.column=s[0].start.column;else if(e.sameRow)s.splice(s.indexOf(e),1);else{var o=t.split(e.start.row,e.start.column);s=o.folds,s.shift(),o.start.row=s[0].start.row,o.start.column=s[0].start.column}this.$updating||(this.$useWrapMode?this.$updateWrapData(n,r):this.$updateRowLengthCache(n,r)),this.$modified=!0,this._signal("changeFold",{data:e,action:"remove"})},this.removeFolds=function(e){var t=[];for(var n=0;n<e.length;n++)t.push(e[n]);t.forEach(function(e){this.removeFold(e)},this),this.$modified=!0},this.expandFold=function(e){this.removeFold(e),e.subFolds.forEach(function(t){e.restoreRange(t),this.addFold(t)},this),e.collapseChildren>0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRangeList(n);if(t)this.removeFolds(i);else{var s=i;while(s.length)this.expandFolds(s),s=this.getFoldsInRangeList(n)}if(i.length)return i},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row),i==null&&(i=0),t==null&&(t=e.end.row),n==null&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(t<r)return;if(t==r){if(n<i)return;u=Math.max(i,u)}e!=null?o+=e:o+=s.getLine(t).substring(u,n)},t,n),o},this.getDisplayLine=function(e,t,n,r){var i=this.getFoldLine(e);if(!i){var s;return s=this.doc.getLine(e),s.substring(r||0,t||s.length)}return this.getFoldDisplayLine(i,e,t,n,r)},this.$cloneFoldData=function(){var e=[];return e=this.$foldData.map(function(t){var n=t.folds.map(function(e){return e.clone()});return new i(e,n)}),e},this.toggleFold=function(e){var t=this.selection,n=t.getRange(),r,i;if(n.isEmpty()){var s=n.start;r=this.getFoldAt(s.row,s.column);if(r){this.expandFold(r);return}(i=this.findMatchingBracket(s))?n.comparePoint(i)==1?n.end=i:(n.start=i,n.start.column++,n.end.column--):(i=this.findMatchingBracket({row:s.row,column:s.column+1}))?(n.comparePoint(i)==1?n.end=i:n.start=i,n.start.column++):n=this.getCommentFoldRange(s.row,s.column)||n}else{var o=this.getFoldsInRange(n);if(e&&o.length){this.expandFolds(o);return}o.length==1&&(r=o[0])}r||(r=this.getFoldAt(n.start.row,n.start.column));if(r&&r.range.toString()==n.toString()){this.expandFold(r);return}var u="...";if(!n.isMultiLine()){u=this.getTextRange(n);if(u.length<4)return;u=u.trim().substring(0,2)+".."}this.addFold(u,n)},this.getCommentFoldRange=function(e,t,n){var i=new o(this,e,t),s=i.getCurrentToken();if(s&&/^comment|string/.test(s.type)){var u=new r,a=new RegExp(s.type.replace(/\..*/,"\\."));if(n!=1){do s=i.stepBackward();while(s&&a.test(s.type));i.stepForward()}u.start.row=i.getCurrentTokenRow(),u.start.column=i.getCurrentTokenColumn()+2,i=new o(this,e,t);if(n!=-1){do s=i.stepForward();while(s&&a.test(s.type));s=i.stepBackward()}else s=i.getCurrentToken();return u.end.row=i.getCurrentTokenRow(),u.end.column=i.getCurrentTokenColumn()+s.value.length-2,u}},this.foldAll=function(e,t,n){n==undefined&&(n=1e5);var r=this.foldWidgets;if(!r)return;t=t||this.getLength(),e=e||0;for(var i=e;i<t;i++){r[i]==null&&(r[i]=this.getFoldWidget(i));if(r[i]!="start")continue;var s=this.getFoldWidgetRange(i);if(s&&s.isMultiLine()&&s.end.row<=t&&s.start.row>=e){i=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(u){}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle==e)return;this.$foldStyle=e,e=="manual"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)},this.$setFolding=function(e){if(this.$foldMode==e)return;this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation");if(!e||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};var r=e-1,i;while(r>=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},r=this.$toggleFoldWidget(e,n);if(!r){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(!this.getFoldWidget)return;var n=this.getFoldWidget(e),r=this.getLine(e),i=n==="end"?-1:1,s=this.getFoldAt(e,i===-1?0:r.length,i);if(s){t.children||t.all?this.removeFold(s):this.expandFold(s);return}var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()){s=this.getFoldAt(o.start.row,o.start.column,1);if(s&&o.isEqual(s.range)){this.removeFold(s);return}}if(t.siblings){var u=this.getParentFoldRangeData(e);if(u.range)var a=u.range.start.row+1,f=u.range.end.row;this.foldAll(a,f,t.all?1e4:0)}else t.children?(f=o?o.end.row:this.getLength(),this.foldAll(e+1,f,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(n)return;var r=this.getParentFoldRangeData(t,!0);n=r.range||r.firstRange;if(n){t=n.start.row;var i=this.getFoldAt(t,this.getLine(t).length,1);i?this.removeFold(i):this.addFold("...",n)}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.foldWidgets[t]=null;else if(e.action=="remove")this.foldWidgets.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,r)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a<l){var c=f.charAt(a);if(c==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else c==e&&(s+=1);a+=1}do u=o.stepForward();while(u&&!n.test(u.type));if(u==null)break;a=0}return null}}var r=e("../token_iterator").TokenIterator,i=e("../range").Range;t.BracketMatch=s}),ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./config"),o=e("./lib/event_emitter").EventEmitter,u=e("./selection").Selection,a=e("./mode/text").Mode,f=e("./range").Range,l=e("./document").Document,c=e("./background_tokenizer").BackgroundTokenizer,h=e("./search_highlight").SearchHighlight,p=function(e,t){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){return this.join("\n")},this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this);if(typeof e!="object"||!e.getLine)e=new l(e);this.setDocument(e),this.selection=new u(this),s.resetOptions(this),this.setMode(t),s._signal("session",this)};(function(){function m(e){return e<4352?!1:e>=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,o),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t<s))return i;r=i-1}}return n-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(e){var t=e.data;this.$resetRowCache(t.start.row)},this.onChange=function(e){this.$modified=!0,this.$resetRowCache(e.start.row);var t=this.$updateInternalDataOnChange(e);!this.$fromUndo&&this.$undoManager&&!e.ignore&&(this.$deltasDoc.push(e),t&&t.length!=0&&this.$deltasFold.push({action:"removeFolds",folds:t}),this.$informUndoManager.schedule()),this.bgTokenizer&&this.bgTokenizer.$updateOnChange(e),this._signal("change",e)},this.setValue=function(e){this.doc.setValue(e),this.selection.moveTo(0,0),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.setUndoManager(this.$undoManager),this.getUndoManager().reset()},this.getValue=this.toString=function(){return this.doc.getValue()},this.getSelection=function(){return this.selection},this.getState=function(e){return this.bgTokenizer.getState(e)},this.getTokens=function(e){return this.bgTokenizer.getTokens(e)},this.getTokenAt=function(e,t){var n=this.bgTokenizer.getTokens(e),r,i=0;if(t==null)s=n.length-1,i=this.getLine(e).length;else for(var s=0;s<n.length;s++){i+=n[s].value.length;if(i>=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t<e.length;t++)this.$breakpoints[e[t]]="ace_breakpoint";this._signal("changeBreakpoint",{})},this.clearBreakpoints=function(){this.$breakpoints=[],this._signal("changeBreakpoint",{})},this.setBreakpoint=function(e,t){t===undefined&&(t="ace_breakpoint"),t?this.$breakpoints[e]=t:delete this.$breakpoints[e],this._signal("changeBreakpoint",{})},this.clearBreakpoint=function(e){delete this.$breakpoints[e],this._signal("changeBreakpoint",{})},this.addMarker=function(e,t,n,r){var i=this.$markerId++,s={range:e,type:n||"line",renderer:typeof n=="function"?n:null,clazz:t,inFront:!!r,id:i};return r?(this.$frontMarkers[i]=s,this._signal("changeFrontMarker")):(this.$backMarkers[i]=s,this._signal("changeBackMarker")),i},this.addDynamicMarker=function(e,t){if(!e.update)return;var n=this.$markerId++;return e.id=n,e.inFront=!!t,t?(this.$frontMarkers[n]=e,this._signal("changeFrontMarker")):(this.$backMarkers[n]=e,this._signal("changeBackMarker")),e},this.removeMarker=function(e){var t=this.$frontMarkers[e]||this.$backMarkers[e];if(!t)return;var n=t.inFront?this.$frontMarkers:this.$backMarkers;t&&(delete n[e],this._signal(t.inFront?"changeFrontMarker":"changeBackMarker"))},this.getMarkers=function(e){return e?this.$frontMarkers:this.$backMarkers},this.highlight=function(e){if(!this.$searchHighlight){var t=new h(null,"ace_selected-word","text");this.$searchHighlight=this.addDynamicMarker(t)}this.$searchHighlight.setRegexp(e)},this.highlightLines=function(e,t,n,r){typeof t!="number"&&(n=t,t=e),n||(n="ace_step");var i=new f(e,0,t,Infinity);return i.id=this.addMarker(i,n,"fullLine",r),i},this.setAnnotations=function(e){this.$annotations=e,this._signal("changeAnnotation",{})},this.getAnnotations=function(){return this.$annotations||[]},this.clearAnnotations=function(){this.setAnnotations([])},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r?\n)/m);t?this.$autoNewLine=t[1]:this.$autoNewLine="\n"},this.getWordRange=function(e,t){var n=this.getLine(e),r=!1;t>0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(o<n.length&&n.charAt(o).match(i))o++;return new f(e,s,e,o)},this.getAWordRange=function(e,t){var n=this.getWordRange(e,t),r=this.getLine(n.end.row);while(r.charAt(n.end.column).match(/[ \t]/))n.end.column+=1;return n},this.setNewLineMode=function(e){this.doc.setNewLineMode(e)},this.getNewLineMode=function(){return this.doc.getNewLineMode()},this.setUseWorker=function(e){this.setOption("useWorker",e)},this.getUseWorker=function(){return this.$useWorker},this.onReloadTokenizer=function(e){var t=e.data;this.bgTokenizer.start(t.first),this._signal("tokenizerUpdate",e)},this.$modes={},this.$mode=null,this.$modeId=null,this.setMode=function(e,t){if(e&&typeof e=="object"){if(e.getTokenizer)return this.$onChangeMode(e);var n=e,r=n.path}else r=e||"ace/mode/text";this.$modes["ace/mode/text"]||(this.$modes["ace/mode/text"]=new a);if(this.$modes[r]&&!n){this.$onChangeMode(this.$modes[r]),t&&t();return}this.$modeId=r,s.loadModule(["mode",r],function(e){if(this.$modeId!==r)return t&&t();this.$modes[r]&&!n?this.$onChangeMode(this.$modes[r]):e&&e.Mode&&(e=new e.Mode(n),n||(this.$modes[r]=e,e.$id=r),this.$onChangeMode(e)),t&&t()}.bind(this)),this.$mode||this.$onChangeMode(this.$modes["ace/mode/text"],!0)},this.$onChangeMode=function(e,t){t||(this.$modeId=e.$id);if(this.$mode===e)return;this.$mode=e,this.$stopWorker(),this.$useWorker&&this.$startWorker();var n=e.getTokenizer();if(n.addEventListener!==undefined){var r=this.onReloadTokenizer.bind(this);n.addEventListener("update",r)}if(!this.bgTokenizer){this.bgTokenizer=new c(n);var i=this;this.bgTokenizer.addEventListener("update",function(e){i._signal("tokenizerUpdate",e)})}else this.bgTokenizer.setTokenizer(n);this.bgTokenizer.setDocument(this.getDocument()),this.tokenRe=e.tokenRe,this.nonTokenRe=e.nonTokenRe,t||(e.attachToSession&&e.attachToSession(this),this.$options.wrapMethod.set.call(this,this.$wrapMethod),this.$setFolding(e.foldingRules),this.bgTokenizer.start(0),this._emit("changeMode"))},this.$stopWorker=function(){this.$worker&&(this.$worker.terminate(),this.$worker=null)},this.$startWorker=function(){try{this.$worker=this.$mode.createWorker(this)}catch(e){s.warn("Could not load worker",e),this.$worker=null}},this.getMode=function(){return this.$mode},this.$scrollTop=0,this.setScrollTop=function(e){if(this.$scrollTop===e||isNaN(e))return;this.$scrollTop=e,this._signal("changeScrollTop",e)},this.getScrollTop=function(){return this.$scrollTop},this.$scrollLeft=0,this.setScrollLeft=function(e){if(this.$scrollLeft===e||isNaN(e))return;this.$scrollLeft=e,this._signal("changeScrollLeft",e)},this.getScrollLeft=function(){return this.$scrollLeft},this.getScreenWidth=function(){return this.$computeWidth(),this.lineWidgets?Math.max(this.getLineWidgetMaxWidth(),this.screenWidth):this.screenWidth},this.getLineWidgetMaxWidth=function(){if(this.lineWidgetsWidth!=null)return this.lineWidgetsWidth;var e=0;return this.lineWidgets.forEach(function(t){t&&t.screenWidth>e&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;a<u;a++){if(a>o){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group=="doc"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;r<e.length;r++){var i=e[r];i.group=="doc"&&(this.doc.applyDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!1,n))}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.setUndoSelect=function(e){this.$undoSelect=e},this.$getUndoSelection=function(e,t,n){function r(e){return t?e.action!=="insert":e.action==="insert"}var i=e[0],s,o,u=!1;r(i)?(s=f.fromPoints(i.start,i.end),u=!0):(s=f.fromPoints(i.start,i.start),u=!1);for(var a=1;a<e.length;a++)i=e[a],r(i)?(o=i.start,s.compare(o.row,o.column)==-1&&s.setStart(o),o=i.end,s.compare(o.row,o.column)==1&&s.setEnd(o),u=!0):(o=i.start,s.compare(o.row,o.column)==-1&&(s=f.fromPoints(i.start,i.start)),u=!1);if(n!=null){f.comparePoints(n.start,s.start)===0&&(n.start.column+=s.end.column-s.start.column,n.end.column+=s.end.column-s.start.column);var l=n.compareRange(s);l==1?s.setStart(n.start):l==-1&&s.setEnd(n.end)}return s},this.replace=function(e,t){return this.doc.replace(e,t)},this.moveText=function(e,t,n){var r=this.getTextRange(e),i=this.getFoldsInRange(e),s=f.fromPoints(t,t);if(!n){this.remove(e);var o=e.start.row-e.end.row,u=o?-e.end.column:e.start.column-e.end.column;u&&(s.start.row==e.end.row&&s.start.column>e.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}s.end=this.insert(s.start,r);if(i.length){var a=e.start,l=s.start,o=l.row-a.row,u=l.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.doc.insertInLine({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new f(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o<r;++o)if(s.charAt(o)!=" ")break;o<r&&s.charAt(o)==" "?(n.start.column=o,n.end.column=o+1):(n.start.column=0,n.end.column=o),this.remove(n)}},this.$moveLines=function(e,t,n){e=this.getRowFoldStart(e),t=this.getRowFoldEnd(t);if(n<0){var r=this.getRowFoldStart(e+n);if(r<0)return 0;var i=r-e}else if(n>0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new f(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode")},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var r=this.$constrainWrapLimit(e,n.min,n.max);return r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=null;this.$updating=!0;if(u!=0)if(n==="remove"){this[t?"$wrapData":"$rowLengthCache"].splice(s,u);var f=this.$foldData;a=this.getFoldsInRange(e),this.removeFolds(a);var l=this.getFoldLine(i.row),c=0;if(l){l.addRemoveChars(i.row,i.column,r.column-i.column),l.shiftRow(-u);var h=this.getFoldLine(s);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c<f.length;c++){var l=f[c];l.start.row>=i.row&&l.shiftRow(-u)}o=s}else{var p=Array(u);p.unshift(s,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,p);var f=this.$foldData,l=this.getFoldLine(s),c=0;if(l){var v=l.range.compareInside(r.row,r.column);v==0?(l=l.split(r.row,r.column),l&&(l.shiftRow(u),l.addRemoveChars(o,0,i.column-r.column))):v==-1&&(l.addRemoveChars(s,0,i.column-r.column),l.shiftRow(u)),c=f.indexOf(l)+1}for(c;c<f.length;c++){var l=f[c];l.start.row>=s&&l.shiftRow(u)}}else{u=Math.abs(e.start.column-e.end.column),n==="remove"&&(a=this.getFoldsInRange(e),this.removeFolds(a),u=-u);var l=this.getFoldLine(s);l&&l.addRemoveChars(s,r.column,u)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(s,o):this.$updateRowLengthCache(s,o),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var r=this.doc.getAllLines(),i=this.getTabSize(),s=this.$wrapData,o=this.$wrapLimit,a,f,l=e;t=Math.min(t,r.length-1);while(l<=t)f=this.getFoldLine(l,f),f?(a=[],f.walk(function(e,t,i,s){var o;if(e!=null){o=this.$getDisplayTokens(e,a.length),o[0]=n;for(var f=1;f<o.length;f++)o[f]=u}else o=this.$getDisplayTokens(r[t].substring(s,i),a.length);a=a.concat(o)}.bind(this),f.end.row,r[f.end.row].length+1),s[f.start.row]=this.$computeWrapSplits(a,o,i),l=f.end.row+1):(a=this.$getDisplayTokens(r[l]),s[l]=this.$computeWrapSplits(a,o,i),l++)};var e=1,t=2,n=3,u=4,l=9,p=10,d=11,v=12;this.$computeWrapSplits=function(e,r,i){function g(){var t=0;if(m===0)return t;if(h)for(var n=0;n<e.length;n++){var r=e[n];if(r==p)t+=1;else{if(r!=d){if(r==v)continue;break}t+=i}}return c&&h!==!1&&(t+=i),Math.min(t,m)}function y(t){var n=e.slice(a,t),r=n.length;n.join("").replace(/12/g,function(){r-=1}).replace(/2/g,function(){r-=1}),s.length||(b=g(),s.indent=b),f+=r,s.push(f),a=t}if(e.length==0)return[];var s=[],o=e.length,a=0,f=0,c=this.$wrapAsCode,h=this.$indentedSoftWrap,m=r<=Math.max(2*i,8)||h===!1?0:Math.floor(r/2),b=0;while(o-a>r-b){var w=a+r-b;if(e[w-1]>=p&&e[w]>=p){y(w);continue}if(e[w]==n||e[w]==u){for(w;w!=a-1;w--)if(e[w]==n)break;if(w>a){y(w);continue}w=a+r;for(w;w<e.length;w++)if(e[w]!=u)break;if(w==e.length)break;y(w);continue}var E=Math.max(w-(r-(r>>2)),a-1);while(w>E&&e[w]<n)w--;if(c){while(w>E&&e[w]<n)w--;while(w>E&&e[w]==l)w--}else while(w>E&&e[w]<p)w--;if(w>E){y(++w);continue}w=a+r,e[w]==t&&w--,y(w-b)}return s},this.$getDisplayTokens=function(n,r){var i=[],s;r=r||0;for(var o=0;o<n.length;o++){var u=n.charCodeAt(o);if(u==9){s=this.getScreenTabSize(i.length+r),i.push(d);for(var a=1;a<s;a++)i.push(v)}else u==32?i.push(p):u>39&&u<48||u>57&&u<64?i.push(l):u>=4352&&m(u)?i.push(e,t):i.push(e)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i<e.length;i++){r=e.charCodeAt(i),r==9?n+=this.getScreenTabSize(n):r>=4352&&m(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.getRowLineCount=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]<t.column?n.indent:0}return 0},this.getScreenLastRowColumn=function(e){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE);return this.documentToScreenColumn(t.row,t.column)},this.getDocumentLastRowColumn=function(e,t){var n=this.documentToScreenRow(e,t);return this.getScreenLastRowColumn(n)},this.getDocumentLastRowColumnPosition=function(e,t){var n=this.documentToScreenRow(e,t);return this.screenToDocumentPosition(n,Number.MAX_VALUE/10)},this.getRowSplitData=function(e){return this.$useWrapMode?this.$wrapData[e]:undefined},this.getScreenTabSize=function(e){return this.$tabSize-e%this.$tabSize},this.screenToDocumentRow=function(e,t){return this.screenToDocumentPosition(e,t).row},this.screenToDocumentColumn=function(e,t){return this.screenToDocumentPosition(e,t).column},this.screenToDocumentPosition=function(e,t){if(e<0)return{row:0,column:0};var n,r=0,i=0,s,o=0,u=0,a=this.$screenRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var o=a[f],r=this.$docRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getLength()-1,p=this.getNextFoldLine(r),d=p?p.start.row:Infinity;while(o<=e){u=this.getRowLength(r);if(o+u>e||r>=h)break;o+=u,r++,r>d&&(r=p.end.row+1,p=this.getNextFoldLine(r,p),d=p?p.start.row:Infinity),c&&(this.$docRowCache.push(r),this.$screenRowCache.push(o))}if(p&&p.start.row<=r)n=this.getFoldDisplayLine(p),r=p.start.row;else{if(o+u<=e||r>h)return{row:h,column:this.getLine(h).length};n=this.getLine(r),p=null}var v=0;if(this.$useWrapMode){var m=this.$wrapData[r];if(m){var g=Math.floor(e-o);s=m[g],g>0&&m.length&&(v=m.indent,i=m[g-1]||m[m.length-1],n=n.substring(i))}}return i+=this.$getStringScreenWidth(n,t-v)[1],this.$useWrapMode&&i>=s&&(i=s-1),p?p.idxToPosition(i):{row:r,column:i}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u<e){if(u>=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);var v=0;if(this.$useWrapMode){var m=this.$wrapData[i];if(m){var g=0;while(d.length>=m[g])r++,g++;d=d.substring(m[g-1]||0,d.length),v=g>0?m.indent:0}}return{row:r,column:v+this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;r<n.length;r++)t=n[r],e-=t.end.row-t.start.row}else{var i=this.$wrapData.length,s=0,r=0,t=this.$foldData[r++],o=t?t.start.row:Infinity;while(s<i){var u=this.$wrapData[s];e+=u?u.length+1:1,s++,s>o&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e},this.$setFontMetrics=function(e){if(!this.$enableVarChar)return;this.$getStringScreenWidth=function(t,n,r){if(n===0)return[0,0];n||(n=Infinity),r=r||0;var i,s;for(s=0;s<t.length;s++){i=t.charAt(s),i===" "?r+=this.getScreenTabSize(r):r+=e.getCharacterWidth(i);if(r>n)break}return[r,s]}},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),s.defineOptions(p.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;this.$wrap=e;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e=e=="auto"?this.$mode.type!="text":e!="text",e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize")},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=p}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return i.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var r=null;return n.forEach(function(e,n,i){if(!e.start){var o=e.offset+(i||0);r=new s(n,o,n,o+e.length);if(!e.length&&t.start&&t.start.start&&t.skipCurrent!=0&&r.isEqual(t.start))return r=null,!1}else r=e;return!0}),r},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a,l;e:for(var c=u.offset||0;c<=f;c++){for(var h=0;h<a;h++)if(i[c+h].search(u[h])==-1)continue e;var p=i[c],d=i[c+a-1],v=p.length-p.match(u[0])[0].length,m=d.match(u[a-1])[0].length;if(l&&l.end.row===c&&l.end.column>v)continue;o.push(l=new s(c,v,c+a-1,m)),a>2&&(c=c+a-2)}}else for(var g=0;g<i.length;g++){var y=r.getMatchOffsets(i[g],u);for(var h=0;h<y.length;h++){var b=y[h];o.push(new s(g,b.offset,g,b.offset+b.length))}}if(n){var w=n.start.column,E=n.start.column,g=0,h=o.length-1;while(g<h&&o[g].start.column<w&&o[g].start.row==n.start.row)g++;while(g<h&&o[h].end.column>E&&o[h].end.row==n.end.row)h--;o=o.slice(g,h+1);for(g=0,h=o.length;g<h;g++)o[g].start.row+=n.start.row,o[g].end.row+=n.start.row}return o},this.replace=function(e,t){var n=this.$options,r=this.$assembleRegExp(n);if(n.$isMultiLine)return t;if(!r)return;var i=r.exec(e);if(!i||i[0].length!=e.length)return null;t=e.replace(r,t);if(n.preserveCase){t=t.split("");for(var s=Math.min(e.length,e.length);s--;){var o=e[s];o&&o.toLowerCase()!=o?t[s]=t[s].toUpperCase():t[s]=t[s].toLowerCase()}t=t.join("")}return t},this.$matchIterator=function(e,t){var n=this.$assembleRegExp(t);if(!n)return!1;var i;if(t.$isMultiLine)var o=n.length,u=function(t,r,u){var a=t.search(n[0]);if(a==-1)return;for(var f=1;f<o;f++){t=e.getLine(r+f);if(t.search(n[f])==-1)return}var l=t.match(n[o-1])[0].length,c=new s(r,a,r+o-1,l);n.offset==1?(c.start.row--,c.start.column=Number.MAX_VALUE):u&&(c.start.column+=u);if(i(c))return!0};else if(t.backwards)var u=function(e,t,s){var o=r.getMatchOffsets(e,n);for(var u=o.length-1;u>=0;u--)if(i(o[u],t,s))return!0};else var u=function(e,t,s){var o=r.getMatchOffsets(e,n);for(var u=0;u<o.length;u++)if(i(o[u],t,s))return!0};var a=this.$lineIterator(e,t);return{forEach:function(e){i=e,a.forEach(u)}}},this.$assembleRegExp=function(e,t){if(e.needle instanceof RegExp)return e.re=e.needle;var n=e.needle;if(!e.needle)return e.re=!1;e.regExp||(n=r.escapeRegExp(n)),e.wholeWord&&(n="\\b"+n+"\\b");var i=e.caseSensitive?"gm":"gmi";e.$isMultiLine=!t&&/[\n\r]/.test(n);if(e.$isMultiLine)return e.re=this.$assembleMultilineRegExp(n,i);try{var s=new RegExp(n,i)}catch(o){s=!1}return e.re=s},this.$assembleMultilineRegExp=function(e,t){var n=e.replace(/\r\n|\r|\n/g,"$\n^").split("\n"),r=[];for(var i=0;i<n.length;i++)try{r.push(new RegExp(n[i],t))}catch(s){return!1}return n[0]==""?(r.shift(),r.offset=1):r.offset=0,r},this.$lineIterator=function(e,t){var n=t.backwards==1,r=t.skipCurrent!=0,i=t.range,s=t.start;s||(s=i?i[n?"end":"start"]:e.selection.getRange()),s.start&&(s=s[r!=n?"end":"start"]);var o=i?i.start.row:0,u=i?i.end.row:e.getLength()-1,a=n?function(n){var r=s.row,i=e.getLine(r).substring(0,s.column);if(n(i,r))return;for(r--;r>=o;r--)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=u,o=s.row;r>=o;r--)if(n(e.getLine(r),r))return}:function(n){var r=s.row,i=e.getLine(r).substr(s.column);if(n(i,r,s.column))return;for(r+=1;r<=u;r++)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=o,u=s.row;r<=u;r++)if(n(e.getLine(r),r))return};return{forEach:a}}}).call(o.prototype),t.Search=o}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function u(e,t){o.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),i=e("../lib/useragent"),s=r.KEY_MODS;u.prototype=o.prototype,function(){function e(e){return typeof e=="object"&&e.bindKey&&e.bindKey.position||0}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&(typeof e=="string"?e:e.name);e=this.commands[n],t||delete this.commands[n];var r=this.commandKeyBinding;for(var i in r){var s=r[i];if(s==e)delete r[i];else if(Array.isArray(s)){var o=s.indexOf(e);o!=-1&&(s.splice(o,1),s.length==1&&(r[i]=s[0]))}}},this.bindKey=function(e,t,n){typeof e=="object"&&e&&(n==undefined&&(n=e.position),e=e[this.platform]);if(!e)return;if(typeof t=="function")return this.addCommand({exec:t,bindKey:e,name:t.name||e});e.split("|").forEach(function(e){var r="";if(e.indexOf(" ")!=-1){var i=e.split(/\s+/);e=i.pop(),i.forEach(function(e){var t=this.parseKeys(e),n=s[t.hashId]+t.key;r+=(r?" ":"")+n,this._addCommandToBinding(r,"chainKeys")},this),r+=" "}var o=this.parseKeys(e),u=s[o.hashId]+o.key;this._addCommandToBinding(r+u,t,n)},this)},this._addCommandToBinding=function(t,n,r){var i=this.commandKeyBinding,s;if(!n)delete i[t];else if(!i[t]||this.$singleCommand)i[t]=n;else{Array.isArray(i[t])?(s=i[t].indexOf(n))!=-1&&i[t].splice(s,1):i[t]=[i[t]],typeof r!="number"&&(r||n.isDefault?r=-100:r=e(n));var o=i[t];for(s=0;s<o.length;s++){var u=o[s],a=e(u);if(a>r)break}o.splice(s,0,n)}},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(!n)return;if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n});if(typeof n!="object")return;n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=s[t]+n;return this.commandKeyBinding[r]},this.handleKeyboard=function(e,t,n,r){if(r<0)return;var i=s[t]+n,o=this.commandKeyBinding[i];e.$keyChain&&(e.$keyChain+=" "+i,o=this.commandKeyBinding[e.$keyChain]||o);if(o)if(o=="chainKeys"||o[o.length-1]=="chainKeys")return e.$keyChain=e.$keyChain||i,{command:"null"};if(e.$keyChain)if(!!t&&t!=4||n.length!=1){if(t==-1||r>0)e.$keyChain=""}else e.$keyChain=e.$keyChain.slice(0,-i.length-1);return{command:o}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(o.prototype),t.HashHandler=o,t.MultiHashHandler=u}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../keyboard/hash_handler").MultiHashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){i.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){if(Array.isArray(e)){for(var r=e.length;r--;)if(this.exec(e[r],t,n))return!0;return!1}typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var i={editor:t,command:e,args:n};return i.returnValue=this._emit("exec",i),this._signal("afterExec",i),i.returnValue===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function o(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","Ctrl-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:o("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:o("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:o("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:o("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:o("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:o("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:o("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:o("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:o("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:o("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:o("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:o("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:o(null,null),exec:function(e){var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,u=e.session.doc.getTextRange(e.selection.getRange()),a=u.replace(/\n\s*/," ").length,f=e.session.doc.getLine(n.row);for(var l=n.row+1;l<=i.row+1;l++){var c=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(l)));c.length!==0&&(c=" "+c),f+=c}i.row+1<e.session.doc.getLength()-1&&(f+=e.session.doc.getNewLineCharacter()),e.clearSelection(),e.session.doc.replace(new s(n.row,0,i.row+2,0),f),a>0?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,r=e.selection.rangeList.ranges,i=[];r.length<1&&(r=[e.selection.getRange()]);for(var o=0;o<r.length;o++)o==r.length-1&&(r[o].end.row!==t||r[o].end.column!==n)&&i.push(new s(r[o].end.row,r[o].end.column,t,n)),o===0?(r[o].start.row!==0||r[o].start.column!==0)&&i.push(new s(0,0,r[o].start.row,r[o].start.column)):i.push(new s(r[o-1].end.row,r[o-1].end.column,r[o].start.row,r[o].start.column));e.exitMultiSelectMode(),e.clearSelection();for(var o=0;o<i.length;o++)e.selection.addRange(i[o],!1)},readOnly:!0,scrollIntoView:"none"}]}),ace.define("ace/editor",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config","ace/token_iterator"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/lang"),o=e("./lib/useragent"),u=e("./keyboard/textinput").TextInput,a=e("./mouse/mouse_handler").MouseHandler,f=e("./mouse/fold_handler").FoldHandler,l=e("./keyboard/keybinding").KeyBinding,c=e("./edit_session").EditSession,h=e("./search").Search,p=e("./range").Range,d=e("./lib/event_emitter").EventEmitter,v=e("./commands/command_manager").CommandManager,m=e("./commands/default_commands").commands,g=e("./config"),y=e("./token_iterator").TokenIterator,b=function(e,t){var n=e.getContainerElement();this.container=n,this.renderer=e,this.commands=new v(o.isMac?"mac":"win",m),this.textInput=new u(e.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.keyBinding=new l(this),this.$mouseHandler=new a(this),new f(this),this.$blockScrolling=0,this.$search=(new h).set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on("exec",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=s.delayedCall(function(){this._signal("input",{}),this.session&&this.session.bgTokenizer&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on("change",function(e,t){t._$emitInputEvent.schedule(31)}),this.setSession(t||new c("")),g.resetOptions(this),g._signal("editor",this)};(function(){r.implement(this,d),this.$initOperationListeners=function(){function e(e){return e[e.length-1]}this.selections=[],this.commands.on("exec",this.startOperation.bind(this),!0),this.commands.on("afterExec",this.endOperation.bind(this),!0),this.$opResetTimer=s.delayedCall(this.endOperation.bind(this)),this.on("change",function(){this.curOp||this.startOperation(),this.curOp.docChanged=!0}.bind(this),!0),this.on("changeSelection",function(){this.curOp||this.startOperation(),this.curOp.selectionChanged=!0}.bind(this),!0)},this.curOp=null,this.prevOp={},this.startOperation=function(e){if(this.curOp){if(!e||this.curOp.command)return;this.prevOp=this.curOp}e||(this.previousCommand=null,e={}),this.$opResetTimer.schedule(),this.curOp={command:e.command||{},args:e.args,scrollTop:this.renderer.scrollTop},this.curOp.command.name&&this.curOp.command.scrollIntoView!==undefined&&this.$blockScrolling++},this.endOperation=function(e){if(this.curOp){if(e&&e.returnValue===!1)return this.curOp=null;this._signal("beforeEndOperation");var t=this.curOp.command;t.name&&this.$blockScrolling>0&&this.$blockScrolling--;var n=t&&t.scrollIntoView;if(n){switch(n){case"center-animate":n="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var r=this.selection.getRange(),i=this.renderer.layerConfig;(r.start.row>=i.lastRow||r.end.row<=i.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}n=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=this.$mergeableCommands,r=t.command&&e.command.name==t.command.name;if(e.command.name=="insertstring"){var i=e.args;this.mergeNextCommand===undefined&&(this.mergeNextCommand=!0),r=r&&this.mergeNextCommand&&(!/\s/.test(i)||/\s/.test(t.args)),this.mergeNextCommand=!0}else r=r&&n.indexOf(e.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(r=!1),r?this.session.mergeUndoDeltas=!0:n.indexOf(e.command.name)!==-1&&(this.sequenceStartTime=Date.now())},this.setKeyboardHandler=function(e,t){if(e&&typeof e=="string"){this.$keybindingId=e;var n=this;g.loadModule(["keybinding",e],function(r){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(r&&r.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=t.findMatchingBracket(e.getCursorPosition());if(n)var r=new p(n.row,n.column,n.row,n.column+1);else if(t.$mode.getMatching)var r=t.$mode.getMatching(e.session);r&&(t.$bracketHighlight=t.addMarker(r,"ace_bracket","text"))},50)},this.$highlightTags=function(){if(this.$highlightTagPending)return;var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=e.getCursorPosition(),r=new y(e.session,n.row,n.column),i=r.getCurrentToken();if(!i||!/\b(?:tag-open|tag-name)/.test(i.type)){t.removeMarker(t.$tagHighlight),t.$tagHighlight=null;return}if(i.type.indexOf("tag-open")!=-1){i=r.stepForward();if(!i)return}var s=i.value,o=0,u=r.stepBackward();if(u.value=="<"){do u=i,i=r.stepForward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="</"&&o--);while(i&&o>=0)}else{do i=u,u=r.stepBackward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="</"&&o--);while(u&&o<=0);r.stepForward()}if(!i){t.removeMarker(t.$tagHighlight),t.$tagHighlight=null;return}var a=r.getCurrentTokenRow(),f=r.getCurrentTokenColumn(),l=new p(a,f,a,f+i.value.length);t.$tagHighlight&&l.compareRange(t.$backMarkers[t.$tagHighlight].range)!==0&&(t.removeMarker(t.$tagHighlight),t.$tagHighlight=null),l&&!t.$tagHighlight&&(t.$tagHighlight=t.addMarker(l,"ace_bracket","text"))},50)},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(e){if(this.$isFocused)return;this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",e)},this.onBlur=function(e){if(!this.$isFocused)return;this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",e)},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t=this.session.$useWrapMode,n=e.start.row==e.end.row?e.end.row:Infinity;this.renderer.updateLines(e.start.row,n,t),this._signal("change",e),this.$cursorChange(),this.$updateHighlightActiveLine()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||(g.warn("Automatically scrolling cursor into view after selection change","this will be disabled in the next version","set editor.$blockScrolling = Infinity to disable this message"),this.renderer.scrollCursorIntoView()),this.$highlightBrackets(),this.$highlightTags(),this.$updateHighlightActiveLine(),this._signal("changeSelection")},this.$updateHighlightActiveLine=function(){var e=this.getSession(),t;if(this.$highlightActiveLine){if(this.$selectionStyle!="line"||!this.selection.isMultiLine())t=this.getCursorPosition();this.renderer.$maxLines&&this.session.getLength()===1&&!(this.renderer.$minLines>1)&&(t=!1)}if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\w\d]/.test(o)||r<=s&&/[\w\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\w\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var n={text:e,event:t};this.commands.exec("paste",this,n)},this.$handlePaste=function(e){typeof e=="string"&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var n=t.split(/\r\n|\r|\n/),r=this.selection.rangeList.ranges;if(n.length>r.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,t);for(var i=r.length;i--;){var s=r[i];s.isEmpty()||this.session.remove(s),this.session.insert(s.start,n[i])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,r=n.getMode(),i=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var s=r.transformAction(n.getState(i.row),"insertion",this,n,e);s&&(e!==s.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=s.text)}e==" "&&(e=this.session.getTabString());if(!this.selection.isEmpty()){var o=this.getSelectionRange();i=this.session.remove(o),this.clearSelection()}else if(this.session.getOverwrite()){var o=new p.fromPoints(i,i);o.end.column+=e.length,this.session.remove(o)}if(e=="\n"||e=="\r\n"){var u=n.getLine(i.row);if(i.column>u.search(/\S|$/)){var a=u.substr(i.column).search(/\S|$/);n.doc.removeInLine(i.row,i.column,i.column+a)}}this.clearSelection();var f=i.column,l=n.getState(i.row),u=n.getLine(i.row),c=r.checkOutdent(l,u,e),h=n.insert(i,e);s&&s.selection&&(s.selection.length==2?this.selection.setSelectionRange(new p(i.row,f+s.selection[0],i.row,f+s.selection[1])):this.selection.setSelectionRange(new p(i.row+s.selection[0],s.selection[1],i.row+s.selection[2],s.selection[3])));if(n.getDocument().isNewLine(e)){var d=r.getNextLineIndent(l,u.slice(0,i.column),n.getTabString());n.insert({row:i.row+1,column:0},d)}c&&r.autoOutdent(l,n,i.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);if(t.end.column===0){var s=n.getTextRange(t);if(s[s.length-1]=="\n"){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;t<n.length?(r=n.charAt(t)+n.charAt(t-1),i=new p(e.row,t-1,e.row,t+1)):(r=n.charAt(t-1)+n.charAt(t-2),i=new p(e.row,t-2,e.row,t)),this.session.replace(i,r)},this.toLowerCase=function(){var e=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var t=this.getSelectionRange(),n=this.session.getTextRange(t);this.session.replace(t,n.toLowerCase()),this.selection.setSelectionRange(e)},this.toUpperCase=function(){var e=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var t=this.getSelectionRange(),n=this.session.getTextRange(t);this.session.replace(t,n.toUpperCase()),this.selection.setSelectionRange(e)},this.indent=function(){var e=this.session,t=this.getSelectionRange();if(t.start.row<t.end.row){var n=this.$getSelectedRows();e.indentRows(n.first,n.last," ");return}if(t.start.column<t.end.column){var r=e.getTextRange(t);if(!/^\s+$/.test(r)){var n=this.$getSelectedRows();e.indentRows(n.first,n.last," ");return}}var i=e.getLine(t.start.row),o=t.start,u=e.getTabSize(),a=e.documentToScreenColumn(o.row,o.column);if(this.session.getUseSoftTabs())var f=u-a%u,l=s.stringRepeat(" ",f);else{var f=a%u;while(i[t.start.column]==" "&&f)t.start.column--,f--;this.selection.setSelectionRange(t),l=" "}return this.insert(l)},this.blockIndent=function(){var e=this.$getSelectedRows();this.session.indentRows(e.first,e.last," ")},this.blockOutdent=function(){var e=this.session.getSelection();this.session.outdentRows(e.getRange())},this.sortLines=function(){var e=this.$getSelectedRows(),t=this.session,n=[];for(i=e.first;i<=e.last;i++)n.push(t.getLine(i));n.sort(function(e,t){return e.toLowerCase()<t.toLowerCase()?-1:e.toLowerCase()>t.toLowerCase()?1:0});var r=new p(0,0,0,0);for(var i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex<t){var i=n.exec(r);if(i.index<=t&&i.index+i[0].length>=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&n<o?e*=Math.pow(10,s.end-n-1):e*=Math.pow(10,s.end-n),a+=e,a/=Math.pow(10,u);var f=a.toFixed(u),l=new p(t,s.start,t,s.end);this.session.replace(l,f),this.moveCursorTo(t,Math.max(s.start+1,n+f.length-s.value.length))}}},this.removeLines=function(){var e=this.$getSelectedRows();this.session.removeFullLines(e.first,e.last),this.clearSelection()},this.duplicateSelection=function(){var e=this.selection,t=this.session,n=e.getRange(),r=e.isBackwards();if(n.isEmpty()){var i=n.start.row;t.duplicateLines(i,i)}else{var s=r?n.start:n.end,o=t.insert(s,t.getTextRange(n),!1);n.start=s,n.end=o,e.setSelectionRange(n,r)}},this.moveLinesDown=function(){this.$moveLines(1,!1)},this.moveLinesUp=function(){this.$moveLines(-1,!1)},this.moveText=function(e,t,n){return this.session.moveText(e,t,n)},this.copyLinesUp=function(){this.$moveLines(-1,!0)},this.copyLinesDown=function(){this.$moveLines(1,!0)},this.$moveLines=function(e,t){var n,r,i=this.selection;if(!i.inMultiSelectMode||this.inVirtualSelectionMode){var s=i.toOrientedRange();n=this.$getSelectedRows(s),r=this.session.$moveLines(n.first,n.last,t?0:e),t&&e==-1&&(r=0),s.moveBy(r,0),i.fromOrientedRange(s)}else{var o=i.rangeList.ranges;i.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;var u=0,a=0,f=o.length;for(var l=0;l<f;l++){var c=l;o[l].moveBy(u,0),n=this.$getSelectedRows(o[l]);var h=n.first,p=n.last;while(++l<f){a&&o[l].moveBy(a,0);var d=this.$getSelectedRows(o[l]);if(t&&d.first!=p)break;if(!t&&d.first>p+1)break;p=d.last}l--,u=this.session.$moveLines(h,p,t?0:e),t&&e==-1&&(c=l+1);while(c<=l)o[c].moveBy(u,0),c++;t||(u=0),a+=u}i.fromOrientedRange(i.ranges[0]),i.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),r=new y(this.session,n.row,n.column),i=r.getCurrentToken(),s=i||r.stepForward();if(!s)return;var o,u=!1,a={},f=n.column-s.start,l,c={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g))for(;f<s.value.length&&!u;f++){if(!c[s.value[f]])continue;l=c[s.value[f]]+"."+s.type.replace("rparen","lparen"),isNaN(a[l])&&(a[l]=0);switch(s.value[f]){case"(":case"[":case"{":a[l]++;break;case")":case"]":case"}":a[l]--,a[l]===-1&&(o="bracket",u=!0)}}else s&&s.type.indexOf("tag-name")!==-1&&(isNaN(a[s.value])&&(a[s.value]=0),i.value==="<"?a[s.value]++:i.value==="</"&&a[s.value]--,a[s.value]===-1&&(o="tag",u=!0));u||(i=s,s=r.stepForward(),f=0)}while(s&&!u);if(!o)return;var h,d;if(o==="bracket"){h=this.session.getBracketRange(n);if(!h){h=new p(r.getCurrentTokenRow(),r.getCurrentTokenColumn()+f-1,r.getCurrentTokenRow(),r.getCurrentTokenColumn()+f-1),d=h.start;if(t||d.row===n.row&&Math.abs(d.column-n.column)<2)h=this.session.getBracketRange(d)}}else if(o==="tag"){if(!s||s.type.indexOf("tag-name")===-1)return;var v=s.value;h=new p(r.getCurrentTokenRow(),r.getCurrentTokenColumn()-2,r.getCurrentTokenRow(),r.getCurrentTokenColumn()-2);if(h.compare(n.row,n.column)===0){u=!1;do s=i,i=r.stepBackward(),i&&(i.type.indexOf("tag-close")!==-1&&h.setEnd(r.getCurrentTokenRow(),r.getCurrentTokenColumn()+1),s.value===v&&s.type.indexOf("tag-name")!==-1&&(i.value==="<"?a[v]++:i.value==="</"&&a[v]--,a[v]===0&&(u=!0)));while(i&&!u)}s&&s.type.indexOf("tag-name")&&(d=h.start,d.row==n.row&&Math.abs(d.column-n.column)<2&&(d=h.end))}d=h&&h.cursor||d,d&&(e?h&&t?this.selection.setRange(h):h&&h.isEqual(this.getSelectionRange())?this.clearSelection():this.selection.selectTo(d.row,d.column):this.selection.moveTo(d.row,d.column))},this.gotoLine=function(e,t,n){this.selection.clearSelection(),this.session.unfold({row:e-1,column:t||0}),this.$blockScrolling+=1,this.exitMultiSelectMode&&this.exitMultiSelectMode(),this.moveCursorTo(e-1,t||0),this.$blockScrolling-=1,this.isRowFullyVisible(e-1)||this.scrollToLine(e-1,!0,n)},this.navigateTo=function(e,t){this.selection.moveTo(e,t)},this.navigateUp=function(e){if(this.selection.isMultiLine()&&!this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),this.selection.moveCursorBy(-e||-1,0)},this.navigateDown=function(e){if(this.selection.isMultiLine()&&this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),this.selection.moveCursorBy(e||1,0)},this.navigateLeft=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().start;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorLeft()}this.clearSelection()},this.navigateRight=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().end;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorRight()}this.clearSelection()},this.navigateLineStart=function(){this.selection.moveCursorLineStart(),this.clearSelection()},this.navigateLineEnd=function(){this.selection.moveCursorLineEnd(),this.clearSelection()},this.navigateFileEnd=function(){this.selection.moveCursorFileEnd(),this.clearSelection()},this.navigateFileStart=function(){this.selection.moveCursorFileStart(),this.clearSelection()},this.navigateWordRight=function(){this.selection.moveCursorWordRight(),this.clearSelection()},this.navigateWordLeft=function(){this.selection.moveCursorWordLeft(),this.clearSelection()},this.replace=function(e,t){t&&this.$search.set(t);var n=this.$search.find(this.session),r=0;return n?(this.$tryReplace(n,e)&&(r=1),n!==null&&(this.selection.setSelectionRange(n),this.renderer.scrollSelectionIntoView(n.start,n.end)),r):r},this.replaceAll=function(e,t){t&&this.$search.set(t);var n=this.$search.findAll(this.session),r=0;if(!n.length)return r;this.$blockScrolling+=1;var i=this.getSelectionRange();this.selection.moveTo(0,0);for(var s=n.length-1;s>=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(!e)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.top<o.height&&s.top+t.top+o.lineHeight>window.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e)return;delete this.setAutoScrollEditorIntoView,this.off("changeSelection",s),this.renderer.off("afterRender",u),this.renderer.off("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&e!="wide",i.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e))}}).call(b.prototype),g.defineOptions(b.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=b}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,n){"use strict";var r=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines.length==1?null:e.lines,text:e.lines.length==1?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function n(e,t){var n=new Array(e.length);for(var r=0;r<e.length;r++){var i=e[r],s={group:i.group,deltas:new Array(i.length)};for(var o=0;o<i.deltas.length;o++){var u=i.deltas[o];s.deltas[o]=t(u)}n[r]=s}return n}this.execute=function(e){var t=e.args[0];this.$doc=e.args[1],e.merge&&this.hasUndo()&&(this.dirtyCounter--,t=this.$undoStack.pop().concat(t)),this.$undoStack.push(t),this.$redoStack=[],this.dirtyCounter<0&&(this.dirtyCounter=NaN),this.dirtyCounter++},this.undo=function(e){var t=this.$undoStack.pop(),n=null;return t&&(n=this.$doc.undoChanges(t,e),this.$redoStack.push(t),this.dirtyCounter--),n},this.redo=function(e){var t=this.$redoStack.pop(),n=null;return t&&(n=this.$doc.redoChanges(this.$deserializeDeltas(t),e),this.$undoStack.push(t),this.dirtyCounter++),n},this.reset=function(){this.$undoStack=[],this.$redoStack=[],this.dirtyCounter=0},this.hasUndo=function(){return this.$undoStack.length>0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return this.dirtyCounter===0},this.$serializeDeltas=function(t){return n(t,e)},this.$deserializeDeltas=function(e){return n(e,t)}}).call(r.prototype),t.UndoManager=r}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;t<e.length;t++){var n=e[t],r=n.row,i=this.$annotations[r];i||(i=this.$annotations[r]={text:[]});var o=n.text;o=o?s.escapeHTML(o):n.html||"",i.text.indexOf(o)===-1&&i.text.push(o);var u=n.type;u=="error"?i.className=" ace_error":u=="warning"&&i.className!=" ace_error"?i.className=" ace_warning":u=="info"&&!i.className&&(i.className=" ace_info")}},this.$updateAnnotations=function(e){if(!this.$annotations.length)return;var t=e.start.row,n=e.end.row-t;if(n!==0)if(e.action=="remove")this.$annotations.splice(t,n+1,null);else{var r=new Array(n+1);r.unshift(t,1),this.$annotations.splice.apply(this.$annotations,r)}},this.update=function(e){var t=this.session,n=e.firstRow,i=Math.min(e.lastRow+e.gutterOffset,t.getLength()-1),s=t.getNextFoldLine(n),o=s?s.start.row:Infinity,u=this.$showFoldWidgets&&t.foldWidgets,a=t.$breakpoints,f=t.$decorations,l=t.$firstLineNumber,c=0,h=t.gutterRenderer||this.$renderer,p=null,d=-1,v=n;for(;;){v>o&&(v=s.end.row+1,s=t.getNextFoldLine(v,s),o=s?s.start.row:Infinity);if(v>i){while(this.$cells.length>d+1)p=this.$cells.pop(),this.element.removeChild(p.element);break}p=this.$cells[++d],p||(p={element:null,textNode:null,foldWidget:null},p.element=r.createElement("div"),p.textNode=document.createTextNode(""),p.element.appendChild(p.textNode),this.element.appendChild(p.element),this.$cells[d]=p);var m="ace_gutter-cell ";a[v]&&(m+=a[v]),f[v]&&(m+=f[v]),this.$annotations[v]&&(m+=this.$annotations[v].className),p.element.className!=m&&(p.element.className=m);var g=t.getRowLength(v)*e.lineHeight+"px";g!=p.element.style.height&&(p.element.style.height=g);if(u){var y=u[v];y==null&&(y=u[v]=t.getFoldWidget(v))}if(y){p.foldWidget||(p.foldWidget=r.createElement("span"),p.element.appendChild(p.foldWidget));var m="ace_fold-widget ace_"+y;y=="start"&&v==o&&v<s.end.row?m+=" ace_closed":m+=" ace_open",p.foldWidget.className!=m&&(p.foldWidget.className=m);var g=e.lineHeight+"px";p.foldWidget.style.height!=g&&(p.foldWidget.style.height=g)}else p.foldWidget&&(p.element.removeChild(p.foldWidget),p.foldWidget=null);var b=c=h?h.getText(t,v):v+l;b!=p.textNode.data&&(p.textNode.data=b),v++}this.element.style.height=e.minHeight+"px";if(this.$fixedWidth||t.$useWrapMode)c=t.getLength()+l;var w=h?h.getWidth(t,c,e):c.toString().length*e.characterWidth,E=this.$padding||this.$computePadding();w+=E.left+E.right,w!==this.gutterWidth&&!isNaN(w)&&(this.gutterWidth=w,this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._emit("changeGutterWidth",w))},this.$fixedWidth=!1,this.$showLineNumbers=!0,this.$renderer="",this.setShowLineNumbers=function(e){this.$renderer=!e&&{getWidth:function(){return""},getText:function(){return""}}},this.getShowLineNumbers=function(){return this.$showLineNumbers},this.$showFoldWidgets=!0,this.setShowFoldWidgets=function(e){e?r.addCssClass(this.element,"ace_folding-enabled"):r.removeCssClass(this.element,"ace_folding-enabled"),this.$showFoldWidgets=e,this.$padding=null},this.getShowFoldWidgets=function(){return this.$showFoldWidgets},this.$computePadding=function(){if(!this.element.firstChild)return{left:0,right:0};var e=r.computedStyle(this.element.firstChild);return this.$padding={},this.$padding.left=parseInt(e.paddingLeft)+1||0,this.$padding.right=parseInt(e.paddingRight)||0,this.$padding},this.getRegion=function(e){var t=this.$padding||this.$computePadding(),n=this.element.getBoundingClientRect();if(e.x<t.left+n.left)return"markers";if(this.$showFoldWidgets&&e.x>n.right-t.right)return"foldWidgets"}}).call(u.prototype),t.Gutter=u}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,n,r){return(e?1:0)|(t?2:0)|(n?4:0)|(r?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(!e)return;this.config=e;var t=[];for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var i=r.range.clipRows(e.firstRow,e.lastRow);if(i.isEmpty())continue;i=i.toScreenRange(this.session);if(r.renderer){var s=this.$getTop(i.start.row,e),o=this.$padding+i.start.column*e.characterWidth;r.renderer(t,i,o,s,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,i,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,i,r.clazz,e):i.isMultiLine()?r.type=="text"?this.drawTextMarker(t,i,r.clazz,e):this.drawMultiLineMarker(t,i,r.clazz,e):this.drawSingleLineMarker(t,i,r.clazz+" ace_start"+" ace_br15",e)}this.element.innerHTML=t.join("")},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,n,i,s,o){var u=this.session,a=n.start.row,f=n.end.row,l=a,c=0,h=0,p=u.getScreenLastRowColumn(l),d=new r(l,n.start.column,l,h);for(;l<=f;l++)d.start.row=d.end.row=l,d.start.column=l==a?n.start.column:u.getRowWrapIndent(l),d.end.column=p,c=h,h=p,p=l+1<f?u.getScreenLastRowColumn(l+1):l==f?0:n.end.column,this.drawSingleLineMarker(t,d,i+(l==a?" ace_start":"")+" ace_br"+e(l==a||l==a+1&&n.start.column,c<h,h>p,l==f),s,l==f?0:1,o)},this.drawMultiLineMarker=function(e,t,n,r,i){var s=this.$padding,o=r.lineHeight,u=this.$getTop(t.start.row,r),a=s+t.start.column*r.characterWidth;i=i||"",e.push("<div class='",n," ace_br1 ace_start' style='","height:",o,"px;","right:0;","top:",u,"px;","left:",a,"px;",i,"'></div>"),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("<div class='",n," ace_br12' style='","height:",o,"px;","width:",f,"px;","top:",u,"px;","left:",s,"px;",i,"'></div>"),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<=0)return;u=this.$getTop(t.start.row+1,r);var l=(t.start.column?1:0)|(t.end.column?0:8);e.push("<div class='",n,l?" ace_br"+l:"","' style='","height:",o,"px;","right:0;","top:",u,"px;","left:",s,"px;",i,"'></div>")},this.drawSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;e.push("<div class='",n,"' style='","height:",o,"px;","width:",u,"px;","top:",a,"px;","left:",f,"px;",s||"","'></div>")},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),e.push("<div class='",n,"' style='","height:",o,"px;","top:",s,"px;","left:0;right:0;",i||"","'></div>")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("<div class='",n,"' style='","height:",o,"px;","top:",s,"px;","left:0;right:0;",i||"","'></div>")}}).call(s.prototype),t.Marker=s}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){r.implement(this,u),this.EOF_CHAR="\u00b6",this.EOL_CHAR_LF="\u00ac",this.EOL_CHAR_CRLF="\u00a4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2014",this.SPACE_CHAR="\u00b7",this.$padding=0,this.$updateEolChar=function(){var e=this.session.doc.getNewLineCharacter()=="\n"?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;n<e+1;n++)this.showInvisibles?t.push("<span class='ace_invisible ace_invisible_tab'>"+s.stringRepeat(this.TAB_CHAR,n)+"</span>"):t.push(s.stringRepeat(" ",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide",i="",o="";if(this.showInvisibles){r+=" ace_invisible",i=" ace_invisible_space",o=" ace_invisible_tab";var u=s.stringRepeat(this.SPACE_CHAR,this.tabSize),a=s.stringRepeat(this.TAB_CHAR,this.tabSize)}else var u=s.stringRepeat(" ",this.tabSize),a=u;this.$tabStrings[" "]="<span class='"+r+i+"'>"+u+"</span>",this.$tabStrings[" "]="<span class='"+r+o+"'>"+a+"</span>"}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),i=Math.min(n,e.lastRow),s=this.element.childNodes,o=0;for(var u=e.firstRow;u<r;u++){var a=this.session.getFoldLine(u);if(a){if(a.containsRow(r)){r=a.start.row;break}u=a.end.row}o++}var u=r,a=this.session.getNextFoldLine(u),f=a?a.start.row:Infinity;for(;;){u>f&&(u=a.end.row+1,a=this.session.getNextFoldLine(u,a),f=a?a.start.row:Infinity);if(u>i)break;var l=s[o++];if(l){var c=[];this.$renderLine(c,u,!this.$useLineGroups(),u==f?a:!1),l.style.height=e.lineHeight*this.session.getRowLength(u)+"px",l.innerHTML=c.join("")}u++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow<e.firstRow)return this.update(e);if(e.lastRow<t.firstRow)return this.update(e);var n=this.element;if(t.firstRow<e.firstRow)for(var r=this.session.getFoldedRowCount(t.firstRow,e.firstRow-1);r>0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRow<t.firstRow){var i=this.$renderLinesFragment(e,e.firstRow,t.firstRow-1);n.firstChild?n.insertBefore(i,n.firstChild):n.appendChild(i)}if(e.lastRow>t.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a),a.style.height=e.lineHeight*this.session.getRowLength(s)+"px";else while(a.firstChild)r.appendChild(a.firstChild);s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,i=n,s=this.session.getNextFoldLine(i),o=s?s.start.row:Infinity;for(;;){i>o&&(i=s.end.row+1,s=this.session.getNextFoldLine(i,s),o=s?s.start.row:Infinity);if(i>r)break;this.$useLineGroups()&&t.push("<div class='ace_line_group' style='height:",e.lineHeight*this.session.getRowLength(i),"px'>"),this.$renderLine(t,i,!1,i==o?s:!1),this.$useLineGroups()&&t.push("</div>"),i++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?"<span class='ace_invisible ace_invisible_space'>"+s.stringRepeat(i.SPACE_CHAR,e.length)+"</span>":e;if(e=="&")return"&#38;";if(e=="<")return"&#60;";if(e==">")return"&#62;";if(e==" "){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e=="\u3000"){var f=i.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,"<span class='"+f+"' style='width:"+i.config.characterWidth*2+"px'>"+l+"</span>"}return r?"<span class='ace_invisible ace_invisible_space ace_invalid'>"+i.SPACE_CHAR+"</span>":(t+=1,"<span class='ace_cjk' style='width:"+i.config.characterWidth*2+"px'>"+e+"</span>")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f="ace_"+n.type.replace(/\./g," ace_"),l="";n.type=="fold"&&(l=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("<span class='",f,"'",l,">",a,"</span>")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);return r<=0||r>=n?t:t[0]==" "?(r-=r%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],r/this.tabSize)),t.substr(r)):t[0]==" "?(e.push(s.stringRepeat(this.$tabStrings[" "],r)),t.substr(r)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,o=0,u=n[0],a=0;for(var f=0;f<t.length;f++){var l=t[f],c=l.value;if(f==0&&this.displayIndentGuides){i=c.length,c=this.renderIndentGuide(e,c,u);if(!c)continue;i-=c.length}if(i+c.length<u)a=this.$renderToken(e,a,l,c),i+=c.length;else{while(i+c.length>=u)a=this.$renderToken(e,a,l,c.substring(0,u-i)),c=c.substring(u-i),i=u,r||e.push("</div>","<div class='ace_line' style='height:",this.config.lineHeight,"px'>"),e.push(s.stringRepeat("\u00a0",n.indent)),o++,a=0,u=n[o]||Number.MAX_VALUE;c.length!=0&&(i+=c.length,a=this.$renderToken(e,a,l,c))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;s<t.length;s++)r=t[s],i=r.value,n=this.$renderToken(e,n,r,i)},this.$renderLine=function(e,t,n,r){!r&&r!=0&&(r=this.session.getFoldLine(t));if(r)var i=this.$getFoldLineTokens(t,r);else var i=this.session.getTokens(t);n||e.push("<div class='ace_line' style='height:",this.config.lineHeight*(this.$useLineGroups()?1:this.session.getRowLength(t)),"px'>");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("<span class='ace_invisible ace_invisible_eol'>",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"</span>")),n||e.push("</div>")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.length<t){s+=e[i].value.length,i++;if(i==e.length)return}if(s!=t){var o=e[i].value.substring(t-s);o.length>n-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(s<n&&i<e.length){var o=e[i].value;o.length+s>n?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i,s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),i===undefined&&(i=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(i?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&!i&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=0,i=t.length;n<i;n++){var s=this.getPixelPosition(t[n].cursor,!0);if((s.top>e.height+e.offset||s.top<0)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;this.drawCursor?this.drawCursor(o,s,e,t[n],this.session):(o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px")}while(this.cursors.length>r)this.removeCursor();var u=this.session.getOverwrite();this.$setOverwrite(u),this.$pixelPos=s,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(s.prototype),t.Cursor=s}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){r.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(u.prototype);var a=function(e,t){u.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};r.inherits(a,u),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(a.prototype);var f=function(e,t){u.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};r.inherits(f,u),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(f.prototype),t.ScrollBar=a,t.ScrollBarV=a,t.ScrollBarH=f,t.VScrollBar=a,t.HScrollBar=f}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending&&this.changes){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=0,f=t.FontMetrics=function(e){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),a||this.$testFractionalRect(),this.$measureNode.innerHTML=s.stringRepeat("X",a),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){r.implement(this,u),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=i.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;t>0&&t<1?a=50:a=100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",o.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(a===50){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var n={height:e.height,width:e.width/a}}else var n={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/a};return n.width===0||n.height===0?null:n},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,a);var t=this.$main.getBoundingClientRect();return t.width/a},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(f.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./config"),o=e("./lib/useragent"),u=e("./layer/gutter").Gutter,a=e("./layer/marker").Marker,f=e("./layer/text").Text,l=e("./layer/cursor").Cursor,c=e("./scrollbar").HScrollBar,h=e("./scrollbar").VScrollBar,p=e("./renderloop").RenderLoop,d=e("./layer/font_metrics").FontMetrics,v=e("./lib/event_emitter").EventEmitter,m='.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}';i.importCssString(m,"ace_editor.css");var g=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!o.isOldIE,i.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new u(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new a(this.content);var r=this.$textLayer=new f(this.content);this.canvas=r.element,this.$markerFront=new a(this.content),this.$cursorLayer=new l(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new h(this.container,this),this.scrollBarH=new c(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new d(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),s.resetOptions(this),s._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,v),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e);if(!e)return;this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t,n){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRow<t&&(this.$changedLines.lastRow=t)):this.$changedLines={firstRow:e,lastRow:t};if(this.$changedLines.lastRow<this.layerConfig.firstRow){if(!n)return;this.$changedLines.lastRow=this.layerConfig.lastRow}if(this.$changedLines.firstRow>this.layerConfig.lastRow)return;this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,r){if(this.resizing>2)return;this.resizing>0?this.resizing++:this.resizing=e?1:0;var i=this.container;r||(r=i.clientHeight||i.scrollHeight),n||(n=i.clientWidth||i.scrollWidth);var s=this.$updateCachedSize(e,t,n,r);if(!this.$size.scrollerHeight||!n&&!r)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null},this.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var i=0,s=this.$size,o={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};r&&(e||s.height!=r)&&(s.height=r,i|=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",i|=this.CHANGE_SCROLL);if(n&&(e||s.width!=n)){i|=this.CHANGE_SIZE,s.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",s.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px";if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)i|=this.CHANGE_FULL}return s.$dirty=!n||!r,i&&this._signal("resize",o),i},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var r=this.textarea.style,i=this.lineHeight;if(t<0||t>e.height-i){r.top=r.left="0";return}var s=this.characterWidth;if(this.$composition){var o=this.textarea.value.replace(/^\x01+/,"");s*=this.session.$getStringScreenWidth(o)[0]+2,i+=2}n-=this.scrollLeft,n>this.$size.scrollerWidth-s&&(n=this.$size.scrollerWidth-s),n+=this.gutterWidth,r.height=i+"px",r.width=s+"px",r.left=Math.min(n,this.$size.scrollerWidth-s)+"px",r.top=Math.min(t,this.$size.height-i)+"px"},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow,n=this.session.documentToScreenRow(t,0)*e.lineHeight;return n-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,r){var i=this.scrollMargin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,i.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-i.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){this.$changes&&(e|=this.$changes,this.$changes=0);if(!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t){this.$changes|=e;return}if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){e|=this.$computeLayerConfig();if(n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var r=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;r>0&&(this.scrollTop=r,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+"px",this.content.style.marginTop=-n.offset+"px",this.content.style.width=n.width+2*this.$padding+"px",this.content.style.height=n.minHeight+"px"}e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left");if(e&this.CHANGE_FULL){this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal("afterRender");return}if(e&this.CHANGE_SCROLL){e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this._signal("afterRender");return}e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var r=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||r!=this.$vScroll){r!=this.$vScroll&&(this.$vScroll=r,this.scrollBarV.setVisible(r));var i=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,i,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.$getLongestLine(),o=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-s-2*this.$padding<0),u=this.$horizScroll!==o;u&&(this.$horizScroll=o,this.scrollBarH.setVisible(o));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var f=this.scrollTop%this.lineHeight,l=t.scrollerHeight+this.lineHeight,c=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=c;var h=this.scrollMargin;this.session.setScrollTop(Math.max(-h.top,Math.min(this.scrollTop,i-t.scrollerHeight+h.bottom))),this.session.setScrollLeft(Math.max(-h.left,Math.min(this.scrollLeft,s+2*this.$padding-t.scrollerWidth+h.right)));var p=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+c<0||this.scrollTop>h.top),d=a!==p;d&&(this.$vScroll=p,this.scrollBarV.setVisible(p));var v=Math.ceil(l/this.lineHeight)-1,m=Math.max(0,Math.round((this.scrollTop-f)/this.lineHeight)),g=m+v,y,b,w=this.lineHeight;m=e.screenToDocumentRow(m,0);var E=e.getFoldLine(m);E&&(m=E.start.row),y=e.documentToScreenRow(m,0),b=e.getRowLength(m)*w,g=Math.min(e.screenToDocumentRow(g,0),e.getLength()-1),l=t.scrollerHeight+e.getRowLength(g)*w+b,f=this.scrollTop-y*w;var S=0;this.layerConfig.width!=s&&(S=this.CHANGE_H_SCROLL);if(u||d)S=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),d&&(s=this.$getLongestLine());return this.layerConfig={width:s,padding:this.$padding,firstRow:m,firstRowScreen:y,lastRow:g,lineHeight:w,characterWidth:this.characterWidth,minHeight:l,maxHeight:i,offset:f,gutterOffset:Math.max(0,Math.ceil((f+t.height-t.scrollerHeight)/w)),height:this.$size.scrollerHeight},S},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(t<n.firstRow)return;if(t===Infinity){this.$showGutter&&this.$gutterLayer.update(n),this.$textLayer.update(n);return}return this.$textLayer.updateLines(n,e,t),!0},this.$getLongestLine=function(){var e=this.session.getScreenWidth();return this.showInvisibles&&!this.session.$useWrapMode&&(e+=1),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(e*this.characterWidth))},this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},this.addGutterDecoration=function(e,t){this.$gutterLayer.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){this.$gutterLayer.removeGutterDecoration(e,t)},this.updateBreakpoints=function(e){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(e){this.$gutterLayer.setAnnotations(e),this.$loop.schedule(this.CHANGE_GUTTER)},this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},this.hideCursor=function(){this.$cursorLayer.hideCursor()},this.showCursor=function(){this.$cursorLayer.showCursor()},this.scrollSelectionIntoView=function(e,t,n){this.scrollCursorIntoView(e,n),this.scrollCursorIntoView(t,n)},this.scrollCursorIntoView=function(e,t,n){if(this.$size.scrollerHeight===0)return;var r=this.$cursorLayer.getPixelPosition(e),i=r.left,s=r.top,o=n&&n.top||0,u=n&&n.bottom||0,a=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;a+o>s?(t&&a+o>s+this.lineHeight&&(s-=t*this.$size.scrollerHeight),s===0&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):a+this.$size.scrollerHeight-u<s+this.lineHeight&&(t&&a+this.$size.scrollerHeight-u<s-this.lineHeight&&(s+=t*this.$size.scrollerHeight),this.session.setScrollTop(s+this.lineHeight-this.$size.scrollerHeight));var f=this.scrollLeft;f>i?(i<this.$padding+2*this.layerConfig.characterWidth&&(i=-this.scrollMargin.left),this.session.setScrollLeft(i)):f+this.$size.scrollerWidth<i+this.characterWidth?this.session.setScrollLeft(Math.round(i+this.characterWidth-this.$size.scrollerWidth)):f<=this.$padding&&i-f<this.characterWidth&&this.session.setScrollLeft(0)},this.getScrollTop=function(){return this.session.getScrollTop()},this.getScrollLeft=function(){return this.session.getScrollLeft()},this.getScrollTopRow=function(){return this.scrollTop/this.lineHeight},this.getScrollBottomRow=function(){return Math.max(0,Math.floor((this.scrollTop+this.$size.scrollerHeight)/this.lineHeight)-1)},this.scrollToRow=function(e){this.session.setScrollTop(e*this.lineHeight)},this.alignCursor=function(e,t){typeof e=="number"&&(e={row:e,column:0});var n=this.$cursorLayer.getPixelPosition(e),r=this.$size.scrollerHeight-this.lineHeight,i=n.top-r*(t||0);return this.session.setScrollTop(i),i},this.STEPS=8,this.$calcSteps=function(e,t){var n=0,r=this.STEPS,i=[],s=function(e,t,n){return n*(Math.pow(e-1,3)+1)+t};for(n=0;n<r;++n)i.push(s(n/this.STEPS,e,t-e));return i},this.scrollToLine=function(e,t,n,r){var i=this.$cursorLayer.getPixelPosition({row:e,column:0}),s=i.top;t&&(s-=this.$size.scrollerHeight/2);var o=this.scrollTop;this.session.setScrollTop(s),n!==!1&&this.animateScrolling(o,r)},this.animateScrolling=function(e,t){var n=this.scrollTop;if(!this.$animatedScroll)return;var r=this;if(e==n)return;if(this.$scrollAnimation){var i=this.$scrollAnimation.steps;if(i.length){e=i[0];if(e==n)return}}var s=r.$calcSteps(e,n);this.$scrollAnimation={from:e,to:n,steps:s},clearInterval(this.$timer),r.session.setScrollTop(s.shift()),r.session.$scrollTop=n,this.$timer=setInterval(function(){s.length?(r.session.setScrollTop(s.shift()),r.session.$scrollTop=n):n!=null?(r.session.$scrollTop=-1,r.session.setScrollTop(n),n=null):(r.$timer=clearInterval(r.$timer),r.$scrollAnimation=null,t&&t())},10)},this.scrollToY=function(e){this.scrollTop!==e&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=e)},this.scrollToX=function(e){this.scrollLeft!==e&&(this.scrollLeft=e),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollTo=function(e,t){this.session.setScrollTop(t),this.session.setScrollLeft(t)},this.scrollBy=function(e,t){t&&this.session.setScrollTop(this.session.getScrollTop()+t),e&&this.session.setScrollLeft(this.session.getScrollLeft()+e)},this.isScrollableBy=function(e,t){if(t<0&&this.session.getScrollTop()>=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom)return!0;if(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return!0;if(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),s=Math.round(r);return{row:i,column:s,side:r-s>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(i,Math.max(r,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+Math.round(r.column*this.characterWidth),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this.setTheme=function(e,t){function o(r){if(n.$themeId!=e)return t&&t();if(!r.cssClass)return;i.importCssString(r.cssText,r.cssClass,n.container.ownerDocument),n.theme&&i.removeCssClass(n.container,n.theme.cssClass);var s="padding"in r?r.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&s!=n.$padding&&n.setPadding(s),n.$theme=r.cssClass,n.theme=r,i.addCssClass(n.container,r.cssClass),i.setCssClass(n.container,"ace_dark",r.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:r}),t&&t()}var n=this;this.$themeId=e,n._dispatchEvent("themeChange",{theme:e});if(!e||typeof e=="string"){var r=e||this.$options.theme.initialValue;s.loadModule(["theme",r],o)}else o(e)},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){i.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){i.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(g.prototype),s.defineOptions(g.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){typeof e=="number"&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){i.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){typeof e=="number"&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},maxPixelHeight:{set:function(e){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(e){e=+e||0;if(this.$scrollPastEnd==e)return;this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=g}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,o=e("../config"),u=function(t,n,r,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl);if(o.get("packaged")||!e.toUrl)i=i||o.moduleUrl(n,"worker");else{var s=this.$normalizePath;i=i||s(e.toUrl("ace/worker/worker.js",null,"_"));var u={};t.forEach(function(t){u[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{this.$worker=new Worker(i)}catch(a){if(!(a instanceof window.DOMException))throw a;var f=this.$workerBlob(i),l=window.URL||window.webkitURL,c=l.createObjectURL(f);this.$worker=new Worker(c),l.revokeObjectURL(c)}this.$worker.postMessage({init:!0,tlns:u,module:n,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return i.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var r=this.callbackId++;this.callbacks[r]=n,t.push(r)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){console.error(n.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),e.action=="insert"?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;if(!e)return;this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})},this.$workerBlob=function(e){var t="importScripts('"+i.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(n){var r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,s=new r;return s.append(t),s.getBlob("application/javascript")}}}).call(u.prototype);var a=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,i=!1,u=Object.create(s),a=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){a.messageBuffer.push(e),r&&(i?setTimeout(f):f())},this.setEmitSync=function(e){i=e};var f=function(){var e=a.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};u.postMessage=function(e){a.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.messageBuffer.length)f()})};a.prototype=u.prototype,t.UIWorkerClient=a,t.WorkerClient=u}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var i=this.pos;i.$insertRight=!0,i.detach(),i.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);r.$insertRight=!0,r.detach(),e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e<this.others.length;e++)this.session.removeMarker(this.others[e].markerId)},this.onUpdate=function(e){if(this.$updating)return this.updateAnchors(e);var t=e;if(t.start.row!==t.end.row)return;if(t.start.row!==this.pos.row)return;this.$updating=!0;var n=e.action==="insert"?t.end.column-t.start.column:t.start.column-t.end.column,i=t.start.column>=this.pos.column&&t.start.column<=this.pos.column+this.length+1,s=t.start.column-this.pos.column;this.updateAnchors(e),i&&(this.length+=n);if(i&&!this.session.$fromUndo)if(e.action==="insert")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.insertMergedLines(a,e.lines)}else if(e.action==="remove")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.remove(new r(a.row,a.column,a.row,a.column-n))}this.$updating=!1,this.updateMarkers()},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(this.$updating)return;var e=this,t=this.session,n=function(n,i){t.removeMarker(n.markerId),n.markerId=t.addMarker(new r(n.row,n.column,n.row,n.column+e.length),i,null,!1)};n(this.pos,this.mainClass);for(var i=this.others.length;i--;)n(this.others[i],this.othersClass)},this.onCursorChange=function(e){if(this.$updating||!this.session)return;var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(this.$undoStackDepth===-1)return;var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth;for(var n=0;n<t;n++)e.undo(!0);this.selectionBefore&&this.session.selection.fromJSON(this.selectionBefore)}}).call(o.prototype),t.PlaceHolder=o}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){function s(e,t){return e.row==t.row&&e.column==t.column}function o(e){var t=e.domEvent,n=t.altKey,o=t.shiftKey,u=t.ctrlKey,a=e.getAccelKey(),f=e.getButton();u&&i.isMac&&(f=t.button);if(e.editor.inMultiSelectMode&&f==2){e.editor.textInput.onContextMenu(e.domEvent);return}if(!u&&!n&&!a){f===0&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode();return}if(f!==0)return;var l=e.editor,c=l.selection,h=l.inMultiSelectMode,p=e.getDocumentPosition(),d=c.getCursor(),v=e.inSelection()||c.isEmpty()&&s(p,d),m=e.x,g=e.y,y=function(e){m=e.clientX,g=e.clientY},b=l.session,w=l.renderer.pixelToScreenCoordinates(m,g),E=w,S;if(l.$mouseHandler.$enableJumpToDef)u&&n||a&&n?S=o?"block":"add":n&&l.$blockSelectEnabled&&(S="block");else if(a&&!n){S="add";if(!h&&o)return}else n&&l.$blockSelectEnabled&&(S="block");S&&i.isMac&&t.ctrlKey&&l.$mouseHandler.cancelContextMenu();if(S=="add"){if(!h&&v)return;if(!h){var x=c.toOrientedRange();l.addSelectionMarker(x)}var T=c.rangeList.rangeAtPoint(p);l.$blockScrolling++,l.inVirtualSelectionMode=!0,o&&(T=null,x=c.ranges[0]||x,l.removeSelectionMarker(x)),l.once("mouseup",function(){var e=c.toOrientedRange();T&&e.isEmpty()&&s(T.cursor,e.cursor)?c.substractPoint(e.cursor):(o?c.substractPoint(x.cursor):x&&(l.removeSelectionMarker(x),c.addRange(x)),c.addRange(e)),l.$blockScrolling--,l.inVirtualSelectionMode=!1})}else if(S=="block"){e.stop(),l.inVirtualSelectionMode=!0;var N,C=[],k=function(){var e=l.renderer.pixelToScreenCoordinates(m,g),t=b.screenToDocumentPosition(e.row,e.column);if(s(E,e)&&s(t,c.lead))return;E=e,l.$blockScrolling++,l.selection.moveToPosition(t),l.renderer.scrollCursorIntoView(),l.removeSelectionMarkers(C),C=c.rectangularRangeBlock(E,w),l.$mouseHandler.$clickSelection&&C.length==1&&C[0].isEmpty()&&(C[0]=l.$mouseHandler.$clickSelection.clone()),C.forEach(l.addSelectionMarker,l),l.updateSelectionMarkers(),l.$blockScrolling--};l.$blockScrolling++,h&&!a?c.toSingleRange():!h&&a&&(N=c.toOrientedRange(),l.addSelectionMarker(N)),o?w=b.documentToScreenPosition(c.lead):c.moveToPosition(p),l.$blockScrolling--,E={row:-1,column:-1};var L=function(e){clearInterval(O),l.removeSelectionMarkers(C),C.length||(C=[c.toOrientedRange()]),l.$blockScrolling++,N&&(l.removeSelectionMarker(N),c.toSingleRange(N));for(var t=0;t<C.length;t++)c.addRange(C[t]);l.inVirtualSelectionMode=!1,l.$mouseHandler.$clickSelection=null,l.$blockScrolling--},A=k;r.capture(l.container,y,L);var O=setInterval(function(){A()},20);return e.preventDefault()}}var r=e("../lib/event"),i=e("../lib/useragent");t.onMouseDown=o}),ace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"],function(e,t,n){t.defaultCommands=[{name:"addCursorAbove",exec:function(e){e.selectMoreLines(-1)},bindKey:{win:"Ctrl-Alt-Up",mac:"Ctrl-Alt-Up"},scrollIntoView:"cursor",readOnly:!0},{name:"addCursorBelow",exec:function(e){e.selectMoreLines(1)},bindKey:{win:"Ctrl-Alt-Down",mac:"Ctrl-Alt-Down"},scrollIntoView:"cursor",readOnly:!0},{name:"addCursorAboveSkipCurrent",exec:function(e){e.selectMoreLines(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Up",mac:"Ctrl-Alt-Shift-Up"},scrollIntoView:"cursor",readOnly:!0},{name:"addCursorBelowSkipCurrent",exec:function(e){e.selectMoreLines(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Down",mac:"Ctrl-Alt-Shift-Down"},scrollIntoView:"cursor",readOnly:!0},{name:"selectMoreBefore",exec:function(e){e.selectMore(-1)},bindKey:{win:"Ctrl-Alt-Left",mac:"Ctrl-Alt-Left"},scrollIntoView:"cursor",readOnly:!0},{name:"selectMoreAfter",exec:function(e){e.selectMore(1)},bindKey:{win:"Ctrl-Alt-Right",mac:"Ctrl-Alt-Right"},scrollIntoView:"cursor",readOnly:!0},{name:"selectNextBefore",exec:function(e){e.selectMore(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Left",mac:"Ctrl-Alt-Shift-Left"},scrollIntoView:"cursor",readOnly:!0},{name:"selectNextAfter",exec:function(e){e.selectMore(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Right",mac:"Ctrl-Alt-Shift-Right"},scrollIntoView:"cursor",readOnly:!0},{name:"splitIntoLines",exec:function(e){e.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:!0},{name:"alignCursors",exec:function(e){e.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",exec:function(e){e.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:!0}],t.multiSelectCommands=[{name:"singleSelection",bindKey:"esc",exec:function(e){e.exitMultiSelectMode()},scrollIntoView:"cursor",readOnly:!0,isAvailable:function(e){return e&&e.inMultiSelectMode}}];var r=e("../keyboard/hash_handler").HashHandler;t.keyboardHandler=new r(t.multiSelectCommands)}),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],function(e,t,n){function h(e,t,n){return c.$options.wrap=!0,c.$options.needle=t,c.$options.backwards=n==-1,c.find(e)}function v(e,t){return e.row==t.row&&e.column==t.column}function m(e){if(e.$multiselectOnSessionChange)return;e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),e.$multiselectOnSessionChange=t.onSessionChange.bind(e),e.$checkMultiselectChange=e.$checkMultiselectChange.bind(e),e.$multiselectOnSessionChange(e),e.on("changeSession",e.$multiselectOnSessionChange),e.on("mousedown",o),e.commands.addCommands(f.defaultCommands),g(e)}function g(e){function r(t){n&&(e.renderer.setMouseCursor(""),n=!1)}var t=e.textInput.getElement(),n=!1;u.addListener(t,"keydown",function(t){var i=t.keyCode==18&&!(t.ctrlKey||t.shiftKey||t.metaKey);e.$blockSelectEnabled&&i?n||(e.renderer.setMouseCursor("crosshair"),n=!0):n&&r()}),u.addListener(t,"keyup",r),u.addListener(t,"blur",r)}var r=e("./range_list").RangeList,i=e("./range").Range,s=e("./selection").Selection,o=e("./mouse/multi_select_handler").onMouseDown,u=e("./lib/event"),a=e("./lib/lang"),f=e("./commands/multi_select_commands");t.commands=f.defaultCommands.concat(f.multiSelectCommands);var l=e("./search").Search,c=new l,p=e("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(p.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(e,t){if(!e)return;if(!this.inMultiSelectMode&&this.rangeCount===0){var n=this.toOrientedRange();this.rangeList.add(n),this.rangeList.add(e);if(this.rangeList.ranges.length!=2)return this.rangeList.removeAll(),t||this.fromOrientedRange(e);this.rangeList.removeAll(),this.rangeList.add(n),this.$onAddRange(n)}e.cursor||(e.cursor=e.end);var r=this.rangeList.add(e);return this.$onAddRange(e),r.length&&this.$onRemoveRange(r),this.rangeCount>1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._signal("removeRange",{ranges:e}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c<o;c++)f.push(this.getLineRange(c,!0));l=this.getLineRange(o,!0),l.end.column=n.end.column,f.push(l),f.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column<t.column;if(s)var o=e.column,u=t.column;else var o=t.column,u=e.column;var a=e.row<t.row;if(a)var f=e.row,l=t.row;else var f=t.row,l=e.row;o<0&&(o=0),f<0&&(f=0),f==l&&(n=!0);for(var c=f;c<=l;c++){var h=i.fromPoints(this.session.screenToDocumentPosition(c,o),this.session.screenToDocumentPosition(c,u));if(h.isEmpty()){if(p&&v(h.end,p))break;var p=h.end}h.cursor=s?h.start:h.end,r.push(h)}a&&r.reverse();if(!n){var d=r.length-1;while(r[d].isEmpty()&&d>0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection")},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=n&&n.keepOrder,i=n==1||n&&n.$byLines,o=this.session,u=this.selection,a=u.rangeList,f=(r?u:a).ranges,l;if(!f.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var c=u._eventRegistry;u._eventRegistry={};var h=new s(o);this.inVirtualSelectionMode=!0;for(var p=f.length;p--;){if(i)while(p>0&&f[p].start.row==f[p-1].end.row)p--;h.fromOrientedRange(f[p]),h.index=p,this.selection=o.selection=h;var d=e.exec?e.exec(this,t||{}):e(this,t||{});!l&&d!==undefined&&(l=d),h.toOrientedRange(f[p])}h.detach(),this.selection=o.selection=u,this.inVirtualSelectionMode=!1,u._eventRegistry=c,u.mergeOverlappingRanges();var v=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),v&&v.from==v.to&&this.renderer.animateScrolling(v.from),l},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;r<t.length;r++)n.push(this.session.getTextRange(t[r]));var i=this.session.getDocument().getNewLineCharacter();e=n.join(i),e.length==(n.length-1)*i.length&&(e="")}else this.selection.isEmpty()||(e=this.session.getTextRange(this.getSelectionRange()));return e},this.$checkMultiselectChange=function(e,t){if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var n=this.multiSelect.ranges[0];if(this.multiSelect.isEmpty()&&t==this.multiSelect.anchor)return;var r=t==this.multiSelect.anchor?n.cursor==n.start?n.end:n.start:n.cursor;(r.row!=t.row||this.session.$clipPositionToDocument(r.row,r.column).column!=t.column)&&this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange())}},this.findAll=function(e,t,n){t=t||{},t.needle=e||t.needle;if(t.needle==undefined){var r=this.selection.isEmpty()?this.selection.getWordRange():this.selection.getRange();t.needle=this.session.getTextRange(r)}this.$search.set(t);var i=this.$search.findAll(this.session);if(!i.length)return 0;this.$blockScrolling+=1;var s=this.multiSelect;n||s.toSingleRange(i[0]);for(var o=i.length;o--;)s.addRange(i[o],!0);return r&&s.rangeList.rangeAtPoint(r.start)&&s.addRange(r,!0),this.$blockScrolling-=1,i.length},this.selectMoreLines=function(e,t){var n=this.selection.toOrientedRange(),r=n.cursor==n.end,s=this.session.documentToScreenPosition(n.cursor);this.selection.$desiredColumn&&(s.column=this.selection.$desiredColumn);var o=this.session.screenToDocumentPosition(s.row+e,s.column);if(!n.isEmpty())var u=this.session.documentToScreenPosition(r?n.end:n.start),a=this.session.screenToDocumentPosition(u.row+e,u.column);else var a=o;if(r){var f=i.fromPoints(o,a);f.cursor=f.start}else{var f=i.fromPoints(a,o);f.cursor=f.end}f.desiredColumn=s.column;if(!this.selection.inMultiSelectMode)this.selection.addRange(n);else if(t)var l=n.cursor;this.selection.addRange(f),l&&this.selection.substractPoint(l)},this.transposeSelections=function(e){var t=this.session,n=t.multiSelect,r=n.ranges;for(var i=r.length;i--;){var s=r[i];if(s.isEmpty()){var o=t.getWordRange(s.start.row,s.start.column);s.start.row=o.start.row,s.start.column=o.start.column,s.end.row=o.end.row,s.end.column=o.end.column}}n.mergeOverlappingRanges();var u=[];for(var i=r.length;i--;){var s=r[i];u.unshift(t.getTextRange(s))}e<0?u.unshift(u.pop()):u.push(u.shift());for(var i=r.length;i--;){var s=r[i],o=s.clone();t.replace(s,u[i]),s.start.row=o.start.row,s.start.column=o.start.column}},this.selectMore=function(e,t,n){var r=this.session,i=r.multiSelect,s=i.toOrientedRange();if(s.isEmpty()){s=r.getWordRange(s.start.row,s.start.column),s.cursor=e==-1?s.start:s.end,this.multiSelect.addRange(s);if(n)return}var o=r.getTextRange(s),u=h(r,o,e);u&&(u.cursor=e==-1?u.start:u.end,this.$blockScrolling+=1,this.session.unfold(u),this.multiSelect.addRange(u),this.$blockScrolling-=1,this.renderer.scrollCursorIntoView(null,.5)),t&&this.multiSelect.substractPoint(s.cursor)},this.alignCursors=function(){var e=this.session,t=e.multiSelect,n=t.ranges,r=-1,s=n.filter(function(e){if(e.cursor.row==r)return!0;r=e.cursor.row});if(!n.length||s.length==n.length-1){var o=this.selection.getRange(),u=o.start.row,f=o.end.row,l=u==f;if(l){var c=this.session.getLength(),h;do h=this.session.getLine(f);while(/[=:]/.test(h)&&++f<c);do h=this.session.getLine(u);while(/[=:]/.test(h)&&--u>0);u<0&&(u=0),f>=c&&(f=c-1)}var p=this.session.removeFullLines(u,f);p=this.$reAlignText(p,l),this.session.insert({row:u,column:0},p.join("\n")+"\n"),l||(o.start.column=0,o.end.column=p[p.length-1].length),this.selection.setRange(o)}else{s.forEach(function(e){t.substractPoint(e.cursor)});var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),i<v&&(v=i),i});n.forEach(function(t,n){var r=t.cursor,s=d-r.column,o=m[n]-v;s>o?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),s<t[2].length&&(s=t[2].length),o>t[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../../range").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++t<a){var c=e.getLine(t).search(i);if(c==-1)continue;if(c<=o)break;l=t}if(l>f){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./range").Range;(function(){this.getRowLength=function(e){var t;return this.lineWidgets?t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:t=0,!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets))},this.detach=function(e){var t=this.editor;if(!t)return;this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})},this.updateOnFold=function(e,t){var n=t.lineWidgets;if(!n||!e.action)return;var r=e.data,i=r.start.row,s=r.end.row,o=e.action=="add";for(var u=i+1;u<s;u++)n[u]&&(n[u].hidden=o);n[s]&&(o?n[i]?n[s].hidden=o:n[i]=n[s]:(n[i]==n[s]&&(n[i]=undefined),n[s].hidden=o))},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(!t)return;var n=e.start.row,r=e.end.row-n;if(r!==0)if(e.action=="remove"){var i=t.splice(n+1,r);i.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var s=new Array(r);s.unshift(n,0),t.splice.apply(t,s),this.$updateRows()}},this.$updateRows=function(){var e=this.session.lineWidgets;if(!e)return;var t=!0;e.forEach(function(e,n){if(e){t=!1,e.row=n;while(e.$oldWidget)e.$oldWidget.row=n,e=e.$oldWidget}}),t&&(this.session.lineWidgets=null)},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var t=this.session.lineWidgets[e.row];t&&(e.$oldWidget=t,t.el&&t.el.parentNode&&(t.el.parentNode.removeChild(t.el),t._inDocument=!1)),this.session.lineWidgets[e.row]=e,e.session=this.session;var n=this.editor.renderer;e.html&&!e.el&&(e.el=i.createElement("div"),e.el.innerHTML=e.html),e.el&&(i.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,n.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),e.rowCount==null&&(e.rowCount=e.pixelHeight/n.layerConfig.lineHeight);var r=this.session.getFoldAt(e.row,0);e.$fold=r;if(r){var s=this.session.lineWidgets;e.row==r.end.row&&!s[r.start.row]?s[r.start.row]=e:e.hidden=!0}return this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,n),this.onWidgetChanged(e),e},this.removeLineWidget=function(e){e._inDocument=!1,e.session=null,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el);if(e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}if(this.session.lineWidgets){var n=this.session.lineWidgets[e.row];if(n==e)this.session.lineWidgets[e.row]=e.$oldWidget,e.$oldWidget&&this.onWidgetChanged(e.$oldWidget);else while(n){if(n.$oldWidget==e){n.$oldWidget=e.$oldWidget;break}n=n.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.getWidgetsAtRow=function(e){var t=this.session.lineWidgets,n=t&&t[e],r=[];while(n)r.push(n),n=n.$oldWidget;return r},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var n=this.session._changedWidgets,r=t.layerConfig;if(!n||!n.length)return;var i=Infinity;for(var s=0;s<n.length;s++){var o=n[s];if(!o||!o.el)continue;if(o.session!=this.session)continue;if(!o._inDocument){if(this.session.lineWidgets[o.row]!=o)continue;o._inDocument=!0,t.container.appendChild(o.el)}o.h=o.el.offsetHeight,o.fixedWidth||(o.w=o.el.offsetWidth,o.screenWidth=Math.ceil(o.w/r.characterWidth));var u=o.h/r.lineHeight;o.coverLine&&(u-=this.session.getRowLineCount(o.row),u<0&&(u=0)),o.rowCount!=u&&(o.rowCount=u,o.row<i&&(i=o.row))}i!=Infinity&&(this.session._emit("changeFold",{data:{start:{row:i}}}),this.session.lineWidgetWidth=null),this.session._changedWidgets=[]},this.renderWidgets=function(e,t){var n=t.layerConfig,r=this.session.lineWidgets;if(!r)return;var i=Math.min(this.firstRow,n.firstRow),s=Math.max(this.lastRow,n.lastRow,r.length);while(i>0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;if(u.hidden){u.el.style.top=-100-(u.pixelHeight||0)+"px";continue}u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fullWidth&&u.screenWidth&&(u.el.style.minWidth=n.width+2*n.padding+"px"),u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.length)return;var i=o(r,{row:t,column:-1},s.comparePoints);i<0&&(i=-i-1),i>=r.length?i=n>0?0:r.length-1:i===0&&n<0&&(i=r.length-1);var u=r[i];if(!u||!n)return;if(u.row===t){do u=r[i+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[i+=n];while(u&&u.row==t);return a.length&&a}var r=e("../line_widgets").LineWidgets,i=e("../lib/dom"),s=e("../range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,a=n.widgetManager.getWidgetsAtRow(o).filter(function(e){return e.type=="errorMarker"})[0];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];s.column=(c.pos&&typeof c.column!="number"?c.pos.sc:c.column)||0,s.row=c.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(a)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var h={row:s.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div"),type:"errorMarker"},p=h.el.appendChild(i.createElement("div")),d=h.el.appendChild(i.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(s).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,p.innerHTML=l.text.join("<br>"),p.appendChild(i.createElement("div"));var m=function(e,t,n){if(t===0&&(n==="esc"||n==="return"))return h.destroy(),{command:"null"}};h.destroy=function(){if(e.$mouseHandler.isMousePressed)return;e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(h),e.off("changeSelection",h.destroy),e.off("changeSession",h.destroy),e.off("mouseup",h.destroy),e.off("change",h.destroy)},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",h.destroy),e.on("changeSession",h.destroy),e.on("mouseup",h.destroy),e.on("change",h.destroy),e.session.widgetManager.addLineWidget(h),h.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:h.el.offsetHeight})},i.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./editor").Editor,o=e("./edit_session").EditSession,u=e("./undomanager").UndoManager,a=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,t.edit=function(e){if(typeof e=="string"){var n=e;e=document.getElementById(n);if(!e)throw new Error("ace.edit can't find div #"+n)}if(e&&e.env&&e.env.editor instanceof s)return e.env.editor;var o="";if(e&&/input|textarea/i.test(e.tagName)){var u=e;o=u.value,e=r.createElement("pre"),u.parentNode.replaceChild(e,u)}else e&&(o=r.getInnerText(e),e.innerHTML="");var f=t.createEditSession(o),l=new s(new a(e));l.setSession(f);var c={document:f,editor:l,onResize:l.resize.bind(l,null)};return u&&(c.textarea=u),i.addListener(window,"resize",c.onResize),l.on("destroy",function(){i.removeListener(window,"resize",c.onResize),c.editor.container.env=null}),l.container.env=l.env=c,l},t.createEditSession=function(e,t){var n=new o(e,t);return n.setUndoManager(new u),n},t.EditSession=o,t.UndoManager=u,t.version="1.2.3"});
+ (function() {
+ ace.require(["ace/ace"], function(a) {
+ a && a.config.init(true);
+ if (!window.ace)
+ window.ace = a;
+ for (var key in a) if (a.hasOwnProperty(key))
+ window.ace[key] = a[key];
+ });
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-beautify.js b/library/ace/ext-beautify.js
new file mode 100644
index 000000000..659262c8c
--- /dev/null
+++ b/library/ace/ext-beautify.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/beautify/php_rules",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";var r=e("ace/token_iterator").TokenIterator;t.newLines=[{type:"support.php_tag",value:"<?php"},{type:"support.php_tag",value:"<?"},{type:"support.php_tag",value:"?>"},{type:"paren.lparen",value:"{",indent:!0},{type:"paren.rparen",breakBefore:!0,value:"}",indent:!1},{type:"paren.rparen",breakBefore:!0,value:"})",indent:!1,dontBreak:!0},{type:"comment"},{type:"text",value:";"},{type:"text",value:":",context:"php"},{type:"keyword",value:"case",indent:!0,dontBreak:!0},{type:"keyword",value:"default",indent:!0,dontBreak:!0},{type:"keyword",value:"break",indent:!1,dontBreak:!0},{type:"punctuation.doctype.end",value:">"},{type:"meta.tag.punctuation.end",value:">"},{type:"meta.tag.punctuation.begin",value:"<",blockTag:!0,indent:!0,dontBreak:!0},{type:"meta.tag.punctuation.begin",value:"</",indent:!1,breakBefore:!0,dontBreak:!0},{type:"punctuation.operator",value:";"}],t.spaces=[{type:"xml-pe",prepend:!0},{type:"entity.other.attribute-name",prepend:!0},{type:"storage.type",value:"var",append:!0},{type:"storage.type",value:"function",append:!0},{type:"keyword.operator",value:"="},{type:"keyword",value:"as",prepend:!0,append:!0},{type:"keyword",value:"function",append:!0},{type:"support.function",next:/[^\(]/,append:!0},{type:"keyword",value:"or",append:!0,prepend:!0},{type:"keyword",value:"and",append:!0,prepend:!0},{type:"keyword",value:"case",append:!0},{type:"keyword.operator",value:"||",append:!0,prepend:!0},{type:"keyword.operator",value:"&&",append:!0,prepend:!0}],t.singleTags=["!doctype","area","base","br","hr","input","img","link","meta"],t.transform=function(e,n,r){var i=e.getCurrentToken(),s=t.newLines,o=t.spaces,u=t.singleTags,a="",f=0,l=!1,c,h,p={},d,v={},m=!1,g="";while(i!==null){console.log(i);if(!i){i=e.stepForward();continue}i.type=="support.php_tag"&&i.value!="?>"?r="php":i.type=="support.php_tag"&&i.value=="?>"?r="html":i.type=="meta.tag.name.style"&&r!="css"?r="css":i.type=="meta.tag.name.style"&&r=="css"?r="html":i.type=="meta.tag.name.script"&&r!="js"?r="js":i.type=="meta.tag.name.script"&&r=="js"&&(r="html"),v=e.stepForward(),v&&v.type.indexOf("meta.tag.name")==0&&(d=v.value),p.type=="support.php_tag"&&p.value=="<?="&&(l=!0),i.type=="meta.tag.name"&&(i.value=i.value.toLowerCase()),i.type=="text"&&(i.value=i.value.trim());if(!i.value){i=v;continue}g=i.value;for(var y in o)i.type==o[y].type&&(!o[y].value||i.value==o[y].value)&&v&&(!o[y].next||o[y].next.test(v.value))&&(o[y].prepend&&(g=" "+i.value),o[y].append&&(g+=" "));i.type.indexOf("meta.tag.name")==0&&(c=i.value),m=!1;for(y in s)if(i.type==s[y].type&&(!s[y].value||i.value==s[y].value)&&(!s[y].blockTag||u.indexOf(d)===-1)&&(!s[y].context||s[y].context===r)){s[y].indent===!1&&f--;if(s[y].breakBefore&&(!s[y].prev||s[y].prev.test(p.value))){a+="\n",m=!0;for(y=0;y<f;y++)a+=" "}break}if(l===!1)for(y in s)if(p.type==s[y].type&&(!s[y].value||p.value==s[y].value)&&(!s[y].blockTag||u.indexOf(c)===-1)&&(!s[y].context||s[y].context===r)){s[y].indent===!0&&f++;if(!s[y].dontBreak&&!m){a+="\n";for(y=0;y<f;y++)a+=" "}break}a+=g,p.type=="support.php_tag"&&p.value=="?>"&&(l=!1),h=c,p=i,i=v;if(i===null)break}return a}}),ace.define("ace/ext/beautify",["require","exports","module","ace/token_iterator","ace/ext/beautify/php_rules"],function(e,t,n){"use strict";var r=e("ace/token_iterator").TokenIterator,i=e("./beautify/php_rules").transform;t.beautify=function(e){var t=new r(e,0,0),n=t.getCurrentToken(),s=e.$modeId.split("/").pop(),o=i(t,s);e.doc.setValue(o)},t.commands=[{name:"beautify",exec:function(e){t.beautify(e.session)},bindKey:"Ctrl-Shift-B"}]});
+ (function() {
+ ace.require(["ace/ext/beautify"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-chromevox.js b/library/ace/ext-chromevox.js
new file mode 100644
index 000000000..afaad86e7
--- /dev/null
+++ b/library/ace/ext-chromevox.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/chromevox",["require","exports","module","ace/editor","ace/config"],function(e,t,n){function gt(){return typeof cvox!="undefined"&&cvox&&cvox.Api}function wt(e){if(gt())mt(e);else{yt++;if(yt>=bt)return;window.setTimeout(wt,500,e)}}var r={};r.SpeechProperty,r.Cursor,r.Token,r.Annotation;var i={rate:.8,pitch:.4,volume:.9},s={rate:1,pitch:.5,volume:.9},o={rate:.8,pitch:.8,volume:.9},u={rate:.8,pitch:.3,volume:.9},a={rate:.8,pitch:.7,volume:.9},f={rate:.8,pitch:.8,volume:.9},l={punctuationEcho:"none",relativePitch:-0.6},c="ALERT_NONMODAL",h="ALERT_MODAL",p="INVALID_KEYPRESS",d="insertMode",v="start",m=[{substr:";",newSubstr:" semicolon "},{substr:":",newSubstr:" colon "}],g={SPEAK_ANNOT:"annots",SPEAK_ALL_ANNOTS:"all_annots",TOGGLE_LOCATION:"toggle_location",SPEAK_MODE:"mode",SPEAK_ROW_COL:"row_col",TOGGLE_DISPLACEMENT:"toggle_displacement",FOCUS_TEXT:"focus_text"},y="CONTROL + SHIFT ";r.editor=null;var b=null,w={},E=!1,S=!1,x=!1,T=null,N={},C={},k=function(e){return y+String.fromCharCode(e)},L=function(){var e=r.editor.keyBinding.getKeyboardHandler();return e.$id==="ace/keyboard/vim"},A=function(e){return r.editor.getSession().getTokenAt(e.row,e.column+1)},O=function(e){return r.editor.getSession().getLine(e.row)},M=function(e){w[e.row]&&cvox.Api.playEarcon(c),E?(cvox.Api.stop(),W(e),R(A(e)),I(e.row,1)):I(e.row,0)},_=function(e){var t=O(e),n=t.substr(e.column-1);e.column===0&&(n=" "+t);var r=/^\W(\w+)/,i=r.exec(n);return i!==null},D={constant:{prop:i},entity:{prop:o},keyword:{prop:u},storage:{prop:a},variable:{prop:f},meta:{prop:s,replace:[{substr:"</",newSubstr:" closing tag "},{substr:"/>",newSubstr:" close tag "},{substr:"<",newSubstr:" tag start "},{substr:">",newSubstr:" tag end "}]}},P={prop:P},H=function(e,t){var n=e;for(var r=0;r<t.length;r++){var i=t[r],s=new RegExp(i.substr,"g");n=n.replace(s,i.newSubstr)}return n},B=function(e,t,n){var r={};r.value="",r.type=e[t].type;for(var i=t;i<n;i++)r.value+=e[i].value;return r},j=function(e){if(e.length<=1)return e;var t=[],n=0;for(var r=1;r<e.length;r++){var i=e[n],s=e[r];U(i)!==U(s)&&(t.push(B(e,n,r)),n=r)}return t.push(B(e,n,e.length)),t},F=function(e){var t=r.editor.getSession().getLine(e),n=/^\s*$/;return n.exec(t)!==null},I=function(e,t){var n=r.editor.getSession().getTokens(e);if(n.length===0||F(e)){cvox.Api.playEarcon("EDITABLE_TEXT");return}n=j(n);var i=n[0];n=n.filter(function(e){return e!==i}),z(i,t),n.forEach(R)},q=function(e){z(e,0)},R=function(e){z(e,1)},U=function(e){if(!e||!e.type)return;var t=e.type.split(".");if(t.length===0)return;var n=t[0],r=D[n];return r?r:P},z=function(e,t){var n=U(e),r=H(e.value,m);n.replace&&(r=H(r,n.replace)),cvox.Api.speak(r,t,n.prop)},W=function(e){var t=O(e);cvox.Api.speak(t[e.column],1)},X=function(e,t){var n=O(t),r=n.substring(e.column,t.column);r=r.replace(/ /g," space "),cvox.Api.speak(r)},V=function(e,t){if(Math.abs(e.column-t.column)!==1){var n=O(t).length;if(t.column===0||t.column===n){I(t.row,0);return}if(_(t)){cvox.Api.stop(),R(A(t));return}}W(t)},$=function(e,t){r.editor.selection.isEmpty()?S?X(e,t):V(e,t):(X(e,t),cvox.Api.speak("selected",1))},J=function(e){if(x){x=!1;return}var t=r.editor.selection.getCursor();t.row!==b.row?M(t):$(b,t),b=t},K=function(e){r.editor.selection.isEmpty()&&cvox.Api.speak("unselected")},Q=function(e){switch(e.action){case"remove":cvox.Api.speak(e.text,0,l),x=!0;break;case"insert":cvox.Api.speak(e.text,0),x=!0}},G=function(e){var t=e.row,n=e.column;return!w[t]||!w[t][n]},Y=function(e){w={};for(var t=0;t<e.length;t++){var n=e[t],r=n.row,i=n.column;w[r]||(w[r]={}),w[r][i]=n}},Z=function(e){var t=r.editor.getSession().getAnnotations(),n=t.filter(G);n.length>0&&cvox.Api.playEarcon(c),Y(t)},et=function(e){var t=e.type+" "+e.text+" on "+nt(e.row,e.column);t=t.replace(";","semicolon"),cvox.Api.speak(t,1)},tt=function(e){var t=w[e];for(var n in t)et(t[n])},nt=function(e,t){return"row "+(e+1)+" column "+(t+1)},rt=function(){cvox.Api.speak(nt(b.row,b.column))},it=function(){for(var e in w)tt(e)},st=function(){if(!L())return;switch(r.editor.keyBinding.$data.state){case d:cvox.Api.speak("Insert mode");break;case v:cvox.Api.speak("Command mode")}},ot=function(){E=!E,E?cvox.Api.speak("Speak location on row change enabled."):cvox.Api.speak("Speak location on row change disabled.")},ut=function(){S=!S,S?cvox.Api.speak("Speak displacement on column changes."):cvox.Api.speak("Speak current character or word on column changes.")},at=function(e){if(e.ctrlKey&&e.shiftKey){var t=N[e.keyCode];t&&t.func()}},ft=function(e,t){if(!L())return;var n=t.keyBinding.$data.state;if(n===T)return;switch(n){case d:cvox.Api.playEarcon(h),cvox.Api.setKeyEcho(!0);break;case v:cvox.Api.playEarcon(h),cvox.Api.setKeyEcho(!1)}T=n},lt=function(e){var t=e.detail.customCommand,n=C[t];n&&(n.func(),r.editor.focus())},ct=function(){var e=dt.map(function(e){return{desc:e.desc+k(e.keyCode),cmd:e.cmd}}),t=document.querySelector("body");t.setAttribute("contextMenuActions",JSON.stringify(e)),t.addEventListener("ATCustomEvent",lt,!0)},ht=function(e){e.match?I(b.row,0):cvox.Api.playEarcon(p)},pt=function(){r.editor.focus()},dt=[{keyCode:49,func:function(){tt(b.row)},cmd:g.SPEAK_ANNOT,desc:"Speak annotations on line"},{keyCode:50,func:it,cmd:g.SPEAK_ALL_ANNOTS,desc:"Speak all annotations"},{keyCode:51,func:st,cmd:g.SPEAK_MODE,desc:"Speak Vim mode"},{keyCode:52,func:ot,cmd:g.TOGGLE_LOCATION,desc:"Toggle speak row location"},{keyCode:53,func:rt,cmd:g.SPEAK_ROW_COL,desc:"Speak row and column"},{keyCode:54,func:ut,cmd:g.TOGGLE_DISPLACEMENT,desc:"Toggle speak displacement"},{keyCode:55,func:pt,cmd:g.FOCUS_TEXT,desc:"Focus text"}],vt=function(e,t){r.editor=t,t.getSession().selection.on("changeCursor",J),t.getSession().selection.on("changeSelection",K),t.getSession().on("change",Q),t.getSession().on("changeAnnotation",Z),t.on("changeStatus",ft),t.on("findSearchBox",ht),t.container.addEventListener("keydown",at),b=t.selection.getCursor()},mt=function(e){vt(null,e),dt.forEach(function(e){N[e.keyCode]=e,C[e.cmd]=e}),e.on("focus",vt),L()&&cvox.Api.setKeyEcho(!1),ct()},yt=0,bt=15,Et=e("../editor").Editor;e("../config").defineOptions(Et.prototype,"editor",{enableChromevoxEnhancements:{set:function(e){e&&wt(this)},value:!0}})});
+ (function() {
+ ace.require(["ace/ext/chromevox"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-elastic_tabstops_lite.js b/library/ace/ext-elastic_tabstops_lite.js
new file mode 100644
index 000000000..bae2275a4
--- /dev/null
+++ b/library/ace/ext-elastic_tabstops_lite.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/elastic_tabstops_lite",["require","exports","module","ace/editor","ace/config"],function(e,t,n){"use strict";var r=function(e){this.$editor=e;var t=this,n=[],r=!1;this.onAfterExec=function(){r=!1,t.processRows(n),n=[]},this.onExec=function(){r=!0},this.onChange=function(e){r&&(n.indexOf(e.start.row)==-1&&n.push(e.start.row),e.end.row!=e.start.row&&n.push(e.end.row))}};(function(){this.processRows=function(e){this.$inChange=!0;var t=[];for(var n=0,r=e.length;n<r;n++){var i=e[n];if(t.indexOf(i)>-1)continue;var s=this.$findCellWidthsForBlock(i),o=this.$setBlockCellWidthsToMax(s.cellWidths),u=s.firstRow;for(var a=0,f=o.length;a<f;a++){var l=o[a];t.push(u),this.$adjustRow(u,l),u++}}this.$inChange=!1},this.$findCellWidthsForBlock=function(e){var t=[],n,r=e;while(r>=0){n=this.$cellWidthsForRow(r);if(n.length==0)break;t.unshift(n),r--}var i=r+1;r=e;var s=this.$editor.session.getLength();while(r<s-1){r++,n=this.$cellWidthsForRow(r);if(n.length==0)break;t.push(n)}return{cellWidths:t,firstRow:i}},this.$cellWidthsForRow=function(e){var t=this.$selectionColumnsForRow(e),n=[-1].concat(this.$tabsForRow(e)),r=n.map(function(e){return 0}).slice(1),i=this.$editor.session.getLine(e);for(var s=0,o=n.length-1;s<o;s++){var u=n[s]+1,a=n[s+1],f=this.$rightmostSelectionInCell(t,a),l=i.substring(u,a);r[s]=Math.max(l.replace(/\s+$/g,"").length,f-u)}return r},this.$selectionColumnsForRow=function(e){var t=[],n=this.$editor.getCursorPosition();return this.$editor.session.getSelection().isEmpty()&&e==n.row&&t.push(n.column),t},this.$setBlockCellWidthsToMax=function(e){var t=!0,n,r,i,s=this.$izip_longest(e);for(var o=0,u=s.length;o<u;o++){var a=s[o];if(!a.push){console.error(a);continue}a.push(NaN);for(var f=0,l=a.length;f<l;f++){var c=a[f];t&&(n=f,i=0,t=!1);if(isNaN(c)){r=f;for(var h=n;h<r;h++)e[h][o]=i;t=!0}i=Math.max(i,c)}}return e},this.$rightmostSelectionInCell=function(e,t){var n=0;if(e.length){var r=[];for(var i=0,s=e.length;i<s;i++)e[i]<=t?r.push(i):r.push(0);n=Math.max.apply(Math,r)}return n},this.$tabsForRow=function(e){var t=[],n=this.$editor.session.getLine(e),r=/\t/g,i;while((i=r.exec(n))!=null)t.push(i.index);return t},this.$adjustRow=function(e,t){var n=this.$tabsForRow(e);if(n.length==0)return;var r=0,i=-1,s=this.$izip(t,n);for(var o=0,u=s.length;o<u;o++){var a=s[o][0],f=s[o][1];i+=1+a,f+=r;var l=i-f;if(l==0)continue;var c=this.$editor.session.getLine(e).substr(0,f),h=c.replace(/\s*$/g,""),p=c.length-h.length;l>0&&(this.$editor.session.getDocument().insertInLine({row:e,column:f+1},Array(l+1).join(" ")+" "),this.$editor.session.getDocument().removeInLine(e,f,f+1),r+=l),l<0&&p>=-l&&(this.$editor.session.getDocument().removeInLine(e,f+l,f),r+=l)}},this.$izip_longest=function(e){if(!e[0])return[];var t=e[0].length,n=e.length;for(var r=1;r<n;r++){var i=e[r].length;i>t&&(t=i)}var s=[];for(var o=0;o<t;o++){var u=[];for(var r=0;r<n;r++)e[r][o]===""?u.push(NaN):u.push(e[r][o]);s.push(u)}return s},this.$izip=function(e,t){var n=e.length>=t.length?t.length:e.length,r=[];for(var i=0;i<n;i++){var s=[e[i],t[i]];r.push(s)}return r}}).call(r.prototype),t.ElasticTabstopsLite=r;var i=e("../editor").Editor;e("../config").defineOptions(i.prototype,"editor",{useElasticTabstops:{set:function(e){e?(this.elasticTabstops||(this.elasticTabstops=new r(this)),this.commands.on("afterExec",this.elasticTabstops.onAfterExec),this.commands.on("exec",this.elasticTabstops.onExec),this.on("change",this.elasticTabstops.onChange)):this.elasticTabstops&&(this.commands.removeListener("afterExec",this.elasticTabstops.onAfterExec),this.commands.removeListener("exec",this.elasticTabstops.onExec),this.removeListener("change",this.elasticTabstops.onChange))}}})});
+ (function() {
+ ace.require(["ace/ext/elastic_tabstops_lite"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-emmet.js b/library/ace/ext-emmet.js
new file mode 100644
index 000000000..45888acc5
--- /dev/null
+++ b/library/ace/ext-emmet.js
@@ -0,0 +1,5 @@
+ace.define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/anchor","ace/keyboard/hash_handler","ace/tokenizer","ace/lib/dom","ace/editor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./lib/lang"),o=e("./range").Range,u=e("./anchor").Anchor,a=e("./keyboard/hash_handler").HashHandler,f=e("./tokenizer").Tokenizer,l=o.comparePoints,c=function(){this.snippetMap={},this.snippetNameMap={}};(function(){r.implement(this,i),this.getTokenizer=function(){function e(e,t,n){return e=e.substr(1),/^\d+$/.test(e)&&!n.inFormatString?[{tabstopId:parseInt(e,10)}]:[{text:e}]}function t(e){return"(?:[^\\\\"+e+"]|\\\\.)"}return c.$tokenizer=new f({start:[{regex:/:/,onMatch:function(e,t,n){return n.length&&n[0].expectIf?(n[0].expectIf=!1,n[0].elseBranch=n[0],[n[0]]):":"}},{regex:/\\./,onMatch:function(e,t,n){var r=e[1];return r=="}"&&n.length?e=r:"`$\\".indexOf(r)!=-1?e=r:n.inFormatString&&(r=="n"?e="\n":r=="t"?e="\n":"ulULE".indexOf(r)!=-1&&(e={changeCase:r,local:r>"a"})),[e]}},{regex:/}/,onMatch:function(e,t,n){return[n.length?n.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:e},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(t,n,r){var i=e(t.substr(1),n,r);return r.unshift(i[0]),i},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+t("\\|")+"*\\|",onMatch:function(e,t,n){n[0].choices=e.slice(1,-1).split(",")},next:"start"},{regex:"/("+t("/")+"+)/(?:("+t("/")+"*)/)(\\w*):?",onMatch:function(e,t,n){var r=n[0];return r.fmtString=e,e=this.splitRegex.exec(e),r.guard=e[1],r.fmt=e[2],r.flag=e[3],""},next:"start"},{regex:"`"+t("`")+"*`",onMatch:function(e,t,n){return n[0].code=e.splice(1,-1),""},next:"start"},{regex:"\\?",onMatch:function(e,t,n){n[0]&&(n[0].expectIf=!0)},next:"start"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:"/("+t("/")+"+)/",token:"regex"},{regex:"",onMatch:function(e,t,n){n.inFormatString=!0},next:"start"}]}),c.prototype.getTokenizer=function(){return c.$tokenizer},c.$tokenizer},this.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},this.$getDefaultValue=function(e,t){if(/^[A-Z]\d+$/.test(t)){var n=t.substr(1);return(this.variables[t[0]+"__"]||{})[n]}if(/^\d+$/.test(t))return(this.variables.__||{})[t];t=t.replace(/^TM_/,"");if(!e)return;var r=e.session;switch(t){case"CURRENT_WORD":var i=r.getWordRange();case"SELECTION":case"SELECTED_TEXT":return r.getTextRange(i);case"CURRENT_LINE":return r.getLine(e.getCursorPosition().row);case"PREV_LINE":return r.getLine(e.getCursorPosition().row-1);case"LINE_INDEX":return e.getCursorPosition().column;case"LINE_NUMBER":return e.getCursorPosition().row+1;case"SOFT_TABS":return r.getUseSoftTabs()?"YES":"NO";case"TAB_SIZE":return r.getTabSize();case"FILENAME":case"FILEPATH":return"";case"FULLNAME":return"Ace"}},this.variables={},this.getVariableValue=function(e,t){return this.variables.hasOwnProperty(t)?this.variables[t](e,t)||"":this.$getDefaultValue(e,t)||""},this.tmStrFormat=function(e,t,n){var r=t.flag||"",i=t.guard;i=new RegExp(i,r.replace(/[^gi]/,""));var s=this.tokenizeTmSnippet(t.fmt,"formatString"),o=this,u=e.replace(i,function(){o.variables.__=arguments;var e=o.resolveVariables(s,n),t="E";for(var r=0;r<e.length;r++){var i=e[r];if(typeof i=="object"){e[r]="";if(i.changeCase&&i.local){var u=e[r+1];u&&typeof u=="string"&&(i.changeCase=="u"?e[r]=u[0].toUpperCase():e[r]=u[0].toLowerCase(),e[r+1]=u.substr(1))}else i.changeCase&&(t=i.changeCase)}else t=="U"?e[r]=i.toUpperCase():t=="L"&&(e[r]=i.toLowerCase())}return e.join("")});return this.variables.__=null,u},this.resolveVariables=function(e,t){function o(t){var n=e.indexOf(t,r+1);n!=-1&&(r=n)}var n=[];for(var r=0;r<e.length;r++){var i=e[r];if(typeof i=="string")n.push(i);else{if(typeof i!="object")continue;if(i.skip)o(i);else{if(i.processed<r)continue;if(i.text){var s=this.getVariableValue(t,i.text);s&&i.fmtString&&(s=this.tmStrFormat(s,i)),i.processed=r,i.expectIf==null?s&&(n.push(s),o(i)):s?i.skip=i.elseBranch:o(i)}else i.tabstopId!=null?n.push(i):i.changeCase!=null&&n.push(i)}}}return n},this.insertSnippetForSelection=function(e,t){function f(e){var t=[];for(var n=0;n<e.length;n++){var r=e[n];if(typeof r=="object"){if(a[r.tabstopId])continue;var i=e.lastIndexOf(r,n-1);r=t[i]||{tabstopId:r.tabstopId}}t[n]=r}return t}var n=e.getCursorPosition(),r=e.session.getLine(n.row),i=e.session.getTabString(),s=r.match(/^\s*/)[0];n.column<s.length&&(s=s.slice(0,n.column));var o=this.tokenizeTmSnippet(t);o=this.resolveVariables(o,e),o=o.map(function(e){return e=="\n"?e+s:typeof e=="string"?e.replace(/\t/g,i):e});var u=[];o.forEach(function(e,t){if(typeof e!="object")return;var n=e.tabstopId,r=u[n];r||(r=u[n]=[],r.index=n,r.value="");if(r.indexOf(e)!==-1)return;r.push(e);var i=o.indexOf(e,t+1);if(i===-1)return;var s=o.slice(t+1,i),a=s.some(function(e){return typeof e=="object"});a&&!r.value?r.value=s:s.length&&(!r.value||typeof r.value!="string")&&(r.value=s.join(""))}),u.forEach(function(e){e.length=0});var a={};for(var l=0;l<o.length;l++){var c=o[l];if(typeof c!="object")continue;var p=c.tabstopId,d=o.indexOf(c,l+1);if(a[p]){a[p]===c&&(a[p]=null);continue}var v=u[p],m=typeof v.value=="string"?[v.value]:f(v.value);m.unshift(l+1,Math.max(0,d-l)),m.push(c),a[p]=c,o.splice.apply(o,m),v.indexOf(c)===-1&&v.push(c)}var g=0,y=0,b="";o.forEach(function(e){typeof e=="string"?(e[0]==="\n"?(y=e.length-1,g++):y+=e.length,b+=e):e.start?e.end={row:g,column:y}:e.start={row:g,column:y}});var w=e.getSelectionRange(),E=e.session.replace(w,b),S=new h(e),x=e.inVirtualSelectionMode&&e.selection.index;S.addTabstops(u,w.start,E,x)},this.insertSnippet=function(e,t){var n=this;if(e.inVirtualSelectionMode)return n.insertSnippetForSelection(e,t);e.forEachSelection(function(){n.insertSnippetForSelection(e,t)},null,{keepOrder:!0}),e.tabstopManager&&e.tabstopManager.tabNext()},this.$getScope=function(e){var t=e.session.$mode.$id||"";t=t.split("/").pop();if(t==="html"||t==="php"){t==="php"&&!e.session.$mode.inlinePhp&&(t="html");var n=e.getCursorPosition(),r=e.session.getState(n.row);typeof r=="object"&&(r=r[0]),r.substring&&(r.substring(0,3)=="js-"?t="javascript":r.substring(0,4)=="css-"?t="css":r.substring(0,4)=="php-"&&(t="php"))}return t},this.getActiveScopes=function(e){var t=this.$getScope(e),n=[t],r=this.snippetMap;return r[t]&&r[t].includeScopes&&n.push.apply(n,r[t].includeScopes),n.push("_"),n},this.expandWithTab=function(e,t){var n=this,r=e.forEachSelection(function(){return n.expandSnippetForSelection(e,t)},null,{keepOrder:!0});return r&&e.tabstopManager&&e.tabstopManager.tabNext(),r},this.expandSnippetForSelection=function(e,t){var n=e.getCursorPosition(),r=e.session.getLine(n.row),i=r.substring(0,n.column),s=r.substr(n.column),o=this.snippetMap,u;return this.getActiveScopes(e).some(function(e){var t=o[e];return t&&(u=this.findMatchingSnippet(t,i,s)),!!u},this),u?t&&t.dryRun?!0:(e.session.doc.removeInLine(n.row,n.column-u.replaceBefore.length,n.column+u.replaceAfter.length),this.variables.M__=u.matchBefore,this.variables.T__=u.matchAfter,this.insertSnippetForSelection(e,u.content),this.variables.M__=this.variables.T__=null,!0):!1},this.findMatchingSnippet=function(e,t,n){for(var r=e.length;r--;){var i=e[r];if(i.startRe&&!i.startRe.test(t))continue;if(i.endRe&&!i.endRe.test(n))continue;if(!i.startRe&&!i.endRe)continue;return i.matchBefore=i.startRe?i.startRe.exec(t):[""],i.matchAfter=i.endRe?i.endRe.exec(n):[""],i.replaceBefore=i.triggerRe?i.triggerRe.exec(t)[0]:"",i.replaceAfter=i.endTriggerRe?i.endTriggerRe.exec(n)[0]:"",i}},this.snippetMap={},this.snippetNameMap={},this.register=function(e,t){function o(e){return e&&!/^\^?\(.*\)\$?$|^\\b$/.test(e)&&(e="(?:"+e+")"),e||""}function u(e,t,n){return e=o(e),t=o(t),n?(e=t+e,e&&e[e.length-1]!="$"&&(e+="$")):(e+=t,e&&e[0]!="^"&&(e="^"+e)),new RegExp(e)}function a(e){e.scope||(e.scope=t||"_"),t=e.scope,n[t]||(n[t]=[],r[t]={});var o=r[t];if(e.name){var a=o[e.name];a&&i.unregister(a),o[e.name]=e}n[t].push(e),e.tabTrigger&&!e.trigger&&(!e.guard&&/^\w/.test(e.tabTrigger)&&(e.guard="\\b"),e.trigger=s.escapeRegExp(e.tabTrigger));if(!e.trigger&&!e.guard&&!e.endTrigger&&!e.endGuard)return;e.startRe=u(e.trigger,e.guard,!0),e.triggerRe=new RegExp(e.trigger,"",!0),e.endRe=u(e.endTrigger,e.endGuard,!0),e.endTriggerRe=new RegExp(e.endTrigger,"",!0)}var n=this.snippetMap,r=this.snippetNameMap,i=this;e||(e=[]),e&&e.content?a(e):Array.isArray(e)&&e.forEach(a),this._signal("registerSnippets",{scope:t})},this.unregister=function(e,t){function i(e){var i=r[e.scope||t];if(i&&i[e.name]){delete i[e.name];var s=n[e.scope||t],o=s&&s.indexOf(e);o>=0&&s.splice(o,1)}}var n=this.snippetMap,r=this.snippetNameMap;e.content?i(e):Array.isArray(e)&&e.forEach(i)},this.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t=[],n={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,i;while(i=r.exec(e)){if(i[1])try{n=JSON.parse(i[1]),t.push(n)}catch(s){}if(i[4])n.content=i[4].replace(/^\t/gm,""),t.push(n),n={};else{var o=i[2],u=i[3];if(o=="regex"){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(u)[1],n.trigger=a.exec(u)[1],n.endTrigger=a.exec(u)[1],n.endGuard=a.exec(u)[1]}else o=="snippet"?(n.tabTrigger=u.match(/^\S*/)[0],n.name||(n.name=u)):n[o]=u}}return t},this.getSnippetByName=function(e,t){var n=this.snippetNameMap,r;return this.getActiveScopes(t).some(function(t){var i=n[t];return i&&(r=i[e]),!!r},this),r}}).call(c.prototype);var h=function(e){if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=s.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)};(function(){this.attach=function(e){this.index=0,this.ranges=[],this.tabstops=[],this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(e){var t=e,n=e.action[0]=="r",r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=i.column-r.column;n&&(u=-u,a=-a);if(!this.$inChange&&n){var f=this.selectedTabstop,c=f&&!f.some(function(e){return l(e.start,r)<=0&&l(e.end,i)>=0});if(c)return this.detach()}var h=this.ranges;for(var p=0;p<h.length;p++){var d=h[p];if(d.end.row<r.row)continue;if(n&&l(r,d.start)<0&&l(i,d.end)>0){this.removeRange(d),p--;continue}d.start.row==s&&d.start.column>r.column&&(d.start.column+=a),d.end.row==s&&d.end.column>=r.column&&(d.end.column+=a),d.start.row>=s&&(d.start.row+=u),d.end.row>=s&&(d.end.row+=u),l(d.start,d.end)>0&&this.removeRange(d)}h.length||this.detach()},this.updateLinkedFields=function(){var e=this.selectedTabstop;if(!e||!e.hasLinkedRanges)return;this.$inChange=!0;var n=this.editor.session,r=n.getTextRange(e.firstNonLinked);for(var i=e.length;i--;){var s=e[i];if(!s.linked)continue;var o=t.snippetManager.tmStrFormat(r,s.original);n.replace(s,o)}this.$inChange=!1},this.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},this.onChangeSelection=function(){if(!this.editor)return;var e=this.editor.selection.lead,t=this.editor.selection.anchor,n=this.editor.selection.isEmpty();for(var r=this.ranges.length;r--;){if(this.ranges[r].linked)continue;var i=this.ranges[r].contains(e.row,e.column),s=n||this.ranges[r].contains(t.row,t.column);if(i&&s)return}this.detach()},this.onChangeSession=function(){this.detach()},this.tabNext=function(e){var t=this.tabstops.length,n=this.index+(e||1);n=Math.min(Math.max(n,1),t),n==t&&(n=0),this.selectTabstop(n),n===0&&this.detach()},this.selectTabstop=function(e){this.$openTabstops=null;var t=this.tabstops[this.index];t&&this.addTabstopMarkers(t),this.index=e,t=this.tabstops[this.index];if(!t||!t.length)return;this.selectedTabstop=t;if(!this.editor.inVirtualSelectionMode){var n=this.editor.multiSelect;n.toSingleRange(t.firstNonLinked.clone());for(var r=t.length;r--;){if(t.hasLinkedRanges&&t[r].linked)continue;n.addRange(t[r].clone(),!0)}n.ranges[0]&&n.addRange(n.ranges[0].clone())}else this.editor.selection.setRange(t.firstNonLinked);this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.addTabstops=function(e,t,n){this.$openTabstops||(this.$openTabstops=[]);if(!e[0]){var r=o.fromPoints(n,n);v(r.start,t),v(r.end,t),e[0]=[r],e[0].index=0}var i=this.index,s=[i+1,0],u=this.ranges;e.forEach(function(e,n){var r=this.$openTabstops[n]||e;for(var i=e.length;i--;){var a=e[i],f=o.fromPoints(a.start,a.end||a.start);d(f.start,t),d(f.end,t),f.original=a,f.tabstop=r,u.push(f),r!=e?r.unshift(f):r[i]=f,a.fmtString?(f.linked=!0,r.hasLinkedRanges=!0):r.firstNonLinked||(r.firstNonLinked=f)}r.firstNonLinked||(r.hasLinkedRanges=!1),r===e&&(s.push(r),this.$openTabstops[n]=r),this.addTabstopMarkers(r)},this),s.length>2&&(this.tabstops.length&&s.push(s.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,s))},this.addTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},this.removeTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},this.removeRange=function(e){var t=e.tabstop.indexOf(e);e.tabstop.splice(t,1),t=this.ranges.indexOf(e),this.ranges.splice(t,1),this.editor.session.removeMarker(e.markerId),e.tabstop.length||(t=this.tabstops.indexOf(e.tabstop),t!=-1&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},this.keyboardHandler=new a,this.keyboardHandler.bindKeys({Tab:function(e){if(t.snippetManager&&t.snippetManager.expandWithTab(e))return;e.tabstopManager.tabNext(1)},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1)},Esc:function(e){e.tabstopManager.detach()},Return:function(e){return!1}})}).call(h.prototype);var p={};p.onChange=u.prototype.onChange,p.setPosition=function(e,t){this.pos.row=e,this.pos.column=t},p.update=function(e,t,n){this.$insertRight=n,this.pos=e,this.onChange(t)};var d=function(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row},v=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};e("./lib/dom").importCssString(".ace_snippet-marker { -moz-box-sizing: border-box; box-sizing: border-box; background: rgba(194, 193, 208, 0.09); border: 1px dotted rgba(211, 208, 235, 0.62); position: absolute;}"),t.snippetManager=new c;var m=e("./editor").Editor;(function(){this.insertSnippet=function(e,n){return t.snippetManager.insertSnippet(this,e,n)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(m.prototype)}),ace.define("ace/ext/emmet",["require","exports","module","ace/keyboard/hash_handler","ace/editor","ace/snippets","ace/range","resources","resources","range","tabStops","resources","utils","actions","ace/config","ace/config"],function(e,t,n){"use strict";function f(){}var r=e("ace/keyboard/hash_handler").HashHandler,i=e("ace/editor").Editor,s=e("ace/snippets").snippetManager,o=e("ace/range").Range,u,a;f.prototype={setupContext:function(e){this.ace=e,this.indentation=e.session.getTabString(),u||(u=window.emmet),u.require("resources").setVariable("indentation",this.indentation),this.$syntax=null,this.$syntax=this.getSyntax()},getSelectionRange:function(){var e=this.ace.getSelectionRange(),t=this.ace.session.doc;return{start:t.positionToIndex(e.start),end:t.positionToIndex(e.end)}},createSelection:function(e,t){var n=this.ace.session.doc;this.ace.selection.setRange({start:n.indexToPosition(e),end:n.indexToPosition(t)})},getCurrentLineRange:function(){var e=this.ace,t=e.getCursorPosition().row,n=e.session.getLine(t).length,r=e.session.doc.positionToIndex({row:t,column:0});return{start:r,end:r+n}},getCaretPos:function(){var e=this.ace.getCursorPosition();return this.ace.session.doc.positionToIndex(e)},setCaretPos:function(e){var t=this.ace.session.doc.indexToPosition(e);this.ace.selection.moveToPosition(t)},getCurrentLine:function(){var e=this.ace.getCursorPosition().row;return this.ace.session.getLine(e)},replaceContent:function(e,t,n,r){n==null&&(n=t==null?this.getContent().length:t),t==null&&(t=0);var i=this.ace,u=i.session.doc,a=o.fromPoints(u.indexToPosition(t),u.indexToPosition(n));i.session.remove(a),a.end=a.start,e=this.$updateTabstops(e),s.insertSnippet(i,e)},getContent:function(){return this.ace.getValue()},getSyntax:function(){if(this.$syntax)return this.$syntax;var e=this.ace.session.$modeId.split("/").pop();if(e=="html"||e=="php"){var t=this.ace.getCursorPosition(),n=this.ace.session.getState(t.row);typeof n!="string"&&(n=n[0]),n&&(n=n.split("-"),n.length>1?e=n[0]:e=="php"&&(e="html"))}return e},getProfileName:function(){switch(this.getSyntax()){case"css":return"css";case"xml":case"xsl":return"xml";case"html":var e=u.require("resources").getVariable("profile");return e||(e=this.ace.session.getLines(0,2).join("").search(/<!DOCTYPE[^>]+XHTML/i)!=-1?"xhtml":"html"),e;default:var t=this.ace.session.$mode;return t.emmetConfig&&t.emmetConfig.profile||"xhtml"}},prompt:function(e){return prompt(e)},getSelection:function(){return this.ace.session.getTextRange()},getFilePath:function(){return""},$updateTabstops:function(e){var t=1e3,n=0,r=null,i=u.require("range"),s=u.require("tabStops"),o=u.require("resources").getVocabulary("user"),a={tabstop:function(e){var o=parseInt(e.group,10),u=o===0;u?o=++n:o+=t;var f=e.placeholder;f&&(f=s.processText(f,a));var l="${"+o+(f?":"+f:"")+"}";return u&&(r=i.create(e.start,l)),l},escape:function(e){return e=="$"?"\\$":e=="\\"?"\\\\":e}};return e=s.processText(e,a),o.variables.insert_final_tabstop&&!/\$\{0\}$/.test(e)?e+="${0}":r&&(e=u.require("utils").replaceSubstring(e,"${0}",r)),e}};var l={expand_abbreviation:{mac:"ctrl+alt+e",win:"alt+e"},match_pair_outward:{mac:"ctrl+d",win:"ctrl+,"},match_pair_inward:{mac:"ctrl+j",win:"ctrl+shift+0"},matching_pair:{mac:"ctrl+alt+j",win:"alt+j"},next_edit_point:"alt+right",prev_edit_point:"alt+left",toggle_comment:{mac:"command+/",win:"ctrl+/"},split_join_tag:{mac:"shift+command+'",win:"shift+ctrl+`"},remove_tag:{mac:"command+'",win:"shift+ctrl+;"},evaluate_math_expression:{mac:"shift+command+y",win:"shift+ctrl+y"},increment_number_by_1:"ctrl+up",decrement_number_by_1:"ctrl+down",increment_number_by_01:"alt+up",decrement_number_by_01:"alt+down",increment_number_by_10:{mac:"alt+command+up",win:"shift+alt+up"},decrement_number_by_10:{mac:"alt+command+down",win:"shift+alt+down"},select_next_item:{mac:"shift+command+.",win:"shift+ctrl+."},select_previous_item:{mac:"shift+command+,",win:"shift+ctrl+,"},reflect_css_value:{mac:"shift+command+r",win:"shift+ctrl+r"},encode_decode_data_url:{mac:"shift+ctrl+d",win:"ctrl+'"},expand_abbreviation_with_tab:"Tab",wrap_with_abbreviation:{mac:"shift+ctrl+a",win:"shift+ctrl+a"}},c=new f;t.commands=new r,t.runEmmetCommand=function v(e){try{c.setupContext(e);var t=u.require("actions");if(this.action=="expand_abbreviation_with_tab"){if(!e.selection.isEmpty())return!1;var n=e.selection.lead,r=e.session.getTokenAt(n.row,n.column);if(r&&/\btag\b/.test(r.type))return!1}if(this.action=="wrap_with_abbreviation")return setTimeout(function(){t.run("wrap_with_abbreviation",c)},0);var i=t.run(this.action,c)}catch(s){if(!u)return d(v.bind(this,e)),!0;e._signal("changeStatus",typeof s=="string"?s:s.message),console.log(s),i=!1}return i};for(var h in l)t.commands.addCommand({name:"emmet:"+h,action:h,bindKey:l[h],exec:t.runEmmetCommand,multiSelectAction:"forEach"});t.updateCommands=function(e,n){n?e.keyBinding.addKeyboardHandler(t.commands):e.keyBinding.removeKeyboardHandler(t.commands)},t.isSupportedMode=function(e){if(!e)return!1;if(e.emmetConfig)return!0;var t=e.$id||e;return/css|less|scss|sass|stylus|html|php|twig|ejs|handlebars/.test(t)},t.isAvailable=function(e,n){if(/(evaluate_math_expression|expand_abbreviation)$/.test(n))return!0;var r=e.session.$mode,i=t.isSupportedMode(r);if(i&&r.$modes)try{c.setupContext(e),/js|php/.test(c.getSyntax())&&(i=!1)}catch(s){}return i};var p=function(e,n){var r=n;if(!r)return;var i=t.isSupportedMode(r.session.$mode);e.enableEmmet===!1&&(i=!1),i&&d(),t.updateCommands(r,i)},d=function(t){typeof a=="string"&&e("ace/config").loadModule(a,function(){a=null,t&&t()})};t.AceEmmetEditor=f,e("ace/config").defineOptions(i.prototype,"editor",{enableEmmet:{set:function(e){this[e?"on":"removeListener"]("changeMode",p),p({enableEmmet:!!e},this)},value:!0}}),t.setCore=function(e){typeof e=="string"?a=e:u=e}});
+ (function() {
+ ace.require(["ace/ext/emmet"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-error_marker.js b/library/ace/ext-error_marker.js
new file mode 100644
index 000000000..dfefa20ab
--- /dev/null
+++ b/library/ace/ext-error_marker.js
@@ -0,0 +1,5 @@
+;
+ (function() {
+ ace.require(["ace/ext/error_marker"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-keybinding_menu.js b/library/ace/ext-keybinding_menu.js
new file mode 100644
index 000000000..f73cf44ce
--- /dev/null
+++ b/library/ace/ext-keybinding_menu.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../../lib/dom"),i="#ace_settingsmenu, #kbshortcutmenu {background-color: #F7F7F7;color: black;box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);padding: 1em 0.5em 2em 1em;overflow: auto;position: absolute;margin: 0;bottom: 0;right: 0;top: 0;z-index: 9991;cursor: default;}.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);background-color: rgba(255, 255, 255, 0.6);color: black;}.ace_optionsMenuEntry:hover {background-color: rgba(100, 100, 100, 0.1);-webkit-transition: all 0.5s;transition: all 0.3s}.ace_closeButton {background: rgba(245, 146, 146, 0.5);border: 1px solid #F48A8A;border-radius: 50%;padding: 7px;position: absolute;right: -8px;top: -8px;z-index: 1000;}.ace_closeButton{background: rgba(245, 146, 146, 0.9);}.ace_optionsMenuKey {color: darkslateblue;font-weight: bold;}.ace_optionsMenuCommand {color: darkcyan;font-weight: normal;}";r.importCssString(i),n.exports.overlayPage=function(t,n,i,s,o,u){function l(e){e.keyCode===27&&a.click()}i=i?"top: "+i+";":"",o=o?"bottom: "+o+";":"",s=s?"right: "+s+";":"",u=u?"left: "+u+";":"";var a=document.createElement("div"),f=document.createElement("div");a.style.cssText="margin: 0; padding: 0; position: fixed; top:0; bottom:0; left:0; right:0;z-index: 9990; background-color: rgba(0, 0, 0, 0.3);",a.addEventListener("click",function(){document.removeEventListener("keydown",l),a.parentNode.removeChild(a),t.focus(),a=null}),document.addEventListener("keydown",l),f.style.cssText=i+s+o+u,f.addEventListener("click",function(e){e.stopPropagation()});var c=r.createElement("div");c.style.position="relative";var h=r.createElement("div");h.className="ace_closeButton",h.addEventListener("click",function(){a.click()}),c.appendChild(h),f.appendChild(c),f.appendChild(n),a.appendChild(f),document.body.appendChild(a),t.blur()}}),ace.define("ace/ext/menu_tools/get_editor_keyboard_shortcuts",["require","exports","module","ace/lib/keys"],function(e,t,n){"use strict";var r=e("../../lib/keys");n.exports.getEditorKeybordShortcuts=function(e){var t=r.KEY_MODS,n=[],i={};return e.keyBinding.$handlers.forEach(function(e){var t=e.commandKeyBinding;for(var r in t){var s=r.replace(/(^|-)\w/g,function(e){return e.toUpperCase()}),o=t[r];Array.isArray(o)||(o=[o]),o.forEach(function(e){typeof e!="string"&&(e=e.name),i[e]?i[e].key+="|"+s:(i[e]={key:s,command:e},n.push(i[e]))})}}),n}}),ace.define("ace/ext/keybinding_menu",["require","exports","module","ace/editor","ace/ext/menu_tools/overlay_page","ace/ext/menu_tools/get_editor_keyboard_shortcuts"],function(e,t,n){"use strict";function i(t){if(!document.getElementById("kbshortcutmenu")){var n=e("./menu_tools/overlay_page").overlayPage,r=e("./menu_tools/get_editor_keyboard_shortcuts").getEditorKeybordShortcuts,i=r(t),s=document.createElement("div"),o=i.reduce(function(e,t){return e+'<div class="ace_optionsMenuEntry"><span class="ace_optionsMenuCommand">'+t.command+"</span> : "+'<span class="ace_optionsMenuKey">'+t.key+"</span></div>"},"");s.id="kbshortcutmenu",s.innerHTML="<h1>Keyboard Shortcuts</h1>"+o+"</div>",n(t,s,"0","0","0",null)}}var r=e("ace/editor").Editor;n.exports.init=function(e){r.prototype.showKeyboardShortcuts=function(){i(this)},e.commands.addCommands([{name:"showKeyboardShortcuts",bindKey:{win:"Ctrl-Alt-h",mac:"Command-Alt-h"},exec:function(e,t){e.showKeyboardShortcuts()}}])}});
+ (function() {
+ ace.require(["ace/ext/keybinding_menu"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-language_tools.js b/library/ace/ext-language_tools.js
new file mode 100644
index 000000000..0a754c2bd
--- /dev/null
+++ b/library/ace/ext-language_tools.js
@@ -0,0 +1,5 @@
+ace.define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/anchor","ace/keyboard/hash_handler","ace/tokenizer","ace/lib/dom","ace/editor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./lib/lang"),o=e("./range").Range,u=e("./anchor").Anchor,a=e("./keyboard/hash_handler").HashHandler,f=e("./tokenizer").Tokenizer,l=o.comparePoints,c=function(){this.snippetMap={},this.snippetNameMap={}};(function(){r.implement(this,i),this.getTokenizer=function(){function e(e,t,n){return e=e.substr(1),/^\d+$/.test(e)&&!n.inFormatString?[{tabstopId:parseInt(e,10)}]:[{text:e}]}function t(e){return"(?:[^\\\\"+e+"]|\\\\.)"}return c.$tokenizer=new f({start:[{regex:/:/,onMatch:function(e,t,n){return n.length&&n[0].expectIf?(n[0].expectIf=!1,n[0].elseBranch=n[0],[n[0]]):":"}},{regex:/\\./,onMatch:function(e,t,n){var r=e[1];return r=="}"&&n.length?e=r:"`$\\".indexOf(r)!=-1?e=r:n.inFormatString&&(r=="n"?e="\n":r=="t"?e="\n":"ulULE".indexOf(r)!=-1&&(e={changeCase:r,local:r>"a"})),[e]}},{regex:/}/,onMatch:function(e,t,n){return[n.length?n.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:e},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(t,n,r){var i=e(t.substr(1),n,r);return r.unshift(i[0]),i},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+t("\\|")+"*\\|",onMatch:function(e,t,n){n[0].choices=e.slice(1,-1).split(",")},next:"start"},{regex:"/("+t("/")+"+)/(?:("+t("/")+"*)/)(\\w*):?",onMatch:function(e,t,n){var r=n[0];return r.fmtString=e,e=this.splitRegex.exec(e),r.guard=e[1],r.fmt=e[2],r.flag=e[3],""},next:"start"},{regex:"`"+t("`")+"*`",onMatch:function(e,t,n){return n[0].code=e.splice(1,-1),""},next:"start"},{regex:"\\?",onMatch:function(e,t,n){n[0]&&(n[0].expectIf=!0)},next:"start"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:"/("+t("/")+"+)/",token:"regex"},{regex:"",onMatch:function(e,t,n){n.inFormatString=!0},next:"start"}]}),c.prototype.getTokenizer=function(){return c.$tokenizer},c.$tokenizer},this.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},this.$getDefaultValue=function(e,t){if(/^[A-Z]\d+$/.test(t)){var n=t.substr(1);return(this.variables[t[0]+"__"]||{})[n]}if(/^\d+$/.test(t))return(this.variables.__||{})[t];t=t.replace(/^TM_/,"");if(!e)return;var r=e.session;switch(t){case"CURRENT_WORD":var i=r.getWordRange();case"SELECTION":case"SELECTED_TEXT":return r.getTextRange(i);case"CURRENT_LINE":return r.getLine(e.getCursorPosition().row);case"PREV_LINE":return r.getLine(e.getCursorPosition().row-1);case"LINE_INDEX":return e.getCursorPosition().column;case"LINE_NUMBER":return e.getCursorPosition().row+1;case"SOFT_TABS":return r.getUseSoftTabs()?"YES":"NO";case"TAB_SIZE":return r.getTabSize();case"FILENAME":case"FILEPATH":return"";case"FULLNAME":return"Ace"}},this.variables={},this.getVariableValue=function(e,t){return this.variables.hasOwnProperty(t)?this.variables[t](e,t)||"":this.$getDefaultValue(e,t)||""},this.tmStrFormat=function(e,t,n){var r=t.flag||"",i=t.guard;i=new RegExp(i,r.replace(/[^gi]/,""));var s=this.tokenizeTmSnippet(t.fmt,"formatString"),o=this,u=e.replace(i,function(){o.variables.__=arguments;var e=o.resolveVariables(s,n),t="E";for(var r=0;r<e.length;r++){var i=e[r];if(typeof i=="object"){e[r]="";if(i.changeCase&&i.local){var u=e[r+1];u&&typeof u=="string"&&(i.changeCase=="u"?e[r]=u[0].toUpperCase():e[r]=u[0].toLowerCase(),e[r+1]=u.substr(1))}else i.changeCase&&(t=i.changeCase)}else t=="U"?e[r]=i.toUpperCase():t=="L"&&(e[r]=i.toLowerCase())}return e.join("")});return this.variables.__=null,u},this.resolveVariables=function(e,t){function o(t){var n=e.indexOf(t,r+1);n!=-1&&(r=n)}var n=[];for(var r=0;r<e.length;r++){var i=e[r];if(typeof i=="string")n.push(i);else{if(typeof i!="object")continue;if(i.skip)o(i);else{if(i.processed<r)continue;if(i.text){var s=this.getVariableValue(t,i.text);s&&i.fmtString&&(s=this.tmStrFormat(s,i)),i.processed=r,i.expectIf==null?s&&(n.push(s),o(i)):s?i.skip=i.elseBranch:o(i)}else i.tabstopId!=null?n.push(i):i.changeCase!=null&&n.push(i)}}}return n},this.insertSnippetForSelection=function(e,t){function f(e){var t=[];for(var n=0;n<e.length;n++){var r=e[n];if(typeof r=="object"){if(a[r.tabstopId])continue;var i=e.lastIndexOf(r,n-1);r=t[i]||{tabstopId:r.tabstopId}}t[n]=r}return t}var n=e.getCursorPosition(),r=e.session.getLine(n.row),i=e.session.getTabString(),s=r.match(/^\s*/)[0];n.column<s.length&&(s=s.slice(0,n.column));var o=this.tokenizeTmSnippet(t);o=this.resolveVariables(o,e),o=o.map(function(e){return e=="\n"?e+s:typeof e=="string"?e.replace(/\t/g,i):e});var u=[];o.forEach(function(e,t){if(typeof e!="object")return;var n=e.tabstopId,r=u[n];r||(r=u[n]=[],r.index=n,r.value="");if(r.indexOf(e)!==-1)return;r.push(e);var i=o.indexOf(e,t+1);if(i===-1)return;var s=o.slice(t+1,i),a=s.some(function(e){return typeof e=="object"});a&&!r.value?r.value=s:s.length&&(!r.value||typeof r.value!="string")&&(r.value=s.join(""))}),u.forEach(function(e){e.length=0});var a={};for(var l=0;l<o.length;l++){var c=o[l];if(typeof c!="object")continue;var p=c.tabstopId,d=o.indexOf(c,l+1);if(a[p]){a[p]===c&&(a[p]=null);continue}var v=u[p],m=typeof v.value=="string"?[v.value]:f(v.value);m.unshift(l+1,Math.max(0,d-l)),m.push(c),a[p]=c,o.splice.apply(o,m),v.indexOf(c)===-1&&v.push(c)}var g=0,y=0,b="";o.forEach(function(e){typeof e=="string"?(e[0]==="\n"?(y=e.length-1,g++):y+=e.length,b+=e):e.start?e.end={row:g,column:y}:e.start={row:g,column:y}});var w=e.getSelectionRange(),E=e.session.replace(w,b),S=new h(e),x=e.inVirtualSelectionMode&&e.selection.index;S.addTabstops(u,w.start,E,x)},this.insertSnippet=function(e,t){var n=this;if(e.inVirtualSelectionMode)return n.insertSnippetForSelection(e,t);e.forEachSelection(function(){n.insertSnippetForSelection(e,t)},null,{keepOrder:!0}),e.tabstopManager&&e.tabstopManager.tabNext()},this.$getScope=function(e){var t=e.session.$mode.$id||"";t=t.split("/").pop();if(t==="html"||t==="php"){t==="php"&&!e.session.$mode.inlinePhp&&(t="html");var n=e.getCursorPosition(),r=e.session.getState(n.row);typeof r=="object"&&(r=r[0]),r.substring&&(r.substring(0,3)=="js-"?t="javascript":r.substring(0,4)=="css-"?t="css":r.substring(0,4)=="php-"&&(t="php"))}return t},this.getActiveScopes=function(e){var t=this.$getScope(e),n=[t],r=this.snippetMap;return r[t]&&r[t].includeScopes&&n.push.apply(n,r[t].includeScopes),n.push("_"),n},this.expandWithTab=function(e,t){var n=this,r=e.forEachSelection(function(){return n.expandSnippetForSelection(e,t)},null,{keepOrder:!0});return r&&e.tabstopManager&&e.tabstopManager.tabNext(),r},this.expandSnippetForSelection=function(e,t){var n=e.getCursorPosition(),r=e.session.getLine(n.row),i=r.substring(0,n.column),s=r.substr(n.column),o=this.snippetMap,u;return this.getActiveScopes(e).some(function(e){var t=o[e];return t&&(u=this.findMatchingSnippet(t,i,s)),!!u},this),u?t&&t.dryRun?!0:(e.session.doc.removeInLine(n.row,n.column-u.replaceBefore.length,n.column+u.replaceAfter.length),this.variables.M__=u.matchBefore,this.variables.T__=u.matchAfter,this.insertSnippetForSelection(e,u.content),this.variables.M__=this.variables.T__=null,!0):!1},this.findMatchingSnippet=function(e,t,n){for(var r=e.length;r--;){var i=e[r];if(i.startRe&&!i.startRe.test(t))continue;if(i.endRe&&!i.endRe.test(n))continue;if(!i.startRe&&!i.endRe)continue;return i.matchBefore=i.startRe?i.startRe.exec(t):[""],i.matchAfter=i.endRe?i.endRe.exec(n):[""],i.replaceBefore=i.triggerRe?i.triggerRe.exec(t)[0]:"",i.replaceAfter=i.endTriggerRe?i.endTriggerRe.exec(n)[0]:"",i}},this.snippetMap={},this.snippetNameMap={},this.register=function(e,t){function o(e){return e&&!/^\^?\(.*\)\$?$|^\\b$/.test(e)&&(e="(?:"+e+")"),e||""}function u(e,t,n){return e=o(e),t=o(t),n?(e=t+e,e&&e[e.length-1]!="$"&&(e+="$")):(e+=t,e&&e[0]!="^"&&(e="^"+e)),new RegExp(e)}function a(e){e.scope||(e.scope=t||"_"),t=e.scope,n[t]||(n[t]=[],r[t]={});var o=r[t];if(e.name){var a=o[e.name];a&&i.unregister(a),o[e.name]=e}n[t].push(e),e.tabTrigger&&!e.trigger&&(!e.guard&&/^\w/.test(e.tabTrigger)&&(e.guard="\\b"),e.trigger=s.escapeRegExp(e.tabTrigger));if(!e.trigger&&!e.guard&&!e.endTrigger&&!e.endGuard)return;e.startRe=u(e.trigger,e.guard,!0),e.triggerRe=new RegExp(e.trigger,"",!0),e.endRe=u(e.endTrigger,e.endGuard,!0),e.endTriggerRe=new RegExp(e.endTrigger,"",!0)}var n=this.snippetMap,r=this.snippetNameMap,i=this;e||(e=[]),e&&e.content?a(e):Array.isArray(e)&&e.forEach(a),this._signal("registerSnippets",{scope:t})},this.unregister=function(e,t){function i(e){var i=r[e.scope||t];if(i&&i[e.name]){delete i[e.name];var s=n[e.scope||t],o=s&&s.indexOf(e);o>=0&&s.splice(o,1)}}var n=this.snippetMap,r=this.snippetNameMap;e.content?i(e):Array.isArray(e)&&e.forEach(i)},this.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t=[],n={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,i;while(i=r.exec(e)){if(i[1])try{n=JSON.parse(i[1]),t.push(n)}catch(s){}if(i[4])n.content=i[4].replace(/^\t/gm,""),t.push(n),n={};else{var o=i[2],u=i[3];if(o=="regex"){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(u)[1],n.trigger=a.exec(u)[1],n.endTrigger=a.exec(u)[1],n.endGuard=a.exec(u)[1]}else o=="snippet"?(n.tabTrigger=u.match(/^\S*/)[0],n.name||(n.name=u)):n[o]=u}}return t},this.getSnippetByName=function(e,t){var n=this.snippetNameMap,r;return this.getActiveScopes(t).some(function(t){var i=n[t];return i&&(r=i[e]),!!r},this),r}}).call(c.prototype);var h=function(e){if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=s.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)};(function(){this.attach=function(e){this.index=0,this.ranges=[],this.tabstops=[],this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(e){var t=e,n=e.action[0]=="r",r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=i.column-r.column;n&&(u=-u,a=-a);if(!this.$inChange&&n){var f=this.selectedTabstop,c=f&&!f.some(function(e){return l(e.start,r)<=0&&l(e.end,i)>=0});if(c)return this.detach()}var h=this.ranges;for(var p=0;p<h.length;p++){var d=h[p];if(d.end.row<r.row)continue;if(n&&l(r,d.start)<0&&l(i,d.end)>0){this.removeRange(d),p--;continue}d.start.row==s&&d.start.column>r.column&&(d.start.column+=a),d.end.row==s&&d.end.column>=r.column&&(d.end.column+=a),d.start.row>=s&&(d.start.row+=u),d.end.row>=s&&(d.end.row+=u),l(d.start,d.end)>0&&this.removeRange(d)}h.length||this.detach()},this.updateLinkedFields=function(){var e=this.selectedTabstop;if(!e||!e.hasLinkedRanges)return;this.$inChange=!0;var n=this.editor.session,r=n.getTextRange(e.firstNonLinked);for(var i=e.length;i--;){var s=e[i];if(!s.linked)continue;var o=t.snippetManager.tmStrFormat(r,s.original);n.replace(s,o)}this.$inChange=!1},this.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},this.onChangeSelection=function(){if(!this.editor)return;var e=this.editor.selection.lead,t=this.editor.selection.anchor,n=this.editor.selection.isEmpty();for(var r=this.ranges.length;r--;){if(this.ranges[r].linked)continue;var i=this.ranges[r].contains(e.row,e.column),s=n||this.ranges[r].contains(t.row,t.column);if(i&&s)return}this.detach()},this.onChangeSession=function(){this.detach()},this.tabNext=function(e){var t=this.tabstops.length,n=this.index+(e||1);n=Math.min(Math.max(n,1),t),n==t&&(n=0),this.selectTabstop(n),n===0&&this.detach()},this.selectTabstop=function(e){this.$openTabstops=null;var t=this.tabstops[this.index];t&&this.addTabstopMarkers(t),this.index=e,t=this.tabstops[this.index];if(!t||!t.length)return;this.selectedTabstop=t;if(!this.editor.inVirtualSelectionMode){var n=this.editor.multiSelect;n.toSingleRange(t.firstNonLinked.clone());for(var r=t.length;r--;){if(t.hasLinkedRanges&&t[r].linked)continue;n.addRange(t[r].clone(),!0)}n.ranges[0]&&n.addRange(n.ranges[0].clone())}else this.editor.selection.setRange(t.firstNonLinked);this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.addTabstops=function(e,t,n){this.$openTabstops||(this.$openTabstops=[]);if(!e[0]){var r=o.fromPoints(n,n);v(r.start,t),v(r.end,t),e[0]=[r],e[0].index=0}var i=this.index,s=[i+1,0],u=this.ranges;e.forEach(function(e,n){var r=this.$openTabstops[n]||e;for(var i=e.length;i--;){var a=e[i],f=o.fromPoints(a.start,a.end||a.start);d(f.start,t),d(f.end,t),f.original=a,f.tabstop=r,u.push(f),r!=e?r.unshift(f):r[i]=f,a.fmtString?(f.linked=!0,r.hasLinkedRanges=!0):r.firstNonLinked||(r.firstNonLinked=f)}r.firstNonLinked||(r.hasLinkedRanges=!1),r===e&&(s.push(r),this.$openTabstops[n]=r),this.addTabstopMarkers(r)},this),s.length>2&&(this.tabstops.length&&s.push(s.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,s))},this.addTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},this.removeTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},this.removeRange=function(e){var t=e.tabstop.indexOf(e);e.tabstop.splice(t,1),t=this.ranges.indexOf(e),this.ranges.splice(t,1),this.editor.session.removeMarker(e.markerId),e.tabstop.length||(t=this.tabstops.indexOf(e.tabstop),t!=-1&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},this.keyboardHandler=new a,this.keyboardHandler.bindKeys({Tab:function(e){if(t.snippetManager&&t.snippetManager.expandWithTab(e))return;e.tabstopManager.tabNext(1)},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1)},Esc:function(e){e.tabstopManager.detach()},Return:function(e){return!1}})}).call(h.prototype);var p={};p.onChange=u.prototype.onChange,p.setPosition=function(e,t){this.pos.row=e,this.pos.column=t},p.update=function(e,t,n){this.$insertRight=n,this.pos=e,this.onChange(t)};var d=function(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row},v=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};e("./lib/dom").importCssString(".ace_snippet-marker { -moz-box-sizing: border-box; box-sizing: border-box; background: rgba(194, 193, 208, 0.09); border: 1px dotted rgba(211, 208, 235, 0.62); position: absolute;}"),t.snippetManager=new c;var m=e("./editor").Editor;(function(){this.insertSnippet=function(e,n){return t.snippetManager.insertSnippet(this,e,n)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(m.prototype)}),ace.define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../virtual_renderer").VirtualRenderer,i=e("../editor").Editor,s=e("../range").Range,o=e("../lib/event"),u=e("../lib/lang"),a=e("../lib/dom"),f=function(e){var t=new r(e);t.$maxLines=4;var n=new i(t);return n.setHighlightActiveLine(!1),n.setShowPrintMargin(!1),n.renderer.setShowGutter(!1),n.renderer.setHighlightGutterLine(!1),n.$mouseHandler.$focusWaitTimout=0,n.$highlightTagPending=!0,n},l=function(e){var t=a.createElement("div"),n=new f(t);e&&e.appendChild(t),t.style.display="none",n.renderer.content.style.cursor="default",n.renderer.setStyle("ace_autocomplete"),n.setOption("displayIndentGuides",!1),n.setOption("dragDelay",150);var r=function(){};n.focus=r,n.$isFocused=!0,n.renderer.$cursorLayer.restartTimer=r,n.renderer.$cursorLayer.element.style.opacity=0,n.renderer.$maxLines=8,n.renderer.$keepTextAreaAtCursor=!1,n.setHighlightActiveLine(!1),n.session.highlight(""),n.session.$searchHighlight.clazz="ace_highlight-marker",n.on("mousedown",function(e){var t=e.getDocumentPosition();n.selection.moveToPosition(t),c.start.row=c.end.row=t.row,e.stop()});var i,l=new s(-1,0,-1,Infinity),c=new s(-1,0,-1,Infinity);c.id=n.session.addMarker(c,"ace_active-line","fullLine"),n.setSelectOnHover=function(e){e?l.id&&(n.session.removeMarker(l.id),l.id=null):l.id=n.session.addMarker(l,"ace_line-hover","fullLine")},n.setSelectOnHover(!1),n.on("mousemove",function(e){if(!i){i=e;return}if(i.x==e.x&&i.y==e.y)return;i=e,i.scrollTop=n.renderer.scrollTop;var t=i.getDocumentPosition().row;l.start.row!=t&&(l.id||n.setRow(t),p(t))}),n.renderer.on("beforeRender",function(){if(i&&l.start.row!=-1){i.$pos=null;var e=i.getDocumentPosition().row;l.id||n.setRow(e),p(e,!0)}}),n.renderer.on("afterRender",function(){var e=n.getRow(),t=n.renderer.$textLayer,r=t.element.childNodes[e-t.config.firstRow];if(r==t.selectedNode)return;t.selectedNode&&a.removeCssClass(t.selectedNode,"ace_selected"),t.selectedNode=r,r&&a.addCssClass(r,"ace_selected")});var h=function(){p(-1)},p=function(e,t){e!==l.start.row&&(l.start.row=l.end.row=e,t||n.session._emit("changeBackMarker"),n._emit("changeHoverMarker"))};n.getHoveredRow=function(){return l.start.row},o.addListener(n.container,"mouseout",h),n.on("hide",h),n.on("changeSelection",h),n.session.doc.getLength=function(){return n.data.length},n.session.doc.getLine=function(e){var t=n.data[e];return typeof t=="string"?t:t&&t.value||""};var d=n.session.bgTokenizer;return d.$tokenizeRow=function(e){var t=n.data[e],r=[];if(!t)return r;typeof t=="string"&&(t={value:t}),t.caption||(t.caption=t.value||t.name);var i=-1,s,o;for(var u=0;u<t.caption.length;u++)o=t.caption[u],s=t.matchMask&1<<u?1:0,i!==s?(r.push({type:t.className||""+(s?"completion-highlight":""),value:o}),i=s):r[r.length-1].value+=o;if(t.meta){var a=n.renderer.$size.scrollerWidth/n.renderer.layerConfig.characterWidth,f=t.meta;f.length+t.caption.length>a-2&&(f=f.substr(0,a-t.caption.length-3)+"\u2026"),r.push({type:"rightAlignedText",value:f})}return r},d.$updateOnChange=r,d.start=r,n.session.$computeWidth=function(){return this.screenWidth=0},n.$blockScrolling=Infinity,n.isOpen=!1,n.isTopdown=!1,n.data=[],n.setData=function(e){n.setValue(u.stringRepeat("\n",e.length),-1),n.data=e||[],n.setRow(0)},n.getData=function(e){return n.data[e]},n.getRow=function(){return c.start.row},n.setRow=function(e){e=Math.max(0,Math.min(this.data.length,e)),c.start.row!=e&&(n.selection.clearSelection(),c.start.row=c.end.row=e||0,n.session._emit("changeBackMarker"),n.moveCursorTo(e||0,0),n.isOpen&&n._signal("select"))},n.on("changeSelection",function(){n.isOpen&&n.setRow(n.selection.lead.row),n.renderer.scrollCursorIntoView()}),n.hide=function(){this.container.style.display="none",this._signal("hide"),n.isOpen=!1},n.show=function(e,t,r){var s=this.container,o=window.innerHeight,u=window.innerWidth,a=this.renderer,f=a.$maxLines*t*1.4,l=e.top+this.$borderSize,c=l>o/2&&!r;c&&l+t+f>o?(a.$maxPixelHeight=l-2*this.$borderSize,s.style.top="",s.style.bottom=o-l+"px",n.isTopdown=!1):(l+=t,a.$maxPixelHeight=o-l-.2*t,s.style.top=l+"px",s.style.bottom="",n.isTopdown=!0),s.style.display="",this.renderer.$textLayer.checkForSizeChanges();var h=e.left;h+s.offsetWidth>u&&(h=u-s.offsetWidth),s.style.left=h+"px",this._signal("show"),i=null,n.isOpen=!0},n.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},n.$imageSize=0,n.$borderSize=1,n};a.importCssString(".ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line { background-color: #CAD6FA; z-index: 1;}.ace_editor.ace_autocomplete .ace_line-hover { border: 1px solid #abbffe; margin-top: -1px; background: rgba(233,233,253,0.4);}.ace_editor.ace_autocomplete .ace_line-hover { position: absolute; z-index: 2;}.ace_editor.ace_autocomplete .ace_scroller { background: none; border: none; box-shadow: none;}.ace_rightAlignedText { color: gray; display: inline-block; position: absolute; right: 4px; text-align: right; z-index: -1;}.ace_editor.ace_autocomplete .ace_completion-highlight{ color: #000; text-shadow: 0 0 0.01em;}.ace_editor.ace_autocomplete { width: 280px; z-index: 200000; background: #fbfbfb; color: #444; border: 1px lightgray solid; position: fixed; box-shadow: 2px 3px 5px rgba(0,0,0,.2); line-height: 1.4;}"),t.AcePopup=l}),ace.define("ace/autocomplete/util",["require","exports","module"],function(e,t,n){"use strict";t.parForEach=function(e,t,n){var r=0,i=e.length;i===0&&n();for(var s=0;s<i;s++)t(e[s],function(e,t){r++,r===i&&n(e,t)})};var r=/[a-zA-Z_0-9\$\-\u00A2-\uFFFF]/;t.retrievePrecedingIdentifier=function(e,t,n){n=n||r;var i=[];for(var s=t-1;s>=0;s--){if(!n.test(e[s]))break;i.push(e[s])}return i.reverse().join("")},t.retrieveFollowingIdentifier=function(e,t,n){n=n||r;var i=[];for(var s=t;s<e.length;s++){if(!n.test(e[s]))break;i.push(e[s])}return i},t.getCompletionPrefix=function(e){var t=e.getCursorPosition(),n=e.session.getLine(t.row),r;return e.completers.forEach(function(e){e.identifierRegexps&&e.identifierRegexps.forEach(function(e){!r&&e&&(r=this.retrievePrecedingIdentifier(n,t.column,e))}.bind(this))}.bind(this)),r||this.retrievePrecedingIdentifier(n,t.column)}}),ace.define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/snippets"],function(e,t,n){"use strict";var r=e("./keyboard/hash_handler").HashHandler,i=e("./autocomplete/popup").AcePopup,s=e("./autocomplete/util"),o=e("./lib/event"),u=e("./lib/lang"),a=e("./lib/dom"),f=e("./snippets").snippetManager,l=function(){this.autoInsert=!1,this.autoSelect=!0,this.exactMatch=!1,this.gatherCompletionsId=0,this.keyboardHandler=new r,this.keyboardHandler.bindKeys(this.commands),this.blurListener=this.blurListener.bind(this),this.changeListener=this.changeListener.bind(this),this.mousedownListener=this.mousedownListener.bind(this),this.mousewheelListener=this.mousewheelListener.bind(this),this.changeTimer=u.delayedCall(function(){this.updateCompletions(!0)}.bind(this)),this.tooltipTimer=u.delayedCall(this.updateDocTooltip.bind(this),50)};(function(){this.$init=function(){return this.popup=new i(document.body||document.documentElement),this.popup.on("click",function(e){this.insertMatch(),e.stop()}.bind(this)),this.popup.focus=this.editor.focus.bind(this.editor),this.popup.on("show",this.tooltipTimer.bind(null,null)),this.popup.on("select",this.tooltipTimer.bind(null,null)),this.popup.on("changeHoverMarker",this.tooltipTimer.bind(null,null)),this.popup},this.getPopup=function(){return this.popup||this.$init()},this.openPopup=function(e,t,n){this.popup||this.$init(),this.popup.setData(this.completions.filtered),e.keyBinding.addKeyboardHandler(this.keyboardHandler);var r=e.renderer;this.popup.setRow(this.autoSelect?0:-1);if(!n){this.popup.setTheme(e.getTheme()),this.popup.setFontSize(e.getFontSize());var i=r.layerConfig.lineHeight,s=r.$cursorLayer.getPixelPosition(this.base,!0);s.left-=this.popup.getTextLeftOffset();var o=e.container.getBoundingClientRect();s.top+=o.top-r.layerConfig.offset,s.left+=o.left-e.renderer.scrollLeft,s.left+=r.gutterWidth,this.popup.show(s,i)}else n&&!t&&this.detach()},this.detach=function(){this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.off("changeSelection",this.changeListener),this.editor.off("blur",this.blurListener),this.editor.off("mousedown",this.mousedownListener),this.editor.off("mousewheel",this.mousewheelListener),this.changeTimer.cancel(),this.hideDocTooltip(),this.gatherCompletionsId+=1,this.popup&&this.popup.isOpen&&this.popup.hide(),this.base&&this.base.detach(),this.activated=!1,this.completions=this.base=null},this.changeListener=function(e){var t=this.editor.selection.lead;(t.row!=this.base.row||t.column<this.base.column)&&this.detach(),this.activated?this.changeTimer.schedule():this.detach()},this.blurListener=function(e){var t=document.activeElement,n=this.editor.textInput.getElement(),r=e.relatedTarget&&e.relatedTarget==this.tooltipNode,i=this.popup&&this.popup.container;t!=n&&t.parentNode!=i&&!r&&t!=this.tooltipNode&&e.relatedTarget!=n&&this.detach()},this.mousedownListener=function(e){this.detach()},this.mousewheelListener=function(e){this.detach()},this.goTo=function(e){var t=this.popup.getRow(),n=this.popup.session.getLength()-1;switch(e){case"up":t=t<=0?n:t-1;break;case"down":t=t>=n?-1:t+1;break;case"start":t=0;break;case"end":t=n}this.popup.setRow(t)},this.insertMatch=function(e,t){e||(e=this.popup.getData(this.popup.getRow()));if(!e)return!1;if(e.completer&&e.completer.insertMatch)e.completer.insertMatch(this.editor,e);else{if(this.completions.filterText){var n=this.editor.selection.getAllRanges();for(var r=0,i;i=n[r];r++)i.start.column-=this.completions.filterText.length,this.editor.session.remove(i)}e.snippet?f.insertSnippet(this.editor,e.snippet):this.editor.execCommand("insertstring",e.value||e)}this.detach()},this.commands={Up:function(e){e.completer.goTo("up")},Down:function(e){e.completer.goTo("down")},"Ctrl-Up|Ctrl-Home":function(e){e.completer.goTo("start")},"Ctrl-Down|Ctrl-End":function(e){e.completer.goTo("end")},Esc:function(e){e.completer.detach()},Return:function(e){return e.completer.insertMatch()},"Shift-Return":function(e){e.completer.insertMatch(null,{deleteSuffix:!0})},Tab:function(e){var t=e.completer.insertMatch();if(!!t||!!e.tabstopManager)return t;e.completer.goTo("down")},PageUp:function(e){e.completer.popup.gotoPageUp()},PageDown:function(e){e.completer.popup.gotoPageDown()}},this.gatherCompletions=function(e,t){var n=e.getSession(),r=e.getCursorPosition(),i=n.getLine(r.row),o=s.getCompletionPrefix(e);this.base=n.doc.createAnchor(r.row,r.column-o.length),this.base.$insertRight=!0;var u=[],a=e.completers.length;return e.completers.forEach(function(i,s){i.getCompletions(e,n,r,o,function(r,i){!r&&i&&(u=u.concat(i));var s=e.getCursorPosition(),f=n.getLine(s.row);t(null,{prefix:o,matches:u,finished:--a===0})})}),!0},this.showPopup=function(e){this.editor&&this.detach(),this.activated=!0,this.editor=e,e.completer!=this&&(e.completer&&e.completer.detach(),e.completer=this),e.on("changeSelection",this.changeListener),e.on("blur",this.blurListener),e.on("mousedown",this.mousedownListener),e.on("mousewheel",this.mousewheelListener),this.updateCompletions()},this.updateCompletions=function(e){if(e&&this.base&&this.completions){var t=this.editor.getCursorPosition(),n=this.editor.session.getTextRange({start:this.base,end:t});if(n==this.completions.filterText)return;this.completions.setFilter(n);if(!this.completions.filtered.length)return this.detach();if(this.completions.filtered.length==1&&this.completions.filtered[0].value==n&&!this.completions.filtered[0].snippet)return this.detach();this.openPopup(this.editor,n,e);return}var r=this.gatherCompletionsId;this.gatherCompletions(this.editor,function(t,n){var i=function(){if(!n.finished)return;return this.detach()}.bind(this),s=n.prefix,o=n&&n.matches;if(!o||!o.length)return i();if(s.indexOf(n.prefix)!==0||r!=this.gatherCompletionsId)return;this.completions=new c(o),this.exactMatch&&(this.completions.exactMatch=!0),this.completions.setFilter(s);var u=this.completions.filtered;if(!u.length)return i();if(u.length==1&&u[0].value==s&&!u[0].snippet)return i();if(this.autoInsert&&u.length==1&&n.finished)return this.insertMatch(u[0]);this.openPopup(this.editor,s,e)}.bind(this))},this.cancelContextMenu=function(){this.editor.$mouseHandler.cancelContextMenu()},this.updateDocTooltip=function(){var e=this.popup,t=e.data,n=t&&(t[e.getHoveredRow()]||t[e.getRow()]),r=null;if(!n||!this.editor||!this.popup.isOpen)return this.hideDocTooltip();this.editor.completers.some(function(e){return e.getDocTooltip&&(r=e.getDocTooltip(n)),r}),r||(r=n),typeof r=="string"&&(r={docText:r});if(!r||!r.docHTML&&!r.docText)return this.hideDocTooltip();this.showDocTooltip(r)},this.showDocTooltip=function(e){this.tooltipNode||(this.tooltipNode=a.createElement("div"),this.tooltipNode.className="ace_tooltip ace_doc-tooltip",this.tooltipNode.style.margin=0,this.tooltipNode.style.pointerEvents="auto",this.tooltipNode.tabIndex=-1,this.tooltipNode.onblur=this.blurListener.bind(this));var t=this.tooltipNode;e.docHTML?t.innerHTML=e.docHTML:e.docText&&(t.textContent=e.docText),t.parentNode||document.body.appendChild(t);var n=this.popup,r=n.container.getBoundingClientRect();t.style.top=n.container.style.top,t.style.bottom=n.container.style.bottom,window.innerWidth-r.right<320?(t.style.right=window.innerWidth-r.left+"px",t.style.left=""):(t.style.left=r.right+1+"px",t.style.right=""),t.style.display="block"},this.hideDocTooltip=function(){this.tooltipTimer.cancel();if(!this.tooltipNode)return;var e=this.tooltipNode;!this.editor.isFocused()&&document.activeElement==e&&this.editor.focus(),this.tooltipNode=null,e.parentNode&&e.parentNode.removeChild(e)}}).call(l.prototype),l.startCommand={name:"startAutocomplete",exec:function(e){e.completer||(e.completer=new l),e.completer.autoInsert=!1,e.completer.autoSelect=!0,e.completer.showPopup(e),e.completer.cancelContextMenu()},bindKey:"Ctrl-Space|Ctrl-Shift-Space|Alt-Space"};var c=function(e,t){this.all=e,this.filtered=e,this.filterText=t||"",this.exactMatch=!1};(function(){this.setFilter=function(e){if(e.length>this.filterText&&e.lastIndexOf(this.filterText,0)===0)var t=this.filtered;else var t=this.all;this.filterText=e,t=this.filterCompletions(t,this.filterText),t=t.sort(function(e,t){return t.exactMatch-e.exactMatch||t.score-e.score});var n=null;t=t.filter(function(e){var t=e.snippet||e.caption||e.value;return t===n?!1:(n=t,!0)}),this.filtered=t},this.filterCompletions=function(e,t){var n=[],r=t.toUpperCase(),i=t.toLowerCase();e:for(var s=0,o;o=e[s];s++){var u=o.value||o.caption||o.snippet;if(!u)continue;var a=-1,f=0,l=0,c,h;if(this.exactMatch){if(t!==u.substr(0,t.length))continue e}else for(var p=0;p<t.length;p++){var d=u.indexOf(i[p],a+1),v=u.indexOf(r[p],a+1);c=d>=0?v<0||d<v?d:v:v;if(c<0)continue e;h=c-a-1,h>0&&(a===-1&&(l+=10),l+=h),f|=1<<c,a=c}o.matchMask=f,o.exactMatch=l?0:1,o.score=(o.score||0)-l,n.push(o)}return n}}).call(c.prototype),t.Autocomplete=l,t.FilteredList=c}),ace.define("ace/autocomplete/text_completer",["require","exports","module","ace/range"],function(e,t,n){function s(e,t){var n=e.getTextRange(r.fromPoints({row:0,column:0},t));return n.split(i).length-1}function o(e,t){var n=s(e,t),r=e.getValue().split(i),o=Object.create(null),u=r[n];return r.forEach(function(e,t){if(!e||e===u)return;var i=Math.abs(n-t),s=r.length-i;o[e]?o[e]=Math.max(s,o[e]):o[e]=s}),o}var r=e("../range").Range,i=/[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/;t.getCompletions=function(e,t,n,r,i){var s=o(t,n,r),u=Object.keys(s);i(null,u.map(function(e){return{caption:e,value:e,score:s[e],meta:"local"}}))}}),ace.define("ace/ext/language_tools",["require","exports","module","ace/snippets","ace/autocomplete","ace/config","ace/lib/lang","ace/autocomplete/util","ace/autocomplete/text_completer","ace/editor","ace/config"],function(e,t,n){"use strict";var r=e("../snippets").snippetManager,i=e("../autocomplete").Autocomplete,s=e("../config"),o=e("../lib/lang"),u=e("../autocomplete/util"),a=e("../autocomplete/text_completer"),f={getCompletions:function(e,t,n,r,i){if(t.$mode.completer)return t.$mode.completer.getCompletions(e,t,n,r,i);var s=e.session.getState(n.row),o=t.$mode.getCompletions(s,t,n,r);i(null,o)}},l={getCompletions:function(e,t,n,i,s){var o=r.snippetMap,u=[];r.getActiveScopes(e).forEach(function(e){var t=o[e]||[];for(var n=t.length;n--;){var r=t[n],i=r.name||r.tabTrigger;if(!i)continue;u.push({caption:i,snippet:r.content,meta:r.tabTrigger&&!r.name?r.tabTrigger+"\u21e5 ":"snippet",type:"snippet"})}},this),s(null,u)},getDocTooltip:function(e){e.type=="snippet"&&!e.docHTML&&(e.docHTML=["<b>",o.escapeHTML(e.caption),"</b>","<hr></hr>",o.escapeHTML(e.snippet)].join(""))}},c=[l,a,f];t.setCompleters=function(e){c.length=0,e&&c.push.apply(c,e)},t.addCompleter=function(e){c.push(e)},t.textCompleter=a,t.keyWordCompleter=f,t.snippetCompleter=l;var h={name:"expandSnippet",exec:function(e){return r.expandWithTab(e)},bindKey:"Tab"},p=function(e,t){d(t.session.$mode)},d=function(e){var t=e.$id;r.files||(r.files={}),v(t),e.modes&&e.modes.forEach(d)},v=function(e){if(!e||r.files[e])return;var t=e.replace("mode","snippets");r.files[e]={},s.loadModule(t,function(t){t&&(r.files[e]=t,!t.snippets&&t.snippetText&&(t.snippets=r.parseSnippetFile(t.snippetText)),r.register(t.snippets||[],t.scope),t.includeScopes&&(r.snippetMap[t.scope].includeScopes=t.includeScopes,t.includeScopes.forEach(function(e){v("ace/mode/"+e)})))})},m=function(e){var t=e.editor,n=t.completer&&t.completer.activated;if(e.command.name==="backspace")n&&!u.getCompletionPrefix(t)&&t.completer.detach();else if(e.command.name==="insertstring"){var r=u.getCompletionPrefix(t);r&&!n&&(t.completer||(t.completer=new i),t.completer.autoInsert=!1,t.completer.showPopup(t))}},g=e("../editor").Editor;e("../config").defineOptions(g.prototype,"editor",{enableBasicAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:c),this.commands.addCommand(i.startCommand)):this.commands.removeCommand(i.startCommand)},value:!1},enableLiveAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:c),this.commands.on("afterExec",m)):this.commands.removeListener("afterExec",m)},value:!1},enableSnippets:{set:function(e){e?(this.commands.addCommand(h),this.on("changeMode",p),p(null,this)):(this.commands.removeCommand(h),this.off("changeMode",p))},value:!1}})});
+ (function() {
+ ace.require(["ace/ext/language_tools"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-linking.js b/library/ace/ext-linking.js
new file mode 100644
index 000000000..69f87918f
--- /dev/null
+++ b/library/ace/ext-linking.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"],function(e,t,n){function i(e){var t=e.editor,n=e.getAccelKey();if(n){var t=e.editor,r=e.getDocumentPosition(),i=t.session,s=i.getTokenAt(r.row,r.column);t._emit("linkHover",{position:r,token:s})}}function s(e){var t=e.getAccelKey(),n=e.getButton();if(n==0&&t){var r=e.editor,i=e.getDocumentPosition(),s=r.session,o=s.getTokenAt(i.row,i.column);r._emit("linkClick",{position:i,token:o})}}var r=e("ace/editor").Editor;e("../config").defineOptions(r.prototype,"editor",{enableLinking:{set:function(e){e?(this.on("click",s),this.on("mousemove",i)):(this.off("click",s),this.off("mousemove",i))},value:!1}})});
+ (function() {
+ ace.require(["ace/ext/linking"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-modelist.js b/library/ace/ext-modelist.js
new file mode 100644
index 000000000..84164bdfd
--- /dev/null
+++ b/library/ace/ext-modelist.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/modelist",["require","exports","module"],function(e,t,n){"use strict";function i(e){var t=a.text,n=e.split(/[\/\\]/).pop();for(var i=0;i<r.length;i++)if(r[i].supportsFile(n)){t=r[i];break}return t}var r=[],s=function(e,t,n){this.name=e,this.caption=t,this.mode="ace/mode/"+e,this.extensions=n;var r;/\^/.test(n)?r=n.replace(/\|(\^)?/g,function(e,t){return"$|"+(t?"^":"^.*\\.")})+"$":r="^.*\\.("+n+")$",this.extRe=new RegExp(r,"gi")};s.prototype.supportsFile=function(e){return e.match(this.extRe)};var o={ABAP:["abap"],ABC:["abc"],ActionScript:["as"],ADA:["ada|adb"],Apache_Conf:["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"],AsciiDoc:["asciidoc|adoc"],Assembly_x86:["asm|a"],AutoHotKey:["ahk"],BatchFile:["bat|cmd"],C_Cpp:["cpp|c|cc|cxx|h|hh|hpp|ino"],C9Search:["c9search_results"],Cirru:["cirru|cr"],Clojure:["clj|cljs"],Cobol:["CBL|COB"],coffee:["coffee|cf|cson|^Cakefile"],ColdFusion:["cfm"],CSharp:["cs"],CSS:["css"],Curly:["curly"],D:["d|di"],Dart:["dart"],Diff:["diff|patch"],Dockerfile:["^Dockerfile"],Dot:["dot"],Dummy:["dummy"],DummySyntax:["dummy"],Eiffel:["e|ge"],EJS:["ejs"],Elixir:["ex|exs"],Elm:["elm"],Erlang:["erl|hrl"],Forth:["frt|fs|ldr"],Fortran:["f|f90"],FTL:["ftl"],Gcode:["gcode"],Gherkin:["feature"],Gitignore:["^.gitignore"],Glsl:["glsl|frag|vert"],Gobstones:["gbs"],golang:["go"],Groovy:["groovy"],HAML:["haml"],Handlebars:["hbs|handlebars|tpl|mustache"],Haskell:["hs"],haXe:["hx"],HTML:["html|htm|xhtml"],HTML_Elixir:["eex|html.eex"],HTML_Ruby:["erb|rhtml|html.erb"],INI:["ini|conf|cfg|prefs"],Io:["io"],Jack:["jack"],Jade:["jade"],Java:["java"],JavaScript:["js|jsm|jsx"],JSON:["json"],JSONiq:["jq"],JSP:["jsp"],JSX:["jsx"],Julia:["jl"],LaTeX:["tex|latex|ltx|bib"],Lean:["lean|hlean"],LESS:["less"],Liquid:["liquid"],Lisp:["lisp"],LiveScript:["ls"],LogiQL:["logic|lql"],LSL:["lsl"],Lua:["lua"],LuaPage:["lp"],Lucene:["lucene"],Makefile:["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"],Markdown:["md|markdown"],Mask:["mask"],MATLAB:["matlab"],Maze:["mz"],MEL:["mel"],MUSHCode:["mc|mush"],MySQL:["mysql"],Nix:["nix"],NSIS:["nsi|nsh"],ObjectiveC:["m|mm"],OCaml:["ml|mli"],Pascal:["pas|p"],Perl:["pl|pm"],pgSQL:["pgsql"],PHP:["php|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"],Powershell:["ps1"],Praat:["praat|praatscript|psc|proc"],Prolog:["plg|prolog"],Properties:["properties"],Protobuf:["proto"],Python:["py"],R:["r"],Razor:["cshtml"],RDoc:["Rd"],RHTML:["Rhtml"],RST:["rst"],Ruby:["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"],Rust:["rs"],SASS:["sass"],SCAD:["scad"],Scala:["scala"],Scheme:["scm|sm|rkt|oak|scheme"],SCSS:["scss"],SH:["sh|bash|^.bashrc"],SJS:["sjs"],Smarty:["smarty|tpl"],snippets:["snippets"],Soy_Template:["soy"],Space:["space"],SQL:["sql"],SQLServer:["sqlserver"],Stylus:["styl|stylus"],SVG:["svg"],Swift:["swift"],Tcl:["tcl"],Tex:["tex"],Text:["txt"],Textile:["textile"],Toml:["toml"],Twig:["twig|swig"],Typescript:["ts|typescript|str"],Vala:["vala"],VBScript:["vbs|vb"],Velocity:["vm"],Verilog:["v|vh|sv|svh"],VHDL:["vhd|vhdl"],Wollok:["wlk|wpgm|wtest"],XML:["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"],XQuery:["xq"],YAML:["yaml|yml"],Django:["html"]},u={ObjectiveC:"Objective-C",CSharp:"C#",golang:"Go",C_Cpp:"C and C++",coffee:"CoffeeScript",HTML_Ruby:"HTML (Ruby)",HTML_Elixir:"HTML (Elixir)",FTL:"FreeMarker"},a={};for(var f in o){var l=o[f],c=(u[f]||f).replace(/_/g," "),h=f.toLowerCase(),p=new s(h,c,l[0]);a[h]=p,r.push(p)}n.exports={getModeForPath:i,modes:r,modesByName:a}});
+ (function() {
+ ace.require(["ace/ext/modelist"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-old_ie.js b/library/ace/ext-old_ie.js
new file mode 100644
index 000000000..7bea1c0d6
--- /dev/null
+++ b/library/ace/ext-old_ie.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/lang"),s=e("../lib/event"),o=".ace_search {background-color: #ddd;border: 1px solid #cbcbcb;border-top: 0 none;max-width: 325px;overflow: hidden;margin: 0;padding: 4px;padding-right: 6px;padding-bottom: 0;position: absolute;top: 0px;z-index: 99;white-space: normal;}.ace_search.left {border-left: 0 none;border-radius: 0px 0px 5px 0px;left: 0;}.ace_search.right {border-radius: 0px 0px 0px 5px;border-right: 0 none;right: 0;}.ace_search_form, .ace_replace_form {border-radius: 3px;border: 1px solid #cbcbcb;float: left;margin-bottom: 4px;overflow: hidden;}.ace_search_form.ace_nomatch {outline: 1px solid red;}.ace_search_field {background-color: white;border-right: 1px solid #cbcbcb;border: 0 none;-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;float: left;height: 22px;outline: 0;padding: 0 7px;width: 214px;margin: 0;}.ace_searchbtn,.ace_replacebtn {background: #fff;border: 0 none;border-left: 1px solid #dcdcdc;cursor: pointer;float: left;height: 22px;margin: 0;position: relative;}.ace_searchbtn:last-child,.ace_replacebtn:last-child {border-top-right-radius: 3px;border-bottom-right-radius: 3px;}.ace_searchbtn:disabled {background: none;cursor: default;}.ace_searchbtn {background-position: 50% 50%;background-repeat: no-repeat;width: 27px;}.ace_searchbtn.prev {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); }.ace_searchbtn.next {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); }.ace_searchbtn_close {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;border-radius: 50%;border: 0 none;color: #656565;cursor: pointer;float: right;font: 16px/16px Arial;height: 14px;margin: 5px 1px 9px 5px;padding: 0;text-align: center;width: 14px;}.ace_searchbtn_close:hover {background-color: #656565;background-position: 50% 100%;color: white;}.ace_replacebtn.prev {width: 54px}.ace_replacebtn.next {width: 27px}.ace_button {margin-left: 2px;cursor: pointer;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;overflow: hidden;opacity: 0.7;border: 1px solid rgba(100,100,100,0.23);padding: 1px;-moz-box-sizing: border-box;box-sizing: border-box;color: black;}.ace_button:hover {background-color: #eee;opacity:1;}.ace_button:active {background-color: #ddd;}.ace_button.checked {border-color: #3399ff;opacity:1;}.ace_search_options{margin-bottom: 3px;text-align: right;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;}",u=e("../keyboard/hash_handler").HashHandler,a=e("../lib/keys");r.importCssString(o,"ace_searchbox");var f='<div class="ace_search right"> <button type="button" action="hide" class="ace_searchbtn_close"></button> <div class="ace_search_form"> <input class="ace_search_field" placeholder="Search for" spellcheck="false"></input> <button type="button" action="findNext" class="ace_searchbtn next"></button> <button type="button" action="findPrev" class="ace_searchbtn prev"></button> <button type="button" action="findAll" class="ace_searchbtn" title="Alt-Enter">All</button> </div> <div class="ace_replace_form"> <input class="ace_search_field" placeholder="Replace with" spellcheck="false"></input> <button type="button" action="replaceAndFindNext" class="ace_replacebtn">Replace</button> <button type="button" action="replaceAll" class="ace_replacebtn">All</button> </div> <div class="ace_search_options"> <span action="toggleRegexpMode" class="ace_button" title="RegExp Search">.*</span> <span action="toggleCaseSensitive" class="ace_button" title="CaseSensitive Search">Aa</span> <span action="toggleWholeWords" class="ace_button" title="Whole Word Search">\\b</span> </div></div>'.replace(/>\s+/g,">"),l=function(e,t,n){var i=r.createElement("div");i.innerHTML=f,this.element=i.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;s.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),s.stopPropagation(e)}),s.addListener(e,"click",function(e){var n=e.target||e.srcElement,r=n.getAttribute("action");r&&t[r]?t[r]():t.$searchBarKb.commands[r]&&t.$searchBarKb.commands[r].exec(t),s.stopPropagation(e)}),s.addCommandKeyListener(e,function(e,n,r){var i=a.keyCodeToString(r),o=t.$searchBarKb.findKeyCommand(n,i);o&&o.exec&&(o.exec(t),s.stopEvent(e))}),this.$onChange=i.delayedCall(function(){t.find(!1,!1)}),s.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),s.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),s.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new u([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new u,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){r.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),r.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),r.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,n){var i=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:n}),s=!i&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",s),this.editor._emit("findSearchBox",{match:!s}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(l.prototype),t.SearchBox=l,t.Search=function(e,t){var n=e.searchBox||new l(e);n.show(e.session.getTextRange(),t)}}),ace.define("ace/ext/old_ie",["require","exports","module","ace/lib/useragent","ace/tokenizer","ace/ext/searchbox","ace/mode/text"],function(require,exports,module){"use strict";function patch(obj,name,regexp,replacement){eval("obj['"+name+"']="+obj[name].toString().replace(regexp,replacement))}var MAX_TOKEN_COUNT=1e3,useragent=require("../lib/useragent"),TokenizerModule=require("../tokenizer");useragent.isIE&&useragent.isIE<10&&window.top.document.compatMode==="BackCompat"&&(useragent.isOldIE=!0);if(typeof document!="undefined"&&!document.documentElement.querySelector){useragent.isOldIE=!0;var qs=function(e,t){if(t.charAt(0)==".")var n=t.slice(1);else var r=t.match(/(\w+)=(\w+)/),i=r&&r[1],s=r&&r[2];for(var o=0;o<e.all.length;o++){var u=e.all[o];if(n){if(u.className.indexOf(n)!=-1)return u}else if(i&&u.getAttribute(i)==s)return u}},sb=require("./searchbox").SearchBox.prototype;patch(sb,"$initElements",/([^\s=]*).querySelector\((".*?")\)/g,"qs($1, $2)")}var compliantExecNpcg=/()??/.exec("")[1]===undefined;if(compliantExecNpcg)return;var proto=TokenizerModule.Tokenizer.prototype;TokenizerModule.Tokenizer_orig=TokenizerModule.Tokenizer,proto.getLineTokens_orig=proto.getLineTokens,patch(TokenizerModule,"Tokenizer","ruleRegExps.push(adjustedregex);\n",function(e){return e+' if (state[i].next && RegExp(adjustedregex).test(""))\n rule._qre = RegExp(adjustedregex, "g");\n '}),TokenizerModule.Tokenizer.prototype=proto,patch(proto,"getLineTokens",/if \(match\[i \+ 1\] === undefined\)\s*continue;/,"if (!match[i + 1]) {\n if (value)continue;\n var qre = state[mapping[i]]._qre;\n if (!qre) continue;\n qre.lastIndex = lastIndex;\n if (!qre.exec(line) || qre.lastIndex != lastIndex)\n continue;\n }"),patch(require("../mode/text").Mode.prototype,"getTokenizer",/Tokenizer/,"TokenizerModule.Tokenizer"),useragent.isOldIE=!0});
+ (function() {
+ ace.require(["ace/ext/old_ie"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-searchbox.js b/library/ace/ext-searchbox.js
new file mode 100644
index 000000000..e677a0515
--- /dev/null
+++ b/library/ace/ext-searchbox.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/lang"),s=e("../lib/event"),o=".ace_search {background-color: #ddd;border: 1px solid #cbcbcb;border-top: 0 none;max-width: 325px;overflow: hidden;margin: 0;padding: 4px;padding-right: 6px;padding-bottom: 0;position: absolute;top: 0px;z-index: 99;white-space: normal;}.ace_search.left {border-left: 0 none;border-radius: 0px 0px 5px 0px;left: 0;}.ace_search.right {border-radius: 0px 0px 0px 5px;border-right: 0 none;right: 0;}.ace_search_form, .ace_replace_form {border-radius: 3px;border: 1px solid #cbcbcb;float: left;margin-bottom: 4px;overflow: hidden;}.ace_search_form.ace_nomatch {outline: 1px solid red;}.ace_search_field {background-color: white;border-right: 1px solid #cbcbcb;border: 0 none;-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;float: left;height: 22px;outline: 0;padding: 0 7px;width: 214px;margin: 0;}.ace_searchbtn,.ace_replacebtn {background: #fff;border: 0 none;border-left: 1px solid #dcdcdc;cursor: pointer;float: left;height: 22px;margin: 0;position: relative;}.ace_searchbtn:last-child,.ace_replacebtn:last-child {border-top-right-radius: 3px;border-bottom-right-radius: 3px;}.ace_searchbtn:disabled {background: none;cursor: default;}.ace_searchbtn {background-position: 50% 50%;background-repeat: no-repeat;width: 27px;}.ace_searchbtn.prev {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); }.ace_searchbtn.next {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); }.ace_searchbtn_close {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;border-radius: 50%;border: 0 none;color: #656565;cursor: pointer;float: right;font: 16px/16px Arial;height: 14px;margin: 5px 1px 9px 5px;padding: 0;text-align: center;width: 14px;}.ace_searchbtn_close:hover {background-color: #656565;background-position: 50% 100%;color: white;}.ace_replacebtn.prev {width: 54px}.ace_replacebtn.next {width: 27px}.ace_button {margin-left: 2px;cursor: pointer;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;overflow: hidden;opacity: 0.7;border: 1px solid rgba(100,100,100,0.23);padding: 1px;-moz-box-sizing: border-box;box-sizing: border-box;color: black;}.ace_button:hover {background-color: #eee;opacity:1;}.ace_button:active {background-color: #ddd;}.ace_button.checked {border-color: #3399ff;opacity:1;}.ace_search_options{margin-bottom: 3px;text-align: right;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;}",u=e("../keyboard/hash_handler").HashHandler,a=e("../lib/keys");r.importCssString(o,"ace_searchbox");var f='<div class="ace_search right"> <button type="button" action="hide" class="ace_searchbtn_close"></button> <div class="ace_search_form"> <input class="ace_search_field" placeholder="Search for" spellcheck="false"></input> <button type="button" action="findNext" class="ace_searchbtn next"></button> <button type="button" action="findPrev" class="ace_searchbtn prev"></button> <button type="button" action="findAll" class="ace_searchbtn" title="Alt-Enter">All</button> </div> <div class="ace_replace_form"> <input class="ace_search_field" placeholder="Replace with" spellcheck="false"></input> <button type="button" action="replaceAndFindNext" class="ace_replacebtn">Replace</button> <button type="button" action="replaceAll" class="ace_replacebtn">All</button> </div> <div class="ace_search_options"> <span action="toggleRegexpMode" class="ace_button" title="RegExp Search">.*</span> <span action="toggleCaseSensitive" class="ace_button" title="CaseSensitive Search">Aa</span> <span action="toggleWholeWords" class="ace_button" title="Whole Word Search">\\b</span> </div></div>'.replace(/>\s+/g,">"),l=function(e,t,n){var i=r.createElement("div");i.innerHTML=f,this.element=i.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;s.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),s.stopPropagation(e)}),s.addListener(e,"click",function(e){var n=e.target||e.srcElement,r=n.getAttribute("action");r&&t[r]?t[r]():t.$searchBarKb.commands[r]&&t.$searchBarKb.commands[r].exec(t),s.stopPropagation(e)}),s.addCommandKeyListener(e,function(e,n,r){var i=a.keyCodeToString(r),o=t.$searchBarKb.findKeyCommand(n,i);o&&o.exec&&(o.exec(t),s.stopEvent(e))}),this.$onChange=i.delayedCall(function(){t.find(!1,!1)}),s.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),s.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),s.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new u([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new u,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){r.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),r.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),r.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,n){var i=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:n}),s=!i&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",s),this.editor._emit("findSearchBox",{match:!s}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(l.prototype),t.SearchBox=l,t.Search=function(e,t){var n=e.searchBox||new l(e);n.show(e.session.getTextRange(),t)}});
+ (function() {
+ ace.require(["ace/ext/searchbox"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-settings_menu.js b/library/ace/ext-settings_menu.js
new file mode 100644
index 000000000..a005f7617
--- /dev/null
+++ b/library/ace/ext-settings_menu.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/menu_tools/element_generator",["require","exports","module"],function(e,t,n){"use strict";n.exports.createOption=function(t){var n,r=document.createElement("option");for(n in t)t.hasOwnProperty(n)&&(n==="selected"?r.setAttribute(n,t[n]):r[n]=t[n]);return r},n.exports.createCheckbox=function(t,n,r){var i=document.createElement("input");return i.setAttribute("type","checkbox"),i.setAttribute("id",t),i.setAttribute("name",t),i.setAttribute("value",n),i.setAttribute("class",r),n&&i.setAttribute("checked","checked"),i},n.exports.createInput=function(t,n,r){var i=document.createElement("input");return i.setAttribute("type","text"),i.setAttribute("id",t),i.setAttribute("name",t),i.setAttribute("value",n),i.setAttribute("class",r),i},n.exports.createLabel=function(t,n){var r=document.createElement("label");return r.setAttribute("for",n),r.textContent=t,r},n.exports.createSelection=function(t,r,i){var s=document.createElement("select");return s.setAttribute("id",t),s.setAttribute("name",t),s.setAttribute("class",i),r.forEach(function(e){s.appendChild(n.exports.createOption(e))}),s}}),ace.define("ace/ext/modelist",["require","exports","module"],function(e,t,n){"use strict";function i(e){var t=a.text,n=e.split(/[\/\\]/).pop();for(var i=0;i<r.length;i++)if(r[i].supportsFile(n)){t=r[i];break}return t}var r=[],s=function(e,t,n){this.name=e,this.caption=t,this.mode="ace/mode/"+e,this.extensions=n;var r;/\^/.test(n)?r=n.replace(/\|(\^)?/g,function(e,t){return"$|"+(t?"^":"^.*\\.")})+"$":r="^.*\\.("+n+")$",this.extRe=new RegExp(r,"gi")};s.prototype.supportsFile=function(e){return e.match(this.extRe)};var o={ABAP:["abap"],ABC:["abc"],ActionScript:["as"],ADA:["ada|adb"],Apache_Conf:["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"],AsciiDoc:["asciidoc|adoc"],Assembly_x86:["asm|a"],AutoHotKey:["ahk"],BatchFile:["bat|cmd"],C_Cpp:["cpp|c|cc|cxx|h|hh|hpp|ino"],C9Search:["c9search_results"],Cirru:["cirru|cr"],Clojure:["clj|cljs"],Cobol:["CBL|COB"],coffee:["coffee|cf|cson|^Cakefile"],ColdFusion:["cfm"],CSharp:["cs"],CSS:["css"],Curly:["curly"],D:["d|di"],Dart:["dart"],Diff:["diff|patch"],Dockerfile:["^Dockerfile"],Dot:["dot"],Dummy:["dummy"],DummySyntax:["dummy"],Eiffel:["e|ge"],EJS:["ejs"],Elixir:["ex|exs"],Elm:["elm"],Erlang:["erl|hrl"],Forth:["frt|fs|ldr"],Fortran:["f|f90"],FTL:["ftl"],Gcode:["gcode"],Gherkin:["feature"],Gitignore:["^.gitignore"],Glsl:["glsl|frag|vert"],Gobstones:["gbs"],golang:["go"],Groovy:["groovy"],HAML:["haml"],Handlebars:["hbs|handlebars|tpl|mustache"],Haskell:["hs"],haXe:["hx"],HTML:["html|htm|xhtml"],HTML_Elixir:["eex|html.eex"],HTML_Ruby:["erb|rhtml|html.erb"],INI:["ini|conf|cfg|prefs"],Io:["io"],Jack:["jack"],Jade:["jade"],Java:["java"],JavaScript:["js|jsm|jsx"],JSON:["json"],JSONiq:["jq"],JSP:["jsp"],JSX:["jsx"],Julia:["jl"],LaTeX:["tex|latex|ltx|bib"],Lean:["lean|hlean"],LESS:["less"],Liquid:["liquid"],Lisp:["lisp"],LiveScript:["ls"],LogiQL:["logic|lql"],LSL:["lsl"],Lua:["lua"],LuaPage:["lp"],Lucene:["lucene"],Makefile:["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"],Markdown:["md|markdown"],Mask:["mask"],MATLAB:["matlab"],Maze:["mz"],MEL:["mel"],MUSHCode:["mc|mush"],MySQL:["mysql"],Nix:["nix"],NSIS:["nsi|nsh"],ObjectiveC:["m|mm"],OCaml:["ml|mli"],Pascal:["pas|p"],Perl:["pl|pm"],pgSQL:["pgsql"],PHP:["php|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"],Powershell:["ps1"],Praat:["praat|praatscript|psc|proc"],Prolog:["plg|prolog"],Properties:["properties"],Protobuf:["proto"],Python:["py"],R:["r"],Razor:["cshtml"],RDoc:["Rd"],RHTML:["Rhtml"],RST:["rst"],Ruby:["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"],Rust:["rs"],SASS:["sass"],SCAD:["scad"],Scala:["scala"],Scheme:["scm|sm|rkt|oak|scheme"],SCSS:["scss"],SH:["sh|bash|^.bashrc"],SJS:["sjs"],Smarty:["smarty|tpl"],snippets:["snippets"],Soy_Template:["soy"],Space:["space"],SQL:["sql"],SQLServer:["sqlserver"],Stylus:["styl|stylus"],SVG:["svg"],Swift:["swift"],Tcl:["tcl"],Tex:["tex"],Text:["txt"],Textile:["textile"],Toml:["toml"],Twig:["twig|swig"],Typescript:["ts|typescript|str"],Vala:["vala"],VBScript:["vbs|vb"],Velocity:["vm"],Verilog:["v|vh|sv|svh"],VHDL:["vhd|vhdl"],Wollok:["wlk|wpgm|wtest"],XML:["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"],XQuery:["xq"],YAML:["yaml|yml"],Django:["html"]},u={ObjectiveC:"Objective-C",CSharp:"C#",golang:"Go",C_Cpp:"C and C++",coffee:"CoffeeScript",HTML_Ruby:"HTML (Ruby)",HTML_Elixir:"HTML (Elixir)",FTL:"FreeMarker"},a={};for(var f in o){var l=o[f],c=(u[f]||f).replace(/_/g," "),h=f.toLowerCase(),p=new s(h,c,l[0]);a[h]=p,r.push(p)}n.exports={getModeForPath:i,modes:r,modesByName:a}}),ace.define("ace/ext/themelist",["require","exports","module","ace/lib/fixoldbrowsers"],function(e,t,n){"use strict";e("ace/lib/fixoldbrowsers");var r=[["Chrome"],["Clouds"],["Crimson Editor"],["Dawn"],["Dreamweaver"],["Eclipse"],["GitHub"],["IPlastic"],["Solarized Light"],["TextMate"],["Tomorrow"],["XCode"],["Kuroir"],["KatzenMilch"],["SQL Server","sqlserver","light"],["Ambiance","ambiance","dark"],["Chaos","chaos","dark"],["Clouds Midnight","clouds_midnight","dark"],["Cobalt","cobalt","dark"],["idle Fingers","idle_fingers","dark"],["krTheme","kr_theme","dark"],["Merbivore","merbivore","dark"],["Merbivore Soft","merbivore_soft","dark"],["Mono Industrial","mono_industrial","dark"],["Monokai","monokai","dark"],["Pastel on dark","pastel_on_dark","dark"],["Solarized Dark","solarized_dark","dark"],["Terminal","terminal","dark"],["Tomorrow Night","tomorrow_night","dark"],["Tomorrow Night Blue","tomorrow_night_blue","dark"],["Tomorrow Night Bright","tomorrow_night_bright","dark"],["Tomorrow Night 80s","tomorrow_night_eighties","dark"],["Twilight","twilight","dark"],["Vibrant Ink","vibrant_ink","dark"]];t.themesByName={},t.themes=r.map(function(e){var n=e[1]||e[0].replace(/ /g,"_").toLowerCase(),r={caption:e[0],theme:"ace/theme/"+n,isDark:e[2]=="dark",name:n};return t.themesByName[n]=r,r})}),ace.define("ace/ext/menu_tools/add_editor_menu_options",["require","exports","module","ace/ext/modelist","ace/ext/themelist"],function(e,t,n){"use strict";n.exports.addEditorMenuOptions=function(n){var r=e("../modelist"),i=e("../themelist");n.menuOptions={setNewLineMode:[{textContent:"unix",value:"unix"},{textContent:"windows",value:"windows"},{textContent:"auto",value:"auto"}],setTheme:[],setMode:[],setKeyboardHandler:[{textContent:"ace",value:""},{textContent:"vim",value:"ace/keyboard/vim"},{textContent:"emacs",value:"ace/keyboard/emacs"},{textContent:"textarea",value:"ace/keyboard/textarea"},{textContent:"sublime",value:"ace/keyboard/sublime"}]},n.menuOptions.setTheme=i.themes.map(function(e){return{textContent:e.caption,value:e.theme}}),n.menuOptions.setMode=r.modes.map(function(e){return{textContent:e.name,value:e.mode}})}}),ace.define("ace/ext/menu_tools/get_set_functions",["require","exports","module"],function(e,t,n){"use strict";n.exports.getSetFunctions=function(t){var n=[],r={editor:t,session:t.session,renderer:t.renderer},i=[],s=["setOption","setUndoManager","setDocument","setValue","setBreakpoints","setScrollTop","setScrollLeft","setSelectionStyle","setWrapLimitRange"];return["renderer","session","editor"].forEach(function(e){var t=r[e],o=e;for(var u in t)s.indexOf(u)===-1&&/^set/.test(u)&&i.indexOf(u)===-1&&(i.push(u),n.push({functionName:u,parentObj:t,parentName:o}))}),n}}),ace.define("ace/ext/menu_tools/generate_settings_menu",["require","exports","module","ace/ext/menu_tools/element_generator","ace/ext/menu_tools/add_editor_menu_options","ace/ext/menu_tools/get_set_functions","ace/ace"],function(e,t,n){"use strict";var r=e("./element_generator"),i=e("./add_editor_menu_options").addEditorMenuOptions,s=e("./get_set_functions").getSetFunctions;n.exports.generateSettingsMenu=function(n){function u(){o.sort(function(e,t){var n=e.getAttribute("contains"),r=t.getAttribute("contains");return n.localeCompare(r)})}function a(){var t=document.createElement("div");t.setAttribute("id","ace_settingsmenu"),o.forEach(function(e){t.appendChild(e)});var n=t.appendChild(document.createElement("div")),r=e("../../ace").version;return n.style.padding="1em",n.textContent="Ace version "+r,t}function f(e,t,i,s){var o,u=document.createElement("div");return u.setAttribute("contains",i),u.setAttribute("class","ace_optionsMenuEntry"),u.setAttribute("style","clear: both;"),u.appendChild(r.createLabel(i.replace(/^set/,"").replace(/([A-Z])/g," $1").trim(),i)),Array.isArray(s)?(o=r.createSelection(i,s,t),o.addEventListener("change",function(t){try{n.menuOptions[t.target.id].forEach(function(e){e.textContent!==t.target.textContent&&delete e.selected}),e[t.target.id](t.target.value)}catch(r){throw new Error(r)}})):typeof s=="boolean"?(o=r.createCheckbox(i,s,t),o.addEventListener("change",function(t){try{e[t.target.id](!!t.target.checked)}catch(n){throw new Error(n)}})):(o=r.createInput(i,s,t),o.addEventListener("change",function(t){try{t.target.value==="true"?e[t.target.id](!0):t.target.value==="false"?e[t.target.id](!1):e[t.target.id](t.target.value)}catch(n){throw new Error(n)}})),o.style.cssText="float:right;",u.appendChild(o),u}function l(e,t,r,i){var s=n.menuOptions[e],o=t[i]();return typeof o=="object"&&(o=o.$id),s.forEach(function(e){e.value===o&&(e.selected="selected")}),f(t,r,e,s)}function c(e){var t=e.functionName,r=e.parentObj,i=e.parentName,s,u=t.replace(/^set/,"get");if(n.menuOptions[t]!==undefined)o.push(l(t,r,i,u));else if(typeof r[u]=="function")try{s=r[u](),typeof s=="object"&&(s=s.$id),o.push(f(r,i,t,s))}catch(a){}}var o=[];return i(n),s(n).forEach(function(e){c(e)}),u(),a()}}),ace.define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../../lib/dom"),i="#ace_settingsmenu, #kbshortcutmenu {background-color: #F7F7F7;color: black;box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);padding: 1em 0.5em 2em 1em;overflow: auto;position: absolute;margin: 0;bottom: 0;right: 0;top: 0;z-index: 9991;cursor: default;}.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);background-color: rgba(255, 255, 255, 0.6);color: black;}.ace_optionsMenuEntry:hover {background-color: rgba(100, 100, 100, 0.1);-webkit-transition: all 0.5s;transition: all 0.3s}.ace_closeButton {background: rgba(245, 146, 146, 0.5);border: 1px solid #F48A8A;border-radius: 50%;padding: 7px;position: absolute;right: -8px;top: -8px;z-index: 1000;}.ace_closeButton{background: rgba(245, 146, 146, 0.9);}.ace_optionsMenuKey {color: darkslateblue;font-weight: bold;}.ace_optionsMenuCommand {color: darkcyan;font-weight: normal;}";r.importCssString(i),n.exports.overlayPage=function(t,n,i,s,o,u){function l(e){e.keyCode===27&&a.click()}i=i?"top: "+i+";":"",o=o?"bottom: "+o+";":"",s=s?"right: "+s+";":"",u=u?"left: "+u+";":"";var a=document.createElement("div"),f=document.createElement("div");a.style.cssText="margin: 0; padding: 0; position: fixed; top:0; bottom:0; left:0; right:0;z-index: 9990; background-color: rgba(0, 0, 0, 0.3);",a.addEventListener("click",function(){document.removeEventListener("keydown",l),a.parentNode.removeChild(a),t.focus(),a=null}),document.addEventListener("keydown",l),f.style.cssText=i+s+o+u,f.addEventListener("click",function(e){e.stopPropagation()});var c=r.createElement("div");c.style.position="relative";var h=r.createElement("div");h.className="ace_closeButton",h.addEventListener("click",function(){a.click()}),c.appendChild(h),f.appendChild(c),f.appendChild(n),a.appendChild(f),document.body.appendChild(a),t.blur()}}),ace.define("ace/ext/settings_menu",["require","exports","module","ace/ext/menu_tools/generate_settings_menu","ace/ext/menu_tools/overlay_page","ace/editor"],function(e,t,n){"use strict";function s(e){var t=document.getElementById("ace_settingsmenu");t||i(e,r(e),"0","0","0")}var r=e("./menu_tools/generate_settings_menu").generateSettingsMenu,i=e("./menu_tools/overlay_page").overlayPage;n.exports.init=function(t){var n=e("ace/editor").Editor;n.prototype.showSettingsMenu=function(){s(this)}}});
+ (function() {
+ ace.require(["ace/ext/settings_menu"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-spellcheck.js b/library/ace/ext-spellcheck.js
new file mode 100644
index 000000000..15c0f86f1
--- /dev/null
+++ b/library/ace/ext-spellcheck.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/spellcheck",["require","exports","module","ace/lib/event","ace/editor","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event");t.contextMenuHandler=function(e){var t=e.target,n=t.textInput.getElement();if(!t.selection.isEmpty())return;var i=t.getCursorPosition(),s=t.session.getWordRange(i.row,i.column),o=t.session.getTextRange(s);t.session.tokenRe.lastIndex=0;if(!t.session.tokenRe.test(o))return;var u="",a=o+" "+u;n.value=a,n.setSelectionRange(o.length,o.length+1),n.setSelectionRange(0,0),n.setSelectionRange(0,o.length);var f=!1;r.addListener(n,"keydown",function l(){r.removeListener(n,"keydown",l),f=!0}),t.textInput.setInputHandler(function(e){console.log(e,a,n.selectionStart,n.selectionEnd);if(e==a)return"";if(e.lastIndexOf(a,0)===0)return e.slice(a.length);if(e.substr(n.selectionEnd)==a)return e.slice(0,-a.length);if(e.slice(-2)==u){var r=e.slice(0,-2);if(r.slice(-1)==" ")return f?r.substring(0,n.selectionEnd):(r=r.slice(0,-1),t.session.replace(s,r),"")}return e})};var i=e("../editor").Editor;e("../config").defineOptions(i.prototype,"editor",{spellcheck:{set:function(e){var n=this.textInput.getElement();n.spellcheck=!!e,e?this.on("nativecontextmenu",t.contextMenuHandler):this.removeListener("nativecontextmenu",t.contextMenuHandler)},value:!0}})});
+ (function() {
+ ace.require(["ace/ext/spellcheck"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-split.js b/library/ace/ext-split.js
new file mode 100644
index 000000000..31b3ee7cd
--- /dev/null
+++ b/library/ace/ext-split.js
@@ -0,0 +1,5 @@
+ace.define("ace/split",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/editor","ace/virtual_renderer","ace/edit_session"],function(e,t,n){"use strict";function l(e,t){this.$u=e,this.$doc=t}var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./lib/event_emitter").EventEmitter,o=e("./editor").Editor,u=e("./virtual_renderer").VirtualRenderer,a=e("./edit_session").EditSession,f=function(e,t,n){this.BELOW=1,this.BESIDE=0,this.$container=e,this.$theme=t,this.$splits=0,this.$editorCSS="",this.$editors=[],this.$orientation=this.BESIDE,this.setSplits(n||1),this.$cEditor=this.$editors[0],this.on("focus",function(e){this.$cEditor=e}.bind(this))};(function(){r.implement(this,s),this.$createEditor=function(){var e=document.createElement("div");e.className=this.$editorCSS,e.style.cssText="position: absolute; top:0px; bottom:0px",this.$container.appendChild(e);var t=new o(new u(e,this.$theme));return t.on("focus",function(){this._emit("focus",t)}.bind(this)),this.$editors.push(t),t.setFontSize(this.$fontSize),t},this.setSplits=function(e){var t;if(e<1)throw"The number of splits have to be > 0!";if(e==this.$splits)return;if(e>this.$splits){while(this.$splits<this.$editors.length&&this.$splits<e)t=this.$editors[this.$splits],this.$container.appendChild(t.container),t.setFontSize(this.$fontSize),this.$splits++;while(this.$splits<e)this.$createEditor(),this.$splits++}else while(this.$splits>e)t=this.$editors[this.$splits-1],this.$container.removeChild(t.container),this.$splits--;this.resize()},this.getSplits=function(){return this.$splits},this.getEditor=function(e){return this.$editors[e]},this.getCurrentEditor=function(){return this.$cEditor},this.focus=function(){this.$cEditor.focus()},this.blur=function(){this.$cEditor.blur()},this.setTheme=function(e){this.$editors.forEach(function(t){t.setTheme(e)})},this.setKeyboardHandler=function(e){this.$editors.forEach(function(t){t.setKeyboardHandler(e)})},this.forEach=function(e,t){this.$editors.forEach(e,t)},this.$fontSize="",this.setFontSize=function(e){this.$fontSize=e,this.forEach(function(t){t.setFontSize(e)})},this.$cloneSession=function(e){var t=new a(e.getDocument(),e.getMode()),n=e.getUndoManager();if(n){var r=new l(n,t);t.setUndoManager(r)}return t.$informUndoManager=i.delayedCall(function(){t.$deltas=[]}),t.setTabSize(e.getTabSize()),t.setUseSoftTabs(e.getUseSoftTabs()),t.setOverwrite(e.getOverwrite()),t.setBreakpoints(e.getBreakpoints()),t.setUseWrapMode(e.getUseWrapMode()),t.setUseWorker(e.getUseWorker()),t.setWrapLimitRange(e.$wrapLimitRange.min,e.$wrapLimitRange.max),t.$foldData=e.$cloneFoldData(),t},this.setSession=function(e,t){var n;t==null?n=this.$cEditor:n=this.$editors[t];var r=this.$editors.some(function(t){return t.session===e});return r&&(e=this.$cloneSession(e)),n.setSession(e),e},this.getOrientation=function(){return this.$orientation},this.setOrientation=function(e){if(this.$orientation==e)return;this.$orientation=e,this.resize()},this.resize=function(){var e=this.$container.clientWidth,t=this.$container.clientHeight,n;if(this.$orientation==this.BESIDE){var r=e/this.$splits;for(var i=0;i<this.$splits;i++)n=this.$editors[i],n.container.style.width=r+"px",n.container.style.top="0px",n.container.style.left=i*r+"px",n.container.style.height=t+"px",n.resize()}else{var s=t/this.$splits;for(var i=0;i<this.$splits;i++)n=this.$editors[i],n.container.style.width=e+"px",n.container.style.top=i*s+"px",n.container.style.left="0px",n.container.style.height=s+"px",n.resize()}}}).call(f.prototype),function(){this.execute=function(e){this.$u.execute(e)},this.undo=function(){var e=this.$u.undo(!0);e&&this.$doc.selection.setSelectionRange(e)},this.redo=function(){var e=this.$u.redo(!0);e&&this.$doc.selection.setSelectionRange(e)},this.reset=function(){this.$u.reset()},this.hasUndo=function(){return this.$u.hasUndo()},this.hasRedo=function(){return this.$u.hasRedo()}}.call(l.prototype),t.Split=f}),ace.define("ace/ext/split",["require","exports","module","ace/split"],function(e,t,n){"use strict";n.exports=e("../split")});
+ (function() {
+ ace.require(["ace/ext/split"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-static_highlight.js b/library/ace/ext-static_highlight.js
new file mode 100644
index 000000000..46fe45d1d
--- /dev/null
+++ b/library/ace/ext-static_highlight.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/static_highlight",["require","exports","module","ace/edit_session","ace/layer/text","ace/config","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../edit_session").EditSession,i=e("../layer/text").Text,s=".ace_static_highlight {font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', 'Droid Sans Mono', monospace;font-size: 12px;white-space: pre-wrap}.ace_static_highlight .ace_gutter {width: 2em;text-align: right;padding: 0 3px 0 0;margin-right: 3px;}.ace_static_highlight.ace_show_gutter .ace_line {padding-left: 2.6em;}.ace_static_highlight .ace_line { position: relative; }.ace_static_highlight .ace_gutter-cell {-moz-user-select: -moz-none;-khtml-user-select: none;-webkit-user-select: none;user-select: none;top: 0;bottom: 0;left: 0;position: absolute;}.ace_static_highlight .ace_gutter-cell:before {content: counter(ace_line, decimal);counter-increment: ace_line;}.ace_static_highlight {counter-reset: ace_line;}",o=e("../config"),u=e("../lib/dom"),a=function(){this.config={}};a.prototype=i.prototype;var f=function(e,t,n){var r=e.className.match(/lang-(\w+)/),i=t.mode||r&&"ace/mode/"+r[1];if(!i)return!1;var s=t.theme||"ace/theme/textmate",o="",a=[];if(e.firstElementChild){var l=0;for(var c=0;c<e.childNodes.length;c++){var h=e.childNodes[c];h.nodeType==3?(l+=h.data.length,o+=h.data):a.push(l,h)}}else o=u.getInnerText(e),t.trim&&(o=o.trim());f.render(o,i,s,t.firstLineNumber,!t.showGutter,function(t){u.importCssString(t.css,"ace_highlight"),e.innerHTML=t.html;var r=e.firstChild.firstChild;for(var i=0;i<a.length;i+=2){var s=t.session.doc.indexToPosition(a[i]),o=a[i+1],f=r.children[s.row];f&&f.appendChild(o)}n&&n()})};f.render=function(e,t,n,i,s,u){function h(){var r=f.renderSync(e,t,n,i,s);return u?u(r):r}var a=1,l=r.prototype.$modes;typeof n=="string"&&(a++,o.loadModule(["theme",n],function(e){n=e,--a||h()}));var c;return t&&typeof t=="object"&&!t.getTokenizer&&(c=t,t=c.path),typeof t=="string"&&(a++,o.loadModule(["mode",t],function(e){if(!l[t]||c)l[t]=new e.Mode(c);t=l[t],--a||h()})),--a||h()},f.renderSync=function(e,t,n,i,o){i=parseInt(i||1,10);var u=new r("");u.setUseWorker(!1),u.setMode(t);var f=new a;f.setSession(u),u.setValue(e);var l=[],c=u.getLength();for(var h=0;h<c;h++)l.push("<div class='ace_line'>"),o||l.push("<span class='ace_gutter ace_gutter-cell' unselectable='on'></span>"),f.$renderLine(l,h,!0,!1),l.push("\n</div>");var p="<div class='"+n.cssClass+"'>"+"<div class='ace_static_highlight"+(o?"":" ace_show_gutter")+"' style='counter-reset:ace_line "+(i-1)+"'>"+l.join("")+"</div>"+"</div>";return f.destroy(),{css:s+n.cssText,html:p,session:u}},n.exports=f,n.exports.highlight=f});
+ (function() {
+ ace.require(["ace/ext/static_highlight"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-statusbar.js b/library/ace/ext-statusbar.js
new file mode 100644
index 000000000..a5ab7ed95
--- /dev/null
+++ b/library/ace/ext-statusbar.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"],function(e,t,n){"use strict";var r=e("ace/lib/dom"),i=e("ace/lib/lang"),s=function(e,t){this.element=r.createElement("div"),this.element.className="ace_status-indicator",this.element.style.cssText="display: inline-block;",t.appendChild(this.element);var n=i.delayedCall(function(){this.updateStatus(e)}.bind(this)).schedule.bind(null,100);e.on("changeStatus",n),e.on("changeSelection",n),e.on("keyboardActivity",n)};(function(){this.updateStatus=function(e){function n(e,n){e&&t.push(e,n||"|")}var t=[];n(e.keyBinding.getStatusText(e)),e.commands.recording&&n("REC");var r=e.selection,i=r.lead;if(!r.isEmpty()){var s=e.getSelectionRange();n("("+(s.end.row-s.start.row)+":"+(s.end.column-s.start.column)+")"," ")}n(i.row+":"+i.column," "),r.rangeCount&&n("["+r.rangeCount+"]"," "),t.pop(),this.element.textContent=t.join("")}}).call(s.prototype),t.StatusBar=s});
+ (function() {
+ ace.require(["ace/ext/statusbar"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-textarea.js b/library/ace/ext-textarea.js
new file mode 100644
index 000000000..a53935bad
--- /dev/null
+++ b/library/ace/ext-textarea.js
@@ -0,0 +1,5 @@
+ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),ace.define("ace/ext/textarea",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/net","ace/ace","ace/theme/textmate"],function(e,t,n){"use strict";function a(e,t){for(var n in t)e.style[n]=t[n]}function f(e,t){if(e.type!="textarea")throw new Error("Textarea required!");var n=e.parentNode,i=document.createElement("div"),s=function(){var t="position:relative;";["margin-top","margin-left","margin-right","margin-bottom"].forEach(function(n){t+=n+":"+u(e,i,n)+";"});var n=u(e,i,"width")||e.clientWidth+"px",r=u(e,i,"height")||e.clientHeight+"px";t+="height:"+r+";width:"+n+";",t+="display:inline-block;",i.setAttribute("style",t)};r.addListener(window,"resize",s),s(),n.insertBefore(i,e.nextSibling);while(n!==document){if(n.tagName.toUpperCase()==="FORM"){var o=n.onsubmit;n.onsubmit=function(n){e.value=t(),o&&o.call(this,n)};break}n=n.parentNode}return i}function l(t,n,r){s.loadScript(t,function(){e([n],r)})}function c(e,t,n,r,i,s){function a(e){return e==="true"||e==1}var o=e.getSession(),u=e.renderer;return s=s||l,e.setDisplaySettings=function(t){t==null&&(t=n.style.display=="none"),t?(n.style.display="block",n.hideButton.focus(),e.on("focus",function r(){e.removeListener("focus",r),n.style.display="none"})):e.focus()},e.$setOption=e.setOption,e.$getOption=e.getOption,e.setOption=function(t,n){switch(t){case"mode":e.$setOption("mode","ace/mode/"+n);break;case"theme":e.$setOption("theme","ace/theme/"+n);break;case"keybindings":switch(n){case"vim":e.setKeyboardHandler("ace/keyboard/vim");break;case"emacs":e.setKeyboardHandler("ace/keyboard/emacs");break;default:e.setKeyboardHandler(null)}break;case"softWrap":case"fontSize":e.$setOption(t,n);break;default:e.$setOption(t,a(n))}},e.getOption=function(t){switch(t){case"mode":return e.$getOption("mode").substr("ace/mode/".length);case"theme":return e.$getOption("theme").substr("ace/theme/".length);case"keybindings":var n=e.getKeyboardHandler();switch(n&&n.$id){case"ace/keyboard/vim":return"vim";case"ace/keyboard/emacs":return"emacs";default:return"ace"}break;default:return e.$getOption(t)}},e.setOptions(i),e}function h(e,n,i){function f(e,t,n,r){if(!n){e.push("<input type='checkbox' title='",t,"' ",r+""=="true"?"checked='true'":"","'></input>");return}e.push("<select title='"+t+"'>");for(var i in n)e.push("<option value='"+i+"' "),r==i&&e.push(" selected "),e.push(">",n[i],"</option>");e.push("</select>")}var s=null,o={mode:"Mode:",wrap:"Soft Wrap:",theme:"Theme:",fontSize:"Font Size:",showGutter:"Display Gutter:",keybindings:"Keyboard",showPrintMargin:"Show Print Margin:",useSoftTabs:"Use Soft Tabs:",showInvisibles:"Show Invisibles"},u={mode:{text:"Plain",javascript:"JavaScript",xml:"XML",html:"HTML",css:"CSS",scss:"SCSS",python:"Python",php:"PHP",java:"Java",ruby:"Ruby",c_cpp:"C/C++",coffee:"CoffeeScript",json:"json",perl:"Perl",clojure:"Clojure",ocaml:"OCaml",csharp:"C#",haxe:"haXe",svg:"SVG",textile:"Textile",groovy:"Groovy",liquid:"Liquid",Scala:"Scala"},theme:{clouds:"Clouds",clouds_midnight:"Clouds Midnight",cobalt:"Cobalt",crimson_editor:"Crimson Editor",dawn:"Dawn",eclipse:"Eclipse",idle_fingers:"Idle Fingers",kr_theme:"Kr Theme",merbivore:"Merbivore",merbivore_soft:"Merbivore Soft",mono_industrial:"Mono Industrial",monokai:"Monokai",pastel_on_dark:"Pastel On Dark",solarized_dark:"Solarized Dark",solarized_light:"Solarized Light",textmate:"Textmate",twilight:"Twilight",vibrant_ink:"Vibrant Ink"},showGutter:s,fontSize:{"10px":"10px","11px":"11px","12px":"12px","14px":"14px","16px":"16px"},wrap:{off:"Off",40:"40",80:"80",free:"Free"},keybindings:{ace:"ace",vim:"vim",emacs:"emacs"},showPrintMargin:s,useSoftTabs:s,showInvisibles:s},a=[];a.push("<table><tr><th>Setting</th><th>Value</th></tr>");for(var l in t.defaultOptions)a.push("<tr><td>",o[l],"</td>"),a.push("<td>"),f(a,l,u[l],i.getOption(l)),a.push("</td></tr>");a.push("</table>"),e.innerHTML=a.join("");var c=function(e){var t=e.currentTarget;i.setOption(t.title,t.value)},h=function(e){var t=e.currentTarget;i.setOption(t.title,t.checked)},p=e.getElementsByTagName("select");for(var d=0;d<p.length;d++)p[d].onchange=c;var v=e.getElementsByTagName("input");for(var d=0;d<v.length;d++)v[d].onclick=h;var m=document.createElement("input");m.type="button",m.value="Hide",r.addListener(m,"click",function(){i.setDisplaySettings(!1)}),e.appendChild(m),e.hideButton=m}var r=e("../lib/event"),i=e("../lib/useragent"),s=e("../lib/net"),o=e("../ace");e("../theme/textmate"),n.exports=t=o;var u=function(e,t,n){var r=e.style[n];r||(window.getComputedStyle?r=window.getComputedStyle(e,"").getPropertyValue(n):r=e.currentStyle[n]);if(!r||r=="auto"||r=="intrinsic")r=t.style[n];return r};t.transformTextarea=function(e,n){var s,u=f(e,function(){return s.getValue()});e.style.display="none",u.style.background="white";var p=document.createElement("div");a(p,{top:"0px",left:"0px",right:"0px",bottom:"0px",border:"1px solid gray",position:"absolute"}),u.appendChild(p);var d=document.createElement("div");a(d,{position:"absolute",right:"0px",bottom:"0px",background:"red",cursor:"nw-resize",borderStyle:"solid",borderWidth:"9px 8px 10px 9px",width:"2px",borderColor:"lightblue gray gray lightblue",zIndex:101});var v=document.createElement("div"),m={top:"0px",left:"20%",right:"0px",bottom:"0px",position:"absolute",padding:"5px",zIndex:100,color:"white",display:"none",overflow:"auto",fontSize:"14px",boxShadow:"-5px 2px 3px gray"};i.isOldIE?m.backgroundColor="#333":m.backgroundColor="rgba(0, 0, 0, 0.6)",a(v,m),u.appendChild(v),n=n||t.defaultOptions;var g=o.edit(p);s=g.getSession(),s.setValue(e.value||e.innerHTML),g.focus(),u.appendChild(d),c(g,p,v,o,n,l),h(v,d,g);var y="";return r.addListener(d,"mousemove",function(e){var t=this.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;n+r<(t.width+t.height)/2?(this.style.cursor="pointer",y="toggle"):(y="resize",this.style.cursor="nw-resize")}),r.addListener(d,"mousedown",function(e){if(y=="toggle"){g.setDisplaySettings();return}u.style.zIndex=1e5;var t=u.getBoundingClientRect(),n=t.width+t.left-e.clientX,i=t.height+t.top-e.clientY;r.capture(d,function(e){u.style.width=e.clientX-t.left+n+"px",u.style.height=e.clientY-t.top+i+"px",g.resize()},function(){})}),g},t.defaultOptions={mode:"javascript",theme:"textmate",wrap:"off",fontSize:"12px",showGutter:"false",keybindings:"ace",showPrintMargin:"false",useSoftTabs:"true",showInvisibles:"false"}});
+ (function() {
+ ace.require(["ace/ext/textarea"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-themelist.js b/library/ace/ext-themelist.js
new file mode 100644
index 000000000..245c79263
--- /dev/null
+++ b/library/ace/ext-themelist.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/themelist",["require","exports","module","ace/lib/fixoldbrowsers"],function(e,t,n){"use strict";e("ace/lib/fixoldbrowsers");var r=[["Chrome"],["Clouds"],["Crimson Editor"],["Dawn"],["Dreamweaver"],["Eclipse"],["GitHub"],["IPlastic"],["Solarized Light"],["TextMate"],["Tomorrow"],["XCode"],["Kuroir"],["KatzenMilch"],["SQL Server","sqlserver","light"],["Ambiance","ambiance","dark"],["Chaos","chaos","dark"],["Clouds Midnight","clouds_midnight","dark"],["Cobalt","cobalt","dark"],["idle Fingers","idle_fingers","dark"],["krTheme","kr_theme","dark"],["Merbivore","merbivore","dark"],["Merbivore Soft","merbivore_soft","dark"],["Mono Industrial","mono_industrial","dark"],["Monokai","monokai","dark"],["Pastel on dark","pastel_on_dark","dark"],["Solarized Dark","solarized_dark","dark"],["Terminal","terminal","dark"],["Tomorrow Night","tomorrow_night","dark"],["Tomorrow Night Blue","tomorrow_night_blue","dark"],["Tomorrow Night Bright","tomorrow_night_bright","dark"],["Tomorrow Night 80s","tomorrow_night_eighties","dark"],["Twilight","twilight","dark"],["Vibrant Ink","vibrant_ink","dark"]];t.themesByName={},t.themes=r.map(function(e){var n=e[1]||e[0].replace(/ /g,"_").toLowerCase(),r={caption:e[0],theme:"ace/theme/"+n,isDark:e[2]=="dark",name:n};return t.themesByName[n]=r,r})});
+ (function() {
+ ace.require(["ace/ext/themelist"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/ext-whitespace.js b/library/ace/ext-whitespace.js
new file mode 100644
index 000000000..14af281e7
--- /dev/null
+++ b/library/ace/ext-whitespace.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/whitespace",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang");t.$detectIndentation=function(e,t){function c(e){var t=0;for(var r=e;r<n.length;r+=e)t+=n[r]||0;return t}var n=[],r=[],i=0,s=0,o=Math.min(e.length,1e3);for(var u=0;u<o;u++){var a=e[u];if(!/^\s*[^*+\-\s]/.test(a))continue;if(a[0]==" ")i++,s=-Number.MAX_VALUE;else{var f=a.match(/^ */)[0].length;if(f&&a[f]!=" "){var l=f-s;l>0&&!(s%l)&&!(f%l)&&(r[l]=(r[l]||0)+1),n[f]=(n[f]||0)+1}s=f}while(u<o&&a[a.length-1]=="\\")a=e[u++]}var h=r.reduce(function(e,t){return e+t},0),p={score:0,length:0},d=0;for(var u=1;u<12;u++){var v=c(u);u==1?(d=v,v=n[1]?.9:.8,n.length||(v=0)):v/=d,r[u]&&(v+=r[u]/h),v>p.score&&(p={score:v,length:u})}if(p.score&&p.score>1.4)var m=p.length;if(i>d+1){if(m==1||d<i/4||p.score<1.8)m=undefined;return{ch:" ",length:m}}if(d>i+1)return{ch:" ",length:m}},t.detectIndentation=function(e){var n=e.getLines(0,1e3),r=t.$detectIndentation(n)||{};return r.ch&&e.setUseSoftTabs(r.ch==" "),r.length&&e.setTabSize(r.length),r},t.trimTrailingSpace=function(e,t){var n=e.getDocument(),r=n.getAllLines(),i=t?-1:0;for(var s=0,o=r.length;s<o;s++){var u=r[s],a=u.search(/\s+$/);a>i&&n.removeInLine(s,a,u.length)}},t.convertIndentation=function(e,t,n){var i=e.getTabString()[0],s=e.getTabSize();n||(n=s),t||(t=i);var o=t==" "?t:r.stringRepeat(t,n),u=e.doc,a=u.getAllLines(),f={},l={};for(var c=0,h=a.length;c<h;c++){var p=a[c],d=p.match(/^\s*/)[0];if(d){var v=e.$getStringScreenWidth(d)[0],m=Math.floor(v/s),g=v%s,y=f[m]||(f[m]=r.stringRepeat(o,m));y+=l[g]||(l[g]=r.stringRepeat(" ",g)),y!=d&&(u.removeInLine(c,0,d.length),u.insertInLine({row:c,column:0},y))}}e.setTabSize(n),e.setUseSoftTabs(t==" ")},t.$parseStringArg=function(e){var t={};/t/.test(e)?t.ch=" ":/s/.test(e)&&(t.ch=" ");var n=e.match(/\d+/);return n&&(t.length=parseInt(n[0],10)),t},t.$parseArg=function(e){return e?typeof e=="string"?t.$parseStringArg(e):typeof e.text=="string"?t.$parseStringArg(e.text):e:{}},t.commands=[{name:"detectIndentation",exec:function(e){t.detectIndentation(e.session)}},{name:"trimTrailingSpace",exec:function(e){t.trimTrailingSpace(e.session)}},{name:"convertIndentation",exec:function(e,n){var r=t.$parseArg(n);t.convertIndentation(e.session,r.ch,r.length)}},{name:"setIndentation",exec:function(e,n){var r=t.$parseArg(n);r.length&&e.session.setTabSize(r.length),r.ch&&e.session.setUseSoftTabs(r.ch==" ")}}]});
+ (function() {
+ ace.require(["ace/ext/whitespace"], function() {});
+ })();
+ \ No newline at end of file
diff --git a/library/ace/keybinding-emacs.js b/library/ace/keybinding-emacs.js
new file mode 100644
index 000000000..aa8433630
--- /dev/null
+++ b/library/ace/keybinding-emacs.js
@@ -0,0 +1 @@
+ace.define("ace/occur",["require","exports","module","ace/lib/oop","ace/range","ace/search","ace/edit_session","ace/search_highlight","ace/lib/dom"],function(e,t,n){"use strict";function a(){}var r=e("./lib/oop"),i=e("./range").Range,s=e("./search").Search,o=e("./edit_session").EditSession,u=e("./search_highlight").SearchHighlight;r.inherits(a,s),function(){this.enter=function(e,t){if(!t.needle)return!1;var n=e.getCursorPosition();this.displayOccurContent(e,t);var r=this.originalToOccurPosition(e.session,n);return e.moveCursorToPosition(r),!0},this.exit=function(e,t){var n=t.translatePosition&&e.getCursorPosition(),r=n&&this.occurToOriginalPosition(e.session,n);return this.displayOriginalContent(e),r&&e.moveCursorToPosition(r),!0},this.highlight=function(e,t){var n=e.$occurHighlight=e.$occurHighlight||e.addDynamicMarker(new u(null,"ace_occur-highlight","text"));n.setRegexp(t),e._emit("changeBackMarker")},this.displayOccurContent=function(e,t){this.$originalSession=e.session;var n=this.matchingLines(e.session,t),r=n.map(function(e){return e.content}),i=new o(r.join("\n"));i.$occur=this,i.$occurMatchingLines=n,e.setSession(i),this.$useEmacsStyleLineStart=this.$originalSession.$useEmacsStyleLineStart,i.$useEmacsStyleLineStart=this.$useEmacsStyleLineStart,this.highlight(i,t.re),i._emit("changeBackMarker")},this.displayOriginalContent=function(e){e.setSession(this.$originalSession),this.$originalSession.$useEmacsStyleLineStart=this.$useEmacsStyleLineStart},this.originalToOccurPosition=function(e,t){var n=e.$occurMatchingLines,r={row:0,column:0};if(!n)return r;for(var i=0;i<n.length;i++)if(n[i].row===t.row)return{row:i,column:t.column};return r},this.occurToOriginalPosition=function(e,t){var n=e.$occurMatchingLines;return!n||!n[t.row]?t:{row:n[t.row].row,column:t.column}},this.matchingLines=function(e,t){t=r.mixin({},t);if(!e||!t.needle)return[];var n=new s;return n.set(t),n.findAll(e).reduce(function(t,n){var r=n.start.row,i=t[t.length-1];return i&&i.row===r?t:t.concat({row:r,content:e.getLine(r)})},[])}}.call(a.prototype);var f=e("./lib/dom");f.importCssString(".ace_occur-highlight {\n border-radius: 4px;\n background-color: rgba(87, 255, 8, 0.25);\n position: absolute;\n z-index: 4;\n -moz-box-sizing: border-box;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n box-shadow: 0 0 4px rgb(91, 255, 50);\n}\n.ace_dark .ace_occur-highlight {\n background-color: rgb(80, 140, 85);\n box-shadow: 0 0 4px rgb(60, 120, 70);\n}\n","incremental-occur-highlighting"),t.Occur=a}),ace.define("ace/commands/occur_commands",["require","exports","module","ace/config","ace/occur","ace/keyboard/hash_handler","ace/lib/oop"],function(e,t,n){function f(){}var r=e("../config"),i=e("../occur").Occur,s={name:"occur",exec:function(e,t){var n=!!e.session.$occur,r=(new i).enter(e,t);r&&!n&&f.installIn(e)},readOnly:!0},o=[{name:"occurexit",bindKey:"esc|Ctrl-G",exec:function(e){var t=e.session.$occur;if(!t)return;t.exit(e,{}),e.session.$occur||f.uninstallFrom(e)},readOnly:!0},{name:"occuraccept",bindKey:"enter",exec:function(e){var t=e.session.$occur;if(!t)return;t.exit(e,{translatePosition:!0}),e.session.$occur||f.uninstallFrom(e)},readOnly:!0}],u=e("../keyboard/hash_handler").HashHandler,a=e("../lib/oop");a.inherits(f,u),function(){this.isOccurHandler=!0,this.attach=function(e){u.call(this,o,e.commands.platform),this.$editor=e};var e=this.handleKeyboard;this.handleKeyboard=function(t,n,r,i){var s=e.call(this,t,n,r,i);return s&&s.command?s:undefined}}.call(f.prototype),f.installIn=function(e){var t=new this;e.keyBinding.addKeyboardHandler(t),e.commands.addCommands(o)},f.uninstallFrom=function(e){e.commands.removeCommands(o);var t=e.getKeyboardHandler();t.isOccurHandler&&e.keyBinding.removeKeyboardHandler(t)},t.occurStartCommand=s}),ace.define("ace/commands/incremental_search_commands",["require","exports","module","ace/config","ace/lib/oop","ace/keyboard/hash_handler","ace/commands/occur_commands"],function(e,t,n){function u(e){this.$iSearch=e}var r=e("../config"),i=e("../lib/oop"),s=e("../keyboard/hash_handler").HashHandler,o=e("./occur_commands").occurStartCommand;t.iSearchStartCommands=[{name:"iSearch",bindKey:{win:"Ctrl-F",mac:"Command-F"},exec:function(e,t){r.loadModule(["core","ace/incremental_search"],function(n){var r=n.iSearch=n.iSearch||new n.IncrementalSearch;r.activate(e,t.backwards),t.jumpToFirstMatch&&r.next(t)})},readOnly:!0},{name:"iSearchBackwards",exec:function(e,t){e.execCommand("iSearch",{backwards:!0})},readOnly:!0},{name:"iSearchAndGo",bindKey:{win:"Ctrl-K",mac:"Command-G"},exec:function(e,t){e.execCommand("iSearch",{jumpToFirstMatch:!0,useCurrentOrPrevSearch:!0})},readOnly:!0},{name:"iSearchBackwardsAndGo",bindKey:{win:"Ctrl-Shift-K",mac:"Command-Shift-G"},exec:function(e){e.execCommand("iSearch",{jumpToFirstMatch:!0,backwards:!0,useCurrentOrPrevSearch:!0})},readOnly:!0}],t.iSearchCommands=[{name:"restartSearch",bindKey:{win:"Ctrl-F",mac:"Command-F"},exec:function(e){e.cancelSearch(!0)}},{name:"searchForward",bindKey:{win:"Ctrl-S|Ctrl-K",mac:"Ctrl-S|Command-G"},exec:function(e,t){t.useCurrentOrPrevSearch=!0,e.next(t)}},{name:"searchBackward",bindKey:{win:"Ctrl-R|Ctrl-Shift-K",mac:"Ctrl-R|Command-Shift-G"},exec:function(e,t){t.useCurrentOrPrevSearch=!0,t.backwards=!0,e.next(t)}},{name:"extendSearchTerm",exec:function(e,t){e.addString(t)}},{name:"extendSearchTermSpace",bindKey:"space",exec:function(e){e.addString(" ")}},{name:"shrinkSearchTerm",bindKey:"backspace",exec:function(e){e.removeChar()}},{name:"confirmSearch",bindKey:"return",exec:function(e){e.deactivate()}},{name:"cancelSearch",bindKey:"esc|Ctrl-G",exec:function(e){e.deactivate(!0)}},{name:"occurisearch",bindKey:"Ctrl-O",exec:function(e){var t=i.mixin({},e.$options);e.deactivate(),o.exec(e.$editor,t)}},{name:"yankNextWord",bindKey:"Ctrl-w",exec:function(e){var t=e.$editor,n=t.selection.getRangeOfMovements(function(e){e.moveCursorWordRight()}),r=t.session.getTextRange(n);e.addString(r)}},{name:"yankNextChar",bindKey:"Ctrl-Alt-y",exec:function(e){var t=e.$editor,n=t.selection.getRangeOfMovements(function(e){e.moveCursorRight()}),r=t.session.getTextRange(n);e.addString(r)}},{name:"recenterTopBottom",bindKey:"Ctrl-l",exec:function(e){e.$editor.execCommand("recenterTopBottom")}},{name:"selectAllMatches",bindKey:"Ctrl-space",exec:function(e){var t=e.$editor,n=t.session.$isearchHighlight,r=n&&n.cache?n.cache.reduce(function(e,t){return e.concat(t?t:[])},[]):[];e.deactivate(!1),r.forEach(t.selection.addRange.bind(t.selection))}},{name:"searchAsRegExp",bindKey:"Alt-r",exec:function(e){e.convertNeedleToRegExp()}}].map(function(e){return e.readOnly=!0,e.isIncrementalSearchCommand=!0,e.scrollIntoView="animate-cursor",e}),i.inherits(u,s),function(){this.attach=function(e){var n=this.$iSearch;s.call(this,t.iSearchCommands,e.commands.platform),this.$commandExecHandler=e.commands.addEventListener("exec",function(t){if(!t.command.isIncrementalSearchCommand)return n.deactivate();t.stopPropagation(),t.preventDefault();var r=e.session.getScrollTop(),i=t.command.exec(n,t.args||{});return e.renderer.scrollCursorIntoView(null,.5),e.renderer.animateScrolling(r),i})},this.detach=function(e){if(!this.$commandExecHandler)return;e.commands.removeEventListener("exec",this.$commandExecHandler),delete this.$commandExecHandler};var e=this.handleKeyboard;this.handleKeyboard=function(t,n,r,i){if((n===1||n===8)&&r==="v"||n===1&&r==="y")return null;var s=e.call(this,t,n,r,i);if(s.command)return s;if(n==-1){var o=this.commands.extendSearchTerm;if(o)return{command:o,args:r}}return!1}}.call(u.prototype),t.IncrementalSearchKeyboardHandler=u}),ace.define("ace/incremental_search",["require","exports","module","ace/lib/oop","ace/range","ace/search","ace/search_highlight","ace/commands/incremental_search_commands","ace/lib/dom","ace/commands/command_manager","ace/editor","ace/config"],function(e,t,n){"use strict";function f(){this.$options={wrap:!1,skipCurrent:!1},this.$keyboardHandler=new a(this)}function l(e){return e instanceof RegExp}function c(e){var t=String(e),n=t.indexOf("/"),r=t.lastIndexOf("/");return{expression:t.slice(n+1,r),flags:t.slice(r+1)}}function h(e,t){try{return new RegExp(e,t)}catch(n){return e}}function p(e){return h(e.expression,e.flags)}var r=e("./lib/oop"),i=e("./range").Range,s=e("./search").Search,o=e("./search_highlight").SearchHighlight,u=e("./commands/incremental_search_commands"),a=u.IncrementalSearchKeyboardHandler;r.inherits(f,s),function(){this.activate=function(e,t){this.$editor=e,this.$startPos=this.$currentPos=e.getCursorPosition(),this.$options.needle="",this.$options.backwards=t,e.keyBinding.addKeyboardHandler(this.$keyboardHandler),this.$originalEditorOnPaste=e.onPaste,e.onPaste=this.onPaste.bind(this),this.$mousedownHandler=e.addEventListener("mousedown",this.onMouseDown.bind(this)),this.selectionFix(e),this.statusMessage(!0)},this.deactivate=function(e){this.cancelSearch(e);var t=this.$editor;t.keyBinding.removeKeyboardHandler(this.$keyboardHandler),this.$mousedownHandler&&(t.removeEventListener("mousedown",this.$mousedownHandler),delete this.$mousedownHandler),t.onPaste=this.$originalEditorOnPaste,this.message("")},this.selectionFix=function(e){e.selection.isEmpty()&&!e.session.$emacsMark&&e.clearSelection()},this.highlight=function(e){var t=this.$editor.session,n=t.$isearchHighlight=t.$isearchHighlight||t.addDynamicMarker(new o(null,"ace_isearch-result","text"));n.setRegexp(e),t._emit("changeBackMarker")},this.cancelSearch=function(e){var t=this.$editor;return this.$prevNeedle=this.$options.needle,this.$options.needle="",e?(t.moveCursorToPosition(this.$startPos),this.$currentPos=this.$startPos):t.pushEmacsMark&&t.pushEmacsMark(this.$startPos,!1),this.highlight(null),i.fromPoints(this.$currentPos,this.$currentPos)},this.highlightAndFindWithNeedle=function(e,t){if(!this.$editor)return null;var n=this.$options;t&&(n.needle=t.call(this,n.needle||"")||"");if(n.needle.length===0)return this.statusMessage(!0),this.cancelSearch(!0);n.start=this.$currentPos;var r=this.$editor.session,s=this.find(r),o=this.$editor.emacsMark?!!this.$editor.emacsMark():!this.$editor.selection.isEmpty();return s&&(n.backwards&&(s=i.fromPoints(s.end,s.start)),this.$editor.selection.setRange(i.fromPoints(o?this.$startPos:s.end,s.end)),e&&(this.$currentPos=s.end),this.highlight(n.re)),this.statusMessage(s),s},this.addString=function(e){return this.highlightAndFindWithNeedle(!1,function(t){if(!l(t))return t+e;var n=c(t);return n.expression+=e,p(n)})},this.removeChar=function(e){return this.highlightAndFindWithNeedle(!1,function(e){if(!l(e))return e.substring(0,e.length-1);var t=c(e);return t.expression=t.expression.substring(0,t.expression.length-1),p(t)})},this.next=function(e){return e=e||{},this.$options.backwards=!!e.backwards,this.$currentPos=this.$editor.getCursorPosition(),this.highlightAndFindWithNeedle(!0,function(t){return e.useCurrentOrPrevSearch&&t.length===0?this.$prevNeedle||"":t})},this.onMouseDown=function(e){return this.deactivate(),!0},this.onPaste=function(e){this.addString(e)},this.convertNeedleToRegExp=function(){return this.highlightAndFindWithNeedle(!1,function(e){return l(e)?e:h(e,"ig")})},this.convertNeedleToString=function(){return this.highlightAndFindWithNeedle(!1,function(e){return l(e)?c(e).expression:e})},this.statusMessage=function(e){var t=this.$options,n="";n+=t.backwards?"reverse-":"",n+="isearch: "+t.needle,n+=e?"":" (not found)",this.message(n)},this.message=function(e){this.$editor.showCommandLine?(this.$editor.showCommandLine(e),this.$editor.focus()):console.log(e)}}.call(f.prototype),t.IncrementalSearch=f;var d=e("./lib/dom");d.importCssString&&d.importCssString(".ace_marker-layer .ace_isearch-result { position: absolute; z-index: 6; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;}div.ace_isearch-result { border-radius: 4px; background-color: rgba(255, 200, 0, 0.5); box-shadow: 0 0 4px rgb(255, 200, 0);}.ace_dark div.ace_isearch-result { background-color: rgb(100, 110, 160); box-shadow: 0 0 4px rgb(80, 90, 140);}","incremental-search-highlighting");var v=e("./commands/command_manager");(function(){this.setupIncrementalSearch=function(e,t){if(this.usesIncrementalSearch==t)return;this.usesIncrementalSearch=t;var n=u.iSearchStartCommands,r=t?"addCommands":"removeCommands";this[r](n)}}).call(v.CommandManager.prototype);var m=e("./editor").Editor;e("./config").defineOptions(m.prototype,"editor",{useIncrementalSearch:{set:function(e){this.keyBinding.$handlers.forEach(function(t){t.setupIncrementalSearch&&t.setupIncrementalSearch(this,e)}),this._emit("incrementalSearchSettingChanged",{isEnabled:e})}}})}),ace.define("ace/keyboard/emacs",["require","exports","module","ace/lib/dom","ace/incremental_search","ace/commands/incremental_search_commands","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,n){"use strict";var r=e("../lib/dom");e("../incremental_search");var i=e("../commands/incremental_search_commands"),s=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.floor((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight);return this.session.screenToDocumentPosition(i,r)},o=e("./hash_handler").HashHandler;t.handler=new o,t.handler.isEmacs=!0,t.handler.$id="ace/keyboard/emacs";var u=!1,a,f;t.handler.attach=function(e){u||(u=!0,r.importCssString(" .emacs-mode .ace_cursor{ border: 1px rgba(50,250,50,0.8) solid!important; -moz-box-sizing: border-box!important; -webkit-box-sizing: border-box!important; box-sizing: border-box!important; background-color: rgba(0,250,0,0.9); opacity: 0.5; } .emacs-mode .ace_hidden-cursors .ace_cursor{ opacity: 1; background-color: transparent; } .emacs-mode .ace_overwrite-cursors .ace_cursor { opacity: 1; background-color: transparent; border-width: 0 0 2px 2px !important; } .emacs-mode .ace_text-layer { z-index: 4 } .emacs-mode .ace_cursor-layer { z-index: 2 }","emacsMode")),a=e.session.$selectLongWords,e.session.$selectLongWords=!0,f=e.session.$useEmacsStyleLineStart,e.session.$useEmacsStyleLineStart=!0,e.session.$emacsMark=null,e.session.$emacsMarkRing=e.session.$emacsMarkRing||[],e.emacsMark=function(){return this.session.$emacsMark},e.setEmacsMark=function(e){this.session.$emacsMark=e},e.pushEmacsMark=function(e,t){var n=this.session.$emacsMark;n&&this.session.$emacsMarkRing.push(n),!e||t?this.setEmacsMark(e):this.session.$emacsMarkRing.push(e)},e.popEmacsMark=function(){var e=this.emacsMark();return e?(this.setEmacsMark(null),e):this.session.$emacsMarkRing.pop()},e.getLastEmacsMark=function(e){return this.session.$emacsMark||this.session.$emacsMarkRing.slice(-1)[0]},e.emacsMarkForSelection=function(e){var t=this.selection,n=this.multiSelect?this.multiSelect.getAllRanges().length:1,r=t.index||0,i=this.session.$emacsMarkRing,s=i.length-(n-r),o=i[s]||t.anchor;return e&&i.splice(s,1,"row"in e&&"column"in e?e:undefined),o},e.on("click",c),e.on("changeSession",l),e.renderer.screenToTextCoordinates=s,e.setStyle("emacs-mode"),e.commands.addCommands(v),t.handler.platform=e.commands.platform,e.$emacsModeHandler=this,e.addEventListener("copy",this.onCopy),e.addEventListener("paste",this.onPaste)},t.handler.detach=function(e){delete e.renderer.screenToTextCoordinates,e.session.$selectLongWords=a,e.session.$useEmacsStyleLineStart=f,e.removeEventListener("click",c),e.removeEventListener("changeSession",l),e.unsetStyle("emacs-mode"),e.commands.removeCommands(v),e.removeEventListener("copy",this.onCopy),e.removeEventListener("paste",this.onPaste),e.$emacsModeHandler=null};var l=function(e){e.oldSession&&(e.oldSession.$selectLongWords=a,e.oldSession.$useEmacsStyleLineStart=f),a=e.session.$selectLongWords,e.session.$selectLongWords=!0,f=e.session.$useEmacsStyleLineStart,e.session.$useEmacsStyleLineStart=!0,e.session.hasOwnProperty("$emacsMark")||(e.session.$emacsMark=null),e.session.hasOwnProperty("$emacsMarkRing")||(e.session.$emacsMarkRing=[])},c=function(e){e.editor.session.$emacsMark=null},h=e("../lib/keys").KEY_MODS,p={C:"ctrl",S:"shift",M:"alt",CMD:"command"},d=["C-S-M-CMD","S-M-CMD","C-M-CMD","C-S-CMD","C-S-M","M-CMD","S-CMD","S-M","C-CMD","C-M","C-S","CMD","M","S","C"];d.forEach(function(e){var t=0;e.split("-").forEach(function(e){t|=h[p[e]]}),p[t]=e.toLowerCase()+"-"}),t.handler.onCopy=function(e,n){if(n.$handlesEmacsOnCopy)return;n.$handlesEmacsOnCopy=!0,t.handler.commands.killRingSave.exec(n),n.$handlesEmacsOnCopy=!1},t.handler.onPaste=function(e,t){t.pushEmacsMark(t.getCursorPosition())},t.handler.bindKey=function(e,t){typeof e=="object"&&(e=e[this.platform]);if(!e)return;var n=this.commandKeyBinding;e.split("|").forEach(function(e){e=e.toLowerCase(),n[e]=t;var r=e.split(" ").slice(0,-1);r.reduce(function(e,t,n){var r=e[n-1]?e[n-1]+" ":"";return e.concat([r+t])},[]).forEach(function(e){n[e]||(n[e]="null")})},this)},t.handler.getStatusText=function(e,t){var n="";return t.count&&(n+=t.count),t.keyChain&&(n+=" "+t.keyChain),n},t.handler.handleKeyboard=function(e,t,n,r){if(r===-1)return undefined;var i=e.editor;i._signal("changeStatus");if(t==-1){i.pushEmacsMark();if(e.count){var s=(new Array(e.count+1)).join(n);return e.count=null,{command:"insertstring",args:s}}}var o=p[t];if(o=="c-"||e.count){var u=parseInt(n[n.length-1]);if(typeof u=="number"&&!isNaN(u))return e.count=Math.max(e.count,0)||0,e.count=10*e.count+u,{command:"null"}}o&&(n=o+n),e.keyChain&&(n=e.keyChain+=" "+n);var a=this.commandKeyBinding[n];e.keyChain=a=="null"?n:"";if(!a)return undefined;if(a==="null")return{command:"null"};if(a==="universalArgument")return e.count=-4,{command:"null"};var f;typeof a!="string"&&(f=a.args,a.command&&(a=a.command),a==="goorselect"&&(a=i.emacsMark()?f[1]:f[0],f=null));if(typeof a=="string"){(a==="insertstring"||a==="splitline"||a==="togglecomment")&&i.pushEmacsMark(),a=this.commands[a]||i.commands.commands[a];if(!a)return undefined}!a.readOnly&&!a.isYank&&(e.lastCommand=null),!a.readOnly&&i.emacsMark()&&i.setEmacsMark(null);if(e.count){var u=e.count;e.count=0;if(!a||!a.handlesCount)return{args:f,command:{exec:function(e,t){for(var n=0;n<u;n++)a.exec(e,t)},multiSelectAction:a.multiSelectAction}};f||(f={}),typeof f=="object"&&(f.count=u)}return{command:a,args:f}},t.emacsKeys={"Up|C-p":{command:"goorselect",args:["golineup","selectup"]},"Down|C-n":{command:"goorselect",args:["golinedown","selectdown"]},"Left|C-b":{command:"goorselect",args:["gotoleft","selectleft"]},"Right|C-f":{command:"goorselect",args:["gotoright","selectright"]},"C-Left|M-b":{command:"goorselect",args:["gotowordleft","selectwordleft"]},"C-Right|M-f":{command:"goorselect",args:["gotowordright","selectwordright"]},"Home|C-a":{command:"goorselect",args:["gotolinestart","selecttolinestart"]},"End|C-e":{command:"goorselect",args:["gotolineend","selecttolineend"]},"C-Home|S-M-,":{command:"goorselect",args:["gotostart","selecttostart"]},"C-End|S-M-.":{command:"goorselect",args:["gotoend","selecttoend"]},"S-Up|S-C-p":"selectup","S-Down|S-C-n":"selectdown","S-Left|S-C-b":"selectleft","S-Right|S-C-f":"selectright","S-C-Left|S-M-b":"selectwordleft","S-C-Right|S-M-f":"selectwordright","S-Home|S-C-a":"selecttolinestart","S-End|S-C-e":"selecttolineend","S-C-Home":"selecttostart","S-C-End":"selecttoend","C-l":"recenterTopBottom","M-s":"centerselection","M-g":"gotoline","C-x C-p":"selectall","C-Down":{command:"goorselect",args:["gotopagedown","selectpagedown"]},"C-Up":{command:"goorselect",args:["gotopageup","selectpageup"]},"PageDown|C-v":{command:"goorselect",args:["gotopagedown","selectpagedown"]},"PageUp|M-v":{command:"goorselect",args:["gotopageup","selectpageup"]},"S-C-Down":"selectpagedown","S-C-Up":"selectpageup","C-s":"iSearch","C-r":"iSearchBackwards","M-C-s":"findnext","M-C-r":"findprevious","S-M-5":"replace",Backspace:"backspace","Delete|C-d":"del","Return|C-m":{command:"insertstring",args:"\n"},"C-o":"splitline","M-d|C-Delete":{command:"killWord",args:"right"},"C-Backspace|M-Backspace|M-Delete":{command:"killWord",args:"left"},"C-k":"killLine","C-y|S-Delete":"yank","M-y":"yankRotate","C-g":"keyboardQuit","C-w|C-S-W":"killRegion","M-w":"killRingSave","C-Space":"setMark","C-x C-x":"exchangePointAndMark","C-t":"transposeletters","M-u":"touppercase","M-l":"tolowercase","M-/":"autocomplete","C-u":"universalArgument","M-;":"togglecomment","C-/|C-x u|S-C--|C-z":"undo","S-C-/|S-C-x u|C--|S-C-z":"redo","C-x r":"selectRectangularRegion","M-x":{command:"focusCommandLine",args:"M-x "}},t.handler.bindKeys(t.emacsKeys),t.handler.addCommands({recenterTopBottom:function(e){var t=e.renderer,n=t.$cursorLayer.getPixelPosition(),r=t.$size.scrollerHeight-t.lineHeight,i=t.scrollTop;Math.abs(n.top-i)<2?i=n.top-r:Math.abs(n.top-i-r*.5)<2?i=n.top:i=n.top-r*.5,e.session.setScrollTop(i)},selectRectangularRegion:function(e){e.multiSelect.toggleBlockSelection()},setMark:{exec:function(e,t){function u(){var t=e.popEmacsMark();t&&e.moveCursorToPosition(t)}if(t&&t.count){e.inMultiSelectMode?e.forEachSelection(u):u(),u();return}var n=e.emacsMark(),r=e.selection.getAllRanges(),i=r.map(function(e){return{row:e.start.row,column:e.start.column}}),s=!0,o=r.every(function(e){return e.isEmpty()});if(s&&(n||!o)){e.inMultiSelectMode?e.forEachSelection({exec:e.clearSelection.bind(e)}):e.clearSelection(),n&&e.pushEmacsMark(null);return}if(!n){i.forEach(function(t){e.pushEmacsMark(t)}),e.setEmacsMark(i[i.length-1]);return}},readOnly:!0,handlesCount:!0},exchangePointAndMark:{exec:function(t,n){var r=t.selection;if(!n.count&&!r.isEmpty()){r.setSelectionRange(r.getRange(),!r.isBackwards());return}if(n.count){var i={row:r.lead.row,column:r.lead.column};r.clearSelection(),r.moveCursorToPosition(t.emacsMarkForSelection(i))}else r.selectToPosition(t.emacsMarkForSelection())},readOnly:!0,handlesCount:!0,multiSelectAction:"forEach"},killWord:{exec:function(e,n){e.clearSelection(),n=="left"?e.selection.selectWordLeft():e.selection.selectWordRight();var r=e.getSelectionRange(),i=e.session.getTextRange(r);t.killRing.add(i),e.session.remove(r),e.clearSelection()},multiSelectAction:"forEach"},killLine:function(e){e.pushEmacsMark(null),e.clearSelection();var n=e.getSelectionRange(),r=e.session.getLine(n.start.row);n.end.column=r.length,r=r.substr(n.start.column);var i=e.session.getFoldLine(n.start.row);i&&n.end.row!=i.end.row&&(n.end.row=i.end.row,r="x"),/^\s*$/.test(r)&&(n.end.row++,r=e.session.getLine(n.end.row),n.end.column=/^\s*$/.test(r)?r.length:0);var s=e.session.getTextRange(n);e.prevOp.command==this?t.killRing.append(s):t.killRing.add(s),e.session.remove(n),e.clearSelection()},yank:function(e){e.onPaste(t.killRing.get()||""),e.keyBinding.$data.lastCommand="yank"},yankRotate:function(e){if(e.keyBinding.$data.lastCommand!="yank")return;e.undo(),e.session.$emacsMarkRing.pop(),e.onPaste(t.killRing.rotate()),e.keyBinding.$data.lastCommand="yank"},killRegion:{exec:function(e){t.killRing.add(e.getCopyText()),e.commands.byName.cut.exec(e),e.setEmacsMark(null)},readOnly:!0,multiSelectAction:"forEach"},killRingSave:{exec:function(e){e.$handlesEmacsOnCopy=!0;var n=e.session.$emacsMarkRing.slice(),r=[];t.killRing.add(e.getCopyText()),setTimeout(function(){function t(){var t=e.selection,n=t.getRange(),i=t.isBackwards()?n.end:n.start;r.push({row:i.row,column:i.column}),t.clearSelection()}e.$handlesEmacsOnCopy=!1,e.inMultiSelectMode?e.forEachSelection({exec:t}):t(),e.session.$emacsMarkRing=n.concat(r.reverse())},0)},readOnly:!0},keyboardQuit:function(e){e.selection.clearSelection(),e.setEmacsMark(null),e.keyBinding.$data.count=null},focusCommandLine:function(e,t){e.showCommandLine&&e.showCommandLine(t)}}),t.handler.addCommands(i.iSearchStartCommands);var v=t.handler.commands;v.yank.isYank=!0,v.yankRotate.isYank=!0,t.killRing={$data:[],add:function(e){e&&this.$data.push(e),this.$data.length>30&&this.$data.shift()},append:function(e){var t=this.$data.length-1,n=this.$data[t]||"";e&&(n+=e),n&&(this.$data[t]=n)},get:function(e){return e=e||1,this.$data.slice(this.$data.length-e,this.$data.length).reverse().join("\n")},pop:function(){return this.$data.length>1&&this.$data.pop(),this.get()},rotate:function(){return this.$data.unshift(this.$data.pop()),this.get()}}}) \ No newline at end of file
diff --git a/library/ace/keybinding-vim.js b/library/ace/keybinding-vim.js
new file mode 100644
index 000000000..53c9301d5
--- /dev/null
+++ b/library/ace/keybinding-vim.js
@@ -0,0 +1 @@
+ace.define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/dom","ace/lib/oop","ace/lib/keys","ace/lib/event","ace/search","ace/lib/useragent","ace/search_highlight","ace/commands/multi_select_commands","ace/mode/text","ace/multi_select"],function(e,t,n){"use strict";function r(){function t(e){return typeof e!="object"?e+"":"line"in e?e.line+":"+e.ch:"anchor"in e?t(e.anchor)+"->"+t(e.head):Array.isArray(e)?"["+e.map(function(e){return t(e)})+"]":JSON.stringify(e)}var e="";for(var n=0;n<arguments.length;n++){var r=arguments[n],i=t(r);e+=i+" "}console.log(e)}function m(e){return{row:e.line,column:e.ch}}function g(e){return new E(e.row,e.column)}function x(e){e.setOption("disableInput",!0),e.setOption("showCursorWhenSelecting",!1),v.signal(e,"vim-mode-change",{mode:"normal"}),e.on("cursorActivity",Jn),tt(e),v.on(e.getInputField(),"paste",M(e))}function T(e){e.setOption("disableInput",!1),e.off("cursorActivity",Jn),v.off(e.getInputField(),"paste",M(e)),e.state.vim=null}function N(e,t){this==v.keyMap.vim&&v.rmClass(e.getWrapperElement(),"cm-fat-cursor"),(!t||t.attach!=C)&&T(e,!1)}function C(e,t){this==v.keyMap.vim&&v.addClass(e.getWrapperElement(),"cm-fat-cursor"),(!t||t.attach!=C)&&x(e)}function k(e,t){if(!t)return undefined;var n=O(e);if(!n)return!1;var r=v.Vim.findKey(t,n);return typeof r=="function"&&v.signal(t,"vim-keypress",n),r}function O(e){if(e.charAt(0)=="'")return e.charAt(1);var t=e.split(/-(?!$)/),n=t[t.length-1];if(t.length==1&&t[0].length==1)return!1;if(t.length==2&&t[0]=="Shift"&&n.length==1)return!1;var r=!1;for(var i=0;i<t.length;i++){var s=t[i];s in L?t[i]=L[s]:r=!0,s in A&&(t[i]=A[s])}return r?(X(n)&&(t[t.length-1]=n.toLowerCase()),"<"+t.join("-")+">"):!1}function M(e){var t=e.state.vim;return t.onPasteFn||(t.onPasteFn=function(){t.insertMode||(e.setCursor(St(e.getCursor(),0,1)),yt.enterInsertMode(e,{},t))}),t.onPasteFn}function H(e,t){var n=[];for(var r=e;r<e+t;r++)n.push(String.fromCharCode(r));return n}function R(e,t){return t>=e.firstLine()&&t<=e.lastLine()}function U(e){return/^[a-z]$/.test(e)}function z(e){return"()[]{}".indexOf(e)!=-1}function W(e){return _.test(e)}function X(e){return/^[A-Z]$/.test(e)}function V(e){return/^\s*$/.test(e)}function $(e,t){for(var n=0;n<t.length;n++)if(t[n]==e)return!0;return!1}function K(e,t,n,r,i){if(t===undefined&&!i)throw Error("defaultValue is required unless callback is provided");n||(n="string"),J[e]={type:n,defaultValue:t,callback:i};if(r)for(var s=0;s<r.length;s++)J[r[s]]=J[e];t&&Q(e,t)}function Q(e,t,n,r){var i=J[e];r=r||{};var s=r.scope;if(!i)throw Error("Unknown option: "+e);if(i.type=="boolean"){if(t&&t!==!0)throw Error("Invalid argument: "+e+"="+t);t!==!1&&(t=!0)}i.callback?(s!=="local"&&i.callback(t,undefined),s!=="global"&&n&&i.callback(t,n)):(s!=="local"&&(i.value=i.type=="boolean"?!!t:t),s!=="global"&&n&&(n.state.vim.options[e]={value:t}))}function G(e,t,n){var r=J[e];n=n||{};var i=n.scope;if(!r)throw Error("Unknown option: "+e);if(r.callback){var s=t&&r.callback(undefined,t);if(i!=="global"&&s!==undefined)return s;if(i!=="local")return r.callback();return}var s=i!=="global"&&t&&t.state.vim.options[e];return(s||i!=="local"&&r||{}).value}function et(){this.latestRegister=undefined,this.isPlaying=!1,this.isRecording=!1,this.replaySearchQueries=[],this.onRecordingDone=undefined,this.lastInsertModeChanges=Z()}function tt(e){return e.state.vim||(e.state.vim={inputState:new ot,lastEditInputState:undefined,lastEditActionCommand:undefined,lastHPos:-1,lastHSPos:-1,lastMotion:null,marks:{},fakeCursor:null,insertMode:!1,insertModeRepeat:undefined,visualMode:!1,visualLine:!1,visualBlock:!1,lastSelection:null,lastPastedText:null,sel:{},options:{}}),e.state.vim}function rt(){nt={searchQuery:null,searchIsReversed:!1,lastSubstituteReplacePart:undefined,jumpList:Y(),macroModeState:new et,lastChararacterSearch:{increment:0,forward:!0,selectedCharacter:""},registerController:new lt({}),searchHistoryController:new ct({}),exCommandHistoryController:new ct({})};for(var e in J){var t=J[e];t.value=t.defaultValue}}function ot(){this.prefixRepeat=[],this.motionRepeat=[],this.operator=null,this.operatorArgs=null,this.motion=null,this.motionArgs=null,this.keyBuffer=[],this.registerName=null}function ut(e,t){e.state.vim.inputState=new ot,v.signal(e,"vim-command-done",t)}function at(e,t,n){this.clear(),this.keyBuffer=[e||""],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!!t,this.blockwise=!!n}function ft(e,t){var n=nt.registerController.registers[e];if(!e||e.length!=1)throw Error("Register name must be 1 character");n[e]=t,q.push(e)}function lt(e){this.registers=e,this.unnamedRegister=e['"']=new at,e["."]=new at,e[":"]=new at,e["/"]=new at}function ct(){this.historyBuffer=[],this.iterator,this.initialPrefix=null}function dt(e,t){pt[e]=t}function vt(e,t){var n=[];for(var r=0;r<t;r++)n.push(e);return n}function gt(e,t){mt[e]=t}function bt(e,t){yt[e]=t}function wt(e,t,n){var r=Math.min(Math.max(e.firstLine(),t.line),e.lastLine()),i=Pt(e,r)-1;i=n?i+1:i;var s=Math.min(Math.max(0,t.ch),i);return E(r,s)}function Et(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function St(e,t,n){return typeof t=="object"&&(n=t.ch,t=t.line),E(e.line+t,e.ch+n)}function xt(e,t){return{line:t.line-e.line,ch:t.line-e.line}}function Tt(e,t,n,r){var i,s=[],o=[];for(var u=0;u<t.length;u++){var a=t[u];if(n=="insert"&&a.context!="insert"||a.context&&a.context!=n||r.operator&&a.type=="action"||!(i=Nt(e,a.keys)))continue;i=="partial"&&s.push(a),i=="full"&&o.push(a)}return{partial:s.length&&s,full:o.length&&o}}function Nt(e,t){if(t.slice(-11)=="<character>"){var n=t.length-11,r=e.slice(0,n),i=t.slice(0,n);return r==i&&e.length>n?"full":i.indexOf(r)==0?"partial":!1}return e==t?"full":t.indexOf(e)==0?"partial":!1}function Ct(e){var t=/^.*(<[\w\-]+>)$/.exec(e),n=t?t[1]:e.slice(-1);if(n.length>1)switch(n){case"<CR>":n="\n";break;case"<Space>":n=" ";break;default:}return n}function kt(e,t,n){return function(){for(var r=0;r<n;r++)t(e)}}function Lt(e){return E(e.line,e.ch)}function At(e,t){return e.ch==t.ch&&e.line==t.line}function Ot(e,t){return e.line<t.line?!0:e.line==t.line&&e.ch<t.ch?!0:!1}function Mt(e,t){return arguments.length>2&&(t=Mt.apply(undefined,Array.prototype.slice.call(arguments,1))),Ot(e,t)?e:t}function _t(e,t){return arguments.length>2&&(t=_t.apply(undefined,Array.prototype.slice.call(arguments,1))),Ot(e,t)?t:e}function Dt(e,t,n){var r=Ot(e,t),i=Ot(t,n);return r&&i}function Pt(e,t){return e.getLine(t).length}function Ht(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function Bt(e){return e.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1")}function jt(e,t,n){var r=Pt(e,t),i=(new Array(n-r+1)).join(" ");e.setCursor(E(t,r)),e.replaceRange(i,e.getCursor())}function Ft(e,t){var n=[],r=e.listSelections(),i=Lt(e.clipPos(t)),s=!At(t,i),o=e.getCursor("head"),u=qt(r,o),a=At(r[u].head,r[u].anchor),f=r.length-1,l=f-u>u?f:0,c=r[l].anchor,h=Math.min(c.line,i.line),p=Math.max(c.line,i.line),d=c.ch,v=i.ch,m=r[l].head.ch-d,g=v-d;m>0&&g<=0?(d++,s||v--):m<0&&g>=0?(d--,a||v++):m<0&&g==-1&&(d--,v++);for(var y=h;y<=p;y++){var b={anchor:new E(y,d),head:new E(y,v)};n.push(b)}return u=i.line==p?n.length-1:0,e.setSelections(n),t.ch=v,c.ch=d,c}function It(e,t,n){var r=[];for(var i=0;i<n;i++){var s=St(t,i,0);r.push({anchor:s,head:s})}e.setSelections(r,0)}function qt(e,t,n){for(var r=0;r<e.length;r++){var i=n!="head"&&At(e[r].anchor,t),s=n!="anchor"&&At(e[r].head,t);if(i||s)return r}return-1}function Rt(e,t){var n=t.lastSelection,r=function(){var t=e.listSelections(),n=t[0],r=t[t.length-1],i=Ot(n.anchor,n.head)?n.anchor:n.head,s=Ot(r.anchor,r.head)?r.head:r.anchor;return[i,s]},i=function(){var t=e.getCursor(),r=e.getCursor(),i=n.visualBlock;if(i){var s=i.width,o=i.height;r=E(t.line+o,t.ch+s);var u=[];for(var a=t.line;a<r.line;a++){var f=E(a,t.ch),l=E(a,r.ch),c={anchor:f,head:l};u.push(c)}e.setSelections(u)}else{var h=n.anchorMark.find(),p=n.headMark.find(),d=p.line-h.line,v=p.ch-h.ch;r={line:r.line+d,ch:d?r.ch:v+r.ch},n.visualLine&&(t=E(t.line,0),r=E(r.line,Pt(e,r.line))),e.setSelection(t,r)}return[t,r]};return t.visualMode?r():i()}function Ut(e,t){var n=t.sel.anchor,r=t.sel.head;t.lastPastedText&&(r=e.posFromIndex(e.indexFromPos(n)+t.lastPastedText.length),t.lastPastedText=null),t.lastSelection={anchorMark:e.setBookmark(n),headMark:e.setBookmark(r),anchor:Lt(n),head:Lt(r),visualMode:t.visualMode,visualLine:t.visualLine,visualBlock:t.visualBlock}}function zt(e,t,n){var r=e.state.vim.sel,i=r.head,s=r.anchor,o;return Ot(n,t)&&(o=n,n=t,t=o),Ot(i,s)?(i=Mt(t,i),s=_t(s,n)):(s=Mt(t,s),i=_t(i,n),i=St(i,0,-1),i.ch==-1&&i.line!=e.firstLine()&&(i=E(i.line-1,Pt(e,i.line-1)))),[s,i]}function Wt(e,t,n){var r=e.state.vim;t=t||r.sel;var n=n||r.visualLine?"line":r.visualBlock?"block":"char",i=Xt(e,t,n);e.setSelections(i.ranges,i.primary),Kn(e)}function Xt(e,t,n,r){var i=Lt(t.head),s=Lt(t.anchor);if(n=="char"){var o=!r&&!Ot(t.head,t.anchor)?1:0,u=Ot(t.head,t.anchor)?1:0;return i=St(t.head,0,o),s=St(t.anchor,0,u),{ranges:[{anchor:s,head:i}],primary:0}}if(n=="line"){if(!Ot(t.head,t.anchor)){s.ch=0;var a=e.lastLine();i.line>a&&(i.line=a),i.ch=Pt(e,i.line)}else i.ch=0,s.ch=Pt(e,s.line);return{ranges:[{anchor:s,head:i}],primary:0}}if(n=="block"){var f=Math.min(s.line,i.line),l=Math.min(s.ch,i.ch),c=Math.max(s.line,i.line),h=Math.max(s.ch,i.ch)+1,p=c-f+1,d=i.line==f?0:p-1,v=[];for(var m=0;m<p;m++)v.push({anchor:E(f+m,l),head:E(f+m,h)});return{ranges:v,primary:d}}}function Vt(e){var t=e.getCursor("head");return e.getSelection().length==1&&(t=Mt(t,e.getCursor("anchor"))),t}function $t(e,t){var n=e.state.vim;t!==!1&&e.setCursor(wt(e,n.sel.head)),Ut(e,n),n.visualMode=!1,n.visualLine=!1,n.visualBlock=!1,v.signal(e,"vim-mode-change",{mode:"normal"}),n.fakeCursor&&n.fakeCursor.clear()}function Jt(e,t,n){var r=e.getRange(t,n);if(/\n\s*$/.test(r)){var i=r.split("\n");i.pop();var s;for(var s=i.pop();i.length>0&&s&&V(s);s=i.pop())n.line--,n.ch=0;s?(n.line--,n.ch=Pt(e,n.line)):n.ch=0}}function Kt(e,t,n){t.ch=0,n.ch=0,n.line++}function Qt(e){if(!e)return 0;var t=e.search(/\S/);return t==-1?e.length:t}function Gt(e,t,n,r,i){var s=Vt(e),o=e.getLine(s.line),u=s.ch,a=i?D[0]:P[0];while(!a(o.charAt(u))){u++;if(u>=o.length)return null}r?a=P[0]:(a=D[0],a(o.charAt(u))||(a=D[1]));var f=u,l=u;while(a(o.charAt(f))&&f<o.length)f++;while(a(o.charAt(l))&&l>=0)l--;l++;if(t){var c=f;while(/\s/.test(o.charAt(f))&&f<o.length)f++;if(c==f){var h=l;while(/\s/.test(o.charAt(l-1))&&l>0)l--;l||(l=h)}}return{start:E(s.line,l),end:E(s.line,f)}}function Yt(e,t,n){At(t,n)||nt.jumpList.add(e,t,n)}function Zt(e,t){nt.lastChararacterSearch.increment=e,nt.lastChararacterSearch.forward=t.forward,nt.lastChararacterSearch.selectedCharacter=t.selectedCharacter}function nn(e,t,n,r){var i=Lt(e.getCursor()),s=n?1:-1,o=n?e.lineCount():-1,u=i.ch,a=i.line,f=e.getLine(a),l={lineText:f,nextCh:f.charAt(u),lastCh:null,index:u,symb:r,reverseSymb:(n?{")":"(","}":"{"}:{"(":")","{":"}"})[r],forward:n,depth:0,curMoveThrough:!1},c=en[r];if(!c)return i;var h=tn[c].init,p=tn[c].isComplete;h&&h(l);while(a!==o&&t){l.index+=s,l.nextCh=l.lineText.charAt(l.index);if(!l.nextCh){a+=s,l.lineText=e.getLine(a)||"";if(s>0)l.index=0;else{var d=l.lineText.length;l.index=d>0?d-1:0}l.nextCh=l.lineText.charAt(l.index)}p(l)&&(i.line=a,i.ch=l.index,t--)}return l.nextCh||l.curMoveThrough?E(a,l.index):i}function rn(e,t,n,r,i){var s=t.line,o=t.ch,u=e.getLine(s),a=n?1:-1,f=r?P:D;if(i&&u==""){s+=a,u=e.getLine(s);if(!R(e,s))return null;o=n?0:u.length}for(;;){if(i&&u=="")return{from:0,to:0,line:s};var l=a>0?u.length:-1,c=l,h=l;while(o!=l){var p=!1;for(var d=0;d<f.length&&!p;++d)if(f[d](u.charAt(o))){c=o;while(o!=l&&f[d](u.charAt(o)))o+=a;h=o,p=c!=h;if(c==t.ch&&s==t.line&&h==c+a)continue;return{from:Math.min(c,h+1),to:Math.max(c,h),line:s}}p||(o+=a)}s+=a;if(!R(e,s))return null;u=e.getLine(s),o=a>0?0:u.length}throw new Error("The impossible happened.")}function sn(e,t,n,r,i,s){var o=Lt(t),u=[];(r&&!i||!r&&i)&&n++;var a=!r||!i;for(var f=0;f<n;f++){var l=rn(e,t,r,s,a);if(!l){var c=Pt(e,e.lastLine());u.push(r?{line:e.lastLine(),from:c,to:c}:{line:0,from:0,to:0});break}u.push(l),t=E(l.line,r?l.to-1:l.from)}var h=u.length!=n,p=u[0],d=u.pop();return r&&!i?(!h&&(p.from!=o.ch||p.line!=o.line)&&(d=u.pop()),E(d.line,d.from)):r&&i?E(d.line,d.to-1):!r&&i?(!h&&(p.to!=o.ch||p.line!=o.line)&&(d=u.pop()),E(d.line,d.to)):E(d.line,d.from)}function on(e,t,n,r){var i=e.getCursor(),s=i.ch,o;for(var u=0;u<t;u++){var a=e.getLine(i.line);o=fn(s,a,r,n,!0);if(o==-1)return null;s=o}return E(e.getCursor().line,o)}function un(e,t){var n=e.getCursor().line;return wt(e,E(n,t-1))}function an(e,t,n,r){if(!$(n,I))return;t.marks[n]&&t.marks[n].clear(),t.marks[n]=e.setBookmark(r)}function fn(e,t,n,r,i){var s;return r?(s=t.indexOf(n,e+1),s!=-1&&!i&&(s-=1)):(s=t.lastIndexOf(n,e-1),s!=-1&&!i&&(s+=1)),s}function ln(e,t,n,r,i){function c(t){return!/\S/.test(e.getLine(t))}function h(e,t,n){return n?c(e)!=c(e+t):!c(e)&&c(e+t)}function p(t){r=r>0?1:-1;var n=e.ace.session.getFoldLine(t);n&&t+r>n.start.row&&t+r<n.end.row&&(r=(r>0?n.end.row:n.start.row)-t)}var s=t.line,o=e.firstLine(),u=e.lastLine(),a,f,l=s;if(r){while(o<=l&&l<=u&&n>0)p(l),h(l,r)&&n--,l+=r;return new E(l,0)}var d=e.state.vim;if(d.visualLine&&h(s,1,!0)){var v=d.sel.anchor;h(v.line,-1,!0)&&(!i||v.line!=s)&&(s+=1)}var m=c(s);for(l=s;l<=u&&n;l++)h(l,1,!0)&&(!i||c(l)!=m)&&n--;f=new E(l,0),l>u&&!m?m=!0:i=!1;for(l=s;l>o;l--)if(!i||c(l)==m||l==s)if(h(l,-1,!0))break;return a=new E(l,0),{start:a,end:f}}function cn(e,t,n,r){var i=t,s,o,u={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/}[n],a={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{"}[n],f=e.getLine(i.line).charAt(i.ch),l=f===a?1:0;s=e.scanForBracket(E(i.line,i.ch+l),-1,null,{bracketRegex:u}),o=e.scanForBracket(E(i.line,i.ch+l),1,null,{bracketRegex:u});if(!s||!o)return{start:i,end:i};s=s.pos,o=o.pos;if(s.line==o.line&&s.ch>o.ch||s.line>o.line){var c=s;s=o,o=c}return r?o.ch+=1:s.ch+=1,{start:s,end:o}}function hn(e,t,n,r){var i=Lt(t),s=e.getLine(i.line),o=s.split(""),u,a,f,l,c=o.indexOf(n);i.ch<c?i.ch=c:c<i.ch&&o[i.ch]==n&&(a=i.ch,--i.ch);if(o[i.ch]==n&&!a)u=i.ch+1;else for(f=i.ch;f>-1&&!u;f--)o[f]==n&&(u=f+1);if(u&&!a)for(f=u,l=o.length;f<l&&!a;f++)o[f]==n&&(a=f);return!u||!a?{start:i,end:i}:(r&&(--u,++a),{start:E(i.line,u),end:E(i.line,a)})}function pn(){}function dn(e){var t=e.state.vim;return t.searchState_||(t.searchState_=new pn)}function vn(e,t,n,r,i){e.openDialog?e.openDialog(t,r,{bottom:!0,value:i.value,onKeyDown:i.onKeyDown,onKeyUp:i.onKeyUp,selectValueOnOpen:!1}):r(prompt(n,""))}function mn(e){var t=gn(e)||[];if(!t.length)return[];var n=[];if(t[0]!==0)return;for(var r=0;r<t.length;r++)typeof t[r]=="number"&&n.push(e.substring(t[r]+1,t[r+1]));return n}function gn(e){var t=!1,n=[];for(var r=0;r<e.length;r++){var i=e.charAt(r);!t&&i=="/"&&n.push(r),t=!t&&i=="\\"}return n}function yn(e){var t="|(){",n="}",r=!1,i=[];for(var s=-1;s<e.length;s++){var o=e.charAt(s)||"",u=e.charAt(s+1)||"",a=u&&t.indexOf(u)!=-1;r?((o!=="\\"||!a)&&i.push(o),r=!1):o==="\\"?(r=!0,u&&n.indexOf(u)!=-1&&(a=!0),(!a||u==="\\")&&i.push(o)):(i.push(o),a&&u!=="\\"&&i.push("\\"))}return i.join("")}function wn(e){var t=!1,n=[];for(var r=-1;r<e.length;r++){var i=e.charAt(r)||"",s=e.charAt(r+1)||"";bn[i+s]?(n.push(bn[i+s]),r++):t?(n.push(i),t=!1):i==="\\"?(t=!0,W(s)||s==="$"?n.push("$"):s!=="/"&&s!=="\\"&&n.push("\\")):(i==="$"&&n.push("$"),n.push(i),s==="/"&&n.push("\\"))}return n.join("")}function Sn(e){var t=new v.StringStream(e),n=[];while(!t.eol()){while(t.peek()&&t.peek()!="\\")n.push(t.next());var r=!1;for(var i in En)if(t.match(i,!0)){r=!0,n.push(En[i]);break}r||n.push(t.next())}return n.join("")}function xn(e,t,n){var r=nt.registerController.getRegister("/");r.setText(e);if(e instanceof RegExp)return e;var i=gn(e),s,o;if(!i.length)s=e;else{s=e.substring(0,i[0]);var u=e.substring(i[0]);o=u.indexOf("i")!=-1}if(!s)return null;G("pcre")||(s=yn(s)),n&&(t=/^[^A-Z]*$/.test(s));var a=new RegExp(s,t||o?"i":undefined);return a}function Tn(e,t){e.openNotification?e.openNotification('<span style="color: red">'+t+"</span>",{bottom:!0,duration:5e3}):alert(t)}function Nn(e,t){var n="";return e&&(n+='<span style="font-family: monospace">'+e+"</span>"),n+='<input type="text"/> <span style="color: #888">',t&&(n+='<span style="color: #888">',n+=t,n+="</span>"),n}function kn(e,t){var n=(t.prefix||"")+" "+(t.desc||""),r=Nn(t.prefix,t.desc);vn(e,r,n,t.onClose,t)}function Ln(e,t){if(e instanceof RegExp&&t instanceof RegExp){var n=["global","multiline","ignoreCase","source"];for(var r=0;r<n.length;r++){var i=n[r];if(e[i]!==t[i])return!1}return!0}return!1}function An(e,t,n,r){if(!t)return;var i=dn(e),s=xn(t,!!n,!!r);if(!s)return;return Mn(e,s),Ln(s,i.getQuery())?s:(i.setQuery(s),s)}function On(e){if(e.source.charAt(0)=="^")var t=!0;return{token:function(n){if(t&&!n.sol()){n.skipToEnd();return}var r=n.match(e,!1);if(r){if(r[0].length==0)return n.next(),"searching";if(!n.sol()){n.backUp(1);if(!e.exec(n.next()+r[0]))return n.next(),null}return n.match(e),"searching"}while(!n.eol()){n.next();if(n.match(e,!1))break}},query:e}}function Mn(e,t){var n=dn(e),r=n.getOverlay();if(!r||t!=r.query)r&&e.removeOverlay(r),r=On(t),e.addOverlay(r),e.showMatchesOnScrollbar&&(n.getScrollbarAnnotate()&&n.getScrollbarAnnotate().clear(),n.setScrollbarAnnotate(e.showMatchesOnScrollbar(t))),n.setOverlay(r)}function _n(e,t,n,r){return r===undefined&&(r=1),e.operation(function(){var i=e.getCursor(),s=e.getSearchCursor(n,i);for(var o=0;o<r;o++){var u=s.find(t);o==0&&u&&At(s.from(),i)&&(u=s.find(t));if(!u){s=e.getSearchCursor(n,t?E(e.lastLine()):E(e.firstLine(),0));if(!s.find(t))return}}return s.from()})}function Dn(e){var t=dn(e);e.removeOverlay(dn(e).getOverlay()),t.setOverlay(null),t.getScrollbarAnnotate()&&(t.getScrollbarAnnotate().clear(),t.setScrollbarAnnotate(null))}function Pn(e,t,n){return typeof e!="number"&&(e=e.line),t instanceof Array?$(e,t):n?e>=t&&e<=n:e==t}function Hn(e){var t=e.ace.renderer;return{top:t.getFirstFullyVisibleRow(),bottom:t.getLastFullyVisibleRow()}}function In(e,t,n,r,i,s,o,u,a){function c(){e.operation(function(){while(!f)h(),p();d()})}function h(){var t=e.getRange(s.from(),s.to()),n=t.replace(o,u);s.replace(n)}function p(){while(s.findNext()&&Pn(s.from(),r,i)){if(!n&&l&&s.from().line==l.line)continue;e.scrollIntoView(s.from(),30),e.setSelection(s.from(),s.to()),l=s.from(),f=!1;return}f=!0}function d(t){t&&t(),e.focus();if(l){e.setCursor(l);var n=e.state.vim;n.exMode=!1,n.lastHPos=n.lastHSPos=l.ch}a&&a()}function m(t,n,r){v.e_stop(t);var i=v.keyName(t);switch(i){case"Y":h(),p();break;case"N":p();break;case"A":var s=a;a=undefined,e.operation(c),a=s;break;case"L":h();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":d(r)}return f&&d(r),!0}e.state.vim.exMode=!0;var f=!1,l=s.from();p();if(f){Tn(e,"No matches for "+o.source);return}if(!t){c(),a&&a();return}kn(e,{prefix:"replace with <strong>"+u+"</strong> (y/n/a/q/l)",onKeyDown:m})}function qn(e){var t=e.state.vim,n=nt.macroModeState,r=nt.registerController.getRegister("."),i=n.isPlaying,s=n.lastInsertModeChanges,o=[];if(!i){var u=s.inVisualBlock?t.lastSelection.visualBlock.height:1,a=s.changes,o=[],f=0;while(f<a.length)o.push(a[f]),a[f]instanceof Gn?f++:f+=u;s.changes=o,e.off("change",$n),v.off(e.getInputField(),"keydown",Yn)}!i&&t.insertModeRepeat>1&&(Zn(e,t,t.insertModeRepeat-1,!0),t.lastEditInputState.repeatOverride=t.insertModeRepeat),delete t.insertModeRepeat,t.insertMode=!1,e.setCursor(e.getCursor().line,e.getCursor().ch-1),e.setOption("keyMap","vim"),e.setOption("disableInput",!0),e.toggleOverwrite(!1),r.setText(s.changes.join("")),v.signal(e,"vim-mode-change",{mode:"normal"}),n.isRecording&&Xn(n)}function Rn(e){b.unshift(e)}function Un(e,t,n,r,i){var s={keys:e,type:t};s[t]=n,s[t+"Args"]=r;for(var o in i)s[o]=i[o];Rn(s)}function zn(e,t,n,r){var i=nt.registerController.getRegister(r);if(r==":"){i.keyBuffer[0]&&Fn.processCommand(e,i.keyBuffer[0]),n.isPlaying=!1;return}var s=i.keyBuffer,o=0;n.isPlaying=!0,n.replaySearchQueries=i.searchQueries.slice(0);for(var u=0;u<s.length;u++){var a=s[u],f,l;while(a){f=/<\w+-.+?>|<\w+>|./.exec(a),l=f[0],a=a.substring(f.index+l.length),v.Vim.handleKey(e,l,"macro");if(t.insertMode){var c=i.insertModeChanges[o++].changes;nt.macroModeState.lastInsertModeChanges.changes=c,er(e,c,1),qn(e)}}}n.isPlaying=!1}function Wn(e,t){if(e.isPlaying)return;var n=e.latestRegister,r=nt.registerController.getRegister(n);r&&r.pushText(t)}function Xn(e){if(e.isPlaying)return;var t=e.latestRegister,n=nt.registerController.getRegister(t);n&&n.pushInsertModeChanges&&n.pushInsertModeChanges(e.lastInsertModeChanges)}function Vn(e,t){if(e.isPlaying)return;var n=e.latestRegister,r=nt.registerController.getRegister(n);r&&r.pushSearchQuery&&r.pushSearchQuery(t)}function $n(e,t){var n=nt.macroModeState,r=n.lastInsertModeChanges;if(!n.isPlaying)while(t){r.expectCursorActivityForChange=!0;if(t.origin=="+input"||t.origin=="paste"||t.origin===undefined){var i=t.text.join("\n");r.changes.push(i)}t=t.next}}function Jn(e){var t=e.state.vim;if(t.insertMode){var n=nt.macroModeState;if(n.isPlaying)return;var r=n.lastInsertModeChanges;r.expectCursorActivityForChange?r.expectCursorActivityForChange=!1:r.changes=[]}else e.curOp.isVimOp||Qn(e,t);t.visualMode&&Kn(e)}function Kn(e){var t=e.state.vim,n=wt(e,Lt(t.sel.head)),r=St(n,0,1);t.fakeCursor&&t.fakeCursor.clear(),t.fakeCursor=e.markText(n,r,{className:"cm-animate-fat-cursor"})}function Qn(e,t){var n=e.getCursor("anchor"),r=e.getCursor("head");t.visualMode&&!e.somethingSelected()?$t(e,!1):!t.visualMode&&!t.insertMode&&e.somethingSelected()&&(t.visualMode=!0,t.visualLine=!1,v.signal(e,"vim-mode-change",{mode:"visual"}));if(t.visualMode){var i=Ot(r,n)?0:-1,s=Ot(r,n)?-1:0;r=St(r,0,i),n=St(n,0,s),t.sel={anchor:n,head:r},an(e,t,"<",Mt(r,n)),an(e,t,">",_t(r,n))}else t.insertMode||(t.lastHPos=e.getCursor().ch)}function Gn(e){this.keyName=e}function Yn(e){function i(){return n.changes.push(new Gn(r)),!0}var t=nt.macroModeState,n=t.lastInsertModeChanges,r=v.keyName(e);if(!r)return;(r.indexOf("Delete")!=-1||r.indexOf("Backspace")!=-1)&&v.lookupKey(r,"vim-insert",i)}function Zn(e,t,n,r){function u(){s?ht.processAction(e,t,t.lastEditActionCommand):ht.evalInput(e,t)}function a(n){if(i.lastInsertModeChanges.changes.length>0){n=t.lastEditActionCommand?n:1;var r=i.lastInsertModeChanges;er(e,r.changes,n)}}var i=nt.macroModeState;i.isPlaying=!0;var s=!!t.lastEditActionCommand,o=t.inputState;t.inputState=t.lastEditInputState;if(s&&t.lastEditActionCommand.interlaceInsertRepeat)for(var f=0;f<n;f++)u(),a(1);else r||u(),a(n);t.inputState=o,t.insertMode&&!r&&qn(e),i.isPlaying=!1}function er(e,t,n){function r(t){return typeof t=="string"?v.commands[t](e):t(e),!0}var i=e.getCursor("head"),s=nt.macroModeState.lastInsertModeChanges.inVisualBlock;if(s){var o=e.state.vim,u=o.lastSelection,a=xt(u.anchor,u.head);It(e,i,a.line+1),n=e.listSelections().length,e.setCursor(i)}for(var f=0;f<n;f++){s&&e.setCursor(St(i,f,0));for(var l=0;l<t.length;l++){var c=t[l];if(c instanceof Gn)v.lookupKey(c.keyName,"vim-insert",r);else{var h=e.getCursor();e.replaceRange(c,h,h)}}}s&&e.setCursor(St(i,0,1))}function nr(e,t,n){t.length>1&&t[0]=="n"&&(t=t.replace("numpad","")),t=tr[t]||t;var r="";return n.ctrlKey&&(r+="C-"),n.altKey&&(r+="A-"),n.shiftKey&&(r+="S-"),r+=t,r.length>1&&(r="<"+r+">"),r}function ir(e){var t=new e.constructor;return Object.keys(e).forEach(function(n){var r=e[n];Array.isArray(r)?r=r.slice():r&&typeof r=="object"&&r.constructor!=Object&&(r=ir(r)),t[n]=r}),e.sel&&(t.sel={head:e.sel.head&&Lt(e.sel.head),anchor:e.sel.anchor&&Lt(e.sel.anchor)}),t}function sr(e,t,n){var r=!1,i=S.maybeInitVimState_(e),s=i.visualBlock||i.wasInVisualBlock;i.wasInVisualBlock&&!e.ace.inMultiSelectMode?i.wasInVisualBlock=!1:e.ace.inMultiSelectMode&&i.visualBlock&&(i.wasInVisualBlock=!0);if(t=="<Esc>"&&!i.insertMode&&!i.visualMode&&e.ace.inMultiSelectMode)e.ace.exitMultiSelectMode();else if(s||!e.ace.inMultiSelectMode||e.ace.inVirtualSelectionMode)r=S.handleKey(e,t,n);else{var o=ir(i);e.operation(function(){e.ace.forEachSelection(function(){var i=e.ace.selection;e.state.vim.lastHPos=i.$desiredColumn==null?i.lead.column:i.$desiredColumn;var s=e.getCursor("head"),u=e.getCursor("anchor"),a=Ot(s,u)?0:-1,f=Ot(s,u)?-1:0;s=St(s,0,a),u=St(u,0,f),e.state.vim.sel.head=s,e.state.vim.sel.anchor=u,r=rr(e,t,n),i.$desiredColumn=e.state.vim.lastHPos==-1?null:e.state.vim.lastHPos,e.virtualSelectionMode()&&(e.state.vim=ir(o))}),e.curOp.cursorActivity&&!r&&(e.curOp.cursorActivity=!1)},!0)}return r}function ar(e,t){t.off("beforeEndOperation",ar);var n=t.state.cm.vimCmd;n&&t.execCommand(n.exec?n:n.name,n.args),t.curOp=t.prevOp}var i=e("../range").Range,s=e("../lib/event_emitter").EventEmitter,o=e("../lib/dom"),u=e("../lib/oop"),a=e("../lib/keys"),f=e("../lib/event"),l=e("../search").Search,c=e("../lib/useragent"),h=e("../search_highlight").SearchHighlight,p=e("../commands/multi_select_commands"),d=e("../mode/text").Mode.prototype.tokenRe;e("../multi_select");var v=function(e){this.ace=e,this.state={},this.marks={},this.$uid=0,this.onChange=this.onChange.bind(this),this.onSelectionChange=this.onSelectionChange.bind(this),this.onBeforeEndOperation=this.onBeforeEndOperation.bind(this),this.ace.on("change",this.onChange),this.ace.on("changeSelection",this.onSelectionChange),this.ace.on("beforeEndOperation",this.onBeforeEndOperation)};v.Pos=function(e,t){if(!(this instanceof E))return new E(e,t);this.line=e,this.ch=t},v.defineOption=function(e,t,n){},v.commands={redo:function(e){e.ace.redo()},undo:function(e){e.ace.undo()},newlineAndIndent:function(e){e.ace.insert("\n")}},v.keyMap={},v.addClass=v.rmClass=v.e_stop=function(){},v.keyName=function(e){if(e.key)return e.key;var t=a[e.keyCode]||"";return t.length==1&&(t=t.toUpperCase()),t=f.getModifierString(e).replace(/(^|-)\w/g,function(e){return e.toUpperCase()})+t,t},v.keyMap["default"]=function(e){return function(t){var n=t.ace.commands.commandKeyBinding[e.toLowerCase()];return n&&t.ace.execCommand(n)!==!1}},v.lookupKey=function fr(e,t,n){typeof t=="string"&&(t=v.keyMap[t]);var r=typeof t=="function"?t(e):t[e];if(r===!1)return"nothing";if(r==="...")return"multi";if(r!=null&&n(r))return"handled";if(t.fallthrough){if(!Array.isArray(t.fallthrough))return fr(e,t.fallthrough,n);for(var i=0;i<t.fallthrough.length;i++){var s=fr(e,t.fallthrough[i],n);if(s)return s}}},v.signal=function(e,t,n){return e._signal(t,n)},v.on=f.addListener,v.off=f.removeListener,v.isWordChar=function(e){return e<""?/^\w$/.test(e):(d.lastIndex=0,d.test(e))},function(){u.implement(v.prototype,s),this.destroy=function(){this.ace.off("change",this.onChange),this.ace.off("changeSelection",this.onSelectionChange),this.ace.off("beforeEndOperation",this.onBeforeEndOperation),this.removeOverlay()},this.virtualSelectionMode=function(){return this.ace.inVirtualSelectionMode&&this.ace.selection.index},this.onChange=function(e){if(e.action[0]=="i"){var t={text:e.lines},n=this.curOp=this.curOp||{};n.changeHandlers||(n.changeHandlers=this._eventRegistry.change&&this._eventRegistry.change.slice());if(this.virtualSelectionMode())return;n.lastChange?n.lastChange.next=n.lastChange=t:n.lastChange=n.change=t}this.$updateMarkers(e)},this.onSelectionChange=function(){var e=this.curOp=this.curOp||{};e.cursorActivityHandlers||(e.cursorActivityHandlers=this._eventRegistry.cursorActivity&&this._eventRegistry.cursorActivity.slice()),this.curOp.cursorActivity=!0,this.ace.inMultiSelectMode&&this.ace.keyBinding.removeKeyboardHandler(p.keyboardHandler)},this.operation=function(e,t){if(!t&&this.curOp||t&&this.curOp&&this.curOp.force)return e();(t||!this.ace.curOp)&&this.curOp&&this.onBeforeEndOperation();if(!this.ace.curOp){var n=this.ace.prevOp;this.ace.startOperation({command:{name:"vim",scrollIntoView:"cursor"}})}var r=this.curOp=this.curOp||{};this.curOp.force=t;var i=e();return this.ace.curOp&&this.ace.curOp.command.name=="vim"&&(this.ace.endOperation(),!r.cursorActivity&&!r.lastChange&&n&&(this.ace.prevOp=n)),(t||!this.ace.curOp)&&this.curOp&&this.onBeforeEndOperation(),i},this.onBeforeEndOperation=function(){var e=this.curOp;e&&(e.change&&this.signal("change",e.change,e),e&&e.cursorActivity&&this.signal("cursorActivity",null,e),this.curOp=null)},this.signal=function(e,t,n){var r=n?n[e+"Handlers"]:(this._eventRegistry||{})[e];if(!r)return;r=r.slice();for(var i=0;i<r.length;i++)r[i](this,t)},this.firstLine=function(){return 0},this.lastLine=function(){return this.ace.session.getLength()-1},this.lineCount=function(){return this.ace.session.getLength()},this.setCursor=function(e,t){typeof e=="object"&&(t=e.ch,e=e.line),this.ace.inVirtualSelectionMode||this.ace.exitMultiSelectMode(),this.ace.session.unfold({row:e,column:t}),this.ace.selection.moveTo(e,t)},this.getCursor=function(e){var t=this.ace.selection,n=e=="anchor"?t.isEmpty()?t.lead:t.anchor:e=="head"||!e?t.lead:t.getRange()[e];return g(n)},this.listSelections=function(e){var t=this.ace.multiSelect.rangeList.ranges;return!t.length||this.ace.inVirtualSelectionMode?[{anchor:this.getCursor("anchor"),head:this.getCursor("head")}]:t.map(function(e){return{anchor:this.clipPos(g(e.cursor==e.end?e.start:e.end)),head:this.clipPos(g(e.cursor))}},this)},this.setSelections=function(e,t){var n=this.ace.multiSelect,r=e.map(function(e){var t=m(e.anchor),n=m(e.head),r=i.comparePoints(t,n)<0?new i.fromPoints(t,n):new i.fromPoints(n,t);return r.cursor=i.comparePoints(r.start,n)?r.end:r.start,r});if(this.ace.inVirtualSelectionMode){this.ace.selection.fromOrientedRange(r[0]);return}t?r[t]&&r.push(r.splice(t,1)[0]):r=r.reverse(),n.toSingleRange(r[0].clone());var s=this.ace.session;for(var o=0;o<r.length;o++){var u=s.$clipRangeToDocument(r[o]);n.addRange(u)}},this.setSelection=function(e,t,n){var r=this.ace.selection;r.moveTo(e.line,e.ch),r.selectTo(t.line,t.ch),n&&n.origin=="*mouse"&&this.onBeforeEndOperation()},this.somethingSelected=function(e){return!this.ace.selection.isEmpty()},this.clipPos=function(e){var t=this.ace.session.$clipPositionToDocument(e.line,e.ch);return g(t)},this.markText=function(e){return{clear:function(){},find:function(){}}},this.$updateMarkers=function(e){var t=e.action=="insert",n=e.start,r=e.end,s=(r.row-n.row)*(t?1:-1),o=(r.column-n.column)*(t?1:-1);t&&(r=n);for(var u in this.marks){var a=this.marks[u],f=i.comparePoints(a,n);if(f<0)continue;if(f===0&&t){if(a.bias!=1){a.bias==-1;continue}f=1}var l=t?f:i.comparePoints(a,r);if(l>0){a.row+=s,a.column+=a.row==r.row?o:0;continue}!t&&l<=0&&(a.row=n.row,a.column=n.column,l===0&&(a.bias=1))}};var e=function(e,t,n,r){this.cm=e,this.id=t,this.row=n,this.column=r,e.marks[this.id]=this};e.prototype.clear=function(){delete this.cm.marks[this.id]},e.prototype.find=function(){return g(this)},this.setBookmark=function(t,n){var r=new e(this,this.$uid++,t.line,t.ch);if(!n||!n.insertLeft)r.$insertRight=!0;return this.marks[r.id]=r,r},this.moveH=function(e,t){if(t=="char"){var n=this.ace.selection;n.clearSelection(),n.moveCursorBy(0,e)}},this.findPosV=function(e,t,n,r){if(n=="page"){var i=this.ace.renderer,s=i.layerConfig;t*=Math.floor(s.height/s.lineHeight),n="line"}if(n=="line"){var o=this.ace.session.documentToScreenPosition(e.line,e.ch);r!=null&&(o.column=r),o.row+=t,o.row=Math.min(Math.max(0,o.row),this.ace.session.getScreenLength()-1);var u=this.ace.session.screenToDocumentPosition(o.row,o.column);return g(u)}debugger},this.charCoords=function(e,t){if(t=="div"||!t){var n=this.ace.session.documentToScreenPosition(e.line,e.ch);return{left:n.column,top:n.row}}if(t=="local"){var r=this.ace.renderer,n=this.ace.session.documentToScreenPosition(e.line,e.ch),i=r.layerConfig.lineHeight,s=r.layerConfig.characterWidth,o=i*n.row;return{left:n.column*s,top:o,bottom:o+i}}},this.coordsChar=function(e,t){var n=this.ace.renderer;if(t=="local"){var r=Math.max(0,Math.floor(e.top/n.lineHeight)),i=Math.max(0,Math.floor(e.left/n.characterWidth)),s=n.session.screenToDocumentPosition(r,i);return g(s)}if(t=="div")throw"not implemented"},this.getSearchCursor=function(e,t,n){var r=!1,i=!1;e instanceof RegExp&&!e.global&&(r=!e.ignoreCase,e=e.source,i=!0);var s=new l;t.ch==undefined&&(t.ch=Number.MAX_VALUE);var o={row:t.line,column:t.ch},u=this,a=null;return{findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(t){s.setOptions({needle:e,caseSensitive:r,wrap:!1,backwards:t,regExp:i,start:a||o});var n=s.find(u.ace.session);return n&&n.isEmpty()&&u.getLine(n.start.row).length==n.start.column&&(s.$options.start=n,n=s.find(u.ace.session)),a=n,a},from:function(){return a&&g(a.start)},to:function(){return a&&g(a.end)},replace:function(e){a&&(a.end=u.ace.session.doc.replace(a,e))}}},this.scrollTo=function(e,t){var n=this.ace.renderer,r=n.layerConfig,i=r.maxHeight;i-=(n.$size.scrollerHeight-n.lineHeight)*n.$scrollPastEnd,t!=null&&this.ace.session.setScrollTop(Math.max(0,Math.min(t,i))),e!=null&&this.ace.session.setScrollLeft(Math.max(0,Math.min(e,r.width)))},this.scrollInfo=function(){return 0},this.scrollIntoView=function(e,t){if(e){var n=this.ace.renderer,r={top:0,bottom:t};n.scrollCursorIntoView(m(e),n.lineHeight*2/n.$size.scrollerHeight,r)}},this.getLine=function(e){return this.ace.session.getLine(e)},this.getRange=function(e,t){return this.ace.session.getTextRange(new i(e.line,e.ch,t.line,t.ch))},this.replaceRange=function(e,t,n){return n||(n=t),this.ace.session.replace(new i(t.line,t.ch,n.line,n.ch),e)},this.replaceSelections=function(e){var t=this.ace.selection;if(this.ace.inVirtualSelectionMode){this.ace.session.replace(t.getRange(),e[0]||"");return}t.inVirtualSelectionMode=!0;var n=t.rangeList.ranges;n.length||(n=[this.ace.multiSelect.getRange()]);for(var r=n.length;r--;)this.ace.session.replace(n[r],e[r]||"");t.inVirtualSelectionMode=!1},this.getSelection=function(){return this.ace.getSelectedText()},this.getSelections=function(){return this.listSelections().map(function(e){return this.getRange(e.anchor,e.head)},this)},this.getInputField=function(){return this.ace.textInput.getElement()},this.getWrapperElement=function(){return this.ace.containter};var t={indentWithTabs:"useSoftTabs",indentUnit:"tabSize",tabSize:"tabSize",firstLineNumber:"firstLineNumber",readOnly:"readOnly"};this.setOption=function(e,n){this.state[e]=n;switch(e){case"indentWithTabs":e=t[e],n=!n;break;default:e=t[e]}e&&this.ace.setOption(e,n)},this.getOption=function(e,n){var r=t[e];r&&(n=this.ace.getOption(r));switch(e){case"indentWithTabs":return e=t[e],!n}return r?n:this.state[e]},this.toggleOverwrite=function(e){return this.state.overwrite=e,this.ace.setOverwrite(e)},this.addOverlay=function(e){if(!this.$searchHighlight||!this.$searchHighlight.session){var t=new h(null,"ace_highlight-marker","text"),n=this.ace.session.addDynamicMarker(t);t.id=n.id,t.session=this.ace.session,t.destroy=function(e){t.session.off("change",t.updateOnChange),t.session.off("changeEditor",t.destroy),t.session.removeMarker(t.id),t.session=null},t.updateOnChange=function(e){var n=e.start.row;n==e.end.row?t.cache[n]=undefined:t.cache.splice(n,t.cache.length)},t.session.on("changeEditor",t.destroy),t.session.on("change",t.updateOnChange)}var r=new RegExp(e.query.source,"gmi");this.$searchHighlight=e.highlight=t,this.$searchHighlight.setRegexp(r),this.ace.renderer.updateBackMarkers()},this.removeOverlay=function(e){this.$searchHighlight&&this.$searchHighlight.session&&this.$searchHighlight.destroy()},this.getScrollInfo=function(){var e=this.ace.renderer,t=e.layerConfig;return{left:e.scrollLeft,top:e.scrollTop,height:t.maxHeight,width:t.width,clientHeight:t.height,clientWidth:t.width}},this.getValue=function(){return this.ace.getValue()},this.setValue=function(e){return this.ace.setValue(e)},this.getTokenTypeAt=function(e){var t=this.ace.session.getTokenAt(e.line,e.ch);return t&&/comment|string/.test(t.type)?"string":""},this.findMatchingBracket=function(e){var t=this.ace.session.findMatchingBracket(m(e));return{to:t&&g(t)}},this.indentLine=function(e,t){t===!0?this.ace.session.indentRows(e,e," "):t===!1&&this.ace.session.outdentRows(new i(e,0,e,0))},this.indexFromPos=function(e){return this.ace.session.doc.positionToIndex(m(e))},this.posFromIndex=function(e){return g(this.ace.session.doc.indexToPosition(e))},this.focus=function(e){return this.ace.focus()},this.blur=function(e){return this.ace.blur()},this.defaultTextHeight=function(e){return this.ace.renderer.layerConfig.lineHeight},this.scanForBracket=function(e,t,n,r){var i=r.bracketRegex.source;if(t==1)var s=this.ace.session.$findClosingBracket(i.slice(1,2),m(e),/paren|text/);else var s=this.ace.session.$findOpeningBracket(i.slice(-2,-1),{row:e.line,column:e.ch+1},/paren|text/);return s&&{pos:g(s)}},this.refresh=function(){return this.ace.resize(!0)},this.getMode=function(){return{name:this.getOption("mode")}}}.call(v.prototype);var y=v.StringStream=function(e,t){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0};y.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||undefined},next:function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},eat:function(e){var t=this.string.charAt(this.pos);if(typeof e=="string")var n=t==e;else var n=t&&(e.test?e.test(t):e(t));if(n)return++this.pos,t},eatWhile:function(e){var t=this.pos;while(this.eat(e));return this.pos>t},eatSpace:function(){var e=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos)))++this.pos;return this.pos>e},skipToEnd:function(){this.pos=this.string.length},skipTo:function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},backUp:function(e){this.pos-=e},column:function(){throw"not implemented"},indentation:function(){throw"not implemented"},match:function(e,t,n){if(typeof e!="string"){var s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&t!==!1&&(this.pos+=s[0].length),s)}var r=function(e){return n?e.toLowerCase():e},i=this.string.substr(this.pos,e.length);if(r(i)==r(e))return t!==!1&&(this.pos+=e.length),!0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}}},v.defineExtension=function(e,t){v.prototype[e]=t},o.importCssString(".normal-mode .ace_cursor{ border: 1px solid red; background-color: red; opacity: 0.5;}.normal-mode .ace_hidden-cursors .ace_cursor{ background-color: transparent;}.ace_dialog { position: absolute; left: 0; right: 0; background: white; z-index: 15; padding: .1em .8em; overflow: hidden; color: #333;}.ace_dialog-top { border-bottom: 1px solid #eee; top: 0;}.ace_dialog-bottom { border-top: 1px solid #eee; bottom: 0;}.ace_dialog input { border: none; outline: none; background: transparent; width: 20em; color: inherit; font-family: monospace;}","vimMode"),function(){function e(e,t,n){var r=e.ace.container,i;return i=r.appendChild(document.createElement("div")),n?i.className="ace_dialog ace_dialog-bottom":i.className="ace_dialog ace_dialog-top",typeof t=="string"?i.innerHTML=t:i.appendChild(t),i}function t(e,t){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=t}v.defineExtension("openDialog",function(n,r,i){function a(e){if(typeof e=="string")f.value=e;else{if(o)return;o=!0,s.parentNode.removeChild(s),u.focus(),i.onClose&&i.onClose(s)}}if(this.virtualSelectionMode())return;i||(i={}),t(this,null);var s=e(this,n,i.bottom),o=!1,u=this,f=s.getElementsByTagName("input")[0],l;if(f)i.value&&(f.value=i.value,i.select!==!1&&f.select()),i.onInput&&v.on(f,"input",function(e){i.onInput(e,f.value,a)}),i.onKeyUp&&v.on(f,"keyup",function(e){i.onKeyUp(e,f.value,a)}),v.on(f,"keydown",function(e){if(i&&i.onKeyDown&&i.onKeyDown(e,f.value,a))return;if(e.keyCode==27||i.closeOnEnter!==!1&&e.keyCode==13)f.blur(),v.e_stop(e),a();e.keyCode==13&&r(f.value)}),i.closeOnBlur!==!1&&v.on(f,"blur",a),f.focus();else if(l=s.getElementsByTagName("button")[0])v.on(l,"click",function(){a(),u.focus()}),i.closeOnBlur!==!1&&v.on(l,"blur",a),l.focus();return a}),v.defineExtension("openNotification",function(n,r){function a(){if(s)return;s=!0,clearTimeout(o),i.parentNode.removeChild(i)}if(this.virtualSelectionMode())return;t(this,a);var i=e(this,n,r&&r.bottom),s=!1,o,u=r&&typeof r.duration!="undefined"?r.duration:5e3;return v.on(i,"click",function(e){v.e_preventDefault(e),a()}),u&&(o=setTimeout(a,u)),a})}();var b=[{keys:"<Left>",type:"keyToKey",toKeys:"h"},{keys:"<Right>",type:"keyToKey",toKeys:"l"},{keys:"<Up>",type:"keyToKey",toKeys:"k"},{keys:"<Down>",type:"keyToKey",toKeys:"j"},{keys:"<Space>",type:"keyToKey",toKeys:"l"},{keys:"<BS>",type:"keyToKey",toKeys:"h",context:"normal"},{keys:"<C-Space>",type:"keyToKey",toKeys:"W"},{keys:"<C-BS>",type:"keyToKey",toKeys:"B",context:"normal"},{keys:"<S-Space>",type:"keyToKey",toKeys:"w"},{keys:"<S-BS>",type:"keyToKey",toKeys:"b",context:"normal"},{keys:"<C-n>",type:"keyToKey",toKeys:"j"},{keys:"<C-p>",type:"keyToKey",toKeys:"k"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"xi",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"dcc",context:"visual"},{keys:"<Home>",type:"keyToKey",toKeys:"0"},{keys:"<End>",type:"keyToKey",toKeys:"$"},{keys:"<PageUp>",type:"keyToKey",toKeys:"<C-b>"},{keys:"<PageDown>",type:"keyToKey",toKeys:"<C-f>"},{keys:"<CR>",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"<C-f>",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"<C-b>",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"<C-d>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"<C-u>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"<C-w>",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"<C-i>",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"<C-o>",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"<C-e>",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"<C-y>",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"<C-v>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r<character>",type:"action",action:"replace",isEdit:!0},{keys:"@<character>",type:"action",action:"replayMacro"},{keys:"q<character>",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0}},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"<C-r>",type:"action",action:"redo"},{keys:"m<character>",type:"action",action:"setMark"},{keys:'"<character>',type:"action",action:"setRegister"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z<CR>",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"<C-a>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"<C-x>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"a<character>",type:"motion",motion:"textObjectManipulation"},{keys:"i<character>",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],w=[{name:"colorscheme",shortName:"colo"},{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"unmap"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"se"},{name:"set",shortName:"se"},{name:"setlocal",shortName:"setl"},{name:"setglobal",shortName:"setg"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"nohlsearch",shortName:"noh"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"global",shortName:"g"}],E=v.Pos,S=function(){return st};v.defineOption("vimMode",!1,function(e,t,n){t&&e.getOption("keyMap")!="vim"?e.setOption("keyMap","vim"):!t&&n!=v.Init&&/^vim/.test(e.getOption("keyMap"))&&e.setOption("keyMap","default")});var L={Shift:"S",Ctrl:"C",Alt:"A",Cmd:"D",Mod:"A"},A={Enter:"CR",Backspace:"BS",Delete:"Del"},_=/[\d]/,D=[v.isWordChar,function(e){return e&&!v.isWordChar(e)&&!/\s/.test(e)}],P=[function(e){return/\S/.test(e)}],B=H(65,26),j=H(97,26),F=H(48,10),I=[].concat(B,j,F,["<",">"]),q=[].concat(B,j,F,["-",'"',".",":","/"]),J={};K("filetype",undefined,"string",["ft"],function(e,t){if(t===undefined)return;if(e===undefined){var n=t.getOption("mode");return n=="null"?"":n}var n=e==""?"null":e;t.setOption("mode",n)});var Y=function(){function s(s,o,u){function l(n){var r=++t%e,o=i[r];o&&o.clear(),i[r]=s.setBookmark(n)}var a=t%e,f=i[a];if(f){var c=f.find();c&&!At(c,o)&&l(o)}else l(o);l(u),n=t,r=t-e+1,r<0&&(r=0)}function o(s,o){t+=o,t>n?t=n:t<r&&(t=r);var u=i[(e+t)%e];if(u&&!u.find()){var a=o>0?1:-1,f,l=s.getCursor();do{t+=a,u=i[(e+t)%e];if(u&&(f=u.find())&&!At(l,f))break}while(t<n&&t>r)}return u}var e=100,t=-1,n=0,r=0,i=new Array(e);return{cachedCursor:undefined,add:s,move:o}},Z=function(e){return e?{changes:e.changes,expectCursorActivityForChange:e.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};et.prototype={exitMacroRecordMode:function(){var e=nt.macroModeState;e.onRecordingDone&&e.onRecordingDone(),e.onRecordingDone=undefined,e.isRecording=!1},enterMacroRecordMode:function(e,t){var n=nt.registerController.getRegister(t);n&&(n.clear(),this.latestRegister=t,e.openDialog&&(this.onRecordingDone=e.openDialog("(recording)["+t+"]",null,{bottom:!0})),this.isRecording=!0)}};var nt,it,st={buildKeyMap:function(){},getRegisterController:function(){return nt.registerController},resetVimGlobalState_:rt,getVimGlobalState_:function(){return nt},maybeInitVimState_:tt,suppressErrorLogging:!1,InsertModeKey:Gn,map:function(e,t,n){Fn.map(e,t,n)},unmap:function(e,t){Fn.unmap(e,t||"normal")},setOption:Q,getOption:G,defineOption:K,defineEx:function(e,t,n){if(!t)t=e;else if(e.indexOf(t)!==0)throw new Error('(Vim.defineEx) "'+t+'" is not a prefix of "'+e+'", command not registered');jn[e]=n,Fn.commandMap_[t]={name:e,shortName:t,type:"api"}},handleKey:function(e,t,n){var r=this.findKey(e,t,n);if(typeof r=="function")return r()},findKey:function(e,t,n){function i(){var r=nt.macroModeState;if(r.isRecording){if(t=="q")return r.exitMacroRecordMode(),ut(e),!0;n!="mapping"&&Wn(r,t)}}function s(){if(t=="<Esc>")return ut(e),r.visualMode?$t(e):r.insertMode&&qn(e),!0}function o(n){var r;while(n)r=/<\w+-.+?>|<\w+>|./.exec(n),t=r[0],n=n.substring(r.index+t.length),v.Vim.handleKey(e,t,"mapping")}function u(){if(s())return!0;var n=r.inputState.keyBuffer=r.inputState.keyBuffer+t,i=t.length==1,o=ht.matchCommand(n,b,r.inputState,"insert");while(n.length>1&&o.type!="full"){var n=r.inputState.keyBuffer=n.slice(1),u=ht.matchCommand(n,b,r.inputState,"insert");u.type!="none"&&(o=u)}if(o.type=="none")return ut(e),!1;if(o.type=="partial")return it&&window.clearTimeout(it),it=window.setTimeout(function(){r.insertMode&&r.inputState.keyBuffer&&ut(e)},G("insertModeEscKeysTimeout")),!i;it&&window.clearTimeout(it);if(i){var a=e.getCursor();e.replaceRange("",St(a,0,-(n.length-1)),a,"+input")}return ut(e),o.command}function a(){if(i()||s())return!0;var n=r.inputState.keyBuffer=r.inputState.keyBuffer+t;if(/^[1-9]\d*$/.test(n))return!0;var o=/^(\d*)(.*)$/.exec(n);if(!o)return ut(e),!1;var u=r.visualMode?"visual":"normal",a=ht.matchCommand(o[2]||o[1],b,r.inputState,u);if(a.type=="none")return ut(e),!1;if(a.type=="partial")return!0;r.inputState.keyBuffer="";var o=/^(\d*)(.*)$/.exec(n);return o[1]&&o[1]!="0"&&r.inputState.pushRepeatDigit(o[1]),a.command}var r=tt(e),f;return r.insertMode?f=u():f=a(),f===!1?undefined:f===!0?function(){return!0}:function(){if((f.operator||f.isEdit)&&e.getOption("readOnly"))return;return e.operation(function(){e.curOp.isVimOp=!0;try{f.type=="keyToKey"?o(f.toKeys):ht.processCommand(e,r,f)}catch(t){throw e.state.vim=undefined,tt(e),v.Vim.suppressErrorLogging||console.log(t),t}return!0})}},handleEx:function(e,t){Fn.processCommand(e,t)},defineMotion:dt,defineAction:bt,defineOperator:gt,mapCommand:Un,_mapCommand:Rn,defineRegister:ft,exitVisualMode:$t,exitInsertMode:qn};ot.prototype.pushRepeatDigit=function(e){this.operator?this.motionRepeat=this.motionRepeat.concat(e):this.prefixRepeat=this.prefixRepeat.concat(e)},ot.prototype.getRepeat=function(){var e=0;if(this.prefixRepeat.length>0||this.motionRepeat.length>0)e=1,this.prefixRepeat.length>0&&(e*=parseInt(this.prefixRepeat.join(""),10)),this.motionRepeat.length>0&&(e*=parseInt(this.motionRepeat.join(""),10));return e},at.prototype={setText:function(e,t,n){this.keyBuffer=[e||""],this.linewise=!!t,this.blockwise=!!n},pushText:function(e,t){t&&(this.linewise||this.keyBuffer.push("\n"),this.linewise=!0),this.keyBuffer.push(e)},pushInsertModeChanges:function(e){this.insertModeChanges.push(Z(e))},pushSearchQuery:function(e){this.searchQueries.push(e)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join("")}},lt.prototype={pushText:function(e,t,n,r,i){r&&n.charAt(0)=="\n"&&(n=n.slice(1)+"\n"),r&&n.charAt(n.length-1)!=="\n"&&(n+="\n");var s=this.isValidRegister(e)?this.getRegister(e):null;if(!s){switch(t){case"yank":this.registers[0]=new at(n,r,i);break;case"delete":case"change":n.indexOf("\n")==-1?this.registers["-"]=new at(n,r):(this.shiftNumericRegisters_(),this.registers[1]=new at(n,r))}this.unnamedRegister.setText(n,r,i);return}var o=X(e);o?s.pushText(n,r):s.setText(n,r,i),this.unnamedRegister.setText(s.toString(),r)},getRegister:function(e){return this.isValidRegister(e)?(e=e.toLowerCase(),this.registers[e]||(this.registers[e]=new at),this.registers[e]):this.unnamedRegister},isValidRegister:function(e){return e&&$(e,q)},shiftNumericRegisters_:function(){for(var e=9;e>=2;e--)this.registers[e]=this.getRegister(""+(e-1))}},ct.prototype={nextMatch:function(e,t){var n=this.historyBuffer,r=t?-1:1;this.initialPrefix===null&&(this.initialPrefix=e);for(var i=this.iterator+r;t?i>=0:i<n.length;i+=r){var s=n[i];for(var o=0;o<=s.length;o++)if(this.initialPrefix==s.substring(0,o))return this.iterator=i,s}if(i>=n.length)return this.iterator=n.length,this.initialPrefix;if(i<0)return e},pushInput:function(e){var t=this.historyBuffer.indexOf(e);t>-1&&this.historyBuffer.splice(t,1),e.length&&this.historyBuffer.push(e)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var ht={matchCommand:function(e,t,n,r){var i=Tt(e,t,r,n);if(!i.full&&!i.partial)return{type:"none"};if(!i.full&&i.partial)return{type:"partial"};var s;for(var o=0;o<i.full.length;o++){var u=i.full[o];s||(s=u)}return s.keys.slice(-11)=="<character>"&&(n.selectedCharacter=Ct(e)),{type:"full",command:s}},processCommand:function(e,t,n){t.inputState.repeatOverride=n.repeatOverride;switch(n.type){case"motion":this.processMotion(e,t,n);break;case"operator":this.processOperator(e,t,n);break;case"operatorMotion":this.processOperatorMotion(e,t,n);break;case"action":this.processAction(e,t,n);break;case"search":this.processSearch(e,t,n);break;case"ex":case"keyToEx":this.processEx(e,t,n);break;default:}},processMotion:function(e,t,n){t.inputState.motion=n.motion,t.inputState.motionArgs=Et(n.motionArgs),this.evalInput(e,t)},processOperator:function(e,t,n){var r=t.inputState;if(r.operator){if(r.operator==n.operator){r.motion="expandToLine",r.motionArgs={linewise:!0},this.evalInput(e,t);return}ut(e)}r.operator=n.operator,r.operatorArgs=Et(n.operatorArgs),t.visualMode&&this.evalInput(e,t)},processOperatorMotion:function(e,t,n){var r=t.visualMode,i=Et(n.operatorMotionArgs);i&&r&&i.visualLine&&(t.visualLine=!0),this.processOperator(e,t,n),r||this.processMotion(e,t,n)},processAction:function(e,t,n){var r=t.inputState,i=r.getRepeat(),s=!!i,o=Et(n.actionArgs)||{};r.selectedCharacter&&(o.selectedCharacter=r.selectedCharacter),n.operator&&this.processOperator(e,t,n),n.motion&&this.processMotion(e,t,n),(n.motion||n.operator)&&this.evalInput(e,t),o.repeat=i||1,o.repeatIsExplicit=s,o.registerName=r.registerName,ut(e),t.lastMotion=null,n.isEdit&&this.recordLastEdit(t,r,n),yt[n.action](e,o,t)},processSearch:function(e,t,n){function a(r,i,s){nt.searchHistoryController.pushInput(r),nt.searchHistoryController.reset();try{An(e,r,i,s)}catch(o){Tn(e,"Invalid regex: "+r),ut(e);return}ht.processMotion(e,t,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:n.searchArgs.toJumplist}})}function f(t){e.scrollTo(u.left,u.top),a(t,!0,!0);var n=nt.macroModeState;n.isRecording&&Vn(n,t)}function l(t,n,i){var s=v.keyName(t),o;s=="Up"||s=="Down"?(o=s=="Up"?!0:!1,n=nt.searchHistoryController.nextMatch(n,o)||"",i(n)):s!="Left"&&s!="Right"&&s!="Ctrl"&&s!="Alt"&&s!="Shift"&&nt.searchHistoryController.reset();var a;try{a=An(e,n,!0,!0)}catch(t){}a?e.scrollIntoView(_n(e,!r,a),30):(Dn(e),e.scrollTo(u.left,u.top))}function c(t,n,r){var i=v.keyName(t);i=="Esc"||i=="Ctrl-C"||i=="Ctrl-["||i=="Backspace"&&n==""?(nt.searchHistoryController.pushInput(n),nt.searchHistoryController.reset(),An(e,o),Dn(e),e.scrollTo(u.left,u.top),v.e_stop(t),ut(e),r(),e.focus()):i=="Ctrl-U"&&(v.e_stop(t),r(""))}if(!e.getSearchCursor)return;var r=n.searchArgs.forward,i=n.searchArgs.wholeWordOnly;dn(e).setReversed(!r);var s=r?"/":"?",o=dn(e).getQuery(),u=e.getScrollInfo();switch(n.searchArgs.querySrc){case"prompt":var h=nt.macroModeState;if(h.isPlaying){var p=h.replaySearchQueries.shift();a(p,!0,!1)}else kn(e,{onClose:f,prefix:s,desc:Cn,onKeyUp:l,onKeyDown:c});break;case"wordUnderCursor":var d=Gt(e,!1,!0,!1,!0),m=!0;d||(d=Gt(e,!1,!0,!1,!1),m=!1);if(!d)return;var p=e.getLine(d.start.line).substring(d.start.ch,d.end.ch);m&&i?p="\\b"+p+"\\b":p=Bt(p),nt.jumpList.cachedCursor=e.getCursor(),e.setCursor(d.start),a(p,!0,!1)}},processEx:function(e,t,n){function r(t){nt.exCommandHistoryController.pushInput(t),nt.exCommandHistoryController.reset(),Fn.processCommand(e,t)}function i(t,n,r){var i=v.keyName(t),s;if(i=="Esc"||i=="Ctrl-C"||i=="Ctrl-["||i=="Backspace"&&n=="")nt.exCommandHistoryController.pushInput(n),nt.exCommandHistoryController.reset(),v.e_stop(t),ut(e),r(),e.focus();i=="Up"||i=="Down"?(s=i=="Up"?!0:!1,n=nt.exCommandHistoryController.nextMatch(n,s)||"",r(n)):i=="Ctrl-U"?(v.e_stop(t),r("")):i!="Left"&&i!="Right"&&i!="Ctrl"&&i!="Alt"&&i!="Shift"&&nt.exCommandHistoryController.reset()}n.type=="keyToEx"?Fn.processCommand(e,n.exArgs.input):t.visualMode?kn(e,{onClose:r,prefix:":",value:"'<,'>",onKeyDown:i}):kn(e,{onClose:r,prefix:":",onKeyDown:i})},evalInput:function(e,t){var n=t.inputState,r=n.motion,i=n.motionArgs||{},s=n.operator,o=n.operatorArgs||{},u=n.registerName,a=t.sel,f=Lt(t.visualMode?wt(e,a.head):e.getCursor("head")),l=Lt(t.visualMode?wt(e,a.anchor):e.getCursor("anchor")),c=Lt(f),h=Lt(l),p,d,v;s&&this.recordLastEdit(t,n),n.repeatOverride!==undefined?v=n.repeatOverride:v=n.getRepeat();if(v>0&&i.explicitRepeat)i.repeatIsExplicit=!0;else if(i.noRepeat||!i.explicitRepeat&&v===0)v=1,i.repeatIsExplicit=!1;n.selectedCharacter&&(i.selectedCharacter=o.selectedCharacter=n.selectedCharacter),i.repeat=v,ut(e);if(r){var m=pt[r](e,f,i,t);t.lastMotion=pt[r];if(!m)return;if(i.toJumplist){!s&&e.ace.curOp!=null&&(e.ace.curOp.command.scrollIntoView="center-animate");var g=nt.jumpList,y=g.cachedCursor;y?(Yt(e,y,m),delete g.cachedCursor):Yt(e,f,m)}m instanceof Array?(d=m[0],p=m[1]):p=m,p||(p=Lt(f));if(t.visualMode){if(!t.visualBlock||p.ch!==Infinity)p=wt(e,p,t.visualBlock);d&&(d=wt(e,d,!0)),d=d||h,a.anchor=d,a.head=p,Wt(e),an(e,t,"<",Ot(d,p)?d:p),an(e,t,">",Ot(d,p)?p:d)}else s||(p=wt(e,p),e.setCursor(p.line,p.ch))}if(s){if(o.lastSel){d=h;var b=o.lastSel,w=Math.abs(b.head.line-b.anchor.line),S=Math.abs(b.head.ch-b.anchor.ch);b.visualLine?p=E(h.line+w,h.ch):b.visualBlock?p=E(h.line+w,h.ch+S):b.head.line==b.anchor.line?p=E(h.line,h.ch+S):p=E(h.line+w,h.ch),t.visualMode=!0,t.visualLine=b.visualLine,t.visualBlock=b.visualBlock,a=t.sel={anchor:d,head:p},Wt(e)}else t.visualMode&&(o.lastSel={anchor:Lt(a.anchor),head:Lt(a.head),visualBlock:t.visualBlock,visualLine:t.visualLine});var x,T,N,C,k;if(t.visualMode){x=Mt(a.head,a.anchor),T=_t(a.head,a.anchor),N=t.visualLine||o.linewise,C=t.visualBlock?"block":N?"line":"char",k=Xt(e,{anchor:x,head:T},C);if(N){var L=k.ranges;if(C=="block")for(var A=0;A<L.length;A++)L[A].head.ch=Pt(e,L[A].head.line);else C=="line"&&(L[0].head=E(L[0].head.line+1,0))}}else{x=Lt(d||h),T=Lt(p||c);if(Ot(T,x)){var O=x;x=T,T=O}N=i.linewise||o.linewise,N?Kt(e,x,T):i.forward&&Jt(e,x,T),C="char";var M=!i.inclusive||N;k=Xt(e,{anchor:x,head:T},C,M)}e.setSelections(k.ranges,k.primary),t.lastMotion=null,o.repeat=v,o.registerName=u,o.linewise=N;var _=mt[s](e,o,k.ranges,h,p);t.visualMode&&$t(e,_!=null),_&&e.setCursor(_)}},recordLastEdit:function(e,t,n){var r=nt.macroModeState;if(r.isPlaying)return;e.lastEditInputState=t,e.lastEditActionCommand=n,r.lastInsertModeChanges.changes=[],r.lastInsertModeChanges.expectCursorActivityForChange=!1}},pt={moveToTopLine:function(e,t,n){var r=Hn(e).top+n.repeat-1;return E(r,Qt(e.getLine(r)))},moveToMiddleLine:function(e){var t=Hn(e),n=Math.floor((t.top+t.bottom)*.5);return E(n,Qt(e.getLine(n)))},moveToBottomLine:function(e,t,n){var r=Hn(e).bottom-n.repeat+1;return E(r,Qt(e.getLine(r)))},expandToLine:function(e,t,n){var r=t;return E(r.line+n.repeat-1,Infinity)},findNext:function(e,t,n){var r=dn(e),i=r.getQuery();if(!i)return;var s=!n.forward;return s=r.isReversed()?!s:s,Mn(e,i),_n(e,s,i,n.repeat)},goToMark:function(e,t,n,r){var i=r.marks[n.selectedCharacter];if(i){var s=i.find();return n.linewise?{line:s.line,ch:Qt(e.getLine(s.line))}:s}return null},moveToOtherHighlightedEnd:function(e,t,n,r){if(r.visualBlock&&n.sameLine){var i=r.sel;return[wt(e,E(i.anchor.line,i.head.ch)),wt(e,E(i.head.line,i.anchor.ch))]}return[r.sel.head,r.sel.anchor]},jumpToMark:function(e,t,n,r){var i=t;for(var s=0;s<n.repeat;s++){var o=i;for(var u in r.marks){if(!U(u))continue;var a=r.marks[u].find(),f=n.forward?Ot(a,o):Ot(o,a);if(f)continue;if(n.linewise&&a.line==o.line)continue;var l=At(o,i),c=n.forward?Dt(o,a,i):Dt(i,a,o);if(l||c)i=a}}return n.linewise&&(i=E(i.line,Qt(e.getLine(i.line)))),i},moveByCharacters:function(e,t,n){var r=t,i=n.repeat,s=n.forward?r.ch+i:r.ch-i;return E(r.line,s)},moveByLines:function(e,t,n,r){var i=t,s=i.ch;switch(r.lastMotion){case this.moveByLines:case this.moveByDisplayLines:case this.moveByScroll:case this.moveToColumn:case this.moveToEol:s=r.lastHPos;break;default:r.lastHPos=s}var o=n.repeat+(n.repeatOffset||0),u=n.forward?i.line+o:i.line-o,a=e.firstLine(),f=e.lastLine();if(u<a&&i.line==a||u>f&&i.line==f)return;var l=e.ace.session.getFoldLine(u);return l&&(n.forward?u>l.start.row&&(u=l.end.row+1):u=l.start.row),n.toFirstChar&&(s=Qt(e.getLine(u)),r.lastHPos=s),r.lastHSPos=e.charCoords(E(u,s),"div").left,E(u,s)},moveByDisplayLines:function(e,t,n,r){var i=t;switch(r.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:r.lastHSPos=e.charCoords(i,"div").left}var s=n.repeat,o=e.findPosV(i,n.forward?s:-s,"line",r.lastHSPos);if(o.hitSide)if(n.forward)var u=e.charCoords(o,"div"),a={top:u.top+8,left:r.lastHSPos},o=e.coordsChar(a,"div");else{var f=e.charCoords(E(e.firstLine(),0),"div");f.left=r.lastHSPos,o=e.coordsChar(f,"div")}return r.lastHPos=o.ch,o},moveByPage:function(e,t,n){var r=t,i=n.repeat;return e.findPosV(r,n.forward?i:-i,"page")},moveByParagraph:function(e,t,n){var r=n.forward?1:-1;return ln(e,t,n.repeat,r)},moveByScroll:function(e,t,n,r){var i=e.getScrollInfo(),s=null,o=n.repeat;o||(o=i.clientHeight/(2*e.defaultTextHeight()));var u=e.charCoords(t,"local");n.repeat=o;var s=pt.moveByDisplayLines(e,t,n,r);if(!s)return null;var a=e.charCoords(s,"local");return e.scrollTo(null,i.top+a.top-u.top),s},moveByWords:function(e,t,n){return sn(e,t,n.repeat,!!n.forward,!!n.wordEnd,!!n.bigWord)},moveTillCharacter:function(e,t,n){var r=n.repeat,i=on(e,r,n.forward,n.selectedCharacter),s=n.forward?-1:1;return Zt(s,n),i?(i.ch+=s,i):null},moveToCharacter:function(e,t,n){var r=n.repeat;return Zt(0,n),on(e,r,n.forward,n.selectedCharacter)||t},moveToSymbol:function(e,t,n){var r=n.repeat;return nn(e,r,n.forward,n.selectedCharacter)||t},moveToColumn:function(e,t,n,r){var i=n.repeat;return r.lastHPos=i-1,r.lastHSPos=e.charCoords(t,"div").left,un(e,i)},moveToEol:function(e,t,n,r){var i=t;r.lastHPos=Infinity;var s=E(i.line+n.repeat-1,Infinity),o=e.clipPos(s);return o.ch--,r.lastHSPos=e.charCoords(o,"div").left,s},moveToFirstNonWhiteSpaceCharacter:function(e,t){var n=t;return E(n.line,Qt(e.getLine(n.line)))},moveToMatchedSymbol:function(e,t){var n=t,r=n.line,i=n.ch,s=e.getLine(r),o;do{o=s.charAt(i++);if(o&&z(o)){var u=e.getTokenTypeAt(E(r,i));if(u!=="string"&&u!=="comment")break}}while(o);if(o){var a=e.findMatchingBracket(E(r,i));return a.to}return n},moveToStartOfLine:function(e,t){return E(t.line,0)},moveToLineOrEdgeOfDocument:function(e,t,n){var r=n.forward?e.lastLine():e.firstLine();return n.repeatIsExplicit&&(r=n.repeat-e.getOption("firstLineNumber")),E(r,Qt(e.getLine(r)))},textObjectManipulation:function(e,t,n,r){var i={"(":")",")":"(","{":"}","}":"{","[":"]","]":"["},s={"'":!0,'"':!0},o=n.selectedCharacter;o=="b"?o="(":o=="B"&&(o="{");var u=!n.textObjectInner,a;if(i[o])a=cn(e,t,o,u);else if(s[o])a=hn(e,t,o,u);else if(o==="W")a=Gt(e,u,!0,!0);else if(o==="w")a=Gt(e,u,!0,!1);else{if(o!=="p")return null;a=ln(e,t,n.repeat,0,u),n.linewise=!0;if(r.visualMode)r.visualLine||(r.visualLine=!0);else{var f=r.inputState.operatorArgs;f&&(f.linewise=!0),a.end.line--}}return e.state.vim.visualMode?zt(e,a.start,a.end):[a.start,a.end]},repeatLastCharacterSearch:function(e,t,n){var r=nt.lastChararacterSearch,i=n.repeat,s=n.forward===r.forward,o=(r.increment?1:0)*(s?-1:1);e.moveH(-o,"char"),n.inclusive=s?!0:!1;var u=on(e,i,s,r.selectedCharacter);return u?(u.ch+=o,u):(e.moveH(o,"char"),t)}},mt={change:function(e,t,n){var r,i,s=e.state.vim;nt.macroModeState.lastInsertModeChanges.inVisualBlock=s.visualBlock;if(!s.visualMode){var o=n[0].anchor,u=n[0].head;i=e.getRange(o,u);var a=s.lastEditInputState||{};if(a.motion=="moveByWords"&&!V(i)){var f=/\s+$/.exec(i);f&&a.motionArgs&&a.motionArgs.forward&&(u=St(u,0,-f[0].length),i=i.slice(0,-f[0].length))}var l=new E(o.line-1,Number.MAX_VALUE),c=e.firstLine()==e.lastLine();u.line>e.lastLine()&&t.linewise&&!c?e.replaceRange("",l,u):e.replaceRange("",o,u),t.linewise&&(c||(e.setCursor(l),v.commands.newlineAndIndent(e)),o.ch=Number.MAX_VALUE),r=o}else{i=e.getSelection();var h=vt("",n.length);e.replaceSelections(h),r=Mt(n[0].head,n[0].anchor)}nt.registerController.pushText(t.registerName,"change",i,t.linewise,n.length>1),yt.enterInsertMode(e,{head:r},e.state.vim)},"delete":function(e,t,n){var r,i,s=e.state.vim;if(!s.visualBlock){var o=n[0].anchor,u=n[0].head;t.linewise&&u.line!=e.firstLine()&&o.line==e.lastLine()&&o.line==u.line-1&&(o.line==e.firstLine()?o.ch=0:o=E(o.line-1,Pt(e,o.line-1))),i=e.getRange(o,u),e.replaceRange("",o,u),r=o,t.linewise&&(r=pt.moveToFirstNonWhiteSpaceCharacter(e,o))}else{i=e.getSelection();var a=vt("",n.length);e.replaceSelections(a),r=n[0].anchor}return nt.registerController.pushText(t.registerName,"delete",i,t.linewise,s.visualBlock),wt(e,r)},indent:function(e,t,n){var r=e.state.vim,i=n[0].anchor.line,s=r.visualBlock?n[n.length-1].anchor.line:n[0].head.line,o=r.visualMode?t.repeat:1;t.linewise&&s--;for(var u=i;u<=s;u++)for(var a=0;a<o;a++)e.indentLine(u,t.indentRight);return pt.moveToFirstNonWhiteSpaceCharacter(e,n[0].anchor)},changeCase:function(e,t,n,r,i){var s=e.getSelections(),o=[],u=t.toLower;for(var a=0;a<s.length;a++){var f=s[a],l="";if(u===!0)l=f.toLowerCase();else if(u===!1)l=f.toUpperCase();else for(var c=0;c<f.length;c++){var h=f.charAt(c);l+=X(h)?h.toLowerCase():h.toUpperCase()}o.push(l)}return e.replaceSelections(o),t.shouldMoveCursor?i:!e.state.vim.visualMode&&t.linewise&&n[0].anchor.line+1==n[0].head.line?pt.moveToFirstNonWhiteSpaceCharacter(e,r):t.linewise?r:Mt(n[0].anchor,n[0].head)},yank:function(e,t,n,r){var i=e.state.vim,s=e.getSelection(),o=i.visualMode?Mt(i.sel.anchor,i.sel.head,n[0].head,n[0].anchor):r;return nt.registerController.pushText(t.registerName,"yank",s,t.linewise,i.visualBlock),o}},yt={jumpListWalk:function(e,t,n){if(n.visualMode)return;var r=t.repeat,i=t.forward,s=nt.jumpList,o=s.move(e,i?r:-r),u=o?o.find():undefined;u=u?u:e.getCursor(),e.setCursor(u),e.ace.curOp.command.scrollIntoView="center-animate"},scroll:function(e,t,n){if(n.visualMode)return;var r=t.repeat||1,i=e.defaultTextHeight(),s=e.getScrollInfo().top,o=i*r,u=t.forward?s+o:s-o,a=Lt(e.getCursor()),f=e.charCoords(a,"local");if(t.forward)u>f.top?(a.line+=(u-f.top)/i,a.line=Math.ceil(a.line),e.setCursor(a),f=e.charCoords(a,"local"),e.scrollTo(null,f.top)):e.scrollTo(null,u);else{var l=u+e.getScrollInfo().clientHeight;l<f.bottom?(a.line-=(f.bottom-l)/i,a.line=Math.floor(a.line),e.setCursor(a),f=e.charCoords(a,"local"),e.scrollTo(null,f.bottom-e.getScrollInfo().clientHeight)):e.scrollTo(null,u)}},scrollToCursor:function(e,t){var n=e.getCursor().line,r=e.charCoords(E(n,0),"local"),i=e.getScrollInfo().clientHeight,s=r.top,o=r.bottom-s;switch(t.position){case"center":s=s-i/2+o;break;case"bottom":s=s-i+o*1.4;break;case"top":s+=o*.4}e.scrollTo(null,s)},replayMacro:function(e,t,n){var r=t.selectedCharacter,i=t.repeat,s=nt.macroModeState;r=="@"&&(r=s.latestRegister);while(i--)zn(e,n,s,r)},enterMacroRecordMode:function(e,t){var n=nt.macroModeState,r=t.selectedCharacter;n.enterMacroRecordMode(e,r)},enterInsertMode:function(e,t,n){if(e.getOption("readOnly"))return;n.insertMode=!0,n.insertModeRepeat=t&&t.repeat||1;var r=t?t.insertAt:null,i=n.sel,s=t.head||e.getCursor("head"),o=e.listSelections().length;if(r=="eol")s=E(s.line,Pt(e,s.line));else if(r=="charAfter")s=St(s,0,1);else if(r=="firstNonBlank")s=pt.moveToFirstNonWhiteSpaceCharacter(e,s);else if(r=="startOfSelectedArea")n.visualBlock?(s=E(Math.min(i.head.line,i.anchor.line),Math.min(i.head.ch,i.anchor.ch)),o=Math.abs(i.head.line-i.anchor.line)+1):i.head.line<i.anchor.line?s=i.head:s=E(i.anchor.line,0);else if(r=="endOfSelectedArea")n.visualBlock?(s=E(Math.min(i.head.line,i.anchor.line),Math.max(i.head.ch+1,i.anchor.ch)),o=Math.abs(i.head.line-i.anchor.line)+1):i.head.line>=i.anchor.line?s=St(i.head,0,1):s=E(i.anchor.line,0);else if(r=="inplace"&&n.visualMode)return;e.setOption("keyMap","vim-insert"),e.setOption("disableInput",!1),t&&t.replace?(e.toggleOverwrite(!0),e.setOption("keyMap","vim-replace"),v.signal(e,"vim-mode-change",{mode:"replace"})):(e.setOption("keyMap","vim-insert"),v.signal(e,"vim-mode-change",{mode:"insert"})),nt.macroModeState.isPlaying||(e.on("change",$n),v.on(e.getInputField(),"keydown",Yn)),n.visualMode&&$t(e),It(e,s,o)},toggleVisualMode:function(e,t,n){var r=t.repeat,i=e.getCursor(),s;n.visualMode?n.visualLine^t.linewise||n.visualBlock^t.blockwise?(n.visualLine=!!t.linewise,n.visualBlock=!!t.blockwise,v.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""}),Wt(e)):$t(e):(n.visualMode=!0,n.visualLine=!!t.linewise,n.visualBlock=!!t.blockwise,s=wt(e,E(i.line,i.ch+r-1),!0),n.sel={anchor:i,head:s},v.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""}),Wt(e),an(e,n,"<",Mt(i,s)),an(e,n,">",_t(i,s)))},reselectLastSelection:function(e,t,n){var r=n.lastSelection;n.visualMode&&Ut(e,n);if(r){var i=r.anchorMark.find(),s=r.headMark.find();if(!i||!s)return;n.sel={anchor:i,head:s},n.visualMode=!0,n.visualLine=r.visualLine,n.visualBlock=r.visualBlock,Wt(e),an(e,n,"<",Mt(i,s)),an(e,n,">",_t(i,s)),v.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""})}},joinLines:function(e,t,n){var r,i;if(n.visualMode){r=e.getCursor("anchor"),i=e.getCursor("head");if(Ot(i,r)){var s=i;i=r,r=s}i.ch=Pt(e,i.line)-1}else{var o=Math.max(t.repeat,2);r=e.getCursor(),i=wt(e,E(r.line+o-1,Infinity))}var u=0;for(var a=r.line;a<i.line;a++){u=Pt(e,r.line);var s=E(r.line+1,Pt(e,r.line+1)),f=e.getRange(r,s);f=f.replace(/\n\s*/g," "),e.replaceRange(f,r,s)}var l=E(r.line,u);n.visualMode&&$t(e,!1),e.setCursor(l)},newLineAndEnterInsertMode:function(e,t,n){n.insertMode=!0;var r=Lt(e.getCursor());if(r.line===e.firstLine()&&!t.after)e.replaceRange("\n",E(e.firstLine(),0)),e.setCursor(e.firstLine(),0);else{r.line=t.after?r.line:r.line-1,r.ch=Pt(e,r.line),e.setCursor(r);var i=v.commands.newlineAndIndentContinueComment||v.commands.newlineAndIndent;i(e)}this.enterInsertMode(e,{repeat:t.repeat},n)},paste:function(e,t,n){var r=Lt(e.getCursor()),i=nt.registerController.getRegister(t.registerName),s=i.toString();if(!s)return;if(t.matchIndent){var o=e.getOption("tabSize"),u=function(e){var t=e.split(" ").length-1,n=e.split(" ").length-1;return t*o+n*1},a=e.getLine(e.getCursor().line),f=u(a.match(/^\s*/)[0]),l=s.replace(/\n$/,""),c=s!==l,h=u(s.match(/^\s*/)[0]),s=l.replace(/^\s*/gm,function(t){var n=f+(u(t)-h);if(n<0)return"";if(e.getOption("indentWithTabs")){var r=Math.floor(n/o);return Array(r+1).join(" ")}return Array(n+1).join(" ")});s+=c?"\n":""}if(t.repeat>1)var s=Array(t.repeat+1).join(s);var p=i.linewise,d=i.blockwise;if(p&&!d)n.visualMode?s=n.visualLine?s.slice(0,-1):"\n"+s.slice(0,s.length-1)+"\n":t.after?(s="\n"+s.slice(0,s.length-1),r.ch=Pt(e,r.line)):r.ch=0;else{if(d){s=s.split("\n");for(var v=0;v<s.length;v++)s[v]=s[v]==""?" ":s[v]}r.ch+=t.after?1:0}var m,g;if(n.visualMode){n.lastPastedText=s;var y,b=Rt(e,n),w=b[0],S=b[1],x=e.getSelection(),T=e.listSelections(),N=(new Array(T.length)).join("1").split("1");n.lastSelection&&(y=n.lastSelection.headMark.find()),nt.registerController.unnamedRegister.setText(x),d?(e.replaceSelections(N),S=E(w.line+s.length-1,w.ch),e.setCursor(w),Ft(e,S),e.replaceSelections(s),m=w):n.visualBlock?(e.replaceSelections(N),e.setCursor(w),e.replaceRange(s,w,w),m=w):(e.replaceRange(s,w,S),m=e.posFromIndex(e.indexFromPos(w)+s.length-1)),y&&(n.lastSelection.headMark=e.setBookmark(y)),p&&(m.ch=0)}else if(d){e.setCursor(r);for(var v=0;v<s.length;v++){var C=r.line+v;C>e.lastLine()&&e.replaceRange("\n",E(C,0));var k=Pt(e,C);k<r.ch&&jt(e,C,r.ch)}e.setCursor(r),Ft(e,E(r.line+s.length-1,r.ch)),e.replaceSelections(s),m=r}else e.replaceRange(s,r),p&&t.after?m=E(r.line+1,Qt(e.getLine(r.line+1))):p&&!t.after?m=E(r.line,Qt(e.getLine(r.line))):!p&&t.after?(g=e.indexFromPos(r),m=e.posFromIndex(g+s.length-1)):(g=e.indexFromPos(r),m=e.posFromIndex(g+s.length));n.visualMode&&$t(e,!1),e.setCursor(m)},undo:function(e,t){e.operation(function(){kt(e,v.commands.undo,t.repeat)(),e.setCursor(e.getCursor("anchor"))})},redo:function(e,t){kt(e,v.commands.redo,t.repeat)()},setRegister:function(e,t,n){n.inputState.registerName=t.selectedCharacter},setMark:function(e,t,n){var r=t.selectedCharacter;an(e,n,r,e.getCursor())},replace:function(e,t,n){var r=t.selectedCharacter,i=e.getCursor(),s,o,u=e.listSelections();if(n.visualMode)i=e.getCursor("start"),o=e.getCursor("end");else{var a=e.getLine(i.line);s=i.ch+t.repeat,s>a.length&&(s=a.length),o=E(i.line,s)}if(r=="\n")n.visualMode||e.replaceRange("",i,o),(v.commands.newlineAndIndentContinueComment||v.commands.newlineAndIndent)(e);else{var f=e.getRange(i,o);f=f.replace(/[^\n]/g,r);if(n.visualBlock){var l=(new Array(e.getOption("tabSize")+1)).join(" ");f=e.getSelection(),f=f.replace(/\t/g,l).replace(/[^\n]/g,r).split("\n"),e.replaceSelections(f)}else e.replaceRange(f,i,o);n.visualMode?(i=Ot(u[0].anchor,u[0].head)?u[0].anchor:u[0].head,e.setCursor(i),$t(e,!1)):e.setCursor(St(o,0,-1))}},incrementNumberToken:function(e,t){var n=e.getCursor(),r=e.getLine(n.line),i=/-?\d+/g,s,o,u,a,f;while((s=i.exec(r))!==null){f=s[0],o=s.index,u=o+f.length;if(n.ch<u)break}if(!t.backtrack&&u<=n.ch)return;if(!f)return;var l=t.increase?1:-1,c=parseInt(f)+l*t.repeat,h=E(n.line,o),p=E(n.line,u);a=c.toString(),e.replaceRange(a,h,p),e.setCursor(E(n.line,o+a.length-1))},repeatLastEdit:function(e,t,n){var r=n.lastEditInputState;if(!r)return;var i=t.repeat;i&&t.repeatIsExplicit?n.lastEditInputState.repeatOverride=i:i=n.lastEditInputState.repeatOverride||i,Zn(e,n,i,!1)},exitInsertMode:qn},en={"(":"bracket",")":"bracket","{":"bracket","}":"bracket","[":"section","]":"section","*":"comment","/":"comment",m:"method",M:"method","#":"preprocess"},tn={bracket:{isComplete:function(e){if(e.nextCh===e.symb){e.depth++;if(e.depth>=1)return!0}else e.nextCh===e.reverseSymb&&e.depth--;return!1}},section:{init:function(e){e.curMoveThrough=!0,e.symb=(e.forward?"]":"[")===e.symb?"{":"}"},isComplete:function(e){return e.index===0&&e.nextCh===e.symb}},comment:{isComplete:function(e){var t=e.lastCh==="*"&&e.nextCh==="/";return e.lastCh=e.nextCh,t}},method:{init:function(e){e.symb=e.symb==="m"?"{":"}",e.reverseSymb=e.symb==="{"?"}":"{"},isComplete:function(e){return e.nextCh===e.symb?!0:!1}},preprocess:{init:function(e){e.index=0},isComplete:function(e){if(e.nextCh==="#"){var t=e.lineText.match(/#(\w+)/)[1];if(t==="endif"){if(e.forward&&e.depth===0)return!0;e.depth++}else if(t==="if"){if(!e.forward&&e.depth===0)return!0;e.depth--}if(t==="else"&&e.depth===0)return!0}return!1}}};K("pcre",!0,"boolean"),pn.prototype={getQuery:function(){return nt.query},setQuery:function(e){nt.query=e},getOverlay:function(){return this.searchOverlay},setOverlay:function(e){this.searchOverlay=e},isReversed:function(){return nt.isReversed},setReversed:function(e){nt.isReversed=e},getScrollbarAnnotate:function(){return this.annotate},setScrollbarAnnotate:function(e){this.annotate=e}};var bn={"\\n":"\n","\\r":"\r","\\t":" "},En={"\\/":"/","\\\\":"\\","\\n":"\n","\\r":"\r","\\t":" "},Cn="(Javascript regexp)",Bn=function(){this.buildCommandMap_()};Bn.prototype={processCommand:function(e,t,n){var r=this;e.operation(function(){e.curOp.isVimOp=!0,r._processCommand(e,t,n)})},_processCommand:function(e,t,n){var r=e.state.vim,i=nt.registerController.getRegister(":"),s=i.toString();r.visualMode&&$t(e);var o=new v.StringStream(t);i.setText(t);var u=n||{};u.input=t;try{this.parseInput_(e,o,u)}catch(a){throw Tn(e,a),a}var f,l;if(!u.commandName)u.line!==undefined&&(l="move");else{f=this.matchCommand_(u.commandName);if(f){l=f.name,f.excludeFromCommandHistory&&i.setText(s),this.parseCommandArgs_(o,u,f);if(f.type=="exToKey"){for(var c=0;c<f.toKeys.length;c++)v.Vim.handleKey(e,f.toKeys[c],"mapping");return}if(f.type=="exToEx"){this.processCommand(e,f.toInput);return}}}if(!l){Tn(e,'Not an editor command ":'+t+'"');return}try{jn[l](e,u),(!f||!f.possiblyAsync)&&u.callback&&u.callback()}catch(a){throw Tn(e,a),a}},parseInput_:function(e,t,n){t.eatWhile(":"),t.eat("%")?(n.line=e.firstLine(),n.lineEnd=e.lastLine()):(n.line=this.parseLineSpec_(e,t),n.line!==undefined&&t.eat(",")&&(n.lineEnd=this.parseLineSpec_(e,t)));var r=t.match(/^(\w+)/);return r?n.commandName=r[1]:n.commandName=t.match(/.*/)[0],n},parseLineSpec_:function(e,t){var n=t.match(/^(\d+)/);if(n)return parseInt(n[1],10)-1;switch(t.next()){case".":return e.getCursor().line;case"$":return e.lastLine();case"'":var r=e.state.vim.marks[t.next()];if(r&&r.find())return r.find().line;throw new Error("Mark not set");default:return t.backUp(1),undefined}},parseCommandArgs_:function(e,t,n){if(e.eol())return;t.argString=e.match(/.*/)[0];var r=n.argDelimiter||/\s+/,i=Ht(t.argString).split(r);i.length&&i[0]&&(t.args=i)},matchCommand_:function(e){for(var t=e.length;t>0;t--){var n=e.substring(0,t);if(this.commandMap_[n]){var r=this.commandMap_[n];if(r.name.indexOf(e)===0)return r}}return null},buildCommandMap_:function(){this.commandMap_={};for(var e=0;e<w.length;e++){var t=w[e],n=t.shortName||t.name;this.commandMap_[n]=t}},map:function(e,t,n){if(e!=":"&&e.charAt(0)==":"){if(n)throw Error("Mode not supported for ex mappings");var r=e.substring(1);t!=":"&&t.charAt(0)==":"?this.commandMap_[r]={name:r,type:"exToEx",toInput:t.substring(1),user:!0}:this.commandMap_[r]={name:r,type:"exToKey",toKeys:t,user:!0}}else if(t!=":"&&t.charAt(0)==":"){var i={keys:e,type:"keyToEx",exArgs:{input:t.substring(1)},user:!0};n&&(i.context=n),b.unshift(i)}else{var i={keys:e,type:"keyToKey",toKeys:t,user:!0};n&&(i.context=n),b.unshift(i)}},unmap:function(e,t){if(e!=":"&&e.charAt(0)==":"){if(t)throw Error("Mode not supported for ex mappings");var n=e.substring(1);if(this.commandMap_[n]&&this.commandMap_[n].user){delete this.commandMap_[n];return}}else{var r=e;for(var i=0;i<b.length;i++)if(r==b[i].keys&&b[i].context===t&&b[i].user){b.splice(i,1);return}}throw Error("No such mapping.")}};var jn={colorscheme:function(e,t){if(!t.args||t.args.length<1){Tn(e,e.getOption("theme"));return}e.setOption("theme",t.args[0])},map:function(e,t,n){var r=t.args;if(!r||r.length<2){e&&Tn(e,"Invalid mapping: "+t.input);return}Fn.map(r[0],r[1],n)},imap:function(e,t){this.map(e,t,"insert")},nmap:function(e,t){this.map(e,t,"normal")},vmap:function(e,t){this.map(e,t,"visual")},unmap:function(e,t,n){var r=t.args;if(!r||r.length<1){e&&Tn(e,"No such mapping: "+t.input);return}Fn.unmap(r[0],n)},move:function(e,t){ht.processCommand(e,e.state.vim,{type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0},repeatOverride:t.line+1})},set:function(e,t){var n=t.args,r=t.setCfg||{};if(!n||n.length<1){e&&Tn(e,"Invalid mapping: "+t.input);return}var i=n[0].split("="),s=i[0],o=i[1],u=!1;if(s.charAt(s.length-1)=="?"){if(o)throw Error("Trailing characters: "+t.argString);s=s.substring(0,s.length-1),u=!0}o===undefined&&s.substring(0,2)=="no"&&(s=s.substring(2),o=!1);var a=J[s]&&J[s].type=="boolean";a&&o==undefined&&(o=!0);if(!a&&o===undefined||u){var f=G(s,e,r);f===!0||f===!1?Tn(e," "+(f?"":"no")+s):Tn(e," "+s+"="+f)}else Q(s,o,e,r)},setlocal:function(e,t){t.setCfg={scope:"local"},this.set(e,t)},setglobal:function(e,t){t.setCfg={scope:"global"},this.set(e,t)},registers:function(e,t){var n=t.args,r=nt.registerController.registers,i="----------Registers----------<br><br>";if(!n)for(var s in r){var o=r[s].toString();o.length&&(i+='"'+s+" "+o+"<br>")}else{var s;n=n.join("");for(var u=0;u<n.length;u++){s=n.charAt(u);if(!nt.registerController.isValidRegister(s))continue;var a=r[s]||new at;i+='"'+s+" "+a.toString()+"<br>"}}Tn(e,i)},sort:function(e,t){function o(){if(t.argString){var e=new v.StringStream(t.argString);e.eat("!")&&(n=!0);if(e.eol())return;if(!e.eatSpace())return"Invalid arguments";var o=e.match(/[a-z]+/);if(o){o=o[0],r=o.indexOf("i")!=-1,i=o.indexOf("u")!=-1;var u=o.indexOf("d")!=-1&&1,a=o.indexOf("x")!=-1&&1,f=o.indexOf("o")!=-1&&1;if(u+a+f>1)return"Invalid arguments";s=u&&"decimal"||a&&"hex"||f&&"octal"}if(e.match(/\/.*\//))return"patterns not supported"}}function b(e,t){if(n){var i;i=e,e=t,t=i}r&&(e=e.toLowerCase(),t=t.toLowerCase());var o=s&&p.exec(e),u=s&&p.exec(t);return o?(o=parseInt((o[1]+o[2]).toLowerCase(),d),u=parseInt((u[1]+u[2]).toLowerCase(),d),o-u):e<t?-1:1}var n,r,i,s,u=o();if(u){Tn(e,u+": "+t.argString);return}var a=t.line||e.firstLine(),f=t.lineEnd||t.line||e.lastLine();if(a==f)return;var l=E(a,0),c=E(f,Pt(e,f)),h=e.getRange(l,c).split("\n"),p=s=="decimal"?/(-?)([\d]+)/:s=="hex"?/(-?)(?:0x)?([0-9a-f]+)/i:s=="octal"?/([0-7]+)/:null,d=s=="decimal"?10:s=="hex"?16:s=="octal"?8:null,m=[],g=[];if(s)for(var y=0;y<h.length;y++)p.exec(h[y])?m.push(h[y]):g.push(h[y]);else g=h;m.sort(b),g.sort(b),h=n?m.concat(g):g.concat(m);if(i){var w=h,S;h=[];for(var y=0;y<w.length;y++)w[y]!=S&&h.push(w[y]),S=w[y]}e.replaceRange(h.join("\n"),l,c)},global:function(e,t){var n=t.argString;if(!n){Tn(e,"Regular Expression missing from global");return}var r=t.line!==undefined?t.line:e.firstLine(),i=t.lineEnd||t.line||e.lastLine(),s=mn(n),o=n,u;s.length&&(o=s[0],u=s.slice(1,s.length).join("/"));if(o)try{An(e,o,!0,!0)}catch(a){Tn(e,"Invalid regex: "+o);return}var f=dn(e).getQuery(),l=[],c="";for(var h=r;h<=i;h++){var p=f.test(e.getLine(h));p&&(l.push(h+1),c+=e.getLine(h)+"<br>")}if(!u){Tn(e,c);return}var d=0,v=function(){if(d<l.length){var t=l[d]+u;Fn.processCommand(e,t,{callback:v})}d++};v()},substitute:function(e,t){if(!e.getSearchCursor)throw new Error("Search feature not available. Requires searchcursor.js or any other getSearchCursor implementation.");var n=t.argString,r=n?mn(n):[],i,s="",o,u,a,f=!1,l=!1;if(r.length)i=r[0],s=r[1],s!==undefined&&(G("pcre")?s=Sn(s):s=wn(s),nt.lastSubstituteReplacePart=s),o=r[2]?r[2].split(" "):[];else if(n&&n.length){Tn(e,"Substitutions should be of the form :s/pattern/replace/");return}o&&(u=o[0],a=parseInt(o[1]),u&&(u.indexOf("c")!=-1&&(f=!0,u.replace("c","")),u.indexOf("g")!=-1&&(l=!0,u.replace("g","")),i=i+"/"+u));if(i)try{An(e,i,!0,!0)}catch(c){Tn(e,"Invalid regex: "+i);return}s=s||nt.lastSubstituteReplacePart;if(s===undefined){Tn(e,"No previous substitute regular expression");return}var h=dn(e),p=h.getQuery(),d=t.line!==undefined?t.line:e.getCursor().line,v=t.lineEnd||d;d==e.firstLine()&&v==e.lastLine()&&(v=Infinity),a&&(d=v,v=d+a-1);var m=wt(e,E(d,0)),g=e.getSearchCursor(p,m);In(e,f,l,d,v,g,p,s,t.callback)},redo:v.commands.redo,undo:v.commands.undo,write:function(e){v.commands.save?v.commands.save(e):e.save()},nohlsearch:function(e){Dn(e)},delmarks:function(e,t){if(!t.argString||!Ht(t.argString)){Tn(e,"Argument required");return}var n=e.state.vim,r=new v.StringStream(Ht(t.argString));while(!r.eol()){r.eatSpace();var i=r.pos;if(!r.match(/[a-zA-Z]/,!1)){Tn(e,"Invalid argument: "+t.argString.substring(i));return}var s=r.next();if(r.match("-",!0)){if(!r.match(/[a-zA-Z]/,!1)){Tn(e,"Invalid argument: "+t.argString.substring(i));return}var o=s,u=r.next();if(!(U(o)&&U(u)||X(o)&&X(u))){Tn(e,"Invalid argument: "+o+"-");return}var a=o.charCodeAt(0),f=u.charCodeAt(0);if(a>=f){Tn(e,"Invalid argument: "+t.argString.substring(i));return}for(var l=0;l<=f-a;l++){var c=String.fromCharCode(a+l);delete n.marks[c]}}else delete n.marks[s]}}},Fn=new Bn;v.keyMap.vim={attach:C,detach:N,call:k},K("insertModeEscKeysTimeout",200,"number"),v.keyMap["vim-insert"]={"Ctrl-N":"autocomplete","Ctrl-P":"autocomplete",Enter:function(e){var t=v.commands.newlineAndIndentContinueComment||v.commands.newlineAndIndent;t(e)},fallthrough:["default"],attach:C,detach:N,call:k},v.keyMap["vim-replace"]={Backspace:"goCharLeft",fallthrough:["vim-insert"],attach:C,detach:N,call:k},rt(),v.Vim=S(),S=v.Vim;var tr={"return":"CR",backspace:"BS","delete":"Del",esc:"Esc",left:"Left",right:"Right",up:"Up",down:"Down",space:"Space",home:"Home",end:"End",pageup:"PageUp",pagedown:"PageDown",enter:"CR"},rr=S.handleKey.bind(S);S.handleKey=function(e,t,n){return e.operation(function(){return rr(e,t,n)},!0)},t.CodeMirror=v;var or=S.maybeInitVimState_;t.handler={$id:"ace/keyboard/vim",drawCursor:function(e,t,n,r,s){var o=this.state.vim||{},u=n.characterWidth,a=n.lineHeight,f=t.top,l=t.left;if(!o.insertMode){var c=r.cursor?i.comparePoints(r.cursor,r.start)<=0:s.selection.isBackwards()||s.selection.isEmpty();!c&&l>u&&(l-=u)}!o.insertMode&&o.status&&(a/=2,f+=a),e.left=l+"px",e.top=f+"px",e.width=u+"px",e.height=a+"px"},handleKeyboard:function(e,t,n,r,i){var s=e.editor,o=s.state.cm,u=or(o);if(r==-1)return;if(n=="c"&&t==1){if(!c.isMac&&s.getCopyText())return s.once("copy",function(){s.selection.clearSelection()}),{command:"null",passEvent:!0}}else u.insertMode||c.isMac&&this.handleMacRepeat(e,t,n)&&(t=-1,n=e.inputChar);if(t==-1||t&1||t===0&&n.length>1){var a=u.insertMode,f=nr(t,n,i||{});u.status==null&&(u.status="");var l=sr(o,f,"user");u=or(o),l&&u.status!=null?u.status+=f:u.status==null&&(u.status=""),o._signal("changeStatus");if(!l&&(t!=-1||a))return;return{command:"null",passEvent:!l}}},attach:function(e){e.state||(e.state={});var t=new v(e);e.state.cm=t,e.$vimModeHandler=this,v.keyMap.vim.attach(t),or(t).status=null,t.on("vim-command-done",function(){if(t.virtualSelectionMode())return;or(t).status=null,t.ace._signal("changeStatus"),t.ace.session.markUndoGroup()}),t.on("changeStatus",function(){t.ace.renderer.updateCursor(),t.ace._signal("changeStatus")}),t.on("vim-mode-change",function(){if(t.virtualSelectionMode())return;t.ace.renderer.setStyle("normal-mode",!or(t).insertMode),t._signal("changeStatus")}),t.ace.renderer.setStyle("normal-mode",!or(t).insertMode),e.renderer.$cursorLayer.drawCursor=this.drawCursor.bind(t),this.updateMacCompositionHandlers(e,!0)},detach:function(e){var t=e.state.cm;v.keyMap.vim.detach(t),t.destroy(),e.state.cm=null,e.$vimModeHandler=null,e.renderer.$cursorLayer.drawCursor=null,e.renderer.setStyle("normal-mode",!1),this.updateMacCompositionHandlers(e,!1)},getStatusText:function(e){var t=e.state.cm,n=or(t);if(n.insertMode)return"INSERT";var r="";return n.visualMode&&(r+="VISUAL",n.visualLine&&(r+=" LINE"),n.visualBlock&&(r+=" BLOCK")),n.status&&(r+=(r?" ":"")+n.status),r},handleMacRepeat:function(e,t,n){if(t==-1)e.inputChar=n,e.lastEvent="input";else if(e.inputChar&&e.$lastHash==t&&e.$lastKey==n){if(e.lastEvent=="input")e.lastEvent="input1";else if(e.lastEvent=="input1")return!0}else e.$lastHash=t,e.$lastKey=n,e.lastEvent="keypress"},updateMacCompositionHandlers:function(e,t){var n=function(t){var n=e.state.cm,r=or(n);if(!r.insertMode){var i=this.textInput.getElement();i.blur(),i.focus(),i.value=t}else this.onCompositionUpdateOrig(t)},r=function(t){var n=e.state.cm,r=or(n);r.insertMode||this.onCompositionStartOrig(t)};t?e.onCompositionUpdateOrig||(e.onCompositionUpdateOrig=e.onCompositionUpdate,e.onCompositionUpdate=n,e.onCompositionStartOrig=e.onCompositionStart,e.onCompositionStart=r):e.onCompositionUpdateOrig&&(e.onCompositionUpdate=e.onCompositionUpdateOrig,e.onCompositionUpdateOrig=null,e.onCompositionStart=e.onCompositionStartOrig,e.onCompositionStartOrig=null)}};var ur={getText:function(e,t){return(Math.abs(e.selection.lead.row-t)||t+1+(t<9?"\u00b7":""))+""},getWidth:function(e,t,n){return e.getLength().toString().length*n.characterWidth},update:function(e,t){t.renderer.$loop.schedule(t.renderer.CHANGE_GUTTER)},attach:function(e){e.renderer.$gutterLayer.$renderer=this,e.on("changeSelection",this.update)},detach:function(e){e.renderer.$gutterLayer.$renderer=null,e.off("changeSelection",this.update)}};S.defineOption({name:"wrap",set:function(e,t){t&&t.ace.setOption("wrap",e)},type:"boolean"},!1),S.defineEx("write","w",function(){console.log(":write is not implemented")}),b.push({keys:"zc",type:"action",action:"fold",actionArgs:{open:!1}},{keys:"zC",type:"action",action:"fold",actionArgs:{open:!1,all:!0}},{keys:"zo",type:"action",action:"fold",actionArgs:{open:!0}},{keys:"zO",type:"action",action:"fold",actionArgs:{open:!0,all:!0}},{keys:"za",type:"action",action:"fold",actionArgs:{toggle:!0}},{keys:"zA",type:"action",action:"fold",actionArgs:{toggle:!0,all:!0}},{keys:"zf",type:"action",action:"fold",actionArgs:{open:!0,all:!0}},{keys:"zd",type:"action",action:"fold",actionArgs:{open:!0,all:!0}},{keys:"<C-A-k>",type:"action",action:"aceCommand",actionArgs:{name:"addCursorAbove"}},{keys:"<C-A-j>",type:"action",action:"aceCommand",actionArgs:{name:"addCursorBelow"}},{keys:"<C-A-S-k>",type:"action",action:"aceCommand",actionArgs:{name:"addCursorAboveSkipCurrent"}},{keys:"<C-A-S-j>",type:"action",action:"aceCommand",actionArgs:{name:"addCursorBelowSkipCurrent"}},{keys:"<C-A-h>",type:"action",action:"aceCommand",actionArgs:{name:"selectMoreBefore"}},{keys:"<C-A-l>",type:"action",action:"aceCommand",actionArgs:{name:"selectMoreAfter"}},{keys:"<C-A-S-h>",type:"action",action:"aceCommand",actionArgs:{name:"selectNextBefore"}},{keys:"<C-A-S-l>",type:"action",action:"aceCommand",actionArgs:{name:"selectNextAfter"}}),yt.aceCommand=function(e,t,n){e.vimCmd=t,e.ace.inVirtualSelectionMode?e.ace.on("beforeEndOperation",ar):ar(null,e.ace)},yt.fold=function(e,t,n){e.ace.execCommand(["toggleFoldWidget","toggleFoldWidget","foldOther","unfoldall"][(t.all?2:0)+(t.open?1:0)])},t.handler.defaultKeymap=b,t.handler.actions=yt,t.Vim=S,S.map("Y","yy","normal")}) \ No newline at end of file
diff --git a/library/ace/mode-abap.js b/library/ace/mode-abap.js
new file mode 100644
index 000000000..f79f2983e
--- /dev/null
+++ b/library/ace/mode-abap.js
@@ -0,0 +1 @@
+ace.define("ace/mode/abap_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({"variable.language":"this",keyword:"ADD ALIAS ALIASES ASCENDING ASSERT ASSIGN ASSIGNING AT BACK CALL CASE CATCH CHECK CLASS CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY DATA DEFINE DEFINITION DEFERRED DELETE DESCENDING DESCRIBE DETAIL DIVIDE DO ELSE ELSEIF ENDAT ENDCASE ENDCLASS ENDDO ENDEXEC ENDFORM ENDFUNCTION ENDIF ENDIFEND ENDINTERFACE ENDLOOP ENDMETHOD ENDMODULE ENDON ENDPROVIDE ENDSELECT ENDTRY ENDWHILE EVENT EVENTS EXEC EXIT EXPORT EXPORTING EXTRACT FETCH FIELDS FORM FORMAT FREE FROM FUNCTION GENERATE GET HIDE IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INTERFACE INTERFACES INPUT INSERT IMPLEMENTATION LEAVE LIKE LINE LOAD LOCAL LOOP MESSAGE METHOD METHODS MODIFY MODULE MOVE MULTIPLY ON OVERLAY OPTIONAL OTHERS PACK PARAMETERS PERFORM POSITION PROGRAM PROVIDE PUT RAISE RANGES READ RECEIVE RECEIVING REDEFINITION REFERENCE REFRESH REJECT REPLACE REPORT RESERVE RESTORE RETURN RETURNING ROLLBACK SCAN SCROLL SEARCH SELECT SET SHIFT SKIP SORT SORTED SPLIT STANDARD STATICS STEP STOP SUBMIT SUBTRACT SUM SUMMARY SUPPRESS TABLES TIMES TRANSFER TRANSLATE TRY TYPE TYPES UNASSIGN ULINE UNPACK UPDATE WHEN WHILE WINDOW WRITE OCCURS STRUCTURE OBJECT PROPERTY CASTING APPEND RAISING VALUE COLOR CHANGING EXCEPTION EXCEPTIONS DEFAULT CHECKBOX COMMENT ID NUMBER FOR TITLE OUTPUT WITH EXIT USING INTO WHERE GROUP BY HAVING ORDER BY SINGLE APPENDING CORRESPONDING FIELDS OF TABLE LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER UP TO ROWS CONNECTING EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN","constant.language":"TRUE FALSE NULL SPACE","support.type":"c n i p f d t x string xstring decfloat16 decfloat34","keyword.operator":"abs sign ceil floor trunc frac acos asin atan cos sin tan abapOperator cosh sinh tanh exp log log10 sqrt strlen xstrlen charlen numofchar dbmaxlen lines"},"text",!0," "),t="WITH\\W+(?:HEADER\\W+LINE|FRAME|KEY)|NO\\W+STANDARD\\W+PAGE\\W+HEADING|EXIT\\W+FROM\\W+STEP\\W+LOOP|BEGIN\\W+OF\\W+(?:BLOCK|LINE)|BEGIN\\W+OF|END\\W+OF\\W+(?:BLOCK|LINE)|END\\W+OF|NO\\W+INTERVALS|RESPECTING\\W+BLANKS|SEPARATED\\W+BY|USING\\W+(?:EDIT\\W+MASK)|WHERE\\W+(?:LINE)|RADIOBUTTON\\W+GROUP|REF\\W+TO|(?:PUBLIC|PRIVATE|PROTECTED)(?:\\W+SECTION)?|DELETING\\W+(?:TRAILING|LEADING)(?:ALL\\W+OCCURRENCES)|(?:FIRST|LAST)\\W+OCCURRENCE|INHERITING\\W+FROM|LINE-COUNT|ADD-CORRESPONDING|AUTHORITY-CHECK|BREAK-POINT|CLASS-DATA|CLASS-METHODS|CLASS-METHOD|DIVIDE-CORRESPONDING|EDITOR-CALL|END-OF-DEFINITION|END-OF-PAGE|END-OF-SELECTION|FIELD-GROUPS|FIELD-SYMBOLS|FUNCTION-POOL|MOVE-CORRESPONDING|MULTIPLY-CORRESPONDING|NEW-LINE|NEW-PAGE|NEW-SECTION|PRINT-CONTROL|RP-PROVIDE-FROM-LAST|SELECT-OPTIONS|SELECTION-SCREEN|START-OF-SELECTION|SUBTRACT-CORRESPONDING|SYNTAX-CHECK|SYNTAX-TRACE|TOP-OF-PAGE|TYPE-POOL|TYPE-POOLS|LINE-SIZE|LINE-COUNT|MESSAGE-ID|DISPLAY-MODE|READ(?:-ONLY)?|IS\\W+(?:NOT\\W+)?(?:ASSIGNED|BOUND|INITIAL|SUPPLIED)";this.$rules={start:[{token:"string",regex:"`",next:"string"},{token:"string",regex:"'",next:"qstring"},{token:"doc.comment",regex:/^\*.+/},{token:"comment",regex:/".+$/},{token:"invalid",regex:"\\.{2,}"},{token:"keyword.operator",regex:/\W[\-+\%=<>*]\W|\*\*|[~:,\.&$]|->*?|=>/},{token:"paren.lparen",regex:"[\\[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"constant.numeric",regex:"[+-]?\\d+\\b"},{token:"variable.parameter",regex:/sy|pa?\d\d\d\d\|t\d\d\d\.|innnn/},{token:"keyword",regex:t},{token:"variable.parameter",regex:/\w+-\w+(?:-\w+)*/},{token:e,regex:"\\b\\w+\\b"},{caseInsensitive:!0}],qstring:[{token:"constant.language.escape",regex:"''"},{token:"string",regex:"'",next:"start"},{defaultToken:"string"}],string:[{token:"constant.language.escape",regex:"``"},{token:"string",regex:"`",next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.AbapHighlightRules=s}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/abap",["require","exports","module","ace/mode/abap_highlight_rules","ace/mode/folding/coffee","ace/range","ace/mode/text","ace/lib/oop"],function(e,t,n){"use strict";function a(){this.HighlightRules=r,this.foldingRules=new i}var r=e("./abap_highlight_rules").AbapHighlightRules,i=e("./folding/coffee").FoldMode,s=e("../range").Range,o=e("./text").Mode,u=e("../lib/oop");u.inherits(a,o),function(){this.lineCommentStart='"',this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);return r},this.$id="ace/mode/abap"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-abc.js b/library/ace/mode-abc.js
new file mode 100644
index 000000000..da3a55306
--- /dev/null
+++ b/library/ace/mode-abc.js
@@ -0,0 +1 @@
+ace.define("ace/mode/abc_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["zupfnoter.information.comment.line.percentage","information.keyword","in formation.keyword.embedded"],regex:"(%%%%)(hn\\.[a-z]*)(.*)",comment:"Instruction Comment"},{token:["information.comment.line.percentage","information.keyword.embedded"],regex:"(%%)(.*)",comment:"Instruction Comment"},{token:"comment.line.percentage",regex:"%.*",comment:"Comments"},{token:"barline.keyword.operator",regex:"[\\[:]*[|:][|\\]:]*(?:\\[?[0-9]+)?|\\[[0-9]+",comment:"Bar lines"},{token:["information.keyword.embedded","information.argument.string.unquoted"],regex:"(\\[[A-Za-z]:)([^\\]]*\\])",comment:"embedded Header lines"},{token:["information.keyword","information.argument.string.unquoted"],regex:"^([A-Za-z]:)([^%\\\\]*)",comment:"Header lines"},{token:["text","entity.name.function","string.unquoted","text"],regex:"(\\[)([A-Z]:)(.*?)(\\])",comment:"Inline fields"},{token:["accent.constant.language","pitch.constant.numeric","duration.constant.numeric"],regex:"([\\^=_]*)([A-Ga-gz][,']*)([0-9]*/*[><0-9]*)",comment:"Notes"},{token:"zupfnoter.jumptarget.string.quoted",regex:'[\\"!]\\^\\:.*?[\\"!]',comment:"Zupfnoter jumptarget"},{token:"zupfnoter.goto.string.quoted",regex:'[\\"!]\\^\\@.*?[\\"!]',comment:"Zupfnoter goto"},{token:"zupfnoter.annotation.string.quoted",regex:'[\\"!]\\^\\!.*?[\\"!]',comment:"Zupfnoter annoation"},{token:"zupfnoter.annotationref.string.quoted",regex:'[\\"!]\\^\\#.*?[\\"!]',comment:"Zupfnoter annotation reference"},{token:"chordname.string.quoted",regex:'[\\"!]\\^.*?[\\"!]',comment:"abc chord"},{token:"string.quoted",regex:'[\\"!].*?[\\"!]',comment:"abc annotation"}]},this.normalizeRules()};s.metaData={fileTypes:["abc"],name:"ABC",scopeName:"text.abcnotation"},r.inherits(s,i),t.ABCHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/abc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/abc_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./abc_highlight_rules").ABCHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.$id="ace/mode/abc"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-actionscript.js b/library/ace/mode-actionscript.js
new file mode 100644
index 000000000..9ae91574f
--- /dev/null
+++ b/library/ace/mode-actionscript.js
@@ -0,0 +1 @@
+ace.define("ace/mode/actionscript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"support.class.actionscript.2",regex:"\\b(?:R(?:ecordset|DBMSResolver|adioButton(?:Group)?)|X(?:ML(?:Socket|Node|Connector)?|UpdateResolverDataHolder)|M(?:M(?:Save|Execute)|icrophoneMicrophone|o(?:use|vieClip(?:Loader)?)|e(?:nu(?:Bar)?|dia(?:Controller|Display|Playback))|ath)|B(?:yName|inding|utton)|S(?:haredObject|ystem|crollPane|t(?:yleSheet|age|ream)|ound|e(?:ndEvent|rviceObject)|OAPCall|lide)|N(?:umericStepper|et(?:stream|S(?:tream|ervices)|Connection|Debug(?:Config)?))|C(?:heckBox|o(?:ntextMenu(?:Item)?|okie|lor|m(?:ponentMixins|boBox))|ustomActions|lient|amera)|T(?:ypedValue|ext(?:Snapshot|Input|F(?:ield|ormat)|Area)|ree|AB)|Object|D(?:ownload|elta(?:Item|Packet)?|at(?:e(?:Chooser|Field)?|a(?:G(?:lue|rid)|Set|Type)))|U(?:RL|TC|IScrollBar)|P(?:opUpManager|endingCall|r(?:intJob|o(?:duct|gressBar)))|E(?:ndPoint|rror)|Video|Key|F(?:RadioButton|GridColumn|MessageBox|BarChart|S(?:croll(?:Bar|Pane)|tyleFormat|plitView)|orm|C(?:heckbox|omboBox|alendar)|unction|T(?:icker|ooltip(?:Lite)?|ree(?:Node)?)|IconButton|D(?:ataGrid|raggablePane)|P(?:ieChart|ushButton|ro(?:gressBar|mptBox))|L(?:i(?:stBox|neChart)|oadingBox)|AdvancedMessageBox)|W(?:indow|SDLURL|ebService(?:Connector)?)|L(?:ist|o(?:calConnection|ad(?:er|Vars)|g)|a(?:unch|bel))|A(?:sBroadcaster|cc(?:ordion|essibility)|S(?:Set(?:Native|PropFlags)|N(?:ew|ative)|C(?:onstructor|lamp(?:2)?)|InstanceOf)|pplication|lert|rray))\\b"},{token:"support.function.actionscript.2",regex:"\\b(?:s(?:h(?:ift|ow(?:GridLines|Menu|Border|Settings|Headers|ColumnHeaders|Today|Preferences)?|ad(?:ow|ePane))|c(?:hema|ale(?:X|Mode|Y|Content)|r(?:oll(?:Track|Drag)?|een(?:Resolution|Color|DPI)))|t(?:yleSheet|op(?:Drag|A(?:nimation|llSounds|gent))?|epSize|a(?:tus|rt(?:Drag|A(?:nimation|gent))?))|i(?:n|ze|lence(?:TimeOut|Level))|o(?:ngname|urce|rt(?:Items(?:By)?|On(?:HeaderRelease)?|able(?:Columns)?)?)|u(?:ppressInvalidCalls|bstr(?:ing)?)|p(?:li(?:ce|t)|aceCol(?:umnsEqually|lumnsEqually))|e(?:nd(?:DefaultPushButtonEvent|AndLoad)?|curity|t(?:R(?:GB|o(?:otNode|w(?:Height|Count))|esizable(?:Columns)?|a(?:nge|te))|G(?:ain|roupName)|X(?:AxisTitle)?|M(?:i(?:n(?:imum|utes)|lliseconds)|o(?:nth(?:Names)?|tionLevel|de)|ultilineMode|e(?:ssage|nu(?:ItemEnabled(?:At)?|EnabledAt)|dia)|a(?:sk|ximum))|B(?:u(?:tton(?:s|Width)|fferTime)|a(?:seTabIndex|ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Target|P(?:osition|roperties)|barState|Location)|t(?:yle(?:Property)?|opOnFocus|at(?:us|e))|i(?:ze|lenceLevel)|ort(?:able(?:Columns)?|Function)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)?|Style|Color|ed(?:Node(?:s)?|Cell|I(?:nd(?:ices|ex)|tem(?:s)?))?|able))|kin|m(?:oothness|allScroll))|H(?:ighlight(?:s|Color)|Scroll|o(?:urs|rizontal)|eader(?:Symbol|Height|Text|Property|Format|Width|Location)?|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:ode(?:Properties|ExpansionHandler)|ewTextFormat)|C(?:h(?:ildNodes|a(?:ngeHandler|rt(?:Title|EventHandler)))|o(?:ntent(?:Size)?|okie|lumns)|ell(?:Symbol|Data)|l(?:i(?:ckHandler|pboard)|oseHandler)|redentials)|T(?:ype(?:dVaule)?|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:out(?:Handler)?)?)|oggle|extFormat|ransform)|I(?:s(?:Branch|Open)|n(?:terval|putProperty)|con(?:SymbolName)?|te(?:rator|m(?:ByKey|Symbol)))|Orientation|D(?:i(?:splay(?:Range|Graphics|Mode|Clip|Text|edMonth)|rection)|uration|e(?:pth(?:Below|To|Above)|fault(?:GatewayURL|Mappings|NodeIconSymbolName)|l(?:iveryMode|ay)|bug(?:ID)?)|a(?:yOfWeekNames|t(?:e(?:Filter)?|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Provider|All(?:Height|Property|Format|Width))?))|ra(?:wConnectors|gContent))|U(?:se(?:Shadow|HandCursor|EchoSuppression|rInput|Fade)|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear))|P(?:osition|ercentComplete|an(?:e(?:M(?:inimumSize|aximumSize)|Size|Title))?|ro(?:pert(?:y(?:Data)?|iesAt)|gress))|E(?:nabled|dit(?:Handler|able)|xpand(?:NodeTrigger|erSymbolName))|V(?:Scroll|olume|alue(?:Source)?)|KeyFrameInterval|Quality|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|ocus|ullYear|ps|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:opback|adTarget)|a(?:rgeScroll|bel(?:Source|Placement)?))|A(?:s(?:Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:e(?:State(?:Handler)?|Handler)|ateHandler)|utoH(?:ideScrollBar|eight)))?|paratorBefore|ek|lect(?:ion(?:Disabled|Unfocused)?|ed(?:Node(?:s)?|Child|I(?:nd(?:ices|ex)|tem(?:s)?)|Dat(?:e|a))?|able(?:Ranges)?)|rver(?:String)?)|kip|qrt|wapDepths|lice|aveToSharedObj|moothing)|h(?:scroll(?:Policy)?|tml(?:Text)?|i(?:t(?:Test(?:TextNearPos)?|Area)|de(?:BuiltInItems|Child)?|ghlight(?:2D|3D)?)|orizontal|e(?:ight|ader(?:Re(?:nderer|lease)|Height|Text))|P(?:osition|ageScrollSize)|a(?:s(?:childNodes|MP3|S(?:creen(?:Broadcast|Playback)|treaming(?:Video|Audio)|ort)|Next|OwnProperty|Pr(?:inting|evious)|EmbeddedVideo|VideoEncoder|A(?:ccesibility|udio(?:Encoder)?))|ndlerName)|LineScrollSize)|ye(?:sLabel|ar)|n(?:o(?:t|de(?:Name|Close|Type|Open|Value)|Label)|u(?:llValue|mChild(?:S(?:creens|lides)|ren|Forms))|e(?:w(?:Item|line|Value|LocationDialog)|xt(?:S(?:cene|ibling|lide)|TabIndex|Value|Frame)?)?|ame(?:s)?)|c(?:h(?:ildNodes|eck|a(?:nge(?:sPending)?|r(?:CodeAt|At))|r)|o(?:s|n(?:st(?:ant|ructor)|nect|c(?:urrency|at)|t(?:ent(?:Type|Path)?|ains|rol(?:Placement|lerPolicy))|denseWhite|version)|py|l(?:or|umn(?:Stretch|Name(?:s)?|Count))|m(?:p(?:onent|lete)|ment))|u(?:stomItems|ePoint(?:s)?|r(?:veTo|Value|rent(?:Slide|ChildSlide|Item|F(?:ocused(?:S(?:creen|lide)|Form)|ps))))|e(?:il|ll(?:Renderer|Press|Edit|Focus(?:In|Out)))|l(?:i(?:ck|ents)|o(?:se(?:Button|Pane)?|ne(?:Node)?)|ear(?:S(?:haredObjects|treams)|Timeout|Interval)?)|a(?:ncelLabel|tch|p(?:tion|abilities)|l(?:cFields|l(?:e(?:e|r))?))|reate(?:GatewayConnection|Menu|Se(?:rver|gment)|C(?:hild(?:AtDepth)?|l(?:ient|ass(?:ChildAtDepth|Object(?:AtDepth)?))|all)|Text(?:Node|Field)|Item|Object(?:AtDepth)?|PopUp|E(?:lement|mptyMovieClip)))|t(?:h(?:is|row)|ype(?:of|Name)?|i(?:tle(?:StyleDeclaration)?|me(?:out)?)|o(?:talTime|String|olTipText|p|UpperCase|ggle(?:HighQuality)?|Lo(?:caleString|werCase))|e(?:st|llTarget|xt(?:RightMargin|Bold|S(?:ize|elected)|Height|Color|I(?:ndent|talic)|Disabled|Underline|F(?:ield|ont)|Width|LeftMargin|Align)?)|a(?:n|rget(?:Path)?|b(?:Stops|Children|Index|Enabled|leName))|r(?:y|igger|ac(?:e|k(?:AsMenu)?)))|i(?:s(?:Running|Branch|NaN|Con(?:soleOpen|nected)|Toggled|Installed|Open|D(?:own|ebugger)|P(?:urchased|ro(?:totypeOf|pertyEnumerable))|Empty|F(?:inite|ullyPopulated)|Local|Active)|n(?:s(?:tall|ertBefore)|cludeDeltaPacketInfo|t|it(?:ialize|Component|Pod|A(?:pplication|gent))?|de(?:nt|terminate|x(?:InParent(?:Slide|Form)?|Of)?)|put|validate|finity|LocalInternetCache)?|con(?:F(?:ield|unction))?|t(?:e(?:ratorScrolled|m(?:s|RollO(?:ut|ver)|ClassName))|alic)|d3|p|fFrameLoaded|gnore(?:Case|White))|o(?:s|n(?:R(?:ollO(?:ut|ver)|e(?:s(?:ize|ult)|l(?:ease(?:Outside)?|aseOutside)))|XML|Mouse(?:Move|Down|Up|Wheel)|S(?:ync|croller|tatus|oundComplete|e(?:tFocus|lect(?:edItem)?))|N(?:oticeEvent|etworkChange)|C(?:hanged|onnect|l(?:ipEvent|ose))|ID3|D(?:isconnect|eactivate|ata|ragO(?:ut|ver))|Un(?:install|load)|P(?:aymentResult|ress)|EnterFrame|K(?:illFocus|ey(?:Down|Up))|Fault|Lo(?:ad|g)|A(?:ctiv(?:ity|ate)|ppSt(?:op|art)))?|pe(?:n|ration)|verLayChildren|kLabel|ldValue|r(?:d)?)|d(?:i(?:s(?:connect|play(?:Normal|ed(?:Month|Year)|Full)|able(?:Shader|d(?:Ranges|Days)|CloseBox|Events))|rection)|o(?:cTypeDecl|tall|Decoding|main|LazyDecoding)|u(?:plicateMovieClip|ration)|e(?:stroy(?:ChildAt|Object)|code|fault(?:PushButton(?:Enabled)?|KeydownHandler)?|l(?:ta(?:Packet(?:Changed)?)?|ete(?:PopUp|All)?)|blocking)|a(?:shBoardSave|yNames|ta(?:Provider)?|rkshadow)|r(?:opdown(?:Width)?|a(?:w|gO(?:ut|ver))))|u(?:se(?:Sort|HandCursor|Codepage|EchoSuppression)|n(?:shift|install|derline|escape|format|watch|lo(?:ck|ad(?:Movie(?:Num)?)?))|pdate(?:Results|Mode|I(?:nputProperties|tem(?:ByIndex)?)|P(?:acket|roperties)|View|AfterEvent)|rl)|join|p(?:ixelAspectRatio|o(?:sition|p|w)|u(?:sh|rge|blish)|ercen(?:tComplete|Loaded)|lay(?:head(?:Change|Time)|ing|Hidden|erType)?|a(?:ssword|use|r(?:se(?:XML|CSS|Int|Float)|ent(?:Node|Is(?:S(?:creen|lide)|Form))|ams))|r(?:int(?:Num|AsBitmap(?:Num)?)?|o(?:to(?:type)?|pert(?:y|ies)|gress)|e(?:ss|v(?:ious(?:S(?:ibling|lide)|Value)?|Scene|Frame)|ferred(?:Height|Width))))|e(?:scape|n(?:code(?:r)?|ter(?:Frame)?|dFill|able(?:Shader|d|CloseBox|Events))|dit(?:able|Field|LocationDialog)|v(?:ent|al(?:uate)?)|q|x(?:tended|p|ec(?:ute)?|actSettings)|m(?:phasized(?:StyleDeclaration)?|bedFonts))|v(?:i(?:sible|ewPod)|ScrollPolicy|o(?:id|lume)|ersion|P(?:osition|ageScrollSize)|a(?:l(?:idat(?:ionError|e(?:Property|ActivationKey)?)|ue(?:Of)?)|riable)|LineScrollSize)|k(?:ind|ey(?:Down|Up|Press|FrameInterval))|q(?:sort|uality)|f(?:scommand|i(?:n(?:d(?:Text|First|Last)?|ally)|eldInfo|lter(?:ed|Func)?|rst(?:Slide|Child|DayOfWeek|VisibleNode)?)|o(?:nt|cus(?:In|edCell|Out|Enabled)|r(?:egroundDisabled|mat(?:ter)?))|unctionName|ps|l(?:oor|ush)|ace|romCharCode)|w(?:i(?:th|dth)|ordWrap|atch|riteAccess)|l(?:t|i(?:st(?:Owner)?|ne(?:Style|To))|o(?:c(?:k|a(?:t(?:ion|eByld)|l(?:ToGlobal|FileReadDisable)))|opback|ad(?:Movie(?:Num)?|S(?:crollContent|ound)|ed|Variables(?:Num)?|Application)?|g(?:Changes)?)|e(?:ngth|ft(?:Margin)?|ading)?|a(?:st(?:Slide|Child|Index(?:Of)?)?|nguage|b(?:el(?:Placement|F(?:ield|unction))?|leField)))|a(?:s(?:scociate(?:Controller|Display)|in|pectRatio|function)|nd|c(?:ceptConnection|tiv(?:ityLevel|ePlayControl)|os)|t(?:t(?:ach(?:Movie|Sound|Video|Audio)|ributes)|an(?:2)?)|dd(?:header|RequestHeader|Menu(?:Item(?:At)?|At)?|Sort|Header|No(?:tice|de(?:At)?)|C(?:olumn(?:At)?|uePoint)|T(?:oLocalInternetCache|reeNode(?:At)?)|I(?:con|tem(?:s(?:At)?|At)?)|DeltaItem|P(?:od|age|roperty)|EventListener|View|FieldInfo|Listener|Animation)?|uto(?:Size|Play|KeyNav|Load)|pp(?:endChild|ly(?:Changes|Updates)?)|vHardwareDisable|fterLoaded|l(?:ternateRowColors|ign|l(?:ow(?:InsecureDomain|Domain)|Transitions(?:InDone|OutDone))|bum)|r(?:tist|row|g(?:uments|List))|gent|bs)|r(?:ight(?:Margin)?|o(?:ot(?:S(?:creen|lide)|Form)|und|w(?:Height|Count)|llO(?:ut|ver))|e(?:s(?:yncDepth|t(?:orePane|artAnimation|rict)|iz(?:e|able(?:Columns)?)|olveDelta|ult(?:s)?|ponse)|c(?:o(?:ncile(?:Results|Updates)|rd)|eive(?:Video|Audio))|draw|jectConnection|place(?:Sel|ItemAt|AllItems)?|ve(?:al(?:Child)?|rse)|quest(?:SizeChange|Payment)?|f(?:errer|resh(?:ScrollContent|Destinations|Pane|FromSources)?)|lease(?:Outside)?|ad(?:Only|Access)|gister(?:SkinElement|C(?:olor(?:Style|Name)|lass)|InheritingStyle|Proxy)|move(?:Range|M(?:ovieClip|enu(?:Item(?:At)?|At))|Background|Sort|No(?:tice|de(?:sAt|At)?)|C(?:olum(?:nAt|At)|uePoints)|T(?:extField|reeNode(?:At)?)|Item(?:At)?|Pod|EventListener|FromLocalInternetCache|Listener|All(?:C(?:olumns|uePoints)|Items)?))|a(?:ndom|te|dioDot))|g(?:t|oto(?:Slide|NextSlide|PreviousSlide|FirstSlide|LastSlide|And(?:Stop|Play))|e(?:nre|t(?:R(?:GB|o(?:otNode|wCount)|e(?:sizable|mote))|X(?:AxisTitle)?|M(?:i(?:n(?:imum(?:Size)?|utes)|lliseconds)|onth(?:Names)?|ultilineMode|e(?:ssage|nu(?:ItemAt|EnabledAt|At))|aximum(?:Size)?)|B(?:ytes(?:Total|Loaded)|ounds|utton(?:s|Width)|eginIndex|a(?:ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Position|barState|Location)|t(?:yle(?:Names)?|opOnFocus|ate)|ize|o(?:urce|rtState)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)|Style|ed(?:Node(?:s)?|Cell|Text|I(?:nd(?:ices|ex)|tem(?:s)?))?)|rvice)|moothness|WFVersion)|H(?:ighlight(?:s|Color)|ours|e(?:ight|ader(?:Height|Text|Property|Format|Width|Location)?)|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:o(?:tices|de(?:DisplayedAt|At))|um(?:Children|berAvailable)|e(?:wTextFormat|xtHighestDepth))|C(?:h(?:ild(?:S(?:creen|lide)|Nodes|Form|At)|artTitle)|o(?:n(?:tent|figInfo)|okie|de|unt|lumn(?:Names|Count|Index|At))|uePoint|ellIndex|loseHandler|a(?:ll|retIndex))|T(?:ypedValue|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:stamp|zoneOffset|out(?:State|Handler)|r)?)|oggle|ext(?:Extent|Format)?|r(?:ee(?:NodeAt|Length)|ans(?:form|actionId)))|I(?:s(?:Branch|Open)|n(?:stanceAtDepth|d(?:icesByKey|exByKey))|con(?:SymbolName)?|te(?:rator|m(?:sByKey|By(?:Name|Key)|id|ID|At))|d)|O(?:utput(?:Parameter(?:s|ByName)?|Value(?:s)?)|peration|ri(?:entation|ginalCellData))|D(?:i(?:s(?:play(?:Range|Mode|Clip|Index|edMonth)|kUsage)|rection)|uration|e(?:pth|faultNodeIconSymbolName|l(?:taPacket|ay)|bug(?:Config|ID)?)|a(?:y(?:OfWeekNames)?|t(?:e|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Label|All(?:Height|Property|Format|Width))?))|rawConnectors)|U(?:se(?:Shadow|HandCursor|rInput|Fade)|RL|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear))|P(?:o(?:sition|ds)|ercentComplete|a(?:n(?:e(?:M(?:inimums|aximums)|Height|Title|Width))?|rentNode)|r(?:operty(?:Name|Data)?|efer(?:ences|red(?:Height|Width))))|E(?:n(?:dIndex|abled)|ditingData|x(?:panderSymbolName|andNodeTrigger))|V(?:iewed(?:Pods|Applications)|olume|ersion|alue(?:Source)?)|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|o(?:ntList|cus)|ullYear|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:cal|adTarget)|ength|a(?:stTabIndex|bel(?:Source)?))|A(?:s(?:cii|Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:eState(?:Handler)?|ateHandler)|utoH(?:ideScrollBar|eight)|llItems|gent))?)?|lobal(?:StyleFormat|ToLocal)?|ain|roupName)|x(?:updatePackety|mlDecl)?|m(?:y(?:MethodName|Call)|in(?:imum)?|o(?:nthNames|tion(?:TimeOut|Level)|de(?:lChanged)?|use(?:Move|O(?:ut|ver)|Down(?:Somewhere|Outside)?|Up(?:Somewhere)?|WheelEnabled)|ve(?:To)?)|u(?:ted|lti(?:pleS(?:imultaneousAllowed|elections)|line))|e(?:ssage|nu(?:Show|Hide)?|th(?:od)?|diaType)|a(?:nufacturer|tch|x(?:scroll|hscroll|imum|HPosition|Chars|VPosition)?)|b(?:substring|chr|ord|length))|b(?:ytes(?:Total|Loaded)|indFormat(?:Strings|Function)|o(?:ttom(?:Scroll)?|ld|rder(?:Color)?)|u(?:tton(?:Height|Width)|iltInItems|ffer(?:Time|Length)|llet)|e(?:foreApplyUpdates|gin(?:GradientFill|Fill))|lockIndent|a(?:ndwidth|ckground(?:Style|Color|Disabled)?)|roadcastMessage)|onHTTPStatus)\\b"},{token:"support.constant.actionscript.2",regex:"\\b(?:__proto__|__resolve|_accProps|_alpha|_changed|_currentframe|_droptarget|_flash|_focusrect|_framesloaded|_global|_height|_highquality|_level|_listeners|_lockroot|_name|_parent|_quality|_root|_rotation|_soundbuftime|_target|_totalframes|_url|_visible|_width|_x|_xmouse|_xscale|_y|_ymouse|_yscale)\\b"},{token:"keyword.control.actionscript.2",regex:"\\b(?:dynamic|extends|import|implements|interface|public|private|new|static|super|var|for|in|break|continue|while|do|return|if|else|case|switch)\\b"},{token:"storage.type.actionscript.2",regex:"\\b(?:Boolean|Number|String|Void)\\b"},{token:"constant.language.actionscript.2",regex:"\\b(?:null|undefined|true|false)\\b"},{token:"constant.numeric.actionscript.2",regex:"\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b"},{token:"punctuation.definition.string.begin.actionscript.2",regex:'"',push:[{token:"punctuation.definition.string.end.actionscript.2",regex:'"',next:"pop"},{token:"constant.character.escape.actionscript.2",regex:"\\\\."},{defaultToken:"string.quoted.double.actionscript.2"}]},{token:"punctuation.definition.string.begin.actionscript.2",regex:"'",push:[{token:"punctuation.definition.string.end.actionscript.2",regex:"'",next:"pop"},{token:"constant.character.escape.actionscript.2",regex:"\\\\."},{defaultToken:"string.quoted.single.actionscript.2"}]},{token:"support.constant.actionscript.2",regex:"\\b(?:BACKSPACE|CAPSLOCK|CONTROL|DELETEKEY|DOWN|END|ENTER|HOME|INSERT|LEFT|LN10|LN2|LOG10E|LOG2E|MAX_VALUE|MIN_VALUE|NEGATIVE_INFINITY|NaN|PGDN|PGUP|PI|POSITIVE_INFINITY|RIGHT|SPACE|SQRT1_2|SQRT2|UP)\\b"},{token:"punctuation.definition.comment.actionscript.2",regex:"/\\*",push:[{token:"punctuation.definition.comment.actionscript.2",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.actionscript.2"}]},{token:"punctuation.definition.comment.actionscript.2",regex:"//.*$",push_:[{token:"comment.line.double-slash.actionscript.2",regex:"$",next:"pop"},{defaultToken:"comment.line.double-slash.actionscript.2"}]},{token:"keyword.operator.actionscript.2",regex:"\\binstanceof\\b"},{token:"keyword.operator.symbolic.actionscript.2",regex:"[-!%&*+=/?:]"},{token:["meta.preprocessor.actionscript.2","punctuation.definition.preprocessor.actionscript.2","meta.preprocessor.actionscript.2"],regex:"^([ \\t]*)(#)([a-zA-Z]+)"},{token:["storage.type.function.actionscript.2","meta.function.actionscript.2","entity.name.function.actionscript.2","meta.function.actionscript.2","punctuation.definition.parameters.begin.actionscript.2"],regex:"\\b(function)(\\s+)([a-zA-Z_]\\w*)(\\s*)(\\()",push:[{token:"punctuation.definition.parameters.end.actionscript.2",regex:"\\)",next:"pop"},{token:"variable.parameter.function.actionscript.2",regex:"[^,)$]+"},{defaultToken:"meta.function.actionscript.2"}]},{token:["storage.type.class.actionscript.2","meta.class.actionscript.2","entity.name.type.class.actionscript.2","meta.class.actionscript.2","storage.modifier.extends.actionscript.2","meta.class.actionscript.2","entity.other.inherited-class.actionscript.2"],regex:"\\b(class)(\\s+)([a-zA-Z_](?:\\w|\\.)*)(?:(\\s+)(extends)(\\s+)([a-zA-Z_](?:\\w|\\.)*))?"}]},this.normalizeRules()};s.metaData={fileTypes:["as"],keyEquivalent:"^~A",name:"ActionScript",scopeName:"source.actionscript.2"},r.inherits(s,i),t.ActionScriptHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/actionscript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/actionscript_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./actionscript_highlight_rules").ActionScriptHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/actionscript"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-ada.js b/library/ace/mode-ada.js
new file mode 100644
index 000000000..81cdc59e6
--- /dev/null
+++ b/library/ace/mode-ada.js
@@ -0,0 +1 @@
+ace.define("ace/mode/ada_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="abort|else|new|return|abs|elsif|not|reverse|abstract|end|null|accept|entry|select|access|exception|of|separate|aliased|exit|or|some|all|others|subtype|and|for|out|synchronized|array|function|overriding|at|tagged|generic|package|task|begin|goto|pragma|terminate|body|private|then|if|procedure|type|case|in|protected|constant|interface|until||is|raise|use|declare|range|delay|limited|record|when|delta|loop|rem|while|digits|renames|with|do|mod|requeue|xor",t="true|false|null",n="count|min|max|avg|sum|rank|now|coalesce|main",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.AdaHighlightRules=s}),ace.define("ace/mode/ada",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ada_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ada_highlight_rules").AdaHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="--",this.$id="ace/mode/ada"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-apache_conf.js b/library/ace/mode-apache_conf.js
new file mode 100644
index 000000000..66eca9746
--- /dev/null
+++ b/library/ace/mode-apache_conf.js
@@ -0,0 +1 @@
+ace.define("ace/mode/apache_conf_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["punctuation.definition.comment.apacheconf","comment.line.hash.ini","comment.line.hash.ini"],regex:"^((?:\\s)*)(#)(.*$)"},{token:["punctuation.definition.tag.apacheconf","entity.tag.apacheconf","text","string.value.apacheconf","punctuation.definition.tag.apacheconf"],regex:"(<)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost)(?:(\\s)(.+?))?(>)"},{token:["punctuation.definition.tag.apacheconf","entity.tag.apacheconf","punctuation.definition.tag.apacheconf"],regex:"(</)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost)(>)"},{token:["keyword.alias.apacheconf","text","string.regexp.apacheconf","text","string.replacement.apacheconf","text"],regex:"(Rewrite(?:Rule|Cond))(\\s+)(.+?)(\\s+)(.+?)($|\\s)"},{token:["keyword.alias.apacheconf","text","entity.status.apacheconf","text","string.regexp.apacheconf","text","string.path.apacheconf","text"],regex:"(RedirectMatch)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?"},{token:["keyword.alias.apacheconf","text","entity.status.apacheconf","text","string.path.apacheconf","text","string.path.apacheconf","text"],regex:"(Redirect)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?"},{token:["keyword.alias.apacheconf","text","string.regexp.apacheconf","text","string.path.apacheconf","text"],regex:"(ScriptAliasMatch|AliasMatch)(\\s+)(.+?)(\\s+)(?:(.+?)(\\s))?"},{token:["keyword.alias.apacheconf","text","string.path.apacheconf","text","string.path.apacheconf","text"],regex:"(RedirectPermanent|RedirectTemp|ScriptAlias|Alias)(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?"},{token:"keyword.core.apacheconf",regex:"\\b(?:AcceptPathInfo|AccessFileName|AddDefaultCharset|AddOutputFilterByType|AllowEncodedSlashes|AllowOverride|AuthName|AuthType|CGIMapExtension|ContentDigest|DefaultType|DocumentRoot|EnableMMAP|EnableSendfile|ErrorDocument|ErrorLog|FileETag|ForceType|HostnameLookups|IdentityCheck|Include|KeepAlive|KeepAliveTimeout|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|LogLevel|MaxKeepAliveRequests|NameVirtualHost|Options|Require|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScriptInterpreterSource|ServerAdmin|ServerAlias|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|SetHandler|SetInputFilter|SetOutputFilter|TimeOut|TraceEnable|UseCanonicalName)\\b"},{token:"keyword.mpm.apacheconf",regex:"\\b(?:AcceptMutex|AssignUserID|BS2000Account|ChildPerUserID|CoreDumpDirectory|EnableExceptionHook|Group|Listen|ListenBacklog|LockFile|MaxClients|MaxMemFree|MaxRequestsPerChild|MaxRequestsPerThread|MaxSpareServers|MaxSpareThreads|MaxThreads|MaxThreadsPerChild|MinSpareServers|MinSpareThreads|NumServers|PidFile|ReceiveBufferSize|ScoreBoardFile|SendBufferSize|ServerLimit|StartServers|StartThreads|ThreadLimit|ThreadsPerChild|ThreadStackSize|User|Win32DisableAcceptEx)\\b"},{token:"keyword.access.apacheconf",regex:"\\b(?:Allow|Deny|Order)\\b"},{token:"keyword.actions.apacheconf",regex:"\\b(?:Action|Script)\\b"},{token:"keyword.alias.apacheconf",regex:"\\b(?:Alias|AliasMatch|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ScriptAlias|ScriptAliasMatch)\\b"},{token:"keyword.auth.apacheconf",regex:"\\b(?:AuthAuthoritative|AuthGroupFile|AuthUserFile)\\b"},{token:"keyword.auth_anon.apacheconf",regex:"\\b(?:Anonymous|Anonymous_Authoritative|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail)\\b"},{token:"keyword.auth_dbm.apacheconf",regex:"\\b(?:AuthDBMAuthoritative|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile)\\b"},{token:"keyword.auth_digest.apacheconf",regex:"\\b(?:AuthDigestAlgorithm|AuthDigestDomain|AuthDigestFile|AuthDigestGroupFile|AuthDigestNcCheck|AuthDigestNonceFormat|AuthDigestNonceLifetime|AuthDigestQop|AuthDigestShmemSize)\\b"},{token:"keyword.auth_ldap.apacheconf",regex:"\\b(?:AuthLDAPAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPEnabled|AuthLDAPFrontPageHack|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPRemoteUserIsDN|AuthLDAPUrl)\\b"},{token:"keyword.autoindex.apacheconf",regex:"\\b(?:AddAlt|AddAltByEncoding|AddAltByType|AddDescription|AddIcon|AddIconByEncoding|AddIconByType|DefaultIcon|HeaderName|IndexIgnore|IndexOptions|IndexOrderDefault|ReadmeName)\\b"},{token:"keyword.cache.apacheconf",regex:"\\b(?:CacheDefaultExpire|CacheDisable|CacheEnable|CacheForceCompletion|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheLastModifiedFactor|CacheMaxExpire)\\b"},{token:"keyword.cern_meta.apacheconf",regex:"\\b(?:MetaDir|MetaFiles|MetaSuffix)\\b"},{token:"keyword.cgi.apacheconf",regex:"\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength)\\b"},{token:"keyword.cgid.apacheconf",regex:"\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock)\\b"},{token:"keyword.charset_lite.apacheconf",regex:"\\b(?:CharsetDefault|CharsetOptions|CharsetSourceEnc)\\b"},{token:"keyword.dav.apacheconf",regex:"\\b(?:Dav|DavDepthInfinity|DavMinTimeout|DavLockDB)\\b"},{token:"keyword.deflate.apacheconf",regex:"\\b(?:DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateMemLevel|DeflateWindowSize)\\b"},{token:"keyword.dir.apacheconf",regex:"\\b(?:DirectoryIndex|DirectorySlash)\\b"},{token:"keyword.disk_cache.apacheconf",regex:"\\b(?:CacheDirLength|CacheDirLevels|CacheExpiryCheck|CacheGcClean|CacheGcDaily|CacheGcInterval|CacheGcMemUsage|CacheGcUnused|CacheMaxFileSize|CacheMinFileSize|CacheRoot|CacheSize|CacheTimeMargin)\\b"},{token:"keyword.dumpio.apacheconf",regex:"\\b(?:DumpIOInput|DumpIOOutput)\\b"},{token:"keyword.env.apacheconf",regex:"\\b(?:PassEnv|SetEnv|UnsetEnv)\\b"},{token:"keyword.expires.apacheconf",regex:"\\b(?:ExpiresActive|ExpiresByType|ExpiresDefault)\\b"},{token:"keyword.ext_filter.apacheconf",regex:"\\b(?:ExtFilterDefine|ExtFilterOptions)\\b"},{token:"keyword.file_cache.apacheconf",regex:"\\b(?:CacheFile|MMapFile)\\b"},{token:"keyword.headers.apacheconf",regex:"\\b(?:Header|RequestHeader)\\b"},{token:"keyword.imap.apacheconf",regex:"\\b(?:ImapBase|ImapDefault|ImapMenu)\\b"},{token:"keyword.include.apacheconf",regex:"\\b(?:SSIEndTag|SSIErrorMsg|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|XBitHack)\\b"},{token:"keyword.isapi.apacheconf",regex:"\\b(?:ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer)\\b"},{token:"keyword.ldap.apacheconf",regex:"\\b(?:LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionTimeout|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTrustedCA|LDAPTrustedCAType)\\b"},{token:"keyword.log.apacheconf",regex:"\\b(?:BufferedLogs|CookieLog|CustomLog|LogFormat|TransferLog|ForensicLog)\\b"},{token:"keyword.mem_cache.apacheconf",regex:"\\b(?:MCacheMaxObjectCount|MCacheMaxObjectSize|MCacheMaxStreamingBuffer|MCacheMinObjectSize|MCacheRemovalAlgorithm|MCacheSize)\\b"},{token:"keyword.mime.apacheconf",regex:"\\b(?:AddCharset|AddEncoding|AddHandler|AddInputFilter|AddLanguage|AddOutputFilter|AddType|DefaultLanguage|ModMimeUsePathInfo|MultiviewsMatch|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|TypesConfig)\\b"},{token:"keyword.misc.apacheconf",regex:"\\b(?:ProtocolEcho|Example|AddModuleInfo|MimeMagicFile|CheckSpelling|ExtendedStatus|SuexecUserGroup|UserDir)\\b"},{token:"keyword.negotiation.apacheconf",regex:"\\b(?:CacheNegotiatedDocs|ForceLanguagePriority|LanguagePriority)\\b"},{token:"keyword.nw_ssl.apacheconf",regex:"\\b(?:NWSSLTrustedCerts|NWSSLUpgradeable|SecureListen)\\b"},{token:"keyword.proxy.apacheconf",regex:"\\b(?:AllowCONNECT|NoProxy|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyFtpDirCharset|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassReverse|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxyTimeout|ProxyVia)\\b"},{token:"keyword.rewrite.apacheconf",regex:"\\b(?:RewriteBase|RewriteCond|RewriteEngine|RewriteLock|RewriteLog|RewriteLogLevel|RewriteMap|RewriteOptions|RewriteRule)\\b"},{token:"keyword.setenvif.apacheconf",regex:"\\b(?:BrowserMatch|BrowserMatchNoCase|SetEnvIf|SetEnvIfNoCase)\\b"},{token:"keyword.so.apacheconf",regex:"\\b(?:LoadFile|LoadModule)\\b"},{token:"keyword.ssl.apacheconf",regex:"\\b(?:SSLCACertificateFile|SSLCACertificatePath|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLEngine|SSLMutex|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLUserName|SSLVerifyClient|SSLVerifyDepth)\\b"},{token:"keyword.usertrack.apacheconf",regex:"\\b(?:CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking)\\b"},{token:"keyword.vhost_alias.apacheconf",regex:"\\b(?:VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP)\\b"},{token:["keyword.php.apacheconf","text","entity.property.apacheconf","text","string.value.apacheconf","text"],regex:"\\b(php_value|php_flag)\\b(?:(\\s+)(.+?)(?:(\\s+)(.+?))?)?(\\s)"},{token:["punctuation.variable.apacheconf","variable.env.apacheconf","variable.misc.apacheconf","punctuation.variable.apacheconf"],regex:"(%\\{)(?:(HTTP_USER_AGENT|HTTP_REFERER|HTTP_COOKIE|HTTP_FORWARDED|HTTP_HOST|HTTP_PROXY_CONNECTION|HTTP_ACCEPT|REMOTE_ADDR|REMOTE_HOST|REMOTE_PORT|REMOTE_USER|REMOTE_IDENT|REQUEST_METHOD|SCRIPT_FILENAME|PATH_INFO|QUERY_STRING|AUTH_TYPE|DOCUMENT_ROOT|SERVER_ADMIN|SERVER_NAME|SERVER_ADDR|SERVER_PORT|SERVER_PROTOCOL|SERVER_SOFTWARE|TIME_YEAR|TIME_MON|TIME_DAY|TIME_HOUR|TIME_MIN|TIME_SEC|TIME_WDAY|TIME|API_VERSION|THE_REQUEST|REQUEST_URI|REQUEST_FILENAME|IS_SUBREQ|HTTPS)|(.*?))(\\})"},{token:["entity.mime-type.apacheconf","text"],regex:"\\b((?:text|image|application|video|audio)/.+?)(\\s)"},{token:"entity.helper.apacheconf",regex:"\\b(?:from|unset|set|on|off)\\b",caseInsensitive:!0},{token:"constant.integer.apacheconf",regex:"\\b\\d+\\b"},{token:["text","punctuation.definition.flag.apacheconf","string.flag.apacheconf","punctuation.definition.flag.apacheconf","text"],regex:"(\\s)(\\[)(.*?)(\\])(\\s)"}]},this.normalizeRules()};s.metaData={fileTypes:["conf","CONF","htaccess","HTACCESS","htgroups","HTGROUPS","htpasswd","HTPASSWD",".htaccess",".HTACCESS",".htgroups",".HTGROUPS",".htpasswd",".HTPASSWD"],name:"Apache Conf",scopeName:"source.apacheconf"},r.inherits(s,i),t.ApacheConfHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/apache_conf",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/apache_conf_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./apache_conf_highlight_rules").ApacheConfHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="#",this.$id="ace/mode/apache_conf"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-applescript.js b/library/ace/mode-applescript.js
new file mode 100644
index 000000000..b9fdd014f
--- /dev/null
+++ b/library/ace/mode-applescript.js
@@ -0,0 +1 @@
+ace.define("ace/mode/applescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="about|above|after|against|and|around|as|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|contain|contains|continue|copy|div|does|eighth|else|end|equal|equals|error|every|exit|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|into|is|it|its|last|local|me|middle|mod|my|ninth|not|of|on|onto|or|over|prop|property|put|ref|reference|repeat|returning|script|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|try|until|where|while|whose|with|without",t="AppleScript|false|linefeed|return|pi|quote|result|space|tab|true",n="activate|beep|count|delay|launch|log|offset|read|round|run|say|summarize|write",r="alias|application|boolean|class|constant|date|file|integer|list|number|real|record|string|text|character|characters|contents|day|frontmost|id|item|length|month|name|paragraph|paragraphs|rest|reverse|running|time|version|weekday|word|words|year",i=this.createKeywordMapper({"support.function":n,"constant.language":t,"support.type":r,keyword:e},"identifier");this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"comment",regex:"\\(\\*",next:"comment"},{token:"string",regex:'".*?"'},{token:"support.type",regex:"\\b(POSIX file|POSIX path|(date|time) string|quoted form)\\b"},{token:"support.function",regex:"\\b(clipboard info|the clipboard|info for|list (disks|folder)|mount volume|path to|(close|open for) access|(get|set) eof|current date|do shell script|get volume settings|random number|set volume|system attribute|system info|time to GMT|(load|run|store) script|scripting components|ASCII (character|number)|localized string|choose (application|color|file|file name|folder|from list|remote application|URL)|display (alert|dialog))\\b|^\\s*return\\b"},{token:"constant.language",regex:"\\b(text item delimiters|current application|missing value)\\b"},{token:"keyword",regex:"\\b(apart from|aside from|instead of|out of|greater than|isn't|(doesn't|does not) (equal|come before|come after|contain)|(greater|less) than( or equal)?|(starts?|ends|begins?) with|contained by|comes (before|after)|a (ref|reference))\\b"},{token:i,regex:"[a-zA-Z][a-zA-Z0-9_]*\\b"}],comment:[{token:"comment",regex:"\\*\\)",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()};r.inherits(s,i),t.AppleScriptHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/applescript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/applescript_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./applescript_highlight_rules").AppleScriptHighlightRules,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=o,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="--",this.blockComment={start:"(*",end:"*)"},this.$id="ace/mode/applescript"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-asciidoc.js b/library/ace/mode-asciidoc.js
new file mode 100644
index 000000000..de55f241b
--- /dev/null
+++ b/library/ace/mode-asciidoc.js
@@ -0,0 +1 @@
+ace.define("ace/mode/asciidoc_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){function t(e){var t=/\w/.test(e)?"\\b":"(?:\\B|^)";return t+e+"[^"+e+"].*?"+e+"(?![\\w*])"}var e="[a-zA-Z\u00a1-\uffff]+\\b";this.$rules={start:[{token:"empty",regex:/$/},{token:"literal",regex:/^\.{4,}\s*$/,next:"listingBlock"},{token:"literal",regex:/^-{4,}\s*$/,next:"literalBlock"},{token:"string",regex:/^\+{4,}\s*$/,next:"passthroughBlock"},{token:"keyword",regex:/^={4,}\s*$/},{token:"text",regex:/^\s*$/},{token:"empty",regex:"",next:"dissallowDelimitedBlock"}],dissallowDelimitedBlock:[{include:"paragraphEnd"},{token:"comment",regex:"^//.+$"},{token:"keyword",regex:"^(?:NOTE|TIP|IMPORTANT|WARNING|CAUTION):"},{include:"listStart"},{token:"literal",regex:/^\s+.+$/,next:"indentedBlock"},{token:"empty",regex:"",next:"text"}],paragraphEnd:[{token:"doc.comment",regex:/^\/{4,}\s*$/,next:"commentBlock"},{token:"tableBlock",regex:/^\s*[|!]=+\s*$/,next:"tableBlock"},{token:"keyword",regex:/^(?:--|''')\s*$/,next:"start"},{token:"option",regex:/^\[.*\]\s*$/,next:"start"},{token:"pageBreak",regex:/^>{3,}$/,next:"start"},{token:"literal",regex:/^\.{4,}\s*$/,next:"listingBlock"},{token:"titleUnderline",regex:/^(?:={2,}|-{2,}|~{2,}|\^{2,}|\+{2,})\s*$/,next:"start"},{token:"singleLineTitle",regex:/^={1,5}\s+\S.*$/,next:"start"},{token:"otherBlock",regex:/^(?:\*{2,}|_{2,})\s*$/,next:"start"},{token:"optionalTitle",regex:/^\.[^.\s].+$/,next:"start"}],listStart:[{token:"keyword",regex:/^\s*(?:\d+\.|[a-zA-Z]\.|[ixvmIXVM]+\)|\*{1,5}|-|\.{1,5})\s/,next:"listText"},{token:"meta.tag",regex:/^.+(?::{2,4}|;;)(?: |$)/,next:"listText"},{token:"support.function.list.callout",regex:/^(?:<\d+>|\d+>|>) /,next:"text"},{token:"keyword",regex:/^\+\s*$/,next:"start"}],text:[{token:["link","variable.language"],regex:/((?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+)(\[.*?\])/},{token:"link",regex:/(?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+/},{token:"link",regex:/\b[\w\.\/\-]+@[\w\.\/\-]+\b/},{include:"macros"},{include:"paragraphEnd"},{token:"literal",regex:/\+{3,}/,next:"smallPassthrough"},{token:"escape",regex:/\((?:C|TM|R)\)|\.{3}|->|<-|=>|<=|&#(?:\d+|x[a-fA-F\d]+);|(?: |^)--(?=\s+\S)/},{token:"escape",regex:/\\[_*'`+#]|\\{2}[_*'`+#]{2}/},{token:"keyword",regex:/\s\+$/},{token:"text",regex:e},{token:["keyword","string","keyword"],regex:/(<<[\w\d\-$]+,)(.*?)(>>|$)/},{token:"keyword",regex:/<<[\w\d\-$]+,?|>>/},{token:"constant.character",regex:/\({2,3}.*?\){2,3}/},{token:"keyword",regex:/\[\[.+?\]\]/},{token:"support",regex:/^\[{3}[\w\d =\-]+\]{3}/},{include:"quotes"},{token:"empty",regex:/^\s*$/,next:"start"}],listText:[{include:"listStart"},{include:"text"}],indentedBlock:[{token:"literal",regex:/^[\s\w].+$/,next:"indentedBlock"},{token:"literal",regex:"",next:"start"}],listingBlock:[{token:"literal",regex:/^\.{4,}\s*$/,next:"dissallowDelimitedBlock"},{token:"constant.numeric",regex:"<\\d+>"},{token:"literal",regex:"[^<]+"},{token:"literal",regex:"<"}],literalBlock:[{token:"literal",regex:/^-{4,}\s*$/,next:"dissallowDelimitedBlock"},{token:"constant.numeric",regex:"<\\d+>"},{token:"literal",regex:"[^<]+"},{token:"literal",regex:"<"}],passthroughBlock:[{token:"literal",regex:/^\+{4,}\s*$/,next:"dissallowDelimitedBlock"},{token:"literal",regex:e+"|\\d+"},{include:"macros"},{token:"literal",regex:"."}],smallPassthrough:[{token:"literal",regex:/[+]{3,}/,next:"dissallowDelimitedBlock"},{token:"literal",regex:/^\s*$/,next:"dissallowDelimitedBlock"},{token:"literal",regex:e+"|\\d+"},{include:"macros"}],commentBlock:[{token:"doc.comment",regex:/^\/{4,}\s*$/,next:"dissallowDelimitedBlock"},{token:"doc.comment",regex:"^.*$"}],tableBlock:[{token:"tableBlock",regex:/^\s*\|={3,}\s*$/,next:"dissallowDelimitedBlock"},{token:"tableBlock",regex:/^\s*!={3,}\s*$/,next:"innerTableBlock"},{token:"tableBlock",regex:/\|/},{include:"text",noEscape:!0}],innerTableBlock:[{token:"tableBlock",regex:/^\s*!={3,}\s*$/,next:"tableBlock"},{token:"tableBlock",regex:/^\s*|={3,}\s*$/,next:"dissallowDelimitedBlock"},{token:"tableBlock",regex:/\!/}],macros:[{token:"macro",regex:/{[\w\-$]+}/},{token:["text","string","text","constant.character","text"],regex:/({)([\w\-$]+)(:)?(.+)?(})/},{token:["text","markup.list.macro","keyword","string"],regex:/(\w+)(footnote(?:ref)?::?)([^\s\[]+)?(\[.*?\])?/},{token:["markup.list.macro","keyword","string"],regex:/([a-zA-Z\-][\w\.\/\-]*::?)([^\s\[]+)(\[.*?\])?/},{token:["markup.list.macro","keyword"],regex:/([a-zA-Z\-][\w\.\/\-]+::?)(\[.*?\])/},{token:"keyword",regex:/^:.+?:(?= |$)/}],quotes:[{token:"string.italic",regex:/__[^_\s].*?__/},{token:"string.italic",regex:t("_")},{token:"keyword.bold",regex:/\*\*[^*\s].*?\*\*/},{token:"keyword.bold",regex:t("\\*")},{token:"literal",regex:t("\\+")},{token:"literal",regex:/\+\+[^+\s].*?\+\+/},{token:"literal",regex:/\$\$.+?\$\$/},{token:"literal",regex:t("`")},{token:"keyword",regex:t("^")},{token:"keyword",regex:t("~")},{token:"keyword",regex:/##?/},{token:"keyword",regex:/(?:\B|^)``|\b''/}]};var n={macro:"constant.character",tableBlock:"doc.comment",titleUnderline:"markup.heading",singleLineTitle:"markup.heading",pageBreak:"string",option:"string.regexp",otherBlock:"markup.list",literal:"support.function",optionalTitle:"constant.numeric",escape:"constant.language.escape",link:"markup.underline.list"};for(var r in this.$rules){var i=this.$rules[r];for(var s=i.length;s--;){var o=i[s];if(o.include||typeof o=="string"){var u=[s,1].concat(this.$rules[o.include||o]);o.noEscape&&(u=u.filter(function(e){return!e.next})),i.splice.apply(i,u)}else o.token in n&&(o.token=n[o.token])}}};r.inherits(s,i),t.AsciidocHighlightRules=s}),ace.define("ace/mode/folding/asciidoc",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.foldingStartMarker=/^(?:\|={10,}|[\.\/=\-~^+]{4,}\s*$|={1,5} )/,this.singleLineHeadingRe=/^={1,5}(?=\s+\S)/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?r[0]=="="?this.singleLineHeadingRe.test(r)?"start":e.getLine(n-1).length!=e.getLine(n).length?"":"start":e.bgTokenizer.getState(n)=="dissallowDelimitedBlock"?"end":"start":""},this.getFoldWidgetRange=function(e,t,n){function l(t){return f=e.getTokens(t)[0],f&&f.type}function d(){var t=f.value.match(p);if(t)return t[0].length;var r=c.indexOf(f.value[0])+1;return r==1&&e.getLine(n-1).length!=e.getLine(n).length?Infinity:r}var r=e.getLine(n),i=r.length,o=e.getLength(),u=n,a=n;if(!r.match(this.foldingStartMarker))return;var f,c=["=","-","~","^","+"],h="markup.heading",p=this.singleLineHeadingRe;if(l(n)==h){var v=d();while(++n<o){if(l(n)!=h)continue;var m=d();if(m<=v)break}var g=f&&f.value.match(this.singleLineHeadingRe);a=g?n-1:n-2;if(a>u)while(a>u&&(!l(a)||f.value[0]=="["))a--;if(a>u){var y=e.getLine(a).length;return new s(u,i,a,y)}}else{var b=e.bgTokenizer.getState(n);if(b=="dissallowDelimitedBlock"){while(n-->0)if(e.bgTokenizer.getState(n).lastIndexOf("Block")==-1)break;a=n+1;if(a<u){var y=e.getLine(n).length;return new s(a,5,u,i-5)}}else{while(++n<o)if(e.bgTokenizer.getState(n)=="dissallowDelimitedBlock")break;a=n;if(a>u){var y=e.getLine(n).length;return new s(u,5,a,y-5)}}}}}.call(o.prototype)}),ace.define("ace/mode/asciidoc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/asciidoc_highlight_rules","ace/mode/folding/asciidoc"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./asciidoc_highlight_rules").AsciidocHighlightRules,o=e("./folding/asciidoc").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.type="text",this.getNextLineIndent=function(e,t,n){if(e=="listblock"){var r=/^((?:.+)?)([-+*][ ]+)/.exec(t);return r?(new Array(r[1].length+1)).join(" ")+r[2]:""}return this.$getIndent(t)},this.$id="ace/mode/asciidoc"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-assembly_x86.js b/library/ace/mode-assembly_x86.js
new file mode 100644
index 000000000..06378b61d
--- /dev/null
+++ b/library/ace/mode-assembly_x86.js
@@ -0,0 +1 @@
+ace.define("ace/mode/assembly_x86_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"keyword.control.assembly",regex:"\\b(?:aaa|aad|aam|aas|adc|add|addpd|addps|addsd|addss|addsubpd|addsubps|aesdec|aesdeclast|aesenc|aesenclast|aesimc|aeskeygenassist|and|andpd|andps|andnpd|andnps|arpl|blendpd|blendps|blendvpd|blendvps|bound|bsf|bsr|bswap|bt|btc|btr|bts|cbw|cwde|cdqe|clc|cld|cflush|clts|cmc|cmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|cmp|cmppd|cmpps|cmps|cnpsb|cmpsw|cmpsd|cmpsq|cmpss|cmpxchg|cmpxchg8b|cmpxchg16b|comisd|comiss|cpuid|crc32|cvtdq2pd|cvtdq2ps|cvtpd2dq|cvtpd2pi|cvtpd2ps|cvtpi2pd|cvtpi2ps|cvtps2dq|cvtps2pd|cvtps2pi|cvtsd2si|cvtsd2ss|cvts2sd|cvtsi2ss|cvtss2sd|cvtss2si|cvttpd2dq|cvtpd2pi|cvttps2dq|cvttps2pi|cvttps2dq|cvttps2pi|cvttsd2si|cvttss2si|cwd|cdq|cqo|daa|das|dec|div|divpd|divps|divsd|divss|dppd|dpps|emms|enter|extractps|f2xm1|fabs|fadd|faddp|fiadd|fbld|fbstp|fchs|fclex|fnclex|fcmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|fcom|fcmop|fcompp|fcomi|fcomip|fucomi|fucomip|fcos|fdecstp|fdiv|fdivp|fidiv|fdivr|fdivrp|fidivr|ffree|ficom|ficomp|fild|fincstp|finit|fnint|fist|fistp|fisttp|fld|fld1|fldl2t|fldl2e|fldpi|fldlg2|fldln2|fldz|fldcw|fldenv|fmul|fmulp|fimul|fnop|fpatan|fprem|fprem1|fptan|frndint|frstor|fsave|fnsave|fscale|fsin|fsincos|fsqrt|fst|fstp|fstcw|fnstcw|fstenv|fnstenv|fsts|fnstsw|fsub|fsubp|fisub|fsubr|fsubrp|fisubr|ftst|fucom|fucomp|fucompp|fxam|fxch|fxrstor|fxsave|fxtract|fyl2x|fyl2xp1|haddpd|haddps|husbpd|hsubps|idiv|imul|in|inc|ins|insb|insw|insd|insertps|int|into|invd|invplg|invpcid|iret|iretd|iretq|lahf|lar|lddqu|ldmxcsr|lds|les|lfs|lgs|lss|lea|leave|lfence|lgdt|lidt|llgdt|lmsw|lock|lods|lodsb|lodsw|lodsd|lodsq|lsl|ltr|maskmovdqu|maskmovq|maxpd|maxps|maxsd|maxss|mfence|minpd|minps|minsd|minss|monitor|mov|movapd|movaps|movbe|movd|movq|movddup|movdqa|movdqu|movq2q|movhlps|movhpd|movhps|movlhps|movlpd|movlps|movmskpd|movmskps|movntdqa|movntdq|movnti|movntpd|movntps|movntq|movq|movq2dq|movs|movsb|movsw|movsd|movsq|movsd|movshdup|movsldup|movss|movsx|movsxd|movupd|movups|movzx|mpsadbw|mul|mulpd|mulps|mulsd|mulss|mwait|neg|not|or|orpd|orps|out|outs|outsb|outsw|outsd|pabsb|pabsw|pabsd|packsswb|packssdw|packusdw|packuswbpaddb|paddw|paddd|paddq|paddsb|paddsw|paddusb|paddusw|palignr|pand|pandn|pause|pavgb|pavgw|pblendvb|pblendw|pclmulqdq|pcmpeqb|pcmpeqw|pcmpeqd|pcmpeqq|pcmpestri|pcmpestrm|pcmptb|pcmptgw|pcmpgtd|pcmpgtq|pcmpistri|pcmpisrm|pextrb|pextrd|pextrq|pextrw|phaddw|phaddd|phaddsw|phinposuw|phsubw|phsubd|phsubsw|pinsrb|pinsrd|pinsrq|pinsrw|pmaddubsw|pmadddwd|pmaxsb|pmaxsd|pmaxsw|pmaxsw|pmaxub|pmaxud|pmaxuw|pminsb|pminsd|pminsw|pminub|pminud|pminuw|pmovmskb|pmovsx|pmovzx|pmuldq|pmulhrsw|pmulhuw|pmulhw|pmulld|pmullw|pmuludw|pop|popa|popad|popcnt|popf|popfd|popfq|por|prefetch|psadbw|pshufb|pshufd|pshufhw|pshuflw|pshufw|psignb|psignw|psignd|pslldq|psllw|pslld|psllq|psraw|psrad|psrldq|psrlw|psrld|psrlq|psubb|psubw|psubd|psubq|psubsb|psubsw|psubusb|psubusw|test|ptest|punpckhbw|punpckhwd|punpckhdq|punpckhddq|punpcklbw|punpcklwd|punpckldq|punpckldqd|push|pusha|pushad|pushf|pushfd|pxor|prcl|rcr|rol|ror|rcpps|rcpss|rdfsbase|rdgsbase|rdmsr|rdpmc|rdrand|rdtsc|rdtscp|rep|repe|repz|repne|repnz|roundpd|roundps|roundsd|roundss|rsm|rsqrps|rsqrtss|sahf|sal|sar|shl|shr|sbb|scas|scasb|scasw|scasd|set(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|sfence|sgdt|shld|shrd|shufpd|shufps|sidt|sldt|smsw|sqrtpd|sqrtps|sqrtsd|sqrtss|stc|std|stmxcsr|stos|stosb|stosw|stosd|stosq|str|sub|subpd|subps|subsd|subss|swapgs|syscall|sysenter|sysexit|sysret|teset|ucomisd|ucomiss|ud2|unpckhpd|unpckhps|unpcklpd|unpcklps|vbroadcast|vcvtph2ps|vcvtp2sph|verr|verw|vextractf128|vinsertf128|vmaskmov|vpermilpd|vpermilps|vperm2f128|vtestpd|vtestps|vzeroall|vzeroupper|wait|fwait|wbinvd|wrfsbase|wrgsbase|wrmsr|xadd|xchg|xgetbv|xlat|xlatb|xor|xorpd|xorps|xrstor|xsave|xsaveopt|xsetbv|lzcnt|extrq|insertq|movntsd|movntss|vfmaddpd|vfmaddps|vfmaddsd|vfmaddss|vfmaddsubbpd|vfmaddsubps|vfmsubaddpd|vfmsubaddps|vfmsubpd|vfmsubps|vfmsubsd|vfnmaddpd|vfnmaddps|vfnmaddsd|vfnmaddss|vfnmsubpd|vfnmusbps|vfnmusbsd|vfnmusbss|cvt|xor|cli|sti|hlt|nop|lock|wait|enter|leave|ret|loop(?:n?e|n?z)?|call|j(?:mp|n?e|ge?|ae?|le?|be?|n?o|n?z))\\b",caseInsensitive:!0},{token:"variable.parameter.register.assembly",regex:"\\b(?:CS|DS|ES|FS|GS|SS|RAX|EAX|RBX|EBX|RCX|ECX|RDX|EDX|RCX|RIP|EIP|IP|RSP|ESP|SP|RSI|ESI|SI|RDI|EDI|DI|RFLAGS|EFLAGS|FLAGS|R8-15|(?:Y|X)MM(?:[0-9]|10|11|12|13|14|15)|(?:A|B|C|D)(?:X|H|L)|CR(?:[0-4]|DR(?:[0-7]|TR6|TR7|EFER)))\\b",caseInsensitive:!0},{token:"constant.character.decimal.assembly",regex:"\\b[0-9]+\\b"},{token:"constant.character.hexadecimal.assembly",regex:"\\b0x[A-F0-9]+\\b",caseInsensitive:!0},{token:"constant.character.hexadecimal.assembly",regex:"\\b[A-F0-9]+h\\b",caseInsensitive:!0},{token:"string.assembly",regex:/'([^\\']|\\.)*'/},{token:"string.assembly",regex:/"([^\\"]|\\.)*"/},{token:"support.function.directive.assembly",regex:"^\\[",push:[{token:"support.function.directive.assembly",regex:"\\]$",next:"pop"},{defaultToken:"support.function.directive.assembly"}]},{token:["support.function.directive.assembly","support.function.directive.assembly","entity.name.function.assembly"],regex:"(^struc)( )([_a-zA-Z][_a-zA-Z0-9]*)"},{token:"support.function.directive.assembly",regex:"^endstruc\\b"},{token:["support.function.directive.assembly","entity.name.function.assembly","support.function.directive.assembly","constant.character.assembly"],regex:"^(%macro )([_a-zA-Z][_a-zA-Z0-9]*)( )([0-9]+)"},{token:"support.function.directive.assembly",regex:"^%endmacro"},{token:["text","support.function.directive.assembly","text","entity.name.function.assembly"],regex:"(\\s*)(%define|%xdefine|%idefine|%undef|%assign|%defstr|%strcat|%strlen|%substr|%00|%0|%rotate|%rep|%endrep|%include|\\$\\$|\\$|%unmacro|%if|%elif|%else|%endif|%(?:el)?ifdef|%(?:el)?ifmacro|%(?:el)?ifctx|%(?:el)?ifidn|%(?:el)?ifidni|%(?:el)?ifid|%(?:el)?ifnum|%(?:el)?ifstr|%(?:el)?iftoken|%(?:el)?ifempty|%(?:el)?ifenv|%pathsearch|%depend|%use|%push|%pop|%repl|%arg|%stacksize|%local|%error|%warning|%fatal|%line|%!|%comment|%endcomment|__NASM_VERSION_ID__|__NASM_VER__|__FILE__|__LINE__|__BITS__|__OUTPUT_FORMAT__|__DATE__|__TIME__|__DATE_NUM__|_TIME__NUM__|__UTC_DATE__|__UTC_TIME__|__UTC_DATE_NUM__|__UTC_TIME_NUM__|__POSIX_TIME__|__PASS__|ISTRUC|AT|IEND|BITS 16|BITS 32|BITS 64|USE16|USE32|__SECT__|ABSOLUTE|EXTERN|GLOBAL|COMMON|CPU|FLOAT)\\b( ?)((?:[_a-zA-Z][_a-zA-Z0-9]*)?)",caseInsensitive:!0},{token:"support.function.directive.assembly",regex:"\\b(?:d[bwdqtoy]|res[bwdqto]|equ|times|align|alignb|sectalign|section|ptr|byte|word|dword|qword|incbin)\\b",caseInsensitive:!0},{token:"entity.name.function.assembly",regex:"^\\s*%%[\\w.]+?:$"},{token:"entity.name.function.assembly",regex:"^\\s*%\\$[\\w.]+?:$"},{token:"entity.name.function.assembly",regex:"^[\\w.]+?:"},{token:"entity.name.function.assembly",regex:"^[\\w.]+?\\b"},{token:"comment.assembly",regex:";.*$"}]},this.normalizeRules()};s.metaData={fileTypes:["asm"],name:"Assembly x86",scopeName:"source.assembly"},r.inherits(s,i),t.AssemblyX86HighlightRules=s}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/assembly_x86",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/assembly_x86_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./assembly_x86_highlight_rules").AssemblyX86HighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart=";",this.$id="ace/mode/assembly_x86"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-autohotkey.js b/library/ace/mode-autohotkey.js
new file mode 100644
index 000000000..a961036ea
--- /dev/null
+++ b/library/ace/mode-autohotkey.js
@@ -0,0 +1 @@
+ace.define("ace/mode/autohotkey_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="And|ByRef|Case|Const|ContinueCase|ContinueLoop|Default|Dim|Do|Else|ElseIf|EndFunc|EndIf|EndSelect|EndSwitch|EndWith|Enum|Exit|ExitLoop|False|For|Func|Global|If|In|Local|Next|Not|Or|ReDim|Return|Select|Step|Switch|Then|To|True|Until|WEnd|While|With|Abs|ACos|AdlibDisable|AdlibEnable|Asc|AscW|ASin|Assign|ATan|AutoItSetOption|AutoItWinGetTitle|AutoItWinSetTitle|Beep|Binary|BinaryLen|BinaryMid|BinaryToString|BitAND|BitNOT|BitOR|BitRotate|BitShift|BitXOR|BlockInput|Break|Call|CDTray|Ceiling|Chr|ChrW|ClipGet|ClipPut|ConsoleRead|ConsoleWrite|ConsoleWriteError|ControlClick|ControlCommand|ControlDisable|ControlEnable|ControlFocus|ControlGetFocus|ControlGetHandle|ControlGetPos|ControlGetText|ControlHide|ControlListView|ControlMove|ControlSend|ControlSetText|ControlShow|ControlTreeView|Cos|Dec|DirCopy|DirCreate|DirGetSize|DirMove|DirRemove|DllCall|DllCallbackFree|DllCallbackGetPtr|DllCallbackRegister|DllClose|DllOpen|DllStructCreate|DllStructGetData|DllStructGetPtr|DllStructGetSize|DllStructSetData|DriveGetDrive|DriveGetFileSystem|DriveGetLabel|DriveGetSerial|DriveGetType|DriveMapAdd|DriveMapDel|DriveMapGet|DriveSetLabel|DriveSpaceFree|DriveSpaceTotal|DriveStatus|EnvGet|EnvSet|EnvUpdate|Eval|Execute|Exp|FileChangeDir|FileClose|FileCopy|FileCreateNTFSLink|FileCreateShortcut|FileDelete|FileExists|FileFindFirstFile|FileFindNextFile|FileGetAttrib|FileGetLongName|FileGetShortcut|FileGetShortName|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileOpen|FileOpenDialog|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileSaveDialog|FileSelectFolder|FileSetAttrib|FileSetTime|FileWrite|FileWriteLine|Floor|FtpSetProxy|GUICreate|GUICtrlCreateAvi|GUICtrlCreateButton|GUICtrlCreateCheckbox|GUICtrlCreateCombo|GUICtrlCreateContextMenu|GUICtrlCreateDate|GUICtrlCreateDummy|GUICtrlCreateEdit|GUICtrlCreateGraphic|GUICtrlCreateGroup|GUICtrlCreateIcon|GUICtrlCreateInput|GUICtrlCreateLabel|GUICtrlCreateList|GUICtrlCreateListView|GUICtrlCreateListViewItem|GUICtrlCreateMenu|GUICtrlCreateMenuItem|GUICtrlCreateMonthCal|GUICtrlCreateObj|GUICtrlCreatePic|GUICtrlCreateProgress|GUICtrlCreateRadio|GUICtrlCreateSlider|GUICtrlCreateTab|GUICtrlCreateTabItem|GUICtrlCreateTreeView|GUICtrlCreateTreeViewItem|GUICtrlCreateUpdown|GUICtrlDelete|GUICtrlGetHandle|GUICtrlGetState|GUICtrlRead|GUICtrlRecvMsg|GUICtrlRegisterListViewSort|GUICtrlSendMsg|GUICtrlSendToDummy|GUICtrlSetBkColor|GUICtrlSetColor|GUICtrlSetCursor|GUICtrlSetData|GUICtrlSetFont|GUICtrlSetDefColor|GUICtrlSetDefBkColor|GUICtrlSetGraphic|GUICtrlSetImage|GUICtrlSetLimit|GUICtrlSetOnEvent|GUICtrlSetPos|GUICtrlSetResizing|GUICtrlSetState|GUICtrlSetStyle|GUICtrlSetTip|GUIDelete|GUIGetCursorInfo|GUIGetMsg|GUIGetStyle|GUIRegisterMsg|GUISetAccelerators()|GUISetBkColor|GUISetCoord|GUISetCursor|GUISetFont|GUISetHelp|GUISetIcon|GUISetOnEvent|GUISetState|GUISetStyle|GUIStartGroup|GUISwitch|Hex|HotKeySet|HttpSetProxy|HWnd|InetGet|InetGetSize|IniDelete|IniRead|IniReadSection|IniReadSectionNames|IniRenameSection|IniWrite|IniWriteSection|InputBox|Int|IsAdmin|IsArray|IsBinary|IsBool|IsDeclared|IsDllStruct|IsFloat|IsHWnd|IsInt|IsKeyword|IsNumber|IsObj|IsPtr|IsString|Log|MemGetStats|Mod|MouseClick|MouseClickDrag|MouseDown|MouseGetCursor|MouseGetPos|MouseMove|MouseUp|MouseWheel|MsgBox|Number|ObjCreate|ObjEvent|ObjGet|ObjName|Opt|Ping|PixelChecksum|PixelGetColor|PixelSearch|PluginClose|PluginOpen|ProcessClose|ProcessExists|ProcessGetStats|ProcessList|ProcessSetPriority|ProcessWait|ProcessWaitClose|ProgressOff|ProgressOn|ProgressSet|Ptr|Random|RegDelete|RegEnumKey|RegEnumVal|RegRead|RegWrite|Round|Run|RunAs|RunAsWait|RunWait|Send|SendKeepActive|SetError|SetExtended|ShellExecute|ShellExecuteWait|Shutdown|Sin|Sleep|SoundPlay|SoundSetWaveVolume|SplashImageOn|SplashOff|SplashTextOn|Sqrt|SRandom|StatusbarGetText|StderrRead|StdinWrite|StdioClose|StdoutRead|String|StringAddCR|StringCompare|StringFormat|StringInStr|StringIsAlNum|StringIsAlpha|StringIsASCII|StringIsDigit|StringIsFloat|StringIsInt|StringIsLower|StringIsSpace|StringIsUpper|StringIsXDigit|StringLeft|StringLen|StringLower|StringMid|StringRegExp|StringRegExpReplace|StringReplace|StringRight|StringSplit|StringStripCR|StringStripWS|StringToBinary|StringTrimLeft|StringTrimRight|StringUpper|Tan|TCPAccept|TCPCloseSocket|TCPConnect|TCPListen|TCPNameToIP|TCPRecv|TCPSend|TCPShutdown|TCPStartup|TimerDiff|TimerInit|ToolTip|TrayCreateItem|TrayCreateMenu|TrayGetMsg|TrayItemDelete|TrayItemGetHandle|TrayItemGetState|TrayItemGetText|TrayItemSetOnEvent|TrayItemSetState|TrayItemSetText|TraySetClick|TraySetIcon|TraySetOnEvent|TraySetPauseIcon|TraySetState|TraySetToolTip|TrayTip|UBound|UDPBind|UDPCloseSocket|UDPOpen|UDPRecv|UDPSend|UDPShutdown|UDPStartup|VarGetType|WinActivate|WinActive|WinClose|WinExists|WinFlash|WinGetCaretPos|WinGetClassList|WinGetClientSize|WinGetHandle|WinGetPos|WinGetProcess|WinGetState|WinGetText|WinGetTitle|WinKill|WinList|WinMenuSelectItem|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinSetOnTop|WinSetState|WinSetTitle|WinSetTrans|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive|ArrayAdd|ArrayBinarySearch|ArrayConcatenate|ArrayDelete|ArrayDisplay|ArrayFindAll|ArrayInsert|ArrayMax|ArrayMaxIndex|ArrayMin|ArrayMinIndex|ArrayPop|ArrayPush|ArrayReverse|ArraySearch|ArraySort|ArraySwap|ArrayToClip|ArrayToString|ArrayTrim|ChooseColor|ChooseFont|ClipBoard_ChangeChain|ClipBoard_Close|ClipBoard_CountFormats|ClipBoard_Empty|ClipBoard_EnumFormats|ClipBoard_FormatStr|ClipBoard_GetData|ClipBoard_GetDataEx|ClipBoard_GetFormatName|ClipBoard_GetOpenWindow|ClipBoard_GetOwner|ClipBoard_GetPriorityFormat|ClipBoard_GetSequenceNumber|ClipBoard_GetViewer|ClipBoard_IsFormatAvailable|ClipBoard_Open|ClipBoard_RegisterFormat|ClipBoard_SetData|ClipBoard_SetDataEx|ClipBoard_SetViewer|ClipPutFile|ColorConvertHSLtoRGB|ColorConvertRGBtoHSL|ColorGetBlue|ColorGetGreen|ColorGetRed|Date_Time_CompareFileTime|Date_Time_DOSDateTimeToArray|Date_Time_DOSDateTimeToFileTime|Date_Time_DOSDateTimeToStr|Date_Time_DOSDateToArray|Date_Time_DOSDateToStr|Date_Time_DOSTimeToArray|Date_Time_DOSTimeToStr|Date_Time_EncodeFileTime|Date_Time_EncodeSystemTime|Date_Time_FileTimeToArray|Date_Time_FileTimeToDOSDateTime|Date_Time_FileTimeToLocalFileTime|Date_Time_FileTimeToStr|Date_Time_FileTimeToSystemTime|Date_Time_GetFileTime|Date_Time_GetLocalTime|Date_Time_GetSystemTime|Date_Time_GetSystemTimeAdjustment|Date_Time_GetSystemTimeAsFileTime|Date_Time_GetSystemTimes|Date_Time_GetTickCount|Date_Time_GetTimeZoneInformation|Date_Time_LocalFileTimeToFileTime|Date_Time_SetFileTime|Date_Time_SetLocalTime|Date_Time_SetSystemTime|Date_Time_SetSystemTimeAdjustment|Date_Time_SetTimeZoneInformation|Date_Time_SystemTimeToArray|Date_Time_SystemTimeToDateStr|Date_Time_SystemTimeToDateTimeStr|Date_Time_SystemTimeToFileTime|Date_Time_SystemTimeToTimeStr|Date_Time_SystemTimeToTzSpecificLocalTime|Date_Time_TzSpecificLocalTimeToSystemTime|DateAdd|DateDayOfWeek|DateDaysInMonth|DateDiff|DateIsLeapYear|DateIsValid|DateTimeFormat|DateTimeSplit|DateToDayOfWeek|DateToDayOfWeekISO|DateToDayValue|DateToMonth|DayValueToDate|DebugBugReportEnv|DebugOut|DebugSetup|Degree|EventLog__Backup|EventLog__Clear|EventLog__Close|EventLog__Count|EventLog__DeregisterSource|EventLog__Full|EventLog__Notify|EventLog__Oldest|EventLog__Open|EventLog__OpenBackup|EventLog__Read|EventLog__RegisterSource|EventLog__Report|FileCountLines|FileCreate|FileListToArray|FilePrint|FileReadToArray|FileWriteFromArray|FileWriteLog|FileWriteToLine|GDIPlus_ArrowCapCreate|GDIPlus_ArrowCapDispose|GDIPlus_ArrowCapGetFillState|GDIPlus_ArrowCapGetHeight|GDIPlus_ArrowCapGetMiddleInset|GDIPlus_ArrowCapGetWidth|GDIPlus_ArrowCapSetFillState|GDIPlus_ArrowCapSetHeight|GDIPlus_ArrowCapSetMiddleInset|GDIPlus_ArrowCapSetWidth|GDIPlus_BitmapCloneArea|GDIPlus_BitmapCreateFromFile|GDIPlus_BitmapCreateFromGraphics|GDIPlus_BitmapCreateFromHBITMAP|GDIPlus_BitmapCreateHBITMAPFromBitmap|GDIPlus_BitmapDispose|GDIPlus_BitmapLockBits|GDIPlus_BitmapUnlockBits|GDIPlus_BrushClone|GDIPlus_BrushCreateSolid|GDIPlus_BrushDispose|GDIPlus_BrushGetType|GDIPlus_CustomLineCapDispose|GDIPlus_Decoders|GDIPlus_DecodersGetCount|GDIPlus_DecodersGetSize|GDIPlus_Encoders|GDIPlus_EncodersGetCLSID|GDIPlus_EncodersGetCount|GDIPlus_EncodersGetParamList|GDIPlus_EncodersGetParamListSize|GDIPlus_EncodersGetSize|GDIPlus_FontCreate|GDIPlus_FontDispose|GDIPlus_FontFamilyCreate|GDIPlus_FontFamilyDispose|GDIPlus_GraphicsClear|GDIPlus_GraphicsCreateFromHDC|GDIPlus_GraphicsCreateFromHWND|GDIPlus_GraphicsDispose|GDIPlus_GraphicsDrawArc|GDIPlus_GraphicsDrawBezier|GDIPlus_GraphicsDrawClosedCurve|GDIPlus_GraphicsDrawCurve|GDIPlus_GraphicsDrawEllipse|GDIPlus_GraphicsDrawImage|GDIPlus_GraphicsDrawImageRect|GDIPlus_GraphicsDrawImageRectRect|GDIPlus_GraphicsDrawLine|GDIPlus_GraphicsDrawPie|GDIPlus_GraphicsDrawPolygon|GDIPlus_GraphicsDrawRect|GDIPlus_GraphicsDrawString|GDIPlus_GraphicsDrawStringEx|GDIPlus_GraphicsFillClosedCurve|GDIPlus_GraphicsFillEllipse|GDIPlus_GraphicsFillPie|GDIPlus_GraphicsFillRect|GDIPlus_GraphicsGetDC|GDIPlus_GraphicsGetSmoothingMode|GDIPlus_GraphicsMeasureString|GDIPlus_GraphicsReleaseDC|GDIPlus_GraphicsSetSmoothingMode|GDIPlus_GraphicsSetTransform|GDIPlus_ImageDispose|GDIPlus_ImageGetGraphicsContext|GDIPlus_ImageGetHeight|GDIPlus_ImageGetWidth|GDIPlus_ImageLoadFromFile|GDIPlus_ImageSaveToFile|GDIPlus_ImageSaveToFileEx|GDIPlus_MatrixCreate|GDIPlus_MatrixDispose|GDIPlus_MatrixRotate|GDIPlus_ParamAdd|GDIPlus_ParamInit|GDIPlus_PenCreate|GDIPlus_PenDispose|GDIPlus_PenGetAlignment|GDIPlus_PenGetColor|GDIPlus_PenGetCustomEndCap|GDIPlus_PenGetDashCap|GDIPlus_PenGetDashStyle|GDIPlus_PenGetEndCap|GDIPlus_PenGetWidth|GDIPlus_PenSetAlignment|GDIPlus_PenSetColor|GDIPlus_PenSetCustomEndCap|GDIPlus_PenSetDashCap|GDIPlus_PenSetDashStyle|GDIPlus_PenSetEndCap|GDIPlus_PenSetWidth|GDIPlus_RectFCreate|GDIPlus_Shutdown|GDIPlus_Startup|GDIPlus_StringFormatCreate|GDIPlus_StringFormatDispose|GetIP|GUICtrlAVI_Close|GUICtrlAVI_Create|GUICtrlAVI_Destroy|GUICtrlAVI_Open|GUICtrlAVI_OpenEx|GUICtrlAVI_Play|GUICtrlAVI_Seek|GUICtrlAVI_Show|GUICtrlAVI_Stop|GUICtrlButton_Click|GUICtrlButton_Create|GUICtrlButton_Destroy|GUICtrlButton_Enable|GUICtrlButton_GetCheck|GUICtrlButton_GetFocus|GUICtrlButton_GetIdealSize|GUICtrlButton_GetImage|GUICtrlButton_GetImageList|GUICtrlButton_GetState|GUICtrlButton_GetText|GUICtrlButton_GetTextMargin|GUICtrlButton_SetCheck|GUICtrlButton_SetFocus|GUICtrlButton_SetImage|GUICtrlButton_SetImageList|GUICtrlButton_SetSize|GUICtrlButton_SetState|GUICtrlButton_SetStyle|GUICtrlButton_SetText|GUICtrlButton_SetTextMargin|GUICtrlButton_Show|GUICtrlComboBox_AddDir|GUICtrlComboBox_AddString|GUICtrlComboBox_AutoComplete|GUICtrlComboBox_BeginUpdate|GUICtrlComboBox_Create|GUICtrlComboBox_DeleteString|GUICtrlComboBox_Destroy|GUICtrlComboBox_EndUpdate|GUICtrlComboBox_FindString|GUICtrlComboBox_FindStringExact|GUICtrlComboBox_GetComboBoxInfo|GUICtrlComboBox_GetCount|GUICtrlComboBox_GetCurSel|GUICtrlComboBox_GetDroppedControlRect|GUICtrlComboBox_GetDroppedControlRectEx|GUICtrlComboBox_GetDroppedState|GUICtrlComboBox_GetDroppedWidth|GUICtrlComboBox_GetEditSel|GUICtrlComboBox_GetEditText|GUICtrlComboBox_GetExtendedUI|GUICtrlComboBox_GetHorizontalExtent|GUICtrlComboBox_GetItemHeight|GUICtrlComboBox_GetLBText|GUICtrlComboBox_GetLBTextLen|GUICtrlComboBox_GetList|GUICtrlComboBox_GetListArray|GUICtrlComboBox_GetLocale|GUICtrlComboBox_GetLocaleCountry|GUICtrlComboBox_GetLocaleLang|GUICtrlComboBox_GetLocalePrimLang|GUICtrlComboBox_GetLocaleSubLang|GUICtrlComboBox_GetMinVisible|GUICtrlComboBox_GetTopIndex|GUICtrlComboBox_InitStorage|GUICtrlComboBox_InsertString|GUICtrlComboBox_LimitText|GUICtrlComboBox_ReplaceEditSel|GUICtrlComboBox_ResetContent|GUICtrlComboBox_SelectString|GUICtrlComboBox_SetCurSel|GUICtrlComboBox_SetDroppedWidth|GUICtrlComboBox_SetEditSel|GUICtrlComboBox_SetEditText|GUICtrlComboBox_SetExtendedUI|GUICtrlComboBox_SetHorizontalExtent|GUICtrlComboBox_SetItemHeight|GUICtrlComboBox_SetMinVisible|GUICtrlComboBox_SetTopIndex|GUICtrlComboBox_ShowDropDown|GUICtrlComboBoxEx_AddDir|GUICtrlComboBoxEx_AddString|GUICtrlComboBoxEx_BeginUpdate|GUICtrlComboBoxEx_Create|GUICtrlComboBoxEx_CreateSolidBitMap|GUICtrlComboBoxEx_DeleteString|GUICtrlComboBoxEx_Destroy|GUICtrlComboBoxEx_EndUpdate|GUICtrlComboBoxEx_FindStringExact|GUICtrlComboBoxEx_GetComboBoxInfo|GUICtrlComboBoxEx_GetComboControl|GUICtrlComboBoxEx_GetCount|GUICtrlComboBoxEx_GetCurSel|GUICtrlComboBoxEx_GetDroppedControlRect|GUICtrlComboBoxEx_GetDroppedControlRectEx|GUICtrlComboBoxEx_GetDroppedState|GUICtrlComboBoxEx_GetDroppedWidth|GUICtrlComboBoxEx_GetEditControl|GUICtrlComboBoxEx_GetEditSel|GUICtrlComboBoxEx_GetEditText|GUICtrlComboBoxEx_GetExtendedStyle|GUICtrlComboBoxEx_GetExtendedUI|GUICtrlComboBoxEx_GetImageList|GUICtrlComboBoxEx_GetItem|GUICtrlComboBoxEx_GetItemEx|GUICtrlComboBoxEx_GetItemHeight|GUICtrlComboBoxEx_GetItemImage|GUICtrlComboBoxEx_GetItemIndent|GUICtrlComboBoxEx_GetItemOverlayImage|GUICtrlComboBoxEx_GetItemParam|GUICtrlComboBoxEx_GetItemSelectedImage|GUICtrlComboBoxEx_GetItemText|GUICtrlComboBoxEx_GetItemTextLen|GUICtrlComboBoxEx_GetList|GUICtrlComboBoxEx_GetListArray|GUICtrlComboBoxEx_GetLocale|GUICtrlComboBoxEx_GetLocaleCountry|GUICtrlComboBoxEx_GetLocaleLang|GUICtrlComboBoxEx_GetLocalePrimLang|GUICtrlComboBoxEx_GetLocaleSubLang|GUICtrlComboBoxEx_GetMinVisible|GUICtrlComboBoxEx_GetTopIndex|GUICtrlComboBoxEx_InitStorage|GUICtrlComboBoxEx_InsertString|GUICtrlComboBoxEx_LimitText|GUICtrlComboBoxEx_ReplaceEditSel|GUICtrlComboBoxEx_ResetContent|GUICtrlComboBoxEx_SetCurSel|GUICtrlComboBoxEx_SetDroppedWidth|GUICtrlComboBoxEx_SetEditSel|GUICtrlComboBoxEx_SetEditText|GUICtrlComboBoxEx_SetExtendedStyle|GUICtrlComboBoxEx_SetExtendedUI|GUICtrlComboBoxEx_SetImageList|GUICtrlComboBoxEx_SetItem|GUICtrlComboBoxEx_SetItemEx|GUICtrlComboBoxEx_SetItemHeight|GUICtrlComboBoxEx_SetItemImage|GUICtrlComboBoxEx_SetItemIndent|GUICtrlComboBoxEx_SetItemOverlayImage|GUICtrlComboBoxEx_SetItemParam|GUICtrlComboBoxEx_SetItemSelectedImage|GUICtrlComboBoxEx_SetMinVisible|GUICtrlComboBoxEx_SetTopIndex|GUICtrlComboBoxEx_ShowDropDown|GUICtrlDTP_Create|GUICtrlDTP_Destroy|GUICtrlDTP_GetMCColor|GUICtrlDTP_GetMCFont|GUICtrlDTP_GetMonthCal|GUICtrlDTP_GetRange|GUICtrlDTP_GetRangeEx|GUICtrlDTP_GetSystemTime|GUICtrlDTP_GetSystemTimeEx|GUICtrlDTP_SetFormat|GUICtrlDTP_SetMCColor|GUICtrlDTP_SetMCFont|GUICtrlDTP_SetRange|GUICtrlDTP_SetRangeEx|GUICtrlDTP_SetSystemTime|GUICtrlDTP_SetSystemTimeEx|GUICtrlEdit_AppendText|GUICtrlEdit_BeginUpdate|GUICtrlEdit_CanUndo|GUICtrlEdit_CharFromPos|GUICtrlEdit_Create|GUICtrlEdit_Destroy|GUICtrlEdit_EmptyUndoBuffer|GUICtrlEdit_EndUpdate|GUICtrlEdit_Find|GUICtrlEdit_FmtLines|GUICtrlEdit_GetFirstVisibleLine|GUICtrlEdit_GetLimitText|GUICtrlEdit_GetLine|GUICtrlEdit_GetLineCount|GUICtrlEdit_GetMargins|GUICtrlEdit_GetModify|GUICtrlEdit_GetPasswordChar|GUICtrlEdit_GetRECT|GUICtrlEdit_GetRECTEx|GUICtrlEdit_GetSel|GUICtrlEdit_GetText|GUICtrlEdit_GetTextLen|GUICtrlEdit_HideBalloonTip|GUICtrlEdit_InsertText|GUICtrlEdit_LineFromChar|GUICtrlEdit_LineIndex|GUICtrlEdit_LineLength|GUICtrlEdit_LineScroll|GUICtrlEdit_PosFromChar|GUICtrlEdit_ReplaceSel|GUICtrlEdit_Scroll|GUICtrlEdit_SetLimitText|GUICtrlEdit_SetMargins|GUICtrlEdit_SetModify|GUICtrlEdit_SetPasswordChar|GUICtrlEdit_SetReadOnly|GUICtrlEdit_SetRECT|GUICtrlEdit_SetRECTEx|GUICtrlEdit_SetRECTNP|GUICtrlEdit_SetRectNPEx|GUICtrlEdit_SetSel|GUICtrlEdit_SetTabStops|GUICtrlEdit_SetText|GUICtrlEdit_ShowBalloonTip|GUICtrlEdit_Undo|GUICtrlHeader_AddItem|GUICtrlHeader_ClearFilter|GUICtrlHeader_ClearFilterAll|GUICtrlHeader_Create|GUICtrlHeader_CreateDragImage|GUICtrlHeader_DeleteItem|GUICtrlHeader_Destroy|GUICtrlHeader_EditFilter|GUICtrlHeader_GetBitmapMargin|GUICtrlHeader_GetImageList|GUICtrlHeader_GetItem|GUICtrlHeader_GetItemAlign|GUICtrlHeader_GetItemBitmap|GUICtrlHeader_GetItemCount|GUICtrlHeader_GetItemDisplay|GUICtrlHeader_GetItemFlags|GUICtrlHeader_GetItemFormat|GUICtrlHeader_GetItemImage|GUICtrlHeader_GetItemOrder|GUICtrlHeader_GetItemParam|GUICtrlHeader_GetItemRect|GUICtrlHeader_GetItemRectEx|GUICtrlHeader_GetItemText|GUICtrlHeader_GetItemWidth|GUICtrlHeader_GetOrderArray|GUICtrlHeader_GetUnicodeFormat|GUICtrlHeader_HitTest|GUICtrlHeader_InsertItem|GUICtrlHeader_Layout|GUICtrlHeader_OrderToIndex|GUICtrlHeader_SetBitmapMargin|GUICtrlHeader_SetFilterChangeTimeout|GUICtrlHeader_SetHotDivider|GUICtrlHeader_SetImageList|GUICtrlHeader_SetItem|GUICtrlHeader_SetItemAlign|GUICtrlHeader_SetItemBitmap|GUICtrlHeader_SetItemDisplay|GUICtrlHeader_SetItemFlags|GUICtrlHeader_SetItemFormat|GUICtrlHeader_SetItemImage|GUICtrlHeader_SetItemOrder|GUICtrlHeader_SetItemParam|GUICtrlHeader_SetItemText|GUICtrlHeader_SetItemWidth|GUICtrlHeader_SetOrderArray|GUICtrlHeader_SetUnicodeFormat|GUICtrlIpAddress_ClearAddress|GUICtrlIpAddress_Create|GUICtrlIpAddress_Destroy|GUICtrlIpAddress_Get|GUICtrlIpAddress_GetArray|GUICtrlIpAddress_GetEx|GUICtrlIpAddress_IsBlank|GUICtrlIpAddress_Set|GUICtrlIpAddress_SetArray|GUICtrlIpAddress_SetEx|GUICtrlIpAddress_SetFocus|GUICtrlIpAddress_SetFont|GUICtrlIpAddress_SetRange|GUICtrlIpAddress_ShowHide|GUICtrlListBox_AddFile|GUICtrlListBox_AddString|GUICtrlListBox_BeginUpdate|GUICtrlListBox_Create|GUICtrlListBox_DeleteString|GUICtrlListBox_Destroy|GUICtrlListBox_Dir|GUICtrlListBox_EndUpdate|GUICtrlListBox_FindInText|GUICtrlListBox_FindString|GUICtrlListBox_GetAnchorIndex|GUICtrlListBox_GetCaretIndex|GUICtrlListBox_GetCount|GUICtrlListBox_GetCurSel|GUICtrlListBox_GetHorizontalExtent|GUICtrlListBox_GetItemData|GUICtrlListBox_GetItemHeight|GUICtrlListBox_GetItemRect|GUICtrlListBox_GetItemRectEx|GUICtrlListBox_GetListBoxInfo|GUICtrlListBox_GetLocale|GUICtrlListBox_GetLocaleCountry|GUICtrlListBox_GetLocaleLang|GUICtrlListBox_GetLocalePrimLang|GUICtrlListBox_GetLocaleSubLang|GUICtrlListBox_GetSel|GUICtrlListBox_GetSelCount|GUICtrlListBox_GetSelItems|GUICtrlListBox_GetSelItemsText|GUICtrlListBox_GetText|GUICtrlListBox_GetTextLen|GUICtrlListBox_GetTopIndex|GUICtrlListBox_InitStorage|GUICtrlListBox_InsertString|GUICtrlListBox_ItemFromPoint|GUICtrlListBox_ReplaceString|GUICtrlListBox_ResetContent|GUICtrlListBox_SelectString|GUICtrlListBox_SelItemRange|GUICtrlListBox_SelItemRangeEx|GUICtrlListBox_SetAnchorIndex|GUICtrlListBox_SetCaretIndex|GUICtrlListBox_SetColumnWidth|GUICtrlListBox_SetCurSel|GUICtrlListBox_SetHorizontalExtent|GUICtrlListBox_SetItemData|GUICtrlListBox_SetItemHeight|GUICtrlListBox_SetLocale|GUICtrlListBox_SetSel|GUICtrlListBox_SetTabStops|GUICtrlListBox_SetTopIndex|GUICtrlListBox_Sort|GUICtrlListBox_SwapString|GUICtrlListBox_UpdateHScroll|GUICtrlListView_AddArray|GUICtrlListView_AddColumn|GUICtrlListView_AddItem|GUICtrlListView_AddSubItem|GUICtrlListView_ApproximateViewHeight|GUICtrlListView_ApproximateViewRect|GUICtrlListView_ApproximateViewWidth|GUICtrlListView_Arrange|GUICtrlListView_BeginUpdate|GUICtrlListView_CancelEditLabel|GUICtrlListView_ClickItem|GUICtrlListView_CopyItems|GUICtrlListView_Create|GUICtrlListView_CreateDragImage|GUICtrlListView_CreateSolidBitMap|GUICtrlListView_DeleteAllItems|GUICtrlListView_DeleteColumn|GUICtrlListView_DeleteItem|GUICtrlListView_DeleteItemsSelected|GUICtrlListView_Destroy|GUICtrlListView_DrawDragImage|GUICtrlListView_EditLabel|GUICtrlListView_EnableGroupView|GUICtrlListView_EndUpdate|GUICtrlListView_EnsureVisible|GUICtrlListView_FindInText|GUICtrlListView_FindItem|GUICtrlListView_FindNearest|GUICtrlListView_FindParam|GUICtrlListView_FindText|GUICtrlListView_GetBkColor|GUICtrlListView_GetBkImage|GUICtrlListView_GetCallbackMask|GUICtrlListView_GetColumn|GUICtrlListView_GetColumnCount|GUICtrlListView_GetColumnOrder|GUICtrlListView_GetColumnOrderArray|GUICtrlListView_GetColumnWidth|GUICtrlListView_GetCounterPage|GUICtrlListView_GetEditControl|GUICtrlListView_GetExtendedListViewStyle|GUICtrlListView_GetGroupInfo|GUICtrlListView_GetGroupViewEnabled|GUICtrlListView_GetHeader|GUICtrlListView_GetHotCursor|GUICtrlListView_GetHotItem|GUICtrlListView_GetHoverTime|GUICtrlListView_GetImageList|GUICtrlListView_GetISearchString|GUICtrlListView_GetItem|GUICtrlListView_GetItemChecked|GUICtrlListView_GetItemCount|GUICtrlListView_GetItemCut|GUICtrlListView_GetItemDropHilited|GUICtrlListView_GetItemEx|GUICtrlListView_GetItemFocused|GUICtrlListView_GetItemGroupID|GUICtrlListView_GetItemImage|GUICtrlListView_GetItemIndent|GUICtrlListView_GetItemParam|GUICtrlListView_GetItemPosition|GUICtrlListView_GetItemPositionX|GUICtrlListView_GetItemPositionY|GUICtrlListView_GetItemRect|GUICtrlListView_GetItemRectEx|GUICtrlListView_GetItemSelected|GUICtrlListView_GetItemSpacing|GUICtrlListView_GetItemSpacingX|GUICtrlListView_GetItemSpacingY|GUICtrlListView_GetItemState|GUICtrlListView_GetItemStateImage|GUICtrlListView_GetItemText|GUICtrlListView_GetItemTextArray|GUICtrlListView_GetItemTextString|GUICtrlListView_GetNextItem|GUICtrlListView_GetNumberOfWorkAreas|GUICtrlListView_GetOrigin|GUICtrlListView_GetOriginX|GUICtrlListView_GetOriginY|GUICtrlListView_GetOutlineColor|GUICtrlListView_GetSelectedColumn|GUICtrlListView_GetSelectedCount|GUICtrlListView_GetSelectedIndices|GUICtrlListView_GetSelectionMark|GUICtrlListView_GetStringWidth|GUICtrlListView_GetSubItemRect|GUICtrlListView_GetTextBkColor|GUICtrlListView_GetTextColor|GUICtrlListView_GetToolTips|GUICtrlListView_GetTopIndex|GUICtrlListView_GetUnicodeFormat|GUICtrlListView_GetView|GUICtrlListView_GetViewDetails|GUICtrlListView_GetViewLarge|GUICtrlListView_GetViewList|GUICtrlListView_GetViewRect|GUICtrlListView_GetViewSmall|GUICtrlListView_GetViewTile|GUICtrlListView_HideColumn|GUICtrlListView_HitTest|GUICtrlListView_InsertColumn|GUICtrlListView_InsertGroup|GUICtrlListView_InsertItem|GUICtrlListView_JustifyColumn|GUICtrlListView_MapIDToIndex|GUICtrlListView_MapIndexToID|GUICtrlListView_RedrawItems|GUICtrlListView_RegisterSortCallBack|GUICtrlListView_RemoveAllGroups|GUICtrlListView_RemoveGroup|GUICtrlListView_Scroll|GUICtrlListView_SetBkColor|GUICtrlListView_SetBkImage|GUICtrlListView_SetCallBackMask|GUICtrlListView_SetColumn|GUICtrlListView_SetColumnOrder|GUICtrlListView_SetColumnOrderArray|GUICtrlListView_SetColumnWidth|GUICtrlListView_SetExtendedListViewStyle|GUICtrlListView_SetGroupInfo|GUICtrlListView_SetHotItem|GUICtrlListView_SetHoverTime|GUICtrlListView_SetIconSpacing|GUICtrlListView_SetImageList|GUICtrlListView_SetItem|GUICtrlListView_SetItemChecked|GUICtrlListView_SetItemCount|GUICtrlListView_SetItemCut|GUICtrlListView_SetItemDropHilited|GUICtrlListView_SetItemEx|GUICtrlListView_SetItemFocused|GUICtrlListView_SetItemGroupID|GUICtrlListView_SetItemImage|GUICtrlListView_SetItemIndent|GUICtrlListView_SetItemParam|GUICtrlListView_SetItemPosition|GUICtrlListView_SetItemPosition32|GUICtrlListView_SetItemSelected|GUICtrlListView_SetItemState|GUICtrlListView_SetItemStateImage|GUICtrlListView_SetItemText|GUICtrlListView_SetOutlineColor|GUICtrlListView_SetSelectedColumn|GUICtrlListView_SetSelectionMark|GUICtrlListView_SetTextBkColor|GUICtrlListView_SetTextColor|GUICtrlListView_SetToolTips|GUICtrlListView_SetUnicodeFormat|GUICtrlListView_SetView|GUICtrlListView_SetWorkAreas|GUICtrlListView_SimpleSort|GUICtrlListView_SortItems|GUICtrlListView_SubItemHitTest|GUICtrlListView_UnRegisterSortCallBack|GUICtrlMenu_AddMenuItem|GUICtrlMenu_AppendMenu|GUICtrlMenu_CheckMenuItem|GUICtrlMenu_CheckRadioItem|GUICtrlMenu_CreateMenu|GUICtrlMenu_CreatePopup|GUICtrlMenu_DeleteMenu|GUICtrlMenu_DestroyMenu|GUICtrlMenu_DrawMenuBar|GUICtrlMenu_EnableMenuItem|GUICtrlMenu_FindItem|GUICtrlMenu_FindParent|GUICtrlMenu_GetItemBmp|GUICtrlMenu_GetItemBmpChecked|GUICtrlMenu_GetItemBmpUnchecked|GUICtrlMenu_GetItemChecked|GUICtrlMenu_GetItemCount|GUICtrlMenu_GetItemData|GUICtrlMenu_GetItemDefault|GUICtrlMenu_GetItemDisabled|GUICtrlMenu_GetItemEnabled|GUICtrlMenu_GetItemGrayed|GUICtrlMenu_GetItemHighlighted|GUICtrlMenu_GetItemID|GUICtrlMenu_GetItemInfo|GUICtrlMenu_GetItemRect|GUICtrlMenu_GetItemRectEx|GUICtrlMenu_GetItemState|GUICtrlMenu_GetItemStateEx|GUICtrlMenu_GetItemSubMenu|GUICtrlMenu_GetItemText|GUICtrlMenu_GetItemType|GUICtrlMenu_GetMenu|GUICtrlMenu_GetMenuBackground|GUICtrlMenu_GetMenuBarInfo|GUICtrlMenu_GetMenuContextHelpID|GUICtrlMenu_GetMenuData|GUICtrlMenu_GetMenuDefaultItem|GUICtrlMenu_GetMenuHeight|GUICtrlMenu_GetMenuInfo|GUICtrlMenu_GetMenuStyle|GUICtrlMenu_GetSystemMenu|GUICtrlMenu_InsertMenuItem|GUICtrlMenu_InsertMenuItemEx|GUICtrlMenu_IsMenu|GUICtrlMenu_LoadMenu|GUICtrlMenu_MapAccelerator|GUICtrlMenu_MenuItemFromPoint|GUICtrlMenu_RemoveMenu|GUICtrlMenu_SetItemBitmaps|GUICtrlMenu_SetItemBmp|GUICtrlMenu_SetItemBmpChecked|GUICtrlMenu_SetItemBmpUnchecked|GUICtrlMenu_SetItemChecked|GUICtrlMenu_SetItemData|GUICtrlMenu_SetItemDefault|GUICtrlMenu_SetItemDisabled|GUICtrlMenu_SetItemEnabled|GUICtrlMenu_SetItemGrayed|GUICtrlMenu_SetItemHighlighted|GUICtrlMenu_SetItemID|GUICtrlMenu_SetItemInfo|GUICtrlMenu_SetItemState|GUICtrlMenu_SetItemSubMenu|GUICtrlMenu_SetItemText|GUICtrlMenu_SetItemType|GUICtrlMenu_SetMenu|GUICtrlMenu_SetMenuBackground|GUICtrlMenu_SetMenuContextHelpID|GUICtrlMenu_SetMenuData|GUICtrlMenu_SetMenuDefaultItem|GUICtrlMenu_SetMenuHeight|GUICtrlMenu_SetMenuInfo|GUICtrlMenu_SetMenuStyle|GUICtrlMenu_TrackPopupMenu|GUICtrlMonthCal_Create|GUICtrlMonthCal_Destroy|GUICtrlMonthCal_GetColor|GUICtrlMonthCal_GetColorArray|GUICtrlMonthCal_GetCurSel|GUICtrlMonthCal_GetCurSelStr|GUICtrlMonthCal_GetFirstDOW|GUICtrlMonthCal_GetFirstDOWStr|GUICtrlMonthCal_GetMaxSelCount|GUICtrlMonthCal_GetMaxTodayWidth|GUICtrlMonthCal_GetMinReqHeight|GUICtrlMonthCal_GetMinReqRect|GUICtrlMonthCal_GetMinReqRectArray|GUICtrlMonthCal_GetMinReqWidth|GUICtrlMonthCal_GetMonthDelta|GUICtrlMonthCal_GetMonthRange|GUICtrlMonthCal_GetMonthRangeMax|GUICtrlMonthCal_GetMonthRangeMaxStr|GUICtrlMonthCal_GetMonthRangeMin|GUICtrlMonthCal_GetMonthRangeMinStr|GUICtrlMonthCal_GetMonthRangeSpan|GUICtrlMonthCal_GetRange|GUICtrlMonthCal_GetRangeMax|GUICtrlMonthCal_GetRangeMaxStr|GUICtrlMonthCal_GetRangeMin|GUICtrlMonthCal_GetRangeMinStr|GUICtrlMonthCal_GetSelRange|GUICtrlMonthCal_GetSelRangeMax|GUICtrlMonthCal_GetSelRangeMaxStr|GUICtrlMonthCal_GetSelRangeMin|GUICtrlMonthCal_GetSelRangeMinStr|GUICtrlMonthCal_GetToday|GUICtrlMonthCal_GetTodayStr|GUICtrlMonthCal_GetUnicodeFormat|GUICtrlMonthCal_HitTest|GUICtrlMonthCal_SetColor|GUICtrlMonthCal_SetCurSel|GUICtrlMonthCal_SetDayState|GUICtrlMonthCal_SetFirstDOW|GUICtrlMonthCal_SetMaxSelCount|GUICtrlMonthCal_SetMonthDelta|GUICtrlMonthCal_SetRange|GUICtrlMonthCal_SetSelRange|GUICtrlMonthCal_SetToday|GUICtrlMonthCal_SetUnicodeFormat|GUICtrlRebar_AddBand|GUICtrlRebar_AddToolBarBand|GUICtrlRebar_BeginDrag|GUICtrlRebar_Create|GUICtrlRebar_DeleteBand|GUICtrlRebar_Destroy|GUICtrlRebar_DragMove|GUICtrlRebar_EndDrag|GUICtrlRebar_GetBandBackColor|GUICtrlRebar_GetBandBorders|GUICtrlRebar_GetBandBordersEx|GUICtrlRebar_GetBandChildHandle|GUICtrlRebar_GetBandChildSize|GUICtrlRebar_GetBandCount|GUICtrlRebar_GetBandForeColor|GUICtrlRebar_GetBandHeaderSize|GUICtrlRebar_GetBandID|GUICtrlRebar_GetBandIdealSize|GUICtrlRebar_GetBandLength|GUICtrlRebar_GetBandLParam|GUICtrlRebar_GetBandMargins|GUICtrlRebar_GetBandMarginsEx|GUICtrlRebar_GetBandRect|GUICtrlRebar_GetBandRectEx|GUICtrlRebar_GetBandStyle|GUICtrlRebar_GetBandStyleBreak|GUICtrlRebar_GetBandStyleChildEdge|GUICtrlRebar_GetBandStyleFixedBMP|GUICtrlRebar_GetBandStyleFixedSize|GUICtrlRebar_GetBandStyleGripperAlways|GUICtrlRebar_GetBandStyleHidden|GUICtrlRebar_GetBandStyleHideTitle|GUICtrlRebar_GetBandStyleNoGripper|GUICtrlRebar_GetBandStyleTopAlign|GUICtrlRebar_GetBandStyleUseChevron|GUICtrlRebar_GetBandStyleVariableHeight|GUICtrlRebar_GetBandText|GUICtrlRebar_GetBarHeight|GUICtrlRebar_GetBKColor|GUICtrlRebar_GetColorScheme|GUICtrlRebar_GetRowCount|GUICtrlRebar_GetRowHeight|GUICtrlRebar_GetTextColor|GUICtrlRebar_GetToolTips|GUICtrlRebar_GetUnicodeFormat|GUICtrlRebar_HitTest|GUICtrlRebar_IDToIndex|GUICtrlRebar_MaximizeBand|GUICtrlRebar_MinimizeBand|GUICtrlRebar_MoveBand|GUICtrlRebar_SetBandBackColor|GUICtrlRebar_SetBandForeColor|GUICtrlRebar_SetBandHeaderSize|GUICtrlRebar_SetBandID|GUICtrlRebar_SetBandIdealSize|GUICtrlRebar_SetBandLength|GUICtrlRebar_SetBandLParam|GUICtrlRebar_SetBandStyle|GUICtrlRebar_SetBandStyleBreak|GUICtrlRebar_SetBandStyleChildEdge|GUICtrlRebar_SetBandStyleFixedBMP|GUICtrlRebar_SetBandStyleFixedSize|GUICtrlRebar_SetBandStyleGripperAlways|GUICtrlRebar_SetBandStyleHidden|GUICtrlRebar_SetBandStyleHideTitle|GUICtrlRebar_SetBandStyleNoGripper|GUICtrlRebar_SetBandStyleTopAlign|GUICtrlRebar_SetBandStyleUseChevron|GUICtrlRebar_SetBandStyleVariableHeight|GUICtrlRebar_SetBandText|GUICtrlRebar_SetBKColor|GUICtrlRebar_SetColorScheme|GUICtrlRebar_SetTextColor|GUICtrlRebar_SetToolTips|GUICtrlRebar_SetUnicodeFormat|GUICtrlRebar_ShowBand|GUICtrlSlider_ClearSel|GUICtrlSlider_ClearTics|GUICtrlSlider_Create|GUICtrlSlider_Destroy|GUICtrlSlider_GetBuddy|GUICtrlSlider_GetChannelRect|GUICtrlSlider_GetLineSize|GUICtrlSlider_GetNumTics|GUICtrlSlider_GetPageSize|GUICtrlSlider_GetPos|GUICtrlSlider_GetPTics|GUICtrlSlider_GetRange|GUICtrlSlider_GetRangeMax|GUICtrlSlider_GetRangeMin|GUICtrlSlider_GetSel|GUICtrlSlider_GetSelEnd|GUICtrlSlider_GetSelStart|GUICtrlSlider_GetThumbLength|GUICtrlSlider_GetThumbRect|GUICtrlSlider_GetThumbRectEx|GUICtrlSlider_GetTic|GUICtrlSlider_GetTicPos|GUICtrlSlider_GetToolTips|GUICtrlSlider_GetUnicodeFormat|GUICtrlSlider_SetBuddy|GUICtrlSlider_SetLineSize|GUICtrlSlider_SetPageSize|GUICtrlSlider_SetPos|GUICtrlSlider_SetRange|GUICtrlSlider_SetRangeMax|GUICtrlSlider_SetRangeMin|GUICtrlSlider_SetSel|GUICtrlSlider_SetSelEnd|GUICtrlSlider_SetSelStart|GUICtrlSlider_SetThumbLength|GUICtrlSlider_SetTic|GUICtrlSlider_SetTicFreq|GUICtrlSlider_SetTipSide|GUICtrlSlider_SetToolTips|GUICtrlSlider_SetUnicodeFormat|GUICtrlStatusBar_Create|GUICtrlStatusBar_Destroy|GUICtrlStatusBar_EmbedControl|GUICtrlStatusBar_GetBorders|GUICtrlStatusBar_GetBordersHorz|GUICtrlStatusBar_GetBordersRect|GUICtrlStatusBar_GetBordersVert|GUICtrlStatusBar_GetCount|GUICtrlStatusBar_GetHeight|GUICtrlStatusBar_GetIcon|GUICtrlStatusBar_GetParts|GUICtrlStatusBar_GetRect|GUICtrlStatusBar_GetRectEx|GUICtrlStatusBar_GetText|GUICtrlStatusBar_GetTextFlags|GUICtrlStatusBar_GetTextLength|GUICtrlStatusBar_GetTextLengthEx|GUICtrlStatusBar_GetTipText|GUICtrlStatusBar_GetUnicodeFormat|GUICtrlStatusBar_GetWidth|GUICtrlStatusBar_IsSimple|GUICtrlStatusBar_Resize|GUICtrlStatusBar_SetBkColor|GUICtrlStatusBar_SetIcon|GUICtrlStatusBar_SetMinHeight|GUICtrlStatusBar_SetParts|GUICtrlStatusBar_SetSimple|GUICtrlStatusBar_SetText|GUICtrlStatusBar_SetTipText|GUICtrlStatusBar_SetUnicodeFormat|GUICtrlStatusBar_ShowHide|GUICtrlTab_Create|GUICtrlTab_DeleteAllItems|GUICtrlTab_DeleteItem|GUICtrlTab_DeselectAll|GUICtrlTab_Destroy|GUICtrlTab_FindTab|GUICtrlTab_GetCurFocus|GUICtrlTab_GetCurSel|GUICtrlTab_GetDisplayRect|GUICtrlTab_GetDisplayRectEx|GUICtrlTab_GetExtendedStyle|GUICtrlTab_GetImageList|GUICtrlTab_GetItem|GUICtrlTab_GetItemCount|GUICtrlTab_GetItemImage|GUICtrlTab_GetItemParam|GUICtrlTab_GetItemRect|GUICtrlTab_GetItemRectEx|GUICtrlTab_GetItemState|GUICtrlTab_GetItemText|GUICtrlTab_GetRowCount|GUICtrlTab_GetToolTips|GUICtrlTab_GetUnicodeFormat|GUICtrlTab_HighlightItem|GUICtrlTab_HitTest|GUICtrlTab_InsertItem|GUICtrlTab_RemoveImage|GUICtrlTab_SetCurFocus|GUICtrlTab_SetCurSel|GUICtrlTab_SetExtendedStyle|GUICtrlTab_SetImageList|GUICtrlTab_SetItem|GUICtrlTab_SetItemImage|GUICtrlTab_SetItemParam|GUICtrlTab_SetItemSize|GUICtrlTab_SetItemState|GUICtrlTab_SetItemText|GUICtrlTab_SetMinTabWidth|GUICtrlTab_SetPadding|GUICtrlTab_SetToolTips|GUICtrlTab_SetUnicodeFormat|GUICtrlToolbar_AddBitmap|GUICtrlToolbar_AddButton|GUICtrlToolbar_AddButtonSep|GUICtrlToolbar_AddString|GUICtrlToolbar_ButtonCount|GUICtrlToolbar_CheckButton|GUICtrlToolbar_ClickAccel|GUICtrlToolbar_ClickButton|GUICtrlToolbar_ClickIndex|GUICtrlToolbar_CommandToIndex|GUICtrlToolbar_Create|GUICtrlToolbar_Customize|GUICtrlToolbar_DeleteButton|GUICtrlToolbar_Destroy|GUICtrlToolbar_EnableButton|GUICtrlToolbar_FindToolbar|GUICtrlToolbar_GetAnchorHighlight|GUICtrlToolbar_GetBitmapFlags|GUICtrlToolbar_GetButtonBitmap|GUICtrlToolbar_GetButtonInfo|GUICtrlToolbar_GetButtonInfoEx|GUICtrlToolbar_GetButtonParam|GUICtrlToolbar_GetButtonRect|GUICtrlToolbar_GetButtonRectEx|GUICtrlToolbar_GetButtonSize|GUICtrlToolbar_GetButtonState|GUICtrlToolbar_GetButtonStyle|GUICtrlToolbar_GetButtonText|GUICtrlToolbar_GetColorScheme|GUICtrlToolbar_GetDisabledImageList|GUICtrlToolbar_GetExtendedStyle|GUICtrlToolbar_GetHotImageList|GUICtrlToolbar_GetHotItem|GUICtrlToolbar_GetImageList|GUICtrlToolbar_GetInsertMark|GUICtrlToolbar_GetInsertMarkColor|GUICtrlToolbar_GetMaxSize|GUICtrlToolbar_GetMetrics|GUICtrlToolbar_GetPadding|GUICtrlToolbar_GetRows|GUICtrlToolbar_GetString|GUICtrlToolbar_GetStyle|GUICtrlToolbar_GetStyleAltDrag|GUICtrlToolbar_GetStyleCustomErase|GUICtrlToolbar_GetStyleFlat|GUICtrlToolbar_GetStyleList|GUICtrlToolbar_GetStyleRegisterDrop|GUICtrlToolbar_GetStyleToolTips|GUICtrlToolbar_GetStyleTransparent|GUICtrlToolbar_GetStyleWrapable|GUICtrlToolbar_GetTextRows|GUICtrlToolbar_GetToolTips|GUICtrlToolbar_GetUnicodeFormat|GUICtrlToolbar_HideButton|GUICtrlToolbar_HighlightButton|GUICtrlToolbar_HitTest|GUICtrlToolbar_IndexToCommand|GUICtrlToolbar_InsertButton|GUICtrlToolbar_InsertMarkHitTest|GUICtrlToolbar_IsButtonChecked|GUICtrlToolbar_IsButtonEnabled|GUICtrlToolbar_IsButtonHidden|GUICtrlToolbar_IsButtonHighlighted|GUICtrlToolbar_IsButtonIndeterminate|GUICtrlToolbar_IsButtonPressed|GUICtrlToolbar_LoadBitmap|GUICtrlToolbar_LoadImages|GUICtrlToolbar_MapAccelerator|GUICtrlToolbar_MoveButton|GUICtrlToolbar_PressButton|GUICtrlToolbar_SetAnchorHighlight|GUICtrlToolbar_SetBitmapSize|GUICtrlToolbar_SetButtonBitMap|GUICtrlToolbar_SetButtonInfo|GUICtrlToolbar_SetButtonInfoEx|GUICtrlToolbar_SetButtonParam|GUICtrlToolbar_SetButtonSize|GUICtrlToolbar_SetButtonState|GUICtrlToolbar_SetButtonStyle|GUICtrlToolbar_SetButtonText|GUICtrlToolbar_SetButtonWidth|GUICtrlToolbar_SetCmdID|GUICtrlToolbar_SetColorScheme|GUICtrlToolbar_SetDisabledImageList|GUICtrlToolbar_SetDrawTextFlags|GUICtrlToolbar_SetExtendedStyle|GUICtrlToolbar_SetHotImageList|GUICtrlToolbar_SetHotItem|GUICtrlToolbar_SetImageList|GUICtrlToolbar_SetIndent|GUICtrlToolbar_SetIndeterminate|GUICtrlToolbar_SetInsertMark|GUICtrlToolbar_SetInsertMarkColor|GUICtrlToolbar_SetMaxTextRows|GUICtrlToolbar_SetMetrics|GUICtrlToolbar_SetPadding|GUICtrlToolbar_SetParent|GUICtrlToolbar_SetRows|GUICtrlToolbar_SetStyle|GUICtrlToolbar_SetStyleAltDrag|GUICtrlToolbar_SetStyleCustomErase|GUICtrlToolbar_SetStyleFlat|GUICtrlToolbar_SetStyleList|GUICtrlToolbar_SetStyleRegisterDrop|GUICtrlToolbar_SetStyleToolTips|GUICtrlToolbar_SetStyleTransparent|GUICtrlToolbar_SetStyleWrapable|GUICtrlToolbar_SetToolTips|GUICtrlToolbar_SetUnicodeFormat|GUICtrlToolbar_SetWindowTheme|GUICtrlTreeView_Add|GUICtrlTreeView_AddChild|GUICtrlTreeView_AddChildFirst|GUICtrlTreeView_AddFirst|GUICtrlTreeView_BeginUpdate|GUICtrlTreeView_ClickItem|GUICtrlTreeView_Create|GUICtrlTreeView_CreateDragImage|GUICtrlTreeView_CreateSolidBitMap|GUICtrlTreeView_Delete|GUICtrlTreeView_DeleteAll|GUICtrlTreeView_DeleteChildren|GUICtrlTreeView_Destroy|GUICtrlTreeView_DisplayRect|GUICtrlTreeView_DisplayRectEx|GUICtrlTreeView_EditText|GUICtrlTreeView_EndEdit|GUICtrlTreeView_EndUpdate|GUICtrlTreeView_EnsureVisible|GUICtrlTreeView_Expand|GUICtrlTreeView_ExpandedOnce|GUICtrlTreeView_FindItem|GUICtrlTreeView_FindItemEx|GUICtrlTreeView_GetBkColor|GUICtrlTreeView_GetBold|GUICtrlTreeView_GetChecked|GUICtrlTreeView_GetChildCount|GUICtrlTreeView_GetChildren|GUICtrlTreeView_GetCount|GUICtrlTreeView_GetCut|GUICtrlTreeView_GetDropTarget|GUICtrlTreeView_GetEditControl|GUICtrlTreeView_GetExpanded|GUICtrlTreeView_GetFirstChild|GUICtrlTreeView_GetFirstItem|GUICtrlTreeView_GetFirstVisible|GUICtrlTreeView_GetFocused|GUICtrlTreeView_GetHeight|GUICtrlTreeView_GetImageIndex|GUICtrlTreeView_GetImageListIconHandle|GUICtrlTreeView_GetIndent|GUICtrlTreeView_GetInsertMarkColor|GUICtrlTreeView_GetISearchString|GUICtrlTreeView_GetItemByIndex|GUICtrlTreeView_GetItemHandle|GUICtrlTreeView_GetItemParam|GUICtrlTreeView_GetLastChild|GUICtrlTreeView_GetLineColor|GUICtrlTreeView_GetNext|GUICtrlTreeView_GetNextChild|GUICtrlTreeView_GetNextSibling|GUICtrlTreeView_GetNextVisible|GUICtrlTreeView_GetNormalImageList|GUICtrlTreeView_GetParentHandle|GUICtrlTreeView_GetParentParam|GUICtrlTreeView_GetPrev|GUICtrlTreeView_GetPrevChild|GUICtrlTreeView_GetPrevSibling|GUICtrlTreeView_GetPrevVisible|GUICtrlTreeView_GetScrollTime|GUICtrlTreeView_GetSelected|GUICtrlTreeView_GetSelectedImageIndex|GUICtrlTreeView_GetSelection|GUICtrlTreeView_GetSiblingCount|GUICtrlTreeView_GetState|GUICtrlTreeView_GetStateImageIndex|GUICtrlTreeView_GetStateImageList|GUICtrlTreeView_GetText|GUICtrlTreeView_GetTextColor|GUICtrlTreeView_GetToolTips|GUICtrlTreeView_GetTree|GUICtrlTreeView_GetUnicodeFormat|GUICtrlTreeView_GetVisible|GUICtrlTreeView_GetVisibleCount|GUICtrlTreeView_HitTest|GUICtrlTreeView_HitTestEx|GUICtrlTreeView_HitTestItem|GUICtrlTreeView_Index|GUICtrlTreeView_InsertItem|GUICtrlTreeView_IsFirstItem|GUICtrlTreeView_IsParent|GUICtrlTreeView_Level|GUICtrlTreeView_SelectItem|GUICtrlTreeView_SelectItemByIndex|GUICtrlTreeView_SetBkColor|GUICtrlTreeView_SetBold|GUICtrlTreeView_SetChecked|GUICtrlTreeView_SetCheckedByIndex|GUICtrlTreeView_SetChildren|GUICtrlTreeView_SetCut|GUICtrlTreeView_SetDropTarget|GUICtrlTreeView_SetFocused|GUICtrlTreeView_SetHeight|GUICtrlTreeView_SetIcon|GUICtrlTreeView_SetImageIndex|GUICtrlTreeView_SetIndent|GUICtrlTreeView_SetInsertMark|GUICtrlTreeView_SetInsertMarkColor|GUICtrlTreeView_SetItemHeight|GUICtrlTreeView_SetItemParam|GUICtrlTreeView_SetLineColor|GUICtrlTreeView_SetNormalImageList|GUICtrlTreeView_SetScrollTime|GUICtrlTreeView_SetSelected|GUICtrlTreeView_SetSelectedImageIndex|GUICtrlTreeView_SetState|GUICtrlTreeView_SetStateImageIndex|GUICtrlTreeView_SetStateImageList|GUICtrlTreeView_SetText|GUICtrlTreeView_SetTextColor|GUICtrlTreeView_SetToolTips|GUICtrlTreeView_SetUnicodeFormat|GUICtrlTreeView_Sort|GUIImageList_Add|GUIImageList_AddBitmap|GUIImageList_AddIcon|GUIImageList_AddMasked|GUIImageList_BeginDrag|GUIImageList_Copy|GUIImageList_Create|GUIImageList_Destroy|GUIImageList_DestroyIcon|GUIImageList_DragEnter|GUIImageList_DragLeave|GUIImageList_DragMove|GUIImageList_Draw|GUIImageList_DrawEx|GUIImageList_Duplicate|GUIImageList_EndDrag|GUIImageList_GetBkColor|GUIImageList_GetIcon|GUIImageList_GetIconHeight|GUIImageList_GetIconSize|GUIImageList_GetIconSizeEx|GUIImageList_GetIconWidth|GUIImageList_GetImageCount|GUIImageList_GetImageInfoEx|GUIImageList_Remove|GUIImageList_ReplaceIcon|GUIImageList_SetBkColor|GUIImageList_SetIconSize|GUIImageList_SetImageCount|GUIImageList_Swap|GUIScrollBars_EnableScrollBar|GUIScrollBars_GetScrollBarInfoEx|GUIScrollBars_GetScrollBarRect|GUIScrollBars_GetScrollBarRGState|GUIScrollBars_GetScrollBarXYLineButton|GUIScrollBars_GetScrollBarXYThumbBottom|GUIScrollBars_GetScrollBarXYThumbTop|GUIScrollBars_GetScrollInfo|GUIScrollBars_GetScrollInfoEx|GUIScrollBars_GetScrollInfoMax|GUIScrollBars_GetScrollInfoMin|GUIScrollBars_GetScrollInfoPage|GUIScrollBars_GetScrollInfoPos|GUIScrollBars_GetScrollInfoTrackPos|GUIScrollBars_GetScrollPos|GUIScrollBars_GetScrollRange|GUIScrollBars_Init|GUIScrollBars_ScrollWindow|GUIScrollBars_SetScrollInfo|GUIScrollBars_SetScrollInfoMax|GUIScrollBars_SetScrollInfoMin|GUIScrollBars_SetScrollInfoPage|GUIScrollBars_SetScrollInfoPos|GUIScrollBars_SetScrollRange|GUIScrollBars_ShowScrollBar|GUIToolTip_Activate|GUIToolTip_AddTool|GUIToolTip_AdjustRect|GUIToolTip_BitsToTTF|GUIToolTip_Create|GUIToolTip_DelTool|GUIToolTip_Destroy|GUIToolTip_EnumTools|GUIToolTip_GetBubbleHeight|GUIToolTip_GetBubbleSize|GUIToolTip_GetBubbleWidth|GUIToolTip_GetCurrentTool|GUIToolTip_GetDelayTime|GUIToolTip_GetMargin|GUIToolTip_GetMarginEx|GUIToolTip_GetMaxTipWidth|GUIToolTip_GetText|GUIToolTip_GetTipBkColor|GUIToolTip_GetTipTextColor|GUIToolTip_GetTitleBitMap|GUIToolTip_GetTitleText|GUIToolTip_GetToolCount|GUIToolTip_GetToolInfo|GUIToolTip_HitTest|GUIToolTip_NewToolRect|GUIToolTip_Pop|GUIToolTip_PopUp|GUIToolTip_SetDelayTime|GUIToolTip_SetMargin|GUIToolTip_SetMaxTipWidth|GUIToolTip_SetTipBkColor|GUIToolTip_SetTipTextColor|GUIToolTip_SetTitle|GUIToolTip_SetToolInfo|GUIToolTip_SetWindowTheme|GUIToolTip_ToolExists|GUIToolTip_ToolToArray|GUIToolTip_TrackActivate|GUIToolTip_TrackPosition|GUIToolTip_TTFToBits|GUIToolTip_Update|GUIToolTip_UpdateTipText|HexToString|IE_Example|IE_Introduction|IE_VersionInfo|IEAction|IEAttach|IEBodyReadHTML|IEBodyReadText|IEBodyWriteHTML|IECreate|IECreateEmbedded|IEDocGetObj|IEDocInsertHTML|IEDocInsertText|IEDocReadHTML|IEDocWriteHTML|IEErrorHandlerDeRegister|IEErrorHandlerRegister|IEErrorNotify|IEFormElementCheckBoxSelect|IEFormElementGetCollection|IEFormElementGetObjByName|IEFormElementGetValue|IEFormElementOptionSelect|IEFormElementRadioSelect|IEFormElementSetValue|IEFormGetCollection|IEFormGetObjByName|IEFormImageClick|IEFormReset|IEFormSubmit|IEFrameGetCollection|IEFrameGetObjByName|IEGetObjById|IEGetObjByName|IEHeadInsertEventScript|IEImgClick|IEImgGetCollection|IEIsFrameSet|IELinkClickByIndex|IELinkClickByText|IELinkGetCollection|IELoadWait|IELoadWaitTimeout|IENavigate|IEPropertyGet|IEPropertySet|IEQuit|IETableGetCollection|IETableWriteToArray|IETagNameAllGetCollection|IETagNameGetCollection|Iif|INetExplorerCapable|INetGetSource|INetMail|INetSmtpMail|IsPressed|MathCheckDiv|Max|MemGlobalAlloc|MemGlobalFree|MemGlobalLock|MemGlobalSize|MemGlobalUnlock|MemMoveMemory|MemMsgBox|MemShowError|MemVirtualAlloc|MemVirtualAllocEx|MemVirtualFree|MemVirtualFreeEx|Min|MouseTrap|NamedPipes_CallNamedPipe|NamedPipes_ConnectNamedPipe|NamedPipes_CreateNamedPipe|NamedPipes_CreatePipe|NamedPipes_DisconnectNamedPipe|NamedPipes_GetNamedPipeHandleState|NamedPipes_GetNamedPipeInfo|NamedPipes_PeekNamedPipe|NamedPipes_SetNamedPipeHandleState|NamedPipes_TransactNamedPipe|NamedPipes_WaitNamedPipe|Net_Share_ConnectionEnum|Net_Share_FileClose|Net_Share_FileEnum|Net_Share_FileGetInfo|Net_Share_PermStr|Net_Share_ResourceStr|Net_Share_SessionDel|Net_Share_SessionEnum|Net_Share_SessionGetInfo|Net_Share_ShareAdd|Net_Share_ShareCheck|Net_Share_ShareDel|Net_Share_ShareEnum|Net_Share_ShareGetInfo|Net_Share_ShareSetInfo|Net_Share_StatisticsGetSvr|Net_Share_StatisticsGetWrk|Now|NowCalc|NowCalcDate|NowDate|NowTime|PathFull|PathMake|PathSplit|ProcessGetName|ProcessGetPriority|Radian|ReplaceStringInFile|RunDOS|ScreenCapture_Capture|ScreenCapture_CaptureWnd|ScreenCapture_SaveImage|ScreenCapture_SetBMPFormat|ScreenCapture_SetJPGQuality|ScreenCapture_SetTIFColorDepth|ScreenCapture_SetTIFCompression|Security__AdjustTokenPrivileges|Security__GetAccountSid|Security__GetLengthSid|Security__GetTokenInformation|Security__ImpersonateSelf|Security__IsValidSid|Security__LookupAccountName|Security__LookupAccountSid|Security__LookupPrivilegeValue|Security__OpenProcessToken|Security__OpenThreadToken|Security__OpenThreadTokenEx|Security__SetPrivilege|Security__SidToStringSid|Security__SidTypeStr|Security__StringSidToSid|SendMessage|SendMessageA|SetDate|SetTime|Singleton|SoundClose|SoundLength|SoundOpen|SoundPause|SoundPlay|SoundPos|SoundResume|SoundSeek|SoundStatus|SoundStop|SQLite_Changes|SQLite_Close|SQLite_Display2DResult|SQLite_Encode|SQLite_ErrCode|SQLite_ErrMsg|SQLite_Escape|SQLite_Exec|SQLite_FetchData|SQLite_FetchNames|SQLite_GetTable|SQLite_GetTable2d|SQLite_LastInsertRowID|SQLite_LibVersion|SQLite_Open|SQLite_Query|SQLite_QueryFinalize|SQLite_QueryReset|SQLite_QuerySingleRow|SQLite_SaveMode|SQLite_SetTimeout|SQLite_Shutdown|SQLite_SQLiteExe|SQLite_Startup|SQLite_TotalChanges|StringAddComma|StringBetween|StringEncrypt|StringInsert|StringProper|StringRepeat|StringReverse|StringSplit|StringToHex|TCPIpToName|TempFile|TicksToTime|Timer_Diff|Timer_GetTimerID|Timer_Init|Timer_KillAllTimers|Timer_KillTimer|Timer_SetTimer|TimeToTicks|VersionCompare|viClose|viExecCommand|viFindGpib|viGpibBusReset|viGTL|viOpen|viSetAttribute|viSetTimeout|WeekNumberISO|WinAPI_AttachConsole|WinAPI_AttachThreadInput|WinAPI_Beep|WinAPI_BitBlt|WinAPI_CallNextHookEx|WinAPI_Check|WinAPI_ClientToScreen|WinAPI_CloseHandle|WinAPI_CommDlgExtendedError|WinAPI_CopyIcon|WinAPI_CreateBitmap|WinAPI_CreateCompatibleBitmap|WinAPI_CreateCompatibleDC|WinAPI_CreateEvent|WinAPI_CreateFile|WinAPI_CreateFont|WinAPI_CreateFontIndirect|WinAPI_CreateProcess|WinAPI_CreateSolidBitmap|WinAPI_CreateSolidBrush|WinAPI_CreateWindowEx|WinAPI_DefWindowProc|WinAPI_DeleteDC|WinAPI_DeleteObject|WinAPI_DestroyIcon|WinAPI_DestroyWindow|WinAPI_DrawEdge|WinAPI_DrawFrameControl|WinAPI_DrawIcon|WinAPI_DrawIconEx|WinAPI_DrawText|WinAPI_EnableWindow|WinAPI_EnumDisplayDevices|WinAPI_EnumWindows|WinAPI_EnumWindowsPopup|WinAPI_EnumWindowsTop|WinAPI_ExpandEnvironmentStrings|WinAPI_ExtractIconEx|WinAPI_FatalAppExit|WinAPI_FillRect|WinAPI_FindExecutable|WinAPI_FindWindow|WinAPI_FlashWindow|WinAPI_FlashWindowEx|WinAPI_FloatToInt|WinAPI_FlushFileBuffers|WinAPI_FormatMessage|WinAPI_FrameRect|WinAPI_FreeLibrary|WinAPI_GetAncestor|WinAPI_GetAsyncKeyState|WinAPI_GetClassName|WinAPI_GetClientHeight|WinAPI_GetClientRect|WinAPI_GetClientWidth|WinAPI_GetCurrentProcess|WinAPI_GetCurrentProcessID|WinAPI_GetCurrentThread|WinAPI_GetCurrentThreadId|WinAPI_GetCursorInfo|WinAPI_GetDC|WinAPI_GetDesktopWindow|WinAPI_GetDeviceCaps|WinAPI_GetDIBits|WinAPI_GetDlgCtrlID|WinAPI_GetDlgItem|WinAPI_GetFileSizeEx|WinAPI_GetFocus|WinAPI_GetForegroundWindow|WinAPI_GetIconInfo|WinAPI_GetLastError|WinAPI_GetLastErrorMessage|WinAPI_GetModuleHandle|WinAPI_GetMousePos|WinAPI_GetMousePosX|WinAPI_GetMousePosY|WinAPI_GetObject|WinAPI_GetOpenFileName|WinAPI_GetOverlappedResult|WinAPI_GetParent|WinAPI_GetProcessAffinityMask|WinAPI_GetSaveFileName|WinAPI_GetStdHandle|WinAPI_GetStockObject|WinAPI_GetSysColor|WinAPI_GetSysColorBrush|WinAPI_GetSystemMetrics|WinAPI_GetTextExtentPoint32|WinAPI_GetWindow|WinAPI_GetWindowDC|WinAPI_GetWindowHeight|WinAPI_GetWindowLong|WinAPI_GetWindowRect|WinAPI_GetWindowText|WinAPI_GetWindowThreadProcessId|WinAPI_GetWindowWidth|WinAPI_GetXYFromPoint|WinAPI_GlobalMemStatus|WinAPI_GUIDFromString|WinAPI_GUIDFromStringEx|WinAPI_HiWord|WinAPI_InProcess|WinAPI_IntToFloat|WinAPI_InvalidateRect|WinAPI_IsClassName|WinAPI_IsWindow|WinAPI_IsWindowVisible|WinAPI_LoadBitmap|WinAPI_LoadImage|WinAPI_LoadLibrary|WinAPI_LoadLibraryEx|WinAPI_LoadShell32Icon|WinAPI_LoadString|WinAPI_LocalFree|WinAPI_LoWord|WinAPI_MakeDWord|WinAPI_MAKELANGID|WinAPI_MAKELCID|WinAPI_MakeLong|WinAPI_MessageBeep|WinAPI_Mouse_Event|WinAPI_MoveWindow|WinAPI_MsgBox|WinAPI_MulDiv|WinAPI_MultiByteToWideChar|WinAPI_MultiByteToWideCharEx|WinAPI_OpenProcess|WinAPI_PointFromRect|WinAPI_PostMessage|WinAPI_PrimaryLangId|WinAPI_PtInRect|WinAPI_ReadFile|WinAPI_ReadProcessMemory|WinAPI_RectIsEmpty|WinAPI_RedrawWindow|WinAPI_RegisterWindowMessage|WinAPI_ReleaseCapture|WinAPI_ReleaseDC|WinAPI_ScreenToClient|WinAPI_SelectObject|WinAPI_SetBkColor|WinAPI_SetCapture|WinAPI_SetCursor|WinAPI_SetDefaultPrinter|WinAPI_SetDIBits|WinAPI_SetEvent|WinAPI_SetFocus|WinAPI_SetFont|WinAPI_SetHandleInformation|WinAPI_SetLastError|WinAPI_SetParent|WinAPI_SetProcessAffinityMask|WinAPI_SetSysColors|WinAPI_SetTextColor|WinAPI_SetWindowLong|WinAPI_SetWindowPos|WinAPI_SetWindowsHookEx|WinAPI_SetWindowText|WinAPI_ShowCursor|WinAPI_ShowError|WinAPI_ShowMsg|WinAPI_ShowWindow|WinAPI_StringFromGUID|WinAPI_SubLangId|WinAPI_SystemParametersInfo|WinAPI_TwipsPerPixelX|WinAPI_TwipsPerPixelY|WinAPI_UnhookWindowsHookEx|WinAPI_UpdateLayeredWindow|WinAPI_UpdateWindow|WinAPI_ValidateClassName|WinAPI_WaitForInputIdle|WinAPI_WaitForMultipleObjects|WinAPI_WaitForSingleObject|WinAPI_WideCharToMultiByte|WinAPI_WindowFromPoint|WinAPI_WriteConsole|WinAPI_WriteFile|WinAPI_WriteProcessMemory|WinNet_AddConnection|WinNet_AddConnection2|WinNet_AddConnection3|WinNet_CancelConnection|WinNet_CancelConnection2|WinNet_CloseEnum|WinNet_ConnectionDialog|WinNet_ConnectionDialog1|WinNet_DisconnectDialog|WinNet_DisconnectDialog1|WinNet_EnumResource|WinNet_GetConnection|WinNet_GetConnectionPerformance|WinNet_GetLastError|WinNet_GetNetworkInformation|WinNet_GetProviderName|WinNet_GetResourceInformation|WinNet_GetResourceParent|WinNet_GetUniversalName|WinNet_GetUser|WinNet_OpenEnum|WinNet_RestoreConnection|WinNet_UseConnection|Word_VersionInfo|WordAttach|WordCreate|WordDocAdd|WordDocAddLink|WordDocAddPicture|WordDocClose|WordDocFindReplace|WordDocGetCollection|WordDocLinkGetCollection|WordDocOpen|WordDocPrint|WordDocPropertyGet|WordDocPropertySet|WordDocSave|WordDocSaveAs|WordErrorHandlerDeRegister|WordErrorHandlerRegister|WordErrorNotify|WordMacroRun|WordPropertyGet|WordPropertySet|WordQuit|ce|comments-end|comments-start|cs|include|include-once|NoTrayIcon|RequireAdmin|AutoIt3Wrapper_Au3Check_Parameters|AutoIt3Wrapper_Au3Check_Stop_OnWarning|AutoIt3Wrapper_Change2CUI|AutoIt3Wrapper_Compression|AutoIt3Wrapper_cvsWrapper_Parameters|AutoIt3Wrapper_Icon|AutoIt3Wrapper_Outfile|AutoIt3Wrapper_Outfile_Type|AutoIt3Wrapper_Plugin_Funcs|AutoIt3Wrapper_Res_Comment|AutoIt3Wrapper_Res_Description|AutoIt3Wrapper_Res_Field|AutoIt3Wrapper_Res_File_Add|AutoIt3Wrapper_Res_Fileversion|AutoIt3Wrapper_Res_FileVersion_AutoIncrement|AutoIt3Wrapper_Res_Icon_Add|AutoIt3Wrapper_Res_Language|AutoIt3Wrapper_Res_LegalCopyright|AutoIt3Wrapper_res_requestedExecutionLevel|AutoIt3Wrapper_Res_SaveSource|AutoIt3Wrapper_Run_After|AutoIt3Wrapper_Run_Au3check|AutoIt3Wrapper_Run_Before|AutoIt3Wrapper_Run_cvsWrapper|AutoIt3Wrapper_Run_Debug_Mode|AutoIt3Wrapper_Run_Obfuscator|AutoIt3Wrapper_Run_Tidy|AutoIt3Wrapper_Tidy_Stop_OnError|AutoIt3Wrapper_UseAnsi|AutoIt3Wrapper_UseUpx|AutoIt3Wrapper_UseX64|AutoIt3Wrapper_Version|EndRegion|forceref|Obfuscator_Ignore_Funcs|Obfuscator_Ignore_Variables|Obfuscator_Parameters|Region|Tidy_Parameters",t="AppDataCommonDir|AppDataDir|AutoItExe|AutoItPID|AutoItUnicode|AutoItVersion|AutoItX64|COM_EventObj|CommonFilesDir|Compiled|ComputerName|ComSpec|CR|CRLF|DesktopCommonDir|DesktopDepth|DesktopDir|DesktopHeight|DesktopRefresh|DesktopWidth|DocumentsCommonDir|error|exitCode|exitMethod|extended|FavoritesCommonDir|FavoritesDir|GUI_CtrlHandle|GUI_CtrlId|GUI_DragFile|GUI_DragId|GUI_DropId|GUI_WinHandle|HomeDrive|HomePath|HomeShare|HotKeyPressed|HOUR|InetGetActive|InetGetBytesRead|IPAddress1|IPAddress2|IPAddress3|IPAddress4|KBLayout|LF|LogonDNSDomain|LogonDomain|LogonServer|MDAY|MIN|MON|MyDocumentsDir|NumParams|OSBuild|OSLang|OSServicePack|OSTYPE|OSVersion|ProcessorArch|ProgramFilesDir|ProgramsCommonDir|ProgramsDir|ScriptDir|ScriptFullPath|ScriptLineNumber|ScriptName|SEC|StartMenuCommonDir|StartMenuDir|StartupCommonDir|StartupDir|SW_DISABLE|SW_ENABLE|SW_HIDE|SW_LOCK|SW_MAXIMIZE|SW_MINIMIZE|SW_RESTORE|SW_SHOW|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWMINNOACTIVE|SW_SHOWNA|SW_SHOWNOACTIVATE|SW_SHOWNORMAL|SW_UNLOCK|SystemDir|TAB|TempDir|TRAY_ID|TrayIconFlashing|TrayIconVisible|UserName|UserProfileDir|WDAY|WindowsDir|WorkingDir|YDAY|YEAR";this.$rules={start:[{token:"comment.line.ahk",regex:"(?:^| );.*$"},{token:"comment.block.ahk",regex:"/\\*",push:[{token:"comment.block.ahk",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.ahk"}]},{token:"doc.comment.ahk",regex:"#cs",push:[{token:"doc.comment.ahk",regex:"#ce",next:"pop"},{defaultToken:"doc.comment.ahk"}]},{token:"keyword.command.ahk",regex:"(?:\\b|^)(?:allowsamelinecomments|clipboardtimeout|commentflag|errorstdout|escapechar|hotkeyinterval|hotkeymodifiertimeout|hotstring|include|includeagain|installkeybdhook|installmousehook|keyhistory|ltrim|maxhotkeysperinterval|maxmem|maxthreads|maxthreadsbuffer|maxthreadsperhotkey|noenv|notrayicon|persistent|singleinstance|usehook|winactivateforce|autotrim|blockinput|click|clipwait|continue|control|controlclick|controlfocus|controlget|controlgetfocus|controlgetpos|controlgettext|controlmove|controlsend|controlsendraw|controlsettext|coordmode|critical|detecthiddentext|detecthiddenwindows|drive|driveget|drivespacefree|edit|endrepeat|envadd|envdiv|envget|envmult|envset|envsub|envupdate|exit|exitapp|fileappend|filecopy|filecopydir|filecreatedir|filecreateshortcut|filedelete|filegetattrib|filegetshortcut|filegetsize|filegettime|filegetversion|fileinstall|filemove|filemovedir|fileread|filereadline|filerecycle|filerecycleempty|fileremovedir|fileselectfile|fileselectfolder|filesetattrib|filesettime|formattime|getkeystate|gosub|goto|groupactivate|groupadd|groupclose|groupdeactivate|gui|guicontrol|guicontrolget|hideautoitwin|hotkey|ifequal|ifexist|ifgreater|ifgreaterorequal|ifinstring|ifless|iflessorequal|ifmsgbox|ifnotequal|ifnotexist|ifnotinstring|ifwinactive|ifwinexist|ifwinnotactive|ifwinnotexist|imagesearch|inidelete|iniread|iniwrite|input|inputbox|keyhistory|keywait|listhotkeys|listlines|listvars|menu|mouseclick|mouseclickdrag|mousegetpos|mousemove|msgbox|onexit|outputdebug|pause|pixelgetcolor|pixelsearch|postmessage|process|progress|random|regdelete|regread|regwrite|reload|repeat|run|runas|runwait|send|sendevent|sendinput|sendmode|sendplay|sendmessage|sendraw|setbatchlines|setcapslockstate|setcontroldelay|setdefaultmousespeed|setenv|setformat|setkeydelay|setmousedelay|setnumlockstate|setscrolllockstate|setstorecapslockmode|settimer|settitlematchmode|setwindelay|setworkingdir|shutdown|sleep|sort|soundbeep|soundget|soundgetwavevolume|soundplay|soundset|soundsetwavevolume|splashimage|splashtextoff|splashtexton|splitpath|statusbargettext|statusbarwait|stringcasesense|stringgetpos|stringleft|stringlen|stringlower|stringmid|stringreplace|stringright|stringsplit|stringtrimleft|stringtrimright|stringupper|suspend|sysget|thread|tooltip|transform|traytip|urldownloadtofile|while|winactivate|winactivatebottom|winclose|winget|wingetactivestats|wingetactivetitle|wingetclass|wingetpos|wingettext|wingettitle|winhide|winkill|winmaximize|winmenuselectitem|winminimize|winminimizeall|winminimizeallundo|winmove|winrestore|winset|winsettitle|winshow|winwait|winwaitactive|winwaitclose|winwaitnotactive)\\b",caseInsensitive:!0},{token:"keyword.control.ahk",regex:"(?:\\b|^)(?:if|else|return|loop|break|for|while|global|local|byref)\\b",caseInsensitive:!0},{token:"support.function.ahk",regex:"(?:\\b|^)(?:abs|acos|asc|asin|atan|ceil|chr|cos|dllcall|exp|fileexist|floor|getkeystate|il_add|il_create|il_destroy|instr|substr|isfunc|islabel|ln|log|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|onmessage|numget|numput|registercallback|regexmatch|regexreplace|round|sin|tan|sqrt|strlen|sb_seticon|sb_setparts|sb_settext|tv_add|tv_delete|tv_getchild|tv_getcount|tv_getnext|tv_get|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist)\\b",caseInsensitive:!0},{token:"variable.predefined.ahk",regex:"(?:\\b|^)(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_formatfloat|a_formatinteger|a_gui|a_guievent|a_guicontrol|a_guicontrolevent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|programfiles|a_programfiles|a_programs|a_programscommon|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel)\\b",caseInsensitive:!0},{token:"support.constant.ahk",regex:"(?:\\b|^)(?:shift|lshift|rshift|alt|lalt|ralt|control|lcontrol|rcontrol|ctrl|lctrl|rctrl|lwin|rwin|appskey|altdown|altup|shiftdown|shiftup|ctrldown|ctrlup|lwindown|lwinup|rwindown|rwinup|lbutton|rbutton|mbutton|wheelup|wheelleft|wheelright|wheeldown|xbutton1|xbutton2|joy1|joy2|joy3|joy4|joy5|joy6|joy7|joy8|joy9|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy30|joy31|joy32|joyx|joyy|joyz|joyr|joyu|joyv|joypov|joyname|joybuttons|joyaxes|joyinfo|space|tab|enter|escape|esc|backspace|bs|delete|del|insert|ins|pgup|pgdn|home|end|up|down|left|right|printscreen|ctrlbreak|pause|scrolllock|capslock|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadmult|numpadadd|numpadsub|numpaddiv|numpaddot|numpaddel|numpadins|numpadclear|numpadup|numpaddown|numpadleft|numpadright|numpadhome|numpadend|numpadpgup|numpadpgdn|numpadenter|f1|f2|f3|f4|f5|f6|f7|f8|f9|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f20|f21|f22|f23|f24|browser_back|browser_forward|browser_refresh|browser_stop|browser_search|browser_favorites|browser_home|volume_mute|volume_down|volume_up|media_next|media_prev|media_stop|media_play_pause|launch_mail|launch_media|launch_app1|launch_app2)\\b",caseInsensitive:!0},{token:"variable.parameter",regex:"(?:\\b|^)(?:pixel|mouse|screen|relative|rgb|ltrim|rtrim|join|low|belownormal|normal|abovenormal|high|realtime|ahk_id|ahk_pid|ahk_class|ahk_group|between|contains|in|is|integer|float|integerfast|floatfast|number|digit|xdigit|alpha|upper|lower|alnum|time|date|not|or|and|alwaysontop|topmost|top|bottom|transparent|transcolor|redraw|region|id|idlast|processname|minmax|controllist|count|list|capacity|statuscd|eject|lock|unlock|label|filesystem|label|setlabel|serial|type|status|static|seconds|minutes|hours|days|read|parse|logoff|close|error|single|tray|add|rename|check|uncheck|togglecheck|enable|disable|toggleenable|default|nodefault|standard|nostandard|color|delete|deleteall|icon|noicon|tip|click|show|mainwindow|nomainwindow|useerrorlevel|text|picture|pic|groupbox|button|checkbox|radio|dropdownlist|ddl|combobox|listbox|listview|datetime|monthcal|updown|slider|tab|tab2|statusbar|treeview|iconsmall|tile|report|sortdesc|nosort|nosorthdr|grid|hdr|autosize|range|xm|ym|ys|xs|xp|yp|font|resize|owner|submit|nohide|minimize|maximize|restore|noactivate|na|cancel|destroy|center|margin|maxsize|minsize|owndialogs|guiescape|guiclose|guisize|guicontextmenu|guidropfiles|tabstop|section|altsubmit|wrap|hscroll|vscroll|border|top|bottom|buttons|expand|first|imagelist|lines|wantctrla|wantf2|vis|visfirst|number|uppercase|lowercase|limit|password|multi|wantreturn|group|background|bold|italic|strike|underline|norm|backgroundtrans|theme|caption|delimiter|minimizebox|maximizebox|sysmenu|toolwindow|flash|style|exstyle|check3|checked|checkedgray|readonly|password|hidden|left|right|center|notab|section|move|focus|hide|choose|choosestring|text|pos|enabled|disabled|visible|lastfound|lastfoundexist|alttab|shiftalttab|alttabmenu|alttabandmenu|alttabmenudismiss|notimers|interrupt|priority|waitclose|blind|raw|unicode|deref|pow|bitnot|bitand|bitor|bitxor|bitshiftleft|bitshiftright|yes|no|ok|cancel|abort|retry|ignore|tryagain|on|off|all|hkey_local_machine|hkey_users|hkey_current_user|hkey_classes_root|hkey_current_config|hklm|hku|hkcu|hkcr|hkcc|reg_sz|reg_expand_sz|reg_multi_sz|reg_dword|reg_qword|reg_binary|reg_link|reg_resource_list|reg_full_resource_descriptor|reg_resource_requirements_list|reg_dword_big_endian)\\b",caseInsensitive:!0},{keywordMap:{"constant.language":e},regex:"\\w+\\b"},{keywordMap:{"variable.function":t},regex:"@\\w+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"keyword.operator.ahk",regex:"=|==|<>|:=|<|>|\\*|\\/|\\+|:|\\?|\\-"},{token:"punctuation.ahk",regex:"#|`|::|,|\\{|\\}|\\(|\\)|\\%"},{token:["punctuation.quote.double","string.quoted.ahk","punctuation.quote.double"],regex:'(")((?:[^"]|"")*)(")'},{token:["label.ahk","punctuation.definition.label.ahk"],regex:"^([^: ]+)(:)(?!:)"}]},this.normalizeRules()};s.metaData={name:"AutoHotKey",scopeName:"source.ahk",fileTypes:["ahk"],foldingStartMarker:"^\\s*/\\*|^(?![^{]*?;|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|;|/\\*(?!.*?\\*/.*\\S))",foldingStopMarker:"^\\s*\\*/|^\\s*\\}"},r.inherits(s,i),t.AutoHotKeyHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/autohotkey",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/autohotkey_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./autohotkey_highlight_rules").AutoHotKeyHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart=";",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/autohotkey"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-batchfile.js b/library/ace/mode-batchfile.js
new file mode 100644
index 000000000..9d4b0edae
--- /dev/null
+++ b/library/ace/mode-batchfile.js
@@ -0,0 +1 @@
+ace.define("ace/mode/batchfile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"keyword.command.dosbatch",regex:"\\b(?:append|assoc|at|attrib|break|cacls|cd|chcp|chdir|chkdsk|chkntfs|cls|cmd|color|comp|compact|convert|copy|date|del|dir|diskcomp|diskcopy|doskey|echo|endlocal|erase|fc|find|findstr|format|ftype|graftabl|help|keyb|label|md|mkdir|mode|more|move|path|pause|popd|print|prompt|pushd|rd|recover|ren|rename|replace|restore|rmdir|set|setlocal|shift|sort|start|subst|time|title|tree|type|ver|verify|vol|xcopy)\\b",caseInsensitive:!0},{token:"keyword.control.statement.dosbatch",regex:"\\b(?:goto|call|exit)\\b",caseInsensitive:!0},{token:"keyword.control.conditional.if.dosbatch",regex:"\\bif\\s+not\\s+(?:exist|defined|errorlevel|cmdextversion)\\b",caseInsensitive:!0},{token:"keyword.control.conditional.dosbatch",regex:"\\b(?:if|else)\\b",caseInsensitive:!0},{token:"keyword.control.repeat.dosbatch",regex:"\\bfor\\b",caseInsensitive:!0},{token:"keyword.operator.dosbatch",regex:"\\b(?:EQU|NEQ|LSS|LEQ|GTR|GEQ)\\b"},{token:["doc.comment","comment"],regex:"(?:^|\\b)(rem)($|\\s.*$)",caseInsensitive:!0},{token:"comment.line.colons.dosbatch",regex:"::.*$"},{include:"variable"},{token:"punctuation.definition.string.begin.shell",regex:'"',push:[{token:"punctuation.definition.string.end.shell",regex:'"',next:"pop"},{include:"variable"},{defaultToken:"string.quoted.double.dosbatch"}]},{token:"keyword.operator.pipe.dosbatch",regex:"[|]"},{token:"keyword.operator.redirect.shell",regex:"&>|\\d*>&\\d*|\\d*(?:>>|>|<)|\\d*<&|\\d*<>"}],variable:[{token:"constant.numeric",regex:"%%\\w+|%[*\\d]|%\\w+%"},{token:"constant.numeric",regex:"%~\\d+"},{token:["markup.list","constant.other","markup.list"],regex:"(%)(\\w+)(%?)"}]},this.normalizeRules()};s.metaData={name:"Batch File",scopeName:"source.dosbatch",fileTypes:["bat"]},r.inherits(s,i),t.BatchFileHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/batchfile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/batchfile_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./batchfile_highlight_rules").BatchFileHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="::",this.blockComment="",this.$id="ace/mode/batchfile"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-c9search.js b/library/ace/mode-c9search.js
new file mode 100644
index 000000000..63cf61924
--- /dev/null
+++ b/library/ace/mode-c9search.js
@@ -0,0 +1 @@
+ace.define("ace/mode/c9search_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function o(e,t){try{return new RegExp(e,t)}catch(n){}}var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,u=function(){this.$rules={start:[{tokenNames:["c9searchresults.constant.numeric","c9searchresults.text","c9searchresults.text","c9searchresults.keyword"],regex:/(^\s+[0-9]+)(:)(\d*\s?)([^\r\n]+)/,onMatch:function(e,t,n){var r=this.splitRegex.exec(e),i=this.tokenNames,s=[{type:i[0],value:r[1]},{type:i[1],value:r[2]}];r[3]&&(r[3]==" "?s[1]={type:i[1],value:r[2]+" "}:s.push({type:i[1],value:r[3]}));var o=n[1],u=r[4],a,f=0;if(o&&o.exec){o.lastIndex=0;while(a=o.exec(u)){var l=u.substring(f,a.index);f=o.lastIndex,l&&s.push({type:i[2],value:l});if(a[0])s.push({type:i[3],value:a[0]});else if(!l)break}}return f<u.length&&s.push({type:i[2],value:u.substr(f)}),s}},{regex:"^Searching for [^\\r\\n]*$",onMatch:function(e,t,n){var r=e.split("");if(r.length<3)return"text";var s,u,a,f=0,l=[{value:r[f++]+"'",type:"text"},{value:u=r[f++],type:"text"},{value:"'"+r[f++],type:"text"}];r[2]!==" in"&&(a=r[f],l.push({value:"'"+r[f++]+"'",type:"text"},{value:r[f++],type:"text"})),l.push({value:" "+r[f++]+" ",type:"text"}),r[f+1]?(s=r[f+1],l.push({value:"("+r[f+1]+")",type:"text"}),f+=1):f-=1;while(f++<r.length)r[f]&&l.push({value:r[f],type:"text"});a&&(u=a,s=""),u&&(/regex/.test(s)||(u=i.escapeRegExp(u)),/whole/.test(s)&&(u="\\b"+u+"\\b"));var c=u&&o("("+u+")",/ sensitive/.test(s)?"g":"ig");return c&&(n[0]=t,n[1]=c),l}},{regex:"^(?=Found \\d+ matches)",token:"text",next:"numbers"},{token:"string",regex:"^\\S:?[^:]+",next:"numbers"}],numbers:[{regex:"\\d+",token:"constant.numeric"},{regex:"$",token:"text",next:"start"}]},this.normalizeRules()};r.inherits(u,s),t.C9SearchHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/folding/c9search",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/^(\S.*\:|Searching for.*)$/,this.foldingStopMarker=/^(\s+|Found.*)$/,this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getAllLines(n),s=r[n],o=/^(Found.*|Searching for.*)$/,u=/^(\S.*\:|\s*)$/,a=o.test(s)?o:u,f=n,l=n;if(this.foldingStartMarker.test(s)){for(var c=n+1,h=e.getLength();c<h;c++)if(a.test(r[c]))break;l=c}else if(this.foldingStopMarker.test(s)){for(var c=n-1;c>=0;c--){s=r[c];if(a.test(s))break}f=c}if(f!=l){var p=s.length;return a===o&&(p=s.search(/\(Found[^)]+\)$|$/)),new i(f,p,l,0)}}}.call(o.prototype)}),ace.define("ace/mode/c9search",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c9search_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/c9search"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c9search_highlight_rules").C9SearchHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/c9search").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.foldingRules=new u};r.inherits(a,i),function(){this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c9search"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-c_cpp.js b/library/ace/mode-c_cpp.js
new file mode 100644
index 000000000..7b06cb327
--- /dev/null
+++ b/library/ace/mode-c_cpp.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",u=function(){var e="break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",t="asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",n="const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",r="and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eqconst_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",s="NULL|true|false|TRUE|FALSE|nullptr",u=this.$keywords=this.createKeywordMapper({"keyword.control":e,"storage.type":t,"storage.modifier":n,"keyword.operator":r,"variable.language":"this","constant.language":s},"identifier"),a="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Zd\\$_\u00a1-\uffff]*\\b",f=/\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source;this.$rules={start:[{token:"comment",regex:"//$",next:"start"},{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:"'(?:"+f+"|.)'"},{token:"string.start",regex:'"',stateName:"qqstring",next:[{token:"string",regex:/\\\s*$/,next:"qqstring"},{token:"constant.language.escape",regex:f},{token:"constant.language.escape",regex:/%[^'"\\]/},{token:"string.end",regex:'"|$',next:"start"},{defaultToken:"string"}]},{token:"string.start",regex:'R"\\(',stateName:"rawString",next:[{token:"string.end",regex:'\\)"',next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:"support.function.C99.c",regex:o},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"},{token:"keyword.operator",regex:/--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(u,s),t.c_cppHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c_cpp_highlight_rules").c_cppHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c_cpp"}.call(l.prototype),t.Mode=l}) \ No newline at end of file
diff --git a/library/ace/mode-cirru.js b/library/ace/mode-cirru.js
new file mode 100644
index 000000000..73fd5da8d
--- /dev/null
+++ b/library/ace/mode-cirru.js
@@ -0,0 +1 @@
+ace.define("ace/mode/cirru_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"constant.numeric",regex:/[\d\.]+/},{token:"comment.line.double-dash",regex:/--/,next:"comment"},{token:"storage.modifier",regex:/\(/},{token:"storage.modifier",regex:/\,/,next:"line"},{token:"support.function",regex:/[^\(\)\"\s]+/,next:"line"},{token:"string.quoted.double",regex:/"/,next:"string"},{token:"storage.modifier",regex:/\)/}],comment:[{token:"comment.line.double-dash",regex:/\ +[^\n]+/,next:"start"}],string:[{token:"string.quoted.double",regex:/"/,next:"line"},{token:"constant.character.escape",regex:/\\/,next:"escape"},{token:"string.quoted.double",regex:/[^\\\"]+/}],escape:[{token:"constant.character.escape",regex:/./,next:"string"}],line:[{token:"constant.numeric",regex:/[\d\.]+/},{token:"markup.raw",regex:/^\s*/,next:"start"},{token:"storage.modifier",regex:/\$/,next:"start"},{token:"variable.parameter",regex:/[^\(\)\"\s]+/},{token:"storage.modifier",regex:/\(/,next:"start"},{token:"storage.modifier",regex:/\)/},{token:"markup.raw",regex:/^\ */,next:"start"},{token:"string.quoted.double",regex:/"/,next:"string"}]}};r.inherits(s,i),t.CirruHighlightRules=s}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/cirru",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cirru_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./cirru_highlight_rules").CirruHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="--",this.$id="ace/mode/cirru"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-clojure.js b/library/ace/mode-clojure.js
new file mode 100644
index 000000000..c1bc4f186
--- /dev/null
+++ b/library/ace/mode-clojure.js
@@ -0,0 +1 @@
+ace.define("ace/mode/clojure_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="* *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* *command-line-args* *compile-files* *compile-path* *e *err* *file* *flush-on-newline* *in* *macro-meta* *math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* *source-path* *use-context-classloader* *warn-on-reflection* + - -> ->> .. / < <= = == > &gt; >= &gt;= accessor aclone add-classpath add-watch agent agent-errors aget alength alias all-ns alter alter-meta! alter-var-root amap ancestors and apply areduce array-map aset aset-boolean aset-byte aset-char aset-double aset-float aset-int aset-long aset-short assert assoc assoc! assoc-in associative? atom await await-for await1 bases bean bigdec bigint binding bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn bound-fn* butlast byte byte-array bytes cast char char-array char-escape-string char-name-string char? chars chunk chunk-append chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? class class? clear-agent-errors clojure-version coll? comment commute comp comparator compare compare-and-set! compile complement concat cond condp conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec decimal? declare definline defmacro defmethod defmulti defn defn- defonce defstruct delay delay? deliver deref derive descendants destructure disj disj! dissoc dissoc! distinct distinct? doall doc dorun doseq dosync dotimes doto double double-array doubles drop drop-last drop-while empty empty? ensure enumeration-seq eval even? every? false? ffirst file-seq filter find find-doc find-ns find-var first float float-array float? floats flush fn fn? fnext for force format future future-call future-cancel future-cancelled? future-done? future? gen-class gen-interface gensym get get-in get-method get-proxy-class get-thread-bindings get-validator hash hash-map hash-set identical? identity if-let if-not ifn? import in-ns inc init-proxy instance? int int-array integer? interleave intern interpose into into-array ints io! isa? iterate iterator-seq juxt key keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list list* list? load load-file load-reader load-string loaded-libs locking long long-array longs loop macroexpand macroexpand-1 make-array make-hierarchy map map? mapcat max max-key memfn memoize merge merge-with meta method-sig methods min min-key mod name namespace neg? newline next nfirst nil? nnext not not-any? not-empty not-every? not= ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias ns-unmap nth nthnext num number? odd? or parents partial partition pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers primitives-classnames print print-ctor print-doc print-dup print-method print-namespace-doc print-simple print-special-doc print-str printf println println-str prn prn-str promise proxy proxy-call-with-super proxy-mappings proxy-name proxy-super push-thread-bindings pvalues quot rand rand-int range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern re-seq read read-line read-string reduce ref ref-history-count ref-max-history ref-min-history ref-set refer refer-clojure release-pending-sends rem remove remove-method remove-ns remove-watch repeat repeatedly replace replicate require reset! reset-meta! resolve rest resultset-seq reverse reversible? rseq rsubseq second select-keys send send-off seq seq? seque sequence sequential? set set-validator! set? short short-array shorts shutdown-agents slurp some sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? special-form-anchor special-symbol? split-at split-with str stream? string? struct struct-map subs subseq subvec supers swap! symbol symbol? sync syntax-symbol-anchor take take-last take-nth take-while test the-ns time to-array to-array-2d trampoline transient tree-seq true? type unchecked-add unchecked-dec unchecked-divide unchecked-inc unchecked-multiply unchecked-negate unchecked-remainder unchecked-subtract underive unquote unquote-splicing update-in update-proxy use val vals var-get var-set var? vary-meta vec vector vector? when when-first when-let when-not while with-bindings with-bindings* with-in-str with-loading-context with-local-vars with-meta with-open with-out-str with-precision xml-seq zero? zipmap",t="throw try var def do fn if let loop monitor-enter monitor-exit new quote recur set!",n="true false nil",r=this.createKeywordMapper({keyword:t,"constant.language":n,"support.function":e},"identifier",!1," ");this.$rules={start:[{token:"comment",regex:";.*$"},{token:"keyword",regex:"[\\(|\\)]"},{token:"keyword",regex:"[\\'\\(]"},{token:"keyword",regex:"[\\[|\\]]"},{token:"keyword",regex:"[\\{|\\}|\\#\\{|\\#\\}]"},{token:"keyword",regex:"[\\&]"},{token:"keyword",regex:"[\\#\\^\\{]"},{token:"keyword",regex:"[\\%]"},{token:"keyword",regex:"[@]"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language",regex:"[!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+||=|!=|<=|>=|<>|<|>|!|&&]"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b"},{token:"string",regex:'"',next:"string"},{token:"constant",regex:/:[^()\[\]{}'"\^%`,;\s]+/},{token:"string.regexp",regex:'/#"(?:\\.|(?:\\")|[^""\n])*"/g'}],string:[{token:"constant.language.escape",regex:"\\\\.|\\\\$"},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"}]}};r.inherits(s,i),t.ClojureHighlightRules=s}),ace.define("ace/mode/matching_parens_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\)/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\))/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){var t=e.match(/^(\s+)/);return t?t[1]:""}}).call(i.prototype),t.MatchingParensOutdent=i}),ace.define("ace/mode/clojure",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/clojure_highlight_rules","ace/mode/matching_parens_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./clojure_highlight_rules").ClojureHighlightRules,o=e("./matching_parens_outdent").MatchingParensOutdent,u=function(){this.HighlightRules=s,this.$outdent=new o};r.inherits(u,i),function(){this.lineCommentStart=";",this.minorIndentFunctions=["defn","defn-","defmacro","def","deftest","testing"],this.$toIndent=function(e){return e.split("").map(function(e){return/\s/.exec(e)?e:" "}).join("")},this.$calculateIndent=function(e,t){var n=this.$getIndent(e),r=0,i,s;for(var o=e.length-1;o>=0;o--){s=e[o],s==="("?(r--,i=!0):s==="("||s==="["||s==="{"?(r--,i=!1):(s===")"||s==="]"||s==="}")&&r++;if(r<0)break}if(!(r<0&&i))return r<0&&!i?this.$toIndent(e.substring(0,o+1)):r>0?(n=n.substring(0,n.length-t.length),n):n;o+=1;var u=o,a="";for(;;){s=e[o];if(s===" "||s===" ")return this.minorIndentFunctions.indexOf(a)!==-1?this.$toIndent(e.substring(0,u-1)+t):this.$toIndent(e.substring(0,o+1));if(s===undefined)return this.$toIndent(e.substring(0,u-1)+t);a+=e[o],o++}},this.getNextLineIndent=function(e,t,n){return this.$calculateIndent(t,n)},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/clojure"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-cobol.js b/library/ace/mode-cobol.js
new file mode 100644
index 000000000..2f766c1a7
--- /dev/null
+++ b/library/ace/mode-cobol.js
@@ -0,0 +1 @@
+ace.define("ace/mode/cobol_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="ACCEPT|MERGE|SUM|ADD||MESSAGE|TABLE|ADVANCING|MODE|TAPE|AFTER|MULTIPLY|TEST|ALL|NEGATIVE|TEXT|ALPHABET|NEXT|THAN|ALSO|NO|THEN|ALTERNATE|NOT|THROUGH|AND|NUMBER|THRU|ANY|OCCURS|TIME|ARE|OF|TO|AREA|OFF|TOP||ASCENDING|OMITTED|TRUE|ASSIGN|ON|TYPE|AT|OPEN|UNIT|AUTHOR|OR|UNTIL|BEFORE|OTHER|UP|BLANK|OUTPUT|USE|BLOCK|PAGE|USING|BOTTOM|PERFORM|VALUE|BY|PIC|VALUES|CALL|PICTURE|WHEN|CANCEL|PLUS|WITH|CD|POINTER|WRITE|CHARACTER|POSITION||ZERO|CLOSE|POSITIVE|ZEROS|COLUMN|PROCEDURE|ZEROES|COMMA|PROGRAM|COMMON|PROGRAM-ID|COMMUNICATION|QUOTE|COMP|RANDOM|COMPUTE|READ|CONTAINS|RECEIVE|CONFIGURATION|RECORD|CONTINUE|REDEFINES|CONTROL|REFERENCE|COPY|REMAINDER|COUNT|REPLACE|DATA|REPORT|DATE|RESERVE|DAY|RESET|DELETE|RETURN|DESTINATION|REWIND|DISABLE|REWRITE|DISPLAY|RIGHT|DIVIDE|RUN|DOWN|SAME|ELSE|SEARCH|ENABLE|SECTION|END|SELECT|ENVIRONMENT|SENTENCE|EQUAL|SET|ERROR|SIGN|EXIT|SEQUENTIAL|EXTERNAL|SIZE|FLASE|SORT|FILE|SOURCE|LENGTH|SPACE|LESS|STANDARD|LIMIT|START|LINE|STOP|LOCK|STRING|LOW-VALUE|SUBTRACT",t="true|false|null",n="count|min|max|avg|sum|rank|now|coalesce|main",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"\\*.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.CobolHighlightRules=s}),ace.define("ace/mode/cobol",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cobol_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./cobol_highlight_rules").CobolHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="*",this.$id="ace/mode/cobol"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-coffee.js b/library/ace/mode-coffee.js
new file mode 100644
index 000000000..a4755bb8a
--- /dev/null
+++ b/library/ace/mode-coffee.js
@@ -0,0 +1 @@
+ace.define("ace/mode/coffee_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function s(){var e="[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*",t="this|throw|then|try|typeof|super|switch|return|break|by|continue|catch|class|in|instanceof|is|isnt|if|else|extends|for|own|finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|or|on|unless|until|and|yes",n="true|false|null|undefined|NaN|Infinity",r="case|const|default|function|var|void|with|enum|export|implements|interface|let|package|private|protected|public|static|yield|__hasProp|slice|bind|indexOf",i="Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray",s="Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|encodeURIComponent|decodeURI|decodeURIComponent|String|",o="window|arguments|prototype|document",u=this.createKeywordMapper({keyword:t,"constant.language":n,"invalid.illegal":r,"language.support.class":i,"language.support.function":s,"variable.language":o},"identifier"),a={token:["paren.lparen","variable.parameter","paren.rparen","text","storage.type"],regex:/(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()\"'\/])*?)(\))(\s*))?([\-=]>)/.source},f=/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/;this.$rules={start:[{token:"constant.numeric",regex:"(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)"},{stateName:"qdoc",token:"string",regex:"'''",next:[{token:"string",regex:"'''",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qqdoc",token:"string",regex:'"""',next:[{token:"string",regex:'"""',next:"start"},{token:"paren.string",regex:"#{",push:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qstring",token:"string",regex:"'",next:[{token:"string",regex:"'",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qqstring",token:"string.start",regex:'"',next:[{token:"string.end",regex:'"',next:"start"},{token:"paren.string",regex:"#{",push:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"js",token:"string",regex:"`",next:[{token:"string",regex:"`",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{regex:"[{}]",onMatch:function(e,t,n){this.next="";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift()||"";if(this.next.indexOf("string")!=-1)return"paren.string"}return"paren"}},{token:"string.regex",regex:"///",next:"heregex"},{token:"string.regex",regex:/(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/},{token:"comment",regex:"###(?!#)",next:"comment"},{token:"comment",regex:"#.*"},{token:["punctuation.operator","text","identifier"],regex:"(\\.)(\\s*)("+r+")"},{token:"punctuation.operator",regex:"\\.{1,3}"},{token:["keyword","text","language.support.class","text","keyword","text","language.support.class"],regex:"(class)(\\s+)("+e+")(?:(\\s+)(extends)(\\s+)("+e+"))?"},{token:["entity.name.function","text","keyword.operator","text"].concat(a.token),regex:"("+e+")(\\s*)([=:])(\\s*)"+a.regex},a,{token:"variable",regex:"@(?:"+e+")?"},{token:u,regex:e},{token:"punctuation.operator",regex:"\\,|\\."},{token:"storage.type",regex:"[\\-=]>"},{token:"keyword.operator",regex:"(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])"},{token:"paren.lparen",regex:"[({[]"},{token:"paren.rparen",regex:"[\\]})]"},{token:"text",regex:"\\s+"}],heregex:[{token:"string.regex",regex:".*?///[imgy]{0,4}",next:"start"},{token:"comment.regex",regex:"\\s+(?:#.*)?"},{token:"string.regex",regex:"\\S+"}],comment:[{token:"comment",regex:"###",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()}var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules;r.inherits(s,i),t.CoffeeHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/coffee",["require","exports","module","ace/mode/coffee_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/coffee","ace/range","ace/mode/text","ace/worker/worker_client","ace/lib/oop"],function(e,t,n){"use strict";function l(){this.HighlightRules=r,this.$outdent=new i,this.foldingRules=new s}var r=e("./coffee_highlight_rules").CoffeeHighlightRules,i=e("./matching_brace_outdent").MatchingBraceOutdent,s=e("./folding/coffee").FoldMode,o=e("../range").Range,u=e("./text").Mode,a=e("../worker/worker_client").WorkerClient,f=e("../lib/oop");f.inherits(l,u),function(){var e=/(?:[({[=:]|[-=]>|\b(?:else|try|(?:swi|ca)tch(?:\s+[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)?|finally))\s*$|^\s*(else\b\s*)?(?:if|for|while|loop)\b(?!.*\bthen\b)/;this.lineCommentStart="#",this.blockComment={start:"###",end:"###"},this.getNextLineIndent=function(t,n,r){var i=this.$getIndent(n),s=this.getTokenizer().getLineTokens(n,t).tokens;return(!s.length||s[s.length-1].type!=="comment")&&t==="start"&&e.test(n)&&(i+=r),i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/coffee_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/coffee"}.call(l.prototype),t.Mode=l}) \ No newline at end of file
diff --git a/library/ace/mode-coldfusion.js b/library/ace/mode-coldfusion.js
new file mode 100644
index 000000000..7695462e7
--- /dev/null
+++ b/library/ace/mode-coldfusion.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[A-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/coldfusion_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript_highlight_rules").JavaScriptHighlightRules,s=e("./html_highlight_rules").HtmlHighlightRules,o=function(){s.call(this),this.$rules.tag[2].token=function(e,t){var n=t.slice(0,2)=="cf"?"keyword":"meta.tag";return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml",n+".tag-name.xml"]};var e=Object.keys(this.$rules).filter(function(e){return/^(js|css)-/.test(e)});this.embedRules({cfmlComment:[{regex:"<!---",token:"comment.start",push:"cfmlComment"},{regex:"--->",token:"comment.end",next:"pop"},{defaultToken:"comment"}]},"",[{regex:"<!---",token:"comment.start",push:"cfmlComment"}],["comment","start","tag_whitespace","cdata"].concat(e)),this.$rules.cfTag=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"pop"}];var t={token:function(e,t){return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","keyword.tag-name.xml"]},regex:"(</?)(cf[-_a-zA-Z0-9:.]+)",push:"cfTag"};e.forEach(function(e){this.$rules[e].unshift(t)},this),this.embedTagRules((new i({noJSX:!0})).getRules(),"cfjs-","cfscript"),this.normalizeRules()};r.inherits(o,s),t.ColdfusionHighlightRules=o}),ace.define("ace/mode/coldfusion",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/html","ace/mode/coldfusion_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./html").Mode,o=e("./coldfusion_highlight_rules").ColdfusionHighlightRules,u="cfabort|cfapplication|cfargument|cfassociate|cfbreak|cfcache|cfcollection|cfcookie|cfdbinfo|cfdirectory|cfdump|cfelse|cfelseif|cferror|cfexchangecalendar|cfexchangeconnection|cfexchangecontact|cfexchangefilter|cfexchangetask|cfexit|cffeed|cffile|cfflush|cfftp|cfheader|cfhtmlhead|cfhttpparam|cfimage|cfimport|cfinclude|cfindex|cfinsert|cfinvokeargument|cflocation|cflog|cfmailparam|cfNTauthenticate|cfobject|cfobjectcache|cfparam|cfpdfformparam|cfprint|cfprocparam|cfprocresult|cfproperty|cfqueryparam|cfregistry|cfreportparam|cfrethrow|cfreturn|cfschedule|cfsearch|cfset|cfsetting|cfthrow|cfzipparam)".split("|"),a=function(){s.call(this),this.HighlightRules=o};r.inherits(a,s),function(){this.voidElements=r.mixin(i.arrayToMap(u),this.voidElements),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.$id="ace/mode/coldfusion"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-csharp.js b/library/ace/mode-csharp.js
new file mode 100644
index 000000000..2af044763
--- /dev/null
+++ b/library/ace/mode-csharp.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/csharp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=this.createKeywordMapper({"variable.language":"this",keyword:"abstract|event|new|struct|as|explicit|null|switch|base|extern|object|this|bool|false|operator|throw|break|finally|out|true|byte|fixed|override|try|case|float|params|typeof|catch|for|private|uint|char|foreach|protected|ulong|checked|goto|public|unchecked|class|if|readonly|unsafe|const|implicit|ref|ushort|continue|in|return|using|decimal|int|sbyte|virtual|default|interface|sealed|volatile|delegate|internal|short|void|do|is|sizeof|while|double|lock|stackalloc|else|long|static|enum|namespace|string|var|dynamic","constant.language":"null|true|false"},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:/'(?:.|\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n]))'/},{token:"string",start:'"',end:'"|$',next:[{token:"constant.language.escape",regex:/\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/},{token:"invalid",regex:/\\./}]},{token:"string",start:'@"',end:'"',next:[{token:"constant.language.escape",regex:'""'}]},{token:"string",start:/\$"/,end:'"|$',next:[{token:"constant.language.escape",regex:/\\(:?$)|{{/},{token:"constant.language.escape",regex:/\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/},{token:"invalid",regex:/\\./}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"keyword",regex:"^\\s*#(if|else|elif|endif|define|undef|warning|error|line|region|endregion|pragma)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(o,s),t.CSharpHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/folding/csharp",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.usingRe=/^\s*using \S/,this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);if(!r){var i=e.getLine(n);if(/^\s*#region\b/.test(i))return"start";var s=this.usingRe;if(s.test(i)){var o=e.getLine(n-1),u=e.getLine(n+1);if(!s.test(o)&&s.test(u))return"start"}}return r},this.getFoldWidgetRange=function(e,t,n){var r=this.getFoldWidgetRangeBase(e,t,n);if(r)return r;var i=e.getLine(n);if(this.usingRe.test(i))return this.getUsingStatementBlock(e,i,n);if(/^\s*#region\b/.test(i))return this.getRegionBlock(e,i,n)},this.getUsingStatementBlock=function(e,t,n){var r=t.match(this.usingRe)[0].length-1,s=e.getLength(),o=n,u=n;while(++n<s){t=e.getLine(n);if(/^\s*$/.test(t))continue;if(!this.usingRe.test(t))break;u=n}if(u>o){var a=e.getLine(u).length;return new i(o,r,u,a)}},this.getRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/csharp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/csharp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/csharp"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./csharp_highlight_rules").CSharpHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/csharp").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){return null},this.$id="ace/mode/csharp"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-css.js b/library/ace/mode-css.js
new file mode 100644
index 000000000..84cd16c66
--- /dev/null
+++ b/library/ace/mode-css.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}) \ No newline at end of file
diff --git a/library/ace/mode-curly.js b/library/ace/mode-curly.js
new file mode 100644
index 000000000..a0d0bbe56
--- /dev/null
+++ b/library/ace/mode-curly.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[A-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/curly_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=function(){i.call(this),this.$rules.start.unshift({token:"variable",regex:"{{",push:"curly-start"}),this.$rules["curly-start"]=[{token:"variable",regex:"}}",next:"pop"}],this.normalizeRules()};r.inherits(s,i),t.CurlyHighlightRules=s}),ace.define("ace/mode/curly",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/matching_brace_outdent","ace/mode/html_highlight_rules","ace/mode/folding/html","ace/mode/curly_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./matching_brace_outdent").MatchingBraceOutdent,o=e("./html_highlight_rules").HtmlHighlightRules,u=e("./folding/html").FoldMode,a=e("./curly_highlight_rules").CurlyHighlightRules,f=function(){i.call(this),this.HighlightRules=a,this.$outdent=new s,this.foldingRules=new u};r.inherits(f,i),function(){this.$id="ace/mode/curly"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-d.js b/library/ace/mode-d.js
new file mode 100644
index 000000000..56b2650b7
--- /dev/null
+++ b/library/ace/mode-d.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/d_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="this|super|import|module|body|mixin|__traits|invariant|alias|asm|delete|typeof|typeid|sizeof|cast|new|in|is|typedef|__vector|__parameters",t="break|case|continue|default|do|else|for|foreach|foreach_reverse|goto|if|return|switch|while|catch|try|throw|finally|version|assert|unittest|with",n="auto|bool|char|dchar|wchar|byte|ubyte|float|double|real|cfloat|creal|cdouble|cent|ifloat|ireal|idouble|int|long|short|void|uint|ulong|ushort|ucent|function|delegate|string|wstring|dstring|size_t|ptrdiff_t|hash_t|Object",r="abstract|align|debug|deprecated|export|extern|const|final|in|inout|out|ref|immutable|lazy|nothrow|override|package|pragma|private|protected|public|pure|scope|shared|__gshared|synchronized|static|volatile",s="class|struct|union|template|interface|enum|macro",o={token:"constant.language.escape",regex:"\\\\(?:(?:x[0-9A-F]{2})|(?:[0-7]{1,3})|(?:['\"\\?0abfnrtv\\\\])|(?:u[0-9a-fA-F]{4})|(?:U[0-9a-fA-F]{8}))"},u="null|true|false|__DATE__|__EOF__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__|__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__",a="/|/\\=|&|&\\=|&&|\\|\\|\\=|\\|\\||\\-|\\-\\=|\\-\\-|\\+|\\+\\=|\\+\\+|\\<|\\<\\=|\\<\\<|\\<\\<\\=|\\<\\>|\\<\\>\\=|\\>|\\>\\=|\\>\\>\\=|\\>\\>\\>\\=|\\>\\>|\\>\\>\\>|\\!|\\!\\=|\\!\\<\\>|\\!\\<\\>\\=|\\!\\<|\\!\\<\\=|\\!\\>|\\!\\>\\=|\\?|\\$|\\=|\\=\\=|\\*|\\*\\=|%|%\\=|\\^|\\^\\=|\\^\\^|\\^\\^\\=|~|~\\=|\\=\\>|#",f=this.$keywords=this.createKeywordMapper({"keyword.modifier":r,"keyword.control":t,"keyword.type":n,keyword:e,"keyword.storage":s,punctation:"\\.|\\,|;|\\.\\.|\\.\\.\\.","keyword.operator":a,"constant.language":u},"identifier"),l="[a-zA-Z_\u00a1-\uffff][a-zA-Z\\d_\u00a1-\uffff]*\\b";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"star-comment"},{token:"comment.shebang",regex:"^s*#!.*"},{token:"comment",regex:"\\/\\+",next:"plus-comment"},{onMatch:function(e,t,n){return n.unshift(this.next,e.substr(2)),"string"},regex:'q"(?:[\\[\\(\\{\\<]+)',next:"operator-heredoc-string"},{onMatch:function(e,t,n){return n.unshift(this.next,e.substr(2)),"string"},regex:'q"(?:[a-zA-Z_]+)$',next:"identifier-heredoc-string"},{token:"string",regex:'[xr]?"',next:"quote-string"},{token:"string",regex:"[xr]?`",next:"backtick-string"},{token:"string",regex:"[xr]?['](?:(?:\\\\.)|(?:[^'\\\\]))*?['][cdw]?"},{token:["keyword","text","paren.lparen"],regex:/(asm)(\s*)({)/,next:"d-asm"},{token:["keyword","text","paren.lparen","constant.language"],regex:"(__traits)(\\s*)(\\()("+l+")"},{token:["keyword","text","variable.module"],regex:"(import|module)(\\s+)((?:"+l+"\\.?)*)"},{token:["keyword.storage","text","entity.name.type"],regex:"("+s+")(\\s*)("+l+")"},{token:["keyword","text","variable.storage","text"],regex:"(alias|typedef)(\\s*)("+l+")(\\s*)"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F_]+(l|ul|u|f|F|L|U|UL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d[\\d_]*(?:(?:\\.[\\d_]*)?(?:[eE][+-]?[\\d_]+)?)?(l|ul|u|f|F|L|U|UL)?\\b"},{token:"entity.other.attribute-name",regex:"@"+l},{token:f,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:a},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\.|\\:"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],"star-comment":[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],"plus-comment":[{token:"comment",regex:"\\+\\/",next:"start"},{defaultToken:"comment"}],"quote-string":[o,{token:"string",regex:'"[cdw]?',next:"start"},{defaultToken:"string"}],"backtick-string":[o,{token:"string",regex:"`[cdw]?",next:"start"},{defaultToken:"string"}],"operator-heredoc-string":[{onMatch:function(e,t,n){e=e.substring(e.length-2,e.length-1);var r={">":"<","]":"[",")":"(","}":"{"};return Object.keys(r).indexOf(e)!=-1&&(e=r[e]),e!=n[1]?"string":(n.shift(),n.shift(),"string")},regex:'(?:[\\]\\)}>]+)"',next:"start"},{token:"string",regex:"[^\\]\\)}>]+"}],"identifier-heredoc-string":[{onMatch:function(e,t,n){return e=e.substring(0,e.length-1),e!=n[1]?"string":(n.shift(),n.shift(),"string")},regex:'^(?:[A-Za-z_][a-zA-Z0-9]+)"',next:"start"},{token:"string",regex:"[^\\]\\)}>]+"}],"d-asm":[{token:"paren.rparen",regex:"\\}",next:"start"},{token:"keyword.instruction",regex:"[a-zA-Z]+",next:"d-asm-instruction"},{token:"text",regex:"\\s+"}],"d-asm-instruction":[{token:"constant.language",regex:/AL|AH|AX|EAX|BL|BH|BX|EBX|CL|CH|CX|ECX|DL|DH|DX|EDX|BP|EBP|SP|ESP|DI|EDI|SI|ESI/i},{token:"identifier",regex:"[a-zA-Z]+"},{token:"string",regex:'".*"'},{token:"comment",regex:"//.*$"},{token:"constant.numeric",regex:"[0-9.xA-F]+"},{token:"punctuation.operator",regex:"\\,"},{token:"punctuation.operator",regex:";",next:"d-asm"},{token:"text",regex:"\\s+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};o.metaData={comment:"D language",fileTypes:["d","di"],firstLineMatch:"^#!.*\\b[glr]?dmd\\b.",foldingStartMarker:"(?x)/\\*\\*(?!\\*)|^(?![^{]*?//|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|//|/\\*(?!.*?\\*/.*\\S))",foldingStopMarker:"(?<!\\*)\\*\\*/|^\\s*\\}",keyEquivalent:"^~D",name:"D",scopeName:"source.d"},r.inherits(o,s),t.DHighlightRules=o}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/d",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/d_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./d_highlight_rules").DHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/d"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-dart.js b/library/ace/mode-dart.js
new file mode 100644
index 000000000..c8d5b399f
--- /dev/null
+++ b/library/ace/mode-dart.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",u=function(){var e="break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",t="asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",n="const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",r="and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eqconst_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",s="NULL|true|false|TRUE|FALSE|nullptr",u=this.$keywords=this.createKeywordMapper({"keyword.control":e,"storage.type":t,"storage.modifier":n,"keyword.operator":r,"variable.language":"this","constant.language":s},"identifier"),a="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Zd\\$_\u00a1-\uffff]*\\b",f=/\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source;this.$rules={start:[{token:"comment",regex:"//$",next:"start"},{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:"'(?:"+f+"|.)'"},{token:"string.start",regex:'"',stateName:"qqstring",next:[{token:"string",regex:/\\\s*$/,next:"qqstring"},{token:"constant.language.escape",regex:f},{token:"constant.language.escape",regex:/%[^'"\\]/},{token:"string.end",regex:'"|$',next:"start"},{defaultToken:"string"}]},{token:"string.start",regex:'R"\\(',stateName:"rawString",next:[{token:"string.end",regex:'\\)"',next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:"support.function.C99.c",regex:o},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"},{token:"keyword.operator",regex:/--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(u,s),t.c_cppHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c_cpp_highlight_rules").c_cppHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c_cpp"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/dart_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="true|false|null",t="this|super",n="try|catch|finally|throw|rethrow|assert|break|case|continue|default|do|else|for|if|in|return|switch|while|new|deferred|async|await",r="abstract|class|extends|external|factory|implements|get|native|operator|set|typedef|with|enum",s="static|final|const",o="void|bool|num|int|double|dynamic|var|String",u=this.createKeywordMapper({"constant.language.dart":e,"variable.language.dart":t,"keyword.control.dart":n,"keyword.declaration.dart":r,"storage.modifier.dart":s,"storage.type.primitive.dart":o},"identifier"),a={token:"string",regex:".+"};this.$rules={start:[{token:"comment",regex:/\/\/.*$/},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:["meta.preprocessor.script.dart"],regex:"^(#!.*)$"},{token:"keyword.other.import.dart",regex:"(?:\\b)(?:library|import|export|part|of|show|hide)(?:\\b)"},{token:["keyword.other.import.dart","text"],regex:"(?:\\b)(prefix)(\\s*:)"},{regex:"\\bas\\b",token:"keyword.cast.dart"},{regex:"\\?|:",token:"keyword.control.ternary.dart"},{regex:"(?:\\b)(is\\!?)(?:\\b)",token:["keyword.operator.dart"]},{regex:"(<<|>>>?|~|\\^|\\||&)",token:["keyword.operator.bitwise.dart"]},{regex:"((?:&|\\^|\\||<<|>>>?)=)",token:["keyword.operator.assignment.bitwise.dart"]},{regex:"(===?|!==?|<=?|>=?)",token:["keyword.operator.comparison.dart"]},{regex:"((?:[+*/%-]|\\~)=)",token:["keyword.operator.assignment.arithmetic.dart"]},{regex:"=",token:"keyword.operator.assignment.dart"},{token:"string",regex:"'''",next:"qdoc"},{token:"string",regex:'"""',next:"qqdoc"},{token:"string",regex:"'",next:"qstring"},{token:"string",regex:'"',next:"qqstring"},{regex:"(\\-\\-|\\+\\+)",token:["keyword.operator.increment-decrement.dart"]},{regex:"(\\-|\\+|\\*|\\/|\\~\\/|%)",token:["keyword.operator.arithmetic.dart"]},{regex:"(!|&&|\\|\\|)",token:["keyword.operator.logical.dart"]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qdoc:[{token:"string",regex:".*?'''",next:"start"},a],qqdoc:[{token:"string",regex:'.*?"""',next:"start"},a],qstring:[{token:"string",regex:"[^\\\\']*(?:\\\\.[^\\\\']*)*'",next:"start"},a],qqstring:[{token:"string",regex:'[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',next:"start"},a]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.DartHighlightRules=o}),ace.define("ace/mode/dart",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/dart_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./c_cpp").Mode,s=e("./dart_highlight_rules").DartHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){i.call(this),this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/dart"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-diff.js b/library/ace/mode-diff.js
new file mode 100644
index 000000000..7760fe794
--- /dev/null
+++ b/library/ace/mode-diff.js
@@ -0,0 +1 @@
+ace.define("ace/mode/diff_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{regex:"^(?:\\*{15}|={67}|-{3}|\\+{3})$",token:"punctuation.definition.separator.diff",name:"keyword"},{regex:"^(@@)(\\s*.+?\\s*)(@@)(.*)$",token:["constant","constant.numeric","constant","comment.doc.tag"]},{regex:"^(\\d+)([,\\d]+)(a|d|c)(\\d+)([,\\d]+)(.*)$",token:["constant.numeric","punctuation.definition.range.diff","constant.function","constant.numeric","punctuation.definition.range.diff","invalid"],name:"meta."},{regex:"^(\\-{3}|\\+{3}|\\*{3})( .+)$",token:["constant.numeric","meta.tag"]},{regex:"^([!+>])(.*?)(\\s*)$",token:["support.constant","text","invalid"]},{regex:"^([<\\-])(.*?)(\\s*)$",token:["support.function","string","invalid"]},{regex:"^(diff)(\\s+--\\w+)?(.+?)( .+)?$",token:["variable","variable","keyword","variable"]},{regex:"^Index.+$",token:"variable"},{regex:"^\\s+$",token:"text"},{regex:"\\s*$",token:"invalid"},{defaultToken:"invisible",caseInsensitive:!0}]}};r.inherits(s,i),t.DiffHighlightRules=s}),ace.define("ace/mode/folding/diff",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(e,t){this.regExpList=e,this.flag=t,this.foldingStartMarker=RegExp("^("+e.join("|")+")",this.flag)};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i={row:n,column:r.length},o=this.regExpList;for(var u=1;u<=o.length;u++){var a=RegExp("^("+o.slice(0,u).join("|")+")",this.flag);if(a.test(r))break}for(var f=e.getLength();++n<f;){r=e.getLine(n);if(a.test(r))break}if(n==i.row+1)return;return s.fromPoints(i,{row:n-1,column:r.length})}}.call(o.prototype)}),ace.define("ace/mode/diff",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/diff_highlight_rules","ace/mode/folding/diff"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./diff_highlight_rules").DiffHighlightRules,o=e("./folding/diff").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o(["diff","index","\\+{3}","@@|\\*{5}"],"i")};r.inherits(u,i),function(){this.$id="ace/mode/diff"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-django.js b/library/ace/mode-django.js
new file mode 100644
index 000000000..33ed7c36f
--- /dev/null
+++ b/library/ace/mode-django.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[A-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/django",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./html").Mode,s=e("./html_highlight_rules").HtmlHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){this.$rules={start:[{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant",regex:"[0-9]+"},{token:"variable",regex:"[-_a-zA-Z0-9:]+"}],comment:[{token:"comment.block",merge:!0,regex:".+?"}],tag:[{token:"entity.name.function",regex:"[a-zA-Z][_a-zA-Z0-9]*",next:"start"}]}};r.inherits(u,o);var a=function(){this.$rules=(new s).getRules();for(var e in this.$rules)this.$rules[e].unshift({token:"comment.line",regex:"\\{#.*?#\\}"},{token:"comment.block",regex:"\\{\\%\\s*comment\\s*\\%\\}",merge:!0,next:"django-comment"},{token:"constant.language",regex:"\\{\\{",next:"django-start"},{token:"constant.language",regex:"\\{\\%",next:"django-tag"}),this.embedRules(u,"django-",[{token:"comment.block",regex:"\\{\\%\\s*endcomment\\s*\\%\\}",merge:!0,next:"start"},{token:"constant.language",regex:"\\%\\}",next:"start"},{token:"constant.language",regex:"\\}\\}",next:"start"}])};r.inherits(a,s);var f=function(){i.call(this),this.HighlightRules=a};r.inherits(f,i),function(){this.$id="ace/mode/django"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-dockerfile.js b/library/ace/mode-dockerfile.js
new file mode 100644
index 000000000..7c6c44783
--- /dev/null
+++ b/library/ace/mode-dockerfile.js
@@ -0,0 +1 @@
+ace.define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.reservedKeywords="!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set|function|declare|readonly",o=t.languageConstructs="[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",u=function(){var e=this.createKeywordMapper({keyword:s,"support.function.builtin":o,"invalid.deprecated":"debugger"},"identifier"),t="(?:(?:[1-9]\\d*)|(?:0))",n="(?:\\.\\d+)",r="(?:\\d+)",i="(?:(?:"+r+"?"+n+")|(?:"+r+"\\.))",u="(?:(?:"+i+"|"+r+")"+")",a="(?:"+u+"|"+i+")",f="(?:&"+r+")",l="[a-zA-Z_][a-zA-Z0-9_]*",c="(?:"+l+"=)",h="(?:\\$(?:SHLVL|\\$|\\!|\\?))",p="(?:"+l+"\\s*\\(\\))";this.$rules={start:[{token:"constant",regex:/\\./},{token:["text","comment"],regex:/(^|\s)(#.*)$/},{token:"string",regex:'"',push:[{token:"constant.language.escape",regex:/\\(?:[$`"\\]|$)/},{include:"variables"},{token:"keyword.operator",regex:/`/},{token:"string",regex:'"',next:"pop"},{defaultToken:"string"}]},{token:"string",regex:"\\$'",push:[{token:"constant.language.escape",regex:/\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/},{token:"string",regex:"'",next:"pop"},{defaultToken:"string"}]},{regex:"<<<",token:"keyword.operator"},{stateName:"heredoc",regex:"(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[4]),[{type:"constant",value:i[1]},{type:"text",value:i[2]},{type:"string",value:i[3]},{type:"support.class",value:i[4]},{type:"string",value:i[5]}]},rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:["keyword","text","text","text","variable"],regex:/(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/},{token:"variable.language",regex:h},{token:"variable",regex:c},{include:"variables"},{token:"support.function",regex:p},{token:"support.function",regex:f},{token:"string",start:"'",end:"'"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:t+"\\b"},{token:e,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"},{token:"punctuation.operator",regex:";"},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]]"},{token:"paren.rparen",regex:"[\\)\\}]",next:"pop"}],variables:[{token:"variable",regex:/(\$)(\w+)/},{token:["variable","paren.lparen"],regex:/(\$)(\()/,push:"start"},{token:["variable","paren.lparen","keyword.operator","variable","keyword.operator"],regex:/(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,push:"start"},{token:"variable",regex:/\$[*@#?\-$!0_]/},{token:["variable","paren.lparen"],regex:/(\$)(\{)/,push:"start"}]},this.normalizeRules()};r.inherits(u,i),t.ShHighlightRules=u}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sh_highlight_rules").ShHighlightRules,o=e("../range").Range,u=e("./folding/cstyle").FoldMode,a=e("./behaviour/cstyle").CstyleBehaviour,f=function(){this.HighlightRules=s,this.foldingRules=new u,this.$behaviour=new a};r.inherits(f,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[\:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new o(n,r.length-i.length,n,r.length))},this.$id="ace/mode/sh"}.call(f.prototype),t.Mode=f}),ace.define("ace/mode/dockerfile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/sh_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./sh_highlight_rules").ShHighlightRules,s=function(){i.call(this);var e=this.$rules.start;for(var t=0;t<e.length;t++)if(e[t].token=="variable.language"){e.splice(t,0,{token:"constant.language",regex:"(?:^(?:FROM|MAINTAINER|RUN|CMD|EXPOSE|ENV|ADD|ENTRYPOINT|VOLUME|USER|WORKDIR|ONBUILD|COPY|LABEL)\\b)",caseInsensitive:!0});break}};r.inherits(s,i),t.DockerfileHighlightRules=s}),ace.define("ace/mode/dockerfile",["require","exports","module","ace/lib/oop","ace/mode/sh","ace/mode/dockerfile_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./sh").Mode,s=e("./dockerfile_highlight_rules").DockerfileHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){i.call(this),this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.$id="ace/mode/dockerfile"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-dot.js b/library/ace/mode-dot.js
new file mode 100644
index 000000000..5cd26938f
--- /dev/null
+++ b/library/ace/mode-dot.js
@@ -0,0 +1 @@
+ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/dot_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/doc_comment_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./doc_comment_highlight_rules").DocCommentHighlightRules,u=function(){var e=i.arrayToMap("strict|node|edge|graph|digraph|subgraph".split("|")),t=i.arrayToMap("damping|k|url|area|arrowhead|arrowsize|arrowtail|aspect|bb|bgcolor|center|charset|clusterrank|color|colorscheme|comment|compound|concentrate|constraint|decorate|defaultdist|dim|dimen|dir|diredgeconstraints|distortion|dpi|edgeurl|edgehref|edgetarget|edgetooltip|epsilon|esep|fillcolor|fixedsize|fontcolor|fontname|fontnames|fontpath|fontsize|forcelabels|gradientangle|group|headurl|head_lp|headclip|headhref|headlabel|headport|headtarget|headtooltip|height|href|id|image|imagepath|imagescale|label|labelurl|label_scheme|labelangle|labeldistance|labelfloat|labelfontcolor|labelfontname|labelfontsize|labelhref|labeljust|labelloc|labeltarget|labeltooltip|landscape|layer|layerlistsep|layers|layerselect|layersep|layout|len|levels|levelsgap|lhead|lheight|lp|ltail|lwidth|margin|maxiter|mclimit|mindist|minlen|mode|model|mosek|nodesep|nojustify|normalize|nslimit|nslimit1|ordering|orientation|outputorder|overlap|overlap_scaling|pack|packmode|pad|page|pagedir|pencolor|penwidth|peripheries|pin|pos|quadtree|quantum|rank|rankdir|ranksep|ratio|rects|regular|remincross|repulsiveforce|resolution|root|rotate|rotation|samehead|sametail|samplepoints|scale|searchsize|sep|shape|shapefile|showboxes|sides|size|skew|smoothing|sortv|splines|start|style|stylesheet|tailurl|tail_lp|tailclip|tailhref|taillabel|tailport|tailtarget|tailtooltip|target|tooltip|truecolor|vertices|viewport|voro_margin|weight|width|xlabel|xlp|z".split("|"));this.$rules={start:[{token:"comment",regex:/\/\/.*$/},{token:"comment",regex:/#.*$/},{token:"comment",merge:!0,regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/[+\-]?\d+(?:(?:\.\d*)?(?:[eE][+\-]?\d+)?)?\b/},{token:"keyword.operator",regex:/\+|=|\->/},{token:"punctuation.operator",regex:/,|;/},{token:"paren.lparen",regex:/[\[{]/},{token:"paren.rparen",regex:/[\]}]/},{token:"comment",regex:/^#!.*$/},{token:function(n){return e.hasOwnProperty(n.toLowerCase())?"keyword":t.hasOwnProperty(n.toLowerCase())?"variable":"text"},regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"}],comment:[{token:"comment",regex:".*?\\*\\/",merge:!0,next:"start"},{token:"comment",merge:!0,regex:".+"}],qqstring:[{token:"string",regex:'[^"\\\\]+',merge:!0},{token:"string",regex:"\\\\$",next:"qqstring",merge:!0},{token:"string",regex:'"|$',next:"start",merge:!0}],qstring:[{token:"string",regex:"[^'\\\\]+",merge:!0},{token:"string",regex:"\\\\$",next:"qstring",merge:!0},{token:"string",regex:"'|$",next:"start",merge:!0}]}};r.inherits(u,s),t.DotHighlightRules=u}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/dot",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/matching_brace_outdent","ace/mode/dot_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./matching_brace_outdent").MatchingBraceOutdent,o=e("./dot_highlight_rules").DotHighlightRules,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=o,this.$outdent=new s,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart=["//","#"],this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/dot"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-eiffel.js b/library/ace/mode-eiffel.js
new file mode 100644
index 000000000..e0d358d89
--- /dev/null
+++ b/library/ace/mode-eiffel.js
@@ -0,0 +1 @@
+ace.define("ace/mode/eiffel_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="across|agent|alias|all|attached|as|assign|attribute|check|class|convert|create|debug|deferred|detachable|do|else|elseif|end|ensure|expanded|export|external|feature|from|frozen|if|inherit|inspect|invariant|like|local|loop|not|note|obsolete|old|once|Precursor|redefine|rename|require|rescue|retry|select|separate|some|then|undefine|until|variant|when",t="and|implies|or|xor",n="Void",r="True|False",i="Current|Result",s=this.createKeywordMapper({"constant.language":n,"constant.language.boolean":r,"variable.language":i,"keyword.operator":t,keyword:e},"identifier",!0),o=/(?:[^"%\b\f\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)+?/;this.$rules={start:[{token:"string.quoted.other",regex:/"\[/,next:"aligned_verbatim_string"},{token:"string.quoted.other",regex:/"\{/,next:"non-aligned_verbatim_string"},{token:"string.quoted.double",regex:/"(?:[^%\b\f\n\r\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)*?"/},{token:"comment.line.double-dash",regex:/--.*/},{token:"constant.character",regex:/'(?:[^%\b\f\n\r\t\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)'/},{token:"constant.numeric",regex:/\b0(?:[xX][\da-fA-F](?:_*[\da-fA-F])*|[cC][0-7](?:_*[0-7])*|[bB][01](?:_*[01])*)\b/},{token:"constant.numeric",regex:/(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?[eE][+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/},{token:"paren.lparen",regex:/[\[({]|<<|\|\(/},{token:"paren.rparen",regex:/[\])}]|>>|\|\)/},{token:"keyword.operator",regex:/:=|->|\.(?=\w)|[;,:?]/},{token:"keyword.operator",regex:/\\\\|\|\.\.\||\.\.|\/[~\/]?|[><\/]=?|[-+*^=~]/},{token:function(e){var t=s(e);return t==="identifier"&&e===e.toUpperCase()&&(t="entity.name.type"),t},regex:/[a-zA-Z][a-zA-Z\d_]*\b/},{token:"text",regex:/\s+/}],aligned_verbatim_string:[{token:"string",regex:/]"/,next:"start"},{token:"string",regex:o}],"non-aligned_verbatim_string":[{token:"string.quoted.other",regex:/}"/,next:"start"},{token:"string.quoted.other",regex:o}]}};r.inherits(s,i),t.EiffelHighlightRules=s}),ace.define("ace/mode/eiffel",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/eiffel_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./eiffel_highlight_rules").EiffelHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="--",this.$id="ace/mode/eiffel"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-ejs.js b/library/ace/mode-ejs.js
new file mode 100644
index 000000000..6c089ca13
--- /dev/null
+++ b/library/ace/mode-ejs.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[A-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.constantOtherSymbol={token:"constant.other.symbol.ruby",regex:"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"},o=t.qString={token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},u=t.qqString={token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},a=t.tString={token:"string",regex:"[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"},f=t.constantNumericHex={token:"constant.numeric",regex:"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"},l=t.constantNumericFloat={token:"constant.numeric",regex:"[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b"},c=function(){var e="abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many",t="alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield",n="true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING",r="$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",i=this.$keywords=this.createKeywordMapper({keyword:t,"constant.language":n,"variable.language":r,"support.function":e,"invalid.deprecated":"debugger"},"identifier");this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"comment",regex:"^=begin(?:$|\\s.*$)",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},[{regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren.lparen";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.start",regex:/"/,push:[{token:"constant.language.escape",regex:/\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/},{token:"paren.start",regex:/\#{/,push:"start"},{token:"string.end",regex:/"/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/`/,push:[{token:"constant.language.escape",regex:/\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/},{token:"paren.start",regex:/\#{/,push:"start"},{token:"string.end",regex:/`/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/'/,push:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string.end",regex:/'/,next:"pop"},{defaultToken:"string"}]}],{token:"text",regex:"::"},{token:"variable.instance",regex:"@{1,2}[a-zA-Z_\\d]+"},{token:"support.class",regex:"[A-Z][a-zA-Z_\\d]+"},s,f,l,{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"punctuation.separator.key-value",regex:"=>"},{stateName:"heredoc",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[3]),[{type:"constant",value:i[1]},{type:"string",value:i[2]},{type:"support.class",value:i[3]},{type:"string",value:i[4]}]},regex:"(<<-?)(['\"`]?)([\\w]+)(['\"`]?)",rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:"string.character",regex:"\\B\\?."},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"^=end(?:$|\\s.*$)",next:"start"},{token:"comment",regex:".+"}]},this.normalizeRules()};r.inherits(c,i),t.RubyHighlightRules=c}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ruby_highlight_rules").RubyHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/coffee").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/),u=t.match(/^\s*(class|def|module)\s.*$/),a=t.match(/.*do(\s*|\s+\|.*\|\s*)$/),f=t.match(/^\s*(if|else|when)\s*/);if(o||u||a||f)r+=n}return r},this.checkOutdent=function(e,t,n){return/^\s+(end|else)$/.test(t+n)||this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){var r=t.getLine(n);if(/}/.test(r))return this.$outdent.autoOutdent(t,n);var i=this.$getIndent(r),s=t.getLine(n-1),o=this.$getIndent(s),a=t.getTabString();o.length<=i.length&&i.slice(-a.length)==a&&t.remove(new u(n,i.length-a.length,n,i.length))},this.$id="ace/mode/ruby"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/ejs",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/javascript_highlight_rules","ace/lib/oop","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/ruby"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=function(e,t){i.call(this),e||(e="(?:<%|<\\?|{{)"),t||(t="(?:%>|\\?>|}})");for(var n in this.$rules)this.$rules[n].unshift({token:"markup.list.meta.tag",regex:e+"(?![>}])[-=]?",push:"ejs-start"});this.embedRules(s,"ejs-",[{token:"markup.list.meta.tag",regex:"-?"+t,next:"pop"},{token:"comment",regex:"//.*?"+t,next:"pop"}]),this.normalizeRules()};r.inherits(o,i),t.EjsHighlightRules=o;var r=e("../lib/oop"),u=e("./html").Mode,a=e("./javascript").Mode,f=e("./css").Mode,l=e("./ruby").Mode,c=function(){u.call(this),this.HighlightRules=o,this.createModeDelegates({"js-":a,"css-":f,"ejs-":a})};r.inherits(c,u),function(){this.$id="ace/mode/ejs"}.call(c.prototype),t.Mode=c}) \ No newline at end of file
diff --git a/library/ace/mode-elixir.js b/library/ace/mode-elixir.js
new file mode 100644
index 000000000..f7eec0295
--- /dev/null
+++ b/library/ace/mode-elixir.js
@@ -0,0 +1 @@
+ace.define("ace/mode/elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["meta.module.elixir","keyword.control.module.elixir","meta.module.elixir","entity.name.type.module.elixir"],regex:"^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)"},{token:"comment.documentation.heredoc",regex:'@(?:module|type)?doc (?:~[a-z])?"""',push:[{token:"comment.documentation.heredoc",regex:'\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:'@(?:module|type)?doc ~[A-Z]"""',push:[{token:"comment.documentation.heredoc",regex:'\\s*"""',next:"pop"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:"@(?:module|type)?doc (?:~[a-z])?'''",push:[{token:"comment.documentation.heredoc",regex:"\\s*'''",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:"@(?:module|type)?doc ~[A-Z]'''",push:[{token:"comment.documentation.heredoc",regex:"\\s*'''",next:"pop"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.false",regex:"@(?:module|type)?doc false",comment:"@doc false is treated as documentation"},{token:"comment.documentation.string",regex:'@(?:module|type)?doc "',push:[{token:"comment.documentation.string",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.string"}],comment:"@doc with string is treated as documentation"},{token:"keyword.control.elixir",regex:"\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!\\.)\\b(do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])"},{token:"keyword.operator.elixir",regex:"\\b(?:and|not|or|when|xor|in|inlist|inbits)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!\\.)\\b(and|not|or|when|xor|in|inlist|inbits)\\b",comment:" as above, just doesn't need a 'end' and does a logic operation"},{token:"constant.language.elixir",regex:"\\b(?:nil|true|false)\\b(?![?!])"},{token:"variable.language.elixir",regex:"\\b__(?:CALLER|ENV|MODULE|DIR)__\\b(?![?!])"},{token:["punctuation.definition.variable.elixir","variable.other.readwrite.module.elixir"],regex:"(@)([a-zA-Z_]\\w*)"},{token:["punctuation.definition.variable.elixir","variable.other.anonymous.elixir"],regex:"(&)(\\d*)"},{token:"variable.other.constant.elixir",regex:"\\b[A-Z]\\w*\\b"},{token:"constant.numeric.elixir",regex:"\\b(?:0x[\\da-fA-F](?:_?[\\da-fA-F])*|\\d(?:_?\\d)*(?:\\.(?![^[:space:][:digit:]])(?:_?\\d)*)?(?:[eE][-+]?\\d(?:_?\\d)*)?|0b[01]+|0o[0-7]+)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"\\b(0x\\h(?>_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b"},{token:"punctuation.definition.constant.elixir",regex:":'",push:[{token:"punctuation.definition.constant.elixir",regex:"'",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"constant.other.symbol.single-quoted.elixir"}]},{token:"punctuation.definition.constant.elixir",regex:':"',push:[{token:"punctuation.definition.constant.elixir",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"constant.other.symbol.double-quoted.elixir"}]},{token:"punctuation.definition.string.begin.elixir",regex:"(?:''')",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?>''')",push:[{token:"punctuation.definition.string.end.elixir",regex:"^\\s*'''",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"support.function.variable.quoted.single.heredoc.elixir"}],comment:"Single-quoted heredocs"},{token:"punctuation.definition.string.begin.elixir",regex:"'",push:[{token:"punctuation.definition.string.end.elixir",regex:"'",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"support.function.variable.quoted.single.elixir"}],comment:"single quoted string (allows for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'(?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'(?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.heredoc.elixir"}],comment:"Double-quoted heredocs"},{token:"punctuation.definition.string.begin.elixir",regex:'"',push:[{token:"punctuation.definition.string.end.elixir",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.elixir"}],comment:"double quoted string (allows for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'~[a-z](?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'~[a-z](?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.heredoc.elixir"}],comment:"Double-quoted heredocs sigils"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\{",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\}[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\[",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\][a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\<",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\>[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\(",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\)[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z][^\\w]",push:[{token:"punctuation.definition.string.end.elixir",regex:"[^\\w][a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'~[A-Z](?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'~[A-Z](?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"Double-quoted heredocs sigils"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\{",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\}[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\[",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\][a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\<",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\>[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\(",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\)[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z][^\\w]",push:[{token:"punctuation.definition.string.end.elixir",regex:"[^\\w][a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:["punctuation.definition.constant.elixir","constant.other.symbol.elixir"],regex:"(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!:)(:)(?>[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)",comment:"symbols"},{token:"punctuation.definition.constant.elixir",regex:"(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)",comment:"symbols"},{token:["punctuation.definition.comment.elixir","comment.line.number-sign.elixir"],regex:"(#)(.*)"},{token:"constant.numeric.elixir",regex:"\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!\\w)\\?(\\\\(x\\h{1,2}(?!\\h)\\b|[^xMC])|[^\\s\\\\])",comment:'\n matches questionmark-letters.\n\n examples (1st alternation = hex):\n ?\\x1 ?\\x61\n\n examples (2rd alternation = escaped):\n ?\\n ?\\b\n\n examples (3rd alternation = normal):\n ?a ?A ?0 \n ?* ?" ?( \n ?. ?#\n \n the negative lookbehind prevents against matching\n p(42.tainted?)\n '},{token:"keyword.operator.assignment.augmented.elixir",regex:"\\+=|\\-=|\\|\\|=|~=|&&="},{token:"keyword.operator.comparison.elixir",regex:"===?|!==?|<=?|>=?"},{token:"keyword.operator.bitwise.elixir",regex:"\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}"},{token:"keyword.operator.logical.elixir",regex:"!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b",originalRegex:"(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b"},{token:"keyword.operator.arithmetic.elixir",regex:"\\*|\\+|\\-|/"},{token:"keyword.operator.other.elixir",regex:"\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>"},{token:"keyword.operator.assignment.elixir",regex:"="},{token:"punctuation.separator.other.elixir",regex:":"},{token:"punctuation.separator.statement.elixir",regex:"\\;"},{token:"punctuation.separator.object.elixir",regex:","},{token:"punctuation.separator.method.elixir",regex:"\\."},{token:"punctuation.section.scope.elixir",regex:"\\{|\\}"},{token:"punctuation.section.array.elixir",regex:"\\[|\\]"},{token:"punctuation.section.function.elixir",regex:"\\(|\\)"}],"#escaped_char":[{token:"constant.character.escape.elixir",regex:"\\\\(?:x[\\da-fA-F]{1,2}|.)"}],"#interpolated_elixir":[{token:["source.elixir.embedded.source","source.elixir.embedded.source.empty"],regex:"(#\\{)(\\})"},{todo:{token:"punctuation.section.embedded.elixir",regex:"#\\{",push:[{token:"punctuation.section.embedded.elixir",regex:"\\}",next:"pop"},{include:"#nest_curly_and_self"},{include:"$self"},{defaultToken:"source.elixir.embedded.source"}]}}],"#nest_curly_and_self":[{token:"punctuation.section.scope.elixir",regex:"\\{",push:[{token:"punctuation.section.scope.elixir",regex:"\\}",next:"pop"},{include:"#nest_curly_and_self"}]},{include:"$self"}],"#regex_sub":[{include:"#interpolated_elixir"},{include:"#escaped_char"},{token:["punctuation.definition.arbitrary-repitition.elixir","string.regexp.arbitrary-repitition.elixir","string.regexp.arbitrary-repitition.elixir","punctuation.definition.arbitrary-repitition.elixir"],regex:"(\\{)(\\d+)((?:,\\d+)?)(\\})"},{token:"punctuation.definition.character-class.elixir",regex:"\\[(?:\\^?\\])?",push:[{token:"punctuation.definition.character-class.elixir",regex:"\\]",next:"pop"},{include:"#escaped_char"},{defaultToken:"string.regexp.character-class.elixir"}]},{token:"punctuation.definition.group.elixir",regex:"\\(",push:[{token:"punctuation.definition.group.elixir",regex:"\\)",next:"pop"},{include:"#regex_sub"},{defaultToken:"string.regexp.group.elixir"}]},{token:["punctuation.definition.comment.elixir","comment.line.number-sign.elixir"],regex:"(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)",originalRegex:"(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$",comment:"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags."}]},this.normalizeRules()};s.metaData={comment:"Textmate bundle for Elixir Programming Language.",fileTypes:["ex","exs"],firstLineMatch:"^#!/.*\\belixir",foldingStartMarker:"(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$",foldingStopMarker:"^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)",keyEquivalent:"^~E",name:"Elixir",scopeName:"source.elixir"},r.inherits(s,i),t.ElixirHighlightRules=s}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/elixir",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/elixir_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./elixir_highlight_rules").ElixirHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="#",this.$id="ace/mode/elixir"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-elm.js b/library/ace/mode-elm.js
new file mode 100644
index 000000000..b6a7d33d3
--- /dev/null
+++ b/library/ace/mode-elm.js
@@ -0,0 +1 @@
+ace.define("ace/mode/elm_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({keyword:"as|case|class|data|default|deriving|do|else|export|foreign|hiding|jsevent|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|open|then|type|where|_|port|\u03bb"},"identifier"),t=/\\(\d+|['"\\&trnbvf])/,n=/[a-z_]/.source,r=/[A-Z]/.source,i=/[a-z_A-Z0-9\']/.source;this.$rules={start:[{token:"string.start",regex:'"',next:"string"},{token:"string.character",regex:"'(?:"+t.source+"|.)'?"},{regex:/0(?:[xX][0-9A-Fa-f]+|[oO][0-7]+)|\d+(\.\d+)?([eE][-+]?\d*)?/,token:"constant.numeric"},{token:"comment",regex:"--.*"},{token:"keyword",regex:/\.\.|\||:|=|\\|\"|->|<-|\u2192/},{token:"keyword.operator",regex:/[-!#$%&*+.\/<=>?@\\^|~:\u03BB\u2192]+/},{token:"operator.punctuation",regex:/[,;`]/},{regex:r+i+"+\\.?",token:function(e){return e[e.length-1]=="."?"entity.name.function":"constant.language"}},{regex:"^"+n+i+"+",token:function(e){return"constant.language"}},{token:e,regex:"[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b"},{regex:"{-#?",token:"comment.start",onMatch:function(e,t,n){return this.next=e.length==2?"blockComment":"docComment",this.token}},{token:"variable.language",regex:/\[markdown\|/,next:"markdown"},{token:"paren.lparen",regex:/[\[({]/},{token:"paren.rparen",regex:/[\])}]/}],markdown:[{regex:/\|\]/,next:"start"},{defaultToken:"string"}],blockComment:[{regex:"{-",token:"comment.start",push:"blockComment"},{regex:"-}",token:"comment.end",next:"pop"},{defaultToken:"comment"}],docComment:[{regex:"{-",token:"comment.start",push:"docComment"},{regex:"-}",token:"comment.end",next:"pop"},{defaultToken:"doc.comment"}],string:[{token:"constant.language.escape",regex:t},{token:"text",regex:/\\(\s|$)/,next:"stringGap"},{token:"string.end",regex:'"',next:"start"}],stringGap:[{token:"text",regex:/\\/,next:"string"},{token:"error",regex:"",next:"start"}]},this.normalizeRules()};r.inherits(s,i),t.ElmHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/elm",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/elm_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./elm_highlight_rules").ElmHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="--",this.blockComment={start:"{-",end:"-}",nestable:!0},this.$id="ace/mode/elm"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-erlang.js b/library/ace/mode-erlang.js
new file mode 100644
index 000000000..b6ab290c9
--- /dev/null
+++ b/library/ace/mode-erlang.js
@@ -0,0 +1 @@
+ace.define("ace/mode/erlang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#module-directive"},{include:"#import-export-directive"},{include:"#behaviour-directive"},{include:"#record-directive"},{include:"#define-directive"},{include:"#macro-directive"},{include:"#directive"},{include:"#function"},{include:"#everything-else"}],"#atom":[{token:"punctuation.definition.symbol.begin.erlang",regex:"'",push:[{token:"punctuation.definition.symbol.end.erlang",regex:"'",next:"pop"},{token:["punctuation.definition.escape.erlang","constant.other.symbol.escape.erlang","punctuation.definition.escape.erlang","constant.other.symbol.escape.erlang","constant.other.symbol.escape.erlang"],regex:"(\\\\)(?:([bdefnrstv\\\\'\"])|(\\^)([@-_])|([0-7]{1,3}))"},{token:"invalid.illegal.atom.erlang",regex:"\\\\\\^?.?"},{defaultToken:"constant.other.symbol.quoted.single.erlang"}]},{token:"constant.other.symbol.unquoted.erlang",regex:"[a-z][a-zA-Z\\d@_]*"}],"#behaviour-directive":[{token:["meta.directive.behaviour.erlang","punctuation.section.directive.begin.erlang","meta.directive.behaviour.erlang","keyword.control.directive.behaviour.erlang","meta.directive.behaviour.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.behaviour.erlang","entity.name.type.class.behaviour.definition.erlang","meta.directive.behaviour.erlang","punctuation.definition.parameters.end.erlang","meta.directive.behaviour.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)(behaviour)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)"}],"#binary":[{token:"punctuation.definition.binary.begin.erlang",regex:"<<",push:[{token:"punctuation.definition.binary.end.erlang",regex:">>",next:"pop"},{token:["punctuation.separator.binary.erlang","punctuation.separator.value-size.erlang"],regex:"(,)|(:)"},{include:"#internal-type-specifiers"},{include:"#everything-else"},{defaultToken:"meta.structure.binary.erlang"}]}],"#character":[{token:["punctuation.definition.character.erlang","punctuation.definition.escape.erlang","constant.character.escape.erlang","punctuation.definition.escape.erlang","constant.character.escape.erlang","constant.character.escape.erlang"],regex:"(\\$)(\\\\)(?:([bdefnrstv\\\\'\"])|(\\^)([@-_])|([0-7]{1,3}))"},{token:"invalid.illegal.character.erlang",regex:"\\$\\\\\\^?.?"},{token:["punctuation.definition.character.erlang","constant.character.erlang"],regex:"(\\$)(\\S)"},{token:"invalid.illegal.character.erlang",regex:"\\$.?"}],"#comment":[{token:"punctuation.definition.comment.erlang",regex:"%.*$",push_:[{token:"comment.line.percentage.erlang",regex:"$",next:"pop"},{defaultToken:"comment.line.percentage.erlang"}]}],"#define-directive":[{token:["meta.directive.define.erlang","punctuation.section.directive.begin.erlang","meta.directive.define.erlang","keyword.control.directive.define.erlang","meta.directive.define.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.define.erlang","entity.name.function.macro.definition.erlang","meta.directive.define.erlang","punctuation.separator.parameters.erlang"],regex:"^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(,)",push:[{token:["punctuation.definition.parameters.end.erlang","meta.directive.define.erlang","punctuation.section.directive.end.erlang"],regex:"(\\))(\\s*)(\\.)",next:"pop"},{include:"#everything-else"},{defaultToken:"meta.directive.define.erlang"}]},{token:"meta.directive.define.erlang",regex:"(?=^\\s*-\\s*define\\s*\\(\\s*[a-zA-Z\\d@_]+\\s*\\()",push:[{token:["punctuation.definition.parameters.end.erlang","meta.directive.define.erlang","punctuation.section.directive.end.erlang"],regex:"(\\))(\\s*)(\\.)",next:"pop"},{token:["text","punctuation.section.directive.begin.erlang","text","keyword.control.directive.define.erlang","text","punctuation.definition.parameters.begin.erlang","text","entity.name.function.macro.definition.erlang","text","punctuation.definition.parameters.begin.erlang"],regex:"^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\()",push:[{token:["punctuation.definition.parameters.end.erlang","text","punctuation.separator.parameters.erlang"],regex:"(\\))(\\s*)(,)",next:"pop"},{token:"punctuation.separator.parameters.erlang",regex:","},{include:"#everything-else"}]},{token:"punctuation.separator.define.erlang",regex:"\\|\\||\\||:|;|,|\\.|->"},{include:"#everything-else"},{defaultToken:"meta.directive.define.erlang"}]}],"#directive":[{token:["meta.directive.erlang","punctuation.section.directive.begin.erlang","meta.directive.erlang","keyword.control.directive.erlang","meta.directive.erlang","punctuation.definition.parameters.begin.erlang"],regex:"^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\(?)",push:[{token:["punctuation.definition.parameters.end.erlang","meta.directive.erlang","punctuation.section.directive.end.erlang"],regex:"(\\)?)(\\s*)(\\.)",next:"pop"},{include:"#everything-else"},{defaultToken:"meta.directive.erlang"}]},{token:["meta.directive.erlang","punctuation.section.directive.begin.erlang","meta.directive.erlang","keyword.control.directive.erlang","meta.directive.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\.)"}],"#everything-else":[{include:"#comment"},{include:"#record-usage"},{include:"#macro-usage"},{include:"#expression"},{include:"#keyword"},{include:"#textual-operator"},{include:"#function-call"},{include:"#tuple"},{include:"#list"},{include:"#binary"},{include:"#parenthesized-expression"},{include:"#character"},{include:"#number"},{include:"#atom"},{include:"#string"},{include:"#symbolic-operator"},{include:"#variable"}],"#expression":[{token:"keyword.control.if.erlang",regex:"\\bif\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#internal-expression-punctuation"},{include:"#everything-else"},{defaultToken:"meta.expression.if.erlang"}]},{token:"keyword.control.case.erlang",regex:"\\bcase\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#internal-expression-punctuation"},{include:"#everything-else"},{defaultToken:"meta.expression.case.erlang"}]},{token:"keyword.control.receive.erlang",regex:"\\breceive\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#internal-expression-punctuation"},{include:"#everything-else"},{defaultToken:"meta.expression.receive.erlang"}]},{token:["keyword.control.fun.erlang","text","entity.name.type.class.module.erlang","text","punctuation.separator.module-function.erlang","text","entity.name.function.erlang","text","punctuation.separator.function-arity.erlang"],regex:"\\b(fun)(\\s*)(?:([a-z][a-zA-Z\\d@_]*)(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*)(\\s*)(/)"},{token:"keyword.control.fun.erlang",regex:"\\bfun\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{token:"text",regex:"(?=\\()",push:[{token:"punctuation.separator.clauses.erlang",regex:";|(?=\\bend\\b)",next:"pop"},{include:"#internal-function-parts"}]},{include:"#everything-else"},{defaultToken:"meta.expression.fun.erlang"}]},{token:"keyword.control.try.erlang",regex:"\\btry\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#internal-expression-punctuation"},{include:"#everything-else"},{defaultToken:"meta.expression.try.erlang"}]},{token:"keyword.control.begin.erlang",regex:"\\bbegin\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#internal-expression-punctuation"},{include:"#everything-else"},{defaultToken:"meta.expression.begin.erlang"}]},{token:"keyword.control.query.erlang",regex:"\\bquery\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#everything-else"},{defaultToken:"meta.expression.query.erlang"}]}],"#function":[{token:["meta.function.erlang","entity.name.function.definition.erlang","meta.function.erlang"],regex:"^(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(?=\\()",push:[{token:"punctuation.terminator.function.erlang",regex:"\\.",next:"pop"},{token:["text","entity.name.function.erlang","text"],regex:"^(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(?=\\()"},{token:"text",regex:"(?=\\()",push:[{token:"punctuation.separator.clauses.erlang",regex:";|(?=\\.)",next:"pop"},{include:"#parenthesized-expression"},{include:"#internal-function-parts"}]},{include:"#everything-else"},{defaultToken:"meta.function.erlang"}]}],"#function-call":[{token:"meta.function-call.erlang",regex:"(?=(?:[a-z][a-zA-Z\\d@_]*|'[^']*')\\s*(?:\\(|:\\s*(?:[a-z][a-zA-Z\\d@_]*|'[^']*')\\s*\\())",push:[{token:"punctuation.definition.parameters.end.erlang",regex:"\\)",next:"pop"},{token:["entity.name.type.class.module.erlang","text","punctuation.separator.module-function.erlang","text","entity.name.function.guard.erlang","text","punctuation.definition.parameters.begin.erlang"],regex:"(?:(erlang)(\\s*)(:)(\\s*))?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)(\\s*)(\\()",push:[{token:"text",regex:"(?=\\))",next:"pop"},{token:"punctuation.separator.parameters.erlang",regex:","},{include:"#everything-else"}]},{token:["entity.name.type.class.module.erlang","text","punctuation.separator.module-function.erlang","text","entity.name.function.erlang","text","punctuation.definition.parameters.begin.erlang"],regex:"(?:([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(\\()",push:[{token:"text",regex:"(?=\\))",next:"pop"},{token:"punctuation.separator.parameters.erlang",regex:","},{include:"#everything-else"}]},{defaultToken:"meta.function-call.erlang"}]}],"#import-export-directive":[{token:["meta.directive.import.erlang","punctuation.section.directive.begin.erlang","meta.directive.import.erlang","keyword.control.directive.import.erlang","meta.directive.import.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.import.erlang","entity.name.type.class.module.erlang","meta.directive.import.erlang","punctuation.separator.parameters.erlang"],regex:"^(\\s*)(-)(\\s*)(import)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(,)",push:[{token:["punctuation.definition.parameters.end.erlang","meta.directive.import.erlang","punctuation.section.directive.end.erlang"],regex:"(\\))(\\s*)(\\.)",next:"pop"},{include:"#internal-function-list"},{defaultToken:"meta.directive.import.erlang"}]},{token:["meta.directive.export.erlang","punctuation.section.directive.begin.erlang","meta.directive.export.erlang","keyword.control.directive.export.erlang","meta.directive.export.erlang","punctuation.definition.parameters.begin.erlang"],regex:"^(\\s*)(-)(\\s*)(export)(\\s*)(\\()",push:[{token:["punctuation.definition.parameters.end.erlang","meta.directive.export.erlang","punctuation.section.directive.end.erlang"],regex:"(\\))(\\s*)(\\.)",next:"pop"},{include:"#internal-function-list"},{defaultToken:"meta.directive.export.erlang"}]}],"#internal-expression-punctuation":[{token:["punctuation.separator.clause-head-body.erlang","punctuation.separator.clauses.erlang","punctuation.separator.expressions.erlang"],regex:"(->)|(;)|(,)"}],"#internal-function-list":[{token:"punctuation.definition.list.begin.erlang",regex:"\\[",push:[{token:"punctuation.definition.list.end.erlang",regex:"\\]",next:"pop"},{token:["entity.name.function.erlang","text","punctuation.separator.function-arity.erlang"],regex:"([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(/)",push:[{token:"punctuation.separator.list.erlang",regex:",|(?=\\])",next:"pop"},{include:"#everything-else"}]},{include:"#everything-else"},{defaultToken:"meta.structure.list.function.erlang"}]}],"#internal-function-parts":[{token:"text",regex:"(?=\\()",push:[{token:"punctuation.separator.clause-head-body.erlang",regex:"->",next:"pop"},{token:"punctuation.definition.parameters.begin.erlang",regex:"\\(",push:[{token:"punctuation.definition.parameters.end.erlang",regex:"\\)",next:"pop"},{token:"punctuation.separator.parameters.erlang",regex:","},{include:"#everything-else"}]},{token:"punctuation.separator.guards.erlang",regex:",|;"},{include:"#everything-else"}]},{token:"punctuation.separator.expressions.erlang",regex:","},{include:"#everything-else"}],"#internal-record-body":[{token:"punctuation.definition.class.record.begin.erlang",regex:"\\{",push:[{token:"meta.structure.record.erlang",regex:"(?=\\})",next:"pop"},{token:["variable.other.field.erlang","variable.language.omitted.field.erlang","text","keyword.operator.assignment.erlang"],regex:"(?:([a-z][a-zA-Z\\d@_]*|'[^']*')|(_))(\\s*)(=|::)",push:[{token:"punctuation.separator.class.record.erlang",regex:",|(?=\\})",next:"pop"},{include:"#everything-else"}]},{token:["variable.other.field.erlang","text","punctuation.separator.class.record.erlang"],regex:"([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)((?:,)?)"},{include:"#everything-else"},{defaultToken:"meta.structure.record.erlang"}]}],"#internal-type-specifiers":[{token:"punctuation.separator.value-type.erlang",regex:"/",push:[{token:"text",regex:"(?=,|:|>>)",next:"pop"},{token:["storage.type.erlang","storage.modifier.signedness.erlang","storage.modifier.endianness.erlang","storage.modifier.unit.erlang","punctuation.separator.type-specifiers.erlang"],regex:"(integer|float|binary|bytes|bitstring|bits)|(signed|unsigned)|(big|little|native)|(unit)|(-)"}]}],"#keyword":[{token:"keyword.control.erlang",regex:"\\b(?:after|begin|case|catch|cond|end|fun|if|let|of|query|try|receive|when)\\b"}],"#list":[{token:"punctuation.definition.list.begin.erlang",regex:"\\[",push:[{token:"punctuation.definition.list.end.erlang",regex:"\\]",next:"pop"},{token:"punctuation.separator.list.erlang",regex:"\\||\\|\\||,"},{include:"#everything-else"},{defaultToken:"meta.structure.list.erlang"}]}],"#macro-directive":[{token:["meta.directive.ifdef.erlang","punctuation.section.directive.begin.erlang","meta.directive.ifdef.erlang","keyword.control.directive.ifdef.erlang","meta.directive.ifdef.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.ifdef.erlang","entity.name.function.macro.erlang","meta.directive.ifdef.erlang","punctuation.definition.parameters.end.erlang","meta.directive.ifdef.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)(ifdef)(\\s*)(\\()(\\s*)([a-zA-z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)"},{token:["meta.directive.ifndef.erlang","punctuation.section.directive.begin.erlang","meta.directive.ifndef.erlang","keyword.control.directive.ifndef.erlang","meta.directive.ifndef.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.ifndef.erlang","entity.name.function.macro.erlang","meta.directive.ifndef.erlang","punctuation.definition.parameters.end.erlang","meta.directive.ifndef.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)(ifndef)(\\s*)(\\()(\\s*)([a-zA-z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)"},{token:["meta.directive.undef.erlang","punctuation.section.directive.begin.erlang","meta.directive.undef.erlang","keyword.control.directive.undef.erlang","meta.directive.undef.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.undef.erlang","entity.name.function.macro.erlang","meta.directive.undef.erlang","punctuation.definition.parameters.end.erlang","meta.directive.undef.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)(undef)(\\s*)(\\()(\\s*)([a-zA-z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)"}],"#macro-usage":[{token:["keyword.operator.macro.erlang","meta.macro-usage.erlang","entity.name.function.macro.erlang"],regex:"(\\?\\??)(\\s*)([a-zA-Z\\d@_]+)"}],"#module-directive":[{token:["meta.directive.module.erlang","punctuation.section.directive.begin.erlang","meta.directive.module.erlang","keyword.control.directive.module.erlang","meta.directive.module.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.module.erlang","entity.name.type.class.module.definition.erlang","meta.directive.module.erlang","punctuation.definition.parameters.end.erlang","meta.directive.module.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)(module)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)"}],"#number":[{token:"text",regex:"(?=\\d)",push:[{token:"text",regex:"(?!\\d)",next:"pop"},{token:["constant.numeric.float.erlang","punctuation.separator.integer-float.erlang","constant.numeric.float.erlang","punctuation.separator.float-exponent.erlang"],regex:"(\\d+)(\\.)(\\d+)((?:[eE][\\+\\-]?\\d+)?)"},{token:["constant.numeric.integer.binary.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.binary.erlang"],regex:"(2)(#)([0-1]+)"},{token:["constant.numeric.integer.base-3.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-3.erlang"],regex:"(3)(#)([0-2]+)"},{token:["constant.numeric.integer.base-4.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-4.erlang"],regex:"(4)(#)([0-3]+)"},{token:["constant.numeric.integer.base-5.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-5.erlang"],regex:"(5)(#)([0-4]+)"},{token:["constant.numeric.integer.base-6.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-6.erlang"],regex:"(6)(#)([0-5]+)"},{token:["constant.numeric.integer.base-7.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-7.erlang"],regex:"(7)(#)([0-6]+)"},{token:["constant.numeric.integer.octal.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.octal.erlang"],regex:"(8)(#)([0-7]+)"},{token:["constant.numeric.integer.base-9.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-9.erlang"],regex:"(9)(#)([0-8]+)"},{token:["constant.numeric.integer.decimal.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.decimal.erlang"],regex:"(10)(#)(\\d+)"},{token:["constant.numeric.integer.base-11.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-11.erlang"],regex:"(11)(#)([\\daA]+)"},{token:["constant.numeric.integer.base-12.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-12.erlang"],regex:"(12)(#)([\\da-bA-B]+)"},{token:["constant.numeric.integer.base-13.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-13.erlang"],regex:"(13)(#)([\\da-cA-C]+)"},{token:["constant.numeric.integer.base-14.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-14.erlang"],regex:"(14)(#)([\\da-dA-D]+)"},{token:["constant.numeric.integer.base-15.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-15.erlang"],regex:"(15)(#)([\\da-eA-E]+)"},{token:["constant.numeric.integer.hexadecimal.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.hexadecimal.erlang"],regex:"(16)(#)([\\da-fA-F]+)"},{token:["constant.numeric.integer.base-17.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-17.erlang"],regex:"(17)(#)([\\da-gA-G]+)"},{token:["constant.numeric.integer.base-18.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-18.erlang"],regex:"(18)(#)([\\da-hA-H]+)"},{token:["constant.numeric.integer.base-19.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-19.erlang"],regex:"(19)(#)([\\da-iA-I]+)"},{token:["constant.numeric.integer.base-20.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-20.erlang"],regex:"(20)(#)([\\da-jA-J]+)"},{token:["constant.numeric.integer.base-21.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-21.erlang"],regex:"(21)(#)([\\da-kA-K]+)"},{token:["constant.numeric.integer.base-22.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-22.erlang"],regex:"(22)(#)([\\da-lA-L]+)"},{token:["constant.numeric.integer.base-23.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-23.erlang"],regex:"(23)(#)([\\da-mA-M]+)"},{token:["constant.numeric.integer.base-24.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-24.erlang"],regex:"(24)(#)([\\da-nA-N]+)"},{token:["constant.numeric.integer.base-25.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-25.erlang"],regex:"(25)(#)([\\da-oA-O]+)"},{token:["constant.numeric.integer.base-26.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-26.erlang"],regex:"(26)(#)([\\da-pA-P]+)"},{token:["constant.numeric.integer.base-27.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-27.erlang"],regex:"(27)(#)([\\da-qA-Q]+)"},{token:["constant.numeric.integer.base-28.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-28.erlang"],regex:"(28)(#)([\\da-rA-R]+)"},{token:["constant.numeric.integer.base-29.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-29.erlang"],regex:"(29)(#)([\\da-sA-S]+)"},{token:["constant.numeric.integer.base-30.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-30.erlang"],regex:"(30)(#)([\\da-tA-T]+)"},{token:["constant.numeric.integer.base-31.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-31.erlang"],regex:"(31)(#)([\\da-uA-U]+)"},{token:["constant.numeric.integer.base-32.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-32.erlang"],regex:"(32)(#)([\\da-vA-V]+)"},{token:["constant.numeric.integer.base-33.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-33.erlang"],regex:"(33)(#)([\\da-wA-W]+)"},{token:["constant.numeric.integer.base-34.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-34.erlang"],regex:"(34)(#)([\\da-xA-X]+)"},{token:["constant.numeric.integer.base-35.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-35.erlang"],regex:"(35)(#)([\\da-yA-Y]+)"},{token:["constant.numeric.integer.base-36.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-36.erlang"],regex:"(36)(#)([\\da-zA-Z]+)"},{token:"invalid.illegal.integer.erlang",regex:"\\d+#[\\da-zA-Z]+"},{token:"constant.numeric.integer.decimal.erlang",regex:"\\d+"}]}],"#parenthesized-expression":[{token:"punctuation.section.expression.begin.erlang",regex:"\\(",push:[{token:"punctuation.section.expression.end.erlang",regex:"\\)",next:"pop"},{include:"#everything-else"},{defaultToken:"meta.expression.parenthesized"}]}],"#record-directive":[{token:["meta.directive.record.erlang","punctuation.section.directive.begin.erlang","meta.directive.record.erlang","keyword.control.directive.import.erlang","meta.directive.record.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.record.erlang","entity.name.type.class.record.definition.erlang","meta.directive.record.erlang","punctuation.separator.parameters.erlang"],regex:"^(\\s*)(-)(\\s*)(record)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(,)",push:[{token:["punctuation.definition.class.record.end.erlang","meta.directive.record.erlang","punctuation.definition.parameters.end.erlang","meta.directive.record.erlang","punctuation.section.directive.end.erlang"],regex:"(\\})(\\s*)(\\))(\\s*)(\\.)",next:"pop"},{include:"#internal-record-body"},{defaultToken:"meta.directive.record.erlang"}]}],"#record-usage":[{token:["keyword.operator.record.erlang","meta.record-usage.erlang","entity.name.type.class.record.erlang","meta.record-usage.erlang","punctuation.separator.record-field.erlang","meta.record-usage.erlang","variable.other.field.erlang"],regex:"(#)(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(\\.)(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')"},{token:["keyword.operator.record.erlang","meta.record-usage.erlang","entity.name.type.class.record.erlang"],regex:"(#)(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')",push:[{token:"punctuation.definition.class.record.end.erlang",regex:"\\}",next:"pop"},{include:"#internal-record-body"},{defaultToken:"meta.record-usage.erlang"}]}],"#string":[{token:"punctuation.definition.string.begin.erlang",regex:'"',push:[{token:"punctuation.definition.string.end.erlang",regex:'"',next:"pop"},{token:["punctuation.definition.escape.erlang","constant.character.escape.erlang","punctuation.definition.escape.erlang","constant.character.escape.erlang","constant.character.escape.erlang"],regex:"(\\\\)(?:([bdefnrstv\\\\'\"])|(\\^)([@-_])|([0-7]{1,3}))"},{token:"invalid.illegal.string.erlang",regex:"\\\\\\^?.?"},{token:["punctuation.definition.placeholder.erlang","punctuation.separator.placeholder-parts.erlang","constant.other.placeholder.erlang","punctuation.separator.placeholder-parts.erlang","punctuation.separator.placeholder-parts.erlang","constant.other.placeholder.erlang","punctuation.separator.placeholder-parts.erlang","punctuation.separator.placeholder-parts.erlang","punctuation.separator.placeholder-parts.erlang","constant.other.placeholder.erlang","constant.other.placeholder.erlang"],regex:"(~)(?:((?:\\-)?)(\\d+)|(\\*))?(?:(\\.)(?:(\\d+)|(\\*)))?(?:(\\.)(?:(\\*)|(.)))?([~cfegswpWPBX#bx\\+ni])"},{token:["punctuation.definition.placeholder.erlang","punctuation.separator.placeholder-parts.erlang","constant.other.placeholder.erlang","constant.other.placeholder.erlang"],regex:"(~)((?:\\*)?)((?:\\d+)?)([~du\\-#fsacl])"},{token:"invalid.illegal.string.erlang",regex:"~.?"},{defaultToken:"string.quoted.double.erlang"}]}],"#symbolic-operator":[{token:"keyword.operator.symbolic.erlang",regex:"\\+\\+|\\+|--|-|\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|::"}],"#textual-operator":[{token:"keyword.operator.textual.erlang",regex:"\\b(?:andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\\b"}],"#tuple":[{token:"punctuation.definition.tuple.begin.erlang",regex:"\\{",push:[{token:"punctuation.definition.tuple.end.erlang",regex:"\\}",next:"pop"},{token:"punctuation.separator.tuple.erlang",regex:","},{include:"#everything-else"},{defaultToken:"meta.structure.tuple.erlang"}]}],"#variable":[{token:["variable.other.erlang","variable.language.omitted.erlang"],regex:"(_[a-zA-Z\\d@_]+|[A-Z][a-zA-Z\\d@_]*)|(_)"}]},this.normalizeRules()};s.metaData={comment:"The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace). Also, the function/module/record/macro names must be given unquoted. -- desp",fileTypes:["erl","hrl"],keyEquivalent:"^~E",name:"Erlang",scopeName:"source.erlang"},r.inherits(s,i),t.ErlangHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/erlang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/erlang_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./erlang_highlight_rules").ErlangHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="%",this.blockComment=null,this.$id="ace/mode/erlang"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-forth.js b/library/ace/mode-forth.js
new file mode 100644
index 000000000..6545dedaa
--- /dev/null
+++ b/library/ace/mode-forth.js
@@ -0,0 +1 @@
+ace.define("ace/mode/forth_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#forth"}],"#comment":[{token:"comment.line.double-dash.forth",regex:"(?:^|\\s)--\\s.*$",comment:"line comments for iForth"},{token:"comment.line.backslash.forth",regex:"(?:^|\\s)\\\\[\\s\\S]*$",comment:"ANSI line comment"},{token:"comment.line.backslash-g.forth",regex:"(?:^|\\s)\\\\[Gg] .*$",comment:"gForth line comment"},{token:"comment.block.forth",regex:"(?:^|\\s)\\(\\*(?=\\s|$)",push:[{token:"comment.block.forth",regex:"(?:^|\\s)\\*\\)(?=\\s|$)",next:"pop"},{defaultToken:"comment.block.forth"}],comment:"multiline comments for iForth"},{token:"comment.block.documentation.forth",regex:"\\bDOC\\b",caseInsensitive:!0,push:[{token:"comment.block.documentation.forth",regex:"\\bENDDOC\\b",caseInsensitive:!0,next:"pop"},{defaultToken:"comment.block.documentation.forth"}],comment:"documentation comments for iForth"},{token:"comment.line.parentheses.forth",regex:"(?:^|\\s)\\.?\\( [^)]*\\)",comment:"ANSI line comment"}],"#constant":[{token:"constant.language.forth",regex:"(?:^|\\s)(?:TRUE|FALSE|BL|PI|CELL|C/L|R/O|W/O|R/W)(?=\\s|$)",caseInsensitive:!0},{token:"constant.numeric.forth",regex:"(?:^|\\s)[$#%]?[-+]?[0-9]+(?:\\.[0-9]*e-?[0-9]+|\\.?[0-9a-fA-F]*)(?=\\s|$)"},{token:"constant.character.forth",regex:"(?:^|\\s)(?:[&^]\\S|(?:\"|')\\S(?:\"|'))(?=\\s|$)"}],"#forth":[{include:"#constant"},{include:"#comment"},{include:"#string"},{include:"#word"},{include:"#variable"},{include:"#storage"},{include:"#word-def"}],"#storage":[{token:"storage.type.forth",regex:"(?:^|\\s)(?:2CONSTANT|2VARIABLE|ALIAS|CONSTANT|CREATE-INTERPRET/COMPILE[:]?|CREATE|DEFER|FCONSTANT|FIELD|FVARIABLE|USER|VALUE|VARIABLE|VOCABULARY)(?=\\s|$)",caseInsensitive:!0}],"#string":[{token:"string.quoted.double.forth",regex:'(ABORT" |BREAK" |\\." |C" |0"|S\\\\?" )([^"]+")',caseInsensitive:!0},{token:"string.unquoted.forth",regex:"(?:INCLUDE|NEEDS|REQUIRE|USE)[ ]\\S+(?=\\s|$)",caseInsensitive:!0}],"#variable":[{token:"variable.language.forth",regex:"\\b(?:I|J)\\b",caseInsensitive:!0}],"#word":[{token:"keyword.control.immediate.forth",regex:"(?:^|\\s)\\[(?:\\?DO|\\+LOOP|AGAIN|BEGIN|DEFINED|DO|ELSE|ENDIF|FOR|IF|IFDEF|IFUNDEF|LOOP|NEXT|REPEAT|THEN|UNTIL|WHILE)\\](?=\\s|$)",caseInsensitive:!0},{token:"keyword.other.immediate.forth",regex:"(?:^|\\s)(?:COMPILE-ONLY|IMMEDIATE|IS|RESTRICT|TO|WHAT'S|])(?=\\s|$)",caseInsensitive:!0},{token:"keyword.control.compile-only.forth",regex:'(?:^|\\s)(?:-DO|\\-LOOP|\\?DO|\\?LEAVE|\\+DO|\\+LOOP|ABORT\\"|AGAIN|AHEAD|BEGIN|CASE|DO|ELSE|ENDCASE|ENDIF|ENDOF|ENDTRY\\-IFERROR|ENDTRY|FOR|IF|IFERROR|LEAVE|LOOP|NEXT|RECOVER|REPEAT|RESTORE|THEN|TRY|U\\-DO|U\\+DO|UNTIL|WHILE)(?=\\s|$)',caseInsensitive:!0},{token:"keyword.other.compile-only.forth",regex:"(?:^|\\s)(?:\\?DUP-0=-IF|\\?DUP-IF|\\)|\\[|\\['\\]|\\[CHAR\\]|\\[COMPILE\\]|\\[IS\\]|\\[TO\\]|<COMPILATION|<INTERPRETATION|ASSERT\\(|ASSERT0\\(|ASSERT1\\(|ASSERT2\\(|ASSERT3\\(|COMPILATION>|DEFERS|DOES>|INTERPRETATION>|OF|POSTPONE)(?=\\s|$)",caseInsensitive:!0},{token:"keyword.other.non-immediate.forth",regex:"(?:^|\\s)(?:'|<IS>|<TO>|CHAR|END-STRUCT|INCLUDE[D]?|LOAD|NEEDS|REQUIRE[D]?|REVISION|SEE|STRUCT|THRU|USE)(?=\\s|$)",caseInsensitive:!0},{token:"keyword.other.warning.forth",regex:'(?:^|\\s)(?:~~|BREAK:|BREAK"|DBG)(?=\\s|$)',caseInsensitive:!0}],"#word-def":[{token:["keyword.other.compile-only.forth","keyword.other.compile-only.forth","meta.block.forth","entity.name.function.forth"],regex:"(:NONAME)|(^:|\\s:)(\\s)(\\S+)(?=\\s|$)",caseInsensitive:!0,push:[{token:"keyword.other.compile-only.forth",regex:";(?:CODE)?",caseInsensitive:!0,next:"pop"},{include:"#constant"},{include:"#comment"},{include:"#string"},{include:"#word"},{include:"#variable"},{include:"#storage"},{defaultToken:"meta.block.forth"}]}]},this.normalizeRules()};s.metaData={fileTypes:["frt","fs","ldr"],foldingStartMarker:"/\\*\\*|\\{\\s*$",foldingStopMarker:"\\*\\*/|^\\s*\\}",keyEquivalent:"^~F",name:"Forth",scopeName:"source.forth"},r.inherits(s,i),t.ForthHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/forth",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/forth_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./forth_highlight_rules").ForthHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="--",this.blockComment=null,this.$id="ace/mode/forth"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-fortran.js b/library/ace/mode-fortran.js
new file mode 100644
index 000000000..ab986dea4
--- /dev/null
+++ b/library/ace/mode-fortran.js
@@ -0,0 +1 @@
+ace.define("ace/mode/fortran_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="call|case|contains|continue|cycle|do|else|elseif|end|enddo|endif|function|if|implicit|in|include|inout|intent|module|none|only|out|print|program|return|select|status|stop|subroutine|return|then|use|while|write|CALL|CASE|CONTAINS|CONTINUE|CYCLE|DO|ELSE|ELSEIF|END|ENDDO|ENDIF|FUNCTION|IF|IMPLICIT|IN|INCLUDE|INOUT|INTENT|MODULE|NONE|ONLY|OUT|PRINT|PROGRAM|RETURN|SELECT|STATUS|STOP|SUBROUTINE|RETURN|THEN|USE|WHILE|WRITE",t="and|or|not|eq|ne|gt|ge|lt|le|AND|OR|NOT|EQ|NE|GT|GE|LT|LE",n="true|false|TRUE|FALSE",r="abs|achar|acos|acosh|adjustl|adjustr|aimag|aint|all|allocate|anint|any|asin|asinh|associated|atan|atan2|atanh|bessel_j0|bessel_j1|bessel_jn|bessel_y0|bessel_y1|bessel_yn|bge|bgt|bit_size|ble|blt|btest|ceiling|char|cmplx|conjg|cos|cosh|count|cpu_time|cshift|date_and_time|dble|deallocate|digits|dim|dot_product|dprod|dshiftl|dshiftr|dsqrt|eoshift|epsilon|erf|erfc|erfc_scaled|exp|float|floor|format|fraction|gamma|input|len|lge|lgt|lle|llt|log|log10|maskl|maskr|matmul|max|maxloc|maxval|merge|min|minloc|minval|mod|modulo|nint|not|norm2|null|nullify|pack|parity|popcnt|poppar|precision|present|product|radix|random_number|random_seed|range|repeat|reshape|round|rrspacing|same_type_as|scale|scan|selected_char_kind|selected_int_kind|selected_real_kind|set_exponent|shape|shifta|shiftl|shiftr|sign|sin|sinh|size|sngl|spacing|spread|sqrt|sum|system_clock|tan|tanh|tiny|trailz|transfer|transpose|trim|ubound|unpack|verify|ABS|ACHAR|ACOS|ACOSH|ADJUSTL|ADJUSTR|AIMAG|AINT|ALL|ALLOCATE|ANINT|ANY|ASIN|ASINH|ASSOCIATED|ATAN|ATAN2|ATANH|BESSEL_J0|BESSEL_J1|BESSEL_JN|BESSEL_Y0|BESSEL_Y1|BESSEL_YN|BGE|BGT|BIT_SIZE|BLE|BLT|BTEST|CEILING|CHAR|CMPLX|CONJG|COS|COSH|COUNT|CPU_TIME|CSHIFT|DATE_AND_TIME|DBLE|DEALLOCATE|DIGITS|DIM|DOT_PRODUCT|DPROD|DSHIFTL|DSHIFTR|DSQRT|EOSHIFT|EPSILON|ERF|ERFC|ERFC_SCALED|EXP|FLOAT|FLOOR|FORMAT|FRACTION|GAMMA|INPUT|LEN|LGE|LGT|LLE|LLT|LOG|LOG10|MASKL|MASKR|MATMUL|MAX|MAXLOC|MAXVAL|MERGE|MIN|MINLOC|MINVAL|MOD|MODULO|NINT|NOT|NORM2|NULL|NULLIFY|PACK|PARITY|POPCNT|POPPAR|PRECISION|PRESENT|PRODUCT|RADIX|RANDOM_NUMBER|RANDOM_SEED|RANGE|REPEAT|RESHAPE|ROUND|RRSPACING|SAME_TYPE_AS|SCALE|SCAN|SELECTED_CHAR_KIND|SELECTED_INT_KIND|SELECTED_REAL_KIND|SET_EXPONENT|SHAPE|SHIFTA|SHIFTL|SHIFTR|SIGN|SIN|SINH|SIZE|SNGL|SPACING|SPREAD|SQRT|SUM|SYSTEM_CLOCK|TAN|TANH|TINY|TRAILZ|TRANSFER|TRANSPOSE|TRIM|UBOUND|UNPACK|VERIFY",i="logical|character|integer|real|type|LOGICAL|CHARACTER|INTEGER|REAL|TYPE",s="allocatable|dimension|intent|parameter|pointer|target|private|public|ALLOCATABLE|DIMENSION|INTENT|PARAMETER|POINTER|TARGET|PRIVATE|PUBLIC",o=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":r,"constant.language":n,keyword:e,"keyword.operator":t,"storage.type":i,"storage.modifier":s},"identifier"),u="(?:r|u|ur|R|U|UR|Ur|uR)?",a="(?:(?:[1-9]\\d*)|(?:0))",f="(?:0[oO]?[0-7]+)",l="(?:0[xX][\\dA-Fa-f]+)",c="(?:0[bB][01]+)",h="(?:"+a+"|"+f+"|"+l+"|"+c+")",p="(?:[eE][+-]?\\d+)",d="(?:\\.\\d+)",v="(?:\\d+)",m="(?:(?:"+v+"?"+d+")|(?:"+v+"\\.))",g="(?:(?:"+m+"|"+v+")"+p+")",y="(?:"+g+"|"+m+")",b="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";this.$rules={start:[{token:"comment",regex:"!.*$"},{token:"string",regex:u+'"{3}',next:"qqstring3"},{token:"string",regex:u+'"(?=.)',next:"qqstring"},{token:"string",regex:u+"'{3}",next:"qstring3"},{token:"string",regex:u+"'(?=.)",next:"qstring"},{token:"constant.numeric",regex:"(?:"+y+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:y},{token:"constant.numeric",regex:h+"[lL]\\b"},{token:"constant.numeric",regex:h+"\\b"},{token:"keyword",regex:"#\\s*(?:include|import|define|undef|INCLUDE|IMPORT|DEFINE|UNDEF)\\b"},{token:"keyword",regex:"#\\s*(?:endif|ifdef|else|elseif|ifndef|ENDIF|IFDEF|ELSE|ELSEIF|IFNDEF)\\b"},{token:o,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+"}],qqstring3:[{token:"constant.language.escape",regex:b},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qstring3:[{token:"constant.language.escape",regex:b},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:b},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:b},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.FortranHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/fortran",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/fortran_highlight_rules","ace/mode/folding/cstyle","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./fortran_highlight_rules").FortranHighlightRules,o=e("./folding/cstyle").FoldMode,u=e("../range").Range,a=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(a,i),function(){this.lineCommentStart="!",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[\:]\s*$/);o&&(r+=n)}return r};var e={"return":1,"break":1,"continue":1,RETURN:1,BREAK:1,CONTINUE:1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new u(n,r.length-i.length,n,r.length))},this.$id="ace/mode/fortran"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-ftl.js b/library/ace/mode-ftl.js
new file mode 100644
index 000000000..f97f42baf
--- /dev/null
+++ b/library/ace/mode-ftl.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/ftl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="\\?|substring|cap_first|uncap_first|capitalize|chop_linebreak|date|time|datetime|ends_with|html|groups|index_of|j_string|js_string|json_string|last_index_of|length|lower_case|left_pad|right_pad|contains|matches|number|replace|rtf|url|split|starts_with|string|trim|upper_case|word_list|xhtml|xml",t="c|round|floor|ceiling",n="iso_[a-z_]+",r="first|last|seq_contains|seq_index_of|seq_last_index_of|reverse|size|sort|sort_by|chunk",i="keys|values",s="children|parent|root|ancestors|node_name|node_type|node_namespace",o="byte|double|float|int|long|short|number_to_date|number_to_time|number_to_datetime|eval|has_content|interpret|is_[a-z_]+|namespacenew",u=e+t+n+r+i+s+o,a="default|exists|if_exists|web_safe",f="data_model|error|globals|lang|locale|locals|main|namespace|node|current_node|now|output_encoding|template_name|url_escaping_charset|vars|version",l="gt|gte|lt|lte|as|in|using",c="true|false",h="encoding|parse|locale|number_format|date_format|time_format|datetime_format|time_zone|url_escaping_charset|classic_compatible|strip_whitespace|strip_text|strict_syntax|ns_prefixes|attributes";this.$rules={start:[{token:"constant.character.entity",regex:/&[^;]+;/},{token:"support.function",regex:"\\?("+u+")"},{token:"support.function.deprecated",regex:"\\?("+a+")"},{token:"language.variable",regex:"\\.(?:"+f+")"},{token:"constant.language",regex:"\\b("+c+")\\b"},{token:"keyword.operator",regex:"\\b(?:"+l+")\\b"},{token:"entity.other.attribute-name",regex:h},{token:"string",regex:/['"]/,next:"qstring"},{token:function(e){return e.match("^[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?$")?"constant.numeric":"variable"},regex:/[\w.+\-]+/},{token:"keyword.operator",regex:"!|\\.|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^="},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qstring:[{token:"constant.character.escape",regex:'\\\\[nrtvef\\\\"$]'},{token:"string",regex:/['"]/,next:"start"},{defaultToken:"string"}]}};r.inherits(o,s);var u=function(){i.call(this);var e="assign|attempt|break|case|compress|default|elseif|else|escape|fallback|function|flush|ftl|global|if|import|include|list|local|lt|macro|nested|noescape|noparse|nt|recover|recurse|return|rt|setting|stop|switch|t|visit",t=[{token:"comment",regex:"<#--",next:"ftl-dcomment"},{token:"string.interpolated",regex:"\\${",push:"ftl-start"},{token:"keyword.function",regex:"</?#("+e+")",push:"ftl-start"},{token:"keyword.other",regex:"</?@[a-zA-Z\\.]+",push:"ftl-start"}],n=[{token:"keyword",regex:"/?>",next:"pop"},{token:"string.interpolated",regex:"}",next:"pop"}];for(var r in this.$rules)this.$rules[r].unshift.apply(this.$rules[r],t);this.embedRules(o,"ftl-",n,["start"]),this.addRules({"ftl-dcomment":[{token:"comment",regex:".*?-->",next:"pop"},{token:"comment",regex:".+"}]}),this.normalizeRules()};r.inherits(u,i),t.FtlHighlightRules=u}),ace.define("ace/mode/ftl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ftl_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ftl_highlight_rules").FtlHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.$id="ace/mode/ftl"}.call(o.prototype),t.Mode=o}) \ No newline at end of file
diff --git a/library/ace/mode-gcode.js b/library/ace/mode-gcode.js
new file mode 100644
index 000000000..3ea31a10d
--- /dev/null
+++ b/library/ace/mode-gcode.js
@@ -0,0 +1 @@
+ace.define("ace/mode/gcode_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="IF|DO|WHILE|ENDWHILE|CALL|ENDIF|SUB|ENDSUB|GOTO|REPEAT|ENDREPEAT|CALL",t="PI",n="ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"\\(.*\\)"},{token:"comment",regex:"([N])([0-9]+)"},{token:"string",regex:"([G])([0-9]+\\.?[0-9]?)"},{token:"string",regex:"([M])([0-9]+\\.?[0-9]?)"},{token:"constant.numeric",regex:"([-+]?([0-9]*\\.?[0-9]+\\.?))|(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)"},{token:r,regex:"[A-Z]"},{token:"keyword.operator",regex:"EQ|LT|GT|NE|GE|LE|OR|XOR"},{token:"paren.lparen",regex:"[\\[]"},{token:"paren.rparen",regex:"[\\]]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.GcodeHighlightRules=s}),ace.define("ace/mode/gcode",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gcode_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./gcode_highlight_rules").GcodeHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.$id="ace/mode/gcode"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-gherkin.js b/library/ace/mode-gherkin.js
new file mode 100644
index 000000000..1e7cb1423
--- /dev/null
+++ b/library/ace/mode-gherkin.js
@@ -0,0 +1 @@
+ace.define("ace/mode/gherkin_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})",o=function(){var e=[{name:"en",labels:"Feature|Background|Scenario(?: Outline)?|Examples",keywords:"Given|When|Then|And|But"}],t=e.map(function(e){return e.labels}).join("|"),n=e.map(function(e){return e.keywords}).join("|");this.$rules={start:[{token:"constant.numeric",regex:"(?:(?:[1-9]\\d*)|(?:0))"},{token:"comment",regex:"#.*$"},{token:"keyword",regex:"(?:"+t+"):|(?:"+n+")\\b"},{token:"keyword",regex:"\\*"},{token:"string",regex:'"{3}',next:"qqstring3"},{token:"string",regex:'"',next:"qqstring"},{token:"text",regex:"^\\s*(?=@[\\w])",next:[{token:"text",regex:"\\s+"},{token:"variable.parameter",regex:"@[\\w]+"},{token:"empty",regex:"",next:"start"}]},{token:"comment",regex:"<[^>]+>"},{token:"comment",regex:"\\|(?=.)",next:"table-item"},{token:"comment",regex:"\\|$",next:"start"}],qqstring3:[{token:"constant.language.escape",regex:s},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],"table-item":[{token:"comment",regex:/$/,next:"start"},{token:"comment",regex:/\|/},{token:"string",regex:/\\./},{defaultToken:"string"}]},this.normalizeRules()};r.inherits(o,i),t.GherkinHighlightRules=o}),ace.define("ace/mode/gherkin",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gherkin_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("./gherkin_highlight_rules").GherkinHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart="#",this.$id="ace/mode/gherkin",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=" ",s=this.getTokenizer().getLineTokens(t,e),o=s.tokens;return console.log(e),t.match("[ ]*\\|")&&(r+="| "),o.length&&o[o.length-1].type=="comment"?r:(e=="start"&&(t.match("Scenario:|Feature:|Scenario Outline:|Background:")?r+=i:t.match("(Given|Then).+(:)$|Examples:")?r+=i:t.match("\\*.+")&&(r+="* ")),r)}}.call(o.prototype),t.Mode=o}) \ No newline at end of file
diff --git a/library/ace/mode-gitignore.js b/library/ace/mode-gitignore.js
new file mode 100644
index 000000000..b09cc2ed8
--- /dev/null
+++ b/library/ace/mode-gitignore.js
@@ -0,0 +1 @@
+ace.define("ace/mode/gitignore_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:/^\s*#.*$/},{token:"keyword",regex:/^\s*!.*$/}]},this.normalizeRules()};s.metaData={fileTypes:["gitignore"],name:"Gitignore"},r.inherits(s,i),t.GitignoreHighlightRules=s}),ace.define("ace/mode/gitignore",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gitignore_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./gitignore_highlight_rules").GitignoreHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart="#",this.$id="ace/mode/gitignore"}.call(o.prototype),t.Mode=o}) \ No newline at end of file
diff --git a/library/ace/mode-glsl.js b/library/ace/mode-glsl.js
new file mode 100644
index 000000000..55c31adfd
--- /dev/null
+++ b/library/ace/mode-glsl.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",u=function(){var e="break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",t="asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",n="const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",r="and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eqconst_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",s="NULL|true|false|TRUE|FALSE|nullptr",u=this.$keywords=this.createKeywordMapper({"keyword.control":e,"storage.type":t,"storage.modifier":n,"keyword.operator":r,"variable.language":"this","constant.language":s},"identifier"),a="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Zd\\$_\u00a1-\uffff]*\\b",f=/\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source;this.$rules={start:[{token:"comment",regex:"//$",next:"start"},{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:"'(?:"+f+"|.)'"},{token:"string.start",regex:'"',stateName:"qqstring",next:[{token:"string",regex:/\\\s*$/,next:"qqstring"},{token:"constant.language.escape",regex:f},{token:"constant.language.escape",regex:/%[^'"\\]/},{token:"string.end",regex:'"|$',next:"start"},{defaultToken:"string"}]},{token:"string.start",regex:'R"\\(',stateName:"rawString",next:[{token:"string.end",regex:'\\)"',next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:"support.function.C99.c",regex:o},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"},{token:"keyword.operator",regex:/--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(u,s),t.c_cppHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c_cpp_highlight_rules").c_cppHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c_cpp"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/glsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/c_cpp_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./c_cpp_highlight_rules").c_cppHighlightRules,s=function(){var e="attribute|const|uniform|varying|break|continue|do|for|while|if|else|in|out|inout|float|int|void|bool|true|false|lowp|mediump|highp|precision|invariant|discard|return|mat2|mat3|mat4|vec2|vec3|vec4|ivec2|ivec3|ivec4|bvec2|bvec3|bvec4|sampler2D|samplerCube|struct",t="radians|degrees|sin|cos|tan|asin|acos|atan|pow|exp|log|exp2|log2|sqrt|inversesqrt|abs|sign|floor|ceil|fract|mod|min|max|clamp|mix|step|smoothstep|length|distance|dot|cross|normalize|faceforward|reflect|refract|matrixCompMult|lessThan|lessThanEqual|greaterThan|greaterThanEqual|equal|notEqual|any|all|not|dFdx|dFdy|fwidth|texture2D|texture2DProj|texture2DLod|texture2DProjLod|textureCube|textureCubeLod|gl_MaxVertexAttribs|gl_MaxVertexUniformVectors|gl_MaxVaryingVectors|gl_MaxVertexTextureImageUnits|gl_MaxCombinedTextureImageUnits|gl_MaxTextureImageUnits|gl_MaxFragmentUniformVectors|gl_MaxDrawBuffers|gl_DepthRangeParameters|gl_DepthRange|gl_Position|gl_PointSize|gl_FragCoord|gl_FrontFacing|gl_PointCoord|gl_FragColor|gl_FragData",n=this.createKeywordMapper({"variable.language":"this",keyword:e,"constant.language":t},"identifier");this.$rules=(new i).$rules,this.$rules.start.forEach(function(e){typeof e.token=="function"&&(e.token=n)})};r.inherits(s,i),t.glslHighlightRules=s}),ace.define("ace/mode/glsl",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/glsl_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./c_cpp").Mode,s=e("./glsl_highlight_rules").glslHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.$id="ace/mode/glsl"}.call(l.prototype),t.Mode=l}) \ No newline at end of file
diff --git a/library/ace/mode-gobstones.js b/library/ace/mode-gobstones.js
new file mode 100644
index 000000000..0c54acc55
--- /dev/null
+++ b/library/ace/mode-gobstones.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/gobstones_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="program|procedure|function|interactive|if|then|else|switch|repeat|while|foreach|in|not|div|mod|Skip|return",t="False|True",n="Poner|Sacar|Mover|IrAlBorde|VaciarTablero|nroBolitas|hayBolitas|puedeMover|siguiente|previo|opuesto|minBool|maxBool|minDir|maxDir|minColor|maxColor",r="Verde|Rojo|Azul|Negro|Norte|Sur|Este|Oeste",s=this.createKeywordMapper({keyword:e,"constant.language":t,"support.function":n,"support.type":r},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\-\\-.*$"},{token:"comment",regex:"#.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/},{token:"constant.language.boolean",regex:"(?:True|False)\\b"},{token:"keyword.operator",regex:":=|\\.\\.|,|;|\\|\\||\\/\\/|\\+|\\-|\\^|\\*|>|<|>=|=>|==|&&"},{token:s,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.GobstonesHighlightRules=o}),ace.define("ace/mode/gobstones",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/gobstones_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./gobstones_highlight_rules").GobstonesHighlightRules,o=function(){i.call(this),this.HighlightRules=s};r.inherits(o,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/gobstones"}.call(o.prototype),t.Mode=o}) \ No newline at end of file
diff --git a/library/ace/mode-golang.js b/library/ace/mode-golang.js
new file mode 100644
index 000000000..d891b941d
--- /dev/null
+++ b/library/ace/mode-golang.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/golang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="else|break|case|return|goto|if|const|select|continue|struct|default|switch|for|range|func|import|package|chan|defer|fallthrough|go|interface|map|range|select|type|var",t="string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error",n="new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append",r="nil|true|false|iota",s=this.createKeywordMapper({keyword:e,"constant.language":r,"support.function":n,"support.type":t},""),o="\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'\"\\\\])".replace(/\\h/g,"[a-fA-F\\d]");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"string",regex:/"(?:[^"\\]|\\.)*?"/},{token:"string",regex:"`",next:"bqstring"},{token:"constant.numeric",regex:"'(?:[^\\'\ud800-\udbff]|[\ud800-\udbff][\udc00-\udfff]|"+o.replace('"',"")+")'"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:["keyword","text","entity.name.function"],regex:"(func)(\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\b"},{token:function(e){return e[e.length-1]=="("?[{type:s(e.slice(0,-1))||"support.function",value:e.slice(0,-1)},{type:"paren.lparen",value:e.slice(-1)}]:s(e)||"identifier"},regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^="},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],bqstring:[{token:"string",regex:"`",next:"start"},{defaultToken:"string"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.GolangHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/golang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/golang_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("./golang_highlight_rules").GolangHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.foldingRules=new a,this.$behaviour=new u};r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/golang"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-groovy.js b/library/ace/mode-groovy.js
new file mode 100644
index 000000000..4293b5d2b
--- /dev/null
+++ b/library/ace/mode-groovy.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/groovy_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="assert|with|abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|def|float|native|super|while",t="null|Infinity|NaN|undefined",n="AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object",r=this.createKeywordMapper({"variable.language":"this",keyword:e,"support.function":n,"constant.language":t},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'"""',next:"qqstring"},{token:"string",regex:"'''",next:"qstring"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\?:|\\?\\.|\\*\\.|<=>|=~|==~|\\.@|\\*\\.@|\\.&|as|in|is|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"constant.language.escape",regex:/\\(?:u[0-9A-Fa-f]{4}|.|$)/},{token:"constant.language.escape",regex:/\$[\w\d]+/},{token:"constant.language.escape",regex:/\$\{[^"\}]+\}?/},{token:"string",regex:'"{3,5}',next:"start"},{token:"string",regex:".+?"}],qstring:[{token:"constant.language.escape",regex:/\\(?:u[0-9A-Fa-f]{4}|.|$)/},{token:"string",regex:"'{3,5}",next:"start"},{token:"string",regex:".+?"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.GroovyHighlightRules=o}),ace.define("ace/mode/groovy",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/groovy_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./groovy_highlight_rules").GroovyHighlightRules,o=function(){i.call(this),this.HighlightRules=s};r.inherits(o,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/groovy"}.call(o.prototype),t.Mode=o}) \ No newline at end of file
diff --git a/library/ace/mode-haml.js b/library/ace/mode-haml.js
new file mode 100644
index 000000000..421d91dc1
--- /dev/null
+++ b/library/ace/mode-haml.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.constantOtherSymbol={token:"constant.other.symbol.ruby",regex:"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"},o=t.qString={token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},u=t.qqString={token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},a=t.tString={token:"string",regex:"[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"},f=t.constantNumericHex={token:"constant.numeric",regex:"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"},l=t.constantNumericFloat={token:"constant.numeric",regex:"[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b"},c=function(){var e="abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many",t="alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield",n="true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING",r="$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",i=this.$keywords=this.createKeywordMapper({keyword:t,"constant.language":n,"variable.language":r,"support.function":e,"invalid.deprecated":"debugger"},"identifier");this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"comment",regex:"^=begin(?:$|\\s.*$)",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},[{regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren.lparen";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.start",regex:/"/,push:[{token:"constant.language.escape",regex:/\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/},{token:"paren.start",regex:/\#{/,push:"start"},{token:"string.end",regex:/"/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/`/,push:[{token:"constant.language.escape",regex:/\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/},{token:"paren.start",regex:/\#{/,push:"start"},{token:"string.end",regex:/`/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/'/,push:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string.end",regex:/'/,next:"pop"},{defaultToken:"string"}]}],{token:"text",regex:"::"},{token:"variable.instance",regex:"@{1,2}[a-zA-Z_\\d]+"},{token:"support.class",regex:"[A-Z][a-zA-Z_\\d]+"},s,f,l,{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"punctuation.separator.key-value",regex:"=>"},{stateName:"heredoc",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[3]),[{type:"constant",value:i[1]},{type:"string",value:i[2]},{type:"support.class",value:i[3]},{type:"string",value:i[4]}]},regex:"(<<-?)(['\"`]?)([\\w]+)(['\"`]?)",rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:"string.character",regex:"\\B\\?."},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"^=end(?:$|\\s.*$)",next:"start"},{token:"comment",regex:".+"}]},this.normalizeRules()};r.inherits(c,i),t.RubyHighlightRules=c}),ace.define("ace/mode/haml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/ruby_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./ruby_highlight_rules"),o=s.RubyHighlightRules,u=function(){i.call(this),this.$rules.start.unshift({token:"punctuation.section.comment",regex:/^\s*\/.*/},{token:"string.quoted.double",regex:"==.+?=="},{token:"keyword.other.doctype",regex:"^!!!\\s*(?:[a-zA-Z0-9-_]+)?"},s.qString,s.qqString,s.tString,{token:"character.escape.haml",regex:"^\\s*\\\\."},{token:"text",regex:/^\s*/,next:"tag_single"},s.constantNumericHex,s.constantNumericFloat,s.constantOtherSymbol,{token:"text",regex:"=|-|~",next:"embedded_ruby"}),this.$rules.tag_single=[{token:"meta.tag.haml",regex:/(%[\w:\-]+)/},{token:"keyword.attribute-name.class.haml",regex:"\\.[\\w-]+"},{token:"keyword.attribute-name.id.haml",regex:"#[\\w-]+"},{token:"punctuation.section",regex:"\\{",next:"section"},s.constantOtherSymbol,{token:"text",regex:/\s/,next:"start"},{token:"empty",regex:"$|(?!\\.|#|\\{|\\[|=|-|~|\\/)",next:"start"}],this.$rules.section=[s.constantOtherSymbol,s.qString,s.qqString,s.tString,s.constantNumericHex,s.constantNumericFloat,{token:"punctuation.section",regex:"\\}",next:"start"}],this.$rules.embedded_ruby=[s.constantNumericHex,s.constantNumericFloat,{token:"support.class",regex:"[A-Z][a-zA-Z_\\d]+"},{token:(new o).getKeywords(),regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:["keyword","text","text"],regex:"(?:do|\\{)(?: \\|[^|]+\\|)?$",next:"start"},{token:["text"],regex:"^$",next:"start"},{token:["text"],regex:"^(?!.*\\|\\s*$)",next:"start"}],this.normalizeRules()};r.inherits(u,i),t.HamlHighlightRules=u}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/haml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haml_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./haml_highlight_rules").HamlHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.$id="ace/mode/haml"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-handlebars.js b/library/ace/mode-handlebars.js
new file mode 100644
index 000000000..80c0f0392
--- /dev/null
+++ b/library/ace/mode-handlebars.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[A-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/handlebars_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";function s(e,t){return t.splice(0,3),t.shift()||"start"}var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,o=function(){i.call(this);var e={regex:"(?={{)",push:"handlebars"};for(var t in this.$rules)this.$rules[t].unshift(e);this.$rules.handlebars=[{token:"comment.start",regex:"{{!--",push:[{token:"comment.end",regex:"--}}",next:s},{defaultToken:"comment"}]},{token:"comment.start",regex:"{{!",push:[{token:"comment.end",regex:"}}",next:s},{defaultToken:"comment"}]},{token:"support.function",regex:"{{{",push:[{token:"support.function",regex:"}}}",next:s},{token:"variable.parameter",regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"}]},{token:"storage.type.start",regex:"{{[#\\^/&]?",push:[{token:"storage.type.end",regex:"}}",next:s},{token:"variable.parameter",regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"}]}],this.normalizeRules()};r.inherits(o,i),t.HandlebarsHighlightRules=o}),ace.define("ace/mode/behaviour/html",["require","exports","module","ace/lib/oop","ace/mode/behaviour/xml"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour/xml").XmlBehaviour,s=function(){i.call(this)};r.inherits(s,i),t.HtmlBehaviour=s}),ace.define("ace/mode/handlebars",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/handlebars_highlight_rules","ace/mode/behaviour/html","ace/mode/folding/html"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./handlebars_highlight_rules").HandlebarsHighlightRules,o=e("./behaviour/html").HtmlBehaviour,u=e("./folding/html").FoldMode,a=function(){i.call(this),this.HighlightRules=s,this.$behaviour=new o,this.foldingRules=new u};r.inherits(a,i),function(){this.blockComment={start:"{{!--",end:"--}}"},this.$id="ace/mode/handlebars"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-haskell.js b/library/ace/mode-haskell.js
new file mode 100644
index 000000000..f461d2684
--- /dev/null
+++ b/library/ace/mode-haskell.js
@@ -0,0 +1 @@
+ace.define("ace/mode/haskell_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["punctuation.definition.entity.haskell","keyword.operator.function.infix.haskell","punctuation.definition.entity.haskell"],regex:"(`)([a-zA-Z_']*?)(`)",comment:"In case this regex seems unusual for an infix operator, note that Haskell allows any ordinary function application (elem 4 [1..10]) to be rewritten as an infix expression (4 `elem` [1..10])."},{token:"constant.language.unit.haskell",regex:"\\(\\)"},{token:"constant.language.empty-list.haskell",regex:"\\[\\]"},{token:"keyword.other.haskell",regex:"\\bmodule\\b",push:[{token:"keyword.other.haskell",regex:"\\bwhere\\b",next:"pop"},{include:"#module_name"},{include:"#module_exports"},{token:"invalid",regex:"[a-z]+"},{defaultToken:"meta.declaration.module.haskell"}]},{token:"keyword.other.haskell",regex:"\\bclass\\b",push:[{token:"keyword.other.haskell",regex:"\\bwhere\\b",next:"pop"},{token:"support.class.prelude.haskell",regex:"\\b(?:Monad|Functor|Eq|Ord|Read|Show|Num|(?:Frac|Ra)tional|Enum|Bounded|Real(?:Frac|Float)?|Integral|Floating)\\b"},{token:"entity.other.inherited-class.haskell",regex:"[A-Z][A-Za-z_']*"},{token:"variable.other.generic-type.haskell",regex:"\\b[a-z][a-zA-Z0-9_']*\\b"},{defaultToken:"meta.declaration.class.haskell"}]},{token:"keyword.other.haskell",regex:"\\binstance\\b",push:[{token:"keyword.other.haskell",regex:"\\bwhere\\b|$",next:"pop"},{include:"#type_signature"},{defaultToken:"meta.declaration.instance.haskell"}]},{token:"keyword.other.haskell",regex:"import",push:[{token:"meta.import.haskell",regex:"$|;",next:"pop"},{token:"keyword.other.haskell",regex:"qualified|as|hiding"},{include:"#module_name"},{include:"#module_exports"},{defaultToken:"meta.import.haskell"}]},{token:["keyword.other.haskell","meta.deriving.haskell"],regex:"(deriving)(\\s*\\()",push:[{token:"meta.deriving.haskell",regex:"\\)",next:"pop"},{token:"entity.other.inherited-class.haskell",regex:"\\b[A-Z][a-zA-Z_']*"},{defaultToken:"meta.deriving.haskell"}]},{token:"keyword.other.haskell",regex:"\\b(?:deriving|where|data|type|case|of|let|in|newtype|default)\\b"},{token:"keyword.operator.haskell",regex:"\\binfix[lr]?\\b"},{token:"keyword.control.haskell",regex:"\\b(?:do|if|then|else)\\b"},{token:"constant.numeric.float.haskell",regex:"\\b(?:[0-9]+\\.[0-9]+(?:[eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\\b",comment:"Floats are always decimal"},{token:"constant.numeric.haskell",regex:"\\b(?:[0-9]+|0(?:[xX][0-9a-fA-F]+|[oO][0-7]+))\\b"},{token:["meta.preprocessor.c","punctuation.definition.preprocessor.c","meta.preprocessor.c"],regex:"^(\\s*)(#)(\\s*\\w+)",comment:'In addition to Haskell\'s "native" syntax, GHC permits the C preprocessor to be run on a source file.'},{include:"#pragma"},{token:"punctuation.definition.string.begin.haskell",regex:'"',push:[{token:"punctuation.definition.string.end.haskell",regex:'"',next:"pop"},{token:"constant.character.escape.haskell",regex:"\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])"},{token:"constant.character.escape.octal.haskell",regex:"\\\\o[0-7]+|\\\\x[0-9A-Fa-f]+|\\\\[0-9]+"},{token:"constant.character.escape.control.haskell",regex:"\\^[A-Z@\\[\\]\\\\\\^_]"},{defaultToken:"string.quoted.double.haskell"}]},{token:["punctuation.definition.string.begin.haskell","string.quoted.single.haskell","constant.character.escape.haskell","constant.character.escape.octal.haskell","constant.character.escape.hexadecimal.haskell","constant.character.escape.control.haskell","punctuation.definition.string.end.haskell"],regex:"(')(?:([\\ -\\[\\]-~])|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_]))(')"},{token:["meta.function.type-declaration.haskell","entity.name.function.haskell","meta.function.type-declaration.haskell","keyword.other.double-colon.haskell"],regex:"^(\\s*)([a-z_][a-zA-Z0-9_']*|\\([|!%$+\\-.,=</>]+\\))(\\s*)(::)",push:[{token:"meta.function.type-declaration.haskell",regex:"$",next:"pop"},{include:"#type_signature"},{defaultToken:"meta.function.type-declaration.haskell"}]},{token:"support.constant.haskell",regex:"\\b(?:Just|Nothing|Left|Right|True|False|LT|EQ|GT|\\(\\)|\\[\\])\\b"},{token:"constant.other.haskell",regex:"\\b[A-Z]\\w*\\b"},{include:"#comments"},{token:"support.function.prelude.haskell",regex:"\\b(?:abs|acos|acosh|all|and|any|appendFile|applyM|asTypeOf|asin|asinh|atan|atan2|atanh|break|catch|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\\b"},{include:"#infix_op"},{token:"keyword.operator.haskell",regex:"[|!%$?~+:\\-.=</>\\\\]+",comment:"In case this regex seems overly general, note that Haskell permits the definition of new operators which can be nearly any string of punctuation characters, such as $%^&*."},{token:"punctuation.separator.comma.haskell",regex:","}],"#block_comment":[{token:"punctuation.definition.comment.haskell",regex:"\\{-(?!#)",push:[{include:"#block_comment"},{token:"punctuation.definition.comment.haskell",regex:"-\\}",next:"pop"},{defaultToken:"comment.block.haskell"}]}],"#comments":[{token:"punctuation.definition.comment.haskell",regex:"--.*",push_:[{token:"comment.line.double-dash.haskell",regex:"$",next:"pop"},{defaultToken:"comment.line.double-dash.haskell"}]},{include:"#block_comment"}],"#infix_op":[{token:"entity.name.function.infix.haskell",regex:"\\([|!%$+:\\-.=</>]+\\)|\\(,+\\)"}],"#module_exports":[{token:"meta.declaration.exports.haskell",regex:"\\(",push:[{token:"meta.declaration.exports.haskell",regex:"\\)",next:"pop"},{token:"entity.name.function.haskell",regex:"\\b[a-z][a-zA-Z_']*"},{token:"storage.type.haskell",regex:"\\b[A-Z][A-Za-z_']*"},{token:"punctuation.separator.comma.haskell",regex:","},{include:"#infix_op"},{token:"meta.other.unknown.haskell",regex:"\\(.*?\\)",comment:"So named because I don't know what to call this."},{defaultToken:"meta.declaration.exports.haskell"}]}],"#module_name":[{token:"support.other.module.haskell",regex:"[A-Z][A-Za-z._']*"}],"#pragma":[{token:"meta.preprocessor.haskell",regex:"\\{-#",push:[{token:"meta.preprocessor.haskell",regex:"#-\\}",next:"pop"},{token:"keyword.other.preprocessor.haskell",regex:"\\b(?:LANGUAGE|UNPACK|INLINE)\\b"},{defaultToken:"meta.preprocessor.haskell"}]}],"#type_signature":[{token:["meta.class-constraint.haskell","entity.other.inherited-class.haskell","meta.class-constraint.haskell","variable.other.generic-type.haskell","meta.class-constraint.haskell","keyword.other.big-arrow.haskell"],regex:"(\\(\\s*)([A-Z][A-Za-z]*)(\\s+)([a-z][A-Za-z_']*)(\\)\\s*)(=>)"},{include:"#pragma"},{token:"keyword.other.arrow.haskell",regex:"->"},{token:"keyword.other.big-arrow.haskell",regex:"=>"},{token:"support.type.prelude.haskell",regex:"\\b(?:Int(?:eger)?|Maybe|Either|Bool|Float|Double|Char|String|Ordering|ShowS|ReadS|FilePath|IO(?:Error)?)\\b"},{token:"variable.other.generic-type.haskell",regex:"\\b[a-z][a-zA-Z0-9_']*\\b"},{token:"storage.type.haskell",regex:"\\b[A-Z][a-zA-Z0-9_']*\\b"},{token:"support.constant.unit.haskell",regex:"\\(\\)"},{include:"#comments"}]},this.normalizeRules()};s.metaData={fileTypes:["hs"],keyEquivalent:"^~H",name:"Haskell",scopeName:"source.haskell"},r.inherits(s,i),t.HaskellHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/haskell",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haskell_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./haskell_highlight_rules").HaskellHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="--",this.blockComment=null,this.$id="ace/mode/haskell"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-haxe.js b/library/ace/mode-haxe.js
new file mode 100644
index 000000000..bdcf77028
--- /dev/null
+++ b/library/ace/mode-haxe.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/haxe_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="break|case|cast|catch|class|continue|default|else|enum|extends|for|function|if|implements|import|in|inline|interface|new|override|package|private|public|return|static|super|switch|this|throw|trace|try|typedef|untyped|var|while|Array|Void|Bool|Int|UInt|Float|Dynamic|String|List|Hash|IntHash|Error|Unknown|Type|Std",t="null|true|false",n=this.createKeywordMapper({"variable.language":"this",keyword:e,"constant.language":t},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:n,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({<]"},{token:"paren.rparen",regex:"[\\])}>]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.HaxeHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/haxe",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haxe_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./haxe_highlight_rules").HaxeHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/haxe"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-html.js b/library/ace/mode-html.js
new file mode 100644
index 000000000..ec4be71ac
--- /dev/null
+++ b/library/ace/mode-html.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[A-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}) \ No newline at end of file
diff --git a/library/ace/mode-html_elixir.js b/library/ace/mode-html_elixir.js
new file mode 100644
index 000000000..b24faaec3
--- /dev/null
+++ b/library/ace/mode-html_elixir.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["meta.module.elixir","keyword.control.module.elixir","meta.module.elixir","entity.name.type.module.elixir"],regex:"^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)"},{token:"comment.documentation.heredoc",regex:'@(?:module|type)?doc (?:~[a-z])?"""',push:[{token:"comment.documentation.heredoc",regex:'\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:'@(?:module|type)?doc ~[A-Z]"""',push:[{token:"comment.documentation.heredoc",regex:'\\s*"""',next:"pop"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:"@(?:module|type)?doc (?:~[a-z])?'''",push:[{token:"comment.documentation.heredoc",regex:"\\s*'''",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:"@(?:module|type)?doc ~[A-Z]'''",push:[{token:"comment.documentation.heredoc",regex:"\\s*'''",next:"pop"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.false",regex:"@(?:module|type)?doc false",comment:"@doc false is treated as documentation"},{token:"comment.documentation.string",regex:'@(?:module|type)?doc "',push:[{token:"comment.documentation.string",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.string"}],comment:"@doc with string is treated as documentation"},{token:"keyword.control.elixir",regex:"\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!\\.)\\b(do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])"},{token:"keyword.operator.elixir",regex:"\\b(?:and|not|or|when|xor|in|inlist|inbits)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!\\.)\\b(and|not|or|when|xor|in|inlist|inbits)\\b",comment:" as above, just doesn't need a 'end' and does a logic operation"},{token:"constant.language.elixir",regex:"\\b(?:nil|true|false)\\b(?![?!])"},{token:"variable.language.elixir",regex:"\\b__(?:CALLER|ENV|MODULE|DIR)__\\b(?![?!])"},{token:["punctuation.definition.variable.elixir","variable.other.readwrite.module.elixir"],regex:"(@)([a-zA-Z_]\\w*)"},{token:["punctuation.definition.variable.elixir","variable.other.anonymous.elixir"],regex:"(&)(\\d*)"},{token:"variable.other.constant.elixir",regex:"\\b[A-Z]\\w*\\b"},{token:"constant.numeric.elixir",regex:"\\b(?:0x[\\da-fA-F](?:_?[\\da-fA-F])*|\\d(?:_?\\d)*(?:\\.(?![^[:space:][:digit:]])(?:_?\\d)*)?(?:[eE][-+]?\\d(?:_?\\d)*)?|0b[01]+|0o[0-7]+)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"\\b(0x\\h(?>_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b"},{token:"punctuation.definition.constant.elixir",regex:":'",push:[{token:"punctuation.definition.constant.elixir",regex:"'",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"constant.other.symbol.single-quoted.elixir"}]},{token:"punctuation.definition.constant.elixir",regex:':"',push:[{token:"punctuation.definition.constant.elixir",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"constant.other.symbol.double-quoted.elixir"}]},{token:"punctuation.definition.string.begin.elixir",regex:"(?:''')",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?>''')",push:[{token:"punctuation.definition.string.end.elixir",regex:"^\\s*'''",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"support.function.variable.quoted.single.heredoc.elixir"}],comment:"Single-quoted heredocs"},{token:"punctuation.definition.string.begin.elixir",regex:"'",push:[{token:"punctuation.definition.string.end.elixir",regex:"'",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"support.function.variable.quoted.single.elixir"}],comment:"single quoted string (allows for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'(?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'(?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.heredoc.elixir"}],comment:"Double-quoted heredocs"},{token:"punctuation.definition.string.begin.elixir",regex:'"',push:[{token:"punctuation.definition.string.end.elixir",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.elixir"}],comment:"double quoted string (allows for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'~[a-z](?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'~[a-z](?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.heredoc.elixir"}],comment:"Double-quoted heredocs sigils"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\{",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\}[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\[",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\][a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\<",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\>[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\(",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\)[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z][^\\w]",push:[{token:"punctuation.definition.string.end.elixir",regex:"[^\\w][a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'~[A-Z](?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'~[A-Z](?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"Double-quoted heredocs sigils"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\{",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\}[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\[",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\][a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\<",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\>[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\(",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\)[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z][^\\w]",push:[{token:"punctuation.definition.string.end.elixir",regex:"[^\\w][a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:["punctuation.definition.constant.elixir","constant.other.symbol.elixir"],regex:"(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!:)(:)(?>[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)",comment:"symbols"},{token:"punctuation.definition.constant.elixir",regex:"(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)",comment:"symbols"},{token:["punctuation.definition.comment.elixir","comment.line.number-sign.elixir"],regex:"(#)(.*)"},{token:"constant.numeric.elixir",regex:"\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!\\w)\\?(\\\\(x\\h{1,2}(?!\\h)\\b|[^xMC])|[^\\s\\\\])",comment:'\n matches questionmark-letters.\n\n examples (1st alternation = hex):\n ?\\x1 ?\\x61\n\n examples (2rd alternation = escaped):\n ?\\n ?\\b\n\n examples (3rd alternation = normal):\n ?a ?A ?0 \n ?* ?" ?( \n ?. ?#\n \n the negative lookbehind prevents against matching\n p(42.tainted?)\n '},{token:"keyword.operator.assignment.augmented.elixir",regex:"\\+=|\\-=|\\|\\|=|~=|&&="},{token:"keyword.operator.comparison.elixir",regex:"===?|!==?|<=?|>=?"},{token:"keyword.operator.bitwise.elixir",regex:"\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}"},{token:"keyword.operator.logical.elixir",regex:"!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b",originalRegex:"(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b"},{token:"keyword.operator.arithmetic.elixir",regex:"\\*|\\+|\\-|/"},{token:"keyword.operator.other.elixir",regex:"\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>"},{token:"keyword.operator.assignment.elixir",regex:"="},{token:"punctuation.separator.other.elixir",regex:":"},{token:"punctuation.separator.statement.elixir",regex:"\\;"},{token:"punctuation.separator.object.elixir",regex:","},{token:"punctuation.separator.method.elixir",regex:"\\."},{token:"punctuation.section.scope.elixir",regex:"\\{|\\}"},{token:"punctuation.section.array.elixir",regex:"\\[|\\]"},{token:"punctuation.section.function.elixir",regex:"\\(|\\)"}],"#escaped_char":[{token:"constant.character.escape.elixir",regex:"\\\\(?:x[\\da-fA-F]{1,2}|.)"}],"#interpolated_elixir":[{token:["source.elixir.embedded.source","source.elixir.embedded.source.empty"],regex:"(#\\{)(\\})"},{todo:{token:"punctuation.section.embedded.elixir",regex:"#\\{",push:[{token:"punctuation.section.embedded.elixir",regex:"\\}",next:"pop"},{include:"#nest_curly_and_self"},{include:"$self"},{defaultToken:"source.elixir.embedded.source"}]}}],"#nest_curly_and_self":[{token:"punctuation.section.scope.elixir",regex:"\\{",push:[{token:"punctuation.section.scope.elixir",regex:"\\}",next:"pop"},{include:"#nest_curly_and_self"}]},{include:"$self"}],"#regex_sub":[{include:"#interpolated_elixir"},{include:"#escaped_char"},{token:["punctuation.definition.arbitrary-repitition.elixir","string.regexp.arbitrary-repitition.elixir","string.regexp.arbitrary-repitition.elixir","punctuation.definition.arbitrary-repitition.elixir"],regex:"(\\{)(\\d+)((?:,\\d+)?)(\\})"},{token:"punctuation.definition.character-class.elixir",regex:"\\[(?:\\^?\\])?",push:[{token:"punctuation.definition.character-class.elixir",regex:"\\]",next:"pop"},{include:"#escaped_char"},{defaultToken:"string.regexp.character-class.elixir"}]},{token:"punctuation.definition.group.elixir",regex:"\\(",push:[{token:"punctuation.definition.group.elixir",regex:"\\)",next:"pop"},{include:"#regex_sub"},{defaultToken:"string.regexp.group.elixir"}]},{token:["punctuation.definition.comment.elixir","comment.line.number-sign.elixir"],regex:"(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)",originalRegex:"(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$",comment:"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags."}]},this.normalizeRules()};s.metaData={comment:"Textmate bundle for Elixir Programming Language.",fileTypes:["ex","exs"],firstLineMatch:"^#!/.*\\belixir",foldingStartMarker:"(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$",foldingStopMarker:"^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)",keyEquivalent:"^~E",name:"Elixir",scopeName:"source.elixir"},r.inherits(s,i),t.ElixirHighlightRules=s}),ace.define("ace/mode/html_elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/elixir_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./elixir_highlight_rules").ElixirHighlightRules,o=function(){i.call(this);var e=[{regex:"<%%|%%>",token:"constant.language.escape"},{token:"comment.start.eex",regex:"<%#",push:[{token:"comment.end.eex",regex:"%>",next:"pop",defaultToken:"comment"}]},{token:"support.elixir_tag",regex:"<%+(?!>)[-=]?",push:"elixir-start"}],t=[{token:"support.elixir_tag",regex:"%>",next:"pop"},{token:"comment",regex:"#(?:[^%]|%[^>])*"}];for(var n in this.$rules)this.$rules[n].unshift.apply(this.$rules[n],e);this.embedRules(s,"elixir-",t,["start"]),this.normalizeRules()};r.inherits(o,i),t.HtmlElixirHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[A-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/elixir",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/elixir_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./elixir_highlight_rules").ElixirHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="#",this.$id="ace/mode/elixir"}.call(u.prototype),t.Mode=u}),ace.define("ace/mode/html_elixir",["require","exports","module","ace/lib/oop","ace/mode/html_elixir_highlight_rules","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/elixir"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_elixir_highlight_rules").HtmlElixirHighlightRules,s=e("./html").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./elixir").Mode,f=function(){s.call(this),this.HighlightRules=i,this.createModeDelegates({"js-":o,"css-":u,"elixir-":a})};r.inherits(f,s),function(){this.$id="ace/mode/html_elixir"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-html_ruby.js b/library/ace/mode-html_ruby.js
new file mode 100644
index 000000000..b695b8377
--- /dev/null
+++ b/library/ace/mode-html_ruby.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.constantOtherSymbol={token:"constant.other.symbol.ruby",regex:"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"},o=t.qString={token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},u=t.qqString={token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},a=t.tString={token:"string",regex:"[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"},f=t.constantNumericHex={token:"constant.numeric",regex:"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"},l=t.constantNumericFloat={token:"constant.numeric",regex:"[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b"},c=function(){var e="abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many",t="alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield",n="true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING",r="$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",i=this.$keywords=this.createKeywordMapper({keyword:t,"constant.language":n,"variable.language":r,"support.function":e,"invalid.deprecated":"debugger"},"identifier");this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"comment",regex:"^=begin(?:$|\\s.*$)",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},[{regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren.lparen";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.start",regex:/"/,push:[{token:"constant.language.escape",regex:/\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/},{token:"paren.start",regex:/\#{/,push:"start"},{token:"string.end",regex:/"/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/`/,push:[{token:"constant.language.escape",regex:/\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/},{token:"paren.start",regex:/\#{/,push:"start"},{token:"string.end",regex:/`/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/'/,push:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string.end",regex:/'/,next:"pop"},{defaultToken:"string"}]}],{token:"text",regex:"::"},{token:"variable.instance",regex:"@{1,2}[a-zA-Z_\\d]+"},{token:"support.class",regex:"[A-Z][a-zA-Z_\\d]+"},s,f,l,{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"punctuation.separator.key-value",regex:"=>"},{stateName:"heredoc",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[3]),[{type:"constant",value:i[1]},{type:"string",value:i[2]},{type:"support.class",value:i[3]},{type:"string",value:i[4]}]},regex:"(<<-?)(['\"`]?)([\\w]+)(['\"`]?)",rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:"string.character",regex:"\\B\\?."},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"^=end(?:$|\\s.*$)",next:"start"},{token:"comment",regex:".+"}]},this.normalizeRules()};r.inherits(c,i),t.RubyHighlightRules=c}),ace.define("ace/mode/html_ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/ruby_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./ruby_highlight_rules").RubyHighlightRules,o=function(){i.call(this);var e=[{regex:"<%%|%%>",token:"constant.language.escape"},{token:"comment.start.erb",regex:"<%#",push:[{token:"comment.end.erb",regex:"%>",next:"pop",defaultToken:"comment"}]},{token:"support.ruby_tag",regex:"<%+(?!>)[-=]?",push:"ruby-start"}],t=[{token:"support.ruby_tag",regex:"%>",next:"pop"},{token:"comment",regex:"#(?:[^%]|%[^>])*"}];for(var n in this.$rules)this.$rules[n].unshift.apply(this.$rules[n],e);this.embedRules(s,"ruby-",t,["start"]),this.normalizeRules()};r.inherits(o,i),t.HtmlRubyHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[A-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ruby_highlight_rules").RubyHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/coffee").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/),u=t.match(/^\s*(class|def|module)\s.*$/),a=t.match(/.*do(\s*|\s+\|.*\|\s*)$/),f=t.match(/^\s*(if|else|when)\s*/);if(o||u||a||f)r+=n}return r},this.checkOutdent=function(e,t,n){return/^\s+(end|else)$/.test(t+n)||this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){var r=t.getLine(n);if(/}/.test(r))return this.$outdent.autoOutdent(t,n);var i=this.$getIndent(r),s=t.getLine(n-1),o=this.$getIndent(s),a=t.getTabString();o.length<=i.length&&i.slice(-a.length)==a&&t.remove(new u(n,i.length-a.length,n,i.length))},this.$id="ace/mode/ruby"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/html_ruby",["require","exports","module","ace/lib/oop","ace/mode/html_ruby_highlight_rules","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/ruby"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_ruby_highlight_rules").HtmlRubyHighlightRules,s=e("./html").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./ruby").Mode,f=function(){s.call(this),this.HighlightRules=i,this.createModeDelegates({"js-":o,"css-":u,"ruby-":a})};r.inherits(f,s),function(){this.$id="ace/mode/html_ruby"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-ini.js b/library/ace/mode-ini.js
new file mode 100644
index 000000000..216794b11
--- /dev/null
+++ b/library/ace/mode-ini.js
@@ -0,0 +1 @@
+ace.define("ace/mode/ini_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s="\\\\(?:[\\\\0abtrn;#=:]|x[a-fA-F\\d]{4})",o=function(){this.$rules={start:[{token:"punctuation.definition.comment.ini",regex:"#.*",push_:[{token:"comment.line.number-sign.ini",regex:"$|^",next:"pop"},{defaultToken:"comment.line.number-sign.ini"}]},{token:"punctuation.definition.comment.ini",regex:";.*",push_:[{token:"comment.line.semicolon.ini",regex:"$|^",next:"pop"},{defaultToken:"comment.line.semicolon.ini"}]},{token:["keyword.other.definition.ini","text","punctuation.separator.key-value.ini"],regex:"\\b([a-zA-Z0-9_.-]+)\\b(\\s*)(=)"},{token:["punctuation.definition.entity.ini","constant.section.group-title.ini","punctuation.definition.entity.ini"],regex:"^(\\[)(.*?)(\\])"},{token:"punctuation.definition.string.begin.ini",regex:"'",push:[{token:"punctuation.definition.string.end.ini",regex:"'",next:"pop"},{token:"constant.language.escape",regex:s},{defaultToken:"string.quoted.single.ini"}]},{token:"punctuation.definition.string.begin.ini",regex:'"',push:[{token:"constant.language.escape",regex:s},{token:"punctuation.definition.string.end.ini",regex:'"',next:"pop"},{defaultToken:"string.quoted.double.ini"}]}]},this.normalizeRules()};o.metaData={fileTypes:["ini","conf"],keyEquivalent:"^~I",name:"Ini",scopeName:"source.ini"},r.inherits(o,i),t.IniHighlightRules=o}),ace.define("ace/mode/folding/ini",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/^\s*\[([^\])]*)]\s*(?:$|[;#])/,this.getFoldWidgetRange=function(e,t,n){var r=this.foldingStartMarker,s=e.getLine(n),o=s.match(r);if(!o)return;var u=o[1]+".",a=s.length,f=e.getLength(),l=n,c=n;while(++n<f){s=e.getLine(n);if(/^\s*$/.test(s))continue;o=s.match(r);if(o&&o[1].lastIndexOf(u,0)!==0)break;c=n}if(c>l){var h=e.getLine(c).length;return new i(l,a,c,h)}}}.call(o.prototype)}),ace.define("ace/mode/ini",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ini_highlight_rules","ace/mode/folding/ini"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ini_highlight_rules").IniHighlightRules,o=e("./folding/ini").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart=";",this.blockComment=null,this.$id="ace/mode/ini"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-io.js b/library/ace/mode-io.js
new file mode 100644
index 000000000..89140316c
--- /dev/null
+++ b/library/ace/mode-io.js
@@ -0,0 +1 @@
+ace.define("ace/mode/io_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["text","meta.empty-parenthesis.io"],regex:"(\\()(\\))",comment:"we match this to overload return inside () --Allan; scoping rules for what gets the scope have changed, so we now group the ) instead of the ( -- Rob"},{token:["text","meta.comma-parenthesis.io"],regex:"(\\,)(\\))",comment:"We want to do the same for ,) -- Seckar; same as above -- Rob"},{token:"keyword.control.io",regex:"\\b(?:if|ifTrue|ifFalse|ifTrueIfFalse|for|loop|reverseForeach|foreach|map|continue|break|while|do|return)\\b"},{token:"punctuation.definition.comment.io",regex:"/\\*",push:[{token:"punctuation.definition.comment.io",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.io"}]},{token:"punctuation.definition.comment.io",regex:"//",push:[{token:"comment.line.double-slash.io",regex:"$",next:"pop"},{defaultToken:"comment.line.double-slash.io"}]},{token:"punctuation.definition.comment.io",regex:"#",push:[{token:"comment.line.number-sign.io",regex:"$",next:"pop"},{defaultToken:"comment.line.number-sign.io"}]},{token:"variable.language.io",regex:"\\b(?:self|sender|target|proto|protos|parent)\\b",comment:"I wonder if some of this isn't variable.other.language? --Allan; scoping this as variable.language to match Objective-C's handling of 'self', which is inconsistent with C++'s handling of 'this' but perhaps intentionally so -- Rob"},{token:"keyword.operator.io",regex:"<=|>=|=|:=|\\*|\\||\\|\\||\\+|-|/|&|&&|>|<|\\?|@|@@|\\b(?:and|or)\\b"},{token:"constant.other.io",regex:"\\bGL[\\w_]+\\b"},{token:"support.class.io",regex:"\\b[A-Z](?:\\w+)?\\b"},{token:"support.function.io",regex:"\\b(?:clone|call|init|method|list|vector|block|\\w+(?=\\s*\\())\\b"},{token:"support.function.open-gl.io",regex:"\\bgl(?:u|ut)?[A-Z]\\w+\\b"},{token:"punctuation.definition.string.begin.io",regex:'"""',push:[{token:"punctuation.definition.string.end.io",regex:'"""',next:"pop"},{token:"constant.character.escape.io",regex:"\\\\."},{defaultToken:"string.quoted.triple.io"}]},{token:"punctuation.definition.string.begin.io",regex:'"',push:[{token:"punctuation.definition.string.end.io",regex:'"',next:"pop"},{token:"constant.character.escape.io",regex:"\\\\."},{defaultToken:"string.quoted.double.io"}]},{token:"constant.numeric.io",regex:"\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b"},{token:"variable.other.global.io",regex:"Lobby\\b"},{token:"constant.language.io",regex:"\\b(?:TRUE|true|FALSE|false|NULL|null|Null|Nil|nil|YES|NO)\\b"}]},this.normalizeRules()};s.metaData={fileTypes:["io"],keyEquivalent:"^~I",name:"Io",scopeName:"source.io"},r.inherits(s,i),t.IoHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/io",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/io_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./io_highlight_rules").IoHighlightRules,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=o,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/io"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-jack.js b/library/ace/mode-jack.js
new file mode 100644
index 000000000..c47564a70
--- /dev/null
+++ b/library/ace/mode-jack.js
@@ -0,0 +1 @@
+ace.define("ace/mode/jack_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"string",regex:'"',next:"string2"},{token:"string",regex:"'",next:"string1"},{token:"constant.numeric",regex:"-?0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"(?:0|[-+]?[1-9][0-9]*)\\b"},{token:"constant.binary",regex:"<[0-9A-Fa-f][0-9A-Fa-f](\\s+[0-9A-Fa-f][0-9A-Fa-f])*>"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"constant.language.null",regex:"null\\b"},{token:"storage.type",regex:"(?:Integer|Boolean|Null|String|Buffer|Tuple|List|Object|Function|Coroutine|Form)\\b"},{token:"keyword",regex:"(?:return|abort|vars|for|delete|in|is|escape|exec|split|and|if|elif|else|while)\\b"},{token:"language.builtin",regex:"(?:lines|source|parse|read-stream|interval|substr|parseint|write|print|range|rand|inspect|bind|i-values|i-pairs|i-map|i-filter|i-chunk|i-all\\?|i-any\\?|i-collect|i-zip|i-merge|i-each)\\b"},{token:"comment",regex:"--.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"storage.form",regex:"@[a-z]+"},{token:"constant.other.symbol",regex:":+[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?"},{token:"variable",regex:"[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?"},{token:"keyword.operator",regex:"\\|\\||\\^\\^|&&|!=|==|<=|<|>=|>|\\+|-|\\*|\\/|\\^|\\%|\\#|\\!"},{token:"text",regex:"\\s+"}],string1:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/},{token:"string",regex:"[^'\\\\]+"},{token:"string",regex:"'",next:"start"},{token:"string",regex:"",next:"start"}],string2:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};r.inherits(s,i),t.JackHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/jack",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jack_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./jack_highlight_rules").JackHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.lineCommentStart="--",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*[\{\(\[]\s*$/);i&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/jack"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-jade.js b/library/ace/mode-jade.js
new file mode 100644
index 000000000..bb7335e1f
--- /dev/null
+++ b/library/ace/mode-jade.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules","ace/mode/html_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";function c(e,t){return{token:"support.function",regex:"^\\s*```"+e+"\\s*$",push:t+"start"}}var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./css_highlight_rules").CssHighlightRules,l=function(e){return"(?:[^"+i.escapeRegExp(e)+"\\\\]|\\\\.)*"},h=function(){a.call(this),this.$rules.start.unshift({token:"empty_line",regex:"^$",next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(e){return"markup.heading."+e.length},regex:/^#{1,6}(?=\s*[^ #]|\s+#.)/,next:"header"},c("(?:javascript|js)","jscode-"),c("xml","xmlcode-"),c("html","htmlcode-"),c("css","csscode-"),{token:"support.function",regex:"^\\s*```\\s*\\S*(?:{.*?\\})?\\s*$",next:"githubblock"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"}),this.addRules({basic:[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:'^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'},{token:["text","string","text","constant","text"],regex:"(\\[)("+l("]")+")(\\]s*\\[)("+l("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\[)("+l("]")+")(\\]\\()"+'((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)'+'(\\s*"'+l('"')+'"\\s*)?'+"(\\))"},{token:"string.strong",regex:"([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"},{token:"string.emphasis",regex:"([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"},{token:["text","url","text"],regex:"(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"}],allowBlock:[{token:"support.function",regex:"^ {4}.+",next:"allowBlock"},{token:"empty_line",regex:"^$",next:"allowBlock"},{token:"empty",regex:"",next:"start"}],header:[{regex:"$",next:"start"},{include:"basic"},{defaultToken:"heading"}],"listblock-start":[{token:"support.variable",regex:/(?:\[[ x]\])?/,next:"listblock"}],listblock:[{token:"empty_line",regex:"^$",next:"start"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic",noEscape:!0},{token:"support.function",regex:"^\\s*```\\s*[a-zA-Z]*(?:{.*?\\})?\\s*$",next:"githubblock"},{defaultToken:"list"}],blockquote:[{token:"empty_line",regex:"^\\s*$",next:"start"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{include:"basic",noEscape:!0},{defaultToken:"string.blockquote"}],githubblock:[{token:"support.function",regex:"^\\s*```",next:"start"},{token:"support.function",regex:".+"}]}),this.embedRules(o,"jscode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(a,"htmlcode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(f,"csscode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(u,"xmlcode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.normalizeRules()};r.inherits(h,s),t.MarkdownHighlightRules=h}),ace.define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=i.arrayToMap(function(){var e="-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-".split("|"),t="appearance|background-clip|background-inline-policy|background-origin|background-size|binding|border-bottom-colors|border-left-colors|border-right-colors|border-top-colors|border-end|border-end-color|border-end-style|border-end-width|border-image|border-start|border-start-color|border-start-style|border-start-width|box-align|box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|box-pack|box-sizing|column-count|column-gap|column-width|column-rule|column-rule-width|column-rule-style|column-rule-color|float-edge|font-feature-settings|font-language-override|force-broken-image-icon|image-region|margin-end|margin-start|opacity|outline|outline-color|outline-offset|outline-radius|outline-radius-bottomleft|outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|outline-style|outline-width|padding-end|padding-start|stack-sizing|tab-size|text-blink|text-decoration-color|text-decoration-line|text-decoration-style|transform|transform-origin|transition|transition-delay|transition-duration|transition-property|transition-timing-function|user-focus|user-input|user-modify|user-select|window-shadow|border-radius".split("|"),n="azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|border-bottom-color|border-bottom-style|border-bottom-width|border-bottom|border-collapse|border-color|border-left-color|border-left-style|border-left-width|border-left|border-right-color|border-right-style|border-right-width|border-right|border-spacing|border-style|border-top-color|border-top-style|border-top-width|border-top|border-width|border|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-family|font-size-adjust|font-size|font-stretch|font-style|font-variant|font-weight|font|height|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|marker-offset|margin|marks|max-height|max-width|min-height|min-width|opacity|orphans|outline-color|outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page|pause-after|pause-before|pause|pitch-range|pitch|play-during|position|quotes|richness|right|size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|stress|table-layout|text-align|text-decoration|text-indent|text-shadow|text-transform|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-spacing|z-index".split("|"),r=[];for(var i=0,s=e.length;i<s;i++)Array.prototype.push.apply(r,(e[i]+t.join("|"+e[i])).split("|"));return Array.prototype.push.apply(r,t),Array.prototype.push.apply(r,n),r}()),t=i.arrayToMap("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|scale_color|transparentize|type_of|unit|unitless|unqoute".split("|")),n=i.arrayToMap("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|decimal-leading-zero|decimal|default|disabled|disc|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|inactive|inherit|inline-block|inline|inset|inside|inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|keep-all|left|lighter|line-edge|line-through|line|list-item|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|super|sw-resize|table-footer-group|table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|zero".split("|")),r=i.arrayToMap("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow".split("|")),s=i.arrayToMap("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare".split("|")),o=i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|")),u="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:u+"(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:u},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:function(i){return e.hasOwnProperty(i.toLowerCase())?"support.type":s.hasOwnProperty(i)?"keyword":n.hasOwnProperty(i)?"constant.language":t.hasOwnProperty(i)?"support.function":r.hasOwnProperty(i.toLowerCase())?"support.constant.color":o.hasOwnProperty(i.toLowerCase())?"variable.language":"text"},regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable",regex:"[a-z_\\-$][a-z0-9_\\-$]*\\b"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]}};r.inherits(o,s),t.ScssHighlightRules=o}),ace.define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./css_highlight_rules"),o=function(){var e="@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|or|and|when|not",t=e.split("|"),n=s.supportType.split("|"),r=this.createKeywordMapper({"support.constant":s.supportConstant,keyword:e,"support.constant.color":s.supportConstantColor,"support.constant.fonts":s.supportConstantFonts},"identifier",!0),i="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+i+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:i},{token:["support.function","paren.lparen","string","paren.rparen"],regex:"(url)(\\()(.*)(\\))"},{token:["support.function","paren.lparen"],regex:"(:extend|[a-z0-9_\\-]+)(\\()"},{token:function(e){return t.indexOf(e.toLowerCase())>-1?"keyword":"variable"},regex:"[@\\$][a-z0-9_\\-@\\$]*\\b"},{token:"variable",regex:"[@\\$]\\{[a-z0-9_\\-@\\$]*\\}"},{token:function(e,t){return n.indexOf(e.toLowerCase())>-1?["support.type.property","text"]:["support.type.unknownProperty","text"]},regex:"([a-z0-9-_]+)(\\s*:)"},{token:"keyword",regex:"&"},{token:r,regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z_][a-z0-9-_]*"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|=|!=|-|%|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.normalizeRules()};r.inherits(o,i),t.LessHighlightRules=o}),ace.define("ace/mode/coffee_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function s(){var e="[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*",t="this|throw|then|try|typeof|super|switch|return|break|by|continue|catch|class|in|instanceof|is|isnt|if|else|extends|for|own|finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|or|on|unless|until|and|yes",n="true|false|null|undefined|NaN|Infinity",r="case|const|default|function|var|void|with|enum|export|implements|interface|let|package|private|protected|public|static|yield|__hasProp|slice|bind|indexOf",i="Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray",s="Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|encodeURIComponent|decodeURI|decodeURIComponent|String|",o="window|arguments|prototype|document",u=this.createKeywordMapper({keyword:t,"constant.language":n,"invalid.illegal":r,"language.support.class":i,"language.support.function":s,"variable.language":o},"identifier"),a={token:["paren.lparen","variable.parameter","paren.rparen","text","storage.type"],regex:/(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()\"'\/])*?)(\))(\s*))?([\-=]>)/.source},f=/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/;this.$rules={start:[{token:"constant.numeric",regex:"(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)"},{stateName:"qdoc",token:"string",regex:"'''",next:[{token:"string",regex:"'''",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qqdoc",token:"string",regex:'"""',next:[{token:"string",regex:'"""',next:"start"},{token:"paren.string",regex:"#{",push:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qstring",token:"string",regex:"'",next:[{token:"string",regex:"'",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qqstring",token:"string.start",regex:'"',next:[{token:"string.end",regex:'"',next:"start"},{token:"paren.string",regex:"#{",push:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"js",token:"string",regex:"`",next:[{token:"string",regex:"`",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{regex:"[{}]",onMatch:function(e,t,n){this.next="";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift()||"";if(this.next.indexOf("string")!=-1)return"paren.string"}return"paren"}},{token:"string.regex",regex:"///",next:"heregex"},{token:"string.regex",regex:/(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/},{token:"comment",regex:"###(?!#)",next:"comment"},{token:"comment",regex:"#.*"},{token:["punctuation.operator","text","identifier"],regex:"(\\.)(\\s*)("+r+")"},{token:"punctuation.operator",regex:"\\.{1,3}"},{token:["keyword","text","language.support.class","text","keyword","text","language.support.class"],regex:"(class)(\\s+)("+e+")(?:(\\s+)(extends)(\\s+)("+e+"))?"},{token:["entity.name.function","text","keyword.operator","text"].concat(a.token),regex:"("+e+")(\\s*)([=:])(\\s*)"+a.regex},a,{token:"variable",regex:"@(?:"+e+")?"},{token:u,regex:e},{token:"punctuation.operator",regex:"\\,|\\."},{token:"storage.type",regex:"[\\-=]>"},{token:"keyword.operator",regex:"(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])"},{token:"paren.lparen",regex:"[({[]"},{token:"paren.rparen",regex:"[\\]})]"},{token:"text",regex:"\\s+"}],heregex:[{token:"string.regex",regex:".*?///[imgy]{0,4}",next:"start"},{token:"comment.regex",regex:"\\s+(?:#.*)?"},{token:"string.regex",regex:"\\S+"}],comment:[{token:"comment",regex:"###",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()}var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules;r.inherits(s,i),t.CoffeeHighlightRules=s}),ace.define("ace/mode/jade_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/markdown_highlight_rules","ace/mode/scss_highlight_rules","ace/mode/less_highlight_rules","ace/mode/coffee_highlight_rules","ace/mode/javascript_highlight_rules"],function(e,t,n){"use strict";function l(e,t){return{token:"entity.name.function.jade",regex:"^\\s*\\:"+e,next:t+"start"}}var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./markdown_highlight_rules").MarkdownHighlightRules,o=e("./scss_highlight_rules").ScssHighlightRules,u=e("./less_highlight_rules").LessHighlightRules,a=e("./coffee_highlight_rules").CoffeeHighlightRules,f=e("./javascript_highlight_rules").JavaScriptHighlightRules,c=function(){var e="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={start:[{token:"keyword.control.import.include.jade",regex:"\\s*\\binclude\\b"},{token:"keyword.other.doctype.jade",regex:"^!!!\\s*(?:[a-zA-Z0-9-_]+)?"},{onMatch:function(e,t,n){return n.unshift(this.next,e.length-2,t),"comment"},regex:/^\s*\/\//,next:"comment_block"},l("markdown","markdown-"),l("sass","sass-"),l("less","less-"),l("coffee","coffee-"),{token:["storage.type.function.jade","entity.name.function.jade","punctuation.definition.parameters.begin.jade","variable.parameter.function.jade","punctuation.definition.parameters.end.jade"],regex:"^(\\s*mixin)( [\\w\\-]+)(\\s*\\()(.*?)(\\))"},{token:["storage.type.function.jade","entity.name.function.jade"],regex:"^(\\s*mixin)( [\\w\\-]+)"},{token:"source.js.embedded.jade",regex:"^\\s*(?:-|=|!=)",next:"js-start"},{token:"string.interpolated.jade",regex:"[#!]\\{[^\\}]+\\}"},{token:"meta.tag.any.jade",regex:/^\s*(?!\w+\:)(?:[\w-]+|(?=\.|#)])/,next:"tag_single"},{token:"suport.type.attribute.id.jade",regex:"#\\w+"},{token:"suport.type.attribute.class.jade",regex:"\\.\\w+"},{token:"punctuation",regex:"\\s*(?:\\()",next:"tag_attributes"}],comment_block:[{regex:/^\s*(?:\/\/)?/,onMatch:function(e,t,n){return e.length<=n[1]?e.slice(-1)=="/"?(n[1]=e.length-2,this.next="","comment"):(n.shift(),n.shift(),this.next=n.shift(),"text"):(this.next="","comment")},next:"start"},{defaultToken:"comment"}],tag_single:[{token:"entity.other.attribute-name.class.jade",regex:"\\.[\\w-]+"},{token:"entity.other.attribute-name.id.jade",regex:"#[\\w-]+"},{token:["text","punctuation"],regex:"($)|((?!\\.|#|=|-))",next:"start"}],tag_attributes:[{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:["entity.other.attribute-name.jade","punctuation"],regex:"([a-zA-Z:\\.-]+)(=)?",next:"attribute_strings"},{token:"punctuation",regex:"\\)",next:"start"}],attribute_strings:[{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"string",regex:"(?=\\S)",next:"tag_attributes"}],qqstring:[{token:"constant.language.escape",regex:e},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"tag_attributes"}],qstring:[{token:"constant.language.escape",regex:e},{token:"string",regex:"[^'\\\\]+"},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"tag_attributes"}]},this.embedRules(f,"js-",[{token:"text",regex:".$",next:"start"}])};r.inherits(c,i),t.JadeHighlightRules=c}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/jade",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jade_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./jade_highlight_rules").JadeHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.$id="ace/mode/jade"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-java.js b/library/ace/mode-java.js
new file mode 100644
index 000000000..529182f77
--- /dev/null
+++ b/library/ace/mode-java.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/java_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while",t="null|Infinity|NaN|undefined",n="AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object",r=this.createKeywordMapper({"variable.language":"this",keyword:e,"constant.language":t,"support.function":n},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.JavaHighlightRules=o}),ace.define("ace/mode/java",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/java_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./java_highlight_rules").JavaHighlightRules,o=function(){i.call(this),this.HighlightRules=s};r.inherits(o,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/java"}.call(o.prototype),t.Mode=o}) \ No newline at end of file
diff --git a/library/ace/mode-javascript.js b/library/ace/mode-javascript.js
new file mode 100644
index 000000000..bf5fc926c
--- /dev/null
+++ b/library/ace/mode-javascript.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}) \ No newline at end of file
diff --git a/library/ace/mode-json.js b/library/ace/mode-json.js
new file mode 100644
index 000000000..f6226b807
--- /dev/null
+++ b/library/ace/mode-json.js
@@ -0,0 +1 @@
+ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};r.inherits(s,i),t.JsonHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=e("../worker/worker_client").WorkerClient,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(l,i),function(){this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*[\{\(\[]\s*$/);i&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new f(["ace"],"ace/mode/json_worker","JsonWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(l.prototype),t.Mode=l}) \ No newline at end of file
diff --git a/library/ace/mode-jsoniq.js b/library/ace/mode-jsoniq.js
new file mode 100644
index 000000000..69461d972
--- /dev/null
+++ b/library/ace/mode-jsoniq.js
@@ -0,0 +1 @@
+ace.define("ace/mode/xquery/jsoniq_lexer",["require","exports","module"],function(e,t,n){n.exports=function r(t,n,i){function s(u,a){if(!n[u]){if(!t[u]){var f=typeof e=="function"&&e;if(!a&&f)return f(u,!0);if(o)return o(u,!0);throw new Error("Cannot find module '"+u+"'")}var l=n[u]={exports:{}};t[u][0].call(l.exports,function(e){var n=t[u][1][e];return s(n?n:e)},l,l.exports,r,t,n,i)}return n[u].exports}var o=typeof e=="function"&&e;for(var u=0;u<i.length;u++)s(i[u]);return s}({1:[function(e,t,n){var r=n.JSONiqTokenizer=function i(e,t){function r(e,t){E=t,S=e,x=e.length,s(0,0,0)}function s(e,t,n){m=t,g=t,y=e,b=t,w=n,N=n,E.reset(S)}function o(){E.startNonterminal("EQName",g);switch(y){case 80:f(80);break;case 94:f(94);break;case 118:f(118);break;case 119:f(119);break;case 122:f(122);break;case 143:f(143);break;case 150:f(150);break;case 163:f(163);break;case 183:f(183);break;case 189:f(189);break;case 214:f(214);break;case 224:f(224);break;case 225:f(225);break;case 241:f(241);break;case 242:f(242);break;case 251:f(251);break;default:u()}E.endNonterminal("EQName",g)}function u(){E.startNonterminal("FunctionName",g);switch(y){case 17:f(17);break;case 68:f(68);break;case 71:f(71);break;case 72:f(72);break;case 73:f(73);break;case 77:f(77);break;case 78:f(78);break;case 82:f(82);break;case 86:f(86);break;case 87:f(87);break;case 88:f(88);break;case 91:f(91);break;case 92:f(92);break;case 101:f(101);break;case 103:f(103);break;case 106:f(106);break;case 107:f(107);break;case 108:f(108);break;case 109:f(109);break;case 110:f(110);break;case 111:f(111);break;case 116:f(116);break;case 117:f(117);break;case 120:f(120);break;case 121:f(121);break;case 124:f(124);break;case 126:f(126);break;case 127:f(127);break;case 129:f(129);break;case 132:f(132);break;case 133:f(133);break;case 134:f(134);break;case 135:f(135);break;case 144:f(144);break;case 146:f(146);break;case 148:f(148);break;case 149:f(149);break;case 151:f(151);break;case 157:f(157);break;case 158:f(158);break;case 160:f(160);break;case 161:f(161);break;case 162:f(162);break;case 168:f(168);break;case 170:f(170);break;case 172:f(172);break;case 176:f(176);break;case 178:f(178);break;case 179:f(179);break;case 180:f(180);break;case 182:f(182);break;case 184:f(184);break;case 196:f(196);break;case 198:f(198);break;case 199:f(199);break;case 200:f(200);break;case 204:f(204);break;case 210:f(210);break;case 211:f(211);break;case 216:f(216);break;case 217:f(217);break;case 218:f(218);break;case 222:f(222);break;case 227:f(227);break;case 233:f(233);break;case 234:f(234);break;case 235:f(235);break;case 246:f(246);break;case 247:f(247);break;case 248:f(248);break;case 252:f(252);break;case 254:f(254);break;case 258:f(258);break;case 264:f(264);break;case 268:f(268);break;case 272:f(272);break;case 70:f(70);break;case 79:f(79);break;case 81:f(81);break;case 83:f(83);break;case 84:f(84);break;case 89:f(89);break;case 96:f(96);break;case 99:f(99);break;case 100:f(100);break;case 102:f(102);break;case 104:f(104);break;case 123:f(123);break;case 130:f(130);break;case 131:f(131);break;case 139:f(139);break;case 152:f(152);break;case 153:f(153);break;case 159:f(159);break;case 169:f(169);break;case 190:f(190);break;case 197:f(197);break;case 201:f(201);break;case 220:f(220);break;case 223:f(223);break;case 226:f(226);break;case 232:f(232);break;case 238:f(238);break;case 249:f(249);break;case 250:f(250);break;case 255:f(255);break;case 259:f(259);break;case 260:f(260);break;case 261:f(261);break;case 265:f(265);break;case 95:f(95);break;case 174:f(174);break;default:f(219)}E.endNonterminal("FunctionName",g)}function a(){E.startNonterminal("NCName",g);switch(y){case 28:f(28);break;case 68:f(68);break;case 73:f(73);break;case 77:f(77);break;case 78:f(78);break;case 82:f(82);break;case 86:f(86);break;case 87:f(87);break;case 88:f(88);break;case 92:f(92);break;case 103:f(103);break;case 107:f(107);break;case 111:f(111);break;case 116:f(116);break;case 120:f(120);break;case 121:f(121);break;case 124:f(124);break;case 126:f(126);break;case 129:f(129);break;case 135:f(135);break;case 144:f(144);break;case 146:f(146);break;case 148:f(148);break;case 149:f(149);break;case 158:f(158);break;case 160:f(160);break;case 161:f(161);break;case 162:f(162);break;case 170:f(170);break;case 172:f(172);break;case 176:f(176);break;case 178:f(178);break;case 179:f(179);break;case 184:f(184);break;case 196:f(196);break;case 198:f(198);break;case 199:f(199);break;case 218:f(218);break;case 222:f(222);break;case 234:f(234);break;case 235:f(235);break;case 246:f(246);break;case 247:f(247);break;case 252:f(252);break;case 264:f(264);break;case 268:f(268);break;case 71:f(71);break;case 72:f(72);break;case 80:f(80);break;case 91:f(91);break;case 94:f(94);break;case 101:f(101);break;case 106:f(106);break;case 108:f(108);break;case 109:f(109);break;case 110:f(110);break;case 117:f(117);break;case 118:f(118);break;case 119:f(119);break;case 122:f(122);break;case 127:f(127);break;case 132:f(132);break;case 133:f(133);break;case 134:f(134);break;case 143:f(143);break;case 150:f(150);break;case 151:f(151);break;case 157:f(157);break;case 163:f(163);break;case 168:f(168);break;case 180:f(180);break;case 182:f(182);break;case 183:f(183);break;case 189:f(189);break;case 200:f(200);break;case 204:f(204);break;case 210:f(210);break;case 211:f(211);break;case 214:f(214);break;case 216:f(216);break;case 217:f(217);break;case 224:f(224);break;case 225:f(225);break;case 227:f(227);break;case 233:f(233);break;case 241:f(241);break;case 242:f(242);break;case 248:f(248);break;case 251:f(251);break;case 254:f(254);break;case 258:f(258);break;case 260:f(260);break;case 272:f(272);break;case 70:f(70);break;case 79:f(79);break;case 81:f(81);break;case 83:f(83);break;case 84:f(84);break;case 89:f(89);break;case 96:f(96);break;case 99:f(99);break;case 100:f(100);break;case 102:f(102);break;case 104:f(104);break;case 123:f(123);break;case 130:f(130);break;case 131:f(131);break;case 139:f(139);break;case 152:f(152);break;case 153:f(153);break;case 159:f(159);break;case 169:f(169);break;case 190:f(190);break;case 197:f(197);break;case 201:f(201);break;case 220:f(220);break;case 223:f(223);break;case 226:f(226);break;case 232:f(232);break;case 238:f(238);break;case 249:f(249);break;case 250:f(250);break;case 255:f(255);break;case 259:f(259);break;case 261:f(261);break;case 265:f(265);break;case 95:f(95);break;case 174:f(174);break;default:f(219)}E.endNonterminal("NCName",g)}function f(e){y==e?(l(),E.terminal(i.TOKEN[y],b,w>x?x:w),m=b,g=w,y=0):d(b,w,0,y,e)}function l(){g!=b&&(m=g,g=b,E.whitespace(m,g))}function c(e){var t;for(;;){t=C(e);if(t!=30)break}return t}function h(e){y==0&&(y=c(e),b=T,w=N)}function p(e){y==0&&(y=C(e),b=T,w=N)}function d(e,t,r,i,s){throw new n.ParseException(e,t,r,i,s)}function C(e){var t=!1;T=N;var n=N,r=i.INITIAL[e],s=0;for(var o=r&4095;o!=0;){var u,a=n<x?S.charCodeAt(n):0;++n;if(a<128)u=i.MAP0[a];else if(a<55296){var f=a>>4;u=i.MAP1[(a&15)+i.MAP1[(f&31)+i.MAP1[f>>5]]]}else{if(a<56320){var f=n<x?S.charCodeAt(n):0;f>=56320&&f<57344&&(++n,a=((a&1023)<<10)+(f&1023)+65536,t=!0)}var l=0,c=5;for(var h=3;;h=c+l>>1){if(i.MAP2[h]>a)c=h-1;else{if(!(i.MAP2[6+h]<a)){u=i.MAP2[12+h];break}l=h+1}if(l>c){u=0;break}}}s=o;var p=(u<<12)+o-1;o=i.TRANSITION[(p&15)+i.TRANSITION[p>>4]],o>4095&&(r=o,o&=4095,N=n)}r>>=12;if(r==0){N=n-1;var f=N<x?S.charCodeAt(N):0;return f>=56320&&f<57344&&--N,d(T,N,s,-1,-1)}if(t)for(var v=r>>9;v>0;--v){--N;var f=N<x?S.charCodeAt(N):0;f>=56320&&f<57344&&--N}else N-=r>>9;return(r&511)-1}r(e,t);var n=this;this.ParseException=function(e,t,n,r,i){var s=e,o=t,u=n,a=r,f=i;this.getBegin=function(){return s},this.getEnd=function(){return o},this.getState=function(){return u},this.getExpected=function(){return f},this.getOffending=function(){return a},this.getMessage=function(){return a<0?"lexical analysis failed":"syntax error"}},this.getInput=function(){return S},this.getOffendingToken=function(e){var t=e.getOffending();return t>=0?i.TOKEN[t]:null},this.getExpectedTokenSet=function(e){var t;return e.getExpected()<0?t=i.getTokenSet(-e.getState()):t=[i.TOKEN[e.getExpected()]],t},this.getErrorMessage=function(e){var t=this.getExpectedTokenSet(e),n=this.getOffendingToken(e),r=S.substring(0,e.getBegin()),i=r.split("\n"),s=i.length,o=i[s-1].length+1,u=e.getEnd()-e.getBegin();return e.getMessage()+(n==null?"":", found "+n)+"\nwhile expecting "+(t.length==1?t[0]:"["+t.join(", ")+"]")+"\n"+(u==0||n!=null?"":"after successfully scanning "+u+" characters beginning ")+"at line "+s+", column "+o+":\n..."+S.substring(e.getBegin(),Math.min(S.length,e.getBegin()+64))+"..."},this.parse_start=function(){E.startNonterminal("start",g),h(14);switch(y){case 58:f(58);break;case 57:f(57);break;case 59:f(59);break;case 43:f(43);break;case 45:f(45);break;case 44:f(44);break;case 37:f(37);break;case 41:f(41);break;case 277:f(277);break;case 274:f(274);break;case 42:f(42);break;case 46:f(46);break;case 52:f(52);break;case 65:f(65);break;case 66:f(66);break;case 49:f(49);break;case 51:f(51);break;case 56:f(56);break;case 54:f(54);break;case 36:f(36);break;case 276:f(276);break;case 40:f(40);break;case 5:f(5);break;case 4:f(4);break;case 6:f(6);break;case 15:f(15);break;case 16:f(16);break;case 18:f(18);break;case 19:f(19);break;case 20:f(20);break;case 8:f(8);break;case 9:f(9);break;case 7:f(7);break;case 35:f(35);break;default:o()}E.endNonterminal("start",g)},this.parse_StartTag=function(){E.startNonterminal("StartTag",g),h(8);switch(y){case 61:f(61);break;case 53:f(53);break;case 29:f(29);break;case 60:f(60);break;case 37:f(37);break;case 41:f(41);break;default:f(35)}E.endNonterminal("StartTag",g)},this.parse_TagContent=function(){E.startNonterminal("TagContent",g),p(11);switch(y){case 25:f(25);break;case 9:f(9);break;case 10:f(10);break;case 58:f(58);break;case 57:f(57);break;case 21:f(21);break;case 31:f(31);break;case 275:f(275);break;case 278:f(278);break;case 274:f(274);break;default:f(35)}E.endNonterminal("TagContent",g)},this.parse_AposAttr=function(){E.startNonterminal("AposAttr",g),p(10);switch(y){case 23:f(23);break;case 27:f(27);break;case 21:f(21);break;case 31:f(31);break;case 275:f(275);break;case 278:f(278);break;case 274:f(274);break;case 41:f(41);break;default:f(35)}E.endNonterminal("AposAttr",g)},this.parse_QuotAttr=function(){E.startNonterminal("QuotAttr",g),p(9);switch(y){case 22:f(22);break;case 26:f(26);break;case 21:f(21);break;case 31:f(31);break;case 275:f(275);break;case 278:f(278);break;case 274:f(274);break;case 37:f(37);break;default:f(35)}E.endNonterminal("QuotAttr",g)},this.parse_CData=function(){E.startNonterminal("CData",g),p(1);switch(y){case 14:f(14);break;case 67:f(67);break;default:f(35)}E.endNonterminal("CData",g)},this.parse_XMLComment=function(){E.startNonterminal("XMLComment",g),p(0);switch(y){case 12:f(12);break;case 50:f(50);break;default:f(35)}E.endNonterminal("XMLComment",g)},this.parse_PI=function(){E.startNonterminal("PI",g),p(3);switch(y){case 13:f(13);break;case 62:f(62);break;case 63:f(63);break;default:f(35)}E.endNonterminal("PI",g)},this.parse_Pragma=function(){E.startNonterminal("Pragma",g),p(2);switch(y){case 11:f(11);break;case 38:f(38);break;case 39:f(39);break;default:f(35)}E.endNonterminal("Pragma",g)},this.parse_Comment=function(){E.startNonterminal("Comment",g),p(4);switch(y){case 55:f(55);break;case 44:f(44);break;case 32:f(32);break;default:f(35)}E.endNonterminal("Comment",g)},this.parse_CommentDoc=function(){E.startNonterminal("CommentDoc",g),p(6);switch(y){case 33:f(33);break;case 34:f(34);break;case 55:f(55);break;case 44:f(44);break;default:f(35)}E.endNonterminal("CommentDoc",g)},this.parse_QuotString=function(){E.startNonterminal("QuotString",g),p(5);switch(y){case 3:f(3);break;case 2:f(2);break;case 1:f(1);break;case 37:f(37);break;default:f(35)}E.endNonterminal("QuotString",g)},this.parse_AposString=function(){E.startNonterminal("AposString",g),p(7);switch(y){case 21:f(21);break;case 31:f(31);break;case 23:f(23);break;case 24:f(24);break;case 41:f(41);break;default:f(35)}E.endNonterminal("AposString",g)},this.parse_Prefix=function(){E.startNonterminal("Prefix",g),h(13),l(),a(),E.endNonterminal("Prefix",g)},this.parse__EQName=function(){E.startNonterminal("_EQName",g),h(12),l(),o(),E.endNonterminal("_EQName",g)};var v,m,g,y,b,w,E,S,x,T,N};r.getTokenSet=function(e){var t=[],n=e<0?-e:INITIAL[e]&4095;for(var i=0;i<279;i+=32){var s=i,o=(i>>5)*2066+n-1,u=o>>2,a=u>>2,f=r.EXPECTED[(o&3)+r.EXPECTED[(u&3)+r.EXPECTED[(a&3)+r.EXPECTED[a>>2]]]];for(;f!=0;f>>>=1,++s)(f&1)!=0&&t.push(r.TOKEN[s])}return t},r.MAP0=[67,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,18,18,18,18,18,18,18,18,19,20,21,22,23,24,25,26,27,28,29,30,27,31,31,31,31,31,31,31,31,31,31,32,31,31,33,31,31,31,31,31,31,34,35,36,37,31,37,38,39,40,41,42,43,44,45,46,31,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,31,62,63,64,65,37],r.MAP1=[108,124,214,214,214,214,214,214,214,214,214,214,214,214,214,214,156,181,181,181,181,181,214,215,213,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,247,261,277,293,309,347,363,379,416,416,416,408,331,323,331,323,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,433,433,433,433,433,433,433,316,331,331,331,331,331,331,331,331,394,416,416,417,415,416,416,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,330,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,416,67,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,18,18,18,18,18,18,18,18,19,20,21,22,23,24,25,26,27,28,29,30,27,31,31,31,31,31,31,31,31,31,31,31,31,31,31,37,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,32,31,31,33,31,31,31,31,31,31,34,35,36,37,31,37,38,39,40,41,42,43,44,45,46,31,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,31,62,63,64,65,37,37,37,37,37,37,37,37,37,37,37,37,31,31,37,37,37,37,37,37,37,66,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66],r.MAP2=[57344,63744,64976,65008,65536,983040,63743,64975,65007,65533,983039,1114111,37,31,37,31,31,37],r.INITIAL=[1,2,49155,57348,5,6,7,8,9,10,11,12,13,14,15],r.TRANSITION=[19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,17408,19288,17439,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,22126,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17672,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,19469,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,36919,18234,18262,18278,18294,18320,18336,18361,18397,18419,18432,18304,18448,18485,18523,18553,18583,18599,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,18825,18841,18871,18906,18944,18960,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19074,36169,17439,36866,17466,36890,36866,22314,19105,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,22126,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17672,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,19469,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,36919,18234,18262,18278,18294,18320,18336,18361,18397,18419,18432,18304,18448,18485,18523,18553,18583,18599,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,18825,18841,18871,18906,18944,18960,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22182,19288,19121,36866,17466,18345,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19273,19552,19304,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19332,17423,19363,36866,17466,17537,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,18614,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,19391,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,19427,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36154,19288,19457,36866,17466,17740,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22780,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22375,22197,18469,36866,17466,36890,36866,21991,24018,22987,17556,17575,22288,17486,17509,17525,18373,21331,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,19485,19501,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19537,22390,19568,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19596,19611,19457,36866,17466,36890,36866,18246,19627,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22242,20553,19457,36866,17466,36890,36866,18648,30477,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36472,19288,19457,36866,17466,17809,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,21770,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,19643,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,19672,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,20538,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,17975,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22345,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19726,19742,21529,24035,23112,26225,23511,27749,27397,24035,34360,24035,24036,23114,35166,23114,23114,19758,23511,35247,23511,23511,28447,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,24254,19821,23511,23511,23511,23511,23512,19441,36539,24035,24035,24035,24035,19846,19869,23114,23114,23114,28618,32187,19892,23511,23511,23511,34585,20402,36647,24035,24035,24036,23114,33757,23114,23114,23029,20271,23511,27070,23511,23511,30562,24035,24035,29274,26576,23114,23114,31118,23036,29695,23511,23511,32431,23634,30821,24035,23110,19913,23114,23467,31261,23261,34299,19932,24035,32609,19965,35389,19984,27689,19830,29391,29337,20041,22643,35619,33728,20062,20121,20166,35100,26145,20211,23008,19876,20208,20227,25670,20132,26578,27685,20141,20243,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36094,19288,19457,36866,17466,21724,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22735,19552,20287,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22750,19288,21529,24035,23112,28056,23511,29483,28756,24035,24035,24035,24036,23114,23114,23114,23114,20327,23511,23511,23511,23511,31156,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,24254,20371,23511,23511,23511,23511,27443,20395,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,29457,29700,23511,23511,23511,23511,33444,20402,24035,24035,24035,24036,23114,23114,23114,23114,28350,20421,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,20447,20475,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,20523,22257,20569,20783,21715,17603,20699,20837,20614,20630,21149,20670,21405,17486,17509,17525,18373,19179,20695,20716,20732,20755,19194,18042,21641,20592,20779,20598,21412,17470,17591,20896,17468,17619,20799,20700,21031,20744,20699,20828,18075,21259,20581,20853,18048,20868,20884,17756,17784,17800,17825,17854,21171,21200,20931,20947,21378,20955,20971,18086,20645,21002,20986,18178,17960,18012,18381,18064,29176,21044,21438,21018,21122,21393,21060,21844,21094,20654,17493,18150,18166,18214,25967,20763,21799,21110,21830,21138,21246,21301,18336,18361,21165,21187,20812,21216,21232,21287,21317,18553,21347,21363,21428,21454,21271,21483,21499,21515,21575,21467,18712,21591,21633,21078,18189,18198,20679,21657,21701,21074,21687,21740,21756,21786,21815,21860,21876,21892,21946,21962,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36457,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,36813,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,21981,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,22151,22007,18884,17900,17922,17944,18178,17960,18012,18381,18064,27898,17884,18890,17906,17928,22042,25022,18130,36931,36963,17493,18150,18166,22070,22112,25026,18134,36935,18262,18278,18294,18320,18336,18361,22142,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36109,19288,18469,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22167,19288,19457,36866,17466,17768,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22227,36487,22273,36866,17466,36890,36866,19316,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18749,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,22304,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,19580,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22330,19089,19457,36866,17466,18721,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22765,19347,19457,36866,17466,36890,36866,18114,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,29116,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,27443,22493,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34541,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,22839,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,22540,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,29116,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,27443,22493,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34564,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,22839,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,29908,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,27443,22493,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34564,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,22839,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,29116,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,27443,22561,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34564,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,22839,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,23837,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22584,23511,23511,23511,23511,29116,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,27443,22493,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34564,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,22839,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,31507,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,24694,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36442,19288,21605,24035,23112,28137,23511,31507,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,24694,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,31507,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,24694,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,31568,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22690,19288,19457,36866,17466,36890,36866,21991,27584,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,22659,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22360,19552,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22675,22811,19457,36866,17466,36890,36866,19133,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,22827,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36139,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36064,19288,22865,22881,32031,22897,22913,22956,29939,24035,24035,24035,23003,23114,23114,23114,23024,22420,23511,23511,23511,23052,29116,23073,29268,24035,25563,26915,23106,23131,23114,23114,23159,23181,23197,23248,23511,23511,23282,23305,22493,32364,24035,33472,30138,26325,31770,33508,27345,33667,23114,23321,23473,23351,35793,36576,23511,23375,22500,24145,24035,29197,20192,24533,23440,23114,19017,23459,22839,23489,23510,23511,33563,23528,32076,25389,24035,26576,23561,23583,23114,32683,22516,23622,23655,23511,23634,35456,37144,23110,23683,34153,20499,32513,25824,23705,24035,24035,23111,23114,19874,27078,33263,19830,24035,23112,19872,27741,23266,24036,23114,30243,20507,32241,20150,31862,27464,35108,23727,23007,35895,34953,26578,27685,20141,24569,31691,19787,33967,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36427,19552,21605,24035,23112,32618,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,29116,19803,24035,24035,24035,27027,26576,23114,23114,23114,31471,23756,22468,23511,23511,23511,34687,23772,22493,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34564,23788,24035,24035,24035,21559,23828,23114,23114,23114,25086,22839,23853,23511,23511,23511,23876,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,31761,23909,23953,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36049,19288,21605,30825,23112,23987,23511,24003,31001,27617,24034,24035,24036,24052,24089,23114,23114,22420,24109,24168,23511,23511,29116,24188,27609,20017,29516,24035,26576,24222,19968,23114,24252,33811,22468,24270,33587,23511,24320,27443,22493,24035,24035,24035,24035,24339,23113,23114,23114,23114,28128,28618,29700,23511,23511,23511,28276,34564,20402,24035,24035,32929,24036,23114,23114,23114,24357,23029,22839,23511,23511,23511,24377,25645,24035,34112,24035,26576,23114,26643,23114,32683,22516,23511,25638,23511,23711,24035,24395,27809,23114,24414,20499,24432,30917,23628,24035,30680,23111,23114,30233,27078,25748,24452,24035,23112,19872,27741,23266,24036,23114,24475,19829,26577,26597,26154,24519,24556,24596,23007,20046,20132,26578,24634,20141,24569,31691,24679,24727,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36412,19288,21605,19943,34861,32618,26027,29483,32016,32050,36233,24776,35574,24801,24819,32671,31289,22420,24868,24886,20087,26849,29116,19803,24035,24035,24035,36228,26576,23114,23114,23114,24981,33811,22468,23511,23511,23511,29028,27443,22493,24923,27965,24035,24035,32797,24946,23443,23114,23114,29636,24997,22849,28252,23511,23511,23511,25042,25110,24035,24035,34085,24036,25133,23114,23114,25152,23029,22839,25169,23511,36764,23511,25645,30403,24035,25186,26576,31806,24093,25212,32683,22516,32713,26245,34293,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,32406,23111,23114,28676,30944,27689,25234,24035,23112,19872,37063,23266,24036,23114,30243,20379,26100,29218,20211,30105,25257,25284,23007,20046,20132,26578,27685,20141,24569,24834,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36034,19288,21671,25314,25072,25330,25346,25362,29939,29951,35288,29984,23812,27216,25405,25424,30456,22584,26292,25461,25480,31592,29116,25516,34963,25545,27007,25579,33937,25614,25661,25686,34872,25702,25718,25734,25769,25795,25811,25840,22493,26533,25856,24035,25876,30763,27481,25909,23114,28987,25936,25954,29700,25983,23511,31412,26043,26063,22568,29241,29592,26116,31216,35383,26170,34783,26194,26221,22839,26241,26261,22477,26283,26308,27306,31035,24655,26576,29854,33386,26341,32683,22516,32153,30926,26361,19996,26381,35463,26397,26424,34646,26478,35605,31386,26494,35567,31964,22940,23689,25218,30309,32289,19830,33605,23112,32109,27733,27084,24496,35886,35221,26525,36602,26549,26558,26574,26594,26613,26629,26666,26700,26578,27685,23740,24285,31691,26733,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36397,19552,18991,25887,28117,32618,26776,29483,29939,26802,24035,24035,24036,28664,23114,23114,23114,22420,30297,23511,23511,23511,29116,19803,24035,24035,24035,25559,26576,23114,23114,23114,30525,33811,22468,23511,23511,23511,28725,27443,22493,24035,24035,27249,24035,24035,23113,23114,23114,26827,23114,28618,29700,23511,23511,26845,23511,34564,20402,24035,24035,26979,24036,23114,23114,23114,24974,23029,22839,23511,23511,23511,26865,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,33305,24035,25598,23114,19874,34253,27689,19830,24035,23112,19872,27741,23266,24036,23114,26886,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,26931,24569,26439,26947,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36019,19288,26995,24035,23112,32618,23511,31507,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,27043,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,27061,23511,23511,23511,23511,23512,24694,24035,24035,29978,24035,24035,23113,23114,33114,23114,23114,30010,29700,23511,35913,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,27155,26576,23114,23114,30447,23036,29695,23511,23511,30935,20099,24152,25529,27100,34461,27121,22625,29156,26009,27137,30422,31903,31655,28870,27171,32439,31731,19830,27232,22612,27265,26786,25494,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,20342,27288,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,27322,27339,28020,27361,27382,29939,24035,24035,32581,24036,23114,23114,23114,27425,22420,23511,23511,23511,27442,28306,19803,24035,24035,24035,24035,26710,23114,23114,23114,23114,32261,22468,23511,23511,23511,23511,35719,24694,29510,24035,24035,24035,24035,26717,23114,23114,23114,23114,28618,32217,23511,23511,23511,23511,34585,20402,24035,24035,24035,27459,23114,23114,23114,36252,23029,20271,23511,23511,23511,28840,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,27480,34483,28401,29761,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36382,19288,21605,27497,27517,28504,28898,27569,29939,29401,27600,27323,27633,19025,27662,23114,27705,22420,20483,27721,23511,27765,28306,19803,23540,24035,24610,27781,27805,26650,23114,28573,32990,25920,22468,26870,23511,26684,34262,34737,25057,34622,24035,24035,23971,24206,27825,27847,23114,23114,27865,27885,35766,27914,23511,23511,32766,32844,27934,28795,26909,27955,26092,27988,25445,28005,28036,28052,21965,23511,32196,19897,28072,28102,36534,21541,23801,28153,28180,28197,28221,23036,32695,28251,28268,28292,23667,34825,23930,24580,28322,28344,31627,28366,25996,23628,24035,24035,23111,23114,19874,27078,27689,35625,33477,33359,27674,28393,33992,24036,23114,30243,19829,28417,28433,28463,23008,19876,20208,23007,20046,20132,28489,28520,20141,24569,31691,19787,28550,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,31507,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,24694,28589,24035,24035,24035,24035,28608,23114,23114,23114,23114,28618,20431,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36004,19288,28634,31951,28565,28702,28718,28741,32544,20175,28792,32086,20105,28811,29059,29862,28856,22420,28886,30354,23359,28922,28306,28952,23888,26320,36506,24035,29331,28968,36609,23114,29003,31661,27061,30649,27366,23511,29023,27918,24694,24035,24035,23893,33094,30867,23113,23114,23114,29044,34184,30010,29700,23511,23511,29081,29102,34585,20402,27789,24035,24035,24036,23114,29132,23114,23114,23029,20271,23511,29153,23511,23511,30562,30174,24035,24035,27409,25438,23114,23114,29172,36668,31332,23511,23511,29192,30144,24035,23110,30203,23114,23467,31544,23261,23628,24035,22545,23111,23114,29213,27078,27689,29234,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,29257,23008,19876,20208,28768,29290,29320,34776,29353,20141,22435,29378,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36367,19288,21605,34616,19006,32618,31497,31507,36216,20184,24035,34393,29424,34668,23114,34900,29447,22420,30360,23511,37089,29473,28306,19803,29499,24398,24035,24035,26576,31799,29532,29550,23114,33811,22468,32298,29571,31184,23511,23512,37127,36628,29589,24035,24135,24035,23113,29608,23114,27831,29634,28618,29652,30037,23511,24172,29671,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,29555,29690,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,29719,24035,23110,29738,23114,23467,34035,29756,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,29777,34364,28181,30243,29799,31920,27272,27185,23008,31126,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29828,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,35989,19552,19687,35139,28649,29878,29894,29924,29939,23224,23085,31969,24036,35173,24752,24803,23114,22420,31190,30318,24870,23511,28306,29967,23967,24035,24035,24035,26576,3e4,23114,23114,23114,33811,22468,30026,23511,23511,23511,23512,26078,24035,24035,24035,30053,37137,30071,23114,23114,33368,25136,28618,30723,23511,23511,37096,31356,34585,20402,30092,30127,30160,24036,35740,30219,24960,30259,23029,20271,34042,30285,30342,30376,23289,30055,30400,30419,30438,32640,33532,33514,30472,18792,26267,24323,23057,30493,23639,20008,30196,33188,30517,20075,23511,30541,23628,30578,33928,28776,30594,19874,30610,30637,19830,30677,27646,19872,25779,23266,23232,35016,30243,30696,29812,30712,30746,27206,30779,30807,23007,33395,20132,26578,27685,31703,22928,31691,19787,31079,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36352,19288,23335,30841,26131,30888,30904,30986,29939,24035,24704,31017,20025,23114,26178,31051,31095,22420,23511,22524,31142,31172,28534,31206,35497,25196,24035,28592,24503,23114,31239,31285,23114,31305,31321,31355,31372,31407,23511,30556,24694,24035,27501,19805,24035,24035,23113,23114,31428,24066,23114,28618,29700,23511,31837,18809,23511,34585,31448,24035,24035,24035,23090,23114,23114,23114,23114,31619,35038,23511,23511,23511,23511,33714,24035,33085,24035,29431,23114,31467,23114,23143,31487,23511,31523,23511,35195,36783,24035,30111,23567,23114,23467,31543,31560,23628,24035,24035,23111,23114,19874,30953,31584,34508,24035,31608,26345,37055,23266,31643,31677,31719,31747,31786,31822,26898,23008,19876,31859,23007,20046,20132,26578,27685,20141,24569,31691,31878,31936,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,35974,19288,21605,27972,35663,31985,29655,32001,36715,24785,25893,23545,31912,19853,19916,25938,24540,22420,31843,29674,29573,32735,28936,19803,24035,24035,32047,24035,26576,23114,23114,27544,23114,33811,22468,23511,23511,32161,23511,23512,32066,24035,33313,24035,24035,24035,23113,27426,32102,23114,23114,28618,32125,23511,32144,23511,23511,33569,20402,24035,27045,24035,24036,23114,23114,28328,23114,30076,32177,23511,23511,30384,23511,30562,24035,24035,24035,26576,23114,23114,23114,23595,32212,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,22635,25753,32233,32257,32277,19829,26577,26597,20211,23008,19876,32322,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,32352,35285,32380,34196,33016,30661,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,32404,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,32422,23511,23511,23511,23511,23512,24694,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,30269,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,19949,24035,23111,32455,19874,31269,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36337,19552,19209,21617,26509,32475,32491,32529,29939,24035,32578,25241,32597,23114,32634,29007,32656,22420,23511,32729,26365,32751,28306,32788,32882,24035,24035,32813,36727,23114,33182,23114,27553,33235,32829,23511,32706,23511,28906,28377,26962,32881,32904,32898,32920,24035,32953,23114,32977,26408,23114,28164,33006,23511,33039,35774,23511,32306,20402,33076,30872,24035,24036,25408,33110,28979,23114,23029,20271,35835,33130,33054,23511,30562,33148,24035,24035,33167,23114,23114,33775,23036,20459,23511,23511,25464,24646,24035,24035,22446,23114,23114,25627,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,31391,33204,33220,33251,33287,26577,26597,20211,33329,19876,33345,23007,20046,20132,26578,27685,28473,22599,31691,33411,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,35959,19288,21907,27243,29843,32618,33427,31507,29939,33460,34090,24035,24036,33493,24416,33530,23114,22420,33548,24379,33585,23511,28306,19803,33603,24202,24035,24035,25593,33749,28205,23114,23114,32388,22468,33853,33060,23511,23511,31339,33621,24035,24035,34397,24618,30757,33663,23114,23114,33683,35684,28618,26678,23511,23511,32506,33699,34585,20402,24035,32562,26973,24036,23114,23114,33377,33773,23029,20271,23511,23511,30621,23511,23860,24035,33791,21553,26576,36558,23114,33809,23036,32857,26047,23511,33827,23634,24035,24035,23110,23114,23114,31252,23511,33845,23628,24035,24459,23111,23114,33869,27078,30791,29783,24035,24742,19872,33895,23266,26462,19710,33879,33919,26577,26597,24123,24930,21930,20208,30501,33953,25268,20252,33983,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36322,19552,23390,33634,35154,34008,34024,34058,35544,34106,34128,26811,33151,34144,34169,34212,23114,34228,34244,34278,34315,23511,34331,34347,34380,34413,24035,24663,26576,34429,34453,34477,29534,33811,22468,34499,34524,34557,25170,34580,35436,23937,34601,24035,24341,26453,23113,34638,34662,23114,24236,28618,34684,34703,34729,23511,35352,34753,34799,24035,34815,32558,34848,34888,35814,34923,23165,29137,23606,30326,30730,34939,33023,30562,36848,34979,24035,24847,34996,23114,23114,35032,29695,35054,23511,23511,35091,33296,35124,24296,28235,24361,36276,32772,35067,35189,27301,30855,24852,22452,35211,35237,35316,25500,35270,23405,24304,35304,29362,24036,23114,35332,19829,26577,26597,20211,23008,19876,20208,35368,28823,23920,32336,35405,20141,24569,31691,35421,35479,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,35944,22795,21605,33647,35877,35513,30962,35529,34073,35557,24035,24035,20405,31107,23114,23114,23114,35590,34713,23511,23511,23511,35641,19803,29408,32937,25298,24035,35657,23115,27849,24760,35679,26205,22468,23511,35700,24907,24901,35075,31893,34980,24035,24035,24035,24035,23113,35009,23114,23114,23114,28618,35716,30970,23511,23511,23511,34585,23215,24035,24035,24035,24036,35735,23114,23114,23114,27105,35756,35790,23511,23511,23511,35254,35446,24035,24035,31223,35809,23114,23114,23036,36825,35830,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,31031,20355,19872,33903,23266,24036,23114,28686,19829,26577,26597,20211,23008,23424,20208,24711,31065,24486,26578,27685,20141,19773,35851,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36307,19288,21605,35494,19702,32618,33437,31507,29939,25117,24035,27939,24036,27869,23114,26829,23114,22420,23494,23511,33132,23511,28306,19803,24035,34832,24035,24035,26576,23114,25153,23114,23114,33811,22468,23511,23511,35911,23511,23512,24694,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,35929,19288,21605,25860,23112,36185,23511,36201,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,26748,24035,24035,24035,24035,24035,36249,23114,23114,23114,23114,28618,28835,23511,23511,23511,23511,34585,20402,24035,27151,24035,26760,23114,27989,23114,23114,36268,20271,23511,24436,23511,29703,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36292,19288,21605,36503,21922,32618,34534,31507,36522,24035,33793,24035,35864,23114,23114,36555,23417,22420,23511,23511,36574,26020,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,36592,24035,24035,36625,24035,24035,23113,23114,32961,23114,23114,29618,29700,23511,29086,23511,23511,34585,20402,36644,24035,24035,24036,29740,23114,23114,23114,29065,36663,31527,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,31451,23112,36684,23511,36700,29939,24035,24035,24035,30185,23114,23114,23114,27526,22420,23511,23511,23511,32865,28306,19803,36743,24035,27017,24035,26576,27535,23114,31432,23114,33811,22468,33271,23511,32128,23511,23512,24694,24035,27196,24035,24035,24035,23113,32459,23114,23114,23114,28618,29700,33829,36762,23511,23511,34585,20402,24035,36746,24035,29722,23114,23114,34437,23114,34907,20271,23511,23511,18801,23511,23206,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,36837,24035,24035,33739,23114,23114,25094,23511,23261,23628,24035,36780,23111,24073,19874,27078,35344,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22720,19288,36799,36866,17466,36890,36864,21991,22211,22987,17556,17575,22288,17486,17509,17525,18373,17631,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,36883,36906,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22705,19288,19457,36866,17466,36890,36866,19375,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36124,19288,36951,36866,17466,36890,36866,21991,22404,22987,17556,17575,22288,17486,17509,17525,18373,18567,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,36979,36995,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36139,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18027,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36139,19288,21529,24035,23112,23033,23511,31507,25377,24035,24035,24035,24036,23114,23114,23114,23114,37040,23511,23511,23511,23511,28086,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,24254,37079,23511,23511,23511,23511,23512,34766,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,37112,37160,18469,36866,17466,36890,36866,17656,37174,22987,17556,17575,22288,17486,17509,17525,18373,18537,22984,17553,17572,22285,18780,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,36883,36906,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,53264,18,49172,57366,24,8192,28,102432,127011,110630,114730,106539,127011,127011,127011,53264,18,18,0,0,57366,0,24,24,24,0,28,28,28,28,102432,0,0,127011,0,2220032,110630,0,0,0,114730,106539,0,2170880,2170880,2170880,2170880,0,0,0,2170880,2170880,2170880,3002368,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2576384,2215936,2215936,2215936,2416640,2424832,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2543616,2215936,2215936,2215936,2215936,2215936,2629632,2215936,2617344,2215936,2215936,2215936,2215936,2215936,2215936,2691072,2215936,2707456,2215936,2715648,2215936,2723840,2764800,2215936,2215936,2797568,2215936,2822144,2215936,2215936,2854912,2215936,2215936,2215936,2912256,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,180224,0,0,2174976,0,0,2170880,2617344,2170880,2170880,2170880,2170880,2170880,2170880,2691072,2170880,2707456,2170880,2715648,2170880,2723840,2764800,2170880,2170880,2797568,2170880,2170880,2797568,2170880,2822144,2170880,2170880,2854912,2170880,2170880,2170880,2912256,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2215936,2609152,2215936,2215936,2215936,2215936,2215936,2215936,2654208,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,184599,280,0,2174976,0,0,2215936,3117056,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,544,0,546,0,0,2179072,0,0,0,552,0,0,2170880,2170880,2170880,3117056,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,0,0,0,2158592,2158592,2232320,2232320,0,2240512,2240512,0,0,0,644,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,3129344,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2400256,2215936,2215936,2215936,2215936,2711552,2170880,2170880,2170880,2170880,2170880,2760704,2768896,2789376,2813952,2170880,2170880,2170880,2875392,2904064,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2453504,2457600,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,167936,0,0,0,0,2174976,0,0,2215936,2215936,2514944,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2592768,2215936,2215936,2215936,2215936,2215936,2215936,2215936,32768,0,0,0,0,0,2174976,32768,0,2633728,2215936,2215936,2215936,2215936,2215936,2215936,2711552,2215936,2215936,2215936,2215936,2215936,2760704,2768896,2789376,2813952,2215936,2215936,2215936,2875392,2904064,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,0,0,0,2174976,0,65819,2215936,2215936,3031040,2215936,3055616,2215936,2215936,2215936,2215936,3092480,2215936,2215936,3125248,2215936,2215936,2215936,2215936,2215936,2215936,3002368,2215936,2215936,2170880,2170880,2494464,2170880,2170880,0,0,2215936,2215936,2215936,2215936,2215936,2215936,3198976,2215936,0,0,0,0,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,0,0,0,2379776,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2445312,2170880,2465792,2473984,2170880,2170880,2170880,2170880,2170880,2170880,2523136,2170880,2170880,2641920,2170880,2170880,2170880,2699264,2170880,2727936,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2879488,2170880,2916352,2170880,2170880,2170880,2879488,2170880,2916352,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3026944,2170880,2170880,3063808,2170880,2170880,3112960,2170880,2170880,3133440,2170880,2170880,3112960,2170880,2170880,3133440,2170880,2170880,2170880,3162112,2170880,2170880,3182592,3186688,2170880,2379776,2215936,2523136,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2596864,2215936,2621440,2215936,2215936,2641920,2215936,2215936,0,0,0,0,0,0,2179072,548,0,0,0,0,287,2170880,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3117056,2170880,2170880,2170880,2170880,2215936,2215936,2699264,2215936,2727936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2879488,2215936,2916352,2215936,2215936,0,0,0,0,188416,0,2179072,0,0,0,0,0,287,2170880,0,2171019,2171019,2171019,2400395,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3031179,2171019,3055755,2171019,2171019,2215936,3133440,2215936,2215936,2215936,3162112,2215936,2215936,3182592,3186688,2215936,0,0,0,0,0,0,0,0,0,0,2171019,2171019,2171019,2171019,2171019,2171019,2523275,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2597003,2171019,2621579,2170880,2170880,2170880,3162112,2170880,2170880,3182592,3186688,2170880,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,18,18,24,24,0,4337664,28,2170880,2170880,2170880,2629632,2170880,2170880,2170880,2170880,2719744,2744320,2170880,2170880,2170880,2834432,2838528,2170880,2908160,2170880,2170880,2936832,2215936,2215936,2215936,2215936,2719744,2744320,2215936,2215936,2215936,2834432,2838528,2215936,2908160,2215936,2215936,2936832,2215936,2215936,2985984,2215936,2994176,2215936,2215936,3014656,2215936,3059712,3076096,3088384,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2445312,2215936,2465792,2473984,2215936,2215936,2215936,2215936,2215936,2215936,2171166,2171166,2171166,2171166,2171166,0,0,0,2171166,2171166,2171166,2171166,2171166,2171166,2171019,2171019,2494603,2171019,2171019,2215936,2215936,2215936,3215360,0,0,0,0,0,0,0,0,0,0,0,0,0,2379776,2170880,2170880,2170880,2170880,2985984,2170880,2994176,2170880,2170880,3016168,2170880,3059712,3076096,3088384,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,18,18,124,124,0,128,128,2170880,2170880,2170880,3215360,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2486272,2170880,2170880,2506752,2170880,2170880,2170880,2535424,2539520,2170880,2170880,2588672,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2920448,2170880,2170880,2170880,2990080,2170880,2170880,2170880,2170880,3051520,2170880,2170880,2170880,2170880,2170880,2170880,3170304,0,2387968,2392064,2170880,2170880,2433024,2170880,2170880,2170880,3170304,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2486272,2215936,2215936,2506752,2215936,2215936,2215936,2535424,2539520,2215936,2215936,2588672,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,0,0,0,2174976,136,0,2215936,2215936,2920448,2215936,2215936,2215936,2990080,2215936,2215936,2215936,2215936,3051520,2215936,2215936,2215936,2215936,2215936,2215936,2215936,3108864,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,3026944,2215936,2215936,3063808,2215936,2215936,3112960,2215936,2215936,2215936,3170304,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2453504,2457600,2170880,2170880,2170880,2486272,2170880,2170880,2506752,2170880,2170880,2170880,2537049,2539520,2170880,2170880,2588672,2170880,2170880,2170880,1508,2170880,2170880,2170880,1512,2170880,2920448,2170880,2170880,2170880,2990080,2170880,2170880,2170880,2461696,2170880,2170880,2170880,2510848,2170880,2170880,2170880,2170880,2580480,2170880,2605056,2637824,2170880,2170880,18,0,0,0,0,0,0,0,0,2220032,0,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2686976,2748416,2170880,2170880,2170880,2924544,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3121152,2170880,2170880,3145728,3158016,3166208,2170880,2420736,2428928,2170880,2478080,2170880,2170880,2170880,2170880,0,0,2170880,2170880,2170880,2170880,2646016,2670592,0,0,3145728,3158016,3166208,2387968,2392064,2215936,2215936,2433024,2215936,2461696,2215936,2215936,2215936,2510848,2215936,2215936,0,0,0,0,0,0,2179072,0,0,0,0,0,0,2170880,2215936,2215936,2580480,2215936,2605056,2637824,2215936,2215936,2686976,2748416,2215936,2215936,2215936,2924544,2215936,2215936,0,0,0,0,0,0,2179072,0,0,0,0,0,286,2170880,2215936,2215936,2215936,2215936,2215936,3121152,2215936,2215936,3145728,3158016,3166208,2387968,2392064,2170880,2170880,2433024,2170880,2461696,2170880,2170880,2170880,2510848,2170880,2170880,1625,2170880,2170880,2580480,2170880,2605056,2637824,2170880,647,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2576384,2170880,2170880,2170880,2170880,2170880,2609152,2170880,2170880,2686976,0,0,2748416,2170880,2170880,0,2170880,2924544,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,18,18,24,0,0,28,28,2170880,3141632,2215936,2420736,2428928,2215936,2478080,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2646016,2670592,2752512,2756608,2846720,2961408,2215936,2998272,2215936,3010560,2215936,2215936,2215936,3141632,2170880,2420736,2428928,2752512,2756608,0,2846720,2961408,2170880,2998272,2170880,3010560,2170880,2170880,2170880,3141632,2170880,2170880,2490368,2215936,2490368,2215936,2215936,2215936,2547712,2555904,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,0,0,0,2174976,245760,0,3129344,2170880,2170880,2490368,2170880,2170880,2170880,0,0,2547712,2555904,2170880,2170880,2170880,0,0,0,0,0,0,0,0,0,2220032,0,0,45056,0,2584576,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2170880,2170880,2170880,2170880,0,0,0,2170880,2170880,2158592,0,0,0,0,0,0,0,0,2220032,0,0,0,0,0,0,0,0,1482,97,97,97,97,97,97,97,1354,97,97,97,97,97,97,97,97,1148,97,97,97,97,97,97,97,2584576,2170880,2170880,1512,0,2170880,2170880,2170880,2170880,2170880,2170880,2441216,2170880,2527232,2170880,2600960,2170880,2850816,2170880,2170880,2170880,3022848,2215936,2441216,2215936,2527232,2215936,2600960,2215936,2850816,2215936,2215936,0,0,0,0,0,0,2179072,0,0,0,0,0,287,2170880,2215936,3022848,2170880,2441216,2170880,2527232,0,0,2170880,2600960,2170880,0,2850816,2170880,2170880,2170880,2170880,2170880,2523136,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2596864,2170880,2621440,2170880,2170880,2641920,2170880,2170880,2170880,3022848,2170880,2519040,2170880,2170880,2170880,2170880,2170880,2215936,2519040,2215936,2215936,2215936,2215936,2215936,2170880,2170880,2170880,2453504,2457600,2170880,2170880,2170880,2170880,2170880,2170880,2514944,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2592768,2170880,2170880,2519040,0,2024,2170880,2170880,0,2170880,2170880,2170880,2396160,2170880,2170880,2170880,2170880,3018752,2396160,2215936,2215936,2215936,2215936,3018752,2396160,0,2024,2170880,2170880,2170880,2170880,3018752,2170880,2650112,2965504,2170880,2215936,2650112,2965504,2215936,0,0,2170880,2650112,2965504,2170880,2551808,2170880,2551808,2215936,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,141,45,45,67,67,67,67,67,224,67,67,238,67,67,67,67,67,67,67,1288,67,67,67,67,67,67,67,67,67,469,67,67,67,67,67,67,0,2551808,2170880,2170880,2215936,0,2170880,2170880,2215936,0,2170880,2170880,2215936,0,2170880,2977792,2977792,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53264,18,49172,57366,24,8192,29,102432,127011,110630,114730,106539,127011,127011,127011,53264,18,18,49172,0,0,0,24,24,24,0,28,28,28,28,102432,127,0,0,0,0,0,0,0,0,0,0,140,2170880,2170880,2170880,2416640,0,0,0,0,2220032,110630,0,0,0,114730,106539,136,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,4256099,4256099,24,24,0,28,28,2170880,2461696,2170880,2170880,2170880,2510848,2170880,2170880,0,2170880,2170880,2580480,2170880,2605056,2637824,2170880,2170880,2170880,2547712,2555904,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3129344,2215936,2215936,543,543,545,545,0,0,2179072,0,550,551,551,0,287,2171166,2171166,18,0,0,0,0,0,0,0,0,2220032,0,0,645,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,149,2584576,2170880,2170880,0,0,2170880,2170880,2170880,2170880,2170880,2170880,2441216,2170880,2527232,2170880,2600960,2519040,0,0,2170880,2170880,0,2170880,2170880,2170880,2396160,2170880,2170880,2170880,2170880,3018752,2396160,2215936,2215936,2215936,2215936,3018752,2396160,0,0,2170880,2170880,2170880,2170880,3018752,2170880,2650112,2965504,53264,18,49172,57366,24,155648,28,102432,155648,155687,114730,106539,0,0,155648,53264,18,18,49172,0,57366,0,24,24,24,0,28,28,28,28,102432,0,0,0,0,2220032,0,94208,0,0,114730,106539,0,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,208896,18,278528,24,24,0,28,28,53264,18,159765,57366,24,8192,28,102432,0,110630,114730,106539,0,0,0,53264,18,18,49172,0,57366,0,24,24,24,0,28,139394,28,28,102432,131,0,0,0,2220032,110630,0,0,0,114730,106539,0,2170880,2170880,2170880,2170880,2170880,2170880,32768,53264,0,18,18,24,24,0,28,28,0,546,0,0,2183168,0,0,552,832,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2170880,2609152,2170880,2170880,2170880,2170880,2170880,2170880,2654208,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2215936,2215936,2215936,3198976,2215936,0,1084,0,1088,0,1092,0,0,0,0,0,41606,0,0,0,0,45,45,45,45,45,937,0,0,0,0,2220032,110630,0,0,0,114730,106539,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3198976,2170880,0,0,644,0,0,0,2215936,3117056,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,826,0,828,0,0,2183168,0,0,830,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2592768,2170880,2170880,2170880,2170880,2633728,2170880,2170880,2170880,2170880,2170880,2170880,2711552,2170880,2170880,2170880,2170880,2170880,2760704,53264,18,49172,57366,24,8192,28,172066,172032,110630,172066,106539,0,0,172032,53264,18,18,49172,0,57366,0,24,24,24,16384,28,28,28,28,102432,0,98304,0,0,2220032,110630,0,0,0,0,106539,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3198976,2170880,0,0,45056,0,0,0,53264,18,49172,57366,25,8192,30,102432,0,110630,114730,106539,0,0,176219,53264,18,18,49172,0,57366,0,124,124,124,0,128,128,128,128,102432,128,0,0,0,0,0,0,0,0,0,0,140,2170880,2170880,2170880,2416640,0,546,0,0,2183168,0,65536,552,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2646016,2670592,2752512,2756608,2846720,2961408,2170880,2998272,2170880,3010560,2170880,2170880,2215936,2215936,2215936,2215936,2215936,2215936,3198976,2215936,0,0,0,0,0,0,65536,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,143,45,45,67,67,67,67,67,227,67,67,67,67,67,67,67,67,67,1824,67,1826,67,67,67,67,17,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,32768,120,121,18,18,49172,0,57366,0,24,24,24,0,28,28,28,28,102432,67,67,37139,37139,24853,24853,0,0,2179072,548,0,65820,65820,0,287,97,0,0,97,97,0,97,97,97,45,45,45,45,2033,45,67,67,67,67,0,0,97,97,97,97,45,45,67,67,0,369,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,978,0,546,70179,0,2183168,0,0,552,0,97,97,97,97,97,97,97,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,1013,67,67,67,67,67,67,67,67,67,67,473,67,67,67,67,483,67,67,1025,67,67,67,67,67,67,67,67,67,67,67,67,67,97,97,97,97,97,0,0,97,97,97,97,1119,97,97,97,97,97,97,97,97,97,97,97,97,1359,97,97,97,67,67,1584,67,67,67,67,67,67,67,67,67,67,67,67,67,497,67,67,1659,45,45,45,45,45,45,45,45,45,1667,45,45,45,45,45,169,45,45,45,45,45,45,45,45,45,45,45,1668,45,45,45,45,67,67,1694,67,67,67,67,67,67,67,67,67,67,67,67,67,774,67,67,1713,97,97,97,97,97,97,97,0,97,97,1723,97,97,97,97,0,45,45,45,45,45,45,1538,45,45,45,45,45,1559,45,45,1561,45,45,45,45,45,45,45,687,45,45,45,45,45,45,45,45,448,45,45,45,45,45,45,67,67,67,67,1771,1772,67,67,67,67,67,67,67,67,97,97,97,97,0,0,0,97,67,67,67,67,67,1821,67,67,67,67,67,67,1827,67,67,67,0,0,0,0,0,0,97,97,1614,97,97,97,97,97,603,97,97,605,97,97,608,97,97,97,97,0,1532,45,45,45,45,45,45,45,45,45,45,450,45,45,45,45,67,67,97,97,97,97,97,97,0,0,1839,97,97,97,97,0,0,97,97,97,97,97,45,45,45,45,45,45,45,67,67,67,67,67,67,67,97,1883,97,1885,97,0,1888,0,97,97,0,97,97,1848,97,97,97,97,1852,45,45,45,45,45,45,45,384,391,45,45,45,45,45,45,45,385,45,45,45,45,45,45,45,45,1237,45,45,45,45,45,45,67,0,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,45,45,45,1951,45,45,45,45,45,45,45,45,67,67,67,67,1963,97,2023,0,97,97,0,97,97,97,45,45,45,45,45,45,67,67,1994,67,1995,67,67,67,67,67,67,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,97,97,0,0,0,0,2220032,110630,0,0,0,114730,106539,137,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2793472,2805760,2170880,2830336,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3031040,2170880,3055616,2170880,2170880,67,67,37139,37139,24853,24853,0,0,281,549,0,65820,65820,0,287,97,0,0,97,97,0,97,97,97,45,45,2031,2032,45,45,67,67,67,67,67,67,67,67,67,67,67,67,1769,67,0,546,70179,549,549,0,0,552,0,97,97,97,97,97,97,97,45,45,45,45,45,45,1858,45,641,0,0,0,0,41606,926,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,456,67,0,0,0,1313,0,0,0,1096,1319,0,0,0,0,97,97,97,97,97,97,97,97,1110,97,97,97,97,67,67,67,67,1301,1476,0,0,0,0,1307,1478,0,0,0,0,0,0,0,0,97,97,97,97,1486,97,1487,97,1313,1480,0,0,0,0,1319,0,97,97,97,97,97,97,97,97,97,566,97,97,97,97,97,97,67,67,67,1476,0,1478,0,1480,0,97,97,97,97,97,97,97,45,1853,45,1855,45,45,45,45,53264,18,49172,57366,26,8192,31,102432,0,110630,114730,106539,0,0,225368,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,32768,53264,18,18,49172,163840,57366,0,24,24,229376,0,28,28,28,229376,102432,0,0,0,0,2220167,110630,0,0,0,114730,106539,0,2171019,2171019,2171019,2171019,2592907,2171019,2171019,2171019,2171019,2633867,2171019,2171019,2171019,2171019,2171019,2171019,2654347,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3117195,2171019,2171019,2171019,2171019,2240641,0,0,0,0,0,0,0,0,368,0,140,2171019,2171019,2171019,2416779,2424971,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2617483,2171019,2171019,2642059,2171019,2171019,2171019,2699403,2171019,2728075,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3215499,2215936,2215936,2215936,2215936,2215936,2437120,2215936,2215936,2171019,2822283,2171019,2171019,2855051,2171019,2171019,2171019,2912395,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3002507,2171019,2171019,2215936,2215936,2494464,2215936,2215936,2215936,2171166,2171166,2416926,2425118,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2576670,2171166,2617630,2171166,2171166,2171166,2171166,2171166,2171166,2691358,2171166,2707742,2171166,2715934,2171166,2724126,2765086,2171166,2171166,2797854,2171166,2822430,2171166,2171166,2855198,2171166,2171166,2171166,2912542,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2793758,2806046,2171166,2830622,2171166,2171166,2171166,2171166,2171166,2171166,2171166,3109150,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2543902,2171166,2171166,2171166,2171166,2171166,2629918,2793611,2805899,2171019,2830475,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,0,546,0,0,2183168,0,0,552,0,2171166,2171166,2171166,2400542,2171166,2171166,2171166,0,2171166,2171166,2171166,0,2171166,2920734,2171166,2171166,2171166,2990366,2171166,2171166,2171166,2171166,3117342,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,0,53264,0,18,18,4329472,2232445,0,2240641,4337664,2711691,2171019,2171019,2171019,2171019,2171019,2760843,2769035,2789515,2814091,2171019,2171019,2171019,2875531,2904203,2171019,2171019,3092619,2171019,2171019,3125387,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3199115,2171019,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2453504,2457600,2215936,2215936,2215936,2215936,2215936,2215936,2793472,2805760,2215936,2830336,2215936,2215936,2215936,2215936,2215936,2215936,2170880,2170880,2170880,2170880,2170880,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2494464,2170880,2170880,2171166,2171166,2634014,2171166,2171166,2171166,2171166,2171166,2171166,2711838,2171166,2171166,2171166,2171166,2171166,2760990,2769182,2789662,2814238,2171166,2171166,2171166,2875678,2904350,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,3199262,2171166,0,0,0,0,0,0,0,0,0,2379915,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2445451,2171019,2465931,2474123,2171019,2171019,3113099,2171019,2171019,3133579,2171019,2171019,2171019,3162251,2171019,2171019,3182731,3186827,2171019,2379776,2879627,2171019,2916491,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3027083,2171019,2171019,3063947,2699550,2171166,2728222,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2879774,2171166,2916638,2171166,2171166,2171166,2171166,2171166,2609438,2171166,2171166,2171166,2171166,2171166,2171166,2654494,2171166,2171166,2171166,2171166,2171166,2445598,2171166,2466078,2474270,2171166,2171166,2171166,2171166,2171166,2171166,2523422,2171019,2437259,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2543755,2171019,2171019,2171019,2584715,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2908299,2171019,2171019,2936971,2171019,2171019,2986123,2171019,2994315,2171019,2171019,3014795,2171019,3059851,3076235,3088523,2171166,2171166,2986270,2171166,2994462,2171166,2171166,3014942,2171166,3059998,3076382,3088670,2171166,2171166,2171166,2171166,2171166,2171166,3027230,2171166,2171166,3064094,2171166,2171166,3113246,2171166,2171166,3133726,2506891,2171019,2171019,2171019,2535563,2539659,2171019,2171019,2588811,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2691211,2171019,2707595,2171019,2715787,2171019,2723979,2764939,2171019,2171019,2797707,2215936,2215936,3170304,0,0,0,0,0,0,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2453790,2457886,2171166,2171166,2171166,2486558,2171166,2171166,2507038,2171166,2171166,2171166,2535710,2539806,2171166,2171166,2588958,2171166,2171166,2171166,2171166,2515230,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2593054,2171166,2171166,2171166,2171166,3051806,2171166,2171166,2171166,2171166,2171166,2171166,3170590,0,2388107,2392203,2171019,2171019,2433163,2171019,2461835,2171019,2171019,2171019,2510987,2171019,2171019,2171019,2171019,2580619,2171019,2605195,2637963,2171019,2171019,2171019,2920587,2171019,2171019,2171019,2990219,2171019,2171019,2171019,2171019,3051659,2171019,2171019,2171019,2453643,2457739,2171019,2171019,2171019,2171019,2171019,2171019,2515083,2171019,2171019,2171019,2171019,2646155,2670731,2752651,2756747,2846859,2961547,2171019,2998411,2171019,3010699,2171019,2171019,2687115,2748555,2171019,2171019,2171019,2924683,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3121291,2171019,2171019,2171019,3170443,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2486272,2215936,2215936,2506752,3145867,3158155,3166347,2387968,2392064,2215936,2215936,2433024,2215936,2461696,2215936,2215936,2215936,2510848,2215936,2215936,0,0,0,0,0,0,2179072,0,0,0,0,0,553,2170880,2215936,2215936,2215936,2215936,2215936,3121152,2215936,2215936,3145728,3158016,3166208,2388254,2392350,2171166,2171166,2433310,2171166,2461982,2171166,2171166,2171166,2511134,2171166,2171166,0,2171166,2171166,2580766,2171166,2605342,2638110,2171166,2171166,2171166,2171166,3031326,2171166,3055902,2171166,2171166,2171166,2171166,3092766,2171166,2171166,3125534,2171166,2171166,2171166,3162398,2171166,2171166,3182878,3186974,2171166,0,0,0,2171019,2171019,2171019,2171019,3109003,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2215936,2215936,2215936,2400256,2215936,2215936,2215936,2215936,2171166,2687262,0,0,2748702,2171166,2171166,0,2171166,2924830,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2597150,2171166,2621726,2171166,2171166,2642206,2171166,2171166,2171166,2171166,3121438,2171166,2171166,3146014,3158302,3166494,2171019,2420875,2429067,2171019,2478219,2171019,2171019,2171019,2171019,2547851,2556043,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3129483,2215936,2171019,3141771,2215936,2420736,2428928,2215936,2478080,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2646016,2670592,2752512,2756608,2846720,2961408,2215936,2998272,2215936,3010560,2215936,2215936,2215936,3141632,2171166,2421022,2429214,2171166,2478366,2171166,2171166,2171166,2171166,0,0,2171166,2171166,2171166,2171166,2646302,2670878,0,0,0,0,37,110630,0,0,0,114730,106539,0,45,45,45,45,45,1405,1406,45,45,45,45,1409,45,45,45,45,45,1415,45,45,45,45,45,45,45,45,45,45,1238,45,45,45,45,67,2752798,2756894,0,2847006,2961694,2171166,2998558,2171166,3010846,2171166,2171166,2171166,3141918,2171019,2171019,2490507,3129344,2171166,2171166,2490654,2171166,2171166,2171166,0,0,2547998,2556190,2171166,2171166,2171166,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,45,167,45,45,45,45,185,187,45,45,198,45,45,0,2171166,2171166,2171166,2171166,2171166,2171166,3129630,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2576523,2171019,2171019,2171019,2171019,2171019,2609291,2171019,2215936,2215936,2215936,2215936,2215936,2215936,3002368,2215936,2215936,2171166,2171166,2494750,2171166,2171166,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,147,2584576,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2171166,2171166,2171166,2171166,0,0,0,2171166,2171166,2171166,2171166,0,0,0,2171166,2171166,2171166,3002654,2171166,2171166,2171019,2171019,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,0,0,0,2175257,0,0,2584862,2171166,2171166,0,0,2171166,2171166,2171166,2171166,2171166,2171019,2441355,2171019,2527371,2171019,2601099,2171019,2850955,2171019,2171019,2171019,3022987,2215936,2441216,2215936,2527232,2215936,2600960,2215936,2850816,2215936,2215936,0,0,0,0,0,0,2179072,0,0,0,0,69632,287,2170880,2215936,3022848,2171166,2441502,2171166,2527518,0,0,2171166,2601246,2171166,0,2851102,2171166,2171166,2171166,2171166,2720030,2744606,2171166,2171166,2171166,2834718,2838814,2171166,2908446,2171166,2171166,2937118,3023134,2171019,2519179,2171019,2171019,2171019,2171019,2171019,2215936,2519040,2215936,2215936,2215936,2215936,2215936,2171166,2171166,2171166,3215646,0,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2486411,2171019,2171019,2171019,2629771,2171019,2171019,2171019,2171019,2719883,2744459,2171019,2171019,2171019,2834571,2838667,2171019,2519326,0,0,2171166,2171166,0,2171166,2171166,2171166,2396299,2171019,2171019,2171019,2171019,3018891,2396160,2215936,2215936,2215936,2215936,3018752,2396446,0,0,2171166,2171166,2171166,2171166,3019038,2171019,2650251,2965643,2171019,2215936,2650112,2965504,2215936,0,0,2171166,2650398,2965790,2171166,2551947,2171019,2551808,2215936,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,144,45,45,67,67,67,67,67,228,67,67,67,67,67,67,67,67,67,1929,97,97,97,97,0,0,0,2552094,2171166,2171019,2215936,0,2171166,2171019,2215936,0,2171166,2171019,2215936,0,2171166,2977931,2977792,2978078,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,1321,97,131072,0,0,0,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,18,18,24,24,0,28,28,0,140,0,2379776,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2445312,2170880,2465792,2473984,2170880,2170880,2170880,2584576,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2170880,2170880,2170880,3162112,2170880,2170880,3182592,3186688,2170880,0,140,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3002368,2170880,2170880,2215936,2215936,2494464,2215936,2215936,2215936,2215936,2215936,2215936,3215360,544,0,0,0,544,0,546,0,0,0,546,0,0,2183168,0,0,552,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,0,2170880,2170880,2170880,0,2170880,2920448,2170880,2170880,2170880,2990080,2170880,2170880,552,0,0,0,552,0,287,0,2170880,2170880,2170880,2170880,2170880,2437120,2170880,2170880,18,0,0,0,0,0,0,0,0,2220032,0,0,644,0,2215936,2215936,3170304,544,0,546,0,552,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3198976,2170880,0,0,0,140,0,0,53264,18,49172,57366,24,8192,28,102432,249856,110630,114730,106539,0,0,32768,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,151640,53264,18,18,49172,0,57366,0,24,24,24,0,28,28,28,28,0,0,0,0,0,0,0,0,0,0,0,2170880,2170880,2170880,2416640,53264,18,49172,57366,24,8192,28,102432,253952,110630,114730,106539,0,0,32856,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,192512,53264,18,18,49172,0,57366,0,2232445,184320,2232445,0,2240641,2240641,184320,2240641,102432,0,0,0,221184,2220032,110630,0,0,0,114730,106539,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3108864,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,0,0,0,45056,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,18,18,24,24,0,127,127,53264,18,49172,258071,24,8192,28,102432,0,110630,114730,106539,0,0,32768,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,204800,53264,18,49172,57366,24,27,28,102432,0,110630,114730,106539,0,0,0,53264,18,49172,57366,24,8192,28,33,0,33,33,33,0,0,0,53264,18,18,49172,0,57366,0,24,24,24,16384,28,28,28,28,0,0,0,0,0,0,0,0,0,0,139,2170880,2170880,2170880,2416640,67,67,37139,37139,24853,24853,0,70179,0,0,0,65820,65820,369,287,97,0,0,97,97,0,97,97,97,45,2030,45,45,45,45,67,1573,67,67,67,67,67,67,67,67,67,67,67,1699,67,67,67,67,25403,546,70179,0,0,66365,66365,552,0,97,97,97,97,97,97,97,97,1355,97,97,97,1358,97,97,97,641,0,0,0,925,41606,0,0,0,0,45,45,45,45,45,45,45,1187,45,45,45,45,45,0,1480,0,0,0,0,1319,0,97,97,97,97,97,97,97,97,97,592,97,97,97,97,97,97,97,97,97,97,1531,45,45,45,45,45,45,45,45,45,45,45,45,1680,45,45,45,641,0,924,0,925,41606,0,0,0,0,45,45,45,45,45,45,1186,45,45,45,45,45,45,67,67,37139,37139,24853,24853,0,70179,282,0,0,65820,65820,369,287,97,0,0,97,97,0,97,2028,97,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,1767,67,67,67,0,0,0,0,0,0,1612,97,97,97,97,97,97,0,1785,97,97,97,97,97,97,0,0,97,97,97,97,1790,97,0,0,2170880,2170880,3051520,2170880,2170880,2170880,2170880,2170880,2170880,3170304,241664,2387968,2392064,2170880,2170880,2433024,53264,19,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,274432,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,270336,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,1134711,53264,18,49172,57366,24,8192,28,102432,0,1126440,1126440,1126440,0,0,1126400,53264,18,49172,57366,24,8192,28,102432,36,110630,114730,106539,0,0,217088,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,94,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,96,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,24666,53264,18,18,49172,0,57366,0,24,24,24,126,28,28,28,28,102432,53264,122,123,49172,0,57366,0,24,24,24,0,28,28,28,28,102432,2170880,2170880,4256099,0,0,0,0,0,0,0,0,2220032,0,0,0,0,0,0,0,0,1319,0,0,0,0,97,97,97,97,97,97,97,1109,97,97,97,97,1113,132,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,146,150,45,45,45,45,45,175,45,180,45,186,45,189,45,45,203,67,256,67,67,270,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,97,293,297,97,97,97,97,97,322,97,327,97,333,97,0,0,97,2026,0,2027,97,97,45,45,45,45,45,45,67,67,67,1685,67,67,67,67,67,67,67,1690,67,336,97,97,350,97,97,0,53264,0,18,18,24,24,356,28,28,0,0,0,0,0,0,0,0,0,0,140,2170880,2170880,2170880,2416640,2424832,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2617344,2170880,45,439,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,525,67,67,67,67,67,67,67,67,67,67,67,0,0,0,0,0,0,0,0,0,0,0,0,97,97,97,97,622,97,97,97,97,97,97,97,97,97,97,97,97,1524,97,97,1527,369,648,45,45,45,45,45,45,45,45,45,659,45,45,45,45,408,45,45,45,45,45,45,45,45,45,45,45,1239,45,45,45,67,729,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,762,67,746,67,67,67,67,67,67,67,67,67,759,67,67,67,67,0,0,0,1477,0,1086,0,0,0,1479,0,1090,67,67,796,67,67,799,67,67,67,67,67,67,67,67,67,67,67,67,1291,67,67,67,811,67,67,67,67,67,816,67,67,67,67,67,67,67,37689,544,25403,546,70179,0,0,66365,66365,552,833,97,97,97,97,97,97,97,97,1380,0,0,0,45,45,45,45,45,1185,45,45,45,45,45,45,45,386,45,45,45,45,45,45,45,45,1810,45,45,45,45,45,45,67,97,97,844,97,97,97,97,97,97,97,97,97,857,97,97,97,0,97,97,97,0,97,97,97,97,97,97,97,97,97,97,45,45,45,97,97,97,894,97,97,897,97,97,97,97,97,97,97,97,97,0,0,0,1382,45,45,45,97,909,97,97,97,97,97,914,97,97,97,97,97,97,97,923,67,67,1079,67,67,67,67,67,37689,1085,25403,1089,66365,1093,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,148,1114,97,97,97,97,97,97,1122,97,97,97,97,97,97,97,97,97,606,97,97,97,97,97,97,97,97,97,97,1173,97,97,97,97,97,12288,0,925,0,1179,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,145,45,45,67,67,67,67,67,1762,67,67,67,1766,67,67,67,67,67,67,528,67,67,67,67,67,67,67,67,67,97,97,97,97,97,0,1934,67,67,1255,67,67,67,67,67,67,67,67,67,67,67,67,67,1035,67,67,67,67,67,67,1297,67,67,67,67,67,67,0,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,1111,97,97,97,97,97,97,1327,97,97,97,97,97,97,97,97,97,97,97,97,33344,97,97,97,1335,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,0,97,97,1377,97,97,97,97,97,97,0,1179,0,45,45,45,45,670,45,45,45,45,45,45,45,45,45,45,45,430,45,45,45,45,67,67,1438,67,67,1442,67,67,67,67,67,67,67,67,67,67,67,67,1592,67,67,67,1451,67,67,67,67,67,67,67,67,67,67,1458,67,67,67,67,0,0,1305,0,0,0,0,0,1311,0,0,0,1317,0,0,0,0,0,0,0,97,97,1322,97,97,1491,97,97,1495,97,97,97,97,97,97,97,97,97,97,0,45,45,45,45,45,45,45,45,45,45,45,45,1551,45,1553,45,1504,97,97,97,97,97,97,97,97,97,97,1513,97,97,97,97,0,45,45,45,45,1536,45,45,45,45,1540,45,67,67,67,67,67,1585,67,67,67,67,67,67,67,67,67,67,67,67,1700,67,67,67,97,1648,97,97,97,97,97,97,97,97,0,45,45,45,45,45,45,45,45,45,45,1541,0,97,97,97,97,0,1940,0,97,97,97,97,97,97,45,45,2011,45,45,45,2015,67,67,2017,67,67,67,2021,97,67,67,812,67,67,67,67,67,67,67,67,67,67,67,37689,544,97,97,97,910,97,97,97,97,97,97,97,97,97,97,97,923,0,0,0,45,45,45,45,1184,45,45,45,45,1188,45,45,45,45,1414,45,45,45,1417,45,1419,45,45,45,45,45,443,45,45,45,45,45,45,453,45,45,67,67,67,67,1244,67,67,67,67,1248,67,67,67,67,67,67,67,0,37139,24853,0,0,0,282,41098,65820,97,1324,97,97,97,97,1328,97,97,97,97,97,97,97,97,97,0,0,930,45,45,45,45,97,97,97,97,1378,97,97,97,97,0,1179,0,45,45,45,45,671,45,45,45,45,45,45,45,45,45,45,45,975,45,45,45,45,67,67,1923,67,1925,67,67,1927,67,97,97,97,97,97,0,0,97,97,97,97,1985,45,45,45,45,45,45,1560,45,45,45,45,45,45,45,45,45,946,45,45,950,45,45,45,0,97,97,97,1939,0,0,0,97,1943,97,97,1945,97,45,45,45,669,45,45,45,45,45,45,45,45,45,45,45,45,990,45,45,45,67,257,67,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,337,97,97,97,97,97,0,53264,0,18,18,24,24,356,28,28,0,0,0,0,0,0,0,0,0,0,370,2170880,2170880,2170880,2416640,401,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,459,461,67,67,67,67,67,67,67,67,475,67,480,67,67,67,67,67,67,1054,67,67,67,67,67,67,67,67,67,67,1698,67,67,67,67,67,484,67,67,487,67,67,67,67,67,67,67,67,67,67,67,67,67,1459,67,67,97,556,558,97,97,97,97,97,97,97,97,572,97,577,97,97,0,0,1896,97,97,97,97,97,97,1903,45,45,45,45,983,45,45,45,45,988,45,45,45,45,45,45,1195,45,45,45,45,45,45,45,45,45,45,1549,45,45,45,45,45,581,97,97,584,97,97,97,97,97,97,97,97,97,97,97,97,97,1153,97,97,369,0,45,45,45,45,45,45,45,45,45,45,45,662,45,45,45,684,45,45,45,45,45,45,45,45,45,45,45,45,1004,45,45,45,67,67,67,749,67,67,67,67,67,67,67,67,67,761,67,67,67,67,67,67,1068,67,67,67,1071,67,67,67,67,1076,794,795,67,67,67,67,67,67,67,67,67,67,67,67,67,67,0,544,97,97,97,97,847,97,97,97,97,97,97,97,97,97,859,97,0,0,2025,97,20480,97,97,2029,45,45,45,45,45,45,67,67,67,1575,67,67,67,67,67,67,67,67,67,1775,67,67,67,97,97,97,97,892,893,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1515,97,993,994,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,992,67,67,67,1284,67,67,67,67,67,67,67,67,67,67,67,67,67,1607,67,67,97,1364,97,97,97,97,97,97,97,97,97,97,97,97,97,97,596,97,45,1556,1557,45,45,45,45,45,45,45,45,45,45,45,45,45,45,696,45,1596,1597,67,67,67,67,67,67,67,67,67,67,67,67,67,67,499,67,97,97,97,1621,97,97,97,97,97,97,97,97,97,97,97,97,97,1346,97,97,97,97,1740,97,97,97,97,45,45,45,45,45,45,45,45,45,45,1678,45,45,45,45,45,67,97,97,97,97,97,97,1836,0,97,97,97,97,97,0,0,97,97,97,1984,97,45,45,45,45,45,45,1808,45,45,45,45,45,45,45,45,67,739,67,67,67,67,67,744,45,45,1909,45,45,45,45,45,45,45,67,1917,67,1918,67,67,67,67,67,67,1247,67,67,67,67,67,67,67,67,67,67,532,67,67,67,67,67,67,1922,67,67,67,67,67,67,67,97,1930,97,1931,97,0,0,97,97,0,97,97,97,45,45,45,45,45,45,67,67,67,67,1576,67,67,67,67,1580,67,67,0,97,97,1938,97,0,0,0,97,97,97,97,97,97,45,45,45,699,45,45,45,704,45,45,45,45,45,45,45,45,987,45,45,45,45,45,45,45,67,67,97,97,97,97,0,0,97,97,97,2006,97,97,97,97,0,45,1533,45,45,45,45,45,45,45,45,45,1416,45,45,45,45,45,45,45,45,722,723,45,45,45,45,45,45,2045,67,67,67,2047,0,0,97,97,97,2051,45,45,67,67,0,0,0,0,925,41606,0,0,0,0,45,45,45,45,45,45,409,45,45,45,45,45,45,45,45,45,1957,45,67,67,67,67,67,1836,97,97,45,67,0,97,45,67,0,97,45,67,0,97,45,45,67,67,67,1761,67,67,67,1764,67,67,67,67,67,67,67,494,67,67,67,67,67,67,67,67,67,787,67,67,67,67,67,67,45,45,420,45,45,422,45,45,425,45,45,45,45,45,45,45,387,45,45,45,45,397,45,45,45,67,460,67,67,67,67,67,67,67,67,67,67,67,67,67,67,515,67,485,67,67,67,67,67,67,67,67,67,67,67,67,67,498,67,67,67,67,67,97,0,2039,97,97,97,97,97,45,45,45,45,1426,45,45,45,67,67,67,67,67,67,67,67,67,1689,67,67,67,97,557,97,97,97,97,97,97,97,97,97,97,97,97,97,97,612,97,582,97,97,97,97,97,97,97,97,97,97,97,97,97,595,97,97,97,97,97,896,97,97,97,97,97,97,97,97,97,97,885,97,97,97,97,97,45,939,45,45,45,45,943,45,45,45,45,45,45,45,45,45,45,1916,67,67,67,67,67,45,67,67,67,67,67,67,67,1015,67,67,67,67,1019,67,67,67,67,67,67,1271,67,67,67,67,67,67,1277,67,67,67,67,67,67,1287,67,67,67,67,67,67,67,67,67,67,804,67,67,67,67,67,1077,67,67,67,67,67,67,67,37689,0,25403,0,66365,0,0,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2437120,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2543616,2170880,2170880,2170880,2170880,2170880,2629632,1169,97,1171,97,97,97,97,97,97,97,12288,0,925,0,1179,0,0,0,0,925,41606,0,0,0,0,45,45,45,45,936,45,45,67,67,214,67,220,67,67,233,67,243,67,248,67,67,67,67,67,67,1298,67,67,67,67,0,0,0,0,0,0,97,97,97,97,97,1617,97,0,0,0,45,45,45,1183,45,45,45,45,45,45,45,45,45,393,45,45,45,45,45,45,67,67,1243,67,67,67,67,67,67,67,67,67,67,67,67,67,1074,67,67,1281,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,776,1323,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,907,45,1412,45,45,45,45,45,45,45,1418,45,45,45,45,45,45,686,45,45,45,690,45,45,695,45,45,67,67,67,67,67,1465,67,67,67,67,67,67,67,67,67,67,67,97,97,97,1712,97,97,97,97,1741,97,97,97,45,45,45,45,45,45,45,45,45,426,45,45,45,45,45,45,67,67,67,1924,67,67,67,67,67,97,97,97,97,97,0,0,97,97,1983,97,97,45,45,1987,45,1988,45,0,97,97,97,97,0,0,0,1942,97,97,97,97,97,45,45,45,700,45,45,45,45,45,45,45,45,45,45,711,45,45,153,45,45,166,45,176,45,181,45,45,188,191,196,45,204,255,258,263,67,271,67,67,0,37139,24853,0,0,0,282,41098,65820,97,97,97,294,97,300,97,97,313,97,323,97,328,97,97,335,338,343,97,351,97,97,0,53264,0,18,18,24,24,356,28,28,0,0,0,0,0,0,0,0,41098,0,140,45,45,45,45,1404,45,45,45,45,45,45,45,45,45,45,1411,67,67,486,67,67,67,67,67,67,67,67,67,67,67,67,67,1251,67,67,501,67,67,67,67,67,67,67,67,67,67,67,67,513,67,67,67,67,67,67,1443,67,67,67,67,67,67,67,67,67,67,1263,67,67,67,67,67,97,97,583,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1526,97,598,97,97,97,97,97,97,97,97,97,97,97,97,610,97,97,0,97,97,1796,97,97,97,97,97,97,97,45,45,45,45,45,1744,45,45,45,369,0,651,45,653,45,654,45,656,45,45,45,660,45,45,45,45,1558,45,45,45,45,45,45,45,45,1566,45,45,681,45,683,45,45,45,45,45,45,45,45,691,692,694,45,45,45,716,45,45,45,45,45,45,45,45,45,45,45,45,709,45,45,712,45,714,45,45,45,718,45,45,45,45,45,45,45,726,45,45,45,733,45,45,45,45,67,67,67,67,67,67,67,67,67,67,67,67,1691,67,67,747,67,67,67,67,67,67,67,67,67,760,67,67,67,0,0,0,0,0,0,97,1613,97,97,97,97,97,97,1509,97,97,97,97,97,97,97,97,97,0,1179,0,45,45,45,45,67,764,67,67,67,67,768,67,770,67,67,67,67,67,67,67,67,97,97,97,97,0,0,0,1977,67,778,779,781,67,67,67,67,67,67,788,789,67,67,792,793,67,67,67,813,67,67,67,67,67,67,67,67,67,824,37689,544,25403,546,70179,0,0,66365,66365,552,0,836,97,838,97,839,97,841,97,97,97,845,97,97,97,97,97,97,97,97,97,858,97,97,0,1728,97,97,97,0,97,97,97,97,97,97,97,97,97,97,45,1802,45,97,97,862,97,97,97,97,866,97,868,97,97,97,97,97,97,0,0,97,97,1788,97,97,97,0,0,97,97,876,877,879,97,97,97,97,97,97,886,887,97,97,890,891,97,97,97,97,97,97,97,899,97,97,97,903,97,97,97,0,97,97,97,0,97,97,97,97,97,97,97,1646,97,97,97,97,911,97,97,97,97,97,97,97,97,97,922,923,45,955,45,957,45,45,45,45,45,45,45,45,45,45,45,45,195,45,45,45,45,45,981,982,45,45,45,45,45,45,989,45,45,45,45,45,170,45,45,45,45,45,45,45,45,45,45,411,45,45,45,45,45,67,1023,67,67,67,67,67,67,1031,67,1033,67,67,67,67,67,67,67,817,819,67,67,67,67,67,37689,544,67,1065,67,67,67,67,67,67,67,67,67,67,67,67,67,67,516,67,67,1078,67,67,1081,1082,67,67,37689,0,25403,0,66365,0,0,0,0,0,0,0,0,2171166,2171166,2171166,2171166,2171166,2437406,2171166,2171166,97,1115,97,1117,97,97,97,97,97,97,1125,97,1127,97,97,97,0,97,97,97,0,97,97,97,97,1644,97,97,97,0,97,97,97,0,97,97,1642,97,97,97,97,97,97,625,97,97,97,97,97,97,97,97,97,316,97,97,97,97,97,97,97,97,97,1159,97,97,97,97,97,97,97,97,97,97,97,97,97,1502,97,97,97,97,97,1172,97,97,1175,1176,97,97,12288,0,925,0,1179,0,0,0,0,925,41606,0,0,0,0,45,45,45,935,45,45,45,1233,45,45,45,1236,45,45,45,45,45,45,45,67,67,67,67,67,67,1873,67,67,45,45,1218,45,45,45,1223,45,45,45,45,45,45,45,1230,45,45,67,67,215,219,222,67,230,67,67,244,246,249,67,67,67,67,67,67,1882,97,97,97,97,0,0,0,97,97,97,97,97,97,45,1904,45,1905,45,67,67,67,67,67,1258,67,1260,67,67,67,67,67,67,67,67,67,495,67,67,67,67,67,67,67,67,1283,67,67,67,67,67,67,67,1290,67,67,67,67,67,67,67,818,67,67,67,67,67,67,37689,544,67,67,1295,67,67,67,67,67,67,67,67,0,0,0,0,0,0,2174976,0,0,97,97,97,1326,97,97,97,97,97,97,97,97,97,97,97,97,97,1514,97,97,97,97,97,1338,97,1340,97,97,97,97,97,97,97,97,97,97,97,1500,97,97,1503,97,1363,97,97,97,97,97,97,97,1370,97,97,97,97,97,97,97,563,97,97,97,97,97,97,578,97,1375,97,97,97,97,97,97,97,97,0,1179,0,45,45,45,45,685,45,45,45,45,45,45,45,45,45,45,45,1003,45,45,45,45,67,67,67,1463,67,67,67,67,67,67,67,67,67,67,67,67,67,1778,97,97,97,97,97,1518,97,97,97,97,97,97,97,97,97,97,97,97,609,97,97,97,45,1542,45,45,45,45,45,45,45,1548,45,45,45,45,45,1554,45,1570,1571,45,67,67,67,67,67,67,1578,67,67,67,67,67,67,67,1055,67,67,67,67,67,1061,67,67,1582,67,67,67,67,67,67,67,1588,67,67,67,67,67,1594,67,67,67,67,67,97,2038,0,97,97,97,97,97,2044,45,45,45,995,45,45,45,45,1e3,45,45,45,45,45,45,45,1809,45,1811,45,45,45,45,45,67,1610,1611,67,1476,0,1478,0,1480,0,97,97,97,97,97,97,1618,1647,1649,97,97,97,1652,97,1654,1655,97,0,45,45,45,1658,45,45,67,67,216,67,67,67,67,234,67,67,67,67,252,254,1845,97,97,97,97,97,97,97,45,45,45,45,45,45,45,45,945,45,947,45,45,45,45,45,67,67,67,67,67,1881,97,97,97,97,97,0,0,0,97,97,97,97,97,1902,45,45,45,45,45,45,1908,45,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,1921,67,67,67,67,67,67,67,67,97,97,97,97,97,0,0,0,97,97,0,97,1937,97,97,1940,0,0,97,97,97,97,97,97,1947,1948,1949,45,45,45,1952,45,1954,45,45,45,45,1959,1960,1961,67,67,67,67,67,67,1455,67,67,67,67,67,67,67,67,67,67,757,67,67,67,67,67,67,1964,67,1966,67,67,67,67,1971,1972,1973,97,0,0,0,97,97,1104,97,97,97,97,97,97,97,97,97,97,884,97,97,97,889,97,97,1978,97,0,0,1981,97,97,97,97,45,45,45,45,45,45,736,45,67,67,67,67,67,67,67,67,67,67,67,1018,67,67,67,45,67,67,67,67,0,2049,97,97,97,97,45,45,67,67,0,0,0,0,925,41606,0,0,0,0,45,933,45,45,45,45,1234,45,45,45,45,45,45,45,45,45,45,67,97,97,288,97,97,97,97,97,97,317,97,97,97,97,97,97,0,0,97,1787,97,97,97,97,0,0,45,45,378,45,45,45,45,45,390,45,45,45,45,45,45,45,424,45,45,45,431,433,45,45,45,67,1050,67,67,67,67,67,67,67,67,67,67,67,67,67,67,518,67,97,97,97,1144,97,97,97,97,97,97,97,97,97,97,97,97,632,97,97,97,97,97,97,97,1367,97,97,97,97,97,97,97,97,97,97,97,855,97,97,97,97,67,97,97,97,97,97,97,1837,0,97,97,97,97,97,0,0,0,1897,97,97,97,97,97,45,45,45,45,45,1208,45,45,45,45,45,45,45,45,45,45,724,45,45,45,45,45,97,2010,45,45,45,45,45,45,2016,67,67,67,67,67,67,2022,45,2046,67,67,67,0,0,2050,97,97,97,45,45,67,67,0,0,0,0,925,41606,0,0,0,0,932,45,45,45,45,45,1222,45,45,45,45,45,45,45,45,45,45,1227,45,45,45,45,45,133,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,45,701,702,45,45,705,706,45,45,45,45,45,45,703,45,45,45,45,45,45,45,45,45,719,45,45,45,45,45,725,45,45,45,369,649,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1216,25403,546,70179,0,0,66365,66365,552,834,97,97,97,97,97,97,97,1342,97,97,97,97,97,97,97,97,0,97,97,97,97,97,97,97,1799,97,97,45,45,45,1569,45,45,45,1572,67,67,67,67,67,67,67,67,67,67,67,0,0,0,1306,0,67,67,67,1598,67,67,67,67,67,67,67,67,1606,67,67,1609,97,97,97,1650,97,97,1653,97,97,97,0,45,45,1657,45,45,45,1206,45,45,45,45,45,45,45,45,45,45,45,45,1421,45,45,45,1703,67,67,67,67,67,67,67,67,67,67,97,97,1711,97,97,0,1895,0,97,97,97,97,97,97,45,45,45,45,45,958,45,960,45,45,45,45,45,45,45,45,1913,45,45,1915,67,67,67,67,67,67,67,466,67,67,67,67,67,67,481,67,45,1749,45,45,45,45,45,45,45,45,1755,45,45,45,45,45,173,45,45,45,45,45,45,45,45,45,45,974,45,45,45,45,45,67,67,67,67,67,1773,67,67,67,67,67,67,67,97,97,97,97,1886,0,0,0,97,97,67,2035,2036,67,67,97,0,0,97,2041,2042,97,97,45,45,45,45,1662,45,45,45,45,45,45,45,45,45,45,45,1397,45,45,45,45,151,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,437,205,45,67,67,67,218,67,67,67,67,67,67,67,67,67,67,67,1047,67,67,67,67,97,97,97,97,298,97,97,97,97,97,97,97,97,97,97,97,870,97,97,97,97,97,97,97,97,352,97,0,53264,0,18,18,24,24,0,28,28,0,0,0,0,0,0,365,0,41098,0,140,45,45,45,45,45,1427,45,45,67,67,67,67,67,67,67,1435,520,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1037,617,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,923,45,1232,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,67,67,1919,67,1759,45,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1021,45,154,45,162,45,45,45,45,45,45,45,45,45,45,45,45,964,45,45,45,206,45,67,67,67,67,221,67,229,67,67,67,67,67,67,67,67,530,67,67,67,67,67,67,67,67,755,67,67,67,67,67,67,67,67,785,67,67,67,67,67,67,67,67,802,67,67,67,807,67,67,67,97,97,97,97,353,97,0,53264,0,18,18,24,24,0,28,28,0,0,0,0,0,0,366,0,0,0,140,2170880,2170880,2170880,2416640,402,45,45,45,45,45,45,45,410,45,45,45,45,45,45,45,674,45,45,45,45,45,45,45,45,389,45,394,45,45,398,45,45,45,45,441,45,45,45,45,45,447,45,45,45,454,45,45,67,67,67,67,67,67,67,67,67,67,67,1768,67,67,67,67,67,488,67,67,67,67,67,67,67,496,67,67,67,67,67,67,67,1774,67,67,67,67,67,97,97,97,97,0,0,97,97,97,0,97,97,97,97,97,97,97,97,67,67,523,67,67,527,67,67,67,67,67,533,67,67,67,540,97,97,97,585,97,97,97,97,97,97,97,593,97,97,97,97,97,97,1784,0,97,97,97,97,97,97,0,0,97,97,97,97,97,97,0,0,0,18,18,24,24,0,28,28,97,97,620,97,97,624,97,97,97,97,97,630,97,97,97,637,713,45,45,45,45,45,45,721,45,45,45,45,45,45,45,45,1197,45,45,45,45,45,45,45,45,730,732,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,1581,67,45,67,67,67,67,1012,67,67,67,67,67,67,67,67,67,67,67,1059,67,67,67,67,67,1024,67,67,67,67,67,67,67,67,67,67,67,67,67,67,775,67,67,67,67,1066,67,67,67,67,67,67,67,67,67,67,67,67,479,67,67,67,67,67,67,1080,67,67,67,67,37689,0,25403,0,66365,0,0,0,0,0,0,0,287,0,0,0,287,0,2379776,2170880,2170880,97,97,97,1118,97,97,97,97,97,97,97,97,97,97,97,97,920,97,97,0,0,0,0,45,1181,45,45,45,45,45,45,45,45,45,45,45,432,45,45,45,45,45,45,1219,45,45,45,45,45,45,1226,45,45,45,45,45,45,959,45,45,45,45,45,45,45,45,45,184,45,45,45,45,202,45,1241,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1266,67,1268,67,67,67,67,67,67,67,67,67,67,67,67,1279,67,67,67,67,67,272,67,0,37139,24853,0,0,0,0,41098,65820,67,67,67,67,67,1286,67,67,67,67,67,67,67,67,67,1293,67,67,67,1296,67,67,67,67,67,67,67,0,0,0,0,0,281,94,0,0,97,97,97,1366,97,97,97,97,97,97,97,97,97,1373,97,97,18,0,139621,0,0,0,0,0,0,364,0,0,367,0,97,1376,97,97,97,97,97,97,97,0,0,0,45,45,1384,45,45,67,208,67,67,67,67,67,67,237,67,67,67,67,67,67,67,1069,1070,67,67,67,67,67,67,67,0,37140,24854,0,0,0,0,41098,65821,45,1423,45,45,45,45,45,45,67,67,1431,67,67,67,67,67,67,67,1083,37689,0,25403,0,66365,0,0,0,1436,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1830,67,1452,1453,67,67,67,67,1456,67,67,67,67,67,67,67,67,67,771,67,67,67,67,67,67,1461,67,67,67,1464,67,1466,67,67,67,67,67,67,1470,67,67,67,67,67,67,1587,67,67,67,67,67,67,67,67,1595,1489,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1129,97,1505,1506,97,97,97,97,1510,97,97,97,97,97,97,97,97,97,1163,1164,97,97,97,97,97,1516,97,97,97,1519,97,1521,97,97,97,97,97,97,1525,97,97,18,0,139621,0,0,0,0,0,0,364,0,0,367,41606,67,67,67,67,67,1586,67,67,67,67,67,67,67,67,67,67,67,1276,67,67,67,67,67,67,67,67,67,1600,67,67,67,67,67,67,67,67,67,67,67,1301,0,0,0,1307,97,97,1620,97,97,97,97,97,97,97,1627,97,97,97,97,97,97,913,97,97,97,97,919,97,97,97,0,97,97,97,1781,97,97,0,0,97,97,97,97,97,97,0,0,97,97,97,97,97,97,0,1792,1860,45,1862,1863,45,1865,45,67,67,67,67,67,67,67,67,1875,67,1877,1878,67,1880,67,97,97,97,97,97,1887,0,1889,97,97,18,0,139621,0,0,0,0,0,0,364,237568,0,367,0,97,1893,0,0,0,97,1898,1899,97,1901,97,45,45,45,45,45,2014,45,67,67,67,67,67,2020,67,97,1989,45,1990,45,45,45,67,67,67,67,67,67,1996,67,1997,67,67,67,67,67,273,67,0,37139,24853,0,0,0,0,41098,65820,67,67,97,97,97,97,0,0,97,97,2005,0,97,2007,97,97,18,0,139621,0,0,0,642,0,133,364,0,0,367,41606,0,97,97,2056,2057,0,2059,45,67,0,97,45,67,0,97,45,45,67,209,67,67,67,223,67,67,67,67,67,67,67,67,67,786,67,67,67,791,67,67,45,45,940,45,45,45,45,45,45,45,45,45,45,45,45,45,45,727,45,45,67,67,67,67,67,67,67,67,1016,67,67,67,67,67,67,67,67,37689,0,25403,0,66365,0,0,0,133,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,142,45,45,67,210,67,67,67,225,67,67,239,67,67,67,250,67,67,67,67,67,464,67,67,67,67,67,476,67,67,67,67,67,67,67,1709,67,67,67,97,97,97,97,97,97,0,0,97,97,97,97,97,1843,0,67,259,67,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,289,97,97,97,303,97,97,97,97,97,97,97,97,97,97,901,97,97,97,97,97,339,97,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,0,358,0,0,0,0,0,0,41098,0,140,45,45,45,45,45,1953,45,1955,45,45,45,67,67,67,67,67,67,67,1687,1688,67,67,67,67,45,45,405,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1203,45,458,67,67,67,67,67,67,67,67,67,470,477,67,67,67,67,67,67,67,1970,97,97,97,1974,0,0,0,97,1103,97,97,97,97,97,97,97,97,97,97,97,1372,97,97,97,97,67,522,67,67,67,67,67,67,67,67,67,67,67,536,67,67,67,67,67,67,1696,67,67,67,67,67,67,67,1701,67,555,97,97,97,97,97,97,97,97,97,567,574,97,97,97,97,97,301,97,309,97,97,97,97,97,97,97,97,97,900,97,97,97,905,97,97,97,619,97,97,97,97,97,97,97,97,97,97,97,633,97,97,18,0,139621,0,0,362,0,0,0,364,0,0,367,41606,369,649,45,45,45,45,45,45,45,45,45,45,45,45,663,664,67,67,67,67,750,751,67,67,67,67,758,67,67,67,67,67,67,67,1272,67,67,67,67,67,67,67,67,67,1057,1058,67,67,67,67,67,67,67,67,797,67,67,67,67,67,67,67,67,67,67,67,67,512,67,67,67,97,97,97,97,895,97,97,97,97,97,97,97,97,97,97,97,902,97,97,97,97,67,67,1051,67,67,67,67,67,67,67,67,67,67,67,1062,67,67,67,67,67,491,67,67,67,67,67,67,67,67,67,67,67,1302,0,0,0,1308,97,97,97,97,1145,97,97,97,97,97,97,97,97,97,97,97,1139,97,97,97,97,1156,97,97,97,97,97,97,1161,97,97,97,97,97,1166,97,97,18,640,139621,0,641,0,0,0,0,364,0,0,367,41606,67,67,67,67,1257,67,67,67,67,67,67,67,67,67,67,67,0,0,1305,0,0,97,97,1337,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1630,97,67,1474,67,67,0,0,0,0,0,0,0,0,0,0,0,0,0,2380062,2171166,2171166,97,1529,97,97,0,45,45,45,45,45,45,45,45,45,45,45,1228,45,45,45,45,67,67,67,67,1707,67,67,67,67,67,67,97,97,97,97,97,0,0,0,97,1891,1739,97,97,97,97,97,97,45,45,45,45,45,45,45,45,45,1198,45,1200,45,45,45,45,97,97,1894,0,0,97,97,97,97,97,97,45,45,45,45,45,672,45,45,45,45,45,45,45,45,45,45,45,1420,45,45,45,45,67,67,1965,67,1967,67,67,67,97,97,97,97,0,1976,0,97,97,45,67,0,97,45,67,0,97,45,67,0,97,45,97,97,1979,0,0,97,1982,97,97,97,1986,45,45,45,45,45,735,45,45,67,67,67,67,67,67,67,67,67,67,67,67,67,1770,67,67,2e3,97,97,97,2002,0,97,97,97,0,97,97,97,97,97,97,1798,97,97,97,45,45,45,2034,67,67,67,67,97,0,0,2040,97,97,97,97,45,45,45,45,1752,45,45,45,1753,1754,45,45,45,45,45,45,383,45,45,45,45,45,45,45,45,45,675,45,45,45,45,45,45,438,45,45,45,45,45,445,45,45,45,45,45,45,45,45,67,1430,67,67,67,67,67,67,67,67,67,524,67,67,67,67,67,531,67,67,67,67,67,67,67,67,37689,0,25403,0,66365,0,0,1096,97,97,97,621,97,97,97,97,97,628,97,97,97,97,97,97,0,53264,0,18,18,24,24,356,28,28,665,45,45,45,45,45,45,45,45,45,676,45,45,45,45,45,942,45,45,45,45,45,45,45,45,45,45,707,708,45,45,45,45,763,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,809,810,67,67,67,67,783,67,67,67,67,67,67,67,67,67,67,67,0,1303,0,0,0,97,861,97,97,97,97,97,97,97,97,97,97,97,97,97,97,613,97,45,45,956,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1215,45,67,67,67,67,1027,67,67,67,67,1032,67,67,67,67,67,67,67,67,37689,0,25403,0,66365,0,0,1097,1064,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1075,67,1098,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,331,97,97,97,97,1158,97,97,97,97,97,97,97,97,97,97,97,97,97,594,97,97,1309,0,0,0,1315,0,0,0,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1374,97,45,45,1543,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1240,67,67,1583,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1252,67,97,97,97,1635,97,97,97,0,97,97,97,97,97,97,97,97,1800,97,45,45,45,97,97,1793,97,97,97,97,97,97,97,97,97,97,45,45,45,1743,45,45,45,1746,45,0,97,97,97,97,97,1851,97,45,45,45,45,1856,45,45,45,45,1864,45,45,67,67,1869,67,67,67,67,1874,67,0,97,97,45,67,2058,97,45,67,0,97,45,67,0,97,45,45,67,211,67,67,67,67,67,67,240,67,67,67,67,67,67,67,1444,67,67,67,67,67,67,67,67,67,509,67,67,67,67,67,67,67,67,67,268,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,290,97,97,97,305,97,97,319,97,97,97,330,97,97,18,640,139621,0,641,0,0,0,0,364,0,643,367,41606,97,97,348,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,0,0,364,0,367,41098,369,140,45,45,45,45,380,45,45,45,45,45,45,395,45,45,45,400,369,0,45,45,45,45,45,45,45,45,658,45,45,45,45,45,972,45,45,45,45,45,45,45,45,45,45,427,45,45,45,45,45,745,67,67,67,67,67,67,67,67,756,67,67,67,67,67,67,67,67,37689,1086,25403,1090,66365,1094,0,0,97,843,97,97,97,97,97,97,97,97,854,97,97,97,97,97,97,1121,97,97,97,97,1126,97,97,97,97,45,980,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1400,45,67,67,67,1011,67,67,67,67,67,67,67,67,67,67,67,0,1304,0,0,0,1190,45,45,1193,1194,45,45,45,45,45,1199,45,1201,45,45,45,45,1911,45,45,45,45,45,67,67,67,67,67,67,67,1579,67,67,67,67,45,1205,45,45,45,45,45,45,45,45,1211,45,45,45,45,45,984,45,45,45,45,45,45,45,45,45,45,45,1550,45,45,45,45,45,1217,45,45,45,45,45,45,1225,45,45,45,45,1229,45,45,45,1388,45,45,45,45,45,45,1396,45,45,45,45,45,444,45,45,45,45,45,45,45,45,45,67,67,1574,67,67,67,67,67,67,67,67,67,67,1590,67,67,67,67,67,1254,67,67,67,67,67,1259,67,1261,67,67,67,67,1265,67,67,67,67,67,67,1708,67,67,67,67,97,97,97,97,97,97,0,0,97,97,97,97,97,0,0,67,67,67,67,1285,67,67,67,67,1289,67,67,67,67,67,67,67,67,37689,1087,25403,1091,66365,1095,0,0,97,97,97,97,1339,97,1341,97,97,97,97,1345,97,97,97,97,97,561,97,97,97,97,97,573,97,97,97,97,97,97,1717,97,0,97,97,97,97,97,97,97,591,97,97,97,97,97,97,97,97,97,1329,97,97,97,97,97,97,97,97,97,97,1351,97,97,97,97,97,97,1357,97,97,97,97,97,588,97,97,97,97,97,97,97,97,97,97,568,97,97,97,97,97,97,97,1365,97,97,97,97,1369,97,97,97,97,97,97,97,97,97,1356,97,97,97,97,97,97,45,45,1403,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1399,45,45,45,1413,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1669,45,1422,45,45,1425,45,45,1428,45,1429,67,67,67,67,67,67,67,67,1468,67,67,67,67,67,67,67,67,529,67,67,67,67,67,67,539,67,67,1475,67,0,0,0,0,0,0,0,0,0,0,0,0,140,2170880,2170880,2170880,2416640,97,97,1530,97,0,45,45,1534,45,45,45,45,45,45,45,45,1956,45,45,67,67,67,67,67,67,67,67,67,1599,67,67,1601,67,67,67,67,67,67,67,67,67,803,67,67,67,67,67,67,1632,97,1634,0,97,97,97,1640,97,97,97,1643,97,97,1645,97,97,97,97,97,912,97,97,97,97,97,97,97,97,97,0,0,0,45,45,45,45,45,45,1660,1661,45,45,45,45,1665,1666,45,45,45,45,45,1670,1692,1693,67,67,67,67,67,1697,67,67,67,67,67,67,67,1702,97,97,1714,1715,97,97,97,97,0,1721,1722,97,97,97,97,97,97,1353,97,97,97,97,97,97,97,97,1362,1726,97,0,0,97,97,97,0,97,97,97,1734,97,97,97,97,97,848,849,97,97,97,97,856,97,97,97,97,97,354,0,53264,0,18,18,24,24,0,28,28,45,45,1750,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1681,45,0,1846,97,97,97,97,97,97,45,45,1854,45,45,45,45,1859,67,67,67,1879,67,67,97,97,1884,97,97,0,0,0,97,97,97,1105,97,97,97,97,97,97,97,97,97,97,1344,97,97,97,1347,97,1892,97,0,0,0,97,97,97,1900,97,97,45,45,45,45,45,997,45,45,45,45,45,45,45,45,45,45,1002,45,45,1005,1006,45,67,67,67,67,67,1926,67,67,1928,97,97,97,97,97,0,0,97,97,97,0,97,97,97,97,97,97,1737,97,0,97,97,97,97,0,0,0,97,97,1944,97,97,1946,45,45,45,1544,45,45,45,45,45,45,45,45,45,45,45,45,190,45,45,45,152,155,45,163,45,45,177,179,182,45,45,45,193,197,45,45,45,1672,45,45,45,45,45,1677,45,1679,45,45,45,45,996,45,45,45,45,45,45,45,45,45,45,45,1212,45,45,45,45,67,260,264,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,97,295,299,302,97,310,97,97,324,326,329,97,97,97,0,97,97,1639,0,1641,97,97,97,97,97,97,97,97,1511,97,97,97,97,97,97,97,97,1523,97,97,97,97,97,97,97,97,1719,97,97,97,97,97,97,97,97,1720,97,97,97,97,97,97,97,312,97,97,97,97,97,97,97,97,1123,97,97,97,97,97,97,97,340,344,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,0,0,364,0,367,41098,369,140,45,45,373,375,419,45,45,45,45,45,45,45,45,45,428,45,45,435,45,45,45,1751,45,45,45,45,45,45,45,45,45,45,45,45,1410,45,45,45,67,67,67,505,67,67,67,67,67,67,67,67,67,514,67,67,67,67,67,67,1969,67,97,97,97,97,0,0,0,97,97,45,67,0,97,45,67,0,97,2064,2065,0,2066,45,521,67,67,67,67,67,67,67,67,67,67,534,67,67,67,67,67,67,465,67,67,67,474,67,67,67,67,67,67,67,1467,67,67,67,67,67,67,67,67,67,97,97,97,97,97,1933,0,97,97,97,602,97,97,97,97,97,97,97,97,97,611,97,97,18,640,139621,358,641,0,0,0,0,364,0,0,367,0,618,97,97,97,97,97,97,97,97,97,97,631,97,97,97,97,97,881,97,97,97,97,97,97,97,97,97,97,569,97,97,97,97,97,369,0,45,652,45,45,45,45,45,657,45,45,45,45,45,45,1235,45,45,45,45,45,45,45,45,67,67,67,1432,67,67,67,67,67,67,67,766,67,67,67,67,67,67,67,67,773,67,67,67,0,1305,0,1311,0,1317,97,97,97,97,97,97,97,1624,97,97,97,97,97,97,97,97,0,97,97,97,1724,97,97,97,777,67,67,782,67,67,67,67,67,67,67,67,67,67,67,67,535,67,67,67,67,67,67,67,814,67,67,67,67,67,67,67,67,67,37689,544,25403,546,70179,0,0,66365,66365,552,0,97,837,97,97,97,97,97,97,1496,97,97,97,97,97,97,97,97,97,97,918,97,97,97,97,0,842,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1168,97,97,97,97,864,97,97,97,97,97,97,97,97,871,97,97,97,0,1637,97,97,0,97,97,97,97,97,97,97,97,97,97,1801,45,45,97,875,97,97,880,97,97,97,97,97,97,97,97,97,97,97,1151,1152,97,97,97,67,67,67,1040,67,67,67,67,67,67,67,67,67,67,67,67,790,67,67,67,1180,0,649,45,45,45,45,45,45,45,45,45,45,45,45,45,200,45,45,67,67,67,1454,67,67,67,67,67,67,67,67,67,67,67,67,806,67,67,67,0,0,0,1481,0,1094,0,0,97,1483,97,97,97,97,97,97,304,97,97,318,97,97,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,97,97,97,1507,97,97,97,97,97,97,97,97,97,97,97,97,1332,97,97,97,1619,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1631,97,1633,97,0,97,97,97,0,97,97,97,97,97,97,97,97,97,1381,0,0,45,45,45,45,97,97,1727,0,97,97,97,0,97,97,97,97,97,97,97,97,626,97,97,97,97,97,97,636,45,45,1760,67,67,67,67,67,67,67,1765,67,67,67,67,67,67,67,1299,67,67,67,0,0,0,0,0,0,97,97,97,97,1616,97,97,1803,45,45,45,45,1807,45,45,45,45,45,1813,45,45,45,67,67,1684,67,67,67,67,67,67,67,67,67,67,67,822,67,67,37689,544,67,67,1818,67,67,67,67,1822,67,67,67,67,67,1828,67,67,67,67,67,97,0,0,97,97,97,97,97,45,45,45,2012,2013,45,45,67,67,67,2018,2019,67,67,97,67,97,97,97,1833,97,97,0,0,97,97,1840,97,97,0,0,97,97,97,0,97,97,1733,97,1735,97,97,97,0,97,97,97,1849,97,97,97,45,45,45,45,45,1857,45,45,45,1910,45,1912,45,45,1914,45,67,67,67,67,67,67,67,67,67,67,1017,67,67,1020,67,45,1861,45,45,45,45,45,67,67,67,67,67,1872,67,67,67,67,67,67,752,67,67,67,67,67,67,67,67,67,67,1446,67,67,67,67,67,1876,67,67,67,67,67,97,97,97,97,97,0,0,0,1890,97,97,97,97,97,1134,97,97,97,97,97,97,97,97,97,97,570,97,97,97,97,580,1935,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,1906,45,67,67,67,67,2048,0,97,97,97,97,45,45,67,67,0,0,0,0,925,41606,0,0,0,931,45,45,45,45,45,45,1674,45,1676,45,45,45,45,45,45,45,446,45,45,45,45,45,45,45,67,67,67,67,1871,67,67,67,67,0,97,97,45,67,0,97,2060,2061,0,2063,45,67,0,97,45,45,156,45,45,45,45,45,45,45,45,45,192,45,45,45,45,1673,45,45,45,45,45,45,45,45,45,45,45,429,45,45,45,45,67,67,67,269,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,349,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,0,0,364,0,367,41098,369,140,45,45,374,45,45,67,67,213,217,67,67,67,67,67,242,67,247,67,253,45,45,698,45,45,45,45,45,45,45,45,45,45,45,45,45,399,45,45,0,0,0,0,925,41606,0,929,0,0,45,45,45,45,45,45,1391,45,45,1395,45,45,45,45,45,45,423,45,45,45,45,45,45,45,436,45,67,67,67,67,1041,67,1043,67,67,67,67,67,67,67,67,67,67,1776,67,67,97,97,97,1099,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,888,97,97,97,1131,97,97,97,97,1135,97,1137,97,97,97,97,97,97,97,1497,97,97,97,97,97,97,97,97,97,883,97,97,97,97,97,97,1310,0,0,0,1316,0,0,0,0,1100,0,0,0,97,97,97,97,97,1107,97,97,97,97,97,97,97,97,1343,97,97,97,97,97,97,1348,0,0,1317,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,1112,97,45,1804,45,45,45,45,45,45,45,45,45,45,45,45,45,67,1868,67,1870,67,67,67,67,67,1817,67,67,1819,67,67,67,67,67,67,67,67,67,67,67,67,823,67,37689,544,67,97,1832,97,97,1834,97,0,0,97,97,97,97,97,0,0,97,97,97,0,1732,97,97,97,97,97,97,97,850,97,97,97,97,97,97,97,97,97,1177,0,0,925,0,0,0,0,97,97,97,97,0,0,1941,97,97,97,97,97,97,45,45,45,1991,1992,45,67,67,67,67,67,67,67,67,67,1998,134,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,45,941,45,45,944,45,45,45,45,45,45,952,45,45,207,67,67,67,67,67,226,67,67,67,67,67,67,67,67,67,820,67,67,67,67,37689,544,369,650,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1682,25403,546,70179,0,0,66365,66365,552,835,97,97,97,97,97,97,97,1522,97,97,97,97,97,97,97,97,0,97,97,97,97,97,97,1725,67,67,67,1695,67,67,67,67,67,67,67,67,67,67,67,67,1034,67,1036,67,67,67,265,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,97,296,97,97,97,97,314,97,97,97,97,332,334,97,97,97,97,97,1146,1147,97,97,97,97,97,97,97,97,97,97,1626,97,97,97,97,97,97,345,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,0,0,364,0,367,41098,369,140,45,372,45,45,45,1220,45,45,45,45,45,45,45,45,45,45,45,45,1213,45,45,45,45,404,406,45,45,45,45,45,45,45,45,45,45,45,45,45,434,45,45,45,440,45,45,45,45,45,45,45,45,451,452,45,45,45,67,1683,67,67,67,1686,67,67,67,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,67,67,67,67,490,492,67,67,67,67,67,67,67,67,67,67,67,1447,67,67,1450,67,67,67,67,67,526,67,67,67,67,67,67,67,67,537,538,67,67,67,67,67,506,67,67,508,67,67,511,67,67,67,67,0,1476,0,0,0,0,0,1478,0,0,0,0,0,0,0,0,97,97,1484,97,97,97,97,97,97,865,97,97,97,97,97,97,97,97,97,97,1499,97,97,97,97,97,97,97,97,97,587,589,97,97,97,97,97,97,97,97,97,97,629,97,97,97,97,97,97,97,97,97,623,97,97,97,97,97,97,97,97,634,635,97,97,97,97,97,1160,97,97,97,97,97,97,97,97,97,97,97,1628,97,97,97,97,369,0,45,45,45,45,45,655,45,45,45,45,45,45,45,45,999,45,1001,45,45,45,45,45,45,45,45,715,45,45,45,720,45,45,45,45,45,45,45,45,728,25403,546,70179,0,0,66365,66365,552,0,97,97,97,97,97,840,97,97,97,97,97,1174,97,97,97,97,0,0,925,0,0,0,0,0,0,0,1100,97,97,97,97,97,97,97,97,627,97,97,97,97,97,97,97,938,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,680,45,968,45,970,45,973,45,45,45,45,45,45,45,45,45,45,962,45,45,45,45,45,979,45,45,45,45,45,985,45,45,45,45,45,45,45,45,45,1224,45,45,45,45,45,45,45,45,688,45,45,45,45,45,45,45,1007,1008,67,67,67,67,67,1014,67,67,67,67,67,67,67,67,67,1045,67,67,67,67,67,67,67,1038,67,67,67,67,67,67,1044,67,1046,67,1049,67,67,67,67,67,67,800,67,67,67,67,67,67,808,67,67,0,0,0,1102,97,97,97,97,97,1108,97,97,97,97,97,97,306,97,97,97,97,97,97,97,97,97,97,1371,97,97,97,97,97,97,97,97,1132,97,97,97,97,97,97,1138,97,1140,97,1143,97,97,97,97,97,1352,97,97,97,97,97,97,97,97,97,97,869,97,97,97,97,97,45,1191,45,45,45,45,45,1196,45,45,45,45,45,45,45,45,1407,45,45,45,45,45,45,45,45,986,45,45,45,45,45,45,991,45,67,67,67,1256,67,67,67,67,67,67,67,67,67,67,67,67,1048,67,67,67,97,1336,97,97,97,97,97,97,97,97,97,97,97,97,97,97,615,97,1386,45,1387,45,45,45,45,45,45,45,45,45,45,45,45,45,455,45,457,45,45,1424,45,45,45,45,45,67,67,67,67,1433,67,1434,67,67,67,67,67,767,67,67,67,67,67,67,67,67,67,67,67,1591,67,1593,67,67,45,45,1805,45,45,45,45,45,45,45,45,45,1814,45,45,1816,67,67,67,67,1820,67,67,67,67,67,67,67,67,67,1829,67,67,67,67,67,815,67,67,67,67,821,67,67,67,37689,544,67,1831,97,97,97,97,1835,0,0,97,97,97,97,97,0,0,97,97,97,1731,97,97,97,97,97,97,97,97,97,853,97,97,97,97,97,97,0,97,97,97,97,1850,97,97,45,45,45,45,45,45,45,45,1547,45,45,45,45,45,45,45,45,1664,45,45,45,45,45,45,45,45,961,45,45,45,45,965,45,967,1907,45,45,45,45,45,45,45,45,45,67,67,67,67,67,1920,0,1936,97,97,97,0,0,0,97,97,97,97,97,97,45,45,67,67,67,67,67,67,1763,67,67,67,67,67,67,67,67,1056,67,67,67,67,67,67,67,67,1273,67,67,67,67,67,67,67,67,1457,67,67,67,67,67,67,67,67,97,97,97,97,0,0,28672,97,45,67,67,67,67,0,0,97,97,97,97,45,45,67,67,2054,97,97,291,97,97,97,97,97,97,320,97,97,97,97,97,97,307,97,97,97,97,97,97,97,97,97,97,12288,0,925,926,1179,0,45,377,45,45,45,381,45,45,392,45,45,396,45,45,45,45,971,45,45,45,45,45,45,45,45,45,45,45,45,1756,45,45,45,67,67,67,67,463,67,67,67,467,67,67,478,67,67,482,67,67,67,67,67,1028,67,67,67,67,67,67,67,67,67,67,67,67,1469,67,67,1472,67,502,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1460,67,97,97,97,97,560,97,97,97,564,97,97,575,97,97,579,97,97,97,97,97,1368,97,97,97,97,97,97,97,97,97,97,0,0,925,0,0,930,97,599,97,97,97,97,97,97,97,97,97,97,97,97,97,97,872,97,45,666,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1758,0,362,0,0,925,41606,0,0,0,0,45,45,934,45,45,45,164,168,174,178,45,45,45,45,45,194,45,45,45,165,45,45,45,45,45,45,45,45,45,199,45,45,45,67,67,1010,67,67,67,67,67,67,67,67,67,67,67,67,1060,67,67,67,67,67,67,1052,1053,67,67,67,67,67,67,67,67,67,67,1063,97,1157,97,97,97,97,97,97,97,97,97,97,97,97,1167,97,97,97,97,97,1379,97,97,97,0,0,0,45,1383,45,45,45,1806,45,45,45,45,45,45,1812,45,45,45,45,67,67,67,67,67,1577,67,67,67,67,67,67,67,753,67,67,67,67,67,67,67,67,67,1262,67,67,67,67,67,67,67,1282,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1471,67,45,1402,45,45,45,45,45,45,45,45,45,45,45,45,45,45,417,45,67,1462,67,67,67,67,67,67,67,67,67,67,67,67,67,67,37689,544,97,1517,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1128,97,97,97,97,1636,97,97,97,0,97,97,97,97,97,97,97,97,851,97,97,97,97,97,97,97,67,67,1705,67,67,67,67,67,67,67,67,97,97,97,97,97,97,0,0,97,97,97,97,1842,0,0,1779,97,97,97,1782,97,0,0,97,97,97,97,97,97,0,0,97,97,97,1789,97,97,0,0,0,97,1847,97,97,97,97,97,45,45,45,45,45,45,45,45,1675,45,45,45,45,45,45,45,45,737,738,67,740,67,741,67,743,67,67,67,67,67,67,1968,67,67,97,97,97,97,0,0,0,97,97,45,67,0,97,45,67,2062,97,45,67,0,97,45,67,67,97,97,2001,97,0,0,2004,97,97,0,97,97,97,97,1797,97,97,97,97,97,45,45,45,67,261,67,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,292,97,97,97,97,311,315,321,325,97,97,97,97,97,97,1623,97,97,97,97,97,97,97,97,97,97,1330,97,97,1333,1334,97,341,97,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,0,363,364,0,367,41098,369,140,45,45,45,45,1221,45,45,45,45,45,45,45,45,45,45,45,413,45,45,416,45,376,45,45,45,45,382,45,45,45,45,45,45,45,45,45,45,1408,45,45,45,45,45,403,45,45,45,45,45,45,45,45,45,45,414,45,45,45,418,67,67,67,462,67,67,67,67,468,67,67,67,67,67,67,67,67,1602,67,1604,67,67,67,67,67,67,67,67,489,67,67,67,67,67,67,67,67,67,67,500,67,67,67,67,67,1067,67,67,67,67,67,1072,67,67,67,67,67,67,274,0,37139,24853,0,0,0,0,41098,65820,67,67,504,67,67,67,67,67,67,67,510,67,67,67,517,519,541,67,37139,37139,24853,24853,0,70179,0,0,0,65820,65820,369,287,554,97,97,97,559,97,97,97,97,565,97,97,97,97,97,97,97,1718,0,97,97,97,97,97,97,97,898,97,97,97,97,97,97,906,97,97,97,97,586,97,97,97,97,97,97,97,97,97,97,597,97,97,97,97,97,1520,97,97,97,97,97,97,97,97,97,97,0,45,1656,45,45,45,97,97,601,97,97,97,97,97,97,97,607,97,97,97,614,616,638,97,18,0,139621,0,0,0,0,0,0,364,0,0,367,41606,369,0,45,45,45,45,45,45,45,45,45,45,661,45,45,45,407,45,45,45,45,45,45,45,45,45,45,45,45,45,1815,45,67,45,667,45,45,45,45,45,45,45,45,45,45,678,45,45,45,421,45,45,45,45,45,45,45,45,45,45,45,45,976,977,45,45,45,682,45,45,45,45,45,45,45,45,45,45,693,45,45,697,67,67,748,67,67,67,67,754,67,67,67,67,67,67,67,67,67,1274,67,67,67,67,67,67,67,67,765,67,67,67,67,769,67,67,67,67,67,67,67,67,67,1589,67,67,67,67,67,67,67,67,780,67,67,784,67,67,67,67,67,67,67,67,67,67,67,1777,67,97,97,97,97,97,97,846,97,97,97,97,852,97,97,97,97,97,97,97,1742,45,45,45,45,45,45,45,1747,97,97,97,863,97,97,97,97,867,97,97,97,97,97,97,97,308,97,97,97,97,97,97,97,97,97,97,12288,1178,925,0,1179,0,97,97,97,878,97,97,882,97,97,97,97,97,97,97,97,97,97,12288,0,925,0,1179,0,908,97,97,97,97,97,97,97,97,97,97,97,97,97,97,0,0,925,0,0,0,954,45,45,45,45,45,45,45,45,45,45,963,45,45,966,45,45,157,45,45,171,45,45,45,45,45,45,45,45,45,45,948,45,45,45,45,45,1022,67,67,1026,67,67,67,1030,67,67,67,67,67,67,67,67,67,1603,1605,67,67,67,1608,67,67,67,1039,67,67,1042,67,67,67,67,67,67,67,67,67,67,471,67,67,67,67,67,0,1100,0,97,97,97,97,97,97,97,97,97,97,97,97,97,904,97,97,97,97,1116,97,97,1120,97,97,97,1124,97,97,97,97,97,97,562,97,97,97,571,97,97,97,97,97,97,97,97,97,1133,97,97,1136,97,97,97,97,97,97,97,97,915,917,97,97,97,97,97,0,97,1170,97,97,97,97,97,97,97,97,0,0,925,0,0,0,0,0,41606,0,0,0,0,45,45,45,45,45,45,1993,67,67,67,67,67,67,67,67,67,67,1275,67,67,67,1278,67,0,0,0,45,45,1182,45,45,45,45,45,45,45,45,45,1189,1204,45,45,45,1207,45,45,1209,45,1210,45,45,45,45,45,45,1546,45,45,45,45,45,45,45,45,45,689,45,45,45,45,45,45,1231,45,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,236,67,67,67,67,67,67,67,801,67,67,67,805,67,67,67,67,67,1242,67,67,67,67,67,67,67,67,67,1249,67,67,67,67,67,67,507,67,67,67,67,67,67,67,67,67,67,1300,0,0,0,0,0,1267,67,67,1269,67,1270,67,67,67,67,67,67,67,67,67,1280,97,1349,97,1350,97,97,97,97,97,97,97,97,97,1360,97,97,97,0,1980,97,97,97,97,97,45,45,45,45,45,45,673,45,45,45,45,677,45,45,45,45,1401,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,953,67,1437,67,1440,67,67,67,67,1445,67,67,67,1448,67,67,67,67,67,67,1029,67,67,67,67,67,67,67,67,67,67,1825,67,67,67,67,67,1473,67,67,67,0,0,0,0,0,0,0,0,0,0,0,0,1320,0,834,97,97,97,97,1490,97,1493,97,97,97,97,1498,97,97,97,1501,97,97,97,0,97,1638,97,0,97,97,97,97,97,97,97,97,916,97,97,97,97,97,97,0,1528,97,97,97,0,45,45,45,1535,45,45,45,45,45,45,45,1867,67,67,67,67,67,67,67,67,67,97,97,97,97,1932,0,0,1555,45,45,45,45,45,45,45,45,45,45,45,45,45,1567,45,45,158,45,45,172,45,45,45,183,45,45,45,45,201,45,45,67,212,67,67,67,67,231,235,241,245,67,67,67,67,67,67,493,67,67,67,67,67,67,67,67,67,67,472,67,67,67,67,67,97,97,97,97,1651,97,97,97,97,97,0,45,45,45,45,45,45,45,1539,45,45,45,67,1704,67,1706,67,67,67,67,67,67,67,97,97,97,97,97,97,0,0,97,97,97,1841,97,0,1844,97,97,97,97,1716,97,97,97,0,97,97,97,97,97,97,97,590,97,97,97,97,97,97,97,97,97,0,0,0,45,45,45,1385,1748,45,45,45,45,45,45,45,45,45,45,45,45,45,1757,45,45,159,45,45,45,45,45,45,45,45,45,45,45,45,45,415,45,45,97,97,1780,97,97,97,0,0,1786,97,97,97,97,97,0,0,97,97,1730,0,97,97,97,97,97,1736,97,1738,67,97,97,97,97,97,97,0,1838,97,97,97,97,97,0,0,97,1729,97,0,97,97,97,97,97,97,97,97,1162,97,97,97,1165,97,97,97,45,1950,45,45,45,45,45,45,45,45,1958,67,67,67,1962,67,67,67,67,67,1246,67,67,67,67,67,67,67,67,67,67,67,97,1710,97,97,97,1999,67,97,97,97,97,0,2003,97,97,97,0,97,97,2008,2009,45,67,67,67,67,0,0,97,97,97,97,45,2052,67,2053,0,0,0,0,925,41606,0,0,930,0,45,45,45,45,45,45,1392,45,1394,45,45,45,45,45,45,45,1545,45,45,45,45,45,45,45,45,45,45,1563,1565,45,45,45,1568,0,97,2055,45,67,0,97,45,67,0,97,45,67,28672,97,45,45,160,45,45,45,45,45,45,45,45,45,45,45,45,45,679,45,45,67,67,266,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,346,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,362,0,364,0,367,41098,369,140,371,45,45,45,379,45,45,45,388,45,45,45,45,45,45,45,45,1663,45,45,45,45,45,45,45,45,45,449,45,45,45,45,45,67,67,542,37139,37139,24853,24853,0,70179,0,0,0,65820,65820,369,287,97,97,97,97,97,1622,97,97,97,97,97,97,97,1629,97,97,0,1794,1795,97,97,97,97,97,97,97,97,45,45,45,45,45,45,1745,45,45,97,639,18,0,139621,0,0,0,0,0,0,364,0,0,367,41606,45,731,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,67,67,251,67,67,67,67,67,798,67,67,67,67,67,67,67,67,67,67,67,67,1073,67,67,67,860,97,97,97,97,97,97,97,97,97,97,97,97,97,97,873,0,0,1101,97,97,97,97,97,97,97,97,97,97,97,97,97,921,97,0,67,67,67,67,1245,67,67,67,67,67,67,67,67,67,67,67,67,1250,67,67,1253,0,0,1312,0,0,0,1318,0,0,0,0,0,0,97,97,97,97,1106,97,97,97,97,97,97,97,97,97,1149,97,97,97,97,97,1155,97,97,1325,97,97,97,97,97,97,97,97,97,97,97,97,97,1141,97,97,67,67,1439,67,1441,67,67,67,67,67,67,67,67,67,67,67,67,1264,67,67,67,97,97,1492,97,1494,97,97,97,97,97,97,97,97,97,97,97,1331,97,97,97,97,67,67,67,2037,67,97,0,0,97,97,97,2043,97,45,45,45,442,45,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,67,232,67,67,67,67,67,67,67,67,1823,67,67,67,67,67,67,67,67,97,97,97,97,1975,0,0,97,874,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1142,97,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,65,86,117,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,63,84,115,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,61,82,113,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,59,80,111,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,57,78,109,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,55,76,107,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,53,74,105,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,51,72,103,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,49,70,101,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,47,68,99,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,45,67,97,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,213085,53264,18,49172,57366,24,8192,28,102432,0,0,0,44,0,0,32863,53264,18,49172,57366,24,8192,28,102432,0,41,41,41,0,0,1138688,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,0,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,89,53264,18,18,49172,0,57366,0,24,24,24,0,127,127,127,127,102432,67,262,67,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,342,97,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,360,0,0,364,0,367,41098,369,140,45,45,45,45,717,45,45,45,45,45,45,45,45,45,45,45,412,45,45,45,45,45,67,1009,67,67,67,67,67,67,67,67,67,67,67,67,67,1292,67,67,1294,67,67,67,67,67,67,67,67,67,67,0,0,0,0,0,0,97,97,97,1615,97,97,97,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,66,87,118,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,64,85,116,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,62,83,114,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,60,81,112,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,58,79,110,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,56,77,108,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,54,75,106,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,52,73,104,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,50,71,102,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,48,69,100,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,46,67,98,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,233472,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,69724,53264,18,18,49172,0,57366,262144,24,24,24,0,28,28,28,28,102432,45,45,161,45,45,45,45,45,45,45,45,45,45,45,45,45,710,45,45,28,139621,359,0,0,0,364,0,367,41098,369,140,45,45,45,45,1389,45,45,45,45,45,45,45,45,45,45,45,949,45,45,45,45,67,503,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1449,67,67,97,600,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1154,97,0,0,0,0,925,41606,927,0,0,0,45,45,45,45,45,45,1866,67,67,67,67,67,67,67,67,67,67,772,67,67,67,67,67,45,45,969,45,45,45,45,45,45,45,45,45,45,45,45,45,951,45,45,45,45,1192,45,45,45,45,45,45,45,45,45,45,45,45,45,1202,45,45,0,0,0,1314,0,0,0,0,0,0,0,0,0,97,97,97,97,97,97,97,1488,67,67,267,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,347,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,361,0,0,364,0,367,41098,369,140,45,45,45,45,734,45,45,45,67,67,67,67,67,742,67,67,45,45,668,45,45,45,45,45,45,45,45,45,45,45,45,45,1214,45,45,1130,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1361,97,45,45,1671,45,45,45,45,45,45,45,45,45,45,45,45,45,1552,45,45,0,0,0,0,2220032,0,0,1130496,0,0,0,0,2170880,2171020,2170880,2170880,18,0,0,131072,0,0,0,90112,0,2220032,0,0,0,0,0,0,0,0,97,97,97,1485,97,97,97,97,0,45,45,45,45,45,1537,45,45,45,45,45,1390,45,1393,45,45,45,45,1398,45,45,45,2170880,2171167,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2576384,2215936,3117056,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,0,0,0,2174976,0,0,0,0,0,0,2183168,0,0,0,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2721252,2744320,2170880,2170880,2170880,2834432,2840040,2170880,2908160,2170880,2170880,2936832,2170880,2170880,2985984,2170880,2994176,2170880,2170880,3014656,2170880,3059712,3076096,3088384,2170880,2170880,2170880,2170880,0,0,0,0,2220032,0,0,0,1142784,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3215360,2215936,2215936,2215936,2215936,2215936,2437120,2215936,2215936,2215936,3117056,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,543,0,545,0,0,2183168,0,0,831,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,3031040,2170880,3055616,2170880,2170880,2170880,2170880,3092480,2170880,2170880,3125248,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3198976,2170880,0,0,0,0,0,0,67,67,37139,37139,24853,24853,0,0,0,0,0,65820,65820,0,287,97,97,97,97,97,1783,0,0,97,97,97,97,97,97,0,0,97,97,97,97,97,97,1791,0,0,546,70179,0,0,0,0,552,0,97,97,97,97,97,97,97,604,97,97,97,97,97,97,97,97,97,97,1150,97,97,97,97,97,147456,147456,147456,147456,147456,147456,147456,147456,147456,147456,147456,147456,0,0,147456,0,0,0,0,925,41606,0,928,0,0,45,45,45,45,45,45,998,45,45,45,45,45,45,45,45,45,1562,45,1564,45,45,45,45,0,2158592,2158592,0,0,0,0,2232320,2232320,2232320,0,2240512,2240512,2240512,2240512,0,0,0,0,0,0,0,0,0,0,0,2170880,2170880,2170880,2416640],r.EXPECTED=[291,300,304,341,315,309,305,295,319,323,327,329,296,333,337,339,342,346,350,294,356,360,312,367,352,371,363,375,379,383,387,391,395,726,399,405,518,684,405,405,405,405,808,405,405,405,512,405,405,405,431,405,405,406,405,405,404,405,405,405,405,405,405,405,908,631,410,415,405,414,419,608,405,429,602,405,435,443,405,441,641,478,405,447,451,450,456,643,461,460,762,679,465,469,741,473,477,482,486,492,932,931,523,498,504,720,405,510,596,405,516,941,580,522,929,527,590,589,897,939,534,538,547,551,555,559,563,567,571,969,575,708,690,689,579,584,634,405,594,731,405,600,882,405,606,895,786,452,612,405,615,620,876,624,628,638,647,651,655,659,663,667,676,683,688,695,694,791,405,699,437,405,706,714,405,712,825,870,405,718,724,769,768,823,730,735,745,751,422,755,759,425,766,902,810,587,775,888,887,405,773,992,405,779,962,405,785,781,986,790,795,797,506,500,499,801,805,814,820,829,833,837,841,845,849,853,857,861,616,865,869,868,488,405,874,816,405,880,738,405,886,892,543,405,901,906,913,912,918,494,541,922,926,936,945,949,953,957,530,966,973,960,702,701,405,979,981,405,985,747,405,990,998,914,405,996,1004,672,975,974,1014,1002,1008,670,1012,405,405,405,405,405,401,1018,1022,1026,1106,1071,1111,1111,1111,1082,1145,1030,1101,1034,1038,1106,1106,1106,1106,1046,1206,1052,1106,1072,1111,1111,1042,1134,1065,1111,1112,1056,1160,1207,1062,1204,1208,1069,1106,1106,1106,1076,1111,1207,1161,1122,1205,1064,1094,1106,1106,1107,1111,1111,1111,1078,1086,1207,1092,1098,1046,1058,1106,1106,1110,1111,1111,1116,1120,1161,1126,1202,1104,1106,1145,1146,1129,1138,1088,1151,1048,1157,1153,1132,1141,1165,1107,1111,1172,1179,1109,1183,1175,1143,1147,1187,1108,1191,1195,1144,1199,1168,1212,1216,1220,1224,1228,1232,1236,1557,1247,1241,1241,1038,1434,1241,1241,1241,1241,1254,1275,1617,1241,1280,1287,1241,1241,1241,1287,1241,2114,1291,1241,1243,1241,2049,1824,2094,2095,1520,1309,1241,1241,1302,1241,1321,1311,1241,1241,1313,1778,1325,1336,1241,1241,1325,1330,1353,1241,1241,1695,1354,1241,1241,1241,1294,1686,1331,1241,1696,1368,1241,1338,1370,1241,1392,1399,1364,2017,1406,2016,1405,1716,1406,1407,1422,1417,1421,1241,1241,1241,1349,1426,1241,1774,1756,1241,1773,1241,1241,1345,1964,1812,1432,1241,1241,1345,1993,1459,1241,1241,1241,1395,1848,1767,1465,1241,1241,1394,1847,1242,1477,1241,1241,1428,1241,1445,1492,1241,1241,1438,1241,1499,1241,1241,1241,1455,1241,1818,1448,1241,1250,1241,2026,1623,1449,1241,1612,1616,1241,1614,1241,1257,1241,1241,1985,1292,1586,1512,1241,1517,2050,1526,1674,1519,1524,1647,2051,1532,1537,1551,1544,1550,1555,1561,1571,1578,1584,1590,1591,1653,1595,1602,1606,1610,1634,1628,1640,1633,1645,1241,1241,1241,1469,1241,1970,1651,1241,1270,1241,1241,1819,1449,1241,1293,1664,1241,1241,1481,1485,1574,1672,1241,1241,1513,1317,1487,1684,1241,1241,1533,1299,1694,1241,1241,1295,1241,1241,1241,1546,1700,1241,1241,1707,1241,1713,1241,1849,1715,1241,1720,1241,1276,1267,1241,1241,2107,1657,1864,1241,1881,1241,1326,1292,1241,1685,1358,1724,1338,1241,1363,1362,1342,1340,1361,1339,1833,1372,1360,1833,1833,1342,1343,1835,1341,1731,1738,1344,1241,1745,1241,1379,1241,1241,2092,1241,1388,1761,1754,1241,1386,1241,1400,1760,1241,1241,1241,1598,1734,1241,1241,1241,1635,1645,1241,1780,1766,1241,1241,1332,1771,1241,1241,1629,2079,1241,1242,1784,1241,1241,1680,1639,2063,1790,1241,1241,1741,1241,1241,1800,1241,1241,1762,1473,1241,1806,1241,1241,1786,1240,1709,1241,1241,1241,1668,1811,1241,1940,1241,1401,1974,1241,1408,1413,1382,1241,1816,1241,1241,1802,2086,1811,1241,1817,1945,1823,2095,2095,2047,2094,2046,2080,1241,1409,1312,1376,2096,2048,1241,1241,1807,1241,1241,1241,2035,1241,1241,1828,1241,2057,2061,1241,1241,1843,1241,2059,1241,1241,1241,1690,1847,1241,1241,1241,1703,2102,1848,1241,1241,1853,1292,1848,1241,2016,1857,1241,2002,1868,1241,1436,1241,1241,1271,1305,1241,1874,1241,1241,1884,2037,1892,1241,1890,1241,1461,1241,1241,1795,1241,1241,1891,1241,1878,1241,1888,1241,1888,1905,1896,2087,1912,1903,1241,1911,1906,1916,1905,2027,1863,1925,2088,1859,1861,1922,1927,1931,1935,1494,1241,1241,1918,1907,1939,1917,1944,1949,1241,1241,1451,1955,1241,1241,1241,1796,1727,2061,1241,1241,1899,1241,1660,1968,1241,1241,1951,1678,1978,1241,1241,1241,1839,1241,1241,1984,1982,1241,1488,1241,1241,1624,1450,1989,1241,1241,1241,1870,1995,1292,1241,1241,1958,1261,1241,1996,1241,1241,1241,2039,2008,1241,1241,1750,2e3,1241,1256,2001,1960,1241,1564,1241,1504,1241,1241,1442,1241,1241,1564,1528,1263,1241,1508,1241,1241,1468,1498,2006,1540,2015,1539,2014,1748,2013,1539,1831,2014,2012,1500,1567,2022,2021,1241,1580,1241,1241,2033,2037,1791,2045,2031,1241,1621,1241,1641,2044,1241,1241,1241,2093,1241,1241,2055,1241,1241,2067,1241,1283,1241,1241,1241,2101,2071,1241,1241,1241,2073,1848,2040,1241,1241,1241,2077,1241,1241,2106,1241,1241,2084,1241,2111,1241,1241,1381,1380,1241,1241,1241,2100,1241,2129,2118,2122,2126,2197,2133,3010,2825,2145,2698,2156,2226,2160,2161,2165,2174,2293,2194,2630,2201,2203,2152,3019,2226,2263,2209,2213,2218,2269,2292,2269,2269,2184,2226,2238,2148,2151,3017,2245,2214,2269,2269,2185,2226,2292,2269,2291,2269,2269,2269,2292,2205,3019,2226,2226,2160,2160,2160,2261,2160,2160,2160,2262,2276,2160,2160,2277,2216,2283,2216,2269,2269,2268,2269,2267,2269,2269,2269,2271,2568,2292,2269,2293,2269,2182,2190,2269,2186,2226,2226,2226,2226,2227,2160,2160,2160,2160,2263,2160,2275,2277,2282,2215,2217,2269,2269,2291,2269,2269,2293,2291,2269,2220,2269,2295,2294,2269,2269,2305,2233,2262,2278,2218,2269,2234,2226,2226,2228,2160,2160,2160,2289,2220,2294,2294,2269,2269,2304,2269,2160,2160,2287,2269,2269,2305,2269,2269,2312,2269,2269,2225,2226,2160,2287,2289,2219,2304,2295,2314,2234,2226,2314,2269,2226,2226,2160,2288,2219,2222,2304,2296,2269,2224,2160,2160,2269,2302,2294,2314,2224,2226,2288,2220,2294,2269,2290,2269,2269,2293,2269,2269,2269,2269,2270,2221,2313,2225,2227,2160,2300,2269,2225,2261,2309,2234,2229,2223,2318,2318,2318,2328,2336,2340,2344,2350,2637,2712,2358,2362,2372,2135,2378,2398,2135,2135,2135,2135,2136,2417,2241,2135,2378,2135,2135,2980,2984,2135,3006,2135,2135,2135,2945,2931,2425,2400,2135,2135,2135,2954,2135,2481,2433,2135,2135,2988,2824,2135,2135,2482,2434,2135,2135,2440,2445,2452,2135,2135,2998,3002,2961,2441,2446,2453,2463,2974,2135,2135,2135,2140,2642,2709,2459,2470,2465,2135,2135,3005,2135,2135,2987,2823,2458,2469,2464,2975,2135,2135,2135,2353,2488,2447,2324,2974,2135,2409,2459,2448,2135,2961,2487,2446,2476,2323,2973,2135,2135,2135,2354,2476,2974,2135,2135,2135,2957,2135,2135,2960,2135,2135,2135,2363,2409,2459,2474,2465,2487,2571,2973,2135,2135,2168,2973,2135,2135,2135,2959,2135,2135,2135,2506,2135,2957,2488,2170,2135,2135,2135,2960,2135,2818,2493,2135,2135,3033,2135,2135,2135,2934,2819,2494,2135,2135,2135,2976,2780,2499,2135,2135,2135,3e3,2968,2135,2935,2135,2135,2135,2364,2507,2135,2135,2934,2135,2135,2780,2492,2507,2135,2135,2506,2780,2135,2135,2782,2780,2135,2782,2135,2783,2374,2514,2135,2135,2135,3007,2530,2974,2135,2135,2135,3008,2135,2135,2134,2135,2526,2531,2975,2135,2135,3042,2581,2575,2956,2135,2135,2135,2394,2135,2508,2535,2840,2844,2495,2135,2135,2136,2684,2537,2842,2846,2135,2136,2561,2581,2551,2536,2841,2845,2975,3043,2582,2843,2555,2135,3040,3044,2538,2844,2975,2135,2135,2253,2644,2672,2542,2554,2135,2135,2346,2873,2551,2555,2135,2135,2135,2381,2559,2565,2538,2553,2135,2560,2914,2576,2590,2135,2135,2135,2408,2136,2596,2624,2135,2135,2135,2409,2135,2618,2597,3008,2135,2135,2380,2956,2601,2135,2135,2135,2410,2620,2624,2135,2136,2383,2135,2135,2783,2623,2135,2135,2393,2888,2136,2621,3008,2135,2618,2618,2622,2135,2135,2405,2414,2619,2384,2624,2135,2136,2950,2135,2138,2135,2139,2135,2604,2623,2135,2140,2878,2665,2957,2622,2135,2135,2428,2762,2606,2612,2135,2135,2501,2586,2604,3038,2135,2604,3036,2387,2958,2386,2135,2141,2135,2421,2387,2385,2135,2385,2384,2384,2135,2386,2628,2384,2135,2135,2501,2596,2591,2135,2135,2135,2400,2135,2634,2135,2135,2559,2580,2575,2648,2135,2135,2135,2429,2649,2135,2135,2135,2435,2654,2658,2135,2135,2135,2436,2649,2178,2659,2135,2135,2595,2601,2669,2677,2135,2135,2616,2957,2879,2665,2691,2135,2363,2367,2900,2878,2664,2690,2975,2877,2643,2670,2974,2671,2975,2135,2135,2619,2608,2669,2673,2135,2135,2653,2177,2672,2135,2135,2135,2486,2168,2251,2255,2695,2974,2709,2135,2135,2135,2487,2169,2399,2716,2975,2135,2363,2770,2776,2640,2717,2135,2135,2729,2135,2135,2641,2718,2135,2135,2135,2505,2135,2640,2257,2974,2135,2727,2975,2135,2365,2332,2895,2957,2135,2959,2135,2365,2749,2754,2959,2958,2958,2135,2380,2793,2799,2135,2735,2738,2135,2381,2135,2135,2940,2974,2135,2744,2135,2135,2739,2519,2976,2745,2135,2135,2135,2509,2755,2135,2135,2135,2510,2772,2778,2135,2135,2740,2520,2135,2771,2777,2135,2135,2759,2750,2792,2798,2135,2135,2781,2392,2779,2135,2135,2135,2521,2135,2679,2248,2135,2135,2681,2480,2135,2135,2786,3e3,2135,2679,2683,2135,2135,2416,2135,2135,2135,2525,2135,2730,2135,2135,2135,2560,2581,2135,2805,2135,2135,2804,2962,2832,2974,2135,2382,2135,2135,2958,2135,2135,2960,2135,2829,2833,2975,2961,2965,2969,2973,2968,2972,2135,2135,2135,2641,2135,2515,2966,2970,2851,2478,2135,2135,2808,2135,2809,2135,2135,2135,2722,2852,2479,2135,2135,2815,2135,2135,2766,2853,2480,2135,2857,2479,2135,2388,2723,2135,2364,2331,2894,2858,2480,2135,2135,2850,2478,2135,2135,2135,2806,2864,2135,2399,2256,2974,2865,2135,2135,2862,2135,2135,2135,2685,2807,2865,2135,2135,2807,2863,2135,2135,2135,2686,2884,2807,2135,2809,2807,2135,2135,2807,2806,2705,2810,2808,2700,2869,2702,2702,2702,2704,2883,2135,2135,2135,2730,2884,2135,2135,2135,2731,2321,2546,2135,2135,2876,2255,2889,2322,2547,2135,2401,2135,2135,2135,2949,2367,2893,2544,2973,2906,2973,2135,2135,2877,2663,2368,2901,2907,2974,2366,2899,2905,2972,2920,2974,2135,2135,2911,2900,2920,2363,2913,2918,2465,2941,2975,2135,2135,2924,2928,2974,2945,2931,2135,2135,2135,2765,2136,2955,2135,2135,2939,2931,2380,2135,2135,2380,2135,2135,2135,2780,2507,2137,2135,2137,2135,2139,2135,2806,2810,2135,2135,2135,2992,2135,2135,2962,2966,2970,2974,2135,2135,2787,3014,2135,2521,2993,2135,2135,2135,2803,2135,2135,2135,2618,2607,2997,3001,2135,2135,2963,2967,2971,2975,2135,2135,2791,2797,2135,3009,2999,3003,2787,3001,2135,2135,2964,2968,2785,2999,3003,2135,2135,2135,2804,2785,2999,3004,2135,2135,2135,2807,2135,2135,3023,2135,2135,2135,2811,2135,2135,3027,2135,2135,2135,2837,2968,3028,2135,2135,2135,2875,2135,2784,3029,2135,2408,2457,2446,0,14,0,-2120220672,1610612736,-2074083328,-2002780160,-2111830528,1073872896,1342177280,1075807216,4096,16384,2048,8192,0,8192,0,0,0,0,1,0,0,0,2,0,-2145386496,8388608,1073741824,0,2147483648,2147483648,2097152,2097152,2097152,536870912,0,0,134217728,33554432,1536,268435456,268435456,268435456,268435456,128,256,32,0,65536,131072,524288,16777216,268435456,2147483648,1572864,1835008,640,32768,65536,262144,1048576,2097152,196608,196800,196608,196608,0,131072,131072,131072,196608,196624,196608,196624,196608,196608,128,4096,16384,16384,2048,0,4,0,0,2147483648,2097152,0,1024,32,32,0,65536,1572864,1048576,32768,32768,32768,32768,196608,196608,196608,64,64,196608,196608,131072,131072,131072,131072,268435456,268435456,64,196736,196608,196608,196608,131072,196608,196608,16384,4,4,4,2,32,32,65536,1048576,12582912,1073741824,0,0,2,8,16,96,2048,32768,0,0,131072,268435456,268435456,268435456,256,256,196608,196672,196608,196608,196608,196608,4,0,256,256,256,256,32,32,32768,32,32,32,32,32768,268435456,268435456,268435456,196608,196608,196608,196624,196608,196608,196608,16,16,16,268435456,196608,64,64,64,196608,196608,196608,196672,268435456,64,64,196608,196608,16,196608,196608,196608,268435456,64,196608,131072,262144,4194304,25165824,33554432,134217728,268435456,268435456,196608,262152,8,256,512,3072,16384,200,-1073741816,8392713,40,8392718,520,807404072,40,520,100663304,0,0,-540651761,-540651761,257589048,0,262144,0,0,3,8,256,0,4,6,4100,8388612,0,0,0,3,4,8,256,512,1024,0,2097152,0,0,-537854471,-537854471,0,100663296,0,0,1,2,0,0,0,16384,0,0,0,96,14336,0,0,0,7,8,234881024,0,0,0,8,0,0,0,0,262144,0,0,16,64,384,512,0,1,1,0,12582912,0,0,0,0,33554432,67108864,-606084144,-606084144,-606084138,0,0,28,32,768,1966080,-608174080,0,0,0,14,35056,16,64,896,24576,98304,98304,131072,262144,524288,1048576,4194304,25165824,1048576,62914560,134217728,-805306368,0,384,512,16384,65536,131072,262144,29360128,33554432,134217728,268435456,1073741824,2147483648,262144,524288,1048576,29360128,33554432,524288,1048576,16777216,33554432,134217728,268435456,1073741824,0,0,0,123856,1966080,0,64,384,16384,65536,131072,16384,65536,524288,268435456,2147483648,0,0,524288,2147483648,0,0,1,16,0,256,524288,0,0,0,25,96,128,-537854471,0,0,0,32,7404800,-545259520,0,0,0,60,0,249,64768,1048576,6291456,6291456,25165824,100663296,402653184,1073741824,96,128,1280,2048,4096,57344,6291456,57344,6291456,8388608,16777216,33554432,201326592,1342177280,2147483648,0,57344,6291456,8388608,100663296,134217728,2147483648,0,0,0,1,8,16,64,128,64,128,256,1024,131072,131072,131072,262144,524288,16777216,57344,6291456,8388608,67108864,134217728,64,256,1024,2048,4096,57344,64,256,0,24576,32768,6291456,67108864,134217728,0,1,64,256,24576,32768,4194304,32768,4194304,67108864,0,0,64,256,0,0,24576,32768,0,16384,4194304,67108864,64,16384,0,0,1,64,256,16384,4194304,67108864,0,0,0,16384,0,16384,16384,0,-470447874,-470447874,-470447874,0,0,128,0,0,8,96,2048,32768,262144,8388608,35056,1376256,-471859200,0,0,14,16,224,2048,32768,2097152,4194304,8388608,-486539264,0,96,128,2048,32768,262144,2097152,262144,2097152,8388608,33554432,536870912,1073741824,2147483648,0,1610612736,2147483648,0,0,1,524288,1048576,12582912,0,0,0,151311,264503296,2097152,8388608,33554432,1610612736,2147483648,262144,8388608,33554432,536870912,67108864,4194304,0,4194304,0,4194304,4194304,0,0,524288,8388608,536870912,1073741824,2147483648,1,4097,8388609,96,2048,32768,1073741824,2147483648,0,96,2048,2147483648,0,0,96,2048,0,0,1,12582912,0,0,0,0,1641895695,1641895695,0,0,0,249,7404800,15,87808,1835008,1639972864,0,768,5120,16384,65536,1835008,1835008,12582912,16777216,1610612736,0,3,4,8,768,4096,65536,0,0,256,512,786432,8,256,512,4096,16384,1835008,16384,1835008,12582912,1610612736,0,0,0,256,0,0,0,4,8,16,32,1,2,8,256,16384,524288,16384,524288,1048576,12582912,1610612736,0,0,0,8388608,0,0,0,524288,4194304,0,0,0,8388608,-548662288,-548662288,-548662288,0,0,256,16384,65536,520093696,-1073741824,0,0,0,16777216,0,16,32,960,4096,4980736,520093696,1073741824,0,32,896,4096,57344,1048576,6291456,8388608,16777216,100663296,134217728,268435456,2147483648,0,512,786432,4194304,33554432,134217728,268435456,0,786432,4194304,134217728,268435456,0,524288,4194304,268435456,0,0,0,0,0,4194304,4194304,-540651761,0,0,0,2,4,8,16,96,128,264503296,-805306368,0,0,0,8,256,512,19456,131072,3072,16384,131072,262144,8388608,16777216,512,1024,2048,16384,131072,262144,131072,262144,8388608,33554432,201326592,268435456,0,3,4,256,1024,2048,57344,16384,131072,8388608,33554432,134217728,268435456,0,3,256,1024,16384,131072,33554432,134217728,1073741824,2147483648,0,0,256,524288,2147483648,0,3,256,33554432,134217728,1073741824,0,1,2,33554432,1,2,134217728,1073741824,0,1,2,134217728,0,0,0,64,0,0,0,16,32,896,4096,786432,4194304,16777216,33554432,201326592,268435456,1073741824,2147483648,0,0,0,15,0,4980736,4980736,4980736,70460,70460,3478332,0,0,1008,4984832,520093696,60,4864,65536,0,0,0,12,16,32,256,512,4096,65536,0,0,0,67108864,0,0,0,12,0,256,512,65536,0,0,1024,512,131072,131072,4,16,32,65536,0,4,16,32,0,0,0,4,16,0,0,16384,67108864,0,0,1,24,96,128,256,1024],r.TOKEN=["(0)","JSONChar","JSONCharRef","JSONPredefinedCharRef","ModuleDecl","Annotation","OptionDecl","Operator","Variable","Tag","EndTag","PragmaContents","DirCommentContents","DirPIContents","CDataSectionContents","AttrTest","Wildcard","EQName","IntegerLiteral","DecimalLiteral","DoubleLiteral","PredefinedEntityRef","'\"\"'","EscapeApos","AposChar","ElementContentChar","QuotAttrContentChar","AposAttrContentChar","NCName","QName","S","CharRef","CommentContents","DocTag","DocCommentContents","EOF","'!'","'\"'","'#'","'#)'","'$$'","''''","'('","'(#'","'(:'","'(:~'","')'","'*'","'*'","','","'-->'","'.'","'/'","'/>'","':'","':)'","';'","'<!--'","'<![CDATA['","'<?'","'='","'>'","'?'","'?>'","'NaN'","'['","']'","']]>'","'after'","'all'","'allowing'","'ancestor'","'ancestor-or-self'","'and'","'any'","'append'","'array'","'as'","'ascending'","'at'","'attribute'","'base-uri'","'before'","'boundary-space'","'break'","'by'","'case'","'cast'","'castable'","'catch'","'check'","'child'","'collation'","'collection'","'comment'","'constraint'","'construction'","'contains'","'content'","'context'","'continue'","'copy'","'copy-namespaces'","'count'","'decimal-format'","'decimal-separator'","'declare'","'default'","'delete'","'descendant'","'descendant-or-self'","'descending'","'diacritics'","'different'","'digit'","'distance'","'div'","'document'","'document-node'","'element'","'else'","'empty'","'empty-sequence'","'encoding'","'end'","'entire'","'eq'","'every'","'exactly'","'except'","'exit'","'external'","'first'","'following'","'following-sibling'","'for'","'foreach'","'foreign'","'from'","'ft-option'","'ftand'","'ftnot'","'ftor'","'function'","'ge'","'greatest'","'group'","'grouping-separator'","'gt'","'idiv'","'if'","'import'","'in'","'index'","'infinity'","'inherit'","'insensitive'","'insert'","'instance'","'integrity'","'intersect'","'into'","'is'","'item'","'json'","'json-item'","'key'","'language'","'last'","'lax'","'le'","'least'","'let'","'levels'","'loop'","'lowercase'","'lt'","'minus-sign'","'mod'","'modify'","'module'","'most'","'namespace'","'namespace-node'","'ne'","'next'","'no'","'no-inherit'","'no-preserve'","'node'","'nodes'","'not'","'object'","'occurs'","'of'","'on'","'only'","'option'","'or'","'order'","'ordered'","'ordering'","'paragraph'","'paragraphs'","'parent'","'pattern-separator'","'per-mille'","'percent'","'phrase'","'position'","'preceding'","'preceding-sibling'","'preserve'","'previous'","'processing-instruction'","'relationship'","'rename'","'replace'","'return'","'returning'","'revalidation'","'same'","'satisfies'","'schema'","'schema-attribute'","'schema-element'","'score'","'self'","'sensitive'","'sentence'","'sentences'","'skip'","'sliding'","'some'","'stable'","'start'","'stemming'","'stop'","'strict'","'strip'","'structured-item'","'switch'","'text'","'then'","'thesaurus'","'times'","'to'","'treat'","'try'","'tumbling'","'type'","'typeswitch'","'union'","'unique'","'unordered'","'updating'","'uppercase'","'using'","'validate'","'value'","'variable'","'version'","'weight'","'when'","'where'","'while'","'wildcards'","'window'","'with'","'without'","'word'","'words'","'xquery'","'zero-digit'","'{'","'{{'","'|'","'}'","'}}'"]},{}],2:[function(e,t,n){"use strict";var r=e("./JSONiqTokenizer").JSONiqTokenizer,i=e("./lexer").Lexer,s="NaN|after|allowing|ancestor|ancestor-or-self|and|append|array|as|ascending|at|attribute|base-uri|before|boundary-space|break|by|case|cast|castable|catch|child|collation|comment|constraint|construction|contains|context|continue|copy|copy-namespaces|count|decimal-format|decimal-separator|declare|default|delete|descendant|descendant-or-self|descending|digit|div|document|document-node|element|else|empty|empty-sequence|encoding|end|eq|every|except|exit|external|false|first|following|following-sibling|for|from|ft-option|function|ge|greatest|group|grouping-separator|gt|idiv|if|import|in|index|infinity|insert|instance|integrity|intersect|into|is|item|json|json-item|jsoniq|last|lax|le|least|let|loop|lt|minus-sign|mod|modify|module|namespace|namespace-node|ne|next|node|nodes|not|null|object|of|only|option|or|order|ordered|ordering|paragraphs|parent|pattern-separator|per-mille|percent|preceding|preceding-sibling|previous|processing-instruction|rename|replace|return|returning|revalidation|satisfies|schema|schema-attribute|schema-element|score|select|self|sentences|sliding|some|stable|start|strict|switch|text|then|times|to|treat|true|try|tumbling|type|typeswitch|union|unordered|updating|validate|value|variable|version|when|where|while|window|with|words|xquery|zero-digit".split("|"),o=s.map(function(e){return{name:"'"+e+"'",token:"keyword"}}),u=s.map(function(e){return{name:"'"+e+"'",token:"text",next:function(e){e.pop()}}}),a="constant.language",f="constant",l="comment",c="xml-pe",h="constant.buildin",p=function(e){return"'"+e+"'"},d={start:[{name:p("(#"),token:h,next:function(e){e.push("Pragma")}},{name:p("(:"),token:"comment",next:function(e){e.push("Comment")}},{name:p("(:~"),token:"comment.doc",next:function(e){e.push("CommentDoc")}},{name:p("<!--"),token:l,next:function(e){e.push("XMLComment")}},{name:p("<?"),token:c,next:function(e){e.push("PI")}},{name:p("''"),token:"string",next:function(e){e.push("AposString")}},{name:p('"'),token:"string",next:function(e){e.push("QuotString")}},{name:"Annotation",token:"support.function"},{name:"ModuleDecl",token:"keyword",next:function(e){e.push("Prefix")}},{name:"OptionDecl",token:"keyword",next:function(e){e.push("_EQName")}},{name:"AttrTest",token:"support.type"},{name:"Variable",token:"variable"},{name:p("<![CDATA["),token:a,next:function(e){e.push("CData")}},{name:"IntegerLiteral",token:f},{name:"DecimalLiteral",token:f},{name:"DoubleLiteral",token:f},{name:"Operator",token:"keyword.operator"},{name:"EQName",token:function(e){return s.indexOf(e)!==-1?"keyword":"support.function"}},{name:p("("),token:"lparen"},{name:p(")"),token:"rparen"},{name:"Tag",token:"meta.tag",next:function(e){e.push("StartTag")}},{name:p("}"),token:"text",next:function(e){e.length>1&&e.pop()}},{name:p("{"),token:"text",next:function(e){e.push("start")}}].concat(o),_EQName:[{name:"EQName",token:"text",next:function(e){e.pop()}}].concat(u),Prefix:[{name:"NCName",token:"text",next:function(e){e.pop()}}].concat(u),StartTag:[{name:p(">"),token:"meta.tag",next:function(e){e.push("TagContent")}},{name:"QName",token:"entity.other.attribute-name"},{name:p("="),token:"text"},{name:p("''"),token:"string",next:function(e){e.push("AposAttr")}},{name:p('"'),token:"string",next:function(e){e.push("QuotAttr")}},{name:p("/>"),token:"meta.tag.r",next:function(e){e.pop()}}],TagContent:[{name:"ElementContentChar",token:"text"},{name:p("<![CDATA["),token:a,next:function(e){e.push("CData")}},{name:p("<!--"),token:l,next:function(e){e.push("XMLComment")}},{name:"Tag",token:"meta.tag",next:function(e){e.push("StartTag")}},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:p("{{"),token:"text"},{name:p("}}"),token:"text"},{name:p("{"),token:"text",next:function(e){e.push("start")}},{name:"EndTag",token:"meta.tag",next:function(e){e.pop(),e.pop()}}],AposAttr:[{name:p("''"),token:"string",next:function(e){e.pop()}},{name:"EscapeApos",token:"constant.language.escape"},{name:"AposAttrContentChar",token:"string"},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:p("{{"),token:"string"},{name:p("}}"),token:"string"},{name:p("{"),token:"text",next:function(e){e.push("start")}}],QuotAttr:[{name:p('"'),token:"string",next:function(e){e.pop()}},{name:"EscapeQuot",token:"constant.language.escape"},{name:"QuotAttrContentChar",token:"string"},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:p("{{"),token:"string"},{name:p("}}"),token:"string"},{name:p("{"),token:"text",next:function(e){e.push("start")}}],Pragma:[{name:"PragmaContents",token:h},{name:p("#"),token:h},{name:p("#)"),token:h,next:function(e){e.pop()}}],Comment:[{name:"CommentContents",token:"comment"},{name:p("(:"),token:"comment",next:function(e){e.push("Comment")}},{name:p(":)"),token:"comment",next:function(e){e.pop()}}],CommentDoc:[{name:"DocCommentContents",token:"comment.doc"},{name:"DocTag",token:"comment.doc.tag"},{name:p("(:"),token:"comment.doc",next:function(e){e.push("CommentDoc")}},{name:p(":)"),token:"comment.doc",next:function(e){e.pop()}}],XMLComment:[{name:"DirCommentContents",token:l},{name:p("-->"),token:l,next:function(e){e.pop()}}],CData:[{name:"CDataSectionContents",token:a},{name:p("]]>"),token:a,next:function(e){e.pop()}}],PI:[{name:"DirPIContents",token:c},{name:p("?"),token:c},{name:p("?>"),token:c,next:function(e){e.pop()}}],AposString:[{name:p("''"),token:"string",next:function(e){e.pop()}},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:"EscapeApos",token:"constant.language.escape"},{name:"AposChar",token:"string"}],QuotString:[{name:p('"'),token:"string",next:function(e){e.pop()}},{name:"JSONPredefinedCharRef",token:"constant.language.escape"},{name:"JSONCharRef",token:"constant.language.escape"},{name:"JSONChar",token:"string"}]};n.JSONiqLexer=function(){return new i(r,d)}},{"./JSONiqTokenizer":1,"./lexer":3}],3:[function(e,t,n){"use strict";var r=function(e){var t=e;this.tokens=[],this.reset=function(){t=t,this.tokens=[]},this.startNonterminal=function(){},this.endNonterminal=function(){},this.terminal=function(e,n,r){this.tokens.push({name:e,value:t.substring(n,r)})},this.whitespace=function(e,n){this.tokens.push({name:"WS",value:t.substring(e,n)})}};n.Lexer=function(e,t){this.tokens=[],this.getLineTokens=function(n,i){i=i==="start"||!i?'["start"]':i;var s=JSON.parse(i),o=new r(n),u=new e(n,o),a=[];for(;;){var f=s[s.length-1];try{o.tokens=[],u["parse_"+f]();var l=null;o.tokens.length>1&&o.tokens[0].name==="WS"&&(a.push({type:"text",value:o.tokens[0].value}),o.tokens.splice(0,1));var c=o.tokens[0],h=t[f];for(var p=0;p<h.length;p++){var d=t[f][p];if(typeof d.name=="function"&&d.name(c)||d.name===c.name){l=d;break}}if(c.name==="EOF")break;if(c.value==="")throw"Encountered empty string lexical rule.";a.push({type:l===null?"text":typeof l.token=="function"?l.token(c.value):l.token,value:c.value}),l&&l.next&&l.next(s)}catch(v){if(v instanceof u.ParseException){var m=0;for(var g=0;g<a.length;g++)m+=a[g].value.length;return a.push({type:"text",value:n.substring(m)}),{tokens:a,state:JSON.stringify(["start"])}}throw v}}return{tokens:a,state:JSON.stringify(s)}}}},{}]},{},[2])(2)}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/behaviour/xquery",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/mode/behaviour/xml","ace/token_iterator"],function(e,t,n){"use strict";function a(e,t){var n=!0,r=e.type.split("."),i=t.split(".");return i.forEach(function(e){if(r.indexOf(e)==-1)return n=!1,!1}),n}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../behaviour/xml").XmlBehaviour,u=e("../../token_iterator").TokenIterator,f=function(){this.inherit(s,["braces","parens","string_dquotes"]),this.inherit(o),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var s=n.getCursorPosition(),o=new u(r,s.row,s.column),f=o.getCurrentToken(),l=!1,e=JSON.parse(e).pop();if(f&&f.value===">"||e!=="StartTag")return;if(!f||!a(f,"meta.tag")&&(!a(f,"text")||!f.value.match("/"))){do f=o.stepBackward();while(f&&(a(f,"string")||a(f,"keyword.operator")||a(f,"entity.attribute-name")||a(f,"text")))}else l=!0;var c=o.stepBackward();if(!f||!a(f,"meta.tag")||c!==null&&c.value.match("/"))return;var h=f.value.substring(1);if(l)var h=h.substring(0,s.column-f.start);return{text:"></"+h+">",selection:[1,1]}}})};r.inherits(f,i),t.XQueryBehaviour=f}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/jsoniq",["require","exports","module","ace/worker/worker_client","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/xquery/jsoniq_lexer","ace/range","ace/mode/behaviour/xquery","ace/mode/folding/cstyle","ace/anchor"],function(e,t,n){"use strict";var r=e("../worker/worker_client").WorkerClient,i=e("../lib/oop"),s=e("./text").Mode,o=e("./text_highlight_rules").TextHighlightRules,u=e("./xquery/jsoniq_lexer").JSONiqLexer,a=e("../range").Range,f=e("./behaviour/xquery").XQueryBehaviour,l=e("./folding/cstyle").FoldMode,c=e("../anchor").Anchor,h=function(){this.$tokenizer=new u,this.$behaviour=new f,this.foldingRules=new l,this.$highlightRules=new o};i.inherits(h,s),function(){this.completer={getCompletions:function(e,t,n,r,i){if(!t.$worker)return i();t.$worker.emit("complete",{data:{pos:n,prefix:r}}),t.$worker.on("complete",function(e){i(null,e.data)})}},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=t.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/);return i&&(r+=n),r},this.checkOutdent=function(e,t,n){return/^\s+$/.test(t)?/^\s*[\}\)]/.test(n):!1},this.autoOutdent=function(e,t,n){var r=t.getLine(n),i=r.match(/^(\s*[\}\)])/);if(!i)return 0;var s=i[1].length,o=t.findMatchingBracket({row:n,column:s});if(!o||o.row==n)return 0;var u=this.$getIndent(t.getLine(o.row));t.replace(new a(n,0,n,s-1),u)},this.toggleCommentLines=function(e,t,n,r){var i,s,o=!0,u=/^\s*\(:(.*):\)/;for(i=n;i<=r;i++)if(!u.test(t.getLine(i))){o=!1;break}var f=new a(0,0,0,0);for(i=n;i<=r;i++)s=t.getLine(i),f.start.row=i,f.end.row=i,f.end.column=s.length,t.replace(f,o?s.match(u)[1]:"(:"+s+":)")},this.createWorker=function(e){var t=new r(["ace"],"ace/mode/xquery_worker","XQueryWorker"),n=this;return t.attachToDocument(e.getDocument()),t.on("ok",function(t){e.clearAnnotations()}),t.on("markers",function(t){e.clearAnnotations(),n.addMarkers(t.data,e)}),t},this.removeMarkers=function(e){var t=e.getMarkers(!1);for(var n in t)t[n].clazz.indexOf("language_highlight_")===0&&e.removeMarker(n);for(var r=0;r<e.markerAnchors.length;r++)e.markerAnchors[r].detach();e.markerAnchors=[]},this.addMarkers=function(e,t){var n=this;t.markerAnchors||(t.markerAnchors=[]),this.removeMarkers(t),t.languageAnnos=[],e.forEach(function(e){function u(i){r&&t.removeMarker(r),o.row=n.row;if(e.pos.sc!==undefined&&e.pos.ec!==undefined){var s=new a(e.pos.sl,e.pos.sc,e.pos.el,e.pos.ec);r=t.addMarker(s,"language_highlight_"+(e.type?e.type:"default"))}i&&t.setAnnotations(t.languageAnnos)}var n=new c(t.getDocument(),e.pos.sl,e.pos.sc||0);t.markerAnchors.push(n);var r,i=e.pos.ec-e.pos.sc,s=e.pos.el-e.pos.sl,o={guttertext:e.message,type:e.level||"warning",text:e.message};u(),n.on("change",function(){u(!0)}),e.message&&t.languageAnnos.push(o)}),t.setAnnotations(t.languageAnnos)},this.$id="ace/mode/jsoniq"}.call(h.prototype),t.Mode=h}) \ No newline at end of file
diff --git a/library/ace/mode-jsp.js b/library/ace/mode-jsp.js
new file mode 100644
index 000000000..2065fc0f8
--- /dev/null
+++ b/library/ace/mode-jsp.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/java_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while",t="null|Infinity|NaN|undefined",n="AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object",r=this.createKeywordMapper({"variable.language":"this",keyword:e,"constant.language":t,"support.function":n},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.JavaHighlightRules=o}),ace.define("ace/mode/jsp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/java_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./java_highlight_rules").JavaHighlightRules,o=function(){i.call(this);var e="request|response|out|session|application|config|pageContext|page|Exception",t="page|include|taglib",n=[{token:"comment",regex:"<%--",push:"jsp-dcomment"},{token:"meta.tag",regex:"<%@?|<%=?|<%!?|<jsp:[^>]+>",push:"jsp-start"}],r=[{token:"meta.tag",regex:"%>|<\\/jsp:[^>]+>",next:"pop"},{token:"variable.language",regex:e},{token:"keyword",regex:t}];for(var o in this.$rules)this.$rules[o].unshift.apply(this.$rules[o],n);this.embedRules(s,"jsp-",r,["start"]),this.addRules({"jsp-dcomment":[{token:"comment",regex:".*?--%>",next:"pop"}]}),this.normalizeRules()};r.inherits(o,i),t.JspHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/jsp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./jsp_highlight_rules").JspHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.$id="ace/mode/jsp"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-jsx.js b/library/ace/mode-jsx.js
new file mode 100644
index 000000000..9e766e7b2
--- /dev/null
+++ b/library/ace/mode-jsx.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/jsx_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){var e=i.arrayToMap("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|if|throw|delete|in|try|class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|number|int|string|boolean|variant|log|assert".split("|")),t=i.arrayToMap("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined".split("|")),n=i.arrayToMap("debugger|with|const|export|let|private|public|yield|protected|extern|native|as|operator|__fake__|__readonly__".split("|")),r="[a-zA-Z_][a-zA-Z0-9_]*\\b";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},s.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:["storage.type","text","entity.name.function"],regex:"(function)(\\s+)("+r+")"},{token:function(r){return r=="this"?"variable.language":r=="function"?"storage.type":e.hasOwnProperty(r)||n.hasOwnProperty(r)?"keyword":t.hasOwnProperty(r)?"constant.language":/^_?[A-Z][a-zA-Z0-9_]*$/.test(r)?"language.support.class":"identifier"},regex:r},{token:"keyword.operator",regex:"!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({<]"},{token:"paren.rparen",regex:"[\\])}>]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.embedRules(s,"doc-",[s.getEndRule("start")])};r.inherits(u,o),t.JsxHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/jsx",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsx_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";function f(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a}var r=e("../lib/oop"),i=e("./text").Mode,s=e("./jsx_highlight_rules").JsxHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode;r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/jsx"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-julia.js b/library/ace/mode-julia.js
new file mode 100644
index 000000000..d89593199
--- /dev/null
+++ b/library/ace/mode-julia.js
@@ -0,0 +1 @@
+ace.define("ace/mode/julia_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#function_decl"},{include:"#function_call"},{include:"#type_decl"},{include:"#keyword"},{include:"#operator"},{include:"#number"},{include:"#string"},{include:"#comment"}],"#bracket":[{token:"keyword.bracket.julia",regex:"\\(|\\)|\\[|\\]|\\{|\\}|,"}],"#comment":[{token:["punctuation.definition.comment.julia","comment.line.number-sign.julia"],regex:"(#)(?!\\{)(.*$)"}],"#function_call":[{token:["support.function.julia","text"],regex:"([a-zA-Z0-9_]+!?)([\\w\\xff-\\u218e\\u2455-\\uffff]*\\()"}],"#function_decl":[{token:["keyword.other.julia","meta.function.julia","entity.name.function.julia","meta.function.julia","text"],regex:"(function|macro)(\\s*)([a-zA-Z0-9_\\{]+!?)([\\w\\xff-\\u218e\\u2455-\\uffff]*)([(\\\\{])"}],"#keyword":[{token:"keyword.other.julia",regex:"\\b(?:function|type|immutable|macro|quote|abstract|bitstype|typealias|module|baremodule|new)\\b"},{token:"keyword.control.julia",regex:"\\b(?:if|else|elseif|while|for|in|begin|let|end|do|try|catch|finally|return|break|continue)\\b"},{token:"storage.modifier.variable.julia",regex:"\\b(?:global|local|const|export|import|importall|using)\\b"},{token:"variable.macro.julia",regex:"@[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b"}],"#number":[{token:"constant.numeric.julia",regex:"\\b0(?:x|X)[0-9a-fA-F]*|(?:\\b[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]*)?(?:im)?|\\bInf(?:32)?\\b|\\bNaN(?:32)?\\b|\\btrue\\b|\\bfalse\\b"}],"#operator":[{token:"keyword.operator.update.julia",regex:"=|:=|\\+=|-=|\\*=|/=|//=|\\.//=|\\.\\*=|\\\\=|\\.\\\\=|^=|\\.^=|%=|\\|=|&=|\\$=|<<=|>>="},{token:"keyword.operator.ternary.julia",regex:"\\?|:"},{token:"keyword.operator.boolean.julia",regex:"\\|\\||&&|!"},{token:"keyword.operator.arrow.julia",regex:"->|<-|-->"},{token:"keyword.operator.relation.julia",regex:">|<|>=|<=|==|!=|\\.>|\\.<|\\.>=|\\.>=|\\.==|\\.!=|\\.=|\\.!|<:|:>"},{token:"keyword.operator.range.julia",regex:":"},{token:"keyword.operator.shift.julia",regex:"<<|>>"},{token:"keyword.operator.bitwise.julia",regex:"\\||\\&|~"},{token:"keyword.operator.arithmetic.julia",regex:"\\+|-|\\*|\\.\\*|/|\\./|//|\\.//|%|\\.%|\\\\|\\.\\\\|\\^|\\.\\^"},{token:"keyword.operator.isa.julia",regex:"::"},{token:"keyword.operator.dots.julia",regex:"\\.(?=[a-zA-Z])|\\.\\.+"},{token:"keyword.operator.interpolation.julia",regex:"\\$#?(?=.)"},{token:["variable","keyword.operator.transposed-variable.julia"],regex:"([\\w\\xff-\\u218e\\u2455-\\uffff]+)((?:'|\\.')*\\.?')"},{token:"text",regex:"\\[|\\("},{token:["text","keyword.operator.transposed-matrix.julia"],regex:"([\\]\\)])((?:'|\\.')*\\.?')"}],"#string":[{token:"punctuation.definition.string.begin.julia",regex:"'",push:[{token:"punctuation.definition.string.end.julia",regex:"'",next:"pop"},{include:"#string_escaped_char"},{defaultToken:"string.quoted.single.julia"}]},{token:"punctuation.definition.string.begin.julia",regex:'"',push:[{token:"punctuation.definition.string.end.julia",regex:'"',next:"pop"},{include:"#string_escaped_char"},{defaultToken:"string.quoted.double.julia"}]},{token:"punctuation.definition.string.begin.julia",regex:'\\b[\\w\\xff-\\u218e\\u2455-\\uffff]+"',push:[{token:"punctuation.definition.string.end.julia",regex:'"[\\w\\xff-\\u218e\\u2455-\\uffff]*',next:"pop"},{include:"#string_custom_escaped_char"},{defaultToken:"string.quoted.custom-double.julia"}]},{token:"punctuation.definition.string.begin.julia",regex:"`",push:[{token:"punctuation.definition.string.end.julia",regex:"`",next:"pop"},{include:"#string_escaped_char"},{defaultToken:"string.quoted.backtick.julia"}]}],"#string_custom_escaped_char":[{token:"constant.character.escape.julia",regex:'\\\\"'}],"#string_escaped_char":[{token:"constant.character.escape.julia",regex:"\\\\(?:\\\\|[0-3]\\d{,2}|[4-7]\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8}|.)"}],"#type_decl":[{token:["keyword.control.type.julia","meta.type.julia","entity.name.type.julia","entity.other.inherited-class.julia","punctuation.separator.inheritance.julia","entity.other.inherited-class.julia"],regex:"(type|immutable)(\\s+)([a-zA-Z0-9_]+)(?:(\\s*)(<:)(\\s*[.a-zA-Z0-9_:]+))?"},{token:["other.typed-variable.julia","support.type.julia"],regex:"([a-zA-Z0-9_]+)(::[a-zA-Z0-9_{}]+)"}]},this.normalizeRules()};s.metaData={fileTypes:["jl"],firstLineMatch:"^#!.*\\bjulia\\s*$",foldingStartMarker:"^\\s*(?:if|while|for|begin|function|macro|module|baremodule|type|immutable|let)\\b(?!.*\\bend\\b).*$",foldingStopMarker:"^\\s*(?:end)\\b.*$",name:"Julia",scopeName:"source.julia"},r.inherits(s,i),t.JuliaHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/julia",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/julia_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./julia_highlight_rules").JuliaHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="#",this.blockComment="",this.$id="ace/mode/julia"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-latex.js b/library/ace/mode-latex.js
new file mode 100644
index 000000000..e7475214f
--- /dev/null
+++ b/library/ace/mode-latex.js
@@ -0,0 +1 @@
+ace.define("ace/mode/latex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:"%.*$"},{token:["keyword","lparen","variable.parameter","rparen","lparen","storage.type","rparen"],regex:"(\\\\(?:documentclass|usepackage|input))(?:(\\[)([^\\]]*)(\\]))?({)([^}]*)(})"},{token:["keyword","lparen","variable.parameter","rparen"],regex:"(\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?"},{token:["storage.type","lparen","variable.parameter","rparen"],regex:"(\\\\(?:begin|end))({)(\\w*)(})"},{token:"storage.type",regex:"\\\\[a-zA-Z]+"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"constant.character.escape",regex:"\\\\[^a-zA-Z]?"},{token:"string",regex:"\\${1,2}",next:"equation"}],equation:[{token:"comment",regex:"%.*$"},{token:"string",regex:"\\${1,2}",next:"start"},{token:"constant.character.escape",regex:"\\\\(?:[^a-zA-Z]|[a-zA-Z]+)"},{token:"error",regex:"^\\s*$",next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.LatexHighlightRules=s}),ace.define("ace/mode/folding/latex",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.foldingStartMarker=/^\s*\\(begin)|(section|subsection|paragraph)\b|{\s*$/,this.foldingStopMarker=/^\s*\\(end)\b|^\s*}/,this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getLine(n),i=this.foldingStartMarker.exec(r);if(i)return i[1]?this.latexBlock(e,n,i[0].length-1):i[2]?this.latexSection(e,n,i[0].length-1):this.openingBracketBlock(e,"{",n,i.index);var i=this.foldingStopMarker.exec(r);if(i)return i[1]?this.latexBlock(e,n,i[0].length-1):this.closingBracketBlock(e,"}",n,i.index+i[0].length)},this.latexBlock=function(e,t,n){var r={"\\begin":1,"\\end":-1},i=new o(e,t,n),u=i.getCurrentToken();if(!u||u.type!="storage.type"&&u.type!="constant.character.escape")return;var a=u.value,f=r[a],l=function(){var e=i.stepForward(),t=e.type=="lparen"?i.stepForward().value:"";return f===-1&&(i.stepBackward(),t&&i.stepBackward()),t},c=[l()],h=f===-1?i.getCurrentTokenColumn():e.getLine(t).length,p=t;i.step=f===-1?i.stepBackward:i.stepForward;while(u=i.step()){if(!u||u.type!="storage.type"&&u.type!="constant.character.escape")continue;var d=r[u.value];if(!d)continue;var v=l();if(d===f)c.unshift(v);else if(c.shift()!==v||!c.length)break}if(c.length)return;var t=i.getCurrentTokenRow();return f===-1?new s(t,e.getLine(t).length,p,h):(i.stepBackward(),new s(p,h,t,i.getCurrentTokenColumn()))},this.latexSection=function(e,t,n){var r=["\\subsection","\\section","\\begin","\\end","\\paragraph"],i=new o(e,t,n),u=i.getCurrentToken();if(!u||u.type!="storage.type")return;var a=r.indexOf(u.value),f=0,l=t;while(u=i.stepForward()){if(u.type!=="storage.type")continue;var c=r.indexOf(u.value);if(c>=2){f||(l=i.getCurrentTokenRow()-1),f+=c==2?1:-1;if(f<0)break}else if(c>=a)break}f||(l=i.getCurrentTokenRow()-1);while(l>t&&!/\S/.test(e.getLine(l)))l--;return new s(t,e.getLine(t).length,l,e.getLine(l).length)}}.call(u.prototype)}),ace.define("ace/mode/latex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/latex_highlight_rules","ace/mode/folding/latex","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./latex_highlight_rules").LatexHighlightRules,o=e("./folding/latex").FoldMode,u=e("../range").Range,a=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(a,i),function(){this.type="text",this.lineCommentStart="%",this.$id="ace/mode/latex"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-lean.js b/library/ace/mode-lean.js
new file mode 100644
index 000000000..1ecbf7c8c
--- /dev/null
+++ b/library/ace/mode-lean.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/lean_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=["add_rewrite","alias","as","assume","attribute","begin","by","calc","calc_refl","calc_subst","calc_trans","check","classes","coercions","conjecture","constants","context","corollary","else","end","environment","eval","example","exists","exit","export","exposing","extends","fields","find_decl","forall","from","fun","have","help","hiding","if","import","in","infix","infixl","infixr","instances","let","local","match","namespace","notation","obtain","obtains","omit","opaque","open","options","parameter","parameters","postfix","precedence","prefix","premise","premises","print","private","proof","protected","qed","raw","renaming","section","set_option","show","tactic_hint","take","then","universe","universes","using","variable","variables","with"].join("|"),t=["inductive","structure","record","theorem","axiom","axioms","lemma","hypothesis","definition","constant"].join("|"),n=["Prop","Type","Type'","Type\u208a","Type\u2081","Type\u2082","Type\u2083"].join("|"),r="\\[("+["abbreviations","all-transparent","begin-end-hints","class","classes","coercion","coercions","declarations","decls","instance","irreducible","multiple-instances","notation","notations","parsing-only","persistent","reduce-hints","reducible","tactic-hints","visible","wf","whnf"].join("|")+")\\]",s=[].join("|"),o=this.$keywords=this.createKeywordMapper({"keyword.control":e,"storage.type":n,"keyword.operator":s,"variable.language":"sorry"},"identifier"),u="[A-Za-z_\u03b1-\u03ba\u03bc-\u03fb\u1f00-\u1ffe\u2100-\u214f][A-Za-z0-9_'\u03b1-\u03ba\u03bc-\u03fb\u1f00-\u1ffe\u2070-\u2079\u207f-\u2089\u2090-\u209c\u2100-\u214f]*",a=new RegExp(["#","@","->","\u223c","\u2194","/","==","=",":=","<->","/\\","\\/","\u2227","\u2228","\u2260","<",">","\u2264","\u2265","\u00ac","<=",">=","\u207b\u00b9","\u2b1d","\u25b8","\\+","\\*","-","/","\u03bb","\u2192","\u2203","\u2200",":="].join("|"));this.$rules={start:[{token:"comment",regex:"--.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/-",next:"comment"},{stateName:"qqstring",token:"string.start",regex:'"',next:[{token:"string.end",regex:'"',next:"start"},{token:"constant.language.escape",regex:/\\[n"\\]/},{defaultToken:"string"}]},{token:"keyword.control",regex:t,next:[{token:"variable.language",regex:u,next:"start"}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"storage.modifier",regex:r},{token:o,regex:u},{token:"operator",regex:a},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"-/",next:"start"},{defaultToken:"comment"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(o,s),t.leanHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/lean",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lean_highlight_rules","ace/mode/matching_brace_outdent","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./lean_highlight_rules").leanHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=function(){this.HighlightRules=s,this.$outdent=new o};r.inherits(a,i),function(){this.lineCommentStart="--",this.blockComment={start:"/-",end:"-/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="- ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/lean"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-less.js b/library/ace/mode-less.js
new file mode 100644
index 000000000..79f2fe07f
--- /dev/null
+++ b/library/ace/mode-less.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./css_highlight_rules"),o=function(){var e="@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|or|and|when|not",t=e.split("|"),n=s.supportType.split("|"),r=this.createKeywordMapper({"support.constant":s.supportConstant,keyword:e,"support.constant.color":s.supportConstantColor,"support.constant.fonts":s.supportConstantFonts},"identifier",!0),i="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+i+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:i},{token:["support.function","paren.lparen","string","paren.rparen"],regex:"(url)(\\()(.*)(\\))"},{token:["support.function","paren.lparen"],regex:"(:extend|[a-z0-9_\\-]+)(\\()"},{token:function(e){return t.indexOf(e.toLowerCase())>-1?"keyword":"variable"},regex:"[@\\$][a-z0-9_\\-@\\$]*\\b"},{token:"variable",regex:"[@\\$]\\{[a-z0-9_\\-@\\$]*\\}"},{token:function(e,t){return n.indexOf(e.toLowerCase())>-1?["support.type.property","text"]:["support.type.unknownProperty","text"]},regex:"([a-z0-9-_]+)(\\s*:)"},{token:"keyword",regex:"&"},{token:r,regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z_][a-z0-9-_]*"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|=|!=|-|%|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.normalizeRules()};r.inherits(o,i),t.LessHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/less",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/less_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/css_completions","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./less_highlight_rules").LessHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/css").CssBehaviour,a=e("./css_completions").CssCompletions,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.$completer=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions("ruleset",t,n,r)},this.$id="ace/mode/less"}.call(l.prototype),t.Mode=l}) \ No newline at end of file
diff --git a/library/ace/mode-liquid.js b/library/ace/mode-liquid.js
new file mode 100644
index 000000000..30eced32a
--- /dev/null
+++ b/library/ace/mode-liquid.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/liquid_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./html_highlight_rules").HtmlHighlightRules,o=function(){s.call(this);var e="date|capitalize|downcase|upcase|first|last|join|sort|map|size|escape|escape_once|strip_html|strip_newlines|newline_to_br|replace|replace_first|truncate|truncatewords|prepend|append|minus|plus|times|divided_by|split",t="capture|endcapture|case|endcase|when|comment|endcomment|cycle|for|endfor|in|reversed|if|endif|else|elsif|include|endinclude|unless|endunless|style|text|image|widget|plugin|marker|endmarker|tablerow|endtablerow",n="forloop|tablerowloop",r="assign",i=this.createKeywordMapper({"variable.language":n,keyword:t,"support.function":e,"keyword.definition":r},"identifier");for(var o in this.$rules)this.$rules[o].unshift({token:"variable",regex:"{%",push:"liquid-start"},{token:"variable",regex:"{{",push:"liquid-start"});this.addRules({"liquid-start":[{token:"variable",regex:"}}",next:"pop"},{token:"variable",regex:"%}",next:"pop"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"/|\\*|\\-|\\+|=|!=|\\?\\:"},{token:"paren.lparen",regex:/[\[\({]/},{token:"paren.rparen",regex:/[\])}]/},{token:"text",regex:"\\s+"}]}),this.normalizeRules()};r.inherits(o,i),t.LiquidHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/liquid",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/liquid_highlight_rules","ace/mode/matching_brace_outdent","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("./liquid_highlight_rules").LiquidHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=function(){this.HighlightRules=s,this.$outdent=new o};r.inherits(a,i),function(){this.blockComment={start:"<!--",end:"-->"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/liquid"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-lisp.js b/library/ace/mode-lisp.js
new file mode 100644
index 000000000..830ec74cc
--- /dev/null
+++ b/library/ace/mode-lisp.js
@@ -0,0 +1 @@
+ace.define("ace/mode/lisp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="case|do|let|loop|if|else|when",t="eq|neq|and|or",n="null|nil",r="cons|car|cdr|cond|lambda|format|setq|setf|quote|eval|append|list|listp|memberp|t|load|progn",i=this.createKeywordMapper({"keyword.control":e,"keyword.operator":t,"constant.language":n,"support.function":r},"identifier",!0);this.$rules={start:[{token:"comment",regex:";.*$"},{token:["storage.type.function-type.lisp","text","entity.name.function.lisp"],regex:"(?:\\b(?:(defun|defmethod|defmacro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)"},{token:["punctuation.definition.constant.character.lisp","constant.character.lisp"],regex:"(#)((?:\\w|[\\\\+-=<>'\"&#])+)"},{token:["punctuation.definition.variable.lisp","variable.other.global.lisp","punctuation.definition.variable.lisp"],regex:"(\\*)(\\S*)(\\*)"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"string",regex:'"(?=.)',next:"qqstring"}],qqstring:[{token:"constant.character.escape.lisp",regex:"\\\\."},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"}]}};r.inherits(s,i),t.LispHighlightRules=s}),ace.define("ace/mode/lisp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lisp_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./lisp_highlight_rules").LispHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart=";",this.$id="ace/mode/lisp"}.call(o.prototype),t.Mode=o}) \ No newline at end of file
diff --git a/library/ace/mode-live_script.js b/library/ace/mode-live_script.js
new file mode 100644
index 000000000..5248253c0
--- /dev/null
+++ b/library/ace/mode-live_script.js
@@ -0,0 +1 @@
+ace.define("ace/mode/live_script_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"punctuation.definition.comment.livescript",regex:"\\/\\*",push:[{token:"punctuation.definition.comment.livescript",regex:"\\*\\/",next:"pop"},{token:"storage.type.annotation.livescriptscript",regex:"@\\w*"},{defaultToken:"comment.block.livescript"}]},{token:["punctuation.definition.comment.livescript","comment.line.number-sign.livescript"],regex:"(#)(?!\\{)(.*$)"},{token:["variable.parameter.function.livescript","meta.inline.function.livescript","storage.type.function.livescript","meta.inline.function.livescript","variable.parameter.function.livescript","meta.inline.function.livescript","storage.type.function.livescript"],regex:"(\\s*\\!?\\(\\s*[^()]*?\\))(\\s*)(!?[~-]{1,2}>)|(\\s*\\!?)(\\(?[^()]*?\\)?)(\\s*)(<[~-]{1,2}!?)",comment:"match stuff like: a -> \u2026 "},{token:["keyword.operator.new.livescript","meta.class.instance.constructor","entity.name.type.instance.livescript"],regex:"(new)(\\s+)(\\w+(?:\\.\\w*)*)"},{token:"keyword.illegal.livescript",regex:"\\bp(?:ackage|r(?:ivate|otected)|ublic)|interface|enum|static|yield\\b"},{token:"punctuation.definition.string.begin.livescript",regex:"'''",push:[{token:"punctuation.definition.string.end.livescript",regex:"'''",next:"pop"},{defaultToken:"string.quoted.heredoc.livescript"}]},{token:"punctuation.definition.string.begin.livescript",regex:'"""',push:[{token:"punctuation.definition.string.end.livescript",regex:'"""',next:"pop"},{token:"constant.character.escape.livescript",regex:"\\\\."},{include:"#interpolated_livescript"},{defaultToken:"string.quoted.double.heredoc.livescript"}]},{token:"punctuation.definition.string.begin.livescript",regex:"``",push:[{token:"punctuation.definition.string.end.livescript",regex:"``",next:"pop"},{token:"constant.character.escape.livescript",regex:"\\\\(?:x[\\da-fA-F]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)"},{defaultToken:"string.quoted.script.livescript"}]},{token:"string.array-literal.livescript",regex:"<\\[",push:[{token:"string.array-literal.livescript",regex:"\\]>",next:"pop"},{defaultToken:"string.array-literal.livescript"}]},{token:"string.regexp.livescript",regex:"/{2}(?![\\s=/*+{}?]).*?[^\\\\]/[igmy]{0,4}(?![a-zA-Z0-9])/{2}"},{token:"string.regexp.livescript",regex:"/{2}$",push:[{token:"string.regexp.livescript",regex:"/{2}[imgy]{0,4}",next:"pop"},{include:"#embedded_spaced_comment"},{include:"#interpolated_livescript"},{defaultToken:"string.regexp.livescript"}]},{token:"string.regexp.livescript",regex:"/{2}",push:[{token:"string.regexp.livescript",regex:"/{2}[imgy]{0,4}",next:"pop"},{token:"constant.character.escape.livescript",regex:"\\\\(?:x[\\da-fA-F]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)"},{include:"#interpolated_livescript"},{defaultToken:"string.regexp.livescript"}]},{token:"string.regexp.livescript",regex:"/(?![\\s=/*+{}?]).*?[^\\\\]/[igmy]{0,4}(?![a-zA-Z0-9])"},{token:"keyword.control.livescript",regex:"\\b(?<![\\.\\$\\-])(?:t(?:h(?:is|row|en)|ry|ypeof!?|il|o)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction|rom|allthrough)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith|hen)|o(?:f|r|therwise)|return|break|let|var|loop|match|by)(?!\\-|\\s*:)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)\n \\b(?<![\\.\\$\\-])(?:\n t(?:h(?:is|row|en)|ry|ypeof!?|il|o)\n |c(?:on(?:tinue|st)|a(?:se|tch)|lass)\n |i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])\n |d(?:e(?:fault|lete|bugger)|o)\n |f(?:or(?:\\s+own)?|inally|unction|rom|allthrough)\n |s(?:uper|witch)\n |e(?:lse|x(?:tends|port)|val)\n |a(?:nd|rguments)\n |n(?:ew|ot)\n |un(?:less|til)\n |w(?:hile|ith|hen)\n |o(?:f|r|therwise)\n |return|break|let|var|loop\n |match\n |by\n )(?!\\-|\\s*:)\\b\n "},{token:"keyword.operator.livescript",regex:"\\b(?<![\\.\\$\\-])(?:instanceof|new|delete|typeof|and|or|is|isnt|not)(?!\\-|\\s*:)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)\n \\b(?<![\\.\\$\\-])(\n instanceof|new|delete|typeof|and|or|is|isnt|not\n )(?!\\-|\\s*:)\\b\n "},{token:"keyword.operator.livescript",regex:"and=|or=|%|&|\\^|\\*|\\/|(?<![a-zA-Z$_])(?:\\-)?\\-(?!\\-?>)|\\+\\+|\\+|~(?!~?>)|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<(?!\\[)|(?<!\\])>|(?<!\\w)!(?!(?:[~\\-]+)?>)|&&|\\.\\.(?:\\.)?|\\s\\.\\s|\\?|\\||\\|\\||\\:|\\*=|(?<!\\()/=|%=|\\+=|\\-=|\\.=|&=|\\(\\.|\\.\\)|\\^=",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)\n and=|or=|%|&|\\^|\\*|\\/|(?<![a-zA-Z$_])(\\-)?\\-(?!\\-?>)|\\+\\+|\\+|\n ~(?!~?>)|==|=|!=|<=|>=|<<=|>>=|\n >>>=|<>|<(?!\\[)|(?<!\\])>|(?<!\\w)!(?!([~\\-]+)?>)|&&|\\.\\.(\\.)?|\\s\\.\\s|\\?|\\||\\|\\||\\:|\\*=|(?<!\\()/=|%=|\\+=|\\-=|\\.=|&=|\\(\\.|\\.\\)|\n \\^=\n "},{token:["variable.assignment.livescript","variable.assignment.livescript","variable.assignment.livescript","punctuation.separator.key-value","keyword.operator.livescript","variable.assignment.livescript"],regex:"([a-zA-Z\\$_])((?:[\\w$.-])*)(\\s*)(?!\\::)(?:(:)|(=))(\\s*)(?!(?:\\s*!?\\s*\\(.*\\))?\\s*!?[~-]{1,2}>)"},{token:"keyword.operator.livescript",regex:"(?<=\\s|^)[\\[\\{](?=.*?[\\]\\}]\\s+[:=])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<=\\s|^)([\\[\\{])(?=.*?[\\]\\}]\\s+[:=])",push:[{token:"keyword.operator.livescript",regex:"[\\]\\}]\\s*[:=]",next:"pop"},{include:"#variable_name"},{include:"#instance_variable"},{include:"#single_quoted_string"},{include:"#double_quoted_string"},{include:"#numeric"},{defaultToken:"meta.variable.assignment.destructured.livescript"}]},{token:["meta.function.livescript","entity.name.function.livescript","entity.name.function.livescript","entity.name.function.livescript","entity.name.function.livescript","variable.parameter.function.livescript","entity.name.function.livescript","storage.type.function.livescript"],regex:"(\\s*)(?=[a-zA-Z\\$_])([a-zA-Z\\$_])((?:[\\w$.:-])*)(\\s*)([:=])((?:\\s*!?\\s*\\(.*\\))?)(\\s*)(!?[~-]{1,2}>)"},{token:"storage.type.function.livescript",regex:"!?[~-]{1,2}>"},{token:"constant.language.boolean.true.livescript",regex:"\\b(?<!\\.)(?:true|on|yes)(?!\\s*[:=])\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"\\b(?<!\\.)(true|on|yes)(?!\\s*[:=])\\b"},{token:"constant.language.boolean.false.livescript",regex:"\\b(?<!\\.)(?:false|off|no)(?!\\s*[:=])\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"\\b(?<!\\.)(false|off|no)(?!\\s*[:=])\\b"},{token:"constant.language.null.livescript",regex:"\\b(?<!\\.)(?:null|void)(?!\\s*[:=])\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"\\b(?<!\\.)(null|void)(?!\\s*[:=])\\b"},{token:"variable.language.livescript",regex:"\\b(?<!\\.)(?:super|this|extends)(?!\\s*[:=])\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"\\b(?<!\\.)(super|this|extends)(?!\\s*[:=])\\b"},{token:["storage.type.class.livescript","meta.class.livescript","entity.name.type.class.livescript","meta.class.livescript","keyword.control.inheritance.livescript","meta.class.livescript","entity.other.inherited-class.livescript"],regex:"(class\\b)(\\s+)((?:@?[a-zA-Z$_][\\w$.-]*)?)(?:(\\s+)(extends)(\\s+)(@?[a-zA-Z$_][\\w$.-]*))?"},{token:"keyword.other.livescript",regex:"\\b(?:debugger|\\\\)\\b"},{token:"support.class.livescript",regex:"\\b(?:Array|ArrayBuffer|Blob|Boolean|Date|document|event|Function|Int(?:8|16|32|64)Array|Math|Map|Number|Object|Proxy|RegExp|Set|String|WeakMap|window|Uint(?:8|16|32|64)Array|XMLHttpRequest)\\b"},{token:"entity.name.type.object.livescript",regex:"\\bconsole\\b"},{token:"support.function.console.livescript",regex:"(?<=console\\.)(?:debug|warn|info|log|error|time(?:End|-end)|assert)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"((?<=console\\.)(debug|warn|info|log|error|time(End|-end)|assert))\\b"},{token:"support.function.livescript",regex:"\\b(?:decodeURI(?:Component)?|encodeURI(?:Component)?|eval|parse(?:Float|Int)|require)\\b"},{token:"support.function.prelude.livescript",regex:"(?<![.-])\\b(?:map|filter|reject|partition|find|each|head|tail|last|initial|empty|values|keys|length|cons|append|join|reverse|fold(?:l|r)?1?|unfoldr|and(?:List|-list)|or(?:List|-list)|any|all|unique|sum|product|mean|compact|concat(?:Map|-map)?|maximum|minimum|scan(?:l|r)?1?|replicate|slice|apply|split(?:At|-at)?|take(?:While|-while)?|drop(?:While|-while)?|span|first|break(?:It|-it)|list(?:ToObj|-to-obj)|obj(?:ToFunc|-to-func)|pairs(?:ToObj|-to-obj)|obj(?:ToPairs|-to-pairs|ToLists|-to-lists)|zip(?:All|-all)?(?:With|-with)?|compose|curry|partial|flip|fix|sort(?:With|-with|By|-by)?|group(?:By|-by)|break(?:List|-list|Str|-str)|difference|intersection|union|average|flatten|chars|unchars|repeat|lines|unlines|words|unwords|max|min|negate|abs|signum|quot|rem|div|mod|recip|pi|tau|exp|sqrt|ln|pow|sin|cos|tan|asin|acos|atan|atan2|truncate|round|ceiling|floor|is(?:It|-it)NaN|even|odd|gcd|lcm|disabled__id)\\b(?![.-])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)(?<![.-])\\b(\n map|filter|reject|partition|find|each|head|tail|last|initial|empty|\n values|keys|length|cons|append|join|reverse|fold(l|r)?1?|unfoldr|\n and(List|-list)|or(List|-list)|any|all|unique|sum|product|mean|compact|\n concat(Map|-map)?|maximum|minimum|scan(l|r)?1?|replicate|slice|apply|\n split(At|-at)?|take(While|-while)?|drop(While|-while)?|span|first|\n break(It|-it)|list(ToObj|-to-obj)|obj(ToFunc|-to-func)|\n pairs(ToObj|-to-obj)|obj(ToPairs|-to-pairs|ToLists|-to-lists)|\n zip(All|-all)?(With|-with)?|compose|curry|partial|flip|fix|\n sort(With|-with|By|-by)?|group(By|-by)|break(List|-list|Str|-str)|\n difference|intersection|union|average|flatten|chars|unchars|repeat|\n lines|unlines|words|unwords|max|min|negate|abs|signum|quot|rem|div|mod|\n recip|pi|tau|exp|sqrt|ln|pow|sin|cos|tan|asin|acos|atan|atan2|truncate|\n round|ceiling|floor|is(It|-it)NaN|even|odd|gcd|lcm|disabled__id\n )\\b(?![.-])",comment:'Generated by DOM query from http://gkz.github.com/prelude-ls/:\n [].slice\n .call(document.querySelectorAll(".nav-pills li a"))\n .map(function(_) {return _.innerText})\n .filter(function(_) {return _.trim() !== \'})\n .slice(2)\n .join("|")\n '},{token:"support.function.semireserved.livescript",regex:"(?<![.-])\\b(?:that|it|e)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)(?<![.-])\\b(that|it|e)\\b"},{token:"support.function.method.array.livescript",regex:"(?<=(?:\\.|\\]|\\)))(?:apply|call|concat|every|filter|for(?:Each|-each)|from|has(?:Own|-own)(?:Property|-property)|index(?:Of|-of)|is(?:Prototype|-prototype)(?:Of|-of)|join|last(?:Index|-index)(?:Of|-of)|map|of|pop|property(?:Is|-is)(?:Enumerable|-enumerable)|push|reduce(?:Right|-right)?|reverse|shift|slice|some|sort|splice|to(?:Locale|-locale)?(?:String|-string)|unshift|valueOf)\\b(?!-)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)((?<=(\\.|\\]|\\)))(\n apply|call|concat|every|filter|for(Each|-each)|\n from|has(Own|-own)(Property|-property)|index(Of|-of)|\n is(Prototype|-prototype)(Of|-of)|join|last(Index|-index)(Of|-of)|\n map|of|pop|property(Is|-is)(Enumerable|-enumerable)|push|\n reduce(Right|-right)?|reverse|shift|slice|some|sort|\n splice|to(Locale|-locale)?(String|-string)|unshift|valueOf\n ))\\b(?!-) "},{token:"support.function.static.array.livescript",regex:"(?<=Array\\.)isArray\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)((?<=Array\\.)(\n isArray\n ))\\b"},{token:"support.function.static.object.livescript",regex:"(?<=Object\\.)(?:create|ace.define(?:Propert|-propert)(?:ies|y)|freeze|get(?:Own|-own)(?:Property|-property)(?:Descriptors?|Names)|get(?:Property|-property)(?:Descriptor|Names)|getPrototypeOf|is(?:(?:Extensible|-extensible)|(?:Frozen|-frozen)|(?:Sealed|-sealed))?|keys|prevent(?:Extensions|-extensions)|seal)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)((?<=Object\\.)(\n create|ace.define(Propert|-propert)(ies|y)|freeze|\n get(Own|-own)(Property|-property)(Descriptors?|Names)|\n get(Property|-property)(Descriptor|Names)|getPrototypeOf|\n is((Extensible|-extensible)|(Frozen|-frozen)|(Sealed|-sealed))?|\n keys|prevent(Extensions|-extensions)|seal\n ))\\b"},{token:"support.function.static.math.livescript",regex:"(?<=Math\\.)(?:abs|acos|acosh|asin|asinh|atan|atan2|atanh|ceil|cos|cosh|exp|expm1|floor|hypot|log|log10|log1p|log2|max|min|pow|random|round|sign|sin|sinh|sqrt|tan|tanh|trunc)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)((?<=Math\\.)(\n abs|acos|acosh|asin|asinh|atan|atan2|atanh|ceil|cos|cosh|exp|expm1|floor|\n hypot|log|log10|log1p|log2|max|min|pow|random|round|sign|sin|sinh|sqrt|\n tan|tanh|trunc\n ))\\b"},{token:"support.function.static.number.livescript",regex:"(?<=Number\\.)(?:is(?:Finite|Integer|NaN)|to(?:Integer|-integer))\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)((?<=Number\\.)(\n is(Finite|Integer|NaN)|to(Integer|-integer)\n ))\\b"},{token:"constant.language.livescript",regex:"\\b(?:Infinity|NaN|undefined)\\b"},{token:"punctuation.terminator.statement.livescript",regex:"\\;"},{token:"meta.delimiter.object.comma.livescript",regex:",[ |\\t]*"},{token:"meta.delimiter.method.period.livescript",regex:"\\."},{token:"meta.brace.curly.livescript",regex:"\\{|\\}"},{token:"meta.brace.round.livescript",regex:"\\(|\\)"},{token:"meta.brace.square.livescript",regex:"\\[|\\]\\s*"},{include:"#instance_variable"},{include:"#backslash_string"},{include:"#single_quoted_string"},{include:"#double_quoted_string"},{include:"#numeric"}],"#backslash_string":[{token:"string.quoted.single.livescript",regex:"\\\\(?:[\\\\)\\s,\\};\\]])?",push:[{token:"punctuation.definition.string.end.livescript",regex:"[\\\\)\\s,\\};\\]]",next:"pop"},{defaultToken:"string.quoted.single.livescript"}]}],"#double_quoted_string":[{token:"punctuation.definition.string.begin.livescript",regex:'"',push:[{token:"punctuation.definition.string.end.livescript",regex:'"',next:"pop"},{token:"constant.character.escape.livescript",regex:"\\\\(?:x[\\da-fA-F]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)"},{include:"#interpolated_livescript"},{defaultToken:"string.quoted.double.livescript"}]}],"#embedded_comment":[{token:["punctuation.definition.comment.livescript","comment.line.number-sign.livescript"],regex:"(?<!\\\\)(#)(.*$)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!\\\\)(#).*$\\n"}],"#embedded_spaced_comment":[{token:["punctuation.definition.comment.livescript","comment.line.number-sign.livescript"],regex:"(?<!\\\\)(#\\s)(.*$)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!\\\\)(#\\s).*$\\n"}],"#constructor_variable":[{token:"variable.other.readwrite.constructor.livescript",regex:"[a-zA-Z$_][\\w$-]*@{2}(?:[a-zA-Z$_][\\w$-]*)?"}],"#instance_variable":[{token:"variable.other.readwrite.instance.livescript",regex:"(?<!\\S)@(?:[a-zA-Z$_][\\w$-]*)?",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!\\S)(@)([a-zA-Z$_][\\w$-]*)?"}],"#interpolated_livescript":[{todo:{token:"punctuation.section.embedded.livescript",regex:"\\#\\{",push:[{token:"punctuation.section.embedded.livescript",regex:"\\}",next:"pop"},{include:"$self"},{defaultToken:"source.livescript.embedded.source"}]}},{todo:{token:"source.livescript.embedded.source.simple",regex:"\\#",push:[{token:"source.livescript.embedded.source.simple",regex:"",next:"pop"},{include:"$self"},{defaultToken:"source.livescript.embedded.source.simple"}]}}],"#numeric":[{token:"constant.numeric.livescript",regex:"(?<![\\$@a-zA-Z_])(?:[0-9]+r[0-9_]+|(?:16r|0[xX])[0-9a-fA-F_]+|[0-9]+(?:\\.[0-9_]+)?(?:e[+\\-]?[0-9_]+)?[_a-zA-Z]*)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<![\\$@a-zA-Z_])(([0-9]+r[0-9_]+)|((16r|0[xX])[0-9a-fA-F_]+)|([0-9]+(\\.[0-9_]+)?(e[+\\-]?[0-9_]+)?)[_a-zA-Z]*)"}],"#single_quoted_string":[{token:"punctuation.definition.string.begin.livescript",regex:"'",push:[{token:"punctuation.definition.string.end.livescript",regex:"'",next:"pop"},{token:"constant.character.escape.livescript",regex:"\\\\(?:x[\\da-fA-F]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)"},{defaultToken:"string.quoted.single.livescript"}]}],"#variable_name":[{token:"variable.assignment.livescript",regex:"[a-zA-Z\\$_][\\w$-]*(?:\\.\\w+)*(?!\\-)"}]},this.normalizeRules()};s.metaData={comment:"LiveScript Syntax: version 1",fileTypes:["ls","Slakefile","ls.erb"],firstLineMatch:"^#!.*\\bls",foldingStartMarker:"^\\s*class\\s+\\S.*$|.*(->|=>)\\s*$|.*[\\[{]\\s*$",foldingStopMarker:"^\\s*$|^\\s*[}\\]]\\s*$",keyEquivalent:"^~C",name:"LiveScript",scopeName:"source.livescript"},r.inherits(s,i),t.LiveScriptHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/live_script",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/live_script_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./live_script_highlight_rules").LiveScriptHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.$id="ace/mode/live_script"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-livescript.js b/library/ace/mode-livescript.js
new file mode 100644
index 000000000..ecb5332ec
--- /dev/null
+++ b/library/ace/mode-livescript.js
@@ -0,0 +1 @@
+ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/livescript",["require","exports","module","ace/tokenizer","ace/mode/matching_brace_outdent","ace/mode/text"],function(e,t,n){function u(e,t){function n(){}return n.prototype=(e.superclass=t).prototype,(e.prototype=new n).constructor=e,typeof t.extended=="function"&&t.extended(e),e}function a(e,t){var n={}.hasOwnProperty;for(var r in t)n.call(t,r)&&(e[r]=t[r]);return e}var r,i,s,o;r="(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*",t.Mode=i=function(t){function o(){var t;this.$tokenizer=new(e("../tokenizer").Tokenizer)(o.Rules);if(t=e("../mode/matching_brace_outdent"))this.$outdent=new t.MatchingBraceOutdent;this.$id="ace/mode/livescript"}var n,i=u((a(o,t).displayName="LiveScriptMode",o),t).prototype,s=o;return n=RegExp("(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*"+r+")?))\\s*$"),i.getNextLineIndent=function(e,t,r){var i,s;return i=this.$getIndent(t),s=this.$tokenizer.getLineTokens(t,e).tokens,(!s.length||s[s.length-1].type!=="comment")&&e==="start"&&n.test(t)&&(i+=r),i},i.lineCommentStart="#",i.blockComment={start:"###",end:"###"},i.checkOutdent=function(e,t,n){var r;return(r=this.$outdent)!=null?r.checkOutdent(t,n):void 8},i.autoOutdent=function(e,t,n){var r;return(r=this.$outdent)!=null?r.autoOutdent(t,n):void 8},o}(e("../mode/text").Mode),s="(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))",o={defaultToken:"string"},i.Rules={start:[{token:"keyword",regex:"(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)"+s},{token:"constant.language",regex:"(?:true|false|yes|no|on|off|null|void|undefined)"+s},{token:"invalid.illegal",regex:"(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)"+s},{token:"language.support.class",regex:"(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)"+s},{token:"language.support.function",regex:"(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)"+s},{token:"variable.language",regex:"(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)"+s},{token:"identifier",regex:r+"\\s*:(?![:=])"},{token:"variable",regex:r},{token:"keyword.operator",regex:"(?:\\.{3}|\\s+\\?)"},{token:"keyword.variable",regex:"(?:@+|::|\\.\\.)",next:"key"},{token:"keyword.operator",regex:"\\.\\s*",next:"key"},{token:"string",regex:"\\\\\\S[^\\s,;)}\\]]*"},{token:"string.doc",regex:"'''",next:"qdoc"},{token:"string.doc",regex:'"""',next:"qqdoc"},{token:"string",regex:"'",next:"qstring"},{token:"string",regex:'"',next:"qqstring"},{token:"string",regex:"`",next:"js"},{token:"string",regex:"<\\[",next:"words"},{token:"string.regex",regex:"//",next:"heregex"},{token:"comment.doc",regex:"/\\*",next:"comment"},{token:"comment",regex:"#.*"},{token:"string.regex",regex:"\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}",next:"key"},{token:"constant.numeric",regex:"(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)"},{token:"lparen",regex:"[({[]"},{token:"rparen",regex:"[)}\\]]",next:"key"},{token:"keyword.operator",regex:"[\\^!|&%+\\-]+"},{token:"text",regex:"\\s+"}],heregex:[{token:"string.regex",regex:".*?//[gimy$?]{0,4}",next:"start"},{token:"string.regex",regex:"\\s*#{"},{token:"comment.regex",regex:"\\s+(?:#.*)?"},{defaultToken:"string.regex"}],key:[{token:"keyword.operator",regex:"[.?@!]+"},{token:"identifier",regex:r,next:"start"},{token:"text",regex:"",next:"start"}],comment:[{token:"comment.doc",regex:".*?\\*/",next:"start"},{defaultToken:"comment.doc"}],qdoc:[{token:"string",regex:".*?'''",next:"key"},o],qqdoc:[{token:"string",regex:'.*?"""',next:"key"},o],qstring:[{token:"string",regex:"[^\\\\']*(?:\\\\.[^\\\\']*)*'",next:"key"},o],qqstring:[{token:"string",regex:'[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',next:"key"},o],js:[{token:"string",regex:"[^\\\\`]*(?:\\\\.[^\\\\`]*)*`",next:"key"},o],words:[{token:"string",regex:".*?\\]>",next:"key"},o]}}) \ No newline at end of file
diff --git a/library/ace/mode-logiql.js b/library/ace/mode-logiql.js
new file mode 100644
index 000000000..7dc27f075
--- /dev/null
+++ b/library/ace/mode-logiql.js
@@ -0,0 +1 @@
+ace.define("ace/mode/logiql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.block",regex:"/\\*",push:[{token:"comment.block",regex:"\\*/",next:"pop"},{defaultToken:"comment.block"}]},{token:"comment.single",regex:"//.*"},{token:"constant.numeric",regex:"\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?[fd]?"},{token:"string",regex:'"',push:[{token:"string",regex:'"',next:"pop"},{defaultToken:"string"}]},{token:"constant.language",regex:"\\b(true|false)\\b"},{token:"entity.name.type.logicblox",regex:"`[a-zA-Z_:]+(\\d|\\a)*\\b"},{token:"keyword.start",regex:"->",comment:"Constraint"},{token:"keyword.start",regex:"-->",comment:"Level 1 Constraint"},{token:"keyword.start",regex:"<-",comment:"Rule"},{token:"keyword.start",regex:"<--",comment:"Level 1 Rule"},{token:"keyword.end",regex:"\\.",comment:"Terminator"},{token:"keyword.other",regex:"!",comment:"Negation"},{token:"keyword.other",regex:",",comment:"Conjunction"},{token:"keyword.other",regex:";",comment:"Disjunction"},{token:"keyword.operator",regex:"<=|>=|!=|<|>",comment:"Equality"},{token:"keyword.other",regex:"@",comment:"Equality"},{token:"keyword.operator",regex:"\\+|-|\\*|/",comment:"Arithmetic operations"},{token:"keyword",regex:"::",comment:"Colon colon"},{token:"support.function",regex:"\\b(agg\\s*<<)",push:[{include:"$self"},{token:"support.function",regex:">>",next:"pop"}]},{token:"storage.modifier",regex:"\\b(lang:[\\w:]*)"},{token:["storage.type","text"],regex:"(export|sealed|clauses|block|alias|alias_all)(\\s*\\()(?=`)"},{token:"entity.name",regex:"[a-zA-Z_][a-zA-Z_0-9:]*(@prev|@init|@final)?(?=(\\(|\\[))"},{token:"variable.parameter",regex:"([a-zA-Z][a-zA-Z_0-9]*|_)\\s*(?=(,|\\.|<-|->|\\)|\\]|=))"}]},this.normalizeRules()};r.inherits(s,i),t.LogiQLHighlightRules=s}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/logiql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/logiql_highlight_rules","ace/mode/folding/coffee","ace/token_iterator","ace/range","ace/mode/behaviour/cstyle","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./logiql_highlight_rules").LogiQLHighlightRules,o=e("./folding/coffee").FoldMode,u=e("../token_iterator").TokenIterator,a=e("../range").Range,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./matching_brace_outdent").MatchingBraceOutdent,c=function(){this.HighlightRules=s,this.foldingRules=new o,this.$outdent=new l,this.$behaviour=new f};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(/comment|string/.test(o))return r;if(s.length&&s[s.length-1].type=="comment.single")return r;var u=t.match();return/(-->|<--|<-|->|{)\s*$/.test(t)&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)?!0:n!=="\n"&&n!=="\r\n"?!1:/^\s+/.test(t)?!0:!1},this.autoOutdent=function(e,t,n){if(this.$outdent.autoOutdent(t,n))return;var r=t.getLine(n),i=r.match(/^\s+/),s=r.lastIndexOf(".")+1;if(!i||!n||!s)return 0;var o=t.getLine(n+1),u=this.getMatching(t,{row:n,column:s});if(!u||u.start.row==n)return 0;s=i[0].length;var f=this.$getIndent(t.getLine(u.start.row));t.replace(new a(n+1,0,n+1,s),f)},this.getMatching=function(e,t,n){t==undefined&&(t=e.selection.lead),typeof t=="object"&&(n=t.column,t=t.row);var r=e.getTokenAt(t,n),i="keyword.start",s="keyword.end",o;if(!r)return;if(r.type==i){var f=new u(e,t,n);f.step=f.stepForward}else{if(r.type!=s)return;var f=new u(e,t,n);f.step=f.stepBackward}while(o=f.step())if(o.type==i||o.type==s)break;if(!o||o.type==r.type)return;var l=f.getCurrentTokenColumn(),t=f.getCurrentTokenRow();return new a(t,l,t,l+o.value.length)},this.$id="ace/mode/logiql"}.call(c.prototype),t.Mode=c}) \ No newline at end of file
diff --git a/library/ace/mode-lsl.js b/library/ace/mode-lsl.js
new file mode 100644
index 000000000..2e7f873bc
--- /dev/null
+++ b/library/ace/mode-lsl.js
@@ -0,0 +1 @@
+ace.define("ace/mode/lsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function s(){var e=this.createKeywordMapper({"constant.language.float.lsl":"DEG_TO_RAD|PI|PI_BY_TWO|RAD_TO_DEG|SQRT2|TWO_PI","constant.language.integer.lsl":"ACTIVE|AGENT|AGENT_ALWAYS_RUN|AGENT_ATTACHMENTS|AGENT_AUTOPILOT|AGENT_AWAY|AGENT_BUSY|AGENT_BY_LEGACY_NAME|AGENT_BY_USERNAME|AGENT_CROUCHING|AGENT_FLYING|AGENT_IN_AIR|AGENT_LIST_PARCEL|AGENT_LIST_PARCEL_OWNER|AGENT_LIST_REGION|AGENT_MOUSELOOK|AGENT_ON_OBJECT|AGENT_SCRIPTED|AGENT_SITTING|AGENT_TYPING|AGENT_WALKING|ALL_SIDES|ANIM_ON|ATTACH_AVATAR_CENTER|ATTACH_BACK|ATTACH_BELLY|ATTACH_CHEST|ATTACH_CHIN|ATTACH_HEAD|ATTACH_HUD_BOTTOM|ATTACH_HUD_BOTTOM_LEFT|ATTACH_HUD_BOTTOM_RIGHT|ATTACH_HUD_CENTER_1|ATTACH_HUD_CENTER_2|ATTACH_HUD_TOP_CENTER|ATTACH_HUD_TOP_LEFT|ATTACH_HUD_TOP_RIGHT|ATTACH_LEAR|ATTACH_LEFT_PEC|ATTACH_LEYE|ATTACH_LFOOT|ATTACH_LHAND|ATTACH_LHIP|ATTACH_LLARM|ATTACH_LLLEG|ATTACH_LSHOULDER|ATTACH_LUARM|ATTACH_LULEG|ATTACH_MOUTH|ATTACH_NECK|ATTACH_NOSE|ATTACH_PELVIS|ATTACH_REAR|ATTACH_REYE|ATTACH_RFOOT|ATTACH_RHAND|ATTACH_RHIP|ATTACH_RIGHT_PEC|ATTACH_RLARM|ATTACH_RLLEG|ATTACH_RSHOULDER|ATTACH_RUARM|ATTACH_RULEG|AVOID_CHARACTERS|AVOID_DYNAMIC_OBSTACLES|AVOID_NONE|CAMERA_ACTIVE|CAMERA_BEHINDNESS_ANGLE|CAMERA_BEHINDNESS_LAG|CAMERA_DISTANCE|CAMERA_FOCUS|CAMERA_FOCUS_LAG|CAMERA_FOCUS_LOCKED|CAMERA_FOCUS_OFFSET|CAMERA_FOCUS_THRESHOLD|CAMERA_PITCH|CAMERA_POSITION|CAMERA_POSITION_LAG|CAMERA_POSITION_LOCKED|CAMERA_POSITION_THRESHOLD|CHANGED_ALLOWED_DROP|CHANGED_COLOR|CHANGED_INVENTORY|CHANGED_LINK|CHANGED_MEDIA|CHANGED_OWNER|CHANGED_REGION|CHANGED_REGION_START|CHANGED_SCALE|CHANGED_SHAPE|CHANGED_TELEPORT|CHANGED_TEXTURE|CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES|CHARACTER_AVOIDANCE_MODE|CHARACTER_CMD_JUMP|CHARACTER_CMD_SMOOTH_STOP|CHARACTER_CMD_STOP|CHARACTER_DESIRED_SPEED|CHARACTER_DESIRED_TURN_SPEED|CHARACTER_LENGTH|CHARACTER_MAX_ACCEL|CHARACTER_MAX_DECEL|CHARACTER_MAX_SPEED|CHARACTER_MAX_TURN_RADIUS|CHARACTER_ORIENTATION|CHARACTER_RADIUS|CHARACTER_STAY_WITHIN_PARCEL|CHARACTER_TYPE|CHARACTER_TYPE_A|CHARACTER_TYPE_B|CHARACTER_TYPE_C|CHARACTER_TYPE_D|CHARACTER_TYPE_NONE|CLICK_ACTION_BUY|CLICK_ACTION_NONE|CLICK_ACTION_OPEN|CLICK_ACTION_OPEN_MEDIA|CLICK_ACTION_PAY|CLICK_ACTION_PLAY|CLICK_ACTION_SIT|CLICK_ACTION_TOUCH|CONTENT_TYPE_ATOM|CONTENT_TYPE_FORM|CONTENT_TYPE_HTML|CONTENT_TYPE_JSON|CONTENT_TYPE_LLSD|CONTENT_TYPE_RSS|CONTENT_TYPE_TEXT|CONTENT_TYPE_XHTML|CONTENT_TYPE_XML|CONTROL_BACK|CONTROL_DOWN|CONTROL_FWD|CONTROL_LBUTTON|CONTROL_LEFT|CONTROL_ML_LBUTTON|CONTROL_RIGHT|CONTROL_ROT_LEFT|CONTROL_ROT_RIGHT|CONTROL_UP|DATA_BORN|DATA_NAME|DATA_ONLINE|DATA_PAYINFO|DATA_SIM_POS|DATA_SIM_RATING|DATA_SIM_STATUS|DEBUG_CHANNEL|DENSITY|ERR_GENERIC|ERR_MALFORMED_PARAMS|ERR_PARCEL_PERMISSIONS|ERR_RUNTIME_PERMISSIONS|ERR_THROTTLED|ESTATE_ACCESS_ALLOWED_AGENT_ADD|ESTATE_ACCESS_ALLOWED_AGENT_REMOVE|ESTATE_ACCESS_ALLOWED_GROUP_ADD|ESTATE_ACCESS_ALLOWED_GROUP_REMOVE|ESTATE_ACCESS_BANNED_AGENT_ADD|ESTATE_ACCESS_BANNED_AGENT_REMOVE|FALSE|FORCE_DIRECT_PATH|FRICTION|GCNP_RADIUS|GCNP_STATIC|GRAVITY_MULTIPLIER|HORIZONTAL|HTTP_BODY_MAXLENGTH|HTTP_BODY_TRUNCATED|HTTP_CUSTOM_HEADER|HTTP_METHOD|HTTP_MIMETYPE|HTTP_PRAGMA_NO_CACHE|HTTP_VERBOSE_THROTTLE|HTTP_VERIFY_CERT|INVENTORY_ALL|INVENTORY_ANIMATION|INVENTORY_BODYPART|INVENTORY_CLOTHING|INVENTORY_GESTURE|INVENTORY_LANDMARK|INVENTORY_NONE|INVENTORY_NOTECARD|INVENTORY_OBJECT|INVENTORY_SCRIPT|INVENTORY_SOUND|INVENTORY_TEXTURE|JSON_APPEND|KFM_CMD_PAUSE|KFM_CMD_PLAY|KFM_CMD_SET_MODE|KFM_CMD_STOP|KFM_COMMAND|KFM_DATA|KFM_FORWARD|KFM_LOOP|KFM_MODE|KFM_PING_PONG|KFM_REVERSE|KFM_ROTATION|KFM_TRANSLATION|LAND_LEVEL|LAND_LOWER|LAND_NOISE|LAND_RAISE|LAND_REVERT|LAND_SMOOTH|LINK_ALL_CHILDREN|LINK_ALL_OTHERS|LINK_ROOT|LINK_SET|LINK_THIS|LIST_STAT_GEOMETRIC_MEAN|LIST_STAT_MAX|LIST_STAT_MEAN|LIST_STAT_MEDIAN|LIST_STAT_MIN|LIST_STAT_NUM_COUNT|LIST_STAT_RANGE|LIST_STAT_STD_DEV|LIST_STAT_SUM|LIST_STAT_SUM_SQUARES|LOOP|MASK_BASE|MASK_EVERYONE|MASK_GROUP|MASK_NEXT|MASK_OWNER|OBJECT_ATTACHED_POINT|OBJECT_BODY_SHAPE_TYPE|OBJECT_CHARACTER_TIME|OBJECT_CLICK_ACTION|OBJECT_CREATOR|OBJECT_DESC|OBJECT_GROUP|OBJECT_HOVER_HEIGHT|OBJECT_LAST_OWNER_ID|OBJECT_NAME|OBJECT_OWNER|OBJECT_PATHFINDING_TYPE|OBJECT_PHANTOM|OBJECT_PHYSICS|OBJECT_PHYSICS_COST|OBJECT_POS|OBJECT_PRIM_EQUIVALENCE|OBJECT_RENDER_WEIGHT|OBJECT_RETURN_PARCEL|OBJECT_RETURN_PARCEL_OWNER|OBJECT_RETURN_REGION|OBJECT_ROOT|OBJECT_ROT|OBJECT_RUNNING_SCRIPT_COUNT|OBJECT_SCRIPT_MEMORY|OBJECT_SCRIPT_TIME|OBJECT_SERVER_COST|OBJECT_STREAMING_COST|OBJECT_TEMP_ON_REZ|OBJECT_TOTAL_SCRIPT_COUNT|OBJECT_UNKNOWN_DETAIL|OBJECT_VELOCITY|OPT_AVATAR|OPT_CHARACTER|OPT_EXCLUSION_VOLUME|OPT_LEGACY_LINKSET|OPT_MATERIAL_VOLUME|OPT_OTHER|OPT_STATIC_OBSTACLE|OPT_WALKABLE|PARCEL_COUNT_GROUP|PARCEL_COUNT_OTHER|PARCEL_COUNT_OWNER|PARCEL_COUNT_SELECTED|PARCEL_COUNT_TEMP|PARCEL_COUNT_TOTAL|PARCEL_DETAILS_AREA|PARCEL_DETAILS_DESC|PARCEL_DETAILS_GROUP|PARCEL_DETAILS_ID|PARCEL_DETAILS_NAME|PARCEL_DETAILS_OWNER|PARCEL_DETAILS_SEE_AVATARS|PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS|PARCEL_FLAG_ALLOW_CREATE_OBJECTS|PARCEL_FLAG_ALLOW_DAMAGE|PARCEL_FLAG_ALLOW_FLY|PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_GROUP_SCRIPTS|PARCEL_FLAG_ALLOW_LANDMARK|PARCEL_FLAG_ALLOW_SCRIPTS|PARCEL_FLAG_ALLOW_TERRAFORM|PARCEL_FLAG_LOCAL_SOUND_ONLY|PARCEL_FLAG_RESTRICT_PUSHOBJECT|PARCEL_FLAG_USE_ACCESS_GROUP|PARCEL_FLAG_USE_ACCESS_LIST|PARCEL_FLAG_USE_BAN_LIST|PARCEL_FLAG_USE_LAND_PASS_LIST|PARCEL_MEDIA_COMMAND_AGENT|PARCEL_MEDIA_COMMAND_AUTO_ALIGN|PARCEL_MEDIA_COMMAND_DESC|PARCEL_MEDIA_COMMAND_LOOP|PARCEL_MEDIA_COMMAND_LOOP_SET|PARCEL_MEDIA_COMMAND_PAUSE|PARCEL_MEDIA_COMMAND_PLAY|PARCEL_MEDIA_COMMAND_SIZE|PARCEL_MEDIA_COMMAND_STOP|PARCEL_MEDIA_COMMAND_TEXTURE|PARCEL_MEDIA_COMMAND_TIME|PARCEL_MEDIA_COMMAND_TYPE|PARCEL_MEDIA_COMMAND_UNLOAD|PARCEL_MEDIA_COMMAND_URL|PASS_ALWAYS|PASS_IF_NOT_HANDLED|PASS_NEVER|PASSIVE|PATROL_PAUSE_AT_WAYPOINTS|PAYMENT_INFO_ON_FILE|PAYMENT_INFO_USED|PAY_DEFAULT|PAY_HIDE|PERMISSION_ATTACH|PERMISSION_CHANGE_LINKS|PERMISSION_CONTROL_CAMERA|PERMISSION_DEBIT|PERMISSION_OVERRIDE_ANIMATIONS|PERMISSION_RETURN_OBJECTS|PERMISSION_SILENT_ESTATE_MANAGEMENT|PERMISSION_TAKE_CONTROLS|PERMISSION_TELEPORT|PERMISSION_TRACK_CAMERA|PERMISSION_TRIGGER_ANIMATION|PERM_ALL|PERM_COPY|PERM_MODIFY|PERM_MOVE|PERM_TRANSFER|PING_PONG|PRIM_ALPHA_MODE|PRIM_ALPHA_MODE_BLEND|PRIM_ALPHA_MODE_EMISSIVE|PRIM_ALPHA_MODE_MASK|PRIM_ALPHA_MODE_NONE|PRIM_BUMP_BARK|PRIM_BUMP_BLOBS|PRIM_BUMP_BRICKS|PRIM_BUMP_BRIGHT|PRIM_BUMP_CHECKER|PRIM_BUMP_CONCRETE|PRIM_BUMP_DARK|PRIM_BUMP_DISKS|PRIM_BUMP_GRAVEL|PRIM_BUMP_LARGETILE|PRIM_BUMP_NONE|PRIM_BUMP_SHINY|PRIM_BUMP_SIDING|PRIM_BUMP_STONE|PRIM_BUMP_STUCCO|PRIM_BUMP_SUCTION|PRIM_BUMP_TILE|PRIM_BUMP_WEAVE|PRIM_BUMP_WOOD|PRIM_COLOR|PRIM_DESC|PRIM_FLEXIBLE|PRIM_FULLBRIGHT|PRIM_GLOW|PRIM_HOLE_CIRCLE|PRIM_HOLE_DEFAULT|PRIM_HOLE_SQUARE|PRIM_HOLE_TRIANGLE|PRIM_LINK_TARGET|PRIM_MATERIAL|PRIM_MATERIAL_FLESH|PRIM_MATERIAL_GLASS|PRIM_MATERIAL_METAL|PRIM_MATERIAL_PLASTIC|PRIM_MATERIAL_RUBBER|PRIM_MATERIAL_STONE|PRIM_MATERIAL_WOOD|PRIM_MEDIA_ALT_IMAGE_ENABLE|PRIM_MEDIA_AUTO_LOOP|PRIM_MEDIA_AUTO_PLAY|PRIM_MEDIA_AUTO_SCALE|PRIM_MEDIA_AUTO_ZOOM|PRIM_MEDIA_CONTROLS|PRIM_MEDIA_CONTROLS_MINI|PRIM_MEDIA_CONTROLS_STANDARD|PRIM_MEDIA_CURRENT_URL|PRIM_MEDIA_FIRST_CLICK_INTERACT|PRIM_MEDIA_HEIGHT_PIXELS|PRIM_MEDIA_HOME_URL|PRIM_MEDIA_MAX_HEIGHT_PIXELS|PRIM_MEDIA_MAX_URL_LENGTH|PRIM_MEDIA_MAX_WHITELIST_COUNT|PRIM_MEDIA_MAX_WHITELIST_SIZE|PRIM_MEDIA_MAX_WIDTH_PIXELS|PRIM_MEDIA_PARAM_MAX|PRIM_MEDIA_PERMS_CONTROL|PRIM_MEDIA_PERMS_INTERACT|PRIM_MEDIA_PERM_ANYONE|PRIM_MEDIA_PERM_GROUP|PRIM_MEDIA_PERM_NONE|PRIM_MEDIA_PERM_OWNER|PRIM_MEDIA_WHITELIST|PRIM_MEDIA_WHITELIST_ENABLE|PRIM_MEDIA_WIDTH_PIXELS|PRIM_NAME|PRIM_NORMAL|PRIM_OMEGA|PRIM_PHANTOM|PRIM_PHYSICS|PRIM_PHYSICS_SHAPE_CONVEX|PRIM_PHYSICS_SHAPE_NONE|PRIM_PHYSICS_SHAPE_PRIM|PRIM_PHYSICS_SHAPE_TYPE|PRIM_POINT_LIGHT|PRIM_POSITION|PRIM_POS_LOCAL|PRIM_ROTATION|PRIM_ROT_LOCAL|PRIM_SCULPT_FLAG_INVERT|PRIM_SCULPT_FLAG_MIRROR|PRIM_SCULPT_TYPE_CYLINDER|PRIM_SCULPT_TYPE_MASK|PRIM_SCULPT_TYPE_PLANE|PRIM_SCULPT_TYPE_SPHERE|PRIM_SCULPT_TYPE_TORUS|PRIM_SHINY_HIGH|PRIM_SHINY_LOW|PRIM_SHINY_MEDIUM|PRIM_SHINY_NONE|PRIM_SIZE|PRIM_SLICE|PRIM_SPECULAR|PRIM_TEMP_ON_REZ|PRIM_TEXGEN|PRIM_TEXGEN_DEFAULT|PRIM_TEXGEN_PLANAR|PRIM_TEXT|PRIM_TEXTURE|PRIM_TYPE|PRIM_TYPE_BOX|PRIM_TYPE_CYLINDER|PRIM_TYPE_PRISM|PRIM_TYPE_RING|PRIM_TYPE_SCULPT|PRIM_TYPE_SPHERE|PRIM_TYPE_TORUS|PRIM_TYPE_TUBE|PROFILE_NONE|PROFILE_SCRIPT_MEMORY|PSYS_PART_BF_DEST_COLOR|PSYS_PART_BF_ONE|PSYS_PART_BF_ONE_MINUS_DEST_COLOR|PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA|PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR|PSYS_PART_BF_SOURCE_ALPHA|PSYS_PART_BF_SOURCE_COLOR|PSYS_PART_BF_ZERO|PSYS_PART_BLEND_FUNC_DEST|PSYS_PART_BLEND_FUNC_SOURCE|PSYS_PART_BOUNCE_MASK|PSYS_PART_EMISSIVE_MASK|PSYS_PART_END_ALPHA|PSYS_PART_END_COLOR|PSYS_PART_END_GLOW|PSYS_PART_END_SCALE|PSYS_PART_FLAGS|PSYS_PART_FOLLOW_SRC_MASK|PSYS_PART_FOLLOW_VELOCITY_MASK|PSYS_PART_INTERP_COLOR_MASK|PSYS_PART_INTERP_SCALE_MASK|PSYS_PART_MAX_AGE|PSYS_PART_RIBBON_MASK|PSYS_PART_START_ALPHA|PSYS_PART_START_COLOR|PSYS_PART_START_GLOW|PSYS_PART_START_SCALE|PSYS_PART_TARGET_LINEAR_MASK|PSYS_PART_TARGET_POS_MASK|PSYS_PART_WIND_MASK|PSYS_SRC_ACCEL|PSYS_SRC_ANGLE_BEGIN|PSYS_SRC_ANGLE_END|PSYS_SRC_BURST_PART_COUNT|PSYS_SRC_BURST_RADIUS|PSYS_SRC_BURST_RATE|PSYS_SRC_BURST_SPEED_MAX|PSYS_SRC_BURST_SPEED_MIN|PSYS_SRC_MAX_AGE|PSYS_SRC_OMEGA|PSYS_SRC_PATTERN|PSYS_SRC_PATTERN_ANGLE|PSYS_SRC_PATTERN_ANGLE_CONE|PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY|PSYS_SRC_PATTERN_DROP|PSYS_SRC_PATTERN_EXPLODE|PSYS_SRC_TARGET_KEY|PSYS_SRC_TEXTURE|PUBLIC_CHANNEL|PURSUIT_FUZZ_FACTOR|PURSUIT_GOAL_TOLERANCE|PURSUIT_INTERCEPT|PURSUIT_OFFSET|PU_EVADE_HIDDEN|PU_EVADE_SPOTTED|PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED|PU_FAILURE_INVALID_GOAL|PU_FAILURE_INVALID_START|PU_FAILURE_NO_NAVMESH|PU_FAILURE_NO_VALID_DESTINATION|PU_FAILURE_OTHER|PU_FAILURE_PARCEL_UNREACHABLE|PU_FAILURE_TARGET_GONE|PU_FAILURE_UNREACHABLE|PU_GOAL_REACHED|PU_SLOWDOWN_DISTANCE_REACHED|RCERR_CAST_TIME_EXCEEDED|RCERR_SIM_PERF_LOW|RCERR_UNKNOWN|RC_DATA_FLAGS|RC_DETECT_PHANTOM|RC_GET_LINK_NUM|RC_GET_NORMAL|RC_GET_ROOT_KEY|RC_MAX_HITS|RC_REJECT_AGENTS|RC_REJECT_LAND|RC_REJECT_NONPHYSICAL|RC_REJECT_PHYSICAL|RC_REJECT_TYPES|REGION_FLAG_ALLOW_DAMAGE|REGION_FLAG_ALLOW_DIRECT_TELEPORT|REGION_FLAG_BLOCK_FLY|REGION_FLAG_BLOCK_TERRAFORM|REGION_FLAG_DISABLE_COLLISIONS|REGION_FLAG_DISABLE_PHYSICS|REGION_FLAG_FIXED_SUN|REGION_FLAG_RESTRICT_PUSHOBJECT|REGION_FLAG_SANDBOX|REMOTE_DATA_CHANNEL|REMOTE_DATA_REPLY|REMOTE_DATA_REQUEST|REQUIRE_LINE_OF_SIGHT|RESTITUTION|REVERSE|ROTATE|SCALE|SCRIPTED|SIM_STAT_PCT_CHARS_STEPPED|SMOOTH|STATUS_BLOCK_GRAB|STATUS_BLOCK_GRAB_OBJECT|STATUS_BOUNDS_ERROR|STATUS_CAST_SHADOWS|STATUS_DIE_AT_EDGE|STATUS_INTERNAL_ERROR|STATUS_MALFORMED_PARAMS|STATUS_NOT_FOUND|STATUS_NOT_SUPPORTED|STATUS_OK|STATUS_PHANTOM|STATUS_PHYSICS|STATUS_RETURN_AT_EDGE|STATUS_ROTATE_X|STATUS_ROTATE_Y|STATUS_ROTATE_Z|STATUS_SANDBOX|STATUS_TYPE_MISMATCH|STATUS_WHITELIST_FAILED|STRING_TRIM|STRING_TRIM_HEAD|STRING_TRIM_TAIL|TOUCH_INVALID_FACE|TRAVERSAL_TYPE|TRAVERSAL_TYPE_FAST|TRAVERSAL_TYPE_NONE|TRAVERSAL_TYPE_SLOW|TRUE|TYPE_FLOAT|TYPE_INTEGER|TYPE_INVALID|TYPE_KEY|TYPE_ROTATION|TYPE_STRING|TYPE_VECTOR|VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY|VEHICLE_ANGULAR_DEFLECTION_TIMESCALE|VEHICLE_ANGULAR_FRICTION_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DIRECTION|VEHICLE_ANGULAR_MOTOR_TIMESCALE|VEHICLE_BANKING_EFFICIENCY|VEHICLE_BANKING_MIX|VEHICLE_BANKING_TIMESCALE|VEHICLE_BUOYANCY|VEHICLE_FLAG_CAMERA_DECOUPLED|VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT|VEHICLE_FLAG_HOVER_TERRAIN_ONLY|VEHICLE_FLAG_HOVER_UP_ONLY|VEHICLE_FLAG_HOVER_WATER_ONLY|VEHICLE_FLAG_LIMIT_MOTOR_UP|VEHICLE_FLAG_LIMIT_ROLL_ONLY|VEHICLE_FLAG_MOUSELOOK_BANK|VEHICLE_FLAG_MOUSELOOK_STEER|VEHICLE_FLAG_NO_DEFLECTION_UP|VEHICLE_HOVER_EFFICIENCY|VEHICLE_HOVER_HEIGHT|VEHICLE_HOVER_TIMESCALE|VEHICLE_LINEAR_DEFLECTION_EFFICIENCY|VEHICLE_LINEAR_DEFLECTION_TIMESCALE|VEHICLE_LINEAR_FRICTION_TIMESCALE|VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE|VEHICLE_LINEAR_MOTOR_DIRECTION|VEHICLE_LINEAR_MOTOR_OFFSET|VEHICLE_LINEAR_MOTOR_TIMESCALE|VEHICLE_REFERENCE_FRAME|VEHICLE_TYPE_AIRPLANE|VEHICLE_TYPE_BALLOON|VEHICLE_TYPE_BOAT|VEHICLE_TYPE_CAR|VEHICLE_TYPE_NONE|VEHICLE_TYPE_SLED|VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY|VEHICLE_VERTICAL_ATTRACTION_TIMESCALE|VERTICAL|WANDER_PAUSE_AT_WAYPOINTS|XP_ERROR_EXPERIENCES_DISABLED|XP_ERROR_EXPERIENCE_DISABLED|XP_ERROR_EXPERIENCE_SUSPENDED|XP_ERROR_INVALID_EXPERIENCE|XP_ERROR_INVALID_PARAMETERS|XP_ERROR_KEY_NOT_FOUND|XP_ERROR_MATURITY_EXCEEDED|XP_ERROR_NONE|XP_ERROR_NOT_FOUND|XP_ERROR_NOT_PERMITTED|XP_ERROR_NO_EXPERIENCE|XP_ERROR_QUOTA_EXCEEDED|XP_ERROR_RETRY_UPDATE|XP_ERROR_STORAGE_EXCEPTION|XP_ERROR_STORE_DISABLED|XP_ERROR_THROTTLED|XP_ERROR_UNKNOWN_ERROR","constant.language.integer.boolean.lsl":"FALSE|TRUE","constant.language.quaternion.lsl":"ZERO_ROTATION","constant.language.string.lsl":"EOF|JSON_ARRAY|JSON_DELETE|JSON_FALSE|JSON_INVALID|JSON_NULL|JSON_NUMBER|JSON_OBJECT|JSON_STRING|JSON_TRUE|NULL_KEY|TEXTURE_BLANK|TEXTURE_DEFAULT|TEXTURE_MEDIA|TEXTURE_PLYWOOD|TEXTURE_TRANSPARENT|URL_REQUEST_DENIED|URL_REQUEST_GRANTED","constant.language.vector.lsl":"TOUCH_INVALID_TEXCOORD|TOUCH_INVALID_VECTOR|ZERO_VECTOR","invalid.broken.lsl":"LAND_LARGE_BRUSH|LAND_MEDIUM_BRUSH|LAND_SMALL_BRUSH","invalid.deprecated.lsl":"ATTACH_LPEC|ATTACH_RPEC|DATA_RATING|OBJECT_ATTACHMENT_GEOMETRY_BYTES|OBJECT_ATTACHMENT_SURFACE_AREA|PRIM_CAST_SHADOWS|PRIM_MATERIAL_LIGHT|PRIM_TYPE_LEGACY|PSYS_SRC_INNERANGLE|PSYS_SRC_OUTERANGLE|VEHICLE_FLAG_NO_FLY_UP|llClearExperiencePermissions|llCloud|llGetExperienceList|llMakeExplosion|llMakeFire|llMakeFountain|llMakeSmoke|llRemoteDataSetRegion|llSound|llSoundPreload|llXorBase64Strings|llXorBase64StringsCorrect","invalid.illegal.lsl":"event","invalid.unimplemented.lsl":"CHARACTER_MAX_ANGULAR_ACCEL|CHARACTER_MAX_ANGULAR_SPEED|CHARACTER_TURN_SPEED_MULTIPLIER|PERMISSION_CHANGE_JOINTS|PERMISSION_CHANGE_PERMISSIONS|PERMISSION_EXPERIENCE|PERMISSION_RELEASE_OWNERSHIP|PERMISSION_REMAP_CONTROLS|PRIM_PHYSICS_MATERIAL|PSYS_SRC_OBJ_REL_MASK|llCollisionSprite|llPointAt|llRefreshPrimURL|llReleaseCamera|llRemoteLoadScript|llSetPrimURL|llStopPointAt|llTakeCamera","reserved.godmode.lsl":"llGodLikeRezObject|llSetInventoryPermMask|llSetObjectPermMask","reserved.log.lsl":"print","keyword.control.lsl":"do|else|for|if|jump|return|while","storage.type.lsl":"float|integer|key|list|quaternion|rotation|string|vector","support.function.lsl":"llAbs|llAcos|llAddToLandBanList|llAddToLandPassList|llAdjustSoundVolume|llAgentInExperience|llAllowInventoryDrop|llAngleBetween|llApplyImpulse|llApplyRotationalImpulse|llAsin|llAtan2|llAttachToAvatar|llAttachToAvatarTemp|llAvatarOnLinkSitTarget|llAvatarOnSitTarget|llAxes2Rot|llAxisAngle2Rot|llBase64ToInteger|llBase64ToString|llBreakAllLinks|llBreakLink|llCSV2List|llCastRay|llCeil|llClearCameraParams|llClearLinkMedia|llClearPrimMedia|llCloseRemoteDataChannel|llCollisionFilter|llCollisionSound|llCos|llCreateCharacter|llCreateKeyValue|llCreateLink|llDataSizeKeyValue|llDeleteCharacter|llDeleteKeyValue|llDeleteSubList|llDeleteSubString|llDetachFromAvatar|llDetectedGrab|llDetectedGroup|llDetectedKey|llDetectedLinkNumber|llDetectedName|llDetectedOwner|llDetectedPos|llDetectedRot|llDetectedTouchBinormal|llDetectedTouchFace|llDetectedTouchNormal|llDetectedTouchPos|llDetectedTouchST|llDetectedTouchUV|llDetectedType|llDetectedVel|llDialog|llDie|llDumpList2String|llEdgeOfWorld|llEjectFromLand|llEmail|llEscapeURL|llEuler2Rot|llEvade|llExecCharacterCmd|llFabs|llFleeFrom|llFloor|llForceMouselook|llFrand|llGenerateKey|llGetAccel|llGetAgentInfo|llGetAgentLanguage|llGetAgentList|llGetAgentSize|llGetAlpha|llGetAndResetTime|llGetAnimation|llGetAnimationList|llGetAnimationOverride|llGetAttached|llGetAttachedList|llGetBoundingBox|llGetCameraPos|llGetCameraRot|llGetCenterOfMass|llGetClosestNavPoint|llGetColor|llGetCreator|llGetDate|llGetDisplayName|llGetEnergy|llGetEnv|llGetExperienceDetails|llGetExperienceErrorMessage|llGetForce|llGetFreeMemory|llGetFreeURLs|llGetGMTclock|llGetGeometricCenter|llGetHTTPHeader|llGetInventoryCreator|llGetInventoryKey|llGetInventoryName|llGetInventoryNumber|llGetInventoryPermMask|llGetInventoryType|llGetKey|llGetLandOwnerAt|llGetLinkKey|llGetLinkMedia|llGetLinkName|llGetLinkNumber|llGetLinkNumberOfSides|llGetLinkPrimitiveParams|llGetListEntryType|llGetListLength|llGetLocalPos|llGetLocalRot|llGetMass|llGetMassMKS|llGetMaxScaleFactor|llGetMemoryLimit|llGetMinScaleFactor|llGetNextEmail|llGetNotecardLine|llGetNumberOfNotecardLines|llGetNumberOfPrims|llGetNumberOfSides|llGetObjectDesc|llGetObjectDetails|llGetObjectMass|llGetObjectName|llGetObjectPermMask|llGetObjectPrimCount|llGetOmega|llGetOwner|llGetOwnerKey|llGetParcelDetails|llGetParcelFlags|llGetParcelMaxPrims|llGetParcelMusicURL|llGetParcelPrimCount|llGetParcelPrimOwners|llGetPermissions|llGetPermissionsKey|llGetPhysicsMaterial|llGetPos|llGetPrimMediaParams|llGetPrimitiveParams|llGetRegionAgentCount|llGetRegionCorner|llGetRegionFPS|llGetRegionFlags|llGetRegionName|llGetRegionTimeDilation|llGetRootPosition|llGetRootRotation|llGetRot|llGetSPMaxMemory|llGetScale|llGetScriptName|llGetScriptState|llGetSimStats|llGetSimulatorHostname|llGetStartParameter|llGetStaticPath|llGetStatus|llGetSubString|llGetSunDirection|llGetTexture|llGetTextureOffset|llGetTextureRot|llGetTextureScale|llGetTime|llGetTimeOfDay|llGetTimestamp|llGetTorque|llGetUnixTime|llGetUsedMemory|llGetUsername|llGetVel|llGetWallclock|llGiveInventory|llGiveInventoryList|llGiveMoney|llGround|llGroundContour|llGroundNormal|llGroundRepel|llGroundSlope|llHTTPRequest|llHTTPResponse|llInsertString|llInstantMessage|llIntegerToBase64|llJson2List|llJsonGetValue|llJsonSetValue|llJsonValueType|llKey2Name|llKeyCountKeyValue|llKeysKeyValue|llLinkParticleSystem|llLinkSitTarget|llList2CSV|llList2Float|llList2Integer|llList2Json|llList2Key|llList2List|llList2ListStrided|llList2Rot|llList2String|llList2Vector|llListFindList|llListInsertList|llListRandomize|llListReplaceList|llListSort|llListStatistics|llListen|llListenControl|llListenRemove|llLoadURL|llLog|llLog10|llLookAt|llLoopSound|llLoopSoundMaster|llLoopSoundSlave|llMD5String|llManageEstateAccess|llMapDestination|llMessageLinked|llMinEventDelay|llModPow|llModifyLand|llMoveToTarget|llNavigateTo|llOffsetTexture|llOpenRemoteDataChannel|llOverMyLand|llOwnerSay|llParcelMediaCommandList|llParcelMediaQuery|llParseString2List|llParseStringKeepNulls|llParticleSystem|llPassCollisions|llPassTouches|llPatrolPoints|llPlaySound|llPlaySoundSlave|llPow|llPreloadSound|llPursue|llPushObject|llReadKeyValue|llRegionSay|llRegionSayTo|llReleaseControls|llReleaseURL|llRemoteDataReply|llRemoteLoadScriptPin|llRemoveFromLandBanList|llRemoveFromLandPassList|llRemoveInventory|llRemoveVehicleFlags|llRequestAgentData|llRequestDisplayName|llRequestExperiencePermissions|llRequestInventoryData|llRequestPermissions|llRequestSecureURL|llRequestSimulatorData|llRequestURL|llRequestUsername|llResetAnimationOverride|llResetLandBanList|llResetLandPassList|llResetOtherScript|llResetScript|llResetTime|llReturnObjectsByID|llReturnObjectsByOwner|llRezAtRoot|llRezObject|llRot2Angle|llRot2Axis|llRot2Euler|llRot2Fwd|llRot2Left|llRot2Up|llRotBetween|llRotLookAt|llRotTarget|llRotTargetRemove|llRotateTexture|llRound|llSHA1String|llSameGroup|llSay|llScaleByFactor|llScaleTexture|llScriptDanger|llScriptProfiler|llSendRemoteData|llSensor|llSensorRemove|llSensorRepeat|llSetAlpha|llSetAngularVelocity|llSetAnimationOverride|llSetBuoyancy|llSetCameraAtOffset|llSetCameraEyeOffset|llSetCameraParams|llSetClickAction|llSetColor|llSetContentType|llSetDamage|llSetForce|llSetForceAndTorque|llSetHoverHeight|llSetKeyframedMotion|llSetLinkAlpha|llSetLinkCamera|llSetLinkColor|llSetLinkMedia|llSetLinkPrimitiveParams|llSetLinkPrimitiveParamsFast|llSetLinkTexture|llSetLinkTextureAnim|llSetLocalRot|llSetMemoryLimit|llSetObjectDesc|llSetObjectName|llSetParcelMusicURL|llSetPayPrice|llSetPhysicsMaterial|llSetPos|llSetPrimMediaParams|llSetPrimitiveParams|llSetRegionPos|llSetRemoteScriptAccessPin|llSetRot|llSetScale|llSetScriptState|llSetSitText|llSetSoundQueueing|llSetSoundRadius|llSetStatus|llSetText|llSetTexture|llSetTextureAnim|llSetTimerEvent|llSetTorque|llSetTouchText|llSetVehicleFlags|llSetVehicleFloatParam|llSetVehicleRotationParam|llSetVehicleType|llSetVehicleVectorParam|llSetVelocity|llShout|llSin|llSitTarget|llSleep|llSqrt|llStartAnimation|llStopAnimation|llStopHover|llStopLookAt|llStopMoveToTarget|llStopSound|llStringLength|llStringToBase64|llStringTrim|llSubStringIndex|llTakeControls|llTan|llTarget|llTargetOmega|llTargetRemove|llTeleportAgent|llTeleportAgentGlobalCoords|llTeleportAgentHome|llTextBox|llToLower|llToUpper|llTransferLindenDollars|llTriggerSound|llTriggerSoundLimited|llUnSit|llUnescapeURL|llUpdateCharacter|llUpdateKeyValue|llVecDist|llVecMag|llVecNorm|llVolumeDetect|llWanderWithin|llWater|llWhisper|llWind|llXorBase64","support.function.event.lsl":"at_rot_target|at_target|attach|changed|collision|collision_end|collision_start|control|dataserver|email|experience_permissions|experience_permissions_denied|http_request|http_response|land_collision|land_collision_end|land_collision_start|link_message|listen|money|moving_end|moving_start|no_sensor|not_at_rot_target|not_at_target|object_rez|on_rez|path_update|remote_data|run_time_permissions|sensor|state_entry|state_exit|timer|touch|touch_end|touch_start|transaction_result"},"identifier");this.$rules={start:[{token:"comment.line.double-slash.lsl",regex:"\\/\\/.*$"},{token:"comment.block.begin.lsl",regex:"\\/\\*",next:"comment"},{token:"string.quoted.double.lsl",start:'"',end:'"',next:[{token:"constant.character.escape.lsl",regex:/\\[tn"\\]/}]},{token:"constant.numeric.lsl",regex:"(0[xX][0-9a-fA-F]+|[+-]?[0-9]+(?:(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?)?)\\b"},{token:"entity.name.state.lsl",regex:"\\b((state)\\s+[A-Za-z_]\\w*|default)\\b"},{token:e,regex:"\\b[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"support.function.user-defined.lsl",regex:/\b([a-zA-Z_]\w*)(?=\(.*?\))/},{token:"keyword.operator.lsl",regex:"\\+\\+|\\-\\-|<<|>>|&&?|\\|\\|?|\\^|~|[!%<>=*+\\-\\/]=?"},{token:"invalid.illegal.keyword.operator.lsl",regex:":=?"},{token:"punctuation.operator.lsl",regex:"\\,|\\;"},{token:"paren.lparen.lsl",regex:"[\\[\\(\\{]"},{token:"paren.rparen.lsl",regex:"[\\]\\)\\}]"},{token:"text.lsl",regex:"\\s+"}],comment:[{token:"comment.block.end.lsl",regex:"\\*\\/",next:"start"},{defaultToken:"comment.block.lsl"}]},this.normalizeRules()}var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules;r.inherits(s,i),t.LSLHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/lsl",["require","exports","module","ace/mode/lsl_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/text","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./lsl_highlight_rules").LSLHighlightRules,i=e("./matching_brace_outdent").MatchingBraceOutdent,s=e("../range").Range,o=e("./text").Mode,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=e("../lib/oop"),l=function(){this.HighlightRules=r,this.$outdent=new i,this.$behaviour=new u,this.foldingRules=new a};f.inherits(l,o),function(){this.lineCommentStart=["//"],this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type==="comment.block.lsl")return r;if(e==="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/lsl"}.call(l.prototype),t.Mode=l}) \ No newline at end of file
diff --git a/library/ace/mode-lua.js b/library/ace/mode-lua.js
new file mode 100644
index 000000000..48f36ac74
--- /dev/null
+++ b/library/ace/mode-lua.js
@@ -0,0 +1 @@
+ace.define("ace/mode/lua_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="break|do|else|elseif|end|for|function|if|in|local|repeat|return|then|until|while|or|and|not",t="true|false|nil|_G|_VERSION",n="string|xpcall|package|tostring|print|os|unpack|require|getfenv|setmetatable|next|assert|tonumber|io|rawequal|collectgarbage|getmetatable|module|rawset|math|debug|pcall|table|newproxy|type|coroutine|_G|select|gcinfo|pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|load|error|loadfile|sub|upper|len|gfind|rep|find|match|char|dump|gmatch|reverse|byte|format|gsub|lower|preload|loadlib|loaded|loaders|cpath|config|path|seeall|exit|setlocale|date|getenv|difftime|remove|time|clock|tmpname|rename|execute|lines|write|close|flush|open|output|type|read|stderr|stdin|input|stdout|popen|tmpfile|log|max|acos|huge|ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|gethook|setmetatable|setlocal|traceback|setfenv|getinfo|setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|foreachi|maxn|foreach|concat|sort|remove|resume|yield|status|wrap|create|running|__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber",r="string|package|os|io|math|debug|table|coroutine",i="setn|foreach|foreachi|gcinfo|log10|maxn",s=this.createKeywordMapper({keyword:e,"support.function":n,"keyword.deprecated":i,"constant.library":r,"constant.language":t,"variable.language":"self"},"identifier"),o="(?:(?:[1-9]\\d*)|(?:0))",u="(?:0[xX][\\dA-Fa-f]+)",a="(?:"+o+"|"+u+")",f="(?:\\.\\d+)",l="(?:\\d+)",c="(?:(?:"+l+"?"+f+")|(?:"+l+"\\.))",h="(?:"+c+")";this.$rules={start:[{stateName:"bracketedComment",onMatch:function(e,t,n){return n.unshift(this.next,e.length-2,t),"comment"},regex:/\-\-\[=*\[/,next:[{onMatch:function(e,t,n){return e.length==n[1]?(n.shift(),n.shift(),this.next=n.shift()):this.next="","comment"},regex:/\]=*\]/,next:"start"},{defaultToken:"comment"}]},{token:"comment",regex:"\\-\\-.*$"},{stateName:"bracketedString",onMatch:function(e,t,n){return n.unshift(this.next,e.length,t),"comment"},regex:/\[=*\[/,next:[{onMatch:function(e,t,n){return e.length==n[1]?(n.shift(),n.shift(),this.next=n.shift()):this.next="","comment"},regex:/\]=*\]/,next:"start"},{defaultToken:"comment"}]},{token:"string",regex:'"(?:[^\\\\]|\\\\.)*?"'},{token:"string",regex:"'(?:[^\\\\]|\\\\.)*?'"},{token:"constant.numeric",regex:h},{token:"constant.numeric",regex:a+"\\b"},{token:s,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\."},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+|\\w+"}]},this.normalizeRules()};r.inherits(s,i),t.LuaHighlightRules=s}),ace.define("ace/mode/folding/lua",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.foldingStartMarker=/\b(function|then|do|repeat)\b|{\s*$|(\[=*\[)/,this.foldingStopMarker=/\bend\b|^\s*}|\]=*\]/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=this.foldingStartMarker.test(r),s=this.foldingStopMarker.test(r);if(i&&!s){var o=r.match(this.foldingStartMarker);if(o[1]=="then"&&/\belseif\b/.test(r))return;if(o[1]){if(e.getTokenAt(n,o.index+1).type==="keyword")return"start"}else{if(!o[2])return"start";var u=e.bgTokenizer.getState(n)||"";if(u[0]=="bracketedComment"||u[0]=="bracketedString")return"start"}}if(t!="markbeginend"||!s||i&&s)return"";var o=r.match(this.foldingStopMarker);if(o[0]==="end"){if(e.getTokenAt(n,o.index+1).type==="keyword")return"end"}else{if(o[0][0]!=="]")return"end";var u=e.bgTokenizer.getState(n-1)||"";if(u[0]=="bracketedComment"||u[0]=="bracketedString")return"end"}},this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getLine(n),i=this.foldingStartMarker.exec(r);if(i)return i[1]?this.luaBlock(e,n,i.index+1):i[2]?e.getCommentFoldRange(n,i.index+1):this.openingBracketBlock(e,"{",n,i.index);var i=this.foldingStopMarker.exec(r);if(i)return i[0]==="end"&&e.getTokenAt(n,i.index+1).type==="keyword"?this.luaBlock(e,n,i.index+1):i[0][0]==="]"?e.getCommentFoldRange(n,i.index+1):this.closingBracketBlock(e,"}",n,i.index+i[0].length)},this.luaBlock=function(e,t,n){var r=new o(e,t,n),i={"function":1,"do":1,then:1,elseif:-1,end:-1,repeat:1,until:-1},u=r.getCurrentToken();if(!u||u.type!="keyword")return;var a=u.value,f=[a],l=i[a];if(!l)return;var c=l===-1?r.getCurrentTokenColumn():e.getLine(t).length,h=t;r.step=l===-1?r.stepBackward:r.stepForward;while(u=r.step()){if(u.type!=="keyword")continue;var p=l*i[u.value];if(p>0)f.unshift(u.value);else if(p<=0){f.shift();if(!f.length&&u.value!="elseif")break;p===0&&f.unshift(u.value)}}var t=r.getCurrentTokenRow();return l===-1?new s(t,e.getLine(t).length,h,c):new s(h,c,t,r.getCurrentTokenColumn())}}.call(u.prototype)}),ace.define("ace/mode/lua",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lua_highlight_rules","ace/mode/folding/lua","ace/range","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./lua_highlight_rules").LuaHighlightRules,o=e("./folding/lua").FoldMode,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(f,i),function(){function n(t){var n=0;for(var r=0;r<t.length;r++){var i=t[r];i.type=="keyword"?i.value in e&&(n+=e[i.value]):i.type=="paren.lparen"?n+=i.value.length:i.type=="paren.rparen"&&(n-=i.value.length)}return n<0?-1:n>0?1:0}this.lineCommentStart="--",this.blockComment={start:"--[",end:"]--"};var e={"function":1,then:1,"do":1,"else":1,elseif:1,repeat:1,end:-1,until:-1},t=["else","elseif","end","until"];this.getNextLineIndent=function(e,t,r){var i=this.$getIndent(t),s=0,o=this.getTokenizer().getLineTokens(t,e),u=o.tokens;return e=="start"&&(s=n(u)),s>0?i+r:s<0&&i.substr(i.length-r.length)==r&&!this.checkOutdent(e,t,"\n")?i.substr(0,i.length-r.length):i},this.checkOutdent=function(e,n,r){if(r!="\n"&&r!="\r"&&r!="\r\n")return!1;if(n.match(/^\s*[\)\}\]]$/))return!0;var i=this.getTokenizer().getLineTokens(n.trim(),e).tokens;return!i||!i.length?!1:i[0].type=="keyword"&&t.indexOf(i[0].value)!=-1},this.autoOutdent=function(e,t,r){var i=t.getLine(r-1),s=this.$getIndent(i).length,o=this.getTokenizer().getLineTokens(i,"start").tokens,a=t.getTabString().length,f=s+a*n(o),l=this.$getIndent(t.getLine(r)).length;if(l<f)return;t.outdentRows(new u(r,0,r+2,0))},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/lua_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/lua"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-luapage.js b/library/ace/mode-luapage.js
new file mode 100644
index 000000000..26b915bc3
--- /dev/null
+++ b/library/ace/mode-luapage.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[A-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/lua_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="break|do|else|elseif|end|for|function|if|in|local|repeat|return|then|until|while|or|and|not",t="true|false|nil|_G|_VERSION",n="string|xpcall|package|tostring|print|os|unpack|require|getfenv|setmetatable|next|assert|tonumber|io|rawequal|collectgarbage|getmetatable|module|rawset|math|debug|pcall|table|newproxy|type|coroutine|_G|select|gcinfo|pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|load|error|loadfile|sub|upper|len|gfind|rep|find|match|char|dump|gmatch|reverse|byte|format|gsub|lower|preload|loadlib|loaded|loaders|cpath|config|path|seeall|exit|setlocale|date|getenv|difftime|remove|time|clock|tmpname|rename|execute|lines|write|close|flush|open|output|type|read|stderr|stdin|input|stdout|popen|tmpfile|log|max|acos|huge|ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|gethook|setmetatable|setlocal|traceback|setfenv|getinfo|setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|foreachi|maxn|foreach|concat|sort|remove|resume|yield|status|wrap|create|running|__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber",r="string|package|os|io|math|debug|table|coroutine",i="setn|foreach|foreachi|gcinfo|log10|maxn",s=this.createKeywordMapper({keyword:e,"support.function":n,"keyword.deprecated":i,"constant.library":r,"constant.language":t,"variable.language":"self"},"identifier"),o="(?:(?:[1-9]\\d*)|(?:0))",u="(?:0[xX][\\dA-Fa-f]+)",a="(?:"+o+"|"+u+")",f="(?:\\.\\d+)",l="(?:\\d+)",c="(?:(?:"+l+"?"+f+")|(?:"+l+"\\.))",h="(?:"+c+")";this.$rules={start:[{stateName:"bracketedComment",onMatch:function(e,t,n){return n.unshift(this.next,e.length-2,t),"comment"},regex:/\-\-\[=*\[/,next:[{onMatch:function(e,t,n){return e.length==n[1]?(n.shift(),n.shift(),this.next=n.shift()):this.next="","comment"},regex:/\]=*\]/,next:"start"},{defaultToken:"comment"}]},{token:"comment",regex:"\\-\\-.*$"},{stateName:"bracketedString",onMatch:function(e,t,n){return n.unshift(this.next,e.length,t),"comment"},regex:/\[=*\[/,next:[{onMatch:function(e,t,n){return e.length==n[1]?(n.shift(),n.shift(),this.next=n.shift()):this.next="","comment"},regex:/\]=*\]/,next:"start"},{defaultToken:"comment"}]},{token:"string",regex:'"(?:[^\\\\]|\\\\.)*?"'},{token:"string",regex:"'(?:[^\\\\]|\\\\.)*?'"},{token:"constant.numeric",regex:h},{token:"constant.numeric",regex:a+"\\b"},{token:s,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\."},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+|\\w+"}]},this.normalizeRules()};r.inherits(s,i),t.LuaHighlightRules=s}),ace.define("ace/mode/folding/lua",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.foldingStartMarker=/\b(function|then|do|repeat)\b|{\s*$|(\[=*\[)/,this.foldingStopMarker=/\bend\b|^\s*}|\]=*\]/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=this.foldingStartMarker.test(r),s=this.foldingStopMarker.test(r);if(i&&!s){var o=r.match(this.foldingStartMarker);if(o[1]=="then"&&/\belseif\b/.test(r))return;if(o[1]){if(e.getTokenAt(n,o.index+1).type==="keyword")return"start"}else{if(!o[2])return"start";var u=e.bgTokenizer.getState(n)||"";if(u[0]=="bracketedComment"||u[0]=="bracketedString")return"start"}}if(t!="markbeginend"||!s||i&&s)return"";var o=r.match(this.foldingStopMarker);if(o[0]==="end"){if(e.getTokenAt(n,o.index+1).type==="keyword")return"end"}else{if(o[0][0]!=="]")return"end";var u=e.bgTokenizer.getState(n-1)||"";if(u[0]=="bracketedComment"||u[0]=="bracketedString")return"end"}},this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getLine(n),i=this.foldingStartMarker.exec(r);if(i)return i[1]?this.luaBlock(e,n,i.index+1):i[2]?e.getCommentFoldRange(n,i.index+1):this.openingBracketBlock(e,"{",n,i.index);var i=this.foldingStopMarker.exec(r);if(i)return i[0]==="end"&&e.getTokenAt(n,i.index+1).type==="keyword"?this.luaBlock(e,n,i.index+1):i[0][0]==="]"?e.getCommentFoldRange(n,i.index+1):this.closingBracketBlock(e,"}",n,i.index+i[0].length)},this.luaBlock=function(e,t,n){var r=new o(e,t,n),i={"function":1,"do":1,then:1,elseif:-1,end:-1,repeat:1,until:-1},u=r.getCurrentToken();if(!u||u.type!="keyword")return;var a=u.value,f=[a],l=i[a];if(!l)return;var c=l===-1?r.getCurrentTokenColumn():e.getLine(t).length,h=t;r.step=l===-1?r.stepBackward:r.stepForward;while(u=r.step()){if(u.type!=="keyword")continue;var p=l*i[u.value];if(p>0)f.unshift(u.value);else if(p<=0){f.shift();if(!f.length&&u.value!="elseif")break;p===0&&f.unshift(u.value)}}var t=r.getCurrentTokenRow();return l===-1?new s(t,e.getLine(t).length,h,c):new s(h,c,t,r.getCurrentTokenColumn())}}.call(u.prototype)}),ace.define("ace/mode/lua",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lua_highlight_rules","ace/mode/folding/lua","ace/range","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./lua_highlight_rules").LuaHighlightRules,o=e("./folding/lua").FoldMode,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(f,i),function(){function n(t){var n=0;for(var r=0;r<t.length;r++){var i=t[r];i.type=="keyword"?i.value in e&&(n+=e[i.value]):i.type=="paren.lparen"?n+=i.value.length:i.type=="paren.rparen"&&(n-=i.value.length)}return n<0?-1:n>0?1:0}this.lineCommentStart="--",this.blockComment={start:"--[",end:"]--"};var e={"function":1,then:1,"do":1,"else":1,elseif:1,repeat:1,end:-1,until:-1},t=["else","elseif","end","until"];this.getNextLineIndent=function(e,t,r){var i=this.$getIndent(t),s=0,o=this.getTokenizer().getLineTokens(t,e),u=o.tokens;return e=="start"&&(s=n(u)),s>0?i+r:s<0&&i.substr(i.length-r.length)==r&&!this.checkOutdent(e,t,"\n")?i.substr(0,i.length-r.length):i},this.checkOutdent=function(e,n,r){if(r!="\n"&&r!="\r"&&r!="\r\n")return!1;if(n.match(/^\s*[\)\}\]]$/))return!0;var i=this.getTokenizer().getLineTokens(n.trim(),e).tokens;return!i||!i.length?!1:i[0].type=="keyword"&&t.indexOf(i[0].value)!=-1},this.autoOutdent=function(e,t,r){var i=t.getLine(r-1),s=this.$getIndent(i).length,o=this.getTokenizer().getLineTokens(i,"start").tokens,a=t.getTabString().length,f=s+a*n(o),l=this.$getIndent(t.getLine(r)).length;if(l<f)return;t.outdentRows(new u(r,0,r+2,0))},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/lua_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/lua"}.call(f.prototype),t.Mode=f}),ace.define("ace/mode/luapage_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/lua_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./lua_highlight_rules").LuaHighlightRules,o=function(){i.call(this);var e=[{token:"keyword",regex:"<\\%\\=?",push:"lua-start"},{token:"keyword",regex:"<\\?lua\\=?",push:"lua-start"}],t=[{token:"keyword",regex:"\\%>",next:"pop"},{token:"keyword",regex:"\\?>",next:"pop"}];this.embedRules(s,"lua-",t,["start"]);for(var n in this.$rules)this.$rules[n].unshift.apply(this.$rules[n],e);this.normalizeRules()};r.inherits(o,i),t.LuaPageHighlightRules=o}),ace.define("ace/mode/luapage",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/lua","ace/mode/luapage_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./lua").Mode,o=e("./luapage_highlight_rules").LuaPageHighlightRules,u=function(){i.call(this),this.HighlightRules=o,this.createModeDelegates({"lua-":s})};r.inherits(u,i),function(){this.$id="ace/mode/luapage"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-lucene.js b/library/ace/mode-lucene.js
new file mode 100644
index 000000000..6b482d3c5
--- /dev/null
+++ b/library/ace/mode-lucene.js
@@ -0,0 +1 @@
+ace.define("ace/mode/lucene_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){this.$rules={start:[{token:"constant.character.negation",regex:"[\\-]"},{token:"constant.character.interro",regex:"[\\?]"},{token:"constant.character.asterisk",regex:"[\\*]"},{token:"constant.character.proximity",regex:"~[0-9]+\\b"},{token:"keyword.operator",regex:"(?:AND|OR|NOT)\\b"},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"keyword",regex:"[\\S]+:"},{token:"string",regex:'".*?"'},{token:"text",regex:"\\s+"}]}};r.inherits(o,s),t.LuceneHighlightRules=o}),ace.define("ace/mode/lucene",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lucene_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./lucene_highlight_rules").LuceneHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.$id="ace/mode/lucene"}.call(o.prototype),t.Mode=o}) \ No newline at end of file
diff --git a/library/ace/mode-makefile.js b/library/ace/mode-makefile.js
new file mode 100644
index 000000000..52dabfec8
--- /dev/null
+++ b/library/ace/mode-makefile.js
@@ -0,0 +1 @@
+ace.define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.reservedKeywords="!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set|function|declare|readonly",o=t.languageConstructs="[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",u=function(){var e=this.createKeywordMapper({keyword:s,"support.function.builtin":o,"invalid.deprecated":"debugger"},"identifier"),t="(?:(?:[1-9]\\d*)|(?:0))",n="(?:\\.\\d+)",r="(?:\\d+)",i="(?:(?:"+r+"?"+n+")|(?:"+r+"\\.))",u="(?:(?:"+i+"|"+r+")"+")",a="(?:"+u+"|"+i+")",f="(?:&"+r+")",l="[a-zA-Z_][a-zA-Z0-9_]*",c="(?:"+l+"=)",h="(?:\\$(?:SHLVL|\\$|\\!|\\?))",p="(?:"+l+"\\s*\\(\\))";this.$rules={start:[{token:"constant",regex:/\\./},{token:["text","comment"],regex:/(^|\s)(#.*)$/},{token:"string",regex:'"',push:[{token:"constant.language.escape",regex:/\\(?:[$`"\\]|$)/},{include:"variables"},{token:"keyword.operator",regex:/`/},{token:"string",regex:'"',next:"pop"},{defaultToken:"string"}]},{token:"string",regex:"\\$'",push:[{token:"constant.language.escape",regex:/\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/},{token:"string",regex:"'",next:"pop"},{defaultToken:"string"}]},{regex:"<<<",token:"keyword.operator"},{stateName:"heredoc",regex:"(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[4]),[{type:"constant",value:i[1]},{type:"text",value:i[2]},{type:"string",value:i[3]},{type:"support.class",value:i[4]},{type:"string",value:i[5]}]},rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:["keyword","text","text","text","variable"],regex:/(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/},{token:"variable.language",regex:h},{token:"variable",regex:c},{include:"variables"},{token:"support.function",regex:p},{token:"support.function",regex:f},{token:"string",start:"'",end:"'"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:t+"\\b"},{token:e,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"},{token:"punctuation.operator",regex:";"},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]]"},{token:"paren.rparen",regex:"[\\)\\}]",next:"pop"}],variables:[{token:"variable",regex:/(\$)(\w+)/},{token:["variable","paren.lparen"],regex:/(\$)(\()/,push:"start"},{token:["variable","paren.lparen","keyword.operator","variable","keyword.operator"],regex:/(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,push:"start"},{token:"variable",regex:/\$[*@#?\-$!0_]/},{token:["variable","paren.lparen"],regex:/(\$)(\{)/,push:"start"}]},this.normalizeRules()};r.inherits(u,i),t.ShHighlightRules=u}),ace.define("ace/mode/makefile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/sh_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./sh_highlight_rules"),o=function(){var e=this.createKeywordMapper({keyword:s.reservedKeywords,"support.function.builtin":s.languageConstructs,"invalid.deprecated":"debugger"},"string");this.$rules={start:[{token:"string.interpolated.backtick.makefile",regex:"`",next:"shell-start"},{token:"punctuation.definition.comment.makefile",regex:/#(?=.)/,next:"comment"},{token:["keyword.control.makefile"],regex:"^(?:\\s*\\b)(\\-??include|ifeq|ifneq|ifdef|ifndef|else|endif|vpath|export|unexport|define|endef|override)(?:\\b)"},{token:["entity.name.function.makefile","text"],regex:"^([^\\t ]+(?:\\s[^\\t ]+)*:)(\\s*.*)"}],comment:[{token:"punctuation.definition.comment.makefile",regex:/.+\\/},{token:"punctuation.definition.comment.makefile",regex:".+",next:"start"}],"shell-start":[{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"string",regex:"\\w+"},{token:"string.interpolated.backtick.makefile",regex:"`",next:"start"}]}};r.inherits(o,i),t.MakefileHighlightRules=o}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/makefile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/makefile_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./makefile_highlight_rules").MakefileHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="#",this.$indentWithTabs=!0,this.$id="ace/mode/makefile"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-markdown.js b/library/ace/mode-markdown.js
new file mode 100644
index 000000000..6d120cc30
--- /dev/null
+++ b/library/ace/mode-markdown.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./xml_highlight_rules").XmlHighlightRules,u=e("./behaviour/xml").XmlBehaviour,a=e("./folding/xml").FoldMode,f=e("../worker/worker_client").WorkerClient,l=function(){this.HighlightRules=o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(l,s),function(){this.voidElements=i.arrayToMap([]),this.blockComment={start:"<!--",end:"-->"},this.createWorker=function(e){var t=new f(["ace"],"ace/mode/xml_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/xml"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[A-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules","ace/mode/html_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";function c(e,t){return{token:"support.function",regex:"^\\s*```"+e+"\\s*$",push:t+"start"}}var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./css_highlight_rules").CssHighlightRules,l=function(e){return"(?:[^"+i.escapeRegExp(e)+"\\\\]|\\\\.)*"},h=function(){a.call(this),this.$rules.start.unshift({token:"empty_line",regex:"^$",next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(e){return"markup.heading."+e.length},regex:/^#{1,6}(?=\s*[^ #]|\s+#.)/,next:"header"},c("(?:javascript|js)","jscode-"),c("xml","xmlcode-"),c("html","htmlcode-"),c("css","csscode-"),{token:"support.function",regex:"^\\s*```\\s*\\S*(?:{.*?\\})?\\s*$",next:"githubblock"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"}),this.addRules({basic:[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:'^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'},{token:["text","string","text","constant","text"],regex:"(\\[)("+l("]")+")(\\]s*\\[)("+l("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\[)("+l("]")+")(\\]\\()"+'((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)'+'(\\s*"'+l('"')+'"\\s*)?'+"(\\))"},{token:"string.strong",regex:"([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"},{token:"string.emphasis",regex:"([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"},{token:["text","url","text"],regex:"(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"}],allowBlock:[{token:"support.function",regex:"^ {4}.+",next:"allowBlock"},{token:"empty_line",regex:"^$",next:"allowBlock"},{token:"empty",regex:"",next:"start"}],header:[{regex:"$",next:"start"},{include:"basic"},{defaultToken:"heading"}],"listblock-start":[{token:"support.variable",regex:/(?:\[[ x]\])?/,next:"listblock"}],listblock:[{token:"empty_line",regex:"^$",next:"start"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic",noEscape:!0},{token:"support.function",regex:"^\\s*```\\s*[a-zA-Z]*(?:{.*?\\})?\\s*$",next:"githubblock"},{defaultToken:"list"}],blockquote:[{token:"empty_line",regex:"^\\s*$",next:"start"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{include:"basic",noEscape:!0},{defaultToken:"string.blockquote"}],githubblock:[{token:"support.function",regex:"^\\s*```",next:"start"},{token:"support.function",regex:".+"}]}),this.embedRules(o,"jscode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(a,"htmlcode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(f,"csscode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(u,"xmlcode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.normalizeRules()};r.inherits(h,s),t.MarkdownHighlightRules=h}),ace.define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.foldingStartMarker=/^(?:[=-]+\s*$|#{1,6} |`{3})/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?r[0]=="`"?e.bgTokenizer.getState(n)=="start"?"end":"start":"start":""},this.getFoldWidgetRange=function(e,t,n){function l(t){return f=e.getTokens(t)[0],f&&f.type.lastIndexOf(c,0)===0}function h(){var e=f.value[0];return e=="="?6:e=="-"?5:7-f.value.search(/[^#]/)}var r=e.getLine(n),i=r.length,o=e.getLength(),u=n,a=n;if(!r.match(this.foldingStartMarker))return;if(r[0]=="`"){if(e.bgTokenizer.getState(n)!=="start"){while(++n<o){r=e.getLine(n);if(r[0]=="`"&r.substring(0,3)=="```")break}return new s(u,i,n,0)}while(n-->0){r=e.getLine(n);if(r[0]=="`"&r.substring(0,3)=="```")break}return new s(n,r.length,u,0)}var f,c="markup.heading";if(l(n)){var p=h();while(++n<o){if(!l(n))continue;var d=h();if(d>=p)break}a=n-(!f||["=","-"].indexOf(f.value[0])==-1?1:2);if(a>u)while(a>u&&/^\s*$/.test(e.getLine(a)))a--;if(a>u){var v=e.getLine(a).length;return new s(u,i,a,v)}}}}.call(o.prototype)}),ace.define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript","ace/mode/xml","ace/mode/html","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript").Mode,o=e("./xml").Mode,u=e("./html").Mode,a=e("./markdown_highlight_rules").MarkdownHighlightRules,f=e("./folding/markdown").FoldMode,l=function(){this.HighlightRules=a,this.createModeDelegates({"js-":s,"xml-":o,"html-":u}),this.foldingRules=new f};r.inherits(l,i),function(){this.type="text",this.blockComment={start:"<!--",end:"-->"},this.getNextLineIndent=function(e,t,n){if(e=="listblock"){var r=/^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(t);if(!r)return"";var i=r[2];return i||(i=parseInt(r[3],10)+1+"."),r[1]+i+r[4]}return this.$getIndent(t)},this.$id="ace/mode/markdown"}.call(l.prototype),t.Mode=l}) \ No newline at end of file
diff --git a/library/ace/mode-mask.js b/library/ace/mode-mask.js
new file mode 100644
index 000000000..d82e5173f
--- /dev/null
+++ b/library/ace/mode-mask.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules","ace/mode/html_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";function c(e,t){return{token:"support.function",regex:"^\\s*```"+e+"\\s*$",push:t+"start"}}var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./css_highlight_rules").CssHighlightRules,l=function(e){return"(?:[^"+i.escapeRegExp(e)+"\\\\]|\\\\.)*"},h=function(){a.call(this),this.$rules.start.unshift({token:"empty_line",regex:"^$",next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(e){return"markup.heading."+e.length},regex:/^#{1,6}(?=\s*[^ #]|\s+#.)/,next:"header"},c("(?:javascript|js)","jscode-"),c("xml","xmlcode-"),c("html","htmlcode-"),c("css","csscode-"),{token:"support.function",regex:"^\\s*```\\s*\\S*(?:{.*?\\})?\\s*$",next:"githubblock"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"}),this.addRules({basic:[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:'^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'},{token:["text","string","text","constant","text"],regex:"(\\[)("+l("]")+")(\\]s*\\[)("+l("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\[)("+l("]")+")(\\]\\()"+'((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)'+'(\\s*"'+l('"')+'"\\s*)?'+"(\\))"},{token:"string.strong",regex:"([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"},{token:"string.emphasis",regex:"([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"},{token:["text","url","text"],regex:"(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"}],allowBlock:[{token:"support.function",regex:"^ {4}.+",next:"allowBlock"},{token:"empty_line",regex:"^$",next:"allowBlock"},{token:"empty",regex:"",next:"start"}],header:[{regex:"$",next:"start"},{include:"basic"},{defaultToken:"heading"}],"listblock-start":[{token:"support.variable",regex:/(?:\[[ x]\])?/,next:"listblock"}],listblock:[{token:"empty_line",regex:"^$",next:"start"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic",noEscape:!0},{token:"support.function",regex:"^\\s*```\\s*[a-zA-Z]*(?:{.*?\\})?\\s*$",next:"githubblock"},{defaultToken:"list"}],blockquote:[{token:"empty_line",regex:"^\\s*$",next:"start"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{include:"basic",noEscape:!0},{defaultToken:"string.blockquote"}],githubblock:[{token:"support.function",regex:"^\\s*```",next:"start"},{token:"support.function",regex:".+"}]}),this.embedRules(o,"jscode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(a,"htmlcode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(f,"csscode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(u,"xmlcode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.normalizeRules()};r.inherits(h,s),t.MarkdownHighlightRules=h}),ace.define("ace/mode/mask_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/css_highlight_rules","ace/mode/markdown_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";function N(){function t(e,t,n){var r="js-"+e+"-",i=e==="block"?["start"]:["start","no_regex"];s(o,r,t,i,n)}function n(){s(u,"css-block-",/\}/)}function r(){s(a,"md-multiline-",/("""|''')/,[])}function i(){s(f,"html-multiline-",/("""|''')/)}function s(t,n,r,i,s){var o="pop",u=i||["start"];u.length===0&&(u=null),/block|multiline/.test(n)&&(o=n+"end",e.$rules[o]=[k("empty","","start")]),e.embedRules(t,n,[k(s||w,r,o)],u,u==null?!0:!1)}this.$rules={start:[k("comment","\\/\\/.*$"),k("comment","\\/\\*",[k("comment",".*?\\*\\/","start"),k("comment",".+")]),C.string("'''"),C.string('"""'),C.string('"'),C.string("'"),C.syntax(/(markdown|md)\b/,"md-multiline","multiline"),C.syntax(/html\b/,"html-multiline","multiline"),C.syntax(/(slot|event)\b/,"js-block","block"),C.syntax(/style\b/,"css-block","block"),C.syntax(/var\b/,"js-statement","attr"),C.tag(),k(b,"[[({>]"),k(w,"[\\])};]","start"),{caseInsensitive:!0}]};var e=this;t("interpolation",/\]/,w+"."+g),t("statement",/\)|}|;/),t("block",/\}/),n(),r(),i(),this.normalizeRules()}function k(e,t,n){var r,i,s;return arguments.length===4?(r=n,i=arguments[3]):typeof n=="string"?i=n:r=n,typeof e=="function"&&(s=e,e="empty"),{token:e,regex:t,push:r,next:i,onMatch:s}}t.MaskHighlightRules=N;var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./css_highlight_rules").CssHighlightRules,a=e("./markdown_highlight_rules").MarkdownHighlightRules,f=e("./html_highlight_rules").HtmlHighlightRules,l="keyword.support.constant.language",c="support.function.markup.bold",h="keyword",p="constant.language",d="keyword.control.markup.italic",v="support.variable.class",m="keyword.operator",g="markup.italic",y="markup.bold",b="paren.lparen",w="paren.rparen",E,S,x,T;(function(){E=i.arrayToMap("log".split("|")),x=i.arrayToMap(":dualbind|:bind|:import|slot|event|style|html|markdown|md".split("|")),S=i.arrayToMap("debugger|define|var|if|each|for|of|else|switch|case|with|visible|+if|+each|+for|+switch|+with|+visible|include|import".split("|")),T=i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|"))})(),r.inherits(N,s);var C={string:function(e,t){var n=k("string.start",e,[k(b+"."+g,/~\[/,C.interpolation()),k("string.end",e,"pop"),{defaultToken:"string"}],t);if(e.length===1){var r=k("string.escape","\\\\"+e);n.push.unshift(r)}return n},interpolation:function(){return[k(d,/\s*\w*\s*:/),"js-interpolation-start"]},tagHead:function(e){return k(v,e,[k(v,/[\w\-_]+/),k(b+"."+g,/~\[/,C.interpolation()),C.goUp()])},tag:function(){return{token:"tag",onMatch:function(e){return void 0!==S[e]?h:void 0!==x[e]?p:void 0!==E[e]?"support.function":void 0!==T[e.toLowerCase()]?l:c},regex:/([@\w\-_:+]+)|((^|\s)(?=\s*(\.|#)))/,push:[C.tagHead(/\./),C.tagHead(/\#/),C.expression(),C.attribute(),k(b,/[;>{]/,"pop")]}},syntax:function(e,t,n){return{token:p,regex:e,push:{attr:[t+"-start",k(m,/;/,"start")],multiline:[C.tagHead(/\./),C.tagHead(/\#/),C.attribute(),C.expression(),k(b,/[>\{]/),k(m,/;/,"start"),k(b,/'''|"""/,[t+"-start"])],block:[C.tagHead(/\./),C.tagHead(/\#/),C.attribute(),C.expression(),k(b,/\{/,[t+"-start"])]}[n]}},attribute:function(){return k(function(e){return/^x\-/.test(e)?v+"."+y:v},/[\w_-]+/,[k(m,/\s*=\s*/,[C.string('"'),C.string("'"),C.word(),C.goUp()]),C.goUp()])},expression:function(){return k(b,/\(/,["js-statement-start"])},word:function(){return k("string",/[\w-_]+/)},goUp:function(){return k("text","","pop")},goStart:function(){return k("text","","start")}}}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/mask",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mask_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./mask_highlight_rules").MaskHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/css").CssBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/mask"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-matlab.js b/library/ace/mode-matlab.js
new file mode 100644
index 000000000..5e27ac50f
--- /dev/null
+++ b/library/ace/mode-matlab.js
@@ -0,0 +1 @@
+ace.define("ace/mode/matlab_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while",t="true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout",n="abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan(?:2|d|h)?|audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|bessel(?:h|i|j|k|y)|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:3|c|f|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|event|MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|ylabel|ylim|zeros|zip|zlabel|zlim|zoom|addedvarplot|andrewsplot|anova(?:1|2|n)|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|cholcov|Classification(?:BaggedEnsemble|Discriminant(?:.(?:fit|make|template))?|Ensemble|KNN(?:.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:.fit)?|geo(?:cdf|inv|mean|pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|LinearModel(?:.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:.fit)?|nan(?:cov|max|mean|median|min|std|sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|regstats|relieff|ridge|robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztestadapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb|bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog",r="cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse",i=this.createKeywordMapper({"storage.type":r,"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"string",regex:"'",stateName:"qstring",next:[{token:"constant.language.escape",regex:"''"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}]},{token:"text",regex:"\\s+"},{regex:"",next:"noQstring"}],noQstring:[{regex:"^\\s*%{\\s*$",token:"comment.start",push:"blockComment"},{token:"comment",regex:"%[^\r\n]*"},{token:"string",regex:'"',stateName:"qqstring",next:[{token:"constant.language.escape",regex:/\\./},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=",next:"start"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\.",next:"start"},{token:"paren.lparen",regex:"[({\\[]",next:"start"},{token:"paren.rparen",regex:"[\\]})]"},{token:"text",regex:"\\s+"},{token:"text",regex:"$",next:"start"}],blockComment:[{regex:"^\\s*%{\\s*$",token:"comment.start",push:"blockComment"},{regex:"^\\s*%}\\s*$",token:"comment.end",next:"pop"},{defaultToken:"comment"}]},this.normalizeRules()};r.inherits(s,i),t.MatlabHighlightRules=s}),ace.define("ace/mode/matlab",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/matlab_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./matlab_highlight_rules").MatlabHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="%",this.blockComment={start:"%{",end:"%}"},this.$id="ace/mode/matlab"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-maze.js b/library/ace/mode-maze.js
new file mode 100644
index 000000000..0fc03e70c
--- /dev/null
+++ b/library/ace/mode-maze.js
@@ -0,0 +1 @@
+ace.define("ace/mode/maze_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"keyword.control",regex:/##|``/,comment:"Wall"},{token:"entity.name.tag",regex:/\.\./,comment:"Path"},{token:"keyword.control",regex:/<>/,comment:"Splitter"},{token:"entity.name.tag",regex:/\*[\*A-Za-z0-9]/,comment:"Signal"},{token:"constant.numeric",regex:/[0-9]{2}/,comment:"Pause"},{token:"keyword.control",regex:/\^\^/,comment:"Start"},{token:"keyword.control",regex:/\(\)/,comment:"Hole"},{token:"support.function",regex:/>>/,comment:"Out"},{token:"support.function",regex:/>\//,comment:"Ln Out"},{token:"support.function",regex:/<</,comment:"In"},{token:"keyword.control",regex:/--/,comment:"One use"},{token:"constant.language",regex:/%[LRUDNlrudn]/,comment:"Direction"},{token:["entity.name.function","keyword.other","keyword.operator","keyword.other","keyword.operator","constant.numeric","keyword.operator","keyword.other","keyword.operator","constant.numeric","string.quoted.double","string.quoted.single"],regex:/([A-Za-z][A-Za-z0-9])( *-> *)(?:([-+*\/]=)( *)((?:-)?)([0-9]+)|(=)( *)(?:((?:-)?)([0-9]+)|("[^"]*")|('[^']*')))/,comment:"Assignment function"},{token:["entity.name.function","keyword.other","keyword.control","keyword.other","keyword.operator","keyword.other","keyword.operator","constant.numeric","entity.name.tag","keyword.other","keyword.control","keyword.other","constant.language","keyword.other","keyword.control","keyword.other","constant.language"],regex:/([A-Za-z][A-Za-z0-9])( *-> *)(IF|if)( *)(?:([<>]=?|==)( *)((?:-)?)([0-9]+)|(\*[\*A-Za-z0-9]))( *)(THEN|then)( *)(%[LRUDNlrudn])(?:( *)(ELSE|else)( *)(%[LRUDNlrudn]))?/,comment:"Equality Function"},{token:"entity.name.function",regex:/[A-Za-z][A-Za-z0-9]/,comment:"Function cell"},{token:"comment.line.double-slash",regex:/ *\/\/.*/,comment:"Comment"}]},this.normalizeRules()};s.metaData={fileTypes:["mz"],name:"Maze",scopeName:"source.maze"},r.inherits(s,i),t.MazeHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/maze",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/maze_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./maze_highlight_rules").MazeHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.$id="ace/mode/maze"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-mel.js b/library/ace/mode-mel.js
new file mode 100644
index 000000000..9d3033fc2
--- /dev/null
+++ b/library/ace/mode-mel.js
@@ -0,0 +1 @@
+ace.define("ace/mode/mel_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{caseInsensitive:!0,token:"storage.type.mel",regex:"\\b(matrix|string|vector|float|int|void)\\b"},{caseInsensitive:!0,token:"support.function.mel",regex:"\\b((s(h(ow(ManipCtx|S(hadingGroupAttrEditor|electionInTitle)|H(idden|elp)|Window)|el(f(Button|TabLayout|Layout)|lField)|ading(GeometryRelCtx|Node|Connection|LightRelCtx))|y(s(tem|File)|mbol(Button|CheckBox))|nap(shot|Mode|2to2 |TogetherCtx|Key)|c(ulpt|ene(UIReplacement|Editor)|ale(BrushBrightness |Constraint|Key(Ctx)?)?|r(ipt(Node|Ctx|Table|edPanel(Type)?|Job|EditorInfo)|oll(Field|Layout))|mh)|t(itch(Surface(Points)?|AndExplodeShell )|a(ckTrace|rt(sWith |String ))|r(cmp|i(ng(ToStringArray |Array(Remove(Duplicates | )|C(ount |atenate )|ToString |Intersector))|p )|oke))|i(n(gleProfileBirailSurface)?|ze|gn|mplify)|o(u(nd(Control)?|rce)|ft(Mod(Ctx)?)?|rt)|u(perCtx|rface(S(haderList|ampler))?|b(st(itute(Geometry|AllString )?|ring)|d(M(irror|a(tchTopology|p(SewMove|Cut)))|iv(Crease|DisplaySmoothness)?|C(ollapse|leanTopology)|T(o(Blind|Poly)|ransferUVsToCache)|DuplicateAndConnect|EditUV|ListComponentConversion|AutoProjection)))|p(h(ere|rand)|otLight(PreviewPort)?|aceLocator|r(ing|eadSheetEditor))|e(t(s|MenuMode|Sta(te |rtupMessage|mpDensity )|NodeTypeFlag|ConstraintRestPosition |ToolTo|In(putDeviceMapping|finity)|D(ynamic|efaultShadingGroup|rivenKeyframe)|UITemplate|P(ar(ticleAttr|ent)|roject )|E(scapeCtx|dit(or|Ctx))|Key(Ctx|frame|Path)|F(ocus|luidAttr)|Attr(Mapping)?)|parator|ed|l(ect(Mode|ionConnection|Context|Type|edNodes|Pr(iority|ef)|Key(Ctx)?)?|LoadSettings)|archPathArray )|kin(Cluster|Percent)|q(uareSurface|rt)|w(itchTable|atchDisplayPort)|a(ve(Menu|Shelf|ToolSettings|I(nitialState|mage)|Pref(s|Objects)|Fluid|A(ttrPreset |llShelves))|mpleImage)|rtContext|mooth(step|Curve|TangentSurface))|h(sv_to_rgb|yp(ot|er(Graph|Shade|Panel))|i(tTest|de|lite)|ot(Box|key(Check)?)|ud(Button|Slider(Button)?)|e(lp(Line)?|adsUpDisplay|rmite)|wRe(nder(Load)?|flectionMap)|ard(enPointCurve|ware(RenderPanel)?))|n(o(nLinear|ise|de(Type|IconButton|Outliner|Preset)|rmal(ize |Constraint))|urbs(Boolean|S(elect|quare)|C(opyUVSet|ube)|To(Subdiv|Poly(gonsPref)?)|Plane|ViewDirectionVector )|ew(ton|PanelItems)|ame(space(Info)?|Command|Field))|c(h(oice|dir|eck(Box(Grp)?|DefaultRenderGlobals)|a(n(nelBox|geSubdiv(Region|ComponentDisplayLevel))|racter(Map|OutlineEditor)?))|y(cleCheck|linder)|tx(Completion|Traverse|EditMode|Abort)|irc(ularFillet|le)|o(s|n(str(uctionHistory|ain(Value)?)|nect(ionInfo|Control|Dynamic|Joint|Attr)|t(extInfo|rol)|dition|e|vert(SolidTx|Tessellation|Unit|FromOldLayers |Lightmap)|firmDialog)|py(SkinWeights|Key|Flexor|Array )|l(or(Slider(Grp|ButtonGrp)|Index(SliderGrp)?|Editor|AtPoint)?|umnLayout|lision)|arsenSubdivSelectionList|m(p(onentEditor|utePolysetVolume |actHairSystem )|mand(Port|Echo|Line)))|u(tKey|r(ve(MoveEPCtx|SketchCtx|CVCtx|Intersect|OnSurface|E(ditorCtx|PCtx)|AddPtCtx)?|rent(Ctx|Time(Ctx)?|Unit)))|p(GetSolverAttr|Button|S(olver(Types)?|e(t(SolverAttr|Edit)|am))|C(o(nstraint|llision)|ache)|Tool|P(anel|roperty))|eil|l(ip(Schedule(rOutliner)?|TrimBefore |Editor(CurrentTimeCtx)?)?|ose(Surface|Curve)|uster|ear(Cache)?|amp)|a(n(CreateManip|vas)|tch(Quiet)?|pitalizeString |mera(View)?)|r(oss(Product )?|eate(RenderLayer|MotionField |SubdivRegion|N(ode|ewShelf )|D(isplayLayer|rawCtx)|Editor))|md(Shell|FileOutput))|M(R(ender(ShadowData|Callback|Data|Util|View|Line(Array)?)|ampAttribute)|G(eometryData|lobal)|M(odelMessage|essage|a(nipData|t(erial|rix)))|BoundingBox|S(yntax|ceneMessage|t(atus|ring(Array)?)|imple|pace|elect(ion(Mask|List)|Info)|watchRender(Register|Base))|H(ardwareRenderer|WShaderSwatchGenerator)|NodeMessage|C(o(nditionMessage|lor(Array)?|m(putation|mand(Result|Message)))|ursor|loth(Material|S(ystem|olverRegister)|Con(straint|trol)|Triangle|Particle|Edge|Force)|allbackIdArray)|T(ypeId|ime(r(Message)?|Array)?|oolsInfo|esselationParams|r(imBoundaryArray|ansformationMatrix))|I(ntArray|t(Geometry|Mesh(Polygon|Edge|Vertex|FaceVertex)|S(urfaceCV|electionList)|CurveCV|Instancer|eratorType|D(ependency(Graph|Nodes)|ag)|Keyframe)|k(System|HandleGroup)|mage)|3dView|Object(SetMessage|Handle|Array)?|D(G(M(odifier|essage)|Context)|ynSwept(Triangle|Line)|istance|oubleArray|evice(State|Channel)|a(ta(Block|Handle)|g(M(odifier|essage)|Path(Array)?))|raw(Request(Queue)?|Info|Data|ProcedureBase))|U(serEventMessage|i(nt(Array|64Array)|Message))|P(o(int(Array)?|lyMessage)|lug(Array)?|rogressWindow|x(G(eometry(Iterator|Data)|lBuffer)|M(idiInputDevice|odelEditorCommand|anipContainer)|S(urfaceShape(UI)?|pringNode|electionContext)|HwShaderNode|Node|Co(ntext(Command)?|m(ponentShape|mand))|T(oolCommand|ransform(ationMatrix)?)|IkSolver(Node)?|3dModelView|ObjectSet|D(eformerNode|ata|ragAndDropBehavior)|PolyT(weakUVCommand|rg)|EmitterNode|F(i(eldNode|leTranslator)|luidEmitterNode)|LocatorNode))|E(ulerRotation|vent(Message)?)|ayatomr|Vector(Array)?|Quaternion|F(n(R(otateManip|eflectShader|adialField)|G(e(nericAttribute|ometry(Data|Filter))|ravityField)|M(otionPath|es(sageAttribute|h(Data)?)|a(nip3D|trix(Data|Attribute)))|B(l(innShader|endShapeDeformer)|ase)|S(caleManip|t(ateManip|ring(Data|ArrayData))|ingleIndexedComponent|ubd(Names|Data)?|p(hereData|otLight)|et|kinCluster)|HikEffector|N(on(ExtendedLight|AmbientLight)|u(rbs(Surface(Data)?|Curve(Data)?)|meric(Data|Attribute))|ewtonField)|C(haracter|ircleSweepManip|ompo(nent(ListData)?|undAttribute)|urveSegmentManip|lip|amera)|T(ypedAttribute|oggleManip|urbulenceField|r(ipleIndexedComponent|ansform))|I(ntArrayData|k(Solver|Handle|Joint|Effector))|D(ynSweptGeometryData|i(s(cManip|tanceManip)|rection(Manip|alLight))|ouble(IndexedComponent|ArrayData)|ependencyNode|a(ta|gNode)|ragField)|U(ni(tAttribute|formField)|Int64ArrayData)|P(hong(Shader|EShader)|oint(On(SurfaceManip|CurveManip)|Light|ArrayData)|fxGeometry|lugin(Data)?|arti(cleSystem|tion))|E(numAttribute|xpression)|V(o(lume(Light|AxisField)|rtexField)|ectorArrayData)|KeyframeDelta(Move|B(lockAddRemove|reakdown)|Scale|Tangent|InfType|Weighted|AddRemove)?|F(ield|luid|reePointTriadManip)|W(ireDeformer|eightGeometryFilter)|L(ight(DataAttribute)?|a(yeredShader|ttice(D(eformer|ata))?|mbertShader))|A(ni(sotropyShader|mCurve)|ttribute|irField|r(eaLight|rayAttrsData)|mbientLight))?|ile(IO|Object)|eedbackLine|loat(Matrix|Point(Array)?|Vector(Array)?|Array))|L(i(ghtLinks|brary)|ockMessage)|A(n(im(Message|C(ontrol|urveC(hange|lipboard(Item(Array)?)?))|Util)|gle)|ttribute(Spec(Array)?|Index)|r(rayData(Builder|Handle)|g(Database|Parser|List))))|t(hreePointArcCtx|ime(Control|Port|rX)|o(ol(Button|HasOptions|Collection|Dropped|PropertyWindow)|NativePath |upper|kenize(List )?|l(ower|erance)|rus|ggle(WindowVisibility|Axis)?)|u(rbulence|mble(Ctx)?)|ex(RotateContext|M(oveContext|anipContext)|t(ScrollList|Curves|ure(HairColor |DisplacePlane |PlacementContext|Window)|ToShelf |Field(Grp|ButtonGrp)?)?|S(caleContext|electContext|mudgeUVContext)|WinToolCtx)|woPointArcCtx|a(n(gentConstraint)?|bLayout)|r(im|unc(ate(HairCache|FluidCache))?|a(ns(formLimits|lator)|c(e|k(Ctx)?))))|i(s(olateSelect|Connected|True|Dirty|ParentOf |Valid(String |ObjectName |UiName )|AnimCurve )|n(s(tance(r)?|ert(Joint(Ctx)?|K(not(Surface|Curve)|eyCtx)))|heritTransform|t(S(crollBar|lider(Grp)?)|er(sect|nalVar|ToUI )|Field(Grp)?))|conText(Radio(Button|Collection)|Button|StaticLabel|CheckBox)|temFilter(Render|Type|Attr)?|prEngine|k(S(ystem(Info)?|olver|plineHandleCtx)|Handle(Ctx|DisplayScale)?|fkDisplayMethod)|m(portComposerCurves |fPlugins|age))|o(ceanNurbsPreviewPlane |utliner(Panel|Editor)|p(tion(Menu(Grp)?|Var)|en(GLExtension|MayaPref))|verrideModifier|ffset(Surface|Curve(OnSurface)?)|r(ientConstraint|bit(Ctx)?)|b(soleteProc |j(ect(Center|Type(UI)?|Layer )|Exists)))|d(yn(RelEd(itor|Panel)|Globals|C(ontrol|ache)|P(a(intEditor|rticleCtx)|ref)|Exp(ort|ression)|amicLoad)|i(s(connect(Joint|Attr)|tanceDim(Context|ension)|pla(y(RGBColor|S(tats|urface|moothness)|C(olor|ull)|Pref|LevelOfDetail|Affected)|cementToPoly)|kCache|able)|r(name |ect(ionalLight|KeyCtx)|map)|mWhen)|o(cServer|Blur|t(Product )?|ubleProfileBirailSurface|peSheetEditor|lly(Ctx)?)|uplicate(Surface|Curve)?|e(tach(Surface|Curve|DeviceAttr)|vice(Panel|Editor)|f(ine(DataServer|VirtualDevice)|ormer|ault(Navigation|LightListCheckBox))|l(ete(Sh(elfTab |adingGroupsAndMaterials )|U(nusedBrushes |I)|Attr)?|randstr)|g_to_rad)|agPose|r(opoffLocator|ag(gerContext)?)|g(timer|dirty|Info|eval))|CBG |u(serCtx|n(t(angleUV|rim)|i(t|form)|do(Info)?|loadPlugin|assignInputDevice|group)|iTemplate|p(dateAE |Axis)|v(Snapshot|Link))|joint(C(tx|luster)|DisplayScale|Lattice)?|p(sd(ChannelOutliner|TextureFile|E(ditTextureFile|xport))|close|i(c(ture|kWalk)|xelMove)|o(se|int(MatrixMult |C(onstraint|urveConstraint)|On(Surface|Curve)|Position|Light)|p(upMenu|en)|w|l(y(Reduce|GeoSampler|M(irrorFace|ove(UV|Edge|Vertex|Facet(UV)?)|erge(UV|Edge(Ctx)?|Vertex|Facet(Ctx)?)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|l(indData|endColor))|S(traightenUVBorder|oftEdge|u(perCtx|bdivide(Edge|Facet))|p(her(icalProjection|e)|lit(Ring|Ctx|Edge|Vertex)?)|e(tToFaceNormal|parate|wEdge|lect(Constraint(Monitor)?|EditCtx))|mooth)|Normal(izeUV|PerVertex)?|C(hipOff|ylind(er|ricalProjection)|o(ne|pyUV|l(or(BlindData|Set|PerVertex)|lapse(Edge|Facet)))|u(t(Ctx)?|be)|l(ipboard|oseBorder)|acheMonitor|rea(seEdge|teFacet(Ctx)?))|T(o(Subdiv|rus)|r(iangulate|ansfer))|In(stallAction|fo)|Options|D(uplicate(Edge|AndConnect)|el(Edge|Vertex|Facet))|U(nite|VSet)|P(yramid|oke|lan(e|arProjection)|r(ism|ojection))|E(ditUV|valuate|xtrude(Edge|Facet))|Qu(eryBlindData|ad)|F(orceUV|lip(UV|Edge))|WedgeFace|L(istComponentConversion|ayoutUV)|A(utoProjection|ppend(Vertex|FacetCtx)?|verage(Normal|Vertex)))|eVectorConstraint))|utenv|er(cent|formanceOptions)|fxstrokes|wd|l(uginInfo|a(y(b(last|ackOptions))?|n(e|arSrf)))|a(steKey|ne(l(History|Configuration)?|Layout)|thAnimation|irBlend|use|lettePort|r(ti(cle(RenderInfo|Instancer|Exists)?|tion)|ent(Constraint)?|am(Dim(Context|ension)|Locator)))|r(int|o(j(ect(ion(Manip|Context)|Curve|Tangent)|FileViewer)|pMo(dCtx|ve)|gress(Bar|Window)|mptDialog)|eloadRefEd))|e(n(codeString|d(sWith |String )|v|ableDevice)|dit(RenderLayer(Globals|Members)|or(Template)?|DisplayLayer(Globals|Members)|AttrLimits )|v(ent|al(Deferred|Echo)?)|quivalent(Tol | )|ffector|r(f|ror)|x(clusiveLightCheckBox|t(end(Surface|Curve)|rude)|ists|p(ortComposerCurves |ression(EditorListen)?)?|ec(uteForEachObject )?|actWorldBoundingBox)|mit(ter)?)|v(i(sor|ew(Set|HeadOn|2dToolCtx|C(lipPlane|amera)|Place|Fit|LookAt))|o(lumeAxis|rtex)|e(ctorize|rifyCmd )|alidateShelfName )|key(Tangent|frame(Region(MoveKeyCtx|S(caleKeyCtx|e(tKeyCtx|lectKeyCtx))|CurrentTimeCtx|TrackCtx|InsertKeyCtx|D(irectKeyCtx|ollyCtx))|Stats|Outliner)?)|qu(it|erySubdiv)|f(c(heck|lose)|i(nd(RelatedSkinCluster |MenuItem |er|Keyframe|AllIntersections )|tBspline|l(ter(StudioImport|Curve|Expand)?|e(BrowserDialog|test|Info|Dialog|Extension )?|letCurve)|rstParentOf )|o(ntDialog|pen|rmLayout)|print|eof|flush|write|l(o(or|w|at(S(crollBar|lider(Grp|ButtonGrp|2)?)|Eq |Field(Grp)?))|u(shUndo|id(CacheInfo|Emitter|VoxelInfo))|exor)|r(omNativePath |e(eFormFillet|wind|ad)|ameLayout)|get(word|line)|mod)|w(hatIs|i(ndow(Pref)?|re(Context)?)|orkspace|ebBrowser(Prefs)?|a(itCursor|rning)|ri(nkle(Context)?|teTake))|l(s(T(hroughFilter|ype )|UI)?|i(st(Relatives|MenuAnnotation |Sets|History|NodeTypes|C(onnections|ameras)|Transforms |InputDevice(s|Buttons|Axes)|erEditor|DeviceAttachments|Unselected |A(nimatable|ttr))|n(step|eIntersection )|ght(link|List(Panel|Editor)?))|o(ckNode|okThru|ft|ad(NewShelf |P(lugin|refObjects)|Fluid)|g)|a(ssoContext|y(out|er(Button|ed(ShaderPort|TexturePort)))|ttice(DeformKeyCtx)?|unch(ImageEditor)?))|a(ssign(Command|InputDevice)|n(notate|im(C(one|urveEditor)|Display|View)|gle(Between)?)|tt(ach(Surface|Curve|DeviceAttr)|r(ibute(Menu|Info|Exists|Query)|NavigationControlGrp|Co(ntrolGrp|lorSliderGrp|mpatibility)|PresetEditWin|EnumOptionMenu(Grp)?|Field(Grp|SliderGrp)))|i(r|mConstraint)|d(d(NewShelfTab|Dynamic|PP|Attr(ibuteEditorNodeHelp)?)|vanceToNextDrivenKey)|uto(Place|Keyframe)|pp(endStringArray|l(y(Take|AttrPreset)|icationName))|ffect(s|edNet)|l(i(as(Attr)?|gn(Surface|C(tx|urve))?)|lViewFit)|r(c(len|Len(DimContext|gthDimension))|t(BuildPaintMenu|Se(tPaintCtx|lectCtx)|3dPaintCtx|UserPaintCtx|PuttyCtx|FluidAttrCtx|Attr(SkinPaintCtx|Ctx|PaintVertexCtx))|rayMapper)|mbientLight|b(s|out))|r(igid(Body|Solver)|o(t(at(ionInterpolation|e))?|otOf |undConstantRadius|w(ColumnLayout|Layout)|ll(Ctx)?)|un(up|TimeCommand)|e(s(olutionNode|et(Tool|AE )|ampleFluid)|hash|n(der(GlobalsNode|Manip|ThumbnailUpdate|Info|er|Partition|QualityNode|Window(SelectContext|Editor)|LayerButton)?|ame(SelectionList |UI|Attr)?)|cord(Device|Attr)|target|order(Deformers)?|do|v(olve|erse(Surface|Curve))|quires|f(ineSubdivSelectionList|erence(Edit|Query)?|resh(AE )?)|loadImage|adTake|root|move(MultiInstance|Joint)|build(Surface|Curve))|a(n(d(state|omizeFollicles )?|geControl)|d(i(o(MenuItemCollection|Button(Grp)?|Collection)|al)|_to_deg)|mpColorPort)|gb_to_hsv)|g(o(toBindPose |al)|e(t(M(odifiers|ayaPanelTypes )|Classification|InputDeviceRange|pid|env|DefaultBrush|Pa(nel|rticleAttr)|F(ileList|luidAttr)|A(ttr|pplicationVersionAsFloat ))|ometryConstraint)|l(Render(Editor)?|obalStitch)|a(uss|mma)|r(id(Layout)?|oup(ObjectsByName )?|a(dientControl(NoAttr)?|ph(SelectContext|TrackCtx|DollyCtx)|vity|bColor))|match)|x(pmPicker|form|bmLangPathList )|m(i(n(imizeApp)?|rrorJoint)|o(del(CurrentTimeCtx|Panel|Editor)|use|v(In|e(IKtoFK |VertexAlongDirection|KeyCtx)?|Out))|u(te|ltiProfileBirailSurface)|e(ssageLine|nu(BarLayout|Item(ToShelf )?|Editor)?|mory)|a(nip(Rotate(Context|LimitsCtx)|Move(Context|LimitsCtx)|Scale(Context|LimitsCtx)|Options)|tch|ke(Roll |SingleSurface|TubeOn |Identity|Paintable|bot|Live)|rker|g|x))|b(in(Membership|d(Skin|Pose))|o(neLattice|undary|x(ZoomCtx|DollyCtx))|u(tton(Manip)?|ild(BookmarkMenu|KeyframeMenu)|fferCurve)|e(ssel|vel(Plus)?)|l(indDataType|end(Shape(Panel|Editor)?|2|TwoAttr))|a(sename(Ex | )|tchRender|ke(Results|Simulation|Clip|PartialHistory|FluidShading )))))\\b"},{caseInsensitive:!0,token:"support.constant.mel",regex:"\\b(s(h(ellTessellate|a(d(ing(Map|Engine)|erGlow)|pe))|n(ow|apshot(Shape)?)|c(ulpt|aleConstraint|ript)|t(yleCurve|itch(Srf|AsNurbsShell)|u(cco|dioClearCoat)|encil|roke(Globals)?)|i(ngleShadingSwitch|mpleVolumeShader)|o(ftMod(Manip|Handle)?|lidFractal)|u(rface(Sha(der|pe)|Info|EdManip|VarGroup|Luminance)|b(Surface|d(M(odifier(UV|World)?|ap(SewMove|Cut|pingManip))|B(lindData|ase)|iv(ReverseFaces|SurfaceVarGroup|Co(llapse|mponentId)|To(Nurbs|Poly))?|HierBlind|CleanTopology|Tweak(UV)?|P(lanarProj|rojManip)|LayoutUV|A(ddTopology|utoProj))|Curve))|p(BirailSrf|otLight|ring)|e(tRange|lectionListOperator)|k(inCluster|etchPlane)|quareSrf|ampler(Info)?|m(ooth(Curve|TangentSrf)|ear))|h(svToRgb|yper(GraphInfo|View|Layout)|ik(Solver|Handle|Effector)|oldMatrix|eightField|w(Re(nderGlobals|flectionMap)|Shader)|a(ir(System|Constraint|TubeShader)|rd(enPoint|wareRenderGlobals)))|n(o(n(ExtendedLightShapeNode|Linear|AmbientLightShapeNode)|ise|rmalConstraint)|urbs(Surface|Curve|T(oSubdiv(Proc)?|essellate)|DimShape)|e(twork|wtonField))|c(h(o(ice|oser)|ecker|aracter(Map|Offset)?)|o(n(straint|tr(olPoint|ast)|dition)|py(ColorSet|UVSet))|urve(Range|Shape|Normalizer(Linear|Angle)?|In(tersect|fo)|VarGroup|From(Mesh(CoM|Edge)?|Su(rface(Bnd|CoS|Iso)?|bdiv(Edge|Face)?)))|l(ip(Scheduler|Library)|o(se(stPointOnSurface|Surface|Curve)|th|ud)|uster(Handle)?|amp)|amera(View)?|r(eate(BPManip|ColorSet|UVSet)|ater))|t(ime(ToUnitConversion|Function)?|oo(nLineAttributes|lDrawManip)|urbulenceField|ex(BaseDeformManip|ture(BakeSet|2d|ToGeom|3d|Env)|SmudgeUVManip|LatticeDeformManip)|weak|angentConstraint|r(i(pleShadingSwitch|m(WithBoundaries)?)|ansform(Geometry)?))|i(n(s(tancer|ertKnot(Surface|Curve))|tersectSurface)|k(RPsolver|MCsolver|S(ystem|olver|Csolver|plineSolver)|Handle|PASolver|Effector)|m(plicit(Box|Sphere|Cone)|agePlane))|o(cean(Shader)?|pticalFX|ffset(Surface|C(os|urve))|ldBlindDataBase|rient(Constraint|ationMarker)|bject(RenderFilter|MultiFilter|BinFilter|S(criptFilter|et)|NameFilter|TypeFilter|Filter|AttrFilter))|d(yn(Globals|Base)|i(s(tance(Between|DimShape)|pla(yLayer(Manager)?|cementShader)|kCache)|rect(ionalLight|edDisc)|mensionShape)|o(ubleShadingSwitch|f)|pBirailSrf|e(tach(Surface|Curve)|pendNode|f(orm(Bend|S(ine|quash)|Twist|ableShape|F(unc|lare)|Wave)|ault(RenderUtilityList|ShaderList|TextureList|LightList))|lete(Co(lorSet|mponent)|UVSet))|ag(Node|Pose)|r(opoffLocator|agField))|u(seBackground|n(trim|i(t(Conversion|ToTimeConversion)|formField)|known(Transform|Dag)?)|vChooser)|j(iggle|oint(Cluster|Ffd|Lattice)?)|p(sdFileTex|hong(E)?|o(s(tProcessList|itionMarker)|int(MatrixMult|Constraint|On(SurfaceInfo|CurveInfo)|Emitter|Light)|l(y(Reduce|M(irror|o(difier(UV|World)?|ve(UV|Edge|Vertex|Face(tUV)?))|erge(UV|Edge|Vert|Face)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|lindData|ase)|S(traightenUVBorder|oftEdge|ubd(Edge|Face)|p(h(ere|Proj)|lit(Ring|Edge|Vert)?)|e(parate|wEdge)|mooth(Proxy|Face)?)|Normal(izeUV|PerVertex)?|C(hipOff|yl(inder|Proj)|o(ne|pyUV|l(orPerVertex|lapse(Edge|F)))|u(t(Manip(Container)?)?|be)|loseBorder|rea(seEdge|t(or|eFace)))|T(o(Subdiv|rus)|weak(UV)?|r(iangulate|ansfer))|OptUvs|D(uplicateEdge|el(Edge|Vertex|Facet))|Unite|P(yramid|oke(Manip)?|lan(e|arProj)|r(i(sm|mitive)|oj))|Extrude(Edge|Vertex|Face)|VertexNormalManip|Quad|Flip(UV|Edge)|WedgeFace|LayoutUV|A(utoProj|ppend(Vertex)?|verageVertex))|eVectorConstraint))|fx(Geometry|Hair|Toon)|l(usMinusAverage|a(n(e|arTrimSurface)|ce(2dTexture|3dTexture)))|a(ssMatrix|irBlend|r(ti(cle(SamplerInfo|C(olorMapper|loud)|TranspMapper|IncandMapper|AgeMapper)?|tion)|ent(Constraint|Tessellate)|amDimension))|r(imitive|o(ject(ion|Curve|Tangent)|xyManager)))|e(n(tity|v(Ball|ironmentFog|S(phere|ky)|C(hrome|ube)|Fog))|x(t(end(Surface|Curve)|rude)|p(lodeNurbsShell|ression)))|v(iewManip|o(lume(Shader|Noise|Fog|Light|AxisField)|rtexField)|e(ctor(RenderGlobals|Product)|rtexBakeSet))|quadShadingSwitch|f(i(tBspline|eld|l(ter(Resample|Simplify|ClosestSample|Euler)?|e|letCurve))|o(urByFourMatrix|llicle)|urPointOn(MeshInfo|Subd)|f(BlendSrf(Obsolete)?|d|FilletSrf)|l(ow|uid(S(hape|liceManip)|Texture(2D|3D)|Emitter)|exorShape)|ra(ctal|meCache))|w(tAddMatrix|ire|ood|eightGeometryFilter|ater|rap)|l(ight(Info|Fog|Li(st|nker))?|o(cator|okAt|d(Group|Thresholds)|ft)|uminance|ea(stSquaresModifier|ther)|a(yered(Shader|Texture)|ttice|mbert))|a(n(notationShape|i(sotropic|m(Blend(InOut)?|C(urve(T(T|U|L|A)|U(T|U|L|A))?|lip)))|gleBetween)|tt(ach(Surface|Curve)|rHierarchyTest)|i(rField|mConstraint)|dd(Matrix|DoubleLinear)|udio|vg(SurfacePoints|NurbsSurfacePoints|Curves)|lign(Manip|Surface|Curve)|r(cLengthDimension|tAttrPaintTest|eaLight|rayMapper)|mbientLight|bstractBase(NurbsConversion|Create))|r(igid(Body|Solver|Constraint)|o(ck|undConstantRadius)|e(s(olution|ultCurve(TimeTo(Time|Unitless|Linear|Angular))?)|nder(Rect|Globals(List)?|Box|Sphere|Cone|Quality|L(ight|ayer(Manager)?))|cord|v(olve(dPrimitive)?|erse(Surface|Curve)?)|f(erence|lect)|map(Hsv|Color|Value)|build(Surface|Curve))|a(dialField|mp(Shader)?)|gbToHsv|bfSrf)|g(uide|eo(Connect(or|able)|metry(Shape|Constraint|VarGroup|Filter))|lobal(Stitch|CacheControl)|ammaCorrect|r(id|oup(Id|Parts)|a(nite|vityField)))|Fur(Globals|Description|Feedback|Attractors)|xformManip|m(o(tionPath|untain|vie)|u(te|lt(Matrix|i(plyDivide|listerLight)|DoubleLinear))|pBirailSrf|e(sh(VarGroup)?|ntalray(Texture|IblShape))|a(terialInfo|ke(Group|Nurb(sSquare|Sphere|C(ylinder|ircle|one|ube)|Torus|Plane)|CircularArc|T(hreePointCircularArc|extCurves|woPointCircularArc))|rble))|b(irailSrf|o(neLattice|olean|undary(Base)?)|u(lge|mp(2d|3d))|evel(Plus)?|l(in(n|dDataTemplate)|end(Shape|Color(s|Sets)|TwoAttr|Device|Weighted)?)|a(se(GeometryVarGroup|ShadingSwitch|Lattice)|keSet)|r(ownian|ush)))\\b"},{caseInsensitive:!0,token:"keyword.control.mel",regex:"\\b(if|in|else|for|while|break|continue|case|default|do|switch|return|switch|case|source|catch|alias)\\b"},{token:"keyword.other.mel",regex:"\\b(global)\\b"},{caseInsensitive:!0,token:"constant.language.mel",regex:"\\b(null|undefined)\\b"},{token:"constant.numeric.mel",regex:"\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b"},{token:"punctuation.definition.string.begin.mel",regex:'"',push:[{token:"constant.character.escape.mel",regex:"\\\\."},{token:"punctuation.definition.string.end.mel",regex:'"',next:"pop"},{defaultToken:"string.quoted.double.mel"}]},{token:["variable.other.mel","punctuation.definition.variable.mel"],regex:"(\\$)([a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*?\\b)"},{token:"punctuation.definition.string.begin.mel",regex:"'",push:[{token:"constant.character.escape.mel",regex:"\\\\."},{token:"punctuation.definition.string.end.mel",regex:"'",next:"pop"},{defaultToken:"string.quoted.single.mel"}]},{token:"constant.language.mel",regex:"\\b(false|true|yes|no|on|off)\\b"},{token:"punctuation.definition.comment.mel",regex:"/\\*",push:[{token:"punctuation.definition.comment.mel",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.mel"}]},{token:["comment.line.double-slash.mel","punctuation.definition.comment.mel"],regex:"(//)(.*$\\n?)"},{caseInsensitive:!0,token:"keyword.operator.mel",regex:"\\b(instanceof)\\b"},{token:"keyword.operator.symbolic.mel",regex:"[-\\!\\%\\&\\*\\+\\=\\/\\?\\:]"},{token:["meta.preprocessor.mel","punctuation.definition.preprocessor.mel"],regex:"(^[ \\t]*)((?:#)[a-zA-Z]+)"},{token:["meta.function.mel","keyword.other.mel","storage.type.mel","entity.name.function.mel","punctuation.section.function.mel"],regex:"(global\\s*)?(proc\\s*)(\\w+\\s*\\[?\\]?\\s+|\\s+)([A-Za-z_][A-Za-z0-9_\\.]*)(\\s*\\()",push:[{include:"$self"},{token:"punctuation.section.function.mel",regex:"\\)",next:"pop"},{defaultToken:"meta.function.mel"}]}]},this.normalizeRules()};r.inherits(s,i),t.MELHighlightRules=s}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/mel",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mel_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./mel_highlight_rules").MELHighlightRules,o=e("./behaviour/cstyle").CstyleBehaviour,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$behaviour=new o,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/mel"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-mips_assembler.js b/library/ace/mode-mips_assembler.js
new file mode 100644
index 000000000..850bf0777
--- /dev/null
+++ b/library/ace/mode-mips_assembler.js
@@ -0,0 +1 @@
+ace.define("ace/mode/mips_assembler_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"support.function.pseudo.mips",regex:"\\b(?:mul|abs|div|divu|mulo|mulou|neg|negu|not|rem|remu|rol|ror|li|seq|sge|sgeu|sgt|sgtu|sle|sleu|sne|b|beqz|bge|bgeu|bgt|bgtu|ble|bleu|blt|bltu|bnez|la|ld|ulh|ulhu|ulw|sd|ush|usw|move|mfc1\\.d|l\\.d|l\\.s|s\\.d|s\\.s)\\b",comment:"ok actually this are instructions, but one also could call them funtions\u2026"},{token:"support.function.mips",regex:"\\b(?:abs\\.d|abs\\.s|add|add\\.d|add\\.s|addi|addiu|addu|and|andi|bc1f|bc1t|beq|bgez|bgezal|bgtz|blez|bltz|bltzal|bne|break|c\\.eq\\.d|c\\.eq\\.s|c\\.le\\.d|c\\.le\\.s|c\\.lt\\.d|c\\.lt\\.s|ceil\\.w\\.d|ceil\\.w\\.s|clo|clz|cvt\\.d\\.s|cvt\\.d\\.w|cvt\\.s\\.d|cvt\\.s\\.w|cvt\\.w\\.d|cvt\\.w\\.s|div|div\\.d|div\\.s|divu|eret|floor\\.w\\.d|floor\\.w\\.s|j|jal|jalr|jr|lb|lbu|lh|lhu|ll|lui|lw|lwc1|lwl|lwr|madd|maddu|mfc0|mfc1|mfhi|mflo|mov\\.d|mov\\.s|movf|movf\\.d|movf\\.s|movn|movn\\.d|movn\\.s|movt|movt\\.d|movt\\.s|movz|movz\\.d|movz\\.s|msub|mtc0|mtc1|mthi|mtlo|mul|mul\\.d|mul\\.s|mult|multu|neg\\.d|neg\\.s|nop|nor|or|ori|round\\.w\\.d|round\\.w\\.s|sb|sc|sdc1|sh|sll|sllv|slt|slti|sltiu|sltu|sqrt\\.d|sqrt\\.s|sra|srav|srl|srlv|sub|sub\\.d|sub\\.s|subu|sw|swc1|swl|swr|syscall|teq|teqi|tge|tgei|tgeiu|tgeu|tlt|tlti|tltiu|tltu|trunc\\.w\\.d|trunc\\.w\\.s|xor|xori)\\b"},{token:"storage.type.mips",regex:"\\.(?:ascii|asciiz|byte|data|double|float|half|kdata|ktext|space|text|word|set\\s*(?:noat|at))\\b"},{token:"storage.modifier.mips",regex:"\\.(?:align|extern||globl)\\b"},{token:["entity.name.function.label.mips","meta.function.label.mips"],regex:"\\b([A-Za-z0-9_]+)(:)"},{token:["punctuation.definition.variable.mips","variable.other.register.usable.by-number.mips"],regex:"(\\$)(0|[2-9]|1[0-9]|2[0-5]|2[89]|3[0-1])\\b"},{token:["punctuation.definition.variable.mips","variable.other.register.usable.by-name.mips"],regex:"(\\$)(zero|v[01]|a[0-3]|t[0-9]|s[0-7]|gp|sp|fp|ra)\\b"},{token:["punctuation.definition.variable.mips","variable.other.register.reserved.mips"],regex:"(\\$)(at|k[01]|1|2[67])\\b"},{token:["punctuation.definition.variable.mips","variable.other.register.usable.floating-point.mips","variable.other.register.usable.floating-point.mips"],regex:"(\\$)(f)([0-9]|1[0-9]|2[0-9]|3[0-1])\\b"},{token:"constant.numeric.float.mips",regex:"\\b\\d+\\.\\d+\\b"},{token:"constant.numeric.integer.mips",regex:"\\b(?:\\d+|0(?:x|X)[a-fA-F0-9]+)\\b"},{token:"punctuation.definition.string.begin.mips",regex:'"',push:[{token:"punctuation.definition.string.end.mips",regex:'"',next:"pop"},{token:"constant.character.escape.mips",regex:'\\\\[rnt\\\\"]'},{defaultToken:"string.quoted.double.mips"}]},{token:"punctuation.definition.comment.mips",regex:"#",push:[{token:"comment.line.number-sign.mips",regex:"$",next:"pop"},{defaultToken:"comment.line.number-sign.mips"}]}]},this.normalizeRules()};s.metaData={fileTypes:["s","mips","spim","asm"],keyEquivalent:"^~M",name:"MIPS Assembler",scopeName:"source.mips"},r.inherits(s,i),t.MIPSAssemblerHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/mips_assembler",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mips_assembler_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./mips_assembler_highlight_rules").MIPSAssemblerHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.$id="ace/mode/mips_assembler"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-mipsassembler.js b/library/ace/mode-mipsassembler.js
new file mode 100644
index 000000000..2d3d4b630
--- /dev/null
+++ b/library/ace/mode-mipsassembler.js
@@ -0,0 +1 @@
+ace.define("ace/mode/mipsassembler_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"string.start",regex:'"',next:"qstring"}],qstring:[{token:"escape",regex:/\\./},{token:"string.end",regex:'"',next:"start"}]},this.normalizeRules()};s.metaData=r.inherits(s,i),t.mipsassemblerHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/mipsassembler",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mipsassembler_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./mipsassembler_highlight_rules").HighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.$id="ace/mode/mipsassembler"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-mushcode.js b/library/ace/mode-mushcode.js
new file mode 100644
index 000000000..3cffce02e
--- /dev/null
+++ b/library/ace/mode-mushcode.js
@@ -0,0 +1 @@
+ace.define("ace/mode/mushcode_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="@if|@ifelse|@switch|@halt|@dolist|@create|@scent|@sound|@touch|@ataste|@osound|@ahear|@aahear|@amhear|@otouch|@otaste|@drop|@odrop|@adrop|@dropfail|@odropfail|@smell|@oemit|@emit|@pemit|@parent|@clone|@taste|whisper|page|say|pose|semipose|teach|touch|taste|smell|listen|look|move|go|home|follow|unfollow|desert|dismiss|@tel",t="=#0",n="default|edefault|eval|get_eval|get|grep|grepi|hasattr|hasattrp|hasattrval|hasattrpval|lattr|nattr|poss|udefault|ufun|u|v|uldefault|xget|zfun|band|bnand|bnot|bor|bxor|shl|shr|and|cand|cor|eq|gt|gte|lt|lte|nand|neq|nor|not|or|t|xor|con|entrances|exit|followers|home|lcon|lexits|loc|locate|lparent|lsearch|next|num|owner|parent|pmatch|rloc|rnum|room|where|zone|worn|held|carried|acos|asin|atan|ceil|cos|e|exp|fdiv|fmod|floor|log|ln|pi|power|round|sin|sqrt|tan|aposs|andflags|conn|commandssent|controls|doing|elock|findable|flags|fullname|hasflag|haspower|hastype|hidden|idle|isbaker|lock|lstats|money|who|name|nearby|obj|objflags|photo|poll|powers|pendingtext|receivedtext|restarts|restarttime|subj|shortestpath|tmoney|type|visible|cat|element|elements|extract|filter|filterbool|first|foreach|fold|grab|graball|index|insert|itemize|items|iter|last|ldelete|map|match|matchall|member|mix|munge|pick|remove|replace|rest|revwords|setdiff|setinter|setunion|shuffle|sort|sortby|splice|step|wordpos|words|add|lmath|max|mean|median|min|mul|percent|sign|stddev|sub|val|bound|abs|inc|dec|dist2d|dist3d|div|floordiv|mod|modulo|remainder|vadd|vdim|vdot|vmag|vmax|vmin|vmul|vsub|vunit|regedit|regeditall|regeditalli|regediti|regmatch|regmatchi|regrab|regraball|regraballi|regrabi|regrep|regrepi|after|alphamin|alphamax|art|before|brackets|capstr|case|caseall|center|containsfansi|comp|decompose|decrypt|delete|edit|encrypt|escape|if|ifelse|lcstr|left|lit|ljust|merge|mid|ostrlen|pos|repeat|reverse|right|rjust|scramble|secure|space|spellnum|squish|strcat|strmatch|strinsert|stripansi|stripfansi|strlen|switch|switchall|table|tr|trim|ucstr|unsafe|wrap|ctitle|cwho|channels|clock|cflags|ilev|itext|inum|convsecs|convutcsecs|convtime|ctime|etimefmt|isdaylight|mtime|secs|msecs|starttime|time|timefmt|timestring|utctime|atrlock|clone|create|cook|dig|emit|lemit|link|oemit|open|pemit|remit|set|tel|wipe|zemit|fbcreate|fbdestroy|fbwrite|fbclear|fbcopy|fbcopyto|fbclip|fbdump|fbflush|fbhset|fblist|fbstats|qentries|qentry|play|ansi|break|c|asc|die|isdbref|isint|isnum|isletters|linecoords|localize|lnum|nameshort|null|objeval|r|rand|s|setq|setr|soundex|soundslike|valid|vchart|vchart2|vlabel|@@|bakerdays|bodybuild|box|capall|catalog|children|ctrailer|darttime|debt|detailbar|exploredroom|fansitoansi|fansitoxansi|fullbar|halfbar|isdarted|isnewbie|isword|lambda|lobjects|lplayers|lthings|lvexits|lvobjects|lvplayers|lvthings|newswrap|numsuffix|playerson|playersthisweek|randomad|randword|realrandword|replacechr|second|splitamount|strlenall|text|third|tofansi|totalac|unique|getaddressroom|listpropertycomm|listpropertyres|lotowner|lotrating|lotratingcount|lotvalue|boughtproduct|companyabb|companyicon|companylist|companyname|companyowners|companyvalue|employees|invested|productlist|productname|productowners|productrating|productratingcount|productsoldat|producttype|ratedproduct|soldproduct|topproducts|totalspentonproduct|totalstock|transfermoney|uniquebuyercount|uniqueproductsbought|validcompany|deletepicture|fbsave|getpicturesecurity|haspicture|listpictures|picturesize|replacecolor|rgbtocolor|savepicture|setpicturesecurity|showpicture|piechart|piechartlabel|createmaze|drawmaze|drawwireframe",r=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":n,"constant.language":t,keyword:e},"identifier"),i="(?:r|u|ur|R|U|UR|Ur|uR)?",s="(?:(?:[1-9]\\d*)|(?:0))",o="(?:0[oO]?[0-7]+)",u="(?:0[xX][\\dA-Fa-f]+)",a="(?:0[bB][01]+)",f="(?:"+s+"|"+o+"|"+u+"|"+a+")",l="(?:[eE][+-]?\\d+)",c="(?:\\.\\d+)",h="(?:\\d+)",p="(?:(?:"+h+"?"+c+")|(?:"+h+"\\.))",d="(?:(?:"+p+"|"+h+")"+l+")",v="(?:"+d+"|"+p+")";this.$rules={start:[{token:"variable",regex:"%[0-9]{1}"},{token:"variable",regex:"%q[0-9A-Za-z]{1}"},{token:"variable",regex:"%[a-zA-Z]{1}"},{token:"variable.language",regex:"%[a-z0-9-_]+"},{token:"constant.numeric",regex:"(?:"+v+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:v},{token:"constant.numeric",regex:f+"[lL]\\b"},{token:"constant.numeric",regex:f+"\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|#|%|<<|>>|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.MushCodeRules=s}),ace.define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){this.foldingStartMarker=new RegExp("([\\[{])(?:\\s*)$|("+e+")(?:\\s*)(?:#.*)?$")};r.inherits(s,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i=r.match(this.foldingStartMarker);if(i)return i[1]?this.openingBracketBlock(e,i[1],n,i.index):i[2]?this.indentationBlock(e,n,i.index+i[2].length):this.indentationBlock(e,n)}}.call(s.prototype)}),ace.define("ace/mode/mushcode",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mushcode_highlight_rules","ace/mode/folding/pythonic","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./mushcode_highlight_rules").MushCodeRules,o=e("./folding/pythonic").FoldMode,u=e("../range").Range,a=function(){this.HighlightRules=s,this.foldingRules=new o("\\:")};r.inherits(a,i),function(){this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[\:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new u(n,r.length-i.length,n,r.length))},this.$id="ace/mode/mushcode"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-mysql.js b/library/ace/mode-mysql.js
new file mode 100644
index 000000000..1e56dcf20
--- /dev/null
+++ b/library/ace/mode-mysql.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/mysql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){function i(e){var t=e.start,n=e.escape;return{token:"string.start",regex:t,next:[{token:"constant.language.escape",regex:n},{token:"string.end",next:"start",regex:t},{defaultToken:"string"}]}}var e="alter|and|as|asc|between|count|create|delete|desc|distinct|drop|from|having|in|insert|into|is|join|like|not|on|or|order|select|set|table|union|update|values|where|accessible|action|add|after|algorithm|all|analyze|asensitive|at|authors|auto_increment|autocommit|avg|avg_row_length|before|binary|binlog|both|btree|cache|call|cascade|cascaded|case|catalog_name|chain|change|changed|character|check|checkpoint|checksum|class_origin|client_statistics|close|coalesce|code|collate|collation|collations|column|columns|comment|commit|committed|completion|concurrent|condition|connection|consistent|constraint|contains|continue|contributors|convert|cross|current_date|current_time|current_timestamp|current_user|cursor|data|database|databases|day_hour|day_microsecond|day_minute|day_second|deallocate|dec|declare|default|delay_key_write|delayed|delimiter|des_key_file|describe|deterministic|dev_pop|dev_samp|deviance|directory|disable|discard|distinctrow|div|dual|dumpfile|each|elseif|enable|enclosed|end|ends|engine|engines|enum|errors|escape|escaped|even|event|events|every|execute|exists|exit|explain|extended|fast|fetch|field|fields|first|flush|for|force|foreign|found_rows|full|fulltext|function|general|global|grant|grants|group|groupby_concat|handler|hash|help|high_priority|hosts|hour_microsecond|hour_minute|hour_second|if|ignore|ignore_server_ids|import|index|index_statistics|infile|inner|innodb|inout|insensitive|insert_method|install|interval|invoker|isolation|iterate|key|keys|kill|language|last|leading|leave|left|level|limit|linear|lines|list|load|local|localtime|localtimestamp|lock|logs|low_priority|master|master_heartbeat_period|master_ssl_verify_server_cert|masters|match|max|max_rows|maxvalue|message_text|middleint|migrate|min|min_rows|minute_microsecond|minute_second|mod|mode|modifies|modify|mutex|mysql_errno|natural|next|no|no_write_to_binlog|offline|offset|one|online|open|optimize|option|optionally|out|outer|outfile|pack_keys|parser|partition|partitions|password|phase|plugin|plugins|prepare|preserve|prev|primary|privileges|procedure|processlist|profile|profiles|purge|query|quick|range|read|read_write|reads|real|rebuild|recover|references|regexp|relaylog|release|remove|rename|reorganize|repair|repeatable|replace|require|resignal|restrict|resume|return|returns|revoke|right|rlike|rollback|rollup|row|row_format|rtree|savepoint|schedule|schema|schema_name|schemas|second_microsecond|security|sensitive|separator|serializable|server|session|share|show|signal|slave|slow|smallint|snapshot|soname|spatial|specific|sql|sql_big_result|sql_buffer_result|sql_cache|sql_calc_found_rows|sql_no_cache|sql_small_result|sqlexception|sqlstate|sqlwarning|ssl|start|starting|starts|status|std|stddev|stddev_pop|stddev_samp|storage|straight_join|subclass_origin|sum|suspend|table_name|table_statistics|tables|tablespace|temporary|terminated|to|trailing|transaction|trigger|triggers|truncate|uncommitted|undo|uninstall|unique|unlock|upgrade|usage|use|use_frm|user|user_resources|user_statistics|using|utc_date|utc_time|utc_timestamp|value|variables|varying|view|views|warnings|when|while|with|work|write|xa|xor|year_month|zerofill|begin|do|then|else|loop|repeat",t="by|bool|boolean|bit|blob|decimal|double|enum|float|long|longblob|longtext|medium|mediumblob|mediumint|mediumtext|time|timestamp|tinyblob|tinyint|tinytext|text|bigint|int|int1|int2|int3|int4|int8|integer|float|float4|float8|double|char|varbinary|varchar|varcharacter|precision|date|datetime|year|unsigned|signed|numeric|ucase|lcase|mid|len|round|rank|now|format|coalesce|ifnull|isnull|nvl",n="charset|clear|connect|edit|ego|exit|go|help|nopager|notee|nowarning|pager|print|prompt|quit|rehash|source|status|system|tee",r=this.createKeywordMapper({"support.function":t,keyword:e,constant:"false|true|null|unknown|date|time|timestamp|ODBCdotTable|zerolessFloat","variable.language":n},"identifier",!0);this.$rules={start:[{token:"comment",regex:"(?:-- |#).*$"},i({start:'"',escape:/\\[0'"bnrtZ\\%_]?/}),i({start:"'",escape:/\\[0'"bnrtZ\\%_]?/}),s.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+|[xX]'[0-9a-fA-F]+'|0[bB][01]+|[bB]'[01]+'/},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"constant.class",regex:"@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"constant.buildin",regex:"`[^`]*`"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.embedRules(s,"doc-",[s.getEndRule("start")]),this.normalizeRules()};r.inherits(u,o),t.MysqlHighlightRules=u}),ace.define("ace/mode/mysql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mysql_highlight_rules","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("../mode/text").Mode,s=e("./mysql_highlight_rules").MysqlHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart=["--","#"],this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/mysql"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-nix.js b/library/ace/mode-nix.js
new file mode 100644
index 000000000..d859c4fa8
--- /dev/null
+++ b/library/ace/mode-nix.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",u=function(){var e="break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",t="asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",n="const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",r="and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eqconst_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",s="NULL|true|false|TRUE|FALSE|nullptr",u=this.$keywords=this.createKeywordMapper({"keyword.control":e,"storage.type":t,"storage.modifier":n,"keyword.operator":r,"variable.language":"this","constant.language":s},"identifier"),a="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Zd\\$_\u00a1-\uffff]*\\b",f=/\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source;this.$rules={start:[{token:"comment",regex:"//$",next:"start"},{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:"'(?:"+f+"|.)'"},{token:"string.start",regex:'"',stateName:"qqstring",next:[{token:"string",regex:/\\\s*$/,next:"qqstring"},{token:"constant.language.escape",regex:f},{token:"constant.language.escape",regex:/%[^'"\\]/},{token:"string.end",regex:'"|$',next:"start"},{defaultToken:"string"}]},{token:"string.start",regex:'R"\\(',stateName:"rawString",next:[{token:"string.end",regex:'\\)"',next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:"support.function.C99.c",regex:o},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"},{token:"keyword.operator",regex:/--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(u,s),t.c_cppHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c_cpp_highlight_rules").c_cppHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c_cpp"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/nix_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="true|false",t="with|import|if|else|then|inherit",n="let|in|rec",r=this.createKeywordMapper({"constant.language.nix":e,"keyword.control.nix":t,"keyword.declaration.nix":n},"identifier");this.$rules={start:[{token:"comment",regex:/#.*$/},{token:"comment",regex:/\/\*/,next:"comment"},{token:"constant",regex:"<[^>]+>"},{regex:"(==|!=|<=?|>=?)",token:["keyword.operator.comparison.nix"]},{regex:"((?:[+*/%-]|\\~)=)",token:["keyword.operator.assignment.arithmetic.nix"]},{regex:"=",token:"keyword.operator.assignment.nix"},{token:"string",regex:"''",next:"qqdoc"},{token:"string",regex:"'",next:"qstring"},{token:"string",regex:'"',push:"qqstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{regex:"}",token:function(e,t,n){return n[1]&&n[1].charAt(0)=="q"?"constant.language.escape":"text"},next:"pop"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqdoc:[{token:"constant.language.escape",regex:/\$\{/,push:"start"},{token:"string",regex:"''",next:"pop"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:/\$\{/,push:"start"},{token:"string",regex:'"',next:"pop"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:/\$\{/,push:"start"},{token:"string",regex:"'",next:"pop"},{defaultToken:"string"}]},this.normalizeRules()};r.inherits(s,i),t.NixHighlightRules=s}),ace.define("ace/mode/nix",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/nix_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./c_cpp").Mode,s=e("./nix_highlight_rules").NixHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){i.call(this),this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="#",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/nix"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-nsis.js b/library/ace/mode-nsis.js
new file mode 100644
index 000000000..b3ff72f2d
--- /dev/null
+++ b/library/ace/mode-nsis.js
@@ -0,0 +1 @@
+ace.define("ace/mode/nsis_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"keyword.compiler.nsis",regex:/(?:\b|^\s*)\!(?:include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|finalize|getdllversion|system|tempfile|warning|verbose|define|undef|insertmacro|macro|macroend|makensis|searchparse|searchreplace)\b/,caseInsensitive:!0},{token:"keyword.command.nsis",regex:/(?:\b|^\s*)(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|IntCmp|IntCmpU|IntFmt|IntOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetPluginUnload|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegStr|WriteUninstaller|XPStyle)\b/,caseInsensitive:!0},{token:"keyword.control.nsis",regex:/(?:\b|^\s*)\!(?:ifdef|ifndef|if|ifmacrodef|ifmacrondef|else|endif)\b/,caseInsensitive:!0},{token:"keyword.plugin.nsis",regex:/(?:\b|^\s*)\w+\:\:\w+/,caseInsensitive:!0},{token:"keyword.operator.comparison.nsis",regex:/[!<>]?=|<>|<|>/},{token:"support.function.nsis",regex:/(?:\b|^\s*)(?:Function|FunctionEnd|Section|SectionEnd|SectionGroup|SectionGroupEnd|SubSection|SubSectionEnd|PageEx|PageExEnd)\b/,caseInsensitive:!0},{token:"support.library.nsis",regex:/\${[\w]+}/},{token:"constant.nsis",regex:/(?:\b|^\s*)(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/,caseInsensitive:!0},{token:"constant.library.nsis",regex:/\${(?:AtLeastServicePack|AtLeastWin7|AtLeastWin8|AtLeastWin10|AtLeastWin95|AtLeastWin98|AtLeastWin2000|AtLeastWin2003|AtLeastWin2008|AtLeastWin2008R2|AtLeastWinME|AtLeastWinNT4|AtLeastWinVista|AtLeastWinXP|AtMostServicePack|AtMostWin7|AtMostWin8|AtMostWin10|AtMostWin95|AtMostWin98|AtMostWin2000|AtMostWin2003|AtMostWin2008|AtMostWin2008R2|AtMostWinME|AtMostWinNT4|AtMostWinVista|AtMostWinXP|IsNT|IsServer|IsServicePack|IsWin7|IsWin8|IsWin10|IsWin95|IsWin98|IsWin2000|IsWin2003|IsWin2008|IsWin2008R2|IsWinME|IsWinNT4|IsWinVista|IsWinXP)}/},{token:"constant.language.boolean.true.nsis",regex:/\b(?:true|on)\b/},{token:"constant.language.boolean.false.nsis",regex:/\b(?:false|off)\b/},{token:"constant.language.option.nsis",regex:/(?:\b|^\s*)(?:(?:un\.)?components|(?:un\.)?custom|(?:un\.)?directory|(?:un\.)?instfiles|(?:un\.)?license|uninstConfirm|admin|all|auto|both|bottom|bzip2|current|force|hide|highest|ifdiff|ifnewer|lastused|leave|left|listonly|lzma|nevershow|none|normal|notset|right|show|silent|silentlog|textonly|top|try|user|Win10|Win7|Win8|WinVista|zlib)\b/,caseInsensitive:!0},{token:"constant.language.slash-option.nsis",regex:/\/(?:a|BRANDING|CENTER|COMPONENTSONLYONCUSTOM|CUSTOMSTRING\=|date|e|ENABLECANCEL|FILESONLY|file|FINAL|GLOBAL|gray|ifempty|ifndef|ignorecase|IMGID\=|ITALIC|LANG\=|NOCUSTOM|noerrors|NONFATAL|nonfatal|oname\=|o|REBOOTOK|redef|RESIZETOFIT|r|SHORT|SILENT|SOLID|STRIKE|TRIM|UNDERLINE|utcdate|windows|x)\b/,caseInsensitive:!0},{token:"constant.numeric.nsis",regex:/\b(?:0(?:x|X)[0-9a-fA-F]+|[0-9]+(?:\.[0-9]+)?)\b/},{token:"entity.name.function.nsis",regex:/\${[\w]+}/},{token:"storage.type.function.nsis",regex:/\$[\w]+/},{token:"punctuation.definition.string.begin.nsis",regex:/`/,push:[{token:"punctuation.definition.string.end.nsis",regex:/`/,next:"pop"},{token:"constant.character.escape.nsis",regex:/\$\\./},{defaultToken:"string.quoted.back.nsis"}]},{token:"punctuation.definition.string.begin.nsis",regex:/"/,push:[{token:"punctuation.definition.string.end.nsis",regex:/"/,next:"pop"},{token:"constant.character.escape.nsis",regex:/\$\\./},{defaultToken:"string.quoted.double.nsis"}]},{token:"punctuation.definition.string.begin.nsis",regex:/'/,push:[{token:"punctuation.definition.string.end.nsis",regex:/'/,next:"pop"},{token:"constant.character.escape.nsis",regex:/\$\\./},{defaultToken:"string.quoted.single.nsis"}]},{token:["punctuation.definition.comment.nsis","comment.line.nsis"],regex:/(;|#)(.*$)/},{token:"punctuation.definition.comment.nsis",regex:/\/\*/,push:[{token:"punctuation.definition.comment.nsis",regex:/\*\//,next:"pop"},{defaultToken:"comment.block.nsis"}]},{token:"text",regex:/(?:\!include|\!insertmacro)\b/}]},this.normalizeRules()};s.metaData={comment:"\n todo: - highlight functions\n ",fileTypes:["nsi","nsh"],name:"NSIS",scopeName:"source.nsis"},r.inherits(s,i),t.NSISHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/nsis",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/nsis_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./nsis_highlight_rules").NSISHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart=[";","#"],this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/nsis"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-objectivec.js b/library/ace/mode-objectivec.js
new file mode 100644
index 000000000..3775507d3
--- /dev/null
+++ b/library/ace/mode-objectivec.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",u=function(){var e="break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",t="asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",n="const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",r="and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eqconst_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",s="NULL|true|false|TRUE|FALSE|nullptr",u=this.$keywords=this.createKeywordMapper({"keyword.control":e,"storage.type":t,"storage.modifier":n,"keyword.operator":r,"variable.language":"this","constant.language":s},"identifier"),a="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Zd\\$_\u00a1-\uffff]*\\b",f=/\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source;this.$rules={start:[{token:"comment",regex:"//$",next:"start"},{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:"'(?:"+f+"|.)'"},{token:"string.start",regex:'"',stateName:"qqstring",next:[{token:"string",regex:/\\\s*$/,next:"qqstring"},{token:"constant.language.escape",regex:f},{token:"constant.language.escape",regex:/%[^'"\\]/},{token:"string.end",regex:'"|$',next:"start"},{defaultToken:"string"}]},{token:"string.start",regex:'R"\\(',stateName:"rawString",next:[{token:"string.end",regex:'\\)"',next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:"support.function.C99.c",regex:o},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"},{token:"keyword.operator",regex:/--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(u,s),t.c_cppHighlightRules=u}),ace.define("ace/mode/objectivec_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/c_cpp_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./c_cpp_highlight_rules"),o=s.c_cppHighlightRules,u=function(){var e="\\\\(?:[abefnrtv'\"?\\\\]|[0-3]\\d{1,2}|[4-7]\\d?|222|x[a-zA-Z0-9]+)",t=[{regex:"\\b_cmd\\b",token:"variable.other.selector.objc"},{regex:"\\b(?:self|super)\\b",token:"variable.language.objc"}],n=new o,r=n.getRules();this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:["storage.type.objc","punctuation.definition.storage.type.objc","entity.name.type.objc","text","entity.other.inherited-class.objc"],regex:"(@)(interface|protocol)(?!.+;)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*:\\s*)([A-Za-z]+)"},{token:["storage.type.objc"],regex:"(@end)"},{token:["storage.type.objc","entity.name.type.objc","entity.other.inherited-class.objc"],regex:"(@implementation)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*?::\\s*(?:[A-Za-z][A-Za-z0-9]*))?"},{token:"string.begin.objc",regex:'@"',next:"constant_NSString"},{token:"storage.type.objc",regex:"\\bid\\s*<",next:"protocol_list"},{token:"keyword.control.macro.objc",regex:"\\bNS_DURING|NS_HANDLER|NS_ENDHANDLER\\b"},{token:["punctuation.definition.keyword.objc","keyword.control.exception.objc"],regex:"(@)(try|catch|finally|throw)\\b"},{token:["punctuation.definition.keyword.objc","keyword.other.objc"],regex:"(@)(defs|encode)\\b"},{token:["storage.type.id.objc","text"],regex:"(\\bid\\b)(\\s|\\n)?"},{token:"storage.type.objc",regex:"\\bIBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class\\b"},{token:["punctuation.definition.storage.type.objc","storage.type.objc"],regex:"(@)(class|protocol)\\b"},{token:["punctuation.definition.storage.type.objc","punctuation"],regex:"(@selector)(\\s*\\()",next:"selectors"},{token:["punctuation.definition.storage.modifier.objc","storage.modifier.objc"],regex:"(@)(synchronized|public|private|protected|package)\\b"},{token:"constant.language.objc",regex:"\\bYES|NO|Nil|nil\\b"},{token:"support.variable.foundation",regex:"\\bNSApp\\b"},{token:["support.function.cocoa.leopard"],regex:"(?:\\b)(NS(?:Rect(?:ToCGRect|FromCGRect)|MakeCollectable|S(?:tringFromProtocol|ize(?:ToCGSize|FromCGSize))|Draw(?:NinePartImage|ThreePartImage)|P(?:oint(?:ToCGPoint|FromCGPoint)|rotocolFromString)|EventMaskFromType|Value))(?:\\b)"},{token:["support.function.cocoa"],regex:"(?:\\b)(NS(?:R(?:ound(?:DownToMultipleOfPageSize|UpToMultipleOfPageSize)|un(?:CriticalAlertPanel(?:RelativeToWindow)?|InformationalAlertPanel(?:RelativeToWindow)?|AlertPanel(?:RelativeToWindow)?)|e(?:set(?:MapTable|HashTable)|c(?:ycleZone|t(?:Clip(?:List)?|F(?:ill(?:UsingOperation|List(?:UsingOperation|With(?:Grays|Colors(?:UsingOperation)?))?)?|romString))|ordAllocationEvent)|turnAddress|leaseAlertPanel|a(?:dPixel|l(?:MemoryAvailable|locateCollectable))|gisterServicesProvider)|angeFromString)|Get(?:SizeAndAlignment|CriticalAlertPanel|InformationalAlertPanel|UncaughtExceptionHandler|FileType(?:s)?|WindowServerMemory|AlertPanel)|M(?:i(?:n(?:X|Y)|d(?:X|Y))|ouseInRect|a(?:p(?:Remove|Get|Member|Insert(?:IfAbsent|KnownAbsent)?)|ke(?:R(?:ect|ange)|Size|Point)|x(?:Range|X|Y)))|B(?:itsPer(?:SampleFromDepth|PixelFromDepth)|e(?:stDepth|ep|gin(?:CriticalAlertSheet|InformationalAlertSheet|AlertSheet)))|S(?:ho(?:uldRetainWithZone|w(?:sServicesMenuItem|AnimationEffect))|tringFrom(?:R(?:ect|ange)|MapTable|S(?:ize|elector)|HashTable|Class|Point)|izeFromString|e(?:t(?:ShowsServicesMenuItem|ZoneName|UncaughtExceptionHandler|FocusRingStyle)|lectorFromString|archPathForDirectoriesInDomains)|wap(?:Big(?:ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(?:ToHost|LongToHost))|Short|Host(?:ShortTo(?:Big|Little)|IntTo(?:Big|Little)|DoubleTo(?:Big|Little)|FloatTo(?:Big|Little)|Long(?:To(?:Big|Little)|LongTo(?:Big|Little)))|Int|Double|Float|L(?:ittle(?:ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(?:ToHost|LongToHost))|ong(?:Long)?)))|H(?:ighlightRect|o(?:stByteOrder|meDirectory(?:ForUser)?)|eight|ash(?:Remove|Get|Insert(?:IfAbsent|KnownAbsent)?)|FSType(?:CodeFromFileType|OfFile))|N(?:umberOfColorComponents|ext(?:MapEnumeratorPair|HashEnumeratorItem))|C(?:o(?:n(?:tainsRect|vert(?:GlyphsToPackedGlyphs|Swapped(?:DoubleToHost|FloatToHost)|Host(?:DoubleToSwapped|FloatToSwapped)))|unt(?:MapTable|HashTable|Frames|Windows(?:ForContext)?)|py(?:M(?:emoryPages|apTableWithZone)|Bits|HashTableWithZone|Object)|lorSpaceFromDepth|mpare(?:MapTables|HashTables))|lassFromString|reate(?:MapTable(?:WithZone)?|HashTable(?:WithZone)?|Zone|File(?:namePboardType|ContentsPboardType)))|TemporaryDirectory|I(?:s(?:ControllerMarker|EmptyRect|FreedObject)|n(?:setRect|crementExtraRefCount|te(?:r(?:sect(?:sRect|ionR(?:ect|ange))|faceStyleForKey)|gralRect)))|Zone(?:Realloc|Malloc|Name|Calloc|Fr(?:omPointer|ee))|O(?:penStepRootDirectory|ffsetRect)|D(?:i(?:sableScreenUpdates|videRect)|ottedFrameRect|e(?:c(?:imal(?:Round|Multiply|S(?:tring|ubtract)|Normalize|Co(?:py|mpa(?:ct|re))|IsNotANumber|Divide|Power|Add)|rementExtraRefCountWasZero)|faultMallocZone|allocate(?:MemoryPages|Object))|raw(?:Gr(?:oove|ayBezel)|B(?:itmap|utton)|ColorTiledRects|TiledRects|DarkBezel|W(?:hiteBezel|indowBackground)|LightBezel))|U(?:serName|n(?:ionR(?:ect|ange)|registerServicesProvider)|pdateDynamicServices)|Java(?:Bundle(?:Setup|Cleanup)|Setup(?:VirtualMachine)?|Needs(?:ToLoadClasses|VirtualMachine)|ClassesF(?:orBundle|romPath)|ObjectNamedInPath|ProvidesClasses)|P(?:oint(?:InRect|FromString)|erformService|lanarFromDepth|ageSize)|E(?:n(?:d(?:MapTableEnumeration|HashTableEnumeration)|umerate(?:MapTable|HashTable)|ableScreenUpdates)|qual(?:R(?:ects|anges)|Sizes|Points)|raseRect|xtraRefCount)|F(?:ileTypeForHFSTypeCode|ullUserName|r(?:ee(?:MapTable|HashTable)|ame(?:Rect(?:WithWidth(?:UsingOperation)?)?|Address)))|Wi(?:ndowList(?:ForContext)?|dth)|Lo(?:cationInRange|g(?:v|PageSize)?)|A(?:ccessibility(?:R(?:oleDescription(?:ForUIElement)?|aiseBadArgumentException)|Unignored(?:Children(?:ForOnlyChild)?|Descendant|Ancestor)|PostNotification|ActionDescription)|pplication(?:Main|Load)|vailableWindowDepths|ll(?:MapTable(?:Values|Keys)|HashTableObjects|ocate(?:MemoryPages|Collectable|Object)))))(?:\\b)"},{token:["support.class.cocoa.leopard"],regex:"(?:\\b)(NS(?:RuleEditor|G(?:arbageCollector|radient)|MapTable|HashTable|Co(?:ndition|llectionView(?:Item)?)|T(?:oolbarItemGroup|extInputClient|r(?:eeNode|ackingArea))|InvocationOperation|Operation(?:Queue)?|D(?:ictionaryController|ockTile)|P(?:ointer(?:Functions|Array)|athC(?:o(?:ntrol(?:Delegate)?|mponentCell)|ell(?:Delegate)?)|r(?:intPanelAccessorizing|edicateEditor(?:RowTemplate)?))|ViewController|FastEnumeration|Animat(?:ionContext|ablePropertyContainer)))(?:\\b)"},{token:["support.class.cocoa"],regex:"(?:\\b)(NS(?:R(?:u(?:nLoop|ler(?:Marker|View))|e(?:sponder|cursiveLock|lativeSpecifier)|an(?:domSpecifier|geSpecifier))|G(?:etCommand|lyph(?:Generator|Storage|Info)|raphicsContext)|XML(?:Node|D(?:ocument|TD(?:Node)?)|Parser|Element)|M(?:iddleSpecifier|ov(?:ie(?:View)?|eCommand)|utable(?:S(?:tring|et)|C(?:haracterSet|opying)|IndexSet|D(?:ictionary|ata)|URLRequest|ParagraphStyle|A(?:ttributedString|rray))|e(?:ssagePort(?:NameServer)?|nu(?:Item(?:Cell)?|View)?|t(?:hodSignature|adata(?:Item|Query(?:ResultGroup|AttributeValueTuple)?)))|a(?:ch(?:BootstrapServer|Port)|trix))|B(?:itmapImageRep|ox|u(?:ndle|tton(?:Cell)?)|ezierPath|rowser(?:Cell)?)|S(?:hadow|c(?:anner|r(?:ipt(?:SuiteRegistry|C(?:o(?:ercionHandler|mmand(?:Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(?:er|View)|een))|t(?:epper(?:Cell)?|atus(?:Bar|Item)|r(?:ing|eam))|imple(?:HorizontalTypesetter|CString)|o(?:cketPort(?:NameServer)?|und|rtDescriptor)|p(?:e(?:cifierTest|ech(?:Recognizer|Synthesizer)|ll(?:Server|Checker))|litView)|e(?:cureTextField(?:Cell)?|t(?:Command)?|archField(?:Cell)?|rializer|gmentedC(?:ontrol|ell))|lider(?:Cell)?|avePanel)|H(?:ost|TTP(?:Cookie(?:Storage)?|URLResponse)|elpManager)|N(?:ib(?:Con(?:nector|trolConnector)|OutletConnector)?|otification(?:Center|Queue)?|u(?:ll|mber(?:Formatter)?)|etService(?:Browser)?|ameSpecifier)|C(?:ha(?:ngeSpelling|racterSet)|o(?:n(?:stantString|nection|trol(?:ler)?|ditionLock)|d(?:ing|er)|unt(?:Command|edSet)|pying|lor(?:Space|P(?:ick(?:ing(?:Custom|Default)|er)|anel)|Well|List)?|m(?:p(?:oundPredicate|arisonPredicate)|boBox(?:Cell)?))|u(?:stomImageRep|rsor)|IImageRep|ell|l(?:ipView|o(?:seCommand|neCommand)|assDescription)|a(?:ched(?:ImageRep|URLResponse)|lendar(?:Date)?)|reateCommand)|T(?:hread|ypesetter|ime(?:Zone|r)|o(?:olbar(?:Item(?:Validations)?)?|kenField(?:Cell)?)|ext(?:Block|Storage|Container|Tab(?:le(?:Block)?)?|Input|View|Field(?:Cell)?|List|Attachment(?:Cell)?)?|a(?:sk|b(?:le(?:Header(?:Cell|View)|Column|View)|View(?:Item)?))|reeController)|I(?:n(?:dex(?:S(?:pecifier|et)|Path)|put(?:Manager|S(?:tream|erv(?:iceProvider|er(?:MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(?:Rep|Cell|View)?)|O(?:ut(?:putStream|lineView)|pen(?:GL(?:Context|Pixel(?:Buffer|Format)|View)|Panel)|bj(?:CTypeSerializationCallBack|ect(?:Controller)?))|D(?:i(?:st(?:antObject(?:Request)?|ributed(?:NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(?:Controller)?|e(?:serializer|cimalNumber(?:Behaviors|Handler)?|leteCommand)|at(?:e(?:Components|Picker(?:Cell)?|Formatter)?|a)|ra(?:wer|ggingInfo))|U(?:ser(?:InterfaceValidations|Defaults(?:Controller)?)|RL(?:Re(?:sponse|quest)|Handle(?:Client)?|C(?:onnection|ache|redential(?:Storage)?)|Download(?:Delegate)?|Prot(?:ocol(?:Client)?|ectionSpace)|AuthenticationChallenge(?:Sender)?)?|n(?:iqueIDSpecifier|doManager|archiver))|P(?:ipe|o(?:sitionalSpecifier|pUpButton(?:Cell)?|rt(?:Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(?:steboard|nel|ragraphStyle|geLayout)|r(?:int(?:Info|er|Operation|Panel)|o(?:cessInfo|tocolChecker|perty(?:Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(?:numerator|vent|PSImageRep|rror|x(?:ception|istsCommand|pression))|V(?:iew(?:Animation)?|al(?:idated(?:ToobarItem|UserInterfaceItem)|ue(?:Transformer)?))|Keyed(?:Unarchiver|Archiver)|Qui(?:ckDrawView|tCommand)|F(?:ile(?:Manager|Handle|Wrapper)|o(?:nt(?:Manager|Descriptor|Panel)?|rm(?:Cell|atter)))|W(?:hoseSpecifier|indow(?:Controller)?|orkspace)|L(?:o(?:c(?:k(?:ing)?|ale)|gicalTest)|evelIndicator(?:Cell)?|ayoutManager)|A(?:ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(?:ication|e(?:Script|Event(?:Manager|Descriptor)))|ffineTransform|lert|r(?:chiver|ray(?:Controller)?))))(?:\\b)"},{token:["support.type.cocoa.leopard"],regex:"(?:\\b)(NS(?:R(?:u(?:nLoop|ler(?:Marker|View))|e(?:sponder|cursiveLock|lativeSpecifier)|an(?:domSpecifier|geSpecifier))|G(?:etCommand|lyph(?:Generator|Storage|Info)|raphicsContext)|XML(?:Node|D(?:ocument|TD(?:Node)?)|Parser|Element)|M(?:iddleSpecifier|ov(?:ie(?:View)?|eCommand)|utable(?:S(?:tring|et)|C(?:haracterSet|opying)|IndexSet|D(?:ictionary|ata)|URLRequest|ParagraphStyle|A(?:ttributedString|rray))|e(?:ssagePort(?:NameServer)?|nu(?:Item(?:Cell)?|View)?|t(?:hodSignature|adata(?:Item|Query(?:ResultGroup|AttributeValueTuple)?)))|a(?:ch(?:BootstrapServer|Port)|trix))|B(?:itmapImageRep|ox|u(?:ndle|tton(?:Cell)?)|ezierPath|rowser(?:Cell)?)|S(?:hadow|c(?:anner|r(?:ipt(?:SuiteRegistry|C(?:o(?:ercionHandler|mmand(?:Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(?:er|View)|een))|t(?:epper(?:Cell)?|atus(?:Bar|Item)|r(?:ing|eam))|imple(?:HorizontalTypesetter|CString)|o(?:cketPort(?:NameServer)?|und|rtDescriptor)|p(?:e(?:cifierTest|ech(?:Recognizer|Synthesizer)|ll(?:Server|Checker))|litView)|e(?:cureTextField(?:Cell)?|t(?:Command)?|archField(?:Cell)?|rializer|gmentedC(?:ontrol|ell))|lider(?:Cell)?|avePanel)|H(?:ost|TTP(?:Cookie(?:Storage)?|URLResponse)|elpManager)|N(?:ib(?:Con(?:nector|trolConnector)|OutletConnector)?|otification(?:Center|Queue)?|u(?:ll|mber(?:Formatter)?)|etService(?:Browser)?|ameSpecifier)|C(?:ha(?:ngeSpelling|racterSet)|o(?:n(?:stantString|nection|trol(?:ler)?|ditionLock)|d(?:ing|er)|unt(?:Command|edSet)|pying|lor(?:Space|P(?:ick(?:ing(?:Custom|Default)|er)|anel)|Well|List)?|m(?:p(?:oundPredicate|arisonPredicate)|boBox(?:Cell)?))|u(?:stomImageRep|rsor)|IImageRep|ell|l(?:ipView|o(?:seCommand|neCommand)|assDescription)|a(?:ched(?:ImageRep|URLResponse)|lendar(?:Date)?)|reateCommand)|T(?:hread|ypesetter|ime(?:Zone|r)|o(?:olbar(?:Item(?:Validations)?)?|kenField(?:Cell)?)|ext(?:Block|Storage|Container|Tab(?:le(?:Block)?)?|Input|View|Field(?:Cell)?|List|Attachment(?:Cell)?)?|a(?:sk|b(?:le(?:Header(?:Cell|View)|Column|View)|View(?:Item)?))|reeController)|I(?:n(?:dex(?:S(?:pecifier|et)|Path)|put(?:Manager|S(?:tream|erv(?:iceProvider|er(?:MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(?:Rep|Cell|View)?)|O(?:ut(?:putStream|lineView)|pen(?:GL(?:Context|Pixel(?:Buffer|Format)|View)|Panel)|bj(?:CTypeSerializationCallBack|ect(?:Controller)?))|D(?:i(?:st(?:antObject(?:Request)?|ributed(?:NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(?:Controller)?|e(?:serializer|cimalNumber(?:Behaviors|Handler)?|leteCommand)|at(?:e(?:Components|Picker(?:Cell)?|Formatter)?|a)|ra(?:wer|ggingInfo))|U(?:ser(?:InterfaceValidations|Defaults(?:Controller)?)|RL(?:Re(?:sponse|quest)|Handle(?:Client)?|C(?:onnection|ache|redential(?:Storage)?)|Download(?:Delegate)?|Prot(?:ocol(?:Client)?|ectionSpace)|AuthenticationChallenge(?:Sender)?)?|n(?:iqueIDSpecifier|doManager|archiver))|P(?:ipe|o(?:sitionalSpecifier|pUpButton(?:Cell)?|rt(?:Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(?:steboard|nel|ragraphStyle|geLayout)|r(?:int(?:Info|er|Operation|Panel)|o(?:cessInfo|tocolChecker|perty(?:Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(?:numerator|vent|PSImageRep|rror|x(?:ception|istsCommand|pression))|V(?:iew(?:Animation)?|al(?:idated(?:ToobarItem|UserInterfaceItem)|ue(?:Transformer)?))|Keyed(?:Unarchiver|Archiver)|Qui(?:ckDrawView|tCommand)|F(?:ile(?:Manager|Handle|Wrapper)|o(?:nt(?:Manager|Descriptor|Panel)?|rm(?:Cell|atter)))|W(?:hoseSpecifier|indow(?:Controller)?|orkspace)|L(?:o(?:c(?:k(?:ing)?|ale)|gicalTest)|evelIndicator(?:Cell)?|ayoutManager)|A(?:ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(?:ication|e(?:Script|Event(?:Manager|Descriptor)))|ffineTransform|lert|r(?:chiver|ray(?:Controller)?))))(?:\\b)"},{token:["support.class.quartz"],regex:"(?:\\b)(C(?:I(?:Sampler|Co(?:ntext|lor)|Image(?:Accumulator)?|PlugIn(?:Registration)?|Vector|Kernel|Filter(?:Generator|Shape)?)|A(?:Renderer|MediaTiming(?:Function)?|BasicAnimation|ScrollLayer|Constraint(?:LayoutManager)?|T(?:iledLayer|extLayer|rans(?:ition|action))|OpenGLLayer|PropertyAnimation|KeyframeAnimation|Layer|A(?:nimation(?:Group)?|ction))))(?:\\b)"},{token:["support.type.quartz"],regex:"(?:\\b)(C(?:G(?:Float|Point|Size|Rect)|IFormat|AConstraintAttribute))(?:\\b)"},{token:["support.type.cocoa"],regex:"(?:\\b)(NS(?:R(?:ect(?:Edge)?|ange)|G(?:lyph(?:Relation|LayoutMode)?|radientType)|M(?:odalSession|a(?:trixMode|p(?:Table|Enumerator)))|B(?:itmapImageFileType|orderType|uttonType|ezelStyle|ackingStoreType|rowserColumnResizingType)|S(?:cr(?:oll(?:er(?:Part|Arrow)|ArrowPosition)|eenAuxiliaryOpaque)|tringEncoding|ize|ocketNativeHandle|election(?:Granularity|Direction|Affinity)|wapped(?:Double|Float)|aveOperationType)|Ha(?:sh(?:Table|Enumerator)|ndler(?:2)?)|C(?:o(?:ntrol(?:Size|Tint)|mp(?:ositingOperation|arisonResult))|ell(?:State|Type|ImagePosition|Attribute))|T(?:hreadPrivate|ypesetterGlyphInfo|i(?:ckMarkPosition|tlePosition|meInterval)|o(?:ol(?:TipTag|bar(?:SizeMode|DisplayMode))|kenStyle)|IFFCompression|ext(?:TabType|Alignment)|ab(?:State|leViewDropOperation|ViewType)|rackingRectTag)|ImageInterpolation|Zone|OpenGL(?:ContextAuxiliary|PixelFormatAuxiliary)|D(?:ocumentChangeType|atePickerElementFlags|ra(?:werState|gOperation))|UsableScrollerParts|P(?:oint|r(?:intingPageOrder|ogressIndicator(?:Style|Th(?:ickness|readInfo))))|EventType|KeyValueObservingOptions|Fo(?:nt(?:SymbolicTraits|TraitMask|Action)|cusRingType)|W(?:indow(?:OrderingMode|Depth)|orkspace(?:IconCreationOptions|LaunchOptions)|ritingDirection)|L(?:ineBreakMode|ayout(?:Status|Direction))|A(?:nimation(?:Progress|Effect)|ppl(?:ication(?:TerminateReply|DelegateReply|PrintReply)|eEventManagerSuspensionID)|ffineTransformStruct|lertStyle)))(?:\\b)"},{token:["support.constant.cocoa"],regex:"(?:\\b)(NS(?:NotFound|Ordered(?:Ascending|Descending|Same)))(?:\\b)"},{token:["support.constant.notification.cocoa.leopard"],regex:"(?:\\b)(NS(?:MenuDidBeginTracking|ViewDidUpdateTrackingAreas)?Notification)(?:\\b)"},{token:["support.constant.notification.cocoa"],regex:"(?:\\b)(NS(?:Menu(?:Did(?:RemoveItem|SendAction|ChangeItem|EndTracking|AddItem)|WillSendAction)|S(?:ystemColorsDidChange|plitView(?:DidResizeSubviews|WillResizeSubviews))|C(?:o(?:nt(?:extHelpModeDid(?:Deactivate|Activate)|rolT(?:intDidChange|extDid(?:BeginEditing|Change|EndEditing)))|lor(?:PanelColorDidChange|ListDidChange)|mboBox(?:Selection(?:IsChanging|DidChange)|Will(?:Dismiss|PopUp)))|lassDescriptionNeededForClass)|T(?:oolbar(?:DidRemoveItem|WillAddItem)|ext(?:Storage(?:DidProcessEditing|WillProcessEditing)|Did(?:BeginEditing|Change|EndEditing)|View(?:DidChange(?:Selection|TypingAttributes)|WillChangeNotifyingTextView))|ableView(?:Selection(?:IsChanging|DidChange)|ColumnDid(?:Resize|Move)))|ImageRepRegistryDidChange|OutlineView(?:Selection(?:IsChanging|DidChange)|ColumnDid(?:Resize|Move)|Item(?:Did(?:Collapse|Expand)|Will(?:Collapse|Expand)))|Drawer(?:Did(?:Close|Open)|Will(?:Close|Open))|PopUpButton(?:CellWillPopUp|WillPopUp)|View(?:GlobalFrameDidChange|BoundsDidChange|F(?:ocusDidChange|rameDidChange))|FontSetChanged|W(?:indow(?:Did(?:Resi(?:ze|gn(?:Main|Key))|M(?:iniaturize|ove)|Become(?:Main|Key)|ChangeScreen(?:|Profile)|Deminiaturize|Update|E(?:ndSheet|xpose))|Will(?:M(?:iniaturize|ove)|BeginSheet|Close))|orkspace(?:SessionDid(?:ResignActive|BecomeActive)|Did(?:Mount|TerminateApplication|Unmount|PerformFileOperation|Wake|LaunchApplication)|Will(?:Sleep|Unmount|PowerOff|LaunchApplication)))|A(?:ntialiasThresholdChanged|ppl(?:ication(?:Did(?:ResignActive|BecomeActive|Hide|ChangeScreenParameters|U(?:nhide|pdate)|FinishLaunching)|Will(?:ResignActive|BecomeActive|Hide|Terminate|U(?:nhide|pdate)|FinishLaunching))|eEventManagerWillProcessFirstEvent)))Notification)(?:\\b)"},{token:["support.constant.cocoa.leopard"],regex:"(?:\\b)(NS(?:RuleEditor(?:RowType(?:Simple|Compound)|NestingMode(?:Si(?:ngle|mple)|Compound|List))|GradientDraws(?:BeforeStartingLocation|AfterEndingLocation)|M(?:inusSetExpressionType|a(?:chPortDeallocate(?:ReceiveRight|SendRight|None)|pTable(?:StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality)))|B(?:oxCustom|undleExecutableArchitecture(?:X86|I386|PPC(?:64)?)|etweenPredicateOperatorType|ackgroundStyle(?:Raised|Dark|L(?:ight|owered)))|S(?:tring(?:DrawingTruncatesLastVisibleLine|EncodingConversion(?:ExternalRepresentation|AllowLossy))|ubqueryExpressionType|p(?:e(?:ech(?:SentenceBoundary|ImmediateBoundary|WordBoundary)|llingState(?:GrammarFlag|SpellingFlag))|litViewDividerStyleThi(?:n|ck))|e(?:rvice(?:RequestTimedOutError|M(?:iscellaneousError|alformedServiceDictionaryError)|InvalidPasteboardDataError|ErrorM(?:inimum|aximum)|Application(?:NotFoundError|LaunchFailedError))|gmentStyle(?:Round(?:Rect|ed)|SmallSquare|Capsule|Textured(?:Rounded|Square)|Automatic)))|H(?:UDWindowMask|ashTable(?:StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality))|N(?:oModeColorPanel|etServiceNoAutoRename)|C(?:hangeRedone|o(?:ntainsPredicateOperatorType|l(?:orRenderingIntent(?:RelativeColorimetric|Saturation|Default|Perceptual|AbsoluteColorimetric)|lectorDisabledOption))|ellHit(?:None|ContentArea|TrackableArea|EditableTextArea))|T(?:imeZoneNameStyle(?:S(?:hort(?:Standard|DaylightSaving)|tandard)|DaylightSaving)|extFieldDatePickerStyle|ableViewSelectionHighlightStyle(?:Regular|SourceList)|racking(?:Mouse(?:Moved|EnteredAndExited)|CursorUpdate|InVisibleRect|EnabledDuringMouseDrag|A(?:ssumeInside|ctive(?:In(?:KeyWindow|ActiveApp)|WhenFirstResponder|Always))))|I(?:n(?:tersectSetExpressionType|dexedColorSpaceModel)|mageScale(?:None|Proportionally(?:Down|UpOrDown)|AxesIndependently))|Ope(?:nGLPFAAllowOfflineRenderers|rationQueue(?:DefaultMaxConcurrentOperationCount|Priority(?:High|Normal|Very(?:High|Low)|Low)))|D(?:iacriticInsensitiveSearch|ownloadsDirectory)|U(?:nionSetExpressionType|TF(?:16(?:BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)|32(?:BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)))|P(?:ointerFunctions(?:Ma(?:chVirtualMemory|llocMemory)|Str(?:ongMemory|uctPersonality)|C(?:StringPersonality|opyIn)|IntegerPersonality|ZeroingWeakMemory|O(?:paque(?:Memory|Personality)|bjectP(?:ointerPersonality|ersonality)))|at(?:hStyle(?:Standard|NavigationBar|PopUp)|ternColorSpaceModel)|rintPanelShows(?:Scaling|Copies|Orientation|P(?:a(?:perSize|ge(?:Range|SetupAccessory))|review)))|Executable(?:RuntimeMismatchError|NotLoadableError|ErrorM(?:inimum|aximum)|L(?:inkError|oadError)|ArchitectureMismatchError)|KeyValueObservingOption(?:Initial|Prior)|F(?:i(?:ndPanelSubstringMatchType(?:StartsWith|Contains|EndsWith|FullWord)|leRead(?:TooLargeError|UnknownStringEncodingError))|orcedOrderingSearch)|Wi(?:ndow(?:BackingLocation(?:MainMemory|Default|VideoMemory)|Sharing(?:Read(?:Only|Write)|None)|CollectionBehavior(?:MoveToActiveSpace|CanJoinAllSpaces|Default))|dthInsensitiveSearch)|AggregateExpressionType))(?:\\b)"},{token:["support.constant.cocoa"],regex:"(?:\\b)(NS(?:R(?:GB(?:ModeColorPanel|ColorSpaceModel)|ight(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|T(?:ext(?:Movement|Alignment)|ab(?:sBezelBorder|StopType))|ArrowFunctionKey)|ound(?:RectBezelStyle|Bankers|ed(?:BezelStyle|TokenStyle|DisclosureBezelStyle)|Down|Up|Plain|Line(?:CapStyle|JoinStyle))|un(?:StoppedResponse|ContinuesResponse|AbortedResponse)|e(?:s(?:izableWindowMask|et(?:CursorRectsRunLoopOrdering|FunctionKey))|ce(?:ssedBezelStyle|iver(?:sCantHandleCommandScriptError|EvaluationScriptError))|turnTextMovement|doFunctionKey|quiredArgumentsMissingScriptError|l(?:evancyLevelIndicatorStyle|ative(?:Before|After))|gular(?:SquareBezelStyle|ControlSize)|moveTraitFontAction)|a(?:n(?:domSubelement|geDateMode)|tingLevelIndicatorStyle|dio(?:ModeMatrix|Button)))|G(?:IFFileType|lyph(?:Below|Inscribe(?:B(?:elow|ase)|Over(?:strike|Below)|Above)|Layout(?:WithPrevious|A(?:tAPoint|gainstAPoint))|A(?:ttribute(?:BidiLevel|Soft|Inscribe|Elastic)|bove))|r(?:ooveBorder|eaterThan(?:Comparison|OrEqualTo(?:Comparison|PredicateOperatorType)|PredicateOperatorType)|a(?:y(?:ModeColorPanel|ColorSpaceModel)|dient(?:None|Con(?:cave(?:Strong|Weak)|vex(?:Strong|Weak)))|phiteControlTint)))|XML(?:N(?:o(?:tationDeclarationKind|de(?:CompactEmptyElement|IsCDATA|OptionsNone|Use(?:SingleQuotes|DoubleQuotes)|Pre(?:serve(?:NamespaceOrder|C(?:haracterReferences|DATA)|DTD|Prefixes|E(?:ntities|mptyElements)|Quotes|Whitespace|A(?:ttributeOrder|ll))|ttyPrint)|ExpandEmptyElement))|amespaceKind)|CommentKind|TextKind|InvalidKind|D(?:ocument(?:X(?:MLKind|HTMLKind|Include)|HTMLKind|T(?:idy(?:XML|HTML)|extKind)|IncludeContentTypeDeclaration|Validate|Kind)|TDKind)|P(?:arser(?:GTRequiredError|XMLDeclNot(?:StartedError|FinishedError)|Mi(?:splaced(?:XMLDeclarationError|CDATAEndStringError)|xedContentDeclNot(?:StartedError|FinishedError))|S(?:t(?:andaloneValueError|ringNot(?:StartedError|ClosedError))|paceRequiredError|eparatorRequiredError)|N(?:MTOKENRequiredError|o(?:t(?:ationNot(?:StartedError|FinishedError)|WellBalancedError)|DTDError)|amespaceDeclarationError|AMERequiredError)|C(?:haracterRef(?:In(?:DTDError|PrologError|EpilogError)|AtEOFError)|o(?:nditionalSectionNot(?:StartedError|FinishedError)|mment(?:NotFinishedError|ContainsDoubleHyphenError))|DATANotFinishedError)|TagNameMismatchError|In(?:ternalError|valid(?:HexCharacterRefError|C(?:haracter(?:RefError|InEntityError|Error)|onditionalSectionError)|DecimalCharacterRefError|URIError|Encoding(?:NameError|Error)))|OutOfMemoryError|D(?:ocumentStartError|elegateAbortedParseError|OCTYPEDeclNotFinishedError)|U(?:RI(?:RequiredError|FragmentError)|n(?:declaredEntityError|parsedEntityError|knownEncodingError|finishedTagError))|P(?:CDATARequiredError|ublicIdentifierRequiredError|arsedEntityRef(?:MissingSemiError|NoNameError|In(?:Internal(?:SubsetError|Error)|PrologError|EpilogError)|AtEOFError)|r(?:ocessingInstructionNot(?:StartedError|FinishedError)|ematureDocumentEndError))|E(?:n(?:codingNotSupportedError|tity(?:Ref(?:In(?:DTDError|PrologError|EpilogError)|erence(?:MissingSemiError|WithoutNameError)|LoopError|AtEOFError)|BoundaryError|Not(?:StartedError|FinishedError)|Is(?:ParameterError|ExternalError)|ValueRequiredError))|qualExpectedError|lementContentDeclNot(?:StartedError|FinishedError)|xt(?:ernalS(?:tandaloneEntityError|ubsetNotFinishedError)|raContentError)|mptyDocumentError)|L(?:iteralNot(?:StartedError|FinishedError)|T(?:RequiredError|SlashRequiredError)|essThanSymbolInAttributeError)|Attribute(?:RedefinedError|HasNoValueError|Not(?:StartedError|FinishedError)|ListNot(?:StartedError|FinishedError)))|rocessingInstructionKind)|E(?:ntity(?:GeneralKind|DeclarationKind|UnparsedKind|P(?:ar(?:sedKind|ameterKind)|redefined))|lement(?:Declaration(?:MixedKind|UndefinedKind|E(?:lementKind|mptyKind)|Kind|AnyKind)|Kind))|Attribute(?:N(?:MToken(?:sKind|Kind)|otationKind)|CDATAKind|ID(?:Ref(?:sKind|Kind)|Kind)|DeclarationKind|En(?:tit(?:yKind|iesKind)|umerationKind)|Kind))|M(?:i(?:n(?:XEdge|iaturizableWindowMask|YEdge|uteCalendarUnit)|terLineJoinStyle|ddleSubelement|xedState)|o(?:nthCalendarUnit|deSwitchFunctionKey|use(?:Moved(?:Mask)?|E(?:ntered(?:Mask)?|ventSubtype|xited(?:Mask)?))|veToBezierPathElement|mentary(?:ChangeButton|Push(?:Button|InButton)|Light(?:Button)?))|enuFunctionKey|a(?:c(?:intoshInterfaceStyle|OSRomanStringEncoding)|tchesPredicateOperatorType|ppedRead|x(?:XEdge|YEdge))|ACHOperatingSystem)|B(?:MPFileType|o(?:ttomTabsBezelBorder|ldFontMask|rderlessWindowMask|x(?:Se(?:condary|parator)|OldStyle|Primary))|uttLineCapStyle|e(?:zelBorder|velLineJoinStyle|low(?:Bottom|Top)|gin(?:sWith(?:Comparison|PredicateOperatorType)|FunctionKey))|lueControlTint|ack(?:spaceCharacter|tabTextMovement|ingStore(?:Retained|Buffered|Nonretained)|TabCharacter|wardsSearch|groundTab)|r(?:owser(?:NoColumnResizing|UserColumnResizing|AutoColumnResizing)|eakFunctionKey))|S(?:h(?:ift(?:JISStringEncoding|KeyMask)|ow(?:ControlGlyphs|InvisibleGlyphs)|adowlessSquareBezelStyle)|y(?:s(?:ReqFunctionKey|tem(?:D(?:omainMask|efined(?:Mask)?)|FunctionKey))|mbolStringEncoding)|c(?:a(?:nnedOption|le(?:None|ToFit|Proportionally))|r(?:oll(?:er(?:NoPart|Increment(?:Page|Line|Arrow)|Decrement(?:Page|Line|Arrow)|Knob(?:Slot)?|Arrows(?:M(?:inEnd|axEnd)|None|DefaultSetting))|Wheel(?:Mask)?|LockFunctionKey)|eenChangedEventType))|t(?:opFunctionKey|r(?:ingDrawing(?:OneShot|DisableScreenFontSubstitution|Uses(?:DeviceMetrics|FontLeading|LineFragmentOrigin))|eam(?:Status(?:Reading|NotOpen|Closed|Open(?:ing)?|Error|Writing|AtEnd)|Event(?:Has(?:BytesAvailable|SpaceAvailable)|None|OpenCompleted|E(?:ndEncountered|rrorOccurred)))))|i(?:ngle(?:DateMode|UnderlineStyle)|ze(?:DownFontAction|UpFontAction))|olarisOperatingSystem|unOSOperatingSystem|pecialPageOrder|e(?:condCalendarUnit|lect(?:By(?:Character|Paragraph|Word)|i(?:ng(?:Next|Previous)|onAffinity(?:Downstream|Upstream))|edTab|FunctionKey)|gmentSwitchTracking(?:Momentary|Select(?:One|Any)))|quareLineCapStyle|witchButton|ave(?:ToOperation|Op(?:tions(?:Yes|No|Ask)|eration)|AsOperation)|mall(?:SquareBezelStyle|C(?:ontrolSize|apsFontMask)|IconButtonBezelStyle))|H(?:ighlightModeMatrix|SBModeColorPanel|o(?:ur(?:Minute(?:SecondDatePickerElementFlag|DatePickerElementFlag)|CalendarUnit)|rizontalRuler|meFunctionKey)|TTPCookieAcceptPolicy(?:Never|OnlyFromMainDocumentDomain|Always)|e(?:lp(?:ButtonBezelStyle|KeyMask|FunctionKey)|avierFontAction)|PUXOperatingSystem)|Year(?:MonthDa(?:yDatePickerElementFlag|tePickerElementFlag)|CalendarUnit)|N(?:o(?:n(?:StandardCharacterSetFontMask|ZeroWindingRule|activatingPanelMask|LossyASCIIStringEncoding)|Border|t(?:ification(?:SuspensionBehavior(?:Hold|Coalesce|D(?:eliverImmediately|rop))|NoCoalescing|CoalescingOn(?:Sender|Name)|DeliverImmediately|PostToAllSessions)|PredicateType|EqualToPredicateOperatorType)|S(?:cr(?:iptError|ollerParts)|ubelement|pecifierError)|CellMask|T(?:itle|opLevelContainersSpecifierError|abs(?:BezelBorder|NoBorder|LineBorder))|I(?:nterfaceStyle|mage)|UnderlineStyle|FontChangeAction)|u(?:ll(?:Glyph|CellType)|m(?:eric(?:Search|PadKeyMask)|berFormatter(?:Round(?:Half(?:Down|Up|Even)|Ceiling|Down|Up|Floor)|Behavior(?:10|Default)|S(?:cientificStyle|pellOutStyle)|NoStyle|CurrencyStyle|DecimalStyle|P(?:ercentStyle|ad(?:Before(?:Suffix|Prefix)|After(?:Suffix|Prefix))))))|e(?:t(?:Services(?:BadArgumentError|NotFoundError|C(?:ollisionError|ancelledError)|TimeoutError|InvalidError|UnknownError|ActivityInProgress)|workDomainMask)|wlineCharacter|xt(?:StepInterfaceStyle|FunctionKey))|EXTSTEPStringEncoding|a(?:t(?:iveShortGlyphPacking|uralTextAlignment)|rrowFontMask))|C(?:hange(?:ReadOtherContents|GrayCell(?:Mask)?|BackgroundCell(?:Mask)?|Cleared|Done|Undone|Autosaved)|MYK(?:ModeColorPanel|ColorSpaceModel)|ircular(?:BezelStyle|Slider)|o(?:n(?:stantValueExpressionType|t(?:inuousCapacityLevelIndicatorStyle|entsCellMask|ain(?:sComparison|erSpecifierError)|rol(?:Glyph|KeyMask))|densedFontMask)|lor(?:Panel(?:RGBModeMask|GrayModeMask|HSBModeMask|C(?:MYKModeMask|olorListModeMask|ustomPaletteModeMask|rayonModeMask)|WheelModeMask|AllModesMask)|ListModeColorPanel)|reServiceDirectory|m(?:p(?:osite(?:XOR|Source(?:In|O(?:ut|ver)|Atop)|Highlight|C(?:opy|lear)|Destination(?:In|O(?:ut|ver)|Atop)|Plus(?:Darker|Lighter))|ressedFontMask)|mandKeyMask))|u(?:stom(?:SelectorPredicateOperatorType|PaletteModeColorPanel)|r(?:sor(?:Update(?:Mask)?|PointingDevice)|veToBezierPathElement))|e(?:nterT(?:extAlignment|abStopType)|ll(?:State|H(?:ighlighted|as(?:Image(?:Horizontal|OnLeftOrBottom)|OverlappingImage))|ChangesContents|Is(?:Bordered|InsetButton)|Disabled|Editable|LightsBy(?:Gray|Background|Contents)|AllowsMixedState))|l(?:ipPagination|o(?:s(?:ePathBezierPathElement|ableWindowMask)|ckAndCalendarDatePickerStyle)|ear(?:ControlTint|DisplayFunctionKey|LineFunctionKey))|a(?:seInsensitive(?:Search|PredicateOption)|n(?:notCreateScriptCommandError|cel(?:Button|TextMovement))|chesDirectory|lculation(?:NoError|Overflow|DivideByZero|Underflow|LossOfPrecision)|rriageReturnCharacter)|r(?:itical(?:Request|AlertStyle)|ayonModeColorPanel))|T(?:hick(?:SquareBezelStyle|erSquareBezelStyle)|ypesetter(?:Behavior|HorizontalTabAction|ContainerBreakAction|ZeroAdvancementAction|OriginalBehavior|ParagraphBreakAction|WhitespaceAction|L(?:ineBreakAction|atestBehavior))|i(?:ckMark(?:Right|Below|Left|Above)|tledWindowMask|meZoneDatePickerElementFlag)|o(?:olbarItemVisibilityPriority(?:Standard|High|User|Low)|pTabsBezelBorder|ggleButton)|IFF(?:Compression(?:N(?:one|EXT)|CCITTFAX(?:3|4)|OldJPEG|JPEG|PackBits|LZW)|FileType)|e(?:rminate(?:Now|Cancel|Later)|xt(?:Read(?:InapplicableDocumentTypeError|WriteErrorM(?:inimum|aximum))|Block(?:M(?:i(?:nimum(?:Height|Width)|ddleAlignment)|a(?:rgin|ximum(?:Height|Width)))|B(?:o(?:ttomAlignment|rder)|aselineAlignment)|Height|TopAlignment|P(?:ercentageValueType|adding)|Width|AbsoluteValueType)|StorageEdited(?:Characters|Attributes)|CellType|ured(?:RoundedBezelStyle|BackgroundWindowMask|SquareBezelStyle)|Table(?:FixedLayoutAlgorithm|AutomaticLayoutAlgorithm)|Field(?:RoundedBezel|SquareBezel|AndStepperDatePickerStyle)|WriteInapplicableDocumentTypeError|ListPrependEnclosingMarker))|woByteGlyphPacking|ab(?:Character|TextMovement|le(?:tP(?:oint(?:Mask|EventSubtype)?|roximity(?:Mask|EventSubtype)?)|Column(?:NoResizing|UserResizingMask|AutoresizingMask)|View(?:ReverseSequentialColumnAutoresizingStyle|GridNone|S(?:olid(?:HorizontalGridLineMask|VerticalGridLineMask)|equentialColumnAutoresizingStyle)|NoColumnAutoresizing|UniformColumnAutoresizingStyle|FirstColumnOnlyAutoresizingStyle|LastColumnOnlyAutoresizingStyle)))|rackModeMatrix)|I(?:n(?:sert(?:CharFunctionKey|FunctionKey|LineFunctionKey)|t(?:Type|ernalS(?:criptError|pecifierError))|dexSubelement|validIndexSpecifierError|formational(?:Request|AlertStyle)|PredicateOperatorType)|talicFontMask|SO(?:2022JPStringEncoding|Latin(?:1StringEncoding|2StringEncoding))|dentityMappingCharacterCollection|llegalTextMovement|mage(?:R(?:ight|ep(?:MatchesDevice|LoadStatus(?:ReadingHeader|Completed|InvalidData|Un(?:expectedEOF|knownType)|WillNeedAllData)))|Below|C(?:ellType|ache(?:BySize|Never|Default|Always))|Interpolation(?:High|None|Default|Low)|O(?:nly|verlaps)|Frame(?:Gr(?:oove|ayBezel)|Button|None|Photo)|L(?:oadStatus(?:ReadError|C(?:ompleted|ancelled)|InvalidData|UnexpectedEOF)|eft)|A(?:lign(?:Right|Bottom(?:Right|Left)?|Center|Top(?:Right|Left)?|Left)|bove)))|O(?:n(?:State|eByteGlyphPacking|OffButton|lyScrollerArrows)|ther(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|TextMovement)|SF1OperatingSystem|pe(?:n(?:GL(?:GO(?:Re(?:setLibrary|tainRenderers)|ClearFormatCache|FormatCacheSize)|PFA(?:R(?:obust|endererID)|M(?:inimumPolicy|ulti(?:sample|Screen)|PSafe|aximumPolicy)|BackingStore|S(?:creenMask|te(?:ncilSize|reo)|ingleRenderer|upersample|ample(?:s|Buffers|Alpha))|NoRecovery|C(?:o(?:lor(?:Size|Float)|mpliant)|losestPolicy)|OffScreen|D(?:oubleBuffer|epthSize)|PixelBuffer|VirtualScreenCount|FullScreen|Window|A(?:cc(?:umSize|elerated)|ux(?:Buffers|DepthStencil)|l(?:phaSize|lRenderers))))|StepUnicodeReservedBase)|rationNotSupportedForKeyS(?:criptError|pecifierError))|ffState|KButton|rPredicateType|bjC(?:B(?:itfield|oolType)|S(?:hortType|tr(?:ingType|uctType)|electorType)|NoType|CharType|ObjectType|DoubleType|UnionType|PointerType|VoidType|FloatType|Long(?:Type|longType)|ArrayType))|D(?:i(?:s(?:c(?:losureBezelStyle|reteCapacityLevelIndicatorStyle)|playWindowRunLoopOrdering)|acriticInsensitivePredicateOption|rect(?:Selection|PredicateModifier))|o(?:c(?:ModalWindowMask|ument(?:Directory|ationDirectory))|ubleType|wn(?:TextMovement|ArrowFunctionKey))|e(?:s(?:cendingPageOrder|ktopDirectory)|cimalTabStopType|v(?:ice(?:NColorSpaceModel|IndependentModifierFlagsMask)|eloper(?:Directory|ApplicationDirectory))|fault(?:ControlTint|TokenStyle)|lete(?:Char(?:acter|FunctionKey)|FunctionKey|LineFunctionKey)|moApplicationDirectory)|a(?:yCalendarUnit|teFormatter(?:MediumStyle|Behavior(?:10|Default)|ShortStyle|NoStyle|FullStyle|LongStyle))|ra(?:wer(?:Clos(?:ingState|edState)|Open(?:ingState|State))|gOperation(?:Generic|Move|None|Copy|Delete|Private|Every|Link|All)))|U(?:ser(?:CancelledError|D(?:irectory|omainMask)|FunctionKey)|RL(?:Handle(?:NotLoaded|Load(?:Succeeded|InProgress|Failed))|CredentialPersistence(?:None|Permanent|ForSession))|n(?:scaledWindowMask|cachedRead|i(?:codeStringEncoding|talicFontMask|fiedTitleAndToolbarWindowMask)|d(?:o(?:CloseGroupingRunLoopOrdering|FunctionKey)|e(?:finedDateComponent|rline(?:Style(?:Single|None|Thick|Double)|Pattern(?:Solid|D(?:ot|ash(?:Dot(?:Dot)?)?)))))|known(?:ColorSpaceModel|P(?:ointingDevice|ageOrder)|KeyS(?:criptError|pecifierError))|boldFontMask)|tilityWindowMask|TF8StringEncoding|p(?:dateWindowsRunLoopOrdering|TextMovement|ArrowFunctionKey))|J(?:ustifiedTextAlignment|PEG(?:2000FileType|FileType)|apaneseEUC(?:GlyphPacking|StringEncoding))|P(?:o(?:s(?:t(?:Now|erFontMask|WhenIdle|ASAP)|iti(?:on(?:Replace|Be(?:fore|ginning)|End|After)|ve(?:IntType|DoubleType|FloatType)))|pUp(?:NoArrow|ArrowAt(?:Bottom|Center))|werOffEventType|rtraitOrientation)|NGFileType|ush(?:InCell(?:Mask)?|OnPushOffButton)|e(?:n(?:TipMask|UpperSideMask|PointingDevice|LowerSideMask)|riodic(?:Mask)?)|P(?:S(?:caleField|tatus(?:Title|Field)|aveButton)|N(?:ote(?:Title|Field)|ame(?:Title|Field))|CopiesField|TitleField|ImageButton|OptionsButton|P(?:a(?:perFeedButton|ge(?:Range(?:To|From)|ChoiceMatrix))|reviewButton)|LayoutButton)|lainTextTokenStyle|a(?:useFunctionKey|ragraphSeparatorCharacter|ge(?:DownFunctionKey|UpFunctionKey))|r(?:int(?:ing(?:ReplyLater|Success|Cancelled|Failure)|ScreenFunctionKey|erTable(?:NotFound|OK|Error)|FunctionKey)|o(?:p(?:ertyList(?:XMLFormat|MutableContainers(?:AndLeaves)?|BinaryFormat|Immutable|OpenStepFormat)|rietaryStringEncoding)|gressIndicator(?:BarStyle|SpinningStyle|Preferred(?:SmallThickness|Thickness|LargeThickness|AquaThickness)))|e(?:ssedTab|vFunctionKey))|L(?:HeightForm|CancelButton|TitleField|ImageButton|O(?:KButton|rientationMatrix)|UnitsButton|PaperNameButton|WidthForm))|E(?:n(?:terCharacter|d(?:sWith(?:Comparison|PredicateOperatorType)|FunctionKey))|v(?:e(?:nOddWindingRule|rySubelement)|aluatedObjectExpressionType)|qualTo(?:Comparison|PredicateOperatorType)|ra(?:serPointingDevice|CalendarUnit|DatePickerElementFlag)|x(?:clude(?:10|QuickDrawElementsIconCreationOption)|pandedFontMask|ecuteFunctionKey))|V(?:i(?:ew(?:M(?:in(?:XMargin|YMargin)|ax(?:XMargin|YMargin))|HeightSizable|NotSizable|WidthSizable)|aPanelFontAction)|erticalRuler|a(?:lidationErrorM(?:inimum|aximum)|riableExpressionType))|Key(?:SpecifierEvaluationScriptError|Down(?:Mask)?|Up(?:Mask)?|PathExpressionType|Value(?:MinusSetMutation|SetSetMutation|Change(?:Re(?:placement|moval)|Setting|Insertion)|IntersectSetMutation|ObservingOption(?:New|Old)|UnionSetMutation|ValidationError))|QTMovie(?:NormalPlayback|Looping(?:BackAndForthPlayback|Playback))|F(?:1(?:1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|7FunctionKey|i(?:nd(?:PanelAction(?:Replace(?:A(?:ndFind|ll(?:InSelection)?))?|S(?:howFindPanel|e(?:tFindString|lectAll(?:InSelection)?))|Next|Previous)|FunctionKey)|tPagination|le(?:Read(?:No(?:SuchFileError|PermissionError)|CorruptFileError|In(?:validFileNameError|applicableStringEncodingError)|Un(?:supportedSchemeError|knownError))|HandlingPanel(?:CancelButton|OKButton)|NoSuchFileError|ErrorM(?:inimum|aximum)|Write(?:NoPermissionError|In(?:validFileNameError|applicableStringEncodingError)|OutOfSpaceError|Un(?:supportedSchemeError|knownError))|LockingError)|xedPitchFontMask)|2(?:1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|o(?:nt(?:Mo(?:noSpaceTrait|dernSerifsClass)|BoldTrait|S(?:ymbolicClass|criptsClass|labSerifsClass|ansSerifClass)|C(?:o(?:ndensedTrait|llectionApplicationOnlyMask)|larendonSerifsClass)|TransitionalSerifsClass|I(?:ntegerAdvancementsRenderingMode|talicTrait)|O(?:ldStyleSerifsClass|rnamentalsClass)|DefaultRenderingMode|U(?:nknownClass|IOptimizedTrait)|Panel(?:S(?:hadowEffectModeMask|t(?:andardModesMask|rikethroughEffectModeMask)|izeModeMask)|CollectionModeMask|TextColorEffectModeMask|DocumentColorEffectModeMask|UnderlineEffectModeMask|FaceModeMask|All(?:ModesMask|EffectsModeMask))|ExpandedTrait|VerticalTrait|F(?:amilyClassMask|reeformSerifsClass)|Antialiased(?:RenderingMode|IntegerAdvancementsRenderingMode))|cusRing(?:Below|Type(?:None|Default|Exterior)|Only|Above)|urByteGlyphPacking|rm(?:attingError(?:M(?:inimum|aximum))?|FeedCharacter))|8FunctionKey|unction(?:ExpressionType|KeyMask)|3(?:1FunctionKey|2FunctionKey|3FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey)|9FunctionKey|4FunctionKey|P(?:RevertButton|S(?:ize(?:Title|Field)|etButton)|CurrentField|Preview(?:Button|Field))|l(?:oat(?:ingPointSamplesBitmapFormat|Type)|agsChanged(?:Mask)?)|axButton|5FunctionKey|6FunctionKey)|W(?:heelModeColorPanel|indow(?:s(?:NTOperatingSystem|CP125(?:1StringEncoding|2StringEncoding|3StringEncoding|4StringEncoding|0StringEncoding)|95(?:InterfaceStyle|OperatingSystem))|M(?:iniaturizeButton|ovedEventType)|Below|CloseButton|ToolbarButton|ZoomButton|Out|DocumentIconButton|ExposedEventType|Above)|orkspaceLaunch(?:NewInstance|InhibitingBackgroundOnly|Default|PreferringClassic|WithoutA(?:ctivation|ddingToRecents)|A(?:sync|nd(?:Hide(?:Others)?|Print)|llowingClassicStartup))|eek(?:day(?:CalendarUnit|OrdinalCalendarUnit)|CalendarUnit)|a(?:ntsBidiLevels|rningAlertStyle)|r(?:itingDirection(?:RightToLeft|Natural|LeftToRight)|apCalendarComponents))|L(?:i(?:stModeMatrix|ne(?:Moves(?:Right|Down|Up|Left)|B(?:order|reakBy(?:C(?:harWrapping|lipping)|Truncating(?:Middle|Head|Tail)|WordWrapping))|S(?:eparatorCharacter|weep(?:Right|Down|Up|Left))|ToBezierPathElement|DoesntMove|arSlider)|teralSearch|kePredicateOperatorType|ghterFontAction|braryDirectory)|ocalDomainMask|e(?:ssThan(?:Comparison|OrEqualTo(?:Comparison|PredicateOperatorType)|PredicateOperatorType)|ft(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|T(?:ext(?:Movement|Alignment)|ab(?:sBezelBorder|StopType))|ArrowFunctionKey))|a(?:yout(?:RightToLeft|NotDone|CantFit|OutOfGlyphs|Done|LeftToRight)|ndscapeOrientation)|ABColorSpaceModel)|A(?:sc(?:iiWithDoubleByteEUCGlyphPacking|endingPageOrder)|n(?:y(?:Type|PredicateModifier|EventMask)|choredSearch|imation(?:Blocking|Nonblocking(?:Threaded)?|E(?:ffect(?:DisappearingItemDefault|Poof)|ase(?:In(?:Out)?|Out))|Linear)|dPredicateType)|t(?:Bottom|tachmentCharacter|omicWrite|Top)|SCIIStringEncoding|d(?:obe(?:GB1CharacterCollection|CNS1CharacterCollection|Japan(?:1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|dTraitFontAction|minApplicationDirectory)|uto(?:saveOperation|Pagination)|pp(?:lication(?:SupportDirectory|D(?:irectory|e(?:fined(?:Mask)?|legateReply(?:Success|Cancel|Failure)|activatedEventType))|ActivatedEventType)|KitDefined(?:Mask)?)|l(?:ternateKeyMask|pha(?:ShiftKeyMask|NonpremultipliedBitmapFormat|FirstBitmapFormat)|ert(?:SecondButtonReturn|ThirdButtonReturn|OtherReturn|DefaultReturn|ErrorReturn|FirstButtonReturn|AlternateReturn)|l(?:ScrollerParts|DomainsMask|PredicateModifier|LibrariesDirectory|ApplicationsDirectory))|rgument(?:sWrongScriptError|EvaluationScriptError)|bove(?:Bottom|Top)|WTEventType)))(?:\\b)"},{token:"support.function.C99.c",regex:s.cFunctions},{token:n.getKeywords(),regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"punctuation.section.scope.begin.objc",regex:"\\[",next:"bracketed_content"},{token:"meta.function.objc",regex:"^(?:-|\\+)\\s*"}],constant_NSString:[{token:"constant.character.escape.objc",regex:e},{token:"invalid.illegal.unknown-escape.objc",regex:"\\\\."},{token:"string",regex:'[^"\\\\]+'},{token:"punctuation.definition.string.end",regex:'"',next:"start"}],protocol_list:[{token:"punctuation.section.scope.end.objc",regex:">",next:"start"},{token:"support.other.protocol.objc",regex:"\bNS(?:GlyphStorage|M(?:utableCopying|enuItem)|C(?:hangeSpelling|o(?:ding|pying|lorPicking(?:Custom|Default)))|T(?:oolbarItemValidations|ext(?:Input|AttachmentCell))|I(?:nputServ(?:iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(?:CTypeSerializationCallBack|ect)|D(?:ecimalNumberBehaviors|raggingInfo)|U(?:serInterfaceValidations|RL(?:HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(?:ToobarItem|UserInterfaceItem)|Locking)\b"}],selectors:[{token:"support.function.any-method.name-of-parameter.objc",regex:"\\b(?:[a-zA-Z_:][\\w]*)+"},{token:"punctuation",regex:"\\)",next:"start"}],bracketed_content:[{token:"punctuation.section.scope.end.objc",regex:"]",next:"start"},{token:["support.function.any-method.objc"],regex:"(?:predicateWithFormat:| NSPredicate predicateWithFormat:)",next:"start"},{token:"support.function.any-method.objc",regex:"\\w+(?::|(?=]))",next:"start"}],bracketed_strings:[{token:"punctuation.section.scope.end.objc",regex:"]",next:"start"},{token:"keyword.operator.logical.predicate.cocoa",regex:"\\b(?:AND|OR|NOT|IN)\\b"},{token:["invalid.illegal.unknown-method.objc","punctuation.separator.arguments.objc"],regex:"\\b(w+)(:)"},{regex:"\\b(?:ALL|ANY|SOME|NONE)\\b",token:"constant.language.predicate.cocoa"},{regex:"\\b(?:NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\b",token:"constant.language.predicate.cocoa"},{regex:"\\b(?:MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\b",token:"keyword.operator.comparison.predicate.cocoa"},{regex:"\\bC(?:ASEINSENSITIVE|I)\\b",token:"keyword.other.modifier.predicate.cocoa"},{regex:"\\b(?:ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\b",token:"keyword.other.predicate.cocoa"},{regex:e,token:"constant.character.escape.objc"},{regex:"\\\\.",token:"invalid.illegal.unknown-escape.objc"},{token:"string",regex:'[^"\\\\]'},{token:"punctuation.definition.string.end.objc",regex:'"',next:"predicates"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],methods:[{token:"meta.function.objc",regex:"(?=\\{|#)|;",next:"start"}]};for(var u in r)this.$rules[u]?this.$rules[u].push&&this.$rules[u].push.apply(this.$rules[u],r[u]):this.$rules[u]=r[u];this.$rules.bracketed_content=this.$rules.bracketed_content.concat(this.$rules.start,t),this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(u,o),t.ObjectiveCHighlightRules=u}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/objectivec",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/objectivec_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./objectivec_highlight_rules").ObjectiveCHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/objectivec"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-ocaml.js b/library/ace/mode-ocaml.js
new file mode 100644
index 000000000..9c5a92db6
--- /dev/null
+++ b/library/ace/mode-ocaml.js
@@ -0,0 +1 @@
+ace.define("ace/mode/ocaml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|object|of|open|or|private|rec|sig|struct|then|to|try|type|val|virtual|when|while|with",t="true|false",n="abs|abs_big_int|abs_float|abs_num|abstract_tag|accept|access|acos|add|add_available_units|add_big_int|add_buffer|add_channel|add_char|add_initializer|add_int_big_int|add_interfaces|add_num|add_string|add_substitute|add_substring|alarm|allocated_bytes|allow_only|allow_unsafe_modules|always|append|appname_get|appname_set|approx_num_exp|approx_num_fix|arg|argv|arith_status|array|array1_of_genarray|array2_of_genarray|array3_of_genarray|asin|asr|assoc|assq|at_exit|atan|atan2|auto_synchronize|background|basename|beginning_of_input|big_int_of_int|big_int_of_num|big_int_of_string|bind|bind_class|bind_tag|bits|bits_of_float|black|blit|blit_image|blue|bool|bool_of_string|bounded_full_split|bounded_split|bounded_split_delim|bprintf|break|broadcast|bscanf|button_down|c_layout|capitalize|cardinal|cardinal|catch|catch_break|ceil|ceiling_num|channel|char|char_of_int|chdir|check|check_suffix|chmod|choose|chop_extension|chop_suffix|chown|chown|chr|chroot|classify_float|clear|clear_available_units|clear_close_on_exec|clear_graph|clear_nonblock|clear_parser|close|close|closeTk|close_box|close_graph|close_in|close_in_noerr|close_out|close_out_noerr|close_process|close_process|close_process_full|close_process_in|close_process_out|close_subwindow|close_tag|close_tbox|closedir|closedir|closure_tag|code|combine|combine|combine|command|compact|compare|compare_big_int|compare_num|complex32|complex64|concat|conj|connect|contains|contains_from|contents|copy|cos|cosh|count|count|counters|create|create_alarm|create_image|create_matrix|create_matrix|create_matrix|create_object|create_object_and_run_initializers|create_object_opt|create_process|create_process|create_process_env|create_process_env|create_table|current|current_dir_name|current_point|current_x|current_y|curveto|custom_tag|cyan|data_size|decr|decr_num|default_available_units|delay|delete_alarm|descr_of_in_channel|descr_of_out_channel|destroy|diff|dim|dim1|dim2|dim3|dims|dirname|display_mode|div|div_big_int|div_num|double_array_tag|double_tag|draw_arc|draw_char|draw_circle|draw_ellipse|draw_image|draw_poly|draw_poly_line|draw_rect|draw_segments|draw_string|dummy_pos|dummy_table|dump_image|dup|dup2|elements|empty|end_of_input|environment|eprintf|epsilon_float|eq_big_int|eq_num|equal|err_formatter|error_message|escaped|establish_server|executable_name|execv|execve|execvp|execvpe|exists|exists2|exit|exp|failwith|fast_sort|fchmod|fchown|field|file|file_exists|fill|fill_arc|fill_circle|fill_ellipse|fill_poly|fill_rect|filter|final_tag|finalise|find|find_all|first_chars|firstkey|flatten|float|float32|float64|float_of_big_int|float_of_bits|float_of_int|float_of_num|float_of_string|floor|floor_num|flush|flush_all|flush_input|flush_str_formatter|fold|fold_left|fold_left2|fold_right|fold_right2|for_all|for_all2|force|force_newline|force_val|foreground|fork|format_of_string|formatter_of_buffer|formatter_of_out_channel|fortran_layout|forward_tag|fprintf|frexp|from|from_channel|from_file|from_file_bin|from_function|from_string|fscanf|fst|fstat|ftruncate|full_init|full_major|full_split|gcd_big_int|ge_big_int|ge_num|genarray_of_array1|genarray_of_array2|genarray_of_array3|get|get_all_formatter_output_functions|get_approx_printing|get_copy|get_ellipsis_text|get_error_when_null_denominator|get_floating_precision|get_formatter_output_functions|get_formatter_tag_functions|get_image|get_margin|get_mark_tags|get_max_boxes|get_max_indent|get_method|get_method_label|get_normalize_ratio|get_normalize_ratio_when_printing|get_print_tags|get_state|get_variable|getcwd|getegid|getegid|getenv|getenv|getenv|geteuid|geteuid|getgid|getgid|getgrgid|getgrgid|getgrnam|getgrnam|getgroups|gethostbyaddr|gethostbyname|gethostname|getitimer|getlogin|getpeername|getpid|getppid|getprotobyname|getprotobynumber|getpwnam|getpwuid|getservbyname|getservbyport|getsockname|getsockopt|getsockopt_float|getsockopt_int|getsockopt_optint|gettimeofday|getuid|global_replace|global_substitute|gmtime|green|grid|group_beginning|group_end|gt_big_int|gt_num|guard|handle_unix_error|hash|hash_param|hd|header_size|i|id|ignore|in_channel_length|in_channel_of_descr|incr|incr_num|index|index_from|inet_addr_any|inet_addr_of_string|infinity|infix_tag|init|init_class|input|input_binary_int|input_byte|input_char|input_line|input_value|int|int16_signed|int16_unsigned|int32|int64|int8_signed|int8_unsigned|int_of_big_int|int_of_char|int_of_float|int_of_num|int_of_string|integer_num|inter|interactive|inv|invalid_arg|is_block|is_empty|is_implicit|is_int|is_int_big_int|is_integer_num|is_relative|iter|iter2|iteri|join|junk|key_pressed|kill|kind|kprintf|kscanf|land|last_chars|layout|lazy_from_fun|lazy_from_val|lazy_is_val|lazy_tag|ldexp|le_big_int|le_num|length|lexeme|lexeme_char|lexeme_end|lexeme_end_p|lexeme_start|lexeme_start_p|lineto|link|list|listen|lnot|loadfile|loadfile_private|localtime|lock|lockf|log|log10|logand|lognot|logor|logxor|lor|lower_window|lowercase|lseek|lsl|lsr|lstat|lt_big_int|lt_num|lxor|magenta|magic|mainLoop|major|major_slice|make|make_formatter|make_image|make_lexer|make_matrix|make_self_init|map|map2|map_file|mapi|marshal|match_beginning|match_end|matched_group|matched_string|max|max_array_length|max_big_int|max_elt|max_float|max_int|max_num|max_string_length|mem|mem_assoc|mem_assq|memq|merge|min|min_big_int|min_elt|min_float|min_int|min_num|minor|minus_big_int|minus_num|minus_one|mkdir|mkfifo|mktime|mod|mod_big_int|mod_float|mod_num|modf|mouse_pos|moveto|mul|mult_big_int|mult_int_big_int|mult_num|nan|narrow|nat_of_num|nativeint|neg|neg_infinity|new_block|new_channel|new_method|new_variable|next|nextkey|nice|nice|no_scan_tag|norm|norm2|not|npeek|nth|nth_dim|num_digits_big_int|num_dims|num_of_big_int|num_of_int|num_of_nat|num_of_ratio|num_of_string|O|obj|object_tag|ocaml_version|of_array|of_channel|of_float|of_int|of_int32|of_list|of_nativeint|of_string|one|openTk|open_box|open_connection|open_graph|open_hbox|open_hovbox|open_hvbox|open_in|open_in_bin|open_in_gen|open_out|open_out_bin|open_out_gen|open_process|open_process_full|open_process_in|open_process_out|open_subwindow|open_tag|open_tbox|open_temp_file|open_vbox|opendbm|opendir|openfile|or|os_type|out_channel_length|out_channel_of_descr|output|output_binary_int|output_buffer|output_byte|output_char|output_string|output_value|over_max_boxes|pack|params|parent_dir_name|parse|parse_argv|partition|pause|peek|pipe|pixels|place|plot|plots|point_color|polar|poll|pop|pos_in|pos_out|pow|power_big_int_positive_big_int|power_big_int_positive_int|power_int_positive_big_int|power_int_positive_int|power_num|pp_close_box|pp_close_tag|pp_close_tbox|pp_force_newline|pp_get_all_formatter_output_functions|pp_get_ellipsis_text|pp_get_formatter_output_functions|pp_get_formatter_tag_functions|pp_get_margin|pp_get_mark_tags|pp_get_max_boxes|pp_get_max_indent|pp_get_print_tags|pp_open_box|pp_open_hbox|pp_open_hovbox|pp_open_hvbox|pp_open_tag|pp_open_tbox|pp_open_vbox|pp_over_max_boxes|pp_print_as|pp_print_bool|pp_print_break|pp_print_char|pp_print_cut|pp_print_float|pp_print_flush|pp_print_if_newline|pp_print_int|pp_print_newline|pp_print_space|pp_print_string|pp_print_tab|pp_print_tbreak|pp_set_all_formatter_output_functions|pp_set_ellipsis_text|pp_set_formatter_out_channel|pp_set_formatter_output_functions|pp_set_formatter_tag_functions|pp_set_margin|pp_set_mark_tags|pp_set_max_boxes|pp_set_max_indent|pp_set_print_tags|pp_set_tab|pp_set_tags|pred|pred_big_int|pred_num|prerr_char|prerr_endline|prerr_float|prerr_int|prerr_newline|prerr_string|print|print_as|print_bool|print_break|print_char|print_cut|print_endline|print_float|print_flush|print_if_newline|print_int|print_newline|print_space|print_stat|print_string|print_tab|print_tbreak|printf|prohibit|public_method_label|push|putenv|quo_num|quomod_big_int|quote|raise|raise_window|ratio_of_num|rcontains_from|read|read_float|read_int|read_key|read_line|readdir|readdir|readlink|really_input|receive|recv|recvfrom|red|ref|regexp|regexp_case_fold|regexp_string|regexp_string_case_fold|register|register_exception|rem|remember_mode|remove|remove_assoc|remove_assq|rename|replace|replace_first|replace_matched|repr|reset|reshape|reshape_1|reshape_2|reshape_3|rev|rev_append|rev_map|rev_map2|rewinddir|rgb|rhs_end|rhs_end_pos|rhs_start|rhs_start_pos|rindex|rindex_from|rlineto|rmdir|rmoveto|round_num|run_initializers|run_initializers_opt|scanf|search_backward|search_forward|seek_in|seek_out|select|self|self_init|send|sendto|set|set_all_formatter_output_functions|set_approx_printing|set_binary_mode_in|set_binary_mode_out|set_close_on_exec|set_close_on_exec|set_color|set_ellipsis_text|set_error_when_null_denominator|set_field|set_floating_precision|set_font|set_formatter_out_channel|set_formatter_output_functions|set_formatter_tag_functions|set_line_width|set_margin|set_mark_tags|set_max_boxes|set_max_indent|set_method|set_nonblock|set_nonblock|set_normalize_ratio|set_normalize_ratio_when_printing|set_print_tags|set_signal|set_state|set_tab|set_tag|set_tags|set_text_size|set_window_title|setgid|setgid|setitimer|setitimer|setsid|setsid|setsockopt|setsockopt|setsockopt_float|setsockopt_float|setsockopt_int|setsockopt_int|setsockopt_optint|setsockopt_optint|setuid|setuid|shift_left|shift_left|shift_left|shift_right|shift_right|shift_right|shift_right_logical|shift_right_logical|shift_right_logical|show_buckets|shutdown|shutdown|shutdown_connection|shutdown_connection|sigabrt|sigalrm|sigchld|sigcont|sigfpe|sighup|sigill|sigint|sigkill|sign_big_int|sign_num|signal|signal|sigpending|sigpending|sigpipe|sigprocmask|sigprocmask|sigprof|sigquit|sigsegv|sigstop|sigsuspend|sigsuspend|sigterm|sigtstp|sigttin|sigttou|sigusr1|sigusr2|sigvtalrm|sin|singleton|sinh|size|size|size_x|size_y|sleep|sleep|sleep|slice_left|slice_left|slice_left_1|slice_left_2|slice_right|slice_right|slice_right_1|slice_right_2|snd|socket|socket|socket|socketpair|socketpair|sort|sound|split|split_delim|sprintf|sprintf|sqrt|sqrt|sqrt_big_int|square_big_int|square_num|sscanf|stable_sort|stable_sort|stable_sort|stable_sort|stable_sort|stable_sort|stat|stat|stat|stat|stat|stats|stats|std_formatter|stdbuf|stderr|stderr|stderr|stdib|stdin|stdin|stdin|stdout|stdout|stdout|str_formatter|string|string_after|string_before|string_match|string_of_big_int|string_of_bool|string_of_float|string_of_format|string_of_inet_addr|string_of_inet_addr|string_of_int|string_of_num|string_partial_match|string_tag|sub|sub|sub_big_int|sub_left|sub_num|sub_right|subset|subset|substitute_first|substring|succ|succ|succ|succ|succ_big_int|succ_num|symbol_end|symbol_end_pos|symbol_start|symbol_start_pos|symlink|symlink|sync|synchronize|system|system|system|tag|take|tan|tanh|tcdrain|tcdrain|tcflow|tcflow|tcflush|tcflush|tcgetattr|tcgetattr|tcsendbreak|tcsendbreak|tcsetattr|tcsetattr|temp_file|text_size|time|time|time|timed_read|timed_write|times|times|tl|tl|tl|to_buffer|to_channel|to_float|to_hex|to_int|to_int32|to_list|to_list|to_list|to_nativeint|to_string|to_string|to_string|to_string|to_string|top|top|total_size|transfer|transp|truncate|truncate|truncate|truncate|truncate|truncate|try_lock|umask|umask|uncapitalize|uncapitalize|uncapitalize|union|union|unit_big_int|unlink|unlink|unlock|unmarshal|unsafe_blit|unsafe_fill|unsafe_get|unsafe_get|unsafe_set|unsafe_set|update|uppercase|uppercase|uppercase|uppercase|usage|utimes|utimes|wait|wait|wait|wait|wait_next_event|wait_pid|wait_read|wait_signal|wait_timed_read|wait_timed_write|wait_write|waitpid|white|widen|window_id|word_size|wrap|wrap_abort|write|yellow|yield|zero|zero_big_int|Arg|Arith_status|Array|Array1|Array2|Array3|ArrayLabels|Big_int|Bigarray|Buffer|Callback|CamlinternalOO|Char|Complex|Condition|Dbm|Digest|Dynlink|Event|Filename|Format|Gc|Genarray|Genlex|Graphics|GraphicsX11|Hashtbl|Int32|Int64|LargeFile|Lazy|Lexing|List|ListLabels|Make|Map|Marshal|MoreLabels|Mutex|Nativeint|Num|Obj|Oo|Parsing|Pervasives|Printexc|Printf|Queue|Random|Scanf|Scanning|Set|Sort|Stack|State|StdLabels|Str|Stream|String|StringLabels|Sys|Thread|ThreadUnix|Tk|Unix|UnixLabels|Weak",r=this.createKeywordMapper({"variable.language":"this",keyword:e,"constant.language":t,"support.function":n},"identifier"),i="(?:(?:[1-9]\\d*)|(?:0))",s="(?:0[oO]?[0-7]+)",o="(?:0[xX][\\dA-Fa-f]+)",u="(?:0[bB][01]+)",a="(?:"+i+"|"+s+"|"+o+"|"+u+")",f="(?:[eE][+-]?\\d+)",l="(?:\\.\\d+)",c="(?:\\d+)",h="(?:(?:"+c+"?"+l+")|(?:"+c+"\\.))",p="(?:(?:"+h+"|"+c+")"+f+")",d="(?:"+p+"|"+h+")";this.$rules={start:[{token:"comment",regex:"\\(\\*.*?\\*\\)\\s*?$"},{token:"comment",regex:"\\(\\*.*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"'.'"},{token:"string",regex:'"',next:"qstring"},{token:"constant.numeric",regex:"(?:"+d+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:d},{token:"constant.numeric",regex:a+"\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|="},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\)",next:"start"},{token:"comment",regex:".+"}],qstring:[{token:"string",regex:'"',next:"start"},{token:"string",regex:".+"}]}};r.inherits(s,i),t.OcamlHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/ocaml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ocaml_highlight_rules","ace/mode/matching_brace_outdent","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ocaml_highlight_rules").OcamlHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=function(){this.HighlightRules=s,this.$outdent=new o};r.inherits(a,i);var f=/(?:[({[=:]|[-=]>|\b(?:else|try|with))\s*$/;(function(){this.toggleCommentLines=function(e,t,n,r){var i,s,o=!0,a=/^\s*\(\*(.*)\*\)/;for(i=n;i<=r;i++)if(!a.test(t.getLine(i))){o=!1;break}var f=new u(0,0,0,0);for(i=n;i<=r;i++)s=t.getLine(i),f.start.row=i,f.end.row=i,f.end.column=s.length,t.replace(f,o?s.match(a)[1]:"(*"+s+"*)")},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;return(!i.length||i[i.length-1].type!=="comment")&&e==="start"&&f.test(t)&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/ocaml"}).call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-pascal.js b/library/ace/mode-pascal.js
new file mode 100644
index 000000000..b5534398d
--- /dev/null
+++ b/library/ace/mode-pascal.js
@@ -0,0 +1 @@
+ace.define("ace/mode/pascal_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{caseInsensitive:!0,token:"keyword.control.pascal",regex:"\\b(?:(absolute|abstract|all|and|and_then|array|as|asm|attribute|begin|bindable|case|class|const|constructor|destructor|div|do|do|else|end|except|export|exports|external|far|file|finalization|finally|for|forward|goto|if|implementation|import|in|inherited|initialization|interface|interrupt|is|label|library|mod|module|name|near|nil|not|object|of|only|operator|or|or_else|otherwise|packed|pow|private|program|property|protected|public|published|qualified|record|repeat|resident|restricted|segment|set|shl|shr|then|to|try|type|unit|until|uses|value|var|view|virtual|while|with|xor))\\b"},{caseInsensitive:!0,token:["variable.pascal","text","storage.type.prototype.pascal","entity.name.function.prototype.pascal"],regex:"\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?(?=(?:\\(.*?\\))?;\\s*(?:attribute|forward|external))"},{caseInsensitive:!0,token:["variable.pascal","text","storage.type.function.pascal","entity.name.function.pascal"],regex:"\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?"},{token:"constant.numeric.pascal",regex:"\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"punctuation.definition.comment.pascal",regex:"--.*$",push_:[{token:"comment.line.double-dash.pascal.one",regex:"$",next:"pop"},{defaultToken:"comment.line.double-dash.pascal.one"}]},{token:"punctuation.definition.comment.pascal",regex:"//.*$",push_:[{token:"comment.line.double-slash.pascal.two",regex:"$",next:"pop"},{defaultToken:"comment.line.double-slash.pascal.two"}]},{token:"punctuation.definition.comment.pascal",regex:"\\(\\*",push:[{token:"punctuation.definition.comment.pascal",regex:"\\*\\)",next:"pop"},{defaultToken:"comment.block.pascal.one"}]},{token:"punctuation.definition.comment.pascal",regex:"\\{",push:[{token:"punctuation.definition.comment.pascal",regex:"\\}",next:"pop"},{defaultToken:"comment.block.pascal.two"}]},{token:"punctuation.definition.string.begin.pascal",regex:'"',push:[{token:"constant.character.escape.pascal",regex:"\\\\."},{token:"punctuation.definition.string.end.pascal",regex:'"',next:"pop"},{defaultToken:"string.quoted.double.pascal"}]},{token:"punctuation.definition.string.begin.pascal",regex:"'",push:[{token:"constant.character.escape.apostrophe.pascal",regex:"''"},{token:"punctuation.definition.string.end.pascal",regex:"'",next:"pop"},{defaultToken:"string.quoted.single.pascal"}]},{token:"keyword.operator",regex:"[+\\-;,/*%]|:=|="}]},this.normalizeRules()};r.inherits(s,i),t.PascalHighlightRules=s}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/pascal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pascal_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./pascal_highlight_rules").PascalHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart=["--","//"],this.blockComment=[{start:"(*",end:"*)"},{start:"{",end:"}"}],this.$id="ace/mode/pascal"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-perl.js b/library/ace/mode-perl.js
new file mode 100644
index 000000000..cb8243e6f
--- /dev/null
+++ b/library/ace/mode-perl.js
@@ -0,0 +1 @@
+ace.define("ace/mode/perl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars",t="ARGV|ENV|INC|SIG",n="getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|getpeername|setpriority|getprotoent|setprotoent|getpriority|endprotoent|getservent|setservent|endservent|sethostent|socketpair|getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|map|die|uc|lc|do",r=this.createKeywordMapper({keyword:e,"constant.language":t,"support.function":n},"identifier");this.$rules={start:[{token:"comment.doc",regex:"^=(?:begin|item)\\b",next:"block_comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0x[0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)"},{token:"comment",regex:"#.*$"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}],block_comment:[{token:"comment.doc",regex:"^=cut\\b",next:"start"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),t.PerlHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/perl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/perl_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./perl_highlight_rules").PerlHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.foldingRules=new a({start:"^=(begin|item)\\b",end:"^=(cut)\\b"})};r.inherits(f,i),function(){this.lineCommentStart="#",this.blockComment=[{start:"=begin",end:"=cut",lineStartOnly:!0},{start:"=item",end:"=cut",lineStartOnly:!0}],this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[\:]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/perl"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-pgsql.js b/library/ace/mode-pgsql.js
new file mode 100644
index 000000000..487bff137
--- /dev/null
+++ b/library/ace/mode-pgsql.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/perl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars",t="ARGV|ENV|INC|SIG",n="getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|getpeername|setpriority|getprotoent|setprotoent|getpriority|endprotoent|getservent|setservent|endservent|sethostent|socketpair|getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|map|die|uc|lc|do",r=this.createKeywordMapper({keyword:e,"constant.language":t,"support.function":n},"identifier");this.$rules={start:[{token:"comment.doc",regex:"^=(?:begin|item)\\b",next:"block_comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0x[0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)"},{token:"comment",regex:"#.*$"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}],block_comment:[{token:"comment.doc",regex:"^=cut\\b",next:"start"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),t.PerlHighlightRules=s}),ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield",t="True|False|None|NotImplemented|Ellipsis|__debug__",n="abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|set|apply|delattr|help|next|setattr|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern",r=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":n,"constant.language":t,keyword:e},"identifier"),i="(?:r|u|ur|R|U|UR|Ur|uR)?",s="(?:(?:[1-9]\\d*)|(?:0))",o="(?:0[oO]?[0-7]+)",u="(?:0[xX][\\dA-Fa-f]+)",a="(?:0[bB][01]+)",f="(?:"+s+"|"+o+"|"+u+"|"+a+")",l="(?:[eE][+-]?\\d+)",c="(?:\\.\\d+)",h="(?:\\d+)",p="(?:(?:"+h+"?"+c+")|(?:"+h+"\\.))",d="(?:(?:"+p+"|"+h+")"+l+")",v="(?:"+d+"|"+p+")",m="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"string",regex:i+'"{3}',next:"qqstring3"},{token:"string",regex:i+'"(?=.)',next:"qqstring"},{token:"string",regex:i+"'{3}",next:"qstring3"},{token:"string",regex:i+"'(?=.)",next:"qstring"},{token:"constant.numeric",regex:"(?:"+v+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:v},{token:"constant.numeric",regex:f+"[lL]\\b"},{token:"constant.numeric",regex:f+"\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+"}],qqstring3:[{token:"constant.language.escape",regex:m},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qstring3:[{token:"constant.language.escape",regex:m},{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:m},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:m},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.PythonHighlightRules=s}),ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};r.inherits(s,i),t.JsonHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/pgsql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/perl_highlight_rules","ace/mode/python_highlight_rules","ace/mode/json_highlight_rules","ace/mode/javascript_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=e("./perl_highlight_rules").PerlHighlightRules,a=e("./python_highlight_rules").PythonHighlightRules,f=e("./json_highlight_rules").JsonHighlightRules,l=e("./javascript_highlight_rules").JavaScriptHighlightRules,c=function(){var e="abort|absolute|abstime|access|aclitem|action|add|admin|after|aggregate|all|also|alter|always|analyse|analyze|and|any|anyarray|anyelement|anyenum|anynonarray|anyrange|array|as|asc|assertion|assignment|asymmetric|at|attribute|authorization|backward|before|begin|between|bigint|binary|bit|bool|boolean|both|box|bpchar|by|bytea|cache|called|cascade|cascaded|case|cast|catalog|chain|char|character|characteristics|check|checkpoint|cid|cidr|circle|class|close|cluster|coalesce|collate|collation|column|comment|comments|commit|committed|concurrently|configuration|connection|constraint|constraints|content|continue|conversion|copy|cost|create|cross|cstring|csv|current|current_catalog|current_date|current_role|current_schema|current_time|current_timestamp|current_user|cursor|cycle|data|database|date|daterange|day|deallocate|dec|decimal|declare|default|defaults|deferrable|deferred|definer|delete|delimiter|delimiters|desc|dictionary|disable|discard|distinct|do|document|domain|double|drop|each|else|enable|encoding|encrypted|end|enum|escape|event|event_trigger|except|exclude|excluding|exclusive|execute|exists|explain|extension|external|extract|false|family|fdw_handler|fetch|first|float|float4|float8|following|for|force|foreign|forward|freeze|from|full|function|functions|global|grant|granted|greatest|group|gtsvector|handler|having|header|hold|hour|identity|if|ilike|immediate|immutable|implicit|in|including|increment|index|indexes|inet|inherit|inherits|initially|inline|inner|inout|input|insensitive|insert|instead|int|int2|int2vector|int4|int4range|int8|int8range|integer|internal|intersect|interval|into|invoker|is|isnull|isolation|join|json|key|label|language|language_handler|large|last|lateral|lc_collate|lc_ctype|leading|leakproof|least|left|level|like|limit|line|listen|load|local|localtime|localtimestamp|location|lock|lseg|macaddr|mapping|match|materialized|maxvalue|minute|minvalue|mode|money|month|move|name|names|national|natural|nchar|next|no|none|not|nothing|notify|notnull|nowait|null|nullif|nulls|numeric|numrange|object|of|off|offset|oid|oids|oidvector|on|only|opaque|operator|option|options|or|order|out|outer|over|overlaps|overlay|owned|owner|parser|partial|partition|passing|password|path|pg_attribute|pg_auth_members|pg_authid|pg_class|pg_database|pg_node_tree|pg_proc|pg_type|placing|plans|point|polygon|position|preceding|precision|prepare|prepared|preserve|primary|prior|privileges|procedural|procedure|program|quote|range|read|real|reassign|recheck|record|recursive|ref|refcursor|references|refresh|regclass|regconfig|regdictionary|regoper|regoperator|regproc|regprocedure|regtype|reindex|relative|release|reltime|rename|repeatable|replace|replica|reset|restart|restrict|returning|returns|revoke|right|role|rollback|row|rows|rule|savepoint|schema|scroll|search|second|security|select|sequence|sequences|serializable|server|session|session_user|set|setof|share|show|similar|simple|smallint|smgr|snapshot|some|stable|standalone|start|statement|statistics|stdin|stdout|storage|strict|strip|substring|symmetric|sysid|system|table|tables|tablespace|temp|template|temporary|text|then|tid|time|timestamp|timestamptz|timetz|tinterval|to|trailing|transaction|treat|trigger|trim|true|truncate|trusted|tsquery|tsrange|tstzrange|tsvector|txid_snapshot|type|types|unbounded|uncommitted|unencrypted|union|unique|unknown|unlisten|unlogged|until|update|user|using|uuid|vacuum|valid|validate|validator|value|values|varbit|varchar|variadic|varying|verbose|version|view|void|volatile|when|where|whitespace|window|with|without|work|wrapper|write|xid|xml|xmlattributes|xmlconcat|xmlelement|xmlexists|xmlforest|xmlparse|xmlpi|xmlroot|xmlserialize|year|yes|zone",t="RI_FKey_cascade_del|RI_FKey_cascade_upd|RI_FKey_check_ins|RI_FKey_check_upd|RI_FKey_noaction_del|RI_FKey_noaction_upd|RI_FKey_restrict_del|RI_FKey_restrict_upd|RI_FKey_setdefault_del|RI_FKey_setdefault_upd|RI_FKey_setnull_del|RI_FKey_setnull_upd|abbrev|abs|abstime|abstimeeq|abstimege|abstimegt|abstimein|abstimele|abstimelt|abstimene|abstimeout|abstimerecv|abstimesend|aclcontains|acldefault|aclexplode|aclinsert|aclitemeq|aclitemin|aclitemout|aclremove|acos|age|any_in|any_out|anyarray_in|anyarray_out|anyarray_recv|anyarray_send|anyelement_in|anyelement_out|anyenum_in|anyenum_out|anynonarray_in|anynonarray_out|anyrange_in|anyrange_out|anytextcat|area|areajoinsel|areasel|array_agg|array_agg_finalfn|array_agg_transfn|array_append|array_cat|array_dims|array_eq|array_fill|array_ge|array_gt|array_in|array_larger|array_le|array_length|array_lower|array_lt|array_ndims|array_ne|array_out|array_prepend|array_recv|array_remove|array_replace|array_send|array_smaller|array_to_json|array_to_string|array_typanalyze|array_upper|arraycontained|arraycontains|arraycontjoinsel|arraycontsel|arrayoverlap|ascii|ascii_to_mic|ascii_to_utf8|asin|atan|atan2|avg|big5_to_euc_tw|big5_to_mic|big5_to_utf8|bit_and|bit_in|bit_length|bit_or|bit_out|bit_recv|bit_send|bitand|bitcat|bitcmp|biteq|bitge|bitgt|bitle|bitlt|bitne|bitnot|bitor|bitshiftleft|bitshiftright|bittypmodin|bittypmodout|bitxor|bool|bool_and|bool_or|booland_statefunc|booleq|boolge|boolgt|boolin|boolle|boollt|boolne|boolor_statefunc|boolout|boolrecv|boolsend|box|box_above|box_above_eq|box_add|box_below|box_below_eq|box_center|box_contain|box_contain_pt|box_contained|box_distance|box_div|box_eq|box_ge|box_gt|box_in|box_intersect|box_le|box_left|box_lt|box_mul|box_out|box_overabove|box_overbelow|box_overlap|box_overleft|box_overright|box_recv|box_right|box_same|box_send|box_sub|bpchar_larger|bpchar_pattern_ge|bpchar_pattern_gt|bpchar_pattern_le|bpchar_pattern_lt|bpchar_smaller|bpcharcmp|bpchareq|bpcharge|bpchargt|bpchariclike|bpcharicnlike|bpcharicregexeq|bpcharicregexne|bpcharin|bpcharle|bpcharlike|bpcharlt|bpcharne|bpcharnlike|bpcharout|bpcharrecv|bpcharregexeq|bpcharregexne|bpcharsend|bpchartypmodin|bpchartypmodout|broadcast|btabstimecmp|btarraycmp|btbeginscan|btboolcmp|btbpchar_pattern_cmp|btbuild|btbuildempty|btbulkdelete|btcanreturn|btcharcmp|btcostestimate|btendscan|btfloat48cmp|btfloat4cmp|btfloat4sortsupport|btfloat84cmp|btfloat8cmp|btfloat8sortsupport|btgetbitmap|btgettuple|btinsert|btint24cmp|btint28cmp|btint2cmp|btint2sortsupport|btint42cmp|btint48cmp|btint4cmp|btint4sortsupport|btint82cmp|btint84cmp|btint8cmp|btint8sortsupport|btmarkpos|btnamecmp|btnamesortsupport|btoidcmp|btoidsortsupport|btoidvectorcmp|btoptions|btrecordcmp|btreltimecmp|btrescan|btrestrpos|btrim|bttext_pattern_cmp|bttextcmp|bttidcmp|bttintervalcmp|btvacuumcleanup|bytea_string_agg_finalfn|bytea_string_agg_transfn|byteacat|byteacmp|byteaeq|byteage|byteagt|byteain|byteale|bytealike|bytealt|byteane|byteanlike|byteaout|bytearecv|byteasend|cash_cmp|cash_div_cash|cash_div_flt4|cash_div_flt8|cash_div_int2|cash_div_int4|cash_eq|cash_ge|cash_gt|cash_in|cash_le|cash_lt|cash_mi|cash_mul_flt4|cash_mul_flt8|cash_mul_int2|cash_mul_int4|cash_ne|cash_out|cash_pl|cash_recv|cash_send|cash_words|cashlarger|cashsmaller|cbrt|ceil|ceiling|center|char|char_length|character_length|chareq|charge|chargt|charin|charle|charlt|charne|charout|charrecv|charsend|chr|cideq|cidin|cidout|cidr|cidr_in|cidr_out|cidr_recv|cidr_send|cidrecv|cidsend|circle|circle_above|circle_add_pt|circle_below|circle_center|circle_contain|circle_contain_pt|circle_contained|circle_distance|circle_div_pt|circle_eq|circle_ge|circle_gt|circle_in|circle_le|circle_left|circle_lt|circle_mul_pt|circle_ne|circle_out|circle_overabove|circle_overbelow|circle_overlap|circle_overleft|circle_overright|circle_recv|circle_right|circle_same|circle_send|circle_sub_pt|clock_timestamp|close_lb|close_ls|close_lseg|close_pb|close_pl|close_ps|close_sb|close_sl|col_description|concat|concat_ws|contjoinsel|contsel|convert|convert_from|convert_to|corr|cos|cot|count|covar_pop|covar_samp|cstring_in|cstring_out|cstring_recv|cstring_send|cume_dist|current_database|current_query|current_schema|current_schemas|current_setting|current_user|currtid|currtid2|currval|cursor_to_xml|cursor_to_xmlschema|database_to_xml|database_to_xml_and_xmlschema|database_to_xmlschema|date|date_cmp|date_cmp_timestamp|date_cmp_timestamptz|date_eq|date_eq_timestamp|date_eq_timestamptz|date_ge|date_ge_timestamp|date_ge_timestamptz|date_gt|date_gt_timestamp|date_gt_timestamptz|date_in|date_larger|date_le|date_le_timestamp|date_le_timestamptz|date_lt|date_lt_timestamp|date_lt_timestamptz|date_mi|date_mi_interval|date_mii|date_ne|date_ne_timestamp|date_ne_timestamptz|date_out|date_part|date_pl_interval|date_pli|date_recv|date_send|date_smaller|date_sortsupport|date_trunc|daterange|daterange_canonical|daterange_subdiff|datetime_pl|datetimetz_pl|dcbrt|decode|degrees|dense_rank|dexp|diagonal|diameter|dispell_init|dispell_lexize|dist_cpoly|dist_lb|dist_pb|dist_pc|dist_pl|dist_ppath|dist_ps|dist_sb|dist_sl|div|dlog1|dlog10|domain_in|domain_recv|dpow|dround|dsimple_init|dsimple_lexize|dsnowball_init|dsnowball_lexize|dsqrt|dsynonym_init|dsynonym_lexize|dtrunc|elem_contained_by_range|encode|enum_cmp|enum_eq|enum_first|enum_ge|enum_gt|enum_in|enum_larger|enum_last|enum_le|enum_lt|enum_ne|enum_out|enum_range|enum_recv|enum_send|enum_smaller|eqjoinsel|eqsel|euc_cn_to_mic|euc_cn_to_utf8|euc_jis_2004_to_shift_jis_2004|euc_jis_2004_to_utf8|euc_jp_to_mic|euc_jp_to_sjis|euc_jp_to_utf8|euc_kr_to_mic|euc_kr_to_utf8|euc_tw_to_big5|euc_tw_to_mic|euc_tw_to_utf8|event_trigger_in|event_trigger_out|every|exp|factorial|family|fdw_handler_in|fdw_handler_out|first_value|float4|float48div|float48eq|float48ge|float48gt|float48le|float48lt|float48mi|float48mul|float48ne|float48pl|float4_accum|float4abs|float4div|float4eq|float4ge|float4gt|float4in|float4larger|float4le|float4lt|float4mi|float4mul|float4ne|float4out|float4pl|float4recv|float4send|float4smaller|float4um|float4up|float8|float84div|float84eq|float84ge|float84gt|float84le|float84lt|float84mi|float84mul|float84ne|float84pl|float8_accum|float8_avg|float8_corr|float8_covar_pop|float8_covar_samp|float8_regr_accum|float8_regr_avgx|float8_regr_avgy|float8_regr_intercept|float8_regr_r2|float8_regr_slope|float8_regr_sxx|float8_regr_sxy|float8_regr_syy|float8_stddev_pop|float8_stddev_samp|float8_var_pop|float8_var_samp|float8abs|float8div|float8eq|float8ge|float8gt|float8in|float8larger|float8le|float8lt|float8mi|float8mul|float8ne|float8out|float8pl|float8recv|float8send|float8smaller|float8um|float8up|floor|flt4_mul_cash|flt8_mul_cash|fmgr_c_validator|fmgr_internal_validator|fmgr_sql_validator|format|format_type|gb18030_to_utf8|gbk_to_utf8|generate_series|generate_subscripts|get_bit|get_byte|get_current_ts_config|getdatabaseencoding|getpgusername|gin_cmp_prefix|gin_cmp_tslexeme|gin_extract_tsquery|gin_extract_tsvector|gin_tsquery_consistent|ginarrayconsistent|ginarrayextract|ginbeginscan|ginbuild|ginbuildempty|ginbulkdelete|gincostestimate|ginendscan|gingetbitmap|gininsert|ginmarkpos|ginoptions|ginqueryarrayextract|ginrescan|ginrestrpos|ginvacuumcleanup|gist_box_compress|gist_box_consistent|gist_box_decompress|gist_box_penalty|gist_box_picksplit|gist_box_same|gist_box_union|gist_circle_compress|gist_circle_consistent|gist_point_compress|gist_point_consistent|gist_point_distance|gist_poly_compress|gist_poly_consistent|gistbeginscan|gistbuild|gistbuildempty|gistbulkdelete|gistcostestimate|gistendscan|gistgetbitmap|gistgettuple|gistinsert|gistmarkpos|gistoptions|gistrescan|gistrestrpos|gistvacuumcleanup|gtsquery_compress|gtsquery_consistent|gtsquery_decompress|gtsquery_penalty|gtsquery_picksplit|gtsquery_same|gtsquery_union|gtsvector_compress|gtsvector_consistent|gtsvector_decompress|gtsvector_penalty|gtsvector_picksplit|gtsvector_same|gtsvector_union|gtsvectorin|gtsvectorout|has_any_column_privilege|has_column_privilege|has_database_privilege|has_foreign_data_wrapper_privilege|has_function_privilege|has_language_privilege|has_schema_privilege|has_sequence_privilege|has_server_privilege|has_table_privilege|has_tablespace_privilege|has_type_privilege|hash_aclitem|hash_array|hash_numeric|hash_range|hashbeginscan|hashbpchar|hashbuild|hashbuildempty|hashbulkdelete|hashchar|hashcostestimate|hashendscan|hashenum|hashfloat4|hashfloat8|hashgetbitmap|hashgettuple|hashinet|hashinsert|hashint2|hashint2vector|hashint4|hashint8|hashmacaddr|hashmarkpos|hashname|hashoid|hashoidvector|hashoptions|hashrescan|hashrestrpos|hashtext|hashvacuumcleanup|hashvarlena|height|host|hostmask|iclikejoinsel|iclikesel|icnlikejoinsel|icnlikesel|icregexeqjoinsel|icregexeqsel|icregexnejoinsel|icregexnesel|inet_client_addr|inet_client_port|inet_in|inet_out|inet_recv|inet_send|inet_server_addr|inet_server_port|inetand|inetmi|inetmi_int8|inetnot|inetor|inetpl|initcap|int2|int24div|int24eq|int24ge|int24gt|int24le|int24lt|int24mi|int24mul|int24ne|int24pl|int28div|int28eq|int28ge|int28gt|int28le|int28lt|int28mi|int28mul|int28ne|int28pl|int2_accum|int2_avg_accum|int2_mul_cash|int2_sum|int2abs|int2and|int2div|int2eq|int2ge|int2gt|int2in|int2larger|int2le|int2lt|int2mi|int2mod|int2mul|int2ne|int2not|int2or|int2out|int2pl|int2recv|int2send|int2shl|int2shr|int2smaller|int2um|int2up|int2vectoreq|int2vectorin|int2vectorout|int2vectorrecv|int2vectorsend|int2xor|int4|int42div|int42eq|int42ge|int42gt|int42le|int42lt|int42mi|int42mul|int42ne|int42pl|int48div|int48eq|int48ge|int48gt|int48le|int48lt|int48mi|int48mul|int48ne|int48pl|int4_accum|int4_avg_accum|int4_mul_cash|int4_sum|int4abs|int4and|int4div|int4eq|int4ge|int4gt|int4in|int4inc|int4larger|int4le|int4lt|int4mi|int4mod|int4mul|int4ne|int4not|int4or|int4out|int4pl|int4range|int4range_canonical|int4range_subdiff|int4recv|int4send|int4shl|int4shr|int4smaller|int4um|int4up|int4xor|int8|int82div|int82eq|int82ge|int82gt|int82le|int82lt|int82mi|int82mul|int82ne|int82pl|int84div|int84eq|int84ge|int84gt|int84le|int84lt|int84mi|int84mul|int84ne|int84pl|int8_accum|int8_avg|int8_avg_accum|int8_sum|int8abs|int8and|int8div|int8eq|int8ge|int8gt|int8in|int8inc|int8inc_any|int8inc_float8_float8|int8larger|int8le|int8lt|int8mi|int8mod|int8mul|int8ne|int8not|int8or|int8out|int8pl|int8pl_inet|int8range|int8range_canonical|int8range_subdiff|int8recv|int8send|int8shl|int8shr|int8smaller|int8um|int8up|int8xor|integer_pl_date|inter_lb|inter_sb|inter_sl|internal_in|internal_out|interval_accum|interval_avg|interval_cmp|interval_div|interval_eq|interval_ge|interval_gt|interval_hash|interval_in|interval_larger|interval_le|interval_lt|interval_mi|interval_mul|interval_ne|interval_out|interval_pl|interval_pl_date|interval_pl_time|interval_pl_timestamp|interval_pl_timestamptz|interval_pl_timetz|interval_recv|interval_send|interval_smaller|interval_transform|interval_um|intervaltypmodin|intervaltypmodout|intinterval|isclosed|isempty|isfinite|ishorizontal|iso8859_1_to_utf8|iso8859_to_utf8|iso_to_koi8r|iso_to_mic|iso_to_win1251|iso_to_win866|isopen|isparallel|isperp|isvertical|johab_to_utf8|json_agg|json_agg_finalfn|json_agg_transfn|json_array_element|json_array_element_text|json_array_elements|json_array_length|json_each|json_each_text|json_extract_path|json_extract_path_op|json_extract_path_text|json_extract_path_text_op|json_in|json_object_field|json_object_field_text|json_object_keys|json_out|json_populate_record|json_populate_recordset|json_recv|json_send|justify_days|justify_hours|justify_interval|koi8r_to_iso|koi8r_to_mic|koi8r_to_utf8|koi8r_to_win1251|koi8r_to_win866|koi8u_to_utf8|lag|language_handler_in|language_handler_out|last_value|lastval|latin1_to_mic|latin2_to_mic|latin2_to_win1250|latin3_to_mic|latin4_to_mic|lead|left|length|like|like_escape|likejoinsel|likesel|line|line_distance|line_eq|line_horizontal|line_in|line_interpt|line_intersect|line_out|line_parallel|line_perp|line_recv|line_send|line_vertical|ln|lo_close|lo_creat|lo_create|lo_export|lo_import|lo_lseek|lo_lseek64|lo_open|lo_tell|lo_tell64|lo_truncate|lo_truncate64|lo_unlink|log|loread|lower|lower_inc|lower_inf|lowrite|lpad|lseg|lseg_center|lseg_distance|lseg_eq|lseg_ge|lseg_gt|lseg_horizontal|lseg_in|lseg_interpt|lseg_intersect|lseg_le|lseg_length|lseg_lt|lseg_ne|lseg_out|lseg_parallel|lseg_perp|lseg_recv|lseg_send|lseg_vertical|ltrim|macaddr_and|macaddr_cmp|macaddr_eq|macaddr_ge|macaddr_gt|macaddr_in|macaddr_le|macaddr_lt|macaddr_ne|macaddr_not|macaddr_or|macaddr_out|macaddr_recv|macaddr_send|makeaclitem|masklen|max|md5|mic_to_ascii|mic_to_big5|mic_to_euc_cn|mic_to_euc_jp|mic_to_euc_kr|mic_to_euc_tw|mic_to_iso|mic_to_koi8r|mic_to_latin1|mic_to_latin2|mic_to_latin3|mic_to_latin4|mic_to_sjis|mic_to_win1250|mic_to_win1251|mic_to_win866|min|mktinterval|mod|money|mul_d_interval|name|nameeq|namege|namegt|nameiclike|nameicnlike|nameicregexeq|nameicregexne|namein|namele|namelike|namelt|namene|namenlike|nameout|namerecv|nameregexeq|nameregexne|namesend|neqjoinsel|neqsel|netmask|network|network_cmp|network_eq|network_ge|network_gt|network_le|network_lt|network_ne|network_sub|network_subeq|network_sup|network_supeq|nextval|nlikejoinsel|nlikesel|notlike|now|npoints|nth_value|ntile|numeric_abs|numeric_accum|numeric_add|numeric_avg|numeric_avg_accum|numeric_cmp|numeric_div|numeric_div_trunc|numeric_eq|numeric_exp|numeric_fac|numeric_ge|numeric_gt|numeric_in|numeric_inc|numeric_larger|numeric_le|numeric_ln|numeric_log|numeric_lt|numeric_mod|numeric_mul|numeric_ne|numeric_out|numeric_power|numeric_recv|numeric_send|numeric_smaller|numeric_sqrt|numeric_stddev_pop|numeric_stddev_samp|numeric_sub|numeric_transform|numeric_uminus|numeric_uplus|numeric_var_pop|numeric_var_samp|numerictypmodin|numerictypmodout|numnode|numrange|numrange_subdiff|obj_description|octet_length|oid|oideq|oidge|oidgt|oidin|oidlarger|oidle|oidlt|oidne|oidout|oidrecv|oidsend|oidsmaller|oidvectoreq|oidvectorge|oidvectorgt|oidvectorin|oidvectorle|oidvectorlt|oidvectorne|oidvectorout|oidvectorrecv|oidvectorsend|oidvectortypes|on_pb|on_pl|on_ppath|on_ps|on_sb|on_sl|opaque_in|opaque_out|overlaps|overlay|path|path_add|path_add_pt|path_center|path_contain_pt|path_distance|path_div_pt|path_in|path_inter|path_length|path_mul_pt|path_n_eq|path_n_ge|path_n_gt|path_n_le|path_n_lt|path_npoints|path_out|path_recv|path_send|path_sub_pt|pclose|percent_rank|pg_advisory_lock|pg_advisory_lock_shared|pg_advisory_unlock|pg_advisory_unlock_all|pg_advisory_unlock_shared|pg_advisory_xact_lock|pg_advisory_xact_lock_shared|pg_available_extension_versions|pg_available_extensions|pg_backend_pid|pg_backup_start_time|pg_cancel_backend|pg_char_to_encoding|pg_client_encoding|pg_collation_for|pg_collation_is_visible|pg_column_is_updatable|pg_column_size|pg_conf_load_time|pg_conversion_is_visible|pg_create_restore_point|pg_current_xlog_insert_location|pg_current_xlog_location|pg_cursor|pg_database_size|pg_describe_object|pg_encoding_max_length|pg_encoding_to_char|pg_event_trigger_dropped_objects|pg_export_snapshot|pg_extension_config_dump|pg_extension_update_paths|pg_function_is_visible|pg_get_constraintdef|pg_get_expr|pg_get_function_arguments|pg_get_function_identity_arguments|pg_get_function_result|pg_get_functiondef|pg_get_indexdef|pg_get_keywords|pg_get_multixact_members|pg_get_ruledef|pg_get_serial_sequence|pg_get_triggerdef|pg_get_userbyid|pg_get_viewdef|pg_has_role|pg_identify_object|pg_indexes_size|pg_is_in_backup|pg_is_in_recovery|pg_is_other_temp_schema|pg_is_xlog_replay_paused|pg_last_xact_replay_timestamp|pg_last_xlog_receive_location|pg_last_xlog_replay_location|pg_listening_channels|pg_lock_status|pg_ls_dir|pg_my_temp_schema|pg_node_tree_in|pg_node_tree_out|pg_node_tree_recv|pg_node_tree_send|pg_notify|pg_opclass_is_visible|pg_operator_is_visible|pg_opfamily_is_visible|pg_options_to_table|pg_postmaster_start_time|pg_prepared_statement|pg_prepared_xact|pg_read_binary_file|pg_read_file|pg_relation_filenode|pg_relation_filepath|pg_relation_is_updatable|pg_relation_size|pg_reload_conf|pg_rotate_logfile|pg_sequence_parameters|pg_show_all_settings|pg_size_pretty|pg_sleep|pg_start_backup|pg_stat_clear_snapshot|pg_stat_file|pg_stat_get_activity|pg_stat_get_analyze_count|pg_stat_get_autoanalyze_count|pg_stat_get_autovacuum_count|pg_stat_get_backend_activity|pg_stat_get_backend_activity_start|pg_stat_get_backend_client_addr|pg_stat_get_backend_client_port|pg_stat_get_backend_dbid|pg_stat_get_backend_idset|pg_stat_get_backend_pid|pg_stat_get_backend_start|pg_stat_get_backend_userid|pg_stat_get_backend_waiting|pg_stat_get_backend_xact_start|pg_stat_get_bgwriter_buf_written_checkpoints|pg_stat_get_bgwriter_buf_written_clean|pg_stat_get_bgwriter_maxwritten_clean|pg_stat_get_bgwriter_requested_checkpoints|pg_stat_get_bgwriter_stat_reset_time|pg_stat_get_bgwriter_timed_checkpoints|pg_stat_get_blocks_fetched|pg_stat_get_blocks_hit|pg_stat_get_buf_alloc|pg_stat_get_buf_fsync_backend|pg_stat_get_buf_written_backend|pg_stat_get_checkpoint_sync_time|pg_stat_get_checkpoint_write_time|pg_stat_get_db_blk_read_time|pg_stat_get_db_blk_write_time|pg_stat_get_db_blocks_fetched|pg_stat_get_db_blocks_hit|pg_stat_get_db_conflict_all|pg_stat_get_db_conflict_bufferpin|pg_stat_get_db_conflict_lock|pg_stat_get_db_conflict_snapshot|pg_stat_get_db_conflict_startup_deadlock|pg_stat_get_db_conflict_tablespace|pg_stat_get_db_deadlocks|pg_stat_get_db_numbackends|pg_stat_get_db_stat_reset_time|pg_stat_get_db_temp_bytes|pg_stat_get_db_temp_files|pg_stat_get_db_tuples_deleted|pg_stat_get_db_tuples_fetched|pg_stat_get_db_tuples_inserted|pg_stat_get_db_tuples_returned|pg_stat_get_db_tuples_updated|pg_stat_get_db_xact_commit|pg_stat_get_db_xact_rollback|pg_stat_get_dead_tuples|pg_stat_get_function_calls|pg_stat_get_function_self_time|pg_stat_get_function_total_time|pg_stat_get_last_analyze_time|pg_stat_get_last_autoanalyze_time|pg_stat_get_last_autovacuum_time|pg_stat_get_last_vacuum_time|pg_stat_get_live_tuples|pg_stat_get_numscans|pg_stat_get_tuples_deleted|pg_stat_get_tuples_fetched|pg_stat_get_tuples_hot_updated|pg_stat_get_tuples_inserted|pg_stat_get_tuples_returned|pg_stat_get_tuples_updated|pg_stat_get_vacuum_count|pg_stat_get_wal_senders|pg_stat_get_xact_blocks_fetched|pg_stat_get_xact_blocks_hit|pg_stat_get_xact_function_calls|pg_stat_get_xact_function_self_time|pg_stat_get_xact_function_total_time|pg_stat_get_xact_numscans|pg_stat_get_xact_tuples_deleted|pg_stat_get_xact_tuples_fetched|pg_stat_get_xact_tuples_hot_updated|pg_stat_get_xact_tuples_inserted|pg_stat_get_xact_tuples_returned|pg_stat_get_xact_tuples_updated|pg_stat_reset|pg_stat_reset_shared|pg_stat_reset_single_function_counters|pg_stat_reset_single_table_counters|pg_stop_backup|pg_switch_xlog|pg_table_is_visible|pg_table_size|pg_tablespace_databases|pg_tablespace_location|pg_tablespace_size|pg_terminate_backend|pg_timezone_abbrevs|pg_timezone_names|pg_total_relation_size|pg_trigger_depth|pg_try_advisory_lock|pg_try_advisory_lock_shared|pg_try_advisory_xact_lock|pg_try_advisory_xact_lock_shared|pg_ts_config_is_visible|pg_ts_dict_is_visible|pg_ts_parser_is_visible|pg_ts_template_is_visible|pg_type_is_visible|pg_typeof|pg_xlog_location_diff|pg_xlog_replay_pause|pg_xlog_replay_resume|pg_xlogfile_name|pg_xlogfile_name_offset|pi|plainto_tsquery|plpgsql_call_handler|plpgsql_inline_handler|plpgsql_validator|point|point_above|point_add|point_below|point_distance|point_div|point_eq|point_horiz|point_in|point_left|point_mul|point_ne|point_out|point_recv|point_right|point_send|point_sub|point_vert|poly_above|poly_below|poly_center|poly_contain|poly_contain_pt|poly_contained|poly_distance|poly_in|poly_left|poly_npoints|poly_out|poly_overabove|poly_overbelow|poly_overlap|poly_overleft|poly_overright|poly_recv|poly_right|poly_same|poly_send|polygon|popen|position|positionjoinsel|positionsel|postgresql_fdw_validator|pow|power|prsd_end|prsd_headline|prsd_lextype|prsd_nexttoken|prsd_start|pt_contained_circle|pt_contained_poly|query_to_xml|query_to_xml_and_xmlschema|query_to_xmlschema|querytree|quote_ident|quote_literal|quote_nullable|radians|radius|random|range_adjacent|range_after|range_before|range_cmp|range_contained_by|range_contains|range_contains_elem|range_eq|range_ge|range_gist_compress|range_gist_consistent|range_gist_decompress|range_gist_penalty|range_gist_picksplit|range_gist_same|range_gist_union|range_gt|range_in|range_intersect|range_le|range_lt|range_minus|range_ne|range_out|range_overlaps|range_overleft|range_overright|range_recv|range_send|range_typanalyze|range_union|rangesel|rank|record_eq|record_ge|record_gt|record_in|record_le|record_lt|record_ne|record_out|record_recv|record_send|regclass|regclassin|regclassout|regclassrecv|regclasssend|regconfigin|regconfigout|regconfigrecv|regconfigsend|regdictionaryin|regdictionaryout|regdictionaryrecv|regdictionarysend|regexeqjoinsel|regexeqsel|regexnejoinsel|regexnesel|regexp_matches|regexp_replace|regexp_split_to_array|regexp_split_to_table|regoperatorin|regoperatorout|regoperatorrecv|regoperatorsend|regoperin|regoperout|regoperrecv|regopersend|regprocedurein|regprocedureout|regprocedurerecv|regproceduresend|regprocin|regprocout|regprocrecv|regprocsend|regr_avgx|regr_avgy|regr_count|regr_intercept|regr_r2|regr_slope|regr_sxx|regr_sxy|regr_syy|regtypein|regtypeout|regtyperecv|regtypesend|reltime|reltimeeq|reltimege|reltimegt|reltimein|reltimele|reltimelt|reltimene|reltimeout|reltimerecv|reltimesend|repeat|replace|reverse|right|round|row_number|row_to_json|rpad|rtrim|scalargtjoinsel|scalargtsel|scalarltjoinsel|scalarltsel|schema_to_xml|schema_to_xml_and_xmlschema|schema_to_xmlschema|session_user|set_bit|set_byte|set_config|set_masklen|setseed|setval|setweight|shell_in|shell_out|shift_jis_2004_to_euc_jis_2004|shift_jis_2004_to_utf8|shobj_description|sign|similar_escape|sin|sjis_to_euc_jp|sjis_to_mic|sjis_to_utf8|slope|smgreq|smgrin|smgrne|smgrout|spg_kd_choose|spg_kd_config|spg_kd_inner_consistent|spg_kd_picksplit|spg_quad_choose|spg_quad_config|spg_quad_inner_consistent|spg_quad_leaf_consistent|spg_quad_picksplit|spg_range_quad_choose|spg_range_quad_config|spg_range_quad_inner_consistent|spg_range_quad_leaf_consistent|spg_range_quad_picksplit|spg_text_choose|spg_text_config|spg_text_inner_consistent|spg_text_leaf_consistent|spg_text_picksplit|spgbeginscan|spgbuild|spgbuildempty|spgbulkdelete|spgcanreturn|spgcostestimate|spgendscan|spggetbitmap|spggettuple|spginsert|spgmarkpos|spgoptions|spgrescan|spgrestrpos|spgvacuumcleanup|split_part|sqrt|statement_timestamp|stddev|stddev_pop|stddev_samp|string_agg|string_agg_finalfn|string_agg_transfn|string_to_array|strip|strpos|substr|substring|sum|suppress_redundant_updates_trigger|table_to_xml|table_to_xml_and_xmlschema|table_to_xmlschema|tan|text|text_ge|text_gt|text_larger|text_le|text_lt|text_pattern_ge|text_pattern_gt|text_pattern_le|text_pattern_lt|text_smaller|textanycat|textcat|texteq|texticlike|texticnlike|texticregexeq|texticregexne|textin|textlen|textlike|textne|textnlike|textout|textrecv|textregexeq|textregexne|textsend|thesaurus_init|thesaurus_lexize|tideq|tidge|tidgt|tidin|tidlarger|tidle|tidlt|tidne|tidout|tidrecv|tidsend|tidsmaller|time_cmp|time_eq|time_ge|time_gt|time_hash|time_in|time_larger|time_le|time_lt|time_mi_interval|time_mi_time|time_ne|time_out|time_pl_interval|time_recv|time_send|time_smaller|time_transform|timedate_pl|timemi|timenow|timeofday|timepl|timestamp_cmp|timestamp_cmp_date|timestamp_cmp_timestamptz|timestamp_eq|timestamp_eq_date|timestamp_eq_timestamptz|timestamp_ge|timestamp_ge_date|timestamp_ge_timestamptz|timestamp_gt|timestamp_gt_date|timestamp_gt_timestamptz|timestamp_hash|timestamp_in|timestamp_larger|timestamp_le|timestamp_le_date|timestamp_le_timestamptz|timestamp_lt|timestamp_lt_date|timestamp_lt_timestamptz|timestamp_mi|timestamp_mi_interval|timestamp_ne|timestamp_ne_date|timestamp_ne_timestamptz|timestamp_out|timestamp_pl_interval|timestamp_recv|timestamp_send|timestamp_smaller|timestamp_sortsupport|timestamp_transform|timestamptypmodin|timestamptypmodout|timestamptz_cmp|timestamptz_cmp_date|timestamptz_cmp_timestamp|timestamptz_eq|timestamptz_eq_date|timestamptz_eq_timestamp|timestamptz_ge|timestamptz_ge_date|timestamptz_ge_timestamp|timestamptz_gt|timestamptz_gt_date|timestamptz_gt_timestamp|timestamptz_in|timestamptz_larger|timestamptz_le|timestamptz_le_date|timestamptz_le_timestamp|timestamptz_lt|timestamptz_lt_date|timestamptz_lt_timestamp|timestamptz_mi|timestamptz_mi_interval|timestamptz_ne|timestamptz_ne_date|timestamptz_ne_timestamp|timestamptz_out|timestamptz_pl_interval|timestamptz_recv|timestamptz_send|timestamptz_smaller|timestamptztypmodin|timestamptztypmodout|timetypmodin|timetypmodout|timetz_cmp|timetz_eq|timetz_ge|timetz_gt|timetz_hash|timetz_in|timetz_larger|timetz_le|timetz_lt|timetz_mi_interval|timetz_ne|timetz_out|timetz_pl_interval|timetz_recv|timetz_send|timetz_smaller|timetzdate_pl|timetztypmodin|timetztypmodout|timezone|tinterval|tintervalct|tintervalend|tintervaleq|tintervalge|tintervalgt|tintervalin|tintervalle|tintervalleneq|tintervallenge|tintervallengt|tintervallenle|tintervallenlt|tintervallenne|tintervallt|tintervalne|tintervalout|tintervalov|tintervalrecv|tintervalrel|tintervalsame|tintervalsend|tintervalstart|to_ascii|to_char|to_date|to_hex|to_json|to_number|to_timestamp|to_tsquery|to_tsvector|transaction_timestamp|translate|trigger_in|trigger_out|trunc|ts_debug|ts_headline|ts_lexize|ts_match_qv|ts_match_tq|ts_match_tt|ts_match_vq|ts_parse|ts_rank|ts_rank_cd|ts_rewrite|ts_stat|ts_token_type|ts_typanalyze|tsmatchjoinsel|tsmatchsel|tsq_mcontained|tsq_mcontains|tsquery_and|tsquery_cmp|tsquery_eq|tsquery_ge|tsquery_gt|tsquery_le|tsquery_lt|tsquery_ne|tsquery_not|tsquery_or|tsqueryin|tsqueryout|tsqueryrecv|tsquerysend|tsrange|tsrange_subdiff|tstzrange|tstzrange_subdiff|tsvector_cmp|tsvector_concat|tsvector_eq|tsvector_ge|tsvector_gt|tsvector_le|tsvector_lt|tsvector_ne|tsvector_update_trigger|tsvector_update_trigger_column|tsvectorin|tsvectorout|tsvectorrecv|tsvectorsend|txid_current|txid_current_snapshot|txid_snapshot_in|txid_snapshot_out|txid_snapshot_recv|txid_snapshot_send|txid_snapshot_xip|txid_snapshot_xmax|txid_snapshot_xmin|txid_visible_in_snapshot|uhc_to_utf8|unique_key_recheck|unknownin|unknownout|unknownrecv|unknownsend|unnest|upper|upper_inc|upper_inf|utf8_to_ascii|utf8_to_big5|utf8_to_euc_cn|utf8_to_euc_jis_2004|utf8_to_euc_jp|utf8_to_euc_kr|utf8_to_euc_tw|utf8_to_gb18030|utf8_to_gbk|utf8_to_iso8859|utf8_to_iso8859_1|utf8_to_johab|utf8_to_koi8r|utf8_to_koi8u|utf8_to_shift_jis_2004|utf8_to_sjis|utf8_to_uhc|utf8_to_win|uuid_cmp|uuid_eq|uuid_ge|uuid_gt|uuid_hash|uuid_in|uuid_le|uuid_lt|uuid_ne|uuid_out|uuid_recv|uuid_send|var_pop|var_samp|varbit_in|varbit_out|varbit_recv|varbit_send|varbit_transform|varbitcmp|varbiteq|varbitge|varbitgt|varbitle|varbitlt|varbitne|varbittypmodin|varbittypmodout|varchar_transform|varcharin|varcharout|varcharrecv|varcharsend|varchartypmodin|varchartypmodout|variance|version|void_in|void_out|void_recv|void_send|width|width_bucket|win1250_to_latin2|win1250_to_mic|win1251_to_iso|win1251_to_koi8r|win1251_to_mic|win1251_to_win866|win866_to_iso|win866_to_koi8r|win866_to_mic|win866_to_win1251|win_to_utf8|xideq|xideqint4|xidin|xidout|xidrecv|xidsend|xml|xml_in|xml_is_well_formed|xml_is_well_formed_content|xml_is_well_formed_document|xml_out|xml_recv|xml_send|xmlagg|xmlcomment|xmlconcat2|xmlexists|xmlvalidate|xpath|xpath_exists",n=this.createKeywordMapper({"support.function":t,keyword:e},"identifier",!0),r=[{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"variable.language",regex:'".*?"'},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:n,regex:"[a-zA-Z_][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|~=|~>=~|~>~|~~|~~\\*"},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}];this.$rules={start:[{token:"comment",regex:"--.*$"},s.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"keyword.statementBegin",regex:"^[a-zA-Z]+",next:"statement"},{token:"support.buildin",regex:"^\\\\[\\S]+.*$"}],statement:[{token:"comment",regex:"--.*$"},{token:"comment",regex:"\\/\\*",next:"commentStatement"},{token:"statementEnd",regex:";",next:"start"},{token:"string",regex:"\\$perl\\$",next:"perl-start"},{token:"string",regex:"\\$python\\$",next:"python-start"},{token:"string",regex:"\\$json\\$",next:"json-start"},{token:"string",regex:"\\$(js|javascript)\\$",next:"javascript-start"},{token:"string",regex:"\\$[\\w_0-9]*\\$$",next:"dollarSql"},{token:"string",regex:"\\$[\\w_0-9]*\\$",next:"dollarStatementString"}].concat(r),dollarSql:[{token:"comment",regex:"--.*$"},{token:"comment",regex:"\\/\\*",next:"commentDollarSql"},{token:"string",regex:"^\\$[\\w_0-9]*\\$",next:"statement"},{token:"string",regex:"\\$[\\w_0-9]*\\$",next:"dollarSqlString"}].concat(r),comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],commentStatement:[{token:"comment",regex:".*?\\*\\/",next:"statement"},{token:"comment",regex:".+"}],commentDollarSql:[{token:"comment",regex:".*?\\*\\/",next:"dollarSql"},{token:"comment",regex:".+"}],dollarStatementString:[{token:"string",regex:".*?\\$[\\w_0-9]*\\$",next:"statement"},{token:"string",regex:".+"}],dollarSqlString:[{token:"string",regex:".*?\\$[\\w_0-9]*\\$",next:"dollarSql"},{token:"string",regex:".+"}]},this.embedRules(s,"doc-",[s.getEndRule("start")]),this.embedRules(u,"perl-",[{token:"string",regex:"\\$perl\\$",next:"statement"}]),this.embedRules(a,"python-",[{token:"string",regex:"\\$python\\$",next:"statement"}]),this.embedRules(f,"json-",[{token:"string",regex:"\\$json\\$",next:"statement"}]),this.embedRules(l,"javascript-",[{token:"string",regex:"\\$(js|javascript)\\$",next:"statement"}])};r.inherits(c,o),t.PgsqlHighlightRules=c}),ace.define("ace/mode/pgsql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pgsql_highlight_rules","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("../mode/text").Mode,s=e("./pgsql_highlight_rules").PgsqlHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="--",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){return e=="start"||e=="keyword.statementEnd"?"":this.$getIndent(t)},this.$id="ace/mode/pgsql"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-php.js b/library/ace/mode-php.js
new file mode 100644
index 000000000..ecd3ed3a2
--- /dev/null
+++ b/library/ace/mode-php.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/php_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=e("./html_highlight_rules").HtmlHighlightRules,a=function(){var e=s,t=i.arrayToMap("abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_combine|array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|class_parents|class_uses|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|get_declared_interfaces|get_declared_traits|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|m_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|m_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|m_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|m_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_bind_param|mysqli_bind_result|mysqli_client_encoding|mysqli_connect|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_escape_string|mysqli_execute|mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_report|mysqli_result|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_send_long_data|mysqli_send_query|mysqli_set_opt|mysqli_slave_query|mysqli_stmt|mysqli_warning|mysqlnd_ms_get_stats|mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|require|require_once|reset|resetValue|resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|trait_exists|transliterator|traversable|trigger_error|trim|uasort|ucfirst|ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type".split("|")),n=i.arrayToMap("abstract|and|array|as|break|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|final|for|foreach|function|global|goto|if|implements|interface|instanceof|namespace|new|or|private|protected|public|static|switch|throw|trait|try|use|var|while|xor".split("|")),r=i.arrayToMap("die|echo|empty|exit|eval|include|include_once|isset|list|require|require_once|return|print|unset".split("|")),o=i.arrayToMap("true|TRUE|false|FALSE|null|NULL|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__".split("|")),u=i.arrayToMap("$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|$http_response_header|$argc|$argv".split("|")),a=i.arrayToMap("key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregisterset_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|sql_regcase".split("|")),f=i.arrayToMap("cfunction|old_function".split("|")),l=i.arrayToMap([]);this.$rules={start:[{token:"comment",regex:/(?:#|\/\/)(?:[^?]|\?[^>])*/},e.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)"},{token:"string",regex:'"',next:"qqstring"},{token:"string",regex:"'",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language",regex:"\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|VERSION))|__COMPILER_HALT_OFFSET__)\\b"},{token:["keyword","text","support.class"],regex:"\\b(new)(\\s+)(\\w+)"},{token:["support.class","keyword.operator"],regex:"\\b(\\w+)(::)"},{token:"constant.language",regex:"\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b"},{token:function(e){return n.hasOwnProperty(e)?"keyword":o.hasOwnProperty(e)?"constant.language":u.hasOwnProperty(e)?"variable.language":l.hasOwnProperty(e)?"invalid.illegal":t.hasOwnProperty(e)?"support.function":e=="debugger"?"invalid.deprecated":e.match(/^(\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*|self|parent)$/)?"variable":"identifier"},regex:/[a-zA-Z_$\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/},{onMatch:function(e,t,n){e=e.substr(3);if(e[0]=="'"||e[0]=='"')e=e.slice(1,-1);return n.unshift(this.next,e),"markup.list"},regex:/<<<(?:\w+|'\w+'|"\w+")$/,next:"heredoc"},{token:"keyword.operator",regex:"::|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|!=|!==|<=|>=|=>|<<=|>>=|>>>=|<>|<|>|=|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],heredoc:[{onMatch:function(e,t,n){return n[1]!=e?"string":(n.shift(),n.shift(),"markup.list")},regex:"^\\w+(?=;?$)",next:"start"},{token:"string",regex:".*"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],qqstring:[{token:"constant.language.escape",regex:'\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})'},{token:"variable",regex:/\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/},{token:"variable",regex:/\$\{[^"\}]+\}?/},{token:"string",regex:'"',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string",regex:"'",next:"start"},{defaultToken:"string"}]},this.embedRules(s,"doc-",[s.getEndRule("start")])};r.inherits(a,o);var f=function(){u.call(this);var e=[{token:"support.php_tag",regex:"<\\?(?:php|=)?",push:"php-start"}],t=[{token:"support.php_tag",regex:"\\?>",next:"pop"}];for(var n in this.$rules)this.$rules[n].unshift.apply(this.$rules[n],e);this.embedRules(a,"php-",t,["start"]),this.normalizeRules()};r.inherits(f,u),t.PhpHighlightRules=f,t.PhpLangHighlightRules=a}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/php_completions",["require","exports","module"],function(e,t,n){"use strict";function s(e,t){return e.type.lastIndexOf(t)>-1}var r={abs:["int abs(int number)","Return the absolute value of the number"],acos:["float acos(float number)","Return the arc cosine of the number in radians"],acosh:["float acosh(float number)","Returns the inverse hyperbolic cosine of the number, i.e. the value whose hyperbolic cosine is number"],addGlob:["bool addGlob(string pattern[,int flags [, array options]])","Add files matching the glob pattern. See php's glob for the pattern syntax."],addPattern:["bool addPattern(string pattern[, string path [, array options]])","Add files matching the pcre pattern. See php's pcre for the pattern syntax."],addcslashes:["string addcslashes(string str, string charlist)","Escapes all chars mentioned in charlist with backslash. It creates octal representations if asked to backslash characters with 8th bit set or with ASCII<32 (except '\\n', '\\r', '\\t' etc...)"],addslashes:["string addslashes(string str)","Escapes single quote, double quotes and backslash characters in a string with backslashes"],apache_child_terminate:["bool apache_child_terminate(void)","Terminate apache process after this request"],apache_get_modules:["array apache_get_modules(void)","Get a list of loaded Apache modules"],apache_get_version:["string apache_get_version(void)","Fetch Apache version"],apache_getenv:["bool apache_getenv(string variable [, bool walk_to_top])","Get an Apache subprocess_env variable"],apache_lookup_uri:["object apache_lookup_uri(string URI)","Perform a partial request of the given URI to obtain information about it"],apache_note:["string apache_note(string note_name [, string note_value])","Get and set Apache request notes"],apache_request_auth_name:["string apache_request_auth_name()",""],apache_request_auth_type:["string apache_request_auth_type()",""],apache_request_discard_request_body:["long apache_request_discard_request_body()",""],apache_request_err_headers_out:["array apache_request_err_headers_out([{string name|array list} [, string value [, bool replace = false]]])","* fetch all headers that go out in case of an error or a subrequest"],apache_request_headers:["array apache_request_headers(void)","Fetch all HTTP request headers"],apache_request_headers_in:["array apache_request_headers_in()","* fetch all incoming request headers"],apache_request_headers_out:["array apache_request_headers_out([{string name|array list} [, string value [, bool replace = false]]])","* fetch all outgoing request headers"],apache_request_is_initial_req:["bool apache_request_is_initial_req()",""],apache_request_log_error:["boolean apache_request_log_error(string message, [long facility])",""],apache_request_meets_conditions:["long apache_request_meets_conditions()",""],apache_request_remote_host:["int apache_request_remote_host([int type])",""],apache_request_run:["long apache_request_run()","This is a wrapper for ap_sub_run_req and ap_destory_sub_req. It takes sub_request, runs it, destroys it, and returns it's status."],apache_request_satisfies:["long apache_request_satisfies()",""],apache_request_server_port:["int apache_request_server_port()",""],apache_request_set_etag:["void apache_request_set_etag()",""],apache_request_set_last_modified:["void apache_request_set_last_modified()",""],apache_request_some_auth_required:["bool apache_request_some_auth_required()",""],apache_request_sub_req_lookup_file:["object apache_request_sub_req_lookup_file(string file)","Returns sub-request for the specified file. You would need to run it yourself with run()."],apache_request_sub_req_lookup_uri:["object apache_request_sub_req_lookup_uri(string uri)","Returns sub-request for the specified uri. You would need to run it yourself with run()"],apache_request_sub_req_method_uri:["object apache_request_sub_req_method_uri(string method, string uri)","Returns sub-request for the specified file. You would need to run it yourself with run()."],apache_request_update_mtime:["long apache_request_update_mtime([int dependency_mtime])",""],apache_reset_timeout:["bool apache_reset_timeout(void)","Reset the Apache write timer"],apache_response_headers:["array apache_response_headers(void)","Fetch all HTTP response headers"],apache_setenv:["bool apache_setenv(string variable, string value [, bool walk_to_top])","Set an Apache subprocess_env variable"],array_change_key_case:["array array_change_key_case(array input [, int case=CASE_LOWER])","Retuns an array with all string keys lowercased [or uppercased]"],array_chunk:["array array_chunk(array input, int size [, bool preserve_keys])","Split array into chunks"],array_combine:["array array_combine(array keys, array values)","Creates an array by using the elements of the first parameter as keys and the elements of the second as the corresponding values"],array_count_values:["array array_count_values(array input)","Return the value as key and the frequency of that value in input as value"],array_diff:["array array_diff(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have values which are not present in any of the others arguments."],array_diff_assoc:["array array_diff_assoc(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal"],array_diff_key:["array array_diff_key(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have keys which are not present in any of the others arguments. This function is like array_diff() but works on the keys instead of the values. The associativity is preserved."],array_diff_uassoc:["array array_diff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func)","Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Elements are compared by user supplied function."],array_diff_ukey:["array array_diff_ukey(array arr1, array arr2 [, array ...], callback key_comp_func)","Returns the entries of arr1 that have keys which are not present in any of the others arguments. User supplied function is used for comparing the keys. This function is like array_udiff() but works on the keys instead of the values. The associativity is preserved."],array_fill:["array array_fill(int start_key, int num, mixed val)","Create an array containing num elements starting with index start_key each initialized to val"],array_fill_keys:["array array_fill_keys(array keys, mixed val)","Create an array using the elements of the first parameter as keys each initialized to val"],array_filter:["array array_filter(array input [, mixed callback])","Filters elements from the array via the callback."],array_flip:["array array_flip(array input)","Return array with key <-> value flipped"],array_intersect:["array array_intersect(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have values which are present in all the other arguments"],array_intersect_assoc:["array array_intersect_assoc(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check"],array_intersect_key:["array array_intersect_key(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). Equivalent of array_intersect_assoc() but does not do compare of the data."],array_intersect_uassoc:["array array_intersect_uassoc(array arr1, array arr2 [, array ...], callback key_compare_func)","Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check and they are compared by using an user-supplied callback."],array_intersect_ukey:["array array_intersect_ukey(array arr1, array arr2 [, array ...], callback key_compare_func)","Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). The comparison of the keys is performed by a user supplied function. Equivalent of array_intersect_uassoc() but does not do compare of the data."],array_key_exists:["bool array_key_exists(mixed key, array search)","Checks if the given key or index exists in the array"],array_keys:["array array_keys(array input [, mixed search_value[, bool strict]])","Return just the keys from the input array, optionally only for the specified search_value"],array_map:["array array_map(mixed callback, array input1 [, array input2 ,...])","Applies the callback to the elements in given arrays."],array_merge:["array array_merge(array arr1, array arr2 [, array ...])","Merges elements from passed arrays into one array"],array_merge_recursive:["array array_merge_recursive(array arr1, array arr2 [, array ...])","Recursively merges elements from passed arrays into one array"],array_multisort:["bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...])","Sort multiple arrays at once similar to how ORDER BY clause works in SQL"],array_pad:["array array_pad(array input, int pad_size, mixed pad_value)","Returns a copy of input array padded with pad_value to size pad_size"],array_pop:["mixed array_pop(array stack)","Pops an element off the end of the array"],array_product:["mixed array_product(array input)","Returns the product of the array entries"],array_push:["int array_push(array stack, mixed var [, mixed ...])","Pushes elements onto the end of the array"],array_rand:["mixed array_rand(array input [, int num_req])","Return key/keys for random entry/entries in the array"],array_reduce:["mixed array_reduce(array input, mixed callback [, mixed initial])","Iteratively reduce the array to a single value via the callback."],array_replace:["array array_replace(array arr1, array arr2 [, array ...])","Replaces elements from passed arrays into one array"],array_replace_recursive:["array array_replace_recursive(array arr1, array arr2 [, array ...])","Recursively replaces elements from passed arrays into one array"],array_reverse:["array array_reverse(array input [, bool preserve keys])","Return input as a new array with the order of the entries reversed"],array_search:["mixed array_search(mixed needle, array haystack [, bool strict])","Searches the array for a given value and returns the corresponding key if successful"],array_shift:["mixed array_shift(array stack)","Pops an element off the beginning of the array"],array_slice:["array array_slice(array input, int offset [, int length [, bool preserve_keys]])","Returns elements specified by offset and length"],array_splice:["array array_splice(array input, int offset [, int length [, array replacement]])","Removes the elements designated by offset and length and replace them with supplied array"],array_sum:["mixed array_sum(array input)","Returns the sum of the array entries"],array_udiff:["array array_udiff(array arr1, array arr2 [, array ...], callback data_comp_func)","Returns the entries of arr1 that have values which are not present in any of the others arguments. Elements are compared by user supplied function."],array_udiff_assoc:["array array_udiff_assoc(array arr1, array arr2 [, array ...], callback key_comp_func)","Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys are compared by user supplied function."],array_udiff_uassoc:["array array_udiff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func, callback key_comp_func)","Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys and elements are compared by user supplied functions."],array_uintersect:["array array_uintersect(array arr1, array arr2 [, array ...], callback data_compare_func)","Returns the entries of arr1 that have values which are present in all the other arguments. Data is compared by using an user-supplied callback."],array_uintersect_assoc:["array array_uintersect_assoc(array arr1, array arr2 [, array ...], callback data_compare_func)","Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Data is compared by using an user-supplied callback."],array_uintersect_uassoc:["array array_uintersect_uassoc(array arr1, array arr2 [, array ...], callback data_compare_func, callback key_compare_func)","Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Both data and keys are compared by using user-supplied callbacks."],array_unique:["array array_unique(array input [, int sort_flags])","Removes duplicate values from array"],array_unshift:["int array_unshift(array stack, mixed var [, mixed ...])","Pushes elements onto the beginning of the array"],array_values:["array array_values(array input)","Return just the values from the input array"],array_walk:["bool array_walk(array input, string funcname [, mixed userdata])","Apply a user function to every member of an array"],array_walk_recursive:["bool array_walk_recursive(array input, string funcname [, mixed userdata])","Apply a user function recursively to every member of an array"],arsort:["bool arsort(array &array_arg [, int sort_flags])","Sort an array in reverse order and maintain index association"],asin:["float asin(float number)","Returns the arc sine of the number in radians"],asinh:["float asinh(float number)","Returns the inverse hyperbolic sine of the number, i.e. the value whose hyperbolic sine is number"],asort:["bool asort(array &array_arg [, int sort_flags])","Sort an array and maintain index association"],assert:["int assert(string|bool assertion)","Checks if assertion is false"],assert_options:["mixed assert_options(int what [, mixed value])","Set/get the various assert flags"],atan:["float atan(float number)","Returns the arc tangent of the number in radians"],atan2:["float atan2(float y, float x)","Returns the arc tangent of y/x, with the resulting quadrant determined by the signs of y and x"],atanh:["float atanh(float number)","Returns the inverse hyperbolic tangent of the number, i.e. the value whose hyperbolic tangent is number"],attachIterator:["void attachIterator(Iterator iterator[, mixed info])","Attach a new iterator"],base64_decode:["string base64_decode(string str[, bool strict])","Decodes string using MIME base64 algorithm"],base64_encode:["string base64_encode(string str)","Encodes string using MIME base64 algorithm"],base_convert:["string base_convert(string number, int frombase, int tobase)","Converts a number in a string from any base <= 36 to any base <= 36"],basename:["string basename(string path [, string suffix])","Returns the filename component of the path"],bcadd:["string bcadd(string left_operand, string right_operand [, int scale])","Returns the sum of two arbitrary precision numbers"],bccomp:["int bccomp(string left_operand, string right_operand [, int scale])","Compares two arbitrary precision numbers"],bcdiv:["string bcdiv(string left_operand, string right_operand [, int scale])","Returns the quotient of two arbitrary precision numbers (division)"],bcmod:["string bcmod(string left_operand, string right_operand)","Returns the modulus of the two arbitrary precision operands"],bcmul:["string bcmul(string left_operand, string right_operand [, int scale])","Returns the multiplication of two arbitrary precision numbers"],bcpow:["string bcpow(string x, string y [, int scale])","Returns the value of an arbitrary precision number raised to the power of another"],bcpowmod:["string bcpowmod(string x, string y, string mod [, int scale])","Returns the value of an arbitrary precision number raised to the power of another reduced by a modulous"],bcscale:["bool bcscale(int scale)","Sets default scale parameter for all bc math functions"],bcsqrt:["string bcsqrt(string operand [, int scale])","Returns the square root of an arbitray precision number"],bcsub:["string bcsub(string left_operand, string right_operand [, int scale])","Returns the difference between two arbitrary precision numbers"],bin2hex:["string bin2hex(string data)","Converts the binary representation of data to hex"],bind_textdomain_codeset:["string bind_textdomain_codeset (string domain, string codeset)","Specify the character encoding in which the messages from the DOMAIN message catalog will be returned."],bindec:["int bindec(string binary_number)","Returns the decimal equivalent of the binary number"],bindtextdomain:["string bindtextdomain(string domain_name, string dir)","Bind to the text domain domain_name, looking for translations in dir. Returns the current domain"],birdstep_autocommit:["bool birdstep_autocommit(int index)",""],birdstep_close:["bool birdstep_close(int id)",""],birdstep_commit:["bool birdstep_commit(int index)",""],birdstep_connect:["int birdstep_connect(string server, string user, string pass)",""],birdstep_exec:["int birdstep_exec(int index, string exec_str)",""],birdstep_fetch:["bool birdstep_fetch(int index)",""],birdstep_fieldname:["string birdstep_fieldname(int index, int col)",""],birdstep_fieldnum:["int birdstep_fieldnum(int index)",""],birdstep_freeresult:["bool birdstep_freeresult(int index)",""],birdstep_off_autocommit:["bool birdstep_off_autocommit(int index)",""],birdstep_result:["mixed birdstep_result(int index, mixed col)",""],birdstep_rollback:["bool birdstep_rollback(int index)",""],bzcompress:["string bzcompress(string source [, int blocksize100k [, int workfactor]])","Compresses a string into BZip2 encoded data"],bzdecompress:["string bzdecompress(string source [, int small])","Decompresses BZip2 compressed data"],bzerrno:["int bzerrno(resource bz)","Returns the error number"],bzerror:["array bzerror(resource bz)","Returns the error number and error string in an associative array"],bzerrstr:["string bzerrstr(resource bz)","Returns the error string"],bzopen:["resource bzopen(string|int file|fp, string mode)","Opens a new BZip2 stream"],bzread:["string bzread(resource bz[, int length])","Reads up to length bytes from a BZip2 stream, or 1024 bytes if length is not specified"],cal_days_in_month:["int cal_days_in_month(int calendar, int month, int year)","Returns the number of days in a month for a given year and calendar"],cal_from_jd:["array cal_from_jd(int jd, int calendar)","Converts from Julian Day Count to a supported calendar and return extended information"],cal_info:["array cal_info([int calendar])","Returns information about a particular calendar"],cal_to_jd:["int cal_to_jd(int calendar, int month, int day, int year)","Converts from a supported calendar to Julian Day Count"],call_user_func:["mixed call_user_func(mixed function_name [, mixed parmeter] [, mixed ...])","Call a user function which is the first parameter"],call_user_func_array:["mixed call_user_func_array(string function_name, array parameters)","Call a user function which is the first parameter with the arguments contained in array"],call_user_method:["mixed call_user_method(string method_name, mixed object [, mixed parameter] [, mixed ...])","Call a user method on a specific object or class"],call_user_method_array:["mixed call_user_method_array(string method_name, mixed object, array params)","Call a user method on a specific object or class using a parameter array"],ceil:["float ceil(float number)","Returns the next highest integer value of the number"],chdir:["bool chdir(string directory)","Change the current directory"],checkdate:["bool checkdate(int month, int day, int year)","Returns true(1) if it is a valid date in gregorian calendar"],chgrp:["bool chgrp(string filename, mixed group)","Change file group"],chmod:["bool chmod(string filename, int mode)","Change file mode"],chown:["bool chown (string filename, mixed user)","Change file owner"],chr:["string chr(int ascii)","Converts ASCII code to a character"],chroot:["bool chroot(string directory)","Change root directory"],chunk_split:["string chunk_split(string str [, int chunklen [, string ending]])","Returns split line"],class_alias:["bool class_alias(string user_class_name , string alias_name [, bool autoload])","Creates an alias for user defined class"],class_exists:["bool class_exists(string classname [, bool autoload])","Checks if the class exists"],class_implements:["array class_implements(mixed what [, bool autoload ])","Return all classes and interfaces implemented by SPL"],class_parents:["array class_parents(object instance [, boolean autoload = true])","Return an array containing the names of all parent classes"],clearstatcache:["void clearstatcache([bool clear_realpath_cache[, string filename]])","Clear file stat cache"],closedir:["void closedir([resource dir_handle])","Close directory connection identified by the dir_handle"],closelog:["bool closelog(void)","Close connection to system logger"],collator_asort:["bool collator_asort( Collator $coll, array(string) $arr )","* Sort array using specified collator, maintaining index association."],collator_compare:["int collator_compare( Collator $coll, string $str1, string $str2 )","* Compare two strings."],collator_create:["Collator collator_create( string $locale )","* Create collator."],collator_get_attribute:["int collator_get_attribute( Collator $coll, int $attr )","* Get collation attribute value."],collator_get_error_code:["int collator_get_error_code( Collator $coll )","* Get collator's last error code."],collator_get_error_message:["string collator_get_error_message( Collator $coll )","* Get text description for collator's last error code."],collator_get_locale:["string collator_get_locale( Collator $coll, int $type )","* Gets the locale name of the collator."],collator_get_sort_key:["bool collator_get_sort_key( Collator $coll, string $str )","* Get a sort key for a string from a Collator. }}}"],collator_get_strength:["int collator_get_strength(Collator coll)","* Returns the current collation strength."],collator_set_attribute:["bool collator_set_attribute( Collator $coll, int $attr, int $val )","* Set collation attribute."],collator_set_strength:["bool collator_set_strength(Collator coll, int strength)","* Set the collation strength."],collator_sort:["bool collator_sort( Collator $coll, array(string) $arr [, int $sort_flags] )","* Sort array using specified collator."],collator_sort_with_sort_keys:["bool collator_sort_with_sort_keys( Collator $coll, array(string) $arr )","* Equivalent to standard PHP sort using Collator. * Uses ICU ucol_getSortKey for performance."],com_create_guid:["string com_create_guid()","Generate a globally unique identifier (GUID)"],com_event_sink:["bool com_event_sink(object comobject, object sinkobject [, mixed sinkinterface])","Connect events from a COM object to a PHP object"],com_get_active_object:["object com_get_active_object(string progid [, int code_page ])","Returns a handle to an already running instance of a COM object"],com_load_typelib:["bool com_load_typelib(string typelib_name [, int case_insensitive])","Loads a Typelibrary and registers its constants"],com_message_pump:["bool com_message_pump([int timeoutms])","Process COM messages, sleeping for up to timeoutms milliseconds"],com_print_typeinfo:["bool com_print_typeinfo(object comobject | string typelib, string dispinterface, bool wantsink)","Print out a PHP class definition for a dispatchable interface"],compact:["array compact(mixed var_names [, mixed ...])","Creates a hash containing variables and their values"],compose_locale:["static string compose_locale($array)","* Creates a locale by combining the parts of locale-ID passed * }}}"],confirm_extname_compiled:["string confirm_extname_compiled(string arg)","Return a string to confirm that the module is compiled in"],connection_aborted:["int connection_aborted(void)","Returns true if client disconnected"],connection_status:["int connection_status(void)","Returns the connection status bitfield"],constant:["mixed constant(string const_name)","Given the name of a constant this function will return the constant's associated value"],convert_cyr_string:["string convert_cyr_string(string str, string from, string to)","Convert from one Cyrillic character set to another"],convert_uudecode:["string convert_uudecode(string data)","decode a uuencoded string"],convert_uuencode:["string convert_uuencode(string data)","uuencode a string"],copy:["bool copy(string source_file, string destination_file [, resource context])","Copy a file"],cos:["float cos(float number)","Returns the cosine of the number in radians"],cosh:["float cosh(float number)","Returns the hyperbolic cosine of the number, defined as (exp(number) + exp(-number))/2"],count:["int count(mixed var [, int mode])","Count the number of elements in a variable (usually an array)"],count_chars:["mixed count_chars(string input [, int mode])","Returns info about what characters are used in input"],crc32:["string crc32(string str)","Calculate the crc32 polynomial of a string"],create_function:["string create_function(string args, string code)","Creates an anonymous function, and returns its name (funny, eh?)"],crypt:["string crypt(string str [, string salt])","Hash a string"],ctype_alnum:["bool ctype_alnum(mixed c)","Checks for alphanumeric character(s)"],ctype_alpha:["bool ctype_alpha(mixed c)","Checks for alphabetic character(s)"],ctype_cntrl:["bool ctype_cntrl(mixed c)","Checks for control character(s)"],ctype_digit:["bool ctype_digit(mixed c)","Checks for numeric character(s)"],ctype_graph:["bool ctype_graph(mixed c)","Checks for any printable character(s) except space"],ctype_lower:["bool ctype_lower(mixed c)","Checks for lowercase character(s)"],ctype_print:["bool ctype_print(mixed c)","Checks for printable character(s)"],ctype_punct:["bool ctype_punct(mixed c)","Checks for any printable character which is not whitespace or an alphanumeric character"],ctype_space:["bool ctype_space(mixed c)","Checks for whitespace character(s)"],ctype_upper:["bool ctype_upper(mixed c)","Checks for uppercase character(s)"],ctype_xdigit:["bool ctype_xdigit(mixed c)","Checks for character(s) representing a hexadecimal digit"],curl_close:["void curl_close(resource ch)","Close a cURL session"],curl_copy_handle:["resource curl_copy_handle(resource ch)","Copy a cURL handle along with all of it's preferences"],curl_errno:["int curl_errno(resource ch)","Return an integer containing the last error number"],curl_error:["string curl_error(resource ch)","Return a string contain the last error for the current session"],curl_exec:["bool curl_exec(resource ch)","Perform a cURL session"],curl_getinfo:["mixed curl_getinfo(resource ch [, int option])","Get information regarding a specific transfer"],curl_init:["resource curl_init([string url])","Initialize a cURL session"],curl_multi_add_handle:["int curl_multi_add_handle(resource mh, resource ch)","Add a normal cURL handle to a cURL multi handle"],curl_multi_close:["void curl_multi_close(resource mh)","Close a set of cURL handles"],curl_multi_exec:["int curl_multi_exec(resource mh, int &still_running)","Run the sub-connections of the current cURL handle"],curl_multi_getcontent:["string curl_multi_getcontent(resource ch)","Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is set"],curl_multi_info_read:["array curl_multi_info_read(resource mh [, long msgs_in_queue])","Get information about the current transfers"],curl_multi_init:["resource curl_multi_init(void)","Returns a new cURL multi handle"],curl_multi_remove_handle:["int curl_multi_remove_handle(resource mh, resource ch)","Remove a multi handle from a set of cURL handles"],curl_multi_select:["int curl_multi_select(resource mh[, double timeout])",'Get all the sockets associated with the cURL extension, which can then be "selected"'],curl_setopt:["bool curl_setopt(resource ch, int option, mixed value)","Set an option for a cURL transfer"],curl_setopt_array:["bool curl_setopt_array(resource ch, array options)","Set an array of option for a cURL transfer"],curl_version:["array curl_version([int version])","Return cURL version information."],current:["mixed current(array array_arg)","Return the element currently pointed to by the internal array pointer"],date:["string date(string format [, long timestamp])","Format a local date/time"],date_add:["DateTime date_add(DateTime object, DateInterval interval)","Adds an interval to the current date in object."],date_create:["DateTime date_create([string time[, DateTimeZone object]])","Returns new DateTime object"],date_create_from_format:["DateTime date_create_from_format(string format, string time[, DateTimeZone object])","Returns new DateTime object formatted according to the specified format"],date_date_set:["DateTime date_date_set(DateTime object, long year, long month, long day)","Sets the date."],date_default_timezone_get:["string date_default_timezone_get()","Gets the default timezone used by all date/time functions in a script"],date_default_timezone_set:["bool date_default_timezone_set(string timezone_identifier)","Sets the default timezone used by all date/time functions in a script"],date_diff:["DateInterval date_diff(DateTime object [, bool absolute])","Returns the difference between two DateTime objects."],date_format:["string date_format(DateTime object, string format)","Returns date formatted according to given format"],date_get_last_errors:["array date_get_last_errors()","Returns the warnings and errors found while parsing a date/time string."],date_interval_create_from_date_string:["DateInterval date_interval_create_from_date_string(string time)","Uses the normal date parsers and sets up a DateInterval from the relative parts of the parsed string"],date_interval_format:["string date_interval_format(DateInterval object, string format)","Formats the interval."],date_isodate_set:["DateTime date_isodate_set(DateTime object, long year, long week[, long day])","Sets the ISO date."],date_modify:["DateTime date_modify(DateTime object, string modify)","Alters the timestamp."],date_offset_get:["long date_offset_get(DateTime object)","Returns the DST offset."],date_parse:["array date_parse(string date)","Returns associative array with detailed info about given date"],date_parse_from_format:["array date_parse_from_format(string format, string date)","Returns associative array with detailed info about given date"],date_sub:["DateTime date_sub(DateTime object, DateInterval interval)","Subtracts an interval to the current date in object."],date_sun_info:["array date_sun_info(long time, float latitude, float longitude)","Returns an array with information about sun set/rise and twilight begin/end"],date_sunrise:["mixed date_sunrise(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])","Returns time of sunrise for a given day and location"],date_sunset:["mixed date_sunset(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])","Returns time of sunset for a given day and location"],date_time_set:["DateTime date_time_set(DateTime object, long hour, long minute[, long second])","Sets the time."],date_timestamp_get:["long date_timestamp_get(DateTime object)","Gets the Unix timestamp."],date_timestamp_set:["DateTime date_timestamp_set(DateTime object, long unixTimestamp)","Sets the date and time based on an Unix timestamp."],date_timezone_get:["DateTimeZone date_timezone_get(DateTime object)","Return new DateTimeZone object relative to give DateTime"],date_timezone_set:["DateTime date_timezone_set(DateTime object, DateTimeZone object)","Sets the timezone for the DateTime object."],datefmt_create:["IntlDateFormatter datefmt_create(string $locale, long date_type, long time_type[, string $timezone_str, long $calendar, string $pattern] )","* Create formatter."],datefmt_format:["string datefmt_format( [mixed]int $args or array $args )","* Format the time value as a string. }}}"],datefmt_get_calendar:["string datefmt_get_calendar( IntlDateFormatter $mf )","* Get formatter calendar."],datefmt_get_datetype:["string datefmt_get_datetype( IntlDateFormatter $mf )","* Get formatter datetype."],datefmt_get_error_code:["int datefmt_get_error_code( IntlDateFormatter $nf )","* Get formatter's last error code."],datefmt_get_error_message:["string datefmt_get_error_message( IntlDateFormatter $coll )","* Get text description for formatter's last error code."],datefmt_get_locale:["string datefmt_get_locale(IntlDateFormatter $mf)","* Get formatter locale."],datefmt_get_pattern:["string datefmt_get_pattern( IntlDateFormatter $mf )","* Get formatter pattern."],datefmt_get_timetype:["string datefmt_get_timetype( IntlDateFormatter $mf )","* Get formatter timetype."],datefmt_get_timezone_id:["string datefmt_get_timezone_id( IntlDateFormatter $mf )","* Get formatter timezone_id."],datefmt_isLenient:["string datefmt_isLenient(IntlDateFormatter $mf)","* Get formatter locale."],datefmt_localtime:["integer datefmt_localtime( IntlDateFormatter $fmt, string $text_to_parse[, int $parse_pos ])","* Parse the string $value to a localtime array }}}"],datefmt_parse:["integer datefmt_parse( IntlDateFormatter $fmt, string $text_to_parse [, int $parse_pos] )","* Parse the string $value starting at parse_pos to a Unix timestamp -int }}}"],datefmt_setLenient:["string datefmt_setLenient(IntlDateFormatter $mf)","* Set formatter lenient."],datefmt_set_calendar:["bool datefmt_set_calendar( IntlDateFormatter $mf, int $calendar )","* Set formatter calendar."],datefmt_set_pattern:["bool datefmt_set_pattern( IntlDateFormatter $mf, string $pattern )","* Set formatter pattern."],datefmt_set_timezone_id:["boolean datefmt_set_timezone_id( IntlDateFormatter $mf,$timezone_id)","* Set formatter timezone_id."],dba_close:["void dba_close(resource handle)","Closes database"],dba_delete:["bool dba_delete(string key, resource handle)","Deletes the entry associated with key If inifile: remove all other key lines"],dba_exists:["bool dba_exists(string key, resource handle)","Checks, if the specified key exists"],dba_fetch:["string dba_fetch(string key, [int skip ,] resource handle)","Fetches the data associated with key"],dba_firstkey:["string dba_firstkey(resource handle)","Resets the internal key pointer and returns the first key"],dba_handlers:["array dba_handlers([bool full_info])","List configured database handlers"],dba_insert:["bool dba_insert(string key, string value, resource handle)","If not inifile: Insert value as key, return false, if key exists already If inifile: Add vakue as key (next instance of key)"],dba_key_split:["array|false dba_key_split(string key)","Splits an inifile key into an array of the form array(0=>group,1=>value_name) but returns false if input is false or null"],dba_list:["array dba_list()","List opened databases"],dba_nextkey:["string dba_nextkey(resource handle)","Returns the next key"],dba_open:["resource dba_open(string path, string mode [, string handlername, string ...])","Opens path using the specified handler in mode"],dba_optimize:["bool dba_optimize(resource handle)","Optimizes (e.g. clean up, vacuum) database"],dba_popen:["resource dba_popen(string path, string mode [, string handlername, string ...])","Opens path using the specified handler in mode persistently"],dba_replace:["bool dba_replace(string key, string value, resource handle)","Inserts value as key, replaces key, if key exists already If inifile: remove all other key lines"],dba_sync:["bool dba_sync(resource handle)","Synchronizes database"],dcgettext:["string dcgettext(string domain_name, string msgid, long category)","Return the translation of msgid for domain_name and category, or msgid unaltered if a translation does not exist"],dcngettext:["string dcngettext (string domain, string msgid1, string msgid2, int n, int category)","Plural version of dcgettext()"],debug_backtrace:["array debug_backtrace([bool provide_object])","Return backtrace as array"],debug_print_backtrace:["void debug_print_backtrace(void) */","ZEND_FUNCTION(debug_print_backtrace) { zend_execute_data *ptr, *skip; int lineno; char *function_name; char *filename; char *class_name = NULL; char *call_type; char *include_filename = NULL; zval *arg_array = NULL; int indent = 0; if (zend_parse_parameters_none() == FAILURE) { return; } ptr = EG(current_execute_data); /* skip debug_backtrace()"],debug_zval_dump:["void debug_zval_dump(mixed var)","Dumps a string representation of an internal zend value to output."],decbin:["string decbin(int decimal_number)","Returns a string containing a binary representation of the number"],dechex:["string dechex(int decimal_number)","Returns a string containing a hexadecimal representation of the given number"],decoct:["string decoct(int decimal_number)","Returns a string containing an octal representation of the given number"],define:["bool define(string constant_name, mixed value, boolean case_insensitive=false)","Define a new constant"],define_syslog_variables:["void define_syslog_variables(void)","Initializes all syslog-related variables"],defined:["bool defined(string constant_name)","Check whether a constant exists"],deg2rad:["float deg2rad(float number)","Converts the number in degrees to the radian equivalent"],dgettext:["string dgettext(string domain_name, string msgid)","Return the translation of msgid for domain_name, or msgid unaltered if a translation does not exist"],die:["void die([mixed status])","Output a message and terminate the current script"],dir:["object dir(string directory[, resource context])","Directory class with properties, handle and class and methods read, rewind and close"],dirname:["string dirname(string path)","Returns the directory name component of the path"],disk_free_space:["float disk_free_space(string path)","Get free disk space for filesystem that path is on"],disk_total_space:["float disk_total_space(string path)","Get total disk space for filesystem that path is on"],display_disabled_function:["void display_disabled_function(void)","Dummy function which displays an error when a disabled function is called."],dl:["int dl(string extension_filename)","Load a PHP extension at runtime"],dngettext:["string dngettext (string domain, string msgid1, string msgid2, int count)","Plural version of dgettext()"],dns_check_record:["bool dns_check_record(string host [, string type])","Check DNS records corresponding to a given Internet host name or IP address"],dns_get_mx:["bool dns_get_mx(string hostname, array mxhosts [, array weight])","Get MX records corresponding to a given Internet host name"],dns_get_record:["array|false dns_get_record(string hostname [, int type[, array authns, array addtl]])","Get any Resource Record corresponding to a given Internet host name"],dom_attr_is_id:["boolean dom_attr_is_id();","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Attr-isId Since: DOM Level 3"],dom_characterdata_append_data:["void dom_characterdata_append_data(string arg);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-32791A2F Since:"],dom_characterdata_delete_data:["void dom_characterdata_delete_data(int offset, int count);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-7C603781 Since:"],dom_characterdata_insert_data:["void dom_characterdata_insert_data(int offset, string arg);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3EDB695F Since:"],dom_characterdata_replace_data:["void dom_characterdata_replace_data(int offset, int count, string arg);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-E5CBA7FB Since:"],dom_characterdata_substring_data:["string dom_characterdata_substring_data(int offset, int count);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6531BCCF Since:"],dom_document_adopt_node:["DOMNode dom_document_adopt_node(DOMNode source);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-adoptNode Since: DOM Level 3"],dom_document_create_attribute:["DOMAttr dom_document_create_attribute(string name);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1084891198 Since:"],dom_document_create_attribute_ns:["DOMAttr dom_document_create_attribute_ns(string namespaceURI, string qualifiedName);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrAttrNS Since: DOM Level 2"],dom_document_create_cdatasection:["DOMCdataSection dom_document_create_cdatasection(string data);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D26C0AF8 Since:"],dom_document_create_comment:["DOMComment dom_document_create_comment(string data);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1334481328 Since:"],dom_document_create_document_fragment:["DOMDocumentFragment dom_document_create_document_fragment();","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-35CB04B5 Since:"],dom_document_create_element:["DOMElement dom_document_create_element(string tagName [, string value]);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-2141741547 Since:"],dom_document_create_element_ns:["DOMElement dom_document_create_element_ns(string namespaceURI, string qualifiedName [,string value]);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrElNS Since: DOM Level 2"],dom_document_create_entity_reference:["DOMEntityReference dom_document_create_entity_reference(string name);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-392B75AE Since:"],dom_document_create_processing_instruction:["DOMProcessingInstruction dom_document_create_processing_instruction(string target, string data);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-135944439 Since:"],dom_document_create_text_node:["DOMText dom_document_create_text_node(string data);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1975348127 Since:"],dom_document_get_element_by_id:["DOMElement dom_document_get_element_by_id(string elementId);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBId Since: DOM Level 2"],dom_document_get_elements_by_tag_name:["DOMNodeList dom_document_get_elements_by_tag_name(string tagname);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C9094 Since:"],dom_document_get_elements_by_tag_name_ns:["DOMNodeList dom_document_get_elements_by_tag_name_ns(string namespaceURI, string localName);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBTNNS Since: DOM Level 2"],dom_document_import_node:["DOMNode dom_document_import_node(DOMNode importedNode, boolean deep);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Core-Document-importNode Since: DOM Level 2"],dom_document_load:["DOMNode dom_document_load(string source [, int options]);","URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-load Since: DOM Level 3"],dom_document_load_html:["DOMNode dom_document_load_html(string source);","Since: DOM extended"],dom_document_load_html_file:["DOMNode dom_document_load_html_file(string source);","Since: DOM extended"],dom_document_loadxml:["DOMNode dom_document_loadxml(string source [, int options]);","URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-loadXML Since: DOM Level 3"],dom_document_normalize_document:["void dom_document_normalize_document();","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-normalizeDocument Since: DOM Level 3"],dom_document_relaxNG_validate_file:["boolean dom_document_relaxNG_validate_file(string filename); */","PHP_FUNCTION(dom_document_relaxNG_validate_file) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_relaxNG_validate_file"],dom_document_relaxNG_validate_xml:["boolean dom_document_relaxNG_validate_xml(string source); */","PHP_FUNCTION(dom_document_relaxNG_validate_xml) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_relaxNG_validate_xml"],dom_document_rename_node:["DOMNode dom_document_rename_node(node n, string namespaceURI, string qualifiedName);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-renameNode Since: DOM Level 3"],dom_document_save:["int dom_document_save(string file);","Convenience method to save to file"],dom_document_save_html:["string dom_document_save_html();","Convenience method to output as html"],dom_document_save_html_file:["int dom_document_save_html_file(string file);","Convenience method to save to file as html"],dom_document_savexml:["string dom_document_savexml([node n]);","URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-saveXML Since: DOM Level 3"],dom_document_schema_validate:["boolean dom_document_schema_validate(string source); */","PHP_FUNCTION(dom_document_schema_validate_xml) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_schema_validate"],dom_document_schema_validate_file:["boolean dom_document_schema_validate_file(string filename); */","PHP_FUNCTION(dom_document_schema_validate_file) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_schema_validate_file"],dom_document_validate:["boolean dom_document_validate();","Since: DOM extended"],dom_document_xinclude:["int dom_document_xinclude([int options])","Substitutues xincludes in a DomDocument"],dom_domconfiguration_can_set_parameter:["boolean dom_domconfiguration_can_set_parameter(string name, domuserdata value);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-canSetParameter Since:"],dom_domconfiguration_get_parameter:["domdomuserdata dom_domconfiguration_get_parameter(string name);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-getParameter Since:"],dom_domconfiguration_set_parameter:["dom_void dom_domconfiguration_set_parameter(string name, domuserdata value);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-property Since:"],dom_domerrorhandler_handle_error:["dom_boolean dom_domerrorhandler_handle_error(domerror error);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-ERRORS-DOMErrorHandler-handleError Since:"],dom_domimplementation_create_document:["DOMDocument dom_domimplementation_create_document(string namespaceURI, string qualifiedName, DOMDocumentType doctype);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocument Since: DOM Level 2"],dom_domimplementation_create_document_type:["DOMDocumentType dom_domimplementation_create_document_type(string qualifiedName, string publicId, string systemId);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocType Since: DOM Level 2"],dom_domimplementation_get_feature:["DOMNode dom_domimplementation_get_feature(string feature, string version);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementation3-getFeature Since: DOM Level 3"],dom_domimplementation_has_feature:["boolean dom_domimplementation_has_feature(string feature, string version);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-5CED94D7 Since:"],dom_domimplementationlist_item:["domdomimplementation dom_domimplementationlist_item(int index);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementationList-item Since:"],dom_domimplementationsource_get_domimplementation:["domdomimplementation dom_domimplementationsource_get_domimplementation(string features);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpl Since:"],dom_domimplementationsource_get_domimplementations:["domimplementationlist dom_domimplementationsource_get_domimplementations(string features);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpls Since:"],dom_domstringlist_item:["domstring dom_domstringlist_item(int index);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMStringList-item Since:"],dom_element_get_attribute:["string dom_element_get_attribute(string name);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-666EE0F9 Since:"],dom_element_get_attribute_node:["DOMAttr dom_element_get_attribute_node(string name);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-217A91B8 Since:"],dom_element_get_attribute_node_ns:["DOMAttr dom_element_get_attribute_node_ns(string namespaceURI, string localName);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAtNodeNS Since: DOM Level 2"],dom_element_get_attribute_ns:["string dom_element_get_attribute_ns(string namespaceURI, string localName);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAttrNS Since: DOM Level 2"],dom_element_get_elements_by_tag_name:["DOMNodeList dom_element_get_elements_by_tag_name(string name);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1938918D Since:"],dom_element_get_elements_by_tag_name_ns:["DOMNodeList dom_element_get_elements_by_tag_name_ns(string namespaceURI, string localName);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C90942 Since: DOM Level 2"],dom_element_has_attribute:["boolean dom_element_has_attribute(string name);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttr Since: DOM Level 2"],dom_element_has_attribute_ns:["boolean dom_element_has_attribute_ns(string namespaceURI, string localName);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrNS Since: DOM Level 2"],dom_element_remove_attribute:["void dom_element_remove_attribute(string name);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D6AC0F9 Since:"],dom_element_remove_attribute_node:["DOMAttr dom_element_remove_attribute_node(DOMAttr oldAttr);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D589198 Since:"],dom_element_remove_attribute_ns:["void dom_element_remove_attribute_ns(string namespaceURI, string localName);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElRemAtNS Since: DOM Level 2"],dom_element_set_attribute:["void dom_element_set_attribute(string name, string value);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68F082 Since:"],dom_element_set_attribute_node:["DOMAttr dom_element_set_attribute_node(DOMAttr newAttr);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-887236154 Since:"],dom_element_set_attribute_node_ns:["DOMAttr dom_element_set_attribute_node_ns(DOMAttr newAttr);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAtNodeNS Since: DOM Level 2"],dom_element_set_attribute_ns:["void dom_element_set_attribute_ns(string namespaceURI, string qualifiedName, string value);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAttrNS Since: DOM Level 2"],dom_element_set_id_attribute:["void dom_element_set_id_attribute(string name, boolean isId);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttr Since: DOM Level 3"],dom_element_set_id_attribute_node:["void dom_element_set_id_attribute_node(attr idAttr, boolean isId);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNode Since: DOM Level 3"],dom_element_set_id_attribute_ns:["void dom_element_set_id_attribute_ns(string namespaceURI, string localName, boolean isId);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNS Since: DOM Level 3"],dom_import_simplexml:["somNode dom_import_simplexml(sxeobject node)","Get a simplexml_element object from dom to allow for processing"],dom_namednodemap_get_named_item:["DOMNode dom_namednodemap_get_named_item(string name);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549 Since:"],dom_namednodemap_get_named_item_ns:["DOMNode dom_namednodemap_get_named_item_ns(string namespaceURI, string localName);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getNamedItemNS Since: DOM Level 2"],dom_namednodemap_item:["DOMNode dom_namednodemap_item(int index);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9 Since:"],dom_namednodemap_remove_named_item:["DOMNode dom_namednodemap_remove_named_item(string name);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D58B193 Since:"],dom_namednodemap_remove_named_item_ns:["DOMNode dom_namednodemap_remove_named_item_ns(string namespaceURI, string localName);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-removeNamedItemNS Since: DOM Level 2"],dom_namednodemap_set_named_item:["DOMNode dom_namednodemap_set_named_item(DOMNode arg);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1025163788 Since:"],dom_namednodemap_set_named_item_ns:["DOMNode dom_namednodemap_set_named_item_ns(DOMNode arg);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-setNamedItemNS Since: DOM Level 2"],dom_namelist_get_name:["string dom_namelist_get_name(int index);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getName Since:"],dom_namelist_get_namespace_uri:["string dom_namelist_get_namespace_uri(int index);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getNamespaceURI Since:"],dom_node_append_child:["DomNode dom_node_append_child(DomNode newChild);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-184E7107 Since:"],dom_node_clone_node:["DomNode dom_node_clone_node(boolean deep);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3A0ED0A4 Since:"],dom_node_compare_document_position:["short dom_node_compare_document_position(DomNode other);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-compareDocumentPosition Since: DOM Level 3"],dom_node_get_feature:["DomNode dom_node_get_feature(string feature, string version);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getFeature Since: DOM Level 3"],dom_node_get_user_data:["mixed dom_node_get_user_data(string key);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getUserData Since: DOM Level 3"],dom_node_has_attributes:["boolean dom_node_has_attributes();","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeHasAttrs Since: DOM Level 2"],dom_node_has_child_nodes:["boolean dom_node_has_child_nodes();","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-810594187 Since:"],dom_node_insert_before:["domnode dom_node_insert_before(DomNode newChild, DomNode refChild);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-952280727 Since:"],dom_node_is_default_namespace:["boolean dom_node_is_default_namespace(string namespaceURI);","URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isDefaultNamespace Since: DOM Level 3"],dom_node_is_equal_node:["boolean dom_node_is_equal_node(DomNode arg);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isEqualNode Since: DOM Level 3"],dom_node_is_same_node:["boolean dom_node_is_same_node(DomNode other);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isSameNode Since: DOM Level 3"],dom_node_is_supported:["boolean dom_node_is_supported(string feature, string version);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Level-2-Core-Node-supports Since: DOM Level 2"],dom_node_lookup_namespace_uri:["string dom_node_lookup_namespace_uri(string prefix);","URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI Since: DOM Level 3"],dom_node_lookup_prefix:["string dom_node_lookup_prefix(string namespaceURI);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-lookupNamespacePrefix Since: DOM Level 3"],dom_node_normalize:["void dom_node_normalize();","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-normalize Since:"],dom_node_remove_child:["DomNode dom_node_remove_child(DomNode oldChild);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1734834066 Since:"],dom_node_replace_child:["DomNode dom_node_replace_child(DomNode newChild, DomNode oldChild);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-785887307 Since:"],dom_node_set_user_data:["mixed dom_node_set_user_data(string key, mixed data, userdatahandler handler);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-setUserData Since: DOM Level 3"],dom_nodelist_item:["DOMNode dom_nodelist_item(int index);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-844377136 Since:"],dom_string_extend_find_offset16:["int dom_string_extend_find_offset16(int offset32);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset16 Since:"],dom_string_extend_find_offset32:["int dom_string_extend_find_offset32(int offset16);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset32 Since:"],dom_text_is_whitespace_in_element_content:["boolean dom_text_is_whitespace_in_element_content();","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-isWhitespaceInElementContent Since: DOM Level 3"],dom_text_replace_whole_text:["DOMText dom_text_replace_whole_text(string content);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-replaceWholeText Since: DOM Level 3"],dom_text_split_text:["DOMText dom_text_split_text(int offset);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-38853C1D Since:"],dom_userdatahandler_handle:["dom_void dom_userdatahandler_handle(short operation, string key, domobject data, node src, node dst);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-handleUserDataEvent Since:"],dom_xpath_evaluate:["mixed dom_xpath_evaluate(string expr [,DOMNode context]); */","PHP_FUNCTION(dom_xpath_evaluate) { php_xpath_eval(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_DOM_XPATH_EVALUATE); } /* }}} end dom_xpath_evaluate"],dom_xpath_query:["DOMNodeList dom_xpath_query(string expr [,DOMNode context]); */","PHP_FUNCTION(dom_xpath_query) { php_xpath_eval(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_DOM_XPATH_QUERY); } /* }}} end dom_xpath_query"],dom_xpath_register_ns:["boolean dom_xpath_register_ns(string prefix, string uri); */",'PHP_FUNCTION(dom_xpath_register_ns) { zval *id; xmlXPathContextPtr ctxp; int prefix_len, ns_uri_len; dom_xpath_object *intern; unsigned char *prefix, *ns_uri; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oss", &id, dom_xpath_class_entry, &prefix, &prefix_len, &ns_uri, &ns_uri_len) == FAILURE) { return; } intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); ctxp = (xmlXPathContextPtr) intern->ptr; if (ctxp == NULL) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid XPath Context"); RETURN_FALSE; } if (xmlXPathRegisterNs(ctxp, prefix, ns_uri) != 0) { RETURN_FALSE } RETURN_TRUE; } /* }}}'],dom_xpath_register_php_functions:["void dom_xpath_register_php_functions() */",'PHP_FUNCTION(dom_xpath_register_php_functions) { zval *id; dom_xpath_object *intern; zval *array_value, **entry, *new_string; int name_len = 0; char *name; DOM_GET_THIS(id); if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "a", &array_value) == SUCCESS) { intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); zend_hash_internal_pointer_reset(Z_ARRVAL_P(array_value)); while (zend_hash_get_current_data(Z_ARRVAL_P(array_value), (void **)&entry) == SUCCESS) { SEPARATE_ZVAL(entry); convert_to_string_ex(entry); MAKE_STD_ZVAL(new_string); ZVAL_LONG(new_string,1); zend_hash_update(intern->registered_phpfunctions, Z_STRVAL_PP(entry), Z_STRLEN_PP(entry) + 1, &new_string, sizeof(zval*), NULL); zend_hash_move_forward(Z_ARRVAL_P(array_value)); } intern->registerPhpFunctions = 2; RETURN_TRUE; } else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == SUCCESS) { intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); MAKE_STD_ZVAL(new_string); ZVAL_LONG(new_string,1); zend_hash_update(intern->registered_phpfunctions, name, name_len + 1, &new_string, sizeof(zval*), NULL); intern->registerPhpFunctions = 2; } else { intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); intern->registerPhpFunctions = 1; } } /* }}} end dom_xpath_register_php_functions'],each:["array each(array arr)","Return the currently pointed key..value pair in the passed array, and advance the pointer to the next element"],easter_date:["int easter_date([int year])","Return the timestamp of midnight on Easter of a given year (defaults to current year)"],easter_days:["int easter_days([int year, [int method]])","Return the number of days after March 21 that Easter falls on for a given year (defaults to current year)"],echo:["void echo(string arg1 [, string ...])","Output one or more strings"],empty:["bool empty( mixed var )","Determine whether a variable is empty"],enchant_broker_describe:["array enchant_broker_describe(resource broker)","Enumerates the Enchant providers and tells you some rudimentary information about them. The same info is provided through phpinfo()"],enchant_broker_dict_exists:["bool enchant_broker_dict_exists(resource broker, string tag)","Wether a dictionary exists or not. Using non-empty tag"],enchant_broker_free:["boolean enchant_broker_free(resource broker)","Destroys the broker object and its dictionnaries"],enchant_broker_free_dict:["resource enchant_broker_free_dict(resource dict)","Free the dictionary resource"],enchant_broker_get_dict_path:["string enchant_broker_get_dict_path(resource broker, int dict_type)","Get the directory path for a given backend, works with ispell and myspell"],enchant_broker_get_error:["string enchant_broker_get_error(resource broker)","Returns the last error of the broker"],enchant_broker_init:["resource enchant_broker_init()","create a new broker object capable of requesting"],enchant_broker_list_dicts:["string enchant_broker_list_dicts(resource broker)","Lists the dictionaries available for the given broker"],enchant_broker_request_dict:["resource enchant_broker_request_dict(resource broker, string tag)",'create a new dictionary using tag, the non-empty language tag you wish to request a dictionary for ("en_US", "de_DE", ...)'],enchant_broker_request_pwl_dict:["resource enchant_broker_request_pwl_dict(resource broker, string filename)","creates a dictionary using a PWL file. A PWL file is personal word file one word per line. It must exist before the call."],enchant_broker_set_dict_path:["bool enchant_broker_set_dict_path(resource broker, int dict_type, string value)","Set the directory path for a given backend, works with ispell and myspell"],enchant_broker_set_ordering:["bool enchant_broker_set_ordering(resource broker, string tag, string ordering)","Declares a preference of dictionaries to use for the language described/referred to by 'tag'. The ordering is a comma delimited list of provider names. As a special exception, the \"*\" tag can be used as a language tag to declare a default ordering for any language that does not explictly declare an ordering."],enchant_dict_add_to_personal:["void enchant_dict_add_to_personal(resource dict, string word)","add 'word' to personal word list"],enchant_dict_add_to_session:["void enchant_dict_add_to_session(resource dict, string word)","add 'word' to this spell-checking session"],enchant_dict_check:["bool enchant_dict_check(resource dict, string word)","If the word is correctly spelled return true, otherwise return false"],enchant_dict_describe:["array enchant_dict_describe(resource dict)","Describes an individual dictionary 'dict'"],enchant_dict_get_error:["string enchant_dict_get_error(resource dict)","Returns the last error of the current spelling-session"],enchant_dict_is_in_session:["bool enchant_dict_is_in_session(resource dict, string word)","whether or not 'word' exists in this spelling-session"],enchant_dict_quick_check:["bool enchant_dict_quick_check(resource dict, string word [, array &suggestions])","If the word is correctly spelled return true, otherwise return false, if suggestions variable is provided, fill it with spelling alternatives."],enchant_dict_store_replacement:["void enchant_dict_store_replacement(resource dict, string mis, string cor)","add a correction for 'mis' using 'cor'. Notes that you replaced @mis with @cor, so it's possibly more likely that future occurrences of @mis will be replaced with @cor. So it might bump @cor up in the suggestion list."],enchant_dict_suggest:["array enchant_dict_suggest(resource dict, string word)","Will return a list of values if any of those pre-conditions are not met."],end:["mixed end(array array_arg)","Advances array argument's internal pointer to the last element and return it"],ereg:["int ereg(string pattern, string string [, array registers])","Regular expression match"],ereg_replace:["string ereg_replace(string pattern, string replacement, string string)","Replace regular expression"],eregi:["int eregi(string pattern, string string [, array registers])","Case-insensitive regular expression match"],eregi_replace:["string eregi_replace(string pattern, string replacement, string string)","Case insensitive replace regular expression"],error_get_last:["array error_get_last()","Get the last occurred error as associative array. Returns NULL if there hasn't been an error yet."],error_log:["bool error_log(string message [, int message_type [, string destination [, string extra_headers]]])","Send an error message somewhere"],error_reporting:["int error_reporting([int new_error_level])","Return the current error_reporting level, and if an argument was passed - change to the new level"],escapeshellarg:["string escapeshellarg(string arg)","Quote and escape an argument for use in a shell command"],escapeshellcmd:["string escapeshellcmd(string command)","Escape shell metacharacters"],exec:["string exec(string command [, array &output [, int &return_value]])","Execute an external program"],exif_imagetype:["int exif_imagetype(string imagefile)","Get the type of an image"],exif_read_data:["array exif_read_data(string filename [, sections_needed [, sub_arrays[, read_thumbnail]]])","Reads header data from the JPEG/TIFF image filename and optionally reads the internal thumbnails"],exif_tagname:["string exif_tagname(index)","Get headername for index or false if not defined"],exif_thumbnail:["string exif_thumbnail(string filename [, &width, &height [, &imagetype]])","Reads the embedded thumbnail"],exit:["void exit([mixed status])","Output a message and terminate the current script"],exp:["float exp(float number)","Returns e raised to the power of the number"],explode:["array explode(string separator, string str [, int limit])","Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned."],expm1:["float expm1(float number)","Returns exp(number) - 1, computed in a way that accurate even when the value of number is close to zero"],extension_loaded:["bool extension_loaded(string extension_name)","Returns true if the named extension is loaded"],extract:["int extract(array var_array [, int extract_type [, string prefix]])","Imports variables into symbol table from an array"],ezmlm_hash:["int ezmlm_hash(string addr)","Calculate EZMLM list hash value."],fclose:["bool fclose(resource fp)","Close an open file pointer"],feof:["bool feof(resource fp)","Test for end-of-file on a file pointer"],fflush:["bool fflush(resource fp)","Flushes output"],fgetc:["string fgetc(resource fp)","Get a character from file pointer"],fgetcsv:["array fgetcsv(resource fp [,int length [, string delimiter [, string enclosure [, string escape]]]])","Get line from file pointer and parse for CSV fields"],fgets:["string fgets(resource fp[, int length])","Get a line from file pointer"],fgetss:["string fgetss(resource fp [, int length [, string allowable_tags]])","Get a line from file pointer and strip HTML tags"],file:["array file(string filename [, int flags[, resource context]])","Read entire file into an array"],file_exists:["bool file_exists(string filename)","Returns true if filename exists"],file_get_contents:["string file_get_contents(string filename [, bool use_include_path [, resource context [, long offset [, long maxlen]]]])","Read the entire file into a string"],file_put_contents:["int file_put_contents(string file, mixed data [, int flags [, resource context]])","Write/Create a file with contents data and return the number of bytes written"],fileatime:["int fileatime(string filename)","Get last access time of file"],filectime:["int filectime(string filename)","Get inode modification time of file"],filegroup:["int filegroup(string filename)","Get file group"],fileinode:["int fileinode(string filename)","Get file inode"],filemtime:["int filemtime(string filename)","Get last modification time of file"],fileowner:["int fileowner(string filename)","Get file owner"],fileperms:["int fileperms(string filename)","Get file permissions"],filesize:["int filesize(string filename)","Get file size"],filetype:["string filetype(string filename)","Get file type"],filter_has_var:["mixed filter_has_var(constant type, string variable_name)","* Returns true if the variable with the name 'name' exists in source."],filter_input:["mixed filter_input(constant type, string variable_name [, long filter [, mixed options]])","* Returns the filtered variable 'name'* from source `type`."],filter_input_array:["mixed filter_input_array(constant type, [, mixed options]])","* Returns an array with all arguments defined in 'definition'."],filter_var:["mixed filter_var(mixed variable [, long filter [, mixed options]])","* Returns the filtered version of the vriable."],filter_var_array:["mixed filter_var_array(array data, [, mixed options]])","* Returns an array with all arguments defined in 'definition'."],finfo_buffer:["string finfo_buffer(resource finfo, char *string [, int options [, resource context]])","Return infromation about a string buffer."],finfo_close:["resource finfo_close(resource finfo)","Close fileinfo resource."],finfo_file:["string finfo_file(resource finfo, char *file_name [, int options [, resource context]])","Return information about a file."],finfo_open:["resource finfo_open([int options [, string arg]])","Create a new fileinfo resource."],finfo_set_flags:["bool finfo_set_flags(resource finfo, int options)","Set libmagic configuration options."],floatval:["float floatval(mixed var)","Get the float value of a variable"],flock:["bool flock(resource fp, int operation [, int &wouldblock])","Portable file locking"],floor:["float floor(float number)","Returns the next lowest integer value from the number"],flush:["void flush(void)","Flush the output buffer"],fmod:["float fmod(float x, float y)","Returns the remainder of dividing x by y as a float"],fnmatch:["bool fnmatch(string pattern, string filename [, int flags])","Match filename against pattern"],fopen:["resource fopen(string filename, string mode [, bool use_include_path [, resource context]])","Open a file or a URL and return a file pointer"],forward_static_call:["mixed forward_static_call(mixed function_name [, mixed parmeter] [, mixed ...])","Call a user function which is the first parameter"],fpassthru:["int fpassthru(resource fp)","Output all remaining data from a file pointer"],fprintf:["int fprintf(resource stream, string format [, mixed arg1 [, mixed ...]])","Output a formatted string into a stream"],fputcsv:["int fputcsv(resource fp, array fields [, string delimiter [, string enclosure]])","Format line as CSV and write to file pointer"],fread:["string fread(resource fp, int length)","Binary-safe file read"],frenchtojd:["int frenchtojd(int month, int day, int year)","Converts a french republic calendar date to julian day count"],fscanf:["mixed fscanf(resource stream, string format [, string ...])","Implements a mostly ANSI compatible fscanf()"],fseek:["int fseek(resource fp, int offset [, int whence])","Seek on a file pointer"],fsockopen:["resource fsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])","Open Internet or Unix domain socket connection"],fstat:["array fstat(resource fp)","Stat() on a filehandle"],ftell:["int ftell(resource fp)","Get file pointer's read/write position"],ftok:["int ftok(string pathname, string proj)","Convert a pathname and a project identifier to a System V IPC key"],ftp_alloc:["bool ftp_alloc(resource stream, int size[, &response])","Attempt to allocate space on the remote FTP server"],ftp_cdup:["bool ftp_cdup(resource stream)","Changes to the parent directory"],ftp_chdir:["bool ftp_chdir(resource stream, string directory)","Changes directories"],ftp_chmod:["int ftp_chmod(resource stream, int mode, string filename)","Sets permissions on a file"],ftp_close:["bool ftp_close(resource stream)","Closes the FTP stream"],ftp_connect:["resource ftp_connect(string host [, int port [, int timeout]])","Opens a FTP stream"],ftp_delete:["bool ftp_delete(resource stream, string file)","Deletes a file"],ftp_exec:["bool ftp_exec(resource stream, string command)","Requests execution of a program on the FTP server"],ftp_fget:["bool ftp_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])","Retrieves a file from the FTP server and writes it to an open file"],ftp_fput:["bool ftp_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])","Stores a file from an open file to the FTP server"],ftp_get:["bool ftp_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])","Retrieves a file from the FTP server and writes it to a local file"],ftp_get_option:["mixed ftp_get_option(resource stream, int option)","Gets an FTP option"],ftp_login:["bool ftp_login(resource stream, string username, string password)","Logs into the FTP server"],ftp_mdtm:["int ftp_mdtm(resource stream, string filename)","Returns the last modification time of the file, or -1 on error"],ftp_mkdir:["string ftp_mkdir(resource stream, string directory)","Creates a directory and returns the absolute path for the new directory or false on error"],ftp_nb_continue:["int ftp_nb_continue(resource stream)","Continues retrieving/sending a file nbronously"],ftp_nb_fget:["int ftp_nb_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])","Retrieves a file from the FTP server asynchronly and writes it to an open file"],ftp_nb_fput:["int ftp_nb_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])","Stores a file from an open file to the FTP server nbronly"],ftp_nb_get:["int ftp_nb_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])","Retrieves a file from the FTP server nbhronly and writes it to a local file"],ftp_nb_put:["int ftp_nb_put(resource stream, string remote_file, string local_file, int mode[, int startpos])","Stores a file on the FTP server"],ftp_nlist:["array ftp_nlist(resource stream, string directory)","Returns an array of filenames in the given directory"],ftp_pasv:["bool ftp_pasv(resource stream, bool pasv)","Turns passive mode on or off"],ftp_put:["bool ftp_put(resource stream, string remote_file, string local_file, int mode[, int startpos])","Stores a file on the FTP server"],ftp_pwd:["string ftp_pwd(resource stream)","Returns the present working directory"],ftp_raw:["array ftp_raw(resource stream, string command)","Sends a literal command to the FTP server"],ftp_rawlist:["array ftp_rawlist(resource stream, string directory [, bool recursive])","Returns a detailed listing of a directory as an array of output lines"],ftp_rename:["bool ftp_rename(resource stream, string src, string dest)","Renames the given file to a new path"],ftp_rmdir:["bool ftp_rmdir(resource stream, string directory)","Removes a directory"],ftp_set_option:["bool ftp_set_option(resource stream, int option, mixed value)","Sets an FTP option"],ftp_site:["bool ftp_site(resource stream, string cmd)","Sends a SITE command to the server"],ftp_size:["int ftp_size(resource stream, string filename)","Returns the size of the file, or -1 on error"],ftp_ssl_connect:["resource ftp_ssl_connect(string host [, int port [, int timeout]])","Opens a FTP-SSL stream"],ftp_systype:["string ftp_systype(resource stream)","Returns the system type identifier"],ftruncate:["bool ftruncate(resource fp, int size)","Truncate file to 'size' length"],func_get_arg:["mixed func_get_arg(int arg_num)","Get the $arg_num'th argument that was passed to the function"],func_get_args:["array func_get_args()","Get an array of the arguments that were passed to the function"],func_num_args:["int func_num_args(void)","Get the number of arguments that were passed to the function"],function_exists:["bool function_exists(string function_name)","Checks if the function exists"],fwrite:["int fwrite(resource fp, string str [, int length])","Binary-safe file write"],gc_collect_cycles:["int gc_collect_cycles(void)","Forces collection of any existing garbage cycles. Returns number of freed zvals"],gc_disable:["void gc_disable(void)","Deactivates the circular reference collector"],gc_enable:["void gc_enable(void)","Activates the circular reference collector"],gc_enabled:["void gc_enabled(void)","Returns status of the circular reference collector"],gd_info:["array gd_info()",""],getKeywords:["static array getKeywords(string $locale) {","* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array (doh!) * }}}"],get_browser:["mixed get_browser([string browser_name [, bool return_array]])","Get information about the capabilities of a browser. If browser_name is omitted or null, HTTP_USER_AGENT is used. Returns an object by default; if return_array is true, returns an array."],get_called_class:["string get_called_class()",'Retrieves the "Late Static Binding" class name'],get_cfg_var:["mixed get_cfg_var(string option_name)","Get the value of a PHP configuration option"],get_class:["string get_class([object object])","Retrieves the class name"],get_class_methods:["array get_class_methods(mixed class)","Returns an array of method names for class or class instance."],get_class_vars:["array get_class_vars(string class_name)","Returns an array of default properties of the class."],get_current_user:["string get_current_user(void)","Get the name of the owner of the current PHP script"],get_declared_classes:["array get_declared_classes()","Returns an array of all declared classes."],get_declared_interfaces:["array get_declared_interfaces()","Returns an array of all declared interfaces."],get_defined_constants:["array get_defined_constants([bool categorize])","Return an array containing the names and values of all defined constants"],get_defined_functions:["array get_defined_functions(void)","Returns an array of all defined functions"],get_defined_vars:["array get_defined_vars(void)","Returns an associative array of names and values of all currently defined variable names (variables in the current scope)"],get_display_language:["static string get_display_language($locale[, $in_locale = null])","* gets the language for the $locale in $in_locale or default_locale"],get_display_name:["static string get_display_name($locale[, $in_locale = null])","* gets the name for the $locale in $in_locale or default_locale"],get_display_region:["static string get_display_region($locale, $in_locale = null)","* gets the region for the $locale in $in_locale or default_locale"],get_display_script:["static string get_display_script($locale, $in_locale = null)","* gets the script for the $locale in $in_locale or default_locale"],get_extension_funcs:["array get_extension_funcs(string extension_name)","Returns an array with the names of functions belonging to the named extension"],get_headers:["array get_headers(string url[, int format])","fetches all the headers sent by the server in response to a HTTP request"],get_html_translation_table:["array get_html_translation_table([int table [, int quote_style]])","Returns the internal translation table used by htmlspecialchars and htmlentities"],get_include_path:["string get_include_path()","Get the current include_path configuration option"],get_included_files:["array get_included_files(void)","Returns an array with the file names that were include_once()'d"],get_loaded_extensions:["array get_loaded_extensions([bool zend_extensions])","Return an array containing names of loaded extensions"],get_magic_quotes_gpc:["int get_magic_quotes_gpc(void)","Get the current active configuration setting of magic_quotes_gpc"],get_magic_quotes_runtime:["int get_magic_quotes_runtime(void)","Get the current active configuration setting of magic_quotes_runtime"],get_meta_tags:["array get_meta_tags(string filename [, bool use_include_path])","Extracts all meta tag content attributes from a file and returns an array"],get_object_vars:["array get_object_vars(object obj)","Returns an array of object properties"],get_parent_class:["string get_parent_class([mixed object])","Retrieves the parent class name for object or class or current scope."],get_resource_type:["string get_resource_type(resource res)","Get the resource type name for a given resource"],getallheaders:["array getallheaders(void)",""],getcwd:["mixed getcwd(void)","Gets the current directory"],getdate:["array getdate([int timestamp])","Get date/time information"],getenv:["string getenv(string varname)","Get the value of an environment variable"],gethostbyaddr:["string gethostbyaddr(string ip_address)","Get the Internet host name corresponding to a given IP address"],gethostbyname:["string gethostbyname(string hostname)","Get the IP address corresponding to a given Internet host name"],gethostbynamel:["array gethostbynamel(string hostname)","Return a list of IP addresses that a given hostname resolves to."],gethostname:["string gethostname()","Get the host name of the current machine"],getimagesize:["array getimagesize(string imagefile [, array info])","Get the size of an image as 4-element array"],getlastmod:["int getlastmod(void)","Get time of last page modification"],getmygid:["int getmygid(void)","Get PHP script owner's GID"],getmyinode:["int getmyinode(void)","Get the inode of the current script being parsed"],getmypid:["int getmypid(void)","Get current process ID"],getmyuid:["int getmyuid(void)","Get PHP script owner's UID"],getopt:["array getopt(string options [, array longopts])","Get options from the command line argument list"],getprotobyname:["int getprotobyname(string name)","Returns protocol number associated with name as per /etc/protocols"],getprotobynumber:["string getprotobynumber(int proto)","Returns protocol name associated with protocol number proto"],getrandmax:["int getrandmax(void)","Returns the maximum value a random number can have"],getrusage:["array getrusage([int who])","Returns an array of usage statistics"],getservbyname:["int getservbyname(string service, string protocol)",'Returns port associated with service. Protocol must be "tcp" or "udp"'],getservbyport:["string getservbyport(int port, string protocol)",'Returns service name associated with port. Protocol must be "tcp" or "udp"'],gettext:["string gettext(string msgid)","Return the translation of msgid for the current domain, or msgid unaltered if a translation does not exist"],gettimeofday:["array gettimeofday([bool get_as_float])","Returns the current time as array"],gettype:["string gettype(mixed var)","Returns the type of the variable"],glob:["array glob(string pattern [, int flags])","Find pathnames matching a pattern"],gmdate:["string gmdate(string format [, long timestamp])","Format a GMT date/time"],gmmktime:["int gmmktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])","Get UNIX timestamp for a GMT date"],gmp_abs:["resource gmp_abs(resource a)","Calculates absolute value"],gmp_add:["resource gmp_add(resource a, resource b)","Add a and b"],gmp_and:["resource gmp_and(resource a, resource b)","Calculates logical AND of a and b"],gmp_clrbit:["void gmp_clrbit(resource &a, int index)","Clears bit in a"],gmp_cmp:["int gmp_cmp(resource a, resource b)","Compares two numbers"],gmp_com:["resource gmp_com(resource a)","Calculates one's complement of a"],gmp_div_q:["resource gmp_div_q(resource a, resource b [, int round])","Divide a by b, returns quotient only"],gmp_div_qr:["array gmp_div_qr(resource a, resource b [, int round])","Divide a by b, returns quotient and reminder"],gmp_div_r:["resource gmp_div_r(resource a, resource b [, int round])","Divide a by b, returns reminder only"],gmp_divexact:["resource gmp_divexact(resource a, resource b)","Divide a by b using exact division algorithm"],gmp_fact:["resource gmp_fact(int a)","Calculates factorial function"],gmp_gcd:["resource gmp_gcd(resource a, resource b)","Computes greatest common denominator (gcd) of a and b"],gmp_gcdext:["array gmp_gcdext(resource a, resource b)","Computes G, S, and T, such that AS + BT = G = `gcd' (A, B)"],gmp_hamdist:["int gmp_hamdist(resource a, resource b)","Calculates hamming distance between a and b"],gmp_init:["resource gmp_init(mixed number [, int base])","Initializes GMP number"],gmp_intval:["int gmp_intval(resource gmpnumber)","Gets signed long value of GMP number"],gmp_invert:["resource gmp_invert(resource a, resource b)","Computes the inverse of a modulo b"],gmp_jacobi:["int gmp_jacobi(resource a, resource b)","Computes Jacobi symbol"],gmp_legendre:["int gmp_legendre(resource a, resource b)","Computes Legendre symbol"],gmp_mod:["resource gmp_mod(resource a, resource b)","Computes a modulo b"],gmp_mul:["resource gmp_mul(resource a, resource b)","Multiply a and b"],gmp_neg:["resource gmp_neg(resource a)","Negates a number"],gmp_nextprime:["resource gmp_nextprime(resource a)","Finds next prime of a"],gmp_or:["resource gmp_or(resource a, resource b)","Calculates logical OR of a and b"],gmp_perfect_square:["bool gmp_perfect_square(resource a)","Checks if a is an exact square"],gmp_popcount:["int gmp_popcount(resource a)","Calculates the population count of a"],gmp_pow:["resource gmp_pow(resource base, int exp)","Raise base to power exp"],gmp_powm:["resource gmp_powm(resource base, resource exp, resource mod)","Raise base to power exp and take result modulo mod"],gmp_prob_prime:["int gmp_prob_prime(resource a[, int reps])",'Checks if a is "probably prime"'],gmp_random:["resource gmp_random([int limiter])","Gets random number"],gmp_scan0:["int gmp_scan0(resource a, int start)","Finds first zero bit"],gmp_scan1:["int gmp_scan1(resource a, int start)","Finds first non-zero bit"],gmp_setbit:["void gmp_setbit(resource &a, int index[, bool set_clear])","Sets or clear bit in a"],gmp_sign:["int gmp_sign(resource a)","Gets the sign of the number"],gmp_sqrt:["resource gmp_sqrt(resource a)","Takes integer part of square root of a"],gmp_sqrtrem:["array gmp_sqrtrem(resource a)","Square root with remainder"],gmp_strval:["string gmp_strval(resource gmpnumber [, int base])","Gets string representation of GMP number"],gmp_sub:["resource gmp_sub(resource a, resource b)","Subtract b from a"],gmp_testbit:["bool gmp_testbit(resource a, int index)","Tests if bit is set in a"],gmp_xor:["resource gmp_xor(resource a, resource b)","Calculates logical exclusive OR of a and b"],gmstrftime:["string gmstrftime(string format [, int timestamp])","Format a GMT/UCT time/date according to locale settings"],grapheme_extract:["string grapheme_extract(string str, int size[, int extract_type[, int start[, int next]]])","Function to extract a sequence of default grapheme clusters"],grapheme_stripos:["int grapheme_stripos(string haystack, string needle [, int offset ])","Find position of first occurrence of a string within another, ignoring case differences"],grapheme_stristr:["string grapheme_stristr(string haystack, string needle[, bool part])","Finds first occurrence of a string within another"],grapheme_strlen:["int grapheme_strlen(string str)","Get number of graphemes in a string"],grapheme_strpos:["int grapheme_strpos(string haystack, string needle [, int offset ])","Find position of first occurrence of a string within another"],grapheme_strripos:["int grapheme_strripos(string haystack, string needle [, int offset])","Find position of last occurrence of a string within another, ignoring case"],grapheme_strrpos:["int grapheme_strrpos(string haystack, string needle [, int offset])","Find position of last occurrence of a string within another"],grapheme_strstr:["string grapheme_strstr(string haystack, string needle[, bool part])","Finds first occurrence of a string within another"],grapheme_substr:["string grapheme_substr(string str, int start [, int length])","Returns part of a string"],gregoriantojd:["int gregoriantojd(int month, int day, int year)","Converts a gregorian calendar date to julian day count"],gzcompress:["string gzcompress(string data [, int level])","Gzip-compress a string"],gzdeflate:["string gzdeflate(string data [, int level])","Gzip-compress a string"],gzencode:["string gzencode(string data [, int level [, int encoding_mode]])","GZ encode a string"],gzfile:["array gzfile(string filename [, int use_include_path])","Read und uncompress entire .gz-file into an array"],gzinflate:["string gzinflate(string data [, int length])","Unzip a gzip-compressed string"],gzopen:["resource gzopen(string filename, string mode [, int use_include_path])","Open a .gz-file and return a .gz-file pointer"],gzuncompress:["string gzuncompress(string data [, int length])","Unzip a gzip-compressed string"],hash:["string hash(string algo, string data[, bool raw_output = false])","Generate a hash of a given input string Returns lowercase hexits by default"],hash_algos:["array hash_algos(void)","Return a list of registered hashing algorithms"],hash_copy:["resource hash_copy(resource context)","Copy hash resource"],hash_file:["string hash_file(string algo, string filename[, bool raw_output = false])","Generate a hash of a given file Returns lowercase hexits by default"],hash_final:["string hash_final(resource context[, bool raw_output=false])","Output resulting digest"],hash_hmac:["string hash_hmac(string algo, string data, string key[, bool raw_output = false])","Generate a hash of a given input string with a key using HMAC Returns lowercase hexits by default"],hash_hmac_file:["string hash_hmac_file(string algo, string filename, string key[, bool raw_output = false])","Generate a hash of a given file with a key using HMAC Returns lowercase hexits by default"],hash_init:["resource hash_init(string algo[, int options, string key])","Initialize a hashing context"],hash_update:["bool hash_update(resource context, string data)","Pump data into the hashing algorithm"],hash_update_file:["bool hash_update_file(resource context, string filename[, resource context])","Pump data into the hashing algorithm from a file"],hash_update_stream:["int hash_update_stream(resource context, resource handle[, integer length])","Pump data into the hashing algorithm from an open stream"],header:["void header(string header [, bool replace, [int http_response_code]])","Sends a raw HTTP header"],header_remove:["void header_remove([string name])","Removes an HTTP header previously set using header()"],headers_list:["array headers_list(void)","Return list of headers to be sent / already sent"],headers_sent:["bool headers_sent([string &$file [, int &$line]])","Returns true if headers have already been sent, false otherwise"],hebrev:["string hebrev(string str [, int max_chars_per_line])","Converts logical Hebrew text to visual text"],hebrevc:["string hebrevc(string str [, int max_chars_per_line])","Converts logical Hebrew text to visual text with newline conversion"],hexdec:["int hexdec(string hexadecimal_number)","Returns the decimal equivalent of the hexadecimal number"],highlight_file:["bool highlight_file(string file_name [, bool return] )","Syntax highlight a source file"],highlight_string:["bool highlight_string(string string [, bool return] )","Syntax highlight a string or optionally return it"],html_entity_decode:["string html_entity_decode(string string [, int quote_style][, string charset])","Convert all HTML entities to their applicable characters"],htmlentities:["string htmlentities(string string [, int quote_style[, string charset[, bool double_encode]]])","Convert all applicable characters to HTML entities"],htmlspecialchars:["string htmlspecialchars(string string [, int quote_style[, string charset[, bool double_encode]]])","Convert special characters to HTML entities"],htmlspecialchars_decode:["string htmlspecialchars_decode(string string [, int quote_style])","Convert special HTML entities back to characters"],http_build_query:["string http_build_query(mixed formdata [, string prefix [, string arg_separator]])","Generates a form-encoded query string from an associative array or object."],hypot:["float hypot(float num1, float num2)","Returns sqrt(num1*num1 + num2*num2)"],ibase_add_user:["bool ibase_add_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])","Add a user to security database"],ibase_affected_rows:["int ibase_affected_rows( [ resource link_identifier ] )","Returns the number of rows affected by the previous INSERT, UPDATE or DELETE statement"],ibase_backup:["mixed ibase_backup(resource service_handle, string source_db, string dest_file [, int options [, bool verbose]])","Initiates a backup task in the service manager and returns immediately"],ibase_blob_add:["bool ibase_blob_add(resource blob_handle, string data)","Add data into created blob"],ibase_blob_cancel:["bool ibase_blob_cancel(resource blob_handle)","Cancel creating blob"],ibase_blob_close:["string ibase_blob_close(resource blob_handle)","Close blob"],ibase_blob_create:["resource ibase_blob_create([resource link_identifier])","Create blob for adding data"],ibase_blob_echo:["bool ibase_blob_echo([ resource link_identifier, ] string blob_id)","Output blob contents to browser"],ibase_blob_get:["string ibase_blob_get(resource blob_handle, int len)","Get len bytes data from open blob"],ibase_blob_import:["string ibase_blob_import([ resource link_identifier, ] resource file)","Create blob, copy file in it, and close it"],ibase_blob_info:["array ibase_blob_info([ resource link_identifier, ] string blob_id)","Return blob length and other useful info"],ibase_blob_open:["resource ibase_blob_open([ resource link_identifier, ] string blob_id)","Open blob for retrieving data parts"],ibase_close:["bool ibase_close([resource link_identifier])","Close an InterBase connection"],ibase_commit:["bool ibase_commit( resource link_identifier )","Commit transaction"],ibase_commit_ret:["bool ibase_commit_ret( resource link_identifier )","Commit transaction and retain the transaction context"],ibase_connect:["resource ibase_connect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])","Open a connection to an InterBase database"],ibase_db_info:["string ibase_db_info(resource service_handle, string db, int action [, int argument])","Request statistics about a database"],ibase_delete_user:["bool ibase_delete_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])","Delete a user from security database"],ibase_drop_db:["bool ibase_drop_db([resource link_identifier])","Drop an InterBase database"],ibase_errcode:["int ibase_errcode(void)","Return error code"],ibase_errmsg:["string ibase_errmsg(void)","Return error message"],ibase_execute:["mixed ibase_execute(resource query [, mixed bind_arg [, mixed bind_arg [, ...]]])","Execute a previously prepared query"],ibase_fetch_assoc:["array ibase_fetch_assoc(resource result [, int fetch_flags])","Fetch a row from the results of a query"],ibase_fetch_object:["object ibase_fetch_object(resource result [, int fetch_flags])","Fetch a object from the results of a query"],ibase_fetch_row:["array ibase_fetch_row(resource result [, int fetch_flags])","Fetch a row from the results of a query"],ibase_field_info:["array ibase_field_info(resource query_result, int field_number)","Get information about a field"],ibase_free_event_handler:["bool ibase_free_event_handler(resource event)","Frees the event handler set by ibase_set_event_handler()"],ibase_free_query:["bool ibase_free_query(resource query)","Free memory used by a query"],ibase_free_result:["bool ibase_free_result(resource result)","Free the memory used by a result"],ibase_gen_id:["int ibase_gen_id(string generator [, int increment [, resource link_identifier ]])","Increments the named generator and returns its new value"],ibase_maintain_db:["bool ibase_maintain_db(resource service_handle, string db, int action [, int argument])","Execute a maintenance command on the database server"],ibase_modify_user:["bool ibase_modify_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])","Modify a user in security database"],ibase_name_result:["bool ibase_name_result(resource result, string name)","Assign a name to a result for use with ... WHERE CURRENT OF <name> statements"],ibase_num_fields:["int ibase_num_fields(resource query_result)","Get the number of fields in result"],ibase_num_params:["int ibase_num_params(resource query)","Get the number of params in a prepared query"],ibase_num_rows:["int ibase_num_rows( resource result_identifier )","Return the number of rows that are available in a result"],ibase_param_info:["array ibase_param_info(resource query, int field_number)","Get information about a parameter"],ibase_pconnect:["resource ibase_pconnect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])","Open a persistent connection to an InterBase database"],ibase_prepare:["resource ibase_prepare(resource link_identifier[, string query [, resource trans_identifier ]])","Prepare a query for later execution"],ibase_query:["mixed ibase_query([resource link_identifier, [ resource link_identifier, ]] string query [, mixed bind_arg [, mixed bind_arg [, ...]]])","Execute a query"],ibase_restore:["mixed ibase_restore(resource service_handle, string source_file, string dest_db [, int options [, bool verbose]])","Initiates a restore task in the service manager and returns immediately"],ibase_rollback:["bool ibase_rollback( resource link_identifier )","Rollback transaction"],ibase_rollback_ret:["bool ibase_rollback_ret( resource link_identifier )","Rollback transaction and retain the transaction context"],ibase_server_info:["string ibase_server_info(resource service_handle, int action)","Request information about a database server"],ibase_service_attach:["resource ibase_service_attach(string host, string dba_username, string dba_password)","Connect to the service manager"],ibase_service_detach:["bool ibase_service_detach(resource service_handle)","Disconnect from the service manager"],ibase_set_event_handler:["resource ibase_set_event_handler([resource link_identifier,] callback handler, string event [, string event [, ...]])","Register the callback for handling each of the named events"],ibase_trans:["resource ibase_trans([int trans_args [, resource link_identifier [, ... ], int trans_args [, resource link_identifier [, ... ]] [, ...]]])","Start a transaction over one or several databases"],ibase_wait_event:["string ibase_wait_event([resource link_identifier,] string event [, string event [, ...]])","Waits for any one of the passed Interbase events to be posted by the database, and returns its name"],iconv:["string iconv(string in_charset, string out_charset, string str)","Returns str converted to the out_charset character set"],iconv_get_encoding:["mixed iconv_get_encoding([string type])","Get internal encoding and output encoding for ob_iconv_handler()"],iconv_mime_decode:["string iconv_mime_decode(string encoded_string [, int mode, string charset])","Decodes a mime header field"],iconv_mime_decode_headers:["array iconv_mime_decode_headers(string headers [, int mode, string charset])","Decodes multiple mime header fields"],iconv_mime_encode:["string iconv_mime_encode(string field_name, string field_value [, array preference])","Composes a mime header field with field_name and field_value in a specified scheme"],iconv_set_encoding:["bool iconv_set_encoding(string type, string charset)","Sets internal encoding and output encoding for ob_iconv_handler()"],iconv_strlen:["int iconv_strlen(string str [, string charset])","Returns the character count of str"],iconv_strpos:["int iconv_strpos(string haystack, string needle [, int offset [, string charset]])","Finds position of first occurrence of needle within part of haystack beginning with offset"],iconv_strrpos:["int iconv_strrpos(string haystack, string needle [, string charset])","Finds position of last occurrence of needle within part of haystack beginning with offset"],iconv_substr:["string iconv_substr(string str, int offset, [int length, string charset])","Returns specified part of a string"],idate:["int idate(string format [, int timestamp])","Format a local time/date as integer"],idn_to_ascii:["int idn_to_ascii(string domain[, int options])","Converts an Unicode domain to ASCII representation, as defined in the IDNA RFC"],idn_to_utf8:["int idn_to_utf8(string domain[, int options])","Converts an ASCII representation of the domain to Unicode (UTF-8), as defined in the IDNA RFC"],ignore_user_abort:["int ignore_user_abort([string value])","Set whether we want to ignore a user abort event or not"],image2wbmp:["bool image2wbmp(resource im [, string filename [, int threshold]])","Output WBMP image to browser or file"],image_type_to_extension:["string image_type_to_extension(int imagetype [, bool include_dot])","Get file extension for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype"],image_type_to_mime_type:["string image_type_to_mime_type(int imagetype)","Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype"],imagealphablending:["bool imagealphablending(resource im, bool on)","Turn alpha blending mode on or off for the given image"],imageantialias:["bool imageantialias(resource im, bool on)","Should antialiased functions used or not"],imagearc:["bool imagearc(resource im, int cx, int cy, int w, int h, int s, int e, int col)","Draw a partial ellipse"],imagechar:["bool imagechar(resource im, int font, int x, int y, string c, int col)","Draw a character"],imagecharup:["bool imagecharup(resource im, int font, int x, int y, string c, int col)","Draw a character rotated 90 degrees counter-clockwise"],imagecolorallocate:["int imagecolorallocate(resource im, int red, int green, int blue)","Allocate a color for an image"],imagecolorallocatealpha:["int imagecolorallocatealpha(resource im, int red, int green, int blue, int alpha)","Allocate a color with an alpha level. Works for true color and palette based images"],imagecolorat:["int imagecolorat(resource im, int x, int y)","Get the index of the color of a pixel"],imagecolorclosest:["int imagecolorclosest(resource im, int red, int green, int blue)","Get the index of the closest color to the specified color"],imagecolorclosestalpha:["int imagecolorclosestalpha(resource im, int red, int green, int blue, int alpha)","Find the closest matching colour with alpha transparency"],imagecolorclosesthwb:["int imagecolorclosesthwb(resource im, int red, int green, int blue)","Get the index of the color which has the hue, white and blackness nearest to the given color"],imagecolordeallocate:["bool imagecolordeallocate(resource im, int index)","De-allocate a color for an image"],imagecolorexact:["int imagecolorexact(resource im, int red, int green, int blue)","Get the index of the specified color"],imagecolorexactalpha:["int imagecolorexactalpha(resource im, int red, int green, int blue, int alpha)","Find exact match for colour with transparency"],imagecolormatch:["bool imagecolormatch(resource im1, resource im2)","Makes the colors of the palette version of an image more closely match the true color version"],imagecolorresolve:["int imagecolorresolve(resource im, int red, int green, int blue)","Get the index of the specified color or its closest possible alternative"],imagecolorresolvealpha:["int imagecolorresolvealpha(resource im, int red, int green, int blue, int alpha)","Resolve/Allocate a colour with an alpha level. Works for true colour and palette based images"],imagecolorset:["void imagecolorset(resource im, int col, int red, int green, int blue)","Set the color for the specified palette index"],imagecolorsforindex:["array imagecolorsforindex(resource im, int col)","Get the colors for an index"],imagecolorstotal:["int imagecolorstotal(resource im)","Find out the number of colors in an image's palette"],imagecolortransparent:["int imagecolortransparent(resource im [, int col])","Define a color as transparent"],imageconvolution:["resource imageconvolution(resource src_im, array matrix3x3, double div, double offset)","Apply a 3x3 convolution matrix, using coefficient div and offset"],imagecopy:["bool imagecopy(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)","Copy part of an image"],imagecopymerge:["bool imagecopymerge(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)","Merge one part of an image with another"],imagecopymergegray:["bool imagecopymergegray(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)","Merge one part of an image with another"],imagecopyresampled:["bool imagecopyresampled(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)","Copy and resize part of an image using resampling to help ensure clarity"],imagecopyresized:["bool imagecopyresized(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)","Copy and resize part of an image"],imagecreate:["resource imagecreate(int x_size, int y_size)","Create a new image"],imagecreatefromgd:["resource imagecreatefromgd(string filename)","Create a new image from GD file or URL"],imagecreatefromgd2:["resource imagecreatefromgd2(string filename)","Create a new image from GD2 file or URL"],imagecreatefromgd2part:["resource imagecreatefromgd2part(string filename, int srcX, int srcY, int width, int height)","Create a new image from a given part of GD2 file or URL"],imagecreatefromgif:["resource imagecreatefromgif(string filename)","Create a new image from GIF file or URL"],imagecreatefromjpeg:["resource imagecreatefromjpeg(string filename)","Create a new image from JPEG file or URL"],imagecreatefrompng:["resource imagecreatefrompng(string filename)","Create a new image from PNG file or URL"],imagecreatefromstring:["resource imagecreatefromstring(string image)","Create a new image from the image stream in the string"],imagecreatefromwbmp:["resource imagecreatefromwbmp(string filename)","Create a new image from WBMP file or URL"],imagecreatefromxbm:["resource imagecreatefromxbm(string filename)","Create a new image from XBM file or URL"],imagecreatefromxpm:["resource imagecreatefromxpm(string filename)","Create a new image from XPM file or URL"],imagecreatetruecolor:["resource imagecreatetruecolor(int x_size, int y_size)","Create a new true color image"],imagedashedline:["bool imagedashedline(resource im, int x1, int y1, int x2, int y2, int col)","Draw a dashed line"],imagedestroy:["bool imagedestroy(resource im)","Destroy an image"],imageellipse:["bool imageellipse(resource im, int cx, int cy, int w, int h, int color)","Draw an ellipse"],imagefill:["bool imagefill(resource im, int x, int y, int col)","Flood fill"],imagefilledarc:["bool imagefilledarc(resource im, int cx, int cy, int w, int h, int s, int e, int col, int style)","Draw a filled partial ellipse"],imagefilledellipse:["bool imagefilledellipse(resource im, int cx, int cy, int w, int h, int color)","Draw an ellipse"],imagefilledpolygon:["bool imagefilledpolygon(resource im, array point, int num_points, int col)","Draw a filled polygon"],imagefilledrectangle:["bool imagefilledrectangle(resource im, int x1, int y1, int x2, int y2, int col)","Draw a filled rectangle"],imagefilltoborder:["bool imagefilltoborder(resource im, int x, int y, int border, int col)","Flood fill to specific color"],imagefilter:["bool imagefilter(resource src_im, int filtertype, [args] )","Applies Filter an image using a custom angle"],imagefontheight:["int imagefontheight(int font)","Get font height"],imagefontwidth:["int imagefontwidth(int font)","Get font width"],imageftbbox:["array imageftbbox(float size, float angle, string font_file, string text [, array extrainfo])","Give the bounding box of a text using fonts via freetype2"],imagefttext:["array imagefttext(resource im, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo])","Write text to the image using fonts via freetype2"],imagegammacorrect:["bool imagegammacorrect(resource im, float inputgamma, float outputgamma)","Apply a gamma correction to a GD image"],imagegd:["bool imagegd(resource im [, string filename])","Output GD image to browser or file"],imagegd2:["bool imagegd2(resource im [, string filename, [, int chunk_size, [, int type]]])","Output GD2 image to browser or file"],imagegif:["bool imagegif(resource im [, string filename])","Output GIF image to browser or file"],imagegrabscreen:["resource imagegrabscreen()","Grab a screenshot"],imagegrabwindow:["resource imagegrabwindow(int window_handle [, int client_area])","Grab a window or its client area using a windows handle (HWND property in COM instance)"],imageinterlace:["int imageinterlace(resource im [, int interlace])","Enable or disable interlace"],imageistruecolor:["bool imageistruecolor(resource im)","return true if the image uses truecolor"],imagejpeg:["bool imagejpeg(resource im [, string filename [, int quality]])","Output JPEG image to browser or file"],imagelayereffect:["bool imagelayereffect(resource im, int effect)","Set the alpha blending flag to use the bundled libgd layering effects"],imageline:["bool imageline(resource im, int x1, int y1, int x2, int y2, int col)","Draw a line"],imageloadfont:["int imageloadfont(string filename)","Load a new font"],imagepalettecopy:["void imagepalettecopy(resource dst, resource src)","Copy the palette from the src image onto the dst image"],imagepng:["bool imagepng(resource im [, string filename])","Output PNG image to browser or file"],imagepolygon:["bool imagepolygon(resource im, array point, int num_points, int col)","Draw a polygon"],imagepsbbox:["array imagepsbbox(string text, resource font, int size [, int space, int tightness, float angle])","Return the bounding box needed by a string if rasterized"],imagepscopyfont:["int imagepscopyfont(int font_index)","Make a copy of a font for purposes like extending or reenconding"],imagepsencodefont:["bool imagepsencodefont(resource font_index, string filename)","To change a fonts character encoding vector"],imagepsextendfont:["bool imagepsextendfont(resource font_index, float extend)","Extend or or condense (if extend < 1) a font"],imagepsfreefont:["bool imagepsfreefont(resource font_index)","Free memory used by a font"],imagepsloadfont:["resource imagepsloadfont(string pathname)","Load a new font from specified file"],imagepsslantfont:["bool imagepsslantfont(resource font_index, float slant)","Slant a font"],imagepstext:["array imagepstext(resource image, string text, resource font, int size, int foreground, int background, int xcoord, int ycoord [, int space [, int tightness [, float angle [, int antialias])","Rasterize a string over an image"],imagerectangle:["bool imagerectangle(resource im, int x1, int y1, int x2, int y2, int col)","Draw a rectangle"],imagerotate:["resource imagerotate(resource src_im, float angle, int bgdcolor [, int ignoretransparent])","Rotate an image using a custom angle"],imagesavealpha:["bool imagesavealpha(resource im, bool on)","Include alpha channel to a saved image"],imagesetbrush:["bool imagesetbrush(resource image, resource brush)",'Set the brush image to $brush when filling $image with the "IMG_COLOR_BRUSHED" color'],imagesetpixel:["bool imagesetpixel(resource im, int x, int y, int col)","Set a single pixel"],imagesetstyle:["bool imagesetstyle(resource im, array styles)","Set the line drawing styles for use with imageline and IMG_COLOR_STYLED."],imagesetthickness:["bool imagesetthickness(resource im, int thickness)","Set line thickness for drawing lines, ellipses, rectangles, polygons etc."],imagesettile:["bool imagesettile(resource image, resource tile)",'Set the tile image to $tile when filling $image with the "IMG_COLOR_TILED" color'],imagestring:["bool imagestring(resource im, int font, int x, int y, string str, int col)","Draw a string horizontally"],imagestringup:["bool imagestringup(resource im, int font, int x, int y, string str, int col)","Draw a string vertically - rotated 90 degrees counter-clockwise"],imagesx:["int imagesx(resource im)","Get image width"],imagesy:["int imagesy(resource im)","Get image height"],imagetruecolortopalette:["void imagetruecolortopalette(resource im, bool ditherFlag, int colorsWanted)","Convert a true colour image to a palette based image with a number of colours, optionally using dithering."],imagettfbbox:["array imagettfbbox(float size, float angle, string font_file, string text)","Give the bounding box of a text using TrueType fonts"],imagettftext:["array imagettftext(resource im, float size, float angle, int x, int y, int col, string font_file, string text)","Write text to the image using a TrueType font"],imagetypes:["int imagetypes(void)","Return the types of images supported in a bitfield - 1=GIF, 2=JPEG, 4=PNG, 8=WBMP, 16=XPM"],imagewbmp:["bool imagewbmp(resource im [, string filename, [, int foreground]])","Output WBMP image to browser or file"],imagexbm:["int imagexbm(int im, string filename [, int foreground])","Output XBM image to browser or file"],imap_8bit:["string imap_8bit(string text)","Convert an 8-bit string to a quoted-printable string"],imap_alerts:["array imap_alerts(void)","Returns an array of all IMAP alerts that have been generated since the last page load or since the last imap_alerts() call, whichever came last. The alert stack is cleared after imap_alerts() is called."],imap_append:["bool imap_append(resource stream_id, string folder, string message [, string options [, string internal_date]])","Append a new message to a specified mailbox"],imap_base64:["string imap_base64(string text)","Decode BASE64 encoded text"],imap_binary:["string imap_binary(string text)","Convert an 8bit string to a base64 string"],imap_body:["string imap_body(resource stream_id, int msg_no [, int options])","Read the message body"],imap_bodystruct:["object imap_bodystruct(resource stream_id, int msg_no, string section)","Read the structure of a specified body section of a specific message"],imap_check:["object imap_check(resource stream_id)","Get mailbox properties"],imap_clearflag_full:["bool imap_clearflag_full(resource stream_id, string sequence, string flag [, int options])","Clears flags on messages"],imap_close:["bool imap_close(resource stream_id [, int options])","Close an IMAP stream"],imap_createmailbox:["bool imap_createmailbox(resource stream_id, string mailbox)","Create a new mailbox"],imap_delete:["bool imap_delete(resource stream_id, int msg_no [, int options])","Mark a message for deletion"],imap_deletemailbox:["bool imap_deletemailbox(resource stream_id, string mailbox)","Delete a mailbox"],imap_errors:["array imap_errors(void)","Returns an array of all IMAP errors generated since the last page load, or since the last imap_errors() call, whichever came last. The error stack is cleared after imap_errors() is called."],imap_expunge:["bool imap_expunge(resource stream_id)","Permanently delete all messages marked for deletion"],imap_fetch_overview:["array imap_fetch_overview(resource stream_id, string sequence [, int options])","Read an overview of the information in the headers of the given message sequence"],imap_fetchbody:["string imap_fetchbody(resource stream_id, int msg_no, string section [, int options])","Get a specific body section"],imap_fetchheader:["string imap_fetchheader(resource stream_id, int msg_no [, int options])","Get the full unfiltered header for a message"],imap_fetchstructure:["object imap_fetchstructure(resource stream_id, int msg_no [, int options])","Read the full structure of a message"],imap_gc:["bool imap_gc(resource stream_id, int flags)","This function garbage collects (purges) the cache of entries of a specific type."],imap_get_quota:["array imap_get_quota(resource stream_id, string qroot)","Returns the quota set to the mailbox account qroot"],imap_get_quotaroot:["array imap_get_quotaroot(resource stream_id, string mbox)","Returns the quota set to the mailbox account mbox"],imap_getacl:["array imap_getacl(resource stream_id, string mailbox)","Gets the ACL for a given mailbox"],imap_getmailboxes:["array imap_getmailboxes(resource stream_id, string ref, string pattern)","Reads the list of mailboxes and returns a full array of objects containing name, attributes, and delimiter"],imap_getsubscribed:["array imap_getsubscribed(resource stream_id, string ref, string pattern)","Return a list of subscribed mailboxes, in the same format as imap_getmailboxes()"],imap_headerinfo:["object imap_headerinfo(resource stream_id, int msg_no [, int from_length [, int subject_length [, string default_host]]])","Read the headers of the message"],imap_headers:["array imap_headers(resource stream_id)","Returns headers for all messages in a mailbox"],imap_last_error:["string imap_last_error(void)","Returns the last error that was generated by an IMAP function. The error stack is NOT cleared after this call."],imap_list:["array imap_list(resource stream_id, string ref, string pattern)","Read the list of mailboxes"],imap_listscan:["array imap_listscan(resource stream_id, string ref, string pattern, string content)","Read list of mailboxes containing a certain string"],imap_lsub:["array imap_lsub(resource stream_id, string ref, string pattern)","Return a list of subscribed mailboxes"],imap_mail:["bool imap_mail(string to, string subject, string message [, string additional_headers [, string cc [, string bcc [, string rpath]]]])","Send an email message"],imap_mail_compose:["string imap_mail_compose(array envelope, array body)","Create a MIME message based on given envelope and body sections"],imap_mail_copy:["bool imap_mail_copy(resource stream_id, string msglist, string mailbox [, int options])","Copy specified message to a mailbox"],imap_mail_move:["bool imap_mail_move(resource stream_id, string sequence, string mailbox [, int options])","Move specified message to a mailbox"],imap_mailboxmsginfo:["object imap_mailboxmsginfo(resource stream_id)","Returns info about the current mailbox"],imap_mime_header_decode:["array imap_mime_header_decode(string str)","Decode mime header element in accordance with RFC 2047 and return array of objects containing 'charset' encoding and decoded 'text'"],imap_msgno:["int imap_msgno(resource stream_id, int unique_msg_id)","Get the sequence number associated with a UID"],imap_mutf7_to_utf8:["string imap_mutf7_to_utf8(string in)","Decode a modified UTF-7 string to UTF-8"],imap_num_msg:["int imap_num_msg(resource stream_id)","Gives the number of messages in the current mailbox"],imap_num_recent:["int imap_num_recent(resource stream_id)","Gives the number of recent messages in current mailbox"],imap_open:["resource imap_open(string mailbox, string user, string password [, int options [, int n_retries]])","Open an IMAP stream to a mailbox"],imap_ping:["bool imap_ping(resource stream_id)","Check if the IMAP stream is still active"],imap_qprint:["string imap_qprint(string text)","Convert a quoted-printable string to an 8-bit string"],imap_renamemailbox:["bool imap_renamemailbox(resource stream_id, string old_name, string new_name)","Rename a mailbox"],imap_reopen:["bool imap_reopen(resource stream_id, string mailbox [, int options [, int n_retries]])","Reopen an IMAP stream to a new mailbox"],imap_rfc822_parse_adrlist:["array imap_rfc822_parse_adrlist(string address_string, string default_host)","Parses an address string"],imap_rfc822_parse_headers:["object imap_rfc822_parse_headers(string headers [, string default_host])","Parse a set of mail headers contained in a string, and return an object similar to imap_headerinfo()"],imap_rfc822_write_address:["string imap_rfc822_write_address(string mailbox, string host, string personal)","Returns a properly formatted email address given the mailbox, host, and personal info"],imap_savebody:['bool imap_savebody(resource stream_id, string|resource file, int msg_no[, string section = ""[, int options = 0]])',"Save a specific body section to a file"],imap_search:["array imap_search(resource stream_id, string criteria [, int options [, string charset]])","Return a list of messages matching the given criteria"],imap_set_quota:["bool imap_set_quota(resource stream_id, string qroot, int mailbox_size)","Will set the quota for qroot mailbox"],imap_setacl:["bool imap_setacl(resource stream_id, string mailbox, string id, string rights)","Sets the ACL for a given mailbox"],imap_setflag_full:["bool imap_setflag_full(resource stream_id, string sequence, string flag [, int options])","Sets flags on messages"],imap_sort:["array imap_sort(resource stream_id, int criteria, int reverse [, int options [, string search_criteria [, string charset]]])","Sort an array of message headers, optionally including only messages that meet specified criteria."],imap_status:["object imap_status(resource stream_id, string mailbox, int options)","Get status info from a mailbox"],imap_subscribe:["bool imap_subscribe(resource stream_id, string mailbox)","Subscribe to a mailbox"],imap_thread:["array imap_thread(resource stream_id [, int options])","Return threaded by REFERENCES tree"],imap_timeout:["mixed imap_timeout(int timeout_type [, int timeout])","Set or fetch imap timeout"],imap_uid:["int imap_uid(resource stream_id, int msg_no)","Get the unique message id associated with a standard sequential message number"],imap_undelete:["bool imap_undelete(resource stream_id, int msg_no [, int flags])","Remove the delete flag from a message"],imap_unsubscribe:["bool imap_unsubscribe(resource stream_id, string mailbox)","Unsubscribe from a mailbox"],imap_utf7_decode:["string imap_utf7_decode(string buf)","Decode a modified UTF-7 string"],imap_utf7_encode:["string imap_utf7_encode(string buf)","Encode a string in modified UTF-7"],imap_utf8:["string imap_utf8(string mime_encoded_text)","Convert a mime-encoded text to UTF-8"],imap_utf8_to_mutf7:["string imap_utf8_to_mutf7(string in)","Encode a UTF-8 string to modified UTF-7"],implode:["string implode([string glue,] array pieces)","Joins array elements placing glue string between items and return one string"],import_request_variables:["bool import_request_variables(string types [, string prefix])","Import GET/POST/Cookie variables into the global scope"],in_array:["bool in_array(mixed needle, array haystack [, bool strict])","Checks if the given value exists in the array"],include:["bool include(string path)","Includes and evaluates the specified file"],include_once:["bool include_once(string path)","Includes and evaluates the specified file"],inet_ntop:["string inet_ntop(string in_addr)","Converts a packed inet address to a human readable IP address string"],inet_pton:["string inet_pton(string ip_address)","Converts a human readable IP address to a packed binary string"],ini_get:["string ini_get(string varname)","Get a configuration option"],ini_get_all:["array ini_get_all([string extension[, bool details = true]])","Get all configuration options"],ini_restore:["void ini_restore(string varname)","Restore the value of a configuration option specified by varname"],ini_set:["string ini_set(string varname, string newvalue)","Set a configuration option, returns false on error and the old value of the configuration option on success"],interface_exists:["bool interface_exists(string classname [, bool autoload])","Checks if the class exists"],intl_error_name:["string intl_error_name()","* Return a string for a given error code. * The string will be the same as the name of the error code constant."],intl_get_error_code:["int intl_get_error_code()","* Get code of the last occured error."],intl_get_error_message:["string intl_get_error_message()","* Get text description of the last occured error."],intl_is_failure:["bool intl_is_failure()","* Check whether the given error code indicates a failure. * Returns true if it does, and false if the code * indicates success or a warning."],intval:["int intval(mixed var [, int base])","Get the integer value of a variable using the optional base for the conversion"],ip2long:["int ip2long(string ip_address)","Converts a string containing an (IPv4) Internet Protocol dotted address into a proper address"],iptcembed:["array iptcembed(string iptcdata, string jpeg_file_name [, int spool])","Embed binary IPTC data into a JPEG image."],iptcparse:["array iptcparse(string iptcdata)","Parse binary IPTC-data into associative array"],is_a:["bool is_a(object object, string class_name)","Returns true if the object is of this class or has this class as one of its parents"],is_array:["bool is_array(mixed var)","Returns true if variable is an array"],is_bool:["bool is_bool(mixed var)","Returns true if variable is a boolean"],is_callable:["bool is_callable(mixed var [, bool syntax_only [, string callable_name]])","Returns true if var is callable."],is_dir:["bool is_dir(string filename)","Returns true if file is directory"],is_executable:["bool is_executable(string filename)","Returns true if file is executable"],is_file:["bool is_file(string filename)","Returns true if file is a regular file"],is_finite:["bool is_finite(float val)","Returns whether argument is finite"],is_float:["bool is_float(mixed var)","Returns true if variable is float point"],is_infinite:["bool is_infinite(float val)","Returns whether argument is infinite"],is_link:["bool is_link(string filename)","Returns true if file is symbolic link"],is_long:["bool is_long(mixed var)","Returns true if variable is a long (integer)"],is_nan:["bool is_nan(float val)","Returns whether argument is not a number"],is_null:["bool is_null(mixed var)","Returns true if variable is null"],is_numeric:["bool is_numeric(mixed value)","Returns true if value is a number or a numeric string"],is_object:["bool is_object(mixed var)","Returns true if variable is an object"],is_readable:["bool is_readable(string filename)","Returns true if file can be read"],is_resource:["bool is_resource(mixed var)","Returns true if variable is a resource"],is_scalar:["bool is_scalar(mixed value)","Returns true if value is a scalar"],is_string:["bool is_string(mixed var)","Returns true if variable is a string"],is_subclass_of:["bool is_subclass_of(object object, string class_name)","Returns true if the object has this class as one of its parents"],is_uploaded_file:["bool is_uploaded_file(string path)","Check if file was created by rfc1867 upload"],is_writable:["bool is_writable(string filename)","Returns true if file can be written"],isset:["bool isset(mixed var [, mixed var])","Determine whether a variable is set"],iterator_apply:["int iterator_apply(Traversable it, mixed function [, mixed params])","Calls a function for every element in an iterator"],iterator_count:["int iterator_count(Traversable it)","Count the elements in an iterator"],iterator_to_array:["array iterator_to_array(Traversable it [, bool use_keys = true])","Copy the iterator into an array"],jddayofweek:["mixed jddayofweek(int juliandaycount [, int mode])","Returns name or number of day of week from julian day count"],jdmonthname:["string jdmonthname(int juliandaycount, int mode)","Returns name of month for julian day count"],jdtofrench:["string jdtofrench(int juliandaycount)","Converts a julian day count to a french republic calendar date"],jdtogregorian:["string jdtogregorian(int juliandaycount)","Converts a julian day count to a gregorian calendar date"],jdtojewish:["string jdtojewish(int juliandaycount [, bool hebrew [, int fl]])","Converts a julian day count to a jewish calendar date"],jdtojulian:["string jdtojulian(int juliandaycount)","Convert a julian day count to a julian calendar date"],jdtounix:["int jdtounix(int jday)","Convert Julian Day to UNIX timestamp"],jewishtojd:["int jewishtojd(int month, int day, int year)","Converts a jewish calendar date to a julian day count"],join:["string join(array src, string glue)","An alias for implode"],jpeg2wbmp:["bool jpeg2wbmp (string f_org, string f_dest, int d_height, int d_width, int threshold)","Convert JPEG image to WBMP image"],json_decode:["mixed json_decode(string json [, bool assoc [, long depth]])","Decodes the JSON representation into a PHP value"],json_encode:["string json_encode(mixed data [, int options])","Returns the JSON representation of a value"],json_last_error:["int json_last_error()","Returns the error code of the last json_decode()."],juliantojd:["int juliantojd(int month, int day, int year)","Converts a julian calendar date to julian day count"],key:["mixed key(array array_arg)","Return the key of the element currently pointed to by the internal array pointer"],krsort:["bool krsort(array &array_arg [, int sort_flags])","Sort an array by key value in reverse order"],ksort:["bool ksort(array &array_arg [, int sort_flags])","Sort an array by key"],lcfirst:["string lcfirst(string str)","Make a string's first character lowercase"],lcg_value:["float lcg_value()","Returns a value from the combined linear congruential generator"],lchgrp:["bool lchgrp(string filename, mixed group)","Change symlink group"],ldap_8859_to_t61:["string ldap_8859_to_t61(string value)","Translate 8859 characters to t61 characters"],ldap_add:["bool ldap_add(resource link, string dn, array entry)","Add entries to LDAP directory"],ldap_bind:["bool ldap_bind(resource link [, string dn [, string password]])","Bind to LDAP directory"],ldap_compare:["bool ldap_compare(resource link, string dn, string attr, string value)","Determine if an entry has a specific value for one of its attributes"],ldap_connect:["resource ldap_connect([string host [, int port [, string wallet [, string wallet_passwd [, int authmode]]]]])","Connect to an LDAP server"],ldap_count_entries:["int ldap_count_entries(resource link, resource result)","Count the number of entries in a search result"],ldap_delete:["bool ldap_delete(resource link, string dn)","Delete an entry from a directory"],ldap_dn2ufn:["string ldap_dn2ufn(string dn)","Convert DN to User Friendly Naming format"],ldap_err2str:["string ldap_err2str(int errno)","Convert error number to error string"],ldap_errno:["int ldap_errno(resource link)","Get the current ldap error number"],ldap_error:["string ldap_error(resource link)","Get the current ldap error string"],ldap_explode_dn:["array ldap_explode_dn(string dn, int with_attrib)","Splits DN into its component parts"],ldap_first_attribute:["string ldap_first_attribute(resource link, resource result_entry)","Return first attribute"],ldap_first_entry:["resource ldap_first_entry(resource link, resource result)","Return first result id"],ldap_first_reference:["resource ldap_first_reference(resource link, resource result)","Return first reference"],ldap_free_result:["bool ldap_free_result(resource result)","Free result memory"],ldap_get_attributes:["array ldap_get_attributes(resource link, resource result_entry)","Get attributes from a search result entry"],ldap_get_dn:["string ldap_get_dn(resource link, resource result_entry)","Get the DN of a result entry"],ldap_get_entries:["array ldap_get_entries(resource link, resource result)","Get all result entries"],ldap_get_option:["bool ldap_get_option(resource link, int option, mixed retval)","Get the current value of various session-wide parameters"],ldap_get_values_len:["array ldap_get_values_len(resource link, resource result_entry, string attribute)","Get all values with lengths from a result entry"],ldap_list:["resource ldap_list(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])","Single-level search"],ldap_mod_add:["bool ldap_mod_add(resource link, string dn, array entry)","Add attribute values to current"],ldap_mod_del:["bool ldap_mod_del(resource link, string dn, array entry)","Delete attribute values"],ldap_mod_replace:["bool ldap_mod_replace(resource link, string dn, array entry)","Replace attribute values with new ones"],ldap_next_attribute:["string ldap_next_attribute(resource link, resource result_entry)","Get the next attribute in result"],ldap_next_entry:["resource ldap_next_entry(resource link, resource result_entry)","Get next result entry"],ldap_next_reference:["resource ldap_next_reference(resource link, resource reference_entry)","Get next reference"],ldap_parse_reference:["bool ldap_parse_reference(resource link, resource reference_entry, array referrals)","Extract information from reference entry"],ldap_parse_result:["bool ldap_parse_result(resource link, resource result, int errcode, string matcheddn, string errmsg, array referrals)","Extract information from result"],ldap_read:["resource ldap_read(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])","Read an entry"],ldap_rename:["bool ldap_rename(resource link, string dn, string newrdn, string newparent, bool deleteoldrdn);","Modify the name of an entry"],ldap_sasl_bind:["bool ldap_sasl_bind(resource link [, string binddn [, string password [, string sasl_mech [, string sasl_realm [, string sasl_authc_id [, string sasl_authz_id [, string props]]]]]]])","Bind to LDAP directory using SASL"],ldap_search:["resource ldap_search(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])","Search LDAP tree under base_dn"],ldap_set_option:["bool ldap_set_option(resource link, int option, mixed newval)","Set the value of various session-wide parameters"],ldap_set_rebind_proc:["bool ldap_set_rebind_proc(resource link, string callback)","Set a callback function to do re-binds on referral chasing."],ldap_sort:["bool ldap_sort(resource link, resource result, string sortfilter)","Sort LDAP result entries"],ldap_start_tls:["bool ldap_start_tls(resource link)","Start TLS"],ldap_t61_to_8859:["string ldap_t61_to_8859(string value)","Translate t61 characters to 8859 characters"],ldap_unbind:["bool ldap_unbind(resource link)","Unbind from LDAP directory"],leak:["void leak(int num_bytes=3)","Cause an intentional memory leak, for testing/debugging purposes"],levenshtein:["int levenshtein(string str1, string str2[, int cost_ins, int cost_rep, int cost_del])","Calculate Levenshtein distance between two strings"],libxml_clear_errors:["void libxml_clear_errors()","Clear last error from libxml"],libxml_disable_entity_loader:["bool libxml_disable_entity_loader([boolean disable])","Disable/Enable ability to load external entities"],libxml_get_errors:["object libxml_get_errors()","Retrieve array of errors"],libxml_get_last_error:["object libxml_get_last_error()","Retrieve last error from libxml"],libxml_set_streams_context:["void libxml_set_streams_context(resource streams_context)","Set the streams context for the next libxml document load or write"],libxml_use_internal_errors:["bool libxml_use_internal_errors([boolean use_errors])","Disable libxml errors and allow user to fetch error information as needed"],link:["int link(string target, string link)","Create a hard link"],linkinfo:["int linkinfo(string filename)","Returns the st_dev field of the UNIX C stat structure describing the link"],litespeed_request_headers:["array litespeed_request_headers(void)","Fetch all HTTP request headers"],litespeed_response_headers:["array litespeed_response_headers(void)","Fetch all HTTP response headers"],locale_accept_from_http:["string locale_accept_from_http(string $http_accept)",null],locale_canonicalize:["static string locale_canonicalize(Locale $loc, string $locale)","* @param string $locale The locale string to canonicalize"],locale_filter_matches:["boolean locale_filter_matches(string $langtag, string $locale[, bool $canonicalize])","* Checks if a $langtag filter matches with $locale according to RFC 4647's basic filtering algorithm"],locale_get_all_variants:["static array locale_get_all_variants($locale)","* gets an array containing the list of variants, or null"],locale_get_default:["static string locale_get_default( )","Get default locale"],locale_get_keywords:["static array locale_get_keywords(string $locale) {","* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array (doh!)"],locale_get_primary_language:["static string locale_get_primary_language($locale)","* gets the primary language for the $locale"],locale_get_region:["static string locale_get_region($locale)","* gets the region for the $locale"],locale_get_script:["static string locale_get_script($locale)","* gets the script for the $locale"],locale_lookup:["string locale_lookup(array $langtag, string $locale[, bool $canonicalize[, string $default = null]])","* Searchs the items in $langtag for the best match to the language * range"],locale_set_default:["static string locale_set_default( string $locale )","Set default locale"],localeconv:["array localeconv(void)","Returns numeric formatting information based on the current locale"],localtime:["array localtime([int timestamp [, bool associative_array]])","Returns the results of the C system call localtime as an associative array if the associative_array argument is set to 1 other wise it is a regular array"],log:["float log(float number, [float base])","Returns the natural logarithm of the number, or the base log if base is specified"],log10:["float log10(float number)","Returns the base-10 logarithm of the number"],log1p:["float log1p(float number)","Returns log(1 + number), computed in a way that accurate even when the value of number is close to zero"],long2ip:["string long2ip(int proper_address)","Converts an (IPv4) Internet network address into a string in Internet standard dotted format"],lstat:["array lstat(string filename)","Give information about a file or symbolic link"],ltrim:["string ltrim(string str [, string character_mask])","Strips whitespace from the beginning of a string"],mail:["int mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])","Send an email message"],max:["mixed max(mixed arg1 [, mixed arg2 [, mixed ...]])","Return the highest value in an array or a series of arguments"],mb_check_encoding:["bool mb_check_encoding([string var[, string encoding]])","Check if the string is valid for the specified encoding"],mb_convert_case:["string mb_convert_case(string sourcestring, int mode [, string encoding])","Returns a case-folded version of sourcestring"],mb_convert_encoding:["string mb_convert_encoding(string str, string to-encoding [, mixed from-encoding])","Returns converted string in desired encoding"],mb_convert_kana:["string mb_convert_kana(string str [, string option] [, string encoding])","Conversion between full-width character and half-width character (Japanese)"],mb_convert_variables:["string mb_convert_variables(string to-encoding, mixed from-encoding, mixed vars [, ...])","Converts the string resource in variables to desired encoding"],mb_decode_mimeheader:["string mb_decode_mimeheader(string string)",'Decodes the MIME "encoded-word" in the string'],mb_decode_numericentity:["string mb_decode_numericentity(string string, array convmap [, string encoding])","Converts HTML numeric entities to character code"],mb_detect_encoding:["string mb_detect_encoding(string str [, mixed encoding_list [, bool strict]])","Encodings of the given string is returned (as a string)"],mb_detect_order:["bool|array mb_detect_order([mixed encoding-list])","Sets the current detect_order or Return the current detect_order as a array"],mb_encode_mimeheader:["string mb_encode_mimeheader(string str [, string charset [, string transfer-encoding [, string linefeed [, int indent]]]])",'Converts the string to MIME "encoded-word" in the format of =?charset?(B|Q)?encoded_string?='],mb_encode_numericentity:["string mb_encode_numericentity(string string, array convmap [, string encoding])","Converts specified characters to HTML numeric entities"],mb_encoding_aliases:["array mb_encoding_aliases(string encoding)","Returns an array of the aliases of a given encoding name"],mb_ereg:["int mb_ereg(string pattern, string string [, array registers])","Regular expression match for multibyte string"],mb_ereg_match:["bool mb_ereg_match(string pattern, string string [,string option])","Regular expression match for multibyte string"],mb_ereg_replace:["string mb_ereg_replace(string pattern, string replacement, string string [, string option])","Replace regular expression for multibyte string"],mb_ereg_search:["bool mb_ereg_search([string pattern[, string option]])","Regular expression search for multibyte string"],mb_ereg_search_getpos:["int mb_ereg_search_getpos(void)","Get search start position"],mb_ereg_search_getregs:["array mb_ereg_search_getregs(void)","Get matched substring of the last time"],mb_ereg_search_init:["bool mb_ereg_search_init(string string [, string pattern[, string option]])","Initialize string and regular expression for search."],mb_ereg_search_pos:["array mb_ereg_search_pos([string pattern[, string option]])","Regular expression search for multibyte string"],mb_ereg_search_regs:["array mb_ereg_search_regs([string pattern[, string option]])","Regular expression search for multibyte string"],mb_ereg_search_setpos:["bool mb_ereg_search_setpos(int position)","Set search start position"],mb_eregi:["int mb_eregi(string pattern, string string [, array registers])","Case-insensitive regular expression match for multibyte string"],mb_eregi_replace:["string mb_eregi_replace(string pattern, string replacement, string string)","Case insensitive replace regular expression for multibyte string"],mb_get_info:["mixed mb_get_info([string type])","Returns the current settings of mbstring"],mb_http_input:["mixed mb_http_input([string type])","Returns the input encoding"],mb_http_output:["string mb_http_output([string encoding])","Sets the current output_encoding or returns the current output_encoding as a string"],mb_internal_encoding:["string mb_internal_encoding([string encoding])","Sets the current internal encoding or Returns the current internal encoding as a string"],mb_language:["string mb_language([string language])","Sets the current language or Returns the current language as a string"],mb_list_encodings:["mixed mb_list_encodings()","Returns an array of all supported entity encodings"],mb_output_handler:["string mb_output_handler(string contents, int status)","Returns string in output buffer converted to the http_output encoding"],mb_parse_str:["bool mb_parse_str(string encoded_string [, array result])","Parses GET/POST/COOKIE data and sets global variables"],mb_preferred_mime_name:["string mb_preferred_mime_name(string encoding)","Return the preferred MIME name (charset) as a string"],mb_regex_encoding:["string mb_regex_encoding([string encoding])","Returns the current encoding for regex as a string."],mb_regex_set_options:["string mb_regex_set_options([string options])","Set or get the default options for mbregex functions"],mb_send_mail:["int mb_send_mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])","* Sends an email message with MIME scheme"],mb_split:["array mb_split(string pattern, string string [, int limit])","split multibyte string into array by regular expression"],mb_strcut:["string mb_strcut(string str, int start [, int length [, string encoding]])","Returns part of a string"],mb_strimwidth:["string mb_strimwidth(string str, int start, int width [, string trimmarker [, string encoding]])","Trim the string in terminal width"],mb_stripos:["int mb_stripos(string haystack, string needle [, int offset [, string encoding]])","Finds position of first occurrence of a string within another, case insensitive"],mb_stristr:["string mb_stristr(string haystack, string needle[, bool part[, string encoding]])","Finds first occurrence of a string within another, case insensitive"],mb_strlen:["int mb_strlen(string str [, string encoding])","Get character numbers of a string"],mb_strpos:["int mb_strpos(string haystack, string needle [, int offset [, string encoding]])","Find position of first occurrence of a string within another"],mb_strrchr:["string mb_strrchr(string haystack, string needle[, bool part[, string encoding]])","Finds the last occurrence of a character in a string within another"],mb_strrichr:["string mb_strrichr(string haystack, string needle[, bool part[, string encoding]])","Finds the last occurrence of a character in a string within another, case insensitive"],mb_strripos:["int mb_strripos(string haystack, string needle [, int offset [, string encoding]])","Finds position of last occurrence of a string within another, case insensitive"],mb_strrpos:["int mb_strrpos(string haystack, string needle [, int offset [, string encoding]])","Find position of last occurrence of a string within another"],mb_strstr:["string mb_strstr(string haystack, string needle[, bool part[, string encoding]])","Finds first occurrence of a string within another"],mb_strtolower:["string mb_strtolower(string sourcestring [, string encoding])","* Returns a lowercased version of sourcestring"],mb_strtoupper:["string mb_strtoupper(string sourcestring [, string encoding])","* Returns a uppercased version of sourcestring"],mb_strwidth:["int mb_strwidth(string str [, string encoding])","Gets terminal width of a string"],mb_substitute_character:["mixed mb_substitute_character([mixed substchar])","Sets the current substitute_character or returns the current substitute_character"],mb_substr:["string mb_substr(string str, int start [, int length [, string encoding]])","Returns part of a string"],mb_substr_count:["int mb_substr_count(string haystack, string needle [, string encoding])","Count the number of substring occurrences"],mcrypt_cbc:["string mcrypt_cbc(int cipher, string key, string data, int mode, string iv)","CBC crypt/decrypt data using key key with cipher cipher starting with iv"],mcrypt_cfb:["string mcrypt_cfb(int cipher, string key, string data, int mode, string iv)","CFB crypt/decrypt data using key key with cipher cipher starting with iv"],mcrypt_create_iv:["string mcrypt_create_iv(int size, int source)","Create an initialization vector (IV)"],mcrypt_decrypt:["string mcrypt_decrypt(string cipher, string key, string data, string mode, string iv)","OFB crypt/decrypt data using key key with cipher cipher starting with iv"],mcrypt_ecb:["string mcrypt_ecb(int cipher, string key, string data, int mode, string iv)","ECB crypt/decrypt data using key key with cipher cipher starting with iv"],mcrypt_enc_get_algorithms_name:["string mcrypt_enc_get_algorithms_name(resource td)","Returns the name of the algorithm specified by the descriptor td"],mcrypt_enc_get_block_size:["int mcrypt_enc_get_block_size(resource td)","Returns the block size of the cipher specified by the descriptor td"],mcrypt_enc_get_iv_size:["int mcrypt_enc_get_iv_size(resource td)","Returns the size of the IV in bytes of the algorithm specified by the descriptor td"],mcrypt_enc_get_key_size:["int mcrypt_enc_get_key_size(resource td)","Returns the maximum supported key size in bytes of the algorithm specified by the descriptor td"],mcrypt_enc_get_modes_name:["string mcrypt_enc_get_modes_name(resource td)","Returns the name of the mode specified by the descriptor td"],mcrypt_enc_get_supported_key_sizes:["array mcrypt_enc_get_supported_key_sizes(resource td)","This function decrypts the crypttext"],mcrypt_enc_is_block_algorithm:["bool mcrypt_enc_is_block_algorithm(resource td)","Returns TRUE if the alrogithm is a block algorithms"],mcrypt_enc_is_block_algorithm_mode:["bool mcrypt_enc_is_block_algorithm_mode(resource td)","Returns TRUE if the mode is for use with block algorithms"],mcrypt_enc_is_block_mode:["bool mcrypt_enc_is_block_mode(resource td)","Returns TRUE if the mode outputs blocks"],mcrypt_enc_self_test:["int mcrypt_enc_self_test(resource td)","This function runs the self test on the algorithm specified by the descriptor td"],mcrypt_encrypt:["string mcrypt_encrypt(string cipher, string key, string data, string mode, string iv)","OFB crypt/decrypt data using key key with cipher cipher starting with iv"],mcrypt_generic:["string mcrypt_generic(resource td, string data)","This function encrypts the plaintext"],mcrypt_generic_deinit:["bool mcrypt_generic_deinit(resource td)","This function terminates encrypt specified by the descriptor td"],mcrypt_generic_init:["int mcrypt_generic_init(resource td, string key, string iv)","This function initializes all buffers for the specific module"],mcrypt_get_block_size:["int mcrypt_get_block_size(string cipher, string module)","Get the key size of cipher"],mcrypt_get_cipher_name:["string mcrypt_get_cipher_name(string cipher)","Get the key size of cipher"],mcrypt_get_iv_size:["int mcrypt_get_iv_size(string cipher, string module)","Get the IV size of cipher (Usually the same as the blocksize)"],mcrypt_get_key_size:["int mcrypt_get_key_size(string cipher, string module)","Get the key size of cipher"],mcrypt_list_algorithms:["array mcrypt_list_algorithms([string lib_dir])",'List all algorithms in "module_dir"'],mcrypt_list_modes:["array mcrypt_list_modes([string lib_dir])",'List all modes "module_dir"'],mcrypt_module_close:["bool mcrypt_module_close(resource td)","Free the descriptor td"],mcrypt_module_get_algo_block_size:["int mcrypt_module_get_algo_block_size(string algorithm [, string lib_dir])","Returns the block size of the algorithm"],mcrypt_module_get_algo_key_size:["int mcrypt_module_get_algo_key_size(string algorithm [, string lib_dir])","Returns the maximum supported key size of the algorithm"],mcrypt_module_get_supported_key_sizes:["array mcrypt_module_get_supported_key_sizes(string algorithm [, string lib_dir])","This function decrypts the crypttext"],mcrypt_module_is_block_algorithm:["bool mcrypt_module_is_block_algorithm(string algorithm [, string lib_dir])","Returns TRUE if the algorithm is a block algorithm"],mcrypt_module_is_block_algorithm_mode:["bool mcrypt_module_is_block_algorithm_mode(string mode [, string lib_dir])","Returns TRUE if the mode is for use with block algorithms"],mcrypt_module_is_block_mode:["bool mcrypt_module_is_block_mode(string mode [, string lib_dir])","Returns TRUE if the mode outputs blocks of bytes"],mcrypt_module_open:["resource mcrypt_module_open(string cipher, string cipher_directory, string mode, string mode_directory)","Opens the module of the algorithm and the mode to be used"],mcrypt_module_self_test:["bool mcrypt_module_self_test(string algorithm [, string lib_dir])",'Does a self test of the module "module"'],mcrypt_ofb:["string mcrypt_ofb(int cipher, string key, string data, int mode, string iv)","OFB crypt/decrypt data using key key with cipher cipher starting with iv"],md5:["string md5(string str, [ bool raw_output])","Calculate the md5 hash of a string"],md5_file:["string md5_file(string filename [, bool raw_output])","Calculate the md5 hash of given filename"],mdecrypt_generic:["string mdecrypt_generic(resource td, string data)","This function decrypts the plaintext"],memory_get_peak_usage:["int memory_get_peak_usage([real_usage])","Returns the peak allocated by PHP memory"],memory_get_usage:["int memory_get_usage([real_usage])","Returns the allocated by PHP memory"],metaphone:["string metaphone(string text[, int phones])","Break english phrases down into their phonemes"],method_exists:["bool method_exists(object object, string method)","Checks if the class method exists"],mhash:["string mhash(int hash, string data [, string key])","Hash data with hash"],mhash_count:["int mhash_count(void)","Gets the number of available hashes"],mhash_get_block_size:["int mhash_get_block_size(int hash)","Gets the block size of hash"],mhash_get_hash_name:["string mhash_get_hash_name(int hash)","Gets the name of hash"],mhash_keygen_s2k:["string mhash_keygen_s2k(int hash, string input_password, string salt, int bytes)","Generates a key using hash functions"],microtime:["mixed microtime([bool get_as_float])","Returns either a string or a float containing the current time in seconds and microseconds"],mime_content_type:["string mime_content_type(string filename|resource stream)","Return content-type for file"],min:["mixed min(mixed arg1 [, mixed arg2 [, mixed ...]])","Return the lowest value in an array or a series of arguments"],mkdir:["bool mkdir(string pathname [, int mode [, bool recursive [, resource context]]])","Create a directory"],mktime:["int mktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])","Get UNIX timestamp for a date"],money_format:["string money_format(string format , float value)","Convert monetary value(s) to string"],move_uploaded_file:["bool move_uploaded_file(string path, string new_path)","Move a file if and only if it was created by an upload"],msg_get_queue:["resource msg_get_queue(int key [, int perms])","Attach to a message queue"],msg_queue_exists:["bool msg_queue_exists(int key)","Check wether a message queue exists"],msg_receive:["mixed msg_receive(resource queue, int desiredmsgtype, int &msgtype, int maxsize, mixed message [, bool unserialize=true [, int flags=0 [, int errorcode]]])","Send a message of type msgtype (must be > 0) to a message queue"],msg_remove_queue:["bool msg_remove_queue(resource queue)","Destroy the queue"],msg_send:["bool msg_send(resource queue, int msgtype, mixed message [, bool serialize=true [, bool blocking=true [, int errorcode]]])","Send a message of type msgtype (must be > 0) to a message queue"],msg_set_queue:["bool msg_set_queue(resource queue, array data)","Set information for a message queue"],msg_stat_queue:["array msg_stat_queue(resource queue)","Returns information about a message queue"],msgfmt_create:["MessageFormatter msgfmt_create( string $locale, string $pattern )","* Create formatter."],msgfmt_format:["mixed msgfmt_format( MessageFormatter $nf, array $args )","* Format a message."],msgfmt_format_message:["mixed msgfmt_format_message( string $locale, string $pattern, array $args )","* Format a message."],msgfmt_get_error_code:["int msgfmt_get_error_code( MessageFormatter $nf )","* Get formatter's last error code."],msgfmt_get_error_message:["string msgfmt_get_error_message( MessageFormatter $coll )","* Get text description for formatter's last error code."],msgfmt_get_locale:["string msgfmt_get_locale(MessageFormatter $mf)","* Get formatter locale."],msgfmt_get_pattern:["string msgfmt_get_pattern( MessageFormatter $mf )","* Get formatter pattern."],msgfmt_parse:["array msgfmt_parse( MessageFormatter $nf, string $source )","* Parse a message."],msgfmt_set_pattern:["bool msgfmt_set_pattern( MessageFormatter $mf, string $pattern )","* Set formatter pattern."],mssql_bind:["bool mssql_bind(resource stmt, string param_name, mixed var, int type [, bool is_output [, bool is_null [, int maxlen]]])","Adds a parameter to a stored procedure or a remote stored procedure"],mssql_close:["bool mssql_close([resource conn_id])","Closes a connection to a MS-SQL server"],mssql_connect:["int mssql_connect([string servername [, string username [, string password [, bool new_link]]]])","Establishes a connection to a MS-SQL server"],mssql_data_seek:["bool mssql_data_seek(resource result_id, int offset)","Moves the internal row pointer of the MS-SQL result associated with the specified result identifier to pointer to the specified row number"],mssql_execute:["mixed mssql_execute(resource stmt [, bool skip_results = false])","Executes a stored procedure on a MS-SQL server database"],mssql_fetch_array:["array mssql_fetch_array(resource result_id [, int result_type])","Returns an associative array of the current row in the result set specified by result_id"],mssql_fetch_assoc:["array mssql_fetch_assoc(resource result_id)","Returns an associative array of the current row in the result set specified by result_id"],mssql_fetch_batch:["int mssql_fetch_batch(resource result_index)","Returns the next batch of records"],mssql_fetch_field:["object mssql_fetch_field(resource result_id [, int offset])","Gets information about certain fields in a query result"],mssql_fetch_object:["object mssql_fetch_object(resource result_id)","Returns a pseudo-object of the current row in the result set specified by result_id"],mssql_fetch_row:["array mssql_fetch_row(resource result_id)","Returns an array of the current row in the result set specified by result_id"],mssql_field_length:["int mssql_field_length(resource result_id [, int offset])","Get the length of a MS-SQL field"],mssql_field_name:["string mssql_field_name(resource result_id [, int offset])","Returns the name of the field given by offset in the result set given by result_id"],mssql_field_seek:["bool mssql_field_seek(resource result_id, int offset)","Seeks to the specified field offset"],mssql_field_type:["string mssql_field_type(resource result_id [, int offset])","Returns the type of a field"],mssql_free_result:["bool mssql_free_result(resource result_index)","Free a MS-SQL result index"],mssql_free_statement:["bool mssql_free_statement(resource result_index)","Free a MS-SQL statement index"],mssql_get_last_message:["string mssql_get_last_message(void)","Gets the last message from the MS-SQL server"],mssql_guid_string:["string mssql_guid_string(string binary [,bool short_format])","Converts a 16 byte binary GUID to a string"],mssql_init:["int mssql_init(string sp_name [, resource conn_id])","Initializes a stored procedure or a remote stored procedure"],mssql_min_error_severity:["void mssql_min_error_severity(int severity)","Sets the lower error severity"],mssql_min_message_severity:["void mssql_min_message_severity(int severity)","Sets the lower message severity"],mssql_next_result:["bool mssql_next_result(resource result_id)","Move the internal result pointer to the next result"],mssql_num_fields:["int mssql_num_fields(resource mssql_result_index)","Returns the number of fields fetched in from the result id specified"],mssql_num_rows:["int mssql_num_rows(resource mssql_result_index)","Returns the number of rows fetched in from the result id specified"],mssql_pconnect:["int mssql_pconnect([string servername [, string username [, string password [, bool new_link]]]])","Establishes a persistent connection to a MS-SQL server"],mssql_query:["resource mssql_query(string query [, resource conn_id [, int batch_size]])","Perform an SQL query on a MS-SQL server database"],mssql_result:["string mssql_result(resource result_id, int row, mixed field)","Returns the contents of one cell from a MS-SQL result set"],mssql_rows_affected:["int mssql_rows_affected(resource conn_id)","Returns the number of records affected by the query"],mssql_select_db:["bool mssql_select_db(string database_name [, resource conn_id])","Select a MS-SQL database"],mt_getrandmax:["int mt_getrandmax(void)","Returns the maximum value a random number from Mersenne Twister can have"],mt_rand:["int mt_rand([int min, int max])","Returns a random number from Mersenne Twister"],mt_srand:["void mt_srand([int seed])","Seeds Mersenne Twister random number generator"],mysql_affected_rows:["int mysql_affected_rows([int link_identifier])","Gets number of affected rows in previous MySQL operation"],mysql_client_encoding:["string mysql_client_encoding([int link_identifier])","Returns the default character set for the current connection"],mysql_close:["bool mysql_close([int link_identifier])","Close a MySQL connection"],mysql_connect:["resource mysql_connect([string hostname[:port][:/path/to/socket] [, string username [, string password [, bool new [, int flags]]]]])","Opens a connection to a MySQL Server"],mysql_create_db:["bool mysql_create_db(string database_name [, int link_identifier])","Create a MySQL database"],mysql_data_seek:["bool mysql_data_seek(resource result, int row_number)","Move internal result pointer"],mysql_db_query:["resource mysql_db_query(string database_name, string query [, int link_identifier])","Sends an SQL query to MySQL"],mysql_drop_db:["bool mysql_drop_db(string database_name [, int link_identifier])","Drops (delete) a MySQL database"],mysql_errno:["int mysql_errno([int link_identifier])","Returns the number of the error message from previous MySQL operation"],mysql_error:["string mysql_error([int link_identifier])","Returns the text of the error message from previous MySQL operation"],mysql_escape_string:["string mysql_escape_string(string to_be_escaped)","Escape string for mysql query"],mysql_fetch_array:["array mysql_fetch_array(resource result [, int result_type])","Fetch a result row as an array (associative, numeric or both)"],mysql_fetch_assoc:["array mysql_fetch_assoc(resource result)","Fetch a result row as an associative array"],mysql_fetch_field:["object mysql_fetch_field(resource result [, int field_offset])","Gets column information from a result and return as an object"],mysql_fetch_lengths:["array mysql_fetch_lengths(resource result)","Gets max data size of each column in a result"],mysql_fetch_object:["object mysql_fetch_object(resource result [, string class_name [, NULL|array ctor_params]])","Fetch a result row as an object"],mysql_fetch_row:["array mysql_fetch_row(resource result)","Gets a result row as an enumerated array"],mysql_field_flags:["string mysql_field_flags(resource result, int field_offset)","Gets the flags associated with the specified field in a result"],mysql_field_len:["int mysql_field_len(resource result, int field_offset)","Returns the length of the specified field"],mysql_field_name:["string mysql_field_name(resource result, int field_index)","Gets the name of the specified field in a result"],mysql_field_seek:["bool mysql_field_seek(resource result, int field_offset)","Sets result pointer to a specific field offset"],mysql_field_table:["string mysql_field_table(resource result, int field_offset)","Gets name of the table the specified field is in"],mysql_field_type:["string mysql_field_type(resource result, int field_offset)","Gets the type of the specified field in a result"],mysql_free_result:["bool mysql_free_result(resource result)","Free result memory"],mysql_get_client_info:["string mysql_get_client_info(void)","Returns a string that represents the client library version"],mysql_get_host_info:["string mysql_get_host_info([int link_identifier])","Returns a string describing the type of connection in use, including the server host name"],mysql_get_proto_info:["int mysql_get_proto_info([int link_identifier])","Returns the protocol version used by current connection"],mysql_get_server_info:["string mysql_get_server_info([int link_identifier])","Returns a string that represents the server version number"],mysql_info:["string mysql_info([int link_identifier])","Returns a string containing information about the most recent query"],mysql_insert_id:["int mysql_insert_id([int link_identifier])","Gets the ID generated from the previous INSERT operation"],mysql_list_dbs:["resource mysql_list_dbs([int link_identifier])","List databases available on a MySQL server"],mysql_list_fields:["resource mysql_list_fields(string database_name, string table_name [, int link_identifier])","List MySQL result fields"],mysql_list_processes:["resource mysql_list_processes([int link_identifier])","Returns a result set describing the current server threads"],mysql_list_tables:["resource mysql_list_tables(string database_name [, int link_identifier])","List tables in a MySQL database"],mysql_num_fields:["int mysql_num_fields(resource result)","Gets number of fields in a result"],mysql_num_rows:["int mysql_num_rows(resource result)","Gets number of rows in a result"],mysql_pconnect:["resource mysql_pconnect([string hostname[:port][:/path/to/socket] [, string username [, string password [, int flags]]]])","Opens a persistent connection to a MySQL Server"],mysql_ping:["bool mysql_ping([int link_identifier])","Ping a server connection. If no connection then reconnect."],mysql_query:["resource mysql_query(string query [, int link_identifier])","Sends an SQL query to MySQL"],mysql_real_escape_string:["string mysql_real_escape_string(string to_be_escaped [, int link_identifier])","Escape special characters in a string for use in a SQL statement, taking into account the current charset of the connection"],mysql_result:["mixed mysql_result(resource result, int row [, mixed field])","Gets result data"],mysql_select_db:["bool mysql_select_db(string database_name [, int link_identifier])","Selects a MySQL database"],mysql_set_charset:["bool mysql_set_charset(string csname [, int link_identifier])","sets client character set"],mysql_stat:["string mysql_stat([int link_identifier])","Returns a string containing status information"],mysql_thread_id:["int mysql_thread_id([int link_identifier])","Returns the thread id of current connection"],mysql_unbuffered_query:["resource mysql_unbuffered_query(string query [, int link_identifier])","Sends an SQL query to MySQL, without fetching and buffering the result rows"],mysqli_affected_rows:["mixed mysqli_affected_rows(object link)","Get number of affected rows in previous MySQL operation"],mysqli_autocommit:["bool mysqli_autocommit(object link, bool mode)","Turn auto commit on or of"],mysqli_cache_stats:["array mysqli_cache_stats(void)","Returns statistics about the zval cache"],mysqli_change_user:["bool mysqli_change_user(object link, string user, string password, string database)","Change logged-in user of the active connection"],mysqli_character_set_name:["string mysqli_character_set_name(object link)","Returns the name of the character set used for this connection"],mysqli_close:["bool mysqli_close(object link)","Close connection"],mysqli_commit:["bool mysqli_commit(object link)","Commit outstanding actions and close transaction"],mysqli_connect:["object mysqli_connect([string hostname [,string username [,string passwd [,string dbname [,int port [,string socket]]]]]])","Open a connection to a mysql server"],mysqli_connect_errno:["int mysqli_connect_errno(void)","Returns the numerical value of the error message from last connect command"],mysqli_connect_error:["string mysqli_connect_error(void)","Returns the text of the error message from previous MySQL operation"],mysqli_data_seek:["bool mysqli_data_seek(object result, int offset)","Move internal result pointer"],mysqli_debug:["void mysqli_debug(string debug)",""],mysqli_dump_debug_info:["bool mysqli_dump_debug_info(object link)",""],mysqli_embedded_server_end:["void mysqli_embedded_server_end(void)",""],mysqli_embedded_server_start:["bool mysqli_embedded_server_start(bool start, array arguments, array groups)","initialize and start embedded server"],mysqli_errno:["int mysqli_errno(object link)","Returns the numerical value of the error message from previous MySQL operation"],mysqli_error:["string mysqli_error(object link)","Returns the text of the error message from previous MySQL operation"],mysqli_fetch_all:["mixed mysqli_fetch_all (object result [,int resulttype])","Fetches all result rows as an associative array, a numeric array, or both"],mysqli_fetch_array:["mixed mysqli_fetch_array (object result [,int resulttype])","Fetch a result row as an associative array, a numeric array, or both"],mysqli_fetch_assoc:["mixed mysqli_fetch_assoc (object result)","Fetch a result row as an associative array"],mysqli_fetch_field:["mixed mysqli_fetch_field (object result)","Get column information from a result and return as an object"],mysqli_fetch_field_direct:["mixed mysqli_fetch_field_direct (object result, int offset)","Fetch meta-data for a single field"],mysqli_fetch_fields:["mixed mysqli_fetch_fields (object result)","Return array of objects containing field meta-data"],mysqli_fetch_lengths:["mixed mysqli_fetch_lengths (object result)","Get the length of each output in a result"],mysqli_fetch_object:["mixed mysqli_fetch_object (object result [, string class_name [, NULL|array ctor_params]])","Fetch a result row as an object"],mysqli_fetch_row:["array mysqli_fetch_row (object result)","Get a result row as an enumerated array"],mysqli_field_count:["int mysqli_field_count(object link)","Fetch the number of fields returned by the last query for the given link"],mysqli_field_seek:["int mysqli_field_seek(object result, int fieldnr)","Set result pointer to a specified field offset"],mysqli_field_tell:["int mysqli_field_tell(object result)","Get current field offset of result pointer"],mysqli_free_result:["void mysqli_free_result(object result)","Free query result memory for the given result handle"],mysqli_get_charset:["object mysqli_get_charset(object link)","returns a character set object"],mysqli_get_client_info:["string mysqli_get_client_info(void)","Get MySQL client info"],mysqli_get_client_stats:["array mysqli_get_client_stats(void)","Returns statistics about the zval cache"],mysqli_get_client_version:["int mysqli_get_client_version(void)","Get MySQL client info"],mysqli_get_connection_stats:["array mysqli_get_connection_stats(void)","Returns statistics about the zval cache"],mysqli_get_host_info:["string mysqli_get_host_info (object link)","Get MySQL host info"],mysqli_get_proto_info:["int mysqli_get_proto_info(object link)","Get MySQL protocol information"],mysqli_get_server_info:["string mysqli_get_server_info(object link)","Get MySQL server info"],mysqli_get_server_version:["int mysqli_get_server_version(object link)","Return the MySQL version for the server referenced by the given link"],mysqli_get_warnings:["object mysqli_get_warnings(object link) */",'PHP_FUNCTION(mysqli_get_warnings) { MY_MYSQL *mysql; zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; MYSQLI_WARNING *w; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID); if (mysql_warning_count(mysql->mysql)) { w = php_get_warnings(mysql->mysql TSRMLS_CC); } else { RETURN_FALSE; } mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->ptr = mysqli_resource->info = (void *)w; mysqli_resource->status = MYSQLI_STATUS_VALID; MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_warning_class_entry); } /* }}}'],mysqli_info:["string mysqli_info(object link)","Get information about the most recent query"],mysqli_init:["resource mysqli_init(void)","Initialize mysqli and return a resource for use with mysql_real_connect"],mysqli_insert_id:["mixed mysqli_insert_id(object link)","Get the ID generated from the previous INSERT operation"],mysqli_kill:["bool mysqli_kill(object link, int processid)","Kill a mysql process on the server"],mysqli_link_construct:["object mysqli_link_construct()",""],mysqli_more_results:["bool mysqli_more_results(object link)","check if there any more query results from a multi query"],mysqli_multi_query:["bool mysqli_multi_query(object link, string query)","allows to execute multiple queries"],mysqli_next_result:["bool mysqli_next_result(object link)","read next result from multi_query"],mysqli_num_fields:["int mysqli_num_fields(object result)","Get number of fields in result"],mysqli_num_rows:["mixed mysqli_num_rows(object result)","Get number of rows in result"],mysqli_options:["bool mysqli_options(object link, int flags, mixed values)","Set options"],mysqli_ping:["bool mysqli_ping(object link)","Ping a server connection or reconnect if there is no connection"],mysqli_poll:["int mysqli_poll(array read, array write, array error, long sec [, long usec])","Poll connections"],mysqli_prepare:["mixed mysqli_prepare(object link, string query)","Prepare a SQL statement for execution"],mysqli_query:["mixed mysqli_query(object link, string query [,int resultmode]) */",'PHP_FUNCTION(mysqli_query) { MY_MYSQL *mysql; zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; MYSQL_RES *result; char *query = NULL; unsigned int query_len; unsigned long resultmode = MYSQLI_STORE_RESULT; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os|l", &mysql_link, mysqli_link_class_entry, &query, &query_len, &resultmode) == FAILURE) { return; } if (!query_len) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty query"); RETURN_FALSE; } if ((resultmode & ~MYSQLI_ASYNC) != MYSQLI_USE_RESULT && (resultmode & ~MYSQLI_ASYNC) != MYSQLI_STORE_RESULT) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid value for resultmode"); RETURN_FALSE; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, "mysqli_link", MYSQLI_STATUS_VALID); MYSQLI_DISABLE_MQ; #ifdef MYSQLI_USE_MYSQLND if (resultmode & MYSQLI_ASYNC) { if (mysqli_async_query(mysql->mysql, query, query_len)) { MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); RETURN_FALSE; } mysql->async_result_fetch_type = resultmode & ~MYSQLI_ASYNC; RETURN_TRUE; } #endif if (mysql_real_query(mysql->mysql, query, query_len)) { MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); RETURN_FALSE; } if (!mysql_field_count(mysql->mysql)) { /* no result set - not a SELECT'],mysqli_real_connect:["bool mysqli_real_connect(object link [,string hostname [,string username [,string passwd [,string dbname [,int port [,string socket [,int flags]]]]]]])","Open a connection to a mysql server"],mysqli_real_escape_string:["string mysqli_real_escape_string(object link, string escapestr)","Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection"],mysqli_real_query:["bool mysqli_real_query(object link, string query)","Binary-safe version of mysql_query()"],mysqli_reap_async_query:["int mysqli_reap_async_query(object link)","Poll connections"],mysqli_refresh:["bool mysqli_refresh(object link, long options)","Flush tables or caches, or reset replication server information"],mysqli_report:["bool mysqli_report(int flags)","sets report level"],mysqli_rollback:["bool mysqli_rollback(object link)","Undo actions from current transaction"],mysqli_select_db:["bool mysqli_select_db(object link, string dbname)","Select a MySQL database"],mysqli_set_charset:["bool mysqli_set_charset(object link, string csname)","sets client character set"],mysqli_set_local_infile_default:["void mysqli_set_local_infile_default(object link)","unsets user defined handler for load local infile command"],mysqli_set_local_infile_handler:["bool mysqli_set_local_infile_handler(object link, callback read_func)","Set callback functions for LOAD DATA LOCAL INFILE"],mysqli_sqlstate:["string mysqli_sqlstate(object link)","Returns the SQLSTATE error from previous MySQL operation"],mysqli_ssl_set:["bool mysqli_ssl_set(object link ,string key ,string cert ,string ca ,string capath ,string cipher])",""],mysqli_stat:["mixed mysqli_stat(object link)","Get current system status"],mysqli_stmt_affected_rows:["mixed mysqli_stmt_affected_rows(object stmt)","Return the number of rows affected in the last query for the given link"],mysqli_stmt_attr_get:["int mysqli_stmt_attr_get(object stmt, long attr)",""],mysqli_stmt_attr_set:["int mysqli_stmt_attr_set(object stmt, long attr, long mode)",""],mysqli_stmt_bind_param:["bool mysqli_stmt_bind_param(object stmt, string types, mixed variable [,mixed,....])","Bind variables to a prepared statement as parameters"],mysqli_stmt_bind_result:["bool mysqli_stmt_bind_result(object stmt, mixed var, [,mixed, ...])","Bind variables to a prepared statement for result storage"],mysqli_stmt_close:["bool mysqli_stmt_close(object stmt)","Close statement"],mysqli_stmt_data_seek:["void mysqli_stmt_data_seek(object stmt, int offset)","Move internal result pointer"],mysqli_stmt_errno:["int mysqli_stmt_errno(object stmt)",""],mysqli_stmt_error:["string mysqli_stmt_error(object stmt)",""],mysqli_stmt_execute:["bool mysqli_stmt_execute(object stmt)","Execute a prepared statement"],mysqli_stmt_fetch:["mixed mysqli_stmt_fetch(object stmt)","Fetch results from a prepared statement into the bound variables"],mysqli_stmt_field_count:["int mysqli_stmt_field_count(object stmt) {","Return the number of result columns for the given statement"],mysqli_stmt_free_result:["void mysqli_stmt_free_result(object stmt)","Free stored result memory for the given statement handle"],mysqli_stmt_get_result:["object mysqli_stmt_get_result(object link)","Buffer result set on client"],mysqli_stmt_get_warnings:["object mysqli_stmt_get_warnings(object link) */",'PHP_FUNCTION(mysqli_stmt_get_warnings) { MY_STMT *stmt; zval *stmt_link; MYSQLI_RESOURCE *mysqli_resource; MYSQLI_WARNING *w; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &stmt_link, mysqli_stmt_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(stmt, MY_STMT*, &stmt_link, "mysqli_stmt", MYSQLI_STATUS_VALID); if (mysqli_stmt_warning_count(stmt->stmt)) { w = php_get_warnings(mysqli_stmt_get_connection(stmt->stmt) TSRMLS_CC); } else { RETURN_FALSE; } mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->ptr = mysqli_resource->info = (void *)w; mysqli_resource->status = MYSQLI_STATUS_VALID; MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_warning_class_entry); } /* }}}'],mysqli_stmt_init:["mixed mysqli_stmt_init(object link)","Initialize statement object"],mysqli_stmt_insert_id:["mixed mysqli_stmt_insert_id(object stmt)","Get the ID generated from the previous INSERT operation"],mysqli_stmt_next_result:["bool mysqli_stmt_next_result(object link)","read next result from multi_query"],mysqli_stmt_num_rows:["mixed mysqli_stmt_num_rows(object stmt)","Return the number of rows in statements result set"],mysqli_stmt_param_count:["int mysqli_stmt_param_count(object stmt)","Return the number of parameter for the given statement"],mysqli_stmt_prepare:["bool mysqli_stmt_prepare(object stmt, string query)","prepare server side statement with query"],mysqli_stmt_reset:["bool mysqli_stmt_reset(object stmt)","reset a prepared statement"],mysqli_stmt_result_metadata:["mixed mysqli_stmt_result_metadata(object stmt)","return result set from statement"],mysqli_stmt_send_long_data:["bool mysqli_stmt_send_long_data(object stmt, int param_nr, string data)",""],mysqli_stmt_sqlstate:["string mysqli_stmt_sqlstate(object stmt)",""],mysqli_stmt_store_result:["bool mysqli_stmt_store_result(stmt)",""],mysqli_store_result:["object mysqli_store_result(object link)","Buffer result set on client"],mysqli_thread_id:["int mysqli_thread_id(object link)","Return the current thread ID"],mysqli_thread_safe:["bool mysqli_thread_safe(void)","Return whether thread safety is given or not"],mysqli_use_result:["mixed mysqli_use_result(object link)","Directly retrieve query results - do not buffer results on client side"],mysqli_warning_count:["int mysqli_warning_count (object link)","Return number of warnings from the last query for the given link"],natcasesort:["void natcasesort(array &array_arg)","Sort an array using case-insensitive natural sort"],natsort:["void natsort(array &array_arg)","Sort an array using natural sort"],next:["mixed next(array array_arg)","Move array argument's internal pointer to the next element and return it"],ngettext:["string ngettext(string MSGID1, string MSGID2, int N)","Plural version of gettext()"],nl2br:["string nl2br(string str [, bool is_xhtml])","Converts newlines to HTML line breaks"],nl_langinfo:["string nl_langinfo(int item)","Query language and locale information"],normalizer_is_normalize:["bool normalizer_is_normalize( string $input [, string $form = FORM_C] )","* Test if a string is in a given normalization form."],normalizer_normalize:["string normalizer_normalize( string $input [, string $form = FORM_C] )","* Normalize a string."],nsapi_request_headers:["array nsapi_request_headers(void)","Get all headers from the request"],nsapi_response_headers:["array nsapi_response_headers(void)","Get all headers from the response"],nsapi_virtual:["bool nsapi_virtual(string uri)","Perform an NSAPI sub-request"],number_format:["string number_format(float number [, int num_decimal_places [, string dec_seperator, string thousands_seperator]])","Formats a number with grouped thousands"],numfmt_create:["NumberFormatter numfmt_create( string $locale, int style[, string $pattern ] )","* Create number formatter."],numfmt_format:["mixed numfmt_format( NumberFormatter $nf, mixed $num[, int type] )","* Format a number."],numfmt_format_currency:["mixed numfmt_format_currency( NumberFormatter $nf, double $num, string $currency )","* Format a number as currency."],numfmt_get_attribute:["mixed numfmt_get_attribute( NumberFormatter $nf, int $attr )","* Get formatter attribute value."],numfmt_get_error_code:["int numfmt_get_error_code( NumberFormatter $nf )","* Get formatter's last error code."],numfmt_get_error_message:["string numfmt_get_error_message( NumberFormatter $nf )","* Get text description for formatter's last error code."],numfmt_get_locale:["string numfmt_get_locale( NumberFormatter $nf[, int type] )","* Get formatter locale."],numfmt_get_pattern:["string numfmt_get_pattern( NumberFormatter $nf )","* Get formatter pattern."],numfmt_get_symbol:["string numfmt_get_symbol( NumberFormatter $nf, int $attr )","* Get formatter symbol value."],numfmt_get_text_attribute:["string numfmt_get_text_attribute( NumberFormatter $nf, int $attr )","* Get formatter attribute value."],numfmt_parse:["mixed numfmt_parse( NumberFormatter $nf, string $str[, int $type, int &$position ])","* Parse a number."],numfmt_parse_currency:["double numfmt_parse_currency( NumberFormatter $nf, string $str, string $&currency[, int $&position] )","* Parse a number as currency."],numfmt_parse_message:["array numfmt_parse_message( string $locale, string $pattern, string $source )","* Parse a message."],numfmt_set_attribute:["bool numfmt_set_attribute( NumberFormatter $nf, int $attr, mixed $value )","* Get formatter attribute value."],numfmt_set_pattern:["bool numfmt_set_pattern( NumberFormatter $nf, string $pattern )","* Set formatter pattern."],numfmt_set_symbol:["bool numfmt_set_symbol( NumberFormatter $nf, int $attr, string $symbol )","* Set formatter symbol value."],numfmt_set_text_attribute:["bool numfmt_set_text_attribute( NumberFormatter $nf, int $attr, string $value )","* Get formatter attribute value."],ob_clean:["bool ob_clean(void)","Clean (delete) the current output buffer"],ob_end_clean:["bool ob_end_clean(void)","Clean the output buffer, and delete current output buffer"],ob_end_flush:["bool ob_end_flush(void)","Flush (send) the output buffer, and delete current output buffer"],ob_flush:["bool ob_flush(void)","Flush (send) contents of the output buffer. The last buffer content is sent to next buffer"],ob_get_clean:["bool ob_get_clean(void)","Get current buffer contents and delete current output buffer"],ob_get_contents:["string ob_get_contents(void)","Return the contents of the output buffer"],ob_get_flush:["bool ob_get_flush(void)","Get current buffer contents, flush (send) the output buffer, and delete current output buffer"],ob_get_length:["int ob_get_length(void)","Return the length of the output buffer"],ob_get_level:["int ob_get_level(void)","Return the nesting level of the output buffer"],ob_get_status:["false|array ob_get_status([bool full_status])","Return the status of the active or all output buffers"],ob_gzhandler:["string ob_gzhandler(string str, int mode)","Encode str based on accept-encoding setting - designed to be called from ob_start()"],ob_iconv_handler:["string ob_iconv_handler(string contents, int status)","Returns str in output buffer converted to the iconv.output_encoding character set"],ob_implicit_flush:["void ob_implicit_flush([int flag])","Turn implicit flush on/off and is equivalent to calling flush() after every output call"],ob_list_handlers:["false|array ob_list_handlers()","* List all output_buffers in an array"],ob_start:["bool ob_start([ string|array user_function [, int chunk_size [, bool erase]]])","Turn on Output Buffering (specifying an optional output handler)."],oci_bind_array_by_name:["bool oci_bind_array_by_name(resource stmt, string name, array &var, int max_table_length [, int max_item_length [, int type ]])","Bind a PHP array to an Oracle PL/SQL type by name"],oci_bind_by_name:["bool oci_bind_by_name(resource stmt, string name, mixed &var, [, int maxlength [, int type]])","Bind a PHP variable to an Oracle placeholder by name"],oci_cancel:["bool oci_cancel(resource stmt)","Cancel reading from a cursor"],oci_close:["bool oci_close(resource connection)","Disconnect from database"],oci_collection_append:["bool oci_collection_append(string value)","Append an object to the collection"],oci_collection_assign:["bool oci_collection_assign(object from)","Assign a collection from another existing collection"],oci_collection_element_assign:["bool oci_collection_element_assign(int index, string val)","Assign element val to collection at index ndx"],oci_collection_element_get:["string oci_collection_element_get(int ndx)","Retrieve the value at collection index ndx"],oci_collection_max:["int oci_collection_max()","Return the max value of a collection. For a varray this is the maximum length of the array"],oci_collection_size:["int oci_collection_size()","Return the size of a collection"],oci_collection_trim:["bool oci_collection_trim(int num)","Trim num elements from the end of a collection"],oci_commit:["bool oci_commit(resource connection)","Commit the current context"],oci_connect:["resource oci_connect(string user, string pass [, string db [, string charset [, int session_mode ]])","Connect to an Oracle database and log on. Returns a new session."],oci_define_by_name:["bool oci_define_by_name(resource stmt, string name, mixed &var [, int type])","Define a PHP variable to an Oracle column by name"],oci_error:["array oci_error([resource stmt|connection|global])","Return the last error of stmt|connection|global. If no error happened returns false."],oci_execute:["bool oci_execute(resource stmt [, int mode])","Execute a parsed statement"],oci_fetch:["bool oci_fetch(resource stmt)","Prepare a new row of data for reading"],oci_fetch_all:["int oci_fetch_all(resource stmt, array &output[, int skip[, int maxrows[, int flags]]])","Fetch all rows of result data into an array"],oci_fetch_array:["array oci_fetch_array( resource stmt [, int mode ])","Fetch a result row as an array"],oci_fetch_assoc:["array oci_fetch_assoc( resource stmt )","Fetch a result row as an associative array"],oci_fetch_object:["object oci_fetch_object( resource stmt )","Fetch a result row as an object"],oci_fetch_row:["array oci_fetch_row( resource stmt )","Fetch a result row as an enumerated array"],oci_field_is_null:["bool oci_field_is_null(resource stmt, int col)","Tell whether a column is NULL"],oci_field_name:["string oci_field_name(resource stmt, int col)","Tell the name of a column"],oci_field_precision:["int oci_field_precision(resource stmt, int col)","Tell the precision of a column"],oci_field_scale:["int oci_field_scale(resource stmt, int col)","Tell the scale of a column"],oci_field_size:["int oci_field_size(resource stmt, int col)","Tell the maximum data size of a column"],oci_field_type:["mixed oci_field_type(resource stmt, int col)","Tell the data type of a column"],oci_field_type_raw:["int oci_field_type_raw(resource stmt, int col)","Tell the raw oracle data type of a column"],oci_free_collection:["bool oci_free_collection()","Deletes collection object"],oci_free_descriptor:["bool oci_free_descriptor()","Deletes large object description"],oci_free_statement:["bool oci_free_statement(resource stmt)","Free all resources associated with a statement"],oci_internal_debug:["void oci_internal_debug(int onoff)","Toggle internal debugging output for the OCI extension"],oci_lob_append:["bool oci_lob_append( object lob )","Appends data from a LOB to another LOB"],oci_lob_close:["bool oci_lob_close()","Closes lob descriptor"],oci_lob_copy:["bool oci_lob_copy( object lob_to, object lob_from [, int length ] )","Copies data from a LOB to another LOB"],oci_lob_eof:["bool oci_lob_eof()","Checks if EOF is reached"],oci_lob_erase:["int oci_lob_erase( [ int offset [, int length ] ] )","Erases a specified portion of the internal LOB, starting at a specified offset"],oci_lob_export:["bool oci_lob_export([string filename [, int start [, int length]]])","Writes a large object into a file"],oci_lob_flush:["bool oci_lob_flush( [ int flag ] )","Flushes the LOB buffer"],oci_lob_import:["bool oci_lob_import( string filename )","Loads file into a LOB"],oci_lob_is_equal:["bool oci_lob_is_equal( object lob1, object lob2 )","Tests to see if two LOB/FILE locators are equal"],oci_lob_load:["string oci_lob_load()","Loads a large object"],oci_lob_read:["string oci_lob_read( int length )","Reads particular part of a large object"],oci_lob_rewind:["bool oci_lob_rewind()","Rewind pointer of a LOB"],oci_lob_save:["bool oci_lob_save( string data [, int offset ])","Saves a large object"],oci_lob_seek:["bool oci_lob_seek( int offset [, int whence ])","Moves the pointer of a LOB"],oci_lob_size:["int oci_lob_size()","Returns size of a large object"],oci_lob_tell:["int oci_lob_tell()","Tells LOB pointer position"],oci_lob_truncate:["bool oci_lob_truncate( [ int length ])","Truncates a LOB"],oci_lob_write:["int oci_lob_write( string string [, int length ])","Writes data to current position of a LOB"],oci_lob_write_temporary:["bool oci_lob_write_temporary(string var [, int lob_type])","Writes temporary blob"],oci_new_collection:["object oci_new_collection(resource connection, string tdo [, string schema])","Initialize a new collection"],oci_new_connect:["resource oci_new_connect(string user, string pass [, string db])","Connect to an Oracle database and log on. Returns a new session."],oci_new_cursor:["resource oci_new_cursor(resource connection)","Return a new cursor (Statement-Handle) - use this to bind ref-cursors!"],oci_new_descriptor:["object oci_new_descriptor(resource connection [, int type])","Initialize a new empty descriptor LOB/FILE (LOB is default)"],oci_num_fields:["int oci_num_fields(resource stmt)","Return the number of result columns in a statement"],oci_num_rows:["int oci_num_rows(resource stmt)","Return the row count of an OCI statement"],oci_parse:["resource oci_parse(resource connection, string query)","Parse a query and return a statement"],oci_password_change:["bool oci_password_change(resource connection, string username, string old_password, string new_password)","Changes the password of an account"],oci_pconnect:["resource oci_pconnect(string user, string pass [, string db [, string charset ]])","Connect to an Oracle database using a persistent connection and log on. Returns a new session."],oci_result:["string oci_result(resource stmt, mixed column)","Return a single column of result data"],oci_rollback:["bool oci_rollback(resource connection)","Rollback the current context"],oci_server_version:["string oci_server_version(resource connection)","Return a string containing server version information"],oci_set_action:["bool oci_set_action(resource connection, string value)","Sets the action attribute on the connection"],oci_set_client_identifier:["bool oci_set_client_identifier(resource connection, string value)","Sets the client identifier attribute on the connection"],oci_set_client_info:["bool oci_set_client_info(resource connection, string value)","Sets the client info attribute on the connection"],oci_set_edition:["bool oci_set_edition(string value)","Sets the edition attribute for all subsequent connections created"],oci_set_module_name:["bool oci_set_module_name(resource connection, string value)","Sets the module attribute on the connection"],oci_set_prefetch:["bool oci_set_prefetch(resource stmt, int prefetch_rows)","Sets the number of rows to be prefetched on execute to prefetch_rows for stmt"],oci_statement_type:["string oci_statement_type(resource stmt)","Return the query type of an OCI statement"],ocifetchinto:["int ocifetchinto(resource stmt, array &output [, int mode])","Fetch a row of result data into an array"],ocigetbufferinglob:["bool ocigetbufferinglob()","Returns current state of buffering for a LOB"],ocisetbufferinglob:["bool ocisetbufferinglob( boolean flag )","Enables/disables buffering for a LOB"],octdec:["int octdec(string octal_number)","Returns the decimal equivalent of an octal string"],odbc_autocommit:["mixed odbc_autocommit(resource connection_id [, int OnOff])","Toggle autocommit mode or get status"],odbc_binmode:["bool odbc_binmode(int result_id, int mode)","Handle binary column data"],odbc_close:["void odbc_close(resource connection_id)","Close an ODBC connection"],odbc_close_all:["void odbc_close_all(void)","Close all ODBC connections"],odbc_columnprivileges:["resource odbc_columnprivileges(resource connection_id, string catalog, string schema, string table, string column)","Returns a result identifier that can be used to fetch a list of columns and associated privileges for the specified table"],odbc_columns:["resource odbc_columns(resource connection_id [, string qualifier [, string owner [, string table_name [, string column_name]]]])","Returns a result identifier that can be used to fetch a list of column names in specified tables"],odbc_commit:["bool odbc_commit(resource connection_id)","Commit an ODBC transaction"],odbc_connect:["resource odbc_connect(string DSN, string user, string password [, int cursor_option])","Connect to a datasource"],odbc_cursor:["string odbc_cursor(resource result_id)","Get cursor name"],odbc_data_source:["array odbc_data_source(resource connection_id, int fetch_type)","Return information about the currently connected data source"],odbc_error:["string odbc_error([resource connection_id])","Get the last error code"],odbc_errormsg:["string odbc_errormsg([resource connection_id])","Get the last error message"],odbc_exec:["resource odbc_exec(resource connection_id, string query [, int flags])","Prepare and execute an SQL statement"],odbc_execute:["bool odbc_execute(resource result_id [, array parameters_array])","Execute a prepared statement"],odbc_fetch_array:["array odbc_fetch_array(int result [, int rownumber])","Fetch a result row as an associative array"],odbc_fetch_into:["int odbc_fetch_into(resource result_id, array &result_array, [, int rownumber])","Fetch one result row into an array"],odbc_fetch_object:["object odbc_fetch_object(int result [, int rownumber])","Fetch a result row as an object"],odbc_fetch_row:["bool odbc_fetch_row(resource result_id [, int row_number])","Fetch a row"],odbc_field_len:["int odbc_field_len(resource result_id, int field_number)","Get the length (precision) of a column"],odbc_field_name:["string odbc_field_name(resource result_id, int field_number)","Get a column name"],odbc_field_num:["int odbc_field_num(resource result_id, string field_name)","Return column number"],odbc_field_scale:["int odbc_field_scale(resource result_id, int field_number)","Get the scale of a column"],odbc_field_type:["string odbc_field_type(resource result_id, int field_number)","Get the datatype of a column"],odbc_foreignkeys:["resource odbc_foreignkeys(resource connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table)","Returns a result identifier to either a list of foreign keys in the specified table or a list of foreign keys in other tables that refer to the primary key in the specified table"],odbc_free_result:["bool odbc_free_result(resource result_id)","Free resources associated with a result"],odbc_gettypeinfo:["resource odbc_gettypeinfo(resource connection_id [, int data_type])","Returns a result identifier containing information about data types supported by the data source"],odbc_longreadlen:["bool odbc_longreadlen(int result_id, int length)","Handle LONG columns"],odbc_next_result:["bool odbc_next_result(resource result_id)","Checks if multiple results are avaiable"],odbc_num_fields:["int odbc_num_fields(resource result_id)","Get number of columns in a result"],odbc_num_rows:["int odbc_num_rows(resource result_id)","Get number of rows in a result"],odbc_pconnect:["resource odbc_pconnect(string DSN, string user, string password [, int cursor_option])","Establish a persistent connection to a datasource"],odbc_prepare:["resource odbc_prepare(resource connection_id, string query)","Prepares a statement for execution"],odbc_primarykeys:["resource odbc_primarykeys(resource connection_id, string qualifier, string owner, string table)","Returns a result identifier listing the column names that comprise the primary key for a table"],odbc_procedurecolumns:["resource odbc_procedurecolumns(resource connection_id [, string qualifier, string owner, string proc, string column])","Returns a result identifier containing the list of input and output parameters, as well as the columns that make up the result set for the specified procedures"],odbc_procedures:["resource odbc_procedures(resource connection_id [, string qualifier, string owner, string name])","Returns a result identifier containg the list of procedure names in a datasource"],odbc_result:["mixed odbc_result(resource result_id, mixed field)","Get result data"],odbc_result_all:["int odbc_result_all(resource result_id [, string format])","Print result as HTML table"],odbc_rollback:["bool odbc_rollback(resource connection_id)","Rollback a transaction"],odbc_setoption:["bool odbc_setoption(resource conn_id|result_id, int which, int option, int value)","Sets connection or statement options"],odbc_specialcolumns:["resource odbc_specialcolumns(resource connection_id, int type, string qualifier, string owner, string table, int scope, int nullable)","Returns a result identifier containing either the optimal set of columns that uniquely identifies a row in the table or columns that are automatically updated when any value in the row is updated by a transaction"],odbc_statistics:["resource odbc_statistics(resource connection_id, string qualifier, string owner, string name, int unique, int accuracy)","Returns a result identifier that contains statistics about a single table and the indexes associated with the table"],odbc_tableprivileges:["resource odbc_tableprivileges(resource connection_id, string qualifier, string owner, string name)","Returns a result identifier containing a list of tables and the privileges associated with each table"],odbc_tables:["resource odbc_tables(resource connection_id [, string qualifier [, string owner [, string name [, string table_types]]]])","Call the SQLTables function"],opendir:["mixed opendir(string path[, resource context])","Open a directory and return a dir_handle"],openlog:["bool openlog(string ident, int option, int facility)","Open connection to system logger"],openssl_csr_export:["bool openssl_csr_export(resource csr, string &out [, bool notext=true])","Exports a CSR to file or a var"],openssl_csr_export_to_file:["bool openssl_csr_export_to_file(resource csr, string outfilename [, bool notext=true])","Exports a CSR to file"],openssl_csr_get_public_key:["mixed openssl_csr_get_public_key(mixed csr)","Returns the subject of a CERT or FALSE on error"],openssl_csr_get_subject:["mixed openssl_csr_get_subject(mixed csr)","Returns the subject of a CERT or FALSE on error"],openssl_csr_new:["bool openssl_csr_new(array dn, resource &privkey [, array configargs [, array extraattribs]])","Generates a privkey and CSR"],openssl_csr_sign:["resource openssl_csr_sign(mixed csr, mixed x509, mixed priv_key, long days [, array config_args [, long serial]])","Signs a cert with another CERT"],openssl_decrypt:["string openssl_decrypt(string data, string method, string password [, bool raw_input=false])","Takes raw or base64 encoded string and dectupt it using given method and key"],openssl_dh_compute_key:["string openssl_dh_compute_key(string pub_key, resource dh_key)","Computes shared sicret for public value of remote DH key and local DH key"],openssl_digest:["string openssl_digest(string data, string method [, bool raw_output=false])","Computes digest hash value for given data using given method, returns raw or binhex encoded string"],openssl_encrypt:["string openssl_encrypt(string data, string method, string password [, bool raw_output=false])","Encrypts given data with given method and key, returns raw or base64 encoded string"],openssl_error_string:["mixed openssl_error_string(void)","Returns a description of the last error, and alters the index of the error messages. Returns false when the are no more messages"],openssl_get_cipher_methods:["array openssl_get_cipher_methods([bool aliases = false])","Return array of available cipher methods"],openssl_get_md_methods:["array openssl_get_md_methods([bool aliases = false])","Return array of available digest methods"],openssl_open:["bool openssl_open(string data, &string opendata, string ekey, mixed privkey)","Opens data"],openssl_pkcs12_export:["bool openssl_pkcs12_export(mixed x509, string &out, mixed priv_key, string pass[, array args])","Creates and exports a PKCS12 to a var"],openssl_pkcs12_export_to_file:["bool openssl_pkcs12_export_to_file(mixed x509, string filename, mixed priv_key, string pass[, array args])","Creates and exports a PKCS to file"],openssl_pkcs12_read:["bool openssl_pkcs12_read(string PKCS12, array &certs, string pass)","Parses a PKCS12 to an array"],openssl_pkcs7_decrypt:["bool openssl_pkcs7_decrypt(string infilename, string outfilename, mixed recipcert [, mixed recipkey])","Decrypts the S/MIME message in the file name infilename and output the results to the file name outfilename. recipcert is a CERT for one of the recipients. recipkey specifies the private key matching recipcert, if recipcert does not include the key"],openssl_pkcs7_encrypt:["bool openssl_pkcs7_encrypt(string infile, string outfile, mixed recipcerts, array headers [, long flags [, long cipher]])","Encrypts the message in the file named infile with the certificates in recipcerts and output the result to the file named outfile"],openssl_pkcs7_sign:["bool openssl_pkcs7_sign(string infile, string outfile, mixed signcert, mixed signkey, array headers [, long flags [, string extracertsfilename]])","Signs the MIME message in the file named infile with signcert/signkey and output the result to file name outfile. headers lists plain text headers to exclude from the signed portion of the message, and should include to, from and subject as a minimum"],openssl_pkcs7_verify:["bool openssl_pkcs7_verify(string filename, long flags [, string signerscerts [, array cainfo [, string extracerts [, string content]]]])","Verifys that the data block is intact, the signer is who they say they are, and returns the CERTs of the signers"],openssl_pkey_export:["bool openssl_pkey_export(mixed key, &mixed out [, string passphrase [, array config_args]])","Gets an exportable representation of a key into a string or file"],openssl_pkey_export_to_file:["bool openssl_pkey_export_to_file(mixed key, string outfilename [, string passphrase, array config_args)","Gets an exportable representation of a key into a file"],openssl_pkey_free:["void openssl_pkey_free(int key)","Frees a key"],openssl_pkey_get_details:["resource openssl_pkey_get_details(resource key)","returns an array with the key details (bits, pkey, type)"],openssl_pkey_get_private:["int openssl_pkey_get_private(string key [, string passphrase])","Gets private keys"],openssl_pkey_get_public:["int openssl_pkey_get_public(mixed cert)","Gets public key from X.509 certificate"],openssl_pkey_new:["resource openssl_pkey_new([array configargs])","Generates a new private key"],openssl_private_decrypt:["bool openssl_private_decrypt(string data, string &decrypted, mixed key [, int padding])","Decrypts data with private key"],openssl_private_encrypt:["bool openssl_private_encrypt(string data, string &crypted, mixed key [, int padding])","Encrypts data with private key"],openssl_public_decrypt:["bool openssl_public_decrypt(string data, string &crypted, resource key [, int padding])","Decrypts data with public key"],openssl_public_encrypt:["bool openssl_public_encrypt(string data, string &crypted, mixed key [, int padding])","Encrypts data with public key"],openssl_random_pseudo_bytes:["string openssl_random_pseudo_bytes(integer length [, &bool returned_strong_result])","Returns a string of the length specified filled with random pseudo bytes"],openssl_seal:["int openssl_seal(string data, &string sealdata, &array ekeys, array pubkeys)","Seals data"],openssl_sign:["bool openssl_sign(string data, &string signature, mixed key[, mixed method])","Signs data"],openssl_verify:["int openssl_verify(string data, string signature, mixed key[, mixed method])","Verifys data"],openssl_x509_check_private_key:["bool openssl_x509_check_private_key(mixed cert, mixed key)","Checks if a private key corresponds to a CERT"],openssl_x509_checkpurpose:["int openssl_x509_checkpurpose(mixed x509cert, int purpose, array cainfo [, string untrustedfile])","Checks the CERT to see if it can be used for the purpose in purpose. cainfo holds information about trusted CAs"],openssl_x509_export:["bool openssl_x509_export(mixed x509, string &out [, bool notext = true])","Exports a CERT to file or a var"],openssl_x509_export_to_file:["bool openssl_x509_export_to_file(mixed x509, string outfilename [, bool notext = true])","Exports a CERT to file or a var"],openssl_x509_free:["void openssl_x509_free(resource x509)","Frees X.509 certificates"],openssl_x509_parse:["array openssl_x509_parse(mixed x509 [, bool shortnames=true])","Returns an array of the fields/values of the CERT"],openssl_x509_read:["resource openssl_x509_read(mixed cert)","Reads X.509 certificates"],ord:["int ord(string character)","Returns ASCII value of character"],output_add_rewrite_var:["bool output_add_rewrite_var(string name, string value)","Add URL rewriter values"],output_reset_rewrite_vars:["bool output_reset_rewrite_vars(void)","Reset(clear) URL rewriter values"],pack:["string pack(string format, mixed arg1 [, mixed arg2 [, mixed ...]])","Takes one or more arguments and packs them into a binary string according to the format argument"],parse_ini_file:["array parse_ini_file(string filename [, bool process_sections [, int scanner_mode]])","Parse configuration file"],parse_ini_string:["array parse_ini_string(string ini_string [, bool process_sections [, int scanner_mode]])","Parse configuration string"],parse_locale:["static array parse_locale($locale)","* parses a locale-id into an array the different parts of it"],parse_str:["void parse_str(string encoded_string [, array result])","Parses GET/POST/COOKIE data and sets global variables"],parse_url:["mixed parse_url(string url, [int url_component])","Parse a URL and return its components"],passthru:["void passthru(string command [, int &return_value])","Execute an external program and display raw output"],pathinfo:["array pathinfo(string path[, int options])","Returns information about a certain string"],pclose:["int pclose(resource fp)","Close a file pointer opened by popen()"],pcnlt_sigwaitinfo:["int pcnlt_sigwaitinfo(array set[, array &siginfo])","Synchronously wait for queued signals"],pcntl_alarm:["int pcntl_alarm(int seconds)","Set an alarm clock for delivery of a signal"],pcntl_exec:["bool pcntl_exec(string path [, array args [, array envs]])","Executes specified program in current process space as defined by exec(2)"],pcntl_fork:["int pcntl_fork(void)","Forks the currently running process following the same behavior as the UNIX fork() system call"],pcntl_getpriority:["int pcntl_getpriority([int pid [, int process_identifier]])","Get the priority of any process"],pcntl_setpriority:["bool pcntl_setpriority(int priority [, int pid [, int process_identifier]])","Change the priority of any process"],pcntl_signal:["bool pcntl_signal(int signo, callback handle [, bool restart_syscalls])","Assigns a system signal handler to a PHP function"],pcntl_signal_dispatch:["bool pcntl_signal_dispatch()","Dispatch signals to signal handlers"],pcntl_sigprocmask:["bool pcntl_sigprocmask(int how, array set[, array &oldset])","Examine and change blocked signals"],pcntl_sigtimedwait:["int pcntl_sigtimedwait(array set[, array &siginfo[, int seconds[, int nanoseconds]]])","Wait for queued signals"],pcntl_wait:["int pcntl_wait(int &status)","Waits on or returns the status of a forked child as defined by the waitpid() system call"],pcntl_waitpid:["int pcntl_waitpid(int pid, int &status, int options)","Waits on or returns the status of a forked child as defined by the waitpid() system call"],pcntl_wexitstatus:["int pcntl_wexitstatus(int status)","Returns the status code of a child's exit"],pcntl_wifexited:["bool pcntl_wifexited(int status)","Returns true if the child status code represents a successful exit"],pcntl_wifsignaled:["bool pcntl_wifsignaled(int status)","Returns true if the child status code represents a process that was terminated due to a signal"],pcntl_wifstopped:["bool pcntl_wifstopped(int status)","Returns true if the child status code represents a stopped process (WUNTRACED must have been used with waitpid)"],pcntl_wstopsig:["int pcntl_wstopsig(int status)","Returns the number of the signal that caused the process to stop who's status code is passed"],pcntl_wtermsig:["int pcntl_wtermsig(int status)","Returns the number of the signal that terminated the process who's status code is passed"],pdo_drivers:["array pdo_drivers()","Return array of available PDO drivers"],pfsockopen:["resource pfsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])","Open persistent Internet or Unix domain socket connection"],pg_affected_rows:["int pg_affected_rows(resource result)","Returns the number of affected tuples"],pg_cancel_query:["bool pg_cancel_query(resource connection)","Cancel request"],pg_client_encoding:["string pg_client_encoding([resource connection])","Get the current client encoding"],pg_close:["bool pg_close([resource connection])","Close a PostgreSQL connection"],pg_connect:["resource pg_connect(string connection_string[, int connect_type] | [string host, string port [, string options [, string tty,]]] string database)","Open a PostgreSQL connection"],pg_connection_busy:["bool pg_connection_busy(resource connection)","Get connection is busy or not"],pg_connection_reset:["bool pg_connection_reset(resource connection)","Reset connection (reconnect)"],pg_connection_status:["int pg_connection_status(resource connnection)","Get connection status"],pg_convert:["array pg_convert(resource db, string table, array values[, int options])","Check and convert values for PostgreSQL SQL statement"],pg_copy_from:["bool pg_copy_from(resource connection, string table_name , array rows [, string delimiter [, string null_as]])","Copy table from array"],pg_copy_to:["array pg_copy_to(resource connection, string table_name [, string delimiter [, string null_as]])","Copy table to array"],pg_dbname:["string pg_dbname([resource connection])","Get the database name"],pg_delete:["mixed pg_delete(resource db, string table, array ids[, int options])","Delete records has ids (id=>value)"],pg_end_copy:["bool pg_end_copy([resource connection])","Sync with backend. Completes the Copy command"],pg_escape_bytea:["string pg_escape_bytea([resource connection,] string data)","Escape binary for bytea type"],pg_escape_string:["string pg_escape_string([resource connection,] string data)","Escape string for text/char type"],pg_execute:["resource pg_execute([resource connection,] string stmtname, array params)","Execute a prepared query"],pg_fetch_all:["array pg_fetch_all(resource result)","Fetch all rows into array"],pg_fetch_all_columns:["array pg_fetch_all_columns(resource result [, int column_number])","Fetch all rows into array"],pg_fetch_array:["array pg_fetch_array(resource result [, int row [, int result_type]])","Fetch a row as an array"],pg_fetch_assoc:["array pg_fetch_assoc(resource result [, int row])","Fetch a row as an assoc array"],pg_fetch_object:["object pg_fetch_object(resource result [, int row [, string class_name [, NULL|array ctor_params]]])","Fetch a row as an object"],pg_fetch_result:["mixed pg_fetch_result(resource result, [int row_number,] mixed field_name)","Returns values from a result identifier"],pg_fetch_row:["array pg_fetch_row(resource result [, int row [, int result_type]])","Get a row as an enumerated array"],pg_field_is_null:["int pg_field_is_null(resource result, [int row,] mixed field_name_or_number)","Test if a field is NULL"],pg_field_name:["string pg_field_name(resource result, int field_number)","Returns the name of the field"],pg_field_num:["int pg_field_num(resource result, string field_name)","Returns the field number of the named field"],pg_field_prtlen:["int pg_field_prtlen(resource result, [int row,] mixed field_name_or_number)","Returns the printed length"],pg_field_size:["int pg_field_size(resource result, int field_number)","Returns the internal size of the field"],pg_field_table:["mixed pg_field_table(resource result, int field_number[, bool oid_only])","Returns the name of the table field belongs to, or table's oid if oid_only is true"],pg_field_type:["string pg_field_type(resource result, int field_number)","Returns the type name for the given field"],pg_field_type_oid:["string pg_field_type_oid(resource result, int field_number)","Returns the type oid for the given field"],pg_free_result:["bool pg_free_result(resource result)","Free result memory"],pg_get_notify:["array pg_get_notify([resource connection[, result_type]])","Get asynchronous notification"],pg_get_pid:["int pg_get_pid([resource connection)","Get backend(server) pid"],pg_get_result:["resource pg_get_result(resource connection)","Get asynchronous query result"],pg_host:["string pg_host([resource connection])","Returns the host name associated with the connection"],pg_insert:["mixed pg_insert(resource db, string table, array values[, int options])","Insert values (filed=>value) to table"],pg_last_error:["string pg_last_error([resource connection])","Get the error message string"],pg_last_notice:["string pg_last_notice(resource connection)","Returns the last notice set by the backend"],pg_last_oid:["string pg_last_oid(resource result)","Returns the last object identifier"],pg_lo_close:["bool pg_lo_close(resource large_object)","Close a large object"],pg_lo_create:["mixed pg_lo_create([resource connection],[mixed large_object_oid])","Create a large object"],pg_lo_export:["bool pg_lo_export([resource connection, ] int objoid, string filename)","Export large object direct to filesystem"],pg_lo_import:["int pg_lo_import([resource connection, ] string filename [, mixed oid])","Import large object direct from filesystem"],pg_lo_open:["resource pg_lo_open([resource connection,] int large_object_oid, string mode)","Open a large object and return fd"],pg_lo_read:["string pg_lo_read(resource large_object [, int len])","Read a large object"],pg_lo_read_all:["int pg_lo_read_all(resource large_object)","Read a large object and send straight to browser"],pg_lo_seek:["bool pg_lo_seek(resource large_object, int offset [, int whence])","Seeks position of large object"],pg_lo_tell:["int pg_lo_tell(resource large_object)","Returns current position of large object"],pg_lo_unlink:["bool pg_lo_unlink([resource connection,] string large_object_oid)","Delete a large object"],pg_lo_write:["int pg_lo_write(resource large_object, string buf [, int len])","Write a large object"],pg_meta_data:["array pg_meta_data(resource db, string table)","Get meta_data"],pg_num_fields:["int pg_num_fields(resource result)","Return the number of fields in the result"],pg_num_rows:["int pg_num_rows(resource result)","Return the number of rows in the result"],pg_options:["string pg_options([resource connection])","Get the options associated with the connection"],pg_parameter_status:["string|false pg_parameter_status([resource connection,] string param_name)","Returns the value of a server parameter"],pg_pconnect:["resource pg_pconnect(string connection_string | [string host, string port [, string options [, string tty,]]] string database)","Open a persistent PostgreSQL connection"],pg_ping:["bool pg_ping([resource connection])","Ping database. If connection is bad, try to reconnect."],pg_port:["int pg_port([resource connection])","Return the port number associated with the connection"],pg_prepare:["resource pg_prepare([resource connection,] string stmtname, string query)","Prepare a query for future execution"],pg_put_line:["bool pg_put_line([resource connection,] string query)","Send null-terminated string to backend server"],pg_query:["resource pg_query([resource connection,] string query)","Execute a query"],pg_query_params:["resource pg_query_params([resource connection,] string query, array params)","Execute a query"],pg_result_error:["string pg_result_error(resource result)","Get error message associated with result"],pg_result_error_field:["string pg_result_error_field(resource result, int fieldcode)","Get error message field associated with result"],pg_result_seek:["bool pg_result_seek(resource result, int offset)","Set internal row offset"],pg_result_status:["mixed pg_result_status(resource result[, long result_type])","Get status of query result"],pg_select:["mixed pg_select(resource db, string table, array ids[, int options])","Select records that has ids (id=>value)"],pg_send_execute:["bool pg_send_execute(resource connection, string stmtname, array params)","Executes prevriously prepared stmtname asynchronously"],pg_send_prepare:["bool pg_send_prepare(resource connection, string stmtname, string query)","Asynchronously prepare a query for future execution"],pg_send_query:["bool pg_send_query(resource connection, string query)","Send asynchronous query"],pg_send_query_params:["bool pg_send_query_params(resource connection, string query, array params)","Send asynchronous parameterized query"],pg_set_client_encoding:["int pg_set_client_encoding([resource connection,] string encoding)","Set client encoding"],pg_set_error_verbosity:["int pg_set_error_verbosity([resource connection,] int verbosity)","Set error verbosity"],pg_trace:["bool pg_trace(string filename [, string mode [, resource connection]])","Enable tracing a PostgreSQL connection"],pg_transaction_status:["int pg_transaction_status(resource connnection)","Get transaction status"],pg_tty:["string pg_tty([resource connection])","Return the tty name associated with the connection"],pg_unescape_bytea:["string pg_unescape_bytea(string data)","Unescape binary for bytea type"],pg_untrace:["bool pg_untrace([resource connection])","Disable tracing of a PostgreSQL connection"],pg_update:["mixed pg_update(resource db, string table, array fields, array ids[, int options])","Update table using values (field=>value) and ids (id=>value)"],pg_version:["array pg_version([resource connection])","Returns an array with client, protocol and server version (when available)"],php_egg_logo_guid:["string php_egg_logo_guid(void)","Return the special ID used to request the PHP logo in phpinfo screens"],php_ini_loaded_file:["string php_ini_loaded_file(void)","Return the actual loaded ini filename"],php_ini_scanned_files:["string php_ini_scanned_files(void)","Return comma-separated string of .ini files parsed from the additional ini dir"],php_logo_guid:["string php_logo_guid(void)","Return the special ID used to request the PHP logo in phpinfo screens"],php_real_logo_guid:["string php_real_logo_guid(void)","Return the special ID used to request the PHP logo in phpinfo screens"],php_sapi_name:["string php_sapi_name(void)","Return the current SAPI module name"],php_snmpv3:["void php_snmpv3(INTERNAL_FUNCTION_PARAMETERS, int st)","* * Generic SNMPv3 object fetcher * From here is passed on the the common internal object fetcher. * * st=SNMP_CMD_GET snmp3_get() - query an agent and return a single value. * st=SNMP_CMD_GETNEXT snmp3_getnext() - query an agent and return the next single value. * st=SNMP_CMD_WALK snmp3_walk() - walk the mib and return a single dimensional array * containing the values. * st=SNMP_CMD_REALWALK snmp3_real_walk() - walk the mib and return an * array of oid,value pairs. * st=SNMP_CMD_SET snmp3_set() - query an agent and set a single value *"],php_strip_whitespace:["string php_strip_whitespace(string file_name)","Return source with stripped comments and whitespace"],php_uname:["string php_uname(void)","Return information about the system PHP was built on"],phpcredits:["void phpcredits([int flag])","Prints the list of people who've contributed to the PHP project"],phpinfo:["void phpinfo([int what])","Output a page of useful information about PHP and the current request"],phpversion:["string phpversion([string extension])","Return the current PHP version"],pi:["float pi(void)","Returns an approximation of pi"],png2wbmp:["bool png2wbmp (string f_org, string f_dest, int d_height, int d_width, int threshold)","Convert PNG image to WBMP image"],popen:["resource popen(string command, string mode)","Execute a command and open either a read or a write pipe to it"],posix_access:["bool posix_access(string file [, int mode])","Determine accessibility of a file (POSIX.1 5.6.3)"],posix_ctermid:["string posix_ctermid(void)","Generate terminal path name (POSIX.1, 4.7.1)"],posix_get_last_error:["int posix_get_last_error(void)","Retrieve the error number set by the last posix function which failed."],posix_getcwd:["string posix_getcwd(void)","Get working directory pathname (POSIX.1, 5.2.2)"],posix_getegid:["int posix_getegid(void)","Get the current effective group id (POSIX.1, 4.2.1)"],posix_geteuid:["int posix_geteuid(void)","Get the current effective user id (POSIX.1, 4.2.1)"],posix_getgid:["int posix_getgid(void)","Get the current group id (POSIX.1, 4.2.1)"],posix_getgrgid:["array posix_getgrgid(long gid)","Group database access (POSIX.1, 9.2.1)"],posix_getgrnam:["array posix_getgrnam(string groupname)","Group database access (POSIX.1, 9.2.1)"],posix_getgroups:["array posix_getgroups(void)","Get supplementary group id's (POSIX.1, 4.2.3)"],posix_getlogin:["string posix_getlogin(void)","Get user name (POSIX.1, 4.2.4)"],posix_getpgid:["int posix_getpgid(void)","Get the process group id of the specified process (This is not a POSIX function, but a SVR4ism, so we compile conditionally)"],posix_getpgrp:["int posix_getpgrp(void)","Get current process group id (POSIX.1, 4.3.1)"],posix_getpid:["int posix_getpid(void)","Get the current process id (POSIX.1, 4.1.1)"],posix_getppid:["int posix_getppid(void)","Get the parent process id (POSIX.1, 4.1.1)"],posix_getpwnam:["array posix_getpwnam(string groupname)","User database access (POSIX.1, 9.2.2)"],posix_getpwuid:["array posix_getpwuid(long uid)","User database access (POSIX.1, 9.2.2)"],posix_getrlimit:["array posix_getrlimit(void)","Get system resource consumption limits (This is not a POSIX function, but a BSDism and a SVR4ism. We compile conditionally)"],posix_getsid:["int posix_getsid(void)","Get process group id of session leader (This is not a POSIX function, but a SVR4ism, so be compile conditionally)"],posix_getuid:["int posix_getuid(void)","Get the current user id (POSIX.1, 4.2.1)"],posix_initgroups:["bool posix_initgroups(string name, int base_group_id)","Calculate the group access list for the user specified in name."],posix_isatty:["bool posix_isatty(int fd)","Determine if filedesc is a tty (POSIX.1, 4.7.1)"],posix_kill:["bool posix_kill(int pid, int sig)","Send a signal to a process (POSIX.1, 3.3.2)"],posix_mkfifo:["bool posix_mkfifo(string pathname, int mode)","Make a FIFO special file (POSIX.1, 5.4.2)"],posix_mknod:["bool posix_mknod(string pathname, int mode [, int major [, int minor]])","Make a special or ordinary file (POSIX.1)"],posix_setegid:["bool posix_setegid(long uid)","Set effective group id"],posix_seteuid:["bool posix_seteuid(long uid)","Set effective user id"],posix_setgid:["bool posix_setgid(int uid)","Set group id (POSIX.1, 4.2.2)"],posix_setpgid:["bool posix_setpgid(int pid, int pgid)","Set process group id for job control (POSIX.1, 4.3.3)"],posix_setsid:["int posix_setsid(void)","Create session and set process group id (POSIX.1, 4.3.2)"],posix_setuid:["bool posix_setuid(long uid)","Set user id (POSIX.1, 4.2.2)"],posix_strerror:["string posix_strerror(int errno)","Retrieve the system error message associated with the given errno."],posix_times:["array posix_times(void)","Get process times (POSIX.1, 4.5.2)"],posix_ttyname:["string posix_ttyname(int fd)","Determine terminal device name (POSIX.1, 4.7.2)"],posix_uname:["array posix_uname(void)","Get system name (POSIX.1, 4.4.1)"],pow:["number pow(number base, number exponent)","Returns base raised to the power of exponent. Returns integer result when possible"],preg_filter:["mixed preg_filter(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])","Perform Perl-style regular expression replacement and only return matches."],preg_grep:["array preg_grep(string regex, array input [, int flags])","Searches array and returns entries which match regex"],preg_last_error:["int preg_last_error()","Returns the error code of the last regexp execution."],preg_match:["int preg_match(string pattern, string subject [, array &subpatterns [, int flags [, int offset]]])","Perform a Perl-style regular expression match"],preg_match_all:["int preg_match_all(string pattern, string subject, array &subpatterns [, int flags [, int offset]])","Perform a Perl-style global regular expression match"],preg_quote:["string preg_quote(string str [, string delim_char])","Quote regular expression characters plus an optional character"],preg_replace:["mixed preg_replace(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])","Perform Perl-style regular expression replacement."],preg_replace_callback:["mixed preg_replace_callback(mixed regex, mixed callback, mixed subject [, int limit [, int &count]])","Perform Perl-style regular expression replacement using replacement callback."],preg_split:["array preg_split(string pattern, string subject [, int limit [, int flags]])","Split string into an array using a perl-style regular expression as a delimiter"],prev:["mixed prev(array array_arg)","Move array argument's internal pointer to the previous element and return it"],print:["int print(string arg)","Output a string"],print_r:["mixed print_r(mixed var [, bool return])","Prints out or returns information about the specified variable"],printf:["int printf(string format [, mixed arg1 [, mixed ...]])","Output a formatted string"],proc_close:["int proc_close(resource process)","close a process opened by proc_open"],proc_get_status:["array proc_get_status(resource process)","get information about a process opened by proc_open"],proc_nice:["bool proc_nice(int priority)","Change the priority of the current process"],proc_open:["resource proc_open(string command, array descriptorspec, array &pipes [, string cwd [, array env [, array other_options]]])","Run a process with more control over it's file descriptors"],proc_terminate:["bool proc_terminate(resource process [, long signal])","kill a process opened by proc_open"],property_exists:["bool property_exists(mixed object_or_class, string property_name)","Checks if the object or class has a property"],pspell_add_to_personal:["bool pspell_add_to_personal(int pspell, string word)","Adds a word to a personal list"],pspell_add_to_session:["bool pspell_add_to_session(int pspell, string word)","Adds a word to the current session"],pspell_check:["bool pspell_check(int pspell, string word)","Returns true if word is valid"],pspell_clear_session:["bool pspell_clear_session(int pspell)","Clears the current session"],pspell_config_create:["int pspell_config_create(string language [, string spelling [, string jargon [, string encoding]]])","Create a new config to be used later to create a manager"],pspell_config_data_dir:["bool pspell_config_data_dir(int conf, string directory)","location of language data files"],pspell_config_dict_dir:["bool pspell_config_dict_dir(int conf, string directory)","location of the main word list"],pspell_config_ignore:["bool pspell_config_ignore(int conf, int ignore)","Ignore words <= n chars"],pspell_config_mode:["bool pspell_config_mode(int conf, long mode)","Select mode for config (PSPELL_FAST, PSPELL_NORMAL or PSPELL_BAD_SPELLERS)"],pspell_config_personal:["bool pspell_config_personal(int conf, string personal)","Use a personal dictionary for this config"],pspell_config_repl:["bool pspell_config_repl(int conf, string repl)","Use a personal dictionary with replacement pairs for this config"],pspell_config_runtogether:["bool pspell_config_runtogether(int conf, bool runtogether)","Consider run-together words as valid components"],pspell_config_save_repl:["bool pspell_config_save_repl(int conf, bool save)","Save replacement pairs when personal list is saved for this config"],pspell_new:["int pspell_new(string language [, string spelling [, string jargon [, string encoding [, int mode]]]])","Load a dictionary"],pspell_new_config:["int pspell_new_config(int config)","Load a dictionary based on the given config"],pspell_new_personal:["int pspell_new_personal(string personal, string language [, string spelling [, string jargon [, string encoding [, int mode]]]])","Load a dictionary with a personal wordlist"],pspell_save_wordlist:["bool pspell_save_wordlist(int pspell)","Saves the current (personal) wordlist"],pspell_store_replacement:["bool pspell_store_replacement(int pspell, string misspell, string correct)","Notify the dictionary of a user-selected replacement"],pspell_suggest:["array pspell_suggest(int pspell, string word)","Returns array of suggestions"],putenv:["bool putenv(string setting)","Set the value of an environment variable"],quoted_printable_decode:["string quoted_printable_decode(string str)","Convert a quoted-printable string to an 8 bit string"],quoted_printable_encode:["string quoted_printable_encode(string str) */",'PHP_FUNCTION(quoted_printable_encode) { char *str, *new_str; int str_len; size_t new_str_len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) != SUCCESS) { return; } if (!str_len) { RETURN_EMPTY_STRING(); } new_str = (char *)php_quot_print_encode((unsigned char *)str, (size_t)str_len, &new_str_len); RETURN_STRINGL(new_str, new_str_len, 0); } /* }}}'],quotemeta:["string quotemeta(string str)","Quotes meta characters"],rad2deg:["float rad2deg(float number)","Converts the radian number to the equivalent number in degrees"],rand:["int rand([int min, int max])","Returns a random number"],range:["array range(mixed low, mixed high[, int step])","Create an array containing the range of integers or characters from low to high (inclusive)"],rawurldecode:["string rawurldecode(string str)","Decodes URL-encodes string"],rawurlencode:["string rawurlencode(string str)","URL-encodes string"],readdir:["string readdir([resource dir_handle])","Read directory entry from dir_handle"],readfile:["int readfile(string filename [, bool use_include_path[, resource context]])","Output a file or a URL"],readgzfile:["int readgzfile(string filename [, int use_include_path])","Output a .gz-file"],readline:["string readline([string prompt])","Reads a line"],readline_add_history:["bool readline_add_history(string prompt)","Adds a line to the history"],readline_callback_handler_install:["void readline_callback_handler_install(string prompt, mixed callback)","Initializes the readline callback interface and terminal, prints the prompt and returns immediately"],readline_callback_handler_remove:["bool readline_callback_handler_remove()","Removes a previously installed callback handler and restores terminal settings"],readline_callback_read_char:["void readline_callback_read_char()","Informs the readline callback interface that a character is ready for input"],readline_clear_history:["bool readline_clear_history(void)","Clears the history"],readline_completion_function:["bool readline_completion_function(string funcname)","Readline completion function?"],readline_info:["mixed readline_info([string varname [, string newvalue]])","Gets/sets various internal readline variables."],readline_list_history:["array readline_list_history(void)","Lists the history"],readline_on_new_line:["void readline_on_new_line(void)","Inform readline that the cursor has moved to a new line"],readline_read_history:["bool readline_read_history([string filename])","Reads the history"],readline_redisplay:["void readline_redisplay(void)","Ask readline to redraw the display"],readline_write_history:["bool readline_write_history([string filename])","Writes the history"],readlink:["string readlink(string filename)","Return the target of a symbolic link"],realpath:["string realpath(string path)","Return the resolved path"],realpath_cache_get:["bool realpath_cache_get()","Get current size of realpath cache"],realpath_cache_size:["bool realpath_cache_size()","Get current size of realpath cache"],recode_file:["bool recode_file(string request, resource input, resource output)","Recode file input into file output according to request"],recode_string:["string recode_string(string request, string str)","Recode string str according to request string"],register_shutdown_function:["void register_shutdown_function(string function_name)","Register a user-level function to be called on request termination"],register_tick_function:["bool register_tick_function(string function_name [, mixed arg [, mixed ... ]])","Registers a tick callback function"],rename:["bool rename(string old_name, string new_name[, resource context])","Rename a file"],require:["bool require(string path)","Includes and evaluates the specified file, erroring if the file cannot be included"],require_once:["bool require_once(string path)","Includes and evaluates the specified file, erroring if the file cannot be included"],reset:["mixed reset(array array_arg)","Set array argument's internal pointer to the first element and return it"],restore_error_handler:["void restore_error_handler(void)","Restores the previously defined error handler function"],restore_exception_handler:["void restore_exception_handler(void)","Restores the previously defined exception handler function"],restore_include_path:["void restore_include_path()","Restore the value of the include_path configuration option"],rewind:["bool rewind(resource fp)","Rewind the position of a file pointer"],rewinddir:["void rewinddir([resource dir_handle])","Rewind dir_handle back to the start"],rmdir:["bool rmdir(string dirname[, resource context])","Remove a directory"],round:["float round(float number [, int precision [, int mode]])","Returns the number rounded to specified precision"],rsort:["bool rsort(array &array_arg [, int sort_flags])","Sort an array in reverse order"],rtrim:["string rtrim(string str [, string character_mask])","Removes trailing whitespace"],scandir:["array scandir(string dir [, int sorting_order [, resource context]])","List files & directories inside the specified path"],sem_acquire:["bool sem_acquire(resource id)","Acquires the semaphore with the given id, blocking if necessary"],sem_get:["resource sem_get(int key [, int max_acquire [, int perm [, int auto_release]])","Return an id for the semaphore with the given key, and allow max_acquire (default 1) processes to acquire it simultaneously"],sem_release:["bool sem_release(resource id)","Releases the semaphore with the given id"],sem_remove:["bool sem_remove(resource id)","Removes semaphore from Unix systems"],serialize:["string serialize(mixed variable)","Returns a string representation of variable (which can later be unserialized)"],session_cache_expire:["int session_cache_expire([int new_cache_expire])","Return the current cache expire. If new_cache_expire is given, the current cache_expire is replaced with new_cache_expire"],session_cache_limiter:["string session_cache_limiter([string new_cache_limiter])","Return the current cache limiter. If new_cache_limited is given, the current cache_limiter is replaced with new_cache_limiter"],session_decode:["bool session_decode(string data)","Deserializes data and reinitializes the variables"],session_destroy:["bool session_destroy(void)","Destroy the current session and all data associated with it"],session_encode:["string session_encode(void)","Serializes the current setup and returns the serialized representation"],session_get_cookie_params:["array session_get_cookie_params(void)","Return the session cookie parameters"],session_id:["string session_id([string newid])","Return the current session id. If newid is given, the session id is replaced with newid"],session_is_registered:["bool session_is_registered(string varname)","Checks if a variable is registered in session"],session_module_name:["string session_module_name([string newname])","Return the current module name used for accessing session data. If newname is given, the module name is replaced with newname"],session_name:["string session_name([string newname])","Return the current session name. If newname is given, the session name is replaced with newname"],session_regenerate_id:["bool session_regenerate_id([bool delete_old_session])","Update the current session id with a newly generated one. If delete_old_session is set to true, remove the old session."],session_register:["bool session_register(mixed var_names [, mixed ...])","Adds varname(s) to the list of variables which are freezed at the session end"],session_save_path:["string session_save_path([string newname])","Return the current save path passed to module_name. If newname is given, the save path is replaced with newname"],session_set_cookie_params:["void session_set_cookie_params(int lifetime [, string path [, string domain [, bool secure[, bool httponly]]]])","Set session cookie parameters"],session_set_save_handler:["void session_set_save_handler(string open, string close, string read, string write, string destroy, string gc)","Sets user-level functions"],session_start:["bool session_start(void)","Begin session - reinitializes freezed variables, registers browsers etc"],session_unregister:["bool session_unregister(string varname)","Removes varname from the list of variables which are freezed at the session end"],session_unset:["void session_unset(void)","Unset all registered variables"],session_write_close:["void session_write_close(void)","Write session data and end session"],set_error_handler:["string set_error_handler(string error_handler [, int error_types])","Sets a user-defined error handler function. Returns the previously defined error handler, or false on error"],set_exception_handler:["string set_exception_handler(callable exception_handler)","Sets a user-defined exception handler function. Returns the previously defined exception handler, or false on error"],set_include_path:["string set_include_path(string new_include_path)","Sets the include_path configuration option"],set_magic_quotes_runtime:["bool set_magic_quotes_runtime(int new_setting)","Set the current active configuration setting of magic_quotes_runtime and return previous"],set_time_limit:["bool set_time_limit(int seconds)","Sets the maximum time a script can run"],setcookie:["bool setcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])","Send a cookie"],setlocale:["string setlocale(mixed category, string locale [, string ...])","Set locale information"],setrawcookie:["bool setrawcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])","Send a cookie with no url encoding of the value"],settype:["bool settype(mixed var, string type)","Set the type of the variable"],sha1:["string sha1(string str [, bool raw_output])","Calculate the sha1 hash of a string"],sha1_file:["string sha1_file(string filename [, bool raw_output])","Calculate the sha1 hash of given filename"],shell_exec:["string shell_exec(string cmd)","Execute command via shell and return complete output as string"],shm_attach:["int shm_attach(int key [, int memsize [, int perm]])","Creates or open a shared memory segment"],shm_detach:["bool shm_detach(resource shm_identifier)","Disconnects from shared memory segment"],shm_get_var:["mixed shm_get_var(resource id, int variable_key)","Returns a variable from shared memory"],shm_has_var:["bool shm_has_var(resource id, int variable_key)","Checks whether a specific entry exists"],shm_put_var:["bool shm_put_var(resource shm_identifier, int variable_key, mixed variable)","Inserts or updates a variable in shared memory"],shm_remove:["bool shm_remove(resource shm_identifier)","Removes shared memory from Unix systems"],shm_remove_var:["bool shm_remove_var(resource id, int variable_key)","Removes variable from shared memory"],shmop_close:["void shmop_close (int shmid)","closes a shared memory segment"],shmop_delete:["bool shmop_delete (int shmid)","mark segment for deletion"],shmop_open:["int shmop_open (int key, string flags, int mode, int size)","gets and attaches a shared memory segment"],shmop_read:["string shmop_read (int shmid, int start, int count)","reads from a shm segment"],shmop_size:["int shmop_size (int shmid)","returns the shm size"],shmop_write:["int shmop_write (int shmid, string data, int offset)","writes to a shared memory segment"],shuffle:["bool shuffle(array array_arg)","Randomly shuffle the contents of an array"],similar_text:["int similar_text(string str1, string str2 [, float percent])","Calculates the similarity between two strings"],simplexml_import_dom:["simplemxml_element simplexml_import_dom(domNode node [, string class_name])","Get a simplexml_element object from dom to allow for processing"],simplexml_load_file:["simplemxml_element simplexml_load_file(string filename [, string class_name [, int options [, string ns [, bool is_prefix]]]])","Load a filename and return a simplexml_element object to allow for processing"],simplexml_load_string:["simplemxml_element simplexml_load_string(string data [, string class_name [, int options [, string ns [, bool is_prefix]]]])","Load a string and return a simplexml_element object to allow for processing"],sin:["float sin(float number)","Returns the sine of the number in radians"],sinh:["float sinh(float number)","Returns the hyperbolic sine of the number, defined as (exp(number) - exp(-number))/2"],sleep:["void sleep(int seconds)","Delay for a given number of seconds"],smfi_addheader:["bool smfi_addheader(string headerf, string headerv)","Adds a header to the current message."],smfi_addrcpt:["bool smfi_addrcpt(string rcpt)","Add a recipient to the message envelope."],smfi_chgheader:["bool smfi_chgheader(string headerf, string headerv)","Changes a header's value for the current message."],smfi_delrcpt:["bool smfi_delrcpt(string rcpt)","Removes the named recipient from the current message's envelope."],smfi_getsymval:["string smfi_getsymval(string macro)","Returns the value of the given macro or NULL if the macro is not defined."],smfi_replacebody:["bool smfi_replacebody(string body)","Replaces the body of the current message. If called more than once, subsequent calls result in data being appended to the new body."],smfi_setflags:["void smfi_setflags(long flags)","Sets the flags describing the actions the filter may take."],smfi_setreply:["bool smfi_setreply(string rcode, string xcode, string message)","Directly set the SMTP error reply code for this connection. This code will be used on subsequent error replies resulting from actions taken by this filter."],smfi_settimeout:["void smfi_settimeout(long timeout)","Sets the number of seconds libmilter will wait for an MTA connection before timing out a socket."],snmp2_get:["string snmp2_get(string host, string community, string object_id [, int timeout [, int retries]])","Fetch a SNMP object"],snmp2_getnext:["string snmp2_getnext(string host, string community, string object_id [, int timeout [, int retries]])","Fetch a SNMP object"],snmp2_real_walk:["array snmp2_real_walk(string host, string community, string object_id [, int timeout [, int retries]])","Return all objects including their respective object id withing the specified one"],snmp2_set:["int snmp2_set(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])","Set the value of a SNMP object"],snmp2_walk:["array snmp2_walk(string host, string community, string object_id [, int timeout [, int retries]])","Return all objects under the specified object id"],snmp3_get:["int snmp3_get(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])","Fetch the value of a SNMP object"],snmp3_getnext:["int snmp3_getnext(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])","Fetch the value of a SNMP object"],snmp3_real_walk:["int snmp3_real_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])","Fetch the value of a SNMP object"],snmp3_set:["int snmp3_set(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id, string type, mixed value [, int timeout [, int retries]])","Fetch the value of a SNMP object"],snmp3_walk:["int snmp3_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])","Fetch the value of a SNMP object"],snmp_get_quick_print:["bool snmp_get_quick_print(void)","Return the current status of quick_print"],snmp_get_valueretrieval:["int snmp_get_valueretrieval()","Return the method how the SNMP values will be returned"],snmp_read_mib:["int snmp_read_mib(string filename)","Reads and parses a MIB file into the active MIB tree."],snmp_set_enum_print:["void snmp_set_enum_print(int enum_print)","Return all values that are enums with their enum value instead of the raw integer"],snmp_set_oid_output_format:["void snmp_set_oid_output_format(int oid_format)","Set the OID output format."],snmp_set_quick_print:["void snmp_set_quick_print(int quick_print)","Return all objects including their respective object id withing the specified one"],snmp_set_valueretrieval:["void snmp_set_valueretrieval(int method)","Specify the method how the SNMP values will be returned"],snmpget:["string snmpget(string host, string community, string object_id [, int timeout [, int retries]])","Fetch a SNMP object"],snmpgetnext:["string snmpgetnext(string host, string community, string object_id [, int timeout [, int retries]])","Fetch a SNMP object"],snmprealwalk:["array snmprealwalk(string host, string community, string object_id [, int timeout [, int retries]])","Return all objects including their respective object id withing the specified one"],snmpset:["int snmpset(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])","Set the value of a SNMP object"],snmpwalk:["array snmpwalk(string host, string community, string object_id [, int timeout [, int retries]])","Return all objects under the specified object id"],socket_accept:["resource socket_accept(resource socket)","Accepts a connection on the listening socket fd"],socket_bind:["bool socket_bind(resource socket, string addr [, int port])","Binds an open socket to a listening port, port is only specified in AF_INET family."],socket_clear_error:["void socket_clear_error([resource socket])","Clears the error on the socket or the last error code."],socket_close:["void socket_close(resource socket)","Closes a file descriptor"],socket_connect:["bool socket_connect(resource socket, string addr [, int port])","Opens a connection to addr:port on the socket specified by socket"],socket_create:["resource socket_create(int domain, int type, int protocol)","Creates an endpoint for communication in the domain specified by domain, of type specified by type"],socket_create_listen:["resource socket_create_listen(int port[, int backlog])","Opens a socket on port to accept connections"],socket_create_pair:["bool socket_create_pair(int domain, int type, int protocol, array &fd)","Creates a pair of indistinguishable sockets and stores them in fds."],socket_get_option:["mixed socket_get_option(resource socket, int level, int optname)","Gets socket options for the socket"],socket_getpeername:["bool socket_getpeername(resource socket, string &addr[, int &port])","Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type."],socket_getsockname:["bool socket_getsockname(resource socket, string &addr[, int &port])","Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type."],socket_last_error:["int socket_last_error([resource socket])","Returns the last socket error (either the last used or the provided socket resource)"],socket_listen:["bool socket_listen(resource socket[, int backlog])","Sets the maximum number of connections allowed to be waited for on the socket specified by fd"],socket_read:["string socket_read(resource socket, int length [, int type])","Reads a maximum of length bytes from socket"],socket_recv:["int socket_recv(resource socket, string &buf, int len, int flags)","Receives data from a connected socket"],socket_recvfrom:["int socket_recvfrom(resource socket, string &buf, int len, int flags, string &name [, int &port])","Receives data from a socket, connected or not"],socket_select:["int socket_select(array &read_fds, array &write_fds, array &except_fds, int tv_sec[, int tv_usec])","Runs the select() system call on the sets mentioned with a timeout specified by tv_sec and tv_usec"],socket_send:["int socket_send(resource socket, string buf, int len, int flags)","Sends data to a connected socket"],socket_sendto:["int socket_sendto(resource socket, string buf, int len, int flags, string addr [, int port])","Sends a message to a socket, whether it is connected or not"],socket_set_block:["bool socket_set_block(resource socket)","Sets blocking mode on a socket resource"],socket_set_nonblock:["bool socket_set_nonblock(resource socket)","Sets nonblocking mode on a socket resource"],socket_set_option:["bool socket_set_option(resource socket, int level, int optname, int|array optval)","Sets socket options for the socket"],socket_shutdown:["bool socket_shutdown(resource socket[, int how])","Shuts down a socket for receiving, sending, or both."],socket_strerror:["string socket_strerror(int errno)","Returns a string describing an error"],socket_write:["int socket_write(resource socket, string buf[, int length])","Writes the buffer to the socket resource, length is optional"],solid_fetch_prev:["bool solid_fetch_prev(resource result_id)",""],sort:["bool sort(array &array_arg [, int sort_flags])","Sort an array"],soundex:["string soundex(string str)","Calculate the soundex key of a string"],spl_autoload:["void spl_autoload(string class_name [, string file_extensions])","Default implementation for __autoload()"],spl_autoload_call:["void spl_autoload_call(string class_name)","Try all registerd autoload function to load the requested class"],spl_autoload_extensions:["string spl_autoload_extensions([string file_extensions])","Register and return default file extensions for spl_autoload"],spl_autoload_functions:["false|array spl_autoload_functions()","Return all registered __autoload() functionns"],spl_autoload_register:['bool spl_autoload_register([mixed autoload_function = "spl_autoload" [, throw = true [, prepend]]])',"Register given function as __autoload() implementation"],spl_autoload_unregister:["bool spl_autoload_unregister(mixed autoload_function)","Unregister given function as __autoload() implementation"],spl_classes:["array spl_classes()","Return an array containing the names of all clsses and interfaces defined in SPL"],spl_object_hash:["string spl_object_hash(object obj)","Return hash id for given object"],split:["array split(string pattern, string string [, int limit])","Split string into array by regular expression"],spliti:["array spliti(string pattern, string string [, int limit])","Split string into array by regular expression case-insensitive"],sprintf:["string sprintf(string format [, mixed arg1 [, mixed ...]])","Return a formatted string"],sql_regcase:["string sql_regcase(string string)","Make regular expression for case insensitive match"],sqlite_array_query:["array sqlite_array_query(resource db, string query [ , int result_type [, bool decode_binary]])","Executes a query against a given database and returns an array of arrays."],sqlite_busy_timeout:["void sqlite_busy_timeout(resource db, int ms)","Set busy timeout duration. If ms <= 0, all busy handlers are disabled."],sqlite_changes:["int sqlite_changes(resource db)","Returns the number of rows that were changed by the most recent SQL statement."],sqlite_close:["void sqlite_close(resource db)","Closes an open sqlite database."],sqlite_column:["mixed sqlite_column(resource result, mixed index_or_name [, bool decode_binary])","Fetches a column from the current row of a result set."],sqlite_create_aggregate:["bool sqlite_create_aggregate(resource db, string funcname, mixed step_func, mixed finalize_func[, long num_args])","Registers an aggregate function for queries."],sqlite_create_function:["bool sqlite_create_function(resource db, string funcname, mixed callback[, long num_args])",'Registers a "regular" function for queries.'],sqlite_current:["array sqlite_current(resource result [, int result_type [, bool decode_binary]])","Fetches the current row from a result set as an array."],sqlite_error_string:["string sqlite_error_string(int error_code)","Returns the textual description of an error code."],sqlite_escape_string:["string sqlite_escape_string(string item)","Escapes a string for use as a query parameter."],sqlite_exec:["boolean sqlite_exec(string query, resource db[, string &error_message])","Executes a result-less query against a given database"],sqlite_factory:["object sqlite_factory(string filename [, int mode [, string &error_message]])","Opens a SQLite database and creates an object for it. Will create the database if it does not exist."],sqlite_fetch_all:["array sqlite_fetch_all(resource result [, int result_type [, bool decode_binary]])","Fetches all rows from a result set as an array of arrays."],sqlite_fetch_array:["array sqlite_fetch_array(resource result [, int result_type [, bool decode_binary]])","Fetches the next row from a result set as an array."],sqlite_fetch_column_types:["resource sqlite_fetch_column_types(string table_name, resource db [, int result_type])","Return an array of column types from a particular table."],sqlite_fetch_object:["object sqlite_fetch_object(resource result [, string class_name [, NULL|array ctor_params [, bool decode_binary]]])","Fetches the next row from a result set as an object."],sqlite_fetch_single:["string sqlite_fetch_single(resource result [, bool decode_binary])","Fetches the first column of a result set as a string."],sqlite_field_name:["string sqlite_field_name(resource result, int field_index)","Returns the name of a particular field of a result set."],sqlite_has_prev:["bool sqlite_has_prev(resource result)","* Returns whether a previous row is available."],sqlite_key:["int sqlite_key(resource result)","Return the current row index of a buffered result."],sqlite_last_error:["int sqlite_last_error(resource db)","Returns the error code of the last error for a database."],sqlite_last_insert_rowid:["int sqlite_last_insert_rowid(resource db)","Returns the rowid of the most recently inserted row."],sqlite_libencoding:["string sqlite_libencoding()","Returns the encoding (iso8859 or UTF-8) of the linked SQLite library."],sqlite_libversion:["string sqlite_libversion()","Returns the version of the linked SQLite library."],sqlite_next:["bool sqlite_next(resource result)","Seek to the next row number of a result set."],sqlite_num_fields:["int sqlite_num_fields(resource result)","Returns the number of fields in a result set."],sqlite_num_rows:["int sqlite_num_rows(resource result)","Returns the number of rows in a buffered result set."],sqlite_open:["resource sqlite_open(string filename [, int mode [, string &error_message]])","Opens a SQLite database. Will create the database if it does not exist."],sqlite_popen:["resource sqlite_popen(string filename [, int mode [, string &error_message]])","Opens a persistent handle to a SQLite database. Will create the database if it does not exist."],sqlite_prev:["bool sqlite_prev(resource result)","* Seek to the previous row number of a result set."],sqlite_query:["resource sqlite_query(string query, resource db [, int result_type [, string &error_message]])","Executes a query against a given database and returns a result handle."],sqlite_rewind:["bool sqlite_rewind(resource result)","Seek to the first row number of a buffered result set."],sqlite_seek:["bool sqlite_seek(resource result, int row)","Seek to a particular row number of a buffered result set."],sqlite_single_query:["array sqlite_single_query(resource db, string query [, bool first_row_only [, bool decode_binary]])","Executes a query and returns either an array for one single column or the value of the first row."],sqlite_udf_decode_binary:["string sqlite_udf_decode_binary(string data)","Decode binary encoding on a string parameter passed to an UDF."],sqlite_udf_encode_binary:["string sqlite_udf_encode_binary(string data)","Apply binary encoding (if required) to a string to return from an UDF."],sqlite_unbuffered_query:["resource sqlite_unbuffered_query(string query, resource db [ , int result_type [, string &error_message]])","Executes a query that does not prefetch and buffer all data."],sqlite_valid:["bool sqlite_valid(resource result)","Returns whether more rows are available."],sqrt:["float sqrt(float number)","Returns the square root of the number"],srand:["void srand([int seed])","Seeds random number generator"],sscanf:["mixed sscanf(string str, string format [, string ...])","Implements an ANSI C compatible sscanf"],stat:["array stat(string filename)","Give information about a file"],str_getcsv:["array str_getcsv(string input[, string delimiter[, string enclosure[, string escape]]])","Parse a CSV string into an array"],str_ireplace:["mixed str_ireplace(mixed search, mixed replace, mixed subject [, int &replace_count])","Replaces all occurrences of search in haystack with replace / case-insensitive"],str_pad:["string str_pad(string input, int pad_length [, string pad_string [, int pad_type]])","Returns input string padded on the left or right to specified length with pad_string"],str_repeat:["string str_repeat(string input, int mult)","Returns the input string repeat mult times"],str_replace:["mixed str_replace(mixed search, mixed replace, mixed subject [, int &replace_count])","Replaces all occurrences of search in haystack with replace"],str_rot13:["string str_rot13(string str)","Perform the rot13 transform on a string"],str_shuffle:["void str_shuffle(string str)","Shuffles string. One permutation of all possible is created"],str_split:["array str_split(string str [, int split_length])","Convert a string to an array. If split_length is specified, break the string down into chunks each split_length characters long."],str_word_count:["mixed str_word_count(string str, [int format [, string charlist]])",'Counts the number of words inside a string. If format of 1 is specified, then the function will return an array containing all the words found inside the string. If format of 2 is specified, then the function will return an associated array where the position of the word is the key and the word itself is the value. For the purpose of this function, \'word\' is defined as a locale dependent string containing alphabetic characters, which also may contain, but not start with "\'" and "-" characters.'],strcasecmp:["int strcasecmp(string str1, string str2)","Binary safe case-insensitive string comparison"],strchr:["string strchr(string haystack, string needle)","An alias for strstr"],strcmp:["int strcmp(string str1, string str2)","Binary safe string comparison"],strcoll:["int strcoll(string str1, string str2)","Compares two strings using the current locale"],strcspn:["int strcspn(string str, string mask [, start [, len]])","Finds length of initial segment consisting entirely of characters not found in mask. If start or/and length is provide works like strcspn(substr($s,$start,$len),$bad_chars)"],stream_bucket_append:["void stream_bucket_append(resource brigade, resource bucket)","Append bucket to brigade"],stream_bucket_make_writeable:["object stream_bucket_make_writeable(resource brigade)","Return a bucket object from the brigade for operating on"],stream_bucket_new:["resource stream_bucket_new(resource stream, string buffer)","Create a new bucket for use on the current stream"],stream_bucket_prepend:["void stream_bucket_prepend(resource brigade, resource bucket)","Prepend bucket to brigade"],stream_context_create:["resource stream_context_create([array options[, array params]])","Create a file context and optionally set parameters"],stream_context_get_default:["resource stream_context_get_default([array options])","Get a handle on the default file/stream context and optionally set parameters"],stream_context_get_options:["array stream_context_get_options(resource context|resource stream)","Retrieve options for a stream/wrapper/context"],stream_context_get_params:["array stream_context_get_params(resource context|resource stream)","Get parameters of a file context"],stream_context_set_default:["resource stream_context_set_default(array options)","Set default file/stream context, returns the context as a resource"],stream_context_set_option:["bool stream_context_set_option(resource context|resource stream, string wrappername, string optionname, mixed value)","Set an option for a wrapper"],stream_context_set_params:["bool stream_context_set_params(resource context|resource stream, array options)","Set parameters for a file context"],stream_copy_to_stream:["long stream_copy_to_stream(resource source, resource dest [, long maxlen [, long pos]])","Reads up to maxlen bytes from source stream and writes them to dest stream."],stream_filter_append:["resource stream_filter_append(resource stream, string filtername[, int read_write[, string filterparams]])","Append a filter to a stream"],stream_filter_prepend:["resource stream_filter_prepend(resource stream, string filtername[, int read_write[, string filterparams]])","Prepend a filter to a stream"],stream_filter_register:["bool stream_filter_register(string filtername, string classname)","Registers a custom filter handler class"],stream_filter_remove:["bool stream_filter_remove(resource stream_filter)","Flushes any data in the filter's internal buffer, removes it from the chain, and frees the resource"],stream_get_contents:["string stream_get_contents(resource source [, long maxlen [, long offset]])","Reads all remaining bytes (or up to maxlen bytes) from a stream and returns them as a string."],stream_get_filters:["array stream_get_filters(void)","Returns a list of registered filters"],stream_get_line:["string stream_get_line(resource stream, int maxlen [, string ending])","Read up to maxlen bytes from a stream or until the ending string is found"],stream_get_meta_data:["array stream_get_meta_data(resource fp)","Retrieves header/meta data from streams/file pointers"],stream_get_transports:["array stream_get_transports()","Retrieves list of registered socket transports"],stream_get_wrappers:["array stream_get_wrappers()","Retrieves list of registered stream wrappers"],stream_is_local:["bool stream_is_local(resource stream|string url)",""],stream_resolve_include_path:["string stream_resolve_include_path(string filename)","Determine what file will be opened by calls to fopen() with a relative path"],stream_select:["int stream_select(array &read_streams, array &write_streams, array &except_streams, int tv_sec[, int tv_usec])","Runs the select() system call on the sets of streams with a timeout specified by tv_sec and tv_usec"],stream_set_blocking:["bool stream_set_blocking(resource socket, int mode)","Set blocking/non-blocking mode on a socket or stream"],stream_set_timeout:["bool stream_set_timeout(resource stream, int seconds [, int microseconds])","Set timeout on stream read to seconds + microseonds"],stream_set_write_buffer:["int stream_set_write_buffer(resource fp, int buffer)","Set file write buffer"],stream_socket_accept:["resource stream_socket_accept(resource serverstream, [ double timeout [, string &peername ]])","Accept a client connection from a server socket"],stream_socket_client:["resource stream_socket_client(string remoteaddress [, long &errcode [, string &errstring [, double timeout [, long flags [, resource context]]]]])","Open a client connection to a remote address"],stream_socket_enable_crypto:["int stream_socket_enable_crypto(resource stream, bool enable [, int cryptokind [, resource sessionstream]])","Enable or disable a specific kind of crypto on the stream"],stream_socket_get_name:["string stream_socket_get_name(resource stream, bool want_peer)","Returns either the locally bound or remote name for a socket stream"],stream_socket_pair:["array stream_socket_pair(int domain, int type, int protocol)","Creates a pair of connected, indistinguishable socket streams"],stream_socket_recvfrom:["string stream_socket_recvfrom(resource stream, long amount [, long flags [, string &remote_addr]])","Receives data from a socket stream"],stream_socket_sendto:["long stream_socket_sendto(resouce stream, string data [, long flags [, string target_addr]])","Send data to a socket stream. If target_addr is specified it must be in dotted quad (or [ipv6]) format"],stream_socket_server:["resource stream_socket_server(string localaddress [, long &errcode [, string &errstring [, long flags [, resource context]]]])","Create a server socket bound to localaddress"],stream_socket_shutdown:["int stream_socket_shutdown(resource stream, int how)","causes all or part of a full-duplex connection on the socket associated with stream to be shut down. If how is SHUT_RD, further receptions will be disallowed. If how is SHUT_WR, further transmissions will be disallowed. If how is SHUT_RDWR, further receptions and transmissions will be disallowed."],stream_supports_lock:["bool stream_supports_lock(resource stream)","Tells wether the stream supports locking through flock()."],stream_wrapper_register:["bool stream_wrapper_register(string protocol, string classname[, integer flags])","Registers a custom URL protocol handler class"],stream_wrapper_restore:["bool stream_wrapper_restore(string protocol)","Restore the original protocol handler, overriding if necessary"],stream_wrapper_unregister:["bool stream_wrapper_unregister(string protocol)","Unregister a wrapper for the life of the current request."],strftime:["string strftime(string format [, int timestamp])","Format a local time/date according to locale settings"],strip_tags:["string strip_tags(string str [, string allowable_tags])","Strips HTML and PHP tags from a string"],stripcslashes:["string stripcslashes(string str)","Strips backslashes from a string. Uses C-style conventions"],stripos:["int stripos(string haystack, string needle [, int offset])","Finds position of first occurrence of a string within another, case insensitive"],stripslashes:["string stripslashes(string str)","Strips backslashes from a string"],stristr:["string stristr(string haystack, string needle[, bool part])","Finds first occurrence of a string within another, case insensitive"],strlen:["int strlen(string str)","Get string length"],strnatcasecmp:["int strnatcasecmp(string s1, string s2)","Returns the result of case-insensitive string comparison using 'natural' algorithm"],strnatcmp:["int strnatcmp(string s1, string s2)","Returns the result of string comparison using 'natural' algorithm"],strncasecmp:["int strncasecmp(string str1, string str2, int len)","Binary safe string comparison"],strncmp:["int strncmp(string str1, string str2, int len)","Binary safe string comparison"],strpbrk:["array strpbrk(string haystack, string char_list)","Search a string for any of a set of characters"],strpos:["int strpos(string haystack, string needle [, int offset])","Finds position of first occurrence of a string within another"],strptime:["string strptime(string timestamp, string format)","Parse a time/date generated with strftime()"],strrchr:["string strrchr(string haystack, string needle)","Finds the last occurrence of a character in a string within another"],strrev:["string strrev(string str)","Reverse a string"],strripos:["int strripos(string haystack, string needle [, int offset])","Finds position of last occurrence of a string within another string"],strrpos:["int strrpos(string haystack, string needle [, int offset])","Finds position of last occurrence of a string within another string"],strspn:["int strspn(string str, string mask [, start [, len]])","Finds length of initial segment consisting entirely of characters found in mask. If start or/and length is provided works like strspn(substr($s,$start,$len),$good_chars)"],strstr:["string strstr(string haystack, string needle[, bool part])","Finds first occurrence of a string within another"],strtok:["string strtok([string str,] string token)","Tokenize a string"],strtolower:["string strtolower(string str)","Makes a string lowercase"],strtotime:["int strtotime(string time [, int now ])","Convert string representation of date and time to a timestamp"],strtoupper:["string strtoupper(string str)","Makes a string uppercase"],strtr:["string strtr(string str, string from[, string to])","Translates characters in str using given translation tables"],strval:["string strval(mixed var)","Get the string value of a variable"],substr:["string substr(string str, int start [, int length])","Returns part of a string"],substr_compare:["int substr_compare(string main_str, string str, int offset [, int length [, bool case_sensitivity]])","Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters"],substr_count:["int substr_count(string haystack, string needle [, int offset [, int length]])","Returns the number of times a substring occurs in the string"],substr_replace:["mixed substr_replace(mixed str, mixed repl, mixed start [, mixed length])","Replaces part of a string with another string"],sybase_affected_rows:["int sybase_affected_rows([resource link_id])","Get number of affected rows in last query"],sybase_close:["bool sybase_close([resource link_id])","Close Sybase connection"],sybase_connect:["int sybase_connect([string host [, string user [, string password [, string charset [, string appname [, bool new]]]]]])","Open Sybase server connection"],sybase_data_seek:["bool sybase_data_seek(resource result, int offset)","Move internal row pointer"],sybase_deadlock_retry_count:["void sybase_deadlock_retry_count(int retry_count)","Sets deadlock retry count"],sybase_fetch_array:["array sybase_fetch_array(resource result)","Fetch row as array"],sybase_fetch_assoc:["array sybase_fetch_assoc(resource result)","Fetch row as array without numberic indices"],sybase_fetch_field:["object sybase_fetch_field(resource result [, int offset])","Get field information"],sybase_fetch_object:["object sybase_fetch_object(resource result [, mixed object])","Fetch row as object"],sybase_fetch_row:["array sybase_fetch_row(resource result)","Get row as enumerated array"],sybase_field_seek:["bool sybase_field_seek(resource result, int offset)","Set field offset"],sybase_free_result:["bool sybase_free_result(resource result)","Free result memory"],sybase_get_last_message:["string sybase_get_last_message(void)","Returns the last message from server (over min_message_severity)"],sybase_min_client_severity:["void sybase_min_client_severity(int severity)","Sets minimum client severity"],sybase_min_server_severity:["void sybase_min_server_severity(int severity)","Sets minimum server severity"],sybase_num_fields:["int sybase_num_fields(resource result)","Get number of fields in result"],sybase_num_rows:["int sybase_num_rows(resource result)","Get number of rows in result"],sybase_pconnect:["int sybase_pconnect([string host [, string user [, string password [, string charset [, string appname]]]]])","Open persistent Sybase connection"],sybase_query:["int sybase_query(string query [, resource link_id])","Send Sybase query"],sybase_result:["string sybase_result(resource result, int row, mixed field)","Get result data"],sybase_select_db:["bool sybase_select_db(string database [, resource link_id])","Select Sybase database"],sybase_set_message_handler:["bool sybase_set_message_handler(mixed error_func [, resource connection])","Set the error handler, to be called when a server message is raised. If error_func is NULL the handler will be deleted"],sybase_unbuffered_query:["int sybase_unbuffered_query(string query [, resource link_id])","Send Sybase query"],symlink:["int symlink(string target, string link)","Create a symbolic link"],sys_get_temp_dir:["string sys_get_temp_dir()","Returns directory path used for temporary files"],sys_getloadavg:["array sys_getloadavg()",""],syslog:["bool syslog(int priority, string message)","Generate a system log message"],system:["int system(string command [, int &return_value])","Execute an external program and display output"],tan:["float tan(float number)","Returns the tangent of the number in radians"],tanh:["float tanh(float number)","Returns the hyperbolic tangent of the number, defined as sinh(number)/cosh(number)"],tempnam:["string tempnam(string dir, string prefix)","Create a unique filename in a directory"],textdomain:["string textdomain(string domain)",'Set the textdomain to "domain". Returns the current domain'],tidy_access_count:["int tidy_access_count()","Returns the Number of Tidy accessibility warnings encountered for specified document."],tidy_clean_repair:["boolean tidy_clean_repair()","Execute configured cleanup and repair operations on parsed markup"],tidy_config_count:["int tidy_config_count()","Returns the Number of Tidy configuration errors encountered for specified document."],tidy_diagnose:["boolean tidy_diagnose()","Run configured diagnostics on parsed and repaired markup."],tidy_error_count:["int tidy_error_count()","Returns the Number of Tidy errors encountered for specified document."],tidy_get_body:["TidyNode tidy_get_body(resource tidy)","Returns a TidyNode Object starting from the <BODY> tag of the tidy parse tree"],tidy_get_config:["array tidy_get_config()","Get current Tidy configuarion"],tidy_get_error_buffer:["string tidy_get_error_buffer([boolean detailed])","Return warnings and errors which occured parsing the specified document"],tidy_get_head:["TidyNode tidy_get_head()","Returns a TidyNode Object starting from the <HEAD> tag of the tidy parse tree"],tidy_get_html:["TidyNode tidy_get_html()","Returns a TidyNode Object starting from the <HTML> tag of the tidy parse tree"],tidy_get_html_ver:["int tidy_get_html_ver()","Get the Detected HTML version for the specified document."],tidy_get_opt_doc:["string tidy_get_opt_doc(tidy resource, string optname)","Returns the documentation for the given option name"],tidy_get_output:["string tidy_get_output()","Return a string representing the parsed tidy markup"],tidy_get_release:["string tidy_get_release()","Get release date (version) for Tidy library"],tidy_get_root:["TidyNode tidy_get_root()","Returns a TidyNode Object representing the root of the tidy parse tree"],tidy_get_status:["int tidy_get_status()","Get status of specfied document."],tidy_getopt:["mixed tidy_getopt(string option)","Returns the value of the specified configuration option for the tidy document."],tidy_is_xhtml:["boolean tidy_is_xhtml()","Indicates if the document is a XHTML document."],tidy_is_xml:["boolean tidy_is_xml()","Indicates if the document is a generic (non HTML/XHTML) XML document."],tidy_parse_file:["boolean tidy_parse_file(string file [, mixed config_options [, string encoding [, bool use_include_path]]])","Parse markup in file or URI"],tidy_parse_string:["bool tidy_parse_string(string input [, mixed config_options [, string encoding]])","Parse a document stored in a string"],tidy_repair_file:["boolean tidy_repair_file(string filename [, mixed config_file [, string encoding [, bool use_include_path]]])","Repair a file using an optionally provided configuration file"],tidy_repair_string:["boolean tidy_repair_string(string data [, mixed config_file [, string encoding]])","Repair a string using an optionally provided configuration file"],tidy_warning_count:["int tidy_warning_count()","Returns the Number of Tidy warnings encountered for specified document."],time:["int time(void)","Return current UNIX timestamp"],time_nanosleep:["mixed time_nanosleep(long seconds, long nanoseconds)","Delay for a number of seconds and nano seconds"],time_sleep_until:["mixed time_sleep_until(float timestamp)","Make the script sleep until the specified time"],timezone_abbreviations_list:["array timezone_abbreviations_list()","Returns associative array containing dst, offset and the timezone name"],timezone_identifiers_list:["array timezone_identifiers_list([long what[, string country]])","Returns numerically index array with all timezone identifiers."],timezone_location_get:["array timezone_location_get()","Returns location information for a timezone, including country code, latitude/longitude and comments"],timezone_name_from_abbr:["string timezone_name_from_abbr(string abbr[, long gmtOffset[, long isdst]])","Returns the timezone name from abbrevation"],timezone_name_get:["string timezone_name_get(DateTimeZone object)","Returns the name of the timezone."],timezone_offset_get:["long timezone_offset_get(DateTimeZone object, DateTime object)","Returns the timezone offset."],timezone_open:["DateTimeZone timezone_open(string timezone)","Returns new DateTimeZone object"],timezone_transitions_get:["array timezone_transitions_get(DateTimeZone object [, long timestamp_begin [, long timestamp_end ]])","Returns numerically indexed array containing associative array for all transitions in the specified range for the timezone."],timezone_version_get:["array timezone_version_get()","Returns the Olson database version number."],tmpfile:["resource tmpfile(void)","Create a temporary file that will be deleted automatically after use"],token_get_all:["array token_get_all(string source)",""],token_name:["string token_name(int type)",""],touch:["bool touch(string filename [, int time [, int atime]])","Set modification time of file"],trigger_error:["void trigger_error(string messsage [, int error_type])","Generates a user-level error/warning/notice message"],trim:["string trim(string str [, string character_mask])","Strips whitespace from the beginning and end of a string"],uasort:["bool uasort(array array_arg, string cmp_function)","Sort an array with a user-defined comparison function and maintain index association"],ucfirst:["string ucfirst(string str)","Make a string's first character lowercase"],ucwords:["string ucwords(string str)","Uppercase the first character of every word in a string"],uksort:["bool uksort(array array_arg, string cmp_function)","Sort an array by keys using a user-defined comparison function"],umask:["int umask([int mask])","Return or change the umask"],uniqid:["string uniqid([string prefix [, bool more_entropy]])","Generates a unique ID"],unixtojd:["int unixtojd([int timestamp])","Convert UNIX timestamp to Julian Day"],unlink:["bool unlink(string filename[, context context])","Delete a file"],unpack:["array unpack(string format, string input)","Unpack binary string into named array elements according to format argument"],unregister_tick_function:["void unregister_tick_function(string function_name)","Unregisters a tick callback function"],unserialize:["mixed unserialize(string variable_representation)","Takes a string representation of variable and recreates it"],unset:["void unset (mixed var [, mixed var])","Unset a given variable"],urldecode:["string urldecode(string str)","Decodes URL-encoded string"],urlencode:["string urlencode(string str)","URL-encodes string"],usleep:["void usleep(int micro_seconds)","Delay for a given number of micro seconds"],usort:["bool usort(array array_arg, string cmp_function)","Sort an array by values using a user-defined comparison function"],utf8_decode:["string utf8_decode(string data)","Converts a UTF-8 encoded string to ISO-8859-1"],utf8_encode:["string utf8_encode(string data)","Encodes an ISO-8859-1 string to UTF-8"],var_dump:["void var_dump(mixed var)","Dumps a string representation of variable to output"],var_export:["mixed var_export(mixed var [, bool return])","Outputs or returns a string representation of a variable"],variant_abs:["mixed variant_abs(mixed left)","Returns the absolute value of a variant"],variant_add:["mixed variant_add(mixed left, mixed right)",'"Adds" two variant values together and returns the result'],variant_and:["mixed variant_and(mixed left, mixed right)","performs a bitwise AND operation between two variants and returns the result"],variant_cast:["object variant_cast(object variant, int type)","Convert a variant into a new variant object of another type"],variant_cat:["mixed variant_cat(mixed left, mixed right)","concatenates two variant values together and returns the result"],variant_cmp:["int variant_cmp(mixed left, mixed right [, int lcid [, int flags]])","Compares two variants"],variant_date_from_timestamp:["object variant_date_from_timestamp(int timestamp)","Returns a variant date representation of a unix timestamp"],variant_date_to_timestamp:["int variant_date_to_timestamp(object variant)","Converts a variant date/time value to unix timestamp"],variant_div:["mixed variant_div(mixed left, mixed right)","Returns the result from dividing two variants"],variant_eqv:["mixed variant_eqv(mixed left, mixed right)","Performs a bitwise equivalence on two variants"],variant_fix:["mixed variant_fix(mixed left)","Returns the integer part ? of a variant"],variant_get_type:["int variant_get_type(object variant)","Returns the VT_XXX type code for a variant"],variant_idiv:["mixed variant_idiv(mixed left, mixed right)","Converts variants to integers and then returns the result from dividing them"],variant_imp:["mixed variant_imp(mixed left, mixed right)","Performs a bitwise implication on two variants"],variant_int:["mixed variant_int(mixed left)","Returns the integer portion of a variant"],variant_mod:["mixed variant_mod(mixed left, mixed right)","Divides two variants and returns only the remainder"],variant_mul:["mixed variant_mul(mixed left, mixed right)","multiplies the values of the two variants and returns the result"],variant_neg:["mixed variant_neg(mixed left)","Performs logical negation on a variant"],variant_not:["mixed variant_not(mixed left)","Performs bitwise not negation on a variant"],variant_or:["mixed variant_or(mixed left, mixed right)","Performs a logical disjunction on two variants"],variant_pow:["mixed variant_pow(mixed left, mixed right)","Returns the result of performing the power function with two variants"],variant_round:["mixed variant_round(mixed left, int decimals)","Rounds a variant to the specified number of decimal places"],variant_set:["void variant_set(object variant, mixed value)","Assigns a new value for a variant object"],variant_set_type:["void variant_set_type(object variant, int type)",'Convert a variant into another type. Variant is modified "in-place"'],variant_sub:["mixed variant_sub(mixed left, mixed right)","subtracts the value of the right variant from the left variant value and returns the result"],variant_xor:["mixed variant_xor(mixed left, mixed right)","Performs a logical exclusion on two variants"],version_compare:["int version_compare(string ver1, string ver2 [, string oper])",'Compares two "PHP-standardized" version number strings'],vfprintf:["int vfprintf(resource stream, string format, array args)","Output a formatted string into a stream"],virtual:["bool virtual(string filename)","Perform an Apache sub-request"],vprintf:["int vprintf(string format, array args)","Output a formatted string"],vsprintf:["string vsprintf(string format, array args)","Return a formatted string"],wddx_add_vars:["int wddx_add_vars(resource packet_id, mixed var_names [, mixed ...])","Serializes given variables and adds them to packet given by packet_id"],wddx_deserialize:["mixed wddx_deserialize(mixed packet)","Deserializes given packet and returns a PHP value"],wddx_packet_end:["string wddx_packet_end(resource packet_id)","Ends specified WDDX packet and returns the string containing the packet"],wddx_packet_start:["resource wddx_packet_start([string comment])","Starts a WDDX packet with optional comment and returns the packet id"],wddx_serialize_value:["string wddx_serialize_value(mixed var [, string comment])","Creates a new packet and serializes the given value"],wddx_serialize_vars:["string wddx_serialize_vars(mixed var_name [, mixed ...])","Creates a new packet and serializes given variables into a struct"],wordwrap:["string wordwrap(string str [, int width [, string break [, boolean cut]]])","Wraps buffer to selected number of characters using string break char"],xml_error_string:["string xml_error_string(int code)","Get XML parser error string"],xml_get_current_byte_index:["int xml_get_current_byte_index(resource parser)","Get current byte index for an XML parser"],xml_get_current_column_number:["int xml_get_current_column_number(resource parser)","Get current column number for an XML parser"],xml_get_current_line_number:["int xml_get_current_line_number(resource parser)","Get current line number for an XML parser"],xml_get_error_code:["int xml_get_error_code(resource parser)","Get XML parser error code"],xml_parse:["int xml_parse(resource parser, string data [, int isFinal])","Start parsing an XML document"],xml_parse_into_struct:["int xml_parse_into_struct(resource parser, string data, array &values [, array &index ])","Parsing a XML document"],xml_parser_create:["resource xml_parser_create([string encoding])","Create an XML parser"],xml_parser_create_ns:["resource xml_parser_create_ns([string encoding [, string sep]])","Create an XML parser"],xml_parser_free:["int xml_parser_free(resource parser)","Free an XML parser"],xml_parser_get_option:["int xml_parser_get_option(resource parser, int option)","Get options from an XML parser"],xml_parser_set_option:["int xml_parser_set_option(resource parser, int option, mixed value)","Set options in an XML parser"],xml_set_character_data_handler:["int xml_set_character_data_handler(resource parser, string hdl)","Set up character data handler"],xml_set_default_handler:["int xml_set_default_handler(resource parser, string hdl)","Set up default handler"],xml_set_element_handler:["int xml_set_element_handler(resource parser, string shdl, string ehdl)","Set up start and end element handlers"],xml_set_end_namespace_decl_handler:["int xml_set_end_namespace_decl_handler(resource parser, string hdl)","Set up character data handler"],xml_set_external_entity_ref_handler:["int xml_set_external_entity_ref_handler(resource parser, string hdl)","Set up external entity reference handler"],xml_set_notation_decl_handler:["int xml_set_notation_decl_handler(resource parser, string hdl)","Set up notation declaration handler"],xml_set_object:["int xml_set_object(resource parser, object &obj)","Set up object which should be used for callbacks"],xml_set_processing_instruction_handler:["int xml_set_processing_instruction_handler(resource parser, string hdl)","Set up processing instruction (PI) handler"],xml_set_start_namespace_decl_handler:["int xml_set_start_namespace_decl_handler(resource parser, string hdl)","Set up character data handler"],xml_set_unparsed_entity_decl_handler:["int xml_set_unparsed_entity_decl_handler(resource parser, string hdl)","Set up unparsed entity declaration handler"],xmlrpc_decode:["array xmlrpc_decode(string xml [, string encoding])","Decodes XML into native PHP types"],xmlrpc_decode_request:["array xmlrpc_decode_request(string xml, string& method [, string encoding])","Decodes XML into native PHP types"],xmlrpc_encode:["string xmlrpc_encode(mixed value)","Generates XML for a PHP value"],xmlrpc_encode_request:["string xmlrpc_encode_request(string method, mixed params [, array output_options])","Generates XML for a method request"],xmlrpc_get_type:["string xmlrpc_get_type(mixed value)","Gets xmlrpc type for a PHP value. Especially useful for base64 and datetime strings"],xmlrpc_is_fault:["bool xmlrpc_is_fault(array)","Determines if an array value represents an XMLRPC fault."],xmlrpc_parse_method_descriptions:["array xmlrpc_parse_method_descriptions(string xml)","Decodes XML into a list of method descriptions"],xmlrpc_server_add_introspection_data:["int xmlrpc_server_add_introspection_data(resource server, array desc)","Adds introspection documentation"],xmlrpc_server_call_method:["mixed xmlrpc_server_call_method(resource server, string xml, mixed user_data [, array output_options])","Parses XML requests and call methods"],xmlrpc_server_create:["resource xmlrpc_server_create(void)","Creates an xmlrpc server"],xmlrpc_server_destroy:["int xmlrpc_server_destroy(resource server)","Destroys server resources"],xmlrpc_server_register_introspection_callback:["bool xmlrpc_server_register_introspection_callback(resource server, string function)","Register a PHP function to generate documentation"],xmlrpc_server_register_method:["bool xmlrpc_server_register_method(resource server, string method_name, string function)","Register a PHP function to handle method matching method_name"],xmlrpc_set_type:["bool xmlrpc_set_type(string value, string type)","Sets xmlrpc type, base64 or datetime, for a PHP string value"],xmlwriter_end_attribute:["bool xmlwriter_end_attribute(resource xmlwriter)","End attribute - returns FALSE on error"],xmlwriter_end_cdata:["bool xmlwriter_end_cdata(resource xmlwriter)","End current CDATA - returns FALSE on error"],xmlwriter_end_comment:["bool xmlwriter_end_comment(resource xmlwriter)","Create end comment - returns FALSE on error"],xmlwriter_end_document:["bool xmlwriter_end_document(resource xmlwriter)","End current document - returns FALSE on error"],xmlwriter_end_dtd:["bool xmlwriter_end_dtd(resource xmlwriter)","End current DTD - returns FALSE on error"],xmlwriter_end_dtd_attlist:["bool xmlwriter_end_dtd_attlist(resource xmlwriter)","End current DTD AttList - returns FALSE on error"],xmlwriter_end_dtd_element:["bool xmlwriter_end_dtd_element(resource xmlwriter)","End current DTD element - returns FALSE on error"],xmlwriter_end_dtd_entity:["bool xmlwriter_end_dtd_entity(resource xmlwriter)","End current DTD Entity - returns FALSE on error"],xmlwriter_end_element:["bool xmlwriter_end_element(resource xmlwriter)","End current element - returns FALSE on error"],xmlwriter_end_pi:["bool xmlwriter_end_pi(resource xmlwriter)","End current PI - returns FALSE on error"],xmlwriter_flush:["mixed xmlwriter_flush(resource xmlwriter [,bool empty])","Output current buffer"],xmlwriter_full_end_element:["bool xmlwriter_full_end_element(resource xmlwriter)","End current element - returns FALSE on error"],xmlwriter_open_memory:["resource xmlwriter_open_memory()","Create new xmlwriter using memory for string output"],xmlwriter_open_uri:["resource xmlwriter_open_uri(resource xmlwriter, string source)","Create new xmlwriter using source uri for output"],xmlwriter_output_memory:["string xmlwriter_output_memory(resource xmlwriter [,bool flush])","Output current buffer as string"],xmlwriter_set_indent:["bool xmlwriter_set_indent(resource xmlwriter, bool indent)","Toggle indentation on/off - returns FALSE on error"],xmlwriter_set_indent_string:["bool xmlwriter_set_indent_string(resource xmlwriter, string indentString)","Set string used for indenting - returns FALSE on error"],xmlwriter_start_attribute:["bool xmlwriter_start_attribute(resource xmlwriter, string name)","Create start attribute - returns FALSE on error"],xmlwriter_start_attribute_ns:["bool xmlwriter_start_attribute_ns(resource xmlwriter, string prefix, string name, string uri)","Create start namespaced attribute - returns FALSE on error"],xmlwriter_start_cdata:["bool xmlwriter_start_cdata(resource xmlwriter)","Create start CDATA tag - returns FALSE on error"],xmlwriter_start_comment:["bool xmlwriter_start_comment(resource xmlwriter)","Create start comment - returns FALSE on error"],xmlwriter_start_document:["bool xmlwriter_start_document(resource xmlwriter, string version, string encoding, string standalone)","Create document tag - returns FALSE on error"],xmlwriter_start_dtd:["bool xmlwriter_start_dtd(resource xmlwriter, string name, string pubid, string sysid)","Create start DTD tag - returns FALSE on error"],xmlwriter_start_dtd_attlist:["bool xmlwriter_start_dtd_attlist(resource xmlwriter, string name)","Create start DTD AttList - returns FALSE on error"],xmlwriter_start_dtd_element:["bool xmlwriter_start_dtd_element(resource xmlwriter, string name)","Create start DTD element - returns FALSE on error"],xmlwriter_start_dtd_entity:["bool xmlwriter_start_dtd_entity(resource xmlwriter, string name, bool isparam)","Create start DTD Entity - returns FALSE on error"],xmlwriter_start_element:["bool xmlwriter_start_element(resource xmlwriter, string name)","Create start element tag - returns FALSE on error"],xmlwriter_start_element_ns:["bool xmlwriter_start_element_ns(resource xmlwriter, string prefix, string name, string uri)","Create start namespaced element tag - returns FALSE on error"],xmlwriter_start_pi:["bool xmlwriter_start_pi(resource xmlwriter, string target)","Create start PI tag - returns FALSE on error"],xmlwriter_text:["bool xmlwriter_text(resource xmlwriter, string content)","Write text - returns FALSE on error"],xmlwriter_write_attribute:["bool xmlwriter_write_attribute(resource xmlwriter, string name, string content)","Write full attribute - returns FALSE on error"],xmlwriter_write_attribute_ns:["bool xmlwriter_write_attribute_ns(resource xmlwriter, string prefix, string name, string uri, string content)","Write full namespaced attribute - returns FALSE on error"],xmlwriter_write_cdata:["bool xmlwriter_write_cdata(resource xmlwriter, string content)","Write full CDATA tag - returns FALSE on error"],xmlwriter_write_comment:["bool xmlwriter_write_comment(resource xmlwriter, string content)","Write full comment tag - returns FALSE on error"],xmlwriter_write_dtd:["bool xmlwriter_write_dtd(resource xmlwriter, string name, string pubid, string sysid, string subset)","Write full DTD tag - returns FALSE on error"],xmlwriter_write_dtd_attlist:["bool xmlwriter_write_dtd_attlist(resource xmlwriter, string name, string content)","Write full DTD AttList tag - returns FALSE on error"],xmlwriter_write_dtd_element:["bool xmlwriter_write_dtd_element(resource xmlwriter, string name, string content)","Write full DTD element tag - returns FALSE on error"],xmlwriter_write_dtd_entity:["bool xmlwriter_write_dtd_entity(resource xmlwriter, string name, string content [, int pe [, string pubid [, string sysid [, string ndataid]]]])","Write full DTD Entity tag - returns FALSE on error"],xmlwriter_write_element:["bool xmlwriter_write_element(resource xmlwriter, string name[, string content])","Write full element tag - returns FALSE on error"],xmlwriter_write_element_ns:["bool xmlwriter_write_element_ns(resource xmlwriter, string prefix, string name, string uri[, string content])","Write full namesapced element tag - returns FALSE on error"],xmlwriter_write_pi:["bool xmlwriter_write_pi(resource xmlwriter, string target, string content)","Write full PI tag - returns FALSE on error"],xmlwriter_write_raw:["bool xmlwriter_write_raw(resource xmlwriter, string content)","Write text - returns FALSE on error"],xsl_xsltprocessor_get_parameter:["string xsl_xsltprocessor_get_parameter(string namespace, string name);",""],xsl_xsltprocessor_has_exslt_support:["bool xsl_xsltprocessor_has_exslt_support();",""],xsl_xsltprocessor_import_stylesheet:["void xsl_xsltprocessor_import_stylesheet(domdocument doc);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html# Since:"],xsl_xsltprocessor_register_php_functions:["void xsl_xsltprocessor_register_php_functions([mixed $restrict]);",""],xsl_xsltprocessor_remove_parameter:["bool xsl_xsltprocessor_remove_parameter(string namespace, string name);",""],xsl_xsltprocessor_set_parameter:["bool xsl_xsltprocessor_set_parameter(string namespace, mixed name [, string value]);",""],xsl_xsltprocessor_set_profiling:["bool xsl_xsltprocessor_set_profiling(string filename) */",'PHP_FUNCTION(xsl_xsltprocessor_set_profiling) { zval *id; xsl_object *intern; char *filename = NULL; int filename_len; DOM_GET_THIS(id); if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s!", &filename, &filename_len) == SUCCESS) { intern = (xsl_object *)zend_object_store_get_object(id TSRMLS_CC); if (intern->profiling) { efree(intern->profiling); } if (filename != NULL) { intern->profiling = estrndup(filename,filename_len); } else { intern->profiling = NULL; } RETURN_TRUE; } else { WRONG_PARAM_COUNT; } } /* }}} end xsl_xsltprocessor_set_profiling'],xsl_xsltprocessor_transform_to_doc:["domdocument xsl_xsltprocessor_transform_to_doc(domnode doc);","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html# Since:"],xsl_xsltprocessor_transform_to_uri:["int xsl_xsltprocessor_transform_to_uri(domdocument doc, string uri);",""],xsl_xsltprocessor_transform_to_xml:["string xsl_xsltprocessor_transform_to_xml(domdocument doc);",""],zend_logo_guid:["string zend_logo_guid(void)","Return the special ID used to request the Zend logo in phpinfo screens"],zend_version:["string zend_version(void)","Get the version of the Zend Engine"],zip_close:["void zip_close(resource zip)","Close a Zip archive"],zip_entry_close:["void zip_entry_close(resource zip_ent)","Close a zip entry"],zip_entry_compressedsize:["int zip_entry_compressedsize(resource zip_entry)","Return the compressed size of a ZZip entry"],zip_entry_compressionmethod:["string zip_entry_compressionmethod(resource zip_entry)","Return a string containing the compression method used on a particular entry"],zip_entry_filesize:["int zip_entry_filesize(resource zip_entry)","Return the actual filesize of a ZZip entry"],zip_entry_name:["string zip_entry_name(resource zip_entry)","Return the name given a ZZip entry"],zip_entry_open:["bool zip_entry_open(resource zip_dp, resource zip_entry [, string mode])","Open a Zip File, pointed by the resource entry"],zip_entry_read:["mixed zip_entry_read(resource zip_entry [, int len])","Read from an open directory entry"],zip_open:["resource zip_open(string filename)","Create new zip using source uri for output"],zip_read:["resource zip_read(resource zip)","Returns the next file in the archive"],zlib_get_coding_type:["string zlib_get_coding_type(void)","Returns the coding type used for output compression"]},i={$_COOKIE:{type:"array"},$_ENV:{type:"array"},$_FILES:{type:"array"},$_GET:{type:"array"},$_POST:{type:"array"},$_REQUEST:{type:"array"},$_SERVER:{type:"array",value:{DOCUMENT_ROOT:1,GATEWAY_INTERFACE:1,HTTP_ACCEPT:1,HTTP_ACCEPT_CHARSET:1,HTTP_ACCEPT_ENCODING:1,HTTP_ACCEPT_LANGUAGE:1,HTTP_CONNECTION:1,HTTP_HOST:1,HTTP_REFERER:1,HTTP_USER_AGENT:1,PATH_TRANSLATED:1,PHP_SELF:1,QUERY_STRING:1,REMOTE_ADDR:1,REMOTE_PORT:1,REQUEST_METHOD:1,REQUEST_URI:1,SCRIPT_FILENAME:1,SCRIPT_NAME:1,SERVER_ADMIN:1,SERVER_NAME:1,SERVER_PORT:1,SERVER_PROTOCOL:1,SERVER_SIGNATURE:1,SERVER_SOFTWARE:1}},$_SESSION:{type:"array"},$GLOBALS:{type:"array"}},o=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(i.type==="identifier")return this.getFunctionCompletions(e,t,n,r);if(s(i,"variable"))return this.getVariableCompletions(e,t,n,r);var o=t.getLine(n.row).substr(0,n.column);return i.type==="string"&&/(\$[\w]*)\[["']([^'"]*)$/i.test(o)?this.getArrayKeyCompletions(e,t,n,r):[]},this.getFunctionCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+"($0)",meta:"php function",score:Number.MAX_VALUE,docHTML:r[e][1]}})},this.getVariableCompletions=function(e,t,n,r){var s=Object.keys(i);return s.map(function(e){return{caption:e,value:e,meta:"php variable",score:Number.MAX_VALUE}})},this.getArrayKeyCompletions=function(e,t,n,r){var s=t.getLine(n.row).substr(0,n.column),o=s.match(/(\$[\w]*)\[["']([^'"]*)$/i)[1];if(!i[o])return[];var u=[];return i[o].type==="array"&&i[o].value&&(u=Object.keys(i[o].value)),u.map(function(e){return{caption:e,value:e,meta:"php array key",score:Number.MAX_VALUE}})}}).call(o.prototype),t.PhpCompletions=o}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[A-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/php",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/php_highlight_rules","ace/mode/php_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/php_completions","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/unicode","ace/mode/html","ace/mode/javascript","ace/mode/css"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./php_highlight_rules").PhpHighlightRules,o=e("./php_highlight_rules").PhpLangHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("../range").Range,f=e("../worker/worker_client").WorkerClient,l=e("./php_completions").PhpCompletions,c=e("./behaviour/cstyle").CstyleBehaviour,h=e("./folding/cstyle").FoldMode,p=e("../unicode"),d=e("./html").Mode,v=e("./javascript").Mode,m=e("./css").Mode,g=function(e){this.HighlightRules=o,this.$outdent=new u,this.$behaviour=new c,this.$completer=new l,this.foldingRules=new h};r.inherits(g,i),function(){this.tokenRe=new RegExp("^["+p.packages.L+p.packages.Mn+p.packages.Mc+p.packages.Nd+p.packages.Pc+"_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+p.packages.L+p.packages.Mn+p.packages.Mc+p.packages.Nd+p.packages.Pc+"_]|s])+","g"),this.lineCommentStart=["//","#"],this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[\:]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o!="doc-start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.$id="ace/mode/php-inline"}.call(g.prototype);var y=function(e){if(e&&e.inline){var t=new g;return t.createWorker=this.createWorker,t.inlinePhp=!0,t}d.call(this),this.HighlightRules=s,this.createModeDelegates({"js-":v,"css-":m,"php-":g}),this.foldingRules.subModes["php-"]=new h};r.inherits(y,d),function(){this.createWorker=function(e){var t=new f(["ace"],"ace/mode/php_worker","PhpWorker");return t.attachToDocument(e.getDocument()),this.inlinePhp&&t.call("setOptions",[{inline:!0}]),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/php"}.call(y.prototype),t.Mode=y}) \ No newline at end of file
diff --git a/library/ace/mode-plain_text.js b/library/ace/mode-plain_text.js
new file mode 100644
index 000000000..be72ab998
--- /dev/null
+++ b/library/ace/mode-plain_text.js
@@ -0,0 +1 @@
+ace.define("ace/mode/plain_text",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/behaviour"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour").Behaviour,u=function(){this.HighlightRules=s,this.$behaviour=new o};r.inherits(u,i),function(){this.type="text",this.getNextLineIndent=function(e,t,n){return""},this.$id="ace/mode/plain_text"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-powershell.js b/library/ace/mode-powershell.js
new file mode 100644
index 000000000..b7997197d
--- /dev/null
+++ b/library/ace/mode-powershell.js
@@ -0,0 +1 @@
+ace.define("ace/mode/powershell_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="begin|break|catch|continue|data|do|dynamicparam|else|elseif|end|exit|filter|finally|for|foreach|from|function|if|in|inlinescript|hidden|parallel|param|process|return|sequence|switch|throw|trap|try|until|while|workflow",t="Get-AppBackgroundTask|Start-AppBackgroundTask|Unregister-AppBackgroundTask|Disable-AppBackgroundTaskDiagnosticLog|Enable-AppBackgroundTaskDiagnosticLog|Set-AppBackgroundTaskResourcePolicy|Get-AppLockerFileInformation|Get-AppLockerPolicy|New-AppLockerPolicy|Set-AppLockerPolicy|Test-AppLockerPolicy|Get-AppxLastError|Get-AppxLog|Add-AppxPackage|Add-AppxVolume|Dismount-AppxVolume|Get-AppxDefaultVolume|Get-AppxPackage|Get-AppxPackageManifest|Get-AppxVolume|Mount-AppxVolume|Move-AppxPackage|Remove-AppxPackage|Remove-AppxVolume|Set-AppxDefaultVolume|Clear-AssignedAccess|Get-AssignedAccess|Set-AssignedAccess|Add-BitLockerKeyProtector|Backup-BitLockerKeyProtector|Clear-BitLockerAutoUnlock|Disable-BitLocker|Disable-BitLockerAutoUnlock|Enable-BitLocker|Enable-BitLockerAutoUnlock|Get-BitLockerVolume|Lock-BitLocker|Remove-BitLockerKeyProtector|Resume-BitLocker|Suspend-BitLocker|Unlock-BitLocker|Add-BitsFile|Complete-BitsTransfer|Get-BitsTransfer|Remove-BitsTransfer|Resume-BitsTransfer|Set-BitsTransfer|Start-BitsTransfer|Suspend-BitsTransfer|Add-BCDataCacheExtension|Clear-BCCache|Disable-BC|Disable-BCDowngrading|Disable-BCServeOnBattery|Enable-BCDistributed|Enable-BCDowngrading|Enable-BCHostedClient|Enable-BCHostedServer|Enable-BCLocal|Enable-BCServeOnBattery|Export-BCCachePackage|Export-BCSecretKey|Get-BCClientConfiguration|Get-BCContentServerConfiguration|Get-BCDataCache|Get-BCDataCacheExtension|Get-BCHashCache|Get-BCHostedCacheServerConfiguration|Get-BCNetworkConfiguration|Get-BCStatus|Import-BCCachePackage|Import-BCSecretKey|Publish-BCFileContent|Publish-BCWebContent|Remove-BCDataCacheExtension|Reset-BC|Set-BCAuthentication|Set-BCCache|Set-BCDataCacheEntryMaxAge|Set-BCMinSMBLatency|Set-BCSecretKey|Export-BinaryMiLog|Get-CimAssociatedInstance|Get-CimClass|Get-CimInstance|Get-CimSession|Import-BinaryMiLog|Invoke-CimMethod|New-CimInstance|New-CimSession|New-CimSessionOption|Register-CimIndicationEvent|Remove-CimInstance|Remove-CimSession|Set-CimInstance|ConvertFrom-CIPolicy|Add-SignerRule|Edit-CIPolicyRule|Get-CIPolicy|Get-CIPolicyInfo|Get-SystemDriver|Merge-CIPolicy|New-CIPolicy|New-CIPolicyRule|Remove-CIPolicyRule|Set-CIPolicyVersion|Set-HVCIOptions|Set-RuleOption|Add-MpPreference|Get-MpComputerStatus|Get-MpPreference|Get-MpThreat|Get-MpThreatCatalog|Get-MpThreatDetection|Remove-MpPreference|Remove-MpThreat|Set-MpPreference|Start-MpScan|Start-MpWDOScan|Update-MpSignature|Disable-DAManualEntryPointSelection|Enable-DAManualEntryPointSelection|Get-DAClientExperienceConfiguration|Get-DAEntryPointTableItem|New-DAEntryPointTableItem|Remove-DAEntryPointTableItem|Rename-DAEntryPointTableItem|Reset-DAClientExperienceConfiguration|Reset-DAEntryPointTableItem|Set-DAClientExperienceConfiguration|Set-DAEntryPointTableItem|Add-ProvisionedAppxPackage|Apply-WindowsUnattend|Get-ProvisionedAppxPackage|Remove-ProvisionedAppxPackage|Add-AppxProvisionedPackage|Add-WindowsCapability|Add-WindowsDriver|Add-WindowsImage|Add-WindowsPackage|Clear-WindowsCorruptMountPoint|Disable-WindowsOptionalFeature|Dismount-WindowsImage|Enable-WindowsOptionalFeature|Expand-WindowsCustomDataImage|Expand-WindowsImage|Export-WindowsDriver|Export-WindowsImage|Get-AppxProvisionedPackage|Get-WIMBootEntry|Get-WindowsCapability|Get-WindowsDriver|Get-WindowsEdition|Get-WindowsImage|Get-WindowsImageContent|Get-WindowsOptionalFeature|Get-WindowsPackage|Mount-WindowsImage|New-WindowsCustomImage|New-WindowsImage|Optimize-WindowsImage|Remove-AppxProvisionedPackage|Remove-WindowsCapability|Remove-WindowsDriver|Remove-WindowsImage|Remove-WindowsPackage|Repair-WindowsImage|Save-WindowsImage|Set-AppXProvisionedDataFile|Set-WindowsEdition|Set-WindowsProductKey|Split-WindowsImage|Update-WIMBootEntry|Use-WindowsUnattend|Add-DnsClientNrptRule|Clear-DnsClientCache|Get-DnsClient|Get-DnsClientCache|Get-DnsClientGlobalSetting|Get-DnsClientNrptGlobal|Get-DnsClientNrptPolicy|Get-DnsClientNrptRule|Get-DnsClientServerAddress|Register-DnsClient|Remove-DnsClientNrptRule|Set-DnsClient|Set-DnsClientGlobalSetting|Set-DnsClientNrptGlobal|Set-DnsClientNrptRule|Set-DnsClientServerAddress|Resolve-DnsName|Add-EtwTraceProvider|Get-AutologgerConfig|Get-EtwTraceProvider|Get-EtwTraceSession|New-AutologgerConfig|New-EtwTraceSession|Remove-AutologgerConfig|Remove-EtwTraceProvider|Remove-EtwTraceSession|Send-EtwTraceSession|Set-AutologgerConfig|Set-EtwTraceProvider|Set-EtwTraceSession|Get-WinAcceptLanguageFromLanguageListOptOut|Get-WinCultureFromLanguageListOptOut|Get-WinDefaultInputMethodOverride|Get-WinHomeLocation|Get-WinLanguageBarOption|Get-WinSystemLocale|Get-WinUILanguageOverride|Get-WinUserLanguageList|New-WinUserLanguageList|Set-Culture|Set-WinAcceptLanguageFromLanguageListOptOut|Set-WinCultureFromLanguageListOptOut|Set-WinDefaultInputMethodOverride|Set-WinHomeLocation|Set-WinLanguageBarOption|Set-WinSystemLocale|Set-WinUILanguageOverride|Set-WinUserLanguageList|Connect-IscsiTarget|Disconnect-IscsiTarget|Get-IscsiConnection|Get-IscsiSession|Get-IscsiTarget|Get-IscsiTargetPortal|New-IscsiTargetPortal|Register-IscsiSession|Remove-IscsiTargetPortal|Set-IscsiChapSecret|Unregister-IscsiSession|Update-IscsiTarget|Update-IscsiTargetPortal|Get-IseSnippet|Import-IseSnippet|New-IseSnippet|Add-KdsRootKey|Clear-KdsCache|Get-KdsConfiguration|Get-KdsRootKey|Set-KdsConfiguration|Test-KdsRootKey|Compress-Archive|Expand-Archive|Export-Counter|Get-Counter|Get-WinEvent|Import-Counter|New-WinEvent|Start-Transcript|Stop-Transcript|Add-Computer|Add-Content|Checkpoint-Computer|Clear-Content|Clear-EventLog|Clear-Item|Clear-ItemProperty|Clear-RecycleBin|Complete-Transaction|Convert-Path|Copy-Item|Copy-ItemProperty|Debug-Process|Disable-ComputerRestore|Enable-ComputerRestore|Get-ChildItem|Get-Clipboard|Get-ComputerRestorePoint|Get-Content|Get-ControlPanelItem|Get-EventLog|Get-HotFix|Get-Item|Get-ItemProperty|Get-ItemPropertyValue|Get-Location|Get-Process|Get-PSDrive|Get-PSProvider|Get-Service|Get-Transaction|Get-WmiObject|Invoke-Item|Invoke-WmiMethod|Join-Path|Limit-EventLog|Move-Item|Move-ItemProperty|New-EventLog|New-Item|New-ItemProperty|New-PSDrive|New-Service|New-WebServiceProxy|Pop-Location|Push-Location|Register-WmiEvent|Remove-Computer|Remove-EventLog|Remove-Item|Remove-ItemProperty|Remove-PSDrive|Remove-WmiObject|Rename-Computer|Rename-Item|Rename-ItemProperty|Reset-ComputerMachinePassword|Resolve-Path|Restart-Computer|Restart-Service|Restore-Computer|Resume-Service|Set-Clipboard|Set-Content|Set-Item|Set-ItemProperty|Set-Location|Set-Service|Set-WmiInstance|Show-ControlPanelItem|Show-EventLog|Split-Path|Start-Process|Start-Service|Start-Transaction|Stop-Computer|Stop-Process|Stop-Service|Suspend-Service|Test-ComputerSecureChannel|Test-Connection|Test-Path|Undo-Transaction|Use-Transaction|Wait-Process|Write-EventLog|Export-ODataEndpointProxy|ConvertFrom-SecureString|ConvertTo-SecureString|Get-Acl|Get-AuthenticodeSignature|Get-CmsMessage|Get-Credential|Get-ExecutionPolicy|Get-PfxCertificate|Protect-CmsMessage|Set-Acl|Set-AuthenticodeSignature|Set-ExecutionPolicy|Unprotect-CmsMessage|ConvertFrom-SddlString|Format-Hex|Get-FileHash|Import-PowerShellDataFile|New-Guid|New-TemporaryFile|Add-Member|Add-Type|Clear-Variable|Compare-Object|ConvertFrom-Csv|ConvertFrom-Json|ConvertFrom-String|ConvertFrom-StringData|Convert-String|ConvertTo-Csv|ConvertTo-Html|ConvertTo-Json|ConvertTo-Xml|Debug-Runspace|Disable-PSBreakpoint|Disable-RunspaceDebug|Enable-PSBreakpoint|Enable-RunspaceDebug|Export-Alias|Export-Clixml|Export-Csv|Export-FormatData|Export-PSSession|Format-Custom|Format-List|Format-Table|Format-Wide|Get-Alias|Get-Culture|Get-Date|Get-Event|Get-EventSubscriber|Get-FormatData|Get-Host|Get-Member|Get-PSBreakpoint|Get-PSCallStack|Get-Random|Get-Runspace|Get-RunspaceDebug|Get-TraceSource|Get-TypeData|Get-UICulture|Get-Unique|Get-Variable|Group-Object|Import-Alias|Import-Clixml|Import-Csv|Import-LocalizedData|Import-PSSession|Invoke-Expression|Invoke-RestMethod|Invoke-WebRequest|Measure-Command|Measure-Object|New-Alias|New-Event|New-Object|New-TimeSpan|New-Variable|Out-File|Out-GridView|Out-Printer|Out-String|Read-Host|Register-EngineEvent|Register-ObjectEvent|Remove-Event|Remove-PSBreakpoint|Remove-TypeData|Remove-Variable|Select-Object|Select-String|Select-Xml|Send-MailMessage|Set-Alias|Set-Date|Set-PSBreakpoint|Set-TraceSource|Set-Variable|Show-Command|Sort-Object|Start-Sleep|Tee-Object|Trace-Command|Unblock-File|Unregister-Event|Update-FormatData|Update-List|Update-TypeData|Wait-Debugger|Wait-Event|Write-Debug|Write-Error|Write-Host|Write-Information|Write-Output|Write-Progress|Write-Verbose|Write-Warning|Connect-WSMan|Disable-WSManCredSSP|Disconnect-WSMan|Enable-WSManCredSSP|Get-WSManCredSSP|Get-WSManInstance|Invoke-WSManAction|New-WSManInstance|New-WSManSessionOption|Remove-WSManInstance|Set-WSManInstance|Set-WSManQuickConfig|Test-WSMan|Debug-MMAppPrelaunch|Disable-MMAgent|Enable-MMAgent|Get-MMAgent|Set-MMAgent|Add-DtcClusterTMMapping|Get-Dtc|Get-DtcAdvancedHostSetting|Get-DtcAdvancedSetting|Get-DtcClusterDefault|Get-DtcClusterTMMapping|Get-DtcDefault|Get-DtcLog|Get-DtcNetworkSetting|Get-DtcTransaction|Get-DtcTransactionsStatistics|Get-DtcTransactionsTraceSession|Get-DtcTransactionsTraceSetting|Install-Dtc|Remove-DtcClusterTMMapping|Reset-DtcLog|Set-DtcAdvancedHostSetting|Set-DtcAdvancedSetting|Set-DtcClusterDefault|Set-DtcClusterTMMapping|Set-DtcDefault|Set-DtcLog|Set-DtcNetworkSetting|Set-DtcTransaction|Set-DtcTransactionsTraceSession|Set-DtcTransactionsTraceSetting|Start-Dtc|Start-DtcTransactionsTraceSession|Stop-Dtc|Stop-DtcTransactionsTraceSession|Test-Dtc|Uninstall-Dtc|Write-DtcTransactionsTraceSession|Complete-DtcDiagnosticTransaction|Join-DtcDiagnosticResourceManager|New-DtcDiagnosticTransaction|Receive-DtcDiagnosticTransaction|Send-DtcDiagnosticTransaction|Start-DtcDiagnosticResourceManager|Stop-DtcDiagnosticResourceManager|Undo-DtcDiagnosticTransaction|Disable-NetAdapter|Disable-NetAdapterBinding|Disable-NetAdapterChecksumOffload|Disable-NetAdapterEncapsulatedPacketTaskOffload|Disable-NetAdapterIPsecOffload|Disable-NetAdapterLso|Disable-NetAdapterPacketDirect|Disable-NetAdapterPowerManagement|Disable-NetAdapterQos|Disable-NetAdapterRdma|Disable-NetAdapterRsc|Disable-NetAdapterRss|Disable-NetAdapterSriov|Disable-NetAdapterVmq|Enable-NetAdapter|Enable-NetAdapterBinding|Enable-NetAdapterChecksumOffload|Enable-NetAdapterEncapsulatedPacketTaskOffload|Enable-NetAdapterIPsecOffload|Enable-NetAdapterLso|Enable-NetAdapterPacketDirect|Enable-NetAdapterPowerManagement|Enable-NetAdapterQos|Enable-NetAdapterRdma|Enable-NetAdapterRsc|Enable-NetAdapterRss|Enable-NetAdapterSriov|Enable-NetAdapterVmq|Get-NetAdapter|Get-NetAdapterAdvancedProperty|Get-NetAdapterBinding|Get-NetAdapterChecksumOffload|Get-NetAdapterEncapsulatedPacketTaskOffload|Get-NetAdapterHardwareInfo|Get-NetAdapterIPsecOffload|Get-NetAdapterLso|Get-NetAdapterPacketDirect|Get-NetAdapterPowerManagement|Get-NetAdapterQos|Get-NetAdapterRdma|Get-NetAdapterRsc|Get-NetAdapterRss|Get-NetAdapterSriov|Get-NetAdapterSriovVf|Get-NetAdapterStatistics|Get-NetAdapterVmq|Get-NetAdapterVmqQueue|Get-NetAdapterVPort|New-NetAdapterAdvancedProperty|Remove-NetAdapterAdvancedProperty|Rename-NetAdapter|Reset-NetAdapterAdvancedProperty|Restart-NetAdapter|Set-NetAdapter|Set-NetAdapterAdvancedProperty|Set-NetAdapterBinding|Set-NetAdapterChecksumOffload|Set-NetAdapterEncapsulatedPacketTaskOffload|Set-NetAdapterIPsecOffload|Set-NetAdapterLso|Set-NetAdapterPacketDirect|Set-NetAdapterPowerManagement|Set-NetAdapterQos|Set-NetAdapterRdma|Set-NetAdapterRsc|Set-NetAdapterRss|Set-NetAdapterSriov|Set-NetAdapterVmq|Get-NetConnectionProfile|Set-NetConnectionProfile|Add-NetEventNetworkAdapter|Add-NetEventPacketCaptureProvider|Add-NetEventProvider|Add-NetEventVmNetworkAdapter|Add-NetEventVmSwitch|Add-NetEventWFPCaptureProvider|Get-NetEventNetworkAdapter|Get-NetEventPacketCaptureProvider|Get-NetEventProvider|Get-NetEventSession|Get-NetEventVmNetworkAdapter|Get-NetEventVmSwitch|Get-NetEventWFPCaptureProvider|New-NetEventSession|Remove-NetEventNetworkAdapter|Remove-NetEventPacketCaptureProvider|Remove-NetEventProvider|Remove-NetEventSession|Remove-NetEventVmNetworkAdapter|Remove-NetEventVmSwitch|Remove-NetEventWFPCaptureProvider|Set-NetEventPacketCaptureProvider|Set-NetEventProvider|Set-NetEventSession|Set-NetEventWFPCaptureProvider|Start-NetEventSession|Stop-NetEventSession|Add-NetLbfoTeamMember|Add-NetLbfoTeamNic|Get-NetLbfoTeam|Get-NetLbfoTeamMember|Get-NetLbfoTeamNic|New-NetLbfoTeam|Remove-NetLbfoTeam|Remove-NetLbfoTeamMember|Remove-NetLbfoTeamNic|Rename-NetLbfoTeam|Set-NetLbfoTeam|Set-NetLbfoTeamMember|Set-NetLbfoTeamNic|Add-NetNatExternalAddress|Add-NetNatStaticMapping|Get-NetNat|Get-NetNatExternalAddress|Get-NetNatGlobal|Get-NetNatSession|Get-NetNatStaticMapping|New-NetNat|Remove-NetNat|Remove-NetNatExternalAddress|Remove-NetNatStaticMapping|Set-NetNat|Set-NetNatGlobal|Get-NetQosPolicy|New-NetQosPolicy|Remove-NetQosPolicy|Set-NetQosPolicy|Copy-NetFirewallRule|Copy-NetIPsecMainModeCryptoSet|Copy-NetIPsecMainModeRule|Copy-NetIPsecPhase1AuthSet|Copy-NetIPsecPhase2AuthSet|Copy-NetIPsecQuickModeCryptoSet|Copy-NetIPsecRule|Disable-NetFirewallRule|Disable-NetIPsecMainModeRule|Disable-NetIPsecRule|Enable-NetFirewallRule|Enable-NetIPsecMainModeRule|Enable-NetIPsecRule|Find-NetIPsecRule|Get-NetFirewallAddressFilter|Get-NetFirewallApplicationFilter|Get-NetFirewallInterfaceFilter|Get-NetFirewallInterfaceTypeFilter|Get-NetFirewallPortFilter|Get-NetFirewallProfile|Get-NetFirewallRule|Get-NetFirewallSecurityFilter|Get-NetFirewallServiceFilter|Get-NetFirewallSetting|Get-NetIPsecDospSetting|Get-NetIPsecMainModeCryptoSet|Get-NetIPsecMainModeRule|Get-NetIPsecMainModeSA|Get-NetIPsecPhase1AuthSet|Get-NetIPsecPhase2AuthSet|Get-NetIPsecQuickModeCryptoSet|Get-NetIPsecQuickModeSA|Get-NetIPsecRule|New-NetFirewallRule|New-NetIPsecDospSetting|New-NetIPsecMainModeCryptoSet|New-NetIPsecMainModeRule|New-NetIPsecPhase1AuthSet|New-NetIPsecPhase2AuthSet|New-NetIPsecQuickModeCryptoSet|New-NetIPsecRule|Open-NetGPO|Remove-NetFirewallRule|Remove-NetIPsecDospSetting|Remove-NetIPsecMainModeCryptoSet|Remove-NetIPsecMainModeRule|Remove-NetIPsecMainModeSA|Remove-NetIPsecPhase1AuthSet|Remove-NetIPsecPhase2AuthSet|Remove-NetIPsecQuickModeCryptoSet|Remove-NetIPsecQuickModeSA|Remove-NetIPsecRule|Rename-NetFirewallRule|Rename-NetIPsecMainModeCryptoSet|Rename-NetIPsecMainModeRule|Rename-NetIPsecPhase1AuthSet|Rename-NetIPsecPhase2AuthSet|Rename-NetIPsecQuickModeCryptoSet|Rename-NetIPsecRule|Save-NetGPO|Set-NetFirewallAddressFilter|Set-NetFirewallApplicationFilter|Set-NetFirewallInterfaceFilter|Set-NetFirewallInterfaceTypeFilter|Set-NetFirewallPortFilter|Set-NetFirewallProfile|Set-NetFirewallRule|Set-NetFirewallSecurityFilter|Set-NetFirewallServiceFilter|Set-NetFirewallSetting|Set-NetIPsecDospSetting|Set-NetIPsecMainModeCryptoSet|Set-NetIPsecMainModeRule|Set-NetIPsecPhase1AuthSet|Set-NetIPsecPhase2AuthSet|Set-NetIPsecQuickModeCryptoSet|Set-NetIPsecRule|Show-NetFirewallRule|Show-NetIPsecRule|Sync-NetIPsecRule|Update-NetIPsecRule|Get-DAPolicyChange|New-NetIPsecAuthProposal|New-NetIPsecMainModeCryptoProposal|New-NetIPsecQuickModeCryptoProposal|Add-NetSwitchTeamMember|Get-NetSwitchTeam|Get-NetSwitchTeamMember|New-NetSwitchTeam|Remove-NetSwitchTeam|Remove-NetSwitchTeamMember|Rename-NetSwitchTeam|Find-NetRoute|Get-NetCompartment|Get-NetIPAddress|Get-NetIPConfiguration|Get-NetIPInterface|Get-NetIPv4Protocol|Get-NetIPv6Protocol|Get-NetNeighbor|Get-NetOffloadGlobalSetting|Get-NetPrefixPolicy|Get-NetRoute|Get-NetTCPConnection|Get-NetTCPSetting|Get-NetTransportFilter|Get-NetUDPEndpoint|Get-NetUDPSetting|New-NetIPAddress|New-NetNeighbor|New-NetRoute|New-NetTransportFilter|Remove-NetIPAddress|Remove-NetNeighbor|Remove-NetRoute|Remove-NetTransportFilter|Set-NetIPAddress|Set-NetIPInterface|Set-NetIPv4Protocol|Set-NetIPv6Protocol|Set-NetNeighbor|Set-NetOffloadGlobalSetting|Set-NetRoute|Set-NetTCPSetting|Set-NetUDPSetting|Test-NetConnection|Get-DAConnectionStatus|Get-NCSIPolicyConfiguration|Reset-NCSIPolicyConfiguration|Set-NCSIPolicyConfiguration|Disable-NetworkSwitchEthernetPort|Disable-NetworkSwitchFeature|Disable-NetworkSwitchVlan|Enable-NetworkSwitchEthernetPort|Enable-NetworkSwitchFeature|Enable-NetworkSwitchVlan|Get-NetworkSwitchEthernetPort|Get-NetworkSwitchFeature|Get-NetworkSwitchGlobalData|Get-NetworkSwitchVlan|New-NetworkSwitchVlan|Remove-NetworkSwitchEthernetPortIPAddress|Remove-NetworkSwitchVlan|Restore-NetworkSwitchConfiguration|Save-NetworkSwitchConfiguration|Set-NetworkSwitchEthernetPortIPAddress|Set-NetworkSwitchPortMode|Set-NetworkSwitchPortProperty|Set-NetworkSwitchVlanProperty|Add-NetIPHttpsCertBinding|Disable-NetDnsTransitionConfiguration|Disable-NetIPHttpsProfile|Disable-NetNatTransitionConfiguration|Enable-NetDnsTransitionConfiguration|Enable-NetIPHttpsProfile|Enable-NetNatTransitionConfiguration|Get-Net6to4Configuration|Get-NetDnsTransitionConfiguration|Get-NetDnsTransitionMonitoring|Get-NetIPHttpsConfiguration|Get-NetIPHttpsState|Get-NetIsatapConfiguration|Get-NetNatTransitionConfiguration|Get-NetNatTransitionMonitoring|Get-NetTeredoConfiguration|Get-NetTeredoState|New-NetIPHttpsConfiguration|New-NetNatTransitionConfiguration|Remove-NetIPHttpsCertBinding|Remove-NetIPHttpsConfiguration|Remove-NetNatTransitionConfiguration|Rename-NetIPHttpsConfiguration|Reset-Net6to4Configuration|Reset-NetDnsTransitionConfiguration|Reset-NetIPHttpsConfiguration|Reset-NetIsatapConfiguration|Reset-NetTeredoConfiguration|Set-Net6to4Configuration|Set-NetDnsTransitionConfiguration|Set-NetIPHttpsConfiguration|Set-NetIsatapConfiguration|Set-NetNatTransitionConfiguration|Set-NetTeredoConfiguration|Find-Package|Find-PackageProvider|Get-Package|Get-PackageProvider|Get-PackageSource|Import-PackageProvider|Install-Package|Install-PackageProvider|Register-PackageSource|Save-Package|Set-PackageSource|Uninstall-Package|Unregister-PackageSource|Clear-PcsvDeviceLog|Get-PcsvDevice|Get-PcsvDeviceLog|Restart-PcsvDevice|Set-PcsvDeviceBootConfiguration|Set-PcsvDeviceNetworkConfiguration|Set-PcsvDeviceUserPassword|Start-PcsvDevice|Stop-PcsvDevice|AfterAll|AfterEach|Assert-MockCalled|Assert-VerifiableMocks|BeforeAll|BeforeEach|Context|Describe|Get-MockDynamicParameters|Get-TestDriveItem|In|InModuleScope|Invoke-Mock|Invoke-Pester|It|Mock|New-Fixture|Set-DynamicParameterVariables|Setup|Should|Add-CertificateEnrollmentPolicyServer|Export-Certificate|Export-PfxCertificate|Get-Certificate|Get-CertificateAutoEnrollmentPolicy|Get-CertificateEnrollmentPolicyServer|Get-CertificateNotificationTask|Get-PfxData|Import-Certificate|Import-PfxCertificate|New-CertificateNotificationTask|New-SelfSignedCertificate|Remove-CertificateEnrollmentPolicyServer|Remove-CertificateNotificationTask|Set-CertificateAutoEnrollmentPolicy|Switch-Certificate|Test-Certificate|Disable-PnpDevice|Enable-PnpDevice|Get-PnpDevice|Get-PnpDeviceProperty|Find-DscResource|Find-Module|Find-Script|Get-InstalledModule|Get-InstalledScript|Get-PSRepository|Install-Module|Install-Script|New-ScriptFileInfo|Publish-Module|Publish-Script|Register-PSRepository|Save-Module|Save-Script|Set-PSRepository|Test-ScriptFileInfo|Uninstall-Module|Uninstall-Script|Unregister-PSRepository|Update-Module|Update-ModuleManifest|Update-Script|Update-ScriptFileInfo|Add-Printer|Add-PrinterDriver|Add-PrinterPort|Get-PrintConfiguration|Get-Printer|Get-PrinterDriver|Get-PrinterPort|Get-PrinterProperty|Get-PrintJob|Read-PrinterNfcTag|Remove-Printer|Remove-PrinterDriver|Remove-PrinterPort|Remove-PrintJob|Rename-Printer|Restart-PrintJob|Resume-PrintJob|Set-PrintConfiguration|Set-Printer|Set-PrinterProperty|Suspend-PrintJob|Write-PrinterNfcTag|Configuration|Disable-DscDebug|Enable-DscDebug|Get-DscConfiguration|Get-DscConfigurationStatus|Get-DscLocalConfigurationManager|Get-DscResource|New-DscChecksum|Remove-DscConfigurationDocument|Restore-DscConfiguration|Stop-DscConfiguration|Invoke-DscResource|Publish-DscConfiguration|Set-DscLocalConfigurationManager|Start-DscConfiguration|Test-DscConfiguration|Update-DscConfiguration|Disable-PSTrace|Disable-PSWSManCombinedTrace|Disable-WSManTrace|Enable-PSTrace|Enable-PSWSManCombinedTrace|Enable-WSManTrace|Get-LogProperties|Set-LogProperties|Start-Trace|Stop-Trace|PSConsoleHostReadline|Get-PSReadlineKeyHandler|Get-PSReadlineOption|Remove-PSReadlineKeyHandler|Set-PSReadlineKeyHandler|Set-PSReadlineOption|Add-JobTrigger|Disable-JobTrigger|Disable-ScheduledJob|Enable-JobTrigger|Enable-ScheduledJob|Get-JobTrigger|Get-ScheduledJob|Get-ScheduledJobOption|New-JobTrigger|New-ScheduledJobOption|Register-ScheduledJob|Remove-JobTrigger|Set-JobTrigger|Set-ScheduledJob|Set-ScheduledJobOption|Unregister-ScheduledJob|New-PSWorkflowSession|New-PSWorkflowExecutionOption|Invoke-AsWorkflow|Disable-ScheduledTask|Enable-ScheduledTask|Export-ScheduledTask|Get-ClusteredScheduledTask|Get-ScheduledTask|Get-ScheduledTaskInfo|New-ScheduledTask|New-ScheduledTaskAction|New-ScheduledTaskPrincipal|New-ScheduledTaskSettingsSet|New-ScheduledTaskTrigger|Register-ClusteredScheduledTask|Register-ScheduledTask|Set-ClusteredScheduledTask|Set-ScheduledTask|Start-ScheduledTask|Stop-ScheduledTask|Unregister-ClusteredScheduledTask|Unregister-ScheduledTask|Confirm-SecureBootUEFI|Format-SecureBootUEFI|Get-SecureBootPolicy|Get-SecureBootUEFI|Set-SecureBootUEFI|Block-SmbShareAccess|Close-SmbOpenFile|Close-SmbSession|Disable-SmbDelegation|Enable-SmbDelegation|Get-SmbBandwidthLimit|Get-SmbClientConfiguration|Get-SmbClientNetworkInterface|Get-SmbConnection|Get-SmbDelegation|Get-SmbMapping|Get-SmbMultichannelConnection|Get-SmbMultichannelConstraint|Get-SmbOpenFile|Get-SmbServerConfiguration|Get-SmbServerNetworkInterface|Get-SmbSession|Get-SmbShare|Get-SmbShareAccess|Grant-SmbShareAccess|New-SmbMapping|New-SmbMultichannelConstraint|New-SmbShare|Remove-SmbBandwidthLimit|Remove-SmbMapping|Remove-SmbMultichannelConstraint|Remove-SmbShare|Revoke-SmbShareAccess|Set-SmbBandwidthLimit|Set-SmbClientConfiguration|Set-SmbPathAcl|Set-SmbServerConfiguration|Set-SmbShare|Unblock-SmbShareAccess|Update-SmbMultichannelConnection|Move-SmbClient|Get-SmbWitnessClient|Move-SmbWitnessClient|Get-StartApps|Export-StartLayout|Import-StartLayout|Disable-PhysicalDiskIndication|Disable-StorageDiagnosticLog|Enable-PhysicalDiskIndication|Enable-StorageDiagnosticLog|Flush-Volume|Get-DiskSNV|Get-PhysicalDiskSNV|Get-StorageEnclosureSNV|Initialize-Volume|Write-FileSystemCache|Add-InitiatorIdToMaskingSet|Add-PartitionAccessPath|Add-PhysicalDisk|Add-TargetPortToMaskingSet|Add-VirtualDiskToMaskingSet|Block-FileShareAccess|Clear-Disk|Clear-FileStorageTier|Clear-StorageDiagnosticInfo|Connect-VirtualDisk|Debug-FileShare|Debug-StorageSubSystem|Debug-Volume|Disable-PhysicalDiskIdentification|Disable-StorageEnclosureIdentification|Disable-StorageHighAvailability|Disconnect-VirtualDisk|Dismount-DiskImage|Enable-PhysicalDiskIdentification|Enable-StorageEnclosureIdentification|Enable-StorageHighAvailability|Format-Volume|Get-DedupProperties|Get-Disk|Get-DiskImage|Get-DiskStorageNodeView|Get-FileIntegrity|Get-FileShare|Get-FileShareAccessControlEntry|Get-FileStorageTier|Get-InitiatorId|Get-InitiatorPort|Get-MaskingSet|Get-OffloadDataTransferSetting|Get-Partition|Get-PartitionSupportedSize|Get-PhysicalDisk|Get-PhysicalDiskStorageNodeView|Get-ResiliencySetting|Get-StorageAdvancedProperty|Get-StorageDiagnosticInfo|Get-StorageEnclosure|Get-StorageEnclosureStorageNodeView|Get-StorageEnclosureVendorData|Get-StorageFaultDomain|Get-StorageFileServer|Get-StorageFirmwareInformation|Get-StorageHealthAction|Get-StorageHealthReport|Get-StorageHealthSetting|Get-StorageJob|Get-StorageNode|Get-StoragePool|Get-StorageProvider|Get-StorageReliabilityCounter|Get-StorageSetting|Get-StorageSubSystem|Get-StorageTier|Get-StorageTierSupportedSize|Get-SupportedClusterSizes|Get-SupportedFileSystems|Get-TargetPort|Get-TargetPortal|Get-VirtualDisk|Get-VirtualDiskSupportedSize|Get-Volume|Get-VolumeCorruptionCount|Get-VolumeScrubPolicy|Grant-FileShareAccess|Hide-VirtualDisk|Initialize-Disk|Mount-DiskImage|New-FileShare|New-MaskingSet|New-Partition|New-StorageFileServer|New-StoragePool|New-StorageSubsystemVirtualDisk|New-StorageTier|New-VirtualDisk|New-VirtualDiskClone|New-VirtualDiskSnapshot|New-Volume|Optimize-StoragePool|Optimize-Volume|Register-StorageSubsystem|Remove-FileShare|Remove-InitiatorId|Remove-InitiatorIdFromMaskingSet|Remove-MaskingSet|Remove-Partition|Remove-PartitionAccessPath|Remove-PhysicalDisk|Remove-StorageFileServer|Remove-StorageHealthSetting|Remove-StoragePool|Remove-StorageTier|Remove-TargetPortFromMaskingSet|Remove-VirtualDisk|Remove-VirtualDiskFromMaskingSet|Rename-MaskingSet|Repair-FileIntegrity|Repair-VirtualDisk|Repair-Volume|Reset-PhysicalDisk|Reset-StorageReliabilityCounter|Resize-Partition|Resize-StorageTier|Resize-VirtualDisk|Revoke-FileShareAccess|Set-Disk|Set-FileIntegrity|Set-FileShare|Set-FileStorageTier|Set-InitiatorPort|Set-Partition|Set-PhysicalDisk|Set-ResiliencySetting|Set-StorageFileServer|Set-StorageHealthSetting|Set-StoragePool|Set-StorageProvider|Set-StorageSetting|Set-StorageSubSystem|Set-StorageTier|Set-VirtualDisk|Set-Volume|Set-VolumeScrubPolicy|Show-VirtualDisk|Start-StorageDiagnosticLog|Stop-StorageDiagnosticLog|Stop-StorageJob|Unblock-FileShareAccess|Unregister-StorageSubsystem|Update-Disk|Update-HostStorageCache|Update-StorageFirmware|Update-StoragePool|Update-StorageProviderCache|Write-VolumeCache|Disable-TlsCipherSuite|Disable-TlsSessionTicketKey|Enable-TlsCipherSuite|Enable-TlsSessionTicketKey|Export-TlsSessionTicketKey|Get-TlsCipherSuite|New-TlsSessionTicketKey|Get-TroubleshootingPack|Invoke-TroubleshootingPack|Clear-Tpm|ConvertTo-TpmOwnerAuth|Disable-TpmAutoProvisioning|Enable-TpmAutoProvisioning|Get-Tpm|Get-TpmEndorsementKeyInfo|Get-TpmSupportedFeature|Import-TpmOwnerAuth|Initialize-Tpm|Set-TpmOwnerAuth|Unblock-Tpm|Add-VpnConnection|Add-VpnConnectionRoute|Add-VpnConnectionTriggerApplication|Add-VpnConnectionTriggerDnsConfiguration|Add-VpnConnectionTriggerTrustedNetwork|Get-VpnConnection|Get-VpnConnectionTrigger|New-EapConfiguration|New-VpnServerAddress|Remove-VpnConnection|Remove-VpnConnectionRoute|Remove-VpnConnectionTriggerApplication|Remove-VpnConnectionTriggerDnsConfiguration|Remove-VpnConnectionTriggerTrustedNetwork|Set-VpnConnection|Set-VpnConnectionIPsecConfiguration|Set-VpnConnectionProxy|Set-VpnConnectionTriggerDnsConfiguration|Set-VpnConnectionTriggerTrustedNetwork|Add-OdbcDsn|Disable-OdbcPerfCounter|Disable-WdacBidTrace|Enable-OdbcPerfCounter|Enable-WdacBidTrace|Get-OdbcDriver|Get-OdbcDsn|Get-OdbcPerfCounter|Get-WdacBidTrace|Remove-OdbcDsn|Set-OdbcDriver|Set-OdbcDsn|Get-WindowsDeveloperLicense|Show-WindowsDeveloperLicenseRegistration|Unregister-WindowsDeveloperLicense|Disable-WindowsErrorReporting|Enable-WindowsErrorReporting|Get-WindowsErrorReporting|Get-WindowsSearchSetting|Set-WindowsSearchSetting|Get-WindowsUpdateLog",n=this.createKeywordMapper({"support.function":t,keyword:e},"identifier"),r="eq|ne|gt|lt|le|ge|like|notlike|match|notmatch|contains|notcontains|in|notin|band|bor|bxor|bnot|ceq|cne|cgt|clt|cle|cge|clike|cnotlike|cmatch|cnotmatch|ccontains|cnotcontains|cin|cnotin|ieq|ine|igt|ilt|ile|ige|ilike|inotlike|imatch|inotmatch|icontains|inotcontains|iin|inotin|and|or|xor|not|split|join|replace|f|csplit|creplace|isplit|ireplace|is|isnot|as|shl|shr";this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"comment.start",regex:"<#",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"[$](?:[Tt]rue|[Ff]alse)\\b"},{token:"constant.language",regex:"[$][Nn]ull\\b"},{token:"variable.instance",regex:"[$][a-zA-Z][a-zA-Z0-9_]*\\b"},{token:n,regex:"[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b"},{token:"keyword.operator",regex:"\\-(?:"+r+")"},{token:"keyword.operator",regex:"&|\\+|\\-|\\*|\\/|\\%|\\=|\\>|\\&|\\!|\\|"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment.end",regex:"#>",next:"start"},{token:"doc.comment.tag",regex:"^\\.\\w+"},{defaultToken:"comment"}]}};r.inherits(s,i),t.PowershellHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/powershell",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/powershell_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./powershell_highlight_rules").PowershellHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a({start:"^\\s*(<#)",end:"^[#\\s]>\\s*$"})};r.inherits(f,i),function(){this.lineCommentStart="#",this.blockComment={start:"<#",end:"#>"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){return null},this.$id="ace/mode/powershell"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-praat.js b/library/ace/mode-praat.js
new file mode 100644
index 000000000..a4c87bfa6
--- /dev/null
+++ b/library/ace/mode-praat.js
@@ -0,0 +1 @@
+ace.define("ace/mode/praat_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="if|then|else|elsif|elif|endif|fi|endfor|endproc|while|endwhile|repeat|until|select|plus|minus|assert|asserterror",t="macintosh|windows|unix|praatVersion|praatVersion\\$pi|undefined|newline\\$|tab\\$|shellDirectory\\$|homeDirectory\\$|preferencesDirectory\\$|temporaryDirectory\\$|defaultDirectory\\$",n="clearinfo|endSendPraat",r="writeInfo|writeInfoLine|appendInfo|appendInfoLine|info\\$|writeFile|writeFileLine|appendFile|appendFileLine|abs|round|floor|ceiling|min|max|imin|imax|sqrt|sin|cos|tan|arcsin|arccos|arctan|arctan2|sinc|sincpi|exp|ln|lnBeta|lnGamma|log10|log2|sinh|cosh|tanh|arcsinh|arccosh|arctanh|sigmoid|invSigmoid|erf|erfc|random(?:Uniform|Integer|Gauss|Poisson|Binomial)|gaussP|gaussQ|invGaussQ|incompleteGammaP|incompleteBeta|chiSquareP|chiSquareQ|invChiSquareQ|studentP|studentQ|invStudentQ|fisherP|fisherQ|invFisherQ|binomialP|binomialQ|invBinomialP|invBinomialQ|hertzToBark|barkToHerz|hertzToMel|melToHertz|hertzToSemitones|semitonesToHerz|erb|hertzToErb|erbToHertz|phonToDifferenceLimens|differenceLimensToPhon|soundPressureToPhon|beta|beta2|besselI|besselK|numberOfColumns|numberOfRows|selected|selected\\$|numberOfSelected|variableExists|index|rindex|startsWith|endsWith|index_regex|rindex_regex|replace_regex\\$|length|extractWord\\$|extractLine\\$|extractNumber|left\\$|right\\$|mid\\$|replace\\$|date\\$|fixed\\$|percent\\$|zero#|linear#|randomUniform#|randomInteger#|randomGauss#|beginPause|endPause|demoShow|demoWindowTitle|demoInput|demoWaitForInput|demoClicked|demoClickedIn|demoX|demoY|demoKeyPressed|demoKey\\$|demoExtraControlKeyPressed|demoShiftKeyPressed|demoCommandKeyPressed|demoOptionKeyPressed|environment\\$|chooseReadFile\\$|chooseDirectory\\$|createDirectory|fileReadable|deleteFile|selectObject|removeObject|plusObject|minusObject|runScript|exitScript|beginSendPraat|endSendPraat|objectsAreIdentical",i="Activation|AffineTransform|AmplitudeTier|Art|Artword|Autosegment|BarkFilter|CCA|Categories|Cepstrum|Cepstrumc|ChebyshevSeries|ClassificationTable|Cochleagram|Collection|Configuration|Confusion|ContingencyTable|Corpus|Correlation|Covariance|CrossCorrelationTable|CrossCorrelationTables|DTW|Diagonalizer|Discriminant|Dissimilarity|Distance|Distributions|DurationTier|EEG|ERP|ERPTier|Eigen|Excitation|Excitations|ExperimentMFC|FFNet|FeatureWeights|Formant|FormantFilter|FormantGrid|FormantPoint|FormantTier|GaussianMixture|HMM|HMM_Observation|HMM_ObservationSequence|HMM_State|HMM_StateSequence|Harmonicity|ISpline|Index|Intensity|IntensityTier|IntervalTier|KNN|KlattGrid|KlattTable|LFCC|LPC|Label|LegendreSeries|LinearRegression|LogisticRegression|LongSound|Ltas|MFCC|MSpline|ManPages|Manipulation|Matrix|MelFilter|MixingMatrix|Movie|Network|OTGrammar|OTHistory|OTMulti|PCA|PairDistribution|ParamCurve|Pattern|Permutation|Pitch|PitchTier|PointProcess|Polygon|Polynomial|Procrustes|RealPoint|RealTier|ResultsMFC|Roots|SPINET|SSCP|SVD|Salience|ScalarProduct|Similarity|SimpleString|SortedSetOfString|Sound|Speaker|Spectrogram|Spectrum|SpectrumTier|SpeechSynthesizer|SpellingChecker|Strings|StringsIndex|Table|TableOfReal|TextGrid|TextInterval|TextPoint|TextTier|Tier|Transition|VocalTract|Weight|WordList";this.$rules={start:[{token:"string.interpolated",regex:/'((?:[a-z][a-zA-Z0-9_]*)(?:\$|#|:[0-9]+)?)'/},{token:["text","text","keyword.operator","text","keyword"],regex:/(^\s*)(?:([a-z][a-zA-Z0-9_]*\$?\s+)(=)(\s+))?(stopwatch)/},{token:["text","keyword","text","string"],regex:/(^\s*)(print(?:line|tab)?|echo|exit|pause|send(?:praat|socket)|include|execute|system(?:_nocheck)?)(\s+)(.*)/},{token:["text","keyword"],regex:"(^\\s*)("+n+")$"},{token:["text","keyword.operator","text"],regex:/(\s+)((?:\+|-|\/|\*|<|>)=?|==?|!=|%|\^|\||and|or|not)(\s+)/},{token:["text","text","keyword.operator","text","keyword","text","keyword"],regex:/(^\s*)(?:([a-z][a-zA-Z0-9_]*\$?\s+)(=)(\s+))?(?:((?:no)?warn|(?:unix_)?nocheck|noprogress)(\s+))?((?:[A-Z][^.:"]+)(?:$|(?:\.{3}|:)))/},{token:["text","keyword","text","keyword"],regex:/(^\s*)(?:(demo)?(\s+))((?:[A-Z][^.:"]+)(?:$|(?:\.{3}|:)))/},{token:["text","keyword","text","keyword"],regex:/^(\s*)(?:(demo)(\s+))?(10|12|14|16|24)$/},{token:["text","support.function","text"],regex:/(\s*)(do\$?)(\s*:\s*|\s*\(\s*)/},{token:"entity.name.type",regex:"("+i+")"},{token:"variable.language",regex:"("+t+")"},{token:["support.function","text"],regex:"((?:"+r+")\\$?)(\\s*(?::|\\())"},{token:"keyword",regex:/(\bfor\b)/,next:"for"},{token:"keyword",regex:"(\\b(?:"+e+")\\b)"},{token:"string",regex:/"[^"]*"/},{token:"string",regex:/"[^"]*$/,next:"brokenstring"},{token:["text","keyword","text","entity.name.section"],regex:/(^\s*)(\bform\b)(\s+)(.*)/,next:"form"},{token:"constant.numeric",regex:/\b[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["keyword","text","entity.name.function"],regex:/(procedure)(\s+)(\S+)/},{token:["entity.name.function","text"],regex:/(@\S+)(:|\s*\()/},{token:["text","keyword","text","entity.name.function"],regex:/(^\s*)(call)(\s+)(\S+)/},{token:"comment",regex:/(^\s*#|;).*$/},{token:"text",regex:/\s+/}],form:[{token:["keyword","text","constant.numeric"],regex:/((?:optionmenu|choice)\s+)(\S+:\s+)([0-9]+)/},{token:["keyword","constant.numeric"],regex:/((?:option|button)\s+)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b)/},{token:["keyword","string"],regex:/((?:option|button)\s+)(.*)/},{token:["keyword","text","string"],regex:/((?:sentence|text)\s+)(\S+\s*)(.*)/},{token:["keyword","text","string","invalid.illegal"],regex:/(word\s+)(\S+\s*)(\S+)?(\s.*)?/},{token:["keyword","text","constant.language"],regex:/(boolean\s+)(\S+\s*)(0|1|"?(?:yes|no)"?)/},{token:["keyword","text","constant.numeric"],regex:/((?:real|natural|positive|integer)\s+)(\S+\s*)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b)/},{token:["keyword","string"],regex:/(comment\s+)(.*)/},{token:"keyword",regex:"endform",next:"start"}],"for":[{token:["keyword","text","constant.numeric","text"],regex:/(from|to)(\s+)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?)(\s*)/},{token:["keyword","text"],regex:/(from|to)(\s+\S+\s*)/},{token:"text",regex:/$/,next:"start"}],brokenstring:[{token:["text","string"],regex:/(\s*\.{3})([^"]*)/},{token:"string",regex:/"/,next:"start"}]}};r.inherits(s,i),t.PraatHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/praat",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/praat_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./praat_highlight_rules").PraatHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o};r.inherits(f,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[\:]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/praat"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-prolog.js b/library/ace/mode-prolog.js
new file mode 100644
index 000000000..81a71ab6e
--- /dev/null
+++ b/library/ace/mode-prolog.js
@@ -0,0 +1 @@
+ace.define("ace/mode/prolog_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#comment"},{include:"#basic_fact"},{include:"#rule"},{include:"#directive"},{include:"#fact"}],"#atom":[{token:"constant.other.atom.prolog",regex:"\\b[a-z][a-zA-Z0-9_]*\\b"},{token:"constant.numeric.prolog",regex:"-?\\d+(?:\\.\\d+)?"},{include:"#string"}],"#basic_elem":[{include:"#comment"},{include:"#statement"},{include:"#constants"},{include:"#operators"},{include:"#builtins"},{include:"#list"},{include:"#atom"},{include:"#variable"}],"#basic_fact":[{token:["entity.name.function.fact.basic.prolog","punctuation.end.fact.basic.prolog"],regex:"([a-z]\\w*)(\\.)"}],"#builtins":[{token:"support.function.builtin.prolog",regex:"\\b(?:abolish|abort|ancestors|arg|ascii|assert[az]|atom(?:ic)?|body|char|close|conc|concat|consult|define|definition|dynamic|dump|fail|file|free|free_proc|functor|getc|goal|halt|head|head|integer|length|listing|match_args|member|next_clause|nl|nonvar|nth|number|cvars|nvars|offset|op|print?|prompt|putc|quoted|ratom|read|redefine|rename|retract(?:all)?|see|seeing|seen|skip|spy|statistics|system|tab|tell|telling|term|time|told|univ|unlink_clause|unspy_predicate|var|write)\\b"}],"#comment":[{token:["punctuation.definition.comment.prolog","comment.line.percentage.prolog"],regex:"(%)(.*$)"},{token:"punctuation.definition.comment.prolog",regex:"/\\*",push:[{token:"punctuation.definition.comment.prolog",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.prolog"}]}],"#constants":[{token:"constant.language.prolog",regex:"\\b(?:true|false|yes|no)\\b"}],"#directive":[{token:"keyword.operator.directive.prolog",regex:":-",push:[{token:"meta.directive.prolog",regex:"\\.",next:"pop"},{include:"#comment"},{include:"#statement"},{defaultToken:"meta.directive.prolog"}]}],"#expr":[{include:"#comments"},{token:"meta.expression.prolog",regex:"\\(",push:[{token:"meta.expression.prolog",regex:"\\)",next:"pop"},{include:"#expr"},{defaultToken:"meta.expression.prolog"}]},{token:"keyword.control.cutoff.prolog",regex:"!"},{token:"punctuation.control.and.prolog",regex:","},{token:"punctuation.control.or.prolog",regex:";"},{include:"#basic_elem"}],"#fact":[{token:["entity.name.function.fact.prolog","punctuation.begin.fact.parameters.prolog"],regex:"([a-z]\\w*)(\\()(?!.*:-)",push:[{token:["punctuation.end.fact.parameters.prolog","punctuation.end.fact.prolog"],regex:"(\\))(\\.?)",next:"pop"},{include:"#parameter"},{defaultToken:"meta.fact.prolog"}]}],"#list":[{token:"punctuation.begin.list.prolog",regex:"\\[(?=.*\\])",push:[{token:"punctuation.end.list.prolog",regex:"\\]",next:"pop"},{include:"#comment"},{token:"punctuation.separator.list.prolog",regex:","},{token:"punctuation.concat.list.prolog",regex:"\\|",push:[{token:"meta.list.concat.prolog",regex:"(?=\\s*\\])",next:"pop"},{include:"#basic_elem"},{defaultToken:"meta.list.concat.prolog"}]},{include:"#basic_elem"},{defaultToken:"meta.list.prolog"}]}],"#operators":[{token:"keyword.operator.prolog",regex:"\\\\\\+|\\bnot\\b|\\bis\\b|->|[><]|[><\\\\:=]?=|(?:=\\\\|\\\\=)="}],"#parameter":[{token:"variable.language.anonymous.prolog",regex:"\\b_\\b"},{token:"variable.parameter.prolog",regex:"\\b[A-Z_]\\w*\\b"},{token:"punctuation.separator.parameters.prolog",regex:","},{include:"#basic_elem"},{token:"text",regex:"[^\\s]"}],"#rule":[{token:"meta.rule.prolog",regex:"(?=[a-z]\\w*.*:-)",push:[{token:"punctuation.rule.end.prolog",regex:"\\.",next:"pop"},{token:"meta.rule.signature.prolog",regex:"(?=[a-z]\\w*.*:-)",push:[{token:"meta.rule.signature.prolog",regex:"(?=:-)",next:"pop"},{token:"entity.name.function.rule.prolog",regex:"[a-z]\\w*(?=\\(|\\s*:-)"},{token:"punctuation.rule.parameters.begin.prolog",regex:"\\(",push:[{token:"punctuation.rule.parameters.end.prolog",regex:"\\)",next:"pop"},{include:"#parameter"},{defaultToken:"meta.rule.parameters.prolog"}]},{defaultToken:"meta.rule.signature.prolog"}]},{token:"keyword.operator.definition.prolog",regex:":-",push:[{token:"meta.rule.definition.prolog",regex:"(?=\\.)",next:"pop"},{include:"#comment"},{include:"#expr"},{defaultToken:"meta.rule.definition.prolog"}]},{defaultToken:"meta.rule.prolog"}]}],"#statement":[{token:"meta.statement.prolog",regex:"(?=[a-z]\\w*\\()",push:[{token:"punctuation.end.statement.parameters.prolog",regex:"\\)",next:"pop"},{include:"#builtins"},{include:"#atom"},{token:"punctuation.begin.statement.parameters.prolog",regex:"\\(",push:[{token:"meta.statement.parameters.prolog",regex:"(?=\\))",next:"pop"},{token:"punctuation.separator.statement.prolog",regex:","},{include:"#basic_elem"},{defaultToken:"meta.statement.parameters.prolog"}]},{defaultToken:"meta.statement.prolog"}]}],"#string":[{token:"punctuation.definition.string.begin.prolog",regex:"'",push:[{token:"punctuation.definition.string.end.prolog",regex:"'",next:"pop"},{token:"constant.character.escape.prolog",regex:"\\\\."},{token:"constant.character.escape.quote.prolog",regex:"''"},{defaultToken:"string.quoted.single.prolog"}]}],"#variable":[{token:"variable.language.anonymous.prolog",regex:"\\b_\\b"},{token:"variable.other.prolog",regex:"\\b[A-Z_][a-zA-Z0-9_]*\\b"}]},this.normalizeRules()};s.metaData={fileTypes:["plg","prolog"],foldingStartMarker:"(%\\s*region \\w*)|([a-z]\\w*.*:- ?)",foldingStopMarker:"(%\\s*end(\\s*region)?)|(?=\\.)",keyEquivalent:"^~P",name:"Prolog",scopeName:"source.prolog"},r.inherits(s,i),t.PrologHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/prolog",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/prolog_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./prolog_highlight_rules").PrologHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="%",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/prolog"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-properties.js b/library/ace/mode-properties.js
new file mode 100644
index 000000000..bccfa478e
--- /dev/null
+++ b/library/ace/mode-properties.js
@@ -0,0 +1 @@
+ace.define("ace/mode/properties_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=/\\u[0-9a-fA-F]{4}|\\/;this.$rules={start:[{token:"comment",regex:/[!#].*$/},{token:"keyword",regex:/[=:]$/},{token:"keyword",regex:/[=:]/,next:"value"},{token:"constant.language.escape",regex:e},{defaultToken:"variable"}],value:[{regex:/\\$/,token:"string",next:"value"},{regex:/$/,token:"string",next:"start"},{token:"constant.language.escape",regex:e},{defaultToken:"string"}]}};r.inherits(s,i),t.PropertiesHighlightRules=s}),ace.define("ace/mode/properties",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/properties_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./properties_highlight_rules").PropertiesHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.$id="ace/mode/properties"}.call(o.prototype),t.Mode=o}) \ No newline at end of file
diff --git a/library/ace/mode-protobuf.js b/library/ace/mode-protobuf.js
new file mode 100644
index 000000000..476d47f8b
--- /dev/null
+++ b/library/ace/mode-protobuf.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",u=function(){var e="break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",t="asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",n="const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",r="and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eqconst_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",s="NULL|true|false|TRUE|FALSE|nullptr",u=this.$keywords=this.createKeywordMapper({"keyword.control":e,"storage.type":t,"storage.modifier":n,"keyword.operator":r,"variable.language":"this","constant.language":s},"identifier"),a="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Zd\\$_\u00a1-\uffff]*\\b",f=/\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source;this.$rules={start:[{token:"comment",regex:"//$",next:"start"},{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:"'(?:"+f+"|.)'"},{token:"string.start",regex:'"',stateName:"qqstring",next:[{token:"string",regex:/\\\s*$/,next:"qqstring"},{token:"constant.language.escape",regex:f},{token:"constant.language.escape",regex:/%[^'"\\]/},{token:"string.end",regex:'"|$',next:"start"},{defaultToken:"string"}]},{token:"string.start",regex:'R"\\(',stateName:"rawString",next:[{token:"string.end",regex:'\\)"',next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:"support.function.C99.c",regex:o},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"},{token:"keyword.operator",regex:/--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(u,s),t.c_cppHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c_cpp_highlight_rules").c_cppHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c_cpp"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/protobuf_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes",t="message|required|optional|repeated|package|import|option|enum",n=this.createKeywordMapper({"keyword.declaration.protobuf":t,"support.type":e},"identifier");this.$rules={start:[{token:"comment",regex:/\/\/.*$/},{token:"comment",regex:/\/\*/,next:"comment"},{token:"constant",regex:"<[^>]+>"},{regex:"=",token:"keyword.operator.assignment.protobuf"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:n,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.normalizeRules()};r.inherits(s,i),t.ProtobufHighlightRules=s}),ace.define("ace/mode/protobuf",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/protobuf_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./c_cpp").Mode,s=e("./protobuf_highlight_rules").ProtobufHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){i.call(this),this.foldingRules=new o,this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/protobuf"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-python.js b/library/ace/mode-python.js
new file mode 100644
index 000000000..f80eb0e8a
--- /dev/null
+++ b/library/ace/mode-python.js
@@ -0,0 +1 @@
+ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield",t="True|False|None|NotImplemented|Ellipsis|__debug__",n="abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|set|apply|delattr|help|next|setattr|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern",r=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":n,"constant.language":t,keyword:e},"identifier"),i="(?:r|u|ur|R|U|UR|Ur|uR)?",s="(?:(?:[1-9]\\d*)|(?:0))",o="(?:0[oO]?[0-7]+)",u="(?:0[xX][\\dA-Fa-f]+)",a="(?:0[bB][01]+)",f="(?:"+s+"|"+o+"|"+u+"|"+a+")",l="(?:[eE][+-]?\\d+)",c="(?:\\.\\d+)",h="(?:\\d+)",p="(?:(?:"+h+"?"+c+")|(?:"+h+"\\.))",d="(?:(?:"+p+"|"+h+")"+l+")",v="(?:"+d+"|"+p+")",m="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"string",regex:i+'"{3}',next:"qqstring3"},{token:"string",regex:i+'"(?=.)',next:"qqstring"},{token:"string",regex:i+"'{3}",next:"qstring3"},{token:"string",regex:i+"'(?=.)",next:"qstring"},{token:"constant.numeric",regex:"(?:"+v+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:v},{token:"constant.numeric",regex:f+"[lL]\\b"},{token:"constant.numeric",regex:f+"\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+"}],qqstring3:[{token:"constant.language.escape",regex:m},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qstring3:[{token:"constant.language.escape",regex:m},{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:m},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:m},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.PythonHighlightRules=s}),ace.define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){this.foldingStartMarker=new RegExp("([\\[{])(?:\\s*)$|("+e+")(?:\\s*)(?:#.*)?$")};r.inherits(s,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i=r.match(this.foldingStartMarker);if(i)return i[1]?this.openingBracketBlock(e,i[1],n,i.index):i[2]?this.indentationBlock(e,n,i.index+i[2].length):this.indentationBlock(e,n)}}.call(s.prototype)}),ace.define("ace/mode/python",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/python_highlight_rules","ace/mode/folding/pythonic","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./python_highlight_rules").PythonHighlightRules,o=e("./folding/pythonic").FoldMode,u=e("../range").Range,a=function(){this.HighlightRules=s,this.foldingRules=new o("\\:")};r.inherits(a,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[\:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new u(n,r.length-i.length,n,r.length))},this.$id="ace/mode/python"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-r.js b/library/ace/mode-r.js
new file mode 100644
index 000000000..89e73b306
--- /dev/null
+++ b/library/ace/mode-r.js
@@ -0,0 +1 @@
+ace.define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(e){e||(e="text"),this.$rules={start:[{token:"comment",regex:"%.*$"},{token:e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b",next:"nospell"},{token:"keyword",regex:"\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:e,regex:"\\s+"}],nospell:[{token:"comment",regex:"%.*$",next:"start"},{token:"nospell."+e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b"},{token:"keyword",regex:"\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])",next:"start"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])]"},{token:"paren.keyword.operator",regex:"}",next:"start"},{token:"nospell."+e,regex:"\\s+"},{token:"nospell."+e,regex:"\\w+"}]}};r.inherits(o,s),t.TexHighlightRules=o}),ace.define("ace/mode/r_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./tex_highlight_rules").TexHighlightRules,u=function(){var e=i.arrayToMap("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass".split("|")),t=i.arrayToMap("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|NA_complex_".split("|"));this.$rules={start:[{token:"comment.sectionhead",regex:"#+(?!').*(?:----|====|####)\\s*$"},{token:"comment",regex:"#+'",next:"rd-start"},{token:"comment",regex:"#.*$"},{token:"string",regex:'["]',next:"qqstring"},{token:"string",regex:"[']",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+[Li]?\\b"},{token:"constant.numeric",regex:"\\d+L\\b"},{token:"constant.numeric",regex:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b"},{token:"constant.numeric",regex:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b"},{token:"constant.language.boolean",regex:"(?:TRUE|FALSE|T|F)\\b"},{token:"identifier",regex:"`.*?`"},{onMatch:function(n){return e[n]?"keyword":t[n]?"constant.language":n=="..."||n.match(/^\.\.\d+$/)?"variable.language":"identifier"},regex:"[a-zA-Z.][a-zA-Z0-9._]*\\b"},{token:"keyword.operator",regex:"%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:"},{token:"keyword.operator",regex:"%.*?%"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]};var n=(new o("comment")).getRules();for(var r=0;r<n.start.length;r++)n.start[r].token+=".virtual-comment";this.addRules(n,"rd-"),this.$rules["rd-start"].unshift({token:"text",regex:"^",next:"start"}),this.$rules["rd-start"].unshift({token:"keyword",regex:"@(?!@)[^ ]*"}),this.$rules["rd-start"].unshift({token:"comment",regex:"@@"}),this.$rules["rd-start"].push({token:"comment",regex:"[^%\\\\[({\\])}]+"})};r.inherits(u,s),t.RHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/r",["require","exports","module","ace/range","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/r_highlight_rules","ace/mode/matching_brace_outdent","ace/unicode"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../lib/oop"),s=e("./text").Mode,o=e("./text_highlight_rules").TextHighlightRules,u=e("./r_highlight_rules").RHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,f=e("../unicode"),l=function(){this.HighlightRules=u,this.$outdent=new a};i.inherits(l,s),function(){this.lineCommentStart="#",this.$id="ace/mode/r"}.call(l.prototype),t.Mode=l}) \ No newline at end of file
diff --git a/library/ace/mode-razor.js b/library/ace/mode-razor.js
new file mode 100644
index 000000000..fc7427260
--- /dev/null
+++ b/library/ace/mode-razor.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[A-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/csharp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=this.createKeywordMapper({"variable.language":"this",keyword:"abstract|event|new|struct|as|explicit|null|switch|base|extern|object|this|bool|false|operator|throw|break|finally|out|true|byte|fixed|override|try|case|float|params|typeof|catch|for|private|uint|char|foreach|protected|ulong|checked|goto|public|unchecked|class|if|readonly|unsafe|const|implicit|ref|ushort|continue|in|return|using|decimal|int|sbyte|virtual|default|interface|sealed|volatile|delegate|internal|short|void|do|is|sizeof|while|double|lock|stackalloc|else|long|static|enum|namespace|string|var|dynamic","constant.language":"null|true|false"},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:/'(?:.|\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n]))'/},{token:"string",start:'"',end:'"|$',next:[{token:"constant.language.escape",regex:/\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/},{token:"invalid",regex:/\\./}]},{token:"string",start:'@"',end:'"',next:[{token:"constant.language.escape",regex:'""'}]},{token:"string",start:/\$"/,end:'"|$',next:[{token:"constant.language.escape",regex:/\\(:?$)|{{/},{token:"constant.language.escape",regex:/\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/},{token:"invalid",regex:/\\./}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"keyword",regex:"^\\s*#(if|else|elif|endif|define|undef|warning|error|line|region|endregion|pragma)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(o,s),t.CSharpHighlightRules=o}),ace.define("ace/mode/razor_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/html_highlight_rules","ace/mode/csharp_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./html_highlight_rules").HtmlHighlightRules,u=e("./csharp_highlight_rules").CSharpHighlightRules,a="razor-block-",f=function(){u.call(this);var e=function(e,t){return typeof t=="function"?t(e):t},t="in-braces";this.$rules.start.unshift({regex:"[\\[({]",onMatch:function(e,n,r){var i=/razor-[^\-]+-/.exec(n)[0];return r.unshift(e),r.unshift(i+t),this.next=i+t,"paren.lparen"}});var n={"{":"}","[":"]","(":")"};this.$rules[t]=i.deepCopy(this.$rules.start),this.$rules[t].unshift({regex:"[\\])}]",onMatch:function(t,r,i){var s=i[1];return n[s]!==t?"invalid.illegal":(i.shift(),i.shift(),this.next=e(t,i[0])||"start","paren.rparen")}})};r.inherits(f,u);var l=function(){o.call(this);var e={regex:"@[({]|@functions{",onMatch:function(e,t,n){return n.unshift(e),n.unshift("razor-block-start"),this.next="razor-block-start","punctuation.block.razor"}},t={"@{":"}","@(":")","@functions{":"}"},n={regex:"[})]",onMatch:function(e,n,r){var i=r[1];return t[i]!==e?"invalid.illegal":(r.shift(),r.shift(),this.next=r.shift()||"start","punctuation.block.razor")}},r={regex:"@(?![{(])",onMatch:function(e,t,n){return n.unshift("razor-short-start"),this.next="razor-short-start","punctuation.short.razor"}},i={token:"",regex:"(?=[^A-Za-z_\\.()\\[\\]])",next:"pop"},s={regex:"@(?=if)",onMatch:function(e,t,n){return n.unshift(function(e){return e!=="}"?"start":n.shift()||"start"}),this.next="razor-block-start","punctuation.control.razor"}},u=[{token:["meta.directive.razor","text","identifier"],regex:"^(\\s*@model)(\\s+)(.+)$"},e,r];for(var a in this.$rules)this.$rules[a].unshift.apply(this.$rules[a],u);this.embedRules(f,"razor-block-",[n],["start"]),this.embedRules(f,"razor-short-",[i],["start"]),this.normalizeRules()};r.inherits(l,o),t.RazorHighlightRules=l,t.RazorLangHighlightRules=f}),ace.define("ace/mode/razor_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../token_iterator").TokenIterator,i=["abstract","as","base","bool","break","byte","case","catch","char","checked","class","const","continue","decimal","default","delegate","do","double","else","enum","event","explicit","extern","false","finally","fixed","float","for","foreach","goto","if","implicit","in","int","interface","internal","is","lock","long","namespace","new","null","object","operator","out","override","params","private","protected","public","readonly","ref","return","sbyte","sealed","short","sizeof","stackalloc","static","string","struct","switch","this","throw","true","try","typeof","uint","ulong","unchecked","unsafe","ushort","using","var","virtual","void","volatile","while"],s=["Html","Model","Url","Layout"],o=function(){};(function(){this.getCompletions=function(e,t,n,r){if(e.lastIndexOf("razor-short-start")==-1&&e.lastIndexOf("razor-block-start")==-1)return[];var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e.lastIndexOf("razor-short-start")!=-1)return this.getShortStartCompletions(e,t,n,r);if(e.lastIndexOf("razor-block-start")!=-1)return this.getKeywordCompletions(e,t,n,r)},this.getShortStartCompletions=function(e,t,n,r){return s.map(function(e){return{value:e,meta:"keyword",score:Number.MAX_VALUE}})},this.getKeywordCompletions=function(e,t,n,r){return s.concat(i).map(function(e){return{value:e,meta:"keyword",score:Number.MAX_VALUE}})}}).call(o.prototype),t.RazorCompletions=o}),ace.define("ace/mode/razor",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/razor_highlight_rules","ace/mode/razor_completions","ace/mode/html_completions"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./razor_highlight_rules").RazorHighlightRules,o=e("./razor_completions").RazorCompletions,u=e("./html_completions").HtmlCompletions,a=function(){i.call(this),this.$highlightRules=new s,this.$completer=new o,this.$htmlCompleter=new u};r.inherits(a,i),function(){this.getCompletions=function(e,t,n,r){var i=this.$completer.getCompletions(e,t,n,r),s=this.$htmlCompleter.getCompletions(e,t,n,r);return i.concat(s)},this.createWorker=function(e){return null},this.$id="ace/mode/razor"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-rdoc.js b/library/ace/mode-rdoc.js
new file mode 100644
index 000000000..d2b464570
--- /dev/null
+++ b/library/ace/mode-rdoc.js
@@ -0,0 +1 @@
+ace.define("ace/mode/latex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:"%.*$"},{token:["keyword","lparen","variable.parameter","rparen","lparen","storage.type","rparen"],regex:"(\\\\(?:documentclass|usepackage|input))(?:(\\[)([^\\]]*)(\\]))?({)([^}]*)(})"},{token:["keyword","lparen","variable.parameter","rparen"],regex:"(\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?"},{token:["storage.type","lparen","variable.parameter","rparen"],regex:"(\\\\(?:begin|end))({)(\\w*)(})"},{token:"storage.type",regex:"\\\\[a-zA-Z]+"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"constant.character.escape",regex:"\\\\[^a-zA-Z]?"},{token:"string",regex:"\\${1,2}",next:"equation"}],equation:[{token:"comment",regex:"%.*$"},{token:"string",regex:"\\${1,2}",next:"start"},{token:"constant.character.escape",regex:"\\\\(?:[^a-zA-Z]|[a-zA-Z]+)"},{token:"error",regex:"^\\s*$",next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.LatexHighlightRules=s}),ace.define("ace/mode/rdoc_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/latex_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./latex_highlight_rules"),u=function(){this.$rules={start:[{token:"comment",regex:"%.*$"},{token:"text",regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b",next:"nospell"},{token:"keyword",regex:"\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],nospell:[{token:"comment",regex:"%.*$",next:"start"},{token:"nospell.text",regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b"},{token:"keyword",regex:"\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])",next:"start"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])]"},{token:"paren.keyword.operator",regex:"}",next:"start"},{token:"nospell.text",regex:"\\s+"},{token:"nospell.text",regex:"\\w+"}]}};r.inherits(u,s),t.RDocHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/rdoc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/rdoc_highlight_rules","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./text_highlight_rules").TextHighlightRules,o=e("./rdoc_highlight_rules").RDocHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=function(e){this.HighlightRules=o,this.$outdent=new u};r.inherits(a,i),function(){this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.$id="ace/mode/rdoc"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-rhtml.js b/library/ace/mode-rhtml.js
new file mode 100644
index 000000000..ff4225f8d
--- /dev/null
+++ b/library/ace/mode-rhtml.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[A-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(e){e||(e="text"),this.$rules={start:[{token:"comment",regex:"%.*$"},{token:e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b",next:"nospell"},{token:"keyword",regex:"\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:e,regex:"\\s+"}],nospell:[{token:"comment",regex:"%.*$",next:"start"},{token:"nospell."+e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b"},{token:"keyword",regex:"\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])",next:"start"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])]"},{token:"paren.keyword.operator",regex:"}",next:"start"},{token:"nospell."+e,regex:"\\s+"},{token:"nospell."+e,regex:"\\w+"}]}};r.inherits(o,s),t.TexHighlightRules=o}),ace.define("ace/mode/r_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./tex_highlight_rules").TexHighlightRules,u=function(){var e=i.arrayToMap("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass".split("|")),t=i.arrayToMap("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|NA_complex_".split("|"));this.$rules={start:[{token:"comment.sectionhead",regex:"#+(?!').*(?:----|====|####)\\s*$"},{token:"comment",regex:"#+'",next:"rd-start"},{token:"comment",regex:"#.*$"},{token:"string",regex:'["]',next:"qqstring"},{token:"string",regex:"[']",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+[Li]?\\b"},{token:"constant.numeric",regex:"\\d+L\\b"},{token:"constant.numeric",regex:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b"},{token:"constant.numeric",regex:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b"},{token:"constant.language.boolean",regex:"(?:TRUE|FALSE|T|F)\\b"},{token:"identifier",regex:"`.*?`"},{onMatch:function(n){return e[n]?"keyword":t[n]?"constant.language":n=="..."||n.match(/^\.\.\d+$/)?"variable.language":"identifier"},regex:"[a-zA-Z.][a-zA-Z0-9._]*\\b"},{token:"keyword.operator",regex:"%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:"},{token:"keyword.operator",regex:"%.*?%"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]};var n=(new o("comment")).getRules();for(var r=0;r<n.start.length;r++)n.start[r].token+=".virtual-comment";this.addRules(n,"rd-"),this.$rules["rd-start"].unshift({token:"text",regex:"^",next:"start"}),this.$rules["rd-start"].unshift({token:"keyword",regex:"@(?!@)[^ ]*"}),this.$rules["rd-start"].unshift({token:"comment",regex:"@@"}),this.$rules["rd-start"].push({token:"comment",regex:"[^%\\\\[({\\])}]+"})};r.inherits(u,s),t.RHighlightRules=u}),ace.define("ace/mode/rhtml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/r_highlight_rules","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./r_highlight_rules").RHighlightRules,s=e("./html_highlight_rules").HtmlHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){s.call(this),this.$rules.start.unshift({token:"support.function.codebegin",regex:"^<!--\\s*begin.rcode\\s*(?:.*)",next:"r-start"}),this.embedRules(i,"r-",[{token:"support.function.codeend",regex:"^\\s*end.rcode\\s*-->",next:"start"}],["start"]),this.normalizeRules()};r.inherits(u,o),t.RHtmlHighlightRules=u}),ace.define("ace/mode/rhtml",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/rhtml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./rhtml_highlight_rules").RHtmlHighlightRules,o=function(e,t){i.call(this),this.$session=t,this.HighlightRules=s};r.inherits(o,i),function(){this.insertChunkInfo={value:"<!--begin.rcode\n\nend.rcode-->\n",position:{row:0,column:15}},this.getLanguageMode=function(e){return this.$session.getState(e.row).match(/^r-/)?"R":"HTML"},this.$id="ace/mode/rhtml"}.call(o.prototype),t.Mode=o}) \ No newline at end of file
diff --git a/library/ace/mode-rst.js b/library/ace/mode-rst.js
new file mode 100644
index 000000000..633a3d784
--- /dev/null
+++ b/library/ace/mode-rst.js
@@ -0,0 +1 @@
+ace.define("ace/mode/rst_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e={title:"markup.heading",list:"markup.heading",table:"constant",directive:"keyword.operator",entity:"string",link:"markup.underline.list",bold:"markup.bold",italic:"markup.italic",literal:"support.function",comment:"comment"},t="(^|\\s|[\"'(<\\[{\\-/:])",n="(?:$|(?=\\s|[\\\\.,;!?\\-/:\"')>\\]}]))";this.$rules={start:[{token:e.title,regex:"(^)([\\=\\-`:\\.'\"~\\^_\\*\\+#])(\\2{2,}\\s*$)"},{token:["text",e.directive,e.literal],regex:"(^\\s*\\.\\. )([^: ]+::)(.*$)",next:"codeblock"},{token:e.directive,regex:"::$",next:"codeblock"},{token:[e.entity,e.link],regex:"(^\\.\\. _[^:]+:)(.*$)"},{token:[e.entity,e.link],regex:"(^__ )(https?://.*$)"},{token:e.entity,regex:"^\\.\\. \\[[^\\]]+\\] "},{token:e.comment,regex:"^\\.\\. .*$",next:"comment"},{token:e.list,regex:"^\\s*[\\*\\+-] "},{token:e.list,regex:"^\\s*(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\. "},{token:e.list,regex:"^\\s*\\(?(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\) "},{token:e.table,regex:"^={2,}(?: +={2,})+$"},{token:e.table,regex:"^\\+-{2,}(?:\\+-{2,})+\\+$"},{token:e.table,regex:"^\\+={2,}(?:\\+={2,})+\\+$"},{token:["text",e.literal],regex:t+"(``)(?=\\S)",next:"code"},{token:["text",e.bold],regex:t+"(\\*\\*)(?=\\S)",next:"bold"},{token:["text",e.italic],regex:t+"(\\*)(?=\\S)",next:"italic"},{token:e.entity,regex:"\\|[\\w\\-]+?\\|"},{token:e.entity,regex:":[\\w-:]+:`\\S",next:"entity"},{token:["text",e.entity],regex:t+"(_`)(?=\\S)",next:"entity"},{token:e.entity,regex:"_[A-Za-z0-9\\-]+?"},{token:["text",e.link],regex:t+"(`)(?=\\S)",next:"link"},{token:e.link,regex:"[A-Za-z0-9\\-]+?__?"},{token:e.link,regex:"\\[[^\\]]+?\\]_"},{token:e.link,regex:"https?://\\S+"},{token:e.table,regex:"\\|"}],codeblock:[{token:e.literal,regex:"^ +.+$",next:"codeblock"},{token:e.literal,regex:"^$",next:"codeblock"},{token:"empty",regex:"",next:"start"}],code:[{token:e.literal,regex:"\\S``"+n,next:"start"},{defaultToken:e.literal}],bold:[{token:e.bold,regex:"\\S\\*\\*"+n,next:"start"},{defaultToken:e.bold}],italic:[{token:e.italic,regex:"\\S\\*"+n,next:"start"},{defaultToken:e.italic}],entity:[{token:e.entity,regex:"\\S`"+n,next:"start"},{defaultToken:e.entity}],link:[{token:e.link,regex:"\\S`__?"+n,next:"start"},{defaultToken:e.link}],comment:[{token:e.comment,regex:"^ +.+$",next:"comment"},{token:e.comment,regex:"^$",next:"comment"},{token:"empty",regex:"",next:"start"}]}};r.inherits(o,s),t.RSTHighlightRules=o}),ace.define("ace/mode/rst",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rst_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./rst_highlight_rules").RSTHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.type="text",this.$id="ace/mode/rst"}.call(o.prototype),t.Mode=o}) \ No newline at end of file
diff --git a/library/ace/mode-ruby.js b/library/ace/mode-ruby.js
new file mode 100644
index 000000000..6afb8d2b9
--- /dev/null
+++ b/library/ace/mode-ruby.js
@@ -0,0 +1 @@
+ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.constantOtherSymbol={token:"constant.other.symbol.ruby",regex:"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"},o=t.qString={token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},u=t.qqString={token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},a=t.tString={token:"string",regex:"[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"},f=t.constantNumericHex={token:"constant.numeric",regex:"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"},l=t.constantNumericFloat={token:"constant.numeric",regex:"[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b"},c=function(){var e="abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many",t="alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield",n="true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING",r="$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",i=this.$keywords=this.createKeywordMapper({keyword:t,"constant.language":n,"variable.language":r,"support.function":e,"invalid.deprecated":"debugger"},"identifier");this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"comment",regex:"^=begin(?:$|\\s.*$)",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},[{regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren.lparen";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.start",regex:/"/,push:[{token:"constant.language.escape",regex:/\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/},{token:"paren.start",regex:/\#{/,push:"start"},{token:"string.end",regex:/"/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/`/,push:[{token:"constant.language.escape",regex:/\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/},{token:"paren.start",regex:/\#{/,push:"start"},{token:"string.end",regex:/`/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/'/,push:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string.end",regex:/'/,next:"pop"},{defaultToken:"string"}]}],{token:"text",regex:"::"},{token:"variable.instance",regex:"@{1,2}[a-zA-Z_\\d]+"},{token:"support.class",regex:"[A-Z][a-zA-Z_\\d]+"},s,f,l,{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"punctuation.separator.key-value",regex:"=>"},{stateName:"heredoc",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[3]),[{type:"constant",value:i[1]},{type:"string",value:i[2]},{type:"support.class",value:i[3]},{type:"string",value:i[4]}]},regex:"(<<-?)(['\"`]?)([\\w]+)(['\"`]?)",rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:"string.character",regex:"\\B\\?."},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"^=end(?:$|\\s.*$)",next:"start"},{token:"comment",regex:".+"}]},this.normalizeRules()};r.inherits(c,i),t.RubyHighlightRules=c}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ruby_highlight_rules").RubyHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/coffee").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/),u=t.match(/^\s*(class|def|module)\s.*$/),a=t.match(/.*do(\s*|\s+\|.*\|\s*)$/),f=t.match(/^\s*(if|else|when)\s*/);if(o||u||a||f)r+=n}return r},this.checkOutdent=function(e,t,n){return/^\s+(end|else)$/.test(t+n)||this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){var r=t.getLine(n);if(/}/.test(r))return this.$outdent.autoOutdent(t,n);var i=this.$getIndent(r),s=t.getLine(n-1),o=this.$getIndent(s),a=t.getTabString();o.length<=i.length&&i.slice(-a.length)==a&&t.remove(new u(n,i.length-a.length,n,i.length))},this.$id="ace/mode/ruby"}.call(l.prototype),t.Mode=l}) \ No newline at end of file
diff --git a/library/ace/mode-rust.js b/library/ace/mode-rust.js
new file mode 100644
index 000000000..49b7c4caa
--- /dev/null
+++ b/library/ace/mode-rust.js
@@ -0,0 +1 @@
+ace.define("ace/mode/rust_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=/\\(?:[nrt0'"]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\})/.source,o=function(){this.$rules={start:[{token:"variable.other.source.rust",regex:"'[a-zA-Z_][a-zA-Z0-9_]*(?![\\'])"},{token:"string.quoted.single.source.rust",regex:"'(?:[^'\\\\]|"+s+")'"},{stateName:"bracketedComment",onMatch:function(e,t,n){return n.unshift(this.next,e.length-1,t),"string.quoted.raw.source.rust"},regex:/r#*"/,next:[{onMatch:function(e,t,n){var r="string.quoted.raw.source.rust";return e.length>=n[1]?(e.length>n[1]&&(r="invalid"),n.shift(),n.shift(),this.next=n.shift()):this.next="",r},regex:/"#*/,next:"start"},{defaultToken:"string.quoted.raw.source.rust"}]},{token:"string.quoted.double.source.rust",regex:'"',push:[{token:"string.quoted.double.source.rust",regex:'"',next:"pop"},{token:"constant.character.escape.source.rust",regex:s},{defaultToken:"string.quoted.double.source.rust"}]},{token:["keyword.source.rust","text","entity.name.function.source.rust"],regex:"\\b(fn)(\\s+)([a-zA-Z_][a-zA-Z0-9_]*)"},{token:"support.constant",regex:"\\b[a-zA-Z_][\\w\\d]*::"},{token:"keyword.source.rust",regex:"\\b(?:abstract|alignof|as|box|break|continue|const|crate|do|else|enum|extern|for|final|if|impl|in|let|loop|macro|match|mod|move|mut|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\\b"},{token:"storage.type.source.rust",regex:"\\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|f16|f32|f64|i8|i16|i32|i64|str|option|either|c_float|c_double|c_void|FILE|fpos_t|DIR|dirent|c_char|c_schar|c_uchar|c_short|c_ushort|c_int|c_uint|c_long|c_ulong|size_t|ptrdiff_t|clock_t|time_t|c_longlong|c_ulonglong|intptr_t|uintptr_t|off_t|dev_t|ino_t|pid_t|mode_t|ssize_t)\\b"},{token:"variable.language.source.rust",regex:"\\bself\\b"},{token:"comment.line.doc.source.rust",regex:"//!.*$"},{token:"comment.line.double-dash.source.rust",regex:"//.*$"},{token:"comment.start.block.source.rust",regex:"/\\*",stateName:"comment",push:[{token:"comment.start.block.source.rust",regex:"/\\*",push:"comment"},{token:"comment.end.block.source.rust",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.source.rust"}]},{token:"keyword.operator",regex:/\$|[-=]>|[-+%^=!&|<>]=?|[*/](?![*/])=?/},{token:"punctuation.operator",regex:/[?:,;.]/},{token:"paren.lparen",regex:/[\[({]/},{token:"paren.rparen",regex:/[\])}]/},{token:"constant.language.source.rust",regex:"\\b(?:true|false|Some|None|Ok|Err)\\b"},{token:"support.constant.source.rust",regex:"\\b(?:EXIT_FAILURE|EXIT_SUCCESS|RAND_MAX|EOF|SEEK_SET|SEEK_CUR|SEEK_END|_IOFBF|_IONBF|_IOLBF|BUFSIZ|FOPEN_MAX|FILENAME_MAX|L_tmpnam|TMP_MAX|O_RDONLY|O_WRONLY|O_RDWR|O_APPEND|O_CREAT|O_EXCL|O_TRUNC|S_IFIFO|S_IFCHR|S_IFBLK|S_IFDIR|S_IFREG|S_IFMT|S_IEXEC|S_IWRITE|S_IREAD|S_IRWXU|S_IXUSR|S_IWUSR|S_IRUSR|F_OK|R_OK|W_OK|X_OK|STDIN_FILENO|STDOUT_FILENO|STDERR_FILENO)\\b"},{token:"meta.preprocessor.source.rust",regex:"\\b\\w\\(\\w\\)*!|#\\[[\\w=\\(\\)_]+\\]\\b"},{token:"constant.numeric.source.rust",regex:/(?:0x[a-fA-F0-9_]+|0o[0-7_]+|0b[01_]+|[0-9][0-9_]*(?!\.))(?:[iu](?:size|8|16|32|64))?\b/},{token:"constant.numeric.source.rust",regex:/(?:[0-9][0-9_]*)(?:\.[0-9][0-9_]*)?(?:[Ee][+-][0-9][0-9_]*)?(?:f32|f64)?\b/}]},this.normalizeRules()};o.metaData={fileTypes:["rs","rc"],foldingStartMarker:"^.*\\bfn\\s*(\\w+\\s*)?\\([^\\)]*\\)(\\s*\\{[^\\}]*)?\\s*$",foldingStopMarker:"^\\s*\\}",name:"Rust",scopeName:"source.rust"},r.inherits(o,i),t.RustHighlightRules=o}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/rust",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rust_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./rust_highlight_rules").RustHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/",nestable:!0},this.$id="ace/mode/rust"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-sass.js b/library/ace/mode-sass.js
new file mode 100644
index 000000000..91a991d6d
--- /dev/null
+++ b/library/ace/mode-sass.js
@@ -0,0 +1 @@
+ace.define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=i.arrayToMap(function(){var e="-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-".split("|"),t="appearance|background-clip|background-inline-policy|background-origin|background-size|binding|border-bottom-colors|border-left-colors|border-right-colors|border-top-colors|border-end|border-end-color|border-end-style|border-end-width|border-image|border-start|border-start-color|border-start-style|border-start-width|box-align|box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|box-pack|box-sizing|column-count|column-gap|column-width|column-rule|column-rule-width|column-rule-style|column-rule-color|float-edge|font-feature-settings|font-language-override|force-broken-image-icon|image-region|margin-end|margin-start|opacity|outline|outline-color|outline-offset|outline-radius|outline-radius-bottomleft|outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|outline-style|outline-width|padding-end|padding-start|stack-sizing|tab-size|text-blink|text-decoration-color|text-decoration-line|text-decoration-style|transform|transform-origin|transition|transition-delay|transition-duration|transition-property|transition-timing-function|user-focus|user-input|user-modify|user-select|window-shadow|border-radius".split("|"),n="azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|border-bottom-color|border-bottom-style|border-bottom-width|border-bottom|border-collapse|border-color|border-left-color|border-left-style|border-left-width|border-left|border-right-color|border-right-style|border-right-width|border-right|border-spacing|border-style|border-top-color|border-top-style|border-top-width|border-top|border-width|border|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-family|font-size-adjust|font-size|font-stretch|font-style|font-variant|font-weight|font|height|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|marker-offset|margin|marks|max-height|max-width|min-height|min-width|opacity|orphans|outline-color|outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page|pause-after|pause-before|pause|pitch-range|pitch|play-during|position|quotes|richness|right|size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|stress|table-layout|text-align|text-decoration|text-indent|text-shadow|text-transform|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-spacing|z-index".split("|"),r=[];for(var i=0,s=e.length;i<s;i++)Array.prototype.push.apply(r,(e[i]+t.join("|"+e[i])).split("|"));return Array.prototype.push.apply(r,t),Array.prototype.push.apply(r,n),r}()),t=i.arrayToMap("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|scale_color|transparentize|type_of|unit|unitless|unqoute".split("|")),n=i.arrayToMap("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|decimal-leading-zero|decimal|default|disabled|disc|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|inactive|inherit|inline-block|inline|inset|inside|inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|keep-all|left|lighter|line-edge|line-through|line|list-item|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|super|sw-resize|table-footer-group|table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|zero".split("|")),r=i.arrayToMap("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow".split("|")),s=i.arrayToMap("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare".split("|")),o=i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|")),u="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:u+"(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:u},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:function(i){return e.hasOwnProperty(i.toLowerCase())?"support.type":s.hasOwnProperty(i)?"keyword":n.hasOwnProperty(i)?"constant.language":t.hasOwnProperty(i)?"support.function":r.hasOwnProperty(i.toLowerCase())?"support.constant.color":o.hasOwnProperty(i.toLowerCase())?"variable.language":"text"},regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable",regex:"[a-z_\\-$][a-z0-9_\\-$]*\\b"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]}};r.inherits(o,s),t.ScssHighlightRules=o}),ace.define("ace/mode/sass_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/scss_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./scss_highlight_rules").ScssHighlightRules,o=function(){s.call(this);var e=this.$rules.start;e[1].token=="comment"&&(e.splice(1,1,{onMatch:function(e,t,n){return n.unshift(this.next,-1,e.length-2,t),"comment"},regex:/^\s*\/\*/,next:"comment"},{token:"error.invalid",regex:"/\\*|[{;}]"},{token:"support.type",regex:/^\s*:[\w\-]+\s/}),this.$rules.comment=[{regex:/^\s*/,onMatch:function(e,t,n){return n[1]===-1&&(n[1]=Math.max(n[2],e.length-1)),e.length<=n[1]?(n.shift(),n.shift(),n.shift(),this.next=n.shift(),"text"):(this.next="","comment")},next:"start"},{defaultToken:"comment"}])};r.inherits(o,s),t.SassHighlightRules=o}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/sass",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sass_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sass_highlight_rules").SassHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.$id="ace/mode/sass"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-scad.js b/library/ace/mode-scad.js
new file mode 100644
index 000000000..6f7353066
--- /dev/null
+++ b/library/ace/mode-scad.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/scad_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){var e=this.createKeywordMapper({"variable.language":"this",keyword:"module|if|else|for","constant.language":"NULL"},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},s.getStartRule("start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant",regex:"<[a-zA-Z0-9.]+>"},{token:"keyword",regex:"(?:use|include)"},{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]},this.embedRules(s,"doc-",[s.getEndRule("start")])};r.inherits(u,o),t.scadHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/scad",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scad_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./scad_highlight_rules").scadHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/scad"}.call(l.prototype),t.Mode=l}) \ No newline at end of file
diff --git a/library/ace/mode-scala.js b/library/ace/mode-scala.js
new file mode 100644
index 000000000..0f1a09a28
--- /dev/null
+++ b/library/ace/mode-scala.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/scala_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="case|default|do|else|for|if|match|while|throw|return|try|trye|catch|finally|yield|abstract|class|def|extends|final|forSome|implicit|implicits|import|lazy|new|object|null|override|package|private|protected|sealed|super|this|trait|type|val|var|with|assert|assume|require|print|println|printf|readLine|readBoolean|readByte|readShort|readChar|readInt|readLong|readFloat|readDouble",t="true|false",n="AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object|Unit|Any|AnyVal|AnyRef|Null|ScalaObject|Singleton|Seq|Iterable|List|Option|Array|Char|Byte|Int|Long|Nothing|App|Application|BufferedIterator|BigDecimal|BigInt|Console|Either|Enumeration|Equiv|Fractional|Function|IndexedSeq|Integral|Iterator|Map|Numeric|Nil|NotNull|Ordered|Ordering|PartialFunction|PartialOrdering|Product|Proxy|Range|Responder|Seq|Serializable|Set|Specializable|Stream|StringContext|Symbol|Traversable|TraversableOnce|Tuple|Vector|Pair|Triple",r=this.createKeywordMapper({"variable.language":"this",keyword:e,"support.function":n,"constant.language":t},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'"""',next:"tstring"},{token:"string",regex:'"(?=.)',next:"string"},{token:"symbol.constant",regex:"'[\\w\\d_]+"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],string:[{token:"escape",regex:'\\\\"'},{token:"string",regex:'"',next:"start"},{token:"string.invalid",regex:'[^"\\\\]*$',next:"start"},{token:"string",regex:'[^"\\\\]+'}],tstring:[{token:"string",regex:'"{3,5}',next:"start"},{token:"string",regex:".+?"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.ScalaHighlightRules=o}),ace.define("ace/mode/scala",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/scala_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./scala_highlight_rules").ScalaHighlightRules,o=function(){i.call(this),this.HighlightRules=s};r.inherits(o,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/scala"}.call(o.prototype),t.Mode=o}) \ No newline at end of file
diff --git a/library/ace/mode-scheme.js b/library/ace/mode-scheme.js
new file mode 100644
index 000000000..b4a8553dd
--- /dev/null
+++ b/library/ace/mode-scheme.js
@@ -0,0 +1 @@
+ace.define("ace/mode/scheme_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="case|do|let|loop|if|else|when",t="eq?|eqv?|equal?|and|or|not|null?",n="#t|#f",r="cons|car|cdr|cond|lambda|lambda*|syntax-rules|format|set!|quote|eval|append|list|list?|member?|load",i=this.createKeywordMapper({"keyword.control":e,"keyword.operator":t,"constant.language":n,"support.function":r},"identifier",!0);this.$rules={start:[{token:"comment",regex:";.*$"},{token:["storage.type.function-type.scheme","text","entity.name.function.scheme"],regex:"(?:\\b(?:(define|define-syntax|define-macro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)"},{token:"punctuation.definition.constant.character.scheme",regex:"#:\\S+"},{token:["punctuation.definition.variable.scheme","variable.other.global.scheme","punctuation.definition.variable.scheme"],regex:"(\\*)(\\S*)(\\*)"},{token:"constant.numeric",regex:"#[xXoObB][0-9a-fA-F]+"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?"},{token:i,regex:"[a-zA-Z_#][a-zA-Z0-9_\\-\\?\\!\\*]*"},{token:"string",regex:'"(?=.)',next:"qqstring"}],qqstring:[{token:"constant.character.escape.scheme",regex:"\\\\."},{token:"string",regex:'[^"\\\\]+',merge:!0},{token:"string",regex:"\\\\$",next:"qqstring",merge:!0},{token:"string",regex:'"|$',next:"start",merge:!0}]}};r.inherits(s,i),t.SchemeHighlightRules=s}),ace.define("ace/mode/matching_parens_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\)/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\))/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){var t=e.match(/^(\s+)/);return t?t[1]:""}}).call(i.prototype),t.MatchingParensOutdent=i}),ace.define("ace/mode/scheme",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scheme_highlight_rules","ace/mode/matching_parens_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./scheme_highlight_rules").SchemeHighlightRules,o=e("./matching_parens_outdent").MatchingParensOutdent,u=function(){this.HighlightRules=s,this.$outdent=new o};r.inherits(u,i),function(){this.lineCommentStart=";",this.minorIndentFunctions=["define","lambda","define-macro","define-syntax","syntax-rules","define-record-type","define-structure"],this.$toIndent=function(e){return e.split("").map(function(e){return/\s/.exec(e)?e:" "}).join("")},this.$calculateIndent=function(e,t){var n=this.$getIndent(e),r=0,i,s;for(var o=e.length-1;o>=0;o--){s=e[o],s==="("?(r--,i=!0):s==="("||s==="["||s==="{"?(r--,i=!1):(s===")"||s==="]"||s==="}")&&r++;if(r<0)break}if(!(r<0&&i))return r<0&&!i?this.$toIndent(e.substring(0,o+1)):r>0?(n=n.substring(0,n.length-t.length),n):n;o+=1;var u=o,a="";for(;;){s=e[o];if(s===" "||s===" ")return this.minorIndentFunctions.indexOf(a)!==-1?this.$toIndent(e.substring(0,u-1)+t):this.$toIndent(e.substring(0,o+1));if(s===undefined)return this.$toIndent(e.substring(0,u-1)+t);a+=e[o],o++}},this.getNextLineIndent=function(e,t,n){return this.$calculateIndent(t,n)},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/scheme"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-scss.js b/library/ace/mode-scss.js
new file mode 100644
index 000000000..3bc995004
--- /dev/null
+++ b/library/ace/mode-scss.js
@@ -0,0 +1 @@
+ace.define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=i.arrayToMap(function(){var e="-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-".split("|"),t="appearance|background-clip|background-inline-policy|background-origin|background-size|binding|border-bottom-colors|border-left-colors|border-right-colors|border-top-colors|border-end|border-end-color|border-end-style|border-end-width|border-image|border-start|border-start-color|border-start-style|border-start-width|box-align|box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|box-pack|box-sizing|column-count|column-gap|column-width|column-rule|column-rule-width|column-rule-style|column-rule-color|float-edge|font-feature-settings|font-language-override|force-broken-image-icon|image-region|margin-end|margin-start|opacity|outline|outline-color|outline-offset|outline-radius|outline-radius-bottomleft|outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|outline-style|outline-width|padding-end|padding-start|stack-sizing|tab-size|text-blink|text-decoration-color|text-decoration-line|text-decoration-style|transform|transform-origin|transition|transition-delay|transition-duration|transition-property|transition-timing-function|user-focus|user-input|user-modify|user-select|window-shadow|border-radius".split("|"),n="azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|border-bottom-color|border-bottom-style|border-bottom-width|border-bottom|border-collapse|border-color|border-left-color|border-left-style|border-left-width|border-left|border-right-color|border-right-style|border-right-width|border-right|border-spacing|border-style|border-top-color|border-top-style|border-top-width|border-top|border-width|border|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-family|font-size-adjust|font-size|font-stretch|font-style|font-variant|font-weight|font|height|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|marker-offset|margin|marks|max-height|max-width|min-height|min-width|opacity|orphans|outline-color|outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page|pause-after|pause-before|pause|pitch-range|pitch|play-during|position|quotes|richness|right|size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|stress|table-layout|text-align|text-decoration|text-indent|text-shadow|text-transform|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-spacing|z-index".split("|"),r=[];for(var i=0,s=e.length;i<s;i++)Array.prototype.push.apply(r,(e[i]+t.join("|"+e[i])).split("|"));return Array.prototype.push.apply(r,t),Array.prototype.push.apply(r,n),r}()),t=i.arrayToMap("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|scale_color|transparentize|type_of|unit|unitless|unqoute".split("|")),n=i.arrayToMap("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|decimal-leading-zero|decimal|default|disabled|disc|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|inactive|inherit|inline-block|inline|inset|inside|inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|keep-all|left|lighter|line-edge|line-through|line|list-item|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|super|sw-resize|table-footer-group|table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|zero".split("|")),r=i.arrayToMap("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow".split("|")),s=i.arrayToMap("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare".split("|")),o=i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|")),u="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:u+"(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:u},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:function(i){return e.hasOwnProperty(i.toLowerCase())?"support.type":s.hasOwnProperty(i)?"keyword":n.hasOwnProperty(i)?"constant.language":t.hasOwnProperty(i)?"support.function":r.hasOwnProperty(i.toLowerCase())?"support.constant.color":o.hasOwnProperty(i.toLowerCase())?"variable.language":"text"},regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable",regex:"[a-z_\\-$][a-z0-9_\\-$]*\\b"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]}};r.inherits(o,s),t.ScssHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/scss",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scss_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./scss_highlight_rules").ScssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/css").CssBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/scss"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-sh.js b/library/ace/mode-sh.js
new file mode 100644
index 000000000..fcfbe94e9
--- /dev/null
+++ b/library/ace/mode-sh.js
@@ -0,0 +1 @@
+ace.define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.reservedKeywords="!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set|function|declare|readonly",o=t.languageConstructs="[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",u=function(){var e=this.createKeywordMapper({keyword:s,"support.function.builtin":o,"invalid.deprecated":"debugger"},"identifier"),t="(?:(?:[1-9]\\d*)|(?:0))",n="(?:\\.\\d+)",r="(?:\\d+)",i="(?:(?:"+r+"?"+n+")|(?:"+r+"\\.))",u="(?:(?:"+i+"|"+r+")"+")",a="(?:"+u+"|"+i+")",f="(?:&"+r+")",l="[a-zA-Z_][a-zA-Z0-9_]*",c="(?:"+l+"=)",h="(?:\\$(?:SHLVL|\\$|\\!|\\?))",p="(?:"+l+"\\s*\\(\\))";this.$rules={start:[{token:"constant",regex:/\\./},{token:["text","comment"],regex:/(^|\s)(#.*)$/},{token:"string",regex:'"',push:[{token:"constant.language.escape",regex:/\\(?:[$`"\\]|$)/},{include:"variables"},{token:"keyword.operator",regex:/`/},{token:"string",regex:'"',next:"pop"},{defaultToken:"string"}]},{token:"string",regex:"\\$'",push:[{token:"constant.language.escape",regex:/\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/},{token:"string",regex:"'",next:"pop"},{defaultToken:"string"}]},{regex:"<<<",token:"keyword.operator"},{stateName:"heredoc",regex:"(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[4]),[{type:"constant",value:i[1]},{type:"text",value:i[2]},{type:"string",value:i[3]},{type:"support.class",value:i[4]},{type:"string",value:i[5]}]},rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:["keyword","text","text","text","variable"],regex:/(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/},{token:"variable.language",regex:h},{token:"variable",regex:c},{include:"variables"},{token:"support.function",regex:p},{token:"support.function",regex:f},{token:"string",start:"'",end:"'"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:t+"\\b"},{token:e,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"},{token:"punctuation.operator",regex:";"},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]]"},{token:"paren.rparen",regex:"[\\)\\}]",next:"pop"}],variables:[{token:"variable",regex:/(\$)(\w+)/},{token:["variable","paren.lparen"],regex:/(\$)(\()/,push:"start"},{token:["variable","paren.lparen","keyword.operator","variable","keyword.operator"],regex:/(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,push:"start"},{token:"variable",regex:/\$[*@#?\-$!0_]/},{token:["variable","paren.lparen"],regex:/(\$)(\{)/,push:"start"}]},this.normalizeRules()};r.inherits(u,i),t.ShHighlightRules=u}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sh_highlight_rules").ShHighlightRules,o=e("../range").Range,u=e("./folding/cstyle").FoldMode,a=e("./behaviour/cstyle").CstyleBehaviour,f=function(){this.HighlightRules=s,this.foldingRules=new u,this.$behaviour=new a};r.inherits(f,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[\:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new o(n,r.length-i.length,n,r.length))},this.$id="ace/mode/sh"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-sjs.js b/library/ace/mode-sjs.js
new file mode 100644
index 000000000..4a46c3445
--- /dev/null
+++ b/library/ace/mode-sjs.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/sjs_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript_highlight_rules").JavaScriptHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=new i({noES6:!0}),t="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)",n=function(e){return e.isContextAware=!0,e},r=function(e){return{token:e.token,regex:e.regex,next:n(function(t,n){return n.length===0&&n.unshift(t),n.unshift(e.next),e.next})}},s=function(e){return{token:e.token,regex:e.regex,next:n(function(e,t){return t.shift(),t[0]||"start"})}};this.$rules=e.$rules,this.$rules.no_regex=[{token:"keyword",regex:"(waitfor|or|and|collapse|spawn|retract)\\b"},{token:"keyword.operator",regex:"(->|=>|\\.\\.)"},{token:"variable.language",regex:"(hold|default)\\b"},r({token:"string",regex:"`",next:"bstring"}),r({token:"string",regex:'"',next:"qqstring"}),r({token:"string",regex:'"',next:"qqstring"}),{token:["paren.lparen","text","paren.rparen"],regex:"(\\{)(\\s*)(\\|)",next:"block_arguments"}].concat(this.$rules.no_regex),this.$rules.block_arguments=[{token:"paren.rparen",regex:"\\|",next:"no_regex"}].concat(this.$rules.function_arguments),this.$rules.bstring=[{token:"constant.language.escape",regex:t},{token:"string",regex:"\\\\$",next:"bstring"},r({token:"paren.lparen",regex:"\\$\\{",next:"string_interp"}),r({token:"paren.lparen",regex:"\\$",next:"bstring_interp_single"}),s({token:"string",regex:"`"}),{defaultToken:"string"}],this.$rules.qqstring=[{token:"constant.language.escape",regex:t},{token:"string",regex:"\\\\$",next:"qqstring"},r({token:"paren.lparen",regex:"#\\{",next:"string_interp"}),s({token:"string",regex:'"'}),{defaultToken:"string"}];var o=[];for(var u=0;u<this.$rules.no_regex.length;u++){var a=this.$rules.no_regex[u],f=String(a.token);f.indexOf("paren")==-1&&(!a.next||a.next.isContextAware)&&o.push(a)}this.$rules.string_interp=[s({token:"paren.rparen",regex:"\\}"}),r({token:"paren.lparen",regex:"{",next:"string_interp"})].concat(o),this.$rules.bstring_interp_single=[{token:["identifier","paren.lparen"],regex:"(\\w+)(\\()",next:"bstring_interp_single_call"},s({token:"identifier",regex:"\\w*"})],this.$rules.bstring_interp_single_call=[r({token:"paren.lparen",regex:"\\(",next:"bstring_interp_single_call"}),s({token:"paren.rparen",regex:"\\)"})].concat(o)};r.inherits(o,s),t.SJSHighlightRules=o}),ace.define("ace/mode/sjs",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/sjs_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./sjs_highlight_rules").SJSHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/sjs"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-smarty.js b/library/ace/mode-smarty.js
new file mode 100644
index 000000000..df8a5b09d
--- /dev/null
+++ b/library/ace/mode-smarty.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[A-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/smarty_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=function(){i.call(this);var e={start:[{include:"#comments"},{include:"#blocks"}],"#blocks":[{token:"punctuation.section.embedded.begin.smarty",regex:"\\{%?",push:[{token:"punctuation.section.embedded.end.smarty",regex:"%?\\}",next:"pop"},{include:"#strings"},{include:"#variables"},{include:"#lang"},{defaultToken:"source.smarty"}]}],"#comments":[{token:["punctuation.definition.comment.smarty","comment.block.smarty"],regex:"(\\{%?)(\\*)",push:[{token:"comment.block.smarty",regex:"\\*%?\\}",next:"pop"},{defaultToken:"comment.block.smarty"}]}],"#lang":[{token:"keyword.operator.smarty",regex:"(?:!=|!|<=|>=|<|>|===|==|%|&&|\\|\\|)|\\b(?:and|or|eq|neq|ne|gte|gt|ge|lte|lt|le|not|mod)\\b"},{token:"constant.language.smarty",regex:"\\b(?:TRUE|FALSE|true|false)\\b"},{token:"keyword.control.smarty",regex:"\\b(?:if|else|elseif|foreach|foreachelse|section|switch|case|break|default)\\b"},{token:"variable.parameter.smarty",regex:"\\b[a-zA-Z]+="},{token:"support.function.built-in.smarty",regex:"\\b(?:capture|config_load|counter|cycle|debug|eval|fetch|include_php|include|insert|literal|math|strip|rdelim|ldelim|assign|constant|block|html_[a-z_]*)\\b"},{token:"support.function.variable-modifier.smarty",regex:"\\|(?:capitalize|cat|count_characters|count_paragraphs|count_sentences|count_words|date_format|default|escape|indent|lower|nl2br|regex_replace|replace|spacify|string_format|strip_tags|strip|truncate|upper|wordwrap)"}],"#strings":[{token:"punctuation.definition.string.begin.smarty",regex:"'",push:[{token:"punctuation.definition.string.end.smarty",regex:"'",next:"pop"},{token:"constant.character.escape.smarty",regex:"\\\\."},{defaultToken:"string.quoted.single.smarty"}]},{token:"punctuation.definition.string.begin.smarty",regex:'"',push:[{token:"punctuation.definition.string.end.smarty",regex:'"',next:"pop"},{token:"constant.character.escape.smarty",regex:"\\\\."},{defaultToken:"string.quoted.double.smarty"}]}],"#variables":[{token:["punctuation.definition.variable.smarty","variable.other.global.smarty"],regex:"\\b(\\$)(Smarty\\.)"},{token:["punctuation.definition.variable.smarty","variable.other.smarty"],regex:"(\\$)([a-zA-Z_][a-zA-Z0-9_]*)\\b"},{token:["keyword.operator.smarty","variable.other.property.smarty"],regex:"(->)([a-zA-Z_][a-zA-Z0-9_]*)\\b"},{token:["keyword.operator.smarty","meta.function-call.object.smarty","punctuation.definition.variable.smarty","variable.other.smarty","punctuation.definition.variable.smarty"],regex:"(->)([a-zA-Z_][a-zA-Z0-9_]*)(\\()(.*?)(\\))"}]},t=e.start;for(var n in this.$rules)this.$rules[n].unshift.apply(this.$rules[n],t);Object.keys(e).forEach(function(t){this.$rules[t]||(this.$rules[t]=e[t])},this),this.normalizeRules()};s.metaData={fileTypes:["tpl"],foldingStartMarker:"\\{%?",foldingStopMarker:"%?\\}",name:"Smarty",scopeName:"text.html.smarty"},r.inherits(s,i),t.SmartyHighlightRules=s}),ace.define("ace/mode/smarty",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/smarty_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./smarty_highlight_rules").SmartyHighlightRules,o=function(){i.call(this),this.HighlightRules=s};r.inherits(o,i),function(){this.$id="ace/mode/smarty"}.call(o.prototype),t.Mode=o}) \ No newline at end of file
diff --git a/library/ace/mode-snippets.js b/library/ace/mode-snippets.js
new file mode 100644
index 000000000..09fea16e2
--- /dev/null
+++ b/library/ace/mode-snippets.js
@@ -0,0 +1 @@
+ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/snippets",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="SELECTION|CURRENT_WORD|SELECTED_TEXT|CURRENT_LINE|LINE_INDEX|LINE_NUMBER|SOFT_TABS|TAB_SIZE|FILENAME|FILEPATH|FULLNAME";this.$rules={start:[{token:"constant.language.escape",regex:/\\[\$}`\\]/},{token:"keyword",regex:"\\$(?:TM_)?(?:"+e+")\\b"},{token:"variable",regex:"\\$\\w+"},{onMatch:function(e,t,n){return n[1]?n[1]++:n.unshift(t,1),this.tokenName},tokenName:"markup.list",regex:"\\${",next:"varDecl"},{onMatch:function(e,t,n){return n[1]?(n[1]--,n[1]||n.splice(0,2),this.tokenName):"text"},tokenName:"markup.list",regex:"}"},{token:"doc.comment",regex:/^\${2}-{5,}$/}],varDecl:[{regex:/\d+\b/,token:"constant.numeric"},{token:"keyword",regex:"(?:TM_)?(?:"+e+")\\b"},{token:"variable",regex:"\\w+"},{regex:/:/,token:"punctuation.operator",next:"start"},{regex:/\//,token:"string.regex",next:"regexp"},{regex:"",next:"start"}],regexp:[{regex:/\\./,token:"escape"},{regex:/\[/,token:"regex.start",next:"charClass"},{regex:"/",token:"string.regex",next:"format"},{token:"string.regex",regex:"."}],charClass:[{regex:"\\.",token:"escape"},{regex:"\\]",token:"regex.end",next:"regexp"},{token:"string.regex",regex:"."}],format:[{regex:/\\[ulULE]/,token:"keyword"},{regex:/\$\d+/,token:"variable"},{regex:"/[gim]*:?",token:"string.regex",next:"start"},{token:"string",regex:"."}]}};r.inherits(o,s),t.SnippetHighlightRules=o;var u=function(){this.$rules={start:[{token:"text",regex:"^\\t",next:"sn-start"},{token:"invalid",regex:/^ \s*/},{token:"comment",regex:/^#.*/},{token:"constant.language.escape",regex:"^regex ",next:"regex"},{token:"constant.language.escape",regex:"^(trigger|endTrigger|name|snippet|guard|endGuard|tabTrigger|key)\\b"}],regex:[{token:"text",regex:"\\."},{token:"keyword",regex:"/"},{token:"empty",regex:"$",next:"start"}]},this.embedRules(o,"sn-",[{token:"text",regex:"^\\t",next:"sn-start"},{onMatch:function(e,t,n){return n.splice(n.length),this.tokenName},tokenName:"text",regex:"^(?! )",next:"start"}])};r.inherits(u,s),t.SnippetGroupHighlightRules=u;var a=e("./folding/coffee").FoldMode,f=function(){this.HighlightRules=u,this.foldingRules=new a};r.inherits(f,i),function(){this.$indentWithTabs=!0,this.lineCommentStart="#",this.$id="ace/mode/snippets"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-soy_template.js b/library/ace/mode-soy_template.js
new file mode 100644
index 000000000..fcc7afaba
--- /dev/null
+++ b/library/ace/mode-soy_template.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[A-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/soy_template_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=function(){i.call(this);var e={start:[{include:"#template"},{include:"#if"},{include:"#comment-line"},{include:"#comment-block"},{include:"#comment-doc"},{include:"#call"},{include:"#css"},{include:"#param"},{include:"#print"},{include:"#msg"},{include:"#for"},{include:"#foreach"},{include:"#switch"},{include:"#tag"},{include:"text.html.basic"}],"#call":[{token:["punctuation.definition.tag.begin.soy","meta.tag.call.soy"],regex:"(\\{/?)(\\s*)(?=call|delcall)",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#string-quoted-single"},{include:"#string-quoted-double"},{token:["entity.name.tag.soy","variable.parameter.soy"],regex:"(call|delcall)(\\s+[\\.\\w]+)"},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy"],regex:"\\b(data)(\\s*)(=)"},{defaultToken:"meta.tag.call.soy"}]}],"#comment-line":[{token:["comment.line.double-slash.soy","comment.line.double-slash.soy"],regex:"(//)(.*$)"}],"#comment-block":[{token:"punctuation.definition.comment.begin.soy",regex:"/\\*(?!\\*)",push:[{token:"punctuation.definition.comment.end.soy",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.soy"}]}],"#comment-doc":[{token:"punctuation.definition.comment.begin.soy",regex:"/\\*\\*(?!/)",push:[{token:"punctuation.definition.comment.end.soy",regex:"\\*/",next:"pop"},{token:["support.type.soy","text","variable.parameter.soy"],regex:"(@param|@param\\?)(\\s+)(\\w+)"},{defaultToken:"comment.block.documentation.soy"}]}],"#css":[{token:["punctuation.definition.tag.begin.soy","meta.tag.css.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(css)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{token:"support.constant.soy",regex:"\\b(?:LITERAL|REFERENCE|BACKEND_SPECIFIC|GOOG)\\b"},{defaultToken:"meta.tag.css.soy"}]}],"#for":[{token:["punctuation.definition.tag.begin.soy","meta.tag.for.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(for)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{token:"keyword.operator.soy",regex:"\\bin\\b"},{token:"support.function.soy",regex:"\\brange\\b"},{include:"#variable"},{include:"#number"},{include:"#primitive"},{defaultToken:"meta.tag.for.soy"}]}],"#foreach":[{token:["punctuation.definition.tag.begin.soy","meta.tag.foreach.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(foreach)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{token:"keyword.operator.soy",regex:"\\bin\\b"},{include:"#variable"},{defaultToken:"meta.tag.foreach.soy"}]}],"#function":[{token:"support.function.soy",regex:"\\b(?:isFirst|isLast|index|hasData|length|keys|round|floor|ceiling|min|max|randomInt)\\b"}],"#if":[{token:["punctuation.definition.tag.begin.soy","meta.tag.if.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(if|elseif)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#variable"},{include:"#operator"},{include:"#function"},{include:"#string-quoted-single"},{include:"#string-quoted-double"},{defaultToken:"meta.tag.if.soy"}]}],"#namespace":[{token:["entity.name.tag.soy","text","variable.parameter.soy"],regex:"(namespace|delpackage)(\\s+)([\\w\\.]+)"}],"#number":[{token:"constant.numeric",regex:"[\\d]+"}],"#operator":[{token:"keyword.operator.soy",regex:"==|!=|\\band\\b|\\bor\\b|\\bnot\\b|-|\\+|/|\\?:"}],"#param":[{token:["punctuation.definition.tag.begin.soy","meta.tag.param.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(param)",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#variable"},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy"],regex:"\\b([\\w]+)(\\s*)((?::)?)"},{defaultToken:"meta.tag.param.soy"}]}],"#primitive":[{token:"constant.language.soy",regex:"\\b(?:null|false|true)\\b"}],"#msg":[{token:["punctuation.definition.tag.begin.soy","meta.tag.msg.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(msg)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#string-quoted-single"},{include:"#string-quoted-double"},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy"],regex:"\\b(meaning|desc)(\\s*)(=)"},{defaultToken:"meta.tag.msg.soy"}]}],"#print":[{token:["punctuation.definition.tag.begin.soy","meta.tag.print.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(print)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#variable"},{include:"#print-parameter"},{include:"#number"},{include:"#primitive"},{include:"#attribute-lookup"},{defaultToken:"meta.tag.print.soy"}]}],"#print-parameter":[{token:"keyword.operator.soy",regex:"\\|"},{token:"variable.parameter.soy",regex:"noAutoescape|id|escapeHtml|escapeJs|insertWorkBreaks|truncate"}],"#special-character":[{token:"support.constant.soy",regex:"\\bsp\\b|\\bnil\\b|\\\\r|\\\\n|\\\\t|\\blb\\b|\\brb\\b"}],"#string-quoted-double":[{token:"string.quoted.double",regex:'"[^"]*"'}],"#string-quoted-single":[{token:"string.quoted.single",regex:"'[^']*'"}],"#switch":[{token:["punctuation.definition.tag.begin.soy","meta.tag.switch.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(switch|case)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#variable"},{include:"#function"},{include:"#number"},{include:"#string-quoted-single"},{include:"#string-quoted-double"},{defaultToken:"meta.tag.switch.soy"}]}],"#attribute-lookup":[{token:"punctuation.definition.attribute-lookup.begin.soy",regex:"\\[",push:[{token:"punctuation.definition.attribute-lookup.end.soy",regex:"\\]",next:"pop"},{include:"#variable"},{include:"#function"},{include:"#operator"},{include:"#number"},{include:"#primitive"},{include:"#string-quoted-single"},{include:"#string-quoted-double"}]}],"#tag":[{token:"punctuation.definition.tag.begin.soy",regex:"\\{",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#namespace"},{include:"#variable"},{include:"#special-character"},{include:"#tag-simple"},{include:"#function"},{include:"#operator"},{include:"#attribute-lookup"},{include:"#number"},{include:"#primitive"},{include:"#print-parameter"}]}],"#tag-simple":[{token:"entity.name.tag.soy",regex:"{{\\s*(?:literal|else|ifempty|default)\\s*(?=\\})"}],"#template":[{token:["punctuation.definition.tag.begin.soy","meta.tag.template.soy"],regex:"(\\{/?)(\\s*)(?=template|deltemplate)",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{token:["entity.name.tag.soy","text","entity.name.function.soy"],regex:"(template|deltemplate)(\\s+)([\\.\\w]+)",originalRegex:"(?<=template|deltemplate)\\s+([\\.\\w]+)"},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy","text","string.quoted.double.soy"],regex:'\\b(private)(\\s*)(=)(\\s*)("true"|"false")'},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy","text","string.quoted.single.soy"],regex:"\\b(private)(\\s*)(=)(\\s*)('true'|'false')"},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy","text","string.quoted.double.soy"],regex:'\\b(autoescape)(\\s*)(=)(\\s*)("true"|"false"|"contextual")'},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy","text","string.quoted.single.soy"],regex:"\\b(autoescape)(\\s*)(=)(\\s*)('true'|'false'|'contextual')"},{defaultToken:"meta.tag.template.soy"}]}],"#variable":[{token:"variable.other.soy",regex:"\\$[\\w\\.]+"}]};for(var t in e)this.$rules[t]?this.$rules[t].unshift.apply(this.$rules[t],e[t]):this.$rules[t]=e[t];this.normalizeRules()};s.metaData={comment:"SoyTemplate",fileTypes:["soy"],firstLineMatch:"\\{\\s*namespace\\b",foldingStartMarker:"\\{\\s*template\\s+[^\\}]*\\}",foldingStopMarker:"\\{\\s*/\\s*template\\s*\\}",name:"SoyTemplate",scopeName:"source.soy"},r.inherits(s,i),t.SoyTemplateHighlightRules=s}),ace.define("ace/mode/soy_template",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/soy_template_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./soy_template_highlight_rules").SoyTemplateHighlightRules,o=function(){i.call(this),this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/soy_template"}.call(o.prototype),t.Mode=o}) \ No newline at end of file
diff --git a/library/ace/mode-space.js b/library/ace/mode-space.js
new file mode 100644
index 000000000..f13e8effe
--- /dev/null
+++ b/library/ace/mode-space.js
@@ -0,0 +1 @@
+ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/space_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"empty_line",regex:/ */,next:"key"},{token:"empty_line",regex:/$/,next:"key"}],key:[{token:"variable",regex:/\S+/},{token:"empty_line",regex:/$/,next:"start"},{token:"keyword.operator",regex:/ /,next:"value"}],value:[{token:"keyword.operator",regex:/$/,next:"start"},{token:"string",regex:/[^$]/}]}};r.inherits(s,i),t.SpaceHighlightRules=s}),ace.define("ace/mode/space",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/folding/coffee","ace/mode/space_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./folding/coffee").FoldMode,o=e("./space_highlight_rules").SpaceHighlightRules,u=function(){this.HighlightRules=o,this.foldingRules=new s};r.inherits(u,i),function(){this.$id="ace/mode/space"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-sql.js b/library/ace/mode-sql.js
new file mode 100644
index 000000000..fd2f9bbb1
--- /dev/null
+++ b/library/ace/mode-sql.js
@@ -0,0 +1 @@
+ace.define("ace/mode/sql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|when|else|end|type|left|right|join|on|outer|desc|asc|union|create|table|primary|key|if|foreign|not|references|default|null|inner|cross|natural|database|drop|grant",t="true|false",n="avg|count|first|last|max|min|sum|ucase|lcase|mid|len|round|rank|now|format|coalesce|ifnull|isnull|nvl",r="int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|money|real|number|integer",i=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t,"storage.type":r},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"comment",start:"/\\*",end:"\\*/"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]},this.normalizeRules()};r.inherits(s,i),t.SqlHighlightRules=s}),ace.define("ace/mode/sql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sql_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sql_highlight_rules").SqlHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="--",this.$id="ace/mode/sql"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-sqlserver.js b/library/ace/mode-sqlserver.js
new file mode 100644
index 000000000..08b2410a1
--- /dev/null
+++ b/library/ace/mode-sqlserver.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/sqlserver_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="ALL|AND|ANY|BETWEEN|EXISTS|IN|LIKE|NOT|OR|SOME";e+="|NULL|IS|APPLY|INNER|OUTER|LEFT|RIGHT|JOIN|CROSS";var t="OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|AVG|CHECKSUM_AGG|COUNT|COUNT_BIG|GROUPING|GROUPING_ID|MAX|MIN|STDEV|STDEVP|SUM|VAR|VARP|DENSE_RANK|NTILE|RANK|ROW_NUMBER@@DATEFIRST|@@DBTS|@@LANGID|@@LANGUAGE|@@LOCK_TIMEOUT|@@MAX_CONNECTIONS|@@MAX_PRECISION|@@NESTLEVEL|@@OPTIONS|@@REMSERVER|@@SERVERNAME|@@SERVICENAME|@@SPID|@@TEXTSIZE|@@VERSION|CAST|CONVERT|PARSE|TRY_CAST|TRY_CONVERT|TRY_PARSE@@CURSOR_ROWS|@@FETCH_STATUS|CURSOR_STATUS|@@DATEFIRST|@@LANGUAGE|CURRENT_TIMESTAMP|DATEADD|DATEDIFF|DATEFROMPARTS|DATENAME|DATEPART|DATETIME2FROMPARTS|DATETIMEFROMPARTS|DATETIMEOFFSETFROMPARTS|DAY|EOMONTH|GETDATE|GETUTCDATE|ISDATE|MONTH|SET DATEFIRST|SET DATEFORMAT|SET LANGUAGE|SMALLDATETIMEFROMPARTS|SP_HELPLANGUAGE|SWITCHOFFSET|SYSDATETIME|SYSDATETIMEOFFSET|SYSUTCDATETIME|TIMEFROMPARTS|TODATETIMEOFFSET|YEAR|CHOOSE|IIF|ABS|ACOS|ASIN|ATAN|ATN2|CEILING|COS|COT|DEGREES|EXP|FLOOR|LOG|LOG10|PI|POWER|RADIANS|RAND|ROUND|SIGN|SIN|SQRT|SQUARE|TAN|@@PROCID|APPLOCK_MODE|APPLOCK_TEST|APP_NAME|ASSEMBLYPROPERTY|COLUMNPROPERTY|COL_LENGTH|COL_NAME|DATABASEPROPERTYEX|DATABASE_PRINCIPAL_ID|DB_ID|DB_NAME|FILEGROUPPROPERTY|FILEGROUP_ID|FILEGROUP_NAME|FILEPROPERTY|FILE_ID|FILE_IDEX|FILE_NAME|FULLTEXTCATALOGPROPERTY|FULLTEXTSERVICEPROPERTY|INDEXKEY_PROPERTY|INDEXPROPERTY|INDEX_COL|OBJECTPROPERTY|OBJECTPROPERTYEX|OBJECT_DEFINITION|OBJECT_ID|OBJECT_NAME|OBJECT_SCHEMA_NAME|ORIGINAL_DB_NAME|PARSENAME|SCHEMA_ID|SCHEMA_NAME|SCOPE_IDENTITY|SERVERPROPERTY|STATS_DATE|TYPEPROPERTY|TYPE_ID|TYPE_NAME|CERTENCODED|CERTPRIVATEKEY|CURRENT_USER|DATABASE_PRINCIPAL_ID|HAS_PERMS_BY_NAME|IS_MEMBER|IS_ROLEMEMBER|IS_SRVROLEMEMBER|ORIGINAL_LOGIN|PERMISSIONS|PWDCOMPARE|PWDENCRYPT|SCHEMA_ID|SCHEMA_NAME|SESSION_USER|SUSER_ID|SUSER_NAME|SUSER_SID|SUSER_SNAME|SYS.FN_BUILTIN_PERMISSIONS|SYS.FN_GET_AUDIT_FILE|SYS.FN_MY_PERMISSIONS|SYSTEM_USER|USER_ID|USER_NAME|ASCII|CHAR|CHARINDEX|CONCAT|DIFFERENCE|FORMAT|LEN|LOWER|LTRIM|NCHAR|PATINDEX|QUOTENAME|REPLACE|REPLICATE|REVERSE|RTRIM|SOUNDEX|SPACE|STR|STUFF|SUBSTRING|UNICODE|UPPER|$PARTITION|@@ERROR|@@IDENTITY|@@PACK_RECEIVED|@@ROWCOUNT|@@TRANCOUNT|BINARY_CHECKSUM|CHECKSUM|CONNECTIONPROPERTY|CONTEXT_INFO|CURRENT_REQUEST_ID|ERROR_LINE|ERROR_MESSAGE|ERROR_NUMBER|ERROR_PROCEDURE|ERROR_SEVERITY|ERROR_STATE|FORMATMESSAGE|GETANSINULL|GET_FILESTREAM_TRANSACTION_CONTEXT|HOST_ID|HOST_NAME|ISNULL|ISNUMERIC|MIN_ACTIVE_ROWVERSION|NEWID|NEWSEQUENTIALID|ROWCOUNT_BIG|XACT_STATE|@@CONNECTIONS|@@CPU_BUSY|@@IDLE|@@IO_BUSY|@@PACKET_ERRORS|@@PACK_RECEIVED|@@PACK_SENT|@@TIMETICKS|@@TOTAL_ERRORS|@@TOTAL_READ|@@TOTAL_WRITE|FN_VIRTUALFILESTATS|PATINDEX|TEXTPTR|TEXTVALID|COALESCE|NULLIF",n="BIGINT|BINARY|BIT|CHAR|CURSOR|DATE|DATETIME|DATETIME2|DATETIMEOFFSET|DECIMAL|FLOAT|HIERARCHYID|IMAGE|INTEGER|INT|MONEY|NCHAR|NTEXT|NUMERIC|NVARCHAR|REAL|SMALLDATETIME|SMALLINT|SMALLMONEY|SQL_VARIANT|TABLE|TEXT|TIME|TIMESTAMP|TINYINT|UNIQUEIDENTIFIER|VARBINARY|VARCHAR|XML",r="sp_addextendedproc|sp_addextendedproperty|sp_addmessage|sp_addtype|sp_addumpdevice|sp_add_data_file_recover_suspect_db|sp_add_log_file_recover_suspect_db|sp_altermessage|sp_attach_db|sp_attach_single_file_db|sp_autostats|sp_bindefault|sp_bindrule|sp_bindsession|sp_certify_removable|sp_clean_db_file_free_space|sp_clean_db_free_space|sp_configure|sp_control_plan_guide|sp_createstats|sp_create_plan_guide|sp_create_plan_guide_from_handle|sp_create_removable|sp_cycle_errorlog|sp_datatype_info|sp_dbcmptlevel|sp_dbmmonitoraddmonitoring|sp_dbmmonitorchangealert|sp_dbmmonitorchangemonitoring|sp_dbmmonitordropalert|sp_dbmmonitordropmonitoring|sp_dbmmonitorhelpalert|sp_dbmmonitorhelpmonitoring|sp_dbmmonitorresults|sp_db_increased_partitions|sp_delete_backuphistory|sp_depends|sp_describe_first_result_set|sp_describe_undeclared_parameters|sp_detach_db|sp_dropdevice|sp_dropextendedproc|sp_dropextendedproperty|sp_dropmessage|sp_droptype|sp_execute|sp_executesql|sp_getapplock|sp_getbindtoken|sp_help|sp_helpconstraint|sp_helpdb|sp_helpdevice|sp_helpextendedproc|sp_helpfile|sp_helpfilegroup|sp_helpindex|sp_helplanguage|sp_helpserver|sp_helpsort|sp_helpstats|sp_helptext|sp_helptrigger|sp_indexoption|sp_invalidate_textptr|sp_lock|sp_monitor|sp_prepare|sp_prepexec|sp_prepexecrpc|sp_procoption|sp_recompile|sp_refreshview|sp_releaseapplock|sp_rename|sp_renamedb|sp_resetstatus|sp_sequence_get_range|sp_serveroption|sp_setnetname|sp_settriggerorder|sp_spaceused|sp_tableoption|sp_unbindefault|sp_unbindrule|sp_unprepare|sp_updateextendedproperty|sp_updatestats|sp_validname|sp_who|sys.sp_merge_xtp_checkpoint_files|sys.sp_xtp_bind_db_resource_pool|sys.sp_xtp_checkpoint_force_garbage_collection|sys.sp_xtp_control_proc_exec_stats|sys.sp_xtp_control_query_exec_stats|sys.sp_xtp_unbind_db_resource_pool",s="ABSOLUTE|ACTION|ADA|ADD|ADMIN|AFTER|AGGREGATE|ALIAS|ALL|ALLOCATE|ALTER|AND|ANY|ARE|ARRAY|AS|ASC|ASENSITIVE|ASSERTION|ASYMMETRIC|AT|ATOMIC|AUTHORIZATION|BACKUP|BEFORE|BEGIN|BETWEEN|BIT_LENGTH|BLOB|BOOLEAN|BOTH|BREADTH|BREAK|BROWSE|BULK|BY|CALL|CALLED|CARDINALITY|CASCADE|CASCADED|CASE|CATALOG|CHARACTER|CHARACTER_LENGTH|CHAR_LENGTH|CHECK|CHECKPOINT|CLASS|CLOB|CLOSE|CLUSTERED|COALESCE|COLLATE|COLLATION|COLLECT|COLUMN|COMMIT|COMPLETION|COMPUTE|CONDITION|CONNECT|CONNECTION|CONSTRAINT|CONSTRAINTS|CONSTRUCTOR|CONTAINS|CONTAINSTABLE|CONTINUE|CORR|CORRESPONDING|COVAR_POP|COVAR_SAMP|CREATE|CROSS|CUBE|CUME_DIST|CURRENT|CURRENT_CATALOG|CURRENT_DATE|CURRENT_DEFAULT_TRANSFORM_GROUP|CURRENT_PATH|CURRENT_ROLE|CURRENT_SCHEMA|CURRENT_TIME|CURRENT_TRANSFORM_GROUP_FOR_TYPE|CYCLE|DATA|DATABASE|DBCC|DEALLOCATE|DEC|DECLARE|DEFAULT|DEFERRABLE|DEFERRED|DELETE|DENY|DEPTH|DEREF|DESC|DESCRIBE|DESCRIPTOR|DESTROY|DESTRUCTOR|DETERMINISTIC|DIAGNOSTICS|DICTIONARY|DISCONNECT|DISK|DISTINCT|DISTRIBUTED|DOMAIN|DOUBLE|DROP|DUMP|DYNAMIC|EACH|ELEMENT|ELSE|END|END-EXEC|EQUALS|ERRLVL|ESCAPE|EVERY|EXCEPT|EXCEPTION|EXEC|EXECUTE|EXISTS|EXIT|EXTERNAL|EXTRACT|FETCH|FILE|FILLFACTOR|FILTER|FIRST|FOR|FOREIGN|FORTRAN|FOUND|FREE|FREETEXT|FREETEXTTABLE|FROM|FULL|FULLTEXTTABLE|FUNCTION|FUSION|GENERAL|GET|GLOBAL|GO|GOTO|GRANT|GROUP|HAVING|HOLD|HOLDLOCK|HOST|HOUR|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IGNORE|IMMEDIATE|IN|INCLUDE|INDEX|INDICATOR|INITIALIZE|INITIALLY|INNER|INOUT|INPUT|INSENSITIVE|INSERT|INTEGER|INTERSECT|INTERSECTION|INTERVAL|INTO|IS|ISOLATION|ITERATE|JOIN|KEY|KILL|LANGUAGE|LARGE|LAST|LATERAL|LEADING|LESS|LEVEL|LIKE|LIKE_REGEX|LIMIT|LINENO|LN|LOAD|LOCAL|LOCALTIME|LOCALTIMESTAMP|LOCATOR|MAP|MATCH|MEMBER|MERGE|METHOD|MINUTE|MOD|MODIFIES|MODIFY|MODULE|MULTISET|NAMES|NATIONAL|NATURAL|NCLOB|NEW|NEXT|NO|NOCHECK|NONCLUSTERED|NONE|NORMALIZE|NOT|NULL|NULLIF|OBJECT|OCCURRENCES_REGEX|OCTET_LENGTH|OF|OFF|OFFSETS|OLD|ON|ONLY|OPEN|OPERATION|OPTION|OR|ORDER|ORDINALITY|OUT|OUTER|OUTPUT|OVER|OVERLAPS|OVERLAY|PAD|PARAMETER|PARAMETERS|PARTIAL|PARTITION|PASCAL|PATH|PERCENT|PERCENTILE_CONT|PERCENTILE_DISC|PERCENT_RANK|PIVOT|PLAN|POSITION|POSITION_REGEX|POSTFIX|PRECISION|PREFIX|PREORDER|PREPARE|PRESERVE|PRIMARY|PRINT|PRIOR|PRIVILEGES|PROC|PROCEDURE|PUBLIC|RAISERROR|RANGE|READ|READS|READTEXT|RECONFIGURE|RECURSIVE|REF|REFERENCES|REFERENCING|REGR_AVGX|REGR_AVGY|REGR_COUNT|REGR_INTERCEPT|REGR_R2|REGR_SLOPE|REGR_SXX|REGR_SXY|REGR_SYY|RELATIVE|RELEASE|REPLICATION|RESTORE|RESTRICT|RESULT|RETURN|RETURNS|REVERT|REVOKE|ROLE|ROLLBACK|ROLLUP|ROUTINE|ROW|ROWCOUNT|ROWGUIDCOL|ROWS|RULE|SAVE|SAVEPOINT|SCHEMA|SCOPE|SCROLL|SEARCH|SECOND|SECTION|SECURITYAUDIT|SELECT|SEMANTICKEYPHRASETABLE|SEMANTICSIMILARITYDETAILSTABLE|SEMANTICSIMILARITYTABLE|SENSITIVE|SEQUENCE|SESSION|SET|SETS|SETUSER|SHUTDOWN|SIMILAR|SIZE|SOME|SPECIFIC|SPECIFICTYPE|SQL|SQLCA|SQLCODE|SQLERROR|SQLEXCEPTION|SQLSTATE|SQLWARNING|START|STATE|STATEMENT|STATIC|STATISTICS|STDDEV_POP|STDDEV_SAMP|STRUCTURE|SUBMULTISET|SUBSTRING_REGEX|SYMMETRIC|SYSTEM|TABLESAMPLE|TEMPORARY|TERMINATE|TEXTSIZE|THAN|THEN|TIMEZONE_HOUR|TIMEZONE_MINUTE|TO|TOP|TRAILING|TRAN|TRANSACTION|TRANSLATE|TRANSLATE_REGEX|TRANSLATION|TREAT|TRIGGER|TRIM|TRUNCATE|TSEQUAL|UESCAPE|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNPIVOT|UPDATE|UPDATETEXT|USAGE|USE|USER|USING|VALUE|VALUES|VARIABLE|VARYING|VAR_POP|VAR_SAMP|VIEW|WAITFOR|WHEN|WHENEVER|WHERE|WHILE|WIDTH_BUCKET|WINDOW|WITH|WITHIN|WITHIN GROUP|WITHOUT|WORK|WRITE|WRITETEXT|XMLAGG|XMLATTRIBUTES|XMLBINARY|XMLCAST|XMLCOMMENT|XMLCONCAT|XMLDOCUMENT|XMLELEMENT|XMLEXISTS|XMLFOREST|XMLITERATE|XMLNAMESPACES|XMLPARSE|XMLPI|XMLQUERY|XMLSERIALIZE|XMLTABLE|XMLTEXT|XMLVALIDATE|ZONE";s+="|KEEPIDENTITY|KEEPDEFAULTS|IGNORE_CONSTRAINTS|IGNORE_TRIGGERS|XLOCK|FORCESCAN|FORCESEEK|HOLDLOCK|NOLOCK|NOWAIT|PAGLOCK|READCOMMITTED|READCOMMITTEDLOCK|READPAST|READUNCOMMITTED|REPEATABLEREAD|ROWLOCK|SERIALIZABLE|SNAPSHOT|SPATIAL_WINDOW_MAX_CELLS|TABLOCK|TABLOCKX|UPDLOCK|XLOCK|IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX|EXPAND|VIEWS|FAST|FORCE|KEEP|KEEPFIXED|MAXDOP|MAXRECURSION|OPTIMIZE|PARAMETERIZATION|SIMPLE|FORCED|RECOMPILE|ROBUST|PLAN|SPATIAL_WINDOW_MAX_CELLS|NOEXPAND|HINT",s+="|LOOP|HASH|MERGE|REMOTE",s+="|TRY|CATCH|THROW",s+="|TYPE",s=s.split("|"),s=s.filter(function(r,i,s){return e.split("|").indexOf(r)===-1&&t.split("|").indexOf(r)===-1&&n.split("|").indexOf(r)===-1}),s=s.sort().join("|");var o=this.createKeywordMapper({"constant.language":e,"storage.type":n,"support.function":t,"support.storedprocedure":r,keyword:s},"identifier",!0),u="SET ANSI_DEFAULTS|SET ANSI_NULLS|SET ANSI_NULL_DFLT_OFF|SET ANSI_NULL_DFLT_ON|SET ANSI_PADDING|SET ANSI_WARNINGS|SET ARITHABORT|SET ARITHIGNORE|SET CONCAT_NULL_YIELDS_NULL|SET CURSOR_CLOSE_ON_COMMIT|SET DATEFIRST|SET DATEFORMAT|SET DEADLOCK_PRIORITY|SET FIPS_FLAGGER|SET FMTONLY|SET FORCEPLAN|SET IDENTITY_INSERT|SET IMPLICIT_TRANSACTIONS|SET LANGUAGE|SET LOCK_TIMEOUT|SET NOCOUNT|SET NOEXEC|SET NUMERIC_ROUNDABORT|SET OFFSETS|SET PARSEONLY|SET QUERY_GOVERNOR_COST_LIMIT|SET QUOTED_IDENTIFIER|SET REMOTE_PROC_TRANSACTIONS|SET ROWCOUNT|SET SHOWPLAN_ALL|SET SHOWPLAN_TEXT|SET SHOWPLAN_XML|SET STATISTICS IO|SET STATISTICS PROFILE|SET STATISTICS TIME|SET STATISTICS XML|SET TEXTSIZE|SET XACT_ABORT".split("|"),a="READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SNAPSHOP|SERIALIZABLE".split("|");for(var f=0;f<a.length;f++)u.push("SET TRANSACTION ISOLATION LEVEL "+a[f]);this.$rules={start:[{token:"string.start",regex:"'",next:[{token:"constant.language.escape",regex:/''/},{token:"string.end",next:"start",regex:"'"},{defaultToken:"string"}]},i.getStartRule("doc-start"),{token:"comment",regex:"--.*$"},{token:"comment",start:"/\\*",end:"\\*/"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:o,regex:"@{0,2}[a-zA-Z_$][a-zA-Z0-9_$]*\\b(?!])"},{token:"constant.class",regex:"@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=|\\*"},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"punctuation",regex:",|;"},{token:"text",regex:"\\s+"}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}]};for(var f=0;f<u.length;f++)this.$rules.start.unshift({token:"set.statement",regex:u[f]});this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules();var l=[],c=function(e,t){e.forEach(function(e){l.push({name:e,value:e,score:0,meta:t})})};c(r.split("|"),"procedure"),c(e.split("|"),"operator"),c(t.split("|"),"function"),c(n.split("|"),"type"),c(u,"statement"),c(s.split("|"),"keyword"),this.completions=l};r.inherits(o,s),t.SqlHighlightRules=o}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/folding/sqlserver",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./cstyle").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/(\bCASE\b|\bBEGIN\b)|^\s*(\/\*)/i,this.startRegionRe=/^\s*(\/\*|--)#?region\b/,this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.getBeginEndBlock(e,n,o,s[1]);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;return},this.getBeginEndBlock=function(e,t,n,r){var s={row:t,column:n+r.length},o=e.getLength(),u,a=1,f=/(\bCASE\b|\bBEGIN\b)|(\bEND\b)/i;while(++t<o){u=e.getLine(t);var l=f.exec(u);if(!l)continue;l[1]?a++:a--;if(!a)break}var c=t;if(c>s.row)return new i(s.row,s.column,c,u.length)}}.call(o.prototype)}),ace.define("ace/mode/sqlserver",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sqlserver_highlight_rules","ace/range","ace/mode/folding/sqlserver"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sqlserver_highlight_rules").SqlHighlightRules,o=e("../range").Range,u=e("./folding/sqlserver").FoldMode,a=function(){this.HighlightRules=s,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="--",this.blockComment={start:"/*",end:"*/"},this.getCompletions=function(e,t,n,r){return t.$mode.$highlightRules.completions},this.$id="ace/mode/sql"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-stylus.js b/library/ace/mode-stylus.js
new file mode 100644
index 000000000..3cfff91e0
--- /dev/null
+++ b/library/ace/mode-stylus.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/stylus_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./css_highlight_rules"),o=function(){var e=this.createKeywordMapper({"support.type":s.supportType,"support.function":s.supportFunction,"support.constant":s.supportConstant,"support.constant.color":s.supportConstantColor,"support.constant.fonts":s.supportConstantFonts},"text",!0);this.$rules={start:[{token:"comment",regex:/\/\/.*$/},{token:"comment",regex:/\/\*/,next:"comment"},{token:["entity.name.function.stylus","text"],regex:"^([-a-zA-Z_][-\\w]*)?(\\()"},{token:["entity.other.attribute-name.class.stylus"],regex:"\\.-?[_a-zA-Z]+[_a-zA-Z0-9-]*"},{token:["entity.language.stylus"],regex:"^ *&"},{token:["variable.language.stylus"],regex:"(arguments)"},{token:["keyword.stylus"],regex:"@[-\\w]+"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:s.pseudoElements},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:s.pseudoClasses},{token:["entity.name.tag.stylus"],regex:"(?:\\b)(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(?:h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|samp|script|section|select|small|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)(?:\\b)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation.definition.entity.stylus","entity.other.attribute-name.id.stylus"],regex:"(#)([a-zA-Z][a-zA-Z0-9_-]*)"},{token:"meta.vendor-prefix.stylus",regex:"-webkit-|-moz\\-|-ms-|-o-"},{token:"keyword.control.stylus",regex:"(?:!important|for|in|return|true|false|null|if|else|unless|return)\\b"},{token:"keyword.operator.stylus",regex:"!|~|\\+|-|(?:\\*)?\\*|\\/|%|(?:\\.)\\.\\.|<|>|(?:=|:|\\?|\\+|-|\\*|\\/|%|<|>)?=|!="},{token:"keyword.operator.stylus",regex:"(?:in|is(?:nt)?|not)\\b"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:s.numRe},{token:"keyword",regex:"(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\\b"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"}],qstring:[{token:"string",regex:"[^'\\\\]+"},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"}]}};r.inherits(o,i),t.StylusHighlightRules=o}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/stylus",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/stylus_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./stylus_highlight_rules").StylusHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/stylus"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-svg.js b/library/ace/mode-svg.js
new file mode 100644
index 000000000..6dc844f4f
--- /dev/null
+++ b/library/ace/mode-svg.js
@@ -0,0 +1 @@
+ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./xml_highlight_rules").XmlHighlightRules,u=e("./behaviour/xml").XmlBehaviour,a=e("./folding/xml").FoldMode,f=e("../worker/worker_client").WorkerClient,l=function(){this.HighlightRules=o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(l,s),function(){this.voidElements=i.arrayToMap([]),this.blockComment={start:"<!--",end:"-->"},this.createWorker=function(e){var t=new f(["ace"],"ace/mode/xml_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/xml"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/svg_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript_highlight_rules").JavaScriptHighlightRules,s=e("./xml_highlight_rules").XmlHighlightRules,o=function(){s.call(this),this.embedTagRules(i,"js-","script"),this.normalizeRules()};r.inherits(o,s),t.SvgHighlightRules=o}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/svg",["require","exports","module","ace/lib/oop","ace/mode/xml","ace/mode/javascript","ace/mode/svg_highlight_rules","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./xml").Mode,s=e("./javascript").Mode,o=e("./svg_highlight_rules").SvgHighlightRules,u=e("./folding/mixed").FoldMode,a=e("./folding/xml").FoldMode,f=e("./folding/cstyle").FoldMode,l=function(){i.call(this),this.HighlightRules=o,this.createModeDelegates({"js-":s}),this.foldingRules=new u(new a,{"js-":new f})};r.inherits(l,i),function(){this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.$id="ace/mode/svg"}.call(l.prototype),t.Mode=l}) \ No newline at end of file
diff --git a/library/ace/mode-swift.js b/library/ace/mode-swift.js
new file mode 100644
index 000000000..7324c6bd6
--- /dev/null
+++ b/library/ace/mode-swift.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/swift_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){function t(e,t){var n=t.nestable||t.interpolation,r=t.interpolation&&t.interpolation.nextState||"start",s={regex:e+(t.multiline?"":"(?=.)"),token:"string.start"},o=[t.escape&&{regex:t.escape,token:"character.escape"},t.interpolation&&{token:"paren.quasi.start",regex:i.escapeRegExp(t.interpolation.lead+t.interpolation.open),push:r},t.error&&{regex:t.error,token:"error.invalid"},{regex:e+(t.multiline?"":"|$"),token:"string.end",next:n?"pop":"start"},{defaultToken:"string"}].filter(Boolean);n?s.push=o:s.next=o;if(!t.interpolation)return s;var u=t.interpolation.open,a=t.interpolation.close,f={regex:"["+i.escapeRegExp(u+a)+"]",onMatch:function(e,t,n){this.next=e==u?this.nextState:"";if(e==u&&n.length)return n.unshift("start",t),"paren";if(e==a&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e==u?"paren.lparen":"paren.rparen"},nextState:r};return[f,s]}function n(){return[{token:"comment",regex:"\\/\\/(?=.)",next:[s.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}]},s.getStartRule("doc-start"),{token:"comment.start",regex:/\/\*/,stateName:"nested_comment",push:[s.getTagRule(),{token:"comment.start",regex:/\/\*/,push:"nested_comment"},{token:"comment.end",regex:"\\*\\/",next:"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var e=this.createKeywordMapper({"variable.language":"",keyword:"__COLUMN__|__FILE__|__FUNCTION__|__LINE__|as|associativity|break|case|class|continue|default|deinit|didSet|do|dynamicType|else|enum|extension|fallthrough|for|func|get|if|import|in|infix|init|inout|is|left|let|let|mutating|new|none|nonmutating|operator|override|postfix|precedence|prefix|protocol|return|right|safe|Self|self|set|struct|subscript|switch|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|convenience|dynamic|final|infix|lazy|mutating|nonmutating|optional|override|postfix|prefix|required|static|guard|defer","storage.type":"bool|double|Double|extension|float|Float|int|Int|private|public|string|String","constant.language":"false|Infinity|NaN|nil|no|null|null|off|on|super|this|true|undefined|yes","support.function":""},"identifier");this.$rules={start:[t('"',{escape:/\\(?:[0\\tnr"']|u{[a-fA-F1-9]{0,8}})/,interpolation:{lead:"\\",open:"(",close:")"},error:/\\./,multiline:!1}),n({type:"c",nestable:!0}),{regex:/@[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/,token:"variable.parameter"},{regex:/[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/,token:e},{token:"constant.numeric",regex:/[+-]?(?:0(?:b[01]+|o[0-7]+|x[\da-fA-F])|\d+(?:(?:\.\d*)?(?:[PpEe][+-]?\d+)?)\b)/},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/}]},this.embedRules(s,"doc-",[s.getEndRule("start")]),this.normalizeRules()};r.inherits(u,o),t.HighlightRules=u}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/swift",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/swift_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./swift_highlight_rules").HighlightRules,o=e("./behaviour/cstyle").CstyleBehaviour,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.foldingRules=new u,this.$behaviour=new o};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/",nestable:!0},this.$id="ace/mode/swift"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-swig.js b/library/ace/mode-swig.js
new file mode 100644
index 000000000..3ddc0a7b0
--- /dev/null
+++ b/library/ace/mode-swig.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},n,{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[n,{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]}],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/swig",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./html_highlight_rules").HtmlHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){s.call(this);var e="autoescape|block|else|elif|extends|filter|for|if|import|include|macro|parent|raw|set|spaceless";e=e+"|end"+e.replace(/\|/g,"|end");var t="addslashes|capitalize|date|default|escape|first|groupBy|join|json|last|lower|raw|replace|reverse|safe|sort|striptags|title|uniq|upper|url_encode|url_decode",n="first|last|index|index0|revindex|revindex0|key",r="null|none|true|false|loop",i="in|is|and|or|not|as|with|only",o=this.createKeywordMapper({"keyword.control.swig":e,"support.function.swig":t+"|"+n,"keyword.operator.swig":i,"constant.language.swig":r},"identifier");for(var u in this.$rules)this.$rules[u].unshift({token:"variable.other.readwrite.local.swig",regex:"\\{\\{-?",push:"swig-start"},{token:"meta.tag.swig",regex:"\\{%-?",push:"swig-start"},{token:"comment.block.swig",regex:"\\{#-?",push:"swig-comment"});this.$rules["swig-comment"]=[{token:"comment.block.swig",regex:".*-?#}",next:"pop"}],this.$rules["swig-start"]=[{token:"variable.other.readwrite.local.swig",regex:"-?\\}\\}",next:"pop"},{token:"meta.tag.swig",regex:"-?%\\}",next:"pop"},{token:"string",regex:"'",next:"swig-qstring"},{token:"string",regex:'"',next:"swig-qqstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:o,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator.assignment",regex:"=|~"},{token:"keyword.operator.comparison",regex:"==|!=|<|>|>=|<=|==="},{token:"keyword.operator.arithmetic",regex:"\\+|-|/|%|//|\\*|\\*\\*"},{token:"keyword.operator.other",regex:"\\.\\.|\\|"},{token:"punctuation.operator",regex:/\?|\:|\,|\;|\./},{token:"paren.lparen",regex:/[\[\({]/},{token:"paren.rparen",regex:/[\])}]/},{token:"text",regex:"\\s+"}],this.$rules["swig-qqstring"]=[{token:"constant.language.escape",regex:/\\[\\"$#ntr]|#{[^"}]*}/},{token:"string",regex:'"',next:"swig-start"},{defaultToken:"string"}],this.$rules["swig-qstring"]=[{token:"constant.language.escape",regex:/\\[\\'ntr]}/},{token:"string",regex:"'",next:"swig-start"},{defaultToken:"string"}],this.normalizeRules()};r.inherits(u,o),t.SwigHighlightRules=u}) \ No newline at end of file
diff --git a/library/ace/mode-tcl.js b/library/ace/mode-tcl.js
new file mode 100644
index 000000000..8780c6053
--- /dev/null
+++ b/library/ace/mode-tcl.js
@@ -0,0 +1 @@
+ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/tcl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:"#.*\\\\$",next:"commentfollow"},{token:"comment",regex:"#.*$"},{token:"support.function",regex:"[\\\\]$",next:"splitlineStart"},{token:"text",regex:'[\\\\](?:["]|[{]|[}]|[[]|[]]|[$]|[])'},{token:"text",regex:"^|[^{][;][^}]|[/\r/]",next:"commandItem"},{token:"string",regex:'[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'[ ]*["]',next:"qqstring"},{token:"variable.instance",regex:"[$]",next:"variable"},{token:"support.function",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::"},{token:"identifier",regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"paren.lparen",regex:"[[{]",next:"commandItem"},{token:"paren.lparen",regex:"[(]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],commandItem:[{token:"comment",regex:"#.*\\\\$",next:"commentfollow"},{token:"comment",regex:"#.*$",next:"start"},{token:"string",regex:'[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"variable.instance",regex:"[$]",next:"variable"},{token:"support.function",regex:"(?:[:][:])[a-zA-Z0-9_/]+(?:[:][:])",next:"commandItem"},{token:"support.function",regex:"[a-zA-Z0-9_/]+(?:[:][:])",next:"commandItem"},{token:"support.function",regex:"(?:[:][:])",next:"commandItem"},{token:"paren.rparen",regex:"[\\])}]"},{token:"support.function",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::"},{token:"keyword",regex:"[a-zA-Z0-9_/]+",next:"start"}],commentfollow:[{token:"comment",regex:".*\\\\$",next:"commentfollow"},{token:"comment",regex:".+",next:"start"}],splitlineStart:[{token:"text",regex:"^.",next:"start"}],variable:[{token:"variable.instance",regex:"[a-zA-Z_\\d]+(?:[(][a-zA-Z_\\d]+[)])?",next:"start"},{token:"variable.instance",regex:"{?[a-zA-Z_\\d]+}?",next:"start"}],qqstring:[{token:"string",regex:'(?:[^\\\\]|\\\\.)*?["]',next:"start"},{token:"string",regex:".+"}]}};r.inherits(s,i),t.TclHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/tcl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/folding/cstyle","ace/mode/tcl_highlight_rules","ace/mode/matching_brace_outdent","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./folding/cstyle").FoldMode,o=e("./tcl_highlight_rules").TclHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("../range").Range,f=function(){this.HighlightRules=o,this.$outdent=new u,this.foldingRules=new s};r.inherits(f,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/tcl"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-tex.js b/library/ace/mode-tex.js
new file mode 100644
index 000000000..e841c3889
--- /dev/null
+++ b/library/ace/mode-tex.js
@@ -0,0 +1 @@
+ace.define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(e){e||(e="text"),this.$rules={start:[{token:"comment",regex:"%.*$"},{token:e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b",next:"nospell"},{token:"keyword",regex:"\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:e,regex:"\\s+"}],nospell:[{token:"comment",regex:"%.*$",next:"start"},{token:"nospell."+e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b"},{token:"keyword",regex:"\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])",next:"start"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])]"},{token:"paren.keyword.operator",regex:"}",next:"start"},{token:"nospell."+e,regex:"\\s+"},{token:"nospell."+e,regex:"\\w+"}]}};r.inherits(o,s),t.TexHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/tex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./text_highlight_rules").TextHighlightRules,o=e("./tex_highlight_rules").TexHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=function(e){e?this.HighlightRules=s:this.HighlightRules=o,this.$outdent=new u};r.inherits(a,i),function(){this.lineCommentStart="%",this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.allowAutoInsert=function(){return!1},this.$id="ace/mode/tex"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/mode-text.js b/library/ace/mode-text.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/library/ace/mode-text.js
diff --git a/library/ace/mode-textile.js b/library/ace/mode-textile.js
new file mode 100644
index 000000000..68a283f76
--- /dev/null
+++ b/library/ace/mode-textile.js
@@ -0,0 +1 @@
+ace.define("ace/mode/textile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:function(e){return e.charAt(0)=="h"?"markup.heading."+e.charAt(1):"markup.heading"},regex:"h1|h2|h3|h4|h5|h6|bq|p|bc|pre",next:"blocktag"},{token:"keyword",regex:"[\\*]+|[#]+"},{token:"text",regex:".+"}],blocktag:[{token:"keyword",regex:"\\. ",next:"start"},{token:"keyword",regex:"\\(",next:"blocktagproperties"}],blocktagproperties:[{token:"keyword",regex:"\\)",next:"blocktag"},{token:"string",regex:"[a-zA-Z0-9\\-_]+"},{token:"keyword",regex:"#"}]}};r.inherits(s,i),t.TextileHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/textile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/textile_highlight_rules","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./textile_highlight_rules").TextileHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=function(){this.HighlightRules=s,this.$outdent=new o};r.inherits(u,i),function(){this.type="text",this.getNextLineIndent=function(e,t,n){return e=="intag"?n:""},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/textile"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-toml.js b/library/ace/mode-toml.js
new file mode 100644
index 000000000..5f8180b57
--- /dev/null
+++ b/library/ace/mode-toml.js
@@ -0,0 +1 @@
+ace.define("ace/mode/toml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({"constant.language.boolean":"true|false"},"identifier"),t="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b";this.$rules={start:[{token:"comment.toml",regex:/#.*$/},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:["variable.keygroup.toml"],regex:"(?:^\\s*)(\\[\\[([^\\]]+)\\]\\])"},{token:["variable.keygroup.toml"],regex:"(?:^\\s*)(\\[([^\\]]+)\\])"},{token:e,regex:t},{token:"support.date.toml",regex:"\\d{4}-\\d{2}-\\d{2}(T)\\d{2}:\\d{2}:\\d{2}(Z)"},{token:"constant.numeric.toml",regex:"-?\\d+(\\.?\\d+)?"}],qqstring:[{token:"string",regex:"\\\\$",next:"qqstring"},{token:"constant.language.escape",regex:'\\\\[0tnr"\\\\]'},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.TomlHighlightRules=s}),ace.define("ace/mode/folding/ini",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/^\s*\[([^\])]*)]\s*(?:$|[;#])/,this.getFoldWidgetRange=function(e,t,n){var r=this.foldingStartMarker,s=e.getLine(n),o=s.match(r);if(!o)return;var u=o[1]+".",a=s.length,f=e.getLength(),l=n,c=n;while(++n<f){s=e.getLine(n);if(/^\s*$/.test(s))continue;o=s.match(r);if(o&&o[1].lastIndexOf(u,0)!==0)break;c=n}if(c>l){var h=e.getLine(c).length;return new i(l,a,c,h)}}}.call(o.prototype)}),ace.define("ace/mode/toml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/toml_highlight_rules","ace/mode/folding/ini"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./toml_highlight_rules").TomlHighlightRules,o=e("./folding/ini").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="#",this.$id="ace/mode/toml"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-twig.js b/library/ace/mode-twig.js
new file mode 100644
index 000000000..cbb3c748a
--- /dev/null
+++ b/library/ace/mode-twig.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[A-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/twig_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./html_highlight_rules").HtmlHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){s.call(this);var e="autoescape|block|do|embed|extends|filter|flush|for|from|if|import|include|macro|sandbox|set|spaceless|use|verbatim";e=e+"|end"+e.replace(/\|/g,"|end");var t="abs|batch|capitalize|convert_encoding|date|date_modify|default|e|escape|first|format|join|json_encode|keys|last|length|lower|merge|nl2br|number_format|raw|replace|reverse|slice|sort|split|striptags|title|trim|upper|url_encode",n="attribute|constant|cycle|date|dump|parent|random|range|template_from_string",r="constant|divisibleby|sameas|defined|empty|even|iterable|odd",i="null|none|true|false",o="b-and|b-xor|b-or|in|is|and|or|not",u=this.createKeywordMapper({"keyword.control.twig":e,"support.function.twig":[t,n,r].join("|"),"keyword.operator.twig":o,"constant.language.twig":i},"identifier");for(var a in this.$rules)this.$rules[a].unshift({token:"variable.other.readwrite.local.twig",regex:"\\{\\{-?",push:"twig-start"},{token:"meta.tag.twig",regex:"\\{%-?",push:"twig-start"},{token:"comment.block.twig",regex:"\\{#-?",push:"twig-comment"});this.$rules["twig-comment"]=[{token:"comment.block.twig",regex:".*-?#\\}",next:"pop"}],this.$rules["twig-start"]=[{token:"variable.other.readwrite.local.twig",regex:"-?\\}\\}",next:"pop"},{token:"meta.tag.twig",regex:"-?%\\}",next:"pop"},{token:"string",regex:"'",next:"twig-qstring"},{token:"string",regex:'"',next:"twig-qqstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator.assignment",regex:"=|~"},{token:"keyword.operator.comparison",regex:"==|!=|<|>|>=|<=|==="},{token:"keyword.operator.arithmetic",regex:"\\+|-|/|%|//|\\*|\\*\\*"},{token:"keyword.operator.other",regex:"\\.\\.|\\|"},{token:"punctuation.operator",regex:/\?|\:|\,|\;|\./},{token:"paren.lparen",regex:/[\[\({]/},{token:"paren.rparen",regex:/[\])}]/},{token:"text",regex:"\\s+"}],this.$rules["twig-qqstring"]=[{token:"constant.language.escape",regex:/\\[\\"$#ntr]|#{[^"}]*}/},{token:"string",regex:'"',next:"twig-start"},{defaultToken:"string"}],this.$rules["twig-qstring"]=[{token:"constant.language.escape",regex:/\\[\\'ntr]}/},{token:"string",regex:"'",next:"twig-start"},{defaultToken:"string"}],this.normalizeRules()};r.inherits(u,o),t.TwigHighlightRules=u}),ace.define("ace/mode/twig",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/twig_highlight_rules","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./twig_highlight_rules").TwigHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=function(){i.call(this),this.HighlightRules=s,this.$outdent=new o};r.inherits(u,i),function(){this.blockComment={start:"{#",end:"#}"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/twig"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-typescript.js b/library/ace/mode-typescript.js
new file mode 100644
index 000000000..4f17e478c
--- /dev/null
+++ b/library/ace/mode-typescript.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/typescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript_highlight_rules").JavaScriptHighlightRules,s=function(e){var t=[{token:["keyword.operator.ts","text","variable.parameter.function.ts","text"],regex:"\\b(module)(\\s*)([a-zA-Z0-9_?.$][\\w?.$]*)(\\s*\\{)"},{token:["storage.type.variable.ts","text","keyword.other.ts","text"],regex:"(super)(\\s*\\()([a-zA-Z0-9,_?.$\\s]+\\s*)(\\))"},{token:["entity.name.function.ts","paren.lparen","paren.rparen"],regex:"([a-zA-Z_?.$][\\w?.$]*)(\\()(\\))"},{token:["variable.parameter.function.ts","text","variable.parameter.function.ts"],regex:"([a-zA-Z0-9_?.$][\\w?.$]*)(\\s*:\\s*)([a-zA-Z0-9_?.$][\\w?.$]*)"},{token:["keyword.operator.ts"],regex:"(?:\\b(constructor|declare|interface|as|AS|public|private|class|extends|export|super)\\b)"},{token:["storage.type.variable.ts"],regex:"(?:\\b(this\\.|string\\b|bool\\b|number)\\b)"},{token:["keyword.operator.ts","storage.type.variable.ts","keyword.operator.ts","storage.type.variable.ts"],regex:"(class)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*\\s+)(extends)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*\\s+)?"},{token:"keyword",regex:"(?:super|export|class|extends|import)\\b"}],n=(new i({jsx:e&&e.jsx})).getRules();n.start=t.concat(n.start),this.$rules=n};r.inherits(s,i),t.TypeScriptHighlightRules=s}),ace.define("ace/mode/typescript",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/typescript_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./typescript_highlight_rules").TypeScriptHighlightRules,o=e("./behaviour/cstyle").CstyleBehaviour,u=e("./folding/cstyle").FoldMode,a=e("./matching_brace_outdent").MatchingBraceOutdent,f=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new o,this.foldingRules=new u};r.inherits(f,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/typescript"}.call(f.prototype),t.Mode=f}) \ No newline at end of file
diff --git a/library/ace/mode-vala.js b/library/ace/mode-vala.js
new file mode 100644
index 000000000..ebfb9bf44
--- /dev/null
+++ b/library/ace/mode-vala.js
@@ -0,0 +1 @@
+ace.define("ace/mode/vala_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["meta.using.vala","keyword.other.using.vala","meta.using.vala","storage.modifier.using.vala","meta.using.vala","punctuation.terminator.vala"],regex:"^(\\s*)(using)\\b(?:(\\s*)([^ ;$]+)(\\s*)((?:;)?))?"},{include:"#code"}],"#all-types":[{include:"#primitive-arrays"},{include:"#primitive-types"},{include:"#object-types"}],"#annotations":[{token:["storage.type.annotation.vala","punctuation.definition.annotation-arguments.begin.vala"],regex:"(@[^ (]+)(\\()",push:[{token:"punctuation.definition.annotation-arguments.end.vala",regex:"\\)",next:"pop"},{token:["constant.other.key.vala","text","keyword.operator.assignment.vala"],regex:"(\\w*)(\\s*)(=)"},{include:"#code"},{token:"punctuation.seperator.property.vala",regex:","},{defaultToken:"meta.declaration.annotation.vala"}]},{token:"storage.type.annotation.vala",regex:"@\\w*"}],"#anonymous-classes-and-new":[{token:"keyword.control.new.vala",regex:"\\bnew\\b",push_disabled:[{token:"text",regex:"(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=;)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=;)",next:"pop"},{token:["storage.type.vala","text"],regex:"(\\w+)(\\s*)(?=\\[)",push:[{token:"text",regex:"}|(?=;|\\))",next:"pop"},{token:"text",regex:"\\[",push:[{token:"text",regex:"\\]",next:"pop"},{include:"#code"}]},{token:"text",regex:"{",push:[{token:"text",regex:"(?=})",next:"pop"},{include:"#code"}]}]},{token:"text",regex:"(?=\\w.*\\()",push:[{token:"text",regex:"(?<=\\))",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<=\\))",next:"pop"},{include:"#object-types"},{token:"text",regex:"\\(",push:[{token:"text",regex:"\\)",next:"pop"},{include:"#code"}]}]},{token:"meta.inner-class.vala",regex:"{",push:[{token:"meta.inner-class.vala",regex:"}",next:"pop"},{include:"#class-body"},{defaultToken:"meta.inner-class.vala"}]}]}],"#assertions":[{token:["keyword.control.assert.vala","meta.declaration.assertion.vala"],regex:"\\b(assert|requires|ensures)(\\s)",push:[{token:"meta.declaration.assertion.vala",regex:"$",next:"pop"},{token:"keyword.operator.assert.expression-seperator.vala",regex:":"},{include:"#code"},{defaultToken:"meta.declaration.assertion.vala"}]}],"#class":[{token:"meta.class.vala",regex:"(?=\\w?[\\w\\s]*(?:class|(?:@)?interface|enum|struct|namespace)\\s+\\w+)",push:[{token:"paren.vala",regex:"}",next:"pop"},{include:"#storage-modifiers"},{include:"#comments"},{token:["storage.modifier.vala","meta.class.identifier.vala","entity.name.type.class.vala"],regex:"(class|(?:@)?interface|enum|struct|namespace)(\\s+)([\\w\\.]+)"},{token:"storage.modifier.extends.vala",regex:":",push:[{token:"meta.definition.class.inherited.classes.vala",regex:"(?={|,)",next:"pop"},{include:"#object-types-inherited"},{include:"#comments"},{defaultToken:"meta.definition.class.inherited.classes.vala"}]},{token:["storage.modifier.implements.vala","meta.definition.class.implemented.interfaces.vala"],regex:"(,)(\\s)",push:[{token:"meta.definition.class.implemented.interfaces.vala",regex:"(?=\\{)",next:"pop"},{include:"#object-types-inherited"},{include:"#comments"},{defaultToken:"meta.definition.class.implemented.interfaces.vala"}]},{token:"paren.vala",regex:"{",push:[{token:"paren.vala",regex:"(?=})",next:"pop"},{include:"#class-body"},{defaultToken:"meta.class.body.vala"}]},{defaultToken:"meta.class.vala"}],comment:"attempting to put namespace in here."}],"#class-body":[{include:"#comments"},{include:"#class"},{include:"#enums"},{include:"#methods"},{include:"#annotations"},{include:"#storage-modifiers"},{include:"#code"}],"#code":[{include:"#comments"},{include:"#class"},{token:"text",regex:"{",push:[{token:"text",regex:"}",next:"pop"},{include:"#code"}]},{include:"#assertions"},{include:"#parens"},{include:"#constants-and-special-vars"},{include:"#anonymous-classes-and-new"},{include:"#keywords"},{include:"#storage-modifiers"},{include:"#strings"},{include:"#all-types"}],"#comments":[{token:"punctuation.definition.comment.vala",regex:"/\\*\\*/"},{include:"text.html.javadoc"},{include:"#comments-inline"}],"#comments-inline":[{token:"punctuation.definition.comment.vala",regex:"/\\*",push:[{token:"punctuation.definition.comment.vala",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.vala"}]},{token:["text","punctuation.definition.comment.vala","comment.line.double-slash.vala"],regex:"(\\s*)(//)(.*$)"}],"#constants-and-special-vars":[{token:"constant.language.vala",regex:"\\b(?:true|false|null)\\b"},{token:"variable.language.vala",regex:"\\b(?:this|base)\\b"},{token:"constant.numeric.vala",regex:"\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:[LlFfUuDd]|UL|ul)?\\b"},{token:["keyword.operator.dereference.vala","constant.other.vala"],regex:"((?:\\.)?)\\b([A-Z][A-Z0-9_]+)(?!<|\\.class|\\s*\\w+\\s*=)\\b"}],"#enums":[{token:"text",regex:"^(?=\\s*[A-Z0-9_]+\\s*(?:{|\\(|,))",push:[{token:"text",regex:"(?=;|})",next:"pop"},{token:"constant.other.enum.vala",regex:"\\w+",push:[{token:"meta.enum.vala",regex:"(?=,|;|})",next:"pop"},{include:"#parens"},{token:"text",regex:"{",push:[{token:"text",regex:"}",next:"pop"},{include:"#class-body"}]},{defaultToken:"meta.enum.vala"}]}]}],"#keywords":[{token:"keyword.control.catch-exception.vala",regex:"\\b(?:try|catch|finally|throw)\\b"},{token:"keyword.control.vala",regex:"\\?|:|\\?\\?"},{token:"keyword.control.vala",regex:"\\b(?:return|break|case|continue|default|do|while|for|foreach|switch|if|else|in|yield|get|set|value)\\b"},{token:"keyword.operator.vala",regex:"\\b(?:typeof|is|as)\\b"},{token:"keyword.operator.comparison.vala",regex:"==|!=|<=|>=|<>|<|>"},{token:"keyword.operator.assignment.vala",regex:"="},{token:"keyword.operator.increment-decrement.vala",regex:"\\-\\-|\\+\\+"},{token:"keyword.operator.arithmetic.vala",regex:"\\-|\\+|\\*|\\/|%"},{token:"keyword.operator.logical.vala",regex:"!|&&|\\|\\|"},{token:"keyword.operator.dereference.vala",regex:"\\.(?=\\S)",originalRegex:"(?<=\\S)\\.(?=\\S)"},{token:"punctuation.terminator.vala",regex:";"},{token:"keyword.operator.ownership",regex:"owned|unowned"}],"#methods":[{token:"meta.method.vala",regex:"(?!new)(?=\\w.*\\s+)(?=[^=]+\\()",push:[{token:"paren.vala",regex:"}|(?=;)",next:"pop"},{include:"#storage-modifiers"},{token:["entity.name.function.vala","meta.method.identifier.vala"],regex:"([\\~\\w\\.]+)(\\s*\\()",push:[{token:"meta.method.identifier.vala",regex:"\\)",next:"pop"},{include:"#parameters"},{defaultToken:"meta.method.identifier.vala"}]},{token:"meta.method.return-type.vala",regex:"(?=\\w.*\\s+\\w+\\s*\\()",push:[{token:"meta.method.return-type.vala",regex:"(?=\\w+\\s*\\()",next:"pop"},{include:"#all-types"},{defaultToken:"meta.method.return-type.vala"}]},{include:"#throws"},{token:"paren.vala",regex:"{",push:[{token:"paren.vala",regex:"(?=})",next:"pop"},{include:"#code"},{defaultToken:"meta.method.body.vala"}]},{defaultToken:"meta.method.vala"}]}],"#namespace":[{token:"text",regex:"^(?=\\s*[A-Z0-9_]+\\s*(?:{|\\(|,))",push:[{token:"text",regex:"(?=;|})",next:"pop"},{token:"constant.other.namespace.vala",regex:"\\w+",push:[{token:"meta.namespace.vala",regex:"(?=,|;|})",next:"pop"},{include:"#parens"},{token:"text",regex:"{",push:[{token:"text",regex:"}",next:"pop"},{include:"#code"}]},{defaultToken:"meta.namespace.vala"}]}],comment:"This is not quite right. See the class grammar right now"}],"#object-types":[{token:"storage.type.generic.vala",regex:"\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<",push:[{token:"storage.type.generic.vala",regex:">|[^\\w\\s,\\?<\\[()\\]]",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:">|[^\\w\\s,\\?<\\[(?:[,]+)\\]]",next:"pop"},{include:"#object-types"},{token:"storage.type.generic.vala",regex:"<",push:[{token:"storage.type.generic.vala",regex:">|[^\\w\\s,\\[\\]<]",next:"pop"},{defaultToken:"storage.type.generic.vala"}],comment:"This is just to support <>'s with no actual type prefix"},{defaultToken:"storage.type.generic.vala"}]},{token:"storage.type.object.array.vala",regex:"\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*(?=\\[)",push:[{token:"storage.type.object.array.vala",regex:"(?=[^\\]\\s])",next:"pop"},{token:"text",regex:"\\[",push:[{token:"text",regex:"\\]",next:"pop"},{include:"#code"}]},{defaultToken:"storage.type.object.array.vala"}]},{token:["storage.type.vala","keyword.operator.dereference.vala","storage.type.vala"],regex:"\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*\\b)"}],"#object-types-inherited":[{token:"entity.other.inherited-class.vala",regex:"\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<",push:[{token:"entity.other.inherited-class.vala",regex:">|[^\\w\\s,<]",next:"pop"},{include:"#object-types"},{token:"storage.type.generic.vala",regex:"<",push:[{token:"storage.type.generic.vala",regex:">|[^\\w\\s,<]",next:"pop"},{defaultToken:"storage.type.generic.vala"}],comment:"This is just to support <>'s with no actual type prefix"},{defaultToken:"entity.other.inherited-class.vala"}]},{token:["entity.other.inherited-class.vala","keyword.operator.dereference.vala","entity.other.inherited-class.vala"],regex:"\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*)"}],"#parameters":[{token:"storage.modifier.vala",regex:"final"},{include:"#primitive-arrays"},{include:"#primitive-types"},{include:"#object-types"},{token:"variable.parameter.vala",regex:"\\w+"}],"#parens":[{token:"text",regex:"\\(",push:[{token:"text",regex:"\\)",next:"pop"},{include:"#code"}]}],"#primitive-arrays":[{token:"storage.type.primitive.array.vala",regex:"\\b(?:bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|int8|int16|int32|int64|uint8|uint16|uint32|uint64)(?:\\[\\])*\\b"}],"#primitive-types":[{token:"storage.type.primitive.vala",regex:"\\b(?:var|bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|signal|int8|int16|int32|int64|uint8|uint16|uint32|uint64)\\b",comment:"var is not really a primitive, but acts like one in most cases"}],"#storage-modifiers":[{token:"storage.modifier.vala",regex:"\\b(?:public|private|protected|internal|static|final|sealed|virtual|override|abstract|readonly|volatile|dynamic|async|unsafe|out|ref|weak|owned|unowned|const)\\b",comment:"Not sure about unsafe and readonly"}],"#strings":[{token:"punctuation.definition.string.begin.vala",regex:'@"',push:[{token:"punctuation.definition.string.end.vala",regex:'"',next:"pop"},{token:"constant.character.escape.vala",regex:"\\\\.|%[\\w\\.\\-]+|\\$(?:\\w+|\\([\\w\\s\\+\\-\\*\\/]+\\))"},{defaultToken:"string.quoted.interpolated.vala"}]},{token:"punctuation.definition.string.begin.vala",regex:'"',push:[{token:"punctuation.definition.string.end.vala",regex:'"',next:"pop"},{token:"constant.character.escape.vala",regex:"\\\\."},{token:"constant.character.escape.vala",regex:"%[\\w\\.\\-]+"},{defaultToken:"string.quoted.double.vala"}]},{token:"punctuation.definition.string.begin.vala",regex:"'",push:[{token:"punctuation.definition.string.end.vala",regex:"'",next:"pop"},{token:"constant.character.escape.vala",regex:"\\\\."},{defaultToken:"string.quoted.single.vala"}]},{token:"punctuation.definition.string.begin.vala",regex:'"""',push:[{token:"punctuation.definition.string.end.vala",regex:'"""',next:"pop"},{token:"constant.character.escape.vala",regex:"%[\\w\\.\\-]+"},{defaultToken:"string.quoted.triple.vala"}]}],"#throws":[{token:"storage.modifier.vala",regex:"throws",push:[{token:"meta.throwables.vala",regex:"(?={|;)",next:"pop"},{include:"#object-types"},{defaultToken:"meta.throwables.vala"}]}],"#values":[{include:"#strings"},{include:"#object-types"},{include:"#constants-and-special-vars"}]},this.normalizeRules()};s.metaData={comment:"Based heavily on the Java bundle's language syntax. TODO:\n* Closures\n* Delegates\n* Properties: Better support for properties.\n* Annotations\n* Error domains\n* Named arguments\n* Array slicing, negative indexes, multidimensional\n* construct blocks\n* lock blocks?\n* regex literals\n* DocBlock syntax highlighting. (Currently importing javadoc)\n* Folding rule for comments.\n",fileTypes:["vala"],foldingStartMarker:"(\\{\\s*(//.*)?$|^\\s*// \\{\\{\\{)",foldingStopMarker:"^\\s*(\\}|// \\}\\}\\}$)",name:"Vala",scopeName:"source.vala"},r.inherits(s,i),t.ValaHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/vala",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/vala_highlight_rules","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./vala_highlight_rules").ValaHighlightRules,u=e("./folding/cstyle").FoldMode,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=e("./matching_brace_outdent").MatchingBraceOutdent,c=function(){this.HighlightRules=o,this.$outdent=new l,this.$behaviour=new a,this.foldingRules=new f};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/vala"}.call(c.prototype),t.Mode=c}) \ No newline at end of file
diff --git a/library/ace/mode-vbscript.js b/library/ace/mode-vbscript.js
new file mode 100644
index 000000000..387514670
--- /dev/null
+++ b/library/ace/mode-vbscript.js
@@ -0,0 +1 @@
+ace.define("ace/mode/vbscript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({"keyword.control.asp":"If|Then|Else|ElseIf|End|While|Wend|For|To|Each|Case|Select|Return|Continue|Do|Until|Loop|Next|With|Exit|Function|Property|Type|Enum|Sub|IIf","storage.type.asp":"Dim|Call|Class|Const|Dim|Redim|Set|Let|Get|New|Randomize|Option|Explicit","storage.modifier.asp":"Private|Public|Default","keyword.operator.asp":"Mod|And|Not|Or|Xor|as","constant.language.asp":"Empty|False|Nothing|Null|True","support.class.asp":"Application|ObjectContext|Request|Response|Server|Session","support.class.collection.asp":"Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables","support.constant.asp":"TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute|IsClientConnected|PICS|Status|ScriptTimeout|CodePage|LCID|SessionID|Timeout","support.function.asp":"Lock|Unlock|SetAbort|SetComplete|BinaryRead|AddHeader|AppendToLog|BinaryWrite|Clear|Flush|Redirect|Write|CreateObject|HTMLEncode|MapPath|URLEncode|Abandon|Convert|Regex","support.function.event.asp":"Application_OnEnd|Application_OnStart|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart","support.function.vb.asp":"Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year","support.type.vb.asp":"vbtrue|vbfalse|vbcr|vbcrlf|vbformfeed|vblf|vbnewline|vbnullchar|vbnullstring|int32|vbtab|vbverticaltab|vbbinarycompare|vbtextcomparevbsunday|vbmonday|vbtuesday|vbwednesday|vbthursday|vbfriday|vbsaturday|vbusesystemdayofweek|vbfirstjan1|vbfirstfourdays|vbfirstfullweek|vbgeneraldate|vblongdate|vbshortdate|vblongtime|vbshorttime|vbobjecterror|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant|vbDataObject|vbDecimal|vbByte|vbArray"},"identifier",!0);this.$rules={start:[{token:["meta.ending-space"],regex:"$"},{token:[null],regex:"^(?=\\t)",next:"state_3"},{token:[null],regex:"^(?= )",next:"state_4"},{token:["text","storage.type.function.asp","text","entity.name.function.asp","text","punctuation.definition.parameters.asp","variable.parameter.function.asp","punctuation.definition.parameters.asp"],regex:"^(\\s*)(Function|Sub)(\\s+)([a-zA-Z_]\\w*)(\\s*)(\\()([^)]*)(\\))"},{token:"punctuation.definition.comment.asp",regex:"'|REM(?=\\s|$)",next:"comment",caseInsensitive:!0},{token:"storage.type.asp",regex:"On Error Resume Next|On Error GoTo",caseInsensitive:!0},{token:"punctuation.definition.string.begin.asp",regex:'"',next:"string"},{token:["punctuation.definition.variable.asp"],regex:"(\\$)[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b\\s*"},{token:"constant.numeric.asp",regex:"-?\\b(?:(?:0(?:x|X)[0-9a-fA-F]*)|(?:(?:[0-9]+\\.?[0-9]*)|(?:\\.[0-9]+))(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b"},{regex:"\\w+",token:e},{token:["entity.name.function.asp"],regex:"(?:(\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b)(?=\\(\\)?))"},{token:["keyword.operator.asp"],regex:"\\-|\\+|\\*\\/|\\>|\\<|\\=|\\&"}],state_3:[{token:["meta.odd-tab.tabs","meta.even-tab.tabs"],regex:"(\\t)(\\t)?"},{token:"meta.leading-space",regex:"(?=[^\\t])",next:"start"},{token:"meta.leading-space",regex:".",next:"state_3"}],state_4:[{token:["meta.odd-tab.spaces","meta.even-tab.spaces"],regex:"( )( )?"},{token:"meta.leading-space",regex:"(?=[^ ])",next:"start"},{defaultToken:"meta.leading-space"}],comment:[{token:"comment.line.apostrophe.asp",regex:"$|(?=(?:%>))",next:"start"},{defaultToken:"comment.line.apostrophe.asp"}],string:[{token:"constant.character.escape.apostrophe.asp",regex:'""'},{token:"string.quoted.double.asp",regex:'"',next:"start"},{defaultToken:"string.quoted.double.asp"}]}};r.inherits(s,i),t.VBScriptHighlightRules=s}),ace.define("ace/mode/vbscript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vbscript_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./vbscript_highlight_rules").VBScriptHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart=["'","REM"],this.$id="ace/mode/vbscript"}.call(o.prototype),t.Mode=o}) \ No newline at end of file
diff --git a/library/ace/mode-velocity.js b/library/ace/mode-velocity.js
new file mode 100644
index 000000000..373dcd93a
--- /dev/null
+++ b/library/ace/mode-velocity.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:.]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({noJSX:!0})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[A-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/velocity_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./html_highlight_rules").HtmlHighlightRules,u=function(){o.call(this);var e=i.arrayToMap("true|false|null".split("|")),t=i.arrayToMap("_DateTool|_DisplayTool|_EscapeTool|_FieldTool|_MathTool|_NumberTool|_SerializerTool|_SortTool|_StringTool|_XPathTool".split("|")),n=i.arrayToMap("$contentRoot|$foreach".split("|")),r=i.arrayToMap("#set|#macro|#include|#parse|#if|#elseif|#else|#foreach|#break|#end|#stop".split("|"));this.$rules.start.push({token:"comment",regex:"##.*$"},{token:"comment.block",regex:"#\\*",next:"vm_comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:function(i){return r.hasOwnProperty(i)?"keyword":e.hasOwnProperty(i)?"constant.language":n.hasOwnProperty(i)?"variable.language":t.hasOwnProperty(i)||t.hasOwnProperty(i.substring(1))?"support.function":i=="debugger"?"invalid.deprecated":i.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*)$/)?"variable":"identifier"},regex:"[a-zA-Z$#][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}),this.$rules.vm_comment=[{token:"comment",regex:"\\*#|-->",next:"start"},{defaultToken:"comment"}],this.$rules.vm_start=[{token:"variable",regex:"}",next:"pop"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:function(i){return r.hasOwnProperty(i)?"keyword":e.hasOwnProperty(i)?"constant.language":n.hasOwnProperty(i)?"variable.language":t.hasOwnProperty(i)||t.hasOwnProperty(i.substring(1))?"support.function":i=="debugger"?"invalid.deprecated":i.match(/^(\$[a-zA-Z_$][a-zA-Z0-9_]*)$/)?"variable":"identifier"},regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}];for(var s in this.$rules)this.$rules[s].unshift({token:"variable",regex:"\\${",push:"vm_start"});this.normalizeRules()};r.inherits(u,s),t.VelocityHighlightRules=u}),ace.define("ace/mode/folding/velocity",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="##")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="##")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="##"&&s[i]=="##")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="##"&&o[i]=="##"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/velocity",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/velocity_highlight_rules","ace/mode/folding/velocity"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./velocity_highlight_rules").VelocityHighlightRules,o=e("./folding/velocity").FoldMode,u=function(){i.call(this),this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="##",this.blockComment={start:"#*",end:"*#"},this.$id="ace/mode/velocity"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-verilog.js b/library/ace/mode-verilog.js
new file mode 100644
index 000000000..17a3da478
--- /dev/null
+++ b/library/ace/mode-verilog.js
@@ -0,0 +1 @@
+ace.define("ace/mode/verilog_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="always|and|assign|automatic|begin|buf|bufif0|bufif1|case|casex|casez|cell|cmos|config|deassign|default|defparam|design|disable|edge|else|end|endcase|endconfig|endfunction|endgenerate|endmodule|endprimitive|endspecify|endtable|endtask|event|for|force|forever|fork|function|generate|genvar|highz0|highz1|if|ifnone|incdir|include|initial|inout|input|instance|integer|join|large|liblist|library|localparam|macromodule|medium|module|nand|negedge|nmos|nor|noshowcancelled|not|notif0|notif1|or|output|parameter|pmos|posedge|primitive|pull0|pull1|pulldown|pullup|pulsestyle_onevent|pulsestyle_ondetect|rcmos|real|realtime|reg|release|repeat|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|showcancelled|signed|small|specify|specparam|strong0|strong1|supply0|supply1|table|task|time|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|unsigned|use|vectored|wait|wand|weak0|weak1|while|wire|wor|xnor|xorbegin|bufif0|bufif1|case|casex|casez|config|else|end|endcase|endconfig|endfunction|endgenerate|endmodule|endprimitive|endspecify|endtable|endtask|for|forever|function|generate|if|ifnone|macromodule|module|primitive|repeat|specify|table|task|while",t="true|false|null",n="count|min|max|avg|sum|rank|now|coalesce|main",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"//.*$"},{token:"comment.start",regex:"/\\*",next:[{token:"comment.end",regex:"\\*/"},{defaultToken:"comment"}]},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]},this.normalizeRules()};r.inherits(s,i),t.VerilogHighlightRules=s}),ace.define("ace/mode/verilog",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/verilog_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./verilog_highlight_rules").VerilogHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/verilog"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-vhdl.js b/library/ace/mode-vhdl.js
new file mode 100644
index 000000000..94a061c69
--- /dev/null
+++ b/library/ace/mode-vhdl.js
@@ -0,0 +1 @@
+ace.define("ace/mode/vhdl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="access|after|ailas|all|architecture|assert|attribute|begin|block|buffer|bus|case|component|configuration|disconnect|downto|else|elsif|end|entity|file|for|function|generate|generic|guarded|if|impure|in|inertial|inout|is|label|linkage|literal|loop|mapnew|next|of|on|open|others|out|port|process|pure|range|record|reject|report|return|select|shared|subtype|then|to|transport|type|unaffected|united|until|wait|when|while|with",t="bit|bit_vector|boolean|character|integer|line|natural|positive|real|register|severity|signal|signed|std_logic|std_logic_vector|string||text|time|unsigned|variable",n="array|constant",r="abs|and|mod|nand|nor|not|rem|rol|ror|sla|sll|srasrl|xnor|xor",i="true|false|null",s=this.createKeywordMapper({"keyword.operator":r,keyword:e,"constant.language":i,"storage.modifier":n,"storage.type":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"keyword",regex:"\\s*(?:library|package|use)\\b"},{token:s,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"&|\\*|\\+|\\-|\\/|<|=|>|\\||=>|\\*\\*|:=|\\/=|>=|<=|<>"},{token:"punctuation.operator",regex:"\\'|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[(]"},{token:"paren.rparen",regex:"[\\])]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.VHDLHighlightRules=s}),ace.define("ace/mode/vhdl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vhdl_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./vhdl_highlight_rules").VHDLHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="--",this.$id="ace/mode/vhdl"}.call(u.prototype),t.Mode=u}) \ No newline at end of file
diff --git a/library/ace/mode-wollok.js b/library/ace/mode-wollok.js
new file mode 100644
index 000000000..95a7d683e
--- /dev/null
+++ b/library/ace/mode-wollok.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"</?"+e+"",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||!e.noJSX)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/wollok_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="test|package|inherits|false|import|else|or|class|and|not|native|override|program|this|try|val|var|catch|object|super|throw|if|null|return|true|new|method",t="null|assert|console",n="Object|Pair|String|Boolean|Number|Integer|Double|Collection|Set|List|Exception|Range|StackTraceElement",r=this.createKeywordMapper({"variable.language":"this",keyword:e,"constant.language":t,"support.function":n},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"===|&&|\\*=|\\.\\.|\\*\\*|#|!|%|\\*|\\?:|\\+|\\/|,|\\+=|\\-|\\.\\.<|!==|:|\\/=|\\?\\.|\\+\\+|>|=|<|>=|=>|==|\\]|\\[|\\-=|\\->|\\||\\-\\-|<>|!=|%=|\\|"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.WollokHighlightRules=o}),ace.define("ace/mode/wollok",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/wollok_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./wollok_highlight_rules").WollokHighlightRules,o=function(){i.call(this),this.HighlightRules=s};r.inherits(o,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/wollok"}.call(o.prototype),t.Mode=o}) \ No newline at end of file
diff --git a/library/ace/mode-xml.js b/library/ace/mode-xml.js
new file mode 100644
index 000000000..3090bd01d
--- /dev/null
+++ b/library/ace/mode-xml.js
@@ -0,0 +1 @@
+ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./xml_highlight_rules").XmlHighlightRules,u=e("./behaviour/xml").XmlBehaviour,a=e("./folding/xml").FoldMode,f=e("../worker/worker_client").WorkerClient,l=function(){this.HighlightRules=o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(l,s),function(){this.voidElements=i.arrayToMap([]),this.blockComment={start:"<!--",end:"-->"},this.createWorker=function(e){var t=new f(["ace"],"ace/mode/xml_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/xml"}.call(l.prototype),t.Mode=l}) \ No newline at end of file
diff --git a/library/ace/mode-xquery.js b/library/ace/mode-xquery.js
new file mode 100644
index 000000000..865e3eaf4
--- /dev/null
+++ b/library/ace/mode-xquery.js
@@ -0,0 +1 @@
+ace.define("ace/mode/xquery/xquery_lexer",["require","exports","module"],function(e,t,n){n.exports=function r(t,n,i){function s(u,a){if(!n[u]){if(!t[u]){var f=typeof e=="function"&&e;if(!a&&f)return f(u,!0);if(o)return o(u,!0);throw new Error("Cannot find module '"+u+"'")}var l=n[u]={exports:{}};t[u][0].call(l.exports,function(e){var n=t[u][1][e];return s(n?n:e)},l,l.exports,r,t,n,i)}return n[u].exports}var o=typeof e=="function"&&e;for(var u=0;u<i.length;u++)s(i[u]);return s}({1:[function(e,t,n){var r=n.XQueryTokenizer=function i(e,t){function r(e,t){E=t,S=e,x=e.length,s(0,0,0)}function s(e,t,n){m=t,g=t,y=e,b=t,w=n,N=n,E.reset(S)}function o(){E.startNonterminal("EQName",g);switch(y){case 77:f(77);break;case 91:f(91);break;case 115:f(115);break;case 116:f(116);break;case 119:f(119);break;case 140:f(140);break;case 147:f(147);break;case 160:f(160);break;case 180:f(180);break;case 186:f(186);break;case 211:f(211);break;case 221:f(221);break;case 222:f(222);break;case 238:f(238);break;case 239:f(239);break;case 248:f(248);break;default:u()}E.endNonterminal("EQName",g)}function u(){E.startNonterminal("FunctionName",g);switch(y){case 14:f(14);break;case 65:f(65);break;case 68:f(68);break;case 69:f(69);break;case 70:f(70);break;case 74:f(74);break;case 75:f(75);break;case 79:f(79);break;case 83:f(83);break;case 84:f(84);break;case 85:f(85);break;case 88:f(88);break;case 89:f(89);break;case 98:f(98);break;case 100:f(100);break;case 103:f(103);break;case 104:f(104);break;case 105:f(105);break;case 106:f(106);break;case 107:f(107);break;case 108:f(108);break;case 113:f(113);break;case 114:f(114);break;case 117:f(117);break;case 118:f(118);break;case 121:f(121);break;case 123:f(123);break;case 124:f(124);break;case 126:f(126);break;case 129:f(129);break;case 130:f(130);break;case 131:f(131);break;case 132:f(132);break;case 141:f(141);break;case 143:f(143);break;case 145:f(145);break;case 146:f(146);break;case 148:f(148);break;case 154:f(154);break;case 155:f(155);break;case 157:f(157);break;case 158:f(158);break;case 159:f(159);break;case 165:f(165);break;case 167:f(167);break;case 169:f(169);break;case 173:f(173);break;case 175:f(175);break;case 176:f(176);break;case 177:f(177);break;case 179:f(179);break;case 181:f(181);break;case 193:f(193);break;case 195:f(195);break;case 196:f(196);break;case 197:f(197);break;case 201:f(201);break;case 207:f(207);break;case 208:f(208);break;case 213:f(213);break;case 214:f(214);break;case 215:f(215);break;case 219:f(219);break;case 224:f(224);break;case 230:f(230);break;case 231:f(231);break;case 232:f(232);break;case 243:f(243);break;case 244:f(244);break;case 245:f(245);break;case 249:f(249);break;case 251:f(251);break;case 255:f(255);break;case 261:f(261);break;case 265:f(265);break;case 269:f(269);break;case 67:f(67);break;case 76:f(76);break;case 78:f(78);break;case 80:f(80);break;case 81:f(81);break;case 86:f(86);break;case 93:f(93);break;case 96:f(96);break;case 97:f(97);break;case 99:f(99);break;case 101:f(101);break;case 120:f(120);break;case 127:f(127);break;case 128:f(128);break;case 136:f(136);break;case 149:f(149);break;case 150:f(150);break;case 156:f(156);break;case 166:f(166);break;case 187:f(187);break;case 194:f(194);break;case 198:f(198);break;case 217:f(217);break;case 220:f(220);break;case 223:f(223);break;case 229:f(229);break;case 235:f(235);break;case 246:f(246);break;case 247:f(247);break;case 252:f(252);break;case 256:f(256);break;case 257:f(257);break;case 258:f(258);break;case 262:f(262);break;case 92:f(92);break;case 171:f(171);break;default:f(216)}E.endNonterminal("FunctionName",g)}function a(){E.startNonterminal("NCName",g);switch(y){case 26:f(26);break;case 65:f(65);break;case 70:f(70);break;case 74:f(74);break;case 75:f(75);break;case 79:f(79);break;case 83:f(83);break;case 84:f(84);break;case 85:f(85);break;case 89:f(89);break;case 100:f(100);break;case 104:f(104);break;case 108:f(108);break;case 113:f(113);break;case 117:f(117);break;case 118:f(118);break;case 121:f(121);break;case 123:f(123);break;case 126:f(126);break;case 132:f(132);break;case 141:f(141);break;case 143:f(143);break;case 145:f(145);break;case 146:f(146);break;case 155:f(155);break;case 157:f(157);break;case 158:f(158);break;case 159:f(159);break;case 167:f(167);break;case 169:f(169);break;case 173:f(173);break;case 175:f(175);break;case 176:f(176);break;case 181:f(181);break;case 193:f(193);break;case 195:f(195);break;case 196:f(196);break;case 215:f(215);break;case 219:f(219);break;case 231:f(231);break;case 232:f(232);break;case 243:f(243);break;case 244:f(244);break;case 249:f(249);break;case 261:f(261);break;case 265:f(265);break;case 68:f(68);break;case 69:f(69);break;case 77:f(77);break;case 88:f(88);break;case 91:f(91);break;case 98:f(98);break;case 103:f(103);break;case 105:f(105);break;case 106:f(106);break;case 107:f(107);break;case 114:f(114);break;case 115:f(115);break;case 116:f(116);break;case 119:f(119);break;case 124:f(124);break;case 129:f(129);break;case 130:f(130);break;case 131:f(131);break;case 140:f(140);break;case 147:f(147);break;case 148:f(148);break;case 154:f(154);break;case 160:f(160);break;case 165:f(165);break;case 177:f(177);break;case 179:f(179);break;case 180:f(180);break;case 186:f(186);break;case 197:f(197);break;case 201:f(201);break;case 207:f(207);break;case 208:f(208);break;case 211:f(211);break;case 213:f(213);break;case 214:f(214);break;case 221:f(221);break;case 222:f(222);break;case 224:f(224);break;case 230:f(230);break;case 238:f(238);break;case 239:f(239);break;case 245:f(245);break;case 248:f(248);break;case 251:f(251);break;case 255:f(255);break;case 257:f(257);break;case 269:f(269);break;case 67:f(67);break;case 76:f(76);break;case 78:f(78);break;case 80:f(80);break;case 81:f(81);break;case 86:f(86);break;case 93:f(93);break;case 96:f(96);break;case 97:f(97);break;case 99:f(99);break;case 101:f(101);break;case 120:f(120);break;case 127:f(127);break;case 128:f(128);break;case 136:f(136);break;case 149:f(149);break;case 150:f(150);break;case 156:f(156);break;case 166:f(166);break;case 187:f(187);break;case 194:f(194);break;case 198:f(198);break;case 217:f(217);break;case 220:f(220);break;case 223:f(223);break;case 229:f(229);break;case 235:f(235);break;case 246:f(246);break;case 247:f(247);break;case 252:f(252);break;case 256:f(256);break;case 258:f(258);break;case 262:f(262);break;case 92:f(92);break;case 171:f(171);break;default:f(216)}E.endNonterminal("NCName",g)}function f(e){y==e?(l(),E.terminal(i.TOKEN[y],b,w>x?x:w),m=b,g=w,y=0):d(b,w,0,y,e)}function l(){g!=b&&(m=g,g=b,E.whitespace(m,g))}function c(e){var t;for(;;){t=C(e);if(t!=28)break}return t}function h(e){y==0&&(y=c(e),b=T,w=N)}function p(e){y==0&&(y=C(e),b=T,w=N)}function d(e,t,r,i,s){throw new n.ParseException(e,t,r,i,s)}function C(e){var t=!1;T=N;var n=N,r=i.INITIAL[e],s=0;for(var o=r&4095;o!=0;){var u,a=n<x?S.charCodeAt(n):0;++n;if(a<128)u=i.MAP0[a];else if(a<55296){var f=a>>4;u=i.MAP1[(a&15)+i.MAP1[(f&31)+i.MAP1[f>>5]]]}else{if(a<56320){var f=n<x?S.charCodeAt(n):0;f>=56320&&f<57344&&(++n,a=((a&1023)<<10)+(f&1023)+65536,t=!0)}var l=0,c=5;for(var h=3;;h=c+l>>1){if(i.MAP2[h]>a)c=h-1;else{if(!(i.MAP2[6+h]<a)){u=i.MAP2[12+h];break}l=h+1}if(l>c){u=0;break}}}s=o;var p=(u<<12)+o-1;o=i.TRANSITION[(p&15)+i.TRANSITION[p>>4]],o>4095&&(r=o,o&=4095,N=n)}r>>=12;if(r==0){N=n-1;var f=N<x?S.charCodeAt(N):0;return f>=56320&&f<57344&&--N,d(T,N,s,-1,-1)}if(t)for(var v=r>>9;v>0;--v){--N;var f=N<x?S.charCodeAt(N):0;f>=56320&&f<57344&&--N}else N-=r>>9;return(r&511)-1}r(e,t);var n=this;this.ParseException=function(e,t,n,r,i){var s=e,o=t,u=n,a=r,f=i;this.getBegin=function(){return s},this.getEnd=function(){return o},this.getState=function(){return u},this.getExpected=function(){return f},this.getOffending=function(){return a},this.getMessage=function(){return a<0?"lexical analysis failed":"syntax error"}},this.getInput=function(){return S},this.getOffendingToken=function(e){var t=e.getOffending();return t>=0?i.TOKEN[t]:null},this.getExpectedTokenSet=function(e){var t;return e.getExpected()<0?t=i.getTokenSet(-e.getState()):t=[i.TOKEN[e.getExpected()]],t},this.getErrorMessage=function(e){var t=this.getExpectedTokenSet(e),n=this.getOffendingToken(e),r=S.substring(0,e.getBegin()),i=r.split("\n"),s=i.length,o=i[s-1].length+1,u=e.getEnd()-e.getBegin();return e.getMessage()+(n==null?"":", found "+n)+"\nwhile expecting "+(t.length==1?t[0]:"["+t.join(", ")+"]")+"\n"+(u==0||n!=null?"":"after successfully scanning "+u+" characters beginning ")+"at line "+s+", column "+o+":\n..."+S.substring(e.getBegin(),Math.min(S.length,e.getBegin()+64))+"..."},this.parse_start=function(){E.startNonterminal("start",g),h(14);switch(y){case 55:f(55);break;case 54:f(54);break;case 56:f(56);break;case 40:f(40);break;case 42:f(42);break;case 41:f(41);break;case 35:f(35);break;case 38:f(38);break;case 274:f(274);break;case 271:f(271);break;case 39:f(39);break;case 43:f(43);break;case 49:f(49);break;case 62:f(62);break;case 63:f(63);break;case 46:f(46);break;case 48:f(48);break;case 53:f(53);break;case 51:f(51);break;case 34:f(34);break;case 273:f(273);break;case 2:f(2);break;case 1:f(1);break;case 3:f(3);break;case 12:f(12);break;case 13:f(13);break;case 15:f(15);break;case 16:f(16);break;case 17:f(17);break;case 5:f(5);break;case 6:f(6);break;case 4:f(4);break;case 33:f(33);break;default:o()}E.endNonterminal("start",g)},this.parse_StartTag=function(){E.startNonterminal("StartTag",g),h(8);switch(y){case 58:f(58);break;case 50:f(50);break;case 27:f(27);break;case 57:f(57);break;case 35:f(35);break;case 38:f(38);break;default:f(33)}E.endNonterminal("StartTag",g)},this.parse_TagContent=function(){E.startNonterminal("TagContent",g),p(11);switch(y){case 23:f(23);break;case 6:f(6);break;case 7:f(7);break;case 55:f(55);break;case 54:f(54);break;case 18:f(18);break;case 29:f(29);break;case 272:f(272);break;case 275:f(275);break;case 271:f(271);break;default:f(33)}E.endNonterminal("TagContent",g)},this.parse_AposAttr=function(){E.startNonterminal("AposAttr",g),p(10);switch(y){case 20:f(20);break;case 25:f(25);break;case 18:f(18);break;case 29:f(29);break;case 272:f(272);break;case 275:f(275);break;case 271:f(271);break;case 38:f(38);break;default:f(33)}E.endNonterminal("AposAttr",g)},this.parse_QuotAttr=function(){E.startNonterminal("QuotAttr",g),p(9);switch(y){case 19:f(19);break;case 24:f(24);break;case 18:f(18);break;case 29:f(29);break;case 272:f(272);break;case 275:f(275);break;case 271:f(271);break;case 35:f(35);break;default:f(33)}E.endNonterminal("QuotAttr",g)},this.parse_CData=function(){E.startNonterminal("CData",g),p(1);switch(y){case 11:f(11);break;case 64:f(64);break;default:f(33)}E.endNonterminal("CData",g)},this.parse_XMLComment=function(){E.startNonterminal("XMLComment",g),p(0);switch(y){case 9:f(9);break;case 47:f(47);break;default:f(33)}E.endNonterminal("XMLComment",g)},this.parse_PI=function(){E.startNonterminal("PI",g),p(3);switch(y){case 10:f(10);break;case 59:f(59);break;case 60:f(60);break;default:f(33)}E.endNonterminal("PI",g)},this.parse_Pragma=function(){E.startNonterminal("Pragma",g),p(2);switch(y){case 8:f(8);break;case 36:f(36);break;case 37:f(37);break;default:f(33)}E.endNonterminal("Pragma",g)},this.parse_Comment=function(){E.startNonterminal("Comment",g),p(4);switch(y){case 52:f(52);break;case 41:f(41);break;case 30:f(30);break;default:f(33)}E.endNonterminal("Comment",g)},this.parse_CommentDoc=function(){E.startNonterminal("CommentDoc",g),p(5);switch(y){case 31:f(31);break;case 32:f(32);break;case 52:f(52);break;case 41:f(41);break;default:f(33)}E.endNonterminal("CommentDoc",g)},this.parse_QuotString=function(){E.startNonterminal("QuotString",g),p(6);switch(y){case 18:f(18);break;case 29:f(29);break;case 19:f(19);break;case 21:f(21);break;case 35:f(35);break;default:f(33)}E.endNonterminal("QuotString",g)},this.parse_AposString=function(){E.startNonterminal("AposString",g),p(7);switch(y){case 18:f(18);break;case 29:f(29);break;case 20:f(20);break;case 22:f(22);break;case 38:f(38);break;default:f(33)}E.endNonterminal("AposString",g)},this.parse_Prefix=function(){E.startNonterminal("Prefix",g),h(13),l(),a(),E.endNonterminal("Prefix",g)},this.parse__EQName=function(){E.startNonterminal("_EQName",g),h(12),l(),o(),E.endNonterminal("_EQName",g)};var v,m,g,y,b,w,E,S,x,T,N};r.getTokenSet=function(e){var t=[],n=e<0?-e:INITIAL[e]&4095;for(var i=0;i<276;i+=32){var s=i,o=(i>>5)*2062+n-1,u=o>>2,a=u>>2,f=r.EXPECTED[(o&3)+r.EXPECTED[(u&3)+r.EXPECTED[(a&3)+r.EXPECTED[a>>2]]]];for(;f!=0;f>>>=1,++s)(f&1)!=0&&t.push(r.TOKEN[s])}return t},r.MAP0=[66,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,18,18,18,18,18,18,18,18,19,20,21,22,23,24,25,26,27,28,29,30,27,31,31,31,31,31,31,31,31,31,31,32,31,31,33,31,31,31,31,31,31,34,35,36,35,31,35,37,38,39,40,41,42,43,44,45,31,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,31,61,62,63,64,35],r.MAP1=[108,124,214,214,214,214,214,214,214,214,214,214,214,214,214,214,156,181,181,181,181,181,214,215,213,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,247,261,277,293,309,347,363,379,416,416,416,408,331,323,331,323,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,433,433,433,433,433,433,433,316,331,331,331,331,331,331,331,331,394,416,416,417,415,416,416,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,330,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,416,66,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,18,18,18,18,18,18,18,18,19,20,21,22,23,24,25,26,27,28,29,30,27,31,31,31,31,31,31,31,31,31,31,31,31,31,31,35,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,32,31,31,33,31,31,31,31,31,31,34,35,36,35,31,35,37,38,39,40,41,42,43,44,45,31,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,31,61,62,63,64,35,35,35,35,35,35,35,35,35,35,35,35,31,31,35,35,35,35,35,35,35,65,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65],r.MAP2=[57344,63744,64976,65008,65536,983040,63743,64975,65007,65533,983039,1114111,35,31,35,31,31,35],r.INITIAL=[1,2,36867,45060,5,6,7,8,9,10,11,12,13,14,15],r.TRANSITION=[17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22908,18836,17152,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,17365,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,17470,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,18157,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,17848,17880,18731,17918,36551,17292,17934,17979,18727,18023,36545,18621,18039,18056,18072,18117,18143,18173,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17687,18805,18421,18437,18101,17393,18489,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,18579,21711,17152,19008,19233,20367,19008,28684,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,17365,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,17470,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,18157,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,17848,17880,18731,17918,36551,17292,17934,17979,18727,18023,36545,18621,18039,18056,18072,18117,18143,18173,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17687,18805,18421,18437,18101,17393,18489,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,20116,18836,18637,19008,19233,21267,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,18763,18778,18794,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,18821,22923,18906,19008,19233,17431,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18937,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,19054,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,18953,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21843,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21696,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22429,20131,18720,19008,19233,20367,19008,17173,23559,36437,17330,17349,18921,17189,17208,17281,20355,18087,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,21242,19111,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,19024,18836,18609,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,19081,22444,18987,19008,19233,20367,19008,19065,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21992,22007,18987,19008,19233,20367,19008,18690,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22414,18836,18987,19008,19233,30651,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,19138,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,19280,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,19172,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21783,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,19218,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21651,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,19249,19265,19307,18888,27857,30536,24401,31444,23357,18888,19351,18888,18890,27211,19370,27211,27211,19392,24401,31911,24401,24401,25467,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,28537,19440,24401,24401,24401,24401,24036,17994,24060,18888,18888,18888,18890,19468,27211,27211,27211,27211,19484,35367,19520,24401,24401,24401,19628,18888,29855,18888,18888,23086,27211,19538,27211,27211,30756,24012,24401,19560,24401,24401,26750,18888,18888,19327,27855,27211,27211,19580,17590,24017,24401,24401,19600,25665,18888,18888,28518,27211,27212,24016,19620,19868,28435,25722,18889,19644,27211,32888,35852,19868,31018,19694,19376,19717,22215,19735,22098,19751,35203,19776,19797,19817,19840,25783,31738,24135,19701,19856,31015,23516,31008,28311,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21768,18836,19307,18888,27857,27904,24401,29183,28015,18888,18888,18888,18890,27211,27211,27211,27211,19888,24401,24401,24401,24401,22953,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,28537,19440,24401,24401,24401,24401,24036,18881,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22399,18836,19918,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21666,18836,19307,18888,27857,27525,24401,29183,21467,18888,18888,18888,18890,27211,27211,27211,27211,19946,24401,24401,24401,24401,32382,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,28537,19998,24401,24401,24401,24401,31500,18467,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,20021,24401,24401,24401,24401,24401,34271,18888,18888,18888,18888,23086,27211,27211,27211,27211,32926,29908,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,20050,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,20101,19039,20191,20412,20903,17569,20309,20872,25633,20623,20505,20218,20242,17189,17208,17281,20355,20265,20306,20328,20383,22490,20796,20619,21354,20654,20410,20956,21232,20765,17421,20535,17192,18127,22459,20312,25531,22470,20309,20428,18964,20466,20491,21342,21070,20521,20682,17714,18326,17543,17559,17585,22497,20559,19504,20279,20575,20290,20475,20604,20639,20226,20670,17661,21190,17703,21176,17730,19494,20698,20711,22480,21046,21116,18971,21130,20727,20755,17675,17753,17832,17590,25518,20394,20781,20831,20202,20847,21401,17292,17934,17979,18549,20863,20588,25542,20888,20919,18072,18117,20935,20972,21032,21062,21086,18239,21102,18563,21146,21162,21206,18351,20949,20902,18340,21222,21258,21283,18360,20249,17405,21295,21311,21327,20739,20343,21370,21386,21417,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21977,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,21452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,21504,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,36501,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,28674,21946,17617,36473,18223,17237,17477,19152,17860,17892,17675,17753,17832,21575,21534,17481,19156,17864,18731,17918,36551,17292,17934,21560,30628,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21798,18836,21612,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21636,18836,18987,19008,19233,17902,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21753,19096,21903,19008,19233,20367,19008,19291,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,17379,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,21931,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,18280,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21962,18594,18987,19008,19233,22043,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21681,21858,18987,19008,19233,20367,19008,21544,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,30613,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,31500,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,32319,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,22231,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,30613,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,31500,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,31678,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,31500,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,30613,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,33588,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,35019,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22248,24401,24401,24401,24401,30613,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,31500,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22324,18836,22059,18888,27857,30501,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,34365,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22354,18836,18987,19008,19233,20367,19008,17173,27086,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,19930,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21828,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22309,22513,18987,19008,19233,20367,19008,19122,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,22544,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22608,18836,22988,23004,27585,23020,23036,23067,22087,18888,18888,18888,23083,27211,27211,27211,23102,22121,24401,24401,24401,23122,31386,26154,19674,18888,28119,28232,19424,23705,27211,27211,23142,23173,23189,23212,24401,24401,23246,34427,31693,23262,18888,23290,23308,27783,27620,23327,35263,35107,33383,23346,18193,23393,32748,23968,24401,23414,35153,23463,18888,33913,23442,23482,27211,27211,23532,23552,21431,23575,24401,24401,23604,26095,23635,23657,18888,33482,23685,33251,27211,22187,18851,23721,35536,24401,18887,23750,32641,27211,23769,23787,20080,33012,24384,25659,18888,18889,27211,27211,19719,23889,23803,31018,18890,27211,31833,19406,19447,23086,23330,19828,28224,31826,23823,26917,34978,23850,26493,25782,23878,23914,23516,31008,22105,19419,27963,19659,29781,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22623,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,30613,18888,18888,18888,18888,28909,25783,27211,27211,27211,34048,23933,22164,24401,24401,24401,28409,23949,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,26583,18888,18888,18888,35585,23984,27211,27211,27211,24005,22201,24033,24401,24401,24401,24052,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,26496,24076,24126,24151,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22638,18836,22059,19678,27857,24185,24401,24201,24217,26592,18888,18888,18890,24252,24268,27211,27211,22121,24287,24303,24401,24401,30613,19781,35432,36007,32649,18888,25783,24322,28966,23771,27211,35072,22164,24358,32106,26829,24400,31500,31693,18888,18888,18888,24801,18890,27211,27211,27211,27211,24418,19484,24401,24401,24401,24401,20167,31181,18888,18888,18888,27833,23086,27211,27211,33540,27211,30756,21431,24401,24401,22972,24401,26095,18888,36131,18888,27855,27211,24440,27211,22187,22968,24401,24459,24401,31699,28454,18888,34528,34570,35779,24478,24402,24494,25659,18888,36228,27211,27211,24515,30981,23734,31018,18890,27211,31833,19406,19447,23086,23330,24538,31017,27856,31741,30059,23377,24563,19837,25782,19760,31015,23516,25374,22105,19419,29793,24579,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22653,18836,22059,25756,19982,34097,23196,29183,24614,24110,23641,24673,26103,24697,24443,24713,28558,22121,24748,24462,24764,23398,30613,18888,18888,18888,18888,24798,25783,27211,27211,27211,34232,35072,22164,24401,24401,24401,33302,31500,22559,24106,24232,18888,18888,34970,24817,30411,27211,27211,32484,19484,29750,35127,24401,24401,19872,31181,24852,18888,18888,24871,29221,27211,27211,32072,27211,30756,34441,24401,24401,31571,24401,26095,33141,27802,27011,27855,25295,25607,24888,22187,22968,19195,34593,24906,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,33663,27211,27211,24924,24947,23588,31018,18890,27211,31833,22135,19447,23086,23330,19828,30904,31042,24972,19840,25e3,31738,30898,25782,19760,31015,23516,31008,22105,19419,25016,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22668,18836,25041,25057,31320,25073,25089,25105,22087,34796,24236,36138,34870,34125,25121,23106,35497,22248,36613,25137,30671,27365,30613,25153,26447,25199,25233,22574,23274,25249,25265,25281,25318,25344,25360,25400,25428,25452,26731,25504,31693,23669,25558,27407,25575,28599,25934,25599,27211,28180,27304,25623,25839,25649,24401,34820,25681,25698,22586,27775,30190,25745,25778,25799,25817,28995,33569,30756,21518,33443,25837,25855,25893,26095,31254,26677,30136,27855,25930,25950,27211,22187,22968,25966,25986,24401,23428,27763,36330,26959,26002,26029,26045,26085,26119,26170,26203,26222,26239,30527,26372,26274,28404,31018,33757,27211,34262,26316,36729,26345,26366,35337,31017,26388,26407,30954,26350,33861,26434,26463,26479,26512,23516,33189,26531,26547,27963,31293,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22683,18836,26568,26181,26608,34097,26643,29183,22087,26669,18888,18888,18890,26693,27211,27211,27211,22121,26720,24401,24401,24401,30613,18888,18888,18888,18888,26774,25783,27211,27211,27211,26619,35072,22164,24401,24401,24401,21596,31500,31693,18888,18888,33978,18888,18890,27211,27211,25801,27211,27211,19484,24401,24401,24401,26792,24401,31181,18888,18888,18888,35464,23086,27211,27211,27211,26809,30756,21431,24401,24401,24401,26828,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,31948,18889,35707,27211,19719,26845,19868,31018,18890,27211,31833,19406,19447,23086,23330,26905,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,24984,31088,19419,26945,27651,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22698,18836,26999,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,23051,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,27033,24401,24401,24401,24401,24036,31693,18888,18888,27056,18888,18890,27211,27211,30320,27211,27211,27075,24401,24401,29032,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,33986,27855,27211,27211,27102,17590,24017,24401,24401,27123,27144,36254,27162,27210,27228,28500,18187,34842,33426,27244,35980,27277,27302,27320,36048,34013,20999,31882,21478,27895,27356,30287,27381,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,26329,30087,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,27406,27423,27445,35294,27461,22087,18888,18888,30140,18890,27211,27211,27989,27211,22121,24401,24401,25682,24401,18866,18888,18888,18888,18888,18888,34042,27211,27211,27211,27211,29700,22164,24401,24401,24401,24401,27128,31693,27477,18888,18888,18888,18890,27194,27211,27211,27211,27211,19484,35299,24401,24401,24401,24401,19628,18888,18888,18888,27059,23086,27211,27211,27211,33366,30756,24012,24401,24401,24401,35044,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,20815,27211,30818,19960,33969,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22713,18836,22059,27496,27516,27541,35231,27557,22087,29662,26292,23292,27573,24836,27601,27211,27636,22121,35544,27686,24401,27721,18866,18888,27799,18888,27818,22071,27853,32260,27211,26013,27873,27920,22164,29419,24401,29946,33413,26742,27751,26881,18888,18888,27261,36776,27936,27211,27211,27211,27988,28005,28031,28052,24401,24401,28069,28088,28135,25488,28152,26069,28167,27211,28340,24657,28196,30756,31523,24401,28212,34176,36174,24956,28248,28266,28290,21488,33077,28327,28356,17590,20986,23126,28391,28425,28102,28451,28470,28490,28516,28534,20034,33728,25868,25659,18888,18889,27211,27211,19719,23889,19868,30241,28274,28553,28574,19406,28590,23086,23330,19828,19452,28615,28660,26147,25783,31738,19837,25782,19760,29613,35958,29276,22105,19419,27963,23157,28700,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,22528,18888,18888,18888,18888,18890,27333,27211,27211,27211,27211,19484,30853,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22728,18836,28747,28782,28817,28841,28857,28880,28896,24161,28943,32011,36261,27340,28961,29492,28982,29011,24522,29027,25436,29048,23051,27500,29090,29110,30713,18888,23512,29130,25183,27211,29155,28927,27033,29173,23230,24401,29199,35373,31693,18888,18888,25583,32629,29218,27211,27211,31461,30692,29237,27075,24401,24401,24401,29262,29302,19628,18888,34329,18888,18888,23086,27211,29329,27211,27211,30756,24012,35933,24401,24401,24401,27705,31612,18888,18888,29346,29374,27211,35650,17590,21436,29393,24401,25970,18887,33895,18888,27211,32528,27212,24016,32769,19868,25659,18888,26889,27211,27211,29412,23889,24371,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31768,19840,25783,31738,19837,29435,29508,31102,29550,29606,22105,30300,29462,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22743,18836,22059,29629,29473,34097,33285,29183,29651,27254,18888,29678,33329,32535,27211,29694,29716,22121,19202,24401,32742,29741,18866,26776,33921,28474,18888,18888,25783,29766,27211,29809,27211,35072,22164,35825,24401,29828,24401,24036,36769,25217,18888,18888,29848,18890,27211,29871,27211,26258,27211,29894,24401,29929,24401,36587,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,29725,29962,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18473,18888,18888,19584,27211,27212,24016,29982,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19902,19447,32052,19544,19828,29998,30097,30031,19840,25783,30047,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,30075,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22758,18836,30121,30156,30206,30257,30273,30336,22087,35624,32837,25762,18890,29878,34934,26812,27211,22121,24931,23223,29202,24401,18866,34373,30352,18888,18888,18888,23447,24828,27211,27211,27211,35072,30370,35052,24401,24401,24401,24036,29523,18888,18888,27146,18888,31308,30386,27211,27211,30405,30558,19484,30427,24401,24401,29938,35686,19628,28766,30447,34506,35614,23086,28731,30482,30517,30552,30756,24012,20156,30574,30598,30667,26283,33464,28945,27670,30687,32915,33504,25328,17590,23963,20450,33837,21016,32397,26300,30708,30729,27885,30748,21588,36373,30779,26653,24628,33220,32514,30806,31835,25412,25906,26515,18890,28825,31833,26133,19447,28304,31730,23834,26057,30869,30885,32181,30920,30942,32797,25782,30970,31015,23516,31008,30997,31034,27963,19659,29450,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22773,18836,31058,31074,32463,31125,31141,31197,22087,18888,29534,35471,36738,27211,24342,31213,24424,22121,24401,20175,31229,31917,27736,31245,34334,27175,18888,29094,27286,27211,31278,31336,27211,31355,31371,24401,31402,31418,24401,31437,31693,18888,31619,32841,18888,18890,27211,27211,31460,31477,27211,19484,24401,24401,31497,36581,24401,33020,18888,18888,18888,18888,30007,27211,27211,27211,27211,31516,32310,24401,24401,24401,24401,31539,18888,28762,18888,24651,35740,27211,27211,28644,31565,35796,24401,24401,19318,32188,18888,24334,28366,27212,29966,29832,19868,25659,18888,18889,27211,27211,19719,31587,19868,31635,32435,33693,30105,31663,20005,31715,31757,31784,31812,30015,31851,31878,25783,31898,19837,25782,19760,31015,23516,31008,22105,19419,27963,31933,30221,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22788,18836,22059,25729,30466,31968,24306,31984,32e3,32807,35160,27017,29590,34941,19801,29377,33700,22121,27040,30431,29396,28864,29565,18888,18888,18888,32027,18888,25783,27211,27211,23698,27211,35072,22164,24401,24401,30845,24401,24036,32045,18888,26929,18888,18888,18890,27211,31481,32068,27211,27211,32088,24401,33058,32122,24401,24401,33736,18888,18888,33162,18888,23086,27211,27211,29484,27211,28375,32144,24401,24401,33831,24401,26750,18888,18888,18888,27855,27211,27211,27211,36704,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,33107,22171,33224,24271,32169,31017,27856,31741,19840,25783,31738,30234,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,32204,32232,32252,32677,33295,29074,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,23619,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,32276,24401,24401,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,32299,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,33886,18889,36065,27211,19719,35326,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22803,18836,32335,31647,34666,32351,32367,32417,22087,18888,32433,19335,32451,27211,32479,27107,32500,22121,24401,32551,20085,32572,18866,22287,23753,18888,18888,32602,32665,27211,32693,27211,26972,32713,32729,24401,32764,24401,25877,32785,34768,18888,27390,32823,24594,24855,32857,24890,32878,32904,27211,32942,32977,24401,33e3,29313,24401,30790,26206,27666,33904,18888,23086,36353,27211,33036,27211,30756,24012,32153,24401,33056,24401,35861,18888,18888,30354,27972,27211,27211,33800,17590,20145,24401,24401,34638,20811,18888,18888,33074,27211,27212,36167,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,34616,24169,33093,33123,33157,27856,31741,23862,26552,34302,19837,25782,19760,31015,23516,31008,33178,19973,27963,23497,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22818,18836,33205,28113,33240,34097,33275,29183,22087,33318,35438,18888,18890,33345,26391,33382,27211,22121,33399,28072,33442,24401,18866,22232,18888,33459,18888,18888,33480,33498,25175,27211,27211,26704,22164,24775,35239,24401,24401,25914,29580,18888,18888,31109,25211,33520,33539,27211,27211,33556,36284,19484,33585,24401,24401,33604,32556,19628,18888,18888,31262,33658,23086,27211,27211,33679,27211,30756,24012,24401,24401,33716,24401,26854,27480,18888,33752,27855,33259,34701,27211,17590,32102,24782,23807,24401,18887,18888,18888,27211,27211,27212,33773,36105,19868,25659,18888,23368,27211,29157,19719,23889,34454,29286,18890,33794,25302,33816,19447,34079,33853,31862,31017,27856,31741,33877,28920,33937,19837,30461,34002,22276,36041,34029,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22833,18836,34064,32616,34113,34141,34157,34192,34208,32216,36013,31549,31952,34224,34248,34287,29330,34350,34389,34413,34481,26793,18866,26187,29635,22293,18888,36654,25783,34522,34544,34566,25821,35072,22164,34586,34609,34632,19604,24036,36644,36674,24681,18888,32401,34654,31339,34682,34698,27211,34717,34753,28053,34812,34836,24401,33619,19628,34858,32236,34906,24598,33523,27612,34890,34922,24732,29246,36717,33634,34465,32984,34168,26750,34957,18888,18888,34994,35010,27211,33040,17590,29913,35035,24401,36304,25482,30171,35883,35068,35088,26627,20441,31173,35123,35143,35176,24640,30492,29358,19719,35192,35219,25384,28801,35255,35279,32586,34496,23086,23330,29061,31017,27856,31741,19840,25783,31738,24547,25164,35315,31796,35353,34316,22105,19419,27963,24091,28630,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22848,18836,22059,34782,34088,35389,21008,35405,35421,35454,18888,18888,23466,35487,27211,27211,27211,35513,31154,24401,24401,24401,35560,18888,26863,36664,35601,24872,25783,30389,23536,26250,35647,35666,22164,19522,19564,30582,35682,27697,35575,29114,18888,18888,18888,18890,27211,35702,27211,27211,27211,35723,24401,35527,24401,24401,24401,19628,30184,18888,18888,18888,23086,35739,27211,27211,27211,29139,22938,24401,24401,24401,24401,23898,35756,18888,18888,25025,35778,27211,27211,17590,20064,35795,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,23917,18890,34550,31833,22262,19447,23086,23330,26418,31017,27856,31741,19840,25783,35812,19837,27187,35841,33135,23516,31008,22105,22148,28712,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22863,18836,22059,35877,28723,34097,31164,29183,22087,26758,18888,22592,18890,23989,27211,29812,27211,22121,33778,24401,31421,24401,18866,18888,18888,26872,18888,18888,25783,27211,30732,27211,27211,35072,22164,24401,24908,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22878,18836,22059,27837,27857,35899,24401,35915,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,31602,18888,18888,18888,18888,26223,27211,27211,27211,27211,27211,19484,35931,24401,24401,24401,24401,19628,18888,28136,18888,18888,35949,27211,32862,27211,32697,30756,24012,24401,32283,24401,32128,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22893,18836,22059,35974,34882,34097,33960,29183,35996,18888,23311,18888,36029,27211,27211,36064,36081,22121,24401,24401,36104,33950,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,36121,18888,25559,18888,18888,18890,27211,27211,30313,27211,27211,36154,24401,24401,34397,24401,24401,19628,28250,18888,18888,18888,23086,30926,27211,27211,27211,26983,24012,33642,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,19354,27857,36190,24401,36206,22087,18888,18888,18888,18007,27211,27211,27211,24724,22121,24401,24401,24401,30827,18866,18888,36222,18888,28795,18888,25783,35100,27211,27429,27211,35072,22164,30836,24401,24499,24401,24036,31693,18888,36244,18888,18888,18890,27211,36088,27211,27211,27211,19484,24401,28036,24401,24401,24401,19628,18888,18888,35631,18888,35762,27211,27211,36277,27211,34730,24012,24401,24401,36300,24401,36320,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,25712,18888,18888,36346,27211,27212,19184,24402,19868,25659,32029,18889,27211,33359,19719,23889,36369,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22384,18836,36389,19008,19233,20367,36434,17173,17595,36437,17330,17349,18921,17189,17208,17281,20355,36453,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,20362,21726,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22369,18836,18987,19008,19233,20367,19008,21737,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21813,18836,36489,19008,19233,20367,19008,17173,17737,36437,17330,17349,18921,17189,17208,17281,20355,17768,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,20543,22022,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21828,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,36517,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21828,18836,19307,18888,27857,30756,24401,29183,28015,18888,18888,18888,18890,27211,27211,27211,27211,36567,24401,24401,24401,24401,22953,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,28537,36603,24401,24401,24401,24401,24036,18881,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,36629,36690,18720,19008,19233,20367,19008,17454,17595,36437,17330,17349,18921,17189,17208,17281,20355,17223,17308,17327,17346,18918,36754,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,20362,21726,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,0,94242,0,118820,0,2211840,102439,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2482176,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,24,24,27,27,27,2207744,2404352,2412544,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3104768,2605056,2207744,2207744,2207744,2207744,2207744,2207744,2678784,2207744,2695168,2207744,2703360,2207744,2711552,2752512,2207744,0,0,0,0,0,0,2166784,0,0,0,0,0,0,2158592,2158592,3170304,3174400,2158592,0,139,0,2158592,2158592,2158592,2158592,2158592,2424832,2158592,2158592,2158592,2748416,2756608,2777088,2801664,2158592,2158592,2158592,2863104,2891776,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3104768,2158592,2158592,2158592,2158592,2158592,2158592,2207744,2785280,2207744,2809856,2207744,2207744,2842624,2207744,2207744,2207744,2899968,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2473984,2207744,2207744,2494464,2207744,2207744,2207744,2523136,2158592,2404352,2412544,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2564096,2158592,2158592,2605056,2158592,2158592,2158592,2158592,2158592,2158592,2678784,2158592,2695168,2158592,2703360,2158592,2711552,2752512,2158592,2158592,2785280,2158592,2158592,2785280,2158592,2809856,2158592,2158592,2842624,2158592,2158592,2158592,2899968,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,18,0,0,0,0,0,0,0,2211840,0,0,641,0,2158592,0,0,0,0,0,0,0,0,2211840,0,0,32768,0,2158592,0,2158592,2158592,2158592,2383872,2158592,2158592,2158592,2158592,3006464,2383872,2207744,2207744,2207744,2207744,2158877,2158877,2158877,2158877,0,0,0,2158877,2572573,2158877,2158877,0,2207744,2207744,2596864,2207744,2207744,2207744,2207744,2207744,2207744,2641920,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,167936,0,0,2162688,0,0,3104768,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,0,0,0,2146304,2146304,2224128,2224128,2232320,2232320,2232320,641,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2531328,2158592,2158592,2158592,2158592,2158592,2617344,2158592,2158592,2158592,2158592,2441216,2445312,2158592,2158592,2158592,2158592,2158592,2158592,2502656,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2580480,2158592,2158592,2158592,2158592,2621440,2158592,2580480,2158592,2158592,2158592,2158592,2621440,2158592,2158592,2158592,2158592,2158592,2158592,2699264,2158592,2158592,2158592,2158592,2158592,2748416,2756608,2777088,2801664,2207744,2863104,2891776,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3018752,2207744,3043328,2207744,2207744,2207744,2207744,3080192,2207744,2207744,3112960,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,172310,279,0,2162688,0,0,2207744,2207744,2207744,3186688,2207744,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2158592,2158592,2158592,2404352,2412544,2158592,2510848,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2584576,2158592,2609152,2158592,2158592,2629632,2158592,2158592,2158592,2686976,2158592,2715648,2158592,2158592,3121152,2158592,2158592,2158592,3149824,2158592,2158592,3170304,3174400,2158592,2367488,2207744,2207744,2207744,2207744,2158592,2158592,2158592,2158592,0,0,0,2158592,2572288,2158592,2158592,0,2207744,2207744,2207744,2433024,2207744,2453504,2461696,2207744,2207744,2207744,2207744,2207744,2207744,2510848,2207744,2207744,2207744,2207744,2207744,2531328,2207744,2207744,2207744,2207744,2207744,2617344,2207744,2207744,2207744,2207744,2158592,2158592,2158592,2158592,0,0,0,2158592,2572288,2158592,2158592,1508,2715648,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2867200,2207744,2904064,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2580480,2207744,2207744,2207744,2207744,2621440,2207744,2207744,2207744,3149824,2207744,2207744,3170304,3174400,2207744,0,0,0,0,0,0,0,0,0,0,138,2158592,2158592,2158592,2404352,2412544,2707456,2732032,2207744,2207744,2207744,2822144,2826240,2207744,2895872,2207744,2207744,2924544,2207744,2207744,2973696,2207744,0,0,0,0,0,0,2166784,0,0,0,0,0,285,2158592,2158592,3112960,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3186688,2158592,2207744,2207744,2158592,2158592,2158592,2158592,2158592,0,0,0,2158592,2158592,2158592,2158592,0,0,2535424,2543616,2158592,2158592,2158592,0,0,0,2158592,2158592,2158592,2990080,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2572288,2981888,2207744,2207744,3002368,2207744,3047424,3063808,3076096,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3203072,2708960,2732032,2158592,2158592,2158592,2822144,2827748,2158592,2895872,2158592,2158592,2924544,2158592,2158592,2973696,2158592,2981888,2158592,2158592,3002368,2158592,3047424,3063808,3076096,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3203072,2981888,2158592,2158592,3003876,2158592,3047424,3063808,3076096,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3203072,2207744,2207744,2207744,2207744,2207744,2424832,2207744,2207744,2207744,2207744,2207744,2207744,2207744,20480,0,0,0,0,0,2162688,20480,0,2523136,2527232,2158592,2158592,2576384,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2908160,2527232,2207744,2207744,2576384,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2908160,2207744,0,0,0,0,0,0,2166784,0,0,0,0,0,286,2158592,2158592,0,0,2158592,2158592,2158592,2158592,2633728,2658304,0,0,2740224,2744320,0,2834432,2207744,2207744,2977792,2207744,2207744,2207744,2207744,3039232,2207744,2207744,2207744,2207744,2207744,2207744,3158016,0,0,29315,0,0,0,0,45,45,45,45,45,933,45,45,45,45,442,45,45,45,45,45,45,45,45,45,67,67,2494464,2158592,2158592,2158592,2524757,2527232,2158592,2158592,2576384,2158592,2158592,2158592,2158592,2158592,2158592,1504,2158592,2498560,2158592,2158592,2158592,2158592,2568192,2158592,2592768,2625536,2158592,2158592,2674688,2736128,2158592,2158592,0,2158592,2912256,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3108864,2158592,2158592,3133440,3145728,3153920,2375680,2379776,2207744,2207744,2420736,2207744,2449408,2207744,2207744,2207744,2498560,2207744,2207744,2207744,2207744,2568192,2207744,0,0,0,0,0,0,2166784,0,0,0,0,0,551,2158592,2158592,2158592,2158592,2207744,2506752,2207744,2207744,2207744,2207744,2207744,2158592,2506752,0,2020,2158592,2592768,2625536,2207744,2207744,2674688,2736128,2207744,2207744,2207744,2912256,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,542,0,544,2207744,3108864,2207744,2207744,3133440,3145728,3153920,2375680,2379776,2158592,2158592,2420736,2158592,2449408,2158592,2158592,2158592,2158592,2158592,3186688,2158592,0,641,0,0,0,0,0,0,2367488,2158592,2498560,2158592,2158592,1621,2158592,2158592,2568192,2158592,2592768,2625536,2158592,2158592,2674688,0,0,0,0,0,1608,97,97,97,97,97,97,97,97,97,97,1107,97,97,1110,97,97,3133440,3145728,3153920,2158592,2408448,2416640,2158592,2465792,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3014656,2158592,2158592,3051520,2158592,2158592,3100672,2158592,2158592,3121152,2158592,2158592,2158592,3149824,2416640,2207744,2465792,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2633728,2658304,2740224,2744320,2834432,2949120,2158592,2985984,2158592,2998272,2158592,2158592,2158592,3129344,2207744,2408448,2949120,2207744,2985984,2207744,2998272,2207744,2207744,2207744,3129344,2158592,2408448,2416640,2158592,2465792,2158592,2158592,2158592,2158592,2158592,3186688,2158592,0,32768,0,0,0,0,0,0,2367488,2949120,2158592,2985984,2158592,2998272,2158592,2158592,2158592,3129344,2158592,2158592,2478080,2158592,2158592,2158592,2535424,2543616,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3117056,2207744,2207744,2478080,2207744,2207744,2207744,2207744,2699264,2207744,2207744,2207744,2207744,2207744,2748416,2756608,2777088,2801664,2207744,2207744,2158877,2158877,2158877,2158877,2158877,0,0,0,2158877,2158877,2158877,2158877,0,0,2535709,2543901,2158877,2158877,2158877,0,0,0,2158877,2158877,2158877,2990365,2158877,2158877,2158730,2158730,2158730,2158730,2158730,2572426,2207744,2535424,2543616,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3117056,2158592,2158592,2478080,2207744,2207744,2990080,2207744,2207744,2158592,2158592,2482176,2158592,2158592,0,0,0,2158592,2158592,2158592,0,2158592,2908160,2158592,2158592,2158592,2977792,2158592,2158592,2158592,2158592,3039232,2158592,2158592,3010560,2207744,2428928,2207744,2514944,2207744,2588672,2207744,2838528,2207744,2207744,2207744,3010560,2158592,2428928,2158592,2514944,0,0,2158592,2588672,2158592,0,2838528,2158592,2158592,2158592,3010560,2158592,2506752,2158592,18,0,0,0,0,0,0,0,2211840,0,0,0,0,2158592,0,0,29315,922,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,1539,45,3006464,2383872,0,2020,2158592,2158592,2158592,2158592,3006464,2158592,2637824,2953216,2158592,2207744,2637824,2953216,2207744,0,0,2158592,2637824,2953216,2158592,2539520,2158592,2539520,2207744,0,0,2539520,2158592,2158592,2158592,2158592,2207744,2506752,2207744,2207744,2207744,2207744,2207744,2158592,2506752,0,0,2158592,2207744,0,2158592,2158592,2207744,0,2158592,2158592,2207744,0,2158592,2965504,2965504,2965504,0,0,0,0,0,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2474269,2158877,2158877,0,0,2158877,2158877,2158877,2158877,2634013,2658589,0,0,2740509,2744605,0,2834717,40976,18,36884,45078,24,28,90143,94242,118820,102439,106538,98347,118820,118820,118820,40976,18,18,36884,0,0,0,24,24,24,27,27,27,27,90143,0,0,86016,0,0,2211840,102439,0,0,0,98347,0,2158592,2158592,2158592,2158592,2158592,3158016,0,2375680,2379776,2158592,2158592,2420736,2158592,2449408,2158592,2158592,0,94242,0,0,0,2211840,102439,0,0,106538,98347,135,2158592,2158592,2158592,2158592,2158592,2158592,2564096,2158592,2158592,2158592,2158592,2158592,2596864,2158592,2158592,2158592,2158592,2158592,2158592,2641920,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2781184,2793472,2494464,2158592,2158592,2158592,2523136,2527232,2158592,2158592,2576384,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,24,0,27,27,0,2158592,2498560,2158592,2158592,0,2158592,2158592,2568192,2158592,2592768,2625536,2158592,2158592,2674688,0,0,0,0,0,2211840,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2473984,2158592,2158592,2494464,2158592,2158592,2158592,3006464,2383872,0,0,2158592,2158592,2158592,2158592,3006464,2158592,2637824,2953216,2158592,2207744,2637824,2953216,40976,18,36884,45078,24,27,147488,94242,147456,147488,106538,98347,0,0,147456,40976,18,18,36884,0,45078,0,24,24,24,27,27,27,27,0,81920,0,94242,0,0,0,2211840,0,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,2158592,2428928,2158592,2514944,2158592,2588672,2158592,2838528,2158592,2158592,40976,18,151573,45078,24,27,90143,94242,0,102439,106538,98347,0,0,0,40976,18,18,36884,0,45078,0,24,24,24,27,27,27,27,90143,0,0,1315,0,97,97,97,97,97,97,97,97,97,97,1487,97,18,131427,0,0,0,0,0,0,362,0,0,365,29315,367,0,0,29315,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,130,94242,0,0,0,2211840,102439,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,2158592,3096576,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2207744,2207744,2158592,18,0,0,0,0,0,0,0,2211840,0,0,0,0,2158592,644,2207744,2207744,2207744,3186688,2207744,0,1080,0,1084,0,1088,0,0,0,0,0,0,0,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2531466,2158730,2158730,2158730,2158730,2158730,2617482,0,94242,0,0,0,2211840,102439,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,2781184,2793472,2158592,2818048,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,40976,18,36884,45078,24,27,90143,159779,159744,102439,159779,98347,0,0,159744,40976,18,18,36884,0,45078,0,2224253,172032,2224253,2232448,2232448,172032,2232448,90143,0,0,2170880,0,0,550,829,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,124,124,127,127,127,40976,18,36884,45078,25,29,90143,94242,0,102439,106538,98347,0,0,163931,40976,18,18,36884,0,45078,249856,24,24,24,27,27,27,27,90143,0,0,2170880,0,0,827,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,4243810,4243810,24,24,27,27,27,2207744,0,0,0,0,0,0,2166784,0,0,0,0,57344,286,2158592,2158592,2158592,2158592,2707456,2732032,2158592,2158592,2158592,2822144,2826240,2158592,2895872,2158592,2158592,2924544,2158592,2158592,2973696,2158592,2207744,2207744,2207744,3186688,2207744,0,0,0,0,0,0,53248,0,0,0,0,0,97,97,97,97,97,1613,97,97,97,97,97,97,1495,97,97,97,97,97,97,97,97,97,566,97,97,97,97,97,97,2207744,0,0,0,0,0,0,2166784,546,0,0,0,0,286,2158592,2158592,2158592,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,17,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,20480,120,121,18,18,36884,0,45078,0,24,24,24,27,27,27,27,90143,0,0,2170880,0,53248,550,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,196608,18,266240,24,24,27,27,27,0,94242,0,0,0,38,102439,0,0,106538,98347,0,45,45,45,45,45,45,45,1535,45,45,45,45,45,45,45,1416,45,45,45,45,45,45,45,45,424,45,45,45,45,45,45,45,45,45,405,45,45,45,45,45,45,45,45,45,45,45,45,45,199,45,45,67,67,67,67,67,491,67,67,67,67,67,67,67,67,67,67,67,1766,67,67,67,1767,67,24850,24850,12564,12564,0,0,2166784,546,0,53531,53531,0,286,97,97,0,0,97,97,97,97,97,97,0,0,97,97,0,97,97,97,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,743,57889,0,2170880,0,0,550,0,97,97,97,97,97,97,97,97,97,45,45,45,45,45,45,45,45,1856,45,1858,1859,67,67,67,1009,67,67,67,67,67,67,67,67,67,67,67,1021,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,0,0,0,0,0,0,2367773,2158877,2158877,2158877,2158877,2158877,2158877,2699549,2158877,2158877,2158877,2158877,2158877,2748701,2756893,2777373,2801949,97,1115,97,97,97,97,97,97,97,97,97,97,97,97,97,97,857,97,67,67,67,67,67,1258,67,67,67,67,67,67,67,67,67,67,67,1826,67,97,97,97,97,97,97,1338,97,97,97,97,97,97,97,97,97,97,97,97,97,870,97,97,67,67,67,1463,67,67,67,67,67,67,67,67,67,67,67,67,67,1579,67,67,97,97,97,1518,97,97,97,97,97,97,97,97,97,97,97,97,97,904,905,97,97,97,97,1620,97,97,97,97,97,97,97,97,97,97,97,0,921,0,0,0,0,0,0,45,1679,67,67,67,1682,67,67,67,67,67,67,67,67,67,1690,67,0,0,97,97,97,97,45,45,67,67,0,0,97,97,45,45,45,669,45,45,45,45,45,45,45,45,45,45,45,45,189,45,45,45,1748,45,45,45,1749,1750,45,45,45,45,45,45,45,45,67,67,67,67,1959,67,67,67,67,1768,67,67,67,67,67,67,67,67,97,97,97,97,97,97,97,97,97,1791,97,97,97,97,97,97,97,97,45,45,45,45,45,45,1802,67,1817,67,67,67,67,67,67,1823,67,67,67,67,97,97,97,97,0,0,0,97,97,97,97,0,97,97,97,97,1848,45,45,45,45,45,45,45,45,45,45,45,659,45,45,45,45,45,45,45,1863,67,67,67,67,67,67,67,67,67,67,67,67,495,67,67,67,67,67,1878,97,97,97,97,0,0,0,97,97,97,97,0,0,97,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,45,45,45,45,45,67,67,67,67,97,97,97,97,0,0,0,1973,97,97,97,0,97,97,97,97,97,97,97,97,97,97,97,97,97,1165,97,1167,67,24850,24850,12564,12564,0,0,2166784,0,0,53531,53531,0,286,97,97,0,0,97,97,97,97,97,97,0,0,97,97,1789,97,0,94242,0,0,0,2211840,102439,0,0,106538,98347,136,2158592,2158592,2158592,2158592,2158592,3158016,229376,2375680,2379776,2158592,2158592,2420736,2158592,2449408,2158592,2158592,67,24850,24850,12564,12564,0,0,280,547,0,53531,53531,0,286,97,97,0,0,97,97,97,97,97,97,0,1788,97,97,0,97,2024,97,45,45,45,45,45,45,67,67,67,67,67,67,67,67,235,67,67,67,67,67,57889,547,547,0,0,550,0,97,97,97,97,97,97,97,97,97,45,45,45,1799,45,45,45,67,67,67,67,67,25398,0,13112,0,54074,0,0,1092,0,0,0,0,0,97,97,97,97,1612,97,97,97,97,1616,97,1297,1472,0,0,0,0,1303,1474,0,0,0,0,1309,1476,0,0,0,0,97,97,97,1481,97,97,97,97,97,97,1488,97,0,1474,0,1476,0,97,97,97,97,97,97,97,97,97,97,97,607,97,97,97,97,40976,18,36884,45078,26,30,90143,94242,0,102439,106538,98347,0,0,213080,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,143448,40976,18,18,36884,0,45078,0,24,24,24,27,27,27,27,0,0,0,0,97,97,97,97,1482,97,1483,97,97,97,97,97,97,1326,97,97,1329,1330,97,97,97,97,97,97,1159,1160,97,97,97,97,97,97,97,97,590,97,97,97,97,97,97,97,0,94242,0,0,0,2211974,102439,0,0,106538,98347,0,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2474122,2158730,2158730,2494602,2158730,2158730,2158730,2809994,2158730,2158730,2842762,2158730,2158730,2158730,2900106,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3014794,2158730,2158730,3051658,2158730,2158730,3100810,2158730,2158730,2158730,2158730,3096714,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2207744,2207744,2207744,2207744,2207744,2572288,2207744,2207744,2207744,2207744,541,541,543,543,0,0,2166784,0,548,549,549,0,286,2158877,2158877,2158877,2863389,2892061,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,3186973,2158877,0,0,0,0,0,0,0,0,2367626,2158877,2404637,2412829,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2564381,2158877,2158877,2605341,2158877,2158877,2158877,2158877,2158877,2158877,2679069,2158877,2695453,2158877,2703645,2158877,2711837,2752797,2158877,0,2158877,2158877,2158877,2384010,2158730,2158730,2158730,2158730,3006602,2383872,2207744,2207744,2207744,2207744,2207744,2207744,3096576,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,0,0,0,2162688,0,0,2158877,2785565,2158877,2810141,2158877,2158877,2842909,2158877,2158877,2158877,2900253,2158877,2158877,2158877,2158877,2158877,2531613,2158877,2158877,2158877,2158877,2158877,2617629,2158877,2158877,2158877,2158877,2158730,2818186,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3105053,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,0,0,0,0,0,97,97,97,1611,97,97,97,97,97,97,97,1496,97,97,1499,97,97,97,97,97,2441354,2445450,2158730,2158730,2158730,2158730,2158730,2158730,2502794,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2433162,2158730,2453642,2461834,2158730,2158730,2158730,2158730,2158730,2158730,2580618,2158730,2158730,2158730,2158730,2621578,2158730,2158730,2158730,2158730,2158730,2158730,2699402,2158730,2158730,2158730,2158730,2678922,2158730,2695306,2158730,2703498,2158730,2711690,2752650,2158730,2158730,2785418,2158730,2158730,2158730,3113098,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3186826,2158730,2207744,2207744,2207744,2207744,2781184,2793472,2207744,2818048,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,541,0,543,2158877,2502941,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2580765,2158877,2158877,2158877,2158877,2621725,2158877,3019037,2158877,3043613,2158877,2158877,2158877,2158877,3080477,2158877,2158877,3113245,2158877,2158877,2158877,2158877,0,2158877,2908445,2158877,2158877,2158877,2978077,2158877,2158877,2158877,2158877,3039517,2158877,2158730,2510986,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2584714,2158730,2609290,2158730,2158730,2629770,2158730,2158730,2158730,2388106,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2605194,2158730,2158730,2158730,2158730,2687114,2158730,2715786,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2867338,2158730,2904202,2158730,2158730,2158730,2642058,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2781322,2793610,2158730,3121290,2158730,2158730,2158730,3149962,2158730,2158730,3170442,3174538,2158730,2367488,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2441216,2445312,2207744,2207744,2207744,2207744,2207744,2207744,2502656,2158877,2433309,2158877,2453789,2461981,2158877,2158877,2158877,2158877,2158877,2158877,2511133,2158877,2158877,2158877,2158877,2584861,2158877,2609437,2158877,2158877,2629917,2158877,2158877,2158877,2687261,2158877,2715933,2158877,2158730,2158730,2973834,2158730,2982026,2158730,2158730,3002506,2158730,3047562,3063946,3076234,2158730,2158730,2158730,2158730,2207744,2506752,2207744,2207744,2207744,2207744,2207744,2158877,2507037,0,0,2158877,2158730,2158730,2158730,3203210,2207744,2207744,2207744,2207744,2207744,2424832,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2564096,2207744,2207744,2207744,2707741,2732317,2158877,2158877,2158877,2822429,2826525,2158877,2896157,2158877,2158877,2924829,2158877,2158877,2973981,2158877,18,0,0,0,0,0,0,0,2211840,0,0,642,0,2158592,0,45,1529,45,45,45,45,45,45,45,45,45,45,45,45,45,1755,45,67,67,2982173,2158877,2158877,3002653,2158877,3047709,3064093,3076381,2158877,2158877,2158877,2158877,2158877,2158877,2158877,3203357,2523274,2527370,2158730,2158730,2576522,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2908298,2494749,2158877,2158877,2158877,2523421,2527517,2158877,2158877,2576669,2158877,2158877,2158877,2158877,2158877,2158877,0,40976,0,18,18,4321280,2224253,2232448,4329472,2232448,2158730,2498698,2158730,2158730,2158730,2158730,2568330,2158730,2592906,2625674,2158730,2158730,2674826,2736266,2158730,2158730,2158730,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2158730,2912394,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3109002,2158730,2158730,3133578,3145866,3154058,2375680,2207744,3108864,2207744,2207744,3133440,3145728,3153920,2375965,2380061,2158877,2158877,2421021,2158877,2449693,2158877,2158877,2158877,3117341,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3104906,2158730,2158730,2158730,2158730,2158730,2158730,2158877,2498845,2158877,2158877,0,2158877,2158877,2568477,2158877,2593053,2625821,2158877,2158877,2674973,0,0,0,0,97,97,1480,97,97,97,97,97,1485,97,97,97,0,97,97,1729,97,1731,97,97,97,97,97,97,97,311,97,97,97,97,97,97,97,97,1520,97,97,1523,97,97,1526,97,2736413,2158877,2158877,0,2158877,2912541,2158877,2158877,2158877,2158877,2158877,2158877,2158877,3109149,2158877,2158877,3014941,2158877,2158877,3051805,2158877,2158877,3100957,2158877,2158877,3121437,2158877,2158877,2158877,3150109,3133725,3146013,3154205,2158730,2408586,2416778,2158730,2465930,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3018890,2158730,3043466,2158730,2158730,2158730,2158730,3080330,2633866,2658442,2740362,2744458,2834570,2949258,2158730,2986122,2158730,2998410,2158730,2158730,2158730,3129482,2207744,2408448,2949120,2207744,2985984,2207744,2998272,2207744,2207744,2207744,3129344,2158877,2408733,2416925,2158877,2466077,2158877,2158877,3170589,3174685,2158877,0,0,0,2158730,2158730,2158730,2158730,2158730,2424970,2158730,2158730,2158730,2158730,2707594,2732170,2158730,2158730,2158730,2822282,2826378,2158730,2896010,2158730,2158730,2924682,2949405,2158877,2986269,2158877,2998557,2158877,2158877,2158877,3129629,2158730,2158730,2478218,2158730,2158730,2158730,2535562,2543754,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3117194,2207744,2207744,2478080,2207744,2207744,2207744,2207744,3014656,2207744,2207744,3051520,2207744,2207744,3100672,2207744,2207744,3121152,2207744,2207744,2207744,2207744,2207744,2584576,2207744,2609152,2207744,2207744,2629632,2207744,2207744,2207744,2686976,2207744,2207744,2535424,2543616,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3117056,2158877,2158877,2478365,0,2158877,2158877,2158877,2158877,2158877,2158877,2158730,2158730,2482314,2158730,2158730,2158730,2158730,2158730,2158730,2207744,2207744,2207744,2387968,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,823,0,825,2158730,2158730,2158730,2990218,2158730,2158730,2207744,2207744,2482176,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,0,0,0,2162688,135,0,2207744,2207744,2990080,2207744,2207744,2158877,2158877,2482461,2158877,2158877,0,0,0,2158877,2158877,2158877,2158877,2158877,2158730,2429066,2158730,2515082,2158730,2588810,2158730,2838666,2158730,2158730,2158730,3010698,2207744,2428928,2207744,2514944,2207744,2588672,2207744,2838528,2207744,2207744,2207744,3010560,2158877,2429213,2158877,2515229,0,0,2158877,2588957,2158877,0,2838813,2158877,2158877,2158877,3010845,2158730,2506890,2158730,2158730,2158730,2748554,2756746,2777226,2801802,2158730,2158730,2158730,2863242,2891914,2158730,2158730,2158730,2158730,2158730,2158730,2564234,2158730,2158730,2158730,2158730,2158730,2597002,2158730,2158730,2158730,3006464,2384157,0,0,2158877,2158877,2158877,2158877,3006749,2158730,2637962,2953354,2158730,2207744,2637824,2953216,2207744,0,0,2158877,2638109,2953501,2158877,2539658,2158730,2539520,2207744,0,0,2539805,2158877,2158730,2158730,2158730,2977930,2158730,2158730,2158730,2158730,3039370,2158730,2158730,2158730,2158730,2158730,2158730,3158154,2207744,0,2158877,2158730,2207744,0,2158877,2158730,2207744,0,2158877,2965642,2965504,2965789,0,0,0,0,1315,0,0,0,0,97,97,97,97,97,97,97,1484,97,97,97,97,2158592,18,0,122880,0,0,0,77824,0,2211840,0,0,0,0,2158592,0,356,0,0,0,0,0,0,28809,0,139,45,45,45,45,45,45,1751,45,45,45,45,45,45,45,67,67,1427,67,67,67,67,67,1432,67,67,67,3104768,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,122880,0,0,0,0,1315,0,0,0,0,97,97,97,97,97,97,1322,550,0,286,0,2158592,2158592,2158592,2158592,2158592,2424832,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,24,24,4329472,27,27,2207744,2207744,2977792,2207744,2207744,2207744,2207744,3039232,2207744,2207744,2207744,2207744,2207744,2207744,3158016,542,0,0,0,542,0,544,0,0,0,544,0,550,0,0,0,0,0,97,97,1610,97,97,97,97,97,97,97,97,898,97,97,97,97,97,97,97,0,94242,0,0,0,2211840,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2424832,2158592,2158592,2158592,2158592,2158592,2158592,40976,18,36884,45078,24,27,90143,94242,237568,102439,106538,98347,0,0,20480,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,192512,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,94,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,96,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,12378,40976,18,18,36884,0,45078,0,24,24,24,126,126,126,126,90143,0,0,2170880,0,0,0,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,20480,40976,0,18,18,24,24,27,27,27,40976,18,36884,45078,24,27,90143,94242,241664,102439,106538,98347,0,0,20568,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,200797,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,20480,40976,18,36884,45078,24,27,90143,94242,0,0,0,44,0,0,20575,40976,18,36884,45078,24,27,90143,94242,0,41,41,41,0,0,1126400,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,0,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,89,40976,18,18,36884,0,45078,0,24,24,24,27,131201,27,27,90143,0,0,2170880,0,0,550,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2441216,2445312,2158592,2158592,2158592,2158592,2158592,0,94242,0,0,208896,2211840,102439,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,3186688,2158592,0,0,0,0,0,0,0,0,2367488,32768,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2433024,2158592,2453504,2461696,2158592,2158592,2158592,2158592,2158592,2158592,2510848,2158592,2158592,2158592,2158592,40976,18,36884,245783,24,27,90143,94242,0,102439,106538,98347,0,0,20480,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,221184,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,180224,40976,18,18,36884,155648,45078,0,24,24,217088,27,27,27,217088,90143,0,0,2170880,0,0,828,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,2207744,2207744,2207744,2387968,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,0,0,0,2162688,233472,0,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,45,45,718,45,45,45,45,45,45,45,45,45,727,131427,0,0,0,0,362,0,365,28809,367,139,45,45,45,45,45,45,1808,45,45,45,45,67,67,67,67,67,67,67,97,97,0,0,97,67,24850,24850,12564,12564,0,57889,0,0,0,53531,53531,367,286,97,97,0,0,97,97,97,97,97,97,1787,0,97,97,0,97,97,97,45,45,45,45,2029,45,67,67,67,67,2033,57889,0,0,54074,54074,550,0,97,97,97,97,97,97,97,97,97,45,1798,45,45,1800,45,45,0,1472,0,0,0,0,0,1474,0,0,0,0,0,1476,0,0,0,0,1315,0,0,0,0,97,97,97,97,1320,97,97,0,0,97,97,97,97,1786,97,0,0,97,97,0,1790,1527,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,663,67,24850,24850,12564,12564,0,57889,281,0,0,53531,53531,367,286,97,97,0,0,97,97,97,1785,97,97,0,0,97,97,0,97,97,1979,97,97,45,45,1983,45,1984,45,45,45,45,45,652,45,45,45,45,45,45,45,45,45,45,690,45,45,694,45,45,40976,19,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,262144,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,46,67,98,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,45,67,97,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,258048,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,1122423,40976,18,36884,45078,24,27,90143,94242,0,1114152,1114152,1114152,0,0,1114112,40976,18,36884,45078,24,27,90143,94242,37,102439,106538,98347,0,0,204800,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,57436,40976,18,36884,45078,24,27,33,33,0,33,33,33,0,0,0,40976,18,18,36884,0,45078,0,124,124,124,127,127,127,127,90143,0,0,2170880,0,0,550,0,2158877,2158877,2158877,2388253,2158877,2158877,2158877,2158877,2158877,2781469,2793757,2158877,2818333,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2867485,2158877,2904349,2158877,2158877,2158877,2158877,2158877,2158877,2158877,3096861,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2441501,2445597,2158877,2158877,2158877,2158877,2158877,40976,122,123,36884,0,45078,0,24,24,24,27,27,27,27,90143,0,921,29315,0,0,0,0,45,45,45,45,45,45,45,45,936,2158592,4243810,0,0,0,0,0,0,0,2211840,0,0,0,0,2158592,0,921,29315,0,0,0,0,45,45,45,45,45,45,45,935,45,45,45,715,45,45,45,45,45,45,45,723,45,45,45,45,45,1182,45,45,45,45,45,45,45,45,45,45,430,45,45,45,45,45,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,47,68,99,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,48,69,100,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,49,70,101,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,50,71,102,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,51,72,103,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,52,73,104,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,53,74,105,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,54,75,106,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,55,76,107,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,56,77,108,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,57,78,109,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,58,79,110,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,59,80,111,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,60,81,112,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,61,82,113,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,62,83,114,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,63,84,115,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,64,85,116,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,65,86,117,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,66,87,118,40976,18,36884,45078,24,27,90143,94242,118820,102439,106538,98347,118820,118820,118820,40976,18,18,0,0,45078,0,24,24,24,27,27,27,27,90143,0,0,1314,0,0,0,0,0,0,97,97,97,97,97,1321,97,18,131427,0,0,0,0,0,0,362,0,0,365,0,367,0,0,1315,0,97,97,97,97,97,97,97,97,97,97,97,97,97,1360,97,97,131,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,145,149,45,45,45,45,45,174,45,179,45,185,45,188,45,45,202,67,255,67,67,269,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,292,296,97,97,97,97,97,321,97,326,97,332,97,18,131427,0,0,0,0,0,0,362,0,0,365,29315,367,646,335,97,97,349,97,97,0,40976,0,18,18,24,24,27,27,27,437,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,523,67,67,67,67,67,67,67,67,67,67,67,67,511,67,67,67,97,97,97,620,97,97,97,97,97,97,97,97,97,97,97,97,97,1501,1502,97,793,67,67,796,67,67,67,67,67,67,67,67,67,67,808,67,0,0,97,97,97,97,45,45,67,67,0,0,97,97,2052,67,67,67,67,813,67,67,67,67,67,67,67,25398,542,13112,544,57889,0,0,54074,54074,550,830,97,97,97,97,97,97,97,97,97,315,97,97,97,97,97,97,841,97,97,97,97,97,97,97,97,97,854,97,97,97,97,97,97,589,97,97,97,97,97,97,97,97,97,867,97,97,97,97,97,97,97,891,97,97,894,97,97,97,97,97,97,97,97,97,97,906,45,937,45,45,940,45,45,45,45,45,45,948,45,45,45,45,45,734,735,67,737,67,738,67,740,67,67,67,45,967,45,45,45,45,45,45,45,45,45,45,45,45,45,45,435,45,45,45,980,45,45,45,45,45,45,45,45,45,45,45,45,45,415,45,45,67,67,1024,67,67,67,67,67,67,67,67,67,67,67,67,67,97,97,97,67,67,67,67,67,25398,1081,13112,1085,54074,1089,0,0,0,0,0,0,363,0,28809,0,139,45,45,45,45,45,45,1674,45,45,45,45,45,45,45,45,67,1913,67,1914,67,67,67,1918,67,67,97,97,97,97,1118,97,97,97,97,97,97,97,97,97,97,97,630,97,97,97,97,97,1169,97,97,97,97,97,0,921,0,1175,0,0,0,0,45,45,45,45,45,45,1534,45,45,45,45,45,1538,45,45,45,45,1233,45,45,45,45,45,45,67,67,67,67,67,67,67,67,742,67,45,45,1191,45,45,45,45,45,45,45,45,45,45,45,45,45,454,67,67,67,67,1243,67,67,67,67,67,67,67,67,67,67,67,1251,67,0,0,97,97,97,97,45,45,67,67,2050,0,97,97,45,45,45,732,45,45,67,67,67,67,67,67,67,67,67,67,67,67,97,97,67,67,67,1284,67,67,67,67,67,67,67,67,67,67,67,67,772,67,67,67,1293,67,67,67,67,67,67,0,0,0,0,0,0,0,0,0,0,368,2158592,2158592,2158592,2404352,2412544,1323,97,97,97,97,97,97,97,97,97,97,97,1331,97,97,97,0,97,97,97,97,97,97,97,97,97,97,97,1737,97,1364,97,97,97,97,97,97,97,97,97,97,97,97,1373,97,18,131427,0,0,0,0,0,0,362,0,0,365,29315,367,647,45,45,1387,45,45,1391,45,45,45,45,45,45,45,45,45,45,410,45,45,45,45,45,1400,45,45,45,45,45,45,45,45,45,45,1407,45,45,45,45,45,941,45,943,45,45,45,45,45,45,951,45,67,1438,67,67,67,67,67,67,67,67,67,67,1447,67,67,67,67,67,67,782,67,67,67,67,67,67,67,67,67,756,67,67,67,67,67,67,97,1491,97,97,97,97,97,97,97,97,97,97,1500,97,97,97,0,97,97,97,97,97,97,97,97,97,97,1736,97,45,45,1541,45,45,45,45,45,45,45,45,45,45,45,45,45,677,45,45,67,1581,67,67,67,67,67,67,67,67,67,67,67,67,67,67,791,792,67,67,67,67,1598,67,1600,67,67,67,67,67,67,67,67,1472,97,97,97,1727,97,97,97,97,97,97,97,97,97,97,97,97,97,1513,97,97,67,67,97,1879,97,1881,97,0,1884,0,97,97,97,97,0,0,97,97,97,97,97,0,0,0,1842,97,97,67,67,67,67,67,97,97,97,97,1928,0,0,0,97,97,97,97,97,97,45,45,45,45,45,1903,45,45,45,67,67,67,67,97,97,97,97,1971,0,0,97,97,97,97,0,97,97,97,97,97,97,97,97,97,0,0,0,45,45,45,1381,45,45,45,45,1976,97,97,97,97,97,45,45,45,45,45,45,45,45,45,45,45,45,1747,809,67,67,67,67,67,67,67,67,67,67,67,25398,542,13112,544,97,907,97,97,97,97,97,97,97,97,97,97,97,638,0,0,0,0,1478,97,97,97,97,97,97,97,97,97,97,97,1150,97,97,97,97,67,67,67,67,1244,67,67,67,67,67,67,67,67,67,67,67,477,67,67,67,67,67,67,1294,67,67,67,67,0,0,0,0,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1324,97,97,97,97,97,97,97,97,97,97,97,97,97,0,0,0,1374,97,97,97,97,0,1175,0,45,45,45,45,45,45,45,45,945,45,45,45,45,45,45,45,45,1908,45,45,1910,45,67,67,67,67,67,67,67,67,1919,67,0,0,97,97,97,97,45,2048,67,2049,0,0,97,2051,45,45,45,939,45,45,45,45,45,45,45,45,45,45,45,45,397,45,45,45,1921,67,67,1923,67,97,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,1947,45,1935,0,0,0,97,1939,97,97,1941,97,45,45,45,45,45,45,382,389,45,45,45,45,45,45,45,45,1810,45,45,1812,67,67,67,67,67,256,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,336,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,0,0,0,362,0,365,28809,367,139,45,45,371,373,45,45,45,955,45,45,45,45,45,45,45,45,45,45,45,45,413,45,45,45,457,459,67,67,67,67,67,67,67,67,473,67,478,67,67,482,67,67,485,67,67,67,67,67,67,67,67,67,67,67,67,67,97,1828,97,554,556,97,97,97,97,97,97,97,97,570,97,575,97,97,579,97,97,582,97,97,97,97,97,97,97,97,97,97,97,97,97,330,97,97,67,746,67,67,67,67,67,67,67,67,67,758,67,67,67,67,67,67,67,1575,67,67,67,67,67,67,67,67,493,67,67,67,67,67,67,67,97,97,844,97,97,97,97,97,97,97,97,97,856,97,97,97,0,97,97,97,97,97,97,97,97,1735,97,97,97,0,97,97,97,97,97,97,97,1642,97,1644,97,97,890,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,0,67,67,67,67,1065,1066,67,67,67,67,67,67,67,67,67,67,532,67,67,67,67,67,67,67,1451,67,67,67,67,67,67,67,67,67,67,67,67,67,496,67,67,97,97,1505,97,97,97,97,97,97,97,97,97,97,97,97,97,593,97,97,0,1474,0,1476,0,97,97,97,97,97,97,97,97,97,97,1617,97,97,1635,0,1637,97,97,97,97,97,97,97,97,97,97,97,885,97,97,97,97,67,67,1704,67,67,67,67,97,97,97,97,97,97,97,97,97,565,572,97,97,97,97,97,97,97,97,1832,0,97,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,1946,45,45,67,67,67,67,67,97,1926,97,1927,97,0,0,0,97,97,1934,2043,0,0,97,97,97,2047,45,45,67,67,0,1832,97,97,45,45,45,981,45,45,45,45,45,45,45,45,45,45,45,45,1227,45,45,45,131427,0,0,0,0,362,0,365,28809,367,139,45,45,372,45,45,45,45,1661,1662,45,45,45,45,45,1666,45,45,45,45,45,1673,45,1675,45,45,45,45,45,45,45,67,1426,67,67,67,67,67,67,67,67,67,67,1275,67,67,67,67,67,45,418,45,45,420,45,45,423,45,45,45,45,45,45,45,45,959,45,45,962,45,45,45,45,458,67,67,67,67,67,67,67,67,67,67,67,67,67,67,483,67,67,67,67,504,67,67,506,67,67,509,67,67,67,67,67,67,67,528,67,67,67,67,67,67,67,67,1287,67,67,67,67,67,67,67,555,97,97,97,97,97,97,97,97,97,97,97,97,97,97,580,97,97,97,97,601,97,97,603,97,97,606,97,97,97,97,97,97,848,97,97,97,97,97,97,97,97,97,1498,97,97,97,97,97,97,45,45,714,45,45,45,45,45,45,45,45,45,45,45,45,45,989,990,45,67,67,67,67,67,1011,67,67,67,67,1015,67,67,67,67,67,67,67,753,67,67,67,67,67,67,67,67,467,67,67,67,67,67,67,67,45,45,1179,45,45,45,45,45,45,45,45,45,45,45,45,45,1003,1004,67,1217,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,728,67,1461,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1034,67,97,1516,97,97,97,97,97,97,97,97,97,97,97,97,97,97,871,97,67,67,67,1705,67,67,67,97,97,97,97,97,97,97,97,97,567,97,97,97,97,97,97,97,97,97,97,1715,97,97,97,97,97,97,97,97,97,0,0,0,45,45,1380,45,45,45,45,45,67,67,97,97,97,97,97,0,0,0,97,1887,97,97,0,0,97,97,97,0,97,97,97,97,97,2006,45,45,1907,45,45,45,45,45,67,67,67,67,67,67,67,67,67,1920,67,97,0,2035,97,97,97,97,97,45,45,45,45,67,67,67,1428,67,67,67,67,67,67,1435,67,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,146,45,152,45,45,165,45,175,45,180,45,45,187,190,195,45,203,254,257,262,67,270,67,67,0,24850,12564,0,0,0,281,28809,53531,97,97,97,293,97,299,97,97,312,97,322,97,327,97,97,334,337,342,97,350,97,97,0,40976,0,18,18,24,24,27,27,27,67,484,67,67,67,67,67,67,67,67,67,67,67,67,67,499,97,581,97,97,97,97,97,97,97,97,97,97,97,97,97,596,648,45,650,45,651,45,653,45,45,45,657,45,45,45,45,45,45,1954,67,67,67,1958,67,67,67,67,67,67,67,768,67,67,67,67,67,67,67,67,769,67,67,67,67,67,67,67,680,45,45,45,45,45,45,45,45,688,689,691,45,45,45,45,45,983,45,45,45,45,45,45,45,45,45,45,947,45,45,45,45,952,45,45,698,699,45,45,702,703,45,45,45,45,45,45,45,711,744,67,67,67,67,67,67,67,67,67,757,67,67,67,67,761,67,67,67,67,765,67,767,67,67,67,67,67,67,67,67,775,776,778,67,67,67,67,67,67,785,786,67,67,789,790,67,67,67,67,67,67,1442,67,67,67,67,67,67,67,67,67,97,97,97,1775,97,97,97,67,67,67,67,67,798,67,67,67,802,67,67,67,67,67,67,67,67,1465,67,67,1468,67,67,1471,67,67,810,67,67,67,67,67,67,67,67,67,821,25398,542,13112,544,57889,0,0,54074,54074,550,0,833,97,835,97,836,97,838,97,97,0,0,97,97,97,2002,97,97,97,97,97,45,45,45,45,45,1740,45,45,45,1744,45,45,45,97,842,97,97,97,97,97,97,97,97,97,855,97,97,97,97,0,1717,1718,97,97,97,97,97,1722,97,0,0,859,97,97,97,97,863,97,865,97,97,97,97,97,97,97,97,604,97,97,97,97,97,97,97,873,874,876,97,97,97,97,97,97,883,884,97,97,887,888,97,18,131427,0,0,0,0,0,0,362,225280,0,365,0,367,0,45,45,45,1531,45,45,45,45,45,45,45,45,45,45,45,1199,45,45,45,45,45,97,97,908,97,97,97,97,97,97,97,97,97,919,638,0,0,0,0,2158877,2158877,2158877,2158877,2158877,2425117,2158877,2158877,2158877,2158877,2158877,2158877,2597149,2158877,2158877,2158877,2158877,2158877,2158877,2642205,2158877,2158877,2158877,2158877,2158877,3158301,0,2375818,2379914,2158730,2158730,2420874,2158730,2449546,2158730,2158730,953,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,965,978,45,45,45,45,45,45,985,45,45,45,45,45,45,45,45,971,45,45,45,45,45,45,45,67,67,67,67,67,1027,67,1029,67,67,67,67,67,67,67,67,67,1455,67,67,67,67,67,67,67,1077,1078,67,67,25398,0,13112,0,54074,0,0,0,0,0,0,0,0,366,0,139,2158730,2158730,2158730,2404490,2412682,1113,97,97,97,97,97,97,1121,97,1123,97,97,97,97,97,97,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1540,1155,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,615,1168,97,97,1171,1172,97,97,0,921,0,1175,0,0,0,0,45,45,45,45,45,1533,45,45,45,45,45,45,45,45,45,1663,45,45,45,45,45,45,45,45,45,183,45,45,45,45,201,45,45,45,1219,45,45,45,45,45,45,45,1226,45,45,45,45,45,168,45,45,45,45,45,45,45,45,45,45,427,45,45,45,45,45,45,45,1231,45,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,67,1242,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1046,67,67,1254,67,1256,67,67,67,67,67,67,67,67,67,67,67,67,806,807,67,67,97,1336,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1111,97,97,97,97,97,1351,97,97,97,1354,97,97,97,1359,97,97,97,0,97,97,97,97,1640,97,97,97,97,97,97,97,897,97,97,97,902,97,97,97,97,97,97,97,97,1366,97,97,97,97,97,97,97,1371,97,97,97,0,97,97,97,1730,97,97,97,97,97,97,97,97,915,97,97,97,97,0,360,0,67,67,67,1440,67,67,67,67,67,67,67,67,67,67,67,67,1017,67,1019,67,67,67,67,67,1453,67,67,67,67,67,67,67,67,67,67,1459,97,97,97,1493,97,97,97,97,97,97,97,97,97,97,97,97,97,1525,97,97,97,97,97,97,1507,97,97,97,97,97,97,97,97,97,97,1514,67,67,67,67,1584,67,67,67,67,67,1590,67,67,67,67,67,67,67,783,67,67,67,788,67,67,67,67,67,67,67,67,67,1599,1601,67,67,67,1604,67,1606,1607,67,1472,0,1474,0,1476,0,97,97,97,97,97,97,1614,97,97,97,97,45,45,1850,45,45,45,45,1855,45,45,45,45,45,1222,45,45,45,45,45,45,45,45,45,1229,97,1618,97,97,97,97,97,97,97,1625,97,97,97,97,97,0,1175,0,45,45,45,45,45,45,45,45,447,45,45,45,45,45,67,67,1633,97,97,0,97,97,97,97,97,97,97,97,1643,1645,97,97,0,0,97,97,1784,97,97,97,0,0,97,97,0,97,1894,1895,97,1897,97,45,45,45,45,45,45,45,45,45,656,45,45,45,45,45,45,97,1648,97,1650,1651,97,0,45,45,45,1654,45,45,45,45,45,169,45,45,45,45,45,45,45,45,45,45,658,45,45,45,45,664,45,45,1659,45,45,45,45,45,45,45,45,45,45,45,45,45,1187,45,45,1669,45,45,45,45,45,45,45,45,45,45,45,45,45,45,67,1005,67,67,1681,67,67,67,67,67,67,67,1686,67,67,67,67,67,67,67,784,67,67,67,67,67,67,67,67,1055,67,67,67,67,1060,67,67,97,97,1713,97,0,97,97,97,97,97,97,97,97,97,0,0,0,1378,45,45,45,45,45,45,45,408,45,45,45,45,45,45,45,45,1547,45,1549,45,45,45,45,45,97,97,1780,0,97,97,97,97,97,97,0,0,97,97,0,97,97,97,45,45,2027,2028,45,45,67,67,2031,2032,67,45,45,1804,45,45,45,45,45,45,45,45,67,67,67,67,67,67,1917,67,67,67,67,67,67,67,1819,67,67,67,67,67,67,67,67,97,97,97,1708,97,97,97,97,97,45,45,1862,67,67,67,67,67,67,67,67,67,67,67,67,67,497,67,67,67,1877,97,97,97,97,97,0,0,0,97,97,97,97,0,0,97,97,97,97,97,1839,0,0,97,97,97,97,1936,0,0,97,97,97,97,97,97,1943,1944,1945,45,45,45,45,670,45,45,45,45,674,45,45,45,45,678,45,1948,45,1950,45,45,45,45,1955,1956,1957,67,67,67,1960,67,1962,67,67,67,67,1967,1968,1969,97,0,0,0,97,97,1974,97,0,1936,0,97,97,97,97,97,97,45,45,45,45,45,45,45,45,1906,0,1977,97,97,97,97,45,45,45,45,45,45,45,45,45,45,45,1746,45,45,45,45,2011,67,67,2013,67,67,67,2017,97,97,0,0,2021,97,8192,97,97,2025,45,45,45,45,45,45,67,67,67,67,67,1916,67,67,67,67,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,140,45,45,45,1180,45,45,45,45,1184,45,45,45,45,45,45,45,387,45,392,45,45,396,45,45,399,45,45,67,207,67,67,67,67,67,67,236,67,67,67,67,67,67,67,800,67,67,67,67,67,67,67,67,67,1603,67,67,67,67,67,0,97,97,287,97,97,97,97,97,97,316,97,97,97,97,97,97,0,45,45,45,45,45,45,45,1656,1657,45,376,45,45,45,45,45,388,45,45,45,45,45,45,45,45,1406,45,45,45,45,45,45,45,67,67,67,67,462,67,67,67,67,67,474,67,67,67,67,67,67,67,817,67,67,67,67,25398,542,13112,544,97,97,97,97,559,97,97,97,97,97,571,97,97,97,97,97,97,896,97,97,97,900,97,97,97,97,97,97,912,914,97,97,97,97,97,0,0,0,45,45,45,45,45,45,45,45,391,45,45,45,45,45,45,45,45,713,45,45,45,45,45,45,45,45,45,45,45,45,45,45,662,45,1140,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,636,67,67,1283,67,67,67,67,67,67,67,67,67,67,67,67,67,513,67,67,1363,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,889,97,97,97,1714,0,97,97,97,97,97,97,97,97,97,0,0,926,45,45,45,45,45,45,45,45,672,45,45,45,45,45,45,45,45,686,45,45,45,45,45,45,45,45,944,45,45,45,45,45,45,45,45,1676,45,45,45,45,45,45,67,97,97,97,1833,0,97,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,1902,45,45,45,45,45,957,45,45,45,45,961,45,963,45,45,45,67,97,2034,0,97,97,97,97,97,2040,45,45,45,2042,67,67,67,67,67,67,1574,67,67,67,67,67,1578,67,67,67,67,67,67,799,67,67,67,804,67,67,67,67,67,67,67,1298,0,0,0,1304,0,0,0,1310,132,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,45,45,1414,45,45,45,45,45,45,45,45,45,45,428,45,45,45,45,45,57889,0,0,54074,54074,550,831,97,97,97,97,97,97,97,97,97,568,97,97,97,97,578,97,45,45,968,45,45,45,45,45,45,45,45,45,45,45,45,45,1228,45,45,67,67,67,67,67,25398,1082,13112,1086,54074,1090,0,0,0,0,0,0,364,0,0,0,139,2158592,2158592,2158592,2404352,2412544,67,67,67,67,1464,67,67,67,67,67,67,67,67,67,67,67,510,67,67,67,67,97,97,97,97,1519,97,97,97,97,97,97,97,97,97,97,97,918,97,0,0,0,0,1528,45,45,45,45,45,45,45,45,45,45,45,45,45,45,976,45,1554,45,45,45,45,45,45,45,45,1562,45,45,1565,45,45,45,45,683,45,45,45,687,45,45,692,45,45,45,45,45,1953,45,67,67,67,67,67,67,67,67,67,1014,67,67,67,67,67,67,1568,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,0,67,67,67,67,67,1585,67,67,67,67,67,67,67,67,67,1594,97,97,1649,97,97,97,0,45,45,1653,45,45,45,45,45,45,383,45,45,45,45,45,45,45,45,45,986,45,45,45,45,45,45,45,45,1670,45,1672,45,45,45,45,45,45,45,45,45,45,67,736,67,67,67,67,67,741,67,67,67,1680,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1074,67,67,67,1692,67,67,67,67,67,67,67,1697,67,1699,67,67,67,67,67,67,1012,67,67,67,67,67,67,67,67,67,468,475,67,67,67,67,67,67,1769,67,67,67,67,67,67,67,97,97,97,97,97,97,97,624,97,97,97,97,97,97,634,97,97,1792,97,97,97,97,97,97,97,45,45,45,45,45,45,45,958,45,45,45,45,45,45,964,45,150,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,977,204,45,67,67,67,217,67,67,67,67,67,67,67,67,67,67,787,67,67,67,67,67,67,67,67,67,67,271,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,97,351,97,0,40976,0,18,18,24,24,27,27,27,45,45,938,45,45,45,45,45,45,45,45,45,45,45,45,45,1398,45,45,45,153,45,161,45,45,45,45,45,45,45,45,45,45,45,45,660,661,45,45,205,45,67,67,67,67,220,67,228,67,67,67,67,67,67,67,0,0,0,0,0,280,94,0,0,67,67,67,67,67,272,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,97,352,97,0,40976,0,18,18,24,24,27,27,27,45,439,45,45,45,45,45,445,45,45,45,452,45,45,67,67,212,216,67,67,67,67,67,241,67,246,67,252,67,67,486,67,67,67,67,67,67,67,494,67,67,67,67,67,67,67,1245,67,67,67,67,67,67,67,67,1013,67,67,1016,67,67,67,67,67,521,67,67,525,67,67,67,67,67,531,67,67,67,538,67,0,0,2046,97,97,97,45,45,67,67,0,0,97,97,45,45,45,1192,45,45,45,45,45,45,45,45,45,45,45,45,1418,45,45,1421,97,97,583,97,97,97,97,97,97,97,591,97,97,97,97,97,97,913,97,97,97,97,97,97,0,0,0,45,45,45,45,45,45,45,1384,97,618,97,97,622,97,97,97,97,97,628,97,97,97,635,97,18,131427,0,0,0,639,0,132,362,0,0,365,29315,367,0,921,29315,0,0,0,0,45,45,45,45,932,45,45,45,45,45,1544,45,45,45,45,45,1550,45,45,45,45,45,1194,45,1196,45,45,45,45,45,45,45,45,999,45,45,45,45,45,67,67,45,45,667,45,45,45,45,45,45,45,45,45,45,45,45,45,1408,45,45,45,696,45,45,45,701,45,45,45,45,45,45,45,45,710,45,45,45,1220,45,45,45,45,45,45,45,45,45,45,45,45,194,45,45,45,729,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,797,67,67,67,67,67,67,805,67,67,67,67,67,67,67,1587,67,1589,67,67,67,67,67,67,67,67,1763,67,67,67,67,67,67,67,0,0,0,0,0,0,2162968,0,0,67,67,67,67,67,814,816,67,67,67,67,67,25398,542,13112,544,67,67,1008,67,67,67,67,67,67,67,67,67,67,67,1020,67,0,97,45,67,0,97,45,67,0,97,45,67,97,0,0,97,97,97,97,97,45,45,45,45,67,67,67,67,1429,67,1430,67,67,67,67,67,1062,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,518,1076,67,67,67,67,25398,0,13112,0,54074,0,0,0,0,0,0,0,0,28809,0,139,45,45,45,45,45,97,97,97,97,1102,97,97,97,97,97,97,97,97,97,97,97,1124,97,1126,97,97,1114,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1112,97,97,1156,97,97,97,97,97,97,97,97,97,97,97,97,97,594,97,97,97,97,1170,97,97,97,97,0,921,0,0,0,0,0,0,45,45,45,45,1532,45,45,45,45,1536,45,45,45,45,45,172,45,45,45,45,45,45,45,45,45,45,706,45,45,709,45,45,1177,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1202,45,1204,45,45,45,45,45,45,45,45,45,45,45,45,1215,45,45,45,1232,45,45,45,45,45,45,45,67,1237,67,67,67,67,67,67,1053,1054,67,67,67,67,67,67,1061,67,67,1282,67,67,67,67,67,67,67,67,67,1289,67,67,67,1292,97,97,97,97,1339,97,97,97,97,97,97,1344,97,97,97,97,45,1849,45,1851,45,45,45,45,45,45,45,45,721,45,45,45,45,45,726,45,1385,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1188,45,45,1401,1402,45,45,45,45,1405,45,45,45,45,45,45,45,45,1752,45,45,45,45,45,67,67,1410,45,45,45,1413,45,1415,45,45,45,45,45,45,1419,45,45,45,45,1806,45,45,45,45,45,45,67,67,67,67,67,67,67,97,97,2019,0,97,67,67,67,1452,67,67,67,67,67,67,67,67,1457,67,67,67,67,67,67,1259,67,67,67,67,67,67,1264,67,67,1460,67,1462,67,67,67,67,67,67,1466,67,67,67,67,67,67,67,67,1588,67,67,67,67,67,67,67,0,1300,0,0,0,1306,0,0,0,97,97,97,1506,97,97,97,97,97,97,97,97,1512,97,97,97,0,1728,97,97,97,97,97,97,97,97,97,97,97,901,97,97,97,97,1515,97,1517,97,97,97,97,97,97,1521,97,97,97,97,97,97,0,45,1652,45,45,45,1655,45,45,45,45,45,1542,45,45,45,45,45,45,45,45,45,45,45,45,45,1552,1553,45,45,45,1556,45,45,45,45,45,45,45,45,45,45,45,45,45,693,45,45,45,67,67,67,67,1572,67,67,67,67,1576,67,67,67,67,67,67,67,67,1602,67,67,1605,67,67,67,0,67,1582,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1580,67,67,1596,67,67,67,67,67,67,67,67,67,67,67,67,67,0,542,0,544,67,67,67,67,1759,67,67,67,67,67,67,67,67,67,67,67,533,67,67,67,67,67,67,67,1770,67,67,67,67,67,97,97,97,97,97,97,1777,97,97,97,1793,97,97,97,97,97,45,45,45,45,45,45,45,998,45,45,1001,1002,45,45,67,67,45,1861,45,67,67,67,67,67,67,67,67,1871,67,1873,1874,67,0,97,45,67,0,97,45,67,16384,97,45,67,97,0,0,0,1473,0,1082,0,0,0,1475,0,1086,0,0,0,1477,1876,67,97,97,97,97,97,1883,0,1885,97,97,97,1889,0,0,0,286,0,0,0,286,0,2367488,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,24,24,126,126,126,2053,0,2055,45,67,0,97,45,67,0,97,45,67,97,0,0,97,97,97,2039,97,45,45,45,45,67,67,67,67,67,226,67,67,67,67,67,67,67,67,1246,67,67,1249,1250,67,67,67,132,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,141,45,45,45,1403,45,45,45,45,45,45,45,45,45,45,45,45,1186,45,45,1189,45,45,155,45,45,45,45,45,45,45,45,45,191,45,45,45,45,700,45,45,45,45,45,45,45,45,45,45,45,1753,45,45,45,67,67,45,45,67,208,67,67,67,222,67,67,67,67,67,67,67,67,67,1764,67,67,67,67,67,67,67,258,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,288,97,97,97,302,97,97,97,97,97,97,97,97,97,627,97,97,97,97,97,97,338,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,0,0,0,362,0,365,28809,367,139,45,370,45,45,45,45,716,45,45,45,45,45,722,45,45,45,45,45,45,1912,67,67,67,67,67,67,67,67,67,819,67,67,25398,542,13112,544,45,403,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1409,45,67,67,67,67,489,67,67,67,67,67,67,67,67,67,67,67,771,67,67,67,67,520,67,67,67,67,67,67,67,67,67,67,67,534,67,67,67,67,67,67,1271,67,67,67,1274,67,67,67,1279,67,67,24850,24850,12564,12564,0,57889,0,0,0,53531,53531,367,286,97,553,97,97,97,97,586,97,97,97,97,97,97,97,97,97,97,97,1138,97,97,97,97,617,97,97,97,97,97,97,97,97,97,97,97,631,97,97,97,0,1834,97,97,97,97,97,0,0,0,97,97,97,97,97,353,0,40976,0,18,18,24,24,27,27,27,45,45,668,45,45,45,45,45,45,45,45,45,45,45,45,45,724,45,45,45,45,45,682,45,45,45,45,45,45,45,45,45,45,45,45,45,949,45,45,45,67,67,747,748,67,67,67,67,755,67,67,67,67,67,67,67,0,0,0,1302,0,0,0,1308,0,67,794,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1701,67,97,97,97,845,846,97,97,97,97,853,97,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,97,97,892,97,97,97,97,97,97,97,97,97,97,97,97,97,610,97,97,45,992,45,45,45,45,45,45,45,45,45,45,45,45,67,67,67,1239,67,67,67,1063,67,67,67,67,67,1068,67,67,67,67,67,67,67,0,0,1301,0,0,0,1307,0,0,97,1141,97,97,97,97,97,97,97,97,97,97,97,1152,97,97,0,0,97,97,2001,0,97,2003,97,97,97,45,45,45,1739,45,45,45,1742,45,45,45,45,45,97,97,97,97,1157,97,97,97,97,97,1162,97,97,97,97,97,97,1145,97,97,97,97,97,1151,97,97,97,1253,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,539,45,1423,45,45,67,67,67,67,67,67,67,1431,67,67,67,67,67,67,67,1695,67,67,67,67,67,1700,67,1702,67,67,1439,67,67,67,67,67,67,67,67,67,67,67,67,67,514,67,67,97,97,1492,97,97,97,97,97,97,97,97,97,97,97,97,97,611,97,97,1703,67,67,67,67,67,67,97,97,97,97,97,97,97,97,97,852,97,97,97,97,97,97,45,1949,45,1951,45,45,45,67,67,67,67,67,67,67,1961,67,0,97,45,67,0,97,2060,2061,0,2062,45,67,97,0,0,2036,97,97,97,97,45,45,45,45,67,67,67,67,67,223,67,67,237,67,67,67,67,67,67,67,1272,67,67,67,67,67,67,67,67,507,67,67,67,67,67,67,67,1963,67,67,67,97,97,97,97,0,1972,0,97,97,97,1975,0,921,29315,0,0,0,0,45,45,45,931,45,45,45,45,45,407,45,45,45,45,45,45,45,45,45,417,45,45,1989,67,67,67,67,67,67,67,67,67,67,67,1996,97,18,131427,0,0,360,0,0,0,362,0,0,365,29315,367,0,921,29315,0,0,0,0,45,45,930,45,45,45,45,45,45,444,45,45,45,45,45,45,45,67,67,97,97,1998,0,97,97,97,0,97,97,97,97,97,45,45,45,45,45,45,1985,45,1986,45,45,45,156,45,45,170,45,45,45,45,45,45,45,45,45,45,675,45,45,45,45,679,131427,0,358,0,0,362,0,365,28809,367,139,45,45,45,45,45,381,45,45,45,45,45,45,45,45,45,400,45,45,419,45,45,45,45,45,45,45,45,45,45,45,45,436,67,67,67,67,67,505,67,67,67,67,67,67,67,67,67,67,820,67,25398,542,13112,544,67,67,522,67,67,67,67,67,529,67,67,67,67,67,67,67,0,1299,0,0,0,1305,0,0,0,97,97,619,97,97,97,97,97,626,97,97,97,97,97,97,97,1105,97,97,97,97,1109,97,97,97,67,67,67,67,749,67,67,67,67,67,67,67,67,67,760,67,0,97,45,67,2058,97,45,67,0,97,45,67,97,0,0,97,97,97,97,97,45,45,45,2041,67,67,67,67,67,780,67,67,67,67,67,67,67,67,67,67,67,67,67,516,67,67,97,97,97,878,97,97,97,97,97,97,97,97,97,97,97,97,97,1629,97,0,45,979,45,45,45,45,984,45,45,45,45,45,45,45,45,45,1198,45,45,45,45,45,45,67,1023,67,67,67,67,1028,67,67,67,67,67,67,67,67,67,470,67,67,67,67,67,67,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,1094,0,0,0,1092,1315,0,0,0,0,97,97,97,97,97,97,97,97,97,1486,97,1489,97,97,97,1117,97,97,97,97,1122,97,97,97,97,97,97,97,1146,97,97,97,97,97,97,97,97,881,97,97,97,886,97,97,97,1311,0,0,0,0,0,0,0,0,97,97,97,97,97,97,97,1615,97,97,97,97,97,1619,97,97,97,97,97,97,97,97,97,97,97,97,1631,97,97,1847,97,45,45,45,45,1852,45,45,45,45,45,45,45,1235,45,45,45,67,67,67,67,67,1868,67,67,67,1872,67,67,67,67,67,97,97,97,97,1882,0,0,0,97,97,97,97,0,1891,67,67,67,67,67,97,97,97,97,97,1929,0,0,97,97,97,97,97,97,45,1900,45,1901,45,45,45,1905,45,67,2054,97,45,67,0,97,45,67,0,97,45,67,97,0,0,97,2037,2038,97,97,45,45,45,45,67,67,67,67,1867,67,67,67,67,67,67,67,67,67,1774,97,97,97,97,97,97,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,142,45,45,45,1412,45,45,45,45,45,45,45,45,45,45,45,45,432,45,45,45,45,45,157,45,45,171,45,45,45,182,45,45,45,45,200,45,45,45,1543,45,45,45,45,45,45,45,45,1551,45,45,45,45,1181,45,45,45,45,45,45,45,45,45,45,45,1211,45,45,45,1214,45,45,45,67,209,67,67,67,224,67,67,238,67,67,67,249,67,0,97,2056,2057,0,2059,45,67,0,97,45,67,97,0,0,1937,97,97,97,97,97,97,45,45,45,45,45,45,1741,45,45,45,45,45,45,67,67,67,267,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,289,97,97,97,304,97,97,318,97,97,97,329,97,97,0,0,97,1783,97,97,97,97,0,0,97,97,0,97,97,97,45,2026,45,45,45,45,67,2030,67,67,67,67,67,67,1041,67,67,67,67,67,67,67,67,67,1044,67,67,67,67,67,67,97,97,347,97,97,97,0,40976,0,18,18,24,24,27,27,27,45,666,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1420,45,57889,0,0,54074,54074,550,0,97,97,97,97,97,97,97,97,840,67,1007,67,67,67,67,67,67,67,67,67,67,67,67,67,67,759,67,67,67,67,67,67,67,1052,67,67,67,67,67,67,67,67,67,67,1031,67,67,67,67,67,97,97,97,1101,97,97,97,97,97,97,97,97,97,97,97,97,592,97,97,97,1190,45,45,45,45,45,1195,45,1197,45,45,45,45,1201,45,45,45,45,1952,45,45,67,67,67,67,67,67,67,67,67,67,67,67,250,67,67,67,1255,67,1257,67,67,67,67,1261,67,67,67,67,67,67,67,67,1685,67,67,67,67,67,67,67,0,24851,12565,0,0,0,0,28809,53532,67,67,1267,67,67,67,67,67,67,1273,67,67,67,67,67,67,67,67,1696,67,67,67,67,67,67,67,0,0,0,0,0,0,2162688,0,0,1281,67,67,67,67,1285,67,67,67,67,67,67,67,67,67,67,1070,67,67,67,67,67,1335,97,1337,97,97,97,97,1341,97,97,97,97,97,97,97,97,882,97,97,97,97,97,97,97,1347,97,97,97,97,97,97,1353,97,97,97,97,97,97,1361,97,18,131427,0,638,0,0,0,0,362,0,0,365,29315,367,0,544,0,550,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2473984,2158592,2158592,2158592,2990080,2158592,2158592,2207744,2207744,2482176,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,0,0,0,2162688,0,53530,97,97,97,1365,97,97,97,97,97,97,97,97,97,97,97,97,608,97,97,97,45,45,1424,45,1425,67,67,67,67,67,67,67,67,67,67,67,1058,67,67,67,67,45,1555,45,45,1557,45,45,45,45,45,45,45,45,45,45,45,707,45,45,45,45,67,67,1570,67,67,67,67,67,67,67,67,67,67,67,67,67,773,67,67,1595,67,67,1597,67,67,67,67,67,67,67,67,67,67,67,0,0,0,0,0,0,0,0,0,0,139,2158592,2158592,2158592,2404352,2412544,97,97,97,1636,97,97,97,1639,97,97,1641,97,97,97,97,97,97,1173,0,921,0,0,0,0,0,0,45,67,67,67,1693,67,67,67,67,67,67,67,1698,67,67,67,67,67,67,67,1773,67,97,97,97,97,97,97,97,625,97,97,97,97,97,97,97,97,850,97,97,97,97,97,97,97,97,880,97,97,97,97,97,97,97,97,1106,97,97,97,97,97,97,97,1860,45,45,67,67,1865,67,67,67,67,1870,67,67,67,67,1875,67,67,97,97,1880,97,97,0,0,0,97,97,1888,97,0,0,0,1938,97,97,97,97,97,45,45,45,45,45,45,1854,45,45,45,45,45,45,45,1909,45,45,1911,67,67,67,67,67,67,67,67,67,67,1248,67,67,67,67,67,67,1922,67,67,1924,97,97,97,97,97,0,0,0,97,97,97,97,97,1898,45,45,45,45,45,45,1904,45,45,67,67,67,67,97,97,97,97,0,0,16384,97,97,97,97,0,97,97,97,97,97,97,97,97,97,0,1724,2008,2009,45,45,67,67,67,2014,2015,67,67,97,97,0,0,97,97,97,0,97,97,97,97,97,45,45,45,45,45,45,45,45,45,45,45,45,45,2022,0,2023,97,97,45,45,45,45,45,45,67,67,67,67,67,67,1869,67,67,67,67,67,67,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,147,151,154,45,162,45,45,176,178,181,45,45,45,192,196,45,45,45,45,2012,67,67,67,67,67,67,2018,97,0,0,97,1978,97,97,97,1982,45,45,45,45,45,45,45,45,45,972,973,45,45,45,45,45,67,259,263,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,294,298,301,97,309,97,97,323,325,328,97,97,97,97,97,560,97,97,97,569,97,97,97,97,97,97,306,97,97,97,97,97,97,97,97,97,1624,97,97,97,97,97,97,97,0,921,0,1175,0,0,0,0,45,339,343,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,67,67,503,67,67,67,67,67,67,67,67,67,512,67,67,519,97,97,600,97,97,97,97,97,97,97,97,97,609,97,97,616,45,649,45,45,45,45,45,654,45,45,45,45,45,45,45,45,1393,45,45,45,45,45,45,45,45,1209,45,45,45,45,45,45,45,67,763,67,67,67,67,67,67,67,67,770,67,67,67,774,67,0,2045,97,97,97,97,45,45,67,67,0,0,97,97,45,45,45,994,45,45,45,45,45,45,45,45,45,45,67,67,213,67,219,67,67,232,67,242,67,247,67,67,67,779,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1018,67,67,67,67,811,67,67,67,67,67,67,67,67,67,25398,542,13112,544,57889,0,0,54074,54074,550,0,97,834,97,97,97,97,97,839,97,18,131427,0,638,0,0,0,0,362,0,0,365,29315,367,645,97,97,861,97,97,97,97,97,97,97,97,868,97,97,97,872,97,97,877,97,97,97,97,97,97,97,97,97,97,97,97,97,613,97,97,97,97,97,909,97,97,97,97,97,97,97,97,97,0,0,0,18,18,24,24,27,27,27,1036,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1047,67,67,67,1050,67,67,67,67,67,67,67,67,67,67,67,67,1033,67,67,67,97,97,1130,97,97,97,97,97,97,97,97,97,97,97,97,97,638,0,0,67,67,67,1295,67,67,67,0,0,0,0,0,0,0,0,0,97,1317,97,97,97,97,97,97,1375,97,97,97,0,0,0,45,1379,45,45,45,45,45,45,422,45,45,45,429,431,45,45,45,45,0,1090,0,0,97,1479,97,97,97,97,97,97,97,97,97,97,1357,97,97,97,97,97,97,97,97,97,1716,97,97,97,97,97,97,97,97,97,1723,0,921,29315,0,0,0,0,45,929,45,45,45,45,45,45,45,1392,45,45,45,45,45,45,45,45,45,960,45,45,45,45,45,45,97,97,97,1738,45,45,45,45,45,45,45,1743,45,45,45,45,166,45,45,45,45,184,186,45,45,197,45,45,97,1779,0,0,97,97,97,97,97,97,0,0,97,97,0,97,18,131427,0,638,0,0,0,0,362,0,640,365,29315,367,0,921,29315,0,0,0,0,45,45,45,45,45,45,45,45,45,45,1537,45,45,45,45,45,1803,45,45,45,45,45,1809,45,45,45,67,67,67,1814,67,67,67,67,67,67,1821,67,67,67,67,67,67,97,97,97,97,97,0,0,0,97,97,97,97,0,0,67,67,67,1818,67,67,67,67,67,1824,67,67,67,97,97,97,97,97,0,0,0,97,97,97,97,1890,0,1829,97,97,0,0,97,97,1836,97,97,0,0,0,97,97,97,97,1981,45,45,45,45,45,45,45,45,45,1987,1845,97,97,97,45,45,45,45,45,1853,45,45,45,1857,45,45,45,67,1864,67,1866,67,67,67,67,67,67,67,67,67,97,97,97,97,97,97,97,1710,1711,67,67,97,97,97,97,97,0,0,0,1886,97,97,97,0,0,97,97,97,97,1838,0,0,0,97,1843,97,0,1893,97,97,97,97,97,45,45,45,45,45,45,45,45,45,45,1745,45,45,67,67,67,67,67,97,97,97,97,97,0,0,1931,97,97,97,97,97,588,97,97,97,97,97,97,97,97,97,97,629,97,97,97,97,97,67,2044,0,97,97,97,97,45,45,67,67,0,0,97,97,45,45,45,1660,45,45,45,45,45,45,45,45,45,45,45,45,453,45,455,67,67,67,67,268,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,348,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,359,0,0,362,0,365,28809,367,139,45,45,45,45,45,421,45,45,45,45,45,45,45,434,45,45,695,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1667,45,0,921,29315,0,925,0,0,45,45,45,45,45,45,45,45,45,1811,45,67,67,67,67,67,67,1037,67,1039,67,67,67,67,67,67,67,67,67,67,67,67,1277,67,67,67,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,1095,0,0,0,1096,97,97,97,97,97,97,97,97,97,97,97,97,869,97,97,97,97,97,97,1131,97,1133,97,97,97,97,97,97,97,97,97,97,1370,97,97,97,97,97,1312,0,0,0,0,1096,0,0,0,97,97,97,97,97,97,97,1327,97,97,97,97,97,1332,97,97,97,1830,97,0,0,97,97,97,97,97,0,0,0,97,97,97,1896,97,97,45,45,45,45,45,45,45,45,45,1548,45,45,45,45,45,45,133,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,45,380,45,45,45,45,45,45,45,45,45,45,401,45,45,158,45,45,45,45,45,45,45,45,45,45,45,45,45,1200,45,45,45,45,206,67,67,67,67,67,225,67,67,67,67,67,67,67,67,754,67,67,67,67,67,67,67,57889,0,0,54074,54074,550,832,97,97,97,97,97,97,97,97,97,1342,97,97,97,97,97,97,67,67,67,67,67,25398,1083,13112,1087,54074,1091,0,0,0,0,0,0,1316,0,831,97,97,97,97,97,97,97,1174,921,0,1175,0,0,0,0,45,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,148,67,67,264,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,295,97,97,97,97,313,97,97,97,97,331,333,97,18,131427,356,638,0,0,0,0,362,0,0,365,0,367,0,45,45,1530,45,45,45,45,45,45,45,45,45,45,45,45,988,45,45,45,97,344,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,402,404,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1756,67,438,45,45,45,45,45,45,45,45,449,450,45,45,45,67,67,214,218,221,67,229,67,67,243,245,248,67,67,67,67,67,488,490,67,67,67,67,67,67,67,67,67,67,67,1071,67,1073,67,67,67,67,67,524,67,67,67,67,67,67,67,67,535,536,67,67,67,67,67,67,1683,1684,67,67,67,67,1688,1689,67,67,67,67,67,67,1586,67,67,67,67,67,67,67,67,67,469,67,67,67,67,67,67,97,97,97,585,587,97,97,97,97,97,97,97,97,97,97,97,1163,97,97,97,97,97,97,97,621,97,97,97,97,97,97,97,97,632,633,97,97,0,0,1782,97,97,97,97,97,0,0,97,97,0,97,712,45,45,45,717,45,45,45,45,45,45,45,45,725,45,45,45,163,167,173,177,45,45,45,45,45,193,45,45,45,45,982,45,45,45,45,45,45,987,45,45,45,45,45,1558,45,1560,45,45,45,45,45,45,45,45,704,705,45,45,45,45,45,45,45,45,731,45,45,45,67,67,67,67,67,739,67,67,67,67,67,67,273,0,24850,12564,0,0,0,0,28809,53531,67,67,67,764,67,67,67,67,67,67,67,67,67,67,67,67,1290,67,67,67,67,67,67,812,67,67,67,67,818,67,67,67,25398,542,13112,544,57889,0,0,54074,54074,550,0,97,97,97,97,97,837,97,97,97,97,97,602,97,97,97,97,97,97,97,97,97,97,1137,97,97,97,97,97,97,97,97,97,862,97,97,97,97,97,97,97,97,97,97,97,1627,97,97,97,0,97,97,97,97,910,97,97,97,97,916,97,97,97,0,0,0,97,97,1940,97,97,1942,45,45,45,45,45,45,385,45,45,45,45,395,45,45,45,45,966,45,969,45,45,45,45,45,45,45,45,45,45,975,45,45,45,406,45,45,45,45,45,45,45,45,45,45,45,45,974,45,45,45,67,67,67,67,1010,67,67,67,67,67,67,67,67,67,67,67,1262,67,67,67,67,67,67,67,67,67,1040,67,1042,67,1045,67,67,67,67,67,67,67,97,1706,97,97,97,1709,97,97,97,67,67,67,67,1051,67,67,67,67,67,1057,67,67,67,67,67,67,67,1443,67,67,1446,67,67,67,67,67,67,67,1297,0,0,0,1303,0,0,0,1309,67,67,67,67,1079,25398,0,13112,0,54074,0,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2207744,2207744,2207744,2207744,2207744,2572288,2207744,2207744,2207744,1098,97,97,97,97,97,1104,97,97,97,97,97,97,97,97,97,1356,97,97,97,97,97,97,1128,97,97,97,97,97,97,1134,97,1136,97,1139,97,97,97,97,97,97,1622,97,97,97,97,97,97,97,97,0,921,0,0,0,1176,0,646,45,67,67,67,1268,67,67,67,67,67,67,67,67,67,67,67,67,1469,67,67,67,97,1348,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1127,97,67,1569,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1448,1449,67,1816,67,67,67,67,67,67,67,67,67,1825,67,67,1827,97,97,0,1781,97,97,97,97,97,97,0,0,97,97,0,97,97,97,1831,0,0,97,97,97,97,97,0,0,0,97,97,97,1980,97,45,45,45,45,45,45,45,45,45,45,1395,45,45,45,45,45,97,1846,97,97,45,45,45,45,45,45,45,45,45,45,45,45,1212,45,45,45,45,45,45,2010,45,67,67,67,67,67,2016,67,97,97,0,0,97,97,97,0,97,97,97,97,97,45,45,2007,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,143,45,45,45,1671,45,45,45,45,45,45,45,45,45,45,45,67,1813,67,67,1815,45,45,67,210,67,67,67,67,67,67,239,67,67,67,67,67,67,67,1454,67,67,67,67,67,67,67,67,67,1445,67,67,67,67,67,67,97,97,290,97,97,97,97,97,97,319,97,97,97,97,97,97,303,97,97,317,97,97,97,97,97,97,305,97,97,97,97,97,97,97,97,97,899,97,97,97,97,97,97,375,45,45,45,379,45,45,390,45,45,394,45,45,45,45,45,443,45,45,45,45,45,45,45,45,67,67,67,67,67,461,67,67,67,465,67,67,476,67,67,480,67,67,67,67,67,67,1694,67,67,67,67,67,67,67,67,67,1288,67,67,67,67,67,67,500,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1075,97,97,97,558,97,97,97,562,97,97,573,97,97,577,97,97,97,97,97,895,97,97,97,97,97,97,903,97,97,97,0,97,97,1638,97,97,97,97,97,97,97,97,1646,597,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1334,45,681,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1396,45,45,1399,45,45,730,45,45,45,45,67,67,67,67,67,67,67,67,67,67,1434,67,67,67,67,67,67,750,67,67,67,67,67,67,67,67,67,67,1456,67,67,67,67,67,45,45,993,45,45,45,45,45,45,45,45,45,45,45,67,67,1238,67,67,1006,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1280,1048,1049,67,67,67,67,67,67,67,67,67,67,1059,67,67,67,67,67,67,1286,67,67,67,67,67,67,67,1291,67,97,97,1100,97,97,97,97,97,97,97,97,97,97,97,97,97,638,0,920,97,97,1142,1143,97,97,97,97,97,97,97,97,97,97,1153,97,97,97,97,97,1158,97,97,97,1161,97,97,97,97,1166,97,97,97,97,97,1325,97,97,97,97,97,97,97,97,97,97,1328,97,97,97,97,97,97,97,45,1218,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1678,45,45,45,67,67,67,67,67,1269,67,67,67,67,67,67,67,67,1278,67,67,67,67,67,67,1761,67,67,67,67,67,67,67,67,67,530,67,67,67,67,67,67,97,97,1349,97,97,97,97,97,97,97,97,1358,97,97,97,97,97,97,1623,97,97,97,97,97,97,97,97,0,921,0,0,926,0,0,0,45,45,1411,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1754,45,45,67,67,1301,0,1307,0,1313,97,97,97,97,97,97,97,97,97,97,97,21054,97,97,97,97,67,1757,67,67,67,1760,67,67,67,67,67,67,67,67,67,67,1467,67,67,67,67,67,1778,97,0,0,97,97,97,97,97,97,0,0,97,97,0,97,97,97,97,97,1352,97,97,97,97,97,97,97,97,97,97,1511,97,97,97,97,97,67,67,67,67,67,1820,67,1822,67,67,67,67,67,97,97,97,97,97,0,0,0,97,1933,97,1892,97,97,97,97,97,97,1899,45,45,45,45,45,45,45,45,1664,45,45,45,45,45,45,45,45,1546,45,45,45,45,45,45,45,45,1208,45,45,45,45,45,45,45,45,1224,45,45,45,45,45,45,45,45,673,45,45,45,45,45,45,45,67,67,67,67,67,1925,97,97,97,97,0,0,0,97,97,97,97,97,623,97,97,97,97,97,97,97,97,97,97,307,97,97,97,97,97,97,97,97,97,1796,97,45,45,45,45,45,45,45,970,45,45,45,45,45,45,45,45,1417,45,45,45,45,45,45,45,67,1964,67,67,97,97,97,97,0,0,0,97,97,97,97,0,97,97,97,97,97,97,1721,97,97,0,0,1997,97,0,0,2e3,97,97,0,97,97,97,97,97,45,45,45,45,733,45,67,67,67,67,67,67,67,67,67,67,803,67,67,67,67,67,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,144,45,45,45,1805,45,1807,45,45,45,45,45,67,67,67,67,67,67,231,67,67,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,45,45,67,211,67,67,67,67,230,234,240,244,67,67,67,67,67,67,464,67,67,67,67,67,67,479,67,67,67,260,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,291,97,97,97,97,310,314,320,324,97,97,97,97,97,97,1367,97,97,97,97,97,97,97,97,97,1355,97,97,97,97,97,97,1362,340,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,0,360,0,362,0,365,28809,367,139,369,45,45,45,374,67,67,460,67,67,67,67,466,67,67,67,67,67,67,67,67,801,67,67,67,67,67,67,67,67,67,487,67,67,67,67,67,67,67,67,67,67,498,67,67,67,67,67,67,1772,67,67,97,97,97,97,97,97,97,0,921,922,1175,0,0,0,0,45,67,502,67,67,67,67,67,67,67,508,67,67,67,515,517,67,67,67,67,67,97,97,97,97,97,0,0,0,1932,97,97,0,1999,97,97,97,0,97,97,2004,2005,97,45,45,45,45,1193,45,45,45,45,45,45,45,45,45,45,45,676,45,45,45,45,67,24850,24850,12564,12564,0,57889,0,0,0,53531,53531,367,286,552,97,97,97,97,97,1377,0,0,45,45,45,45,45,45,45,45,655,45,45,45,45,45,45,45,97,97,557,97,97,97,97,563,97,97,97,97,97,97,97,97,1135,97,97,97,97,97,97,97,97,97,584,97,97,97,97,97,97,97,97,97,97,595,97,97,97,97,97,911,97,97,97,97,97,97,97,638,0,0,0,0,1315,0,0,0,0,97,97,97,1319,97,97,97,0,97,97,97,97,97,97,1733,97,97,97,97,97,97,1340,97,97,97,1343,97,97,1345,97,1346,97,599,97,97,97,97,97,97,97,605,97,97,97,612,614,97,97,97,97,97,1794,97,97,97,45,45,45,45,45,45,45,1207,45,45,45,45,45,45,1213,45,45,745,67,67,67,67,751,67,67,67,67,67,67,67,67,67,67,1577,67,67,67,67,67,762,67,67,67,67,766,67,67,67,67,67,67,67,67,67,67,1765,67,67,67,67,67,777,67,67,781,67,67,67,67,67,67,67,67,67,67,67,67,1592,1593,67,67,97,843,97,97,97,97,849,97,97,97,97,97,97,97,97,97,1510,97,97,97,97,97,97,97,860,97,97,97,97,864,97,97,97,97,97,97,97,97,97,1797,45,45,45,45,1801,45,97,875,97,97,879,97,97,97,97,97,97,97,97,97,97,97,1522,97,97,97,97,97,991,45,45,45,45,996,45,45,45,45,45,45,45,45,67,67,215,67,67,67,67,233,67,67,67,67,251,253,1022,67,67,67,1026,67,67,67,67,67,67,67,67,67,67,1035,67,67,1038,67,67,67,67,67,67,67,67,67,67,67,67,67,1458,67,67,67,67,67,1064,67,67,67,1067,67,67,67,67,1072,67,67,67,67,67,67,1296,0,0,0,0,0,0,0,0,0,2367488,2158592,2158592,2158592,2158592,2158592,2158592,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,0,1096,0,921,29315,0,0,0,0,928,45,45,45,45,45,934,45,45,45,164,45,45,45,45,45,45,45,45,45,198,45,45,45,378,45,45,45,45,45,45,393,45,45,45,398,45,97,97,1116,97,97,97,1120,97,97,97,97,97,97,97,97,97,1147,1148,97,97,97,97,97,97,97,1129,97,97,1132,97,97,97,97,97,97,97,97,97,97,97,1626,97,97,97,97,0,45,1178,45,45,45,45,45,45,45,45,45,1185,45,45,45,45,441,45,45,45,45,45,45,451,45,45,67,67,67,67,67,227,67,67,67,67,67,67,67,67,1260,67,67,67,1263,67,67,1265,1203,45,45,1205,45,1206,45,45,45,45,45,45,45,45,45,1216,67,1266,67,67,67,67,67,67,67,67,67,1276,67,67,67,67,67,67,492,67,67,67,67,67,67,67,67,67,471,67,67,67,67,481,67,45,1386,45,1389,45,45,45,45,1394,45,45,45,1397,45,45,45,45,995,45,997,45,45,45,45,45,45,45,67,67,67,67,1915,67,67,67,67,67,1422,45,45,45,67,67,67,67,67,67,67,67,67,1433,67,1436,67,67,67,67,1441,67,67,67,1444,67,67,67,67,67,67,67,0,24850,12564,0,0,0,281,28809,53531,97,97,97,97,1494,97,97,97,1497,97,97,97,97,97,97,97,1368,97,97,97,97,97,97,97,97,851,97,97,97,97,97,97,97,67,67,67,1571,67,67,67,67,67,67,67,67,67,67,67,67,25398,542,13112,544,67,67,1583,67,67,67,67,67,67,67,67,1591,67,67,67,67,67,67,752,67,67,67,67,67,67,67,67,67,1056,67,67,67,67,67,67,97,1634,97,0,97,97,97,97,97,97,97,97,97,97,97,97,1125,97,97,97,1647,97,97,97,97,97,0,45,45,45,45,45,45,45,45,45,1183,45,45,45,45,45,45,45,45,45,409,45,45,45,45,45,45,1658,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1668,1712,97,97,97,0,97,97,97,97,97,97,97,97,97,0,0,1835,97,97,97,97,0,0,0,97,97,1844,97,97,1726,0,97,97,97,97,97,1732,97,1734,97,97,97,97,97,300,97,308,97,97,97,97,97,97,97,97,866,97,97,97,97,97,97,97,67,67,67,1758,67,67,67,1762,67,67,67,67,67,67,67,67,1043,67,67,67,67,67,67,67,67,67,67,67,67,1771,67,67,67,97,97,97,97,97,1776,97,97,97,97,297,97,97,97,97,97,97,97,97,97,97,97,1108,97,97,97,97,67,67,67,1966,97,97,97,1970,0,0,0,97,97,97,97,0,97,97,97,1720,97,97,97,97,97,0,0,97,97,97,1837,97,0,1840,1841,97,97,97,1988,45,67,67,67,67,67,67,67,67,67,1994,1995,67,97,97,97,97,97,1103,97,97,97,97,97,97,97,97,97,97,917,97,97,0,0,0,67,67,265,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,345,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,0,0,361,362,0,365,28809,367,139,45,45,45,45,45,671,45,45,45,45,45,45,45,45,45,45,411,45,45,414,45,45,45,45,377,45,45,45,386,45,45,45,45,45,45,45,45,45,1223,45,45,45,45,45,45,45,45,45,426,45,45,433,45,45,45,67,67,67,67,67,463,67,67,67,472,67,67,67,67,67,67,67,527,67,67,67,67,67,67,537,67,540,24850,24850,12564,12564,0,57889,0,0,0,53531,53531,367,286,97,97,97,97,97,1119,97,97,97,97,97,97,97,97,97,97,1509,97,97,97,97,97,97,97,97,564,97,97,97,97,97,97,97,637,18,131427,0,0,0,0,0,0,362,0,0,365,29315,367,0,921,29315,0,0,0,927,45,45,45,45,45,45,45,45,45,1234,45,45,45,45,67,67,67,67,1240,45,697,45,45,45,45,45,45,45,45,45,45,708,45,45,45,45,1221,45,45,45,45,1225,45,45,45,45,45,45,384,45,45,45,45,45,45,45,45,45,1210,45,45,45,45,45,45,67,67,795,67,67,67,67,67,67,67,67,67,67,67,67,67,1470,67,67,67,67,67,67,67,815,67,67,67,67,67,67,25398,542,13112,544,97,97,97,893,97,97,97,97,97,97,97,97,97,97,97,97,1164,97,97,97,67,67,67,1025,67,67,67,67,67,67,67,67,67,67,67,67,1687,67,67,67,67,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,0,0,1097,1241,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1450,45,45,1388,45,1390,45,45,45,45,45,45,45,45,45,45,45,1236,67,67,67,67,67,1437,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1472,1490,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1503,67,67,67,67,67,97,97,97,97,97,0,1930,0,97,97,97,97,97,847,97,97,97,97,97,97,97,97,97,858,67,67,1965,67,97,97,97,97,0,0,0,97,97,97,97,0,97,97,1719,97,97,97,97,97,97,0,0,0,45,45,45,45,1382,45,1383,45,45,45,159,45,45,45,45,45,45,45,45,45,45,45,45,45,1563,45,45,45,45,45,67,261,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,341,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,97,1099,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1333,97,1230,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,67,1992,67,1993,67,67,67,97,97,45,45,160,45,45,45,45,45,45,45,45,45,45,45,45,45,1665,45,45,45,45,45,131427,357,0,0,0,362,0,365,28809,367,139,45,45,45,45,45,684,45,45,45,45,45,45,45,45,45,45,412,45,45,45,416,45,45,45,440,45,45,45,45,45,45,45,45,45,45,45,67,67,1990,67,1991,67,67,67,67,67,67,67,97,97,1707,97,97,97,97,97,97,501,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1691,67,67,67,67,67,526,67,67,67,67,67,67,67,67,67,67,1030,67,1032,67,67,67,67,598,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1632,0,921,29315,923,0,0,0,45,45,45,45,45,45,45,45,45,1404,45,45,45,45,45,45,45,45,45,425,45,45,45,45,45,45,67,67,67,67,67,25398,0,13112,0,54074,0,0,1093,0,0,0,0,0,97,1609,97,97,97,97,97,97,97,97,97,1369,97,97,97,1372,97,97,67,67,266,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,346,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,665,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1677,45,45,45,45,67,45,45,954,45,956,45,45,45,45,45,45,45,45,45,45,45,1545,45,45,45,45,45,45,45,45,45,448,45,45,45,45,67,456,67,67,67,67,67,1270,67,67,67,67,67,67,67,67,67,67,1069,67,67,67,67,67,67,97,97,97,1350,97,97,97,97,97,97,97,97,97,97,97,97,1524,97,97,97,97,97,97,97,1376,0,0,0,45,45,45,45,45,45,45,45,1559,1561,45,45,45,1564,45,1566,1567,45,67,67,67,67,67,1573,67,67,67,67,67,67,67,67,67,67,1247,67,67,67,67,67,1252,97,1725,97,0,97,97,97,97,97,97,97,97,97,97,97,97,1628,97,1630,0,0,94242,0,0,0,2211840,0,1118208,0,0,0,0,2158592,2158731,2158592,2158592,2158592,3117056,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3018752,2158592,3043328,2158592,2158592,2158592,2158592,3080192,2158592,2158592,3112960,2158592,2158592,2158592,2158592,2158592,2158878,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2605056,2158592,2158592,2207744,0,542,0,544,0,0,2166784,0,0,0,550,0,0,2158592,2158592,2686976,2158592,2715648,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2867200,2158592,2904064,2158592,2158592,2158592,2158592,2158592,2158592,2158592,0,94242,0,0,0,2211840,0,0,1130496,0,0,0,2158592,2158592,2158592,2158592,2158592,3186688,2158592,0,0,139,0,0,0,139,0,2367488,2207744,0,0,0,0,176128,0,2166784,0,0,0,0,0,286,2158592,2158592,3170304,3174400,2158592,0,0,0,2158592,2158592,2158592,2158592,2158592,2424832,2158592,2158592,2158592,1508,2158592,2908160,2158592,2158592,2158592,2977792,2158592,2158592,2158592,2158592,3039232,2158592,2158592,2158592,2158592,2158592,2158592,3158016,67,24850,24850,12564,12564,0,0,0,0,0,53531,53531,0,286,97,97,97,97,97,1144,97,97,97,97,97,97,97,97,97,97,1149,97,97,97,97,1154,57889,0,0,0,0,550,0,97,97,97,97,97,97,97,97,97,561,97,97,97,97,97,97,576,97,97,139264,139264,139264,139264,139264,139264,139264,139264,139264,139264,139264,139264,0,0,139264,0,921,29315,0,0,926,0,45,45,45,45,45,45,45,45,45,719,720,45,45,45,45,45,45,45,45,685,45,45,45,45,45,45,45,45,45,942,45,45,946,45,45,45,950,45,45,0,2146304,2146304,0,0,0,0,2224128,2224128,2224128,2232320,2232320,2232320,2232320,0,0,1301,0,0,0,0,0,1307,0,0,0,0,0,1313,0,0,0,0,0,0,0,97,97,1318,97,97,97,97,97,97,1795,97,97,45,45,45,45,45,45,45,446,45,45,45,45,45,45,67,67,2158592,2146304,0,0,0,0,0,0,0,2211840,0,0,0,0,2158592,0,921,29315,0,924,0,0,45,45,45,45,45,45,45,45,45,1e3,45,45,45,45,67,67],r.EXPECTED=[290,300,304,353,296,309,305,319,315,324,328,352,354,334,338,330,320,345,349,293,358,362,341,366,312,370,374,378,382,386,390,394,398,737,402,634,439,604,634,634,634,634,408,634,634,634,404,634,634,634,457,634,634,963,634,634,413,634,634,634,634,634,634,634,663,418,422,903,902,426,431,548,634,437,521,919,443,615,409,449,455,624,731,751,634,461,465,672,470,469,474,481,485,477,489,493,629,542,497,505,603,602,991,648,510,804,634,515,958,526,525,530,768,634,546,552,711,710,593,558,562,618,566,570,574,578,582,586,590,608,612,660,822,821,634,622,596,444,628,533,724,633,640,653,647,652,536,1008,451,450,445,657,670,676,685,689,693,697,701,704,707,715,719,798,815,634,723,762,996,634,728,969,730,735,908,634,741,679,889,511,747,634,750,755,499,666,499,501,759,772,776,780,634,787,784,797,802,809,808,427,814,1006,517,634,519,853,634,813,850,793,634,819,826,833,832,837,843,847,857,861,863,867,871,875,879,883,643,887,539,980,979,634,893,944,634,900,896,634,907,933,506,912,917,828,433,636,635,554,961,923,930,927,937,941,634,634,634,974,948,952,985,913,968,967,743,634,973,839,634,978,599,634,984,989,765,444,995,1e3,634,1003,790,955,1012,681,634,634,634,634,634,414,1016,1020,1024,1085,1027,1090,1090,1046,1080,1137,1108,1215,1049,1032,1039,1085,1085,1085,1085,1058,1062,1068,1085,1086,1090,1090,1091,1072,1064,1107,1090,1090,1090,1118,1123,1138,1078,1074,1084,1085,1085,1085,1087,1090,1062,1052,1060,1114,1062,1104,1085,1085,1090,1090,1028,1122,1063,1128,1139,1127,1158,1085,1085,1151,1090,1090,1090,1095,1090,1132,1073,1136,1143,1061,1150,1085,1155,1098,1101,1146,1162,1169,1101,1185,1151,1090,1110,1173,1054,1087,1109,1177,1165,1089,1204,1184,1107,1189,1193,1088,1197,1180,1201,1208,1042,1212,1219,1223,1227,1231,1235,1245,1777,1527,1686,1686,1238,1686,1254,1686,1686,1686,1294,1669,1686,1686,1686,1322,1625,1534,1268,1624,1275,1281,1443,1292,1300,1686,1686,1686,1350,1826,1306,1686,1686,1240,2032,1317,1321,1686,1686,1253,1686,1326,1686,1686,1686,1418,1709,1446,1686,1686,1686,1492,1686,1295,1447,1686,1686,1258,1686,1736,1686,1686,1520,1355,1686,1288,1348,1361,1686,1359,1686,1364,1498,1368,1302,1362,1381,1389,1395,1486,1686,1371,1377,1370,1686,1375,1382,1384,1402,1408,1385,1383,1619,1413,1423,1428,1433,1686,1686,1270,1686,1338,1686,1440,1686,1686,1686,1499,1465,1686,1686,1686,1639,1473,1884,1686,1686,1293,1864,1686,1686,1296,1321,1483,1686,1686,1686,1646,1686,1748,1496,1686,1418,1675,1686,1418,1702,1686,1418,1981,1686,1429,1409,1427,1504,1692,1686,1686,1313,1448,1651,1508,1686,1686,1340,1686,1903,1686,1686,1435,1513,1686,1283,1287,1519,1686,1524,1363,1568,1938,1539,1566,1579,1479,1533,1538,1553,1544,1552,1557,1563,1574,1557,1583,1589,1590,1759,1594,1603,1607,1611,1686,1436,1514,1686,1434,1656,1686,1434,1680,1686,1453,1686,1686,1686,1559,1617,1686,1770,1418,1623,1769,1629,1686,1515,1335,1686,1285,1686,1671,1921,1650,1686,1686,1344,1308,1666,1686,1686,1686,1659,1685,1686,1686,1686,1686,1241,1686,1686,1844,1691,1686,1630,1977,1970,1362,1686,1686,1686,1693,1698,1686,1686,1686,1697,1686,1764,1715,1686,1634,1638,1686,1599,1585,1686,1271,1686,1269,1686,1721,1686,1686,1354,1686,1801,1686,1799,1686,1640,1686,1686,1461,1686,1686,1732,1686,1944,1686,1740,1686,1746,1415,1396,1686,1598,1547,1417,1597,1416,1577,1546,1397,1577,1547,1548,1570,1398,1753,1686,1652,1509,1686,1686,1686,1757,1686,1419,1686,1763,1418,1768,1781,1686,1686,1686,1705,1686,2048,1792,1686,1686,1686,1735,1686,1797,1686,1686,1404,1686,1639,1815,1686,1686,1418,2017,1820,1686,1686,1803,1686,1686,1686,1736,1489,1686,1686,1825,1338,1260,1263,1686,1686,1785,1686,1686,1728,1686,1686,1749,1497,1830,1830,1262,1248,1261,1329,1260,1264,1329,1248,1249,1259,1540,1849,1842,1686,1686,1835,1686,1686,1816,1686,1686,1831,1882,1848,1686,1686,1686,1774,2071,1854,1686,1686,1469,1884,1686,1821,1859,1686,1686,1350,1883,1686,1686,1686,1781,1391,1875,1686,1686,1613,1644,1686,1686,1889,1686,1686,1662,1884,1686,1885,1890,1686,1686,1686,1894,1686,1686,1678,1686,1907,1686,1686,1529,1914,1686,1838,1686,1686,1881,1686,1686,1872,1876,1836,1919,1686,1837,1692,1910,1686,1925,1928,1742,1686,1811,1811,1930,1810,1929,1935,1928,1900,1942,1867,1868,1931,1035,1788,1948,1952,1956,1960,1964,1686,1976,1686,1686,1686,2065,1686,1992,2037,1686,1686,1998,2009,1972,2002,1686,1686,1686,2077,1300,2023,1686,1686,1686,1807,2031,1686,1686,1686,1860,1500,2032,1686,1686,1686,2083,1686,2036,1686,1277,1276,2042,1877,1686,1686,2041,1686,1686,2027,2037,2012,1686,2012,1855,1850,1686,2046,1686,1686,2054,1996,1686,1897,1309,2059,2052,1686,2058,1686,1686,2081,1686,1717,1477,1686,1331,1686,1686,1687,1686,1860,1681,1686,1686,1686,1966,1724,1686,1686,1686,1984,2015,1686,1686,1686,1988,1686,2063,1686,1686,1686,2005,1686,1727,1686,1686,1711,1457,2069,1686,1686,1686,2019,2075,1686,1686,1915,1686,1686,1793,1874,1686,1686,1491,1362,1449,1686,1686,1460,2098,2087,2091,2095,2184,2102,2113,2780,2117,2134,2142,2281,2146,2146,2146,2304,2296,2181,2639,2591,2872,2592,2873,2313,2195,2200,2281,2146,2273,2226,2204,2152,2219,2276,2167,2177,2276,2235,2276,2276,2230,2281,2276,2296,2276,2293,2276,2276,2276,2276,2234,2276,2311,2314,2210,2199,2217,2222,2276,2276,2276,2240,2276,2294,2276,2276,2173,2276,2198,2281,2281,2281,2281,2282,2146,2146,2146,2146,2205,2146,2204,2248,2276,2235,2276,2297,2276,2276,2276,2277,2256,2281,2283,2146,2146,2146,2275,2276,2295,2276,2276,2293,2146,2304,2264,2269,2221,2276,2276,2276,2293,2295,2276,2276,2276,2295,2263,2205,2268,2220,2172,2276,2276,2276,2296,2276,2276,2296,2294,2276,2276,2278,2281,2281,2280,2281,2281,2281,2283,2206,2223,2276,2276,2279,2281,2281,2146,2273,2276,2276,2281,2281,2281,2276,2292,2276,2298,2225,2276,2298,2169,2224,2292,2298,2171,2229,2281,2281,2171,2236,2281,2281,2281,2146,2275,2225,2292,2299,2276,2229,2281,2146,2276,2290,2297,2283,2146,2146,2274,2224,2227,2298,2225,2297,2276,2230,2170,2230,2282,2146,2147,2151,2156,2288,2276,2230,2303,2308,2236,2284,2228,2318,2318,2318,2326,2335,2339,2343,2349,2416,2693,2357,2592,2109,2592,2592,2162,2943,2823,2646,2592,2361,2592,2122,2592,2592,2122,2470,2592,2592,2592,2109,2107,2592,2592,2592,2123,2592,2592,2592,2125,2592,2413,2592,2592,2592,2127,2592,2592,2414,2592,2592,2592,2130,2952,2592,2594,2592,2592,2212,2609,2252,2592,2592,2592,2446,2434,2592,2592,2592,2212,2446,2450,2456,2431,2435,2592,2592,2243,2478,2448,2439,2946,2592,2592,2592,2368,2809,2813,2450,2441,2212,2812,2449,2440,2947,2592,2592,2592,2345,2451,2457,2948,2592,2124,2592,2592,2650,2823,2449,2455,2946,2592,2128,2592,2592,2649,2952,2592,2810,2448,2461,2991,2467,2592,2592,2329,2817,2474,2990,2466,2592,2592,2373,2447,2992,2469,2592,2592,2592,2373,2447,2477,2468,2592,2592,2353,2469,2592,2495,2592,2592,2415,2483,2592,2415,2496,2592,2592,2352,2592,2592,2352,2352,2469,2592,2592,2363,2331,2494,2592,2592,2592,2375,2592,2375,2415,2504,2592,2592,2367,2372,2503,2592,2592,2592,2389,2418,2415,2592,2592,2373,2592,2592,2592,2593,2732,2417,2415,2592,2417,2520,2592,2592,2592,2390,2521,2521,2592,2592,2592,2401,2599,2585,2526,2531,2120,2592,2212,2426,2450,2463,2948,2592,2592,2592,2213,2389,2527,2532,2121,2542,2551,2105,2592,2213,2592,2592,2592,2558,2538,2544,2553,2557,2537,2543,2552,2421,2572,2576,2546,2543,2547,2592,2592,2373,2615,2575,2545,2105,2592,2244,2479,2592,2129,2592,2592,2628,2690,2469,2562,2566,2592,2592,2592,2415,2928,2934,2401,2570,2574,2564,2572,2585,2590,2592,2592,2585,2965,2592,2592,2592,2445,2251,2592,2592,2592,2474,2592,2609,2892,2592,2362,2592,2592,2138,2851,2159,2592,2592,2592,2509,2888,2892,2592,2592,2592,2490,2418,2891,2592,2592,2376,2592,2592,2374,2592,2889,2388,2592,2373,2373,2890,2592,2592,2387,2592,2887,2505,2892,2592,2373,2610,2388,2592,2592,2376,2373,2592,2887,2891,2592,2374,2592,2592,2608,2159,2614,2620,2592,2592,2394,2594,2887,2399,2592,2887,2397,2508,2374,2507,2592,2375,2592,2592,2592,2595,2508,2506,2592,2506,2505,2505,2592,2507,2637,2505,2592,2592,2401,2661,2592,2643,2592,2592,2417,2592,2655,2592,2592,2592,2510,2414,2656,2592,2592,2592,2516,2592,2593,2660,2665,2880,2592,2592,2592,2522,2767,2666,2881,2592,2592,2420,2571,2696,2592,2592,2592,2580,2572,2686,2632,2698,2592,2383,2514,2592,2163,2932,2465,2685,2631,2697,2592,2388,2592,2592,2212,2604,2671,2632,2678,2592,2401,2405,2409,2592,2592,2592,2679,2592,2592,2592,2592,2108,2677,2591,2592,2592,2592,2419,2592,2683,2187,2191,2469,2671,2189,2467,2592,2401,2629,2633,2702,2468,2592,2592,2421,2536,2703,2469,2592,2592,2422,2573,2593,2672,2467,2592,2402,2406,2592,2402,2979,2592,2592,2626,2673,2467,2592,2446,2259,2947,2592,2377,2709,2592,2592,2522,2862,2713,2468,2592,2592,2581,2572,2562,2374,2374,2592,2376,2721,2724,2592,2592,2624,2373,2731,2592,2592,2592,2626,2732,2592,2592,2592,2755,2656,2726,2736,2741,2592,2486,2593,2381,2592,2727,2737,2742,2715,2747,2753,2592,2498,2469,2873,2743,2592,2592,2592,2791,2759,2763,2592,2592,2627,2704,2592,2592,2522,2789,2593,2761,2753,2592,2498,2863,2592,2592,2767,2592,2592,2592,2792,2789,2592,2592,2592,2803,2126,2592,2592,2592,2811,2122,2592,2592,2592,2834,2777,2592,2592,2592,2848,2936,2591,2489,2797,2592,2592,2670,2631,2490,2798,2592,2592,2592,2963,2807,2592,2592,2592,2965,2838,2592,2592,2592,2975,2330,2818,2829,2592,2498,2939,2592,2498,2592,2791,2331,2819,2830,2592,2592,2592,2982,2834,2817,2828,2106,2592,2592,2592,2405,2405,2817,2828,2592,2592,2415,2849,2842,2592,2522,2773,2592,2522,2868,2592,2580,2600,2586,2137,2850,2843,2592,2592,2855,2937,2844,2592,2592,2592,2987,2936,2591,2592,2592,2684,2630,2592,2856,2938,2592,2592,2860,2939,2592,2592,2872,2592,2861,2591,2592,2592,2887,2616,2592,2867,2592,2592,2708,2592,2498,2469,2498,2497,2785,2773,2499,2783,2770,2877,2877,2877,2772,2592,2592,2345,2885,2592,2592,2592,2715,2762,2515,2896,2592,2592,2715,2917,2516,2897,2592,2592,2592,2901,2906,2911,2592,2592,2956,2960,2715,2902,2907,2912,2593,2916,2920,2820,2922,2822,2592,2592,2715,2927,2921,2821,2106,2592,2592,2974,2408,2321,2821,2106,2592,2592,2983,2592,2593,2404,2408,2592,2592,2717,2749,2716,2928,2322,2822,2593,2926,2919,2820,2934,2823,2592,2592,2592,2651,2824,2592,2592,2592,2130,2952,2592,2592,2592,2592,2964,2592,2592,2716,2748,2592,2969,2592,2592,2716,2918,2368,2970,2592,2592,2592,2403,2407,2592,2592,2787,2211,2404,2409,2592,2592,2802,2837,2987,2592,2592,2592,2809,2427,2592,2793,2592,2592,2809,2447,1073741824,2147483648,539754496,542375936,402653184,554434560,571736064,545521856,268451840,335544320,268693630,512,2048,256,1024,0,1024,0,1073741824,2147483648,0,0,0,8388608,0,0,1073741824,1073741824,0,2147483648,537133056,4194304,1048576,268435456,-1073741824,0,0,0,1048576,0,0,0,1572864,0,0,0,4194304,0,134217728,16777216,0,0,32,64,98304,0,33554432,8388608,192,67108864,67108864,67108864,67108864,16,32,4,0,8192,196608,196608,229376,80,4096,524288,8388608,0,0,32,128,256,24576,24600,24576,24576,2,24576,24576,24576,24584,24592,24576,24578,24576,24578,24576,24576,16,512,2048,2048,256,4096,32768,1048576,4194304,67108864,134217728,268435456,262144,134217728,0,128,128,64,16384,16384,16384,67108864,32,32,4,4,4096,262144,134217728,0,0,0,2,0,8192,131072,131072,4096,4096,4096,4096,24576,24576,24576,8,8,24576,24576,16384,16384,16384,24576,24584,24576,24576,24576,16384,24576,536870912,262144,0,0,32,2048,8192,4,4096,4096,4096,786432,8388608,16777216,0,128,16384,16384,16384,32768,65536,2097152,32,32,32,32,4,4,4,4,4,4096,67108864,67108864,67108864,24576,24576,24576,24576,0,16384,16384,16384,16384,67108864,67108864,8,67108864,24576,8,8,8,24576,24576,24576,24578,24576,24576,24576,2,2,2,16384,67108864,67108864,67108864,32,67108864,8,8,24576,2048,2147483648,536870912,262144,262144,262144,67108864,8,24576,16384,32768,1048576,4194304,25165824,67108864,24576,32770,2,4,112,512,98304,524288,50,402653186,1049090,1049091,10,66,100925514,10,66,12582914,0,0,-1678194207,-1678194207,-1041543218,0,32768,0,0,32,65536,268435456,1,1,513,1048577,0,12582912,0,0,0,4,1792,0,0,0,7,29360128,0,0,0,8,0,0,0,12,1,1,0,0,-604102721,-604102721,4194304,8388608,0,0,0,31,925600,997981306,997981306,997981306,0,0,2048,8388608,0,0,1,2,4,32,64,512,8192,0,0,0,245760,997720064,0,0,0,32,0,0,0,3,12,16,32,8,112,3072,12288,16384,32768,65536,131072,7864320,16777216,973078528,0,0,65536,131072,3670016,4194304,16777216,33554432,2,8,48,2048,8192,16384,32768,65536,131072,524288,131072,524288,3145728,4194304,16777216,33554432,65536,131072,2097152,4194304,16777216,33554432,134217728,268435456,536870912,0,0,0,1024,0,8,48,2048,8192,65536,33554432,268435456,536870912,65536,268435456,536870912,0,0,32768,0,0,126,623104,65011712,0,32,65536,536870912,0,0,65536,524288,0,32,65536,0,0,0,2048,0,0,0,15482,245760,-604102721,0,0,0,18913,33062912,925600,-605028352,0,0,0,65536,31,8096,131072,786432,3145728,3145728,12582912,50331648,134217728,268435456,160,256,512,7168,131072,786432,131072,786432,1048576,2097152,12582912,16777216,268435456,1073741824,2147483648,12582912,16777216,33554432,268435456,1073741824,2147483648,3,12,16,160,256,7168,786432,1048576,12582912,16777216,268435456,1073741824,0,8,16,32,128,256,512,7168,786432,1048576,2097152,0,1,2,8,16,7168,786432,1048576,8388608,16777216,16777216,1073741824,0,0,0,0,1,0,0,8,32,128,256,7168,8,32,0,3072,0,8,32,3072,4096,524288,8,32,0,0,3072,4096,0,2048,524288,8388608,8,2048,0,0,1,12,256,4096,32768,262144,1048576,4194304,67108864,0,2048,0,2048,2048,1073741824,-58805985,-58805985,-58805985,0,0,262144,0,0,32,4194304,16777216,134217728,4382,172032,-58982400,0,0,2,28,256,4096,8192,8192,32768,131072,262144,524288,1,2,12,256,4096,0,0,4194304,67108864,134217728,805306368,1073741824,0,0,1,2,12,16,256,4096,1048576,67108864,134217728,268435456,0,512,1048576,4194304,201326592,1879048192,0,0,12,256,4096,134217728,268435456,536870912,12,256,268435456,536870912,0,12,256,0,0,1,32,64,512,0,0,205236961,205236961,0,0,0,1,96,640,1,10976,229376,204996608,0,640,2048,8192,229376,1572864,1572864,2097152,201326592,0,0,0,64,512,2048,229376,1572864,201326592,1572864,201326592,0,0,1,4382,0,1,32,2048,65536,131072,1572864,201326592,131072,1572864,134217728,0,0,524288,524288,0,0,0,-68582786,-68582786,-68582786,0,0,2097152,524288,0,524288,0,0,65536,131072,1572864,0,0,2,4,0,0,65011712,-134217728,0,0,0,0,2,4,120,512,-268435456,0,0,0,2,8,48,64,2048,8192,98304,524288,2097152,4194304,25165824,33554432,134217728,268435456,2147483648,0,0,25165824,33554432,134217728,1879048192,2147483648,0,0,4,112,512,622592,65011712,134217728,-268435456,16777216,33554432,134217728,1610612736,0,0,0,64,98304,524288,4194304,16777216,33554432,0,98304,524288,16777216,33554432,0,65536,524288,33554432,536870912,1073741824,0,65536,524288,536870912,1073741824,0,0,65536,524288,536870912,0,524288,0,524288,524288,1048576,2086666240,2147483648,0,-1678194207,0,0,0,8,32,2048,524288,8388608,0,0,33062912,436207616,2147483648,0,0,32,64,2432,16384,32768,32768,524288,3145728,4194304,25165824,25165824,167772160,268435456,2147483648,0,32,64,384,2048,16384,32768,1048576,2097152,4194304,25165824,32,64,128,256,2048,16384,2048,16384,1048576,4194304,16777216,33554432,134217728,536870912,1073741824,0,0,2048,16384,4194304,16777216,33554432,134217728,805306368,0,0,16777216,134217728,268435456,2147483648,0,622592,622592,622592,8807,8807,434791,0,0,16777216,0,0,0,7,608,8192,0,0,0,3,4,96,512,32,64,8192,0,0,16777216,134217728,0,0,2,4,8192,16384,65536,2097152,33554432,268435456],r.TOKEN=["(0)","ModuleDecl","Annotation","OptionDecl","Operator","Variable","Tag","EndTag","PragmaContents","DirCommentContents","DirPIContents","CDataSectionContents","AttrTest","Wildcard","EQName","IntegerLiteral","DecimalLiteral","DoubleLiteral","PredefinedEntityRef","'\"\"'","EscapeApos","QuotChar","AposChar","ElementContentChar","QuotAttrContentChar","AposAttrContentChar","NCName","QName","S","CharRef","CommentContents","DocTag","DocCommentContents","EOF","'!'","'\"'","'#'","'#)'","''''","'('","'(#'","'(:'","'(:~'","')'","'*'","'*'","','","'-->'","'.'","'/'","'/>'","':'","':)'","';'","'<!--'","'<![CDATA['","'<?'","'='","'>'","'?'","'?>'","'NaN'","'['","']'","']]>'","'after'","'all'","'allowing'","'ancestor'","'ancestor-or-self'","'and'","'any'","'append'","'array'","'as'","'ascending'","'at'","'attribute'","'base-uri'","'before'","'boundary-space'","'break'","'by'","'case'","'cast'","'castable'","'catch'","'check'","'child'","'collation'","'collection'","'comment'","'constraint'","'construction'","'contains'","'content'","'context'","'continue'","'copy'","'copy-namespaces'","'count'","'decimal-format'","'decimal-separator'","'declare'","'default'","'delete'","'descendant'","'descendant-or-self'","'descending'","'diacritics'","'different'","'digit'","'distance'","'div'","'document'","'document-node'","'element'","'else'","'empty'","'empty-sequence'","'encoding'","'end'","'entire'","'eq'","'every'","'exactly'","'except'","'exit'","'external'","'first'","'following'","'following-sibling'","'for'","'foreach'","'foreign'","'from'","'ft-option'","'ftand'","'ftnot'","'ftor'","'function'","'ge'","'greatest'","'group'","'grouping-separator'","'gt'","'idiv'","'if'","'import'","'in'","'index'","'infinity'","'inherit'","'insensitive'","'insert'","'instance'","'integrity'","'intersect'","'into'","'is'","'item'","'json'","'json-item'","'key'","'language'","'last'","'lax'","'le'","'least'","'let'","'levels'","'loop'","'lowercase'","'lt'","'minus-sign'","'mod'","'modify'","'module'","'most'","'namespace'","'namespace-node'","'ne'","'next'","'no'","'no-inherit'","'no-preserve'","'node'","'nodes'","'not'","'object'","'occurs'","'of'","'on'","'only'","'option'","'or'","'order'","'ordered'","'ordering'","'paragraph'","'paragraphs'","'parent'","'pattern-separator'","'per-mille'","'percent'","'phrase'","'position'","'preceding'","'preceding-sibling'","'preserve'","'previous'","'processing-instruction'","'relationship'","'rename'","'replace'","'return'","'returning'","'revalidation'","'same'","'satisfies'","'schema'","'schema-attribute'","'schema-element'","'score'","'self'","'sensitive'","'sentence'","'sentences'","'skip'","'sliding'","'some'","'stable'","'start'","'stemming'","'stop'","'strict'","'strip'","'structured-item'","'switch'","'text'","'then'","'thesaurus'","'times'","'to'","'treat'","'try'","'tumbling'","'type'","'typeswitch'","'union'","'unique'","'unordered'","'updating'","'uppercase'","'using'","'validate'","'value'","'variable'","'version'","'weight'","'when'","'where'","'while'","'wildcards'","'window'","'with'","'without'","'word'","'words'","'xquery'","'zero-digit'","'{'","'{{'","'|'","'}'","'}}'"]},{}],2:[function(e,t,n){"use strict";var r=function(e){var t=e;this.tokens=[],this.reset=function(){t=t,this.tokens=[]},this.startNonterminal=function(){},this.endNonterminal=function(){},this.terminal=function(e,n,r){this.tokens.push({name:e,value:t.substring(n,r)})},this.whitespace=function(e,n){this.tokens.push({name:"WS",value:t.substring(e,n)})}};n.Lexer=function(e,t){this.tokens=[],this.getLineTokens=function(n,i){i=i==="start"||!i?'["start"]':i;var s=JSON.parse(i),o=new r(n),u=new e(n,o),a=[];for(;;){var f=s[s.length-1];try{o.tokens=[],u["parse_"+f]();var l=null;o.tokens.length>1&&o.tokens[0].name==="WS"&&(a.push({type:"text",value:o.tokens[0].value}),o.tokens.splice(0,1));var c=o.tokens[0],h=t[f];for(var p=0;p<h.length;p++){var d=t[f][p];if(typeof d.name=="function"&&d.name(c)||d.name===c.name){l=d;break}}if(c.name==="EOF")break;if(c.value==="")throw"Encountered empty string lexical rule.";a.push({type:l===null?"text":typeof l.token=="function"?l.token(c.value):l.token,value:c.value}),l&&l.next&&l.next(s)}catch(v){if(v instanceof u.ParseException){var m=0;for(var g=0;g<a.length;g++)m+=a[g].value.length;return a.push({type:"text",value:n.substring(m)}),{tokens:a,state:JSON.stringify(["start"])}}throw v}}return{tokens:a,state:JSON.stringify(s)}}}},{}],3:[function(e,t,n){"use strict";var r=e("./XQueryTokenizer").XQueryTokenizer,i=e("./lexer").Lexer,s="after|ancestor|ancestor-or-self|and|as|ascending|attribute|before|case|cast|castable|child|collation|comment|copy|count|declare|default|delete|descendant|descendant-or-self|descending|div|document|document-node|element|else|empty|empty-sequence|end|eq|every|except|first|following|following-sibling|for|function|ge|group|gt|idiv|if|import|insert|instance|intersect|into|is|item|last|le|let|lt|mod|modify|module|namespace|namespace-node|ne|node|only|or|order|ordered|parent|preceding|preceding-sibling|processing-instruction|rename|replace|return|satisfies|schema-attribute|schema-element|self|some|stable|start|switch|text|to|treat|try|typeswitch|union|unordered|validate|where|with|xquery|contains|paragraphs|sentences|times|words|by|collectionreturn|variable|version|option|when|encoding|toswitch|catch|tumbling|sliding|window|at|using|stemming|collection|schema|while|on|nodes|index|external|then|in|updating|value|of|containsbreak|loop|continue|exit|returning|append|json|position|strict".split("|"),o=s.map(function(e){return{name:"'"+e+"'",token:"keyword"}}),u=s.map(function(e){return{name:"'"+e+"'",token:"text",next:function(e){e.pop()}}}),a="constant.language",f="constant",l="comment",c="xml-pe",h="constant.buildin",p=function(e){return"'"+e+"'"},d={start:[{name:p("(#"),token:h,next:function(e){e.push("Pragma")}},{name:p("(:"),token:"comment",next:function(e){e.push("Comment")}},{name:p("(:~"),token:"comment.doc",next:function(e){e.push("CommentDoc")}},{name:p("<!--"),token:l,next:function(e){e.push("XMLComment")}},{name:p("<?"),token:c,next:function(e){e.push("PI")}},{name:p("''"),token:"string",next:function(e){e.push("AposString")}},{name:p('"'),token:"string",next:function(e){e.push("QuotString")}},{name:"Annotation",token:"support.function"},{name:"ModuleDecl",token:"keyword",next:function(e){e.push("Prefix")}},{name:"OptionDecl",token:"keyword",next:function(e){e.push("_EQName")}},{name:"AttrTest",token:"support.type"},{name:"Variable",token:"variable"},{name:p("<![CDATA["),token:a,next:function(e){e.push("CData")}},{name:"IntegerLiteral",token:f},{name:"DecimalLiteral",token:f},{name:"DoubleLiteral",token:f},{name:"Operator",token:"keyword.operator"},{name:"EQName",token:function(e){return s.indexOf(e)!==-1?"keyword":"support.function"}},{name:p("("),token:"lparen"},{name:p(")"),token:"rparen"},{name:"Tag",token:"meta.tag",next:function(e){e.push("StartTag")}},{name:p("}"),token:"text",next:function(e){e.length>1&&e.pop()}},{name:p("{"),token:"text",next:function(e){e.push("start")}}].concat(o),_EQName:[{name:"EQName",token:"text",next:function(e){e.pop()}}].concat(u),Prefix:[{name:"NCName",token:"text",next:function(e){e.pop()}}].concat(u),StartTag:[{name:p(">"),token:"meta.tag",next:function(e){e.push("TagContent")}},{name:"QName",token:"entity.other.attribute-name"},{name:p("="),token:"text"},{name:p("''"),token:"string",next:function(e){e.push("AposAttr")}},{name:p('"'),token:"string",next:function(e){e.push("QuotAttr")}},{name:p("/>"),token:"meta.tag.r",next:function(e){e.pop()}}],TagContent:[{name:"ElementContentChar",token:"text"},{name:p("<![CDATA["),token:a,next:function(e){e.push("CData")}},{name:p("<!--"),token:l,next:function(e){e.push("XMLComment")}},{name:"Tag",token:"meta.tag",next:function(e){e.push("StartTag")}},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:p("{{"),token:"text"},{name:p("}}"),token:"text"},{name:p("{"),token:"text",next:function(e){e.push("start")}},{name:"EndTag",token:"meta.tag",next:function(e){e.pop(),e.pop()}}],AposAttr:[{name:p("''"),token:"string",next:function(e){e.pop()}},{name:"EscapeApos",token:"constant.language.escape"},{name:"AposAttrContentChar",token:"string"},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:p("{{"),token:"string"},{name:p("}}"),token:"string"},{name:p("{"),token:"text",next:function(e){e.push("start")}}],QuotAttr:[{name:p('"'),token:"string",next:function(e){e.pop()}},{name:"EscapeQuot",token:"constant.language.escape"},{name:"QuotAttrContentChar",token:"string"},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:p("{{"),token:"string"},{name:p("}}"),token:"string"},{name:p("{"),token:"text",next:function(e){e.push("start")}}],Pragma:[{name:"PragmaContents",token:h},{name:p("#"),token:h},{name:p("#)"),token:h,next:function(e){e.pop()}}],Comment:[{name:"CommentContents",token:"comment"},{name:p("(:"),token:"comment",next:function(e){e.push("Comment")}},{name:p(":)"),token:"comment",next:function(e){e.pop()}}],CommentDoc:[{name:"DocCommentContents",token:"comment.doc"},{name:"DocTag",token:"comment.doc.tag"},{name:p("(:"),token:"comment.doc",next:function(e){e.push("CommentDoc")}},{name:p(":)"),token:"comment.doc",next:function(e){e.pop()}}],XMLComment:[{name:"DirCommentContents",token:l},{name:p("-->"),token:l,next:function(e){e.pop()}}],CData:[{name:"CDataSectionContents",token:a},{name:p("]]>"),token:a,next:function(e){e.pop()}}],PI:[{name:"DirPIContents",token:c},{name:p("?"),token:c},{name:p("?>"),token:c,next:function(e){e.pop()}}],AposString:[{name:p("''"),token:"string",next:function(e){e.pop()}},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:"EscapeApos",token:"constant.language.escape"},{name:"AposChar",token:"string"}],QuotString:[{name:p('"'),token:"string",next:function(e){e.pop()}},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:"EscapeQuot",token:"constant.language.escape"},{name:"QuotChar",token:"string"}]};n.XQueryLexer=function(){return new i(r,d)}},{"./XQueryTokenizer":1,"./lexer":2}]},{},[3])(3)}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g;else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/behaviour/xquery",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/mode/behaviour/xml","ace/token_iterator"],function(e,t,n){"use strict";function a(e,t){var n=!0,r=e.type.split("."),i=t.split(".");return i.forEach(function(e){if(r.indexOf(e)==-1)return n=!1,!1}),n}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../behaviour/xml").XmlBehaviour,u=e("../../token_iterator").TokenIterator,f=function(){this.inherit(s,["braces","parens","string_dquotes"]),this.inherit(o),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var s=n.getCursorPosition(),o=new u(r,s.row,s.column),f=o.getCurrentToken(),l=!1,e=JSON.parse(e).pop();if(f&&f.value===">"||e!=="StartTag")return;if(!f||!a(f,"meta.tag")&&(!a(f,"text")||!f.value.match("/"))){do f=o.stepBackward();while(f&&(a(f,"string")||a(f,"keyword.operator")||a(f,"entity.attribute-name")||a(f,"text")))}else l=!0;var c=o.stepBackward();if(!f||!a(f,"meta.tag")||c!==null&&c.value.match("/"))return;var h=f.value.substring(1);if(l)var h=h.substring(0,s.column-f.start);return{text:"></"+h+">",selection:[1,1]}}})};r.inherits(f,i),t.XQueryBehaviour=f}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/xquery",["require","exports","module","ace/worker/worker_client","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/xquery/xquery_lexer","ace/range","ace/mode/behaviour/xquery","ace/mode/folding/cstyle","ace/anchor"],function(e,t,n){"use strict";var r=e("../worker/worker_client").WorkerClient,i=e("../lib/oop"),s=e("./text").Mode,o=e("./text_highlight_rules").TextHighlightRules,u=e("./xquery/xquery_lexer").XQueryLexer,a=e("../range").Range,f=e("./behaviour/xquery").XQueryBehaviour,l=e("./folding/cstyle").FoldMode,c=e("../anchor").Anchor,h=function(){this.$tokenizer=new u,this.$behaviour=new f,this.foldingRules=new l,this.$highlightRules=new o};i.inherits(h,s),function(){this.completer={getCompletions:function(e,t,n,r,i){if(!t.$worker)return i();t.$worker.emit("complete",{data:{pos:n,prefix:r}}),t.$worker.on("complete",function(e){i(null,e.data)})}},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=t.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/);return i&&(r+=n),r},this.checkOutdent=function(e,t,n){return/^\s+$/.test(t)?/^\s*[\}\)]/.test(n):!1},this.autoOutdent=function(e,t,n){var r=t.getLine(n),i=r.match(/^(\s*[\}\)])/);if(!i)return 0;var s=i[1].length,o=t.findMatchingBracket({row:n,column:s});if(!o||o.row==n)return 0;var u=this.$getIndent(t.getLine(o.row));t.replace(new a(n,0,n,s-1),u)},this.toggleCommentLines=function(e,t,n,r){var i,s,o=!0,u=/^\s*\(:(.*):\)/;for(i=n;i<=r;i++)if(!u.test(t.getLine(i))){o=!1;break}var f=new a(0,0,0,0);for(i=n;i<=r;i++)s=t.getLine(i),f.start.row=i,f.end.row=i,f.end.column=s.length,t.replace(f,o?s.match(u)[1]:"(:"+s+":)")},this.createWorker=function(e){var t=new r(["ace"],"ace/mode/xquery_worker","XQueryWorker"),n=this;return t.attachToDocument(e.getDocument()),t.on("ok",function(t){e.clearAnnotations()}),t.on("markers",function(t){e.clearAnnotations(),n.addMarkers(t.data,e)}),t.on("highlight",function(t){n.$tokenizer.tokens=t.data.tokens,n.$tokenizer.lines=e.getDocument().getAllLines();var r=Object.keys(n.$tokenizer.tokens);for(var i=0;i<r.length;i++){var s=parseInt(r[i]);delete e.bgTokenizer.lines[s],delete e.bgTokenizer.states[s],e.bgTokenizer.fireUpdateEvent(s,s)}}),t},this.removeMarkers=function(e){var t=e.getMarkers(!1);for(var n in t)t[n].clazz.indexOf("language_highlight_")===0&&e.removeMarker(n);for(var r=0;r<e.markerAnchors.length;r++)e.markerAnchors[r].detach();e.markerAnchors=[]},this.addMarkers=function(e,t){var n=this;t.markerAnchors||(t.markerAnchors=[]),this.removeMarkers(t),t.languageAnnos=[],e.forEach(function(e){function u(i){r&&t.removeMarker(r),o.row=n.row;if(e.pos.sc!==undefined&&e.pos.ec!==undefined){var s=new a(e.pos.sl,e.pos.sc,e.pos.el,e.pos.ec);r=t.addMarker(s,"language_highlight_"+(e.type?e.type:"default"))}i&&t.setAnnotations(t.languageAnnos)}var n=new c(t.getDocument(),e.pos.sl,e.pos.sc||0);t.markerAnchors.push(n);var r,i=e.pos.ec-e.pos.sc,s=e.pos.el-e.pos.sl,o={guttertext:e.message,type:e.level||"warning",text:e.message};u(),n.on("change",function(){u(!0)}),e.message&&t.languageAnnos.push(o)}),t.setAnnotations(t.languageAnnos)},this.$id="ace/mode/xquery"}.call(h.prototype),t.Mode=h}) \ No newline at end of file
diff --git a/library/ace/mode-yaml.js b/library/ace/mode-yaml.js
new file mode 100644
index 000000000..df458d7a9
--- /dev/null
+++ b/library/ace/mode-yaml.js
@@ -0,0 +1 @@
+ace.define("ace/mode/yaml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"list.markup",regex:/^(?:-{3}|\.{3})\s*(?=#|$)/},{token:"list.markup",regex:/^\s*[\-?](?:$|\s)/},{token:"constant",regex:"!![\\w//]+"},{token:"constant.language",regex:"[&\\*][a-zA-Z0-9-_]+"},{token:["meta.tag","keyword"],regex:/^(\s*\w.*?)(\:(?:\s+|$))/},{token:["meta.tag","keyword"],regex:/(\w+?)(\s*\:(?:\s+|$))/},{token:"keyword.operator",regex:"<<\\w*:\\w*"},{token:"keyword.operator",regex:"-\\s*(?=[{])"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"[|>][-+\\d\\s]*$",next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:/(\b|[+\-\.])[\d_]+(?:(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)/},{token:"constant.numeric",regex:/[+\-]?\.inf\b|NaN\b|0x[\dA-Fa-f_]+|0b[10_]+/},{token:"constant.language.boolean",regex:"(?:true|false|TRUE|FALSE|True|False|yes|no)\\b"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"}],qqstring:[{token:"string",regex:"(?=(?:(?:\\\\.)|(?:[^:]))*?:)",next:"start"},{token:"string",regex:".+"}]}};r.inherits(s,i),t.YamlHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/yaml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/yaml_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./yaml_highlight_rules").YamlHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/coffee").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*[\{\(\[]\s*$/);i&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/yaml"}.call(a.prototype),t.Mode=a}) \ No newline at end of file
diff --git a/library/ace/snippets/abap.js b/library/ace/snippets/abap.js
new file mode 100644
index 000000000..5e1c4c2de
--- /dev/null
+++ b/library/ace/snippets/abap.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/abap",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="abap"}) \ No newline at end of file
diff --git a/library/ace/snippets/abc.js b/library/ace/snippets/abc.js
new file mode 100644
index 000000000..ed591a5f4
--- /dev/null
+++ b/library/ace/snippets/abc.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/abc",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='\nsnippet zupfnoter.print\n %%%%hn.print {"startpos": ${1:pos_y}, "t":"${2:title}", "v":[${3:voices}], "s":[[${4:syncvoices}1,2]], "f":[${5:flowlines}], "sf":[${6:subflowlines}], "j":[${7:jumplines}]}\n\nsnippet zupfnoter.note\n %%%%hn.note {"pos": [${1:pos_x},${2:pos_y}], "text": "${3:text}", "style": "${4:style}"}\n\nsnippet zupfnoter.annotation\n %%%%hn.annotation {"id": "${1:id}", "pos": [${2:pos}], "text": "${3:text}"}\n\nsnippet zupfnoter.lyrics\n %%%%hn.lyrics {"pos": [${1:x_pos},${2:y_pos}]}\n\nsnippet zupfnoter.legend\n %%%%hn.legend {"pos": [${1:x_pos},${2:y_pos}]}\n\n\n\nsnippet zupfnoter.target\n "^:${1:target}"\n\nsnippet zupfnoter.goto\n "^@${1:target}@${2:distance}"\n\nsnippet zupfnoter.annotationref\n "^#${1:target}"\n\nsnippet zupfnoter.annotation\n "^!${1:text}@${2:x_offset},${3:y_offset}"\n\n\n',t.scope="abc"}) \ No newline at end of file
diff --git a/library/ace/snippets/actionscript.js b/library/ace/snippets/actionscript.js
new file mode 100644
index 000000000..50ca770c2
--- /dev/null
+++ b/library/ace/snippets/actionscript.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/actionscript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet main\n package {\n import flash.display.*;\n import flash.Events.*;\n \n public class Main extends Sprite {\n public function Main ( ) {\n trace("start");\n stage.scaleMode = StageScaleMode.NO_SCALE;\n stage.addEventListener(Event.RESIZE, resizeListener);\n }\n \n private function resizeListener (e:Event):void {\n trace("The application window changed size!");\n trace("New width: " + stage.stageWidth);\n trace("New height: " + stage.stageHeight);\n }\n \n }\n \n }\nsnippet class\n ${1:public|internal} class ${2:name} ${3:extends } {\n public function $2 ( ) {\n ("start");\n }\n }\nsnippet all\n package name {\n\n ${1:public|internal|final} class ${2:name} ${3:extends } {\n private|public| static const FOO = "abc";\n private|public| static var BAR = "abc";\n\n // class initializer - no JIT !! one time setup\n if Cababilities.os == "Linux|MacOS" {\n FOO = "other";\n }\n\n // constructor:\n public function $2 ( ){\n super2();\n trace("start");\n }\n public function name (a, b...){\n super.name(..);\n lable:break\n }\n }\n }\n\n function A(){\n // A can only be accessed within this file\n }\nsnippet switch\n switch(${1}){\n case ${2}:\n ${3}\n break;\n default:\n }\nsnippet case\n case ${1}:\n ${2}\n break;\nsnippet package\n package ${1:package}{\n ${2}\n }\nsnippet wh\n while ${1:cond}{\n ${2}\n }\nsnippet do\n do {\n ${2}\n } while (${1:cond})\nsnippet while\n while ${1:cond}{\n ${2}\n }\nsnippet for enumerate names\n for (${1:var} in ${2:object}){\n ${3}\n }\nsnippet for enumerate values\n for each (${1:var} in ${2:object}){\n ${3}\n }\nsnippet get_set\n function get ${1:name} {\n return ${2}\n }\n function set $1 (newValue) {\n ${3}\n }\nsnippet interface\n interface name {\n function method(${1}):${2:returntype};\n }\nsnippet try\n try {\n ${1}\n } catch (error:ErrorType) {\n ${2}\n } finally {\n ${3}\n }\n# For Loop (same as c.snippet)\nsnippet for for (..) {..}\n for (${2:i} = 0; $2 < ${1:count}; $2${3:++}) {\n ${4:/* code */}\n }\n# Custom For Loop\nsnippet forr\n for (${1:i} = ${2:0}; ${3:$1 < 10}; $1${4:++}) {\n ${5:/* code */}\n }\n# If Condition\nsnippet if\n if (${1:/* condition */}) {\n ${2:/* code */}\n }\nsnippet el\n else {\n ${1}\n }\n# Ternary conditional\nsnippet t\n ${1:/* condition */} ? ${2:a} : ${3:b}\nsnippet fun\n function ${1:function_name}(${2})${3}\n {\n ${4:/* code */}\n }\n# FlxSprite (usefull when using the flixel library)\nsnippet FlxSprite\n package\n {\n import org.flixel.*\n\n public class ${1:ClassName} extends ${2:FlxSprite}\n {\n public function $1(${3: X:Number, Y:Number}):void\n {\n super(X,Y);\n ${4: //code...}\n }\n\n override public function update():void\n {\n super.update();\n ${5: //code...}\n }\n }\n }\n\n',t.scope="actionscript"}) \ No newline at end of file
diff --git a/library/ace/snippets/ada.js b/library/ace/snippets/ada.js
new file mode 100644
index 000000000..65a1adc4c
--- /dev/null
+++ b/library/ace/snippets/ada.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/ada",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ada"}) \ No newline at end of file
diff --git a/library/ace/snippets/apache_conf.js b/library/ace/snippets/apache_conf.js
new file mode 100644
index 000000000..a4364ecdf
--- /dev/null
+++ b/library/ace/snippets/apache_conf.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/apache_conf",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="apache_conf"}) \ No newline at end of file
diff --git a/library/ace/snippets/applescript.js b/library/ace/snippets/applescript.js
new file mode 100644
index 000000000..d3a7cd598
--- /dev/null
+++ b/library/ace/snippets/applescript.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/applescript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="applescript"}) \ No newline at end of file
diff --git a/library/ace/snippets/asciidoc.js b/library/ace/snippets/asciidoc.js
new file mode 100644
index 000000000..ec76c4f39
--- /dev/null
+++ b/library/ace/snippets/asciidoc.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/asciidoc",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="asciidoc"}) \ No newline at end of file
diff --git a/library/ace/snippets/assembly_x86.js b/library/ace/snippets/assembly_x86.js
new file mode 100644
index 000000000..7c6e63224
--- /dev/null
+++ b/library/ace/snippets/assembly_x86.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/assembly_x86",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="assembly_x86"}) \ No newline at end of file
diff --git a/library/ace/snippets/autohotkey.js b/library/ace/snippets/autohotkey.js
new file mode 100644
index 000000000..0507ad922
--- /dev/null
+++ b/library/ace/snippets/autohotkey.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/autohotkey",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="autohotkey"}) \ No newline at end of file
diff --git a/library/ace/snippets/batchfile.js b/library/ace/snippets/batchfile.js
new file mode 100644
index 000000000..bffe14eb4
--- /dev/null
+++ b/library/ace/snippets/batchfile.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/batchfile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="batchfile"}) \ No newline at end of file
diff --git a/library/ace/snippets/c9search.js b/library/ace/snippets/c9search.js
new file mode 100644
index 000000000..0f455c179
--- /dev/null
+++ b/library/ace/snippets/c9search.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/c9search",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="c9search"}) \ No newline at end of file
diff --git a/library/ace/snippets/c_cpp.js b/library/ace/snippets/c_cpp.js
new file mode 100644
index 000000000..9fc5a5824
--- /dev/null
+++ b/library/ace/snippets/c_cpp.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/c_cpp",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="## STL Collections\n# std::array\nsnippet array\n std::array<${1:T}, ${2:N}> ${3};${4}\n# std::vector\nsnippet vector\n std::vector<${1:T}> ${2};${3}\n# std::deque\nsnippet deque\n std::deque<${1:T}> ${2};${3}\n# std::forward_list\nsnippet flist\n std::forward_list<${1:T}> ${2};${3}\n# std::list\nsnippet list\n std::list<${1:T}> ${2};${3}\n# std::set\nsnippet set\n std::set<${1:T}> ${2};${3}\n# std::map\nsnippet map\n std::map<${1:Key}, ${2:T}> ${3};${4}\n# std::multiset\nsnippet mset\n std::multiset<${1:T}> ${2};${3}\n# std::multimap\nsnippet mmap\n std::multimap<${1:Key}, ${2:T}> ${3};${4}\n# std::unordered_set\nsnippet uset\n std::unordered_set<${1:T}> ${2};${3}\n# std::unordered_map\nsnippet umap\n std::unordered_map<${1:Key}, ${2:T}> ${3};${4}\n# std::unordered_multiset\nsnippet umset\n std::unordered_multiset<${1:T}> ${2};${3}\n# std::unordered_multimap\nsnippet ummap\n std::unordered_multimap<${1:Key}, ${2:T}> ${3};${4}\n# std::stack\nsnippet stack\n std::stack<${1:T}> ${2};${3}\n# std::queue\nsnippet queue\n std::queue<${1:T}> ${2};${3}\n# std::priority_queue\nsnippet pqueue\n std::priority_queue<${1:T}> ${2};${3}\n##\n## Access Modifiers\n# private\nsnippet pri\n private\n# protected\nsnippet pro\n protected\n# public\nsnippet pub\n public\n# friend\nsnippet fr\n friend\n# mutable\nsnippet mu\n mutable\n## \n## Class\n# class\nsnippet cl\n class ${1:`Filename('$1', 'name')`} \n {\n public:\n $1(${2});\n ~$1();\n\n private:\n ${3:/* data */}\n };\n# member function implementation\nsnippet mfun\n ${4:void} ${1:`Filename('$1', 'ClassName')`}::${2:memberFunction}(${3}) {\n ${5:/* code */}\n }\n# namespace\nsnippet ns\n namespace ${1:`Filename('', 'my')`} {\n ${2}\n } /* namespace $1 */\n##\n## Input/Output\n# std::cout\nsnippet cout\n std::cout << ${1} << std::endl;${2}\n# std::cin\nsnippet cin\n std::cin >> ${1};${2}\n##\n## Iteration\n# for i \nsnippet fori\n for (int ${2:i} = 0; $2 < ${1:count}; $2${3:++}) {\n ${4:/* code */}\n }${5}\n\n# foreach\nsnippet fore\n for (${1:auto} ${2:i} : ${3:container}) {\n ${4:/* code */}\n }${5}\n# iterator\nsnippet iter\n for (${1:std::vector}<${2:type}>::${3:const_iterator} ${4:i} = ${5:container}.begin(); $4 != $5.end(); ++$4) {\n ${6}\n }${7}\n\n# auto iterator\nsnippet itera\n for (auto ${1:i} = $1.begin(); $1 != $1.end(); ++$1) {\n ${2:std::cout << *$1 << std::endl;}\n }${3}\n##\n## Lambdas\n# lamda (one line)\nsnippet ld\n [${1}](${2}){${3:/* code */}}${4}\n# lambda (multi-line)\nsnippet lld\n [${1}](${2}){\n ${3:/* code */}\n }${4}\n",t.scope="c_cpp"}) \ No newline at end of file
diff --git a/library/ace/snippets/cirru.js b/library/ace/snippets/cirru.js
new file mode 100644
index 000000000..8ecce1b5e
--- /dev/null
+++ b/library/ace/snippets/cirru.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/cirru",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="cirru"}) \ No newline at end of file
diff --git a/library/ace/snippets/clojure.js b/library/ace/snippets/clojure.js
new file mode 100644
index 000000000..3aebfa568
--- /dev/null
+++ b/library/ace/snippets/clojure.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/clojure",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet comm\n (comment\n ${1}\n )\nsnippet condp\n (condp ${1:pred} ${2:expr}\n ${3})\nsnippet def\n (def ${1})\nsnippet defm\n (defmethod ${1:multifn} "${2:doc-string}" ${3:dispatch-val} [${4:args}]\n ${5})\nsnippet defmm\n (defmulti ${1:name} "${2:doc-string}" ${3:dispatch-fn})\nsnippet defma\n (defmacro ${1:name} "${2:doc-string}" ${3:dispatch-fn})\nsnippet defn\n (defn ${1:name} "${2:doc-string}" [${3:arg-list}]\n ${4})\nsnippet defp\n (defprotocol ${1:name}\n ${2})\nsnippet defr\n (defrecord ${1:name} [${2:fields}]\n ${3:protocol}\n ${4})\nsnippet deft\n (deftest ${1:name}\n (is (= ${2:assertion})))\n ${3})\nsnippet is\n (is (= ${1} ${2}))\nsnippet defty\n (deftype ${1:Name} [${2:fields}]\n ${3:Protocol}\n ${4})\nsnippet doseq\n (doseq [${1:elem} ${2:coll}]\n ${3})\nsnippet fn\n (fn [${1:arg-list}] ${2})\nsnippet if\n (if ${1:test-expr}\n ${2:then-expr}\n ${3:else-expr})\nsnippet if-let \n (if-let [${1:result} ${2:test-expr}]\n (${3:then-expr} $1)\n (${4:else-expr}))\nsnippet imp\n (:import [${1:package}])\n & {:keys [${1:keys}] :or {${2:defaults}}}\nsnippet let\n (let [${1:name} ${2:expr}]\n ${3})\nsnippet letfn\n (letfn [(${1:name) [${2:args}]\n ${3})])\nsnippet map\n (map ${1:func} ${2:coll})\nsnippet mapl\n (map #(${1:lambda}) ${2:coll})\nsnippet met\n (${1:name} [${2:this} ${3:args}]\n ${4})\nsnippet ns\n (ns ${1:name}\n ${2})\nsnippet dotimes\n (dotimes [_ 10]\n (time\n (dotimes [_ ${1:times}]\n ${2})))\nsnippet pmethod\n (${1:name} [${2:this} ${3:args}])\nsnippet refer\n (:refer-clojure :exclude [${1}])\nsnippet require\n (:require [${1:namespace} :as [${2}]])\nsnippet use\n (:use [${1:namespace} :only [${2}]])\nsnippet print\n (println ${1})\nsnippet reduce\n (reduce ${1:(fn [p n] ${3})} ${2})\nsnippet when\n (when ${1:test} ${2:body})\nsnippet when-let\n (when-let [${1:result} ${2:test}]\n ${3:body})\n',t.scope="clojure"}) \ No newline at end of file
diff --git a/library/ace/snippets/cobol.js b/library/ace/snippets/cobol.js
new file mode 100644
index 000000000..f95742734
--- /dev/null
+++ b/library/ace/snippets/cobol.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/cobol",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="cobol"}) \ No newline at end of file
diff --git a/library/ace/snippets/coffee.js b/library/ace/snippets/coffee.js
new file mode 100644
index 000000000..ac1b7304d
--- /dev/null
+++ b/library/ace/snippets/coffee.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/coffee",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# Closure loop\nsnippet forindo\n for ${1:name} in ${2:array}\n do ($1) ->\n ${3:// body}\n# Array comprehension\nsnippet fora\n for ${1:name} in ${2:array}\n ${3:// body...}\n# Object comprehension\nsnippet foro\n for ${1:key}, ${2:value} of ${3:object}\n ${4:// body...}\n# Range comprehension (inclusive)\nsnippet forr\n for ${1:name} in [${2:start}..${3:finish}]\n ${4:// body...}\nsnippet forrb\n for ${1:name} in [${2:start}..${3:finish}] by ${4:step}\n ${5:// body...}\n# Range comprehension (exclusive)\nsnippet forrex\n for ${1:name} in [${2:start}...${3:finish}]\n ${4:// body...}\nsnippet forrexb\n for ${1:name} in [${2:start}...${3:finish}] by ${4:step}\n ${5:// body...}\n# Function\nsnippet fun\n (${1:args}) ->\n ${2:// body...}\n# Function (bound)\nsnippet bfun\n (${1:args}) =>\n ${2:// body...}\n# Class\nsnippet cla class ..\n class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n ${2}\nsnippet cla class .. constructor: ..\n class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n constructor: (${2:args}) ->\n ${3}\n\n ${4}\nsnippet cla class .. extends ..\n class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} extends ${2:ParentClass}\n ${3}\nsnippet cla class .. extends .. constructor: ..\n class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} extends ${2:ParentClass}\n constructor: (${3:args}) ->\n ${4}\n\n ${5}\n# If\nsnippet if\n if ${1:condition}\n ${2:// body...}\n# If __ Else\nsnippet ife\n if ${1:condition}\n ${2:// body...}\n else\n ${3:// body...}\n# Else if\nsnippet elif\n else if ${1:condition}\n ${2:// body...}\n# Ternary If\nsnippet ifte\n if ${1:condition} then ${2:value} else ${3:other}\n# Unless\nsnippet unl\n ${1:action} unless ${2:condition}\n# Switch\nsnippet swi\n switch ${1:object}\n when ${2:value}\n ${3:// body...}\n\n# Log\nsnippet log\n console.log ${1}\n# Try __ Catch\nsnippet try\n try\n ${1}\n catch ${2:error}\n ${3}\n# Require\nsnippet req\n ${2:$1} = require '${1:sys}'${3}\n# Export\nsnippet exp\n ${1:root} = exports ? this\n",t.scope="coffee"}) \ No newline at end of file
diff --git a/library/ace/snippets/coldfusion.js b/library/ace/snippets/coldfusion.js
new file mode 100644
index 000000000..5342f2f96
--- /dev/null
+++ b/library/ace/snippets/coldfusion.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/coldfusion",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="coldfusion"}) \ No newline at end of file
diff --git a/library/ace/snippets/csharp.js b/library/ace/snippets/csharp.js
new file mode 100644
index 000000000..9805077ae
--- /dev/null
+++ b/library/ace/snippets/csharp.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/csharp",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="csharp"}) \ No newline at end of file
diff --git a/library/ace/snippets/css.js b/library/ace/snippets/css.js
new file mode 100644
index 000000000..9659ba49b
--- /dev/null
+++ b/library/ace/snippets/css.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/css",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet .\n ${1} {\n ${2}\n }\nsnippet !\n !important\nsnippet bdi:m+\n -moz-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:m\n -moz-border-image: ${1};\nsnippet bdrz:m\n -moz-border-radius: ${1};\nsnippet bxsh:m+\n -moz-box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh:m\n -moz-box-shadow: ${1};\nsnippet bdi:w+\n -webkit-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:w\n -webkit-border-image: ${1};\nsnippet bdrz:w\n -webkit-border-radius: ${1};\nsnippet bxsh:w+\n -webkit-box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh:w\n -webkit-box-shadow: ${1};\nsnippet @f\n @font-face {\n font-family: ${1};\n src: url(${2});\n }\nsnippet @i\n @import url(${1});\nsnippet @m\n @media ${1:print} {\n ${2}\n }\nsnippet bg+\n background: #${1:FFF} url(${2}) ${3:0} ${4:0} ${5:no-repeat};\nsnippet bga\n background-attachment: ${1};\nsnippet bga:f\n background-attachment: fixed;\nsnippet bga:s\n background-attachment: scroll;\nsnippet bgbk\n background-break: ${1};\nsnippet bgbk:bb\n background-break: bounding-box;\nsnippet bgbk:c\n background-break: continuous;\nsnippet bgbk:eb\n background-break: each-box;\nsnippet bgcp\n background-clip: ${1};\nsnippet bgcp:bb\n background-clip: border-box;\nsnippet bgcp:cb\n background-clip: content-box;\nsnippet bgcp:nc\n background-clip: no-clip;\nsnippet bgcp:pb\n background-clip: padding-box;\nsnippet bgc\n background-color: #${1:FFF};\nsnippet bgc:t\n background-color: transparent;\nsnippet bgi\n background-image: url(${1});\nsnippet bgi:n\n background-image: none;\nsnippet bgo\n background-origin: ${1};\nsnippet bgo:bb\n background-origin: border-box;\nsnippet bgo:cb\n background-origin: content-box;\nsnippet bgo:pb\n background-origin: padding-box;\nsnippet bgpx\n background-position-x: ${1};\nsnippet bgpy\n background-position-y: ${1};\nsnippet bgp\n background-position: ${1:0} ${2:0};\nsnippet bgr\n background-repeat: ${1};\nsnippet bgr:n\n background-repeat: no-repeat;\nsnippet bgr:x\n background-repeat: repeat-x;\nsnippet bgr:y\n background-repeat: repeat-y;\nsnippet bgr:r\n background-repeat: repeat;\nsnippet bgz\n background-size: ${1};\nsnippet bgz:a\n background-size: auto;\nsnippet bgz:ct\n background-size: contain;\nsnippet bgz:cv\n background-size: cover;\nsnippet bg\n background: ${1};\nsnippet bg:ie\n filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='${1}',sizingMethod='${2:crop}');\nsnippet bg:n\n background: none;\nsnippet bd+\n border: ${1:1px} ${2:solid} #${3:000};\nsnippet bdb+\n border-bottom: ${1:1px} ${2:solid} #${3:000};\nsnippet bdbc\n border-bottom-color: #${1:000};\nsnippet bdbi\n border-bottom-image: url(${1});\nsnippet bdbi:n\n border-bottom-image: none;\nsnippet bdbli\n border-bottom-left-image: url(${1});\nsnippet bdbli:c\n border-bottom-left-image: continue;\nsnippet bdbli:n\n border-bottom-left-image: none;\nsnippet bdblrz\n border-bottom-left-radius: ${1};\nsnippet bdbri\n border-bottom-right-image: url(${1});\nsnippet bdbri:c\n border-bottom-right-image: continue;\nsnippet bdbri:n\n border-bottom-right-image: none;\nsnippet bdbrrz\n border-bottom-right-radius: ${1};\nsnippet bdbs\n border-bottom-style: ${1};\nsnippet bdbs:n\n border-bottom-style: none;\nsnippet bdbw\n border-bottom-width: ${1};\nsnippet bdb\n border-bottom: ${1};\nsnippet bdb:n\n border-bottom: none;\nsnippet bdbk\n border-break: ${1};\nsnippet bdbk:c\n border-break: close;\nsnippet bdcl\n border-collapse: ${1};\nsnippet bdcl:c\n border-collapse: collapse;\nsnippet bdcl:s\n border-collapse: separate;\nsnippet bdc\n border-color: #${1:000};\nsnippet bdci\n border-corner-image: url(${1});\nsnippet bdci:c\n border-corner-image: continue;\nsnippet bdci:n\n border-corner-image: none;\nsnippet bdf\n border-fit: ${1};\nsnippet bdf:c\n border-fit: clip;\nsnippet bdf:of\n border-fit: overwrite;\nsnippet bdf:ow\n border-fit: overwrite;\nsnippet bdf:r\n border-fit: repeat;\nsnippet bdf:sc\n border-fit: scale;\nsnippet bdf:sp\n border-fit: space;\nsnippet bdf:st\n border-fit: stretch;\nsnippet bdi\n border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:n\n border-image: none;\nsnippet bdl+\n border-left: ${1:1px} ${2:solid} #${3:000};\nsnippet bdlc\n border-left-color: #${1:000};\nsnippet bdli\n border-left-image: url(${1});\nsnippet bdli:n\n border-left-image: none;\nsnippet bdls\n border-left-style: ${1};\nsnippet bdls:n\n border-left-style: none;\nsnippet bdlw\n border-left-width: ${1};\nsnippet bdl\n border-left: ${1};\nsnippet bdl:n\n border-left: none;\nsnippet bdlt\n border-length: ${1};\nsnippet bdlt:a\n border-length: auto;\nsnippet bdrz\n border-radius: ${1};\nsnippet bdr+\n border-right: ${1:1px} ${2:solid} #${3:000};\nsnippet bdrc\n border-right-color: #${1:000};\nsnippet bdri\n border-right-image: url(${1});\nsnippet bdri:n\n border-right-image: none;\nsnippet bdrs\n border-right-style: ${1};\nsnippet bdrs:n\n border-right-style: none;\nsnippet bdrw\n border-right-width: ${1};\nsnippet bdr\n border-right: ${1};\nsnippet bdr:n\n border-right: none;\nsnippet bdsp\n border-spacing: ${1};\nsnippet bds\n border-style: ${1};\nsnippet bds:ds\n border-style: dashed;\nsnippet bds:dtds\n border-style: dot-dash;\nsnippet bds:dtdtds\n border-style: dot-dot-dash;\nsnippet bds:dt\n border-style: dotted;\nsnippet bds:db\n border-style: double;\nsnippet bds:g\n border-style: groove;\nsnippet bds:h\n border-style: hidden;\nsnippet bds:i\n border-style: inset;\nsnippet bds:n\n border-style: none;\nsnippet bds:o\n border-style: outset;\nsnippet bds:r\n border-style: ridge;\nsnippet bds:s\n border-style: solid;\nsnippet bds:w\n border-style: wave;\nsnippet bdt+\n border-top: ${1:1px} ${2:solid} #${3:000};\nsnippet bdtc\n border-top-color: #${1:000};\nsnippet bdti\n border-top-image: url(${1});\nsnippet bdti:n\n border-top-image: none;\nsnippet bdtli\n border-top-left-image: url(${1});\nsnippet bdtli:c\n border-corner-image: continue;\nsnippet bdtli:n\n border-corner-image: none;\nsnippet bdtlrz\n border-top-left-radius: ${1};\nsnippet bdtri\n border-top-right-image: url(${1});\nsnippet bdtri:c\n border-top-right-image: continue;\nsnippet bdtri:n\n border-top-right-image: none;\nsnippet bdtrrz\n border-top-right-radius: ${1};\nsnippet bdts\n border-top-style: ${1};\nsnippet bdts:n\n border-top-style: none;\nsnippet bdtw\n border-top-width: ${1};\nsnippet bdt\n border-top: ${1};\nsnippet bdt:n\n border-top: none;\nsnippet bdw\n border-width: ${1};\nsnippet bd\n border: ${1};\nsnippet bd:n\n border: none;\nsnippet b\n bottom: ${1};\nsnippet b:a\n bottom: auto;\nsnippet bxsh+\n box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh\n box-shadow: ${1};\nsnippet bxsh:n\n box-shadow: none;\nsnippet bxz\n box-sizing: ${1};\nsnippet bxz:bb\n box-sizing: border-box;\nsnippet bxz:cb\n box-sizing: content-box;\nsnippet cps\n caption-side: ${1};\nsnippet cps:b\n caption-side: bottom;\nsnippet cps:t\n caption-side: top;\nsnippet cl\n clear: ${1};\nsnippet cl:b\n clear: both;\nsnippet cl:l\n clear: left;\nsnippet cl:n\n clear: none;\nsnippet cl:r\n clear: right;\nsnippet cp\n clip: ${1};\nsnippet cp:a\n clip: auto;\nsnippet cp:r\n clip: rect(${1:0} ${2:0} ${3:0} ${4:0});\nsnippet c\n color: #${1:000};\nsnippet ct\n content: ${1};\nsnippet ct:a\n content: attr(${1});\nsnippet ct:cq\n content: close-quote;\nsnippet ct:c\n content: counter(${1});\nsnippet ct:cs\n content: counters(${1});\nsnippet ct:ncq\n content: no-close-quote;\nsnippet ct:noq\n content: no-open-quote;\nsnippet ct:n\n content: normal;\nsnippet ct:oq\n content: open-quote;\nsnippet coi\n counter-increment: ${1};\nsnippet cor\n counter-reset: ${1};\nsnippet cur\n cursor: ${1};\nsnippet cur:a\n cursor: auto;\nsnippet cur:c\n cursor: crosshair;\nsnippet cur:d\n cursor: default;\nsnippet cur:ha\n cursor: hand;\nsnippet cur:he\n cursor: help;\nsnippet cur:m\n cursor: move;\nsnippet cur:p\n cursor: pointer;\nsnippet cur:t\n cursor: text;\nsnippet d\n display: ${1};\nsnippet d:mib\n display: -moz-inline-box;\nsnippet d:mis\n display: -moz-inline-stack;\nsnippet d:b\n display: block;\nsnippet d:cp\n display: compact;\nsnippet d:ib\n display: inline-block;\nsnippet d:itb\n display: inline-table;\nsnippet d:i\n display: inline;\nsnippet d:li\n display: list-item;\nsnippet d:n\n display: none;\nsnippet d:ri\n display: run-in;\nsnippet d:tbcp\n display: table-caption;\nsnippet d:tbc\n display: table-cell;\nsnippet d:tbclg\n display: table-column-group;\nsnippet d:tbcl\n display: table-column;\nsnippet d:tbfg\n display: table-footer-group;\nsnippet d:tbhg\n display: table-header-group;\nsnippet d:tbrg\n display: table-row-group;\nsnippet d:tbr\n display: table-row;\nsnippet d:tb\n display: table;\nsnippet ec\n empty-cells: ${1};\nsnippet ec:h\n empty-cells: hide;\nsnippet ec:s\n empty-cells: show;\nsnippet exp\n expression()\nsnippet fl\n float: ${1};\nsnippet fl:l\n float: left;\nsnippet fl:n\n float: none;\nsnippet fl:r\n float: right;\nsnippet f+\n font: ${1:1em} ${2:Arial},${3:sans-serif};\nsnippet fef\n font-effect: ${1};\nsnippet fef:eb\n font-effect: emboss;\nsnippet fef:eg\n font-effect: engrave;\nsnippet fef:n\n font-effect: none;\nsnippet fef:o\n font-effect: outline;\nsnippet femp\n font-emphasize-position: ${1};\nsnippet femp:a\n font-emphasize-position: after;\nsnippet femp:b\n font-emphasize-position: before;\nsnippet fems\n font-emphasize-style: ${1};\nsnippet fems:ac\n font-emphasize-style: accent;\nsnippet fems:c\n font-emphasize-style: circle;\nsnippet fems:ds\n font-emphasize-style: disc;\nsnippet fems:dt\n font-emphasize-style: dot;\nsnippet fems:n\n font-emphasize-style: none;\nsnippet fem\n font-emphasize: ${1};\nsnippet ff\n font-family: ${1};\nsnippet ff:c\n font-family: ${1:'Monotype Corsiva','Comic Sans MS'},cursive;\nsnippet ff:f\n font-family: ${1:Capitals,Impact},fantasy;\nsnippet ff:m\n font-family: ${1:Monaco,'Courier New'},monospace;\nsnippet ff:ss\n font-family: ${1:Helvetica,Arial},sans-serif;\nsnippet ff:s\n font-family: ${1:Georgia,'Times New Roman'},serif;\nsnippet fza\n font-size-adjust: ${1};\nsnippet fza:n\n font-size-adjust: none;\nsnippet fz\n font-size: ${1};\nsnippet fsm\n font-smooth: ${1};\nsnippet fsm:aw\n font-smooth: always;\nsnippet fsm:a\n font-smooth: auto;\nsnippet fsm:n\n font-smooth: never;\nsnippet fst\n font-stretch: ${1};\nsnippet fst:c\n font-stretch: condensed;\nsnippet fst:e\n font-stretch: expanded;\nsnippet fst:ec\n font-stretch: extra-condensed;\nsnippet fst:ee\n font-stretch: extra-expanded;\nsnippet fst:n\n font-stretch: normal;\nsnippet fst:sc\n font-stretch: semi-condensed;\nsnippet fst:se\n font-stretch: semi-expanded;\nsnippet fst:uc\n font-stretch: ultra-condensed;\nsnippet fst:ue\n font-stretch: ultra-expanded;\nsnippet fs\n font-style: ${1};\nsnippet fs:i\n font-style: italic;\nsnippet fs:n\n font-style: normal;\nsnippet fs:o\n font-style: oblique;\nsnippet fv\n font-variant: ${1};\nsnippet fv:n\n font-variant: normal;\nsnippet fv:sc\n font-variant: small-caps;\nsnippet fw\n font-weight: ${1};\nsnippet fw:b\n font-weight: bold;\nsnippet fw:br\n font-weight: bolder;\nsnippet fw:lr\n font-weight: lighter;\nsnippet fw:n\n font-weight: normal;\nsnippet f\n font: ${1};\nsnippet h\n height: ${1};\nsnippet h:a\n height: auto;\nsnippet l\n left: ${1};\nsnippet l:a\n left: auto;\nsnippet lts\n letter-spacing: ${1};\nsnippet lh\n line-height: ${1};\nsnippet lisi\n list-style-image: url(${1});\nsnippet lisi:n\n list-style-image: none;\nsnippet lisp\n list-style-position: ${1};\nsnippet lisp:i\n list-style-position: inside;\nsnippet lisp:o\n list-style-position: outside;\nsnippet list\n list-style-type: ${1};\nsnippet list:c\n list-style-type: circle;\nsnippet list:dclz\n list-style-type: decimal-leading-zero;\nsnippet list:dc\n list-style-type: decimal;\nsnippet list:d\n list-style-type: disc;\nsnippet list:lr\n list-style-type: lower-roman;\nsnippet list:n\n list-style-type: none;\nsnippet list:s\n list-style-type: square;\nsnippet list:ur\n list-style-type: upper-roman;\nsnippet lis\n list-style: ${1};\nsnippet lis:n\n list-style: none;\nsnippet mb\n margin-bottom: ${1};\nsnippet mb:a\n margin-bottom: auto;\nsnippet ml\n margin-left: ${1};\nsnippet ml:a\n margin-left: auto;\nsnippet mr\n margin-right: ${1};\nsnippet mr:a\n margin-right: auto;\nsnippet mt\n margin-top: ${1};\nsnippet mt:a\n margin-top: auto;\nsnippet m\n margin: ${1};\nsnippet m:4\n margin: ${1:0} ${2:0} ${3:0} ${4:0};\nsnippet m:3\n margin: ${1:0} ${2:0} ${3:0};\nsnippet m:2\n margin: ${1:0} ${2:0};\nsnippet m:0\n margin: 0;\nsnippet m:a\n margin: auto;\nsnippet mah\n max-height: ${1};\nsnippet mah:n\n max-height: none;\nsnippet maw\n max-width: ${1};\nsnippet maw:n\n max-width: none;\nsnippet mih\n min-height: ${1};\nsnippet miw\n min-width: ${1};\nsnippet op\n opacity: ${1};\nsnippet op:ie\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100});\nsnippet op:ms\n -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100})';\nsnippet orp\n orphans: ${1};\nsnippet o+\n outline: ${1:1px} ${2:solid} #${3:000};\nsnippet oc\n outline-color: ${1:#000};\nsnippet oc:i\n outline-color: invert;\nsnippet oo\n outline-offset: ${1};\nsnippet os\n outline-style: ${1};\nsnippet ow\n outline-width: ${1};\nsnippet o\n outline: ${1};\nsnippet o:n\n outline: none;\nsnippet ovs\n overflow-style: ${1};\nsnippet ovs:a\n overflow-style: auto;\nsnippet ovs:mq\n overflow-style: marquee;\nsnippet ovs:mv\n overflow-style: move;\nsnippet ovs:p\n overflow-style: panner;\nsnippet ovs:s\n overflow-style: scrollbar;\nsnippet ovx\n overflow-x: ${1};\nsnippet ovx:a\n overflow-x: auto;\nsnippet ovx:h\n overflow-x: hidden;\nsnippet ovx:s\n overflow-x: scroll;\nsnippet ovx:v\n overflow-x: visible;\nsnippet ovy\n overflow-y: ${1};\nsnippet ovy:a\n overflow-y: auto;\nsnippet ovy:h\n overflow-y: hidden;\nsnippet ovy:s\n overflow-y: scroll;\nsnippet ovy:v\n overflow-y: visible;\nsnippet ov\n overflow: ${1};\nsnippet ov:a\n overflow: auto;\nsnippet ov:h\n overflow: hidden;\nsnippet ov:s\n overflow: scroll;\nsnippet ov:v\n overflow: visible;\nsnippet pb\n padding-bottom: ${1};\nsnippet pl\n padding-left: ${1};\nsnippet pr\n padding-right: ${1};\nsnippet pt\n padding-top: ${1};\nsnippet p\n padding: ${1};\nsnippet p:4\n padding: ${1:0} ${2:0} ${3:0} ${4:0};\nsnippet p:3\n padding: ${1:0} ${2:0} ${3:0};\nsnippet p:2\n padding: ${1:0} ${2:0};\nsnippet p:0\n padding: 0;\nsnippet pgba\n page-break-after: ${1};\nsnippet pgba:aw\n page-break-after: always;\nsnippet pgba:a\n page-break-after: auto;\nsnippet pgba:l\n page-break-after: left;\nsnippet pgba:r\n page-break-after: right;\nsnippet pgbb\n page-break-before: ${1};\nsnippet pgbb:aw\n page-break-before: always;\nsnippet pgbb:a\n page-break-before: auto;\nsnippet pgbb:l\n page-break-before: left;\nsnippet pgbb:r\n page-break-before: right;\nsnippet pgbi\n page-break-inside: ${1};\nsnippet pgbi:a\n page-break-inside: auto;\nsnippet pgbi:av\n page-break-inside: avoid;\nsnippet pos\n position: ${1};\nsnippet pos:a\n position: absolute;\nsnippet pos:f\n position: fixed;\nsnippet pos:r\n position: relative;\nsnippet pos:s\n position: static;\nsnippet q\n quotes: ${1};\nsnippet q:en\n quotes: '\\201C' '\\201D' '\\2018' '\\2019';\nsnippet q:n\n quotes: none;\nsnippet q:ru\n quotes: '\\00AB' '\\00BB' '\\201E' '\\201C';\nsnippet rz\n resize: ${1};\nsnippet rz:b\n resize: both;\nsnippet rz:h\n resize: horizontal;\nsnippet rz:n\n resize: none;\nsnippet rz:v\n resize: vertical;\nsnippet r\n right: ${1};\nsnippet r:a\n right: auto;\nsnippet tbl\n table-layout: ${1};\nsnippet tbl:a\n table-layout: auto;\nsnippet tbl:f\n table-layout: fixed;\nsnippet tal\n text-align-last: ${1};\nsnippet tal:a\n text-align-last: auto;\nsnippet tal:c\n text-align-last: center;\nsnippet tal:l\n text-align-last: left;\nsnippet tal:r\n text-align-last: right;\nsnippet ta\n text-align: ${1};\nsnippet ta:c\n text-align: center;\nsnippet ta:l\n text-align: left;\nsnippet ta:r\n text-align: right;\nsnippet td\n text-decoration: ${1};\nsnippet td:l\n text-decoration: line-through;\nsnippet td:n\n text-decoration: none;\nsnippet td:o\n text-decoration: overline;\nsnippet td:u\n text-decoration: underline;\nsnippet te\n text-emphasis: ${1};\nsnippet te:ac\n text-emphasis: accent;\nsnippet te:a\n text-emphasis: after;\nsnippet te:b\n text-emphasis: before;\nsnippet te:c\n text-emphasis: circle;\nsnippet te:ds\n text-emphasis: disc;\nsnippet te:dt\n text-emphasis: dot;\nsnippet te:n\n text-emphasis: none;\nsnippet th\n text-height: ${1};\nsnippet th:a\n text-height: auto;\nsnippet th:f\n text-height: font-size;\nsnippet th:m\n text-height: max-size;\nsnippet th:t\n text-height: text-size;\nsnippet ti\n text-indent: ${1};\nsnippet ti:-\n text-indent: -9999px;\nsnippet tj\n text-justify: ${1};\nsnippet tj:a\n text-justify: auto;\nsnippet tj:d\n text-justify: distribute;\nsnippet tj:ic\n text-justify: inter-cluster;\nsnippet tj:ii\n text-justify: inter-ideograph;\nsnippet tj:iw\n text-justify: inter-word;\nsnippet tj:k\n text-justify: kashida;\nsnippet tj:t\n text-justify: tibetan;\nsnippet to+\n text-outline: ${1:0} ${2:0} #${3:000};\nsnippet to\n text-outline: ${1};\nsnippet to:n\n text-outline: none;\nsnippet tr\n text-replace: ${1};\nsnippet tr:n\n text-replace: none;\nsnippet tsh+\n text-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet tsh\n text-shadow: ${1};\nsnippet tsh:n\n text-shadow: none;\nsnippet tt\n text-transform: ${1};\nsnippet tt:c\n text-transform: capitalize;\nsnippet tt:l\n text-transform: lowercase;\nsnippet tt:n\n text-transform: none;\nsnippet tt:u\n text-transform: uppercase;\nsnippet tw\n text-wrap: ${1};\nsnippet tw:no\n text-wrap: none;\nsnippet tw:n\n text-wrap: normal;\nsnippet tw:s\n text-wrap: suppress;\nsnippet tw:u\n text-wrap: unrestricted;\nsnippet t\n top: ${1};\nsnippet t:a\n top: auto;\nsnippet va\n vertical-align: ${1};\nsnippet va:bl\n vertical-align: baseline;\nsnippet va:b\n vertical-align: bottom;\nsnippet va:m\n vertical-align: middle;\nsnippet va:sub\n vertical-align: sub;\nsnippet va:sup\n vertical-align: super;\nsnippet va:tb\n vertical-align: text-bottom;\nsnippet va:tt\n vertical-align: text-top;\nsnippet va:t\n vertical-align: top;\nsnippet v\n visibility: ${1};\nsnippet v:c\n visibility: collapse;\nsnippet v:h\n visibility: hidden;\nsnippet v:v\n visibility: visible;\nsnippet whsc\n white-space-collapse: ${1};\nsnippet whsc:ba\n white-space-collapse: break-all;\nsnippet whsc:bs\n white-space-collapse: break-strict;\nsnippet whsc:k\n white-space-collapse: keep-all;\nsnippet whsc:l\n white-space-collapse: loose;\nsnippet whsc:n\n white-space-collapse: normal;\nsnippet whs\n white-space: ${1};\nsnippet whs:n\n white-space: normal;\nsnippet whs:nw\n white-space: nowrap;\nsnippet whs:pl\n white-space: pre-line;\nsnippet whs:pw\n white-space: pre-wrap;\nsnippet whs:p\n white-space: pre;\nsnippet wid\n widows: ${1};\nsnippet w\n width: ${1};\nsnippet w:a\n width: auto;\nsnippet wob\n word-break: ${1};\nsnippet wob:ba\n word-break: break-all;\nsnippet wob:bs\n word-break: break-strict;\nsnippet wob:k\n word-break: keep-all;\nsnippet wob:l\n word-break: loose;\nsnippet wob:n\n word-break: normal;\nsnippet wos\n word-spacing: ${1};\nsnippet wow\n word-wrap: ${1};\nsnippet wow:no\n word-wrap: none;\nsnippet wow:n\n word-wrap: normal;\nsnippet wow:s\n word-wrap: suppress;\nsnippet wow:u\n word-wrap: unrestricted;\nsnippet z\n z-index: ${1};\nsnippet z:a\n z-index: auto;\nsnippet zoo\n zoom: 1;\n",t.scope="css"}) \ No newline at end of file
diff --git a/library/ace/snippets/curly.js b/library/ace/snippets/curly.js
new file mode 100644
index 000000000..6bb5604e0
--- /dev/null
+++ b/library/ace/snippets/curly.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/curly",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="curly"}) \ No newline at end of file
diff --git a/library/ace/snippets/d.js b/library/ace/snippets/d.js
new file mode 100644
index 000000000..1057608da
--- /dev/null
+++ b/library/ace/snippets/d.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/d",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="d"}) \ No newline at end of file
diff --git a/library/ace/snippets/dart.js b/library/ace/snippets/dart.js
new file mode 100644
index 000000000..63c63c9fc
--- /dev/null
+++ b/library/ace/snippets/dart.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/dart",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet lib\n library ${1};\n ${2}\nsnippet im\n import '${1}';\n ${2}\nsnippet pa\n part '${1}';\n ${2}\nsnippet pao\n part of ${1};\n ${2}\nsnippet main\n void main() {\n ${1:/* code */}\n }\nsnippet st\n static ${1}\nsnippet fi\n final ${1}\nsnippet re\n return ${1}\nsnippet br\n break;\nsnippet th\n throw ${1}\nsnippet cl\n class ${1:`Filename(\"\", \"untitled\")`} ${2}\nsnippet imp\n implements ${1}\nsnippet ext\n extends ${1}\nsnippet if\n if (${1:true}) {\n ${2}\n }\nsnippet ife\n if (${1:true}) {\n ${2}\n } else {\n ${3}\n }\nsnippet el\n else\nsnippet sw\n switch (${1}) {\n ${2}\n }\nsnippet cs\n case ${1}:\n ${2}\nsnippet de\n default:\n ${1}\nsnippet for\n for (var ${2:i} = 0, len = ${1:things}.length; $2 < len; ${3:++}$2) {\n ${4:$1[$2]}\n }\nsnippet fore\n for (final ${2:item} in ${1:itemList}) {\n ${3:/* code */}\n }\nsnippet wh\n while (${1:/* condition */}) {\n ${2:/* code */}\n }\nsnippet dowh\n do {\n ${2:/* code */}\n } while (${1:/* condition */});\nsnippet as\n assert(${1:/* condition */});\nsnippet try\n try {\n ${2}\n } catch (${1:Exception e}) {\n }\nsnippet tryf\n try {\n ${2}\n } catch (${1:Exception e}) {\n } finally {\n }\n",t.scope="dart"}) \ No newline at end of file
diff --git a/library/ace/snippets/diff.js b/library/ace/snippets/diff.js
new file mode 100644
index 000000000..493c0e9a3
--- /dev/null
+++ b/library/ace/snippets/diff.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/diff",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# DEP-3 (http://dep.debian.net/deps/dep3/) style patch header\nsnippet header DEP-3 style header\n Description: ${1}\n Origin: ${2:vendor|upstream|other}, ${3:url of the original patch}\n Bug: ${4:url in upstream bugtracker}\n Forwarded: ${5:no|not-needed|url}\n Author: ${6:`g:snips_author`}\n Reviewed-by: ${7:name and email}\n Last-Update: ${8:`strftime("%Y-%m-%d")`}\n Applied-Upstream: ${9:upstream version|url|commit}\n\n',t.scope="diff"}) \ No newline at end of file
diff --git a/library/ace/snippets/django.js b/library/ace/snippets/django.js
new file mode 100644
index 000000000..d0f67a6c6
--- /dev/null
+++ b/library/ace/snippets/django.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/django",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# Model Fields\n\n# Note: Optional arguments are using defaults that match what Django will use\n# as a default, e.g. with max_length fields. Doing this as a form of self\n# documentation and to make it easy to know whether you should override the\n# default or not.\n\n# Note: Optional arguments that are booleans will use the opposite since you\n# can either not specify them, or override them, e.g. auto_now_add=False.\n\nsnippet auto\n ${1:FIELDNAME} = models.AutoField(${2})\nsnippet bool\n ${1:FIELDNAME} = models.BooleanField(${2:default=True})\nsnippet char\n ${1:FIELDNAME} = models.CharField(max_length=${2}${3:, blank=True})\nsnippet comma\n ${1:FIELDNAME} = models.CommaSeparatedIntegerField(max_length=${2}${3:, blank=True})\nsnippet date\n ${1:FIELDNAME} = models.DateField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\nsnippet datetime\n ${1:FIELDNAME} = models.DateTimeField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\nsnippet decimal\n ${1:FIELDNAME} = models.DecimalField(max_digits=${2}, decimal_places=${3})\nsnippet email\n ${1:FIELDNAME} = models.EmailField(max_length=${2:75}${3:, blank=True})\nsnippet file\n ${1:FIELDNAME} = models.FileField(upload_to=${2:path/for/upload}${3:, max_length=100})\nsnippet filepath\n ${1:FIELDNAME} = models.FilePathField(path=${2:\"/abs/path/to/dir\"}${3:, max_length=100}${4:, match=\"*.ext\"}${5:, recursive=True}${6:, blank=True, })\nsnippet float\n ${1:FIELDNAME} = models.FloatField(${2})\nsnippet image\n ${1:FIELDNAME} = models.ImageField(upload_to=${2:path/for/upload}${3:, height_field=height, width_field=width}${4:, max_length=100})\nsnippet int\n ${1:FIELDNAME} = models.IntegerField(${2})\nsnippet ip\n ${1:FIELDNAME} = models.IPAddressField(${2})\nsnippet nullbool\n ${1:FIELDNAME} = models.NullBooleanField(${2})\nsnippet posint\n ${1:FIELDNAME} = models.PositiveIntegerField(${2})\nsnippet possmallint\n ${1:FIELDNAME} = models.PositiveSmallIntegerField(${2})\nsnippet slug\n ${1:FIELDNAME} = models.SlugField(max_length=${2:50}${3:, blank=True})\nsnippet smallint\n ${1:FIELDNAME} = models.SmallIntegerField(${2})\nsnippet text\n ${1:FIELDNAME} = models.TextField(${2:blank=True})\nsnippet time\n ${1:FIELDNAME} = models.TimeField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\nsnippet url\n ${1:FIELDNAME} = models.URLField(${2:verify_exists=False}${3:, max_length=200}${4:, blank=True})\nsnippet xml\n ${1:FIELDNAME} = models.XMLField(schema_path=${2:None}${3:, blank=True})\n# Relational Fields\nsnippet fk\n ${1:FIELDNAME} = models.ForeignKey(${2:OtherModel}${3:, related_name=''}${4:, limit_choices_to=}${5:, to_field=''})\nsnippet m2m\n ${1:FIELDNAME} = models.ManyToManyField(${2:OtherModel}${3:, related_name=''}${4:, limit_choices_to=}${5:, symmetrical=False}${6:, through=''}${7:, db_table=''})\nsnippet o2o\n ${1:FIELDNAME} = models.OneToOneField(${2:OtherModel}${3:, parent_link=True}${4:, related_name=''}${5:, limit_choices_to=}${6:, to_field=''})\n\n# Code Skeletons\n\nsnippet form\n class ${1:FormName}(forms.Form):\n \"\"\"${2:docstring}\"\"\"\n ${3}\n\nsnippet model\n class ${1:ModelName}(models.Model):\n \"\"\"${2:docstring}\"\"\"\n ${3}\n \n class Meta:\n ${4}\n \n def __unicode__(self):\n ${5}\n \n def save(self, force_insert=False, force_update=False):\n ${6}\n \n @models.permalink\n def get_absolute_url(self):\n return ('${7:view_or_url_name}' ${8})\n\nsnippet modeladmin\n class ${1:ModelName}Admin(admin.ModelAdmin):\n ${2}\n \n admin.site.register($1, $1Admin)\n \nsnippet tabularinline\n class ${1:ModelName}Inline(admin.TabularInline):\n model = $1\n\nsnippet stackedinline\n class ${1:ModelName}Inline(admin.StackedInline):\n model = $1\n\nsnippet r2r\n return render_to_response('${1:template.html}', {\n ${2}\n }${3:, context_instance=RequestContext(request)}\n )\n",t.scope="django"}) \ No newline at end of file
diff --git a/library/ace/snippets/dockerfile.js b/library/ace/snippets/dockerfile.js
new file mode 100644
index 000000000..0c2742020
--- /dev/null
+++ b/library/ace/snippets/dockerfile.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/dockerfile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="dockerfile"}) \ No newline at end of file
diff --git a/library/ace/snippets/dot.js b/library/ace/snippets/dot.js
new file mode 100644
index 000000000..d4a9e9b7a
--- /dev/null
+++ b/library/ace/snippets/dot.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/dot",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="dot"}) \ No newline at end of file
diff --git a/library/ace/snippets/eiffel.js b/library/ace/snippets/eiffel.js
new file mode 100644
index 000000000..21fb8886e
--- /dev/null
+++ b/library/ace/snippets/eiffel.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/eiffel",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="eiffel"}) \ No newline at end of file
diff --git a/library/ace/snippets/ejs.js b/library/ace/snippets/ejs.js
new file mode 100644
index 000000000..2e8cbcac6
--- /dev/null
+++ b/library/ace/snippets/ejs.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/ejs",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ejs"}) \ No newline at end of file
diff --git a/library/ace/snippets/elixir.js b/library/ace/snippets/elixir.js
new file mode 100644
index 000000000..455f2f4a4
--- /dev/null
+++ b/library/ace/snippets/elixir.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/elixir",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}) \ No newline at end of file
diff --git a/library/ace/snippets/elm.js b/library/ace/snippets/elm.js
new file mode 100644
index 000000000..b483953ca
--- /dev/null
+++ b/library/ace/snippets/elm.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/elm",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="elm"}) \ No newline at end of file
diff --git a/library/ace/snippets/erlang.js b/library/ace/snippets/erlang.js
new file mode 100644
index 000000000..ca27ff85e
--- /dev/null
+++ b/library/ace/snippets/erlang.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/erlang",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# module and export all\nsnippet mod\n -module(${1:`Filename('', 'my')`}).\n \n -compile([export_all]).\n \n start() ->\n ${2}\n \n stop() ->\n ok.\n# define directive\nsnippet def\n -define(${1:macro}, ${2:body}).${3}\n# export directive\nsnippet exp\n -export([${1:function}/${2:arity}]).\n# include directive\nsnippet inc\n -include(\"${1:file}\").${2}\n# behavior directive\nsnippet beh\n -behaviour(${1:behaviour}).${2}\n# if expression\nsnippet if\n if\n ${1:guard} ->\n ${2:body}\n end\n# case expression\nsnippet case\n case ${1:expression} of\n ${2:pattern} ->\n ${3:body};\n end\n# anonymous function\nsnippet fun\n fun (${1:Parameters}) -> ${2:body} end${3}\n# try...catch\nsnippet try\n try\n ${1}\n catch\n ${2:_:_} -> ${3:got_some_exception}\n end\n# record directive\nsnippet rec\n -record(${1:record}, {\n ${2:field}=${3:value}}).${4}\n# todo comment\nsnippet todo\n %% TODO: ${1}\n## Snippets below (starting with '%') are in EDoc format.\n## See http://www.erlang.org/doc/apps/edoc/chapter.html#id56887 for more details\n# doc comment\nsnippet %d\n %% @doc ${1}\n# end of doc comment\nsnippet %e\n %% @end\n# specification comment\nsnippet %s\n %% @spec ${1}\n# private function marker\nsnippet %p\n %% @private\n# OTP application\nsnippet application\n -module(${1:`Filename('', 'my')`}).\n\n -behaviour(application).\n\n -export([start/2, stop/1]).\n\n start(_Type, _StartArgs) ->\n case ${2:root_supervisor}:start_link() of\n {ok, Pid} ->\n {ok, Pid};\n Other ->\n {error, Other}\n end.\n\n stop(_State) ->\n ok. \n# OTP supervisor\nsnippet supervisor\n -module(${1:`Filename('', 'my')`}).\n\n -behaviour(supervisor).\n\n %% API\n -export([start_link/0]).\n\n %% Supervisor callbacks\n -export([init/1]).\n\n -define(SERVER, ?MODULE).\n\n start_link() ->\n supervisor:start_link({local, ?SERVER}, ?MODULE, []).\n\n init([]) ->\n Server = {${2:my_server}, {$2, start_link, []},\n permanent, 2000, worker, [$2]},\n Children = [Server],\n RestartStrategy = {one_for_one, 0, 1},\n {ok, {RestartStrategy, Children}}.\n# OTP gen_server\nsnippet gen_server\n -module(${1:`Filename('', 'my')`}).\n\n -behaviour(gen_server).\n\n %% API\n -export([\n start_link/0\n ]).\n\n %% gen_server callbacks\n -export([init/1, handle_call/3, handle_cast/2, handle_info/2,\n terminate/2, code_change/3]).\n\n -define(SERVER, ?MODULE).\n\n -record(state, {}).\n\n %%%===================================================================\n %%% API\n %%%===================================================================\n\n start_link() ->\n gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).\n\n %%%===================================================================\n %%% gen_server callbacks\n %%%===================================================================\n\n init([]) ->\n {ok, #state{}}.\n\n handle_call(_Request, _From, State) ->\n Reply = ok,\n {reply, Reply, State}.\n\n handle_cast(_Msg, State) ->\n {noreply, State}.\n\n handle_info(_Info, State) ->\n {noreply, State}.\n\n terminate(_Reason, _State) ->\n ok.\n\n code_change(_OldVsn, State, _Extra) ->\n {ok, State}.\n\n %%%===================================================================\n %%% Internal functions\n %%%===================================================================\n\n",t.scope="erlang"}) \ No newline at end of file
diff --git a/library/ace/snippets/forth.js b/library/ace/snippets/forth.js
new file mode 100644
index 000000000..3aa9db09d
--- /dev/null
+++ b/library/ace/snippets/forth.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/forth",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="forth"}) \ No newline at end of file
diff --git a/library/ace/snippets/fortran.js b/library/ace/snippets/fortran.js
new file mode 100644
index 000000000..b58d2ec79
--- /dev/null
+++ b/library/ace/snippets/fortran.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/fortran",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="fortran"}) \ No newline at end of file
diff --git a/library/ace/snippets/ftl.js b/library/ace/snippets/ftl.js
new file mode 100644
index 000000000..3e57d1723
--- /dev/null
+++ b/library/ace/snippets/ftl.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/ftl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ftl"}) \ No newline at end of file
diff --git a/library/ace/snippets/gcode.js b/library/ace/snippets/gcode.js
new file mode 100644
index 000000000..b0108dfe1
--- /dev/null
+++ b/library/ace/snippets/gcode.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/gcode",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="gcode"}) \ No newline at end of file
diff --git a/library/ace/snippets/gherkin.js b/library/ace/snippets/gherkin.js
new file mode 100644
index 000000000..44a88695f
--- /dev/null
+++ b/library/ace/snippets/gherkin.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/gherkin",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="gherkin"}) \ No newline at end of file
diff --git a/library/ace/snippets/gitignore.js b/library/ace/snippets/gitignore.js
new file mode 100644
index 000000000..87713df04
--- /dev/null
+++ b/library/ace/snippets/gitignore.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/gitignore",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="gitignore"}) \ No newline at end of file
diff --git a/library/ace/snippets/glsl.js b/library/ace/snippets/glsl.js
new file mode 100644
index 000000000..042ed75b7
--- /dev/null
+++ b/library/ace/snippets/glsl.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/glsl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="glsl"}) \ No newline at end of file
diff --git a/library/ace/snippets/gobstones.js b/library/ace/snippets/gobstones.js
new file mode 100644
index 000000000..95eed9063
--- /dev/null
+++ b/library/ace/snippets/gobstones.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/gobstones",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# Procedure\nsnippet proc\n procedure ${1?:name}(${2:argument}) {\n ${3:// body...}\n }\n\n# Function\nsnippet fun\n function ${1?:name}(${2:argument}) {\n return ${3:// body...}\n }\n\n# Repeat\nsnippet rep\n repeat ${1?:times} {\n ${2:// body...}\n }\n\n# For\nsnippet for\n foreach ${1?:e} in ${2?:list} {\n ${3:// body...} \n }\n\n# If\nsnippet if\n if (${1?:condition}) {\n ${3:// body...} \n }\n\n# While\n while (${1?:condition}) {\n ${2:// body...} \n }\n",t.scope="gobstones"}) \ No newline at end of file
diff --git a/library/ace/snippets/golang.js b/library/ace/snippets/golang.js
new file mode 100644
index 000000000..f1f0309c0
--- /dev/null
+++ b/library/ace/snippets/golang.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/golang",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="golang"}) \ No newline at end of file
diff --git a/library/ace/snippets/groovy.js b/library/ace/snippets/groovy.js
new file mode 100644
index 000000000..a293cc489
--- /dev/null
+++ b/library/ace/snippets/groovy.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/groovy",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="groovy"}) \ No newline at end of file
diff --git a/library/ace/snippets/haml.js b/library/ace/snippets/haml.js
new file mode 100644
index 000000000..95d637aad
--- /dev/null
+++ b/library/ace/snippets/haml.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/haml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet t\n %table\n %tr\n %th\n ${1:headers}\n %tr\n %td\n ${2:headers}\nsnippet ul\n %ul\n %li\n ${1:item}\n %li\nsnippet =rp\n = render :partial => '${1:partial}'\nsnippet =rpl\n = render :partial => '${1:partial}', :locals => {}\nsnippet =rpc\n = render :partial => '${1:partial}', :collection => @$1\n\n",t.scope="haml"}) \ No newline at end of file
diff --git a/library/ace/snippets/handlebars.js b/library/ace/snippets/handlebars.js
new file mode 100644
index 000000000..70dc88efa
--- /dev/null
+++ b/library/ace/snippets/handlebars.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/handlebars",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="handlebars"}) \ No newline at end of file
diff --git a/library/ace/snippets/haskell.js b/library/ace/snippets/haskell.js
new file mode 100644
index 000000000..69c2ef80b
--- /dev/null
+++ b/library/ace/snippets/haskell.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/haskell",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet lang\n {-# LANGUAGE ${1:OverloadedStrings} #-}\nsnippet info\n -- |\n -- Module : ${1:Module.Namespace}\n -- Copyright : ${2:Author} ${3:2011-2012}\n -- License : ${4:BSD3}\n --\n -- Maintainer : ${5:email@something.com}\n -- Stability : ${6:experimental}\n -- Portability : ${7:unknown}\n --\n -- ${8:Description}\n --\nsnippet import\n import ${1:Data.Text}\nsnippet import2\n import ${1:Data.Text} (${2:head})\nsnippet importq\n import qualified ${1:Data.Text} as ${2:T}\nsnippet inst\n instance ${1:Monoid} ${2:Type} where\n ${3}\nsnippet type\n type ${1:Type} = ${2:Type}\nsnippet data\n data ${1:Type} = ${2:$1} ${3:Int}\nsnippet newtype\n newtype ${1:Type} = ${2:$1} ${3:Int}\nsnippet class\n class ${1:Class} a where\n ${2}\nsnippet module\n module `substitute(substitute(expand('%:r'), '[/\\\\]','.','g'),'^\\%(\\l*\\.\\)\\?','','')` (\n ) where\n `expand('%') =~ 'Main' ? \"\\n\\nmain = do\\n print \\\"hello world\\\"\" : \"\"`\n\nsnippet const\n ${1:name} :: ${2:a}\n $1 = ${3:undefined}\nsnippet fn\n ${1:fn} :: ${2:a} -> ${3:a}\n $1 ${4} = ${5:undefined}\nsnippet fn2\n ${1:fn} :: ${2:a} -> ${3:a} -> ${4:a}\n $1 ${5} = ${6:undefined}\nsnippet ap\n ${1:map} ${2:fn} ${3:list}\nsnippet do\n do\n \nsnippet \u03bb\n \\${1:x} -> ${2}\nsnippet \\\n \\${1:x} -> ${2}\nsnippet <-\n ${1:a} <- ${2:m a}\nsnippet \u2190\n ${1:a} <- ${2:m a}\nsnippet ->\n ${1:m a} -> ${2:a}\nsnippet \u2192\n ${1:m a} -> ${2:a}\nsnippet tup\n (${1:a}, ${2:b})\nsnippet tup2\n (${1:a}, ${2:b}, ${3:c})\nsnippet tup3\n (${1:a}, ${2:b}, ${3:c}, ${4:d})\nsnippet rec\n ${1:Record} { ${2:recFieldA} = ${3:undefined}\n , ${4:recFieldB} = ${5:undefined}\n }\nsnippet case\n case ${1:something} of\n ${2} -> ${3}\nsnippet let\n let ${1} = ${2}\n in ${3}\nsnippet where\n where\n ${1:fn} = ${2:undefined}\n",t.scope="haskell"}) \ No newline at end of file
diff --git a/library/ace/snippets/haxe.js b/library/ace/snippets/haxe.js
new file mode 100644
index 000000000..d24a9828e
--- /dev/null
+++ b/library/ace/snippets/haxe.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/haxe",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="haxe"}) \ No newline at end of file
diff --git a/library/ace/snippets/html.js b/library/ace/snippets/html.js
new file mode 100644
index 000000000..a220d3df1
--- /dev/null
+++ b/library/ace/snippets/html.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/html",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Some useful Unicode entities\n# Non-Breaking Space\nsnippet nbs\n &nbsp;\n# \u2190\nsnippet left\n &#x2190;\n# \u2192\nsnippet right\n &#x2192;\n# \u2191\nsnippet up\n &#x2191;\n# \u2193\nsnippet down\n &#x2193;\n# \u21a9\nsnippet return\n &#x21A9;\n# \u21e4\nsnippet backtab\n &#x21E4;\n# \u21e5\nsnippet tab\n &#x21E5;\n# \u21e7\nsnippet shift\n &#x21E7;\n# \u2303\nsnippet ctrl\n &#x2303;\n# \u2305\nsnippet enter\n &#x2305;\n# \u2318\nsnippet cmd\n &#x2318;\n# \u2325\nsnippet option\n &#x2325;\n# \u2326\nsnippet delete\n &#x2326;\n# \u232b\nsnippet backspace\n &#x232B;\n# \u238b\nsnippet esc\n &#x238B;\n# Generic Doctype\nsnippet doctype HTML 4.01 Strict\n <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"\n "http://www.w3.org/TR/html4/strict.dtd">\nsnippet doctype HTML 4.01 Transitional\n <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"\n "http://www.w3.org/TR/html4/loose.dtd">\nsnippet doctype HTML 5\n <!DOCTYPE HTML>\nsnippet doctype XHTML 1.0 Frameset\n <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\nsnippet doctype XHTML 1.0 Strict\n <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\nsnippet doctype XHTML 1.0 Transitional\n <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\nsnippet doctype XHTML 1.1\n <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\n "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\n# HTML Doctype 4.01 Strict\nsnippet docts\n <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"\n "http://www.w3.org/TR/html4/strict.dtd">\n# HTML Doctype 4.01 Transitional\nsnippet doct\n <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"\n "http://www.w3.org/TR/html4/loose.dtd">\n# HTML Doctype 5\nsnippet doct5\n <!DOCTYPE HTML>\n# XHTML Doctype 1.0 Frameset\nsnippet docxf\n <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"\n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">\n# XHTML Doctype 1.0 Strict\nsnippet docxs\n <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n# XHTML Doctype 1.0 Transitional\nsnippet docxt\n <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n# XHTML Doctype 1.1\nsnippet docx\n <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\n "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\n# Attributes\nsnippet attr\n ${1:attribute}="${2:property}"\nsnippet attr+\n ${1:attribute}="${2:property}" attr+${3}\nsnippet .\n class="${1}"${2}\nsnippet #\n id="${1}"${2}\nsnippet alt\n alt="${1}"${2}\nsnippet charset\n charset="${1:utf-8}"${2}\nsnippet data\n data-${1}="${2:$1}"${3}\nsnippet for\n for="${1}"${2}\nsnippet height\n height="${1}"${2}\nsnippet href\n href="${1:#}"${2}\nsnippet lang\n lang="${1:en}"${2}\nsnippet media\n media="${1}"${2}\nsnippet name\n name="${1}"${2}\nsnippet rel\n rel="${1}"${2}\nsnippet scope\n scope="${1:row}"${2}\nsnippet src\n src="${1}"${2}\nsnippet title=\n title="${1}"${2}\nsnippet type\n type="${1}"${2}\nsnippet value\n value="${1}"${2}\nsnippet width\n width="${1}"${2}\n# Elements\nsnippet a\n <a href="${1:#}">${2:$1}</a>\nsnippet a.\n <a class="${1}" href="${2:#}">${3:$1}</a>\nsnippet a#\n <a id="${1}" href="${2:#}">${3:$1}</a>\nsnippet a:ext\n <a href="http://${1:example.com}">${2:$1}</a>\nsnippet a:mail\n <a href="mailto:${1:joe@example.com}?subject=${2:feedback}">${3:email me}</a>\nsnippet abbr\n <abbr title="${1}">${2}</abbr>\nsnippet address\n <address>\n ${1}\n </address>\nsnippet area\n <area shape="${1:rect}" coords="${2}" href="${3}" alt="${4}" />\nsnippet area+\n <area shape="${1:rect}" coords="${2}" href="${3}" alt="${4}" />\n area+${5}\nsnippet area:c\n <area shape="circle" coords="${1}" href="${2}" alt="${3}" />\nsnippet area:d\n <area shape="default" coords="${1}" href="${2}" alt="${3}" />\nsnippet area:p\n <area shape="poly" coords="${1}" href="${2}" alt="${3}" />\nsnippet area:r\n <area shape="rect" coords="${1}" href="${2}" alt="${3}" />\nsnippet article\n <article>\n ${1}\n </article>\nsnippet article.\n <article class="${1}">\n ${2}\n </article>\nsnippet article#\n <article id="${1}">\n ${2}\n </article>\nsnippet aside\n <aside>\n ${1}\n </aside>\nsnippet aside.\n <aside class="${1}">\n ${2}\n </aside>\nsnippet aside#\n <aside id="${1}">\n ${2}\n </aside>\nsnippet audio\n <audio src="${1}>${2}</audio>\nsnippet b\n <b>${1}</b>\nsnippet base\n <base href="${1}" target="${2}" />\nsnippet bdi\n <bdi>${1}</bdo>\nsnippet bdo\n <bdo dir="${1}">${2}</bdo>\nsnippet bdo:l\n <bdo dir="ltr">${1}</bdo>\nsnippet bdo:r\n <bdo dir="rtl">${1}</bdo>\nsnippet blockquote\n <blockquote>\n ${1}\n </blockquote>\nsnippet body\n <body>\n ${1}\n </body>\nsnippet br\n <br />${1}\nsnippet button\n <button type="${1:submit}">${2}</button>\nsnippet button.\n <button class="${1:button}" type="${2:submit}">${3}</button>\nsnippet button#\n <button id="${1}" type="${2:submit}">${3}</button>\nsnippet button:s\n <button type="submit">${1}</button>\nsnippet button:r\n <button type="reset">${1}</button>\nsnippet canvas\n <canvas>\n ${1}\n </canvas>\nsnippet caption\n <caption>${1}</caption>\nsnippet cite\n <cite>${1}</cite>\nsnippet code\n <code>${1}</code>\nsnippet col\n <col />${1}\nsnippet col+\n <col />\n col+${1}\nsnippet colgroup\n <colgroup>\n ${1}\n </colgroup>\nsnippet colgroup+\n <colgroup>\n <col />\n col+${1}\n </colgroup>\nsnippet command\n <command type="command" label="${1}" icon="${2}" />\nsnippet command:c\n <command type="checkbox" label="${1}" icon="${2}" />\nsnippet command:r\n <command type="radio" radiogroup="${1}" label="${2}" icon="${3}" />\nsnippet datagrid\n <datagrid>\n ${1}\n </datagrid>\nsnippet datalist\n <datalist>\n ${1}\n </datalist>\nsnippet datatemplate\n <datatemplate>\n ${1}\n </datatemplate>\nsnippet dd\n <dd>${1}</dd>\nsnippet dd.\n <dd class="${1}">${2}</dd>\nsnippet dd#\n <dd id="${1}">${2}</dd>\nsnippet del\n <del>${1}</del>\nsnippet details\n <details>${1}</details>\nsnippet dfn\n <dfn>${1}</dfn>\nsnippet dialog\n <dialog>\n ${1}\n </dialog>\nsnippet div\n <div>\n ${1}\n </div>\nsnippet div.\n <div class="${1}">\n ${2}\n </div>\nsnippet div#\n <div id="${1}">\n ${2}\n </div>\nsnippet dl\n <dl>\n ${1}\n </dl>\nsnippet dl.\n <dl class="${1}">\n ${2}\n </dl>\nsnippet dl#\n <dl id="${1}">\n ${2}\n </dl>\nsnippet dl+\n <dl>\n <dt>${1}</dt>\n <dd>${2}</dd>\n dt+${3}\n </dl>\nsnippet dt\n <dt>${1}</dt>\nsnippet dt.\n <dt class="${1}">${2}</dt>\nsnippet dt#\n <dt id="${1}">${2}</dt>\nsnippet dt+\n <dt>${1}</dt>\n <dd>${2}</dd>\n dt+${3}\nsnippet em\n <em>${1}</em>\nsnippet embed\n <embed src=${1} type="${2} />\nsnippet fieldset\n <fieldset>\n ${1}\n </fieldset>\nsnippet fieldset.\n <fieldset class="${1}">\n ${2}\n </fieldset>\nsnippet fieldset#\n <fieldset id="${1}">\n ${2}\n </fieldset>\nsnippet fieldset+\n <fieldset>\n <legend><span>${1}</span></legend>\n ${2}\n </fieldset>\n fieldset+${3}\nsnippet figcaption\n <figcaption>${1}</figcaption>\nsnippet figure\n <figure>${1}</figure>\nsnippet footer\n <footer>\n ${1}\n </footer>\nsnippet footer.\n <footer class="${1}">\n ${2}\n </footer>\nsnippet footer#\n <footer id="${1}">\n ${2}\n </footer>\nsnippet form\n <form action="${1}" method="${2:get}" accept-charset="utf-8">\n ${3}\n </form>\nsnippet form.\n <form class="${1}" action="${2}" method="${3:get}" accept-charset="utf-8">\n ${4}\n </form>\nsnippet form#\n <form id="${1}" action="${2}" method="${3:get}" accept-charset="utf-8">\n ${4}\n </form>\nsnippet h1\n <h1>${1}</h1>\nsnippet h1.\n <h1 class="${1}">${2}</h1>\nsnippet h1#\n <h1 id="${1}">${2}</h1>\nsnippet h2\n <h2>${1}</h2>\nsnippet h2.\n <h2 class="${1}">${2}</h2>\nsnippet h2#\n <h2 id="${1}">${2}</h2>\nsnippet h3\n <h3>${1}</h3>\nsnippet h3.\n <h3 class="${1}">${2}</h3>\nsnippet h3#\n <h3 id="${1}">${2}</h3>\nsnippet h4\n <h4>${1}</h4>\nsnippet h4.\n <h4 class="${1}">${2}</h4>\nsnippet h4#\n <h4 id="${1}">${2}</h4>\nsnippet h5\n <h5>${1}</h5>\nsnippet h5.\n <h5 class="${1}">${2}</h5>\nsnippet h5#\n <h5 id="${1}">${2}</h5>\nsnippet h6\n <h6>${1}</h6>\nsnippet h6.\n <h6 class="${1}">${2}</h6>\nsnippet h6#\n <h6 id="${1}">${2}</h6>\nsnippet head\n <head>\n <meta http-equiv="content-type" content="text/html; charset=utf-8" />\n\n <title>${1:`substitute(Filename(\'\', \'Page Title\'), \'^.\', \'\\u&\', \'\')`}</title>\n ${2}\n </head>\nsnippet header\n <header>\n ${1}\n </header>\nsnippet header.\n <header class="${1}">\n ${2}\n </header>\nsnippet header#\n <header id="${1}">\n ${2}\n </header>\nsnippet hgroup\n <hgroup>\n ${1}\n </hgroup>\nsnippet hgroup.\n <hgroup class="${1}>\n ${2}\n </hgroup>\nsnippet hr\n <hr />${1}\nsnippet html\n <html>\n ${1}\n </html>\nsnippet xhtml\n <html xmlns="http://www.w3.org/1999/xhtml">\n ${1}\n </html>\nsnippet html5\n <!DOCTYPE html>\n <html>\n <head>\n <meta http-equiv="content-type" content="text/html; charset=utf-8" />\n <title>${1:`substitute(Filename(\'\', \'Page Title\'), \'^.\', \'\\u&\', \'\')`}</title>\n ${2:meta}\n </head>\n <body>\n ${3:body}\n </body>\n </html>\nsnippet i\n <i>${1}</i>\nsnippet iframe\n <iframe src="${1}" frameborder="0"></iframe>${2}\nsnippet iframe.\n <iframe class="${1}" src="${2}" frameborder="0"></iframe>${3}\nsnippet iframe#\n <iframe id="${1}" src="${2}" frameborder="0"></iframe>${3}\nsnippet img\n <img src="${1}" alt="${2}" />${3}\nsnippet img.\n <img class="${1}" src="${2}" alt="${3}" />${4}\nsnippet img#\n <img id="${1}" src="${2}" alt="${3}" />${4}\nsnippet input\n <input type="${1:text/submit/hidden/button/image}" name="${2}" id="${3:$2}" value="${4}" />${5}\nsnippet input.\n <input class="${1}" type="${2:text/submit/hidden/button/image}" name="${3}" id="${4:$3}" value="${5}" />${6}\nsnippet input:text\n <input type="text" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:submit\n <input type="submit" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:hidden\n <input type="hidden" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:button\n <input type="button" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:image\n <input type="image" name="${1}" id="${2:$1}" src="${3}" alt="${4}" />${5}\nsnippet input:checkbox\n <input type="checkbox" name="${1}" id="${2:$1}" />${3}\nsnippet input:radio\n <input type="radio" name="${1}" id="${2:$1}" />${3}\nsnippet input:color\n <input type="color" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:date\n <input type="date" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:datetime\n <input type="datetime" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:datetime-local\n <input type="datetime-local" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:email\n <input type="email" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:file\n <input type="file" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:month\n <input type="month" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:number\n <input type="number" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:password\n <input type="password" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:range\n <input type="range" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:reset\n <input type="reset" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:search\n <input type="search" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:time\n <input type="time" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:url\n <input type="url" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:week\n <input type="week" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet ins\n <ins>${1}</ins>\nsnippet kbd\n <kbd>${1}</kbd>\nsnippet keygen\n <keygen>${1}</keygen>\nsnippet label\n <label for="${2:$1}">${1}</label>\nsnippet label:i\n <label for="${2:$1}">${1}</label>\n <input type="${3:text/submit/hidden/button}" name="${4:$2}" id="${5:$2}" value="${6}" />${7}\nsnippet label:s\n <label for="${2:$1}">${1}</label>\n <select name="${3:$2}" id="${4:$2}">\n <option value="${5}">${6:$5}</option>\n </select>\nsnippet legend\n <legend>${1}</legend>\nsnippet legend+\n <legend><span>${1}</span></legend>\nsnippet li\n <li>${1}</li>\nsnippet li.\n <li class="${1}">${2}</li>\nsnippet li+\n <li>${1}</li>\n li+${2}\nsnippet lia\n <li><a href="${2:#}">${1}</a></li>\nsnippet lia+\n <li><a href="${2:#}">${1}</a></li>\n lia+${3}\nsnippet link\n <link rel="${1}" href="${2}" title="${3}" type="${4}" />${5}\nsnippet link:atom\n <link rel="alternate" href="${1:atom.xml}" title="Atom" type="application/atom+xml" />${2}\nsnippet link:css\n <link rel="stylesheet" href="${2:style.css}" type="text/css" media="${3:all}" />${4}\nsnippet link:favicon\n <link rel="shortcut icon" href="${1:favicon.ico}" type="image/x-icon" />${2}\nsnippet link:rss\n <link rel="alternate" href="${1:rss.xml}" title="RSS" type="application/atom+xml" />${2}\nsnippet link:touch\n <link rel="apple-touch-icon" href="${1:favicon.png}" />${2}\nsnippet map\n <map name="${1}">\n ${2}\n </map>\nsnippet map.\n <map class="${1}" name="${2}">\n ${3}\n </map>\nsnippet map#\n <map name="${1}" id="${2:$1}>\n ${3}\n </map>\nsnippet map+\n <map name="${1}">\n <area shape="${2}" coords="${3}" href="${4}" alt="${5}" />${6}\n </map>${7}\nsnippet mark\n <mark>${1}</mark>\nsnippet menu\n <menu>\n ${1}\n </menu>\nsnippet menu:c\n <menu type="context">\n ${1}\n </menu>\nsnippet menu:t\n <menu type="toolbar">\n ${1}\n </menu>\nsnippet meta\n <meta http-equiv="${1}" content="${2}" />${3}\nsnippet meta:compat\n <meta http-equiv="X-UA-Compatible" content="IE=${1:7,8,edge}" />${3}\nsnippet meta:refresh\n <meta http-equiv="refresh" content="text/html;charset=UTF-8" />${3}\nsnippet meta:utf\n <meta http-equiv="content-type" content="text/html;charset=UTF-8" />${3}\nsnippet meter\n <meter>${1}</meter>\nsnippet nav\n <nav>\n ${1}\n </nav>\nsnippet nav.\n <nav class="${1}">\n ${2}\n </nav>\nsnippet nav#\n <nav id="${1}">\n ${2}\n </nav>\nsnippet noscript\n <noscript>\n ${1}\n </noscript>\nsnippet object\n <object data="${1}" type="${2}">\n ${3}\n </object>${4}\n# Embed QT Movie\nsnippet movie\n <object width="$2" height="$3" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"\n codebase="http://www.apple.com/qtactivex/qtplugin.cab">\n <param name="src" value="$1" />\n <param name="controller" value="$4" />\n <param name="autoplay" value="$5" />\n <embed src="${1:movie.mov}"\n width="${2:320}" height="${3:240}"\n controller="${4:true}" autoplay="${5:true}"\n scale="tofit" cache="true"\n pluginspage="http://www.apple.com/quicktime/download/" />\n </object>${6}\nsnippet ol\n <ol>\n ${1}\n </ol>\nsnippet ol.\n <ol class="${1}>\n ${2}\n </ol>\nsnippet ol#\n <ol id="${1}>\n ${2}\n </ol>\nsnippet ol+\n <ol>\n <li>${1}</li>\n li+${2}\n </ol>\nsnippet opt\n <option value="${1}">${2:$1}</option>\nsnippet opt+\n <option value="${1}">${2:$1}</option>\n opt+${3}\nsnippet optt\n <option>${1}</option>\nsnippet optgroup\n <optgroup>\n <option value="${1}">${2:$1}</option>\n opt+${3}\n </optgroup>\nsnippet output\n <output>${1}</output>\nsnippet p\n <p>${1}</p>\nsnippet param\n <param name="${1}" value="${2}" />${3}\nsnippet pre\n <pre>\n ${1}\n </pre>\nsnippet progress\n <progress>${1}</progress>\nsnippet q\n <q>${1}</q>\nsnippet rp\n <rp>${1}</rp>\nsnippet rt\n <rt>${1}</rt>\nsnippet ruby\n <ruby>\n <rp><rt>${1}</rt></rp>\n </ruby>\nsnippet s\n <s>${1}</s>\nsnippet samp\n <samp>\n ${1}\n </samp>\nsnippet script\n <script type="text/javascript" charset="utf-8">\n ${1}\n <\/script>\nsnippet scriptsrc\n <script src="${1}.js" type="text/javascript" charset="utf-8"><\/script>\nsnippet section\n <section>\n ${1}\n </section>\nsnippet section.\n <section class="${1}">\n ${2}\n </section>\nsnippet section#\n <section id="${1}">\n ${2}\n </section>\nsnippet select\n <select name="${1}" id="${2:$1}">\n ${3}\n </select>\nsnippet select.\n <select name="${1}" id="${2:$1}" class="${3}>\n ${4}\n </select>\nsnippet select+\n <select name="${1}" id="${2:$1}">\n <option value="${3}">${4:$3}</option>\n opt+${5}\n </select>\nsnippet small\n <small>${1}</small>\nsnippet source\n <source src="${1}" type="${2}" media="${3}" />\nsnippet span\n <span>${1}</span>\nsnippet strong\n <strong>${1}</strong>\nsnippet style\n <style type="text/css" media="${1:all}">\n ${2}\n </style>\nsnippet sub\n <sub>${1}</sub>\nsnippet summary\n <summary>\n ${1}\n </summary>\nsnippet sup\n <sup>${1}</sup>\nsnippet table\n <table border="${1:0}">\n ${2}\n </table>\nsnippet table.\n <table class="${1}" border="${2:0}">\n ${3}\n </table>\nsnippet table#\n <table id="${1}" border="${2:0}">\n ${3}\n </table>\nsnippet tbody\n <tbody>\n ${1}\n </tbody>\nsnippet td\n <td>${1}</td>\nsnippet td.\n <td class="${1}">${2}</td>\nsnippet td#\n <td id="${1}">${2}</td>\nsnippet td+\n <td>${1}</td>\n td+${2}\nsnippet textarea\n <textarea name="${1}" id=${2:$1} rows="${3:8}" cols="${4:40}">${5}</textarea>${6}\nsnippet tfoot\n <tfoot>\n ${1}\n </tfoot>\nsnippet th\n <th>${1}</th>\nsnippet th.\n <th class="${1}">${2}</th>\nsnippet th#\n <th id="${1}">${2}</th>\nsnippet th+\n <th>${1}</th>\n th+${2}\nsnippet thead\n <thead>\n ${1}\n </thead>\nsnippet time\n <time datetime="${1}" pubdate="${2:$1}>${3:$1}</time>\nsnippet title\n <title>${1:`substitute(Filename(\'\', \'Page Title\'), \'^.\', \'\\u&\', \'\')`}</title>\nsnippet tr\n <tr>\n ${1}\n </tr>\nsnippet tr+\n <tr>\n <td>${1}</td>\n td+${2}\n </tr>\nsnippet track\n <track src="${1}" srclang="${2}" label="${3}" default="${4:default}>${5}</track>${6}\nsnippet ul\n <ul>\n ${1}\n </ul>\nsnippet ul.\n <ul class="${1}">\n ${2}\n </ul>\nsnippet ul#\n <ul id="${1}">\n ${2}\n </ul>\nsnippet ul+\n <ul>\n <li>${1}</li>\n li+${2}\n </ul>\nsnippet var\n <var>${1}</var>\nsnippet video\n <video src="${1} height="${2}" width="${3}" preload="${5:none}" autoplay="${6:autoplay}>${7}</video>${8}\nsnippet wbr\n <wbr />${1}\n',t.scope="html"}) \ No newline at end of file
diff --git a/library/ace/snippets/html_elixir.js b/library/ace/snippets/html_elixir.js
new file mode 100644
index 000000000..90ebfc734
--- /dev/null
+++ b/library/ace/snippets/html_elixir.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/html_elixir",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="html_elixir"}) \ No newline at end of file
diff --git a/library/ace/snippets/html_ruby.js b/library/ace/snippets/html_ruby.js
new file mode 100644
index 000000000..4ed2cd912
--- /dev/null
+++ b/library/ace/snippets/html_ruby.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/html_ruby",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="html_ruby"}) \ No newline at end of file
diff --git a/library/ace/snippets/ini.js b/library/ace/snippets/ini.js
new file mode 100644
index 000000000..f520b9bed
--- /dev/null
+++ b/library/ace/snippets/ini.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/ini",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ini"}) \ No newline at end of file
diff --git a/library/ace/snippets/io.js b/library/ace/snippets/io.js
new file mode 100644
index 000000000..20bff1adf
--- /dev/null
+++ b/library/ace/snippets/io.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/io",["require","exports","module"],function(e,t,n){"use strict";t.snippets=[{content:"assertEquals(${1:expected}, ${2:expr})",name:"assertEquals",scope:"io",tabTrigger:"ae"},{content:"${1:${2:newValue} := ${3:Object} }clone do(\n $0\n)",name:"clone do",scope:"io",tabTrigger:"cdo"},{content:'docSlot("${1:slotName}", "${2:documentation}")',name:"docSlot",scope:"io",tabTrigger:"ds"},{content:"(${1:header,}\n ${2:body}\n)$0",keyEquivalent:"@(",name:"Indented Bracketed Line",scope:"io",tabTrigger:"("},{content:"\n $0\n",keyEquivalent:"\r",name:"Special: Return Inside Empty Parenthesis",scope:"io meta.empty-parenthesis.io, io meta.comma-parenthesis.io"},{content:"${1:methodName} := method(${2:args,}\n $0\n)",name:"method",scope:"io",tabTrigger:"m"},{content:'newSlot("${1:slotName}", ${2:defaultValue}, "${3:docString}")$0',name:"newSlot",scope:"io",tabTrigger:"ns"},{content:"${1:name} := Object clone do(\n $0\n)",name:"Object clone do",scope:"io",tabTrigger:"ocdo"},{content:"test${1:SomeFeature} := method(\n $0\n)",name:"testMethod",scope:"io",tabTrigger:"ts"},{content:"${1:Something}Test := ${2:UnitTest} clone do(\n $0\n)",name:"UnitTest",scope:"io",tabTrigger:"ut"}],t.scope="io"}) \ No newline at end of file
diff --git a/library/ace/snippets/jack.js b/library/ace/snippets/jack.js
new file mode 100644
index 000000000..99b0ebd5b
--- /dev/null
+++ b/library/ace/snippets/jack.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/jack",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="jack"}) \ No newline at end of file
diff --git a/library/ace/snippets/jade.js b/library/ace/snippets/jade.js
new file mode 100644
index 000000000..bbd1087fb
--- /dev/null
+++ b/library/ace/snippets/jade.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/jade",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="jade"}) \ No newline at end of file
diff --git a/library/ace/snippets/java.js b/library/ace/snippets/java.js
new file mode 100644
index 000000000..3a026ea8e
--- /dev/null
+++ b/library/ace/snippets/java.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/java",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='## Access Modifiers\nsnippet po\n protected\nsnippet pu\n public\nsnippet pr\n private\n##\n## Annotations\nsnippet before\n @Before\n static void ${1:intercept}(${2:args}) { ${3} }\nsnippet mm\n @ManyToMany\n ${1}\nsnippet mo\n @ManyToOne\n ${1}\nsnippet om\n @OneToMany${1:(cascade=CascadeType.ALL)}\n ${2}\nsnippet oo\n @OneToOne\n ${1}\n##\n## Basic Java packages and import\nsnippet im\n import\nsnippet j.b\n java.beans.\nsnippet j.i\n java.io.\nsnippet j.m\n java.math.\nsnippet j.n\n java.net.\nsnippet j.u\n java.util.\n##\n## Class\nsnippet cl\n class ${1:`Filename("", "untitled")`} ${2}\nsnippet in\n interface ${1:`Filename("", "untitled")`} ${2:extends Parent}${3}\nsnippet tc\n public class ${1:`Filename()`} extends ${2:TestCase}\n##\n## Class Enhancements\nsnippet ext\n extends \nsnippet imp\n implements\n##\n## Comments\nsnippet /*\n /*\n * ${1}\n */\n##\n## Constants\nsnippet co\n static public final ${1:String} ${2:var} = ${3};${4}\nsnippet cos\n static public final String ${1:var} = "${2}";${3}\n##\n## Control Statements\nsnippet case\n case ${1}:\n ${2}\nsnippet def\n default:\n ${2}\nsnippet el\n else\nsnippet elif\n else if (${1}) ${2}\nsnippet if\n if (${1}) ${2}\nsnippet sw\n switch (${1}) {\n ${2}\n }\n##\n## Create a Method\nsnippet m\n ${1:void} ${2:method}(${3}) ${4:throws }${5}\n##\n## Create a Variable\nsnippet v\n ${1:String} ${2:var}${3: = null}${4};${5}\n##\n## Enhancements to Methods, variables, classes, etc.\nsnippet ab\n abstract\nsnippet fi\n final\nsnippet st\n static\nsnippet sy\n synchronized\n##\n## Error Methods\nsnippet err\n System.err.print("${1:Message}");\nsnippet errf\n System.err.printf("${1:Message}", ${2:exception});\nsnippet errln\n System.err.println("${1:Message}");\n##\n## Exception Handling\nsnippet as\n assert ${1:test} : "${2:Failure message}";${3}\nsnippet ca\n catch(${1:Exception} ${2:e}) ${3}\nsnippet thr\n throw\nsnippet ths\n throws\nsnippet try\n try {\n ${3}\n } catch(${1:Exception} ${2:e}) {\n }\nsnippet tryf\n try {\n ${3}\n } catch(${1:Exception} ${2:e}) {\n } finally {\n }\n##\n## Find Methods\nsnippet findall\n List<${1:listName}> ${2:items} = ${1}.findAll();${3}\nsnippet findbyid\n ${1:var} ${2:item} = ${1}.findById(${3});${4}\n##\n## Javadocs\nsnippet /**\n /**\n * ${1}\n */\nsnippet @au\n @author `system("grep \\`id -un\\` /etc/passwd | cut -d \\":\\" -f5 | cut -d \\",\\" -f1")`\nsnippet @br\n @brief ${1:Description}\nsnippet @fi\n @file ${1:`Filename()`}.java\nsnippet @pa\n @param ${1:param}\nsnippet @re\n @return ${1:param}\n##\n## Logger Methods\nsnippet debug\n Logger.debug(${1:param});${2}\nsnippet error\n Logger.error(${1:param});${2}\nsnippet info\n Logger.info(${1:param});${2}\nsnippet warn\n Logger.warn(${1:param});${2}\n##\n## Loops\nsnippet enfor\n for (${1} : ${2}) ${3}\nsnippet for\n for (${1}; ${2}; ${3}) ${4}\nsnippet wh\n while (${1}) ${2}\n##\n## Main method\nsnippet main\n public static void main (String[] args) {\n ${1:/* code */}\n }\n##\n## Print Methods\nsnippet print\n System.out.print("${1:Message}");\nsnippet printf\n System.out.printf("${1:Message}", ${2:args});\nsnippet println\n System.out.println(${1});\n##\n## Render Methods\nsnippet ren\n render(${1:param});${2}\nsnippet rena\n renderArgs.put("${1}", ${2});${3}\nsnippet renb\n renderBinary(${1:param});${2}\nsnippet renj\n renderJSON(${1:param});${2}\nsnippet renx\n renderXml(${1:param});${2}\n##\n## Setter and Getter Methods\nsnippet set\n ${1:public} void set${3:}(${2:String} ${4:}){\n this.$4 = $4;\n }\nsnippet get\n ${1:public} ${2:String} get${3:}(){\n return this.${4:};\n }\n##\n## Terminate Methods or Loops\nsnippet re\n return\nsnippet br\n break;\n##\n## Test Methods\nsnippet t\n public void test${1:Name}() throws Exception {\n ${2}\n }\nsnippet test\n @Test\n public void test${1:Name}() throws Exception {\n ${2}\n }\n##\n## Utils\nsnippet Sc\n Scanner\n##\n## Miscellaneous\nsnippet action\n public static void ${1:index}(${2:args}) { ${3} }\nsnippet rnf\n notFound(${1:param});${2}\nsnippet rnfin\n notFoundIfNull(${1:param});${2}\nsnippet rr\n redirect(${1:param});${2}\nsnippet ru\n unauthorized(${1:param});${2}\nsnippet unless\n (unless=${1:param});${2}\n',t.scope="java"}) \ No newline at end of file
diff --git a/library/ace/snippets/javascript.js b/library/ace/snippets/javascript.js
new file mode 100644
index 000000000..09f0fe0ef
--- /dev/null
+++ b/library/ace/snippets/javascript.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/javascript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Prototype\nsnippet proto\n ${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) {\n ${4:// body...}\n };\n# Function\nsnippet fun\n function ${1?:function_name}(${2:argument}) {\n ${3:// body...}\n }\n# Anonymous Function\nregex /((=)\\s*|(:)\\s*|(\\()|\\b)/f/(\\))?/\nsnippet f\n function${M1?: ${1:functionName}}($2) {\n ${0:$TM_SELECTED_TEXT}\n }${M2?;}${M3?,}${M4?)}\n# Immediate function\ntrigger \\(?f\\(\nendTrigger \\)?\nsnippet f(\n (function(${1}) {\n ${0:${TM_SELECTED_TEXT:/* code */}}\n }(${1}));\n# if\nsnippet if\n if (${1:true}) {\n ${0}\n }\n# if ... else\nsnippet ife\n if (${1:true}) {\n ${2}\n } else {\n ${0}\n }\n# tertiary conditional\nsnippet ter\n ${1:/* condition */} ? ${2:a} : ${3:b}\n# switch\nsnippet switch\n switch (${1:expression}) {\n case \'${3:case}\':\n ${4:// code}\n break;\n ${5}\n default:\n ${2:// code}\n }\n# case\nsnippet case\n case \'${1:case}\':\n ${2:// code}\n break;\n ${3}\n\n# while (...) {...}\nsnippet wh\n while (${1:/* condition */}) {\n ${0:/* code */}\n }\n# try\nsnippet try\n try {\n ${0:/* code */}\n } catch (e) {}\n# do...while\nsnippet do\n do {\n ${2:/* code */}\n } while (${1:/* condition */});\n# Object Method\nsnippet :f\nregex /([,{[])|^\\s*/:f/\n ${1:method_name}: function(${2:attribute}) {\n ${0}\n }${3:,}\n# setTimeout function\nsnippet setTimeout\nregex /\\b/st|timeout|setTimeo?u?t?/\n setTimeout(function() {${3:$TM_SELECTED_TEXT}}, ${1:10});\n# Get Elements\nsnippet gett\n getElementsBy${1:TagName}(\'${2}\')${3}\n# Get Element\nsnippet get\n getElementBy${1:Id}(\'${2}\')${3}\n# console.log (Firebug)\nsnippet cl\n console.log(${1});\n# return\nsnippet ret\n return ${1:result}\n# for (property in object ) { ... }\nsnippet fori\n for (var ${1:prop} in ${2:Things}) {\n ${0:$2[$1]}\n }\n# hasOwnProperty\nsnippet has\n hasOwnProperty(${1})\n# docstring\nsnippet /**\n /**\n * ${1:description}\n *\n */\nsnippet @par\nregex /^\\s*\\*\\s*/@(para?m?)?/\n @param {${1:type}} ${2:name} ${3:description}\nsnippet @ret\n @return {${1:type}} ${2:description}\n# JSON.parse\nsnippet jsonp\n JSON.parse(${1:jstr});\n# JSON.stringify\nsnippet jsons\n JSON.stringify(${1:object});\n# self-defining function\nsnippet sdf\n var ${1:function_name} = function(${2:argument}) {\n ${3:// initial code ...}\n\n $1 = function($2) {\n ${4:// main code}\n };\n }\n# singleton\nsnippet sing\n function ${1:Singleton} (${2:argument}) {\n // the cached instance\n var instance;\n\n // rewrite the constructor\n $1 = function $1($2) {\n return instance;\n };\n \n // carry over the prototype properties\n $1.prototype = this;\n\n // the instance\n instance = new $1();\n\n // reset the constructor pointer\n instance.constructor = $1;\n\n ${3:// code ...}\n\n return instance;\n }\n# class\nsnippet class\nregex /^\\s*/clas{0,2}/\n var ${1:class} = function(${20}) {\n $40$0\n };\n \n (function() {\n ${60:this.prop = ""}\n }).call(${1:class}.prototype);\n \n exports.${1:class} = ${1:class};\n# \nsnippet for-\n for (var ${1:i} = ${2:Things}.length; ${1:i}--; ) {\n ${0:${2:Things}[${1:i}];}\n }\n# for (...) {...}\nsnippet for\n for (var ${1:i} = 0; $1 < ${2:Things}.length; $1++) {\n ${3:$2[$1]}$0\n }\n# for (...) {...} (Improved Native For-Loop)\nsnippet forr\n for (var ${1:i} = ${2:Things}.length - 1; $1 >= 0; $1--) {\n ${3:$2[$1]}$0\n }\n\n\n#modules\nsnippet def\n define(function(require, exports, module) {\n "use strict";\n var ${1/.*\\///} = require("${1}");\n \n $TM_SELECTED_TEXT\n });\nsnippet req\nguard ^\\s*\n var ${1/.*\\///} = require("${1}");\n $0\nsnippet requ\nguard ^\\s*\n var ${1/.*\\/(.)/\\u$1/} = require("${1}").${1/.*\\/(.)/\\u$1/};\n $0\n',t.scope="javascript"}) \ No newline at end of file
diff --git a/library/ace/snippets/json.js b/library/ace/snippets/json.js
new file mode 100644
index 000000000..5e0e0ea2e
--- /dev/null
+++ b/library/ace/snippets/json.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/json",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="json"}) \ No newline at end of file
diff --git a/library/ace/snippets/jsoniq.js b/library/ace/snippets/jsoniq.js
new file mode 100644
index 000000000..7ca20f9d4
--- /dev/null
+++ b/library/ace/snippets/jsoniq.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/jsoniq",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet for\n for $${1:item} in ${2:expr}\nsnippet return\n return ${1:expr}\nsnippet import\n import module namespace ${1:ns} = "${2:http://www.example.com/}";\nsnippet some\n some $${1:varname} in ${2:expr} satisfies ${3:expr}\nsnippet every\n every $${1:varname} in ${2:expr} satisfies ${3:expr}\nsnippet if\n if(${1:true}) then ${2:expr} else ${3:true}\nsnippet switch\n switch(${1:"foo"})\n case ${2:"foo"}\n return ${3:true}\n default return ${4:false}\nsnippet try\n try { ${1:expr} } catch ${2:*} { ${3:expr} }\nsnippet tumbling\n for tumbling window $${1:varname} in ${2:expr}\n start at $${3:start} when ${4:expr}\n end at $${5:end} when ${6:expr}\n return ${7:expr}\nsnippet sliding\n for sliding window $${1:varname} in ${2:expr}\n start at $${3:start} when ${4:expr}\n end at $${5:end} when ${6:expr}\n return ${7:expr}\nsnippet let\n let $${1:varname} := ${2:expr}\nsnippet group\n group by $${1:varname} := ${2:expr}\nsnippet order\n order by ${1:expr} ${2:descending}\nsnippet stable\n stable order by ${1:expr}\nsnippet count\n count $${1:varname}\nsnippet ordered\n ordered { ${1:expr} }\nsnippet unordered\n unordered { ${1:expr} }\nsnippet treat \n treat as ${1:expr}\nsnippet castable\n castable as ${1:atomicType}\nsnippet cast\n cast as ${1:atomicType}\nsnippet typeswitch\n typeswitch(${1:expr})\n case ${2:type} return ${3:expr}\n default return ${4:expr}\nsnippet var\n declare variable $${1:varname} := ${2:expr};\nsnippet fn\n declare function ${1:ns}:${2:name}(){\n ${3:expr}\n };\nsnippet module\n module namespace ${1:ns} = "${2:http://www.example.com}";\n',t.scope="jsoniq"}) \ No newline at end of file
diff --git a/library/ace/snippets/jsp.js b/library/ace/snippets/jsp.js
new file mode 100644
index 000000000..fcbace719
--- /dev/null
+++ b/library/ace/snippets/jsp.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/jsp",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet @page\n <%@page contentType="text/html" pageEncoding="UTF-8"%>\nsnippet jstl\n <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>\n <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>\nsnippet jstl:c\n <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>\nsnippet jstl:fn\n <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>\nsnippet cpath\n ${pageContext.request.contextPath}\nsnippet cout\n <c:out value="${1}" default="${2}" />\nsnippet cset\n <c:set var="${1}" value="${2}" />\nsnippet cremove\n <c:remove var="${1}" scope="${2:page}" />\nsnippet ccatch\n <c:catch var="${1}" />\nsnippet cif\n <c:if test="${${1}}">\n ${2}\n </c:if>\nsnippet cchoose\n <c:choose>\n ${1}\n </c:choose>\nsnippet cwhen\n <c:when test="${${1}}">\n ${2}\n </c:when>\nsnippet cother\n <c:otherwise>\n ${1}\n </c:otherwise>\nsnippet cfore\n <c:forEach items="${${1}}" var="${2}" varStatus="${3}">\n ${4:<c:out value="$2" />}\n </c:forEach>\nsnippet cfort\n <c:set var="${1}">${2:item1,item2,item3}</c:set>\n <c:forTokens var="${3}" items="${$1}" delims="${4:,}">\n ${5:<c:out value="$3" />}\n </c:forTokens>\nsnippet cparam\n <c:param name="${1}" value="${2}" />\nsnippet cparam+\n <c:param name="${1}" value="${2}" />\n cparam+${3}\nsnippet cimport\n <c:import url="${1}" />\nsnippet cimport+\n <c:import url="${1}">\n <c:param name="${2}" value="${3}" />\n cparam+${4}\n </c:import>\nsnippet curl\n <c:url value="${1}" var="${2}" />\n <a href="${$2}">${3}</a>\nsnippet curl+\n <c:url value="${1}" var="${2}">\n <c:param name="${4}" value="${5}" />\n cparam+${6}\n </c:url>\n <a href="${$2}">${3}</a>\nsnippet credirect\n <c:redirect url="${1}" />\nsnippet contains\n ${fn:contains(${1:string}, ${2:substr})}\nsnippet contains:i\n ${fn:containsIgnoreCase(${1:string}, ${2:substr})}\nsnippet endswith\n ${fn:endsWith(${1:string}, ${2:suffix})}\nsnippet escape\n ${fn:escapeXml(${1:string})}\nsnippet indexof\n ${fn:indexOf(${1:string}, ${2:substr})}\nsnippet join\n ${fn:join(${1:collection}, ${2:delims})}\nsnippet length\n ${fn:length(${1:collection_or_string})}\nsnippet replace\n ${fn:replace(${1:string}, ${2:substr}, ${3:replace})}\nsnippet split\n ${fn:split(${1:string}, ${2:delims})}\nsnippet startswith\n ${fn:startsWith(${1:string}, ${2:prefix})}\nsnippet substr\n ${fn:substring(${1:string}, ${2:begin}, ${3:end})}\nsnippet substr:a\n ${fn:substringAfter(${1:string}, ${2:substr})}\nsnippet substr:b\n ${fn:substringBefore(${1:string}, ${2:substr})}\nsnippet lc\n ${fn:toLowerCase(${1:string})}\nsnippet uc\n ${fn:toUpperCase(${1:string})}\nsnippet trim\n ${fn:trim(${1:string})}\n',t.scope="jsp"}) \ No newline at end of file
diff --git a/library/ace/snippets/jsx.js b/library/ace/snippets/jsx.js
new file mode 100644
index 000000000..9ae1382f4
--- /dev/null
+++ b/library/ace/snippets/jsx.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/jsx",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="jsx"}) \ No newline at end of file
diff --git a/library/ace/snippets/julia.js b/library/ace/snippets/julia.js
new file mode 100644
index 000000000..131783f29
--- /dev/null
+++ b/library/ace/snippets/julia.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/julia",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="julia"}) \ No newline at end of file
diff --git a/library/ace/snippets/latex.js b/library/ace/snippets/latex.js
new file mode 100644
index 000000000..43f3fdbf7
--- /dev/null
+++ b/library/ace/snippets/latex.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/latex",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="latex"}) \ No newline at end of file
diff --git a/library/ace/snippets/lean.js b/library/ace/snippets/lean.js
new file mode 100644
index 000000000..3f264d3aa
--- /dev/null
+++ b/library/ace/snippets/lean.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/lean",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="lean"}) \ No newline at end of file
diff --git a/library/ace/snippets/less.js b/library/ace/snippets/less.js
new file mode 100644
index 000000000..4e2cafcd3
--- /dev/null
+++ b/library/ace/snippets/less.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/less",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="less"}) \ No newline at end of file
diff --git a/library/ace/snippets/liquid.js b/library/ace/snippets/liquid.js
new file mode 100644
index 000000000..a57996395
--- /dev/null
+++ b/library/ace/snippets/liquid.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/liquid",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="liquid"}) \ No newline at end of file
diff --git a/library/ace/snippets/lisp.js b/library/ace/snippets/lisp.js
new file mode 100644
index 000000000..7c3fd308e
--- /dev/null
+++ b/library/ace/snippets/lisp.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/lisp",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="lisp"}) \ No newline at end of file
diff --git a/library/ace/snippets/live_script.js b/library/ace/snippets/live_script.js
new file mode 100644
index 000000000..9bf62192b
--- /dev/null
+++ b/library/ace/snippets/live_script.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/live_script",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}) \ No newline at end of file
diff --git a/library/ace/snippets/livescript.js b/library/ace/snippets/livescript.js
new file mode 100644
index 000000000..7ca405642
--- /dev/null
+++ b/library/ace/snippets/livescript.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/livescript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="livescript"}) \ No newline at end of file
diff --git a/library/ace/snippets/logiql.js b/library/ace/snippets/logiql.js
new file mode 100644
index 000000000..c4f097549
--- /dev/null
+++ b/library/ace/snippets/logiql.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/logiql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="logiql"}) \ No newline at end of file
diff --git a/library/ace/snippets/lsl.js b/library/ace/snippets/lsl.js
new file mode 100644
index 000000000..afd16b324
--- /dev/null
+++ b/library/ace/snippets/lsl.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/lsl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet @\n @${1:label};\nsnippet CAMERA_ACTIVE\n CAMERA_ACTIVE, ${1:integer isActive}, $0\nsnippet CAMERA_BEHINDNESS_ANGLE\n CAMERA_BEHINDNESS_ANGLE, ${1:float degrees}, $0\nsnippet CAMERA_BEHINDNESS_LAG\n CAMERA_BEHINDNESS_LAG, ${1:float seconds}, $0\nsnippet CAMERA_DISTANCE\n CAMERA_DISTANCE, ${1:float meters}, $0\nsnippet CAMERA_FOCUS\n CAMERA_FOCUS, ${1:vector position}, $0\nsnippet CAMERA_FOCUS_LAG\n CAMERA_FOCUS_LAG, ${1:float seconds}, $0\nsnippet CAMERA_FOCUS_LOCKED\n CAMERA_FOCUS_LOCKED, ${1:integer isLocked}, $0\nsnippet CAMERA_FOCUS_OFFSET\n CAMERA_FOCUS_OFFSET, ${1:vector meters}, $0\nsnippet CAMERA_FOCUS_THRESHOLD\n CAMERA_FOCUS_THRESHOLD, ${1:float meters}, $0\nsnippet CAMERA_PITCH\n CAMERA_PITCH, ${1:float degrees}, $0\nsnippet CAMERA_POSITION\n CAMERA_POSITION, ${1:vector position}, $0\nsnippet CAMERA_POSITION_LAG\n CAMERA_POSITION_LAG, ${1:float seconds}, $0\nsnippet CAMERA_POSITION_LOCKED\n CAMERA_POSITION_LOCKED, ${1:integer isLocked}, $0\nsnippet CAMERA_POSITION_THRESHOLD\n CAMERA_POSITION_THRESHOLD, ${1:float meters}, $0\nsnippet CHARACTER_AVOIDANCE_MODE\n CHARACTER_AVOIDANCE_MODE, ${1:integer flags}, $0\nsnippet CHARACTER_DESIRED_SPEED\n CHARACTER_DESIRED_SPEED, ${1:float speed}, $0\nsnippet CHARACTER_DESIRED_TURN_SPEED\n CHARACTER_DESIRED_TURN_SPEED, ${1:float speed}, $0\nsnippet CHARACTER_LENGTH\n CHARACTER_LENGTH, ${1:float length}, $0\nsnippet CHARACTER_MAX_TURN_RADIUS\n CHARACTER_MAX_TURN_RADIUS, ${1:float radius}, $0\nsnippet CHARACTER_ORIENTATION\n CHARACTER_ORIENTATION, ${1:integer orientation}, $0\nsnippet CHARACTER_RADIUS\n CHARACTER_RADIUS, ${1:float radius}, $0\nsnippet CHARACTER_STAY_WITHIN_PARCEL\n CHARACTER_STAY_WITHIN_PARCEL, ${1:boolean stay}, $0\nsnippet CHARACTER_TYPE\n CHARACTER_TYPE, ${1:integer type}, $0\nsnippet HTTP_BODY_MAXLENGTH\n HTTP_BODY_MAXLENGTH, ${1:integer length}, $0\nsnippet HTTP_CUSTOM_HEADER\n HTTP_CUSTOM_HEADER, ${1:string name}, ${2:string value}, $0\nsnippet HTTP_METHOD\n HTTP_METHOD, ${1:string method}, $0\nsnippet HTTP_MIMETYPE\n HTTP_MIMETYPE, ${1:string mimeType}, $0\nsnippet HTTP_PRAGMA_NO_CACHE\n HTTP_PRAGMA_NO_CACHE, ${1:integer send_header}, $0\nsnippet HTTP_VERBOSE_THROTTLE\n HTTP_VERBOSE_THROTTLE, ${1:integer noisy}, $0\nsnippet HTTP_VERIFY_CERT\n HTTP_VERIFY_CERT, ${1:integer verify}, $0\nsnippet RC_DATA_FLAGS\n RC_DATA_FLAGS, ${1:integer flags}, $0\nsnippet RC_DETECT_PHANTOM\n RC_DETECT_PHANTOM, ${1:integer dectedPhantom}, $0\nsnippet RC_MAX_HITS\n RC_MAX_HITS, ${1:integer maxHits}, $0\nsnippet RC_REJECT_TYPES\n RC_REJECT_TYPES, ${1:integer filterMask}, $0\nsnippet at_rot_target\n at_rot_target(${1:integer handle}, ${2:rotation targetrot}, ${3:rotation ourrot})\n {\n $0\n }\nsnippet at_target\n at_target(${1:integer tnum}, ${2:vector targetpos}, ${3:vector ourpos})\n {\n $0\n }\nsnippet attach\n attach(${1:key id})\n {\n $0\n }\nsnippet changed\n changed(${1:integer change})\n {\n $0\n }\nsnippet collision\n collision(${1:integer index})\n {\n $0\n }\nsnippet collision_end\n collision_end(${1:integer index})\n {\n $0\n }\nsnippet collision_start\n collision_start(${1:integer index})\n {\n $0\n }\nsnippet control\n control(${1:key id}, ${2:integer level}, ${3:integer edge})\n {\n $0\n }\nsnippet dataserver\n dataserver(${1:key query_id}, ${2:string data})\n {\n $0\n }\nsnippet do\n do\n {\n $0\n }\n while (${1:condition});\nsnippet else\n else\n {\n $0\n }\nsnippet email\n email(${1:string time}, ${2:string address}, ${3:string subject}, ${4:string message}, ${5:integer num_left})\n {\n $0\n }\nsnippet experience_permissions\n experience_permissions(${1:key agent_id})\n {\n $0\n }\nsnippet experience_permissions_denied\n experience_permissions_denied(${1:key agent_id}, ${2:integer reason})\n {\n $0\n }\nsnippet for\n for (${1:start}; ${3:condition}; ${3:step})\n {\n $0\n }\nsnippet http_request\n http_request(${1:key request_id}, ${2:string method}, ${3:string body})\n {\n $0\n }\nsnippet http_response\n http_response(${1:key request_id}, ${2:integer status}, ${3:list metadata}, ${4:string body})\n {\n $0\n }\nsnippet if\n if (${1:condition})\n {\n $0\n }\nsnippet jump\n jump ${1:label};\nsnippet land_collision\n land_collision(${1:vector pos})\n {\n $0\n }\nsnippet land_collision_end\n land_collision_end(${1:vector pos})\n {\n $0\n }\nsnippet land_collision_start\n land_collision_start(${1:vector pos})\n {\n $0\n }\nsnippet link_message\n link_message(${1:integer sender_num}, ${2:integer num}, ${3:string str}, ${4:key id})\n {\n $0\n }\nsnippet listen\n listen(${1:integer channel}, ${2:string name}, ${3:key id}, ${4:string message})\n {\n $0\n }\nsnippet llAbs\n llAbs(${1:integer val})\nsnippet llAcos\n llAcos(${1:float val})\nsnippet llAddToLandBanList\n llAddToLandBanList(${1:key agent}, ${2:float hours});\n $0\nsnippet llAddToLandPassList\n llAddToLandPassList(${1:key agent}, ${2:float hours});\n $0\nsnippet llAdjustSoundVolume\n llAdjustSoundVolume(${1:float volume});\n $0\nsnippet llAgentInExperience\n llAgentInExperience(${1:key agent})\nsnippet llAllowInventoryDrop\n llAllowInventoryDrop(${1:integer add});\n $0\nsnippet llAngleBetween\n llAngleBetween(${1:rotation a}, ${2:rotation b})\nsnippet llApplyImpulse\n llApplyImpulse(${1:vector force}, ${2:integer local});\n $0\nsnippet llApplyRotationalImpulse\n llApplyRotationalImpulse(${1:vector force}, ${2:integer local});\n $0\nsnippet llAsin\n llAsin(${1:float val})\nsnippet llAtan2\n llAtan2(${1:float y}, ${2:float x})\nsnippet llAttachToAvatar\n llAttachToAvatar(${1:integer attach_point});\n $0\nsnippet llAttachToAvatarTemp\n llAttachToAvatarTemp(${1:integer attach_point});\n $0\nsnippet llAvatarOnLinkSitTarget\n llAvatarOnLinkSitTarget(${1:integer link})\nsnippet llAvatarOnSitTarget\n llAvatarOnSitTarget()\nsnippet llAxes2Rot\n llAxes2Rot(${1:vector fwd}, ${2:vector left}, ${3:vector up})\nsnippet llAxisAngle2Rot\n llAxisAngle2Rot(${1:vector axis}, ${2:float angle})\nsnippet llBase64ToInteger\n llBase64ToInteger(${1:string str})\nsnippet llBase64ToString\n llBase64ToString(${1:string str})\nsnippet llBreakAllLinks\n llBreakAllLinks();\n $0\nsnippet llBreakLink\n llBreakLink(${1:integer link});\n $0\nsnippet llCastRay\n llCastRay(${1:vector start}, ${2:vector end}, ${3:list options});\n $0\nsnippet llCeil\n llCeil(${1:float val})\nsnippet llClearCameraParams\n llClearCameraParams();\n $0\nsnippet llClearLinkMedia\n llClearLinkMedia(${1:integer link}, ${2:integer face});\n $0\nsnippet llClearPrimMedia\n llClearPrimMedia(${1:integer face});\n $0\nsnippet llCloseRemoteDataChannel\n llCloseRemoteDataChannel(${1:key channel});\n $0\nsnippet llCollisionFilter\n llCollisionFilter(${1:string name}, ${2:key id}, ${3:integer accept});\n $0\nsnippet llCollisionSound\n llCollisionSound(${1:string impact_sound}, ${2:float impact_volume});\n $0\nsnippet llCos\n llCos(${1:float theta})\nsnippet llCreateCharacter\n llCreateCharacter(${1:list options});\n $0\nsnippet llCreateKeyValue\n llCreateKeyValue(${1:string k})\nsnippet llCreateLink\n llCreateLink(${1:key target}, ${2:integer parent});\n $0\nsnippet llCSV2List\n llCSV2List(${1:string src})\nsnippet llDataSizeKeyValue\n llDataSizeKeyValue()\nsnippet llDeleteCharacter\n llDeleteCharacter();\n $0\nsnippet llDeleteKeyValue\n llDeleteKeyValue(${1:string k})\nsnippet llDeleteSubList\n llDeleteSubList(${1:list src}, ${2:integer start}, ${3:integer end})\nsnippet llDeleteSubString\n llDeleteSubString(${1:string src}, ${2:integer start}, ${3:integer end})\nsnippet llDetachFromAvatar\n llDetachFromAvatar();\n $0\nsnippet llDetectedGrab\n llDetectedGrab(${1:integer number})\nsnippet llDetectedGroup\n llDetectedGroup(${1:integer number})\nsnippet llDetectedKey\n llDetectedKey(${1:integer number})\nsnippet llDetectedLinkNumber\n llDetectedLinkNumber(${1:integer number})\nsnippet llDetectedName\n llDetectedName(${1:integer number})\nsnippet llDetectedOwner\n llDetectedOwner(${1:integer number})\nsnippet llDetectedPos\n llDetectedPosl(${1:integer number})\nsnippet llDetectedRot\n llDetectedRot(${1:integer number})\nsnippet llDetectedTouchBinormal\n llDetectedTouchBinormal(${1:integer number})\nsnippet llDetectedTouchFace\n llDetectedTouchFace(${1:integer number})\nsnippet llDetectedTouchNormal\n llDetectedTouchNormal(${1:integer number})\nsnippet llDetectedTouchPos\n llDetectedTouchPos(${1:integer number})\nsnippet llDetectedTouchST\n llDetectedTouchST(${1:integer number})\nsnippet llDetectedTouchUV\n llDetectedTouchUV(${1:integer number})\nsnippet llDetectedType\n llDetectedType(${1:integer number})\nsnippet llDetectedVel\n llDetectedVel(${1:integer number})\nsnippet llDialog\n llDialog(${1:key agent}, ${2:string message}, ${3:list buttons}, ${4:integer channel});\n $0\nsnippet llDie\n llDie();\n $0\nsnippet llDumpList2String\n llDumpList2String(${1:list src}, ${2:string separator})\nsnippet llEdgeOfWorld\n llEdgeOfWorld(${1:vector pos}, ${2:vector dir})\nsnippet llEjectFromLand\n llEjectFromLand(${1:key agent});\n $0\nsnippet llEmail\n llEmail(${1:string address}, ${2:string subject}, ${3:string message});\n $0\nsnippet llEscapeURL\n llEscapeURL(${1:string url})\nsnippet llEuler2Rot\n llEuler2Rot(${1:vector v})\nsnippet llExecCharacterCmd\n llExecCharacterCmd(${1:integer command}, ${2:list options});\n $0\nsnippet llEvade\n llEvade(${1:key target}, ${2:list options});\n $0\nsnippet llFabs\n llFabs(${1:float val})\nsnippet llFleeFrom\n llFleeFrom(${1:vector position}, ${2:float distance}, ${3:list options});\n $0\nsnippet llFloor\n llFloor(${1:float val})\nsnippet llForceMouselook\n llForceMouselook(${1:integer mouselook});\n $0\nsnippet llFrand\n llFrand(${1:float mag})\nsnippet llGenerateKey\n llGenerateKey()\nsnippet llGetAccel\n llGetAccel()\nsnippet llGetAgentInfo\n llGetAgentInfo(${1:key id})\nsnippet llGetAgentLanguage\n llGetAgentLanguage(${1:key agent})\nsnippet llGetAgentList\n llGetAgentList(${1:integer scope}, ${2:list options})\nsnippet llGetAgentSize\n llGetAgentSize(${1:key agent})\nsnippet llGetAlpha\n llGetAlpha(${1:integer face})\nsnippet llGetAndResetTime\n llGetAndResetTime()\nsnippet llGetAnimation\n llGetAnimation(${1:key id})\nsnippet llGetAnimationList\n llGetAnimationList(${1:key agent})\nsnippet llGetAnimationOverride\n llGetAnimationOverride(${1:string anim_state})\nsnippet llGetAttached\n llGetAttached()\nsnippet llGetAttachedList\n llGetAttachedList(${1:key id})\nsnippet llGetBoundingBox\n llGetBoundingBox(${1:key object})\nsnippet llGetCameraPos\n llGetCameraPos()\nsnippet llGetCameraRot\n llGetCameraRot()\nsnippet llGetCenterOfMass\n llGetCenterOfMass()\nsnippet llGetClosestNavPoint\n llGetClosestNavPoint(${1:vector point}, ${2:list options})\nsnippet llGetColor\n llGetColor(${1:integer face})\nsnippet llGetCreator\n llGetCreator()\nsnippet llGetDate\n llGetDate()\nsnippet llGetDisplayName\n llGetDisplayName(${1:key id})\nsnippet llGetEnergy\n llGetEnergy()\nsnippet llGetEnv\n llGetEnv(${1:string name})\nsnippet llGetExperienceDetails\n llGetExperienceDetails(${1:key experience_id})\nsnippet llGetExperienceErrorMessage\n llGetExperienceErrorMessage(${1:integer error})\nsnippet llGetForce\n llGetForce()\nsnippet llGetFreeMemory\n llGetFreeMemory()\nsnippet llGetFreeURLs\n llGetFreeURLs()\nsnippet llGetGeometricCenter\n llGetGeometricCenter()\nsnippet llGetGMTclock\n llGetGMTclock()\nsnippet llGetHTTPHeader\n llGetHTTPHeader(${1:key request_id}, ${2:string header})\nsnippet llGetInventoryCreator\n llGetInventoryCreator(${1:string item})\nsnippet llGetInventoryKey\n llGetInventoryKey(${1:string name})\nsnippet llGetInventoryName\n llGetInventoryName(${1:integer type}, ${2:integer number})\nsnippet llGetInventoryNumber\n llGetInventoryNumber(${1:integer type})\nsnippet llGetInventoryPermMask\n llGetInventoryPermMask(${1:string item}, ${2:integer mask})\nsnippet llGetInventoryType\n llGetInventoryType(${1:string name})\nsnippet llGetKey\n llGetKey()\nsnippet llGetLandOwnerAt\n llGetLandOwnerAt(${1:vector pos})\nsnippet llGetLinkKey\n llGetLinkKey(${1:integer link})\nsnippet llGetLinkMedia\n llGetLinkMedia(${1:integer link}, ${2:integer face}, ${3:list params})\nsnippet llGetLinkName\n llGetLinkName(${1:integer link})\nsnippet llGetLinkNumber\n llGetLinkNumber()\nsnippet llGetLinkNumberOfSides\n llGetLinkNumberOfSides(${1:integer link})\nsnippet llGetLinkPrimitiveParams\n llGetLinkPrimitiveParams(${1:integer link}, ${2:list params})\nsnippet llGetListEntryType\n llGetListEntryType(${1:list src}, ${2:integer index})\nsnippet llGetListLength\n llGetListLength(${1:list src})\nsnippet llGetLocalPos\n llGetLocalPos()\nsnippet llGetLocalRot\n llGetLocalRot()\nsnippet llGetMass\n llGetMass()\nsnippet llGetMassMKS\n llGetMassMKS()\nsnippet llGetMaxScaleFactor\n llGetMaxScaleFactor()\nsnippet llGetMemoryLimit\n llGetMemoryLimit()\nsnippet llGetMinScaleFactor\n llGetMinScaleFactor()\nsnippet llGetNextEmail\n llGetNextEmail(${1:string address}, ${2:string subject});\n $0\nsnippet llGetNotecardLine\n llGetNotecardLine(${1:string name}, ${2:integer line})\nsnippet llGetNumberOfNotecardLines\n llGetNumberOfNotecardLines(${1:string name})\nsnippet llGetNumberOfPrims\n llGetNumberOfPrims()\nsnippet llGetNumberOfSides\n llGetNumberOfSides()\nsnippet llGetObjectDesc\n llGetObjectDesc()\nsnippet llGetObjectDetails\n llGetObjectDetails(${1:key id}, ${2:list params})\nsnippet llGetObjectMass\n llGetObjectMass(${1:key id})\nsnippet llGetObjectName\n llGetObjectName()\nsnippet llGetObjectPermMask\n llGetObjectPermMask(${1:integer mask})\nsnippet llGetObjectPrimCount\n llGetObjectPrimCount(${1:key prim})\nsnippet llGetOmega\n llGetOmega()\nsnippet llGetOwner\n llGetOwner()\nsnippet llGetOwnerKey\n llGetOwnerKey(${1:key id})\nsnippet llGetParcelDetails\n llGetParcelDetails(${1:vector pos}, ${2:list params})\nsnippet llGetParcelFlags\n llGetParcelFlags(${1:vector pos})\nsnippet llGetParcelMaxPrims\n llGetParcelMaxPrims(${1:vector pos}, ${2:integer sim_wide})\nsnippet llGetParcelMusicURL\n llGetParcelMusicURL()\nsnippet llGetParcelPrimCount\n llGetParcelPrimCount(${1:vector pos}, ${2:integer category}, ${3:integer sim_wide})\nsnippet llGetParcelPrimOwners\n llGetParcelPrimOwners(${1:vector pos})\nsnippet llGetPermissions\n llGetPermissions()\nsnippet llGetPermissionsKey\n llGetPermissionsKey()\nsnippet llGetPhysicsMaterial\n llGetPhysicsMaterial()\nsnippet llGetPos\n llGetPos()\nsnippet llGetPrimitiveParams\n llGetPrimitiveParams(${1:list params})\nsnippet llGetPrimMediaParams\n llGetPrimMediaParams(${1:integer face}, ${2:list params})\nsnippet llGetRegionAgentCount\n llGetRegionAgentCount()\nsnippet llGetRegionCorner\n llGetRegionCorner()\nsnippet llGetRegionFlags\n llGetRegionFlags()\nsnippet llGetRegionFPS\n llGetRegionFPS()\nsnippet llGetRegionName\n llGetRegionName()\nsnippet llGetRegionTimeDilation\n llGetRegionTimeDilation()\nsnippet llGetRootPosition\n llGetRootPosition()\nsnippet llGetRootRotation\n llGetRootRotation()\nsnippet llGetRot\n llGetRot()\nsnippet llGetScale\n llGetScale()\nsnippet llGetScriptName\n llGetScriptName()\nsnippet llGetScriptState\n llGetScriptState(${1:string script})\nsnippet llGetSimStats\n llGetSimStats(${1:integer stat_type})\nsnippet llGetSimulatorHostname\n llGetSimulatorHostname()\nsnippet llGetSPMaxMemory\n llGetSPMaxMemory()\nsnippet llGetStartParameter\n llGetStartParameter()\nsnippet llGetStaticPath\n llGetStaticPath(${1:vector start}, ${2:vector end}, ${3:float radius}, ${4:list params})\nsnippet llGetStatus\n llGetStatus(${1:integer status})\nsnippet llGetSubString\n llGetSubString(${1:string src}, ${2:integer start}, ${3:integer end})\nsnippet llGetSunDirection\n llGetSunDirection()\nsnippet llGetTexture\n llGetTexture(${1:integer face})\nsnippet llGetTextureOffset\n llGetTextureOffset(${1:integer face})\nsnippet llGetTextureRot\n llGetTextureRot(${1:integer face})\nsnippet llGetTextureScale\n llGetTextureScale(${1:integer face})\nsnippet llGetTime\n llGetTime()\nsnippet llGetTimeOfDay\n llGetTimeOfDay()\nsnippet llGetTimestamp\n llGetTimestamp()\nsnippet llGetTorque\n llGetTorque()\nsnippet llGetUnixTime\n llGetUnixTime()\nsnippet llGetUsedMemory\n llGetUsedMemory()\nsnippet llGetUsername\n llGetUsername(${1:key id})\nsnippet llGetVel\n llGetVel()\nsnippet llGetWallclock\n llGetWallclock()\nsnippet llGiveInventory\n llGiveInventory(${1:key destination}, ${2:string inventory});\n $0\nsnippet llGiveInventoryList\n llGiveInventoryList(${1:key target}, ${2:string folder}, ${3:list inventory});\n $0\nsnippet llGiveMoney\n llGiveMoney(${1:key destination}, ${2:integer amount})\nsnippet llGround\n llGround(${1:vector offset})\nsnippet llGroundContour\n llGroundContour(${1:vector offset})\nsnippet llGroundNormal\n llGroundNormal(${1:vector offset})\nsnippet llGroundRepel\n llGroundRepel(${1:float height}, ${2:integer water}, ${3:float tau});\n $0\nsnippet llGroundSlope\n llGroundSlope(${1:vector offset})\nsnippet llHTTPRequest\n llHTTPRequest(${1:string url}, ${2:list parameters}, ${3:string body})\nsnippet llHTTPResponse\n llHTTPResponse(${1:key request_id}, ${2:integer status}, ${3:string body});\n $0\nsnippet llInsertString\n llInsertString(${1:string dst}, ${2:integer pos}, ${3:string src})\nsnippet llInstantMessage\n llInstantMessage(${1:key user}, ${2:string message});\n $0\nsnippet llIntegerToBase64\n llIntegerToBase64(${1:integer number})\nsnippet llJson2List\n llJson2List(${1:string json})\nsnippet llJsonGetValue\n llJsonGetValue(${1:string json}, ${2:list specifiers})\nsnippet llJsonSetValue\n llJsonSetValue(${1:string json}, ${2:list specifiers}, ${3:string newValue})\nsnippet llJsonValueType\n llJsonValueType(${1:string json}, ${2:list specifiers})\nsnippet llKey2Name\n llKey2Name(${1:key id})\nsnippet llKeyCountKeyValue\n llKeyCountKeyValue()\nsnippet llKeysKeyValue\n llKeysKeyValue(${1:integer first}, ${2:integer count})\nsnippet llLinkParticleSystem\n llLinkParticleSystem(${1:integer link}, ${2:list rules});\n $0\nsnippet llLinkSitTarget\n llLinkSitTarget(${1:integer link}, ${2:vector offset}, ${3:rotation rot});\n $0\nsnippet llList2CSV\n llList2CSV(${1:list src})\nsnippet llList2Float\n llList2Float(${1:list src}, ${2:integer index})\nsnippet llList2Integer\n llList2Integer(${1:list src}, ${2:integer index})\nsnippet llList2Json\n llList2Json(${1:string type}, ${2:list values})\nsnippet llList2Key\n llList2Key(${1:list src}, ${2:integer index})\nsnippet llList2List\n llList2List(${1:list src}, ${2:integer start}, ${3:integer end})\nsnippet llList2ListStrided\n llList2ListStrided(${1:list src}, ${2:integer start}, ${3:integer end}, ${4:integer stride})\nsnippet llList2Rot\n llList2Rot(${1:list src}, ${2:integer index})\nsnippet llList2String\n llList2String(${1:list src}, ${2:integer index})\nsnippet llList2Vector\n llList2Vector(${1:list src}, ${2:integer index})\nsnippet llListen\n llListen(${1:integer channel}, ${2:string name}, ${3:key id}, ${4:string msg})\nsnippet llListenControl\n llListenControl(${1:integer handle}, ${2:integer active});\n $0\nsnippet llListenRemove\n llListenRemove(${1:integer handle});\n $0\nsnippet llListFindList\n llListFindList(${1:list src}, ${2:list test})\nsnippet llListInsertList\n llListInsertList(${1:list dest}, ${2:list src}, ${3:integer start})\nsnippet llListRandomize\n llListRandomize(${1:list src}, ${2:integer stride})\nsnippet llListReplaceList\n llListReplaceList(${1:list dest}, ${2:list src}, ${3:integer start}, ${4:integer end})\nsnippet llListSort\n llListSort(${1:list src}, ${2:integer stride}, ${3:integer ascending})\nsnippet llListStatistics\n llListStatistics(${1:integer operation}, ${2:list src})\nsnippet llLoadURL\n llLoadURL(${1:key agent}, ${2:string message}, ${3:string url});\n $0\nsnippet llLog\n llLog(${1:float val})\nsnippet llLog10\n llLog10(${1:float val})\nsnippet llLookAt\n llLookAt(${1:vector target}, ${2:float strength}, ${3:float damping});\n $0\nsnippet llLoopSound\n llLoopSound(${1:string sound}, ${2:float volume});\n $0\nsnippet llLoopSoundMaster\n llLoopSoundMaster(${1:string sound}, ${2:float volume});\n $0\nsnippet llLoopSoundSlave\n llLoopSoundSlave(${1:string sound}, ${2:float volume});\n $0\nsnippet llManageEstateAccess\n llManageEstateAccess(${1:integer action}, ${2:key agent})\nsnippet llMapDestination\n llMapDestination(${1:string simname}, ${2:vector pos}, ${3:vector look_at});\n $0\nsnippet llMD5String\n llMD5String(${1:string src}, ${2:integer nonce})\nsnippet llMessageLinked\n llMessageLinked(${1:integer link}, ${2:integer num}, ${3:string str}, ${4:key id});\n $0\nsnippet llMinEventDelay\n llMinEventDelay(${1:float delay});\n $0\nsnippet llModifyLand\n llModifyLand(${1:integer action}, ${2:integer brush});\n $0\nsnippet llModPow\n llModPow(${1:integer a}, ${2:integer b}, ${3:integer c})\nsnippet llMoveToTarget\n llMoveToTarget(${1:vector target}, ${2:float tau});\n $0\nsnippet llNavigateTo\n llNavigateTo(${1:vector pos}, ${2:list options});\n $0\nsnippet llOffsetTexture\n llOffsetTexture(${1:float u}, ${2:float v}, ${3:integer face});\n $0\nsnippet llOpenRemoteDataChannel\n llOpenRemoteDataChannel();\n $0\nsnippet llOverMyLand\n llOverMyLand(${1:key id})\nsnippet llOwnerSay\n llOwnerSay(${1:string msg});\n $0\nsnippet llParcelMediaCommandList\n llParcelMediaCommandList(${1:list commandList});\n $0\nsnippet llParcelMediaQuery\n llParcelMediaQuery(${1:list query})\nsnippet llParseString2List\n llParseString2List(${1:string src}, ${2:list separators}, ${3:list spacers})\nsnippet llParseStringKeepNulls\n llParseStringKeepNulls(${1:string src}, ${2:list separators}, ${3:list spacers})\nsnippet llParticleSystem\n llParticleSystem(${1:list rules});\n $0\nsnippet llPassCollisions\n llPassCollisions(${1:integer pass});\n $0\nsnippet llPassTouches\n llPassTouches(${1:integer pass});\n $0\nsnippet llPatrolPoints\n llPatrolPoints(${1:list patrolPoints}, ${2:list options});\n $0\nsnippet llPlaySound\n llPlaySound(${1:string sound}, ${2:float volume});\n $0\nsnippet llPlaySoundSlave\n llPlaySoundSlave(${1:string sound}, ${2:float volume});\n $0\nsnippet llPow\n llPow(${1:float base}, ${2:float exponent})\nsnippet llPreloadSound\n llPreloadSound(${1:string sound});\n $0\nsnippet llPursue\n llPursue(${1:key target}, ${2:list options});\n $0\nsnippet llPushObject\n llPushObject(${1:key target}, ${2:vector impulse}, ${3:vector ang_impulse}, ${4:integer local});\n $0\nsnippet llReadKeyValue\n llReadKeyValue(${1:string k})\nsnippet llRegionSay\n llRegionSay(${1:integer channel}, ${2:string msg});\n $0\nsnippet llRegionSayTo\n llRegionSayTo(${1:key target}, ${2:integer channel}, ${3:string msg});\n $0\nsnippet llReleaseControls\n llReleaseControls();\n $0\nsnippet llReleaseURL\n llReleaseURL(${1:string url});\n $0\nsnippet llRemoteDataReply\n llRemoteDataReply(${1:key channel}, ${2:key message_id}, ${3:string sdata}, ${4:integer idata});\n $0\nsnippet llRemoteLoadScriptPin\n llRemoteLoadScriptPin(${1:key target}, ${2:string name}, ${3:integer pin}, ${4:integer running}, ${5:integer start_param});\n $0\nsnippet llRemoveFromLandBanList\n llRemoveFromLandBanList(${1:key agent});\n $0\nsnippet llRemoveFromLandPassList\n llRemoveFromLandPassList(${1:key agent});\n $0\nsnippet llRemoveInventory\n llRemoveInventory(${1:string item});\n $0\nsnippet llRemoveVehicleFlags\n llRemoveVehicleFlags(${1:integer flags});\n $0\nsnippet llRequestAgentData\n llRequestAgentData(${1:key id}, ${2:integer data})\nsnippet llRequestDisplayName\n llRequestDisplayName(${1:key id})\nsnippet llRequestExperiencePermissions\n llRequestExperiencePermissions(${1:key agent}, ${2:string name})\nsnippet llRequestInventoryData\n llRequestInventoryData(${1:string name})\nsnippet llRequestPermissions\n llRequestPermissions(${1:key agent}, ${2:integer permissions})\nsnippet llRequestSecureURL\n llRequestSecureURL()\nsnippet llRequestSimulatorData\n llRequestSimulatorData(${1:string region}, ${2:integer data})\nsnippet llRequestURL\n llRequestURL()\nsnippet llRequestUsername\n llRequestUsername(${1:key id})\nsnippet llResetAnimationOverride\n llResetAnimationOverride(${1:string anim_state});\n $0\nsnippet llResetLandBanList\n llResetLandBanList();\n $0\nsnippet llResetLandPassList\n llResetLandPassList();\n $0\nsnippet llResetOtherScript\n llResetOtherScript(${1:string name});\n $0\nsnippet llResetScript\n llResetScript();\n $0\nsnippet llResetTime\n llResetTime();\n $0\nsnippet llReturnObjectsByID\n llReturnObjectsByID(${1:list objects})\nsnippet llReturnObjectsByOwner\n llReturnObjectsByOwner(${1:key owner}, ${2:integer scope})\nsnippet llRezAtRoot\n llRezAtRoot(${1:string inventory}, ${2:vector position}, ${3:vector velocity}, ${4:rotation rot}, ${5:integer param});\n $0\nsnippet llRezObject\n llRezObject(${1:string inventory}, ${2:vector pos}, ${3:vector vel}, ${4:rotation rot}, ${5:integer param});\n $0\nsnippet llRot2Angle\n llRot2Angle(${1:rotation rot})\nsnippet llRot2Axis\n llRot2Axis(${1:rotation rot})\nsnippet llRot2Euler\n llRot2Euler(${1:rotation quat})\nsnippet llRot2Fwd\n llRot2Fwd(${1:rotation q})\nsnippet llRot2Left\n llRot2Left(${1:rotation q})\nsnippet llRot2Up\n llRot2Up(${1:rotation q})\nsnippet llRotateTexture\n llRotateTexture(${1:float angle}, ${2:integer face});\n $0\nsnippet llRotBetween\n llRotBetween(${1:vector start}, ${2:vector end})\nsnippet llRotLookAt\n llRotLookAt(${1:rotation target_direction}, ${2:float strength}, ${3:float damping});\n $0\nsnippet llRotTarget\n llRotTarget(${1:rotation rot}, ${2:float error})\nsnippet llRotTargetRemove\n llRotTargetRemove(${1:integer handle});\n $0\nsnippet llRound\n llRound(${1:float val})\nsnippet llSameGroup\n llSameGroup(${1:key group})\nsnippet llSay\n llSay(${1:integer channel}, ${2:string msg});\n $0\nsnippet llScaleByFactor\n llScaleByFactor(${1:float scaling_factor})\nsnippet llScaleTexture\n llScaleTexture(${1:float u}, ${2:float v}, ${3:integer face});\n $0\nsnippet llScriptDanger\n llScriptDanger(${1:vector pos})\nsnippet llScriptProfiler\n llScriptProfiler(${1:integer flags});\n $0\nsnippet llSendRemoteData\n llSendRemoteData(${1:key channel}, ${2:string dest}, ${3:integer idata}, ${4:string sdata})\nsnippet llSensor\n llSensor(${1:string name}, ${2:key id}, ${3:integer type}, ${4:float range}, ${5:float arc});\n $0\nsnippet llSensorRepeat\n llSensorRepeat(${1:string name}, ${2:key id}, ${3:integer type}, ${4:float range}, ${5:float arc}, ${6:float rate});\n $0\nsnippet llSetAlpha\n llSetAlpha(${1:float alpha}, ${2:integer face});\n $0\nsnippet llSetAngularVelocity\n llSetAngularVelocity(${1:vector force}, ${2:integer local});\n $0\nsnippet llSetAnimationOverride\n llSetAnimationOverride(${1:string anim_state}, ${2:string anim})\nsnippet llSetBuoyancy\n llSetBuoyancy(${1:float buoyancy});\n $0\nsnippet llSetCameraAtOffset\n llSetCameraAtOffset(${1:vector offset});\n $0\nsnippet llSetCameraEyeOffset\n llSetCameraEyeOffset(${1:vector offset});\n $0\nsnippet llSetCameraParams\n llSetCameraParams(${1:list rules});\n $0\nsnippet llSetClickAction\n llSetClickAction(${1:integer action});\n $0\nsnippet llSetColor\n llSetColor(${1:vector color}, ${2:integer face});\n $0\nsnippet llSetContentType\n llSetContentType(${1:key request_id}, ${2:integer content_type});\n $0\nsnippet llSetDamage\n llSetDamage(${1:float damage});\n $0\nsnippet llSetForce\n llSetForce(${1:vector force}, ${2:integer local});\n $0\nsnippet llSetForceAndTorque\n llSetForceAndTorque(${1:vector force}, ${2:vector torque}, ${3:integer local});\n $0\nsnippet llSetHoverHeight\n llSetHoverHeight(${1:float height}, ${2:integer water}, ${3:float tau});\n $0\nsnippet llSetKeyframedMotion\n llSetKeyframedMotion(${1:list keyframes}, ${2:list options});\n $0\nsnippet llSetLinkAlpha\n llSetLinkAlpha(${1:integer link}, ${2:float alpha}, ${3:integer face});\n $0\nsnippet llSetLinkCamera\n llSetLinkCamera(${1:integer link}, ${2:vector eye}, ${3:vector at});\n $0\nsnippet llSetLinkColor\n llSetLinkColor(${1:integer link}, ${2:vector color}, ${3:integer face});\n $0\nsnippet llSetLinkMedia\n llSetLinkMedia(${1:integer link}, ${2:integer face}, ${3:list params});\n $0\nsnippet llSetLinkPrimitiveParams\n llSetLinkPrimitiveParams(${1:integer link}, ${2:list rules});\n $0\nsnippet llSetLinkPrimitiveParamsFast\n llSetLinkPrimitiveParamsFast(${1:integer link}, ${2:list rules});\n $0\nsnippet llSetLinkTexture\n llSetLinkTexture(${1:integer link}, ${2:string texture}, ${3:integer face});\n $0\nsnippet llSetLinkTextureAnim\n llSetLinkTextureAnim(${1:integer link}, ${2:integer mode}, ${3:integer face}, ${4:integer sizex}, ${5:integer sizey}, ${6:float start}, ${7:float length}, ${8:float rate});\n $0\nsnippet llSetLocalRot\n llSetLocalRot(${1:rotation rot});\n $0\nsnippet llSetMemoryLimit\n llSetMemoryLimit(${1:integer limit})\nsnippet llSetObjectDesc\n llSetObjectDesc(${1:string description});\n $0\nsnippet llSetObjectName\n llSetObjectName(${1:string name});\n $0\nsnippet llSetParcelMusicURL\n llSetParcelMusicURL(${1:string url});\n $0\nsnippet llSetPayPrice\n llSetPayPrice(${1:integer price}, [${2:integer price_button_a}, ${3:integer price_button_b}, ${4:integer price_button_c}, ${5:integer price_button_d}]);\n $0\nsnippet llSetPhysicsMaterial\n llSetPhysicsMaterial(${1:integer mask}, ${2:float gravity_multiplier}, ${3:float restitution}, ${4:float friction}, ${5:float density});\n $0\nsnippet llSetPos\n llSetPos(${1:vector pos});\n $0\nsnippet llSetPrimitiveParams\n llSetPrimitiveParams(${1:list rules});\n $0\nsnippet llSetPrimMediaParams\n llSetPrimMediaParams(${1:integer face}, ${2:list params});\n $0\nsnippet llSetRegionPos\n llSetRegionPos(${1:vector position})\nsnippet llSetRemoteScriptAccessPin\n llSetRemoteScriptAccessPin(${1:integer pin});\n $0\nsnippet llSetRot\n llSetRot(${1:rotation rot});\n $0\nsnippet llSetScale\n llSetScale(${1:vector size});\n $0\nsnippet llSetScriptState\n llSetScriptState(${1:string name}, ${2:integer run});\n $0\nsnippet llSetSitText\n llSetSitText(${1:string text});\n $0\nsnippet llSetSoundQueueing\n llSetSoundQueueing(${1:integer queue});\n $0\nsnippet llSetSoundRadius\n llSetSoundRadius(${1:float radius});\n $0\nsnippet llSetStatus\n llSetStatus(${1:integer status}, ${2:integer value});\n $0\nsnippet llSetText\n llSetText(${1:string text}, ${2:vector color}, ${3:float alpha});\n $0\nsnippet llSetTexture\n llSetTexture(${1:string texture}, ${2:integer face});\n $0\nsnippet llSetTextureAnim\n llSetTextureAnim(${1:integer mode}, ${2:integer face}, ${3:integer sizex}, ${4:integer sizey}, ${5:float start}, ${6:float length}, ${7:float rate});\n $0\nsnippet llSetTimerEvent\n llSetTimerEvent(${1:float sec});\n $0\nsnippet llSetTorque\n llSetTorque(${1:vector torque}, ${2:integer local});\n $0\nsnippet llSetTouchText\n llSetTouchText(${1:string text});\n $0\nsnippet llSetVehicleFlags\n llSetVehicleFlags(${1:integer flags});\n $0\nsnippet llSetVehicleFloatParam\n llSetVehicleFloatParam(${1:integer param}, ${2:float value});\n $0\nsnippet llSetVehicleRotationParam\n llSetVehicleRotationParam(${1:integer param}, ${2:rotation rot});\n $0\nsnippet llSetVehicleType\n llSetVehicleType(${1:integer type});\n $0\nsnippet llSetVehicleVectorParam\n llSetVehicleVectorParam(${1:integer param}, ${2:vector vec});\n $0\nsnippet llSetVelocity\n llSetVelocity(${1:vector force}, ${2:integer local});\n $0\nsnippet llSHA1String\n llSHA1String(${1:string src})\nsnippet llShout\n llShout(${1:integer channel}, ${2:string msg});\n $0\nsnippet llSin\n llSin(${1:float theta})\nsnippet llSitTarget\n llSitTarget(${1:vector offset}, ${2:rotation rot});\n $0\nsnippet llSleep\n llSleep(${1:float sec});\n $0\nsnippet llSqrt\n llSqrt(${1:float val})\nsnippet llStartAnimation\n llStartAnimation(${1:string anim});\n $0\nsnippet llStopAnimation\n llStopAnimation(${1:string anim});\n $0\nsnippet llStopHover\n llStopHover();\n $0\nsnippet llStopLookAt\n llStopLookAt();\n $0\nsnippet llStopMoveToTarget\n llStopMoveToTarget();\n $0\nsnippet llStopSound\n llStopSound();\n $0\nsnippet llStringLength\n llStringLength(${1:string str})\nsnippet llStringToBase64\n llStringToBase64(${1:string str})\nsnippet llStringTrim\n llStringTrim(${1:string src}, ${2:integer type})\nsnippet llSubStringIndex\n llSubStringIndex(${1:string source}, ${2:string pattern})\nsnippet llTakeControls\n llTakeControls(${1:integer controls}, ${2:integer accept}, ${3:integer pass_on});\n $0\nsnippet llTan\n llTan(${1:float theta})\nsnippet llTarget\n llTarget(${1:vector position}, ${2:float range})\nsnippet llTargetOmega\n llTargetOmega(${1:vector axis}, ${2:float spinrate}, ${3:float gain});\n $0\nsnippet llTargetRemove\n llTargetRemove(${1:integer handle});\n $0\nsnippet llTeleportAgent\n llTeleportAgent(${1:key agent}, ${2:string landmark}, ${3:vector position}, ${4:vector look_at});\n $0\nsnippet llTeleportAgentGlobalCoords\n llTeleportAgentGlobalCoords(${1:key agent}, ${2:vector global_coordinates}, ${3:vector region_coordinates}, ${4:vector look_at});\n $0\nsnippet llTeleportAgentHome\n llTeleportAgentHome(${1:key agent});\n $0\nsnippet llTextBox\n llTextBox(${1:key agent}, ${2:string message}, ${3:integer channel});\n $0\nsnippet llToLower\n llToLower(${1:string src})\nsnippet llToUpper\n llToUpper(${1:string src})\nsnippet llTransferLindenDollars\n llTransferLindenDollars(${1:key destination}, ${2:integer amount})\nsnippet llTriggerSound\n llTriggerSound(${1:string sound}, ${2:float volume});\n $0\nsnippet llTriggerSoundLimited\n llTriggerSoundLimited(${1:string sound}, ${2:float volume}, ${3:vector top_north_east}, ${4:vector bottom_south_west});\n $0\nsnippet llUnescapeURL\n llUnescapeURL(${1:string url})\nsnippet llUnSit\n llUnSit(${1:key id});\n $0\nsnippet llUpdateCharacter\n llUpdateCharacter(${1:list options})\nsnippet llUpdateKeyValue\n llUpdateKeyValue(${1:string k}, ${2:string v}, ${3:integer checked}, ${4:string ov})\nsnippet llVecDist\n llVecDist(${1:vector vec_a}, ${2:vector vec_b})\nsnippet llVecMag\n llVecMag(${1:vector vec})\nsnippet llVecNorm\n llVecNorm(${1:vector vec})\nsnippet llVolumeDetect\n llVolumeDetect(${1:integer detect});\n $0\nsnippet llWanderWithin\n llWanderWithin(${1:vector origin}, ${2:vector dist}, ${3:list options});\n $0\nsnippet llWater\n llWater(${1:vector offset});\n $0\nsnippet llWhisper\n llWhisper(${1:integer channel}, ${2:string msg});\n $0\nsnippet llWind\n llWind(${1:vector offset});\n $0\nsnippet llXorBase64\n llXorBase64(${1:string str1}, ${2:string str2})\nsnippet money\n money(${1:key id}, ${2:integer amount})\n {\n $0\n }\nsnippet object_rez\n object_rez(${1:key id})\n {\n $0\n }\nsnippet on_rez\n on_rez(${1:integer start_param})\n {\n $0\n }\nsnippet path_update\n path_update(${1:integer type}, ${2:list reserved})\n {\n $0\n }\nsnippet remote_data\n remote_data(${1:integer event_type}, ${2:key channel}, ${3:key message_id}, ${4:string sender}, ${5:integer idata}, ${6:string sdata})\n {\n $0\n }\nsnippet run_time_permissions\n run_time_permissions(${1:integer perm})\n {\n $0\n }\nsnippet sensor\n sensor(${1:integer index})\n {\n $0\n }\nsnippet state\n state ${1:name}\nsnippet touch\n touch(${1:integer index})\n {\n $0\n }\nsnippet touch_end\n touch_end(${1:integer index})\n {\n $0\n }\nsnippet touch_start\n touch_start(${1:integer index})\n {\n $0\n }\nsnippet transaction_result\n transaction_result(${1:key id}, ${2:integer success}, ${3:string data})\n {\n $0\n }\nsnippet while\n while (${1:condition})\n {\n $0\n }\n",t.scope="lsl"}) \ No newline at end of file
diff --git a/library/ace/snippets/lua.js b/library/ace/snippets/lua.js
new file mode 100644
index 000000000..091d96a48
--- /dev/null
+++ b/library/ace/snippets/lua.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/lua",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet #!\n #!/usr/bin/env lua\n $1\nsnippet local\n local ${1:x} = ${2:1}\nsnippet fun\n function ${1:fname}(${2:...})\n ${3:-- body}\n end\nsnippet for\n for ${1:i}=${2:1},${3:10} do\n ${4:print(i)}\n end\nsnippet forp\n for ${1:i},${2:v} in pairs(${3:table_name}) do\n ${4:-- body}\n end\nsnippet fori\n for ${1:i},${2:v} in ipairs(${3:table_name}) do\n ${4:-- body}\n end\n",t.scope="lua"}) \ No newline at end of file
diff --git a/library/ace/snippets/luapage.js b/library/ace/snippets/luapage.js
new file mode 100644
index 000000000..b78dcf942
--- /dev/null
+++ b/library/ace/snippets/luapage.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/luapage",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="luapage"}) \ No newline at end of file
diff --git a/library/ace/snippets/lucene.js b/library/ace/snippets/lucene.js
new file mode 100644
index 000000000..232999adb
--- /dev/null
+++ b/library/ace/snippets/lucene.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/lucene",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="lucene"}) \ No newline at end of file
diff --git a/library/ace/snippets/makefile.js b/library/ace/snippets/makefile.js
new file mode 100644
index 000000000..c9870856c
--- /dev/null
+++ b/library/ace/snippets/makefile.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/makefile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet ifeq\n ifeq (${1:cond0},${2:cond1})\n ${3:code}\n endif\n",t.scope="makefile"}) \ No newline at end of file
diff --git a/library/ace/snippets/markdown.js b/library/ace/snippets/markdown.js
new file mode 100644
index 000000000..0a4a8f8bd
--- /dev/null
+++ b/library/ace/snippets/markdown.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/markdown",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Markdown\n\n# Includes octopress (http://octopress.org/) snippets\n\nsnippet [\n [${1:text}](http://${2:address} "${3:title}")\nsnippet [*\n [${1:link}](${2:`@*`} "${3:title}")${4}\n\nsnippet [:\n [${1:id}]: http://${2:url} "${3:title}"\nsnippet [:*\n [${1:id}]: ${2:`@*`} "${3:title}"\n\nsnippet ![\n ![${1:alttext}](${2:/images/image.jpg} "${3:title}")\nsnippet ![*\n ![${1:alt}](${2:`@*`} "${3:title}")${4}\n\nsnippet ![:\n ![${1:id}]: ${2:url} "${3:title}"\nsnippet ![:*\n ![${1:id}]: ${2:`@*`} "${3:title}"\n\nsnippet ===\nregex /^/=+/=*//\n ${PREV_LINE/./=/g}\n \n ${0}\nsnippet ---\nregex /^/-+/-*//\n ${PREV_LINE/./-/g}\n \n ${0}\nsnippet blockquote\n {% blockquote %}\n ${1:quote}\n {% endblockquote %}\n\nsnippet blockquote-author\n {% blockquote ${1:author}, ${2:title} %}\n ${3:quote}\n {% endblockquote %}\n\nsnippet blockquote-link\n {% blockquote ${1:author} ${2:URL} ${3:link_text} %}\n ${4:quote}\n {% endblockquote %}\n\nsnippet bt-codeblock-short\n ```\n ${1:code_snippet}\n ```\n\nsnippet bt-codeblock-full\n ``` ${1:language} ${2:title} ${3:URL} ${4:link_text}\n ${5:code_snippet}\n ```\n\nsnippet codeblock-short\n {% codeblock %}\n ${1:code_snippet}\n {% endcodeblock %}\n\nsnippet codeblock-full\n {% codeblock ${1:title} lang:${2:language} ${3:URL} ${4:link_text} %}\n ${5:code_snippet}\n {% endcodeblock %}\n\nsnippet gist-full\n {% gist ${1:gist_id} ${2:filename} %}\n\nsnippet gist-short\n {% gist ${1:gist_id} %}\n\nsnippet img\n {% img ${1:class} ${2:URL} ${3:width} ${4:height} ${5:title_text} ${6:alt_text} %}\n\nsnippet youtube\n {% youtube ${1:video_id} %}\n\n# The quote should appear only once in the text. It is inherently part of it.\n# See http://octopress.org/docs/plugins/pullquote/ for more info.\n\nsnippet pullquote\n {% pullquote %}\n ${1:text} {" ${2:quote} "} ${3:text}\n {% endpullquote %}\n',t.scope="markdown"}) \ No newline at end of file
diff --git a/library/ace/snippets/mask.js b/library/ace/snippets/mask.js
new file mode 100644
index 000000000..d615148f8
--- /dev/null
+++ b/library/ace/snippets/mask.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/mask",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mask"}) \ No newline at end of file
diff --git a/library/ace/snippets/matlab.js b/library/ace/snippets/matlab.js
new file mode 100644
index 000000000..e2ee0a767
--- /dev/null
+++ b/library/ace/snippets/matlab.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/matlab",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="matlab"}) \ No newline at end of file
diff --git a/library/ace/snippets/maze.js b/library/ace/snippets/maze.js
new file mode 100644
index 000000000..c8b62044b
--- /dev/null
+++ b/library/ace/snippets/maze.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/maze",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet >\ndescription assignment\nscope maze\n -> ${1}= ${2}\n\nsnippet >\ndescription if\nscope maze\n -> IF ${2:**} THEN %${3:L} ELSE %${4:R}\n",t.scope="maze"}) \ No newline at end of file
diff --git a/library/ace/snippets/mel.js b/library/ace/snippets/mel.js
new file mode 100644
index 000000000..1e1c4743b
--- /dev/null
+++ b/library/ace/snippets/mel.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/mel",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mel"}) \ No newline at end of file
diff --git a/library/ace/snippets/mips_assembler.js b/library/ace/snippets/mips_assembler.js
new file mode 100644
index 000000000..6af8f0291
--- /dev/null
+++ b/library/ace/snippets/mips_assembler.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/mips_assembler",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mips_assembler"}) \ No newline at end of file
diff --git a/library/ace/snippets/mipsassembler.js b/library/ace/snippets/mipsassembler.js
new file mode 100644
index 000000000..015d7f8dc
--- /dev/null
+++ b/library/ace/snippets/mipsassembler.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/mipsassembler",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}) \ No newline at end of file
diff --git a/library/ace/snippets/mushcode.js b/library/ace/snippets/mushcode.js
new file mode 100644
index 000000000..25b7e76a1
--- /dev/null
+++ b/library/ace/snippets/mushcode.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/mushcode",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mushcode"}) \ No newline at end of file
diff --git a/library/ace/snippets/mysql.js b/library/ace/snippets/mysql.js
new file mode 100644
index 000000000..71b06d9cb
--- /dev/null
+++ b/library/ace/snippets/mysql.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/mysql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mysql"}) \ No newline at end of file
diff --git a/library/ace/snippets/nix.js b/library/ace/snippets/nix.js
new file mode 100644
index 000000000..c44b96735
--- /dev/null
+++ b/library/ace/snippets/nix.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/nix",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="nix"}) \ No newline at end of file
diff --git a/library/ace/snippets/nsis.js b/library/ace/snippets/nsis.js
new file mode 100644
index 000000000..1b0bf3968
--- /dev/null
+++ b/library/ace/snippets/nsis.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/nsis",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}) \ No newline at end of file
diff --git a/library/ace/snippets/objectivec.js b/library/ace/snippets/objectivec.js
new file mode 100644
index 000000000..aa49339f0
--- /dev/null
+++ b/library/ace/snippets/objectivec.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/objectivec",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="objectivec"}) \ No newline at end of file
diff --git a/library/ace/snippets/ocaml.js b/library/ace/snippets/ocaml.js
new file mode 100644
index 000000000..c9a46aa90
--- /dev/null
+++ b/library/ace/snippets/ocaml.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/ocaml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ocaml"}) \ No newline at end of file
diff --git a/library/ace/snippets/pascal.js b/library/ace/snippets/pascal.js
new file mode 100644
index 000000000..176f7d95e
--- /dev/null
+++ b/library/ace/snippets/pascal.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/pascal",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="pascal"}) \ No newline at end of file
diff --git a/library/ace/snippets/perl.js b/library/ace/snippets/perl.js
new file mode 100644
index 000000000..0668b47c1
--- /dev/null
+++ b/library/ace/snippets/perl.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/perl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# #!/usr/bin/perl\nsnippet #!\n #!/usr/bin/env perl\n\n# Hash Pointer\nsnippet .\n =>\n# Function\nsnippet sub\n sub ${1:function_name} {\n ${2:#body ...}\n }\n# Conditional\nsnippet if\n if (${1}) {\n ${2:# body...}\n }\n# Conditional if..else\nsnippet ife\n if (${1}) {\n ${2:# body...}\n }\n else {\n ${3:# else...}\n }\n# Conditional if..elsif..else\nsnippet ifee\n if (${1}) {\n ${2:# body...}\n }\n elsif (${3}) {\n ${4:# elsif...}\n }\n else {\n ${5:# else...}\n }\n# Conditional One-line\nsnippet xif\n ${1:expression} if ${2:condition};${3}\n# Unless conditional\nsnippet unless\n unless (${1}) {\n ${2:# body...}\n }\n# Unless conditional One-line\nsnippet xunless\n ${1:expression} unless ${2:condition};${3}\n# Try/Except\nsnippet eval\n local $@;\n eval {\n ${1:# do something risky...}\n };\n if (my $e = $@) {\n ${2:# handle failure...}\n }\n# While Loop\nsnippet wh\n while (${1}) {\n ${2:# body...}\n }\n# While Loop One-line\nsnippet xwh\n ${1:expression} while ${2:condition};${3}\n# C-style For Loop\nsnippet cfor\n for (my $${2:var} = 0; $$2 < ${1:count}; $$2${3:++}) {\n ${4:# body...}\n }\n# For loop one-line\nsnippet xfor\n ${1:expression} for @${2:array};${3}\n# Foreach Loop\nsnippet for\n foreach my $${1:x} (@${2:array}) {\n ${3:# body...}\n }\n# Foreach Loop One-line\nsnippet fore\n ${1:expression} foreach @${2:array};${3}\n# Package\nsnippet package\n package ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`};\n\n ${2}\n\n 1;\n\n __END__\n# Package syntax perl >= 5.14\nsnippet packagev514\n package ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`} ${2:0.99};\n\n ${3}\n\n 1;\n\n __END__\n#moose\nsnippet moose\n use Moose;\n use namespace::autoclean;\n ${1:#}BEGIN {extends '${2:ParentClass}'};\n\n ${3}\n# parent\nsnippet parent\n use parent qw(${1:Parent Class});\n# Read File\nsnippet slurp\n my $${1:var} = do { local $/; open my $file, '<', \"${2:file}\"; <$file> };\n ${3}\n# strict warnings\nsnippet strwar\n use strict;\n use warnings;\n# older versioning with perlcritic bypass\nsnippet vers\n ## no critic\n our $VERSION = '${1:version}';\n eval $VERSION;\n ## use critic\n# new 'switch' like feature\nsnippet switch\n use feature 'switch';\n\n# Anonymous subroutine\nsnippet asub\n sub {\n ${1:# body }\n }\n\n\n\n# Begin block\nsnippet begin\n BEGIN {\n ${1:# begin body}\n }\n\n# call package function with some parameter\nsnippet pkgmv\n __PACKAGE__->${1:package_method}(${2:var})\n\n# call package function without a parameter\nsnippet pkgm\n __PACKAGE__->${1:package_method}()\n\n# call package \"get_\" function without a parameter\nsnippet pkget\n __PACKAGE__->get_${1:package_method}()\n\n# call package function with a parameter\nsnippet pkgetv\n __PACKAGE__->get_${1:package_method}(${2:var})\n\n# complex regex\nsnippet qrx\n qr/\n ${1:regex}\n /xms\n\n#simpler regex\nsnippet qr/\n qr/${1:regex}/x\n\n#given\nsnippet given\n given ($${1:var}) {\n ${2:# cases}\n ${3:# default}\n }\n\n# switch-like case\nsnippet when\n when (${1:case}) {\n ${2:# body}\n }\n\n# hash slice\nsnippet hslice\n @{ ${1:hash} }{ ${2:array} }\n\n\n# map\nsnippet map\n map { ${2: body } } ${1: @array } ;\n\n\n\n# Pod stub\nsnippet ppod\n =head1 NAME\n\n ${1:ClassName} - ${2:ShortDesc}\n\n =head1 SYNOPSIS\n\n use $1;\n\n ${3:# synopsis...}\n\n =head1 DESCRIPTION\n\n ${4:# longer description...}\n\n\n =head1 INTERFACE\n\n\n =head1 DEPENDENCIES\n\n\n =head1 SEE ALSO\n\n\n# Heading for a subroutine stub\nsnippet psub\n =head2 ${1:MethodName}\n\n ${2:Summary....}\n\n# Heading for inline subroutine pod\nsnippet psubi\n =head2 ${1:MethodName}\n\n ${2:Summary...}\n\n\n =cut\n# inline documented subroutine\nsnippet subpod\n =head2 $1\n\n Summary of $1\n\n =cut\n\n sub ${1:subroutine_name} {\n ${2:# body...}\n }\n# Subroutine signature\nsnippet parg\n =over 2\n\n =item\n Arguments\n\n\n =over 3\n\n =item\n C<${1:DataStructure}>\n\n ${2:Sample}\n\n\n =back\n\n\n =item\n Return\n\n =over 3\n\n\n =item\n C<${3:...return data}>\n\n\n =back\n\n\n =back\n\n\n\n# Moose has\nsnippet has\n has ${1:attribute} => (\n is => '${2:ro|rw}',\n isa => '${3:Str|Int|HashRef|ArrayRef|etc}',\n default => sub {\n ${4:defaultvalue}\n },\n ${5:# other attributes}\n );\n\n\n# override\nsnippet override\n override ${1:attribute} => sub {\n ${2:# my $self = shift;};\n ${3:# my ($self, $args) = @_;};\n };\n\n\n# use test classes\nsnippet tuse\n use Test::More;\n use Test::Deep; # (); # uncomment to stop prototype errors\n use Test::Exception;\n\n# local test lib\nsnippet tlib\n use lib qw{ ./t/lib };\n\n#test methods\nsnippet tmeths\n $ENV{TEST_METHOD} = '${1:regex}';\n\n# runtestclass\nsnippet trunner\n use ${1:test_class};\n $1->runtests();\n\n# Test::Class-style test\nsnippet tsub\n sub t${1:number}_${2:test_case} :Test(${3:num_of_tests}) {\n my $self = shift;\n ${4:# body}\n\n }\n\n# Test::Routine-style test\nsnippet trsub\n test ${1:test_name} => { description => '${2:Description of test.}'} => sub {\n my ($self) = @_;\n ${3:# test code}\n };\n\n#prep test method\nsnippet tprep\n sub prep${1:number}_${2:test_case} :Test(startup) {\n my $self = shift;\n ${4:# body}\n }\n\n# cause failures to print stack trace\nsnippet debug_trace\n use Carp; # 'verbose';\n # cloak \"die\"\n # warn \"warning\"\n $SIG{'__DIE__'} = sub {\n require Carp; Carp::confess\n };\n\n",t.scope="perl"}) \ No newline at end of file
diff --git a/library/ace/snippets/pgsql.js b/library/ace/snippets/pgsql.js
new file mode 100644
index 000000000..260ff292d
--- /dev/null
+++ b/library/ace/snippets/pgsql.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/pgsql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="pgsql"}) \ No newline at end of file
diff --git a/library/ace/snippets/php.js b/library/ace/snippets/php.js
new file mode 100644
index 000000000..5350bb6e8
--- /dev/null
+++ b/library/ace/snippets/php.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/php",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet <?\n <?php\n\n ${1}\nsnippet ec\n echo ${1};\nsnippet <?e\n <?php echo ${1} ?>\n# this one is for php5.4\nsnippet <?=\n <?=${1}?>\nsnippet ns\n namespace ${1:Foo\\Bar\\Baz};\n ${2}\nsnippet use\n use ${1:Foo\\Bar\\Baz};\n ${2}\nsnippet c\n ${1:abstract }class ${2:$FILENAME}\n {\n ${3}\n }\nsnippet i\n interface ${1:$FILENAME}\n {\n ${2}\n }\nsnippet t.\n $this->${1}\nsnippet f\n function ${1:foo}(${2:array }${3:$bar})\n {\n ${4}\n }\n# method\nsnippet m\n ${1:abstract }${2:protected}${3: static} function ${4:foo}(${5:array }${6:$bar})\n {\n ${7}\n }\n# setter method\nsnippet sm \n /**\n * Sets the value of ${1:foo}\n *\n * @param ${2:$1} $$1 ${3:description}\n *\n * @return ${4:$FILENAME}\n */\n ${5:public} function set${6:$2}(${7:$2 }$$1)\n {\n $this->${8:$1} = $$1;\n return $this;\n }${9}\n# getter method\nsnippet gm\n /**\n * Gets the value of ${1:foo}\n *\n * @return ${2:$1}\n */\n ${3:public} function get${4:$2}()\n {\n return $this->${5:$1};\n }${6}\n#setter\nsnippet $s\n ${1:$foo}->set${2:Bar}(${3});\n#getter\nsnippet $g\n ${1:$foo}->get${2:Bar}();\n\n# Tertiary conditional\nsnippet =?:\n $${1:foo} = ${2:true} ? ${3:a} : ${4};\nsnippet ?:\n ${1:true} ? ${2:a} : ${3}\n\nsnippet C\n $_COOKIE['${1:variable}']${2}\nsnippet E\n $_ENV['${1:variable}']${2}\nsnippet F\n $_FILES['${1:variable}']${2}\nsnippet G\n $_GET['${1:variable}']${2}\nsnippet P\n $_POST['${1:variable}']${2}\nsnippet R\n $_REQUEST['${1:variable}']${2}\nsnippet S\n $_SERVER['${1:variable}']${2}\nsnippet SS\n $_SESSION['${1:variable}']${2}\n \n# the following are old ones\nsnippet inc\n include '${1:file}';${2}\nsnippet inc1\n include_once '${1:file}';${2}\nsnippet req\n require '${1:file}';${2}\nsnippet req1\n require_once '${1:file}';${2}\n# Start Docblock\nsnippet /*\n /**\n * ${1}\n */\n# Class - post doc\nsnippet doc_cp\n /**\n * ${1:undocumented class}\n *\n * @package ${2:default}\n * @subpackage ${3:default}\n * @author ${4:`g:snips_author`}\n */${5}\n# Class Variable - post doc\nsnippet doc_vp\n /**\n * ${1:undocumented class variable}\n *\n * @var ${2:string}\n */${3}\n# Class Variable\nsnippet doc_v\n /**\n * ${3:undocumented class variable}\n *\n * @var ${4:string}\n */\n ${1:var} $${2};${5}\n# Class\nsnippet doc_c\n /**\n * ${3:undocumented class}\n *\n * @package ${4:default}\n * @subpackage ${5:default}\n * @author ${6:`g:snips_author`}\n */\n ${1:}class ${2:}\n {\n ${7}\n } // END $1class $2\n# Constant Definition - post doc\nsnippet doc_dp\n /**\n * ${1:undocumented constant}\n */${2}\n# Constant Definition\nsnippet doc_d\n /**\n * ${3:undocumented constant}\n */\n define(${1}, ${2});${4}\n# Function - post doc\nsnippet doc_fp\n /**\n * ${1:undocumented function}\n *\n * @return ${2:void}\n * @author ${3:`g:snips_author`}\n */${4}\n# Function signature\nsnippet doc_s\n /**\n * ${4:undocumented function}\n *\n * @return ${5:void}\n * @author ${6:`g:snips_author`}\n */\n ${1}function ${2}(${3});${7}\n# Function\nsnippet doc_f\n /**\n * ${4:undocumented function}\n *\n * @return ${5:void}\n * @author ${6:`g:snips_author`}\n */\n ${1}function ${2}(${3})\n {${7}\n }\n# Header\nsnippet doc_h\n /**\n * ${1}\n *\n * @author ${2:`g:snips_author`}\n * @version ${3:$Id$}\n * @copyright ${4:$2}, `strftime('%d %B, %Y')`\n * @package ${5:default}\n */\n \n# Interface\nsnippet interface\n /**\n * ${2:undocumented class}\n *\n * @package ${3:default}\n * @author ${4:`g:snips_author`}\n */\n interface ${1:$FILENAME}\n {\n ${5}\n }\n# class ...\nsnippet class\n /**\n * ${1}\n */\n class ${2:$FILENAME}\n {\n ${3}\n /**\n * ${4}\n */\n ${5:public} function ${6:__construct}(${7:argument})\n {\n ${8:// code...}\n }\n }\n# define(...)\nsnippet def\n define('${1}'${2});${3}\n# defined(...)\nsnippet def?\n ${1}defined('${2}')${3}\nsnippet wh\n while (${1:/* condition */}) {\n ${2:// code...}\n }\n# do ... while\nsnippet do\n do {\n ${2:// code... }\n } while (${1:/* condition */});\nsnippet if\n if (${1:/* condition */}) {\n ${2:// code...}\n }\nsnippet ifil\n <?php if (${1:/* condition */}): ?>\n ${2:<!-- code... -->}\n <?php endif; ?>\nsnippet ife\n if (${1:/* condition */}) {\n ${2:// code...}\n } else {\n ${3:// code...}\n }\n ${4}\nsnippet ifeil\n <?php if (${1:/* condition */}): ?>\n ${2:<!-- html... -->}\n <?php else: ?>\n ${3:<!-- html... -->}\n <?php endif; ?>\n ${4}\nsnippet else\n else {\n ${1:// code...}\n }\nsnippet elseif\n elseif (${1:/* condition */}) {\n ${2:// code...}\n }\nsnippet switch\n switch ($${1:variable}) {\n case '${2:value}':\n ${3:// code...}\n break;\n ${5}\n default:\n ${4:// code...}\n break;\n }\nsnippet case\n case '${1:value}':\n ${2:// code...}\n break;${3}\nsnippet for\n for ($${2:i} = 0; $$2 < ${1:count}; $$2${3:++}) {\n ${4: // code...}\n }\nsnippet foreach\n foreach ($${1:variable} as $${2:value}) {\n ${3:// code...}\n }\nsnippet foreachil\n <?php foreach ($${1:variable} as $${2:value}): ?>\n ${3:<!-- html... -->}\n <?php endforeach; ?>\nsnippet foreachk\n foreach ($${1:variable} as $${2:key} => $${3:value}) {\n ${4:// code...}\n }\nsnippet foreachkil\n <?php foreach ($${1:variable} as $${2:key} => $${3:value}): ?>\n ${4:<!-- html... -->}\n <?php endforeach; ?>\n# $... = array (...)\nsnippet array\n $${1:arrayName} = array('${2}' => ${3});${4}\nsnippet try\n try {\n ${2}\n } catch (${1:Exception} $e) {\n }\n# lambda with closure\nsnippet lambda\n ${1:static }function (${2:args}) use (${3:&$x, $y /*put vars in scope (closure) */}) {\n ${4}\n };\n# pre_dump();\nsnippet pd\n echo '<pre>'; var_dump(${1}); echo '</pre>';\n# pre_dump(); die();\nsnippet pdd\n echo '<pre>'; var_dump(${1}); echo '</pre>'; die(${2:});\nsnippet vd\n var_dump(${1});\nsnippet vdd\n var_dump(${1}); die(${2:});\nsnippet http_redirect\n header (\"HTTP/1.1 301 Moved Permanently\"); \n header (\"Location: \".URL); \n exit();\n# Getters & Setters\nsnippet gs\n /**\n * Gets the value of ${1:foo}\n *\n * @return ${2:$1}\n */\n public function get${3:$2}()\n {\n return $this->${4:$1};\n }\n\n /**\n * Sets the value of $1\n *\n * @param $2 $$1 ${5:description}\n *\n * @return ${6:$FILENAME}\n */\n public function set$3(${7:$2 }$$1)\n {\n $this->$4 = $$1;\n return $this;\n }${8}\n# anotation, get, and set, useful for doctrine\nsnippet ags\n /**\n * ${1:description}\n * \n * @${7}\n */\n ${2:protected} $${3:foo};\n\n public function get${4:$3}()\n {\n return $this->$3;\n }\n\n public function set$4(${5:$4 }$${6:$3})\n {\n $this->$3 = $$6;\n return $this;\n }\nsnippet rett\n return true;\nsnippet retf\n return false;\n",t.scope="php"}) \ No newline at end of file
diff --git a/library/ace/snippets/plain_text.js b/library/ace/snippets/plain_text.js
new file mode 100644
index 000000000..25ec4afae
--- /dev/null
+++ b/library/ace/snippets/plain_text.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/plain_text",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="plain_text"}) \ No newline at end of file
diff --git a/library/ace/snippets/powershell.js b/library/ace/snippets/powershell.js
new file mode 100644
index 000000000..1672035d7
--- /dev/null
+++ b/library/ace/snippets/powershell.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/powershell",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="powershell"}) \ No newline at end of file
diff --git a/library/ace/snippets/praat.js b/library/ace/snippets/praat.js
new file mode 100644
index 000000000..8f290e034
--- /dev/null
+++ b/library/ace/snippets/praat.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/praat",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="praat"}) \ No newline at end of file
diff --git a/library/ace/snippets/prolog.js b/library/ace/snippets/prolog.js
new file mode 100644
index 000000000..7f0071104
--- /dev/null
+++ b/library/ace/snippets/prolog.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/prolog",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="prolog"}) \ No newline at end of file
diff --git a/library/ace/snippets/properties.js b/library/ace/snippets/properties.js
new file mode 100644
index 000000000..6c0b236a7
--- /dev/null
+++ b/library/ace/snippets/properties.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/properties",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="properties"}) \ No newline at end of file
diff --git a/library/ace/snippets/protobuf.js b/library/ace/snippets/protobuf.js
new file mode 100644
index 000000000..20b10fbb2
--- /dev/null
+++ b/library/ace/snippets/protobuf.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/protobuf",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="",t.scope="protobuf"}) \ No newline at end of file
diff --git a/library/ace/snippets/python.js b/library/ace/snippets/python.js
new file mode 100644
index 000000000..ee023b2b4
--- /dev/null
+++ b/library/ace/snippets/python.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/python",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet #!\n #!/usr/bin/env python\nsnippet imp\n import ${1:module}\nsnippet from\n from ${1:package} import ${2:module}\n# Module Docstring\nsnippet docs\n \'\'\'\n File: ${1:FILENAME:file_name}\n Author: ${2:author}\n Description: ${3}\n \'\'\'\nsnippet wh\n while ${1:condition}:\n ${2:# TODO: write code...}\n# dowh - does the same as do...while in other languages\nsnippet dowh\n while True:\n ${1:# TODO: write code...}\n if ${2:condition}:\n break\nsnippet with\n with ${1:expr} as ${2:var}:\n ${3:# TODO: write code...}\n# New Class\nsnippet cl\n class ${1:ClassName}(${2:object}):\n """${3:docstring for $1}"""\n def __init__(self, ${4:arg}):\n ${5:super($1, self).__init__()}\n self.$4 = $4\n ${6}\n# New Function\nsnippet def\n def ${1:fname}(${2:`indent(\'.\') ? \'self\' : \'\'`}):\n """${3:docstring for $1}"""\n ${4:# TODO: write code...}\nsnippet deff\n def ${1:fname}(${2:`indent(\'.\') ? \'self\' : \'\'`}):\n ${3:# TODO: write code...}\n# New Method\nsnippet defs\n def ${1:mname}(self, ${2:arg}):\n ${3:# TODO: write code...}\n# New Property\nsnippet property\n def ${1:foo}():\n doc = "${2:The $1 property.}"\n def fget(self):\n ${3:return self._$1}\n def fset(self, value):\n ${4:self._$1 = value}\n# Ifs\nsnippet if\n if ${1:condition}:\n ${2:# TODO: write code...}\nsnippet el\n else:\n ${1:# TODO: write code...}\nsnippet ei\n elif ${1:condition}:\n ${2:# TODO: write code...}\n# For\nsnippet for\n for ${1:item} in ${2:items}:\n ${3:# TODO: write code...}\n# Encodes\nsnippet cutf8\n # -*- coding: utf-8 -*-\nsnippet clatin1\n # -*- coding: latin-1 -*-\nsnippet cascii\n # -*- coding: ascii -*-\n# Lambda\nsnippet ld\n ${1:var} = lambda ${2:vars} : ${3:action}\nsnippet .\n self.\nsnippet try Try/Except\n try:\n ${1:# TODO: write code...}\n except ${2:Exception}, ${3:e}:\n ${4:raise $3}\nsnippet try Try/Except/Else\n try:\n ${1:# TODO: write code...}\n except ${2:Exception}, ${3:e}:\n ${4:raise $3}\n else:\n ${5:# TODO: write code...}\nsnippet try Try/Except/Finally\n try:\n ${1:# TODO: write code...}\n except ${2:Exception}, ${3:e}:\n ${4:raise $3}\n finally:\n ${5:# TODO: write code...}\nsnippet try Try/Except/Else/Finally\n try:\n ${1:# TODO: write code...}\n except ${2:Exception}, ${3:e}:\n ${4:raise $3}\n else:\n ${5:# TODO: write code...}\n finally:\n ${6:# TODO: write code...}\n# if __name__ == \'__main__\':\nsnippet ifmain\n if __name__ == \'__main__\':\n ${1:main()}\n# __magic__\nsnippet _\n __${1:init}__${2}\n# python debugger (pdb)\nsnippet pdb\n import pdb; pdb.set_trace()\n# ipython debugger (ipdb)\nsnippet ipdb\n import ipdb; ipdb.set_trace()\n# ipython debugger (pdbbb)\nsnippet pdbbb\n import pdbpp; pdbpp.set_trace()\nsnippet pprint\n import pprint; pprint.pprint(${1})${2}\nsnippet "\n """\n ${1:doc}\n """\n# test function/method\nsnippet test\n def test_${1:description}(${2:self}):\n ${3:# TODO: write code...}\n# test case\nsnippet testcase\n class ${1:ExampleCase}(unittest.TestCase):\n \n def test_${2:description}(self):\n ${3:# TODO: write code...}\nsnippet fut\n from __future__ import ${1}\n#getopt\nsnippet getopt\n try:\n # Short option syntax: "hv:"\n # Long option syntax: "help" or "verbose="\n opts, args = getopt.getopt(sys.argv[1:], "${1:short_options}", [${2:long_options}])\n \n except getopt.GetoptError, err:\n # Print debug info\n print str(err)\n ${3:error_action}\n\n for option, argument in opts:\n if option in ("-h", "--help"):\n ${4}\n elif option in ("-v", "--verbose"):\n verbose = argument\n',t.scope="python"}) \ No newline at end of file
diff --git a/library/ace/snippets/r.js b/library/ace/snippets/r.js
new file mode 100644
index 000000000..7f075e1e0
--- /dev/null
+++ b/library/ace/snippets/r.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/r",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet #!\n #!/usr/bin/env Rscript\n\n# includes\nsnippet lib\n library(${1:package})\nsnippet req\n require(${1:package})\nsnippet source\n source(\'${1:file}\')\n\n# conditionals\nsnippet if\n if (${1:condition}) {\n ${2:code}\n }\nsnippet el\n else {\n ${1:code}\n }\nsnippet ei\n else if (${1:condition}) {\n ${2:code}\n }\n\n# functions\nsnippet fun\n ${1:name} = function (${2:variables}) {\n ${3:code}\n }\nsnippet ret\n return(${1:code})\n\n# dataframes, lists, etc\nsnippet df\n ${1:name}[${2:rows}, ${3:cols}]\nsnippet c\n c(${1:items})\nsnippet li\n list(${1:items})\nsnippet mat\n matrix(${1:data}, nrow=${2:rows}, ncol=${3:cols})\n\n# apply functions\nsnippet apply\n apply(${1:array}, ${2:margin}, ${3:function})\nsnippet lapply\n lapply(${1:list}, ${2:function})\nsnippet sapply\n sapply(${1:list}, ${2:function})\nsnippet vapply\n vapply(${1:list}, ${2:function}, ${3:type})\nsnippet mapply\n mapply(${1:function}, ${2:...})\nsnippet tapply\n tapply(${1:vector}, ${2:index}, ${3:function})\nsnippet rapply\n rapply(${1:list}, ${2:function})\n\n# plyr functions\nsnippet dd\n ddply(${1:frame}, ${2:variables}, ${3:function})\nsnippet dl\n dlply(${1:frame}, ${2:variables}, ${3:function})\nsnippet da\n daply(${1:frame}, ${2:variables}, ${3:function})\nsnippet d_\n d_ply(${1:frame}, ${2:variables}, ${3:function})\n\nsnippet ad\n adply(${1:array}, ${2:margin}, ${3:function})\nsnippet al\n alply(${1:array}, ${2:margin}, ${3:function})\nsnippet aa\n aaply(${1:array}, ${2:margin}, ${3:function})\nsnippet a_\n a_ply(${1:array}, ${2:margin}, ${3:function})\n\nsnippet ld\n ldply(${1:list}, ${2:function})\nsnippet ll\n llply(${1:list}, ${2:function})\nsnippet la\n laply(${1:list}, ${2:function})\nsnippet l_\n l_ply(${1:list}, ${2:function})\n\nsnippet md\n mdply(${1:matrix}, ${2:function})\nsnippet ml\n mlply(${1:matrix}, ${2:function})\nsnippet ma\n maply(${1:matrix}, ${2:function})\nsnippet m_\n m_ply(${1:matrix}, ${2:function})\n\n# plot functions\nsnippet pl\n plot(${1:x}, ${2:y})\nsnippet ggp\n ggplot(${1:data}, aes(${2:aesthetics}))\nsnippet img\n ${1:(jpeg,bmp,png,tiff)}(filename="${2:filename}", width=${3}, height=${4}, unit="${5}")\n ${6:plot}\n dev.off()\n\n# statistical test functions\nsnippet fis\n fisher.test(${1:x}, ${2:y})\nsnippet chi\n chisq.test(${1:x}, ${2:y})\nsnippet tt\n t.test(${1:x}, ${2:y})\nsnippet wil\n wilcox.test(${1:x}, ${2:y})\nsnippet cor\n cor.test(${1:x}, ${2:y})\nsnippet fte\n var.test(${1:x}, ${2:y})\nsnippet kvt \n kv.test(${1:x}, ${2:y})\n',t.scope="r"}) \ No newline at end of file
diff --git a/library/ace/snippets/razor.js b/library/ace/snippets/razor.js
new file mode 100644
index 000000000..d4f087286
--- /dev/null
+++ b/library/ace/snippets/razor.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/razor",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet if\n(${1} == ${2}) {\n ${3}\n}",t.scope="razor"}) \ No newline at end of file
diff --git a/library/ace/snippets/rdoc.js b/library/ace/snippets/rdoc.js
new file mode 100644
index 000000000..c7c3b1e06
--- /dev/null
+++ b/library/ace/snippets/rdoc.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/rdoc",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="rdoc"}) \ No newline at end of file
diff --git a/library/ace/snippets/rhtml.js b/library/ace/snippets/rhtml.js
new file mode 100644
index 000000000..f2b53b5a3
--- /dev/null
+++ b/library/ace/snippets/rhtml.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/rhtml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="rhtml"}) \ No newline at end of file
diff --git a/library/ace/snippets/rst.js b/library/ace/snippets/rst.js
new file mode 100644
index 000000000..6d774e861
--- /dev/null
+++ b/library/ace/snippets/rst.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/rst",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""}) \ No newline at end of file
diff --git a/library/ace/snippets/ruby.js b/library/ace/snippets/ruby.js
new file mode 100644
index 000000000..0c3068010
--- /dev/null
+++ b/library/ace/snippets/ruby.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/ruby",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='########################################\n# Ruby snippets - for Rails, see below #\n########################################\n\n# encoding for Ruby 1.9\nsnippet enc\n # encoding: utf-8\n\n# #!/usr/bin/env ruby\nsnippet #!\n #!/usr/bin/env ruby\n # encoding: utf-8\n\n# New Block\nsnippet =b\n =begin rdoc\n ${1}\n =end\nsnippet y\n :yields: ${1:arguments}\nsnippet rb\n #!/usr/bin/env ruby -wKU\nsnippet beg\n begin\n ${3}\n rescue ${1:Exception} => ${2:e}\n end\n\nsnippet req require\n require "${1}"${2}\nsnippet #\n # =>\nsnippet end\n __END__\nsnippet case\n case ${1:object}\n when ${2:condition}\n ${3}\n end\nsnippet when\n when ${1:condition}\n ${2}\nsnippet def\n def ${1:method_name}\n ${2}\n end\nsnippet deft\n def test_${1:case_name}\n ${2}\n end\nsnippet if\n if ${1:condition}\n ${2}\n end\nsnippet ife\n if ${1:condition}\n ${2}\n else\n ${3}\n end\nsnippet elsif\n elsif ${1:condition}\n ${2}\nsnippet unless\n unless ${1:condition}\n ${2}\n end\nsnippet while\n while ${1:condition}\n ${2}\n end\nsnippet for\n for ${1:e} in ${2:c}\n ${3}\n end\nsnippet until\n until ${1:condition}\n ${2}\n end\nsnippet cla class .. end\n class ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n ${2}\n end\nsnippet cla class .. initialize .. end\n class ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n def initialize(${2:args})\n ${3}\n end\n end\nsnippet cla class .. < ParentClass .. initialize .. end\n class ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`} < ${2:ParentClass}\n def initialize(${3:args})\n ${4}\n end\n end\nsnippet cla ClassName = Struct .. do .. end\n ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`} = Struct.new(:${2:attr_names}) do\n def ${3:method_name}\n ${4}\n end\n end\nsnippet cla class BlankSlate .. initialize .. end\n class ${1:BlankSlate}\n instance_methods.each { |meth| undef_method(meth) unless meth =~ /\\A__/ }\n end\nsnippet cla class << self .. end\n class << ${1:self}\n ${2}\n end\n# class .. < DelegateClass .. initialize .. end\nsnippet cla-\n class ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`} < DelegateClass(${2:ParentClass})\n def initialize(${3:args})\n super(${4:del_obj})\n\n ${5}\n end\n end\nsnippet mod module .. end\n module ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n ${2}\n end\nsnippet mod module .. module_function .. end\n module ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n module_function\n\n ${2}\n end\nsnippet mod module .. ClassMethods .. end\n module ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n module ClassMethods\n ${2}\n end\n\n module InstanceMethods\n\n end\n\n def self.included(receiver)\n receiver.extend ClassMethods\n receiver.send :include, InstanceMethods\n end\n end\n# attr_reader\nsnippet r\n attr_reader :${1:attr_names}\n# attr_writer\nsnippet w\n attr_writer :${1:attr_names}\n# attr_accessor\nsnippet rw\n attr_accessor :${1:attr_names}\nsnippet atp\n attr_protected :${1:attr_names}\nsnippet ata\n attr_accessible :${1:attr_names}\n# include Enumerable\nsnippet Enum\n include Enumerable\n\n def each(&block)\n ${1}\n end\n# include Comparable\nsnippet Comp\n include Comparable\n\n def <=>(other)\n ${1}\n end\n# extend Forwardable\nsnippet Forw-\n extend Forwardable\n# def self\nsnippet defs\n def self.${1:class_method_name}\n ${2}\n end\n# def method_missing\nsnippet defmm\n def method_missing(meth, *args, &blk)\n ${1}\n end\nsnippet defd\n def_delegator :${1:@del_obj}, :${2:del_meth}, :${3:new_name}\nsnippet defds\n def_delegators :${1:@del_obj}, :${2:del_methods}\nsnippet am\n alias_method :${1:new_name}, :${2:old_name}\nsnippet app\n if __FILE__ == $PROGRAM_NAME\n ${1}\n end\n# usage_if()\nsnippet usai\n if ARGV.${1}\n abort "Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}"${3}\n end\n# usage_unless()\nsnippet usau\n unless ARGV.${1}\n abort "Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}"${3}\n end\nsnippet array\n Array.new(${1:10}) { |${2:i}| ${3} }\nsnippet hash\n Hash.new { |${1:hash}, ${2:key}| $1[$2] = ${3} }\nsnippet file File.foreach() { |line| .. }\n File.foreach(${1:"path/to/file"}) { |${2:line}| ${3} }\nsnippet file File.read()\n File.read(${1:"path/to/file"})${2}\nsnippet Dir Dir.global() { |file| .. }\n Dir.glob(${1:"dir/glob/*"}) { |${2:file}| ${3} }\nsnippet Dir Dir[".."]\n Dir[${1:"glob/**/*.rb"}]${2}\nsnippet dir\n Filename.dirname(__FILE__)\nsnippet deli\n delete_if { |${1:e}| ${2} }\nsnippet fil\n fill(${1:range}) { |${2:i}| ${3} }\n# flatten_once()\nsnippet flao\n inject(Array.new) { |${1:arr}, ${2:a}| $1.push(*$2)}${3}\nsnippet zip\n zip(${1:enums}) { |${2:row}| ${3} }\n# downto(0) { |n| .. }\nsnippet dow\n downto(${1:0}) { |${2:n}| ${3} }\nsnippet ste\n step(${1:2}) { |${2:n}| ${3} }\nsnippet tim\n times { |${1:n}| ${2} }\nsnippet upt\n upto(${1:1.0/0.0}) { |${2:n}| ${3} }\nsnippet loo\n loop { ${1} }\nsnippet ea\n each { |${1:e}| ${2} }\nsnippet ead\n each do |${1:e}|\n ${2}\n end\nsnippet eab\n each_byte { |${1:byte}| ${2} }\nsnippet eac- each_char { |chr| .. }\n each_char { |${1:chr}| ${2} }\nsnippet eac- each_cons(..) { |group| .. }\n each_cons(${1:2}) { |${2:group}| ${3} }\nsnippet eai\n each_index { |${1:i}| ${2} }\nsnippet eaid\n each_index do |${1:i}|\n ${2}\n end\nsnippet eak\n each_key { |${1:key}| ${2} }\nsnippet eakd\n each_key do |${1:key}|\n ${2}\n end\nsnippet eal\n each_line { |${1:line}| ${2} }\nsnippet eald\n each_line do |${1:line}|\n ${2}\n end\nsnippet eap\n each_pair { |${1:name}, ${2:val}| ${3} }\nsnippet eapd\n each_pair do |${1:name}, ${2:val}|\n ${3}\n end\nsnippet eas-\n each_slice(${1:2}) { |${2:group}| ${3} }\nsnippet easd-\n each_slice(${1:2}) do |${2:group}|\n ${3}\n end\nsnippet eav\n each_value { |${1:val}| ${2} }\nsnippet eavd\n each_value do |${1:val}|\n ${2}\n end\nsnippet eawi\n each_with_index { |${1:e}, ${2:i}| ${3} }\nsnippet eawid\n each_with_index do |${1:e},${2:i}|\n ${3}\n end\nsnippet reve\n reverse_each { |${1:e}| ${2} }\nsnippet reved\n reverse_each do |${1:e}|\n ${2}\n end\nsnippet inj\n inject(${1:init}) { |${2:mem}, ${3:var}| ${4} }\nsnippet injd\n inject(${1:init}) do |${2:mem}, ${3:var}|\n ${4}\n end\nsnippet map\n map { |${1:e}| ${2} }\nsnippet mapd\n map do |${1:e}|\n ${2}\n end\nsnippet mapwi-\n enum_with_index.map { |${1:e}, ${2:i}| ${3} }\nsnippet sor\n sort { |a, b| ${1} }\nsnippet sorb\n sort_by { |${1:e}| ${2} }\nsnippet ran\n sort_by { rand }\nsnippet all\n all? { |${1:e}| ${2} }\nsnippet any\n any? { |${1:e}| ${2} }\nsnippet cl\n classify { |${1:e}| ${2} }\nsnippet col\n collect { |${1:e}| ${2} }\nsnippet cold\n collect do |${1:e}|\n ${2}\n end\nsnippet det\n detect { |${1:e}| ${2} }\nsnippet detd\n detect do |${1:e}|\n ${2}\n end\nsnippet fet\n fetch(${1:name}) { |${2:key}| ${3} }\nsnippet fin\n find { |${1:e}| ${2} }\nsnippet find\n find do |${1:e}|\n ${2}\n end\nsnippet fina\n find_all { |${1:e}| ${2} }\nsnippet finad\n find_all do |${1:e}|\n ${2}\n end\nsnippet gre\n grep(${1:/pattern/}) { |${2:match}| ${3} }\nsnippet sub\n ${1:g}sub(${2:/pattern/}) { |${3:match}| ${4} }\nsnippet sca\n scan(${1:/pattern/}) { |${2:match}| ${3} }\nsnippet scad\n scan(${1:/pattern/}) do |${2:match}|\n ${3}\n end\nsnippet max\n max { |a, b| ${1} }\nsnippet min\n min { |a, b| ${1} }\nsnippet par\n partition { |${1:e}| ${2} }\nsnippet pard\n partition do |${1:e}|\n ${2}\n end\nsnippet rej\n reject { |${1:e}| ${2} }\nsnippet rejd\n reject do |${1:e}|\n ${2}\n end\nsnippet sel\n select { |${1:e}| ${2} }\nsnippet seld\n select do |${1:e}|\n ${2}\n end\nsnippet lam\n lambda { |${1:args}| ${2} }\nsnippet doo\n do\n ${1}\n end\nsnippet dov\n do |${1:variable}|\n ${2}\n end\nsnippet :\n :${1:key} => ${2:"value"}${3}\nsnippet ope\n open(${1:"path/or/url/or/pipe"}, "${2:w}") { |${3:io}| ${4} }\n# path_from_here()\nsnippet fpath\n File.join(File.dirname(__FILE__), *%2[${1:rel path here}])${2}\n# unix_filter {}\nsnippet unif\n ARGF.each_line${1} do |${2:line}|\n ${3}\n end\n# option_parse {}\nsnippet optp\n require "optparse"\n\n options = {${1:default => "args"}}\n\n ARGV.options do |opts|\n opts.banner = "Usage: #{File.basename($PROGRAM_NAME)}\nsnippet opt\n opts.on( "-${1:o}", "--${2:long-option-name}", ${3:String},\n "${4:Option description.}") do |${5:opt}|\n ${6}\n end\nsnippet tc\n require "test/unit"\n\n require "${1:library_file_name}"\n\n class Test${2:$1} < Test::Unit::TestCase\n def test_${3:case_name}\n ${4}\n end\n end\nsnippet ts\n require "test/unit"\n\n require "tc_${1:test_case_file}"\n require "tc_${2:test_case_file}"${3}\nsnippet as\n assert ${1:test}, "${2:Failure message.}"${3}\nsnippet ase\n assert_equal ${1:expected}, ${2:actual}${3}\nsnippet asne\n assert_not_equal ${1:unexpected}, ${2:actual}${3}\nsnippet asid\n assert_in_delta ${1:expected_float}, ${2:actual_float}, ${3:2 ** -20}${4}\nsnippet asio\n assert_instance_of ${1:ExpectedClass}, ${2:actual_instance}${3}\nsnippet asko\n assert_kind_of ${1:ExpectedKind}, ${2:actual_instance}${3}\nsnippet asn\n assert_nil ${1:instance}${2}\nsnippet asnn\n assert_not_nil ${1:instance}${2}\nsnippet asm\n assert_match /${1:expected_pattern}/, ${2:actual_string}${3}\nsnippet asnm\n assert_no_match /${1:unexpected_pattern}/, ${2:actual_string}${3}\nsnippet aso\n assert_operator ${1:left}, :${2:operator}, ${3:right}${4}\nsnippet asr\n assert_raise ${1:Exception} { ${2} }\nsnippet asrd\n assert_raise ${1:Exception} do\n ${2}\n end\nsnippet asnr\n assert_nothing_raised ${1:Exception} { ${2} }\nsnippet asnrd\n assert_nothing_raised ${1:Exception} do\n ${2}\n end\nsnippet asrt\n assert_respond_to ${1:object}, :${2:method}${3}\nsnippet ass assert_same(..)\n assert_same ${1:expected}, ${2:actual}${3}\nsnippet ass assert_send(..)\n assert_send [${1:object}, :${2:message}, ${3:args}]${4}\nsnippet asns\n assert_not_same ${1:unexpected}, ${2:actual}${3}\nsnippet ast\n assert_throws :${1:expected} { ${2} }\nsnippet astd\n assert_throws :${1:expected} do\n ${2}\n end\nsnippet asnt\n assert_nothing_thrown { ${1} }\nsnippet asntd\n assert_nothing_thrown do\n ${1}\n end\nsnippet fl\n flunk "${1:Failure message.}"${2}\n# Benchmark.bmbm do .. end\nsnippet bm-\n TESTS = ${1:10_000}\n Benchmark.bmbm do |results|\n ${2}\n end\nsnippet rep\n results.report("${1:name}:") { TESTS.times { ${2} }}\n# Marshal.dump(.., file)\nsnippet Md\n File.open(${1:"path/to/file.dump"}, "wb") { |${2:file}| Marshal.dump(${3:obj}, $2) }${4}\n# Mashal.load(obj)\nsnippet Ml\n File.open(${1:"path/to/file.dump"}, "rb") { |${2:file}| Marshal.load($2) }${3}\n# deep_copy(..)\nsnippet deec\n Marshal.load(Marshal.dump(${1:obj_to_copy}))${2}\nsnippet Pn-\n PStore.new(${1:"file_name.pstore"})${2}\nsnippet tra\n transaction(${1:true}) { ${2} }\n# xmlread(..)\nsnippet xml-\n REXML::Document.new(File.read(${1:"path/to/file"}))${2}\n# xpath(..) { .. }\nsnippet xpa\n elements.each(${1:"//Xpath"}) do |${2:node}|\n ${3}\n end\n# class_from_name()\nsnippet clafn\n split("::").inject(Object) { |par, const| par.const_get(const) }\n# singleton_class()\nsnippet sinc\n class << self; self end\nsnippet nam\n namespace :${1:`Filename()`} do\n ${2}\n end\nsnippet tas\n desc "${1:Task description}"\n task :${2:task_name => [:dependent, :tasks]} do\n ${3}\n end\n# block\nsnippet b\n { |${1:var}| ${2} }\nsnippet begin\n begin\n raise \'A test exception.\'\n rescue Exception => e\n puts e.message\n puts e.backtrace.inspect\n else\n # other exception\n ensure\n # always executed\n end\n\n#debugging\nsnippet debug\n require \'ruby-debug\'; debugger; true;\nsnippet pry\n require \'pry\'; binding.pry\n\n#############################################\n# Rails snippets - for pure Ruby, see above #\n#############################################\nsnippet art\n assert_redirected_to ${1::action => "${2:index}"}\nsnippet artnp\n assert_redirected_to ${1:parent}_${2:child}_path(${3:@$1}, ${4:@$2})\nsnippet artnpp\n assert_redirected_to ${1:parent}_${2:child}_path(${3:@$1})\nsnippet artp\n assert_redirected_to ${1:model}_path(${2:@$1})\nsnippet artpp\n assert_redirected_to ${1:model}s_path\nsnippet asd\n assert_difference "${1:Model}.${2:count}", $1 do\n ${3}\n end\nsnippet asnd\n assert_no_difference "${1:Model}.${2:count}" do\n ${3}\n end\nsnippet asre\n assert_response :${1:success}, @response.body${2}\nsnippet asrj\n assert_rjs :${1:replace}, "${2:dom id}"\nsnippet ass assert_select(..)\n assert_select \'${1:path}\', :${2:text} => \'${3:inner_html\' ${4:do}\nsnippet bf\n before_filter :${1:method}\nsnippet bt\n belongs_to :${1:association}\nsnippet crw\n cattr_accessor :${1:attr_names}\nsnippet defcreate\n def create\n @${1:model_class_name} = ${2:ModelClassName}.new(params[:$1])\n\n respond_to do |wants|\n if @$1.save\n flash[:notice] = \'$2 was successfully created.\'\n wants.html { redirect_to(@$1) }\n wants.xml { render :xml => @$1, :status => :created, :location => @$1 }\n else\n wants.html { render :action => "new" }\n wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity }\n end\n end\n end${3}\nsnippet defdestroy\n def destroy\n @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n @$1.destroy\n\n respond_to do |wants|\n wants.html { redirect_to($1s_url) }\n wants.xml { head :ok }\n end\n end${3}\nsnippet defedit\n def edit\n @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n end\nsnippet defindex\n def index\n @${1:model_class_name} = ${2:ModelClassName}.all\n\n respond_to do |wants|\n wants.html # index.html.erb\n wants.xml { render :xml => @$1s }\n end\n end${3}\nsnippet defnew\n def new\n @${1:model_class_name} = ${2:ModelClassName}.new\n\n respond_to do |wants|\n wants.html # new.html.erb\n wants.xml { render :xml => @$1 }\n end\n end${3}\nsnippet defshow\n def show\n @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\n respond_to do |wants|\n wants.html # show.html.erb\n wants.xml { render :xml => @$1 }\n end\n end${3}\nsnippet defupdate\n def update\n @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\n respond_to do |wants|\n if @$1.update_attributes(params[:$1])\n flash[:notice] = \'$2 was successfully updated.\'\n wants.html { redirect_to(@$1) }\n wants.xml { head :ok }\n else\n wants.html { render :action => "edit" }\n wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity }\n end\n end\n end${3}\nsnippet flash\n flash[:${1:notice}] = "${2}"\nsnippet habtm\n has_and_belongs_to_many :${1:object}, :join_table => "${2:table_name}", :foreign_key => "${3}_id"${4}\nsnippet hm\n has_many :${1:object}\nsnippet hmd\n has_many :${1:other}s, :class_name => "${2:$1}", :foreign_key => "${3:$1}_id", :dependent => :destroy${4}\nsnippet hmt\n has_many :${1:object}, :through => :${2:object}\nsnippet ho\n has_one :${1:object}\nsnippet i18\n I18n.t(\'${1:type.key}\')${2}\nsnippet ist\n <%= image_submit_tag("${1:agree.png}", :id => "${2:id}"${3} %>\nsnippet log\n Rails.logger.${1:debug} ${2}\nsnippet log2\n RAILS_DEFAULT_LOGGER.${1:debug} ${2}\nsnippet logd\n logger.debug { "${1:message}" }${2}\nsnippet loge\n logger.error { "${1:message}" }${2}\nsnippet logf\n logger.fatal { "${1:message}" }${2}\nsnippet logi\n logger.info { "${1:message}" }${2}\nsnippet logw\n logger.warn { "${1:message}" }${2}\nsnippet mapc\n ${1:map}.${2:connect} \'${3:controller/:action/:id}\'\nsnippet mapca\n ${1:map}.catch_all "*${2:anything}", :controller => "${3:default}", :action => "${4:error}"${5}\nsnippet mapr\n ${1:map}.resource :${2:resource}\nsnippet maprs\n ${1:map}.resources :${2:resource}\nsnippet mapwo\n ${1:map}.with_options :${2:controller} => \'${3:thing}\' do |$3|\n ${4}\n end\nsnippet mbs\n before_save :${1:method}\nsnippet mcht\n change_table :${1:table_name} do |t|\n ${2}\n end\nsnippet mp\n map(&:${1:id})\nsnippet mrw\n mattr_accessor :${1:attr_names}\nsnippet oa\n order("${1:field}")\nsnippet od\n order("${1:field} DESC")\nsnippet pa\n params[:${1:id}]${2}\nsnippet ra\n render :action => "${1:action}"\nsnippet ral\n render :action => "${1:action}", :layout => "${2:layoutname}"\nsnippet rest\n respond_to do |wants|\n wants.${1:html} { ${2} }\n end\nsnippet rf\n render :file => "${1:filepath}"\nsnippet rfu\n render :file => "${1:filepath}", :use_full_path => ${2:false}\nsnippet ri\n render :inline => "${1:<%= \'hello\' %>}"\nsnippet ril\n render :inline => "${1:<%= \'hello\' %>}", :locals => { ${2::name} => "${3:value}"${4} }\nsnippet rit\n render :inline => "${1:<%= \'hello\' %>}", :type => ${2::rxml}\nsnippet rjson\n render :json => ${1:text to render}\nsnippet rl\n render :layout => "${1:layoutname}"\nsnippet rn\n render :nothing => ${1:true}\nsnippet rns\n render :nothing => ${1:true}, :status => ${2:401}\nsnippet rp\n render :partial => "${1:item}"\nsnippet rpc\n render :partial => "${1:item}", :collection => ${2:@$1s}\nsnippet rpl\n render :partial => "${1:item}", :locals => { :${2:$1} => ${3:@$1}\nsnippet rpo\n render :partial => "${1:item}", :object => ${2:@$1}\nsnippet rps\n render :partial => "${1:item}", :status => ${2:500}\nsnippet rt\n render :text => "${1:text to render}"\nsnippet rtl\n render :text => "${1:text to render}", :layout => "${2:layoutname}"\nsnippet rtlt\n render :text => "${1:text to render}", :layout => ${2:true}\nsnippet rts\n render :text => "${1:text to render}", :status => ${2:401}\nsnippet ru\n render :update do |${1:page}|\n $1.${2}\n end\nsnippet rxml\n render :xml => ${1:text to render}\nsnippet sc\n scope :${1:name}, :where(:@${2:field} => ${3:value})\nsnippet sl\n scope :${1:name}, lambda do |${2:value}|\n where("${3:field = ?}", ${4:bind var})\n end\nsnippet sha1\n Digest::SHA1.hexdigest(${1:string})\nsnippet sweeper\n class ${1:ModelClassName}Sweeper < ActionController::Caching::Sweeper\n observe $1\n\n def after_save(${2:model_class_name})\n expire_cache($2)\n end\n\n def after_destroy($2)\n expire_cache($2)\n end\n\n def expire_cache($2)\n expire_page\n end\n end\nsnippet tcb\n t.boolean :${1:title}\n ${2}\nsnippet tcbi\n t.binary :${1:title}, :limit => ${2:2}.megabytes\n ${3}\nsnippet tcd\n t.decimal :${1:title}, :precision => ${2:10}, :scale => ${3:2}\n ${4}\nsnippet tcda\n t.date :${1:title}\n ${2}\nsnippet tcdt\n t.datetime :${1:title}\n ${2}\nsnippet tcf\n t.float :${1:title}\n ${2}\nsnippet tch\n t.change :${1:name}, :${2:string}, :${3:limit} => ${4:80}\n ${5}\nsnippet tci\n t.integer :${1:title}\n ${2}\nsnippet tcl\n t.integer :lock_version, :null => false, :default => 0\n ${1}\nsnippet tcr\n t.references :${1:taggable}, :polymorphic => { :default => \'${2:Photo}\' }\n ${3}\nsnippet tcs\n t.string :${1:title}\n ${2}\nsnippet tct\n t.text :${1:title}\n ${2}\nsnippet tcti\n t.time :${1:title}\n ${2}\nsnippet tcts\n t.timestamp :${1:title}\n ${2}\nsnippet tctss\n t.timestamps\n ${1}\nsnippet va\n validates_associated :${1:attribute}\nsnippet vao\n validates_acceptance_of :${1:terms}\nsnippet vc\n validates_confirmation_of :${1:attribute}\nsnippet ve\n validates_exclusion_of :${1:attribute}, :in => ${2:%w( mov avi )}\nsnippet vf\n validates_format_of :${1:attribute}, :with => /${2:regex}/\nsnippet vi\n validates_inclusion_of :${1:attribute}, :in => %w(${2: mov avi })\nsnippet vl\n validates_length_of :${1:attribute}, :within => ${2:3}..${3:20}\nsnippet vn\n validates_numericality_of :${1:attribute}\nsnippet vpo\n validates_presence_of :${1:attribute}\nsnippet vu\n validates_uniqueness_of :${1:attribute}\nsnippet wants\n wants.${1:js|xml|html} { ${2} }\nsnippet wc\n where(${1:"conditions"}${2:, bind_var})\nsnippet wh\n where(${1:field} => ${2:value})\nsnippet xdelete\n xhr :delete, :${1:destroy}, :id => ${2:1}${3}\nsnippet xget\n xhr :get, :${1:show}, :id => ${2:1}${3}\nsnippet xpost\n xhr :post, :${1:create}, :${2:object} => { ${3} }\nsnippet xput\n xhr :put, :${1:update}, :id => ${2:1}, :${3:object} => { ${4} }${5}\nsnippet test\n test "should ${1:do something}" do\n ${2}\n end\n#migrations\nsnippet mac\n add_column :${1:table_name}, :${2:column_name}, :${3:data_type}\nsnippet mrc\n remove_column :${1:table_name}, :${2:column_name}\nsnippet mrnc\n rename_column :${1:table_name}, :${2:old_column_name}, :${3:new_column_name}\nsnippet mcc\n change_column :${1:table}, :${2:column}, :${3:type}\nsnippet mccc\n t.column :${1:title}, :${2:string}\nsnippet mct\n create_table :${1:table_name} do |t|\n t.column :${2:name}, :${3:type}\n end\nsnippet migration\n class ${1:class_name} < ActiveRecord::Migration\n def self.up\n ${2}\n end\n\n def self.down\n end\n end\n\nsnippet trc\n t.remove :${1:column}\nsnippet tre\n t.rename :${1:old_column_name}, :${2:new_column_name}\n ${3}\nsnippet tref\n t.references :${1:model}\n\n#rspec\nsnippet it\n it "${1:spec_name}" do\n ${2}\n end\nsnippet itp\n it "${1:spec_name}"\n ${2}\nsnippet desc\n describe ${1:class_name} do\n ${2}\n end\nsnippet cont\n context "${1:message}" do\n ${2}\n end\nsnippet bef\n before :${1:each} do\n ${2}\n end\nsnippet aft\n after :${1:each} do\n ${2}\n end\n',t.scope="ruby"}) \ No newline at end of file
diff --git a/library/ace/snippets/rust.js b/library/ace/snippets/rust.js
new file mode 100644
index 000000000..d30d87eb8
--- /dev/null
+++ b/library/ace/snippets/rust.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/rust",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="rust"}) \ No newline at end of file
diff --git a/library/ace/snippets/sass.js b/library/ace/snippets/sass.js
new file mode 100644
index 000000000..ccfde2c94
--- /dev/null
+++ b/library/ace/snippets/sass.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/sass",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="sass"}) \ No newline at end of file
diff --git a/library/ace/snippets/scad.js b/library/ace/snippets/scad.js
new file mode 100644
index 000000000..9a4fcb005
--- /dev/null
+++ b/library/ace/snippets/scad.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/scad",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="scad"}) \ No newline at end of file
diff --git a/library/ace/snippets/scala.js b/library/ace/snippets/scala.js
new file mode 100644
index 000000000..dbbc7f481
--- /dev/null
+++ b/library/ace/snippets/scala.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/scala",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="scala"}) \ No newline at end of file
diff --git a/library/ace/snippets/scheme.js b/library/ace/snippets/scheme.js
new file mode 100644
index 000000000..d8770f2d4
--- /dev/null
+++ b/library/ace/snippets/scheme.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/scheme",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="scheme"}) \ No newline at end of file
diff --git a/library/ace/snippets/scss.js b/library/ace/snippets/scss.js
new file mode 100644
index 000000000..0526c69cc
--- /dev/null
+++ b/library/ace/snippets/scss.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/scss",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="scss"}) \ No newline at end of file
diff --git a/library/ace/snippets/sh.js b/library/ace/snippets/sh.js
new file mode 100644
index 000000000..387107685
--- /dev/null
+++ b/library/ace/snippets/sh.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/sh",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Shebang. Executing bash via /usr/bin/env makes scripts more portable.\nsnippet #!\n #!/usr/bin/env bash\n \nsnippet if\n if [[ ${1:condition} ]]; then\n ${2:#statements}\n fi\nsnippet elif\n elif [[ ${1:condition} ]]; then\n ${2:#statements}\nsnippet for\n for (( ${2:i} = 0; $2 < ${1:count}; $2++ )); do\n ${3:#statements}\n done\nsnippet fori\n for ${1:needle} in ${2:haystack} ; do\n ${3:#statements}\n done\nsnippet wh\n while [[ ${1:condition} ]]; do\n ${2:#statements}\n done\nsnippet until\n until [[ ${1:condition} ]]; do\n ${2:#statements}\n done\nsnippet case\n case ${1:word} in\n ${2:pattern})\n ${3};;\n esac\nsnippet go \n while getopts \'${1:o}\' ${2:opts} \n do \n case $$2 in\n ${3:o0})\n ${4:#staments};;\n esac\n done\n# Set SCRIPT_DIR variable to directory script is located.\nsnippet sdir\n SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"\n# getopt\nsnippet getopt\n __ScriptVersion="${1:version}"\n\n #=== FUNCTION ================================================================\n # NAME: usage\n # DESCRIPTION: Display usage information.\n #===============================================================================\n function usage ()\n {\n cat <<- EOT\n\n Usage : $${0:0} [options] [--] \n\n Options: \n -h|help Display this message\n -v|version Display script version\n\n EOT\n } # ---------- end of function usage ----------\n\n #-----------------------------------------------------------------------\n # Handle command line arguments\n #-----------------------------------------------------------------------\n\n while getopts ":hv" opt\n do\n case $opt in\n\n h|help ) usage; exit 0 ;;\n\n v|version ) echo "$${0:0} -- Version $__ScriptVersion"; exit 0 ;;\n\n \\? ) echo -e "\\n Option does not exist : $OPTARG\\n"\n usage; exit 1 ;;\n\n esac # --- end of case ---\n done\n shift $(($OPTIND-1))\n\n',t.scope="sh"}) \ No newline at end of file
diff --git a/library/ace/snippets/sjs.js b/library/ace/snippets/sjs.js
new file mode 100644
index 000000000..8023e0dbf
--- /dev/null
+++ b/library/ace/snippets/sjs.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/sjs",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="sjs"}) \ No newline at end of file
diff --git a/library/ace/snippets/smarty.js b/library/ace/snippets/smarty.js
new file mode 100644
index 000000000..5dc13d731
--- /dev/null
+++ b/library/ace/snippets/smarty.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/smarty",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="smarty"}) \ No newline at end of file
diff --git a/library/ace/snippets/snippets.js b/library/ace/snippets/snippets.js
new file mode 100644
index 000000000..8f2d037da
--- /dev/null
+++ b/library/ace/snippets/snippets.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/snippets",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# snippets for making snippets :)\nsnippet snip\n snippet ${1:trigger}\n ${2}\nsnippet msnip\n snippet ${1:trigger} ${2:description}\n ${3}\nsnippet v\n {VISUAL}\n",t.scope="snippets"}) \ No newline at end of file
diff --git a/library/ace/snippets/soy_template.js b/library/ace/snippets/soy_template.js
new file mode 100644
index 000000000..710cee62d
--- /dev/null
+++ b/library/ace/snippets/soy_template.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/soy_template",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="soy_template"}) \ No newline at end of file
diff --git a/library/ace/snippets/space.js b/library/ace/snippets/space.js
new file mode 100644
index 000000000..8bc916be4
--- /dev/null
+++ b/library/ace/snippets/space.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/space",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="space"}) \ No newline at end of file
diff --git a/library/ace/snippets/sql.js b/library/ace/snippets/sql.js
new file mode 100644
index 000000000..1bacce06d
--- /dev/null
+++ b/library/ace/snippets/sql.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/sql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet tbl\n create table ${1:table} (\n ${2:columns}\n );\nsnippet col\n ${1:name} ${2:type} ${3:default ''} ${4:not null}\nsnippet ccol\n ${1:name} varchar2(${2:size}) ${3:default ''} ${4:not null}\nsnippet ncol\n ${1:name} number ${3:default 0} ${4:not null}\nsnippet dcol\n ${1:name} date ${3:default sysdate} ${4:not null}\nsnippet ind\n create index ${3:$1_$2} on ${1:table}(${2:column});\nsnippet uind\n create unique index ${1:name} on ${2:table}(${3:column});\nsnippet tblcom\n comment on table ${1:table} is '${2:comment}';\nsnippet colcom\n comment on column ${1:table}.${2:column} is '${3:comment}';\nsnippet addcol\n alter table ${1:table} add (${2:column} ${3:type});\nsnippet seq\n create sequence ${1:name} start with ${2:1} increment by ${3:1} minvalue ${4:1};\nsnippet s*\n select * from ${1:table}\n",t.scope="sql"}) \ No newline at end of file
diff --git a/library/ace/snippets/sqlserver.js b/library/ace/snippets/sqlserver.js
new file mode 100644
index 000000000..57eb98625
--- /dev/null
+++ b/library/ace/snippets/sqlserver.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/sqlserver",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# ISNULL\nsnippet isnull\n ISNULL(${1:check_expression}, ${2:replacement_value})\n# FORMAT\nsnippet format\n FORMAT(${1:value}, ${2:format})\n# CAST\nsnippet cast\n CAST(${1:expression} AS ${2:data_type})\n# CONVERT\nsnippet convert\n CONVERT(${1:data_type}, ${2:expression})\n# DATEPART\nsnippet datepart\n DATEPART(${1:datepart}, ${2:date})\n# DATEDIFF\nsnippet datediff\n DATEDIFF(${1:datepart}, ${2:startdate}, ${3:enddate})\n# DATEADD\nsnippet dateadd\n DATEADD(${1:datepart}, ${2:number}, ${3:date})\n# DATEFROMPARTS \nsnippet datefromparts\n DATEFROMPARTS(${1:year}, ${2:month}, ${3:day})\n# OBJECT_DEFINITION\nsnippet objectdef\n SELECT OBJECT_DEFINITION(OBJECT_ID('${1:sys.server_permissions /*object name*/}'))\n# STUFF XML\nsnippet stuffxml\n STUFF((SELECT ', ' + ${1:ColumnName}\n FROM ${2:TableName}\n WHERE ${3:WhereClause}\n FOR XML PATH('')), 1, 1, '') AS ${4:Alias}\n ${5:/*https://msdn.microsoft.com/en-us/library/ms188043.aspx*/}\n# Create Procedure\nsnippet createproc\n -- =============================================\n -- Author: ${1:Author}\n -- Create date: ${2:Date}\n -- Description: ${3:Description}\n -- =============================================\n CREATE PROCEDURE ${4:Procedure_Name}\n ${5:/*Add the parameters for the stored procedure here*/}\n AS\n BEGIN\n -- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.\n SET NOCOUNT ON;\n \n ${6:/*Add the T-SQL statements to compute the return value here*/}\n \n END\n GO\n# Create Scalar Function\nsnippet createfn\n -- =============================================\n -- Author: ${1:Author}\n -- Create date: ${2:Date}\n -- Description: ${3:Description}\n -- =============================================\n CREATE FUNCTION ${4:Scalar_Function_Name}\n -- Add the parameters for the function here\n RETURNS ${5:Function_Data_Type}\n AS\n BEGIN\n DECLARE @Result ${5:Function_Data_Type}\n \n ${6:/*Add the T-SQL statements to compute the return value here*/}\n \n END\n GO",t.scope="sqlserver"}) \ No newline at end of file
diff --git a/library/ace/snippets/stylus.js b/library/ace/snippets/stylus.js
new file mode 100644
index 000000000..1da9d776a
--- /dev/null
+++ b/library/ace/snippets/stylus.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/stylus",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="stylus"}) \ No newline at end of file
diff --git a/library/ace/snippets/svg.js b/library/ace/snippets/svg.js
new file mode 100644
index 000000000..26d9b1a48
--- /dev/null
+++ b/library/ace/snippets/svg.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/svg",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="svg"}) \ No newline at end of file
diff --git a/library/ace/snippets/swift.js b/library/ace/snippets/swift.js
new file mode 100644
index 000000000..307d39f7c
--- /dev/null
+++ b/library/ace/snippets/swift.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/swift",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="swift"}) \ No newline at end of file
diff --git a/library/ace/snippets/swig.js b/library/ace/snippets/swig.js
new file mode 100644
index 000000000..59d56facf
--- /dev/null
+++ b/library/ace/snippets/swig.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/swig",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="swig"}) \ No newline at end of file
diff --git a/library/ace/snippets/tcl.js b/library/ace/snippets/tcl.js
new file mode 100644
index 000000000..69ccc2594
--- /dev/null
+++ b/library/ace/snippets/tcl.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/tcl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# #!/usr/bin/env tclsh\nsnippet #!\n #!/usr/bin/env tclsh\n \n# Process\nsnippet pro\n proc ${1:function_name} {${2:args}} {\n ${3:#body ...}\n }\n#xif\nsnippet xif\n ${1:expr}? ${2:true} : ${3:false}\n# Conditional\nsnippet if\n if {${1}} {\n ${2:# body...}\n }\n# Conditional if..else\nsnippet ife\n if {${1}} {\n ${2:# body...}\n } else {\n ${3:# else...}\n }\n# Conditional if..elsif..else\nsnippet ifee\n if {${1}} {\n ${2:# body...}\n } elseif {${3}} {\n ${4:# elsif...}\n } else {\n ${5:# else...}\n }\n# If catch then\nsnippet ifc\n if { [catch {${1:#do something...}} ${2:err}] } {\n ${3:# handle failure...}\n }\n# Catch\nsnippet catch\n catch {${1}} ${2:err} ${3:options}\n# While Loop\nsnippet wh\n while {${1}} {\n ${2:# body...}\n }\n# For Loop\nsnippet for\n for {set ${2:var} 0} {$$2 < ${1:count}} {${3:incr} $2} {\n ${4:# body...}\n }\n# Foreach Loop\nsnippet fore\n foreach ${1:x} {${2:#list}} {\n ${3:# body...}\n }\n# after ms script...\nsnippet af\n after ${1:ms} ${2:#do something}\n# after cancel id\nsnippet afc\n after cancel ${1:id or script}\n# after idle\nsnippet afi\n after idle ${1:script}\n# after info id\nsnippet afin\n after info ${1:id}\n# Expr\nsnippet exp\n expr {${1:#expression here}}\n# Switch\nsnippet sw\n switch ${1:var} {\n ${3:pattern 1} {\n ${4:#do something}\n }\n default {\n ${2:#do something}\n }\n }\n# Case\nsnippet ca\n ${1:pattern} {\n ${2:#do something}\n }${3}\n# Namespace eval\nsnippet ns\n namespace eval ${1:path} {${2:#script...}}\n# Namespace current\nsnippet nsc\n namespace current\n",t.scope="tcl"}) \ No newline at end of file
diff --git a/library/ace/snippets/tex.js b/library/ace/snippets/tex.js
new file mode 100644
index 000000000..99d058ea7
--- /dev/null
+++ b/library/ace/snippets/tex.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/tex",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="#PREAMBLE\n#newcommand\nsnippet nc\n \\newcommand{\\${1:cmd}}[${2:opt}]{${3:realcmd}}${4}\n#usepackage\nsnippet up\n \\usepackage[${1:[options}]{${2:package}}\n#newunicodechar\nsnippet nuc\n \\newunicodechar{${1}}{${2:\\ensuremath}${3:tex-substitute}}}\n#DeclareMathOperator\nsnippet dmo\n \\DeclareMathOperator{${1}}{${2}}\n\n#DOCUMENT\n# \\begin{}...\\end{}\nsnippet begin\n \\begin{${1:env}}\n ${2}\n \\end{$1}\n# Tabular\nsnippet tab\n \\begin{${1:tabular}}{${2:c}}\n ${3}\n \\end{$1}\nsnippet thm\n \\begin[${1:author}]{${2:thm}}\n ${3}\n \\end{$1}\nsnippet center\n \\begin{center}\n ${1}\n \\end{center}\n# Align(ed)\nsnippet ali\n \\begin{align${1:ed}}\n ${2}\n \\end{align$1}\n# Gather(ed)\nsnippet gat\n \\begin{gather${1:ed}}\n ${2}\n \\end{gather$1}\n# Equation\nsnippet eq\n \\begin{equation}\n ${1}\n \\end{equation}\n# Equation\nsnippet eq*\n \\begin{equation*}\n ${1}\n \\end{equation*}\n# Unnumbered Equation\nsnippet \\\n \\[\n ${1}\n \\]\n# Enumerate\nsnippet enum\n \\begin{enumerate}\n \\item ${1}\n \\end{enumerate}\n# Itemize\nsnippet itemize\n \\begin{itemize}\n \\item ${1}\n \\end{itemize}\n# Description\nsnippet desc\n \\begin{description}\n \\item[${1}] ${2}\n \\end{description}\n# Matrix\nsnippet mat\n \\begin{${1:p/b/v/V/B/small}matrix}\n ${2}\n \\end{$1matrix}\n# Cases\nsnippet cas\n \\begin{cases}\n ${1:equation}, &\\text{ if }${2:case}\\\\\n ${3}\n \\end{cases}\n# Split\nsnippet spl\n \\begin{split}\n ${1}\n \\end{split}\n# Part\nsnippet part\n \\part{${1:part name}} % (fold)\n \\label{prt:${2:$1}}\n ${3}\n % part $2 (end)\n# Chapter\nsnippet cha\n \\chapter{${1:chapter name}}\n \\label{cha:${2:$1}}\n ${3}\n# Section\nsnippet sec\n \\section{${1:section name}}\n \\label{sec:${2:$1}}\n ${3}\n# Sub Section\nsnippet sub\n \\subsection{${1:subsection name}}\n \\label{sub:${2:$1}}\n ${3}\n# Sub Sub Section\nsnippet subs\n \\subsubsection{${1:subsubsection name}}\n \\label{ssub:${2:$1}}\n ${3}\n# Paragraph\nsnippet par\n \\paragraph{${1:paragraph name}}\n \\label{par:${2:$1}}\n ${3}\n# Sub Paragraph\nsnippet subp\n \\subparagraph{${1:subparagraph name}}\n \\label{subp:${2:$1}}\n ${3}\n#References\nsnippet itd\n \\item[${1:description}] ${2:item}\nsnippet figure\n ${1:Figure}~\\ref{${2:fig:}}${3}\nsnippet table\n ${1:Table}~\\ref{${2:tab:}}${3}\nsnippet listing\n ${1:Listing}~\\ref{${2:list}}${3}\nsnippet section\n ${1:Section}~\\ref{${2:sec:}}${3}\nsnippet page\n ${1:page}~\\pageref{${2}}${3}\nsnippet index\n \\index{${1:index}}${2}\n#Citations\nsnippet cite\n \\cite[${1}]{${2}}${3}\nsnippet fcite\n \\footcite[${1}]{${2}}${3}\n#Formating text: italic, bold, underline, small capital, emphase ..\nsnippet it\n \\textit{${1:text}}\nsnippet bf\n \\textbf{${1:text}}\nsnippet under\n \\underline{${1:text}}\nsnippet emp\n \\emph{${1:text}}\nsnippet sc\n \\textsc{${1:text}}\n#Choosing font\nsnippet sf\n \\textsf{${1:text}}\nsnippet rm\n \\textrm{${1:text}}\nsnippet tt\n \\texttt{${1:text}}\n#misc\nsnippet ft\n \\footnote{${1:text}}\nsnippet fig\n \\begin{figure}\n \\begin{center}\n \\includegraphics[scale=${1}]{Figures/${2}}\n \\end{center}\n \\caption{${3}}\n \\label{fig:${4}}\n \\end{figure}\nsnippet tikz\n \\begin{figure}\n \\begin{center}\n \\begin{tikzpicture}[scale=${1:1}]\n ${2}\n \\end{tikzpicture}\n \\end{center}\n \\caption{${3}}\n \\label{fig:${4}}\n \\end{figure}\n#math\nsnippet stackrel\n \\stackrel{${1:above}}{${2:below}} ${3}\nsnippet frac\n \\frac{${1:num}}{${2:denom}}\nsnippet sum\n \\sum^{${1:n}}_{${2:i=1}}{${3}}",t.scope="tex"}) \ No newline at end of file
diff --git a/library/ace/snippets/text.js b/library/ace/snippets/text.js
new file mode 100644
index 000000000..233803dae
--- /dev/null
+++ b/library/ace/snippets/text.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/text",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="text"}) \ No newline at end of file
diff --git a/library/ace/snippets/textile.js b/library/ace/snippets/textile.js
new file mode 100644
index 000000000..cf4d5d566
--- /dev/null
+++ b/library/ace/snippets/textile.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/textile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Jekyll post header\nsnippet header\n ---\n title: ${1:title}\n layout: post\n date: ${2:date} ${3:hour:minute:second} -05:00\n ---\n\n# Image\nsnippet img\n !${1:url}(${2:title}):${3:link}!\n\n# Table\nsnippet |\n |${1}|${2}\n\n# Link\nsnippet link\n "${1:link text}":${2:url}\n\n# Acronym\nsnippet (\n (${1:Expand acronym})${2}\n\n# Footnote\nsnippet fn\n [${1:ref number}] ${3}\n\n fn$1. ${2:footnote}\n \n',t.scope="textile"}) \ No newline at end of file
diff --git a/library/ace/snippets/toml.js b/library/ace/snippets/toml.js
new file mode 100644
index 000000000..8c3dbefdf
--- /dev/null
+++ b/library/ace/snippets/toml.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/toml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="toml"}) \ No newline at end of file
diff --git a/library/ace/snippets/twig.js b/library/ace/snippets/twig.js
new file mode 100644
index 000000000..9c2104682
--- /dev/null
+++ b/library/ace/snippets/twig.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/twig",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="twig"}) \ No newline at end of file
diff --git a/library/ace/snippets/typescript.js b/library/ace/snippets/typescript.js
new file mode 100644
index 000000000..5e6425ecb
--- /dev/null
+++ b/library/ace/snippets/typescript.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/typescript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="typescript"}) \ No newline at end of file
diff --git a/library/ace/snippets/vala.js b/library/ace/snippets/vala.js
new file mode 100644
index 000000000..89927bcfb
--- /dev/null
+++ b/library/ace/snippets/vala.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/vala",["require","exports","module"],function(e,t,n){"use strict";t.snippets=[{content:"case ${1:condition}:\n $0\n break;\n",name:"case",scope:"vala",tabTrigger:"case"},{content:"/**\n * ${6}\n */\n${1:public} class ${2:MethodName}${3: : GLib.Object} {\n\n /**\n * ${7}\n */\n public ${2}(${4}) {\n ${5}\n }\n\n $0\n}",name:"class",scope:"vala",tabTrigger:"class"},{content:"(${1}) => {\n ${0}\n}\n",name:"closure",scope:"vala",tabTrigger:"=>"},{content:"/*\n * $0\n */",name:"Comment (multiline)",scope:"vala",tabTrigger:"/*"},{content:"Console.WriteLine($1);\n$0",name:"Console.WriteLine (writeline)",scope:"vala",tabTrigger:"writeline"},{content:'[DBus(name = "$0")]',name:"DBus annotation",scope:"vala",tabTrigger:"[DBus"},{content:"delegate ${1:void} ${2:DelegateName}($0);",name:"delegate",scope:"vala",tabTrigger:"delegate"},{content:"do {\n $0\n} while ($1);\n",name:"do while",scope:"vala",tabTrigger:"dowhile"},{content:"/**\n * $0\n */",name:"DocBlock",scope:"vala",tabTrigger:"/**"},{content:"else if ($1) {\n $0\n}\n",name:"else if (elseif)",scope:"vala",tabTrigger:"elseif"},{content:"else {\n $0\n}",name:"else",scope:"vala",tabTrigger:"else"},{content:"enum {$1:EnumName} {\n $0\n}",name:"enum",scope:"vala",tabTrigger:"enum"},{content:"public errordomain ${1:Error} {\n $0\n}",name:"error domain",scope:"vala",tabTrigger:"errordomain"},{content:"for ($1;$2;$3) {\n $0\n}",name:"for",scope:"vala",tabTrigger:"for"},{content:"foreach ($1 in $2) {\n $0\n}",name:"foreach",scope:"vala",tabTrigger:"foreach"},{content:"Gee.ArrayList<${1:G}>($0);",name:"Gee.ArrayList",scope:"vala",tabTrigger:"ArrayList"},{content:"Gee.HashMap<${1:K},${2:V}>($0);",name:"Gee.HashMap",scope:"vala",tabTrigger:"HashMap"},{content:"Gee.HashSet<${1:G}>($0);",name:"Gee.HashSet",scope:"vala",tabTrigger:"HashSet"},{content:"if ($1) {\n $0\n}",name:"if",scope:"vala",tabTrigger:"if"},{content:"interface ${1:InterfaceName}{$2: : SuperInterface} {\n $0\n}",name:"interface",scope:"vala",tabTrigger:"interface"},{content:"public static int main(string [] argv) {\n ${0}\n return 0;\n}",name:"Main function",scope:"vala",tabTrigger:"main"},{content:"namespace $1 {\n $0\n}\n",name:"namespace (ns)",scope:"vala",tabTrigger:"ns"},{content:"stdout.printf($0);",name:"printf",scope:"vala",tabTrigger:"printf"},{content:"${1:public} ${2:Type} ${3:Name} {\n set {\n $0\n }\n get {\n\n }\n}",name:"property (prop)",scope:"vala",tabTrigger:"prop"},{content:"${1:public} ${2:Type} ${3:Name} {\n get {\n $0\n }\n}",name:"read-only property (roprop)",scope:"vala",tabTrigger:"roprop"},{content:'@"${1:\\$var}"',name:"String template (@)",scope:"vala",tabTrigger:"@"},{content:"struct ${1:StructName} {\n $0\n}",name:"struct",scope:"vala",tabTrigger:"struct"},{content:"switch ($1) {\n $0\n}",name:"switch",scope:"vala",tabTrigger:"switch"},{content:"try {\n $2\n} catch (${1:Error} e) {\n $0\n}",name:"try/catch",scope:"vala",tabTrigger:"try"},{content:'"""$0""";',name:'Verbatim string (""")',scope:"vala",tabTrigger:"verbatim"},{content:"while ($1) {\n $0\n}",name:"while",scope:"vala",tabTrigger:"while"}],t.scope=""}) \ No newline at end of file
diff --git a/library/ace/snippets/vbscript.js b/library/ace/snippets/vbscript.js
new file mode 100644
index 000000000..1cf30b942
--- /dev/null
+++ b/library/ace/snippets/vbscript.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/vbscript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="vbscript"}) \ No newline at end of file
diff --git a/library/ace/snippets/velocity.js b/library/ace/snippets/velocity.js
new file mode 100644
index 000000000..9ab7789cb
--- /dev/null
+++ b/library/ace/snippets/velocity.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/velocity",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# macro\nsnippet #macro\n #macro ( ${1:macroName} ${2:\\$var1, [\\$var2, ...]} )\n ${3:## macro code}\n #end\n# foreach\nsnippet #foreach\n #foreach ( ${1:\\$item} in ${2:\\$collection} )\n ${3:## foreach code}\n #end\n# if\nsnippet #if\n #if ( ${1:true} )\n ${0}\n #end\n# if ... else\nsnippet #ife\n #if ( ${1:true} )\n ${2}\n #else\n ${0}\n #end\n#import\nsnippet #import\n #import ( "${1:path/to/velocity/format}" )\n# set\nsnippet #set\n #set ( $${1:var} = ${0} )\n',t.scope="velocity",t.includeScopes=["html","javascript","css"]}) \ No newline at end of file
diff --git a/library/ace/snippets/verilog.js b/library/ace/snippets/verilog.js
new file mode 100644
index 000000000..2c6f906cf
--- /dev/null
+++ b/library/ace/snippets/verilog.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/verilog",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="verilog"}) \ No newline at end of file
diff --git a/library/ace/snippets/vhdl.js b/library/ace/snippets/vhdl.js
new file mode 100644
index 000000000..c8d6fb904
--- /dev/null
+++ b/library/ace/snippets/vhdl.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/vhdl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="vhdl"}) \ No newline at end of file
diff --git a/library/ace/snippets/wollok.js b/library/ace/snippets/wollok.js
new file mode 100644
index 000000000..521fc7865
--- /dev/null
+++ b/library/ace/snippets/wollok.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/wollok",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='##\n## Basic Java packages and import\nsnippet im\n import\nsnippet w.l\n wollok.lang\nsnippet w.i\n wollok.lib\n\n## Class and object\nsnippet cl\n class ${1:`Filename("", "untitled")`} ${2}\nsnippet obj\n object ${1:`Filename("", "untitled")`} ${2:inherits Parent}${3}\nsnippet te\n test ${1:`Filename("", "untitled")`}\n\n##\n## Enhancements\nsnippet inh\n inherits\n\n##\n## Comments\nsnippet /*\n /*\n * ${1}\n */\n\n##\n## Control Statements\nsnippet el\n else\nsnippet if\n if (${1}) ${2}\n\n##\n## Create a Method\nsnippet m\n method ${1:method}(${2}) ${5}\n\n## \n## Tests\nsnippet as\n assert.equals(${1:expected}, ${2:actual})\n\n##\n## Exceptions\nsnippet ca\n catch ${1:e} : (${2:Exception} ) ${3}\nsnippet thr\n throw\nsnippet try\n try {\n ${3}\n } catch ${1:e} : ${2:Exception} {\n }\n\n##\n## Javadocs\nsnippet /**\n /**\n * ${1}\n */\n\n##\n## Print Methods\nsnippet print\n console.println("${1:Message}")\n\n##\n## Setter and Getter Methods\nsnippet set\n method set${1:}(${2:}) {\n $1 = $2\n }\nsnippet get\n method get${1:}() {\n return ${1:};\n }\n\n##\n## Terminate Methods or Loops\nsnippet re\n return',t.scope="wollok"}) \ No newline at end of file
diff --git a/library/ace/snippets/xml.js b/library/ace/snippets/xml.js
new file mode 100644
index 000000000..e1c1b3941
--- /dev/null
+++ b/library/ace/snippets/xml.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/xml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="xml"}) \ No newline at end of file
diff --git a/library/ace/snippets/xquery.js b/library/ace/snippets/xquery.js
new file mode 100644
index 000000000..ea0f7edec
--- /dev/null
+++ b/library/ace/snippets/xquery.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/xquery",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet for\n for $${1:item} in ${2:expr}\nsnippet return\n return ${1:expr}\nsnippet import\n import module namespace ${1:ns} = "${2:http://www.example.com/}";\nsnippet some\n some $${1:varname} in ${2:expr} satisfies ${3:expr}\nsnippet every\n every $${1:varname} in ${2:expr} satisfies ${3:expr}\nsnippet if\n if(${1:true}) then ${2:expr} else ${3:true}\nsnippet switch\n switch(${1:"foo"})\n case ${2:"foo"}\n return ${3:true}\n default return ${4:false}\nsnippet try\n try { ${1:expr} } catch ${2:*} { ${3:expr} }\nsnippet tumbling\n for tumbling window $${1:varname} in ${2:expr}\n start at $${3:start} when ${4:expr}\n end at $${5:end} when ${6:expr}\n return ${7:expr}\nsnippet sliding\n for sliding window $${1:varname} in ${2:expr}\n start at $${3:start} when ${4:expr}\n end at $${5:end} when ${6:expr}\n return ${7:expr}\nsnippet let\n let $${1:varname} := ${2:expr}\nsnippet group\n group by $${1:varname} := ${2:expr}\nsnippet order\n order by ${1:expr} ${2:descending}\nsnippet stable\n stable order by ${1:expr}\nsnippet count\n count $${1:varname}\nsnippet ordered\n ordered { ${1:expr} }\nsnippet unordered\n unordered { ${1:expr} }\nsnippet treat \n treat as ${1:expr}\nsnippet castable\n castable as ${1:atomicType}\nsnippet cast\n cast as ${1:atomicType}\nsnippet typeswitch\n typeswitch(${1:expr})\n case ${2:type} return ${3:expr}\n default return ${4:expr}\nsnippet var\n declare variable $${1:varname} := ${2:expr};\nsnippet fn\n declare function ${1:ns}:${2:name}(){\n ${3:expr}\n };\nsnippet module\n module namespace ${1:ns} = "${2:http://www.example.com}";\n',t.scope="xquery"}) \ No newline at end of file
diff --git a/library/ace/snippets/yaml.js b/library/ace/snippets/yaml.js
new file mode 100644
index 000000000..80b5d3b36
--- /dev/null
+++ b/library/ace/snippets/yaml.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/yaml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="yaml"}) \ No newline at end of file
diff --git a/library/ace/theme-ambiance.js b/library/ace/theme-ambiance.js
new file mode 100644
index 000000000..e7c0b6b04
--- /dev/null
+++ b/library/ace/theme-ambiance.js
@@ -0,0 +1 @@
+ace.define("ace/theme/ambiance",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-ambiance",t.cssText=".ace-ambiance .ace_gutter {background-color: #3d3d3d;background-image: -moz-linear-gradient(left, #3D3D3D, #333);background-image: -ms-linear-gradient(left, #3D3D3D, #333);background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#3D3D3D), to(#333));background-image: -webkit-linear-gradient(left, #3D3D3D, #333);background-image: -o-linear-gradient(left, #3D3D3D, #333);background-image: linear-gradient(left, #3D3D3D, #333);background-repeat: repeat-x;border-right: 1px solid #4d4d4d;text-shadow: 0px 1px 1px #4d4d4d;color: #222;}.ace-ambiance .ace_gutter-layer {background: repeat left top;}.ace-ambiance .ace_gutter-active-line {background-color: #3F3F3F;}.ace-ambiance .ace_fold-widget {text-align: center;}.ace-ambiance .ace_fold-widget:hover {color: #777;}.ace-ambiance .ace_fold-widget.ace_start,.ace-ambiance .ace_fold-widget.ace_end,.ace-ambiance .ace_fold-widget.ace_closed{background: none;border: none;box-shadow: none;}.ace-ambiance .ace_fold-widget.ace_start:after {content: '\u25be'}.ace-ambiance .ace_fold-widget.ace_end:after {content: '\u25b4'}.ace-ambiance .ace_fold-widget.ace_closed:after {content: '\u2023'}.ace-ambiance .ace_print-margin {border-left: 1px dotted #2D2D2D;right: 0;background: #262626;}.ace-ambiance .ace_scroller {-webkit-box-shadow: inset 0 0 10px black;-moz-box-shadow: inset 0 0 10px black;-o-box-shadow: inset 0 0 10px black;box-shadow: inset 0 0 10px black;}.ace-ambiance {color: #E6E1DC;background-color: #202020;}.ace-ambiance .ace_cursor {border-left: 1px solid #7991E8;}.ace-ambiance .ace_overwrite-cursors .ace_cursor {border: 1px solid #FFE300;background: #766B13;}.ace-ambiance.normal-mode .ace_cursor-layer {z-index: 0;}.ace-ambiance .ace_marker-layer .ace_selection {background: rgba(221, 240, 255, 0.20);}.ace-ambiance .ace_marker-layer .ace_selected-word {border-radius: 4px;border: 8px solid #3f475d;box-shadow: 0 0 4px black;}.ace-ambiance .ace_marker-layer .ace_step {background: rgb(198, 219, 174);}.ace-ambiance .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 255, 255, 0.25);}.ace-ambiance .ace_marker-layer .ace_active-line {background: rgba(255, 255, 255, 0.031);}.ace-ambiance .ace_invisible {color: #333;}.ace-ambiance .ace_paren {color: #24C2C7;}.ace-ambiance .ace_keyword {color: #cda869;}.ace-ambiance .ace_keyword.ace_operator {color: #fa8d6a;}.ace-ambiance .ace_punctuation.ace_operator {color: #fa8d6a;}.ace-ambiance .ace_identifier {}.ace-ambiance .ace-statement {color: #cda869;}.ace-ambiance .ace_constant {color: #CF7EA9;}.ace-ambiance .ace_constant.ace_language {color: #CF7EA9;}.ace-ambiance .ace_constant.ace_library {}.ace-ambiance .ace_constant.ace_numeric {color: #78CF8A;}.ace-ambiance .ace_invalid {text-decoration: underline;}.ace-ambiance .ace_invalid.ace_illegal {color:#F8F8F8;background-color: rgba(86, 45, 86, 0.75);}.ace-ambiance .ace_invalid,.ace-ambiance .ace_deprecated {text-decoration: underline;font-style: italic;color: #D2A8A1;}.ace-ambiance .ace_support {color: #9B859D;}.ace-ambiance .ace_support.ace_function {color: #DAD085;}.ace-ambiance .ace_function.ace_buildin {color: #9b859d;}.ace-ambiance .ace_string {color: #8f9d6a;}.ace-ambiance .ace_string.ace_regexp {color: #DAD085;}.ace-ambiance .ace_comment {font-style: italic;color: #555;}.ace-ambiance .ace_comment.ace_doc {}.ace-ambiance .ace_comment.ace_doc.ace_tag {color: #666;font-style: normal;}.ace-ambiance .ace_definition,.ace-ambiance .ace_type {color: #aac6e3;}.ace-ambiance .ace_variable {color: #9999cc;}.ace-ambiance .ace_variable.ace_language {color: #9b859d;}.ace-ambiance .ace_xml-pe {color: #494949;}.ace-ambiance .ace_gutter-layer,.ace-ambiance .ace_text-layer {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAQAAAAHUWYVAABFFUlEQVQYGbzBCeDVU/74/6fj9HIcx/FRHx9JCFmzMyGRURhLZIkUsoeRfUjS2FNDtr6WkMhO9sm+S8maJfu+Jcsg+/o/c+Z4z/t97/vezy3z+z8ekGlnYICG/o7gdk+wmSHZ1z4pJItqapjoKXWahm8NmV6eOTbWUOp6/6a/XIg6GQqmenJ2lDHyvCFZ2cBDbmtHA043VFhHwXxClWmeYAdLhV00Bd85go8VmaFCkbVkzlQENzfBDZ5gtN7HwF0KDrTwJ0dypSOzpaKCMwQHKTIreYIxlmhXTzTWkVm+LTynZhiSBT3RZQ7aGfjGEd3qyXQ1FDymqbKxpspERQN2MiRjNZlFFQXfCNFm9nM1zpAsoYjmtRTc5ajwuaXc5xrWskT97RaKzAGe5ARHhVUsDbjKklziiX5WROcJwSNCNI+9w1Jwv4Zb2r7lCMZ4oq5C0EdTx+2GzNuKpJ+iFf38JEWkHJn9DNF7mmBDITrWEg0VWL3pHU20tSZnuqWu+R3BtYa8XxV1HO7GyD32UkOpL/yDloINFTmvtId+nmAjxRw40VMwVKiwrKLE4bK5UOVntYwhOcSSXKrJHKPJedocpGjVz/ZMIbnYUPB10/eKCrs5apqpgVmWzBYWpmtKHecJPjaUuEgRDDaU0oZghCJ6zNMQ5ZhDYx05r5v2muQdM0EILtXUsaKiQX9WMEUotagQzFbUNN6NUPC2nm5pxEWGCjMc3GdJHjSU2kORLK/JGSrkfGEIjncU/CYUnOipoYemwj8tST9NsJmB7TUVXtbUtXATJVZXBMvYeTXJfobgJUPmGMP/yFaWonaa6BcFO3nqcIqCozSZoZoSr1g4zJOzuyGnxTEX3lUEJ7WcZgme8ddaWvWJo2AJR9DZU3CUIbhCSG6ybSwN6qtJVnCU2svDTP2ZInOw2cBTrqtQahtNZn9NcJ4l2NaSmSkkP1noZWnVwkLmdUPOwLZEwy2Z3S3R+4rIG9hcbpPXHFVWcQdZkn2FOta3cKWQnNRC5g1LsJah4GCzSVsKnCOY5OAFRTBekyyryeyilhFKva75r4Mc0aWanGEaThcy31s439KKxTzJYY5WTHPU1FtIHjQU3Oip4xlNzj/lBw23dYZVliQa7WAXf4shetcQfatI+jWRDBPmyNeW6A1P5kdDgyYJlba0BIM8BZu1JfrFwItyjcAMR3K0BWOIrtMEXyhyrlVEx3ui5dUBjmB/Q3CXW85R4mBD0s7B+4q5tKUjOlb9qqmhi5AZ6GFIC5HXtOobdYGlVdMVbNJ8toNTFcHxnoL+muBagcctjWnbNMuR00uI7nQESwg5q2qqrKWIfrNUmeQocY6HuyxJV02wj36w00yhpmUFenv4p6fUkZYqLyuinx2RGOjhCXYyJF84oiU00YMOOhhquNdfbOB7gU88pY4xJO8LVdp6/q2voeB4R04vIdhSE40xZObx1HGGJ/ja0LBthFInKaLPPFzuCaYaoj8JjPME8yoyxo6zlBqkiUZYgq00OYMswbWO5NGmq+xhipxHLRW29ARjNKXO0wRnear8XSg4XFPLKEPUS1GqvyLwiuBUoa7zpZ0l5xxFwWmWZC1H5h5FwU8eQ7K+g8UcVY6TMQreVQT/8uQ8Z+ALIXnSEa2pYZQneE9RZbSBNYXfWYJzW/h/4j4Dp1tYVcFIC5019Vyi4ThPqSFCzjGWaHQTBU8q6vrVwgxP9Lkm840imWKpcLCjYTtrKuwvsKSnrvHCXGkSMk9p6lhckfRpIeis+N2PiszT+mFLspyGleUhDwcLrZqmyeylxwjBcKHEapqkmyangyLZRVOijwOtCY5SsG5zL0OwlCJ4y5KznF3EUNDDrinwiyLZRzOXtlBbK5ITHFGLp8Q0R6ab6mS7enI2cFrxOyHvOCFaT1HThS1krjCwqWeurCkk+willhCC+RSZnRXBiZaC5RXRIZYKp2lyfrHwiKPKR0JDzrdU2EFgpidawlFDR6FgXUMNa+g1FY3bUQh2cLCwosRdnuQTS/S+JVrGLeWIvtQUvONJxlqSQYYKpwoN2kaocLjdVsis4Mk80ESF2YpSkzwldjHkjFCUutI/r+EHDU8oCs6yzL3PhWiEooZdFMkymlas4AcI3KmoMMNSQ3tHzjGWCrcJJdYyZC7QFGwjRL9p+MrRkAGWzIaWCn9W0F3TsK01c2ZvQw0byvxuQU0r1lM0qJO7wW0kRIMdDTtXEdzi4VIh+EoIHm0mWtAtpCixlabgn83fKTI7anJe9ST7WIK1DMGpQmYeA58ImV6ezOGOzK2Kgq01pd60cKWiUi9Lievb/0vIDPHQ05Kzt4ddPckQBQtoaurjyHnek/nKzpQLrVgKPjIkh2v4uyezpv+Xoo7fPFXaGFp1vaLKxQ4uUpQQS5VuQs7BCq4xRJv7fwpVvvFEB3j+620haOuocqMhWd6TTPAEx+mdFNGHdranFe95WrWmIvlY4F1Dle2ECgc6cto7SryuqGGGha0tFQ5V53migUKmg6XKAo4qS3mik+0OZpAhOLeZKicacgaYcyx5hypYQE02ZA4xi/pNhOQxR4klNKyqacj+mpxnLTnnGSo85++3ZCZq6lrZkXlGEX3o+C9FieccJbZWVFjC0Yo1FZnJhoYMFoI1hEZ9r6hwg75HwzBNhbZCdJEfJwTPGzJvaKImw1yYX1HDAmpXR+ZJQ/SmgqMNVQb5vgamGwLtt7VwvP7Qk1xpiM5x5Cyv93E06MZmgs0Nya2azIKOYKCGBQQW97RmhKNKF02JZqHEJ4o58qp7X5EcZmc56trXEqzjCBZ1MFGR87Ql2tSTs6CGxS05PTzRQorkbw7aKoKXFDXsYW42VJih/q+FP2BdTzDTwVqOYB13liM50vG7wy28qagyuIXMeQI/Oqq8bcn5wJI50xH00CRntyfpL1T4hydYpoXgNiFzoIUTDZnLNRzh4TBHwbYGDvZkxmlyJloyr6tRihpeUG94GnKtIznREF0tzJG/OOr73JBcrSh1k6WuTprgLU+mnSGnv6Zge0NNz+kTDdH8nuAuTdJDCNb21LCiIuqlYbqGzT3RAoZofQfjFazkqeNWdYaGvYTM001EW2oKPvVk1ldUGSgUtHFwjKM1h9jnFcmy5lChoLNaQMGGDsYbKixlaMBmmsx1QjCfflwTfO/gckW0ruZ3jugKR3R5W9hGUWqCgxuFgsuaCHorotGKzGaeZB9DMsaTnKCpMtwTvOzhYk0rdrArKCqcaWmVk1+F372ur1YkKxgatI8Qfe1gIX9wE9FgS8ESmuABIXnRUbCapcKe+nO7slClSZFzpV/LkLncEb1qiO42fS3R855Su2mCLh62t1SYZZYVmKwIHjREF2uihTzB20JOkz7dkxzYQnK0UOU494wh+VWRc6Un2kpTaVgLDFEkJ/uhzRcI0YKGgpGWOlocBU/a4fKoJ/pEaNV6jip3+Es9VXY078rGnmAdf7t9ylPXS34RBSuYPs1UecZTU78WanhBCHpZ5sAoTz0LGZKjPf9TRypqWEiTvOFglL1fCEY3wY/++rbk7C8bWebA6p6om6PgOL2kp44TFJlVNBXae2rqqdZztOJpT87GQsE9jqCPIe9VReZuQ/CIgacsyZdCpIScSYqcZk8r+nsyCzhyfhOqHGOIvrLknC8wTpFcaYiGC/RU1NRbUeUpocQOnkRpGOrIOcNRx+1uA0UrzhSSt+VyS3SJpnFWkzNDqOFGIWcfR86DnmARTQ1HKIL33ExPiemeOhYSSjzlSUZZuE4TveoJLnBUOFof6KiysCbnAEcZgcUNTDOwkqWu3RWtmGpZwlHhJENdZ3miGz0lJlsKnjbwqSHQjpxnFDlTLLwqJPMZMjd7KrzkSG7VsxXBZE+F8YZkb01Oe00yyRK9psh5SYh29ySPKBo2ylNht7ZkZnsKenjKNJu9PNEyZpaCHv4Kt6RQsLvAVp7M9kIimmCUwGeWqLMmGuIotYMmWNpSahkhZw9FqZsVnKJhsjAHvtHMsTM9fCI06Dx/u3vfUXCqfsKRc4oFY2jMsoo/7DJDwZ1CsIKnJu+J9ldkpmiCxQx1rWjI+T9FwcWWzOuaYH0Hj7klNRVWEQpmaqosakiGNTFHdjS/qnUdmf0NJW5xsL0HhimCCZZSRzmSPTXJQ4aaztAwtZnoabebJ+htCaZ7Cm535ByoqXKbX1WRc4Eh2MkRXWzImVc96Cj4VdOKVxR84VdQsIUM8Psoou2byVHyZFuq7O8otbSQ2UAoeEWTudATLGSpZzVLlXVkPU2Jc+27lsw2jmg5T5VhbeE3BT083K9WsTTkFU/Osi0rC5lRlpwRHUiesNS0sOvmqGML1aRbPAxTJD9ZKtxuob+hhl8cwYGWpJ8nub7t5p6coYbMovZ1BTdaKn1jYD6h4GFDNFyT/Kqe1XCXphXHOKLZmuRSRdBPEfVUXQzJm5YGPGGJdvAEr7hHNdGZnuBvrpciGmopOLf5N0uVMy0FfYToJk90uUCbJupaVpO53UJXR2bVpoU00V2KOo4zMFrBd0Jtz2pa0clT5Q5L8IpQ177mWQejPMEJhuQjS10ref6HHjdEhy1P1EYR7GtO0uSsKJQYLiTnG1rVScj5lyazpqWGl5uBbRWl7m6ixGOOnEsMJR7z8J0n6KMnCdxhiNYQCoZ6CmYLnO8omC3MkW3bktlPmEt/VQQHejL3+dOE5FlPdK/Mq8hZxxJtLyRrepLThYKbLZxkSb5W52vYxNOaOxUF0yxMUPwBTYqCzy01XayYK0sJyWBLqX0MwU5CzoymRzV0EjjeUeLgDpTo6ij42ZAzvD01dHUUTPLU96MdLbBME8nFBn7zJCMtJcZokn8YoqU0FS5WFKyniHobguMcmW8N0XkWZjkyN3hqOMtS08r+/xTBwpZSZ3qiVRX8SzMHHjfUNFjgHEPmY9PL3ykEzxkSre/1ZD6z/NuznuB0RcE1TWTm9zRgfUWVJiG6yrzgmWPXC8EAR4Wxhlad0ZbgQyEz3pG5RVEwwDJH2mgKpjcTiCOzn1lfUWANFbZ2BA8balnEweJC9J0iuaeZoI+ippFCztEKVvckR2iice1JvhVytrQwUAZpgsubCPaU7xUe9vWnaOpaSBEspalykhC9bUlOMpT42ZHca6hyrqKmw/wMR8H5ZmdFoBVJb03O4UL0tSNnvIeRmkrLWqrs78gcrEn2tpcboh0UPOW3UUR9PMk4T4nnNKWmCjlrefhCwxRNztfmIQVdDElvS4m1/WuOujoZCs5XVOjtKPGokJzsYCtFYoWonSPT21DheU/wWhM19FcElwqNGOsp9Q8N/cwXaiND1MmeL1Q5XROtYYgGeFq1aTMsoMmcrKjQrOFQTQ1fmBYhmW6o8Jkjc7iDJRTBIo5kgJD5yMEYA3srCg7VFKwiVJkmRCc5ohGOKhsYMn/XBLdo5taZjlb9YAlGWRimqbCsoY7HFAXLa5I1HPRxMMsQDHFkWtRNniqT9UEeNjcE7RUlrCJ4R2CSJuqlKHWvJXjAUNcITYkenuBRB84TbeepcqTj3zZyFJzgYQdHnqfgI0ddUwS6GqWpsKWhjq9cV0vBAEMN2znq+EBfIWT+pClYw5xsTlJU6GeIBsjGmmANTzJZiIYpgrM0Oa8ZMjd7NP87jxhqGOhJlnQtjuQpB+8aEE00wZFznSJPyHxgH3HkPOsJFvYk8zqCHzTs1BYOa4J3PFU+UVRZxlHDM4YavlNUuMoRveiZA2d7grMNc2g+RbSCEKzmgYsUmWmazFJyoiOZ4KnyhKOGRzWJa0+moyV4TVHDzn51Awtqaphfk/lRQ08FX1iiqxTB/kLwd0VynKfEvI6cd4XMV5bMhZ7gZUWVzYQ6Nm2BYzxJbw3bGthEUUMfgbGeorae6DxHtJoZ6alhZ0+ytiVoK1R4z5PTrOECT/SugseEOlb1MMNR4VRNcJy+V1Hg9ONClSZFZjdHlc6W6FBLdJja2MC5hhpu0DBYEY1TFGwiFAxRRCsYkiM9JRb0JNMVkW6CZYT/2EiTGWmo8k+h4FhDNE7BvppoTSFnmCV5xZKzvcCdDo7VVPnIU+I+Rc68juApC90MwcFCsJ5hDqxgScYKreruyQwTqrzoqDCmhWi4IbhB0Yrt3RGa6GfDv52rKXWhh28dyZaWUvcZeMTBaZoSGyiCtRU5J8iviioHaErs7Jkj61syVzTTgOcUOQ8buFBTYWdL5g3T4qlpe0+wvD63heAXRfCCIed9RbCsp2CiI7raUOYOTU13N8PNHvpaGvayo4a3LLT1lDrVEPT2zLUlheB1R+ZTRfKWJ+dcocLJfi11vyJ51lLqJ0WD7tRwryezjiV5W28uJO9qykzX8JDe2lHl/9oyBwa2UMfOngpXCixvKdXTk3wrsKmiVYdZIqsoWEERjbcUNDuiaQomGoIbFdEHmsyWnuR+IeriKDVLnlawlyNHKwKlSU631PKep8J4Q+ayjkSLKYLhalNHlYvttb6fHm0p6OApsZ4l2VfdqZkjuysy6ysKLlckf1KUutCTs39bmCgEyyoasIWlVaMF7mgmWtBT8Kol5xpH9IGllo8cJdopcvZ2sImlDmMIbtDk3KIpeNiS08lQw11NFPTwVFlPP6pJ2gvRfI7gQUfmNAtf6Gs0wQxDsKGlVBdF8rCa3jzdwMaGHOsItrZk7hAyOzpK9VS06j5F49b0VNGOOfKs3lDToMsMBe9ZWtHFEgxTJLs7qrygKZjUnmCYoeAqeU6jqWuLJup4WghOdvCYJnrSkSzoyRkm5M2StQwVltPkfCAk58tET/CSg+8MUecmotMEnhBKfWBIZsg2ihruMJQaoIm+tkTLKEqspMh00w95gvFCQRtDwTT1gVDDSEVdlwqZfxoQRbK0g+tbiBZxzKlpnpypejdDwTaeOvorMk/IJE10h9CqRe28hhLbe0pMsdSwv4ZbhKivo2BjDWfL8UKJgeavwlwb5KlwhyE4u4XkGE2ytZCznKLCDZZq42VzT8HLCrpruFbIfOIINmh/qCdZ1ZBc65kLHR1Bkyf5zn6pN3SvGKIlFNGplhrO9QSXanLOMQTLCa0YJCRrCZm/CZmrLTm7WzCK4GJDiWUdFeYx1LCFg3NMd0XmCuF3Y5rITLDUsYS9zoHVzwnJoYpSTQoObyEzr4cFBNqYTopoaU/wkyLZ2lPhX/5Y95ulxGTV7KjhWrOZgl8MyUUafjYraNjNU1N3IWcjT5WzWqjwtoarHSUObGYO3GCJZpsBlnJGPd6ZYLyl1GdCA2625IwwJDP8GUKymbzuyPlZlvTUsaUh5zFDhRWFzPKKZLAlWdcQbObgF9tOqOsmB1dqcqYJmWstFbZRRI9poolmqiLnU0POvxScpah2iSL5UJNzgScY5+AuIbpO0YD3NCW+dLMszFSdFCWGqG6eVq2uYVNDdICGD6W7EPRWZEY5gpsE9rUkS3mijzzJnm6UpUFXG1hCUeVoS5WfNcFpblELL2qqrCvMvRfd45oalvKU2tiQ6ePJOVMRXase9iTtLJztPxJKLWpo2CRDcJwn2sWSLKIO1WQWNTCvpVUvOZhgSC40JD0dOctaSqzkCRbXsKlb11Oip6PCJ0IwSJM31j3akRxlP7Rwn6aGaUL0qiLnJkvB3xWZ2+Q1TfCwpQH3G0o92UzmX4o/oJNQMMSQc547wVHhdk+VCw01DFYEnTxzZKAm74QmeNNR1w6WzEhNK15VJzuCdxQ53dRUDws5KvwgBMOEgpcVNe0hZI6RXT1Jd0cyj5nsaEAHgVmGaJIlWdsc5Ui2ElrRR6jrRAttNMEAIWrTDFubkZaok7/AkzfIwfuWVq0jHzuCK4QabtLUMVPB3kJ0oyHTSVFlqMALilJf2Rf8k5aaHtMfayocLBS8L89oKoxpJvnAkDPa0qp5DAUTHKWmCcnthlou8iCKaFFLHWcINd1nyIwXqrSxMNmSs6KmoL2QrKuWtlQ5V0120xQ5vRyZS1rgFkWwhiOwiuQbR0OOVhQM9iS3tiXp4RawRPMp5tDletOOBL95MpM01dZTBM9pkn5qF010rIeHFcFZhmSGpYpTsI6nwhqe5C9ynhlpp5ophuRb6WcJFldkVnVEwwxVfrVkvnWUuNLCg5bgboFHPDlDPDmnK7hUrWiIbjadDclujlZcaokOFup4Ri1kacV6jmrrK1hN9bGwpKEBQ4Q6DvIUXOmo6U5LqQM6EPyiKNjVkPnJkDPNEaxhiFay5ExW1NXVUGqcpYYdPcGiCq7z/TSlbhL4pplWXKd7NZO5QQFrefhRQW/NHOsqcIglc4UhWklR8K0QzbAw08CBDnpbgqXdeD/QUsM4RZXDFBW6WJKe/mFPdH0LtBgiq57wFLzlyQzz82qYx5D5WJP5yVJDW01BfyHnS6HKO/reZqId1WGa4Hkh2kWodJ8i6KoIPlAj2hPt76CzXsVR6koPRzWTfKqIentatYpQw2me4AA3y1Kind3SwoOKZDcFXTwl9tWU6mfgRk9d71sKtlNwrjnYw5tC5n5LdKiGry3JKNlHEd3oaMCFHrazBPMp/uNJ+V7IudcSbeOIdjUEdwl0VHCOZo5t6YluEuaC9mQeMgSfOyKnYGFHcIeQ84yQWbuJYJpZw5CzglDH7gKnWqqM9ZTaXcN0TeYhR84eQtJT76JJ1lREe7WnnvsMmRc9FQ7SBBM9mV3lCUdmHk/S2RAMt0QjFNFqQpWjDPQ01DXWUdDBkXziKPjGEP3VP+zIWU2t7im41FOloyWzn/L6dkUy3VLDaZ6appgDLHPjJEsyvJngWEPUyVBiAaHCTEXwrLvSEbV1e1gKJniicWorC1MUrVjB3uDhJE/wgSOzk1DXpk0k73qCM8xw2UvD5kJmDUfOomqMpWCkJRlvKXGmoeBm18USjVIk04SClxTB6YrgLAPLWYK9HLUt5cmc0vYES8GnTeRc6skZbQkWdxRsIcyBRzx1DbTk9FbU0caTPOgJHhJKnOGIVhQqvKmo0llRw9sabrZkDtdg3PqaKi9oatjY8B+G371paMg6+mZFNNtQ04mWBq3rYLOmtWWQp8KJnpy9DdFensyjdqZ+yY40VJlH8wcdLzC8PZnvHMFUTZUrDTkLyQaGus5X5LzpYAf3i+e/ZlhqGqWhh6Ou6xTR9Z6oi5AZZtp7Mj2EEm8oSpxiYZCHU/1fbGdNNNRRoZMhmilEb2gqHOEJDtXkHK/JnG6IrvbPCwV3NhONVdS1thBMs1T4QOBcTWa2IzhMk2nW5Kyn9tXUtpv9RsG2msxk+ZsQzRQacJncpgke0+T8y5Fzj8BiGo7XlJjaTIlpQs7KFjpqGnKuoyEPeIKnFMkZHvopgh81ySxNFWvJWcKRs70j2FOT012IllEEO1n4pD1513Yg2ssQPOThOkvyrqHUdEXOSEsihmBbTbKX1kLBPWqWkLOqJbjB3GBIZmoa8qWl4CG/iZ7oiA72ZL7TJNeZUY7kFQftDcHHluBzRbCegzMtrRjVQpX2lgoPKKLJAkcbMl01XK2p7yhL8pCBbQ3BN2avJgKvttcrWDK3CiUOVxQ8ZP+pqXKyIxnmBymCg5vJjNfkPK4+c8cIfK8ocVt7kmfd/I5SR1hKvCzUtb+lhgc00ZaO6CyhIQP1Uv4yIZjload72PXX0OIJvnFU+0Zf6MhsJwTfW0r0UwQfW4LNLZl5HK261JCZ4qnBaAreVAS3WrjV0LBnNDUNNDToCEeFfwgcb4gOEqLRhirWkexrCEYKVV711DLYEE1XBEsp5tpTGjorkomKYF9FDXv7fR3BGwbettSxnyL53MBPjsxDZjMh+VUW9NRxq1DhVk+FSxQcaGjV9Pawv6eGByw5qzoy7xk4RsOShqjJwWKe/1pEEfzkobeD/dQJmpqedcyBTy2sr4nGNRH0c0SPWTLrqAc0OQcb/gemKgqucQT7ySWKCn2EUotoCvpZct7RO2sy/QW0IWcXd7pQRQyZVwT2USRO87uhjioTLKV2brpMUcMQRbKH/N2T+UlTpaMls6cmc6CCNy3JdYYSUzzJQ4oSD3oKLncULOiJvjBEC2oqnCJkJluCYy2ZQ5so9YYlZ1VLlQU1mXEW1jZERwj/MUSRc24TdexlqLKfQBtDTScJUV8FszXBEY5ktpD5Ur9hYB4Nb1iikw3JoYpkKX+RodRKFt53MMuRnKSpY31PwYaGaILh3wxJGz9TkTPEETxoCWZrgvOlmyMzxFEwVJE5xZKzvyJ4WxEc16Gd4Xe3Weq4XH2jKRikqOkGQ87hQnC7wBmGYLAnesX3M+S87eFATauuN+Qcrh7xIxXJbUIdMw3JGE3ylCWzrieaqCn4zhGM19TQ3z1oH1AX+pWEqIc7wNGAkULBo/ZxRaV9NNyh4Br3rCHZzbzmSfawBL0dNRwpW1kK9mxPXR9povcdrGSZK9c2k0xwFGzjuniCtRSZCZ6ccZ7gaktmgAOtKbG/JnOkJrjcQTdFMsxRQ2cLY3WTIrlCw1eWKn8R6pvt4GFDso3QoL4a3nLk3G6JrtME3dSenpx7PNFTmga0EaJTLQ061sEeQoWXhSo9LTXsaSjoJQRXeZLtDclbCrYzfzHHeaKjHCVOUkQHO3JeEepr56mhiyaYYKjjNU+Fed1wS5VlhWSqI/hYUdDOkaxiKehoyOnrCV5yBHtbWFqTHCCwtpDcYolesVR5yUzTZBb3RNMd0d6WP+SvhuBmRcGxnuQzT95IC285cr41cLGQ6aJJhmi4TMGempxeimBRQw1tFKV+8jd6KuzoSTqqDxzRtpZkurvKEHxlqXKRIjjfUNNXQsNOsRScoWFLT+YeRZVD3GRN0MdQcKqQjHDMrdGGVu3iYJpQx3WGUvfbmxwFfR20WBq0oYY7LMFhhgYtr8jpaEnaOzjawWWaTP8mMr0t/EPDPoqcnxTBI5o58L7uoWnMrpoqPwgVrlAUWE+V+TQl9rawoyP6QGAlQw2TPRX+YSkxyBC8Z6jhHkXBgQL7WII3DVFnRfCrBfxewv9D6xsyjys4VkhWb9pUU627JllV0YDNHMku/ldNMMXDEo4aFnAkk4U6frNEU4XgZUPmEKHUl44KrzmYamjAbh0JFvGnaTLPu1s9jPCwjFpYiN7z1DTOk/nc07CfDFzmCf7i+bfNHXhDtLeBXzTBT5rkMvWOIxpl4EMh2LGJBu2syDnAEx2naEhHDWMMzPZEhygyS1mS5RTJr5ZkoKbEUoYqr2kqdDUE8ztK7OaIntJkFrIECwv8LJTaVx5XJE86go8dFeZ3FN3rjabCAYpoYEeC9zzJVULBbmZhDyd7ko09ydpNZ3nm2Kee4FPPXHnYEF1nqOFEC08LUVcDvYXkJHW8gTaKCk9YGOeIJhqiE4ToPEepdp7IWFjdwnWaufGMwJJCMtUTTBBK9BGCOy2tGGrJTHIwyEOzp6aPzNMOtlZkDvcEWpP5SVNhfkvDxhmSazTJXYrM9U1E0xwFVwqZQwzJxw6+kGGGUj2FglGGmnb1/G51udRSMNlTw6GGnCcUwVcOpmsqTHa06o72sw1RL02p9z0VbnMLOaIX3QKaYKSCFQzBKEUNHTSc48k53RH9wxGMtpQa5KjjW0W0n6XCCCG4yxNNdhQ4R4l1Ff+2sSd6UFHiIEOyqqFgT01mEUMD+joy75jPhOA+oVVLm309FR4yVOlp4RhLiScNmSmaYF5Pw0STrOIoWMSR2UkRXOMp+M4SHW8o8Zoi6OZgjKOaFar8zZDzkWzvKOjkKBjmCXby8JahhjXULY4KlzgKLvAwxVGhvyd4zxB1d9T0piazmKLCVZY5sKiD0y2ZSYrkUEPUbIk+dlQ4SJHTR50k1DPaUWIdTZW9NJwnJMOECgd7ou/MnppMJ02O1VT4Wsh85MnZzcFTngpXGKo84qmwgKbCL/orR/SzJ2crA+t6Mp94KvxJUeIbT3CQu1uIdlQEOzlKfS3UMcrTiFmOuroocrZrT2AcmamOKg8YomeEKm/rlT2sociMaybaUlFhuqHCM2qIJ+rg4EcDFymiDSxzaHdPcpE62pD5kyM5SBMoA1PaUtfIthS85ig1VPiPPYXgYEMNk4Qq7TXBgo7oT57gPUdwgCHzhIVFPFU6OYJzHAX9m5oNrVjeE61miDrqQ4VSa1oiURTsKHC0IfjNwU2WzK6eqK8jWln4g15TVBnqmDteCJ501PGAocJhhqjZdtBEB6lnhLreFJKxmlKbeGrqLiSThVIbCdGzloasa6lpMQXHCME2boLpJgT7yWaemu6wBONbqGNVRS0PKIL7LckbjmQtR7K8I5qtqel+T/ChJTNIKLjdUMNIRyvOEko9YYl2cwQveBikCNawJKcLBbc7+JM92mysNvd/Fqp8a0k6CNEe7cnZrxlW0wQXaXjaktnRwNOGZKYiONwS7a1JVheq3WgJHlQUGKHKmp4KAxXR/ULURcNgoa4zhKSLpZR3kxRRb0NmD0OFn+UCS7CzI1nbP6+o4x47QZE5xRCt3ZagnYcvmpYQktXdk5YKXTzBC57kKEe0VVuiSYqapssMS3C9p2CKkHOg8B8Pa8p5atrIw3qezIWanMGa5HRDNF6RM9wcacl0N+Q8Z8hsIkSnaIIdHRUOEebAPy1zbCkhM062FCJtif7PU+UtoVXzWKqM1PxXO8cfdruhFQ/a6x3JKYagvVDhQEtNiyiiSQ7OsuRsZUku0CRNDs4Sog6KKjsZgk2bYJqijgsEenoKeniinRXBn/U3lgpPdyDZynQx8IiioMnCep5Ky8mjGs6Wty0l1hUQTcNWswS3WRp2kCNZwJG8omG8JphPUaFbC8lEfabwP7VtM9yoaNCAjpR41VNhrD9LkbN722v0CoZMByFzhaW+MyzRYEWFDQwN2M4/JiT76PuljT3VU/A36eaIThb+R9oZGOAJ9tewkgGvqOMNRWYjT/Cwu99Q8LqDE4TgbLWxJ1jaDDAERsFOFrobgjUsBScaguXU8kKm2RL19tRypSHnHNlHiIZqgufs4opgQdVdwxBNNFBR6kVFqb8ogimOzB6a6HTzrlDHEpYaxjiiA4TMQobkDg2vejjfwJGWmnbVFAw3H3hq2NyQfG7hz4aC+w3BbwbesG0swYayvpAs6++Ri1Vfzx93mFChvyN5xVHTS+0p9aqCAxyZ6ZacZyw5+7uuQkFPR9DDk9NOiE7X1PCYJVjVUqq7JlrHwWALF5nfHNGjApdpqgzx5OwilDhCiDYTgnc9waGW4BdLNNUQvOtpzDOWHDH8D7TR/A/85KljEQu3NREc4Pl/6B1Hhc8Umb5CsKMmGC9EPcxoT2amwHNCmeOEnOPbklnMkbOgIvO5UMOpQrS9UGVdt6iH/fURjhI/WOpaW9OKLYRod6HCUEdOX000wpDZQ6hwg6LgZfOqo1RfT/CrJzjekXOGhpc1VW71ZLbXyyp+93ILbC1kPtIEYx0FIx1VDrLoVzXRKRYWk809yYlC9ImcrinxtabKnzRJk3lAU1OLEN1j2zrYzr2myHRXJFf4h4QKT1qSTzTB5+ZNTzTRkAxX8FcLV2uS8eoQQ2aAkFzvCM72sJIcJET3WPjRk5wi32uSS9rfZajpWEvj9hW42F4o5NytSXYy8IKHay10VYdrcl4SkqscrXpMwyGOgtkajheSxdQqmpxP1L3t4R5PqasFnrQEjytq6qgp9Y09Qx9o4S1FzhUCn1kyHSzBWLemoSGvOqLNhZyBjmCaAUYpMgt4Ck7wBBMMwWKWgjsUwTaGVsxWC1mYoKiyqqeGKYqonSIRQ3KIkHO0pmAxTdBHkbOvfllfr+AA+7gnc50huVKYK393FOyg7rbPO/izI7hE4CnHHHnJ0ogNPRUGeUpsrZZTBJcrovUcJe51BPsr6GkJdhCCsZ6aTtMEb2pqWkqeVtDXE/QVggsU/Nl86d9RMF3DxvZTA58agu810RWawCiSzzXBeU3MMW9oyJUedvNEvQyNu1f10BSMddR1vaLCYpYa/mGocLSiYDcLbQz8aMn5iyF4xBNMs1P0QEOV7o5gaWGuzSeLue4tt3ro7y4Tgm4G/mopdZgl6q0o6KzJWE3mMksNr3r+a6CbT8g5wZNzT9O7fi/zpaOmnz3BRoqos+tv9zMbdpxsqDBOEewtJLt7cg5wtKKbvldpSzRRCD43VFheCI7yZLppggMVBS/KMAdHODJvOwq2NQSbKKKPLdFWQs7Fqo+mpl01JXYRgq8dnGLhTiFzqmWsUMdpllZdbKlyvSdYxhI9YghOtxR8LgSLWHK62mGGVoxzBE8LNWzqH9CUesQzFy5RQzTc56mhi6fgXEWwpKfE5Z7M05ZgZUPmo6auiv8YKzDYwWBLMErIbKHJvOwIrvEdhOBcQ9JdU1NHQ7CXn2XIDFBKU2WAgcX9UAUzDXWd5alwuyJ41Z9rjKLCL4aCp4WarhPm2rH+SaHUYE001JDZ2ZAzXPjdMpZWvC9wmqIB2lLhQ01D5jO06hghWMndbM7yRJMsoCj1vYbnFQVrW9jak3OlEJ3s/96+p33dEPRV5GxiqaGjIthUU6FFEZyqCa5qJrpBdzSw95IUnOPIrCUUjRZQFrbw5PR0R1qiYx3cb6nrWUMrBmmiBQxVHtTew5ICP/ip6g4hed/Akob/32wvBHsIOX83cI8hGeNeNPCIkPmXe8fPKx84OMSRM1MTdXSwjCZ4S30jVGhvqTRak/OVhgGazHuOCud5onEO1lJr6ecVyaOK6H7zqlBlIaHE0oroCgfvGJIdPcmfLNGLjpz7hZwZQpUbFME0A1cIJa7VNORkgfsMBatbKgwwJM9bSvQXeNOvbIjelg6WWvo5kvbKaJJNHexkKNHL9xRyFlH8Ti2riB5wVPhUk7nGkJnoCe428LR/wRGdYIlmWebCyxou1rCk4g/ShugBDX0V0ZQWkh0dOVsagkM0yV6OoLd5ye+pRlsCr0n+KiQrGuq5yJDzrTAXHtLUMduTDBVKrSm3eHL+6ijxhFDX9Z5gVU/wliHYTMiMFpKLNMEywu80wd3meoFmt6VbRMPenhrOc6DVe4pgXU8DnnHakLOIIrlF4FZPIw6R+zxBP0dyq6OOZ4Q5sLKCcz084ok+VsMMyQhNZmmBgX5xIXOEJTmi7VsGTvMTNdHHhpzdbE8Du2oKxgvBqQKdDDnTFOylCFaxR1syz2iqrOI/FEpNc3C6f11/7+ASS6l2inq2ciTrCCzgyemrCL5SVPjQkdPZUmGy2c9Sw9FtR1sS30RmsKPCS4rkIC/2U0MduwucYolGaPjKEyhzmiPYXagyWbYz8LWBDdzRimAXzxx4z8K9hpzlhLq+NiQ97HuKorMUfK/OVvC2JfiHUPCQI/q7J2gjK+tTDNxkCc4TMssqCs4TGtLVwQihyoAWgj9bosU80XGW6Ac9TJGziaUh5+hnFcHOnlaM1iRn29NaqGENTTTSUHCH2tWTeV0osUhH6psuVLjRUmGWhm6OZEshGeNowABHcJ2Bpy2ZszRcKkRXd2QuKVEeXnbfaEq825FguqfgfE2whlChSRMdron+LATTPQ2Z369t4B9C5gs/ylzv+CMmepIDPclFQl13W0rspPd1JOcbghGOEutqCv5qacURQl3dDKyvyJlqKXGPgcM9FfawJAMVmdcspcYKOZc4GjDYkFlK05olNMHyHn4zFNykyOxt99RkHlfwmiHo60l2EKI+mhreEKp080Tbug08BVPcgoqC5zWt+NLDTZ7oNSF51N1qie7Va3uCCwyZbkINf/NED6jzOsBdZjFN8oqG3wxVunqCSYYKf3EdhJyf9YWGf7tRU2oH3VHgPr1fe5J9hOgHd7xQ0y7qBwXr23aGErP0cm64JVjZwsOGqL+mhNgZmhJLW2oY4UhedsyBgzrCKrq7BmcpNVhR6jBPq64Vgi+kn6XE68pp8J5/+0wRHGOpsKenQn9DZntPzjRLZpDAdD2fnSgkG9tmIXnUwQ6WVighs7Yi2MxQ0N3CqYaCXkJ0oyOztMDJjmSSpcpvlrk0RMMOjmArQ04PRV1DO1FwhCVaUVPpKUM03JK5SxPsIWRu8/CGHi8UHChiqGFDTbSRJWeYUDDcH6vJWUxR4k1FXbMUwV6e4AJFXS8oMqsZKqzvYQ9DDQdZckY4aGsIhtlubbd2r3j4QBMoTamdPZk7O/Bf62lacZwneNjQoGcdVU7zJOd7ghsUHOkosagic6cnWc8+4gg285R6zZP5s1/LUbCKIznTwK36PkdwlOrl4U1LwfdCCa+IrvFkmgw1PCAUXKWo0sURXWcI2muKJlgyFzhynCY4RBOsqCjoI1R5zREco0n2Vt09BQtYSizgKNHfUmUrQ5UOCh51BFcLmY7umhYqXKQomOop8bUnWNNQcIiBcYaC6xzMNOS8JQQfeqKBmmglB+97ok/lfk3ygaHSyZaCRTzRxQo6GzLfa2jWBPepw+UmT7SQEJyiyRkhBLMVOfcoMjcK0eZChfUNzFAUzCsEN5vP/X1uP/n/aoMX+K+nw/Hjr/9xOo7j7Pju61tLcgvJpTWXNbfN5jLpi6VfCOviTktKlFusQixdEKWmEBUKNaIpjZRSSOXSgzaaKLdabrm1/9nZ+/f+vd/vz/v9+Xy+zZ7PRorYoZqyLrCwQdEAixxVOEXNNnjX2nUSRlkqGmWowk8lxR50JPy9Bo6qJXaXwNvREBvnThPEPrewryLhcAnj5WE15Fqi8W7R1sAuEu86S4ENikItFN4xkv9Af4nXSnUVcLiA9xzesFpivRRVeFKtsMRaKBhuSbjOELnAUtlSQUpXgdfB4Z1oSbnFEetbQ0IrAe+Y+pqnDcEJFj6S8LDZzZHwY4e3XONNlARraomNEt2bkvGsosA3ioyHm+6jCMbI59wqt4eeara28IzEmyPgoRaUOEDhTVdEJhmCoTWfC0p8aNkCp0oYqih2iqGi4yXeMkOsn4LdLLnmKfh/YogjNsPebeFGR4m9BJHLzB61XQ3BtpISfS2FugsK9FAtLWX1dCRcrCnUp44CNzuCowUZmxSRgYaE6Za0W2u/E7CVXCiI/UOR8aAm1+OSyE3mOUcwyc1zBBeoX1kiKy0Zfxck1Gsyulti11i83QTBF5Kg3pDQThFMVHiPSlK+0cSedng/VaS8bOZbtsBcTcZAR8JP5KeqQ1OYKAi20njdNNRpgnsU//K+JnaXJaGTomr7aYIphoRn9aeShJWKEq9LcozSF7QleEfDI5LYm5bgVkFkRwVDBCVu0DDIkGupo8TZBq+/pMQURYErJQmPKGKjNDkWOLx7Jd5QizdUweIaKrlP7SwJDhZvONjLkOsBBX9UpGxnydhXkfBLQ8IxgojQbLFnJf81JytSljclYYyEFyx0kVBvKWOFJmONpshGAcsduQY5giVNCV51eOdJYo/pLhbvM0uDHSevNKRcrKZIqnCtJeEsO95RoqcgGK4ocZcho1tTYtcZvH41pNQ7vA0WrhIfOSraIIntIAi+NXWCErdbkvrWwjRLrt0NKUdL6KSOscTOdMSOUtBHwL6OLA0vNSdynaWQEnCpIvKaIrJJEbvHkmuNhn6OjM8VkSGSqn1uYJCGHnq9I3aLhNME3t6GjIkO7xrNFumpyTNX/NrwX7CrIRiqqWijI9JO4d1iieykyfiposQIQ8YjjsjlBh6oHWbwRjgYJQn2NgSnNycmJAk3NiXhx44Sxykihxm8ybUwT1OVKySc7vi3OXVkdBJ4AyXBeksDXG0IhgtYY0lY5ahCD0ehborIk5aUWRJviMA7Xt5kyRjonrXENkm8yYqgs8VzgrJmClK20uMM3jRJ0FiQICQF9hdETlLQWRIb5ki6WDfWRPobvO6a4GP5mcOrNzDFELtTkONLh9dXE8xypEg7z8A9jkhrQ6Fhjlg/QVktJXxt4WXzT/03Q8IaQWSqIuEvloQ2mqC9Jfi7wRul4RX3pSPlzpoVlmCtI2jvKHCFhjcM3sN6lqF6HxnKelLjXWbwrpR4xzuCrTUZx2qq9oAh8p6ixCUGr78g8oyjRAtB5CZFwi80VerVpI0h+IeBxa6Zg6kWvpDHaioYYuEsRbDC3eOmC2JvGYLeioxGknL2UATNJN6hmtj1DlpLvDVmocYbrGCVJKOrg4X6DgddLA203BKMFngdJJFtFd7vJLm6KEpc5yjQrkk7M80SGe34X24nSex1Ra5Omgb71JKyg8SrU3i/kARKwWpH0kOGhKkObyfd0ZGjvyXlAkVZ4xRbYJ2irFMkFY1SwyWxr2oo4zlNiV+7zmaweFpT4kR3kaDAFW6xpSqzJay05FtYR4HmZhc9UxKbbfF2V8RG1MBmSaE+kmC6JnaRXK9gsiXhJHl/U0qM0WTcbyhwkYIvFGwjSbjfwhiJt8ZSQU+Bd5+marPMOkVkD0muxYLIfEuhh60x/J92itguihJSEMySVPQnTewnEm+620rTQEMsOfo4/kP/0ARvWjitlpSX7GxBgcMEsd3EEeYWvdytd+Saawi6aCIj1CkGb6Aj9rwhx16Cf3vAwFy5pyLhVonXzy51FDpdEblbkdJbUcEPDEFzQ8qNmhzzLTmmKWKbFCXeEuRabp6rxbvAtLF442QjQ+wEA9eL1xSR7Q0JXzlSHjJ4exq89yR0laScJ/FW6z4a73pFMEfDiRZvuvijIt86RaSFOl01riV2mD1UEvxGk/Geg5aWwGki1zgKPG9J2U8PEg8qYvMsZeytiTRXBMslCU8JSlxi8EabjwUldlDNLfzTUmCgxWsjqWCOHavYAqsknKFIO0yQ61VL5AVFxk6WhEaCAkdJgt9aSkzXlKNX2jEa79waYuc7gq0N3GDJGCBhoiTXUEPsdknCUE1CK0fwsiaylSF2uiDyO4XX3pFhNd7R4itFGc0k/ElBZwWvq+GC6szVeEoS/MZ+qylwpKNKv9Z469UOjqCjwlusicyTxG6VpNxcQ8IncoR4RhLbR+NdpGGmJWOcIzJGUuKPGpQg8rrG21dOMqQssJQ4RxH5jaUqnZuQ0F4Q+cjxLwPtpZbIAk3QTJHQWBE5S1BokoVtDd6lhqr9UpHSUxMcIYl9pojsb8h4SBOsMQcqvOWC2E8EVehqiJ1hrrAEbQxeK0NGZ0Gkq+guSRgniM23bIHVkqwx4hiHd7smaOyglyIyQuM978j4VS08J/A2G1KeMBRo4fBaSNhKUEZfQewVQ/C1I+MgfbEleEzCUw7mKXI0M3hd1EESVji8x5uQ41nxs1q4RMJCCXs7Iq9acpxn22oSDnQ/sJTxsCbHIYZiLyhY05TY0ZLIOQrGaSJDDN4t8pVaIrsqqFdEegtizc1iTew5Q4ayBDMUsQMkXocaYkc0hZua412siZ1rSXlR460zRJ5SlHGe5j801RLMlJTxtaOM3Q1pvxJ45zUlWFD7rsAbpfEm1JHxG0eh8w2R7QQVzBUw28FhFp5QZzq8t2rx2joqulYTWSuJdTYfWwqMFMcovFmSyJPNyLhE4E10pHzYjOC3huArRa571ZsGajQpQx38SBP5pyZB6lMU3khDnp0MBV51BE9o2E+TY5Ml2E8S7C0o6w1xvCZjf0HkVEHCzFoyNmqC+9wdcqN+Tp7jSDheE9ws8Y5V0NJCn2bk2tqSY4okdrEhx1iDN8cSudwepWmAGXKcJXK65H9to8jYQRH7SBF01ESUJdd0TayVInaWhLkOjlXE5irKGOnI6GSWGCJa482zBI9rCr0jyTVcEuzriC1vcr6mwFGSiqy5zMwxBH/TJHwjSPhL8+01kaaSUuMFKTcLEvaUePcrSmwn8DZrgikWb7CGPxkSjhQwrRk57tctmxLsb9sZvL9LSlyuSLlWkqOjwduo8b6Uv1DkmudIeFF2dHCgxVtk8dpIvHpBxhEOdhKk7OLIUSdJ+cSRY57B+0DgGUUlNfpthTfGkauzxrvTsUUaCVhlKeteTXCoJDCa2NOKhOmC4G1H8JBd4OBZReSRGkqcb/CO1PyLJTLB4j1q8JYaIutEjSLX8YKM+a6phdMsdLFUoV5RTm9JSkuDN8WcIon0NZMNZWh1q8C7SJEwV5HxrmnnTrf3KoJBlmCYI2ilSLlfEvlE4011NNgjgthzEua0oKK7JLE7HZHlEl60BLMVFewg4EWNt0ThrVNEVkkiTwpKXSWJzdRENgvKGq4IhjsiezgSFtsfCUq8qki5S1LRQeYQQ4nemmCkImWMw3tFUoUBZk4NOeZYEp4XRKTGa6wJjrWNHBVJR4m3FCnbuD6aak2WsMTh3SZImGCIPKNgsDpVwnsa70K31lCFJZYcwwSMFcQulGTsZuEaSdBXkPGZhu0FsdUO73RHjq8MPGGIfaGIbVTk6iuI3GFgucHrIQkmWSJdBd7BBu+uOryWAhY7+Lki9rK5wtEQzWwvtbqGhIMFwWRJsElsY4m9IIg9L6lCX0VklaPAYkfkZEGDnOWowlBJjtMUkcGK4Lg6EtoZInMUBVYLgn0UsdmCyCz7gIGHFfk+k1QwTh5We7A9x+IdJ6CvIkEagms0hR50eH9UnTQJ+2oiKyVlLFUE+8gBGu8MQ3CppUHesnjTHN4QB/UGPhCTHLFPHMFrCqa73gqObUJGa03wgbhHkrCfpEpzNLE7JDS25FMKhlhKKWKfCgqstLCPu1zBXy0J2ztwjtixBu8UTRn9LVtkmCN2iyFhtME70JHRQ1KVZXqKI/KNIKYMCYs1GUMEKbM1bKOI9LDXC7zbHS+bt+1MTWS9odA9DtrYtpbImQJ2VHh/lisEwaHqUk1kjKTAKknkBEXkbkdMGwq0dnhzLJF3NJH3JVwrqOB4Sca2hti75nmJN0WzxS6UxDYoEpxpa4htVlRjkYE7DZGzJVU72uC9IyhQL4i8YfGWSYLLNcHXloyz7QhNifmKSE9JgfGmuyLhc403Xm9vqcp6gXe3xuuv8F6VJNxkyTHEkHG2g0aKXL0MsXc1bGfgas2//dCONXiNLCX+5mB7eZIl1kHh7ajwpikyzlUUWOVOsjSQlsS+M0R+pPje/dzBXRZGO0rMtgQrLLG9VSu9n6CMXS3BhwYmSoIBhsjNBmZbgusE9BCPCP5triU4VhNbJfE+swSP27aayE8tuTpYYjtrYjMVGZdp2NpS1s6aBnKSHDsbKuplKbHM4a0wMFd/5/DmGyKrJSUaW4IBrqUhx0vyfzTBBLPIUcnZdrAkNsKR0sWRspumSns6Ch0v/qqIbBYUWKvPU/CFoyrDJGwSNFhbA/MlzKqjrO80hRbpKx0Jewsi/STftwGSlKc1JZyAzx05dhLEdnfQvhZOqiHWWEAHC7+30FuRcZUgaO5gpaIK+xsiHRUsqaPElTV40xQZQ107Q9BZE1nryDVGU9ZSQ47bmhBpLcYpUt7S+xuK/FiT8qKjwXYw5ypS2iuCv7q1gtgjhuBuB8LCFY5cUuCNtsQOFcT+4Ih9JX+k8Ea6v0iCIRZOtCT0Et00JW5UeC85Cg0ScK0k411HcG1zKtre3SeITBRk7WfwDhEvaYLTHP9le0m8By0JDwn4TlLW/aJOvGHxdjYUes+ScZigCkYQdNdEOhkiezgShqkx8ueKjI8lDfK2oNiOFvrZH1hS+tk7NV7nOmLHicGWEgubkXKdwdtZknCLJXaCpkrjZBtLZFsDP9CdxWsSr05Sxl6CMmoFbCOgryX40uDtamB7SVmXW4Ihlgpmq+00tBKUUa83WbjLUNkzDmY7cow1JDygyPGlhgGKYKz4vcV7QBNbJIgM11TUqZaMdwTeSguH6rOaw1JRKzaaGyxVm2EJ/uCIrVWUcZUkcp2grMsEjK+DMwS59jQk3Kd6SEq1d0S6uVmO4Bc1lDXTUcHjluCXEq+1OlBDj1pi9zgiXxnKuE0SqTXwhqbETW6RggMEnGl/q49UT2iCzgJvRwVXS2K/d6+ZkyUl7jawSVLit46EwxVljDZwoSQ20sDBihztHfk2yA8NVZghiXwrYHQdfKAOtzsayjhY9bY0yE2CWEeJ9xfzO423xhL5syS2TFJofO2pboHob0nY4GiAgRrvGQEDa/FWSsoaaYl0syRsEt3kWoH3B01shCXhTUWe9w3Bt44SC9QCh3eShQctwbaK2ApLroGCMlZrYqvlY3qYhM0aXpFkPOuoqJ3Dm6fxXrGwVF9gCWZagjPqznfkuMKQ8DPTQRO8ZqG1hPGKEm9IgpGW4DZDgTNriTxvFiq+Lz+0cKfp4wj6OCK9JSnzNSn9LFU7UhKZZMnYwcJ8s8yRsECScK4j5UOB95HFO0CzhY4xJxuCix0lDlEUeMdS6EZBkTsUkZ4K74dugyTXS7aNgL8aqjDfkCE0ZbwkCXpaWCKhl8P7VD5jxykivSyxyZrYERbe168LYu9ZYh86IkscgVLE7tWPKmJv11CgoyJltMEbrohtVAQfO4ImltiHEroYEs7RxAarVpY8AwXMcMReFOTYWe5iiLRQxJ5Q8DtJ8LQhWOhIeFESPGsILhbNDRljNbHzNRlTFbk2S3L0NOS6V1KFJYKUbSTcIIhM0wQ/s2TM0SRMNcQmSap3jCH4yhJZKSkwyRHpYYgsFeQ4U7xoCB7VVOExhXepo9ABBsYbvGWKXPME3lyH95YioZ0gssQRWWbI+FaSMkXijZXwgiTlYdPdkNLaETxlyDVIwqeaEus0aTcYcg0RVOkpR3CSJqIddK+90JCxzsDVloyrFd5ZAr4TBKfaWa6boEA7C7s6EpYaeFPjveooY72mjIccLHJ9HUwVlDhKkmutJDJBwnp1rvulJZggKDRfbXAkvC/4l3ozQOG9a8lxjx0i7nV4jSXc7vhe3OwIxjgSHjdEhhsif9YkPGlus3iLFDnWOFhtCZbJg0UbQcIaR67JjthoCyMEZRwhiXWyxO5QxI6w5NhT4U1WsJvDO60J34fW9hwzwlKij6ZAW9ne4L0s8C6XeBMEkd/LQy1VucBRot6QMlbivaBhoBgjqGiCJNhsqVp/S2SsG6DIONCR0dXhvWbJ+MRRZJkkuEjgDXJjFQW6SSL7GXK8Z2CZg7cVsbWGoKmEpzQ5elpiy8Ryg7dMkLLUEauzeO86CuwlSOlgYLojZWeJ9xM3S1PWfEfKl5ISLQ0MEKR8YOB2QfCxJBjrKPCN4f9MkaSsqoVXJBmP7EpFZ9UQfOoOFwSzBN4MQ8LsGrymlipcJQhmy0GaQjPqCHaXRwuCZwRbqK2Fg9wlClZqYicrIgMdZfxTQ0c7TBIbrChxmuzoKG8XRaSrIhhiyNFJkrC7oIAWMEOQa5aBekPCRknCo4IKPrYkvCDI8aYmY7WFtprgekcJZ3oLIqssCSMtFbQTJKwXYy3BY5oCh2iKPCpJOE+zRdpYgi6O2KmOAgvVCYaU4ySRek1sgyFhJ403QFHiVEmJHwtybO1gs8Hr5+BETQX3War0qZngYGgtVZtoqd6vFSk/UwdZElYqyjrF4HXUeFspIi9IGKf4j92pKGAdCYMVsbcV3kRF0N+R8LUd5PCsIGWoxDtBkCI0nKofdJQxT+LtZflvuc8Q3CjwWkq8KwUpHzkK/NmSsclCL0nseQdj5FRH5CNHSgtLiW80Of5HU9Hhlsga9bnBq3fEVltKfO5IaSTmGjjc4J0otcP7QsJUSQM8pEj5/wCuUuC2DWz8AAAAAElFTkSuQmCC\");}.ace-ambiance .ace_indent-guide {background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC\") right repeat-y;}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-chaos.js b/library/ace/theme-chaos.js
new file mode 100644
index 000000000..fa5b75aab
--- /dev/null
+++ b/library/ace/theme-chaos.js
@@ -0,0 +1 @@
+ace.define("ace/theme/chaos",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-chaos",t.cssText=".ace-chaos .ace_gutter {background: #141414;color: #595959;border-right: 1px solid #282828;}.ace-chaos .ace_gutter-cell.ace_warning {background-image: none;background: #FC0;border-left: none;padding-left: 0;color: #000;}.ace-chaos .ace_gutter-cell.ace_error {background-position: -6px center;background-image: none;background: #F10;border-left: none;padding-left: 0;color: #000;}.ace-chaos .ace_print-margin {border-left: 1px solid #555;right: 0;background: #1D1D1D;}.ace-chaos {background-color: #161616;color: #E6E1DC;}.ace-chaos .ace_cursor {border-left: 2px solid #FFFFFF;}.ace-chaos .ace_cursor.ace_overwrite {border-left: 0px;border-bottom: 1px solid #FFFFFF;}.ace-chaos .ace_marker-layer .ace_selection {background: #494836;}.ace-chaos .ace_marker-layer .ace_step {background: rgb(198, 219, 174);}.ace-chaos .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #FCE94F;}.ace-chaos .ace_marker-layer .ace_active-line {background: #333;}.ace-chaos .ace_gutter-active-line {background-color: #222;}.ace-chaos .ace_invisible {color: #404040;}.ace-chaos .ace_keyword {color:#00698F;}.ace-chaos .ace_keyword.ace_operator {color:#FF308F;}.ace-chaos .ace_constant {color:#1EDAFB;}.ace-chaos .ace_constant.ace_language {color:#FDC251;}.ace-chaos .ace_constant.ace_library {color:#8DFF0A;}.ace-chaos .ace_constant.ace_numeric {color:#58C554;}.ace-chaos .ace_invalid {color:#FFFFFF;background-color:#990000;}.ace-chaos .ace_invalid.ace_deprecated {color:#FFFFFF;background-color:#990000;}.ace-chaos .ace_support {color: #999;}.ace-chaos .ace_support.ace_function {color:#00AEEF;}.ace-chaos .ace_function {color:#00AEEF;}.ace-chaos .ace_string {color:#58C554;}.ace-chaos .ace_comment {color:#555;font-style:italic;padding-bottom: 0px;}.ace-chaos .ace_variable {color:#997744;}.ace-chaos .ace_meta.ace_tag {color:#BE53E6;}.ace-chaos .ace_entity.ace_other.ace_attribute-name {color:#FFFF89;}.ace-chaos .ace_markup.ace_underline {text-decoration: underline;}.ace-chaos .ace_fold-widget {text-align: center;}.ace-chaos .ace_fold-widget:hover {color: #777;}.ace-chaos .ace_fold-widget.ace_start,.ace-chaos .ace_fold-widget.ace_end,.ace-chaos .ace_fold-widget.ace_closed{background: none;border: none;box-shadow: none;}.ace-chaos .ace_fold-widget.ace_start:after {content: '\u25be'}.ace-chaos .ace_fold-widget.ace_end:after {content: '\u25b4'}.ace-chaos .ace_fold-widget.ace_closed:after {content: '\u2023'}.ace-chaos .ace_indent-guide {border-right:1px dotted #333;margin-right:-1px;}.ace-chaos .ace_fold { background: #222; border-radius: 3px; color: #7AF; border: none; }.ace-chaos .ace_fold:hover {background: #CCC; color: #000;}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-chrome.js b/library/ace/theme-chrome.js
new file mode 100644
index 000000000..29b01c7ab
--- /dev/null
+++ b/library/ace/theme-chrome.js
@@ -0,0 +1 @@
+ace.define("ace/theme/chrome",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-chrome",t.cssText='.ace-chrome .ace_gutter {background: #ebebeb;color: #333;overflow : hidden;}.ace-chrome .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-chrome {background-color: #FFFFFF;color: black;}.ace-chrome .ace_cursor {color: black;}.ace-chrome .ace_invisible {color: rgb(191, 191, 191);}.ace-chrome .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-chrome .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-chrome .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-chrome .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-chrome .ace_fold {}.ace-chrome .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-chrome .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-chrome .ace_support.ace_type,.ace-chrome .ace_support.ace_class.ace-chrome .ace_support.ace_other {color: rgb(109, 121, 222);}.ace-chrome .ace_variable.ace_parameter {font-style:italic;color:#FD971F;}.ace-chrome .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-chrome .ace_comment {color: #236e24;}.ace-chrome .ace_comment.ace_doc {color: #236e24;}.ace-chrome .ace_comment.ace_doc.ace_tag {color: #236e24;}.ace-chrome .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-chrome .ace_variable {color: rgb(49, 132, 149);}.ace-chrome .ace_xml-pe {color: rgb(104, 104, 91);}.ace-chrome .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-chrome .ace_heading {color: rgb(12, 7, 255);}.ace-chrome .ace_list {color:rgb(185, 6, 144);}.ace-chrome .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-chrome .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-chrome .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-chrome .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-chrome .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-chrome .ace_gutter-active-line {background-color : #dcdcdc;}.ace-chrome .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-chrome .ace_storage,.ace-chrome .ace_keyword,.ace-chrome .ace_meta.ace_tag {color: rgb(147, 15, 128);}.ace-chrome .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-chrome .ace_string {color: #1A1AA6;}.ace-chrome .ace_entity.ace_other.ace_attribute-name {color: #994409;}.ace-chrome .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-clouds.js b/library/ace/theme-clouds.js
new file mode 100644
index 000000000..52dfe8ecd
--- /dev/null
+++ b/library/ace/theme-clouds.js
@@ -0,0 +1 @@
+ace.define("ace/theme/clouds",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-clouds",t.cssText='.ace-clouds .ace_gutter {background: #ebebeb;color: #333}.ace-clouds .ace_print-margin {width: 1px;background: #e8e8e8}.ace-clouds {background-color: #FFFFFF;color: #000000}.ace-clouds .ace_cursor {color: #000000}.ace-clouds .ace_marker-layer .ace_selection {background: #BDD5FC}.ace-clouds.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;}.ace-clouds .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-clouds .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-clouds .ace_marker-layer .ace_active-line {background: #FFFBD1}.ace-clouds .ace_gutter-active-line {background-color : #dcdcdc}.ace-clouds .ace_marker-layer .ace_selected-word {border: 1px solid #BDD5FC}.ace-clouds .ace_invisible {color: #BFBFBF}.ace-clouds .ace_keyword,.ace-clouds .ace_meta,.ace-clouds .ace_support.ace_constant.ace_property-value {color: #AF956F}.ace-clouds .ace_keyword.ace_operator {color: #484848}.ace-clouds .ace_keyword.ace_other.ace_unit {color: #96DC5F}.ace-clouds .ace_constant.ace_language {color: #39946A}.ace-clouds .ace_constant.ace_numeric {color: #46A609}.ace-clouds .ace_constant.ace_character.ace_entity {color: #BF78CC}.ace-clouds .ace_invalid {background-color: #FF002A}.ace-clouds .ace_fold {background-color: #AF956F;border-color: #000000}.ace-clouds .ace_storage,.ace-clouds .ace_support.ace_class,.ace-clouds .ace_support.ace_function,.ace-clouds .ace_support.ace_other,.ace-clouds .ace_support.ace_type {color: #C52727}.ace-clouds .ace_string {color: #5D90CD}.ace-clouds .ace_comment {color: #BCC8BA}.ace-clouds .ace_entity.ace_name.ace_tag,.ace-clouds .ace_entity.ace_other.ace_attribute-name {color: #606060}.ace-clouds .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-clouds_midnight.js b/library/ace/theme-clouds_midnight.js
new file mode 100644
index 000000000..1598fdc84
--- /dev/null
+++ b/library/ace/theme-clouds_midnight.js
@@ -0,0 +1 @@
+ace.define("ace/theme/clouds_midnight",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-clouds-midnight",t.cssText=".ace-clouds-midnight .ace_gutter {background: #232323;color: #929292}.ace-clouds-midnight .ace_print-margin {width: 1px;background: #232323}.ace-clouds-midnight {background-color: #191919;color: #929292}.ace-clouds-midnight .ace_cursor {color: #7DA5DC}.ace-clouds-midnight .ace_marker-layer .ace_selection {background: #000000}.ace-clouds-midnight.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #191919;}.ace-clouds-midnight .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-clouds-midnight .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-clouds-midnight .ace_marker-layer .ace_active-line {background: rgba(215, 215, 215, 0.031)}.ace-clouds-midnight .ace_gutter-active-line {background-color: rgba(215, 215, 215, 0.031)}.ace-clouds-midnight .ace_marker-layer .ace_selected-word {border: 1px solid #000000}.ace-clouds-midnight .ace_invisible {color: #666}.ace-clouds-midnight .ace_keyword,.ace-clouds-midnight .ace_meta,.ace-clouds-midnight .ace_support.ace_constant.ace_property-value {color: #927C5D}.ace-clouds-midnight .ace_keyword.ace_operator {color: #4B4B4B}.ace-clouds-midnight .ace_keyword.ace_other.ace_unit {color: #366F1A}.ace-clouds-midnight .ace_constant.ace_language {color: #39946A}.ace-clouds-midnight .ace_constant.ace_numeric {color: #46A609}.ace-clouds-midnight .ace_constant.ace_character.ace_entity {color: #A165AC}.ace-clouds-midnight .ace_invalid {color: #FFFFFF;background-color: #E92E2E}.ace-clouds-midnight .ace_fold {background-color: #927C5D;border-color: #929292}.ace-clouds-midnight .ace_storage,.ace-clouds-midnight .ace_support.ace_class,.ace-clouds-midnight .ace_support.ace_function,.ace-clouds-midnight .ace_support.ace_other,.ace-clouds-midnight .ace_support.ace_type {color: #E92E2E}.ace-clouds-midnight .ace_string {color: #5D90CD}.ace-clouds-midnight .ace_comment {color: #3C403B}.ace-clouds-midnight .ace_entity.ace_name.ace_tag,.ace-clouds-midnight .ace_entity.ace_other.ace_attribute-name {color: #606060}.ace-clouds-midnight .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-cobalt.js b/library/ace/theme-cobalt.js
new file mode 100644
index 000000000..9df85887f
--- /dev/null
+++ b/library/ace/theme-cobalt.js
@@ -0,0 +1 @@
+ace.define("ace/theme/cobalt",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-cobalt",t.cssText=".ace-cobalt .ace_gutter {background: #011e3a;color: rgb(128,145,160)}.ace-cobalt .ace_print-margin {width: 1px;background: #555555}.ace-cobalt {background-color: #002240;color: #FFFFFF}.ace-cobalt .ace_cursor {color: #FFFFFF}.ace-cobalt .ace_marker-layer .ace_selection {background: rgba(179, 101, 57, 0.75)}.ace-cobalt.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #002240;}.ace-cobalt .ace_marker-layer .ace_step {background: rgb(127, 111, 19)}.ace-cobalt .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 255, 255, 0.15)}.ace-cobalt .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.35)}.ace-cobalt .ace_gutter-active-line {background-color: rgba(0, 0, 0, 0.35)}.ace-cobalt .ace_marker-layer .ace_selected-word {border: 1px solid rgba(179, 101, 57, 0.75)}.ace-cobalt .ace_invisible {color: rgba(255, 255, 255, 0.15)}.ace-cobalt .ace_keyword,.ace-cobalt .ace_meta {color: #FF9D00}.ace-cobalt .ace_constant,.ace-cobalt .ace_constant.ace_character,.ace-cobalt .ace_constant.ace_character.ace_escape,.ace-cobalt .ace_constant.ace_other {color: #FF628C}.ace-cobalt .ace_invalid {color: #F8F8F8;background-color: #800F00}.ace-cobalt .ace_support {color: #80FFBB}.ace-cobalt .ace_support.ace_constant {color: #EB939A}.ace-cobalt .ace_fold {background-color: #FF9D00;border-color: #FFFFFF}.ace-cobalt .ace_support.ace_function {color: #FFB054}.ace-cobalt .ace_storage {color: #FFEE80}.ace-cobalt .ace_entity {color: #FFDD00}.ace-cobalt .ace_string {color: #3AD900}.ace-cobalt .ace_string.ace_regexp {color: #80FFC2}.ace-cobalt .ace_comment {font-style: italic;color: #0088FF}.ace-cobalt .ace_heading,.ace-cobalt .ace_markup.ace_heading {color: #C8E4FD;background-color: #001221}.ace-cobalt .ace_list,.ace-cobalt .ace_markup.ace_list {background-color: #130D26}.ace-cobalt .ace_variable {color: #CCCCCC}.ace-cobalt .ace_variable.ace_language {color: #FF80E1}.ace-cobalt .ace_meta.ace_tag {color: #9EFFFF}.ace-cobalt .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHCLSvkPAAP3AgSDTRd4AAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-crimson_editor.js b/library/ace/theme-crimson_editor.js
new file mode 100644
index 000000000..9e3653e0d
--- /dev/null
+++ b/library/ace/theme-crimson_editor.js
@@ -0,0 +1 @@
+ace.define("ace/theme/crimson_editor",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssText='.ace-crimson-editor .ace_gutter {background: #ebebeb;color: #333;overflow : hidden;}.ace-crimson-editor .ace_gutter-layer {width: 100%;text-align: right;}.ace-crimson-editor .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-crimson-editor {background-color: #FFFFFF;color: rgb(64, 64, 64);}.ace-crimson-editor .ace_cursor {color: black;}.ace-crimson-editor .ace_invisible {color: rgb(191, 191, 191);}.ace-crimson-editor .ace_identifier {color: black;}.ace-crimson-editor .ace_keyword {color: blue;}.ace-crimson-editor .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-crimson-editor .ace_constant.ace_language {color: rgb(255, 156, 0);}.ace-crimson-editor .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-crimson-editor .ace_invalid {text-decoration: line-through;color: rgb(224, 0, 0);}.ace-crimson-editor .ace_fold {}.ace-crimson-editor .ace_support.ace_function {color: rgb(192, 0, 0);}.ace-crimson-editor .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-crimson-editor .ace_support.ace_type,.ace-crimson-editor .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-crimson-editor .ace_keyword.ace_operator {color: rgb(49, 132, 149);}.ace-crimson-editor .ace_string {color: rgb(128, 0, 128);}.ace-crimson-editor .ace_comment {color: rgb(76, 136, 107);}.ace-crimson-editor .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-crimson-editor .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-crimson-editor .ace_constant.ace_numeric {color: rgb(0, 0, 64);}.ace-crimson-editor .ace_variable {color: rgb(0, 64, 128);}.ace-crimson-editor .ace_xml-pe {color: rgb(104, 104, 91);}.ace-crimson-editor .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-crimson-editor .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-crimson-editor .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-crimson-editor .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-crimson-editor .ace_marker-layer .ace_active-line {background: rgb(232, 242, 254);}.ace-crimson-editor .ace_gutter-active-line {background-color : #dcdcdc;}.ace-crimson-editor .ace_meta.ace_tag {color:rgb(28, 2, 255);}.ace-crimson-editor .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-crimson-editor .ace_string.ace_regex {color: rgb(192, 0, 192);}.ace-crimson-editor .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}',t.cssClass="ace-crimson-editor";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-dawn.js b/library/ace/theme-dawn.js
new file mode 100644
index 000000000..ed0abd90e
--- /dev/null
+++ b/library/ace/theme-dawn.js
@@ -0,0 +1 @@
+ace.define("ace/theme/dawn",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-dawn",t.cssText=".ace-dawn .ace_gutter {background: #ebebeb;color: #333}.ace-dawn .ace_print-margin {width: 1px;background: #e8e8e8}.ace-dawn {background-color: #F9F9F9;color: #080808}.ace-dawn .ace_cursor {color: #000000}.ace-dawn .ace_marker-layer .ace_selection {background: rgba(39, 95, 255, 0.30)}.ace-dawn.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #F9F9F9;}.ace-dawn .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-dawn .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(75, 75, 126, 0.50)}.ace-dawn .ace_marker-layer .ace_active-line {background: rgba(36, 99, 180, 0.12)}.ace-dawn .ace_gutter-active-line {background-color : #dcdcdc}.ace-dawn .ace_marker-layer .ace_selected-word {border: 1px solid rgba(39, 95, 255, 0.30)}.ace-dawn .ace_invisible {color: rgba(75, 75, 126, 0.50)}.ace-dawn .ace_keyword,.ace-dawn .ace_meta {color: #794938}.ace-dawn .ace_constant,.ace-dawn .ace_constant.ace_character,.ace-dawn .ace_constant.ace_character.ace_escape,.ace-dawn .ace_constant.ace_other {color: #811F24}.ace-dawn .ace_invalid.ace_illegal {text-decoration: underline;font-style: italic;color: #F8F8F8;background-color: #B52A1D}.ace-dawn .ace_invalid.ace_deprecated {text-decoration: underline;font-style: italic;color: #B52A1D}.ace-dawn .ace_support {color: #691C97}.ace-dawn .ace_support.ace_constant {color: #B4371F}.ace-dawn .ace_fold {background-color: #794938;border-color: #080808}.ace-dawn .ace_list,.ace-dawn .ace_markup.ace_list,.ace-dawn .ace_support.ace_function {color: #693A17}.ace-dawn .ace_storage {font-style: italic;color: #A71D5D}.ace-dawn .ace_string {color: #0B6125}.ace-dawn .ace_string.ace_regexp {color: #CF5628}.ace-dawn .ace_comment {font-style: italic;color: #5A525F}.ace-dawn .ace_heading,.ace-dawn .ace_markup.ace_heading {color: #19356D}.ace-dawn .ace_variable {color: #234A97}.ace-dawn .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLh/5+x/AAizA4hxNNsZAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-dreamweaver.js b/library/ace/theme-dreamweaver.js
new file mode 100644
index 000000000..618cbaeff
--- /dev/null
+++ b/library/ace/theme-dreamweaver.js
@@ -0,0 +1 @@
+ace.define("ace/theme/dreamweaver",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-dreamweaver",t.cssText='.ace-dreamweaver .ace_gutter {background: #e8e8e8;color: #333;}.ace-dreamweaver .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-dreamweaver {background-color: #FFFFFF;color: black;}.ace-dreamweaver .ace_fold {background-color: #757AD8;}.ace-dreamweaver .ace_cursor {color: black;}.ace-dreamweaver .ace_invisible {color: rgb(191, 191, 191);}.ace-dreamweaver .ace_storage,.ace-dreamweaver .ace_keyword {color: blue;}.ace-dreamweaver .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-dreamweaver .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-dreamweaver .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-dreamweaver .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-dreamweaver .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-dreamweaver .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-dreamweaver .ace_support.ace_type,.ace-dreamweaver .ace_support.ace_class {color: #009;}.ace-dreamweaver .ace_support.ace_php_tag {color: #f00;}.ace-dreamweaver .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-dreamweaver .ace_string {color: #00F;}.ace-dreamweaver .ace_comment {color: rgb(76, 136, 107);}.ace-dreamweaver .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-dreamweaver .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-dreamweaver .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-dreamweaver .ace_variable {color: #06F}.ace-dreamweaver .ace_xml-pe {color: rgb(104, 104, 91);}.ace-dreamweaver .ace_entity.ace_name.ace_function {color: #00F;}.ace-dreamweaver .ace_heading {color: rgb(12, 7, 255);}.ace-dreamweaver .ace_list {color:rgb(185, 6, 144);}.ace-dreamweaver .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-dreamweaver .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-dreamweaver .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-dreamweaver .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-dreamweaver .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-dreamweaver .ace_gutter-active-line {background-color : #DCDCDC;}.ace-dreamweaver .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-dreamweaver .ace_meta.ace_tag {color:#009;}.ace-dreamweaver .ace_meta.ace_tag.ace_anchor {color:#060;}.ace-dreamweaver .ace_meta.ace_tag.ace_form {color:#F90;}.ace-dreamweaver .ace_meta.ace_tag.ace_image {color:#909;}.ace-dreamweaver .ace_meta.ace_tag.ace_script {color:#900;}.ace-dreamweaver .ace_meta.ace_tag.ace_style {color:#909;}.ace-dreamweaver .ace_meta.ace_tag.ace_table {color:#099;}.ace-dreamweaver .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-dreamweaver .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-eclipse.js b/library/ace/theme-eclipse.js
new file mode 100644
index 000000000..b15aeec10
--- /dev/null
+++ b/library/ace/theme-eclipse.js
@@ -0,0 +1 @@
+ace.define("ace/theme/eclipse",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssText='.ace-eclipse .ace_gutter {background: #ebebeb;border-right: 1px solid rgb(159, 159, 159);color: rgb(136, 136, 136);}.ace-eclipse .ace_print-margin {width: 1px;background: #ebebeb;}.ace-eclipse {background-color: #FFFFFF;color: black;}.ace-eclipse .ace_fold {background-color: rgb(60, 76, 114);}.ace-eclipse .ace_cursor {color: black;}.ace-eclipse .ace_storage,.ace-eclipse .ace_keyword,.ace-eclipse .ace_variable {color: rgb(127, 0, 85);}.ace-eclipse .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-eclipse .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-eclipse .ace_function {color: rgb(60, 76, 114);}.ace-eclipse .ace_string {color: rgb(42, 0, 255);}.ace-eclipse .ace_comment {color: rgb(113, 150, 130);}.ace-eclipse .ace_comment.ace_doc {color: rgb(63, 95, 191);}.ace-eclipse .ace_comment.ace_doc.ace_tag {color: rgb(127, 159, 191);}.ace-eclipse .ace_constant.ace_numeric {color: darkblue;}.ace-eclipse .ace_tag {color: rgb(25, 118, 116);}.ace-eclipse .ace_type {color: rgb(127, 0, 127);}.ace-eclipse .ace_xml-pe {color: rgb(104, 104, 91);}.ace-eclipse .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-eclipse .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-eclipse .ace_meta.ace_tag {color:rgb(25, 118, 116);}.ace-eclipse .ace_invisible {color: #ddd;}.ace-eclipse .ace_entity.ace_other.ace_attribute-name {color:rgb(127, 0, 127);}.ace-eclipse .ace_marker-layer .ace_step {background: rgb(255, 255, 0);}.ace-eclipse .ace_active-line {background: rgb(232, 242, 254);}.ace-eclipse .ace_gutter-active-line {background-color : #DADADA;}.ace-eclipse .ace_marker-layer .ace_selected-word {border: 1px solid rgb(181, 213, 255);}.ace-eclipse .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}',t.cssClass="ace-eclipse";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-github.js b/library/ace/theme-github.js
new file mode 100644
index 000000000..2401002c0
--- /dev/null
+++ b/library/ace/theme-github.js
@@ -0,0 +1 @@
+ace.define("ace/theme/github",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-github",t.cssText='.ace-github .ace_gutter {background: #e8e8e8;color: #AAA;}.ace-github {background: #fff;color: #000;}.ace-github .ace_keyword {font-weight: bold;}.ace-github .ace_string {color: #D14;}.ace-github .ace_variable.ace_class {color: teal;}.ace-github .ace_constant.ace_numeric {color: #099;}.ace-github .ace_constant.ace_buildin {color: #0086B3;}.ace-github .ace_support.ace_function {color: #0086B3;}.ace-github .ace_comment {color: #998;font-style: italic;}.ace-github .ace_variable.ace_language {color: #0086B3;}.ace-github .ace_paren {font-weight: bold;}.ace-github .ace_boolean {font-weight: bold;}.ace-github .ace_string.ace_regexp {color: #009926;font-weight: normal;}.ace-github .ace_variable.ace_instance {color: teal;}.ace-github .ace_constant.ace_language {font-weight: bold;}.ace-github .ace_cursor {color: black;}.ace-github.ace_focus .ace_marker-layer .ace_active-line {background: rgb(255, 255, 204);}.ace-github .ace_marker-layer .ace_active-line {background: rgb(245, 245, 245);}.ace-github .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-github.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-github.ace_nobold .ace_line > span {font-weight: normal !important;}.ace-github .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-github .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-github .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-github .ace_gutter-active-line {background-color : rgba(0, 0, 0, 0.07);}.ace-github .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-github .ace_invisible {color: #BFBFBF}.ace-github .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-github .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-idle_fingers.js b/library/ace/theme-idle_fingers.js
new file mode 100644
index 000000000..f952a3c77
--- /dev/null
+++ b/library/ace/theme-idle_fingers.js
@@ -0,0 +1 @@
+ace.define("ace/theme/idle_fingers",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-idle-fingers",t.cssText=".ace-idle-fingers .ace_gutter {background: #3b3b3b;color: rgb(153,153,153)}.ace-idle-fingers .ace_print-margin {width: 1px;background: #3b3b3b}.ace-idle-fingers {background-color: #323232;color: #FFFFFF}.ace-idle-fingers .ace_cursor {color: #91FF00}.ace-idle-fingers .ace_marker-layer .ace_selection {background: rgba(90, 100, 126, 0.88)}.ace-idle-fingers.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #323232;}.ace-idle-fingers .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-idle-fingers .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404040}.ace-idle-fingers .ace_marker-layer .ace_active-line {background: #353637}.ace-idle-fingers .ace_gutter-active-line {background-color: #353637}.ace-idle-fingers .ace_marker-layer .ace_selected-word {border: 1px solid rgba(90, 100, 126, 0.88)}.ace-idle-fingers .ace_invisible {color: #404040}.ace-idle-fingers .ace_keyword,.ace-idle-fingers .ace_meta {color: #CC7833}.ace-idle-fingers .ace_constant,.ace-idle-fingers .ace_constant.ace_character,.ace-idle-fingers .ace_constant.ace_character.ace_escape,.ace-idle-fingers .ace_constant.ace_other,.ace-idle-fingers .ace_support.ace_constant {color: #6C99BB}.ace-idle-fingers .ace_invalid {color: #FFFFFF;background-color: #FF0000}.ace-idle-fingers .ace_fold {background-color: #CC7833;border-color: #FFFFFF}.ace-idle-fingers .ace_support.ace_function {color: #B83426}.ace-idle-fingers .ace_variable.ace_parameter {font-style: italic}.ace-idle-fingers .ace_string {color: #A5C261}.ace-idle-fingers .ace_string.ace_regexp {color: #CCCC33}.ace-idle-fingers .ace_comment {font-style: italic;color: #BC9458}.ace-idle-fingers .ace_meta.ace_tag {color: #FFE5BB}.ace-idle-fingers .ace_entity.ace_name {color: #FFC66D}.ace-idle-fingers .ace_collab.ace_user1 {color: #323232;background-color: #FFF980}.ace-idle-fingers .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMwMjLyZYiPj/8PAAreAwAI1+g0AAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-iplastic.js b/library/ace/theme-iplastic.js
new file mode 100644
index 000000000..5a14b4eb3
--- /dev/null
+++ b/library/ace/theme-iplastic.js
@@ -0,0 +1 @@
+ace.define("ace/theme/iplastic",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-iplastic",t.cssText=".ace-iplastic .ace_gutter {background: #dddddd;color: #666666}.ace-iplastic .ace_print-margin {width: 1px;background: #bbbbbb}.ace-iplastic {background-color: #eeeeee;color: #333333}.ace-iplastic .ace_cursor {color: #333}.ace-iplastic .ace_marker-layer .ace_selection {background: #BAD6FD;}.ace-iplastic.ace_multiselect .ace_selection.ace_start {border-radius: 4px}.ace-iplastic .ace_marker-layer .ace_step {background: #444444}.ace-iplastic .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E;background: #FFF799}.ace-iplastic .ace_marker-layer .ace_active-line {background: #e5e5e5}.ace-iplastic .ace_gutter-active-line {background-color: #eeeeee}.ace-iplastic .ace_marker-layer .ace_selected-word {border: 1px solid #555555;border-radius:4px}.ace-iplastic .ace_invisible {color: #999999}.ace-iplastic .ace_entity.ace_name.ace_tag,.ace-iplastic .ace_keyword,.ace-iplastic .ace_meta.ace_tag,.ace-iplastic .ace_storage {color: #0000FF}.ace-iplastic .ace_punctuation,.ace-iplastic .ace_punctuation.ace_tag {color: #000}.ace-iplastic .ace_constant {color: #333333;font-weight: 700}.ace-iplastic .ace_constant.ace_character,.ace-iplastic .ace_constant.ace_language,.ace-iplastic .ace_constant.ace_numeric,.ace-iplastic .ace_constant.ace_other {color: #0066FF;font-weight: 700}.ace-iplastic .ace_constant.ace_numeric{font-weight: 100}.ace-iplastic .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-iplastic .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-iplastic .ace_support.ace_constant,.ace-iplastic .ace_support.ace_function {color: #333333;font-weight: 700}.ace-iplastic .ace_fold {background-color: #464646;border-color: #F8F8F2}.ace-iplastic .ace_storage.ace_type,.ace-iplastic .ace_support.ace_class,.ace-iplastic .ace_support.ace_type {color: #3333fc;font-weight: 700}.ace-iplastic .ace_entity.ace_name.ace_function,.ace-iplastic .ace_entity.ace_other,.ace-iplastic .ace_entity.ace_other.ace_attribute-name,.ace-iplastic .ace_variable {color: #3366cc;font-style: italic}.ace-iplastic .ace_variable.ace_parameter {font-style: italic;color: #2469E0}.ace-iplastic .ace_string {color: #a55f03}.ace-iplastic .ace_comment {color: #777777;font-style: italic}.ace-iplastic .ace_fold-widget {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==);}.ace-iplastic .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAABlJREFUeNpi+P//PwMzMzPzfwAAAAD//wMAGRsECSML/RIAAAAASUVORK5CYII=) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-katzenmilch.js b/library/ace/theme-katzenmilch.js
new file mode 100644
index 000000000..62036f605
--- /dev/null
+++ b/library/ace/theme-katzenmilch.js
@@ -0,0 +1 @@
+ace.define("ace/theme/katzenmilch",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-katzenmilch",t.cssText=".ace-katzenmilch .ace_gutter,.ace-katzenmilch .ace_gutter {background: #e8e8e8;color: #333}.ace-katzenmilch .ace_print-margin {width: 1px;background: #e8e8e8}.ace-katzenmilch {background-color: #f3f2f3;color: rgba(15, 0, 9, 1.0)}.ace-katzenmilch .ace_cursor {border-left: 2px solid #100011}.ace-katzenmilch .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #100011}.ace-katzenmilch .ace_marker-layer .ace_selection {background: rgba(100, 5, 208, 0.27)}.ace-katzenmilch.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #f3f2f3;}.ace-katzenmilch .ace_marker-layer .ace_step {background: rgb(198, 219, 174)}.ace-katzenmilch .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(0, 0, 0, 0.33);}.ace-katzenmilch .ace_marker-layer .ace_active-line {background: rgb(232, 242, 254)}.ace-katzenmilch .ace_gutter-active-line {background-color: rgb(232, 242, 254)}.ace-katzenmilch .ace_marker-layer .ace_selected-word {border: 1px solid rgba(100, 5, 208, 0.27)}.ace-katzenmilch .ace_invisible {color: #BFBFBF}.ace-katzenmilch .ace_fold {background-color: rgba(2, 95, 73, 0.97);border-color: rgba(15, 0, 9, 1.0)}.ace-katzenmilch .ace_keyword {color: #674Aa8;rbackground-color: rgba(163, 170, 216, 0.055)}.ace-katzenmilch .ace_constant.ace_language {color: #7D7e52;rbackground-color: rgba(189, 190, 130, 0.059)}.ace-katzenmilch .ace_constant.ace_numeric {color: rgba(79, 130, 123, 0.93);rbackground-color: rgba(119, 194, 187, 0.059)}.ace-katzenmilch .ace_constant.ace_character,.ace-katzenmilch .ace_constant.ace_other {color: rgba(2, 95, 105, 1.0);rbackground-color: rgba(127, 34, 153, 0.063)}.ace-katzenmilch .ace_support.ace_function {color: #9D7e62;rbackground-color: rgba(189, 190, 130, 0.039)}.ace-katzenmilch .ace_support.ace_class {color: rgba(239, 106, 167, 1.0);rbackground-color: rgba(239, 106, 167, 0.063)}.ace-katzenmilch .ace_storage {color: rgba(123, 92, 191, 1.0);rbackground-color: rgba(139, 93, 223, 0.051)}.ace-katzenmilch .ace_invalid {color: #DFDFD5;rbackground-color: #CC1B27}.ace-katzenmilch .ace_string {color: #5a5f9b;rbackground-color: rgba(170, 175, 219, 0.035)}.ace-katzenmilch .ace_comment {font-style: italic;color: rgba(64, 79, 80, 0.67);rbackground-color: rgba(95, 15, 255, 0.0078)}.ace-katzenmilch .ace_entity.ace_name.ace_function,.ace-katzenmilch .ace_variable {color: rgba(2, 95, 73, 0.97);rbackground-color: rgba(34, 255, 73, 0.12)}.ace-katzenmilch .ace_variable.ace_language {color: #316fcf;rbackground-color: rgba(58, 175, 255, 0.039)}.ace-katzenmilch .ace_variable.ace_parameter {font-style: italic;color: rgba(51, 150, 159, 0.87);rbackground-color: rgba(5, 214, 249, 0.043)}.ace-katzenmilch .ace_entity.ace_other.ace_attribute-name {color: rgba(73, 70, 194, 0.93);rbackground-color: rgba(73, 134, 194, 0.035)}.ace-katzenmilch .ace_entity.ace_name.ace_tag {color: #3976a2;rbackground-color: rgba(73, 166, 210, 0.039)}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-kr_theme.js b/library/ace/theme-kr_theme.js
new file mode 100644
index 000000000..5182fa6ac
--- /dev/null
+++ b/library/ace/theme-kr_theme.js
@@ -0,0 +1 @@
+ace.define("ace/theme/kr_theme",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-kr-theme",t.cssText=".ace-kr-theme .ace_gutter {background: #1c1917;color: #FCFFE0}.ace-kr-theme .ace_print-margin {width: 1px;background: #1c1917}.ace-kr-theme {background-color: #0B0A09;color: #FCFFE0}.ace-kr-theme .ace_cursor {color: #FF9900}.ace-kr-theme .ace_marker-layer .ace_selection {background: rgba(170, 0, 255, 0.45)}.ace-kr-theme.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #0B0A09;}.ace-kr-theme .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-kr-theme .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 177, 111, 0.32)}.ace-kr-theme .ace_marker-layer .ace_active-line {background: #38403D}.ace-kr-theme .ace_gutter-active-line {background-color : #38403D}.ace-kr-theme .ace_marker-layer .ace_selected-word {border: 1px solid rgba(170, 0, 255, 0.45)}.ace-kr-theme .ace_invisible {color: rgba(255, 177, 111, 0.32)}.ace-kr-theme .ace_keyword,.ace-kr-theme .ace_meta {color: #949C8B}.ace-kr-theme .ace_constant,.ace-kr-theme .ace_constant.ace_character,.ace-kr-theme .ace_constant.ace_character.ace_escape,.ace-kr-theme .ace_constant.ace_other {color: rgba(210, 117, 24, 0.76)}.ace-kr-theme .ace_invalid {color: #F8F8F8;background-color: #A41300}.ace-kr-theme .ace_support {color: #9FC28A}.ace-kr-theme .ace_support.ace_constant {color: #C27E66}.ace-kr-theme .ace_fold {background-color: #949C8B;border-color: #FCFFE0}.ace-kr-theme .ace_support.ace_function {color: #85873A}.ace-kr-theme .ace_storage {color: #FFEE80}.ace-kr-theme .ace_string {color: rgba(164, 161, 181, 0.8)}.ace-kr-theme .ace_string.ace_regexp {color: rgba(125, 255, 192, 0.65)}.ace-kr-theme .ace_comment {font-style: italic;color: #706D5B}.ace-kr-theme .ace_variable {color: #D1A796}.ace-kr-theme .ace_list,.ace-kr-theme .ace_markup.ace_list {background-color: #0F0040}.ace-kr-theme .ace_variable.ace_language {color: #FF80E1}.ace-kr-theme .ace_meta.ace_tag {color: #BABD9C}.ace-kr-theme .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-kuroir.js b/library/ace/theme-kuroir.js
new file mode 100644
index 000000000..9bdc0d1e8
--- /dev/null
+++ b/library/ace/theme-kuroir.js
@@ -0,0 +1 @@
+ace.define("ace/theme/kuroir",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-kuroir",t.cssText=".ace-kuroir .ace_gutter {background: #e8e8e8;color: #333;}.ace-kuroir .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-kuroir {background-color: #E8E9E8;color: #363636;}.ace-kuroir .ace_cursor {color: #202020;}.ace-kuroir .ace_marker-layer .ace_selection {background: rgba(245, 170, 0, 0.57);}.ace-kuroir.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #E8E9E8;}.ace-kuroir .ace_marker-layer .ace_step {background: rgb(198, 219, 174);}.ace-kuroir .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(0, 0, 0, 0.29);}.ace-kuroir .ace_marker-layer .ace_active-line {background: rgba(203, 220, 47, 0.22);}.ace-kuroir .ace_gutter-active-line {background-color: rgba(203, 220, 47, 0.22);}.ace-kuroir .ace_marker-layer .ace_selected-word {border: 1px solid rgba(245, 170, 0, 0.57);}.ace-kuroir .ace_invisible {color: #BFBFBF}.ace-kuroir .ace_fold {border-color: #363636;}.ace-kuroir .ace_constant{color:#CD6839;}.ace-kuroir .ace_constant.ace_numeric{color:#9A5925;}.ace-kuroir .ace_support{color:#104E8B;}.ace-kuroir .ace_support.ace_function{color:#005273;}.ace-kuroir .ace_support.ace_constant{color:#CF6A4C;}.ace-kuroir .ace_storage{color:#A52A2A;}.ace-kuroir .ace_invalid.ace_illegal{color:#FD1224;background-color:rgba(255, 6, 0, 0.15);}.ace-kuroir .ace_invalid.ace_deprecated{text-decoration:underline;font-style:italic;color:#FD1732;background-color:#E8E9E8;}.ace-kuroir .ace_string{color:#639300;}.ace-kuroir .ace_string.ace_regexp{color:#417E00;background-color:#C9D4BE;}.ace-kuroir .ace_comment{color:rgba(148, 148, 148, 0.91);background-color:rgba(220, 220, 220, 0.56);}.ace-kuroir .ace_variable{color:#009ACD;}.ace-kuroir .ace_meta.ace_tag{color:#005273;}.ace-kuroir .ace_markup.ace_heading{color:#B8012D;background-color:rgba(191, 97, 51, 0.051);}.ace-kuroir .ace_markup.ace_list{color:#8F5B26;}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-merbivore.js b/library/ace/theme-merbivore.js
new file mode 100644
index 000000000..662fe4b82
--- /dev/null
+++ b/library/ace/theme-merbivore.js
@@ -0,0 +1 @@
+ace.define("ace/theme/merbivore",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-merbivore",t.cssText=".ace-merbivore .ace_gutter {background: #202020;color: #E6E1DC}.ace-merbivore .ace_print-margin {width: 1px;background: #555651}.ace-merbivore {background-color: #161616;color: #E6E1DC}.ace-merbivore .ace_cursor {color: #FFFFFF}.ace-merbivore .ace_marker-layer .ace_selection {background: #454545}.ace-merbivore.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #161616;}.ace-merbivore .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-merbivore .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404040}.ace-merbivore .ace_marker-layer .ace_active-line {background: #333435}.ace-merbivore .ace_gutter-active-line {background-color: #333435}.ace-merbivore .ace_marker-layer .ace_selected-word {border: 1px solid #454545}.ace-merbivore .ace_invisible {color: #404040}.ace-merbivore .ace_entity.ace_name.ace_tag,.ace-merbivore .ace_keyword,.ace-merbivore .ace_meta,.ace-merbivore .ace_meta.ace_tag,.ace-merbivore .ace_storage,.ace-merbivore .ace_support.ace_function {color: #FC6F09}.ace-merbivore .ace_constant,.ace-merbivore .ace_constant.ace_character,.ace-merbivore .ace_constant.ace_character.ace_escape,.ace-merbivore .ace_constant.ace_other,.ace-merbivore .ace_support.ace_type {color: #1EDAFB}.ace-merbivore .ace_constant.ace_character.ace_escape {color: #519F50}.ace-merbivore .ace_constant.ace_language {color: #FDC251}.ace-merbivore .ace_constant.ace_library,.ace-merbivore .ace_string,.ace-merbivore .ace_support.ace_constant {color: #8DFF0A}.ace-merbivore .ace_constant.ace_numeric {color: #58C554}.ace-merbivore .ace_invalid {color: #FFFFFF;background-color: #990000}.ace-merbivore .ace_fold {background-color: #FC6F09;border-color: #E6E1DC}.ace-merbivore .ace_comment {font-style: italic;color: #AD2EA4}.ace-merbivore .ace_entity.ace_other.ace_attribute-name {color: #FFFF89}.ace-merbivore .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQFxf3ZXB1df0PAAdsAmERTkEHAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-merbivore_soft.js b/library/ace/theme-merbivore_soft.js
new file mode 100644
index 000000000..be41bd1dd
--- /dev/null
+++ b/library/ace/theme-merbivore_soft.js
@@ -0,0 +1 @@
+ace.define("ace/theme/merbivore_soft",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-merbivore-soft",t.cssText=".ace-merbivore-soft .ace_gutter {background: #262424;color: #E6E1DC}.ace-merbivore-soft .ace_print-margin {width: 1px;background: #262424}.ace-merbivore-soft {background-color: #1C1C1C;color: #E6E1DC}.ace-merbivore-soft .ace_cursor {color: #FFFFFF}.ace-merbivore-soft .ace_marker-layer .ace_selection {background: #494949}.ace-merbivore-soft.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #1C1C1C;}.ace-merbivore-soft .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-merbivore-soft .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404040}.ace-merbivore-soft .ace_marker-layer .ace_active-line {background: #333435}.ace-merbivore-soft .ace_gutter-active-line {background-color: #333435}.ace-merbivore-soft .ace_marker-layer .ace_selected-word {border: 1px solid #494949}.ace-merbivore-soft .ace_invisible {color: #404040}.ace-merbivore-soft .ace_entity.ace_name.ace_tag,.ace-merbivore-soft .ace_keyword,.ace-merbivore-soft .ace_meta,.ace-merbivore-soft .ace_meta.ace_tag,.ace-merbivore-soft .ace_storage {color: #FC803A}.ace-merbivore-soft .ace_constant,.ace-merbivore-soft .ace_constant.ace_character,.ace-merbivore-soft .ace_constant.ace_character.ace_escape,.ace-merbivore-soft .ace_constant.ace_other,.ace-merbivore-soft .ace_support.ace_type {color: #68C1D8}.ace-merbivore-soft .ace_constant.ace_character.ace_escape {color: #B3E5B4}.ace-merbivore-soft .ace_constant.ace_language {color: #E1C582}.ace-merbivore-soft .ace_constant.ace_library,.ace-merbivore-soft .ace_string,.ace-merbivore-soft .ace_support.ace_constant {color: #8EC65F}.ace-merbivore-soft .ace_constant.ace_numeric {color: #7FC578}.ace-merbivore-soft .ace_invalid,.ace-merbivore-soft .ace_invalid.ace_deprecated {color: #FFFFFF;background-color: #FE3838}.ace-merbivore-soft .ace_fold {background-color: #FC803A;border-color: #E6E1DC}.ace-merbivore-soft .ace_comment,.ace-merbivore-soft .ace_meta {font-style: italic;color: #AC4BB8}.ace-merbivore-soft .ace_entity.ace_other.ace_attribute-name {color: #EAF1A3}.ace-merbivore-soft .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQkpLyZfD09PwPAAfYAnaStpHRAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-mono_industrial.js b/library/ace/theme-mono_industrial.js
new file mode 100644
index 000000000..97fbebaad
--- /dev/null
+++ b/library/ace/theme-mono_industrial.js
@@ -0,0 +1 @@
+ace.define("ace/theme/mono_industrial",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-mono-industrial",t.cssText=".ace-mono-industrial .ace_gutter {background: #1d2521;color: #C5C9C9}.ace-mono-industrial .ace_print-margin {width: 1px;background: #555651}.ace-mono-industrial {background-color: #222C28;color: #FFFFFF}.ace-mono-industrial .ace_cursor {color: #FFFFFF}.ace-mono-industrial .ace_marker-layer .ace_selection {background: rgba(145, 153, 148, 0.40)}.ace-mono-industrial.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #222C28;}.ace-mono-industrial .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-mono-industrial .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(102, 108, 104, 0.50)}.ace-mono-industrial .ace_marker-layer .ace_active-line {background: rgba(12, 13, 12, 0.25)}.ace-mono-industrial .ace_gutter-active-line {background-color: rgba(12, 13, 12, 0.25)}.ace-mono-industrial .ace_marker-layer .ace_selected-word {border: 1px solid rgba(145, 153, 148, 0.40)}.ace-mono-industrial .ace_invisible {color: rgba(102, 108, 104, 0.50)}.ace-mono-industrial .ace_string {background-color: #151C19;color: #FFFFFF}.ace-mono-industrial .ace_keyword,.ace-mono-industrial .ace_meta {color: #A39E64}.ace-mono-industrial .ace_constant,.ace-mono-industrial .ace_constant.ace_character,.ace-mono-industrial .ace_constant.ace_character.ace_escape,.ace-mono-industrial .ace_constant.ace_numeric,.ace-mono-industrial .ace_constant.ace_other {color: #E98800}.ace-mono-industrial .ace_entity.ace_name.ace_function,.ace-mono-industrial .ace_keyword.ace_operator,.ace-mono-industrial .ace_variable {color: #A8B3AB}.ace-mono-industrial .ace_invalid {color: #FFFFFF;background-color: rgba(153, 0, 0, 0.68)}.ace-mono-industrial .ace_support.ace_constant {color: #C87500}.ace-mono-industrial .ace_fold {background-color: #A8B3AB;border-color: #FFFFFF}.ace-mono-industrial .ace_support.ace_function {color: #588E60}.ace-mono-industrial .ace_entity.ace_name,.ace-mono-industrial .ace_support.ace_class,.ace-mono-industrial .ace_support.ace_type {color: #5778B6}.ace-mono-industrial .ace_storage {color: #C23B00}.ace-mono-industrial .ace_variable.ace_language,.ace-mono-industrial .ace_variable.ace_parameter {color: #648BD2}.ace-mono-industrial .ace_comment {color: #666C68;background-color: #151C19}.ace-mono-industrial .ace_entity.ace_other.ace_attribute-name {color: #909993}.ace-mono-industrial .ace_entity.ace_name.ace_tag {color: #A65EFF}.ace-mono-industrial .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ1NbwZfALD/4PAAlTArlEC4r/AAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-monokai.js b/library/ace/theme-monokai.js
new file mode 100644
index 000000000..ed0cb3fed
--- /dev/null
+++ b/library/ace/theme-monokai.js
@@ -0,0 +1 @@
+ace.define("ace/theme/monokai",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-monokai",t.cssText=".ace-monokai .ace_gutter {background: #2F3129;color: #8F908A}.ace-monokai .ace_print-margin {width: 1px;background: #555651}.ace-monokai {background-color: #272822;color: #F8F8F2}.ace-monokai .ace_cursor {color: #F8F8F0}.ace-monokai .ace_marker-layer .ace_selection {background: #49483E}.ace-monokai.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #272822;}.ace-monokai .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-monokai .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E}.ace-monokai .ace_marker-layer .ace_active-line {background: #202020}.ace-monokai .ace_gutter-active-line {background-color: #272727}.ace-monokai .ace_marker-layer .ace_selected-word {border: 1px solid #49483E}.ace-monokai .ace_invisible {color: #52524d}.ace-monokai .ace_entity.ace_name.ace_tag,.ace-monokai .ace_keyword,.ace-monokai .ace_meta.ace_tag,.ace-monokai .ace_storage {color: #F92672}.ace-monokai .ace_punctuation,.ace-monokai .ace_punctuation.ace_tag {color: #fff}.ace-monokai .ace_constant.ace_character,.ace-monokai .ace_constant.ace_language,.ace-monokai .ace_constant.ace_numeric,.ace-monokai .ace_constant.ace_other {color: #AE81FF}.ace-monokai .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-monokai .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-monokai .ace_support.ace_constant,.ace-monokai .ace_support.ace_function {color: #66D9EF}.ace-monokai .ace_fold {background-color: #A6E22E;border-color: #F8F8F2}.ace-monokai .ace_storage.ace_type,.ace-monokai .ace_support.ace_class,.ace-monokai .ace_support.ace_type {font-style: italic;color: #66D9EF}.ace-monokai .ace_entity.ace_name.ace_function,.ace-monokai .ace_entity.ace_other,.ace-monokai .ace_entity.ace_other.ace_attribute-name,.ace-monokai .ace_variable {color: #A6E22E}.ace-monokai .ace_variable.ace_parameter {font-style: italic;color: #FD971F}.ace-monokai .ace_string {color: #E6DB74}.ace-monokai .ace_comment {color: #75715E}.ace-monokai .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-pastel_on_dark.js b/library/ace/theme-pastel_on_dark.js
new file mode 100644
index 000000000..7d3d30dae
--- /dev/null
+++ b/library/ace/theme-pastel_on_dark.js
@@ -0,0 +1 @@
+ace.define("ace/theme/pastel_on_dark",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-pastel-on-dark",t.cssText=".ace-pastel-on-dark .ace_gutter {background: #353030;color: #8F938F}.ace-pastel-on-dark .ace_print-margin {width: 1px;background: #353030}.ace-pastel-on-dark {background-color: #2C2828;color: #8F938F}.ace-pastel-on-dark .ace_cursor {color: #A7A7A7}.ace-pastel-on-dark .ace_marker-layer .ace_selection {background: rgba(221, 240, 255, 0.20)}.ace-pastel-on-dark.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #2C2828;}.ace-pastel-on-dark .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-pastel-on-dark .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 255, 255, 0.25)}.ace-pastel-on-dark .ace_marker-layer .ace_active-line {background: rgba(255, 255, 255, 0.031)}.ace-pastel-on-dark .ace_gutter-active-line {background-color: rgba(255, 255, 255, 0.031)}.ace-pastel-on-dark .ace_marker-layer .ace_selected-word {border: 1px solid rgba(221, 240, 255, 0.20)}.ace-pastel-on-dark .ace_invisible {color: rgba(255, 255, 255, 0.25)}.ace-pastel-on-dark .ace_keyword,.ace-pastel-on-dark .ace_meta {color: #757aD8}.ace-pastel-on-dark .ace_constant,.ace-pastel-on-dark .ace_constant.ace_character,.ace-pastel-on-dark .ace_constant.ace_character.ace_escape,.ace-pastel-on-dark .ace_constant.ace_other {color: #4FB7C5}.ace-pastel-on-dark .ace_keyword.ace_operator {color: #797878}.ace-pastel-on-dark .ace_constant.ace_character {color: #AFA472}.ace-pastel-on-dark .ace_constant.ace_language {color: #DE8E30}.ace-pastel-on-dark .ace_constant.ace_numeric {color: #CCCCCC}.ace-pastel-on-dark .ace_invalid,.ace-pastel-on-dark .ace_invalid.ace_illegal {color: #F8F8F8;background-color: rgba(86, 45, 86, 0.75)}.ace-pastel-on-dark .ace_invalid.ace_deprecated {text-decoration: underline;font-style: italic;color: #D2A8A1}.ace-pastel-on-dark .ace_fold {background-color: #757aD8;border-color: #8F938F}.ace-pastel-on-dark .ace_support.ace_function {color: #AEB2F8}.ace-pastel-on-dark .ace_string {color: #66A968}.ace-pastel-on-dark .ace_string.ace_regexp {color: #E9C062}.ace-pastel-on-dark .ace_comment {color: #A6C6FF}.ace-pastel-on-dark .ace_variable {color: #BEBF55}.ace-pastel-on-dark .ace_variable.ace_language {color: #C1C144}.ace-pastel-on-dark .ace_xml-pe {color: #494949}.ace-pastel-on-dark .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYIiPj/8PAARgAh2NTMh8AAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-solarized_dark.js b/library/ace/theme-solarized_dark.js
new file mode 100644
index 000000000..b3927b0d3
--- /dev/null
+++ b/library/ace/theme-solarized_dark.js
@@ -0,0 +1 @@
+ace.define("ace/theme/solarized_dark",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-solarized-dark",t.cssText=".ace-solarized-dark .ace_gutter {background: #01313f;color: #d0edf7}.ace-solarized-dark .ace_print-margin {width: 1px;background: #33555E}.ace-solarized-dark {background-color: #002B36;color: #93A1A1}.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name,.ace-solarized-dark .ace_storage {color: #93A1A1}.ace-solarized-dark .ace_cursor,.ace-solarized-dark .ace_string.ace_regexp {color: #D30102}.ace-solarized-dark .ace_marker-layer .ace_active-line,.ace-solarized-dark .ace_marker-layer .ace_selection {background: rgba(255, 255, 255, 0.1)}.ace-solarized-dark.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #002B36;}.ace-solarized-dark .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-solarized-dark .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(147, 161, 161, 0.50)}.ace-solarized-dark .ace_gutter-active-line {background-color: #0d3440}.ace-solarized-dark .ace_marker-layer .ace_selected-word {border: 1px solid #073642}.ace-solarized-dark .ace_invisible {color: rgba(147, 161, 161, 0.50)}.ace-solarized-dark .ace_keyword,.ace-solarized-dark .ace_meta,.ace-solarized-dark .ace_support.ace_class,.ace-solarized-dark .ace_support.ace_type {color: #859900}.ace-solarized-dark .ace_constant.ace_character,.ace-solarized-dark .ace_constant.ace_other {color: #CB4B16}.ace-solarized-dark .ace_constant.ace_language {color: #B58900}.ace-solarized-dark .ace_constant.ace_numeric {color: #D33682}.ace-solarized-dark .ace_fold {background-color: #268BD2;border-color: #93A1A1}.ace-solarized-dark .ace_entity.ace_name.ace_function,.ace-solarized-dark .ace_entity.ace_name.ace_tag,.ace-solarized-dark .ace_support.ace_function,.ace-solarized-dark .ace_variable,.ace-solarized-dark .ace_variable.ace_language {color: #268BD2}.ace-solarized-dark .ace_string {color: #2AA198}.ace-solarized-dark .ace_comment {font-style: italic;color: #657B83}.ace-solarized-dark .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNg0Db1ZVCxc/sPAAd4AlUHlLenAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-solarized_light.js b/library/ace/theme-solarized_light.js
new file mode 100644
index 000000000..4994d86a0
--- /dev/null
+++ b/library/ace/theme-solarized_light.js
@@ -0,0 +1 @@
+ace.define("ace/theme/solarized_light",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-solarized-light",t.cssText=".ace-solarized-light .ace_gutter {background: #fbf1d3;color: #333}.ace-solarized-light .ace_print-margin {width: 1px;background: #e8e8e8}.ace-solarized-light {background-color: #FDF6E3;color: #586E75}.ace-solarized-light .ace_cursor {color: #000000}.ace-solarized-light .ace_marker-layer .ace_selection {background: rgba(7, 54, 67, 0.09)}.ace-solarized-light.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FDF6E3;}.ace-solarized-light .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-solarized-light .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(147, 161, 161, 0.50)}.ace-solarized-light .ace_marker-layer .ace_active-line {background: #EEE8D5}.ace-solarized-light .ace_gutter-active-line {background-color : #EDE5C1}.ace-solarized-light .ace_marker-layer .ace_selected-word {border: 1px solid #073642}.ace-solarized-light .ace_invisible {color: rgba(147, 161, 161, 0.50)}.ace-solarized-light .ace_keyword,.ace-solarized-light .ace_meta,.ace-solarized-light .ace_support.ace_class,.ace-solarized-light .ace_support.ace_type {color: #859900}.ace-solarized-light .ace_constant.ace_character,.ace-solarized-light .ace_constant.ace_other {color: #CB4B16}.ace-solarized-light .ace_constant.ace_language {color: #B58900}.ace-solarized-light .ace_constant.ace_numeric {color: #D33682}.ace-solarized-light .ace_fold {background-color: #268BD2;border-color: #586E75}.ace-solarized-light .ace_entity.ace_name.ace_function,.ace-solarized-light .ace_entity.ace_name.ace_tag,.ace-solarized-light .ace_support.ace_function,.ace-solarized-light .ace_variable,.ace-solarized-light .ace_variable.ace_language {color: #268BD2}.ace-solarized-light .ace_storage {color: #073642}.ace-solarized-light .ace_string {color: #2AA198}.ace-solarized-light .ace_string.ace_regexp {color: #D30102}.ace-solarized-light .ace_comment,.ace-solarized-light .ace_entity.ace_other.ace_attribute-name {color: #93A1A1}.ace-solarized-light .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHjy8NJ/AAjgA5fzQUmBAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-sqlserver.js b/library/ace/theme-sqlserver.js
new file mode 100644
index 000000000..07bfc804e
--- /dev/null
+++ b/library/ace/theme-sqlserver.js
@@ -0,0 +1 @@
+ace.define("ace/theme/sqlserver",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-sqlserver",t.cssText='.ace-sqlserver .ace_gutter {background: #ebebeb;color: #333;overflow: hidden;}.ace-sqlserver .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-sqlserver {background-color: #FFFFFF;color: black;}.ace-sqlserver .ace_identifier {color: black;}.ace-sqlserver .ace_keyword {color: #0000FF;}.ace-sqlserver .ace_numeric {color: black;}.ace-sqlserver .ace_storage {color: #11B7BE;}.ace-sqlserver .ace_keyword.ace_operator,.ace-sqlserver .ace_lparen,.ace-sqlserver .ace_rparen,.ace-sqlserver .ace_punctuation {color: #808080;}.ace-sqlserver .ace_set.ace_statement {color: #0000FF;text-decoration: underline;}.ace-sqlserver .ace_cursor {color: black;}.ace-sqlserver .ace_invisible {color: rgb(191, 191, 191);}.ace-sqlserver .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-sqlserver .ace_constant.ace_language {color: #979797;}.ace-sqlserver .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-sqlserver .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-sqlserver .ace_support.ace_function {color: #FF00FF;}.ace-sqlserver .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-sqlserver .ace_class {color: #008080;}.ace-sqlserver .ace_support.ace_other {color: #6D79DE;}.ace-sqlserver .ace_variable.ace_parameter {font-style: italic;color: #FD971F;}.ace-sqlserver .ace_comment {color: #008000;}.ace-sqlserver .ace_constant.ace_numeric {color: black;}.ace-sqlserver .ace_variable {color: rgb(49, 132, 149);}.ace-sqlserver .ace_xml-pe {color: rgb(104, 104, 91);}.ace-sqlserver .ace_support.ace_storedprocedure {color: #800000;}.ace-sqlserver .ace_heading {color: rgb(12, 7, 255);}.ace-sqlserver .ace_list {color: rgb(185, 6, 144);}.ace-sqlserver .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-sqlserver .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-sqlserver .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-sqlserver .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-sqlserver .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-sqlserver .ace_gutter-active-line {background-color: #dcdcdc;}.ace-sqlserver .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-sqlserver .ace_meta.ace_tag {color: #0000FF;}.ace-sqlserver .ace_string.ace_regex {color: #FF0000;}.ace-sqlserver .ace_string {color: #FF0000;}.ace-sqlserver .ace_entity.ace_other.ace_attribute-name {color: #994409;}.ace-sqlserver .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-terminal.js b/library/ace/theme-terminal.js
new file mode 100644
index 000000000..687718e37
--- /dev/null
+++ b/library/ace/theme-terminal.js
@@ -0,0 +1 @@
+ace.define("ace/theme/terminal",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-terminal-theme",t.cssText=".ace-terminal-theme .ace_gutter {background: #1a0005;color: steelblue}.ace-terminal-theme .ace_print-margin {width: 1px;background: #1a1a1a}.ace-terminal-theme {background-color: black;color: #DEDEDE}.ace-terminal-theme .ace_cursor {color: #9F9F9F}.ace-terminal-theme .ace_marker-layer .ace_selection {background: #424242}.ace-terminal-theme.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px black;}.ace-terminal-theme .ace_marker-layer .ace_step {background: rgb(0, 0, 0)}.ace-terminal-theme .ace_marker-layer .ace_bracket {background: #090;}.ace-terminal-theme .ace_marker-layer .ace_bracket-start {background: #090;}.ace-terminal-theme .ace_marker-layer .ace_bracket-unmatched {margin: -1px 0 0 -1px;border: 1px solid #900}.ace-terminal-theme .ace_marker-layer .ace_active-line {background: #2A2A2A}.ace-terminal-theme .ace_gutter-active-line {background-color: #2A112A}.ace-terminal-theme .ace_marker-layer .ace_selected-word {border: 1px solid #424242}.ace-terminal-theme .ace_invisible {color: #343434}.ace-terminal-theme .ace_keyword,.ace-terminal-theme .ace_meta,.ace-terminal-theme .ace_storage,.ace-terminal-theme .ace_storage.ace_type,.ace-terminal-theme .ace_support.ace_type {color: tomato}.ace-terminal-theme .ace_keyword.ace_operator {color: deeppink}.ace-terminal-theme .ace_constant.ace_character,.ace-terminal-theme .ace_constant.ace_language,.ace-terminal-theme .ace_constant.ace_numeric,.ace-terminal-theme .ace_keyword.ace_other.ace_unit,.ace-terminal-theme .ace_support.ace_constant,.ace-terminal-theme .ace_variable.ace_parameter {color: #E78C45}.ace-terminal-theme .ace_constant.ace_other {color: gold}.ace-terminal-theme .ace_invalid {color: yellow;background-color: red}.ace-terminal-theme .ace_invalid.ace_deprecated {color: #CED2CF;background-color: #B798BF}.ace-terminal-theme .ace_fold {background-color: #7AA6DA;border-color: #DEDEDE}.ace-terminal-theme .ace_entity.ace_name.ace_function,.ace-terminal-theme .ace_support.ace_function,.ace-terminal-theme .ace_variable {color: #7AA6DA}.ace-terminal-theme .ace_support.ace_class,.ace-terminal-theme .ace_support.ace_type {color: #E7C547}.ace-terminal-theme .ace_heading,.ace-terminal-theme .ace_string {color: #B9CA4A}.ace-terminal-theme .ace_entity.ace_name.ace_tag,.ace-terminal-theme .ace_entity.ace_other.ace_attribute-name,.ace-terminal-theme .ace_meta.ace_tag,.ace-terminal-theme .ace_string.ace_regexp,.ace-terminal-theme .ace_variable {color: #D54E53}.ace-terminal-theme .ace_comment {color: orangered}.ace-terminal-theme .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLBWV/8PAAK4AYnhiq+xAAAAAElFTkSuQmCC) right repeat-y;}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-textmate.js b/library/ace/theme-textmate.js
new file mode 100644
index 000000000..5075030da
--- /dev/null
+++ b/library/ace/theme-textmate.js
@@ -0,0 +1 @@
+ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-tomorrow.js b/library/ace/theme-tomorrow.js
new file mode 100644
index 000000000..bae6be05d
--- /dev/null
+++ b/library/ace/theme-tomorrow.js
@@ -0,0 +1 @@
+ace.define("ace/theme/tomorrow",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-tomorrow",t.cssText=".ace-tomorrow .ace_gutter {background: #f6f6f6;color: #4D4D4C}.ace-tomorrow .ace_print-margin {width: 1px;background: #f6f6f6}.ace-tomorrow {background-color: #FFFFFF;color: #4D4D4C}.ace-tomorrow .ace_cursor {color: #AEAFAD}.ace-tomorrow .ace_marker-layer .ace_selection {background: #D6D6D6}.ace-tomorrow.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;}.ace-tomorrow .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-tomorrow .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #D1D1D1}.ace-tomorrow .ace_marker-layer .ace_active-line {background: #EFEFEF}.ace-tomorrow .ace_gutter-active-line {background-color : #dcdcdc}.ace-tomorrow .ace_marker-layer .ace_selected-word {border: 1px solid #D6D6D6}.ace-tomorrow .ace_invisible {color: #D1D1D1}.ace-tomorrow .ace_keyword,.ace-tomorrow .ace_meta,.ace-tomorrow .ace_storage,.ace-tomorrow .ace_storage.ace_type,.ace-tomorrow .ace_support.ace_type {color: #8959A8}.ace-tomorrow .ace_keyword.ace_operator {color: #3E999F}.ace-tomorrow .ace_constant.ace_character,.ace-tomorrow .ace_constant.ace_language,.ace-tomorrow .ace_constant.ace_numeric,.ace-tomorrow .ace_keyword.ace_other.ace_unit,.ace-tomorrow .ace_support.ace_constant,.ace-tomorrow .ace_variable.ace_parameter {color: #F5871F}.ace-tomorrow .ace_constant.ace_other {color: #666969}.ace-tomorrow .ace_invalid {color: #FFFFFF;background-color: #C82829}.ace-tomorrow .ace_invalid.ace_deprecated {color: #FFFFFF;background-color: #8959A8}.ace-tomorrow .ace_fold {background-color: #4271AE;border-color: #4D4D4C}.ace-tomorrow .ace_entity.ace_name.ace_function,.ace-tomorrow .ace_support.ace_function,.ace-tomorrow .ace_variable {color: #4271AE}.ace-tomorrow .ace_support.ace_class,.ace-tomorrow .ace_support.ace_type {color: #C99E00}.ace-tomorrow .ace_heading,.ace-tomorrow .ace_markup.ace_heading,.ace-tomorrow .ace_string {color: #718C00}.ace-tomorrow .ace_entity.ace_name.ace_tag,.ace-tomorrow .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow .ace_meta.ace_tag,.ace-tomorrow .ace_string.ace_regexp,.ace-tomorrow .ace_variable {color: #C82829}.ace-tomorrow .ace_comment {color: #8E908C}.ace-tomorrow .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bdu3f/BwAlfgctduB85QAAAABJRU5ErkJggg==) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-tomorrow_night.js b/library/ace/theme-tomorrow_night.js
new file mode 100644
index 000000000..89c9ad8e0
--- /dev/null
+++ b/library/ace/theme-tomorrow_night.js
@@ -0,0 +1 @@
+ace.define("ace/theme/tomorrow_night",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-tomorrow-night",t.cssText=".ace-tomorrow-night .ace_gutter {background: #25282c;color: #C5C8C6}.ace-tomorrow-night .ace_print-margin {width: 1px;background: #25282c}.ace-tomorrow-night {background-color: #1D1F21;color: #C5C8C6}.ace-tomorrow-night .ace_cursor {color: #AEAFAD}.ace-tomorrow-night .ace_marker-layer .ace_selection {background: #373B41}.ace-tomorrow-night.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #1D1F21;}.ace-tomorrow-night .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-tomorrow-night .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #4B4E55}.ace-tomorrow-night .ace_marker-layer .ace_active-line {background: #282A2E}.ace-tomorrow-night .ace_gutter-active-line {background-color: #282A2E}.ace-tomorrow-night .ace_marker-layer .ace_selected-word {border: 1px solid #373B41}.ace-tomorrow-night .ace_invisible {color: #4B4E55}.ace-tomorrow-night .ace_keyword,.ace-tomorrow-night .ace_meta,.ace-tomorrow-night .ace_storage,.ace-tomorrow-night .ace_storage.ace_type,.ace-tomorrow-night .ace_support.ace_type {color: #B294BB}.ace-tomorrow-night .ace_keyword.ace_operator {color: #8ABEB7}.ace-tomorrow-night .ace_constant.ace_character,.ace-tomorrow-night .ace_constant.ace_language,.ace-tomorrow-night .ace_constant.ace_numeric,.ace-tomorrow-night .ace_keyword.ace_other.ace_unit,.ace-tomorrow-night .ace_support.ace_constant,.ace-tomorrow-night .ace_variable.ace_parameter {color: #DE935F}.ace-tomorrow-night .ace_constant.ace_other {color: #CED1CF}.ace-tomorrow-night .ace_invalid {color: #CED2CF;background-color: #DF5F5F}.ace-tomorrow-night .ace_invalid.ace_deprecated {color: #CED2CF;background-color: #B798BF}.ace-tomorrow-night .ace_fold {background-color: #81A2BE;border-color: #C5C8C6}.ace-tomorrow-night .ace_entity.ace_name.ace_function,.ace-tomorrow-night .ace_support.ace_function,.ace-tomorrow-night .ace_variable {color: #81A2BE}.ace-tomorrow-night .ace_support.ace_class,.ace-tomorrow-night .ace_support.ace_type {color: #F0C674}.ace-tomorrow-night .ace_heading,.ace-tomorrow-night .ace_markup.ace_heading,.ace-tomorrow-night .ace_string {color: #B5BD68}.ace-tomorrow-night .ace_entity.ace_name.ace_tag,.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow-night .ace_meta.ace_tag,.ace-tomorrow-night .ace_string.ace_regexp,.ace-tomorrow-night .ace_variable {color: #CC6666}.ace-tomorrow-night .ace_comment {color: #969896}.ace-tomorrow-night .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-tomorrow_night_blue.js b/library/ace/theme-tomorrow_night_blue.js
new file mode 100644
index 000000000..eeaacd70e
--- /dev/null
+++ b/library/ace/theme-tomorrow_night_blue.js
@@ -0,0 +1 @@
+ace.define("ace/theme/tomorrow_night_blue",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-tomorrow-night-blue",t.cssText=".ace-tomorrow-night-blue .ace_gutter {background: #00204b;color: #7388b5}.ace-tomorrow-night-blue .ace_print-margin {width: 1px;background: #00204b}.ace-tomorrow-night-blue {background-color: #002451;color: #FFFFFF}.ace-tomorrow-night-blue .ace_constant.ace_other,.ace-tomorrow-night-blue .ace_cursor {color: #FFFFFF}.ace-tomorrow-night-blue .ace_marker-layer .ace_selection {background: #003F8E}.ace-tomorrow-night-blue.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #002451;}.ace-tomorrow-night-blue .ace_marker-layer .ace_step {background: rgb(127, 111, 19)}.ace-tomorrow-night-blue .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404F7D}.ace-tomorrow-night-blue .ace_marker-layer .ace_active-line {background: #00346E}.ace-tomorrow-night-blue .ace_gutter-active-line {background-color: #022040}.ace-tomorrow-night-blue .ace_marker-layer .ace_selected-word {border: 1px solid #003F8E}.ace-tomorrow-night-blue .ace_invisible {color: #404F7D}.ace-tomorrow-night-blue .ace_keyword,.ace-tomorrow-night-blue .ace_meta,.ace-tomorrow-night-blue .ace_storage,.ace-tomorrow-night-blue .ace_storage.ace_type,.ace-tomorrow-night-blue .ace_support.ace_type {color: #EBBBFF}.ace-tomorrow-night-blue .ace_keyword.ace_operator {color: #99FFFF}.ace-tomorrow-night-blue .ace_constant.ace_character,.ace-tomorrow-night-blue .ace_constant.ace_language,.ace-tomorrow-night-blue .ace_constant.ace_numeric,.ace-tomorrow-night-blue .ace_keyword.ace_other.ace_unit,.ace-tomorrow-night-blue .ace_support.ace_constant,.ace-tomorrow-night-blue .ace_variable.ace_parameter {color: #FFC58F}.ace-tomorrow-night-blue .ace_invalid {color: #FFFFFF;background-color: #F99DA5}.ace-tomorrow-night-blue .ace_invalid.ace_deprecated {color: #FFFFFF;background-color: #EBBBFF}.ace-tomorrow-night-blue .ace_fold {background-color: #BBDAFF;border-color: #FFFFFF}.ace-tomorrow-night-blue .ace_entity.ace_name.ace_function,.ace-tomorrow-night-blue .ace_support.ace_function,.ace-tomorrow-night-blue .ace_variable {color: #BBDAFF}.ace-tomorrow-night-blue .ace_support.ace_class,.ace-tomorrow-night-blue .ace_support.ace_type {color: #FFEEAD}.ace-tomorrow-night-blue .ace_heading,.ace-tomorrow-night-blue .ace_markup.ace_heading,.ace-tomorrow-night-blue .ace_string {color: #D1F1A9}.ace-tomorrow-night-blue .ace_entity.ace_name.ace_tag,.ace-tomorrow-night-blue .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow-night-blue .ace_meta.ace_tag,.ace-tomorrow-night-blue .ace_string.ace_regexp,.ace-tomorrow-night-blue .ace_variable {color: #FF9DA4}.ace-tomorrow-night-blue .ace_comment {color: #7285B7}.ace-tomorrow-night-blue .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYJDzqfwPAANXAeNsiA+ZAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-tomorrow_night_bright.js b/library/ace/theme-tomorrow_night_bright.js
new file mode 100644
index 000000000..391bbbe8b
--- /dev/null
+++ b/library/ace/theme-tomorrow_night_bright.js
@@ -0,0 +1 @@
+ace.define("ace/theme/tomorrow_night_bright",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-tomorrow-night-bright",t.cssText=".ace-tomorrow-night-bright .ace_gutter {background: #1a1a1a;color: #DEDEDE}.ace-tomorrow-night-bright .ace_print-margin {width: 1px;background: #1a1a1a}.ace-tomorrow-night-bright {background-color: #000000;color: #DEDEDE}.ace-tomorrow-night-bright .ace_cursor {color: #9F9F9F}.ace-tomorrow-night-bright .ace_marker-layer .ace_selection {background: #424242}.ace-tomorrow-night-bright.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #000000;}.ace-tomorrow-night-bright .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-tomorrow-night-bright .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #888888}.ace-tomorrow-night-bright .ace_marker-layer .ace_highlight {border: 1px solid rgb(110, 119, 0);border-bottom: 0;box-shadow: inset 0 -1px rgb(110, 119, 0);margin: -1px 0 0 -1px;background: rgba(255, 235, 0, 0.1)}.ace-tomorrow-night-bright .ace_marker-layer .ace_active-line {background: #2A2A2A}.ace-tomorrow-night-bright .ace_gutter-active-line {background-color: #2A2A2A}.ace-tomorrow-night-bright .ace_stack {background-color: rgb(66, 90, 44)}.ace-tomorrow-night-bright .ace_marker-layer .ace_selected-word {border: 1px solid #888888}.ace-tomorrow-night-bright .ace_invisible {color: #343434}.ace-tomorrow-night-bright .ace_keyword,.ace-tomorrow-night-bright .ace_meta,.ace-tomorrow-night-bright .ace_storage,.ace-tomorrow-night-bright .ace_storage.ace_type,.ace-tomorrow-night-bright .ace_support.ace_type {color: #C397D8}.ace-tomorrow-night-bright .ace_keyword.ace_operator {color: #70C0B1}.ace-tomorrow-night-bright .ace_constant.ace_character,.ace-tomorrow-night-bright .ace_constant.ace_language,.ace-tomorrow-night-bright .ace_constant.ace_numeric,.ace-tomorrow-night-bright .ace_keyword.ace_other.ace_unit,.ace-tomorrow-night-bright .ace_support.ace_constant,.ace-tomorrow-night-bright .ace_variable.ace_parameter {color: #E78C45}.ace-tomorrow-night-bright .ace_constant.ace_other {color: #EEEEEE}.ace-tomorrow-night-bright .ace_invalid {color: #CED2CF;background-color: #DF5F5F}.ace-tomorrow-night-bright .ace_invalid.ace_deprecated {color: #CED2CF;background-color: #B798BF}.ace-tomorrow-night-bright .ace_fold {background-color: #7AA6DA;border-color: #DEDEDE}.ace-tomorrow-night-bright .ace_entity.ace_name.ace_function,.ace-tomorrow-night-bright .ace_support.ace_function,.ace-tomorrow-night-bright .ace_variable {color: #7AA6DA}.ace-tomorrow-night-bright .ace_support.ace_class,.ace-tomorrow-night-bright .ace_support.ace_type {color: #E7C547}.ace-tomorrow-night-bright .ace_heading,.ace-tomorrow-night-bright .ace_markup.ace_heading,.ace-tomorrow-night-bright .ace_string {color: #B9CA4A}.ace-tomorrow-night-bright .ace_entity.ace_name.ace_tag,.ace-tomorrow-night-bright .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow-night-bright .ace_meta.ace_tag,.ace-tomorrow-night-bright .ace_string.ace_regexp,.ace-tomorrow-night-bright .ace_variable {color: #D54E53}.ace-tomorrow-night-bright .ace_comment {color: #969896}.ace-tomorrow-night-bright .ace_c9searchresults.ace_keyword {color: #C2C280}.ace-tomorrow-night-bright .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-tomorrow_night_eighties.js b/library/ace/theme-tomorrow_night_eighties.js
new file mode 100644
index 000000000..051b3f804
--- /dev/null
+++ b/library/ace/theme-tomorrow_night_eighties.js
@@ -0,0 +1 @@
+ace.define("ace/theme/tomorrow_night_eighties",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-tomorrow-night-eighties",t.cssText=".ace-tomorrow-night-eighties .ace_gutter {background: #272727;color: #CCC}.ace-tomorrow-night-eighties .ace_print-margin {width: 1px;background: #272727}.ace-tomorrow-night-eighties {background-color: #2D2D2D;color: #CCCCCC}.ace-tomorrow-night-eighties .ace_constant.ace_other,.ace-tomorrow-night-eighties .ace_cursor {color: #CCCCCC}.ace-tomorrow-night-eighties .ace_marker-layer .ace_selection {background: #515151}.ace-tomorrow-night-eighties.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #2D2D2D;}.ace-tomorrow-night-eighties .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-tomorrow-night-eighties .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #6A6A6A}.ace-tomorrow-night-bright .ace_stack {background: rgb(66, 90, 44)}.ace-tomorrow-night-eighties .ace_marker-layer .ace_active-line {background: #393939}.ace-tomorrow-night-eighties .ace_gutter-active-line {background-color: #393939}.ace-tomorrow-night-eighties .ace_marker-layer .ace_selected-word {border: 1px solid #515151}.ace-tomorrow-night-eighties .ace_invisible {color: #6A6A6A}.ace-tomorrow-night-eighties .ace_keyword,.ace-tomorrow-night-eighties .ace_meta,.ace-tomorrow-night-eighties .ace_storage,.ace-tomorrow-night-eighties .ace_storage.ace_type,.ace-tomorrow-night-eighties .ace_support.ace_type {color: #CC99CC}.ace-tomorrow-night-eighties .ace_keyword.ace_operator {color: #66CCCC}.ace-tomorrow-night-eighties .ace_constant.ace_character,.ace-tomorrow-night-eighties .ace_constant.ace_language,.ace-tomorrow-night-eighties .ace_constant.ace_numeric,.ace-tomorrow-night-eighties .ace_keyword.ace_other.ace_unit,.ace-tomorrow-night-eighties .ace_support.ace_constant,.ace-tomorrow-night-eighties .ace_variable.ace_parameter {color: #F99157}.ace-tomorrow-night-eighties .ace_invalid {color: #CDCDCD;background-color: #F2777A}.ace-tomorrow-night-eighties .ace_invalid.ace_deprecated {color: #CDCDCD;background-color: #CC99CC}.ace-tomorrow-night-eighties .ace_fold {background-color: #6699CC;border-color: #CCCCCC}.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_function,.ace-tomorrow-night-eighties .ace_support.ace_function,.ace-tomorrow-night-eighties .ace_variable {color: #6699CC}.ace-tomorrow-night-eighties .ace_support.ace_class,.ace-tomorrow-night-eighties .ace_support.ace_type {color: #FFCC66}.ace-tomorrow-night-eighties .ace_heading,.ace-tomorrow-night-eighties .ace_markup.ace_heading,.ace-tomorrow-night-eighties .ace_string {color: #99CC99}.ace-tomorrow-night-eighties .ace_comment {color: #999999}.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_tag,.ace-tomorrow-night-eighties .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow-night-eighties .ace_meta.ace_tag,.ace-tomorrow-night-eighties .ace_variable {color: #F2777A}.ace-tomorrow-night-eighties .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ09NrYAgMjP4PAAtGAwchHMyAAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-twilight.js b/library/ace/theme-twilight.js
new file mode 100644
index 000000000..7f5b44f64
--- /dev/null
+++ b/library/ace/theme-twilight.js
@@ -0,0 +1 @@
+ace.define("ace/theme/twilight",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-twilight",t.cssText=".ace-twilight .ace_gutter {background: #232323;color: #E2E2E2}.ace-twilight .ace_print-margin {width: 1px;background: #232323}.ace-twilight {background-color: #141414;color: #F8F8F8}.ace-twilight .ace_cursor {color: #A7A7A7}.ace-twilight .ace_marker-layer .ace_selection {background: rgba(221, 240, 255, 0.20)}.ace-twilight.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #141414;}.ace-twilight .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-twilight .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 255, 255, 0.25)}.ace-twilight .ace_marker-layer .ace_active-line {background: rgba(255, 255, 255, 0.031)}.ace-twilight .ace_gutter-active-line {background-color: rgba(255, 255, 255, 0.031)}.ace-twilight .ace_marker-layer .ace_selected-word {border: 1px solid rgba(221, 240, 255, 0.20)}.ace-twilight .ace_invisible {color: rgba(255, 255, 255, 0.25)}.ace-twilight .ace_keyword,.ace-twilight .ace_meta {color: #CDA869}.ace-twilight .ace_constant,.ace-twilight .ace_constant.ace_character,.ace-twilight .ace_constant.ace_character.ace_escape,.ace-twilight .ace_constant.ace_other,.ace-twilight .ace_heading,.ace-twilight .ace_markup.ace_heading,.ace-twilight .ace_support.ace_constant {color: #CF6A4C}.ace-twilight .ace_invalid.ace_illegal {color: #F8F8F8;background-color: rgba(86, 45, 86, 0.75)}.ace-twilight .ace_invalid.ace_deprecated {text-decoration: underline;font-style: italic;color: #D2A8A1}.ace-twilight .ace_support {color: #9B859D}.ace-twilight .ace_fold {background-color: #AC885B;border-color: #F8F8F8}.ace-twilight .ace_support.ace_function {color: #DAD085}.ace-twilight .ace_list,.ace-twilight .ace_markup.ace_list,.ace-twilight .ace_storage {color: #F9EE98}.ace-twilight .ace_entity.ace_name.ace_function,.ace-twilight .ace_meta.ace_tag,.ace-twilight .ace_variable {color: #AC885B}.ace-twilight .ace_string {color: #8F9D6A}.ace-twilight .ace_string.ace_regexp {color: #E9C062}.ace-twilight .ace_comment {font-style: italic;color: #5F5A60}.ace-twilight .ace_variable {color: #7587A6}.ace-twilight .ace_xml-pe {color: #494949}.ace-twilight .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERFpYLC1tf0PAAgOAnPnhxyiAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-vibrant_ink.js b/library/ace/theme-vibrant_ink.js
new file mode 100644
index 000000000..7f0bf6730
--- /dev/null
+++ b/library/ace/theme-vibrant_ink.js
@@ -0,0 +1 @@
+ace.define("ace/theme/vibrant_ink",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-vibrant-ink",t.cssText=".ace-vibrant-ink .ace_gutter {background: #1a1a1a;color: #BEBEBE}.ace-vibrant-ink .ace_print-margin {width: 1px;background: #1a1a1a}.ace-vibrant-ink {background-color: #0F0F0F;color: #FFFFFF}.ace-vibrant-ink .ace_cursor {color: #FFFFFF}.ace-vibrant-ink .ace_marker-layer .ace_selection {background: #6699CC}.ace-vibrant-ink.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #0F0F0F;}.ace-vibrant-ink .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-vibrant-ink .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404040}.ace-vibrant-ink .ace_marker-layer .ace_active-line {background: #333333}.ace-vibrant-ink .ace_gutter-active-line {background-color: #333333}.ace-vibrant-ink .ace_marker-layer .ace_selected-word {border: 1px solid #6699CC}.ace-vibrant-ink .ace_invisible {color: #404040}.ace-vibrant-ink .ace_keyword,.ace-vibrant-ink .ace_meta {color: #FF6600}.ace-vibrant-ink .ace_constant,.ace-vibrant-ink .ace_constant.ace_character,.ace-vibrant-ink .ace_constant.ace_character.ace_escape,.ace-vibrant-ink .ace_constant.ace_other {color: #339999}.ace-vibrant-ink .ace_constant.ace_numeric {color: #99CC99}.ace-vibrant-ink .ace_invalid,.ace-vibrant-ink .ace_invalid.ace_deprecated {color: #CCFF33;background-color: #000000}.ace-vibrant-ink .ace_fold {background-color: #FFCC00;border-color: #FFFFFF}.ace-vibrant-ink .ace_entity.ace_name.ace_function,.ace-vibrant-ink .ace_support.ace_function,.ace-vibrant-ink .ace_variable {color: #FFCC00}.ace-vibrant-ink .ace_variable.ace_parameter {font-style: italic}.ace-vibrant-ink .ace_string {color: #66FF00}.ace-vibrant-ink .ace_string.ace_regexp {color: #44B4CC}.ace-vibrant-ink .ace_comment {color: #9933CC}.ace-vibrant-ink .ace_entity.ace_other.ace_attribute-name {font-style: italic;color: #99CC99}.ace-vibrant-ink .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYNDTc/oPAALPAZ7hxlbYAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/theme-xcode.js b/library/ace/theme-xcode.js
new file mode 100644
index 000000000..42f2dfb76
--- /dev/null
+++ b/library/ace/theme-xcode.js
@@ -0,0 +1 @@
+ace.define("ace/theme/xcode",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-xcode",t.cssText=".ace-xcode .ace_gutter {background: #e8e8e8;color: #333}.ace-xcode .ace_print-margin {width: 1px;background: #e8e8e8}.ace-xcode {background-color: #FFFFFF;color: #000000}.ace-xcode .ace_cursor {color: #000000}.ace-xcode .ace_marker-layer .ace_selection {background: #B5D5FF}.ace-xcode.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;}.ace-xcode .ace_marker-layer .ace_step {background: rgb(198, 219, 174)}.ace-xcode .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-xcode .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.071)}.ace-xcode .ace_gutter-active-line {background-color: rgba(0, 0, 0, 0.071)}.ace-xcode .ace_marker-layer .ace_selected-word {border: 1px solid #B5D5FF}.ace-xcode .ace_constant.ace_language,.ace-xcode .ace_keyword,.ace-xcode .ace_meta,.ace-xcode .ace_variable.ace_language {color: #C800A4}.ace-xcode .ace_invisible {color: #BFBFBF}.ace-xcode .ace_constant.ace_character,.ace-xcode .ace_constant.ace_other {color: #275A5E}.ace-xcode .ace_constant.ace_numeric {color: #3A00DC}.ace-xcode .ace_entity.ace_other.ace_attribute-name,.ace-xcode .ace_support.ace_constant,.ace-xcode .ace_support.ace_function {color: #450084}.ace-xcode .ace_fold {background-color: #C800A4;border-color: #000000}.ace-xcode .ace_entity.ace_name.ace_tag,.ace-xcode .ace_support.ace_class,.ace-xcode .ace_support.ace_type {color: #790EAD}.ace-xcode .ace_storage {color: #C900A4}.ace-xcode .ace_string {color: #DF0002}.ace-xcode .ace_comment {color: #008E00}.ace-xcode .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file
diff --git a/library/ace/worker-coffee.js b/library/ace/worker-coffee.js
new file mode 100644
index 000000000..1be7db3ab
--- /dev/null
+++ b/library/ace/worker-coffee.js
@@ -0,0 +1 @@
+"no use strict";(function(e){function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")return i+r;if(i)return i.location.replace(/\/*$/,"/")+(r||i.main||i.name);if(i===!1)return"";var s=n.lastIndexOf("/");if(s===-1)break;r=n.substr(s)+r,n=n.slice(0,s)}return e}if(typeof e.window!="undefined"&&e.document)return;if(e.require&&e.define)return;e.console||(e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console),e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,data:i.data,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(r,i){i||(i=r,r=null);if(!i.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");i=e.normalizeModule(r,i);var s=e.require.modules[i];if(s)return s.initialized||(s.initialized=!0,s.exports=s.factory().exports),s.exports;if(!e.require.tlns)return console.log("unable to load "+i);var o=t(i,e.require.tlns);return o.slice(-3)!=".js"&&(o+=".js"),e.require.id=i,e.require.modules[i]={},importScripts(o),e.require(r,i)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},require.tlns={},e.initBaseUrls=function(t){for(var n in t)require.tlns[n]=t[n]},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var n=e.main=null,r=e.sender=null;e.onmessage=function(t){var i=t.data;if(i.event&&r)r._signal(i.event,i.data);else if(i.command)if(n[i.command])n[i.command].apply(n,i.args);else{if(!e[i.command])throw new Error("Unknown command:"+i.command);e[i.command].apply(e,i.args)}else if(i.init){e.initBaseUrls(i.tlns),require("ace/lib/es5-shim"),r=e.sender=e.initSender();var s=require(i.module)[i.classname];n=e.main=new s(r)}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,n){"use strict";function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: "+t}function i(e,t){return t.row>=0&&t.row<e.length&&t.column>=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.column<t.column;return e.row<t.row||e.row==t.row&&r}function t(t,n,r){var i=t.action=="insert",s=(i?1:-1)*(t.end.row-t.start.row),o=(i?1:-1)*(t.end.column-t.start.column),u=t.start,a=i?u:t.end;return e(n,u,r)?{row:n.row,column:n.column}:e(a,n,!r)?{row:n.row+s,column:n.column+(n.row==a.row?o:0)}:{row:u.row,column:u.column}}r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){if(e.start.row==e.end.row&&e.start.row!=this.row)return;if(e.start.row>this.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e<this.getLength()?(t=t.concat([""]),n=0):(t=[""].concat(t),e--,n=this.$lines[e].length),this.insertMergedLines({row:e,column:n},t)},this.insertMergedLines=function(e,t){var n=this.clippedPos(e.row,e.column),r={row:n.row+t.length-1,column:(t.length==1?n.column:0)+t[t.length-1].length};return this.applyDelta({start:n,end:r,action:"insert",lines:t}),this.clonePos(r)},this.remove=function(e){var t=this.clippedPos(e.start.row,e.start.column),n=this.clippedPos(e.end.row,e.end.column);return this.applyDelta({start:t,end:n,action:"remove",lines:this.getLinesForRange({start:t,end:n})}),this.clonePos(t)},this.removeInLine=function(e,t,n){var r=this.clippedPos(e,t),i=this.clippedPos(e,n);return this.applyDelta({start:r,end:i,action:"remove",lines:this.getLinesForRange({start:r,end:i})},!0),this.clonePos(r)},this.removeFullLines=function(e,t){e=Math.min(Math.max(0,e),this.getLength()-1),t=Math.min(Math.max(0,t),this.getLength()-1);var n=t==this.getLength()-1&&e>0,r=t<this.getLength()-1,i=n?e-1:e,s=n?this.getLine(i).length:0,u=r?t+1:t,a=r?0:this.getLine(u).length,f=new o(i,s,u,a),l=this.$lines.slice(e,t+1);return this.applyDelta({start:f.start,end:f.end,action:"remove",lines:this.getLinesForRange(f)}),l},this.removeNewLine=function(e){e<this.getLength()-1&&e>=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++)this.applyDelta(e[t])},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(a.prototype),t.Document=a}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function s(e){if(typeof e!="object"||!e)return e;var t;if(Array.isArray(e)){t=[];for(var n=0;n<e.length;n++)t[n]=s(e[n]);return t}var r=e.constructor;if(r===RegExp)return e;t=r();for(var n in e)t[n]=s(e[n]);return t},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/worker/mirror",["require","exports","module","ace/range","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../document").Document,s=e("../lib/lang"),o=t.Mirror=function(e){this.sender=e;var t=this.doc=new i(""),n=this.deferredUpdate=s.delayedCall(this.onUpdate.bind(this)),r=this;e.on("change",function(e){var i=e.data;if(i[0].start)t.applyDeltas(i);else for(var s=0;s<i.length;s+=2){if(Array.isArray(i[s+1]))var o={action:"insert",start:i[s],lines:i[s+1]};else var o={action:"remove",start:i[s],end:i[s+1]};t.applyDelta(o,!0)}if(r.$timeout)return n.schedule(r.$timeout);r.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(o.prototype)}),ace.define("ace/mode/coffee/coffee",["require","exports","module"],function(require,exports,module){function define(e){module.exports=e()}define.amd={},function(root){var CoffeeScript=function(){function _dereq_(e){return _dereq_[e]}return _dereq_["./helpers"]=function(){var e={},t={exports:e};return function(){var t,n,r,i,s,o;e.starts=function(e,t,n){return t===e.substr(n,t.length)},e.ends=function(e,t,n){var r;return r=t.length,t===e.substr(e.length-r-(n||0),r)},e.repeat=s=function(e,t){var n;for(n="";t>0;)1&t&&(n+=e),t>>>=1,e+=e;return n},e.compact=function(e){var t,n,r,i;for(i=[],t=0,r=e.length;r>t;t++)n=e[t],n&&i.push(n);return i},e.count=function(e,t){var n,r;if(n=r=0,!t.length)return 1/0;for(;r=1+e.indexOf(t,r);)n++;return n},e.merge=function(e,t){return n(n({},e),t)},n=e.extend=function(e,t){var n,r;for(n in t)r=t[n],e[n]=r;return e},e.flatten=r=function(e){var t,n,i,s;for(n=[],i=0,s=e.length;s>i;i++)t=e[i],t instanceof Array?n=n.concat(r(t)):n.push(t);return n},e.del=function(e,t){var n;return n=e[t],delete e[t],n},e.some=null!=(i=Array.prototype.some)?i:function(e){var t,n,r;for(n=0,r=this.length;r>n;n++)if(t=this[n],e(t))return!0;return!1},e.invertLiterate=function(e){var t,n,r;return r=!0,n=function(){var n,i,s,o;for(s=e.split("\n"),o=[],n=0,i=s.length;i>n;n++)t=s[n],r&&/^([ ]{4}|[ ]{0,3}\t)/.test(t)?o.push(t):(r=/^\s*$/.test(t))?o.push(t):o.push("# "+t);return o}(),n.join("\n")},t=function(e,t){return t?{first_line:e.first_line,first_column:e.first_column,last_line:t.last_line,last_column:t.last_column}:e},e.addLocationDataFn=function(e,n){return function(r){return"object"==typeof r&&r.updateLocationDataIfMissing&&r.updateLocationDataIfMissing(t(e,n)),r}},e.locationDataToString=function(e){var t;return"2"in e&&"first_line"in e[2]?t=e[2]:"first_line"in e&&(t=e),t?t.first_line+1+":"+(t.first_column+1)+"-"+(t.last_line+1+":"+(t.last_column+1)):"No location data"},e.baseFileName=function(e,t,n){var r,i;return null==t&&(t=!1),null==n&&(n=!1),i=n?/\\|\//:/\//,r=e.split(i),e=r[r.length-1],t&&e.indexOf(".")>=0?(r=e.split("."),r.pop(),"coffee"===r[r.length-1]&&r.length>1&&r.pop(),r.join(".")):e},e.isCoffee=function(e){return/\.((lit)?coffee|coffee\.md)$/.test(e)},e.isLiterate=function(e){return/\.(litcoffee|coffee\.md)$/.test(e)},e.throwSyntaxError=function(e,t){var n;throw n=new SyntaxError(e),n.location=t,n.toString=o,n.stack=""+n,n},e.updateSyntaxError=function(e,t,n){return e.toString===o&&(e.code||(e.code=t),e.filename||(e.filename=n),e.stack=""+e),e},o=function(){var e,t,n,r,i,o,u,a,f,l,c,h,p,d,v;return this.code&&this.location?(c=this.location,u=c.first_line,o=c.first_column,f=c.last_line,a=c.last_column,null==f&&(f=u),null==a&&(a=o),i=this.filename||"[stdin]",e=this.code.split("\n")[u],v=o,r=u===f?a+1:e.length,l=e.slice(0,v).replace(/[^\s]/g," ")+s("^",r-v),"undefined"!=typeof process&&null!==process&&(n=(null!=(h=process.stdout)?h.isTTY:void 0)&&(null!=(p=process.env)?!p.NODE_DISABLE_COLORS:!void 0)),(null!=(d=this.colorful)?d:n)&&(t=function(e){return""+e+""},e=e.slice(0,v)+t(e.slice(v,r))+e.slice(r),l=t(l)),i+":"+(u+1)+":"+(o+1)+": error: "+this.message+"\n"+e+"\n"+l):Error.prototype.toString.call(this)},e.nameWhitespaceCharacter=function(e){switch(e){case" ":return"space";case"\n":return"newline";case"\r":return"carriage return";case" ":return"tab";default:return e}}}.call(this),t.exports}(),_dereq_["./rewriter"]=function(){var e={},t={exports:e};return function(){var t,n,r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y,b,w=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1},E=[].slice;for(d=function(e,t,n){var r;return r=[e,t],r.generated=!0,n&&(r.origin=n),r},e.Rewriter=function(){function e(){}return e.prototype.rewrite=function(e){return this.tokens=e,this.removeLeadingNewlines(),this.closeOpenCalls(),this.closeOpenIndexes(),this.normalizeLines(),this.tagPostfixConditionals(),this.addImplicitBracesAndParens(),this.addLocationDataToGeneratedTokens(),this.tokens},e.prototype.scanTokens=function(e){var t,n,r;for(r=this.tokens,t=0;n=r[t];)t+=e.call(this,n,t,r);return!0},e.prototype.detectEnd=function(e,t,n){var r,o,u,a,f;for(f=this.tokens,r=0;a=f[e];){if(0===r&&t.call(this,a,e))return n.call(this,a,e);if(!a||0>r)return n.call(this,a,e-1);o=a[0],w.call(s,o)>=0?r+=1:(u=a[0],w.call(i,u)>=0&&(r-=1)),e+=1}return e-1},e.prototype.removeLeadingNewlines=function(){var e,t,n,r,i;for(r=this.tokens,e=t=0,n=r.length;n>t&&(i=r[e][0],"TERMINATOR"===i);e=++t);return e?this.tokens.splice(0,e):void 0},e.prototype.closeOpenCalls=function(){var e,t;return t=function(e,t){var n;return")"===(n=e[0])||"CALL_END"===n||"OUTDENT"===e[0]&&")"===this.tag(t-1)},e=function(e,t){return this.tokens["OUTDENT"===e[0]?t-1:t][0]="CALL_END"},this.scanTokens(function(n,r){return"CALL_START"===n[0]&&this.detectEnd(r+1,t,e),1})},e.prototype.closeOpenIndexes=function(){var e,t;return t=function(e){var t;return"]"===(t=e[0])||"INDEX_END"===t},e=function(e){return e[0]="INDEX_END"},this.scanTokens(function(n,r){return"INDEX_START"===n[0]&&this.detectEnd(r+1,t,e),1})},e.prototype.indexOfTag=function(){var e,t,n,r,i,s,o;for(t=arguments[0],i=arguments.length>=2?E.call(arguments,1):[],e=0,n=r=0,s=i.length;s>=0?s>r:r>s;n=s>=0?++r:--r){for(;"HERECOMMENT"===this.tag(t+n+e);)e+=2;if(null!=i[n]&&("string"==typeof i[n]&&(i[n]=[i[n]]),o=this.tag(t+n+e),0>w.call(i[n],o)))return-1}return t+n+e-1},e.prototype.looksObjectish=function(e){var t,n;return this.indexOfTag(e,"@",null,":")>-1||this.indexOfTag(e,null,":")>-1?!0:(n=this.indexOfTag(e,s),n>-1&&(t=null,this.detectEnd(n+1,function(e){var t;return t=e[0],w.call(i,t)>=0},function(e,n){return t=n}),":"===this.tag(t+1))?!0:!1)},e.prototype.findTagsBackwards=function(e,t){var n,r,o,u,a,f,l;for(n=[];e>=0&&(n.length||(u=this.tag(e),0>w.call(t,u)&&(a=this.tag(e),0>w.call(s,a)||this.tokens[e].generated)&&(f=this.tag(e),0>w.call(c,f))));)r=this.tag(e),w.call(i,r)>=0&&n.push(this.tag(e)),o=this.tag(e),w.call(s,o)>=0&&n.length&&n.pop(),e-=1;return l=this.tag(e),w.call(t,l)>=0},e.prototype.addImplicitBracesAndParens=function(){var e,t;return e=[],t=null,this.scanTokens(function(r,l,h){var p,v,m,g,y,b,E,S,x,T,N,C,L,A,O,M,_,D,P,H,B,j,F,I,q,R,U,z;if(z=r[0],N=(C=l>0?h[l-1]:[])[0],x=(h.length-1>l?h[l+1]:[])[0],F=function(){return e[e.length-1]},I=l,m=function(e){return l-I+e},g=function(){var e,t;return null!=(e=F())?null!=(t=e[2])?t.ours:void 0:void 0},y=function(){var e;return g()&&"("===(null!=(e=F())?e[0]:void 0)},E=function(){var e;return g()&&"{"===(null!=(e=F())?e[0]:void 0)},b=function(){var e;return g&&"CONTROL"===(null!=(e=F())?e[0]:void 0)},q=function(t){var n;return n=null!=t?t:l,e.push(["(",n,{ours:!0}]),h.splice(n,0,d("CALL_START","(")),null==t?l+=1:void 0},p=function(){return e.pop(),h.splice(l,0,d("CALL_END",")",["","end of input",r[2]])),l+=1},R=function(t,n){var i,s;return null==n&&(n=!0),i=null!=t?t:l,e.push(["{",i,{sameLine:!0,startsLine:n,ours:!0}]),s=new String("{"),s.generated=!0,h.splice(i,0,d("{",s,r)),null==t?l+=1:void 0},v=function(t){return t=null!=t?t:l,e.pop(),h.splice(t,0,d("}","}",r)),l+=1},!y()||"IF"!==z&&"TRY"!==z&&"FINALLY"!==z&&"CATCH"!==z&&"CLASS"!==z&&"SWITCH"!==z){if("INDENT"===z&&g()){if("=>"!==N&&"->"!==N&&"["!==N&&"("!==N&&","!==N&&"{"!==N&&"TRY"!==N&&"ELSE"!==N&&"="!==N)for(;y();)p();return b()&&e.pop(),e.push([z,l]),m(1)}if(w.call(s,z)>=0)return e.push([z,l]),m(1);if(w.call(i,z)>=0){for(;g();)y()?p():E()?v():e.pop();t=e.pop()}if((w.call(a,z)>=0&&r.spaced||"?"===z&&l>0&&!h[l-1].spaced)&&(w.call(o,x)>=0||w.call(f,x)>=0&&(null!=(L=h[l+1])?!L.spaced:!void 0)&&(null!=(A=h[l+1])?!A.newLine:!void 0)))return"?"===z&&(z=r[0]="FUNC_EXIST"),q(l+1),m(2);if(w.call(a,z)>=0&&this.indexOfTag(l+1,"INDENT")>-1&&this.looksObjectish(l+2)&&!this.findTagsBackwards(l,["CLASS","EXTENDS","IF","CATCH","SWITCH","LEADING_WHEN","FOR","WHILE","UNTIL"]))return q(l+1),e.push(["INDENT",l+2]),m(3);if(":"===z){for(P=function(){var e;switch(!1){case e=this.tag(l-1),0>w.call(i,e):return t[1];case"@"!==this.tag(l-2):return l-2;default:return l-1}}.call(this);"HERECOMMENT"===this.tag(P-2);)P-=2;return this.insideForDeclaration="FOR"===x,U=0===P||(O=this.tag(P-1),w.call(c,O)>=0)||h[P-1].newLine,F()&&(M=F(),j=M[0],B=M[1],("{"===j||"INDENT"===j&&"{"===this.tag(B-1))&&(U||","===this.tag(P-1)||"{"===this.tag(P-1)))?m(1):(R(P,!!U),m(2))}if(E()&&w.call(c,z)>=0&&(F()[2].sameLine=!1),S="OUTDENT"===N||C.newLine,w.call(u,z)>=0||w.call(n,z)>=0&&S)for(;g();)if(_=F(),j=_[0],B=_[1],D=_[2],H=D.sameLine,U=D.startsLine,y()&&","!==N)p();else if(E()&&!this.insideForDeclaration&&H&&"TERMINATOR"!==z&&":"!==N)v();else{if(!E()||"TERMINATOR"!==z||","===N||U&&this.looksObjectish(l+1))break;if("HERECOMMENT"===x)return m(1);v()}if(!(","!==z||this.looksObjectish(l+1)||!E()||this.insideForDeclaration||"TERMINATOR"===x&&this.looksObjectish(l+2)))for(T="OUTDENT"===x?1:0;E();)v(l+T);return m(1)}return e.push(["CONTROL",l,{ours:!0}]),m(1)})},e.prototype.addLocationDataToGeneratedTokens=function(){return this.scanTokens(function(e,t,n){var r,i,s,o,u,a;return e[2]?1:e.generated||e.explicit?("{"===e[0]&&(s=null!=(u=n[t+1])?u[2]:void 0)?(i=s.first_line,r=s.first_column):(o=null!=(a=n[t-1])?a[2]:void 0)?(i=o.last_line,r=o.last_column):i=r=0,e[2]={first_line:i,first_column:r,last_line:i,last_column:r},1):1})},e.prototype.normalizeLines=function(){var e,t,i,s,o;return o=i=s=null,t=function(e,t){var i,s,u,a;return";"!==e[1]&&(i=e[0],w.call(h,i)>=0)&&!("TERMINATOR"===e[0]&&(s=this.tag(t+1),w.call(r,s)>=0))&&("ELSE"!==e[0]||"THEN"===o)&&("CATCH"!==(u=e[0])&&"FINALLY"!==u||"->"!==o&&"=>"!==o)||(a=e[0],w.call(n,a)>=0&&this.tokens[t-1].newLine)},e=function(e,t){return this.tokens.splice(","===this.tag(t-1)?t-1:t,0,s)},this.scanTokens(function(n,u,a){var f,l,c,h,d,v;if(v=n[0],"TERMINATOR"===v){if("ELSE"===this.tag(u+1)&&"OUTDENT"!==this.tag(u-1))return a.splice.apply(a,[u,1].concat(E.call(this.indentation()))),1;if(c=this.tag(u+1),w.call(r,c)>=0)return a.splice(u,1),0}if("CATCH"===v)for(f=l=1;2>=l;f=++l)if("OUTDENT"===(h=this.tag(u+f))||"TERMINATOR"===h||"FINALLY"===h)return a.splice.apply(a,[u+f,0].concat(E.call(this.indentation()))),2+f;return w.call(p,v)>=0&&"INDENT"!==this.tag(u+1)&&("ELSE"!==v||"IF"!==this.tag(u+1))?(o=v,d=this.indentation(a[u]),i=d[0],s=d[1],"THEN"===o&&(i.fromThen=!0),a.splice(u+1,0,i),this.detectEnd(u+2,t,e),"THEN"===v&&a.splice(u,1),1):1})},e.prototype.tagPostfixConditionals=function(){var e,t,n;return n=null,t=function(e,t){var n,r;return r=e[0],n=this.tokens[t-1][0],"TERMINATOR"===r||"INDENT"===r&&0>w.call(p,n)},e=function(e){return"INDENT"!==e[0]||e.generated&&!e.fromThen?n[0]="POST_"+n[0]:void 0},this.scanTokens(function(r,i){return"IF"!==r[0]?1:(n=r,this.detectEnd(i+1,t,e),1)})},e.prototype.indentation=function(e){var t,n;return t=["INDENT",2],n=["OUTDENT",2],e?(t.generated=n.generated=!0,t.origin=n.origin=e):t.explicit=n.explicit=!0,[t,n]},e.prototype.generate=d,e.prototype.tag=function(e){var t;return null!=(t=this.tokens[e])?t[0]:void 0},e}(),t=[["(",")"],["[","]"],["{","}"],["INDENT","OUTDENT"],["CALL_START","CALL_END"],["PARAM_START","PARAM_END"],["INDEX_START","INDEX_END"],["STRING_START","STRING_END"],["REGEX_START","REGEX_END"]],e.INVERSES=l={},s=[],i=[],v=0,g=t.length;g>v;v++)y=t[v],m=y[0],b=y[1],s.push(l[b]=m),i.push(l[m]=b);r=["CATCH","THEN","ELSE","FINALLY"].concat(i),a=["IDENTIFIER","SUPER",")","CALL_END","]","INDEX_END","@","THIS"],o=["IDENTIFIER","NUMBER","STRING","STRING_START","JS","REGEX","REGEX_START","NEW","PARAM_START","CLASS","IF","TRY","SWITCH","THIS","BOOL","NULL","UNDEFINED","UNARY","YIELD","UNARY_MATH","SUPER","THROW","@","->","=>","[","(","{","--","++"],f=["+","-"],u=["POST_IF","FOR","WHILE","UNTIL","WHEN","BY","LOOP","TERMINATOR"],p=["ELSE","->","=>","TRY","FINALLY","THEN"],h=["TERMINATOR","CATCH","FINALLY","ELSE","OUTDENT","LEADING_WHEN"],c=["TERMINATOR","INDENT","OUTDENT"],n=[".","?.","::","?::"]}.call(this),t.exports}(),_dereq_["./lexer"]=function(){var e={},t={exports:e};return function(){var t,n,r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y,b,w,E,S,x,T,N,C,k,L,A,O,M,_,D,P,H,B,j,F,I,q,R,U,z,W,X,V,$,J,K,Q,G,Y,Z,et,tt,nt,rt,it,st,ot,ut,at,ft,lt,ct=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1};ot=_dereq_("./rewriter"),R=ot.Rewriter,E=ot.INVERSES,ut=_dereq_("./helpers"),nt=ut.count,ft=ut.starts,tt=ut.compact,at=ut.repeat,rt=ut.invertLiterate,st=ut.locationDataToString,lt=ut.throwSyntaxError,e.Lexer=A=function(){function e(){}return e.prototype.tokenize=function(e,t){var n,r,i,s;for(null==t&&(t={}),this.literate=t.literate,this.indent=0,this.baseIndent=0,this.indebt=0,this.outdebt=0,this.indents=[],this.ends=[],this.tokens=[],this.chunkLine=t.line||0,this.chunkColumn=t.column||0,e=this.clean(e),i=0;this.chunk=e.slice(i);)if(n=this.identifierToken()||this.commentToken()||this.whitespaceToken()||this.lineToken()||this.stringToken()||this.numberToken()||this.regexToken()||this.jsToken()||this.literalToken(),s=this.getLineAndColumnFromChunk(n),this.chunkLine=s[0],this.chunkColumn=s[1],i+=n,t.untilBalanced&&0===this.ends.length)return{tokens:this.tokens,index:i};return this.closeIndentation(),(r=this.ends.pop())&&this.error("missing "+r.tag,r.origin[2]),t.rewrite===!1?this.tokens:(new R).rewrite(this.tokens)},e.prototype.clean=function(e){return e.charCodeAt(0)===t&&(e=e.slice(1)),e=e.replace(/\r/g,"").replace(Q,""),et.test(e)&&(e="\n"+e,this.chunkLine--),this.literate&&(e=rt(e)),e},e.prototype.identifierToken=function(){var e,t,n,r,i,a,f,l,c,h,p,d,v,m,y,b;return(l=g.exec(this.chunk))?(f=l[0],i=l[1],t=l[2],a=i.length,c=void 0,"own"===i&&"FOR"===this.tag()?(this.token("OWN",i),i.length):"from"===i&&"YIELD"===this.tag()?(this.token("FROM",i),i.length):(p=this.tokens,h=p[p.length-1],r=t||null!=h&&("."===(d=h[0])||"?."===d||"::"===d||"?::"===d||!h.spaced&&"@"===h[0]),y="IDENTIFIER",!r&&(ct.call(T,i)>=0||ct.call(u,i)>=0)&&(y=i.toUpperCase(),"WHEN"===y&&(v=this.tag(),ct.call(C,v)>=0)?y="LEADING_WHEN":"FOR"===y?this.seenFor=!0:"UNLESS"===y?y="IF":ct.call(G,y)>=0?y="UNARY":ct.call(I,y)>=0&&("INSTANCEOF"!==y&&this.seenFor?(y="FOR"+y,this.seenFor=!1):(y="RELATION","!"===this.value()&&(c=this.tokens.pop(),i="!"+i)))),ct.call(x,i)>=0&&(r?(y="IDENTIFIER",i=new String(i),i.reserved=!0):ct.call(q,i)>=0&&this.error("reserved word '"+i+"'",{length:i.length})),r||(ct.call(s,i)>=0&&(e=i,i=o[i]),y=function(){switch(i){case"!":return"UNARY";case"==":case"!=":return"COMPARE";case"&&":case"||":return"LOGIC";case"true":case"false":return"BOOL";case"break":case"continue":return"STATEMENT";default:return y}}()),b=this.token(y,i,0,a),e&&(b.origin=[y,e,b[2]]),b.variable=!r,c&&(m=[c[2].first_line,c[2].first_column],b[2].first_line=m[0],b[2].first_column=m[1]),t&&(n=f.lastIndexOf(":"),this.token(":",":",n,t.length)),f.length)):0},e.prototype.numberToken=function(){var e,t,n,r,i;return(n=D.exec(this.chunk))?(r=n[0],t=r.length,/^0[BOX]/.test(r)?this.error("radix prefix in '"+r+"' must be lowercase",{offset:1}):/E/.test(r)&&!/^0x/.test(r)?this.error("exponential notation in '"+r+"' must be indicated with a lowercase 'e'",{offset:r.indexOf("E")}):/^0\d*[89]/.test(r)?this.error("decimal literal '"+r+"' must not be prefixed with '0'",{length:t}):/^0\d+/.test(r)&&this.error("octal literal '"+r+"' must be prefixed with '0o'",{length:t}),(i=/^0o([0-7]+)/.exec(r))&&(r="0x"+parseInt(i[1],8).toString(16)),(e=/^0b([01]+)/.exec(r))&&(r="0x"+parseInt(e[1],2).toString(16)),this.token("NUMBER",r,0,t),t):0},e.prototype.stringToken=function(){var e,t,n,r,i,s,o,u,a,f,l,c,v,m,g,y;if(l=(J.exec(this.chunk)||[])[0],!l)return 0;if(m=function(){switch(l){case"'":return $;case'"':return X;case"'''":return d;case'"""':return h}}(),s=3===l.length,c=this.matchWithInterpolations(m,l),y=c.tokens,i=c.index,e=y.length-1,n=l.charAt(0),s){for(u=null,r=function(){var e,t,n;for(n=[],o=e=0,t=y.length;t>e;o=++e)g=y[o],"NEOSTRING"===g[0]&&n.push(g[1]);return n}().join("#{}");f=p.exec(r);)t=f[1],(null===u||(v=t.length)>0&&u.length>v)&&(u=t);u&&(a=RegExp("^"+u,"gm")),this.mergeInterpolationTokens(y,{delimiter:n},function(t){return function(n,r){return n=t.formatString(n),0===r&&(n=n.replace(N,"")),r===e&&(n=n.replace(K,"")),a&&(n=n.replace(a,"")),n}}(this))}else this.mergeInterpolationTokens(y,{delimiter:n},function(t){return function(n,r){return n=t.formatString(n),n=n.replace(z,function(t,i){return 0===r&&0===i||r===e&&i+t.length===n.length?"":" "})}}(this));return i},e.prototype.commentToken=function(){var e,t,n;return(n=this.chunk.match(a))?(e=n[0],t=n[1],t&&((n=c.exec(e))&&this.error("block comments cannot contain "+n[0],{offset:n.index,length:n[0].length}),t.indexOf("\n")>=0&&(t=t.replace(RegExp("\\n"+at(" ",this.indent),"g"),"\n")),this.token("HERECOMMENT",t,0,e.length)),e.length):0},e.prototype.jsToken=function(){var e,t;return"`"===this.chunk.charAt(0)&&(e=S.exec(this.chunk))?(this.token("JS",(t=e[0]).slice(1,-1),0,t.length),t.length):0},e.prototype.regexToken=function(){var e,t,n,i,s,o,u,a,f,l,c,h,p;switch(!1){case!(o=F.exec(this.chunk)):this.error("regular expressions cannot begin with "+o[2],{offset:o.index+o[1].length});break;case!(o=this.matchWithInterpolations(v,"///")):p=o.tokens,s=o.index;break;case!(o=B.exec(this.chunk)):if(h=o[0],e=o[1],t=o[2],this.validateEscapes(e,{isRegex:!0,offsetInChunk:1}),s=h.length,f=this.tokens,a=f[f.length-1],a)if(a.spaced&&(l=a[0],ct.call(r,l)>=0)){if(!t||H.test(h))return 0}else if(c=a[0],ct.call(_,c)>=0)return 0;t||this.error("missing / (unclosed regex)");break;default:return 0}switch(i=j.exec(this.chunk.slice(s))[0],n=s+i.length,u=this.makeToken("REGEX",null,0,n),!1){case!!Z.test(i):this.error("invalid regular expression flags "+i,{offset:s,length:i.length});break;case!h&&1!==p.length:null==e&&(e=this.formatHeregex(p[0][1])),this.token("REGEX",""+this.makeDelimitedLiteral(e,{delimiter:"/"})+i,0,n,u);break;default:this.token("REGEX_START","(",0,0,u),this.token("IDENTIFIER","RegExp",0,0),this.token("CALL_START","(",0,0),this.mergeInterpolationTokens(p,{delimiter:'"',"double":!0},this.formatHeregex),i&&(this.token(",",",",s,0),this.token("STRING",'"'+i+'"',s,i.length)),this.token(")",")",n,0),this.token("REGEX_END",")",n,0)}return n},e.prototype.lineToken=function(){var e,t,n,r,i;if(!(n=M.exec(this.chunk)))return 0;if(t=n[0],this.seenFor=!1,i=t.length-1-t.lastIndexOf("\n"),r=this.unfinished(),i-this.indebt===this.indent)return r?this.suppressNewlines():this.newlineToken(0),t.length;if(i>this.indent){if(r)return this.indebt=i-this.indent,this.suppressNewlines(),t.length;if(!this.tokens.length)return this.baseIndent=this.indent=i,t.length;e=i-this.indent+this.outdebt,this.token("INDENT",e,t.length-i,i),this.indents.push(e),this.ends.push({tag:"OUTDENT"}),this.outdebt=this.indebt=0,this.indent=i}else this.baseIndent>i?this.error("missing indentation",{offset:t.length}):(this.indebt=0,this.outdentToken(this.indent-i,r,t.length));return t.length},e.prototype.outdentToken=function(e,t,n){var r,i,s,o;for(r=this.indent-e;e>0;)s=this.indents[this.indents.length-1],s?s===this.outdebt?(e-=this.outdebt,this.outdebt=0):this.outdebt>s?(this.outdebt-=s,e-=s):(i=this.indents.pop()+this.outdebt,n&&(o=this.chunk[n],ct.call(y,o)>=0)&&(r-=i-e,e=i),this.outdebt=0,this.pair("OUTDENT"),this.token("OUTDENT",e,0,n),e-=i):e=0;for(i&&(this.outdebt-=e);";"===this.value();)this.tokens.pop();return"TERMINATOR"===this.tag()||t||this.token("TERMINATOR","\n",n,0),this.indent=r,this},e.prototype.whitespaceToken=function(){var e,t,n,r;return(e=et.exec(this.chunk))||(t="\n"===this.chunk.charAt(0))?(r=this.tokens,n=r[r.length-1],n&&(n[e?"spaced":"newLine"]=!0),e?e[0].length:0):0},e.prototype.newlineToken=function(e){for(;";"===this.value();)this.tokens.pop();return"TERMINATOR"!==this.tag()&&this.token("TERMINATOR","\n",e,0),this},e.prototype.suppressNewlines=function(){return"\\"===this.value()&&this.tokens.pop(),this},e.prototype.literalToken=function(){var e,t,n,s,o,u,a,c,h,p;if((e=P.exec(this.chunk))?(p=e[0],i.test(p)&&this.tagParameters()):p=this.chunk.charAt(0),c=p,n=this.tokens,t=n[n.length-1],"="===p&&t&&(!t[1].reserved&&(s=t[1],ct.call(x,s)>=0)&&(t.origin&&(t=t.origin),this.error("reserved word '"+t[1]+"' can't be assigned",t[2])),"||"===(o=t[1])||"&&"===o))return t[0]="COMPOUND_ASSIGN",t[1]+="=",p.length;if(";"===p)this.seenFor=!1,c="TERMINATOR";else if(ct.call(O,p)>=0)c="MATH";else if(ct.call(f,p)>=0)c="COMPARE";else if(ct.call(l,p)>=0)c="COMPOUND_ASSIGN";else if(ct.call(G,p)>=0)c="UNARY";else if(ct.call(Y,p)>=0)c="UNARY_MATH";else if(ct.call(U,p)>=0)c="SHIFT";else if(ct.call(L,p)>=0||"?"===p&&(null!=t?t.spaced:void 0))c="LOGIC";else if(t&&!t.spaced)if("("===p&&(u=t[0],ct.call(r,u)>=0))"?"===t[0]&&(t[0]="FUNC_EXIST"),c="CALL_START";else if("["===p&&(a=t[0],ct.call(b,a)>=0))switch(c="INDEX_START",t[0]){case"?":t[0]="INDEX_SOAK"}switch(h=this.makeToken(c,p),p){case"(":case"{":case"[":this.ends.push({tag:E[p],origin:h});break;case")":case"}":case"]":this.pair(p)}return this.tokens.push(h),p.length},e.prototype.tagParameters=function(){var e,t,n,r;if(")"!==this.tag())return this;for(t=[],r=this.tokens,e=r.length,r[--e][0]="PARAM_END";n=r[--e];)switch(n[0]){case")":t.push(n);break;case"(":case"CALL_START":if(!t.length)return"("===n[0]?(n[0]="PARAM_START",this):this;t.pop()}return this},e.prototype.closeIndentation=function(){return this.outdentToken(this.indent)},e.prototype.matchWithInterpolations=function(t,n){var r,i,s,o,u,a,f,l,c,h,p,d,v,m,g;if(g=[],l=n.length,this.chunk.slice(0,l)!==n)return null;for(v=this.chunk.slice(l);;){if(m=t.exec(v)[0],this.validateEscapes(m,{isRegex:"/"===n.charAt(0),offsetInChunk:l}),g.push(this.makeToken("NEOSTRING",m,l)),v=v.slice(m.length),l+=m.length,"#{"!==v.slice(0,2))break;h=this.getLineAndColumnFromChunk(l+1),a=h[0],i=h[1],p=(new e).tokenize(v.slice(1),{line:a,column:i,untilBalanced:!0}),f=p.tokens,o=p.index,o+=1,c=f[0],r=f[f.length-1],c[0]=c[1]="(",r[0]=r[1]=")",r.origin=["","end of interpolation",r[2]],"TERMINATOR"===(null!=(d=f[1])?d[0]:void 0)&&f.splice(1,1),g.push(["TOKENS",f]),v=v.slice(o),l+=o}return v.slice(0,n.length)!==n&&this.error("missing "+n,{length:n.length}),s=g[0],u=g[g.length-1],s[2].first_column-=n.length,u[2].last_column+=n.length,0===u[1].length&&(u[2].last_column-=1),{tokens:g,index:l+n.length}},e.prototype.mergeInterpolationTokens=function(e,t,n){var r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y;for(e.length>1&&(c=this.token("STRING_START","(",0,0)),s=this.tokens.length,o=u=0,f=e.length;f>u;o=++u){switch(m=e[o],v=m[0],y=m[1],v){case"TOKENS":if(2===y.length)continue;l=y[0],g=y;break;case"NEOSTRING":if(r=n(m[1],o),0===r.length){if(0!==o)continue;i=this.tokens.length}2===o&&null!=i&&this.tokens.splice(i,2),m[0]="STRING",m[1]=this.makeDelimitedLiteral(r,t),l=m,g=[m]}this.tokens.length>s&&(h=this.token("+","+"),h[2]={first_line:l[2].first_line,first_column:l[2].first_column,last_line:l[2].first_line,last_column:l[2].first_column}),(p=this.tokens).push.apply(p,g)}return c?(a=e[e.length-1],c.origin=["STRING",null,{first_line:c[2].first_line,first_column:c[2].first_column,last_line:a[2].last_line,last_column:a[2].last_column}],d=this.token("STRING_END",")"),d[2]={first_line:a[2].last_line,first_column:a[2].last_column,last_line:a[2].last_line,last_column:a[2].last_column}):void 0},e.prototype.pair=function(e){var t,n,r,i,s;return r=this.ends,n=r[r.length-1],e!==(s=null!=n?n.tag:void 0)?("OUTDENT"!==s&&this.error("unmatched "+e),i=this.indents,t=i[i.length-1],this.outdentToken(t,!0),this.pair(e)):this.ends.pop()},e.prototype.getLineAndColumnFromChunk=function(e){var t,n,r,i,s;return 0===e?[this.chunkLine,this.chunkColumn]:(s=e>=this.chunk.length?this.chunk:this.chunk.slice(0,+(e-1)+1||9e9),r=nt(s,"\n"),t=this.chunkColumn,r>0?(i=s.split("\n"),n=i[i.length-1],t=n.length):t+=s.length,[this.chunkLine+r,t])},e.prototype.makeToken=function(e,t,n,r){var i,s,o,u,a;return null==n&&(n=0),null==r&&(r=t.length),s={},o=this.getLineAndColumnFromChunk(n),s.first_line=o[0],s.first_column=o[1],i=Math.max(0,r-1),u=this.getLineAndColumnFromChunk(n+i),s.last_line=u[0],s.last_column=u[1],a=[e,t,s]},e.prototype.token=function(e,t,n,r,i){var s;return s=this.makeToken(e,t,n,r),i&&(s.origin=i),this.tokens.push(s),s},e.prototype.tag=function(){var e,t;return e=this.tokens,t=e[e.length-1],null!=t?t[0]:void 0},e.prototype.value=function(){var e,t;return e=this.tokens,t=e[e.length-1],null!=t?t[1]:void 0},e.prototype.unfinished=function(){var e;return k.test(this.chunk)||"\\"===(e=this.tag())||"."===e||"?."===e||"?::"===e||"UNARY"===e||"MATH"===e||"UNARY_MATH"===e||"+"===e||"-"===e||"YIELD"===e||"**"===e||"SHIFT"===e||"RELATION"===e||"COMPARE"===e||"LOGIC"===e||"THROW"===e||"EXTENDS"===e},e.prototype.formatString=function(e){return e.replace(V,"$1")},e.prototype.formatHeregex=function(e){return e.replace(m,"$1$2")},e.prototype.validateEscapes=function(e,t){var n,r,i,s,o,u,a,f;return null==t&&(t={}),s=w.exec(e),!s||(s[0],n=s[1],u=s[2],r=s[3],f=s[4],t.isRegex&&u&&"0"!==u.charAt(0))?void 0:(o=u?"octal escape sequences are not allowed":"invalid escape sequence",i="\\"+(u||r||f),this.error(o+" "+i,{offset:(null!=(a=t.offsetInChunk)?a:0)+s.index+n.length,length:i.length}))},e.prototype.makeDelimitedLiteral=function(e,t){var n;return null==t&&(t={}),""===e&&"/"===t.delimiter&&(e="(?:)"),n=RegExp("(\\\\\\\\)|(\\\\0(?=[1-7]))|\\\\?("+t.delimiter+")|\\\\?(?:(\\n)|(\\r)|(\\u2028)|(\\u2029))|(\\\\.)","g"),e=e.replace(n,function(e,n,r,i,s,o,u,a,f){switch(!1){case!n:return t.double?n+n:n;case!r:return"\\x00";case!i:return"\\"+i;case!s:return"\\n";case!o:return"\\r";case!u:return"\\u2028";case!a:return"\\u2029";case!f:return t.double?"\\"+f:f}}),""+t.delimiter+e+t.delimiter},e.prototype.error=function(e,t){var n,r,i,s,o,u;return null==t&&(t={}),i="first_line"in t?t:(o=this.getLineAndColumnFromChunk(null!=(s=t.offset)?s:0),r=o[0],n=o[1],o,{first_line:r,first_column:n,last_column:n+(null!=(u=t.length)?u:1)-1}),lt(e,i)},e}(),T=["true","false","null","this","new","delete","typeof","in","instanceof","return","throw","break","continue","debugger","yield","if","else","switch","for","while","do","try","catch","finally","class","extends","super"],u=["undefined","then","unless","until","loop","of","by","when"],o={and:"&&",or:"||",is:"==",isnt:"!=",not:"!",yes:"true",no:"false",on:"true",off:"false"},s=function(){var e;e=[];for(it in o)e.push(it);return e}(),u=u.concat(s),q=["case","default","function","var","void","with","const","let","enum","export","import","native","implements","interface","package","private","protected","public","static"],W=["arguments","eval","yield*"],x=T.concat(q).concat(W),e.RESERVED=q.concat(T).concat(u).concat(W),e.STRICT_PROSCRIBED=W,t=65279,g=/^(?!\d)((?:(?!\s)[$\w\x7f-\uffff])+)([^\n\S]*:(?!:))?/,D=/^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i,P=/^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>*\/%])\2=?|\?(\.|::)|\.{2,3})/,et=/^[^\n\S]+/,a=/^###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/,i=/^[-=]>/,M=/^(?:\n[^\n\S]*)+/,S=/^`[^\\`]*(?:\\.[^\\`]*)*`/,J=/^(?:'''|"""|'|")/,$=/^(?:[^\\']|\\[\s\S])*/,X=/^(?:[^\\"#]|\\[\s\S]|\#(?!\{))*/,d=/^(?:[^\\']|\\[\s\S]|'(?!''))*/,h=/^(?:[^\\"#]|\\[\s\S]|"(?!"")|\#(?!\{))*/,V=/((?:\\\\)+)|\\[^\S\n]*\n\s*/g,z=/\s*\n\s*/g,p=/\n+([^\n\S]*)(?=\S)/g,B=/^\/(?!\/)((?:[^[\/\n\\]|\\[^\n]|\[(?:\\[^\n]|[^\]\n\\])*\])*)(\/)?/,j=/^\w*/,Z=/^(?!.*(.).*\1)[imgy]*$/,v=/^(?:[^\\\/#]|\\[\s\S]|\/(?!\/\/)|\#(?!\{))*/,m=/((?:\\\\)+)|\\(\s)|\s+(?:#.*)?/g,F=/^(\/|\/{3}\s*)(\*)/,H=/^\/=?\s/,c=/\*\//,k=/^\s*(?:,|\??\.(?![.\d])|::)/,w=/((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7]|[1-7])|(x(?![\da-fA-F]{2}).{0,2})|(u(?![\da-fA-F]{4}).{0,4}))/,N=/^[^\n\S]*\n/,K=/\n[^\n\S]*$/,Q=/\s+$/,l=["-=","+=","/=","*=","%=","||=","&&=","?=","<<=",">>=",">>>=","&=","^=","|=","**=","//=","%%="],G=["NEW","TYPEOF","DELETE","DO"],Y=["!","~"],L=["&&","||","&","|","^"],U=["<<",">>",">>>"],f=["==","!=","<",">","<=",">="],O=["*","/","%","//","%%"],I=["IN","OF","INSTANCEOF"],n=["TRUE","FALSE"],r=["IDENTIFIER",")","]","?","@","THIS","SUPER"],b=r.concat(["NUMBER","STRING","STRING_END","REGEX","REGEX_END","BOOL","NULL","UNDEFINED","}","::"]),_=b.concat(["++","--"]),C=["INDENT","OUTDENT","TERMINATOR"],y=[")","}","]"]}.call(this),t.exports}(),_dereq_["./parser"]=function(){var e={},t={exports:e},n=function(){function e(){this.yy={}}var t=function(e,t,n,r){for(n=n||{},r=e.length;r--;n[e[r]]=t);return n},n=[1,20],r=[1,75],i=[1,71],s=[1,76],o=[1,77],u=[1,73],a=[1,74],f=[1,50],l=[1,52],c=[1,53],h=[1,54],p=[1,55],d=[1,45],v=[1,46],m=[1,27],g=[1,60],y=[1,61],b=[1,70],w=[1,43],E=[1,26],S=[1,58],x=[1,59],T=[1,57],N=[1,38],C=[1,44],k=[1,56],L=[1,65],A=[1,66],O=[1,67],M=[1,68],_=[1,42],D=[1,64],P=[1,29],H=[1,30],B=[1,31],j=[1,32],F=[1,33],I=[1,34],q=[1,35],R=[1,78],U=[1,6,26,34,108],z=[1,88],W=[1,81],X=[1,80],V=[1,79],$=[1,82],J=[1,83],K=[1,84],Q=[1,85],G=[1,86],Y=[1,87],Z=[1,91],et=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],tt=[1,97],nt=[1,98],rt=[1,99],it=[1,100],st=[1,102],ot=[1,103],ut=[1,96],at=[2,112],ft=[1,6,25,26,34,55,60,63,72,73,74,75,77,79,80,84,90,91,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],lt=[2,79],ct=[1,108],ht=[2,58],pt=[1,112],dt=[1,117],vt=[1,118],mt=[1,120],gt=[1,6,25,26,34,46,55,60,63,72,73,74,75,77,79,80,84,90,91,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],yt=[2,76],bt=[1,6,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],wt=[1,155],Et=[1,157],St=[1,152],xt=[1,6,25,26,34,46,55,60,63,72,73,74,75,77,79,80,84,86,90,91,92,97,99,108,110,111,112,116,117,132,135,136,139,140,141,142,143,144,145,146,147,148],Tt=[2,95],Nt=[1,6,25,26,34,49,55,60,63,72,73,74,75,77,79,80,84,90,91,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],Ct=[1,6,25,26,34,46,49,55,60,63,72,73,74,75,77,79,80,84,86,90,91,92,97,99,108,110,111,112,116,117,123,124,132,135,136,139,140,141,142,143,144,145,146,147,148],kt=[1,206],Lt=[1,205],At=[1,6,25,26,34,38,55,60,63,72,73,74,75,77,79,80,84,90,91,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],Ot=[2,56],Mt=[1,216],_t=[6,25,26,55,60],Dt=[6,25,26,46,55,60,63],Pt=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,135,136,142,144,145,146,147],Ht=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132],Bt=[72,73,74,75,77,80,90,91],jt=[1,235],Ft=[2,133],It=[1,6,25,26,34,46,55,60,63,72,73,74,75,77,79,80,84,90,91,92,97,99,108,110,111,112,116,117,123,124,132,135,136,141,142,143,144,145,146,147],qt=[1,244],Rt=[6,25,26,60,92,97],Ut=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,117,132],zt=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,111,117,132],Wt=[123,124],Xt=[60,123,124],Vt=[1,255],$t=[6,25,26,60,84],Jt=[6,25,26,49,60,84],Kt=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,135,136,144,145,146,147],Qt=[11,28,30,32,33,36,37,40,41,42,43,44,51,52,53,57,58,79,82,85,89,94,95,96,102,106,107,110,112,114,116,125,131,133,134,135,136,137,139,140],Gt=[2,122],Yt=[6,25,26],Zt=[2,57],en=[1,268],tn=[1,269],nn=[1,6,25,26,34,55,60,63,79,84,92,97,99,104,105,108,110,111,112,116,117,127,129,132,135,136,141,142,143,144,145,146,147],rn=[26,127,129],sn=[1,6,26,34,55,60,63,79,84,92,97,99,108,111,117,132],on=[2,71],un=[1,291],an=[1,292],fn=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,127,132,135,136,141,142,143,144,145,146,147],ln=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,112,116,117,132],cn=[1,303],hn=[1,304],pn=[6,25,26,60],dn=[1,6,25,26,34,55,60,63,79,84,92,97,99,104,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],vn=[25,60],mn={trace:function(){},yy:{},symbols_:{error:2,Root:3,Body:4,Line:5,TERMINATOR:6,Expression:7,Statement:8,Return:9,Comment:10,STATEMENT:11,Value:12,Invocation:13,Code:14,Operation:15,Assign:16,If:17,Try:18,While:19,For:20,Switch:21,Class:22,Throw:23,Block:24,INDENT:25,OUTDENT:26,Identifier:27,IDENTIFIER:28,AlphaNumeric:29,NUMBER:30,String:31,STRING:32,STRING_START:33,STRING_END:34,Regex:35,REGEX:36,REGEX_START:37,REGEX_END:38,Literal:39,JS:40,DEBUGGER:41,UNDEFINED:42,NULL:43,BOOL:44,Assignable:45,"=":46,AssignObj:47,ObjAssignable:48,":":49,ThisProperty:50,RETURN:51,HERECOMMENT:52,PARAM_START:53,ParamList:54,PARAM_END:55,FuncGlyph:56,"->":57,"=>":58,OptComma:59,",":60,Param:61,ParamVar:62,"...":63,Array:64,Object:65,Splat:66,SimpleAssignable:67,Accessor:68,Parenthetical:69,Range:70,This:71,".":72,"?.":73,"::":74,"?::":75,Index:76,INDEX_START:77,IndexValue:78,INDEX_END:79,INDEX_SOAK:80,Slice:81,"{":82,AssignList:83,"}":84,CLASS:85,EXTENDS:86,OptFuncExist:87,Arguments:88,SUPER:89,FUNC_EXIST:90,CALL_START:91,CALL_END:92,ArgList:93,THIS:94,"@":95,"[":96,"]":97,RangeDots:98,"..":99,Arg:100,SimpleArgs:101,TRY:102,Catch:103,FINALLY:104,CATCH:105,THROW:106,"(":107,")":108,WhileSource:109,WHILE:110,WHEN:111,UNTIL:112,Loop:113,LOOP:114,ForBody:115,FOR:116,BY:117,ForStart:118,ForSource:119,ForVariables:120,OWN:121,ForValue:122,FORIN:123,FOROF:124,SWITCH:125,Whens:126,ELSE:127,When:128,LEADING_WHEN:129,IfBlock:130,IF:131,POST_IF:132,UNARY:133,UNARY_MATH:134,"-":135,"+":136,YIELD:137,FROM:138,"--":139,"++":140,"?":141,MATH:142,"**":143,SHIFT:144,COMPARE:145,LOGIC:146,RELATION:147,COMPOUND_ASSIGN:148,$accept:0,$end:1},terminals_:{2:"error",6:"TERMINATOR",11:"STATEMENT",25:"INDENT",26:"OUTDENT",28:"IDENTIFIER",30:"NUMBER",32:"STRING",33:"STRING_START",34:"STRING_END",36:"REGEX",37:"REGEX_START",38:"REGEX_END",40:"JS",41:"DEBUGGER",42:"UNDEFINED",43:"NULL",44:"BOOL",46:"=",49:":",51:"RETURN",52:"HERECOMMENT",53:"PARAM_START",55:"PARAM_END",57:"->",58:"=>",60:",",63:"...",72:".",73:"?.",74:"::",75:"?::",77:"INDEX_START",79:"INDEX_END",80:"INDEX_SOAK",82:"{",84:"}",85:"CLASS",86:"EXTENDS",89:"SUPER",90:"FUNC_EXIST",91:"CALL_START",92:"CALL_END",94:"THIS",95:"@",96:"[",97:"]",99:"..",102:"TRY",104:"FINALLY",105:"CATCH",106:"THROW",107:"(",108:")",110:"WHILE",111:"WHEN",112:"UNTIL",114:"LOOP",116:"FOR",117:"BY",121:"OWN",123:"FORIN",124:"FOROF",125:"SWITCH",127:"ELSE",129:"LEADING_WHEN",131:"IF",132:"POST_IF",133:"UNARY",134:"UNARY_MATH",135:"-",136:"+",137:"YIELD",138:"FROM",139:"--",140:"++",141:"?",142:"MATH",143:"**",144:"SHIFT",145:"COMPARE",146:"LOGIC",147:"RELATION",148:"COMPOUND_ASSIGN"},productions_:[0,[3,0],[3,1],[4,1],[4,3],[4,2],[5,1],[5,1],[8,1],[8,1],[8,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[24,2],[24,3],[27,1],[29,1],[29,1],[31,1],[31,3],[35,1],[35,3],[39,1],[39,1],[39,1],[39,1],[39,1],[39,1],[39,1],[16,3],[16,4],[16,5],[47,1],[47,3],[47,5],[47,1],[48,1],[48,1],[48,1],[9,2],[9,1],[10,1],[14,5],[14,2],[56,1],[56,1],[59,0],[59,1],[54,0],[54,1],[54,3],[54,4],[54,6],[61,1],[61,2],[61,3],[61,1],[62,1],[62,1],[62,1],[62,1],[66,2],[67,1],[67,2],[67,2],[67,1],[45,1],[45,1],[45,1],[12,1],[12,1],[12,1],[12,1],[12,1],[68,2],[68,2],[68,2],[68,2],[68,1],[68,1],[76,3],[76,2],[78,1],[78,1],[65,4],[83,0],[83,1],[83,3],[83,4],[83,6],[22,1],[22,2],[22,3],[22,4],[22,2],[22,3],[22,4],[22,5],[13,3],[13,3],[13,1],[13,2],[87,0],[87,1],[88,2],[88,4],[71,1],[71,1],[50,2],[64,2],[64,4],[98,1],[98,1],[70,5],[81,3],[81,2],[81,2],[81,1],[93,1],[93,3],[93,4],[93,4],[93,6],[100,1],[100,1],[100,1],[101,1],[101,3],[18,2],[18,3],[18,4],[18,5],[103,3],[103,3],[103,2],[23,2],[69,3],[69,5],[109,2],[109,4],[109,2],[109,4],[19,2],[19,2],[19,2],[19,1],[113,2],[113,2],[20,2],[20,2],[20,2],[115,2],[115,4],[115,2],[118,2],[118,3],[122,1],[122,1],[122,1],[122,1],[120,1],[120,3],[119,2],[119,2],[119,4],[119,4],[119,4],[119,6],[119,6],[21,5],[21,7],[21,4],[21,6],[126,1],[126,2],[128,3],[128,4],[130,3],[130,5],[17,1],[17,3],[17,3],[17,3],[15,2],[15,2],[15,2],[15,2],[15,2],[15,2],[15,3],[15,2],[15,2],[15,2],[15,2],[15,2],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,5],[15,4],[15,3]],performAction:function(e,t,n,r,i,s,o){var u=s.length-1;switch(i){case 1:return this.$=r.addLocationDataFn(o[u],o[u])(new r.Block);case 2:return this.$=s[u];case 3:this.$=r.addLocationDataFn(o[u],o[u])(r.Block.wrap([s[u]]));break;case 4:this.$=r.addLocationDataFn(o[u-2],o[u])(s[u-2].push(s[u]));break;case 5:this.$=s[u-1];break;case 6:case 7:case 8:case 9:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 27:case 32:case 34:case 45:case 46:case 47:case 48:case 56:case 57:case 67:case 68:case 69:case 70:case 75:case 76:case 79:case 83:case 89:case 133:case 134:case 136:case 166:case 167:case 183:case 189:this.$=s[u];break;case 10:case 25:case 26:case 28:case 30:case 33:case 35:this.$=r.addLocationDataFn(o[u],o[u])(new r.Literal(s[u]));break;case 23:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Block);break;case 24:case 31:case 90:this.$=r.addLocationDataFn(o[u-2],o[u])(s[u-1]);break;case 29:case 146:this.$=r.addLocationDataFn(o[u-2],o[u])(new r.Parens(s[u-1]));break;case 36:this.$=r.addLocationDataFn(o[u],o[u])(new r.Undefined);break;case 37:this.$=r.addLocationDataFn(o[u],o[u])(new r.Null);break;case 38:this.$=r.addLocationDataFn(o[u],o[u])(new r.Bool(s[u]));break;case 39:this.$=r.addLocationDataFn(o[u-2],o[u])(new r.Assign(s[u-2],s[u]));break;case 40:this.$=r.addLocationDataFn(o[u-3],o[u])(new r.Assign(s[u-3],s[u]));break;case 41:this.$=r.addLocationDataFn(o[u-4],o[u])(new r.Assign(s[u-4],s[u-1]));break;case 42:case 72:case 77:case 78:case 80:case 81:case 82:case 168:case 169:this.$=r.addLocationDataFn(o[u],o[u])(new r.Value(s[u]));break;case 43:this.$=r.addLocationDataFn(o[u-2],o[u])(new r.Assign(r.addLocationDataFn(o[u-2])(new r.Value(s[u-2])),s[u],"object"));break;case 44:this.$=r.addLocationDataFn(o[u-4],o[u])(new r.Assign(r.addLocationDataFn(o[u-4])(new r.Value(s[u-4])),s[u-1],"object"));break;case 49:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Return(s[u]));break;case 50:this.$=r.addLocationDataFn(o[u],o[u])(new r.Return);break;case 51:this.$=r.addLocationDataFn(o[u],o[u])(new r.Comment(s[u]));break;case 52:this.$=r.addLocationDataFn(o[u-4],o[u])(new r.Code(s[u-3],s[u],s[u-1]));break;case 53:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Code([],s[u],s[u-1]));break;case 54:this.$=r.addLocationDataFn(o[u],o[u])("func");break;case 55:this.$=r.addLocationDataFn(o[u],o[u])("boundfunc");break;case 58:case 95:this.$=r.addLocationDataFn(o[u],o[u])([]);break;case 59:case 96:case 128:case 170:this.$=r.addLocationDataFn(o[u],o[u])([s[u]]);break;case 60:case 97:case 129:this.$=r.addLocationDataFn(o[u-2],o[u])(s[u-2].concat(s[u]));break;case 61:case 98:case 130:this.$=r.addLocationDataFn(o[u-3],o[u])(s[u-3].concat(s[u]));break;case 62:case 99:case 132:this.$=r.addLocationDataFn(o[u-5],o[u])(s[u-5].concat(s[u-2]));break;case 63:this.$=r.addLocationDataFn(o[u],o[u])(new r.Param(s[u]));break;case 64:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Param(s[u-1],null,!0));break;case 65:this.$=r.addLocationDataFn(o[u-2],o[u])(new r.Param(s[u-2],s[u]));break;case 66:case 135:this.$=r.addLocationDataFn(o[u],o[u])(new r.Expansion);break;case 71:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Splat(s[u-1]));break;case 73:this.$=r.addLocationDataFn(o[u-1],o[u])(s[u-1].add(s[u]));break;case 74:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Value(s[u-1],[].concat(s[u])));break;case 84:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Access(s[u]));break;case 85:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Access(s[u],"soak"));break;case 86:this.$=r.addLocationDataFn(o[u-1],o[u])([r.addLocationDataFn(o[u-1])(new r.Access(new r.Literal("prototype"))),r.addLocationDataFn(o[u])(new r.Access(s[u]))]);break;case 87:this.$=r.addLocationDataFn(o[u-1],o[u])([r.addLocationDataFn(o[u-1])(new r.Access(new r.Literal("prototype"),"soak")),r.addLocationDataFn(o[u])(new r.Access(s[u]))]);break;case 88:this.$=r.addLocationDataFn(o[u],o[u])(new r.Access(new r.Literal("prototype")));break;case 91:this.$=r.addLocationDataFn(o[u-1],o[u])(r.extend(s[u],{soak:!0}));break;case 92:this.$=r.addLocationDataFn(o[u],o[u])(new r.Index(s[u]));break;case 93:this.$=r.addLocationDataFn(o[u],o[u])(new r.Slice(s[u]));break;case 94:this.$=r.addLocationDataFn(o[u-3],o[u])(new r.Obj(s[u-2],s[u-3].generated));break;case 100:this.$=r.addLocationDataFn(o[u],o[u])(new r.Class);break;case 101:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Class(null,null,s[u]));break;case 102:this.$=r.addLocationDataFn(o[u-2],o[u])(new r.Class(null,s[u]));break;case 103:this.$=r.addLocationDataFn(o[u-3],o[u])(new r.Class(null,s[u-1],s[u]));break;case 104:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Class(s[u]));break;case 105:this.$=r.addLocationDataFn(o[u-2],o[u])(new r.Class(s[u-1],null,s[u]));break;case 106:this.$=r.addLocationDataFn(o[u-3],o[u])(new r.Class(s[u-2],s[u]));break;case 107:this.$=r.addLocationDataFn(o[u-4],o[u])(new r.Class(s[u-3],s[u-1],s[u]));break;case 108:case 109:this.$=r.addLocationDataFn(o[u-2],o[u])(new r.Call(s[u-2],s[u],s[u-1]));break;case 110:this.$=r.addLocationDataFn(o[u],o[u])(new r.Call("super",[new r.Splat(new r.Literal("arguments"))]));break;case 111:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Call("super",s[u]));break;case 112:this.$=r.addLocationDataFn(o[u],o[u])(!1);break;case 113:this.$=r.addLocationDataFn(o[u],o[u])(!0);break;case 114:this.$=r.addLocationDataFn(o[u-1],o[u])([]);break;case 115:case 131:this.$=r.addLocationDataFn(o[u-3],o[u])(s[u-2]);break;case 116:case 117:this.$=r.addLocationDataFn(o[u],o[u])(new r.Value(new r.Literal("this")));break;case 118:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Value(r.addLocationDataFn(o[u-1])(new r.Literal("this")),[r.addLocationDataFn(o[u])(new r.Access(s[u]))],"this"));break;case 119:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Arr([]));break;case 120:this.$=r.addLocationDataFn(o[u-3],o[u])(new r.Arr(s[u-2]));break;case 121:this.$=r.addLocationDataFn(o[u],o[u])("inclusive");break;case 122:this.$=r.addLocationDataFn(o[u],o[u])("exclusive");break;case 123:this.$=r.addLocationDataFn(o[u-4],o[u])(new r.Range(s[u-3],s[u-1],s[u-2]));break;case 124:this.$=r.addLocationDataFn(o[u-2],o[u])(new r.Range(s[u-2],s[u],s[u-1]));break;case 125:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Range(s[u-1],null,s[u]));break;case 126:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Range(null,s[u],s[u-1]));break;case 127:this.$=r.addLocationDataFn(o[u],o[u])(new r.Range(null,null,s[u]));break;case 137:this.$=r.addLocationDataFn(o[u-2],o[u])([].concat(s[u-2],s[u]));break;case 138:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Try(s[u]));break;case 139:this.$=r.addLocationDataFn(o[u-2],o[u])(new r.Try(s[u-1],s[u][0],s[u][1]));break;case 140:this.$=r.addLocationDataFn(o[u-3],o[u])(new r.Try(s[u-2],null,null,s[u]));break;case 141:this.$=r.addLocationDataFn(o[u-4],o[u])(new r.Try(s[u-3],s[u-2][0],s[u-2][1],s[u]));break;case 142:this.$=r.addLocationDataFn(o[u-2],o[u])([s[u-1],s[u]]);break;case 143:this.$=r.addLocationDataFn(o[u-2],o[u])([r.addLocationDataFn(o[u-1])(new r.Value(s[u-1])),s[u]]);break;case 144:this.$=r.addLocationDataFn(o[u-1],o[u])([null,s[u]]);break;case 145:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Throw(s[u]));break;case 147:this.$=r.addLocationDataFn(o[u-4],o[u])(new r.Parens(s[u-2]));break;case 148:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.While(s[u]));break;case 149:this.$=r.addLocationDataFn(o[u-3],o[u])(new r.While(s[u-2],{guard:s[u]}));break;case 150:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.While(s[u],{invert:!0}));break;case 151:this.$=r.addLocationDataFn(o[u-3],o[u])(new r.While(s[u-2],{invert:!0,guard:s[u]}));break;case 152:this.$=r.addLocationDataFn(o[u-1],o[u])(s[u-1].addBody(s[u]));break;case 153:case 154:this.$=r.addLocationDataFn(o[u-1],o[u])(s[u].addBody(r.addLocationDataFn(o[u-1])(r.Block.wrap([s[u-1]]))));break;case 155:this.$=r.addLocationDataFn(o[u],o[u])(s[u]);break;case 156:this.$=r.addLocationDataFn(o[u-1],o[u])((new r.While(r.addLocationDataFn(o[u-1])(new r.Literal("true")))).addBody(s[u]));break;case 157:this.$=r.addLocationDataFn(o[u-1],o[u])((new r.While(r.addLocationDataFn(o[u-1])(new r.Literal("true")))).addBody(r.addLocationDataFn(o[u])(r.Block.wrap([s[u]]))));break;case 158:case 159:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.For(s[u-1],s[u]));break;case 160:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.For(s[u],s[u-1]));break;case 161:this.$=r.addLocationDataFn(o[u-1],o[u])({source:r.addLocationDataFn(o[u])(new r.Value(s[u]))});break;case 162:this.$=r.addLocationDataFn(o[u-3],o[u])({source:r.addLocationDataFn(o[u-2])(new r.Value(s[u-2])),step:s[u]});break;case 163:this.$=r.addLocationDataFn(o[u-1],o[u])(function(){return s[u].own=s[u-1].own,s[u].name=s[u-1][0],s[u].index=s[u-1][1],s[u]}());break;case 164:this.$=r.addLocationDataFn(o[u-1],o[u])(s[u]);break;case 165:this.$=r.addLocationDataFn(o[u-2],o[u])(function(){return s[u].own=!0,s[u]}());break;case 171:this.$=r.addLocationDataFn(o[u-2],o[u])([s[u-2],s[u]]);break;case 172:this.$=r.addLocationDataFn(o[u-1],o[u])({source:s[u]});break;case 173:this.$=r.addLocationDataFn(o[u-1],o[u])({source:s[u],object:!0});break;case 174:this.$=r.addLocationDataFn(o[u-3],o[u])({source:s[u-2],guard:s[u]});break;case 175:this.$=r.addLocationDataFn(o[u-3],o[u])({source:s[u-2],guard:s[u],object:!0});break;case 176:this.$=r.addLocationDataFn(o[u-3],o[u])({source:s[u-2],step:s[u]});break;case 177:this.$=r.addLocationDataFn(o[u-5],o[u])({source:s[u-4],guard:s[u-2],step:s[u]});break;case 178:this.$=r.addLocationDataFn(o[u-5],o[u])({source:s[u-4],step:s[u-2],guard:s[u]});break;case 179:this.$=r.addLocationDataFn(o[u-4],o[u])(new r.Switch(s[u-3],s[u-1]));break;case 180:this.$=r.addLocationDataFn(o[u-6],o[u])(new r.Switch(s[u-5],s[u-3],s[u-1]));break;case 181:this.$=r.addLocationDataFn(o[u-3],o[u])(new r.Switch(null,s[u-1]));break;case 182:this.$=r.addLocationDataFn(o[u-5],o[u])(new r.Switch(null,s[u-3],s[u-1]));break;case 184:this.$=r.addLocationDataFn(o[u-1],o[u])(s[u-1].concat(s[u]));break;case 185:this.$=r.addLocationDataFn(o[u-2],o[u])([[s[u-1],s[u]]]);break;case 186:this.$=r.addLocationDataFn(o[u-3],o[u])([[s[u-2],s[u-1]]]);break;case 187:this.$=r.addLocationDataFn(o[u-2],o[u])(new r.If(s[u-1],s[u],{type:s[u-2]}));break;case 188:this.$=r.addLocationDataFn(o[u-4],o[u])(s[u-4].addElse(r.addLocationDataFn(o[u-2],o[u])(new r.If(s[u-1],s[u],{type:s[u-2]}))));break;case 190:this.$=r.addLocationDataFn(o[u-2],o[u])(s[u-2].addElse(s[u]));break;case 191:case 192:this.$=r.addLocationDataFn(o[u-2],o[u])(new r.If(s[u],r.addLocationDataFn(o[u-2])(r.Block.wrap([s[u-2]])),{type:s[u-1],statement:!0}));break;case 193:case 194:case 197:case 198:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Op(s[u-1],s[u]));break;case 195:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Op("-",s[u]));break;case 196:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Op("+",s[u]));break;case 199:this.$=r.addLocationDataFn(o[u-2],o[u])(new r.Op(s[u-2].concat(s[u-1]),s[u]));break;case 200:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Op("--",s[u]));break;case 201:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Op("++",s[u]));break;case 202:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Op("--",s[u-1],null,!0));break;case 203:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Op("++",s[u-1],null,!0));break;case 204:this.$=r.addLocationDataFn(o[u-1],o[u])(new r.Existence(s[u-1]));break;case 205:this.$=r.addLocationDataFn(o[u-2],o[u])(new r.Op("+",s[u-2],s[u]));break;case 206:this.$=r.addLocationDataFn(o[u-2],o[u])(new r.Op("-",s[u-2],s[u]));break;case 207:case 208:case 209:case 210:case 211:this.$=r.addLocationDataFn(o[u-2],o[u])(new r.Op(s[u-1],s[u-2],s[u]));break;case 212:this.$=r.addLocationDataFn(o[u-2],o[u])(function(){return"!"===s[u-1].charAt(0)?(new r.Op(s[u-1].slice(1),s[u-2],s[u])).invert():new r.Op(s[u-1],s[u-2],s[u])}());break;case 213:this.$=r.addLocationDataFn(o[u-2],o[u])(new r.Assign(s[u-2],s[u],s[u-1]));break;case 214:this.$=r.addLocationDataFn(o[u-4],o[u])(new r.Assign(s[u-4],s[u-1],s[u-3]));break;case 215:this.$=r.addLocationDataFn(o[u-3],o[u])(new r.Assign(s[u-3],s[u],s[u-2]));break;case 216:this.$=r.addLocationDataFn(o[u-2],o[u])(new r.Extends(s[u-2],s[u]))}},table:[{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{1:[3]},{1:[2,2],6:R},t(U,[2,3]),t(U,[2,6],{118:69,109:89,115:90,110:L,112:A,116:M,132:z,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(U,[2,7],{118:69,109:92,115:93,110:L,112:A,116:M,132:Z}),t(et,[2,11],{87:94,68:95,76:101,72:tt,73:nt,74:rt,75:it,77:st,80:ot,90:ut,91:at}),t(et,[2,12],{76:101,87:104,68:105,72:tt,73:nt,74:rt,75:it,77:st,80:ot,90:ut,91:at}),t(et,[2,13]),t(et,[2,14]),t(et,[2,15]),t(et,[2,16]),t(et,[2,17]),t(et,[2,18]),t(et,[2,19]),t(et,[2,20]),t(et,[2,21]),t(et,[2,22]),t(et,[2,8]),t(et,[2,9]),t(et,[2,10]),t(ft,lt,{46:[1,106]}),t(ft,[2,80]),t(ft,[2,81]),t(ft,[2,82]),t(ft,[2,83]),t([1,6,25,26,34,38,55,60,63,72,73,74,75,77,79,80,84,90,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],[2,110],{88:107,91:ct}),t([6,25,55,60],ht,{54:109,61:110,62:111,27:113,50:114,64:115,65:116,28:r,63:pt,82:b,95:dt,96:vt}),{24:119,25:mt},{7:121,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:123,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:124,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:125,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:127,8:126,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,138:[1,128],139:I,140:q},{12:130,13:131,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:132,50:63,64:47,65:48,67:129,69:23,70:24,71:25,82:b,89:E,94:S,95:x,96:T,107:k},{12:130,13:131,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:132,50:63,64:47,65:48,67:133,69:23,70:24,71:25,82:b,89:E,94:S,95:x,96:T,107:k},t(gt,yt,{86:[1,137],139:[1,134],140:[1,135],148:[1,136]}),t(et,[2,189],{127:[1,138]}),{24:139,25:mt},{24:140,25:mt},t(et,[2,155]),{24:141,25:mt},{7:142,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,143],27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(bt,[2,100],{39:22,69:23,70:24,71:25,64:47,65:48,29:49,35:51,27:62,50:63,31:72,12:130,13:131,45:132,24:144,67:146,25:mt,28:r,30:i,32:s,33:o,36:u,37:a,40:f,41:l,42:c,43:h,44:p,82:b,86:[1,145],89:E,94:S,95:x,96:T,107:k}),{7:147,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,141,142,143,144,145,146,147],[2,50],{12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,9:18,10:19,45:21,39:22,69:23,70:24,71:25,56:28,67:36,130:37,109:39,113:40,115:41,64:47,65:48,29:49,35:51,27:62,50:63,118:69,31:72,8:122,7:148,11:n,28:r,30:i,32:s,33:o,36:u,37:a,40:f,41:l,42:c,43:h,44:p,51:d,52:v,53:m,57:g,58:y,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,114:O,125:_,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q}),t(et,[2,51]),t(gt,[2,77]),t(gt,[2,78]),t(ft,[2,32]),t(ft,[2,33]),t(ft,[2,34]),t(ft,[2,35]),t(ft,[2,36]),t(ft,[2,37]),t(ft,[2,38]),{4:149,5:3,7:4,8:5,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,150],27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:151,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:wt,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,63:Et,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:w,89:E,93:153,94:S,95:x,96:T,97:St,100:154,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(ft,[2,116]),t(ft,[2,117],{27:158,28:r}),{25:[2,54]},{25:[2,55]},t(xt,[2,72]),t(xt,[2,75]),{7:159,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:160,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:161,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:163,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,24:162,25:mt,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{27:168,28:r,50:169,64:170,65:171,70:164,82:b,95:dt,96:T,120:165,121:[1,166],122:167},{119:172,123:[1,173],124:[1,174]},t([6,25,60,84],Tt,{31:72,83:175,47:176,48:177,10:178,27:179,29:180,50:181,28:r,30:i,32:s,33:o,52:v,95:dt}),t(Nt,[2,26]),t(Nt,[2,27]),t(ft,[2,30]),{12:130,13:182,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:132,50:63,64:47,65:48,67:183,69:23,70:24,71:25,82:b,89:E,94:S,95:x,96:T,107:k},t(Ct,[2,25]),t(Nt,[2,28]),{4:184,5:3,7:4,8:5,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(U,[2,5],{7:4,8:5,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,9:18,10:19,45:21,39:22,69:23,70:24,71:25,56:28,67:36,130:37,109:39,113:40,115:41,64:47,65:48,29:49,35:51,27:62,50:63,118:69,31:72,5:185,11:n,28:r,30:i,32:s,33:o,36:u,37:a,40:f,41:l,42:c,43:h,44:p,51:d,52:v,53:m,57:g,58:y,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,110:L,112:A,114:O,116:M,125:_,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q}),t(et,[2,204]),{7:186,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:187,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:188,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:189,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:190,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:191,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:192,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:193,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:194,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(et,[2,154]),t(et,[2,159]),{7:195,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(et,[2,153]),t(et,[2,158]),{88:196,91:ct},t(xt,[2,73]),{91:[2,113]},{27:197,28:r},{27:198,28:r},t(xt,[2,88],{27:199,28:r}),{27:200,28:r},t(xt,[2,89]),{7:202,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,63:kt,64:47,65:48,67:36,69:23,70:24,71:25,78:201,81:203,82:b,85:w,89:E,94:S,95:x,96:T,98:204,99:Lt,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{76:207,77:st,80:ot},{88:208,91:ct},t(xt,[2,74]),{6:[1,210],7:209,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,211],27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(At,[2,111]),{7:214,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:wt,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,63:Et,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:w,89:E,92:[1,212],93:213,94:S,95:x,96:T,100:154,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t([6,25],Ot,{59:217,55:[1,215],60:Mt}),t(_t,[2,59]),t(_t,[2,63],{46:[1,219],63:[1,218]}),t(_t,[2,66]),t(Dt,[2,67]),t(Dt,[2,68]),t(Dt,[2,69]),t(Dt,[2,70]),{27:158,28:r},{7:214,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:wt,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,63:Et,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:w,89:E,93:153,94:S,95:x,96:T,97:St,100:154,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(et,[2,53]),{4:221,5:3,7:4,8:5,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,26:[1,220],27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,135,136,142,143,144,145,146,147],[2,193],{118:69,109:89,115:90,141:V}),{109:92,110:L,112:A,115:93,116:M,118:69,132:Z},t(Pt,[2,194],{118:69,109:89,115:90,141:V,143:J}),t(Pt,[2,195],{118:69,109:89,115:90,141:V,143:J}),t(Pt,[2,196],{118:69,109:89,115:90,141:V,143:J}),t(et,[2,197],{118:69,109:92,115:93}),t(Ht,[2,198],{118:69,109:89,115:90,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),{7:222,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(et,[2,200],{72:yt,73:yt,74:yt,75:yt,77:yt,80:yt,90:yt,91:yt}),{68:95,72:tt,73:nt,74:rt,75:it,76:101,77:st,80:ot,87:94,90:ut,91:at},{68:105,72:tt,73:nt,74:rt,75:it,76:101,77:st,80:ot,87:104,90:ut,91:at},t(Bt,lt),t(et,[2,201],{72:yt,73:yt,74:yt,75:yt,77:yt,80:yt,90:yt,91:yt}),t(et,[2,202]),t(et,[2,203]),{6:[1,225],7:223,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,224],27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:226,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{24:227,25:mt,131:[1,228]},t(et,[2,138],{103:229,104:[1,230],105:[1,231]}),t(et,[2,152]),t(et,[2,160]),{25:[1,232],109:89,110:L,112:A,115:90,116:M,118:69,132:z,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y},{126:233,128:234,129:jt},t(et,[2,101]),{7:236,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(bt,[2,104],{24:237,25:mt,72:yt,73:yt,74:yt,75:yt,77:yt,80:yt,90:yt,91:yt,86:[1,238]}),t(Ht,[2,145],{118:69,109:89,115:90,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(Ht,[2,49],{118:69,109:89,115:90,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),{6:R,108:[1,239]},{4:240,5:3,7:4,8:5,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t([6,25,60,97],Ft,{118:69,109:89,115:90,98:241,63:[1,242],99:Lt,110:L,112:A,116:M,132:z,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(It,[2,119]),t([6,25,97],Ot,{59:243,60:qt}),t(Rt,[2,128]),{7:214,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:wt,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,63:Et,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:w,89:E,93:245,94:S,95:x,96:T,100:154,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(Rt,[2,134]),t(Rt,[2,135]),t(Ct,[2,118]),{24:246,25:mt,109:89,110:L,112:A,115:90,116:M,118:69,132:z,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y},t(Ut,[2,148],{118:69,109:89,115:90,110:L,111:[1,247],112:A,116:M,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(Ut,[2,150],{118:69,109:89,115:90,110:L,111:[1,248],112:A,116:M,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(et,[2,156]),t(zt,[2,157],{118:69,109:89,115:90,110:L,112:A,116:M,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,132,135,136,141,142,143,144,145,146,147],[2,161],{117:[1,249]}),t(Wt,[2,164]),{27:168,28:r,50:169,64:170,65:171,82:b,95:dt,96:vt,120:250,122:167},t(Wt,[2,170],{60:[1,251]}),t(Xt,[2,166]),t(Xt,[2,167]),t(Xt,[2,168]),t(Xt,[2,169]),t(et,[2,163]),{7:252,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:253,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t([6,25,84],Ot,{59:254,60:Vt}),t($t,[2,96]),t($t,[2,42],{49:[1,256]}),t($t,[2,45]),t(Jt,[2,46]),t(Jt,[2,47]),t(Jt,[2,48]),{38:[1,257],68:105,72:tt,73:nt,74:rt,75:it,76:101,77:st,80:ot,87:104,90:ut,91:at},t(Bt,yt),{6:R,34:[1,258]},t(U,[2,4]),t(Kt,[2,205],{118:69,109:89,115:90,141:V,142:$,143:J}),t(Kt,[2,206],{118:69,109:89,115:90,141:V,142:$,143:J}),t(Pt,[2,207],{118:69,109:89,115:90,141:V,143:J}),t(Pt,[2,208],{118:69,109:89,115:90,141:V,143:J}),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,144,145,146,147],[2,209],{118:69,109:89,115:90,135:W,136:X,141:V,142:$,143:J}),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,145,146],[2,210],{118:69,109:89,115:90,135:W,136:X,141:V,142:$,143:J,144:K,147:Y}),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,146],[2,211],{118:69,109:89,115:90,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,147:Y}),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,145,146,147],[2,212],{118:69,109:89,115:90,135:W,136:X,141:V,142:$,143:J,144:K}),t(zt,[2,192],{118:69,109:89,115:90,110:L,112:A,116:M,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(zt,[2,191],{118:69,109:89,115:90,110:L,112:A,116:M,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(At,[2,108]),t(xt,[2,84]),t(xt,[2,85]),t(xt,[2,86]),t(xt,[2,87]),{79:[1,259]},{63:kt,79:[2,92],98:260,99:Lt,109:89,110:L,112:A,115:90,116:M,118:69,132:z,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y},{79:[2,93]},{7:261,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,79:[2,127],82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(Qt,[2,121]),t(Qt,Gt),t(xt,[2,91]),t(At,[2,109]),t(Ht,[2,39],{118:69,109:89,115:90,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),{7:262,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:263,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(At,[2,114]),t([6,25,92],Ot,{59:264,60:qt}),t(Rt,Ft,{118:69,109:89,115:90,63:[1,265],110:L,112:A,116:M,132:z,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),{56:266,57:g,58:y},t(Yt,Zt,{62:111,27:113,50:114,64:115,65:116,61:267,28:r,63:pt,82:b,95:dt,96:vt}),{6:en,25:tn},t(_t,[2,64]),{7:270,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(nn,[2,23]),{6:R,26:[1,271]},t(Ht,[2,199],{118:69,109:89,115:90,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(Ht,[2,213],{118:69,109:89,115:90,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),{7:272,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:273,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(Ht,[2,216],{118:69,109:89,115:90,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(et,[2,190]),{7:274,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(et,[2,139],{104:[1,275]}),{24:276,25:mt},{24:279,25:mt,27:277,28:r,65:278,82:b},{126:280,128:234,129:jt},{26:[1,281],127:[1,282],128:283,129:jt},t(rn,[2,183]),{7:285,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,101:284,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(sn,[2,102],{118:69,109:89,115:90,24:286,25:mt,110:L,112:A,116:M,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(et,[2,105]),{7:287,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(ft,[2,146]),{6:R,26:[1,288]},{7:289,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t([11,28,30,32,33,36,37,40,41,42,43,44,51,52,53,57,58,82,85,89,94,95,96,102,106,107,110,112,114,116,125,131,133,134,135,136,137,139,140],Gt,{6:on,25:on,60:on,97:on}),{6:un,25:an,97:[1,290]},t([6,25,26,92,97],Zt,{12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,9:18,10:19,45:21,39:22,69:23,70:24,71:25,56:28,67:36,130:37,109:39,113:40,115:41,64:47,65:48,29:49,35:51,27:62,50:63,118:69,31:72,8:122,66:156,7:214,100:293,11:n,28:r,30:i,32:s,33:o,36:u,37:a,40:f,41:l,42:c,43:h,44:p,51:d,52:v,53:m,57:g,58:y,63:Et,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,110:L,112:A,114:O,116:M,125:_,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q}),t(Yt,Ot,{59:294,60:qt}),t(fn,[2,187]),{7:295,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:296,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:297,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(Wt,[2,165]),{27:168,28:r,50:169,64:170,65:171,82:b,95:dt,96:vt,122:298},t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,112,116,132],[2,172],{118:69,109:89,115:90,111:[1,299],117:[1,300],135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(ln,[2,173],{118:69,109:89,115:90,111:[1,301],135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),{6:cn,25:hn,84:[1,302]},t([6,25,26,84],Zt,{31:72,48:177,10:178,27:179,29:180,50:181,47:305,28:r,30:i,32:s,33:o,52:v,95:dt}),{7:306,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,307],27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(ft,[2,31]),t(Nt,[2,29]),t(xt,[2,90]),{7:308,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,79:[2,125],82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{79:[2,126],109:89,110:L,112:A,115:90,116:M,118:69,132:z,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y},t(Ht,[2,40],{118:69,109:89,115:90,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),{26:[1,309],109:89,110:L,112:A,115:90,116:M,118:69,132:z,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y},{6:un,25:an,92:[1,310]},t(Rt,on),{24:311,25:mt},t(_t,[2,60]),{27:113,28:r,50:114,61:312,62:111,63:pt,64:115,65:116,82:b,95:dt,96:vt},t(pn,ht,{61:110,62:111,27:113,50:114,64:115,65:116,54:313,28:r,63:pt,82:b,95:dt,96:vt}),t(_t,[2,65],{118:69,109:89,115:90,110:L,112:A,116:M,132:z,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(nn,[2,24]),{26:[1,314],109:89,110:L,112:A,115:90,116:M,118:69,132:z,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y},t(Ht,[2,215],{118:69,109:89,115:90,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),{24:315,25:mt,109:89,110:L,112:A,115:90,116:M,118:69,132:z,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y},{24:316,25:mt},t(et,[2,140]),{24:317,25:mt},{24:318,25:mt},t(dn,[2,144]),{26:[1,319],127:[1,320],128:283,129:jt},t(et,[2,181]),{24:321,25:mt},t(rn,[2,184]),{24:322,25:mt,60:[1,323]},t(vn,[2,136],{118:69,109:89,115:90,110:L,112:A,116:M,132:z,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(et,[2,103]),t(sn,[2,106],{118:69,109:89,115:90,24:324,25:mt,110:L,112:A,116:M,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),{108:[1,325]},{97:[1,326],109:89,110:L,112:A,115:90,116:M,118:69,132:z,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y},t(It,[2,120]),{7:214,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,63:Et,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,100:327,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:214,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:wt,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,63:Et,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:w,89:E,93:328,94:S,95:x,96:T,100:154,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(Rt,[2,129]),{6:un,25:an,26:[1,329]},t(zt,[2,149],{118:69,109:89,115:90,110:L,112:A,116:M,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(zt,[2,151],{118:69,109:89,115:90,110:L,112:A,116:M,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(zt,[2,162],{118:69,109:89,115:90,110:L,112:A,116:M,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(Wt,[2,171]),{7:330,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:331,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:332,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(It,[2,94]),{10:178,27:179,28:r,29:180,30:i,31:72,32:s,33:o,47:333,48:177,50:181,52:v,95:dt},t(pn,Tt,{31:72,47:176,48:177,10:178,27:179,29:180,50:181,83:334,28:r,30:i,32:s,33:o,52:v,95:dt}),t($t,[2,97]),t($t,[2,43],{118:69,109:89,115:90,110:L,112:A,116:M,132:z,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),{7:335,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{79:[2,124],109:89,110:L,112:A,115:90,116:M,118:69,132:z,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y},t(et,[2,41]),t(At,[2,115]),t(et,[2,52]),t(_t,[2,61]),t(Yt,Ot,{59:336,60:Mt}),t(et,[2,214]),t(fn,[2,188]),t(et,[2,141]),t(dn,[2,142]),t(dn,[2,143]),t(et,[2,179]),{24:337,25:mt},{26:[1,338]},t(rn,[2,185],{6:[1,339]}),{7:340,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},t(et,[2,107]),t(ft,[2,147]),t(ft,[2,123]),t(Rt,[2,130]),t(Yt,Ot,{59:341,60:qt}),t(Rt,[2,131]),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,132],[2,174],{118:69,109:89,115:90,117:[1,342],135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(ln,[2,176],{118:69,109:89,115:90,111:[1,343],135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(Ht,[2,175],{118:69,109:89,115:90,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t($t,[2,98]),t(Yt,Ot,{59:344,60:Vt}),{26:[1,345],109:89,110:L,112:A,115:90,116:M,118:69,132:z,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y},{6:en,25:tn,26:[1,346]},{26:[1,347]},t(et,[2,182]),t(rn,[2,186]),t(vn,[2,137],{118:69,109:89,115:90,110:L,112:A,116:M,132:z,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),{6:un,25:an,26:[1,348]},{7:349,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{7:350,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:r,29:49,30:i,31:72,32:s,33:o,35:51,36:u,37:a,39:22,40:f,41:l,42:c,43:h,44:p,45:21,50:63,51:d,52:v,53:m,56:28,57:g,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:w,89:E,94:S,95:x,96:T,102:N,106:C,107:k,109:39,110:L,112:A,113:40,114:O,115:41,116:M,118:69,125:_,130:37,131:D,133:P,134:H,135:B,136:j,137:F,139:I,140:q},{6:cn,25:hn,26:[1,351]},t($t,[2,44]),t(_t,[2,62]),t(et,[2,180]),t(Rt,[2,132]),t(Ht,[2,177],{118:69,109:89,115:90,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t(Ht,[2,178],{118:69,109:89,115:90,135:W,136:X,141:V,142:$,143:J,144:K,145:Q,146:G,147:Y}),t($t,[2,99])],defaultActions:{60:[2,54],61:[2,55],96:[2,113],203:[2,93]},parseError:function(e,t){if(!t.recoverable)throw Error(e);this.trace(e)},parse:function(e){function t(){var e;return e=d.lex()||h,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,r=[0],i=[null],s=[],o=this.table,u="",a=0,f=0,l=0,c=2,h=1,p=s.slice.call(arguments,1),d=Object.create(this.lexer),v={yy:{}};for(var m in this.yy)Object.prototype.hasOwnProperty.call(this.yy,m)&&(v.yy[m]=this.yy[m]);d.setInput(e,v.yy),v.yy.lexer=d,v.yy.parser=this,d.yylloc===void 0&&(d.yylloc={});var g=d.yylloc;s.push(g);var y=d.options&&d.options.ranges;this.parseError="function"==typeof v.yy.parseError?v.yy.parseError:Object.getPrototypeOf(this).parseError;for(var b,w,E,S,x,T,N,C,k,L={};;){if(E=r[r.length-1],this.defaultActions[E]?S=this.defaultActions[E]:((null===b||b===void 0)&&(b=t()),S=o[E]&&o[E][b]),S===void 0||!S.length||!S[0]){var A="";k=[];for(T in o[E])this.terminals_[T]&&T>c&&k.push("'"+this.terminals_[T]+"'");A=d.showPosition?"Parse error on line "+(a+1)+":\n"+d.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(a+1)+": Unexpected "+(b==h?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(A,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:g,expected:k})}if(S[0]instanceof Array&&S.length>1)throw Error("Parse Error: multiple actions possible at state: "+E+", token: "+b);switch(S[0]){case 1:r.push(b),i.push(d.yytext),s.push(d.yylloc),r.push(S[1]),b=null,w?(b=w,w=null):(f=d.yyleng,u=d.yytext,a=d.yylineno,g=d.yylloc,l>0&&l--);break;case 2:if(N=this.productions_[S[1]][1],L.$=i[i.length-N],L._$={first_line:s[s.length-(N||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(N||1)].first_column,last_column:s[s.length-1].last_column},y&&(L._$.range=[s[s.length-(N||1)].range[0],s[s.length-1].range[1]]),x=this.performAction.apply(L,[u,f,a,v.yy,S[1],i,s].concat(p)),x!==void 0)return x;N&&(r=r.slice(0,-2*N),i=i.slice(0,-1*N),s=s.slice(0,-1*N)),r.push(this.productions_[S[1]][0]),i.push(L.$),s.push(L._$),C=o[r[r.length-2]][r[r.length-1]],r.push(C);break;case 3:return!0}}return!0}};return e.prototype=mn,mn.Parser=e,new e}();return _dereq_!==void 0&&e!==void 0&&(e.parser=n,e.Parser=n.Parser,e.parse=function(){return n.parse.apply(n,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var n=_dereq_("fs").readFileSync(_dereq_("path").normalize(t[1]),"utf8");return e.parser.parse(n)},t!==void 0&&_dereq_.main===t&&e.main(process.argv.slice(1))),t.exports}(),_dereq_["./scope"]=function(){var e={},t={exports:e};return function(){var t,n=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1};e.Scope=t=function(){function e(e,t,n,r){var i,s;this.parent=e,this.expressions=t,this.method=n,this.referencedVars=r,this.variables=[{name:"arguments",type:"arguments"}],this.positions={},this.parent||(this.utilities={}),this.root=null!=(i=null!=(s=this.parent)?s.root:void 0)?i:this}return e.prototype.add=function(e,t,n){return this.shared&&!n?this.parent.add(e,t,n):Object.prototype.hasOwnProperty.call(this.positions,e)?this.variables[this.positions[e]].type=t:this.positions[e]=this.variables.push({name:e,type:t})-1},e.prototype.namedMethod=function(){var e;return(null!=(e=this.method)?e.name:void 0)||!this.parent?this.method:this.parent.namedMethod()},e.prototype.find=function(e){return this.check(e)?!0:(this.add(e,"var"),!1)},e.prototype.parameter=function(e){return this.shared&&this.parent.check(e,!0)?void 0:this.add(e,"param")},e.prototype.check=function(e){var t;return!!(this.type(e)||(null!=(t=this.parent)?t.check(e):void 0))},e.prototype.temporary=function(e,t,n){return null==n&&(n=!1),n?(t+parseInt(e,36)).toString(36).replace(/\d/g,"a"):e+(t||"")},e.prototype.type=function(e){var t,n,r,i;for(r=this.variables,t=0,n=r.length;n>t;t++)if(i=r[t],i.name===e)return i.type;return null},e.prototype.freeVariable=function(e,t){var r,i,s;for(null==t&&(t={}),r=0;;){if(s=this.temporary(e,r,t.single),!(this.check(s)||n.call(this.root.referencedVars,s)>=0))break;r++}return(null!=(i=t.reserve)?i:!0)&&this.add(s,"var",!0),s},e.prototype.assign=function(e,t){return this.add(e,{value:t,assigned:!0},!0),this.hasAssignments=!0},e.prototype.hasDeclarations=function(){return!!this.declaredVariables().length},e.prototype.declaredVariables=function(){var e;return function(){var t,n,r,i;for(r=this.variables,i=[],t=0,n=r.length;n>t;t++)e=r[t],"var"===e.type&&i.push(e.name);return i}.call(this).sort()},e.prototype.assignedVariables=function(){var e,t,n,r,i;for(n=this.variables,r=[],e=0,t=n.length;t>e;e++)i=n[e],i.type.assigned&&r.push(i.name+" = "+i.type.value);return r},e}()}.call(this),t.exports}(),_dereq_["./nodes"]=function(){var e={},t={exports:e};return function(){var t,n,r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y,b,w,E,S,x,T,N,C,k,L,A,O,M,_,D,P,H,B,j,F,I,q,R,U,z,W,X,V,$,J,K,Q,G,Y,Z,et,tt,nt,rt,it,st,ot,ut,at,ft,lt,ct,ht,pt,dt,vt,mt,gt,yt,bt,wt=function(e,t){function n(){this.constructor=e}for(var r in t)Et.call(t,r)&&(e[r]=t[r]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},Et={}.hasOwnProperty,St=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1},xt=[].slice;Error.stackTraceLimit=1/0,R=_dereq_("./scope").Scope,pt=_dereq_("./lexer"),B=pt.RESERVED,q=pt.STRICT_PROSCRIBED,dt=_dereq_("./helpers"),et=dt.compact,it=dt.flatten,rt=dt.extend,lt=dt.merge,tt=dt.del,mt=dt.starts,nt=dt.ends,vt=dt.some,Z=dt.addLocationDataFn,ft=dt.locationDataToString,gt=dt.throwSyntaxError,e.extend=rt,e.addLocationDataFn=Z,Y=function(){return!0},O=function(){return!1},V=function(){return this},A=function(){return this.negated=!this.negated,this},e.CodeFragment=f=function(){function e(e,t){var n;this.code=""+t,this.locationData=null!=e?e.locationData:void 0,this.type=(null!=e?null!=(n=e.constructor)?n.name:void 0:void 0)||"unknown"}return e.prototype.toString=function(){return""+this.code+(this.locationData?": "+ft(this.locationData):"")},e}(),st=function(e){var t;return function(){var n,r,i;for(i=[],n=0,r=e.length;r>n;n++)t=e[n],i.push(t.code);return i}().join("")},e.Base=i=function(){function e(){}return e.prototype.compile=function(e,t){return st(this.compileToFragments(e,t))},e.prototype.compileToFragments=function(e,t){var n;return e=rt({},e),t&&(e.level=t),n=this.unfoldSoak(e)||this,n.tab=e.indent,e.level!==k&&n.isStatement(e)?n.compileClosure(e):n.compileNode(e)},e.prototype.compileClosure=function(e){var n,r,i,u,f,l,c;return(u=this.jumps())&&u.error("cannot use a pure statement in an expression"),e.sharedScope=!0,i=new a([],s.wrap([this])),n=[],((r=this.contains(ut))||this.contains(at))&&(n=[new L("this")],r?(f="apply",n.push(new L("arguments"))):f="call",i=new Q(i,[new t(new L(f))])),l=(new o(i,n)).compileNode(e),(i.isGenerator||(null!=(c=i.base)?c.isGenerator:void 0))&&(l.unshift(this.makeCode("(yield* ")),l.push(this.makeCode(")"))),l},e.prototype.cache=function(e,t,n){var i,s,o;return i=null!=n?n(this):this.isComplex(),i?(s=new L(e.scope.freeVariable("ref")),o=new r(s,this),t?[o.compileToFragments(e,t),[this.makeCode(s.value)]]:[o,s]):(s=t?this.compileToFragments(e,t):this,[s,s])},e.prototype.cacheToCodeFragments=function(e){return[st(e[0]),st(e[1])]},e.prototype.makeReturn=function(e){var t;return t=this.unwrapAll(),e?new o(new L(e+".push"),[t]):new F(t)},e.prototype.contains=function(e){var t;return t=void 0,this.traverseChildren(!1,function(n){return e(n)?(t=n,!1):void 0}),t},e.prototype.lastNonComment=function(e){var t;for(t=e.length;t--;)if(!(e[t]instanceof l))return e[t];return null},e.prototype.toString=function(e,t){var n;return null==e&&(e=""),null==t&&(t=this.constructor.name),n="\n"+e+t,this.soak&&(n+="?"),this.eachChild(function(t){return n+=t.toString(e+X)}),n},e.prototype.eachChild=function(e){var t,n,r,i,s,o,u,a;if(!this.children)return this;for(u=this.children,r=0,s=u.length;s>r;r++)if(t=u[r],this[t])for(a=it([this[t]]),i=0,o=a.length;o>i;i++)if(n=a[i],e(n)===!1)return this;return this},e.prototype.traverseChildren=function(e,t){return this.eachChild(function(n){var r;return r=t(n),r!==!1?n.traverseChildren(e,t):void 0})},e.prototype.invert=function(){return new D("!",this)},e.prototype.unwrapAll=function(){var e;for(e=this;e!==(e=e.unwrap()););return e},e.prototype.children=[],e.prototype.isStatement=O,e.prototype.jumps=O,e.prototype.isComplex=Y,e.prototype.isChainable=O,e.prototype.isAssignable=O,e.prototype.unwrap=V,e.prototype.unfoldSoak=O,e.prototype.assigns=O,e.prototype.updateLocationDataIfMissing=function(e){return this.locationData?this:(this.locationData=e,this.eachChild(function(t){return t.updateLocationDataIfMissing(e)}))},e.prototype.error=function(e){return gt(e,this.locationData)},e.prototype.makeCode=function(e){return new f(this,e)},e.prototype.wrapInBraces=function(e){return[].concat(this.makeCode("("),e,this.makeCode(")"))},e.prototype.joinFragmentArrays=function(e,t){var n,r,i,s,o;for(n=[],i=s=0,o=e.length;o>s;i=++s)r=e[i],i&&n.push(this.makeCode(t)),n=n.concat(r);return n},e}(),e.Block=s=function(e){function t(e){this.expressions=et(it(e||[]))}return wt(t,e),t.prototype.children=["expressions"],t.prototype.push=function(e){return this.expressions.push(e),this},t.prototype.pop=function(){return this.expressions.pop()},t.prototype.unshift=function(e){return this.expressions.unshift(e),this},t.prototype.unwrap=function(){return 1===this.expressions.length?this.expressions[0]:this},t.prototype.isEmpty=function(){return!this.expressions.length},t.prototype.isStatement=function(e){var t,n,r,i;for(i=this.expressions,n=0,r=i.length;r>n;n++)if(t=i[n],t.isStatement(e))return!0;return!1},t.prototype.jumps=function(e){var t,n,r,i,s;for(s=this.expressions,n=0,i=s.length;i>n;n++)if(t=s[n],r=t.jumps(e))return r},t.prototype.makeReturn=function(e){var t,n;for(n=this.expressions.length;n--;)if(t=this.expressions[n],!(t instanceof l)){this.expressions[n]=t.makeReturn(e),t instanceof F&&!t.expression&&this.expressions.splice(n,1);break}return this},t.prototype.compileToFragments=function(e,n){return null==e&&(e={}),e.scope?t.__super__.compileToFragments.call(this,e,n):this.compileRoot(e)},t.prototype.compileNode=function(e){var n,r,i,s,o,u,a,f,l;for(this.tab=e.indent,l=e.level===k,r=[],f=this.expressions,s=o=0,u=f.length;u>o;s=++o)a=f[s],a=a.unwrapAll(),a=a.unfoldSoak(e)||a,a instanceof t?r.push(a.compileNode(e)):l?(a.front=!0,i=a.compileToFragments(e),a.isStatement(e)||(i.unshift(this.makeCode(""+this.tab)),i.push(this.makeCode(";"))),r.push(i)):r.push(a.compileToFragments(e,T));return l?this.spaced?[].concat(this.joinFragmentArrays(r,"\n\n"),this.makeCode("\n")):this.joinFragmentArrays(r,"\n"):(n=r.length?this.joinFragmentArrays(r,", "):[this.makeCode("void 0")],r.length>1&&e.level>=T?this.wrapInBraces(n):n)},t.prototype.compileRoot=function(e){var t,n,r,i,s,o,u,a,f,c,h;for(e.indent=e.bare?"":X,e.level=k,this.spaced=!0,e.scope=new R(null,this,null,null!=(f=e.referencedVars)?f:[]),c=e.locals||[],i=0,s=c.length;s>i;i++)o=c[i],e.scope.parameter(o);return u=[],e.bare||(a=function(){var e,n,i,s;for(i=this.expressions,s=[],r=e=0,n=i.length;n>e&&(t=i[r],t.unwrap()instanceof l);r=++e)s.push(t);return s}.call(this),h=this.expressions.slice(a.length),this.expressions=a,a.length&&(u=this.compileNode(lt(e,{indent:""})),u.push(this.makeCode("\n"))),this.expressions=h),n=this.compileWithDeclarations(e),e.bare?n:[].concat(u,this.makeCode("(function() {\n"),n,this.makeCode("\n}).call(this);\n"))},t.prototype.compileWithDeclarations=function(e){var t,n,r,i,s,o,u,a,f,c,h,p,d,v;for(i=[],a=[],f=this.expressions,s=o=0,u=f.length;u>o&&(r=f[s],r=r.unwrap(),r instanceof l||r instanceof L);s=++o);return e=lt(e,{level:k}),s&&(p=this.expressions.splice(s,9e9),c=[this.spaced,!1],v=c[0],this.spaced=c[1],h=[this.compileNode(e),v],i=h[0],this.spaced=h[1],this.expressions=p),a=this.compileNode(e),d=e.scope,d.expressions===this&&(n=e.scope.hasDeclarations(),t=d.hasAssignments,n||t?(s&&i.push(this.makeCode("\n")),i.push(this.makeCode(this.tab+"var ")),n&&i.push(this.makeCode(d.declaredVariables().join(", "))),t&&(n&&i.push(this.makeCode(",\n"+(this.tab+X))),i.push(this.makeCode(d.assignedVariables().join(",\n"+(this.tab+X))))),i.push(this.makeCode(";\n"+(this.spaced?"\n":"")))):i.length&&a.length&&i.push(this.makeCode("\n"))),i.concat(a)},t.wrap=function(e){return 1===e.length&&e[0]instanceof t?e[0]:new t(e)},t}(i),e.Literal=L=function(e){function t(e){this.value=e}return wt(t,e),t.prototype.makeReturn=function(){return this.isStatement()?this:t.__super__.makeReturn.apply(this,arguments)},t.prototype.isAssignable=function(){return m.test(this.value)},t.prototype.isStatement=function(){var e;return"break"===(e=this.value)||"continue"===e||"debugger"===e},t.prototype.isComplex=O,t.prototype.assigns=function(e){return e===this.value},t.prototype.jumps=function(e){return"break"!==this.value||(null!=e?e.loop:void 0)||(null!=e?e.block:void 0)?"continue"!==this.value||(null!=e?e.loop:void 0)?void 0:this:this},t.prototype.compileNode=function(e){var t,n,r;return n="this"===this.value?(null!=(r=e.scope.method)?r.bound:void 0)?e.scope.method.context:this.value:this.value.reserved?'"'+this.value+'"':this.value,t=this.isStatement()?""+this.tab+n+";":n,[this.makeCode(t)]},t.prototype.toString=function(){return' "'+this.value+'"'},t}(i),e.Undefined=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return wt(t,e),t.prototype.isAssignable=O,t.prototype.isComplex=O,t.prototype.compileNode=function(e){return[this.makeCode(e.level>=S?"(void 0)":"void 0")]},t}(i),e.Null=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return wt(t,e),t.prototype.isAssignable=O,t.prototype.isComplex=O,t.prototype.compileNode=function(){return[this.makeCode("null")]},t}(i),e.Bool=function(e){function t(e){this.val=e}return wt(t,e),t.prototype.isAssignable=O,t.prototype.isComplex=O,t.prototype.compileNode=function(){return[this.makeCode(this.val)]},t}(i),e.Return=F=function(e){function t(e){this.expression=e}return wt(t,e),t.prototype.children=["expression"],t.prototype.isStatement=Y,t.prototype.makeReturn=V,t.prototype.jumps=V,t.prototype.compileToFragments=function(e,n){var r,i;return r=null!=(i=this.expression)?i.makeReturn():void 0,!r||r instanceof t?t.__super__.compileToFragments.call(this,e,n):r.compileToFragments(e,n)},t.prototype.compileNode=function(e){var t,n,r;return t=[],n=null!=(r=this.expression)?"function"==typeof r.isYieldReturn?r.isYieldReturn():void 0:void 0,n||t.push(this.makeCode(this.tab+("return"+(this.expression?" ":"")))),this.expression&&(t=t.concat(this.expression.compileToFragments(e,C))),n||t.push(this.makeCode(";")),t},t}(i),e.Value=Q=function(e){function t(e,n,r){return!n&&e instanceof t?e:(this.base=e,this.properties=n||[],r&&(this[r]=!0),this)}return wt(t,e),t.prototype.children=["base","properties"],t.prototype.add=function(e){return this.properties=this.properties.concat(e),this},t.prototype.hasProperties=function(){return!!this.properties.length},t.prototype.bareLiteral=function(e){return!this.properties.length&&this.base instanceof e},t.prototype.isArray=function(){return this.bareLiteral(n)},t.prototype.isRange=function(){return this.bareLiteral(j)},t.prototype.isComplex=function(){return this.hasProperties()||this.base.isComplex()},t.prototype.isAssignable=function(){return this.hasProperties()||this.base.isAssignable()},t.prototype.isSimpleNumber=function(){return this.bareLiteral(L)&&I.test(this.base.value)},t.prototype.isString=function(){return this.bareLiteral(L)&&y.test(this.base.value)},t.prototype.isRegex=function(){return this.bareLiteral(L)&&g.test(this.base.value)},t.prototype.isAtomic=function(){var e,t,n,r;for(r=this.properties.concat(this.base),e=0,t=r.length;t>e;e++)if(n=r[e],n.soak||n instanceof o)return!1;return!0},t.prototype.isNotCallable=function(){return this.isSimpleNumber()||this.isString()||this.isRegex()||this.isArray()||this.isRange()||this.isSplice()||this.isObject()},t.prototype.isStatement=function(e){return!this.properties.length&&this.base.isStatement(e)},t.prototype.assigns=function(e){return!this.properties.length&&this.base.assigns(e)},t.prototype.jumps=function(e){return!this.properties.length&&this.base.jumps(e)},t.prototype.isObject=function(e){return this.properties.length?!1:this.base instanceof _&&(!e||this.base.generated)},t.prototype.isSplice=function(){var e,t;return t=this.properties,e=t[t.length-1],e instanceof U},t.prototype.looksStatic=function(e){var t;return this.base.value===e&&1===this.properties.length&&"prototype"!==(null!=(t=this.properties[0].name)?t.value:void 0)},t.prototype.unwrap=function(){return this.properties.length?this:this.base},t.prototype.cacheReference=function(e){var n,i,s,o,u;return u=this.properties,s=u[u.length-1],2>this.properties.length&&!this.base.isComplex()&&(null!=s?!s.isComplex():!void 0)?[this,this]:(n=new t(this.base,this.properties.slice(0,-1)),n.isComplex()&&(i=new L(e.scope.freeVariable("base")),n=new t(new H(new r(i,n)))),s?(s.isComplex()&&(o=new L(e.scope.freeVariable("name")),s=new E(new r(o,s.index)),o=new E(o)),[n.add(s),new t(i||n.base,[o||s])]):[n,i])},t.prototype.compileNode=function(e){var t,n,r,i,s;for(this.base.front=this.front,s=this.properties,t=this.base.compileToFragments(e,s.length?S:null),(this.base instanceof H||s.length)&&I.test(st(t))&&t.push(this.makeCode(".")),n=0,r=s.length;r>n;n++)i=s[n],t.push.apply(t,i.compileToFragments(e));return t},t.prototype.unfoldSoak=function(e){return null!=this.unfoldedSoak?this.unfoldedSoak:this.unfoldedSoak=function(n){return function(){var i,s,o,u,a,f,l,h,p,d;if(o=n.base.unfoldSoak(e))return(h=o.body.properties).push.apply(h,n.properties),o;for(p=n.properties,s=u=0,a=p.length;a>u;s=++u)if(f=p[s],f.soak)return f.soak=!1,i=new t(n.base,n.properties.slice(0,s)),d=new t(n.base,n.properties.slice(s)),i.isComplex()&&(l=new L(e.scope.freeVariable("ref")),i=new H(new r(l,i)),d.base=l),new b(new c(i),d,{soak:!0});return!1}}(this)()},t}(i),e.Comment=l=function(e){function t(e){this.comment=e}return wt(t,e),t.prototype.isStatement=Y,t.prototype.makeReturn=V,t.prototype.compileNode=function(e,t){var n,r;return r=this.comment.replace(/^(\s*)#(?=\s)/gm,"$1 *"),n="/*"+ct(r,this.tab)+(St.call(r,"\n")>=0?"\n"+this.tab:"")+" */",(t||e.level)===k&&(n=e.indent+n),[this.makeCode("\n"),this.makeCode(n)]},t}(i),e.Call=o=function(e){function n(e,t,n){this.args=null!=t?t:[],this.soak=n,this.isNew=!1,this.isSuper="super"===e,this.variable=this.isSuper?null:e,e instanceof Q&&e.isNotCallable()&&e.error("literal is not a function")}return wt(n,e),n.prototype.children=["variable","args"],n.prototype.newInstance=function(){var e,t;return e=(null!=(t=this.variable)?t.base:void 0)||this.variable,e instanceof n&&!e.isNew?e.newInstance():this.isNew=!0,this},n.prototype.superReference=function(e){var n,i,s,o,u,a,f,l;return u=e.scope.namedMethod(),(null!=u?u.klass:void 0)?(o=u.klass,a=u.name,l=u.variable,o.isComplex()&&(s=new L(e.scope.parent.freeVariable("base")),i=new Q(new H(new r(s,o))),l.base=i,l.properties.splice(0,o.properties.length)),(a.isComplex()||a instanceof E&&a.index.isAssignable())&&(f=new L(e.scope.parent.freeVariable("name")),a=new E(new r(f,a.index)),l.properties.pop(),l.properties.push(a)),n=[new t(new L("__super__"))],u["static"]&&n.push(new t(new L("constructor"))),n.push(null!=f?new E(f):a),(new Q(null!=s?s:o,n)).compile(e)):(null!=u?u.ctor:void 0)?u.name+".__super__.constructor":this.error("cannot call super outside of an instance method.")},n.prototype.superThis=function(e){var t;return t=e.scope.method,t&&!t.klass&&t.context||"this"},n.prototype.unfoldSoak=function(e){var t,r,i,s,o,u,a,f,l;if(this.soak){if(this.variable){if(r=yt(e,this,"variable"))return r;a=(new Q(this.variable)).cacheReference(e),s=a[0],l=a[1]}else s=new L(this.superReference(e)),l=new Q(s);return l=new n(l,this.args),l.isNew=this.isNew,s=new L("typeof "+s.compile(e)+' === "function"'),new b(s,new Q(l),{soak:!0})}for(t=this,u=[];;)if(t.variable instanceof n)u.push(t),t=t.variable;else{if(!(t.variable instanceof Q))break;if(u.push(t),!((t=t.variable.base)instanceof n))break}for(f=u.reverse(),i=0,o=f.length;o>i;i++)t=f[i],r&&(t.variable instanceof n?t.variable=r:t.variable.base=r),r=yt(e,t,"variable");return r},n.prototype.compileNode=function(e){var t,n,r,i,s,o,u,a,f,l;if(null!=(f=this.variable)&&(f.front=this.front),i=z.compileSplattedArray(e,this.args,!0),i.length)return this.compileSplat(e,i);for(r=[],l=this.args,n=o=0,u=l.length;u>o;n=++o)t=l[n],n&&r.push(this.makeCode(", ")),r.push.apply(r,t.compileToFragments(e,T));return s=[],this.isSuper?(a=this.superReference(e)+(".call("+this.superThis(e)),r.length&&(a+=", "),s.push(this.makeCode(a))):(this.isNew&&s.push(this.makeCode("new ")),s.push.apply(s,this.variable.compileToFragments(e,S)),s.push(this.makeCode("("))),s.push.apply(s,r),s.push(this.makeCode(")")),s},n.prototype.compileSplat=function(e,t){var n,r,i,s,o,u;return this.isSuper?[].concat(this.makeCode(this.superReference(e)+".apply("+this.superThis(e)+", "),t,this.makeCode(")")):this.isNew?(s=this.tab+X,[].concat(this.makeCode("(function(func, args, ctor) {\n"+s+"ctor.prototype = func.prototype;\n"+s+"var child = new ctor, result = func.apply(child, args);\n"+s+"return Object(result) === result ? result : child;\n"+this.tab+"})("),this.variable.compileToFragments(e,T),this.makeCode(", "),t,this.makeCode(", function(){})"))):(n=[],r=new Q(this.variable),(o=r.properties.pop())&&r.isComplex()?(u=e.scope.freeVariable("ref"),n=n.concat(this.makeCode("("+u+" = "),r.compileToFragments(e,T),this.makeCode(")"),o.compileToFragments(e))):(i=r.compileToFragments(e,S),I.test(st(i))&&(i=this.wrapInBraces(i)),o?(u=st(i),i.push.apply(i,o.compileToFragments(e))):u="null",n=n.concat(i)),n=n.concat(this.makeCode(".apply("+u+", "),t,this.makeCode(")")))},n}(i),e.Extends=p=function(e){function t(e,t){this.child=e,this.parent=t}return wt(t,e),t.prototype.children=["child","parent"],t.prototype.compileToFragments=function(e){return(new o(new Q(new L(bt("extend",e))),[this.child,this.parent])).compileToFragments(e)},t}(i),e.Access=t=function(e){function t(e,t){this.name=e,this.name.asKey=!0,this.soak="soak"===t}return wt(t,e),t.prototype.children=["name"],t.prototype.compileToFragments=function(e){var t;return t=this.name.compileToFragments(e),m.test(st(t))?t.unshift(this.makeCode(".")):(t.unshift(this.makeCode("[")),t.push(this.makeCode("]"))),t},t.prototype.isComplex=O,t}(i),e.Index=E=function(e){function t(e){this.index=e}return wt(t,e),t.prototype.children=["index"],t.prototype.compileToFragments=function(e){return[].concat(this.makeCode("["),this.index.compileToFragments(e,C),this.makeCode("]"))},t.prototype.isComplex=function(){return this.index.isComplex()},t}(i),e.Range=j=function(e){function t(e,t,n){this.from=e,this.to=t,this.exclusive="exclusive"===n,this.equals=this.exclusive?"":"="}return wt(t,e),t.prototype.children=["from","to"],t.prototype.compileVariables=function(e){var t,n,r,i,s,o;return e=lt(e,{top:!0}),t=tt(e,"isComplex"),n=this.cacheToCodeFragments(this.from.cache(e,T,t)),this.fromC=n[0],this.fromVar=n[1],r=this.cacheToCodeFragments(this.to.cache(e,T,t)),this.toC=r[0],this.toVar=r[1],(o=tt(e,"step"))&&(i=this.cacheToCodeFragments(o.cache(e,T,t)),this.step=i[0],this.stepVar=i[1]),s=[this.fromVar.match(M),this.toVar.match(M)],this.fromNum=s[0],this.toNum=s[1],this.stepVar?this.stepNum=this.stepVar.match(M):void 0},t.prototype.compileNode=function(e){var t,n,r,i,s,o,u,a,f,l,c,h,p,d;return this.fromVar||this.compileVariables(e),e.index?(u=this.fromNum&&this.toNum,s=tt(e,"index"),o=tt(e,"name"),f=o&&o!==s,d=s+" = "+this.fromC,this.toC!==this.toVar&&(d+=", "+this.toC),this.step!==this.stepVar&&(d+=", "+this.step),l=[s+" <"+this.equals,s+" >"+this.equals],a=l[0],i=l[1],n=this.stepNum?ht(this.stepNum[0])>0?a+" "+this.toVar:i+" "+this.toVar:u?(c=[ht(this.fromNum[0]),ht(this.toNum[0])],r=c[0],p=c[1],c,p>=r?a+" "+p:i+" "+p):(t=this.stepVar?this.stepVar+" > 0":this.fromVar+" <= "+this.toVar,t+" ? "+a+" "+this.toVar+" : "+i+" "+this.toVar),h=this.stepVar?s+" += "+this.stepVar:u?f?p>=r?"++"+s:"--"+s:p>=r?s+"++":s+"--":f?t+" ? ++"+s+" : --"+s:t+" ? "+s+"++ : "+s+"--",f&&(d=o+" = "+d),f&&(h=o+" = "+h),[this.makeCode(d+"; "+n+"; "+h)]):this.compileArray(e)},t.prototype.compileArray=function(e){var t,n,r,i,s,o,u,a,f,l,c,h,p;return this.fromNum&&this.toNum&&20>=Math.abs(this.fromNum-this.toNum)?(f=function(){h=[];for(var e=l=+this.fromNum,t=+this.toNum;t>=l?t>=e:e>=t;t>=l?e++:e--)h.push(e);return h}.apply(this),this.exclusive&&f.pop(),[this.makeCode("["+f.join(", ")+"]")]):(o=this.tab+X,s=e.scope.freeVariable("i",{single:!0}),c=e.scope.freeVariable("results"),a="\n"+o+c+" = [];",this.fromNum&&this.toNum?(e.index=s,n=st(this.compileNode(e))):(p=s+" = "+this.fromC+(this.toC!==this.toVar?", "+this.toC:""),r=this.fromVar+" <= "+this.toVar,n="var "+p+"; "+r+" ? "+s+" <"+this.equals+" "+this.toVar+" : "+s+" >"+this.equals+" "+this.toVar+"; "+r+" ? "+s+"++ : "+s+"--"),u="{ "+c+".push("+s+"); }\n"+o+"return "+c+";\n"+e.indent,i=function(e){return null!=e?e.contains(ut):void 0},(i(this.from)||i(this.to))&&(t=", arguments"),[this.makeCode("(function() {"+a+"\n"+o+"for ("+n+")"+u+"}).apply(this"+(null!=t?t:"")+")")])},t}(i),e.Slice=U=function(e){function t(e){this.range=e,t.__super__.constructor.call(this)}return wt(t,e),t.prototype.children=["range"],t.prototype.compileNode=function(e){var t,n,r,i,s,o,u;return s=this.range,o=s.to,r=s.from,i=r&&r.compileToFragments(e,C)||[this.makeCode("0")],o&&(t=o.compileToFragments(e,C),n=st(t),(this.range.exclusive||-1!==+n)&&(u=", "+(this.range.exclusive?n:I.test(n)?""+(+n+1):(t=o.compileToFragments(e,S),"+"+st(t)+" + 1 || 9e9")))),[this.makeCode(".slice("+st(i)+(u||"")+")")]},t}(i),e.Obj=_=function(e){function n(e,t){this.generated=null!=t?t:!1,this.objects=this.properties=e||[]}return wt(n,e),n.prototype.children=["properties"],n.prototype.compileNode=function(e){var n,i,s,o,u,a,f,c,h,p,d,v,m,g,y,b,w,E,S,x,T;if(S=this.properties,this.generated)for(f=0,m=S.length;m>f;f++)b=S[f],b instanceof Q&&b.error("cannot have an implicit value in an implicit object");for(i=h=0,g=S.length;g>h&&(E=S[i],!((E.variable||E).base instanceof H));i=++h);for(s=S.length>i,u=e.indent+=X,v=this.lastNonComment(this.properties),n=[],s&&(w=e.scope.freeVariable("obj"),n.push(this.makeCode("(\n"+u+w+" = "))),n.push(this.makeCode("{"+(0===S.length||0===i?"}":"\n"))),o=d=0,y=S.length;y>d;o=++d)E=S[o],o===i&&(0!==o&&n.push(this.makeCode("\n"+u+"}")),n.push(this.makeCode(",\n"))),c=o===S.length-1||o===i-1?"":E===v||E instanceof l?"\n":",\n",a=E instanceof l?"":u,s&&i>o&&(a+=X),E instanceof r&&E.variable instanceof Q&&E.variable.hasProperties()&&E.variable.error("invalid object key"),E instanceof Q&&E["this"]&&(E=new r(E.properties[0].name,E,"object")),E instanceof l||(i>o?(E instanceof r||(E=new r(E,E,"object")),(E.variable.base||E.variable).asKey=!0):(E instanceof r?(p=E.variable,T=E.value):(x=E.base.cache(e),p=x[0],T=x[1]),E=new r(new Q(new L(w),[new t(p)]),T))),a&&n.push(this.makeCode(a)),n.push.apply(n,E.compileToFragments(e,k)),c&&n.push(this.makeCode(c));return s?n.push(this.makeCode(",\n"+u+w+"\n"+this.tab+")")):0!==S.length&&n.push(this.makeCode("\n"+this.tab+"}")),this.front&&!s?this.wrapInBraces(n):n},n.prototype.assigns=function(e){var t,n,r,i;for(i=this.properties,t=0,n=i.length;n>t;t++)if(r=i[t],r.assigns(e))return!0;return!1},n}(i),e.Arr=n=function(e){function t(e){this.objects=e||[]}return wt(t,e),t.prototype.children=["objects"],t.prototype.compileNode=function(e){var t,n,r,i,s,o,u;if(!this.objects.length)return[this.makeCode("[]")];if(e.indent+=X,t=z.compileSplattedArray(e,this.objects),t.length)return t;for(t=[],n=function(){var t,n,r,i;for(r=this.objects,i=[],t=0,n=r.length;n>t;t++)u=r[t],i.push(u.compileToFragments(e,T));return i}.call(this),i=s=0,o=n.length;o>s;i=++s)r=n[i],i&&t.push(this.makeCode(", ")),t.push.apply(t,r);return st(t).indexOf("\n")>=0?(t.unshift(this.makeCode("[\n"+e.indent)),t.push(this.makeCode("\n"+this.tab+"]"))):(t.unshift(this.makeCode("[")),t.push(this.makeCode("]"))),t},t.prototype.assigns=function(e){var t,n,r,i;for(i=this.objects,t=0,n=i.length;n>t;t++)if(r=i[t],r.assigns(e))return!0;return!1},t}(i),e.Class=u=function(e){function n(e,t,n){this.variable=e,this.parent=t,this.body=null!=n?n:new s,this.boundFuncs=[],this.body.classBody=!0}return wt(n,e),n.prototype.children=["variable","parent","body"],n.prototype.determineName=function(){var e,n,r;return this.variable?(n=this.variable.properties,r=n[n.length-1],e=r?r instanceof t&&r.name.value:this.variable.base.value,St.call(q,e)>=0&&this.variable.error("class variable name may not be "+e),e&&(e=m.test(e)&&e)):null},n.prototype.setContext=function(e){return this.body.traverseChildren(!1,function(t){return t.classBody?!1:t instanceof L&&"this"===t.value?t.value=e:t instanceof a&&t.bound?t.context=e:void 0})},n.prototype.addBoundFunctions=function(e){var n,r,i,s,o;for(o=this.boundFuncs,r=0,i=o.length;i>r;r++)n=o[r],s=(new Q(new L("this"),[new t(n)])).compile(e),this.ctor.body.unshift(new L(s+" = "+bt("bind",e)+"("+s+", this)"))},n.prototype.addProperties=function(e,n,i){var s,o,u,f,l,c;return c=e.base.properties.slice(0),f=function(){var e;for(e=[];o=c.shift();)o instanceof r&&(u=o.variable.base,delete o.context,l=o.value,"constructor"===u.value?(this.ctor&&o.error("cannot define more than one constructor in a class"),l.bound&&o.error("cannot define a constructor as a bound function"),l instanceof a?o=this.ctor=l:(this.externalCtor=i.classScope.freeVariable("class"),o=new r(new L(this.externalCtor),l))):o.variable["this"]?l["static"]=!0:(s=u.isComplex()?new E(u):new t(u),o.variable=new Q(new L(n),[new t(new L("prototype")),s]),l instanceof a&&l.bound&&(this.boundFuncs.push(u),l.bound=!1))),e.push(o);return e}.call(this),et(f)},n.prototype.walkBody=function(e,t){return this.traverseChildren(!1,function(i){return function(o){var u,a,f,l,c,h,p;if(u=!0,o instanceof n)return!1;if(o instanceof s){for(p=a=o.expressions,f=l=0,c=p.length;c>l;f=++l)h=p[f],h instanceof r&&h.variable.looksStatic(e)?h.value["static"]=!0:h instanceof Q&&h.isObject(!0)&&(u=!1,a[f]=i.addProperties(h,e,t));o.expressions=a=it(a)}return u&&!(o instanceof n)}}(this))},n.prototype.hoistDirectivePrologue=function(){var e,t,n;for(t=0,e=this.body.expressions;(n=e[t])&&n instanceof l||n instanceof Q&&n.isString();)++t;return this.directives=e.splice(0,t)},n.prototype.ensureConstructor=function(e){return this.ctor||(this.ctor=new a,this.externalCtor?this.ctor.body.push(new L(this.externalCtor+".apply(this, arguments)")):this.parent&&this.ctor.body.push(new L(e+".__super__.constructor.apply(this, arguments)")),this.ctor.body.makeReturn(),this.body.expressions.unshift(this.ctor)),this.ctor.ctor=this.ctor.name=e,this.ctor.klass=null,this.ctor.noReturn=!0},n.prototype.compileNode=function(e){var t,n,i,u,f,l,c,h,d;return(u=this.body.jumps())&&u.error("Class bodies cannot contain pure statements"),(n=this.body.contains(ut))&&n.error("Class bodies shouldn't reference arguments"),c=this.determineName()||"_Class",c.reserved&&(c="_"+c),l=new L(c),i=new a([],s.wrap([this.body])),t=[],e.classScope=i.makeScope(e.scope),this.hoistDirectivePrologue(),this.setContext(c),this.walkBody(c,e),this.ensureConstructor(c),this.addBoundFunctions(e),this.body.spaced=!0,this.body.expressions.push(l),this.parent&&(d=new L(e.classScope.freeVariable("superClass",{reserve:!1})),this.body.expressions.unshift(new p(l,d)),i.params.push(new P(d)),t.push(this.parent)),(h=this.body.expressions).unshift.apply(h,this.directives),f=new H(new o(i,t)),this.variable&&(f=new r(this.variable,f)),f.compileToFragments(e)},n}(i),e.Assign=r=function(e){function n(e,t,n,r){var i,s,o;this.variable=e,this.value=t,this.context=n,this.param=r&&r.param,this.subpattern=r&&r.subpattern,o=s=this.variable.unwrapAll().value,i=St.call(q,o)>=0,i&&"object"!==this.context&&this.variable.error('variable name may not be "'+s+'"')}return wt(n,e),n.prototype.children=["variable","value"],n.prototype.isStatement=function(e){return(null!=e?e.level:void 0)===k&&null!=this.context&&St.call(this.context,"?")>=0},n.prototype.assigns=function(e){return this["object"===this.context?"value":"variable"].assigns(e)},n.prototype.unfoldSoak=function(e){return yt(e,this,"variable")},n.prototype.compileNode=function(e){var t,n,r,i,s,o,u,f,l,c,h,p,d,v;if(r=this.variable instanceof Q){if(this.variable.isArray()||this.variable.isObject())return this.compilePatternMatch(e);if(this.variable.isSplice())return this.compileSplice(e);if("||="===(f=this.context)||"&&="===f||"?="===f)return this.compileConditional(e);if("**="===(l=this.context)||"//="===l||"%%="===l)return this.compileSpecialMath(e)}return this.value instanceof a&&(this.value["static"]?(this.value.klass=this.variable.base,this.value.name=this.variable.properties[0],this.value.variable=this.variable):(null!=(c=this.variable.properties)?c.length:void 0)>=2&&(h=this.variable.properties,o=h.length>=3?xt.call(h,0,i=h.length-2):(i=0,[]),u=h[i++],s=h[i++],"prototype"===(null!=(p=u.name)?p.value:void 0)&&(this.value.klass=new Q(this.variable.base,o),this.value.name=s,this.value.variable=this.variable))),this.context||(v=this.variable.unwrapAll(),v.isAssignable()||this.variable.error('"'+this.variable.compile(e)+'" cannot be assigned'),("function"==typeof v.hasProperties?v.hasProperties():void 0)||(this.param?e.scope.add(v.value,"var"):e.scope.find(v.value))),d=this.value.compileToFragments(e,T),n=this.variable.compileToFragments(e,T),"object"===this.context?n.concat(this.makeCode(": "),d):(t=n.concat(this.makeCode(" "+(this.context||"=")+" "),d),T>=e.level?t:this.wrapInBraces(t))},n.prototype.compilePatternMatch=function(e){var r,i,s,o,u,a,f,l,c,p,d,v,g,y,b,w,S,x,C,A,O,M,_,D,P,j,F,I;if(D=e.level===k,j=this.value,y=this.variable.base.objects,!(b=y.length))return s=j.compileToFragments(e),e.level>=N?this.wrapInBraces(s):s;if(l=this.variable.isObject(),!D||1!==b||(g=y[0])instanceof z){for(F=j.compileToFragments(e,T),I=st(F),i=[],o=!1,(!m.test(I)||this.variable.assigns(I))&&(i.push([this.makeCode((w=e.scope.freeVariable("ref"))+" = ")].concat(xt.call(F))),F=[this.makeCode(w)],I=w),a=p=0,d=y.length;d>p;a=++p){if(g=y[a],f=a,l&&(g instanceof n?(A=g,O=A.variable,f=O.base,g=A.value):g.base instanceof H?(M=(new Q(g.unwrapAll())).cacheReference(e),g=M[0],f=M[1]):f=g["this"]?g.properties[0].name:g),!o&&g instanceof z)v=g.name.unwrap().value,g=g.unwrap(),P=b+" <= "+I+".length ? "+bt("slice",e)+".call("+I+", "+a,(_=b-a-1)?(c=e.scope.freeVariable("i",{single:!0}),P+=", "+c+" = "+I+".length - "+_+") : ("+c+" = "+a+", [])"):P+=") : []",P=new L(P),o=c+"++";else{if(!o&&g instanceof h){(_=b-a-1)&&(1===_?o=I+".length - 1":(c=e.scope.freeVariable("i",{single:!0}),P=new L(c+" = "+I+".length - "+_),o=c+"++",i.push(P.compileToFragments(e,T))));continue}v=g.unwrap().value,(g instanceof z||g instanceof h)&&g.error("multiple splats/expansions are disallowed in an assignment"),"number"==typeof f?(f=new L(o||f),r=!1):r=l&&m.test(f.unwrap().value||0),P=new Q(new L(I),[new(r?t:E)(f)])}null!=v&&St.call(B,v)>=0&&g.error("assignment to a reserved word: "+g.compile(e)),i.push((new n(g,P,null,{param:this.param,subpattern:!0})).compileToFragments(e,T))}return D||this.subpattern||i.push(F),u=this.joinFragmentArrays(i,", "),T>e.level?u:this.wrapInBraces(u)}return g instanceof n?(S=g,x=S.variable,f=x.base,g=S.value):f=l?g["this"]?g.properties[0].name:g:new L(0),r=m.test(f.unwrap().value||0),j=new Q(j),j.properties.push(new(r?t:E)(f)),C=g.unwrap().value,St.call(B,C)>=0&&g.error("assignment to a reserved word: "+g.compile(e)),(new n(g,j,null,{param:this.param})).compileToFragments(e,k)},n.prototype.compileConditional=function(e){var t,r,i,s;return i=this.variable.cacheReference(e),r=i[0],s=i[1],!r.properties.length&&r.base instanceof L&&"this"!==r.base.value&&!e.scope.check(r.base.value)&&this.variable.error('the variable "'+r.base.value+"\" can't be assigned with "+this.context+" because it has not been declared before"),St.call(this.context,"?")>=0?(e.isExistentialEquals=!0,(new b(new c(r),s,{type:"if"})).addElse(new n(s,this.value,"=")).compileToFragments(e)):(t=(new D(this.context.slice(0,-1),r,new n(s,this.value,"="))).compileToFragments(e),T>=e.level?t:this.wrapInBraces(t))},n.prototype.compileSpecialMath=function(e){var t,r,i;return r=this.variable.cacheReference(e),t=r[0],i=r[1],(new n(t,new D(this.context.slice(0,-1),i,this.value))).compileToFragments(e)},n.prototype.compileSplice=function(e){var t,n,r,i,s,o,u,a,f,l,c,h;return u=this.variable.properties.pop().range,r=u.from,l=u.to,n=u.exclusive,o=this.variable.compile(e),r?(a=this.cacheToCodeFragments(r.cache(e,N)),i=a[0],s=a[1]):i=s="0",l?r instanceof Q&&r.isSimpleNumber()&&l instanceof Q&&l.isSimpleNumber()?(l=l.compile(e)-s,n||(l+=1)):(l=l.compile(e,S)+" - "+s,n||(l+=" + 1")):l="9e9",f=this.value.cache(e,T),c=f[0],h=f[1],t=[].concat(this.makeCode("[].splice.apply("+o+", ["+i+", "+l+"].concat("),c,this.makeCode(")), "),h),e.level>k?this.wrapInBraces(t):t},n}(i),e.Code=a=function(e){function t(e,t,n){this.params=e||[],this.body=t||new s,this.bound="boundfunc"===n,this.isGenerator=!!this.body.contains(function(e){var t;return e instanceof D&&("yield"===(t=e.operator)||"yield*"===t)})}return wt(t,e),t.prototype.children=["params","body"],t.prototype.isStatement=function(){return!!this.ctor},t.prototype.jumps=O,t.prototype.makeScope=function(e){return new R(e,this.body,this)},t.prototype.compileNode=function(e){var i,u,a,f,l,c,p,d,v,m,g,y,w,E,x,T,N,C,k,A,O,M,_,H,B,j,F,I,q,R,U,z,W;if(this.bound&&(null!=(_=e.scope.method)?_.bound:void 0)&&(this.context=e.scope.method.context),this.bound&&!this.context)return this.context="_this",W=new t([new P(new L(this.context))],new s([this])),u=new o(W,[new L("this")]),u.updateLocationDataIfMissing(this.locationData),u.compileNode(e);for(e.scope=tt(e,"classScope")||this.makeScope(e.scope),e.scope.shared=tt(e,"sharedScope"),e.indent+=X,delete e.bare,delete e.isExistentialEquals,k=[],f=[],H=this.params,c=0,v=H.length;v>c;c++)C=H[c],C instanceof h||e.scope.parameter(C.asReference(e));for(B=this.params,p=0,m=B.length;m>p;p++)if(C=B[p],C.splat||C instanceof h){for(j=this.params,d=0,g=j.length;g>d;d++)N=j[d],N instanceof h||!N.name.value||e.scope.add(N.name.value,"var",!0);q=new r(new Q(new n(function(){var t,n,r,i;for(r=this.params,i=[],n=0,t=r.length;t>n;n++)N=r[n],i.push(N.asReference(e));return i}.call(this))),new Q(new L("arguments")));break}for(F=this.params,T=0,y=F.length;y>T;T++)C=F[T],C.isComplex()?(U=M=C.asReference(e),C.value&&(U=new D("?",M,C.value)),f.push(new r(new Q(C.name),U,"=",{param:!0}))):(M=C,C.value&&(x=new L(M.name.value+" == null"),U=new r(new Q(C.name),C.value,"="),f.push(new b(x,U)))),q||k.push(M);for(z=this.body.isEmpty(),q&&f.unshift(q),f.length&&(I=this.body.expressions).unshift.apply(I,f),l=A=0,w=k.length;w>A;l=++A)N=k[l],k[l]=N.compileToFragments(e),e.scope.parameter(st(k[l]));for(R=[],this.eachParamName(function(e,t){return St.call(R,e)>=0&&t.error("multiple parameters named "+e),R.push(e)}),z||this.noReturn||this.body.makeReturn(),a="function",this.isGenerator&&(a+="*"),this.ctor&&(a+=" "+this.name),a+="(",i=[this.makeCode(a)],l=O=0,E=k.length;E>O;l=++O)N=k[l],l&&i.push(this.makeCode(", ")),i.push.apply(i,N);return i.push(this.makeCode(") {")),this.body.isEmpty()||(i=i.concat(this.makeCode("\n"),this.body.compileWithDeclarations(e),this.makeCode("\n"+this.tab))),i.push(this.makeCode("}")),this.ctor?[this.makeCode(this.tab)].concat(xt.call(i)):this.front||e.level>=S?this.wrapInBraces(i):i},t.prototype.eachParamName=function(e){var t,n,r,i,s;for(i=this.params,s=[],t=0,n=i.length;n>t;t++)r=i[t],s.push(r.eachName(e));return s},t.prototype.traverseChildren=function(e,n){return e?t.__super__.traverseChildren.call(this,e,n):void 0},t}(i),e.Param=P=function(e){function t(e,t,n){var r,i;this.name=e,this.value=t,this.splat=n,i=r=this.name.unwrapAll().value,St.call(q,i)>=0&&this.name.error('parameter name "'+r+'" is not allowed')}return wt(t,e),t.prototype.children=["name","value"],t.prototype.compileToFragments=function(e){return this.name.compileToFragments(e,T)},t.prototype.asReference=function(e){var t,n;return this.reference?this.reference:(n=this.name,n["this"]?(t=n.properties[0].name.value,t.reserved&&(t="_"+t),n=new L(e.scope.freeVariable(t))):n.isComplex()&&(n=new L(e.scope.freeVariable("arg"))),n=new Q(n),this.splat&&(n=new z(n)),n.updateLocationDataIfMissing(this.locationData),this.reference=n)},t.prototype.isComplex=function(){return this.name.isComplex()},t.prototype.eachName=function(e,t){var n,i,s,o,u,a;if(null==t&&(t=this.name),n=function(t){return e("@"+t.properties[0].name.value,t)},t instanceof L)return e(t.value,t);if(t instanceof Q)return n(t);for(a=t.objects,i=0,s=a.length;s>i;i++)u=a[i],u instanceof r?this.eachName(e,u.value.unwrap()):u instanceof z?(o=u.name.unwrap(),e(o.value,o)):u instanceof Q?u.isArray()||u.isObject()?this.eachName(e,u.base):u["this"]?n(u):e(u.base.value,u.base):u instanceof h||u.error("illegal parameter "+u.compile())},t}(i),e.Splat=z=function(e){function t(e){this.name=e.compile?e:new L(e)}return wt(t,e),t.prototype.children=["name"],t.prototype.isAssignable=Y,t.prototype.assigns=function(e){return this.name.assigns(e)},t.prototype.compileToFragments=function(e){return this.name.compileToFragments(e)},t.prototype.unwrap=function(){return this.name},t.compileSplattedArray=function(e,n,r){var i,s,o,u,a,f,l,c,h,p,d;for(l=-1;(d=n[++l])&&!(d instanceof t););if(l>=n.length)return[];if(1===n.length)return d=n[0],a=d.compileToFragments(e,T),r?a:[].concat(d.makeCode(bt("slice",e)+".call("),a,d.makeCode(")"));for(i=n.slice(l),f=c=0,p=i.length;p>c;f=++c)d=i[f],o=d.compileToFragments(e,T),i[f]=d instanceof t?[].concat(d.makeCode(bt("slice",e)+".call("),o,d.makeCode(")")):[].concat(d.makeCode("["),o,d.makeCode("]"));return 0===l?(d=n[0],u=d.joinFragmentArrays(i.slice(1),", "),i[0].concat(d.makeCode(".concat("),u,d.makeCode(")"))):(s=function(){var t,r,i,s;for(i=n.slice(0,l),s=[],t=0,r=i.length;r>t;t++)d=i[t],s.push(d.compileToFragments(e,T));return s}(),s=n[0].joinFragmentArrays(s,", "),u=n[l].joinFragmentArrays(i,", "),h=n[n.length-1],[].concat(n[0].makeCode("["),s,n[l].makeCode("].concat("),u,h.makeCode(")")))},t}(i),e.Expansion=h=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return wt(t,e),t.prototype.isComplex=O,t.prototype.compileNode=function(){return this.error("Expansion must be used inside a destructuring assignment or parameter list")},t.prototype.asReference=function(){return this},t.prototype.eachName=function(){},t}(i),e.While=G=function(e){function t(e,t){this.condition=(null!=t?t.invert:void 0)?e.invert():e,this.guard=null!=t?t.guard:void 0}return wt(t,e),t.prototype.children=["condition","guard","body"],t.prototype.isStatement=Y,t.prototype.makeReturn=function(e){return e?t.__super__.makeReturn.apply(this,arguments):(this.returns=!this.jumps({loop:!0}),this)},t.prototype.addBody=function(e){return this.body=e,this},t.prototype.jumps=function(){var e,t,n,r,i;if(e=this.body.expressions,!e.length)return!1;for(t=0,r=e.length;r>t;t++)if(i=e[t],n=i.jumps({loop:!0}))return n;return!1},t.prototype.compileNode=function(e){var t,n,r,i;return e.indent+=X,i="",n=this.body,n.isEmpty()?n=this.makeCode(""):(this.returns&&(n.makeReturn(r=e.scope.freeVariable("results")),i=""+this.tab+r+" = [];\n"),this.guard&&(n.expressions.length>1?n.expressions.unshift(new b((new H(this.guard)).invert(),new L("continue"))):this.guard&&(n=s.wrap([new b(this.guard,n)]))),n=[].concat(this.makeCode("\n"),n.compileToFragments(e,k),this.makeCode("\n"+this.tab))),t=[].concat(this.makeCode(i+this.tab+"while ("),this.condition.compileToFragments(e,C),this.makeCode(") {"),n,this.makeCode("}")),this.returns&&t.push(this.makeCode("\n"+this.tab+"return "+r+";")),t},t}(i),e.Op=D=function(e){function n(e,t,n,r){if("in"===e)return new w(t,n);if("do"===e)return this.generateDo(t);if("new"===e){if(t instanceof o&&!t["do"]&&!t.isNew)return t.newInstance();(t instanceof a&&t.bound||t["do"])&&(t=new H(t))}return this.operator=i[e]||e,this.first=t,this.second=n,this.flip=!!r,this}var i,s;return wt(n,e),i={"==":"===","!=":"!==",of:"in",yieldfrom:"yield*"},s={"!==":"===","===":"!=="},n.prototype.children=["first","second"],n.prototype.isSimpleNumber=O,n.prototype.isYield=function(){var e;return"yield"===(e=this.operator)||"yield*"===e},n.prototype.isYieldReturn=function(){return this.isYield()&&this.first instanceof F},n.prototype.isUnary=function(){return!this.second},n.prototype.isComplex=function(){var e;return!(this.isUnary()&&("+"===(e=this.operator)||"-"===e)&&this.first instanceof Q&&this.first.isSimpleNumber())},n.prototype.isChainable=function(){var e;return"<"===(e=this.operator)||">"===e||">="===e||"<="===e||"==="===e||"!=="===e},n.prototype.invert=function(){var e,t,r,i,o;if(this.isChainable()&&this.first.isChainable()){for(e=!0,t=this;t&&t.operator;)e&&(e=t.operator in s),t=t.first;if(!e)return(new H(this)).invert();for(t=this;t&&t.operator;)t.invert=!t.invert,t.operator=s[t.operator],t=t.first;return this}return(i=s[this.operator])?(this.operator=i,this.first.unwrap()instanceof n&&this.first.invert(),this):this.second?(new H(this)).invert():"!"===this.operator&&(r=this.first.unwrap())instanceof n&&("!"===(o=r.operator)||"in"===o||"instanceof"===o)?r:new n("!",this)},n.prototype.unfoldSoak=function(e){var t;return("++"===(t=this.operator)||"--"===t||"delete"===t)&&yt(e,this,"first")},n.prototype.generateDo=function(e){var t,n,i,s,u,f,l,c;for(f=[],n=e instanceof r&&(l=e.value.unwrap())instanceof a?l:e,c=n.params||[],i=0,s=c.length;s>i;i++)u=c[i],u.value?(f.push(u.value),delete u.value):f.push(u);return t=new o(e,f),t["do"]=!0,t},n.prototype.compileNode=function(e){var t,n,r,i,s,o;if(n=this.isChainable()&&this.first.isChainable(),n||(this.first.front=this.front),"delete"===this.operator&&e.scope.check(this.first.unwrapAll().value)&&this.error("delete operand may not be argument or var"),("--"===(i=this.operator)||"++"===i)&&(s=this.first.unwrapAll().value,St.call(q,s)>=0)&&this.error('cannot increment/decrement "'+this.first.unwrapAll().value+'"'),this.isYield())return this.compileYield(e);if(this.isUnary())return this.compileUnary(e);if(n)return this.compileChain(e);switch(this.operator){case"?":return this.compileExistence(e);case"**":return this.compilePower(e);case"//":return this.compileFloorDivision(e);case"%%":return this.compileModulo(e);default:return r=this.first.compileToFragments(e,N),o=this.second.compileToFragments(e,N),t=[].concat(r,this.makeCode(" "+this.operator+" "),o),N>=e.level?t:this.wrapInBraces(t)}},n.prototype.compileChain=function(e){var t,n,r,i;return r=this.first.second.cache(e),this.first.second=r[0],i=r[1],n=this.first.compileToFragments(e,N),t=n.concat(this.makeCode(" "+(this.invert?"&&":"||")+" "),i.compileToFragments(e),this.makeCode(" "+this.operator+" "),this.second.compileToFragments(e,N)),this.wrapInBraces(t)},n.prototype.compileExistence=function(e){var t,n;return this.first.isComplex()?(n=new L(e.scope.freeVariable("ref")),t=new H(new r(n,this.first))):(t=this.first,n=t),(new b(new c(t),n,{type:"if"})).addElse(this.second).compileToFragments(e)},n.prototype.compileUnary=function(e){var t,r,i;return r=[],t=this.operator,r.push([this.makeCode(t)]),"!"===t&&this.first instanceof c?(this.first.negated=!this.first.negated,this.first.compileToFragments(e)):e.level>=S?(new H(this)).compileToFragments(e):(i="+"===t||"-"===t,("new"===t||"typeof"===t||"delete"===t||i&&this.first instanceof n&&this.first.operator===t)&&r.push([this.makeCode(" ")]),(i&&this.first instanceof n||"new"===t&&this.first.isStatement(e))&&(this.first=new H(this.first)),r.push(this.first.compileToFragments(e,N)),this.flip&&r.reverse(),this.joinFragmentArrays(r,""))},n.prototype.compileYield=function(e){var t,n;return n=[],t=this.operator,null==e.scope.parent&&this.error("yield statements must occur within a function generator."),St.call(Object.keys(this.first),"expression")>=0&&!(this.first instanceof $)?this.isYieldReturn()?n.push(this.first.compileToFragments(e,k)):null!=this.first.expression&&n.push(this.first.expression.compileToFragments(e,N)):(n.push([this.makeCode("("+t+" ")]),n.push(this.first.compileToFragments(e,N)),n.push([this.makeCode(")")])),this.joinFragmentArrays(n,"")},n.prototype.compilePower=function(e){var n;return n=new Q(new L("Math"),[new t(new L("pow"))]),(new o(n,[this.first,this.second])).compileToFragments(e)},n.prototype.compileFloorDivision=function(e){var r,i;return i=new Q(new L("Math"),[new t(new L("floor"))]),r=new n("/",this.first,this.second),(new o(i,[r])).compileToFragments(e)},n.prototype.compileModulo=function(e){var t;return t=new Q(new L(bt("modulo",e))),(new o(t,[this.first,this.second])).compileToFragments(e)},n.prototype.toString=function(e){return n.__super__.toString.call(this,e,this.constructor.name+" "+this.operator)},n}(i),e.In=w=function(e){function t(e,t){this.object=e,this.array=t}return wt(t,e),t.prototype.children=["object","array"],t.prototype.invert=A,t.prototype.compileNode=function(e){var t,n,r,i,s;if(this.array instanceof Q&&this.array.isArray()&&this.array.base.objects.length){for(s=this.array.base.objects,n=0,r=s.length;r>n;n++)if(i=s[n],i instanceof z){t=!0;break}if(!t)return this.compileOrTest(e)}return this.compileLoopTest(e)},t.prototype.compileOrTest=function(e){var t,n,r,i,s,o,u,a,f,l,c,h;for(a=this.object.cache(e,N),c=a[0],u=a[1],f=this.negated?[" !== "," && "]:[" === "," || "],t=f[0],n=f[1],h=[],l=this.array.base.objects,r=s=0,o=l.length;o>s;r=++s)i=l[r],r&&h.push(this.makeCode(n)),h=h.concat(r?u:c,this.makeCode(t),i.compileToFragments(e,S));return N>e.level?h:this.wrapInBraces(h)},t.prototype.compileLoopTest=function(e){var t,n,r,i;return r=this.object.cache(e,T),i=r[0],n=r[1],t=[].concat(this.makeCode(bt("indexOf",e)+".call("),this.array.compileToFragments(e,T),this.makeCode(", "),n,this.makeCode(") "+(this.negated?"< 0":">= 0"))),st(i)===st(n)?t:(t=i.concat(this.makeCode(", "),t),T>e.level?t:this.wrapInBraces(t))},t.prototype.toString=function(e){return t.__super__.toString.call(this,e,this.constructor.name+(this.negated?"!":""))},t}(i),e.Try=J=function(e){function t(e,t,n,r){this.attempt=e,this.errorVariable=t,this.recovery=n,this.ensure=r}return wt(t,e),t.prototype.children=["attempt","recovery","ensure"],t.prototype.isStatement=Y,t.prototype.jumps=function(e){var t;return this.attempt.jumps(e)||(null!=(t=this.recovery)?t.jumps(e):void 0)},t.prototype.makeReturn=function(e){return this.attempt&&(this.attempt=this.attempt.makeReturn(e)),this.recovery&&(this.recovery=this.recovery.makeReturn(e)),this},t.prototype.compileNode=function(e){var t,n,i,s;return e.indent+=X,s=this.attempt.compileToFragments(e,k),t=this.recovery?(i=new L("_error"),this.errorVariable?this.recovery.unshift(new r(this.errorVariable,i)):void 0,[].concat(this.makeCode(" catch ("),i.compileToFragments(e),this.makeCode(") {\n"),this.recovery.compileToFragments(e,k),this.makeCode("\n"+this.tab+"}"))):this.ensure||this.recovery?[]:[this.makeCode(" catch (_error) {}")],n=this.ensure?[].concat(this.makeCode(" finally {\n"),this.ensure.compileToFragments(e,k),this.makeCode("\n"+this.tab+"}")):[],[].concat(this.makeCode(this.tab+"try {\n"),s,this.makeCode("\n"+this.tab+"}"),t,n)},t}(i),e.Throw=$=function(e){function t(e){this.expression=e}return wt(t,e),t.prototype.children=["expression"],t.prototype.isStatement=Y,t.prototype.jumps=O,t.prototype.makeReturn=V,t.prototype.compileNode=function(e){return[].concat(this.makeCode(this.tab+"throw "),this.expression.compileToFragments(e),this.makeCode(";"))},t}(i),e.Existence=c=function(e){function t(e){this.expression=e}return wt(t,e),t.prototype.children=["expression"],t.prototype.invert=A,t.prototype.compileNode=function(e){var t,n,r,i;return this.expression.front=this.front,r=this.expression.compile(e,N),m.test(r)&&!e.scope.check(r)?(i=this.negated?["===","||"]:["!==","&&"],t=i[0],n=i[1],r="typeof "+r+" "+t+' "undefined" '+n+" "+r+" "+t+" null"):r=r+" "+(this.negated?"==":"!=")+" null",[this.makeCode(x>=e.level?r:"("+r+")")]},t}(i),e.Parens=H=function(e){function t(e){this.body=e}return wt(t,e),t.prototype.children=["body"],t.prototype.unwrap=function(){return this.body},t.prototype.isComplex=function(){return this.body.isComplex()},t.prototype.compileNode=function(e){var t,n,r;return n=this.body.unwrap(),n instanceof Q&&n.isAtomic()?(n.front=this.front,n.compileToFragments(e)):(r=n.compileToFragments(e,C),t=N>e.level&&(n instanceof D||n instanceof o||n instanceof d&&n.returns),t?r:this.wrapInBraces(r))},t}(i),e.For=d=function(e){function t(e,t){var n;this.source=t.source,this.guard=t.guard,this.step=t.step,this.name=t.name,this.index=t.index,this.body=s.wrap([e]),this.own=!!t.own,this.object=!!t.object,this.object&&(n=[this.index,this.name],this.name=n[0],this.index=n[1]),this.index instanceof Q&&this.index.error("index cannot be a pattern matching expression"),this.range=this.source instanceof Q&&this.source.base instanceof j&&!this.source.properties.length,this.pattern=this.name instanceof Q,this.range&&this.index&&this.index.error("indexes do not apply to range loops"),this.range&&this.pattern&&this.name.error("cannot pattern match over range loops"),this.own&&!this.object&&this.name.error("cannot use own with for-in"),this.returns=!1}return wt(t,e),t.prototype.children=["body","source","guard","step"],t.prototype.compileNode=function(e){var t,n,i,o,u,a,f,l,c,h,p,d,v,g,y,w,E,S,x,N,C,A,O,_,D,P,B,j,I,q,R,U,z,W;return t=s.wrap([this.body]),O=t.expressions,S=O[O.length-1],(null!=S?S.jumps():void 0)instanceof F&&(this.returns=!1),I=this.range?this.source.base:this.source,j=e.scope,this.pattern||(N=this.name&&this.name.compile(e,T)),g=this.index&&this.index.compile(e,T),N&&!this.pattern&&j.find(N),g&&j.find(g),this.returns&&(B=j.freeVariable("results")),y=this.object&&g||j.freeVariable("i",{single:!0}),w=this.range&&N||g||y,E=w!==y?w+" = ":"",this.step&&!this.range&&(_=this.cacheToCodeFragments(this.step.cache(e,T,ot)),q=_[0],U=_[1],R=U.match(M)),this.pattern&&(N=y),W="",p="",f="",d=this.tab+X,this.range?h=I.compileToFragments(lt(e,{index:y,name:N,step:this.step,isComplex:ot})):(z=this.source.compile(e,T),!N&&!this.own||m.test(z)||(f+=""+this.tab+(A=j.freeVariable("ref"))+" = "+z+";\n",z=A),N&&!this.pattern&&(C=N+" = "+z+"["+w+"]"),this.object||(q!==U&&(f+=""+this.tab+q+";\n"),this.step&&R&&(c=0>ht(R[0]))||(x=j.freeVariable("len")),u=""+E+y+" = 0, "+x+" = "+z+".length",a=""+E+y+" = "+z+".length - 1",i=y+" < "+x,o=y+" >= 0",this.step?(R?c&&(i=o,u=a):(i=U+" > 0 ? "+i+" : "+o,u="("+U+" > 0 ? ("+u+") : "+a+")"),v=y+" += "+U):v=""+(w!==y?"++"+y:y+"++"),h=[this.makeCode(u+"; "+i+"; "+E+v)])),this.returns&&(D=""+this.tab+B+" = [];\n",P="\n"+this.tab+"return "+B+";",t.makeReturn(B)),this.guard&&(t.expressions.length>1?t.expressions.unshift(new b((new H(this.guard)).invert(),new L("continue"))):this.guard&&(t=s.wrap([new b(this.guard,t)]))),this.pattern&&t.expressions.unshift(new r(this.name,new L(z+"["+w+"]"))),l=[].concat(this.makeCode(f),this.pluckDirectCall(e,t)),C&&(W="\n"+d+C+";"),this.object&&(h=[this.makeCode(w+" in "+z)],this.own&&(p="\n"+d+"if (!"+bt("hasProp",e)+".call("+z+", "+w+")) continue;")),n=t.compileToFragments(lt(e,{indent:d}),k),n&&n.length>0&&(n=[].concat(this.makeCode("\n"),n,this.makeCode("\n"))),[].concat(l,this.makeCode(""+(D||"")+this.tab+"for ("),h,this.makeCode(") {"+p+W),n,this.makeCode(this.tab+"}"+(P||"")))},t.prototype.pluckDirectCall=function(e,t){var n,i,s,u,f,l,c,h,p,d,v,m,g,y,b,w;for(i=[],p=t.expressions,f=l=0,c=p.length;c>l;f=++l)s=p[f],s=s.unwrapAll(),s instanceof o&&(w=null!=(d=s.variable)?d.unwrapAll():void 0,(w instanceof a||w instanceof Q&&(null!=(v=w.base)?v.unwrapAll():void 0)instanceof a&&1===w.properties.length&&("call"===(m=null!=(g=w.properties[0].name)?g.value:void 0)||"apply"===m))&&(u=(null!=(y=w.base)?y.unwrapAll():void 0)||w,h=new L(e.scope.freeVariable("fn")),n=new Q(h),w.base&&(b=[n,w],w.base=b[0],n=b[1]),t.expressions[f]=new o(n,s.args),i=i.concat(this.makeCode(this.tab),(new r(h,u)).compileToFragments(e,k),this.makeCode(";\n"))));return i},t}(G),e.Switch=W=function(e){function t(e,t,n){this.subject=e,this.cases=t,this.otherwise=n}return wt(t,e),t.prototype.children=["subject","cases","otherwise"],t.prototype.isStatement=Y,t.prototype.jumps=function(e){var t,n,r,i,s,o,u,a;for(null==e&&(e={block:!0}),o=this.cases,r=0,s=o.length;s>r;r++)if(u=o[r],n=u[0],t=u[1],i=t.jumps(e))return i;return null!=(a=this.otherwise)?a.jumps(e):void 0},t.prototype.makeReturn=function(e){var t,n,r,i,o;for(i=this.cases,t=0,n=i.length;n>t;t++)r=i[t],r[1].makeReturn(e);return e&&(this.otherwise||(this.otherwise=new s([new L("void 0")]))),null!=(o=this.otherwise)&&o.makeReturn(e),this},t.prototype.compileNode=function(e){var t,n,r,i,s,o,u,a,f,l,c,h,p,d,v,m;for(a=e.indent+X,f=e.indent=a+X,o=[].concat(this.makeCode(this.tab+"switch ("),this.subject?this.subject.compileToFragments(e,C):this.makeCode("false"),this.makeCode(") {\n")),d=this.cases,u=l=0,h=d.length;h>l;u=++l){for(v=d[u],i=v[0],t=v[1],m=it([i]),c=0,p=m.length;p>c;c++)r=m[c],this.subject||(r=r.invert()),o=o.concat(this.makeCode(a+"case "),r.compileToFragments(e,C),this.makeCode(":\n"));if((n=t.compileToFragments(e,k)).length>0&&(o=o.concat(n,this.makeCode("\n"))),u===this.cases.length-1&&!this.otherwise)break;s=this.lastNonComment(t.expressions),s instanceof F||s instanceof L&&s.jumps()&&"debugger"!==s.value||o.push(r.makeCode(f+"break;\n"))}return this.otherwise&&this.otherwise.expressions.length&&o.push.apply(o,[this.makeCode(a+"default:\n")].concat(xt.call(this.otherwise.compileToFragments(e,k)),[this.makeCode("\n")])),o.push(this.makeCode(this.tab+"}")),o},t}(i),e.If=b=function(e){function t(e,t,n){this.body=t,null==n&&(n={}),this.condition="unless"===n.type?e.invert():e,this.elseBody=null,this.isChain=!1,this.soak=n.soak}return wt(t,e),t.prototype.children=["condition","body","elseBody"],t.prototype.bodyNode=function(){var e;return null!=(e=this.body)?e.unwrap():void 0},t.prototype.elseBodyNode=function(){var e;return null!=(e=this.elseBody)?e.unwrap():void 0},t.prototype.addElse=function(e){return this.isChain?this.elseBodyNode().addElse(e):(this.isChain=e instanceof t,this.elseBody=this.ensureBlock(e),this.elseBody.updateLocationDataIfMissing(e.locationData)),this},t.prototype.isStatement=function(e){var t;return(null!=e?e.level:void 0)===k||this.bodyNode().isStatement(e)||(null!=(t=this.elseBodyNode())?t.isStatement(e):void 0)},t.prototype.jumps=function(e){var t;return this.body.jumps(e)||(null!=(t=this.elseBody)?t.jumps(e):void 0)},t.prototype.compileNode=function(e){return this.isStatement(e)?this.compileStatement(e):this.compileExpression(e)},t.prototype.makeReturn=function(e){return e&&(this.elseBody||(this.elseBody=new s([new L("void 0")]))),this.body&&(this.body=new s([this.body.makeReturn(e)])),this.elseBody&&(this.elseBody=new s([this.elseBody.makeReturn(e)])),this},t.prototype.ensureBlock=function(e){return e instanceof s?e:new s([e])},t.prototype.compileStatement=function(e){var n,r,i,s,o,u,a;return i=tt(e,"chainChild"),(o=tt(e,"isExistentialEquals"))?(new t(this.condition.invert(),this.elseBodyNode(),{type:"if"})).compileToFragments(e):(a=e.indent+X,s=this.condition.compileToFragments(e,C),r=this.ensureBlock(this.body).compileToFragments(lt(e,{indent:a})),u=[].concat(this.makeCode("if ("),s,this.makeCode(") {\n"),r,this.makeCode("\n"+this.tab+"}")),i||u.unshift(this.makeCode(this.tab)),this.elseBody?(n=u.concat(this.makeCode(" else ")),this.isChain?(e.chainChild=!0,n=n.concat(this.elseBody.unwrap().compileToFragments(e,k))):n=n.concat(this.makeCode("{\n"),this.elseBody.compileToFragments(lt(e,{indent:a}),k),this.makeCode("\n"+this.tab+"}")),n):u)},t.prototype.compileExpression=function(e){var t,n,r,i;return r=this.condition.compileToFragments(e,x),n=this.bodyNode().compileToFragments(e,T),t=this.elseBodyNode()?this.elseBodyNode().compileToFragments(e,T):[this.makeCode("void 0")],i=r.concat(this.makeCode(" ? "),n,this.makeCode(" : "),t),e.level>=x?this.wrapInBraces(i):i},t.prototype.unfoldSoak=function(){return this.soak&&this},t}(i),K={extend:function(e){return"function(child, parent) { for (var key in parent) { if ("+bt("hasProp",e)+".call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }"},bind:function(){return"function(fn, me){ return function(){ return fn.apply(me, arguments); }; }"},indexOf:function(){return"[].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }"},modulo:function(){return"function(a, b) { return (+a % (b = +b) + b) % b; }"},hasProp:function(){return"{}.hasOwnProperty"},slice:function(){return"[].slice"}},k=1,C=2,T=3,x=4,N=5,S=6,X=" ",m=/^(?!\d)[$\w\x7f-\uffff]+$/,I=/^[+-]?\d+$/,v=/^[+-]?0x[\da-f]+/i,M=/^[+-]?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)$/i,y=/^['"]/,g=/^\//,bt=function(e,t){var n,r;return r=t.scope.root,e in r.utilities?r.utilities[e]:(n=r.freeVariable(e),r.assign(n,K[e](t)),r.utilities[e]=n)},ct=function(e,t){return e=e.replace(/\n/g,"$&"+t),e.replace(/\s+$/,"")},ht=function(e){return null==e?0:e.match(v)?parseInt(e,16):parseFloat(e)},ut=function(e){return e instanceof L&&"arguments"===e.value&&!e.asKey},at=function(e){return e instanceof L&&"this"===e.value&&!e.asKey||e instanceof a&&e.bound||e instanceof o&&e.isSuper},ot=function(e){return e.isComplex()||("function"==typeof e.isAssignable?e.isAssignable():void 0)},yt=function(e,t,n){var r;if(r=t[n].unfoldSoak(e))return t[n]=r.body,r.body=new Q(t),r}}.call(this),t.exports}(),_dereq_["./sourcemap"]=function(){var e={},t={exports:e};return function(){var e,n;e=function(){function e(e){this.line=e,this.columns=[]}return e.prototype.add=function(e,t,n){var r,i;return i=t[0],r=t[1],null==n&&(n={}),this.columns[e]&&n.noReplace?void 0:this.columns[e]={line:this.line,column:e,sourceLine:i,sourceColumn:r}},e.prototype.sourceLocation=function(e){for(var t;!((t=this.columns[e])||0>=e);)e--;return t&&[t.sourceLine,t.sourceColumn]},e}(),n=function(){function t(){this.lines=[]}var n,r,i,s;return t.prototype.add=function(t,n,r){var i,s,o,u;return null==r&&(r={}),o=n[0],s=n[1],u=(i=this.lines)[o]||(i[o]=new e(o)),u.add(s,t,r)},t.prototype.sourceLocation=function(e){var t,n,r;for(n=e[0],t=e[1];!((r=this.lines[n])||0>=n);)n--;return r&&r.sourceLocation(t)},t.prototype.generate=function(e,t){var n,r,i,s,o,u,a,f,l,c,h,p,d,v,m,g;for(null==e&&(e={}),null==t&&(t=null),g=0,s=0,u=0,o=0,p=!1,n="",d=this.lines,c=r=0,a=d.length;a>r;c=++r)if(l=d[c])for(v=l.columns,i=0,f=v.length;f>i;i++)if(h=v[i]){for(;h.line>g;)s=0,p=!1,n+=";",g++;p&&(n+=",",p=!1),n+=this.encodeVlq(h.column-s),s=h.column,n+=this.encodeVlq(0),n+=this.encodeVlq(h.sourceLine-u),u=h.sourceLine,n+=this.encodeVlq(h.sourceColumn-o),o=h.sourceColumn,p=!0}return m={version:3,file:e.generatedFile||"",sourceRoot:e.sourceRoot||"",sources:e.sourceFiles||[""],names:[],mappings:n},e.inline&&(m.sourcesContent=[t]),JSON.stringify(m,null,2)},i=5,r=1<<i,s=r-1,t.prototype.encodeVlq=function(e){var t,n,o,u;for(t="",o=0>e?1:0,u=(Math.abs(e)<<1)+o;u||!t;)n=u&s,u>>=i,u&&(n|=r),t+=this.encodeBase64(n);return t},n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t.prototype.encodeBase64=function(e){return n[e]||function(){throw Error("Cannot Base64 encode value: "+e)}()},t}(),t.exports=n}.call(this),t.exports}(),_dereq_["./coffee-script"]=function(){var e={},t={exports:e};return function(){var t,n,r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y,b={}.hasOwnProperty,w=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1};if(u=_dereq_("fs"),g=_dereq_("vm"),d=_dereq_("path"),t=_dereq_("./lexer").Lexer,p=_dereq_("./parser").parser,f=_dereq_("./helpers"),n=_dereq_("./sourcemap"),e.VERSION="1.9.3",e.FILE_EXTENSIONS=[".coffee",".litcoffee",".coffee.md"],e.helpers=f,y=function(e){return function(t,n){var r;null==n&&(n={});try{return e.call(this,t,n)}catch(i){throw(r=i,"string"!=typeof t)?r:f.updateSyntaxError(r,t,n.filename)}}},e.compile=i=y(function(e,t){var r,i,s,o,u,a,l,c,d,v,m,g,y,b,w;for(g=f.merge,o=f.extend,t=o({},t),t.sourceMap&&(m=new n),w=h.tokenize(e,t),t.referencedVars=function(){var e,t,n;for(n=[],e=0,t=w.length;t>e;e++)b=w[e],b.variable&&n.push(b[1]);return n}(),a=p.parse(w).compileToFragments(t),s=0,t.header&&(s+=1),t.shiftLine&&(s+=1),i=0,d="",c=0,v=a.length;v>c;c++)u=a[c],t.sourceMap&&(u.locationData&&!/^[;\s]*$/.test(u.code)&&m.add([u.locationData.first_line,u.locationData.first_column],[s,i],{noReplace:!0}),y=f.count(u.code,"\n"),s+=y,y?i=u.code.length-(u.code.lastIndexOf("\n")+1):i+=u.code.length),d+=u.code;return t.header&&(l="Generated by CoffeeScript "+this.VERSION,d="// "+l+"\n"+d),t.sourceMap?(r={js:d},r.sourceMap=m,r.v3SourceMap=m.generate(t,e),r):d}),e.tokens=y(function(e,t){return h.tokenize(e,t)}),e.nodes=y(function(e,t){return"string"==typeof e?p.parse(h.tokenize(e,t)):p.parse(e)}),e.run=function(e,t){var n,r,s,o;return null==t&&(t={}),s=_dereq_.main,s.filename=process.argv[1]=t.filename?u.realpathSync(t.filename):".",s.moduleCache&&(s.moduleCache={}),r=t.filename?d.dirname(u.realpathSync(t.filename)):u.realpathSync("."),s.paths=_dereq_("module")._nodeModulePaths(r),(!f.isCoffee(s.filename)||_dereq_.extensions)&&(n=i(e,t),e=null!=(o=n.js)?o:n),s._compile(e,s.filename)},e.eval=function(e,t){var n,r,s,o,u,a,f,l,c,h,p,v,m,y,w,E,S;if(null==t&&(t={}),e=e.trim()){if(o=null!=(v=g.Script.createContext)?v:g.createContext,a=null!=(m=g.isContext)?m:function(){return t.sandbox instanceof o().constructor},o){if(null!=t.sandbox){if(a(t.sandbox))E=t.sandbox;else{E=o(),y=t.sandbox;for(l in y)b.call(y,l)&&(S=y[l],E[l]=S)}E.global=E.root=E.GLOBAL=E}else E=global;if(E.__filename=t.filename||"eval",E.__dirname=d.dirname(E.__filename),E===global&&!E.module&&!E.require){for(n=_dereq_("module"),E.module=r=new n(t.modulename||"eval"),E.require=s=function(e){return n._load(e,r,!0)},r.filename=E.__filename,w=Object.getOwnPropertyNames(_dereq_),u=0,c=w.length;c>u;u++)p=w[u],"paths"!==p&&(s[p]=_dereq_[p]);s.paths=r.paths=n._nodeModulePaths(process.cwd()),s.resolve=function(e){return n._resolveFilename(e,r)}}}h={};for(l in t)b.call(t,l)&&(S=t[l],h[l]=S);return h.bare=!0,f=i(e,h),E===global?g.runInThisContext(f):g.runInContext(f,E)}},e.register=function(){return _dereq_("./register")},_dereq_.extensions)for(v=this.FILE_EXTENSIONS,l=0,c=v.length;c>l;l++)s=v[l],null==(r=_dereq_.extensions)[s]&&(r[s]=function(){throw Error("Use CoffeeScript.register() or require the coffee-script/register module to require "+s+" files.")});e._compileFile=function(e,t){var n,r,s,o;null==t&&(t=!1),s=u.readFileSync(e,"utf8"),o=65279===s.charCodeAt(0)?s.substring(1):s;try{n=i(o,{filename:e,sourceMap:t,literate:f.isLiterate(e)})}catch(a){throw r=a,f.updateSyntaxError(r,o,e)}return n},h=new t,p.lexer={lex:function(){var e,t;return t=p.tokens[this.pos++],t?(e=t[0],this.yytext=t[1],this.yylloc=t[2],p.errorToken=t.origin||t,this.yylineno=this.yylloc.first_line):e="",e},setInput:function(e){return p.tokens=e,this.pos=0},upcomingInput:function(){return""}},p.yy=_dereq_("./nodes"),p.yy.parseError=function(e,t){var n,r,i,s,o,u;return o=t.token,s=p.errorToken,u=p.tokens,r=s[0],i=s[1],n=s[2],i=function(){switch(!1){case s!==u[u.length-1]:return"end of input";case"INDENT"!==r&&"OUTDENT"!==r:return"indentation";case"IDENTIFIER"!==r&&"NUMBER"!==r&&"STRING"!==r&&"STRING_START"!==r&&"REGEX"!==r&&"REGEX_START"!==r:return r.replace(/_START$/,"").toLowerCase();default:return f.nameWhitespaceCharacter(i)}}(),f.throwSyntaxError("unexpected "+i,n)},o=function(e,t){var n,r,i,s,o,u,a,f,l,c,h,p;return s=void 0,i="",e.isNative()?i="native":(e.isEval()?(s=e.getScriptNameOrSourceURL(),s||(i=e.getEvalOrigin()+", ")):s=e.getFileName(),s||(s="<anonymous>"),f=e.getLineNumber(),r=e.getColumnNumber(),c=t(s,f,r),i=c?s+":"+c[0]+":"+c[1]:s+":"+f+":"+r),o=e.getFunctionName(),u=e.isConstructor(),a=!e.isToplevel()&&!u,a?(l=e.getMethodName(),p=e.getTypeName(),o?(h=n="",p&&o.indexOf(p)&&(h=p+"."),l&&o.indexOf("."+l)!==o.length-l.length-1&&(n=" [as "+l+"]"),""+h+o+n+" ("+i+")"):p+"."+(l||"<anonymous>")+" ("+i+")"):u?"new "+(o||"<anonymous>")+" ("+i+")":o?o+" ("+i+")":i},m={},a=function(t){var n,r;if(m[t])return m[t];if(r=null!=d?d.extname(t):void 0,!(0>w.call(e.FILE_EXTENSIONS,r)))return n=e._compileFile(t,!0),m[t]=n.sourceMap},Error.prepareStackTrace=function(t,n){var r,i,s;return s=function(e,t,n){var r,i;return i=a(e),i&&(r=i.sourceLocation([t-1,n-1])),r?[r[0]+1,r[1]+1]:null},i=function(){var t,i,u;for(u=[],t=0,i=n.length;i>t&&(r=n[t],r.getFunction()!==e.run);t++)u.push(" at "+o(r,s));return u}(),""+t+"\n"+i.join("\n")+"\n"}}.call(this),t.exports}(),_dereq_["./browser"]=function(){var exports={},module={exports:exports};return function(){var CoffeeScript,compile,runScripts,indexOf=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1};CoffeeScript=_dereq_("./coffee-script"),CoffeeScript.require=_dereq_,compile=CoffeeScript.compile,CoffeeScript.eval=function(code,options){return null==options&&(options={}),null==options.bare&&(options.bare=!0),eval(compile(code,options))},CoffeeScript.run=function(e,t){return null==t&&(t={}),t.bare=!0,t.shiftLine=!0,Function(compile(e,t))()},"undefined"!=typeof window&&null!==window&&("undefined"!=typeof btoa&&null!==btoa&&"undefined"!=typeof JSON&&null!==JSON&&"undefined"!=typeof unescape&&null!==unescape&&"undefined"!=typeof encodeURIComponent&&null!==encodeURIComponent&&(compile=function(e,t){var n,r,i;return null==t&&(t={}),t.sourceMap=!0,t.inline=!0,r=CoffeeScript.compile(e,t),n=r.js,i=r.v3SourceMap,n+"\n//# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(i)))+"\n//# sourceURL=coffeescript"}),CoffeeScript.load=function(e,t,n,r){var i;return null==n&&(n={}),null==r&&(r=!1),n.sourceFiles=[e],i=window.ActiveXObject?new window.ActiveXObject("Microsoft.XMLHTTP"):new window.XMLHttpRequest,i.open("GET",e,!0),"overrideMimeType"in i&&i.overrideMimeType("text/plain"),i.onreadystatechange=function(){var s,o;if(4===i.readyState){if(0!==(o=i.status)&&200!==o)throw Error("Could not load "+e);if(s=[i.responseText,n],r||CoffeeScript.run.apply(CoffeeScript,s),t)return t(s)}},i.send(null)},runScripts=function(){var e,t,n,r,i,s,o,u,a,f,l;for(l=window.document.getElementsByTagName("script"),t=["text/coffeescript","text/literate-coffeescript"],e=function(){var e,n,r,i;for(i=[],e=0,n=l.length;n>e;e++)a=l[e],r=a.type,indexOf.call(t,r)>=0&&i.push(a);return i}(),s=0,n=function(){var t;return t=e[s],t instanceof Array?(CoffeeScript.run.apply(CoffeeScript,t),s++,n()):void 0},r=function(r,i){var s,o;return s={literate:r.type===t[1]},o=r.src||r.getAttribute("data-src"),o?CoffeeScript.load(o,function(t){return e[i]=t,n()},s,!0):(s.sourceFiles=["embedded"],e[i]=[r.innerHTML,s])},i=o=0,u=e.length;u>o;i=++o)f=e[i],r(f,i);return n()},window.addEventListener?window.addEventListener("DOMContentLoaded",runScripts,!1):window.attachEvent("onload",runScripts))}.call(this),module.exports}(),_dereq_["./coffee-script"]}();"function"==typeof define&&define.amd?define(function(){return CoffeeScript}):root.CoffeeScript=CoffeeScript}(this)}),ace.define("ace/mode/coffee_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/coffee/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../worker/mirror").Mirror,s=e("../mode/coffee/coffee");window.addEventListener=function(){};var o=t.Worker=function(e){i.call(this,e),this.setTimeout(250)};r.inherits(o,i),function(){this.onUpdate=function(){var e=this.doc.getValue(),t=[];try{s.compile(e)}catch(n){var r=n.location;r&&t.push({row:r.first_line,column:r.first_column,endRow:r.last_line,endColumn:r.last_column,text:n.message,type:"error"})}this.sender.emit("annotate",t)}}.call(o.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _=" \n \f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}}) \ No newline at end of file
diff --git a/library/ace/worker-css.js b/library/ace/worker-css.js
new file mode 100644
index 000000000..f7d5ba0b9
--- /dev/null
+++ b/library/ace/worker-css.js
@@ -0,0 +1 @@
+"no use strict";(function(e){function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")return i+r;if(i)return i.location.replace(/\/*$/,"/")+(r||i.main||i.name);if(i===!1)return"";var s=n.lastIndexOf("/");if(s===-1)break;r=n.substr(s)+r,n=n.slice(0,s)}return e}if(typeof e.window!="undefined"&&e.document)return;if(e.require&&e.define)return;e.console||(e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console),e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,data:i.data,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(r,i){i||(i=r,r=null);if(!i.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");i=e.normalizeModule(r,i);var s=e.require.modules[i];if(s)return s.initialized||(s.initialized=!0,s.exports=s.factory().exports),s.exports;if(!e.require.tlns)return console.log("unable to load "+i);var o=t(i,e.require.tlns);return o.slice(-3)!=".js"&&(o+=".js"),e.require.id=i,e.require.modules[i]={},importScripts(o),e.require(r,i)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},require.tlns={},e.initBaseUrls=function(t){for(var n in t)require.tlns[n]=t[n]},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var n=e.main=null,r=e.sender=null;e.onmessage=function(t){var i=t.data;if(i.event&&r)r._signal(i.event,i.data);else if(i.command)if(n[i.command])n[i.command].apply(n,i.args);else{if(!e[i.command])throw new Error("Unknown command:"+i.command);e[i.command].apply(e,i.args)}else if(i.init){e.initBaseUrls(i.tlns),require("ace/lib/es5-shim"),r=e.sender=e.initSender();var s=require(i.module)[i.classname];n=e.main=new s(r)}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function s(e){if(typeof e!="object"||!e)return e;var t;if(Array.isArray(e)){t=[];for(var n=0;n<e.length;n++)t[n]=s(e[n]);return t}var r=e.constructor;if(r===RegExp)return e;t=r();for(var n in e)t[n]=s(e[n]);return t},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,n){"use strict";function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: "+t}function i(e,t){return t.row>=0&&t.row<e.length&&t.column>=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.column<t.column;return e.row<t.row||e.row==t.row&&r}function t(t,n,r){var i=t.action=="insert",s=(i?1:-1)*(t.end.row-t.start.row),o=(i?1:-1)*(t.end.column-t.start.column),u=t.start,a=i?u:t.end;return e(n,u,r)?{row:n.row,column:n.column}:e(a,n,!r)?{row:n.row+s,column:n.column+(n.row==a.row?o:0)}:{row:u.row,column:u.column}}r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){if(e.start.row==e.end.row&&e.start.row!=this.row)return;if(e.start.row>this.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e<this.getLength()?(t=t.concat([""]),n=0):(t=[""].concat(t),e--,n=this.$lines[e].length),this.insertMergedLines({row:e,column:n},t)},this.insertMergedLines=function(e,t){var n=this.clippedPos(e.row,e.column),r={row:n.row+t.length-1,column:(t.length==1?n.column:0)+t[t.length-1].length};return this.applyDelta({start:n,end:r,action:"insert",lines:t}),this.clonePos(r)},this.remove=function(e){var t=this.clippedPos(e.start.row,e.start.column),n=this.clippedPos(e.end.row,e.end.column);return this.applyDelta({start:t,end:n,action:"remove",lines:this.getLinesForRange({start:t,end:n})}),this.clonePos(t)},this.removeInLine=function(e,t,n){var r=this.clippedPos(e,t),i=this.clippedPos(e,n);return this.applyDelta({start:r,end:i,action:"remove",lines:this.getLinesForRange({start:r,end:i})},!0),this.clonePos(r)},this.removeFullLines=function(e,t){e=Math.min(Math.max(0,e),this.getLength()-1),t=Math.min(Math.max(0,t),this.getLength()-1);var n=t==this.getLength()-1&&e>0,r=t<this.getLength()-1,i=n?e-1:e,s=n?this.getLine(i).length:0,u=r?t+1:t,a=r?0:this.getLine(u).length,f=new o(i,s,u,a),l=this.$lines.slice(e,t+1);return this.applyDelta({start:f.start,end:f.end,action:"remove",lines:this.getLinesForRange(f)}),l},this.removeNewLine=function(e){e<this.getLength()-1&&e>=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++)this.applyDelta(e[t])},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(a.prototype),t.Document=a}),ace.define("ace/worker/mirror",["require","exports","module","ace/range","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../document").Document,s=e("../lib/lang"),o=t.Mirror=function(e){this.sender=e;var t=this.doc=new i(""),n=this.deferredUpdate=s.delayedCall(this.onUpdate.bind(this)),r=this;e.on("change",function(e){var i=e.data;if(i[0].start)t.applyDeltas(i);else for(var s=0;s<i.length;s+=2){if(Array.isArray(i[s+1]))var o={action:"insert",start:i[s],lines:i[s+1]};else var o={action:"remove",start:i[s],end:i[s+1]};t.applyDelta(o,!0)}if(r.$timeout)return n.schedule(r.$timeout);r.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(o.prototype)}),ace.define("ace/mode/css/csslint",["require","exports","module"],function(require,exports,module){function objectToString(e){return Object.prototype.toString.call(e)}function clone(e,t,n,r){function u(e,n){if(e===null)return null;if(n==0)return e;var a;if(typeof e!="object")return e;if(util.isArray(e))a=[];else if(util.isRegExp(e))a=new RegExp(e.source,util.getRegExpFlags(e)),e.lastIndex&&(a.lastIndex=e.lastIndex);else if(util.isDate(e))a=new Date(e.getTime());else{if(o&&Buffer.isBuffer(e))return a=new Buffer(e.length),e.copy(a),a;typeof r=="undefined"?a=Object.create(Object.getPrototypeOf(e)):a=Object.create(r)}if(t){var f=i.indexOf(e);if(f!=-1)return s[f];i.push(e),s.push(a)}for(var l in e)a[l]=u(e[l],n-1);return a}var i=[],s=[],o=typeof Buffer!="undefined";return typeof t=="undefined"&&(t=!0),typeof n=="undefined"&&(n=Infinity),u(e,n)}function Reporter(e,t){this.messages=[],this.stats=[],this.lines=e,this.ruleset=t}var parserlib={};(function(){function e(){this._listeners={}}function t(e){this._input=e.replace(/\n\r?/g,"\n"),this._line=1,this._col=1,this._cursor=0}function n(e,t,n){this.col=n,this.line=t,this.message=e}function r(e,t,n,r){this.col=n,this.line=t,this.text=e,this.type=r}function i(e,n){this._reader=e?new t(e.toString()):null,this._token=null,this._tokenData=n,this._lt=[],this._ltIndex=0,this._ltIndexCache=[]}e.prototype={constructor:e,addListener:function(e,t){this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t)},fire:function(e){typeof e=="string"&&(e={type:e}),typeof e.target!="undefined"&&(e.target=this);if(typeof e.type=="undefined")throw new Error("Event object missing 'type' property.");if(this._listeners[e.type]){var t=this._listeners[e.type].concat();for(var n=0,r=t.length;n<r;n++)t[n].call(this,e)}},removeListener:function(e,t){if(this._listeners[e]){var n=this._listeners[e];for(var r=0,i=n.length;r<i;r++)if(n[r]===t){n.splice(r,1);break}}}},t.prototype={constructor:t,getCol:function(){return this._col},getLine:function(){return this._line},eof:function(){return this._cursor==this._input.length},peek:function(e){var t=null;return e=typeof e=="undefined"?1:e,this._cursor<this._input.length&&(t=this._input.charAt(this._cursor+e-1)),t},read:function(){var e=null;return this._cursor<this._input.length&&(this._input.charAt(this._cursor)=="\n"?(this._line++,this._col=1):this._col++,e=this._input.charAt(this._cursor++)),e},mark:function(){this._bookmark={cursor:this._cursor,line:this._line,col:this._col}},reset:function(){this._bookmark&&(this._cursor=this._bookmark.cursor,this._line=this._bookmark.line,this._col=this._bookmark.col,delete this._bookmark)},readTo:function(e){var t="",n;while(t.length<e.length||t.lastIndexOf(e)!=t.length-e.length){n=this.read();if(!n)throw new Error('Expected "'+e+'" at line '+this._line+", col "+this._col+".");t+=n}return t},readWhile:function(e){var t="",n=this.read();while(n!==null&&e(n))t+=n,n=this.read();return t},readMatch:function(e){var t=this._input.substring(this._cursor),n=null;return typeof e=="string"?t.indexOf(e)===0&&(n=this.readCount(e.length)):e instanceof RegExp&&e.test(t)&&(n=this.readCount(RegExp.lastMatch.length)),n},readCount:function(e){var t="";while(e--)t+=this.read();return t}},n.prototype=new Error,r.fromToken=function(e){return new r(e.value,e.startLine,e.startCol)},r.prototype={constructor:r,valueOf:function(){return this.text},toString:function(){return this.text}},i.createTokenData=function(e){var t=[],n={},r=e.concat([]),i=0,s=r.length+1;r.UNKNOWN=-1,r.unshift({name:"EOF"});for(;i<s;i++)t.push(r[i].name),r[r[i].name]=i,r[i].text&&(n[r[i].text]=i);return r.name=function(e){return t[e]},r.type=function(e){return n[e]},r},i.prototype={constructor:i,match:function(e,t){e instanceof Array||(e=[e]);var n=this.get(t),r=0,i=e.length;while(r<i)if(n==e[r++])return!0;return this.unget(),!1},mustMatch:function(e,t){var r;e instanceof Array||(e=[e]);if(!this.match.apply(this,arguments))throw r=this.LT(1),new n("Expected "+this._tokenData[e[0]].name+" at line "+r.startLine+", col "+r.startCol+".",r.startLine,r.startCol)},advance:function(e,t){while(this.LA(0)!==0&&!this.match(e,t))this.get();return this.LA(0)},get:function(e){var t=this._tokenData,n=this._reader,r,i=0,s=t.length,o=!1,u,a;if(this._lt.length&&this._ltIndex>=0&&this._ltIndex<this._lt.length){i++,this._token=this._lt[this._ltIndex++],a=t[this._token.type];while(a.channel!==undefined&&e!==a.channel&&this._ltIndex<this._lt.length)this._token=this._lt[this._ltIndex++],a=t[this._token.type],i++;if((a.channel===undefined||e===a.channel)&&this._ltIndex<=this._lt.length)return this._ltIndexCache.push(i),this._token.type}return u=this._getToken(),u.type>-1&&!t[u.type].hide&&(u.channel=t[u.type].channel,this._token=u,this._lt.push(u),this._ltIndexCache.push(this._lt.length-this._ltIndex+i),this._lt.length>5&&this._lt.shift(),this._ltIndexCache.length>5&&this._ltIndexCache.shift(),this._ltIndex=this._lt.length),a=t[u.type],a&&(a.hide||a.channel!==undefined&&e!==a.channel)?this.get(e):u.type},LA:function(e){var t=e,n;if(e>0){if(e>5)throw new Error("Too much lookahead.");while(t)n=this.get(),t--;while(t<e)this.unget(),t++}else if(e<0){if(!this._lt[this._ltIndex+e])throw new Error("Too much lookbehind.");n=this._lt[this._ltIndex+e].type}else n=this._token.type;return n},LT:function(e){return this.LA(e),this._lt[this._ltIndex+e-1]},peek:function(){return this.LA(1)},token:function(){return this._token},tokenName:function(e){return e<0||e>this._tokenData.length?"UNKNOWN_TOKEN":this._tokenData[e].name},tokenType:function(e){return this._tokenData[e]||-1},unget:function(){if(!this._ltIndexCache.length)throw new Error("Too much lookahead.");this._ltIndex-=this._ltIndexCache.pop(),this._token=this._lt[this._ltIndex-1]}},parserlib.util={StringReader:t,SyntaxError:n,SyntaxUnit:r,EventTarget:e,TokenStreamBase:i}})(),function(){function Combinator(e,t,n){SyntaxUnit.call(this,e,t,n,Parser.COMBINATOR_TYPE),this.type="unknown",/^\s+$/.test(e)?this.type="descendant":e==">"?this.type="child":e=="+"?this.type="adjacent-sibling":e=="~"&&(this.type="sibling")}function MediaFeature(e,t){SyntaxUnit.call(this,"("+e+(t!==null?":"+t:"")+")",e.startLine,e.startCol,Parser.MEDIA_FEATURE_TYPE),this.name=e,this.value=t}function MediaQuery(e,t,n,r,i){SyntaxUnit.call(this,(e?e+" ":"")+(t?t:"")+(t&&n.length>0?" and ":"")+n.join(" and "),r,i,Parser.MEDIA_QUERY_TYPE),this.modifier=e,this.mediaType=t,this.features=n}function Parser(e){EventTarget.call(this),this.options=e||{},this._tokenStream=null}function PropertyName(e,t,n,r){SyntaxUnit.call(this,e,n,r,Parser.PROPERTY_NAME_TYPE),this.hack=t}function PropertyValue(e,t,n){SyntaxUnit.call(this,e.join(" "),t,n,Parser.PROPERTY_VALUE_TYPE),this.parts=e}function PropertyValueIterator(e){this._i=0,this._parts=e.parts,this._marks=[],this.value=e}function PropertyValuePart(text,line,col){SyntaxUnit.call(this,text,line,col,Parser.PROPERTY_VALUE_PART_TYPE),this.type="unknown";var temp;if(/^([+\-]?[\d\.]+)([a-z]+)$/i.test(text)){this.type="dimension",this.value=+RegExp.$1,this.units=RegExp.$2;switch(this.units.toLowerCase()){case"em":case"rem":case"ex":case"px":case"cm":case"mm":case"in":case"pt":case"pc":case"ch":case"vh":case"vw":case"vmax":case"vmin":this.type="length";break;case"deg":case"rad":case"grad":this.type="angle";break;case"ms":case"s":this.type="time";break;case"hz":case"khz":this.type="frequency";break;case"dpi":case"dpcm":this.type="resolution"}}else/^([+\-]?[\d\.]+)%$/i.test(text)?(this.type="percentage",this.value=+RegExp.$1):/^([+\-]?\d+)$/i.test(text)?(this.type="integer",this.value=+RegExp.$1):/^([+\-]?[\d\.]+)$/i.test(text)?(this.type="number",this.value=+RegExp.$1):/^#([a-f0-9]{3,6})/i.test(text)?(this.type="color",temp=RegExp.$1,temp.length==3?(this.red=parseInt(temp.charAt(0)+temp.charAt(0),16),this.green=parseInt(temp.charAt(1)+temp.charAt(1),16),this.blue=parseInt(temp.charAt(2)+temp.charAt(2),16)):(this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16))):/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3):/^rgb\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1*255/100,this.green=+RegExp.$2*255/100,this.blue=+RegExp.$3*255/100):/^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3,this.alpha=+RegExp.$4):/^rgba\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1*255/100,this.green=+RegExp.$2*255/100,this.blue=+RegExp.$3*255/100,this.alpha=+RegExp.$4):/^hsl\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)/i.test(text)?(this.type="color",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100):/^hsla\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100,this.alpha=+RegExp.$4):/^url\(["']?([^\)"']+)["']?\)/i.test(text)?(this.type="uri",this.uri=RegExp.$1):/^([^\(]+)\(/i.test(text)?(this.type="function",this.name=RegExp.$1,this.value=text):/^["'][^"']*["']/.test(text)?(this.type="string",this.value=eval(text)):Colors[text.toLowerCase()]?(this.type="color",temp=Colors[text.toLowerCase()].substring(1),this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16)):/^[\,\/]$/.test(text)?(this.type="operator",this.value=text):/^[a-z\-_\u0080-\uFFFF][a-z0-9\-_\u0080-\uFFFF]*$/i.test(text)&&(this.type="identifier",this.value=text)}function Selector(e,t,n){SyntaxUnit.call(this,e.join(" "),t,n,Parser.SELECTOR_TYPE),this.parts=e,this.specificity=Specificity.calculate(this)}function SelectorPart(e,t,n,r,i){SyntaxUnit.call(this,n,r,i,Parser.SELECTOR_PART_TYPE),this.elementName=e,this.modifiers=t}function SelectorSubPart(e,t,n,r){SyntaxUnit.call(this,e,n,r,Parser.SELECTOR_SUB_PART_TYPE),this.type=t,this.args=[]}function Specificity(e,t,n,r){this.a=e,this.b=t,this.c=n,this.d=r}function isHexDigit(e){return e!==null&&h.test(e)}function isDigit(e){return e!==null&&/\d/.test(e)}function isWhitespace(e){return e!==null&&/\s/.test(e)}function isNewLine(e){return e!==null&&nl.test(e)}function isNameStart(e){return e!==null&&/[a-z_\u0080-\uFFFF\\]/i.test(e)}function isNameChar(e){return e!==null&&(isNameStart(e)||/[0-9\-\\]/.test(e))}function isIdentStart(e){return e!==null&&(isNameStart(e)||/\-\\/.test(e))}function mix(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function TokenStream(e){TokenStreamBase.call(this,e,Tokens)}function ValidationError(e,t,n){this.col=n,this.line=t,this.message=e}var EventTarget=parserlib.util.EventTarget,TokenStreamBase=parserlib.util.TokenStreamBase,StringReader=parserlib.util.StringReader,SyntaxError=parserlib.util.SyntaxError,SyntaxUnit=parserlib.util.SyntaxUnit,Colors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32",activeBorder:"Active window border.",activecaption:"Active window caption.",appworkspace:"Background color of multiple document interface.",background:"Desktop background.",buttonface:"The face background color for 3-D elements that appear 3-D due to one layer of surrounding border.",buttonhighlight:"The color of the border facing the light source for 3-D elements that appear 3-D due to one layer of surrounding border.",buttonshadow:"The color of the border away from the light source for 3-D elements that appear 3-D due to one layer of surrounding border.",buttontext:"Text on push buttons.",captiontext:"Text in caption, size box, and scrollbar arrow box.",graytext:"Grayed (disabled) text. This color is set to #000 if the current display driver does not support a solid gray color.",greytext:"Greyed (disabled) text. This color is set to #000 if the current display driver does not support a solid grey color.",highlight:"Item(s) selected in a control.",highlighttext:"Text of item(s) selected in a control.",inactiveborder:"Inactive window border.",inactivecaption:"Inactive window caption.",inactivecaptiontext:"Color of text in an inactive caption.",infobackground:"Background color for tooltip controls.",infotext:"Text color for tooltip controls.",menu:"Menu background.",menutext:"Text in menus.",scrollbar:"Scroll bar gray area.",threeddarkshadow:"The color of the darker (generally outer) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedface:"The face background color for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedhighlight:"The color of the lighter (generally outer) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedlightshadow:"The color of the darker (generally inner) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedshadow:"The color of the lighter (generally inner) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",window:"Window background.",windowframe:"Window frame.",windowtext:"Text in windows."};Combinator.prototype=new SyntaxUnit,Combinator.prototype.constructor=Combinator,MediaFeature.prototype=new SyntaxUnit,MediaFeature.prototype.constructor=MediaFeature,MediaQuery.prototype=new SyntaxUnit,MediaQuery.prototype.constructor=MediaQuery,Parser.DEFAULT_TYPE=0,Parser.COMBINATOR_TYPE=1,Parser.MEDIA_FEATURE_TYPE=2,Parser.MEDIA_QUERY_TYPE=3,Parser.PROPERTY_NAME_TYPE=4,Parser.PROPERTY_VALUE_TYPE=5,Parser.PROPERTY_VALUE_PART_TYPE=6,Parser.SELECTOR_TYPE=7,Parser.SELECTOR_PART_TYPE=8,Parser.SELECTOR_SUB_PART_TYPE=9,Parser.prototype=function(){var e=new EventTarget,t,n={constructor:Parser,DEFAULT_TYPE:0,COMBINATOR_TYPE:1,MEDIA_FEATURE_TYPE:2,MEDIA_QUERY_TYPE:3,PROPERTY_NAME_TYPE:4,PROPERTY_VALUE_TYPE:5,PROPERTY_VALUE_PART_TYPE:6,SELECTOR_TYPE:7,SELECTOR_PART_TYPE:8,SELECTOR_SUB_PART_TYPE:9,_stylesheet:function(){var e=this._tokenStream,t=null,n,r,i;this.fire("startstylesheet"),this._charset(),this._skipCruft();while(e.peek()==Tokens.IMPORT_SYM)this._import(),this._skipCruft();while(e.peek()==Tokens.NAMESPACE_SYM)this._namespace(),this._skipCruft();i=e.peek();while(i>Tokens.EOF){try{switch(i){case Tokens.MEDIA_SYM:this._media(),this._skipCruft();break;case Tokens.PAGE_SYM:this._page(),this._skipCruft();break;case Tokens.FONT_FACE_SYM:this._font_face(),this._skipCruft();break;case Tokens.KEYFRAMES_SYM:this._keyframes(),this._skipCruft();break;case Tokens.VIEWPORT_SYM:this._viewport(),this._skipCruft();break;case Tokens.UNKNOWN_SYM:e.get();if(!!this.options.strict)throw new SyntaxError("Unknown @ rule.",e.LT(0).startLine,e.LT(0).startCol);this.fire({type:"error",error:null,message:"Unknown @ rule: "+e.LT(0).value+".",line:e.LT(0).startLine,col:e.LT(0).startCol}),n=0;while(e.advance([Tokens.LBRACE,Tokens.RBRACE])==Tokens.LBRACE)n++;while(n)e.advance([Tokens.RBRACE]),n--;break;case Tokens.S:this._readWhitespace();break;default:if(!this._ruleset())switch(i){case Tokens.CHARSET_SYM:throw r=e.LT(1),this._charset(!1),new SyntaxError("@charset not allowed here.",r.startLine,r.startCol);case Tokens.IMPORT_SYM:throw r=e.LT(1),this._import(!1),new SyntaxError("@import not allowed here.",r.startLine,r.startCol);case Tokens.NAMESPACE_SYM:throw r=e.LT(1),this._namespace(!1),new SyntaxError("@namespace not allowed here.",r.startLine,r.startCol);default:e.get(),this._unexpectedToken(e.token())}}}catch(s){if(!(s instanceof SyntaxError&&!this.options.strict))throw s;this.fire({type:"error",error:s,message:s.message,line:s.line,col:s.col})}i=e.peek()}i!=Tokens.EOF&&this._unexpectedToken(e.token()),this.fire("endstylesheet")},_charset:function(e){var t=this._tokenStream,n,r,i,s;t.match(Tokens.CHARSET_SYM)&&(i=t.token().startLine,s=t.token().startCol,this._readWhitespace(),t.mustMatch(Tokens.STRING),r=t.token(),n=r.value,this._readWhitespace(),t.mustMatch(Tokens.SEMICOLON),e!==!1&&this.fire({type:"charset",charset:n,line:i,col:s}))},_import:function(e){var t=this._tokenStream,n,r,i,s=[];t.mustMatch(Tokens.IMPORT_SYM),i=t.token(),this._readWhitespace(),t.mustMatch([Tokens.STRING,Tokens.URI]),r=t.token().value.replace(/^(?:url\()?["']?([^"']+?)["']?\)?$/,"$1"),this._readWhitespace(),s=this._media_query_list(),t.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),e!==!1&&this.fire({type:"import",uri:r,media:s,line:i.startLine,col:i.startCol})},_namespace:function(e){var t=this._tokenStream,n,r,i,s;t.mustMatch(Tokens.NAMESPACE_SYM),n=t.token().startLine,r=t.token().startCol,this._readWhitespace(),t.match(Tokens.IDENT)&&(i=t.token().value,this._readWhitespace()),t.mustMatch([Tokens.STRING,Tokens.URI]),s=t.token().value.replace(/(?:url\()?["']([^"']+)["']\)?/,"$1"),this._readWhitespace(),t.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),e!==!1&&this.fire({type:"namespace",prefix:i,uri:s,line:n,col:r})},_media:function(){var e=this._tokenStream,t,n,r;e.mustMatch(Tokens.MEDIA_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),r=this._media_query_list(),e.mustMatch(Tokens.LBRACE),this._readWhitespace(),this.fire({type:"startmedia",media:r,line:t,col:n});for(;;)if(e.peek()==Tokens.PAGE_SYM)this._page();else if(e.peek()==Tokens.FONT_FACE_SYM)this._font_face();else if(e.peek()==Tokens.VIEWPORT_SYM)this._viewport();else if(!this._ruleset())break;e.mustMatch(Tokens.RBRACE),this._readWhitespace(),this.fire({type:"endmedia",media:r,line:t,col:n})},_media_query_list:function(){var e=this._tokenStream,t=[];this._readWhitespace(),(e.peek()==Tokens.IDENT||e.peek()==Tokens.LPAREN)&&t.push(this._media_query());while(e.match(Tokens.COMMA))this._readWhitespace(),t.push(this._media_query());return t},_media_query:function(){var e=this._tokenStream,t=null,n=null,r=null,i=[];e.match(Tokens.IDENT)&&(n=e.token().value.toLowerCase(),n!="only"&&n!="not"?(e.unget(),n=null):r=e.token()),this._readWhitespace(),e.peek()==Tokens.IDENT?(t=this._media_type(),r===null&&(r=e.token())):e.peek()==Tokens.LPAREN&&(r===null&&(r=e.LT(1)),i.push(this._media_expression()));if(t===null&&i.length===0)return null;this._readWhitespace();while(e.match(Tokens.IDENT))e.token().value.toLowerCase()!="and"&&this._unexpectedToken(e.token()),this._readWhitespace(),i.push(this._media_expression());return new MediaQuery(n,t,i,r.startLine,r.startCol)},_media_type:function(){return this._media_feature()},_media_expression:function(){var e=this._tokenStream,t=null,n,r=null;return e.mustMatch(Tokens.LPAREN),t=this._media_feature(),this._readWhitespace(),e.match(Tokens.COLON)&&(this._readWhitespace(),n=e.LT(1),r=this._expression()),e.mustMatch(Tokens.RPAREN),this._readWhitespace(),new MediaFeature(t,r?new SyntaxUnit(r,n.startLine,n.startCol):null)},_media_feature:function(){var e=this._tokenStream;return e.mustMatch(Tokens.IDENT),SyntaxUnit.fromToken(e.token())},_page:function(){var e=this._tokenStream,t,n,r=null,i=null;e.mustMatch(Tokens.PAGE_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),e.match(Tokens.IDENT)&&(r=e.token().value,r.toLowerCase()==="auto"&&this._unexpectedToken(e.token())),e.peek()==Tokens.COLON&&(i=this._pseudo_page()),this._readWhitespace(),this.fire({type:"startpage",id:r,pseudo:i,line:t,col:n}),this._readDeclarations(!0,!0),this.fire({type:"endpage",id:r,pseudo:i,line:t,col:n})},_margin:function(){var e=this._tokenStream,t,n,r=this._margin_sym();return r?(t=e.token().startLine,n=e.token().startCol,this.fire({type:"startpagemargin",margin:r,line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endpagemargin",margin:r,line:t,col:n}),!0):!1},_margin_sym:function(){var e=this._tokenStream;return e.match([Tokens.TOPLEFTCORNER_SYM,Tokens.TOPLEFT_SYM,Tokens.TOPCENTER_SYM,Tokens.TOPRIGHT_SYM,Tokens.TOPRIGHTCORNER_SYM,Tokens.BOTTOMLEFTCORNER_SYM,Tokens.BOTTOMLEFT_SYM,Tokens.BOTTOMCENTER_SYM,Tokens.BOTTOMRIGHT_SYM,Tokens.BOTTOMRIGHTCORNER_SYM,Tokens.LEFTTOP_SYM,Tokens.LEFTMIDDLE_SYM,Tokens.LEFTBOTTOM_SYM,Tokens.RIGHTTOP_SYM,Tokens.RIGHTMIDDLE_SYM,Tokens.RIGHTBOTTOM_SYM])?SyntaxUnit.fromToken(e.token()):null},_pseudo_page:function(){var e=this._tokenStream;return e.mustMatch(Tokens.COLON),e.mustMatch(Tokens.IDENT),e.token().value},_font_face:function(){var e=this._tokenStream,t,n;e.mustMatch(Tokens.FONT_FACE_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),this.fire({type:"startfontface",line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endfontface",line:t,col:n})},_viewport:function(){var e=this._tokenStream,t,n;e.mustMatch(Tokens.VIEWPORT_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),this.fire({type:"startviewport",line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endviewport",line:t,col:n})},_operator:function(e){var t=this._tokenStream,n=null;if(t.match([Tokens.SLASH,Tokens.COMMA])||e&&t.match([Tokens.PLUS,Tokens.STAR,Tokens.MINUS]))n=t.token(),this._readWhitespace();return n?PropertyValuePart.fromToken(n):null},_combinator:function(){var e=this._tokenStream,t=null,n;return e.match([Tokens.PLUS,Tokens.GREATER,Tokens.TILDE])&&(n=e.token(),t=new Combinator(n.value,n.startLine,n.startCol),this._readWhitespace()),t},_unary_operator:function(){var e=this._tokenStream;return e.match([Tokens.MINUS,Tokens.PLUS])?e.token().value:null},_property:function(){var e=this._tokenStream,t=null,n=null,r,i,s,o;return e.peek()==Tokens.STAR&&this.options.starHack&&(e.get(),i=e.token(),n=i.value,s=i.startLine,o=i.startCol),e.match(Tokens.IDENT)&&(i=e.token(),r=i.value,r.charAt(0)=="_"&&this.options.underscoreHack&&(n="_",r=r.substring(1)),t=new PropertyName(r,n,s||i.startLine,o||i.startCol),this._readWhitespace()),t},_ruleset:function(){var e=this._tokenStream,t,n;try{n=this._selectors_group()}catch(r){if(r instanceof SyntaxError&&!this.options.strict){this.fire({type:"error",error:r,message:r.message,line:r.line,col:r.col}),t=e.advance([Tokens.RBRACE]);if(t!=Tokens.RBRACE)throw r;return!0}throw r}return n&&(this.fire({type:"startrule",selectors:n,line:n[0].line,col:n[0].col}),this._readDeclarations(!0),this.fire({type:"endrule",selectors:n,line:n[0].line,col:n[0].col})),n},_selectors_group:function(){var e=this._tokenStream,t=[],n;n=this._selector();if(n!==null){t.push(n);while(e.match(Tokens.COMMA))this._readWhitespace(),n=this._selector(),n!==null?t.push(n):this._unexpectedToken(e.LT(1))}return t.length?t:null},_selector:function(){var e=this._tokenStream,t=[],n=null,r=null,i=null;n=this._simple_selector_sequence();if(n===null)return null;t.push(n);do{r=this._combinator();if(r!==null)t.push(r),n=this._simple_selector_sequence(),n===null?this._unexpectedToken(e.LT(1)):t.push(n);else{if(!this._readWhitespace())break;i=new Combinator(e.token().value,e.token().startLine,e.token().startCol),r=this._combinator(),n=this._simple_selector_sequence(),n===null?r!==null&&this._unexpectedToken(e.LT(1)):(r!==null?t.push(r):t.push(i),t.push(n))}}while(!0);return new Selector(t,t[0].line,t[0].col)},_simple_selector_sequence:function(){var e=this._tokenStream,t=null,n=[],r="",i=[function(){return e.match(Tokens.HASH)?new SelectorSubPart(e.token().value,"id",e.token().startLine,e.token().startCol):null},this._class,this._attrib,this._pseudo,this._negation],s=0,o=i.length,u=null,a=!1,f,l;f=e.LT(1).startLine,l=e.LT(1).startCol,t=this._type_selector(),t||(t=this._universal()),t!==null&&(r+=t);for(;;){if(e.peek()===Tokens.S)break;while(s<o&&u===null)u=i[s++].call(this);if(u===null){if(r==="")return null;break}s=0,n.push(u),r+=u.toString(),u=null}return r!==""?new SelectorPart(t,n,r,f,l):null},_type_selector:function(){var e=this._tokenStream,t=this._namespace_prefix(),n=this._element_name();return n?(t&&(n.text=t+n.text,n.col-=t.length),n):(t&&(e.unget(),t.length>1&&e.unget()),null)},_class:function(){var e=this._tokenStream,t;return e.match(Tokens.DOT)?(e.mustMatch(Tokens.IDENT),t=e.token(),new SelectorSubPart("."+t.value,"class",t.startLine,t.startCol-1)):null},_element_name:function(){var e=this._tokenStream,t;return e.match(Tokens.IDENT)?(t=e.token(),new SelectorSubPart(t.value,"elementName",t.startLine,t.startCol)):null},_namespace_prefix:function(){var e=this._tokenStream,t="";if(e.LA(1)===Tokens.PIPE||e.LA(2)===Tokens.PIPE)e.match([Tokens.IDENT,Tokens.STAR])&&(t+=e.token().value),e.mustMatch(Tokens.PIPE),t+="|";return t.length?t:null},_universal:function(){var e=this._tokenStream,t="",n;return n=this._namespace_prefix(),n&&(t+=n),e.match(Tokens.STAR)&&(t+="*"),t.length?t:null},_attrib:function(){var e=this._tokenStream,t=null,n,r;return e.match(Tokens.LBRACKET)?(r=e.token(),t=r.value,t+=this._readWhitespace(),n=this._namespace_prefix(),n&&(t+=n),e.mustMatch(Tokens.IDENT),t+=e.token().value,t+=this._readWhitespace(),e.match([Tokens.PREFIXMATCH,Tokens.SUFFIXMATCH,Tokens.SUBSTRINGMATCH,Tokens.EQUALS,Tokens.INCLUDES,Tokens.DASHMATCH])&&(t+=e.token().value,t+=this._readWhitespace(),e.mustMatch([Tokens.IDENT,Tokens.STRING]),t+=e.token().value,t+=this._readWhitespace()),e.mustMatch(Tokens.RBRACKET),new SelectorSubPart(t+"]","attribute",r.startLine,r.startCol)):null},_pseudo:function(){var e=this._tokenStream,t=null,n=":",r,i;return e.match(Tokens.COLON)&&(e.match(Tokens.COLON)&&(n+=":"),e.match(Tokens.IDENT)?(t=e.token().value,r=e.token().startLine,i=e.token().startCol-n.length):e.peek()==Tokens.FUNCTION&&(r=e.LT(1).startLine,i=e.LT(1).startCol-n.length,t=this._functional_pseudo()),t&&(t=new SelectorSubPart(n+t,"pseudo",r,i))),t},_functional_pseudo:function(){var e=this._tokenStream,t=null;return e.match(Tokens.FUNCTION)&&(t=e.token().value,t+=this._readWhitespace(),t+=this._expression(),e.mustMatch(Tokens.RPAREN),t+=")"),t},_expression:function(){var e=this._tokenStream,t="";while(e.match([Tokens.PLUS,Tokens.MINUS,Tokens.DIMENSION,Tokens.NUMBER,Tokens.STRING,Tokens.IDENT,Tokens.LENGTH,Tokens.FREQ,Tokens.ANGLE,Tokens.TIME,Tokens.RESOLUTION,Tokens.SLASH]))t+=e.token().value,t+=this._readWhitespace();return t.length?t:null},_negation:function(){var e=this._tokenStream,t,n,r="",i,s=null;return e.match(Tokens.NOT)&&(r=e.token().value,t=e.token().startLine,n=e.token().startCol,r+=this._readWhitespace(),i=this._negation_arg(),r+=i,r+=this._readWhitespace(),e.match(Tokens.RPAREN),r+=e.token().value,s=new SelectorSubPart(r,"not",t,n),s.args.push(i)),s},_negation_arg:function(){var e=this._tokenStream,t=[this._type_selector,this._universal,function(){return e.match(Tokens.HASH)?new SelectorSubPart(e.token().value,"id",e.token().startLine,e.token().startCol):null},this._class,this._attrib,this._pseudo],n=null,r=0,i=t.length,s,o,u,a;o=e.LT(1).startLine,u=e.LT(1).startCol;while(r<i&&n===null)n=t[r].call(this),r++;return n===null&&this._unexpectedToken(e.LT(1)),n.type=="elementName"?a=new SelectorPart(n,[],n.toString(),o,u):a=new SelectorPart(null,[n],n.toString(),o,u),a},_declaration:function(){var e=this._tokenStream,t=null,n=null,r=null,i=null,s=null,o="";t=this._property();if(t!==null){e.mustMatch(Tokens.COLON),this._readWhitespace(),n=this._expr(),(!n||n.length===0)&&this._unexpectedToken(e.LT(1)),r=this._prio(),o=t.toString();if(this.options.starHack&&t.hack=="*"||this.options.underscoreHack&&t.hack=="_")o=t.text;try{this._validateProperty(o,n)}catch(u){s=u}return this.fire({type:"property",property:t,value:n,important:r,line:t.line,col:t.col,invalid:s}),!0}return!1},_prio:function(){var e=this._tokenStream,t=e.match(Tokens.IMPORTANT_SYM);return this._readWhitespace(),t},_expr:function(e){var t=this._tokenStream,n=[],r=null,i=null;r=this._term(e);if(r!==null){n.push(r);do{i=this._operator(e),i&&n.push(i),r=this._term(e);if(r===null)break;n.push(r)}while(!0)}return n.length>0?new PropertyValue(n,n[0].line,n[0].col):null},_term:function(e){var t=this._tokenStream,n=null,r=null,i=null,s,o,u;return n=this._unary_operator(),n!==null&&(o=t.token().startLine,u=t.token().startCol),t.peek()==Tokens.IE_FUNCTION&&this.options.ieFilters?(r=this._ie_function(),n===null&&(o=t.token().startLine,u=t.token().startCol)):e&&t.match([Tokens.LPAREN,Tokens.LBRACE,Tokens.LBRACKET])?(s=t.token(),i=s.endChar,r=s.value+this._expr(e).text,n===null&&(o=t.token().startLine,u=t.token().startCol),t.mustMatch(Tokens.type(i)),r+=i,this._readWhitespace()):t.match([Tokens.NUMBER,Tokens.PERCENTAGE,Tokens.LENGTH,Tokens.ANGLE,Tokens.TIME,Tokens.FREQ,Tokens.STRING,Tokens.IDENT,Tokens.URI,Tokens.UNICODE_RANGE])?(r=t.token().value,n===null&&(o=t.token().startLine,u=t.token().startCol),this._readWhitespace()):(s=this._hexcolor(),s===null?(n===null&&(o=t.LT(1).startLine,u=t.LT(1).startCol),r===null&&(t.LA(3)==Tokens.EQUALS&&this.options.ieFilters?r=this._ie_function():r=this._function())):(r=s.value,n===null&&(o=s.startLine,u=s.startCol))),r!==null?new PropertyValuePart(n!==null?n+r:r,o,u):null},_function:function(){var e=this._tokenStream,t=null,n=null,r;if(e.match(Tokens.FUNCTION)){t=e.token().value,this._readWhitespace(),n=this._expr(!0),t+=n;if(this.options.ieFilters&&e.peek()==Tokens.EQUALS)do{this._readWhitespace()&&(t+=e.token().value),e.LA(0)==Tokens.COMMA&&(t+=e.token().value),e.match(Tokens.IDENT),t+=e.token().value,e.match(Tokens.EQUALS),t+=e.token().value,r=e.peek();while(r!=Tokens.COMMA&&r!=Tokens.S&&r!=Tokens.RPAREN)e.get(),t+=e.token().value,r=e.peek()}while(e.match([Tokens.COMMA,Tokens.S]));e.match(Tokens.RPAREN),t+=")",this._readWhitespace()}return t},_ie_function:function(){var e=this._tokenStream,t=null,n=null,r;if(e.match([Tokens.IE_FUNCTION,Tokens.FUNCTION])){t=e.token().value;do{this._readWhitespace()&&(t+=e.token().value),e.LA(0)==Tokens.COMMA&&(t+=e.token().value),e.match(Tokens.IDENT),t+=e.token().value,e.match(Tokens.EQUALS),t+=e.token().value,r=e.peek();while(r!=Tokens.COMMA&&r!=Tokens.S&&r!=Tokens.RPAREN)e.get(),t+=e.token().value,r=e.peek()}while(e.match([Tokens.COMMA,Tokens.S]));e.match(Tokens.RPAREN),t+=")",this._readWhitespace()}return t},_hexcolor:function(){var e=this._tokenStream,t=null,n;if(e.match(Tokens.HASH)){t=e.token(),n=t.value;if(!/#[a-f0-9]{3,6}/i.test(n))throw new SyntaxError("Expected a hex color but found '"+n+"' at line "+t.startLine+", col "+t.startCol+".",t.startLine,t.startCol);this._readWhitespace()}return t},_keyframes:function(){var e=this._tokenStream,t,n,r,i="";e.mustMatch(Tokens.KEYFRAMES_SYM),t=e.token(),/^@\-([^\-]+)\-/.test(t.value)&&(i=RegExp.$1),this._readWhitespace(),r=this._keyframe_name(),this._readWhitespace(),e.mustMatch(Tokens.LBRACE),this.fire({type:"startkeyframes",name:r,prefix:i,line:t.startLine,col:t.startCol}),this._readWhitespace(),n=e.peek();while(n==Tokens.IDENT||n==Tokens.PERCENTAGE)this._keyframe_rule(),this._readWhitespace(),n=e.peek();this.fire({type:"endkeyframes",name:r,prefix:i,line:t.startLine,col:t.startCol}),this._readWhitespace(),e.mustMatch(Tokens.RBRACE)},_keyframe_name:function(){var e=this._tokenStream,t;return e.mustMatch([Tokens.IDENT,Tokens.STRING]),SyntaxUnit.fromToken(e.token())},_keyframe_rule:function(){var e=this._tokenStream,t,n=this._key_list();this.fire({type:"startkeyframerule",keys:n,line:n[0].line,col:n[0].col}),this._readDeclarations(!0),this.fire({type:"endkeyframerule",keys:n,line:n[0].line,col:n[0].col})},_key_list:function(){var e=this._tokenStream,t,n,r=[];r.push(this._key()),this._readWhitespace();while(e.match(Tokens.COMMA))this._readWhitespace(),r.push(this._key()),this._readWhitespace();return r},_key:function(){var e=this._tokenStream,t;if(e.match(Tokens.PERCENTAGE))return SyntaxUnit.fromToken(e.token());if(e.match(Tokens.IDENT)){t=e.token();if(/from|to/i.test(t.value))return SyntaxUnit.fromToken(t);e.unget()}this._unexpectedToken(e.LT(1))},_skipCruft:function(){while(this._tokenStream.match([Tokens.S,Tokens.CDO,Tokens.CDC]));},_readDeclarations:function(e,t){var n=this._tokenStream,r;this._readWhitespace(),e&&n.mustMatch(Tokens.LBRACE),this._readWhitespace();try{for(;;){if(!(n.match(Tokens.SEMICOLON)||t&&this._margin())){if(!this._declaration())break;if(!n.match(Tokens.SEMICOLON))break}this._readWhitespace()}n.mustMatch(Tokens.RBRACE),this._readWhitespace()}catch(i){if(!(i instanceof SyntaxError&&!this.options.strict))throw i;this.fire({type:"error",error:i,message:i.message,line:i.line,col:i.col}),r=n.advance([Tokens.SEMICOLON,Tokens.RBRACE]);if(r==Tokens.SEMICOLON)this._readDeclarations(!1,t);else if(r!=Tokens.RBRACE)throw i}},_readWhitespace:function(){var e=this._tokenStream,t="";while(e.match(Tokens.S))t+=e.token().value;return t},_unexpectedToken:function(e){throw new SyntaxError("Unexpected token '"+e.value+"' at line "+e.startLine+", col "+e.startCol+".",e.startLine,e.startCol)},_verifyEnd:function(){this._tokenStream.LA(1)!=Tokens.EOF&&this._unexpectedToken(this._tokenStream.LT(1))},_validateProperty:function(e,t){Validation.validate(e,t)},parse:function(e){this._tokenStream=new TokenStream(e,Tokens),this._stylesheet()},parseStyleSheet:function(e){return this.parse(e)},parseMediaQuery:function(e){this._tokenStream=new TokenStream(e,Tokens);var t=this._media_query();return this._verifyEnd(),t},parsePropertyValue:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._expr();return this._readWhitespace(),this._verifyEnd(),t},parseRule:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._ruleset();return this._readWhitespace(),this._verifyEnd(),t},parseSelector:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._selector();return this._readWhitespace(),this._verifyEnd(),t},parseStyleAttribute:function(e){e+="}",this._tokenStream=new TokenStream(e,Tokens),this._readDeclarations()}};for(t in n)n.hasOwnProperty(t)&&(e[t]=n[t]);return e}();var Properties={"align-items":"flex-start | flex-end | center | baseline | stretch","align-content":"flex-start | flex-end | center | space-between | space-around | stretch","align-self":"auto | flex-start | flex-end | center | baseline | stretch","-webkit-align-items":"flex-start | flex-end | center | baseline | stretch","-webkit-align-content":"flex-start | flex-end | center | space-between | space-around | stretch","-webkit-align-self":"auto | flex-start | flex-end | center | baseline | stretch","alignment-adjust":"auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | <percentage> | <length>","alignment-baseline":"baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical",animation:1,"animation-delay":{multi:"<time>",comma:!0},"animation-direction":{multi:"normal | reverse | alternate | alternate-reverse",comma:!0},"animation-duration":{multi:"<time>",comma:!0},"animation-fill-mode":{multi:"none | forwards | backwards | both",comma:!0},"animation-iteration-count":{multi:"<number> | infinite",comma:!0},"animation-name":{multi:"none | <ident>",comma:!0},"animation-play-state":{multi:"running | paused",comma:!0},"animation-timing-function":1,"-moz-animation-delay":{multi:"<time>",comma:!0},"-moz-animation-direction":{multi:"normal | reverse | alternate | alternate-reverse",comma:!0},"-moz-animation-duration":{multi:"<time>",comma:!0},"-moz-animation-iteration-count":{multi:"<number> | infinite",comma:!0},"-moz-animation-name":{multi:"none | <ident>",comma:!0},"-moz-animation-play-state":{multi:"running | paused",comma:!0},"-ms-animation-delay":{multi:"<time>",comma:!0},"-ms-animation-direction":{multi:"normal | reverse | alternate | alternate-reverse",comma:!0},"-ms-animation-duration":{multi:"<time>",comma:!0},"-ms-animation-iteration-count":{multi:"<number> | infinite",comma:!0},"-ms-animation-name":{multi:"none | <ident>",comma:!0},"-ms-animation-play-state":{multi:"running | paused",comma:!0},"-webkit-animation-delay":{multi:"<time>",comma:!0},"-webkit-animation-direction":{multi:"normal | reverse | alternate | alternate-reverse",comma:!0},"-webkit-animation-duration":{multi:"<time>",comma:!0},"-webkit-animation-fill-mode":{multi:"none | forwards | backwards | both",comma:!0},"-webkit-animation-iteration-count":{multi:"<number> | infinite",comma:!0},"-webkit-animation-name":{multi:"none | <ident>",comma:!0},"-webkit-animation-play-state":{multi:"running | paused",comma:!0},"-o-animation-delay":{multi:"<time>",comma:!0},"-o-animation-direction":{multi:"normal | reverse | alternate | alternate-reverse",comma:!0},"-o-animation-duration":{multi:"<time>",comma:!0},"-o-animation-iteration-count":{multi:"<number> | infinite",comma:!0},"-o-animation-name":{multi:"none | <ident>",comma:!0},"-o-animation-play-state":{multi:"running | paused",comma:!0},appearance:"icon | window | desktop | workspace | document | tooltip | dialog | button | push-button | hyperlink | radio-button | checkbox | menu-item | tab | menu | menubar | pull-down-menu | pop-up-menu | list-menu | radio-group | checkbox-group | outline-tree | range | field | combo-box | signature | password | normal | none | inherit",azimuth:function(e){var t="<angle> | leftwards | rightwards | inherit",n="left-side | far-left | left | center-left | center | center-right | right | far-right | right-side",r=!1,i=!1,s;ValidationTypes.isAny(e,t)||(ValidationTypes.isAny(e,"behind")&&(r=!0,i=!0),ValidationTypes.isAny(e,n)&&(i=!0,r||ValidationTypes.isAny(e,"behind")));if(e.hasNext())throw s=e.next(),i?new ValidationError("Expected end of value but found '"+s+"'.",s.line,s.col):new ValidationError("Expected (<'azimuth'>) but found '"+s+"'.",s.line,s.col)},"backface-visibility":"visible | hidden",background:1,"background-attachment":{multi:"<attachment>",comma:!0},"background-clip":{multi:"<box>",comma:!0},"background-color":"<color> | inherit","background-image":{multi:"<bg-image>",comma:!0},"background-origin":{multi:"<box>",comma:!0},"background-position":{multi:"<bg-position>",comma:!0},"background-repeat":{multi:"<repeat-style>"},"background-size":{multi:"<bg-size>",comma:!0},"baseline-shift":"baseline | sub | super | <percentage> | <length>",behavior:1,binding:1,bleed:"<length>","bookmark-label":"<content> | <attr> | <string>","bookmark-level":"none | <integer>","bookmark-state":"open | closed","bookmark-target":"none | <uri> | <attr>",border:"<border-width> || <border-style> || <color>","border-bottom":"<border-width> || <border-style> || <color>","border-bottom-color":"<color> | inherit","border-bottom-left-radius":"<x-one-radius>","border-bottom-right-radius":"<x-one-radius>","border-bottom-style":"<border-style>","border-bottom-width":"<border-width>","border-collapse":"collapse | separate | inherit","border-color":{multi:"<color> | inherit",max:4},"border-image":1,"border-image-outset":{multi:"<length> | <number>",max:4},"border-image-repeat":{multi:"stretch | repeat | round",max:2},"border-image-slice":function(e){var t=!1,n="<number> | <percentage>",r=!1,i=0,s=4,o;ValidationTypes.isAny(e,"fill")&&(r=!0,t=!0);while(e.hasNext()&&i<s){t=ValidationTypes.isAny(e,n);if(!t)break;i++}r?t=!0:ValidationTypes.isAny(e,"fill");if(e.hasNext())throw o=e.next(),t?new ValidationError("Expected end of value but found '"+o+"'.",o.line,o.col):new ValidationError("Expected ([<number> | <percentage>]{1,4} && fill?) but found '"+o+"'.",o.line,o.col)},"border-image-source":"<image> | none","border-image-width":{multi:"<length> | <percentage> | <number> | auto",max:4},"border-left":"<border-width> || <border-style> || <color>","border-left-color":"<color> | inherit","border-left-style":"<border-style>","border-left-width":"<border-width>","border-radius":function(e){var t=!1,n="<length> | <percentage> | inherit",r=!1,i=!1,s=0,o=8,u;while(e.hasNext()&&s<o){t=ValidationTypes.isAny(e,n);if(!t){if(!(e.peek()=="/"&&s>0&&!r))break;r=!0,o=s+5,e.next()}s++}if(e.hasNext())throw u=e.next(),t?new ValidationError("Expected end of value but found '"+u+"'.",u.line,u.col):new ValidationError("Expected (<'border-radius'>) but found '"+u+"'.",u.line,u.col)},"border-right":"<border-width> || <border-style> || <color>","border-right-color":"<color> | inherit","border-right-style":"<border-style>","border-right-width":"<border-width>","border-spacing":{multi:"<length> | inherit",max:2},"border-style":{multi:"<border-style>",max:4},"border-top":"<border-width> || <border-style> || <color>","border-top-color":"<color> | inherit","border-top-left-radius":"<x-one-radius>","border-top-right-radius":"<x-one-radius>","border-top-style":"<border-style>","border-top-width":"<border-width>","border-width":{multi:"<border-width>",max:4},bottom:"<margin-width> | inherit","-moz-box-align":"start | end | center | baseline | stretch","-moz-box-decoration-break":"slice |clone","-moz-box-direction":"normal | reverse | inherit","-moz-box-flex":"<number>","-moz-box-flex-group":"<integer>","-moz-box-lines":"single | multiple","-moz-box-ordinal-group":"<integer>","-moz-box-orient":"horizontal | vertical | inline-axis | block-axis | inherit","-moz-box-pack":"start | end | center | justify","-webkit-box-align":"start | end | center | baseline | stretch","-webkit-box-decoration-break":"slice |clone","-webkit-box-direction":"normal | reverse | inherit","-webkit-box-flex":"<number>","-webkit-box-flex-group":"<integer>","-webkit-box-lines":"single | multiple","-webkit-box-ordinal-group":"<integer>","-webkit-box-orient":"horizontal | vertical | inline-axis | block-axis | inherit","-webkit-box-pack":"start | end | center | justify","box-shadow":function(e){var t=!1,n;if(!ValidationTypes.isAny(e,"none"))Validation.multiProperty("<shadow>",e,!0,Infinity);else if(e.hasNext())throw n=e.next(),new ValidationError("Expected end of value but found '"+n+"'.",n.line,n.col)},"box-sizing":"content-box | border-box | inherit","break-after":"auto | always | avoid | left | right | page | column | avoid-page | avoid-column","break-before":"auto | always | avoid | left | right | page | column | avoid-page | avoid-column","break-inside":"auto | avoid | avoid-page | avoid-column","caption-side":"top | bottom | inherit",clear:"none | right | left | both | inherit",clip:1,color:"<color> | inherit","color-profile":1,"column-count":"<integer> | auto","column-fill":"auto | balance","column-gap":"<length> | normal","column-rule":"<border-width> || <border-style> || <color>","column-rule-color":"<color>","column-rule-style":"<border-style>","column-rule-width":"<border-width>","column-span":"none | all","column-width":"<length> | auto",columns:1,content:1,"counter-increment":1,"counter-reset":1,crop:"<shape> | auto",cue:"cue-after | cue-before | inherit","cue-after":1,"cue-before":1,cursor:1,direction:"ltr | rtl | inherit",display:"inline | block | list-item | inline-block | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | grid | inline-grid | none | inherit | -moz-box | -moz-inline-block | -moz-inline-box | -moz-inline-grid | -moz-inline-stack | -moz-inline-table | -moz-grid | -moz-grid-group | -moz-grid-line | -moz-groupbox | -moz-deck | -moz-popup | -moz-stack | -moz-marker | -webkit-box | -webkit-inline-box | -ms-flexbox | -ms-inline-flexbox | flex | -webkit-flex | inline-flex | -webkit-inline-flex","dominant-baseline":1,"drop-initial-after-adjust":"central | middle | after-edge | text-after-edge | ideographic | alphabetic | mathematical | <percentage> | <length>","drop-initial-after-align":"baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical","drop-initial-before-adjust":"before-edge | text-before-edge | central | middle | hanging | mathematical | <percentage> | <length>","drop-initial-before-align":"caps-height | baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical","drop-initial-size":"auto | line | <length> | <percentage>","drop-initial-value":"initial | <integer>",elevation:"<angle> | below | level | above | higher | lower | inherit","empty-cells":"show | hide | inherit",filter:1,fit:"fill | hidden | meet | slice","fit-position":1,flex:"<flex>","flex-basis":"<width>","flex-direction":"row | row-reverse | column | column-reverse","flex-flow":"<flex-direction> || <flex-wrap>","flex-grow":"<number>","flex-shrink":"<number>","flex-wrap":"nowrap | wrap | wrap-reverse","-webkit-flex":"<flex>","-webkit-flex-basis":"<width>","-webkit-flex-direction":"row | row-reverse | column | column-reverse","-webkit-flex-flow":"<flex-direction> || <flex-wrap>","-webkit-flex-grow":"<number>","-webkit-flex-shrink":"<number>","-webkit-flex-wrap":"nowrap | wrap | wrap-reverse","-ms-flex":"<flex>","-ms-flex-align":"start | end | center | stretch | baseline","-ms-flex-direction":"row | row-reverse | column | column-reverse | inherit","-ms-flex-order":"<number>","-ms-flex-pack":"start | end | center | justify","-ms-flex-wrap":"nowrap | wrap | wrap-reverse","float":"left | right | none | inherit","float-offset":1,font:1,"font-family":1,"font-size":"<absolute-size> | <relative-size> | <length> | <percentage> | inherit","font-size-adjust":"<number> | none | inherit","font-stretch":"normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit","font-style":"normal | italic | oblique | inherit","font-variant":"normal | small-caps | inherit","font-weight":"normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit","grid-cell-stacking":"columns | rows | layer","grid-column":1,"grid-columns":1,"grid-column-align":"start | end | center | stretch","grid-column-sizing":1,"grid-column-span":"<integer>","grid-flow":"none | rows | columns","grid-layer":"<integer>","grid-row":1,"grid-rows":1,"grid-row-align":"start | end | center | stretch","grid-row-span":"<integer>","grid-row-sizing":1,"hanging-punctuation":1,height:"<margin-width> | <content-sizing> | inherit","hyphenate-after":"<integer> | auto","hyphenate-before":"<integer> | auto","hyphenate-character":"<string> | auto","hyphenate-lines":"no-limit | <integer>","hyphenate-resource":1,hyphens:"none | manual | auto",icon:1,"image-orientation":"angle | auto","image-rendering":1,"image-resolution":1,"inline-box-align":"initial | last | <integer>","justify-content":"flex-start | flex-end | center | space-between | space-around","-webkit-justify-content":"flex-start | flex-end | center | space-between | space-around",left:"<margin-width> | inherit","letter-spacing":"<length> | normal | inherit","line-height":"<number> | <length> | <percentage> | normal | inherit","line-break":"auto | loose | normal | strict","line-stacking":1,"line-stacking-ruby":"exclude-ruby | include-ruby","line-stacking-shift":"consider-shifts | disregard-shifts","line-stacking-strategy":"inline-line-height | block-line-height | max-height | grid-height","list-style":1,"list-style-image":"<uri> | none | inherit","list-style-position":"inside | outside | inherit","list-style-type":"disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | lower-alpha | upper-alpha | none | inherit",margin:{multi:"<margin-width> | inherit",max:4},"margin-bottom":"<margin-width> | inherit","margin-left":"<margin-width> | inherit","margin-right":"<margin-width> | inherit","margin-top":"<margin-width> | inherit",mark:1,"mark-after":1,"mark-before":1,marks:1,"marquee-direction":1,"marquee-play-count":1,"marquee-speed":1,"marquee-style":1,"max-height":"<length> | <percentage> | <content-sizing> | none | inherit","max-width":"<length> | <percentage> | <content-sizing> | none | inherit","min-height":"<length> | <percentage> | <content-sizing> | contain-floats | -moz-contain-floats | -webkit-contain-floats | inherit","min-width":"<length> | <percentage> | <content-sizing> | contain-floats | -moz-contain-floats | -webkit-contain-floats | inherit","move-to":1,"nav-down":1,"nav-index":1,"nav-left":1,"nav-right":1,"nav-up":1,opacity:"<number> | inherit",order:"<integer>","-webkit-order":"<integer>",orphans:"<integer> | inherit",outline:1,"outline-color":"<color> | invert | inherit","outline-offset":1,"outline-style":"<border-style> | inherit","outline-width":"<border-width> | inherit",overflow:"visible | hidden | scroll | auto | inherit","overflow-style":1,"overflow-wrap":"normal | break-word","overflow-x":1,"overflow-y":1,padding:{multi:"<padding-width> | inherit",max:4},"padding-bottom":"<padding-width> | inherit","padding-left":"<padding-width> | inherit","padding-right":"<padding-width> | inherit","padding-top":"<padding-width> | inherit",page:1,"page-break-after":"auto | always | avoid | left | right | inherit","page-break-before":"auto | always | avoid | left | right | inherit","page-break-inside":"auto | avoid | inherit","page-policy":1,pause:1,"pause-after":1,"pause-before":1,perspective:1,"perspective-origin":1,phonemes:1,pitch:1,"pitch-range":1,"play-during":1,"pointer-events":"auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit",position:"static | relative | absolute | fixed | inherit","presentation-level":1,"punctuation-trim":1,quotes:1,"rendering-intent":1,resize:1,rest:1,"rest-after":1,"rest-before":1,richness:1,right:"<margin-width> | inherit",rotation:1,"rotation-point":1,"ruby-align":1,"ruby-overhang":1,"ruby-position":1,"ruby-span":1,size:1,speak:"normal | none | spell-out | inherit","speak-header":"once | always | inherit","speak-numeral":"digits | continuous | inherit","speak-punctuation":"code | none | inherit","speech-rate":1,src:1,stress:1,"string-set":1,"table-layout":"auto | fixed | inherit","tab-size":"<integer> | <length>",target:1,"target-name":1,"target-new":1,"target-position":1,"text-align":"left | right | center | justify | inherit","text-align-last":1,"text-decoration":1,"text-emphasis":1,"text-height":1,"text-indent":"<length> | <percentage> | inherit","text-justify":"auto | none | inter-word | inter-ideograph | inter-cluster | distribute | kashida","text-outline":1,"text-overflow":1,"text-rendering":"auto | optimizeSpeed | optimizeLegibility | geometricPrecision | inherit","text-shadow":1,"text-transform":"capitalize | uppercase | lowercase | none | inherit","text-wrap":"normal | none | avoid",top:"<margin-width> | inherit","-ms-touch-action":"auto | none | pan-x | pan-y","touch-action":"auto | none | pan-x | pan-y",transform:1,"transform-origin":1,"transform-style":1,transition:1,"transition-delay":1,"transition-duration":1,"transition-property":1,"transition-timing-function":1,"unicode-bidi":"normal | embed | isolate | bidi-override | isolate-override | plaintext | inherit","user-modify":"read-only | read-write | write-only | inherit","user-select":"none | text | toggle | element | elements | all | inherit","vertical-align":"auto | use-script | baseline | sub | super | top | text-top | central | middle | bottom | text-bottom | <percentage> | <length>",visibility:"visible | hidden | collapse | inherit","voice-balance":1,"voice-duration":1,"voice-family":1,"voice-pitch":1,"voice-pitch-range":1,"voice-rate":1,"voice-stress":1,"voice-volume":1,volume:1,"white-space":"normal | pre | nowrap | pre-wrap | pre-line | inherit | -pre-wrap | -o-pre-wrap | -moz-pre-wrap | -hp-pre-wrap","white-space-collapse":1,widows:"<integer> | inherit",width:"<length> | <percentage> | <content-sizing> | auto | inherit","word-break":"normal | keep-all | break-all","word-spacing":"<length> | normal | inherit","word-wrap":"normal | break-word","writing-mode":"horizontal-tb | vertical-rl | vertical-lr | lr-tb | rl-tb | tb-rl | bt-rl | tb-lr | bt-lr | lr-bt | rl-bt | lr | rl | tb | inherit","z-index":"<integer> | auto | inherit",zoom:"<number> | <percentage> | normal"};PropertyName.prototype=new SyntaxUnit,PropertyName.prototype.constructor=PropertyName,PropertyName.prototype.toString=function(){return(this.hack?this.hack:"")+this.text},PropertyValue.prototype=new SyntaxUnit,PropertyValue.prototype.constructor=PropertyValue,PropertyValueIterator.prototype.count=function(){return this._parts.length},PropertyValueIterator.prototype.isFirst=function(){return this._i===0},PropertyValueIterator.prototype.hasNext=function(){return this._i<this._parts.length},PropertyValueIterator.prototype.mark=function(){this._marks.push(this._i)},PropertyValueIterator.prototype.peek=function(e){return this.hasNext()?this._parts[this._i+(e||0)]:null},PropertyValueIterator.prototype.next=function(){return this.hasNext()?this._parts[this._i++]:null},PropertyValueIterator.prototype.previous=function(){return this._i>0?this._parts[--this._i]:null},PropertyValueIterator.prototype.restore=function(){this._marks.length&&(this._i=this._marks.pop())},PropertyValuePart.prototype=new SyntaxUnit,PropertyValuePart.prototype.constructor=PropertyValuePart,PropertyValuePart.fromToken=function(e){return new PropertyValuePart(e.value,e.startLine,e.startCol)};var Pseudos={":first-letter":1,":first-line":1,":before":1,":after":1};Pseudos.ELEMENT=1,Pseudos.CLASS=2,Pseudos.isElement=function(e){return e.indexOf("::")===0||Pseudos[e.toLowerCase()]==Pseudos.ELEMENT},Selector.prototype=new SyntaxUnit,Selector.prototype.constructor=Selector,SelectorPart.prototype=new SyntaxUnit,SelectorPart.prototype.constructor=SelectorPart,SelectorSubPart.prototype=new SyntaxUnit,SelectorSubPart.prototype.constructor=SelectorSubPart,Specificity.prototype={constructor:Specificity,compare:function(e){var t=["a","b","c","d"],n,r;for(n=0,r=t.length;n<r;n++){if(this[t[n]]<e[t[n]])return-1;if(this[t[n]]>e[t[n]])return 1}return 0},valueOf:function(){return this.a*1e3+this.b*100+this.c*10+this.d},toString:function(){return this.a+","+this.b+","+this.c+","+this.d}},Specificity.calculate=function(e){function u(e){var t,n,r,a,f=e.elementName?e.elementName.text:"",l;f&&f.charAt(f.length-1)!="*"&&o++;for(t=0,r=e.modifiers.length;t<r;t++){l=e.modifiers[t];switch(l.type){case"class":case"attribute":s++;break;case"id":i++;break;case"pseudo":Pseudos.isElement(l.text)?o++:s++;break;case"not":for(n=0,a=l.args.length;n<a;n++)u(l.args[n])}}}var t,n,r,i=0,s=0,o=0;for(t=0,n=e.parts.length;t<n;t++)r=e.parts[t],r instanceof SelectorPart&&u(r);return new Specificity(0,i,s,o)};var h=/^[0-9a-fA-F]$/,nonascii=/^[\u0080-\uFFFF]$/,nl=/\n|\r\n|\r|\f/;TokenStream.prototype=mix(new TokenStreamBase,{_getToken:function(e){var t,n=this._reader,r=null,i=n.getLine(),s=n.getCol();t=n.read();while(t){switch(t){case"/":n.peek()=="*"?r=this.commentToken(t,i,s):r=this.charToken(t,i,s);break;case"|":case"~":case"^":case"$":case"*":n.peek()=="="?r=this.comparisonToken(t,i,s):r=this.charToken(t,i,s);break;case'"':case"'":r=this.stringToken(t,i,s);break;case"#":isNameChar(n.peek())?r=this.hashToken(t,i,s):r=this.charToken(t,i,s);break;case".":isDigit(n.peek())?r=this.numberToken(t,i,s):r=this.charToken(t,i,s);break;case"-":n.peek()=="-"?r=this.htmlCommentEndToken(t,i,s):isNameStart(n.peek())?r=this.identOrFunctionToken(t,i,s):r=this.charToken(t,i,s);break;case"!":r=this.importantToken(t,i,s);break;case"@":r=this.atRuleToken(t,i,s);break;case":":r=this.notToken(t,i,s);break;case"<":r=this.htmlCommentStartToken(t,i,s);break;case"U":case"u":if(n.peek()=="+"){r=this.unicodeRangeToken(t,i,s);break};default:isDigit(t)?r=this.numberToken(t,i,s):isWhitespace(t)?r=this.whitespaceToken(t,i,s):isIdentStart(t)?r=this.identOrFunctionToken(t,i,s):r=this.charToken(t,i,s)}break}return!r&&t===null&&(r=this.createToken(Tokens.EOF,null,i,s)),r},createToken:function(e,t,n,r,i){var s=this._reader;return i=i||{},{value:t,type:e,channel:i.channel,endChar:i.endChar,hide:i.hide||!1,startLine:n,startCol:r,endLine:s.getLine(),endCol:s.getCol()}},atRuleToken:function(e,t,n){var r=e,i=this._reader,s=Tokens.CHAR,o=!1,u,a;i.mark(),u=this.readName(),r=e+u,s=Tokens.type(r.toLowerCase());if(s==Tokens.CHAR||s==Tokens.UNKNOWN)r.length>1?s=Tokens.UNKNOWN_SYM:(s=Tokens.CHAR,r=e,i.reset());return this.createToken(s,r,t,n)},charToken:function(e,t,n){var r=Tokens.type(e),i={};return r==-1?r=Tokens.CHAR:i.endChar=Tokens[r].endChar,this.createToken(r,e,t,n,i)},commentToken:function(e,t,n){var r=this._reader,i=this.readComment(e);return this.createToken(Tokens.COMMENT,i,t,n)},comparisonToken:function(e,t,n){var r=this._reader,i=e+r.read(),s=Tokens.type(i)||Tokens.CHAR;return this.createToken(s,i,t,n)},hashToken:function(e,t,n){var r=this._reader,i=this.readName(e);return this.createToken(Tokens.HASH,i,t,n)},htmlCommentStartToken:function(e,t,n){var r=this._reader,i=e;return r.mark(),i+=r.readCount(3),i=="<!--"?this.createToken(Tokens.CDO,i,t,n):(r.reset(),this.charToken(e,t,n))},htmlCommentEndToken:function(e,t,n){var r=this._reader,i=e;return r.mark(),i+=r.readCount(2),i=="-->"?this.createToken(Tokens.CDC,i,t,n):(r.reset(),this.charToken(e,t,n))},identOrFunctionToken:function(e,t,n){var r=this._reader,i=this.readName(e),s=Tokens.IDENT;return r.peek()=="("?(i+=r.read(),i.toLowerCase()=="url("?(s=Tokens.URI,i=this.readURI(i),i.toLowerCase()=="url("&&(s=Tokens.FUNCTION)):s=Tokens.FUNCTION):r.peek()==":"&&i.toLowerCase()=="progid"&&(i+=r.readTo("("),s=Tokens.IE_FUNCTION),this.createToken(s,i,t,n)},importantToken:function(e,t,n){var r=this._reader,i=e,s=Tokens.CHAR,o,u;r.mark(),u=r.read();while(u){if(u=="/"){if(r.peek()!="*")break;o=this.readComment(u);if(o==="")break}else{if(!isWhitespace(u)){if(/i/i.test(u)){o=r.readCount(8),/mportant/i.test(o)&&(i+=u+o,s=Tokens.IMPORTANT_SYM);break}break}i+=u+this.readWhitespace()}u=r.read()}return s==Tokens.CHAR?(r.reset(),this.charToken(e,t,n)):this.createToken(s,i,t,n)},notToken:function(e,t,n){var r=this._reader,i=e;return r.mark(),i+=r.readCount(4),i.toLowerCase()==":not("?this.createToken(Tokens.NOT,i,t,n):(r.reset(),this.charToken(e,t,n))},numberToken:function(e,t,n){var r=this._reader,i=this.readNumber(e),s,o=Tokens.NUMBER,u=r.peek();return isIdentStart(u)?(s=this.readName(r.read()),i+=s,/^em$|^ex$|^px$|^gd$|^rem$|^vw$|^vh$|^vmax$|^vmin$|^ch$|^cm$|^mm$|^in$|^pt$|^pc$/i.test(s)?o=Tokens.LENGTH:/^deg|^rad$|^grad$/i.test(s)?o=Tokens.ANGLE:/^ms$|^s$/i.test(s)?o=Tokens.TIME:/^hz$|^khz$/i.test(s)?o=Tokens.FREQ:/^dpi$|^dpcm$/i.test(s)?o=Tokens.RESOLUTION:o=Tokens.DIMENSION):u=="%"&&(i+=r.read(),o=Tokens.PERCENTAGE),this.createToken(o,i,t,n)},stringToken:function(e,t,n){var r=e,i=e,s=this._reader,o=e,u=Tokens.STRING,a=s.read();while(a){i+=a;if(a==r&&o!="\\")break;if(isNewLine(s.peek())&&a!="\\"){u=Tokens.INVALID;break}o=a,a=s.read()}return a===null&&(u=Tokens.INVALID),this.createToken(u,i,t,n)},unicodeRangeToken:function(e,t,n){var r=this._reader,i=e,s,o=Tokens.CHAR;return r.peek()=="+"&&(r.mark(),i+=r.read(),i+=this.readUnicodeRangePart(!0),i.length==2?r.reset():(o=Tokens.UNICODE_RANGE,i.indexOf("?")==-1&&r.peek()=="-"&&(r.mark(),s=r.read(),s+=this.readUnicodeRangePart(!1),s.length==1?r.reset():i+=s))),this.createToken(o,i,t,n)},whitespaceToken:function(e,t,n){var r=this._reader,i=e+this.readWhitespace();return this.createToken(Tokens.S,i,t,n)},readUnicodeRangePart:function(e){var t=this._reader,n="",r=t.peek();while(isHexDigit(r)&&n.length<6)t.read(),n+=r,r=t.peek();if(e)while(r=="?"&&n.length<6)t.read(),n+=r,r=t.peek();return n},readWhitespace:function(){var e=this._reader,t="",n=e.peek();while(isWhitespace(n))e.read(),t+=n,n=e.peek();return t},readNumber:function(e){var t=this._reader,n=e,r=e==".",i=t.peek();while(i){if(isDigit(i))n+=t.read();else{if(i!=".")break;if(r)break;r=!0,n+=t.read()}i=t.peek()}return n},readString:function(){var e=this._reader,t=e.read(),n=t,r=t,i=e.peek();while(i){i=e.read(),n+=i;if(i==t&&r!="\\")break;if(isNewLine(e.peek())&&i!="\\"){n="";break}r=i,i=e.peek()}return i===null&&(n=""),n},readURI:function(e){var t=this._reader,n=e,r="",i=t.peek();t.mark();while(i&&isWhitespace(i))t.read(),i=t.peek();i=="'"||i=='"'?r=this.readString():r=this.readURL(),i=t.peek();while(i&&isWhitespace(i))t.read(),i=t.peek();return r===""||i!=")"?(n=e,t.reset()):n+=r+t.read(),n},readURL:function(){var e=this._reader,t="",n=e.peek();while(/^[!#$%&\\*-~]$/.test(n))t+=e.read(),n=e.peek();return t},readName:function(e){var t=this._reader,n=e||"",r=t.peek();for(;;)if(r=="\\")n+=this.readEscape(t.read()),r=t.peek();else{if(!r||!isNameChar(r))break;n+=t.read(),r=t.peek()}return n},readEscape:function(e){var t=this._reader,n=e||"",r=0,i=t.peek();if(isHexDigit(i))do n+=t.read(),i=t.peek();while(i&&isHexDigit(i)&&++r<6);return n.length==3&&/\s/.test(i)||n.length==7||n.length==1?t.read():i="",n+i},readComment:function(e){var t=this._reader,n=e||"",r=t.read();if(r=="*"){while(r){n+=r;if(n.length>2&&r=="*"&&t.peek()=="/"){n+=t.read();break}r=t.read()}return n}return""}});var Tokens=[{name:"CDO"},{name:"CDC"},{name:"S",whitespace:!0},{name:"COMMENT",comment:!0,hide:!0,channel:"comment"},{name:"INCLUDES",text:"~="},{name:"DASHMATCH",text:"|="},{name:"PREFIXMATCH",text:"^="},{name:"SUFFIXMATCH",text:"$="},{name:"SUBSTRINGMATCH",text:"*="},{name:"STRING"},{name:"IDENT"},{name:"HASH"},{name:"IMPORT_SYM",text:"@import"},{name:"PAGE_SYM",text:"@page"},{name:"MEDIA_SYM",text:"@media"},{name:"FONT_FACE_SYM",text:"@font-face"},{name:"CHARSET_SYM",text:"@charset"},{name:"NAMESPACE_SYM",text:"@namespace"},{name:"VIEWPORT_SYM",text:["@viewport","@-ms-viewport"]},{name:"UNKNOWN_SYM"},{name:"KEYFRAMES_SYM",text:["@keyframes","@-webkit-keyframes","@-moz-keyframes","@-o-keyframes"]},{name:"IMPORTANT_SYM"},{name:"LENGTH"},{name:"ANGLE"},{name:"TIME"},{name:"FREQ"},{name:"DIMENSION"},{name:"PERCENTAGE"},{name:"NUMBER"},{name:"URI"},{name:"FUNCTION"},{name:"UNICODE_RANGE"},{name:"INVALID"},{name:"PLUS",text:"+"},{name:"GREATER",text:">"},{name:"COMMA",text:","},{name:"TILDE",text:"~"},{name:"NOT"},{name:"TOPLEFTCORNER_SYM",text:"@top-left-corner"},{name:"TOPLEFT_SYM",text:"@top-left"},{name:"TOPCENTER_SYM",text:"@top-center"},{name:"TOPRIGHT_SYM",text:"@top-right"},{name:"TOPRIGHTCORNER_SYM",text:"@top-right-corner"},{name:"BOTTOMLEFTCORNER_SYM",text:"@bottom-left-corner"},{name:"BOTTOMLEFT_SYM",text:"@bottom-left"},{name:"BOTTOMCENTER_SYM",text:"@bottom-center"},{name:"BOTTOMRIGHT_SYM",text:"@bottom-right"},{name:"BOTTOMRIGHTCORNER_SYM",text:"@bottom-right-corner"},{name:"LEFTTOP_SYM",text:"@left-top"},{name:"LEFTMIDDLE_SYM",text:"@left-middle"},{name:"LEFTBOTTOM_SYM",text:"@left-bottom"},{name:"RIGHTTOP_SYM",text:"@right-top"},{name:"RIGHTMIDDLE_SYM",text:"@right-middle"},{name:"RIGHTBOTTOM_SYM",text:"@right-bottom"},{name:"RESOLUTION",state:"media"},{name:"IE_FUNCTION"},{name:"CHAR"},{name:"PIPE",text:"|"},{name:"SLASH",text:"/"},{name:"MINUS",text:"-"},{name:"STAR",text:"*"},{name:"LBRACE",endChar:"}",text:"{"},{name:"RBRACE",text:"}"},{name:"LBRACKET",endChar:"]",text:"["},{name:"RBRACKET",text:"]"},{name:"EQUALS",text:"="},{name:"COLON",text:":"},{name:"SEMICOLON",text:";"},{name:"LPAREN",endChar:")",text:"("},{name:"RPAREN",text:")"},{name:"DOT",text:"."}];(function(){var e=[],t={};Tokens.UNKNOWN=-1,Tokens.unshift({name:"EOF"});for(var n=0,r=Tokens.length;n<r;n++){e.push(Tokens[n].name),Tokens[Tokens[n].name]=n;if(Tokens[n].text)if(Tokens[n].text instanceof Array)for(var i=0;i<Tokens[n].text.length;i++)t[Tokens[n].text[i]]=n;else t[Tokens[n].text]=n}Tokens.name=function(t){return e[t]},Tokens.type=function(e){return t[e]||-1}})();var Validation={validate:function(e,t){var n=e.toString().toLowerCase(),r=t.parts,i=new PropertyValueIterator(t),s=Properties[n],o,u,a,f,l,c,h,p,d,v,m;if(!s){if(n.indexOf("-")!==0)throw new ValidationError("Unknown property '"+e+"'.",e.line,e.col)}else typeof s!="number"&&(typeof s=="string"?s.indexOf("||")>-1?this.groupProperty(s,i):this.singleProperty(s,i,1):s.multi?this.multiProperty(s.multi,i,s.comma,s.max||Infinity):typeof s=="function"&&s(i))},singleProperty:function(e,t,n,r){var i=!1,s=t.value,o=0,u;while(t.hasNext()&&o<n){i=ValidationTypes.isAny(t,e);if(!i)break;o++}if(!i)throw t.hasNext()&&!t.isFirst()?(u=t.peek(),new ValidationError("Expected end of value but found '"+u+"'.",u.line,u.col)):new ValidationError("Expected ("+e+") but found '"+s+"'.",s.line,s.col);if(t.hasNext())throw u=t.next(),new ValidationError("Expected end of value but found '"+u+"'.",u.line,u.col)},multiProperty:function(e,t,n,r){var i=!1,s=t.value,o=0,u=!1,a;while(t.hasNext()&&!i&&o<r){if(!ValidationTypes.isAny(t,e))break;o++;if(!t.hasNext())i=!0;else if(n){if(t.peek()!=",")break;a=t.next()}}if(!i)throw t.hasNext()&&!t.isFirst()?(a=t.peek(),new ValidationError("Expected end of value but found '"+a+"'.",a.line,a.col)):(a=t.previous(),n&&a==","?new ValidationError("Expected end of value but found '"+a+"'.",a.line,a.col):new ValidationError("Expected ("+e+") but found '"+s+"'.",s.line,s.col));if(t.hasNext())throw a=t.next(),new ValidationError("Expected end of value but found '"+a+"'.",a.line,a.col)},groupProperty:function(e,t,n){var r=!1,i=t.value,s=e.split("||").length,o={count:0},u=!1,a,f;while(t.hasNext()&&!r){a=ValidationTypes.isAnyOfGroup(t,e);if(!a)break;if(o[a])break;o[a]=1,o.count++,u=!0;if(o.count==s||!t.hasNext())r=!0}if(!r)throw u&&t.hasNext()?(f=t.peek(),new ValidationError("Expected end of value but found '"+f+"'.",f.line,f.col)):new ValidationError("Expected ("+e+") but found '"+i+"'.",i.line,i.col);if(t.hasNext())throw f=t.next(),new ValidationError("Expected end of value but found '"+f+"'.",f.line,f.col)}};ValidationError.prototype=new Error;var ValidationTypes={isLiteral:function(e,t){var n=e.text.toString().toLowerCase(),r=t.split(" | "),i,s,o=!1;for(i=0,s=r.length;i<s&&!o;i++)n==r[i].toLowerCase()&&(o=!0);return o},isSimple:function(e){return!!this.simple[e]},isComplex:function(e){return!!this.complex[e]},isAny:function(e,t){var n=t.split(" | "),r,i,s=!1;for(r=0,i=n.length;r<i&&!s&&e.hasNext();r++)s=this.isType(e,n[r]);return s},isAnyOfGroup:function(e,t){var n=t.split(" || "),r,i,s=!1;for(r=0,i=n.length;r<i&&!s;r++)s=this.isType(e,n[r]);return s?n[r-1]:!1},isType:function(e,t){var n=e.peek(),r=!1;return t.charAt(0)!="<"?(r=this.isLiteral(n,t),r&&e.next()):this.simple[t]?(r=this.simple[t](n),r&&e.next()):r=this.complex[t](e),r},simple:{"<absolute-size>":function(e){return ValidationTypes.isLiteral(e,"xx-small | x-small | small | medium | large | x-large | xx-large")},"<attachment>":function(e){return ValidationTypes.isLiteral(e,"scroll | fixed | local")},"<attr>":function(e){return e.type=="function"&&e.name=="attr"},"<bg-image>":function(e){return this["<image>"](e)||this["<gradient>"](e)||e=="none"},"<gradient>":function(e){return e.type=="function"&&/^(?:\-(?:ms|moz|o|webkit)\-)?(?:repeating\-)?(?:radial\-|linear\-)?gradient/i.test(e)},"<box>":function(e){return ValidationTypes.isLiteral(e,"padding-box | border-box | content-box")},"<content>":function(e){return e.type=="function"&&e.name=="content"},"<relative-size>":function(e){return ValidationTypes.isLiteral(e,"smaller | larger")},"<ident>":function(e){return e.type=="identifier"},"<length>":function(e){return e.type=="function"&&/^(?:\-(?:ms|moz|o|webkit)\-)?calc/i.test(e)?!0:e.type=="length"||e.type=="number"||e.type=="integer"||e=="0"},"<color>":function(e){return e.type=="color"||e=="transparent"},"<number>":function(e){return e.type=="number"||this["<integer>"](e)},"<integer>":function(e){return e.type=="integer"},"<line>":function(e){return e.type=="integer"},"<angle>":function(e){return e.type=="angle"},"<uri>":function(e){return e.type=="uri"},"<image>":function(e){return this["<uri>"](e)},"<percentage>":function(e){return e.type=="percentage"||e=="0"},"<border-width>":function(e){return this["<length>"](e)||ValidationTypes.isLiteral(e,"thin | medium | thick")},"<border-style>":function(e){return ValidationTypes.isLiteral(e,"none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset")},"<content-sizing>":function(e){return ValidationTypes.isLiteral(e,"fill-available | -moz-available | -webkit-fill-available | max-content | -moz-max-content | -webkit-max-content | min-content | -moz-min-content | -webkit-min-content | fit-content | -moz-fit-content | -webkit-fit-content")},"<margin-width>":function(e){return this["<length>"](e)||this["<percentage>"](e)||ValidationTypes.isLiteral(e,"auto")},"<padding-width>":function(e){return this["<length>"](e)||this["<percentage>"](e)},"<shape>":function(e){return e.type=="function"&&(e.name=="rect"||e.name=="inset-rect")},"<time>":function(e){return e.type=="time"},"<flex-grow>":function(e){return this["<number>"](e)},"<flex-shrink>":function(e){return this["<number>"](e)},"<width>":function(e){return this["<margin-width>"](e)},"<flex-basis>":function(e){return this["<width>"](e)},"<flex-direction>":function(e){return ValidationTypes.isLiteral(e,"row | row-reverse | column | column-reverse")},"<flex-wrap>":function(e){return ValidationTypes.isLiteral(e,"nowrap | wrap | wrap-reverse")}},complex:{"<bg-position>":function(e){var t=this,n=!1,r="<percentage> | <length>",i="left | right",s="top | bottom",o=0,u=function(){return e.hasNext()&&e.peek()!=","};while(e.peek(o)&&e.peek(o)!=",")o++;return o<3?ValidationTypes.isAny(e,i+" | center | "+r)?(n=!0,ValidationTypes.isAny(e,s+" | center | "+r)):ValidationTypes.isAny(e,s)&&(n=!0,ValidationTypes.isAny(e,i+" | center")):ValidationTypes.isAny(e,i)?ValidationTypes.isAny(e,s)?(n=!0,ValidationTypes.isAny(e,r)):ValidationTypes.isAny(e,r)&&(ValidationTypes.isAny(e,s)?(n=!0,ValidationTypes.isAny(e,r)):ValidationTypes.isAny(e,"center")&&(n=!0)):ValidationTypes.isAny(e,s)?ValidationTypes.isAny(e,i)?(n=!0,ValidationTypes.isAny(e,r)):ValidationTypes.isAny(e,r)&&(ValidationTypes.isAny(e,i)?(n=!0,ValidationTypes.isAny(e,r)):ValidationTypes.isAny(e,"center")&&(n=!0)):ValidationTypes.isAny(e,"center")&&ValidationTypes.isAny(e,i+" | "+s)&&(n=!0,ValidationTypes.isAny(e,r)),n},"<bg-size>":function(e){var t=this,n=!1,r="<percentage> | <length> | auto",i,s,o;return ValidationTypes.isAny(e,"cover | contain")?n=!0:ValidationTypes.isAny(e,r)&&(n=!0,ValidationTypes.isAny(e,r)),n},"<repeat-style>":function(e){var t=!1,n="repeat | space | round | no-repeat",r;return e.hasNext()&&(r=e.next(),ValidationTypes.isLiteral(r,"repeat-x | repeat-y")?t=!0:ValidationTypes.isLiteral(r,n)&&(t=!0,e.hasNext()&&ValidationTypes.isLiteral(e.peek(),n)&&e.next())),t},"<shadow>":function(e){var t=!1,n=0,r=!1,i=!1,s;if(e.hasNext()){ValidationTypes.isAny(e,"inset")&&(r=!0),ValidationTypes.isAny(e,"<color>")&&(i=!0);while(ValidationTypes.isAny(e,"<length>")&&n<4)n++;e.hasNext()&&(i||ValidationTypes.isAny(e,"<color>"),r||ValidationTypes.isAny(e,"inset")),t=n>=2&&n<=4}return t},"<x-one-radius>":function(e){var t=!1,n="<length> | <percentage> | inherit";return ValidationTypes.isAny(e,n)&&(t=!0,ValidationTypes.isAny(e,n)),t},"<flex>":function(e){var t,n=!1;ValidationTypes.isAny(e,"none | inherit")?n=!0:ValidationTypes.isType(e,"<flex-grow>")?e.peek()?ValidationTypes.isType(e,"<flex-shrink>")?e.peek()?n=ValidationTypes.isType(e,"<flex-basis>"):n=!0:ValidationTypes.isType(e,"<flex-basis>")&&(n=e.peek()===null):n=!0:ValidationTypes.isType(e,"<flex-basis>")&&(n=!0);if(!n)throw t=e.peek(),new ValidationError("Expected (none | [ <flex-grow> <flex-shrink>? || <flex-basis> ]) but found '"+e.value.text+"'.",t.line,t.col);return n}}};parserlib.css={Colors:Colors,Combinator:Combinator,Parser:Parser,PropertyName:PropertyName,PropertyValue:PropertyValue,PropertyValuePart:PropertyValuePart,MediaFeature:MediaFeature,MediaQuery:MediaQuery,Selector:Selector,SelectorPart:SelectorPart,SelectorSubPart:SelectorSubPart,Specificity:Specificity,TokenStream:TokenStream,Tokens:Tokens,ValidationError:ValidationError}}(),function(){for(var e in parserlib)exports[e]=parserlib[e]}();var util={isArray:function(e){return Array.isArray(e)||typeof e=="object"&&objectToString(e)==="[object Array]"},isDate:function(e){return typeof e=="object"&&objectToString(e)==="[object Date]"},isRegExp:function(e){return typeof e=="object"&&objectToString(e)==="[object RegExp]"},getRegExpFlags:function(e){var t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),t}};typeof module=="object"&&(module.exports=clone),clone.clonePrototype=function(e){if(e===null)return null;var t=function(){};return t.prototype=e,new t};var CSSLint=function(){function i(e,t){var r,i=e&&e.match(n),s=i&&i[1];return s&&(r={"true":2,"":1,"false":0,2:2,1:1,0:0},s.toLowerCase().split(",").forEach(function(e){var n=e.split(":"),i=n[0]||"",s=n[1]||"";t[i.trim()]=r[s.trim()]})),t}var e=[],t=[],n=/\/\*csslint([^\*]*)\*\//,r=new parserlib.util.EventTarget;return r.version="@VERSION@",r.addRule=function(t){e.push(t),e[t.id]=t},r.clearRules=function(){e=[]},r.getRules=function(){return[].concat(e).sort(function(e,t){return e.id>t.id?1:0})},r.getRuleset=function(){var t={},n=0,r=e.length;while(n<r)t[e[n++].id]=1;return t},r.addFormatter=function(e){t[e.id]=e},r.getFormatter=function(e){return t[e]},r.format=function(e,t,n,r){var i=this.getFormatter(n),s=null;return i&&(s=i.startFormat(),s+=i.formatResults(e,t,r||{}),s+=i.endFormat()),s},r.hasFormat=function(e){return t.hasOwnProperty(e)},r.verify=function(t,r){var s=0,o,u,a,f=new parserlib.css.Parser({starHack:!0,ieFilters:!0,underscoreHack:!0,strict:!1});u=t.replace(/\n\r?/g,"$split$").split("$split$"),r||(r=this.getRuleset()),n.test(t)&&(r=clone(r),r=i(t,r)),o=new Reporter(u,r),r.errors=2;for(s in r)r.hasOwnProperty(s)&&r[s]&&e[s]&&e[s].init(f,o);try{f.parse(t)}catch(l){o.error("Fatal error, cannot continue: "+l.message,l.line,l.col,{})}return a={messages:o.messages,stats:o.stats,ruleset:o.ruleset},a.messages.sort(function(e,t){return e.rollup&&!t.rollup?1:!e.rollup&&t.rollup?-1:e.line-t.line}),a},r}();Reporter.prototype={constructor:Reporter,error:function(e,t,n,r){this.messages.push({type:"error",line:t,col:n,message:e,evidence:this.lines[t-1],rule:r||{}})},warn:function(e,t,n,r){this.report(e,t,n,r)},report:function(e,t,n,r){this.messages.push({type:this.ruleset[r.id]===2?"error":"warning",line:t,col:n,message:e,evidence:this.lines[t-1],rule:r})},info:function(e,t,n,r){this.messages.push({type:"info",line:t,col:n,message:e,evidence:this.lines[t-1],rule:r})},rollupError:function(e,t){this.messages.push({type:"error",rollup:!0,message:e,rule:t})},rollupWarn:function(e,t){this.messages.push({type:"warning",rollup:!0,message:e,rule:t})},stat:function(e,t){this.stats[e]=t}},CSSLint._Reporter=Reporter,CSSLint.Util={mix:function(e,t){var n;for(n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return n},indexOf:function(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},forEach:function(e,t){if(e.forEach)return e.forEach(t);for(var n=0,r=e.length;n<r;n++)t(e[n],n,e)}},CSSLint.addRule({id:"adjoining-classes",name:"Disallow adjoining classes",desc:"Don't use adjoining classes.",browsers:"IE6",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a,f,l,c;for(f=0;f<i.length;f++){s=i[f];for(l=0;l<s.parts.length;l++){o=s.parts[l];if(o.type===e.SELECTOR_PART_TYPE){a=0;for(c=0;c<o.modifiers.length;c++)u=o.modifiers[c],u.type==="class"&&a++,a>1&&t.report("Don't use adjoining classes.",o.line,o.col,n)}}}})}}),CSSLint.addRule({id:"box-model",name:"Beware of broken box size",desc:"Don't use width or height when using padding or border.",browsers:"All",init:function(e,t){function u(){s={},o=!1}function a(){var e,u;if(!o){if(s.height)for(e in i)i.hasOwnProperty(e)&&s[e]&&(u=s[e].value,(e!=="padding"||u.parts.length!==2||u.parts[0].value!==0)&&t.report("Using height with "+e+" can sometimes make elements larger than you expect.",s[e].line,s[e].col,n));if(s.width)for(e in r)r.hasOwnProperty(e)&&s[e]&&(u=s[e].value,(e!=="padding"||u.parts.length!==2||u.parts[1].value!==0)&&t.report("Using width with "+e+" can sometimes make elements larger than you expect.",s[e].line,s[e].col,n))}}var n=this,r={border:1,"border-left":1,"border-right":1,padding:1,"padding-left":1,"padding-right":1},i={border:1,"border-bottom":1,"border-top":1,padding:1,"padding-bottom":1,"padding-top":1},s,o=!1;e.addListener("startrule",u),e.addListener("startfontface",u),e.addListener("startpage",u),e.addListener("startpagemargin",u),e.addListener("startkeyframerule",u),e.addListener("property",function(e){var t=e.property.text.toLowerCase();i[t]||r[t]?!/^0\S*$/.test(e.value)&&(t!=="border"||e.value.toString()!=="none")&&(s[t]={line:e.property.line,col:e.property.col,value:e.value}):/^(width|height)/i.test(t)&&/^(length|percentage)/.test(e.value.parts[0].type)?s[t]=1:t==="box-sizing"&&(o=!0)}),e.addListener("endrule",a),e.addListener("endfontface",a),e.addListener("endpage",a),e.addListener("endpagemargin",a),e.addListener("endkeyframerule",a)}}),CSSLint.addRule({id:"box-sizing",name:"Disallow use of box-sizing",desc:"The box-sizing properties isn't supported in IE6 and IE7.",browsers:"IE6, IE7",tags:["Compatibility"],init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.property.text.toLowerCase();r==="box-sizing"&&t.report("The box-sizing property isn't supported in IE6 and IE7.",e.line,e.col,n)})}}),CSSLint.addRule({id:"bulletproof-font-face",name:"Use the bulletproof @font-face syntax",desc:"Use the bulletproof @font-face syntax to avoid 404's in old IE (http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax).",browsers:"All",init:function(e,t){var n=this,r=!1,i=!0,s=!1,o,u;e.addListener("startfontface",function(){r=!0}),e.addListener("property",function(e){if(!r)return;var t=e.property.toString().toLowerCase(),n=e.value.toString();o=e.line,u=e.col;if(t==="src"){var a=/^\s?url\(['"].+\.eot\?.*['"]\)\s*format\(['"]embedded-opentype['"]\).*$/i;!n.match(a)&&i?(s=!0,i=!1):n.match(a)&&!i&&(s=!1)}}),e.addListener("endfontface",function(){r=!1,s&&t.report("@font-face declaration doesn't follow the fontspring bulletproof syntax.",o,u,n)})}}),CSSLint.addRule({id:"compatible-vendor-prefixes",name:"Require compatible vendor prefixes",desc:"Include all compatible vendor prefixes to reach a wider range of users.",browsers:"All",init:function(e,t){var n=this,r,i,s,o,u,a,f,l=!1,c=Array.prototype.push,h=[];r={animation:"webkit moz","animation-delay":"webkit moz","animation-direction":"webkit moz","animation-duration":"webkit moz","animation-fill-mode":"webkit moz","animation-iteration-count":"webkit moz","animation-name":"webkit moz","animation-play-state":"webkit moz","animation-timing-function":"webkit moz",appearance:"webkit moz","border-end":"webkit moz","border-end-color":"webkit moz","border-end-style":"webkit moz","border-end-width":"webkit moz","border-image":"webkit moz o","border-radius":"webkit","border-start":"webkit moz","border-start-color":"webkit moz","border-start-style":"webkit moz","border-start-width":"webkit moz","box-align":"webkit moz ms","box-direction":"webkit moz ms","box-flex":"webkit moz ms","box-lines":"webkit ms","box-ordinal-group":"webkit moz ms","box-orient":"webkit moz ms","box-pack":"webkit moz ms","box-sizing":"webkit moz","box-shadow":"webkit moz","column-count":"webkit moz ms","column-gap":"webkit moz ms","column-rule":"webkit moz ms","column-rule-color":"webkit moz ms","column-rule-style":"webkit moz ms","column-rule-width":"webkit moz ms","column-width":"webkit moz ms",hyphens:"epub moz","line-break":"webkit ms","margin-end":"webkit moz","margin-start":"webkit moz","marquee-speed":"webkit wap","marquee-style":"webkit wap","padding-end":"webkit moz","padding-start":"webkit moz","tab-size":"moz o","text-size-adjust":"webkit ms",transform:"webkit moz ms o","transform-origin":"webkit moz ms o",transition:"webkit moz o","transition-delay":"webkit moz o","transition-duration":"webkit moz o","transition-property":"webkit moz o","transition-timing-function":"webkit moz o","user-modify":"webkit moz","user-select":"webkit moz ms","word-break":"epub ms","writing-mode":"epub ms"};for(s in r)if(r.hasOwnProperty(s)){o=[],u=r[s].split(" ");for(a=0,f=u.length;a<f;a++)o.push("-"+u[a]+"-"+s);r[s]=o,c.apply(h,o)}e.addListener("startrule",function(){i=[]}),e.addListener("startkeyframes",function(e){l=e.prefix||!0}),e.addListener("endkeyframes",function(){l=!1}),e.addListener("property",function(e){var t=e.property;CSSLint.Util.indexOf(h,t.text)>-1&&(!l||typeof l!="string"||t.text.indexOf("-"+l+"-")!==0)&&i.push(t)}),e.addListener("endrule",function(){if(!i.length)return;var e={},s,o,u,a,f,l,c,h,p,d;for(s=0,o=i.length;s<o;s++){u=i[s];for(a in r)r.hasOwnProperty(a)&&(f=r[a],CSSLint.Util.indexOf(f,u.text)>-1&&(e[a]||(e[a]={full:f.slice(0),actual:[],actualNodes:[]}),CSSLint.Util.indexOf(e[a].actual,u.text)===-1&&(e[a].actual.push(u.text),e[a].actualNodes.push(u))))}for(a in e)if(e.hasOwnProperty(a)){l=e[a],c=l.full,h=l.actual;if(c.length>h.length)for(s=0,o=c.length;s<o;s++)p=c[s],CSSLint.Util.indexOf(h,p)===-1&&(d=h.length===1?h[0]:h.length===2?h.join(" and "):h.join(", "),t.report("The property "+p+" is compatible with "+d+" and should be included as well.",l.actualNodes[0].line,l.actualNodes[0].col,n))}})}}),CSSLint.addRule({id:"display-property-grouping",name:"Require properties appropriate for display",desc:"Certain properties shouldn't be used with certain display property values.",browsers:"All",init:function(e,t){function s(e,s,o){i[e]&&(typeof r[e]!="string"||i[e].value.toLowerCase()!==r[e])&&t.report(o||e+" can't be used with display: "+s+".",i[e].line,i[e].col,n)}function o(){i={}}function u(){var e=i.display?i.display.value:null;if(e)switch(e){case"inline":s("height",e),s("width",e),s("margin",e),s("margin-top",e),s("margin-bottom",e),s("float",e,"display:inline has no effect on floated elements (but may be used to fix the IE6 double-margin bug).");break;case"block":s("vertical-align",e);break;case"inline-block":s("float",e);break;default:e.indexOf("table-")===0&&(s("margin",e),s("margin-left",e),s("margin-right",e),s("margin-top",e),s("margin-bottom",e),s("float",e))}}var n=this,r={display:1,"float":"none",height:1,width:1,margin:1,"margin-left":1,"margin-right":1,"margin-bottom":1,"margin-top":1,padding:1,"padding-left":1,"padding-right":1,"padding-bottom":1,"padding-top":1,"vertical-align":1},i;e.addListener("startrule",o),e.addListener("startfontface",o),e.addListener("startkeyframerule",o),e.addListener("startpagemargin",o),e.addListener("startpage",o),e.addListener("property",function(e){var t=e.property.text.toLowerCase();r[t]&&(i[t]={value:e.value.text,line:e.property.line,col:e.property.col})}),e.addListener("endrule",u),e.addListener("endfontface",u),e.addListener("endkeyframerule",u),e.addListener("endpagemargin",u),e.addListener("endpage",u)}}),CSSLint.addRule({id:"duplicate-background-images",name:"Disallow duplicate background images",desc:"Every background-image should be unique. Use a common class for e.g. sprites.",browsers:"All",init:function(e,t){var n=this,r={};e.addListener("property",function(e){var i=e.property.text,s=e.value,o,u;if(i.match(/background/i))for(o=0,u=s.parts.length;o<u;o++)s.parts[o].type==="uri"&&(typeof r[s.parts[o].uri]=="undefined"?r[s.parts[o].uri]=e:t.report("Background image '"+s.parts[o].uri+"' was used multiple times, first declared at line "+r[s.parts[o].uri].line+", col "+r[s.parts[o].uri].col+".",e.line,e.col,n))})}}),CSSLint.addRule({id:"duplicate-properties",name:"Disallow duplicate properties",desc:"Duplicate properties must appear one after the other.",browsers:"All",init:function(e,t){function s(){r={}}var n=this,r,i;e.addListener("startrule",s),e.addListener("startfontface",s),e.addListener("startpage",s),e.addListener("startpagemargin",s),e.addListener("startkeyframerule",s),e.addListener("property",function(e){var s=e.property,o=s.text.toLowerCase();r[o]&&(i!==o||r[o]===e.value.text)&&t.report("Duplicate property '"+e.property+"' found.",e.line,e.col,n),r[o]=e.value.text,i=o})}}),CSSLint.addRule({id:"empty-rules",name:"Disallow empty rules",desc:"Rules without any properties specified should be removed.",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("startrule",function(){r=0}),e.addListener("property",function(){r++}),e.addListener("endrule",function(e){var i=e.selectors;r===0&&t.report("Rule is empty.",i[0].line,i[0].col,n)})}}),CSSLint.addRule({id:"errors",name:"Parsing Errors",desc:"This rule looks for recoverable syntax errors.",browsers:"All",init:function(e,t){var n=this;e.addListener("error",function(e){t.error(e.message,e.line,e.col,n)})}}),CSSLint.addRule({id:"fallback-colors",name:"Require fallback colors",desc:"For older browsers that don't support RGBA, HSL, or HSLA, provide a fallback color.",browsers:"IE6,IE7,IE8",init:function(e,t){function o(){s={},r=null}var n=this,r,i={color:1,background:1,"border-color":1,"border-top-color":1,"border-right-color":1,"border-bottom-color":1,"border-left-color":1,border:1,"border-top":1,"border-right":1,"border-bottom":1,"border-left":1,"background-color":1},s;e.addListener("startrule",o),e.addListener("startfontface",o),e.addListener("startpage",o),e.addListener("startpagemargin",o),e.addListener("startkeyframerule",o),e.addListener("property",function(e){var s=e.property,o=s.text.toLowerCase(),u=e.value.parts,a=0,f="",l=u.length;if(i[o])while(a<l)u[a].type==="color"&&("alpha"in u[a]||"hue"in u[a]?(/([^\)]+)\(/.test(u[a])&&(f=RegExp.$1.toUpperCase()),(!r||r.property.text.toLowerCase()!==o||r.colorType!=="compat")&&t.report("Fallback "+o+" (hex or RGB) should precede "+f+" "+o+".",e.line,e.col,n)):e.colorType="compat"),a++;r=e})}}),CSSLint.addRule({id:"floats",name:"Disallow too many floats",desc:"This rule tests if the float property is used too many times",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("property",function(e){e.property.text.toLowerCase()==="float"&&e.value.text.toLowerCase()!=="none"&&r++}),e.addListener("endstylesheet",function(){t.stat("floats",r),r>=10&&t.rollupWarn("Too many floats ("+r+"), you're probably using them for layout. Consider using a grid system instead.",n)})}}),CSSLint.addRule({id:"font-faces",name:"Don't use too many web fonts",desc:"Too many different web fonts in the same stylesheet.",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("startfontface",function(){r++}),e.addListener("endstylesheet",function(){r>5&&t.rollupWarn("Too many @font-face declarations ("+r+").",n)})}}),CSSLint.addRule({id:"font-sizes",name:"Disallow too many font sizes",desc:"Checks the number of font-size declarations.",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("property",function(e){e.property.toString()==="font-size"&&r++}),e.addListener("endstylesheet",function(){t.stat("font-sizes",r),r>=10&&t.rollupWarn("Too many font-size declarations ("+r+"), abstraction needed.",n)})}}),CSSLint.addRule({id:"gradients",name:"Require all gradient definitions",desc:"When using a vendor-prefixed gradient, make sure to use them all.",browsers:"All",init:function(e,t){var n=this,r;e.addListener("startrule",function(){r={moz:0,webkit:0,oldWebkit:0,o:0}}),e.addListener("property",function(e){/\-(moz|o|webkit)(?:\-(?:linear|radial))\-gradient/i.test(e.value)?r[RegExp.$1]=1:/\-webkit\-gradient/i.test(e.value)&&(r.oldWebkit=1)}),e.addListener("endrule",function(e){var i=[];r.moz||i.push("Firefox 3.6+"),r.webkit||i.push("Webkit (Safari 5+, Chrome)"),r.oldWebkit||i.push("Old Webkit (Safari 4+, Chrome)"),r.o||i.push("Opera 11.1+"),i.length&&i.length<4&&t.report("Missing vendor-prefixed CSS gradients for "+i.join(", ")+".",e.selectors[0].line,e.selectors[0].col,n)})}}),CSSLint.addRule({id:"ids",name:"Disallow IDs in selectors",desc:"Selectors should not contain IDs.",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a,f,l,c;for(f=0;f<i.length;f++){s=i[f],a=0;for(l=0;l<s.parts.length;l++){o=s.parts[l];if(o.type===e.SELECTOR_PART_TYPE)for(c=0;c<o.modifiers.length;c++)u=o.modifiers[c],u.type==="id"&&a++}a===1?t.report("Don't use IDs in selectors.",s.line,s.col,n):a>1&&t.report(a+" IDs in the selector, really?",s.line,s.col,n)}})}}),CSSLint.addRule({id:"import",name:"Disallow @import",desc:"Don't use @import, use <link> instead.",browsers:"All",init:function(e,t){var n=this;e.addListener("import",function(e){t.report("@import prevents parallel downloads, use <link> instead.",e.line,e.col,n)})}}),CSSLint.addRule({id:"important",name:"Disallow !important",desc:"Be careful when using !important declaration",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("property",function(e){e.important===!0&&(r++,t.report("Use of !important",e.line,e.col,n))}),e.addListener("endstylesheet",function(){t.stat("important",r),r>=10&&t.rollupWarn("Too many !important declarations ("+r+"), try to use less than 10 to avoid specificity issues.",n)})}}),CSSLint.addRule({id:"known-properties",name:"Require use of known properties",desc:"Properties should be known (listed in CSS3 specification) or be a vendor-prefixed property.",browsers:"All",init:function(e,t){var n=this;e.addListener("property",function(e){e.invalid&&t.report(e.invalid.message,e.line,e.col,n)})}}),CSSLint.addRule({id:"order-alphabetical",name:"Alphabetical order",desc:"Assure properties are in alphabetical order",browsers:"All",init:function(e,t){var n=this,r,i=function(){r=[]};e.addListener("startrule",i),e.addListener("startfontface",i),e.addListener("startpage",i),e.addListener("startpagemargin",i),e.addListener("startkeyframerule",i),e.addListener("property",function(e){var t=e.property.text,n=t.toLowerCase().replace(/^-.*?-/,"");r.push(n)}),e.addListener("endrule",function(e){var i=r.join(","),s=r.sort().join(",");i!==s&&t.report("Rule doesn't have all its properties in alphabetical ordered.",e.line,e.col,n)})}}),CSSLint.addRule({id:"outline-none",name:"Disallow outline: none",desc:"Use of outline: none or outline: 0 should be limited to :focus rules.",browsers:"All",tags:["Accessibility"],init:function(e,t){function i(e){e.selectors?r={line:e.line,col:e.col,selectors:e.selectors,propCount:0,outline:!1}:r=null}function s(){r&&r.outline&&(r.selectors.toString().toLowerCase().indexOf(":focus")===-1?t.report("Outlines should only be modified using :focus.",r.line,r.col,n):r.propCount===1&&t.report("Outlines shouldn't be hidden unless other visual changes are made.",r.line,r.col,n))}var n=this,r;e.addListener("startrule",i),e.addListener("startfontface",i),e.addListener("startpage",i),e.addListener("startpagemargin",i),e.addListener("startkeyframerule",i),e.addListener("property",function(e){var t=e.property.text.toLowerCase(),n=e.value;r&&(r.propCount++,t==="outline"&&(n.toString()==="none"||n.toString()==="0")&&(r.outline=!0))}),e.addListener("endrule",s),e.addListener("endfontface",s),e.addListener("endpage",s),e.addListener("endpagemargin",s),e.addListener("endkeyframerule",s)}}),CSSLint.addRule({id:"overqualified-elements",name:"Disallow overqualified elements",desc:"Don't use classes or IDs with elements (a.foo or a#foo).",browsers:"All",init:function(e,t){var n=this,r={};e.addListener("startrule",function(i){var s=i.selectors,o,u,a,f,l,c;for(f=0;f<s.length;f++){o=s[f];for(l=0;l<o.parts.length;l++){u=o.parts[l];if(u.type===e.SELECTOR_PART_TYPE)for(c=0;c<u.modifiers.length;c++)a=u.modifiers[c],u.elementName&&a.type==="id"?t.report("Element ("+u+") is overqualified, just use "+a+" without element name.",u.line,u.col,n):a.type==="class"&&(r[a]||(r[a]=[]),r[a].push({modifier:a,part:u}))}}}),e.addListener("endstylesheet",function(){var e;for(e in r)r.hasOwnProperty(e)&&r[e].length===1&&r[e][0].part.elementName&&t.report("Element ("+r[e][0].part+") is overqualified, just use "+r[e][0].modifier+" without element name.",r[e][0].part.line,r[e][0].part.col,n)})}}),CSSLint.addRule({id:"qualified-headings",name:"Disallow qualified headings",desc:"Headings should not be qualified (namespaced).",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a;for(u=0;u<i.length;u++){s=i[u];for(a=0;a<s.parts.length;a++)o=s.parts[a],o.type===e.SELECTOR_PART_TYPE&&o.elementName&&/h[1-6]/.test(o.elementName.toString())&&a>0&&t.report("Heading ("+o.elementName+") should not be qualified.",o.line,o.col,n)}})}}),CSSLint.addRule({id:"regex-selectors",name:"Disallow selectors that look like regexs",desc:"Selectors that look like regular expressions are slow and should be avoided.",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a,f,l;for(a=0;a<i.length;a++){s=i[a];for(f=0;f<s.parts.length;f++){o=s.parts[f];if(o.type===e.SELECTOR_PART_TYPE)for(l=0;l<o.modifiers.length;l++)u=o.modifiers[l],u.type==="attribute"&&/([\~\|\^\$\*]=)/.test(u)&&t.report("Attribute selectors with "+RegExp.$1+" are slow!",u.line,u.col,n)}}})}}),CSSLint.addRule({id:"rules-count",name:"Rules Count",desc:"Track how many rules there are.",browsers:"All",init:function(e,t){var n=0;e.addListener("startrule",function(){n++}),e.addListener("endstylesheet",function(){t.stat("rule-count",n)})}}),CSSLint.addRule({id:"selector-max-approaching",name:"Warn when approaching the 4095 selector limit for IE",desc:"Will warn when selector count is >= 3800 selectors.",browsers:"IE",init:function(e,t){var n=this,r=0;e.addListener("startrule",function(e){r+=e.selectors.length}),e.addListener("endstylesheet",function(){r>=3800&&t.report("You have "+r+" selectors. Internet Explorer supports a maximum of 4095 selectors per stylesheet. Consider refactoring.",0,0,n)})}}),CSSLint.addRule({id:"selector-max",name:"Error when past the 4095 selector limit for IE",desc:"Will error when selector count is > 4095.",browsers:"IE",init:function(e,t){var n=this,r=0;e.addListener("startrule",function(e){r+=e.selectors.length}),e.addListener("endstylesheet",function(){r>4095&&t.report("You have "+r+" selectors. Internet Explorer supports a maximum of 4095 selectors per stylesheet. Consider refactoring.",0,0,n)})}}),CSSLint.addRule({id:"selector-newline",name:"Disallow new-line characters in selectors",desc:"New-line characters in selectors are usually a forgotten comma and not a descendant combinator.",browsers:"All",init:function(e,t){function r(e){var r,i,s,o,u,a,f,l,c,h,p,d=e.selectors;for(r=0,i=d.length;r<i;r++){s=d[r];for(o=0,a=s.parts.length;o<a;o++)for(u=o+1;u<a;u++)f=s.parts[o],l=s.parts[u],c=f.type,h=f.line,p=l.line,c==="descendant"&&p>h&&t.report("newline character found in selector (forgot a comma?)",h,d[r].parts[0].col,n)}}var n=this;e.addListener("startrule",r)}}),CSSLint.addRule({id:"shorthand",name:"Require shorthand properties",desc:"Use shorthand properties where possible.",browsers:"All",init:function(e,t){function f(){u={}}function l(e){var r,i,s,o;for(r in a)if(a.hasOwnProperty(r)){o=0;for(i=0,s=a[r].length;i<s;i++)o+=u[a[r][i]]?1:0;o===a[r].length&&t.report("The properties "+a[r].join(", ")+" can be replaced by "+r+".",e.line,e.col,n)}}var n=this,r,i,s,o={},u,a={margin:["margin-top","margin-bottom","margin-left","margin-right"],padding:["padding-top","padding-bottom","padding-left","padding-right"]};for(r in a)if(a.hasOwnProperty(r))for(i=0,s=a[r].length;i<s;i++)o[a[r][i]]=r;e.addListener("startrule",f),e.addListener("startfontface",f),e.addListener("property",function(e){var t=e.property.toString().toLowerCase();o[t]&&(u[t]=1)}),e.addListener("endrule",l),e.addListener("endfontface",l)}}),CSSLint.addRule({id:"star-property-hack",name:"Disallow properties with a star prefix",desc:"Checks for the star property hack (targets IE6/7)",browsers:"All",init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.property;r.hack==="*"&&t.report("Property with star prefix found.",e.property.line,e.property.col,n)})}}),CSSLint.addRule({id:"text-indent",name:"Disallow negative text-indent",desc:"Checks for text indent less than -99px",browsers:"All",init:function(e,t){function s(){r=!1,i="inherit"}function o(){r&&i!=="ltr"&&t.report("Negative text-indent doesn't work well with RTL. If you use text-indent for image replacement explicitly set direction for that item to ltr.",r.line,r.col,n)}var n=this,r,i;e.addListener("startrule",s),e.addListener("startfontface",s),e.addListener("property",function(e){var t=e.property.toString().toLowerCase(),n=e.value;t==="text-indent"&&n.parts[0].value<-99?r=e.property:t==="direction"&&n.toString()==="ltr"&&(i="ltr")}),e.addListener("endrule",o),e.addListener("endfontface",o)}}),CSSLint.addRule({id:"underscore-property-hack",name:"Disallow properties with an underscore prefix",desc:"Checks for the underscore property hack (targets IE6)",browsers:"All",init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.property;r.hack==="_"&&t.report("Property with underscore prefix found.",e.property.line,e.property.col,n)})}}),CSSLint.addRule({id:"unique-headings",name:"Headings should only be defined once",desc:"Headings should be defined only once.",browsers:"All",init:function(e,t){var n=this,r={h1:0,h2:0,h3:0,h4:0,h5:0,h6:0};e.addListener("startrule",function(e){var i=e.selectors,s,o,u,a,f;for(a=0;a<i.length;a++){s=i[a],o=s.parts[s.parts.length-1];if(o.elementName&&/(h[1-6])/i.test(o.elementName.toString())){for(f=0;f<o.modifiers.length;f++)if(o.modifiers[f].type==="pseudo"){u=!0;break}u||(r[RegExp.$1]++,r[RegExp.$1]>1&&t.report("Heading ("+o.elementName+") has already been defined.",o.line,o.col,n))}}}),e.addListener("endstylesheet",function(){var e,i=[];for(e in r)r.hasOwnProperty(e)&&r[e]>1&&i.push(r[e]+" "+e+"s");i.length&&t.rollupWarn("You have "+i.join(", ")+" defined in this stylesheet.",n)})}}),CSSLint.addRule({id:"universal-selector",name:"Disallow universal selector",desc:"The universal selector (*) is known to be slow.",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(e){var r=e.selectors,i,s,o;for(o=0;o<r.length;o++)i=r[o],s=i.parts[i.parts.length-1],s.elementName==="*"&&t.report(n.desc,s.line,s.col,n)})}}),CSSLint.addRule({id:"unqualified-attributes",name:"Disallow unqualified attribute selectors",desc:"Unqualified attribute selectors are known to be slow.",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a,f;for(a=0;a<i.length;a++){s=i[a],o=s.parts[s.parts.length-1];if(o.type===e.SELECTOR_PART_TYPE)for(f=0;f<o.modifiers.length;f++)u=o.modifiers[f],u.type==="attribute"&&(!o.elementName||o.elementName==="*")&&t.report(n.desc,o.line,o.col,n)}})}}),CSSLint.addRule({id:"vendor-prefix",name:"Require standard property with vendor prefix",desc:"When using a vendor-prefixed property, make sure to include the standard one.",browsers:"All",init:function(e,t){function o(){r={},i=1}function u(){var e,i,o,u,a,f=[];for(e in r)s[e]&&f.push({actual:e,needed:s[e]});for(i=0,o=f.length;i<o;i++)u=f[i].needed,a=f[i].actual,r[u]?r[u][0].pos<r[a][0].pos&&t.report("Standard property '"+u+"' should come after vendor-prefixed property '"+a+"'.",r[a][0].name.line,r[a][0].name.col,n):t.report("Missing standard property '"+u+"' to go along with '"+a+"'.",r[a][0].name.line,r[a][0].name.col,n)}var n=this,r,i,s={"-webkit-border-radius":"border-radius","-webkit-border-top-left-radius":"border-top-left-radius","-webkit-border-top-right-radius":"border-top-right-radius","-webkit-border-bottom-left-radius":"border-bottom-left-radius","-webkit-border-bottom-right-radius":"border-bottom-right-radius","-o-border-radius":"border-radius","-o-border-top-left-radius":"border-top-left-radius","-o-border-top-right-radius":"border-top-right-radius","-o-border-bottom-left-radius":"border-bottom-left-radius","-o-border-bottom-right-radius":"border-bottom-right-radius","-moz-border-radius":"border-radius","-moz-border-radius-topleft":"border-top-left-radius","-moz-border-radius-topright":"border-top-right-radius","-moz-border-radius-bottomleft":"border-bottom-left-radius","-moz-border-radius-bottomright":"border-bottom-right-radius","-moz-column-count":"column-count","-webkit-column-count":"column-count","-moz-column-gap":"column-gap","-webkit-column-gap":"column-gap","-moz-column-rule":"column-rule","-webkit-column-rule":"column-rule","-moz-column-rule-style":"column-rule-style","-webkit-column-rule-style":"column-rule-style","-moz-column-rule-color":"column-rule-color","-webkit-column-rule-color":"column-rule-color","-moz-column-rule-width":"column-rule-width","-webkit-column-rule-width":"column-rule-width","-moz-column-width":"column-width","-webkit-column-width":"column-width","-webkit-column-span":"column-span","-webkit-columns":"columns","-moz-box-shadow":"box-shadow","-webkit-box-shadow":"box-shadow","-moz-transform":"transform","-webkit-transform":"transform","-o-transform":"transform","-ms-transform":"transform","-moz-transform-origin":"transform-origin","-webkit-transform-origin":"transform-origin","-o-transform-origin":"transform-origin","-ms-transform-origin":"transform-origin","-moz-box-sizing":"box-sizing","-webkit-box-sizing":"box-sizing"};e.addListener("startrule",o),e.addListener("startfontface",o),e.addListener("startpage",o),e.addListener("startpagemargin",o),e.addListener("startkeyframerule",o),e.addListener("property",function(e){var t=e.property.text.toLowerCase();r[t]||(r[t]=[]),r[t].push({name:e.property,value:e.value,pos:i++})}),e.addListener("endrule",u),e.addListener("endfontface",u),e.addListener("endpage",u),e.addListener("endpagemargin",u),e.addListener("endkeyframerule",u)}}),CSSLint.addRule({id:"zero-units",name:"Disallow units for 0 values",desc:"You don't need to specify units when a value is 0.",browsers:"All",init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.value.parts,i=0,s=r.length;while(i<s)(r[i].units||r[i].type==="percentage")&&r[i].value===0&&r[i].type!=="time"&&t.report("Values of 0 shouldn't have units specified.",r[i].line,r[i].col,n),i++})}}),function(){var e=function(e){return!e||e.constructor!==String?"":e.replace(/[\"&><]/g,function(e){switch(e){case'"':return"&quot;";case"&":return"&amp;";case"<":return"&lt;";case">":return"&gt;"}})};CSSLint.addFormatter({id:"checkstyle-xml",name:"Checkstyle XML format",startFormat:function(){return'<?xml version="1.0" encoding="utf-8"?><checkstyle>'},endFormat:function(){return"</checkstyle>"},readError:function(t,n){return'<file name="'+e(t)+'"><error line="0" column="0" severty="error" message="'+e(n)+'"></error></file>'},formatResults:function(t,n){var r=t.messages,i=[],s=function(e){return!!e&&"name"in e?"net.csslint."+e.name.replace(/\s/g,""):""};return r.length>0&&(i.push('<file name="'+n+'">'),CSSLint.Util.forEach(r,function(t){t.rollup||i.push('<error line="'+t.line+'" column="'+t.col+'" severity="'+t.type+'"'+' message="'+e(t.message)+'" source="'+s(t.rule)+'"/>')}),i.push("</file>")),i.join("")}})}(),CSSLint.addFormatter({id:"compact",name:"Compact, 'porcelain' format",startFormat:function(){return""},endFormat:function(){return""},formatResults:function(e,t,n){var r=e.messages,i="";n=n||{};var s=function(e){return e.charAt(0).toUpperCase()+e.slice(1)};return r.length===0?n.quiet?"":t+": Lint Free!":(CSSLint.Util.forEach(r,function(e){e.rollup?i+=t+": "+s(e.type)+" - "+e.message+"\n":i+=t+": "+"line "+e.line+", col "+e.col+", "+s(e.type)+" - "+e.message+" ("+e.rule.id+")\n"}),i)}}),CSSLint.addFormatter({id:"csslint-xml",name:"CSSLint XML format",startFormat:function(){return'<?xml version="1.0" encoding="utf-8"?><csslint>'},endFormat:function(){return"</csslint>"},formatResults:function(e,t){var n=e.messages,r=[],i=function(e){return!e||e.constructor!==String?"":e.replace(/\"/g,"'").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")};return n.length>0&&(r.push('<file name="'+t+'">'),CSSLint.Util.forEach(n,function(e){e.rollup?r.push('<issue severity="'+e.type+'" reason="'+i(e.message)+'" evidence="'+i(e.evidence)+'"/>'):r.push('<issue line="'+e.line+'" char="'+e.col+'" severity="'+e.type+'"'+' reason="'+i(e.message)+'" evidence="'+i(e.evidence)+'"/>')}),r.push("</file>")),r.join("")}}),CSSLint.addFormatter({id:"junit-xml",name:"JUNIT XML format",startFormat:function(){return'<?xml version="1.0" encoding="utf-8"?><testsuites>'},endFormat:function(){return"</testsuites>"},formatResults:function(e,t){var n=e.messages,r=[],i={error:0,failure:0},s=function(e){return!!e&&"name"in e?"net.csslint."+e.name.replace(/\s/g,""):""},o=function(e){return!e||e.constructor!==String?"":e.replace(/\"/g,"'").replace(/</g,"&lt;").replace(/>/g,"&gt;")};return n.length>0&&(n.forEach(function(e){var t=e.type==="warning"?"error":e.type;e.rollup||(r.push('<testcase time="0" name="'+s(e.rule)+'">'),r.push("<"+t+' message="'+o(e.message)+'"><![CDATA['+e.line+":"+e.col+":"+o(e.evidence)+"]]></"+t+">"),r.push("</testcase>"),i[t]+=1)}),r.unshift('<testsuite time="0" tests="'+n.length+'" skipped="0" errors="'+i.error+'" failures="'+i.failure+'" package="net.csslint" name="'+t+'">'),r.push("</testsuite>")),r.join("")}}),CSSLint.addFormatter({id:"lint-xml",name:"Lint XML format",startFormat:function(){return'<?xml version="1.0" encoding="utf-8"?><lint>'},endFormat:function(){return"</lint>"},formatResults:function(e,t){var n=e.messages,r=[],i=function(e){return!e||e.constructor!==String?"":e.replace(/\"/g,"'").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")};return n.length>0&&(r.push('<file name="'+t+'">'),CSSLint.Util.forEach(n,function(e){e.rollup?r.push('<issue severity="'+e.type+'" reason="'+i(e.message)+'" evidence="'+i(e.evidence)+'"/>'):r.push('<issue line="'+e.line+'" char="'+e.col+'" severity="'+e.type+'"'+' reason="'+i(e.message)+'" evidence="'+i(e.evidence)+'"/>')}),r.push("</file>")),r.join("")}}),CSSLint.addFormatter({id:"text",name:"Plain Text",startFormat:function(){return""},endFormat:function(){return""},formatResults:function(e,t,n){var r=e.messages,i="";n=n||{};if(r.length===0)return n.quiet?"":"\n\ncsslint: No errors in "+t+".";i="\n\ncsslint: There ",r.length===1?i+="is 1 problem":i+="are "+r.length+" problems",i+=" in "+t+".";var s=t.lastIndexOf("/"),o=t;return s===-1&&(s=t.lastIndexOf("\\")),s>-1&&(o=t.substring(s+1)),CSSLint.Util.forEach(r,function(e,t){i=i+"\n\n"+o,e.rollup?(i+="\n"+(t+1)+": "+e.type,i+="\n"+e.message):(i+="\n"+(t+1)+": "+e.type+" at line "+e.line+", col "+e.col,i+="\n"+e.message,i+="\n"+e.evidence)}),i}}),module.exports.CSSLint=CSSLint}),ace.define("ace/mode/css_worker",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/worker/mirror","ace/mode/css/csslint"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("../worker/mirror").Mirror,o=e("./css/csslint").CSSLint,u=t.Worker=function(e){s.call(this,e),this.setTimeout(400),this.ruleset=null,this.setDisabledRules("ids|order-alphabetical"),this.setInfoRules("adjoining-classes|qualified-headings|zero-units|gradients|import|outline-none|vendor-prefix")};r.inherits(u,s),function(){this.setInfoRules=function(e){typeof e=="string"&&(e=e.split("|")),this.infoRules=i.arrayToMap(e),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.setDisabledRules=function(e){if(!e)this.ruleset=null;else{typeof e=="string"&&(e=e.split("|"));var t={};o.getRules().forEach(function(e){t[e.id]=!0}),e.forEach(function(e){delete t[e]}),this.ruleset=t}this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.onUpdate=function(){var e=this.doc.getValue();if(!e)return this.sender.emit("annotate",[]);var t=this.infoRules,n=o.verify(e,this.ruleset);this.sender.emit("annotate",n.messages.map(function(e){return{row:e.line-1,column:e.col-1,text:e.message,type:t[e.rule.id]?"info":e.type,rule:e.rule.name}}))}}.call(u.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _=" \n \f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}}) \ No newline at end of file
diff --git a/library/ace/worker-html.js b/library/ace/worker-html.js
new file mode 100644
index 000000000..3062f4d39
--- /dev/null
+++ b/library/ace/worker-html.js
@@ -0,0 +1 @@
+"no use strict";(function(e){function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")return i+r;if(i)return i.location.replace(/\/*$/,"/")+(r||i.main||i.name);if(i===!1)return"";var s=n.lastIndexOf("/");if(s===-1)break;r=n.substr(s)+r,n=n.slice(0,s)}return e}if(typeof e.window!="undefined"&&e.document)return;if(e.require&&e.define)return;e.console||(e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console),e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,data:i.data,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(r,i){i||(i=r,r=null);if(!i.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");i=e.normalizeModule(r,i);var s=e.require.modules[i];if(s)return s.initialized||(s.initialized=!0,s.exports=s.factory().exports),s.exports;if(!e.require.tlns)return console.log("unable to load "+i);var o=t(i,e.require.tlns);return o.slice(-3)!=".js"&&(o+=".js"),e.require.id=i,e.require.modules[i]={},importScripts(o),e.require(r,i)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},require.tlns={},e.initBaseUrls=function(t){for(var n in t)require.tlns[n]=t[n]},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var n=e.main=null,r=e.sender=null;e.onmessage=function(t){var i=t.data;if(i.event&&r)r._signal(i.event,i.data);else if(i.command)if(n[i.command])n[i.command].apply(n,i.args);else{if(!e[i.command])throw new Error("Unknown command:"+i.command);e[i.command].apply(e,i.args)}else if(i.init){e.initBaseUrls(i.tlns),require("ace/lib/es5-shim"),r=e.sender=e.initSender();var s=require(i.module)[i.classname];n=e.main=new s(r)}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function s(e){if(typeof e!="object"||!e)return e;var t;if(Array.isArray(e)){t=[];for(var n=0;n<e.length;n++)t[n]=s(e[n]);return t}var r=e.constructor;if(r===RegExp)return e;t=r();for(var n in e)t[n]=s(e[n]);return t},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,n){"use strict";function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: "+t}function i(e,t){return t.row>=0&&t.row<e.length&&t.column>=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.column<t.column;return e.row<t.row||e.row==t.row&&r}function t(t,n,r){var i=t.action=="insert",s=(i?1:-1)*(t.end.row-t.start.row),o=(i?1:-1)*(t.end.column-t.start.column),u=t.start,a=i?u:t.end;return e(n,u,r)?{row:n.row,column:n.column}:e(a,n,!r)?{row:n.row+s,column:n.column+(n.row==a.row?o:0)}:{row:u.row,column:u.column}}r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){if(e.start.row==e.end.row&&e.start.row!=this.row)return;if(e.start.row>this.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e<this.getLength()?(t=t.concat([""]),n=0):(t=[""].concat(t),e--,n=this.$lines[e].length),this.insertMergedLines({row:e,column:n},t)},this.insertMergedLines=function(e,t){var n=this.clippedPos(e.row,e.column),r={row:n.row+t.length-1,column:(t.length==1?n.column:0)+t[t.length-1].length};return this.applyDelta({start:n,end:r,action:"insert",lines:t}),this.clonePos(r)},this.remove=function(e){var t=this.clippedPos(e.start.row,e.start.column),n=this.clippedPos(e.end.row,e.end.column);return this.applyDelta({start:t,end:n,action:"remove",lines:this.getLinesForRange({start:t,end:n})}),this.clonePos(t)},this.removeInLine=function(e,t,n){var r=this.clippedPos(e,t),i=this.clippedPos(e,n);return this.applyDelta({start:r,end:i,action:"remove",lines:this.getLinesForRange({start:r,end:i})},!0),this.clonePos(r)},this.removeFullLines=function(e,t){e=Math.min(Math.max(0,e),this.getLength()-1),t=Math.min(Math.max(0,t),this.getLength()-1);var n=t==this.getLength()-1&&e>0,r=t<this.getLength()-1,i=n?e-1:e,s=n?this.getLine(i).length:0,u=r?t+1:t,a=r?0:this.getLine(u).length,f=new o(i,s,u,a),l=this.$lines.slice(e,t+1);return this.applyDelta({start:f.start,end:f.end,action:"remove",lines:this.getLinesForRange(f)}),l},this.removeNewLine=function(e){e<this.getLength()-1&&e>=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++)this.applyDelta(e[t])},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(a.prototype),t.Document=a}),ace.define("ace/worker/mirror",["require","exports","module","ace/range","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../document").Document,s=e("../lib/lang"),o=t.Mirror=function(e){this.sender=e;var t=this.doc=new i(""),n=this.deferredUpdate=s.delayedCall(this.onUpdate.bind(this)),r=this;e.on("change",function(e){var i=e.data;if(i[0].start)t.applyDeltas(i);else for(var s=0;s<i.length;s+=2){if(Array.isArray(i[s+1]))var o={action:"insert",start:i[s],lines:i[s+1]};else var o={action:"remove",start:i[s],end:i[s+1]};t.applyDelta(o,!0)}if(r.$timeout)return n.schedule(r.$timeout);r.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(o.prototype)}),ace.define("ace/mode/html/saxparser",["require","exports","module"],function(e,t,n){n.exports=function r(t,n,i){function s(u,a){if(!n[u]){if(!t[u]){var f=typeof e=="function"&&e;if(!a&&f)return f(u,!0);if(o)return o(u,!0);throw new Error("Cannot find module '"+u+"'")}var l=n[u]={exports:{}};t[u][0].call(l.exports,function(e){var n=t[u][1][e];return s(n?n:e)},l,l.exports,r,t,n,i)}return n[u].exports}var o=typeof e=="function"&&e;for(var u=0;u<i.length;u++)s(i[u]);return s}({1:[function(e,t,n){function r(e){if(e.namespaceURI==="http://www.w3.org/1999/xhtml")return e.localName==="applet"||e.localName==="caption"||e.localName==="marquee"||e.localName==="object"||e.localName==="table"||e.localName==="td"||e.localName==="th";if(e.namespaceURI==="http://www.w3.org/1998/Math/MathML")return e.localName==="mi"||e.localName==="mo"||e.localName==="mn"||e.localName==="ms"||e.localName==="mtext"||e.localName==="annotation-xml";if(e.namespaceURI==="http://www.w3.org/2000/svg")return e.localName==="foreignObject"||e.localName==="desc"||e.localName==="title"}function i(e){return r(e)||e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="ol"||e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="ul"}function s(e){return e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="table"||e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="html"}function o(e){return e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="tbody"||e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="tfoot"||e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="thead"||e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="html"}function u(e){return e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="tr"||e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="html"}function a(e){return r(e)||e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="button"}function f(e){return(e.namespaceURI!=="http://www.w3.org/1999/xhtml"||e.localName!=="optgroup")&&(e.namespaceURI!=="http://www.w3.org/1999/xhtml"||e.localName!=="option")}function l(){this.elements=[],this.rootNode=null,this.headElement=null,this.bodyElement=null}l.prototype._inScope=function(e,t){for(var n=this.elements.length-1;n>=0;n--){var r=this.elements[n];if(r.localName===e)return!0;if(t(r))return!1}},l.prototype.push=function(e){this.elements.push(e)},l.prototype.pushHtmlElement=function(e){this.rootNode=e.node,this.push(e)},l.prototype.pushHeadElement=function(e){this.headElement=e.node,this.push(e)},l.prototype.pushBodyElement=function(e){this.bodyElement=e.node,this.push(e)},l.prototype.pop=function(){return this.elements.pop()},l.prototype.remove=function(e){this.elements.splice(this.elements.indexOf(e),1)},l.prototype.popUntilPopped=function(e){var t;do t=this.pop();while(t.localName!=e)},l.prototype.popUntilTableScopeMarker=function(){while(!s(this.top))this.pop()},l.prototype.popUntilTableBodyScopeMarker=function(){while(!o(this.top))this.pop()},l.prototype.popUntilTableRowScopeMarker=function(){while(!u(this.top))this.pop()},l.prototype.item=function(e){return this.elements[e]},l.prototype.contains=function(e){return this.elements.indexOf(e)!==-1},l.prototype.inScope=function(e){return this._inScope(e,r)},l.prototype.inListItemScope=function(e){return this._inScope(e,i)},l.prototype.inTableScope=function(e){return this._inScope(e,s)},l.prototype.inButtonScope=function(e){return this._inScope(e,a)},l.prototype.inSelectScope=function(e){return this._inScope(e,f)},l.prototype.hasNumberedHeaderElementInScope=function(){for(var e=this.elements.length-1;e>=0;e--){var t=this.elements[e];if(t.isNumberedHeader())return!0;if(r(t))return!1}},l.prototype.furthestBlockForFormattingElement=function(e){var t=null;for(var n=this.elements.length-1;n>=0;n--){var r=this.elements[n];if(r.node===e)break;r.isSpecial()&&(t=r)}return t},l.prototype.findIndex=function(e){for(var t=this.elements.length-1;t>=0;t--)if(this.elements[t].localName==e)return t;return-1},l.prototype.remove_openElements_until=function(e){var t=!1,n;while(!t)n=this.elements.pop(),t=e(n);return n},Object.defineProperty(l.prototype,"top",{get:function(){return this.elements[this.elements.length-1]}}),Object.defineProperty(l.prototype,"length",{get:function(){return this.elements.length}}),n.ElementStack=l},{}],2:[function(e,t,n){function o(e){return e>="0"&&e<="9"||e>="a"&&e<="z"||e>="A"&&e<="Z"}function u(e){return e>="0"&&e<="9"||e>="a"&&e<="f"||e>="A"&&e<="F"}function a(e){return e>="0"&&e<="9"}var r=e("html5-entities"),i=e("./InputStream").InputStream,s={};Object.keys(r).forEach(function(e){for(var t=0;t<e.length;t++)s[e.substring(0,t+1)]=!0});var f={};f.consumeEntity=function(e,t,n){var f="",l="",c=e.char();if(c===i.EOF)return!1;l+=c;if(c==" "||c=="\n"||c==" "||c==" "||c=="<"||c=="&")return e.unget(l),!1;if(n===c)return e.unget(l),!1;if(c=="#"){c=e.shift(1);if(c===i.EOF)return t._parseError("expected-numeric-entity-but-got-eof"),e.unget(l),!1;l+=c;var h=10,p=a;if(c=="x"||c=="X"){h=16,p=u,c=e.shift(1);if(c===i.EOF)return t._parseError("expected-numeric-entity-but-got-eof"),e.unget(l),!1;l+=c}if(p(c)){var d="";while(c!==i.EOF&&p(c))d+=c,c=e.char();d=parseInt(d,h);var v=this.replaceEntityNumbers(d);v&&(t._parseError("invalid-numeric-entity-replaced"),d=v);if(d>65535&&d<=1114111){d-=65536;var m=((1047552&d)>>10)+55296,g=(1023&d)+56320;f=String.fromCharCode(m,g)}else f=String.fromCharCode(d);return c!==";"&&(t._parseError("numeric-entity-without-semicolon"),e.unget(c)),f}return e.unget(l),t._parseError("expected-numeric-entity"),!1}if(c>="a"&&c<="z"||c>="A"&&c<="Z"){var y="";while(s[l]){r[l]&&(y=l);if(c==";")break;c=e.char();if(c===i.EOF)break;l+=c}return y?(f=r[y],c===";"||!n||!o(c)&&c!=="="?(l.length>y.length&&e.unget(l.substring(y.length)),c!==";"&&t._parseError("named-entity-without-semicolon"),f):(e.unget(l),!1)):(t._parseError("expected-named-entity"),e.unget(l),!1)}},f.replaceEntityNumbers=function(e){switch(e){case 0:return 65533;case 19:return 16;case 128:return 8364;case 129:return 129;case 130:return 8218;case 131:return 402;case 132:return 8222;case 133:return 8230;case 134:return 8224;case 135:return 8225;case 136:return 710;case 137:return 8240;case 138:return 352;case 139:return 8249;case 140:return 338;case 141:return 141;case 142:return 381;case 143:return 143;case 144:return 144;case 145:return 8216;case 146:return 8217;case 147:return 8220;case 148:return 8221;case 149:return 8226;case 150:return 8211;case 151:return 8212;case 152:return 732;case 153:return 8482;case 154:return 353;case 155:return 8250;case 156:return 339;case 157:return 157;case 158:return 382;case 159:return 376;default:if(e>=55296&&e<=57343||e>1114111)return 65533;if(e>=1&&e<=8||e>=14&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||e==11||e==65534||e==131070||e==3145726||e==196607||e==262142||e==262143||e==327678||e==327679||e==393214||e==393215||e==458750||e==458751||e==524286||e==524287||e==589822||e==589823||e==655358||e==655359||e==720894||e==720895||e==786430||e==786431||e==851966||e==851967||e==917502||e==917503||e==983038||e==983039||e==1048574||e==1048575||e==1114110||e==1114111)return e}},n.EntityParser=f},{"./InputStream":3,"html5-entities":12}],3:[function(e,t,n){function r(){this.data="",this.start=0,this.committed=0,this.eof=!1,this.lastLocation={line:0,column:0}}r.EOF=-1,r.DRAIN=-2,r.prototype={slice:function(){if(this.start>=this.data.length){if(!this.eof)throw r.DRAIN;return r.EOF}return this.data.slice(this.start,this.data.length)},"char":function(){if(!this.eof&&this.start>=this.data.length-1)throw r.DRAIN;if(this.start>=this.data.length)return r.EOF;var e=this.data[this.start++];return e==="\r"&&(e="\n"),e},advance:function(e){this.start+=e;if(this.start>=this.data.length){if(!this.eof)throw r.DRAIN;return r.EOF}this.committed>this.data.length/2&&(this.lastLocation=this.location(),this.data=this.data.slice(this.committed),this.start=this.start-this.committed,this.committed=0)},matchWhile:function(e){if(this.eof&&this.start>=this.data.length)return"";var t=new RegExp("^"+e+"+"),n=t.exec(this.slice());if(n){if(!this.eof&&n[0].length==this.data.length-this.start)throw r.DRAIN;return this.advance(n[0].length),n[0]}return""},matchUntil:function(e){var t,n;n=this.slice();if(n===r.EOF)return"";if(t=(new RegExp(e+(this.eof?"|$":""))).exec(n)){var i=this.data.slice(this.start,this.start+t.index);return this.advance(t.index),i.replace(/\r/g,"\n").replace(/\n{2,}/g,"\n")}throw r.DRAIN},append:function(e){this.data+=e},shift:function(e){if(!this.eof&&this.start+e>=this.data.length)throw r.DRAIN;if(this.eof&&this.start>=this.data.length)return r.EOF;var t=this.data.slice(this.start,this.start+e).toString();return this.advance(Math.min(e,this.data.length-this.start)),t},peek:function(e){if(!this.eof&&this.start+e>=this.data.length)throw r.DRAIN;return this.eof&&this.start>=this.data.length?r.EOF:this.data.slice(this.start,Math.min(this.start+e,this.data.length)).toString()},length:function(){return this.data.length-this.start-1},unget:function(e){if(e===r.EOF)return;this.start-=e.length},undo:function(){this.start=this.committed},commit:function(){this.committed=this.start},location:function(){var e=this.lastLocation.line,t=this.lastLocation.column,n=this.data.slice(0,this.committed),r=n.match(/\n/g),i=r?e+r.length:e,s=r?n.length-n.lastIndexOf("\n")-1:t+n.length;return{line:i,column:s}}},n.InputStream=r},{}],4:[function(e,t,n){function i(e,t,n,r){this.localName=t,this.namespaceURI=e,this.attributes=n,this.node=r}function s(e,t){for(var n=0;n<e.attributes.length;n++)if(e.attributes[n].nodeName==t)return e.attributes[n].nodeValue;return null}var r={"http://www.w3.org/1999/xhtml":["address","applet","area","article","aside","base","basefont","bgsound","blockquote","body","br","button","caption","center","col","colgroup","dd","details","dir","div","dl","dt","embed","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","iframe","img","input","isindex","li","link","listing","main","marquee","menu","menuitem","meta","nav","noembed","noframes","noscript","object","ol","p","param","plaintext","pre","script","section","select","source","style","summary","table","tbody","td","textarea","tfoot","th","thead","title","tr","track","ul","wbr","xmp"],"http://www.w3.org/1998/Math/MathML":["mi","mo","mn","ms","mtext","annotation-xml"],"http://www.w3.org/2000/svg":["foreignObject","desc","title"]};i.prototype.isSpecial=function(){return this.namespaceURI in r&&r[this.namespaceURI].indexOf(this.localName)>-1},i.prototype.isFosterParenting=function(){return this.namespaceURI==="http://www.w3.org/1999/xhtml"?this.localName==="table"||this.localName==="tbody"||this.localName==="tfoot"||this.localName==="thead"||this.localName==="tr":!1},i.prototype.isNumberedHeader=function(){return this.namespaceURI==="http://www.w3.org/1999/xhtml"?this.localName==="h1"||this.localName==="h2"||this.localName==="h3"||this.localName==="h4"||this.localName==="h5"||this.localName==="h6":!1},i.prototype.isForeign=function(){return this.namespaceURI!="http://www.w3.org/1999/xhtml"},i.prototype.isHtmlIntegrationPoint=function(){if(this.namespaceURI==="http://www.w3.org/1998/Math/MathML"){if(this.localName!=="annotation-xml")return!1;var e=s(this,"encoding");return e?(e=e.toLowerCase(),e==="text/html"||e==="application/xhtml+xml"):!1}return this.namespaceURI==="http://www.w3.org/2000/svg"?this.localName==="foreignObject"||this.localName==="desc"||this.localName==="title":!1},i.prototype.isMathMLTextIntegrationPoint=function(){return this.namespaceURI==="http://www.w3.org/1998/Math/MathML"?this.localName==="mi"||this.localName==="mo"||this.localName==="mn"||this.localName==="ms"||this.localName==="mtext":!1},n.StackItem=i},{}],5:[function(e,t,n){function s(e){return e===" "||e==="\n"||e===" "||e==="\r"||e==="\f"}function o(e){return e>="A"&&e<="Z"||e>="a"&&e<="z"}function u(e){this._tokenHandler=e,this._state=u.DATA,this._inputStream=new r,this._currentToken=null,this._temporaryBuffer="",this._additionalAllowedCharacter=""}var r=e("./InputStream").InputStream,i=e("./EntityParser").EntityParser;u.prototype._parseError=function(e,t){this._tokenHandler.parseError(e,t)},u.prototype._emitToken=function(e){if(e.type==="StartTag")for(var t=1;t<e.data.length;t++)e.data[t].nodeName||e.data.splice(t--,1);else e.type==="EndTag"&&(e.selfClosing&&this._parseError("self-closing-flag-on-end-tag"),e.data.length!==0&&this._parseError("attributes-in-end-tag"));this._tokenHandler.processToken(e),e.type==="StartTag"&&e.selfClosing&&!this._tokenHandler.isSelfClosingFlagAcknowledged()&&this._parseError("non-void-element-with-trailing-solidus",{name:e.name})},u.prototype._emitCurrentToken=function(){this._state=u.DATA,this._emitToken(this._currentToken)},u.prototype._currentAttribute=function(){return this._currentToken.data[this._currentToken.data.length-1]},u.prototype.setState=function(e){this._state=e},u.prototype.tokenize=function(e){function n(e){var n=e.char();if(n===r.EOF)return t._emitToken({type:"EOF",data:null}),!1;if(n==="&")t.setState(a);else if(n==="<")t.setState(j);else if(n==="\0")t._emitToken({type:"Characters",data:n}),e.commit();else{var i=e.matchUntil("&|<|\0");t._emitToken({type:"Characters",data:n+i}),e.commit()}return!0}function a(e){var r=i.consumeEntity(e,t);return t.setState(n),t._emitToken({type:"Characters",data:r||"&"}),!0}function f(e){var n=e.char();if(n===r.EOF)return t._emitToken({type:"EOF",data:null}),!1;if(n==="&")t.setState(l);else if(n==="<")t.setState(d);else if(n==="\0")t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),e.commit();else{var i=e.matchUntil("&|<|\0");t._emitToken({type:"Characters",data:n+i}),e.commit()}return!0}function l(e){var n=i.consumeEntity(e,t);return t.setState(f),t._emitToken({type:"Characters",data:n||"&"}),!0}function c(e){var n=e.char();if(n===r.EOF)return t._emitToken({type:"EOF",data:null}),!1;if(n==="<")t.setState(g);else if(n==="\0")t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),e.commit();else{var i=e.matchUntil("<|\0");t._emitToken({type:"Characters",data:n+i})}return!0}function h(e){var n=e.char();if(n===r.EOF)return t._emitToken({type:"EOF",data:null}),!1;if(n==="\0")t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),e.commit();else{var i=e.matchUntil("\0");t._emitToken({type:"Characters",data:n+i})}return!0}function p(e){var n=e.char();if(n===r.EOF)return t._emitToken({type:"EOF",data:null}),!1;if(n==="<")t.setState(w);else if(n==="\0")t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),e.commit();else{var i=e.matchUntil("<|\0");t._emitToken({type:"Characters",data:n+i})}return!0}function d(e){var n=e.char();return n==="/"?(this._temporaryBuffer="",t.setState(v)):(t._emitToken({type:"Characters",data:"<"}),e.unget(n),t.setState(f)),!0}function v(e){var n=e.char();return o(n)?(this._temporaryBuffer+=n,t.setState(m)):(t._emitToken({type:"Characters",data:"</"}),e.unget(n),t.setState(f)),!0}function m(e){var r=t._currentToken&&t._currentToken.name===this._temporaryBuffer.toLowerCase(),i=e.char();return s(i)&&r?(t._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},t.setState(q)):i==="/"&&r?(t._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},t.setState(K)):i===">"&&r?(t._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},t._emitCurrentToken(),t.setState(n)):o(i)?(this._temporaryBuffer+=i,e.commit()):(t._emitToken({type:"Characters",data:"</"+this._temporaryBuffer}),e.unget(i),t.setState(f)),!0}function g(e){var n=e.char();return n==="/"?(this._temporaryBuffer="",t.setState(y)):(t._emitToken({type:"Characters",data:"<"}),e.unget(n),t.setState(c)),!0}function y(e){var n=e.char();return o(n)?(this._temporaryBuffer+=n,t.setState(b)):(t._emitToken({type:"Characters",data:"</"}),e.unget(n),t.setState(c)),!0}function b(e){var r=t._currentToken&&t._currentToken.name===this._temporaryBuffer.toLowerCase(),i=e.char();return s(i)&&r?(t._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},t.setState(q)):i==="/"&&r?(t._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},t.setState(K)):i===">"&&r?(t._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},t._emitCurrentToken(),t.setState(n)):o(i)?(this._temporaryBuffer+=i,e.commit()):(t._emitToken({type:"Characters",data:"</"+this._temporaryBuffer}),e.unget(i),t.setState(c)),!0}function w(e){var n=e.char();return n==="/"?(this._temporaryBuffer="",t.setState(E)):n==="!"?(t._emitToken({type:"Characters",data:"<!"}),t.setState(x)):(t._emitToken({type:"Characters",data:"<"}),e.unget(n),t.setState(p)),!0}function E(e){var n=e.char();return o(n)?(this._temporaryBuffer+=n,t.setState(S)):(t._emitToken({type:"Characters",data:"</"}),e.unget(n),t.setState(p)),!0}function S(e){var n=t._currentToken&&t._currentToken.name===this._temporaryBuffer.toLowerCase(),r=e.char();return s(r)&&n?(t._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},t.setState(q)):r==="/"&&n?(t._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},t.setState(K)):r===">"&&n?(t._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},t._emitCurrentToken()):o(r)?(this._temporaryBuffer+=r,e.commit()):(t._emitToken({type:"Characters",data:"</"+this._temporaryBuffer}),e.unget(r),t.setState(p)),!0}function x(e){var n=e.char();return n==="-"?(t._emitToken({type:"Characters",data:"-"}),t.setState(T)):(e.unget(n),t.setState(p)),!0}function T(e){var n=e.char();return n==="-"?(t._emitToken({type:"Characters",data:"-"}),t.setState(k)):(e.unget(n),t.setState(p)),!0}function N(e){var i=e.char();if(i===r.EOF)e.unget(i),t.setState(n);else if(i==="-")t._emitToken({type:"Characters",data:"-"}),t.setState(C);else if(i==="<")t.setState(L);else if(i==="\0")t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),e.commit();else{var s=e.matchUntil("<|-|\0");t._emitToken({type:"Characters",data:i+s})}return!0}function C(e){var i=e.char();return i===r.EOF?(e.unget(i),t.setState(n)):i==="-"?(t._emitToken({type:"Characters",data:"-"}),t.setState(k)):i==="<"?t.setState(L):i==="\0"?(t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),t.setState(N)):(t._emitToken({type:"Characters",data:i}),t.setState(N)),!0}function k(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-script"),e.unget(i),t.setState(n)):i==="<"?t.setState(L):i===">"?(t._emitToken({type:"Characters",data:">"}),t.setState(p)):i==="\0"?(t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),t.setState(N)):(t._emitToken({type:"Characters",data:i}),t.setState(N)),!0}function L(e){var n=e.char();return n==="/"?(this._temporaryBuffer="",t.setState(A)):o(n)?(t._emitToken({type:"Characters",data:"<"+n}),this._temporaryBuffer=n,t.setState(M)):(t._emitToken({type:"Characters",data:"<"}),e.unget(n),t.setState(N)),!0}function A(e){var n=e.char();return o(n)?(this._temporaryBuffer=n,t.setState(O)):(t._emitToken({type:"Characters",data:"</"}),e.unget(n),t.setState(N)),!0}function O(e){var r=t._currentToken&&t._currentToken.name===this._temporaryBuffer.toLowerCase(),i=e.char();return s(i)&&r?(t._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},t.setState(q)):i==="/"&&r?(t._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},t.setState(K)):i===">"&&r?(t._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},t.setState(n),t._emitCurrentToken()):o(i)?(this._temporaryBuffer+=i,e.commit()):(t._emitToken({type:"Characters",data:"</"+this._temporaryBuffer}),e.unget(i),t.setState(N)),!0}function M(e){var n=e.char();return s(n)||n==="/"||n===">"?(t._emitToken({type:"Characters",data:n}),this._temporaryBuffer.toLowerCase()==="script"?t.setState(_):t.setState(N)):o(n)?(t._emitToken({type:"Characters",data:n}),this._temporaryBuffer+=n,e.commit()):(e.unget(n),t.setState(N)),!0}function _(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-script"),e.unget(i),t.setState(n)):i==="-"?(t._emitToken({type:"Characters",data:"-"}),t.setState(D)):i==="<"?(t._emitToken({type:"Characters",data:"<"}),t.setState(H)):i==="\0"?(t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),e.commit()):(t._emitToken({type:"Characters",data:i}),e.commit()),!0}function D(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-script"),e.unget(i),t.setState(n)):i==="-"?(t._emitToken({type:"Characters",data:"-"}),t.setState(P)):i==="<"?(t._emitToken({type:"Characters",data:"<"}),t.setState(H)):i==="\0"?(t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),t.setState(_)):(t._emitToken({type:"Characters",data:i}),t.setState(_)),!0}function P(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-script"),e.unget(i),t.setState(n)):i==="-"?(t._emitToken({type:"Characters",data:"-"}),e.commit()):i==="<"?(t._emitToken({type:"Characters",data:"<"}),t.setState(H)):i===">"?(t._emitToken({type:"Characters",data:">"}),t.setState(p)):i==="\0"?(t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),t.setState(_)):(t._emitToken({type:"Characters",data:i}),t.setState(_)),!0}function H(e){var n=e.char();return n==="/"?(t._emitToken({type:"Characters",data:"/"}),this._temporaryBuffer="",t.setState(B)):(e.unget(n),t.setState(_)),!0}function B(e){var n=e.char();return s(n)||n==="/"||n===">"?(t._emitToken({type:"Characters",data:n}),this._temporaryBuffer.toLowerCase()==="script"?t.setState(N):t.setState(_)):o(n)?(t._emitToken({type:"Characters",data:n}),this._temporaryBuffer+=n,e.commit()):(e.unget(n),t.setState(_)),!0}function j(e){var i=e.char();return i===r.EOF?(t._parseError("bare-less-than-sign-at-eof"),t._emitToken({type:"Characters",data:"<"}),e.unget(i),t.setState(n)):o(i)?(t._currentToken={type:"StartTag",name:i.toLowerCase(),data:[]},t.setState(I)):i==="!"?t.setState(G):i==="/"?t.setState(F):i===">"?(t._parseError("expected-tag-name-but-got-right-bracket"),t._emitToken({type:"Characters",data:"<>"}),t.setState(n)):i==="?"?(t._parseError("expected-tag-name-but-got-question-mark"),e.unget(i),t.setState(Q)):(t._parseError("expected-tag-name"),t._emitToken({type:"Characters",data:"<"}),e.unget(i),t.setState(n)),!0}function F(e){var i=e.char();return i===r.EOF?(t._parseError("expected-closing-tag-but-got-eof"),t._emitToken({type:"Characters",data:"</"}),e.unget(i),t.setState(n)):o(i)?(t._currentToken={type:"EndTag",name:i.toLowerCase(),data:[]},t.setState(I)):i===">"?(t._parseError("expected-closing-tag-but-got-right-bracket"),t.setState(n)):(t._parseError("expected-closing-tag-but-got-char",{data:i}),e.unget(i),t.setState(Q)),!0}function I(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-tag-name"),e.unget(i),t.setState(n)):s(i)?t.setState(q):o(i)?t._currentToken.name+=i.toLowerCase():i===">"?t._emitCurrentToken():i==="/"?t.setState(K):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.name+="\ufffd"):t._currentToken.name+=i,e.commit(),!0}function q(e){var i=e.char();if(i===r.EOF)t._parseError("expected-attribute-name-but-got-eof"),e.unget(i),t.setState(n);else{if(s(i))return!0;o(i)?(t._currentToken.data.push({nodeName:i.toLowerCase(),nodeValue:""}),t.setState(R)):i===">"?t._emitCurrentToken():i==="/"?t.setState(K):i==="'"||i==='"'||i==="="||i==="<"?(t._parseError("invalid-character-in-attribute-name"),t._currentToken.data.push({nodeName:i,nodeValue:""}),t.setState(R)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data.push({nodeName:"\ufffd",nodeValue:""})):(t._currentToken.data.push({nodeName:i,nodeValue:""}),t.setState(R))}return!0}function R(e){var i=e.char(),u=!0,a=!1;i===r.EOF?(t._parseError("eof-in-attribute-name"),e.unget(i),t.setState(n),a=!0):i==="="?t.setState(z):o(i)?(t._currentAttribute().nodeName+=i.toLowerCase(),u=!1):i===">"?a=!0:s(i)?t.setState(U):i==="/"?t.setState(K):i==="'"||i==='"'?(t._parseError("invalid-character-in-attribute-name"),t._currentAttribute().nodeName+=i,u=!1):i==="\0"?(t._parseError("invalid-codepoint"),t._currentAttribute().nodeName+="\ufffd"):(t._currentAttribute().nodeName+=i,u=!1);if(u){var f=t._currentToken.data,l=f[f.length-1];for(var c=f.length-2;c>=0;c--)if(l.nodeName===f[c].nodeName){t._parseError("duplicate-attribute",{name:l.nodeName}),l.nodeName=null;break}a&&t._emitCurrentToken()}else e.commit();return!0}function U(e){var i=e.char();if(i===r.EOF)t._parseError("expected-end-of-tag-but-got-eof"),e.unget(i),t.setState(n);else{if(s(i))return!0;i==="="?t.setState(z):i===">"?t._emitCurrentToken():o(i)?(t._currentToken.data.push({nodeName:i,nodeValue:""}),t.setState(R)):i==="/"?t.setState(K):i==="'"||i==='"'||i==="<"?(t._parseError("invalid-character-after-attribute-name"),t._currentToken.data.push({nodeName:i,nodeValue:""}),t.setState(R)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data.push({nodeName:"\ufffd",nodeValue:""})):(t._currentToken.data.push({nodeName:i,nodeValue:""}),t.setState(R))}return!0}function z(e){var i=e.char();if(i===r.EOF)t._parseError("expected-attribute-value-but-got-eof"),e.unget(i),t.setState(n);else{if(s(i))return!0;i==='"'?t.setState(W):i==="&"?(t.setState(V),e.unget(i)):i==="'"?t.setState(X):i===">"?(t._parseError("expected-attribute-value-but-got-right-bracket"),t._emitCurrentToken()):i==="="||i==="<"||i==="`"?(t._parseError("unexpected-character-in-unquoted-attribute-value"),t._currentAttribute().nodeValue+=i,t.setState(V)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentAttribute().nodeValue+="\ufffd"):(t._currentAttribute().nodeValue+=i,t.setState(V))}return!0}function W(e){var i=e.char();if(i===r.EOF)t._parseError("eof-in-attribute-value-double-quote"),e.unget(i),t.setState(n);else if(i==='"')t.setState(J);else if(i==="&")this._additionalAllowedCharacter='"',t.setState($);else if(i==="\0")t._parseError("invalid-codepoint"),t._currentAttribute().nodeValue+="\ufffd";else{var s=e.matchUntil('[\0"&]');i+=s,t._currentAttribute().nodeValue+=i}return!0}function X(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-attribute-value-single-quote"),e.unget(i),t.setState(n)):i==="'"?t.setState(J):i==="&"?(this._additionalAllowedCharacter="'",t.setState($)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentAttribute().nodeValue+="\ufffd"):t._currentAttribute().nodeValue+=i+e.matchUntil("\0|['&]"),!0}function V(e){var i=e.char();if(i===r.EOF)t._parseError("eof-after-attribute-value"),e.unget(i),t.setState(n);else if(s(i))t.setState(q);else if(i==="&")this._additionalAllowedCharacter=">",t.setState($);else if(i===">")t._emitCurrentToken();else if(i==='"'||i==="'"||i==="="||i==="`"||i==="<")t._parseError("unexpected-character-in-unquoted-attribute-value"),t._currentAttribute().nodeValue+=i,e.commit();else if(i==="\0")t._parseError("invalid-codepoint"),t._currentAttribute().nodeValue+="\ufffd";else{var o=e.matchUntil("\0|[ \n \f \r&<>\"'=`]");o===r.EOF&&(t._parseError("eof-in-attribute-value-no-quotes"),t._emitCurrentToken()),e.commit(),t._currentAttribute().nodeValue+=i+o}return!0}function $(e){var n=i.consumeEntity(e,t,this._additionalAllowedCharacter);return this._currentAttribute().nodeValue+=n||"&",this._additionalAllowedCharacter==='"'?t.setState(W):this._additionalAllowedCharacter==="'"?t.setState(X):this._additionalAllowedCharacter===">"&&t.setState(V),!0}function J(e){var i=e.char();return i===r.EOF?(t._parseError("eof-after-attribute-value"),e.unget(i),t.setState(n)):s(i)?t.setState(q):i===">"?(t.setState(n),t._emitCurrentToken()):i==="/"?t.setState(K):(t._parseError("unexpected-character-after-attribute-value"),e.unget(i),t.setState(q)),!0}function K(e){var i=e.char();return i===r.EOF?(t._parseError("unexpected-eof-after-solidus-in-tag"),e.unget(i),t.setState(n)):i===">"?(t._currentToken.selfClosing=!0,t.setState(n),t._emitCurrentToken()):(t._parseError("unexpected-character-after-solidus-in-tag"),e.unget(i),t.setState(q)),!0}function Q(e){var r=e.matchUntil(">");return r=r.replace(/\u0000/g,"\ufffd"),e.char(),t._emitToken({type:"Comment",data:r}),t.setState(n),!0}function G(e){var n=e.shift(2);if(n==="--")t._currentToken={type:"Comment",data:""},t.setState(Z);else{var i=e.shift(5);if(i===r.EOF||n===r.EOF)return t._parseError("expected-dashes-or-doctype"),t.setState(Q),e.unget(n),!0;n+=i,n.toUpperCase()==="DOCTYPE"?(t._currentToken={type:"Doctype",name:"",publicId:null,systemId:null,forceQuirks:!1},t.setState(st)):t._tokenHandler.isCdataSectionAllowed()&&n==="[CDATA["?t.setState(Y):(t._parseError("expected-dashes-or-doctype"),e.unget(n),t.setState(Q))}return!0}function Y(e){var r=e.matchUntil("]]>");return e.shift(3),r&&t._emitToken({type:"Characters",data:r}),t.setState(n),!0}function Z(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i==="-"?t.setState(et):i===">"?(t._parseError("incorrect-comment"),t._emitToken(t._currentToken),t.setState(n)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data+="\ufffd"):(t._currentToken.data+=i,t.setState(tt)),!0}function et(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i==="-"?t.setState(rt):i===">"?(t._parseError("incorrect-comment"),t._emitToken(t._currentToken),t.setState(n)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data+="\ufffd"):(t._currentToken.data+="-"+i,t.setState(tt)),!0}function tt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i==="-"?t.setState(nt):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data+="\ufffd"):(t._currentToken.data+=i,e.commit()),!0}function nt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment-end-dash"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i==="-"?t.setState(rt):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data+="-\ufffd",t.setState(tt)):(t._currentToken.data+="-"+i+e.matchUntil("\0|-"),e.char()),!0}function rt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment-double-dash"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i===">"?(t._emitToken(t._currentToken),t.setState(n)):i==="!"?(t._parseError("unexpected-bang-after-double-dash-in-comment"),t.setState(it)):i==="-"?(t._parseError("unexpected-dash-after-double-dash-in-comment"),t._currentToken.data+=i):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data+="--\ufffd",t.setState(tt)):(t._parseError("unexpected-char-in-comment"),t._currentToken.data+="--"+i,t.setState(tt)),!0}function it(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment-end-bang-state"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i===">"?(t._emitToken(t._currentToken),t.setState(n)):i==="-"?(t._currentToken.data+="--!",t.setState(nt)):(t._currentToken.data+="--!"+i,t.setState(tt)),!0}function st(e){var i=e.char();return i===r.EOF?(t._parseError("expected-doctype-name-but-got-eof"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):s(i)?t.setState(ot):(t._parseError("need-space-after-doctype"),e.unget(i),t.setState(ot)),!0}function ot(e){var i=e.char();return i===r.EOF?(t._parseError("expected-doctype-name-but-got-eof"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):s(i)||(i===">"?(t._parseError("expected-doctype-name-but-got-right-bracket"),t._currentToken.forceQuirks=!0,t.setState(n),t._emitCurrentToken()):(o(i)&&(i=i.toLowerCase()),t._currentToken.name=i,t.setState(ut))),!0}function ut(e){var i=e.char();return i===r.EOF?(t._currentToken.forceQuirks=!0,e.unget(i),t._parseError("eof-in-doctype-name"),t.setState(n),t._emitCurrentToken()):s(i)?t.setState(at):i===">"?(t.setState(n),t._emitCurrentToken()):(o(i)&&(i=i.toLowerCase()),t._currentToken.name+=i,e.commit()),!0}function at(e){var i=e.char();if(i===r.EOF)t._currentToken.forceQuirks=!0,e.unget(i),t._parseError("eof-in-doctype"),t.setState(n),t._emitCurrentToken();else if(!s(i))if(i===">")t.setState(n),t._emitCurrentToken();else{if(["p","P"].indexOf(i)>-1){var o=[["u","U"],["b","B"],["l","L"],["i","I"],["c","C"]],u=o.every(function(t){return i=e.char(),t.indexOf(i)>-1});if(u)return t.setState(ft),!0}else if(["s","S"].indexOf(i)>-1){var o=[["y","Y"],["s","S"],["t","T"],["e","E"],["m","M"]],u=o.every(function(t){return i=e.char(),t.indexOf(i)>-1});if(u)return t.setState(vt),!0}e.unget(i),t._currentToken.forceQuirks=!0,i===r.EOF?(t._parseError("eof-in-doctype"),e.unget(i),t.setState(n),t._emitCurrentToken()):(t._parseError("expected-space-or-right-bracket-in-doctype",{data:i}),t.setState(wt))}return!0}function ft(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):s(i)?t.setState(lt):i==="'"||i==='"'?(t._parseError("unexpected-char-in-doctype"),e.unget(i),t.setState(lt)):(e.unget(i),t.setState(lt)),!0}function lt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):s(i)||(i==='"'?(t._currentToken.publicId="",t.setState(ct)):i==="'"?(t._currentToken.publicId="",t.setState(ht)):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t.setState(n),t._emitCurrentToken()):(t._parseError("unexpected-char-in-doctype"),t._currentToken.forceQuirks=!0,t.setState(wt))),!0}function ct(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):i==='"'?t.setState(pt):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t.setState(n),t._emitCurrentToken()):t._currentToken.publicId+=i,!0}function ht(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):i==="'"?t.setState(pt):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t.setState(n),t._emitCurrentToken()):t._currentToken.publicId+=i,!0}function pt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):s(i)?t.setState(dt):i===">"?(t.setState(n),t._emitCurrentToken()):i==='"'?(t._parseError("unexpected-char-in-doctype"),t._currentToken.systemId="",t.setState(gt)):i==="'"?(t._parseError("unexpected-char-in-doctype"),t._currentToken.systemId="",t.setState(yt)):(t._parseError("unexpected-char-in-doctype"),t._currentToken.forceQuirks=!0,t.setState(wt)),!0}function dt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):s(i)||(i===">"?(t._emitCurrentToken(),t.setState(n)):i==='"'?(t._currentToken.systemId="",t.setState(gt)):i==="'"?(t._currentToken.systemId="",t.setState(yt)):(t._parseError("unexpected-char-in-doctype"),t._currentToken.forceQuirks=!0,t.setState(wt))),!0}function vt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):s(i)?t.setState(mt):i==="'"||i==='"'?(t._parseError("unexpected-char-in-doctype"),e.unget(i),t.setState(mt)):(e.unget(i),t.setState(mt)),!0}function mt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):s(i)||(i==='"'?(t._currentToken.systemId="",t.setState(gt)):i==="'"?(t._currentToken.systemId="",t.setState(yt)):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),t.setState(n)):(t._parseError("unexpected-char-in-doctype"),t._currentToken.forceQuirks=!0,t.setState(wt))),!0}function gt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):i==='"'?t.setState(bt):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),t.setState(n)):t._currentToken.systemId+=i,!0}function yt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):i==="'"?t.setState(bt):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),t.setState(n)):t._currentToken.systemId+=i,!0}function bt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):s(i)||(i===">"?(t._emitCurrentToken(),t.setState(n)):(t._parseError("unexpected-char-in-doctype"),t.setState(wt))),!0}function wt(e){var i=e.char();return i===r.EOF?(e.unget(i),t._emitCurrentToken(),t.setState(n)):i===">"&&(t._emitCurrentToken(),t.setState(n)),!0}u.DATA=n,u.RCDATA=f,u.RAWTEXT=c,u.SCRIPT_DATA=p,u.PLAINTEXT=h,this._state=u.DATA,this._inputStream.append(e),this._tokenHandler.startTokenization(this),this._inputStream.eof=!0;var t=this;while(this._state.call(this,this._inputStream));},Object.defineProperty(u.prototype,"lineNumber",{get:function(){return this._inputStream.location().line}}),Object.defineProperty(u.prototype,"columnNumber",{get:function(){return this._inputStream.location().column}}),n.Tokenizer=u},{"./EntityParser":2,"./InputStream":3}],6:[function(e,t,n){function c(e){return e===" "||e==="\n"||e===" "||e==="\r"||e==="\f"}function h(e){return c(e)||e==="\ufffd"}function p(e){for(var t=0;t<e.length;t++){var n=e[t];if(!c(n))return!1}return!0}function d(e){for(var t=0;t<e.length;t++){var n=e[t];if(!h(n))return!1}return!0}function v(e,t){for(var n=0;n<e.attributes.length;n++){var r=e.attributes[n];if(r.nodeName===t)return r}return null}function m(e){this.characters=e,this.current=0,this.end=this.characters.length}function g(){this.tokenizer=null,this.errorHandler=null,this.scriptingEnabled=!1,this.document=null,this.head=null,this.form=null,this.openElements=new a,this.activeFormattingElements=[],this.insertionMode=null,this.insertionModeName="",this.originalInsertionMode="",this.inQuirksMode=!1,this.compatMode="no quirks",this.framesetOk=!0,this.redirectAttachToFosterParent=!1,this.selfClosingFlagAcknowledged=!1,this.context="",this.pendingTableCharacters=[],this.shouldSkipLeadingNewline=!1;var e=this,t=this.insertionModes={};t.base={end_tag_handlers:{"-default":"endTagOther"},start_tag_handlers:{"-default":"startTagOther"},processEOF:function(){e.generateImpliedEndTags(),e.openElements.length>2?e.parseError("expected-closing-tag-but-got-eof"):e.openElements.length==2&&e.openElements.item(1).localName!="body"?e.parseError("expected-closing-tag-but-got-eof"):e.context&&e.openElements.length>1},processComment:function(t){e.insertComment(t,e.currentStackItem().node)},processDoctype:function(t,n,r,i){e.parseError("unexpected-doctype")},processStartTag:function(e,t,n){if(this[this.start_tag_handlers[e]])this[this.start_tag_handlers[e]](e,t,n);else{if(!this[this.start_tag_handlers["-default"]])throw new Error("No handler found for "+e);this[this.start_tag_handlers["-default"]](e,t,n)}},processEndTag:function(e){if(this[this.end_tag_handlers[e]])this[this.end_tag_handlers[e]](e);else{if(!this[this.end_tag_handlers["-default"]])throw new Error("No handler found for "+e);this[this.end_tag_handlers["-default"]](e)}},startTagHtml:function(e,n){t.inBody.startTagHtml(e,n)}},t.initial=Object.create(t.base),t.initial.processEOF=function(){e.parseError("expected-doctype-but-got-eof"),this.anythingElse(),e.insertionMode.processEOF()},t.initial.processComment=function(t){e.insertComment(t,e.document)},t.initial.processDoctype=function(t,n,r,i){function s(e){return n.toLowerCase().indexOf(e)===0}e.insertDoctype(t||"",n||"",r||""),i||t!="html"||n!=null&&(["+//silmaril//dtd html pro v0r11 19970101//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//as//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html strict//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//ietf//dtd html//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//spyglass//dtd html 2.0 extended//","-//sq//dtd html 2.0 hotmetal + extensions//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//","html"].some(s)||["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"].indexOf(n.toLowerCase())>-1||r==null&&["-//w3c//dtd html 4.01 transitional//","-//w3c//dtd html 4.01 frameset//"].some(s))||r!=null&&r.toLowerCase()=="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"?(e.compatMode="quirks",e.parseError("quirky-doctype")):n!=null&&(["-//w3c//dtd xhtml 1.0 transitional//","-//w3c//dtd xhtml 1.0 frameset//"].some(s)||r!=null&&["-//w3c//dtd html 4.01 transitional//","-//w3c//dtd html 4.01 frameset//"].indexOf(n.toLowerCase())>-1)?(e.compatMode="limited quirks",e.parseError("almost-standards-doctype")):n=="-//W3C//DTD HTML 4.0//EN"&&(r==null||r=="http://www.w3.org/TR/REC-html40/strict.dtd")||n=="-//W3C//DTD HTML 4.01//EN"&&(r==null||r=="http://www.w3.org/TR/html4/strict.dtd")||n=="-//W3C//DTD XHTML 1.0 Strict//EN"&&r=="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"||n=="-//W3C//DTD XHTML 1.1//EN"&&r=="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"||(r!=null&&r!="about:legacy-compat"||n!=null)&&e.parseError("unknown-doctype"),e.setInsertionMode("beforeHTML")},t.initial.processCharacters=function(t){t.skipLeadingWhitespace();if(!t.length)return;e.parseError("expected-doctype-but-got-chars"),this.anythingElse(),e.insertionMode.processCharacters(t)},t.initial.processStartTag=function(t,n,r){e.parseError("expected-doctype-but-got-start-tag",{name:t}),this.anythingElse(),e.insertionMode.processStartTag(t,n,r)},t.initial.processEndTag=function(t){e.parseError("expected-doctype-but-got-end-tag",{name:t}),this.anythingElse(),e.insertionMode.processEndTag(t)},t.initial.anythingElse=function(){e.compatMode="quirks",e.setInsertionMode("beforeHTML")},t.beforeHTML=Object.create(t.base),t.beforeHTML.start_tag_handlers={html:"startTagHtml","-default":"startTagOther"},t.beforeHTML.processEOF=function(){this.anythingElse(),e.insertionMode.processEOF()},t.beforeHTML.processComment=function(t){e.insertComment(t,e.document)},t.beforeHTML.processCharacters=function(t){t.skipLeadingWhitespace();if(!t.length)return;this.anythingElse(),e.insertionMode.processCharacters(t)},t.beforeHTML.startTagHtml=function(t,n,r){e.insertHtmlElement(n),e.setInsertionMode("beforeHead")},t.beforeHTML.startTagOther=function(t,n,r){this.anythingElse(),e.insertionMode.processStartTag(t,n,r)},t.beforeHTML.processEndTag=function(t){this.anythingElse(),e.insertionMode.processEndTag(t)},t.beforeHTML.anythingElse=function(){e.insertHtmlElement(),e.setInsertionMode("beforeHead")},t.afterAfterBody=Object.create(t.base),t.afterAfterBody.start_tag_handlers={html:"startTagHtml","-default":"startTagOther"},t.afterAfterBody.processComment=function(t){e.insertComment(t,e.document)},t.afterAfterBody.processDoctype=function(e){t.inBody.processDoctype(e)},t.afterAfterBody.startTagHtml=function(e,n){t.inBody.startTagHtml(e,n)},t.afterAfterBody.startTagOther=function(t,n,r){e.parseError("unexpected-start-tag",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processStartTag(t,n,r)},t.afterAfterBody.endTagOther=function(t){e.parseError("unexpected-end-tag",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processEndTag(t)},t.afterAfterBody.processCharacters=function(n){if(!p(n.characters))return e.parseError("unexpected-char-after-body"),e.setInsertionMode("inBody"),e.insertionMode.processCharacters(n);t.inBody.processCharacters(n)},t.afterBody=Object.create(t.base),t.afterBody.end_tag_handlers={html:"endTagHtml","-default":"endTagOther"},t.afterBody.processComment=function(t){e.insertComment(t,e.openElements.rootNode)},t.afterBody.processCharacters=function(n){if(!p(n.characters))return e.parseError("unexpected-char-after-body"),e.setInsertionMode("inBody"),e.insertionMode.processCharacters(n);t.inBody.processCharacters(n)},t.afterBody.processStartTag=function(t,n,r){e.parseError("unexpected-start-tag-after-body",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processStartTag(t,n,r)},t.afterBody.endTagHtml=function(t){e.context?e.parseError("end-html-in-innerhtml"):e.setInsertionMode("afterAfterBody")},t.afterBody.endTagOther=function(t){e.parseError("unexpected-end-tag-after-body",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processEndTag(t)},t.afterFrameset=Object.create(t.base),t.afterFrameset.start_tag_handlers={html:"startTagHtml",noframes:"startTagNoframes","-default":"startTagOther"},t.afterFrameset.end_tag_handlers={html:"endTagHtml","-default":"endTagOther"},t.afterFrameset.processCharacters=function(t){var n=t.takeRemaining(),r="";for(var i=0;i<n.length;i++){var s=n[i];c(s)&&(r+=s)}r&&e.insertText(r),r.length<n.length&&e.parseError("expected-eof-but-got-char")},t.afterFrameset.startTagNoframes=function(e,n){t.inHead.processStartTag(e,n)},t.afterFrameset.startTagOther=function(t,n){e.parseError("unexpected-start-tag-after-frameset",{name:t})},t.afterFrameset.endTagHtml=function(t){e.setInsertionMode("afterAfterFrameset")},t.afterFrameset.endTagOther=function(t){e.parseError("unexpected-end-tag-after-frameset",{name:t})},t.beforeHead=Object.create(t.base),t.beforeHead.start_tag_handlers={html:"startTagHtml",head:"startTagHead","-default":"startTagOther"},t.beforeHead.end_tag_handlers={html:"endTagImplyHead",head:"endTagImplyHead",body:"endTagImplyHead",br:"endTagImplyHead","-default":"endTagOther"},t.beforeHead.processEOF=function(){this.startTagHead("head",[]),e.insertionMode.processEOF()},t.beforeHead.processCharacters=function(t){t.skipLeadingWhitespace();if(!t.length)return;this.startTagHead("head",[]),e.insertionMode.processCharacters(t)},t.beforeHead.startTagHead=function(t,n){e.insertHeadElement(n),e.setInsertionMode("inHead")},t.beforeHead.startTagOther=function(t,n,r){this.startTagHead("head",[]),e.insertionMode.processStartTag(t,n,r)},t.beforeHead.endTagImplyHead=function(t){this.startTagHead("head",[]),e.insertionMode.processEndTag(t)},t.beforeHead.endTagOther=function(t){e.parseError("end-tag-after-implied-root",{name:t})},t.inHead=Object.create(t.base),t.inHead.start_tag_handlers={html:"startTagHtml",head:"startTagHead",title:"startTagTitle",script:"startTagScript",style:"startTagNoFramesStyle",noscript:"startTagNoScript",noframes:"startTagNoFramesStyle",base:"startTagBaseBasefontBgsoundLink",basefont:"startTagBaseBasefontBgsoundLink",bgsound:"startTagBaseBasefontBgsoundLink",link:"startTagBaseBasefontBgsoundLink",meta:"startTagMeta","-default":"startTagOther"},t.inHead.end_tag_handlers={head:"endTagHead",html:"endTagHtmlBodyBr",body:"endTagHtmlBodyBr",br:"endTagHtmlBodyBr","-default":"endTagOther"},t.inHead.processEOF=function(){var t=e.currentStackItem().localName;["title","style","script"].indexOf(t)!=-1&&(e.parseError("expected-named-closing-tag-but-got-eof",{name:t}),e.popElement()),this.anythingElse(),e.insertionMode.processEOF()},t.inHead.processCharacters=function(t){var n=t.takeLeadingWhitespace();n&&e.insertText(n);if(!t.length)return;this.anythingElse(),e.insertionMode.processCharacters(t)},t.inHead.startTagHtml=function(e,n){t.inBody.processStartTag(e,n)},t.inHead.startTagHead=function(t,n){e.parseError("two-heads-are-not-better-than-one")},t.inHead.startTagTitle=function(t,n){e.processGenericRCDATAStartTag(t,n)},t.inHead.startTagNoScript=function(t,n){if(e.scriptingEnabled)return e.processGenericRawTextStartTag(t,n);e.insertElement(t,n),e.setInsertionMode("inHeadNoscript")},t.inHead.startTagNoFramesStyle=function(t,n){e.processGenericRawTextStartTag(t,n)},t.inHead.startTagScript=function(t,n){e.insertElement(t,n),e.tokenizer.setState(u.SCRIPT_DATA),e.originalInsertionMode=e.insertionModeName,e.setInsertionMode("text")},t.inHead.startTagBaseBasefontBgsoundLink=function(t,n){e.insertSelfClosingElement(t,n)},t.inHead.startTagMeta=function(t,n){e.insertSelfClosingElement(t,n)},t.inHead.startTagOther=function(t,n,r){this.anythingElse(),e.insertionMode.processStartTag(t,n,r)},t.inHead.endTagHead=function(t){e.openElements.item(e.openElements.length-1).localName=="head"?e.openElements.pop():e.parseError("unexpected-end-tag",{name:"head"}),e.setInsertionMode("afterHead")},t.inHead.endTagHtmlBodyBr=function(t){this.anythingElse(),e.insertionMode.processEndTag(t)},t.inHead.endTagOther=function(t){e.parseError("unexpected-end-tag",{name:t})},t.inHead.anythingElse=function(){this.endTagHead("head")},t.afterHead=Object.create(t.base),t.afterHead.start_tag_handlers={html:"startTagHtml",head:"startTagHead",body:"startTagBody",frameset:"startTagFrameset",base:"startTagFromHead",link:"startTagFromHead",meta:"startTagFromHead",script:"startTagFromHead",style:"startTagFromHead",title:"startTagFromHead","-default":"startTagOther"},t.afterHead.end_tag_handlers={body:"endTagBodyHtmlBr",html:"endTagBodyHtmlBr",br:"endTagBodyHtmlBr","-default":"endTagOther"},t.afterHead.processEOF=function(){this.anythingElse(),e.insertionMode.processEOF()},t.afterHead.processCharacters=function(t){var n=t.takeLeadingWhitespace();n&&e.insertText(n);if(!t.length)return;this.anythingElse(),e.insertionMode.processCharacters(t)},t.afterHead.startTagHtml=function(e,n){t.inBody.processStartTag(e,n)},t.afterHead.startTagBody=function(t,n){e.framesetOk=!1,e.insertBodyElement(n),e.setInsertionMode("inBody")},t.afterHead.startTagFrameset=function(t,n){e.insertElement(t,n),e.setInsertionMode("inFrameset")},t.afterHead.startTagFromHead=function(n,r,i){e.parseError("unexpected-start-tag-out-of-my-head",{name:n}),e.openElements.push(e.head),t.inHead.processStartTag(n,r,i),e.openElements.remove(e.head)},t.afterHead.startTagHead=function(t,n,r){e.parseError("unexpected-start-tag",{name:t})},t.afterHead.startTagOther=function(t,n,r){this.anythingElse(),e.insertionMode.processStartTag(t,n,r)},t.afterHead.endTagBodyHtmlBr=function(t){this.anythingElse(),e.insertionMode.processEndTag(t)},t.afterHead.endTagOther=function(t){e.parseError("unexpected-end-tag",{name:t})},t.afterHead.anythingElse=function(){e.insertBodyElement([]),e.setInsertionMode("inBody"),e.framesetOk=!0},t.inBody=Object.create(t.base),t.inBody.start_tag_handlers={html:"startTagHtml",head:"startTagMisplaced",base:"startTagProcessInHead",basefont:"startTagProcessInHead",bgsound:"startTagProcessInHead",link:"startTagProcessInHead",meta:"startTagProcessInHead",noframes:"startTagProcessInHead",script:"startTagProcessInHead",style:"startTagProcessInHead",title:"startTagProcessInHead",body:"startTagBody",form:"startTagForm",plaintext:"startTagPlaintext",a:"startTagA",button:"startTagButton",xmp:"startTagXmp",table:"startTagTable",hr:"startTagHr",image:"startTagImage",input:"startTagInput",textarea:"startTagTextarea",select:"startTagSelect",isindex:"startTagIsindex",applet:"startTagAppletMarqueeObject",marquee:"startTagAppletMarqueeObject",object:"startTagAppletMarqueeObject",li:"startTagListItem",dd:"startTagListItem",dt:"startTagListItem",address:"startTagCloseP",article:"startTagCloseP",aside:"startTagCloseP",blockquote:"startTagCloseP",center:"startTagCloseP",details:"startTagCloseP",dir:"startTagCloseP",div:"startTagCloseP",dl:"startTagCloseP",fieldset:"startTagCloseP",figcaption:"startTagCloseP",figure:"startTagCloseP",footer:"startTagCloseP",header:"startTagCloseP",hgroup:"startTagCloseP",main:"startTagCloseP",menu:"startTagCloseP",nav:"startTagCloseP",ol:"startTagCloseP",p:"startTagCloseP",section:"startTagCloseP",summary:"startTagCloseP",ul:"startTagCloseP",listing:"startTagPreListing",pre:"startTagPreListing",b:"startTagFormatting",big:"startTagFormatting",code:"startTagFormatting",em:"startTagFormatting",font:"startTagFormatting",i:"startTagFormatting",s:"startTagFormatting",small:"startTagFormatting",strike:"startTagFormatting",strong:"startTagFormatting",tt:"startTagFormatting",u:"startTagFormatting",nobr:"startTagNobr",area:"startTagVoidFormatting",br:"startTagVoidFormatting",embed:"startTagVoidFormatting",img:"startTagVoidFormatting",keygen:"startTagVoidFormatting",wbr:"startTagVoidFormatting",param:"startTagParamSourceTrack",source:"startTagParamSourceTrack",track:"startTagParamSourceTrack",iframe:"startTagIFrame",noembed:"startTagRawText",noscript:"startTagRawText",h1:"startTagHeading",h2:"startTagHeading",h3:"startTagHeading",h4:"startTagHeading",h5:"startTagHeading",h6:"startTagHeading",caption:"startTagMisplaced",col:"startTagMisplaced",colgroup:"startTagMisplaced",frame:"startTagMisplaced",frameset:"startTagFrameset",tbody:"startTagMisplaced",td:"startTagMisplaced",tfoot:"startTagMisplaced",th:"startTagMisplaced",thead:"startTagMisplaced",tr:"startTagMisplaced",option:"startTagOptionOptgroup",optgroup:"startTagOptionOptgroup",math:"startTagMath",svg:"startTagSVG",rt:"startTagRpRt",rp:"startTagRpRt","-default":"startTagOther"},t.inBody.end_tag_handlers={p:"endTagP",body:"endTagBody",html:"endTagHtml",address:"endTagBlock",article:"endTagBlock",aside:"endTagBlock",blockquote:"endTagBlock",button:"endTagBlock",center:"endTagBlock",details:"endTagBlock",dir:"endTagBlock",div:"endTagBlock",dl:"endTagBlock",fieldset:"endTagBlock",figcaption:"endTagBlock",figure:"endTagBlock",footer:"endTagBlock",header:"endTagBlock",hgroup:"endTagBlock",listing:"endTagBlock",main:"endTagBlock",menu:"endTagBlock",nav:"endTagBlock",ol:"endTagBlock",pre:"endTagBlock",section:"endTagBlock",summary:"endTagBlock",ul:"endTagBlock",form:"endTagForm",applet:"endTagAppletMarqueeObject",marquee:"endTagAppletMarqueeObject",object:"endTagAppletMarqueeObject",dd:"endTagListItem",dt:"endTagListItem",li:"endTagListItem",h1:"endTagHeading",h2:"endTagHeading",h3:"endTagHeading",h4:"endTagHeading",h5:"endTagHeading",h6:"endTagHeading",a:"endTagFormatting",b:"endTagFormatting",big:"endTagFormatting",code:"endTagFormatting",em:"endTagFormatting",font:"endTagFormatting",i:"endTagFormatting",nobr:"endTagFormatting",s:"endTagFormatting",small:"endTagFormatting",strike:"endTagFormatting",strong:"endTagFormatting",tt:"endTagFormatting",u:"endTagFormatting",br:"endTagBr","-default":"endTagOther"},t.inBody.processCharacters=function(t){e.shouldSkipLeadingNewline&&(e.shouldSkipLeadingNewline=!1,t.skipAtMostOneLeadingNewline()),e.reconstructActiveFormattingElements();var n=t.takeRemaining();n=n.replace(/\u0000/g,function(t,n){return e.parseError("invalid-codepoint"),""});if(!n)return;e.insertText(n),e.framesetOk&&!d(n)&&(e.framesetOk=!1)},t.inBody.startTagHtml=function(t,n){e.parseError("non-html-root"),e.addAttributesToElement(e.openElements.rootNode,n)},t.inBody.startTagProcessInHead=function(e,n){t.inHead.processStartTag(e,n)},t.inBody.startTagBody=function(t,n){e.parseError("unexpected-start-tag",{name:"body"}),e.openElements.length==1||e.openElements.item(1).localName!="body"?r.ok(e.context):(e.framesetOk=!1,e.addAttributesToElement(e.openElements.bodyElement,n))},t.inBody.startTagFrameset=function(t,n){e.parseError("unexpected-start-tag",{name:"frameset"});if(e.openElements.length==1||e.openElements.item(1).localName!="body")r.ok(e.context);else if(e.framesetOk){e.detachFromParent(e.openElements.bodyElement);while(e.openElements.length>1)e.openElements.pop();e.insertElement(t,n),e.setInsertionMode("inFrameset")}},t.inBody.startTagCloseP=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n)},t.inBody.startTagPreListing=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.framesetOk=!1,e.shouldSkipLeadingNewline=!0},t.inBody.startTagForm=function(t,n){e.form?e.parseError("unexpected-start-tag",{name:t}):(e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.form=e.currentStackItem())},t.inBody.startTagRpRt=function(t,n){e.openElements.inScope("ruby")&&(e.generateImpliedEndTags(),e.currentStackItem().localName!="ruby"&&e.parseError("unexpected-start-tag",{name:t})),e.insertElement(t,n)},t.inBody.startTagListItem=function(t,n){var r={li:["li"],dd:["dd","dt"],dt:["dd","dt"]},i=r[t],s=e.openElements;for(var o=s.length-1;o>=0;o--){var u=s.item(o);if(i.indexOf(u.localName)!=-1){e.insertionMode.processEndTag(u.localName);break}if(u.isSpecial()&&u.localName!=="p"&&u.localName!=="address"&&u.localName!=="div")break}e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.framesetOk=!1},t.inBody.startTagPlaintext=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.tokenizer.setState(u.PLAINTEXT)},t.inBody.startTagHeading=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.currentStackItem().isNumberedHeader()&&(e.parseError("unexpected-start-tag",{name:t}),e.popElement()),e.insertElement(t,n)},t.inBody.startTagA=function(t,n){var r=e.elementInActiveFormattingElements("a");r&&(e.parseError("unexpected-start-tag-implies-end-tag",{startName:"a",endName:"a"}),e.adoptionAgencyEndTag("a"),e.openElements.contains(r)&&e.openElements.remove(r),e.removeElementFromActiveFormattingElements(r)),e.reconstructActiveFormattingElements(),e.insertFormattingElement(t,n)},t.inBody.startTagFormatting=function(t,n){e.reconstructActiveFormattingElements(),e.insertFormattingElement(t,n)},t.inBody.startTagNobr=function(t,n){e.reconstructActiveFormattingElements(),e.openElements.inScope("nobr")&&(e.parseError("unexpected-start-tag-implies-end-tag",{startName:"nobr",endName:"nobr"}),this.processEndTag("nobr"),e.reconstructActiveFormattingElements()),e.insertFormattingElement(t,n)},t.inBody.startTagButton=function(t,n){e.openElements.inScope("button")?(e.parseError("unexpected-start-tag-implies-end-tag",{startName:"button",endName:"button"}),this.processEndTag("button"),e.insertionMode.processStartTag(t,n)):(e.framesetOk=!1,e.reconstructActiveFormattingElements(),e.insertElement(t,n))},t.inBody.startTagAppletMarqueeObject=function(t,n){e.reconstructActiveFormattingElements(),e.insertElement(t,n),e.activeFormattingElements.push(l),e.framesetOk=!1},t.inBody.endTagAppletMarqueeObject=function(t){e.openElements.inScope(t)?(e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.popUntilPopped(t),e.clearActiveFormattingElements()):e.parseError("unexpected-end-tag",{name:t})},t.inBody.startTagXmp=function(t,n){e.openElements.inButtonScope("p")&&this.processEndTag("p"),e.reconstructActiveFormattingElements(),e.processGenericRawTextStartTag(t,n),e.framesetOk=!1},t.inBody.startTagTable=function(t,n){e.compatMode!=="quirks"&&e.openElements.inButtonScope("p")&&this.processEndTag("p"),e.insertElement(t,n),e.setInsertionMode("inTable"),e.framesetOk=!1},t.inBody.startTagVoidFormatting=function(t,n){e.reconstructActiveFormattingElements(),e.insertSelfClosingElement(t,n),e.framesetOk=!1},t.inBody.startTagParamSourceTrack=function(t,n){e.insertSelfClosingElement(t,n)},t.inBody.startTagHr=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertSelfClosingElement(t,n),e.framesetOk=!1},t.inBody.startTagImage=function(t,n){e.parseError("unexpected-start-tag-treated-as",{originalName:"image",newName:"img"}),this.processStartTag("img",n)},t.inBody.startTagInput=function(t,n){var r=e.framesetOk;this.startTagVoidFormatting(t,n);for(var i in n)if(n[i].nodeName=="type"){n[i].nodeValue.toLowerCase()=="hidden"&&(e.framesetOk=r);break}},t.inBody.startTagIsindex=function(t,n){e.parseError("deprecated-tag",{name:"isindex"}),e.selfClosingFlagAcknowledged=!0;if(e.form)return;var r=[],i=[],s="This is a searchable index. Enter search keywords: ";for(var o in n)switch(n[o].nodeName){case"action":r.push({nodeName:"action",nodeValue:n[o].nodeValue});break;case"prompt":s=n[o].nodeValue;break;case"name":break;default:i.push({nodeName:n[o].nodeName,nodeValue:n[o].nodeValue})}i.push({nodeName:"name",nodeValue:"isindex"}),this.processStartTag("form",r),this.processStartTag("hr"),this.processStartTag("label"),this.processCharacters(new m(s)),this.processStartTag("input",i),this.processEndTag("label"),this.processStartTag("hr"),this.processEndTag("form")},t.inBody.startTagTextarea=function(t,n){e.insertElement(t,n),e.tokenizer.setState(u.RCDATA),e.originalInsertionMode=e.insertionModeName,e.shouldSkipLeadingNewline=!0,e.framesetOk=!1,e.setInsertionMode("text")},t.inBody.startTagIFrame=function(t,n){e.framesetOk=!1,this.startTagRawText(t,n)},t.inBody.startTagRawText=function(t,n){e.processGenericRawTextStartTag(t,n)},t.inBody.startTagSelect=function(t,n){e.reconstructActiveFormattingElements(),e.insertElement(t,n),e.framesetOk=!1;var r=e.insertionModeName;r=="inTable"||r=="inCaption"||r=="inColumnGroup"||r=="inTableBody"||r=="inRow"||r=="inCell"?e.setInsertionMode("inSelectInTable"):e.setInsertionMode("inSelect")},t.inBody.startTagMisplaced=function(t,n){e.parseError("unexpected-start-tag-ignored",{name:t})},t.inBody.endTagMisplaced=function(t){e.parseError("unexpected-end-tag",{name:t})},t.inBody.endTagBr=function(t){e.parseError("unexpected-end-tag-treated-as",{originalName:"br",newName:"br element"}),e.reconstructActiveFormattingElements(),e.insertElement(t,[]),e.popElement()},t.inBody.startTagOptionOptgroup=function(t,n){e.currentStackItem().localName=="option"&&e.popElement(),e.reconstructActiveFormattingElements(),e.insertElement(t,n)},t.inBody.startTagOther=function(t,n){e.reconstructActiveFormattingElements(),e.insertElement(t,n)},t.inBody.endTagOther=function(t){var n;for(var r=e.openElements.length-1;r>0;r--){n=e.openElements.item(r);if(n.localName==t){e.generateImpliedEndTags(t),e.currentStackItem().localName!=t&&e.parseError("unexpected-end-tag",{name:t}),e.openElements.remove_openElements_until(function(e){return e===n});break}if(n.isSpecial()){e.parseError("unexpected-end-tag",{name:t});break}}},t.inBody.startTagMath=function(t,n,r){e.reconstructActiveFormattingElements(),n=e.adjustMathMLAttributes(n),n=e.adjustForeignAttributes(n),e.insertForeignElement(t,n,"http://www.w3.org/1998/Math/MathML",r)},t.inBody.startTagSVG=function(t,n,r){e.reconstructActiveFormattingElements(),n=e.adjustSVGAttributes(n),n=e.adjustForeignAttributes(n),e.insertForeignElement(t,n,"http://www.w3.org/2000/svg",r)},t.inBody.endTagP=function(t){e.openElements.inButtonScope("p")?(e.generateImpliedEndTags("p"),e.currentStackItem().localName!="p"&&e.parseError("unexpected-implied-end-tag",{name:"p"}),e.openElements.popUntilPopped(t)):(e.parseError("unexpected-end-tag",{name:"p"}),this.startTagCloseP("p",[]),this.endTagP("p"))},t.inBody.endTagBody=function(t){if(!e.openElements.inScope("body")){e.parseError("unexpected-end-tag",{name:t});return}e.currentStackItem().localName!="body"&&e.parseError("expected-one-end-tag-but-got-another",{expectedName:e.currentStackItem().localName,gotName:t}),e.setInsertionMode("afterBody")},t.inBody.endTagHtml=function(t){if(!e.openElements.inScope("body")){e.parseError("unexpected-end-tag",{name:t});return}e.currentStackItem().localName!="body"&&e.parseError("expected-one-end-tag-but-got-another",{expectedName:e.currentStackItem().localName,gotName:t}),e.setInsertionMode("afterBody"),e.insertionMode.processEndTag(t)},t.inBody.endTagBlock=function(t){e.openElements.inScope(t)?(e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.popUntilPopped(t)):e.parseError("unexpected-end-tag",{name:t})},t.inBody.endTagForm=function(t){var n=e.form;e.form=null,!n||!e.openElements.inScope(t)?e.parseError("unexpected-end-tag",{name:t}):(e.generateImpliedEndTags(),e.currentStackItem()!=n&&e.parseError("end-tag-too-early-ignored",{name:"form"}),e.openElements.remove(n))},t.inBody.endTagListItem=function(t){e.openElements.inListItemScope(t)?(e.generateImpliedEndTags(t),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.popUntilPopped(t)):e.parseError("unexpected-end-tag",{name:t})},t.inBody.endTagHeading=function(t){if(!e.openElements.hasNumberedHeaderElementInScope()){e.parseError("unexpected-end-tag",{name:t});return}e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.remove_openElements_until(function(e){return e.isNumberedHeader()})},t.inBody.endTagFormatting=function(t,n){e.adoptionAgencyEndTag(t)||this.endTagOther(t,n)},t.inCaption=Object.create(t.base),t.inCaption.start_tag_handlers={html:"startTagHtml",caption:"startTagTableElement",col:"startTagTableElement",colgroup:"startTagTableElement",tbody:"startTagTableElement",td:"startTagTableElement",tfoot:"startTagTableElement",thead:"startTagTableElement",tr:"startTagTableElement","-default":"startTagOther"},t.inCaption.end_tag_handlers={caption:"endTagCaption",table:"endTagTable",body:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",tbody:"endTagIgnore",td:"endTagIgnore",tfood:"endTagIgnore",thead:"endTagIgnore",tr:"endTagIgnore","-default":"endTagOther"},t.inCaption.processCharacters=function(e){t.inBody.processCharacters(e)},t.inCaption.startTagTableElement=function(t,n){e.parseError("unexpected-end-tag",{name:t});var r=!e.openElements.inTableScope("caption");e.insertionMode.processEndTag("caption"),r||e.insertionMode.processStartTag(t,n)},t.inCaption.startTagOther=function(e,n,r){t.inBody.processStartTag(e,n,r)},t.inCaption.endTagCaption=function(t){e.openElements.inTableScope("caption")?(e.generateImpliedEndTags(),e.currentStackItem().localName!="caption"&&e.parseError("expected-one-end-tag-but-got-another",{gotName:"caption",expectedName:e.currentStackItem().localName}),e.openElements.popUntilPopped("caption"),e.clearActiveFormattingElements(),e.setInsertionMode("inTable")):(r.ok(e.context),e.parseError("unexpected-end-tag",{name:t}))},t.inCaption.endTagTable=function(t){e.parseError("unexpected-end-table-in-caption");var n=!e.openElements.inTableScope("caption");e.insertionMode.processEndTag("caption"),n||e.insertionMode.processEndTag(t)},t.inCaption.endTagIgnore=function(t){e.parseError("unexpected-end-tag",{name:t})},t.inCaption.endTagOther=function(e){t.inBody.processEndTag(e)},t.inCell=Object.create(t.base),t.inCell.start_tag_handlers={html:"startTagHtml",caption:"startTagTableOther",col:"startTagTableOther",colgroup:"startTagTableOther",tbody:"startTagTableOther",td:"startTagTableOther",tfoot:"startTagTableOther",th:"startTagTableOther",thead:"startTagTableOther",tr:"startTagTableOther","-default":"startTagOther"},t.inCell.end_tag_handlers={td:"endTagTableCell",th:"endTagTableCell",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",table:"endTagImply",tbody:"endTagImply",tfoot:"endTagImply",thead:"endTagImply",tr:"endTagImply","-default":"endTagOther"},t.inCell.processCharacters=function(e){t.inBody.processCharacters(e)},t.inCell.startTagTableOther=function(t,n,r){e.openElements.inTableScope("td")||e.openElements.inTableScope("th")?(this.closeCell(),e.insertionMode.processStartTag(t,n,r)):e.parseError("unexpected-start-tag",{name:t})},t.inCell.startTagOther=function(e,n,r){t.inBody.processStartTag(e,n,r)},t.inCell.endTagTableCell=function(t){e.openElements.inTableScope(t)?(e.generateImpliedEndTags(t),e.currentStackItem().localName!=t.toLowerCase()?(e.parseError("unexpected-cell-end-tag",{name:t}),e.openElements.popUntilPopped(t)):e.popElement(),e.clearActiveFormattingElements(),e.setInsertionMode("inRow")):e.parseError("unexpected-end-tag",{name:t})},t.inCell.endTagIgnore=function(t){e.parseError("unexpected-end-tag",{name:t})},t.inCell.endTagImply=function(t){e.openElements.inTableScope(t)?(this.closeCell(),e.insertionMode.processEndTag(t)):e.parseError("unexpected-end-tag",{name:t})},t.inCell.endTagOther=function(e){t.inBody.processEndTag(e)},t.inCell.closeCell=function(){e.openElements.inTableScope("td")?this.endTagTableCell("td"):e.openElements.inTableScope("th")&&this.endTagTableCell("th")},t.inColumnGroup=Object.create(t.base),t.inColumnGroup.start_tag_handlers={html:"startTagHtml",col:"startTagCol","-default":"startTagOther"},t.inColumnGroup.end_tag_handlers={colgroup:"endTagColgroup",col:"endTagCol","-default":"endTagOther"},t.inColumnGroup.ignoreEndTagColgroup=function(){return e.currentStackItem().localName=="html"},t.inColumnGroup.processCharacters=function(t){var n=t.takeLeadingWhitespace();n&&e.insertText(n);if(!t.length)return;var r=this.ignoreEndTagColgroup();this.endTagColgroup("colgroup"),r||e.insertionMode.processCharacters(t)},t.inColumnGroup.startTagCol=function(t,n){e.insertSelfClosingElement(t,n)},t.inColumnGroup.startTagOther=function(t,n,r){var i=this.ignoreEndTagColgroup();this.endTagColgroup("colgroup"),i||e.insertionMode.processStartTag(t,n,r)},t.inColumnGroup.endTagColgroup=function(t){this.ignoreEndTagColgroup()?(r.ok(e.context),e.parseError("unexpected-end-tag",{name:t})):(e.popElement(),e.setInsertionMode("inTable"))},t.inColumnGroup.endTagCol=function(t){e.parseError("no-end-tag",{name:"col"})},t.inColumnGroup.endTagOther=function(t){var n=this.ignoreEndTagColgroup();this.endTagColgroup("colgroup"),n||e.insertionMode.processEndTag(t)},t.inForeignContent=Object.create(t.base),t.inForeignContent.processStartTag=function(t,n,r){if(["b","big","blockquote","body","br","center","code","dd","div","dl","dt","em","embed","h1","h2","h3","h4","h5","h6","head","hr","i","img","li","listing","menu","meta","nobr","ol","p","pre","ruby","s","small","span","strong","strike","sub","sup","table","tt","u","ul","var"].indexOf(t)!=-1||t=="font"&&n.some(function(e){return["color","face","size"].indexOf(e.nodeName)>=0})){e.parseError("unexpected-html-element-in-foreign-content",{name:t});while(e.currentStackItem().isForeign()&&!e.currentStackItem().isHtmlIntegrationPoint()&&!e.currentStackItem().isMathMLTextIntegrationPoint())e.openElements.pop();e.insertionMode.processStartTag(t,n,r);return}e.currentStackItem().namespaceURI=="http://www.w3.org/1998/Math/MathML"&&(n=e.adjustMathMLAttributes(n)),e.currentStackItem().namespaceURI=="http://www.w3.org/2000/svg"&&(t=e.adjustSVGTagNameCase(t),n=e.adjustSVGAttributes(n)),n=e.adjustForeignAttributes(n),e.insertForeignElement(t,n,e.currentStackItem().namespaceURI,r)},t.inForeignContent.processEndTag=function(t){var n=e.currentStackItem(),r=e.openElements.length-1;n.localName.toLowerCase()!=t&&e.parseError("unexpected-end-tag",{name:t});for(;;){if(r===0)break;if(n.localName.toLowerCase()==t){while(e.openElements.pop()!=n);break}r-=1,n=e.openElements.item(r);if(n.isForeign())continue;e.insertionMode.processEndTag(t);break}},t.inForeignContent.processCharacters=function(t){var n=t.takeRemaining();n=n.replace(/\u0000/g,function(t,n){return e.parseError("invalid-codepoint"),"\ufffd"}),e.framesetOk&&!d(n)&&(e.framesetOk=!1),e.insertText(n)},t.inHeadNoscript=Object.create(t.base),t.inHeadNoscript.start_tag_handlers={html:"startTagHtml",basefont:"startTagBasefontBgsoundLinkMetaNoframesStyle",bgsound:"startTagBasefontBgsoundLinkMetaNoframesStyle",link:"startTagBasefontBgsoundLinkMetaNoframesStyle",meta:"startTagBasefontBgsoundLinkMetaNoframesStyle",noframes:"startTagBasefontBgsoundLinkMetaNoframesStyle",style:"startTagBasefontBgsoundLinkMetaNoframesStyle",head:"startTagHeadNoscript",noscript:"startTagHeadNoscript","-default":"startTagOther"},t.inHeadNoscript.end_tag_handlers={noscript:"endTagNoscript",br:"endTagBr","-default":"endTagOther"},t.inHeadNoscript.processCharacters=function(t){var n=t.takeLeadingWhitespace();n&&e.insertText(n);if(!t.length)return;e.parseError("unexpected-char-in-frameset"),this.anythingElse(),e.insertionMode.processCharacters(t)},t.inHeadNoscript.processComment=function(e){t.inHead.processComment(e)},t.inHeadNoscript.startTagBasefontBgsoundLinkMetaNoframesStyle=function(e,n){t.inHead.processStartTag(e,n)},t.inHeadNoscript.startTagHeadNoscript=function(t,n){e.parseError("unexpected-start-tag-in-frameset",{name:t})},t.inHeadNoscript.startTagOther=function(t,n){e.parseError("unexpected-start-tag-in-frameset",{name:t}),this.anythingElse(),e.insertionMode.processStartTag(t,n)},t.inHeadNoscript.endTagBr=function(t,n){e.parseError("unexpected-end-tag-in-frameset",{name:t}),this.anythingElse(),e.insertionMode.processEndTag(t,n)},t.inHeadNoscript.endTagNoscript=function(t,n){e.popElement(),e.setInsertionMode("inHead")},t.inHeadNoscript.endTagOther=function(t,n){e.parseError("unexpected-end-tag-in-frameset",{name:t})},t.inHeadNoscript.anythingElse=function(){e.popElement(),e.setInsertionMode("inHead")},t.inFrameset=Object.create(t.base),t.inFrameset.start_tag_handlers={html:"startTagHtml",frameset:"startTagFrameset",frame:"startTagFrame",noframes:"startTagNoframes","-default":"startTagOther"},t.inFrameset.end_tag_handlers={frameset:"endTagFrameset",noframes:"endTagNoframes","-default":"endTagOther"},t.inFrameset.processCharacters=function(t){e.parseError("unexpected-char-in-frameset")},t.inFrameset.startTagFrameset=function(t,n){e.insertElement(t,n)},t.inFrameset.startTagFrame=function(t,n){e.insertSelfClosingElement(t,n)},t.inFrameset.startTagNoframes=function(e,n){t.inBody.processStartTag(e,n)},t.inFrameset.startTagOther=function(t,n){e.parseError("unexpected-start-tag-in-frameset",{name:t})},t.inFrameset.endTagFrameset=function(t,n){e.currentStackItem().localName=="html"?e.parseError("unexpected-frameset-in-frameset-innerhtml"):e.popElement(),!e.context&&e.currentStackItem().localName!="frameset"&&e.setInsertionMode("afterFrameset")},t.inFrameset.endTagNoframes=function(e){t.inBody.processEndTag(e)},t.inFrameset.endTagOther=function(t){e.parseError("unexpected-end-tag-in-frameset",{name:t})},t.inTable=Object.create(t.base),t.inTable.start_tag_handlers={html:"startTagHtml",caption:"startTagCaption",colgroup:"startTagColgroup",col:"startTagCol",table:"startTagTable",tbody:"startTagRowGroup",tfoot:"startTagRowGroup",thead:"startTagRowGroup",td:"startTagImplyTbody",th:"startTagImplyTbody",tr:"startTagImplyTbody",style:"startTagStyleScript",script:"startTagStyleScript",input:"startTagInput",form:"startTagForm","-default":"startTagOther"},t.inTable.end_tag_handlers={table:"endTagTable",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",tbody:"endTagIgnore",td:"endTagIgnore",tfoot:"endTagIgnore",th:"endTagIgnore",thead:"endTagIgnore",tr:"endTagIgnore","-default":"endTagOther"},t.inTable.processCharacters=function(n){if(e.currentStackItem().isFosterParenting()){var r=e.insertionModeName;e.setInsertionMode("inTableText"),e.originalInsertionMode=r,e.insertionMode.processCharacters(n)}else e.redirectAttachToFosterParent=!0,t.inBody.processCharacters(n),e.redirectAttachToFosterParent=!1},t.inTable.startTagCaption=function(t,n){e.openElements.popUntilTableScopeMarker(),e.activeFormattingElements.push(l),e.insertElement(t,n),e.setInsertionMode("inCaption")},t.inTable.startTagColgroup=function(t,n){e.openElements.popUntilTableScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inColumnGroup")},t.inTable.startTagCol=function(t,n){this.startTagColgroup("colgroup",[]),e.insertionMode.processStartTag(t,n)},t.inTable.startTagRowGroup=function(t,n){e.openElements.popUntilTableScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inTableBody")},t.inTable.startTagImplyTbody=function(t,n){this.startTagRowGroup("tbody",[]),e.insertionMode.processStartTag(t,n)},t.inTable.startTagTable=function(t,n){e.parseError("unexpected-start-tag-implies-end-tag",{startName:"table",endName:"table"}),e.insertionMode.processEndTag("table"),e.context||e.insertionMode.processStartTag(t,n)},t.inTable.startTagStyleScript=function(e,n){t.inHead.processStartTag(e,n)},t.inTable.startTagInput=function(t,n){for(var r in n)if(n[r].nodeName.toLowerCase()=="type"){if(n[r].nodeValue.toLowerCase()=="hidden"){e.parseError("unexpected-hidden-input-in-table"),e.insertElement(t,n),e.openElements.pop();return}break}this.startTagOther(t,n)},t.inTable.startTagForm=function(t,n){e.parseError("unexpected-form-in-table"),e.form||(e.insertElement(t,n),e.form=e.currentStackItem(),e.openElements.pop())},t.inTable.startTagOther=function(n,r,i){e.parseError("unexpected-start-tag-implies-table-voodoo",{name:n}),e.redirectAttachToFosterParent=!0,t.inBody.processStartTag(n,r,i),e.redirectAttachToFosterParent=!1},t.inTable.endTagTable=function(t){e.openElements.inTableScope(t)?(e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early-named",{gotName:"table",expectedName:e.currentStackItem().localName}),e.openElements.popUntilPopped("table"),e.resetInsertionMode()):(r.ok(e.context),e.parseError("unexpected-end-tag",{name:t}))},t.inTable.endTagIgnore=function(t){e.parseError("unexpected-end-tag",{name:t})},t.inTable.endTagOther=function(n){e.parseError("unexpected-end-tag-implies-table-voodoo",{name:n}),e.redirectAttachToFosterParent=!0,t.inBody.processEndTag(n),e.redirectAttachToFosterParent=!1},t.inTableText=Object.create(t.base),t.inTableText.flushCharacters=function(){var t=e.pendingTableCharacters.join("");p(t)?e.insertText(t):(e.redirectAttachToFosterParent=!0,e.reconstructActiveFormattingElements(),e.insertText(t),e.framesetOk=!1,e.redirectAttachToFosterParent=!1),e.pendingTableCharacters=[]},t.inTableText.processComment=function(t){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processComment(t)},t.inTableText.processEOF=function(t){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processEOF()},t.inTableText.processCharacters=function(t){var n=t.takeRemaining();n=n.replace(/\u0000/g,function(t,n){return e.parseError("invalid-codepoint"),""});if(!n)return;e.pendingTableCharacters.push(n)},t.inTableText.processStartTag=function(t,n,r){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processStartTag(t,n,r)},t.inTableText.processEndTag=function(t,n){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processEndTag(t,n)},t.inTableBody=Object.create(t.base),t.inTableBody.start_tag_handlers={html:"startTagHtml",tr:"startTagTr",td:"startTagTableCell",th:"startTagTableCell",caption:"startTagTableOther",col:"startTagTableOther",colgroup:"startTagTableOther",tbody:"startTagTableOther",tfoot:"startTagTableOther",thead:"startTagTableOther","-default":"startTagOther"},t.inTableBody.end_tag_handlers={table:"endTagTable",tbody:"endTagTableRowGroup",tfoot:"endTagTableRowGroup",thead:"endTagTableRowGroup",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",td:"endTagIgnore",th:"endTagIgnore",tr:"endTagIgnore","-default":"endTagOther"},t.inTableBody.processCharacters=function(e){t.inTable.processCharacters(e)},t.inTableBody.startTagTr=function(t,n){e.openElements.popUntilTableBodyScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inRow")},t.inTableBody.startTagTableCell=function(t,n){e.parseError("unexpected-cell-in-table-body",{name:t}),this.startTagTr("tr",[]),e.insertionMode.processStartTag(t,n)},t.inTableBody.startTagTableOther=function(t,n){e.openElements.inTableScope("tbody")||e.openElements.inTableScope("thead")||e.openElements.inTableScope("tfoot")?(e.openElements.popUntilTableBodyScopeMarker(),this.endTagTableRowGroup(e.currentStackItem().localName),e.insertionMode.processStartTag(t,n)):e.parseError("unexpected-start-tag",{name:t})},t.inTableBody.startTagOther=function(e,n){t.inTable.processStartTag(e,n)},t.inTableBody.endTagTableRowGroup=function(t){e.openElements.inTableScope(t)?(e.openElements.popUntilTableBodyScopeMarker(),e.popElement(),e.setInsertionMode("inTable")):e.parseError("unexpected-end-tag-in-table-body",{name:t})},t.inTableBody.endTagTable=function(t){e.openElements.inTableScope("tbody")||e.openElements.inTableScope("thead")||e.openElements.inTableScope("tfoot")?(e.openElements.popUntilTableBodyScopeMarker(),this.endTagTableRowGroup(e.currentStackItem().localName),e.insertionMode.processEndTag(t)):e.parseError("unexpected-end-tag",{name:t})},t.inTableBody.endTagIgnore=function(t){e.parseError("unexpected-end-tag-in-table-body",{name:t})},t.inTableBody.endTagOther=function(e){t.inTable.processEndTag(e)},t.inSelect=Object.create(t.base),t.inSelect.start_tag_handlers={html:"startTagHtml",option:"startTagOption",optgroup:"startTagOptgroup",select:"startTagSelect",input:"startTagInput",keygen:"startTagInput",textarea:"startTagInput",script:"startTagScript","-default":"startTagOther"},t.inSelect.end_tag_handlers={option:"endTagOption",optgroup:"endTagOptgroup",select:"endTagSelect",caption:"endTagTableElements",table:"endTagTableElements",tbody:"endTagTableElements",tfoot:"endTagTableElements",thead:"endTagTableElements",tr:"endTagTableElements",td:"endTagTableElements",th:"endTagTableElements","-default":"endTagOther"},t.inSelect.processCharacters=function(t){var n=t.takeRemaining();n=n.replace(/\u0000/g,function(t,n){return e.parseError("invalid-codepoint"),""});if(!n)return;e.insertText(n)},t.inSelect.startTagOption=function(t,n){e.currentStackItem().localName=="option"&&e.popElement(),e.insertElement(t,n)},t.inSelect.startTagOptgroup=function(t,n){e.currentStackItem().localName=="option"&&e.popElement(),e.currentStackItem().localName=="optgroup"&&e.popElement(),e.insertElement(t,n)},t.inSelect.endTagOption=function(t){if(e.currentStackItem().localName!=="option"){e.parseError("unexpected-end-tag-in-select",{name:t});return}e.popElement()},t.inSelect.endTagOptgroup=function(t){e.currentStackItem().localName=="option"&&e.openElements.item(e.openElements.length-2).localName=="optgroup"&&e.popElement(),e.currentStackItem().localName=="optgroup"?e.popElement():e.parseError("unexpected-end-tag-in-select",{name:"optgroup"})},t.inSelect.startTagSelect=function(t){e.parseError("unexpected-select-in-select"),this.endTagSelect("select")},t.inSelect.endTagSelect=function(t){e.openElements.inTableScope("select")?(e.openElements.popUntilPopped("select"),e.resetInsertionMode()):e.parseError("unexpected-end-tag",{name:t})},t.inSelect.startTagInput=function(t,n){e.parseError("unexpected-input-in-select"),e.openElements.inSelectScope("select")&&(this.endTagSelect("select"),e.insertionMode.processStartTag(t,n))},t.inSelect.startTagScript=function(e,n){t.inHead.processStartTag(e,n)},t.inSelect.endTagTableElements=function(t){e.parseError("unexpected-end-tag-in-select",{name:t}),e.openElements.inTableScope(t)&&(this.endTagSelect("select"),e.insertionMode.processEndTag(t))},t.inSelect.startTagOther=function(t,n){e.parseError("unexpected-start-tag-in-select",{name:t})},t.inSelect.endTagOther=function(t){e.parseError("unexpected-end-tag-in-select",{name:t})},t.inSelectInTable=Object.create(t.base),t.inSelectInTable.start_tag_handlers={caption:"startTagTable",table:"startTagTable",tbody:"startTagTable",tfoot:"startTagTable",thead:"startTagTable",tr:"startTagTable",td:"startTagTable",th:"startTagTable","-default":"startTagOther"},t.inSelectInTable.end_tag_handlers={caption:"endTagTable",table:"endTagTable",tbody:"endTagTable",tfoot:"endTagTable",thead:"endTagTable",tr:"endTagTable",td:"endTagTable",th:"endTagTable","-default":"endTagOther"},t.inSelectInTable.processCharacters=function(e){t.inSelect.processCharacters(e)},t.inSelectInTable.startTagTable=function(t,n){e.parseError("unexpected-table-element-start-tag-in-select-in-table",{name:t}),this.endTagOther("select"),e.insertionMode.processStartTag(t,n)},t.inSelectInTable.startTagOther=function(e,n,r){t.inSelect.processStartTag(e,n,r)},t.inSelectInTable.endTagTable=function(t){e.parseError("unexpected-table-element-end-tag-in-select-in-table",{name:t}),e.openElements.inTableScope(t)&&(this.endTagOther("select"),e.insertionMode.processEndTag(t))},t.inSelectInTable.endTagOther=function(e){t.inSelect.processEndTag(e)},t.inRow=Object.create(t.base),t.inRow.start_tag_handlers={html:"startTagHtml",td:"startTagTableCell",th:"startTagTableCell",caption:"startTagTableOther",col:"startTagTableOther",colgroup:"startTagTableOther",tbody:"startTagTableOther",tfoot:"startTagTableOther",thead:"startTagTableOther",tr:"startTagTableOther","-default":"startTagOther"},t.inRow.end_tag_handlers={tr:"endTagTr",table:"endTagTable",tbody:"endTagTableRowGroup",tfoot:"endTagTableRowGroup",thead:"endTagTableRowGroup",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",td:"endTagIgnore",th:"endTagIgnore","-default":"endTagOther"},t.inRow.processCharacters=function(e){t.inTable.processCharacters(e)},t.inRow.startTagTableCell=function(t,n){e.openElements.popUntilTableRowScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inCell"),e.activeFormattingElements.push(l)},t.inRow.startTagTableOther=function(t,n){var r=this.ignoreEndTagTr();this.endTagTr("tr"),r||e.insertionMode.processStartTag(t,n)},t.inRow.startTagOther=function(e,n,r){t.inTable.processStartTag(e,n,r)},t.inRow.endTagTr=function(t){this.ignoreEndTagTr()?(r.ok(e.context),e.parseError("unexpected-end-tag",{name:t})):(e.openElements.popUntilTableRowScopeMarker(),e.popElement(),e.setInsertionMode("inTableBody"))},t.inRow.endTagTable=function(t){var n=this.ignoreEndTagTr();this.endTagTr("tr"),n||e.insertionMode.processEndTag(t)},t.inRow.endTagTableRowGroup=function(t){e.openElements.inTableScope(t)?(this.endTagTr("tr"),e.insertionMode.processEndTag(t)):e.parseError("unexpected-end-tag",{name:t})},t.inRow.endTagIgnore=function(t){e.parseError("unexpected-end-tag-in-table-row",{name:t})},t.inRow.endTagOther=function(e){t.inTable.processEndTag(e)},t.inRow.ignoreEndTagTr=function(){return!e.openElements.inTableScope("tr")},t.afterAfterFrameset=Object.create(t.base),t.afterAfterFrameset.start_tag_handlers={html:"startTagHtml",noframes:"startTagNoFrames","-default":"startTagOther"},t.afterAfterFrameset.processEOF=function(){},t.afterAfterFrameset.processComment=function(t){e.insertComment(t,e.document)},t.afterAfterFrameset.processCharacters=function(t){var n=t.takeRemaining(),r="";for(var i=0;i<n.length;i++){var s=n[i];c(s)&&(r+=s)}r&&(e.reconstructActiveFormattingElements(),e.insertText(r)),r.length<n.length&&e.parseError("expected-eof-but-got-char")},t.afterAfterFrameset.startTagNoFrames=function(e,n){t.inHead.processStartTag(e,n)},t.afterAfterFrameset.startTagOther=function(t,n,r){e.parseError("expected-eof-but-got-start-tag",{name:t})},t.afterAfterFrameset.processEndTag=function(t,n){e.parseError("expected-eof-but-got-end-tag",{name:t})},t.text=Object.create(t.base),t.text.start_tag_handlers={"-default":"startTagOther"},t.text.end_tag_handlers={script:"endTagScript","-default":"endTagOther"},t.text.processCharacters=function(t){e.shouldSkipLeadingNewline&&(e.shouldSkipLeadingNewline=!1,t.skipAtMostOneLeadingNewline());var n=t.takeRemaining();if(!n)return;e.insertText(n)},t.text.processEOF=function(){e.parseError("expected-named-closing-tag-but-got-eof",{name:e.currentStackItem().localName}),e.openElements.pop(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processEOF()},t.text.startTagOther=function(e){throw"Tried to process start tag "+e+" in RCDATA/RAWTEXT mode"},t.text.endTagScript=function(t){var n=e.openElements.pop();r.ok(n.localName=="script"),e.setInsertionMode(e.originalInsertionMode)},t.text.endTagOther=function(t){e.openElements.pop(),e.setInsertionMode(e.originalInsertionMode)}}function y(e,t){return e.replace(new RegExp("{[0-9a-z-]+}","gi"),function(e){return t[e.slice(1,-1)]||e})}var r=e("assert"),i=e("./messages.json"),s=e("./constants"),o=e("events").EventEmitter,u=e("./Tokenizer").Tokenizer,a=e("./ElementStack").ElementStack,f=e("./StackItem").StackItem,l={};m.prototype.skipAtMostOneLeadingNewline=function(){this.characters[this.current]==="\n"&&this.current++},m.prototype.skipLeadingWhitespace=function(){while(c(this.characters[this.current]))if(++this.current==this.end)return},m.prototype.skipLeadingNonWhitespace=function(){while(!c(this.characters[this.current]))if(++this.current==this.end)return},m.prototype.takeRemaining=function(){return this.characters.substring(this.current)},m.prototype.takeLeadingWhitespace=function(){var e=this.current;return this.skipLeadingWhitespace(),e===this.current?"":this.characters.substring(e,this.current-e)},Object.defineProperty(m.prototype,"length",{get:function(){return this.end-this.current}}),g.prototype.setInsertionMode=function(e){this.insertionMode=this.insertionModes[e],this.insertionModeName=e},g.prototype.adoptionAgencyEndTag=function(e){function i(e){return e===r}var t=8,n=3,r,s=0;while(s++<t){r=this.elementInActiveFormattingElements(e);if(!r||this.openElements.contains(r)&&!this.openElements.inScope(r.localName))return this.parseError("adoption-agency-1.1",{name:e}),!1;if(!this.openElements.contains(r))return this.parseError("adoption-agency-1.2",{name:e}),this.removeElementFromActiveFormattingElements(r),!0;this.openElements.inScope(r.localName)||this.parseError("adoption-agency-4.4",{name:e}),r!=this.currentStackItem()&&this.parseError("adoption-agency-1.3",{name:e});var o=this.openElements.furthestBlockForFormattingElement(r.node);if(!o)return this.openElements.remove_openElements_until(i),this.removeElementFromActiveFormattingElements(r),!0;var u=this.openElements.elements.indexOf(r),a=this.openElements.item(u-1),l=this.activeFormattingElements.indexOf(r),c=o,h=o,p=this.openElements.elements.indexOf(c),d=0;while(d++<n){p-=1,c=this.openElements.item(p);if(this.activeFormattingElements.indexOf(c)<0){this.openElements.elements.splice(p,1);continue}if(c==r)break;h==o&&(l=this.activeFormattingElements.indexOf(c)+1);var v=this.createElement(c.namespaceURI,c.localName,c.attributes),m=new f(c.namespaceURI,c.localName,c.attributes,v);this.activeFormattingElements[this.activeFormattingElements.indexOf(c)]=m,this.openElements.elements[this.openElements.elements.indexOf(c)]=m,c=m,this.detachFromParent(h.node),this.attachNode(h.node,c.node),h=c}this.detachFromParent(h.node),a.isFosterParenting()?this.insertIntoFosterParent(h.node):this.attachNode(h.node,a.node);var v=this.createElement("http://www.w3.org/1999/xhtml",r.localName,r.attributes),g=new f(r.namespaceURI,r.localName,r.attributes,v);this.reparentChildren(o.node,v),this.attachNode(v,o.node),this.removeElementFromActiveFormattingElements(r),this.activeFormattingElements.splice(Math.min(l,this.activeFormattingElements.length),0,g),this.openElements.remove(r),this.openElements.elements.splice(this.openElements.elements.indexOf(o)+1,0,g)}return!0},g.prototype.start=function(){throw"Not mplemented"},g.prototype.startTokenization=function(e){this.tokenizer=e,this.compatMode="no quirks",this.originalInsertionMode="initial",this.framesetOk=!0,this.openElements=new a,this.activeFormattingElements=[],this.start();if(this.context){switch(this.context){case"title":case"textarea":this.tokenizer.setState(u.RCDATA);break;case"style":case"xmp":case"iframe":case"noembed":case"noframes":this.tokenizer.setState(u.RAWTEXT);break;case"script":this.tokenizer.setState(u.SCRIPT_DATA);break;case"noscript":this.scriptingEnabled&&this.tokenizer.setState(u.RAWTEXT);break;case"plaintext":this.tokenizer.setState(u.PLAINTEXT)}this.insertHtmlElement(),this.resetInsertionMode()}else this.setInsertionMode("initial")},g.prototype.processToken=function(e){this.selfClosingFlagAcknowledged=!1;var t=this.openElements.top||null,n;!t||!t.isForeign()||t.isMathMLTextIntegrationPoint()&&(e.type=="StartTag"&&!(e.name in{mglyph:0,malignmark:0})||e.type==="Characters")||t.namespaceURI=="http://www.w3.org/1998/Math/MathML"&&t.localName=="annotation-xml"&&e.type=="StartTag"&&e.name=="svg"||t.isHtmlIntegrationPoint()&&e.type in{StartTag:0,Characters:0}||e.type=="EOF"?n=this.insertionMode:n=this.insertionModes.inForeignContent;switch(e.type){case"Characters":var r=new m(e.data);n.processCharacters(r);break;case"Comment":n.processComment(e.data);break;case"StartTag":n.processStartTag(e.name,e.data,e.selfClosing);break;case"EndTag":n.processEndTag(e.name);break;case"Doctype":n.processDoctype(e.name,e.publicId,e.systemId,e.forceQuirks);break;case"EOF":n.processEOF()}},g.prototype.isCdataSectionAllowed=function(){return this.openElements.length>0&&this.currentStackItem().isForeign()},g.prototype.isSelfClosingFlagAcknowledged=function(){return this.selfClosingFlagAcknowledged},g.prototype.createElement=function(e,t,n){throw new Error("Not implemented")},g.prototype.attachNode=function(e,t){throw new Error("Not implemented")},g.prototype.attachNodeToFosterParent=function(e,t,n){throw new Error("Not implemented")},g.prototype.detachFromParent=function(e){throw new Error("Not implemented")},g.prototype.addAttributesToElement=function(e,t){throw new Error("Not implemented")},g.prototype.insertHtmlElement=function(e){var t=this.createElement("http://www.w3.org/1999/xhtml","html",e);return this.attachNode(t,this.document),this.openElements.pushHtmlElement(new f("http://www.w3.org/1999/xhtml","html",e,t)),t},g.prototype.insertHeadElement=function(e){var t=this.createElement("http://www.w3.org/1999/xhtml","head",e);return this.head=new f("http://www.w3.org/1999/xhtml","head",e,t),this.attachNode(t,this.openElements.top.node),this.openElements.pushHeadElement(this.head),t},g.prototype.insertBodyElement=function(e){var t=this.createElement("http://www.w3.org/1999/xhtml","body",e);return this.attachNode(t,this.openElements.top.node),this.openElements.pushBodyElement(new f("http://www.w3.org/1999/xhtml","body",e,t)),t},g.prototype.insertIntoFosterParent=function(e){var t=this.openElements.findIndex("table"),n=this.openElements.item(t).node;if(t===0)return this.attachNode(e,n);this.attachNodeToFosterParent(e,n,this.openElements.item(t-1).node)},g.prototype.insertElement=function(e,t,n,r){n||(n="http://www.w3.org/1999/xhtml");var i=this.createElement(n,e,t);this.shouldFosterParent()?this.insertIntoFosterParent(i):this.attachNode(i,this.openElements.top.node),r||this.openElements.push(new f(n,e,t,i))},g.prototype.insertFormattingElement=function(e,t){this.insertElement(e,t,"http://www.w3.org/1999/xhtml"),this.appendElementToActiveFormattingElements(this.currentStackItem())},g.prototype.insertSelfClosingElement=function(e,t){this.selfClosingFlagAcknowledged=!0,this.insertElement(e,t,"http://www.w3.org/1999/xhtml",!0)},g.prototype.insertForeignElement=function(e,t,n,r){r&&(this.selfClosingFlagAcknowledged=!0),this.insertElement(e,t,n,r)},g.prototype.insertComment=function(e,t){throw new Error("Not implemented")},g.prototype.insertDoctype=function(e,t,n){throw new Error("Not implemented")},g.prototype.insertText=function(e){throw new Error("Not implemented")},g.prototype.currentStackItem=function(){return this.openElements.top},g.prototype.popElement=function(){return this.openElements.pop()},g.prototype.shouldFosterParent=function(){return this.redirectAttachToFosterParent&&this.currentStackItem().isFosterParenting()},g.prototype.generateImpliedEndTags=function(e){var t=this.openElements.top.localName;["dd","dt","li","option","optgroup","p","rp","rt"].indexOf(t)!=-1&&t!=e&&(this.popElement(),this.generateImpliedEndTags(e))},g.prototype.reconstructActiveFormattingElements=function(){if(this.activeFormattingElements.length===0)return;var e=this.activeFormattingElements.length-1,t=this.activeFormattingElements[e];if(t==l||this.openElements.contains(t))return;while(t!=l&&!this.openElements.contains(t)){e-=1,t=this.activeFormattingElements[e];if(!t)break}for(;;){e+=1,t=this.activeFormattingElements[e],this.insertElement(t.localName,t.attributes);var n=this.currentStackItem();this.activeFormattingElements[e]=n;if(n==this.activeFormattingElements[this.activeFormattingElements.length-1])break}},g.prototype.ensureNoahsArkCondition=function(e){var t=3;if(this.activeFormattingElements.length<t)return;var n=[],r=e.attributes.length;for(var i=this.activeFormattingElements.length-1;i>=0;i--){var s=this.activeFormattingElements[i];if(s===l)break;if(e.localName!==s.localName||e.namespaceURI!==s.namespaceURI)continue;if(s.attributes.length!=r)continue;n.push(s)}if(n.length<t)return;var o=[],u=e.attributes;for(var i=0;i<u.length;i++){var a=u[i];for(var f=0;f<n.length;f++){var s=n[f],c=v(s,a.nodeName);c&&c.nodeValue===a.nodeValue&&o.push(s)}if(o.length<t)return;n=o,o=[]}for(var i=t-1;i<n.length;i++)this.removeElementFromActiveFormattingElements(n[i])},g.prototype.appendElementToActiveFormattingElements=function(e){this.ensureNoahsArkCondition(e),this.activeFormattingElements.push(e)},g.prototype.removeElementFromActiveFormattingElements=function(e){var t=this.activeFormattingElements.indexOf(e);t>=0&&this.activeFormattingElements.splice(t,1)},g.prototype.elementInActiveFormattingElements=function(e){var t=this.activeFormattingElements;for(var n=t.length-1;n>=0;n--){if(t[n]==l)break;if(t[n].localName==e)return t[n]}return!1},g.prototype.clearActiveFormattingElements=function(){while(this.activeFormattingElements.length!==0&&this.activeFormattingElements.pop()!=l);},g.prototype.reparentChildren=function(e,t){throw new Error("Not implemented")},g.prototype.setFragmentContext=function(e){this.context=e},g.prototype.parseError=function(e,t){if(!this.errorHandler)return;var n=y(i[e],t);this.errorHandler.error(n,this.tokenizer._inputStream.location(),e)},g.prototype.resetInsertionMode=function(){var e=!1,t=null;for(var n=this.openElements.length-1;n>=0;n--){t=this.openElements.item(n),n===0&&(r.ok(this.context),e=!0,t=new f("http://www.w3.org/1999/xhtml",this.context,[],null));if(t.namespaceURI==="http://www.w3.org/1999/xhtml"){if(t.localName==="select")return this.setInsertionMode("inSelect");if(t.localName==="td"||t.localName==="th")return this.setInsertionMode("inCell");if(t.localName==="tr")return this.setInsertionMode("inRow");if(t.localName==="tbody"||t.localName==="thead"||t.localName==="tfoot")return this.setInsertionMode("inTableBody");if(t.localName==="caption")return this.setInsertionMode("inCaption");if(t.localName==="colgroup")return this.setInsertionMode("inColumnGroup");if(t.localName==="table")return this.setInsertionMode("inTable");if(t.localName==="head"&&!e)return this.setInsertionMode("inHead");if(t.localName==="body")return this.setInsertionMode("inBody");if(t.localName==="frameset")return this.setInsertionMode("inFrameset");if(t.localName==="html")return this.openElements.headElement?this.setInsertionMode("afterHead"):this.setInsertionMode("beforeHead")}if(e)return this.setInsertionMode("inBody")}},g.prototype.processGenericRCDATAStartTag=function(e,t){this.insertElement(e,t),this.tokenizer.setState(u.RCDATA),this.originalInsertionMode=this.insertionModeName,this.setInsertionMode("text")},g.prototype.processGenericRawTextStartTag=function(e,t){this.insertElement(e,t),this.tokenizer.setState(u.RAWTEXT),this.originalInsertionMode=this.insertionModeName,this.setInsertionMode("text")},g.prototype.adjustMathMLAttributes=function(e){return e.forEach(function(e){e.namespaceURI="http://www.w3.org/1998/Math/MathML",s.MATHMLAttributeMap[e.nodeName]&&(e.nodeName=s.MATHMLAttributeMap[e.nodeName])}),e},g.prototype.adjustSVGTagNameCase=function(e){return s.SVGTagMap[e]||e},g.prototype.adjustSVGAttributes=function(e){return e.forEach(function(e){e.namespaceURI="http://www.w3.org/2000/svg",s.SVGAttributeMap[e.nodeName]&&(e.nodeName=s.SVGAttributeMap[e.nodeName])}),e},g.prototype.adjustForeignAttributes=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.ForeignAttributeMap[n.nodeName];r&&(n.nodeName=r.localName,n.prefix=r.prefix,n.namespaceURI=r.namespaceURI)}return e},n.TreeBuilder=g},{"./ElementStack":1,"./StackItem":4,"./Tokenizer":5,"./constants":7,"./messages.json":8,assert:13,events:16}],7:[function(e,t,n){n.SVGTagMap={altglyph:"altGlyph",altglyphdef:"altGlyphDef",altglyphitem:"altGlyphItem",animatecolor:"animateColor",animatemotion:"animateMotion",animatetransform:"animateTransform",clippath:"clipPath",feblend:"feBlend",fecolormatrix:"feColorMatrix",fecomponenttransfer:"feComponentTransfer",fecomposite:"feComposite",feconvolvematrix:"feConvolveMatrix",fediffuselighting:"feDiffuseLighting",fedisplacementmap:"feDisplacementMap",fedistantlight:"feDistantLight",feflood:"feFlood",fefunca:"feFuncA",fefuncb:"feFuncB",fefuncg:"feFuncG",fefuncr:"feFuncR",fegaussianblur:"feGaussianBlur",feimage:"feImage",femerge:"feMerge",femergenode:"feMergeNode",femorphology:"feMorphology",feoffset:"feOffset",fepointlight:"fePointLight",fespecularlighting:"feSpecularLighting",fespotlight:"feSpotLight",fetile:"feTile",feturbulence:"feTurbulence",foreignobject:"foreignObject",glyphref:"glyphRef",lineargradient:"linearGradient",radialgradient:"radialGradient",textpath:"textPath"},n.MATHMLAttributeMap={definitionurl:"definitionURL"},n.SVGAttributeMap={attributename:"attributeName",attributetype:"attributeType",basefrequency:"baseFrequency",baseprofile:"baseProfile",calcmode:"calcMode",clippathunits:"clipPathUnits",contentscripttype:"contentScriptType",contentstyletype:"contentStyleType",diffuseconstant:"diffuseConstant",edgemode:"edgeMode",externalresourcesrequired:"externalResourcesRequired",filterres:"filterRes",filterunits:"filterUnits",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",limitingconeangle:"limitingConeAngle",markerheight:"markerHeight",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textlength:"textLength",viewbox:"viewBox",viewtarget:"viewTarget",xchannelselector:"xChannelSelector",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan"},n.ForeignAttributeMap={"xlink:actuate":{prefix:"xlink",localName:"actuate",namespaceURI:"http://www.w3.org/1999/xlink"},"xlink:arcrole":{prefix:"xlink",localName:"arcrole",namespaceURI:"http://www.w3.org/1999/xlink"},"xlink:href":{prefix:"xlink",localName:"href",namespaceURI:"http://www.w3.org/1999/xlink"},"xlink:role":{prefix:"xlink",localName:"role",namespaceURI:"http://www.w3.org/1999/xlink"},"xlink:show":{prefix:"xlink",localName:"show",namespaceURI:"http://www.w3.org/1999/xlink"},"xlink:title":{prefix:"xlink",localName:"title",namespaceURI:"http://www.w3.org/1999/xlink"},"xlink:type":{prefix:"xlink",localName:"title",namespaceURI:"http://www.w3.org/1999/xlink"},"xml:base":{prefix:"xml",localName:"base",namespaceURI:"http://www.w3.org/XML/1998/namespace"},"xml:lang":{prefix:"xml",localName:"lang",namespaceURI:"http://www.w3.org/XML/1998/namespace"},"xml:space":{prefix:"xml",localName:"space",namespaceURI:"http://www.w3.org/XML/1998/namespace"},xmlns:{prefix:null,localName:"xmlns",namespaceURI:"http://www.w3.org/2000/xmlns/"},"xmlns:xlink":{prefix:"xmlns",localName:"xlink",namespaceURI:"http://www.w3.org/2000/xmlns/"}}},{}],8:[function(e,t,n){t.exports={"null-character":"Null character in input stream, replaced with U+FFFD.","invalid-codepoint":"Invalid codepoint in stream","incorrectly-placed-solidus":"Solidus (/) incorrectly placed in tag.","incorrect-cr-newline-entity":"Incorrect CR newline entity, replaced with LF.","illegal-windows-1252-entity":"Entity used with illegal number (windows-1252 reference).","cant-convert-numeric-entity":"Numeric entity couldn't be converted to character (codepoint U+{charAsInt}).","invalid-numeric-entity-replaced":"Numeric entity represents an illegal codepoint. Expanded to the C1 controls range.","numeric-entity-without-semicolon":"Numeric entity didn't end with ';'.","expected-numeric-entity-but-got-eof":"Numeric entity expected. Got end of file instead.","expected-numeric-entity":"Numeric entity expected but none found.","named-entity-without-semicolon":"Named entity didn't end with ';'.","expected-named-entity":"Named entity expected. Got none.","attributes-in-end-tag":"End tag contains unexpected attributes.","self-closing-flag-on-end-tag":"End tag contains unexpected self-closing flag.","bare-less-than-sign-at-eof":"End of file after <.","expected-tag-name-but-got-right-bracket":"Expected tag name. Got '>' instead.","expected-tag-name-but-got-question-mark":"Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)","expected-tag-name":"Expected tag name. Got something else instead.","expected-closing-tag-but-got-right-bracket":"Expected closing tag. Got '>' instead. Ignoring '</>'.","expected-closing-tag-but-got-eof":"Expected closing tag. Unexpected end of file.","expected-closing-tag-but-got-char":"Expected closing tag. Unexpected character '{data}' found.","eof-in-tag-name":"Unexpected end of file in the tag name.","expected-attribute-name-but-got-eof":"Unexpected end of file. Expected attribute name instead.","eof-in-attribute-name":"Unexpected end of file in attribute name.","invalid-character-in-attribute-name":"Invalid character in attribute name.","duplicate-attribute":"Dropped duplicate attribute '{name}' on tag.","expected-end-of-tag-but-got-eof":"Unexpected end of file. Expected = or end of tag.","expected-attribute-value-but-got-eof":"Unexpected end of file. Expected attribute value.","expected-attribute-value-but-got-right-bracket":"Expected attribute value. Got '>' instead.","unexpected-character-in-unquoted-attribute-value":"Unexpected character in unquoted attribute","invalid-character-after-attribute-name":"Unexpected character after attribute name.","unexpected-character-after-attribute-value":"Unexpected character after attribute value.","eof-in-attribute-value-double-quote":'Unexpected end of file in attribute value (").',"eof-in-attribute-value-single-quote":"Unexpected end of file in attribute value (').","eof-in-attribute-value-no-quotes":"Unexpected end of file in attribute value.","eof-after-attribute-value":"Unexpected end of file after attribute value.","unexpected-eof-after-solidus-in-tag":"Unexpected end of file in tag. Expected >.","unexpected-character-after-solidus-in-tag":"Unexpected character after / in tag. Expected >.","expected-dashes-or-doctype":"Expected '--' or 'DOCTYPE'. Not found.","unexpected-bang-after-double-dash-in-comment":"Unexpected ! after -- in comment.","incorrect-comment":"Incorrect comment.","eof-in-comment":"Unexpected end of file in comment.","eof-in-comment-end-dash":"Unexpected end of file in comment (-).","unexpected-dash-after-double-dash-in-comment":"Unexpected '-' after '--' found in comment.","eof-in-comment-double-dash":"Unexpected end of file in comment (--).","eof-in-comment-end-bang-state":"Unexpected end of file in comment.","unexpected-char-in-comment":"Unexpected character in comment found.","need-space-after-doctype":"No space after literal string 'DOCTYPE'.","expected-doctype-name-but-got-right-bracket":"Unexpected > character. Expected DOCTYPE name.","expected-doctype-name-but-got-eof":"Unexpected end of file. Expected DOCTYPE name.","eof-in-doctype-name":"Unexpected end of file in DOCTYPE name.","eof-in-doctype":"Unexpected end of file in DOCTYPE.","expected-space-or-right-bracket-in-doctype":"Expected space or '>'. Got '{data}'.","unexpected-end-of-doctype":"Unexpected end of DOCTYPE.","unexpected-char-in-doctype":"Unexpected character in DOCTYPE.","eof-in-bogus-doctype":"Unexpected end of file in bogus doctype.","eof-in-innerhtml":"Unexpected EOF in inner html mode.","unexpected-doctype":"Unexpected DOCTYPE. Ignored.","non-html-root":"html needs to be the first start tag.","expected-doctype-but-got-eof":"Unexpected End of file. Expected DOCTYPE.","unknown-doctype":"Erroneous DOCTYPE. Expected <!DOCTYPE html>.","quirky-doctype":"Quirky doctype. Expected <!DOCTYPE html>.","almost-standards-doctype":"Almost standards mode doctype. Expected <!DOCTYPE html>.","obsolete-doctype":"Obsolete doctype. Expected <!DOCTYPE html>.","expected-doctype-but-got-chars":"Non-space characters found without seeing a doctype first. Expected e.g. <!DOCTYPE html>.","expected-doctype-but-got-start-tag":"Start tag seen without seeing a doctype first. Expected e.g. <!DOCTYPE html>.","expected-doctype-but-got-end-tag":"End tag seen without seeing a doctype first. Expected e.g. <!DOCTYPE html>.","end-tag-after-implied-root":"Unexpected end tag ({name}) after the (implied) root element.","expected-named-closing-tag-but-got-eof":"Unexpected end of file. Expected end tag ({name}).","two-heads-are-not-better-than-one":"Unexpected start tag head in existing head. Ignored.","unexpected-end-tag":"Unexpected end tag ({name}). Ignored.","unexpected-implied-end-tag":"End tag {name} implied, but there were open elements.","unexpected-start-tag-out-of-my-head":"Unexpected start tag ({name}) that can be in head. Moved.","unexpected-start-tag":"Unexpected start tag ({name}).","missing-end-tag":"Missing end tag ({name}).","missing-end-tags":"Missing end tags ({name}).","unexpected-start-tag-implies-end-tag":"Unexpected start tag ({startName}) implies end tag ({endName}).","unexpected-start-tag-treated-as":"Unexpected start tag ({originalName}). Treated as {newName}.","deprecated-tag":"Unexpected start tag {name}. Don't use it!","unexpected-start-tag-ignored":"Unexpected start tag {name}. Ignored.","expected-one-end-tag-but-got-another":"Unexpected end tag ({gotName}). Missing end tag ({expectedName}).","end-tag-too-early":"End tag ({name}) seen too early. Expected other end tag.","end-tag-too-early-named":"Unexpected end tag ({gotName}). Expected end tag ({expectedName}.","end-tag-too-early-ignored":"End tag ({name}) seen too early. Ignored.","adoption-agency-1.1":"End tag ({name}) violates step 1, paragraph 1 of the adoption agency algorithm.","adoption-agency-1.2":"End tag ({name}) violates step 1, paragraph 2 of the adoption agency algorithm.","adoption-agency-1.3":"End tag ({name}) violates step 1, paragraph 3 of the adoption agency algorithm.","adoption-agency-4.4":"End tag ({name}) violates step 4, paragraph 4 of the adoption agency algorithm.","unexpected-end-tag-treated-as":"Unexpected end tag ({originalName}). Treated as {newName}.","no-end-tag":"This element ({name}) has no end tag.","unexpected-implied-end-tag-in-table":"Unexpected implied end tag ({name}) in the table phase.","unexpected-implied-end-tag-in-table-body":"Unexpected implied end tag ({name}) in the table body phase.","unexpected-char-implies-table-voodoo":"Unexpected non-space characters in table context caused voodoo mode.","unexpected-hidden-input-in-table":"Unexpected input with type hidden in table context.","unexpected-form-in-table":"Unexpected form in table context.","unexpected-start-tag-implies-table-voodoo":"Unexpected start tag ({name}) in table context caused voodoo mode.","unexpected-end-tag-implies-table-voodoo":"Unexpected end tag ({name}) in table context caused voodoo mode.","unexpected-cell-in-table-body":"Unexpected table cell start tag ({name}) in the table body phase.","unexpected-cell-end-tag":"Got table cell end tag ({name}) while required end tags are missing.","unexpected-end-tag-in-table-body":"Unexpected end tag ({name}) in the table body phase. Ignored.","unexpected-implied-end-tag-in-table-row":"Unexpected implied end tag ({name}) in the table row phase.","unexpected-end-tag-in-table-row":"Unexpected end tag ({name}) in the table row phase. Ignored.","unexpected-select-in-select":"Unexpected select start tag in the select phase treated as select end tag.","unexpected-input-in-select":"Unexpected input start tag in the select phase.","unexpected-start-tag-in-select":"Unexpected start tag token ({name}) in the select phase. Ignored.","unexpected-end-tag-in-select":"Unexpected end tag ({name}) in the select phase. Ignored.","unexpected-table-element-start-tag-in-select-in-table":"Unexpected table element start tag ({name}) in the select in table phase.","unexpected-table-element-end-tag-in-select-in-table":"Unexpected table element end tag ({name}) in the select in table phase.","unexpected-char-after-body":"Unexpected non-space characters in the after body phase.","unexpected-start-tag-after-body":"Unexpected start tag token ({name}) in the after body phase.","unexpected-end-tag-after-body":"Unexpected end tag token ({name}) in the after body phase.","unexpected-char-in-frameset":"Unepxected characters in the frameset phase. Characters ignored.","unexpected-start-tag-in-frameset":"Unexpected start tag token ({name}) in the frameset phase. Ignored.","unexpected-frameset-in-frameset-innerhtml":"Unexpected end tag token (frameset in the frameset phase (innerHTML).","unexpected-end-tag-in-frameset":"Unexpected end tag token ({name}) in the frameset phase. Ignored.","unexpected-char-after-frameset":"Unexpected non-space characters in the after frameset phase. Ignored.","unexpected-start-tag-after-frameset":"Unexpected start tag ({name}) in the after frameset phase. Ignored.","unexpected-end-tag-after-frameset":"Unexpected end tag ({name}) in the after frameset phase. Ignored.","expected-eof-but-got-char":"Unexpected non-space characters. Expected end of file.","expected-eof-but-got-start-tag":"Unexpected start tag ({name}). Expected end of file.","expected-eof-but-got-end-tag":"Unexpected end tag ({name}). Expected end of file.","unexpected-end-table-in-caption":"Unexpected end table tag in caption. Generates implied end caption.","end-html-in-innerhtml":"Unexpected html end tag in inner html mode.","eof-in-table":"Unexpected end of file. Expected table content.","eof-in-script":"Unexpected end of file. Expected script content.","non-void-element-with-trailing-solidus":"Trailing solidus not allowed on element {name}.","unexpected-html-element-in-foreign-content":'HTML start tag "{name}" in a foreign namespace context.',"unexpected-start-tag-in-table":"Unexpected {name}. Expected table content."}},{}],9:[function(e,t,n){function o(){this.contentHandler=null,this._errorHandler=null,this._treeBuilder=new r,this._tokenizer=new i(this._treeBuilder),this._scriptingEnabled=!1}var r=e("./SAXTreeBuilder").SAXTreeBuilder,i=e("../Tokenizer").Tokenizer,s=e("./TreeParser").TreeParser;o.prototype.parse=function(e){this._tokenizer.tokenize(e);var t=this._treeBuilder.document;t&&(new s(this.contentHandler)).parse(t)},o.prototype.parseFragment=function(e,t){this._treeBuilder.setFragmentContext(t),this._tokenizer.tokenize(e);var n=this._treeBuilder.getFragment();n&&(new s(this.contentHandler)).parse(n)},Object.defineProperty(o.prototype,"scriptingEnabled",{get:function(){return this._scriptingEnabled},set:function(e){this._scriptingEnabled=e,this._treeBuilder.scriptingEnabled=e}}),Object.defineProperty(o.prototype,"errorHandler",{get:function(){return this._errorHandler},set:function(e){this._errorHandler=e,this._treeBuilder.errorHandler=e}}),n.SAXParser=o},{"../Tokenizer":5,"./SAXTreeBuilder":10,"./TreeParser":11}],10:[function(e,t,n){function s(){i.call(this)}function o(e,t){for(var n=0;n<e.attributes.length;n++){var r=e.attributes[n];if(r.nodeName===t)return r.nodeValue}}function a(e){e?(this.columnNumber=e.columnNumber,this.lineNumber=e.lineNumber):(this.columnNumber=-1,this.lineNumber=-1),this.parentNode=null,this.nextSibling=null,this.firstChild=null}function f(e){a.call(this,e),this.lastChild=null,this._endLocator=null}function l(e){f.call(this,e),this.nodeType=u.DOCUMENT}function c(){f.call(this,new Locator),this.nodeType=u.DOCUMENT_FRAGMENT}function h(e,t,n,r,i,s){f.call(this,e),this.uri=t,this.localName=n,this.qName=r,this.attributes=i,this.prefixMappings=s,this.nodeType=u.ELEMENT}function p(e,t){a.call(this,e),this.data=t,this.nodeType=u.CHARACTERS}function d(e,t){a.call(this,e),this.data=t,this.nodeType=u.IGNORABLE_WHITESPACE}function v(e,t){a.call(this,e),this.data=t,this.nodeType=u.COMMENT}function m(e){f.call(this,e),this.nodeType=u.CDATA}function g(e){f.call(this),this.name=e,this.nodeType=u.ENTITY}function y(e){a.call(this),this.name=e,this.nodeType=u.SKIPPED_ENTITY}function b(e,t){a.call(this),this.target=e,this.data=t}function w(e,t,n){f.call(this),this.name=e,this.publicIdentifier=t,this.systemIdentifier=n,this.nodeType=u.DTD}var r=e("util"),i=e("../TreeBuilder").TreeBuilder;r.inherits(s,i),s.prototype.start=function(e){this.document=new l(this.tokenizer)},s.prototype.end=function(){this.document.endLocator=this.tokenizer},s.prototype.insertDoctype=function(e,t,n){var r=new w(this.tokenizer,e,t,n);r.endLocator=this.tokenizer,this.document.appendChild(r)},s.prototype.createElement=function(e,t,n){var r=new h(this.tokenizer,e,t,t,n||[]);return r},s.prototype.insertComment=function(e,t){t||(t=this.currentStackItem());var n=new v(this.tokenizer,e);t.appendChild(n)},s.prototype.appendCharacters=function(e,t){var n=new p(this.tokenizer,t);e.appendChild(n)},s.prototype.insertText=function(e){if(this.redirectAttachToFosterParent&&this.openElements.top.isFosterParenting()){var t=this.openElements.findIndex("table"),n=this.openElements.item(t),r=n.node;if(t===0)return this.appendCharacters(r,e);var i=new p(this.tokenizer,e),s=r.parentNode;if(s){s.insertBetween(i,r.previousSibling,r);return}var o=this.openElements.item(t-1).node;o.appendChild(i);return}this.appendCharacters(this.currentStackItem().node,e)},s.prototype.attachNode=function(e,t){t.appendChild(e)},s.prototype.attachNodeToFosterParent=function(e,t,n){var r=t.parentNode;r?r.insertBetween(e,t.previousSibling,t):n.appendChild(e)},s.prototype.detachFromParent=function(e){e.detach()},s.prototype.reparentChildren=function(e,t){t.appendChildren(e.firstChild)},s.prototype.getFragment=function(){var e=new c;return this.reparentChildren(this.openElements.rootNode,e),e},s.prototype.addAttributesToElement=function(e,t){for(var n=0;n<t.length;n++){var r=t[n];o(e,r.nodeName)||e.attributes.push(r)}};var u={CDATA:1,CHARACTERS:2,COMMENT:3,DOCUMENT:4,DOCUMENT_FRAGMENT:5,DTD:6,ELEMENT:7,ENTITY:8,IGNORABLE_WHITESPACE:9,PROCESSING_INSTRUCTION:10,SKIPPED_ENTITY:11};a.prototype.visit=function(e){throw new Error("Not Implemented")},a.prototype.revisit=function(e){return},a.prototype.detach=function(){this.parentNode!==null&&(this.parentNode.removeChild(this),this.parentNode=null)},Object.defineProperty(a.prototype,"previousSibling",{get:function(){var e=null,t=this.parentNode.firstChild;for(;;){if(this==t)return e;e=t,t=t.nextSibling}}}),f.prototype=Object.create(a.prototype),f.prototype.insertBefore=function(e,t){if(!t)return this.appendChild(e);e.detach(),e.parentNode=this;if(this.firstChild==t)e.nextSibling=t,this.firstChild=e;else{var n=this.firstChild,r=this.firstChild.nextSibling;while(r!=t)n=r,r=r.nextSibling;n.nextSibling=e,e.nextSibling=r}return e},f.prototype.insertBetween=function(e,t,n){return n?(e.detach(),e.parentNode=this,e.nextSibling=n,t?t.nextSibling=e:firstChild=e,e):this.appendChild(e)},f.prototype.appendChild=function(e){return e.detach(),e.parentNode=this,this.firstChild?this.lastChild.nextSibling=e:this.firstChild=e,this.lastChild=e,e},f.prototype.appendChildren=function(e){var t=e.firstChild;if(!t)return;var n=e;this.firstChild?this.lastChild.nextSibling=t:this.firstChild=t,this.lastChild=n.lastChild;do t.parentNode=this;while(t=t.nextSibling);n.firstChild=null,n.lastChild=null},f.prototype.removeChild=function(e){if(this.firstChild==e)this.firstChild=e.nextSibling,this.lastChild==e&&(this.lastChild=null);else{var t=this.firstChild,n=this.firstChild.nextSibling;while(n!=e)t=n,n=n.nextSibling;t.nextSibling=e.nextSibling,this.lastChild==e&&(this.lastChild=t)}return e.parentNode=null,e},Object.defineProperty(f.prototype,"endLocator",{get:function(){return this._endLocator},set:function(e){this._endLocator={lineNumber:e.lineNumber,columnNumber:e.columnNumber}}}),l.prototype=Object.create(f.prototype),l.prototype.visit=function(e){e.startDocument(this)},l.prototype.revisit=function(e){e.endDocument(this.endLocator)},c.prototype=Object.create(f.prototype),c.prototype.visit=function(e){},h.prototype=Object.create(f.prototype),h.prototype.visit=function(e){if(this.prefixMappings)for(var t in prefixMappings){var n=prefixMappings[t];e.startPrefixMapping(n.getPrefix(),n.getUri(),this)}e.startElement(this.uri,this.localName,this.qName,this.attributes,this)},h.prototype.revisit=function(e){e.endElement(this.uri,this.localName,this.qName,this.endLocator);if(this.prefixMappings)for(var t in prefixMappings){var n=prefixMappings[t];e.endPrefixMapping(n.getPrefix(),this.endLocator)}},p.prototype=Object.create(a.prototype),p.prototype.visit=function(e){e.characters(this.data,0,this.data.length,this)},d.prototype=Object.create(a.prototype),d.prototype.visit=function(e){e.ignorableWhitespace(this.data,0,this.data.length,this)},v.prototype=Object.create(a.prototype),v.prototype.visit=function(e){e.comment(this.data,0,this.data.length,this)},m.prototype=Object.create(f.prototype),m.prototype.visit=function(e){e.startCDATA(this)},m.prototype.revisit=function(e){e.endCDATA(this.endLocator)},g.prototype=Object.create(f.prototype),g.prototype.visit=function(e){e.startEntity(this.name,this)},g.prototype.revisit=function(e){e.endEntity(this.name)},y.prototype=Object.create(a.prototype),y.prototype.visit=function(e){e.skippedEntity(this.name,this)},b.prototype=Object.create(a.prototype),b.prototype.visit=function(e){e.processingInstruction(this.target,this.data,this)},b.prototype.getNodeType=function(){return u.PROCESSING_INSTRUCTION},w.prototype=Object.create(f.prototype),w.prototype.visit=function(e){e.startDTD(this.name,this.publicIdentifier,this.systemIdentifier,this)},w.prototype.revisit=function(e){e.endDTD()},n.SAXTreeBuilder=s},{"../TreeBuilder":6,util:20}],11:[function(e,t,n){function r(e,t){this.contentHandler,this.lexicalHandler,this.locatorDelegate;if(!e)throw new IllegalArgumentException("contentHandler was null.");this.contentHandler=e,t?this.lexicalHandler=t:this.lexicalHandler=new i}function i(){}r.prototype.parse=function(e){this.contentHandler.documentLocator=this;var t=e,n;for(;;){t.visit(this);if(n=t.firstChild){t=n;continue}for(;;){t.revisit(this);if(t==e)return;if(n=t.nextSibling){t=n;break}t=t.parentNode}}},r.prototype.characters=function(e,t,n,r){this.locatorDelegate=r,this.contentHandler.characters(e,t,n)},r.prototype.endDocument=function(e){this.locatorDelegate=e,this.contentHandler.endDocument()},r.prototype.endElement=function(e,t,n,r){this.locatorDelegate=r,this.contentHandler.endElement(e,t,n)},r.prototype.endPrefixMapping=function(e,t){this.locatorDelegate=t,this.contentHandler.endPrefixMapping(e)},r.prototype.ignorableWhitespace=function(e,t,n,r){this.locatorDelegate=r,this.contentHandler.ignorableWhitespace(e,t,n)},r.prototype.processingInstruction=function(e,t,n){this.locatorDelegate=n,this.contentHandler.processingInstruction(e,t)},r.prototype.skippedEntity=function(e,t){this.locatorDelegate=t,this.contentHandler.skippedEntity(e)},r.prototype.startDocument=function(e){this.locatorDelegate=e,this.contentHandler.startDocument()},r.prototype.startElement=function(e,t,n,r,i){this.locatorDelegate=i,this.contentHandler.startElement(e,t,n,r)},r.prototype.startPrefixMapping=function(e,t,n){this.locatorDelegate=n,this.contentHandler.startPrefixMapping(e,t)},r.prototype.comment=function(e,t,n,r){this.locatorDelegate=r,this.lexicalHandler.comment(e,t,n)},r.prototype.endCDATA=function(e){this.locatorDelegate=e,this.lexicalHandler.endCDATA()},r.prototype.endDTD=function(e){this.locatorDelegate=e,this.lexicalHandler.endDTD()},r.prototype.endEntity=function(e,t){this.locatorDelegate=t,this.lexicalHandler.endEntity(e)},r.prototype.startCDATA=function(e){this.locatorDelegate=e,this.lexicalHandler.startCDATA()},r.prototype.startDTD=function(e,t,n,r){this.locatorDelegate=r,this.lexicalHandler.startDTD(e,t,n)},r.prototype.startEntity=function(e,t){this.locatorDelegate=t,this.lexicalHandler.startEntity(e)},Object.defineProperty(r.prototype,"columnNumber",{get:function(){return this.locatorDelegate?this.locatorDelegate.columnNumber:-1}}),Object.defineProperty(r.prototype,"lineNumber",{get:function(){return this.locatorDelegate?this.locatorDelegate.lineNumber:-1}}),i.prototype.comment=function(){},i.prototype.endCDATA=function(){},i.prototype.endDTD=function(){},i.prototype.endEntity=function(){},i.prototype.startCDATA=function(){},i.prototype.startDTD=function(){},i.prototype.startEntity=function(){},n.TreeParser=r},{}],12:[function(e,t,n){t.exports={"Aacute;":"\u00c1",Aacute:"\u00c1","aacute;":"\u00e1",aacute:"\u00e1","Abreve;":"\u0102","abreve;":"\u0103","ac;":"\u223e","acd;":"\u223f","acE;":"\u223e\u0333","Acirc;":"\u00c2",Acirc:"\u00c2","acirc;":"\u00e2",acirc:"\u00e2","acute;":"\u00b4",acute:"\u00b4","Acy;":"\u0410","acy;":"\u0430","AElig;":"\u00c6",AElig:"\u00c6","aelig;":"\u00e6",aelig:"\u00e6","af;":"\u2061","Afr;":"\ud835\udd04","afr;":"\ud835\udd1e","Agrave;":"\u00c0",Agrave:"\u00c0","agrave;":"\u00e0",agrave:"\u00e0","alefsym;":"\u2135","aleph;":"\u2135","Alpha;":"\u0391","alpha;":"\u03b1","Amacr;":"\u0100","amacr;":"\u0101","amalg;":"\u2a3f","amp;":"&",amp:"&","AMP;":"&",AMP:"&","andand;":"\u2a55","And;":"\u2a53","and;":"\u2227","andd;":"\u2a5c","andslope;":"\u2a58","andv;":"\u2a5a","ang;":"\u2220","ange;":"\u29a4","angle;":"\u2220","angmsdaa;":"\u29a8","angmsdab;":"\u29a9","angmsdac;":"\u29aa","angmsdad;":"\u29ab","angmsdae;":"\u29ac","angmsdaf;":"\u29ad","angmsdag;":"\u29ae","angmsdah;":"\u29af","angmsd;":"\u2221","angrt;":"\u221f","angrtvb;":"\u22be","angrtvbd;":"\u299d","angsph;":"\u2222","angst;":"\u00c5","angzarr;":"\u237c","Aogon;":"\u0104","aogon;":"\u0105","Aopf;":"\ud835\udd38","aopf;":"\ud835\udd52","apacir;":"\u2a6f","ap;":"\u2248","apE;":"\u2a70","ape;":"\u224a","apid;":"\u224b","apos;":"'","ApplyFunction;":"\u2061","approx;":"\u2248","approxeq;":"\u224a","Aring;":"\u00c5",Aring:"\u00c5","aring;":"\u00e5",aring:"\u00e5","Ascr;":"\ud835\udc9c","ascr;":"\ud835\udcb6","Assign;":"\u2254","ast;":"*","asymp;":"\u2248","asympeq;":"\u224d","Atilde;":"\u00c3",Atilde:"\u00c3","atilde;":"\u00e3",atilde:"\u00e3","Auml;":"\u00c4",Auml:"\u00c4","auml;":"\u00e4",auml:"\u00e4","awconint;":"\u2233","awint;":"\u2a11","backcong;":"\u224c","backepsilon;":"\u03f6","backprime;":"\u2035","backsim;":"\u223d","backsimeq;":"\u22cd","Backslash;":"\u2216","Barv;":"\u2ae7","barvee;":"\u22bd","barwed;":"\u2305","Barwed;":"\u2306","barwedge;":"\u2305","bbrk;":"\u23b5","bbrktbrk;":"\u23b6","bcong;":"\u224c","Bcy;":"\u0411","bcy;":"\u0431","bdquo;":"\u201e","becaus;":"\u2235","because;":"\u2235","Because;":"\u2235","bemptyv;":"\u29b0","bepsi;":"\u03f6","bernou;":"\u212c","Bernoullis;":"\u212c","Beta;":"\u0392","beta;":"\u03b2","beth;":"\u2136","between;":"\u226c","Bfr;":"\ud835\udd05","bfr;":"\ud835\udd1f","bigcap;":"\u22c2","bigcirc;":"\u25ef","bigcup;":"\u22c3","bigodot;":"\u2a00","bigoplus;":"\u2a01","bigotimes;":"\u2a02","bigsqcup;":"\u2a06","bigstar;":"\u2605","bigtriangledown;":"\u25bd","bigtriangleup;":"\u25b3","biguplus;":"\u2a04","bigvee;":"\u22c1","bigwedge;":"\u22c0","bkarow;":"\u290d","blacklozenge;":"\u29eb","blacksquare;":"\u25aa","blacktriangle;":"\u25b4","blacktriangledown;":"\u25be","blacktriangleleft;":"\u25c2","blacktriangleright;":"\u25b8","blank;":"\u2423","blk12;":"\u2592","blk14;":"\u2591","blk34;":"\u2593","block;":"\u2588","bne;":"=\u20e5","bnequiv;":"\u2261\u20e5","bNot;":"\u2aed","bnot;":"\u2310","Bopf;":"\ud835\udd39","bopf;":"\ud835\udd53","bot;":"\u22a5","bottom;":"\u22a5","bowtie;":"\u22c8","boxbox;":"\u29c9","boxdl;":"\u2510","boxdL;":"\u2555","boxDl;":"\u2556","boxDL;":"\u2557","boxdr;":"\u250c","boxdR;":"\u2552","boxDr;":"\u2553","boxDR;":"\u2554","boxh;":"\u2500","boxH;":"\u2550","boxhd;":"\u252c","boxHd;":"\u2564","boxhD;":"\u2565","boxHD;":"\u2566","boxhu;":"\u2534","boxHu;":"\u2567","boxhU;":"\u2568","boxHU;":"\u2569","boxminus;":"\u229f","boxplus;":"\u229e","boxtimes;":"\u22a0","boxul;":"\u2518","boxuL;":"\u255b","boxUl;":"\u255c","boxUL;":"\u255d","boxur;":"\u2514","boxuR;":"\u2558","boxUr;":"\u2559","boxUR;":"\u255a","boxv;":"\u2502","boxV;":"\u2551","boxvh;":"\u253c","boxvH;":"\u256a","boxVh;":"\u256b","boxVH;":"\u256c","boxvl;":"\u2524","boxvL;":"\u2561","boxVl;":"\u2562","boxVL;":"\u2563","boxvr;":"\u251c","boxvR;":"\u255e","boxVr;":"\u255f","boxVR;":"\u2560","bprime;":"\u2035","breve;":"\u02d8","Breve;":"\u02d8","brvbar;":"\u00a6",brvbar:"\u00a6","bscr;":"\ud835\udcb7","Bscr;":"\u212c","bsemi;":"\u204f","bsim;":"\u223d","bsime;":"\u22cd","bsolb;":"\u29c5","bsol;":"\\","bsolhsub;":"\u27c8","bull;":"\u2022","bullet;":"\u2022","bump;":"\u224e","bumpE;":"\u2aae","bumpe;":"\u224f","Bumpeq;":"\u224e","bumpeq;":"\u224f","Cacute;":"\u0106","cacute;":"\u0107","capand;":"\u2a44","capbrcup;":"\u2a49","capcap;":"\u2a4b","cap;":"\u2229","Cap;":"\u22d2","capcup;":"\u2a47","capdot;":"\u2a40","CapitalDifferentialD;":"\u2145","caps;":"\u2229\ufe00","caret;":"\u2041","caron;":"\u02c7","Cayleys;":"\u212d","ccaps;":"\u2a4d","Ccaron;":"\u010c","ccaron;":"\u010d","Ccedil;":"\u00c7",Ccedil:"\u00c7","ccedil;":"\u00e7",ccedil:"\u00e7","Ccirc;":"\u0108","ccirc;":"\u0109","Cconint;":"\u2230","ccups;":"\u2a4c","ccupssm;":"\u2a50","Cdot;":"\u010a","cdot;":"\u010b","cedil;":"\u00b8",cedil:"\u00b8","Cedilla;":"\u00b8","cemptyv;":"\u29b2","cent;":"\u00a2",cent:"\u00a2","centerdot;":"\u00b7","CenterDot;":"\u00b7","cfr;":"\ud835\udd20","Cfr;":"\u212d","CHcy;":"\u0427","chcy;":"\u0447","check;":"\u2713","checkmark;":"\u2713","Chi;":"\u03a7","chi;":"\u03c7","circ;":"\u02c6","circeq;":"\u2257","circlearrowleft;":"\u21ba","circlearrowright;":"\u21bb","circledast;":"\u229b","circledcirc;":"\u229a","circleddash;":"\u229d","CircleDot;":"\u2299","circledR;":"\u00ae","circledS;":"\u24c8","CircleMinus;":"\u2296","CirclePlus;":"\u2295","CircleTimes;":"\u2297","cir;":"\u25cb","cirE;":"\u29c3","cire;":"\u2257","cirfnint;":"\u2a10","cirmid;":"\u2aef","cirscir;":"\u29c2","ClockwiseContourIntegral;":"\u2232","CloseCurlyDoubleQuote;":"\u201d","CloseCurlyQuote;":"\u2019","clubs;":"\u2663","clubsuit;":"\u2663","colon;":":","Colon;":"\u2237","Colone;":"\u2a74","colone;":"\u2254","coloneq;":"\u2254","comma;":",","commat;":"@","comp;":"\u2201","compfn;":"\u2218","complement;":"\u2201","complexes;":"\u2102","cong;":"\u2245","congdot;":"\u2a6d","Congruent;":"\u2261","conint;":"\u222e","Conint;":"\u222f","ContourIntegral;":"\u222e","copf;":"\ud835\udd54","Copf;":"\u2102","coprod;":"\u2210","Coproduct;":"\u2210","copy;":"\u00a9",copy:"\u00a9","COPY;":"\u00a9",COPY:"\u00a9","copysr;":"\u2117","CounterClockwiseContourIntegral;":"\u2233","crarr;":"\u21b5","cross;":"\u2717","Cross;":"\u2a2f","Cscr;":"\ud835\udc9e","cscr;":"\ud835\udcb8","csub;":"\u2acf","csube;":"\u2ad1","csup;":"\u2ad0","csupe;":"\u2ad2","ctdot;":"\u22ef","cudarrl;":"\u2938","cudarrr;":"\u2935","cuepr;":"\u22de","cuesc;":"\u22df","cularr;":"\u21b6","cularrp;":"\u293d","cupbrcap;":"\u2a48","cupcap;":"\u2a46","CupCap;":"\u224d","cup;":"\u222a","Cup;":"\u22d3","cupcup;":"\u2a4a","cupdot;":"\u228d","cupor;":"\u2a45","cups;":"\u222a\ufe00","curarr;":"\u21b7","curarrm;":"\u293c","curlyeqprec;":"\u22de","curlyeqsucc;":"\u22df","curlyvee;":"\u22ce","curlywedge;":"\u22cf","curren;":"\u00a4",curren:"\u00a4","curvearrowleft;":"\u21b6","curvearrowright;":"\u21b7","cuvee;":"\u22ce","cuwed;":"\u22cf","cwconint;":"\u2232","cwint;":"\u2231","cylcty;":"\u232d","dagger;":"\u2020","Dagger;":"\u2021","daleth;":"\u2138","darr;":"\u2193","Darr;":"\u21a1","dArr;":"\u21d3","dash;":"\u2010","Dashv;":"\u2ae4","dashv;":"\u22a3","dbkarow;":"\u290f","dblac;":"\u02dd","Dcaron;":"\u010e","dcaron;":"\u010f","Dcy;":"\u0414","dcy;":"\u0434","ddagger;":"\u2021","ddarr;":"\u21ca","DD;":"\u2145","dd;":"\u2146","DDotrahd;":"\u2911","ddotseq;":"\u2a77","deg;":"\u00b0",deg:"\u00b0","Del;":"\u2207","Delta;":"\u0394","delta;":"\u03b4","demptyv;":"\u29b1","dfisht;":"\u297f","Dfr;":"\ud835\udd07","dfr;":"\ud835\udd21","dHar;":"\u2965","dharl;":"\u21c3","dharr;":"\u21c2","DiacriticalAcute;":"\u00b4","DiacriticalDot;":"\u02d9","DiacriticalDoubleAcute;":"\u02dd","DiacriticalGrave;":"`","DiacriticalTilde;":"\u02dc","diam;":"\u22c4","diamond;":"\u22c4","Diamond;":"\u22c4","diamondsuit;":"\u2666","diams;":"\u2666","die;":"\u00a8","DifferentialD;":"\u2146","digamma;":"\u03dd","disin;":"\u22f2","div;":"\u00f7","divide;":"\u00f7",divide:"\u00f7","divideontimes;":"\u22c7","divonx;":"\u22c7","DJcy;":"\u0402","djcy;":"\u0452","dlcorn;":"\u231e","dlcrop;":"\u230d","dollar;":"$","Dopf;":"\ud835\udd3b","dopf;":"\ud835\udd55","Dot;":"\u00a8","dot;":"\u02d9","DotDot;":"\u20dc","doteq;":"\u2250","doteqdot;":"\u2251","DotEqual;":"\u2250","dotminus;":"\u2238","dotplus;":"\u2214","dotsquare;":"\u22a1","doublebarwedge;":"\u2306","DoubleContourIntegral;":"\u222f","DoubleDot;":"\u00a8","DoubleDownArrow;":"\u21d3","DoubleLeftArrow;":"\u21d0","DoubleLeftRightArrow;":"\u21d4","DoubleLeftTee;":"\u2ae4","DoubleLongLeftArrow;":"\u27f8","DoubleLongLeftRightArrow;":"\u27fa","DoubleLongRightArrow;":"\u27f9","DoubleRightArrow;":"\u21d2","DoubleRightTee;":"\u22a8","DoubleUpArrow;":"\u21d1","DoubleUpDownArrow;":"\u21d5","DoubleVerticalBar;":"\u2225","DownArrowBar;":"\u2913","downarrow;":"\u2193","DownArrow;":"\u2193","Downarrow;":"\u21d3","DownArrowUpArrow;":"\u21f5","DownBreve;":"\u0311","downdownarrows;":"\u21ca","downharpoonleft;":"\u21c3","downharpoonright;":"\u21c2","DownLeftRightVector;":"\u2950","DownLeftTeeVector;":"\u295e","DownLeftVectorBar;":"\u2956","DownLeftVector;":"\u21bd","DownRightTeeVector;":"\u295f","DownRightVectorBar;":"\u2957","DownRightVector;":"\u21c1","DownTeeArrow;":"\u21a7","DownTee;":"\u22a4","drbkarow;":"\u2910","drcorn;":"\u231f","drcrop;":"\u230c","Dscr;":"\ud835\udc9f","dscr;":"\ud835\udcb9","DScy;":"\u0405","dscy;":"\u0455","dsol;":"\u29f6","Dstrok;":"\u0110","dstrok;":"\u0111","dtdot;":"\u22f1","dtri;":"\u25bf","dtrif;":"\u25be","duarr;":"\u21f5","duhar;":"\u296f","dwangle;":"\u29a6","DZcy;":"\u040f","dzcy;":"\u045f","dzigrarr;":"\u27ff","Eacute;":"\u00c9",Eacute:"\u00c9","eacute;":"\u00e9",eacute:"\u00e9","easter;":"\u2a6e","Ecaron;":"\u011a","ecaron;":"\u011b","Ecirc;":"\u00ca",Ecirc:"\u00ca","ecirc;":"\u00ea",ecirc:"\u00ea","ecir;":"\u2256","ecolon;":"\u2255","Ecy;":"\u042d","ecy;":"\u044d","eDDot;":"\u2a77","Edot;":"\u0116","edot;":"\u0117","eDot;":"\u2251","ee;":"\u2147","efDot;":"\u2252","Efr;":"\ud835\udd08","efr;":"\ud835\udd22","eg;":"\u2a9a","Egrave;":"\u00c8",Egrave:"\u00c8","egrave;":"\u00e8",egrave:"\u00e8","egs;":"\u2a96","egsdot;":"\u2a98","el;":"\u2a99","Element;":"\u2208","elinters;":"\u23e7","ell;":"\u2113","els;":"\u2a95","elsdot;":"\u2a97","Emacr;":"\u0112","emacr;":"\u0113","empty;":"\u2205","emptyset;":"\u2205","EmptySmallSquare;":"\u25fb","emptyv;":"\u2205","EmptyVerySmallSquare;":"\u25ab","emsp13;":"\u2004","emsp14;":"\u2005","emsp;":"\u2003","ENG;":"\u014a","eng;":"\u014b","ensp;":"\u2002","Eogon;":"\u0118","eogon;":"\u0119","Eopf;":"\ud835\udd3c","eopf;":"\ud835\udd56","epar;":"\u22d5","eparsl;":"\u29e3","eplus;":"\u2a71","epsi;":"\u03b5","Epsilon;":"\u0395","epsilon;":"\u03b5","epsiv;":"\u03f5","eqcirc;":"\u2256","eqcolon;":"\u2255","eqsim;":"\u2242","eqslantgtr;":"\u2a96","eqslantless;":"\u2a95","Equal;":"\u2a75","equals;":"=","EqualTilde;":"\u2242","equest;":"\u225f","Equilibrium;":"\u21cc","equiv;":"\u2261","equivDD;":"\u2a78","eqvparsl;":"\u29e5","erarr;":"\u2971","erDot;":"\u2253","escr;":"\u212f","Escr;":"\u2130","esdot;":"\u2250","Esim;":"\u2a73","esim;":"\u2242","Eta;":"\u0397","eta;":"\u03b7","ETH;":"\u00d0",ETH:"\u00d0","eth;":"\u00f0",eth:"\u00f0","Euml;":"\u00cb",Euml:"\u00cb","euml;":"\u00eb",euml:"\u00eb","euro;":"\u20ac","excl;":"!","exist;":"\u2203","Exists;":"\u2203","expectation;":"\u2130","exponentiale;":"\u2147","ExponentialE;":"\u2147","fallingdotseq;":"\u2252","Fcy;":"\u0424","fcy;":"\u0444","female;":"\u2640","ffilig;":"\ufb03","fflig;":"\ufb00","ffllig;":"\ufb04","Ffr;":"\ud835\udd09","ffr;":"\ud835\udd23","filig;":"\ufb01","FilledSmallSquare;":"\u25fc","FilledVerySmallSquare;":"\u25aa","fjlig;":"fj","flat;":"\u266d","fllig;":"\ufb02","fltns;":"\u25b1","fnof;":"\u0192","Fopf;":"\ud835\udd3d","fopf;":"\ud835\udd57","forall;":"\u2200","ForAll;":"\u2200","fork;":"\u22d4","forkv;":"\u2ad9","Fouriertrf;":"\u2131","fpartint;":"\u2a0d","frac12;":"\u00bd",frac12:"\u00bd","frac13;":"\u2153","frac14;":"\u00bc",frac14:"\u00bc","frac15;":"\u2155","frac16;":"\u2159","frac18;":"\u215b","frac23;":"\u2154","frac25;":"\u2156","frac34;":"\u00be",frac34:"\u00be","frac35;":"\u2157","frac38;":"\u215c","frac45;":"\u2158","frac56;":"\u215a","frac58;":"\u215d","frac78;":"\u215e","frasl;":"\u2044","frown;":"\u2322","fscr;":"\ud835\udcbb","Fscr;":"\u2131","gacute;":"\u01f5","Gamma;":"\u0393","gamma;":"\u03b3","Gammad;":"\u03dc","gammad;":"\u03dd","gap;":"\u2a86","Gbreve;":"\u011e","gbreve;":"\u011f","Gcedil;":"\u0122","Gcirc;":"\u011c","gcirc;":"\u011d","Gcy;":"\u0413","gcy;":"\u0433","Gdot;":"\u0120","gdot;":"\u0121","ge;":"\u2265","gE;":"\u2267","gEl;":"\u2a8c","gel;":"\u22db","geq;":"\u2265","geqq;":"\u2267","geqslant;":"\u2a7e","gescc;":"\u2aa9","ges;":"\u2a7e","gesdot;":"\u2a80","gesdoto;":"\u2a82","gesdotol;":"\u2a84","gesl;":"\u22db\ufe00","gesles;":"\u2a94","Gfr;":"\ud835\udd0a","gfr;":"\ud835\udd24","gg;":"\u226b","Gg;":"\u22d9","ggg;":"\u22d9","gimel;":"\u2137","GJcy;":"\u0403","gjcy;":"\u0453","gla;":"\u2aa5","gl;":"\u2277","glE;":"\u2a92","glj;":"\u2aa4","gnap;":"\u2a8a","gnapprox;":"\u2a8a","gne;":"\u2a88","gnE;":"\u2269","gneq;":"\u2a88","gneqq;":"\u2269","gnsim;":"\u22e7","Gopf;":"\ud835\udd3e","gopf;":"\ud835\udd58","grave;":"`","GreaterEqual;":"\u2265","GreaterEqualLess;":"\u22db","GreaterFullEqual;":"\u2267","GreaterGreater;":"\u2aa2","GreaterLess;":"\u2277","GreaterSlantEqual;":"\u2a7e","GreaterTilde;":"\u2273","Gscr;":"\ud835\udca2","gscr;":"\u210a","gsim;":"\u2273","gsime;":"\u2a8e","gsiml;":"\u2a90","gtcc;":"\u2aa7","gtcir;":"\u2a7a","gt;":">",gt:">","GT;":">",GT:">","Gt;":"\u226b","gtdot;":"\u22d7","gtlPar;":"\u2995","gtquest;":"\u2a7c","gtrapprox;":"\u2a86","gtrarr;":"\u2978","gtrdot;":"\u22d7","gtreqless;":"\u22db","gtreqqless;":"\u2a8c","gtrless;":"\u2277","gtrsim;":"\u2273","gvertneqq;":"\u2269\ufe00","gvnE;":"\u2269\ufe00","Hacek;":"\u02c7","hairsp;":"\u200a","half;":"\u00bd","hamilt;":"\u210b","HARDcy;":"\u042a","hardcy;":"\u044a","harrcir;":"\u2948","harr;":"\u2194","hArr;":"\u21d4","harrw;":"\u21ad","Hat;":"^","hbar;":"\u210f","Hcirc;":"\u0124","hcirc;":"\u0125","hearts;":"\u2665","heartsuit;":"\u2665","hellip;":"\u2026","hercon;":"\u22b9","hfr;":"\ud835\udd25","Hfr;":"\u210c","HilbertSpace;":"\u210b","hksearow;":"\u2925","hkswarow;":"\u2926","hoarr;":"\u21ff","homtht;":"\u223b","hookleftarrow;":"\u21a9","hookrightarrow;":"\u21aa","hopf;":"\ud835\udd59","Hopf;":"\u210d","horbar;":"\u2015","HorizontalLine;":"\u2500","hscr;":"\ud835\udcbd","Hscr;":"\u210b","hslash;":"\u210f","Hstrok;":"\u0126","hstrok;":"\u0127","HumpDownHump;":"\u224e","HumpEqual;":"\u224f","hybull;":"\u2043","hyphen;":"\u2010","Iacute;":"\u00cd",Iacute:"\u00cd","iacute;":"\u00ed",iacute:"\u00ed","ic;":"\u2063","Icirc;":"\u00ce",Icirc:"\u00ce","icirc;":"\u00ee",icirc:"\u00ee","Icy;":"\u0418","icy;":"\u0438","Idot;":"\u0130","IEcy;":"\u0415","iecy;":"\u0435","iexcl;":"\u00a1",iexcl:"\u00a1","iff;":"\u21d4","ifr;":"\ud835\udd26","Ifr;":"\u2111","Igrave;":"\u00cc",Igrave:"\u00cc","igrave;":"\u00ec",igrave:"\u00ec","ii;":"\u2148","iiiint;":"\u2a0c","iiint;":"\u222d","iinfin;":"\u29dc","iiota;":"\u2129","IJlig;":"\u0132","ijlig;":"\u0133","Imacr;":"\u012a","imacr;":"\u012b","image;":"\u2111","ImaginaryI;":"\u2148","imagline;":"\u2110","imagpart;":"\u2111","imath;":"\u0131","Im;":"\u2111","imof;":"\u22b7","imped;":"\u01b5","Implies;":"\u21d2","incare;":"\u2105","in;":"\u2208","infin;":"\u221e","infintie;":"\u29dd","inodot;":"\u0131","intcal;":"\u22ba","int;":"\u222b","Int;":"\u222c","integers;":"\u2124","Integral;":"\u222b","intercal;":"\u22ba","Intersection;":"\u22c2","intlarhk;":"\u2a17","intprod;":"\u2a3c","InvisibleComma;":"\u2063","InvisibleTimes;":"\u2062","IOcy;":"\u0401","iocy;":"\u0451","Iogon;":"\u012e","iogon;":"\u012f","Iopf;":"\ud835\udd40","iopf;":"\ud835\udd5a","Iota;":"\u0399","iota;":"\u03b9","iprod;":"\u2a3c","iquest;":"\u00bf",iquest:"\u00bf","iscr;":"\ud835\udcbe","Iscr;":"\u2110","isin;":"\u2208","isindot;":"\u22f5","isinE;":"\u22f9","isins;":"\u22f4","isinsv;":"\u22f3","isinv;":"\u2208","it;":"\u2062","Itilde;":"\u0128","itilde;":"\u0129","Iukcy;":"\u0406","iukcy;":"\u0456","Iuml;":"\u00cf",Iuml:"\u00cf","iuml;":"\u00ef",iuml:"\u00ef","Jcirc;":"\u0134","jcirc;":"\u0135","Jcy;":"\u0419","jcy;":"\u0439","Jfr;":"\ud835\udd0d","jfr;":"\ud835\udd27","jmath;":"\u0237","Jopf;":"\ud835\udd41","jopf;":"\ud835\udd5b","Jscr;":"\ud835\udca5","jscr;":"\ud835\udcbf","Jsercy;":"\u0408","jsercy;":"\u0458","Jukcy;":"\u0404","jukcy;":"\u0454","Kappa;":"\u039a","kappa;":"\u03ba","kappav;":"\u03f0","Kcedil;":"\u0136","kcedil;":"\u0137","Kcy;":"\u041a","kcy;":"\u043a","Kfr;":"\ud835\udd0e","kfr;":"\ud835\udd28","kgreen;":"\u0138","KHcy;":"\u0425","khcy;":"\u0445","KJcy;":"\u040c","kjcy;":"\u045c","Kopf;":"\ud835\udd42","kopf;":"\ud835\udd5c","Kscr;":"\ud835\udca6","kscr;":"\ud835\udcc0","lAarr;":"\u21da","Lacute;":"\u0139","lacute;":"\u013a","laemptyv;":"\u29b4","lagran;":"\u2112","Lambda;":"\u039b","lambda;":"\u03bb","lang;":"\u27e8","Lang;":"\u27ea","langd;":"\u2991","langle;":"\u27e8","lap;":"\u2a85","Laplacetrf;":"\u2112","laquo;":"\u00ab",laquo:"\u00ab","larrb;":"\u21e4","larrbfs;":"\u291f","larr;":"\u2190","Larr;":"\u219e","lArr;":"\u21d0","larrfs;":"\u291d","larrhk;":"\u21a9","larrlp;":"\u21ab","larrpl;":"\u2939","larrsim;":"\u2973","larrtl;":"\u21a2","latail;":"\u2919","lAtail;":"\u291b","lat;":"\u2aab","late;":"\u2aad","lates;":"\u2aad\ufe00","lbarr;":"\u290c","lBarr;":"\u290e","lbbrk;":"\u2772","lbrace;":"{","lbrack;":"[","lbrke;":"\u298b","lbrksld;":"\u298f","lbrkslu;":"\u298d","Lcaron;":"\u013d","lcaron;":"\u013e","Lcedil;":"\u013b","lcedil;":"\u013c","lceil;":"\u2308","lcub;":"{","Lcy;":"\u041b","lcy;":"\u043b","ldca;":"\u2936","ldquo;":"\u201c","ldquor;":"\u201e","ldrdhar;":"\u2967","ldrushar;":"\u294b","ldsh;":"\u21b2","le;":"\u2264","lE;":"\u2266","LeftAngleBracket;":"\u27e8","LeftArrowBar;":"\u21e4","leftarrow;":"\u2190","LeftArrow;":"\u2190","Leftarrow;":"\u21d0","LeftArrowRightArrow;":"\u21c6","leftarrowtail;":"\u21a2","LeftCeiling;":"\u2308","LeftDoubleBracket;":"\u27e6","LeftDownTeeVector;":"\u2961","LeftDownVectorBar;":"\u2959","LeftDownVector;":"\u21c3","LeftFloor;":"\u230a","leftharpoondown;":"\u21bd","leftharpoonup;":"\u21bc","leftleftarrows;":"\u21c7","leftrightarrow;":"\u2194","LeftRightArrow;":"\u2194","Leftrightarrow;":"\u21d4","leftrightarrows;":"\u21c6","leftrightharpoons;":"\u21cb","leftrightsquigarrow;":"\u21ad","LeftRightVector;":"\u294e","LeftTeeArrow;":"\u21a4","LeftTee;":"\u22a3","LeftTeeVector;":"\u295a","leftthreetimes;":"\u22cb","LeftTriangleBar;":"\u29cf","LeftTriangle;":"\u22b2","LeftTriangleEqual;":"\u22b4","LeftUpDownVector;":"\u2951","LeftUpTeeVector;":"\u2960","LeftUpVectorBar;":"\u2958","LeftUpVector;":"\u21bf","LeftVectorBar;":"\u2952","LeftVector;":"\u21bc","lEg;":"\u2a8b","leg;":"\u22da","leq;":"\u2264","leqq;":"\u2266","leqslant;":"\u2a7d","lescc;":"\u2aa8","les;":"\u2a7d","lesdot;":"\u2a7f","lesdoto;":"\u2a81","lesdotor;":"\u2a83","lesg;":"\u22da\ufe00","lesges;":"\u2a93","lessapprox;":"\u2a85","lessdot;":"\u22d6","lesseqgtr;":"\u22da","lesseqqgtr;":"\u2a8b","LessEqualGreater;":"\u22da","LessFullEqual;":"\u2266","LessGreater;":"\u2276","lessgtr;":"\u2276","LessLess;":"\u2aa1","lesssim;":"\u2272","LessSlantEqual;":"\u2a7d","LessTilde;":"\u2272","lfisht;":"\u297c","lfloor;":"\u230a","Lfr;":"\ud835\udd0f","lfr;":"\ud835\udd29","lg;":"\u2276","lgE;":"\u2a91","lHar;":"\u2962","lhard;":"\u21bd","lharu;":"\u21bc","lharul;":"\u296a","lhblk;":"\u2584","LJcy;":"\u0409","ljcy;":"\u0459","llarr;":"\u21c7","ll;":"\u226a","Ll;":"\u22d8","llcorner;":"\u231e","Lleftarrow;":"\u21da","llhard;":"\u296b","lltri;":"\u25fa","Lmidot;":"\u013f","lmidot;":"\u0140","lmoustache;":"\u23b0","lmoust;":"\u23b0","lnap;":"\u2a89","lnapprox;":"\u2a89","lne;":"\u2a87","lnE;":"\u2268","lneq;":"\u2a87","lneqq;":"\u2268","lnsim;":"\u22e6","loang;":"\u27ec","loarr;":"\u21fd","lobrk;":"\u27e6","longleftarrow;":"\u27f5","LongLeftArrow;":"\u27f5","Longleftarrow;":"\u27f8","longleftrightarrow;":"\u27f7","LongLeftRightArrow;":"\u27f7","Longleftrightarrow;":"\u27fa","longmapsto;":"\u27fc","longrightarrow;":"\u27f6","LongRightArrow;":"\u27f6","Longrightarrow;":"\u27f9","looparrowleft;":"\u21ab","looparrowright;":"\u21ac","lopar;":"\u2985","Lopf;":"\ud835\udd43","lopf;":"\ud835\udd5d","loplus;":"\u2a2d","lotimes;":"\u2a34","lowast;":"\u2217","lowbar;":"_","LowerLeftArrow;":"\u2199","LowerRightArrow;":"\u2198","loz;":"\u25ca","lozenge;":"\u25ca","lozf;":"\u29eb","lpar;":"(","lparlt;":"\u2993","lrarr;":"\u21c6","lrcorner;":"\u231f","lrhar;":"\u21cb","lrhard;":"\u296d","lrm;":"\u200e","lrtri;":"\u22bf","lsaquo;":"\u2039","lscr;":"\ud835\udcc1","Lscr;":"\u2112","lsh;":"\u21b0","Lsh;":"\u21b0","lsim;":"\u2272","lsime;":"\u2a8d","lsimg;":"\u2a8f","lsqb;":"[","lsquo;":"\u2018","lsquor;":"\u201a","Lstrok;":"\u0141","lstrok;":"\u0142","ltcc;":"\u2aa6","ltcir;":"\u2a79","lt;":"<",lt:"<","LT;":"<",LT:"<","Lt;":"\u226a","ltdot;":"\u22d6","lthree;":"\u22cb","ltimes;":"\u22c9","ltlarr;":"\u2976","ltquest;":"\u2a7b","ltri;":"\u25c3","ltrie;":"\u22b4","ltrif;":"\u25c2","ltrPar;":"\u2996","lurdshar;":"\u294a","luruhar;":"\u2966","lvertneqq;":"\u2268\ufe00","lvnE;":"\u2268\ufe00","macr;":"\u00af",macr:"\u00af","male;":"\u2642","malt;":"\u2720","maltese;":"\u2720","Map;":"\u2905","map;":"\u21a6","mapsto;":"\u21a6","mapstodown;":"\u21a7","mapstoleft;":"\u21a4","mapstoup;":"\u21a5","marker;":"\u25ae","mcomma;":"\u2a29","Mcy;":"\u041c","mcy;":"\u043c","mdash;":"\u2014","mDDot;":"\u223a","measuredangle;":"\u2221","MediumSpace;":"\u205f","Mellintrf;":"\u2133","Mfr;":"\ud835\udd10","mfr;":"\ud835\udd2a","mho;":"\u2127","micro;":"\u00b5",micro:"\u00b5","midast;":"*","midcir;":"\u2af0","mid;":"\u2223","middot;":"\u00b7",middot:"\u00b7","minusb;":"\u229f","minus;":"\u2212","minusd;":"\u2238","minusdu;":"\u2a2a","MinusPlus;":"\u2213","mlcp;":"\u2adb","mldr;":"\u2026","mnplus;":"\u2213","models;":"\u22a7","Mopf;":"\ud835\udd44","mopf;":"\ud835\udd5e","mp;":"\u2213","mscr;":"\ud835\udcc2","Mscr;":"\u2133","mstpos;":"\u223e","Mu;":"\u039c","mu;":"\u03bc","multimap;":"\u22b8","mumap;":"\u22b8","nabla;":"\u2207","Nacute;":"\u0143","nacute;":"\u0144","nang;":"\u2220\u20d2","nap;":"\u2249","napE;":"\u2a70\u0338","napid;":"\u224b\u0338","napos;":"\u0149","napprox;":"\u2249","natural;":"\u266e","naturals;":"\u2115","natur;":"\u266e","nbsp;":"\u00a0",nbsp:"\u00a0","nbump;":"\u224e\u0338","nbumpe;":"\u224f\u0338","ncap;":"\u2a43","Ncaron;":"\u0147","ncaron;":"\u0148","Ncedil;":"\u0145","ncedil;":"\u0146","ncong;":"\u2247","ncongdot;":"\u2a6d\u0338","ncup;":"\u2a42","Ncy;":"\u041d","ncy;":"\u043d","ndash;":"\u2013","nearhk;":"\u2924","nearr;":"\u2197","neArr;":"\u21d7","nearrow;":"\u2197","ne;":"\u2260","nedot;":"\u2250\u0338","NegativeMediumSpace;":"\u200b","NegativeThickSpace;":"\u200b","NegativeThinSpace;":"\u200b","NegativeVeryThinSpace;":"\u200b","nequiv;":"\u2262","nesear;":"\u2928","nesim;":"\u2242\u0338","NestedGreaterGreater;":"\u226b","NestedLessLess;":"\u226a","NewLine;":"\n","nexist;":"\u2204","nexists;":"\u2204","Nfr;":"\ud835\udd11","nfr;":"\ud835\udd2b","ngE;":"\u2267\u0338","nge;":"\u2271","ngeq;":"\u2271","ngeqq;":"\u2267\u0338","ngeqslant;":"\u2a7e\u0338","nges;":"\u2a7e\u0338","nGg;":"\u22d9\u0338","ngsim;":"\u2275","nGt;":"\u226b\u20d2","ngt;":"\u226f","ngtr;":"\u226f","nGtv;":"\u226b\u0338","nharr;":"\u21ae","nhArr;":"\u21ce","nhpar;":"\u2af2","ni;":"\u220b","nis;":"\u22fc","nisd;":"\u22fa","niv;":"\u220b","NJcy;":"\u040a","njcy;":"\u045a","nlarr;":"\u219a","nlArr;":"\u21cd","nldr;":"\u2025","nlE;":"\u2266\u0338","nle;":"\u2270","nleftarrow;":"\u219a","nLeftarrow;":"\u21cd","nleftrightarrow;":"\u21ae","nLeftrightarrow;":"\u21ce","nleq;":"\u2270","nleqq;":"\u2266\u0338","nleqslant;":"\u2a7d\u0338","nles;":"\u2a7d\u0338","nless;":"\u226e","nLl;":"\u22d8\u0338","nlsim;":"\u2274","nLt;":"\u226a\u20d2","nlt;":"\u226e","nltri;":"\u22ea","nltrie;":"\u22ec","nLtv;":"\u226a\u0338","nmid;":"\u2224","NoBreak;":"\u2060","NonBreakingSpace;":"\u00a0","nopf;":"\ud835\udd5f","Nopf;":"\u2115","Not;":"\u2aec","not;":"\u00ac",not:"\u00ac","NotCongruent;":"\u2262","NotCupCap;":"\u226d","NotDoubleVerticalBar;":"\u2226","NotElement;":"\u2209","NotEqual;":"\u2260","NotEqualTilde;":"\u2242\u0338","NotExists;":"\u2204","NotGreater;":"\u226f","NotGreaterEqual;":"\u2271","NotGreaterFullEqual;":"\u2267\u0338","NotGreaterGreater;":"\u226b\u0338","NotGreaterLess;":"\u2279","NotGreaterSlantEqual;":"\u2a7e\u0338","NotGreaterTilde;":"\u2275","NotHumpDownHump;":"\u224e\u0338","NotHumpEqual;":"\u224f\u0338","notin;":"\u2209","notindot;":"\u22f5\u0338","notinE;":"\u22f9\u0338","notinva;":"\u2209","notinvb;":"\u22f7","notinvc;":"\u22f6","NotLeftTriangleBar;":"\u29cf\u0338","NotLeftTriangle;":"\u22ea","NotLeftTriangleEqual;":"\u22ec","NotLess;":"\u226e","NotLessEqual;":"\u2270","NotLessGreater;":"\u2278","NotLessLess;":"\u226a\u0338","NotLessSlantEqual;":"\u2a7d\u0338","NotLessTilde;":"\u2274","NotNestedGreaterGreater;":"\u2aa2\u0338","NotNestedLessLess;":"\u2aa1\u0338","notni;":"\u220c","notniva;":"\u220c","notnivb;":"\u22fe","notnivc;":"\u22fd","NotPrecedes;":"\u2280","NotPrecedesEqual;":"\u2aaf\u0338","NotPrecedesSlantEqual;":"\u22e0","NotReverseElement;":"\u220c","NotRightTriangleBar;":"\u29d0\u0338","NotRightTriangle;":"\u22eb","NotRightTriangleEqual;":"\u22ed","NotSquareSubset;":"\u228f\u0338","NotSquareSubsetEqual;":"\u22e2","NotSquareSuperset;":"\u2290\u0338","NotSquareSupersetEqual;":"\u22e3","NotSubset;":"\u2282\u20d2","NotSubsetEqual;":"\u2288","NotSucceeds;":"\u2281","NotSucceedsEqual;":"\u2ab0\u0338","NotSucceedsSlantEqual;":"\u22e1","NotSucceedsTilde;":"\u227f\u0338","NotSuperset;":"\u2283\u20d2","NotSupersetEqual;":"\u2289","NotTilde;":"\u2241","NotTildeEqual;":"\u2244","NotTildeFullEqual;":"\u2247","NotTildeTilde;":"\u2249","NotVerticalBar;":"\u2224","nparallel;":"\u2226","npar;":"\u2226","nparsl;":"\u2afd\u20e5","npart;":"\u2202\u0338","npolint;":"\u2a14","npr;":"\u2280","nprcue;":"\u22e0","nprec;":"\u2280","npreceq;":"\u2aaf\u0338","npre;":"\u2aaf\u0338","nrarrc;":"\u2933\u0338","nrarr;":"\u219b","nrArr;":"\u21cf","nrarrw;":"\u219d\u0338","nrightarrow;":"\u219b","nRightarrow;":"\u21cf","nrtri;":"\u22eb","nrtrie;":"\u22ed","nsc;":"\u2281","nsccue;":"\u22e1","nsce;":"\u2ab0\u0338","Nscr;":"\ud835\udca9","nscr;":"\ud835\udcc3","nshortmid;":"\u2224","nshortparallel;":"\u2226","nsim;":"\u2241","nsime;":"\u2244","nsimeq;":"\u2244","nsmid;":"\u2224","nspar;":"\u2226","nsqsube;":"\u22e2","nsqsupe;":"\u22e3","nsub;":"\u2284","nsubE;":"\u2ac5\u0338","nsube;":"\u2288","nsubset;":"\u2282\u20d2","nsubseteq;":"\u2288","nsubseteqq;":"\u2ac5\u0338","nsucc;":"\u2281","nsucceq;":"\u2ab0\u0338","nsup;":"\u2285","nsupE;":"\u2ac6\u0338","nsupe;":"\u2289","nsupset;":"\u2283\u20d2","nsupseteq;":"\u2289","nsupseteqq;":"\u2ac6\u0338","ntgl;":"\u2279","Ntilde;":"\u00d1",Ntilde:"\u00d1","ntilde;":"\u00f1",ntilde:"\u00f1","ntlg;":"\u2278","ntriangleleft;":"\u22ea","ntrianglelefteq;":"\u22ec","ntriangleright;":"\u22eb","ntrianglerighteq;":"\u22ed","Nu;":"\u039d","nu;":"\u03bd","num;":"#","numero;":"\u2116","numsp;":"\u2007","nvap;":"\u224d\u20d2","nvdash;":"\u22ac","nvDash;":"\u22ad","nVdash;":"\u22ae","nVDash;":"\u22af","nvge;":"\u2265\u20d2","nvgt;":">\u20d2","nvHarr;":"\u2904","nvinfin;":"\u29de","nvlArr;":"\u2902","nvle;":"\u2264\u20d2","nvlt;":"<\u20d2","nvltrie;":"\u22b4\u20d2","nvrArr;":"\u2903","nvrtrie;":"\u22b5\u20d2","nvsim;":"\u223c\u20d2","nwarhk;":"\u2923","nwarr;":"\u2196","nwArr;":"\u21d6","nwarrow;":"\u2196","nwnear;":"\u2927","Oacute;":"\u00d3",Oacute:"\u00d3","oacute;":"\u00f3",oacute:"\u00f3","oast;":"\u229b","Ocirc;":"\u00d4",Ocirc:"\u00d4","ocirc;":"\u00f4",ocirc:"\u00f4","ocir;":"\u229a","Ocy;":"\u041e","ocy;":"\u043e","odash;":"\u229d","Odblac;":"\u0150","odblac;":"\u0151","odiv;":"\u2a38","odot;":"\u2299","odsold;":"\u29bc","OElig;":"\u0152","oelig;":"\u0153","ofcir;":"\u29bf","Ofr;":"\ud835\udd12","ofr;":"\ud835\udd2c","ogon;":"\u02db","Ograve;":"\u00d2",Ograve:"\u00d2","ograve;":"\u00f2",ograve:"\u00f2","ogt;":"\u29c1","ohbar;":"\u29b5","ohm;":"\u03a9","oint;":"\u222e","olarr;":"\u21ba","olcir;":"\u29be","olcross;":"\u29bb","oline;":"\u203e","olt;":"\u29c0","Omacr;":"\u014c","omacr;":"\u014d","Omega;":"\u03a9","omega;":"\u03c9","Omicron;":"\u039f","omicron;":"\u03bf","omid;":"\u29b6","ominus;":"\u2296","Oopf;":"\ud835\udd46","oopf;":"\ud835\udd60","opar;":"\u29b7","OpenCurlyDoubleQuote;":"\u201c","OpenCurlyQuote;":"\u2018","operp;":"\u29b9","oplus;":"\u2295","orarr;":"\u21bb","Or;":"\u2a54","or;":"\u2228","ord;":"\u2a5d","order;":"\u2134","orderof;":"\u2134","ordf;":"\u00aa",ordf:"\u00aa","ordm;":"\u00ba",ordm:"\u00ba","origof;":"\u22b6","oror;":"\u2a56","orslope;":"\u2a57","orv;":"\u2a5b","oS;":"\u24c8","Oscr;":"\ud835\udcaa","oscr;":"\u2134","Oslash;":"\u00d8",Oslash:"\u00d8","oslash;":"\u00f8",oslash:"\u00f8","osol;":"\u2298","Otilde;":"\u00d5",Otilde:"\u00d5","otilde;":"\u00f5",otilde:"\u00f5","otimesas;":"\u2a36","Otimes;":"\u2a37","otimes;":"\u2297","Ouml;":"\u00d6",Ouml:"\u00d6","ouml;":"\u00f6",ouml:"\u00f6","ovbar;":"\u233d","OverBar;":"\u203e","OverBrace;":"\u23de","OverBracket;":"\u23b4","OverParenthesis;":"\u23dc","para;":"\u00b6",para:"\u00b6","parallel;":"\u2225","par;":"\u2225","parsim;":"\u2af3","parsl;":"\u2afd","part;":"\u2202","PartialD;":"\u2202","Pcy;":"\u041f","pcy;":"\u043f","percnt;":"%","period;":".","permil;":"\u2030","perp;":"\u22a5","pertenk;":"\u2031","Pfr;":"\ud835\udd13","pfr;":"\ud835\udd2d","Phi;":"\u03a6","phi;":"\u03c6","phiv;":"\u03d5","phmmat;":"\u2133","phone;":"\u260e","Pi;":"\u03a0","pi;":"\u03c0","pitchfork;":"\u22d4","piv;":"\u03d6","planck;":"\u210f","planckh;":"\u210e","plankv;":"\u210f","plusacir;":"\u2a23","plusb;":"\u229e","pluscir;":"\u2a22","plus;":"+","plusdo;":"\u2214","plusdu;":"\u2a25","pluse;":"\u2a72","PlusMinus;":"\u00b1","plusmn;":"\u00b1",plusmn:"\u00b1","plussim;":"\u2a26","plustwo;":"\u2a27","pm;":"\u00b1","Poincareplane;":"\u210c","pointint;":"\u2a15","popf;":"\ud835\udd61","Popf;":"\u2119","pound;":"\u00a3",pound:"\u00a3","prap;":"\u2ab7","Pr;":"\u2abb","pr;":"\u227a","prcue;":"\u227c","precapprox;":"\u2ab7","prec;":"\u227a","preccurlyeq;":"\u227c","Precedes;":"\u227a","PrecedesEqual;":"\u2aaf","PrecedesSlantEqual;":"\u227c","PrecedesTilde;":"\u227e","preceq;":"\u2aaf","precnapprox;":"\u2ab9","precneqq;":"\u2ab5","precnsim;":"\u22e8","pre;":"\u2aaf","prE;":"\u2ab3","precsim;":"\u227e","prime;":"\u2032","Prime;":"\u2033","primes;":"\u2119","prnap;":"\u2ab9","prnE;":"\u2ab5","prnsim;":"\u22e8","prod;":"\u220f","Product;":"\u220f","profalar;":"\u232e","profline;":"\u2312","profsurf;":"\u2313","prop;":"\u221d","Proportional;":"\u221d","Proportion;":"\u2237","propto;":"\u221d","prsim;":"\u227e","prurel;":"\u22b0","Pscr;":"\ud835\udcab","pscr;":"\ud835\udcc5","Psi;":"\u03a8","psi;":"\u03c8","puncsp;":"\u2008","Qfr;":"\ud835\udd14","qfr;":"\ud835\udd2e","qint;":"\u2a0c","qopf;":"\ud835\udd62","Qopf;":"\u211a","qprime;":"\u2057","Qscr;":"\ud835\udcac","qscr;":"\ud835\udcc6","quaternions;":"\u210d","quatint;":"\u2a16","quest;":"?","questeq;":"\u225f","quot;":'"',quot:'"',"QUOT;":'"',QUOT:'"',"rAarr;":"\u21db","race;":"\u223d\u0331","Racute;":"\u0154","racute;":"\u0155","radic;":"\u221a","raemptyv;":"\u29b3","rang;":"\u27e9","Rang;":"\u27eb","rangd;":"\u2992","range;":"\u29a5","rangle;":"\u27e9","raquo;":"\u00bb",raquo:"\u00bb","rarrap;":"\u2975","rarrb;":"\u21e5","rarrbfs;":"\u2920","rarrc;":"\u2933","rarr;":"\u2192","Rarr;":"\u21a0","rArr;":"\u21d2","rarrfs;":"\u291e","rarrhk;":"\u21aa","rarrlp;":"\u21ac","rarrpl;":"\u2945","rarrsim;":"\u2974","Rarrtl;":"\u2916","rarrtl;":"\u21a3","rarrw;":"\u219d","ratail;":"\u291a","rAtail;":"\u291c","ratio;":"\u2236","rationals;":"\u211a","rbarr;":"\u290d","rBarr;":"\u290f","RBarr;":"\u2910","rbbrk;":"\u2773","rbrace;":"}","rbrack;":"]","rbrke;":"\u298c","rbrksld;":"\u298e","rbrkslu;":"\u2990","Rcaron;":"\u0158","rcaron;":"\u0159","Rcedil;":"\u0156","rcedil;":"\u0157","rceil;":"\u2309","rcub;":"}","Rcy;":"\u0420","rcy;":"\u0440","rdca;":"\u2937","rdldhar;":"\u2969","rdquo;":"\u201d","rdquor;":"\u201d","rdsh;":"\u21b3","real;":"\u211c","realine;":"\u211b","realpart;":"\u211c","reals;":"\u211d","Re;":"\u211c","rect;":"\u25ad","reg;":"\u00ae",reg:"\u00ae","REG;":"\u00ae",REG:"\u00ae","ReverseElement;":"\u220b","ReverseEquilibrium;":"\u21cb","ReverseUpEquilibrium;":"\u296f","rfisht;":"\u297d","rfloor;":"\u230b","rfr;":"\ud835\udd2f","Rfr;":"\u211c","rHar;":"\u2964","rhard;":"\u21c1","rharu;":"\u21c0","rharul;":"\u296c","Rho;":"\u03a1","rho;":"\u03c1","rhov;":"\u03f1","RightAngleBracket;":"\u27e9","RightArrowBar;":"\u21e5","rightarrow;":"\u2192","RightArrow;":"\u2192","Rightarrow;":"\u21d2","RightArrowLeftArrow;":"\u21c4","rightarrowtail;":"\u21a3","RightCeiling;":"\u2309","RightDoubleBracket;":"\u27e7","RightDownTeeVector;":"\u295d","RightDownVectorBar;":"\u2955","RightDownVector;":"\u21c2","RightFloor;":"\u230b","rightharpoondown;":"\u21c1","rightharpoonup;":"\u21c0","rightleftarrows;":"\u21c4","rightleftharpoons;":"\u21cc","rightrightarrows;":"\u21c9","rightsquigarrow;":"\u219d","RightTeeArrow;":"\u21a6","RightTee;":"\u22a2","RightTeeVector;":"\u295b","rightthreetimes;":"\u22cc","RightTriangleBar;":"\u29d0","RightTriangle;":"\u22b3","RightTriangleEqual;":"\u22b5","RightUpDownVector;":"\u294f","RightUpTeeVector;":"\u295c","RightUpVectorBar;":"\u2954","RightUpVector;":"\u21be","RightVectorBar;":"\u2953","RightVector;":"\u21c0","ring;":"\u02da","risingdotseq;":"\u2253","rlarr;":"\u21c4","rlhar;":"\u21cc","rlm;":"\u200f","rmoustache;":"\u23b1","rmoust;":"\u23b1","rnmid;":"\u2aee","roang;":"\u27ed","roarr;":"\u21fe","robrk;":"\u27e7","ropar;":"\u2986","ropf;":"\ud835\udd63","Ropf;":"\u211d","roplus;":"\u2a2e","rotimes;":"\u2a35","RoundImplies;":"\u2970","rpar;":")","rpargt;":"\u2994","rppolint;":"\u2a12","rrarr;":"\u21c9","Rrightarrow;":"\u21db","rsaquo;":"\u203a","rscr;":"\ud835\udcc7","Rscr;":"\u211b","rsh;":"\u21b1","Rsh;":"\u21b1","rsqb;":"]","rsquo;":"\u2019","rsquor;":"\u2019","rthree;":"\u22cc","rtimes;":"\u22ca","rtri;":"\u25b9","rtrie;":"\u22b5","rtrif;":"\u25b8","rtriltri;":"\u29ce","RuleDelayed;":"\u29f4","ruluhar;":"\u2968","rx;":"\u211e","Sacute;":"\u015a","sacute;":"\u015b","sbquo;":"\u201a","scap;":"\u2ab8","Scaron;":"\u0160","scaron;":"\u0161","Sc;":"\u2abc","sc;":"\u227b","sccue;":"\u227d","sce;":"\u2ab0","scE;":"\u2ab4","Scedil;":"\u015e","scedil;":"\u015f","Scirc;":"\u015c","scirc;":"\u015d","scnap;":"\u2aba","scnE;":"\u2ab6","scnsim;":"\u22e9","scpolint;":"\u2a13","scsim;":"\u227f","Scy;":"\u0421","scy;":"\u0441","sdotb;":"\u22a1","sdot;":"\u22c5","sdote;":"\u2a66","searhk;":"\u2925","searr;":"\u2198","seArr;":"\u21d8","searrow;":"\u2198","sect;":"\u00a7",sect:"\u00a7","semi;":";","seswar;":"\u2929","setminus;":"\u2216","setmn;":"\u2216","sext;":"\u2736","Sfr;":"\ud835\udd16","sfr;":"\ud835\udd30","sfrown;":"\u2322","sharp;":"\u266f","SHCHcy;":"\u0429","shchcy;":"\u0449","SHcy;":"\u0428","shcy;":"\u0448","ShortDownArrow;":"\u2193","ShortLeftArrow;":"\u2190","shortmid;":"\u2223","shortparallel;":"\u2225","ShortRightArrow;":"\u2192","ShortUpArrow;":"\u2191","shy;":"\u00ad",shy:"\u00ad","Sigma;":"\u03a3","sigma;":"\u03c3","sigmaf;":"\u03c2","sigmav;":"\u03c2","sim;":"\u223c","simdot;":"\u2a6a","sime;":"\u2243","simeq;":"\u2243","simg;":"\u2a9e","simgE;":"\u2aa0","siml;":"\u2a9d","simlE;":"\u2a9f","simne;":"\u2246","simplus;":"\u2a24","simrarr;":"\u2972","slarr;":"\u2190","SmallCircle;":"\u2218","smallsetminus;":"\u2216","smashp;":"\u2a33","smeparsl;":"\u29e4","smid;":"\u2223","smile;":"\u2323","smt;":"\u2aaa","smte;":"\u2aac","smtes;":"\u2aac\ufe00","SOFTcy;":"\u042c","softcy;":"\u044c","solbar;":"\u233f","solb;":"\u29c4","sol;":"/","Sopf;":"\ud835\udd4a","sopf;":"\ud835\udd64","spades;":"\u2660","spadesuit;":"\u2660","spar;":"\u2225","sqcap;":"\u2293","sqcaps;":"\u2293\ufe00","sqcup;":"\u2294","sqcups;":"\u2294\ufe00","Sqrt;":"\u221a","sqsub;":"\u228f","sqsube;":"\u2291","sqsubset;":"\u228f","sqsubseteq;":"\u2291","sqsup;":"\u2290","sqsupe;":"\u2292","sqsupset;":"\u2290","sqsupseteq;":"\u2292","square;":"\u25a1","Square;":"\u25a1","SquareIntersection;":"\u2293","SquareSubset;":"\u228f","SquareSubsetEqual;":"\u2291","SquareSuperset;":"\u2290","SquareSupersetEqual;":"\u2292","SquareUnion;":"\u2294","squarf;":"\u25aa","squ;":"\u25a1","squf;":"\u25aa","srarr;":"\u2192","Sscr;":"\ud835\udcae","sscr;":"\ud835\udcc8","ssetmn;":"\u2216","ssmile;":"\u2323","sstarf;":"\u22c6","Star;":"\u22c6","star;":"\u2606","starf;":"\u2605","straightepsilon;":"\u03f5","straightphi;":"\u03d5","strns;":"\u00af","sub;":"\u2282","Sub;":"\u22d0","subdot;":"\u2abd","subE;":"\u2ac5","sube;":"\u2286","subedot;":"\u2ac3","submult;":"\u2ac1","subnE;":"\u2acb","subne;":"\u228a","subplus;":"\u2abf","subrarr;":"\u2979","subset;":"\u2282","Subset;":"\u22d0","subseteq;":"\u2286","subseteqq;":"\u2ac5","SubsetEqual;":"\u2286","subsetneq;":"\u228a","subsetneqq;":"\u2acb","subsim;":"\u2ac7","subsub;":"\u2ad5","subsup;":"\u2ad3","succapprox;":"\u2ab8","succ;":"\u227b","succcurlyeq;":"\u227d","Succeeds;":"\u227b","SucceedsEqual;":"\u2ab0","SucceedsSlantEqual;":"\u227d","SucceedsTilde;":"\u227f","succeq;":"\u2ab0","succnapprox;":"\u2aba","succneqq;":"\u2ab6","succnsim;":"\u22e9","succsim;":"\u227f","SuchThat;":"\u220b","sum;":"\u2211","Sum;":"\u2211","sung;":"\u266a","sup1;":"\u00b9",sup1:"\u00b9","sup2;":"\u00b2",sup2:"\u00b2","sup3;":"\u00b3",sup3:"\u00b3","sup;":"\u2283","Sup;":"\u22d1","supdot;":"\u2abe","supdsub;":"\u2ad8","supE;":"\u2ac6","supe;":"\u2287","supedot;":"\u2ac4","Superset;":"\u2283","SupersetEqual;":"\u2287","suphsol;":"\u27c9","suphsub;":"\u2ad7","suplarr;":"\u297b","supmult;":"\u2ac2","supnE;":"\u2acc","supne;":"\u228b","supplus;":"\u2ac0","supset;":"\u2283","Supset;":"\u22d1","supseteq;":"\u2287","supseteqq;":"\u2ac6","supsetneq;":"\u228b","supsetneqq;":"\u2acc","supsim;":"\u2ac8","supsub;":"\u2ad4","supsup;":"\u2ad6","swarhk;":"\u2926","swarr;":"\u2199","swArr;":"\u21d9","swarrow;":"\u2199","swnwar;":"\u292a","szlig;":"\u00df",szlig:"\u00df","Tab;":" ","target;":"\u2316","Tau;":"\u03a4","tau;":"\u03c4","tbrk;":"\u23b4","Tcaron;":"\u0164","tcaron;":"\u0165","Tcedil;":"\u0162","tcedil;":"\u0163","Tcy;":"\u0422","tcy;":"\u0442","tdot;":"\u20db","telrec;":"\u2315","Tfr;":"\ud835\udd17","tfr;":"\ud835\udd31","there4;":"\u2234","therefore;":"\u2234","Therefore;":"\u2234","Theta;":"\u0398","theta;":"\u03b8","thetasym;":"\u03d1","thetav;":"\u03d1","thickapprox;":"\u2248","thicksim;":"\u223c","ThickSpace;":"\u205f\u200a","ThinSpace;":"\u2009","thinsp;":"\u2009","thkap;":"\u2248","thksim;":"\u223c","THORN;":"\u00de",THORN:"\u00de","thorn;":"\u00fe",thorn:"\u00fe","tilde;":"\u02dc","Tilde;":"\u223c","TildeEqual;":"\u2243","TildeFullEqual;":"\u2245","TildeTilde;":"\u2248","timesbar;":"\u2a31","timesb;":"\u22a0","times;":"\u00d7",times:"\u00d7","timesd;":"\u2a30","tint;":"\u222d","toea;":"\u2928","topbot;":"\u2336","topcir;":"\u2af1","top;":"\u22a4","Topf;":"\ud835\udd4b","topf;":"\ud835\udd65","topfork;":"\u2ada","tosa;":"\u2929","tprime;":"\u2034","trade;":"\u2122","TRADE;":"\u2122","triangle;":"\u25b5","triangledown;":"\u25bf","triangleleft;":"\u25c3","trianglelefteq;":"\u22b4","triangleq;":"\u225c","triangleright;":"\u25b9","trianglerighteq;":"\u22b5","tridot;":"\u25ec","trie;":"\u225c","triminus;":"\u2a3a","TripleDot;":"\u20db","triplus;":"\u2a39","trisb;":"\u29cd","tritime;":"\u2a3b","trpezium;":"\u23e2","Tscr;":"\ud835\udcaf","tscr;":"\ud835\udcc9","TScy;":"\u0426","tscy;":"\u0446","TSHcy;":"\u040b","tshcy;":"\u045b","Tstrok;":"\u0166","tstrok;":"\u0167","twixt;":"\u226c","twoheadleftarrow;":"\u219e","twoheadrightarrow;":"\u21a0","Uacute;":"\u00da",Uacute:"\u00da","uacute;":"\u00fa",uacute:"\u00fa","uarr;":"\u2191","Uarr;":"\u219f","uArr;":"\u21d1","Uarrocir;":"\u2949","Ubrcy;":"\u040e","ubrcy;":"\u045e","Ubreve;":"\u016c","ubreve;":"\u016d","Ucirc;":"\u00db",Ucirc:"\u00db","ucirc;":"\u00fb",ucirc:"\u00fb","Ucy;":"\u0423","ucy;":"\u0443","udarr;":"\u21c5","Udblac;":"\u0170","udblac;":"\u0171","udhar;":"\u296e","ufisht;":"\u297e","Ufr;":"\ud835\udd18","ufr;":"\ud835\udd32","Ugrave;":"\u00d9",Ugrave:"\u00d9","ugrave;":"\u00f9",ugrave:"\u00f9","uHar;":"\u2963","uharl;":"\u21bf","uharr;":"\u21be","uhblk;":"\u2580","ulcorn;":"\u231c","ulcorner;":"\u231c","ulcrop;":"\u230f","ultri;":"\u25f8","Umacr;":"\u016a","umacr;":"\u016b","uml;":"\u00a8",uml:"\u00a8","UnderBar;":"_","UnderBrace;":"\u23df","UnderBracket;":"\u23b5","UnderParenthesis;":"\u23dd","Union;":"\u22c3","UnionPlus;":"\u228e","Uogon;":"\u0172","uogon;":"\u0173","Uopf;":"\ud835\udd4c","uopf;":"\ud835\udd66","UpArrowBar;":"\u2912","uparrow;":"\u2191","UpArrow;":"\u2191","Uparrow;":"\u21d1","UpArrowDownArrow;":"\u21c5","updownarrow;":"\u2195","UpDownArrow;":"\u2195","Updownarrow;":"\u21d5","UpEquilibrium;":"\u296e","upharpoonleft;":"\u21bf","upharpoonright;":"\u21be","uplus;":"\u228e","UpperLeftArrow;":"\u2196","UpperRightArrow;":"\u2197","upsi;":"\u03c5","Upsi;":"\u03d2","upsih;":"\u03d2","Upsilon;":"\u03a5","upsilon;":"\u03c5","UpTeeArrow;":"\u21a5","UpTee;":"\u22a5","upuparrows;":"\u21c8","urcorn;":"\u231d","urcorner;":"\u231d","urcrop;":"\u230e","Uring;":"\u016e","uring;":"\u016f","urtri;":"\u25f9","Uscr;":"\ud835\udcb0","uscr;":"\ud835\udcca","utdot;":"\u22f0","Utilde;":"\u0168","utilde;":"\u0169","utri;":"\u25b5","utrif;":"\u25b4","uuarr;":"\u21c8","Uuml;":"\u00dc",Uuml:"\u00dc","uuml;":"\u00fc",uuml:"\u00fc","uwangle;":"\u29a7","vangrt;":"\u299c","varepsilon;":"\u03f5","varkappa;":"\u03f0","varnothing;":"\u2205","varphi;":"\u03d5","varpi;":"\u03d6","varpropto;":"\u221d","varr;":"\u2195","vArr;":"\u21d5","varrho;":"\u03f1","varsigma;":"\u03c2","varsubsetneq;":"\u228a\ufe00","varsubsetneqq;":"\u2acb\ufe00","varsupsetneq;":"\u228b\ufe00","varsupsetneqq;":"\u2acc\ufe00","vartheta;":"\u03d1","vartriangleleft;":"\u22b2","vartriangleright;":"\u22b3","vBar;":"\u2ae8","Vbar;":"\u2aeb","vBarv;":"\u2ae9","Vcy;":"\u0412","vcy;":"\u0432","vdash;":"\u22a2","vDash;":"\u22a8","Vdash;":"\u22a9","VDash;":"\u22ab","Vdashl;":"\u2ae6","veebar;":"\u22bb","vee;":"\u2228","Vee;":"\u22c1","veeeq;":"\u225a","vellip;":"\u22ee","verbar;":"|","Verbar;":"\u2016","vert;":"|","Vert;":"\u2016","VerticalBar;":"\u2223","VerticalLine;":"|","VerticalSeparator;":"\u2758","VerticalTilde;":"\u2240","VeryThinSpace;":"\u200a","Vfr;":"\ud835\udd19","vfr;":"\ud835\udd33","vltri;":"\u22b2","vnsub;":"\u2282\u20d2","vnsup;":"\u2283\u20d2","Vopf;":"\ud835\udd4d","vopf;":"\ud835\udd67","vprop;":"\u221d","vrtri;":"\u22b3","Vscr;":"\ud835\udcb1","vscr;":"\ud835\udccb","vsubnE;":"\u2acb\ufe00","vsubne;":"\u228a\ufe00","vsupnE;":"\u2acc\ufe00","vsupne;":"\u228b\ufe00","Vvdash;":"\u22aa","vzigzag;":"\u299a","Wcirc;":"\u0174","wcirc;":"\u0175","wedbar;":"\u2a5f","wedge;":"\u2227","Wedge;":"\u22c0","wedgeq;":"\u2259","weierp;":"\u2118","Wfr;":"\ud835\udd1a","wfr;":"\ud835\udd34","Wopf;":"\ud835\udd4e","wopf;":"\ud835\udd68","wp;":"\u2118","wr;":"\u2240","wreath;":"\u2240","Wscr;":"\ud835\udcb2","wscr;":"\ud835\udccc","xcap;":"\u22c2","xcirc;":"\u25ef","xcup;":"\u22c3","xdtri;":"\u25bd","Xfr;":"\ud835\udd1b","xfr;":"\ud835\udd35","xharr;":"\u27f7","xhArr;":"\u27fa","Xi;":"\u039e","xi;":"\u03be","xlarr;":"\u27f5","xlArr;":"\u27f8","xmap;":"\u27fc","xnis;":"\u22fb","xodot;":"\u2a00","Xopf;":"\ud835\udd4f","xopf;":"\ud835\udd69","xoplus;":"\u2a01","xotime;":"\u2a02","xrarr;":"\u27f6","xrArr;":"\u27f9","Xscr;":"\ud835\udcb3","xscr;":"\ud835\udccd","xsqcup;":"\u2a06","xuplus;":"\u2a04","xutri;":"\u25b3","xvee;":"\u22c1","xwedge;":"\u22c0","Yacute;":"\u00dd",Yacute:"\u00dd","yacute;":"\u00fd",yacute:"\u00fd","YAcy;":"\u042f","yacy;":"\u044f","Ycirc;":"\u0176","ycirc;":"\u0177","Ycy;":"\u042b","ycy;":"\u044b","yen;":"\u00a5",yen:"\u00a5","Yfr;":"\ud835\udd1c","yfr;":"\ud835\udd36","YIcy;":"\u0407","yicy;":"\u0457","Yopf;":"\ud835\udd50","yopf;":"\ud835\udd6a","Yscr;":"\ud835\udcb4","yscr;":"\ud835\udcce","YUcy;":"\u042e","yucy;":"\u044e","yuml;":"\u00ff",yuml:"\u00ff","Yuml;":"\u0178","Zacute;":"\u0179","zacute;":"\u017a","Zcaron;":"\u017d","zcaron;":"\u017e","Zcy;":"\u0417","zcy;":"\u0437","Zdot;":"\u017b","zdot;":"\u017c","zeetrf;":"\u2128","ZeroWidthSpace;":"\u200b","Zeta;":"\u0396","zeta;":"\u03b6","zfr;":"\ud835\udd37","Zfr;":"\u2128","ZHcy;":"\u0416","zhcy;":"\u0436","zigrarr;":"\u21dd","zopf;":"\ud835\udd6b","Zopf;":"\u2124","Zscr;":"\ud835\udcb5","zscr;":"\ud835\udccf","zwj;":"\u200d","zwnj;":"\u200c"}},{}],13:[function(e,t,n){function u(e,t){return r.isUndefined(t)?""+t:r.isNumber(t)&&(isNaN(t)||!isFinite(t))?t.toString():r.isFunction(t)||r.isRegExp(t)?t.toString():t}function a(e,t){return r.isString(e)?e.length<t?e:e.slice(0,t):e}function f(e){return a(JSON.stringify(e.actual,u),128)+" "+e.operator+" "+a(JSON.stringify(e.expected,u),128)}function l(e,t,n,r,i){throw new o.AssertionError({message:n,actual:e,expected:t,operator:r,stackStartFunction:i})}function c(e,t){e||l(e,!0,t,"==",o.ok)}function h(e,t){if(e===t)return!0;if(r.isBuffer(e)&&r.isBuffer(t)){if(e.length!=t.length)return!1;for(var n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}return r.isDate(e)&&r.isDate(t)?e.getTime()===t.getTime():r.isRegExp(e)&&r.isRegExp(t)?e.source===t.source&&e.global===t.global&&e.multiline===t.multiline&&e.lastIndex===t.lastIndex&&e.ignoreCase===t.ignoreCase:!r.isObject(e)&&!r.isObject(t)?e==t:d(e,t)}function p(e){return Object.prototype.toString.call(e)=="[object Arguments]"}function d(e,t){if(r.isNullOrUndefined(e)||r.isNullOrUndefined(t))return!1;if(e.prototype!==t.prototype)return!1;if(p(e))return p(t)?(e=i.call(e),t=i.call(t),h(e,t)):!1;try{var n=g(e),s=g(t),o,u}catch(a){return!1}if(n.length!=s.length)return!1;n.sort(),s.sort();for(u=n.length-1;u>=0;u--)if(n[u]!=s[u])return!1;for(u=n.length-1;u>=0;u--){o=n[u];if(!h(e[o],t[o]))return!1}return!0}function v(e,t){return!e||!t?!1:Object.prototype.toString.call(t)=="[object RegExp]"?t.test(e):e instanceof t?!0:t.call({},e)===!0?!0:!1}function m(e,t,n,i){var s;r.isString(n)&&(i=n,n=null);try{t()}catch(o){s=o}i=(n&&n.name?" ("+n.name+").":".")+(i?" "+i:"."),e&&!s&&l(s,n,"Missing expected exception"+i),!e&&v(s,n)&&l(s,n,"Got unwanted exception"+i);if(e&&s&&n&&!v(s,n)||!e&&s)throw s}var r=e("util/"),i=Array.prototype.slice,s=Object.prototype.hasOwnProperty,o=t.exports=c;o.AssertionError=function(t){this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=f(this),this.generatedMessage=!0);var n=t.stackStartFunction||l;if(Error.captureStackTrace)Error.captureStackTrace(this,n);else{var r=new Error;if(r.stack){var i=r.stack,s=n.name,o=i.indexOf("\n"+s);if(o>=0){var u=i.indexOf("\n",o+1);i=i.substring(u+1)}this.stack=i}}},r.inherits(o.AssertionError,Error),o.fail=l,o.ok=c,o.equal=function(t,n,r){t!=n&&l(t,n,r,"==",o.equal)},o.notEqual=function(t,n,r){t==n&&l(t,n,r,"!=",o.notEqual)},o.deepEqual=function(t,n,r){h(t,n)||l(t,n,r,"deepEqual",o.deepEqual)},o.notDeepEqual=function(t,n,r){h(t,n)&&l(t,n,r,"notDeepEqual",o.notDeepEqual)},o.strictEqual=function(t,n,r){t!==n&&l(t,n,r,"===",o.strictEqual)},o.notStrictEqual=function(t,n,r){t===n&&l(t,n,r,"!==",o.notStrictEqual)},o.throws=function(e,t,n){m.apply(this,[!0].concat(i.call(arguments)))},o.doesNotThrow=function(e,t){m.apply(this,[!1].concat(i.call(arguments)))},o.ifError=function(e){if(e)throw e};var g=Object.keys||function(e){var t=[];for(var n in e)s.call(e,n)&&t.push(n);return t}},{"util/":15}],14:[function(e,t,n){t.exports=function(t){return t&&typeof t=="object"&&typeof t.copy=="function"&&typeof t.fill=="function"&&typeof t.readUInt8=="function"}},{}],15:[function(e,t,n){(function(t,r){function u(e,t){var r={seen:[],stylize:f};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),y(t)?r.showHidden=t:t&&n._extend(r,t),T(r.showHidden)&&(r.showHidden=!1),T(r.depth)&&(r.depth=2),T(r.colors)&&(r.colors=!1),T(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=a),c(r,e,r.depth)}function a(e,t){var n=u.styles[t];return n?"["+u.colors[n][0]+"m"+e+"["+u.colors[n][1]+"m":e}function f(e,t){return e}function l(e){var t={};return e.forEach(function(e,n){t[e]=!0}),t}function c(e,t,r){if(e.customInspect&&t&&A(t.inspect)&&t.inspect!==n.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(r,e);return S(i)||(i=c(e,i,r)),i}var s=h(e,t);if(s)return s;var o=Object.keys(t),u=l(o);e.showHidden&&(o=Object.getOwnPropertyNames(t));if(L(t)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return p(t);if(o.length===0){if(A(t)){var a=t.name?": "+t.name:"";return e.stylize("[Function"+a+"]","special")}if(N(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(k(t))return e.stylize(Date.prototype.toString.call(t),"date");if(L(t))return p(t)}var f="",y=!1,b=["{","}"];g(t)&&(y=!0,b=["[","]"]);if(A(t)){var w=t.name?": "+t.name:"";f=" [Function"+w+"]"}N(t)&&(f=" "+RegExp.prototype.toString.call(t)),k(t)&&(f=" "+Date.prototype.toUTCString.call(t)),L(t)&&(f=" "+p(t));if(o.length!==0||!!y&&t.length!=0){if(r<0)return N(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var E;return y?E=d(e,t,r,u,o):E=o.map(function(n){return v(e,t,r,u,n,y)}),e.seen.pop(),m(E,f,b)}return b[0]+f+b[1]}function h(e,t){if(T(t))return e.stylize("undefined","undefined");if(S(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(E(t))return e.stylize(""+t,"number");if(y(t))return e.stylize(""+t,"boolean");if(b(t))return e.stylize("null","null")}function p(e){return"["+Error.prototype.toString.call(e)+"]"}function d(e,t,n,r,i){var s=[];for(var o=0,u=t.length;o<u;++o)H(t,String(o))?s.push(v(e,t,n,r,String(o),!0)):s.push("");return i.forEach(function(i){i.match(/^\d+$/)||s.push(v(e,t,n,r,i,!0))}),s}function v(e,t,n,r,i,s){var o,u,a;a=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]},a.get?a.set?u=e.stylize("[Getter/Setter]","special"):u=e.stylize("[Getter]","special"):a.set&&(u=e.stylize("[Setter]","special")),H(r,i)||(o="["+i+"]"),u||(e.seen.indexOf(a.value)<0?(b(n)?u=c(e,a.value,null):u=c(e,a.value,n-1),u.indexOf("\n")>-1&&(s?u=u.split("\n").map(function(e){return" "+e}).join("\n").substr(2):u="\n"+u.split("\n").map(function(e){return" "+e}).join("\n"))):u=e.stylize("[Circular]","special"));if(T(o)){if(s&&i.match(/^\d+$/))return u;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+u}function m(e,t,n){var r=0,i=e.reduce(function(e,t){return r++,t.indexOf("\n")>=0&&r++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?n[0]+(t===""?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1]:n[0]+t+" "+e.join(", ")+" "+n[1]}function g(e){return Array.isArray(e)}function y(e){return typeof e=="boolean"}function b(e){return e===null}function w(e){return e==null}function E(e){return typeof e=="number"}function S(e){return typeof e=="string"}function x(e){return typeof e=="symbol"}function T(e){return e===void 0}function N(e){return C(e)&&M(e)==="[object RegExp]"}function C(e){return typeof e=="object"&&e!==null}function k(e){return C(e)&&M(e)==="[object Date]"}function L(e){return C(e)&&(M(e)==="[object Error]"||e instanceof Error)}function A(e){return typeof e=="function"}function O(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"||typeof e=="symbol"||typeof e=="undefined"}function M(e){return Object.prototype.toString.call(e)}function _(e){return e<10?"0"+e.toString(10):e.toString(10)}function P(){var e=new Date,t=[_(e.getHours()),_(e.getMinutes()),_(e.getSeconds())].join(":");return[e.getDate(),D[e.getMonth()],t].join(" ")}function H(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var i=/%[sdj%]/g;n.format=function(e){if(!S(e)){var t=[];for(var n=0;n<arguments.length;n++)t.push(u(arguments[n]));return t.join(" ")}var n=1,r=arguments,s=r.length,o=String(e).replace(i,function(e){if(e==="%%")return"%";if(n>=s)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(t){return"[Circular]"};default:return e}});for(var a=r[n];n<s;a=r[++n])b(a)||!C(a)?o+=" "+a:o+=" "+u(a);return o},n.deprecate=function(e,i){function o(){if(!s){if(t.throwDeprecation)throw new Error(i);t.traceDeprecation?console.trace(i):console.error(i),s=!0}return e.apply(this,arguments)}if(T(r.process))return function(){return n.deprecate(e,i).apply(this,arguments)};if(t.noDeprecation===!0)return e;var s=!1;return o};var s={},o;n.debuglog=function(e){T(o)&&(o=t.env.NODE_DEBUG||""),e=e.toUpperCase();if(!s[e])if((new RegExp("\\b"+e+"\\b","i")).test(o)){var r=t.pid;s[e]=function(){var t=n.format.apply(n,arguments);console.error("%s %d: %s",e,r,t)}}else s[e]=function(){};return s[e]},n.inspect=u,u.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},u.styles={special:"cyan",number:"yellow","boolean":"yellow","undefined":"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},n.isArray=g,n.isBoolean=y,n.isNull=b,n.isNullOrUndefined=w,n.isNumber=E,n.isString=S,n.isSymbol=x,n.isUndefined=T,n.isRegExp=N,n.isObject=C,n.isDate=k,n.isError=L,n.isFunction=A,n.isPrimitive=O,n.isBuffer=e("./support/isBuffer");var D=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];n.log=function(){console.log("%s - %s",P(),n.format.apply(n,arguments))},n.inherits=e("inherits"),n._extend=function(e,t){if(!t||!C(t))return e;var n=Object.keys(t),r=n.length;while(r--)e[n[r]]=t[n[r]];return e}}).call(this,e("/usr/local/lib/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js"),typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{"./support/isBuffer":14,"/usr/local/lib/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":18,inherits:17}],16:[function(e,t,n){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||undefined}function i(e){return typeof e=="function"}function s(e){return typeof e=="number"}function o(e){return typeof e=="object"&&e!==null}function u(e){return e===void 0}t.exports=r,r.EventEmitter=r,r.prototype._events=undefined,r.prototype._maxListeners=undefined,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(!s(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,n,r,s,a,f;this._events||(this._events={});if(e==="error")if(!this._events.error||o(this._events.error)&&!this._events.error.length)throw t=arguments[1],t instanceof Error?t:TypeError('Uncaught, unspecified "error" event.');n=this._events[e];if(u(n))return!1;if(i(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:r=arguments.length,s=new Array(r-1);for(a=1;a<r;a++)s[a-1]=arguments[a];n.apply(this,s)}else if(o(n)){r=arguments.length,s=new Array(r-1);for(a=1;a<r;a++)s[a-1]=arguments[a];f=n.slice(),r=f.length;for(a=0;a<r;a++)f[a].apply(this,s)}return!0},r.prototype.addListener=function(e,t){var n;if(!i(t))throw TypeError("listener must be a function");this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,i(t.listener)?t.listener:t),this._events[e]?o(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t;if(o(this._events[e])&&!this._events[e].warned){var n;u(this._maxListeners)?n=r.defaultMaxListeners:n=this._maxListeners,n&&n>0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),console.trace())}return this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function r(){this.removeListener(e,r),n||(n=!0,t.apply(this,arguments))}if(!i(t))throw TypeError("listener must be a function");var n=!1;return r.listener=t,this.on(e,r),this},r.prototype.removeListener=function(e,t){var n,r,s,u;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;n=this._events[e],s=n.length,r=-1;if(n===t||i(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(n)){for(u=s;u-->0;)if(n[u]===t||n[u].listener&&n[u].listener===t){r=u;break}if(r<0)return this;n.length===1?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return arguments.length===0?this._events={}:this._events[e]&&delete this._events[e],this;if(arguments.length===0){for(t in this._events){if(t==="removeListener")continue;this.removeAllListeners(t)}return this.removeAllListeners("removeListener"),this._events={},this}n=this._events[e];if(i(n))this.removeListener(e,n);else while(n.length)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return!this._events||!this._events[e]?t=[]:i(this._events[e])?t=[this._events[e]]:t=this._events[e].slice(),t},r.listenerCount=function(e,t){var n;return!e._events||!e._events[t]?n=0:i(e._events[t])?n=1:n=e._events[t].length,n}},{}],17:[function(e,t,n){typeof Object.create=="function"?t.exports=function(t,n){t.super_=n,t.prototype=Object.create(n.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,n){t.super_=n;var r=function(){};r.prototype=n.prototype,t.prototype=new r,t.prototype.constructor=t}},{}],18:[function(e,t,n){function i(){}var r=t.exports={};r.nextTick=function(){var e=typeof window!="undefined"&&window.setImmediate,t=typeof window!="undefined"&&window.postMessage&&window.addEventListener;if(e)return function(e){return window.setImmediate(e)};if(t){var n=[];return window.addEventListener("message",function(e){var t=e.source;if((t===window||t===null)&&e.data==="process-tick"){e.stopPropagation();if(n.length>0){var r=n.shift();r()}}},!0),function(t){n.push(t),window.postMessage("process-tick","*")}}return function(t){setTimeout(t,0)}}(),r.title="browser",r.browser=!0,r.env={},r.argv=[],r.on=i,r.once=i,r.off=i,r.emit=i,r.binding=function(e){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(e){throw new Error("process.chdir is not supported")}},{}],19:[function(e,t,n){t.exports=e(14)},{}],20:[function(e,t,n){t.exports=e(15)},{"./support/isBuffer":19,"/usr/local/lib/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":18,inherits:17}]},{},[9])(9)}),ace.define("ace/mode/html_worker",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/worker/mirror","ace/mode/html/saxparser"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("../worker/mirror").Mirror,o=e("./html/saxparser").SAXParser,u={"expected-doctype-but-got-start-tag":"info","expected-doctype-but-got-chars":"info","non-html-root":"info"},a=t.Worker=function(e){s.call(this,e),this.setTimeout(400),this.context=null};r.inherits(a,s),function(){this.setOptions=function(e){this.context=e.context},this.onUpdate=function(){var e=this.doc.getValue();if(!e)return;var t=new o,n=[],r=function(){};t.contentHandler={startDocument:r,endDocument:r,startElement:r,endElement:r,characters:r},t.errorHandler={error:function(e,t,r){n.push({row:t.line,column:t.column,text:e,type:u[r]||"error"})}},this.context?t.parseFragment(e,this.context):t.parse(e),this.sender.emit("error",n)}}.call(a.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _=" \n \f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}}) \ No newline at end of file
diff --git a/library/ace/worker-javascript.js b/library/ace/worker-javascript.js
new file mode 100644
index 000000000..bca38f057
--- /dev/null
+++ b/library/ace/worker-javascript.js
@@ -0,0 +1 @@
+"no use strict";(function(e){function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")return i+r;if(i)return i.location.replace(/\/*$/,"/")+(r||i.main||i.name);if(i===!1)return"";var s=n.lastIndexOf("/");if(s===-1)break;r=n.substr(s)+r,n=n.slice(0,s)}return e}if(typeof e.window!="undefined"&&e.document)return;if(e.require&&e.define)return;e.console||(e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console),e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,data:i.data,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(r,i){i||(i=r,r=null);if(!i.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");i=e.normalizeModule(r,i);var s=e.require.modules[i];if(s)return s.initialized||(s.initialized=!0,s.exports=s.factory().exports),s.exports;if(!e.require.tlns)return console.log("unable to load "+i);var o=t(i,e.require.tlns);return o.slice(-3)!=".js"&&(o+=".js"),e.require.id=i,e.require.modules[i]={},importScripts(o),e.require(r,i)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},require.tlns={},e.initBaseUrls=function(t){for(var n in t)require.tlns[n]=t[n]},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var n=e.main=null,r=e.sender=null;e.onmessage=function(t){var i=t.data;if(i.event&&r)r._signal(i.event,i.data);else if(i.command)if(n[i.command])n[i.command].apply(n,i.args);else{if(!e[i.command])throw new Error("Unknown command:"+i.command);e[i.command].apply(e,i.args)}else if(i.init){e.initBaseUrls(i.tlns),require("ace/lib/es5-shim"),r=e.sender=e.initSender();var s=require(i.module)[i.classname];n=e.main=new s(r)}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,n){"use strict";function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: "+t}function i(e,t){return t.row>=0&&t.row<e.length&&t.column>=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.column<t.column;return e.row<t.row||e.row==t.row&&r}function t(t,n,r){var i=t.action=="insert",s=(i?1:-1)*(t.end.row-t.start.row),o=(i?1:-1)*(t.end.column-t.start.column),u=t.start,a=i?u:t.end;return e(n,u,r)?{row:n.row,column:n.column}:e(a,n,!r)?{row:n.row+s,column:n.column+(n.row==a.row?o:0)}:{row:u.row,column:u.column}}r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){if(e.start.row==e.end.row&&e.start.row!=this.row)return;if(e.start.row>this.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e<this.getLength()?(t=t.concat([""]),n=0):(t=[""].concat(t),e--,n=this.$lines[e].length),this.insertMergedLines({row:e,column:n},t)},this.insertMergedLines=function(e,t){var n=this.clippedPos(e.row,e.column),r={row:n.row+t.length-1,column:(t.length==1?n.column:0)+t[t.length-1].length};return this.applyDelta({start:n,end:r,action:"insert",lines:t}),this.clonePos(r)},this.remove=function(e){var t=this.clippedPos(e.start.row,e.start.column),n=this.clippedPos(e.end.row,e.end.column);return this.applyDelta({start:t,end:n,action:"remove",lines:this.getLinesForRange({start:t,end:n})}),this.clonePos(t)},this.removeInLine=function(e,t,n){var r=this.clippedPos(e,t),i=this.clippedPos(e,n);return this.applyDelta({start:r,end:i,action:"remove",lines:this.getLinesForRange({start:r,end:i})},!0),this.clonePos(r)},this.removeFullLines=function(e,t){e=Math.min(Math.max(0,e),this.getLength()-1),t=Math.min(Math.max(0,t),this.getLength()-1);var n=t==this.getLength()-1&&e>0,r=t<this.getLength()-1,i=n?e-1:e,s=n?this.getLine(i).length:0,u=r?t+1:t,a=r?0:this.getLine(u).length,f=new o(i,s,u,a),l=this.$lines.slice(e,t+1);return this.applyDelta({start:f.start,end:f.end,action:"remove",lines:this.getLinesForRange(f)}),l},this.removeNewLine=function(e){e<this.getLength()-1&&e>=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++)this.applyDelta(e[t])},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(a.prototype),t.Document=a}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function s(e){if(typeof e!="object"||!e)return e;var t;if(Array.isArray(e)){t=[];for(var n=0;n<e.length;n++)t[n]=s(e[n]);return t}var r=e.constructor;if(r===RegExp)return e;t=r();for(var n in e)t[n]=s(e[n]);return t},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/worker/mirror",["require","exports","module","ace/range","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../document").Document,s=e("../lib/lang"),o=t.Mirror=function(e){this.sender=e;var t=this.doc=new i(""),n=this.deferredUpdate=s.delayedCall(this.onUpdate.bind(this)),r=this;e.on("change",function(e){var i=e.data;if(i[0].start)t.applyDeltas(i);else for(var s=0;s<i.length;s+=2){if(Array.isArray(i[s+1]))var o={action:"insert",start:i[s],lines:i[s+1]};else var o={action:"remove",start:i[s],end:i[s+1]};t.applyDelta(o,!0)}if(r.$timeout)return n.schedule(r.$timeout);r.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(o.prototype)}),ace.define("ace/mode/javascript/jshint",["require","exports","module"],function(e,t,n){n.exports=function r(t,n,i){function o(u,a){if(!n[u]){if(!t[u]){var f=typeof e=="function"&&e;if(!a&&f)return f(u,!0);if(s)return s(u,!0);var l=new Error("Cannot find module '"+u+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[u]={exports:{}};t[u][0].call(c.exports,function(e){var n=t[u][1][e];return o(n?n:e)},c,c.exports,r,t,n,i)}return n[u].exports}var s=typeof e=="function"&&e;for(var u=0;u<i.length;u++)o(i[u]);return o(i[0])}({"/node_modules/browserify/node_modules/events/events.js":[function(e,t,n){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||undefined}function i(e){return typeof e=="function"}function s(e){return typeof e=="number"}function o(e){return typeof e=="object"&&e!==null}function u(e){return e===void 0}t.exports=r,r.EventEmitter=r,r.prototype._events=undefined,r.prototype._maxListeners=undefined,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(!s(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,n,r,s,a,f;this._events||(this._events={});if(e==="error")if(!this._events.error||o(this._events.error)&&!this._events.error.length)throw t=arguments[1],t instanceof Error?t:TypeError('Uncaught, unspecified "error" event.');n=this._events[e];if(u(n))return!1;if(i(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:r=arguments.length,s=new Array(r-1);for(a=1;a<r;a++)s[a-1]=arguments[a];n.apply(this,s)}else if(o(n)){r=arguments.length,s=new Array(r-1);for(a=1;a<r;a++)s[a-1]=arguments[a];f=n.slice(),r=f.length;for(a=0;a<r;a++)f[a].apply(this,s)}return!0},r.prototype.addListener=function(e,t){var n;if(!i(t))throw TypeError("listener must be a function");this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,i(t.listener)?t.listener:t),this._events[e]?o(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t;if(o(this._events[e])&&!this._events[e].warned){var n;u(this._maxListeners)?n=r.defaultMaxListeners:n=this._maxListeners,n&&n>0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),typeof console.trace=="function"&&console.trace())}return this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function r(){this.removeListener(e,r),n||(n=!0,t.apply(this,arguments))}if(!i(t))throw TypeError("listener must be a function");var n=!1;return r.listener=t,this.on(e,r),this},r.prototype.removeListener=function(e,t){var n,r,s,u;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;n=this._events[e],s=n.length,r=-1;if(n===t||i(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(n)){for(u=s;u-->0;)if(n[u]===t||n[u].listener&&n[u].listener===t){r=u;break}if(r<0)return this;n.length===1?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return arguments.length===0?this._events={}:this._events[e]&&delete this._events[e],this;if(arguments.length===0){for(t in this._events){if(t==="removeListener")continue;this.removeAllListeners(t)}return this.removeAllListeners("removeListener"),this._events={},this}n=this._events[e];if(i(n))this.removeListener(e,n);else while(n.length)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return!this._events||!this._events[e]?t=[]:i(this._events[e])?t=[this._events[e]]:t=this._events[e].slice(),t},r.listenerCount=function(e,t){var n;return!e._events||!e._events[t]?n=0:i(e._events[t])?n=1:n=e._events[t].length,n}},{}],"/node_modules/jshint/data/ascii-identifier-data.js":[function(e,t,n){var r=[];for(var i=0;i<128;i++)r[i]=i===36||i>=65&&i<=90||i===95||i>=97&&i<=122;var s=[];for(var i=0;i<128;i++)s[i]=r[i]||i>=48&&i<=57;t.exports={asciiIdentifierStartTable:r,asciiIdentifierPartTable:s}},{}],"/node_modules/jshint/lodash.js":[function(e,t,n){(function(e){(function(){function $(e,t,n){var r=e.length,i=n?r:-1;while(n?i--:++i<r)if(t(e[i],i,e))return i;return-1}function J(e,t,n){if(t!==t)return G(e,n);var r=n-1,i=e.length;while(++r<i)if(e[r]===t)return r;return-1}function K(e){return typeof e=="function"||!1}function Q(e){return typeof e=="string"?e:e==null?"":e+""}function G(e,t,n){var r=e.length,i=t+(n?0:-1);while(n?i--:++i<r){var s=e[i];if(s!==s)return i}return-1}function Y(e){return!!e&&typeof e=="object"}function Ct(){}function Lt(e,t){var n=-1,r=e.length;t||(t=Array(r));while(++n<r)t[n]=e[n];return t}function At(e,t){var n=-1,r=e.length;while(++n<r)if(t(e[n],n,e)===!1)break;return e}function Ot(e,t){var n=-1,r=e.length,i=-1,s=[];while(++n<r){var o=e[n];t(o,n,e)&&(s[++i]=o)}return s}function Mt(e,t){var n=-1,r=e.length,i=Array(r);while(++n<r)i[n]=t(e[n],n,e);return i}function _t(e){var t=-1,n=e.length,r=wt;while(++t<n){var i=e[t];i>r&&(r=i)}return r}function Dt(e,t){var n=-1,r=e.length;while(++n<r)if(t(e[n],n,e))return!0;return!1}function Pt(e,t,n){var i=rr(t);lt.apply(i,bn(t));var s=-1,o=i.length;while(++s<o){var u=i[s],a=e[u],f=n(a,t[u],u,e,t);if((f===f?f!==a:a===a)||a===r&&!(u in e))e[u]=f}return e}function Bt(e,t,n){n||(n={});var r=-1,i=t.length;while(++r<i){var s=t[r];n[s]=e[s]}return n}function jt(e,t,n){var i=typeof e;return i=="function"?t===r?e:on(e,t,n):e==null?lr:i=="object"?Jt(e):t===r?cr(e):Kt(e,t)}function Ft(e,t,n,i,s,u,a){var f;n&&(f=s?n(e,i,s):n(e));if(f!==r)return f;if(!Jn(e))return e;var l=Xn(e);if(l){f=wn(e);if(!t)return Lt(e,f)}else{var h=rt.call(e),p=h==c;if(!(h==d||h==o||p&&!s))return F[h]?Sn(e,h,t):s?e:{};f=En(p?{}:e);if(!t)return Ht(f,e)}u||(u=[]),a||(a=[]);var v=u.length;while(v--)if(u[v]==e)return a[v];return u.push(e),a.push(f),(l?At:zt)(e,function(r,i){f[i]=Ft(r,t,n,i,e,u,a)}),f}function qt(e,t){var n=[];return It(e,function(e,r,i){t(e,r,i)&&n.push(e)}),n}function Ut(e,t){return Rt(e,t,ir)}function zt(e,t){return Rt(e,t,rr)}function Wt(e,t,n){if(e==null)return;n!==r&&n in On(e)&&(t=[n]);var i=-1,s=t.length;while(e!=null&&++i<s)var o=e=e[t[i]];return o}function Xt(e,t,n,r,i,s){if(e===t)return e!==0||1/e==1/t;var o=typeof e,u=typeof t;return o!="function"&&o!="object"&&u!="function"&&u!="object"||e==null||t==null?e!==e&&t!==t:Vt(e,t,Xt,n,r,i,s)}function Vt(e,t,n,r,i,s,a){var f=Xn(e),l=Xn(t),c=u,h=u;f||(c=rt.call(e),c==o?c=d:c!=d&&(f=Zn(e))),l||(h=rt.call(t),h==o?h=d:h!=d&&(l=Zn(t)));var p=c==d,v=h==d,m=c==h;if(m&&!f&&!p)return dn(e,t,c);if(!i){var g=p&&nt.call(e,"__wrapped__"),y=v&&nt.call(t,"__wrapped__");if(g||y)return n(g?e.value():e,y?t.value():t,r,i,s,a)}if(!m)return!1;s||(s=[]),a||(a=[]);var b=s.length;while(b--)if(s[b]==e)return a[b]==t;s.push(e),a.push(t);var w=(f?pn:vn)(e,t,n,r,i,s,a);return s.pop(),a.pop(),w}function $t(e,t,n,i,s){var o=-1,u=t.length,a=!s;while(++o<u)if(a&&i[o]?n[o]!==e[t[o]]:!(t[o]in e))return!1;o=-1;while(++o<u){var f=t[o],l=e[f],c=n[o];if(a&&i[o])var h=l!==r||f in e;else h=s?s(l,c,f):r,h===r&&(h=Xt(c,l,s,!0));if(!h)return!1}return!0}function Jt(e){var t=rr(e),n=t.length;if(!n)return fr(!0);if(n==1){var i=t[0],s=e[i];if(kn(s))return function(e){return e==null?!1:e[i]===s&&(s!==r||i in On(e))}}var o=Array(n),u=Array(n);while(n--)s=e[t[n]],o[n]=s,u[n]=kn(s);return function(e){return e!=null&&$t(On(e),t,o,u)}}function Kt(e,t){var n=Xn(e),i=Nn(e)&&kn(t),s=e+"";return e=Mn(e),function(o){if(o==null)return!1;var u=s;o=On(o);if((n||!i)&&!(u in o)){o=e.length==1?o:Wt(o,en(e,0,-1));if(o==null)return!1;u=Pn(e),o=On(o)}return o[u]===t?t!==r||u in o:Xt(t,o[u],null,!0)}}function Qt(e,t,n,i,s){if(!Jn(e))return e;var o=Cn(t.length)&&(Xn(t)||Zn(t));if(!o){var u=rr(t);lt.apply(u,bn(t))}return At(u||t,function(a,f){u&&(f=a,a=t[f]);if(Y(a))i||(i=[]),s||(s=[]),Gt(e,t,f,Qt,n,i,s);else{var l=e[f],c=n?n(l,a,f,e,t):r,h=c===r;h&&(c=a),(o||c!==r)&&(h||(c===c?c!==l:l===l))&&(e[f]=c)}}),e}function Gt(e,t,n,i,s,o,u){var a=o.length,f=t[n];while(a--)if(o[a]==f){e[n]=u[a];return}var l=e[n],c=s?s(l,f,n,e,t):r,h=c===r;h&&(c=f,Cn(f.length)&&(Xn(f)||Zn(f))?c=Xn(l)?l:yn(l)?Lt(l):[]:Gn(f)||Wn(f)?c=Wn(l)?er(l):Gn(l)?l:{}:h=!1),o.push(f),u.push(c);if(h)e[n]=i(c,f,s,o,u);else if(c===c?c!==l:l===l)e[n]=c}function Yt(e){return function(t){return t==null?r:t[e]}}function Zt(e){var t=e+"";return e=Mn(e),function(n){return Wt(n,e,t)}}function en(e,t,n){var i=-1,s=e.length;t=t==null?0:+t||0,t<0&&(t=-t>s?0:s+t),n=n===r||n>s?s:+n||0,n<0&&(n+=s),s=t>n?0:n-t>>>0,t>>>=0;var o=Array(s);while(++i<s)o[i]=e[i+t];return o}function tn(e,t){var n;return It(e,function(e,r,i){return n=t(e,r,i),!n}),!!n}function nn(e,t){var n=-1,r=t.length,i=Array(r);while(++n<r)i[n]=e[t[n]];return i}function rn(e,t,n){var r=0,i=e?e.length:r;if(typeof t=="number"&&t===t&&i<=xt){while(r<i){var s=r+i>>>1,o=e[s];(n?o<=t:o<t)?r=s+1:i=s}return i}return sn(e,t,lr,n)}function sn(e,t,n,i){t=n(t);var s=0,o=e?e.length:0,u=t!==t,a=t===r;while(s<o){var f=ut((s+o)/2),l=n(e[f]),c=l===l;if(u)var h=c||i;else a?h=c&&(i||l!==r):h=i?l<=t:l<t;h?s=f+1:o=f}return bt(o,St)}function on(e,t,n){if(typeof e!="function")return lr;if(t===r)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 3:return function(n,r,i){return e.call(t,n,r,i)};case 4:return function(n,r,i,s){return e.call(t,n,r,i,s)};case 5:return function(n,r,i,s,o){return e.call(t,n,r,i,s,o)}}return function(){return e.apply(t,arguments)}}function un(e){return ot.call(e,0)}function an(e){return Un(function(t,n){var r=-1,i=t==null?0:n.length,s=i>2&&n[i-2],o=i>2&&n[2],u=i>1&&n[i-1];typeof s=="function"?(s=on(s,u,5),i-=2):(s=typeof u=="function"?u:null,i-=s?1:0),o&&Tn(n[0],n[1],o)&&(s=i<3?null:s,i=1);while(++r<i){var a=n[r];a&&e(t,a,s)}return t})}function fn(e,t){return function(n,r){var i=n?yn(n):0;if(!Cn(i))return e(n,r);var s=t?i:-1,o=On(n);while(t?s--:++s<i)if(r(o[s],s,o)===!1)break;return n}}function ln(e){return function(t,n,r){var i=On(t),s=r(t),o=s.length,u=e?o:-1;while(e?u--:++u<o){var a=s[u];if(n(i[a],a,i)===!1)break}return t}}function cn(e){return function(t,n,r){return!t||!t.length?-1:(n=mn(n,r,3),$(t,n,e))}}function hn(e,t){return function(n,i,s){return typeof i=="function"&&s===r&&Xn(n)?e(n,i):t(n,on(i,s,3))}}function pn(e,t,n,i,s,o,u){var a=-1,f=e.length,l=t.length,c=!0;if(f!=l&&!(s&&l>f))return!1;while(c&&++a<f){var h=e[a],p=t[a];c=r,i&&(c=s?i(p,h,a):i(h,p,a));if(c===r)if(s){var d=l;while(d--){p=t[d],c=h&&h===p||n(h,p,i,s,o,u);if(c)break}}else c=h&&h===p||n(h,p,i,s,o,u)}return!!c}function dn(e,t,n){switch(n){case a:case f:return+e==+t;case l:return e.name==t.name&&e.message==t.message;case p:return e!=+e?t!=+t:e==0?1/e==1/t:e==+t;case v:case g:return e==t+""}return!1}function vn(e,t,n,i,s,o,u){var a=rr(e),f=a.length,l=rr(t),c=l.length;if(f!=c&&!s)return!1;var h=s,p=-1;while(++p<f){var d=a[p],v=s?d in t:nt.call(t,d);if(v){var m=e[d],g=t[d];v=r,i&&(v=s?i(g,m,d):i(m,g,d)),v===r&&(v=m&&m===g||n(m,g,i,s,o,u))}if(!v)return!1;h||(h=d=="constructor")}if(!h){var y=e.constructor,b=t.constructor;if(y!=b&&"constructor"in e&&"constructor"in t&&!(typeof y=="function"&&y instanceof y&&typeof b=="function"&&b instanceof b))return!1}return!0}function mn(e,t,n){var r=Ct.callback||ar;return r=r===ar?jt:r,n?r(e,t,n):r}function gn(e,t,n){var r=Ct.indexOf||Dn;return r=r===Dn?J:r,e?r(e,t,n):r}function wn(e){var t=e.length,n=new e.constructor(t);return t&&typeof e[0]=="string"&&nt.call(e,"index")&&(n.index=e.index,n.input=e.input),n}function En(e){var t=e.constructor;return typeof t=="function"&&t instanceof t||(t=Object),new t}function Sn(e,t,n){var r=e.constructor;switch(t){case b:return un(e);case a:case f:return new r(+e);case w:case E:case S:case x:case T:case N:case C:case k:case L:var i=e.buffer;return new r(n?un(i):i,e.byteOffset,e.length);case p:case g:return new r(e);case v:var s=new r(e.source,H.exec(e));s.lastIndex=e.lastIndex}return s}function xn(e,t){return e=+e,t=t==null?Nt:t,e>-1&&e%1==0&&e<t}function Tn(e,t,n){if(!Jn(n))return!1;var r=typeof t;if(r=="number")var i=yn(n),s=Cn(i)&&xn(t,i);else s=r=="string"&&t in n;if(s){var o=n[t];return e===e?e===o:o!==o}return!1}function Nn(e,t){var n=typeof e;if(n=="string"&&O.test(e)||n=="number")return!0;if(Xn(e))return!1;var r=!A.test(e);return r||t!=null&&e in On(t)}function Cn(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Nt}function kn(e){return e===e&&(e===0?1/e>0:!Jn(e))}function Ln(e){var t,n=Ct.support;if(!Y(e)||rt.call(e)!=d||!nt.call(e,"constructor")&&(t=e.constructor,typeof t=="function"&&!(t instanceof t)))return!1;var i;return Ut(e,function(e,t){i=t}),i===r||nt.call(e,i)}function An(e){var t=ir(e),n=t.length,r=n&&e.length,i=Ct.support,s=r&&Cn(r)&&(Xn(e)||i.nonEnumArgs&&Wn(e)),o=-1,u=[];while(++o<n){var a=t[o];(s&&xn(a,r)||nt.call(e,a))&&u.push(a)}return u}function On(e){return Jn(e)?e:Object(e)}function Mn(e){if(Xn(e))return e;var t=[];return Q(e).replace(M,function(e,n,r,i){t.push(r?i.replace(P,"$1"):n||e)}),t}function Dn(e,t,n){var r=e?e.length:0;if(!r)return-1;if(typeof n=="number")n=n<0?yt(r+n,0):n;else if(n){var i=rn(e,t),s=e[i];return(t===t?t===s:s!==s)?i:-1}return J(e,t,n||0)}function Pn(e){var t=e?e.length:0;return t?e[t-1]:r}function Hn(e,t,n){var r=e?e.length:0;return r?(n&&typeof n!="number"&&Tn(e,t,n)&&(t=0,n=r),en(e,t,n)):[]}function Bn(e){var t=-1,n=(e&&e.length&&_t(Mt(e,yn)))>>>0,r=Array(n);while(++t<n)r[t]=Mt(e,Yt(t));return r}function In(e,t,n,r){var i=e?yn(e):0;return Cn(i)||(e=or(e),i=e.length),i?(typeof n!="number"||r&&Tn(t,n,r)?n=0:n=n<0?yt(i+n,0):n||0,typeof e=="string"||!Xn(e)&&Yn(e)?n<i&&e.indexOf(t,n)>-1:gn(e,t,n)>-1):!1}function qn(e,t,n){var r=Xn(e)?Ot:qt;return t=mn(t,n,3),r(e,function(e,n,r){return!t(e,n,r)})}function Rn(e,t,n){var i=Xn(e)?Dt:tn;n&&Tn(e,t,n)&&(t=null);if(typeof t!="function"||n!==r)t=mn(t,n,3);return i(e,t)}function Un(e,t){if(typeof e!="function")throw new TypeError(s);return t=yt(t===r?e.length-1:+t||0,0),function(){var n=arguments,r=-1,i=yt(n.length-t,0),s=Array(i);while(++r<i)s[r]=n[t+r];switch(t){case 0:return e.call(this,s);case 1:return e.call(this,n[0],s);case 2:return e.call(this,n[0],n[1],s)}var o=Array(t+1);r=-1;while(++r<t)o[r]=n[r];return o[t]=s,e.apply(this,o)}}function zn(e,t,n,r){return t&&typeof t!="boolean"&&Tn(e,t,n)?t=!1:typeof t=="function"&&(r=n,n=t,t=!1),n=typeof n=="function"&&on(n,r,1),Ft(e,t,n)}function Wn(e){var t=Y(e)?e.length:r;return Cn(t)&&rt.call(e)==o}function Vn(e){if(e==null)return!0;var t=yn(e);return Cn(t)&&(Xn(e)||Yn(e)||Wn(e)||Y(e)&&$n(e.splice))?!t:!rr(e).length}function Jn(e){var t=typeof e;return t=="function"||!!e&&t=="object"}function Kn(e){return e==null?!1:rt.call(e)==c?it.test(tt.call(e)):Y(e)&&B.test(e)}function Qn(e){return typeof e=="number"||Y(e)&&rt.call(e)==p}function Yn(e){return typeof e=="string"||Y(e)&&rt.call(e)==g}function Zn(e){return Y(e)&&Cn(e.length)&&!!j[rt.call(e)]}function er(e){return Bt(e,ir(e))}function nr(e,t){if(e==null)return!1;var n=nt.call(e,t);return!n&&!Nn(t)&&(t=Mn(t),e=t.length==1?e:Wt(e,en(t,0,-1)),t=Pn(t),n=e!=null&&nt.call(e,t)),n}function ir(e){if(e==null)return[];Jn(e)||(e=Object(e));var t=e.length;t=t&&Cn(t)&&(Xn(e)||kt.nonEnumArgs&&Wn(e))&&t||0;var n=e.constructor,r=-1,i=typeof n=="function"&&n.prototype===e,s=Array(t),o=t>0;while(++r<t)s[r]=r+"";for(var u in e)(!o||!xn(u,t))&&(u!="constructor"||!i&&!!nt.call(e,u))&&s.push(u);return s}function or(e){return nn(e,rr(e))}function ur(e){return e=Q(e),e&&D.test(e)?e.replace(_,"\\$&"):e}function ar(e,t,n){return n&&Tn(e,t,n)&&(t=null),jt(e,t)}function fr(e){return function(){return e}}function lr(e){return e}function cr(e){return Nn(e)?Yt(e):Zt(e)}var r,i="3.7.0",s="Expected a function",o="[object Arguments]",u="[object Array]",a="[object Boolean]",f="[object Date]",l="[object Error]",c="[object Function]",h="[object Map]",p="[object Number]",d="[object Object]",v="[object RegExp]",m="[object Set]",g="[object String]",y="[object WeakMap]",b="[object ArrayBuffer]",w="[object Float32Array]",E="[object Float64Array]",S="[object Int8Array]",x="[object Int16Array]",T="[object Int32Array]",N="[object Uint8Array]",C="[object Uint8ClampedArray]",k="[object Uint16Array]",L="[object Uint32Array]",A=/\.|\[(?:[^[\]]+|(["'])(?:(?!\1)[^\n\\]|\\.)*?)\1\]/,O=/^\w*$/,M=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,_=/[.*+?^${}()|[\]\/\\]/g,D=RegExp(_.source),P=/\\(\\)?/g,H=/\w*$/,B=/^\[object .+?Constructor\]$/,j={};j[w]=j[E]=j[S]=j[x]=j[T]=j[N]=j[C]=j[k]=j[L]=!0,j[o]=j[u]=j[b]=j[a]=j[f]=j[l]=j[c]=j[h]=j[p]=j[d]=j[v]=j[m]=j[g]=j[y]=!1;var F={};F[o]=F[u]=F[b]=F[a]=F[f]=F[w]=F[E]=F[S]=F[x]=F[T]=F[p]=F[d]=F[v]=F[g]=F[N]=F[C]=F[k]=F[L]=!0,F[l]=F[c]=F[h]=F[m]=F[y]=!1;var I={"function":!0,object:!0},q=I[typeof n]&&n&&!n.nodeType&&n,R=I[typeof t]&&t&&!t.nodeType&&t,U=q&&R&&typeof e=="object"&&e&&e.Object&&e,z=I[typeof self]&&self&&self.Object&&self,W=I[typeof window]&&window&&window.Object&&window,X=R&&R.exports===q&&q,V=U||W!==(this&&this.window)&&W||z||this,Z=Array.prototype,et=Object.prototype,tt=Function.prototype.toString,nt=et.hasOwnProperty,rt=et.toString,it=RegExp("^"+ur(rt).replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),st=Kn(st=V.ArrayBuffer)&&st,ot=Kn(ot=st&&(new st(0)).slice)&&ot,ut=Math.floor,at=Kn(at=Object.getOwnPropertySymbols)&&at,ft=Kn(ft=Object.getPrototypeOf)&&ft,lt=Z.push,ct=Kn(Object.preventExtensions=Object.preventExtensions)&&ct,ht=et.propertyIsEnumerable,pt=Kn(pt=V.Uint8Array)&&pt,dt=function(){try{var e=Kn(e=V.Float64Array)&&e,t=new e(new st(10),0,1)&&e}catch(n){}return t}(),vt=function(){var e={1:0},t=ct&&Kn(t=Object.assign)&&t;try{t(ct(e),"xo")}catch(n){}return!e[1]&&t}(),mt=Kn(mt=Array.isArray)&&mt,gt=Kn(gt=Object.keys)&&gt,yt=Math.max,bt=Math.min,wt=Number.NEGATIVE_INFINITY,Et=Math.pow(2,32)-1,St=Et-1,xt=Et>>>1,Tt=dt?dt.BYTES_PER_ELEMENT:0,Nt=Math.pow(2,53)-1,kt=Ct.support={};(function(e){var t=function(){this.x=e},n={0:e,length:e},r=[];t.prototype={valueOf:e,y:e};for(var i in new t)r.push(i);kt.funcDecomp=/\bthis\b/.test(function(){return this}),kt.funcNames=typeof Function.name=="string";try{kt.nonEnumArgs=!ht.call(arguments,1)}catch(s){kt.nonEnumArgs=!0}})(1,0);var Ht=vt||function(e,t){return t==null?e:Bt(t,bn(t),Bt(t,rr(t),e))},It=fn(zt),Rt=ln();ot||(un=!st||!pt?fr(null):function(e){var t=e.byteLength,n=dt?ut(t/Tt):0,r=n*Tt,i=new st(t);if(n){var s=new dt(i,0,n);s.set(new dt(e,0,n))}return t!=r&&(s=new pt(i,r),s.set(new pt(e,r))),i});var yn=Yt("length"),bn=at?function(e){return at(On(e))}:fr([]),_n=cn(!0),jn=Un(Bn),Fn=hn(At,It),Xn=mt||function(e){return Y(e)&&Cn(e.length)&&rt.call(e)==u},$n=K(/x/)||pt&&!K(pt)?function(e){return rt.call(e)==c}:K,Gn=ft?function(e){if(!e||rt.call(e)!=d)return!1;var t=e.valueOf,n=Kn(t)&&(n=ft(t))&&ft(n);return n?e==n||ft(e)==n:Ln(e)}:Ln,tr=an(function(e,t,n){return n?Pt(e,t,n):Ht(e,t)}),rr=gt?function(e){if(e)var t=e.constructor,n=e.length;return typeof t=="function"&&t.prototype===e||typeof e!="function"&&Cn(n)?An(e):Jn(e)?gt(e):[]}:An,sr=an(Qt);Ct.assign=tr,Ct.callback=ar,Ct.constant=fr,Ct.forEach=Fn,Ct.keys=rr,Ct.keysIn=ir,Ct.merge=sr,Ct.property=cr,Ct.reject=qn,Ct.restParam=Un,Ct.slice=Hn,Ct.toPlainObject=er,Ct.unzip=Bn,Ct.values=or,Ct.zip=jn,Ct.each=Fn,Ct.extend=tr,Ct.iteratee=ar,Ct.clone=zn,Ct.escapeRegExp=ur,Ct.findLastIndex=_n,Ct.has=nr,Ct.identity=lr,Ct.includes=In,Ct.indexOf=Dn,Ct.isArguments=Wn,Ct.isArray=Xn,Ct.isEmpty=Vn,Ct.isFunction=$n,Ct.isNative=Kn,Ct.isNumber=Qn,Ct.isObject=Jn,Ct.isPlainObject=Gn,Ct.isString=Yn,Ct.isTypedArray=Zn,Ct.last=Pn,Ct.some=Rn,Ct.any=Rn,Ct.contains=In,Ct.include=In,Ct.VERSION=i,q&&R?X?(R.exports=Ct)._=Ct:q._=Ct:V._=Ct}).call(this)}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{}],"/node_modules/jshint/src/jshint.js":[function(e,t,n){var r=e("../lodash"),i=e("events"),s=e("./vars.js"),o=e("./messages.js"),u=e("./lex.js").Lexer,a=e("./reg.js"),f=e("./state.js").state,l=e("./style.js"),c=e("./options.js"),h=e("./scope-manager.js"),p=function(){"use strict";function k(e,t){return e=e.trim(),/^[+-]W\d{3}$/g.test(e)?!0:c.validNames.indexOf(e)===-1&&t.type!=="jslint"&&!r.has(c.removed,e)?(q("E001",t,e),!1):!0}function L(e){return Object.prototype.toString.call(e)==="[object String]"}function A(e,t){return e?!e.identifier||e.value!==t?!1:!0:!1}function O(e){if(!e.reserved)return!1;var t=e.meta;if(t&&t.isFutureReservedWord&&f.inES5()){if(!t.es5)return!1;if(t.strictOnly&&!f.option.strict&&!f.isStrict())return!1;if(e.isProperty)return!1}return!0}function M(e,t){return e.replace(/\{([^{}]*)\}/g,function(e,n){var r=t[n];return typeof r=="string"||typeof r=="number"?r:e})}function D(e,t){Object.keys(t).forEach(function(n){if(r.has(p.blacklist,n))return;e[n]=t[n]})}function P(){if(f.option.enforceall){for(var e in c.bool.enforcing)f.option[e]===undefined&&!c.noenforceall[e]&&(f.option[e]=!0);for(var t in c.bool.relaxing)f.option[t]===undefined&&(f.option[t]=!1)}}function H(){P(),!f.option.esversion&&!f.option.moz&&(f.option.es3?f.option.esversion=3:f.option.esnext?f.option.esversion=6:f.option.esversion=5),f.inES5()&&D(S,s.ecmaIdentifiers[5]),f.inES6()&&D(S,s.ecmaIdentifiers[6]),f.option.module&&(f.option.strict===!0&&(f.option.strict="global"),f.inES6()||F("W134",f.tokens.next,"module",6)),f.option.couch&&D(S,s.couch),f.option.qunit&&D(S,s.qunit),f.option.rhino&&D(S,s.rhino),f.option.shelljs&&(D(S,s.shelljs),D(S,s.node)),f.option.typed&&D(S,s.typed),f.option.phantom&&(D(S,s.phantom),f.option.strict===!0&&(f.option.strict="global")),f.option.prototypejs&&D(S,s.prototypejs),f.option.node&&(D(S,s.node),D(S,s.typed),f.option.strict===!0&&(f.option.strict="global")),f.option.devel&&D(S,s.devel),f.option.dojo&&D(S,s.dojo),f.option.browser&&(D(S,s.browser),D(S,s.typed)),f.option.browserify&&(D(S,s.browser),D(S,s.typed),D(S,s.browserify),f.option.strict===!0&&(f.option.strict="global")),f.option.nonstandard&&D(S,s.nonstandard),f.option.jasmine&&D(S,s.jasmine),f.option.jquery&&D(S,s.jquery),f.option.mootools&&D(S,s.mootools),f.option.worker&&D(S,s.worker),f.option.wsh&&D(S,s.wsh),f.option.globalstrict&&f.option.strict!==!1&&(f.option.strict="global"),f.option.yui&&D(S,s.yui),f.option.mocha&&D(S,s.mocha)}function B(e,t,n){var r=Math.floor(t/f.lines.length*100),i=o.errors[e].desc;throw{name:"JSHintError",line:t,character:n,message:i+" ("+r+"% scanned).",raw:i,code:e}}function j(){var e=f.ignoredLines;if(r.isEmpty(e))return;p.errors=r.reject(p.errors,function(t){return e[t.line]})}function F(e,t,n,r,i,s){var u,a,l,c;if(/^W\d{3}$/.test(e)){if(f.ignored[e])return;c=o.warnings[e]}else/E\d{3}/.test(e)?c=o.errors[e]:/I\d{3}/.test(e)&&(c=o.info[e]);return t=t||f.tokens.next||{},t.id==="(end)"&&(t=f.tokens.curr),a=t.line||0,u=t.from||0,l={id:"(error)",raw:c.desc,code:c.code,evidence:f.lines[a-1]||"",line:a,character:u,scope:p.scope,a:n,b:r,c:i,d:s},l.reason=M(c.desc,l),p.errors.push(l),j(),p.errors.length>=f.option.maxerr&&B("E043",a,u),l}function I(e,t,n,r,i,s,o){return F(e,{line:t,from:n},r,i,s,o)}function q(e,t,n,r,i,s){F(e,t,n,r,i,s)}function R(e,t,n,r,i,s,o){return q(e,{line:t,from:n},r,i,s,o)}function U(e,t){var n;return n={id:"(internal)",elem:e,value:t},p.internals.push(n),n}function z(){var e=f.tokens.next,t=e.body.match(/(-\s+)?[^\s,:]+(?:\s*:\s*(-\s+)?[^\s,]+)?/g)||[],i={};if(e.type==="globals"){t.forEach(function(n,r){n=n.split(":");var s=(n[0]||"").trim(),o=(n[1]||"").trim();if(s==="-"||!s.length){if(r>0&&r===t.length-1)return;q("E002",e);return}s.charAt(0)==="-"?(s=s.slice(1),o=!1,p.blacklist[s]=s,delete S[s]):i[s]=o==="true"}),D(S,i);for(var s in i)r.has(i,s)&&(n[s]=e)}e.type==="exported"&&t.forEach(function(n,r){if(!n.length){if(r>0&&r===t.length-1)return;q("E002",e);return}f.funct["(scope)"].addExported(n)}),e.type==="members"&&(E=E||{},t.forEach(function(e){var t=e.charAt(0),n=e.charAt(e.length-1);t===n&&(t==='"'||t==="'")&&(e=e.substr(1,e.length-2).replace('\\"','"')),E[e]=!1}));var o=["maxstatements","maxparams","maxdepth","maxcomplexity","maxerr","maxlen","indent"];if(e.type==="jshint"||e.type==="jslint")t.forEach(function(t){t=t.split(":");var n=(t[0]||"").trim(),i=(t[1]||"").trim();if(!k(n,e))return;if(o.indexOf(n)>=0){if(i!=="false"){i=+i;if(typeof i!="number"||!isFinite(i)||i<=0||Math.floor(i)!==i){q("E032",e,t[1].trim());return}f.option[n]=i}else f.option[n]=n==="indent"?4:!1;return}if(n==="validthis"){if(f.funct["(global)"])return void q("E009");if(i!=="true"&&i!=="false")return void q("E002",e);f.option.validthis=i==="true";return}if(n==="quotmark"){switch(i){case"true":case"false":f.option.quotmark=i==="true";break;case"double":case"single":f.option.quotmark=i;break;default:q("E002",e)}return}if(n==="shadow"){switch(i){case"true":f.option.shadow=!0;break;case"outer":f.option.shadow="outer";break;case"false":case"inner":f.option.shadow="inner";break;default:q("E002",e)}return}if(n==="unused"){switch(i){case"true":f.option.unused=!0;break;case"false":f.option.unused=!1;break;case"vars":case"strict":f.option.unused=i;break;default:q("E002",e)}return}if(n==="latedef"){switch(i){case"true":f.option.latedef=!0;break;case"false":f.option.latedef=!1;break;case"nofunc":f.option.latedef="nofunc";break;default:q("E002",e)}return}if(n==="ignore"){switch(i){case"line":f.ignoredLines[e.line]=!0,j();break;default:q("E002",e)}return}if(n==="strict"){switch(i){case"true":f.option.strict=!0;break;case"false":f.option.strict=!1;break;case"func":case"global":case"implied":f.option.strict=i;break;default:q("E002",e)}return}n==="module"&&(zt(f.funct)||q("E055",f.tokens.next,"module"));var s={es3:3,es5:5,esnext:6};if(r.has(s,n)){switch(i){case"true":f.option.moz=!1,f.option.esversion=s[n];break;case"false":f.option.moz||(f.option.esversion=5);break;default:q("E002",e)}return}if(n==="esversion"){switch(i){case"5":f.inES5(!0)&&F("I003");case"3":case"6":f.option.moz=!1,f.option.esversion=+i;break;case"2015":f.option.moz=!1,f.option.esversion=6;break;default:q("E002",e)}zt(f.funct)||q("E055",f.tokens.next,"esversion");return}var u=/^([+-])(W\d{3})$/g.exec(n);if(u){f.ignored[u[2]]=u[1]==="-";return}var a;if(i==="true"||i==="false"){e.type==="jslint"?(a=c.renamed[n]||n,f.option[a]=i==="true",c.inverted[a]!==undefined&&(f.option[a]=!f.option[a])):f.option[n]=i==="true",n==="newcap"&&(f.option["(explicitNewcap)"]=!0);return}q("E002",e)}),H()}function W(e){var t=e||0,n=y.length,r;if(t<n)return y[t];while(n<=t)r=y[n],r||(r=y[n]=b.token()),n+=1;return!r&&f.tokens.next.id==="(end)"?f.tokens.next:r}function X(){var e=0,t;do t=W(e++);while(t.id==="(endline)");return t}function V(e,t){switch(f.tokens.curr.id){case"(number)":f.tokens.next.id==="."&&F("W005",f.tokens.curr);break;case"-":(f.tokens.next.id==="-"||f.tokens.next.id==="--")&&F("W006");break;case"+":(f.tokens.next.id==="+"||f.tokens.next.id==="++")&&F("W007")}e&&f.tokens.next.id!==e&&(t?f.tokens.next.id==="(end)"?q("E019",t,t.id):q("E020",f.tokens.next,e,t.id,t.line,f.tokens.next.value):(f.tokens.next.type!=="(identifier)"||f.tokens.next.value!==e)&&F("W116",f.tokens.next,e,f.tokens.next.value)),f.tokens.prev=f.tokens.curr,f.tokens.curr=f.tokens.next;for(;;){f.tokens.next=y.shift()||b.token(),f.tokens.next||B("E041",f.tokens.curr.line);if(f.tokens.next.id==="(end)"||f.tokens.next.id==="(error)")return;f.tokens.next.check&&f.tokens.next.check();if(f.tokens.next.isSpecial)f.tokens.next.type==="falls through"?f.tokens.curr.caseFallsThrough=!0:z();else if(f.tokens.next.id!=="(endline)")break}}function $(e){return e.infix||!e.identifier&&!e.template&&!!e.led}function J(){var e=f.tokens.curr,t=f.tokens.next;return t.id===";"||t.id==="}"||t.id===":"?!0:$(t)===$(e)||e.id==="yield"&&f.inMoz()?e.line!==G(t):!1}function K(e){return!e.left&&e.arity!=="unary"}function Q(e,t){var n,i=!1,s=!1,o=!1;f.nameStack.push(),!t&&f.tokens.next.value==="let"&&W(0).value==="("&&(f.inMoz()||F("W118",f.tokens.next,"let expressions"),o=!0,f.funct["(scope)"].stack(),V("let"),V("("),f.tokens.prev.fud(),V(")")),f.tokens.next.id==="(end)"&&q("E006",f.tokens.curr);var u=f.option.asi&&f.tokens.prev.line!==G(f.tokens.curr)&&r.contains(["]",")"],f.tokens.prev.id)&&r.contains(["[","("],f.tokens.curr.id);u&&F("W014",f.tokens.curr,f.tokens.curr.id),V(),t&&(f.funct["(verb)"]=f.tokens.curr.value,f.tokens.curr.beginsStmt=!0);if(t===!0&&f.tokens.curr.fud)n=f.tokens.curr.fud();else{f.tokens.curr.nud?n=f.tokens.curr.nud():q("E030",f.tokens.curr,f.tokens.curr.id);while((e<f.tokens.next.lbp||f.tokens.next.type==="(template)")&&!J())i=f.tokens.curr.value==="Array",s=f.tokens.curr.value==="Object",n&&(n.value||n.first&&n.first.value)&&(n.value!=="new"||n.first&&n.first.value&&n.first.value===".")&&(i=!1,n.value!==f.tokens.curr.value&&(s=!1)),V(),i&&f.tokens.curr.id==="("&&f.tokens.next.id===")"&&F("W009",f.tokens.curr),s&&f.tokens.curr.id==="("&&f.tokens.next.id===")"&&F("W010",f.tokens.curr),n&&f.tokens.curr.led?n=f.tokens.curr.led(n):q("E033",f.tokens.curr,f.tokens.curr.id)}return o&&f.funct["(scope)"].unstack(),f.nameStack.pop(),n}function G(e){return e.startLine||e.line}function Y(e,t){e=e||f.tokens.curr,t=t||f.tokens.next,!f.option.laxbreak&&e.line!==G(t)&&F("W014",t,t.value)}function Z(e){e=e||f.tokens.curr,e.line!==G(f.tokens.next)&&F("E022",e,e.value)}function et(e,t){e.line!==G(t)&&(f.option.laxcomma||(tt.first&&(F("I001"),tt.first=!1),F("W014",e,t.value)))}function tt(e){e=e||{},e.peek?et(f.tokens.prev,f.tokens.curr):(et(f.tokens.curr,f.tokens.next),V(","));if(f.tokens.next.identifier&&(!e.property||!f.inES5()))switch(f.tokens.next.value){case"break":case"case":case"catch":case"continue":case"default":case"do":case"else":case"finally":case"for":case"if":case"in":case"instanceof":case"return":case"switch":case"throw":case"try":case"var":case"let":case"while":case"with":return q("E024",f.tokens.next,f.tokens.next.value),!1}if(f.tokens.next.type==="(punctuator)")switch(f.tokens.next.value){case"}":case"]":case",":if(e.allowTrailing)return!0;case")":return q("E024",f.tokens.next,f.tokens.next.value),!1}return!0}function nt(e,t){var n=f.syntax[e];if(!n||typeof n!="object")f.syntax[e]=n={id:e,lbp:t,value:e};return n}function rt(e){var t=nt(e,0);return t.delim=!0,t}function it(e,t){var n=rt(e);return n.identifier=n.reserved=!0,n.fud=t,n}function st(e,t){var n=it(e,t);return n.block=!0,n}function ot(e){var t=e.id.charAt(0);if(t>="a"&&t<="z"||t>="A"&&t<="Z")e.identifier=e.reserved=!0;return e}function ut(e,t){var n=nt(e,150);return ot(n),n.nud=typeof t=="function"?t:function(){this.arity="unary",this.right=Q(150);if(this.id==="++"||this.id==="--")f.option.plusplus?F("W016",this,this.id):this.right&&(!this.right.identifier||O(this.right))&&this.right.id!=="."&&this.right.id!=="["&&F("W017",this),this.right&&this.right.isMetaProperty?q("E031",this):this.right&&this.right.identifier&&f.funct["(scope)"].block.modify(this.right.value,this);return this},n}function at(e,t){var n=rt(e);return n.type=e,n.nud=t,n}function ft(e,t){var n=at(e,t);return n.identifier=!0,n.reserved=!0,n}function lt(e,t){var n=at(e,t&&t.nud||function(){return this});return t=t||{},t.isFutureReservedWord=!0,n.value=e,n.identifier=!0,n.reserved=!0,n.meta=t,n}function ct(e,t){return ft(e,function(){return typeof t=="function"&&t(this),this})}function ht(e,t,n,r){var i=nt(e,n);return ot(i),i.infix=!0,i.led=function(i){return r||Y(f.tokens.prev,f.tokens.curr),(e==="in"||e==="instanceof")&&i.id==="!"&&F("W018",i,"!"),typeof t=="function"?t(i,this):(this.left=i,this.right=Q(n),this)},i}function pt(e){var t=nt(e,42);return t.led=function(e){return Y(f.tokens.prev,f.tokens.curr),this.left=e,this.right=Xt({type:"arrow",loneArg:e}),this},t}function dt(e,t){var n=nt(e,100);return n.led=function(e){Y(f.tokens.prev,f.tokens.curr),this.left=e;var n=this.right=Q(100);return A(e,"NaN")||A(n,"NaN")?F("W019",this):t&&t.apply(this,[e,n]),(!e||!n)&&B("E041",f.tokens.curr.line),e.id==="!"&&F("W018",e,"!"),n.id==="!"&&F("W018",n,"!"),this},n}function vt(e){return e&&(e.type==="(number)"&&+e.value===0||e.type==="(string)"&&e.value===""||e.type==="null"&&!f.option.eqnull||e.type==="true"||e.type==="false"||e.type==="undefined")}function gt(e,t,n){var i;return n.option.notypeof?!1:!e||!t?!1:(i=n.inES6()?mt.es6:mt.es3,t.type==="(identifier)"&&t.value==="typeof"&&e.type==="(string)"?!r.contains(i,e.value):!1)}function yt(e,t){var n=!1;return e.type==="this"&&t.funct["(context)"]===null?n=!0:e.type==="(identifier)"&&(t.option.node&&e.value==="global"?n=!0:t.option.browser&&(e.value==="window"||e.value==="document")&&(n=!0)),n}function bt(e){function n(e){if(typeof e!="object")return;return e.right==="prototype"?e:n(e.left)}function r(e){while(!e.identifier&&typeof e.left=="object")e=e.left;if(e.identifier&&t.indexOf(e.value)>=0)return e.value}var t=["Array","ArrayBuffer","Boolean","Collator","DataView","Date","DateTimeFormat","Error","EvalError","Float32Array","Float64Array","Function","Infinity","Intl","Int16Array","Int32Array","Int8Array","Iterator","Number","NumberFormat","Object","RangeError","ReferenceError","RegExp","StopIteration","String","SyntaxError","TypeError","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray","URIError"],i=n(e);if(i)return r(i)}function wt(e,t,n){var r=n&&n.allowDestructuring;t=t||e;if(f.option.freeze){var i=bt(e);i&&F("W121",e,i)}return e.identifier&&!e.isMetaProperty&&f.funct["(scope)"].block.reassign(e.value,e),e.id==="."?((!e.left||e.left.value==="arguments"&&!f.isStrict())&&F("E031",t),f.nameStack.set(f.tokens.prev),!0):e.id==="{"||e.id==="["?(r&&f.tokens.curr.left.destructAssign?f.tokens.curr.left.destructAssign.forEach(function(e){e.id&&f.funct["(scope)"].block.modify(e.id,e.token)}):e.id==="{"||!e.left?F("E031",t):e.left.value==="arguments"&&!f.isStrict()&&F("E031",t),e.id==="["&&f.nameStack.set(e.right),!0):e.isMetaProperty?(q("E031",t),!0):e.identifier&&!O(e)?(f.funct["(scope)"].labeltype(e.value)==="exception"&&F("W022",e),f.nameStack.set(e),!0):(e===f.syntax["function"]&&F("W023",f.tokens.curr),!1)}function Et(e,t,n){var r=ht(e,typeof t=="function"?t:function(e,t){t.left=e;if(e&&wt(e,t,{allowDestructuring:!0}))return t.right=Q(10),t;q("E031",t)},n);return r.exps=!0,r.assign=!0,r}function St(e,t,n){var r=nt(e,n);return ot(r),r.led=typeof t=="function"?t:function(e){return f.option.bitwise&&F("W016",this,this.id),this.left=e,this.right=Q(n),this},r}function xt(e){return Et(e,function(e,t){f.option.bitwise&&F("W016",t,t.id);if(e&&wt(e,t))return t.right=Q(10),t;q("E031",t)},20)}function Tt(e){var t=nt(e,150);return t.led=function(e){return f.option.plusplus?F("W016",this,this.id):(!e.identifier||O(e))&&e.id!=="."&&e.id!=="["&&F("W017",this),e.isMetaProperty?q("E031",this):e&&e.identifier&&f.funct["(scope)"].block.modify(e.value,e),this.left=e,this},t}function Nt(e,t,n){if(!f.tokens.next.identifier)return;n||V();var r=f.tokens.curr,i=f.tokens.curr.value;return O(r)?t&&f.inES5()?i:e&&i==="undefined"?i:(F("W024",f.tokens.curr,f.tokens.curr.id),i):i}function Ct(e,t){var n=Nt(e,t,!1);if(n)return n;if(f.tokens.next.value==="..."){f.inES6(!0)||F("W119",f.tokens.next,"spread/rest operator","6"),V();if(pn(f.tokens.next,"...")){F("E024",f.tokens.next,"...");while(pn(f.tokens.next,"..."))V()}if(!f.tokens.next.identifier){F("E024",f.tokens.curr,"...");return}return Ct(e,t)}q("E030",f.tokens.next,f.tokens.next.value),f.tokens.next.id!==";"&&V()}function kt(e){var t=0,n;if(f.tokens.next.id!==";"||e.inBracelessBlock)return;for(;;){do n=W(t),t+=1;while(n.id!=="(end)"&&n.id==="(comment)");if(n.reach)return;if(n.id!=="(endline)"){if(n.id==="function"){f.option.latedef===!0&&F("W026",n);break}F("W027",n,n.value,e.value);break}}}function Lt(){if(f.tokens.next.id!==";"){if(f.tokens.next.isUnclosed)return V();var e=G(f.tokens.next)===f.tokens.curr.line&&f.tokens.next.id!=="(end)",t=pn(f.tokens.next,"}");e&&!t?R("E058",f.tokens.curr.line,f.tokens.curr.character):f.option.asi||(t&&!f.option.lastsemic||!e)&&I("W033",f.tokens.curr.line,f.tokens.curr.character)}else V(";")}function At(){var e=g,t,n=f.tokens.next,r=!1;if(n.id===";"){V(";");return}var i=O(n);i&&n.meta&&n.meta.isFutureReservedWord&&W().id===":"&&(F("W024",n,n.id),i=!1),n.identifier&&!i&&W().id===":"&&(V(),V(":"),r=!0,f.funct["(scope)"].stack(),f.funct["(scope)"].block.addBreakLabel(n.value,{token:f.tokens.curr}),!f.tokens.next.labelled&&f.tokens.next.value!=="{"&&F("W028",f.tokens.next,n.value,f.tokens.next.value),f.tokens.next.label=n.value,n=f.tokens.next);if(n.id==="{"){var s=f.funct["(verb)"]==="case"&&f.tokens.curr.value===":";_t(!0,!0,!1,!1,s);return}return t=Q(0,!0),t&&(!t.identifier||t.value!=="function")&&(t.type!=="(punctuator)"||!t.left||!t.left.identifier||t.left.value!=="function")&&!f.isStrict()&&f.option.strict==="global"&&F("E007"),n.block||(!f.option.expr&&(!t||!t.exps)?F("W030",f.tokens.curr):f.option.nonew&&t&&t.left&&t.id==="("&&t.left.id==="new"&&F("W031",n),Lt()),g=e,r&&f.funct["(scope)"].unstack(),t}function Ot(){var e=[],t;while(!f.tokens.next.reach&&f.tokens.next.id!=="(end)")f.tokens.next.id===";"?(t=W(),(!t||t.id!=="("&&t.id!=="[")&&F("W032"),V(";")):e.push(At());return e}function Mt(){var e,t,n;while(f.tokens.next.id==="(string)"){t=W(0);if(t.id==="(endline)"){e=1;do n=W(e++);while(n.id==="(endline)");if(n.id===";")t=n;else{if(n.value==="["||n.value===".")break;(!f.option.asi||n.value==="(")&&F("W033",f.tokens.next)}}else{if(t.id==="."||t.id==="[")break;t.id!==";"&&F("W033",t)}V();var r=f.tokens.curr.value;(f.directive[r]||r==="use strict"&&f.option.strict==="implied")&&F("W034",f.tokens.curr,r),f.directive[r]=!0,t.id===";"&&V(";")}f.isStrict()&&(f.option["(explicitNewcap)"]||(f.option.newcap=!0),f.option.undef=!0)}function _t(e,t,n,i,s){var o,u=m,a=g,l,c,h,p;m=e,c=f.tokens.next;var d=f.funct["(metrics)"];d.nestedBlockDepth+=1,d.verifyMaxNestedBlockDepthPerFunction();if(f.tokens.next.id==="{"){V("{"),f.funct["(scope)"].stack(),h=f.tokens.curr.line;if(f.tokens.next.id!=="}"){g+=f.option.indent;while(!e&&f.tokens.next.from>g)g+=f.option.indent;if(n){l={};for(p in f.directive)r.has(f.directive,p)&&(l[p]=f.directive[p]);Mt(),f.option.strict&&f.funct["(context)"]["(global)"]&&!l["use strict"]&&!f.isStrict()&&F("E007")}o=Ot(),d.statementCount+=o.length,g-=f.option.indent}V("}",c),n&&(f.funct["(scope)"].validateParams(),l&&(f.directive=l)),f.funct["(scope)"].unstack(),g=a}else if(!e)if(n){f.funct["(scope)"].stack(),l={},t&&!i&&!f.inMoz()&&q("W118",f.tokens.curr,"function closure expressions");if(!t)for(p in f.directive)r.has(f.directive,p)&&(l[p]=f.directive[p]);Q(10),f.option.strict&&f.funct["(context)"]["(global)"]&&!l["use strict"]&&!f.isStrict()&&F("E007"),f.funct["(scope)"].unstack()}else q("E021",f.tokens.next,"{",f.tokens.next.value);else f.funct["(noblockscopedvar)"]=f.tokens.next.id!=="for",f.funct["(scope)"].stack(),(!t||f.option.curly)&&F("W116",f.tokens.next,"{",f.tokens.next.value),f.tokens.next.inBracelessBlock=!0,g+=f.option.indent,o=[At()],g-=f.option.indent,f.funct["(scope)"].unstack(),delete f.funct["(noblockscopedvar)"];switch(f.funct["(verb)"]){case"break":case"continue":case"return":case"throw":if(s)break;default:f.funct["(verb)"]=null}return m=u,e&&f.option.noempty&&(!o||o.length===0)&&F("W035",f.tokens.prev),d.nestedBlockDepth-=1,o}function Dt(e){E&&typeof E[e]!="boolean"&&F("W036",f.tokens.curr,e),typeof w[e]=="number"?w[e]+=1:w[e]=1}function Bt(){var e={};e.exps=!0,f.funct["(comparray)"].stack();var t=!1;return f.tokens.next.value!=="for"&&(t=!0,f.inMoz()||F("W116",f.tokens.next,"for",f.tokens.next.value),f.funct["(comparray)"].setState("use"),e.right=Q(10)),V("for"),f.tokens.next.value==="each"&&(V("each"),f.inMoz()||F("W118",f.tokens.curr,"for each")),V("("),f.funct["(comparray)"].setState("define"),e.left=Q(130),r.contains(["in","of"],f.tokens.next.value)?V():q("E045",f.tokens.curr),f.funct["(comparray)"].setState("generate"),Q(10),V(")"),f.tokens.next.value==="if"&&(V("if"),V("("),f.funct["(comparray)"].setState("filter"),e.filter=Q(10),V(")")),t||(f.funct["(comparray)"].setState("use"),e.right=Q(10)),V("]"),f.funct["(comparray)"].unstack(),e}function jt(){return f.funct["(statement)"]&&f.funct["(statement)"].type==="class"||f.funct["(context)"]&&f.funct["(context)"]["(verb)"]==="class"}function Ft(e){return e.identifier||e.id==="(string)"||e.id==="(number)"}function It(e){var t,n=!0;return typeof e=="object"?t=e:(n=e,t=Nt(!1,!0,n)),t?typeof t=="object"&&(t.id==="(string)"||t.id==="(identifier)"?t=t.value:t.id==="(number)"&&(t=t.value.toString())):f.tokens.next.id==="(string)"?(t=f.tokens.next.value,n||V()):f.tokens.next.id==="(number)"&&(t=f.tokens.next.value.toString(),n||V()),t==="hasOwnProperty"&&F("W001"),t}function qt(e){function h(e){f.funct["(scope)"].addParam.apply(f.funct["(scope)"],e)}var t,n=[],i,s=[],o,u=!1,a=!1,l=0,c=e&&e.loneArg;if(c&&c.identifier===!0)return f.funct["(scope)"].addParam(c.value,c),{arity:1,params:[c.value]};t=f.tokens.next,(!e||!e.parsedOpening)&&V("(");if(f.tokens.next.id===")"){V(")");return}for(;;){l++;var p=[];if(r.contains(["{","["],f.tokens.next.id)){s=Gt();for(o in s)o=s[o],o.id&&(n.push(o.id),p.push([o.id,o.token]))}else{pn(f.tokens.next,"...")&&(a=!0),i=Ct(!0);if(i)n.push(i),p.push([i,f.tokens.curr]);else while(!hn(f.tokens.next,[",",")"]))V()}u&&f.tokens.next.id!=="="&&q("W138",f.tokens.current),f.tokens.next.id==="="&&(f.inES6()||F("W119",f.tokens.next,"default parameters","6"),V("="),u=!0,Q(10)),p.forEach(h);if(f.tokens.next.id!==",")return V(")",t),{arity:l,params:n};a&&F("W131",f.tokens.next),tt()}}function Rt(e,t,n){var i={"(name)":e,"(breakage)":0,"(loopage)":0,"(tokens)":{},"(properties)":{},"(catch)":!1,"(global)":!1,"(line)":null,"(character)":null,"(metrics)":null,"(statement)":null,"(context)":null,"(scope)":null,"(comparray)":null,"(generator)":null,"(arrow)":null,"(params)":null};return t&&r.extend(i,{"(line)":t.line,"(character)":t.character,"(metrics)":Vt(t)}),r.extend(i,n),i["(context)"]&&(i["(scope)"]=i["(context)"]["(scope)"],i["(comparray)"]=i["(context)"]["(comparray)"]),i}function Ut(e){return"(scope)"in e}function zt(e){return e["(global)"]&&!e["(verb)"]}function Wt(e){function i(){if(f.tokens.curr.template&&f.tokens.curr.tail&&f.tokens.curr.context===t)return!0;var e=f.tokens.next.template&&f.tokens.next.tail&&f.tokens.next.context===t;return e&&V(),e||f.tokens.next.isUnclosed}var t=this.context,n=this.noSubst,r=this.depth;if(!n)while(!i())!f.tokens.next.template||f.tokens.next.depth>r?Q(0):V();return{id:"(template)",type:"(template)",tag:e}}function Xt(e){var t,n,r,i,s,o,u,a,l=f.option,c=f.ignored;e&&(r=e.name,i=e.statement,s=e.classExprBinding,o=e.type==="generator",u=e.type==="arrow",a=e.ignoreLoopFunc),f.option=Object.create(f.option),f.ignored=Object.create(f.ignored),f.funct=Rt(r||f.nameStack.infer(),f.tokens.next,{"(statement)":i,"(context)":f.funct,"(arrow)":u,"(generator)":o}),t=f.funct,n=f.tokens.curr,n.funct=f.funct,v.push(f.funct),f.funct["(scope)"].stack("functionouter");var h=r||s;h&&f.funct["(scope)"].block.add(h,s?"class":"function",f.tokens.curr,!1),f.funct["(scope)"].stack("functionparams");var p=qt(e);return p?(f.funct["(params)"]=p.params,f.funct["(metrics)"].arity=p.arity,f.funct["(metrics)"].verifyMaxParametersPerFunction()):f.funct["(metrics)"].arity=0,u&&(f.inES6(!0)||F("W119",f.tokens.curr,"arrow function syntax (=>)","6"),e.loneArg||V("=>")),_t(!1,!0,!0,u),!f.option.noyield&&o&&f.funct["(generator)"]!=="yielded"&&F("W124",f.tokens.curr),f.funct["(metrics)"].verifyMaxStatementsPerFunction(),f.funct["(metrics)"].verifyMaxComplexityPerFunction(),f.funct["(unusedOption)"]=f.option.unused,f.option=l,f.ignored=c,f.funct["(last)"]=f.tokens.curr.line,f.funct["(lastcharacter)"]=f.tokens.curr.character,f.funct["(scope)"].unstack(),f.funct["(scope)"].unstack(),f.funct=f.funct["(context)"],!a&&!f.option.loopfunc&&f.funct["(loopage)"]&&t["(isCapturing)"]&&F("W083",n),t}function Vt(e){return{statementCount:0,nestedBlockDepth:-1,ComplexityCount:1,arity:0,verifyMaxStatementsPerFunction:function(){f.option.maxstatements&&this.statementCount>f.option.maxstatements&&F("W071",e,this.statementCount)},verifyMaxParametersPerFunction:function(){r.isNumber(f.option.maxparams)&&this.arity>f.option.maxparams&&F("W072",e,this.arity)},verifyMaxNestedBlockDepthPerFunction:function(){f.option.maxdepth&&this.nestedBlockDepth>0&&this.nestedBlockDepth===f.option.maxdepth+1&&F("W073",null,this.nestedBlockDepth)},verifyMaxComplexityPerFunction:function(){var t=f.option.maxcomplexity,n=this.ComplexityCount;t&&n>t&&F("W074",e,n)}}}function $t(){f.funct["(metrics)"].ComplexityCount+=1}function Jt(e){var t,n;e&&(t=e.id,n=e.paren,t===","&&(e=e.exprs[e.exprs.length-1])&&(t=e.id,n=n||e.paren));switch(t){case"=":case"+=":case"-=":case"*=":case"%=":case"&=":case"|=":case"^=":case"/=":!n&&!f.option.boss&&F("W084")}}function Kt(e){if(f.inES5())for(var t in e)e[t]&&e[t].setterToken&&!e[t].getterToken&&F("W078",e[t].setterToken)}function Qt(e,t){if(pn(f.tokens.next,".")){var n=f.tokens.curr.id;V(".");var r=Ct();return f.tokens.curr.isMetaProperty=!0,e!==r?q("E057",f.tokens.prev,n,r):t(),f.tokens.curr}}function Gt(e){var t=e&&e.assignment;return f.inES6()||F("W104",f.tokens.curr,t?"destructuring assignment":"destructuring binding","6"),Yt(e)}function Yt(e){var t,n=[],r=e&&e.openingParsed,i=e&&e.assignment,s=i?{assignment:i}:null,o=r?f.tokens.curr:f.tokens.next,u=function(){var e;if(hn(f.tokens.next,["[","{"])){t=Yt(s);for(var r in t)r=t[r],n.push({id:r.id,token:r.token})}else if(pn(f.tokens.next,","))n.push({id:null,token:f.tokens.curr});else{if(!pn(f.tokens.next,"(")){var o=pn(f.tokens.next,"...");if(i){var a=o?W(0):f.tokens.next;a.identifier||F("E030",a,a.value);var l=Q(155);l&&(wt(l),l.identifier&&(e=l.value))}else e=Ct();return e&&n.push({id:e,token:f.tokens.curr}),o}V("("),u(),V(")")}return!1},a=function(){var e;pn(f.tokens.next,"[")?(V("["),Q(10),V("]"),V(":"),u()):f.tokens.next.id==="(string)"||f.tokens.next.id==="(number)"?(V(),V(":"),u()):(e=Ct(),pn(f.tokens.next,":")?(V(":"),u()):e&&(i&&wt(f.tokens.curr),n.push({id:e,token:f.tokens.curr})))};if(pn(o,"[")){r||V("["),pn(f.tokens.next,"]")&&F("W137",f.tokens.curr);var l=!1;while(!pn(f.tokens.next,"]"))u()&&!l&&pn(f.tokens.next,",")&&(F("W130",f.tokens.next),l=!0),pn(f.tokens.next,"=")&&(pn(f.tokens.prev,"...")?V("]"):V("="),f.tokens.next.id==="undefined"&&F("W080",f.tokens.prev,f.tokens.prev.value),Q(10)),pn(f.tokens.next,"]")||V(",");V("]")}else if(pn(o,"{")){r||V("{"),pn(f.tokens.next,"}")&&F("W137",f.tokens.curr);while(!pn(f.tokens.next,"}")){a(),pn(f.tokens.next,"=")&&(V("="),f.tokens.next.id==="undefined"&&F("W080",f.tokens.prev,f.tokens.prev.value),Q(10));if(!pn(f.tokens.next,"}")){V(",");if(pn(f.tokens.next,"}"))break}}V("}")}return n}function Zt(e,t){var n=t.first;if(!n)return;r.zip(e,Array.isArray(n)?n:[n]).forEach(function(e){var t=e[0],n=e[1];t&&n?t.first=n:t&&t.first&&!n&&F("W080",t.first,t.first.value)})}function en(e,t,n){var i=n&&n.prefix,s=n&&n.inexport,o=e==="let",u=e==="const",a,l,c,h;f.inES6()||F("W104",f.tokens.curr,e,"6"),o&&f.tokens.next.value==="("?(f.inMoz()||F("W118",f.tokens.next,"let block"),V("("),f.funct["(scope)"].stack(),h=!0):f.funct["(noblockscopedvar)"]&&q("E048",f.tokens.curr,u?"Const":"Let"),t.first=[];for(;;){var p=[];r.contains(["{","["],f.tokens.next.value)?(a=Gt(),l=!1):(a=[{id:Ct(),token:f.tokens.curr}],l=!0),!i&&u&&f.tokens.next.id!=="="&&F("E012",f.tokens.curr,f.tokens.curr.value);for(var d in a)a.hasOwnProperty(d)&&(d=a[d],f.funct["(scope)"].block.isGlobal()&&S[d.id]===!1&&F("W079",d.token,d.id),d.id&&!f.funct["(noblockscopedvar)"]&&(f.funct["(scope)"].addlabel(d.id,{type:e,token:d.token}),p.push(d.token),l&&s&&f.funct["(scope)"].setExported(d.token.value,d.token)));f.tokens.next.id==="="&&(V("="),!i&&f.tokens.next.id==="undefined"&&F("W080",f.tokens.prev,f.tokens.prev.value),!i&&W(0).id==="="&&f.tokens.next.identifier&&F("W120",f.tokens.next,f.tokens.next.value),c=Q(i?120:10),l?a[0].first=c:Zt(p,c)),t.first=t.first.concat(p);if(f.tokens.next.id!==",")break;tt()}return h&&(V(")"),_t(!0,!0),t.block=!0,f.funct["(scope)"].unstack()),t}function sn(e){return f.inES6()||F("W104",f.tokens.curr,"class","6"),e?(this.name=Ct(),f.funct["(scope)"].addlabel(this.name,{type:"class",token:f.tokens.curr})):f.tokens.next.identifier&&f.tokens.next.value!=="extends"?(this.name=Ct(),this.namedExpr=!0):this.name=f.nameStack.infer(),on(this),this}function on(e){var t=f.inClassBody;f.tokens.next.value==="extends"&&(V("extends"),e.heritage=Q(10)),f.inClassBody=!0,V("{"),e.body=un(e),V("}"),f.inClassBody=t}function un(e){var t,n,r,i,s=Object.create(null),o=Object.create(null),u;for(var a=0;f.tokens.next.id!=="}";++a){t=f.tokens.next,n=!1,r=!1,i=null;if(t.id===";"){F("W032"),V(";");continue}t.id==="*"&&(r=!0,V("*"),t=f.tokens.next);if(t.id==="[")t=cn(),u=!0;else{if(!Ft(t)){F("W052",f.tokens.next,f.tokens.next.value||f.tokens.next.type),V();continue}V(),u=!1;if(t.identifier&&t.value==="static"){pn(f.tokens.next,"*")&&(r=!0,V("*"));if(Ft(f.tokens.next)||f.tokens.next.id==="[")u=f.tokens.next.id==="[",n=!0,t=f.tokens.next,f.tokens.next.id==="["?t=cn():V()}t.identifier&&(t.value==="get"||t.value==="set")&&(Ft(f.tokens.next)||f.tokens.next.id==="[")&&(u=f.tokens.next.id==="[",i=t,t=f.tokens.next,f.tokens.next.id==="["?t=cn():V())}if(!pn(f.tokens.next,"(")){q("E054",f.tokens.next,f.tokens.next.value);while(f.tokens.next.id!=="}"&&!pn(f.tokens.next,"("))V();f.tokens.next.value!=="("&&Xt({statement:e})}u||(i?ln(i.value,n?o:s,t.value,t,!0,n):(t.value==="constructor"?f.nameStack.set(e):f.nameStack.set(t),fn(n?o:s,t.value,t,!0,n)));if(i&&t.value==="constructor"){var l=i.value==="get"?"class getter method":"class setter method";q("E049",t,l,"constructor")}else t.value==="prototype"&&q("E049",t,"class method","prototype");It(t),Xt({statement:e,type:r?"generator":null,classExprBinding:e.namedExpr?e.name:null})}Kt(s)}function fn(e,t,n,r,i){var s=["key","class method","static class method"];s=s[(r||!1)+(i||!1)],n.identifier&&(t=n.value),e[t]&&t!=="__proto__"?F("W075",f.tokens.next,s,t):e[t]=Object.create(null),e[t].basic=!0,e[t].basictkn=n}function ln(e,t,n,r,i,s){var o=e==="get"?"getterToken":"setterToken",u="";i?(s&&(u+="static "),u+=e+"ter method"):u="key",f.tokens.curr.accessorType=e,f.nameStack.set(r),t[n]?(t[n].basic||t[n][o])&&n!=="__proto__"&&F("W075",f.tokens.next,u,n):t[n]=Object.create(null),t[n][o]=r}function cn(){V("["),f.inES6()||F("W119",f.tokens.curr,"computed property names","6");var e=Q(10);return V("]"),e}function hn(e,t){return e.type==="(punctuator)"?r.contains(t,e.value):!1}function pn(e,t){return e.type==="(punctuator)"&&e.value===t}function dn(){var e=an();e.notJson?(!f.inES6()&&e.isDestAssign&&F("W104",f.tokens.curr,"destructuring assignment","6"),Ot()):(f.option.laxbreak=!0,f.jsonMode=!0,mn())}function mn(){function e(){var e={},t=f.tokens.next;V("{");if(f.tokens.next.id!=="}")for(;;){if(f.tokens.next.id==="(end)")q("E026",f.tokens.next,t.line);else{if(f.tokens.next.id==="}"){F("W094",f.tokens.curr);break}f.tokens.next.id===","?q("E028",f.tokens.next):f.tokens.next.id!=="(string)"&&F("W095",f.tokens.next,f.tokens.next.value)}e[f.tokens.next.value]===!0?F("W075",f.tokens.next,"key",f.tokens.next.value):f.tokens.next.value==="__proto__"&&!f.option.proto||f.tokens.next.value==="__iterator__"&&!f.option.iterator?F("W096",f.tokens.next,f.tokens.next.value):e[f.tokens.next.value]=!0,V(),V(":"),mn();if(f.tokens.next.id!==",")break;V(",")}V("}")}function t(){var e=f.tokens.next;V("[");if(f.tokens.next.id!=="]")for(;;){if(f.tokens.next.id==="(end)")q("E027",f.tokens.next,e.line);else{if(f.tokens.next.id==="]"){F("W094",f.tokens.curr);break}f.tokens.next.id===","&&q("E028",f.tokens.next)}mn();if(f.tokens.next.id!==",")break;V(",")}V("]")}switch(f.tokens.next.id){case"{":e();break;case"[":t();break;case"true":case"false":case"null":case"(number)":case"(string)":V();break;case"-":V("-"),V("(number)");break;default:q("E003",f.tokens.next)}}var e,t={"<":!0,"<=":!0,"==":!0,"===":!0,"!==":!0,"!=":!0,">":!0,">=":!0,"+":!0,"-":!0,"*":!0,"/":!0,"%":!0},n,d=["closure","exception","global","label","outer","unused","var"],v,m,g,y,b,w,E,S,x,T,N=[],C=new i.EventEmitter,mt={};mt.legacy=["xml","unknown"],mt.es3=["undefined","boolean","number","string","function","object"],mt.es3=mt.es3.concat(mt.legacy),mt.es6=mt.es3.concat("symbol"),at("(number)",function(){return this}),at("(string)",function(){return this}),f.syntax["(identifier)"]={type:"(identifier)",lbp:0,identifier:!0,nud:function(){var e=this.value;return f.tokens.next.id==="=>"?this:(f.funct["(comparray)"].check(e)||f.funct["(scope)"].block.use(e,f.tokens.curr),this)},led:function(){q("E033",f.tokens.next,f.tokens.next.value)}};var Pt={lbp:0,identifier:!1,template:!0};f.syntax["(template)"]=r.extend({type:"(template)",nud:Wt,led:Wt,noSubst:!1},Pt),f.syntax["(template middle)"]=r.extend({type:"(template middle)",middle:!0,noSubst:!1},Pt),f.syntax["(template tail)"]=r.extend({type:"(template tail)",tail:!0,noSubst:!1},Pt),f.syntax["(no subst template)"]=r.extend({type:"(template)",nud:Wt,led:Wt,noSubst:!0,tail:!0},Pt),at("(regexp)",function(){return this}),rt("(endline)"),rt("(begin)"),rt("(end)").reach=!0,rt("(error)").reach=!0,rt("}").reach=!0,rt(")"),rt("]"),rt('"').reach=!0,rt("'").reach=!0,rt(";"),rt(":").reach=!0,rt("#"),ft("else"),ft("case").reach=!0,ft("catch"),ft("default").reach=!0,ft("finally"),ct("arguments",function(e){f.isStrict()&&f.funct["(global)"]&&F("E008",e)}),ct("eval"),ct("false"),ct("Infinity"),ct("null"),ct("this",function(e){f.isStrict()&&!jt()&&!f.option.validthis&&(f.funct["(statement)"]&&f.funct["(name)"].charAt(0)>"Z"||f.funct["(global)"])&&F("W040",e)}),ct("true"),ct("undefined"),Et("=","assign",20),Et("+=","assignadd",20),Et("-=","assignsub",20),Et("*=","assignmult",20),Et("/=","assigndiv",20).nud=function(){q("E014")},Et("%=","assignmod",20),xt("&="),xt("|="),xt("^="),xt("<<="),xt(">>="),xt(">>>="),ht(",",function(e,t){var n;t.exprs=[e],f.option.nocomma&&F("W127");if(!tt({peek:!0}))return t;for(;;){if(!(n=Q(10)))break;t.exprs.push(n);if(f.tokens.next.value!==","||!tt())break}return t},10,!0),ht("?",function(e,t){return $t(),t.left=e,t.right=Q(10),V(":"),t["else"]=Q(10),t},30);var Ht=40;ht("||",function(e,t){return $t(),t.left=e,t.right=Q(Ht),t},Ht),ht("&&","and",50),St("|","bitor",70),St("^","bitxor",80),St("&","bitand",90),dt("==",function(e,t){var n=f.option.eqnull&&((e&&e.value)==="null"||(t&&t.value)==="null");switch(!0){case!n&&f.option.eqeqeq:this.from=this.character,F("W116",this,"===","==");break;case vt(e):F("W041",this,"===",e.value);break;case vt(t):F("W041",this,"===",t.value);break;case gt(t,e,f):F("W122",this,t.value);break;case gt(e,t,f):F("W122",this,e.value)}return this}),dt("===",function(e,t){return gt(t,e,f)?F("W122",this,t.value):gt(e,t,f)&&F("W122",this,e.value),this}),dt("!=",function(e,t){var n=f.option.eqnull&&((e&&e.value)==="null"||(t&&t.value)==="null");return!n&&f.option.eqeqeq?(this.from=this.character,F("W116",this,"!==","!=")):vt(e)?F("W041",this,"!==",e.value):vt(t)?F("W041",this,"!==",t.value):gt(t,e,f)?F("W122",this,t.value):gt(e,t,f)&&F("W122",this,e.value),this}),dt("!==",function(e,t){return gt(t,e,f)?F("W122",this,t.value):gt(e,t,f)&&F("W122",this,e.value),this}),dt("<"),dt(">"),dt("<="),dt(">="),St("<<","shiftleft",120),St(">>","shiftright",120),St(">>>","shiftrightunsigned",120),ht("in","in",120),ht("instanceof","instanceof",120),ht("+",function(e,t){var n;return t.left=e,t.right=n=Q(130),e&&n&&e.id==="(string)"&&n.id==="(string)"?(e.value+=n.value,e.character=n.character,!f.option.scripturl&&a.javascriptURL.test(e.value)&&F("W050",e),e):t},130),ut("+","num"),ut("+++",function(){return F("W007"),this.arity="unary",this.right=Q(150),this}),ht("+++",function(e){return F("W007"),this.left=e,this.right=Q(130),this},130),ht("-","sub",130),ut("-","neg"),ut("---",function(){return F("W006"),this.arity="unary",this.right=Q(150),this}),ht("---",function(e){return F("W006"),this.left=e,this.right=Q(130),this},130),ht("*","mult",140),ht("/","div",140),ht("%","mod",140),Tt("++"),ut("++","preinc"),f.syntax["++"].exps=!0,Tt("--"),ut("--","predec"),f.syntax["--"].exps=!0,ut("delete",function(){var e=Q(10);return e?(e.id!=="."&&e.id!=="["&&F("W051"),this.first=e,e.identifier&&!f.isStrict()&&(e.forgiveUndef=!0),this):this}).exps=!0,ut("~",function(){return f.option.bitwise&&F("W016",this,"~"),this.arity="unary",this.right=Q(150),this}),ut("...",function(){return f.inES6(!0)||F("W119",this,"spread/rest operator","6"),!f.tokens.next.identifier&&f.tokens.next.type!=="(string)"&&!hn(f.tokens.next,["[","("])&&q("E030",f.tokens.next,f.tokens.next.value),Q(150),this}),ut("!",function(){return this.arity="unary",this.right=Q(150),this.right||B("E041",this.line||0),t[this.right.id]===!0&&F("W018",this,"!"),this}),ut("typeof",function(){var e=Q(150);return this.first=this.right=e,e||B("E041",this.line||0,this.character||0),e.identifier&&(e.forgiveUndef=!0),this}),ut("new",function(){var e=Qt("target",function(){f.inES6(!0)||F("W119",f.tokens.prev,"new.target","6");var e,t=f.funct;while(t){e=!t["(global)"];if(!t["(arrow)"])break;t=t["(context)"]}e||F("W136",f.tokens.prev,"new.target")});if(e)return e;var t=Q(155),n;if(t&&t.id!=="function")if(t.identifier){t["new"]=!0;switch(t.value){case"Number":case"String":case"Boolean":case"Math":case"JSON":F("W053",f.tokens.prev,t.value);break;case"Symbol":f.inES6()&&F("W053",f.tokens.prev,t.value);break;case"Function":f.option.evil||F("W054");break;case"Date":case"RegExp":case"this":break;default:t.id!=="function"&&(n=t.value.substr(0,1),f.option.newcap&&(n<"A"||n>"Z")&&!f.funct["(scope)"].isPredefined(t.value)&&F("W055",f.tokens.curr))}}else t.id!=="."&&t.id!=="["&&t.id!=="("&&F("W056",f.tokens.curr);else f.option.supernew||F("W057",this);return f.tokens.next.id!=="("&&!f.option.supernew&&F("W058",f.tokens.curr,f.tokens.curr.value),this.first=this.right=t,this}),f.syntax["new"].exps=!0,ut("void").exps=!0,ht(".",function(e,t){var n=Ct(!1,!0);return typeof n=="string"&&Dt(n),t.left=e,t.right=n,n&&n==="hasOwnProperty"&&f.tokens.next.value==="="&&F("W001"),!e||e.value!=="arguments"||n!=="callee"&&n!=="caller"?!f.option.evil&&e&&e.value==="document"&&(n==="write"||n==="writeln")&&F("W060",e):f.option.noarg?F("W059",e,n):f.isStrict()&&q("E008"),!f.option.evil&&(n==="eval"||n==="execScript")&&yt(e,f)&&F("W061"),t},160,!0),ht("(",function(e,t){f.option.immed&&e&&!e.immed&&e.id==="function"&&F("W062");var n=0,r=[];e&&e.type==="(identifier)"&&e.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)&&"Array Number String Boolean Date Object Error Symbol".indexOf(e.value)===-1&&(e.value==="Math"?F("W063",e):f.option.newcap&&F("W064",e));if(f.tokens.next.id!==")")for(;;){r[r.length]=Q(10),n+=1;if(f.tokens.next.id!==",")break;tt()}return V(")"),typeof e=="object"&&(!f.inES5()&&e.value==="parseInt"&&n===1&&F("W065",f.tokens.curr),f.option.evil||(e.value==="eval"||e.value==="Function"||e.value==="execScript"?(F("W061",e),r[0]&&[0].id==="(string)"&&U(e,r[0].value)):!r[0]||r[0].id!=="(string)"||e.value!=="setTimeout"&&e.value!=="setInterval"?r[0]&&r[0].id==="(string)"&&e.value==="."&&e.left.value==="window"&&(e.right==="setTimeout"||e.right==="setInterval")&&(F("W066",e),U(e,r[0].value)):(F("W066",e),U(e,r[0].value))),!e.identifier&&e.id!=="."&&e.id!=="["&&e.id!=="=>"&&e.id!=="("&&e.id!=="&&"&&e.id!=="||"&&e.id!=="?"&&(!f.inES6()||!e["(name)"])&&F("W067",t)),t.left=e,t},155,!0).exps=!0,ut("(",function(){var e=f.tokens.next,t,n=-1,r,i,s,o,u=1,a=f.tokens.curr,l=f.tokens.prev,c=!f.option.singleGroups;do e.value==="("?u+=1:e.value===")"&&(u-=1),n+=1,t=e,e=W(n);while((u!==0||t.value!==")")&&e.value!==";"&&e.type!=="(end)");f.tokens.next.id==="function"&&(i=f.tokens.next.immed=!0);if(e.value==="=>")return Xt({type:"arrow",parsedOpening:!0});var h=[];if(f.tokens.next.id!==")")for(;;){h.push(Q(10));if(f.tokens.next.id!==",")break;f.option.nocomma&&F("W127"),tt()}V(")",this),f.option.immed&&h[0]&&h[0].id==="function"&&f.tokens.next.id!=="("&&f.tokens.next.id!=="."&&f.tokens.next.id!=="["&&F("W068",this);if(!h.length)return;return h.length>1?(r=Object.create(f.syntax[","]),r.exprs=h,s=h[0],o=h[h.length-1],c||(c=l.assign||l.delim)):(r=s=o=h[0],c||(c=a.beginsStmt&&(r.id==="{"||i||Ut(r))||i&&(!J()||f.tokens.prev.id!=="}")||Ut(r)&&!J()||r.id==="{"&&l.id==="=>"||r.type==="(number)"&&pn(e,".")&&/^\d+$/.test(r.value))),r&&(!c&&(s.left||s.right||r.exprs)&&(c=!K(l)&&s.lbp<=l.lbp||!J()&&o.lbp<f.tokens.next.lbp),c||F("W126",a),r.paren=!0),r}),pt("=>"),ht("[",function(e,t){var n=Q(10),r;return n&&n.type==="(string)"&&(!f.option.evil&&(n.value==="eval"||n.value==="execScript")&&yt(e,f)&&F("W061"),Dt(n.value),!f.option.sub&&a.identifier.test(n.value)&&(r=f.syntax[n.value],(!r||!O(r))&&F("W069",f.tokens.prev,n.value))),V("]",t),n&&n.value==="hasOwnProperty"&&f.tokens.next.value==="="&&F("W001"),t.left=e,t.right=n,t},160,!0),ut("[",function(){var e=an();if(e.isCompArray)return!f.option.esnext&&!f.inMoz()&&F("W118",f.tokens.curr,"array comprehension"),Bt();if(e.isDestAssign)return this.destructAssign=Gt({openingParsed:!0,assignment:!0}),this;var t=f.tokens.curr.line!==G(f.tokens.next);this.first=[],t&&(g+=f.option.indent,f.tokens.next.from===g+f.option.indent&&(g+=f.option.indent));while(f.tokens.next.id!=="(end)"){while(f.tokens.next.id===","){if(!f.option.elision){if(!!f.inES5()){F("W128");do V(",");while(f.tokens.next.id===",");continue}F("W070")}V(",")}if(f.tokens.next.id==="]")break;this.first.push(Q(10));if(f.tokens.next.id!==",")break;tt({allowTrailing:!0});if(f.tokens.next.id==="]"&&!f.inES5()){F("W070",f.tokens.curr);break}}return t&&(g-=f.option.indent),V("]",this),this}),function(e){e.nud=function(){var e,t,n,r,i,s=!1,o,u=Object.create(null);e=f.tokens.curr.line!==G(f.tokens.next),e&&(g+=f.option.indent,f.tokens.next.from===g+f.option.indent&&(g+=f.option.indent));var a=an();if(a.isDestAssign)return this.destructAssign=Gt({openingParsed:!0,assignment:!0}),this;for(;;){if(f.tokens.next.id==="}")break;o=f.tokens.next.value;if(!f.tokens.next.identifier||X().id!==","&&X().id!=="}")if(W().id===":"||o!=="get"&&o!=="set"){f.tokens.next.value==="*"&&f.tokens.next.type==="(punctuator)"?(f.inES6()||F("W104",f.tokens.next,"generator functions","6"),V("*"),s=!0):s=!1;if(f.tokens.next.id==="[")n=cn(),f.nameStack.set(n);else{f.nameStack.set(f.tokens.next),n=It(),fn(u,n,f.tokens.next);if(typeof n!="string")break}f.tokens.next.value==="("?(f.inES6()||F("W104",f.tokens.curr,"concise methods","6"),Xt({type:s?"generator":null})):(V(":"),Q(10))}else V(o),f.inES5()||q("E034"),n=It(),!n&&!f.inES6()&&q("E035"),n&&ln(o,u,n,f.tokens.curr),i=f.tokens.next,t=Xt(),r=t["(params)"],o==="get"&&n&&r?F("W076",i,r[0],n):o==="set"&&n&&(!r||r.length!==1)&&F("W077",i,n);else f.inES6()||F("W104",f.tokens.next,"object short notation","6"),n=It(!0),fn(u,n,f.tokens.next),Q(10);Dt(n);if(f.tokens.next.id!==",")break;tt({allowTrailing:!0,property:!0}),f.tokens.next.id===","?F("W070",f.tokens.curr):f.tokens.next.id==="}"&&!f.inES5()&&F("W070",f.tokens.curr)}return e&&(g-=f.option.indent),V("}",this),Kt(u),this},e.fud=function(){q("E036",f.tokens.curr)}}(rt("{"));var tn=it("const",function(e){return en("const",this,e)});tn.exps=!0;var nn=it("let",function(e){return en("let",this,e)});nn.exps=!0;var rn=it("var",function(e){var t=e&&e.prefix,n=e&&e.inexport,i,o,u,a=e&&e.implied,l=!e||!e.ignore;this.first=[];for(;;){var c=[];r.contains(["{","["],f.tokens.next.value)?(i=Gt(),o=!1):(i=[{id:Ct(),token:f.tokens.curr}],o=!0),(!t||!a)&&l&&f.option.varstmt&&F("W132",this),this.first=this.first.concat(c);for(var h in i)i.hasOwnProperty(h)&&(h=i[h],!a&&f.funct["(global)"]&&(S[h.id]===!1?F("W079",h.token,h.id):f.option.futurehostile===!1&&(!f.inES5()&&s.ecmaIdentifiers[5][h.id]===!1||!f.inES6()&&s.ecmaIdentifiers[6][h.id]===!1)&&F("W129",h.token,h.id)),h.id&&(a==="for"?(f.funct["(scope)"].has(h.id)||l&&F("W088",h.token,h.id),f.funct["(scope)"].block.use(h.id,h.token)):(f.funct["(scope)"].addlabel(h.id,{type:"var",token:h.token}),o&&n&&f.funct["(scope)"].setExported(h.id,h.token)),c.push(h.token)));f.tokens.next.id==="="&&(f.nameStack.set(f.tokens.curr),V("="),!t&&l&&!f.funct["(loopage)"]&&f.tokens.next.id==="undefined"&&F("W080",f.tokens.prev,f.tokens.prev.value),W(0).id==="="&&f.tokens.next.identifier&&(!t&&l&&!f.funct["(params)"]||f.funct["(params)"].indexOf(f.tokens.next.value)===-1)&&F("W120",f.tokens.next,f.tokens.next.value),u=Q(t?120:10),o?i[0].first=u:Zt(c,u));if(f.tokens.next.id!==",")break;tt()}return this});rn.exps=!0,st("class",function(){return sn.call(this,!0)}),st("function",function(e){var t=e&&e.inexport,n=!1;f.tokens.next.value==="*"&&(V("*"),f.inES6({strict:!0})?n=!0:F("W119",f.tokens.curr,"function*","6")),m&&F("W082",f.tokens.curr);var r=Nt();return f.funct["(scope)"].addlabel(r,{type:"function",token:f.tokens.curr}),r===undefined?F("W025"):t&&f.funct["(scope)"].setExported(r,f.tokens.prev),Xt({name:r,statement:this,type:n?"generator":null,ignoreLoopFunc:m}),f.tokens.next.id==="("&&f.tokens.next.line===f.tokens.curr.line&&q("E039"),this}),ut("function",function(){var e=!1;f.tokens.next.value==="*"&&(f.inES6()||F("W119",f.tokens.curr,"function*","6"),V("*"),e=!0);var t=Nt();return Xt({name:t,type:e?"generator":null}),this}),st("if",function(){var e=f.tokens.next;$t(),f.condition=!0,V("(");var t=Q(0);Jt(t);var n=null;f.option.forin&&f.forinifcheckneeded&&(f.forinifcheckneeded=!1,n=f.forinifchecks[f.forinifchecks.length-1],t.type==="(punctuator)"&&t.value==="!"?n.type="(negative)":n.type="(positive)"),V(")",e),f.condition=!1;var r=_t(!0,!0);return n&&n.type==="(negative)"&&r&&r[0]&&r[0].type==="(identifier)"&&r[0].value==="continue"&&(n.type="(negative-with-continue)"),f.tokens.next.id==="else"&&(V("else"),f.tokens.next.id==="if"||f.tokens.next.id==="switch"?At():_t(!0,!0)),this}),st("try",function(){function t(){V("catch"),V("("),f.funct["(scope)"].stack("catchparams");if(hn(f.tokens.next,["[","{"])){var e=Gt();r.each(e,function(e){e.id&&f.funct["(scope)"].addParam(e.id,e,"exception")})}else f.tokens.next.type!=="(identifier)"?F("E030",f.tokens.next,f.tokens.next.value):f.funct["(scope)"].addParam(Ct(),f.tokens.curr,"exception");f.tokens.next.value==="if"&&(f.inMoz()||F("W118",f.tokens.curr,"catch filter"),V("if"),Q(0)),V(")"),_t(!1),f.funct["(scope)"].unstack()}var e;_t(!0);while(f.tokens.next.id==="catch")$t(),e&&!f.inMoz()&&F("W118",f.tokens.next,"multiple catch blocks"),t(),e=!0;if(f.tokens.next.id==="finally"){V("finally"),_t(!0);return}return e||q("E021",f.tokens.next,"catch",f.tokens.next.value),this}),st("while",function(){var e=f.tokens.next;return f.funct["(breakage)"]+=1,f.funct["(loopage)"]+=1,$t(),V("("),Jt(Q(0)),V(")",e),_t(!0,!0),f.funct["(breakage)"]-=1,f.funct["(loopage)"]-=1,this}).labelled=!0,st("with",function(){var e=f.tokens.next;return f.isStrict()?q("E010",f.tokens.curr):f.option.withstmt||F("W085",f.tokens.curr),V("("),Q(0),V(")",e),_t(!0,!0),this}),st("switch",function(){var e=f.tokens.next,t=!1,n=!1;f.funct["(breakage)"]+=1,V("("),Jt(Q(0)),V(")",e),e=f.tokens.next,V("{"),f.tokens.next.from===g&&(n=!0),n||(g+=f.option.indent),this.cases=[];for(;;)switch(f.tokens.next.id){case"case":switch(f.funct["(verb)"]){case"yield":case"break":case"case":case"continue":case"return":case"switch":case"throw":break;default:f.tokens.curr.caseFallsThrough||F("W086",f.tokens.curr,"case")}V("case"),this.cases.push(Q(0)),$t(),t=!0,V(":"),f.funct["(verb)"]="case";break;case"default":switch(f.funct["(verb)"]){case"yield":case"break":case"continue":case"return":case"throw":break;default:this.cases.length&&(f.tokens.curr.caseFallsThrough||F("W086",f.tokens.curr,"default"))}V("default"),t=!0,V(":");break;case"}":n||(g-=f.option.indent),V("}",e),f.funct["(breakage)"]-=1,f.funct["(verb)"]=undefined;return;case"(end)":q("E023",f.tokens.next,"}");return;default:g+=f.option.indent;if(t)switch(f.tokens.curr.id){case",":q("E040");return;case":":t=!1,Ot();break;default:q("E025",f.tokens.curr);return}else{if(f.tokens.curr.id!==":"){q("E021",f.tokens.next,"case",f.tokens.next.value);return}V(":"),q("E024",f.tokens.curr,":"),Ot()}g-=f.option.indent}return this}).labelled=!0,it("debugger",function(){return f.option.debug||F("W087",this),this}).exps=!0,function(){var e=it("do",function(){f.funct["(breakage)"]+=1,f.funct["(loopage)"]+=1,$t(),this.first=_t(!0,!0),V("while");var e=f.tokens.next;return V("("),Jt(Q(0)),V(")",e),f.funct["(breakage)"]-=1,f.funct["(loopage)"]-=1,this});e.labelled=!0,e.exps=!0}(),st("for",function(){var e,t=f.tokens.next,n=!1,i=null;t.value==="each"&&(i=t,V("each"),f.inMoz()||F("W118",f.tokens.curr,"for each")),$t(),V("(");var s,o=0,u=["in","of"],a=0,l,c;hn(f.tokens.next,["{","["])&&++a;do{s=W(o),++o,hn(s,["{","["])?++a:hn(s,["}","]"])&&--a;if(a<0)break;a===0&&(!l&&pn(s,",")?l=s:!c&&pn(s,"=")&&(c=s))}while(a>0||!r.contains(u,s.value)&&s.value!==";"&&s.type!=="(end)");if(r.contains(u,s.value)){!f.inES6()&&s.value==="of"&&F("W104",s,"for of","6");var h=!c&&!l;c&&q("W133",l,s.value,"initializer is forbidden"),l&&q("W133",l,s.value,"more than one ForBinding"),f.tokens.next.id==="var"?(V("var"),f.tokens.curr.fud({prefix:!0})):f.tokens.next.id==="let"||f.tokens.next.id==="const"?(V(f.tokens.next.id),n=!0,f.funct["(scope)"].stack(),f.tokens.curr.fud({prefix:!0})):Object.create(rn).fud({prefix:!0,implied:"for",ignore:!h}),V(s.value),Q(20),V(")",t),s.value==="in"&&f.option.forin&&(f.forinifcheckneeded=!0,f.forinifchecks===undefined&&(f.forinifchecks=[]),f.forinifchecks.push({type:"(none)"})),f.funct["(breakage)"]+=1,f.funct["(loopage)"]+=1,e=_t(!0,!0);if(s.value==="in"&&f.option.forin){if(f.forinifchecks&&f.forinifchecks.length>0){var p=f.forinifchecks.pop();(e&&e.length>0&&(typeof e[0]!="object"||e[0].value!=="if")||p.type==="(positive)"&&e.length>1||p.type==="(negative)")&&F("W089",this)}f.forinifcheckneeded=!1}f.funct["(breakage)"]-=1,f.funct["(loopage)"]-=1}else{i&&q("E045",i);if(f.tokens.next.id!==";")if(f.tokens.next.id==="var")V("var"),f.tokens.curr.fud();else if(f.tokens.next.id==="let")V("let"),n=!0,f.funct["(scope)"].stack(),f.tokens.curr.fud();else for(;;){Q(0,"for");if(f.tokens.next.id!==",")break;l()}Z(f.tokens.curr),V(";"),f.funct["(loopage)"]+=1,f.tokens.next.id!==";"&&Jt(Q(0)),Z(f.tokens.curr),V(";"),f.tokens.next.id===";"&&q("E021",f.tokens.next,")",";");if(f.tokens.next.id!==")")for(;;){Q(0,"for");if(f.tokens.next.id!==",")break;l()}V(")",t),f.funct["(breakage)"]+=1,_t(!0,!0),f.funct["(breakage)"]-=1,f.funct["(loopage)"]-=1}return n&&f.funct["(scope)"].unstack(),this}).labelled=!0,it("break",function(){var e=f.tokens.next.value;return f.option.asi||Z(this),f.tokens.next.id!==";"&&!f.tokens.next.reach&&f.tokens.curr.line===G(f.tokens.next)?(f.funct["(scope)"].funct.hasBreakLabel(e)||F("W090",f.tokens.next,e),this.first=f.tokens.next,V()):f.funct["(breakage)"]===0&&F("W052",f.tokens.next,this.value),kt(this),this}).exps=!0,it("continue",function(){var e=f.tokens.next.value;return f.funct["(breakage)"]===0&&F("W052",f.tokens.next,this.value),f.funct["(loopage)"]||F("W052",f.tokens.next,this.value),f.option.asi||Z(this),f.tokens.next.id!==";"&&!f.tokens.next.reach&&f.tokens.curr.line===G(f.tokens.next)&&(f.funct["(scope)"].funct.hasBreakLabel(e)||F("W090",f.tokens.next,e),this.first=f.tokens.next,V()),kt(this),this}).exps=!0,it("return",function(){return this.line===G(f.tokens.next)?f.tokens.next.id!==";"&&!f.tokens.next.reach&&(this.first=Q(0),this.first&&this.first.type==="(punctuator)"&&this.first.value==="="&&!this.first.paren&&!f.option.boss&&I("W093",this.first.line,this.first.character)):f.tokens.next.type==="(punctuator)"&&["[","{","+","-"].indexOf(f.tokens.next.value)>-1&&Z(this),kt(this),this}).exps=!0,function(e){e.exps=!0,e.lbp=25}(ut("yield",function(){var e=f.tokens.prev;f.inES6(!0)&&!f.funct["(generator)"]?("(catch)"!==f.funct["(name)"]||!f.funct["(context)"]["(generator)"])&&q("E046",f.tokens.curr,"yield"):f.inES6()||F("W104",f.tokens.curr,"yield","6"),f.funct["(generator)"]="yielded";var t=!1;f.tokens.next.value==="*"&&(t=!0,V("*"));if(this.line===G(f.tokens.next)||!f.inMoz()){if(t||f.tokens.next.id!==";"&&!f.option.asi&&!f.tokens.next.reach&&f.tokens.next.nud)Y(f.tokens.curr,f.tokens.next),this.first=Q(10),this.first.type==="(punctuator)"&&this.first.value==="="&&!this.first.paren&&!f.option.boss&&I("W093",this.first.line,this.first.character);f.inMoz()&&f.tokens.next.id!==")"&&(e.lbp>30||!e.assign&&!J()||e.id==="yield")&&q("E050",this)}else f.option.asi||Z(this);return this})),it("throw",function(){return Z(this),this.first=Q(20),kt(this),this}).exps=!0,it("import",function(){f.inES6()||F("W119",f.tokens.curr,"import","6");if(f.tokens.next.type==="(string)")return V("(string)"),this;if(f.tokens.next.identifier){this.name=Ct(),f.funct["(scope)"].addlabel(this.name,{type:"const",token:f.tokens.curr});if(f.tokens.next.value!==",")return V("from"),V("(string)"),this;V(",")}if(f.tokens.next.id==="*")V("*"),V("as"),f.tokens.next.identifier&&(this.name=Ct(),f.funct["(scope)"].addlabel(this.name,{type:"const",token:f.tokens.curr}));else{V("{");for(;;){if(f.tokens.next.value==="}"){V("}");break}var e;f.tokens.next.type==="default"?(e="default",V("default")):e=Ct(),f.tokens.next.value==="as"&&(V("as"),e=Ct()),f.funct["(scope)"].addlabel(e,{type:"const",token:f.tokens.curr});if(f.tokens.next.value!==","){if(f.tokens.next.value==="}"){V("}");break}q("E024",f.tokens.next,f.tokens.next.value);break}V(",")}}return V("from"),V("(string)"),this}).exps=!0,it("export",function(){var e=!0,t,n;f.inES6()||(F("W119",f.tokens.curr,"export","6"),e=!1),f.funct["(scope)"].block.isGlobal()||(q("E053",f.tokens.curr),e=!1);if(f.tokens.next.value==="*")return V("*"),V("from"),V("(string)"),this;if(f.tokens.next.type==="default"){f.nameStack.set(f.tokens.next),V("default");var r=f.tokens.next.id;if(r==="function"||r==="class")this.block=!0;return t=W(),Q(10),n=t.value,this.block&&(f.funct["(scope)"].addlabel(n,{type:r,token:t}),f.funct["(scope)"].setExported(n,t)),this}if(f.tokens.next.value==="{"){V("{");var i=[];for(;;){f.tokens.next.identifier||q("E030",f.tokens.next,f.tokens.next.value),V(),i.push(f.tokens.curr),f.tokens.next.value==="as"&&(V("as"),f.tokens.next.identifier||q("E030",f.tokens.next,f.tokens.next.value),V());if(f.tokens.next.value!==","){if(f.tokens.next.value==="}"){V("}");break}q("E024",f.tokens.next,f.tokens.next.value);break}V(",")}return f.tokens.next.value==="from"?(V("from"),V("(string)")):e&&i.forEach(function(e){f.funct["(scope)"].setExported(e.value,e)}),this}if(f.tokens.next.id==="var")V("var"),f.tokens.curr.fud({inexport:!0});else if(f.tokens.next.id==="let")V("let"),f.tokens.curr.fud({inexport:!0});else if(f.tokens.next.id==="const")V("const"),f.tokens.curr.fud({inexport:!0});else if(f.tokens.next.id==="function")this.block=!0,V("function"),f.syntax["function"].fud({inexport:!0});else if(f.tokens.next.id==="class"){this.block=!0,V("class");var s=f.tokens.next;f.syntax["class"].fud(),f.funct["(scope)"].setExported(s.value,s)}else q("E024",f.tokens.next,f.tokens.next.value);return this}).exps=!0,lt("abstract"),lt("boolean"),lt("byte"),lt("char"),lt("class",{es5:!0,nud:sn}),lt("double"),lt("enum",{es5:!0}),lt("export",{es5:!0}),lt("extends",{es5:!0}),lt("final"),lt("float"),lt("goto"),lt("implements",{es5:!0,strictOnly:!0}),lt("import",{es5:!0}),lt("int"),lt("interface",{es5:!0,strictOnly:!0}),lt("long"),lt("native"),lt("package",{es5:!0,strictOnly:!0}),lt("private",{es5:!0,strictOnly:!0}),lt("protected",{es5:!0,strictOnly:!0}),lt("public",{es5:!0,strictOnly:!0}),lt("short"),lt("static",{es5:!0,strictOnly:!0}),lt("super",{es5:!0}),lt("synchronized"),lt("transient"),lt("volatile");var an=function(){var e,t,n,r=-1,i=0,s={};hn(f.tokens.curr,["[","{"])&&(i+=1);do{n=r===-1?f.tokens.curr:e,e=r===-1?f.tokens.next:W(r),t=W(r+1),r+=1,hn(e,["[","{"])?i+=1:hn(e,["]","}"])&&(i-=1);if(i===1&&e.identifier&&e.value==="for"&&!pn(n,".")){s.isCompArray=!0,s.notJson=!0;break}if(i===0&&hn(e,["}","]"])){if(t.value==="="){s.isDestAssign=!0,s.notJson=!0;break}if(t.value==="."){s.notJson=!0;break}}pn(e,";")&&(s.isBlock=!0,s.notJson=!0)}while(i>0&&e.id!=="(end)");return s},vn=function(){function i(e){var t=n.variables.filter(function(t){if(t.value===e)return t.undef=!1,e}).length;return t!==0}function s(e){var t=n.variables.filter(function(t){if(t.value===e&&!t.undef)return t.unused===!0&&(t.unused=!1),e}).length;return t===0}var e=function(){this.mode="use",this.variables=[]},t=[],n;return{stack:function(){n=new e,t.push(n)},unstack:function(){n.variables.filter(function(e){e.unused&&F("W098",e.token,e.raw_text||e.value),e.undef&&f.funct["(scope)"].block.use(e.value,e.token)}),t.splice(-1,1),n=t[t.length-1]},setState:function(e){r.contains(["use","define","generate","filter"],e)&&(n.mode=e)},check:function(e){if(!n)return;return n&&n.mode==="use"?(s(e)&&n.variables.push({funct:f.funct,token:f.tokens.curr,value:e,undef:!0,unused:!1}),!0):n&&n.mode==="define"?(i(e)||n.variables.push({funct:f.funct,token:f.tokens.curr,value:e,undef:!1,unused:!0}),!0):n&&n.mode==="generate"?(f.funct["(scope)"].block.use(e,f.tokens.curr),!0):n&&n.mode==="filter"?(s(e)&&f.funct["(scope)"].block.use(e,f.tokens.curr),!0):!1}}},gn=function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},yn=function(t,i,o){function U(e,t){if(!e)return;!Array.isArray(e)&&typeof e=="object"&&(e=Object.keys(e)),e.forEach(t)}var a,l,c,d,A,O,M={},P={};i=r.clone(i),f.reset(),i&&i.scope?p.scope=i.scope:(p.errors=[],p.undefs=[],p.internals=[],p.blacklist={},p.scope="(main)"),S=Object.create(null),D(S,s.ecmaIdentifiers[3]),D(S,s.reservedVars),D(S,o||{}),n=Object.create(null);var j=Object.create(null);if(i){U(i.predef||null,function(e){var t,n;e[0]==="-"?(t=e.slice(1),p.blacklist[t]=t,delete S[t]):(n=Object.getOwnPropertyDescriptor(i.predef,e),S[e]=n?n.value:!1)}),U(i.exported||null,function(e){j[e]=!0}),delete i.predef,delete i.exported,O=Object.keys(i);for(c=0;c<O.length;c++)if(/^-W\d{3}$/g.test(O[c]))P[O[c].slice(1)]=!0;else{var z=O[c];M[z]=i[z],(z==="esversion"&&i[z]===5||z==="es5"&&i[z])&&F("I003"),O[c]==="newcap"&&i[z]===!1&&(M["(explicitNewcap)"]=!0)}}f.option=M,f.ignored=P,f.option.indent=f.option.indent||4,f.option.maxerr=f.option.maxerr||50,g=1;var W=h(f,S,j,n);W.on("warning",function(e){F.apply(null,[e.code,e.token].concat(e.data))}),W.on("error",function(e){q.apply(null,[e.code,e.token].concat(e.data))}),f.funct=Rt("(global)",null,{"(global)":!0,"(scope)":W,"(comparray)":vn(),"(metrics)":Vt(f.tokens.next)}),v=[f.funct],T=[],x=null,w={},E=null,m=!1,y=[];if(!L(t)&&!Array.isArray(t))return R("E004",0),!1;e={get isJSON(){return f.jsonMode},getOption:function(e){return f.option[e]||null},getCache:function(e){return f.cache[e]},setCache:function(e,t){f.cache[e]=t},warn:function(e,t){I.apply(null,[e,t.line,t.char].concat(t.data))},on:function(e,t){e.split(" ").forEach(function(e){C.on(e,t)}.bind(this))}},C.removeAllListeners(),(N||[]).forEach(function(t){t(e)}),f.tokens.prev=f.tokens.curr=f.tokens.next=f.syntax["(begin)"],i&&i.ignoreDelimiters&&(Array.isArray(i.ignoreDelimiters)||(i.ignoreDelimiters=[i.ignoreDelimiters]),i.ignoreDelimiters.forEach(function(e){if(!e.start||!e.end)return;d=gn(e.start)+"[\\s\\S]*?"+gn(e.end),A=new RegExp(d,"ig"),t=t.replace(A,function(e){return e.replace(/./g," ")})})),b=new u(t),b.on("warning",function(e){I.apply(null,[e.code,e.line,e.character].concat(e.data))}),b.on("error",function(e){R.apply(null,[e.code,e.line,e.character].concat(e.data))}),b.on("fatal",function(e){B("E041",e.line,e.from)}),b.on("Identifier",function(e){C.emit("Identifier",e)}),b.on("String",function(e){C.emit("String",e)}),b.on("Number",function(e){C.emit("Number",e)}),b.start();for(var X in i)r.has(i,X)&&k(X,f.tokens.curr);H(),D(S,o||{}),tt.first=!0;try{V();switch(f.tokens.next.id){case"{":case"[":dn();break;default:Mt(),f.directive["use strict"]&&f.option.strict!=="global"&&F("W097",f.tokens.prev),Ot()}f.tokens.next.id!=="(end)"&&B("E041",f.tokens.curr.line),f.funct["(scope)"].unstack()}catch($){if(!$||$.name!=="JSHintError")throw $;var J=f.tokens.next||{};p.errors.push({scope:"(main)",raw:$.raw,code:$.code,reason:$.message,line:$.line||J.line,character:$.character||J.from},null)}if(p.scope==="(main)"){i=i||{};for(a=0;a<p.internals.length;a+=1)l=p.internals[a],i.scope=l.elem,yn(l.value,i,o)}return p.errors.length===0};return yn.addModule=function(e){N.push(e)},yn.addModule(l.register),yn.data=function(){var e={functions:[],options:f.option},t,n,r,i,s,o;yn.errors.length&&(e.errors=yn.errors),f.jsonMode&&(e.json=!0);var u=f.funct["(scope)"].getImpliedGlobals();u.length>0&&(e.implieds=u),T.length>0&&(e.urls=T),o=f.funct["(scope)"].getUsedOrDefinedGlobals(),o.length>0&&(e.globals=o);for(r=1;r<v.length;r+=1){n=v[r],t={};for(i=0;i<d.length;i+=1)t[d[i]]=[];for(i=0;i<d.length;i+=1)t[d[i]].length===0&&delete t[d[i]];t.name=n["(name)"],t.param=n["(params)"],t.line=n["(line)"],t.character=n["(character)"],t.last=n["(last)"],t.lastcharacter=n["(lastcharacter)"],t.metrics={complexity:n["(metrics)"].ComplexityCount,parameters:n["(metrics)"].arity,statements:n["(metrics)"].statementCount},e.functions.push(t)}var a=f.funct["(scope)"].getUnuseds();a.length>0&&(e.unused=a);for(s in w)if(typeof w[s]=="number"){e.member=w;break}return e},yn.jshint=yn,yn}();typeof n=="object"&&n&&(n.JSHINT=p)},{"../lodash":"/node_modules/jshint/lodash.js","./lex.js":"/node_modules/jshint/src/lex.js","./messages.js":"/node_modules/jshint/src/messages.js","./options.js":"/node_modules/jshint/src/options.js","./reg.js":"/node_modules/jshint/src/reg.js","./scope-manager.js":"/node_modules/jshint/src/scope-manager.js","./state.js":"/node_modules/jshint/src/state.js","./style.js":"/node_modules/jshint/src/style.js","./vars.js":"/node_modules/jshint/src/vars.js",events:"/node_modules/browserify/node_modules/events/events.js"}],"/node_modules/jshint/src/lex.js":[function(e,t,n){"use strict";function h(){var e=[];return{push:function(t){e.push(t)},check:function(){for(var t=0;t<e.length;++t)e[t]();e.splice(0,e.length)}}}function p(e){var t=e;typeof t=="string"&&(t=t.replace(/\r\n/g,"\n").replace(/\r/g,"\n").split("\n")),t[0]&&t[0].substr(0,2)==="#!"&&(t[0].indexOf("node")!==-1&&(o.option.node=!0),t[0]=""),this.emitter=new i.EventEmitter,this.source=e,this.setLines(t),this.prereg=!0,this.line=0,this.char=1,this.from=1,this.input="",this.inComment=!1,this.context=[],this.templateStarts=[];for(var n=0;n<o.option.indent;n+=1)o.tab+=" ";this.ignoreLinterErrors=!1}var r=e("../lodash"),i=e("events"),s=e("./reg.js"),o=e("./state.js").state,u=e("../data/ascii-identifier-data.js"),a=u.asciiIdentifierStartTable,f=u.asciiIdentifierPartTable,l={Identifier:1,Punctuator:2,NumericLiteral:3,StringLiteral:4,Comment:5,Keyword:6,NullLiteral:7,BooleanLiteral:8,RegExp:9,TemplateHead:10,TemplateMiddle:11,TemplateTail:12,NoSubstTemplate:13},c={Block:1,Template:2};p.prototype={_lines:[],inContext:function(e){return this.context.length>0&&this.context[this.context.length-1].type===e},pushContext:function(e){this.context.push({type:e})},popContext:function(){return this.context.pop()},isContext:function(e){return this.context.length>0&&this.context[this.context.length-1]===e},currentContext:function(){return this.context.length>0&&this.context[this.context.length-1]},getLines:function(){return this._lines=o.lines,this._lines},setLines:function(e){this._lines=e,o.lines=this._lines},peek:function(e){return this.input.charAt(e||0)},skip:function(e){e=e||1,this.char+=e,this.input=this.input.slice(e)},on:function(e,t){e.split(" ").forEach(function(e){this.emitter.on(e,t)}.bind(this))},trigger:function(){this.emitter.emit.apply(this.emitter,Array.prototype.slice.call(arguments))},triggerAsync:function(e,t,n,r){n.push(function(){r()&&this.trigger(e,t)}.bind(this))},scanPunctuator:function(){var e=this.peek(),t,n,r;switch(e){case".":if(/^[0-9]$/.test(this.peek(1)))return null;if(this.peek(1)==="."&&this.peek(2)===".")return{type:l.Punctuator,value:"..."};case"(":case")":case";":case",":case"[":case"]":case":":case"~":case"?":return{type:l.Punctuator,value:e};case"{":return this.pushContext(c.Block),{type:l.Punctuator,value:e};case"}":return this.inContext(c.Block)&&this.popContext(),{type:l.Punctuator,value:e};case"#":return{type:l.Punctuator,value:e};case"":return null}return t=this.peek(1),n=this.peek(2),r=this.peek(3),e===">"&&t===">"&&n===">"&&r==="="?{type:l.Punctuator,value:">>>="}:e==="="&&t==="="&&n==="="?{type:l.Punctuator,value:"==="}:e==="!"&&t==="="&&n==="="?{type:l.Punctuator,value:"!=="}:e===">"&&t===">"&&n===">"?{type:l.Punctuator,value:">>>"}:e==="<"&&t==="<"&&n==="="?{type:l.Punctuator,value:"<<="}:e===">"&&t===">"&&n==="="?{type:l.Punctuator,value:">>="}:e==="="&&t===">"?{type:l.Punctuator,value:e+t}:e===t&&"+-<>&|".indexOf(e)>=0?{type:l.Punctuator,value:e+t}:"<>=!+-*%&|^".indexOf(e)>=0?t==="="?{type:l.Punctuator,value:e+t}:{type:l.Punctuator,value:e}:e==="/"?t==="="?{type:l.Punctuator,value:"/="}:{type:l.Punctuator,value:"/"}:null},scanComments:function(){function u(e,t,n){var r=["jshint","jslint","members","member","globals","global","exported"],i=!1,u=e+t,a="plain";return n=n||{},n.isMultiline&&(u+="*/"),t=t.replace(/\n/g," "),e==="/*"&&s.fallsThrough.test(t)&&(i=!0,a="falls through"),r.forEach(function(n){if(i)return;if(e==="//"&&n!=="jshint")return;t.charAt(n.length)===" "&&t.substr(0,n.length)===n&&(i=!0,e+=n,t=t.substr(n.length)),!i&&t.charAt(0)===" "&&t.charAt(n.length+1)===" "&&t.substr(1,n.length)===n&&(i=!0,e=e+" "+n,t=t.substr(n.length+1));if(!i)return;switch(n){case"member":a="members";break;case"global":a="globals";break;default:var r=t.split(":").map(function(e){return e.replace(/^\s+/,"").replace(/\s+$/,"")});if(r.length===2)switch(r[0]){case"ignore":switch(r[1]){case"start":o.ignoringLinterErrors=!0,i=!1;break;case"end":o.ignoringLinterErrors=!1,i=!1}}a=n}}),{type:l.Comment,commentType:a,value:u,body:t,isSpecial:i,isMultiline:n.isMultiline||!1,isMalformed:n.isMalformed||!1}}var e=this.peek(),t=this.peek(1),n=this.input.substr(2),r=this.line,i=this.char,o=this;if(e==="*"&&t==="/")return this.trigger("error",{code:"E018",line:r,character:i}),this.skip(2),null;if(e!=="/"||t!=="*"&&t!=="/")return null;if(t==="/")return this.skip(this.input.length),u("//",n);var a="";if(t==="*"){this.inComment=!0,this.skip(2);while(this.peek()!=="*"||this.peek(1)!=="/")if(this.peek()===""){a+="\n";if(!this.nextLine())return this.trigger("error",{code:"E017",line:r,character:i}),this.inComment=!1,u("/*",a,{isMultiline:!0,isMalformed:!0})}else a+=this.peek(),this.skip();return this.skip(2),this.inComment=!1,u("/*",a,{isMultiline:!0})}},scanKeyword:function(){var e=/^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(this.input),t=["if","in","do","var","for","new","try","let","this","else","case","void","with","enum","while","break","catch","throw","const","yield","class","super","return","typeof","delete","switch","export","import","default","finally","extends","function","continue","debugger","instanceof"];return e&&t.indexOf(e[0])>=0?{type:l.Keyword,value:e[0]}:null},scanIdentifier:function(){function i(e){return e>256}function s(e){return e>256}function o(e){return/^[0-9a-fA-F]$/.test(e)}function p(e){return e.replace(/\\u([0-9a-fA-F]{4})/g,function(e,t){return String.fromCharCode(parseInt(t,16))})}var e="",t=0,n,r,u=function(){t+=1;if(this.peek(t)!=="u")return null;var e=this.peek(t+1),n=this.peek(t+2),r=this.peek(t+3),i=this.peek(t+4),u;return o(e)&&o(n)&&o(r)&&o(i)?(u=parseInt(e+n+r+i,16),f[u]||s(u)?(t+=5,"\\u"+e+n+r+i):null):null}.bind(this),c=function(){var e=this.peek(t),n=e.charCodeAt(0);return n===92?u():n<128?a[n]?(t+=1,e):null:i(n)?(t+=1,e):null}.bind(this),h=function(){var e=this.peek(t),n=e.charCodeAt(0);return n===92?u():n<128?f[n]?(t+=1,e):null:s(n)?(t+=1,e):null}.bind(this);r=c();if(r===null)return null;e=r;for(;;){r=h();if(r===null)break;e+=r}switch(e){case"true":case"false":n=l.BooleanLiteral;break;case"null":n=l.NullLiteral;break;default:n=l.Identifier}return{type:n,value:p(e),text:e,tokenLength:e.length}},scanNumericLiteral:function(){function f(e){return/^[0-9]$/.test(e)}function c(e){return/^[0-7]$/.test(e)}function h(e){return/^[01]$/.test(e)}function p(e){return/^[0-9a-fA-F]$/.test(e)}function d(e){return e==="$"||e==="_"||e==="\\"||e>="a"&&e<="z"||e>="A"&&e<="Z"}var e=0,t="",n=this.input.length,r=this.peek(e),i,s=f,u=10,a=!1;if(r!=="."&&!f(r))return null;if(r!=="."){t=this.peek(e),e+=1,r=this.peek(e);if(t==="0"){if(r==="x"||r==="X")s=p,u=16,e+=1,t+=r;if(r==="o"||r==="O")s=c,u=8,o.inES6(!0)||this.trigger("warning",{code:"W119",line:this.line,character:this.char,data:["Octal integer literal","6"]}),e+=1,t+=r;if(r==="b"||r==="B")s=h,u=2,o.inES6(!0)||this.trigger("warning",{code:"W119",line:this.line,character:this.char,data:["Binary integer literal","6"]}),e+=1,t+=r;c(r)&&(s=c,u=8,a=!0,i=!1,e+=1,t+=r),!c(r)&&f(r)&&(e+=1,t+=r)}while(e<n){r=this.peek(e);if(a&&f(r))i=!0;else if(!s(r))break;t+=r,e+=1}if(s!==f){if(!a&&t.length<=2)return{type:l.NumericLiteral,value:t,isMalformed:!0};if(e<n){r=this.peek(e);if(d(r))return null}return{type:l.NumericLiteral,value:t,base:u,isLegacy:a,isMalformed:!1}}}if(r==="."){t+=r,e+=1;while(e<n){r=this.peek(e);if(!f(r))break;t+=r,e+=1}}if(r==="e"||r==="E"){t+=r,e+=1,r=this.peek(e);if(r==="+"||r==="-")t+=this.peek(e),e+=1;r=this.peek(e);if(!f(r))return null;t+=r,e+=1;while(e<n){r=this.peek(e);if(!f(r))break;t+=r,e+=1}}if(e<n){r=this.peek(e);if(d(r))return null}return{type:l.NumericLiteral,value:t,base:u,isMalformed:!isFinite(t)}},scanEscapeSequence:function(e){var t=!1,n=1;this.skip();var r=this.peek();switch(r){case"'":this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\'"]},e,function(){return o.jsonMode});break;case"b":r="\\b";break;case"f":r="\\f";break;case"n":r="\\n";break;case"r":r="\\r";break;case"t":r="\\t";break;case"0":r="\\0";var i=parseInt(this.peek(1),10);this.triggerAsync("warning",{code:"W115",line:this.line,character:this.char},e,function(){return i>=0&&i<=7&&o.isStrict()});break;case"u":var s=this.input.substr(1,4),u=parseInt(s,16);isNaN(u)&&this.trigger("warning",{code:"W052",line:this.line,character:this.char,data:["u"+s]}),r=String.fromCharCode(u),n=5;break;case"v":this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\v"]},e,function(){return o.jsonMode}),r=" ";break;case"x":var a=parseInt(this.input.substr(1,2),16);this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\x-"]},e,function(){return o.jsonMode}),r=String.fromCharCode(a),n=3;break;case"\\":r="\\\\";break;case'"':r='\\"';break;case"/":break;case"":t=!0,r=""}return{"char":r,jump:n,allowNewLine:t}},scanTemplateLiteral:function(e){var t,n="",r,i=this.line,s=this.char,u=this.templateStarts.length;if(!o.inES6(!0))return null;if(this.peek()==="`")t=l.TemplateHead,this.templateStarts.push({line:this.line,"char":this.char}),u=this.templateStarts.length,this.skip(1),this.pushContext(c.Template);else{if(!this.inContext(c.Template)||this.peek()!=="}")return null;t=l.TemplateMiddle}while(this.peek()!=="`"){while((r=this.peek())===""){n+="\n";if(!this.nextLine()){var a=this.templateStarts.pop();return this.trigger("error",{code:"E052",line:a.line,character:a.char}),{type:t,value:n,startLine:i,startChar:s,isUnclosed:!0,depth:u,context:this.popContext()}}}if(r==="$"&&this.peek(1)==="{")return n+="${",this.skip(2),{type:t,value:n,startLine:i,startChar:s,isUnclosed:!1,depth:u,context:this.currentContext()};if(r==="\\"){var f=this.scanEscapeSequence(e);n+=f.char,this.skip(f.jump)}else r!=="`"&&(n+=r,this.skip(1))}return t=t===l.TemplateHead?l.NoSubstTemplate:l.TemplateTail,this.skip(1),this.templateStarts.pop(),{type:t,value:n,startLine:i,startChar:s,isUnclosed:!1,depth:u,context:this.popContext()}},scanStringLiteral:function(e){var t=this.peek();if(t!=='"'&&t!=="'")return null;this.triggerAsync("warning",{code:"W108",line:this.line,character:this.char},e,function(){return o.jsonMode&&t!=='"'});var n="",r=this.line,i=this.char,s=!1;this.skip();while(this.peek()!==t)if(this.peek()===""){s?(s=!1,this.triggerAsync("warning",{code:"W043",line:this.line,character:this.char},e,function(){return!o.option.multistr}),this.triggerAsync("warning",{code:"W042",line:this.line,character:this.char},e,function(){return o.jsonMode&&o.option.multistr})):this.trigger("warning",{code:"W112",line:this.line,character:this.char});if(!this.nextLine())return this.trigger("error",{code:"E029",line:r,character:i}),{type:l.StringLiteral,value:n,startLine:r,startChar:i,isUnclosed:!0,quote:t}}else{s=!1;var u=this.peek(),a=1;u<" "&&this.trigger("warning",{code:"W113",line:this.line,character:this.char,data:["<non-printable>"]});if(u==="\\"){var f=this.scanEscapeSequence(e);u=f.char,a=f.jump,s=f.allowNewLine}n+=u,this.skip(a)}return this.skip(),{type:l.StringLiteral,value:n,startLine:r,startChar:i,isUnclosed:!1,quote:t}},scanRegExp:function(){var e=0,t=this.input.length,n=this.peek(),r=n,i="",s=[],o=!1,u=!1,a,f=function(){n<" "&&(o=!0,this.trigger("warning",{code:"W048",line:this.line,character:this.char})),n==="<"&&(o=!0,this.trigger("warning",{code:"W049",line:this.line,character:this.char,data:[n]}))}.bind(this);if(!this.prereg||n!=="/")return null;e+=1,a=!1;while(e<t){n=this.peek(e),r+=n,i+=n;if(u){n==="]"&&(this.peek(e-1)!=="\\"||this.peek(e-2)==="\\")&&(u=!1),n==="\\"&&(e+=1,n=this.peek(e),i+=n,r+=n,f()),e+=1;continue}if(n==="\\"){e+=1,n=this.peek(e),i+=n,r+=n,f();if(n==="/"){e+=1;continue}if(n==="["){e+=1;continue}}if(n==="["){u=!0,e+=1;continue}if(n==="/"){i=i.substr(0,i.length-1),a=!0,e+=1;break}e+=1}if(!a)return this.trigger("error",{code:"E015",line:this.line,character:this.from}),void this.trigger("fatal",{line:this.line,from:this.from});while(e<t){n=this.peek(e);if(!/[gim]/.test(n))break;s.push(n),r+=n,e+=1}try{new RegExp(i,s.join(""))}catch(c){o=!0,this.trigger("error",{code:"E016",line:this.line,character:this.char,data:[c.message]})}return{type:l.RegExp,value:r,flags:s,isMalformed:o}},scanNonBreakingSpaces:function(){return o.option.nonbsp?this.input.search(/(\u00A0)/):-1},scanUnsafeChars:function(){return this.input.search(s.unsafeChars)},next:function(e){this.from=this.char;var t;if(/\s/.test(this.peek())){t=this.char;while(/\s/.test(this.peek()))this.from+=1,this.skip()}var n=this.scanComments()||this.scanStringLiteral(e)||this.scanTemplateLiteral(e);return n?n:(n=this.scanRegExp()||this.scanPunctuator()||this.scanKeyword()||this.scanIdentifier()||this.scanNumericLiteral(),n?(this.skip(n.tokenLength||n.value.length),n):null)},nextLine:function(){var e;if(this.line>=this.getLines().length)return!1;this.input=this.getLines()[this.line],this.line+=1,this.char=1,this.from=1;var t=this.input.trim(),n=function(){return r.some(arguments,function(e){return t.indexOf(e)===0})},i=function(){return r.some(arguments,function(e){return t.indexOf(e,t.length-e.length)!==-1})};this.ignoringLinterErrors===!0&&!n("/*","//")&&(!this.inComment||!i("*/"))&&(this.input=""),e=this.scanNonBreakingSpaces(),e>=0&&this.trigger("warning",{code:"W125",line:this.line,character:e+1}),this.input=this.input.replace(/\t/g,o.tab),e=this.scanUnsafeChars(),e>=0&&this.trigger("warning",{code:"W100",line:this.line,character:e});if(!this.ignoringLinterErrors&&o.option.maxlen&&o.option.maxlen<this.input.length){var u=this.inComment||n.call(t,"//")||n.call(t,"/*"),a=!u||!s.maxlenException.test(t);a&&this.trigger("warning",{code:"W101",line:this.line,character:this.input.length})}return!0},start:function(){this.nextLine()},token:function(){function n(e,t){if(!e.reserved)return!1;var n=e.meta;if(n&&n.isFutureReservedWord&&o.inES5()){if(!n.es5)return!1;if(n.strictOnly&&!o.option.strict&&!o.isStrict())return!1;if(t)return!1}return!0}var e=h(),t,i=function(t,i,s,u){var a;t!=="(endline)"&&t!=="(end)"&&(this.prereg=!1);if(t==="(punctuator)"){switch(i){case".":case")":case"~":case"#":case"]":case"++":case"--":this.prereg=!1;break;default:this.prereg=!0}a=Object.create(o.syntax[i]||o.syntax["(error)"])}if(t==="(identifier)"){if(i==="return"||i==="case"||i==="typeof")this.prereg=!0;r.has(o.syntax,i)&&(a=Object.create(o.syntax[i]||o.syntax["(error)"]),n(a,s&&t==="(identifier)")||(a=null))}return a||(a=Object.create(o.syntax[t])),a.identifier=t==="(identifier)",a.type=a.type||t,a.value=i,a.line=this.line,a.character=this.char,a.from=this.from,a.identifier&&u&&(a.raw_text=u.text||u.value),u&&u.startLine&&u.startLine!==this.line&&(a.startLine=u.startLine),u&&u.context&&(a.context=u.context),u&&u.depth&&(a.depth=u.depth),u&&u.isUnclosed&&(a.isUnclosed=u.isUnclosed),s&&a.identifier&&(a.isProperty=s),a.check=e.check,a}.bind(this);for(;;){if(!this.input.length)return this.nextLine()?i("(endline)",""):this.exhausted?null:(this.exhausted=!0,i("(end)",""));t=this.next(e);if(!t){this.input.length&&(this.trigger("error",{code:"E024",line:this.line,character:this.char,data:[this.peek()]}),this.input="");continue}switch(t.type){case l.StringLiteral:return this.triggerAsync("String",{line:this.line,"char":this.char,from:this.from,startLine:t.startLine,startChar:t.startChar,value:t.value,quote:t.quote},e,function(){return!0}),i("(string)",t.value,null,t);case l.TemplateHead:return this.trigger("TemplateHead",{line:this.line,"char":this.char,from:this.from,startLine:t.startLine,startChar:t.startChar,value:t.value}),i("(template)",t.value,null,t);case l.TemplateMiddle:return this.trigger("TemplateMiddle",{line:this.line,"char":this.char,from:this.from,startLine:t.startLine,startChar:t.startChar,value:t.value}),i("(template middle)",t.value,null,t);case l.TemplateTail:return this.trigger("TemplateTail",{line:this.line,"char":this.char,from:this.from,startLine:t.startLine,startChar:t.startChar,value:t.value}),i("(template tail)",t.value,null,t);case l.NoSubstTemplate:return this.trigger("NoSubstTemplate",{line:this.line,"char":this.char,from:this.from,startLine:t.startLine,startChar:t.startChar,value:t.value}),i("(no subst template)",t.value,null,t);case l.Identifier:this.triggerAsync("Identifier",{line:this.line,"char":this.char,from:this.form,name:t.value,raw_name:t.text,isProperty:o.tokens.curr.id==="."},e,function(){return!0});case l.Keyword:case l.NullLiteral:case l.BooleanLiteral:return i("(identifier)",t.value,o.tokens.curr.id===".",t);case l.NumericLiteral:return t.isMalformed&&this.trigger("warning",{code:"W045",line:this.line,character:this.char,data:[t.value]}),this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["0x-"]},e,function(){return t.base===16&&o.jsonMode}),this.triggerAsync("warning",{code:"W115",line:this.line,character:this.char},e,function(){return o.isStrict()&&t.base===8&&t.isLegacy}),this.trigger("Number",{line:this.line,"char":this.char,from:this.from,value:t.value,base:t.base,isMalformed:t.malformed}),i("(number)",t.value);case l.RegExp:return i("(regexp)",t.value);case l.Comment:o.tokens.curr.comment=!0;if(t.isSpecial)return{id:"(comment)",value:t.value,body:t.body,type:t.commentType,isSpecial:t.isSpecial,line:this.line,character:this.char,from:this.from};break;case"":break;default:return i("(punctuator)",t.value)}}}},n.Lexer=p,n.Context=c},{"../data/ascii-identifier-data.js":"/node_modules/jshint/data/ascii-identifier-data.js","../lodash":"/node_modules/jshint/lodash.js","./reg.js":"/node_modules/jshint/src/reg.js","./state.js":"/node_modules/jshint/src/state.js",events:"/node_modules/browserify/node_modules/events/events.js"}],"/node_modules/jshint/src/messages.js":[function(e,t,n){"use strict";var r=e("../lodash"),i={E001:"Bad option: '{a}'.",E002:"Bad option value.",E003:"Expected a JSON value.",E004:"Input is neither a string nor an array of strings.",E005:"Input is empty.",E006:"Unexpected early end of program.",E007:'Missing "use strict" statement.',E008:"Strict violation.",E009:"Option 'validthis' can't be used in a global scope.",E010:"'with' is not allowed in strict mode.",E011:"'{a}' has already been declared.",E012:"const '{a}' is initialized to 'undefined'.",E013:"Attempting to override '{a}' which is a constant.",E014:"A regular expression literal can be confused with '/='.",E015:"Unclosed regular expression.",E016:"Invalid regular expression.",E017:"Unclosed comment.",E018:"Unbegun comment.",E019:"Unmatched '{a}'.",E020:"Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.",E021:"Expected '{a}' and instead saw '{b}'.",E022:"Line breaking error '{a}'.",E023:"Missing '{a}'.",E024:"Unexpected '{a}'.",E025:"Missing ':' on a case clause.",E026:"Missing '}' to match '{' from line {a}.",E027:"Missing ']' to match '[' from line {a}.",E028:"Illegal comma.",E029:"Unclosed string.",E030:"Expected an identifier and instead saw '{a}'.",E031:"Bad assignment.",E032:"Expected a small integer or 'false' and instead saw '{a}'.",E033:"Expected an operator and instead saw '{a}'.",E034:"get/set are ES5 features.",E035:"Missing property name.",E036:"Expected to see a statement and instead saw a block.",E037:null,E038:null,E039:"Function declarations are not invocable. Wrap the whole function invocation in parens.",E040:"Each value should have its own case label.",E041:"Unrecoverable syntax error.",E042:"Stopping.",E043:"Too many errors.",E044:null,E045:"Invalid for each loop.",E046:"A yield statement shall be within a generator function (with syntax: `function*`)",E047:null,E048:"{a} declaration not directly within block.",E049:"A {a} cannot be named '{b}'.",E050:"Mozilla requires the yield expression to be parenthesized here.",E051:null,E052:"Unclosed template literal.",E053:"Export declaration must be in global scope.",E054:"Class properties must be methods. Expected '(' but instead saw '{a}'.",E055:"The '{a}' option cannot be set after any executable code.",E056:"'{a}' was used before it was declared, which is illegal for '{b}' variables.",E057:"Invalid meta property: '{a}.{b}'.",E058:"Missing semicolon."},s={W001:"'hasOwnProperty' is a really bad name.",W002:"Value of '{a}' may be overwritten in IE 8 and earlier.",W003:"'{a}' was used before it was defined.",W004:"'{a}' is already defined.",W005:"A dot following a number can be confused with a decimal point.",W006:"Confusing minuses.",W007:"Confusing plusses.",W008:"A leading decimal point can be confused with a dot: '{a}'.",W009:"The array literal notation [] is preferable.",W010:"The object literal notation {} is preferable.",W011:null,W012:null,W013:null,W014:"Bad line breaking before '{a}'.",W015:null,W016:"Unexpected use of '{a}'.",W017:"Bad operand.",W018:"Confusing use of '{a}'.",W019:"Use the isNaN function to compare with NaN.",W020:"Read only.",W021:"Reassignment of '{a}', which is is a {b}. Use 'var' or 'let' to declare bindings that may change.",W022:"Do not assign to the exception parameter.",W023:"Expected an identifier in an assignment and instead saw a function invocation.",W024:"Expected an identifier and instead saw '{a}' (a reserved word).",W025:"Missing name in function declaration.",W026:"Inner functions should be listed at the top of the outer function.",W027:"Unreachable '{a}' after '{b}'.",W028:"Label '{a}' on {b} statement.",W030:"Expected an assignment or function call and instead saw an expression.",W031:"Do not use 'new' for side effects.",W032:"Unnecessary semicolon.",W033:"Missing semicolon.",W034:'Unnecessary directive "{a}".',W035:"Empty block.",W036:"Unexpected /*member '{a}'.",W037:"'{a}' is a statement label.",W038:"'{a}' used out of scope.",W039:"'{a}' is not allowed.",W040:"Possible strict violation.",W041:"Use '{a}' to compare with '{b}'.",W042:"Avoid EOL escaping.",W043:"Bad escaping of EOL. Use option multistr if needed.",W044:"Bad or unnecessary escaping.",W045:"Bad number '{a}'.",W046:"Don't use extra leading zeros '{a}'.",W047:"A trailing decimal point can be confused with a dot: '{a}'.",W048:"Unexpected control character in regular expression.",W049:"Unexpected escaped character '{a}' in regular expression.",W050:"JavaScript URL.",W051:"Variables should not be deleted.",W052:"Unexpected '{a}'.",W053:"Do not use {a} as a constructor.",W054:"The Function constructor is a form of eval.",W055:"A constructor name should start with an uppercase letter.",W056:"Bad constructor.",W057:"Weird construction. Is 'new' necessary?",W058:"Missing '()' invoking a constructor.",W059:"Avoid arguments.{a}.",W060:"document.write can be a form of eval.",W061:"eval can be harmful.",W062:"Wrap an immediate function invocation in parens to assist the reader in understanding that the expression is the result of a function, and not the function itself.",W063:"Math is not a function.",W064:"Missing 'new' prefix when invoking a constructor.",W065:"Missing radix parameter.",W066:"Implied eval. Consider passing a function instead of a string.",W067:"Bad invocation.",W068:"Wrapping non-IIFE function literals in parens is unnecessary.",W069:"['{a}'] is better written in dot notation.",W070:"Extra comma. (it breaks older versions of IE)",W071:"This function has too many statements. ({a})",W072:"This function has too many parameters. ({a})",W073:"Blocks are nested too deeply. ({a})",W074:"This function's cyclomatic complexity is too high. ({a})",W075:"Duplicate {a} '{b}'.",W076:"Unexpected parameter '{a}' in get {b} function.",W077:"Expected a single parameter in set {a} function.",W078:"Setter is defined without getter.",W079:"Redefinition of '{a}'.",W080:"It's not necessary to initialize '{a}' to 'undefined'.",W081:null,W082:"Function declarations should not be placed in blocks. Use a function expression or move the statement to the top of the outer function.",W083:"Don't make functions within a loop.",W084:"Assignment in conditional expression",W085:"Don't use 'with'.",W086:"Expected a 'break' statement before '{a}'.",W087:"Forgotten 'debugger' statement?",W088:"Creating global 'for' variable. Should be 'for (var {a} ...'.",W089:"The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.",W090:"'{a}' is not a statement label.",W091:null,W093:"Did you mean to return a conditional instead of an assignment?",W094:"Unexpected comma.",W095:"Expected a string and instead saw {a}.",W096:"The '{a}' key may produce unexpected results.",W097:'Use the function form of "use strict".',W098:"'{a}' is defined but never used.",W099:null,W100:"This character may get silently deleted by one or more browsers.",W101:"Line is too long.",W102:null,W103:"The '{a}' property is deprecated.",W104:"'{a}' is available in ES{b} (use 'esversion: {b}') or Mozilla JS extensions (use moz).",W105:"Unexpected {a} in '{b}'.",W106:"Identifier '{a}' is not in camel case.",W107:"Script URL.",W108:"Strings must use doublequote.",W109:"Strings must use singlequote.",W110:"Mixed double and single quotes.",W112:"Unclosed string.",W113:"Control character in string: {a}.",W114:"Avoid {a}.",W115:"Octal literals are not allowed in strict mode.",W116:"Expected '{a}' and instead saw '{b}'.",W117:"'{a}' is not defined.",W118:"'{a}' is only available in Mozilla JavaScript extensions (use moz option).",W119:"'{a}' is only available in ES{b} (use 'esversion: {b}').",W120:"You might be leaking a variable ({a}) here.",W121:"Extending prototype of native object: '{a}'.",W122:"Invalid typeof value '{a}'",W123:"'{a}' is already defined in outer scope.",W124:"A generator function shall contain a yield statement.",W125:"This line contains non-breaking spaces: http://jshint.com/doc/options/#nonbsp",W126:"Unnecessary grouping operator.",W127:"Unexpected use of a comma operator.",W128:"Empty array elements require elision=true.",W129:"'{a}' is defined in a future version of JavaScript. Use a different variable name to avoid migration issues.",W130:"Invalid element after rest element.",W131:"Invalid parameter after rest parameter.",W132:"`var` declarations are forbidden. Use `let` or `const` instead.",W133:"Invalid for-{a} loop left-hand-side: {b}.",W134:"The '{a}' option is only available when linting ECMAScript {b} code.",W135:"{a} may not be supported by non-browser environments.",W136:"'{a}' must be in function scope.",W137:"Empty destructuring.",W138:"Regular parameters should not come after default parameters."},o={I001:"Comma warnings can be turned off with 'laxcomma'.",I002:null,I003:"ES5 option is now set per default"};n.errors={},n.warnings={},n.info={},r.each(i,function(e,t){n.errors[t]={code:t,desc:e}}),r.each(s,function(e,t){n.warnings[t]={code:t,desc:e}}),r.each(o,function(e,t){n.info[t]={code:t,desc:e}})},{"../lodash":"/node_modules/jshint/lodash.js"}],"/node_modules/jshint/src/name-stack.js":[function(e,t,n){"use strict";function r(){this._stack=[]}Object.defineProperty(r.prototype,"length",{get:function(){return this._stack.length}}),r.prototype.push=function(){this._stack.push(null)},r.prototype.pop=function(){this._stack.pop()},r.prototype.set=function(e){this._stack[this.length-1]=e},r.prototype.infer=function(){var e=this._stack[this.length-1],t="",n;if(!e||e.type==="class")e=this._stack[this.length-2];return e?(n=e.type,n!=="(string)"&&n!=="(number)"&&n!=="(identifier)"&&n!=="default"?"(expression)":(e.accessorType&&(t=e.accessorType+" "),t+e.value)):"(empty)"},t.exports=r},{}],"/node_modules/jshint/src/options.js":[function(e,t,n){"use strict";n.bool={enforcing:{bitwise:!0,freeze:!0,camelcase:!0,curly:!0,eqeqeq:!0,futurehostile:!0,notypeof:!0,es3:!0,es5:!0,forin:!0,funcscope:!0,immed:!0,iterator:!0,newcap:!0,noarg:!0,nocomma:!0,noempty:!0,nonbsp:!0,nonew:!0,undef:!0,singleGroups:!1,varstmt:!1,enforceall:!1},relaxing:{asi:!0,multistr:!0,debug:!0,boss:!0,evil:!0,globalstrict:!0,plusplus:!0,proto:!0,scripturl:!0,sub:!0,supernew:!0,laxbreak:!0,laxcomma:!0,validthis:!0,withstmt:!0,moz:!0,noyield:!0,eqnull:!0,lastsemic:!0,loopfunc:!0,expr:!0,esnext:!0,elision:!0},environments:{mootools:!0,couch:!0,jasmine:!0,jquery:!0,node:!0,qunit:!0,rhino:!0,shelljs:!0,prototypejs:!0,yui:!0,mocha:!0,module:!0,wsh:!0,worker:!0,nonstandard:!0,browser:!0,browserify:!0,devel:!0,dojo:!0,typed:!0,phantom:!0},obsolete:{onecase:!0,regexp:!0,regexdash:!0}},n.val={maxlen:!1,indent:!1,maxerr:!1,predef:!1,globals:!1,quotmark:!1,scope:!1,maxstatements:!1,maxdepth:!1,maxparams:!1,maxcomplexity:!1,shadow:!1,strict:!0,unused:!0,latedef:!1,ignore:!1,ignoreDelimiters:!1,esversion:5},n.inverted={bitwise:!0,forin:!0,newcap:!0,plusplus:!0,regexp:!0,undef:!0,eqeqeq:!0,strict:!0},n.validNames=Object.keys(n.val).concat(Object.keys(n.bool.relaxing)).concat(Object.keys(n.bool.enforcing)).concat(Object.keys(n.bool.obsolete)).concat(Object.keys(n.bool.environments)),n.renamed={eqeq:"eqeqeq",windows:"wsh",sloppy:"strict"},n.removed={nomen:!0,onevar:!0,passfail:!0,white:!0,gcl:!0,smarttabs:!0,trailing:!0},n.noenforceall={varstmt:!0,strict:!0}},{}],"/node_modules/jshint/src/reg.js":[function(e,t,n){"use strict";n.unsafeString=/@cc|<\/?|script|\]\s*\]|<\s*!|&lt/i,n.unsafeChars=/[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/,n.needEsc=/[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/,n.needEscGlobal=/[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,n.starSlash=/\*\//,n.identifier=/^([a-zA-Z_$][a-zA-Z0-9_$]*)$/,n.javascriptURL=/^(?:javascript|jscript|ecmascript|vbscript|livescript)\s*:/i,n.fallsThrough=/^\s*falls?\sthrough\s*$/,n.maxlenException=/^(?:(?:\/\/|\/\*|\*) ?)?[^ ]+$/},{}],"/node_modules/jshint/src/scope-manager.js":[function(e,t,n){"use strict";var r=e("../lodash"),i=e("events"),s={},o=function(e,t,n,o){function f(e){u={"(labels)":Object.create(null),"(usages)":Object.create(null),"(breakLabels)":Object.create(null),"(parent)":u,"(type)":e,"(params)":e==="functionparams"||e==="catchparams"?[]:null},a.push(u)}function v(e,t){d.emit("warning",{code:e,token:t,data:r.slice(arguments,2)})}function m(e,t){d.emit("warning",{code:e,token:t,data:r.slice(arguments,2)})}function g(e){u["(usages)"][e]||(u["(usages)"][e]={"(modified)":[],"(reassigned)":[],"(tokens)":[]})}function w(){if(u["(type)"]==="functionparams"){E();return}var e=u["(labels)"];for(var t in e)e[t]&&e[t]["(type)"]!=="exception"&&e[t]["(unused)"]&&b(t,e[t]["(token)"],"var")}function E(){var t=u["(params)"];if(!t)return;var n=t.pop(),r;while(n){var i=u["(labels)"][n];r=y(e.funct["(unusedOption)"]);if(n==="undefined")return;if(i["(unused)"])b(n,i["(token)"],"param",e.funct["(unusedOption)"]);else if(r==="last-param")return;n=t.pop()}}function S(e){for(var t=a.length-1;t>=0;--t){var n=a[t]["(labels)"];if(n[e])return n}}function x(e){for(var t=a.length-1;t>=0;t--){var n=a[t];if(n["(usages)"][e])return n["(usages)"][e];if(n===l)break}return!1}function T(t,n){if(e.option.shadow!=="outer")return;var r=l["(type)"]==="global",i=u["(type)"]==="functionparams",s=!r;for(var o=0;o<a.length;o++){var f=a[o];!i&&a[o+1]===l&&(s=!1),s&&f["(labels)"][t]&&v("W123",n,t),f["(breakLabels)"][t]&&v("W123",n,t)}}function N(t,n,r){e.option.latedef&&(e.option.latedef===!0&&t==="function"||t!=="function")&&v("W003",r,n)}var u,a=[];f("global"),u["(predefined)"]=t;var l=u,c=Object.create(null),h=Object.create(null),p=[],d=new i.EventEmitter,y=function(t){return t===undefined&&(t=e.option.unused),t===!0&&(t="last-param"),t},b=function(e,t,n,r){var i=t.line,s=t.from,o=t.raw_text||e;r=y(r);var u={vars:["var"],"last-param":["var","param"],strict:["var","param","last-param"]};r&&u[r]&&u[r].indexOf(n)!==-1&&v("W098",{line:i,from:s},o),(r||n==="var")&&p.push({name:e,line:i,character:s})},C={on:function(e,t){e.split(" ").forEach(function(e){d.on(e,t)})},isPredefined:function(e){return!this.has(e)&&r.has(a[0]["(predefined)"],e)},stack:function(e){var t=u;f(e),!e&&t["(type)"]==="functionparams"&&(u["(isFuncBody)"]=!0,u["(context)"]=l,l=u)},unstack:function(){var t=a.length>1?a[a.length-2]:null,n=u===l,i=u["(type)"]==="functionparams",f=u["(type)"]==="functionouter",p,d,g=u["(usages)"],y=u["(labels)"],E=Object.keys(g);g.__proto__&&E.indexOf("__proto__")===-1&&E.push("__proto__");for(p=0;p<E.length;p++){var S=E[p],x=g[S],T=y[S];if(T){var N=T["(type)"];if(T["(useOutsideOfScope)"]&&!e.option.funcscope){var C=x["(tokens)"];if(C)for(d=0;d<C.length;d++)T["(function)"]===C[d]["(function)"]&&m("W038",C[d],S)}u["(labels)"][S]["(unused)"]=!1;if(N==="const"&&x["(modified)"])for(d=0;d<x["(modified)"].length;d++)m("E013",x["(modified)"][d],S);if((N==="function"||N==="class")&&x["(reassigned)"])for(d=0;d<x["(reassigned)"].length;d++)m("W021",x["(reassigned)"][d],S,N);continue}f&&(e.funct["(isCapturing)"]=!0);if(t)if(!t["(usages)"][S])t["(usages)"][S]=x,n&&(t["(usages)"][S]["(onlyUsedSubFunction)"]=!0);else{var k=t["(usages)"][S];k["(modified)"]=k["(modified)"].concat(x["(modified)"]),k["(tokens)"]=k["(tokens)"].concat(x["(tokens)"]),k["(reassigned)"]=k["(reassigned)"].concat(x["(reassigned)"]),k["(onlyUsedSubFunction)"]=!1}else if(typeof u["(predefined)"][S]=="boolean"){delete o[S],c[S]=s;if(u["(predefined)"][S]===!1&&x["(reassigned)"])for(d=0;d<x["(reassigned)"].length;d++)v("W020",x["(reassigned)"][d])}else if(x["(tokens)"])for(d=0;d<x["(tokens)"].length;d++){var L=x["(tokens)"][d];L.forgiveUndef||(e.option.undef&&!L.ignoreUndef&&v("W117",L,S),h[S]?h[S].line.push(L.line):h[S]={name:S,line:[L.line]})}}t||Object.keys(o).forEach(function(e){b(e,o[e],"var")});if(t&&!n&&!i&&!f){var A=Object.keys(y);for(p=0;p<A.length;p++){var O=A[p];!y[O]["(blockscoped)"]&&y[O]["(type)"]!=="exception"&&!this.funct.has(O,{excludeCurrent:!0})&&(t["(labels)"][O]=y[O],l["(type)"]!=="global"&&(t["(labels)"][O]["(useOutsideOfScope)"]=!0),delete y[O])}}w(),a.pop(),n&&(l=a[r.findLastIndex(a,function(e){return e["(isFuncBody)"]||e["(type)"]==="global"})]),u=t},addParam:function(t,n,i){i=i||"param";if(i==="exception"){var s=this.funct.labeltype(t);s&&s!=="exception"&&(e.option.node||v("W002",e.tokens.next,t))}r.has(u["(labels)"],t)?u["(labels)"][t].duplicated=!0:(T(t,n,i),u["(labels)"][t]={"(type)":i,"(token)":n,"(unused)":!0},u["(params)"].push(t));if(r.has(u["(usages)"],t)){var o=u["(usages)"][t];o["(onlyUsedSubFunction)"]?N(i,t,n):v("E056",n,t,i)}},validateParams:function(){if(l["(type)"]==="global")return;var t=e.isStrict(),n=l["(parent)"];if(!n["(params)"])return;n["(params)"].forEach(function(r){var i=n["(labels)"][r];i&&i.duplicated&&(t?v("E011",i["(token)"],r):e.option.shadow!==!0&&v("W004",i["(token)"],r))})},getUsedOrDefinedGlobals:function(){var e=Object.keys(c);return c.__proto__===s&&e.indexOf("__proto__")===-1&&e.push("__proto__"),e},getImpliedGlobals:function(){var e=r.values(h),t=!1;return h.__proto__&&(t=e.some(function(e){return e.name==="__proto__"}),t||e.push(h.__proto__)),e},getUnuseds:function(){return p},has:function(e){return Boolean(S(e))},labeltype:function(e){var t=S(e);return t?t[e]["(type)"]:null},addExported:function(e){var t=a[0]["(labels)"];if(r.has(o,e))delete o[e];else if(r.has(t,e))t[e]["(unused)"]=!1;else{for(var i=1;i<a.length;i++){var s=a[i];if(!!s["(type)"])break;if(r.has(s["(labels)"],e)&&!s["(labels)"][e]["(blockscoped)"]){s["(labels)"][e]["(unused)"]=!1;return}}n[e]=!0}},setExported:function(e,t){this.block.use(e,t)},addlabel:function(t,i){var o=i.type,a=i.token,f=o==="let"||o==="const"||o==="class",h=(f?u:l)["(type)"]==="global"&&r.has(n,t);T(t,a,o);if(f){var p=u["(labels)"][t];!p&&u===l&&u["(type)"]!=="global"&&(p=!!l["(parent)"]["(labels)"][t]);if(!p&&u["(usages)"][t]){var d=u["(usages)"][t];d["(onlyUsedSubFunction)"]?N(o,t,a):v("E056",a,t,o)}p?v("E011",a,t):e.option.shadow==="outer"&&C.funct.has(t)&&v("W004",a,t),C.block.add(t,o,a,!h)}else{var m=C.funct.has(t);!m&&x(t)&&N(o,t,a),C.funct.has(t,{onlyBlockscoped:!0})?v("E011",a,t):e.option.shadow!==!0&&m&&t!=="__proto__"&&l["(type)"]!=="global"&&v("W004",a,t),C.funct.add(t,o,a,!h),l["(type)"]==="global"&&(c[t]=s)}},funct:{labeltype:function(e,t){var n=t&&t.onlyBlockscoped,r=t&&t.excludeParams,i=a.length-(t&&t.excludeCurrent?2:1);for(var s=i;s>=0;s--){var o=a[s];if(o["(labels)"][e]&&(!n||o["(labels)"][e]["(blockscoped)"]))return o["(labels)"][e]["(type)"];var u=r?a[s-1]:o;if(u&&u["(type)"]==="functionparams")return null}return null},hasBreakLabel:function(e){for(var t=a.length-1;t>=0;t--){var n=a[t];if(n["(breakLabels)"][e])return!0;if(n["(type)"]==="functionparams")return!1}return!1},has:function(e,t){return Boolean(this.labeltype(e,t))},add:function(e,t,n,r){u["(labels)"][e]={"(type)":t,"(token)":n,"(blockscoped)":!1,"(function)":l,"(unused)":r}}},block:{isGlobal:function(){return u["(type)"]==="global"},use:function(t,n){var r=l["(parent)"];r&&r["(labels)"][t]&&r["(labels)"][t]["(type)"]==="param"&&(C.funct.has(t,{excludeParams:!0,onlyBlockscoped:!0})||(r["(labels)"][t]["(unused)"]=!1)),n&&(e.ignored.W117||e.option.undef===!1)&&(n.ignoreUndef=!0),g(t),n&&(n["(function)"]=l,u["(usages)"][t]["(tokens)"].push(n))},reassign:function(e,t){this.modify(e,t),u["(usages)"][e]["(reassigned)"].push(t)},modify:function(e,t){g(e),u["(usages)"][e]["(modified)"].push(t)},add:function(e,t,n,r){u["(labels)"][e]={"(type)":t,"(token)":n,"(blockscoped)":!0,"(unused)":r}},addBreakLabel:function(t,n){var r=n.token;C.funct.hasBreakLabel(t)?v("E011",r,t):e.option.shadow==="outer"&&(C.funct.has(t)?v("W004",r,t):T(t,r)),u["(breakLabels)"][t]=r}}};return C};t.exports=o},{"../lodash":"/node_modules/jshint/lodash.js",events:"/node_modules/browserify/node_modules/events/events.js"}],"/node_modules/jshint/src/state.js":[function(e,t,n){"use strict";var r=e("./name-stack.js"),i={syntax:{},isStrict:function(){return this.directive["use strict"]||this.inClassBody||this.option.module||this.option.strict==="implied"},inMoz:function(){return this.option.moz},inES6:function(){return this.option.moz||this.option.esversion>=6},inES5:function(e){return e?(!this.option.esversion||this.option.esversion===5)&&!this.option.moz:!this.option.esversion||this.option.esversion>=5||this.option.moz},reset:function(){this.tokens={prev:null,next:null,curr:null},this.option={},this.funct=null,this.ignored={},this.directive={},this.jsonMode=!1,this.jsonWarnings=[],this.lines=[],this.tab="",this.cache={},this.ignoredLines={},this.forinifcheckneeded=!1,this.nameStack=new r,this.inClassBody=!1}};n.state=i},{"./name-stack.js":"/node_modules/jshint/src/name-stack.js"}],"/node_modules/jshint/src/style.js":[function(e,t,n){"use strict";n.register=function(e){e.on("Identifier",function(n){if(e.getOption("proto"))return;n.name==="__proto__"&&e.warn("W103",{line:n.line,"char":n.char,data:[n.name,"6"]})}),e.on("Identifier",function(n){if(e.getOption("iterator"))return;n.name==="__iterator__"&&e.warn("W103",{line:n.line,"char":n.char,data:[n.name]})}),e.on("Identifier",function(n){if(!e.getOption("camelcase"))return;n.name.replace(/^_+|_+$/g,"").indexOf("_")>-1&&!n.name.match(/^[A-Z0-9_]*$/)&&e.warn("W106",{line:n.line,"char":n.from,data:[n.name]})}),e.on("String",function(n){var r=e.getOption("quotmark"),i;if(!r)return;r==="single"&&n.quote!=="'"&&(i="W109"),r==="double"&&n.quote!=='"'&&(i="W108"),r===!0&&(e.getCache("quotmark")||e.setCache("quotmark",n.quote),e.getCache("quotmark")!==n.quote&&(i="W110")),i&&e.warn(i,{line:n.line,"char":n.char})}),e.on("Number",function(n){n.value.charAt(0)==="."&&e.warn("W008",{line:n.line,"char":n.char,data:[n.value]}),n.value.substr(n.value.length-1)==="."&&e.warn("W047",{line:n.line,"char":n.char,data:[n.value]}),/^00+/.test(n.value)&&e.warn("W046",{line:n.line,"char":n.char,data:[n.value]})}),e.on("String",function(n){var r=/^(?:javascript|jscript|ecmascript|vbscript|livescript)\s*:/i;if(e.getOption("scripturl"))return;r.test(n.value)&&e.warn("W107",{line:n.line,"char":n.char})})}},{}],"/node_modules/jshint/src/vars.js":[function(e,t,n){"use strict";n.reservedVars={arguments:!1,NaN:!1},n.ecmaIdentifiers={3:{Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,eval:!1,EvalError:!1,Function:!1,hasOwnProperty:!1,isFinite:!1,isNaN:!1,Math:!1,Number:!1,Object:!1,parseInt:!1,parseFloat:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,String:!1,SyntaxError:!1,TypeError:!1,URIError:!1},5:{JSON:!1},6:{Map:!1,Promise:!1,Proxy:!1,Reflect:!1,Set:!1,Symbol:!1,WeakMap:!1,WeakSet:!1}},n.browser={Audio:!1,Blob:!1,addEventListener:!1,applicationCache:!1,atob:!1,blur:!1,btoa:!1,cancelAnimationFrame:!1,CanvasGradient:!1,CanvasPattern:!1,CanvasRenderingContext2D:!1,CSS:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,Comment:!1,CustomEvent:!1,DOMParser:!1,defaultStatus:!1,Document:!1,document:!1,DocumentFragment:!1,Element:!1,ElementTimeControl:!1,Event:!1,event:!1,fetch:!1,FileReader:!1,FormData:!1,focus:!1,frames:!1,getComputedStyle:!1,HTMLElement:!1,HTMLAnchorElement:!1,HTMLBaseElement:!1,HTMLBlockquoteElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCanvasElement:!1,HTMLCollection:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLIsIndexElement:!1,HTMLLabelElement:!1,HTMLLayerElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPreElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTemplateElement:!1,HTMLTextAreaElement:!1,HTMLTitleElement:!1,HTMLUListElement:!1,HTMLVideoElement:!1,history:!1,Image:!1,Intl:!1,length:!1,localStorage:!1,location:!1,matchMedia:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,MouseEvent:!1,moveBy:!1,moveTo:!1,MutationObserver:!1,name:!1,Node:!1,NodeFilter:!1,NodeList:!1,Notification:!1,navigator:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,Option:!1,parent:!1,performance:!1,print:!1,Range:!1,requestAnimationFrame:!1,removeEventListener:!1,resizeBy:!1,resizeTo:!1,screen:!1,scroll:!1,scrollBy:!1,scrollTo:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,SharedWorker:!1,status:!1,SVGAElement:!1,SVGAltGlyphDefElement:!1,SVGAltGlyphElement:!1,SVGAltGlyphItemElement:!1,SVGAngle:!1,SVGAnimateColorElement:!1,SVGAnimateElement:!1,SVGAnimateMotionElement:!1,SVGAnimateTransformElement:!1,SVGAnimatedAngle:!1,SVGAnimatedBoolean:!1,SVGAnimatedEnumeration:!1,SVGAnimatedInteger:!1,SVGAnimatedLength:!1,SVGAnimatedLengthList:!1,SVGAnimatedNumber:!1,SVGAnimatedNumberList:!1,SVGAnimatedPathData:!1,SVGAnimatedPoints:!1,SVGAnimatedPreserveAspectRatio:!1,SVGAnimatedRect:!1,SVGAnimatedString:!1,SVGAnimatedTransformList:!1,SVGAnimationElement:!1,SVGCSSRule:!1,SVGCircleElement:!1,SVGClipPathElement:!1,SVGColor:!1,SVGColorProfileElement:!1,SVGColorProfileRule:!1,SVGComponentTransferFunctionElement:!1,SVGCursorElement:!1,SVGDefsElement:!1,SVGDescElement:!1,SVGDocument:!1,SVGElement:!1,SVGElementInstance:!1,SVGElementInstanceList:!1,SVGEllipseElement:!1,SVGExternalResourcesRequired:!1,SVGFEBlendElement:!1,SVGFEColorMatrixElement:!1,SVGFEComponentTransferElement:!1,SVGFECompositeElement:!1,SVGFEConvolveMatrixElement:!1,SVGFEDiffuseLightingElement:!1,SVGFEDisplacementMapElement:!1,SVGFEDistantLightElement:!1,SVGFEFloodElement:!1,SVGFEFuncAElement:!1,SVGFEFuncBElement:!1,SVGFEFuncGElement:!1,SVGFEFuncRElement:!1,SVGFEGaussianBlurElement:!1,SVGFEImageElement:!1,SVGFEMergeElement:!1,SVGFEMergeNodeElement:!1,SVGFEMorphologyElement:!1,SVGFEOffsetElement:!1,SVGFEPointLightElement:!1,SVGFESpecularLightingElement:!1,SVGFESpotLightElement:!1,SVGFETileElement:!1,SVGFETurbulenceElement:!1,SVGFilterElement:!1,SVGFilterPrimitiveStandardAttributes:!1,SVGFitToViewBox:!1,SVGFontElement:!1,SVGFontFaceElement:!1,SVGFontFaceFormatElement:!1,SVGFontFaceNameElement:!1,SVGFontFaceSrcElement:!1,SVGFontFaceUriElement:!1,SVGForeignObjectElement:!1,SVGGElement:!1,SVGGlyphElement:!1,SVGGlyphRefElement:!1,SVGGradientElement:!1,SVGHKernElement:!1,SVGICCColor:!1,SVGImageElement:!1,SVGLangSpace:!1,SVGLength:!1,SVGLengthList:!1,SVGLineElement:!1,SVGLinearGradientElement:!1,SVGLocatable:!1,SVGMPathElement:!1,SVGMarkerElement:!1,SVGMaskElement:!1,SVGMatrix:!1,SVGMetadataElement:!1,SVGMissingGlyphElement:!1,SVGNumber:!1,SVGNumberList:!1,SVGPaint:!1,SVGPathElement:!1,SVGPathSeg:!1,SVGPathSegArcAbs:!1,SVGPathSegArcRel:!1,SVGPathSegClosePath:!1,SVGPathSegCurvetoCubicAbs:!1,SVGPathSegCurvetoCubicRel:!1,SVGPathSegCurvetoCubicSmoothAbs:!1,SVGPathSegCurvetoCubicSmoothRel:!1,SVGPathSegCurvetoQuadraticAbs:!1,SVGPathSegCurvetoQuadraticRel:!1,SVGPathSegCurvetoQuadraticSmoothAbs:!1,SVGPathSegCurvetoQuadraticSmoothRel:!1,SVGPathSegLinetoAbs:!1,SVGPathSegLinetoHorizontalAbs:!1,SVGPathSegLinetoHorizontalRel:!1,SVGPathSegLinetoRel:!1,SVGPathSegLinetoVerticalAbs:!1,SVGPathSegLinetoVerticalRel:!1,SVGPathSegList:!1,SVGPathSegMovetoAbs:!1,SVGPathSegMovetoRel:!1,SVGPatternElement:!1,SVGPoint:!1,SVGPointList:!1,SVGPolygonElement:!1,SVGPolylineElement:!1,SVGPreserveAspectRatio:!1,SVGRadialGradientElement:!1,SVGRect:!1,SVGRectElement:!1,SVGRenderingIntent:!1,SVGSVGElement:!1,SVGScriptElement:!1,SVGSetElement:!1,SVGStopElement:!1,SVGStringList:!1,SVGStylable:!1,SVGStyleElement:!1,SVGSwitchElement:!1,SVGSymbolElement:!1,SVGTRefElement:!1,SVGTSpanElement:!1,SVGTests:!1,SVGTextContentElement:!1,SVGTextElement:!1,SVGTextPathElement:!1,SVGTextPositioningElement:!1,SVGTitleElement:!1,SVGTransform:!1,SVGTransformList:!1,SVGTransformable:!1,SVGURIReference:!1,SVGUnitTypes:!1,SVGUseElement:!1,SVGVKernElement:!1,SVGViewElement:!1,SVGViewSpec:!1,SVGZoomAndPan:!1,Text:!1,TextDecoder:!1,TextEncoder:!1,TimeEvent:!1,top:!1,URL:!1,WebGLActiveInfo:!1,WebGLBuffer:!1,WebGLContextEvent:!1,WebGLFramebuffer:!1,WebGLProgram:!1,WebGLRenderbuffer:!1,WebGLRenderingContext:!1,WebGLShader:!1,WebGLShaderPrecisionFormat:!1,WebGLTexture:!1,WebGLUniformLocation:!1,WebSocket:!1,window:!1,Window:!1,Worker:!1,XDomainRequest:!1,XMLHttpRequest:!1,XMLSerializer:!1,XPathEvaluator:!1,XPathException:!1,XPathExpression:!1,XPathNamespace:!1,XPathNSResolver:!1,XPathResult:!1},n.devel={alert:!1,confirm:!1,console:!1,Debug:!1,opera:!1,prompt:!1},n.worker={importScripts:!0,postMessage:!0,self:!0,FileReaderSync:!0},n.nonstandard={escape:!1,unescape:!1},n.couch={require:!1,respond:!1,getRow:!1,emit:!1,send:!1,start:!1,sum:!1,log:!1,exports:!1,module:!1,provides:!1},n.node={__filename:!1,__dirname:!1,GLOBAL:!1,global:!1,module:!1,require:!1,Buffer:!0,console:!0,exports:!0,process:!0,setTimeout:!0,clearTimeout:!0,setInterval:!0,clearInterval:!0,setImmediate:!0,clearImmediate:!0},n.browserify={__filename:!1,__dirname:!1,global:!1,module:!1,require:!1,Buffer:!0,exports:!0,process:!0},n.phantom={phantom:!0,require:!0,WebPage:!0,console:!0,exports:!0},n.qunit={asyncTest:!1,deepEqual:!1,equal:!1,expect:!1,module:!1,notDeepEqual:!1,notEqual:!1,notPropEqual:!1,notStrictEqual:!1,ok:!1,propEqual:!1,QUnit:!1,raises:!1,start:!1,stop:!1,strictEqual:!1,test:!1,"throws":!1},n.rhino={defineClass:!1,deserialize:!1,gc:!1,help:!1,importClass:!1,importPackage:!1,java:!1,load:!1,loadClass:!1,Packages:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},n.shelljs={target:!1,echo:!1,exit:!1,cd:!1,pwd:!1,ls:!1,find:!1,cp:!1,rm:!1,mv:!1,mkdir:!1,test:!1,cat:!1,sed:!1,grep:!1,which:!1,dirs:!1,pushd:!1,popd:!1,env:!1,exec:!1,chmod:!1,config:!1,error:!1,tempdir:!1},n.typed={ArrayBuffer:!1,ArrayBufferView:!1,DataView:!1,Float32Array:!1,Float64Array:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1},n.wsh={ActiveXObject:!0,Enumerator:!0,GetObject:!0,ScriptEngine:!0,ScriptEngineBuildVersion:!0,ScriptEngineMajorVersion:!0,ScriptEngineMinorVersion:!0,VBArray:!0,WSH:!0,WScript:!0,XDomainRequest:!0},n.dojo={dojo:!1,dijit:!1,dojox:!1,define:!1,require:!1},n.jquery={$:!1,jQuery:!1},n.mootools={$:!1,$$:!1,Asset:!1,Browser:!1,Chain:!1,Class:!1,Color:!1,Cookie:!1,Core:!1,Document:!1,DomReady:!1,DOMEvent:!1,DOMReady:!1,Drag:!1,Element:!1,Elements:!1,Event:!1,Events:!1,Fx:!1,Group:!1,Hash:!1,HtmlTable:!1,IFrame:!1,IframeShim:!1,InputValidator:!1,instanceOf:!1,Keyboard:!1,Locale:!1,Mask:!1,MooTools:!1,Native:!1,Options:!1,OverText:!1,Request:!1,Scroller:!1,Slick:!1,Slider:!1,Sortables:!1,Spinner:!1,Swiff:!1,Tips:!1,Type:!1,typeOf:!1,URI:!1,Window:!1},n.prototypejs={$:!1,$$:!1,$A:!1,$F:!1,$H:!1,$R:!1,$break:!1,$continue:!1,$w:!1,Abstract:!1,Ajax:!1,Class:!1,Enumerable:!1,Element:!1,Event:!1,Field:!1,Form:!1,Hash:!1,Insertion:!1,ObjectRange:!1,PeriodicalExecuter:!1,Position:!1,Prototype:!1,Selector:!1,Template:!1,Toggle:!1,Try:!1,Autocompleter:!1,Builder:!1,Control:!1,Draggable:!1,Draggables:!1,Droppables:!1,Effect:!1,Sortable:!1,SortableObserver:!1,Sound:!1,Scriptaculous:!1},n.yui={YUI:!1,Y:!1,YUI_config:!1},n.mocha={mocha:!1,describe:!1,xdescribe:!1,it:!1,xit:!1,context:!1,xcontext:!1,before:!1,after:!1,beforeEach:!1,afterEach:!1,suite:!1,test:!1,setup:!1,teardown:!1,suiteSetup:!1,suiteTeardown:!1},n.jasmine={jasmine:!1,describe:!1,xdescribe:!1,it:!1,xit:!1,beforeEach:!1,afterEach:!1,setFixtures:!1,loadFixtures:!1,spyOn:!1,expect:!1,runs:!1,waitsFor:!1,waits:!1,beforeAll:!1,afterAll:!1,fail:!1,fdescribe:!1,fit:!1,pending:!1}},{}]},{},["/node_modules/jshint/src/jshint.js"])}),ace.define("ace/mode/javascript_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/javascript/jshint"],function(require,exports,module){"use strict";function startRegex(e){return RegExp("^("+e.join("|")+")")}var oop=require("../lib/oop"),Mirror=require("../worker/mirror").Mirror,lint=require("./javascript/jshint").JSHINT,disabledWarningsRe=startRegex(["Bad for in variable '(.+)'.",'Missing "use strict"']),errorsRe=startRegex(["Unexpected","Expected ","Confusing (plus|minus)","\\{a\\} unterminated regular expression","Unclosed ","Unmatched ","Unbegun comment","Bad invocation","Missing space after","Missing operator at"]),infoRe=startRegex(["Expected an assignment","Bad escapement of EOL","Unexpected comma","Unexpected space","Missing radix parameter.","A leading decimal point can","\\['{a}'\\] is better written in dot notation.","'{a}' used out of scope"]),JavaScriptWorker=exports.JavaScriptWorker=function(e){Mirror.call(this,e),this.setTimeout(500),this.setOptions()};oop.inherits(JavaScriptWorker,Mirror),function(){this.setOptions=function(e){this.options=e||{esnext:!0,moz:!0,devel:!0,browser:!0,node:!0,laxcomma:!0,laxbreak:!0,lastsemic:!0,onevar:!1,passfail:!1,maxerr:100,expr:!0,multistr:!0,globalstrict:!0},this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.changeOptions=function(e){oop.mixin(this.options,e),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.isValidJS=function(str){try{eval("throw 0;"+str)}catch(e){if(e===0)return!0}return!1},this.onUpdate=function(){var e=this.doc.getValue();e=e.replace(/^#!.*\n/,"\n");if(!e)return this.sender.emit("annotate",[]);var t=[],n=this.isValidJS(e)?"warning":"error";lint(e,this.options);var r=lint.errors,i=!1;for(var s=0;s<r.length;s++){var o=r[s];if(!o)continue;var u=o.raw,a="warning";if(u=="Missing semicolon."){var f=o.evidence.substr(o.character);f=f.charAt(f.search(/\S/)),n=="error"&&f&&/[\w\d{(['"]/.test(f)?(o.reason='Missing ";" before statement',a="error"):a="info"}else{if(disabledWarningsRe.test(u))continue;infoRe.test(u)?a="info":errorsRe.test(u)?(i=!0,a=n):u=="'{a}' is not defined."?a="warning":u=="'{a}' is defined but never used."&&(a="info")}t.push({row:o.line-1,column:o.character-1,text:o.reason,type:a,raw:u}),i}this.sender.emit("annotate",t)}}.call(JavaScriptWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _=" \n \f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}}) \ No newline at end of file
diff --git a/library/ace/worker-json.js b/library/ace/worker-json.js
new file mode 100644
index 000000000..604ffd70a
--- /dev/null
+++ b/library/ace/worker-json.js
@@ -0,0 +1 @@
+"no use strict";(function(e){function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")return i+r;if(i)return i.location.replace(/\/*$/,"/")+(r||i.main||i.name);if(i===!1)return"";var s=n.lastIndexOf("/");if(s===-1)break;r=n.substr(s)+r,n=n.slice(0,s)}return e}if(typeof e.window!="undefined"&&e.document)return;if(e.require&&e.define)return;e.console||(e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console),e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,data:i.data,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(r,i){i||(i=r,r=null);if(!i.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");i=e.normalizeModule(r,i);var s=e.require.modules[i];if(s)return s.initialized||(s.initialized=!0,s.exports=s.factory().exports),s.exports;if(!e.require.tlns)return console.log("unable to load "+i);var o=t(i,e.require.tlns);return o.slice(-3)!=".js"&&(o+=".js"),e.require.id=i,e.require.modules[i]={},importScripts(o),e.require(r,i)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},require.tlns={},e.initBaseUrls=function(t){for(var n in t)require.tlns[n]=t[n]},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var n=e.main=null,r=e.sender=null;e.onmessage=function(t){var i=t.data;if(i.event&&r)r._signal(i.event,i.data);else if(i.command)if(n[i.command])n[i.command].apply(n,i.args);else{if(!e[i.command])throw new Error("Unknown command:"+i.command);e[i.command].apply(e,i.args)}else if(i.init){e.initBaseUrls(i.tlns),require("ace/lib/es5-shim"),r=e.sender=e.initSender();var s=require(i.module)[i.classname];n=e.main=new s(r)}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,n){"use strict";function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: "+t}function i(e,t){return t.row>=0&&t.row<e.length&&t.column>=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.column<t.column;return e.row<t.row||e.row==t.row&&r}function t(t,n,r){var i=t.action=="insert",s=(i?1:-1)*(t.end.row-t.start.row),o=(i?1:-1)*(t.end.column-t.start.column),u=t.start,a=i?u:t.end;return e(n,u,r)?{row:n.row,column:n.column}:e(a,n,!r)?{row:n.row+s,column:n.column+(n.row==a.row?o:0)}:{row:u.row,column:u.column}}r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){if(e.start.row==e.end.row&&e.start.row!=this.row)return;if(e.start.row>this.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e<this.getLength()?(t=t.concat([""]),n=0):(t=[""].concat(t),e--,n=this.$lines[e].length),this.insertMergedLines({row:e,column:n},t)},this.insertMergedLines=function(e,t){var n=this.clippedPos(e.row,e.column),r={row:n.row+t.length-1,column:(t.length==1?n.column:0)+t[t.length-1].length};return this.applyDelta({start:n,end:r,action:"insert",lines:t}),this.clonePos(r)},this.remove=function(e){var t=this.clippedPos(e.start.row,e.start.column),n=this.clippedPos(e.end.row,e.end.column);return this.applyDelta({start:t,end:n,action:"remove",lines:this.getLinesForRange({start:t,end:n})}),this.clonePos(t)},this.removeInLine=function(e,t,n){var r=this.clippedPos(e,t),i=this.clippedPos(e,n);return this.applyDelta({start:r,end:i,action:"remove",lines:this.getLinesForRange({start:r,end:i})},!0),this.clonePos(r)},this.removeFullLines=function(e,t){e=Math.min(Math.max(0,e),this.getLength()-1),t=Math.min(Math.max(0,t),this.getLength()-1);var n=t==this.getLength()-1&&e>0,r=t<this.getLength()-1,i=n?e-1:e,s=n?this.getLine(i).length:0,u=r?t+1:t,a=r?0:this.getLine(u).length,f=new o(i,s,u,a),l=this.$lines.slice(e,t+1);return this.applyDelta({start:f.start,end:f.end,action:"remove",lines:this.getLinesForRange(f)}),l},this.removeNewLine=function(e){e<this.getLength()-1&&e>=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++)this.applyDelta(e[t])},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(a.prototype),t.Document=a}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function s(e){if(typeof e!="object"||!e)return e;var t;if(Array.isArray(e)){t=[];for(var n=0;n<e.length;n++)t[n]=s(e[n]);return t}var r=e.constructor;if(r===RegExp)return e;t=r();for(var n in e)t[n]=s(e[n]);return t},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/worker/mirror",["require","exports","module","ace/range","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../document").Document,s=e("../lib/lang"),o=t.Mirror=function(e){this.sender=e;var t=this.doc=new i(""),n=this.deferredUpdate=s.delayedCall(this.onUpdate.bind(this)),r=this;e.on("change",function(e){var i=e.data;if(i[0].start)t.applyDeltas(i);else for(var s=0;s<i.length;s+=2){if(Array.isArray(i[s+1]))var o={action:"insert",start:i[s],lines:i[s+1]};else var o={action:"remove",start:i[s],end:i[s+1]};t.applyDelta(o,!0)}if(r.$timeout)return n.schedule(r.$timeout);r.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(o.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(e,t,n){"use strict";var r,i,s={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:" "},o,u=function(e){throw{name:"SyntaxError",message:e,at:r,text:o}},a=function(e){return e&&e!==i&&u("Expected '"+e+"' instead of '"+i+"'"),i=o.charAt(r),r+=1,i},f=function(){var e,t="";i==="-"&&(t="-",a("-"));while(i>="0"&&i<="9")t+=i,a();if(i==="."){t+=".";while(a()&&i>="0"&&i<="9")t+=i}if(i==="e"||i==="E"){t+=i,a();if(i==="-"||i==="+")t+=i,a();while(i>="0"&&i<="9")t+=i,a()}e=+t;if(!isNaN(e))return e;u("Bad number")},l=function(){var e,t,n="",r;if(i==='"')while(a()){if(i==='"')return a(),n;if(i==="\\"){a();if(i==="u"){r=0;for(t=0;t<4;t+=1){e=parseInt(a(),16);if(!isFinite(e))break;r=r*16+e}n+=String.fromCharCode(r)}else{if(typeof s[i]!="string")break;n+=s[i]}}else n+=i}u("Bad string")},c=function(){while(i&&i<=" ")a()},h=function(){switch(i){case"t":return a("t"),a("r"),a("u"),a("e"),!0;case"f":return a("f"),a("a"),a("l"),a("s"),a("e"),!1;case"n":return a("n"),a("u"),a("l"),a("l"),null}u("Unexpected '"+i+"'")},p,d=function(){var e=[];if(i==="["){a("["),c();if(i==="]")return a("]"),e;while(i){e.push(p()),c();if(i==="]")return a("]"),e;a(","),c()}}u("Bad array")},v=function(){var e,t={};if(i==="{"){a("{"),c();if(i==="}")return a("}"),t;while(i){e=l(),c(),a(":"),Object.hasOwnProperty.call(t,e)&&u('Duplicate key "'+e+'"'),t[e]=p(),c();if(i==="}")return a("}"),t;a(","),c()}}u("Bad object")};return p=function(){c();switch(i){case"{":return v();case"[":return d();case'"':return l();case"-":return f();default:return i>="0"&&i<="9"?f():h()}},function(e,t){var n;return o=e,r=0,i=" ",n=p(),c(),i&&u("Syntax error"),typeof t=="function"?function s(e,n){var r,i,o=e[n];if(o&&typeof o=="object")for(r in o)Object.hasOwnProperty.call(o,r)&&(i=s(o,r),i!==undefined?o[r]=i:delete o[r]);return t.call(e,n,o)}({"":n},""):n}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../worker/mirror").Mirror,s=e("./json/json_parse"),o=t.JsonWorker=function(e){i.call(this,e),this.setTimeout(200)};r.inherits(o,i),function(){this.onUpdate=function(){var e=this.doc.getValue(),t=[];try{e&&s(e)}catch(n){var r=this.doc.indexToPosition(n.at-1);t.push({row:r.row,column:r.column,text:n.message,type:"error"})}this.sender.emit("annotate",t)}}.call(o.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _=" \n \f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}}) \ No newline at end of file
diff --git a/library/ace/worker-lua.js b/library/ace/worker-lua.js
new file mode 100644
index 000000000..274f2f438
--- /dev/null
+++ b/library/ace/worker-lua.js
@@ -0,0 +1 @@
+"no use strict";(function(e){function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")return i+r;if(i)return i.location.replace(/\/*$/,"/")+(r||i.main||i.name);if(i===!1)return"";var s=n.lastIndexOf("/");if(s===-1)break;r=n.substr(s)+r,n=n.slice(0,s)}return e}if(typeof e.window!="undefined"&&e.document)return;if(e.require&&e.define)return;e.console||(e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console),e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,data:i.data,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(r,i){i||(i=r,r=null);if(!i.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");i=e.normalizeModule(r,i);var s=e.require.modules[i];if(s)return s.initialized||(s.initialized=!0,s.exports=s.factory().exports),s.exports;if(!e.require.tlns)return console.log("unable to load "+i);var o=t(i,e.require.tlns);return o.slice(-3)!=".js"&&(o+=".js"),e.require.id=i,e.require.modules[i]={},importScripts(o),e.require(r,i)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},require.tlns={},e.initBaseUrls=function(t){for(var n in t)require.tlns[n]=t[n]},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var n=e.main=null,r=e.sender=null;e.onmessage=function(t){var i=t.data;if(i.event&&r)r._signal(i.event,i.data);else if(i.command)if(n[i.command])n[i.command].apply(n,i.args);else{if(!e[i.command])throw new Error("Unknown command:"+i.command);e[i.command].apply(e,i.args)}else if(i.init){e.initBaseUrls(i.tlns),require("ace/lib/es5-shim"),r=e.sender=e.initSender();var s=require(i.module)[i.classname];n=e.main=new s(r)}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,n){"use strict";function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: "+t}function i(e,t){return t.row>=0&&t.row<e.length&&t.column>=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.column<t.column;return e.row<t.row||e.row==t.row&&r}function t(t,n,r){var i=t.action=="insert",s=(i?1:-1)*(t.end.row-t.start.row),o=(i?1:-1)*(t.end.column-t.start.column),u=t.start,a=i?u:t.end;return e(n,u,r)?{row:n.row,column:n.column}:e(a,n,!r)?{row:n.row+s,column:n.column+(n.row==a.row?o:0)}:{row:u.row,column:u.column}}r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){if(e.start.row==e.end.row&&e.start.row!=this.row)return;if(e.start.row>this.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e<this.getLength()?(t=t.concat([""]),n=0):(t=[""].concat(t),e--,n=this.$lines[e].length),this.insertMergedLines({row:e,column:n},t)},this.insertMergedLines=function(e,t){var n=this.clippedPos(e.row,e.column),r={row:n.row+t.length-1,column:(t.length==1?n.column:0)+t[t.length-1].length};return this.applyDelta({start:n,end:r,action:"insert",lines:t}),this.clonePos(r)},this.remove=function(e){var t=this.clippedPos(e.start.row,e.start.column),n=this.clippedPos(e.end.row,e.end.column);return this.applyDelta({start:t,end:n,action:"remove",lines:this.getLinesForRange({start:t,end:n})}),this.clonePos(t)},this.removeInLine=function(e,t,n){var r=this.clippedPos(e,t),i=this.clippedPos(e,n);return this.applyDelta({start:r,end:i,action:"remove",lines:this.getLinesForRange({start:r,end:i})},!0),this.clonePos(r)},this.removeFullLines=function(e,t){e=Math.min(Math.max(0,e),this.getLength()-1),t=Math.min(Math.max(0,t),this.getLength()-1);var n=t==this.getLength()-1&&e>0,r=t<this.getLength()-1,i=n?e-1:e,s=n?this.getLine(i).length:0,u=r?t+1:t,a=r?0:this.getLine(u).length,f=new o(i,s,u,a),l=this.$lines.slice(e,t+1);return this.applyDelta({start:f.start,end:f.end,action:"remove",lines:this.getLinesForRange(f)}),l},this.removeNewLine=function(e){e<this.getLength()-1&&e>=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++)this.applyDelta(e[t])},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(a.prototype),t.Document=a}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function s(e){if(typeof e!="object"||!e)return e;var t;if(Array.isArray(e)){t=[];for(var n=0;n<e.length;n++)t[n]=s(e[n]);return t}var r=e.constructor;if(r===RegExp)return e;t=r();for(var n in e)t[n]=s(e[n]);return t},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/worker/mirror",["require","exports","module","ace/range","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../document").Document,s=e("../lib/lang"),o=t.Mirror=function(e){this.sender=e;var t=this.doc=new i(""),n=this.deferredUpdate=s.delayedCall(this.onUpdate.bind(this)),r=this;e.on("change",function(e){var i=e.data;if(i[0].start)t.applyDeltas(i);else for(var s=0;s<i.length;s+=2){if(Array.isArray(i[s+1]))var o={action:"insert",start:i[s],lines:i[s+1]};else var o={action:"remove",start:i[s],end:i[s+1]};t.applyDelta(o,!0)}if(r.$timeout)return n.schedule(r.$timeout);r.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(o.prototype)}),ace.define("ace/mode/lua/luaparse",["require","exports","module"],function(e,t,n){(function(e,n,r){r(t)})(this,"luaparse",function(e){"use strict";function m(e){if(mt){var t=vt.pop();t.complete(),n.locations&&(e.loc=t.loc),n.ranges&&(e.range=t.range)}return e}function w(e,t,n){for(var r=0,i=e.length;r<i;r++)if(e[r][t]===n)return r;return-1}function E(e){var t=g.call(arguments,1);return e=e.replace(/%(\d)/g,function(e,n){return""+t[n-1]||""}),e}function S(){var e=g.call(arguments),t={},n,r;for(var i=0,s=e.length;i<s;i++){n=e[i];for(r in n)n.hasOwnProperty(r)&&(t[r]=n[r])}return t}function x(e){var t=E.apply(null,g.call(arguments,1)),n,r;throw"undefined"!=typeof e.line?(r=e.range[0]-e.lineStart,n=new SyntaxError(E("[%1:%2] %3",e.line,r,t)),n.line=e.line,n.index=e.range[0],n.column=r):(r=C-D+1,n=new SyntaxError(E("[%1:%2] %3",_,r,t)),n.index=C,n.line=_,n.column=r),n}function T(e,t){x(t,d.expectedToken,e,t.value)}function N(e,t){"undefined"==typeof t&&(t=A.value);if("undefined"!=typeof e.type){var n;switch(e.type){case o:n="string";break;case u:n="keyword";break;case a:n="identifier";break;case f:n="number";break;case l:n="symbol";break;case c:n="boolean";break;case h:return x(e,d.unexpected,"symbol","nil",t)}return x(e,d.unexpected,n,e.value,t)}return x(e,d.unexpected,"symbol",e,t)}function P(){H();while(45===t.charCodeAt(C)&&45===t.charCodeAt(C+1))X(),H();if(C>=r)return{type:s,value:"<eof>",line:_,lineStart:D,range:[C,C]};var e=t.charCodeAt(C),n=t.charCodeAt(C+1);M=C;if(et(e))return B();switch(e){case 39:case 34:return I();case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return R();case 46:if(Y(n))return R();if(46===n)return 46===t.charCodeAt(C+2)?F():j("..");return j(".");case 61:if(61===n)return j("==");return j("=");case 62:if(61===n)return j(">=");return j(">");case 60:if(61===n)return j("<=");return j("<");case 126:if(61===n)return j("~=");return x({},d.expected,"=","~");case 58:if(58===n)return j("::");return j(":");case 91:if(91===n||61===n)return q();return j("[");case 42:case 47:case 94:case 37:case 44:case 123:case 125:case 93:case 40:case 41:case 59:case 35:case 45:case 43:return j(t.charAt(C))}return N(t.charAt(C))}function H(){while(C<r){var e=t.charCodeAt(C);if(Q(e))C++;else{if(!G(e))break;_++,D=++C}}}function B(){var e,n;while(tt(t.charCodeAt(++C)));return e=t.slice(M,C),nt(e)?n=u:"true"===e||"false"===e?(n=c,e="true"===e):"nil"===e?(n=h,e=null):n=a,{type:n,value:e,line:_,lineStart:D,range:[M,C]}}function j(e){return C+=e.length,{type:l,value:e,line:_,lineStart:D,range:[M,C]}}function F(){return C+=3,{type:p,value:"...",line:_,lineStart:D,range:[M,C]}}function I(){var e=t.charCodeAt(C++),n=C,i="",s;while(C<r){s=t.charCodeAt(C++);if(e===s)break;if(92===s)i+=t.slice(n,C-1)+W(),n=C;else if(C>=r||G(s))i+=t.slice(n,C-1),x({},d.unfinishedString,i+String.fromCharCode(s))}return i+=t.slice(n,C-1),{type:o,value:i,line:_,lineStart:D,range:[M,C]}}function q(){var e=V();return!1===e&&x(k,d.expected,"[",k.value),{type:o,value:e,line:_,lineStart:D,range:[M,C]}}function R(){var e=t.charAt(C),n=t.charAt(C+1),r="0"===e&&"xX".indexOf(n||null)>=0?U():z();return{type:f,value:r,line:_,lineStart:D,range:[M,C]}}function U(){var e=0,n=1,r=1,i,s,o,u;u=C+=2,Z(t.charCodeAt(C))||x({},d.malformedNumber,t.slice(M,C));while(Z(t.charCodeAt(C)))C++;i=parseInt(t.slice(u,C),16);if("."===t.charAt(C)){s=++C;while(Z(t.charCodeAt(C)))C++;e=t.slice(s,C),e=s===C?0:parseInt(e,16)/Math.pow(16,C-s)}if("pP".indexOf(t.charAt(C)||null)>=0){C++,"+-".indexOf(t.charAt(C)||null)>=0&&(r="+"===t.charAt(C++)?1:-1),o=C,Y(t.charCodeAt(C))||x({},d.malformedNumber,t.slice(M,C));while(Y(t.charCodeAt(C)))C++;n=t.slice(o,C),n=Math.pow(2,n*r)}return(i+e)*n}function z(){while(Y(t.charCodeAt(C)))C++;if("."===t.charAt(C)){C++;while(Y(t.charCodeAt(C)))C++}if("eE".indexOf(t.charAt(C)||null)>=0){C++,"+-".indexOf(t.charAt(C)||null)>=0&&C++,Y(t.charCodeAt(C))||x({},d.malformedNumber,t.slice(M,C));while(Y(t.charCodeAt(C)))C++}return parseFloat(t.slice(M,C))}function W(){var e=C;switch(t.charAt(C)){case"n":return C++,"\n";case"r":return C++,"\r";case"t":return C++," ";case"v":return C++," ";case"b":return C++,"\b";case"f":return C++,"\f";case"z":return C++,H(),"";case"x":if(Z(t.charCodeAt(C+1))&&Z(t.charCodeAt(C+2)))return C+=3,"\\"+t.slice(e,C);return"\\"+t.charAt(C++);default:if(Y(t.charCodeAt(C))){while(Y(t.charCodeAt(++C)));return"\\"+t.slice(e,C)}return t.charAt(C++)}}function X(){M=C,C+=2;var e=t.charAt(C),i="",s=!1,o=C,u=D,a=_;"["===e&&(i=V(),!1===i?i=e:s=!0);if(!s){while(C<r){if(G(t.charCodeAt(C)))break;C++}n.comments&&(i=t.slice(o,C))}if(n.comments){var f=v.comment(i,t.slice(M,C));n.locations&&(f.loc={start:{line:a,column:M-u},end:{line:_,column:C-D}}),n.ranges&&(f.range=[M,C]),O.push(f)}}function V(){var e=0,n="",i=!1,s,o;C++;while("="===t.charAt(C+e))e++;if("["!==t.charAt(C+e))return!1;C+=e+1,G(t.charCodeAt(C))&&(_++,D=C++),o=C;while(C<r){s=t.charAt(C++),G(s.charCodeAt(0))&&(_++,D=C);if("]"===s){i=!0;for(var u=0;u<e;u++)"="!==t.charAt(C+u)&&(i=!1);"]"!==t.charAt(C+e)&&(i=!1)}if(i)break}return n+=t.slice(o,C-1),C+=e+1,n}function $(){L=k,k=A,A=P()}function J(e){return e===k.value?($(),!0):!1}function K(e){e===k.value?$():x(k,d.expected,e,k.value)}function Q(e){return 9===e||32===e||11===e||12===e}function G(e){return 10===e||13===e}function Y(e){return e>=48&&e<=57}function Z(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70}function et(e){return e>=65&&e<=90||e>=97&&e<=122||95===e}function tt(e){return e>=65&&e<=90||e>=97&&e<=122||95===e||e>=48&&e<=57}function nt(e){switch(e.length){case 2:return"do"===e||"if"===e||"in"===e||"or"===e;case 3:return"and"===e||"end"===e||"for"===e||"not"===e;case 4:return"else"===e||"goto"===e||"then"===e;case 5:return"break"===e||"local"===e||"until"===e||"while"===e;case 6:return"elseif"===e||"repeat"===e||"return"===e;case 8:return"function"===e}return!1}function rt(e){return l===e.type?"#-".indexOf(e.value)>=0:u===e.type?"not"===e.value:!1}function it(e){switch(e.type){case"CallExpression":case"TableCallExpression":case"StringCallExpression":return!0}return!1}function st(e){if(s===e.type)return!0;if(u!==e.type)return!1;switch(e.value){case"else":case"elseif":case"end":case"until":return!0;default:return!1}}function ft(){ot.push(Array.apply(null,ot[ut++]))}function lt(){ot.pop(),ut--}function ct(e){if(-1!==b(ot[ut],e))return;ot[ut].push(e)}function ht(e){ct(e.name),pt(e,!0)}function pt(e,t){!t&&-1===w(at,"name",e.name)&&at.push(e),e.isLocal=t}function dt(e){return-1!==b(ot[ut],e)}function gt(){return new yt(k)}function yt(e){n.locations&&(this.loc={start:{line:e.line,column:e.range[0]-e.lineStart},end:{line:0,column:0}}),n.ranges&&(this.range=[e.range[0],0])}function bt(){mt&&vt.push(gt())}function wt(e){mt&&vt.push(e)}function Et(){$(),bt();var e=St();return s!==k.type&&N(k),mt&&!e.length&&(L=k),m(v.chunk(e))}function St(e){var t=[],r;n.scope&&ft();while(!st(k)){if("return"===k.value){t.push(xt());break}r=xt(),r&&t.push(r)}return n.scope&&lt(),t}function xt(){bt();if(u===k.type)switch(k.value){case"local":return $(),Dt();case"if":return $(),Mt();case"return":return $(),Ot();case"function":$();var e=jt();return Bt(e);case"while":return $(),Lt();case"for":return $(),_t();case"repeat":return $(),At();case"break":return $(),Nt();case"do":return $(),kt();case"goto":return $(),Ct()}if(l===k.type&&J("::"))return Tt();mt&&vt.pop();if(J(";"))return;return Pt()}function Tt(){var e=k.value,t=Ht();return n.scope&&(ct("::"+e+"::"),pt(t,!0)),K("::"),m(v.labelStatement(t))}function Nt(){return m(v.breakStatement())}function Ct(){var e=k.value,t=Ht();return n.scope&&(t.isLabel=dt("::"+e+"::")),m(v.gotoStatement(t))}function kt(){var e=St();return K("end"),m(v.doStatement(e))}function Lt(){var e=qt();K("do");var t=St();return K("end"),m(v.whileStatement(e,t))}function At(){var e=St();K("until");var t=qt();return m(v.repeatStatement(t,e))}function Ot(){var e=[];if("end"!==k.value){var t=It();null!=t&&e.push(t);while(J(","))t=qt(),e.push(t);J(";")}return m(v.returnStatement(e))}function Mt(){var e=[],t,n,r;mt&&(r=vt[vt.length-1],vt.push(r)),t=qt(),K("then"),n=St(),e.push(m(v.ifClause(t,n))),mt&&(r=gt());while(J("elseif"))wt(r),t=qt(),K("then"),n=St(),e.push(m(v.elseifClause(t,n))),mt&&(r=gt());return J("else")&&(mt&&(r=new yt(L),vt.push(r)),n=St(),e.push(m(v.elseClause(n)))),K("end"),m(v.ifStatement(e))}function _t(){var e=Ht(),t;n.scope&&ht(e);if(J("=")){var r=qt();K(",");var i=qt(),s=J(",")?qt():null;return K("do"),t=St(),K("end"),m(v.forNumericStatement(e,r,i,s,t))}var o=[e];while(J(","))e=Ht(),n.scope&&ht(e),o.push(e);K("in");var u=[];do{var a=qt();u.push(a)}while(J(","));return K("do"),t=St(),K("end"),m(v.forGenericStatement(o,u,t))}function Dt(){var e;if(a===k.type){var t=[],r=[];do e=Ht(),t.push(e);while(J(","));if(J("="))do{var i=qt();r.push(i)}while(J(","));if(n.scope)for(var s=0,o=t.length;s<o;s++)ht(t[s]);return m(v.localStatement(t,r))}if(J("function"))return e=Ht(),n.scope&&ht(e),Bt(e,!0);T("<name>",k)}function Pt(){var e=k,t,n;mt&&(n=gt()),t=zt();if(null==t)return N(k);if(",=".indexOf(k.value)>=0){var r=[t],i=[],s;while(J(","))s=zt(),null==s&&T("<expression>",k),r.push(s);K("=");do s=qt(),i.push(s);while(J(","));return wt(n),m(v.assignmentStatement(r,i))}return it(t)?(wt(n),m(v.callStatement(t))):N(e)}function Ht(){bt();var e=k.value;return a!==k.type&&T("<name>",k),$(),m(v.identifier(e))}function Bt(e,t){var r=[];K("(");if(!J(")"))for(;;)if(a===k.type){var i=Ht();n.scope&&ht(i),r.push(i);if(J(","))continue;if(J(")"))break}else{if(p===k.type){r.push(Xt()),K(")");break}T("<name> or '...'",k)}var s=St();return K("end"),t=t||!1,m(v.functionStatement(e,r,t,s))}function jt(){var e,t,r;mt&&(r=gt()),e=Ht(),n.scope&&pt(e,!1);while(J("."))wt(r),t=Ht(),n.scope&&pt(t,!1),e=m(v.memberExpression(e,".",t));return J(":")&&(wt(r),t=Ht(),n.scope&&pt(t,!1),e=m(v.memberExpression(e,":",t))),e}function Ft(){var e=[],t,n;for(;;){bt();if(l===k.type&&J("["))t=qt(),K("]"),K("="),n=qt(),e.push(m(v.tableKey(t,n)));else if(a===k.type)t=qt(),J("=")?(n=qt(),e.push(m(v.tableKeyString(t,n)))):e.push(m(v.tableValue(t)));else{if(null==(n=It())){vt.pop();break}e.push(m(v.tableValue(n)))}if(",;".indexOf(k.value)>=0){$();continue}if("}"===k.value)break}return K("}"),m(v.tableConstructorExpression(e))}function It(){var e=Ut(0);return e}function qt(){var e=It();if(null!=e)return e;T("<expression>",k)}function Rt(e){var t=e.charCodeAt(0),n=e.length;if(1===n)switch(t){case 94:return 10;case 42:case 47:case 37:return 7;case 43:case 45:return 6;case 60:case 62:return 3}else if(2===n)switch(t){case 46:return 5;case 60:case 62:case 61:case 126:return 3;case 111:return 1}else if(97===t&&"and"===e)return 2;return 0}function Ut(e){var t=k.value,n,r;mt&&(r=gt());if(rt(k)){bt(),$();var i=Ut(8);i==null&&T("<expression>",k),n=m(v.unaryExpression(t,i))}null==n&&(n=Xt(),null==n&&(n=zt()));if(null==n)return null;var s;for(;;){t=k.value,s=l===k.type||u===k.type?Rt(t):0;if(s===0||s<=e)break;("^"===t||".."===t)&&s--,$();var o=Ut(s);null==o&&T("<expression>",k),mt&&vt.push(r),n=m(v.binaryExpression(t,n,o))}return n}function zt(){var e,t,r,i;mt&&(r=gt());if(a===k.type)t=k.value,e=Ht(),n.scope&&pt(e,i=dt(t));else{if(!J("("))return null;e=qt(),K(")"),n.scope&&(i=e.isLocal)}var s,u;for(;;)if(l===k.type)switch(k.value){case"[":wt(r),$(),s=qt(),e=m(v.indexExpression(e,s)),K("]");break;case".":wt(r),$(),u=Ht(),n.scope&&pt(u,i),e=m(v.memberExpression(e,".",u));break;case":":wt(r),$(),u=Ht(),n.scope&&pt(u,i),e=m(v.memberExpression(e,":",u)),wt(r),e=Wt(e);break;case"(":case"{":wt(r),e=Wt(e);break;default:return e}else{if(o!==k.type)break;wt(r),e=Wt(e)}return e}function Wt(e){if(l===k.type)switch(k.value){case"(":$();var t=[],n=It();null!=n&&t.push(n);while(J(","))n=qt(),t.push(n);return K(")"),m(v.callExpression(e,t));case"{":bt(),$();var r=Ft();return m(v.tableCallExpression(e,r))}else if(o===k.type)return m(v.stringCallExpression(e,Xt()));T("function arguments",k)}function Xt(){var e=o|f|c|h|p,n=k.value,r=k.type,i;mt&&(i=gt());if(r&e){wt(i);var s=t.slice(k.range[0],k.range[1]);return $(),m(v.literal(r,n,s))}if(u===r&&"function"===n)return wt(i),$(),Bt(null);if(J("{"))return wt(i),Ft()}function Vt(s,o){return"undefined"==typeof o&&"object"==typeof s&&(o=s,s=undefined),o||(o={}),t=s||"",n=S(i,o),C=0,_=1,D=0,r=t.length,ot=[[]],ut=0,at=[],vt=[],n.comments&&(O=[]),n.wait?e:Jt()}function $t(n){return t+=String(n),r=t.length,e}function Jt(e){"undefined"!=typeof e&&$t(e),r=t.length,mt=n.locations||n.ranges,A=P();var i=Et();n.comments&&(i.comments=O),n.scope&&(i.globals=at);if(vt.length>0)throw new Error("Location tracking failed. This is most likely a bug in luaparse");return i}e.version="0.1.4";var t,n,r,i=e.defaultOptions={wait:!1,comments:!0,scope:!1,locations:!1,ranges:!1},s=1,o=2,u=4,a=8,f=16,l=32,c=64,h=128,p=256;e.tokenTypes={EOF:s,StringLiteral:o,Keyword:u,Identifier:a,NumericLiteral:f,Punctuator:l,BooleanLiteral:c,NilLiteral:h,VarargLiteral:p};var d=e.errors={unexpected:"Unexpected %1 '%2' near '%3'",expected:"'%1' expected near '%2'",expectedToken:"%1 expected near '%2'",unfinishedString:"unfinished string near '%1'",malformedNumber:"malformed number near '%1'"},v=e.ast={labelStatement:function(e){return{type:"LabelStatement",label:e}},breakStatement:function(){return{type:"BreakStatement"}},gotoStatement:function(e){return{type:"GotoStatement",label:e}},returnStatement:function(e){return{type:"ReturnStatement",arguments:e}},ifStatement:function(e){return{type:"IfStatement",clauses:e}},ifClause:function(e,t){return{type:"IfClause",condition:e,body:t}},elseifClause:function(e,t){return{type:"ElseifClause",condition:e,body:t}},elseClause:function(e){return{type:"ElseClause",body:e}},whileStatement:function(e,t){return{type:"WhileStatement",condition:e,body:t}},doStatement:function(e){return{type:"DoStatement",body:e}},repeatStatement:function(e,t){return{type:"RepeatStatement",condition:e,body:t}},localStatement:function(e,t){return{type:"LocalStatement",variables:e,init:t}},assignmentStatement:function(e,t){return{type:"AssignmentStatement",variables:e,init:t}},callStatement:function(e){return{type:"CallStatement",expression:e}},functionStatement:function(e,t,n,r){return{type:"FunctionDeclaration",identifier:e,isLocal:n,parameters:t,body:r}},forNumericStatement:function(e,t,n,r,i){return{type:"ForNumericStatement",variable:e,start:t,end:n,step:r,body:i}},forGenericStatement:function(e,t,n){return{type:"ForGenericStatement",variables:e,iterators:t,body:n}},chunk:function(e){return{type:"Chunk",body:e}},identifier:function(e){return{type:"Identifier",name:e}},literal:function(e,t,n){return e=e===o?"StringLiteral":e===f?"NumericLiteral":e===c?"BooleanLiteral":e===h?"NilLiteral":"VarargLiteral",{type:e,value:t,raw:n}},tableKey:function(e,t){return{type:"TableKey",key:e,value:t}},tableKeyString:function(e,t){return{type:"TableKeyString",key:e,value:t}},tableValue:function(e){return{type:"TableValue",value:e}},tableConstructorExpression:function(e){return{type:"TableConstructorExpression",fields:e}},binaryExpression:function(e,t,n){var r="and"===e||"or"===e?"LogicalExpression":"BinaryExpression";return{type:r,operator:e,left:t,right:n}},unaryExpression:function(e,t){return{type:"UnaryExpression",operator:e,argument:t}},memberExpression:function(e,t,n){return{type:"MemberExpression",indexer:t,identifier:n,base:e}},indexExpression:function(e,t){return{type:"IndexExpression",base:e,index:t}},callExpression:function(e,t){return{type:"CallExpression",base:e,arguments:t}},tableCallExpression:function(e,t){return{type:"TableCallExpression",base:e,arguments:t}},stringCallExpression:function(e,t){return{type:"StringCallExpression",base:e,argument:t}},comment:function(e,t){return{type:"Comment",value:e,raw:t}}},g=Array.prototype.slice,y=Object.prototype.toString,b=function(t,n){for(var r=0,i=t.length;r<i;r++)if(t[r]===n)return r;return-1},C,k,L,A,O,M,_,D;e.lex=P;var ot,ut,at,vt=[],mt;yt.prototype.complete=function(){n.locations&&(this.loc.end.line=L.line,this.loc.end.column=L.range[1]-L.lineStart),n.ranges&&(this.range[1]=L.range[1])},e.parse=Vt,e.write=$t,e.end=Jt})}),ace.define("ace/mode/lua_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/lua/luaparse"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../worker/mirror").Mirror,s=e("../mode/lua/luaparse"),o=t.Worker=function(e){i.call(this,e),this.setTimeout(500)};r.inherits(o,i),function(){this.onUpdate=function(){var e=this.doc.getValue(),t=[];try{s.parse(e)}catch(n){n instanceof SyntaxError&&t.push({row:n.line-1,column:n.column,text:n.message,type:"error"})}this.sender.emit("annotate",t)}}.call(o.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _=" \n \f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}}) \ No newline at end of file
diff --git a/library/ace/worker-php.js b/library/ace/worker-php.js
new file mode 100644
index 000000000..edea3d109
--- /dev/null
+++ b/library/ace/worker-php.js
@@ -0,0 +1 @@
+"no use strict";(function(e){function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")return i+r;if(i)return i.location.replace(/\/*$/,"/")+(r||i.main||i.name);if(i===!1)return"";var s=n.lastIndexOf("/");if(s===-1)break;r=n.substr(s)+r,n=n.slice(0,s)}return e}if(typeof e.window!="undefined"&&e.document)return;if(e.require&&e.define)return;e.console||(e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console),e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,data:i.data,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(r,i){i||(i=r,r=null);if(!i.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");i=e.normalizeModule(r,i);var s=e.require.modules[i];if(s)return s.initialized||(s.initialized=!0,s.exports=s.factory().exports),s.exports;if(!e.require.tlns)return console.log("unable to load "+i);var o=t(i,e.require.tlns);return o.slice(-3)!=".js"&&(o+=".js"),e.require.id=i,e.require.modules[i]={},importScripts(o),e.require(r,i)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},require.tlns={},e.initBaseUrls=function(t){for(var n in t)require.tlns[n]=t[n]},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var n=e.main=null,r=e.sender=null;e.onmessage=function(t){var i=t.data;if(i.event&&r)r._signal(i.event,i.data);else if(i.command)if(n[i.command])n[i.command].apply(n,i.args);else{if(!e[i.command])throw new Error("Unknown command:"+i.command);e[i.command].apply(e,i.args)}else if(i.init){e.initBaseUrls(i.tlns),require("ace/lib/es5-shim"),r=e.sender=e.initSender();var s=require(i.module)[i.classname];n=e.main=new s(r)}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,n){"use strict";function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: "+t}function i(e,t){return t.row>=0&&t.row<e.length&&t.column>=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.column<t.column;return e.row<t.row||e.row==t.row&&r}function t(t,n,r){var i=t.action=="insert",s=(i?1:-1)*(t.end.row-t.start.row),o=(i?1:-1)*(t.end.column-t.start.column),u=t.start,a=i?u:t.end;return e(n,u,r)?{row:n.row,column:n.column}:e(a,n,!r)?{row:n.row+s,column:n.column+(n.row==a.row?o:0)}:{row:u.row,column:u.column}}r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){if(e.start.row==e.end.row&&e.start.row!=this.row)return;if(e.start.row>this.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e<this.getLength()?(t=t.concat([""]),n=0):(t=[""].concat(t),e--,n=this.$lines[e].length),this.insertMergedLines({row:e,column:n},t)},this.insertMergedLines=function(e,t){var n=this.clippedPos(e.row,e.column),r={row:n.row+t.length-1,column:(t.length==1?n.column:0)+t[t.length-1].length};return this.applyDelta({start:n,end:r,action:"insert",lines:t}),this.clonePos(r)},this.remove=function(e){var t=this.clippedPos(e.start.row,e.start.column),n=this.clippedPos(e.end.row,e.end.column);return this.applyDelta({start:t,end:n,action:"remove",lines:this.getLinesForRange({start:t,end:n})}),this.clonePos(t)},this.removeInLine=function(e,t,n){var r=this.clippedPos(e,t),i=this.clippedPos(e,n);return this.applyDelta({start:r,end:i,action:"remove",lines:this.getLinesForRange({start:r,end:i})},!0),this.clonePos(r)},this.removeFullLines=function(e,t){e=Math.min(Math.max(0,e),this.getLength()-1),t=Math.min(Math.max(0,t),this.getLength()-1);var n=t==this.getLength()-1&&e>0,r=t<this.getLength()-1,i=n?e-1:e,s=n?this.getLine(i).length:0,u=r?t+1:t,a=r?0:this.getLine(u).length,f=new o(i,s,u,a),l=this.$lines.slice(e,t+1);return this.applyDelta({start:f.start,end:f.end,action:"remove",lines:this.getLinesForRange(f)}),l},this.removeNewLine=function(e){e<this.getLength()-1&&e>=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++)this.applyDelta(e[t])},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(a.prototype),t.Document=a}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function s(e){if(typeof e!="object"||!e)return e;var t;if(Array.isArray(e)){t=[];for(var n=0;n<e.length;n++)t[n]=s(e[n]);return t}var r=e.constructor;if(r===RegExp)return e;t=r();for(var n in e)t[n]=s(e[n]);return t},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/worker/mirror",["require","exports","module","ace/range","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../document").Document,s=e("../lib/lang"),o=t.Mirror=function(e){this.sender=e;var t=this.doc=new i(""),n=this.deferredUpdate=s.delayedCall(this.onUpdate.bind(this)),r=this;e.on("change",function(e){var i=e.data;if(i[0].start)t.applyDeltas(i);else for(var s=0;s<i.length;s+=2){if(Array.isArray(i[s+1]))var o={action:"insert",start:i[s],lines:i[s+1]};else var o={action:"remove",start:i[s],end:i[s+1]};t.applyDelta(o,!0)}if(r.$timeout)return n.schedule(r.$timeout);r.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(o.prototype)}),ace.define("ace/mode/php/php",["require","exports","module"],function(e,t,n){var r={Constants:{}};r.Constants.T_INCLUDE=262,r.Constants.T_INCLUDE_ONCE=261,r.Constants.T_EVAL=260,r.Constants.T_REQUIRE=259,r.Constants.T_REQUIRE_ONCE=258,r.Constants.T_LOGICAL_OR=263,r.Constants.T_LOGICAL_XOR=264,r.Constants.T_LOGICAL_AND=265,r.Constants.T_PRINT=266,r.Constants.T_PLUS_EQUAL=277,r.Constants.T_MINUS_EQUAL=276,r.Constants.T_MUL_EQUAL=275,r.Constants.T_DIV_EQUAL=274,r.Constants.T_CONCAT_EQUAL=273,r.Constants.T_MOD_EQUAL=272,r.Constants.T_AND_EQUAL=271,r.Constants.T_OR_EQUAL=270,r.Constants.T_XOR_EQUAL=269,r.Constants.T_SL_EQUAL=268,r.Constants.T_SR_EQUAL=267,r.Constants.T_BOOLEAN_OR=278,r.Constants.T_BOOLEAN_AND=279,r.Constants.T_IS_EQUAL=283,r.Constants.T_IS_NOT_EQUAL=282,r.Constants.T_IS_IDENTICAL=281,r.Constants.T_IS_NOT_IDENTICAL=280,r.Constants.T_IS_SMALLER_OR_EQUAL=285,r.Constants.T_IS_GREATER_OR_EQUAL=284,r.Constants.T_SL=287,r.Constants.T_SR=286,r.Constants.T_INSTANCEOF=288,r.Constants.T_INC=297,r.Constants.T_DEC=296,r.Constants.T_INT_CAST=295,r.Constants.T_DOUBLE_CAST=294,r.Constants.T_STRING_CAST=293,r.Constants.T_ARRAY_CAST=292,r.Constants.T_OBJECT_CAST=291,r.Constants.T_BOOL_CAST=290,r.Constants.T_UNSET_CAST=289,r.Constants.T_NEW=299,r.Constants.T_CLONE=298,r.Constants.T_EXIT=300,r.Constants.T_IF=301,r.Constants.T_ELSEIF=302,r.Constants.T_ELSE=303,r.Constants.T_ENDIF=304,r.Constants.T_LNUMBER=305,r.Constants.T_DNUMBER=306,r.Constants.T_STRING=307,r.Constants.T_STRING_VARNAME=308,r.Constants.T_VARIABLE=309,r.Constants.T_NUM_STRING=310,r.Constants.T_INLINE_HTML=311,r.Constants.T_CHARACTER=312,r.Constants.T_BAD_CHARACTER=313,r.Constants.T_ENCAPSED_AND_WHITESPACE=314,r.Constants.T_CONSTANT_ENCAPSED_STRING=315,r.Constants.T_ECHO=316,r.Constants.T_DO=317,r.Constants.T_WHILE=318,r.Constants.T_ENDWHILE=319,r.Constants.T_FOR=320,r.Constants.T_ENDFOR=321,r.Constants.T_FOREACH=322,r.Constants.T_ENDFOREACH=323,r.Constants.T_DECLARE=324,r.Constants.T_ENDDECLARE=325,r.Constants.T_AS=326,r.Constants.T_SWITCH=327,r.Constants.T_ENDSWITCH=328,r.Constants.T_CASE=329,r.Constants.T_DEFAULT=330,r.Constants.T_BREAK=331,r.Constants.T_CONTINUE=332,r.Constants.T_GOTO=333,r.Constants.T_FUNCTION=334,r.Constants.T_CONST=335,r.Constants.T_RETURN=336,r.Constants.T_TRY=337,r.Constants.T_CATCH=338,r.Constants.T_THROW=339,r.Constants.T_USE=340,r.Constants.T_GLOBAL=341,r.Constants.T_STATIC=347,r.Constants.T_ABSTRACT=346,r.Constants.T_FINAL=345,r.Constants.T_PRIVATE=344,r.Constants.T_PROTECTED=343,r.Constants.T_PUBLIC=342,r.Constants.T_VAR=348,r.Constants.T_UNSET=349,r.Constants.T_ISSET=350,r.Constants.T_EMPTY=351,r.Constants.T_HALT_COMPILER=352,r.Constants.T_CLASS=353,r.Constants.T_TRAIT=382,r.Constants.T_INTERFACE=354,r.Constants.T_EXTENDS=355,r.Constants.T_IMPLEMENTS=356,r.Constants.T_OBJECT_OPERATOR=357,r.Constants.T_DOUBLE_ARROW=358,r.Constants.T_LIST=359,r.Constants.T_ARRAY=360,r.Constants.T_CLASS_C=361,r.Constants.T_TRAIT_C=381,r.Constants.T_METHOD_C=362,r.Constants.T_FUNC_C=363,r.Constants.T_LINE=364,r.Constants.T_FILE=365,r.Constants.T_COMMENT=366,r.Constants.T_DOC_COMMENT=367,r.Constants.T_OPEN_TAG=368,r.Constants.T_OPEN_TAG_WITH_ECHO=369,r.Constants.T_CLOSE_TAG=370,r.Constants.T_WHITESPACE=371,r.Constants.T_START_HEREDOC=372,r.Constants.T_END_HEREDOC=373,r.Constants.T_DOLLAR_OPEN_CURLY_BRACES=374,r.Constants.T_CURLY_OPEN=375,r.Constants.T_PAAMAYIM_NEKUDOTAYIM=376,r.Constants.T_DOUBLE_COLON=376,r.Constants.T_NAMESPACE=377,r.Constants.T_NS_C=378,r.Constants.T_DIR=379,r.Constants.T_NS_SEPARATOR=380,r.Lexer=function(e,t){var n,i=function(e){if(e.match(/\n/)!==null){var t=e.substring(0,1);e="["+e.split(/\n/).join(t+","+t)+'].join("\\n")'}return e},s,o=t===undefined||/^(on|true|1)$/i.test(t.short_open_tag)?/(\<\?php\s|\<\?|\<\%|\<script language\=('|")?php('|")?\>)/i:/(\<\?php\s|<\?=|\<script language\=('|")?php('|")?\>)/i,u=t===undefined||/^(on|true|1)$/i.test(t.short_open_tag)?/^(\<\?php\s|\<\?|\<\%|\<script language\=('|")?php('|")?\>)/i:/^(\<\?php\s|<\?=|\<script language\=('|")?php('|")?\>)/i,a=[{value:r.Constants.T_NAMESPACE,re:/^namespace(?=\s)/i},{value:r.Constants.T_USE,re:/^use(?=\s)/i},{value:r.Constants.T_ABSTRACT,re:/^abstract(?=\s)/i},{value:r.Constants.T_IMPLEMENTS,re:/^implements(?=\s)/i},{value:r.Constants.T_INTERFACE,re:/^interface(?=\s)/i},{value:r.Constants.T_CONST,re:/^const(?=\s)/i},{value:r.Constants.T_STATIC,re:/^static(?=\s)/i},{value:r.Constants.T_FINAL,re:/^final(?=\s)/i},{value:r.Constants.T_VAR,re:/^var(?=\s)/i},{value:r.Constants.T_GLOBAL,re:/^global(?=\s)/i},{value:r.Constants.T_CLONE,re:/^clone(?=\s)/i},{value:r.Constants.T_THROW,re:/^throw(?=\s)/i},{value:r.Constants.T_EXTENDS,re:/^extends(?=\s)/i},{value:r.Constants.T_AND_EQUAL,re:/^&=/},{value:r.Constants.T_AS,re:/^as(?=\s)/i},{value:r.Constants.T_ARRAY_CAST,re:/^\(array\)/i},{value:r.Constants.T_BOOL_CAST,re:/^\((bool|boolean)\)/i},{value:r.Constants.T_DOUBLE_CAST,re:/^\((real|float|double)\)/i},{value:r.Constants.T_INT_CAST,re:/^\((int|integer)\)/i},{value:r.Constants.T_OBJECT_CAST,re:/^\(object\)/i},{value:r.Constants.T_STRING_CAST,re:/^\(string\)/i},{value:r.Constants.T_UNSET_CAST,re:/^\(unset\)/i},{value:r.Constants.T_TRY,re:/^try(?=\s*{)/i},{value:r.Constants.T_CATCH,re:/^catch(?=\s*\()/i},{value:r.Constants.T_INSTANCEOF,re:/^instanceof(?=\s)/i},{value:r.Constants.T_LOGICAL_OR,re:/^or(?=\s)/i},{value:r.Constants.T_LOGICAL_AND,re:/^and(?=\s)/i},{value:r.Constants.T_LOGICAL_XOR,re:/^xor(?=\s)/i},{value:r.Constants.T_BOOLEAN_AND,re:/^&&/},{value:r.Constants.T_BOOLEAN_OR,re:/^\|\|/},{value:r.Constants.T_CONTINUE,re:/^continue(?=\s|;)/i},{value:r.Constants.T_BREAK,re:/^break(?=\s|;)/i},{value:r.Constants.T_ENDDECLARE,re:/^enddeclare(?=\s|;)/i},{value:r.Constants.T_ENDFOR,re:/^endfor(?=\s|;)/i},{value:r.Constants.T_ENDFOREACH,re:/^endforeach(?=\s|;)/i},{value:r.Constants.T_ENDIF,re:/^endif(?=\s|;)/i},{value:r.Constants.T_ENDSWITCH,re:/^endswitch(?=\s|;)/i},{value:r.Constants.T_ENDWHILE,re:/^endwhile(?=\s|;)/i},{value:r.Constants.T_CASE,re:/^case(?=\s)/i},{value:r.Constants.T_DEFAULT,re:/^default(?=\s|:)/i},{value:r.Constants.T_SWITCH,re:/^switch(?=[ (])/i},{value:r.Constants.T_EXIT,re:/^(exit|die)(?=[ \(;])/i},{value:r.Constants.T_CLOSE_TAG,re:/^(\?\>|\%\>|\<\/script\>)\s?\s?/i,func:function(e){return c=!1,e}},{value:r.Constants.T_DOUBLE_ARROW,re:/^\=\>/},{value:r.Constants.T_DOUBLE_COLON,re:/^\:\:/},{value:r.Constants.T_METHOD_C,re:/^__METHOD__/},{value:r.Constants.T_LINE,re:/^__LINE__/},{value:r.Constants.T_FILE,re:/^__FILE__/},{value:r.Constants.T_FUNC_C,re:/^__FUNCTION__/},{value:r.Constants.T_NS_C,re:/^__NAMESPACE__/},{value:r.Constants.T_TRAIT_C,re:/^__TRAIT__/},{value:r.Constants.T_DIR,re:/^__DIR__/},{value:r.Constants.T_CLASS_C,re:/^__CLASS__/},{value:r.Constants.T_INC,re:/^\+\+/},{value:r.Constants.T_DEC,re:/^\-\-/},{value:r.Constants.T_CONCAT_EQUAL,re:/^\.\=/},{value:r.Constants.T_DIV_EQUAL,re:/^\/\=/},{value:r.Constants.T_XOR_EQUAL,re:/^\^\=/},{value:r.Constants.T_MUL_EQUAL,re:/^\*\=/},{value:r.Constants.T_MOD_EQUAL,re:/^\%\=/},{value:r.Constants.T_SL_EQUAL,re:/^<<=/},{value:r.Constants.T_START_HEREDOC,re:/^<<<[A-Z_0-9]+\s/i,func:function(e){return n=e.substring(3,e.length-1),e}},{value:r.Constants.T_SL,re:/^<</},{value:r.Constants.T_IS_SMALLER_OR_EQUAL,re:/^<=/},{value:r.Constants.T_SR_EQUAL,re:/^>>=/},{value:r.Constants.T_SR,re:/^>>/},{value:r.Constants.T_IS_GREATER_OR_EQUAL,re:/^>=/},{value:r.Constants.T_OR_EQUAL,re:/^\|\=/},{value:r.Constants.T_PLUS_EQUAL,re:/^\+\=/},{value:r.Constants.T_MINUS_EQUAL,re:/^-\=/},{value:r.Constants.T_OBJECT_OPERATOR,re:/^\-\>/i},{value:r.Constants.T_CLASS,re:/^class(?=[\s\{])/i,afterWhitespace:!0},{value:r.Constants.T_TRAIT,re:/^trait(?=[\s]+[A-Za-z])/i},{value:r.Constants.T_PUBLIC,re:/^public(?=[\s])/i},{value:r.Constants.T_PRIVATE,re:/^private(?=[\s])/i},{value:r.Constants.T_PROTECTED,re:/^protected(?=[\s])/i},{value:r.Constants.T_ARRAY,re:/^array(?=\s*?\()/i},{value:r.Constants.T_EMPTY,re:/^empty(?=[ \(])/i},{value:r.Constants.T_ISSET,re:/^isset(?=[ \(])/i},{value:r.Constants.T_UNSET,re:/^unset(?=[ \(])/i},{value:r.Constants.T_RETURN,re:/^return(?=[ "'(;])/i},{value:r.Constants.T_FUNCTION,re:/^function(?=[ "'(;])/i},{value:r.Constants.T_ECHO,re:/^echo(?=[ "'(;])/i},{value:r.Constants.T_LIST,re:/^list(?=\s*?\()/i},{value:r.Constants.T_PRINT,re:/^print(?=[ "'(;])/i},{value:r.Constants.T_INCLUDE,re:/^include(?=[ "'(;])/i},{value:r.Constants.T_INCLUDE_ONCE,re:/^include_once(?=[ "'(;])/i},{value:r.Constants.T_REQUIRE,re:/^require(?=[ "'(;])/i},{value:r.Constants.T_REQUIRE_ONCE,re:/^require_once(?=[ "'(;])/i},{value:r.Constants.T_NEW,re:/^new(?=[ ])/i},{value:r.Constants.T_COMMENT,re:/^\/\*([\S\s]*?)(?:\*\/|$)/},{value:r.Constants.T_COMMENT,re:/^\/\/.*(\s)?/},{value:r.Constants.T_COMMENT,re:/^\#.*(\s)?/},{value:r.Constants.T_ELSEIF,re:/^elseif(?=[\s(])/i},{value:r.Constants.T_GOTO,re:/^goto(?=[\s(])/i},{value:r.Constants.T_ELSE,re:/^else(?=[\s{:])/i},{value:r.Constants.T_IF,re:/^if(?=[\s(])/i},{value:r.Constants.T_DO,re:/^do(?=[ {])/i},{value:r.Constants.T_WHILE,re:/^while(?=[ (])/i},{value:r.Constants.T_FOREACH,re:/^foreach(?=[ (])/i},{value:r.Constants.T_ISSET,re:/^isset(?=[ (])/i},{value:r.Constants.T_IS_IDENTICAL,re:/^===/},{value:r.Constants.T_IS_EQUAL,re:/^==/},{value:r.Constants.T_IS_NOT_IDENTICAL,re:/^\!==/},{value:r.Constants.T_IS_NOT_EQUAL,re:/^(\!=|\<\>)/},{value:r.Constants.T_FOR,re:/^for(?=[ (])/i},{value:r.Constants.T_DNUMBER,re:/^[0-9]*\.[0-9]+([eE][-]?[0-9]*)?/},{value:r.Constants.T_LNUMBER,re:/^(0x[0-9A-F]+|[0-9]+)/i},{value:r.Constants.T_OPEN_TAG_WITH_ECHO,re:/^(\<\?=|\<\%=)/i},{value:r.Constants.T_OPEN_TAG,re:u},{value:r.Constants.T_VARIABLE,re:/^\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/},{value:r.Constants.T_WHITESPACE,re:/^\s+/},{value:r.Constants.T_CONSTANT_ENCAPSED_STRING,re:/^("(?:[^"\\]|\\[\s\S])*"|'(?:[^'\\]|\\[\s\S])*')/,func:function(e,t){var n=0,i,s=0;if(e.substring(0,1)==="'")return e;var o=e.match(/(?:[^\\]|\\.)*[^\\]\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/g);if(o!==null){while(e.length>0){i=e.length,o=e.match(/^[\[\]\;\:\?\(\)\!\.\,\>\<\=\+\-\/\*\|\&\@\^\%\"\'\{\}]/),o!==null&&(f.push(o[0]),e=e.substring(1),n>0&&o[0]==="}"&&n--,o[0]==="["&&s++,o[0]==="]"&&s--),o=e.match(/^\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/);if(o!==null){f.push([parseInt(r.Constants.T_VARIABLE,10),o[0],l]),e=e.substring(o[0].length),o=e.match(/^(\-\>)\s*([a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*)\s*(\()/),o!==null&&(f.push([parseInt(r.Constants.T_OBJECT_OPERATOR,10),o[1],l]),f.push([parseInt(r.Constants.T_STRING,10),o[2],l]),o[3]&&f.push(o[3]),e=e.substring(o[0].length));if(e.match(/^\[/g)!==null)continue}var u;n>0?u=/^([^\\\$"{}\]\(\)\->]|\\.)+/g:u=/^([^\\\$"{]|\\.|{[^\$]|\$(?=[^a-zA-Z_\x7f-\uffff]))+/g;var a,c;while((o=e.match(u))!==null){if(e.length===1)throw new Error(o);a=0,n>0?(c=o[0].match(/^[\[\]\;\:\?\(\)\!\.\,\>\<\=\+\-\/\*\|\&\{\}\@\^\%\$\~]/))?f.push(c[0]):a=r.Constants.T_STRING:a=r.Constants.T_ENCAPSED_AND_WHITESPACE,a&&f.push([parseInt(a,10),o[0].replace(/\n/g,"\\n").replace(/\r/g,""),l]),l+=o[0].split("\n").length-1,e=e.substring(o[0].length)}n>0&&e.match(/^\->/)!==null&&(f.push([parseInt(r.Constants.T_OBJECT_OPERATOR,10),"->",l]),e=e.substring(2)),e.match(/^{\$/)!==null&&(f.push([parseInt(r.Constants.T_CURLY_OPEN,10),"{",l]),e=e.substring(1),n++);if(i===e.length&&(o=e.match(/^(([^\\]|\\.)*?[^\\]\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*)/g))!==null)return}return undefined}return e=e.replace(/\r/g,""),e}},{value:r.Constants.T_NS_SEPARATOR,re:/^\\(?=[a-zA-Z_])/},{value:r.Constants.T_STRING,re:/^[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/},{value:-1,re:/^[\[\]\;\:\?\(\)\!\.\,\>\<\=\+\-\/\*\|\&\{\}\@\^\%\"\'\$\~]/}],f=[],l=1,c=!1,h=!0;if(e===null)return f;typeof e!="string"&&(e=e.toString());while(e.length>0&&h===!0)if(c===!0)if(n!==undefined){var p=new RegExp("([\\S\\s]*?)(\\r\\n|\\n|\\r)("+n+")(;|\\r\\n|\\n)","i"),d=e.match(p);d!==null&&(f.push([parseInt(r.Constants.T_ENCAPSED_AND_WHITESPACE,10),d[1].replace(/^\n/g,"").replace(/\\\$/g,"$")+"\n",l]),l+=d[1].split("\n").length,f.push([parseInt(r.Constants.T_END_HEREDOC,10),d[3],l]),e=e.substring(d[1].length+d[2].length+d[3].length),n=undefined);if(d===null)throw Error("sup")}else h=a.some(function(t){if(t.afterWhitespace===!0){var n=f[f.length-1];if(!Array.isArray(n)||n[0]!==r.Constants.T_WHITESPACE&&n[0]!==r.Constants.T_OPEN_TAG&&n[0]!==r.Constants.T_COMMENT)return!1}var i=e.match(t.re);if(i!==null){if(t.value!==-1){var s=i[0];t.func!==undefined&&(s=t.func(s,t)),s!==undefined&&(f.push([parseInt(t.value,10),s,l]),l+=s.split("\n").length-1)}else f.push(i[0]);return e=e.substring(i[0].length),!0}return!1});else{var d=o.exec(e);if(d===null)return f.push([parseInt(r.Constants.T_INLINE_HTML,10),e.replace(/^\n/,""),l]),f;if(d.index>0){var v=e.substring(0,d.index);f.push([parseInt(r.Constants.T_INLINE_HTML,10),v,l]),l+=v.split("\n").length-1,e=e.substring(d.index)}c=!0}return f},r.Parser=function(e,t){var n=this.yybase,i=this.yydefault,s=this.yycheck,o=this.yyaction,u=this.yylen,a=this.yygbase,f=this.yygcheck,l=this.yyp,c=this.yygoto,h=this.yylhs,p=this.terminals,d=this.translate,v=this.yygdefault;this.pos=-1,this.line=1,this.tokenMap=this.createTokenMap(),this.dropTokens={},this.dropTokens[r.Constants.T_WHITESPACE]=1,this.dropTokens[r.Constants.T_OPEN_TAG]=1;var m=[];e.forEach(function(e,t){typeof e=="object"&&e[0]===r.Constants.T_OPEN_TAG_WITH_ECHO?(m.push([r.Constants.T_OPEN_TAG,e[1],e[2]]),m.push([r.Constants.T_ECHO,e[1],e[2]])):m.push(e)}),this.tokens=m;var g=this.TOKEN_NONE;this.startAttributes={startLine:1},this.endAttributes={};var y=[this.startAttributes],b=0,w=[b];this.yyastk=[],this.stackPos=0;var E,S;for(;;){if(n[b]===0)E=i[b];else{g===this.TOKEN_NONE&&(S=this.getNextToken(),g=S>=0&&S<this.TOKEN_MAP_SIZE?d[S]:this.TOKEN_INVALID,y[this.stackPos]=this.startAttributes);if(((E=n[b]+g)>=0&&E<this.YYLAST&&s[E]===g||b<this.YY2TBLSTATE&&(E=n[b+this.YYNLSTATES]+g)>=0&&E<this.YYLAST&&s[E]===g)&&(E=o[E])!==this.YYDEFAULT)if(E>0){++this.stackPos,w[this.stackPos]=b=E,this.yyastk[this.stackPos]=this.tokenValue,y[this.stackPos]=this.startAttributes,g=this.TOKEN_NONE;if(E<this.YYNLSTATES)continue;E-=this.YYNLSTATES}else E=-E;else E=i[b]}for(;;){if(E===0)return this.yyval;if(E===this.YYUNEXPECTED){if(t!==!0){var N=[];for(var C=0;C<this.TOKEN_MAP_SIZE;++C)if((E=n[b]+C)>=0&&E<this.YYLAST&&s[E]==C||b<this.YY2TBLSTATE&&(E=n[b+this.YYNLSTATES]+C)&&E<this.YYLAST&&s[E]==C)if(o[E]!=this.YYUNEXPECTED){if(N.length==4){N=[];break}N.push(this.terminals[C])}var k="";throw N.length&&(k=", expecting "+N.join(" or ")),new r.ParseError("syntax error, unexpected "+p[g]+k,this.startAttributes.startLine)}return this.startAttributes.startLine}for(var x in this.endAttributes)y[this.stackPos-u[E]][x]=this.endAttributes[x];try{this["yyn"+E](y[this.stackPos-u[E]])}catch(T){throw T}this.stackPos-=u[E],E=h[E],(l=a[E]+w[this.stackPos])>=0&&l<this.YYGLAST&&f[l]===E?b=c[l]:b=v[E],++this.stackPos,w[this.stackPos]=b,this.yyastk[this.stackPos]=this.yyval,y[this.stackPos]=this.startAttributes;if(b<this.YYNLSTATES)break;E=b-this.YYNLSTATES}}},r.ParseError=function(e,t){this.message=e,this.line=t},r.Parser.prototype.MODIFIER_PUBLIC=1,r.Parser.prototype.MODIFIER_PROTECTED=2,r.Parser.prototype.MODIFIER_PRIVATE=4,r.Parser.prototype.MODIFIER_STATIC=8,r.Parser.prototype.MODIFIER_ABSTRACT=16,r.Parser.prototype.MODIFIER_FINAL=32,r.Parser.prototype.getNextToken=function(){this.startAttributes={},this.endAttributes={};var e,t;while(this.tokens[++this.pos]!==undefined){e=this.tokens[this.pos];if(typeof e=="string")return this.startAttributes.startLine=this.line,this.endAttributes.endLine=this.line,'b"'===e?(this.tokenValue='b"','"'.charCodeAt(0)):(this.tokenValue=e,e.charCodeAt(0));this.line+=(t=e[1].match(/\n/g))===null?0:t.length;if(r.Constants.T_COMMENT===e[0])Array.isArray(this.startAttributes.comments)||(this.startAttributes.comments=[]),this.startAttributes.comments.push({type:"comment",comment:e[1],line:e[2]});else if(r.Constants.T_DOC_COMMENT===e[0])this.startAttributes.comments.push(new PHPParser_Comment_Doc(e[1],e[2]));else if(this.dropTokens[e[0]]===undefined)return this.tokenValue=e[1],this.startAttributes.startLine=e[2],this.endAttributes.endLine=this.line,this.tokenMap[e[0]]}return this.startAttributes.startLine=this.line,0},r.Parser.prototype.tokenName=function(e){var t=["T_INCLUDE","T_INCLUDE_ONCE","T_EVAL","T_REQUIRE","T_REQUIRE_ONCE","T_LOGICAL_OR","T_LOGICAL_XOR","T_LOGICAL_AND","T_PRINT","T_PLUS_EQUAL","T_MINUS_EQUAL","T_MUL_EQUAL","T_DIV_EQUAL","T_CONCAT_EQUAL","T_MOD_EQUAL","T_AND_EQUAL","T_OR_EQUAL","T_XOR_EQUAL","T_SL_EQUAL","T_SR_EQUAL","T_BOOLEAN_OR","T_BOOLEAN_AND","T_IS_EQUAL","T_IS_NOT_EQUAL","T_IS_IDENTICAL","T_IS_NOT_IDENTICAL","T_IS_SMALLER_OR_EQUAL","T_IS_GREATER_OR_EQUAL","T_SL","T_SR","T_INSTANCEOF","T_INC","T_DEC","T_INT_CAST","T_DOUBLE_CAST","T_STRING_CAST","T_ARRAY_CAST","T_OBJECT_CAST","T_BOOL_CAST","T_UNSET_CAST","T_NEW","T_CLONE","T_EXIT","T_IF","T_ELSEIF","T_ELSE","T_ENDIF","T_LNUMBER","T_DNUMBER","T_STRING","T_STRING_VARNAME","T_VARIABLE","T_NUM_STRING","T_INLINE_HTML","T_CHARACTER","T_BAD_CHARACTER","T_ENCAPSED_AND_WHITESPACE","T_CONSTANT_ENCAPSED_STRING","T_ECHO","T_DO","T_WHILE","T_ENDWHILE","T_FOR","T_ENDFOR","T_FOREACH","T_ENDFOREACH","T_DECLARE","T_ENDDECLARE","T_AS","T_SWITCH","T_ENDSWITCH","T_CASE","T_DEFAULT","T_BREAK","T_CONTINUE","T_GOTO","T_FUNCTION","T_CONST","T_RETURN","T_TRY","T_CATCH","T_THROW","T_USE","T_INSTEADOF","T_GLOBAL","T_STATIC","T_ABSTRACT","T_FINAL","T_PRIVATE","T_PROTECTED","T_PUBLIC","T_VAR","T_UNSET","T_ISSET","T_EMPTY","T_HALT_COMPILER","T_CLASS","T_TRAIT","T_INTERFACE","T_EXTENDS","T_IMPLEMENTS","T_OBJECT_OPERATOR","T_DOUBLE_ARROW","T_LIST","T_ARRAY","T_CALLABLE","T_CLASS_C","T_TRAIT_C","T_METHOD_C","T_FUNC_C","T_LINE","T_FILE","T_COMMENT","T_DOC_COMMENT","T_OPEN_TAG","T_OPEN_TAG_WITH_ECHO","T_CLOSE_TAG","T_WHITESPACE","T_START_HEREDOC","T_END_HEREDOC","T_DOLLAR_OPEN_CURLY_BRACES","T_CURLY_OPEN","T_PAAMAYIM_NEKUDOTAYIM","T_DOUBLE_COLON","T_NAMESPACE","T_NS_C","T_DIR","T_NS_SEPARATOR"],n="UNKNOWN";return t.some(function(t){return r.Constants[t]===e?(n=t,!0):!1}),n},r.Parser.prototype.createTokenMap=function(){var e={},t,n,i=r.Constants.T_PAAMAYIM_NEKUDOTAYIM;for(n=256;n<1e3;++n)i===n?e[n]=this.T_PAAMAYIM_NEKUDOTAYIM:r.Constants.T_OPEN_TAG_WITH_ECHO===n?e[n]=r.Constants.T_ECHO:r.Constants.T_CLOSE_TAG===n?e[n]=59:"UNKNOWN"!==(t=this.tokenName(n))&&(e[n]=this[t]);return e};var i=function(){this.yyval=this.yyastk[this.stackPos-0]};r.Parser.prototype.MakeArray=function(e){return Array.isArray(e)?e:[e]},r.Parser.prototype.parseString=function(e){var t=0;return"b"===e[0]&&(t=1),"'"===e[t]?e=e.replace(["\\\\","\\'"],["\\","'"]):e=this.parseEscapeSequences(e,'"'),e},r.Parser.prototype.parseEscapeSequences=function(e,t){undefined!==t&&(e=e.replace(new RegExp("\\"+t,"g"),t));var n={"\\":"\\",$:"$",n:"\n",r:"\r",t:" ",f:"\f",v:" ",e:""};return e.replace(/~\\\\([\\\\$nrtfve]|[xX][0-9a-fA-F]{1,2}|[0-7]{1,3})~/g,function(e){var t=e[1];return n[t]!==undefined?n[t]:"x"===t[0]||"X"===t[0]?chr(hexdec(t)):chr(octdec(t))})},r.Parser.prototype.TOKEN_NONE=-1,r.Parser.prototype.TOKEN_INVALID=149,r.Parser.prototype.TOKEN_MAP_SIZE=384,r.Parser.prototype.YYLAST=913,r.Parser.prototype.YY2TBLSTATE=328,r.Parser.prototype.YYGLAST=415,r.Parser.prototype.YYNLSTATES=544,r.Parser.prototype.YYUNEXPECTED=32767,r.Parser.prototype.YYDEFAULT=-32766,r.Parser.prototype.YYERRTOK=256,r.Parser.prototype.T_INCLUDE=257,r.Parser.prototype.T_INCLUDE_ONCE=258,r.Parser.prototype.T_EVAL=259,r.Parser.prototype.T_REQUIRE=260,r.Parser.prototype.T_REQUIRE_ONCE=261,r.Parser.prototype.T_LOGICAL_OR=262,r.Parser.prototype.T_LOGICAL_XOR=263,r.Parser.prototype.T_LOGICAL_AND=264,r.Parser.prototype.T_PRINT=265,r.Parser.prototype.T_PLUS_EQUAL=266,r.Parser.prototype.T_MINUS_EQUAL=267,r.Parser.prototype.T_MUL_EQUAL=268,r.Parser.prototype.T_DIV_EQUAL=269,r.Parser.prototype.T_CONCAT_EQUAL=270,r.Parser.prototype.T_MOD_EQUAL=271,r.Parser.prototype.T_AND_EQUAL=272,r.Parser.prototype.T_OR_EQUAL=273,r.Parser.prototype.T_XOR_EQUAL=274,r.Parser.prototype.T_SL_EQUAL=275,r.Parser.prototype.T_SR_EQUAL=276,r.Parser.prototype.T_BOOLEAN_OR=277,r.Parser.prototype.T_BOOLEAN_AND=278,r.Parser.prototype.T_IS_EQUAL=279,r.Parser.prototype.T_IS_NOT_EQUAL=280,r.Parser.prototype.T_IS_IDENTICAL=281,r.Parser.prototype.T_IS_NOT_IDENTICAL=282,r.Parser.prototype.T_IS_SMALLER_OR_EQUAL=283,r.Parser.prototype.T_IS_GREATER_OR_EQUAL=284,r.Parser.prototype.T_SL=285,r.Parser.prototype.T_SR=286,r.Parser.prototype.T_INSTANCEOF=287,r.Parser.prototype.T_INC=288,r.Parser.prototype.T_DEC=289,r.Parser.prototype.T_INT_CAST=290,r.Parser.prototype.T_DOUBLE_CAST=291,r.Parser.prototype.T_STRING_CAST=292,r.Parser.prototype.T_ARRAY_CAST=293,r.Parser.prototype.T_OBJECT_CAST=294,r.Parser.prototype.T_BOOL_CAST=295,r.Parser.prototype.T_UNSET_CAST=296,r.Parser.prototype.T_NEW=297,r.Parser.prototype.T_CLONE=298,r.Parser.prototype.T_EXIT=299,r.Parser.prototype.T_IF=300,r.Parser.prototype.T_ELSEIF=301,r.Parser.prototype.T_ELSE=302,r.Parser.prototype.T_ENDIF=303,r.Parser.prototype.T_LNUMBER=304,r.Parser.prototype.T_DNUMBER=305,r.Parser.prototype.T_STRING=306,r.Parser.prototype.T_STRING_VARNAME=307,r.Parser.prototype.T_VARIABLE=308,r.Parser.prototype.T_NUM_STRING=309,r.Parser.prototype.T_INLINE_HTML=310,r.Parser.prototype.T_CHARACTER=311,r.Parser.prototype.T_BAD_CHARACTER=312,r.Parser.prototype.T_ENCAPSED_AND_WHITESPACE=313,r.Parser.prototype.T_CONSTANT_ENCAPSED_STRING=314,r.Parser.prototype.T_ECHO=315,r.Parser.prototype.T_DO=316,r.Parser.prototype.T_WHILE=317,r.Parser.prototype.T_ENDWHILE=318,r.Parser.prototype.T_FOR=319,r.Parser.prototype.T_ENDFOR=320,r.Parser.prototype.T_FOREACH=321,r.Parser.prototype.T_ENDFOREACH=322,r.Parser.prototype.T_DECLARE=323,r.Parser.prototype.T_ENDDECLARE=324,r.Parser.prototype.T_AS=325,r.Parser.prototype.T_SWITCH=326,r.Parser.prototype.T_ENDSWITCH=327,r.Parser.prototype.T_CASE=328,r.Parser.prototype.T_DEFAULT=329,r.Parser.prototype.T_BREAK=330,r.Parser.prototype.T_CONTINUE=331,r.Parser.prototype.T_GOTO=332,r.Parser.prototype.T_FUNCTION=333,r.Parser.prototype.T_CONST=334,r.Parser.prototype.T_RETURN=335,r.Parser.prototype.T_TRY=336,r.Parser.prototype.T_CATCH=337,r.Parser.prototype.T_THROW=338,r.Parser.prototype.T_USE=339,r.Parser.prototype.T_INSTEADOF=340,r.Parser.prototype.T_GLOBAL=341,r.Parser.prototype.T_STATIC=342,r.Parser.prototype.T_ABSTRACT=343,r.Parser.prototype.T_FINAL=344,r.Parser.prototype.T_PRIVATE=345,r.Parser.prototype.T_PROTECTED=346,r.Parser.prototype.T_PUBLIC=347,r.Parser.prototype.T_VAR=348,r.Parser.prototype.T_UNSET=349,r.Parser.prototype.T_ISSET=350,r.Parser.prototype.T_EMPTY=351,r.Parser.prototype.T_HALT_COMPILER=352,r.Parser.prototype.T_CLASS=353,r.Parser.prototype.T_TRAIT=354,r.Parser.prototype.T_INTERFACE=355,r.Parser.prototype.T_EXTENDS=356,r.Parser.prototype.T_IMPLEMENTS=357,r.Parser.prototype.T_OBJECT_OPERATOR=358,r.Parser.prototype.T_DOUBLE_ARROW=359,r.Parser.prototype.T_LIST=360,r.Parser.prototype.T_ARRAY=361,r.Parser.prototype.T_CALLABLE=362,r.Parser.prototype.T_CLASS_C=363,r.Parser.prototype.T_TRAIT_C=364,r.Parser.prototype.T_METHOD_C=365,r.Parser.prototype.T_FUNC_C=366,r.Parser.prototype.T_LINE=367,r.Parser.prototype.T_FILE=368,r.Parser.prototype.T_COMMENT=369,r.Parser.prototype.T_DOC_COMMENT=370,r.Parser.prototype.T_OPEN_TAG=371,r.Parser.prototype.T_OPEN_TAG_WITH_ECHO=372,r.Parser.prototype.T_CLOSE_TAG=373,r.Parser.prototype.T_WHITESPACE=374,r.Parser.prototype.T_START_HEREDOC=375,r.Parser.prototype.T_END_HEREDOC=376,r.Parser.prototype.T_DOLLAR_OPEN_CURLY_BRACES=377,r.Parser.prototype.T_CURLY_OPEN=378,r.Parser.prototype.T_PAAMAYIM_NEKUDOTAYIM=379,r.Parser.prototype.T_NAMESPACE=380,r.Parser.prototype.T_NS_C=381,r.Parser.prototype.T_DIR=382,r.Parser.prototype.T_NS_SEPARATOR=383,r.Parser.prototype.terminals=["$EOF","error","T_INCLUDE","T_INCLUDE_ONCE","T_EVAL","T_REQUIRE","T_REQUIRE_ONCE","','","T_LOGICAL_OR","T_LOGICAL_XOR","T_LOGICAL_AND","T_PRINT","'='","T_PLUS_EQUAL","T_MINUS_EQUAL","T_MUL_EQUAL","T_DIV_EQUAL","T_CONCAT_EQUAL","T_MOD_EQUAL","T_AND_EQUAL","T_OR_EQUAL","T_XOR_EQUAL","T_SL_EQUAL","T_SR_EQUAL","'?'","':'","T_BOOLEAN_OR","T_BOOLEAN_AND","'|'","'^'","'&'","T_IS_EQUAL","T_IS_NOT_EQUAL","T_IS_IDENTICAL","T_IS_NOT_IDENTICAL","'<'","T_IS_SMALLER_OR_EQUAL","'>'","T_IS_GREATER_OR_EQUAL","T_SL","T_SR","'+'","'-'","'.'","'*'","'/'","'%'","'!'","T_INSTANCEOF","'~'","T_INC","T_DEC","T_INT_CAST","T_DOUBLE_CAST","T_STRING_CAST","T_ARRAY_CAST","T_OBJECT_CAST","T_BOOL_CAST","T_UNSET_CAST","'@'","'['","T_NEW","T_CLONE","T_EXIT","T_IF","T_ELSEIF","T_ELSE","T_ENDIF","T_LNUMBER","T_DNUMBER","T_STRING","T_STRING_VARNAME","T_VARIABLE","T_NUM_STRING","T_INLINE_HTML","T_ENCAPSED_AND_WHITESPACE","T_CONSTANT_ENCAPSED_STRING","T_ECHO","T_DO","T_WHILE","T_ENDWHILE","T_FOR","T_ENDFOR","T_FOREACH","T_ENDFOREACH","T_DECLARE","T_ENDDECLARE","T_AS","T_SWITCH","T_ENDSWITCH","T_CASE","T_DEFAULT","T_BREAK","T_CONTINUE","T_GOTO","T_FUNCTION","T_CONST","T_RETURN","T_TRY","T_CATCH","T_THROW","T_USE","T_INSTEADOF","T_GLOBAL","T_STATIC","T_ABSTRACT","T_FINAL","T_PRIVATE","T_PROTECTED","T_PUBLIC","T_VAR","T_UNSET","T_ISSET","T_EMPTY","T_HALT_COMPILER","T_CLASS","T_TRAIT","T_INTERFACE","T_EXTENDS","T_IMPLEMENTS","T_OBJECT_OPERATOR","T_DOUBLE_ARROW","T_LIST","T_ARRAY","T_CALLABLE","T_CLASS_C","T_TRAIT_C","T_METHOD_C","T_FUNC_C","T_LINE","T_FILE","T_START_HEREDOC","T_END_HEREDOC","T_DOLLAR_OPEN_CURLY_BRACES","T_CURLY_OPEN","T_PAAMAYIM_NEKUDOTAYIM","T_NAMESPACE","T_NS_C","T_DIR","T_NS_SEPARATOR","';'","'{'","'}'","'('","')'","'$'","']'","'`'","'\"'","???"],r.Parser.prototype.translate=[0,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,47,148,149,145,46,30,149,143,144,44,41,7,42,43,45,149,149,149,149,149,149,149,149,149,149,25,140,35,12,37,24,59,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,60,149,146,29,149,147,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,141,28,142,49,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,1,2,3,4,5,6,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,26,27,31,32,33,34,36,38,39,40,48,50,51,52,53,54,55,56,57,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,149,149,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,149,149,149,149,149,149,131,132,133,134,135,136,137,138,139],r.Parser.prototype.yyaction=[61,62,363,63,64,-32766,-32766,-32766,509,65,708,709,710,707,706,705,-32766,-32766,-32766,-32766,-32766,-32766,132,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767,-32766,335,-32766,-32766,-32766,-32766,-32766,66,67,351,663,664,40,68,548,69,232,233,70,71,72,73,74,75,76,77,30,246,78,336,364,-112,0,469,833,834,365,641,890,436,590,41,835,53,27,366,294,367,687,368,921,369,923,922,370,-32766,-32766,-32766,42,43,371,339,126,44,372,337,79,297,349,292,293,-32766,918,-32766,-32766,373,374,375,376,377,391,199,361,338,573,613,378,379,380,381,845,839,840,841,842,836,837,253,-32766,87,88,89,391,843,838,338,597,519,128,80,129,273,332,257,261,47,673,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,799,247,884,108,109,110,226,247,21,-32766,310,-32766,-32766,-32766,642,548,-32766,-32766,-32766,-32766,56,353,-32766,-32766,-32766,55,-32766,-32766,-32766,-32766,-32766,58,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,557,-32766,-32766,518,-32766,548,890,-32766,390,-32766,228,252,-32766,-32766,-32766,-32766,-32766,275,-32766,234,-32766,587,588,-32766,-32766,-32766,-32766,-32766,-32766,-32766,46,236,-32766,-32766,281,-32766,682,348,-32766,390,-32766,346,333,521,-32766,-32766,-32766,271,911,262,237,446,911,-32766,894,59,700,358,135,548,123,538,35,-32766,333,122,-32766,-32766,-32766,271,-32766,124,-32766,692,-32766,-32766,-32766,-32766,700,273,22,-32766,-32766,-32766,-32766,239,-32766,-32766,612,-32766,548,134,-32766,390,-32766,462,354,-32766,-32766,-32766,-32766,-32766,227,-32766,238,-32766,845,542,-32766,856,611,200,-32766,-32766,-32766,259,280,-32766,-32766,201,-32766,855,129,-32766,390,130,202,333,206,-32766,-32766,-32766,271,-32766,-32766,-32766,125,601,-32766,136,299,700,489,28,548,105,106,107,-32766,498,499,-32766,-32766,-32766,207,-32766,133,-32766,525,-32766,-32766,-32766,-32766,663,664,527,-32766,-32766,-32766,-32766,528,-32766,-32766,610,-32766,548,427,-32766,390,-32766,532,539,-32766,-32766,-32766,-32766,-32766,240,-32766,247,-32766,697,543,-32766,554,523,608,-32766,-32766,-32766,686,535,-32766,-32766,54,-32766,57,60,-32766,390,246,-155,278,345,-32766,-32766,-32766,506,347,-152,471,402,403,-32766,405,404,272,493,416,548,318,417,505,-32766,517,548,-32766,-32766,-32766,549,-32766,562,-32766,916,-32766,-32766,-32766,-32766,564,826,848,-32766,-32766,-32766,-32766,694,-32766,-32766,485,-32766,548,487,-32766,390,-32766,504,802,-32766,-32766,-32766,-32766,-32766,279,-32766,911,-32766,502,492,-32766,413,483,269,-32766,-32766,-32766,243,337,-32766,-32766,418,-32766,454,229,-32766,390,274,373,374,344,-32766,-32766,-32766,360,614,-32766,573,613,378,379,-274,548,615,-332,844,-32766,258,51,-32766,-32766,-32766,270,-32766,346,-32766,52,-32766,260,0,-32766,-333,-32766,-32766,-32766,-32766,-32766,-32766,205,-32766,-32766,49,-32766,548,424,-32766,390,-32766,-266,264,-32766,-32766,-32766,-32766,-32766,409,-32766,343,-32766,265,312,-32766,470,513,-275,-32766,-32766,-32766,920,337,-32766,-32766,530,-32766,531,600,-32766,390,592,373,374,578,581,-32766,-32766,644,629,-32766,573,613,378,379,635,548,636,576,627,-32766,625,693,-32766,-32766,-32766,691,-32766,591,-32766,582,-32766,203,204,-32766,584,583,-32766,-32766,-32766,-32766,586,599,-32766,-32766,589,-32766,690,558,-32766,390,197,683,919,86,520,522,-32766,524,833,834,529,533,-32766,534,537,541,835,48,111,112,113,114,115,116,117,118,119,120,121,127,31,633,337,330,634,585,-32766,32,291,337,330,478,373,374,917,291,891,889,875,373,374,553,613,378,379,737,739,887,553,613,378,379,824,451,675,839,840,841,842,836,837,320,895,277,885,23,33,843,838,556,277,337,330,-32766,34,-32766,555,291,36,37,38,373,374,39,45,50,81,82,83,84,553,613,378,379,-32767,-32767,-32767,-32767,103,104,105,106,107,337,85,131,137,337,138,198,224,225,277,373,374,-332,230,373,374,24,337,231,573,613,378,379,573,613,378,379,373,374,235,248,249,250,337,251,0,573,613,378,379,276,329,331,373,374,-32766,337,574,490,792,337,609,573,613,378,379,373,374,25,300,373,374,319,337,795,573,613,378,379,573,613,378,379,373,374,516,355,359,445,482,796,507,573,613,378,379,508,548,337,890,775,791,337,604,803,808,806,698,373,374,888,807,373,374,-32766,-32766,-32766,573,613,378,379,573,613,378,379,873,832,804,872,851,-32766,809,-32766,-32766,-32766,-32766,805,20,26,29,298,480,515,770,778,827,457,0,900,455,774,0,0,0,874,870,886,823,915,852,869,488,0,391,793,0,338,0,0,0,340,0,273],r.Parser.prototype.yycheck=[2,3,4,5,6,8,9,10,70,11,104,105,106,107,108,109,8,9,10,8,9,24,60,26,27,28,29,30,31,32,33,34,24,7,26,27,28,29,30,41,42,7,123,124,7,47,70,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,144,0,75,68,69,70,25,72,70,74,7,76,77,78,79,7,81,142,83,70,85,72,73,88,8,9,10,92,93,94,95,7,97,98,95,100,7,7,103,104,24,142,26,27,105,106,111,112,113,136,7,7,139,114,115,116,117,122,123,132,125,126,127,128,129,130,131,8,8,9,10,136,137,138,139,140,141,25,143,141,145,142,147,148,24,72,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,144,48,72,44,45,46,30,48,144,64,72,8,9,10,140,70,8,9,10,74,60,25,77,78,79,60,81,24,83,26,85,60,24,88,26,27,28,92,93,94,64,140,97,98,70,100,70,72,103,104,74,145,7,77,78,79,111,81,7,83,30,85,140,140,88,8,9,10,92,93,94,133,134,97,98,145,100,140,7,103,104,24,139,96,141,140,141,111,101,75,75,30,70,75,64,70,60,110,121,12,70,141,25,143,74,96,141,77,78,79,101,81,141,83,140,85,140,141,88,110,145,144,92,93,94,64,7,97,98,142,100,70,141,103,104,74,145,141,77,78,79,111,81,7,83,30,85,132,25,88,132,142,12,92,93,94,120,60,97,98,12,100,148,141,103,104,141,12,96,12,140,141,111,101,8,9,10,141,25,64,90,91,110,65,66,70,41,42,43,74,65,66,77,78,79,12,81,25,83,25,85,140,141,88,123,124,25,92,93,94,64,25,97,98,142,100,70,120,103,104,74,25,25,77,78,79,111,81,30,83,48,85,140,141,88,140,141,30,92,93,94,140,141,97,98,60,100,60,60,103,104,61,72,75,70,140,141,111,67,70,87,99,70,70,64,70,72,102,89,70,70,71,70,70,74,70,70,77,78,79,70,81,70,83,70,85,140,141,88,70,144,70,92,93,94,64,70,97,98,72,100,70,72,103,104,74,72,72,77,78,79,111,81,75,83,75,85,89,86,88,79,101,118,92,93,94,87,95,97,98,87,100,87,87,103,104,118,105,106,95,140,141,111,95,115,64,114,115,116,117,135,70,115,120,132,74,120,140,77,78,79,119,81,139,83,140,85,120,-1,88,120,140,141,92,93,94,64,121,97,98,121,100,70,122,103,104,74,135,135,77,78,79,111,81,139,83,139,85,135,135,88,135,135,135,92,93,94,142,95,97,98,140,100,140,140,103,104,140,105,106,140,140,141,111,140,140,64,114,115,116,117,140,70,140,140,140,74,140,140,77,78,79,140,81,140,83,140,85,41,42,88,140,140,141,92,93,94,140,140,97,98,140,100,140,140,103,104,60,140,142,141,141,141,111,141,68,69,141,141,72,141,141,141,76,12,13,14,15,16,17,18,19,20,21,22,23,141,143,142,95,96,142,140,141,143,101,95,96,142,105,106,142,101,142,142,142,105,106,114,115,116,117,50,51,142,114,115,116,117,142,123,142,125,126,127,128,129,130,131,142,136,142,144,143,137,138,142,136,95,96,143,143,145,142,101,143,143,143,105,106,143,143,143,143,143,143,143,114,115,116,117,35,36,37,38,39,40,41,42,43,95,143,143,143,95,143,143,143,143,136,105,106,120,143,105,106,144,95,143,114,115,116,117,114,115,116,117,105,106,143,143,143,143,95,143,-1,114,115,116,117,143,143,143,105,106,143,95,142,80,146,95,142,114,115,116,117,105,106,144,144,105,106,144,95,142,114,115,116,117,114,115,116,117,105,106,82,144,144,144,144,142,84,114,115,116,117,144,70,95,72,144,144,95,142,144,146,144,142,105,106,146,144,105,106,8,9,10,114,115,116,117,114,115,116,117,144,144,144,144,144,24,104,26,27,28,29,144,144,144,144,144,144,144,144,144,144,144,-1,144,144,144,-1,-1,-1,146,146,146,146,146,146,146,146,-1,136,147,-1,139,-1,-1,-1,143,-1,145],r.Parser.prototype.yybase=[0,574,581,623,655,2,718,402,747,659,672,688,743,701,705,483,483,483,483,483,351,356,366,366,367,366,344,-2,-2,-2,200,200,231,231,231,231,231,231,231,231,200,231,451,482,532,316,370,115,146,285,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,44,474,429,476,481,487,488,739,740,741,734,733,416,736,539,541,342,542,543,552,557,559,536,567,737,755,569,735,738,123,123,123,123,123,123,123,123,123,122,11,336,336,336,336,336,336,336,336,336,336,336,336,336,336,336,227,227,173,577,577,577,577,577,577,577,577,577,577,577,79,178,846,8,-3,-3,-3,-3,642,706,706,706,706,157,179,242,431,431,360,431,525,368,767,767,767,767,767,767,767,767,767,767,767,767,350,375,315,315,652,652,-81,-81,-81,-81,251,185,188,184,-62,348,195,195,195,408,392,410,1,192,129,129,129,-24,-24,-24,-24,499,-24,-24,-24,113,108,108,12,161,349,526,271,398,529,438,130,206,265,427,76,414,427,288,295,76,166,44,262,422,141,491,372,494,413,71,92,93,267,135,100,34,415,745,746,742,-38,420,-10,135,147,744,498,107,26,493,144,377,363,369,332,363,400,377,588,377,376,377,360,37,582,376,377,374,376,388,363,364,412,369,377,441,443,390,106,332,377,390,377,400,64,590,591,323,592,589,593,649,608,362,500,399,407,620,625,636,365,354,614,524,425,359,355,423,570,578,357,406,414,394,352,403,531,433,403,653,434,385,417,411,444,310,318,501,425,668,757,380,637,684,403,609,387,87,325,638,382,403,639,403,696,503,615,403,697,384,435,425,352,352,352,700,66,699,583,702,707,704,748,721,749,584,750,358,583,722,751,682,215,613,422,436,389,447,221,257,752,403,403,506,499,403,395,685,397,426,753,392,391,647,683,403,418,754,221,723,587,724,450,568,507,648,509,327,725,353,497,610,454,622,455,461,404,510,373,732,612,247,361,664,463,405,692,641,464,465,511,343,437,335,409,396,665,293,467,468,472,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,0,0,0,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,0,0,0,0,0,0,0,0,0,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,767,767,767,767,767,767,767,767,767,767,767,123,123,123,123,123,123,123,123,0,129,129,129,129,-94,-94,-94,767,767,767,767,767,767,0,0,0,0,0,0,0,0,0,0,0,0,-94,-94,129,129,767,767,-24,-24,-24,-24,-24,108,108,108,-24,108,145,145,145,108,108,108,100,100,0,0,0,0,0,0,0,145,0,0,0,376,0,0,0,145,260,260,221,260,260,135,0,0,425,376,0,364,376,0,0,0,0,0,0,531,0,87,637,241,425,0,0,0,0,0,0,0,425,289,289,306,0,358,0,0,0,306,241,0,0,221],r.Parser.prototype.yydefault=[3,32767,32767,1,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,104,96,110,95,106,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,358,358,122,122,122,122,122,122,122,122,316,32767,32767,32767,32767,32767,32767,32767,32767,32767,173,173,173,32767,348,348,348,348,348,348,348,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,363,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,232,233,235,236,172,125,349,362,171,199,201,250,200,177,182,183,184,185,186,187,188,189,190,191,192,176,229,228,197,313,313,316,32767,32767,32767,32767,32767,32767,32767,32767,198,202,204,203,219,220,217,218,175,221,222,223,224,157,157,157,357,357,32767,357,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,158,32767,211,212,276,276,117,117,117,117,117,32767,32767,32767,32767,284,32767,32767,32767,32767,32767,286,32767,32767,206,207,205,32767,32767,32767,32767,32767,32767,32767,32767,32767,285,32767,32767,32767,32767,32767,32767,32767,32767,334,321,272,32767,32767,32767,265,32767,107,109,32767,32767,32767,32767,302,339,32767,32767,32767,17,32767,32767,32767,370,334,32767,32767,19,32767,32767,32767,32767,227,32767,338,332,32767,32767,32767,32767,32767,32767,63,32767,32767,32767,32767,32767,63,281,63,32767,63,32767,315,287,32767,63,74,32767,72,32767,32767,76,32767,63,93,93,254,315,54,63,254,63,32767,32767,32767,32767,4,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,267,32767,323,32767,337,336,324,32767,265,32767,215,194,266,32767,196,32767,32767,270,273,32767,32767,32767,134,32767,268,180,32767,32767,32767,32767,365,32767,32767,174,32767,32767,32767,130,32767,61,332,32767,32767,355,32767,32767,332,269,208,209,210,32767,121,32767,310,32767,32767,32767,32767,32767,32767,327,32767,333,32767,32767,32767,32767,111,32767,302,32767,32767,32767,75,32767,32767,178,126,32767,32767,364,32767,32767,32767,320,32767,32767,32767,32767,32767,62,32767,32767,77,32767,32767,32767,32767,332,32767,32767,32767,115,32767,169,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,332,32767,32767,32767,32767,32767,32767,32767,4,32767,151,32767,32767,32767,32767,32767,32767,32767,25,25,3,137,3,137,25,101,25,25,137,93,93,25,25,25,144,25,25,25,25,25,25,25,25],r.Parser.prototype.yygoto=[141,141,173,173,173,173,173,173,173,173,141,173,142,143,144,148,153,155,181,175,172,172,172,172,174,174,174,174,174,174,174,168,169,170,171,179,757,758,392,760,781,782,783,784,785,786,787,789,725,145,146,147,149,150,151,152,154,177,178,180,196,208,209,210,211,212,213,214,215,217,218,219,220,244,245,266,267,268,430,431,432,182,183,184,185,186,187,188,189,190,191,192,156,157,158,159,176,160,194,161,162,163,164,195,165,193,139,166,167,452,452,452,452,452,452,452,452,452,452,452,453,453,453,453,453,453,453,453,453,453,453,551,551,551,464,491,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,407,552,552,552,810,810,662,662,662,662,662,594,283,595,510,399,399,567,679,632,849,850,863,660,714,426,222,622,622,622,622,223,617,623,494,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,465,472,514,904,398,398,425,425,459,425,419,322,421,421,393,396,412,422,428,460,463,473,481,501,5,476,284,327,1,15,2,6,7,550,550,550,8,9,10,668,16,11,17,12,18,13,19,14,704,328,881,881,643,628,626,626,624,626,526,401,652,647,847,847,847,847,847,847,847,847,847,847,847,437,438,441,447,477,479,497,290,910,910,400,400,486,880,880,263,913,910,303,255,723,306,822,821,306,896,896,896,861,304,323,410,913,913,897,316,420,769,658,559,879,671,536,324,466,565,311,311,311,801,241,676,496,439,440,442,444,448,475,631,858,311,285,286,603,495,712,0,406,321,0,0,0,314,0,0,429,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,411],r.Parser.prototype.yygcheck=[15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,35,35,35,35,35,35,35,35,35,35,35,86,86,86,86,86,86,86,86,86,86,86,6,6,6,21,21,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,71,7,7,7,35,35,35,35,35,35,35,29,44,29,35,86,86,12,12,12,12,12,12,12,12,75,40,35,35,35,35,40,35,35,35,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,36,36,36,104,82,82,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,13,42,42,42,2,13,2,13,13,5,5,5,13,13,13,54,13,13,13,13,13,13,13,13,67,67,83,83,5,5,5,5,5,5,5,5,5,5,93,93,93,93,93,93,93,93,93,93,93,52,52,52,52,52,52,52,4,105,105,89,89,94,84,84,92,105,105,26,92,71,4,91,91,4,84,84,84,97,30,70,30,105,105,102,27,30,72,50,10,84,55,46,9,30,11,90,90,90,80,30,56,30,85,85,85,85,85,85,43,96,90,44,44,34,77,69,-1,4,90,-1,-1,-1,4,-1,-1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,71],r.Parser.prototype.yygbase=[0,0,-286,0,10,239,130,154,0,-10,25,-23,-29,-289,0,-30,0,0,0,0,0,83,0,0,0,0,245,84,-11,142,-28,0,0,0,-13,-88,-42,0,0,0,-344,0,-38,-12,-188,0,23,0,0,0,66,0,247,0,205,24,-18,0,0,0,0,0,0,0,0,0,0,13,0,-15,85,74,70,0,0,148,0,-14,0,0,-6,0,-35,11,47,278,-77,0,0,44,68,43,38,72,94,0,-16,109,0,0,0,0,87,0,170,34,0],r.Parser.prototype.yygdefault=[-32768,362,3,546,382,570,571,572,307,305,560,566,467,4,568,140,295,575,296,500,577,414,579,580,308,309,415,315,216,593,503,313,596,357,602,301,449,383,350,461,221,423,456,630,282,638,540,646,649,450,657,352,433,434,667,672,677,680,334,325,474,684,685,256,689,511,512,703,242,711,317,724,342,788,790,397,408,484,797,326,800,384,385,386,387,435,818,815,289,866,287,443,254,853,468,356,903,862,288,388,389,302,898,341,905,912,458],r.Parser.prototype.yylhs=[0,1,2,2,4,4,3,3,3,3,3,3,3,3,3,8,8,10,10,10,10,9,9,11,13,13,14,14,14,14,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,33,33,34,27,27,30,30,6,7,7,7,37,37,37,38,38,41,41,39,39,42,42,22,22,29,29,32,32,31,31,43,23,23,23,23,44,44,45,45,46,46,20,20,16,16,47,18,18,48,17,17,19,19,36,36,49,49,50,50,51,51,51,51,52,52,53,53,54,54,24,24,55,55,55,25,25,56,56,40,40,57,57,57,57,62,62,63,63,64,64,64,64,65,66,66,61,61,58,58,60,60,68,68,67,67,67,67,67,67,59,59,69,69,26,26,21,21,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,71,77,77,79,79,80,81,81,81,81,81,81,86,86,35,35,35,72,72,87,87,82,82,88,88,88,88,88,73,73,73,76,76,76,78,78,93,93,93,93,93,93,93,93,93,93,93,93,93,93,12,12,12,12,12,12,74,74,74,74,94,94,96,96,95,95,97,97,28,28,28,28,99,99,98,98,98,98,98,100,100,84,84,89,89,83,83,101,101,101,101,90,90,90,90,85,85,91,91,91,70,70,102,102,102,75,75,103,103,104,104,104,104,92,92,92,92,105,105,105,105,105,105,105,106,106,106],r.Parser.prototype.yylen=[1,1,2,0,1,3,1,1,1,1,3,5,4,3,3,3,1,1,3,2,4,3,1,3,2,0,1,1,1,1,3,7,10,5,7,9,5,2,3,2,3,2,3,3,3,3,1,2,5,7,8,10,5,1,5,3,3,2,1,2,8,1,3,0,1,9,7,6,5,1,2,2,0,2,0,2,0,2,1,3,1,4,1,4,1,4,1,3,3,3,4,4,5,0,2,4,3,1,1,1,4,0,2,5,0,2,6,0,2,0,3,1,0,1,3,3,5,0,1,1,1,1,0,1,3,1,2,3,1,1,2,4,3,1,1,3,2,0,3,3,8,3,1,3,0,2,4,5,4,4,3,1,1,1,3,1,1,0,1,1,2,1,1,1,1,1,1,1,3,1,3,3,1,0,1,1,6,3,4,4,1,2,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,5,4,4,4,2,2,4,2,2,2,2,2,2,2,2,2,2,2,1,4,3,3,2,9,10,3,0,4,1,3,2,4,6,8,4,4,4,1,1,1,2,3,1,1,1,1,1,1,0,3,3,4,4,0,2,3,0,1,1,0,3,1,1,1,1,1,1,1,1,1,1,1,3,2,1,1,3,2,2,4,3,1,3,3,3,0,2,0,1,3,1,3,1,1,1,1,1,6,4,3,6,4,4,4,1,3,1,2,1,1,4,1,3,6,4,4,4,4,1,4,0,1,1,3,1,3,1,1,4,0,0,2,3,1,3,1,4,2,2,2,1,2,1,4,3,3,3,6,3,1,1,1],r.Parser.prototype.yyn0=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn1=function(e){this.yyval=this.Stmt_Namespace_postprocess(this.yyastk[this.stackPos-0])},r.Parser.prototype.yyn2=function(e){Array.isArray(this.yyastk[this.stackPos-0])?this.yyval=this.yyastk[this.stackPos-1].concat(this.yyastk[this.stackPos-0]):(this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1])},r.Parser.prototype.yyn3=function(e){this.yyval=[]},r.Parser.prototype.yyn4=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn5=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn6=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn7=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn8=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn9=function(e){this.yyval=this.Node_Stmt_HaltCompiler(e)},r.Parser.prototype.yyn10=function(e){this.yyval=this.Node_Stmt_Namespace(this.Node_Name(this.yyastk[this.stackPos-1],e),null,e)},r.Parser.prototype.yyn11=function(e){this.yyval=this.Node_Stmt_Namespace(this.Node_Name(this.yyastk[this.stackPos-3],e),this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn12=function(e){this.yyval=this.Node_Stmt_Namespace(null,this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn13=function(e){this.yyval=this.Node_Stmt_Use(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn14=function(e){this.yyval=this.Node_Stmt_Const(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn15=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn16=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn17=function(e){this.yyval=this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[this.stackPos-0],e),null,e)},r.Parser.prototype.yyn18=function(e){this.yyval=this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[this.stackPos-2],e),this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn19=function(e){this.yyval=this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[this.stackPos-0],e),null,e)},r.Parser.prototype.yyn20=function(e){this.yyval=this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[this.stackPos-2],e),this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn21=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn22=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn23=function(e){this.yyval=this.Node_Const(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn24=function(e){Array.isArray(this.yyastk[this.stackPos-0])?this.yyval=this.yyastk[this.stackPos-1].concat(this.yyastk[this.stackPos-0]):(this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1])},r.Parser.prototype.yyn25=function(e){this.yyval=[]},r.Parser.prototype.yyn26=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn27=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn28=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn29=function(e){throw new Error("__halt_compiler() can only be used from the outermost scope")},r.Parser.prototype.yyn30=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn31=function(e){this.yyval=this.Node_Stmt_If(this.yyastk[this.stackPos-4],{stmts:Array.isArray(this.yyastk[this.stackPos-2])?this.yyastk[this.stackPos-2]:[this.yyastk[this.stackPos-2]],elseifs:this.yyastk[this.stackPos-1],Else:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn32=function(e){this.yyval=this.Node_Stmt_If(this.yyastk[this.stackPos-7],{stmts:this.yyastk[this.stackPos-4],elseifs:this.yyastk[this.stackPos-3],"else":this.yyastk[this.stackPos-2]},e)},r.Parser.prototype.yyn33=function(e){this.yyval=this.Node_Stmt_While(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn34=function(e){this.yyval=this.Node_Stmt_Do(this.yyastk[this.stackPos-2],Array.isArray(this.yyastk[this.stackPos-5])?this.yyastk[this.stackPos-5]:[this.yyastk[this.stackPos-5]],e)},r.Parser.prototype.yyn35=function(e){this.yyval=this.Node_Stmt_For({init:this.yyastk[this.stackPos-6],cond:this.yyastk[this.stackPos-4],loop:this.yyastk[this.stackPos-2],stmts:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn36=function(e){this.yyval=this.Node_Stmt_Switch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn37=function(e){this.yyval=this.Node_Stmt_Break(null,e)},r.Parser.prototype.yyn38=function(e){this.yyval=this.Node_Stmt_Break(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn39=function(e){this.yyval=this.Node_Stmt_Continue(null,e)},r.Parser.prototype.yyn40=function(e){this.yyval=this.Node_Stmt_Continue(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn41=function(e){this.yyval=this.Node_Stmt_Return(null,e)},r.Parser.prototype.yyn42=function(e){this.yyval=this.Node_Stmt_Return(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn43=function(e){this.yyval=this.Node_Stmt_Global(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn44=function(e){this.yyval=this.Node_Stmt_Static(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn45=function(e){this.yyval=this.Node_Stmt_Echo(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn46=function(e){this.yyval=this.Node_Stmt_InlineHTML(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn47=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn48=function(e){this.yyval=this.Node_Stmt_Unset(this.yyastk[this.stackPos-2],e)},r.Parser.prototype.yyn49=function(e){this.yyval=this.Node_Stmt_Foreach(this.yyastk[this.stackPos-4],this.yyastk[this.stackPos-2],{keyVar:null,byRef:!1,stmts:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn50=function(e){this.yyval=this.Node_Stmt_Foreach(this.yyastk[this.stackPos-5],this.yyastk[this.stackPos-2],{keyVar:null,byRef:!0,stmts:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn51=function(e){this.yyval=this.Node_Stmt_Foreach(this.yyastk[this.stackPos-7],this.yyastk[this.stackPos-2],{keyVar:this.yyastk[this.stackPos-5],byRef:this.yyastk[this.stackPos-3],stmts:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn52=function(e){this.yyval=this.Node_Stmt_Declare(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn53=function(e){this.yyval=[]},r.Parser.prototype.yyn54=function(e){this.yyval=this.Node_Stmt_TryCatch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn55=function(e){this.yyval=this.Node_Stmt_Throw(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn56=function(e){this.yyval=this.Node_Stmt_Goto(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn57=function(e){this.yyval=this.Node_Stmt_Label(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn58=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn59=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn60=function(e){this.yyval=this.Node_Stmt_Catch(this.yyastk[this.stackPos-5],this.yyastk[this.stackPos-4].substring(1),this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn61=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn62=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn63=function(e){this.yyval=!1},r.Parser.prototype.yyn64=function(e){this.yyval=!0},r.Parser.prototype.yyn65=function(e){this.yyval=this.Node_Stmt_Function(this.yyastk[this.stackPos-6],{byRef:this.yyastk[this.stackPos-7],params:this.yyastk[this.stackPos-4],stmts:this.yyastk[this.stackPos-1]},e)},r.Parser.prototype.yyn66=function(e){this.yyval=this.Node_Stmt_Class(this.yyastk[this.stackPos-5],{type:this.yyastk[this.stackPos-6],Extends:this.yyastk[this.stackPos-4],Implements:this.yyastk[this.stackPos-3],stmts:this.yyastk[this.stackPos-1]},e)},r.Parser.prototype.yyn67=function(e){this.yyval=this.Node_Stmt_Interface(this.yyastk[this.stackPos-4],{Extends:this.yyastk[this.stackPos-3],stmts:this.yyastk[this.stackPos-1]},e)},r.Parser.prototype.yyn68=function(e){this.yyval=this.Node_Stmt_Trait(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn69=function(e){this.yyval=0},r.Parser.prototype.yyn70=function(e){this.yyval=this.MODIFIER_ABSTRACT},r.Parser.prototype.yyn71=function(e){this.yyval=this.MODIFIER_FINAL},r.Parser.prototype.yyn72=function(e){this.yyval=null},r.Parser.prototype.yyn73=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn74=function(e){this.yyval=[]},r.Parser.prototype.yyn75=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn76=function(e){this.yyval=[]},r.Parser.prototype.yyn77=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn78=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn79=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn80=function(e){this.yyval=Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn81=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn82=function(e){this.yyval=Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn83=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn84=function(e){this.yyval=Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn85=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn86=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn87=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn88=function(e){this.yyval=this.Node_Stmt_DeclareDeclare(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn89=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn90=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn91=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn92=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn93=function(e){this.yyval=[]},r.Parser.prototype.yyn94=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn95=function(e){this.yyval=this.Node_Stmt_Case(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn96=function(e){this.yyval=this.Node_Stmt_Case(null,this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn97=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn98=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn99=function(e){this.yyval=Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn100=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn101=function(e){this.yyval=[]},r.Parser.prototype.yyn102=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn103=function(e){this.yyval=this.Node_Stmt_ElseIf(this.yyastk[this.stackPos-2],Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]],e)},r.Parser.prototype.yyn104=function(e){this.yyval=[]},r.Parser.prototype.yyn105=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn106=function(e){this.yyval=this.Node_Stmt_ElseIf(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn107=function(e){this.yyval=null},r.Parser.prototype.yyn108=function(e){this.yyval=this.Node_Stmt_Else(Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]],e)},r.Parser.prototype.yyn109=function(e){this.yyval=null},r.Parser.prototype.yyn110=function(e){this.yyval=this.Node_Stmt_Else(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn111=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn112=function(e){this.yyval=[]},r.Parser.prototype.yyn113=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn114=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn115=function(e){this.yyval=this.Node_Param(this.yyastk[this.stackPos-0].substring(1),null,this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn116=function(e){this.yyval=this.Node_Param(this.yyastk[this.stackPos-2].substring(1),this.yyastk[this.stackPos-0],this.yyastk[this.stackPos-4],this.yyastk[this.stackPos-3],e)},r.Parser.prototype.yyn117=function(e){this.yyval=null},r.Parser.prototype.yyn118=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn119=function(e){this.yyval="array"},r.Parser.prototype.yyn120=function(e){this.yyval="callable"},r.Parser.prototype.yyn121=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn122=function(e){this.yyval=[]},r.Parser.prototype.yyn123=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn124=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn125=function(e){this.yyval=this.Node_Arg(this.yyastk[this.stackPos-0],!1,e)},r.Parser.prototype.yyn126=function(e){this.yyval=this.Node_Arg(this.yyastk[this.stackPos-0],!0,e)},r.Parser.prototype.yyn127=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn128=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn129=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0].substring(1),e)},r.Parser.prototype.yyn130=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn131=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn132=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn133=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn134=function(e){this.yyval=this.Node_Stmt_StaticVar(this.yyastk[this.stackPos-0].substring(1),null,e)},r.Parser.prototype.yyn135=function(e){this.yyval=this.Node_Stmt_StaticVar(this.yyastk[this.stackPos-2].substring(1),this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn136=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn137=function(e){this.yyval=[]},r.Parser.prototype.yyn138=function(e){this.yyval=this.Node_Stmt_Property(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn139=function(e){this.yyval=this.Node_Stmt_ClassConst(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn140=function(e){this.yyval=this.Node_Stmt_ClassMethod(this.yyastk[this.stackPos-4],{type:this.yyastk[this.stackPos-7],byRef:this.yyastk[this.stackPos-5],params:this.yyastk[this.stackPos-2],stmts:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn141=function(e){this.yyval=this.Node_Stmt_TraitUse(this.yyastk[this.stackPos-1],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn142=function(e){this.yyval=[]},r.Parser.prototype.yyn143=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn144=function(e){this.yyval=[]},r.Parser.prototype.yyn145=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn146=function(e){this.yyval=this.Node_Stmt_TraitUseAdaptation_Precedence(this.yyastk[this.stackPos-3][0],this.yyastk[this.stackPos-3][1],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn147=function(e){this.yyval=this.Node_Stmt_TraitUseAdaptation_Alias(this.yyastk[this.stackPos-4][0],this.yyastk[this.stackPos-4][1],this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn148=function(e){this.yyval=this.Node_Stmt_TraitUseAdaptation_Alias(this.yyastk[this.stackPos-3][0],this.yyastk[this.stackPos-3][1],this.yyastk[this.stackPos-1],null,e)},r.Parser.prototype.yyn149=function(e){this.yyval=this.Node_Stmt_TraitUseAdaptation_Alias(this.yyastk[this.stackPos-3][0],this.yyastk[this.stackPos-3][1],null,this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn150=function(e){this.yyval=array(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0])},r.Parser.prototype.yyn151=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn152=function(e){this.yyval=array(null,this.yyastk[this.stackPos-0])},r.Parser.prototype.yyn153=function(e){this.yyval=null},r.Parser.prototype.yyn154=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn155=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn156=function(e){this.yyval=this.MODIFIER_PUBLIC},r.Parser.prototype.yyn157=function(e){this.yyval=this.MODIFIER_PUBLIC},r.Parser.prototype.yyn158=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn159=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn160=function(e){this.Stmt_Class_verifyModifier(this.yyastk[this.stackPos-1],this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]|this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn161=function(e){this.yyval=this.MODIFIER_PUBLIC},r.Parser.prototype.yyn162=function(e){this.yyval=this.MODIFIER_PROTECTED},r.Parser.prototype.yyn163=function(e){this.yyval=this.MODIFIER_PRIVATE},r.Parser.prototype.yyn164=function(e){this.yyval=this.MODIFIER_STATIC},r.Parser.prototype.yyn165=function(e){this.yyval=this.MODIFIER_ABSTRACT},r.Parser.prototype.yyn166=function(e){this.yyval=this.MODIFIER_FINAL},r.Parser.prototype.yyn167=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn168=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn169=function(e){this.yyval=this.Node_Stmt_PropertyProperty(this.yyastk[this.stackPos-0].substring(1),null,e)},r.Parser.prototype.yyn170=function(e){this.yyval=this.Node_Stmt_PropertyProperty(this.yyastk[this.stackPos-2].substring(1),this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn171=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn172=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn173=function(e){this.yyval=[]},r.Parser.prototype.yyn174=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn175=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn176=function(e){this.yyval=this.Node_Expr_AssignList(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn177=function(e){this.yyval=this.Node_Expr_Assign(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn178=function(e){this.yyval=this.Node_Expr_AssignRef(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn179=function(e){this.yyval=this.Node_Expr_AssignRef(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn180=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn181=function(e){this.yyval=this.Node_Expr_Clone(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn182=function(e){this.yyval=this.Node_Expr_AssignPlus(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn183=function(e){this.yyval=this.Node_Expr_AssignMinus(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn184=function(e){this.yyval=this.Node_Expr_AssignMul(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn185=function(e){this.yyval=this.Node_Expr_AssignDiv(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn186=function(e){this.yyval=this.Node_Expr_AssignConcat(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn187=function(e){this.yyval=this.Node_Expr_AssignMod(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn188=function(e){this.yyval=this.Node_Expr_AssignBitwiseAnd(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn189=function(e){this.yyval=this.Node_Expr_AssignBitwiseOr(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn190=function(e){this.yyval=this.Node_Expr_AssignBitwiseXor(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn191=function(e){this.yyval=this.Node_Expr_AssignShiftLeft(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn192=function(e){this.yyval=this.Node_Expr_AssignShiftRight(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn193=function(e){this.yyval=this.Node_Expr_PostInc(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn194=function(e){this.yyval=this.Node_Expr_PreInc(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn195=function(e){this.yyval=this.Node_Expr_PostDec(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn196=function(e){this.yyval=this.Node_Expr_PreDec(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn197=function(e){this.yyval=this.Node_Expr_BooleanOr(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn198=function(e){this.yyval=this.Node_Expr_BooleanAnd(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn199=function(e){this.yyval=this.Node_Expr_LogicalOr(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn200=function(e){this.yyval=this.Node_Expr_LogicalAnd(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn201=function(e){this.yyval=this.Node_Expr_LogicalXor(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn202=function(e){this.yyval=this.Node_Expr_BitwiseOr(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn203=function(e){this.yyval=this.Node_Expr_BitwiseAnd(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn204=function(e){this.yyval=this.Node_Expr_BitwiseXor(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn205=function(e){this.yyval=this.Node_Expr_Concat(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn206=function(e){this.yyval=this.Node_Expr_Plus(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn207=function(e){this.yyval=this.Node_Expr_Minus(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn208=function(e){this.yyval=this.Node_Expr_Mul(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn209=function(e){this.yyval=this.Node_Expr_Div(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn210=function(e){this.yyval=this.Node_Expr_Mod(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn211=function(e){this.yyval=this.Node_Expr_ShiftLeft(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn212=function(e){this.yyval=this.Node_Expr_ShiftRight(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn213=function(e){this.yyval=this.Node_Expr_UnaryPlus(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn214=function(e){this.yyval=this.Node_Expr_UnaryMinus(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn215=function(e){this.yyval=this.Node_Expr_BooleanNot(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn216=function(e){this.yyval=this.Node_Expr_BitwiseNot(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn217=function(e){this.yyval=this.Node_Expr_Identical(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn218=function(e){this.yyval=this.Node_Expr_NotIdentical(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn219=function(e){this.yyval=this.Node_Expr_Equal(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn220=function(e){this.yyval=this.Node_Expr_NotEqual(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn221=function(e){this.yyval=this.Node_Expr_Smaller(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn222=function(e){this.yyval=this.Node_Expr_SmallerOrEqual(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn223=function(e){this.yyval=this.Node_Expr_Greater(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn224=function(e){this.yyval=this.Node_Expr_GreaterOrEqual(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn225=function(e){this.yyval=this.Node_Expr_Instanceof(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn226=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn227=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn228=function(e){this.yyval=this.Node_Expr_Ternary(this.yyastk[this.stackPos-4],this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn229=function(e){this.yyval=this.Node_Expr_Ternary(this.yyastk[this.stackPos-3],null,this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn230=function(e){this.yyval=this.Node_Expr_Isset(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn231=function(e){this.yyval=this.Node_Expr_Empty(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn232=function(e){this.yyval=this.Node_Expr_Include(this.yyastk[this.stackPos-0],"Node_Expr_Include",e)},r.Parser.prototype.yyn233=function(e){this.yyval=this.Node_Expr_Include(this.yyastk[this.stackPos-0],"Node_Expr_IncludeOnce",e)},r.Parser.prototype.yyn234=function(e){this.yyval=this.Node_Expr_Eval(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn235=function(e){this.yyval=this.Node_Expr_Include(this.yyastk[this.stackPos-0],"Node_Expr_Require",e)},r.Parser.prototype.yyn236=function(e){this.yyval=this.Node_Expr_Include(this.yyastk[this.stackPos-0],"Node_Expr_RequireOnce",e)},r.Parser.prototype.yyn237=function(e){this.yyval=this.Node_Expr_Cast_Int(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn238=function(e){this.yyval=this.Node_Expr_Cast_Double(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn239=function(e){this.yyval=this.Node_Expr_Cast_String(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn240=function(e){this.yyval=this.Node_Expr_Cast_Array(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn241=function(e){this.yyval=this.Node_Expr_Cast_Object(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn242=function(e){this.yyval=this.Node_Expr_Cast_Bool(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn243=function(e){this.yyval=this.Node_Expr_Cast_Unset(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn244=function(e){this.yyval=this.Node_Expr_Exit(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn245=function(e){this.yyval=this.Node_Expr_ErrorSuppress(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn246=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn247=function(e){this.yyval=this.Node_Expr_Array(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn248=function(e){this.yyval=this.Node_Expr_Array(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn249=function(e){this.yyval=this.Node_Expr_ShellExec(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn250=function(e){this.yyval=this.Node_Expr_Print(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn251=function(e){this.yyval=this.Node_Expr_Closure({"static":!1,byRef:this.yyastk[this.stackPos-7],params:this.yyastk[this.stackPos-5],uses:this.yyastk[this.stackPos-3],stmts:this.yyastk[this.stackPos-1]},e)},r.Parser.prototype.yyn252=function(e){this.yyval=this.Node_Expr_Closure({"static":!0,byRef:this.yyastk[this.stackPos-7],params:this.yyastk[this.stackPos-5],uses:this.yyastk[this.stackPos-3],stmts:this.yyastk[this.stackPos-1]},e)},r.Parser.prototype.yyn253=function(e){this.yyval=this.Node_Expr_New(this.yyastk[this.stackPos-1],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn254=function(e){this.yyval=[]},r.Parser.prototype.yyn255=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn256=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn257=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn258=function(e){this.yyval=this.Node_Expr_ClosureUse(this.yyastk[this.stackPos-0].substring(1),this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn259=function(e){this.yyval=this.Node_Expr_FuncCall(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn260=function(e){this.yyval=this.Node_Expr_StaticCall(this.yyastk[this.stackPos-5],this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn261=function(e){this.yyval=this.Node_Expr_StaticCall(this.yyastk[this.stackPos-7],this.yyastk[this.stackPos-4],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn262=function(e){if(this.yyastk[this.stackPos-3].type==="Node_Expr_StaticPropertyFetch")this.yyval=this.Node_Expr_StaticCall(this.yyastk[this.stackPos-3].Class,this.Node_Expr_Variable(this.yyastk[this.stackPos-3].name,e),this.yyastk[this.stackPos-1],e);else{if(this.yyastk[this.stackPos-3].type!=="Node_Expr_ArrayDimFetch")throw new Exception;var t=this.yyastk[this.stackPos-3];while(t.variable.type==="Node_Expr_ArrayDimFetch")t=t.variable;this.yyval=this.Node_Expr_StaticCall(t.variable.Class,this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e),t.variable=this.Node_Expr_Variable(t.variable.name,e)}},r.Parser.prototype.yyn263=function(e){this.yyval=this.Node_Expr_FuncCall(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn264=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn265=function(e){this.yyval=this.Node_Name("static",e)},r.Parser.prototype.yyn266=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn267=function(e){this.yyval=this.Node_Name(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn268=function(e){this.yyval=this.Node_Name_FullyQualified(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn269=function(e){this.yyval=this.Node_Name_Relative(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn270=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn271=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn272=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn273=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn274=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn275=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn276=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn277=function(e){this.yyval=this.Node_Expr_PropertyFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn278=function(e){this.yyval=this.Node_Expr_PropertyFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn279=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn280=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn281=function(e){this.yyval=null},r.Parser.prototype.yyn282=function(e){this.yyval=null},r.Parser.prototype.yyn283=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn284=function(e){this.yyval=[]},r.Parser.prototype.yyn285=function(e){this.yyval=[this.Scalar_String_parseEscapeSequences(this.yyastk[this.stackPos-0],"`")]},r.Parser.prototype.yyn286=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn287=function(e){this.yyval=[]},r.Parser.prototype.yyn288=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn289=function(e){this.yyval=this.Node_Scalar_LNumber(this.Scalar_LNumber_parse(this.yyastk[this.stackPos-0]),e)},r.Parser.prototype.yyn290=function(e){this.yyval=this.Node_Scalar_DNumber(this.Scalar_DNumber_parse(this.yyastk[this.stackPos-0]),e)},r.Parser.prototype.yyn291=function(e){this.yyval=this.Scalar_String_create(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn292=function(e){this.yyval={type:"Node_Scalar_LineConst",attributes:e}},r.Parser.prototype.yyn293=function(e){this.yyval={type:"Node_Scalar_FileConst",attributes:e}},r.Parser.prototype.yyn294=function(e){this.yyval={type:"Node_Scalar_DirConst",attributes:e}},r.Parser.prototype.yyn295=function(e){this.yyval={type:"Node_Scalar_ClassConst",attributes:e}},r.Parser.prototype.yyn296=function(e){this.yyval={type:"Node_Scalar_TraitConst",attributes:e}},r.Parser.prototype.yyn297=function(e){this.yyval={type:"Node_Scalar_MethodConst",attributes:e}},r.Parser.prototype.yyn298=function(e){this.yyval={type:"Node_Scalar_FuncConst",attributes:e}},r.Parser.prototype.yyn299=function(e){this.yyval={type:"Node_Scalar_NSConst",attributes:e}},r.Parser.prototype.yyn300=function(e){this.yyval=this.Node_Scalar_String(this.Scalar_String_parseDocString(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-1]),e)},r.Parser.prototype.yyn301=function(e){this.yyval=this.Node_Scalar_String("",e)},r.Parser.prototype.yyn302=function(e){this.yyval=this.Node_Expr_ConstFetch(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn303=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn304=function(e){this.yyval=this.Node_Expr_ClassConstFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn305=function(e){this.yyval=this.Node_Expr_UnaryPlus(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn306=function(e){this.yyval=this.Node_Expr_UnaryMinus(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn307=function(e){this.yyval=this.Node_Expr_Array(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn308=function(e){this.yyval=this.Node_Expr_Array(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn309=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn310=function(e){this.yyval=this.Node_Expr_ClassConstFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn311=function(e){this.yyval=this.Node_Scalar_Encapsed(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn312=function(e){this.yyval=this.Node_Scalar_Encapsed(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn313=function(e){this.yyval=[]},r.Parser.prototype.yyn314=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn315=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn316=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn317=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn318=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn319=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],this.yyastk[this.stackPos-2],!1,e)},r.Parser.prototype.yyn320=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],null,!1,e)},r.Parser.prototype.yyn321=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn322=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn323=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn324=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn325=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-4],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn326=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn327=function(e){this.yyval=this.Node_Expr_PropertyFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn328=function(e){this.yyval=this.Node_Expr_MethodCall(this.yyastk[this.stackPos-5],this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn329=function(e){this.yyval=this.Node_Expr_FuncCall(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn330=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn331=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn332=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn333=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn334=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn335=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn336=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn337=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn338=function(e){this.yyval=this.Node_Expr_StaticPropertyFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn339=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn340=function(e){this.yyval=this.Node_Expr_StaticPropertyFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0].substring(1),e)},r.Parser.prototype.yyn341=function(e){this.yyval=this.Node_Expr_StaticPropertyFetch(this.yyastk[this.stackPos-5],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn342=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn343=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn344=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn345=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn346=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0].substring(1),e)},r.Parser.prototype.yyn347=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn348=function(e){this.yyval=null},r.Parser.prototype.yyn349=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn350=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn351=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn352=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn353=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn354=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn355=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn356=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn357=function(e){this.yyval=null},r.Parser.prototype.yyn358=function(e){this.yyval=[]},r.Parser.prototype.yyn359=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn360=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn361=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn362=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],this.yyastk[this.stackPos-2],!1,e)},r.Parser.prototype.yyn363=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],null,!1,e)},r.Parser.prototype.yyn364=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],this.yyastk[this.stackPos-3],!0,e)},r.Parser.prototype.yyn365=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],null,!0,e)},r.Parser.prototype.yyn366=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn367=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn368=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn369=function(e){this.yyval=[this.yyastk[this.stackPos-1],this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn370=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0].substring(1),e)},r.Parser.prototype.yyn371=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.Node_Expr_Variable(this.yyastk[this.stackPos-3].substring(1),e),this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn372=function(e){this.yyval=this.Node_Expr_PropertyFetch(this.Node_Expr_Variable(this.yyastk[this.stackPos-2].substring(1),e),this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn373=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn374=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn375=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.Node_Expr_Variable(this.yyastk[this.stackPos-4],e),this.yyastk[this.stackPos-2],e)},r.Parser.prototype.yyn376=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn377=function(e){this.yyval=this.Node_Scalar_String(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn378=function(e){this.yyval=this.Node_Scalar_String(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn379=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0].substring(1),e)},r.Parser.prototype.Stmt_Namespace_postprocess=function(e){return e},r.Parser.prototype.Node_Stmt_Echo=function(){return{type:"Node_Stmt_Echo",exprs:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_If=function(){return{type:"Node_Stmt_If",cond:arguments[0],stmts:arguments[1].stmts,elseifs:arguments[1].elseifs,Else:arguments[1].Else||null,attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_For=function(){return{type:"Node_Stmt_For",init:arguments[0].init,cond:arguments[0].cond,loop:arguments[0].loop,stmts:arguments[0].stmts,attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Function=function(){return{type:"Node_Stmt_Function",name:arguments[0],byRef:arguments[1].byRef,params:arguments[1].params,stmts:arguments[1].stmts,attributes:arguments[2]}},r.Parser.prototype.Stmt_Class_verifyModifier=function(){},r.Parser.prototype.Node_Stmt_Namespace=function(){return{type:"Node_Stmt_Namespace",name:arguments[0],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Use=function(){return{type:"Node_Stmt_Use",name:arguments[0],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_UseUse=function(){return{type:"Node_Stmt_UseUse",name:arguments[0],as:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_TraitUseAdaptation_Precedence=function(){return{type:"Node_Stmt_TraitUseAdaptation_Precedence",name:arguments[0],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_TraitUseAdaptation_Alias=function(){return{type:"Node_Stmt_TraitUseAdaptation_Alias",name:arguments[0],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Trait=function(){return{type:"Node_Stmt_Trait",name:arguments[0],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_TraitUse=function(){return{type:"Node_Stmt_TraitUse",name:arguments[0],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Class=function(){return{type:"Node_Stmt_Class",name:arguments[0],Type:arguments[1].type,Extends:arguments[1].Extends,Implements:arguments[1].Implements,stmts:arguments[1].stmts,attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_ClassMethod=function(){return{type:"Node_Stmt_ClassMethod",name:arguments[0],Type:arguments[1].type,byRef:arguments[1].byRef,params:arguments[1].params,stmts:arguments[1].stmts,attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_ClassConst=function(){return{type:"Node_Stmt_ClassConst",consts:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Interface=function(){return{type:"Node_Stmt_Interface",name:arguments[0],Extends:arguments[1].Extends,stmts:arguments[1].stmts,attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Throw=function(){return{type:"Node_Stmt_Throw",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Catch=function(){return{type:"Node_Stmt_Catch",Type:arguments[0],variable:arguments[1],stmts:arguments[2],attributes:arguments[3]}},r.Parser.prototype.Node_Stmt_TryCatch=function(){return{type:"Node_Stmt_TryCatch",stmts:arguments[0],catches:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Foreach=function(){return{type:"Node_Stmt_Foreach",expr:arguments[0],valueVar:arguments[1],keyVar:arguments[2].keyVar,byRef:arguments[2].byRef,stmts:arguments[2].stmts,attributes:arguments[3]}},r.Parser.prototype.Node_Stmt_While=function(){return{type:"Node_Stmt_While",cond:arguments[0],stmts:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Do=function(){return{type:"Node_Stmt_Do",cond:arguments[0],stmts:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Break=function(){return{type:"Node_Stmt_Break",num:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Continue=function(){return{type:"Node_Stmt_Continue",num:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Return=function(){return{type:"Node_Stmt_Return",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Case=function(){return{type:"Node_Stmt_Case",cond:arguments[0],stmts:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Switch=function(){return{type:"Node_Stmt_Switch",cond:arguments[0],cases:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Else=function(){return{type:"Node_Stmt_Else",stmts:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_ElseIf=function(){return{type:"Node_Stmt_ElseIf",cond:arguments[0],stmts:arguments[1],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_InlineHTML=function(){return{type:"Node_Stmt_InlineHTML",value:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_StaticVar=function(){return{type:"Node_Stmt_StaticVar",name:arguments[0],def:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Static=function(){return{type:"Node_Stmt_Static",vars:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Global=function(){return{type:"Node_Stmt_Global",vars:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_PropertyProperty=function(){return{type:"Node_Stmt_PropertyProperty",name:arguments[0],def:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Property=function(){return{type:"Node_Stmt_Property",Type:arguments[0],props:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Unset=function(){return{type:"Node_Stmt_Unset",variables:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Variable=function(e){return{type:"Node_Expr_Variable",name:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_FuncCall=function(){return{type:"Node_Expr_FuncCall",func:arguments[0],args:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_MethodCall=function(){return{type:"Node_Expr_MethodCall",variable:arguments[0],name:arguments[1],args:arguments[2],attributes:arguments[3]}},r.Parser.prototype.Node_Expr_StaticCall=function(){return{type:"Node_Expr_StaticCall",Class:arguments[0],func:arguments[1],args:arguments[2],attributes:arguments[3]}},r.Parser.prototype.Node_Expr_Ternary=function(){return{type:"Node_Expr_Ternary",cond:arguments[0],If:arguments[1],Else:arguments[2],attributes:arguments[3]}},r.Parser.prototype.Node_Expr_AssignList=function(){return{type:"Node_Expr_AssignList",assignList:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Assign=function(){return{type:"Node_Expr_Assign",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignConcat=function(){return{type:"Node_Expr_AssignConcat",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignMinus=function(){return{type:"Node_Expr_AssignMinus",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignPlus=function(){return{type:"Node_Expr_AssignPlus",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignDiv=function(){return{type:"Node_Expr_AssignDiv",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignRef=function(){return{type:"Node_Expr_AssignRef",variable:arguments[0],refVar:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignMul=function(){return{type:"Node_Expr_AssignMul",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignMod=function(){return{type:"Node_Expr_AssignMod",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Plus=function(){return{type:"Node_Expr_Plus",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Minus=function(){return{type:"Node_Expr_Minus",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Mul=function(){return{type:"Node_Expr_Mul",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Div=function(){return{type:"Node_Expr_Div",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Mod=function(){return{type:"Node_Expr_Mod",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Greater=function(){return{type:"Node_Expr_Greater",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Equal=function(){return{type:"Node_Expr_Equal",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_NotEqual=function(){return{type:"Node_Expr_NotEqual",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Identical=function(){return{type:"Node_Expr_Identical",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_NotIdentical=function(){return{type:"Node_Expr_NotIdentical",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_GreaterOrEqual=function(){return{type:"Node_Expr_GreaterOrEqual",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_SmallerOrEqual=function(){return{type:"Node_Expr_SmallerOrEqual",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Concat=function(){return{type:"Node_Expr_Concat",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Smaller=function(){return{type:"Node_Expr_Smaller",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_PostInc=function(){return{type:"Node_Expr_PostInc",variable:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_PostDec=function(){return{type:"Node_Expr_PostDec",variable:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_PreInc=function(){return{type:"Node_Expr_PreInc",variable:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_PreDec=function(){return{type:"Node_Expr_PreDec",variable:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Include=function(){return{expr:arguments[0],type:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_ArrayDimFetch=function(){return{type:"Node_Expr_ArrayDimFetch",variable:arguments[0],dim:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_StaticPropertyFetch=function(){return{type:"Node_Expr_StaticPropertyFetch",Class:arguments[0],name:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_ClassConstFetch=function(){return{type:"Node_Expr_ClassConstFetch",Class:arguments[0],name:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_StaticPropertyFetch=function(){return{type:"Node_Expr_StaticPropertyFetch",Class:arguments[0],name:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_ConstFetch=function(){return{type:"Node_Expr_ConstFetch",name:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_ArrayItem=function(){return{type:"Node_Expr_ArrayItem",value:arguments[0],key:arguments[1],byRef:arguments[2],attributes:arguments[3]}},r.Parser.prototype.Node_Expr_Array=function(){return{type:"Node_Expr_Array",items:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_PropertyFetch=function(){return{type:"Node_Expr_PropertyFetch",variable:arguments[0],name:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_New=function(){return{type:"Node_Expr_New",Class:arguments[0],args:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Print=function(){return{type:"Node_Expr_Print",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Exit=function(){return{type:"Node_Expr_Exit",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_Bool=function(){return{type:"Node_Expr_Cast_Bool",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_Int=function(){return{type:"Node_Expr_Cast_Int",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_String=function(){return{type:"Node_Expr_Cast_String",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_Double=function(){return{type:"Node_Expr_Cast_Double",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_Array=function(){return{type:"Node_Expr_Cast_Array",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_Object=function(){return{type:"Node_Expr_Cast_Object",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_ErrorSuppress=function(){return{type:"Node_Expr_ErrorSuppress",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Isset=function(){return{type:"Node_Expr_Isset",variables:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_UnaryMinus=function(){return{type:"Node_Expr_UnaryMinus",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_UnaryPlus=function(){return{type:"Node_Expr_UnaryPlus",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Empty=function(){return{type:"Node_Expr_Empty",variable:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_BooleanOr=function(){return{type:"Node_Expr_BooleanOr",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_LogicalOr=function(){return{type:"Node_Expr_LogicalOr",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_LogicalAnd=function(){return{type:"Node_Expr_LogicalAnd",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_LogicalXor=function(){return{type:"Node_Expr_LogicalXor",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_BitwiseAnd=function(){return{type:"Node_Expr_BitwiseAnd",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_BitwiseOr=function(){return{type:"Node_Expr_BitwiseOr",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_BitwiseXor=function(){return{type:"Node_Expr_BitwiseXor",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_BitwiseNot=function(){return{type:"Node_Expr_BitwiseNot",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_BooleanNot=function(){return{type:"Node_Expr_BooleanNot",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_BooleanAnd=function(){return{type:"Node_Expr_BooleanAnd",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Instanceof=function(){return{type:"Node_Expr_Instanceof",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Clone=function(){return{type:"Node_Expr_Clone",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Scalar_LNumber_parse=function(e){return e},r.Parser.prototype.Scalar_DNumber_parse=function(e){return e},r.Parser.prototype.Scalar_String_parseDocString=function(){return'"'+arguments[1].replace(/([^"\\]*(?:\\.[^"\\]*)*)"/g,'$1\\"')+'"'},r.Parser.prototype.Node_Scalar_String=function(){return{type:"Node_Scalar_String",value:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Scalar_String_create=function(){return{type:"Node_Scalar_String",value:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Scalar_LNumber=function(){return{type:"Node_Scalar_LNumber",value:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Scalar_DNumber=function(){return{type:"Node_Scalar_DNumber",value:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Scalar_Encapsed=function(){return{type:"Node_Scalar_Encapsed",parts:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Name=function(){return{type:"Node_Name",parts:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Name_FullyQualified=function(){return{type:"Node_Name_FullyQualified",parts:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Name_Relative=function(){return{type:"Node_Name_Relative",parts:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Param=function(){return{type:"Node_Param",name:arguments[0],def:arguments[1],Type:arguments[2],byRef:arguments[3],attributes:arguments[4]}},r.Parser.prototype.Node_Arg=function(){return{type:"Node_Name",value:arguments[0],byRef:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Const=function(){return{type:"Node_Const",name:arguments[0],value:arguments[1],attributes:arguments[2]}},t.PHP=r}),ace.define("ace/mode/php_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/php/php"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../worker/mirror").Mirror,s=e("./php/php").PHP,o=t.PhpWorker=function(e){i.call(this,e),this.setTimeout(500)};r.inherits(o,i),function(){this.setOptions=function(e){this.inlinePhp=e&&e.inline},this.onUpdate=function(){var e=this.doc.getValue(),t=[];this.inlinePhp&&(e="<?"+e+"?>");var n=s.Lexer(e,{short_open_tag:1});try{new s.Parser(n)}catch(r){t.push({row:r.line-1,column:null,text:r.message.charAt(0).toUpperCase()+r.message.substring(1),type:"error"})}this.sender.emit("annotate",t)}}.call(o.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _=" \n \f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}}) \ No newline at end of file
diff --git a/library/ace/worker-xml.js b/library/ace/worker-xml.js
new file mode 100644
index 000000000..f6635f792
--- /dev/null
+++ b/library/ace/worker-xml.js
@@ -0,0 +1 @@
+"no use strict";(function(e){function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")return i+r;if(i)return i.location.replace(/\/*$/,"/")+(r||i.main||i.name);if(i===!1)return"";var s=n.lastIndexOf("/");if(s===-1)break;r=n.substr(s)+r,n=n.slice(0,s)}return e}if(typeof e.window!="undefined"&&e.document)return;if(e.require&&e.define)return;e.console||(e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console),e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,data:i.data,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(r,i){i||(i=r,r=null);if(!i.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");i=e.normalizeModule(r,i);var s=e.require.modules[i];if(s)return s.initialized||(s.initialized=!0,s.exports=s.factory().exports),s.exports;if(!e.require.tlns)return console.log("unable to load "+i);var o=t(i,e.require.tlns);return o.slice(-3)!=".js"&&(o+=".js"),e.require.id=i,e.require.modules[i]={},importScripts(o),e.require(r,i)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},require.tlns={},e.initBaseUrls=function(t){for(var n in t)require.tlns[n]=t[n]},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var n=e.main=null,r=e.sender=null;e.onmessage=function(t){var i=t.data;if(i.event&&r)r._signal(i.event,i.data);else if(i.command)if(n[i.command])n[i.command].apply(n,i.args);else{if(!e[i.command])throw new Error("Unknown command:"+i.command);e[i.command].apply(e,i.args)}else if(i.init){e.initBaseUrls(i.tlns),require("ace/lib/es5-shim"),r=e.sender=e.initSender();var s=require(i.module)[i.classname];n=e.main=new s(r)}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function s(e){if(typeof e!="object"||!e)return e;var t;if(Array.isArray(e)){t=[];for(var n=0;n<e.length;n++)t[n]=s(e[n]);return t}var r=e.constructor;if(r===RegExp)return e;t=r();for(var n in e)t[n]=s(e[n]);return t},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,n){"use strict";function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: "+t}function i(e,t){return t.row>=0&&t.row<e.length&&t.column>=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.column<t.column;return e.row<t.row||e.row==t.row&&r}function t(t,n,r){var i=t.action=="insert",s=(i?1:-1)*(t.end.row-t.start.row),o=(i?1:-1)*(t.end.column-t.start.column),u=t.start,a=i?u:t.end;return e(n,u,r)?{row:n.row,column:n.column}:e(a,n,!r)?{row:n.row+s,column:n.column+(n.row==a.row?o:0)}:{row:u.row,column:u.column}}r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){if(e.start.row==e.end.row&&e.start.row!=this.row)return;if(e.start.row>this.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e<this.getLength()?(t=t.concat([""]),n=0):(t=[""].concat(t),e--,n=this.$lines[e].length),this.insertMergedLines({row:e,column:n},t)},this.insertMergedLines=function(e,t){var n=this.clippedPos(e.row,e.column),r={row:n.row+t.length-1,column:(t.length==1?n.column:0)+t[t.length-1].length};return this.applyDelta({start:n,end:r,action:"insert",lines:t}),this.clonePos(r)},this.remove=function(e){var t=this.clippedPos(e.start.row,e.start.column),n=this.clippedPos(e.end.row,e.end.column);return this.applyDelta({start:t,end:n,action:"remove",lines:this.getLinesForRange({start:t,end:n})}),this.clonePos(t)},this.removeInLine=function(e,t,n){var r=this.clippedPos(e,t),i=this.clippedPos(e,n);return this.applyDelta({start:r,end:i,action:"remove",lines:this.getLinesForRange({start:r,end:i})},!0),this.clonePos(r)},this.removeFullLines=function(e,t){e=Math.min(Math.max(0,e),this.getLength()-1),t=Math.min(Math.max(0,t),this.getLength()-1);var n=t==this.getLength()-1&&e>0,r=t<this.getLength()-1,i=n?e-1:e,s=n?this.getLine(i).length:0,u=r?t+1:t,a=r?0:this.getLine(u).length,f=new o(i,s,u,a),l=this.$lines.slice(e,t+1);return this.applyDelta({start:f.start,end:f.end,action:"remove",lines:this.getLinesForRange(f)}),l},this.removeNewLine=function(e){e<this.getLength()-1&&e>=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++)this.applyDelta(e[t])},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(a.prototype),t.Document=a}),ace.define("ace/worker/mirror",["require","exports","module","ace/range","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../document").Document,s=e("../lib/lang"),o=t.Mirror=function(e){this.sender=e;var t=this.doc=new i(""),n=this.deferredUpdate=s.delayedCall(this.onUpdate.bind(this)),r=this;e.on("change",function(e){var i=e.data;if(i[0].start)t.applyDeltas(i);else for(var s=0;s<i.length;s+=2){if(Array.isArray(i[s+1]))var o={action:"insert",start:i[s],lines:i[s+1]};else var o={action:"remove",start:i[s],end:i[s+1]};t.applyDelta(o,!0)}if(r.$timeout)return n.schedule(r.$timeout);r.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(o.prototype)}),ace.define("ace/mode/xml/sax",["require","exports","module"],function(e,t,n){function d(){}function v(e,t,n,r,i){function s(e){if(e>65535){e-=65536;var t=55296+(e>>10),n=56320+(e&1023);return String.fromCharCode(t,n)}return String.fromCharCode(e)}function o(e){var t=e.slice(1,-1);return t in n?n[t]:t.charAt(0)==="#"?s(parseInt(t.substr(1).replace("x","0x"))):(i.error("entity not found:"+e),e)}function u(t){var n=e.substring(v,t).replace(/&#?\w+;/g,o);h&&a(v),r.characters(n,0,t-v),v=t}function a(t,n){while(t>=l&&(n=c.exec(e)))f=n.index,l=f+n[0].length,h.lineNumber++;h.columnNumber=t-f+1}var f=0,l=0,c=/.+(?:\r\n?|\n)|.*$/g,h=r.locator,p=[{currentNSMap:t}],d={},v=0;for(;;){var E=e.indexOf("<",v);if(E<0){if(!e.substr(v).match(/^\s*$/)){var N=r.document,C=N.createTextNode(e.substr(v));N.appendChild(C),r.currentElement=C}return}E>v&&u(E);switch(e.charAt(E+1)){case"/":var k=e.indexOf(">",E+3),L=e.substring(E+2,k),A;if(!(p.length>1)){i.fatalError("end tag name not found for: "+L);break}A=p.pop();var O=A.localNSMap;A.tagName!=L&&i.fatalError("end tag name: "+L+" does not match the current start tagName: "+A.tagName),r.endElement(A.uri,A.localName,L);if(O)for(var M in O)r.endPrefixMapping(M);k++;break;case"?":h&&a(E),k=x(e,E,r);break;case"!":h&&a(E),k=S(e,E,r,i);break;default:try{h&&a(E);var _=new T,k=g(e,E,_,o,i),D=_.length;if(D&&h){var P=m(h,{});for(var E=0;E<D;E++){var H=_[E];a(H.offset),H.offset=m(h,{})}m(P,h)}!_.closed&&w(e,k,_.tagName,d)&&(_.closed=!0,n.nbsp||i.warning("unclosed xml attribute")),y(_,r,p),_.uri==="http://www.w3.org/1999/xhtml"&&!_.closed?k=b(e,k,_.tagName,o,r):k++}catch(B){i.error("element parse error: "+B),k=-1}}k<0?u(E+1):v=k}}function m(e,t){return t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber,t}function g(e,t,n,r,i){var s,d,v=++t,m=o;for(;;){var g=e.charAt(v);switch(g){case"=":if(m===u)s=e.slice(t,v),m=f;else{if(m!==a)throw new Error("attribute equal must after attrName");m=f}break;case"'":case'"':if(m===f){t=v+1,v=e.indexOf(g,t);if(!(v>0))throw new Error("attribute value no end '"+g+"' match");d=e.slice(t,v).replace(/&#?\w+;/g,r),n.add(s,d,t-1),m=c}else{if(m!=l)throw new Error('attribute value must after "="');d=e.slice(t,v).replace(/&#?\w+;/g,r),n.add(s,d,t),i.warning('attribute "'+s+'" missed start quot('+g+")!!"),t=v+1,m=c}break;case"/":switch(m){case o:n.setTagName(e.slice(t,v));case c:case h:case p:m=p,n.closed=!0;case l:case u:case a:break;default:throw new Error("attribute invalid close char('/')")}break;case"":i.error("unexpected end of input");case">":switch(m){case o:n.setTagName(e.slice(t,v));case c:case h:case p:break;case l:case u:d=e.slice(t,v),d.slice(-1)==="/"&&(n.closed=!0,d=d.slice(0,-1));case a:m===a&&(d=s),m==l?(i.warning('attribute "'+d+'" missed quot(")!!'),n.add(s,d.replace(/&#?\w+;/g,r),t)):(i.warning('attribute "'+d+'" missed value!! "'+d+'" instead!!'),n.add(d,d,t));break;case f:throw new Error("attribute value missed!!")}return v;case"\u0080":g=" ";default:if(g<=" ")switch(m){case o:n.setTagName(e.slice(t,v)),m=h;break;case u:s=e.slice(t,v),m=a;break;case l:var d=e.slice(t,v).replace(/&#?\w+;/g,r);i.warning('attribute "'+d+'" missed quot(")!!'),n.add(s,d,t);case c:m=h}else switch(m){case a:i.warning('attribute "'+s+'" missed value!! "'+s+'" instead!!'),n.add(s,s,t),t=v,m=u;break;case c:i.warning('attribute space is required"'+s+'"!!');case h:m=u,t=v;break;case f:m=l,t=v;break;case p:throw new Error("elements closed character '/' and '>' must be connected to")}}v++}}function y(e,t,n){var r=e.tagName,i=null,s=n[n.length-1].currentNSMap,o=e.length;while(o--){var u=e[o],a=u.qName,f=u.value,l=a.indexOf(":");if(l>0)var c=u.prefix=a.slice(0,l),h=a.slice(l+1),p=c==="xmlns"&&h;else h=a,c=null,p=a==="xmlns"&&"";u.localName=h,p!==!1&&(i==null&&(i={},E(s,s={})),s[p]=i[p]=f,u.uri="http://www.w3.org/2000/xmlns/",t.startPrefixMapping(p,f))}var o=e.length;while(o--){u=e[o];var c=u.prefix;c&&(c==="xml"&&(u.uri="http://www.w3.org/XML/1998/namespace"),c!=="xmlns"&&(u.uri=s[c]))}var l=r.indexOf(":");l>0?(c=e.prefix=r.slice(0,l),h=e.localName=r.slice(l+1)):(c=null,h=e.localName=r);var d=e.uri=s[c||""];t.startElement(d,h,r,e);if(e.closed){t.endElement(d,h,r);if(i)for(c in i)t.endPrefixMapping(c)}else e.currentNSMap=s,e.localNSMap=i,n.push(e)}function b(e,t,n,r,i){if(/^(?:script|textarea)$/i.test(n)){var s=e.indexOf("</"+n+">",t),o=e.substring(t+1,s);if(/[&<]/.test(o))return/^script$/i.test(n)?(i.characters(o,0,o.length),s):(o=o.replace(/&#?\w+;/g,r),i.characters(o,0,o.length),s)}return t+1}function w(e,t,n,r){var i=r[n];return i==null&&(i=r[n]=e.lastIndexOf("</"+n+">")),i<t}function E(e,t){for(var n in e)t[n]=e[n]}function S(e,t,n,r){var i=e.charAt(t+2);switch(i){case"-":if(e.charAt(t+3)==="-"){var s=e.indexOf("-->",t+4);return s>t?(n.comment(e,t+4,s-t-4),s+3):(r.error("Unclosed comment"),-1)}return-1;default:if(e.substr(t+3,6)=="CDATA["){var s=e.indexOf("]]>",t+9);return n.startCDATA(),n.characters(e,t+9,s-t-9),n.endCDATA(),s+3}var o=C(e,t),u=o.length;if(u>1&&/!doctype/i.test(o[0][0])){var a=o[1][0],f=u>3&&/^public$/i.test(o[2][0])&&o[3][0],l=u>4&&o[4][0],c=o[u-1];return n.startDTD(a,f&&f.replace(/^(['"])(.*?)\1$/,"$2"),l&&l.replace(/^(['"])(.*?)\1$/,"$2")),n.endDTD(),c.index+c[0].length}}return-1}function x(e,t,n){var r=e.indexOf("?>",t);if(r){var i=e.substring(t,r).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);if(i){var s=i[0].length;return n.processingInstruction(i[1],i[2]),r+2}return-1}return-1}function T(e){}function N(e,t){return e.__proto__=t,e}function C(e,t){var n,r=[],i=/'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;i.lastIndex=t,i.exec(e);while(n=i.exec(e)){r.push(n);if(n[1])return r}}var r=/[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,i=new RegExp("[\\-\\.0-9"+r.source.slice(1,-1)+"\u00b7\u0300-\u036f\\ux203F-\u2040]"),s=new RegExp("^"+r.source+i.source+"*(?::"+r.source+i.source+"*)?$"),o=0,u=1,a=2,f=3,l=4,c=5,h=6,p=7;return d.prototype={parse:function(e,t,n){var r=this.domBuilder;r.startDocument(),E(t,t={}),v(e,t,n,r,this.errorHandler),r.endDocument()}},T.prototype={setTagName:function(e){if(!s.test(e))throw new Error("invalid tagName:"+e);this.tagName=e},add:function(e,t,n){if(!s.test(e))throw new Error("invalid attribute:"+e);this[this.length++]={qName:e,value:t,offset:n}},length:0,getLocalName:function(e){return this[e].localName},getOffset:function(e){return this[e].offset},getQName:function(e){return this[e].qName},getURI:function(e){return this[e].uri},getValue:function(e){return this[e].value}},N({},N.prototype)instanceof N||(N=function(e,t){function n(){}n.prototype=t,n=new n;for(t in e)n[t]=e[t];return n}),d}),ace.define("ace/mode/xml/dom",["require","exports","module"],function(e,t,n){function r(e,t){for(var n in e)t[n]=e[n]}function i(e,t){var n=e.prototype;if(Object.create){var i=Object.create(t.prototype);n.__proto__=i}if(!(n instanceof t)){function s(){}s.prototype=t.prototype,s=new s,r(n,s),e.prototype=n=s}n.constructor!=e&&(typeof e!="function"&&console.error("unknow Class:"+e),n.constructor=e)}function B(e,t){if(t instanceof Error)var n=t;else n=this,Error.call(this,w[e]),this.message=w[e],Error.captureStackTrace&&Error.captureStackTrace(this,B);return n.code=e,t&&(this.message=this.message+": "+t),n}function j(){}function F(e,t){this._node=e,this._refresh=t,I(this)}function I(e){var t=e._node._inc||e._node.ownerDocument._inc;if(e._inc!=t){var n=e._refresh(e._node);gt(e,"length",n.length),r(n,e),e._inc=t}}function q(){}function R(e,t){var n=e.length;while(n--)if(e[n]===t)return n}function U(e,t,n,r){r?t[R(t,r)]=n:t[t.length++]=n;if(e){n.ownerElement=e;var i=e.ownerDocument;i&&(r&&Q(i,e,r),K(i,e,n))}}function z(e,t,n){var r=R(t,n);if(!(r>=0))throw B(L,new Error);var i=t.length-1;while(r<i)t[r]=t[++r];t.length=i;if(e){var s=e.ownerDocument;s&&(Q(s,e,n),n.ownerElement=null)}}function W(e){this._features={};if(e)for(var t in e)this._features=e[t]}function X(){}function V(e){return e=="<"&&"&lt;"||e==">"&&"&gt;"||e=="&"&&"&amp;"||e=='"'&&"&quot;"||"&#"+e.charCodeAt()+";"}function $(e,t){if(t(e))return!0;if(e=e.firstChild)do if($(e,t))return!0;while(e=e.nextSibling)}function J(){}function K(e,t,n){e&&e._inc++;var r=n.namespaceURI;r=="http://www.w3.org/2000/xmlns/"&&(t._nsMap[n.prefix?n.localName:""]=n.value)}function Q(e,t,n,r){e&&e._inc++;var i=n.namespaceURI;i=="http://www.w3.org/2000/xmlns/"&&delete t._nsMap[n.prefix?n.localName:""]}function G(e,t,n){if(e&&e._inc){e._inc++;var r=t.childNodes;if(n)r[r.length++]=n;else{var i=t.firstChild,s=0;while(i)r[s++]=i,i=i.nextSibling;r.length=s}}}function Y(e,t){var n=t.previousSibling,r=t.nextSibling;return n?n.nextSibling=r:e.firstChild=r,r?r.previousSibling=n:e.lastChild=n,G(e.ownerDocument,e),t}function Z(e,t,n){var r=t.parentNode;r&&r.removeChild(t);if(t.nodeType===g){var i=t.firstChild;if(i==null)return t;var s=t.lastChild}else i=s=t;var o=n?n.previousSibling:e.lastChild;i.previousSibling=o,s.nextSibling=n,o?o.nextSibling=i:e.firstChild=i,n==null?e.lastChild=s:n.previousSibling=s;do i.parentNode=e;while(i!==s&&(i=i.nextSibling));return G(e.ownerDocument||e,e),t.nodeType==g&&(t.firstChild=t.lastChild=null),t}function et(e,t){var n=t.parentNode;if(n){var r=e.lastChild;n.removeChild(t);var r=e.lastChild}var r=e.lastChild;return t.parentNode=e,t.previousSibling=r,t.nextSibling=null,r?r.nextSibling=t:e.firstChild=t,e.lastChild=t,G(e.ownerDocument,e,t),t}function tt(){this._nsMap={}}function nt(){}function rt(){}function it(){}function st(){}function ot(){}function ut(){}function at(){}function ft(){}function lt(){}function ct(){}function ht(){}function pt(){}function dt(e,t){switch(e.nodeType){case u:var n=e.attributes,r=n.length,i=e.firstChild,o=e.tagName,h=s===e.namespaceURI;t.push("<",o);for(var y=0;y<r;y++)dt(n.item(y),t,h);if(i||h&&!/^(?:meta|link|img|br|hr|input|button)$/i.test(o)){t.push(">");if(h&&/^script$/i.test(o))i&&t.push(i.data);else while(i)dt(i,t),i=i.nextSibling;t.push("</",o,">")}else t.push("/>");return;case v:case g:var i=e.firstChild;while(i)dt(i,t),i=i.nextSibling;return;case a:return t.push(" ",e.name,'="',e.value.replace(/[<&"]/g,V),'"');case f:return t.push(e.data.replace(/[<&]/g,V));case l:return t.push("<![CDATA[",e.data,"]]>");case d:return t.push("<!--",e.data,"-->");case m:var b=e.publicId,w=e.systemId;t.push("<!DOCTYPE ",e.name);if(b)t.push(' PUBLIC "',b),w&&w!="."&&t.push('" "',w),t.push('">');else if(w&&w!=".")t.push(' SYSTEM "',w,'">');else{var E=e.internalSubset;E&&t.push(" [",E,"]"),t.push(">")}return;case p:return t.push("<?",e.target," ",e.data,"?>");case c:return t.push("&",e.nodeName,";");default:t.push("??",e.nodeName)}}function vt(e,t,n){var r;switch(t.nodeType){case u:r=t.cloneNode(!1),r.ownerDocument=e;case g:break;case a:n=!0}r||(r=t.cloneNode(!1)),r.ownerDocument=e,r.parentNode=null;if(n){var i=t.firstChild;while(i)r.appendChild(vt(e,i,n)),i=i.nextSibling}return r}function mt(e,t,n){var r=new t.constructor;for(var i in t){var s=t[i];typeof s!="object"&&s!=r[i]&&(r[i]=s)}t.childNodes&&(r.childNodes=new j),r.ownerDocument=e;switch(r.nodeType){case u:var o=t.attributes,f=r.attributes=new q,l=o.length;f._ownerElement=r;for(var c=0;c<l;c++)r.setAttributeNode(mt(e,o.item(c),!0));break;case a:n=!0}if(n){var h=t.firstChild;while(h)r.appendChild(mt(e,h,n)),h=h.nextSibling}return r}function gt(e,t,n){e[t]=n}var s="http://www.w3.org/1999/xhtml",o={},u=o.ELEMENT_NODE=1,a=o.ATTRIBUTE_NODE=2,f=o.TEXT_NODE=3,l=o.CDATA_SECTION_NODE=4,c=o.ENTITY_REFERENCE_NODE=5,h=o.ENTITY_NODE=6,p=o.PROCESSING_INSTRUCTION_NODE=7,d=o.COMMENT_NODE=8,v=o.DOCUMENT_NODE=9,m=o.DOCUMENT_TYPE_NODE=10,g=o.DOCUMENT_FRAGMENT_NODE=11,y=o.NOTATION_NODE=12,b={},w={},E=b.INDEX_SIZE_ERR=(w[1]="Index size error",1),S=b.DOMSTRING_SIZE_ERR=(w[2]="DOMString size error",2),x=b.HIERARCHY_REQUEST_ERR=(w[3]="Hierarchy request error",3),T=b.WRONG_DOCUMENT_ERR=(w[4]="Wrong document",4),N=b.INVALID_CHARACTER_ERR=(w[5]="Invalid character",5),C=b.NO_DATA_ALLOWED_ERR=(w[6]="No data allowed",6),k=b.NO_MODIFICATION_ALLOWED_ERR=(w[7]="No modification allowed",7),L=b.NOT_FOUND_ERR=(w[8]="Not found",8),A=b.NOT_SUPPORTED_ERR=(w[9]="Not supported",9),O=b.INUSE_ATTRIBUTE_ERR=(w[10]="Attribute in use",10),M=b.INVALID_STATE_ERR=(w[11]="Invalid state",11),_=b.SYNTAX_ERR=(w[12]="Syntax error",12),D=b.INVALID_MODIFICATION_ERR=(w[13]="Invalid modification",13),P=b.NAMESPACE_ERR=(w[14]="Invalid namespace",14),H=b.INVALID_ACCESS_ERR=(w[15]="Invalid access",15);B.prototype=Error.prototype,r(b,B),j.prototype={length:0,item:function(e){return this[e]||null}},F.prototype.item=function(e){return I(this),this[e]},i(F,j),q.prototype={length:0,item:j.prototype.item,getNamedItem:function(e){var t=this.length;while(t--){var n=this[t];if(n.nodeName==e)return n}},setNamedItem:function(e){var t=e.ownerElement;if(t&&t!=this._ownerElement)throw new B(O);var n=this.getNamedItem(e.nodeName);return U(this._ownerElement,this,e,n),n},setNamedItemNS:function(e){var t=e.ownerElement,n;if(t&&t!=this._ownerElement)throw new B(O);return n=this.getNamedItemNS(e.namespaceURI,e.localName),U(this._ownerElement,this,e,n),n},removeNamedItem:function(e){var t=this.getNamedItem(e);return z(this._ownerElement,this,t),t},removeNamedItemNS:function(e,t){var n=this.getNamedItemNS(e,t);return z(this._ownerElement,this,n),n},getNamedItemNS:function(e,t){var n=this.length;while(n--){var r=this[n];if(r.localName==t&&r.namespaceURI==e)return r}return null}},W.prototype={hasFeature:function(e,t){var n=this._features[e.toLowerCase()];return n&&(!t||t in n)?!0:!1},createDocument:function(e,t,n){var r=new J;r.implementation=this,r.childNodes=new j,r.doctype=n,n&&r.appendChild(n);if(t){var i=r.createElementNS(e,t);r.appendChild(i)}return r},createDocumentType:function(e,t,n){var r=new ut;return r.name=e,r.nodeName=e,r.publicId=t,r.systemId=n,r}},X.prototype={firstChild:null,lastChild:null,previousSibling:null,nextSibling:null,attributes:null,parentNode:null,childNodes:null,ownerDocument:null,nodeValue:null,namespaceURI:null,prefix:null,localName:null,insertBefore:function(e,t){return Z(this,e,t)},replaceChild:function(e,t){this.insertBefore(e,t),t&&this.removeChild(t)},removeChild:function(e){return Y(this,e)},appendChild:function(e){return this.insertBefore(e,null)},hasChildNodes:function(){return this.firstChild!=null},cloneNode:function(e){return mt(this.ownerDocument||this,this,e)},normalize:function(){var e=this.firstChild;while(e){var t=e.nextSibling;t&&t.nodeType==f&&e.nodeType==f?(this.removeChild(t),e.appendData(t.data)):(e.normalize(),e=t)}},isSupported:function(e,t){return this.ownerDocument.implementation.hasFeature(e,t)},hasAttributes:function(){return this.attributes.length>0},lookupPrefix:function(e){var t=this;while(t){var n=t._nsMap;if(n)for(var r in n)if(n[r]==e)return r;t=t.nodeType==2?t.ownerDocument:t.parentNode}return null},lookupNamespaceURI:function(e){var t=this;while(t){var n=t._nsMap;if(n&&e in n)return n[e];t=t.nodeType==2?t.ownerDocument:t.parentNode}return null},isDefaultNamespace:function(e){var t=this.lookupPrefix(e);return t==null}},r(o,X),r(o,X.prototype),J.prototype={nodeName:"#document",nodeType:v,doctype:null,documentElement:null,_inc:1,insertBefore:function(e,t){if(e.nodeType==g){var n=e.firstChild;while(n){var r=n.nextSibling;this.insertBefore(n,t),n=r}return e}return this.documentElement==null&&e.nodeType==1&&(this.documentElement=e),Z(this,e,t),e.ownerDocument=this,e},removeChild:function(e){return this.documentElement==e&&(this.documentElement=null),Y(this,e)},importNode:function(e,t){return vt(this,e,t)},getElementById:function(e){var t=null;return $(this.documentElement,function(n){if(n.nodeType==1&&n.getAttribute("id")==e)return t=n,!0}),t},createElement:function(e){var t=new tt;t.ownerDocument=this,t.nodeName=e,t.tagName=e,t.childNodes=new j;var n=t.attributes=new q;return n._ownerElement=t,t},createDocumentFragment:function(){var e=new ct;return e.ownerDocument=this,e.childNodes=new j,e},createTextNode:function(e){var t=new it;return t.ownerDocument=this,t.appendData(e),t},createComment:function(e){var t=new st;return t.ownerDocument=this,t.appendData(e),t},createCDATASection:function(e){var t=new ot;return t.ownerDocument=this,t.appendData(e),t},createProcessingInstruction:function(e,t){var n=new ht;return n.ownerDocument=this,n.tagName=n.target=e,n.nodeValue=n.data=t,n},createAttribute:function(e){var t=new nt;return t.ownerDocument=this,t.name=e,t.nodeName=e,t.localName=e,t.specified=!0,t},createEntityReference:function(e){var t=new lt;return t.ownerDocument=this,t.nodeName=e,t},createElementNS:function(e,t){var n=new tt,r=t.split(":"),i=n.attributes=new q;return n.childNodes=new j,n.ownerDocument=this,n.nodeName=t,n.tagName=t,n.namespaceURI=e,r.length==2?(n.prefix=r[0],n.localName=r[1]):n.localName=t,i._ownerElement=n,n},createAttributeNS:function(e,t){var n=new nt,r=t.split(":");return n.ownerDocument=this,n.nodeName=t,n.name=t,n.namespaceURI=e,n.specified=!0,r.length==2?(n.prefix=r[0],n.localName=r[1]):n.localName=t,n}},i(J,X),tt.prototype={nodeType:u,hasAttribute:function(e){return this.getAttributeNode(e)!=null},getAttribute:function(e){var t=this.getAttributeNode(e);return t&&t.value||""},getAttributeNode:function(e){return this.attributes.getNamedItem(e)},setAttribute:function(e,t){var n=this.ownerDocument.createAttribute(e);n.value=n.nodeValue=""+t,this.setAttributeNode(n)},removeAttribute:function(e){var t=this.getAttributeNode(e);t&&this.removeAttributeNode(t)},appendChild:function(e){return e.nodeType===g?this.insertBefore(e,null):et(this,e)},setAttributeNode:function(e){return this.attributes.setNamedItem(e)},setAttributeNodeNS:function(e){return this.attributes.setNamedItemNS(e)},removeAttributeNode:function(e){return this.attributes.removeNamedItem(e.nodeName)},removeAttributeNS:function(e,t){var n=this.getAttributeNodeNS(e,t);n&&this.removeAttributeNode(n)},hasAttributeNS:function(e,t){return this.getAttributeNodeNS(e,t)!=null},getAttributeNS:function(e,t){var n=this.getAttributeNodeNS(e,t);return n&&n.value||""},setAttributeNS:function(e,t,n){var r=this.ownerDocument.createAttributeNS(e,t);r.value=r.nodeValue=""+n,this.setAttributeNode(r)},getAttributeNodeNS:function(e,t){return this.attributes.getNamedItemNS(e,t)},getElementsByTagName:function(e){return new F(this,function(t){var n=[];return $(t,function(r){r!==t&&r.nodeType==u&&(e==="*"||r.tagName==e)&&n.push(r)}),n})},getElementsByTagNameNS:function(e,t){return new F(this,function(n){var r=[];return $(n,function(i){i!==n&&i.nodeType===u&&(e==="*"||i.namespaceURI===e)&&(t==="*"||i.localName==t)&&r.push(i)}),r})}},J.prototype.getElementsByTagName=tt.prototype.getElementsByTagName,J.prototype.getElementsByTagNameNS=tt.prototype.getElementsByTagNameNS,i(tt,X),nt.prototype.nodeType=a,i(nt,X),rt.prototype={data:"",substringData:function(e,t){return this.data.substring(e,e+t)},appendData:function(e){e=this.data+e,this.nodeValue=this.data=e,this.length=e.length},insertData:function(e,t){this.replaceData(e,0,t)},appendChild:function(e){throw new Error(w[3])},deleteData:function(e,t){this.replaceData(e,t,"")},replaceData:function(e,t,n){var r=this.data.substring(0,e),i=this.data.substring(e+t);n=r+n+i,this.nodeValue=this.data=n,this.length=n.length}},i(rt,X),it.prototype={nodeName:"#text",nodeType:f,splitText:function(e){var t=this.data,n=t.substring(e);t=t.substring(0,e),this.data=this.nodeValue=t,this.length=t.length;var r=this.ownerDocument.createTextNode(n);return this.parentNode&&this.parentNode.insertBefore(r,this.nextSibling),r}},i(it,rt),st.prototype={nodeName:"#comment",nodeType:d},i(st,rt),ot.prototype={nodeName:"#cdata-section",nodeType:l},i(ot,rt),ut.prototype.nodeType=m,i(ut,X),at.prototype.nodeType=y,i(at,X),ft.prototype.nodeType=h,i(ft,X),lt.prototype.nodeType=c,i(lt,X),ct.prototype.nodeName="#document-fragment",ct.prototype.nodeType=g,i(ct,X),ht.prototype.nodeType=p,i(ht,X),pt.prototype.serializeToString=function(e){var t=[];return dt(e,t),t.join("")},X.prototype.toString=function(){return pt.prototype.serializeToString(this)};try{if(Object.defineProperty){Object.defineProperty(F.prototype,"length",{get:function(){return I(this),this.$$length}}),Object.defineProperty(X.prototype,"textContent",{get:function(){return yt(this)},set:function(e){switch(this.nodeType){case 1:case 11:while(this.firstChild)this.removeChild(this.firstChild);(e||String(e))&&this.appendChild(this.ownerDocument.createTextNode(e));break;default:this.data=e,this.value=value,this.nodeValue=e}}});function yt(e){switch(e.nodeType){case 1:case 11:var t=[];e=e.firstChild;while(e)e.nodeType!==7&&e.nodeType!==8&&t.push(yt(e)),e=e.nextSibling;return t.join("");default:return e.nodeValue}}gt=function(e,t,n){e["$$"+t]=n}}}catch(bt){}return W}),ace.define("ace/mode/xml/dom-parser",["require","exports","module","ace/mode/xml/sax","ace/mode/xml/dom"],function(e,t,n){"use strict";function s(e){this.options=e||{locator:{}}}function o(e,t,n){function s(t){var s=e[t];if(!s)if(i)s=e.length==2?function(n){e(t,n)}:e;else{var o=arguments.length;while(--o)if(s=e[arguments[o]])break}r[t]=s&&function(e){s(e+f(n),e,n)}||function(){}}if(!e){if(t instanceof u)return t;e=t}var r={},i=e instanceof Function;return n=n||{},s("warning","warn"),s("error","warn","warning"),s("fatalError","warn","warning","error"),r}function u(){this.cdata=!1}function a(e,t){t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber}function f(e){if(e)return"\n@"+(e.systemId||"")+"#[line:"+e.lineNumber+",col:"+e.columnNumber+"]"}function l(e,t,n){return typeof e=="string"?e.substr(t,n):e.length>=t+n||t?new java.lang.String(e,t,n)+"":e}function c(e,t){e.currentElement?e.currentElement.appendChild(t):e.document.appendChild(t)}var r=e("./sax"),i=e("./dom");return s.prototype.parseFromString=function(e,t){var n=this.options,i=new r,s=n.domBuilder||new u,a=n.errorHandler,f=n.locator,l=n.xmlns||{},c={lt:"<",gt:">",amp:"&",quot:'"',apos:"'"};return f&&s.setDocumentLocator(f),i.errorHandler=o(a,s,f),i.domBuilder=n.domBuilder||s,/\/x?html?$/.test(t)&&(c.nbsp="\u00a0",c.copy="\u00a9",l[""]="http://www.w3.org/1999/xhtml"),e?i.parse(e,l,c):i.errorHandler.error("invalid document source"),s.document},u.prototype={startDocument:function(){this.document=(new i).createDocument(null,null,null),this.locator&&(this.document.documentURI=this.locator.systemId)},startElement:function(e,t,n,r){var i=this.document,s=i.createElementNS(e,n||t),o=r.length;c(this,s),this.currentElement=s,this.locator&&a(this.locator,s);for(var u=0;u<o;u++){var e=r.getURI(u),f=r.getValue(u),n=r.getQName(u),l=i.createAttributeNS(e,n);l.getOffset&&a(l.getOffset(1),l),l.value=l.nodeValue=f,s.setAttributeNode(l)}},endElement:function(e,t,n){var r=this.currentElement,i=r.tagName;this.currentElement=r.parentNode},startPrefixMapping:function(e,t){},endPrefixMapping:function(e){},processingInstruction:function(e,t){var n=this.document.createProcessingInstruction(e,t);this.locator&&a(this.locator,n),c(this,n)},ignorableWhitespace:function(e,t,n){},characters:function(e,t,n){e=l.apply(this,arguments);if(this.currentElement&&e){if(this.cdata){var r=this.document.createCDATASection(e);this.currentElement.appendChild(r)}else{var r=this.document.createTextNode(e);this.currentElement.appendChild(r)}this.locator&&a(this.locator,r)}},skippedEntity:function(e){},endDocument:function(){this.document.normalize()},setDocumentLocator:function(e){if(this.locator=e)e.lineNumber=0},comment:function(e,t,n){e=l.apply(this,arguments);var r=this.document.createComment(e);this.locator&&a(this.locator,r),c(this,r)},startCDATA:function(){this.cdata=!0},endCDATA:function(){this.cdata=!1},startDTD:function(e,t,n){var r=this.document.implementation;if(r&&r.createDocumentType){var i=r.createDocumentType(e,t,n);this.locator&&a(this.locator,i),c(this,i)}},warning:function(e){console.warn(e,f(this.locator))},error:function(e){console.error(e,f(this.locator))},fatalError:function(e){throw console.error(e,f(this.locator)),e}},"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(e){u.prototype[e]=function(){return null}}),{DOMParser:s}}),ace.define("ace/mode/xml_worker",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/worker/mirror","ace/mode/xml/dom-parser"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("../worker/mirror").Mirror,o=e("./xml/dom-parser").DOMParser,u=t.Worker=function(e){s.call(this,e),this.setTimeout(400),this.context=null};r.inherits(u,s),function(){this.setOptions=function(e){this.context=e.context},this.onUpdate=function(){var e=this.doc.getValue();if(!e)return;var t=new o,n=[];t.options.errorHandler={fatalError:function(e,t,r){n.push({row:r.lineNumber,column:r.columnNumber,text:t,type:"error"})},error:function(e,t,r){n.push({row:r.lineNumber,column:r.columnNumber,text:t,type:"error"})},warning:function(e,t,r){n.push({row:r.lineNumber,column:r.columnNumber,text:t,type:"warning"})}},t.parseFromString(e),this.sender.emit("error",n)}}.call(u.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _=" \n \f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}}) \ No newline at end of file
diff --git a/library/ace/worker-xquery.js b/library/ace/worker-xquery.js
new file mode 100644
index 000000000..3c19f04e9
--- /dev/null
+++ b/library/ace/worker-xquery.js
@@ -0,0 +1 @@
+"no use strict";(function(e){function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")return i+r;if(i)return i.location.replace(/\/*$/,"/")+(r||i.main||i.name);if(i===!1)return"";var s=n.lastIndexOf("/");if(s===-1)break;r=n.substr(s)+r,n=n.slice(0,s)}return e}if(typeof e.window!="undefined"&&e.document)return;if(e.require&&e.define)return;e.console||(e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console),e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,data:i.data,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(r,i){i||(i=r,r=null);if(!i.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");i=e.normalizeModule(r,i);var s=e.require.modules[i];if(s)return s.initialized||(s.initialized=!0,s.exports=s.factory().exports),s.exports;if(!e.require.tlns)return console.log("unable to load "+i);var o=t(i,e.require.tlns);return o.slice(-3)!=".js"&&(o+=".js"),e.require.id=i,e.require.modules[i]={},importScripts(o),e.require(r,i)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},require.tlns={},e.initBaseUrls=function(t){for(var n in t)require.tlns[n]=t[n]},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var n=e.main=null,r=e.sender=null;e.onmessage=function(t){var i=t.data;if(i.event&&r)r._signal(i.event,i.data);else if(i.command)if(n[i.command])n[i.command].apply(n,i.args);else{if(!e[i.command])throw new Error("Unknown command:"+i.command);e[i.command].apply(e,i.args)}else if(i.init){e.initBaseUrls(i.tlns),require("ace/lib/es5-shim"),r=e.sender=e.initSender();var s=require(i.module)[i.classname];n=e.main=new s(r)}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,n){"use strict";function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: "+t}function i(e,t){return t.row>=0&&t.row<e.length&&t.column>=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.column<t.column;return e.row<t.row||e.row==t.row&&r}function t(t,n,r){var i=t.action=="insert",s=(i?1:-1)*(t.end.row-t.start.row),o=(i?1:-1)*(t.end.column-t.start.column),u=t.start,a=i?u:t.end;return e(n,u,r)?{row:n.row,column:n.column}:e(a,n,!r)?{row:n.row+s,column:n.column+(n.row==a.row?o:0)}:{row:u.row,column:u.column}}r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){if(e.start.row==e.end.row&&e.start.row!=this.row)return;if(e.start.row>this.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e<this.getLength()?(t=t.concat([""]),n=0):(t=[""].concat(t),e--,n=this.$lines[e].length),this.insertMergedLines({row:e,column:n},t)},this.insertMergedLines=function(e,t){var n=this.clippedPos(e.row,e.column),r={row:n.row+t.length-1,column:(t.length==1?n.column:0)+t[t.length-1].length};return this.applyDelta({start:n,end:r,action:"insert",lines:t}),this.clonePos(r)},this.remove=function(e){var t=this.clippedPos(e.start.row,e.start.column),n=this.clippedPos(e.end.row,e.end.column);return this.applyDelta({start:t,end:n,action:"remove",lines:this.getLinesForRange({start:t,end:n})}),this.clonePos(t)},this.removeInLine=function(e,t,n){var r=this.clippedPos(e,t),i=this.clippedPos(e,n);return this.applyDelta({start:r,end:i,action:"remove",lines:this.getLinesForRange({start:r,end:i})},!0),this.clonePos(r)},this.removeFullLines=function(e,t){e=Math.min(Math.max(0,e),this.getLength()-1),t=Math.min(Math.max(0,t),this.getLength()-1);var n=t==this.getLength()-1&&e>0,r=t<this.getLength()-1,i=n?e-1:e,s=n?this.getLine(i).length:0,u=r?t+1:t,a=r?0:this.getLine(u).length,f=new o(i,s,u,a),l=this.$lines.slice(e,t+1);return this.applyDelta({start:f.start,end:f.end,action:"remove",lines:this.getLinesForRange(f)}),l},this.removeNewLine=function(e){e<this.getLength()-1&&e>=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++)this.applyDelta(e[t])},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(a.prototype),t.Document=a}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function s(e){if(typeof e!="object"||!e)return e;var t;if(Array.isArray(e)){t=[];for(var n=0;n<e.length;n++)t[n]=s(e[n]);return t}var r=e.constructor;if(r===RegExp)return e;t=r();for(var n in e)t[n]=s(e[n]);return t},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/worker/mirror",["require","exports","module","ace/range","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../document").Document,s=e("../lib/lang"),o=t.Mirror=function(e){this.sender=e;var t=this.doc=new i(""),n=this.deferredUpdate=s.delayedCall(this.onUpdate.bind(this)),r=this;e.on("change",function(e){var i=e.data;if(i[0].start)t.applyDeltas(i);else for(var s=0;s<i.length;s+=2){if(Array.isArray(i[s+1]))var o={action:"insert",start:i[s],lines:i[s+1]};else var o={action:"remove",start:i[s],end:i[s+1]};t.applyDelta(o,!0)}if(r.$timeout)return n.schedule(r.$timeout);r.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(o.prototype)}),ace.define("ace/mode/xquery/xqlint",["require","exports","module","ace/mode/tree_ops","ace/mode/xquery/errors","ace/mode/tree_ops","ace/mode/xquery/errors","ace/mode/xquery/schema_built-in_types","ace/mode/xquery/errors","ace/mode/tree_ops","ace/mode/xquery/static_context","ace/mode/xquery/handlers","ace/mode/tree_ops","ace/mode/xquery/parsers/JSONiqParser","ace/mode/xquery/parsers/XQueryParser","ace/mode/xquery/parsers/JSONParseTreeHandler","ace/mode/xquery/compiler/translator","ace/mode/xquery/formatter/style_checker","ace/mode/lib/completion/completer","ace/mode/xquery/compiler/static_context"],function(e,t,n){n.exports=function r(t,n,i){function s(u,a){if(!n[u]){if(!t[u]){var f=typeof e=="function"&&e;if(!a&&f)return f(u,!0);if(o)return o(u,!0);var l=new Error("Cannot find module '"+u+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[u]={exports:{}};t[u][0].call(c.exports,function(e){var n=t[u][1][e];return s(n?n:e)},c,c.exports,r,t,n,i)}return n[u].exports}var o=typeof e=="function"&&e;for(var u=0;u<i.length;u++)s(i[u]);return s}({1:[function(e,t,n){"use strict";var r=function(e,t,n,r,i){if(!t)throw new Error(i+" code is missing.");if(!n)throw new Error(i+" message is missing.");if(!r)throw new Error(i+" position is missing.");e.getCode=function(){return t},e.getMessage=function(){return n},e.getPos=function(){return r}},i={},s={};i.prototype=new Error,s.prototype=new Error,n.StaticError=i.prototype.constructor=function(e,t,n){r(this,e,t,n,"Error")},n.StaticWarning=s.prototype.constructor=function(e,t,n){r(this,e,t,n,"Warning")}},{}],2:[function(e,t,n){"use strict";var r=e("../tree_ops").TreeOps,i=e("./errors"),s=i.StaticWarning;n.ModuleDecl=function(e,t,n){var i="";return{NCName:function(e){i=r.flatten(e)},URILiteral:function(s){s=r.flatten(s),s=s.substring(1,s.length-1),e.apply(function(){t.moduleNamespace=s,t.addNamespace(s,i,n.pos,"moduleDecl")})}}},n.ModuleImport=function(e,t,n){var i="",s;return{NCName:function(e){i=r.flatten(e)},URILiteral:function(o){if(s!==undefined)return;o=r.flatten(o),o=o.substring(1,o.length-1),s=o,e.apply(function(){t.importModule(o,i,n.pos)})}}},n.SchemaImport=function(e,t,n){var i="",s;return{SchemaPrefix:function(t){var n=function(){this.NCName=function(e){i=r.flatten(e)}};e.visitChildren(t,new n)},URILiteral:function(o){if(s!==undefined)return;o=r.flatten(o),o=o.substring(1,o.length-1),s=o,e.apply(function(){t.addNamespace(o,i,n.pos,"schema")})}}},n.DefaultNamespaceDecl=function(e,t,n){var i=!1,o="";return{TOKEN:function(e){i=i?!0:e.value==="function"},URILiteral:function(u){o=r.flatten(u),o=o.substring(1,o.length-1),i?t.defaultFunctionNamespace=o:(e.apply(function(){throw new s("W06","Avoid default element namespace declarations.",n.pos)}),t.defaultElementNamespace=o)}}},n.NamespaceDecl=function(e,t,n){var i="";return{NCName:function(e){i=r.flatten(e)},URILiteral:function(s){s=r.flatten(s),s=s.substring(1,s.length-1),e.apply(function(){t.addNamespace(s,i,n.pos,"declare")})}}},n.VarHandler=function(e,t,n){var i=function(i){var s=r.flatten(i);e.apply(function(){var e=t.resolveQName(s,i.pos);t.addVariable(e,n.name,i.pos)})};return{ExprSingle:function(){return!0},VarValue:function(){return!0},VarDefaultValue:function(){return!0},VarName:i,EQName:i}},n.VarRefHandler=function(e,t,n){return{VarName:function(i){var s=r.flatten(i);e.apply(function(){var e=t.resolveQName(s,n.pos);e.uri!==""&&(t.root.namespaces[e.uri].used=!0),t.addVarRef(e,i.pos)})}}}},{"../tree_ops":11,"./errors":1}],3:[function(e,t,n){"use strict";n.getSchemaBuiltinTypes=function(){var e="http://www.w3.org/2001/XMLSchema",t={};return t[e]={variables:{},functions:{}},t[e].functions[e+"#string#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"string",arity:1,eqname:{uri:e,name:"string"}},t[e].functions[e+"#boolean#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"boolean",arity:1,eqname:{uri:e,name:"boolean"}},t[e].functions[e+"#decimal#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"decimal",arity:1,eqname:{uri:e,name:"decimal"}},t[e].functions[e+"#float#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"float",arity:1,eqname:{uri:e,name:"float"}},t[e].functions[e+"#double#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"double",arity:1,eqname:{uri:e,name:"double"}},t[e].functions[e+"#duration#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"duration",arity:1,eqname:{uri:e,name:"duration"}},t[e].functions[e+"#dateTime#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"dateTime",arity:1,eqname:{uri:e,name:"dateTime"}},t[e].functions[e+"#time#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"time",arity:1,eqname:{uri:e,name:"time"}},t[e].functions[e+"#date#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"date",arity:1,eqname:{uri:e,name:"date"}},t[e].functions[e+"#gYearMonth#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"gYearMonth",arity:1,eqname:{uri:e,name:"gYearMonth"}},t[e].functions[e+"#gYear#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"gYear",arity:1,eqname:{uri:e,name:"gYear"}},t[e].functions[e+"#gMonthDay#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"gMonthDay",arity:1,eqname:{uri:e,name:"gMonthDay"}},t[e].functions[e+"#gDay#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"gDay",arity:1,eqname:{uri:e,name:"gDay"}},t[e].functions[e+"#gMonth#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"gMonth",arity:1,eqname:{uri:e,name:"gMonth"}},t[e].functions[e+"#hexBinary#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"hexBinary",arity:1,eqname:{uri:e,name:"hexBinary"}},t[e].functions[e+"#base64Binary#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"base64Binary",arity:1,eqname:{uri:e,name:"base64Binary"}},t[e].functions[e+"#anyURI#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"anyURI",arity:1,eqname:{uri:e,name:"anyURI"}},t[e].functions[e+"#QName#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"QName",arity:1,eqname:{uri:e,name:"QName"}},t[e].functions[e+"#normalizedString#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"normalizedString",arity:1,eqname:{uri:e,name:"normalizedString"}},t[e].functions[e+"#token#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"token",arity:1,eqname:{uri:e,name:"token"}},t[e].functions[e+"#language#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"language",arity:1,eqname:{uri:e,name:"language"}},t[e].functions[e+"#NMTOKEN#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"NMTOKEN",arity:1,eqname:{uri:e,name:"NMTOKEN"}},t[e].functions[e+"#Name#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"Name",arity:1,eqname:{uri:e,name:"Name"}},t[e].functions[e+"#NCName#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"NCName",arity:1,eqname:{uri:e,name:"NCName"}},t[e].functions[e+"#ID#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"ID",arity:1,eqname:{uri:e,name:"ID"}},t[e].functions[e+"#IDREF#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"IDREF",arity:1,eqname:{uri:e,name:"IDREF"}},t[e].functions[e+"#ENTITY#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"ENTITY",arity:1,eqname:{uri:e,name:"ENTITY"}},t[e].functions[e+"#integer#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"integer",arity:1,eqname:{uri:e,name:"integer"}},t[e].functions[e+"#nonPositiveInteger#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"nonPositiveInteger",arity:1,eqname:{uri:e,name:"nonPositiveInteger"}},t[e].functions[e+"#negativeInteger#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"negativeInteger",arity:1,eqname:{uri:e,name:"negativeInteger"}},t[e].functions[e+"#long#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"long",arity:1,eqname:{uri:e,name:"long"}},t[e].functions[e+"#int#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"int",arity:1,eqname:{uri:e,name:"int"}},t[e].functions[e+"#short#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"short",arity:1,eqname:{uri:e,name:"short"}},t[e].functions[e+"#byte#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"byte",arity:1,eqname:{uri:e,name:"byte"}},t[e].functions[e+"#nonNegativeInteger#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"nonNegativeInteger",arity:1,eqname:{uri:e,name:"nonNegativeInteger"}},t[e].functions[e+"#unsignedLong#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"unsignedLong",arity:1,eqname:{uri:e,name:"unsignedLong"}},t[e].functions[e+"#unsignedInt#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"unsignedInt",arity:1,eqname:{uri:e,name:"unsignedInt"}},t[e].functions[e+"#unsignedShort#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"unsignedShort",arity:1,eqname:{uri:e,name:"unsignedShort"}},t[e].functions[e+"#unsignedByte#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"unsignedByte",arity:1,eqname:{uri:e,name:"unsignedByte"}},t[e].functions[e+"#positiveInteger#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"positiveInteger",arity:1,eqname:{uri:e,name:"positiveInteger"}},t[e].functions[e+"#yearMonthDuration#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"yearMonthDuration",arity:1,eqname:{uri:e,name:"yearMonthDuration"}},t[e].functions[e+"#dayTimeDuration#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"dayTimeDuration",arity:1,eqname:{uri:e,name:"dayTimeDuration"}},t[e].functions[e+"#untypedAtomic#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"untypedAtomic",arity:1,eqname:{uri:e,name:"untypedAtomic"}},t}},{}],4:[function(e,t,n){n.StaticContext=function(t,n){"use strict";var r=e("../tree_ops").TreeOps,i=e("./errors"),s=i.StaticError,o=i.StaticWarning,u=e("./schema_built-in_types").getSchemaBuiltinTypes,a={sl:0,sc:0,el:0,ec:0},f={},l=function(e){return e.uri+"#"+e.name},c=function(e,t){return l(e)+"#"+t};t||(f["http://jsoniq.org/functions"]={prefix:"jn",pos:a,type:"module",override:!0},f["http://www.28msec.com/modules/collections"]={prefix:"db",pos:a,type:"module",override:!0},f["http://www.28msec.com/modules/store"]={prefix:"store",pos:a,type:"module",override:!0},f["http://jsoniq.org/function-library"]={prefix:"libjn",pos:a,type:"module",override:!0},f["http://www.w3.org/2005/xpath-functions"]={prefix:"fn",pos:a,type:"module",override:!0},f["http://www.w3.org/2005/xquery-local-functions"]={prefix:"local",pos:a,type:"declare",override:!0},f["http://www.w3.org/2001/XMLSchema-instance"]={prefix:"xsi",pos:a,type:"declare"},f["http://www.w3.org/2001/XMLSchema"]={prefix:"xs",pos:a,type:"declare"},f["http://www.w3.org/XML/1998/namespace"]={prefix:"xml",pos:a,type:"declare"},f["http://zorba.io/annotations"]={prefix:"an",pos:a,type:"declare",override:!0},f["http://www.28msec.com/annotations/rest"]={prefix:"rest",pos:a,type:"declare",override:!0},f["http://www.w3.org/2005/xqt-errors"]={prefix:"err",pos:a,type:"declare",override:!0},f["http://zorba.io/errors"]={prefix:"zerr",pos:a,type:"declare",override:!0});var h={parent:t,children:[],pos:n,setModuleResolver:function(e){return this.root.moduleResolver=e,this},setModules:function(e){if(this!==this.root)throw new Error("setModules() not invoked from the root static context.");this.moduleResolver=function(t){return e[t]};var t=this;return Object.keys(this.namespaces).forEach(function(e){var n=t.namespaces[e];if(n.type==="module"){var i=t.moduleResolver(e);i.variables&&r.concat(t.variables,i.variables),i.functions&&r.concat(t.functions,i.functions)}}),this},setModulesFromXQDoc:function(e){if(this!==this.root)throw new Error("setModulesFromXQDoc() not invoked from the root static context.");var t={};Object.keys(e).forEach(function(n){var r=e[n],i={},s={};r.functions.forEach(function(e){s[n+"#"+e.name+"#"+e.arity]={params:[],annotations:[],name:e.name,arity:e.arity,eqname:{uri:n,name:e.name}},e.parameters.forEach(function(t){s[n+"#"+e.name+"#"+e.arity].params.push("$"+t.name)})}),r.variables.forEach(function(e){var t=e.name.substring(e.name.indexOf(":")+1);i[n+"#"+t]={type:"VarDecl",annotations:[],eqname:{uri:n,name:t}}}),t[n]={variables:i,functions:s}}),this.root.moduleResolver=function(e){return t[e]};var n=this;return Object.keys(this.namespaces).forEach(function(e){var t=n.namespaces[e];if(t.type==="module"){var i=n.moduleResolver(e);i.variables&&r.concat(n.variables,i.variables),i.functions&&r.concat(n.functions,i.functions)}}),this},moduleNamespace:"",defaultFunctionNamespace:"http://www.w3.org/2005/xpath-functions",defaultFunctionNamespaces:["http://www.28msec.com/modules/collections","http://www.28msec.com/modules/store","http://jsoniq.org/functions","http://jsoniq.org/function-library","http://www.w3.org/2001/XMLSchema"],defaultElementNamespace:"",namespaces:f,availableModuleNamespaces:[],importModule:function(e,t,n){if(this!==this.root)throw new Error("Function not invoked from the root static context.");this.addNamespace(e,t,n,"module");if(this.moduleResolver)try{var i=this.moduleResolver(e,[]);i.variables&&r.concat(this.variables,i.variables),i.functions&&r.concat(this.functions,i.functions)}catch(o){throw new s("XQST0059",'module "'+e+'" not found',n)}return this},getAvailableModuleNamespaces:function(){return this.root.availableModuleNamespaces},getPrefixByNamespace:function(e){return this.root.namespaces[e].prefix},addNamespace:function(e,t,n,r){if(t===""&&r==="module")throw new o("W01","Avoid this type of import. Use import module namespace instead",n);if(e==="")throw new s("XQST0088","empty target namespace in module import or module declaration",n);var i=this.getNamespace(e);if(i&&i.type===r&&r!=="declare"&&!i.override)throw new s("XQST0047",'"'+e+'": duplicate target namespace',n);i=this.getNamespaceByPrefix(t);if(i&&!i.override)throw new s("XQST0033",'"'+t+'": namespace prefix already bound to "'+i.uri+'"',n);i=this.namespaces[e],this.namespaces[e]={prefix:t,pos:n,type:r};if(i)throw new o("W02",'"'+e+'" already bound to the "'+i.prefix+'" prefix',n)},getNamespaces:function(){return this.root.namespaces},getNamespace:function(e){var t=this;while(t){var n=t.namespaces[e];if(n)return n;t=t.parent}},getNamespaceByPrefix:function(e){var t=function(t){var r=n.namespaces[t];if(r.prefix===e)throw r.uri=t,r},n=this;while(n){try{Object.keys(n.namespaces).forEach(t)}catch(r){return r}n=n.parent}},resolveQName:function(e,t){var n={uri:"",prefix:"",name:""},r;if(e.substring(0,2)==="Q{")r=e.indexOf("}"),n.uri=e.substring(2,r),n.name=e.substring(r+1);else{r=e.indexOf(":"),n.prefix=e.substring(0,r);var i=this.getNamespaceByPrefix(n.prefix);if(!i&&n.prefix!==""&&["fn","jn"].indexOf(n.prefix)===-1)throw new s("XPST0081",'"'+n.prefix+'": can not expand prefix of lexical QName to namespace URI',t);i&&(n.uri=i.uri),n.name=e.substring(r+1)}return n},variables:{},varRefs:{},functionCalls:{},addVariable:function(e,t,n){if(t!=="VarDecl"||this.moduleNamespace===""||this.moduleNamespace===e.uri||e.uri===""&&this.defaultFunctionNamespace===this.moduleNamespace){var r=l(e);if(t==="VarDecl"&&this.variables[r])throw new s("XQST0049",'"'+e.name+'": duplicate variable declaration',n);return this.variables[r]={type:t,pos:n,qname:e,annotations:{}},this}throw new s("XQST0048",'"'+e.prefix+":"+e.name+'": Qname not library namespace',n)},getVariables:function(){var e={},t=this,n=function(n){e[n]||(e[n]=t.variables[n])};while(t)Object.keys(t.variables).forEach(n),t=t.parent;return e},getVariable:function(e){var t=l(e),n=this;while(n){if(n.variables[t])return n.variables[t];n=n.parent}},addVarRef:function(e,t){var n=this.getVariable(e);if(!n&&(e.uri===""||this.root.moduleResolver))throw new s("XPST0008",'"'+e.name+'": undeclared variable',t);var r=l(e);this.varRefs[r]=!0},addFunctionCall:function(e,t,n){var r=this.getFunction(e,t);if(!(!!r||e.uri!=="http://www.w3.org/2005/xquery-local-functions"&&!this.root.moduleResolver||(e.uri==="http://www.w3.org/2005/xpath-functions"||e.uri===""&&this.root.defaultFunctionNamespaces.concat(this.root.defaultFunctionNamespace).indexOf("http://www.w3.org/2005/xpath-functions")!==-1)&&e.name==="concat")&&!r)throw new s("XPST0008",'"'+e.name+"#"+t+'": undeclared function',n);var i=c(e,t);this.functionCalls[i]=!0},functions:u()["http://www.w3.org/2001/XMLSchema"].functions,getFunctions:function(){return this.root.functions},getFunction:function(e,t){var n=c(e,t),r;if(e.uri===""){var i=this;return this.root.defaultFunctionNamespaces.concat([this.root.defaultFunctionNamespace]).forEach(function(n){if(!!r)return!1;r=i.getFunction({uri:n,prefix:e.prefix,name:e.name},t)}),r}return this.root.functions[n]},addFunction:function(e,t,n){if(this!==this.root)throw new Error("addFunction() not invoked from the root static context.");var r=n.length;if(this.moduleNamespace===""||this.moduleNamespace===e.uri||e.uri===""&&this.defaultFunctionNamespace===this.moduleNamespace){var i=c(e,r);if(this.functions[i])throw new s("XQST0034",'"'+e.name+'": duplicate function declaration',t);return this.functions[i]={pos:t,params:n},this}throw new s("XQST0048",'"'+e.prefix+":"+e.name+'": Qname not library namespace',t)}};return h.root=t?t.root:h,h}},{"../tree_ops":11,"./errors":1,"./schema_built-in_types":3}],5:[function(e,t,n){n.Translator=function(t,n){"use strict";var r=e("./errors"),i=r.StaticError,s=r.StaticWarning,o=e("../tree_ops").TreeOps,u=e("./static_context").StaticContext,a=e("./handlers"),f=function(e,t){var n=[];return t.length===0?e:(e.children.forEach(function(e){e.name===t[0]&&t.length>1?n=f(e,t.slice(1)):e.name===t[0]&&n.push(e)}),n)},l=[];this.apply=function(e){try{e()}catch(t){if(t instanceof i)c(t);else{if(!(t instanceof s))throw t;h(t.getCode(),t.getMessage(),t.getPos())}}};var c=function(e){l.push({pos:e.getPos(),type:"error",level:"error",message:"["+e.getCode()+"] "+e.getMessage()})},h=function(e,t,n){l.push({pos:n,type:"warning",level:"warning",message:"["+e+"] "+t})};this.getMarkers=function(){return l};var p=this;t.pos=n.pos;var d=t,v=function(e){d=new u(d,e),d.parent.children.push(d)},m=function(e){e!==undefined&&(d.pos.el=e.el,d.pos.ec=e.ec),Object.keys(d.varRefs).forEach(function(e){d.variables[e]||(d.parent.varRefs[e]=!0)}),Object.keys(d.variables).forEach(function(e){!d.varRefs[e]&&d.variables[e].type!=="GroupingVariable"&&d.variables[e].type!=="CatchVar"&&h("W03",'Unused variable "$'+d.variables[e].qname.name+'"',d.variables[e].pos)}),d=d.parent};this.visitOnly=function(e,t){e.children.forEach(function(e){t.indexOf(e.name)!==-1&&p.visit(e)})},this.getFirstChild=function(e,t){var n;return e.children.forEach(function(e){e.name===t&&n===undefined&&(n=e)}),n},this.ModuleDecl=function(e){return this.visitChildren(e,a.ModuleDecl(p,t,e)),!0},this.Prolog=function(e){return this.visitOnly(e,["DefaultNamespaceDecl","Setter","NamespaceDecl","Import"]),n.index.forEach(function(e){if(e.name==="VarDecl")e.children.forEach(function(n){n.name==="VarName"&&p.apply(function(){var r=o.flatten(n),i=t.resolveQName(r,n.pos);t.addVariable(i,e.name,n.pos)})});else if(e.name==="FunctionDecl"){var n,r,i=[];e.children.forEach(function(e){e.name==="EQName"?(n=e,r=e.pos):e.name==="ParamList"&&e.children.forEach(function(e){e.name==="Param"&&i.push(o.flatten(e))})}),p.apply(function(){n=o.flatten(n),n=t.resolveQName(n,r),t.addFunction(n,r,i)})}}),this.visitOnly(e,["ContextItemDecl","AnnotatedDecl","OptionDecl"]),!0},this.ModuleImport=function(e){return this.visitChildren(e,a.ModuleImport(p,t,e)),!0},this.SchemaImport=function(e){return this.visitChildren(e,a.SchemaImport(p,t,e)),!0},this.DefaultNamespaceDecl=function(e){return this.visitChildren(e,a.DefaultNamespaceDecl(p,t,e)),!0},this.NamespaceDecl=function(e){return this.visitChildren(e,a.NamespaceDecl(p,t,e)),!0};var g={};this.AnnotatedDecl=function(e){return g={},this.visitChildren(e,a.NamespaceDecl(p,t,e)),!0},this.CompatibilityAnnotation=function(){return g["http://www.w3.org/2012/xquery#updating"]=[],!0},this.Annotation=function(e){return this.visitChildren(e,{EQName:function(e){var t=o.flatten(e);p.apply(function(){var n=d.resolveQName(t,e.pos);g[n.uri+"#"+n.name]=[]})}}),!0},this.VarDecl=function(e){try{var n=p.getFirstChild(e,"VarName"),r=o.flatten(n),i=d.resolveQName(r,n.pos),s=t.getVariable(i);s&&(s.annotations=g)}catch(u){}return this.visitOnly(e,["ExprSingle","VarValue","VarDefaultValue"]),!0},this.FunctionDecl=function(e){var t=g["http://www.w3.org/2012/xquery#updating"]!==undefined,n=f(e,["ReturnType"])[0],r=f(e,["EQName"])[0];!n&&!t&&h("W05","Untyped return value",r.pos);var i=!1;return e.children.forEach(function(e){if(e.name==="TOKEN"&&e.value==="external")return i=!0,!1}),i||(v(e.pos),this.visitChildren(e),m()),!0},this.VarRef=function(e){return this.visitChildren(e,a.VarRefHandler(p,d,e)),!0},this.Param=function(e){var t=f(e,["TypeDeclaration"])[0];return t||h("W05","Untyped function parameter",e.pos),this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.InlineFunctionExpr=function(e){return v(e.pos),this.visitChildren(e),m(),!0};var y=[],b=function(e){v(e.pos),y.push(0),p.visitChildren(e);for(var t=1;t<=y[y.length-1];t++)m(e.pos);y.pop(),m()};this.StatementsAndOptionalExpr=function(e){return b(e),!0},this.StatementsAndExpr=function(e){return b(e),!0},this.BlockStatement=function(e){return b(e),!0},this.VarDeclStatement=function(e){v(e.pos),y[y.length-1]++,this.visitChildren(e,a.VarHandler(p,d,e))};var w=[];this.FLWORExpr=this.FLWORStatement=function(e){v(e.pos),w.push(0),this.visitChildren(e);for(var t=1;t<=w[w.length-1];t++)m(e.pos);return w.pop(),m(),!0},this.ForBinding=function(e){return this.visitOnly(e,["ExprSingle","VarValue","VarDefaultValue"]),v(e.pos),w[w.length-1]++,this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.LetBinding=function(e){return this.visitOnly(e,["ExprSingle","VarValue","VarDefaultValue"]),v(e.pos),w[w.length-1]++,this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.GroupingSpec=function(e){var t=!1;e.children.forEach(function(e){if(e.value===":=")return t=!0,!1});if(t){var n=e.children[0];return this.visitOnly(e,["ExprSingle","VarValue","VarDefaultValue"]),v(e.pos),w[w.length-1]++,this.visitChildren(n,a.VarHandler(p,d,n)),!0}},this.TumblingWindowClause=function(e){return this.visitOnly(e,["ExprSingle"]),v(e.pos),w[w.length-1]++,this.visitChildren(e,a.VarHandler(p,d,e)),this.visitOnly(e,["WindowStartCondition","WindowEndCondition"]),!0},this.WindowVars=function(e){return v(e.pos),w[w.length-1]++,this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.SlidingWindowClause=function(e){return this.visitOnly(e,["ExprSingle","VarValue","VarDefaultValue"]),v(e.pos),w[w.length-1]++,this.visitChildren(e,a.VarHandler(p,d,e)),this.visitOnly(e,["WindowStartCondition","WindowEndCondition"]),!0},this.PositionalVar=function(e){return this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.PositionalVar=function(e){return this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.CurrentItem=function(e){return this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.PreviousItem=function(e){return this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.NextItem=function(e){return this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.CountClause=function(e){return v(e.pos),w[w.length-1]++,this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.CaseClause=function(e){return v(e.pos),this.visitChildren(e,a.VarHandler(p,d,e)),this.visitOnly(e,["ExprSingle"]),m(),!0},this.TransformExpr=function(e){return v(e.pos),this.visitChildren(e),m(),!0},this.TransformSpec=function(e){return this.visitOnly(e,["ExprSingle","VarValue","VarDefaultValue"]),this.visitChildren(e,a.VarHandler(p,d,e)),!0};var E=[];this.QuantifiedExpr=function(e){v(e.pos),E.push(0),this.visitChildren(e);for(var t=1;t<=E[E.length-1];t++)m(e.pos);return E.pop(),m(),!0},this.QuantifiedVarDecl=function(e){return this.visitOnly(e,["ExprSingle"]),v(e.pos),E[E.length-1]++,this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.FunctionCall=function(e){this.visitOnly(e,["ArgumentList"]);var t=p.getFirstChild(e,"EQName"),n=o.flatten(t),r=f(e,["ArgumentList","Argument"]).length;return p.apply(function(){var i=d.resolveQName(n,e.pos);try{i.uri!==""&&(d.root.namespaces[i.uri].used=!0)}catch(s){}d.addFunctionCall(i,r,t.pos)}),!0},this.TryClause=function(e){return v(e.pos),this.visitChildren(e),m(),!0},this.CatchClause=function(e){v(e.pos);var t="err",n="http://www.w3.org/2005/xqt-errors",r={sl:0,sc:0,el:0,ec:0};return d.addVariable({prefix:t,uri:n,name:"code"},"CatchVar",r),d.addVariable({prefix:t,uri:n,name:"description"},"CatchVar",r),d.addVariable({prefix:t,uri:n,name:"value"},"CatchVar",r),d.addVariable({prefix:t,uri:n,name:"module"},"CatchVar",r),d.addVariable({prefix:t,uri:n,name:"line-number"},"CatchVar",r),d.addVariable({prefix:t,uri:n,name:"column-number"},"CatchVar",r),d.addVariable({prefix:t,uri:n,name:"additional"},"CatchVar",r),this.visitChildren(e),m(),!0},this.Pragma=function(e){var n=o.flatten(f(e,["EQName"])[0]);n=t.resolveQName(n,e);var r=o.flatten(f(e,["PragmaContents"])[0]);if(n.name==="xqlint"&&n.uri==="http://xqlint.io"){v(e.pos);var i=r.match(/[a-zA-Z]+\(([^)]+)\)/g);return i.forEach(function(t){var n=t.substring(0,t.indexOf("(")),r=t.substring(0,t.length-1).substring(t.indexOf("(")+1).split(",").map(function(e){return e.trim()});n==="varrefs"&&r.forEach(function(t){var n=d.resolveQName(t.substring(1),e.pos);n.uri!==""&&(d.root.namespaces[n.uri].used=!0),d.addVarRef(n,e.pos)})}),this.visitChildren(e),m(),!0}},this.visit=function(e){var t=e.name,n=!1;typeof this[t]=="function"&&(n=this[t](e)===!0),n||this.visitChildren(e)},this.visitChildren=function(e,t){for(var n=0;n<e.children.length;n++){var r=e.children[n];t!==undefined&&typeof t[r.name]=="function"?t[r.name](r):this.visit(r)}},this.visit(n),Object.keys(t.variables).forEach(function(e){!t.varRefs[e]&&(t.variables[e].annotations["http://www.w3.org/2005/xpath-functions#private"]||t.moduleNamespace==="")&&t.variables[e].pos&&h("W03",'Unused variable "'+t.variables[e].qname.name+'"',t.variables[e].pos)}),Object.keys(t.namespaces).forEach(function(e){var n=t.namespaces[e];n.used===undefined&&!n.override&&n.type==="module"&&h("W04",'Unused module "'+e+'"',n.pos)})}},{"../tree_ops":11,"./errors":1,"./handlers":2,"./static_context":4}],6:[function(e,t,n){"use strict";function s(e,t,n){n=n||i;var r=[];for(var s=t-1;s>=0;s--){if(!n.test(e[s]))break;r.push(e[s])}return r.reverse().join("")}function o(e,t){var n=0,r=e.length-1,i=Math.floor((r+n)/2);while(r>n&&i>=0&&e[i].indexOf(t)!==0)t<e[i]?r=i-1:t>e[i]&&(n=i+1),i=Math.floor((r+n)/2);while(i>0&&e[i-1].indexOf(t)===0)i--;return i>=0?i:0}var r=e("../tree_ops").TreeOps,i=/[a-zA-Z_0-9\$]/,u=/[a-zA-Z_0-9\/\.:\-#]/,a="-._A-Za-z0-9:\u00b7\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02ff\u0300-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd",f="["+a+"]",l="["+a+"\\$]",c=new RegExp(f),h=new RegExp(l),p={LetBinding:"Let binding",Param:"Function parameter",QuantifiedExpr:"Quantified expression binding",VarDeclStatement:"Local variable",ForBinding:"For binding",TumblingWindowClause:"Tumbling window binding",WindowVars:"Window variable",SlidingWindowClause:"Sliding window binding",PositionalVar:"Positional variable",CurrentItem:"Current item",PreviousItem:"Previous item",NextItem:"Next item",CountClause:"Count binding",GroupingVariable:"Grouping variable",VarDecl:"Module variable"},d=function(e,t){t.sort();var n=o(t,e),r=[];for(var i=n;i<t.length&&t[i].indexOf(e)===0;i++)r.push(t[i]);return r},v=function(e,t,n){var r=e.indexOf(":");if(r===-1){var i=[],s=n.getNamespaces();Object.keys(s).forEach(function(e){(s[e].type==="module"||e==="http://www.w3.org/2005/xquery-local-functions")&&i.push(s[e].prefix)});var o=d(e,i),u=function(e){return{name:e+":",value:e+":",meta:"prefix"}};return o.map(u)}return[]},m=function(e,t,n){var r=[],i={},s=n.getFunctions(),o="",u="",a=e,f=e.indexOf(":"),l=!1;if(f!==-1){u=e.substring(0,f),a=e.substring(f+1);var h=n.getNamespaceByPrefix(u);h&&(o=n.getNamespaceByPrefix(u).uri)}else l=!0,o=n.root.defaultFunctionNamespace;Object.keys(s).forEach(function(e){var t=s[e],u=e.substring(0,e.indexOf("#")),a=e.substring(e.indexOf("#")+1);a=a.substring(0,a.indexOf("#"));if(u!==o)return;l||(a=n.getNamespaces()[u].prefix+":"+a),a+="(";var f=a;f+=t.params.map(function(e,t){return"${"+(t+1)+":\\"+e.split(" ")[0]+"}"}).join(", "),a+=t.params.join(", "),a+=")",f+=")",r.push(a),i[a]=f});var p=d(e,r),v=function(e){return{name:e,value:e,meta:"function",priority:4,identifierRegex:c,snippet:i[e]}};return p.map(v)},g=function(e,t,n){var r="",i="",s=e.indexOf(":");s!==-1&&(i=e.substring(0,s),r=n.getNamespaceByPrefix(i).uri);var o=n.getVariables(),u=[],a={};Object.keys(o).forEach(function(e){var t=e.indexOf("#"),r=e.substring(0,t),i=e.substring(t+1);r!==""?(u.push(n.getPrefixByNamespace(r)+":"+i),a[n.getPrefixByNamespace(r)+":"+i]=o[e].type):(u.push(i),a[i]=o[e].type)});var f=d(e,u),l=function(e){return{name:"$"+e,value:"$"+e,meta:p[a[e]],priority:4,identifierRegex:h}};return f.map(l)},y=function(e,t,n){var r=s(e,t.col,c),i=e.substring(0,t.col-(r.length===0?0:r.length)),o=i[i.length-1]==="$";return o?g(r,t,n):r!==""?m(r,t,n).concat(v(r,t,n)):g(r,t,n).concat(m(r,t,n)).concat(v(r,t,n))},b=function(e,t,n){var r=s(e,t.col,u),i=d(r,n.getAvailableModuleNamespaces()),o=function(e){return{name:e,value:e,meta:"module",priority:4,identifierRegex:u}};return i.map(o)};n.complete=function(e,t,n,i){var s=e.split("\n")[i.line],o=r.findNode(t,i),u=r.findNode(n,i);return u=u?u:n,o&&o.name==="URILiteral"&&o.getParent&&o.getParent.name==="ModuleImport"?b(s,i,u):y(s,i,u)}},{"../tree_ops":11}],7:[function(e,t,n){n.StyleChecker=function(e,t){"use strict";var n=" ",r=[];this.getMarkers=function(){return r},this.WS=function(e){var t=e.value.split("\n");return t.forEach(function(i,s){var o=s===0,u=s===t.length-1;/\r$/.test(i)&&r.push({pos:{sl:e.pos.sl+s,el:e.pos.sl+s,sc:i.length-1,ec:i.length},type:"warning",level:"warning",message:"[SW01] Detected CRLF"});var a=i.match(/\t+/);a!==null&&r.push({pos:{sl:e.pos.sl+s,el:e.pos.sl+s,sc:a.index,ec:a.index+a[0].length},type:"warning",level:"warning",message:"[SW02] Tabs detected"});if(!o&&u){a=i.match(/^\ +/);if(a!==null){var f=a[0].length%n.length;f!==0&&r.push({pos:{sl:e.pos.sl+s,el:e.pos.sl+s,sc:a.index,ec:a.index+a[0].length},type:"warning",level:"warning",message:"[SW03] Unexcepted indentation of "+a[0].length})}}}),!0},this.visit=function(e,t){var n=e.name,r=!1;typeof this[n]=="function"&&(r=this[n](e,t)===!0),r||this.visitChildren(e)},this.visitChildren=function(e,t){for(var n=0;n<e.children.length;n++){var r=e.children[n];t!==undefined&&typeof t[r.name]=="function"?t[r.name](r):this.visit(r)}},t.split("\n").forEach(function(e,t){var n=e.match(/\ +$/);n&&r.push({pos:{sl:t,el:t,sc:n.index,ec:n.index+n[0].length},type:"warning",level:"warning",message:"[SW04] Trailing whitespace"})}),this.visit(e)}},{}],8:[function(e,t,n){n.JSONParseTreeHandler=function(e){"use strict";function f(e){return{name:e,children:[],getParent:null,pos:{sl:0,sc:0,el:0,ec:0}}}function l(e){var t=f(e);r===null?(r=t,r.index=[],i=t):(t.getParent=i,i.children.push(t),i=i.children[i.children.length-1])}function c(){if(i.children.length>0){var e=i.children[0],s=null;for(var o=i.children.length-1;o>=0;o--){s=i.children[o];if(s.pos.el!==0||s.pos.ec!==0)break}i.pos.sl=e.pos.sl,i.pos.sc=e.pos.sc,i.pos.el=s.pos.el,i.pos.ec=s.pos.ec}i.name==="FunctionName"&&(i.name="EQName"),i.name==="EQName"&&i.value===undefined&&(i.value=i.children[0].value,i.children.pop()),t.indexOf(i.name)!==-1&&r.index.push(i),i.getParent!==null&&(i=i.getParent);if(i.children.length>0){var u=i.children[i.children.length-1];u.children.length===1&&n.indexOf(u.name)!==-1&&(i.children[i.children.length-1]=u.children[0])}}function h(e,t,n){var r=n-o;i.value=s.substring(0,r),s=s.substring(r),o=n;var f=a,l=u,c=f+i.value.split("\n").length-1,h=i.value.lastIndexOf("\n"),p=h===-1?l+i.value.length:i.value.substring(h+1).length;a=c,u=p,i.pos.sl=f,i.pos.sc=l,i.pos.el=c,i.pos.ec=p}var t=["VarDecl","FunctionDecl"],n=["OrExpr","AndExpr","ComparisonExpr","StringConcatExpr","RangeExpr","UnionExpr","IntersectExceptExpr","InstanceofExpr","TreatExpr","CastableExpr","CastExpr","UnaryExpr","ValueExpr","FTContainsExpr","SimpleMapExpr","PathExpr","RelativePathExpr","PostfixExpr","StepExpr"],r=null,i=null,s=e,o=0,u=0,a=0;this.closeParseTree=function(){while(i.getParent!==null)c();c()},this.peek=function(){return i},this.getParseTree=function(){return r},this.reset=function(){},this.startNonterminal=function(e,t){l(e,t)},this.endNonterminal=function(){c()},this.terminal=function(e,t,n){e=e.substring(0,1)==="'"&&e.substring(e.length-1)==="'"?"TOKEN":e,l(e,t),h(i,t,n),c()},this.whitespace=function(e,t){var n="WS";l(n,e),h(i,e,t),c()}}},{}],9:[function(e,t,n){var r=n.JSONiqParser=function i(e,t){function r(e,t){ic=t,ac=e,fc=e.length,s(0,0,0)}function s(e,t,n){Xl=t,Vl=t,$l=e,Jl=t,Kl=n,Ql=0,cc=n,ec=-1,sc={},ic.reset(ac)}function o(){ic.startNonterminal("Module",Vl);switch($l){case 170:ql(168);break;default:Wl=$l}(Wl==64682||Wl==137898)&&u(),Il(278);switch($l){case 185:ql(146);break;default:Wl=$l}switch(Wl){case 95929:jl(),a();break;default:jl(),Za()}ic.endNonterminal("Module",Vl)}function u(){ic.startNonterminal("VersionDecl",Vl),Pl(170),Il(120);switch($l){case 126:Pl(126),Il(17),Pl(11);break;default:Pl(269),Il(17),Pl(11),Il(113),$l==126&&(Pl(126),Il(17),Pl(11))}Il(29),jl(),c(),ic.endNonterminal("VersionDecl",Vl)}function a(){ic.startNonterminal("LibraryModule",Vl),f(),Il(142),jl(),l(),ic.endNonterminal("LibraryModule",Vl)}function f(){ic.startNonterminal("ModuleDecl",Vl),Pl(185),Il(64),Pl(187),Il(240),jl(),Ga(),Il(30),Pl(61),Il(15),Pl(7),Il(29),jl(),c(),ic.endNonterminal("ModuleDecl",Vl)}function l(){ic.startNonterminal("Prolog",Vl);for(;;){Il(278);switch($l){case 109:ql(207);break;case 155:ql(169);break;default:Wl=$l}if(Wl!=43117&&Wl!=44141&&Wl!=50797&&Wl!=53869&&Wl!=54893&&Wl!=56429&&Wl!=73325&&Wl!=94875&&Wl!=95853&&Wl!=106093&&Wl!=115821&&Wl!=117403)break;switch($l){case 109:ql(201);break;default:Wl=$l}if(Wl==56429){Wl=uc(0,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{_(),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(0,Vl,Wl)}}switch(Wl){case-1:jl(),M();break;case 95853:jl(),O();break;case 155:jl(),C();break;case 73325:jl(),D();break;default:jl(),h()}Il(29),jl(),c()}for(;;){Il(278);switch($l){case 109:ql(202);break;default:Wl=$l}if(Wl!=17005&&Wl!=49261&&Wl!=52333&&Wl!=75373&&Wl!=80493&&Wl!=83565&&Wl!=104045&&Wl!=134765&&Wl!=137325)break;switch($l){case 109:ql(197);break;default:Wl=$l}switch(Wl){case 52333:jl(),R();break;case 104045:jl(),Q();break;default:jl(),P()}Il(29),jl(),c()}ic.endNonterminal("Prolog",Vl)}function c(){ic.startNonterminal("Separator",Vl),Pl(54),ic.endNonterminal("Separator",Vl)}function h(){ic.startNonterminal("Setter",Vl);switch($l){case 109:ql(194);break;default:Wl=$l}if(Wl==56429){Wl=uc(1,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{v(),Wl=-2}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),w(),Wl=-6}catch(f){Wl=-9}}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(1,Vl,Wl)}}switch(Wl){case 44141:p();break;case-2:d();break;case 43117:m();break;case 50797:g();break;case 106093:y();break;case-6:b();break;case 115821:Io();break;case 53869:E();break;default:T()}ic.endNonterminal("Setter",Vl)}function p(){ic.startNonterminal("BoundarySpaceDecl",Vl),Pl(109),Il(36),Pl(86),Il(137);switch($l){case 218:Pl(218);break;default:Pl(246)}ic.endNonterminal("BoundarySpaceDecl",Vl)}function d(){ic.startNonterminal("DefaultCollationDecl",Vl),Pl(109),Il(49),Pl(110),Il(41),Pl(95),Il(15),Pl(7),ic.endNonterminal("DefaultCollationDecl",Vl)}function v(){Hl(109),Il(49),Hl(110),Il(41),Hl(95),Il(15),Hl(7)}function m(){ic.startNonterminal("BaseURIDecl",Vl),Pl(109),Il(35),Pl(84),Il(15),Pl(7),ic.endNonterminal("BaseURIDecl",Vl)}function g(){ic.startNonterminal("ConstructionDecl",Vl),Pl(109),Il(44),Pl(99),Il(137);switch($l){case 246:Pl(246);break;default:Pl(218)}ic.endNonterminal("ConstructionDecl",Vl)}function y(){ic.startNonterminal("OrderingModeDecl",Vl),Pl(109),Il(71),Pl(207),Il(135);switch($l){case 206:Pl(206);break;default:Pl(262)}ic.endNonterminal("OrderingModeDecl",Vl)}function b(){ic.startNonterminal("EmptyOrderDecl",Vl),Pl(109),Il(49),Pl(110),Il(70),Pl(205),Il(52),Pl(124),Il(125);switch($l){case 149:Pl(149);break;default:Pl(176)}ic.endNonterminal("EmptyOrderDecl",Vl)}function w(){Hl(109),Il(49),Hl(110),Il(70),Hl(205),Il(52),Hl(124),Il(125);switch($l){case 149:Hl(149);break;default:Hl(176)}}function E(){ic.startNonterminal("CopyNamespacesDecl",Vl),Pl(109),Il(47),Pl(105),Il(132),jl(),S(),Il(25),Pl(42),Il(127),jl(),x(),ic.endNonterminal("CopyNamespacesDecl",Vl)}function S(){ic.startNonterminal("PreserveMode",Vl);switch($l){case 218:Pl(218);break;default:Pl(193)}ic.endNonterminal("PreserveMode",Vl)}function x(){ic.startNonterminal("InheritMode",Vl);switch($l){case 159:Pl(159);break;default:Pl(192)}ic.endNonterminal("InheritMode",Vl)}function T(){ic.startNonterminal("DecimalFormatDecl",Vl),Pl(109),Il(118);switch($l){case 107:Pl(107),Il(246),jl(),$a();break;default:Pl(110),Il(48),Pl(107)}for(;;){Il(204);if($l==54)break;jl(),N(),Il(30),Pl(61),Il(17),Pl(11)}ic.endNonterminal("DecimalFormatDecl",Vl)}function N(){ic.startNonterminal("DFPropertyName",Vl);switch($l){case 108:Pl(108);break;case 151:Pl(151);break;case 158:Pl(158);break;case 182:Pl(182);break;case 68:Pl(68);break;case 213:Pl(213);break;case 212:Pl(212);break;case 280:Pl(280);break;case 117:Pl(117);break;default:Pl(211)}ic.endNonterminal("DFPropertyName",Vl)}function C(){ic.startNonterminal("Import",Vl);switch($l){case 155:ql(130);break;default:Wl=$l}switch(Wl){case 117403:k();break;default:A()}ic.endNonterminal("Import",Vl)}function k(){ic.startNonterminal("SchemaImport",Vl),Pl(155),Il(76),Pl(229),Il(141),$l!=7&&(jl(),L()),Il(15),Pl(7),Il(112);if($l==82){Pl(82),Il(15),Pl(7);for(;;){Il(107);if($l!=42)break;Pl(42),Il(15),Pl(7)}}ic.endNonterminal("SchemaImport",Vl)}function L(){ic.startNonterminal("SchemaPrefix",Vl);switch($l){case 187:Pl(187),Il(240),jl(),Ga(),Il(30),Pl(61);break;default:Pl(110),Il(50),Pl(122),Il(64),Pl(187)}ic.endNonterminal("SchemaPrefix",Vl)}function A(){ic.startNonterminal("ModuleImport",Vl),Pl(155),Il(63),Pl(185),Il(93),$l==187&&(Pl(187),Il(240),jl(),Ga(),Il(30),Pl(61)),Il(15),Pl(7),Il(112);if($l==82){Pl(82),Il(15),Pl(7);for(;;){Il(107);if($l!=42)break;Pl(42),Il(15),Pl(7)}}ic.endNonterminal("ModuleImport",Vl)}function O(){ic.startNonterminal("NamespaceDecl",Vl),Pl(109),Il(64),Pl(187),Il(240),jl(),Ga(),Il(30),Pl(61),Il(15),Pl(7),ic.endNonterminal("NamespaceDecl",Vl)}function M(){ic.startNonterminal("DefaultNamespaceDecl",Vl),Pl(109),Il(49),Pl(110),Il(119);switch($l){case 122:Pl(122);break;default:Pl(147)}Il(64),Pl(187),Il(15),Pl(7),ic.endNonterminal("DefaultNamespaceDecl",Vl)}function _(){Hl(109),Il(49),Hl(110),Il(119);switch($l){case 122:Hl(122);break;default:Hl(147)}Il(64),Hl(187),Il(15),Hl(7)}function D(){ic.startNonterminal("FTOptionDecl",Vl),Pl(109),Il(55),Pl(143),Il(84),jl(),Qu(),ic.endNonterminal("FTOptionDecl",Vl)}function P(){ic.startNonterminal("AnnotatedDecl",Vl),Pl(109);for(;;){Il(192);if($l!=33&&$l!=263)break;switch($l){case 263:jl(),H();break;default:jl(),B()}}switch($l){case 268:jl(),F();break;case 147:jl(),_l();break;case 96:jl(),Ca();break;case 157:jl(),Ha();break;default:jl(),Ba()}ic.endNonterminal("AnnotatedDecl",Vl)}function H(){ic.startNonterminal("CompatibilityAnnotation",Vl),Pl(263),ic.endNonterminal("CompatibilityAnnotation",Vl)}function B(){ic.startNonterminal("Annotation",Vl),Pl(33),Il(246),jl(),$a(),Il(193);if($l==35){Pl(35),Il(190),jl(),di();for(;;){Il(105);if($l!=42)break;Pl(42),Il(190),jl(),di()}Pl(38)}ic.endNonterminal("Annotation",Vl)}function j(){Hl(33),Il(246),Ja(),Il(193);if($l==35){Hl(35),Il(190),vi();for(;;){Il(105);if($l!=42)break;Hl(42),Il(190),vi()}Hl(38)}}function F(){ic.startNonterminal("VarDecl",Vl),Pl(268),Il(21),Pl(31),Il(246),jl(),Ti(),Il(157),$l==80&&(jl(),Cs()),Il(110);switch($l){case 53:Pl(53),Il(267),jl(),I();break;default:Pl(134),Il(108),$l==53&&(Pl(53),Il(267),jl(),q())}ic.endNonterminal("VarDecl",Vl)}function I(){ic.startNonterminal("VarValue",Vl),Wf(),ic.endNonterminal("VarValue",Vl)}function q(){ic.startNonterminal("VarDefaultValue",Vl),Wf(),ic.endNonterminal("VarDefaultValue",Vl)}function R(){ic.startNonterminal("ContextItemDecl",Vl),Pl(109),Il(46),Pl(102),Il(58),Pl(167),Il(157),$l==80&&(Pl(80),Il(254),jl(),_s()),Il(110);switch($l){case 53:Pl(53),Il(267),jl(),I();break;default:Pl(134),Il(108),$l==53&&(Pl(53),Il(267),jl(),q())}ic.endNonterminal("ContextItemDecl",Vl)}function U(){ic.startNonterminal("ParamList",Vl),W();for(;;){Il(105);if($l!=42)break;Pl(42),Il(21),jl(),W()}ic.endNonterminal("ParamList",Vl)}function z(){X();for(;;){Il(105);if($l!=42)break;Hl(42),Il(21),X()}}function W(){ic.startNonterminal("Param",Vl),Pl(31),Il(246),jl(),$a(),Il(153),$l==80&&(jl(),Cs()),ic.endNonterminal("Param",Vl)}function X(){Hl(31),Il(246),Ja(),Il(153),$l==80&&ks()}function V(){ic.startNonterminal("FunctionBody",Vl),J(),ic.endNonterminal("FunctionBody",Vl)}function $(){K()}function J(){ic.startNonterminal("EnclosedExpr",Vl),Pl(281),Il(267),jl(),G(),Pl(287),ic.endNonterminal("EnclosedExpr",Vl)}function K(){Hl(281),Il(267),Y(),Hl(287)}function Q(){ic.startNonterminal("OptionDecl",Vl),Pl(109),Il(69),Pl(203),Il(246),jl(),$a(),Il(17),Pl(11),ic.endNonterminal("OptionDecl",Vl)}function G(){ic.startNonterminal("Expr",Vl),Wf();for(;;){if($l!=42)break;Pl(42),Il(267),jl(),Wf()}ic.endNonterminal("Expr",Vl)}function Y(){Xf();for(;;){if($l!=42)break;Hl(42),Il(267),Xf()}}function Z(){ic.startNonterminal("FLWORExpr",Vl),tt();for(;;){Il(195);if($l==224)break;jl(),rt()}jl(),rn(),ic.endNonterminal("FLWORExpr",Vl)}function et(){nt();for(;;){Il(195);if($l==224)break;it()}sn()}function tt(){ic.startNonterminal("InitialClause",Vl);switch($l){case 139:ql(151);break;default:Wl=$l}switch(Wl){case 16011:st();break;case 177:vt();break;default:bt()}ic.endNonterminal("InitialClause",Vl)}function nt(){switch($l){case 139:ql(151);break;default:Wl=$l}switch(Wl){case 16011:ot();break;case 177:mt();break;default:wt()}}function rt(){ic.startNonterminal("IntermediateClause",Vl);switch($l){case 139:case 177:tt();break;case 272:It();break;case 150:Rt();break;case 106:jt();break;default:Kt()}ic.endNonterminal("IntermediateClause",Vl)}function it(){switch($l){case 139:case 177:nt();break;case 272:qt();break;case 150:Ut();break;case 106:Ft();break;default:Qt()}}function st(){ic.startNonterminal("ForClause",Vl),Pl(139),Il(21),jl(),ut();for(;;){if($l!=42)break;Pl(42),Il(21),jl(),ut()}ic.endNonterminal("ForClause",Vl)}function ot(){Hl(139),Il(21),at();for(;;){if($l!=42)break;Hl(42),Il(21),at()}}function ut(){ic.startNonterminal("ForBinding",Vl),Pl(31),Il(246),jl(),Ti(),Il(182),$l==80&&(jl(),Cs()),Il(173),$l==73&&(jl(),ft()),Il(160),$l==82&&(jl(),ct()),Il(126),$l==232&&(jl(),pt()),Il(56),Pl(156),Il(267),jl(),Wf(),ic.endNonterminal("ForBinding",Vl)}function at(){Hl(31),Il(246),Ni(),Il(182),$l==80&&ks(),Il(173),$l==73&&lt(),Il(160),$l==82&&ht(),Il(126),$l==232&&dt(),Il(56),Hl(156),Il(267),Xf()}function ft(){ic.startNonterminal("AllowingEmpty",Vl),Pl(73),Il(52),Pl(124),ic.endNonterminal("AllowingEmpty",Vl)}function lt(){Hl(73),Il(52),Hl(124)}function ct(){ic.startNonterminal("PositionalVar",Vl),Pl(82),Il(21),Pl(31),Il(246),jl(),Ti(),ic.endNonterminal("PositionalVar",Vl)}function ht(){Hl(82),Il(21),Hl(31),Il(246),Ni()}function pt(){ic.startNonterminal("FTScoreVar",Vl),Pl(232),Il(21),Pl(31),Il(246),jl(),Ti(),ic.endNonterminal("FTScoreVar",Vl)}function dt(){Hl(232),Il(21),Hl(31),Il(246),Ni()}function vt(){ic.startNonterminal("LetClause",Vl),Pl(177),Il(100),jl(),gt();for(;;){if($l!=42)break;Pl(42),Il(100),jl(),gt()}ic.endNonterminal("LetClause",Vl)}function mt(){Hl(177),Il(100),yt();for(;;){if($l!=42)break;Hl(42),Il(100),yt()}}function gt(){ic.startNonterminal("LetBinding",Vl);switch($l){case 31:Pl(31),Il(246),jl(),Ti(),Il(109),$l==80&&(jl(),Cs());break;default:pt()}Il(28),Pl(53),Il(267),jl(),Wf(),ic.endNonterminal("LetBinding",Vl)}function yt(){switch($l){case 31:Hl(31),Il(246),Ni(),Il(109),$l==80&&ks();break;default:dt()}Il(28),Hl(53),Il(267),Xf()}function bt(){ic.startNonterminal("WindowClause",Vl),Pl(139),Il(139);switch($l){case 257:jl(),Et();break;default:jl(),xt()}ic.endNonterminal("WindowClause",Vl)}function wt(){Hl(139),Il(139);switch($l){case 257:St();break;default:Tt()}}function Et(){ic.startNonterminal("TumblingWindowClause",Vl),Pl(257),Il(88),Pl(275),Il(21),Pl(31),Il(246),jl(),Ti(),Il(114),$l==80&&(jl(),Cs()),Il(56),Pl(156),Il(267),jl(),Wf(),jl(),Nt();if($l==127||$l==202)jl(),kt();ic.endNonterminal("TumblingWindowClause",Vl)}function St(){Hl(257),Il(88),Hl(275),Il(21),Hl(31),Il(246),Ni(),Il(114),$l==80&&ks(),Il(56),Hl(156),Il(267),Xf(),Ct(),($l==127||$l==202)&&Lt()}function xt(){ic.startNonterminal("SlidingWindowClause",Vl),Pl(239),Il(88),Pl(275),Il(21),Pl(31),Il(246),jl(),Ti(),Il(114),$l==80&&(jl(),Cs()),Il(56),Pl(156),Il(267),jl(),Wf(),jl(),Nt(),jl(),kt(),ic.endNonterminal("SlidingWindowClause",Vl)}function Tt(){Hl(239),Il(88),Hl(275),Il(21),Hl(31),Il(246),Ni(),Il(114),$l==80&&ks(),Il(56),Hl(156),Il(267),Xf(),Ct(),Lt()}function Nt(){ic.startNonterminal("WindowStartCondition",Vl),Pl(242),Il(181),jl(),At(),Il(86),Pl(271),Il(267),jl(),Wf(),ic.endNonterminal("WindowStartCondition",Vl)}function Ct(){Hl(242),Il(181),Ot(),Il(86),Hl(271),Il(267),Xf()}function kt(){ic.startNonterminal("WindowEndCondition",Vl),$l==202&&Pl(202),Il(53),Pl(127),Il(181),jl(),At(),Il(86),Pl(271),Il(267),jl(),Wf(),ic.endNonterminal("WindowEndCondition",Vl)}function Lt(){$l==202&&Hl(202),Il(53),Hl(127),Il(181),Ot(),Il(86),Hl(271),Il(267),Xf()}function At(){ic.startNonterminal("WindowVars",Vl),$l==31&&(Pl(31),Il(246),jl(),Mt()),Il(174),$l==82&&(jl(),ct()),Il(163),$l==219&&(Pl(219),Il(21),Pl(31),Il(246),jl(),Dt()),Il(131),$l==190&&(Pl(190),Il(21),Pl(31),Il(246),jl(),Ht()),ic.endNonterminal("WindowVars",Vl)}function Ot(){$l==31&&(Hl(31),Il(246),_t()),Il(174),$l==82&&ht(),Il(163),$l==219&&(Hl(219),Il(21),Hl(31),Il(246),Pt()),Il(131),$l==190&&(Hl(190),Il(21),Hl(31),Il(246),Bt())}function Mt(){ic.startNonterminal("CurrentItem",Vl),$a(),ic.endNonterminal("CurrentItem",Vl)}function _t(){Ja()}function Dt(){ic.startNonterminal("PreviousItem",Vl),$a(),ic.endNonterminal("PreviousItem",Vl)}function Pt(){Ja()}function Ht(){ic.startNonterminal("NextItem",Vl),$a(),ic.endNonterminal("NextItem",Vl)}function Bt(){Ja()}function jt(){ic.startNonterminal("CountClause",Vl),Pl(106),Il(21),Pl(31),Il(246),jl(),Ti(),ic.endNonterminal("CountClause",Vl)}function Ft(){Hl(106),Il(21),Hl(31),Il(246),Ni()}function It(){ic.startNonterminal("WhereClause",Vl),Pl(272),Il(267),jl(),Wf(),ic.endNonterminal("WhereClause",Vl)}function qt(){Hl(272),Il(267),Xf()}function Rt(){ic.startNonterminal("GroupByClause",Vl),Pl(150),Il(37),Pl(88),Il(267),jl(),zt(),ic.endNonterminal("GroupByClause",Vl)}function Ut(){Hl(150),Il(37),Hl(88),Il(267),Wt()}function zt(){ic.startNonterminal("GroupingSpecList",Vl),Xt();for(;;){Il(198);if($l!=42)break;Pl(42),Il(267),jl(),Xt()}ic.endNonterminal("GroupingSpecList",Vl)}function Wt(){Vt();for(;;){Il(198);if($l!=42)break;Hl(42),Il(267),Vt()}}function Xt(){ic.startNonterminal("GroupingSpec",Vl);switch($l){case 31:ql(246);break;default:Wl=$l}if(Wl==3103||Wl==36383||Wl==37407||Wl==37919||Wl==38431||Wl==38943||Wl==39967||Wl==40479||Wl==40991||Wl==41503||Wl==42015||Wl==42527||Wl==43039||Wl==43551||Wl==44063||Wl==44575||Wl==45599||Wl==46111||Wl==46623||Wl==47135||Wl==48159||Wl==48671||Wl==49695||Wl==50207||Wl==50719||Wl==52255||Wl==52767||Wl==53279||Wl==53791||Wl==54303||Wl==54815||Wl==55839||Wl==56351||Wl==56863||Wl==57375||Wl==57887||Wl==58399||Wl==60959||Wl==61471||Wl==61983||Wl==62495||Wl==63007||Wl==63519||Wl==64031||Wl==64543||Wl==65055||Wl==66079||Wl==66591||Wl==67615||Wl==68127||Wl==68639||Wl==69151||Wl==69663||Wl==70175||Wl==70687||Wl==71199||Wl==72735||Wl==73247||Wl==75295||Wl==75807||Wl==76831||Wl==77855||Wl==78367||Wl==78879||Wl==79391||Wl==79903||Wl==80415||Wl==82463||Wl==82975||Wl==83487||Wl==83999||Wl==84511||Wl==85023||Wl==85535||Wl==86047||Wl==86559||Wl==87071||Wl==88607||Wl==89119||Wl==89631||Wl==90655||Wl==91679||Wl==92703||Wl==93727||Wl==94239||Wl==94751||Wl==95775||Wl==96287||Wl==96799||Wl==99359||Wl==99871||Wl==100895||Wl==101407||Wl==103455||Wl==103967||Wl==104479||Wl==104991||Wl==105503||Wl==106015||Wl==107551||Wl==110623||Wl==111135||Wl==112671||Wl==113695||Wl==114207||Wl==114719||Wl==115231||Wl==115743||Wl==116767||Wl==117279||Wl==117791||Wl==118303||Wl==118815||Wl==119327||Wl==119839||Wl==122399||Wl==122911||Wl==123423||Wl==123935||Wl==125471||Wl==126495||Wl==127007||Wl==127519||Wl==129567||Wl==130079||Wl==130591||Wl==131103||Wl==131615||Wl==132127||Wl==132639||Wl==133151||Wl==134175||Wl==134687||Wl==136223||Wl==136735||Wl==137247||Wl==137759||Wl==139295||Wl==139807||Wl==141343){Wl=uc(2,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Jt(),Il(206);if($l==53||$l==80)$l==80&&ks(),Il(28),Hl(53),Il(267),Xf();$l==95&&(Hl(95),Il(15),Hl(7)),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(2,Vl,Wl)}}switch(Wl){case-1:$t(),Il(206);if($l==53||$l==80)$l==80&&(jl(),Cs()),Il(28),Pl(53),Il(267),jl(),Wf();$l==95&&(Pl(95),Il(15),Pl(7));break;default:Wf()}ic.endNonterminal("GroupingSpec",Vl)}function Vt(){switch($l){case 31:ql(246);break;default:Wl=$l}if(Wl==3103||Wl==36383||Wl==37407||Wl==37919||Wl==38431||Wl==38943||Wl==39967||Wl==40479||Wl==40991||Wl==41503||Wl==42015||Wl==42527||Wl==43039||Wl==43551||Wl==44063||Wl==44575||Wl==45599||Wl==46111||Wl==46623||Wl==47135||Wl==48159||Wl==48671||Wl==49695||Wl==50207||Wl==50719||Wl==52255||Wl==52767||Wl==53279||Wl==53791||Wl==54303||Wl==54815||Wl==55839||Wl==56351||Wl==56863||Wl==57375||Wl==57887||Wl==58399||Wl==60959||Wl==61471||Wl==61983||Wl==62495||Wl==63007||Wl==63519||Wl==64031||Wl==64543||Wl==65055||Wl==66079||Wl==66591||Wl==67615||Wl==68127||Wl==68639||Wl==69151||Wl==69663||Wl==70175||Wl==70687||Wl==71199||Wl==72735||Wl==73247||Wl==75295||Wl==75807||Wl==76831||Wl==77855||Wl==78367||Wl==78879||Wl==79391||Wl==79903||Wl==80415||Wl==82463||Wl==82975||Wl==83487||Wl==83999||Wl==84511||Wl==85023||Wl==85535||Wl==86047||Wl==86559||Wl==87071||Wl==88607||Wl==89119||Wl==89631||Wl==90655||Wl==91679||Wl==92703||Wl==93727||Wl==94239||Wl==94751||Wl==95775||Wl==96287||Wl==96799||Wl==99359||Wl==99871||Wl==100895||Wl==101407||Wl==103455||Wl==103967||Wl==104479||Wl==104991||Wl==105503||Wl==106015||Wl==107551||Wl==110623||Wl==111135||Wl==112671||Wl==113695||Wl==114207||Wl==114719||Wl==115231||Wl==115743||Wl==116767||Wl==117279||Wl==117791||Wl==118303||Wl==118815||Wl==119327||Wl==119839||Wl==122399||Wl==122911||Wl==123423||Wl==123935||Wl==125471||Wl==126495||Wl==127007||Wl==127519||Wl==129567||Wl==130079||Wl==130591||Wl==131103||Wl==131615||Wl==132127||Wl==132639||Wl==133151||Wl==134175||Wl==134687||Wl==136223||Wl==136735||Wl==137247||Wl==137759||Wl==139295||Wl==139807||Wl==141343){Wl=uc(2,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Jt(),Il(206);if($l==53||$l==80)$l==80&&ks(),Il(28),Hl(53),Il(267),Xf();$l==95&&(Hl(95),Il(15),Hl(7)),oc(2,t,-1),Wl=-3}catch(a){Wl=-2,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(2,t,-2)}}}switch(Wl){case-1:Jt(),Il(206);if($l==53||$l==80)$l==80&&ks(),Il(28),Hl(53),Il(267),Xf();$l==95&&(Hl(95),Il(15),Hl(7));break;case-3:break;default:Xf()}}function $t(){ic.startNonterminal("GroupingVariable",Vl),Pl(31),Il(246),jl(),Ti(),ic.endNonterminal("GroupingVariable",Vl)}function Jt(){Hl(31),Il(246),Ni()}function Kt(){ic.startNonterminal("OrderByClause",Vl);switch($l){case 205:Pl(205),Il(37),Pl(88);break;default:Pl(241),Il(70),Pl(205),Il(37),Pl(88)}Il(267),jl(),Gt(),ic.endNonterminal("OrderByClause",Vl)}function Qt(){switch($l){case 205:Hl(205),Il(37),Hl(88);break;default:Hl(241),Il(70),Hl(205),Il(37),Hl(88)}Il(267),Yt()}function Gt(){ic.startNonterminal("OrderSpecList",Vl),Zt();for(;;){Il(198);if($l!=42)break;Pl(42),Il(267),jl(),Zt()}ic.endNonterminal("OrderSpecList",Vl)}function Yt(){en();for(;;){Il(198);if($l!=42)break;Hl(42),Il(267),en()}}function Zt(){ic.startNonterminal("OrderSpec",Vl),Wf(),jl(),tn(),ic.endNonterminal("OrderSpec",Vl)}function en(){Xf(),nn()}function tn(){ic.startNonterminal("OrderModifier",Vl);if($l==81||$l==114)switch($l){case 81:Pl(81);break;default:Pl(114)}Il(203);if($l==124){Pl(124),Il(125);switch($l){case 149:Pl(149);break;default:Pl(176)}}Il(199),$l==95&&(Pl(95),Il(15),Pl(7)),ic.endNonterminal("OrderModifier",Vl)}function nn(){if($l==81||$l==114)switch($l){case 81:Hl(81);break;default:Hl(114)}Il(203);if($l==124){Hl(124),Il(125);switch($l){case 149:Hl(149);break;default:Hl(176)}}Il(199),$l==95&&(Hl(95),Il(15),Hl(7))}function rn(){ic.startNonterminal("ReturnClause",Vl),Pl(224),Il(267),jl(),Wf(),ic.endNonterminal("ReturnClause",Vl)}function sn(){Hl(224),Il(267),Xf()}function on(){ic.startNonterminal("QuantifiedExpr",Vl);switch($l){case 240:Pl(240);break;default:Pl(130)}Il(21),jl(),an();for(;;){if($l!=42)break;Pl(42),Il(21),jl(),an()}Pl(228),Il(267),jl(),Wf(),ic.endNonterminal("QuantifiedExpr",Vl)}function un(){switch($l){case 240:Hl(240);break;default:Hl(130)}Il(21),fn();for(;;){if($l!=42)break;Hl(42),Il(21),fn()}Hl(228),Il(267),Xf()}function an(){ic.startNonterminal("QuantifiedVarDecl",Vl),Pl(31),Il(246),jl(),Ti(),Il(114),$l==80&&(jl(),Cs()),Il(56),Pl(156),Il(267),jl(),Wf(),ic.endNonterminal("QuantifiedVarDecl",Vl)}function fn(){Hl(31),Il(246),Ni(),Il(114),$l==80&&ks(),Il(56),Hl(156),Il(267),Xf()}function ln(){ic.startNonterminal("SwitchExpr",Vl),Pl(248),Il(22),Pl(35),Il(267),jl(),G(),Pl(38);for(;;){Il(38),jl(),hn();if($l!=89)break}Pl(110),Il(73),Pl(224),Il(267),jl(),Wf(),ic.endNonterminal("SwitchExpr",Vl)}function cn(){Hl(248),Il(22),Hl(35),Il(267),Y(),Hl(38);for(;;){Il(38),pn();if($l!=89)break}Hl(110),Il(73),Hl(224),Il(267),Xf()}function hn(){ic.startNonterminal("SwitchCaseClause",Vl);for(;;){Pl(89),Il(267),jl(),dn();if($l!=89)break}Pl(224),Il(267),jl(),Wf(),ic.endNonterminal("SwitchCaseClause",Vl)}function pn(){for(;;){Hl(89),Il(267),vn();if($l!=89)break}Hl(224),Il(267),Xf()}function dn(){ic.startNonterminal("SwitchCaseOperand",Vl),Wf(),ic.endNonterminal("SwitchCaseOperand",Vl)}function vn(){Xf()}function mn(){ic.startNonterminal("TypeswitchExpr",Vl),Pl(259),Il(22),Pl(35),Il(267),jl(),G(),Pl(38);for(;;){Il(38),jl(),yn();if($l!=89)break}Pl(110),Il(99),$l==31&&(Pl(31),Il(246),jl(),Ti()),Il(73),Pl(224),Il(267),jl(),Wf(),ic.endNonterminal("TypeswitchExpr",Vl)}function gn(){Hl(259),Il(22),Hl(35),Il(267),Y(),Hl(38);for(;;){Il(38),bn();if($l!=89)break}Hl(110),Il(99),$l==31&&(Hl(31),Il(246),Ni()),Il(73),Hl(224),Il(267),Xf()}function yn(){ic.startNonterminal("CaseClause",Vl),Pl(89),Il(258),$l==31&&(Pl(31),Il(246),jl(),Ti(),Il(33),Pl(80)),Il(254),jl(),wn(),Pl(224),Il(267),jl(),Wf(),ic.endNonterminal("CaseClause",Vl)}function bn(){Hl(89),Il(258),$l==31&&(Hl(31),Il(246),Ni(),Il(33),Hl(80)),Il(254),En(),Hl(224),Il(267),Xf()}function wn(){ic.startNonterminal("SequenceTypeUnion",Vl),Ls();for(;;){Il(138);if($l!=284)break;Pl(284),Il(254),jl(),Ls()}ic.endNonterminal("SequenceTypeUnion",Vl)}function En(){As();for(;;){Il(138);if($l!=284)break;Hl(284),Il(254),As()}}function Sn(){ic.startNonterminal("IfExpr",Vl),Pl(154),Il(22),Pl(35),Il(267),jl(),G(),Pl(38),Il(80),Pl(250),Il(267),jl(),Wf(),Pl(123),Il(267),jl(),Wf(),ic.endNonterminal("IfExpr",Vl)}function xn(){Hl(154),Il(22),Hl(35),Il(267),Y(),Hl(38),Il(80),Hl(250),Il(267),Xf(),Hl(123),Il(267),Xf()}function Tn(){ic.startNonterminal("TryCatchExpr",Vl),Cn();for(;;){Il(39),jl(),On(),Il(208);if($l!=92)break}ic.endNonterminal("TryCatchExpr",Vl)}function Nn(){kn();for(;;){Il(39),Mn(),Il(208);if($l!=92)break}}function Cn(){ic.startNonterminal("TryClause",Vl),Pl(256),Il(90),Pl(281),Il(267),jl(),Ln(),Pl(287),ic.endNonterminal("TryClause",Vl)}function kn(){Hl(256),Il(90),Hl(281),Il(267),An(),Hl(287)}function Ln(){ic.startNonterminal("TryTargetExpr",Vl),G(),ic.endNonterminal("TryTargetExpr",Vl)}function An(){Y()}function On(){ic.startNonterminal("CatchClause",Vl),Pl(92),Il(249),jl(),_n(),Pl(281),Il(267),jl(),G(),Pl(287),ic.endNonterminal("CatchClause",Vl)}function Mn(){Hl(92),Il(249),Dn(),Hl(281),Il(267),Y(),Hl(287)}function _n(){ic.startNonterminal("CatchErrorList",Vl),Yr();for(;;){Il(140);if($l!=284)break;Pl(284),Il(249),jl(),Yr()}ic.endNonterminal("CatchErrorList",Vl)}function Dn(){Zr();for(;;){Il(140);if($l!=284)break;Hl(284),Il(249),Zr()}}function Pn(){ic.startNonterminal("OrExpr",Vl),Bn();for(;;){if($l!=204)break;Pl(204),Il(267),jl(),Bn()}ic.endNonterminal("OrExpr",Vl)}function Hn(){jn();for(;;){if($l!=204)break;Hl(204),Il(267),jn()}}function Bn(){ic.startNonterminal("AndExpr",Vl),Fn();for(;;){if($l!=76)break;Pl(76),Il(267),jl(),Fn()}ic.endNonterminal("AndExpr",Vl)}function jn(){In();for(;;){if($l!=76)break;Hl(76),Il(267),In()}}function Fn(){ic.startNonterminal("NotExpr",Vl),$l==196&&Pl(196),Il(266),jl(),qn(),ic.endNonterminal("NotExpr",Vl)}function In(){$l==196&&Hl(196),Il(266),Rn()}function qn(){ic.startNonterminal("ComparisonExpr",Vl),Un();if($l==27||$l==55||$l==58||$l==59||$l==61||$l==62||$l==63||$l==64||$l==129||$l==148||$l==152||$l==166||$l==175||$l==181||$l==189){switch($l){case 129:case 148:case 152:case 175:case 181:case 189:jl(),yr();break;case 58:case 64:case 166:jl(),wr();break;default:jl(),mr()}Il(266),jl(),Un()}ic.endNonterminal("ComparisonExpr",Vl)}function Rn(){zn();if($l==27||$l==55||$l==58||$l==59||$l==61||$l==62||$l==63||$l==64||$l==129||$l==148||$l==152||$l==166||$l==175||$l==181||$l==189){switch($l){case 129:case 148:case 152:case 175:case 181:case 189:br();break;case 58:case 64:case 166:Er();break;default:gr()}Il(266),zn()}}function Un(){ic.startNonterminal("FTContainsExpr",Vl),Wn(),$l==100&&(Pl(100),Il(79),Pl(249),Il(177),jl(),ou(),$l==277&&(jl(),Ta())),ic.endNonterminal("FTContainsExpr",Vl)}function zn(){Xn(),$l==100&&(Hl(100),Il(79),Hl(249),Il(177),uu(),$l==277&&Na())}function Wn(){ic.startNonterminal("StringConcatExpr",Vl),Vn();for(;;){if($l!=285)break;Pl(285),Il(266),jl(),Vn()}ic.endNonterminal("StringConcatExpr",Vl)}function Xn(){$n();for(;;){if($l!=285)break;Hl(285),Il(266),$n()}}function Vn(){ic.startNonterminal("RangeExpr",Vl),Jn(),$l==253&&(Pl(253),Il(266),jl(),Jn()),ic.endNonterminal("RangeExpr",Vl)}function $n(){Kn(),$l==253&&(Hl(253),Il(266),Kn())}function Jn(){ic.startNonterminal("AdditiveExpr",Vl),Qn();for(;;){if($l!=41&&$l!=43)break;switch($l){case 41:Pl(41);break;default:Pl(43)}Il(266),jl(),Qn()}ic.endNonterminal("AdditiveExpr",Vl)}function Kn(){Gn();for(;;){if($l!=41&&$l!=43)break;switch($l){case 41:Hl(41);break;default:Hl(43)}Il(266),Gn()}}function Qn(){ic.startNonterminal("MultiplicativeExpr",Vl),Yn();for(;;){if($l!=39&&$l!=119&&$l!=153&&$l!=183)break;switch($l){case 39:Pl(39);break;case 119:Pl(119);break;case 153:Pl(153);break;default:Pl(183)}Il(266),jl(),Yn()}ic.endNonterminal("MultiplicativeExpr",Vl)}function Gn(){Zn();for(;;){if($l!=39&&$l!=119&&$l!=153&&$l!=183)break;switch($l){case 39:Hl(39);break;case 119:Hl(119);break;case 153:Hl(153);break;default:Hl(183)}Il(266),Zn()}}function Yn(){ic.startNonterminal("UnionExpr",Vl),er();for(;;){if($l!=260&&$l!=284)break;switch($l){case 260:Pl(260);break;default:Pl(284)}Il(266),jl(),er()}ic.endNonterminal("UnionExpr",Vl)}function Zn(){tr();for(;;){if($l!=260&&$l!=284)break;switch($l){case 260:Hl(260);break;default:Hl(284)}Il(266),tr()}}function er(){ic.startNonterminal("IntersectExceptExpr",Vl),nr();for(;;){Il(222);if($l!=132&&$l!=164)break;switch($l){case 164:Pl(164);break;default:Pl(132)}Il(266),jl(),nr()}ic.endNonterminal("IntersectExceptExpr",Vl)}function tr(){rr();for(;;){Il(222);if($l!=132&&$l!=164)break;switch($l){case 164:Hl(164);break;default:Hl(132)}Il(266),rr()}}function nr(){ic.startNonterminal("InstanceofExpr",Vl),ir(),Il(223),$l==162&&(Pl(162),Il(67),Pl(200),Il(254),jl(),Ls()),ic.endNonterminal("InstanceofExpr",Vl)}function rr(){sr(),Il(223),$l==162&&(Hl(162),Il(67),Hl(200),Il(254),As())}function ir(){ic.startNonterminal("TreatExpr",Vl),or(),Il(224),$l==254&&(Pl(254),Il(33),Pl(80),Il(254),jl(),Ls()),ic.endNonterminal("TreatExpr",Vl)}function sr(){ur(),Il(224),$l==254&&(Hl(254),Il(33),Hl(80),Il(254),As())}function or(){ic.startNonterminal("CastableExpr",Vl),ar(),Il(225),$l==91&&(Pl(91),Il(33),Pl(80),Il(246),jl(),Ts()),ic.endNonterminal("CastableExpr",Vl)}function ur(){fr(),Il(225),$l==91&&(Hl(91),Il(33),Hl(80),Il(246),Ns())}function ar(){ic.startNonterminal("CastExpr",Vl),lr(),Il(227),$l==90&&(Pl(90),Il(33),Pl(80),Il(246),jl(),Ts()),ic.endNonterminal("CastExpr",Vl)}function fr(){cr(),Il(227),$l==90&&(Hl(90),Il(33),Hl(80),Il(246),Ns())}function lr(){ic.startNonterminal("UnaryExpr",Vl);for(;;){Il(266);if($l!=41&&$l!=43)break;switch($l){case 43:Pl(43);break;default:Pl(41)}}jl(),hr(),ic.endNonterminal("UnaryExpr",Vl)}function cr(){for(;;){Il(266);if($l!=41&&$l!=43)break;switch($l){case 43:Hl(43);break;default:Hl(41)}}pr()}function hr(){ic.startNonterminal("ValueExpr",Vl);switch($l){case 266:ql(188);break;default:Wl=$l}switch(Wl){case 89354:case 125706:case 132362:case 144138:Sr();break;case 36:Cr();break;default:dr()}ic.endNonterminal("ValueExpr",Vl)}function pr(){switch($l){case 266:ql(188);break;default:Wl=$l}switch(Wl){case 89354:case 125706:case 132362:case 144138:xr();break;case 36:kr();break;default:vr()}}function dr(){ic.startNonterminal("SimpleMapExpr",Vl),Or();for(;;){if($l!=26)break;Pl(26),Il(263),jl(),Or()}ic.endNonterminal("SimpleMapExpr",Vl)}function vr(){Mr();for(;;){if($l!=26)break;Hl(26),Il(263),Mr()}}function mr(){ic.startNonterminal("GeneralComp",Vl);switch($l){case 61:Pl(61);break;case 27:Pl(27);break;case 55:Pl(55);break;case 59:Pl(59);break;case 62:Pl(62);break;default:Pl(63)}ic.endNonterminal("GeneralComp",Vl)}function gr(){switch($l){case 61:Hl(61);break;case 27:Hl(27);break;case 55:Hl(55);break;case 59:Hl(59);break;case 62:Hl(62);break;default:Hl(63)}}function yr(){ic.startNonterminal("ValueComp",Vl);switch($l){case 129:Pl(129);break;case 189:Pl(189);break;case 181:Pl(181);break;case 175:Pl(175);break;case 152:Pl(152);break;default:Pl(148)}ic.endNonterminal("ValueComp",Vl)}function br(){switch($l){case 129:Hl(129);break;case 189:Hl(189);break;case 181:Hl(181);break;case 175:Hl(175);break;case 152:Hl(152);break;default:Hl(148)}}function wr(){ic.startNonterminal("NodeComp",Vl);switch($l){case 166:Pl(166);break;case 58:Pl(58);break;default:Pl(64)}ic.endNonterminal("NodeComp",Vl)}function Er(){switch($l){case 166:Hl(166);break;case 58:Hl(58);break;default:Hl(64)}}function Sr(){ic.startNonterminal("ValidateExpr",Vl),Pl(266),Il(175);if($l!=281)switch($l){case 258:Pl(258),Il(246),jl(),Ao();break;default:jl(),Tr()}Il(90),Pl(281),Il(267),jl(),G(),Pl(287),ic.endNonterminal("ValidateExpr",Vl)}function xr(){Hl(266),Il(175);if($l!=281)switch($l){case 258:Hl(258),Il(246),Oo();break;default:Nr()}Il(90),Hl(281),Il(267),Y(),Hl(287)}function Tr(){ic.startNonterminal("ValidationMode",Vl);switch($l){case 174:Pl(174);break;default:Pl(245)}ic.endNonterminal("ValidationMode",Vl)}function Nr(){switch($l){case 174:Hl(174);break;default:Hl(245)}}function Cr(){ic.startNonterminal("ExtensionExpr",Vl);for(;;){jl(),Lr(),Il(104);if($l!=36)break}Pl(281),Il(275),$l!=287&&(jl(),G()),Pl(287),ic.endNonterminal("ExtensionExpr",Vl)}function kr(){for(;;){Ar(),Il(104);if($l!=36)break}Hl(281),Il(275),$l!=287&&Y(),Hl(287)}function Lr(){ic.startNonterminal("Pragma",Vl),Pl(36),Rl(243),$l==21&&Pl(21),$a(),Rl(10),$l==21&&(Pl(21),Rl(0),Pl(1)),Rl(5),Pl(30),ic.endNonterminal("Pragma",Vl)}function Ar(){Hl(36),Rl(243),$l==21&&Hl(21),Ja(),Rl(10),$l==21&&(Hl(21),Rl(0),Hl(1)),Rl(5),Hl(30)}function Or(){ic.startNonterminal("PathExpr",Vl);switch($l){case 47:Pl(47),Il(289);switch($l){case 25:case 26:case 27:case 38:case 39:case 41:case 42:case 43:case 50:case 54:case 58:case 59:case 61:case 62:case 63:case 64:case 70:case 88:case 100:case 209:case 237:case 252:case 279:case 284:case 285:case 286:case 287:break;default:jl(),_r()}break;case 48:Pl(48),Il(260),jl(),_r();break;default:_r()}ic.endNonterminal("PathExpr",Vl)}function Mr(){switch($l){case 47:Hl(47),Il(289);switch($l){case 25:case 26:case 27:case 38:case 39:case 41:case 42:case 43:case 50:case 54:case 58:case 59:case 61:case 62:case 63:case 64:case 70:case 88:case 100:case 209:case 237:case 252:case 279:case 284:case 285:case 286:case 287:break;default:Dr()}break;case 48:Hl(48),Il(260),Dr();break;default:Dr()}}function _r(){ic.startNonterminal("RelativePathExpr",Vl),ei();for(;;){switch($l){case 26:ql(265);break;default:Wl=$l}if(Wl!=25&&Wl!=27&&Wl!=38&&Wl!=39&&Wl!=41&&Wl!=42&&Wl!=43&&Wl!=47&&Wl!=48&&Wl!=50&&Wl!=54&&Wl!=55&&Wl!=58&&Wl!=59&&Wl!=61&&Wl!=62&&Wl!=63&&Wl!=64&&Wl!=70&&Wl!=71&&Wl!=76&&Wl!=80&&Wl!=81&&Wl!=82&&Wl!=85&&Wl!=88&&Wl!=89&&Wl!=90&&Wl!=91&&Wl!=95&&Wl!=100&&Wl!=106&&Wl!=110&&Wl!=114&&Wl!=119&&Wl!=123&&Wl!=124&&Wl!=127&&Wl!=129&&Wl!=132&&Wl!=139&&Wl!=148&&Wl!=150&&Wl!=152&&Wl!=153&&Wl!=162&&Wl!=164&&Wl!=165&&Wl!=166&&Wl!=175&&Wl!=177&&Wl!=181&&Wl!=183&&Wl!=184&&Wl!=189&&Wl!=202&&Wl!=204&&Wl!=205&&Wl!=209&&Wl!=224&&Wl!=228&&Wl!=237&&Wl!=241&&Wl!=242&&Wl!=252&&Wl!=253&&Wl!=254&&Wl!=260&&Wl!=272&&Wl!=276&&Wl!=279&&Wl!=284&&Wl!=285&&Wl!=286&&Wl!=287&&Wl!=2586&&Wl!=23578&&Wl!=24090&&Wl!=24602&&Wl!=34330){Wl=uc(3,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{switch($l){case 47:Hl(47);break;case 48:Hl(48);break;default:Hl(26)}Il(264),Hr(),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(3,Vl,Wl)}}if(Wl!=-1&&Wl!=47&&Wl!=48&&Wl!=2586&&Wl!=23578&&Wl!=34330)break;switch($l){case 47:Pl(47);break;case 48:Pl(48);break;default:Pl(26)}Il(264),jl(),Pr()}ic.endNonterminal("RelativePathExpr",Vl)}function Dr(){ti();for(;;){switch($l){case 26:ql(265);break;default:Wl=$l}if(Wl!=25&&Wl!=27&&Wl!=38&&Wl!=39&&Wl!=41&&Wl!=42&&Wl!=43&&Wl!=47&&Wl!=48&&Wl!=50&&Wl!=54&&Wl!=55&&Wl!=58&&Wl!=59&&Wl!=61&&Wl!=62&&Wl!=63&&Wl!=64&&Wl!=70&&Wl!=71&&Wl!=76&&Wl!=80&&Wl!=81&&Wl!=82&&Wl!=85&&Wl!=88&&Wl!=89&&Wl!=90&&Wl!=91&&Wl!=95&&Wl!=100&&Wl!=106&&Wl!=110&&Wl!=114&&Wl!=119&&Wl!=123&&Wl!=124&&Wl!=127&&Wl!=129&&Wl!=132&&Wl!=139&&Wl!=148&&Wl!=150&&Wl!=152&&Wl!=153&&Wl!=162&&Wl!=164&&Wl!=165&&Wl!=166&&Wl!=175&&Wl!=177&&Wl!=181&&Wl!=183&&Wl!=184&&Wl!=189&&Wl!=202&&Wl!=204&&Wl!=205&&Wl!=209&&Wl!=224&&Wl!=228&&Wl!=237&&Wl!=241&&Wl!=242&&Wl!=252&&Wl!=253&&Wl!=254&&Wl!=260&&Wl!=272&&Wl!=276&&Wl!=279&&Wl!=284&&Wl!=285&&Wl!=286&&Wl!=287&&Wl!=2586&&Wl!=23578&&Wl!=24090&&Wl!=24602&&Wl!=34330){Wl=uc(3,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{switch($l){case 47:Hl(47);break;case 48:Hl(48);break;default:Hl(26)}Il(264),Hr(),oc(3,t,-1);continue}catch(a){Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(3,t,-2);break}}}if(Wl!=-1&&Wl!=47&&Wl!=48&&Wl!=2586&&Wl!=23578&&Wl!=34330)break;switch($l){case 47:Hl(47);break;case 48:Hl(48);break;default:Hl(26)}Il(264),Hr()}}function Pr(){ic.startNonterminal("StepExpr",Vl);switch($l){case 83:ql(288);break;case 122:ql(287);break;case 187:case 220:ql(285);break;case 135:case 197:case 255:ql(237);break;case 97:case 120:case 206:case 249:case 262:ql(239);break;case 79:case 125:case 154:case 167:case 169:case 247:case 248:case 259:ql(230);break;case 74:case 75:case 94:case 112:case 113:case 137:case 138:case 210:case 216:case 217:case 234:ql(238);break;case 6:case 71:case 73:case 76:case 78:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 95:case 98:case 99:case 102:case 103:case 104:case 105:case 106:case 107:case 109:case 110:case 111:case 114:case 119:case 121:case 123:case 124:case 126:case 127:case 129:case 130:case 132:case 133:case 134:case 136:case 139:case 142:case 143:case 147:case 148:case 150:case 152:case 153:case 155:case 156:case 157:case 161:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 177:case 179:case 181:case 183:case 184:case 185:case 188:case 189:case 194:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 222:case 223:case 224:case 225:case 226:case 228:case 229:case 230:case 231:case 232:case 233:case 239:case 240:case 241:case 242:case 245:case 253:case 254:case 256:case 257:case 258:case 260:case 263:case 266:case 267:case 268:case 269:case 272:case 273:case 276:ql(234);break;default:Wl=$l}if(Wl==12935||Wl==12997||Wl==13055||Wl==13447||Wl==13509||Wl==13567||Wl==13959||Wl==14021||Wl==14079||Wl==19591||Wl==19653||Wl==19711||Wl==20103||Wl==20165||Wl==20223||Wl==21127||Wl==21189||Wl==21247||Wl==21639||Wl==21701||Wl==21759||Wl==22151||Wl==22213||Wl==22271||Wl==24199||Wl==24261||Wl==24319||Wl==24711||Wl==24773||Wl==24831||Wl==25735||Wl==25797||Wl==25855||Wl==27783||Wl==27845||Wl==27903||Wl==28295||Wl==28357||Wl==28415||Wl==29831||Wl==29893||Wl==29951||Wl==30343||Wl==30405||Wl==30463||Wl==31367||Wl==31429||Wl==31487||Wl==31879||Wl==31941||Wl==31999||Wl==32391||Wl==32453||Wl==32511||Wl==32903||Wl==32965||Wl==33023||Wl==35463||Wl==35525||Wl==35583||Wl==35975||Wl==36037||Wl==36095||Wl==36435||Wl==36474||Wl==36487||Wl==36539||Wl==36549||Wl==36572||Wl==36607||Wl==38995||Wl==39034||Wl==39047||Wl==39099||Wl==39109||Wl==39132||Wl==39167||Wl==41043||Wl==41082||Wl==41095||Wl==41147||Wl==41157||Wl==41180||Wl==41215||Wl==41555||Wl==41594||Wl==41607||Wl==41659||Wl==41669||Wl==41692||Wl==41727||Wl==42067||Wl==42106||Wl==42119||Wl==42171||Wl==42181||Wl==42204||Wl==42239||Wl==43603||Wl==43642||Wl==43655||Wl==43707||Wl==43717||Wl==43740||Wl==43775||Wl==45191||Wl==45253||Wl==45311||Wl==45651||Wl==45690||Wl==45703||Wl==45755||Wl==45765||Wl==45788||Wl==45823||Wl==46163||Wl==46202||Wl==46215||Wl==46267||Wl==46277||Wl==46300||Wl==46335||Wl==46675||Wl==46714||Wl==46727||Wl==46779||Wl==46789||Wl==46812||Wl==46847||Wl==48723||Wl==48762||Wl==48775||Wl==48827||Wl==48837||Wl==48860||Wl==48895||Wl==51335||Wl==51397||Wl==51455||Wl==54355||Wl==54394||Wl==54407||Wl==54459||Wl==54469||Wl==54492||Wl==54527||Wl==56403||Wl==56442||Wl==56455||Wl==56507||Wl==56517||Wl==56540||Wl==56575||Wl==58451||Wl==58490||Wl==58503||Wl==58555||Wl==58565||Wl==58588||Wl==58623||Wl==61011||Wl==61050||Wl==61063||Wl==61115||Wl==61125||Wl==61148||Wl==61183||Wl==63059||Wl==63098||Wl==63111||Wl==63163||Wl==63173||Wl==63196||Wl==63231||Wl==63571||Wl==63610||Wl==63623||Wl==63675||Wl==63685||Wl==63708||Wl==63743||Wl==65107||Wl==65146||Wl==65159||Wl==65211||Wl==65221||Wl==65244||Wl==65279||Wl==66131||Wl==66170||Wl==66183||Wl==66235||Wl==66245||Wl==66268||Wl==66303||Wl==67667||Wl==67706||Wl==67719||Wl==67771||Wl==67781||Wl==67804||Wl==67839||Wl==71251||Wl==71290||Wl==71303||Wl==71355||Wl==71365||Wl==71388||Wl==71423||Wl==75859||Wl==75898||Wl==75911||Wl==75963||Wl==75973||Wl==75996||Wl==76031||Wl==76883||Wl==76922||Wl==76935||Wl==76987||Wl==76997||Wl==77020||Wl==77055||Wl==77907||Wl==77946||Wl==77959||Wl==78011||Wl==78021||Wl==78044||Wl==78079||Wl==78419||Wl==78458||Wl==78471||Wl==78523||Wl==78533||Wl==78556||Wl==78591||Wl==83027||Wl==83066||Wl==83079||Wl==83131||Wl==83141||Wl==83164||Wl==83199||Wl==84051||Wl==84090||Wl==84103||Wl==84155||Wl==84165||Wl==84188||Wl==84223||Wl==84563||Wl==84602||Wl==84615||Wl==84667||Wl==84677||Wl==84700||Wl==84735||Wl==85075||Wl==85114||Wl==85127||Wl==85179||Wl==85189||Wl==85212||Wl==85247||Wl==89683||Wl==89722||Wl==89735||Wl==89787||Wl==89797||Wl==89820||Wl==89855||Wl==90707||Wl==90746||Wl==90759||Wl==90811||Wl==90821||Wl==90844||Wl==90879||Wl==92755||Wl==92794||Wl==92807||Wl==92859||Wl==92869||Wl==92892||Wl==92927||Wl==93779||Wl==93818||Wl==93831||Wl==93883||Wl==93893||Wl==93916||Wl==93951||Wl==94291||Wl==94330||Wl==94343||Wl==94395||Wl==94405||Wl==94428||Wl==94463||Wl==96851||Wl==96890||Wl==96903||Wl==96955||Wl==96965||Wl==96988||Wl==97023||Wl==103507||Wl==103546||Wl==103559||Wl==103611||Wl==103621||Wl==103644||Wl==103679||Wl==104531||Wl==104570||Wl==104583||Wl==104635||Wl==104645||Wl==104668||Wl==104703||Wl==105043||Wl==105082||Wl==105095||Wl==105147||Wl==105157||Wl==105180||Wl==105215||Wl==107143||Wl==107205||Wl==107263||Wl==114771||Wl==114810||Wl==114823||Wl==114875||Wl==114885||Wl==114908||Wl==114943||Wl==116819||Wl==116858||Wl==116871||Wl==116923||Wl==116933||Wl==116956||Wl==116991||Wl==121479||Wl==121541||Wl==121599||Wl==123475||Wl==123514||Wl==123527||Wl==123579||Wl==123589||Wl==123612||Wl==123647||Wl==123987||Wl==124026||Wl==124039||Wl==124091||Wl==124101||Wl==124124||Wl==124159||Wl==129159||Wl==129221||Wl==129279||Wl==129619||Wl==129658||Wl==129671||Wl==129723||Wl==129733||Wl==129756||Wl==129791||Wl==130131||Wl==130170||Wl==130183||Wl==130235||Wl==130245||Wl==130268||Wl==130303||Wl==133203||Wl==133242||Wl==133255||Wl==133307||Wl==133317||Wl==133340||Wl==133375||Wl==139347||Wl==139386||Wl==139399||Wl==139451||Wl==139461||Wl==139484||Wl==139519||Wl==141395||Wl==141434||Wl==141447||Wl==141499||Wl==141509||Wl==141532||Wl==141567||Wl==142983||Wl==143045||Wl==143103||Wl==145543||Wl==145605||Wl==145663||Wl==146055||Wl==146117||Wl==146175||Wl==146567||Wl==146629||Wl==146687||Wl==147079||Wl==147141||Wl==147199){Wl=uc(4,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{ti(),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(4,Vl,Wl)}}switch(Wl){case-1:case 8:case 9:case 10:case 11:case 31:case 32:case 33:case 35:case 55:case 56:case 60:case 69:case 281:case 283:case 3155:case 3194:case 9915:case 9948:case 14854:case 14919:case 14921:case 14922:case 14923:case 14924:case 14926:case 14927:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14935:case 14937:case 14938:case 14939:case 14940:case 14942:case 14943:case 14945:case 14946:case 14947:case 14950:case 14951:case 14952:case 14953:case 14954:case 14955:case 14957:case 14958:case 14959:case 14960:case 14961:case 14962:case 14967:case 14968:case 14969:case 14970:case 14971:case 14972:case 14973:case 14974:case 14975:case 14977:case 14978:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14986:case 14987:case 14990:case 14991:case 14995:case 14996:case 14998:case 15e3:case 15001:case 15002:case 15003:case 15004:case 15005:case 15009:case 15010:case 15011:case 15012:case 15013:case 15014:case 15015:case 15016:case 15017:case 15018:case 15021:case 15022:case 15023:case 15025:case 15027:case 15029:case 15031:case 15032:case 15033:case 15035:case 15036:case 15037:case 15042:case 15043:case 15045:case 15046:case 15050:case 15051:case 15052:case 15053:case 15054:case 15055:case 15058:case 15064:case 15065:case 15068:case 15070:case 15071:case 15072:case 15073:case 15074:case 15076:case 15077:case 15078:case 15079:case 15080:case 15081:case 15082:case 15087:case 15088:case 15089:case 15090:case 15093:case 15095:case 15096:case 15097:case 15101:case 15102:case 15103:case 15104:case 15105:case 15106:case 15107:case 15108:case 15110:case 15111:case 15114:case 15115:case 15116:case 15117:case 15120:case 15121:case 15124:case 17926:case 17991:case 17993:case 17994:case 17995:case 17996:case 17998:case 18e3:case 18001:case 18002:case 18004:case 18005:case 18006:case 18007:case 18009:case 18010:case 18011:case 18012:case 18014:case 18015:case 18018:case 18019:case 18022:case 18023:case 18024:case 18025:case 18026:case 18027:case 18029:case 18030:case 18031:case 18032:case 18033:case 18034:case 18039:case 18040:case 18043:case 18044:case 18046:case 18047:case 18049:case 18050:case 18052:case 18053:case 18054:case 18055:case 18056:case 18057:case 18058:case 18059:case 18062:case 18063:case 18067:case 18068:case 18070:case 18072:case 18073:case 18075:case 18076:case 18077:case 18081:case 18082:case 18083:case 18084:case 18085:case 18086:case 18088:case 18090:case 18093:case 18094:case 18095:case 18097:case 18099:case 18101:case 18103:case 18104:case 18105:case 18107:case 18109:case 18115:case 18117:case 18118:case 18122:case 18123:case 18124:case 18125:case 18126:case 18127:case 18130:case 18136:case 18137:case 18142:case 18143:case 18144:case 18145:case 18146:case 18148:case 18149:case 18152:case 18153:case 18154:case 18159:case 18160:case 18161:case 18162:case 18165:case 18173:case 18174:case 18175:case 18176:case 18177:case 18178:case 18180:case 18182:case 18183:case 18186:case 18187:case 18188:case 18189:case 18192:case 18193:case 18196:case 23175:case 23237:case 23295:case 37459:case 37498:case 37563:case 37596:case 37971:case 38010:case 38075:case 38108:case 38483:case 38522:case 38587:case 38620:case 40019:case 40058:case 40123:case 40156:case 40531:case 40570:case 42579:case 42618:case 42683:case 42716:case 43091:case 43130:case 43195:case 43228:case 44115:case 44154:case 44219:case 44252:case 44627:case 44666:case 44731:case 44764:case 47187:case 47226:case 47291:case 47324:case 48211:case 48250:case 48315:case 48348:case 49747:case 49786:case 49851:case 49884:case 50259:case 50298:case 50363:case 50396:case 50771:case 50810:case 50875:case 50908:case 52307:case 52346:case 52411:case 52444:case 52819:case 52858:case 52923:case 52956:case 53331:case 53370:case 53435:case 53468:case 53843:case 53882:case 53947:case 53980:case 54867:case 54906:case 54971:case 55004:case 55891:case 55930:case 55995:case 56028:case 56915:case 56954:case 57019:case 57052:case 57427:case 57466:case 57531:case 57564:case 57939:case 57978:case 58043:case 58076:case 61523:case 61562:case 61627:case 61660:case 62035:case 62074:case 62139:case 62172:case 62547:case 62586:case 62651:case 62684:case 64083:case 64122:case 64187:case 64220:case 64595:case 64634:case 64699:case 64732:case 66643:case 66682:case 66747:case 66780:case 68179:case 68218:case 68283:case 68316:case 68691:case 68730:case 68795:case 68828:case 69203:case 69242:case 69307:case 69340:case 69715:case 69754:case 69819:case 69852:case 70227:case 70266:case 70331:case 70364:case 70739:case 70778:case 70843:case 70876:case 72787:case 72826:case 72891:case 72924:case 73299:case 73338:case 73403:case 73436:case 75347:case 75386:case 75451:case 75484:case 78931:case 78970:case 79035:case 79068:case 79443:case 79482:case 79547:case 79580:case 79955:case 79994:case 80059:case 80092:case 80467:case 80506:case 80571:case 80604:case 82515:case 82554:case 82619:case 82652:case 83539:case 83578:case 83643:case 83676:case 85587:case 85626:case 85691:case 85724:case 86099:case 86138:case 86203:case 86236:case 86611:case 86650:case 87123:case 87162:case 87227:case 87260:case 88659:case 88698:case 88763:case 88796:case 89171:case 89210:case 89275:case 89308:case 91731:case 91770:case 91835:case 91868:case 94803:case 94842:case 94907:case 94940:case 95827:case 95866:case 95931:case 95964:case 96339:case 96378:case 96443:case 96476:case 99411:case 99450:case 99515:case 99548:case 99923:case 99962:case 100027:case 100060:case 100947:case 100986:case 101051:case 101084:case 101459:case 101498:case 101563:case 101596:case 104019:case 104058:case 104123:case 104156:case 105555:case 105594:case 105659:case 105692:case 106067:case 106106:case 106171:case 106204:case 107603:case 107642:case 107707:case 107740:case 110675:case 110714:case 110779:case 110812:case 111187:case 111226:case 111291:case 111324:case 112723:case 112762:case 112827:case 112860:case 113747:case 113786:case 113851:case 113884:case 114259:case 114298:case 114363:case 114396:case 115283:case 115322:case 115387:case 115420:case 115795:case 115834:case 115899:case 115932:case 117331:case 117370:case 117435:case 117468:case 117843:case 117882:case 117947:case 117980:case 118355:case 118394:case 118459:case 118492:case 118867:case 118906:case 118971:case 119004:case 119379:case 119418:case 119483:case 119516:case 119891:case 119930:case 119995:case 120028:case 122451:case 122490:case 122555:case 122588:case 122963:case 123002:case 123067:case 123100:case 125523:case 125562:case 125627:case 125660:case 126547:case 126586:case 127059:case 127098:case 127163:case 127196:case 127571:case 127610:case 127675:case 127708:case 130643:case 130682:case 130747:case 130780:case 131155:case 131194:case 131259:case 131292:case 131667:case 131706:case 131771:case 131804:case 132179:case 132218:case 132283:case 132316:case 132691:case 132730:case 132795:case 132828:case 134227:case 134266:case 134331:case 134364:case 134739:case 134778:case 134843:case 134876:case 136275:case 136314:case 136379:case 136412:case 136787:case 136826:case 136891:case 136924:case 137299:case 137338:case 137403:case 137436:case 137811:case 137850:case 137915:case 137948:case 139859:case 139898:case 139963:case 139996:case 143955:case 143969:case 143992:case 143994:case 144059:case 144078:case 144092:case 144121:case 144134:ei();break;default:Br()}ic.endNonterminal("StepExpr",Vl)}function Hr(){switch($l){case 83:ql(288);break;case 122:ql(287);break;case 187:case 220:ql(285);break;case 135:case 197:case 255:ql(237);break;case 97:case 120:case 206:case 249:case 262:ql(239);break;case 79:case 125:case 154:case 167:case 169:case 247:case 248:case 259:ql(230);break;case 74:case 75:case 94:case 112:case 113:case 137:case 138:case 210:case 216:case 217:case 234:ql(238);break;case 6:case 71:case 73:case 76:case 78:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 95:case 98:case 99:case 102:case 103:case 104:case 105:case 106:case 107:case 109:case 110:case 111:case 114:case 119:case 121:case 123:case 124:case 126:case 127:case 129:case 130:case 132:case 133:case 134:case 136:case 139:case 142:case 143:case 147:case 148:case 150:case 152:case 153:case 155:case 156:case 157:case 161:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 177:case 179:case 181:case 183:case 184:case 185:case 188:case 189:case 194:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 222:case 223:case 224:case 225:case 226:case 228:case 229:case 230:case 231:case 232:case 233:case 239:case 240:case 241:case 242:case 245:case 253:case 254:case 256:case 257:case 258:case 260:case 263:case 266:case 267:case 268:case 269:case 272:case 273:case 276:ql(234);break;default:Wl=$l}if(Wl==12935||Wl==12997||Wl==13055||Wl==13447||Wl==13509||Wl==13567||Wl==13959||Wl==14021||Wl==14079||Wl==19591||Wl==19653||Wl==19711||Wl==20103||Wl==20165||Wl==20223||Wl==21127||Wl==21189||Wl==21247||Wl==21639||Wl==21701||Wl==21759||Wl==22151||Wl==22213||Wl==22271||Wl==24199||Wl==24261||Wl==24319||Wl==24711||Wl==24773||Wl==24831||Wl==25735||Wl==25797||Wl==25855||Wl==27783||Wl==27845||Wl==27903||Wl==28295||Wl==28357||Wl==28415||Wl==29831||Wl==29893||Wl==29951||Wl==30343||Wl==30405||Wl==30463||Wl==31367||Wl==31429||Wl==31487||Wl==31879||Wl==31941||Wl==31999||Wl==32391||Wl==32453||Wl==32511||Wl==32903||Wl==32965||Wl==33023||Wl==35463||Wl==35525||Wl==35583||Wl==35975||Wl==36037||Wl==36095||Wl==36435||Wl==36474||Wl==36487||Wl==36539||Wl==36549||Wl==36572||Wl==36607||Wl==38995||Wl==39034||Wl==39047||Wl==39099||Wl==39109||Wl==39132||Wl==39167||Wl==41043||Wl==41082||Wl==41095||Wl==41147||Wl==41157||Wl==41180||Wl==41215||Wl==41555||Wl==41594||Wl==41607||Wl==41659||Wl==41669||Wl==41692||Wl==41727||Wl==42067||Wl==42106||Wl==42119||Wl==42171||Wl==42181||Wl==42204||Wl==42239||Wl==43603||Wl==43642||Wl==43655||Wl==43707||Wl==43717||Wl==43740||Wl==43775||Wl==45191||Wl==45253||Wl==45311||Wl==45651||Wl==45690||Wl==45703||Wl==45755||Wl==45765||Wl==45788||Wl==45823||Wl==46163||Wl==46202||Wl==46215||Wl==46267||Wl==46277||Wl==46300||Wl==46335||Wl==46675||Wl==46714||Wl==46727||Wl==46779||Wl==46789||Wl==46812||Wl==46847||Wl==48723||Wl==48762||Wl==48775||Wl==48827||Wl==48837||Wl==48860||Wl==48895||Wl==51335||Wl==51397||Wl==51455||Wl==54355||Wl==54394||Wl==54407||Wl==54459||Wl==54469||Wl==54492||Wl==54527||Wl==56403||Wl==56442||Wl==56455||Wl==56507||Wl==56517||Wl==56540||Wl==56575||Wl==58451||Wl==58490||Wl==58503||Wl==58555||Wl==58565||Wl==58588||Wl==58623||Wl==61011||Wl==61050||Wl==61063||Wl==61115||Wl==61125||Wl==61148||Wl==61183||Wl==63059||Wl==63098||Wl==63111||Wl==63163||Wl==63173||Wl==63196||Wl==63231||Wl==63571||Wl==63610||Wl==63623||Wl==63675||Wl==63685||Wl==63708||Wl==63743||Wl==65107||Wl==65146||Wl==65159||Wl==65211||Wl==65221||Wl==65244||Wl==65279||Wl==66131||Wl==66170||Wl==66183||Wl==66235||Wl==66245||Wl==66268||Wl==66303||Wl==67667||Wl==67706||Wl==67719||Wl==67771||Wl==67781||Wl==67804||Wl==67839||Wl==71251||Wl==71290||Wl==71303||Wl==71355||Wl==71365||Wl==71388||Wl==71423||Wl==75859||Wl==75898||Wl==75911||Wl==75963||Wl==75973||Wl==75996||Wl==76031||Wl==76883||Wl==76922||Wl==76935||Wl==76987||Wl==76997||Wl==77020||Wl==77055||Wl==77907||Wl==77946||Wl==77959||Wl==78011||Wl==78021||Wl==78044||Wl==78079||Wl==78419||Wl==78458||Wl==78471||Wl==78523||Wl==78533||Wl==78556||Wl==78591||Wl==83027||Wl==83066||Wl==83079||Wl==83131||Wl==83141||Wl==83164||Wl==83199||Wl==84051||Wl==84090||Wl==84103||Wl==84155||Wl==84165||Wl==84188||Wl==84223||Wl==84563||Wl==84602||Wl==84615||Wl==84667||Wl==84677||Wl==84700||Wl==84735||Wl==85075||Wl==85114||Wl==85127||Wl==85179||Wl==85189||Wl==85212||Wl==85247||Wl==89683||Wl==89722||Wl==89735||Wl==89787||Wl==89797||Wl==89820||Wl==89855||Wl==90707||Wl==90746||Wl==90759||Wl==90811||Wl==90821||Wl==90844||Wl==90879||Wl==92755||Wl==92794||Wl==92807||Wl==92859||Wl==92869||Wl==92892||Wl==92927||Wl==93779||Wl==93818||Wl==93831||Wl==93883||Wl==93893||Wl==93916||Wl==93951||Wl==94291||Wl==94330||Wl==94343||Wl==94395||Wl==94405||Wl==94428||Wl==94463||Wl==96851||Wl==96890||Wl==96903||Wl==96955||Wl==96965||Wl==96988||Wl==97023||Wl==103507||Wl==103546||Wl==103559||Wl==103611||Wl==103621||Wl==103644||Wl==103679||Wl==104531||Wl==104570||Wl==104583||Wl==104635||Wl==104645||Wl==104668||Wl==104703||Wl==105043||Wl==105082||Wl==105095||Wl==105147||Wl==105157||Wl==105180||Wl==105215||Wl==107143||Wl==107205||Wl==107263||Wl==114771||Wl==114810||Wl==114823||Wl==114875||Wl==114885||Wl==114908||Wl==114943||Wl==116819||Wl==116858||Wl==116871||Wl==116923||Wl==116933||Wl==116956||Wl==116991||Wl==121479||Wl==121541||Wl==121599||Wl==123475||Wl==123514||Wl==123527||Wl==123579||Wl==123589||Wl==123612||Wl==123647||Wl==123987||Wl==124026||Wl==124039||Wl==124091||Wl==124101||Wl==124124||Wl==124159||Wl==129159||Wl==129221||Wl==129279||Wl==129619||Wl==129658||Wl==129671||Wl==129723||Wl==129733||Wl==129756||Wl==129791||Wl==130131||Wl==130170||Wl==130183||Wl==130235||Wl==130245||Wl==130268||Wl==130303||Wl==133203||Wl==133242||Wl==133255||Wl==133307||Wl==133317||Wl==133340||Wl==133375||Wl==139347||Wl==139386||Wl==139399||Wl==139451||Wl==139461||Wl==139484||Wl==139519||Wl==141395||Wl==141434||Wl==141447||Wl==141499||Wl==141509||Wl==141532||Wl==141567||Wl==142983||Wl==143045||Wl==143103||Wl==145543||Wl==145605||Wl==145663||Wl==146055||Wl==146117||Wl==146175||Wl==146567||Wl==146629||Wl==146687||Wl==147079||Wl==147141||Wl==147199){Wl=uc(4,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{ti(),oc(4,t,-1),Wl=-3}catch(a){Wl=-2,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(4,t,-2)}}}switch(Wl){case-1:case 8:case 9:case 10:case 11:case 31:case 32:case 33:case 35:case 55:case 56:case 60:case 69:case 281:case 283:case 3155:case 3194:case 9915:case 9948:case 14854:case 14919:case 14921:case 14922:case 14923:case 14924:case 14926:case 14927:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14935:case 14937:case 14938:case 14939:case 14940:case 14942:case 14943:case 14945:case 14946:case 14947:case 14950:case 14951:case 14952:case 14953:case 14954:case 14955:case 14957:case 14958:case 14959:case 14960:case 14961:case 14962:case 14967:case 14968:case 14969:case 14970:case 14971:case 14972:case 14973:case 14974:case 14975:case 14977:case 14978:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14986:case 14987:case 14990:case 14991:case 14995:case 14996:case 14998:case 15e3:case 15001:case 15002:case 15003:case 15004:case 15005:case 15009:case 15010:case 15011:case 15012:case 15013:case 15014:case 15015:case 15016:case 15017:case 15018:case 15021:case 15022:case 15023:case 15025:case 15027:case 15029:case 15031:case 15032:case 15033:case 15035:case 15036:case 15037:case 15042:case 15043:case 15045:case 15046:case 15050:case 15051:case 15052:case 15053:case 15054:case 15055:case 15058:case 15064:case 15065:case 15068:case 15070:case 15071:case 15072:case 15073:case 15074:case 15076:case 15077:case 15078:case 15079:case 15080:case 15081:case 15082:case 15087:case 15088:case 15089:case 15090:case 15093:case 15095:case 15096:case 15097:case 15101:case 15102:case 15103:case 15104:case 15105:case 15106:case 15107:case 15108:case 15110:case 15111:case 15114:case 15115:case 15116:case 15117:case 15120:case 15121:case 15124:case 17926:case 17991:case 17993:case 17994:case 17995:case 17996:case 17998:case 18e3:case 18001:case 18002:case 18004:case 18005:case 18006:case 18007:case 18009:case 18010:case 18011:case 18012:case 18014:case 18015:case 18018:case 18019:case 18022:case 18023:case 18024:case 18025:case 18026:case 18027:case 18029:case 18030:case 18031:case 18032:case 18033:case 18034:case 18039:case 18040:case 18043:case 18044:case 18046:case 18047:case 18049:case 18050:case 18052:case 18053:case 18054:case 18055:case 18056:case 18057:case 18058:case 18059:case 18062:case 18063:case 18067:case 18068:case 18070:case 18072:case 18073:case 18075:case 18076:case 18077:case 18081:case 18082:case 18083:case 18084:case 18085:case 18086:case 18088:case 18090:case 18093:case 18094:case 18095:case 18097:case 18099:case 18101:case 18103:case 18104:case 18105:case 18107:case 18109:case 18115:case 18117:case 18118:case 18122:case 18123:case 18124:case 18125:case 18126:case 18127:case 18130:case 18136:case 18137:case 18142:case 18143:case 18144:case 18145:case 18146:case 18148:case 18149:case 18152:case 18153:case 18154:case 18159:case 18160:case 18161:case 18162:case 18165:case 18173:case 18174:case 18175:case 18176:case 18177:case 18178:case 18180:case 18182:case 18183:case 18186:case 18187:case 18188:case 18189:case 18192:case 18193:case 18196:case 23175:case 23237:case 23295:case 37459:case 37498:case 37563:case 37596:case 37971:case 38010:case 38075:case 38108:case 38483:case 38522:case 38587:case 38620:case 40019:case 40058:case 40123:case 40156:case 40531:case 40570:case 42579:case 42618:case 42683:case 42716:case 43091:case 43130:case 43195:case 43228:case 44115:case 44154:case 44219:case 44252:case 44627:case 44666:case 44731:case 44764:case 47187:case 47226:case 47291:case 47324:case 48211:case 48250:case 48315:case 48348:case 49747:case 49786:case 49851:case 49884:case 50259:case 50298:case 50363:case 50396:case 50771:case 50810:case 50875:case 50908:case 52307:case 52346:case 52411:case 52444:case 52819:case 52858:case 52923:case 52956:case 53331:case 53370:case 53435:case 53468:case 53843:case 53882:case 53947:case 53980:case 54867:case 54906:case 54971:case 55004:case 55891:case 55930:case 55995:case 56028:case 56915:case 56954:case 57019:case 57052:case 57427:case 57466:case 57531:case 57564:case 57939:case 57978:case 58043:case 58076:case 61523:case 61562:case 61627:case 61660:case 62035:case 62074:case 62139:case 62172:case 62547:case 62586:case 62651:case 62684:case 64083:case 64122:case 64187:case 64220:case 64595:case 64634:case 64699:case 64732:case 66643:case 66682:case 66747:case 66780:case 68179:case 68218:case 68283:case 68316:case 68691:case 68730:case 68795:case 68828:case 69203:case 69242:case 69307:case 69340:case 69715:case 69754:case 69819:case 69852:case 70227:case 70266:case 70331:case 70364:case 70739:case 70778:case 70843:case 70876:case 72787:case 72826:case 72891:case 72924:case 73299:case 73338:case 73403:case 73436:case 75347:case 75386:case 75451:case 75484:case 78931:case 78970:case 79035:case 79068:case 79443:case 79482:case 79547:case 79580:case 79955:case 79994:case 80059:case 80092:case 80467:case 80506:case 80571:case 80604:case 82515:case 82554:case 82619:case 82652:case 83539:case 83578:case 83643:case 83676:case 85587:case 85626:case 85691:case 85724:case 86099:case 86138:case 86203:case 86236:case 86611:case 86650:case 87123:case 87162:case 87227:case 87260:case 88659:case 88698:case 88763:case 88796:case 89171:case 89210:case 89275:case 89308:case 91731:case 91770:case 91835:case 91868:case 94803:case 94842:case 94907:case 94940:case 95827:case 95866:case 95931:case 95964:case 96339:case 96378:case 96443:case 96476:case 99411:case 99450:case 99515:case 99548:case 99923:case 99962:case 100027:case 100060:case 100947:case 100986:case 101051:case 101084:case 101459:case 101498:case 101563:case 101596:case 104019:case 104058:case 104123:case 104156:case 105555:case 105594:case 105659:case 105692:case 106067:case 106106:case 106171:case 106204:case 107603:case 107642:case 107707:case 107740:case 110675:case 110714:case 110779:case 110812:case 111187:case 111226:case 111291:case 111324:case 112723:case 112762:case 112827:case 112860:case 113747:case 113786:case 113851:case 113884:case 114259:case 114298:case 114363:case 114396:case 115283:case 115322:case 115387:case 115420:case 115795:case 115834:case 115899:case 115932:case 117331:case 117370:case 117435:case 117468:case 117843:case 117882:case 117947:case 117980:case 118355:case 118394:case 118459:case 118492:case 118867:case 118906:case 118971:case 119004:case 119379:case 119418:case 119483:case 119516:case 119891:case 119930:case 119995:case 120028:case 122451:case 122490:case 122555:case 122588:case 122963:case 123002:case 123067:case 123100:case 125523:case 125562:case 125627:case 125660:case 126547:case 126586:case 127059:case 127098:case 127163:case 127196:case 127571:case 127610:case 127675:case 127708:case 130643:case 130682:case 130747:case 130780:case 131155:case 131194:case 131259:case 131292:case 131667:case 131706:case 131771:case 131804:case 132179:case 132218:case 132283:case 132316:case 132691:case 132730:case 132795:case 132828:case 134227:case 134266:case 134331:case 134364:case 134739:case 134778:case 134843:case 134876:case 136275:case 136314:case 136379:case 136412:case 136787:case 136826:case 136891:case 136924:case 137299:case 137338:case 137403:case 137436:case 137811:case 137850:case 137915:case 137948:case 139859:case 139898:case 139963:case 139996:case 143955:case 143969:case 143992:case 143994:case 144059:case 144078:case 144092:case 144121:case 144134:ti();break;case-3:break;default:jr()}}function Br(){ic.startNonterminal("AxisStep",Vl);switch($l){case 74:case 75:case 210:case 216:case 217:ql(232);break;default:Wl=$l}switch(Wl){case 46:case 26698:case 26699:case 26834:case 26840:case 26841:Wr();break;default:Fr()}Il(228),jl(),li(),ic.endNonterminal("AxisStep",Vl)}function jr(){switch($l){case 74:case 75:case 210:case 216:case 217:ql(232);break;default:Wl=$l}switch(Wl){case 46:case 26698:case 26699:case 26834:case 26840:case 26841:Xr();break;default:Ir()}Il(228),ci()}function Fr(){ic.startNonterminal("ForwardStep",Vl);switch($l){case 83:ql(236);break;case 94:case 112:case 113:case 137:case 138:case 234:ql(232);break;default:Wl=$l}switch(Wl){case 26707:case 26718:case 26736:case 26737:case 26761:case 26762:case 26858:qr(),Il(249),jl(),Qr();break;default:Ur()}ic.endNonterminal("ForwardStep",Vl)}function Ir(){switch($l){case 83:ql(236);break;case 94:case 112:case 113:case 137:case 138:case 234:ql(232);break;default:Wl=$l}switch(Wl){case 26707:case 26718:case 26736:case 26737:case 26761:case 26762:case 26858:Rr(),Il(249),Gr();break;default:zr()}}function qr(){ic.startNonterminal("ForwardAxis",Vl);switch($l){case 94:Pl(94),Il(27),Pl(52);break;case 112:Pl(112),Il(27),Pl(52);break;case 83:Pl(83),Il(27),Pl(52);break;case 234:Pl(234),Il(27),Pl(52);break;case 113:Pl(113),Il(27),Pl(52);break;case 138:Pl(138),Il(27),Pl(52);break;default:Pl(137),Il(27),Pl(52)}ic.endNonterminal("ForwardAxis",Vl)}function Rr(){switch($l){case 94:Hl(94),Il(27),Hl(52);break;case 112:Hl(112),Il(27),Hl(52);break;case 83:Hl(83),Il(27),Hl(52);break;case 234:Hl(234),Il(27),Hl(52);break;case 113:Hl(113),Il(27),Hl(52);break;case 138:Hl(138),Il(27),Hl(52);break;default:Hl(137),Il(27),Hl(52)}}function Ur(){ic.startNonterminal("AbbrevForwardStep",Vl),$l==67&&Pl(67),Il(249),jl(),Qr(),ic.endNonterminal("AbbrevForwardStep",Vl)}function zr(){$l==67&&Hl(67),Il(249),Gr()}function Wr(){ic.startNonterminal("ReverseStep",Vl);switch($l){case 46:Jr();break;default:Vr(),Il(249),jl(),Qr()}ic.endNonterminal("ReverseStep",Vl)}function Xr(){switch($l){case 46:Kr();break;default:$r(),Il(249),Gr()}}function Vr(){ic.startNonterminal("ReverseAxis",Vl);switch($l){case 210:Pl(210),Il(27),Pl(52);break;case 74:Pl(74),Il(27),Pl(52);break;case 217:Pl(217),Il(27),Pl(52);break;case 216:Pl(216),Il(27),Pl(52);break;default:Pl(75),Il(27),Pl(52)}ic.endNonterminal("ReverseAxis",Vl)}function $r(){switch($l){case 210:Hl(210),Il(27),Hl(52);break;case 74:Hl(74),Il(27),Hl(52);break;case 217:Hl(217),Il(27),Hl(52);break;case 216:Hl(216),Il(27),Hl(52);break;default:Hl(75),Il(27),Hl(52)}}function Jr(){ic.startNonterminal("AbbrevReverseStep",Vl),Pl(46),ic.endNonterminal("AbbrevReverseStep",Vl)}function Kr(){Hl(46)}function Qr(){ic.startNonterminal("NodeTest",Vl);switch($l){case 83:case 97:case 121:case 122:case 188:case 194:case 220:case 230:case 231:case 249:ql(231);break;default:Wl=$l}switch(Wl){case 18003:case 18017:case 18041:case 18042:case 18108:case 18114:case 18140:case 18150:case 18151:case 18169:Vs();break;default:Yr()}ic.endNonterminal("NodeTest",Vl)}function Gr(){switch($l){case 83:case 97:case 121:case 122:case 188:case 194:case 220:case 230:case 231:case 249:ql(231);break;default:Wl=$l}switch(Wl){case 18003:case 18017:case 18041:case 18042:case 18108:case 18114:case 18140:case 18150:case 18151:case 18169:$s();break;default:Zr()}}function Yr(){ic.startNonterminal("NameTest",Vl);switch($l){case 5:Pl(5);break;default:$a()}ic.endNonterminal("NameTest",Vl)}function Zr(){switch($l){case 5:Hl(5);break;default:Ja()}}function ei(){ic.startNonterminal("PostfixExpr",Vl),yl();for(;;){Il(235);if($l!=35&&$l!=45&&$l!=69)break;switch($l){case 69:ql(273);break;default:Wl=$l}if(Wl==35397){Wl=uc(5,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{pi(),Wl=-1}catch(a){Wl=-4}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(5,Vl,Wl)}}switch(Wl){case 35:jl(),ai();break;case 45:jl(),ni();break;case-4:jl(),ii();break;case 35909:jl(),oi();break;default:jl(),hi()}}ic.endNonterminal("PostfixExpr",Vl)}function ti(){bl();for(;;){Il(235);if($l!=35&&$l!=45&&$l!=69)break;switch($l){case 69:ql(273);break;default:Wl=$l}if(Wl==35397){Wl=uc(5,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{pi(),oc(5,t,-1),Wl=-6}catch(a){Wl=-4,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(5,t,-4)}}}switch(Wl){case 35:fi();break;case 45:ri();break;case-4:si();break;case 35909:ui();break;case-6:break;default:pi()}}}function ni(){ic.startNonterminal("ObjectLookup",Vl),Pl(45),Il(251);switch($l){case 11:Pl(11);break;case 35:jl(),Ci();break;case 31:jl(),Si();break;case 32:jl(),Li();break;default:jl(),Ga()}ic.endNonterminal("ObjectLookup",Vl)}function ri(){Hl(45),Il(251);switch($l){case 11:Hl(11);break;case 35:ki();break;case 31:xi();break;case 32:Ai();break;default:Ya()}}function ii(){ic.startNonterminal("ArrayLookup",Vl),Pl(69),Il(31),Pl(69),Il(267),jl(),G(),Pl(70),Il(32),Pl(70),ic.endNonterminal("ArrayLookup",Vl)}function si(){Hl(69),Il(31),Hl(69),Il(267),Y(),Hl(70),Il(32),Hl(70)}function oi(){ic.startNonterminal("ArrayUnboxing",Vl),Pl(69),Il(32),Pl(70),ic.endNonterminal("ArrayUnboxing",Vl)}function ui(){Hl(69),Il(32),Hl(70)}function ai(){ic.startNonterminal("ArgumentList",Vl),Pl(35),Il(280);if($l!=38){jl(),Bi();for(;;){Il(105);if($l!=42)break;Pl(42),Il(272),jl(),Bi()}}Pl(38),ic.endNonterminal("ArgumentList",Vl)}function fi(){Hl(35),Il(280);if($l!=38){ji();for(;;){Il(105);if($l!=42)break;Hl(42),Il(272),ji()}}Hl(38)}function li(){ic.startNonterminal("PredicateList",Vl);for(;;){Il(228);if($l!=69)break;jl(),hi()}ic.endNonterminal("PredicateList",Vl)}function ci(){for(;;){Il(228);if($l!=69)break;pi()}}function hi(){ic.startNonterminal("Predicate",Vl),Pl(69),Il(267),jl(),G(),Pl(70),ic.endNonterminal("Predicate",Vl)}function pi(){Hl(69),Il(267),Y(),Hl(70)}function di(){ic.startNonterminal("Literal",Vl);switch($l){case 11:Pl(11);break;case 135:case 255:mi();break;case 197:yi();break;default:wi()}ic.endNonterminal("Literal",Vl)}function vi(){switch($l){case 11:Hl(11);break;case 135:case 255:gi();break;case 197:bi();break;default:Ei()}}function mi(){ic.startNonterminal("BooleanLiteral",Vl);switch($l){case 255:Pl(255);break;default:Pl(135)}ic.endNonterminal("BooleanLiteral",Vl)}function gi(){switch($l){case 255:Hl(255);break;default:Hl(135)}}function yi(){ic.startNonterminal("NullLiteral",Vl),Pl(197),ic.endNonterminal("NullLiteral",Vl)}function bi(){Hl(197)}function wi(){ic.startNonterminal("NumericLiteral",Vl);switch($l){case 8:Pl(8);break;case 9:Pl(9);break;default:Pl(10)}ic.endNonterminal("NumericLiteral",Vl)}function Ei(){switch($l){case 8:Hl(8);break;case 9:Hl(9);break;default:Hl(10)}}function Si(){ic.startNonterminal("VarRef",Vl),Pl(31),Il(246),jl(),Ti(),ic.endNonterminal("VarRef",Vl)}function xi(){Hl(31),Il(246),Ni()}function Ti(){ic.startNonterminal("VarName",Vl),$a(),ic.endNonterminal("VarName",Vl)}function Ni(){Ja()}function Ci(){ic.startNonterminal("ParenthesizedExpr",Vl),Pl(35),Il(270),$l!=38&&(jl(),G()),Pl(38),ic.endNonterminal("ParenthesizedExpr",Vl)}function ki(){Hl(35),Il(270),$l!=38&&Y(),Hl(38)}function Li(){ic.startNonterminal("ContextItemExpr",Vl),Pl(32),ic.endNonterminal("ContextItemExpr",Vl)}function Ai(){Hl(32)}function Oi(){ic.startNonterminal("OrderedExpr",Vl),Pl(206),Il(90),Pl(281),Il(267),jl(),G(),Pl(287),ic.endNonterminal("OrderedExpr",Vl)}function Mi(){Hl(206),Il(90),Hl(281),Il(267),Y(),Hl(287)}function _i(){ic.startNonterminal("UnorderedExpr",Vl),Pl(262),Il(90),Pl(281),Il(267),jl(),G(),Pl(287),ic.endNonterminal("UnorderedExpr",Vl)}function Di(){Hl(262),Il(90),Hl(281),Il(267),Y(),Hl(287)}function Pi(){ic.startNonterminal("FunctionCall",Vl),Ka(),Il(22),jl(),ai(),ic.endNonterminal("FunctionCall",Vl)}function Hi(){Qa(),Il(22),fi()}function Bi(){ic.startNonterminal("Argument",Vl);switch($l){case 65:Fi();break;default:Wf()}ic.endNonterminal("Argument",Vl)}function ji(){switch($l){case 65:Ii();break;default:Xf()}}function Fi(){ic.startNonterminal("ArgumentPlaceholder",Vl),Pl(65),ic.endNonterminal("ArgumentPlaceholder",Vl)}function Ii(){Hl(65)}function qi(){ic.startNonterminal("Constructor",Vl);switch($l){case 55:case 56:case 60:Ui();break;default:os()}ic.endNonterminal("Constructor",Vl)}function Ri(){switch($l){case 55:case 56:case 60:zi();break;default:us()}}function Ui(){ic.startNonterminal("DirectConstructor",Vl);switch($l){case 55:Wi();break;case 56:ns();break;default:is()}ic.endNonterminal("DirectConstructor",Vl)}function zi(){switch($l){case 55:Xi();break;case 56:rs();break;default:ss()}}function Wi(){ic.startNonterminal("DirElemConstructor",Vl),Pl(55),Rl(4),Pl(20),Vi();switch($l){case 49:Pl(49);break;default:Pl(62);for(;;){Rl(196);if($l==57)break;es()}Pl(57),Rl(4),Pl(20),Rl(12),$l==21&&Pl(21),Rl(8),Pl(62)}ic.endNonterminal("DirElemConstructor",Vl)}function Xi(){Hl(55),Rl(4),Hl(20),$i();switch($l){case 49:Hl(49);break;default:Hl(62);for(;;){Rl(196);if($l==57)break;ts()}Hl(57),Rl(4),Hl(20),Rl(12),$l==21&&Hl(21),Rl(8),Hl(62)}}function Vi(){ic.startNonterminal("DirAttributeList",Vl);for(;;){Rl(19);if($l!=21)break;Pl(21),Rl(94),$l==20&&(Pl(20),Rl(11),$l==21&&Pl(21),Rl(7),Pl(61),Rl(18),$l==21&&Pl(21),Ji())}ic.endNonterminal("DirAttributeList",Vl)}function $i(){for(;;){Rl(19);if($l!=21)break;Hl(21),Rl(94),$l==20&&(Hl(20),Rl(11),$l==21&&Hl(21),Rl(7),Hl(61),Rl(18),$l==21&&Hl(21),Ki())}}function Ji(){ic.startNonterminal("DirAttributeValue",Vl),Rl(14);switch($l){case 28:Pl(28);for(;;){Rl(185);if($l==28)break;switch($l){case 13:Pl(13);break;default:Qi()}}Pl(28);break;default:Pl(34);for(;;){Rl(186);if($l==34)break;switch($l){case 14:Pl(14);break;default:Yi()}}Pl(34)}ic.endNonterminal("DirAttributeValue",Vl)}function Ki(){Rl(14);switch($l){case 28:Hl(28);for(;;){Rl(185);if($l==28)break;switch($l){case 13:Hl(13);break;default:Gi()}}Hl(28);break;default:Hl(34);for(;;){Rl(186);if($l==34)break;switch($l){case 14:Hl(14);break;default:Zi()}}Hl(34)}}function Qi(){ic.startNonterminal("QuotAttrValueContent",Vl);switch($l){case 16:Pl(16);break;default:il()}ic.endNonterminal("QuotAttrValueContent",Vl)}function Gi(){switch($l){case 16:Hl(16);break;default:sl()}}function Yi(){ic.startNonterminal("AposAttrValueContent",Vl);switch($l){case 17:Pl(17);break;default:il()}ic.endNonterminal("AposAttrValueContent",Vl)}function Zi(){switch($l){case 17:Hl(17);break;default:sl()}}function es(){ic.startNonterminal("DirElemContent",Vl);switch($l){case 55:case 56:case 60:Ui();break;case 4:Pl(4);break;case 15:Pl(15);break;default:il()}ic.endNonterminal("DirElemContent",Vl)}function ts(){switch($l){case 55:case 56:case 60:zi();break;case 4:Hl(4);break;case 15:Hl(15);break;default:sl()}}function ns(){ic.startNonterminal("DirCommentConstructor",Vl),Pl(56),Rl(1),Pl(2),Rl(6),Pl(44),ic.endNonterminal("DirCommentConstructor",Vl)}function rs(){Hl(56),Rl(1),Hl(2),Rl(6),Hl(44)}function is(){ic.startNonterminal("DirPIConstructor",Vl),Pl(60),Rl(3),Pl(18),Rl(13),$l==21&&(Pl(21),Rl(2),Pl(3)),Rl(9),Pl(66),ic.endNonterminal("DirPIConstructor",Vl)}function ss(){Hl(60),Rl(3),Hl(18),Rl(13),$l==21&&(Hl(21),Rl(2),Hl(3)),Rl(9),Hl(66)}function os(){ic.startNonterminal("ComputedConstructor",Vl);switch($l){case 120:al();break;case 122:as();break;case 83:ll();break;case 187:ls();break;case 249:ml();break;case 97:dl();break;default:hl()}ic.endNonterminal("ComputedConstructor",Vl)}function us(){switch($l){case 120:fl();break;case 122:fs();break;case 83:cl();break;case 187:cs();break;case 249:gl();break;case 97:vl();break;default:pl()}}function as(){ic.startNonterminal("CompElemConstructor",Vl),Pl(122),Il(250);switch($l){case 281:Pl(281),Il(267),jl(),G(),Pl(287);break;default:jl(),$a()}Il(90),Pl(281),Il(281),$l!=287&&(jl(),ol()),Pl(287),ic.endNonterminal("CompElemConstructor",Vl)}function fs(){Hl(122),Il(250);switch($l){case 281:Hl(281),Il(267),Y(),Hl(287);break;default:Ja()}Il(90),Hl(281),Il(281),$l!=287&&ul(),Hl(287)}function ls(){ic.startNonterminal("CompNamespaceConstructor",Vl),Pl(187),Il(242);switch($l){case 281:Pl(281),Il(267),jl(),ds(),Pl(287);break;default:jl(),hs()}Il(90),Pl(281),Il(267),jl(),ms(),Pl(287),ic.endNonterminal("CompNamespaceConstructor",Vl)}function cs(){Hl(187),Il(242);switch($l){case 281:Hl(281),Il(267),vs(),Hl(287);break;default:ps()}Il(90),Hl(281),Il(267),gs(),Hl(287)}function hs(){ic.startNonterminal("Prefix",Vl),Ga(),ic.endNonterminal("Prefix",Vl)}function ps(){Ya()}function ds(){ic.startNonterminal("PrefixExpr",Vl),G(),ic.endNonterminal("PrefixExpr",Vl)}function vs(){Y()}function ms(){ic.startNonterminal("URIExpr",Vl),G(),ic.endNonterminal("URIExpr",Vl)}function gs(){Y()}function ys(){ic.startNonterminal("FunctionItemExpr",Vl);switch($l){case 147:ql(95);break;default:Wl=$l}switch(Wl){case 33:case 18067:Ss();break;default:ws()}ic.endNonterminal("FunctionItemExpr",Vl)}function bs(){switch($l){case 147:ql(95);break;default:Wl=$l}switch(Wl){case 33:case 18067:xs();break;default:Es()}}function ws(){ic.startNonterminal("NamedFunctionRef",Vl),$a(),Il(20),Pl(29),Il(16),Pl(8),ic.endNonterminal("NamedFunctionRef",Vl)}function Es(){Ja(),Il(20),Hl(29),Il(16),Hl(8)}function Ss(){ic.startNonterminal("InlineFunctionExpr",Vl);for(;;){Il(101);if($l!=33)break;jl(),B()}Pl(147),Il(22),Pl(35),Il(98),$l==31&&(jl(),U()),Pl(38),Il(115),$l==80&&(Pl(80),Il(254),jl(),Ls()),Il(90),jl(),V(),ic.endNonterminal("InlineFunctionExpr",Vl)}function xs(){for(;;){Il(101);if($l!=33)break;j()}Hl(147),Il(22),Hl(35),Il(98),$l==31&&z(),Hl(38),Il(115),$l==80&&(Hl(80),Il(254),As()),Il(90),$()}function Ts(){ic.startNonterminal("SingleType",Vl),ko(),Il(226),$l==65&&Pl(65),ic.endNonterminal("SingleType",Vl)}function Ns(){Lo(),Il(226),$l==65&&Hl(65)}function Cs(){ic.startNonterminal("TypeDeclaration",Vl),Pl(80),Il(254),jl(),Ls(),ic.endNonterminal("TypeDeclaration",Vl)}function ks(){Hl(80),Il(254),As()}function Ls(){ic.startNonterminal("SequenceType",Vl);switch($l){case 35:ql(259);break;case 125:ql(233);break;default:Wl=$l}switch(Wl){case 18045:case 19491:$l==125&&Pl(125),Il(22),Pl(35),Il(23),Pl(38);break;default:_s(),Il(229);switch($l){case 40:case 41:case 65:jl(),Os();break;default:}}ic.endNonterminal("SequenceType",Vl)}function As(){switch($l){case 35:ql(259);break;case 125:ql(233);break;default:Wl=$l}switch(Wl){case 18045:case 19491:$l==125&&Hl(125),Il(22),Hl(35),Il(23),Hl(38);break;default:Ds(),Il(229);switch($l){case 40:case 41:case 65:Ms();break;default:}}}function Os(){ic.startNonterminal("OccurrenceIndicator",Vl);switch($l){case 65:Pl(65);break;case 40:Pl(40);break;default:Pl(41)}ic.endNonterminal("OccurrenceIndicator",Vl)}function Ms(){switch($l){case 65:Hl(65);break;case 40:Hl(40);break;default:Hl(41)}}function _s(){ic.startNonterminal("ItemType",Vl);switch($l){case 79:case 83:case 97:case 121:case 122:case 147:case 167:case 169:case 188:case 194:case 198:case 220:case 230:case 231:case 247:case 249:ql(233);break;default:Wl=$l}if(Wl==12879||Wl==12969||Wl==12998||Wl==13047||Wl==13903||Wl==13993||Wl==14022||Wl==14071||Wl==19535||Wl==19625||Wl==19654||Wl==19703||Wl==20047||Wl==20137||Wl==20166||Wl==20215||Wl==20559||Wl==20649||Wl==20678||Wl==20727||Wl==21071||Wl==21161||Wl==21190||Wl==21239||Wl==21583||Wl==21673||Wl==21702||Wl==21751||Wl==22095||Wl==22185||Wl==22214||Wl==22263||Wl==25679||Wl==25769||Wl==25798||Wl==25847||Wl==27215||Wl==27305||Wl==27334||Wl==27383||Wl==27727||Wl==27817||Wl==27846||Wl==27895||Wl==28239||Wl==28329||Wl==28358||Wl==28407||Wl==29775||Wl==29865||Wl==29894||Wl==29943||Wl==30287||Wl==30377||Wl==30406||Wl==30455||Wl==31311||Wl==31401||Wl==31430||Wl==31479||Wl==31823||Wl==31913||Wl==31942||Wl==31991||Wl==32335||Wl==32425||Wl==32454||Wl==32503||Wl==32847||Wl==32937||Wl==32966||Wl==33015||Wl==33359||Wl==33449||Wl==33478||Wl==33527||Wl==35919||Wl==36009||Wl==36038||Wl==36087||Wl==36431||Wl==36521||Wl==36550||Wl==36599||Wl==37455||Wl==37545||Wl==37574||Wl==37623||Wl==38991||Wl==39081||Wl==39110||Wl==39159||Wl==41039||Wl==41129||Wl==41158||Wl==41207||Wl==41551||Wl==41641||Wl==41670||Wl==41719||Wl==42063||Wl==42153||Wl==42182||Wl==42231||Wl==43599||Wl==43689||Wl==43718||Wl==43767||Wl==45647||Wl==45737||Wl==45766||Wl==45815||Wl==48719||Wl==48809||Wl==48838||Wl==48887||Wl==51279||Wl==51369||Wl==51398||Wl==51447||Wl==54351||Wl==54441||Wl==54470||Wl==54519||Wl==56399||Wl==56489||Wl==56518||Wl==56567||Wl==58447||Wl==58537||Wl==58566||Wl==58615||Wl==61007||Wl==61097||Wl==61126||Wl==61175||Wl==63055||Wl==63145||Wl==63174||Wl==63223||Wl==63567||Wl==63657||Wl==63686||Wl==63735||Wl==65103||Wl==65193||Wl==65222||Wl==65271||Wl==66127||Wl==66217||Wl==66246||Wl==66295||Wl==67663||Wl==67753||Wl==67782||Wl==67831||Wl==68687||Wl==68777||Wl==68806||Wl==68855||Wl==71247||Wl==71337||Wl==71366||Wl==71415||Wl==75855||Wl==75945||Wl==75974||Wl==76023||Wl==76879||Wl==76969||Wl==76998||Wl==77047||Wl==77903||Wl==77993||Wl==78022||Wl==78071||Wl==78415||Wl==78505||Wl==78534||Wl==78583||Wl==79951||Wl==80041||Wl==80070||Wl==80119||Wl==83023||Wl==83113||Wl==83142||Wl==83191||Wl==84047||Wl==84137||Wl==84166||Wl==84215||Wl==84559||Wl==84649||Wl==84678||Wl==84727||Wl==85071||Wl==85161||Wl==85190||Wl==85239||Wl==89679||Wl==89769||Wl==89798||Wl==89847||Wl==90703||Wl==90793||Wl==90822||Wl==90871||Wl==92751||Wl==92841||Wl==92870||Wl==92919||Wl==93775||Wl==93865||Wl==93894||Wl==93943||Wl==94287||Wl==94377||Wl==94406||Wl==94455||Wl==96847||Wl==96937||Wl==96966||Wl==97015||Wl==103503||Wl==103593||Wl==103622||Wl==103671||Wl==104527||Wl==104617||Wl==104646||Wl==104695||Wl==105039||Wl==105129||Wl==105158||Wl==105207||Wl==107087||Wl==107177||Wl==107206||Wl==107255||Wl==114767||Wl==114857||Wl==114886||Wl==114935||Wl==116815||Wl==116905||Wl==116934||Wl==116983||Wl==118863||Wl==118953||Wl==118982||Wl==119031||Wl==121423||Wl==121513||Wl==121542||Wl==121591||Wl==123471||Wl==123561||Wl==123590||Wl==123639||Wl==123983||Wl==124073||Wl==124102||Wl==124151||Wl==129103||Wl==129193||Wl==129222||Wl==129271||Wl==129615||Wl==129705||Wl==129734||Wl==129783||Wl==133199||Wl==133289||Wl==133318||Wl==133367||Wl==139343||Wl==139433||Wl==139462||Wl==139511||Wl==141391||Wl==141481||Wl==141510||Wl==141559||Wl==142927||Wl==143017||Wl==143046||Wl==143095||Wl==143951||Wl==144041||Wl==144070||Wl==144119||Wl==145487||Wl==145577||Wl==145606||Wl==145655||Wl==145999||Wl==146089||Wl==146118||Wl==146167||Wl==146511||Wl==146601||Wl==146630||Wl==146679||Wl==147023||Wl==147113||Wl==147142||Wl==147191){Wl=uc(6,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Xs(),Wl=-4}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Hs(),Wl=-6}catch(f){Wl=-7}}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(6,Vl,Wl)}}switch(Wl){case 18003:case 18017:case 18041:case 18042:case 18108:case 18114:case 18140:case 18150:case 18151:case 18169:Vs();break;case 18087:Pl(167),Il(22),Pl(35),Il(23),Pl(38);break;case 33:case 18067:Mo();break;case 35:jo();break;case-6:case 17999:case 18089:case 18118:Ps();break;case-7:case 18167:Bs();break;default:Ws()}ic.endNonterminal("ItemType",Vl)}function Ds(){switch($l){case 79:case 83:case 97:case 121:case 122:case 147:case 167:case 169:case 188:case 194:case 198:case 220:case 230:case 231:case 247:case 249:ql(233);break;default:Wl=$l}if(Wl==12879||Wl==12969||Wl==12998||Wl==13047||Wl==13903||Wl==13993||Wl==14022||Wl==14071||Wl==19535||Wl==19625||Wl==19654||Wl==19703||Wl==20047||Wl==20137||Wl==20166||Wl==20215||Wl==20559||Wl==20649||Wl==20678||Wl==20727||Wl==21071||Wl==21161||Wl==21190||Wl==21239||Wl==21583||Wl==21673||Wl==21702||Wl==21751||Wl==22095||Wl==22185||Wl==22214||Wl==22263||Wl==25679||Wl==25769||Wl==25798||Wl==25847||Wl==27215||Wl==27305||Wl==27334||Wl==27383||Wl==27727||Wl==27817||Wl==27846||Wl==27895||Wl==28239||Wl==28329||Wl==28358||Wl==28407||Wl==29775||Wl==29865||Wl==29894||Wl==29943||Wl==30287||Wl==30377||Wl==30406||Wl==30455||Wl==31311||Wl==31401||Wl==31430||Wl==31479||Wl==31823||Wl==31913||Wl==31942||Wl==31991||Wl==32335||Wl==32425||Wl==32454||Wl==32503||Wl==32847||Wl==32937||Wl==32966||Wl==33015||Wl==33359||Wl==33449||Wl==33478||Wl==33527||Wl==35919||Wl==36009||Wl==36038||Wl==36087||Wl==36431||Wl==36521||Wl==36550||Wl==36599||Wl==37455||Wl==37545||Wl==37574||Wl==37623||Wl==38991||Wl==39081||Wl==39110||Wl==39159||Wl==41039||Wl==41129||Wl==41158||Wl==41207||Wl==41551||Wl==41641||Wl==41670||Wl==41719||Wl==42063||Wl==42153||Wl==42182||Wl==42231||Wl==43599||Wl==43689||Wl==43718||Wl==43767||Wl==45647||Wl==45737||Wl==45766||Wl==45815||Wl==48719||Wl==48809||Wl==48838||Wl==48887||Wl==51279||Wl==51369||Wl==51398||Wl==51447||Wl==54351||Wl==54441||Wl==54470||Wl==54519||Wl==56399||Wl==56489||Wl==56518||Wl==56567||Wl==58447||Wl==58537||Wl==58566||Wl==58615||Wl==61007||Wl==61097||Wl==61126||Wl==61175||Wl==63055||Wl==63145||Wl==63174||Wl==63223||Wl==63567||Wl==63657||Wl==63686||Wl==63735||Wl==65103||Wl==65193||Wl==65222||Wl==65271||Wl==66127||Wl==66217||Wl==66246||Wl==66295||Wl==67663||Wl==67753||Wl==67782||Wl==67831||Wl==68687||Wl==68777||Wl==68806||Wl==68855||Wl==71247||Wl==71337||Wl==71366||Wl==71415||Wl==75855||Wl==75945||Wl==75974||Wl==76023||Wl==76879||Wl==76969||Wl==76998||Wl==77047||Wl==77903||Wl==77993||Wl==78022||Wl==78071||Wl==78415||Wl==78505||Wl==78534||Wl==78583||Wl==79951||Wl==80041||Wl==80070||Wl==80119||Wl==83023||Wl==83113||Wl==83142||Wl==83191||Wl==84047||Wl==84137||Wl==84166||Wl==84215||Wl==84559||Wl==84649||Wl==84678||Wl==84727||Wl==85071||Wl==85161||Wl==85190||Wl==85239||Wl==89679||Wl==89769||Wl==89798||Wl==89847||Wl==90703||Wl==90793||Wl==90822||Wl==90871||Wl==92751||Wl==92841||Wl==92870||Wl==92919||Wl==93775||Wl==93865||Wl==93894||Wl==93943||Wl==94287||Wl==94377||Wl==94406||Wl==94455||Wl==96847||Wl==96937||Wl==96966||Wl==97015||Wl==103503||Wl==103593||Wl==103622||Wl==103671||Wl==104527||Wl==104617||Wl==104646||Wl==104695||Wl==105039||Wl==105129||Wl==105158||Wl==105207||Wl==107087||Wl==107177||Wl==107206||Wl==107255||Wl==114767||Wl==114857||Wl==114886||Wl==114935||Wl==116815||Wl==116905||Wl==116934||Wl==116983||Wl==118863||Wl==118953||Wl==118982||Wl==119031||Wl==121423||Wl==121513||Wl==121542||Wl==121591||Wl==123471||Wl==123561||Wl==123590||Wl==123639||Wl==123983||Wl==124073||Wl==124102||Wl==124151||Wl==129103||Wl==129193||Wl==129222||Wl==129271||Wl==129615||Wl==129705||Wl==129734||Wl==129783||Wl==133199||Wl==133289||Wl==133318||Wl==133367||Wl==139343||Wl==139433||Wl==139462||Wl==139511||Wl==141391||Wl==141481||Wl==141510||Wl==141559||Wl==142927||Wl==143017||Wl==143046||Wl==143095||Wl==143951||Wl==144041||Wl==144070||Wl==144119||Wl==145487||Wl==145577||Wl==145606||Wl==145655||Wl==145999||Wl==146089||Wl==146118||Wl==146167||Wl==146511||Wl==146601||Wl==146630||Wl==146679||Wl==147023||Wl==147113||Wl==147142||Wl==147191){Wl=uc(6,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Xs(),oc(6,t,-4),Wl=-8}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Hs(),oc(6,t,-6),Wl=-8}catch(f){Wl=-7,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(6,t,-7)}}}}switch(Wl){case 18003:case 18017:case 18041:case 18042:case 18108:case 18114:case 18140:case 18150:case 18151:case 18169:$s();break;case 18087:Hl(167),Il(22),Hl(35),Il(23),Hl(38);break;case 33:case 18067:_o();break;case 35:Fo();break;case-6:case 17999:case 18089:case 18118:Hs();break;case-7:case 18167:js();break;case-8:break;default:Xs()}}function Ps(){ic.startNonterminal("JSONTest",Vl);switch($l){case 169:Fs();break;case 198:qs();break;default:Us()}ic.endNonterminal("JSONTest",Vl)}function Hs(){switch($l){case 169:Is();break;case 198:Rs();break;default:zs()}}function Bs(){ic.startNonterminal("StructuredItemTest",Vl),Pl(247),Il(233),$l==35&&(Pl(35),Il(23),Pl(38)),ic.endNonterminal("StructuredItemTest",Vl)}function js(){Hl(247),Il(233),$l==35&&(Hl(35),Il(23),Hl(38))}function Fs(){ic.startNonterminal("JSONItemTest",Vl),Pl(169),Il(233),$l==35&&(Pl(35),Il(23),Pl(38)),ic.endNonterminal("JSONItemTest",Vl)}function Is(){Hl(169),Il(233),$l==35&&(Hl(35),Il(23),Hl(38))}function qs(){ic.startNonterminal("JSONObjectTest",Vl),Pl(198),Il(233),$l==35&&(Pl(35),Il(23),Pl(38)),ic.endNonterminal("JSONObjectTest",Vl)}function Rs(){Hl(198),Il(233),$l==35&&(Hl(35),Il(23),Hl(38))}function Us(){ic.startNonterminal("JSONArrayTest",Vl),Pl(79),Il(233),$l==35&&(Pl(35),Il(23),Pl(38)),ic.endNonterminal("JSONArrayTest",Vl)}function zs(){Hl(79),Il(233),$l==35&&(Hl(35),Il(23),Hl(38))}function Ws(){ic.startNonterminal("AtomicOrUnionType",Vl),$a(),ic.endNonterminal("AtomicOrUnionType",Vl)}function Xs(){Ja()}function Vs(){ic.startNonterminal("KindTest",Vl);switch($l){case 121:Qs();break;case 122:vo();break;case 83:oo();break;case 231:bo();break;case 230:lo();break;case 220:io();break;case 97:eo();break;case 249:Ys();break;case 188:no();break;default:Js()}ic.endNonterminal("KindTest",Vl)}function $s(){switch($l){case 121:Gs();break;case 122:mo();break;case 83:uo();break;case 231:wo();break;case 230:co();break;case 220:so();break;case 97:to();break;case 249:Zs();break;case 188:ro();break;default:Ks()}}function Js(){ic.startNonterminal("AnyKindTest",Vl),Pl(194),Il(22),Pl(35),Il(23),Pl(38),ic.endNonterminal("AnyKindTest",Vl)}function Ks(){Hl(194),Il(22),Hl(35),Il(23),Hl(38)}function Qs(){ic.startNonterminal("DocumentTest",Vl),Pl(121),Il(22),Pl(35),Il(154);if($l!=38)switch($l){case 122:jl(),vo();break;default:jl(),bo()}Il(23),Pl(38),ic.endNonterminal("DocumentTest",Vl)}function Gs(){Hl(121),Il(22),Hl(35),Il(154);if($l!=38)switch($l){case 122:mo();break;default:wo()}Il(23),Hl(38)}function Ys(){ic.startNonterminal("TextTest",Vl),Pl(249),Il(22),Pl(35),Il(23),Pl(38),ic.endNonterminal("TextTest",Vl)}function Zs(){Hl(249),Il(22),Hl(35),Il(23),Hl(38)}function eo(){ic.startNonterminal("CommentTest",Vl),Pl(97),Il(22),Pl(35),Il(23),Pl(38),ic.endNonterminal("CommentTest",Vl)}function to(){Hl(97),Il(22),Hl(35),Il(23),Hl(38)}function no(){ic.startNonterminal("NamespaceNodeTest",Vl),Pl(188),Il(22),Pl(35),Il(23),Pl(38),ic.endNonterminal("NamespaceNodeTest",Vl)}function ro(){Hl(188),Il(22),Hl(35),Il(23),Hl(38)}function io(){ic.startNonterminal("PITest",Vl),Pl(220),Il(22),Pl(35),Il(244);if($l!=38)switch($l){case 11:Pl(11);break;default:jl(),Ga()}Il(23),Pl(38),ic.endNonterminal("PITest",Vl)}function so(){Hl(220),Il(22),Hl(35),Il(244);if($l!=38)switch($l){case 11:Hl(11);break;default:Ya()}Il(23),Hl(38)}function oo(){ic.startNonterminal("AttributeTest",Vl),Pl(83),Il(22),Pl(35),Il(255),$l!=38&&(jl(),ao(),Il(105),$l==42&&(Pl(42),Il(246),jl(),Ao())),Il(23),Pl(38),ic.endNonterminal("AttributeTest",Vl)}function uo(){Hl(83),Il(22),Hl(35),Il(255),$l!=38&&(fo(),Il(105),$l==42&&(Hl(42),Il(246),Oo())),Il(23),Hl(38)}function ao(){ic.startNonterminal("AttribNameOrWildcard",Vl);switch($l){case 39:Pl(39);break;default:xo()}ic.endNonterminal("AttribNameOrWildcard",Vl)}function fo(){switch($l){case 39:Hl(39);break;default:To()}}function lo(){ic.startNonterminal("SchemaAttributeTest",Vl),Pl(230),Il(22),Pl(35),Il(246),jl(),ho(),Il(23),Pl(38),ic.endNonterminal("SchemaAttributeTest",Vl)}function co(){Hl(230),Il(22),Hl(35),Il(246),po(),Il(23),Hl(38)}function ho(){ic.startNonterminal("AttributeDeclaration",Vl),xo(),ic.endNonterminal("AttributeDeclaration",Vl)}function po(){To()}function vo(){ic.startNonterminal("ElementTest",Vl),Pl(122),Il(22),Pl(35),Il(255),$l!=38&&(jl(),go(),Il(105),$l==42&&(Pl(42),Il(246),jl(),Ao(),Il(106),$l==65&&Pl(65))),Il(23),Pl(38),ic.endNonterminal("ElementTest",Vl)}function mo(){Hl(122),Il(22),Hl(35),Il(255),$l!=38&&(yo(),Il(105),$l==42&&(Hl(42),Il(246),Oo(),Il(106),$l==65&&Hl(65))),Il(23),Hl(38)}function go(){ic.startNonterminal("ElementNameOrWildcard",Vl);switch($l){case 39:Pl(39);break;default:No()}ic.endNonterminal("ElementNameOrWildcard",Vl)}function yo(){switch($l){case 39:Hl(39);break;default:Co()}}function bo(){ic.startNonterminal("SchemaElementTest",Vl),Pl(231),Il(22),Pl(35),Il(246),jl(),Eo(),Il(23),Pl(38),ic.endNonterminal("SchemaElementTest",Vl)}function wo(){Hl(231),Il(22),Hl(35),Il(246),So(),Il(23),Hl(38)}function Eo(){ic.startNonterminal("ElementDeclaration",Vl),No(),ic.endNonterminal("ElementDeclaration",Vl)}function So(){Co()}function xo(){ic.startNonterminal("AttributeName",Vl),$a(),ic.endNonterminal("AttributeName",Vl)}function To(){Ja()}function No(){ic.startNonterminal("ElementName",Vl),$a(),ic.endNonterminal("ElementName",Vl)}function Co(){Ja()}function ko(){ic.startNonterminal("SimpleTypeName",Vl),Ao(),ic.endNonterminal("SimpleTypeName",Vl)}function Lo(){Oo()}function Ao(){ic.startNonterminal("TypeName",Vl),$a(),ic.endNonterminal("TypeName",Vl)}function Oo(){Ja()}function Mo(){ic.startNonterminal("FunctionTest",Vl);for(;;){Il(101);if($l!=33)break;jl(),B()}switch($l){case 147:ql(22);break;default:Wl=$l}Wl=uc(7,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Po(),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(7,Vl,Wl)}switch(Wl){case-1:jl(),Do();break;default:jl(),Ho()}ic.endNonterminal("FunctionTest",Vl)}function _o(){for(;;){Il(101);if($l!=33)break;j()}switch($l){case 147:ql(22);break;default:Wl=$l}Wl=uc(7,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Po(),oc(7,t,-1),Wl=-3}catch(a){Wl=-2,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(7,t,-2)}}switch(Wl){case-1:Po();break;case-3:break;default:Bo()}}function Do(){ic.startNonterminal("AnyFunctionTest",Vl),Pl(147),Il(22),Pl(35),Il(24),Pl(39),Il(23),Pl(38),ic.endNonterminal("AnyFunctionTest",Vl)}function Po(){Hl(147),Il(22),Hl(35),Il(24),Hl(39),Il(23),Hl(38)}function Ho(){ic.startNonterminal("TypedFunctionTest",Vl),Pl(147),Il(22),Pl(35),Il(259);if($l!=38){jl(),Ls();for(;;){Il(105);if($l!=42)break;Pl(42),Il(254),jl(),Ls()}}Pl(38),Il(33),Pl(80),Il(254),jl(),Ls(),ic.endNonterminal("TypedFunctionTest",Vl)}function Bo(){Hl(147),Il(22),Hl(35),Il(259);if($l!=38){As();for(;;){Il(105);if($l!=42)break;Hl(42),Il(254),As()}}Hl(38),Il(33),Hl(80),Il(254),As()}function jo(){ic.startNonterminal("ParenthesizedItemType",Vl),Pl(35),Il(254),jl(),_s(),Il(23),Pl(38),ic.endNonterminal("ParenthesizedItemType",Vl)}function Fo(){Hl(35),Il(254),Ds(),Il(23),Hl(38)}function Io(){ic.startNonterminal("RevalidationDecl",Vl),Pl(109),Il(75),Pl(226),Il(162);switch($l){case 245:Pl(245);break;case 174:Pl(174);break;default:Pl(238)}ic.endNonterminal("RevalidationDecl",Vl)}function qo(){ic.startNonterminal("InsertExprTargetChoice",Vl);switch($l){case 71:Pl(71);break;case 85:Pl(85);break;default:if($l==80){Pl(80),Il(123);switch($l){case 136:Pl(136);break;default:Pl(173)}}Il(57),Pl(165)}ic.endNonterminal("InsertExprTargetChoice",Vl)}function Ro(){switch($l){case 71:Hl(71);break;case 85:Hl(85);break;default:if($l==80){Hl(80),Il(123);switch($l){case 136:Hl(136);break;default:Hl(173)}}Il(57),Hl(165)}}function Uo(){ic.startNonterminal("InsertExpr",Vl),Pl(161),Il(133);switch($l){case 194:Pl(194);break;default:Pl(195)}Il(267),jl(),Qo(),jl(),qo(),Il(267),jl(),Yo(),ic.endNonterminal("InsertExpr",Vl)}function zo(){Hl(161),Il(133);switch($l){case 194:Hl(194);break;default:Hl(195)}Il(267),Go(),Ro(),Il(267),Zo()}function Wo(){ic.startNonterminal("DeleteExpr",Vl),Pl(111),Il(133);switch($l){case 194:Pl(194);break;default:Pl(195)}Il(267),jl(),Yo(),ic.endNonterminal("DeleteExpr",Vl)}function Xo(){Hl(111),Il(133);switch($l){case 194:Hl(194);break;default:Hl(195)}Il(267),Zo()}function Vo(){ic.startNonterminal("ReplaceExpr",Vl),Pl(223),Il(134),$l==267&&(Pl(267),Il(67),Pl(200)),Il(65),Pl(194),Il(267),jl(),Yo(),Pl(276),Il(267),jl(),Wf(),ic.endNonterminal("ReplaceExpr",Vl)}function $o(){Hl(223),Il(134),$l==267&&(Hl(267),Il(67),Hl(200)),Il(65),Hl(194),Il(267),Zo(),Hl(276),Il(267),Xf()}function Jo(){ic.startNonterminal("RenameExpr",Vl),Pl(222),Il(65),Pl(194),Il(267),jl(),Yo(),Pl(80),Il(267),jl(),eu(),ic.endNonterminal("RenameExpr",Vl)}function Ko(){Hl(222),Il(65),Hl(194),Il(267),Zo(),Hl(80),Il(267),tu()}function Qo(){ic.startNonterminal("SourceExpr",Vl),Wf(),ic.endNonterminal("SourceExpr",Vl)}function Go(){Xf()}function Yo(){ic.startNonterminal("TargetExpr",Vl),Wf(),ic.endNonterminal("TargetExpr",Vl)}function Zo(){Xf()}function eu(){ic.startNonterminal("NewNameExpr",Vl),Wf(),ic.endNonterminal("NewNameExpr",Vl)}function tu(){Xf()}function nu(){ic.startNonterminal("TransformExpr",Vl),Pl(104),Il(21),jl(),iu();for(;;){if($l!=42)break;Pl(42),Il(21),jl(),iu()}Pl(184),Il(267),jl(),Wf(),Pl(224),Il(267),jl(),Wf(),ic.endNonterminal("TransformExpr",Vl)}function ru(){Hl(104),Il(21),su();for(;;){if($l!=42)break;Hl(42),Il(21),su()}Hl(184),Il(267),Xf(),Hl(224),Il(267),Xf()}function iu(){ic.startNonterminal("TransformSpec",Vl),Pl(31),Il(246),jl(),Ti(),Il(28),Pl(53),Il(267),jl(),Wf(),ic.endNonterminal("TransformSpec",Vl)}function su(){Hl(31),Il(246),Ni(),Il(28),Hl(53),Il(267),Xf()}function ou(){ic.startNonterminal("FTSelection",Vl),lu();for(;;){Il(212);switch($l){case 82:ql(161);break;default:Wl=$l}if(Wl!=116&&Wl!=118&&Wl!=128&&Wl!=206&&Wl!=227&&Wl!=275&&Wl!=65106&&Wl!=123986)break;jl(),Pu()}ic.endNonterminal("FTSelection",Vl)}function uu(){cu();for(;;){Il(212);switch($l){case 82:ql(161);break;default:Wl=$l}if(Wl!=116&&Wl!=118&&Wl!=128&&Wl!=206&&Wl!=227&&Wl!=275&&Wl!=65106&&Wl!=123986)break;Hu()}}function au(){ic.startNonterminal("FTWeight",Vl),Pl(270),Il(90),Pl(281),Il(267),jl(),G(),Pl(287),ic.endNonterminal("FTWeight",Vl)}function fu(){Hl(270),Il(90),Hl(281),Il(267),Y(),Hl(287)}function lu(){ic.startNonterminal("FTOr",Vl),hu();for(;;){if($l!=146)break;Pl(146),Il(177),jl(),hu()}ic.endNonterminal("FTOr",Vl)}function cu(){pu();for(;;){if($l!=146)break;Hl(146),Il(177),pu()}}function hu(){ic.startNonterminal("FTAnd",Vl),du();for(;;){if($l!=144)break;Pl(144),Il(177),jl(),du()}ic.endNonterminal("FTAnd",Vl)}function pu(){vu();for(;;){if($l!=144)break;Hl(144),Il(177),vu()}}function du(){ic.startNonterminal("FTMildNot",Vl),mu();for(;;){Il(213);if($l!=196)break;Pl(196),Il(56),Pl(156),Il(177),jl(),mu()}ic.endNonterminal("FTMildNot",Vl)}function vu(){gu();for(;;){Il(213);if($l!=196)break;Hl(196),Il(56),Hl(156),Il(177),gu()}}function mu(){ic.startNonterminal("FTUnaryNot",Vl),$l==145&&Pl(145),Il(164),jl(),yu(),ic.endNonterminal("FTUnaryNot",Vl)}function gu(){$l==145&&Hl(145),Il(164),bu()}function yu(){ic.startNonterminal("FTPrimaryWithOptions",Vl),wu(),Il(214),$l==265&&(jl(),Qu()),$l==270&&(jl(),au()),ic.endNonterminal("FTPrimaryWithOptions",Vl)}function bu(){Eu(),Il(214),$l==265&&Gu(),$l==270&&fu()}function wu(){ic.startNonterminal("FTPrimary",Vl);switch($l){case 35:Pl(35),Il(177),jl(),ou(),Pl(38);break;case 36:Cu();break;default:Su(),Il(215),$l==199&&(jl(),Ou())}ic.endNonterminal("FTPrimary",Vl)}function Eu(){switch($l){case 35:Hl(35),Il(177),uu(),Hl(38);break;case 36:ku();break;default:xu(),Il(215),$l==199&&Mu()}}function Su(){ic.startNonterminal("FTWords",Vl),Tu(),Il(221);if($l==72||$l==77||$l==214)jl(),Lu();ic.endNonterminal("FTWords",Vl)}function xu(){Nu(),Il(221),($l==72||$l==77||$l==214)&&Au()}function Tu(){ic.startNonterminal("FTWordsValue",Vl);switch($l){case 11:Pl(11);break;default:Pl(281),Il(267),jl(),G(),Pl(287)}ic.endNonterminal("FTWordsValue",Vl)}function Nu(){switch($l){case 11:Hl(11);break;default:Hl(281),Il(267),Y(),Hl(287)}}function Cu(){ic.startNonterminal("FTExtensionSelection",Vl);for(;;){jl(),Lr(),Il(104);if($l!=36)break}Pl(281),Il(184),$l!=287&&(jl(),ou()),Pl(287),ic.endNonterminal("FTExtensionSelection",Vl)}function ku(){for(;;){Ar(),Il(104);if($l!=36)break}Hl(281),Il(184),$l!=287&&uu(),Hl(287)}function Lu(){ic.startNonterminal("FTAnyallOption",Vl);switch($l){case 77:Pl(77),Il(218),$l==278&&Pl(278);break;case 72:Pl(72),Il(219),$l==279&&Pl(279);break;default:Pl(214)}ic.endNonterminal("FTAnyallOption",Vl)}function Au(){switch($l){case 77:Hl(77),Il(218),$l==278&&Hl(278);break;case 72:Hl(72),Il(219),$l==279&&Hl(279);break;default:Hl(214)}}function Ou(){ic.startNonterminal("FTTimes",Vl),Pl(199),Il(159),jl(),_u(),Pl(252),ic.endNonterminal("FTTimes",Vl)}function Mu(){Hl(199),Il(159),Du(),Hl(252)}function _u(){ic.startNonterminal("FTRange",Vl);switch($l){case 131:Pl(131),Il(266),jl(),Jn();break;case 82:Pl(82),Il(129);switch($l){case 176:Pl(176),Il(266),jl(),Jn();break;default:Pl(186),Il(266),jl(),Jn()}break;default:Pl(142),Il(266),jl(),Jn(),Pl(253),Il(266),jl(),Jn()}ic.endNonterminal("FTRange",Vl)}function Du(){switch($l){case 131:Hl(131),Il(266),Kn();break;case 82:Hl(82),Il(129);switch($l){case 176:Hl(176),Il(266),Kn();break;default:Hl(186),Il(266),Kn()}break;default:Hl(142),Il(266),Kn(),Hl(253),Il(266),Kn()}}function Pu(){ic.startNonterminal("FTPosFilter",Vl);switch($l){case 206:Bu();break;case 275:Fu();break;case 118:qu();break;case 116:case 227:Wu();break;default:Ju()}ic.endNonterminal("FTPosFilter",Vl)}function Hu(){switch($l){case 206:ju();break;case 275:Iu();break;case 118:Ru();break;case 116:case 227:Xu();break;default:Ku()}}function Bu(){ic.startNonterminal("FTOrder",Vl),Pl(206),ic.endNonterminal("FTOrder",Vl)}function ju(){Hl(206)}function Fu(){ic.startNonterminal("FTWindow",Vl),Pl(275),Il(266),jl(),Jn(),jl(),Uu(),ic.endNonterminal("FTWindow",Vl)}function Iu(){Hl(275),Il(266),Kn(),zu()}function qu(){ic.startNonterminal("FTDistance",Vl),Pl(118),Il(159),jl(),_u(),jl(),Uu(),ic.endNonterminal("FTDistance",Vl)}function Ru(){Hl(118),Il(159),Du(),zu()}function Uu(){ic.startNonterminal("FTUnit",Vl);switch($l){case 279:Pl(279);break;case 237:Pl(237);break;default:Pl(209)}ic.endNonterminal("FTUnit",Vl)}function zu(){switch($l){case 279:Hl(279);break;case 237:Hl(237);break;default:Hl(209)}}function Wu(){ic.startNonterminal("FTScope",Vl);switch($l){case 227:Pl(227);break;default:Pl(116)}Il(136),jl(),Vu(),ic.endNonterminal("FTScope",Vl)}function Xu(){switch($l){case 227:Hl(227);break;default:Hl(116)}Il(136),$u()}function Vu(){ic.startNonterminal("FTBigUnit",Vl);switch($l){case 236:Pl(236);break;default:Pl(208)}ic.endNonterminal("FTBigUnit",Vl)}function $u(){switch($l){case 236:Hl(236);break;default:Hl(208)}}function Ju(){ic.startNonterminal("FTContent",Vl);switch($l){case 82:Pl(82),Il(121);switch($l){case 242:Pl(242);break;default:Pl(127)}break;default:Pl(128),Il(45),Pl(101)}ic.endNonterminal("FTContent",Vl)}function Ku(){switch($l){case 82:Hl(82),Il(121);switch($l){case 242:Hl(242);break;default:Hl(127)}break;default:Hl(128),Il(45),Hl(101)}}function Qu(){ic.startNonterminal("FTMatchOptions",Vl);for(;;){Pl(265),Il(205),jl(),Yu(),Il(214);if($l!=265)break}ic.endNonterminal("FTMatchOptions",Vl)}function Gu(){for(;;){Hl(265),Il(205),Zu(),Il(214);if($l!=265)break}}function Yu(){ic.startNonterminal("FTMatchOption",Vl);switch($l){case 191:ql(176);break;default:Wl=$l}switch(Wl){case 172:ya();break;case 274:case 140479:wa();break;case 251:case 128703:oa();break;case 243:case 124607:ia();break;case 115:na();break;case 244:case 125119:ha();break;case 203:Sa();break;default:ea()}ic.endNonterminal("FTMatchOption",Vl)}function Zu(){switch($l){case 191:ql(176);break;default:Wl=$l}switch(Wl){case 172:ba();break;case 274:case 140479:Ea();break;case 251:case 128703:ua();break;case 243:case 124607:sa();break;case 115:ra();break;case 244:case 125119:pa();break;case 203:xa();break;default:ta()}}function ea(){ic.startNonterminal("FTCaseOption",Vl);switch($l){case 89:Pl(89),Il(128);switch($l){case 160:Pl(160);break;default:Pl(235)}break;case 180:Pl(180);break;default:Pl(264)}ic.endNonterminal("FTCaseOption",Vl)}function ta(){switch($l){case 89:Hl(89),Il(128);switch($l){case 160:Hl(160);break;default:Hl(235)}break;case 180:Hl(180);break;default:Hl(264)}}function na(){ic.startNonterminal("FTDiacriticsOption",Vl),Pl(115),Il(128);switch($l){case 160:Pl(160);break;default:Pl(235)}ic.endNonterminal("FTDiacriticsOption",Vl)}function ra(){Hl(115),Il(128);switch($l){case 160:Hl(160);break;default:Hl(235)}}function ia(){ic.startNonterminal("FTStemOption",Vl);switch($l){case 243:Pl(243);break;default:Pl(191),Il(77),Pl(243)}ic.endNonterminal("FTStemOption",Vl)}function sa(){switch($l){case 243:Hl(243);break;default:Hl(191),Il(77),Hl(243)}}function oa(){ic.startNonterminal("FTThesaurusOption",Vl);switch($l){case 251:Pl(251),Il(152);switch($l){case 82:jl(),aa();break;case 110:Pl(110);break;default:Pl(35),Il(116);switch($l){case 82:jl(),aa();break;default:Pl(110)}for(;;){Il(105);if($l!=42)break;Pl(42),Il(34),jl(),aa()}Pl(38)}break;default:Pl(191),Il(81),Pl(251)}ic.endNonterminal("FTThesaurusOption",Vl)}function ua(){switch($l){case 251:Hl(251),Il(152);switch($l){case 82:fa();break;case 110:Hl(110);break;default:Hl(35),Il(116);switch($l){case 82:fa();break;default:Hl(110)}for(;;){Il(105);if($l!=42)break;Hl(42),Il(34),fa()}Hl(38)}break;default:Hl(191),Il(81),Hl(251)}}function aa(){ic.startNonterminal("FTThesaurusID",Vl),Pl(82),Il(15),Pl(7),Il(220),$l==221&&(Pl(221),Il(17),Pl(11)),Il(216);switch($l){case 82:ql(183);break;default:Wl=$l}if(Wl==131||Wl==142||Wl==90194||Wl==95314)jl(),la(),Il(61),Pl(178);ic.endNonterminal("FTThesaurusID",Vl)}function fa(){Hl(82),Il(15),Hl(7),Il(220),$l==221&&(Hl(221),Il(17),Hl(11)),Il(216);switch($l){case 82:ql(183);break;default:Wl=$l}if(Wl==131||Wl==142||Wl==90194||Wl==95314)ca(),Il(61),Hl(178)}function la(){ic.startNonterminal("FTLiteralRange",Vl);switch($l){case 131:Pl(131),Il(16),Pl(8);break;case 82:Pl(82),Il(129);switch($l){case 176:Pl(176),Il(16),Pl(8);break;default:Pl(186),Il(16),Pl(8)}break;default:Pl(142),Il(16),Pl(8),Il(82),Pl(253),Il(16),Pl(8)}ic.endNonterminal("FTLiteralRange",Vl)}function ca(){switch($l){case 131:Hl(131),Il(16),Hl(8);break;case 82:Hl(82),Il(129);switch($l){case 176:Hl(176),Il(16),Hl(8);break;default:Hl(186),Il(16),Hl(8)}break;default:Hl(142),Il(16),Hl(8),Il(82),Hl(253),Il(16),Hl(8)}}function ha(){ic.startNonterminal("FTStopWordOption",Vl);switch($l){case 244:Pl(244),Il(89),Pl(279),Il(152);switch($l){case 110:Pl(110);for(;;){Il(217);if($l!=132&&$l!=260)break;jl(),ma()}break;default:jl(),da();for(;;){Il(217);if($l!=132&&$l!=260)break;jl(),ma()}}break;default:Pl(191),Il(78),Pl(244),Il(89),Pl(279)}ic.endNonterminal("FTStopWordOption",Vl)}function pa(){switch($l){case 244:Hl(244),Il(89),Hl(279),Il(152);switch($l){case 110:Hl(110);for(;;){Il(217);if($l!=132&&$l!=260)break;ga()}break;default:va();for(;;){Il(217);if($l!=132&&$l!=260)break;ga()}}break;default:Hl(191),Il(78),Hl(244),Il(89),Hl(279)}}function da(){ic.startNonterminal("FTStopWords",Vl);switch($l){case 82:Pl(82),Il(15),Pl(7);break;default:Pl(35),Il(17),Pl(11);for(;;){Il(105);if($l!=42)break;Pl(42),Il(17),Pl(11)}Pl(38)}ic.endNonterminal("FTStopWords",Vl)}function va(){switch($l){case 82:Hl(82),Il(15),Hl(7);break;default:Hl(35),Il(17),Hl(11);for(;;){Il(105);if($l!=42)break;Hl(42),Il(17),Hl(11)}Hl(38)}}function ma(){ic.startNonterminal("FTStopWordsInclExcl",Vl);switch($l){case 260:Pl(260);break;default:Pl(132)}Il(103),jl(),da(),ic.endNonterminal("FTStopWordsInclExcl",Vl)}function ga(){switch($l){case 260:Hl(260);break;default:Hl(132)}Il(103),va()}function ya(){ic.startNonterminal("FTLanguageOption",Vl),Pl(172),Il(17),Pl(11),ic.endNonterminal("FTLanguageOption",Vl)}function ba(){Hl(172),Il(17),Hl(11)}function wa(){ic.startNonterminal("FTWildCardOption",Vl);switch($l){case 274:Pl(274);break;default:Pl(191),Il(87),Pl(274)}ic.endNonterminal("FTWildCardOption",Vl)}function Ea(){switch($l){case 274:Hl(274);break;default:Hl(191),Il(87),Hl(274)}}function Sa(){ic.startNonterminal("FTExtensionOption",Vl),Pl(203),Il(246),jl(),$a(),Il(17),Pl(11),ic.endNonterminal("FTExtensionOption",Vl)}function xa(){Hl(203),Il(246),Ja(),Il(17),Hl(11)}function Ta(){ic.startNonterminal("FTIgnoreOption",Vl),Pl(277),Il(45),Pl(101),Il(266),jl(),Yn(),ic.endNonterminal("FTIgnoreOption",Vl)}function Na(){Hl(277),Il(45),Hl(101),Il(266),Zn()}function Ca(){ic.startNonterminal("CollectionDecl",Vl),Pl(96),Il(246),jl(),$a(),Il(111),$l==80&&(jl(),ka()),ic.endNonterminal("CollectionDecl",Vl)}function ka(){ic.startNonterminal("CollectionTypeDecl",Vl),Pl(80),Il(200),jl(),Vs(),Il(171),$l!=54&&(jl(),Os()),ic.endNonterminal("CollectionTypeDecl",Vl)}function La(){ic.startNonterminal("IndexName",Vl),$a(),ic.endNonterminal("IndexName",Vl)}function Aa(){ic.startNonterminal("IndexDomainExpr",Vl),Or(),ic.endNonterminal("IndexDomainExpr",Vl)}function Oa(){ic.startNonterminal("IndexKeySpec",Vl),Ma(),$l==80&&(jl(),_a()),Il(156),$l==95&&(jl(),Pa()),ic.endNonterminal("IndexKeySpec",Vl)}function Ma(){ic.startNonterminal("IndexKeyExpr",Vl),Or(),ic.endNonterminal("IndexKeyExpr",Vl)}function _a(){ic.startNonterminal("IndexKeyTypeDecl",Vl),Pl(80),Il(246),jl(),Da(),Il(189);if($l==40||$l==41||$l==65)jl(),Os();ic.endNonterminal("IndexKeyTypeDecl",Vl)}function Da(){ic.startNonterminal("AtomicType",Vl),$a(),ic.endNonterminal("AtomicType",Vl)}function Pa(){ic.startNonterminal("IndexKeyCollation",Vl),Pl(95),Il(15),Pl(7),ic.endNonterminal("IndexKeyCollation",Vl)}function Ha(){ic.startNonterminal("IndexDecl",Vl),Pl(157),Il(246),jl(),La(),Il(68),Pl(201),Il(66),Pl(195),Il(263),jl(),Aa(),Pl(88),Il(263),jl(),Oa();for(;;){Il(107);if($l!=42)break;Pl(42),Il(263),jl(),Oa()}ic.endNonterminal("IndexDecl",Vl)}function Ba(){ic.startNonterminal("ICDecl",Vl),Pl(163),Il(43),Pl(98),Il(246),jl(),$a(),Il(124);switch($l){case 201:jl(),ja();break;default:jl(),Ra()}ic.endNonterminal("ICDecl",Vl)}function ja(){ic.startNonterminal("ICCollection",Vl),Pl(201),Il(42),Pl(96),Il(246),jl(),$a(),Il(150);switch($l){case 31:jl(),Fa();break;case 194:jl(),Ia();break;default:jl(),qa()}ic.endNonterminal("ICCollection",Vl)}function Fa(){ic.startNonterminal("ICCollSequence",Vl),Si(),Il(40),Pl(93),Il(267),jl(),Wf(),ic.endNonterminal("ICCollSequence",Vl)}function Ia(){ic.startNonterminal("ICCollSequenceUnique",Vl),Pl(194),Il(21),jl(),Si(),Il(40),Pl(93),Il(83),Pl(261),Il(60),Pl(171),Il(263),jl(),Or(),ic.endNonterminal("ICCollSequenceUnique",Vl)}function qa(){ic.startNonterminal("ICCollNode",Vl),Pl(140),Il(65),Pl(194),Il(21),jl(),Si(),Il(40),Pl(93),Il(267),jl(),Wf(),ic.endNonterminal("ICCollNode",Vl)}function Ra(){ic.startNonterminal("ICForeignKey",Vl),Pl(141),Il(60),Pl(171),Il(54),jl(),Ua(),jl(),za(),ic.endNonterminal("ICForeignKey",Vl)}function Ua(){ic.startNonterminal("ICForeignKeySource",Vl),Pl(142),Il(42),jl(),Wa(),ic.endNonterminal("ICForeignKeySource",Vl)}function za(){ic.startNonterminal("ICForeignKeyTarget",Vl),Pl(253),Il(42),jl(),Wa(),ic.endNonterminal("ICForeignKeyTarget",Vl)}function Wa(){ic.startNonterminal("ICForeignKeyValues",Vl),Pl(96),Il(246),jl(),$a(),Il(65),Pl(194),Il(21),jl(),Si(),Il(60),Pl(171),Il(263),jl(),Or(),ic.endNonterminal("ICForeignKeyValues",Vl)}function Xa(){Hl(37);for(;;){Rl(92);if($l==51)break;switch($l){case 24:Hl(24);break;default:Xa()}}Hl(51)}function Va(){switch($l){case 22:Hl(22);break;default:Xa()}}function $a(){ic.startNonterminal("EQName",Vl),Rl(241);switch($l){case 83:Pl(83);break;case 97:Pl(97);break;case 121:Pl(121);break;case 122:Pl(122);break;case 125:Pl(125);break;case 147:Pl(147);break;case 154:Pl(154);break;case 167:Pl(167);break;case 188:Pl(188);break;case 194:Pl(194);break;case 220:Pl(220);break;case 230:Pl(230);break;case 231:Pl(231);break;case 248:Pl(248);break;case 249:Pl(249);break;case 259:Pl(259);break;case 79:Pl(79);break;case 169:Pl(169);break;case 247:Pl(247);break;default:Ka()}ic.endNonterminal("EQName",Vl)}function Ja(){Rl(241);switch($l){case 83:Hl(83);break;case 97:Hl(97);break;case 121:Hl(121);break;case 122:Hl(122);break;case 125:Hl(125);break;case 147:Hl(147);break;case 154:Hl(154);break;case 167:Hl(167);break;case 188:Hl(188);break;case 194:Hl(194);break;case 220:Hl(220);break;case 230:Hl(230);break;case 231:Hl(231);break;case 248:Hl(248);break;case 249:Hl(249);break;case 259:Hl(259);break;case 79:Hl(79);break;case 169:Hl(169);break;case 247:Hl(247);break;default:Qa()}}function Ka(){ic.startNonterminal("FunctionName",Vl);switch($l){case 6:Pl(6);break;case 71:Pl(71);break;case 74:Pl(74);break;case 75:Pl(75);break;case 76:Pl(76);break;case 80:Pl(80);break;case 81:Pl(81);break;case 85:Pl(85);break;case 89:Pl(89);break;case 90:Pl(90);break;case 91:Pl(91);break;case 94:Pl(94);break;case 95:Pl(95);break;case 104:Pl(104);break;case 106:Pl(106);break;case 109:Pl(109);break;case 110:Pl(110);break;case 111:Pl(111);break;case 112:Pl(112);break;case 113:Pl(113);break;case 114:Pl(114);break;case 119:Pl(119);break;case 120:Pl(120);break;case 123:Pl(123);break;case 124:Pl(124);break;case 127:Pl(127);break;case 129:Pl(129);break;case 130:Pl(130);break;case 132:Pl(132);break;case 136:Pl(136);break;case 137:Pl(137);break;case 138:Pl(138);break;case 139:Pl(139);break;case 148:Pl(148);break;case 150:Pl(150);break;case 152:Pl(152);break;case 153:Pl(153);break;case 155:Pl(155);break;case 161:Pl(161);break;case 162:Pl(162);break;case 164:Pl(164);break;case 165:Pl(165);break;case 166:Pl(166);break;case 173:Pl(173);break;case 175:Pl(175);break;case 177:Pl(177);break;case 181:Pl(181);break;case 183:Pl(183);break;case 184:Pl(184);break;case 185:Pl(185);break;case 187:Pl(187);break;case 189:Pl(189);break;case 202:Pl(202);break;case 204:Pl(204);break;case 205:Pl(205);break;case 206:Pl(206);break;case 210:Pl(210);break;case 216:Pl(216);break;case 217:Pl(217);break;case 222:Pl(222);break;case 223:Pl(223);break;case 224:Pl(224);break;case 228:Pl(228);break;case 234:Pl(234);break;case 240:Pl(240);break;case 241:Pl(241);break;case 242:Pl(242);break;case 253:Pl(253);break;case 254:Pl(254);break;case 256:Pl(256);break;case 260:Pl(260);break;case 262:Pl(262);break;case 266:Pl(266);break;case 272:Pl(272);break;case 276:Pl(276);break;case 170:Pl(170);break;case 73:Pl(73);break;case 82:Pl(82);break;case 84:Pl(84);break;case 86:Pl(86);break;case 87:Pl(87);break;case 92:Pl(92);break;case 99:Pl(99);break;case 102:Pl(102);break;case 103:Pl(103);break;case 105:Pl(105);break;case 107:Pl(107);break;case 126:Pl(126);break;case 133:Pl(133);break;case 134:Pl(134);break;case 143:Pl(143);break;case 156:Pl(156);break;case 157:Pl(157);break;case 163:Pl(163);break;case 174:Pl(174);break;case 195:Pl(195);break;case 203:Pl(203);break;case 207:Pl(207);break;case 226:Pl(226);break;case 229:Pl(229);break;case 232:Pl(232);break;case 239:Pl(239);break;case 245:Pl(245);break;case 257:Pl(257);break;case 258:Pl(258);break;case 263:Pl(263);break;case 267:Pl(267);break;case 268:Pl(268);break;case 269:Pl(269);break;case 273:Pl(273);break;case 98:Pl(98);break;case 179:Pl(179);break;case 225:Pl(225);break;case 78:Pl(78);break;case 135:Pl(135);break;case 142:Pl(142);break;case 197:Pl(197);break;case 168:Pl(168);break;case 198:Pl(198);break;case 233:Pl(233);break;default:Pl(255)}ic.endNonterminal("FunctionName",Vl)}function Qa(){switch($l){case 6:Hl(6);break;case 71:Hl(71);break;case 74:Hl(74);break;case 75:Hl(75);break;case 76:Hl(76);break;case 80:Hl(80);break;case 81:Hl(81);break;case 85:Hl(85);break;case 89:Hl(89);break;case 90:Hl(90);break;case 91:Hl(91);break;case 94:Hl(94);break;case 95:Hl(95);break;case 104:Hl(104);break;case 106:Hl(106);break;case 109:Hl(109);break;case 110:Hl(110);break;case 111:Hl(111);break;case 112:Hl(112);break;case 113:Hl(113);break;case 114:Hl(114);break;case 119:Hl(119);break;case 120:Hl(120);break;case 123:Hl(123);break;case 124:Hl(124);break;case 127:Hl(127);break;case 129:Hl(129);break;case 130:Hl(130);break;case 132:Hl(132);break;case 136:Hl(136);break;case 137:Hl(137);break;case 138:Hl(138);break;case 139:Hl(139);break;case 148:Hl(148);break;case 150:Hl(150);break;case 152:Hl(152);break;case 153:Hl(153);break;case 155:Hl(155);break;case 161:Hl(161);break;case 162:Hl(162);break;case 164:Hl(164);break;case 165:Hl(165);break;case 166:Hl(166);break;case 173:Hl(173);break;case 175:Hl(175);break;case 177:Hl(177);break;case 181:Hl(181);break;case 183:Hl(183);break;case 184:Hl(184);break;case 185:Hl(185);break;case 187:Hl(187);break;case 189:Hl(189);break;case 202:Hl(202);break;case 204:Hl(204);break;case 205:Hl(205);break;case 206:Hl(206);break;case 210:Hl(210);break;case 216:Hl(216);break;case 217:Hl(217);break;case 222:Hl(222);break;case 223:Hl(223);break;case 224:Hl(224);break;case 228:Hl(228);break;case 234:Hl(234);break;case 240:Hl(240);break;case 241:Hl(241);break;case 242:Hl(242);break;case 253:Hl(253);break;case 254:Hl(254);break;case 256:Hl(256);break;case 260:Hl(260);break;case 262:Hl(262);break;case 266:Hl(266);break;case 272:Hl(272);break;case 276:Hl(276);break;case 170:Hl(170);break;case 73:Hl(73);break;case 82:Hl(82);break;case 84:Hl(84);break;case 86:Hl(86);break;case 87:Hl(87);break;case 92:Hl(92);break;case 99:Hl(99);break;case 102:Hl(102);break;case 103:Hl(103);break;case 105:Hl(105);break;case 107:Hl(107);break;case 126:Hl(126);break;case 133:Hl(133);break;case 134:Hl(134);break;case 143:Hl(143);break;case 156:Hl(156);break;case 157:Hl(157);break;case 163:Hl(163);break;case 174:Hl(174);break;case 195:Hl(195);break;case 203:Hl(203);break;case 207:Hl(207);break;case 226:Hl(226);break;case 229:Hl(229);break;case 232:Hl(232);break;case 239:Hl(239);break;case 245:Hl(245);break;case 257:Hl(257);break;case 258:Hl(258);break;case 263:Hl(263);break;case 267:Hl(267);break;case 268:Hl(268);break;case 269:Hl(269);break;case 273:Hl(273);break;case 98:Hl(98);break;case 179:Hl(179);break;case 225:Hl(225);break;case 78:Hl(78);break;case 135:Hl(135);break;case 142:Hl(142);break;case 197:Hl(197);break;case 168:Hl(168);break;case 198:Hl(198);break;case 233:Hl(233);break;default:Hl(255)}}function Ga(){ic.startNonterminal("NCName",Vl);switch($l){case 19:Pl(19);break;case 71:Pl(71);break;case 76:Pl(76);break;case 80:Pl(80);break;case 81:Pl(81);break;case 85:Pl(85);break;case 89:Pl(89);break;case 90:Pl(90);break;case 91:Pl(91);break;case 95:Pl(95);break;case 106:Pl(106);break;case 110:Pl(110);break;case 114:Pl(114);break;case 119:Pl(119);break;case 123:Pl(123);break;case 124:Pl(124);break;case 127:Pl(127);break;case 129:Pl(129);break;case 132:Pl(132);break;case 139:Pl(139);break;case 148:Pl(148);break;case 150:Pl(150);break;case 152:Pl(152);break;case 153:Pl(153);break;case 162:Pl(162);break;case 164:Pl(164);break;case 165:Pl(165);break;case 166:Pl(166);break;case 175:Pl(175);break;case 177:Pl(177);break;case 181:Pl(181);break;case 183:Pl(183);break;case 184:Pl(184);break;case 189:Pl(189);break;case 202:Pl(202);break;case 204:Pl(204);break;case 205:Pl(205);break;case 224:Pl(224);break;case 228:Pl(228);break;case 241:Pl(241);break;case 242:Pl(242);break;case 253:Pl(253);break;case 254:Pl(254);break;case 260:Pl(260);break;case 272:Pl(272);break;case 276:Pl(276);break;case 74:Pl(74);break;case 75:Pl(75);break;case 83:Pl(83);break;case 94:Pl(94);break;case 97:Pl(97);break;case 104:Pl(104);break;case 109:Pl(109);break;case 111:Pl(111);break;case 112:Pl(112);break;case 113:Pl(113);break;case 120:Pl(120);break;case 121:Pl(121);break;case 122:Pl(122);break;case 125:Pl(125);break;case 130:Pl(130);break;case 136:Pl(136);break;case 137:Pl(137);break;case 138:Pl(138);break;case 147:Pl(147);break;case 154:Pl(154);break;case 155:Pl(155);break;case 161:Pl(161);break;case 167:Pl(167);break;case 173:Pl(173);break;case 185:Pl(185);break;case 187:Pl(187);break;case 188:Pl(188);break;case 194:Pl(194);break;case 206:Pl(206);break;case 210:Pl(210);break;case 216:Pl(216);break;case 217:Pl(217);break;case 220:Pl(220);break;case 222:Pl(222);break;case 223:Pl(223);break;case 230:Pl(230);break;case 231:Pl(231);break;case 234:Pl(234);break;case 240:Pl(240);break;case 248:Pl(248);break;case 249:Pl(249);break;case 256:Pl(256);break;case 259:Pl(259);break;case 262:Pl(262);break;case 266:Pl(266);break;case 268:Pl(268);break;case 170:Pl(170);break;case 73:Pl(73);break;case 82:Pl(82);break;case 84:Pl(84);break;case 86:Pl(86);break;case 87:Pl(87);break;case 92:Pl(92);break;case 99:Pl(99);break;case 102:Pl(102);break;case 103:Pl(103);break;case 105:Pl(105);break;case 107:Pl(107);break;case 126:Pl(126);break;case 133:Pl(133);break;case 134:Pl(134);break;case 143:Pl(143);break;case 156:Pl(156);break;case 157:Pl(157);break;case 163:Pl(163);break;case 174:Pl(174);break;case 195:Pl(195);break;case 203:Pl(203);break;case 207:Pl(207);break;case 226:Pl(226);break;case 229:Pl(229);break;case 232:Pl(232);break;case 239:Pl(239);break;case 245:Pl(245);break;case 257:Pl(257);break;case 258:Pl(258);break;case 263:Pl(263);break;case 267:Pl(267);break;case 269:Pl(269);break;case 273:Pl(273);break;case 98:Pl(98);break;case 179:Pl(179);break;case 225:Pl(225);break;case 78:Pl(78);break;case 135:Pl(135);break;case 142:Pl(142);break;case 197:Pl(197);break;case 168:Pl(168);break;case 198:Pl(198);break;case 233:Pl(233);break;default:Pl(255)}ic.endNonterminal("NCName",Vl)}function Ya(){switch($l){case 19:Hl(19);break;case 71:Hl(71);break;case 76:Hl(76);break;case 80:Hl(80);break;case 81:Hl(81);break;case 85:Hl(85);break;case 89:Hl(89);break;case 90:Hl(90);break;case 91:Hl(91);break;case 95:Hl(95);break;case 106:Hl(106);break;case 110:Hl(110);break;case 114:Hl(114);break;case 119:Hl(119);break;case 123:Hl(123);break;case 124:Hl(124);break;case 127:Hl(127);break;case 129:Hl(129);break;case 132:Hl(132);break;case 139:Hl(139);break;case 148:Hl(148);break;case 150:Hl(150);break;case 152:Hl(152);break;case 153:Hl(153);break;case 162:Hl(162);break;case 164:Hl(164);break;case 165:Hl(165);break;case 166:Hl(166);break;case 175:Hl(175);break;case 177:Hl(177);break;case 181:Hl(181);break;case 183:Hl(183);break;case 184:Hl(184);break;case 189:Hl(189);break;case 202:Hl(202);break;case 204:Hl(204);break;case 205:Hl(205);break;case 224:Hl(224);break;case 228:Hl(228);break;case 241:Hl(241);break;case 242:Hl(242);break;case 253:Hl(253);break;case 254:Hl(254);break;case 260:Hl(260);break;case 272:Hl(272);break;case 276:Hl(276);break;case 74:Hl(74);break;case 75:Hl(75);break;case 83:Hl(83);break;case 94:Hl(94);break;case 97:Hl(97);break;case 104:Hl(104);break;case 109:Hl(109);break;case 111:Hl(111);break;case 112:Hl(112);break;case 113:Hl(113);break;case 120:Hl(120);break;case 121:Hl(121);break;case 122:Hl(122);break;case 125:Hl(125);break;case 130:Hl(130);break;case 136:Hl(136);break;case 137:Hl(137);break;case 138:Hl(138);break;case 147:Hl(147);break;case 154:Hl(154);break;case 155:Hl(155);break;case 161:Hl(161);break;case 167:Hl(167);break;case 173:Hl(173);break;case 185:Hl(185);break;case 187:Hl(187);break;case 188:Hl(188);break;case 194:Hl(194);break;case 206:Hl(206);break;case 210:Hl(210);break;case 216:Hl(216);break;case 217:Hl(217);break;case 220:Hl(220);break;case 222:Hl(222);break;case 223:Hl(223);break;case 230:Hl(230);break;case 231:Hl(231);break;case 234:Hl(234);break;case 240:Hl(240);break;case 248:Hl(248);break;case 249:Hl(249);break;case 256:Hl(256);break;case 259:Hl(259);break;case 262:Hl(262);break;case 266:Hl(266);break;case 268:Hl(268);break;case 170:Hl(170);break;case 73:Hl(73);break;case 82:Hl(82);break;case 84:Hl(84);break;case 86:Hl(86);break;case 87:Hl(87);break;case 92:Hl(92);break;case 99:Hl(99);break;case 102:Hl(102);break;case 103:Hl(103);break;case 105:Hl(105);break;case 107:Hl(107);break;case 126:Hl(126);break;case 133:Hl(133);break;case 134:Hl(134);break;case 143:Hl(143);break;case 156:Hl(156);break;case 157:Hl(157);break;case 163:Hl(163);break;case 174:Hl(174);break;case 195:Hl(195);break;case 203:Hl(203);break;case 207:Hl(207);break;case 226:Hl(226);break;case 229:Hl(229);break;case 232:Hl(232);break;case 239:Hl(239);break;case 245:Hl(245);break;case 257:Hl(257);break;case 258:Hl(258);break;case 263:Hl(263);break;case 267:Hl(267);break;case 269:Hl(269);break;case 273:Hl(273);break;case 98:Hl(98);break;case 179:Hl(179);break;case 225:Hl(225);break;case 78:Hl(78);break;case 135:Hl(135);break;case 142:Hl(142);break;case 197:Hl(197);break;case 168:Hl(168);break;case 198:Hl(198);break;case 233:Hl(233);break;default:Hl(255)}}function Za(){ic.startNonterminal("MainModule",Vl),l(),jl(),ef(),ic.endNonterminal("MainModule",Vl)}function ef(){ic.startNonterminal("Program",Vl),of(),ic.endNonterminal("Program",Vl)}function tf(){ic.startNonterminal("Statements",Vl);for(;;){Il(284);switch($l){case 35:ql(270);break;case 36:Ul(243);break;case 47:ql(286);break;case 48:ql(260);break;case 55:Ul(4);break;case 56:Ul(1);break;case 60:Ul(3);break;case 69:ql(273);break;case 78:ql(269);break;case 133:ql(147);break;case 139:ql(179);break;case 161:ql(276);break;case 177:ql(166);break;case 187:ql(247);break;case 220:ql(245);break;case 223:ql(170);break;case 266:ql(188);break;case 281:ql(283);break;case 283:ql(274);break;case 31:case 33:ql(246);break;case 83:case 122:ql(253);break;case 87:case 103:ql(145);break;case 97:case 249:ql(97);break;case 111:case 222:ql(261);break;case 41:case 43:case 196:ql(266);break;case 135:case 197:case 255:ql(211);break;case 104:case 130:case 240:case 268:ql(143);break;case 120:case 206:case 256:case 262:ql(148);break;case 8:case 9:case 10:case 11:case 32:ql(210);break;case 79:case 121:case 125:case 167:case 169:case 188:case 194:case 230:case 231:case 247:ql(20);break;case 6:case 71:case 73:case 74:case 75:case 76:case 80:case 81:case 82:case 84:case 85:case 86:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 105:case 106:case 107:case 109:case 110:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 132:case 134:case 136:case 137:case 138:case 142:case 143:case 147:case 148:case 150:case 152:case 153:case 154:case 155:case 156:case 157:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 241:case 242:case 245:case 248:case 253:case 254:case 257:case 258:case 259:case 260:case 263:case 267:case 269:case 272:case 273:case 276:ql(95);break;default:Wl=$l}if(Wl!=25&&Wl!=54&&Wl!=287&&Wl!=12808&&Wl!=12809&&Wl!=12810&&Wl!=12811&&Wl!=12832&&Wl!=12847&&Wl!=12935&&Wl!=12997&&Wl!=13055&&Wl!=16140&&Wl!=21512&&Wl!=21513&&Wl!=21514&&Wl!=21515&&Wl!=21536&&Wl!=21551&&Wl!=21639&&Wl!=21701&&Wl!=21759&&Wl!=27656&&Wl!=27657&&Wl!=27658&&Wl!=27659&&Wl!=27680&&Wl!=27695&&Wl!=27783&&Wl!=27845&&Wl!=27903&&Wl!=91735&&Wl!=91751&&Wl!=115333&&Wl!=146952&&Wl!=146953&&Wl!=146954&&Wl!=146955&&Wl!=146976&&Wl!=146991&&Wl!=147079&&Wl!=147141&&Wl!=147199){Wl=uc(8,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{ff(),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(8,Vl,Wl)}}if(Wl!=-1&&Wl!=54&&Wl!=16140&&Wl!=27656&&Wl!=27657&&Wl!=27658&&Wl!=27659&&Wl!=27680&&Wl!=27695&&Wl!=27783&&Wl!=27845&&Wl!=27903&&Wl!=91735&&Wl!=91751&&Wl!=115333)break;jl(),af()}ic.endNonterminal("Statements",Vl)}function nf(){for(;;){Il(284);switch($l){case 35:ql(270);break;case 36:Ul(243);break;case 47:ql(286);break;case 48:ql(260);break;case 55:Ul(4);break;case 56:Ul(1);break;case 60:Ul(3);break;case 69:ql(273);break;case 78:ql(269);break;case 133:ql(147);break;case 139:ql(179);break;case 161:ql(276);break;case 177:ql(166);break;case 187:ql(247);break;case 220:ql(245);break;case 223:ql(170);break;case 266:ql(188);break;case 281:ql(283);break;case 283:ql(274);break;case 31:case 33:ql(246);break;case 83:case 122:ql(253);break;case 87:case 103:ql(145);break;case 97:case 249:ql(97);break;case 111:case 222:ql(261);break;case 41:case 43:case 196:ql(266);break;case 135:case 197:case 255:ql(211);break;case 104:case 130:case 240:case 268:ql(143);break;case 120:case 206:case 256:case 262:ql(148);break;case 8:case 9:case 10:case 11:case 32:ql(210);break;case 79:case 121:case 125:case 167:case 169:case 188:case 194:case 230:case 231:case 247:ql(20);break;case 6:case 71:case 73:case 74:case 75:case 76:case 80:case 81:case 82:case 84:case 85:case 86:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 105:case 106:case 107:case 109:case 110:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 132:case 134:case 136:case 137:case 138:case 142:case 143:case 147:case 148:case 150:case 152:case 153:case 154:case 155:case 156:case 157:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 241:case 242:case 245:case 248:case 253:case 254:case 257:case 258:case 259:case 260:case 263:case 267:case 269:case 272:case 273:case 276:ql(95);break;default:Wl=$l}if(Wl!=25&&Wl!=54&&Wl!=287&&Wl!=12808&&Wl!=12809&&Wl!=12810&&Wl!=12811&&Wl!=12832&&Wl!=12847&&Wl!=12935&&Wl!=12997&&Wl!=13055&&Wl!=16140&&Wl!=21512&&Wl!=21513&&Wl!=21514&&Wl!=21515&&Wl!=21536&&Wl!=21551&&Wl!=21639&&Wl!=21701&&Wl!=21759&&Wl!=27656&&Wl!=27657&&Wl!=27658&&Wl!=27659&&Wl!=27680&&Wl!=27695&&Wl!=27783&&Wl!=27845&&Wl!=27903&&Wl!=91735&&Wl!=91751&&Wl!=115333&&Wl!=146952&&Wl!=146953&&Wl!=146954&&Wl!=146955&&Wl!=146976&&Wl!=146991&&Wl!=147079&&Wl!=147141&&Wl!=147199){Wl=uc(8,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{ff(),oc(8,t,-1);continue}catch(a){Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(8,t,-2);break}}}if(Wl!=-1&&Wl!=54&&Wl!=16140&&Wl!=27656&&Wl!=27657&&Wl!=27658&&Wl!=27659&&Wl!=27680&&Wl!=27695&&Wl!=27783&&Wl!=27845&&Wl!=27903&&Wl!=91735&&Wl!=91751&&Wl!=115333)break;ff()}}function rf(){ic.startNonterminal("StatementsAndExpr",Vl),tf(),jl(),G(),ic.endNonterminal("StatementsAndExpr",Vl)}function sf(){nf(),Y()}function of(){ic.startNonterminal("StatementsAndOptionalExpr",Vl),tf(),$l!=25&&$l!=287&&(jl(),G()),ic.endNonterminal("StatementsAndOptionalExpr",Vl)}function uf(){nf(),$l!=25&&$l!=287&&Y()}function af(){ic.startNonterminal("Statement",Vl);switch($l){case 133:ql(147);break;case 139:ql(179);break;case 177:ql(166);break;case 256:ql(148);break;case 268:ql(143);break;case 281:ql(283);break;case 31:case 33:ql(246);break;case 87:case 103:ql(145);break;case 154:case 248:case 259:case 273:ql(95);break;default:Wl=$l}if(Wl!=6&&Wl!=8&&Wl!=9&&Wl!=10&&Wl!=11&&Wl!=32&&Wl!=35&&Wl!=36&&Wl!=41&&Wl!=43&&Wl!=47&&Wl!=48&&Wl!=54&&Wl!=55&&Wl!=56&&Wl!=60&&Wl!=69&&Wl!=71&&Wl!=73&&Wl!=74&&Wl!=75&&Wl!=76&&Wl!=78&&Wl!=79&&Wl!=80&&Wl!=81&&Wl!=82&&Wl!=83&&Wl!=84&&Wl!=85&&Wl!=86&&Wl!=89&&Wl!=90&&Wl!=91&&Wl!=92&&Wl!=94&&Wl!=95&&Wl!=97&&Wl!=98&&Wl!=99&&Wl!=102&&Wl!=104&&Wl!=105&&Wl!=106&&Wl!=107&&Wl!=109&&Wl!=110&&Wl!=111&&Wl!=112&&Wl!=113&&Wl!=114&&Wl!=119&&Wl!=120&&Wl!=121&&Wl!=122&&Wl!=123&&Wl!=124&&Wl!=125&&Wl!=126&&Wl!=127&&Wl!=129&&Wl!=130&&Wl!=132&&Wl!=134&&Wl!=135&&Wl!=136&&Wl!=137&&Wl!=138&&Wl!=142&&Wl!=143&&Wl!=147&&Wl!=148&&Wl!=150&&Wl!=152&&Wl!=153&&Wl!=155&&Wl!=156&&Wl!=157&&Wl!=161&&Wl!=162&&Wl!=163&&Wl!=164&&Wl!=165&&Wl!=166&&Wl!=167&&Wl!=168&&Wl!=169&&Wl!=170&&Wl!=173&&Wl!=174&&Wl!=175&&Wl!=179&&Wl!=181&&Wl!=183&&Wl!=184&&Wl!=185&&Wl!=187&&Wl!=188&&Wl!=189&&Wl!=194&&Wl!=195&&Wl!=196&&Wl!=197&&Wl!=198&&Wl!=202&&Wl!=203&&Wl!=204&&Wl!=205&&Wl!=206&&Wl!=207&&Wl!=210&&Wl!=216&&Wl!=217&&Wl!=220&&Wl!=222&&Wl!=223&&Wl!=224&&Wl!=225&&Wl!=226&&Wl!=228&&Wl!=229&&Wl!=230&&Wl!=231&&Wl!=232&&Wl!=233&&Wl!=234&&Wl!=239&&Wl!=240&&Wl!=241&&Wl!=242&&Wl!=245&&Wl!=247&&Wl!=249&&Wl!=253&&Wl!=254&&Wl!=255&&Wl!=257&&Wl!=258&&Wl!=260&&Wl!=262&&Wl!=263&&Wl!=266&&Wl!=267&&Wl!=269&&Wl!=272&&Wl!=276&&Wl!=283&&Wl!=10009&&Wl!=14935&&Wl!=14951&&Wl!=14981&&Wl!=14987&&Wl!=15002&&Wl!=15025&&Wl!=15096&&Wl!=15104&&Wl!=15107&&Wl!=15116&&Wl!=15121&&Wl!=16011&&Wl!=16049&&Wl!=16140&&Wl!=18007&&Wl!=18023&&Wl!=18053&&Wl!=18059&&Wl!=18074&&Wl!=18097&&Wl!=18168&&Wl!=18176&&Wl!=18179&&Wl!=18188&&Wl!=91735&&Wl!=91751&&Wl!=115333&&Wl!=118961&&Wl!=122507&&Wl!=131723&&Wl!=144128&&Wl!=147225){Wl=uc(9,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{cf(),Wl=-1}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),pf(),Wl=-2}catch(f){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),vf(),Wl=-3}catch(l){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),If(),Wl=-12}catch(c){Wl=-13}}}}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(9,Vl,Wl)}}switch(Wl){case-2:hf();break;case-3:df();break;case 91735:mf();break;case 91751:yf();break;case 115333:wf();break;case 16011:case 16049:case 118961:case 122507:case 131723:Sf();break;case 18074:Cf();break;case 18168:Lf();break;case 144128:_f();break;case 18179:Pf();break;case-12:case 16140:Ff();break;case-13:qf();break;case 54:Uf();break;default:lf()}ic.endNonterminal("Statement",Vl)}function ff(){switch($l){case 133:ql(147);break;case 139:ql(179);break;case 177:ql(166);break;case 256:ql(148);break;case 268:ql(143);break;case 281:ql(283);break;case 31:case 33:ql(246);break;case 87:case 103:ql(145);break;case 154:case 248:case 259:case 273:ql(95);break;default:Wl=$l}if(Wl!=6&&Wl!=8&&Wl!=9&&Wl!=10&&Wl!=11&&Wl!=32&&Wl!=35&&Wl!=36&&Wl!=41&&Wl!=43&&Wl!=47&&Wl!=48&&Wl!=54&&Wl!=55&&Wl!=56&&Wl!=60&&Wl!=69&&Wl!=71&&Wl!=73&&Wl!=74&&Wl!=75&&Wl!=76&&Wl!=78&&Wl!=79&&Wl!=80&&Wl!=81&&Wl!=82&&Wl!=83&&Wl!=84&&Wl!=85&&Wl!=86&&Wl!=89&&Wl!=90&&Wl!=91&&Wl!=92&&Wl!=94&&Wl!=95&&Wl!=97&&Wl!=98&&Wl!=99&&Wl!=102&&Wl!=104&&Wl!=105&&Wl!=106&&Wl!=107&&Wl!=109&&Wl!=110&&Wl!=111&&Wl!=112&&Wl!=113&&Wl!=114&&Wl!=119&&Wl!=120&&Wl!=121&&Wl!=122&&Wl!=123&&Wl!=124&&Wl!=125&&Wl!=126&&Wl!=127&&Wl!=129&&Wl!=130&&Wl!=132&&Wl!=134&&Wl!=135&&Wl!=136&&Wl!=137&&Wl!=138&&Wl!=142&&Wl!=143&&Wl!=147&&Wl!=148&&Wl!=150&&Wl!=152&&Wl!=153&&Wl!=155&&Wl!=156&&Wl!=157&&Wl!=161&&Wl!=162&&Wl!=163&&Wl!=164&&Wl!=165&&Wl!=166&&Wl!=167&&Wl!=168&&Wl!=169&&Wl!=170&&Wl!=173&&Wl!=174&&Wl!=175&&Wl!=179&&Wl!=181&&Wl!=183&&Wl!=184&&Wl!=185&&Wl!=187&&Wl!=188&&Wl!=189&&Wl!=194&&Wl!=195&&Wl!=196&&Wl!=197&&Wl!=198&&Wl!=202&&Wl!=203&&Wl!=204&&Wl!=205&&Wl!=206&&Wl!=207&&Wl!=210&&Wl!=216&&Wl!=217&&Wl!=220&&Wl!=222&&Wl!=223&&Wl!=224&&Wl!=225&&Wl!=226&&Wl!=228&&Wl!=229&&Wl!=230&&Wl!=231&&Wl!=232&&Wl!=233&&Wl!=234&&Wl!=239&&Wl!=240&&Wl!=241&&Wl!=242&&Wl!=245&&Wl!=247&&Wl!=249&&Wl!=253&&Wl!=254&&Wl!=255&&Wl!=257&&Wl!=258&&Wl!=260&&Wl!=262&&Wl!=263&&Wl!=266&&Wl!=267&&Wl!=269&&Wl!=272&&Wl!=276&&Wl!=283&&Wl!=10009&&Wl!=14935&&Wl!=14951&&Wl!=14981&&Wl!=14987&&Wl!=15002&&Wl!=15025&&Wl!=15096&&Wl!=15104&&Wl!=15107&&Wl!=15116&&Wl!=15121&&Wl!=16011&&Wl!=16049&&Wl!=16140&&Wl!=18007&&Wl!=18023&&Wl!=18053&&Wl!=18059&&Wl!=18074&&Wl!=18097&&Wl!=18168&&Wl!=18176&&Wl!=18179&&Wl!=18188&&Wl!=91735&&Wl!=91751&&Wl!=115333&&Wl!=118961&&Wl!=122507&&Wl!=131723&&Wl!=144128&&Wl!=147225){Wl=uc(9,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{cf(),oc(9,t,-1),Wl=-15}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),pf(),oc(9,t,-2),Wl=-15}catch(f){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),vf(),oc(9,t,-3),Wl=-15}catch(l){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),If(),oc(9,t,-12),Wl=-15}catch(c){Wl=-13,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(9,t,-13)}}}}}}switch(Wl){case-2:pf();break;case-3:vf();break;case 91735:gf();break;case 91751:bf();break;case 115333:Ef();break;case 16011:case 16049:case 118961:case 122507:case 131723:xf();break;case 18074:kf();break;case 18168:Af();break;case 144128:Df();break;case 18179:Hf();break;case-12:case 16140:If();break;case-13:Rf();break;case 54:zf();break;case-15:break;default:cf()}}function lf(){ic.startNonterminal("ApplyStatement",Vl),Vf(),Pl(54),ic.endNonterminal("ApplyStatement",Vl)}function cf(){$f(),Hl(54)}function hf(){ic.startNonterminal("AssignStatement",Vl),Pl(31),Il(246),jl(),Ti(),Il(28),Pl(53),Il(267),jl(),Wf(),Pl(54),ic.endNonterminal("AssignStatement",Vl)}function pf(){Hl(31),Il(246),Ni(),Il(28),Hl(53),Il(267),Xf(),Hl(54)}function df(){ic.startNonterminal("BlockStatement",Vl),Pl(281),Il(271),jl(),af(),Il(281),jl(),tf(),Pl(287),ic.endNonterminal("BlockStatement",Vl)}function vf(){Hl(281),Il(271),ff(),Il(281),nf(),Hl(287)}function mf(){ic.startNonterminal("BreakStatement",Vl),Pl(87),Il(62),Pl(179),Il(29),Pl(54),ic.endNonterminal("BreakStatement",Vl)}function gf(){Hl(87),Il(62),Hl(179),Il(29),Hl(54)}function yf(){ic.startNonterminal("ContinueStatement",Vl),Pl(103),Il(62),Pl(179),Il(29),Pl(54),ic.endNonterminal("ContinueStatement",Vl)}function bf(){Hl(103),Il(62),Hl(179),Il(29),Hl(54)}function wf(){ic.startNonterminal("ExitStatement",Vl),Pl(133),Il(74),Pl(225),Il(267),jl(),Wf(),Pl(54),ic.endNonterminal("ExitStatement",Vl)}function Ef(){Hl(133),Il(74),Hl(225),Il(267),Xf(),Hl(54)}function Sf(){ic.startNonterminal("FLWORStatement",Vl),tt();for(;;){Il(195);if($l==224)break;jl(),rt()}jl(),Tf(),ic.endNonterminal("FLWORStatement",Vl)}function xf(){nt();for(;;){Il(195);if($l==224)break;it()}Nf()}function Tf(){ic.startNonterminal("ReturnStatement",Vl),Pl(224),Il(271),jl(),af(),ic.endNonterminal("ReturnStatement",Vl)}function Nf(){Hl(224),Il(271),ff()}function Cf(){ic.startNonterminal("IfStatement",Vl),Pl(154),Il(22),Pl(35),Il(267),jl(),G(),Pl(38),Il(80),Pl(250),Il(271),jl(),af(),Il(51),Pl(123),Il(271),jl(),af(),ic.endNonterminal("IfStatement",Vl)}function kf(){Hl(154),Il(22),Hl(35),Il(267),Y(),Hl(38),Il(80),Hl(250),Il(271),ff(),Il(51),Hl(123),Il(271),ff()}function Lf(){ic.startNonterminal("SwitchStatement",Vl),Pl(248),Il(22),Pl(35),Il(267),jl(),G(),Pl(38);for(;;){Il(38),jl(),Of(),Il(117);if($l!=89)break}Pl(110),Il(73),Pl(224),Il(271),jl(),af(),ic.endNonterminal("SwitchStatement",Vl)}function Af(){Hl(248),Il(22),Hl(35),Il(267),Y(),Hl(38);for(;;){Il(38),Mf(),Il(117);if($l!=89)break}Hl(110),Il(73),Hl(224),Il(271),ff()}function Of(){ic.startNonterminal("SwitchCaseStatement",Vl);for(;;){Pl(89),Il(267),jl(),dn();if($l!=89)break}Pl(224),Il(271),jl(),af(),ic.endNonterminal("SwitchCaseStatement",Vl)}function Mf(){for(;;){Hl(89),Il(267),vn();if($l!=89)break}Hl(224),Il(271),ff()}function _f(){ic.startNonterminal("TryCatchStatement",Vl),Pl(256),Il(90),jl(),df();for(;;){Il(39),Pl(92),Il(249),jl(),_n(),jl(),df(),Il(284);switch($l){case 92:ql(256);break;default:Wl=$l}if(Wl!=2652&&Wl!=3164&&Wl!=36444&&Wl!=37468&&Wl!=37980&&Wl!=38492&&Wl!=39004&&Wl!=40028&&Wl!=40540&&Wl!=41052&&Wl!=41564&&Wl!=42076&&Wl!=42588&&Wl!=43100&&Wl!=43612&&Wl!=44124&&Wl!=44636&&Wl!=45660&&Wl!=46172&&Wl!=46684&&Wl!=47196&&Wl!=48220&&Wl!=48732&&Wl!=49756&&Wl!=50268&&Wl!=50780&&Wl!=52316&&Wl!=52828&&Wl!=53340&&Wl!=53852&&Wl!=54364&&Wl!=54876&&Wl!=55900&&Wl!=56412&&Wl!=56924&&Wl!=57436&&Wl!=57948&&Wl!=58460&&Wl!=61020&&Wl!=61532&&Wl!=62044&&Wl!=62556&&Wl!=63068&&Wl!=63580&&Wl!=64092&&Wl!=64604&&Wl!=65116&&Wl!=66140&&Wl!=66652&&Wl!=67676&&Wl!=68188&&Wl!=68700&&Wl!=69212&&Wl!=69724&&Wl!=70236&&Wl!=70748&&Wl!=71260&&Wl!=72796&&Wl!=73308&&Wl!=75356&&Wl!=75868&&Wl!=76892&&Wl!=77916&&Wl!=78428&&Wl!=78940&&Wl!=79452&&Wl!=79964&&Wl!=80476&&Wl!=82524&&Wl!=83036&&Wl!=83548&&Wl!=84060&&Wl!=84572&&Wl!=85084&&Wl!=85596&&Wl!=86108&&Wl!=86620&&Wl!=87132&&Wl!=88668&&Wl!=89180&&Wl!=89692&&Wl!=90716&&Wl!=91740&&Wl!=92764&&Wl!=93788&&Wl!=94300&&Wl!=94812&&Wl!=95836&&Wl!=96348&&Wl!=96860&&Wl!=99420&&Wl!=99932&&Wl!=100956&&Wl!=101468&&Wl!=103516&&Wl!=104028&&Wl!=104540&&Wl!=105052&&Wl!=105564&&Wl!=106076&&Wl!=107612&&Wl!=110684&&Wl!=111196&&Wl!=112732&&Wl!=113756&&Wl!=114268&&Wl!=114780&&Wl!=115292&&Wl!=115804&&Wl!=116828&&Wl!=117340&&Wl!=117852&&Wl!=118364&&Wl!=118876&&Wl!=119388&&Wl!=119900&&Wl!=122460&&Wl!=122972&&Wl!=123484&&Wl!=123996&&Wl!=125532&&Wl!=126556&&Wl!=127068&&Wl!=127580&&Wl!=129628&&Wl!=130140&&Wl!=130652&&Wl!=131164&&Wl!=131676&&Wl!=132188&&Wl!=132700&&Wl!=133212&&Wl!=134236&&Wl!=134748&&Wl!=136284&&Wl!=136796&&Wl!=137308&&Wl!=137820&&Wl!=139356&&Wl!=139868&&Wl!=141404)break}ic.endNonterminal("TryCatchStatement",Vl)}function Df(){Hl(256),Il(90),vf();for(;;){Il(39),Hl(92),Il(249),Dn(),vf(),Il(284);switch($l){case 92:ql(256);break;default:Wl=$l}if(Wl!=2652&&Wl!=3164&&Wl!=36444&&Wl!=37468&&Wl!=37980&&Wl!=38492&&Wl!=39004&&Wl!=40028&&Wl!=40540&&Wl!=41052&&Wl!=41564&&Wl!=42076&&Wl!=42588&&Wl!=43100&&Wl!=43612&&Wl!=44124&&Wl!=44636&&Wl!=45660&&Wl!=46172&&Wl!=46684&&Wl!=47196&&Wl!=48220&&Wl!=48732&&Wl!=49756&&Wl!=50268&&Wl!=50780&&Wl!=52316&&Wl!=52828&&Wl!=53340&&Wl!=53852&&Wl!=54364&&Wl!=54876&&Wl!=55900&&Wl!=56412&&Wl!=56924&&Wl!=57436&&Wl!=57948&&Wl!=58460&&Wl!=61020&&Wl!=61532&&Wl!=62044&&Wl!=62556&&Wl!=63068&&Wl!=63580&&Wl!=64092&&Wl!=64604&&Wl!=65116&&Wl!=66140&&Wl!=66652&&Wl!=67676&&Wl!=68188&&Wl!=68700&&Wl!=69212&&Wl!=69724&&Wl!=70236&&Wl!=70748&&Wl!=71260&&Wl!=72796&&Wl!=73308&&Wl!=75356&&Wl!=75868&&Wl!=76892&&Wl!=77916&&Wl!=78428&&Wl!=78940&&Wl!=79452&&Wl!=79964&&Wl!=80476&&Wl!=82524&&Wl!=83036&&Wl!=83548&&Wl!=84060&&Wl!=84572&&Wl!=85084&&Wl!=85596&&Wl!=86108&&Wl!=86620&&Wl!=87132&&Wl!=88668&&Wl!=89180&&Wl!=89692&&Wl!=90716&&Wl!=91740&&Wl!=92764&&Wl!=93788&&Wl!=94300&&Wl!=94812&&Wl!=95836&&Wl!=96348&&Wl!=96860&&Wl!=99420&&Wl!=99932&&Wl!=100956&&Wl!=101468&&Wl!=103516&&Wl!=104028&&Wl!=104540&&Wl!=105052&&Wl!=105564&&Wl!=106076&&Wl!=107612&&Wl!=110684&&Wl!=111196&&Wl!=112732&&Wl!=113756&&Wl!=114268&&Wl!=114780&&Wl!=115292&&Wl!=115804&&Wl!=116828&&Wl!=117340&&Wl!=117852&&Wl!=118364&&Wl!=118876&&Wl!=119388&&Wl!=119900&&Wl!=122460&&Wl!=122972&&Wl!=123484&&Wl!=123996&&Wl!=125532&&Wl!=126556&&Wl!=127068&&Wl!=127580&&Wl!=129628&&Wl!=130140&&Wl!=130652&&Wl!=131164&&Wl!=131676&&Wl!=132188&&Wl!=132700&&Wl!=133212&&Wl!=134236&&Wl!=134748&&Wl!=136284&&Wl!=136796&&Wl!=137308&&Wl!=137820&&Wl!=139356&&Wl!=139868&&Wl!=141404)break}}function Pf(){ic.startNonterminal("TypeswitchStatement",Vl),Pl(259),Il(22),Pl(35),Il(267),jl(),G(),Pl(38);for(;;){Il(38),jl(),Bf(),Il(117);if($l!=89)break}Pl(110),Il(99),$l==31&&(Pl(31),Il(246),jl(),Ti()),Il(73),Pl(224),Il(271),jl(),af(),ic.endNonterminal("TypeswitchStatement",Vl)}function Hf(){Hl(259),Il(22),Hl(35),Il(267),Y(),Hl(38);for(;;){Il(38),jf(),Il(117);if($l!=89)break}Hl(110),Il(99),$l==31&&(Hl(31),Il(246),Ni()),Il(73),Hl(224),Il(271),ff()}function Bf(){ic.startNonterminal("CaseStatement",Vl),Pl(89),Il(258),$l==31&&(Pl(31),Il(246),jl(),Ti(),Il(33),Pl(80)),Il(254),jl(),Ls(),Il(73),Pl(224),Il(271),jl(),af(),ic.endNonterminal("CaseStatement",Vl)}function jf(){Hl(89),Il(258),$l==31&&(Hl(31),Il(246),Ni(),Il(33),Hl(80)),Il(254),As(),Il(73),Hl(224),Il(271),ff()}function Ff(){ic.startNonterminal("VarDeclStatement",Vl);for(;;){Il(102);if($l!=33)break;jl(),B()}Pl(268),Il(21),Pl(31),Il(246),jl(),Ti(),Il(172),$l==80&&(jl(),Cs()),Il(155),$l==53&&(Pl(53),Il(267),jl(),Wf());for(;;){if($l!=42)break;Pl(42),Il(21),Pl(31),Il(246),jl(),Ti(),Il(172),$l==80&&(jl(),Cs()),Il(155),$l==53&&(Pl(53),Il(267),jl(),Wf())}Pl(54),ic.endNonterminal("VarDeclStatement",Vl)}function If(){for(;;){Il(102);if($l!=33)break;j()}Hl(268),Il(21),Hl(31),Il(246),Ni(),Il(172),$l==80&&ks(),Il(155),$l==53&&(Hl(53),Il(267),Xf());for(;;){if($l!=42)break;Hl(42),Il(21),Hl(31),Il(246),Ni(),Il(172),$l==80&&ks(),Il(155),$l==53&&(Hl(53),Il(267),Xf())}Hl(54)}function qf(){ic.startNonterminal("WhileStatement",Vl),Pl(273),Il(22),Pl(35),Il(267),jl(),G(),Pl(38),Il(271),jl(),af(),ic.endNonterminal("WhileStatement",Vl)}function Rf(){Hl(273),Il(22),Hl(35),Il(267),Y(),Hl(38),Il(271),ff()}function Uf(){ic.startNonterminal("VoidStatement",Vl),Pl(54),ic.endNonterminal("VoidStatement",Vl)}function zf(){Hl(54)}function Wf(){ic.startNonterminal("ExprSingle",Vl);switch($l){case 139:ql(179);break;case 177:ql(166);break;case 256:ql(148);break;case 154:case 248:case 259:ql(95);break;default:Wl=$l}switch(Wl){case 16011:case 16049:case 118961:case 122507:case 131723:Z();break;case 18074:Sn();break;case 18168:ln();break;case 144128:Tn();break;case 18179:mn();break;default:Vf()}ic.endNonterminal("ExprSingle",Vl)}function Xf(){switch($l){case 139:ql(179);break;case 177:ql(166);break;case 256:ql(148);break;case 154:case 248:case 259:ql(95);break;default:Wl=$l}switch(Wl){case 16011:case 16049:case 118961:case 122507:case 131723:et();break;case 18074:xn();break;case 18168:cn();break;case 144128:Nn();break;case 18179:gn();break;default:$f()}}function Vf(){ic.startNonterminal("ExprSimple",Vl);switch($l){case 78:ql(269);break;case 161:ql(276);break;case 223:ql(170);break;case 111:case 222:ql(261);break;case 104:case 130:case 240:ql(143);break;default:Wl=$l}if(Wl==17998||Wl==18031||Wl==18081||Wl==18142||Wl==99439||Wl==99489||Wl==99550||Wl==99951||Wl==100001||Wl==136927){Wl=uc(10,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hn(),Wl=-2}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),zo(),Wl=-3}catch(f){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Xo(),Wl=-4}catch(l){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Ko(),Wl=-5}catch(c){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),$o(),Wl=-6}catch(h){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Kf(),Wl=-8}catch(p){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Gf(),Wl=-9}catch(d){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Zf(),Wl=-10}catch(v){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),tl(),Wl=-11}catch(m){Wl=-12}}}}}}}}}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(10,Vl,Wl)}}switch(Wl){case 16002:case 16112:on();break;case-3:Uo();break;case-4:Wo();break;case-5:Jo();break;case-6:case 99551:Vo();break;case 15976:nu();break;case-8:case 3183:case 4207:case 4719:case 5231:case 5743:case 15983:case 16495:case 17007:case 28271:case 28783:case 30831:case 35439:case 36463:case 37487:case 37999:case 38511:case 39023:case 40047:case 40559:case 41071:case 41583:case 42095:case 42607:case 43119:case 43631:case 44143:case 44655:case 45679:case 46191:case 46703:case 47215:case 48239:case 48751:case 49775:case 50287:case 50799:case 52335:case 52847:case 53359:case 53871:case 54383:case 54895:case 55919:case 56431:case 56943:case 57455:case 57967:case 58479:case 61039:case 61551:case 62063:case 62575:case 63087:case 63599:case 64111:case 64623:case 65135:case 66159:case 66671:case 67695:case 68207:case 68719:case 69231:case 69743:case 70255:case 70767:case 71279:case 72815:case 73327:case 75375:case 75887:case 76911:case 77935:case 78447:case 78959:case 79471:case 79983:case 80495:case 82543:case 83055:case 83567:case 84079:case 84591:case 85103:case 85615:case 86127:case 86639:case 87151:case 88687:case 89199:case 89711:case 90735:case 91759:case 92783:case 93807:case 94319:case 94831:case 95855:case 96367:case 96879:case 100975:case 101487:case 103535:case 104047:case 104559:case 105071:case 105583:case 106095:case 107631:case 110703:case 111215:case 112751:case 113775:case 114287:case 114799:case 115311:case 115823:case 116847:case 117359:case 117871:case 118383:case 118895:case 119407:case 119919:case 122479:case 122991:case 123503:case 124015:case 125551:case 126575:case 127087:case 127599:case 129647:case 130159:case 130671:case 131183:case 131695:case 132207:case 132719:case 133231:case 134255:case 134767:case 136303:case 136815:case 137327:case 137839:case 139375:case 139887:case 141423:case 143983:case 145007:Jf();break;case-9:case 3233:case 4257:case 4769:case 5281:case 5793:case 9889:case 16033:case 16545:case 17057:case 18593:case 21153:case 22177:case 24225:case 24737:case 28321:case 28833:case 30881:case 35489:case 36513:case 37537:case 38049:case 38561:case 39073:case 40097:case 40609:case 41121:case 41633:case 42145:case 42657:case 43169:case 43681:case 44193:case 44705:case 45729:case 46241:case 46753:case 47265:case 48289:case 48801:case 49825:case 50337:case 50849:case 52385:case 52897:case 53409:case 53921:case 54433:case 54945:case 55969:case 56481:case 56993:case 57505:case 58017:case 58529:case 61089:case 61601:case 62113:case 62625:case 63137:case 63649:case 64161:case 64673:case 65185:case 66209:case 66721:case 67745:case 68257:case 68769:case 69281:case 69793:case 70305:case 70817:case 71329:case 72865:case 73377:case 75425:case 75937:case 76961:case 77985:case 78497:case 79009:case 79521:case 80033:case 80545:case 82593:case 83105:case 83617:case 84129:case 84641:case 85153:case 85665:case 86177:case 86689:case 87201:case 88737:case 89249:case 89761:case 90785:case 91809:case 92833:case 93857:case 94369:case 94881:case 95905:case 96417:case 96929:case 100513:case 101025:case 101537:case 103585:case 104097:case 104609:case 105121:case 105633:case 106145:case 107681:case 110753:case 111265:case 112801:case 113825:case 114337:case 114849:case 115361:case 115873:case 116897:case 117409:case 117921:case 118433:case 118945:case 119457:case 119969:case 122529:case 123041:case 123553:case 124065:case 125601:case 126625:case 127137:case 127649:case 129697:case 130209:case 130721:case 131233:case 131745:case 132257:case 132769:case 133281:case 134305:case 134817:case 136353:case 136865:case 137377:case 137889:case 139425:case 139937:case 141473:case 144033:case 145057:Qf();break;case-10:case 3294:case 4318:case 4830:case 5342:case 5854:case 16094:case 16606:case 17118:case 28382:case 28894:case 30942:case 35550:case 36574:case 37598:case 38110:case 38622:case 39134:case 40158:case 40670:case 41182:case 41694:case 42206:case 42718:case 43230:case 43742:case 44254:case 44766:case 45790:case 46302:case 46814:case 47326:case 48350:case 48862:case 49886:case 50398:case 50910:case 52446:case 52958:case 53470:case 53982:case 54494:case 55006:case 56030:case 56542:case 57054:case 57566:case 58078:case 58590:case 61150:case 61662:case 62174:case 62686:case 63198:case 63710:case 64222:case 64734:case 65246:case 66270:case 66782:case 67806:case 68318:case 68830:case 69342:case 69854:case 70366:case 70878:case 71390:case 72926:case 73438:case 75486:case 75998:case 77022:case 78046:case 78558:case 79070:case 79582:case 80094:case 80606:case 82654:case 83166:case 83678:case 84190:case 84702:case 85214:case 85726:case 86238:case 86750:case 87262:case 88798:case 89310:case 89822:case 90846:case 91870:case 92894:case 93918:case 94430:case 94942:case 95966:case 96478:case 96990:case 100062:case 101086:case 101598:case 103646:case 104158:case 104670:case 105182:case 105694:case 106206:case 107742:case 110814:case 111326:case 112862:case 113886:case 114398:case 114910:case 115422:case 115934:case 116958:case 117470:case 117982:case 118494:case 119006:case 119518:case 120030:case 122590:case 123102:case 123614:case 124126:case 125662:case 126686:case 127198:case 127710:case 129758:case 130270:case 130782:case 131294:case 131806:case 132318:case 132830:case 133342:case 134366:case 134878:case 136414:case 136926:case 137438:case 137950:case 139486:case 139998:case 141534:case 144094:case 145118:Yf();break;case-11:el();break;case-12:case 3150:case 4174:case 4686:case 5198:case 5710:case 15950:case 16462:case 16974:case 18510:case 21070:case 22094:case 24142:case 24654:case 28238:case 28750:case 30798:case 35406:case 36430:case 37454:case 37966:case 38478:case 38990:case 40014:case 40526:case 41038:case 41550:case 42062:case 42574:case 43086:case 43598:case 44110:case 44622:case 45646:case 46158:case 46670:case 47182:case 48206:case 48718:case 49742:case 50254:case 50766:case 52302:case 52814:case 53326:case 53838:case 54350:case 54862:case 55886:case 56398:case 56910:case 57422:case 57934:case 58446:case 61006:case 61518:case 62030:case 62542:case 63054:case 63566:case 64078:case 64590:case 65102:case 66126:case 66638:case 67662:case 68174:case 68686:case 69198:case 69710:case 70222:case 70734:case 71246:case 72782:case 73294:case 75342:case 75854:case 76878:case 77902:case 78414:case 78926:case 79438:case 79950:case 80462:case 82510:case 83022:case 83534:case 84046:case 84558:case 85070:case 85582:case 86094:case 86606:case 87118:case 88654:case 89166:case 89678:case 90702:case 91726:case 92750:case 93774:case 94286:case 94798:case 95822:case 96334:case 96846:case 99406:case 99918:case 100430:case 100942:case 101454:case 103502:case 104014:case 104526:case 105038:case 105550:case 106062:case 107598:case 110670:case 111182:case 112718:case 113742:case 114254:case 114766:case 115278:case 115790:case 116814:case 117326:case 117838:case 118350:case 118862:case 119374:case 119886:case 122446:case 122958:case 123470:case 123982:case 125518:case 126542:case 127054:case 127566:case 129614:case 130126:case 130638:case 131150:case 131662:case 132174:case 132686:case 133198:case 134222:case 134734:case 136270:case 136782:case 137294:case 137806:case 139342:case 139854:case 141390:case 143950:case 144974:nl();break;default:Pn()}ic.endNonterminal("ExprSimple",Vl)}function $f(){switch($l){case 78:ql(269);break;case 161:ql(276);break;case 223:ql(170);break;case 111:case 222:ql(261);break;case 104:case 130:case 240:ql(143);break;default:Wl=$l}if(Wl==17998||Wl==18031||Wl==18081||Wl==18142||Wl==99439||Wl==99489||Wl==99550||Wl==99951||Wl==100001||Wl==136927){Wl=uc(10,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hn(),oc(10,t,-2),Wl=-13}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),zo(),oc(10,t,-3),Wl=-13}catch(f){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Xo(),oc(10,t,-4),Wl=-13}catch(l){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Ko(),oc(10,t,-5),Wl=-13}catch(c){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),$o(),oc(10,t,-6),Wl=-13}catch(h){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Kf(),oc(10,t,-8),Wl=-13}catch(p){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Gf(),oc(10,t,-9),Wl=-13}catch(d){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Zf(),oc(10,t,-10),Wl=-13}catch(v){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),tl(),oc(10,t,-11),Wl=-13}catch(m){Wl=-12,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(10,t,-12)}}}}}}}}}}}switch(Wl){case 16002:case 16112:un();break;case-3:zo();break;case-4:Xo();break;case-5:Ko();break;case-6:case 99551:$o();break;case 15976:ru();break;case-8:case 3183:case 4207:case 4719:case 5231:case 5743:case 15983:case 16495:case 17007:case 28271:case 28783:case 30831:case 35439:case 36463:case 37487:case 37999:case 38511:case 39023:case 40047:case 40559:case 41071:case 41583:case 42095:case 42607:case 43119:case 43631:case 44143:case 44655:case 45679:case 46191:case 46703:case 47215:case 48239:case 48751:case 49775:case 50287:case 50799:case 52335:case 52847:case 53359:case 53871:case 54383:case 54895:case 55919:case 56431:case 56943:case 57455:case 57967:case 58479:case 61039:case 61551:case 62063:case 62575:case 63087:case 63599:case 64111:case 64623:case 65135:case 66159:case 66671:case 67695:case 68207:case 68719:case 69231:case 69743:case 70255:case 70767:case 71279:case 72815:case 73327:case 75375:case 75887:case 76911:case 77935:case 78447:case 78959:case 79471:case 79983:case 80495:case 82543:case 83055:case 83567:case 84079:case 84591:case 85103:case 85615:case 86127:case 86639:case 87151:case 88687:case 89199:case 89711:case 90735:case 91759:case 92783:case 93807:case 94319:case 94831:case 95855:case 96367:case 96879:case 100975:case 101487:case 103535:case 104047:case 104559:case 105071:case 105583:case 106095:case 107631:case 110703:case 111215:case 112751:case 113775:case 114287:case 114799:case 115311:case 115823:case 116847:case 117359:case 117871:case 118383:case 118895:case 119407:case 119919:case 122479:case 122991:case 123503:case 124015:case 125551:case 126575:case 127087:case 127599:case 129647:case 130159:case 130671:case 131183:case 131695:case 132207:case 132719:case 133231:case 134255:case 134767:case 136303:case 136815:case 137327:case 137839:case 139375:case 139887:case 141423:case 143983:case 145007:Kf();break;case-9:case 3233:case 4257:case 4769:case 5281:case 5793:case 9889:case 16033:case 16545:case 17057:case 18593:case 21153:case 22177:case 24225:case 24737:case 28321:case 28833:case 30881:case 35489:case 36513:case 37537:case 38049:case 38561:case 39073:case 40097:case 40609:case 41121:case 41633:case 42145:case 42657:case 43169:case 43681:case 44193:case 44705:case 45729:case 46241:case 46753:case 47265:case 48289:case 48801:case 49825:case 50337:case 50849:case 52385:case 52897:case 53409:case 53921:case 54433:case 54945:case 55969:case 56481:case 56993:case 57505:case 58017:case 58529:case 61089:case 61601:case 62113:case 62625:case 63137:case 63649:case 64161:case 64673:case 65185:case 66209:case 66721:case 67745:case 68257:case 68769:case 69281:case 69793:case 70305:case 70817:case 71329:case 72865:case 73377:case 75425:case 75937:case 76961:case 77985:case 78497:case 79009:case 79521:case 80033:case 80545:case 82593:case 83105:case 83617:case 84129:case 84641:case 85153:case 85665:case 86177:case 86689:case 87201:case 88737:case 89249:case 89761:case 90785:case 91809:case 92833:case 93857:case 94369:case 94881:case 95905:case 96417:case 96929:case 100513:case 101025:case 101537:case 103585:case 104097:case 104609:case 105121:case 105633:case 106145:case 107681:case 110753:case 111265:case 112801:case 113825:case 114337:case 114849:case 115361:case 115873:case 116897:case 117409:case 117921:case 118433:case 118945:case 119457:case 119969:case 122529:case 123041:case 123553:case 124065:case 125601:case 126625:case 127137:case 127649:case 129697:case 130209:case 130721:case 131233:case 131745:case 132257:case 132769:case 133281:case 134305:case 134817:case 136353:case 136865:case 137377:case 137889:case 139425:case 139937:case 141473:case 144033:case 145057:Gf();break;case-10:case 3294:case 4318:case 4830:case 5342:case 5854:case 16094:case 16606:case 17118:case 28382:case 28894:case 30942:case 35550:case 36574:case 37598:case 38110:case 38622:case 39134:case 40158:case 40670:case 41182:case 41694:case 42206:case 42718:case 43230:case 43742:case 44254:case 44766:case 45790:case 46302:case 46814:case 47326:case 48350:case 48862:case 49886:case 50398:case 50910:case 52446:case 52958:case 53470:case 53982:case 54494:case 55006:case 56030:case 56542:case 57054:case 57566:case 58078:case 58590:case 61150:case 61662:case 62174:case 62686:case 63198:case 63710:case 64222:case 64734:case 65246:case 66270:case 66782:case 67806:case 68318:case 68830:case 69342:case 69854:case 70366:case 70878:case 71390:case 72926:case 73438:case 75486:case 75998:case 77022:case 78046:case 78558:case 79070:case 79582:case 80094:case 80606:case 82654:case 83166:case 83678:case 84190:case 84702:case 85214:case 85726:case 86238:case 86750:case 87262:case 88798:case 89310:case 89822:case 90846:case 91870:case 92894:case 93918:case 94430:case 94942:case 95966:case 96478:case 96990:case 100062:case 101086:case 101598:case 103646:case 104158:case 104670:case 105182:case 105694:case 106206:case 107742:case 110814:case 111326:case 112862:case 113886:case 114398:case 114910:case 115422:case 115934:case 116958:case 117470:case 117982:case 118494:case 119006:case 119518:case 120030:case 122590:case 123102:case 123614:case 124126:case 125662:case 126686:case 127198:case 127710:case 129758:case 130270:case 130782:case 131294:case 131806:case 132318:case 132830:case 133342:case 134366:case 134878:case 136414:case 136926:case 137438:case 137950:case 139486:case 139998:case 141534:case 144094:case 145118:Zf();break;case-11:tl();break;case-12:case 3150:case 4174:case 4686:case 5198:case 5710:case 15950:case 16462:case 16974:case 18510:case 21070:case 22094:case 24142:case 24654:case 28238:case 28750:case 30798:case 35406:case 36430:case 37454:case 37966:case 38478:case 38990:case 40014:case 40526:case 41038:case 41550:case 42062:case 42574:case 43086:case 43598:case 44110:case 44622:case 45646:case 46158:case 46670:case 47182:case 48206:case 48718:case 49742:case 50254:case 50766:case 52302:case 52814:case 53326:case 53838:case 54350:case 54862:case 55886:case 56398:case 56910:case 57422:case 57934:case 58446:case 61006:case 61518:case 62030:case 62542:case 63054:case 63566:case 64078:case 64590:case 65102:case 66126:case 66638:case 67662:case 68174:case 68686:case 69198:case 69710:case 70222:case 70734:case 71246:case 72782:case 73294:case 75342:case 75854:case 76878:case 77902:case 78414:case 78926:case 79438:case 79950:case 80462:case 82510:case 83022:case 83534:case 84046:case 84558:case 85070:case 85582:case 86094:case 86606:case 87118:case 88654:case 89166:case 89678:case 90702:case 91726:case 92750:case 93774:case 94286:case 94798:case 95822:case 96334:case 96846:case 99406:case 99918:case 100430:case 100942:case 101454:case 103502:case 104014:case 104526:case 105038:case 105550:case 106062:case 107598:case 110670:case 111182:case 112718:case 113742:case 114254:case 114766:case 115278:case 115790:case 116814:case 117326:case 117838:case 118350:case 118862:case 119374:case 119886:case 122446:case 122958:case 123470:case 123982:case 125518:case 126542:case 127054:case 127566:case 129614:case 130126:case 130638:case 131150:case 131662:case 132174:case 132686:case 133198:case 134222:case 134734:case 136270:case 136782:case 137294:case 137806:case 139342:case 139854:case 141390:case 143950:case 144974:rl();break;case-13:break;default:Hn()}}function Jf(){ic.startNonterminal("JSONDeleteExpr",Vl),Pl(111),Il(260);switch($l){case 168:ql(261);break;default:Wl=$l}if(Wl==18088){Wl=uc(11,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(168),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(11,Vl,Wl)}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Pl(168),Il(260),jl(),ei(),ic.endNonterminal("JSONDeleteExpr",Vl)}function Kf(){Hl(111),Il(260);switch($l){case 168:ql(261);break;default:Wl=$l}if(Wl==18088){Wl=uc(11,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(168),oc(11,t,-1)}catch(a){Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(11,t,-2)}Wl=-2}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Hl(168),Il(260),ti()}function Qf(){ic.startNonterminal("JSONInsertExpr",Vl);switch($l){case 161:ql(268);break;default:Wl=$l}if(Wl!=9889){Wl=uc(12,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(161),Il(267);switch($l){case 168:ql(269);break;default:Wl=$l}if(Wl==18088){Wl=uc(13,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(168),oc(13,f,-1)}catch(m){Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(13,f,-2)}Wl=-2}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==18600||Wl==21160||Wl==22184||Wl==24232||Wl==24744||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==100520||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Hl(168),Il(267),Xf(),Hl(165),Il(267),Xf();switch($l){case 82:ql(72);break;default:Wl=$l}if(Wl==110162){Wl=uc(14,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(82),Il(72),Hl(215),Il(267),Xf(),oc(14,f,-1)}catch(m){Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(14,f,-2)}Wl=-2}}Wl==-1&&(Hl(82),Il(72),Hl(215),Il(267),Xf()),Wl=-1}catch(g){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(12,Vl,Wl)}}switch(Wl){case-1:Pl(161),Il(267);switch($l){case 168:ql(269);break;default:Wl=$l}if(Wl==18088){Wl=uc(13,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(168),Wl=-1}catch(m){Wl=-2}Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(13,Vl,Wl)}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==18600||Wl==21160||Wl==22184||Wl==24232||Wl==24744||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==100520||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Pl(168),Il(267),jl(),Wf(),Pl(165),Il(267),jl(),Wf();switch($l){case 82:ql(72);break;default:Wl=$l}if(Wl==110162){Wl=uc(14,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(82),Il(72),Hl(215),Il(267),Xf(),Wl=-1}catch(m){Wl=-2}Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(14,Vl,Wl)}}Wl==-1&&(Pl(82),Il(72),Pl(215),Il(267),jl(),Wf());break;default:Pl(161),Il(268);switch($l){case 168:ql(282);break;default:Wl=$l}if(Wl==18088){Wl=uc(15,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(168),Wl=-1}catch(m){Wl=-2}Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(15,Vl,Wl)}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==9896||Wl==16040||Wl==16552||Wl==17064||Wl==18600||Wl==21160||Wl==22184||Wl==24232||Wl==24744||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==100520||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Pl(168),Il(268),jl(),Tl(),Pl(165),Il(267),jl(),Wf()}ic.endNonterminal("JSONInsertExpr",Vl)}function Gf(){switch($l){case 161:ql(268);break;default:Wl=$l}if(Wl!=9889){Wl=uc(12,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(161),Il(267);switch($l){case 168:ql(269);break;default:Wl=$l}if(Wl==18088){Wl=uc(13,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(168),oc(13,f,-1)}catch(m){Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(13,f,-2)}Wl=-2}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==18600||Wl==21160||Wl==22184||Wl==24232||Wl==24744||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==100520||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Hl(168),Il(267),Xf(),Hl(165),Il(267),Xf();switch($l){case 82:ql(72);break;default:Wl=$l}if(Wl==110162){Wl=uc(14,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(82),Il(72),Hl(215),Il(267),Xf(),oc(14,f,-1)}catch(m){Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(14,f,-2)}Wl=-2}}Wl==-1&&(Hl(82),Il(72),Hl(215),Il(267),Xf()),oc(12,t,-1),Wl=-3}catch(g){Wl=-2,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(12,t,-2)}}}switch(Wl){case-1:Hl(161),Il(267);switch($l){case 168:ql(269);break;default:Wl=$l}if(Wl==18088){Wl=uc(13,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(168),oc(13,f,-1)}catch(m){Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(13,f,-2)}Wl=-2}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==18600||Wl==21160||Wl==22184||Wl==24232||Wl==24744||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==100520||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Hl(168),Il(267),Xf(),Hl(165),Il(267),Xf();switch($l){case 82:ql(72);break;default:Wl=$l}if(Wl==110162){Wl=uc(14,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(82),Il(72),Hl(215),Il(267),Xf(),oc(14,f,-1)}catch(m){Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(14,f,-2)}Wl=-2}}Wl==-1&&(Hl(82),Il(72),Hl(215),Il(267),Xf());break;case-3:break;default:Hl(161),Il(268);switch($l){case 168:ql(282);break;default:Wl=$l}if(Wl==18088){Wl=uc(15,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(168),oc(15,f,-1)}catch(m){Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(15,f,-2)}Wl=-2}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==9896||Wl==16040||Wl==16552||Wl==17064||Wl==18600||Wl==21160||Wl==22184||Wl==24232||Wl==24744||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==100520||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Hl(168),Il(268),Nl(),Hl(165),Il(267),Xf()}}function Yf(){ic.startNonterminal("JSONRenameExpr",Vl),Pl(222),Il(260);switch($l){case 168:ql(261);break;default:Wl=$l}if(Wl==18088){Wl=uc(16,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(168),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(16,Vl,Wl)}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Pl(168),Il(260),jl(),ei(),Pl(80),Il(267),jl(),Wf(),ic.endNonterminal("JSONRenameExpr",Vl)}function Zf(){Hl(222),Il(260);switch($l){case 168:ql(261);break;default:Wl=$l}if(Wl==18088){Wl=uc(16,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(168),oc(16,t,-1)}catch(a){Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(16,t,-2)}Wl=-2}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Hl(168),Il(260),ti(),Hl(80),Il(267),Xf()}function el(){ic.startNonterminal("JSONReplaceExpr",Vl),Pl(223),Il(85),Pl(267),Il(67),Pl(200),Il(59),Pl(168),Il(260),jl(),ei(),Pl(276),Il(267),jl(),Wf(),ic.endNonterminal("JSONReplaceExpr",Vl)}function tl(){Hl(223),Il(85),Hl(267),Il(67),Hl(200),Il(59),Hl(168),Il(260),ti(),Hl(276),Il(267),Xf()}function nl(){ic.startNonterminal("JSONAppendExpr",Vl),Pl(78),Il(267);switch($l){case 168:ql(269);break;default:Wl=$l}if(Wl==18088){Wl=uc(17,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(168),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(17,Vl,Wl)}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==18600||Wl==21160||Wl==22184||Wl==24232||Wl==24744||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==100520||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Pl(168),Il(267),jl(),Wf(),Pl(165),Il(267),jl(),Wf(),ic.endNonterminal("JSONAppendExpr",Vl)}function rl(){Hl(78),Il(267);switch($l){case 168:ql(269);break;default:Wl=$l}if(Wl==18088){Wl=uc(17,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(168),oc(17,t,-1)}catch(a){Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(17,t,-2)}Wl=-2}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==18600||Wl==21160||Wl==22184||Wl==24232||Wl==24744||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==100520||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Hl(168),Il(267),Xf(),Hl(165),Il(267),Xf()}function il(){ic.startNonterminal("CommonContent",Vl);switch($l){case 12:Pl(12);break;case 23:Pl(23);break;case 282:Pl(282);break;case 288:Pl(288);break;default:Ol()}ic.endNonterminal("CommonContent",Vl)}function sl(){switch($l){case 12:Hl(12);break;case 23:Hl(23);break;case 282:Hl(282);break;case 288:Hl(288);break;default:Ml()}}function ol(){ic.startNonterminal("ContentExpr",Vl),rf(),ic.endNonterminal("ContentExpr",Vl)}function ul(){sf()}function al(){ic.startNonterminal("CompDocConstructor",Vl),Pl(120),Il(90),jl(),Ol(),ic.endNonterminal("CompDocConstructor",Vl)}function fl(){Hl(120),Il(90),Ml()}function ll(){ic.startNonterminal("CompAttrConstructor",Vl),Pl(83),Il(250);switch($l){case 281:Pl(281),Il(267),jl(),G(),Pl(287);break;default:jl(),$a()}Il(90);switch($l){case 281:ql(281);break;default:Wl=$l}if(Wl==147225){Wl=uc(18,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(281),Il(91),Hl(287),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(18,Vl,Wl)}}switch(Wl){case-1:Pl(281),Il(91),Pl(287);break;default:jl(),Ol()}ic.endNonterminal("CompAttrConstructor",Vl)}function cl(){Hl(83),Il(250);switch($l){case 281:Hl(281),Il(267),Y(),Hl(287);break;default:Ja()}Il(90);switch($l){case 281:ql(281);break;default:Wl=$l}if(Wl==147225){Wl=uc(18,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(281),Il(91),Hl(287),oc(18,t,-1),Wl=-3}catch(a){Wl=-2,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(18,t,-2)}}}switch(Wl){case-1:Hl(281),Il(91),Hl(287);break;case-3:break;default:Ml()}}function hl(){ic.startNonterminal("CompPIConstructor",Vl),Pl(220),Il(242);switch($l){case 281:Pl(281),Il(267),jl(),G(),Pl(287);break;default:jl(),Ga()}Il(90);switch($l){case 281:ql(281);break;default:Wl=$l}if(Wl==147225){Wl=uc(19,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(281),Il(91),Hl(287),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(19,Vl,Wl)}}switch(Wl){case-1:Pl(281),Il(91),Pl(287);break;default:jl(),Ol()}ic.endNonterminal("CompPIConstructor",Vl)}function pl(){Hl(220),Il(242);switch($l){case 281:Hl(281),Il(267),Y(),Hl(287);break;default:Ya()}Il(90);switch($l){case 281:ql(281);break;default:Wl=$l}if(Wl==147225){Wl=uc(19,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(281),Il(91),Hl(287),oc(19,t,-1),Wl=-3}catch(a){Wl=-2,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(19,t,-2)}}}switch(Wl){case-1:Hl(281),Il(91),Hl(287);break;case-3:break;default:Ml()}}function dl(){ic.startNonterminal("CompCommentConstructor",Vl),Pl(97),Il(90),jl(),Ol(),ic.endNonterminal("CompCommentConstructor",Vl)}function vl(){Hl(97),Il(90),Ml()}function ml(){ic.startNonterminal("CompTextConstructor",Vl),Pl(249),Il(90),jl(),Ol(),ic.endNonterminal("CompTextConstructor",Vl)}function gl(){Hl(249),Il(90),Ml()}function yl(){ic.startNonterminal("PrimaryExpr",Vl);switch($l){case 187:ql(247);break;case 220:ql(245);break;case 281:ql(283);break;case 83:case 122:ql(253);break;case 97:case 249:ql(97);break;case 120:case 206:case 262:ql(148);break;case 135:case 197:case 255:ql(237);break;case 6:case 71:case 73:case 74:case 75:case 76:case 78:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 103:case 104:case 105:case 106:case 107:case 109:case 110:case 111:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 130:case 132:case 133:case 134:case 136:case 137:case 138:case 139:case 142:case 143:case 148:case 150:case 152:case 153:case 155:case 156:case 157:case 161:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 177:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 222:case 223:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 240:case 241:case 242:case 245:case 253:case 254:case 256:case 257:case 258:case 260:case 263:case 266:case 267:case 268:case 269:case 272:case 273:case 276:ql(95);break;default:Wl=$l}if(Wl==3353||Wl==4377||Wl==4889||Wl==5401||Wl==5913||Wl==16153||Wl==16665||Wl==17177||Wl==18055||Wl==18117||Wl==18175||Wl==18201||Wl==18713||Wl==21273||Wl==22297||Wl==24345||Wl==24857||Wl==28441||Wl==28953||Wl==31001||Wl==35609||Wl==36633||Wl==37657||Wl==38169||Wl==38681||Wl==39193||Wl==40217||Wl==40729||Wl==41241||Wl==41753||Wl==42265||Wl==42777||Wl==43289||Wl==43801||Wl==44313||Wl==44825||Wl==45849||Wl==46361||Wl==46873||Wl==47385||Wl==48409||Wl==48921||Wl==49945||Wl==50457||Wl==50969||Wl==52505||Wl==53017||Wl==53529||Wl==54041||Wl==54553||Wl==55065||Wl==56089||Wl==56601||Wl==57113||Wl==57625||Wl==58137||Wl==58649||Wl==61209||Wl==61721||Wl==62233||Wl==62745||Wl==63257||Wl==63769||Wl==64281||Wl==64793||Wl==65305||Wl==66329||Wl==66841||Wl==67865||Wl==68377||Wl==68889||Wl==69401||Wl==69913||Wl==70425||Wl==70937||Wl==71449||Wl==72985||Wl==73497||Wl==75545||Wl==76057||Wl==77081||Wl==78105||Wl==78617||Wl==79129||Wl==79641||Wl==80153||Wl==80665||Wl==82713||Wl==83225||Wl==83737||Wl==84249||Wl==84761||Wl==85273||Wl==85785||Wl==86297||Wl==86809||Wl==87321||Wl==88857||Wl==89369||Wl==89881||Wl==90905||Wl==91929||Wl==92953||Wl==93977||Wl==94489||Wl==95001||Wl==96025||Wl==96537||Wl==97049||Wl==99609||Wl==100121||Wl==100633||Wl==101145||Wl==101657||Wl==103705||Wl==104217||Wl==104729||Wl==105241||Wl==105753||Wl==106265||Wl==107801||Wl==110873||Wl==111385||Wl==112921||Wl==113945||Wl==114457||Wl==114969||Wl==115481||Wl==115993||Wl==117017||Wl==117529||Wl==118041||Wl==118553||Wl==119065||Wl==119577||Wl==120089||Wl==122649||Wl==123161||Wl==123673||Wl==124185||Wl==125721||Wl==126745||Wl==127257||Wl==127769||Wl==129817||Wl==130329||Wl==130841||Wl==131353||Wl==131865||Wl==132377||Wl==132889||Wl==133401||Wl==134425||Wl==134937||Wl==136473||Wl==136985||Wl==137497||Wl==138009||Wl==139545||Wl==140057||Wl==141593||Wl==144153||Wl==145177||Wl==147225){Wl=uc(20,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{vi(),Wl=-1}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Hi(),Wl=-5}catch(f){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Ml(),Wl=-10}catch(l){Wl=-11}}}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(20,Vl,Wl)}}switch(Wl){case-1:case 8:case 9:case 10:case 11:case 12935:case 12997:case 13055:case 13447:case 13509:case 13567:case 13959:case 14021:case 14079:case 19591:case 19653:case 19711:case 20103:case 20165:case 20223:case 21127:case 21189:case 21247:case 21639:case 21701:case 21759:case 22151:case 22213:case 22271:case 23175:case 23237:case 23295:case 24199:case 24261:case 24319:case 24711:case 24773:case 24831:case 25735:case 25797:case 25855:case 27783:case 27845:case 27903:case 28295:case 28357:case 28415:case 29831:case 29893:case 29951:case 30343:case 30405:case 30463:case 31367:case 31429:case 31487:case 31879:case 31941:case 31999:case 32391:case 32453:case 32511:case 32903:case 32965:case 33023:case 35463:case 35525:case 35583:case 35975:case 36037:case 36095:case 36487:case 36549:case 36607:case 39047:case 39109:case 39167:case 41095:case 41157:case 41215:case 41607:case 41669:case 41727:case 42119:case 42181:case 42239:case 43655:case 43717:case 43775:case 45191:case 45253:case 45311:case 45703:case 45765:case 45823:case 46215:case 46277:case 46335:case 46727:case 46789:case 46847:case 48775:case 48837:case 48895:case 51335:case 51397:case 51455:case 54407:case 54469:case 54527:case 56455:case 56517:case 56575:case 58503:case 58565:case 58623:case 61063:case 61125:case 61183:case 63111:case 63173:case 63231:case 63623:case 63685:case 63743:case 65159:case 65221:case 65279:case 66183:case 66245:case 66303:case 67719:case 67781:case 67839:case 71303:case 71365:case 71423:case 75911:case 75973:case 76031:case 76935:case 76997:case 77055:case 77959:case 78021:case 78079:case 78471:case 78533:case 78591:case 83079:case 83141:case 83199:case 84103:case 84165:case 84223:case 84615:case 84677:case 84735:case 85127:case 85189:case 85247:case 89735:case 89797:case 89855:case 90759:case 90821:case 90879:case 92807:case 92869:case 92927:case 93831:case 93893:case 93951:case 94343:case 94405:case 94463:case 96903:case 96965:case 97023:case 103559:case 103621:case 103679:case 104583:case 104645:case 104703:case 105095:case 105157:case 105215:case 107143:case 107205:case 107263:case 114823:case 114885:case 114943:case 116871:case 116933:case 116991:case 121479:case 121541:case 121599:case 123527:case 123589:case 123647:case 124039:case 124101:case 124159:case 129159:case 129221:case 129279:case 129671:case 129733:case 129791:case 130183:case 130245:case 130303:case 133255:case 133317:case 133375:case 139399:case 139461:case 139519:case 141447:case 141509:case 141567:case 142983:case 143045:case 143103:case 145543:case 145605:case 145663:case 146055:case 146117:case 146175:case 146567:case 146629:case 146687:case 147079:case 147141:case 147199:di();break;case 31:Si();break;case 35:Ci();break;case 32:Li();break;case-5:case 17926:case 17991:case 17993:case 17994:case 17995:case 17996:case 17998:case 18e3:case 18001:case 18002:case 18004:case 18005:case 18006:case 18007:case 18009:case 18010:case 18011:case 18012:case 18014:case 18015:case 18018:case 18019:case 18022:case 18023:case 18024:case 18025:case 18026:case 18027:case 18029:case 18030:case 18031:case 18032:case 18033:case 18034:case 18039:case 18040:case 18043:case 18044:case 18046:case 18047:case 18049:case 18050:case 18052:case 18053:case 18054:case 18056:case 18057:case 18058:case 18059:case 18062:case 18063:case 18068:case 18070:case 18072:case 18073:case 18075:case 18076:case 18077:case 18081:case 18082:case 18083:case 18084:case 18085:case 18086:case 18088:case 18090:case 18093:case 18094:case 18095:case 18097:case 18099:case 18101:case 18103:case 18104:case 18105:case 18107:case 18109:case 18115:case 18118:case 18122:case 18123:case 18124:case 18125:case 18126:case 18127:case 18130:case 18136:case 18137:case 18142:case 18143:case 18144:case 18145:case 18146:case 18148:case 18149:case 18152:case 18153:case 18154:case 18159:case 18160:case 18161:case 18162:case 18165:case 18173:case 18174:case 18176:case 18177:case 18178:case 18180:case 18182:case 18183:case 18186:case 18187:case 18188:case 18189:case 18192:case 18193:case 18196:Pi();break;case 144078:Oi();break;case 144134:_i();break;case 33:case 79:case 121:case 125:case 147:case 154:case 167:case 169:case 188:case 194:case 230:case 231:case 247:case 248:case 259:case 14854:case 14919:case 14921:case 14922:case 14923:case 14924:case 14926:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14935:case 14937:case 14938:case 14939:case 14940:case 14942:case 14943:case 14945:case 14946:case 14947:case 14950:case 14951:case 14952:case 14953:case 14954:case 14955:case 14957:case 14958:case 14959:case 14960:case 14961:case 14962:case 14967:case 14968:case 14970:case 14971:case 14972:case 14974:case 14975:case 14977:case 14978:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14986:case 14987:case 14990:case 14991:case 14996:case 14998:case 15e3:case 15001:case 15003:case 15004:case 15005:case 15009:case 15010:case 15011:case 15012:case 15013:case 15014:case 15016:case 15018:case 15021:case 15022:case 15023:case 15025:case 15027:case 15029:case 15031:case 15032:case 15033:case 15035:case 15037:case 15043:case 15045:case 15046:case 15050:case 15051:case 15052:case 15053:case 15054:case 15055:case 15058:case 15064:case 15065:case 15068:case 15070:case 15071:case 15072:case 15073:case 15074:case 15076:case 15077:case 15080:case 15081:case 15082:case 15087:case 15088:case 15089:case 15090:case 15093:case 15097:case 15101:case 15102:case 15103:case 15104:case 15105:case 15106:case 15108:case 15110:case 15111:case 15114:case 15115:case 15116:case 15117:case 15120:case 15121:case 15124:ys();break;case-10:case 27929:Ol();break;case-11:case 10009:Sl();break;case 69:Ll();break;case 283:wl();break;default:qi()}ic.endNonterminal("PrimaryExpr",Vl)}function bl(){switch($l){case 187:ql(247);break;case 220:ql(245);break;case 281:ql(283);break;case 83:case 122:ql(253);break;case 97:case 249:ql(97);break;case 120:case 206:case 262:ql(148);break;case 135:case 197:case 255:ql(237);break;case 6:case 71:case 73:case 74:case 75:case 76:case 78:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 103:case 104:case 105:case 106:case 107:case 109:case 110:case 111:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 130:case 132:case 133:case 134:case 136:case 137:case 138:case 139:case 142:case 143:case 148:case 150:case 152:case 153:case 155:case 156:case 157:case 161:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 177:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 222:case 223:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 240:case 241:case 242:case 245:case 253:case 254:case 256:case 257:case 258:case 260:case 263:case 266:case 267:case 268:case 269:case 272:case 273:case 276:ql(95);break;default:Wl=$l}if(Wl==3353||Wl==4377||Wl==4889||Wl==5401||Wl==5913||Wl==16153||Wl==16665||Wl==17177||Wl==18055||Wl==18117||Wl==18175||Wl==18201||Wl==18713||Wl==21273||Wl==22297||Wl==24345||Wl==24857||Wl==28441||Wl==28953||Wl==31001||Wl==35609||Wl==36633||Wl==37657||Wl==38169||Wl==38681||Wl==39193||Wl==40217||Wl==40729||Wl==41241||Wl==41753||Wl==42265||Wl==42777||Wl==43289||Wl==43801||Wl==44313||Wl==44825||Wl==45849||Wl==46361||Wl==46873||Wl==47385||Wl==48409||Wl==48921||Wl==49945||Wl==50457||Wl==50969||Wl==52505||Wl==53017||Wl==53529||Wl==54041||Wl==54553||Wl==55065||Wl==56089||Wl==56601||Wl==57113||Wl==57625||Wl==58137||Wl==58649||Wl==61209||Wl==61721||Wl==62233||Wl==62745||Wl==63257||Wl==63769||Wl==64281||Wl==64793||Wl==65305||Wl==66329||Wl==66841||Wl==67865||Wl==68377||Wl==68889||Wl==69401||Wl==69913||Wl==70425||Wl==70937||Wl==71449||Wl==72985||Wl==73497||Wl==75545||Wl==76057||Wl==77081||Wl==78105||Wl==78617||Wl==79129||Wl==79641||Wl==80153||Wl==80665||Wl==82713||Wl==83225||Wl==83737||Wl==84249||Wl==84761||Wl==85273||Wl==85785||Wl==86297||Wl==86809||Wl==87321||Wl==88857||Wl==89369||Wl==89881||Wl==90905||Wl==91929||Wl==92953||Wl==93977||Wl==94489||Wl==95001||Wl==96025||Wl==96537||Wl==97049||Wl==99609||Wl==100121||Wl==100633||Wl==101145||Wl==101657||Wl==103705||Wl==104217||Wl==104729||Wl==105241||Wl==105753||Wl==106265||Wl==107801||Wl==110873||Wl==111385||Wl==112921||Wl==113945||Wl==114457||Wl==114969||Wl==115481||Wl==115993||Wl==117017||Wl==117529||Wl==118041||Wl==118553||Wl==119065||Wl==119577||Wl==120089||Wl==122649||Wl==123161||Wl==123673||Wl==124185||Wl==125721||Wl==126745||Wl==127257||Wl==127769||Wl==129817||Wl==130329||Wl==130841||Wl==131353||Wl==131865||Wl==132377||Wl==132889||Wl==133401||Wl==134425||Wl==134937||Wl==136473||Wl==136985||Wl==137497||Wl==138009||Wl==139545||Wl==140057||Wl==141593||Wl==144153||Wl==145177||Wl==147225){Wl=uc(20,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{vi(),oc(20,t,-1),Wl=-14}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Hi(),oc(20,t,-5),Wl=-14}catch(f){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Ml(),oc(20,t,-10),Wl=-14}catch(l){Wl=-11,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(20,t,-11)}}}}}switch(Wl){case-1:case 8:case 9:case 10:case 11:case 12935:case 12997:case 13055:case 13447:case 13509:case 13567:case 13959:case 14021:case 14079:case 19591:case 19653:case 19711:case 20103:case 20165:case 20223:case 21127:case 21189:case 21247:case 21639:case 21701:case 21759:case 22151:case 22213:case 22271:case 23175:case 23237:case 23295:case 24199:case 24261:case 24319:case 24711:case 24773:case 24831:case 25735:case 25797:case 25855:case 27783:case 27845:case 27903:case 28295:case 28357:case 28415:case 29831:case 29893:case 29951:case 30343:case 30405:case 30463:case 31367:case 31429:case 31487:case 31879:case 31941:case 31999:case 32391:case 32453:case 32511:case 32903:case 32965:case 33023:case 35463:case 35525:case 35583:case 35975:case 36037:case 36095:case 36487:case 36549:case 36607:case 39047:case 39109:case 39167:case 41095:case 41157:case 41215:case 41607:case 41669:case 41727:case 42119:case 42181:case 42239:case 43655:case 43717:case 43775:case 45191:case 45253:case 45311:case 45703:case 45765:case 45823:case 46215:case 46277:case 46335:case 46727:case 46789:case 46847:case 48775:case 48837:case 48895:case 51335:case 51397:case 51455:case 54407:case 54469:case 54527:case 56455:case 56517:case 56575:case 58503:case 58565:case 58623:case 61063:case 61125:case 61183:case 63111:case 63173:case 63231:case 63623:case 63685:case 63743:case 65159:case 65221:case 65279:case 66183:case 66245:case 66303:case 67719:case 67781:case 67839:case 71303:case 71365:case 71423:case 75911:case 75973:case 76031:case 76935:case 76997:case 77055:case 77959:case 78021:case 78079:case 78471:case 78533:case 78591:case 83079:case 83141:case 83199:case 84103:case 84165:case 84223:case 84615:case 84677:case 84735:case 85127:case 85189:case 85247:case 89735:case 89797:case 89855:case 90759:case 90821:case 90879:case 92807:case 92869:case 92927:case 93831:case 93893:case 93951:case 94343:case 94405:case 94463:case 96903:case 96965:case 97023:case 103559:case 103621:case 103679:case 104583:case 104645:case 104703:case 105095:case 105157:case 105215:case 107143:case 107205:case 107263:case 114823:case 114885:case 114943:case 116871:case 116933:case 116991:case 121479:case 121541:case 121599:case 123527:case 123589:case 123647:case 124039:case 124101:case 124159:case 129159:case 129221:case 129279:case 129671:case 129733:case 129791:case 130183:case 130245:case 130303:case 133255:case 133317:case 133375:case 139399:case 139461:case 139519:case 141447:case 141509:case 141567:case 142983:case 143045:case 143103:case 145543:case 145605:case 145663:case 146055:case 146117:case 146175:case 146567:case 146629:case 146687:case 147079:case 147141:case 147199:vi();break;case 31:xi();break;case 35:ki();break;case 32:Ai();break;case-5:case 17926:case 17991:case 17993:case 17994:case 17995:case 17996:case 17998:case 18e3:case 18001:case 18002:case 18004:case 18005:case 18006:case 18007:case 18009:case 18010:case 18011:case 18012:case 18014:case 18015:case 18018:case 18019:case 18022:case 18023:case 18024:case 18025:case 18026:case 18027:case 18029:case 18030:case 18031:case 18032:case 18033:case 18034:case 18039:case 18040:case 18043:case 18044:case 18046:case 18047:case 18049:case 18050:case 18052:case 18053:case 18054:case 18056:case 18057:case 18058:case 18059:case 18062:case 18063:case 18068:case 18070:case 18072:case 18073:case 18075:case 18076:case 18077:case 18081:case 18082:case 18083:case 18084:case 18085:case 18086:case 18088:case 18090:case 18093:case 18094:case 18095:case 18097:case 18099:case 18101:case 18103:case 18104:case 18105:case 18107:case 18109:case 18115:case 18118:case 18122:case 18123:case 18124:case 18125:case 18126:case 18127:case 18130:case 18136:case 18137:case 18142:case 18143:case 18144:case 18145:case 18146:case 18148:case 18149:case 18152:case 18153:case 18154:case 18159:case 18160:case 18161:case 18162:case 18165:case 18173:case 18174:case 18176:case 18177:case 18178:case 18180:case 18182:case 18183:case 18186:case 18187:case 18188:case 18189:case 18192:case 18193:case 18196:Hi();break;case 144078:Mi();break;case 144134:Di();break;case 33:case 79:case 121:case 125:case 147:case 154:case 167:case 169:case 188:case 194:case 230:case 231:case 247:case 248:case 259:case 14854:case 14919:case 14921:case 14922:case 14923:case 14924:case 14926:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14935:case 14937:case 14938:case 14939:case 14940:case 14942:case 14943:case 14945:case 14946:case 14947:case 14950:case 14951:case 14952:case 14953:case 14954:case 14955:case 14957:case 14958:case 14959:case 14960:case 14961:case 14962:case 14967:case 14968:case 14970:case 14971:case 14972:case 14974:case 14975:case 14977:case 14978:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14986:case 14987:case 14990:case 14991:case 14996:case 14998:case 15e3:case 15001:case 15003:case 15004:case 15005:case 15009:case 15010:case 15011:case 15012:case 15013:case 15014:case 15016:case 15018:case 15021:case 15022:case 15023:case 15025:case 15027:case 15029:case 15031:case 15032:case 15033:case 15035:case 15037:case 15043:case 15045:case 15046:case 15050:case 15051:case 15052:case 15053:case 15054:case 15055:case 15058:case 15064:case 15065:case 15068:case 15070:case 15071:case 15072:case 15073:case 15074:case 15076:case 15077:case 15080:case 15081:case 15082:case 15087:case 15088:case 15089:case 15090:case 15093:case 15097:case 15101:case 15102:case 15103:case 15104:case 15105:case 15106:case 15108:case 15110:case 15111:case 15114:case 15115:case 15116:case 15117:case 15120:case 15121:case 15124:bs();break;case-10:case 27929:Ml();break;case-11:case 10009:xl();break;case 69:Al();break;case 283:El();break;case-14:break;default:Ri()}}function wl(){ic.startNonterminal("JSONSimpleObjectUnion",Vl),Pl(283),Il(274),$l!=286&&(jl(),G()),Pl(286),ic.endNonterminal("JSONSimpleObjectUnion",Vl)}function El(){Hl(283),Il(274),$l!=286&&Y(),Hl(286)}function Sl(){ic.startNonterminal("ObjectConstructor",Vl),Pl(281),Il(277),$l!=287&&(jl(),Tl()),Pl(287),ic.endNonterminal("ObjectConstructor",Vl)}function xl(){Hl(281),Il(277),$l!=287&&Nl(),Hl(287)}function Tl(){ic.startNonterminal("PairConstructorList",Vl),Cl();for(;;){if($l!=42)break;Pl(42),Il(268),jl(),Cl()}ic.endNonterminal("PairConstructorList",Vl)}function Nl(){kl();for(;;){if($l!=42)break;Hl(42),Il(268),kl()}}function Cl(){ic.startNonterminal("PairConstructor",Vl);switch($l){case 78:ql(279);break;case 139:ql(187);break;case 161:ql(282);break;case 177:ql(178);break;case 187:ql(252);break;case 220:ql(248);break;case 223:ql(180);break;case 266:ql(191);break;case 83:case 122:ql(257);break;case 97:case 249:ql(149);break;case 111:case 222:ql(262);break;case 104:case 130:case 240:ql(165);break;case 135:case 197:case 255:ql(209);break;case 120:case 206:case 256:case 262:ql(167);break;case 121:case 125:case 167:case 188:case 194:case 230:case 231:ql(96);break;case 71:case 73:case 74:case 75:case 76:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 103:case 105:case 106:case 107:case 109:case 110:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 132:case 133:case 134:case 136:case 137:case 138:case 142:case 143:case 147:case 148:case 150:case 152:case 153:case 154:case 155:case 156:case 157:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 241:case 242:case 245:case 248:case 253:case 254:case 257:case 258:case 259:case 260:case 263:case 267:case 268:case 269:case 272:case 273:case 276:ql(144);break;default:Wl=$l}if(Wl==25735||Wl==25797||Wl==25855){Wl=uc(21,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Xf(),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(21,Vl,Wl)}}switch(Wl){case-2:case 19:case 25671:case 25673:case 25674:case 25675:case 25676:case 25678:case 25680:case 25681:case 25682:case 25683:case 25684:case 25685:case 25686:case 25687:case 25689:case 25690:case 25691:case 25692:case 25694:case 25695:case 25697:case 25698:case 25699:case 25702:case 25703:case 25704:case 25705:case 25706:case 25707:case 25709:case 25710:case 25711:case 25712:case 25713:case 25714:case 25719:case 25720:case 25721:case 25722:case 25723:case 25724:case 25725:case 25726:case 25727:case 25729:case 25730:case 25732:case 25733:case 25734:case 25736:case 25737:case 25738:case 25739:case 25742:case 25743:case 25747:case 25748:case 25750:case 25752:case 25753:case 25754:case 25755:case 25756:case 25757:case 25761:case 25762:case 25763:case 25764:case 25765:case 25766:case 25767:case 25768:case 25770:case 25773:case 25774:case 25775:case 25777:case 25779:case 25781:case 25783:case 25784:case 25785:case 25787:case 25788:case 25789:case 25794:case 25795:case 25798:case 25802:case 25803:case 25804:case 25805:case 25806:case 25807:case 25810:case 25816:case 25817:case 25820:case 25822:case 25823:case 25824:case 25825:case 25826:case 25828:case 25829:case 25830:case 25831:case 25832:case 25833:case 25834:case 25839:case 25840:case 25841:case 25842:case 25845:case 25848:case 25849:case 25853:case 25854:case 25856:case 25857:case 25858:case 25859:case 25860:case 25862:case 25863:case 25866:case 25867:case 25868:case 25869:case 25872:case 25873:case 25876:Ga();break;default:Wf()}Il(26),Pl(50),Il(267),jl(),Wf(),ic.endNonterminal("PairConstructor",Vl)}function kl(){switch($l){case 78:ql(279);break;case 139:ql(187);break;case 161:ql(282);break;case 177:ql(178);break;case 187:ql(252);break;case 220:ql(248);break;case 223:ql(180);break;case 266:ql(191);break;case 83:case 122:ql(257);break;case 97:case 249:ql(149);break;case 111:case 222:ql(262);break;case 104:case 130:case 240:ql(165);break;case 135:case 197:case 255:ql(209);break;case 120:case 206:case 256:case 262:ql(167);break;case 121:case 125:case 167:case 188:case 194:case 230:case 231:ql(96);break;case 71:case 73:case 74:case 75:case 76:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 103:case 105:case 106:case 107:case 109:case 110:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 132:case 133:case 134:case 136:case 137:case 138:case 142:case 143:case 147:case 148:case 150:case 152:case 153:case 154:case 155:case 156:case 157:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 241:case 242:case 245:case 248:case 253:case 254:case 257:case 258:case 259:case 260:case 263:case 267:case 268:case 269:case 272:case 273:case 276:ql(144);break;default:Wl=$l}if(Wl==25735||Wl==25797||Wl==25855){Wl=uc(21,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Xf(),oc(21,t,-1),Wl=-3}catch(a){Wl=-2,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(21,t,-2)}}}switch(Wl){case-2:case 19:case 25671:case 25673:case 25674:case 25675:case 25676:case 25678:case 25680:case 25681:case 25682:case 25683:case 25684:case 25685:case 25686:case 25687:case 25689:case 25690:case 25691:case 25692:case 25694:case 25695:case 25697:case 25698:case 25699:case 25702:case 25703:case 25704:case 25705:case 25706:case 25707:case 25709:case 25710:case 25711:case 25712:case 25713:case 25714:case 25719:case 25720:case 25721:case 25722:case 25723:case 25724:case 25725:case 25726:case 25727:case 25729:case 25730:case 25732:case 25733:case 25734:case 25736:case 25737:case 25738:case 25739:case 25742:case 25743:case 25747:case 25748:case 25750:case 25752:case 25753:case 25754:case 25755:case 25756:case 25757:case 25761:case 25762:case 25763:case 25764:case 25765:case 25766:case 25767:case 25768:case 25770:case 25773:case 25774:case 25775:case 25777:case 25779:case 25781:case 25783:case 25784:case 25785:case 25787:case 25788:case 25789:case 25794:case 25795:case 25798:case 25802:case 25803:case 25804:case 25805:case 25806:case 25807:case 25810:case 25816:case 25817:case 25820:case 25822:case 25823:case 25824:case 25825:case 25826:case 25828:case 25829:case 25830:case 25831:case 25832:case 25833:case 25834:case 25839:case 25840:case 25841:case 25842:case 25845:case 25848:case 25849:case 25853:case 25854:case 25856:case 25857:case 25858:case 25859:case 25860:case 25862:case 25863:case 25866:case 25867:case 25868:case 25869:case 25872:case 25873:case 25876:Ya();break;case-3:break;default:Xf()}Il(26),Hl(50),Il(267),Xf()}function Ll(){ic.startNonterminal("ArrayConstructor",Vl),Pl(69),Il(273),$l!=70&&(jl(),G()),Pl(70),ic.endNonterminal("ArrayConstructor",Vl)}function Al(){Hl(69),Il(273),$l!=70&&Y(),Hl(70)}function Ol(){ic.startNonterminal("BlockExpr",Vl),Pl(281),Il(281),jl(),of(),Pl(287),ic.endNonterminal("BlockExpr",Vl)}function Ml(){Hl(281),Il(281),uf(),Hl(287)}function _l(){ic.startNonterminal("FunctionDecl",Vl),Pl(147),Il(246),jl(),$a(),Il(22),Pl(35),Il(98),$l==31&&(jl(),U()),Pl(38),Il(158),$l==80&&(jl(),Dl()),Il(122);switch($l){case 281:Pl(281),Il(281),jl(),of(),Pl(287);break;default:Pl(134)}ic.endNonterminal("FunctionDecl",Vl)}function Dl(){ic.startNonterminal("ReturnType",Vl),Pl(80),Il(254),jl(),Ls(),ic.endNonterminal("ReturnType",Vl)}function Pl(e){$l==e?(jl(),ic.terminal(i.TOKEN[$l],Jl,Kl>fc?fc:Kl),Xl=Jl,Vl=Kl,$l=Ql,$l!=0&&(Jl=Gl,Kl=Yl,Ql=0)):zl(Jl,Kl,0,$l,e)}function Hl(e){$l==e?(Xl=Jl,Vl=Kl,$l=Ql,$l!=0&&(Jl=Gl,Kl=Yl,Ql=0)):zl(Jl,Kl,0,$l,e)}function Bl(e){var t=Xl,n=Vl,r=$l,i=Jl,s=Kl;$l=e,Jl=lc,Kl=cc,Ql=0,Va(),Xl=t,Vl=n,$l=r,$l!=0&&(Jl=i,Kl=s)}function jl(){Vl!=Jl&&(Xl=Vl,Vl=Jl,ic.whitespace(Xl,Vl))}function Fl(e){var t;for(;;){t=hc(e);if(t!=22){if(t!=37)break;Bl(t)}}return t}function Il(e){$l==0&&($l=Fl(e),Jl=lc,Kl=cc)}function ql(e){Ql==0&&(Ql=Fl(e),Gl=lc,Yl=cc),Wl=Ql<<9|$l}function Rl(e){$l==0&&($l=hc(e),Jl=lc,Kl=cc)}function Ul(e){Ql==0&&(Ql=hc(e),Gl=lc,Yl=cc),Wl=Ql<<9|$l}function zl(e,t,r,i,s){throw t>ec&&(Zl=e,ec=t,tc=r,nc=i,rc=s),new n.ParseException(Zl,ec,tc,nc,rc)}function oc(e,t,n){sc[(t<<5)+e]=n}function uc(e,t){var n=sc[(t<<5)+e];return typeof n!="undefined"?n:0}function hc(e){var t=!1;lc=cc;var n=cc,r=i.INITIAL[e],s=0;for(var o=r&8191;o!=0;){var u,a=n<fc?ac.charCodeAt(n):0;++n;if(a<128)u=i.MAP0[a];else if(a<55296){var f=a>>4;u=i.MAP1[(a&15)+i.MAP1[(f&31)+i.MAP1[f>>5]]]}else{if(a<56320){var f=n<fc?ac.charCodeAt(n):0;f>=56320&&f<57344&&(++n,a=((a&1023)<<10)+(f&1023)+65536,t=!0)}var l=0,c=5;for(var h=3;;h=c+l>>1){if(i.MAP2[h]>a)c=h-1;else{if(!(i.MAP2[6+h]<a)){u=i.MAP2[12+h];break}l=h+1}if(l>c){u=0;break}}}s=o;var p=(u<<13)+o-1;o=i.TRANSITION[(p&15)+i.TRANSITION[p>>4]],o>8191&&(r=o,o&=8191,cc=n)}r>>=13;if(r==0){cc=n-1;var f=cc<fc?ac.charCodeAt(cc):0;return f>=56320&&f<57344&&--cc,zl(lc,cc,s,-1,-1)}if(t)for(var d=r>>9;d>0;--d){--cc;var f=cc<fc?ac.charCodeAt(cc):0;f>=56320&&f<57344&&--cc}else cc-=r>>9;return(r&511)-1}r(e,t);var n=this;this.ParseException=function(e,t,n,r,i){var s=e,o=t,u=n,a=r,f=i;this.getBegin=function(){return s},this.getEnd=function(){return o},this.getState=function(){return u},this.getExpected=function(){return f},this.getOffending=function(){return a},this.getMessage=function(){return a<0?"lexical analysis failed":"syntax error"}},this.getInput=function(){return ac},this.getOffendingToken=function(e){var t=e.getOffending();return t>=0?i.TOKEN[t]:null},this.getExpectedTokenSet=function(e){var t;return e.getExpected()<0?t=i.getTokenSet(-e.getState()):t=[i.TOKEN[e.getExpected()]],t},this.getErrorMessage=function(e){var t=this.getExpectedTokenSet(e),n=this.getOffendingToken(e),r=ac.substring(0,e.getBegin()),i=r.split("\n"),s=i.length,o=i[s-1].length+1,u=e.getEnd()-e.getBegin();return e.getMessage()+(n==null?"":", found "+n)+"\nwhile expecting "+(t.length==1?t[0]:"["+t.join(", ")+"]")+"\n"+(u==0||n!=null?"":"after successfully scanning "+u+" characters beginning ")+"at line "+s+", column "+o+":\n..."+ac.substring(e.getBegin(),Math.min(ac.length,e.getBegin()+64))+"..."},this.parse_XQuery=function(){ic.startNonterminal("XQuery",Vl),Il(278),jl(),o(),Pl(25),ic.endNonterminal("XQuery",Vl)};var Wl,Xl,Vl,$l,Jl,Kl,Ql,Gl,Yl,Zl,ec,tc,nc,rc,ic,sc,ac,fc,lc,cc};r.getTokenSet=function(e){var t=[],n=e<0?-e:INITIAL[e]&8191;for(var i=0;i<289;i+=32){var s=i,o=(i>>5)*4317+n-1,u=o>>2,a=u>>2,f=r.EXPECTED[(o&3)+r.EXPECTED[(u&3)+r.EXPECTED[(a&15)+r.EXPECTED[a>>4]]]];for(;f!=0;f>>>=1,++s)(f&1)!=0&&t.push(r.TOKEN[s])}return t},r.MAP0=[71,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,17,17,17,17,17,17,17,17,17,18,19,20,21,22,23,24,25,26,27,28,29,26,30,30,30,30,30,31,32,33,30,30,34,30,30,35,30,30,30,36,30,30,37,38,39,40,30,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,40,40],r.MAP1=[108,124,214,214,214,214,214,214,214,214,214,214,214,214,214,214,156,181,181,181,181,181,214,215,213,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,247,261,277,293,309,355,371,387,423,423,423,415,339,331,339,331,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,440,440,440,440,440,440,440,324,339,339,339,339,339,339,339,339,401,423,423,424,422,423,423,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,338,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,423,71,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,17,17,17,17,17,17,17,17,17,18,19,20,21,22,23,24,25,26,27,28,29,26,30,30,30,30,30,31,32,33,30,30,30,30,30,30,30,30,30,30,30,30,30,30,40,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,34,30,30,35,30,30,30,36,30,30,37,38,39,40,30,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,40,40,40,40,40,40,40,40,40,40,40,40,30,30,40,40,40,40,40,40,40,70,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70],r.MAP2=[57344,63744,64976,65008,65536,983040,63743,64975,65007,65533,983039,1114111,40,30,40,30,30,40],r.INITIAL=[1,24578,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290],r.TRANSITION=[37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,36864,36899,36883,36883,36883,36903,36883,36883,36883,36883,36883,36926,36919,36883,36883,36879,36883,36883,36942,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,39727,39739,37318,37318,72403,39755,36991,37318,37318,41289,37087,37318,37318,37010,39794,37318,37318,37318,37318,65657,40192,38525,37318,37318,39813,40192,39835,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39854,39870,37318,37318,37318,46325,37318,37318,36994,37318,61657,45847,57964,37318,37318,61650,62405,62409,50496,39889,37318,37318,41289,37087,37318,44009,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,45833,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39908,62747,37318,37318,37318,42026,65655,37318,73568,65651,65646,39935,62736,68791,45102,45088,45095,68779,39950,36991,37318,37318,41289,39994,37318,45426,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,39370,40016,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,40039,69458,41098,41041,37318,46044,44842,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,47580,37318,37318,37318,48276,40073,37318,37015,71422,71423,40094,57964,37318,37318,67783,40130,40134,40150,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,40186,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,71599,37318,37318,37318,37318,67919,40209,37318,37318,66772,40222,40225,40241,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,71606,73347,37318,37318,37318,37318,37318,40283,40324,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,40344,37116,37202,37162,40378,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,40416,40432,37318,37318,37318,48315,37318,37318,37526,37318,62612,40451,57964,37318,37318,62605,65082,65086,40487,40535,37318,37318,41289,37087,37318,37318,40554,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38131,40575,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,40598,40656,40697,40697,40697,40663,40736,40697,40698,40727,40642,40679,40626,40693,40745,40613,40752,40714,40768,36991,37318,37318,40817,40815,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,40804,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,43152,37318,37318,37318,48276,40833,37318,37318,73511,37318,67919,57964,40868,40872,43155,43156,43784,40888,36991,37318,37318,41289,40924,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,40942,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,43775,37318,37318,37318,48276,37318,37318,37318,37318,69945,73273,57964,40977,41007,44794,41023,73756,40991,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,41058,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,45645,38564,57964,41115,41135,37318,41119,41135,41149,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,37301,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,62620,37318,37318,37318,48276,62315,37318,37318,42112,62617,51150,68655,68669,68671,37318,37318,74e3,41165,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,41215,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,41238,41258,37318,41242,41258,41272,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,69205,37318,62433,37318,68839,45752,41288,37301,44633,37318,37318,37318,37318,73164,72644,41305,72644,72644,41324,38775,41542,41542,58552,65498,52179,65498,65498,52319,41461,41342,41461,41461,60376,37318,37318,37318,37318,37318,37318,57380,44576,38329,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,57802,45001,37318,37318,37318,37318,37318,62575,37318,37318,71516,41385,72644,72644,72644,72645,41405,67865,41542,58857,41542,41542,46917,69302,65498,55881,65498,65498,53308,58621,41461,41722,41461,41461,47863,54854,37318,37318,37318,37318,64802,37318,37318,72642,48855,72644,72644,72644,38767,41542,41439,41542,41542,41444,65497,64981,65498,65498,65498,59803,41461,41460,41461,41461,47863,54854,37318,37318,69109,41478,37318,60498,72644,72644,70521,58547,41542,41542,60742,46770,65498,65498,73471,59798,41461,41461,70944,47288,64766,37318,37318,37507,37318,71005,72644,60920,59569,41542,41542,72922,65498,65498,48896,41461,41461,46878,37318,60844,41498,41222,67506,72644,41518,41541,58729,41559,65498,46559,41593,41462,56939,50451,37318,66947,41614,41423,73664,58829,59801,41638,49498,41664,52412,41686,41702,41738,63218,38594,66255,64873,73961,46828,73161,59759,73663,59797,47605,39543,41802,41825,41848,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,45787,57964,41925,72170,37318,38278,38288,41945,36991,37318,37318,41289,37087,37318,37318,41981,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,69382,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,42002,37318,37318,37318,45026,37318,37318,37318,37318,37318,67919,57964,42022,71555,37318,43019,43028,71570,36991,37318,37318,41289,37087,37318,37318,37010,42042,37318,73045,37318,37318,65657,40192,38525,37318,37318,39335,40192,45833,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,42061,37318,37318,37318,48276,37318,37318,37318,37318,37318,50713,57964,37318,37318,37318,38993,38997,42078,42128,37318,37318,41289,37087,37318,37318,42147,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,42168,62003,69205,37318,37318,37318,68839,37318,37318,39275,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,41324,41542,41542,41542,58552,65498,65498,65498,65498,57854,41461,41461,41461,41461,64567,42190,37318,37318,37318,37318,37318,42212,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,67436,42249,37318,37318,37318,37318,37318,44403,37318,37318,37318,72643,72644,72644,72644,72644,72187,38772,41542,41542,41542,41542,41542,72266,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,51497,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,42270,41542,41542,41542,41542,49331,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,47501,37318,37318,37318,37318,37318,60498,72644,72644,72644,42291,41542,41542,41542,59595,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,63809,37318,37318,37318,49242,42389,37318,37318,42312,41767,44524,59934,42356,42367,45136,42383,44513,42405,42445,37318,37318,40926,42420,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,44142,43528,42807,74542,43714,44329,37031,44584,37054,42466,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,42495,44053,42520,44234,42536,42631,42566,42582,42617,43323,74548,42732,42652,43181,43457,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,74695,44148,43301,42504,44146,43812,43314,42636,43906,44107,42807,42594,42699,42706,42722,43750,42901,42677,43141,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,42748,42962,43618,43603,43820,43354,42764,44271,43892,42788,42804,42826,43918,42855,43210,42882,42898,42920,44134,44337,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,42949,44040,42992,42978,43271,43008,43044,42839,43084,44099,43110,43126,43172,43197,43740,43442,43226,43242,38263,37318,38304,37318,38354,38370,45231,38397,38413,43259,44205,43287,43339,74705,42601,43379,43395,43411,42683,43427,43493,43509,57783,51848,38545,38580,73050,38677,38610,43544,43363,43588,43648,42772,43664,43059,43680,43709,43730,43766,38739,38791,38841,38876,38942,38892,43800,43836,43632,43878,43941,43957,42665,43973,43989,39013,39048,39078,44025,44069,44085,43094,44123,43693,44164,39249,55484,44195,43559,43068,43925,39327,39819,44240,42810,42904,39356,44221,43849,44282,42866,45051,43520,43862,42933,39494,44256,44298,44314,39590,43572,44353,42550,44369,44420,44431,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37091,37318,37318,37318,48276,39140,44447,37318,67184,67184,50155,62190,71955,71957,37318,37089,71946,44465,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,44502,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38381,36956,50180,37398,37414,37436,50351,44540,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,44565,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,44600,38038,38061,37792,39434,44649,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,44665,37459,38432,38451,37229,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,37318,73156,44700,44701,37318,74225,74229,44717,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,46650,37318,37318,65657,40192,38525,37318,37318,39335,40192,44756,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,44775,67647,37318,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,44810,44811,37318,37318,74488,44827,44876,37318,37318,41289,37087,37318,37318,37010,37318,37318,44898,37318,37318,65657,40192,38525,37318,37318,39335,40192,44921,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,44940,44949,37318,37318,37318,45580,37318,37318,37318,37318,37318,67919,57964,44969,44970,37318,37318,68795,44986,45022,37318,37318,41289,37087,37318,37318,37010,37318,37318,72142,37318,37318,65657,40192,38525,37318,37318,39335,40192,38201,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,45042,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45074,37318,37318,37318,37318,48276,59955,37318,37318,37318,59954,73317,57964,37318,45118,37318,37318,45127,45152,36991,37318,37318,41289,37087,37318,37318,37010,45201,37318,37318,37318,37318,65657,40192,38525,37318,37318,45220,40192,45247,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,37318,37318,37318,46105,37318,45266,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,64567,41960,37318,37318,37318,37318,37318,44399,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,63696,45404,37318,37318,37318,37318,37318,44403,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,51497,37318,37318,37318,37318,47785,37318,37318,72642,72644,72644,72644,72644,61913,41542,41542,41542,41542,48876,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,47501,37318,37318,37318,37318,37318,60498,72644,72644,72644,42291,41542,41542,41542,59595,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,45425,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,64567,41960,37318,37318,37318,37318,37318,44399,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,63696,45404,37318,37318,37318,37318,37318,44403,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,51497,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,61913,41542,41542,41542,41542,48876,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,47501,37318,37318,37318,37318,37318,60498,72644,72644,72644,42291,41542,41542,41542,59595,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,64567,41960,37318,37318,37318,37318,37318,44399,68819,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,63696,45404,37318,37318,37318,37318,37318,44403,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,51497,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,61913,41542,41542,41542,41542,48876,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,47501,37318,37318,37318,37318,37318,60498,72644,72644,72644,42291,41542,41542,41542,59595,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,64567,41960,37318,37318,37318,37318,37318,44399,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,63696,45404,37318,37318,37318,37318,37318,45442,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,51497,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,61913,41542,41542,41542,41542,48876,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,47501,37318,37318,37318,37318,37318,60498,72644,72644,72644,42291,41542,41542,41542,59595,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,50781,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,53518,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,64567,41960,37318,37318,37318,37318,37318,44399,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,63696,45404,37318,37318,37318,37318,37318,44403,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,51497,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,61913,41542,41542,41542,41542,48876,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,47501,37318,37318,37318,37318,37318,60498,72644,72644,72644,42291,41542,41542,41542,59595,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,65804,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,48653,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,60153,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,45477,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45496,45525,45509,45539,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,64785,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45555,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,38529,37318,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,45576,74434,37318,74579,74583,74448,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,68588,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,45596,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,37318,37318,37318,37318,37318,45625,45661,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,45833,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,45715,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,45680,45684,37318,37318,45700,45732,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,45768,39048,39078,39105,39169,39156,39172,39188,39089,39218,45803,55484,39265,39291,55476,39311,45819,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,37318,37318,37318,37318,37318,45266,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,45863,37318,37318,44953,53155,45882,37318,52352,45886,39423,67164,45902,45916,45932,45961,45945,45975,45991,37318,45455,41670,46020,50786,46004,46033,45185,46061,46096,44613,41965,46121,46173,46189,46205,46221,46237,46288,65632,46304,37318,37318,68839,40298,50758,37318,41033,53889,69149,37318,46321,73164,72644,72644,72644,46341,45386,41542,41542,59697,52709,65498,65498,65498,64013,57854,41461,41461,41461,53427,64567,41960,63943,65692,37318,55390,46361,44399,46380,37318,58658,46936,46397,46417,72644,72644,59240,58293,46453,46492,41542,41542,52156,55833,61582,46520,65498,65498,64241,46547,52866,68024,41461,41461,68015,46594,47566,46621,37318,37318,46672,37318,46264,44403,37318,40057,46707,46725,63333,41308,72644,46741,63340,42275,46760,41542,46793,66052,61720,45363,46811,65498,49417,68460,65498,46845,46864,41461,51002,52264,41461,46904,52111,46933,46952,37318,46684,52530,67711,37318,59166,64847,72644,54549,51902,61913,46986,41542,41542,73854,71759,72272,41570,65498,54158,68314,46848,58449,41461,41461,47016,47035,51372,47057,47076,37318,47124,37318,47140,47156,71524,72644,42291,47208,67563,41542,59595,47244,47267,65498,59798,47304,47328,41461,53433,37318,47344,37318,61381,37318,72644,47362,47380,41542,47407,47424,65498,47447,64139,63673,47467,64041,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,41347,39062,47486,47520,47551,47602,47622,61702,70577,48688,47605,47638,50030,47449,46829,57656,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,47659,37318,37318,44953,37318,37318,37318,37318,37318,67919,47681,47697,47709,47725,47754,47738,47770,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,67827,50028,47806,47251,47282,47858,50482,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,64567,41960,37318,37318,37318,37318,73633,44399,56082,37318,56083,37318,73164,72644,72644,72644,72644,47879,41363,41542,41542,41542,41542,47922,65493,65498,65498,65498,65498,47955,46825,41461,41461,41461,67629,66428,63696,45404,37318,37318,37318,37318,37318,44403,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,51497,37318,58926,37318,37318,64306,57609,37318,65431,72644,72644,72644,56125,63073,47979,41542,41542,41542,70807,58352,65498,65498,65498,65498,47999,41461,41461,41461,41461,48015,47501,37318,37318,37318,37318,37318,60498,72644,72644,72644,42291,41542,41542,41542,59595,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,65375,48037,48062,48088,48113,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,49548,37318,37318,44953,37318,41780,37318,41482,37318,54642,48139,48155,48170,48186,48215,48199,48231,65689,37318,37318,48273,48292,37318,48311,37318,51503,37318,37318,37318,48331,46709,48623,50028,58342,50938,47282,52495,55465,37318,48349,37318,68839,48369,47665,37318,51866,48388,48408,48427,73007,67026,70205,72644,72644,72644,48444,48468,41542,41542,52709,48501,48532,65498,65498,51441,56912,41461,41461,41461,64567,71585,37318,37318,65402,37318,56580,44399,46364,37873,48553,37318,73164,48570,72644,48622,56986,72644,41363,48639,50032,41542,55261,41542,65493,48669,57135,65498,73731,65498,46825,48704,41598,41461,48739,41461,63696,45404,37318,37318,39025,37318,62106,44403,37318,37318,37318,72643,72644,72644,60958,57260,72645,38772,41542,41542,54046,68350,48760,45363,65498,65498,65498,48780,52828,59800,41461,41461,41461,48796,66903,47863,51534,37318,37318,37318,64199,37318,64441,37318,72642,72644,72644,64854,72644,61913,41542,41542,41542,48812,48876,65497,65498,65498,71839,65498,59803,41461,41461,47470,41461,47863,47501,37318,65142,37318,37318,38723,48831,72644,48851,72644,42291,41542,48871,41542,59595,65498,70398,65498,59798,41461,61249,41461,42174,72114,37318,37318,53513,66795,54283,70249,60920,63484,67969,41542,58586,58373,65498,49897,57220,41461,56936,37318,37318,67331,73163,72644,72800,50031,41542,52475,65498,65498,48892,41461,58211,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,47019,45307,48912,48959,48989,49019,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,70340,49053,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,49089,37318,44953,37318,48599,37585,39665,37318,67919,49107,49123,49137,49153,49182,49166,49196,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,48353,37318,48351,60095,51266,41622,41369,62908,47535,62003,72217,37318,62994,49212,68839,37318,49238,37318,49258,37318,51050,39778,49276,57933,60709,68980,49292,71214,49326,70571,70834,49347,57459,49369,49386,49404,49439,49457,61552,61800,49485,58425,64567,41960,37318,37318,68084,37318,56022,44399,37318,37318,37318,70710,73164,72644,72644,72644,72644,49520,41363,41542,41542,41542,52429,41542,65493,65498,65498,65498,59621,65498,46825,41461,41461,41461,65942,41461,71902,49537,37318,37318,48372,63307,37318,44403,37318,37318,38213,70690,72446,72644,72644,72644,64634,56631,49564,49582,41542,41542,56653,45363,49600,48682,65498,65498,64927,49622,49640,70938,41461,41461,62085,49662,51497,37318,37318,37318,37318,37318,49684,37318,68617,72644,72644,69970,72644,65479,41542,41542,41326,41542,48876,49710,65498,65498,47842,65498,59286,41461,41461,58267,41461,47863,47501,37918,62752,37318,37318,49733,60498,55203,65029,49752,42291,67741,65203,74026,59595,66024,65498,49773,59798,49646,41461,49825,47288,37318,51997,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,49852,37318,73163,72644,60539,50031,41542,72428,65498,65498,49872,41461,70461,56939,61615,37318,72643,60923,41542,57845,65498,49892,41461,49913,72946,72644,50030,54383,59799,54339,40392,49935,49960,49980,50002,57326,50022,50048,50069,50089,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,50115,37318,44953,44449,50137,37318,37060,50171,54108,64429,50196,50210,50226,50255,50239,50269,65689,44626,50285,50301,50316,50332,50367,39233,53108,50384,61398,55344,50419,50467,50512,50528,50544,50594,50610,50651,50667,73014,50694,49260,50729,62653,50756,50774,72085,37318,37318,49073,37318,73164,50802,70730,47643,67373,50837,50866,47931,48477,50890,64147,50934,50954,50974,61240,51024,54206,54678,60300,51066,42093,59527,51082,54503,44179,51132,51166,69514,50121,44486,44480,51182,51198,51247,51290,51306,51322,51357,51407,51457,51482,51519,51581,60231,51607,51635,51659,51675,51432,54188,73942,51691,51713,51750,51800,41753,51824,51840,37318,45167,74354,51864,51882,51918,51962,51982,72643,52018,52052,68101,52072,70228,38772,52096,72897,41542,52136,57279,52172,66566,52195,65498,64541,65498,52222,56902,52245,41461,67612,41461,52280,51497,37891,64079,46636,37318,52344,55168,73701,70986,47906,72644,52368,52401,61913,52428,52445,53191,52464,52511,46777,66351,65498,52546,52580,55946,51008,41461,52615,49469,47863,47501,37318,39657,52645,37318,58484,60498,52664,60195,52685,42291,67536,73887,52704,59595,49809,69760,70602,59798,46578,54457,71795,47288,37318,68581,52725,60872,52759,71031,52775,65989,69245,52802,72675,52206,52852,55908,48097,54237,46605,52882,52918,52936,39919,39478,52952,52973,52992,65449,53038,56792,66087,71786,53088,56765,56939,40362,53104,72643,69978,41542,52310,65498,53124,53817,55637,53146,55211,53171,53289,59799,53207,55668,73239,68122,73294,50578,53242,53264,53284,53305,53324,42326,53340,53356,53372,60496,73658,47451,66435,53400,53449,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,51938,37318,44953,62203,56053,37318,51929,37318,53498,53534,53550,53564,53580,53609,53593,53623,65689,37318,68909,41289,37087,37318,37318,37318,37318,61388,37318,61393,61388,52002,53639,47391,58863,63536,59869,62003,50482,37318,53663,37318,68839,53663,37318,37318,37318,69142,53682,45250,37318,55674,71208,72644,72644,72644,53704,53738,41542,41542,52709,48072,65498,65498,65498,57854,53755,41461,41461,41461,64567,41960,37318,37318,37318,37318,37318,44399,37318,37318,37318,53779,73164,72644,72644,72644,63735,72644,41363,41542,41542,41542,60760,41542,65493,65498,65498,65498,61277,65498,46825,41461,41461,41461,48744,41461,63696,45404,37318,37318,37318,37318,37318,44403,37318,45747,37318,72643,72644,72644,50815,72644,72645,38772,41542,41542,71247,41542,41542,45363,65498,65498,48537,65498,65498,59800,41461,41461,67762,41461,41461,47863,51497,37318,37318,37318,37318,37318,67308,37318,72642,72644,72644,56359,72644,61913,41542,41542,41542,70112,48876,65497,65498,65498,66735,65498,59803,41461,41461,41461,53797,47863,47501,37318,37318,37318,37318,37318,60498,72644,72644,72644,42291,41542,41542,41542,59595,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,54260,37318,37318,37318,73163,67467,72644,48046,41542,73662,48935,65498,59802,53815,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,41851,61054,66378,62339,68189,53833,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,39797,37318,37318,37318,67919,53869,53905,53909,53925,53954,53938,53968,65689,37318,37318,41289,37087,37318,45716,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,46136,46156,37318,37318,68839,37318,37318,37318,37318,40903,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,36975,37318,64085,73164,72644,72644,72644,72644,72644,53984,41542,41542,41542,41542,41542,62136,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,54006,37318,54026,36968,37318,37318,53666,72643,72644,65774,72644,72644,72645,38772,41542,41542,54043,41542,41542,45363,65498,65498,53015,65498,65498,59800,41461,41461,66593,41461,41461,71140,54854,37318,37318,54062,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,54082,64821,37318,60498,72644,72644,62830,58547,41542,41542,58315,46770,65498,65498,71297,59798,41461,41461,54740,47288,59033,54099,69440,44860,37318,54124,64478,44740,41542,54141,70297,54157,61206,54174,54204,58614,54222,56936,53884,37318,41072,40582,71978,54276,54299,54319,56380,73391,73919,41714,55599,54335,56939,50403,59838,42233,54355,53715,54379,54399,59801,54439,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,57408,54473,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,59399,37318,37318,60166,37087,37318,37318,37318,54501,37318,54501,42045,54519,39472,54546,54565,67872,65498,54590,62375,54624,37318,37318,47504,68839,67717,44759,37318,37318,54658,37318,37318,37318,73164,72644,72644,58045,72644,45386,41542,41542,67542,52709,65498,65498,65498,56180,57854,41461,41461,41461,54676,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,68532,57795,73164,72644,72644,72644,72644,72644,54694,41542,41542,41542,41542,41542,54716,65498,65498,65498,65498,65498,54737,41461,41461,41461,41461,41461,54756,71731,37318,37318,37318,37318,37318,37318,37318,37318,74625,57661,72644,72644,72644,72644,72645,38772,54791,41542,41542,41542,41542,45363,54808,65498,65498,65498,65498,59800,54829,41461,41461,41461,41461,47863,54854,37318,37318,66657,37318,37318,37318,37318,72642,72644,72644,72644,58513,38767,41542,41542,41542,63753,41444,65497,65498,65498,65498,70365,59803,41461,41461,41461,60263,47863,54854,37318,37318,49068,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,54946,37318,40844,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,54850,61615,65734,72643,61015,41542,72843,65498,54871,41461,54893,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,51946,37318,44953,37318,54915,54931,37318,54967,54974,54990,55006,55021,55037,55066,55050,55080,65689,37318,37318,51966,38825,37318,37318,37318,54010,55096,55115,48257,55149,55184,55227,55249,41525,55284,55303,63265,55333,37318,37318,37318,40256,37318,55133,55360,37318,37318,37318,55377,52524,73164,55412,59232,72644,55450,55508,48452,55571,48764,46504,61212,71358,65498,52836,55590,72384,66401,41461,55624,55653,37318,55162,48123,45480,68146,44384,37318,37318,55690,55710,55730,55750,50821,72644,73775,55770,55805,41363,53990,41542,54303,55821,55849,65493,53022,65498,61780,55897,55924,46825,56459,41461,71394,55962,55996,47041,37318,37318,37318,54660,56044,56069,49736,37318,37318,37318,56099,56122,72644,56141,70528,58519,56160,58143,41542,63117,55574,66717,50850,52564,65498,63146,65498,56203,56221,51808,41461,56467,41461,56251,56269,54854,55099,56307,46073,56323,59679,56339,62046,56355,52688,61008,58074,70003,51212,41542,66283,70084,56375,56396,56430,65125,61593,46531,69280,62369,41461,56449,56483,56517,56546,63230,66178,37927,69494,47228,56575,66873,56144,56596,56612,70031,45388,56647,56669,56693,56729,56747,56781,56815,56873,56892,51765,56928,56955,37318,37318,61883,53848,56976,57010,57028,57047,57072,57089,57107,57133,57151,57170,57197,57216,56936,60597,37318,40353,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,57236,61615,37318,57252,51333,57276,57295,62141,50073,54877,49498,57311,72644,50030,54383,59799,54339,39384,52786,55523,72337,68506,73161,59759,73663,59797,47605,60497,50030,47449,46829,57331,57347,55938,57396,53268,62159,62339,66862,41867,57424,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,42152,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,57475,57504,57488,57518,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,66211,72644,45386,41542,41542,57534,52709,65498,65498,49388,65498,57854,41461,41461,51784,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,41502,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,52736,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,47060,37318,37318,37318,37318,37318,37318,37318,37318,37318,57438,72644,72644,72644,72644,72645,61918,41542,41542,41542,41542,41542,45363,57553,65498,65498,65498,65498,59800,57571,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,39711,37318,44953,37318,42450,57589,57607,57625,51565,57641,57677,57681,57697,57726,57710,57740,65689,51556,37318,41289,37087,47346,60068,37318,37318,39892,37318,40511,57756,45560,57818,57834,63977,57879,60331,41648,58e3,57914,37318,37318,38814,37318,37318,57949,44882,37318,57925,37318,67807,49037,57985,58044,51257,58061,58115,58131,41542,58165,54574,59660,56705,57154,47834,58193,52256,58227,57863,58246,50918,53781,37318,37318,37318,37318,49029,67667,37318,37318,37318,37318,73164,60986,49757,72644,58283,72644,58309,58331,63863,47408,61105,41542,58368,58389,67585,57555,49801,65498,58422,58441,68033,65185,60256,69351,47041,37318,61839,58465,37318,37318,45281,53688,37318,37318,37318,72643,72644,72644,63835,58500,58535,38772,41542,41542,55268,69704,69729,45363,65498,65498,61489,63774,58568,59800,41461,41461,66754,51734,58602,47863,54854,58637,37318,37318,68901,37318,37318,37318,72642,66219,72644,72644,72644,38767,67986,41542,41542,41542,41444,65497,56713,65498,65498,65498,59803,71875,41461,41461,41461,47863,54899,37318,58657,37318,51097,69488,55754,58674,72644,72644,58694,58724,41542,41542,58745,58769,65498,65498,61143,58793,41461,41461,71804,37318,68935,37318,73352,37318,72644,49303,60920,41542,72302,41542,65498,52557,65498,63673,46570,41461,56936,37318,38852,37318,73163,72644,56106,50031,41542,58818,65498,73828,59802,41461,48715,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,53248,58845,64251,68569,67094,58879,59108,47606,53268,62159,58907,58895,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37319,37318,44953,37318,37318,58923,37318,37038,61423,60807,58942,58956,58972,59001,58985,59015,65689,38336,37318,41289,37087,37318,59031,37318,37318,40327,37318,38338,59049,40328,59079,54363,41369,59103,48516,62003,72217,37318,37318,59124,68839,37318,63001,62951,44924,37318,37318,37318,59142,59160,59182,72644,59203,59223,59256,41542,57091,48815,59272,59718,65498,52599,56799,57854,54450,41461,63259,59312,52629,59347,40308,54027,37318,37318,37318,37318,56028,37318,37318,37318,73164,56849,59370,68264,72644,72644,41363,63477,59429,70290,41542,41542,65493,64678,69828,70882,65498,65498,46825,59459,66600,59489,41461,41461,47041,37318,60820,72604,37318,37318,56414,63654,59509,37318,37318,72643,61043,72644,72644,59543,72645,59566,72479,41542,41542,59585,41542,65528,73531,59619,65498,70373,65498,59800,54834,59637,41461,64050,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,44851,37318,37318,37318,37318,59207,72644,60920,61740,41542,41542,73606,65498,65498,49876,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,61445,73662,65498,59655,59802,56876,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,59676,72644,59695,59713,71108,58802,59734,59756,59775,59794,59819,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,59854,73737,67066,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,67305,48392,37318,54855,59885,59896,59919,66152,67290,59971,59985,60001,60031,60044,60015,65689,47586,44905,38860,60060,60084,37318,60579,48333,40435,72237,60111,60138,60122,60182,60217,60279,60316,65566,60366,50482,58641,37318,37318,48606,72949,68216,73429,60392,69215,60419,37318,60465,60494,60514,60535,72871,72644,60555,49584,41542,47939,52709,70645,70888,65498,70640,57854,54601,60344,63674,41461,59473,64205,46157,37318,60571,37318,37318,37318,60595,37318,37318,45177,73164,60613,72644,53647,72644,72644,41363,60640,41542,61097,41542,41542,58708,70406,65498,55874,65498,65498,50904,58204,41461,60666,41461,41461,47041,37318,37318,37318,37318,40106,37318,37318,44677,60687,37318,60703,72644,72644,46744,72644,58087,60725,41542,41542,41542,60758,74033,52815,65498,65498,65498,52593,61759,41832,41461,41461,41461,53066,69906,47863,49504,60776,60792,64608,60842,51384,60860,60895,60918,60939,60974,61031,61070,38767,70056,61088,61121,61167,41444,65497,61193,61228,55536,61274,59803,61293,61309,61258,72531,61332,54854,48246,61348,61369,61414,58477,51897,68272,58678,65107,61439,53722,46795,49566,61461,54813,65498,61486,61505,72623,61531,61548,61568,67348,61609,37318,37318,61636,61678,47889,61697,61718,52147,61736,61756,56291,61775,61796,55608,61816,46251,61838,37318,61855,73163,61899,68974,61934,52295,73662,61950,58777,71058,61966,62e3,62019,63023,62043,40852,60923,72471,73664,62062,59801,62083,49498,62101,55233,62122,54383,62157,62175,62225,62247,62263,62279,62295,62331,57449,55864,54413,66647,60497,50030,47449,46829,60496,73658,47451,47606,62355,62391,62339,66862,41867,41898,57361,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,62425,44953,37318,41929,62645,37318,37318,67919,62449,62465,62479,62495,62524,62508,62538,62554,62570,62591,51116,40267,62636,62669,37763,62688,62721,40114,62768,62784,62800,62846,62862,62878,62894,62929,62967,62983,37318,74513,46381,42254,37318,40466,50397,50445,63017,37318,37318,63039,73164,72644,63059,63089,55789,45386,47983,63105,51466,69257,65498,47963,66977,63139,63162,41461,63187,63203,63246,60376,37318,65243,37318,54083,37318,65923,63281,37318,49694,37318,63306,63323,63356,63373,63389,72644,67473,63412,41542,63428,63500,41542,54700,59443,65498,63522,63557,65498,56187,53414,41461,63578,63594,41461,68051,48021,46148,37318,59832,55125,37318,37318,37318,37318,37318,63803,72643,72644,70758,59187,72644,72645,38772,41542,55434,57073,41542,41542,45363,65498,74070,65498,63613,65498,59800,41461,60671,41461,63633,41461,47863,54854,37318,37318,63653,44684,37318,37318,37318,72642,72644,72644,72644,57012,55426,41542,41542,41542,41542,66835,62140,65498,65498,65498,65498,63670,41461,41461,41461,41461,63690,54854,67948,37318,37318,37318,37318,63712,72644,63734,72644,46430,41542,63751,41542,56170,65498,63769,65498,41577,41461,51728,41461,47288,63790,37318,37318,37318,37318,62822,66520,60920,41416,71239,41542,47825,58753,65498,61151,71116,41461,72584,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,45334,61615,37318,63825,73373,63858,64501,63879,65885,41461,56530,63897,63917,63966,63993,64029,64066,39534,64101,64126,64163,64186,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,50006,53268,62159,64221,66862,41867,64277,64293,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,66665,44953,37318,37318,68891,37318,64328,64337,67698,39838,64353,64369,64398,64382,64414,65689,37318,69115,41289,37087,37318,37318,63950,37318,51547,37318,37318,37318,44404,64465,64494,64517,49717,67057,64557,72217,37318,64583,37318,68839,37318,40908,40502,64605,50368,64607,37318,37318,62231,64624,67101,73183,63396,64650,67404,68345,48485,71344,64666,64694,64712,71834,64730,57181,60350,61532,53072,55317,64759,37318,64782,64801,45664,45866,38224,37318,37318,37318,37318,73164,72644,72644,52669,72644,72644,41363,41542,41542,67409,41542,41542,65493,65498,65498,55555,65498,65498,46825,41461,41461,68042,41461,41461,49668,53220,61353,37318,37318,37318,64818,59354,57374,68538,37318,72643,72644,64837,72644,72644,72645,64870,41542,64889,41542,41542,41542,68453,65498,51231,64925,65498,65498,59800,41461,61515,64943,41461,41461,47863,54854,59903,37318,37318,37318,37909,37318,37318,72642,72644,72644,64960,72644,56626,41542,41542,73894,41542,42296,65497,65498,65498,64978,65498,59803,41461,41461,71869,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,52897,37318,59144,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,62943,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,56828,64997,65024,65045,64231,59603,54339,38753,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,46305,37318,37318,37318,42426,42429,65068,54066,65102,51341,41369,65123,50559,62003,48585,65141,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,43472,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,65158,41542,41542,41542,41542,41542,66019,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,52976,72644,72644,38767,41542,41542,73801,41542,41444,65497,65498,49370,65498,65498,59803,41461,41461,65182,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,51274,72644,50031,65201,73662,71079,65498,59802,58261,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37806,44953,65219,37318,37420,65239,37318,67919,65259,65275,65288,65304,65333,65317,65347,65689,45409,47790,41289,50740,71165,72077,54775,46691,68943,37318,65363,65398,65418,65465,65515,65551,65582,68491,65617,65675,37318,37318,37318,55396,65708,50432,65732,40783,60879,37318,37318,46888,65750,54125,65773,60201,65790,65831,49353,41542,61177,57056,65855,49783,65498,65874,65901,41461,65939,58230,64743,49003,37318,37318,37318,54951,44007,65958,37318,73691,37318,44004,69414,59740,72644,52378,72644,64962,65976,66005,41542,53183,41542,52448,66040,66074,65498,73466,65498,70854,66103,60245,41461,66119,41461,72537,66911,47041,37318,37318,38803,72980,60478,40954,37318,37480,66138,66168,66202,72644,66235,46345,66251,72645,66271,41542,58177,66299,66320,41542,56559,65498,65535,66344,66367,65498,69808,41461,53763,66394,66417,41461,47863,49919,37318,37318,52902,66451,37318,66495,39978,72642,66512,60519,72644,72644,38767,65839,41542,66536,41542,41444,65497,66557,54721,65498,65498,59803,66582,73488,41461,41461,52328,47223,43477,62672,37318,37318,37318,65382,72644,72644,61681,58099,41542,41542,41542,66616,65498,65498,65498,66632,66681,41461,41461,54252,37318,70963,37318,37318,37318,66698,72644,60920,66716,41542,67896,66733,65498,69783,66751,41461,54608,56936,37318,66770,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,56009,66788,66811,66827,66851,66889,49836,61620,60922,73660,47450,46828,42223,66927,59778,49606,47605,66943,50030,47449,46829,60496,73658,47451,52229,66963,67001,67042,47192,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,42006,44953,41194,40023,67082,63290,67117,67133,67149,67200,67214,67230,67259,67243,67275,67324,37318,67347,72149,37087,37318,39873,37318,37318,73640,55694,39647,45609,60403,67364,67389,66058,64007,71278,67425,72217,39770,40165,39032,68839,68408,37318,37318,37318,37318,39965,41180,37318,67452,67489,70764,72644,72644,67522,67558,63467,41542,52709,51619,65498,67579,65498,57854,67601,63637,67628,41461,60376,37318,67645,37318,67663,67683,37318,56960,37318,65223,37318,37318,73164,52080,69630,72644,72644,72644,67733,60734,73861,41542,41542,53739,65493,58399,51643,65498,65498,63881,46825,67757,59323,41461,41461,66122,50625,37318,37318,67778,47108,48295,37318,38228,67799,44787,57969,67823,72644,72644,69591,55783,67843,67888,41542,41542,63123,65166,73809,53005,65498,65498,64714,62913,63541,72852,41461,41461,59639,69865,70909,48723,67912,59519,37318,37900,37318,51391,37318,67935,72642,72644,52056,59087,72644,38767,41542,41542,67964,67985,41444,65497,65498,65858,58406,65498,59803,41461,41461,68002,41461,47863,54854,37318,68397,37318,68076,37318,60498,68624,72644,68100,65444,66541,41542,68117,51222,72818,65498,55549,59798,53799,41461,51777,47288,37318,37318,40078,37318,68138,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,65915,37954,37318,68162,56840,72644,69566,50031,41542,68178,65498,72029,59802,41461,61324,68205,61615,68239,68255,57031,68288,49964,68312,64170,41461,72350,72946,63842,68330,50053,68366,68384,61620,60922,73660,47450,46828,40170,49310,63506,57898,47605,68424,68440,45370,63171,40400,68476,68554,68604,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,38247,68640,37318,37318,44545,44549,42062,66479,66466,68687,68703,68719,68748,68732,68764,68811,49856,37318,68835,73418,40538,54530,37318,68855,37963,68877,39120,68925,68959,68996,69012,46476,69028,71470,69063,59385,62027,45461,65008,68839,69079,37318,38220,69096,65716,69131,41882,69165,69175,69191,63718,59550,63357,69231,50874,46465,70280,70118,64531,65596,69273,69296,57117,69318,73551,69334,69350,69367,69406,69430,37318,69456,69475,69510,37318,37318,68519,50099,69530,44732,69549,69582,60998,72644,69624,41363,69646,69670,69695,41542,69720,65493,69753,69776,69799,65498,69824,48973,69844,69860,69881,41461,69903,51039,37318,69922,62705,62209,69940,52743,51107,45640,57591,40471,72643,69961,69994,72644,48835,70019,70047,70072,69679,41542,41542,70100,64902,48943,63562,65498,65498,70134,59800,68060,61822,41461,41461,70150,47863,72356,45780,37318,73436,47091,37318,37318,70166,72704,72644,70194,70221,70244,47170,73209,73218,70265,66328,41444,70313,65498,70329,70356,70389,60293,70422,70441,54423,70477,47863,50635,37318,50706,66496,53384,69533,46401,70511,72644,72644,70544,70560,70789,41542,70593,70626,69047,65498,52486,70661,69887,41461,70487,37318,41199,59126,70706,37318,70726,70746,56994,70780,70823,72308,70850,70870,65601,70904,70925,51697,70495,37450,37318,70960,70979,71002,71021,63456,46437,71047,71074,71095,49624,59493,71132,71156,71181,41086,71197,69608,71230,71263,71294,71313,57200,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,65052,64909,59331,55194,71329,71374,71410,71439,71455,66985,70676,53268,62159,62339,66862,71486,71502,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,71540,37318,37318,62697,37318,37318,67919,71622,71638,71652,71668,71697,71681,71711,65689,37318,37318,41289,71727,43243,37318,54635,37318,47100,37318,37318,37318,44404,60624,71747,71775,71820,71855,71891,71918,50345,37318,37318,68839,37318,37318,64312,71934,37318,37318,37318,63901,73164,71973,72644,72644,67498,71994,41542,41542,41542,72010,61470,65498,65498,49441,57854,72045,41461,41461,72052,56235,72068,37318,72101,73266,37318,37318,37318,72130,72165,37318,45286,73164,72644,72186,72203,52036,66700,41363,41543,41542,72253,47431,72288,65493,56731,65499,62067,70610,72324,46825,73981,63597,47312,56493,72372,47041,37318,38557,37318,72400,37318,37318,37318,52648,37318,37318,72643,69558,72644,72644,72644,72645,72419,58149,41542,41542,41542,41542,61134,64696,65498,65498,65498,65498,59800,57573,41461,41461,41461,41461,47863,56406,37318,67179,37318,37318,37318,37318,60902,62813,72644,72644,72644,72644,42340,41542,41542,41542,41542,41444,47816,65498,65498,65498,65498,64261,41461,41461,41461,41461,47863,54766,37318,37318,46970,37318,37318,39394,72444,72644,72644,67855,72462,41542,57537,51591,72495,65498,65498,72517,72553,41461,41461,72576,37318,72600,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,65757,60923,69654,73664,69041,59801,72620,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,72639,72661,49423,56501,60496,73658,47451,47606,53268,68368,54485,72691,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,42479,51143,66186,50148,37318,40519,67015,72720,37318,37318,72736,72765,72749,72779,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72795,49944,41369,72816,50989,62003,72217,37318,49091,63043,68839,37318,37318,37318,37318,37318,52920,37318,37318,73164,47899,72644,73587,72644,45386,72834,41542,56677,52709,56433,65498,65498,72024,57854,55980,41461,64944,41461,60376,37318,37318,37318,37318,37318,55361,37318,37318,37318,53853,37318,73164,72644,72644,72868,72644,72644,41363,41542,41542,72887,41542,41542,65493,65498,65498,72920,65498,65498,46825,41461,56253,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,40788,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,69080,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,72938,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,50678,37318,37318,72976,37318,72965,72996,73030,73066,73080,73096,73125,73109,73141,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,49521,50028,47181,50958,47282,59296,63932,37318,37318,37318,68839,37318,37318,37318,37318,45204,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,48411,37318,37318,37318,37318,73180,72644,72644,72644,72644,72645,73199,41542,41542,41542,41542,41542,56282,65498,65498,65498,65498,65498,56756,41461,41461,41461,41461,41461,47863,54854,37318,68223,37318,37318,37318,37318,37318,72642,72644,73234,72644,56857,38767,41542,66304,41542,41542,73255,65497,65498,73289,65498,72501,59803,41461,61976,41461,70425,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45555,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,73310,37318,39135,37318,37318,37318,46656,37318,73333,55714,73368,64110,41369,73389,53053,62003,72217,37318,37318,37318,73407,48428,48554,40049,37318,37318,37318,37318,37318,73164,72644,61072,72644,52030,45386,41542,41809,41542,73452,65498,65498,58580,63617,57854,41461,41461,73487,55972,60376,73504,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,62308,37318,37318,37318,72643,72644,52957,72644,72644,74050,38772,41542,54792,41542,41542,41542,48926,65498,65498,73527,65498,65498,59800,41461,41461,73547,41461,41461,47863,54854,73567,37318,37318,37318,37318,37318,37318,72642,73584,72644,72644,72644,38767,72904,41542,41542,41542,41444,65497,73603,65498,65498,65498,59803,70455,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,73622,37318,37318,41289,37087,37318,42196,37318,37318,37318,37318,37318,37318,4e4,72644,73656,60650,55287,47282,61984,73680,37318,42131,37318,68839,37318,37318,37318,37318,37318,37318,37318,41786,73164,72644,72644,72644,69600,45386,41542,41542,41542,73717,65498,65498,65498,56205,57854,41461,41461,41461,72560,60376,37318,59949,37318,37318,37318,37318,37318,37318,37318,73753,37318,73164,52385,72644,72644,73772,72644,41363,69737,41542,41542,73791,41542,65493,49792,65498,65498,73825,65498,46825,50572,41461,66682,41461,41461,47041,37318,46080,37318,37318,37318,37318,37318,37318,37318,37318,72643,41389,72644,72644,72644,72645,73844,41542,73877,41542,41542,41542,51420,65498,73910,65498,65498,65498,49986,41461,73935,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,61662,37318,72642,72644,47364,72644,72644,38767,41542,41542,70798,41542,41444,65497,65498,65498,73958,65498,59803,41461,41461,73977,41461,47863,54854,37318,37318,42105,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,73997,37318,37318,40961,37318,60952,72644,60920,74016,41542,41542,57892,65498,65498,71387,41461,41461,56936,37318,60826,37318,73163,72644,74049,50031,68296,73662,65498,74066,59802,53130,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,61870,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,64589,74088,74086,40559,74115,74104,74140,74169,37318,74124,74153,74190,74194,74210,36991,37318,37318,41289,37087,37318,37318,74245,37318,37318,37318,37318,37318,65657,40192,74266,55734,37318,53472,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,72228,37116,37202,37162,74643,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,53226,37318,37318,67919,57964,74289,74334,37318,37318,74319,74303,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,74350,37318,53463,40192,38525,37318,37318,74370,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,74174,37318,37318,37318,37318,37318,52120,37296,74401,74403,37318,37318,74392,74419,36991,37318,37318,41289,37087,37318,37318,74464,37318,37318,74485,37318,37318,59413,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,74504,37116,37202,37162,74529,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,37318,37318,37318,37318,37318,74564,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,69205,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,41324,41542,41542,41542,58552,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,65960,37318,37318,37318,37318,74599,74601,37318,37318,70178,74617,37014,37318,37318,37318,37318,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,74641,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,72228,37116,37202,37162,74643,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,74659,39048,39078,39105,39169,39156,39172,39188,39089,39218,46272,55484,39265,39291,55476,39311,74721,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,1,24578,3,0,0,0,0,0,0,0,180524,180524,180524,180524,0,188717,0,188717,180524,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,180524,180524,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,368,188717,180524,188717,188717,188717,188717,188717,131072,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,139264,147456,188717,188717,188717,188717,188717,188717,188717,1,24578,3,0,0,4366336,0,0,0,180524,188717,302,303,0,0,307,0,0,0,307,0,0,0,4931584,0,0,0,0,0,0,2367,0,0,0,0,0,0,0,0,0,1854,0,0,0,0,0,0,4268032,306,307,0,0,0,0,0,0,0,0,0,0,0,0,0,302,0,0,0,0,0,0,4268032,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,262144,0,0,4857856,4874240,0,0,4923392,0,0,0,0,0,0,0,0,0,341,0,0,0,0,0,0,0,0,0,0,5840896,5849088,0,0,0,0,0,0,0,0,0,0,328,0,0,375,375,405,0,0,0,6275072,0,0,0,0,0,0,0,368,368,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,450560,0,0,0,0,4857856,0,0,0,0,0,0,0,0,0,0,0,0,5259264,0,0,0,0,0,0,0,0,5414912,0,5447680,0,5464064,0,5414912,5447680,0,0,5562368,5636096,5685248,0,5750784,5873664,0,0,0,0,5636096,5873664,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5873664,0,0,0,0,0,0,0,0,0,0,0,6275072,0,0,0,914,0,0,0,0,0,4857856,4874240,0,0,0,0,0,0,0,0,0,0,0,0,5447680,0,5464064,0,5480448,5562368,0,0,0,5636096,0,5685248,0,0,5750784,0,0,0,0,0,6275072,0,0,0,0,0,0,0,0,0,0,0,990,0,0,0,4841472,0,0,0,4898816,0,4358144,4358144,4358144,4358144,4358144,4358144,5414912,4358144,5447680,4358144,5464064,4358144,5480448,5562368,4358144,4358144,4358144,5636096,4358144,5636096,4358144,5685248,4358144,4358144,5750784,4358144,4358144,4358144,4358144,4358144,5873664,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4923392,4358144,4358144,4358144,4358144,4358144,0,4923392,0,0,0,0,4366336,0,0,0,0,418,0,0,0,0,0,0,0,0,0,0,0,4276224,1258,0,0,0,5603328,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,341,0,0,5341184,0,5652480,0,0,0,0,0,0,0,0,0,0,4759552,4358144,4358144,4358144,4358144,4358144,5242880,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5341184,4358144,4358144,4358144,4358144,4358144,4358144,0,0,5808128,4358144,4358144,4358144,4825088,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5627904,5652480,4358144,5701632,4358144,4358144,5808128,4358144,4358144,4358144,5668864,0,0,5791744,0,0,0,0,0,0,0,0,0,0,6201344,6242304,6250496,0,0,0,0,6422528,0,0,0,0,0,0,0,0,0,0,351,0,0,0,0,0,0,5619712,0,0,0,0,0,0,0,5726208,5758976,0,0,5791744,0,0,0,0,0,3664,0,0,0,0,0,0,0,0,0,0,5111808,0,0,0,0,0,5283840,0,0,0,0,0,5816320,6291456,0,0,0,0,0,0,0,0,0,0,0,0,2389,0,2391,2392,0,0,0,0,6062080,6463488,0,5398528,0,0,6479872,0,0,0,0,0,0,0,3459,0,0,0,3463,0,0,0,0,0,0,6463488,0,0,0,0,0,0,0,0,0,0,0,0,0,303,0,0,0,0,4931584,4939776,0,0,0,0,0,0,5054464,0,0,0,0,0,0,0,0,5210112,0,0,0,5210112,0,0,0,0,5292032,0,0,0,0,5365760,0,0,0,5455872,0,0,5816320,0,5857280,0,0,0,0,0,0,0,0,0,0,0,0,0,327,401,0,6119424,0,6168576,0,0,0,0,0,6242304,0,6291456,0,6316032,0,0,0,0,0,0,0,4358144,4358144,4931584,4939776,4358144,4358144,4358144,4358144,4358144,4358144,5054464,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5210112,4358144,4358144,4358144,4358144,4358144,4358144,5210112,4358144,4358144,4358144,4358144,5292032,4358144,4358144,4358144,4358144,5365760,4358144,4358144,4358144,5455872,4358144,4358144,4358144,4358144,4358144,4358144,5455872,4358144,4358144,4358144,4358144,4358144,5554176,5570560,5578752,5619712,5668864,4358144,4358144,4358144,5791744,5816320,4358144,5857280,4358144,4358144,4358144,4358144,5816320,4358144,5857280,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,6119424,4358144,6168576,4358144,4358144,4358144,4358144,4358144,6242304,4358144,6291456,4358144,6316032,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6463488,0,4358144,4358144,4358144,4358144,4358144,4358144,6463488,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,4825088,0,0,0,0,0,0,0,6184960,5316608,0,0,5644288,0,0,0,0,0,0,0,0,0,0,646,755,756,757,0,0,6217728,0,0,0,0,0,0,0,0,0,0,5390336,5308416,5488640,0,0,0,0,0,0,0,0,0,5799936,0,0,5881856,0,0,0,0,0,0,0,0,0,351,352,353,0,0,0,0,5070848,5431296,0,6430720,0,0,0,0,0,0,0,0,5160960,0,0,0,0,0,0,6053888,0,0,0,0,0,5013504,0,0,0,0,0,0,6053888,0,0,0,4358144,4358144,5013504,4358144,4358144,4358144,0,0,0,0,4841472,0,0,0,4898816,0,0,0,0,0,0,1851,0,1853,0,0,0,0,0,0,0,0,4825088,0,0,0,0,0,0,0,0,2786,0,0,0,0,0,0,0,0,2809,0,0,0,0,0,0,0,0,2834,0,0,0,0,0,0,0,0,3154,0,0,0,0,0,0,0,0,3167,3168,0,0,0,0,0,0,0,0,0,6283264,6332416,0,0,0,5881856,0,5382144,0,0,0,0,0,0,0,3665,3666,0,0,0,0,0,0,0,665,0,644,0,0,0,0,0,0,0,6266880,4784128,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4915200,4358144,4956160,4972544,4358144,4358144,4358144,4358144,4358144,4358144,5070848,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5218304,4358144,5267456,4358144,4358144,4358144,6184960,4358144,4358144,6283264,4358144,4358144,6332416,4358144,4358144,4358144,6389760,4358144,4358144,6430720,6438912,4358144,4358144,4358144,6266880,6488064,0,0,0,6266880,0,0,4915200,0,4956160,4972544,0,0,0,0,0,0,5070848,0,0,0,0,0,0,0,5218304,0,5267456,0,0,0,0,5218304,0,5267456,0,0,5308416,5316608,0,0,0,5431296,0,5488640,0,0,0,0,0,0,0,0,6332416,0,0,0,6389760,0,0,6430720,6438912,0,0,0,0,0,0,4784128,0,0,0,4849664,0,0,0,0,0,4915200,0,4956160,4972544,0,0,0,6430720,6438912,4784128,4358144,4358144,4358144,4849664,4358144,4358144,4358144,4358144,4358144,4915200,4358144,4358144,0,0,0,0,0,0,0,0,0,0,302,0,303,306,5218304,4358144,5267456,4358144,4358144,5308416,5316608,4358144,4358144,4358144,5431296,4358144,5488640,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5799936,4358144,4358144,5881856,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6103040,4358144,4358144,4358144,6103040,4358144,4358144,4358144,6184960,4358144,4358144,4358144,6283264,4358144,4358144,6332416,4358144,4358144,0,0,0,0,0,0,0,0,0,368640,0,0,0,0,0,0,2411,0,0,0,0,0,0,0,0,0,1256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4931584,4939776,6488064,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,357,5660672,5718016,0,5865472,0,0,6037504,0,0,6078464,0,0,6340608,0,6455296,0,0,0,0,420,420,420,420,597,597,420,420,420,420,420,420,420,420,420,420,420,420,420,0,420,0,0,0,0,5472256,0,0,0,6209536,0,0,0,0,6176768,0,0,0,0,0,0,6373376,6389760,0,0,6488064,6103040,0,0,0,0,0,0,1850,0,0,0,0,0,0,0,0,0,662,0,0,0,0,0,0,0,0,0,4898816,0,5709824,0,0,0,5283840,0,0,0,0,5251072,0,6414336,5832704,0,5955584,0,0,4358144,4358144,4841472,4358144,4358144,4358144,4898816,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,0,303,0,0,0,4358144,5472256,5521408,4358144,4358144,4358144,5595136,5709824,5718016,4358144,5824512,5865472,4358144,4358144,5922816,4358144,4358144,6021120,4358144,6037504,4358144,4358144,6078464,6111232,4358144,6176768,6209536,6234112,4358144,4358144,4358144,4358144,5283840,0,0,0,0,5472256,5521408,0,0,0,0,5595136,5709824,5718016,0,5824512,5865472,0,0,5865472,0,0,5922816,0,0,6021120,0,6037504,0,0,6078464,6111232,0,6176768,6209536,0,6234112,0,0,6234112,0,0,0,0,0,0,0,4358144,4358144,4841472,4358144,4358144,4358144,4898816,4358144,5283840,4358144,4358144,4358144,4358144,5472256,5521408,4358144,4358144,4358144,4358144,5595136,5709824,5718016,4358144,4358144,0,0,0,0,0,5193728,0,0,0,0,0,0,0,0,4358144,4358144,6209536,4358144,6234112,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,573440,0,0,5890048,0,0,0,6160384,0,5095424,5349376,0,5275648,0,0,0,0,0,0,2308,0,0,0,0,0,0,0,0,0,139264,147456,0,0,344064,0,0,0,0,4997120,0,0,0,0,0,0,0,0,0,0,5947392,0,0,0,0,0,3675,0,0,0,0,0,0,0,0,4012,528,5103616,4358144,4358144,5201920,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5890048,4358144,4358144,4358144,6029312,4358144,4358144,4358144,4358144,6160384,4358144,4358144,4358144,4358144,4358144,4358144,6406144,0,5103616,0,0,5201920,0,0,0,0,0,0,0,0,0,0,0,5890048,0,0,0,0,6029312,0,0,0,0,6160384,0,0,0,0,0,0,0,6406144,6406144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4997120,4358144,4358144,5038080,4358144,4358144,4358144,5095424,5095424,5103616,4358144,4358144,5201920,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,5013504,0,4358144,6406144,4358144,4358144,4358144,0,0,0,4890624,0,0,0,0,0,0,0,0,3209,0,0,3212,0,0,0,0,0,0,5898240,5963776,0,0,6193152,0,0,5406720,6397952,5300224,5234688,5423104,0,0,0,0,0,3675,0,0,0,0,0,4009,0,4011,528,528,0,0,0,0,0,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58815,57893,57893,0,0,5988352,0,0,6135808,6307840,0,5996544,4800512,0,6356992,0,0,0,0,0,0,2317,2318,0,2320,2321,0,0,0,0,0,0,1207,0,1209,0,0,368,368,0,0,0,0,0,0,0,0,0,710,0,0,0,0,0,0,0,0,5496832,0,0,0,0,0,5611520,0,0,0,0,0,0,0,3673,0,0,0,0,0,0,0,0,693,0,0,0,0,0,0,368,4947968,5021696,5529600,0,0,5169152,0,0,0,4800512,4808704,4358144,4358144,4890624,4358144,4947968,4358144,4358144,4358144,5898240,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6307840,4358144,4358144,6356992,6381568,5185536,0,5234688,5300224,0,0,5406720,5529600,0,0,0,0,5898240,0,0,0,0,0,0,0,0,6307840,0,0,6356992,6381568,6397952,4800512,4808704,4358144,4358144,4890624,4358144,4947968,4358144,4358144,4358144,5046272,4358144,4358144,4358144,4358144,5185536,4358144,5234688,5300224,4358144,4358144,5406720,5529600,4358144,4358144,4358144,4358144,5898240,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6307840,4358144,4358144,6356992,6381568,6397952,5021696,4358144,4358144,5021696,0,0,0,4980736,0,0,0,0,0,5373952,5734400,6045696,0,0,0,0,421,421,421,421,421,421,421,421,421,421,421,421,421,0,421,0,6258688,6447104,0,0,6127616,0,6348800,5906432,0,5537792,3675,4882432,0,0,0,0,0,0,2329,0,0,0,0,0,0,0,0,0,1195,0,0,0,0,0,0,0,0,0,0,5939200,0,0,5677056,6365184,4866048,0,6070272,5545984,5152768,0,0,0,0,0,3675,0,0,0,0,4008,0,4010,0,528,4013,6144e3,4358144,4866048,4882432,4358144,4980736,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5324800,5373952,5537792,5545984,5586944,5734400,5971968,4358144,6045696,4358144,6070272,4358144,4358144,5537792,5545984,5734400,5971968,4358144,6045696,4358144,6070272,4358144,4358144,4358144,6348800,0,4866048,4882432,0,0,0,0,644,0,0,0,803,0,808,0,794,0,820,0,0,0,0,735,0,0,0,0,0,0,0,0,0,0,0,450560,450560,0,0,450560,0,6045696,0,6070272,0,0,0,0,6348800,0,4866048,4882432,0,4980736,0,0,0,0,0,0,0,0,5324800,5373952,5537792,5545984,5586944,5734400,5971968,0,6045696,0,6070272,0,0,0,0,6348800,4358144,4866048,4882432,4358144,4980736,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6299648,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6348800,4358144,6144e3,0,6144e3,0,4988928,5005312,0,0,0,0,5775360,0,0,0,0,749,0,0,0,0,0,0,0,0,0,0,759,0,0,3675,0,0,0,0,0,0,5693440,0,6496256,5144576,5136384,0,5914624,4358144,6324224,0,0,5005312,0,0,0,512e4,5136384,0,0,0,0,0,0,0,1252,0,0,0,748,1259,0,0,0,0,0,0,0,6324224,0,0,5005312,0,0,0,512e4,5136384,0,0,0,0,0,0,6463488,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6324224,5914624,5914624,0,0,0,0,0,5513216,5783552,0,3675,0,0,0,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4931584,4939776,4358144,4358144,4358144,0,6053888,0,0,0,0,0,0,0,0,6012928,4358144,4358144,5013504,4358144,4358144,0,0,0,0,0,0,0,0,0,0,0,1153,0,0,0,0,0,3675,0,0,4006,4007,0,0,0,0,528,528,528,528,3220,528,528,528,528,528,528,3227,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6053888,4358144,4358144,0,0,5013504,0,0,0,0,0,312,414,0,0,139264,147456,0,0,0,0,0,0,0,6103040,0,0,0,6184960,0,0,0,6283264,0,0,6332416,0,0,0,6389760,4358144,4358144,4358144,4358144,4358144,4358144,6053888,4358144,4358144,4358144,0,0,0,0,5193728,0,0,0,0,761,0,0,0,0,0,0,0,0,0,0,528,528,528,3700,528,528,528,5742592,0,0,0,0,0,4358144,4907008,4358144,5079040,4358144,5226496,4358144,5742592,4358144,4358144,4358144,6094848,4358144,5062656,0,0,0,0,0,4358144,4358144,6094848,0,4907008,0,5079040,0,5226496,0,5742592,0,0,0,6094848,0,0,0,0,0,3675,0,4005,0,0,0,0,0,0,528,528,528,528,4155,528,528,528,528,528,528,4907008,0,5079040,0,5226496,0,5742592,0,0,0,6094848,0,4358144,4907008,4358144,5079040,5062656,4358144,4358144,4358144,4358144,4358144,0,5062656,0,0,0,0,0,6225920,0,5062656,4358144,4358144,4358144,4358144,4358144,913,5063569,913,913,913,913,913,6226833,989,5063645,0,0,0,4816896,4358144,4358144,4358144,4358144,6086656,4816896,0,0,0,0,6086656,4816896,4358144,4358144,4358144,4358144,6086656,0,5087232,0,5931008,4358144,5332992,5980160,4358144,0,5332992,5980160,0,0,5332992,5980160,0,4358144,5332992,5980160,4358144,0,0,0,0,787,0,0,0,0,806,0,0,0,0,0,0,0,3166,0,0,0,0,0,0,0,0,327,0,0,0,0,0,0,0,5439488,5128192,4358144,5128192,0,5128192,0,5128192,4358144,0,4358144,0,0,4358144,0,4358144,0,0,4358144,6004736,6004736,6004736,6004736,6004736,0,0,0,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,0,0,339,340,0,0,221652,221652,221652,468,468,468,468,468,468,468,468,468,468,468,468,221652,468,221652,221652,221652,468,221652,221652,221652,221652,221652,221652,221652,221652,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1162,0,0,1164,0,0,0,0,0,0,0,0,1311,0,0,0,0,0,1179,0,0,0,762,0,0,0,0,0,0,0,0,0,0,0,0,0,383,0,0,0,0,1064,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,913,913,913,4358144,4358144,1064,0,0,0,0,0,0,0,0,0,0,0,0,0,507,514,514,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,237568,302,0,306,237568,0,0,0,0,0,0,0,0,0,0,0,0,0,643,0,0,4268032,98304,307,0,0,0,0,0,0,0,0,0,0,0,0,0,661,0,0,4210979,24578,3,0,0,297,0,0,0,0,297,0,0,0,0,0,0,0,3685,0,0,0,3688,3689,0,0,0,0,0,245760,245760,245760,0,0,0,0,139264,147456,245760,245760,0,0,245760,0,4210979,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1164,1297,0,0,0,0,0,0,1304,0,0,0,0,0,2859,0,0,0,0,0,0,0,0,0,2867,368,368,0,0,0,303104,0,0,0,0,0,0,0,0,0,0,647,0,0,0,0,528,1158,0,4857856,4874240,0,0,4923392,0,0,0,0,0,0,0,0,0,379,0,0,0,0,371,0,4358144,4358144,4358144,4358144,0,1984,0,0,0,4825088,0,0,0,0,0,0,0,1253,0,0,0,0,0,0,0,0,2399,2400,0,0,2402,0,0,0,0,0,262144,262144,262144,0,0,0,0,0,0,0,0,0,0,0,0,3449,0,0,0,0,0,262144,262144,0,262144,0,0,0,139264,147456,262144,0,0,0,0,0,0,2344,2345,0,0,0,0,0,0,0,0,798,0,0,0,0,0,809,0,0,0,262144,0,262738,262738,262738,262738,262738,262738,262738,262738,262738,262738,262738,262738,262738,0,262738,0,0,262738,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1177,0,0,0,0,0,0,0,0,0,0,0,4086,528,528,528,528,0,270336,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5177344,278528,278528,0,0,131072,278528,0,0,0,0,278528,0,0,0,0,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,0,278528,0,0,278528,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1205,1206,0,0,0,0,0,368,368,0,0,0,0,0,0,0,0,0,0,0,712,0,0,0,0,1,24578,3,0,0,4366336,0,0,0,0,0,302,638,0,0,0,0,1218,0,0,0,0,1223,0,0,0,0,0,0,0,1752,0,0,0,1755,0,0,1758,0,4268032,306,641,0,0,0,0,0,0,0,0,0,0,0,0,0,662,0,0,528,0,1430,0,0,0,0,0,4857856,4874240,0,0,0,0,0,0,0,0,3686,0,0,0,0,0,0,0,0,3826,0,3675,0,0,0,0,0,0,6275072,0,0,0,0,0,0,0,0,0,0,0,1525,0,0,0,0,0,3675,4004,0,0,0,0,0,0,0,528,528,4209,528,4210,528,528,528,528,528,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,286720,303,0,307,286720,0,0,0,0,0,0,0,0,0,0,0,0,0,663,0,792,0,307,0,0,0,0,0,0,307,139264,287139,0,0,0,307,0,0,0,0,1234,0,0,0,0,0,0,0,0,0,0,0,2414,0,0,0,0,0,307,1,24578,3,0,0,4366336,0,0,0,0,0,302,66175,0,0,0,0,1250,0,0,0,1255,0,0,0,0,0,0,0,661,0,0,0,0,0,0,0,0,378,0,363,0,0,0,0,0,4268032,306,98946,0,0,0,0,0,0,0,0,0,0,0,0,0,728,0,0,0,0,122880,0,4268032,0,0,0,0,0,0,0,0,0,0,0,0,2310144,0,0,0,0,307,4857856,4874240,0,0,4923392,0,0,0,0,0,0,0,0,0,528,528,3699,528,528,528,528,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,0,304,0,304,0,304,304,304,295216,304,304,304,295216,295216,304,295216,304,304,131072,304,304,304,304,304,295216,304,304,304,304,295216,304,304,304,304,295286,295216,295216,295216,295216,295216,295216,304,304,304,304,304,0,0,304,304,295216,304,304,304,304,304,304,304,304,304,304,304,304,369,304,0,295216,304,295286,295216,295216,295216,304,304,304,295286,139264,147456,295216,295216,304,304,295216,295216,295216,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,295216,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295216,295216,295216,295216,295216,304,304,304,295216,304,304,304,304,304,304,304,295216,374,304,304,304,304,304,304,304,295216,304,295216,295216,295216,295216,295216,295216,295216,295216,295286,295286,295286,295286,295286,295286,295216,295216,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1267,0,0,0,0,0,0,0,0,0,0,0,3170,0,0,0,0,0,0,0,6275072,0,0,0,0,0,0,0,4399804,4399804,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4399804,0,0,319488,0,0,0,0,0,0,319488,319488,0,0,0,0,0,0,0,3696,0,528,528,528,528,528,528,528,528,528,528,528,3849,528,528,528,319488,0,0,0,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,0,24578,3,0,0,4366336,253952,0,0,0,0,302,303,0,0,0,0,1282,0,0,0,0,0,0,0,0,0,0,0,1241,0,0,0,0,368,425984,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4399805,0,0,0,6275072,0,0,0,0,0,0,0,368,0,0,0,0,0,0,2357,0,0,0,0,0,0,0,0,0,3461,0,0,0,0,0,0,0,327680,327680,327680,0,0,0,0,0,0,0,0,0,0,327680,327680,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,327680,327680,327680,327680,327680,335872,327680,327680,327680,335872,327680,327680,327680,327680,327680,327680,49723,0,0,0,0,0,0,0,49723,49723,0,0,0,0,0,0,0,1270,0,0,0,0,0,0,0,0,0,5627904,5652480,0,5701632,0,0,0,0,0,6275072,0,0,0,0,0,0,0,0,0,0,49152,990,0,0,0,0,0,3683,0,0,0,0,0,0,0,3690,0,0,0,0,0,3836,0,0,0,0,0,0,0,0,0,0,5242880,0,0,0,0,0,0,0,5341184,0,0,0,0,0,344064,344064,344064,0,0,0,0,0,0,0,0,0,0,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,352256,352256,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1309,0,0,0,0,0,0,0,0,1315,0,0,0,0,371,0,0,0,0,0,0,0,0,0,0,0,3438,0,0,3440,0,1,292,3,0,0,0,298,0,0,0,0,0,0,0,0,0,528,3698,528,528,528,3701,528,0,360448,360448,360448,0,0,0,0,0,0,0,0,0,0,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,1,0,3,155942,155942,296,0,636,0,0,0,302,303,0,1230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,528,528,1376,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2460,528,0,914,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60322,57943,57943,57943,57943,59004,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,57893,3998,0,4e3,528,528,528,528,58773,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,0,57916,57916,57916,57916,57916,528,528,528,2437,528,528,528,528,528,528,528,528,528,528,528,528,528,2446,528,2448,0,0,0,57893,57893,57893,57893,57893,57893,57893,59856,57893,57893,57893,57893,57893,57893,60873,57893,57893,57893,57893,57893,57893,57893,57893,57893,61213,57893,57893,57893,57893,61214,61215,57893,57893,57893,57893,60300,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,0,0,0,0,0,60432,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,0,0,0,3191,0,0,0,0,0,0,0,0,0,0,0,0,319,0,0,0,0,0,0,3682,0,0,0,0,0,0,0,0,0,0,0,0,338,0,0,0,528,57893,61069,57893,57893,57893,61072,57893,57893,57893,57893,57893,57893,57893,57893,57893,58331,0,57916,57916,57916,57916,57916,61080,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59358,61101,57916,57916,57916,57916,57916,57916,57916,57916,57916,61109,57916,57916,57916,57916,57916,57916,60360,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,60707,57943,57943,57943,57943,57943,57943,57943,57943,57943,61138,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59568,57943,57943,57943,528,528,3852,3853,528,528,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,58291,57893,57893,57943,57943,57943,61251,57943,57943,57943,57943,61252,61253,57943,57943,57943,57943,57943,57943,57943,58468,57943,57943,57943,57943,528,528,528,898,0,0,3675,0,0,3929,0,0,0,0,0,0,0,0,0,0,695,0,0,0,0,368,528,528,57893,57893,57893,57893,57893,57893,61299,57893,57893,57893,57893,57893,57893,61305,57893,57893,57893,61309,57893,57916,57916,57916,57916,57916,57916,61315,57916,57916,57916,57916,57916,57943,57943,61128,57943,57943,57943,57943,57943,57943,57943,57943,57943,60066,57943,57943,57943,57943,57943,57943,57916,57916,61321,57916,57916,57916,61325,57916,57943,57943,57943,57943,57943,57943,61331,57943,528,1951,528,2283,528,57893,59394,57893,59632,57893,2290,0,2291,0,0,0,0,0,417792,0,417792,0,0,0,0,310,0,0,0,0,0,316,0,0,0,0,0,0,0,0,0,0,1328,0,0,0,0,0,528,528,57893,57893,57893,57893,61511,57893,57893,57893,57893,57893,57893,57893,57893,57893,58826,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,61524,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,60024,57943,60026,57943,57943,57943,57943,57943,61537,57943,57943,57943,57943,57943,57943,57943,57943,57943,0,0,0,0,0,0,4244,528,528,528,57893,57893,57893,57893,57916,57916,57916,57916,57943,57943,57943,57943,0,0,0,0,1310,0,0,0,0,0,0,0,0,0,1316,1269,0,528,528,57893,57893,57916,57916,57943,57943,0,528,57893,57916,57943,0,528,57893,57916,57943,0,528,57893,57916,57943,0,0,0,0,376832,376832,376832,0,0,0,0,0,0,0,0,0,0,0,0,346,0,0,0,0,420,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1731,0,0,0,0,0,0,0,0,0,0,0,648,0,0,0,0,0,0,0,0,4268780,0,0,0,0,0,0,0,0,0,0,0,0,6119424,0,6168576,0,0,0,0,308,0,0,0,0,0,0,0,0,0,0,0,0,354,355,356,0,0,393685,393685,393685,0,0,0,0,0,0,0,0,0,0,0,0,368,0,0,245760,0,0,475136,0,0,0,0,0,0,0,0,0,0,0,0,0,761,0,0,305,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,411,0,421,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,0,1731,0,0,0,0,1738,0,1740,0,0,0,0,0,0,3180,0,0,0,0,0,0,0,0,0,352256,0,352256,352256,0,0,0,305,306,307,0,0,0,0,0,0,0,0,0,0,0,0,0,1185,0,0,0,0,0,748,421,0,0,0,0,0,0,0,0,0,0,0,337,0,0,0,0,57916,0,0,0,748,57893,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,528,3413,57893,57893,60760,1725,0,0,0,1731,1732,0,0,0,0,0,0,0,0,0,0,741,0,0,0,0,0,0,0,0,1252,1825,0,0,0,0,1259,1259,0,0,0,0,0,0,0,4083,0,4085,0,528,528,528,528,528,528,528,528,528,528,3848,528,528,528,528,0,0,2293,1732,2294,0,0,0,0,0,0,0,0,0,0,0,368,368,1212,0,0,528,528,2499,2932,0,0,0,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59860,528,528,528,2932,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,0,0,2592,0,0,417792,0,0,0,0,417792,0,0,0,0,0,310,0,310,0,0,0,0,0,4151,4152,4153,528,528,528,4156,528,4158,528,528,0,0,0,0,0,0,57893,57893,57893,57893,57893,57893,57893,60283,417792,417792,0,0,417792,417792,417792,417792,417792,417792,417792,417792,417792,417792,417792,417792,418102,417792,417792,418101,418102,417792,417792,418101,417792,418101,417792,0,417792,0,0,0,0,417792,0,0,0,0,0,0,0,0,0,0,0,310,310,310,0,418101,417792,1,24578,3,0,0,4366971,0,0,0,0,0,302,303,311296,4399805,0,0,0,311296,0,0,0,0,0,0,0,0,0,0,800,0,0,0,0,0,0,0,0,4268032,306,307,0,434176,0,0,0,0,0,0,0,0,0,0,0,381,0,384,0,0,0,0,0,6275072,0,0,0,0,0,0,0,0,4399805,0,0,0,0,0,363,0,0,0,0,0,0,368,0,296,0,0,914,913,913,913,913,913,4858769,4875153,913,913,913,913,913,913,913,913,913,5628817,5653393,913,5702545,913,913,913,913,5448593,913,5464977,913,5481361,5563281,913,913,913,5637009,913,5686161,913,913,5751697,913,6275985,913,913,913,913,913,913,913,913,913,0,0,990,989,989,989,989,6087645,4817809,4359057,4359057,4359057,4359057,6087569,0,5087232,0,5931008,4358144,989,989,5260253,989,989,989,989,989,989,989,989,5415901,989,5448669,989,5465053,989,5481437,5563357,989,989,989,5637085,989,5686237,989,989,5751773,989,989,989,989,989,989,6300637,989,989,989,989,989,989,989,989,989,989,5112797,989,989,989,989,989,989,5874653,989,989,989,989,989,989,989,989,989,989,989,6276061,989,989,989,4858845,4875229,989,989,989,989,989,989,989,989,989,989,989,989,989,5178333,989,989,4359057,5637009,4359057,5686161,4359057,4359057,5751697,4359057,4359057,4359057,4359057,4359057,5874577,4359057,4359057,4359057,4359057,5186449,4359057,5235601,5301137,4359057,4359057,5407633,5530513,4359057,4359057,4359057,4359057,4359057,6300561,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,5112721,4359057,4359057,4359057,4359057,989,989,5809041,4359057,4359057,4359057,4826001,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,5178257,4359057,4359057,4359057,4359057,4359057,5243793,4359057,4359057,4359057,4359057,4359057,4359057,4359057,5342097,4359057,4359057,4359057,4359057,4359057,4359057,5415825,4359057,5448593,4359057,5464977,4359057,5481361,5563281,4359057,4359057,0,0,0,913,913,913,913,913,913,913,913,913,913,913,4932497,4940689,913,913,6464401,0,0,0,0,989,989,989,989,989,989,989,989,989,4998109,989,989,5039069,989,989,989,5096413,989,5456861,989,989,989,989,989,5555165,5571549,5579741,5620701,5669853,989,989,989,5792733,5817309,989,5858269,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,4359057,4359057,4359057,6120413,989,6169565,989,989,989,989,989,6243293,989,6292445,989,6317021,989,989,989,989,989,5071837,989,989,989,989,989,989,989,5219293,989,5268445,4359057,4359057,4932497,4940689,4359057,4359057,4359057,4359057,4359057,4359057,5055377,4359057,4359057,4359057,4359057,4359057,4359057,6054801,4359057,4359057,4359057,0,0,0,0,5193728,0,4359057,5456785,4359057,4359057,4359057,4359057,4359057,5555089,5571473,5579665,5620625,5669777,4359057,4359057,4359057,5792657,5817233,4359057,5858193,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,0,5013504,0,6120337,4359057,6169489,4359057,4359057,4359057,4359057,4359057,6243217,4359057,6292369,4359057,6316945,4359057,4359057,4359057,5194641,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4907008,0,5079040,6094848,6430720,6438912,0,0,0,0,0,0,4785041,913,913,913,4850577,913,913,913,913,913,913,5055377,913,913,913,913,913,913,913,913,5211025,5489553,913,913,913,913,913,913,913,913,913,5800849,913,913,5882769,913,913,913,913,5219217,913,5268369,913,913,5309329,5317521,913,913,913,5432209,913,913,913,6333329,913,913,913,6390673,913,913,6431633,6439825,0,0,0,0,0,0,0,393685,0,393685,393685,393685,393685,393685,393685,393685,393685,393685,393685,393685,393685,393685,393685,0,393685,0,4785117,989,989,989,4850653,989,989,989,989,989,4916189,989,4957149,4973533,989,989,989,6030301,989,989,989,989,6161373,989,989,989,989,989,989,989,6325213,4359057,4359057,5006225,4359057,4359057,4359057,5120913,5137297,989,989,5309405,5317597,989,989,989,5432285,989,5489629,989,989,989,989,989,989,5325789,5374941,5538781,5546973,5587933,5735389,5972957,989,6046685,989,6104029,989,989,989,6185949,989,989,989,6284253,989,989,6333405,989,989,989,6390749,989,989,6431709,6439901,4785041,4359057,4359057,4359057,4850577,4359057,4359057,4359057,4359057,4359057,4916113,4359057,4358144,4358144,4358144,4358144,4358144,913,913,913,913,913,0,0,0,0,0,0,0,319488,0,0,0,0,0,0,0,0,0,0,319488,0,4957073,4973457,4359057,4359057,4359057,4359057,4359057,4359057,5071761,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,6275985,4359057,4359057,4359057,4359057,4359057,4359057,4359057,5219217,4359057,5268369,4359057,4359057,5309329,5317521,4359057,4359057,4359057,5432209,4359057,5489553,4359057,4359057,4359057,5211025,4359057,4359057,4359057,4359057,5292945,4359057,4359057,4359057,4359057,5366673,4359057,4359057,4359057,4359057,6390673,4359057,4359057,6431633,6439825,4358144,4358144,4358144,6266880,6488064,913,913,913,6267793,6488977,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,730,4358144,4358144,4358144,0,0,913,913,4842385,913,913,913,4899729,913,913,913,913,913,913,913,6103953,913,913,913,6185873,913,913,913,6284177,913,913,5473169,5522321,913,913,913,913,5596049,5710737,5718929,913,5825425,5866385,913,913,913,913,5243793,913,913,913,913,913,913,913,5342097,913,913,913,0,0,989,989,989,4826077,989,989,989,989,989,989,989,0,913,4359057,4359057,4359057,4359057,4359057,4858769,4875153,5923729,913,913,6022033,913,6038417,913,913,6079377,6112145,913,6177681,6210449,913,6235025,913,913,913,913,6243217,913,6292369,913,6316945,913,913,913,913,913,913,913,4998033,913,913,5038993,913,913,913,5096337,5104529,5284829,989,989,989,989,5473245,5522397,989,989,989,989,5596125,5710813,5719005,989,5825501,5866461,989,989,5923805,989,989,6022109,989,6038493,989,989,6079453,6112221,989,6177757,6210525,989,6235101,989,989,989,989,989,989,989,4359057,4359057,4842385,4359057,4359057,4359057,4899729,4359057,5284753,4359057,4359057,4359057,4359057,5473169,5522321,4359057,4359057,4359057,4359057,5596049,5710737,5718929,4359057,4359057,4359057,6103953,4359057,4359057,4359057,6185873,4359057,4359057,4359057,6284177,4359057,4359057,6333329,4359057,4359057,4923392,4358144,4358144,4358144,4358144,4358144,913,4924305,913,913,913,913,4366336,0,0,0,0,1779,0,0,0,0,0,0,0,0,0,0,0,3156,0,3157,0,0,5825425,5866385,4359057,4359057,5923729,4359057,4359057,6022033,4359057,6038417,4359057,4359057,6079377,6112145,4359057,6177681,6210449,4359057,6235025,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4358144,4358144,4358144,913,913,913,913,913,5194641,913,913,913,913,913,913,913,913,913,913,988,989,989,989,989,989,4358144,4358144,6029312,4358144,4358144,4358144,4358144,6160384,4358144,4358144,4358144,4358144,4358144,4358144,6406144,913,913,913,913,6325137,989,989,5006301,989,989,989,5120989,5137373,989,989,989,989,989,6226909,4359057,5063569,4359057,4359057,4359057,4359057,4359057,6226833,0,6086656,913,913,5202833,913,913,913,913,913,913,913,913,913,913,913,5890961,913,913,913,5555089,5571473,5579665,5620625,5669777,913,913,913,5792657,5817233,913,5858193,913,913,913,913,5292945,913,913,913,913,5366673,913,913,913,5456785,913,913,913,913,913,6308753,913,913,6357905,6382481,6398865,4801501,4809693,989,989,4891613,913,913,6030225,913,913,913,913,6161297,913,913,913,913,913,913,913,6407057,5104605,989,989,5202909,989,989,989,989,989,989,989,989,989,989,989,5891037,6407133,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4998033,4359057,4359057,5038993,4359057,4359057,4359057,5325713,5374865,5538705,5546897,5587857,5735313,5972881,4359057,6046609,4359057,6071185,4359057,4359057,5096337,5104529,4359057,4359057,5202833,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4358144,4358144,4358144,4358144,5890961,4359057,4359057,4359057,6030225,4359057,4359057,4359057,4359057,6161297,4359057,4359057,4359057,4359057,4359057,4359057,5800849,4359057,4359057,5882769,4359057,4359057,4359057,4359057,4359057,4359057,5628817,5653393,4359057,5702545,4359057,4359057,5809041,4359057,4359057,4359057,4359057,6407057,4358144,4358144,4358144,913,913,913,4890624,0,0,0,0,0,0,0,0,327680,0,0,0,0,0,0,0,0,319488,0,0,0,0,319488,0,319488,6397952,4801425,4809617,913,913,4891537,913,4948881,913,913,913,5047185,913,913,913,913,913,913,913,6300561,913,913,913,913,913,913,913,913,913,913,913,913,6120337,913,6169489,913,5186449,913,5235601,5301137,913,913,5407633,5530513,913,913,913,913,5899153,913,913,913,913,913,913,6054801,913,913,913,989,989,5014493,989,989,989,989,989,5194717,989,989,989,989,989,989,989,989,4359057,4359057,989,4948957,989,989,989,5047261,989,989,989,989,5186525,989,5235677,5301213,989,989,989,5211101,989,989,989,989,5293021,989,989,989,989,5366749,989,989,989,5243869,989,989,989,989,989,989,989,5342173,989,989,989,989,989,989,6464477,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,6325137,5914624,5915537,0,0,0,5407709,5530589,989,989,989,989,5899229,989,989,989,989,989,989,989,989,6308829,989,989,6357981,6382557,6398941,4801425,4809617,4359057,4359057,4891537,4359057,4948881,4359057,4359057,4359057,5047185,5899153,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,6308753,4359057,4359057,6357905,6382481,6398865,5021696,4358144,4358144,5022609,913,913,0,4980736,0,0,0,0,0,5373952,5734400,6045696,0,0,0,0,1792,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114688,0,5537792,5545984,5734400,5971968,4358144,6045696,4358144,6070272,4358144,4358144,4358144,6348800,913,4866961,4883345,913,913,4916113,913,4957073,4973457,913,913,913,913,913,913,5071761,913,913,913,913,913,913,5260177,913,913,913,913,913,913,913,913,5415825,4981649,913,913,913,913,913,913,913,913,5325713,5374865,5538705,5546897,5587857,5735313,5972881,913,6046609,913,6071185,913,913,913,913,6349713,989,4867037,4883421,989,4981725,989,989,989,5800925,989,989,5882845,989,989,989,989,989,989,989,989,989,5628893,5653469,989,5702621,989,989,989,989,6071261,989,989,989,989,6349789,4359057,4866961,4883345,4359057,4981649,4359057,4359057,4359057,4359057,4359057,4359057,6464401,4358144,4358144,4358144,4358144,4358144,913,913,913,913,913,913,913,913,913,913,913,913,913,913,913,913,5178257,913,4359057,4359057,6349713,4358144,6144e3,913,6144913,0,4988928,5005312,0,0,0,0,5775360,0,0,0,0,1795,0,0,1798,0,1800,0,0,0,0,0,1806,4358144,6324224,913,913,5006225,913,913,913,5120913,5137297,913,913,913,913,913,913,913,5112721,913,913,913,913,913,5284753,913,913,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6053888,4358144,4358144,913,913,5014417,913,913,913,913,913,5874577,913,913,913,913,913,913,913,913,913,913,913,913,913,989,989,989,4358144,6094848,913,4907921,913,5079953,913,5227409,913,5743505,913,913,913,6095761,913,989,989,4932573,4940765,989,989,989,989,989,989,5055453,989,989,989,989,989,989,6054877,989,989,989,4359057,4359057,5014417,4359057,4359057,4359057,4907997,989,5080029,989,5227485,989,5743581,989,989,989,6095837,989,4359057,4907921,4359057,5079953,4359057,5227409,4359057,5743505,4359057,4359057,4359057,6095761,4359057,5062656,0,0,0,0,0,4358144,4358144,0,913,913,913,913,913,913,0,0,0,0,0,0,0,0,4956160,4964352,0,0,0,0,0,0,0,0,4816896,4358144,4358144,4358144,4358144,6086656,4817809,913,913,913,913,6087569,4817885,5332992,5980160,4358144,913,5333905,5981073,913,989,5333981,5981149,989,4359057,5333905,5981073,4359057,0,0,0,0,1811,0,0,0,0,0,0,0,0,0,1820,0,0,0,0,1825,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,528,5439488,5128192,4358144,5129105,913,5129181,989,5129105,4359057,0,4358144,913,989,4359057,0,4358144,913,989,4359057,6004736,6004736,6005649,6005725,6005649,0,0,0,450560,450560,0,0,0,0,0,0,0,0,0,0,0,0,0,0,375,0,450560,450560,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1876,1877,0,0,0,0,0,0,0,0,0,0,1867,0,0,1870,0,0,0,0,0,196608,0,0,0,106496,0,0,4284416,0,0,0,0,0,0,0,417792,0,0,417792,0,0,417792,0,417792,0,0,0,0,139264,147456,417792,0,0,0,417792,196608,0,0,5816320,6291456,0,0,0,0,0,0,0,0,0,0,0,400,0,0,0,0,0,0,0,0,0,0,303,0,0,307,0,0,0,4956160,4964352,0,0,0,0,0,0,0,466944,0,0,0,0,0,0,0,0,0,5480448,0,0,0,0,0,0,6430720,6438912,914,0,0,0,914,0,4784128,0,0,0,4849664,0,0,0,0,0,648,0,0,0,0,0,0,818,0,0,0,0,0,658,659,0,0,0,0,0,0,0,0,0,1272,0,0,0,0,0,0,0,0,6332416,0,0,0,6389760,0,0,6430720,6438912,990,0,0,0,990,4358144,4358144,4358144,914,0,0,0,4841472,0,0,0,4898816,0,0,0,0,0,0,2383,0,0,0,0,0,0,0,0,0,2825,0,0,0,0,0,0,0,459222,459222,459222,459222,459222,459222,459222,459222,459222,459222,459222,459222,459222,459222,459222,459222,459222,459379,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1887,0,1889,1865,528,528,528,528,528,528,528,528,3516,528,528,3519,528,528,528,60866,4358144,4358144,483328,0,0,0,0,0,0,0,0,0,0,0,0,0,1243,0,0,1,24578,3,0,0,0,0,507904,0,0,0,507904,0,0,0,0,0,0,2398,0,0,0,0,0,0,0,0,0,49723,0,0,0,0,0,327680,0,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,2084,0,0,0,4825088,0,0,0,0,0,0,0,0,3423,0,0,0,0,0,0,0,0,3460,0,0,0,0,0,3465,0,4268032,306,307,0,0,442368,0,0,0,0,0,0,0,0,0,0,1168,1167,0,0,0,0,0,0,0,229376,0,491520,524288,0,0,0,0,0,0,0,0,0,678,0,0,0,0,0,0,4358144,4358144,491520,0,0,0,0,0,0,0,0,0,0,0,0,0,1275,0,1277,1,24578,3,0,0,0,0,0,516096,0,0,0,516096,0,0,0,0,0,0,0,0,0,0,0,0,368,0,296,0,0,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,1,24578,0,0,0,4366336,0,0,548864,0,0,302,303,0,0,0,0,2306,0,0,0,0,0,0,0,0,0,0,0,0,5627904,0,0,0,4268032,306,307,409600,0,0,0,0,0,0,0,0,0,0,0,0,368,0,308,0,0,0,5513216,5783552,0,40960,0,0,0,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,5193728,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4907008,0,5079040,6094848,1,24578,4227365,0,0,0,0,0,0,299,0,0,0,299,0,0,0,0,0,245760,0,245760,245760,0,0,0,245760,245760,0,0,0,0,0,0,245760,0,0,0,245760,0,0,245760,245760,245760,0,0,540672,0,0,540672,0,0,0,540672,0,0,0,0,0,0,0,540672,0,0,0,0,0,0,0,0,417792,0,0,0,417792,0,0,0,0,0,1,24578,4227365,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,2328,0,0,0,0,2332,0,0,0,0,0,0,0,1879,0,0,0,0,0,0,0,0,768,0,0,771,0,0,0,0,0,0,499712,0,0,0,0,0,0,0,0,0,0,0,0,0,1291,0,0,0,0,499712,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5111808,4358144,4358144,4358144,4358144,4358144,5283840,4358144,4358144,4358144,4358144,4358144,499712,0,0,0,0,0,0,0,0,0,0,0,0,0,1314,0,0,0,0,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,2355,0,0,0,0,0,0,0,0,0,0,0,1882,0,0,0,0,1,24578,3,155942,296,0,0,0,0,0,0,0,0,0,0,0,528,4087,528,4088,528,528,57893,528,57893,528,528,57893,528,528,57916,57893,528,528,57893,57893,57893,0,0,0,0,0,0,3821,0,0,0,0,57916,57893,57893,57893,57893,57893,57893,57893,57916,57916,57893,57893,57943,57893,57893,57893,0,0,0,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61529,57916,57916,57916,57943,57943,58773,914,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60631,0,0,2293,0,2294,0,0,0,0,0,0,0,0,0,0,0,664,0,0,0,0,3453,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,744,1825,0,0,0,0,0,0,0,0,0,0,0,2373,0,0,0,0,0,674,0,0,0,0,0,0,0,0,0,0,1182,0,0,0,0,0,0,0,1280,0,0,0,0,0,0,0,0,0,0,0,0,0,1788,0,0,528,57894,528,57894,528,528,57894,528,528,57917,57894,528,528,57894,57894,57894,57894,57944,57944,57894,57894,57894,57894,57944,57944,57894,528,57894,57894,57917,57894,57894,57894,57894,57894,57894,57894,57917,57917,57894,57894,57944,57894,57894,57894,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,1,24578,3,155943,296,0,0,0,0,0,0,0,0,0,0,0,740,661,0,0,528,0,573440,573440,573440,0,0,0,0,0,0,0,0,0,0,0,0,368,0,516096,0,0,0,5988352,0,0,6135808,6307840,0,5996544,4800512,0,6356992,3675,0,0,0,0,0,694,0,0,0,787,0,0,0,0,806,0,0,0,1,24578,3,0,0,4366336,0,0,0,0,0,637,303,0,0,0,0,2381,0,0,0,0,0,0,0,0,0,0,0,344064,0,0,0,0,4268032,640,307,0,0,0,0,0,0,0,0,0,0,0,0,0,1804,0,0,581632,0,0,0,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,0,581632,0,0,0,0,0,0,0,0,0,0,0,581632,0,581632,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,746,581632,581632,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,2397,0,0,0,0,0,0,0,0,0,0,0,1225,0,0,0,0,6258688,6447104,0,0,6127616,0,6348800,5906432,0,5537792,3827,4882432,0,0,0,0,0,0,2784,0,0,0,0,0,0,0,0,0,139264,147456,0,0,0,420,0,0,0,3926,0,0,0,0,0,0,5693440,0,6496256,5144576,5136384,0,5914624,0,0,5513216,5783552,0,3926,0,0,0,0,0,0,0,0,4358144,4358144,0,0,0,0,0,0,0,0,0,0,302,0,0,306,0,0,0,0,0,0,306,237983,147456,0,0,0,306,0,0,311,312,0,0,0,0,0,0,0,0,0,0,0,0,0,1819,0,0,312,0,311,311,312,0,0,0,0,0,0,0,0,0,0,0,311,409,312,0,458,472,472,472,485,485,485,485,485,485,485,485,485,506,485,485,485,485,485,524,485,485,485,524,485,485,485,485,485,485,529,57895,529,57895,529,529,57895,529,529,57918,57895,529,529,57895,57895,57895,57895,57945,57945,57895,57895,57895,57895,57945,57945,57895,529,57895,57895,57918,57895,57895,57895,57895,57895,57895,57895,57918,57918,57895,57895,57945,57895,57895,57895,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,306,307,0,0,0,0,0,645,0,0,648,649,0,0,0,0,0,736,0,0,0,0,0,0,0,0,0,745,368,368,0,0,704,0,0,0,0,0,0,0,711,0,0,0,0,0,750,0,0,0,0,645,0,0,0,0,0,0,0,6299648,0,0,0,0,0,0,0,0,0,777,0,0,781,0,0,0,0,0,0,0,789,0,0,0,0,0,0,2807,0,0,0,0,0,0,0,0,0,2310,0,0,0,0,0,0,793,0,0,0,0,0,0,0,797,0,0,0,0,0,0,0,0,557056,557056,0,0,0,0,0,0,0,833,793,0,0,0,0,0,837,838,0,0,0,0,793,528,528,0,57893,57893,57893,57893,57893,57893,155942,1151,0,0,1155,0,0,0,0,2295,0,1160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1759,528,847,851,528,528,863,528,528,528,879,528,884,528,892,528,895,528,528,909,528,57893,57893,57893,58266,58270,57893,57893,58282,57893,57893,57893,58298,57893,58303,57893,58311,57893,58314,57893,57893,58328,57893,0,57916,57916,57916,58342,58346,57916,57916,58358,57916,57916,57916,58374,57916,58379,57916,58387,57916,58390,57916,57916,58404,57916,0,0,0,0,58303,57943,57943,57943,58417,58421,57943,57943,58433,57943,57943,528,528,528,57893,57893,57893,0,0,3655,0,3657,0,0,0,0,0,2356,0,2358,0,0,0,0,0,0,0,0,0,5693440,0,6496256,5144576,5136384,0,5914624,57943,58449,57943,58454,57943,58462,57943,58465,57943,57943,58479,57943,847,851,1141,895,1159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,747,0,0,0,1320,0,0,0,0,0,0,0,0,0,0,0,0,368,302,0,0,528,528,528,1411,528,528,528,528,528,528,528,528,528,528,528,528,528,2470,528,528,0,0,1809,0,0,0,0,0,0,0,0,0,0,0,0,0,1842,0,0,1832,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1201,1885,0,0,1886,0,0,0,0,528,528,528,528,528,528,528,528,528,528,3225,528,528,528,1899,528,528,528,528,528,528,528,528,528,1912,528,528,528,0,0,57893,60609,57893,57893,57893,57893,57893,57893,57893,57893,57893,61085,57893,57893,57893,57893,57893,57893,528,528,528,528,58773,1985,57893,57893,57893,57893,57893,59336,57893,57893,57893,57893,57893,58822,57893,57893,57893,57893,58827,57893,57893,57893,57893,57893,58319,57893,57893,57893,57893,0,57916,57916,58341,57916,57916,57893,59342,57893,57893,57893,57893,57893,57893,57893,57893,57893,59355,57893,57893,57893,57893,57893,58859,57893,57893,57893,58866,57893,50676,58773,990,57916,57916,59442,57916,57916,57916,57916,57916,57916,57916,57916,57916,59455,57916,57916,57916,57916,57916,57916,60387,57916,57916,57916,57916,57916,57916,60394,57916,57916,57916,57916,57916,57916,59514,57916,57916,57916,57916,57916,57916,59520,57916,57916,57916,57916,57916,57943,61127,57943,57943,57943,61130,57943,57943,57943,57943,57943,57943,57943,60968,57943,57943,57943,57943,57943,57943,57943,57943,57943,60721,57943,57943,57943,57943,57943,57943,57943,57943,57943,59610,57943,57943,57943,57943,57943,57943,59616,57943,57943,57943,57943,57943,57943,57943,60982,60984,57943,57943,57943,57943,60988,57943,60990,0,0,2293,0,2294,0,0,0,0,0,0,0,0,0,2300,0,0,0,0,2806,0,0,0,0,0,2811,0,2813,2814,0,0,0,0,0,483328,0,0,0,0,0,0,0,0,0,0,801,0,0,0,0,0,0,2325,0,0,0,0,0,0,0,0,0,2334,0,0,0,0,0,0,2822,0,0,0,0,0,0,0,0,0,769,0,0,0,774,0,0,0,2407,0,0,0,0,0,0,0,0,0,0,0,0,0,0,702,528,2399,528,528,528,528,528,528,528,528,528,528,528,2429,528,528,2432,528,528,2475,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2471,528,57893,57893,59863,57893,57893,57893,57893,57893,57893,59871,57893,57893,57893,57893,57893,57893,0,0,57916,57916,57916,57916,57916,57916,57916,57916,60351,57916,57916,57916,57916,57916,57916,57893,59891,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60640,57916,57916,57916,59949,57916,57916,59952,57916,57916,57916,57916,57916,57916,59960,57916,57916,57893,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,0,0,0,0,57916,57916,60017,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,60417,57943,57943,57943,57943,57943,60032,57943,57943,60035,57943,57943,57943,57943,57943,57943,60043,57943,57943,528,528,528,57893,57893,57893,0,3654,0,0,0,0,0,0,0,1325,0,0,0,1329,0,0,0,0,57943,57943,60100,57943,57943,57943,57943,2760,528,528,528,528,60109,57893,57893,57893,0,0,0,0,57916,57916,57916,57916,57916,57916,57916,59945,57916,0,0,2781,0,0,0,0,0,0,0,0,0,0,0,0,0,1884,0,0,0,0,2794,0,0,0,0,0,2798,0,0,0,0,0,0,0,0,4784128,0,0,0,0,0,0,0,0,3181,0,0,0,0,0,3186,0,57893,60285,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60293,57893,57893,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,57943,57943,60461,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,4075,0,4076,57943,60472,57943,57943,57943,57943,57943,528,528,528,528,528,57893,57893,57893,57893,57893,0,0,0,0,0,0,0,3150,0,0,0,0,0,0,0,0,0,0,0,0,0,2299,0,0,0,3160,0,0,0,0,0,0,0,0,0,0,0,0,3173,0,0,0,0,2820,0,0,0,2824,0,0,0,0,0,0,0,703,0,0,0,0,0,0,0,0,2331,0,0,0,0,0,0,0,0,3189,0,0,0,0,0,0,0,0,0,0,0,0,3202,3203,0,0,3215,0,528,528,528,528,528,528,528,528,528,528,528,3226,528,528,3230,528,528,528,528,528,528,528,528,528,528,3239,528,528,0,0,0,0,0,0,57893,57893,60279,57893,57893,57893,57893,57893,58320,57893,57893,57893,57893,0,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,0,0,4289,0,528,60617,57893,57893,60621,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60630,57893,0,0,3137,3138,0,0,0,0,0,0,0,0,0,0,0,3199,0,0,0,0,57916,57916,57916,60666,57916,57916,60670,57916,57916,57916,57916,57916,57916,57916,57916,57916,58383,57916,57916,57916,57916,57916,57916,57916,60679,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60687,57916,0,0,0,0,57893,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,528,528,57893,57893,57893,57943,57943,57943,57943,60715,57943,57943,60719,57943,57943,57943,57943,57943,57943,57943,57943,57943,59582,57943,57943,57943,57943,57943,57943,57943,57943,60728,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60736,0,3430,0,0,0,0,0,0,0,0,0,0,0,0,0,0,729,0,528,3495,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2904,528,528,528,528,3512,528,3514,528,528,528,528,528,528,528,528,57893,57893,58259,57893,57893,57893,57893,57893,57893,58292,57893,57893,60879,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59389,57893,57893,57893,57893,60897,57893,60899,57893,57893,57893,57893,57893,57893,57893,57893,57893,59399,57893,57893,57893,57893,57893,57893,57916,60921,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,60963,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60457,57943,528,4015,528,528,528,528,528,528,528,528,528,528,528,57893,61372,57893,302,306,0,0,0,0,0,0,0,0,0,0,0,0,0,1199,0,0,61374,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,61388,57916,0,0,0,0,57893,57943,57943,57943,57943,57943,57943,57943,57943,57943,58442,61390,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,61404,57943,528,2281,528,528,528,57893,59630,57893,57893,57893,2290,0,2291,0,0,0,0,0,262144,0,0,0,0,0,0,0,0,0,0,663,0,0,666,667,0,61406,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,0,0,0,0,0,0,528,4077,0,0,0,0,0,0,0,4084,0,0,528,528,528,528,4089,0,0,4148,0,4150,528,528,528,528,528,528,528,528,528,528,528,528,1399,528,528,528,0,0,0,313,314,315,0,0,0,0,0,0,0,0,0,0,1240,0,0,0,0,0,0,0,427,0,131072,0,0,0,0,427,0,0,0,0,0,427,459,0,0,0,459,459,459,459,459,459,459,459,459,459,459,459,523,459,523,523,523,459,523,523,523,523,523,523,530,57896,530,57896,530,530,57896,530,530,57919,57896,530,530,57896,57896,57896,57896,57946,57946,57896,57896,57896,57896,57946,57946,57896,621,57896,57973,57919,57896,57896,57896,57896,57896,57896,57896,57919,57919,57896,57896,57946,57896,57896,57896,57973,57973,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,0,2830,0,0,0,0,0,0,0,0,0,0,0,680,681,0,0,0,57893,57893,58307,57893,57893,57893,57893,57893,57893,57893,0,57916,57916,57916,57916,57916,57916,57916,60350,57916,57916,57916,57916,57916,57916,57916,60915,57916,57916,57916,57916,57916,57916,57916,57916,58942,57916,57916,57916,57916,57916,57916,57916,57916,60389,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,58458,57943,57943,57943,57943,57943,57943,57943,528,528,528,528,528,57893,57893,57893,57893,528,528,1965,528,528,528,528,528,528,1972,528,528,528,528,528,528,528,3501,528,3503,528,528,528,528,528,528,1360,528,528,528,528,528,528,528,528,528,2887,528,2889,528,528,528,528,57893,59408,57893,57893,57893,57893,57893,57893,59416,57893,57893,57893,57893,57893,57893,57893,58823,57893,57893,57893,57893,57893,57893,57893,57893,58840,57893,57893,57893,57893,57893,57893,57893,59508,57916,57916,57916,57916,57916,57916,59516,57916,57916,57916,57916,57916,57916,57916,57916,58909,57916,57916,57916,58912,57916,57916,57916,57893,57893,57893,60286,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58814,57893,57893,57893,60408,57916,57916,57916,57943,57943,57943,57943,57943,57943,60414,57943,57943,57943,57943,60418,57943,57943,57943,60473,57943,57943,57943,528,528,528,528,528,57893,57893,57893,57893,57893,0,0,0,0,2292,528,528,528,4093,528,4095,528,528,4097,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61077,57893,57893,57893,57893,61450,57893,61452,57893,57893,61454,57893,57893,57916,57916,57916,57916,57916,57916,58879,57916,57916,57916,57916,57916,58891,57916,57916,57916,57916,57916,61464,57916,61466,57916,57916,61468,57916,57916,57943,57943,57943,57943,57943,57943,60956,57943,57943,57943,57943,57943,60960,57943,57943,57943,57943,61478,57943,61480,57943,57943,61482,57943,57943,0,0,0,0,0,0,0,1766,0,0,1769,0,0,0,0,0,320,320,428,429,131072,436,429,437,439,428,436,437,0,316,437,455,460,473,473,473,486,486,486,486,486,486,486,486,486,486,508,508,521,521,522,522,508,522,522,522,508,522,522,522,522,522,522,531,57897,531,57897,531,531,57897,531,531,57920,57897,531,531,57897,57897,57897,57897,57947,57947,57897,57897,57897,57897,57947,57947,57897,622,57972,57972,57920,57897,57897,57897,57897,57897,57897,57897,57920,57920,57897,57897,57947,57897,57897,57897,57972,57972,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,0,3151,0,0,0,0,0,3155,0,0,0,0,0,0,814,0,0,0,0,0,0,819,0,0,0,686,0,0,0,0,0,0,0,0,0,0,0,0,0,368,0,0,0,368,368,702,0,0,0,0,0,0,0,0,0,0,0,0,0,2315,0,0,0,0,0,734,0,0,0,0,0,0,0,0,0,0,0,0,368,303,0,0,0,823,0,0,0,0,0,0,0,0,0,0,0,0,0,0,775,0,0,1174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,804,0,0,0,0,1216,1174,0,0,0,0,0,0,0,0,0,0,0,0,0,2336,0,0,0,0,0,1281,0,0,0,0,0,0,0,0,0,0,0,0,368,342,296,0,0,0,1295,0,0,0,0,0,0,0,0,0,0,0,0,0,2363,0,0,1307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1229,58773,914,57893,57893,58777,57893,57893,58781,57893,57893,57893,57893,57893,57893,57893,57893,58808,57893,57893,57893,57893,57893,57893,57893,58795,57893,58800,57893,57893,58804,57893,57893,58807,57893,57893,57893,57893,57893,57893,57893,58838,57893,57893,57893,57893,57893,57893,57893,57893,58841,57893,57893,57893,57893,57893,57893,57893,58872,57916,57916,58876,57916,57916,57916,57916,57916,57916,57916,57916,58890,57916,58895,57916,0,0,0,0,57893,57943,57943,57943,57943,57943,57943,58428,57943,57943,58444,57916,58899,57916,57916,58902,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59985,57916,57916,57916,1860,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1245,528,528,528,528,1902,528,528,528,528,528,528,528,528,528,1914,528,528,0,57893,57893,57893,57893,57893,57893,155942,1151,0,0,1156,0,0,0,0,327,327,377,0,0,0,0,0,0,0,0,0,1210,0,368,368,0,1213,0,1929,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,896,57893,57893,57893,59345,57893,57893,57893,57893,57893,57893,57893,57893,57893,59357,57893,57893,1,24578,3,155942,156282,296,0,0,0,0,0,302,303,0,57916,57916,59445,57916,57916,57916,57916,57916,57916,57916,57916,57916,59457,57916,57916,57916,57916,57916,59967,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,61474,57943,59541,57943,57943,57943,57943,57943,57943,57943,57943,57943,59553,57943,57943,57943,57943,57943,57943,57943,61152,57943,57943,57943,57943,57943,57943,57943,528,528,528,2763,2764,57893,57893,57893,60112,57943,57943,57943,59591,59592,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59601,57943,57943,57943,57893,59917,59918,59919,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58848,57893,57893,58852,57916,59989,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60002,57943,60072,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60085,57893,57893,60325,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58849,57893,57893,0,0,0,3216,528,528,528,528,528,528,528,528,528,528,528,528,528,2484,528,528,528,528,528,3243,528,528,528,528,528,528,528,528,528,528,528,528,528,2891,528,528,57893,57893,57893,57893,60634,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,0,2999,0,0,0,61125,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60962,528,528,4092,528,528,528,528,528,528,528,57893,61444,57893,61445,57893,57893,57893,2589,0,0,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,61106,57916,57916,57916,57916,57916,57916,57916,57916,59954,57916,57916,59958,57916,57916,57916,59962,57893,61449,57893,57893,57893,57893,57893,57893,57893,57893,57916,61458,57916,61459,57916,57916,57893,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59540,57916,61463,57916,57916,57916,57916,57916,57916,57916,57916,57943,61472,57943,61473,57943,57943,528,528,1715,528,528,1718,57893,57893,59064,57893,57893,59067,1151,0,57943,61477,57943,57943,57943,57943,57943,57943,57943,57943,0,0,0,0,0,0,0,1814,0,0,0,0,0,0,0,0,528,1338,528,528,528,528,528,528,528,528,4291,57893,57893,57893,61637,57916,57916,57916,61639,57943,57943,57943,61641,0,0,0,0,3178,0,0,0,0,0,0,0,0,0,0,0,1312,0,0,0,0,326,327,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1186,0,0,0,377,0,131072,0,0,0,440,377,0,0,445,451,0,377,461,474,474,474,487,487,487,487,487,487,487,487,487,487,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,532,57898,532,57898,532,532,57898,532,532,57921,57898,532,532,57898,57898,57898,57898,57948,57948,57898,57898,57898,57898,57948,57948,57898,532,57898,57898,57921,57898,57898,57898,57898,57898,57898,57898,57921,57921,57898,57898,57948,57898,57898,57898,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,1188,0,1190,1191,0,0,0,1193,1194,0,0,0,0,0,0,0,0,4997120,0,0,5038080,0,0,0,5095424,5103616,0,0,1232,1233,0,0,0,0,0,0,0,0,0,0,0,0,370,0,0,0,1263,1265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1200,0,1317,0,0,0,0,0,0,0,0,0,1303,0,0,0,1331,1193,528,528,1390,528,528,1392,528,528,528,528,1397,528,528,528,528,528,528,3500,528,528,528,528,528,528,528,528,528,528,61443,57893,57893,57893,57893,57893,58773,914,57893,57893,58778,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,2588,2999,0,0,0,58831,57893,57893,57893,57893,58836,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58811,58813,57893,57893,57893,57893,58873,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60380,57916,58900,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58928,57916,57916,58915,57916,57916,57916,57916,57916,57916,57916,58924,57916,57916,58926,57916,57916,57916,57916,57916,59980,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61530,57916,57916,57943,57943,57916,58931,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58950,57916,57916,57916,58956,57916,57916,57916,57916,0,58831,57943,57943,58967,57943,57943,57943,57943,57943,57943,60464,57943,57943,57943,57943,57943,57943,57943,57943,60470,57943,57943,57943,57943,59018,57943,57943,59020,57943,57943,57943,57943,59026,57943,57943,57943,528,528,57893,57893,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2778,1963,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,901,0,0,2293,0,2294,0,0,0,0,0,2297,0,0,0,0,0,0,316,317,318,319,320,321,322,323,324,325,57893,59862,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60650,57893,59878,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58816,57893,59947,57916,57916,57916,57916,59951,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,61475,60015,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,61133,57943,60030,57943,57943,57943,57943,60034,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60723,57943,57943,57943,60098,57943,57943,57943,57943,57943,57943,528,528,528,528,528,57893,57893,57893,57893,57893,0,0,0,1729,0,0,0,0,2844,0,0,0,0,0,2849,0,0,0,0,0,0,0,1852,0,0,0,0,0,0,0,1859,0,57916,57916,57916,60347,57916,60348,57916,57916,57916,57916,57916,57916,57916,57916,57916,58385,57916,57916,57916,57916,58403,57916,0,0,3205,0,0,0,0,0,0,0,0,0,0,0,0,0,2374,0,0,528,528,528,528,3253,528,528,528,528,528,528,528,528,528,528,528,528,1926,528,528,528,57916,60688,57916,57916,57916,57916,57916,57916,57916,60694,57916,57916,57916,57916,57916,57916,58906,58908,57916,57916,57916,57916,57916,57916,57916,57916,59451,57916,57916,57916,57916,57916,57916,57916,57916,59498,57916,57916,57916,57916,57916,57916,57916,57916,60672,57916,57916,57916,57916,57916,57916,57916,57943,57943,60737,57943,57943,57943,57943,57943,57943,57943,60743,57943,57943,57943,57943,57943,57943,57943,61339,57943,57943,57943,528,57893,0,0,0,0,0,0,3671,0,0,0,0,0,0,0,0,0,0,0,0,665,0,0,668,57916,61126,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60961,57943,57916,57916,57916,61239,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60959,57943,57943,57943,57943,61258,57943,57943,528,528,57893,57893,0,0,0,0,0,0,0,0,0,0,0,0,2776,2777,0,528,528,528,528,4018,528,528,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,58280,57893,57893,57893,57893,57893,57893,57893,57893,61377,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,61223,57916,57916,57916,57916,57916,57916,61393,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,60025,57943,57943,57943,57943,57943,57943,57943,61409,57943,57943,57943,57943,57943,57943,57943,57943,57943,0,0,0,4241,0,4243,528,528,528,528,528,4094,528,528,528,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59372,57893,57893,57893,61451,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61318,57916,57916,57916,61465,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,61244,57943,57943,57943,57943,57943,57943,61479,57943,57943,57943,57943,57943,57943,0,0,0,0,0,0,0,1865,1866,0,0,0,1869,0,0,0,0,0,328,329,330,331,0,0,0,0,0,0,0,0,0,0,1855,1856,0,1857,1858,0,0,376,0,0,0,0,0,328,376,331,375,0,0,0,0,0,0,363,0,0,0,0,0,0,0,0,0,139264,147456,0,0,450560,0,0,0,331,0,0,0,0,0,0,376,0,0,0,0,0,0,0,0,5210112,0,5365760,0,5554176,5570560,5578752,0,462,475,475,475,488,488,488,488,499,501,488,488,499,488,510,510,510,510,510,525,510,510,510,525,510,510,510,510,510,510,533,57899,533,57899,533,533,57899,533,533,57922,57899,533,533,57899,57899,57899,57899,57949,57949,57899,57899,57899,57899,57949,57949,57899,533,57899,57899,57922,57899,57899,57899,57899,57899,57899,57899,57922,57922,57899,57899,57949,57899,57899,57899,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,670,671,0,0,0,0,0,0,0,0,0,0,0,683,684,685,0,0,0,689,0,0,0,0,0,0,0,0,0,0,368,368,0,0,0,0,0,0,707,708,0,0,0,0,0,714,0,0,0,718,0,720,0,0,0,0,0,0,727,0,0,0,0,0,1163,0,0,0,0,0,0,0,0,0,0,6152192,0,0,0,6316032,0,731,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1292,778,779,0,0,0,0,0,0,0,0,788,0,790,0,0,0,0,0,1201,0,0,0,0,0,0,0,0,0,0,3675,0,0,0,3830,0,822,0,0,0,0,0,822,822,825,0,0,0,790,0,0,0,0,0,1235,0,1237,0,0,0,0,1242,0,0,0,0,0,1268,0,0,0,0,0,0,0,0,0,0,3675,0,0,3829,0,0,0,0,834,0,0,0,0,0,0,0,788,0,0,0,834,528,528,0,57893,57893,57893,57893,57893,57893,155942,1151,0,302,0,0,306,1,24578,3,0,0,4366336,0,0,0,0,0,65536,303,0,528,848,528,854,528,528,869,528,528,880,528,885,528,528,894,897,902,528,910,528,57893,57893,57893,58267,57893,58273,57893,57893,58288,57893,57893,58299,57893,58304,57893,57893,58313,58316,58321,57893,58329,57893,0,57916,57916,57916,58343,57916,0,0,0,0,57893,57943,57943,57943,57943,57943,57943,58430,57943,57943,57943,57943,57943,59547,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61417,57943,0,0,0,58349,57916,57916,58364,57916,57916,58375,57916,58380,57916,57916,58389,58392,58397,57916,58405,57916,0,0,0,0,58304,57943,57943,57943,58418,57943,58424,57943,57943,58439,57943,1906,528,528,528,528,59349,57893,57893,57893,57893,0,0,0,0,0,3140,0,0,3143,3144,0,0,3147,3148,0,57943,58450,57943,58455,57943,57943,58464,58467,58472,57943,58480,57943,848,528,528,1142,902,528,0,57893,58267,57893,58492,58321,57893,155942,1151,0,0,0,0,0,0,364,365,366,367,0,0,368,0,296,0,0,0,0,1176,0,0,0,0,0,0,0,1183,0,0,0,0,0,0,3165,0,0,0,0,0,0,0,0,0,139264,147456,0,0,0,421,0,0,1203,1204,0,0,0,0,1208,0,0,0,368,368,0,0,0,0,0,0,0,0,0,0,0,0,713,0,0,1231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1244,0,0,0,1248,0,0,1200,0,0,0,0,0,749,0,0,0,0,0,0,0,0,0,0,0,726,0,0,0,0,528,1347,528,528,528,528,528,528,1362,528,528,528,1367,528,528,528,528,528,2464,528,528,528,528,528,528,528,528,528,528,528,1910,528,528,528,528,58773,914,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58786,57893,57893,57893,0,0,0,0,57916,57916,57916,57916,57916,57916,59944,57916,57916,57893,57893,57893,58801,57893,57893,57893,58806,57893,57893,57893,57893,57893,57893,57893,57893,58809,57893,57893,57893,57893,57893,57893,57893,57893,57893,58854,57893,57893,57893,57893,57893,57893,58865,57893,50676,58773,990,57916,57916,57893,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59537,57943,57943,528,1351,528,1408,528,528,58790,57893,57893,58847,57893,57893,1151,0,57916,57916,57916,58901,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58391,57916,57916,57916,57916,57916,57916,58918,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58396,57916,57916,57916,57916,57916,57916,58933,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58949,57916,0,0,0,0,57893,57943,57943,57943,57943,57943,57943,58431,57943,57943,57943,57943,57943,60063,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60428,57943,60430,57943,57943,57943,57943,58975,57943,57943,57943,57943,57943,57943,58990,57943,57943,57943,58995,57943,2280,528,2282,528,528,59629,57893,59631,57893,57893,0,0,0,0,0,0,1298,0,0,0,0,1303,0,0,0,0,59055,57943,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,1151,1724,0,1760,0,0,1763,1764,1765,0,1767,1768,0,0,0,0,1773,0,0,0,0,3192,0,0,0,0,3197,0,0,0,0,0,0,0,2368,2369,0,0,0,0,0,0,0,692,0,0,0,0,0,0,699,368,1807,0,0,0,0,0,0,0,0,1816,1817,0,0,0,0,0,0,373,0,0,0,0,0,0,0,0,0,139264,147456,0,0,352256,0,0,0,1823,0,0,1825,0,0,0,0,0,0,0,0,1829,1830,1831,0,1870,0,0,0,1888,1740,1740,1890,528,1892,528,1893,1894,528,1896,528,528,528,1900,528,528,528,528,528,528,528,528,528,1913,528,528,0,0,0,0,0,0,57893,60278,57893,57893,57893,57893,57893,57893,0,2592,57916,57916,57916,57916,57916,57916,57916,57916,59969,57916,57916,57916,57916,57916,57916,59974,57916,528,528,1917,528,528,528,528,1921,528,1923,528,528,528,528,528,528,1393,528,1395,528,528,528,528,528,528,528,872,528,528,528,528,528,528,528,528,528,3710,528,528,528,528,528,528,528,528,528,528,1933,1934,1936,528,528,528,528,528,528,528,1944,1945,528,1947,528,528,1950,1951,528,528,528,528,528,528,528,1959,528,1961,528,1964,528,528,528,528,528,1971,528,528,1973,528,528,528,528,528,528,3855,528,528,528,528,528,57893,57893,57893,57893,57893,57893,58279,57893,57893,57893,57893,57893,528,528,528,528,58773,0,59332,57893,59334,57893,59335,57893,59337,57893,59339,57893,302,306,0,0,0,0,3141,0,0,0,3145,0,0,0,0,0,0,2832,0,0,0,0,0,0,0,0,0,2835,0,0,0,0,0,0,57893,57893,59343,57893,57893,57893,57893,57893,57893,57893,57893,57893,59356,57893,57893,57893,0,0,0,0,57916,57916,57916,57916,59942,57916,57916,57916,57916,57916,59515,57916,57916,59517,57916,57916,57916,57916,57916,57916,57916,0,57893,57943,57943,58966,57943,57943,58970,57943,57893,59360,57893,57893,57893,57893,59364,57893,59366,57893,57893,57893,57893,57893,57893,57893,58839,57893,57893,58846,57893,57893,57893,57893,57893,57893,57893,57893,59376,59377,59379,57893,57893,57893,57893,57893,57893,57893,59387,59388,57893,2770,2291,0,2771,2294,0,0,0,0,0,0,0,0,0,0,770,0,0,0,0,0,59390,57893,57893,59393,59394,57893,57893,57893,57893,57893,57893,57893,59402,57893,59404,57893,2770,2291,0,2771,2294,0,0,0,0,0,0,2775,0,0,0,0,0,784,0,0,679,0,0,0,0,0,0,0,660,661,0,0,0,0,0,0,0,384,0,139264,147456,0,406,0,0,406,59407,57893,57893,57893,57893,57893,59415,57893,57893,59417,57893,57893,57893,57893,57893,57893,0,0,57916,57916,57916,57916,60660,57916,57916,57916,57916,59443,57916,57916,57916,57916,57916,57916,57916,57916,57916,59456,57916,57916,57916,57916,57916,58878,57916,57916,57916,58882,57916,57916,58893,57916,57916,58897,59460,57916,57916,57916,57916,59464,57916,59466,57916,57916,57916,57916,57916,57916,57916,57916,59467,59468,57916,57916,57916,57916,57916,57916,57916,57916,59476,59477,59479,57916,57916,57916,57916,57916,57916,57916,59487,59488,57916,59490,57916,57916,59493,59494,57916,57916,57916,57916,57916,57916,57916,59502,57916,59504,57916,59507,57943,57943,57943,59560,57943,59562,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60987,57943,57943,57943,59572,59573,59575,57943,57943,57943,57943,57943,57943,57943,59583,59584,57943,57943,59586,57943,57943,57943,57943,57943,60731,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60081,57943,57943,57943,57943,57943,59589,59590,57943,57943,57943,57943,57943,57943,57943,59598,57943,59600,57943,59603,57943,57943,57943,57943,57943,60739,57943,57943,57943,60742,57943,60744,57943,57943,57943,57943,57943,57943,60740,57943,57943,57943,57943,57943,57943,57943,57943,57943,59023,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59611,57943,57943,59613,57943,57943,57943,57943,57943,57943,57943,57943,57943,60039,57943,57943,57943,57943,57943,57943,0,0,2293,0,2294,0,0,0,0,0,0,0,0,0,0,2301,0,0,2304,2305,0,0,0,2309,0,0,0,0,0,0,0,0,0,6406144,5357568,0,5505024,0,0,0,0,2352,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1276,0,1825,0,2365,0,0,0,0,0,0,0,0,2372,0,0,2375,0,0,0,0,3217,528,528,528,528,528,528,528,528,528,528,528,528,2929,528,528,528,0,2378,0,0,0,0,0,0,2385,0,2387,0,0,0,0,0,0,403,0,0,0,0,0,0,0,0,332,333,0,0,0,0,0,0,0,0,334,335,336,0,0,0,0,0,0,0,0,2396,0,0,0,0,0,0,0,0,0,0,0,0,697,698,0,368,2406,0,0,0,0,0,0,0,0,0,0,0,0,0,2417,0,0,0,0,3433,0,0,0,0,0,0,0,0,0,0,0,786,0,0,0,528,2433,528,2435,528,528,528,528,528,528,2443,528,2445,528,528,528,528,528,1414,528,528,528,528,528,528,528,528,528,528,1956,528,528,528,528,528,528,528,528,2451,528,528,528,528,528,528,528,528,528,528,528,528,528,2902,528,528,2473,528,528,528,528,528,528,2480,528,528,528,528,528,528,528,528,1906,528,528,528,528,528,528,528,57893,57893,57893,59864,57893,59866,57893,57893,57893,57893,57893,57893,59874,57893,59876,57893,2770,2291,0,2771,2294,0,0,2773,0,0,0,0,0,0,0,0,2359296,418,418,0,0,0,0,0,57893,57893,59904,59905,57893,57893,57893,57893,57893,57893,59912,57893,57893,57893,57893,57893,57893,60885,57893,60887,57893,57893,57893,57893,57893,57893,57893,59397,57893,57893,59400,57893,57893,57893,57893,57893,59930,59931,57893,0,0,0,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,58910,57916,57916,57916,57916,57916,57916,59963,57916,59965,57916,57916,57916,57916,57916,57916,57916,59971,57916,57916,57916,57916,57916,57916,60914,57916,57916,57916,57916,57916,60918,57916,57916,57916,57916,60016,57916,57916,60019,60020,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,0,4239,0,0,0,0,528,60046,57943,60048,57943,57943,57943,57943,57943,57943,57943,60054,57943,57943,57943,57943,57943,57943,58979,58986,57943,57943,57943,57943,57943,57943,57943,57943,57943,60079,57943,57943,57943,57943,57943,57943,57943,60099,57943,57943,60102,60103,57943,2435,528,2762,528,528,59866,57893,60111,57893,57893,57893,57893,57893,61083,57893,57893,57893,57893,57893,57893,57893,57893,61089,57893,57893,57893,57893,57893,61219,57893,57893,57893,57916,57916,57916,57916,57916,57916,57916,1272,57893,57943,57943,57943,57943,57943,57943,57943,528,3132,528,528,528,57893,60479,57893,57893,0,0,2829,0,0,0,0,2833,0,0,0,0,0,0,0,0,312,311,0,0,0,311,311,312,2905,528,528,528,528,2909,528,528,528,2914,528,528,528,528,528,528,1920,528,528,528,528,528,528,528,528,528,1908,528,528,528,528,528,528,528,528,2922,528,528,528,528,528,528,528,2927,528,528,528,528,528,528,3940,528,528,528,528,528,528,3946,528,528,60284,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59406,60296,57893,60298,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59403,57893,57893,57893,60324,57893,57893,57893,57893,57893,57893,57893,57893,60332,57893,57893,57893,57893,57893,57893,61096,57893,57893,57893,57893,57916,57916,57916,57916,57916,57916,60703,57916,57916,57943,57943,57943,57943,57943,57943,57943,58466,57943,57943,57943,57943,528,528,528,896,57893,57893,57893,60338,57893,57893,57893,57893,57893,57893,57893,0,2999,0,0,0,0,0,1323,0,0,0,0,0,0,0,0,0,0,2836,2837,0,0,0,0,57916,60382,57916,57916,57916,57916,60386,57916,57916,57916,60391,57916,57916,57916,57916,57916,57916,60926,57916,57916,57916,57916,57916,57916,57916,57916,57916,59956,57916,57916,57916,57916,57916,57916,57916,57916,57916,60399,57916,57916,57916,57916,57916,57916,57916,57916,60405,57916,57916,57916,57916,57916,59992,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58925,57916,57916,57916,57916,57916,57943,57943,57943,57943,60447,57943,57943,57943,57943,60451,57943,57943,57943,60456,57943,57943,528,1352,528,528,1717,528,58791,57893,57893,57893,59066,57893,1151,0,0,0,3177,0,0,0,0,0,0,0,0,0,0,0,0,0,2390,0,0,528,528,528,528,3232,528,528,528,528,528,528,528,528,528,528,528,528,1941,528,528,528,528,528,3251,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2892,528,57893,57893,57893,57893,60643,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,50676,58773,990,57916,57916,3442,3443,0,3444,0,3446,0,0,0,0,3448,0,0,0,0,0,0,737,0,0,0,0,0,0,0,0,0,2360,0,0,0,0,0,2364,3467,0,0,0,0,3472,3473,0,3475,0,0,3478,0,0,0,3481,528,528,528,528,3498,528,528,528,528,528,3504,528,528,528,528,528,528,4020,528,4022,4023,528,4025,528,57893,57893,57893,57893,57893,57893,60882,57893,57893,57893,57893,57893,60888,57893,57893,60891,57893,57893,57893,0,0,0,0,57916,57916,57916,59941,57916,59943,57916,57916,57916,57916,57916,60006,60007,60008,57916,57916,57916,57916,57916,57916,57916,57916,58943,57916,57916,58947,57916,57916,57916,57916,57916,57916,57916,57916,60924,57916,57916,57916,57916,57916,60930,57916,57916,60933,57916,57916,57893,57943,57943,57943,57943,57943,59532,57943,57943,57943,57943,57943,59538,57943,60991,57943,528,528,3650,57893,57893,60997,0,0,0,0,0,0,3659,0,0,0,0,3445,0,0,0,0,0,0,0,0,0,0,0,2812,0,0,2815,0,0,3662,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1306,0,3669,0,0,0,0,0,0,0,0,0,0,0,0,3676,0,3678,528,528,528,528,3705,528,528,528,528,528,528,528,528,528,528,528,528,2458,528,528,528,528,528,3715,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2903,528,528,57893,57893,57893,61071,57893,57893,57893,57893,57893,57893,57893,61076,57893,57893,57893,0,0,0,0,57916,57916,59940,57916,57916,57916,57916,57916,57916,59981,57916,57916,57916,57916,57916,57916,57916,57916,57916,59453,57916,57916,57916,57916,57916,57916,57893,57893,57893,57893,61095,57893,57893,57893,57893,57893,57893,57916,57916,57916,61100,57916,0,0,0,0,57893,57943,57943,57943,57943,57943,57943,58432,57943,57943,57943,57943,57943,60075,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59048,57943,57943,57943,57943,61134,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61145,3832,0,0,3835,0,0,0,0,0,0,0,0,0,0,0,0,772,0,0,0,57916,57916,61238,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61142,57943,57943,57943,3924,0,3675,0,0,0,0,0,3932,0,0,0,0,0,0,0,312,0,0,0,0,0,311,0,311,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,61301,57893,57893,57893,57893,57893,59363,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60315,57893,57893,57893,57893,60319,57893,57893,57943,61333,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,57893,0,0,0,0,0,1736,0,0,0,0,0,0,0,0,0,0,2334720,0,2334720,0,0,0,0,0,0,4079,0,0,0,0,0,0,0,528,528,528,528,528,528,528,4157,528,4159,528,528,4091,528,528,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,61448,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,57916,57916,57916,57916,61317,57916,61462,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,60028,57943,61476,57943,57943,57943,57943,57943,57943,57943,57943,57943,4141,4142,0,0,0,4145,528,528,61507,61508,61509,57893,57893,57893,61512,57893,61514,57893,57893,57893,57893,61519,61520,61521,61522,57916,57916,57916,61525,57916,61527,57916,57916,57916,57916,61532,61533,61534,61535,57943,57943,57943,61538,57943,61540,57943,57943,57943,57943,61545,0,0,0,0,0,0,3194,0,0,0,3198,0,3200,0,0,0,528,4245,528,528,528,4249,57893,57893,61595,57893,57893,57893,61599,57893,57916,57916,57893,57943,59529,57943,57943,57943,57943,57943,57943,57943,59536,57943,57943,57943,57943,57943,59040,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,3412,528,57893,60759,57893,61601,57916,57916,57916,61605,57916,57943,57943,61607,57943,57943,57943,61611,57943,0,0,0,0,0,2342912,0,0,0,0,0,0,0,0,0,4358144,4359058,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6275072,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,413,0,0,0,0,0,0,413,139264,147456,0,0,0,422,0,0,0,0,3456,0,0,0,0,0,0,0,0,0,0,0,749,0,0,0,0,372,372,0,430,131072,372,430,430,0,333,372,430,0,0,430,456,430,0,0,0,430,495,495,495,500,495,495,495,500,495,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,534,57900,534,57900,534,534,57900,534,534,57923,57900,534,534,57900,57900,57900,57900,57950,57950,57900,57900,57900,57900,57950,57950,57900,534,57900,57900,57923,57900,57900,57900,57900,57900,57900,57900,57923,57923,57900,57900,57950,57900,57900,57900,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,841,528,528,528,528,528,528,873,528,528,528,528,528,528,528,528,1939,528,528,528,528,528,528,528,0,0,1175,0,0,0,0,0,0,0,0,0,0,0,0,0,2416,0,0,0,0,0,1296,0,1175,0,0,0,0,0,0,0,0,0,0,2371,0,0,0,0,0,58773,914,57893,57893,57893,57893,57893,57893,57893,57893,58784,57893,57893,57893,57893,57893,57893,61210,57893,57893,57893,57893,57893,57893,57893,57893,57893,60626,57893,57893,60629,57893,57893,57893,58796,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59424,57943,58973,57943,57943,57943,57943,57943,58985,57943,57943,57943,57943,57943,57943,57943,57943,57943,60053,57943,57943,57943,57943,57943,57943,0,1873,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1743,1744,57943,60460,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60726,57943,61135,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61257,528,528,528,61636,57893,57893,57893,61638,57916,57916,57916,61640,57943,57943,57943,0,0,0,0,3471,0,0,0,0,0,0,0,0,0,0,0,1868,0,0,0,0,0,0,0,431,131072,0,431,431,0,0,0,431,446,0,431,0,0,0,0,3663,0,0,0,0,0,0,0,0,0,0,0,1289,0,0,0,0,431,476,476,476,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,535,57901,535,57901,535,535,57901,535,535,57924,57901,535,535,57901,57901,57901,57901,57951,57951,57901,57901,57901,57901,57951,57951,57901,535,57901,57901,57924,57901,57901,57901,57901,57901,57901,57901,57924,57924,57901,57901,57951,57901,57901,57901,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,528,528,528,528,58773,1986,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59353,57893,57893,57893,57893,57893,0,0,0,2327,0,0,0,0,0,0,0,0,0,0,0,0,773,0,0,776,2351,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1774,57893,57893,59892,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59900,57893,57893,0,0,0,2805,0,0,0,0,0,0,0,0,0,0,0,0,800,0,0,528,3175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1790,0,0,3431,0,0,0,0,0,3437,0,0,0,0,0,0,0,331,0,139264,147456,0,0,0,0,0,3482,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,1372,57893,57893,57893,57893,60883,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60893,60908,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60396,60935,57916,57916,57916,57916,57916,57916,57916,57916,57916,60944,57916,57916,60947,57916,57916,57893,59528,57943,59530,57943,59531,57943,59533,57943,59535,57943,57943,57943,59539,57916,60950,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59012,57943,57943,60977,57943,57943,57943,57943,57943,57943,57943,57943,57943,60986,57943,57943,60989,57943,57943,57943,57943,57943,60966,57943,57943,57943,57943,57943,60972,57943,57943,60975,57943,57943,57943,57943,57943,60750,57943,57943,57943,57943,528,528,528,57893,57893,57893,0,0,0,0,0,0,0,3660,528,528,528,528,3716,528,3718,528,528,528,528,528,528,528,528,528,528,3491,528,528,528,528,528,528,57893,57893,61070,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59385,57893,57893,57893,57893,57893,57893,57893,61082,57893,57893,57893,57893,57893,57893,57893,57893,61088,57893,61090,57943,61146,57943,61148,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,57893,0,0,0,528,528,528,528,3854,528,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,58277,57893,57893,58293,57893,57893,61216,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61229,57916,57916,57916,57916,57916,57916,57916,57916,57916,61235,57916,57916,57916,57916,57916,61467,57916,57916,61469,57916,57943,57943,57943,57943,57943,57943,57943,60449,57943,57943,60453,57943,57943,57943,57943,57943,61248,57943,57943,57943,57943,57943,57943,57943,57943,57943,61254,57943,57943,57943,57943,57943,57943,58980,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60734,57943,57943,57943,57943,57943,57916,61625,61626,57916,57916,57943,57943,61629,61630,57943,57943,0,0,0,0,528,528,528,528,4275,528,57893,57893,57893,57893,61623,57893,57916,0,761,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1789,0,761,0,0,0,0,0,761,761,0,0,828,0,0,0,0,0,0,738,0,644,738,0,742,743,644,0,0,528,528,852,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2919,528,528,528,528,911,57893,57893,57893,57893,58271,57893,57893,57893,57893,57893,57893,57893,58862,57893,57893,57893,50676,58773,990,57916,58871,58406,0,0,0,0,57893,57943,57943,57943,57943,58422,57943,57943,57943,57943,57943,57943,58981,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60985,57943,57943,57943,57943,57943,528,911,0,58271,57893,57893,57893,57893,58330,155942,1151,0,0,0,0,0,0,751,0,0,0,0,0,0,0,0,0,139264,147456,0,0,319,0,0,0,1279,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2337,0,57943,59035,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59028,57943,528,528,528,1983,58773,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59418,57893,57893,57893,57893,57893,57893,57893,59427,50676,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60377,57916,57916,57916,57916,59527,57893,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60746,57943,59623,528,528,528,528,528,57893,57893,57893,57893,57893,0,0,0,0,0,0,0,3142,0,0,0,0,0,0,0,752,0,0,0,0,0,0,758,0,59861,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59889,57916,57916,57916,57916,59950,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60675,57916,57916,60678,57943,57943,57943,57943,60033,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60042,57943,57943,57943,3812,528,57893,61158,57893,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,386,57916,57916,57916,57916,61240,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61255,57943,57943,57943,57943,61259,57943,528,528,57893,57893,0,0,0,0,0,0,0,0,0,0,0,3146,0,0,0,0,0,334,0,0,0,0,0,0,0,0,0,0,0,334,385,387,0,0,0,0,0,0,0,0,0,0,0,0,0,402,0,0,0,0,3672,0,0,0,0,0,0,0,0,0,0,0,1786,0,0,0,0,334,0,0,0,0,0,0,0,0,0,0,0,0,334,0,0,139264,147456,0,0,0,0,0,425,425,0,0,131072,425,0,0,0,0,425,0,447,0,0,425,335,477,477,477,490,490,490,490,490,490,490,490,490,490,511,519,519,519,519,519,526,519,519,519,526,519,519,519,519,519,519,536,57902,536,57902,536,536,57902,536,536,57925,57902,536,536,57902,57902,57902,57902,57952,57952,57902,57902,57902,57902,57952,57952,57902,536,57902,57902,57925,57902,57902,57902,57902,57902,57902,57902,57925,57925,57902,57902,57952,57902,57902,57902,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,780,0,0,0,0,0,0,0,0,0,0,0,0,0,2789,2790,0,0,795,0,0,0,0,0,0,0,799,0,0,0,0,0,0,0,2330,0,0,0,0,0,0,0,0,1238,0,0,0,0,0,0,0,819,0,0,0,0,0,819,819,0,0,0,0,799,0,0,0,0,0,1750,0,0,0,0,0,0,0,0,0,0,2850,0,0,0,0,0,0,0,0,835,795,0,0,835,0,0,0,0,0,0,0,528,528,528,4154,528,528,528,528,528,528,528,3234,528,528,528,528,528,528,528,528,528,3942,528,528,528,528,528,528,528,528,528,855,528,864,528,528,528,528,528,528,528,528,528,528,528,3944,528,528,528,528,528,528,528,912,57893,57893,57893,57893,57893,58274,57893,58283,57893,57893,57893,57893,57893,59395,59396,57893,57893,57893,57893,57893,57893,57893,57893,57893,59897,57893,57893,57893,57893,57893,57893,58350,57916,58359,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58401,57916,57916,58407,0,0,0,0,57893,57943,57943,57943,57943,57943,58425,57943,58434,57943,57943,528,1354,528,528,528,528,58793,57893,57893,57893,57893,57893,1151,0,1143,912,0,57893,57893,57893,57893,58493,58331,155942,1151,0,0,0,0,0,0,790,0,802,0,816,0,0,0,0,810,1246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1821,0,0,0,1308,0,0,0,0,0,0,0,0,1313,0,0,0,0,0,1796,0,0,0,0,0,0,0,0,0,0,1211,368,368,0,0,1214,528,528,528,1350,528,528,528,528,528,528,528,528,528,1369,528,528,0,0,0,2933,0,1986,57893,57893,57893,57893,57893,57893,57893,57893,59884,57893,57893,57893,57893,57893,57893,57893,528,1409,528,528,1413,528,528,528,528,528,1420,528,528,528,1427,528,528,0,57893,57893,57893,58315,57893,57893,155942,1151,0,0,0,0,0,0,0,6324224,4358144,4358144,5005312,4358144,4358144,4358144,512e4,5136384,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6119424,4358144,6168576,4358144,4358144,4358144,4358144,58773,914,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58789,57893,57893,57893,57893,57893,61379,57893,61381,61382,57893,61384,57893,61386,57916,57916,57916,57916,57916,60385,57916,57916,57916,57916,57916,57916,60393,57916,57916,57916,57916,57916,60691,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59484,57916,57916,57916,57916,57916,57893,57893,58818,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59914,57893,57893,57916,58954,57916,57916,57916,58961,57916,0,57893,57943,57943,57943,57943,57943,57943,57943,57943,61140,57943,57943,57943,57943,57943,57943,57943,57943,60969,57943,60971,57943,57943,57943,57943,57943,57943,57943,57943,59038,57943,57943,59042,57943,57943,57943,57943,57943,59049,57943,57943,57943,528,528,57893,57893,0,0,0,0,0,0,0,0,3923,59056,57943,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,1151,0,0,0,0,4003,3675,0,0,0,0,0,0,0,0,528,528,528,528,528,528,528,1345,1844,1845,0,1847,0,0,0,0,0,0,0,0,0,0,0,0,806,0,0,0,0,1861,0,1863,0,0,0,0,0,0,0,0,0,0,0,0,839,0,0,528,0,0,0,1875,0,0,0,0,0,0,0,0,0,0,0,0,990,0,0,0,0,0,1861,0,0,0,0,0,528,528,528,528,528,528,528,528,3223,528,528,528,528,528,528,1949,528,528,528,528,528,528,528,528,1958,528,528,528,528,528,2478,528,528,528,528,528,528,528,528,528,528,1421,528,528,528,528,528,528,528,528,1967,528,528,528,528,528,528,528,528,528,528,1977,1979,57893,57893,59392,57893,57893,57893,57893,57893,57893,57893,57893,59401,57893,57893,57893,57893,57893,59414,57893,57893,57893,57893,57893,57893,59420,57893,57893,57893,57893,57893,59410,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59421,59423,57893,57893,57893,57893,57893,61453,57893,57893,61455,57893,57916,57916,57916,57916,57916,57916,59482,57916,57916,57916,57916,57916,57916,57916,57916,57916,59983,57916,57916,57916,57916,57916,57916,57916,59492,57916,57916,57916,57916,57916,57916,57916,57916,59501,57916,57916,57916,57916,57916,57916,60940,60942,57916,57916,57916,57916,60946,57916,60948,60949,57916,59510,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59521,59523,57916,57916,57916,57916,57916,61570,57916,61571,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,60416,57943,57943,57943,59588,57943,57943,57943,57943,57943,57943,57943,57943,59597,57943,57943,57943,57943,57943,57943,57943,59043,57943,57943,57943,57943,57943,57943,57943,57943,58988,57943,57943,57943,57943,57943,57943,57943,59606,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59617,59619,57943,57943,57943,528,528,57893,57893,0,0,0,0,0,3921,0,0,0,0,0,1812,0,0,0,0,0,0,0,0,0,0,1839,0,0,0,0,0,0,0,2340,0,0,0,0,0,2346,0,0,0,0,0,0,0,372,0,0,0,380,382,0,0,0,0,0,0,2354,0,0,0,0,0,0,0,0,2362,0,0,0,0,0,1835,0,0,0,0,0,0,0,0,0,0,0,0,528,528,528,528,528,2424,528,528,528,528,528,528,528,528,528,528,3722,528,528,528,528,528,528,528,2436,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2930,528,528,528,2463,528,528,528,528,528,528,528,528,528,528,528,528,528,528,3240,3241,0,0,0,57893,57893,57893,57893,57893,57893,59855,57893,57893,57893,57893,57893,57893,0,0,57916,60658,57916,57916,57916,57916,57916,57916,58940,57916,57916,57916,57916,57916,57916,57916,57916,57916,59518,57916,57916,57916,57916,57916,57916,57916,60003,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58951,57916,57916,57916,57916,60018,57916,57916,57916,57943,57943,57943,57943,57943,57943,60027,57943,57943,528,1355,528,528,528,528,58794,57893,57893,57893,57893,57893,1151,0,57943,60086,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59570,57943,57943,57943,57943,60101,57943,57943,57943,2436,528,528,528,528,59867,57893,57893,57893,0,0,0,0,57916,59939,57916,57916,57916,57916,57916,57916,57916,60927,57916,60929,57916,57916,57916,57916,57916,57916,0,2793,0,2795,0,0,0,0,0,0,0,0,2800,0,0,2803,0,0,2818,0,0,0,0,0,0,0,2826,0,0,0,0,2828,0,2842,0,0,2845,0,0,0,0,0,0,0,0,0,0,2855,0,0,528,2869,528,528,528,528,528,528,528,528,528,528,528,528,528,2918,528,528,57893,57893,57893,57893,60327,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,61099,57916,57916,60336,57893,57893,57893,60339,57893,57893,57893,57893,57893,57893,0,0,0,0,0,0,2772,0,0,0,0,0,0,0,0,2359,0,0,0,0,0,0,0,0,57916,60345,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58894,57916,57916,57943,60433,57943,57943,57943,57943,57943,57943,57943,60438,57943,57943,57943,57943,57943,57943,57943,59549,57943,57943,57943,57943,57943,57943,57943,57943,57943,60067,57943,57943,57943,57943,57943,57943,57943,60444,57943,57943,57943,57943,57943,57943,57943,60452,57943,57943,57943,57943,57943,57943,57943,59595,57943,57943,57943,57943,57943,57943,57943,57943,57943,61543,57943,57943,0,0,0,0,60459,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60468,57943,57943,57943,528,528,57893,57893,0,0,0,3919,0,0,3922,0,0,60471,57943,57943,57943,57943,57943,57943,3131,528,528,528,528,60478,57893,57893,57893,0,0,0,0,59938,57916,57916,57916,57916,57916,57916,57916,59946,3204,0,0,0,3206,0,0,0,0,0,0,0,0,0,0,0,1818,0,0,0,0,528,528,528,528,3244,528,528,528,528,528,528,528,528,528,528,3249,528,528,528,3252,528,3254,528,528,528,528,528,528,528,3258,528,528,0,0,2503,0,0,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,59858,57893,57893,57893,60632,57893,57893,57893,57893,60635,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59924,57893,59926,57893,57893,57893,57893,60641,57893,57893,57893,60644,57893,60646,57893,57893,57893,57893,57893,57893,57893,57893,58843,57893,57893,57893,57893,57893,57893,57893,60651,57893,57893,57893,57893,57893,0,0,57916,57916,57916,60659,57916,57916,57916,57916,57916,58905,57916,58907,57916,57916,57916,57916,57916,57916,57916,57916,60362,57916,57916,57916,57916,57916,57916,57916,57916,60664,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59458,57916,57916,57916,60680,60681,57916,57916,57916,57916,60684,57916,57916,57916,57916,57916,57916,57916,57943,60022,57943,57943,57943,57943,57943,57943,57943,57943,61153,57943,57943,57943,57943,57943,57943,528,57916,57916,57916,57916,60690,57916,57916,57916,60693,57916,60695,57916,57916,57916,57916,57916,57916,61105,57916,57916,57916,57916,57916,57916,57916,57916,57916,58944,57916,57916,57916,57916,57916,58952,57916,57916,57916,60700,57916,57916,57916,57916,57916,57943,57943,57943,60708,57943,57943,57943,528,528,57893,57893,3918,0,0,0,3920,0,0,0,0,0,0,3695,0,3697,528,528,528,528,528,528,528,1905,528,528,528,528,528,528,528,528,2926,528,528,528,528,528,528,528,57943,57943,60713,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61144,57943,57943,57943,57943,60729,60730,57943,57943,57943,57943,60733,57943,57943,57943,57943,57943,57943,57943,60036,57943,60038,57943,57943,57943,57943,57943,57943,57943,58984,57943,58989,57943,57943,58993,57943,57943,58996,57943,57943,57943,57943,60749,57943,57943,57943,57943,57943,528,528,528,57893,57893,57893,0,0,0,0,0,0,0,0,0,0,0,3417,0,0,3420,3421,0,0,0,0,0,0,0,0,0,0,0,1827,0,0,0,0,528,528,528,528,3486,528,528,528,528,3490,528,528,528,528,528,528,1952,1953,528,528,528,528,528,528,528,528,528,3517,528,528,528,528,528,57893,528,3496,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2931,528,3510,528,528,528,528,528,528,528,528,528,528,528,528,528,57893,57893,57893,61204,57893,57893,57893,60870,57893,57893,57893,57893,60874,57893,57893,57893,57893,57893,57893,57893,58863,58864,57893,57893,50676,58773,990,57916,57916,60880,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59901,57893,60895,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58830,57893,57916,57916,57916,57916,60912,57916,57916,57916,57916,60916,57916,57916,57916,57916,57916,57916,58962,0,58963,58964,57943,57943,57943,57943,57943,58971,57916,60922,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59472,57916,57916,57916,60937,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58927,57916,58929,57916,57943,57943,57943,57943,60954,57943,57943,57943,57943,60958,57943,57943,57943,57943,57943,57943,58982,57943,57943,57943,57943,58992,57943,57943,57943,57943,57943,57943,60964,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61256,57943,57943,57943,57943,60979,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60974,57943,60976,528,528,57893,57893,57893,0,0,0,0,3819,0,0,0,0,0,3822,0,528,528,528,528,528,528,3844,528,528,528,528,528,528,528,528,2481,528,528,528,528,528,2485,2486,57893,57893,61206,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59927,57893,57893,57893,57893,61217,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,57916,61225,0,0,3675,0,0,0,0,0,0,0,0,0,0,0,3934,0,0,0,0,4080,0,0,0,0,0,0,528,528,528,528,528,528,4211,528,4212,528,528,528,57893,57893,57893,57893,57893,57893,61562,57893,61563,57893,57893,57893,57893,57916,57943,4313,4314,61659,61660,61661,0,528,57893,57916,57943,0,0,0,0,0,2382,0,0,0,0,0,0,0,0,0,0,4284416,0,0,0,0,0,57943,57943,61578,57943,61579,57943,57943,57943,57943,0,0,0,0,0,0,528,528,4273,4274,528,528,57893,57893,61621,61622,57893,57893,57916,0,528,528,57893,57893,57916,57916,57943,57943,4303,4304,61649,61650,61651,0,528,528,528,528,528,528,528,528,528,2428,528,528,528,528,528,528,4096,528,528,4098,57893,57893,57893,57893,57893,57893,58861,57893,57893,57893,57893,50676,58773,990,57916,57916,537,57903,537,57903,537,537,57903,537,537,57926,57903,537,537,57903,57903,57903,57903,57953,57953,57903,57903,57903,57903,57953,57953,57903,537,57903,57903,57926,57903,57903,57903,57903,57903,57903,57903,57926,57926,57903,57903,57953,57903,57903,57903,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,57893,57893,58833,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60649,57893,57893,57916,59948,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59489,57916,57943,60031,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60044,57943,0,384,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2404,0,0,340,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2854,0,0,0,406,0,0,0,0,0,0,0,0,0,0,0,0,406,0,0,0,432,131072,0,432,432,0,0,0,432,0,452,432,0,0,0,0,4206,0,528,528,528,528,528,528,528,528,528,528,528,528,2430,528,528,432,478,478,478,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,538,57904,538,57904,538,538,57904,538,538,57927,57904,538,538,57904,57904,57904,57904,57954,57954,57904,57904,57904,57904,57954,57954,57904,538,57904,57904,57927,57904,57904,57904,57904,57904,57904,57904,57927,57927,57904,57904,57954,57904,57904,57904,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,661,0,661,0,0,0,0,826,0,0,0,661,0,0,0,0,0,5218304,0,0,0,0,5799936,0,5881856,0,0,0,0,0,0,5029888,5038080,0,0,5103616,5201920,0,0,0,0,0,0,1878,0,0,0,0,0,0,0,0,0,2296,0,0,0,0,0,0,842,528,528,528,857,528,528,528,528,528,528,528,528,528,528,898,528,528,528,528,57893,57893,58260,57893,57893,57893,58276,57893,57893,57893,57893,57893,57893,61220,57893,57893,57916,57916,57916,57916,57916,57916,57916,0,57893,57943,57943,57943,57943,57943,57943,57943,57943,59022,57943,59024,57943,57943,57943,57943,57943,57916,58352,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58393,57916,57916,57916,57916,57916,60913,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61471,57943,57943,57943,57943,57943,1160,0,0,0,0,0,0,0,0,0,1167,1168,0,0,0,0,0,0,1299,0,0,0,0,0,0,0,0,528,528,1340,528,528,528,528,528,0,0,0,1249,0,0,0,0,0,0,0,0,0,1260,1261,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,0,0,2415,0,0,2418,528,528,528,528,1351,1358,528,528,528,528,528,528,528,528,1371,528,528,0,57893,57893,57893,58317,57893,57893,294,1151,0,0,1155,0,0,0,0,0,5857280,0,6463488,4939776,0,0,5455872,0,0,0,0,0,5554176,5570560,5578752,5619712,5668864,0,0,0,5791744,5816320,0,5857280,0,1373,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,1406,1408,528,528,528,528,528,528,528,528,528,528,528,1423,528,528,528,528,528,2910,528,528,528,528,528,528,2917,528,528,528,528,528,2490,528,528,528,528,528,528,528,528,528,0,0,57893,57893,57893,57893,57893,60612,57893,60613,57893,57893,57893,58773,914,57893,58776,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58790,58797,57893,57893,57893,57893,57893,57893,57893,57893,58810,57893,58812,57893,57893,57893,57893,57893,59867,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59872,57893,57893,57893,57893,57893,57893,58832,57893,58834,57893,57893,57893,57893,57893,57893,57893,58847,57893,57893,57893,57893,57893,59881,57893,57893,57893,57893,57893,57893,57893,57893,59888,57893,57916,57916,57916,58957,57916,57916,57916,0,57893,57943,58965,57943,57943,57943,57943,57943,57943,59548,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61154,57943,57943,57943,57943,528,58999,57943,59001,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59027,57943,57943,57943,57943,59037,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59052,57943,57943,57943,57943,57943,61139,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60454,57943,57943,57943,57943,1946,528,528,528,528,528,528,528,528,1955,528,528,528,528,528,528,1970,528,528,528,528,528,528,1976,528,528,528,528,1982,528,58773,1986,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60648,57893,57893,57893,57893,57893,57893,57893,57893,57893,59346,59347,57893,57893,57893,57893,59354,57893,57893,57893,57893,57893,58315,57893,57893,57893,57893,0,57916,57916,57916,57916,57916,57916,60349,57916,57916,57916,57916,60353,57916,57916,57916,57893,59426,57893,50676,2086,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60932,57916,60934,57916,57916,57916,57916,59446,59447,57916,57916,57916,57916,59454,57916,57916,57916,57916,57916,57916,59449,57916,57916,57916,57916,57916,57916,57916,57916,57916,60390,57916,57916,57916,57916,57916,57916,59526,57916,57893,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59051,57943,57943,57943,59542,59543,57943,57943,57943,57943,59550,57943,57943,57943,57943,57943,57943,57943,57943,57943,60425,57943,57943,57943,57943,57943,57943,0,2313,0,0,0,0,0,0,0,0,0,2322,0,0,0,0,0,0,3208,0,0,0,0,0,0,0,0,0,3210,3211,0,0,0,0,0,528,528,528,528,2477,528,528,528,528,528,528,528,2483,528,528,528,528,528,2924,528,528,528,528,528,528,528,528,528,528,528,2496,528,528,528,0,528,528,528,2488,528,528,528,528,528,528,528,528,528,528,528,0,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,0,0,990,57916,57916,57916,57916,57916,60004,57916,57916,57916,57916,57916,57916,57916,60010,57916,57916,57916,57916,57916,58921,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60917,57916,57916,57916,57916,57916,57943,57943,57943,60087,57943,57943,57943,57943,57943,57943,57943,60093,57943,57943,57943,57943,57943,57943,60967,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60040,57943,57943,57943,57943,57943,0,0,0,2782,0,0,0,0,0,0,0,0,0,0,0,0,1169,1170,1171,1172,3159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1871,528,528,528,3231,528,528,528,528,528,528,528,528,528,528,528,528,528,3248,528,528,528,3262,528,0,0,57893,57893,57893,57893,57893,57893,57893,57893,60614,57893,57893,57893,50676,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59441,57893,57893,57893,57893,60622,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,61098,57916,57916,57916,57893,57893,57893,57893,60655,57893,0,0,57916,57916,57916,57916,57916,57916,57916,57916,60928,57916,57916,57916,57916,57916,57916,57916,60663,57916,57916,57916,57916,57916,57916,60671,57916,57916,57916,57916,57916,57916,57916,57916,61118,57916,57916,57916,57916,57916,57916,57916,57943,60712,57943,57943,57943,57943,57943,57943,60720,57943,57943,57943,57943,57943,57943,57943,57943,61340,57943,57943,528,57893,0,0,0,57893,57893,57893,61094,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,57916,61232,57916,57916,57916,57916,61233,61234,57916,57916,57916,528,528,57893,57893,57893,57893,57893,57893,57893,61513,57893,61515,57893,57893,57893,57893,57893,59894,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,0,57916,57916,58335,57916,57916,528,528,61559,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61567,61624,57916,57916,57916,57916,57943,61628,57943,57943,57943,57943,0,0,0,0,528,4272,528,528,528,528,57893,61620,57893,57893,57893,57893,57916,0,389,341,0,0,0,0,0,0,0,0,0,0,0,0,0,2801,0,0,463,479,479,479,463,463,463,463,463,463,463,463,463,463,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,539,57905,539,57905,539,539,57905,539,539,57928,57905,539,539,57905,57905,57905,57905,57955,57955,57905,57905,57905,57905,57955,57955,57905,539,57905,57905,57928,57905,57905,57905,57905,57905,57905,57905,57928,57928,57905,57905,57955,57905,57905,57905,1,24578,3,155942,156282,296,0,0,0,0,0,302,303,0,0,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3427,0,0,0,662,0,662,0,0,0,0,0,0,0,0,662,0,0,0,0,0,6225920,4358144,5062656,4358144,4358144,4358144,4358144,4358144,6225920,0,6086656,528,528,528,528,858,528,528,874,528,528,528,528,528,528,528,528,2913,528,528,528,528,528,528,528,57916,58353,57916,57916,58369,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61575,57943,57943,57943,0,1189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3451,0,0,1318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3480,0,0,0,1334,0,0,0,0,0,528,528,528,528,528,528,528,528,2876,528,528,528,528,528,528,528,528,528,1352,528,528,528,528,528,528,528,528,528,528,528,528,2469,528,528,528,528,528,528,1391,528,528,528,528,528,528,528,528,528,528,528,528,528,3493,528,528,528,528,1410,528,528,528,528,528,1418,528,528,528,528,528,528,528,1379,528,528,528,528,528,528,528,528,1954,528,528,1957,528,528,528,528,58773,914,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58791,57893,57893,57893,58857,57893,57893,57893,57893,57893,57893,57893,50676,58773,990,57916,57916,57916,57916,57943,57943,57943,60412,57943,60413,57943,57943,57943,57943,57943,57943,57943,58471,57943,57943,57943,57943,528,528,528,901,57943,57943,57943,57943,59039,57943,57943,57943,57943,57943,59047,57943,57943,57943,57943,57943,57943,59563,59564,57943,57943,57943,57943,57943,57943,57943,57943,57943,61484,0,0,4143,4144,0,0,0,1727,0,0,0,0,1734,0,0,0,0,0,0,0,0,0,2370,0,0,0,0,0,0,528,1916,528,528,528,528,528,528,528,528,528,528,528,528,1927,528,528,0,57893,57893,57893,58319,57893,57893,155942,1151,0,302,0,0,306,307,0,0,0,0,0,0,0,0,0,0,650,0,0,0,0,0,2351104,0,0,0,0,0,0,0,0,0,4358144,59359,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59370,57893,57893,57893,50676,0,57916,59433,57916,57916,57916,57916,57916,57916,57916,59440,57916,57943,57943,57943,59544,57943,57943,57943,57943,57943,57943,57943,57943,57943,59555,57943,57943,528,1714,528,1716,528,528,59063,57893,57893,59065,57893,57893,1151,0,57943,57943,57943,59577,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61143,57943,57943,0,0,2379,2380,0,0,0,0,0,2386,0,0,0,0,0,0,0,2785,0,0,0,0,0,0,0,0,1753,0,0,0,0,0,0,0,528,2474,528,528,528,528,2479,528,528,528,528,528,528,528,528,528,1396,528,528,528,1403,1405,528,2501,0,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60878,57893,57893,57893,57893,57893,57893,59906,57893,57893,57893,57893,59911,57893,57893,57893,57893,57893,57893,2999,0,57916,57916,57916,57916,57916,57916,57916,57916,57943,61327,57943,57943,61329,57943,57943,57943,57916,59964,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59506,57916,57943,60047,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60070,60071,57916,57916,57916,57916,61115,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58885,58892,57916,57916,57916,0,3925,3675,0,0,0,0,0,0,0,0,0,0,0,0,0,2838,2839,0,3949,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58850,57893,57893,57893,61308,57893,57893,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58886,57916,57916,57916,57916,4001,0,0,0,0,3675,0,0,0,0,0,0,0,0,528,528,528,528,528,528,1895,528,528,528,4016,528,528,528,528,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,57893,61375,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,61461,57916,61391,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61407,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,0,0,0,0,0,2316,0,0,0,0,0,0,0,0,0,0,3838,0,0,0,0,0,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61566,57916,0,0,0,0,57893,57943,57943,58410,57943,57943,57943,57943,57943,57943,58443,0,0,0,390,391,393,343,0,0,0,0,0,0,342,0,0,0,343,0,0,0,0,0,0,0,0,0,2787,0,0,0,0,0,0,0,0,0,390,0,0,0,0,0,0,343,0,0,0,390,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,310,0,0,0,0,1749,0,0,0,0,0,0,0,0,0,0,0,540672,0,0,0,0,0,0,480,480,480,480,496,496,496,496,496,496,496,496,496,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,540,57906,540,57906,540,540,57906,540,540,57929,57906,540,540,57906,57906,57906,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,57929,57906,57906,57906,57906,57906,57906,57906,57929,57929,57906,57942,57956,57942,57942,57942,57942,57956,57956,57942,57942,57942,57942,57956,57956,57942,540,57906,57906,368,368,0,0,0,0,0,706,0,0,0,0,0,0,0,0,740,0,0,0,0,740,0,746,715,0,717,0,0,0,0,0,0,0,725,0,0,0,0,0,0,804,0,0,0,0,0,0,804,0,528,0,0,813,0,796,0,0,815,0,667,0,792,0,0,0,0,0,836,0,0,0,0,796,663,840,0,528,0,792,815,0,815,813,0,0,0,827,0,0,0,663,830,0,0,0,0,131072,0,0,0,0,0,0,0,444,0,0,0,0,0,690,691,0,0,0,0,696,0,0,0,368,843,528,528,528,859,528,528,875,528,528,528,528,889,528,528,528,528,528,3245,528,528,528,528,528,528,528,528,528,528,528,1398,528,528,528,528,528,907,528,528,57893,57893,58261,57893,57893,57893,58278,57893,57893,58294,57893,57893,57893,50676,0,59432,57916,59434,57916,59435,57916,59437,57916,59439,57916,57916,57893,57943,57943,57943,57943,57943,57943,57943,59534,57943,57943,57943,57943,57943,57943,59594,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60467,57943,57943,57943,57943,57943,57893,57893,58308,57893,57893,57893,57893,58326,57893,57893,0,57916,57916,58337,57916,57916,57916,57916,57943,57943,60411,57943,57943,57943,57943,57943,57943,57943,57943,57943,59044,57943,57943,57943,57943,57943,57943,57916,58354,57916,57916,58370,57916,57916,57916,57916,58384,57916,57916,57916,57916,58402,57916,0,0,0,0,57893,57943,57943,58411,57943,57943,57943,58427,57943,57943,57943,57943,57943,59005,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59008,57943,57943,57943,57943,57943,57943,57943,57943,58459,57943,57943,57943,57943,58477,57943,57943,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,1151,0,0,0,1170,0,0,0,0,0,0,0,1172,0,0,0,0,0,0,806,0,0,0,0,787,0,806,0,528,1293,0,0,0,0,0,0,0,0,0,0,0,0,1305,0,0,0,0,0,6307840,0,0,6356992,6381568,6397952,4800512,4808704,0,0,4890624,0,4947968,0,0,0,5046272,0,0,0,0,5185536,0,5234688,5300224,0,0,0,0,1210,0,0,0,0,0,0,0,0,0,1305,0,0,0,0,0,2343,0,0,0,0,0,2347,0,0,2349,0,0,1333,0,0,0,0,0,0,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,1353,528,528,528,528,528,528,528,528,528,528,528,528,2901,528,528,528,528,528,528,1377,528,528,528,528,528,528,528,528,528,528,528,528,528,3724,528,528,58773,914,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58792,0,0,1777,0,0,1780,0,1782,0,0,0,0,0,0,0,0,753,0,0,0,0,0,0,0,0,1833,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3667,3668,528,1898,528,528,528,528,528,528,528,528,1909,528,528,528,528,528,868,528,528,528,528,528,887,528,528,528,528,59341,57893,57893,57893,57893,57893,57893,57893,57893,59352,57893,57893,57893,57893,57893,57893,58325,57893,57893,57893,0,57916,57916,57916,57916,57916,57943,57943,57943,57943,59578,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60056,57943,57943,57943,0,2394,0,0,0,0,0,0,0,0,0,0,0,0,0,2405,0,528,528,528,2422,2423,528,528,528,528,528,528,528,528,528,528,1366,528,528,528,528,528,0,0,0,57893,57893,57893,59852,57893,59854,57893,57893,57893,57893,57893,57893,57893,59349,57893,57893,57893,57893,57893,57893,57893,57893,60647,57893,57893,57893,57893,57893,57893,57893,57893,59903,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59405,57893,0,2780,0,0,2783,0,0,0,0,0,0,2788,0,0,0,2791,2792,0,0,0,0,0,0,0,0,0,0,0,0,0,2802,0,0,0,0,131072,0,0,0,0,0,0,0,448,0,0,0,0,0,2307,0,0,0,0,0,0,0,0,0,0,3674,0,0,0,0,0,0,2817,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3677,0,0,0,2843,0,0,0,0,0,0,0,0,2851,0,0,0,0,0,0,3448,0,0,0,0,0,0,0,0,0,1287,1288,0,0,0,0,0,0,2857,0,0,0,0,2860,0,0,0,0,0,0,0,0,0,2862,0,0,0,0,0,0,2868,0,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,57893,57893,57893,57893,2879,528,528,2882,2883,528,528,528,528,528,2888,528,2890,528,528,528,528,528,3487,528,528,528,528,528,528,528,528,528,528,2468,528,528,528,528,528,528,2894,528,528,528,528,528,528,528,528,528,2900,528,528,528,528,528,1903,1904,528,528,528,528,1911,528,528,528,528,528,1935,528,528,528,1940,528,528,528,528,528,528,2897,528,528,528,528,528,528,528,528,528,528,3858,528,57893,57893,57893,57893,528,528,528,528,2908,528,528,528,528,528,528,2916,528,528,528,528,528,2439,528,528,528,528,2444,528,528,528,528,528,528,61594,57893,57893,57893,57893,57893,57893,57893,61600,57916,528,2921,528,528,528,528,528,528,528,528,528,528,528,528,528,528,1387,528,57893,60297,57893,60299,57893,57893,57893,57893,60303,57893,57893,57893,57893,57893,57893,57893,59382,57893,57893,57893,57893,57893,57893,57893,57893,59398,57893,57893,57893,57893,57893,57893,57893,57893,57893,60309,57893,57893,57893,57893,57893,57893,57893,57893,57893,60318,57893,57893,57893,0,0,0,2593,57916,57916,57916,57916,57916,57916,57916,57916,57916,60704,57916,57943,57943,57943,57943,57943,57943,57943,60957,57943,57943,57943,57943,57943,57943,57943,57893,57893,57893,60326,57893,57893,57893,57893,57893,60331,57893,57893,57893,57893,57893,57893,58837,57893,57893,57893,57893,57893,57893,57893,58851,57893,60355,57916,57916,60358,60359,57916,57916,57916,57916,57916,60364,57916,60366,57916,57916,57916,57916,57916,60925,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58884,57916,57916,57916,57916,57916,57916,60370,57916,57916,57916,57916,57916,57916,57916,57916,57916,60376,57916,57916,57916,57916,57916,58960,57916,0,57893,57943,57943,57943,57943,57943,57943,57943,57943,60732,57943,57943,57943,57943,57943,57943,57943,57943,60450,57943,57943,57943,57943,57943,57943,60458,57916,57916,60398,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59505,57916,57916,57943,57943,57943,60420,57943,57943,60423,60424,57943,57943,57943,57943,57943,60429,57943,60431,57943,57943,57943,57943,60435,57943,57943,57943,57943,57943,57943,57943,57943,57943,60441,57943,57943,57943,57943,57943,61150,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,528,3133,528,528,57893,57893,60480,57893,0,0,3161,3162,3163,0,0,0,0,0,0,0,0,0,0,0,2311,0,0,0,0,0,3176,0,0,0,0,0,0,0,3182,0,3184,0,0,0,0,0,0,3458,0,0,0,0,0,0,0,0,0,786,0,0,0,0,0,0,0,0,0,0,0,802,0,807,0,810,3188,0,0,0,0,3193,0,0,3196,0,0,0,0,0,0,0,389,0,139264,147456,0,0,0,0,0,528,528,3263,0,0,60608,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61086,57893,57893,57893,57893,57893,57893,57893,60653,57893,57893,60656,0,0,60657,57916,57916,57916,57916,57916,57916,57916,58880,57916,57916,57916,58889,57916,57916,57916,57916,57916,57916,60689,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59986,57916,57916,57916,57916,60699,57916,57916,60702,57916,57916,60705,60706,57943,57943,57943,57943,57943,57943,57943,60052,57943,57943,57943,57943,57943,57943,60057,57943,60727,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59031,57943,57943,57943,60738,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,58994,57943,57943,57943,57943,57943,57943,60748,57943,57943,60751,57943,57943,60754,3411,528,528,60758,57893,57893,57893,50676,2085,57916,57916,57916,57916,57916,59436,57916,57916,57916,57916,57916,57916,60373,57916,57916,57916,57916,57916,57916,57916,60379,57916,3429,0,0,0,0,3434,0,0,0,0,0,0,0,0,0,0,3675,0,0,0,0,0,0,0,0,528,528,0,0,0,3470,0,0,0,0,0,0,3477,0,0,3479,0,0,0,0,306,0,0,0,0,0,0,306,0,0,0,0,0,0,0,0,0,0,0,0,2852,0,0,0,528,528,3484,528,528,528,528,528,528,528,528,528,528,528,528,528,528,3259,528,3509,528,528,3511,528,528,528,528,528,528,528,528,528,528,528,57893,57893,57893,57893,61446,57893,57893,60868,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59928,57893,60894,57893,57893,60896,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60877,57893,57893,57893,57916,57916,60910,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60012,57916,57916,57916,60936,57916,57916,60938,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59485,57916,57916,57916,57916,57916,57943,57943,60952,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59009,57943,57943,57943,57943,57943,60978,57943,57943,60980,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60055,57943,57943,57943,60058,3661,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2312,3679,0,0,0,0,0,0,0,0,0,0,0,0,0,3691,0,0,0,0,131072,0,0,0,0,0,0,0,450,0,0,0,0,0,3457,0,0,0,0,3462,0,0,0,0,3466,3702,3703,528,528,528,528,3707,3708,528,528,528,528,528,3712,528,528,0,2932,0,0,0,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59859,57893,57893,528,57893,57893,57893,57893,57893,57893,57893,61073,61074,57893,57893,57893,57893,61078,61079,57916,57916,61102,61103,57916,57916,57916,57916,61107,61108,57916,57916,57916,57916,57916,61112,57943,57943,61136,61137,57943,57943,57943,57943,57943,61141,57943,57943,57943,57943,57943,57943,57943,60436,57943,57943,57943,57943,57943,57943,57943,57943,58476,57943,57943,57943,1139,528,528,528,57943,57943,61147,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,528,528,528,528,528,57893,57893,57893,0,0,3817,0,0,0,0,0,0,0,0,1165,0,0,0,0,0,0,0,0,0,3834,0,0,0,0,0,0,0,0,0,0,0,0,0,2865,0,0,57916,57916,57916,57916,61230,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59486,57916,57916,57916,57916,57943,61249,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60096,57943,0,0,3675,0,3928,0,0,0,0,0,0,0,0,0,0,0,2361,0,0,0,0,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61303,57893,57893,57893,50676,2086,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61236,61319,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,0,0,57943,57943,57943,61335,57943,57943,57943,57943,57943,57943,57943,528,57893,0,3999,0,0,0,0,131072,0,0,0,0,0,0,0,450560,0,0,0,0,0,372,0,0,0,0,0,0,0,0,0,0,2333,0,0,0,0,2338,0,4002,0,0,0,3675,0,0,0,0,0,0,0,0,528,528,528,1341,528,528,528,528,4014,528,528,528,528,4019,528,528,528,528,4024,528,528,57893,57893,61373,57893,57893,57893,57893,61378,57893,57893,57893,57893,61383,57893,57893,57893,57916,57916,61389,57916,57916,57916,57916,61394,57916,57916,57916,57916,61399,57916,57916,57916,57943,57943,61405,57943,57943,57943,57943,61410,57943,57943,57943,57943,61415,57943,57943,57943,0,0,0,0,0,2366,0,0,0,0,0,0,0,0,0,0,352256,0,352256,0,0,0,0,0,0,4078,0,0,4081,0,0,0,0,0,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,57916,528,528,4246,4247,528,528,57893,57893,57893,61596,61597,57893,57893,57893,57916,57916,57916,57916,57943,60410,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,58481,528,852,528,528,57916,61602,61603,57916,57916,57916,57943,57943,57943,61608,61609,57943,57943,57943,0,0,0,0,306,306,306,306,306,306,306,306,306,306,306,306,306,0,306,0,0,0,0,345,346,347,348,349,0,0,0,0,0,0,0,0,1181,0,0,0,0,0,0,0,0,0,349,348,131072,347,348,348,0,349,347,348,0,347,348,457,464,481,481,481,492,492,492,498,492,492,498,498,492,498,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,541,57907,541,57907,541,541,57907,541,541,57930,57907,541,541,57907,57907,57907,57907,57957,57957,57907,57907,57907,57907,57957,57957,57907,541,57907,57907,57930,57907,57907,57907,57907,57907,57907,57907,57930,57930,57907,57907,57957,57907,57907,57907,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,306,307,0,0,0,0,0,0,646,0,0,0,0,651,652,653,654,655,656,657,0,0,0,0,0,0,0,0,0,0,0,2388,0,0,0,0,0,0,0,672,673,0,675,676,0,0,0,0,0,682,0,0,0,0,307,0,0,0,0,0,0,307,0,0,0,0,0,0,0,0,0,0,0,0,352256,0,0,0,0,0,0,0,716,0,0,719,0,721,0,723,0,0,0,0,0,0,0,394,0,0,0,0,0,0,0,0,1222,0,0,0,0,0,0,0,0,0,733,0,0,0,0,0,0,0,0,0,0,0,0,0,3172,0,0,0,0,0,763,764,0,766,767,675,0,0,0,0,0,0,0,395,0,0,0,0,0,0,0,0,2319,0,0,0,0,0,0,0,0,0,0,782,783,0,785,0,0,0,0,764,0,0,791,0,0,0,0,131072,0,0,0,0,0,245760,0,0,0,0,245760,0,0,0,0,0,0,0,0,0,0,0,0,3171,0,0,0,0,692,0,0,0,764,0,0,0,0,0,0,0,0,757,821,0,0,0,757,0,0,824,699,0,0,0,829,0,0,0,831,0,0,0,692,699,0,0,692,829,829,0,0,0,0,0,528,528,528,528,528,528,2874,528,528,528,528,528,528,528,3489,528,528,528,528,528,528,528,528,3256,528,528,528,528,528,528,528,528,849,853,856,528,865,528,528,528,881,883,886,528,528,528,899,903,528,528,528,57893,57893,57893,58268,58272,58275,57893,58284,57893,57893,57893,58300,58302,58305,57893,57893,57893,58318,58322,57893,57893,57893,0,57916,57916,57916,58344,58348,58351,57916,58360,57916,57916,57916,58376,58378,58381,57916,57916,57916,58394,58398,57916,57916,57916,57916,58367,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59999,57916,57916,57916,57916,0,0,0,0,58409,57943,57943,57943,58419,58423,58426,57943,58435,57943,57943,528,3649,528,57893,60996,57893,0,0,0,0,0,0,0,0,1254,0,0,0,0,0,0,0,57943,58451,58453,58456,57943,57943,57943,58469,58473,57943,57943,57943,849,1140,528,899,903,1144,0,58489,58268,57893,58318,58322,58494,155942,1151,0,0,0,0,0,0,1179,0,0,0,0,0,0,0,0,0,1239,0,0,0,0,0,0,1278,0,0,0,0,1283,0,0,0,0,0,0,0,0,0,0,3675,0,3828,0,0,0,0,0,0,1321,0,0,0,0,0,0,0,0,0,0,0,0,1198,0,0,0,528,1375,528,528,528,1378,528,528,528,528,528,528,528,1385,528,528,0,2932,0,0,0,0,57893,57893,57893,57893,57893,57893,60282,57893,1389,528,528,528,528,528,528,528,528,528,528,528,1400,528,528,1407,58817,57893,57893,57893,57893,57893,57893,57893,58824,57893,57893,58828,57893,57893,57893,57893,57893,59895,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59898,59899,57893,57893,57893,57893,57916,57916,57916,58934,57916,57916,58941,57916,57916,57916,57916,57916,57916,57916,57916,57916,59984,57916,57916,57916,57916,57916,57916,57916,58955,57916,57916,57916,57916,57916,0,57893,57943,57943,57943,57943,57943,57943,57943,57943,61542,57943,57943,57943,0,4202,0,0,57943,57943,57943,59003,57943,57943,57943,59006,57943,57943,57943,57943,57943,57943,57943,59013,57943,57943,59017,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59029,57943,57943,57943,57943,57943,61337,57943,57943,57943,61341,57943,528,57893,0,0,0,0,3139,0,0,0,0,0,0,0,0,0,3149,57943,59036,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59050,57943,57943,57943,57943,57943,59019,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,58482,528,528,528,528,1822,0,1824,0,0,0,1826,0,746,0,0,0,0,0,0,0,399,0,0,404,0,0,0,0,0,1872,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2350,0,1757,0,0,0,0,0,0,528,1891,528,528,528,528,528,528,2440,528,528,528,528,528,528,528,528,528,528,2495,528,528,528,528,0,1897,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,1428,528,528,528,528,1919,528,528,528,528,528,528,528,528,528,528,1928,528,528,528,1932,528,528,1937,528,528,528,528,528,528,528,528,528,1419,528,528,528,528,528,528,528,528,528,528,58773,0,57893,59333,57893,57893,57893,57893,57893,57893,57893,59340,57893,57893,57893,59362,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59371,57893,57893,57893,57893,57943,57943,57893,57893,57893,57893,57943,57943,57893,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,61075,57893,57893,57893,57893,57893,58821,57893,57893,57893,58825,57893,57893,57893,57893,57893,57893,59348,57893,57893,57893,57893,57893,57893,57893,57893,57893,60875,57893,57893,57893,57893,57893,57893,57893,57893,59375,57893,57893,59380,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61457,57916,57916,57916,57916,57916,57916,57916,59462,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59471,57916,57916,57916,57916,58368,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60011,57916,57916,57916,57916,59475,57916,57916,59480,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59972,57916,57916,57916,59975,59558,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59567,57943,57943,57943,59571,57943,57943,59576,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59569,57943,57943,57916,57916,57916,59990,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58948,57916,57916,57916,57943,57943,57943,60073,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59010,57943,57943,57943,2804,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2376,57916,60409,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59030,57943,57943,57943,57943,60474,57943,57943,528,528,528,528,528,57893,57893,57893,57893,57893,2290,0,2291,0,0,3214,0,0,0,528,3218,528,528,528,528,528,528,528,528,528,528,1383,528,528,528,528,1388,3242,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,1962,57893,60633,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60335,57893,57916,57916,57916,57916,60682,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59998,57916,57916,57916,57916,0,0,3419,0,0,0,0,0,0,0,0,0,3425,0,0,0,0,0,2410,0,0,0,0,0,0,0,0,0,0,417792,309,310,0,0,0,0,3841,528,528,528,528,528,528,528,3846,528,528,528,528,528,528,2465,528,528,528,528,528,528,528,528,528,528,3943,528,3945,528,528,528,57893,57893,57893,57893,61208,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59369,57893,57893,57893,57893,57916,61227,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59524,57916,0,0,3675,3927,0,0,0,0,0,0,0,0,0,0,0,0,1266,0,0,0,528,528,528,3937,528,528,528,528,3941,528,528,528,528,528,3947,528,528,0,57893,57893,57893,58320,57893,57893,155942,1151,0,0,0,0,0,0,1751,0,0,0,0,0,0,0,0,0,754,0,0,0,0,0,0,528,528,57893,57893,57893,61296,57893,57893,57893,57893,61300,57893,57893,57893,57893,57893,58317,57893,57893,57893,57893,0,57916,57916,58336,57916,57916,61306,57893,57893,57893,57893,57916,57916,57916,61312,57916,57916,57916,57916,61316,57916,57916,57916,57916,58371,58373,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58945,57916,57916,57916,57916,57916,57916,57916,57916,61322,57916,57916,57916,57916,57943,57943,57943,61328,57943,57943,57943,57943,57943,57943,60981,57943,60983,57943,57943,57943,57943,57943,57943,57943,57943,60078,57943,57943,57943,57943,60083,57943,57943,61332,57943,57943,57943,57943,57943,61338,57943,57943,57943,57943,528,57893,0,0,0,0,0,2797,0,0,0,0,0,0,0,0,0,0,1881,0,0,0,0,0,528,528,528,4017,528,528,528,4021,528,528,528,528,528,57893,57893,57893,57893,57893,57893,58281,57893,57893,57893,57893,57893,57893,57893,61376,57893,57893,57893,61380,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,60939,57916,60941,57916,57916,57916,57916,57916,57916,57916,57916,58881,57916,57916,57916,57916,57916,57916,58896,57916,57916,61392,57916,57916,57916,61396,57916,57916,57916,57916,57916,57916,57943,57943,57943,61242,57943,57943,57943,61245,57943,57943,57943,57943,61408,57943,57943,57943,61412,57943,57943,57943,57943,57943,57943,0,0,0,0,0,2821,0,0,0,0,0,0,0,0,0,0,1739,0,0,0,0,0,0,4270,0,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,57916,61311,57916,57916,61313,57916,57916,57916,57916,57916,57916,59497,57916,57916,59500,57916,57916,57916,57916,57916,57916,57916,61526,57916,61528,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,60415,57943,57943,57943,57943,0,528,528,57893,57893,57916,57916,57943,57943,0,528,57893,57916,57943,4308,4309,61654,61655,61656,0,528,57893,57916,57943,0,528,57893,57916,57943,0,0,0,0,0,2831,0,0,0,0,0,0,0,0,0,0,1257,0,0,0,0,1262,0,350,0,408,0,0,0,0,0,0,0,0,0,0,408,0,350,0,139264,147456,0,0,0,0,0,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,542,57908,542,57908,542,542,57908,542,542,57931,57908,542,542,57908,57908,57908,57908,57958,57958,57908,57908,57908,57908,57958,57958,57908,623,57908,57974,57931,57908,57908,57908,57908,57908,57908,57908,57931,57931,57908,57908,57958,57908,57908,57908,57974,57974,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,0,131072,0,0,0,328,0,0,330,0,0,0,0,0,0,2847,2848,0,0,0,0,0,0,0,0,0,5808128,0,0,0,0,4792320,4833280,844,528,528,528,528,528,528,528,528,528,528,528,890,528,528,528,528,528,3499,528,528,528,528,528,528,528,528,528,3508,528,908,528,528,57893,57893,58262,57893,57893,57893,57893,57893,57893,57893,57893,57893,61222,57916,57916,57916,57916,57916,57916,57893,57893,58309,57893,57893,57893,57893,58327,57893,57893,0,57916,57916,58338,57916,57916,57916,57916,58877,57916,57916,57916,57916,58883,57916,57916,57916,57916,57916,57916,59993,59994,57916,57916,57916,57916,57916,57916,60001,57916,57943,57943,57943,57943,58460,57943,57943,57943,57943,58478,57943,57943,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,1151,1724,1173,0,0,0,0,1178,0,0,0,0,0,0,0,0,0,0,2310144,0,368,0,0,0,0,0,1173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2816,528,528,528,528,1354,528,528,528,528,1364,528,528,528,528,528,528,2491,528,2493,528,528,528,528,528,528,0,58773,914,57893,57893,57893,58779,57893,57893,57893,57893,57893,57893,57893,57893,57893,58793,57916,58874,57916,57916,57916,57916,57916,57916,57916,57916,57916,58888,57916,57916,57916,57916,57916,59448,57916,57916,57916,57916,57916,57916,57916,57916,57916,59459,58898,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59961,57916,58914,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59987,59988,58953,57916,57916,57916,57916,57916,57916,0,57893,57943,57943,57943,58968,57943,57943,57943,57943,57943,59041,57943,57943,57943,57943,57943,57943,57943,57943,59053,59054,0,1728,0,0,0,0,1735,0,0,0,0,0,0,0,0,0,3424,0,0,0,0,0,0,0,0,1761,0,0,0,0,0,0,0,0,0,0,0,0,0,3185,0,0,1775,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2840,0,0,2353,0,0,0,0,0,0,0,0,0,0,0,0,0,3201,0,0,2449,528,528,528,528,528,528,2454,528,2456,528,528,528,528,528,528,2884,528,528,528,528,528,528,528,528,528,528,2915,528,528,528,528,528,2502,0,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61387,57916,57916,57893,57893,57893,59880,57893,57893,57893,57893,57893,57893,59885,57893,59887,57893,57893,57893,0,0,2592,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,61470,57943,57943,57943,57943,57943,57943,59976,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60013,57916,60059,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59033,528,2906,528,528,528,528,528,528,528,528,528,528,528,528,528,528,1960,528,57916,57916,60383,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60367,57916,57916,0,0,3675,0,0,0,0,3931,0,0,3933,0,0,0,0,0,0,1192,0,0,0,1196,1197,0,0,0,0,528,3936,528,528,3938,528,528,528,528,528,528,528,528,528,528,528,528,3247,528,528,528,528,528,57893,61295,57893,57893,61297,57893,57893,57893,57893,57893,57893,57893,57893,57893,61456,57916,57916,57916,57916,57916,57916,0,0,800,0,800,0,0,0,0,0,0,0,0,800,0,0,0,0,307,307,307,307,307,307,307,307,307,307,307,307,307,0,307,0,528,528,528,528,860,528,528,528,528,528,528,528,528,528,528,528,528,3257,528,528,3260,57916,58355,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60368,57916,1161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3174,528,528,528,528,58773,1987,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59910,57893,57893,57893,57893,57893,57893,57893,57943,57943,60445,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59585,57943,57943,57893,61081,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60639,57893,0,0,0,351,0,0,0,0,0,0,0,0,0,0,0,0,1746,0,0,0,0,0,0,352,0,0,0,0,0,0,0,0,0,0,0,0,1756,1757,0,0,0,0,353,351,131072,0,351,351,0,353,0,351,0,0,351,353,351,0,0,0,351,351,351,351,351,351,351,351,505,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,543,57909,543,57909,543,543,57909,543,543,57932,57909,543,543,57909,57909,57909,57909,57959,57959,57909,57909,57909,57909,57959,57959,57909,543,57909,57909,57932,57909,57909,57909,57909,57909,57909,57909,57932,57932,57909,57909,57959,57909,57909,57909,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,811,812,0,0,0,0,0,0,758,0,0,817,0,0,0,0,0,0,4082,0,0,0,0,528,528,528,528,528,3221,528,3222,528,528,528,528,0,817,0,664,0,0,0,0,0,0,0,0,0,0,0,0,1787,0,0,0,832,0,0,0,0,0,0,812,0,0,0,0,0,0,0,528,528,528,528,528,2873,528,528,528,528,2877,528,528,528,0,2503,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61087,57893,57893,57893,57893,528,850,528,528,528,866,870,528,528,528,528,528,891,893,528,528,0,2932,0,0,0,0,57893,57893,57893,60280,57893,60281,57893,57893,57893,50676,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59473,904,528,528,528,57893,57893,58263,58269,57893,57893,57893,58285,58289,57893,57893,57893,0,2590,0,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,59970,57916,57916,57916,57916,57916,57916,57893,57893,58310,58312,57893,57893,58323,57893,57893,57893,0,57916,57916,58339,58345,57916,0,0,0,0,57893,57943,57943,58412,57943,57943,57943,58429,57943,57943,58445,57916,57916,58361,58365,57916,57916,57916,57916,57916,58386,58388,57916,57916,58399,57916,57916,57916,57916,58904,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60945,57916,57916,57916,57916,57943,57943,57943,57943,58461,58463,57943,57943,58474,57943,57943,57943,850,528,893,528,528,0,58270,58266,58491,58314,57893,57893,155942,1151,0,0,1154,0,0,0,0,0,245760,245760,245760,245760,245760,245760,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4358144,4358144,4358144,904,528,0,57893,58269,58312,57893,58323,57893,155942,1151,0,302,0,0,306,307,0,0,0,0,0,0,0,0,0,0,0,0,0,1772,0,0,0,0,0,1217,0,1219,0,1221,0,0,0,0,0,0,0,0,1286,0,0,0,0,0,0,0,0,1247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3839,0,1332,0,0,0,0,0,0,0,528,528,528,528,528,528,528,528,528,528,528,528,3850,528,528,1374,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2461,528,528,528,1412,528,528,528,528,528,528,528,528,1424,1425,528,528,0,57893,57893,57893,57893,57893,57893,294,1151,0,0,0,0,0,0,0,5480448,4358144,4358144,4358144,4358144,4857856,4874240,4358144,4358144,58773,914,57893,57893,57893,57893,58780,57893,57893,57893,57893,57893,57893,57893,57893,57893,60289,57893,57893,57893,57893,57893,60294,57893,57916,57916,58875,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60378,57916,57916,57916,57916,58932,57916,57916,57916,57916,57916,57916,57916,58946,57916,57916,57916,57916,57916,57916,61241,57943,57943,57943,57943,57943,57943,57943,61246,57943,57916,57916,57916,58958,58959,57916,57916,0,57893,57943,57943,57943,57943,58969,57943,57943,3648,528,528,60995,57893,57893,0,0,0,0,0,0,0,0,1815,0,0,0,0,0,0,0,57943,59e3,59002,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59602,57943,57943,0,1808,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212992,0,528,528,1966,528,528,528,528,528,528,528,528,528,1975,528,528,528,528,528,3513,3515,528,528,528,3518,528,3520,3521,528,57893,528,1981,528,528,58773,0,57893,57893,57893,57893,57893,57893,57893,59338,57893,57893,57893,50676,2087,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60674,57916,57916,57916,57916,57893,59409,57893,57893,57893,57893,57893,57893,57893,57893,57893,59419,57893,57893,57893,57893,57893,59907,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,0,57916,57916,58340,57916,57916,59425,57893,57893,50676,0,57916,57916,57916,57916,57916,57916,57916,59438,57916,57916,57916,57916,57916,61116,57916,57916,57916,57916,57916,57916,57916,57916,61124,57916,59509,57916,57916,57916,57916,57916,57916,57916,57916,57916,59519,57916,57916,57916,57916,59525,57943,57943,59559,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59620,57943,57943,2393,0,2395,0,0,0,0,0,0,0,0,0,0,2403,0,0,0,0,343,390,0,0,0,139264,147456,0,0,0,423,0,0,0,2408,2409,0,0,0,0,0,2413,0,0,0,0,0,0,0,3153,0,0,0,0,0,0,0,0,378,0,0,0,0,0,0,0,0,2419,528,528,528,528,528,528,2426,528,528,528,528,528,528,528,1394,528,528,528,528,528,528,528,528,2886,528,528,528,528,528,528,528,528,528,2450,528,528,528,528,528,528,528,528,2457,528,2459,528,2462,528,528,528,2476,528,528,528,528,528,528,528,528,528,528,528,528,528,61371,57893,57893,0,0,0,59849,57893,57893,57893,57893,57893,57893,57893,59857,57893,57893,57893,57893,57893,60301,57893,57893,57893,57893,57893,57893,57893,60306,57893,57893,59890,57893,59893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60304,57893,57893,57893,57893,59902,57893,57893,57893,57893,57893,59908,57893,57893,57893,57893,57893,57893,57893,57893,57893,60330,57893,57893,57893,60333,60334,57893,57893,57916,57916,59977,57916,59979,57916,59982,57916,57916,57916,57916,57916,57916,57916,57916,57916,60363,57916,60365,57916,57916,57916,57916,57916,57916,57916,57916,59991,57916,57916,57916,57916,57916,59997,57916,57916,57916,57916,57916,57916,61606,57943,57943,57943,57943,57943,57943,57943,0,0,57943,57943,60060,57943,60062,57943,60065,57943,57943,57943,57943,57943,57943,57943,57943,57943,59007,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60074,57943,57943,57943,57943,57943,60080,57943,57943,57943,57943,57943,57943,59612,57943,57943,57943,57943,57943,57943,57943,57943,57943,0,0,4240,0,0,0,528,0,0,0,2819,0,0,0,0,0,0,0,0,0,0,2827,0,0,0,0,131072,0,0,0,357,0,0,0,0,359,0,0,400,0,0,0,0,0,139264,147456,400,411,0,424,411,2841,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3187,528,2880,528,528,528,528,528,2885,528,528,528,528,528,528,528,528,3502,528,528,528,528,528,528,528,57893,57893,57893,60310,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60628,57893,57893,57893,57893,57916,60356,57916,57916,57916,57916,57916,60361,57916,57916,57916,57916,57916,57916,57916,57916,59953,57916,59955,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,60421,57943,57943,57943,57943,57943,60426,57943,57943,57943,57943,57943,57943,60064,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59566,57943,57943,57943,57943,57943,57893,60652,57893,57893,57893,57893,0,0,57916,57916,57916,57916,57916,60661,57916,60662,57916,57916,57916,57916,60701,57916,57916,57916,57916,57943,57943,57943,57943,57943,60710,57943,57943,57943,57943,57943,61481,57943,57943,61483,57943,0,0,0,0,0,0,0,2808,0,0,0,0,0,0,0,0,350,0,0,0,0,0,0,0,60711,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59587,528,3483,528,528,528,528,528,528,528,528,528,528,528,528,528,528,1978,528,60867,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59929,57916,60909,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60395,57916,57916,57943,60951,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60069,57943,57943,0,3670,0,0,0,0,0,0,0,0,0,0,0,0,0,0,278528,0,0,0,3675,0,0,0,3930,0,0,0,0,0,0,0,0,0,3476,0,0,0,0,0,0,3935,528,528,528,528,3939,528,528,528,528,528,528,528,528,528,3948,528,528,61294,57893,57893,57893,57893,61298,57893,57893,57893,57893,57893,57893,57893,57893,60342,57893,57893,0,0,0,3e3,0,57893,61307,57893,57893,57893,61310,57916,57916,57916,57916,61314,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,0,0,0,0,528,528,528,3219,528,528,528,528,528,3224,528,528,57916,57916,57916,57916,61323,57916,57916,57916,61326,57943,57943,57943,57943,61330,57943,57943,57943,57943,57943,60089,60090,60091,57943,57943,57943,57943,57943,57943,57943,57943,57943,59615,57943,57943,57943,57943,59621,57943,4090,528,528,528,528,528,528,528,528,528,57893,57893,57893,57893,57893,61447,0,0,0,4149,0,528,528,528,528,528,528,528,528,528,528,528,528,528,3851,528,528,528,528,528,4248,528,57893,57893,57893,57893,57893,61598,57893,57893,57916,57916,57916,57916,58919,57916,57916,58923,57916,57916,57916,57916,57916,57916,57916,57916,61572,61573,57916,57916,57943,57943,57943,57943,57916,57916,57916,61604,57916,57916,57943,57943,57943,57943,57943,61610,57943,57943,0,0,0,0,363,0,0,0,0,139264,147456,0,0,0,0,0,0,1307,0,528,528,1339,528,1342,528,528,528,4269,0,4271,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,57916,0,0,0,0,57893,57943,57943,58413,57943,57943,57943,57943,57943,57943,57943,57943,61582,0,0,0,0,0,0,528,388,0,354,0,0,0,0,0,397,398,0,399,0,0,0,0,0,0,4208,528,528,528,528,528,528,528,528,528,1380,528,528,528,528,528,528,371,379,407,0,0,0,371,0,0,354,0,0,0,371,0,410,412,0,371,399,0,0,371,379,0,139264,147456,399,410,0,0,410,0,0,0,433,131072,0,433,433,443,0,0,433,0,412,433,0,0,0,0,131072,0,0,0,438,0,0,0,0,0,311,0,0,0,0,2796,0,0,0,0,0,0,0,0,0,0,0,450560,450560,0,0,0,465,0,0,0,493,493,493,493,493,493,493,493,493,493,515,515,515,515,515,527,515,515,515,527,515,515,515,515,515,515,544,57910,544,57910,544,544,57910,544,544,57933,57910,544,544,57910,57910,57910,57910,57960,57960,57910,57910,57910,57910,57960,57960,57910,624,57910,57975,57933,57910,57910,57910,57910,57910,57910,57910,57933,57933,57910,57910,57960,57910,57910,57910,57975,57975,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,0,131072,0,0,0,441,342,0,0,0,453,0,342,343,344,0,0,0,0,0,0,0,0,0,0,0,0,0,2853,0,0,0,306,307,0,0,0,643,0,0,0,0,0,0,0,0,0,3687,0,0,0,0,0,0,669,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3428,845,528,528,528,528,528,528,876,878,528,528,528,528,528,528,528,1415,528,528,528,528,528,528,1426,528,528,528,528,528,57893,57893,58264,57893,57893,57893,57893,57893,57893,58295,58297,57893,57893,57893,57893,58803,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59384,57893,57893,57893,57893,58448,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,528,528,528,528,57893,57893,57893,57893,57893,2290,1725,2291,0,0,0,0,0,1309,1335,1336,0,1309,528,528,528,528,528,528,1344,528,528,528,528,528,3706,528,528,528,528,528,528,528,528,528,528,528,1974,528,528,528,528,528,528,1348,528,528,1359,528,528,1363,528,528,528,528,528,528,528,1416,528,528,528,528,528,528,528,528,3709,528,528,528,528,528,528,528,58773,914,57893,57893,57893,57893,57893,57893,57893,58783,57893,57893,57893,58787,57893,57893,57893,57893,57893,60623,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58845,57893,57893,57893,57893,57893,58798,57893,57893,58802,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60638,57893,57893,57893,57893,57916,58916,57916,57916,57916,58920,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59469,57916,57916,57916,57916,57916,58972,57943,57943,57943,58976,57943,57943,58987,57943,57943,58991,57943,57943,57943,57943,57943,57943,60076,60077,57943,57943,57943,57943,57943,57943,60084,57943,59014,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59604,1745,1746,0,0,0,0,0,0,0,0,0,0,0,0,0,0,507904,0,0,0,0,1778,0,0,0,0,0,0,0,0,0,0,0,0,1828,0,0,0,1791,0,1793,0,0,0,1797,0,0,0,1801,0,0,0,1805,0,0,0,0,131072,0,0,0,442,0,0,0,449,0,0,0,0,0,2846,0,0,0,0,0,0,0,0,0,0,1224,0,0,0,0,0,1980,528,528,528,58773,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60625,57893,57893,57893,57893,57893,57893,57893,57943,57943,57943,57943,59545,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60068,57943,57943,57943,0,0,2314,0,2315,0,0,0,0,0,0,0,0,0,0,0,262738,0,0,0,0,2377,0,0,0,0,0,0,2384,0,0,0,0,0,0,0,0,1326,1327,0,0,1167,0,0,0,0,528,528,2421,528,528,528,528,528,528,528,528,528,528,528,528,888,528,528,528,528,528,528,528,2489,528,528,528,528,528,528,528,528,528,528,0,0,57893,57893,57893,57893,60611,57893,57893,57893,57893,57893,57893,59868,57893,57893,57893,57893,57893,57893,57893,57893,57893,58330,0,57916,57916,57916,57916,58347,0,0,0,57893,57893,59851,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60901,57893,57893,57893,57893,57893,57893,57893,60113,0,0,1729,0,0,1736,0,0,0,0,0,0,0,0,0,139264,147456,0,0,0,0,0,0,0,2858,0,0,0,0,0,0,0,0,0,2864,0,0,0,0,0,3152,0,0,0,0,0,0,0,0,0,3158,57893,57893,57893,57893,60311,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60890,57893,60892,57893,57893,60323,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60295,60443,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60455,57943,57943,57943,57943,57943,59593,57943,57943,59596,57943,57943,57943,57943,57943,57943,57943,57943,59551,57943,57943,57943,57943,57943,57943,57943,57943,59565,57943,57943,57943,57943,57943,57943,57943,57943,59580,57943,57943,57943,57943,57943,57943,57943,57943,59614,57943,57943,57943,57943,57943,57943,57943,57943,60037,57943,57943,60041,57943,57943,57943,60045,0,0,3190,0,0,0,0,3195,0,0,0,0,0,0,0,0,1783,1784,1785,0,0,0,0,0,3250,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2472,57893,57893,60642,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61385,57893,57916,57916,57916,0,3468,3469,0,0,0,0,3474,0,0,0,0,0,0,0,0,1799,0,0,0,0,0,0,0,0,0,3681,0,0,0,3684,0,0,0,0,0,0,0,0,3692,57893,61092,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,0,0,0,0,4290,528,3813,57893,57893,61159,3816,0,0,0,0,3820,0,0,0,0,0,0,1236,0,0,0,0,0,0,0,0,0,2799,0,0,0,0,0,0,0,3833,0,0,0,0,3837,0,0,0,0,0,0,0,0,3840,0,528,528,528,3842,528,528,528,3845,528,528,528,528,528,528,528,1938,528,528,528,528,528,528,528,528,3235,528,528,3238,528,528,528,528,57893,57893,57893,61207,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61084,57893,57893,57893,57893,57893,57893,57893,61226,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60407,57916,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61302,57893,61304,57893,57893,57893,57893,58819,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59913,57893,57893,57893,57893,57916,61320,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,4268,0,57943,57943,61334,57943,61336,57943,57943,57943,57943,57943,57943,528,57893,0,0,0,0,0,3164,0,0,0,0,3169,0,0,0,0,0,0,1220,0,0,0,0,0,1226,0,1228,0,4146,0,0,0,0,528,528,528,528,528,528,528,528,528,528,4160,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61516,57893,57893,57893,0,2591,0,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,59996,57916,57916,57916,57916,57916,57916,528,528,57893,57893,61560,57893,61561,57893,57893,57893,57893,57893,57893,57893,57893,57916,0,0,0,0,57893,57943,57943,58414,58420,57943,57943,57943,58436,58440,57943,57943,57943,57943,57943,61411,57943,61413,61414,57943,61416,57943,61418,0,0,0,0,0,1849,0,0,0,0,0,0,1748,0,0,0,0,0,1864,0,0,0,0,0,0,0,0,0,0,2401,0,0,0,0,0,57916,61568,57916,61569,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,61576,57943,57943,57943,57943,57943,61539,57943,61541,57943,57943,57943,57943,0,0,0,0,0,0,3435,0,0,0,0,0,0,0,0,0,1273,0,0,0,0,0,0,61577,57943,57943,57943,57943,57943,57943,57943,57943,0,0,0,0,0,0,528,528,528,2871,2872,528,528,528,528,528,528,528,528,528,528,3237,528,528,528,528,528,358,359,360,0,0,0,0,0,0,0,0,0,368,0,296,0,0,0,0,131072,0,352256,352256,0,0,0,352256,0,0,352256,0,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,0,482,482,482,0,0,0,0,0,0,0,0,0,0,516,516,520,520,520,520,520,516,520,520,520,516,520,520,520,520,520,520,545,57911,545,57911,545,545,57911,545,545,57934,57911,545,545,57911,57911,57911,57911,57961,57961,57911,57911,57911,57911,57961,57961,57911,625,57911,57976,57934,57911,57911,57911,57911,57911,57911,57911,57934,57934,57911,57911,57961,57911,57911,57911,57976,57976,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,0,245760,0,0,245760,0,0,245760,0,0,245760,0,245760,0,0,0,0,0,0,0,0,0,0,0,0,0,516567,516567,516567,0,306,307,0,0,0,0,644,0,0,0,0,0,0,0,0,1837,0,0,0,0,0,0,0,0,0,687,688,0,0,0,0,0,0,0,0,0,0,0,368,368,0,0,0,760,0,0,0,0,765,0,0,0,0,0,0,0,0,0,0,4841472,0,0,0,4898816,0,794,0,0,0,0,0,0,0,0,0,0,803,0,808,0,0,0,0,392,0,0,0,396,392,0,0,0,0,0,0,0,2823,0,0,0,0,0,0,0,0,677,0,0,0,0,0,0,0,0,0,0,820,0,0,0,0,0,644,0,0,0,0,0,0,0,3436,0,0,0,0,0,0,0,0,681,0,0,0,0,0,0,680,0,0,794,0,0,0,0,0,0,0,0,644,0,0,794,528,528,528,528,528,3717,528,528,528,528,528,528,528,528,528,528,1381,528,528,528,528,528,846,528,528,528,528,867,871,877,528,882,528,528,528,528,528,900,528,528,528,528,57893,57893,58265,57893,57893,57893,57893,58286,58290,58296,57893,58301,57916,57916,58362,58366,58372,57916,58377,57916,57916,57916,57916,57916,58395,57916,57916,57916,57916,57916,61231,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60686,57916,57916,57916,57916,57916,57943,58452,57943,57943,57943,57943,57943,58470,57943,57943,57943,57943,528,528,528,900,1215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3441,1264,0,0,0,0,0,1269,0,0,0,0,0,1274,0,0,0,0,0,3179,0,0,0,0,0,0,0,0,0,0,679,0,0,0,0,0,0,1294,0,0,1165,0,0,0,1300,0,1302,0,0,0,0,0,0,1284,0,0,0,0,0,0,0,0,0,1301,0,0,0,0,0,0,0,1300,1319,0,1322,0,0,0,1196,0,0,0,0,1330,0,0,1215,1330,1337,528,528,528,528,1343,528,528,528,528,1349,528,528,528,528,528,528,528,528,528,528,1370,528,528,0,57893,57893,57893,57893,57893,57893,155942,0,0,0,0,0,0,0,1285,0,0,0,0,1290,0,0,0,58773,914,58775,57893,57893,57893,57893,57893,58782,57893,57893,57893,57893,58788,57893,57893,57893,57893,57893,60872,57893,57893,57893,57893,57893,60876,57893,57893,57893,57893,57893,58860,57893,57893,57893,57893,57893,50676,58773,990,57916,57916,57916,58917,57916,57916,57916,57916,58922,57916,57916,57916,57916,57916,57916,57916,57916,57916,60403,57916,57916,57916,60406,57916,57916,58930,57916,57916,57916,58937,58939,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59957,57916,57916,57916,57916,57916,57943,57943,57943,57943,58977,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,58998,57943,59016,57943,57943,57943,57943,57943,59021,57943,57943,57943,59025,57943,57943,57943,59032,59034,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59622,57943,59057,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,1151,0,0,0,0,385024,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5259264,4358144,4358144,4358144,4358144,0,0,1729,0,0,0,0,1736,0,0,0,0,0,0,0,0,1880,0,0,0,0,0,0,0,0,0,1747,1748,0,0,0,0,0,1754,0,0,0,0,0,0,0,3447,0,0,0,0,0,3450,0,3452,0,1776,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5177344,0,0,0,0,0,1794,0,0,0,0,0,0,0,1802,1803,0,0,0,0,0,3207,0,0,0,0,0,0,0,0,0,0,3183,0,0,0,0,0,0,0,0,1810,0,0,0,0,0,0,0,0,0,0,0,0,1841,0,1843,0,0,0,1874,0,0,0,0,0,0,0,0,0,0,0,0,0,3213,0,0,528,528,528,1901,528,528,528,528,1907,528,528,528,528,528,528,528,2441,528,528,528,528,528,528,528,528,3720,528,528,528,528,528,528,528,528,528,528,1918,528,528,528,528,1922,528,528,528,528,528,528,528,2466,2467,528,528,528,528,528,528,528,1417,528,528,528,528,528,528,528,528,3856,528,528,528,57893,57893,57893,57893,528,528,528,528,1968,1969,528,528,528,528,528,528,528,528,528,528,1924,1925,528,528,528,528,57893,57893,59344,57893,57893,57893,57893,59350,57893,57893,57893,57893,57893,57893,57893,57893,61212,57893,57893,57893,57893,57893,57893,57893,57893,57893,59361,57893,57893,57893,57893,59365,57893,57893,57893,57893,57893,57893,57893,57893,59883,57893,57893,57893,59886,57893,57893,57893,57893,57893,57893,57893,57893,59378,57893,57893,57893,59383,57893,57893,57893,57893,57893,57893,57893,59909,57893,57893,57893,57893,57893,57893,57893,59915,57893,57893,57893,59412,59413,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59921,57893,57893,57893,57893,57893,57893,57893,57893,59351,57893,57893,57893,57893,57893,57893,57893,57916,59444,57916,57916,57916,57916,59450,57916,57916,57916,57916,57916,57916,57916,57916,57916,60685,57916,57916,57916,57916,57916,57916,57916,59461,57916,57916,57916,57916,59465,57916,57916,57916,57916,57916,57916,57916,57916,57916,60943,57916,57916,57916,57916,57916,57916,57916,57916,57916,59478,57916,57916,57916,59483,57916,57916,57916,57916,57916,57916,57916,57916,60021,57943,57943,57943,57943,57943,57943,57943,60029,57916,57916,59512,59513,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59470,57916,57916,57916,57943,57943,57943,57943,59546,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59557,57943,57943,57943,57943,59561,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60082,57943,57943,57943,57943,59574,57943,57943,57943,59579,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60735,57943,57943,57943,57943,57943,59608,59609,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60095,57943,57943,2302,2303,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5767168,0,2339,0,0,2341,2342,0,0,0,0,0,0,0,0,0,0,0,335872,0,0,0,0,528,2434,528,528,2438,528,528,528,2442,528,528,528,528,528,528,528,2912,528,528,528,528,528,528,528,528,528,3857,528,528,57893,57893,57893,57893,528,528,528,528,2452,528,528,528,2455,528,528,528,528,528,528,528,2925,528,528,528,2928,528,528,528,528,528,2487,528,528,528,528,528,2492,528,528,528,528,528,528,528,0,0,57893,57893,57893,60610,57893,57893,57893,57893,57893,60615,57893,0,2503,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60288,57893,57893,60291,60292,57893,57893,57893,57893,57893,57893,57893,57893,59865,57893,57893,59869,57893,57893,57893,59873,57893,57893,57893,57893,57893,60312,57893,57893,57893,57893,57893,57893,57893,60320,57893,57893,59916,57893,57893,57893,57893,59920,57893,57893,57893,57893,57893,59925,57893,57893,57893,57893,57893,60328,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58867,50676,58773,990,58870,57916,57916,57916,57916,57916,60005,57916,57916,57916,57916,60009,57916,57916,57916,57916,57916,60014,57943,57943,57943,57943,60088,57943,57943,57943,57943,60092,57943,57943,57943,57943,57943,60097,2856,0,0,0,0,0,0,0,0,0,0,2863,0,0,0,0,0,0,212992,0,0,0,0,0,212992,212992,212992,212992,2893,528,528,528,528,2896,528,528,2898,528,2899,528,528,528,528,528,1356,528,1361,528,528,1365,528,528,1368,528,528,528,528,528,2907,528,528,2911,528,528,528,528,528,528,528,528,528,2494,528,528,2497,2498,528,0,2920,528,528,528,2923,528,528,528,528,528,528,528,528,528,528,528,528,3506,3507,528,528,57893,60308,57893,57893,57893,57893,57893,57893,57893,57893,57893,60317,57893,57893,60321,57893,57893,57893,57893,58835,57893,57893,57893,58842,58844,57893,57893,57893,57893,57893,57893,59381,57893,57893,57893,57893,57893,57893,57893,57893,57893,60902,57893,57893,60905,57893,57893,57893,0,57916,57916,60346,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60354,60369,57916,57916,57916,57916,60372,57916,57916,60374,57916,60375,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,4288,0,0,0,528,57916,57916,57916,57916,60384,57916,57916,60388,57916,57916,57916,57916,57916,57916,57916,57916,60402,57916,57916,57916,57916,57916,57916,57916,57916,59995,57916,57916,57916,57916,6e4,57916,57916,57916,60397,57916,57916,57916,60400,60401,57916,57916,57916,57916,57916,57916,57916,57916,57916,60683,57916,57916,57916,57916,57916,57916,57916,57916,59452,57916,57916,57916,57916,57916,57916,57916,57943,57943,60419,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60469,57943,57943,57943,57943,57943,60434,57943,57943,57943,57943,60437,57943,57943,60439,57943,60440,57943,57943,57943,57943,57943,60422,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61155,57943,57943,57943,528,57943,57943,57943,57943,60462,57943,57943,57943,60465,60466,57943,57943,57943,57943,57943,57943,57943,60752,57943,57943,528,528,528,57893,57893,57893,0,0,0,0,0,3658,0,0,3228,528,528,528,528,3233,528,528,528,3236,528,528,528,528,528,528,3255,528,528,528,528,528,528,528,528,528,528,2482,528,528,528,528,528,3261,528,528,0,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60616,57893,60619,57893,57893,57893,57893,60624,57893,57893,57893,60627,57893,57893,57893,57893,57893,58805,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,61460,57916,57893,57893,57893,60654,57893,57893,0,0,57916,57916,57916,57916,57916,57916,57916,57916,60692,57916,57916,57916,57916,57916,57916,57916,57916,59499,57916,57916,57916,57916,57916,57916,57916,57916,57916,60665,57916,60668,57916,57916,57916,57916,60673,57916,57916,57916,60676,57916,57916,57916,57916,58935,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58887,57916,57916,57916,57916,57943,57943,57943,60714,57943,60717,57943,57943,57943,57943,60722,57943,57943,57943,60725,57943,57943,57943,57943,57943,61580,61581,57943,57943,0,0,0,0,4242,0,528,528,528,528,528,528,528,528,2427,528,528,528,528,2431,528,0,3454,0,3455,0,0,0,0,0,0,0,0,0,0,0,0,1883,0,0,0,528,528,528,3485,528,528,528,528,528,528,528,528,528,528,528,528,1384,528,528,528,528,528,3497,528,528,528,528,528,528,528,528,3505,528,528,528,528,528,2453,528,528,528,528,528,528,528,528,528,528,1382,528,528,528,1386,528,57893,57893,60869,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60637,57893,57893,57893,57893,57893,57893,57893,57893,60314,57893,57893,57893,57893,57893,57893,57893,57893,60341,57893,57893,57893,0,2999,0,0,0,57893,60881,57893,57893,57893,57893,57893,57893,57893,57893,60889,57893,57893,57893,57893,57893,58820,57893,57893,57893,57893,57893,57893,57893,58829,57893,57893,57916,57916,57916,60911,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59503,57916,57916,57916,57916,57916,60923,57916,57916,57916,57916,57916,57916,57916,57916,60931,57916,57916,57916,57916,57916,59481,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58911,57916,57916,57916,57916,57916,57916,57943,57943,57943,60953,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60094,57943,57943,57943,57943,57943,57943,60965,57943,57943,57943,57943,57943,57943,57943,57943,60973,57943,57943,57943,57943,57943,60050,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60745,57943,57943,57943,0,3680,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3439,0,0,0,0,0,3693,3694,0,0,0,0,528,528,528,528,528,528,528,2875,528,528,528,528,528,528,528,528,3704,528,528,528,528,528,528,528,528,528,528,528,528,528,528,3494,528,528,3714,528,528,528,528,528,3719,528,3721,528,528,528,528,528,528,3488,528,528,528,528,528,3492,528,528,528,61091,57893,61093,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,61131,61132,57943,57943,57916,57916,57916,57916,61104,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61110,57916,57916,57916,57916,57916,57916,57916,61114,57916,57916,57916,57916,57916,57916,61120,57916,61122,57916,57916,57916,57916,57916,61324,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,60970,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61149,57943,61151,57943,57943,57943,57943,57943,57943,57943,57943,528,2761,528,528,528,57893,60110,57893,57893,528,528,57893,57893,57893,0,0,0,3818,0,0,0,0,0,0,0,722,0,724,0,0,0,0,0,0,0,0,3823,0,0,0,0,0,0,0,3675,0,0,0,0,3831,0,528,528,528,528,528,3843,528,528,528,3847,528,528,528,528,528,1357,528,528,528,528,528,528,528,528,528,528,528,1422,528,528,528,528,57893,61205,57893,57893,57893,61209,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60886,57893,57893,57893,57893,57893,57893,57893,57893,59896,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61218,57893,57893,57893,57893,57916,57916,57916,57916,57916,61224,57916,0,0,0,0,57893,57943,57943,58415,57943,57943,57943,57943,57943,57943,58446,57916,57916,61228,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60697,57916,57916,57916,61237,57916,57916,57916,57916,57943,57943,57943,57943,57943,61243,57943,57943,57943,61247,528,4162,57893,57893,57893,61510,57893,57893,57893,57893,57893,57893,57893,57893,61518,57893,57893,57893,57893,58858,57893,57893,57893,57893,57893,57893,50676,58773,990,57916,57916,57916,57916,58903,57916,57916,57916,57916,57916,57916,57916,57916,57916,58913,57916,57916,57916,57916,61523,57916,57916,57916,57916,57916,57916,57916,57916,61531,57916,57943,57943,57943,57943,57943,60955,57943,57943,57943,57943,57943,57943,57943,57943,57943,59581,57943,57943,57943,57943,57943,57943,57943,61536,57943,57943,57943,57943,57943,57943,57943,57943,61544,57943,0,0,0,0,0,0,262144,262144,0,0,0,0,0,0,0,0,0,0,4203,4204,4205,0,4207,528,528,528,528,528,528,528,528,528,4213,4214,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,61564,61565,57893,57893,57916,0,0,0,0,57893,57943,57943,58416,57943,57943,57943,57943,58437,58441,58447,528,528,528,57893,57893,57893,57893,57916,57916,57916,57916,57943,57943,57943,57943,4298,0,528,4299,57893,61644,57916,61645,57943,61646,0,528,57893,57916,57943,0,528,528,528,528,528,528,2425,528,528,528,528,528,528,528,528,528,3246,528,528,528,528,528,528,0,0,0,361,362,0,0,0,0,0,0,0,368,0,296,0,0,0,0,393685,0,393685,393685,393685,0,393685,393685,393685,393685,393685,393685,0,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1731,0,0,0,0,0,0,0,1741,1742,0,0,0,0,0,278528,278528,0,0,0,0,0,0,0,0,0,416,416,0,0,0,0,0,426,426,0,0,131072,426,0,0,0,0,426,0,0,454,0,426,0,483,483,483,0,0,362,362,362,502,362,362,362,362,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,546,57912,546,57912,546,546,57912,546,546,57935,57912,546,546,57912,57912,57912,57912,57962,57962,57912,57912,57912,57912,57962,57962,57912,546,57912,57912,57935,57912,57912,57912,57912,57912,57912,57912,57935,57935,57912,57912,57962,57912,57912,57912,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,368,368,0,703,0,0,0,0,0,0,0,0,0,0,0,0,2298,0,0,0,905,528,528,528,57893,57893,57893,57893,57893,57893,57893,58287,57893,57893,57893,57893,57893,60340,57893,57893,57893,57893,57893,0,2999,0,0,0,57893,58306,57893,57893,57893,57893,58324,57893,57893,57893,0,57916,57916,57916,57916,57916,57943,57943,57943,61129,57943,57943,57943,57943,57943,57943,57943,57943,60741,57943,57943,57943,57943,57943,57943,57943,57943,60753,57943,528,528,528,57893,57893,57893,57916,57916,58363,57916,57916,57916,57916,57916,58382,57916,57916,57916,57916,58400,57916,57916,57916,57916,58936,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60392,57916,57916,57916,57916,57916,0,0,0,0,58306,57943,57943,57943,57943,57943,57943,57943,58438,57943,57943,57943,57943,57943,60448,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60427,57943,57943,57943,57943,57943,57943,57943,58457,57943,57943,57943,57943,58475,57943,57943,57943,528,528,528,528,2284,57893,57893,57893,57893,59633,2290,0,2291,0,0,905,528,0,57893,57893,57893,57893,58324,57893,155942,1151,0,1152,0,0,1157,0,0,0,1266,0,0,0,0,0,0,0,1266,0,0,0,0,0,0,450560,0,0,450560,0,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,1346,528,528,528,1355,528,528,528,528,528,528,528,528,528,528,528,528,3711,528,528,528,58773,914,57893,57893,57893,57893,57893,57893,57893,57893,57893,58785,57893,57893,57893,58794,57893,57893,58855,57893,57893,57893,57893,57893,57893,57893,57893,50676,58773,990,57916,57916,57916,57916,58938,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61121,57916,57916,57916,57916,57943,57943,58974,57943,57943,57943,58983,57943,57943,57943,57943,57943,57943,57943,57943,57943,59045,57943,57943,57943,57943,57943,57943,0,0,0,1730,0,0,0,0,1737,0,0,0,0,0,0,0,739,0,0,0,0,0,0,0,0,1271,0,0,0,0,0,0,0,0,0,0,1762,0,0,0,0,0,0,0,1770,1771,0,0,0,0,0,3422,0,0,0,0,0,0,0,3426,0,0,0,0,0,1834,0,0,0,0,0,0,0,1840,0,0,0,0,0,0,532480,0,0,0,0,0,0,0,0,0,694,0,0,0,0,0,368,0,0,1846,0,1848,0,0,0,0,0,0,0,0,0,0,0,376832,0,376832,0,0,1915,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2499,528,1930,528,528,528,528,528,528,528,528,528,528,528,1943,528,528,0,57893,57893,57893,57893,57893,57893,155942,1151,0,0,0,0,0,0,0,4857856,4874240,0,0,0,0,0,0,0,796,0,0,0,0,805,0,0,0,59373,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59386,57893,57893,57893,2588,0,0,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,60352,57916,57916,57916,57916,57916,57893,57893,59411,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59422,57893,57893,57893,57893,57893,60884,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60903,57893,57893,57893,57893,57893,57916,59511,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59522,57916,57916,57916,57916,57916,61395,57916,61397,61398,57916,61400,57916,61402,57943,57943,57943,3916,528,61261,57893,0,0,0,0,0,0,0,0,0,0,2774,0,0,0,0,59607,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59618,57943,57943,57943,57943,57943,58978,57943,57943,57943,57943,57943,57943,57943,57943,57943,58997,0,0,2326,0,0,0,0,0,0,0,0,0,0,0,0,0,221652,221652,221652,0,0,2504,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61097,57893,57893,57893,57916,57916,57916,57916,57916,528,3229,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2447,528,60618,57893,60620,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61211,57893,57893,57893,57893,57893,57893,57893,57893,59870,57893,57893,57893,57893,59875,57893,57893,57916,57916,57916,60667,57916,60669,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60404,57916,57916,57916,57916,57916,60698,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,60709,57943,57943,57943,57943,57943,60463,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59599,57943,57943,57943,59605,57943,57943,57943,57943,60716,57943,60718,57943,57943,57943,57943,57943,57943,57943,57943,57943,59046,57943,57943,57943,57943,57943,57943,57943,60747,57943,57943,57943,57943,57943,57943,57943,57943,528,528,528,57893,57893,57893,0,0,0,3656,0,0,0,0,0,0,0,3432,0,0,0,0,0,0,0,0,0,0,0,0,2323,2324,0,0,57943,57943,61250,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60724,57943,57943,0,4147,0,0,0,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,0,4161,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61517,57893,57893,57893,57893,57893,60898,60900,57893,57893,57893,57893,60904,57893,60906,60907,57893,57916,57916,57916,61627,57916,57943,57943,57943,57943,61631,57943,0,0,0,0,528,528,2870,528,528,528,528,528,528,528,528,528,528,2878,373,373,0,0,131072,373,0,0,0,0,373,0,0,0,0,373,547,57913,547,57913,547,547,57913,547,547,57936,57913,547,547,57913,57913,57913,57913,57963,57963,57913,57913,57913,57913,57963,57963,57913,547,57913,57913,57936,57913,57913,57913,57913,57913,57913,57913,57936,57936,57913,57913,57963,57913,57913,57913,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,528,528,528,528,861,528,528,528,528,528,528,528,528,528,528,528,528,3723,528,528,528,57916,58356,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60677,57916,57893,58799,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61221,57893,57916,57916,57916,57916,57916,57916,57916,57943,57943,60023,57943,57943,57943,57943,57943,57943,528,528,1931,528,528,528,528,528,528,528,528,528,528,528,528,528,1401,528,528,57893,59374,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59882,57893,57893,57893,57893,57893,57893,57893,57893,57893,60290,57893,57893,57893,57893,57893,57893,59474,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60920,57916,0,0,0,3824,0,3825,0,0,0,0,3675,0,0,0,0,0,0,0,0,0,0,0,0,0,1227,0,0,0,0,0,364,0,0,0,0,0,0,0,0,0,0,364,0,0,0,0,0,0,0,0,0,0,0,0,2335,0,0,0,365,0,0,0,0,364,0,0,0,139264,147456,0,0,0,0,0,0,1324,0,0,0,0,0,0,0,0,0,1166,0,0,0,0,0,0,0,0,0,434,131072,0,434,434,0,0,0,434,0,365,434,0,0,0,0,401408,0,0,0,0,0,0,0,0,0,0,0,0,6471680,0,0,0,466,0,0,0,494,494,497,497,497,497,503,504,497,497,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,548,57914,548,57914,548,548,57914,548,548,57937,57914,548,548,57914,57914,57914,57914,57964,57964,57914,57914,57914,57914,57964,57964,57914,626,57914,57977,57937,57914,57914,57914,57914,57914,57914,57914,57937,57937,57914,57914,57964,57914,57914,57914,57977,57977,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,0,459187,0,0,0,0,0,0,0,0,0,0,0,528,528,528,528,528,528,528,528,0,528,2420,528,528,528,528,528,528,528,528,528,528,528,528,528,1402,528,528,0,0,0,57893,59850,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60287,57893,57893,57893,57893,57893,57893,57893,57893,57893,60302,57893,57893,57893,57893,60305,57893,57893,60307,528,528,528,528,2895,528,528,528,528,528,528,528,528,528,528,528,528,4026,57893,57893,57893,57893,60337,57893,57893,57893,57893,57893,57893,57893,57893,57893,0,0,0,0,0,0,1781,0,0,0,0,0,0,0,0,0,139264,147456,0,0,335872,0,0,57916,57916,57916,57916,60371,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61401,57916,57943,57943,57943,368,368,0,0,0,0,705,0,0,0,0,0,0,0,0,0,139264,147456,0,0,540672,0,0,0,0,735,0,801,0,0,0,0,0,0,0,0,801,0,0,0,0,416,0,0,0,0,0,0,0,0,0,0,0,0,3464,0,0,0,528,528,528,528,862,528,528,528,528,528,528,528,528,528,528,528,528,61203,57893,57893,57893,57916,58357,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61111,57916,1202,0,0,0,0,0,0,0,0,0,0,368,368,0,0,0,0,0,0,0,0,709,0,0,0,0,0,0,1251,0,0,0,0,0,0,0,0,0,2810,0,0,0,0,0,0,58853,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,50676,58773,990,57916,57916,57916,57916,59463,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60696,57916,57916,57916,57916,59015,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60442,1726,0,0,0,0,1733,0,0,0,0,0,0,0,0,0,0,319488,319488,0,0,0,0,0,57916,57916,57916,59978,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59959,57916,57916,57916,57943,57943,57943,60061,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59011,57943,57943,57943,2779,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245760,528,528,2881,528,528,528,528,528,528,528,528,528,528,528,528,528,1404,528,528,57916,57916,60357,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60919,57916,57916,0,306,307,0,0,0,0,0,0,0,647,0,0,0,0,0,0,1813,0,0,0,0,0,0,0,0,0,787,0,0,0,0,0,0,906,528,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,57916,57916,906,528,0,57893,58490,57893,57893,58325,57893,155942,1151,0,0,0,0,0,0,1836,0,0,1838,0,0,0,0,0,0,0,2861,2813,0,0,0,0,0,2866,0,57893,57893,58856,57893,57893,57893,57893,57893,57893,57893,57893,50676,58773,990,57916,57916,57916,57916,59495,59496,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61574,57943,57943,57943,57943,0,0,1862,0,0,0,0,0,0,0,0,0,0,0,0,0,327680,327680,327680,528,528,1948,528,528,528,528,528,528,528,528,528,528,528,528,528,1942,528,528,57893,59391,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60313,57893,57893,57893,57893,57893,57893,57893,57893,57893,59922,57893,57893,57893,57893,57893,57893,57893,59491,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61123,57916,57916,0,0,0,57893,57893,57893,57893,59853,57893,57893,57893,57893,57893,57893,57893,57893,60329,57893,57893,57893,57893,57893,57893,57893,57893,57893,59367,59368,57893,57893,57893,57893,57893,59877,57893,59879,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60636,57893,57893,57893,57893,57893,57893,57893,57893,57893,60316,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,59966,57916,59968,57916,57916,57916,57916,57916,57916,57916,57916,57916,61117,57916,61119,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,60049,57943,60051,57943,57943,57943,57943,57943,57943,57943,57943,57943,59552,57943,57943,57943,57943,59556,57943,60381,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61403,57943,57943,57943,57943,57943,60446,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59554,57943,57943,57943,0,3418,0,0,0,0,0,0,0,0,0,0,0,0,0,0,352256,352256,352256,57893,57893,57893,57893,60871,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60645,57893,57893,57893,57893,57893,57893,57893,57893,57893,59923,57893,57893,57893,57893,57893,57893,3713,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2500,57916,57916,61113,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59973,57916,57916,57916,0,0,0,2310144,0,0,0,0,0,0,2310144,0,0,0,0,0,0,0,0,0,0,0,2310144,0,0,2310144,0,0,0,0,0,0,0,2310144,2310144,0,0,0,0,0,0,0,0,2310144,0,0,0,2310144,0,0,0,0,0,2310144,0,2310144,0,0,0,0,0,0,2310144,2310561,2310561,0,2310144,0,0,2310144,0,0,2310144,0,2310144,2310144,0,2310144,0,2310144,2310144,0,0,0,0,0,0,2310561,0,0,0,0,0,0,0,0,0,0,0,2359296,368,0,0,0,0,2310144,0,0,2310740,2310740,2310740,2310740,2310740,2310740,2310740,2310740,2310740,2310740,2310740,2310740,2310740,2310144,2310740,2310144,2310144,2310740,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,459347,459347,459347,459347,459347,459347,459347,459347,459347,459347,459347,459347,459347,459222,459379,459222,2318336,0,0,0,4268032,0,0,0,0,0,0,0,0,0,0,0,4276224,0,0,0,0,4358144,4358144,4358144,4358144,0,914,0,0,0,0,0,0,0,0,0,0,4956160,4964352,0,0,0,0,0,467,2335204,2335204,2335204,467,467,467,467,467,467,467,467,467,467,2335238,2335238,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,467,0,0,0,0,0,0,0,0,0,0,2335238,2335204,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,0,0,0,2342912,0,0,0,0,0,0,0,0,0,0,0,0,2348,0,0,0,0,0,0,2326528,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5177344,4358144,4358144,4358144,4358144,0,0,0,2359296,0,2359296,0,0,0,2359296,0,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,573440,0,573440,573440,573440,0,573440,573440,573440,573440,573440,573440,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,2367488,0,0,4268032,0,0,0,0,0,0,0,0,0,0,0,4931584,0,0,0,0,0,0,2351104,0,0,0,0,0,0,0,0,0,0,0,0,0,507904,507904,507904,0,913,0,0,0,0,0,4857856,4874240,0,0,0,0,0,0,0,1180,0,0,0,0,1184,0,0,1187,0,6275072,0,0,0,0,0,0,0,0,0,0,0,989,0,0,0,0,913,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,5260177,4359057,4359057,0,0,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,0,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,212992,0,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,0,0,0,0,0,4366336,0,0,0,0,0,0,0,0,2412,0,0,0,0,0,0,0,0,0,0,6275072,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6258688,6447104,0,0,6127616,0,6348800,5906432,0,5537792,0,4882432,0,0,0,0,0,0,4825088,0,0,5177344,0,0,0,0,5701632,0,0,0,0,0,4358144,4358144,4358144,4825088,4358144,4358144,4358144,4358144,0,0,913,913,913,4826001,913,913,913,913,913,913,0,0,989,989,4842461,989,989,989,4899805,989,0,0,5513216,5783552,0,0,0,0,0,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4857856,4874240],r.EXPECTED=[169,185,215,1326,231,1001,278,928,942,1085,320,247,263,307,336,352,368,384,400,914,2264,430,2264,2264,2264,2264,2264,2264,2264,2264,2264,2264,2264,2268,1707,1603,1403,460,1356,1591,491,507,517,533,1816,1031,2119,564,475,580,596,625,684,700,1905,716,1114,747,778,788,1693,1145,762,804,820,836,852,868,884,900,958,988,1017,972,1997,1047,1057,1073,1101,1130,2028,1562,1190,1205,1221,1237,1253,1269,1298,1314,1342,1174,1446,1372,1876,2073,1633,668,1388,1419,1434,1467,1483,1499,1515,609,1531,1547,1578,444,654,640,1619,1649,1662,1678,1723,1738,1754,1770,1786,1802,1832,1848,291,1864,2228,1892,1921,1937,199,2149,1953,1969,1985,1282,2013,2044,2060,2089,2105,548,2135,2165,2181,2197,2213,1160,2244,731,2260,2264,1457,412,2264,2264,2264,2264,2264,2264,2264,2264,2264,2264,2264,2264,2264,2264,419,2284,2288,2290,2290,2290,2291,2295,2290,2297,2301,2304,2311,2307,2315,2318,2322,2326,2330,2334,2338,2345,2345,3446,2344,2345,3427,2352,3605,2345,4169,2345,2345,2345,3950,4664,4990,4059,4582,2828,4588,2345,4069,4598,2345,4069,4603,2734,3100,2397,2497,2359,2366,2466,2372,2376,2345,2345,4266,2345,2345,2383,3820,2359,2359,2392,2419,2419,2419,2419,2405,2427,2345,2345,2345,2345,2345,2409,2455,3819,2345,2345,3099,3100,3100,3100,2495,2398,2398,2398,2504,2359,2359,2359,2482,2419,2419,2419,2517,2345,2345,2345,2457,2345,3100,3100,3101,2398,2398,2398,2359,2359,2359,2359,2359,2418,2419,2419,2419,2419,2419,2424,2437,2345,2345,2345,2345,4505,2729,2345,2345,2345,2345,4509,5101,4513,2345,2345,3904,2359,2359,2484,2419,2419,2519,2345,3864,2345,4865,3100,3100,2501,2398,2538,2359,2359,2359,2359,2359,2548,2419,2419,2419,2419,2395,2490,2345,2345,2359,2483,2419,2549,2508,3755,2345,4867,4911,2398,2400,2359,2515,2419,2525,3605,3100,2476,2401,2547,2550,2816,4868,2399,2481,2485,2735,2532,2503,2361,2368,4866,2476,2360,2420,4909,2537,2546,2486,2533,2362,2542,2554,2567,2571,2575,2579,2583,2586,2586,2586,2598,2591,2586,2587,2595,2602,2606,2610,2614,2618,2622,2626,2630,4594,2634,2345,2345,2903,2640,2345,2345,2999,2345,2345,2645,2345,2345,2345,2345,2345,2345,4208,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,4460,2655,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2655,2345,2345,2636,4128,2345,2345,2345,2345,2635,4127,2345,2345,2345,2345,2635,4127,2794,2345,2345,2345,3016,2798,2345,2345,2345,3017,2799,2345,2345,2345,2806,2729,2876,3308,2345,2915,2345,3310,2345,2922,2345,3536,2683,4475,3831,4927,2685,4422,2850,2345,2345,2345,2345,2345,2345,5004,2345,2345,2345,2345,4417,3024,3547,2854,5007,2861,2345,2345,2345,2345,4422,2869,2345,2345,2345,2345,2345,2868,2729,2345,2345,2345,2345,2345,2873,2345,2345,2345,4443,2345,3549,3338,2880,2345,2345,2345,2345,2887,2729,2345,2345,2345,2883,2880,2345,2345,4951,4956,2345,2345,2345,2345,4604,4971,4982,2345,2345,4805,4988,3762,2345,3965,2345,4436,4591,2907,2345,3192,2909,2345,4490,2345,3191,2908,2345,3491,4849,4476,4920,4920,4920,4849,2720,4477,4477,4477,4918,4922,2683,4476,4863,4478,2719,2684,2432,2429,2431,2563,2345,2345,2345,2345,2345,2345,2984,2345,2345,2345,2511,4068,4075,2345,2345,4081,2345,4085,2345,2345,4099,2345,3067,3768,2729,4088,2928,3046,2947,2932,2935,2938,2940,2940,2944,2345,2951,2956,2345,2345,5022,2729,2345,2345,2345,2345,4180,2345,2345,2345,2345,5023,2345,4654,2345,4496,2345,3077,4168,3570,5100,4176,2345,2345,2345,5024,2345,2345,4147,2345,2345,4258,2345,2345,2339,3845,2345,3726,3911,3122,3918,2345,4757,2345,4949,2345,2961,2974,2978,3641,3718,2988,2996,2722,3003,3008,2345,2998,4205,2345,2952,2345,2345,3697,2345,3015,4630,3021,3029,3033,2412,2991,2723,3040,3497,2345,2951,2956,2345,5067,4831,2345,3623,2964,3050,4101,2345,3156,3059,2345,2345,5115,3712,2387,4578,2345,5120,2458,2509,4221,2345,5107,2345,3202,2763,3060,2345,2345,2345,3733,2345,2951,2733,2345,4755,4856,3111,4236,2557,3086,2345,2348,3162,2345,2345,2527,3154,2345,2345,2347,3161,2345,2345,4684,3167,3432,4676,3096,2345,2345,2345,2345,2472,3106,2345,2345,2345,2345,2346,3105,2345,2345,2345,4878,3110,3119,2345,5067,4832,4234,3023,3126,4109,3602,3171,3176,2345,4069,3180,2345,4170,3176,2345,2345,3187,2345,4682,3217,4094,3257,3196,3972,3190,2345,3974,2345,3251,3209,2345,3973,2345,3214,3218,3223,3227,3231,4192,2345,3229,2345,3237,3606,3242,3246,4319,3250,3238,3230,3255,3261,3266,3266,3266,3274,3278,3262,3262,3262,3285,3289,4198,3290,4959,3294,4246,5038,3298,3302,3306,3316,3322,3329,2345,2345,2345,2345,3926,2345,2345,2875,3333,3337,4593,3342,3347,4397,3357,3361,3365,3366,3366,3370,2345,4118,3376,2345,4445,3382,4945,3392,2721,3398,2829,3406,3410,3417,3424,3004,3431,3947,2345,3426,2345,2345,3115,3658,4038,4560,2345,2345,2345,2345,2345,2345,2345,2650,2345,2345,2454,2345,2345,2345,4867,3100,3100,3100,3100,3101,2398,2398,2398,2398,2545,2359,2359,2359,2359,2359,2464,2419,2419,2419,2419,2419,2395,2470,4119,2345,2345,3437,3706,3578,3394,4115,2345,5085,3441,3522,4170,3451,2345,2345,3132,3489,2345,2345,2345,2345,3143,3495,2345,2345,2345,2345,4516,3484,2345,4070,3455,2345,2345,2345,4071,3456,2345,2345,2345,3460,3464,2345,2345,2345,3098,3100,3100,3100,3100,3100,2397,2398,2398,2398,2398,2398,2480,4118,3830,2345,3469,3584,3579,3476,4935,4215,3011,2345,2345,4515,3483,2345,2345,3191,2898,2345,2345,2345,2892,2345,2345,2345,2897,2345,2345,2345,3963,3232,2345,2345,2345,2345,3517,3490,2345,2345,2345,2345,4515,3520,2345,2345,2345,2345,3982,2345,3526,3585,3535,4117,2786,2345,2345,3541,2345,2345,2345,2345,4530,3545,2345,2345,2345,2345,3541,2345,2345,2345,2345,2456,2345,2345,4910,3100,3100,3100,3100,2476,2398,2398,2398,4531,3232,2345,2345,2345,3560,3565,3576,4115,3204,3583,2345,5095,2345,2345,2345,3163,3064,2345,2345,2345,2345,3219,3071,2345,2345,2345,2345,3157,5054,2345,2345,2345,5094,2345,2345,2345,5053,2345,2345,2345,3590,3966,3561,2345,2521,3137,2345,2345,3754,2981,3141,5078,4842,4667,2967,3147,2528,3155,2345,2751,5076,2686,5082,4996,5091,5099,2345,2345,5072,2345,2345,5105,2345,2345,4450,3818,2345,3825,2345,2460,3835,3839,2345,2345,2345,4069,3843,2345,4928,2345,3443,2345,3828,2345,4052,3148,2345,2386,3114,3150,4047,3149,3635,3635,4052,3113,3150,3150,3150,3980,3634,3112,3635,4053,3622,3635,3150,4974,4976,3627,4978,3631,3640,2345,2345,2345,2345,4428,3779,3723,2345,3595,3645,3649,4091,3655,3663,3667,3671,3675,3679,3680,3684,2345,2801,3689,2345,4841,3695,4295,2763,3350,3199,3691,5040,3485,3701,4584,3465,3705,4823,3710,3716,2345,2345,2802,3690,2345,4616,4756,3722,3731,3957,3201,3737,3750,3759,2345,3940,3766,2345,2345,2345,3312,4745,4749,4761,4765,4769,4773,4777,4781,4785,4788,4792,4795,3504,3232,2345,2345,2345,3505,2345,2345,2345,2646,3772,2345,2345,2345,4427,3778,2345,4164,4095,2345,3785,4903,2651,2345,3753,2345,2345,3793,2345,2345,2345,2345,3098,3100,3100,3100,3100,2398,2398,2398,2398,2478,2359,2359,2345,3797,2345,2345,2345,2345,2345,3801,2345,2345,2345,2345,2345,3805,2345,2345,3846,2810,5004,2345,2345,2345,2345,4151,2345,2815,2820,2833,4077,2838,3850,2345,2345,2345,2345,4737,2345,3855,2458,4716,3837,3863,2345,2345,3172,3871,3924,2345,2340,2345,2345,4149,2345,2339,3845,3723,3089,3789,2345,3930,4129,2345,2776,3914,4135,2728,2345,2345,2345,2345,3210,2345,2784,3082,3938,2345,2790,5046,2345,3935,2345,3944,2730,3877,2345,3352,2732,3955,2731,4157,4157,4157,3351,2732,2732,2732,3531,4156,4716,4157,4718,3878,4157,2732,2345,2345,2345,2345,3851,2345,2345,2345,2345,2345,3850,2345,2345,2345,2345,2345,2345,2345,3612,2663,2345,2345,2345,2345,2345,2345,2345,3780,3961,2345,2345,3920,3970,3978,3986,3990,3994,3998,4001,4005,4007,4011,2345,2345,2345,4015,2345,3606,4752,4107,3553,4020,4024,4643,4888,4028,2345,4851,2811,4032,4826,4037,4042,4046,2345,2345,4016,2345,3746,4051,3551,3877,4057,3636,4570,4063,2345,2345,2345,2780,2345,2345,2345,2510,4067,4105,2924,4156,4113,2386,4123,4538,2345,2345,2635,4127,2345,2345,2345,2345,2641,4133,2345,2345,2345,2345,2778,4181,2345,2457,2345,2345,4984,5025,2345,4139,2345,2855,3611,2345,2857,2345,2345,3386,2345,2856,2345,2345,3830,3616,2345,3445,2345,4145,2345,4670,3724,4155,3572,3114,4161,2345,2345,2345,3472,2729,2345,2345,2345,2345,2842,2345,2345,2345,2345,3081,2846,2345,2345,2345,2345,2345,2739,2692,3821,2749,2757,2345,2761,2767,2345,2771,4802,2345,4185,3077,3725,4231,3041,4220,2345,5087,2729,2345,2345,2911,4134,2345,2345,4172,2345,2345,2345,2354,3845,2345,3723,3606,2458,3787,3901,2345,3781,3537,4190,2345,2345,2910,4196,3378,3685,3607,4673,4202,2823,2345,4033,2729,2345,3931,2956,2345,3925,4214,4219,4225,4240,4244,4264,2345,4250,2345,4252,2345,2345,4256,2345,4251,3343,4538,4228,4262,2345,4270,3353,2345,4610,2345,3183,3130,2345,2345,2345,2346,3136,2345,2345,2345,2345,3183,3130,2345,2345,2673,2345,2345,2677,3814,2690,2696,2700,2704,2708,2712,2716,3744,2727,4275,4284,4288,4419,2668,3659,2733,4292,4308,4420,3556,3556,3556,4317,3530,4421,4335,4323,3555,3529,3568,3025,2669,3556,4330,4339,4341,4333,4326,4345,4349,4351,2345,2345,2345,2345,3897,2992,2345,4313,4355,4359,4390,4363,4367,4371,4375,4379,4381,4383,2345,2345,2345,4937,4387,4657,4394,4401,4460,2827,4636,4599,4278,4407,4411,5122,3727,4426,4432,2345,4440,4449,2345,2345,4938,3774,2657,4454,4458,3325,2345,3053,4464,4468,2345,2345,2345,5128,4474,2345,2345,2345,4482,2345,2345,4271,2888,2345,2345,2345,2345,3233,2345,2345,2345,4962,2864,3650,2893,2345,3727,4483,2345,2345,2345,3055,4487,4494,2345,2345,3890,4311,2433,2446,3618,2826,4186,5066,4947,2733,2345,2345,2345,3413,4500,2345,2345,2345,2345,3420,2800,4414,4622,4520,3318,2345,2970,5060,2345,2345,2345,2377,4524,2345,2345,2345,2345,3869,2345,2345,2345,2345,4171,3876,2345,2345,2345,4069,3870,2345,4952,4311,2443,4535,2827,3865,3433,2345,2345,2345,2379,4543,2345,2345,2345,3858,2345,2345,2345,2345,3859,2345,2345,2345,2957,3045,2345,2345,2377,4548,2345,2345,2345,2345,3281,4553,2345,2345,2345,2378,4549,4470,2345,4558,2440,4564,3203,4831,2345,2345,2377,4568,2345,2345,2345,3951,2345,2345,2345,4574,2345,4640,2345,4069,4647,2560,4651,4661,2345,4680,4539,4642,5031,2345,5014,4688,4830,4815,4403,3883,4642,4692,4628,4816,4696,4696,4702,4830,4706,4714,4714,4722,2414,2449,3808,4731,2414,4906,2450,4735,4725,4727,4741,4829,2345,2345,2345,2345,3925,2345,2772,3501,4141,3509,4115,4215,3074,2345,2345,3513,4799,2345,2345,2345,2345,4809,3015,4813,4820,4967,2388,2680,4210,4836,4554,2345,3372,2345,2345,3384,2345,2345,3372,2345,2345,2856,2345,2345,3589,3594,3599,4708,3872,4840,4846,2345,4710,4855,2345,2345,4544,4860,2834,3742,4965,3080,4872,4877,4882,2345,2345,2345,2345,3606,4886,2345,2345,2345,3478,4892,2345,2345,2345,3882,2663,2459,3092,3887,2345,2345,3894,2345,2345,2345,2355,2345,3479,2345,2345,2345,2345,4897,3616,2345,2345,4544,4915,3035,4280,2918,3446,4873,4698,4926,2345,2345,2345,2345,2345,4932,2345,2345,2345,2345,3606,4942,2345,2345,4435,3377,3907,2902,2345,4489,2729,2345,3651,2902,2345,3192,2909,2345,4994,5020,5001,3205,5011,2345,2345,2345,2345,2741,2745,2345,2345,2345,2345,4170,4608,2345,2345,4614,4989,4620,4626,3755,4950,2345,4634,2345,5013,2345,2744,2345,2345,2345,2345,2345,2743,2345,2345,2345,2345,2345,2743,4900,2345,4501,4915,3036,5018,3447,3864,5029,2345,2345,2345,4170,5035,2345,2345,2345,2345,4303,5044,2345,2345,2345,2345,5050,2345,2345,2345,2345,4304,4900,2345,3811,3740,4997,5058,5064,2345,2345,2345,5071,2345,2345,2345,3269,2345,2345,2345,4297,4301,2345,3402,2800,2345,2345,2345,2345,3401,4528,2345,2345,2345,2345,3401,4528,4470,4299,2345,2345,3270,2345,5111,4997,4577,2345,2345,2753,2345,4893,5116,2345,2752,2491,2458,2345,5126,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2661,3388,2667,2345,7267,5893,5132,5144,5141,5151,5153,5153,5153,5153,5148,5176,5152,5153,5153,5153,5159,5163,5176,5153,5153,5169,5164,5153,5180,5155,5154,5168,5151,6159,5173,5199,5205,5205,5205,5209,5209,5201,5213,5217,5220,5224,5228,5245,5232,5242,5234,5238,5236,5249,5252,7269,7026,5260,5273,5276,5276,5276,5255,5821,5295,5276,5276,5276,5276,5268,5730,6588,6270,5301,5276,5276,5254,6597,5821,6646,6646,6646,6646,5394,5396,5325,5449,5322,5396,5396,5325,5276,5384,5428,5333,5409,5274,5276,5276,5276,5286,5290,7174,5276,6844,7218,6005,5276,5276,5276,6390,6115,6646,6647,5323,5396,5397,5400,5428,5428,5428,5428,6645,6646,6646,5398,5400,5428,5345,6844,7217,5353,5276,5266,5276,5276,5388,7455,5457,5396,5396,5396,5396,5276,5399,5402,6779,5408,6667,5275,5276,5275,5276,5276,6239,5276,6839,5410,6667,5275,5276,5275,6561,5276,5275,6839,6843,7454,7155,5276,5276,7229,5276,5276,6466,5276,5276,6526,5276,5276,5276,5302,5276,5276,6646,5393,5396,5396,5396,5400,5407,6668,5276,5276,5268,6066,5402,5428,5428,5428,5429,6646,6646,6646,5395,5396,5396,5396,5326,5368,5419,5276,5276,5276,5305,5401,5428,5428,5428,5430,6646,5427,5428,5428,5428,6644,6646,6646,5402,5387,5276,5276,5276,5307,6771,6646,5394,5396,5396,5398,5427,5276,5276,5268,6630,5397,5403,5276,5276,5269,5731,6036,5400,5400,5402,5428,6644,5402,5428,5428,6643,6646,5368,5400,5427,6643,6646,6646,6646,5396,5396,5396,5397,5387,6646,5395,5324,5368,5276,5999,5276,5276,7234,6237,5276,6239,6237,5401,6643,5393,5324,5415,5434,5460,5464,5463,5462,5461,5326,7445,6108,6418,5509,5541,5438,5442,5508,5508,5508,5508,5486,5515,5454,5468,5472,5491,5543,5496,5508,5508,5538,5446,5582,5487,5506,5581,5513,5475,5519,5535,6805,6808,5547,6811,6814,6815,6816,5551,5554,5558,5569,5573,5579,5492,5586,5590,5594,5598,5605,5604,5601,5609,5613,5561,6981,5276,5276,5276,5308,5312,7372,5276,5276,5276,5309,7137,5276,5276,5276,5329,5276,6389,5276,5276,6557,5276,6391,5276,5276,5275,5276,6392,6392,5276,5276,5279,5276,6282,5276,5276,5276,5366,5276,6e3,6885,5910,7281,5626,5297,5629,5276,5276,7348,5276,5276,7354,5276,5276,5276,5631,5640,5899,5276,5647,5276,6987,5263,5186,5654,5657,5659,5660,5664,5668,5673,5672,5677,5679,5680,5680,5684,5686,5693,5688,5700,5688,5697,5689,5704,5276,5276,7355,5276,5276,5276,5648,6027,6933,6281,5898,5276,5276,5276,5367,5276,5276,5276,5368,5400,5708,6023,5276,5276,5281,7411,7471,7426,5276,5276,6043,5135,5276,5276,5281,7468,6467,5276,5716,5276,5276,5721,6061,5339,5276,5276,5304,5276,5341,5737,5745,5751,5749,5276,5276,5276,5369,6219,5751,5276,5276,5306,5310,6765,5276,5276,6988,5276,6526,5277,6886,6113,5784,5276,5793,7239,5808,5855,5812,5831,7055,5318,5276,5276,5276,5372,5348,7452,5827,5832,7056,5137,5276,5276,5276,5376,5368,5276,6525,5276,5414,5276,7452,7443,5276,5276,7419,6200,5276,5925,5276,5276,5276,7249,5717,5276,5276,5276,5387,5795,7243,5854,5845,7241,5851,5855,5846,7242,5852,5856,5317,5850,5854,5845,5898,5860,5276,5276,5276,5388,6362,5276,5854,5876,5318,5276,5276,7441,6519,7240,5851,5855,5877,5898,5881,5839,5276,5276,5370,5276,5276,5853,5885,5318,5276,5276,7452,6134,7239,6135,5854,5886,5898,6404,5870,6865,5276,5276,6117,5869,6864,5898,5276,6867,5276,5276,5276,5617,6117,5890,6866,5276,5276,5276,5620,6857,5276,6719,6723,5276,5276,7455,6886,6721,5898,5276,5276,5373,5276,5914,5276,5898,7023,5934,5938,5942,5945,5948,5949,5949,5950,5954,5954,5954,5954,5954,5958,5961,5276,5277,5921,5930,5276,6659,6079,5966,6872,6872,5276,5276,5276,5650,6487,5276,5711,6194,7445,7444,5368,5276,6e3,6525,5276,7025,5302,6259,5276,5370,5979,6510,5997,5276,6523,5276,5276,6660,6080,5967,5898,6890,5997,5276,6889,5276,5276,5276,5841,6010,5276,6606,5276,5276,5276,5822,6016,5276,5276,5276,5787,5276,6605,6017,5276,5277,5962,6001,7450,5276,5276,5276,5826,5831,5712,6195,7052,5276,5368,5276,5276,5366,5369,6121,5276,6513,5276,6559,5276,5276,5386,5282,5276,6093,5276,5276,5276,5864,6029,5276,5276,5276,5896,6848,5998,5276,6523,6792,5276,5276,6397,7112,6033,6047,6053,5898,5276,6034,6048,6054,5276,5278,5281,6211,6035,6049,6055,5276,5278,5909,5276,5279,6836,6888,5276,5276,5276,7452,5761,6526,6233,6268,5276,5280,5303,6536,5276,6268,6140,6038,6070,5276,5276,5400,5400,5400,5400,5401,6066,6588,6039,5894,5276,7456,5276,5276,5276,6002,5276,5276,5276,5975,5277,6078,6084,5367,6266,7445,6236,5999,6524,5276,6100,6037,6070,5276,5276,5477,5481,6630,6587,6090,5894,5276,6080,6086,5276,5276,5478,5482,6099,5276,5276,5276,6003,5276,5276,6036,6107,5276,5276,5276,6072,6033,6588,6106,5276,5276,5276,6073,6085,5276,5276,7023,6099,5276,5276,5281,6583,5728,5732,6105,5894,5729,5733,6106,5276,5281,6629,6586,5727,5731,6104,6108,5276,5276,5276,6117,5890,5371,6e3,6125,6268,6456,5276,6388,5276,5276,5276,6523,5276,7417,6416,5276,5276,5276,6119,5276,6524,6525,6659,6322,5276,5276,5276,6074,5363,7445,5276,5370,6e3,6236,5276,6320,5799,5803,5276,5276,5276,6127,6319,5798,5802,5276,5276,6321,5276,7260,7446,5368,6001,6320,5799,5801,5276,5276,6319,5797,5276,7073,5276,7258,7447,5276,7447,5302,7075,5803,5276,5276,7072,7076,5276,5281,7468,7477,5276,5276,7073,7260,7446,5276,7074,5802,5276,5285,5289,7173,6339,7258,7447,6339,7077,5276,6117,7076,5276,6342,5276,6117,6342,6139,6117,6200,6978,5276,6978,5276,6978,5276,7445,6197,5276,6237,6722,5276,5276,5372,7365,6199,6197,5276,6199,5276,5925,7445,6198,6198,6198,5276,5276,5926,6198,5276,6896,6896,5389,6536,5368,5525,6145,5276,5276,5276,6133,6358,5367,5276,5276,6198,6537,6199,6536,6200,5276,6537,5276,5276,5276,6480,6167,6152,6171,6175,6179,6181,6185,6185,6181,6189,6189,6189,6189,6189,6191,5276,5276,5564,6363,6206,5276,5276,5276,6199,6200,6251,5898,5276,5276,5565,5371,5276,5276,5575,6934,6200,5276,7454,5803,7356,5276,6293,5276,5804,5276,5287,5291,7160,7066,6196,5276,5285,6217,6223,7106,6232,5276,5287,7149,7129,6243,5276,7260,5276,5288,7150,7141,6257,5276,5789,5276,5276,5276,6202,6263,5276,5276,5276,6201,5367,5369,5387,6274,6253,5278,6018,5276,5276,5642,5276,5276,5276,6388,6113,5193,6286,6935,6040,6287,6936,6041,5276,5276,5191,5195,6288,6937,6042,5276,5276,5276,6226,5385,6114,6252,5276,5307,5311,5315,7420,7354,5276,5276,5739,7397,7403,6298,6329,5803,5276,5276,6006,6299,6330,5276,5276,5276,6265,6300,6331,5276,5276,5753,5752,5387,6275,5897,5276,5328,6552,6547,5803,6197,7453,7421,6267,6392,5479,6312,6329,5276,6458,5480,6313,6330,5276,5276,5764,5276,5385,6246,6253,5276,5363,5367,5276,5276,6536,6317,6267,5276,5276,5276,5621,6392,7412,6327,6332,6301,5803,5276,5276,5815,7444,6522,5276,5276,5375,5276,5276,5365,5276,5276,5916,5276,5276,5276,6294,5368,5386,6336,5276,5365,5276,6535,5276,6820,7444,5276,5276,6519,6308,5276,6198,5276,7452,5280,5276,5276,5276,6307,6197,5276,6843,5276,6356,6250,6678,5276,5276,5276,6368,5276,6844,5894,5276,5369,5998,6524,5276,5276,5276,5277,6208,6362,5276,5276,5276,6371,5276,6846,5276,5276,5898,5276,6005,5276,5276,6005,5276,5276,6846,6004,6002,6846,6005,6005,6005,5276,5276,6004,5276,5276,6005,6847,5276,5276,5995,6375,5894,5276,6520,6383,5276,5276,5276,6404,5871,6112,7024,6387,6111,5276,5276,5276,5363,6401,6761,6409,6972,6429,6432,6433,6434,6438,6438,6438,6438,6441,6443,6444,6444,6451,6451,6451,6451,6448,6452,5276,5276,5276,6425,5348,6566,5276,5276,5276,6463,6370,6494,5276,5276,5973,5276,5362,6468,5276,6469,6475,5276,5276,5276,6519,5276,6484,5276,5276,6e3,5389,6228,6477,5276,5276,6012,5276,6112,5276,5276,5276,6520,5276,5276,5276,6396,5304,6197,5276,5276,6060,6059,5276,6499,6507,5276,5386,5283,5276,5276,6395,5276,5276,5279,6208,6518,5276,5276,5359,5276,5276,5276,6524,5276,5276,6534,6534,5276,5388,5276,5284,6546,6618,5276,5276,6109,5903,6553,6548,5276,5276,6116,5998,5349,6567,5276,5276,5276,6392,6611,5305,6199,5276,6537,6265,5276,6236,6525,5276,6830,6573,5818,5276,6831,5501,5819,5276,6832,5502,5820,6830,5500,5818,5276,5422,6847,5276,5522,7448,5276,5636,6001,5998,6565,5276,5276,5276,6525,5276,5276,7449,6887,6493,5276,5641,6843,5276,5276,5276,6237,6537,5276,6268,6140,5276,6390,5276,6459,6571,6577,5821,5276,5276,5276,6657,5276,7285,5499,6578,5276,5276,6886,5279,5276,5649,6028,6094,5276,6458,5276,5276,5276,6526,7024,6877,5256,6579,5276,5276,5276,6528,6598,5276,5276,5276,6536,5276,6592,5276,5276,5276,6620,5276,6391,6459,5276,5739,7123,6938,5281,6583,6579,5276,5741,7125,6332,6602,5276,6459,5276,5741,7125,6522,5276,6404,5871,5280,5276,5302,5276,5757,5276,5356,6392,6526,5276,5276,6118,5279,6610,5276,5276,5276,6783,5367,6615,5276,5276,5276,6784,5276,6919,6923,5276,5777,5276,5276,5327,6542,5280,6537,6266,5276,5788,6264,5276,5288,7184,7189,5276,5277,5276,5367,5276,6268,6141,6712,6424,5276,5276,6126,5898,5276,5276,5632,6626,6634,5276,5276,6131,6414,6108,5276,5276,6395,5276,6844,5276,5276,5917,5276,6521,5276,6395,6522,6729,6846,5276,5375,6502,6651,6664,6672,6682,6685,6689,6693,6693,6693,6695,6697,6697,6697,6697,6701,6702,6702,6702,6703,6707,5276,6711,6423,5276,5276,5276,6735,5276,6716,5276,7351,5276,6727,5276,7420,6268,6969,6745,5276,5276,5276,6785,5450,5276,5276,5276,6793,6743,6094,5276,6750,6751,5276,5276,5276,6844,6212,5276,5276,5276,6847,5276,5276,6755,5276,5276,6238,5276,6524,6798,6267,6759,6771,6766,5276,5276,5276,6877,5194,6287,5276,7275,5276,5276,6248,5276,5276,6776,6772,6767,6790,5276,6792,5276,5907,5276,6269,5894,7260,7023,5276,5276,5276,6111,6392,6422,6847,5276,6100,5276,6888,5276,5276,6521,5276,5276,6194,7446,5368,7418,5276,5276,6293,5276,5276,5276,6269,6206,7033,6523,6797,6266,5312,5316,5276,5276,5276,6921,5313,5317,5276,5276,5276,6933,6792,6791,5276,5276,6305,5304,6420,6424,5276,5276,6319,6922,5276,5276,6118,5276,5374,5276,5276,6535,5276,5276,7034,7452,6826,5276,5908,5278,6495,5276,6519,5276,5276,5276,5281,5255,6598,5276,7033,5863,6828,6852,5314,5318,5276,5276,6913,5276,5276,5276,6958,6858,5318,5276,5276,6321,5800,6857,5317,5276,5276,6340,5802,6535,5276,6862,5276,6022,5753,5276,5278,5276,5276,7210,5276,6871,5276,5276,5276,7191,6199,6200,5276,5276,5276,7042,6425,5276,5276,6876,6887,5276,5367,6820,7444,5276,6002,5276,6194,7052,5276,6637,6520,5276,6536,5276,6822,5276,5276,6341,5276,7204,5276,5276,5276,7203,5367,5276,6786,5276,5276,6392,6921,6821,5276,5276,6904,5276,5276,6388,6391,6480,5276,5276,5276,7239,5276,6478,5367,5276,6095,5276,5276,6394,5276,6897,5276,5276,6883,6535,5276,5371,6904,5364,5276,6894,5276,6110,5276,5276,5981,7461,7451,5276,5276,5276,5983,7470,5990,5283,6536,6901,5276,6114,5276,6001,6911,5374,6535,5368,5803,5276,6392,6412,5369,5276,5276,5366,5364,6537,6364,5364,5276,5367,5371,5366,5364,5276,5276,6536,5365,5276,5366,5276,5366,5367,6538,6538,6538,5773,5767,5769,5771,5771,5772,5276,7445,5183,5276,5282,5917,7454,6113,6917,6942,7063,5336,6951,6962,6966,5531,6992,6995,6995,6998,7003,7002,7002,7004,7008,7009,7015,7013,7013,7013,7013,7019,7022,7030,5276,5276,6115,5375,5528,6927,5276,7445,6842,7453,6149,6156,6163,7038,6983,5276,5276,6392,7229,5277,5276,5276,7046,7060,5276,7070,5276,6116,5999,5276,6117,5276,5276,5364,5276,5276,5276,7240,7085,5276,5276,5276,7337,5349,5276,6906,7086,5276,6117,5368,5276,5276,6907,5276,7090,5276,6120,5276,5368,5389,6113,7094,5276,5276,5276,7338,6840,5276,6782,7444,6985,5276,5896,5276,6197,5276,5276,7024,5276,7104,5277,5276,5276,6947,6946,5276,6378,5276,5276,5276,7356,5276,5276,7356,6396,7111,7118,6379,5276,7119,6094,5276,5276,6405,5872,5898,6956,6954,5276,5276,6422,6847,7144,5276,5276,5276,7363,5285,5289,7113,7142,5286,7148,7114,7143,6201,5367,5276,5276,6458,5480,6298,7452,7154,5276,5895,5290,7159,7164,5318,7066,5318,5276,5276,6458,5481,6301,6676,5276,5276,6199,5276,5276,5276,6879,7180,5276,5276,5276,7364,5290,7174,7179,5276,5276,7178,5276,5276,5276,7380,5740,7169,5276,5276,6467,5276,6677,6197,5276,5924,7196,6975,5276,5276,6467,7049,5285,7195,7185,6391,6116,5276,5276,5276,7208,7454,5276,5276,6473,6477,6526,5276,7449,5276,6197,6520,5276,7446,5276,5375,7224,5276,5276,5276,7381,7214,5276,5276,5276,7408,7223,6847,5276,5276,6479,5276,7222,6425,5276,6201,6886,6492,7200,5276,6237,5276,5276,6841,6675,5276,5276,5387,5276,5276,6488,5276,6878,6781,5276,5276,6514,5276,5276,6879,7230,5276,5276,5276,7446,7228,5276,5276,6249,7452,5276,5389,5276,6198,6197,5276,6e3,5276,6238,5276,6524,6201,5276,6201,7449,5276,6193,7445,5276,5280,6209,6213,5276,6520,5276,5281,6065,6587,6879,7455,5276,5276,6525,6526,6659,6079,7450,5276,6395,7455,6621,6847,5276,7238,5276,6622,5276,5276,6526,7416,5276,6622,5276,7247,6620,7455,5276,5276,6530,5276,7391,6527,6621,6847,5276,5276,6537,5276,5276,6536,6621,6847,7455,5387,5388,6847,5388,7344,5276,5276,7229,7453,5386,5423,5389,5276,5276,6593,5276,5388,5276,5386,5388,7253,5276,7258,7446,6196,5276,5363,5276,6210,6887,5276,5894,5276,5276,5276,5971,7257,5276,5916,6640,7264,6258,5276,5189,5276,7260,5916,7259,6503,7097,7283,7273,5724,7100,7135,7279,6930,7132,7289,7293,7302,7295,7297,7306,7298,7317,7310,7311,7315,7318,7326,7326,7328,7324,7322,7332,7335,5276,6218,5750,5276,5276,7362,7366,7364,7342,5276,6467,5389,5281,5276,5276,6621,5276,5276,6393,5276,5915,5276,6227,6476,5276,5377,6746,5276,5386,5276,5276,5276,7449,5276,5276,7360,7370,7376,7385,5276,5276,5276,7450,5276,5276,6529,7386,5276,6265,5276,5276,5378,6094,7392,5276,5276,5276,7451,7342,7445,6201,5276,6266,5276,5276,5382,5400,5400,5400,5427,6389,6113,5276,5276,6235,6234,5276,5276,5276,7457,5276,6526,6716,7433,7396,7402,5276,5276,6733,6739,7403,5276,5276,5276,7466,7408,7398,7404,6844,5276,6847,5276,6267,6140,5276,5388,7230,5276,5414,5400,5400,5400,5428,7342,7447,7451,5276,6268,5276,6237,6268,5276,5276,7356,6110,6268,5276,5276,5276,5643,7409,5986,7425,5276,6292,5276,5276,5740,7124,7030,7410,5987,7426,5276,6306,5305,5276,5276,6201,5276,5276,5276,5739,7168,7411,5988,7427,5276,6323,7446,6117,5276,5371,5276,5276,7454,5276,6887,5276,5985,5989,6236,6846,6003,5276,6004,5276,6004,6002,5276,6845,5276,5276,5276,6802,5311,6560,7449,5276,5276,5281,7200,5276,6393,5276,7452,5276,5276,5276,6388,6113,5276,6233,5836,5898,5276,5276,7387,5868,7434,5276,5276,5276,6877,7228,6201,5276,7452,5962,5276,5276,5276,6853,5315,5898,5276,5276,7431,5276,5276,5276,6878,7229,5984,7471,5991,5276,6340,5803,5276,5780,5276,5990,5276,5276,5276,6920,5821,5982,7469,5989,5276,6346,6351,5276,5276,6388,6113,5276,5276,6946,5276,5276,7438,5276,5276,7024,5276,5276,5276,7467,7476,5276,5276,7477,5276,5276,5276,7025,5276,7450,5276,5388,5281,6279,5276,5276,5622,5315,5276,6389,6114,5276,6347,6352,5276,5276,5276,7444,5276,5276,5276,6945,7466,7475,5276,5276,7041,5276,5631,5276,5388,5282,7466,7462,5276,5276,5276,7040,5276,5276,5276,7081,5276,5303,5276,5276,5276,7110,6654,0,0,1075838976,2097152,-1845493760,0,0,2147483648,16777216,4194560,4196352,270532608,2097152,2097152,268435456,4194432,16777216,4194432,3145728,541065216,-2143289344,4194304,4194304,4194304,4194304,541065216,4194304,4194304,4194432,37748736,-1606418432,541065216,541065216,541065216,541065216,4194304,4194304,4196352,-1606418432,-1606418432,541065216,541065216,4194304,4198144,541065216,541065216,-2143289344,-2143289344,8425488,4194304,4194304,4194304,1,32768,0,2147483648,16,33554432,33554432,0,2,4,112,128,256,3584,16384,37748736,742391808,239075328,775946240,775946240,775946240,171966464,171966464,171966464,171966464,239075328,171966464,775946240,239075328,4718592,64,4718592,2097216,4720640,541589504,4194368,541589504,4194400,4194368,-2142763008,541589504,541065280,4194368,4194368,541065312,541065280,-2143289280,4194368,-2143285408,-2143285408,-2143285440,-2143285440,-2143285440,-2143285440,-1605890240,-2142761152,-2109731008,-1606414528,-2142761152,-1606414528,-2143285440,-2143285440,-1606414528,-1606414528,-2143285440,-2109731008,776470528,-1908404416,775946304,-1908404416,2,4,8,16,512,1024,4194304,128,128,0,2147483648,524288,5242880,2147483648,0,0,2,12,64,256,2048,2048,0,0,0,0,1,0,0,0,2,0,0,0,3,4,16,224,256,512,1024,16777216,16777216,0,0,2147483648,65536,1792,0,0,0,8,0,0,0,12,32,64,1024,2048,57344,262144,50331648,268435456,1073741824,2147483648,0,0,1536,64,524352,524352,524352,0,0,0,62,64,128,64,262144,1048576,0,2147483648,2097152,0,-2113929216,0,0,-1979711488,-1912602624,64,64,1048576,128,256,2048,262144,524288,4096,1024,1024,0,-570425344,32505856,0,0,48,25165824,0,0,0,33554432,268435456,0,0,0,524288,0,0,0,32,0,0,0,44,64576,319029248,0,524288,524288,524288,0,64,0,0,0,64,0,96,96,96,524352,524352,524352,524352,524288,524288,524288,524288,64,64,0,64,128,128,128,128,2048,2048,0,0,524288,524288,64,64,128,2048,0,0,64,128,8388608,524288,64,64,64,64,32,96,64,96,96,524352,96,160,1056,262176,1048608,2097184,4194336,536870944,40,262176,32,96,0,0,0,60,40,48,1120,96,96,64,524352,0,524288,64,96,524352,0,524288,4195360,6291488,2097184,2097184,4194336,4194336,4194336,32,56,0,4,16,32,64,128,256,1536,2048,40,262184,40,40,40,40,40,262176,32,32,6292512,4195360,2097184,32,128,1792,8192,16384,131072,524288,4195104,6292512,32,32,32,32,4,40,262184,32,32,34,34,262184,40,4196128,32,262144,524288,0,0,64,256,0,2097152,135790592,131073,4,393233,262184,34,42,32,524320,32,1073872896,32,32,40,1120,96,1056,4194336,32,2098208,-322695456,-322695456,-322695456,-322695456,-322597152,-320598176,-322597152,-322597144,-321548576,-320598168,-322597144,-321548568,-37482773,0,0,64,1536,32768,-322588952,-321548568,-322588952,-321548568,-322597144,32,0,32,64,65536,0,96,32,32,56,262184,40,41,262184,32,42,224,40,262176,42,106,293601323,293601323,293863467,293699627,293617707,293716011,293702203,293702203,293702203,297896507,293702203,293702203,293702203,293702267,293964347,293702267,297896507,293964347,297896507,297896507,-322597144,-37744981,0,32,524288,0,0,64,2048,16384,32768,0,0,262144,65536,262144,262144,0,4096,0,8,0,2,65536,262656,328192,0,0,0,1536,32768,0,5242880,0,0,0,1998,518144,8388608,-2147418112,5242880,-1842937664,201330721,201330721,-2111369023,-2111369023,-2111369023,-2111369023,-2111360575,-2111369023,-2111369023,-2111369023,-1977151295,-1977151293,-1910042431,-1893265183,-2111368509,-1893265183,-1893265183,-1893265183,-1893265183,-2111368509,-1893265183,-1893265183,-553689472,-553656704,-553689472,-553689472,-553656704,-553656704,-553656704,-553656704,-553656704,-553656672,-553656672,-553656672,-553656672,-536912159,-553656672,-553656672,-553656664,-553656664,-553656672,-553656672,-553656670,-553656672,-553656672,-553656670,-553656608,-553656671,-536879391,-536879391,-536879391,0,0,262656,0,0,65,1024,0,1,4096,201326592,0,0,0,0,462976,-2113929216,100663296,100663296,2,4,8,64,128,512,2048,8192,16384,458752,18874368,463488,0,0,1,2,4,32,0,0,1007232,15728640,104e4,15728640,-570425344,0,0,0,2014,0,0,0,32505856,-570425344,196608,2097152,301989888,0,0,80,268435456,0,268435456,0,268435456,268435456,268435456,268435456,0,0,0,4096,201326592,0,0,96,2260992,12288,0,2147483648,0,0,118,577408,22020096,1040187392,0,0,167772160,234881024,128,512,2048,196608,262144,33554432,536870912,0,0,0,557056,7168,16384,196608,786432,503316480,1073741824,2147483648,0,0,128,131072,524288,58720256,402653184,0,0,0,318767104,128,512,7168,16384,32768,32768,196608,786432,1048576,2097152,4194304,33554432,268435456,536870912,2147483648,0,0,1,256,8388608,234881024,268435456,1073741824,2147483648,4096,16384,32768,131072,524288,1048576,2097152,4194304,8388608,234881024,0,0,201326592,0,0,128,536870912,4194304,512,3072,16384,131072,524288,1048576,4194304,134217728,8388608,33554432,201326592,268435456,1073741824,0,1048576,4194304,268435456,4194304,8388608,134217728,268435456,1073741824,3072,131072,524288,1048576,1073741824,0,0,0,2147483648,0,0,0,-2147483646,16384,18432,67108864,1073741824,16384,8192,0,0,65536,262144,0,0,67108864,0,0,0,32768,0,1,18952,1024,0,0,192,0,0,0,65,1024,1024,100663298,18952,65,268436480,2101248,524288,1024,19017,-1744550912,8388624,8388624,8388624,-1739308032,-1739308032,-1739308032,-1739308032,-1736162288,-1736162288,-1736162288,-1736162288,-7868466,-7868466,-7868466,-7868466,-7868466,-7868450,-7868450,-7868450,-7868450,0,0,0,65536,2048,16384,67108864,134217728,268435456,0,0,1073741824,18432,0,0,1,285212672,0,585,0,0,2,8,16,64,128,3072,4096,8192,65536,131072,0,0,1024,5521408,-1744830464,0,0,0,262144,0,0,0,1024,0,0,0,112,1040,0,0,-1744830464,0,-1744830464,59238400,-67108864,0,0,0,327680,2014,0,0,0,328192,518144,8388608,50331648,201326592,805306368,-1073741824,768,1024,10240,16384,32768,458752,50331648,67108864,134217728,805306368,0,0,0,458880,32768,458752,8388608,50331648,67108864,134217728,67108864,134217728,805306368,1073741824,2147483648,0,0,220,0,0,0,471424,12,192,768,1024,2048,805306368,1073741824,0,0,2,204,768,1024,4,8,32,64,512,2048,512,2048,16384,67108864,0,0,458752,50331648,67108864,805306368,-1073741824,0,0,0,393240,0,1048576,4194304,0,0,16384,458752,50331648,67108864,536870912,1073741824,0,0,16384,0,0,0,256,0,0,0,512,0,0,0,585,16,0,0,1048576,4194304,2147483648,4,8,128,512,3072,16384,32768,131072,512,0,0,4096,1048576,2147483648,8192,2097152,268435456,2147483648,537395200,537395200,0,4196352,51380242,51380242,51380242,0,537395200,4196352,4196352,276901888,8540160,-1606418432,0,32768,537395200,4196352,1082130432,0,4196352,537427968,22022147,22349827,22349827,22349827,22366219,22349843,22349827,22349827,22366219,22349827,55576594,55576594,55576594,55576594,55576594,324012114,55576594,55576594,1062785014,1062785014,1062785014,1062785014,0,0,2,33554432,0,0,0,131072,0,0,0,8192,8392704,32768,268435456,0,0,2,67108864,12,16384,0,65536,0,22020096,0,0,0,104e4,15728640,0,0,329728,0,0,254,1792,2809856,58720256,19,0,0,0,1048576,0,0,0,2048,0,0,0,18,33554432,0,0,256,8192,0,0,8192,2097152,0,2147483648,0,82,301989888,0,0,0,2101248,22020096,1040187392,0,0,0,4194304,0,0,0,16384,1536,0,256,0,8192,2097152,16,1048576,16777216,33554432,268435456,536870912,2147483648,3584,16384,32768,524288,1048576,4194304,0,0,8388608,1073741824,0,0,1536,2048,16384,32768,524288,4194304,134217728,0,0,134217728,4096,0,8,0,256,1536,16384,32768,524288,128,536870912,0,0,4,8,512,2048,0,0,1536,32768,524288,4194304,33554432,134217728,536870912,0,0,8192,2097152,2147483648,0,0,512,2048,131072,536870912,0,0,16,64,1536,32768,32768,524288,134217728,0,0,0,524288,0,64,64,16392,1536,32768,524288,0,0,33554432,8192,0,65536,0,0,1,1,0,1,67174400,33554432,536870912,-1073741824,0,0,0,0,524288,134217728,67174400,0,0,0,16777216,0,0,0,4,0,0,0,7,16,16384,8,8,0,0,512,3072,131072,131072,268435456,134217728,8,512,2048,196608,262144,50331648,536870912,1073741824,0,4,8,2048,8192,32768,8388608,0,0,134217736,16908320,547389524,547389524,555909216,555909216,555909216,555909216,564297840,564297844,564297844,564297844,564297844,1001055742,1001056254,1001055742,1001055742,1001056254,1001056254,1001056254,1001056254,1001055742,1001056254,1001056254,1001056254,1001056254,0,1052672,2147483648,0,0,4,16,0,0,84,2129920,8388608,4096,0,0,0,116,0,254,1280,2809856,58720256,939524096,0,0,0,50331648,268435456,0,0,0,939524096,0,0,520,1024,0,0,1,0,67108864,1073741824,0,0,0,20,64,32768,8192,0,2048,0,2097152,8388608,536870912,0,0,1024,278528,0,0,0,393232,163840,0,0,0,134217728,0,0,0,16,0,0,0,15,208,15360,1245184,52,0,0,0,268435456,0,0,33554432,64,128,1280,24576,163840,524288,2097152,58720256,402653184,536870912,128,1792,24576,163840,524288,0,4,16,8388608,0,0,4096,32768,262144,524288,33554432,134217728,0,0,24,32,128,1280,8192,16384,8192,524288,16777216,33554432,402653184,0,4,8,16,1024,2048,8192,16384,32768,458752,0,262144,33554432,134217728,0,512,1024,16777216,33554432,402653184,0,4096,1048576,0,0,1998,59238400,-67108864,4,8,16,402653184,0,0,8,16,402653184,536870912,0,0,4,64,128,8388608,0,0,67108866,12,64,128,512,1024,4,16384,65536,67108864,0,65536,0,0,2048,64,64,64,96,96,96,96,0,8192,8192,268435460,32768,65536,2490368,16777216,2147483648,0,0,1,4,8,2048,8192,3670016,2048,2048,2048,2048,0,8192,34816,9216,4096,0,128,0,2097152,0,0,4096,4096,29696,29712,29840,29712,29712,29840,29840,536900624,4224144,144384,144384,144384,144384,-754647956,-754647956,-754647956,-754647956,-754647956,-754647940,-754647940,-754647940,-754647940,-754516884,-754647956,-754516884,-754516884,-754516884,4,8,256,512,2048,0,0,3670016,0,0,2048,131072,524288,4194304,2147483648,0,0,9216,0,0,4,134217728,0,29696,0,0,4,268435456,0,16,0,29824,0,60,64576,319029248,-1073741824,0,0,319160320,0,0,0,319160320,0,0,524288,3145728,0,12288,131072,0,8,131072,61440,262144,318767104,-1073741824,0,0,64,1024,2048,61440,262144,0,28,32,64,64,64,128,0,0,16384,32768,50331648,268435456,0,0,0,393216,0,0,0,486539264,0,128,0,536870912,0,0,12,16,32,327155712,34,1056,32,32,42,4457568,-326784344,-322851160,-322698144,-322698144,-322698144,-322698144,-322695456,0,0,524288,1048576,0,0,0,536870912,4194304,131072,0,0,6,56,128,1792,2,67108864,16384,0,0,4096,4194304,32768,0,0,0,8388608,0,0,0,72,0,8,64,2048,57344,16384,32768,262144,50331648,268435456,0,524288,1048576,2097152,4194304,134217728,2147483648,0,0,50331648,268435456,2147483648,0,0,1,0,0,2,4,16,64,1,0,2,0,0,65536,0,0,0,1040,8667136,0,131072,131072,0,131072,0,131072,0,0,524288,536870912,131072,0,0,7,27756528,-503316480,0,256,0,2048,32768,8388608,262144,2113536,0,0,8,16,512,402653184,0,0,0,256,32768,0,0,4224,65536,262144,1048576,4194304,16777216,33554432,67108864,134217728,0,0,256,262144,0,0,8192,268435456,0,0,0,4,131073,0,0,9728,268435456,0,0,16,393216,0,131073,131073,33554624,4,0,131073,0,0,13312,131072,4194304,-2146430976,131072,2097152,16777216,0,0,512,131072,1048576,2097152,0,1572864,0,0,0,2147483648,524288,0,1610612736,1610612736,1610612736,393241,393241,393241,393241,805707793,805707793,1879449617,805708049,1879449617,1879449617,1879449617,1879449617,-483948553,-475559945,-483948553,-475559945,-483948553,-483948553,-475559945,-475559945,-475559945,-475559945,-483948553,-483948553,-215504905,-475559945,-207116297,-207116297,0,0,0,1073741824,0,0,2097152,67108864,134217728,536870912,0,0,24576,0,0,0,2113536,0,0,8,64,0,0,0,401424,805306368,0,0,28672,0,0,4096,2097152,4194304,8388608,503316480,1073741824,0,0,1879048192,0,0,32768,2097152,8388608,16777216,33554432,0,401680,0,0,8,512,2048,131072,33554432,536870912,0,0,7,19367920,-503316480,27756528,-503316480,0,0,0,0,0,19376112,-234881024,0,27764720,-234881024,0,0,32768,33554436,0,0,33554436,24,0,0,0,11,346112,7,16,480,1536,32768,65536,393216,10485760,65536,10878976,16777216,33554432,536870912,4,32,524288,1048576,33554432,67108864,65536,393216,2097152,16777216,262400,65536,4224,4224,0,65536,201326592,2147483648,393216,10485760,16777216,33554432,1073741824,2147483648,0,16,224,256,1536,32768,65536,0,16384,2097152,0,0,1024,32768,65536,131072,262144,262144,2097152,16777216,33554432,4,32,524288,134217728,0,512,32768,131072,262144,2097152,2097152,8388608,16777216,1073741824,0,0,512,32768,131072,2097152,8388608,8388608,16777216,0,0,16,33554432,4,16,224,512,32768,4,524288,134217728,0,0,32768,50331648,268435456,4096,32768,0,0,16,536870912,16,192,32768,8388608,4096,4096,4096,1536,2,4,16,192,32768,0,16,64,128,8388608,0,0,0,2,4,134217728,4,0,0,128,512,3072,4096,16384,131072,4,128,0,0,18,17825792,524288,8388608,33554432,2147483648,8192,0,33554432,0,0,33554432,0,0,0,268435456,2,4,8,262144,262144,1048576,2048,32768,0,0,28,0,100663296,4224,65536,65536,262144,33554432,0,2,4,24,-1072627712,805306384,-1342177264,-1342177264,-1070006272,-1070006272,-1069989376,-1069989376,-258932720,-258932720,-258932720,-258932720,-225378288,-1069989376,-1069989360,-1065795072,-1061600768,-258932720,-225378288,-258932720,-258932720,1260767,34815199,1260767,34815199,1260767,34815199,34815199,1260767,1260767,34815199,1260767,1260767,169032927,-1978450721,169032927,-1978450721,169032927,169032927,169032927,169032927,1242774751,-1978450721,-1978450721,-225231649,-1173144353,-225231649,-91013921,0,0,32,128,256,262144,524288,8388608,0,64,0,0,1114112,1073741824,0,0,34816,0,0,2048,4194304,0,0,0,3735552,0,0,32,512,2048,32768,262144,524288,3751936,0,0,0,48,0,0,528,7946240,12140544,9502720,1610612736,0,0,0,15360,1245184,0,0,134217728,128,15,9633792,0,0,0,2,12,80,128,7168,8192,7168,8192,196608,1048576,0,0,0,1,2,12,16,64,128,256,0,0,3145728,0,0,0,536870912,0,0,8192,65536,131072,1048576,0,0,0,2097152,0,16384,0,4194304,0,0,2097152,16384,0,0,131072,2097152,0,0,0,4096,0,0,8192,0,0,0,128,0,0,0,208,0,64,128,1024,4096,0,0,2,8,64,128,1024,2048,4096,8192,128,1024,4096,8192,0,0],r.TOKEN=["(0)","PragmaContents","DirCommentContents","DirPIContents","CDataSection","Wildcard","EQName","URILiteral","IntegerLiteral","DecimalLiteral","DoubleLiteral","StringLiteral","PredefinedEntityRef","'\"\"'","EscapeApos","ElementContentChar","QuotAttrContentChar","AposAttrContentChar","PITarget","NCName","QName","S","S","CharRef","CommentContents","EOF","'!'","'!='","'\"'","'#'","'#)'","'$'","'$$'","'%'","''''","'('","'(#'","'(:'","')'","'*'","'*'","'+'","','","'-'","'-->'","'.'","'..'","'/'","'//'","'/>'","':'","':)'","'::'","':='","';'","'<'","'<!--'","'</'","'<<'","'<='","'<?'","'='","'>'","'>='","'>>'","'?'","'?>'","'@'","'NaN'","'['","']'","'after'","'all'","'allowing'","'ancestor'","'ancestor-or-self'","'and'","'any'","'append'","'array'","'as'","'ascending'","'at'","'attribute'","'base-uri'","'before'","'boundary-space'","'break'","'by'","'case'","'cast'","'castable'","'catch'","'check'","'child'","'collation'","'collection'","'comment'","'constraint'","'construction'","'contains'","'content'","'context'","'continue'","'copy'","'copy-namespaces'","'count'","'decimal-format'","'decimal-separator'","'declare'","'default'","'delete'","'descendant'","'descendant-or-self'","'descending'","'diacritics'","'different'","'digit'","'distance'","'div'","'document'","'document-node'","'element'","'else'","'empty'","'empty-sequence'","'encoding'","'end'","'entire'","'eq'","'every'","'exactly'","'except'","'exit'","'external'","'false'","'first'","'following'","'following-sibling'","'for'","'foreach'","'foreign'","'from'","'ft-option'","'ftand'","'ftnot'","'ftor'","'function'","'ge'","'greatest'","'group'","'grouping-separator'","'gt'","'idiv'","'if'","'import'","'in'","'index'","'infinity'","'inherit'","'insensitive'","'insert'","'instance'","'integrity'","'intersect'","'into'","'is'","'item'","'json'","'json-item'","'jsoniq'","'key'","'language'","'last'","'lax'","'le'","'least'","'let'","'levels'","'loop'","'lowercase'","'lt'","'minus-sign'","'mod'","'modify'","'module'","'most'","'namespace'","'namespace-node'","'ne'","'next'","'no'","'no-inherit'","'no-preserve'","'node'","'nodes'","'not'","'null'","'object'","'occurs'","'of'","'on'","'only'","'option'","'or'","'order'","'ordered'","'ordering'","'paragraph'","'paragraphs'","'parent'","'pattern-separator'","'per-mille'","'percent'","'phrase'","'position'","'preceding'","'preceding-sibling'","'preserve'","'previous'","'processing-instruction'","'relationship'","'rename'","'replace'","'return'","'returning'","'revalidation'","'same'","'satisfies'","'schema'","'schema-attribute'","'schema-element'","'score'","'select'","'self'","'sensitive'","'sentence'","'sentences'","'skip'","'sliding'","'some'","'stable'","'start'","'stemming'","'stop'","'strict'","'strip'","'structured-item'","'switch'","'text'","'then'","'thesaurus'","'times'","'to'","'treat'","'true'","'try'","'tumbling'","'type'","'typeswitch'","'union'","'unique'","'unordered'","'updating'","'uppercase'","'using'","'validate'","'value'","'variable'","'version'","'weight'","'when'","'where'","'while'","'wildcards'","'window'","'with'","'without'","'word'","'words'","'zero-digit'","'{'","'{{'","'{|'","'|'","'||'","'|}'","'}'","'}}'"]},{}],10:[function(e,t,n){var r=n.XQueryParser=function i(e,t){function r(e,t){Vl=t,Ql=e,Gl=e.length,s(0,0,0)}function s(e,t,n){Dl=t,Pl=t,Hl=e,Bl=t,jl=n,Fl=0,Zl=n,Ul=-1,$l={},Vl.reset(Ql)}function o(){Vl.startNonterminal("Module",Pl);switch(Hl){case 274:Ll(199);break;default:_l=Hl}(_l==64274||_l==134930)&&u(),kl(275);switch(Hl){case 182:Ll(194);break;default:_l=Hl}switch(_l){case 94390:Nl(),a();break;default:Nl(),Ra()}Vl.endNonterminal("Module",Pl)}function u(){Vl.startNonterminal("VersionDecl",Pl),Sl(274),kl(116);switch(Hl){case 125:Sl(125),kl(17),Sl(11);break;default:Sl(263),kl(17),Sl(11),kl(109),Hl==125&&(Sl(125),kl(17),Sl(11))}kl(28),Nl(),c(),Vl.endNonterminal("VersionDecl",Pl)}function a(){Vl.startNonterminal("LibraryModule",Pl),f(),kl(138),Nl(),l(),Vl.endNonterminal("LibraryModule",Pl)}function f(){Vl.startNonterminal("ModuleDecl",Pl),Sl(182),kl(61),Sl(184),kl(249),Nl(),Ia(),kl(29),Sl(60),kl(15),Sl(7),kl(28),Nl(),c(),Vl.endNonterminal("ModuleDecl",Pl)}function l(){Vl.startNonterminal("Prolog",Pl);for(;;){kl(275);switch(Hl){case 108:Ll(214);break;case 153:Ll(202);break;default:_l=Hl}if(_l!=42604&&_l!=43628&&_l!=50284&&_l!=53356&&_l!=54380&&_l!=55916&&_l!=72300&&_l!=93337&&_l!=94316&&_l!=104044&&_l!=113772&&_l!=115353)break;switch(Hl){case 108:Ll(179);break;default:_l=Hl}if(_l==55916){_l=Kl(0,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{_(),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(0,Pl,_l)}}switch(_l){case-1:Nl(),M();break;case 94316:Nl(),O();break;case 153:Nl(),C();break;case 72300:Nl(),D();break;default:Nl(),h()}kl(28),Nl(),c()}for(;;){kl(275);switch(Hl){case 108:Ll(211);break;default:_l=Hl}if(_l!=16492&&_l!=48748&&_l!=51820&&_l!=74348&&_l!=79468&&_l!=82540&&_l!=101996&&_l!=131692&&_l!=134252)break;switch(Hl){case 108:Ll(175);break;default:_l=Hl}switch(_l){case 51820:Nl(),R();break;case 101996:Nl(),Q();break;default:Nl(),P()}kl(28),Nl(),c()}Vl.endNonterminal("Prolog",Pl)}function c(){Vl.startNonterminal("Separator",Pl),Sl(53),Vl.endNonterminal("Separator",Pl)}function h(){Vl.startNonterminal("Setter",Pl);switch(Hl){case 108:Ll(172);break;default:_l=Hl}if(_l==55916){_l=Kl(1,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{v(),_l=-2}catch(a){try{Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),w(),_l=-6}catch(f){_l=-9}}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(1,Pl,_l)}}switch(_l){case 43628:p();break;case-2:d();break;case 42604:m();break;case 50284:g();break;case 104044:y();break;case-6:b();break;case 113772:ko();break;case 53356:E();break;default:T()}Vl.endNonterminal("Setter",Pl)}function p(){Vl.startNonterminal("BoundarySpaceDecl",Pl),Sl(108),kl(33),Sl(85),kl(133);switch(Hl){case 214:Sl(214);break;default:Sl(241)}Vl.endNonterminal("BoundarySpaceDecl",Pl)}function d(){Vl.startNonterminal("DefaultCollationDecl",Pl),Sl(108),kl(46),Sl(109),kl(38),Sl(94),kl(15),Sl(7),Vl.endNonterminal("DefaultCollationDecl",Pl)}function v(){xl(108),kl(46),xl(109),kl(38),xl(94),kl(15),xl(7)}function m(){Vl.startNonterminal("BaseURIDecl",Pl),Sl(108),kl(32),Sl(83),kl(15),Sl(7),Vl.endNonterminal("BaseURIDecl",Pl)}function g(){Vl.startNonterminal("ConstructionDecl",Pl),Sl(108),kl(41),Sl(98),kl(133);switch(Hl){case 241:Sl(241);break;default:Sl(214)}Vl.endNonterminal("ConstructionDecl",Pl)}function y(){Vl.startNonterminal("OrderingModeDecl",Pl),Sl(108),kl(68),Sl(203),kl(131);switch(Hl){case 202:Sl(202);break;default:Sl(256)}Vl.endNonterminal("OrderingModeDecl",Pl)}function b(){Vl.startNonterminal("EmptyOrderDecl",Pl),Sl(108),kl(46),Sl(109),kl(67),Sl(201),kl(49),Sl(123),kl(121);switch(Hl){case 147:Sl(147);break;default:Sl(173)}Vl.endNonterminal("EmptyOrderDecl",Pl)}function w(){xl(108),kl(46),xl(109),kl(67),xl(201),kl(49),xl(123),kl(121);switch(Hl){case 147:xl(147);break;default:xl(173)}}function E(){Vl.startNonterminal("CopyNamespacesDecl",Pl),Sl(108),kl(44),Sl(104),kl(128),Nl(),S(),kl(25),Sl(41),kl(123),Nl(),x(),Vl.endNonterminal("CopyNamespacesDecl",Pl)}function S(){Vl.startNonterminal("PreserveMode",Pl);switch(Hl){case 214:Sl(214);break;default:Sl(190)}Vl.endNonterminal("PreserveMode",Pl)}function x(){Vl.startNonterminal("InheritMode",Pl);switch(Hl){case 157:Sl(157);break;default:Sl(189)}Vl.endNonterminal("InheritMode",Pl)}function T(){Vl.startNonterminal("DecimalFormatDecl",Pl),Sl(108),kl(114);switch(Hl){case 106:Sl(106),kl(255),Nl(),Ha();break;default:Sl(109),kl(45),Sl(106)}for(;;){kl(181);if(Hl==53)break;Nl(),N(),kl(29),Sl(60),kl(17),Sl(11)}Vl.endNonterminal("DecimalFormatDecl",Pl)}function N(){Vl.startNonterminal("DFPropertyName",Pl);switch(Hl){case 107:Sl(107);break;case 149:Sl(149);break;case 156:Sl(156);break;case 179:Sl(179);break;case 67:Sl(67);break;case 209:Sl(209);break;case 208:Sl(208);break;case 275:Sl(275);break;case 116:Sl(116);break;default:Sl(207)}Vl.endNonterminal("DFPropertyName",Pl)}function C(){Vl.startNonterminal("Import",Pl);switch(Hl){case 153:Ll(126);break;default:_l=Hl}switch(_l){case 115353:k();break;default:A()}Vl.endNonterminal("Import",Pl)}function k(){Vl.startNonterminal("SchemaImport",Pl),Sl(153),kl(73),Sl(225),kl(137),Hl!=7&&(Nl(),L()),kl(15),Sl(7),kl(108);if(Hl==81){Sl(81),kl(15),Sl(7);for(;;){kl(103);if(Hl!=41)break;Sl(41),kl(15),Sl(7)}}Vl.endNonterminal("SchemaImport",Pl)}function L(){Vl.startNonterminal("SchemaPrefix",Pl);switch(Hl){case 184:Sl(184),kl(249),Nl(),Ia(),kl(29),Sl(60);break;default:Sl(109),kl(47),Sl(121),kl(61),Sl(184)}Vl.endNonterminal("SchemaPrefix",Pl)}function A(){Vl.startNonterminal("ModuleImport",Pl),Sl(153),kl(60),Sl(182),kl(90),Hl==184&&(Sl(184),kl(249),Nl(),Ia(),kl(29),Sl(60)),kl(15),Sl(7),kl(108);if(Hl==81){Sl(81),kl(15),Sl(7);for(;;){kl(103);if(Hl!=41)break;Sl(41),kl(15),Sl(7)}}Vl.endNonterminal("ModuleImport",Pl)}function O(){Vl.startNonterminal("NamespaceDecl",Pl),Sl(108),kl(61),Sl(184),kl(249),Nl(),Ia(),kl(29),Sl(60),kl(15),Sl(7),Vl.endNonterminal("NamespaceDecl",Pl)}function M(){Vl.startNonterminal("DefaultNamespaceDecl",Pl),Sl(108),kl(46),Sl(109),kl(115);switch(Hl){case 121:Sl(121);break;default:Sl(145)}kl(61),Sl(184),kl(15),Sl(7),Vl.endNonterminal("DefaultNamespaceDecl",Pl)}function _(){xl(108),kl(46),xl(109),kl(115);switch(Hl){case 121:xl(121);break;default:xl(145)}kl(61),xl(184),kl(15),xl(7)}function D(){Vl.startNonterminal("FTOptionDecl",Pl),Sl(108),kl(52),Sl(141),kl(81),Nl(),Fu(),Vl.endNonterminal("FTOptionDecl",Pl)}function P(){Vl.startNonterminal("AnnotatedDecl",Pl),Sl(108);for(;;){kl(170);if(Hl!=32&&Hl!=257)break;switch(Hl){case 257:Nl(),H();break;default:Nl(),B()}}switch(Hl){case 262:Nl(),F();break;case 145:Nl(),wl();break;case 95:Nl(),da();break;case 155:Nl(),xa();break;default:Nl(),Ta()}Vl.endNonterminal("AnnotatedDecl",Pl)}function H(){Vl.startNonterminal("CompatibilityAnnotation",Pl),Sl(257),Vl.endNonterminal("CompatibilityAnnotation",Pl)}function B(){Vl.startNonterminal("Annotation",Pl),Sl(32),kl(255),Nl(),Ha(),kl(171);if(Hl==34){Sl(34),kl(154),Nl(),oi();for(;;){kl(101);if(Hl!=41)break;Sl(41),kl(154),Nl(),oi()}Sl(37)}Vl.endNonterminal("Annotation",Pl)}function j(){xl(32),kl(255),Ba(),kl(171);if(Hl==34){xl(34),kl(154),ui();for(;;){kl(101);if(Hl!=41)break;xl(41),kl(154),ui()}xl(37)}}function F(){Vl.startNonterminal("VarDecl",Pl),Sl(262),kl(21),Sl(31),kl(255),Nl(),hi(),kl(147),Hl==79&&(Nl(),ds()),kl(106);switch(Hl){case 52:Sl(52),kl(267),Nl(),I();break;default:Sl(133),kl(104),Hl==52&&(Sl(52),kl(267),Nl(),q())}Vl.endNonterminal("VarDecl",Pl)}function I(){Vl.startNonterminal("VarValue",Pl),_f(),Vl.endNonterminal("VarValue",Pl)}function q(){Vl.startNonterminal("VarDefaultValue",Pl),_f(),Vl.endNonterminal("VarDefaultValue",Pl)}function R(){Vl.startNonterminal("ContextItemDecl",Pl),Sl(108),kl(43),Sl(101),kl(55),Sl(165),kl(147),Hl==79&&(Sl(79),kl(260),Nl(),ws()),kl(106);switch(Hl){case 52:Sl(52),kl(267),Nl(),I();break;default:Sl(133),kl(104),Hl==52&&(Sl(52),kl(267),Nl(),q())}Vl.endNonterminal("ContextItemDecl",Pl)}function U(){Vl.startNonterminal("ParamList",Pl),W();for(;;){kl(101);if(Hl!=41)break;Sl(41),kl(21),Nl(),W()}Vl.endNonterminal("ParamList",Pl)}function z(){X();for(;;){kl(101);if(Hl!=41)break;xl(41),kl(21),X()}}function W(){Vl.startNonterminal("Param",Pl),Sl(31),kl(255),Nl(),Ha(),kl(143),Hl==79&&(Nl(),ds()),Vl.endNonterminal("Param",Pl)}function X(){xl(31),kl(255),Ba(),kl(143),Hl==79&&vs()}function V(){Vl.startNonterminal("FunctionBody",Pl),J(),Vl.endNonterminal("FunctionBody",Pl)}function $(){K()}function J(){Vl.startNonterminal("EnclosedExpr",Pl),Sl(276),kl(267),Nl(),G(),Sl(282),Vl.endNonterminal("EnclosedExpr",Pl)}function K(){xl(276),kl(267),Y(),xl(282)}function Q(){Vl.startNonterminal("OptionDecl",Pl),Sl(108),kl(66),Sl(199),kl(255),Nl(),Ha(),kl(17),Sl(11),Vl.endNonterminal("OptionDecl",Pl)}function G(){Vl.startNonterminal("Expr",Pl),_f();for(;;){if(Hl!=41)break;Sl(41),kl(267),Nl(),_f()}Vl.endNonterminal("Expr",Pl)}function Y(){Df();for(;;){if(Hl!=41)break;xl(41),kl(267),Df()}}function Z(){Vl.startNonterminal("FLWORExpr",Pl),tt();for(;;){kl(173);if(Hl==220)break;Nl(),rt()}Nl(),rn(),Vl.endNonterminal("FLWORExpr",Pl)}function et(){nt();for(;;){kl(173);if(Hl==220)break;it()}sn()}function tt(){Vl.startNonterminal("InitialClause",Pl);switch(Hl){case 137:Ll(141);break;default:_l=Hl}switch(_l){case 16009:st();break;case 174:vt();break;default:bt()}Vl.endNonterminal("InitialClause",Pl)}function nt(){switch(Hl){case 137:Ll(141);break;default:_l=Hl}switch(_l){case 16009:ot();break;case 174:mt();break;default:wt()}}function rt(){Vl.startNonterminal("IntermediateClause",Pl);switch(Hl){case 137:case 174:tt();break;case 266:It();break;case 148:Rt();break;case 105:jt();break;default:Kt()}Vl.endNonterminal("IntermediateClause",Pl)}function it(){switch(Hl){case 137:case 174:nt();break;case 266:qt();break;case 148:Ut();break;case 105:Ft();break;default:Qt()}}function st(){Vl.startNonterminal("ForClause",Pl),Sl(137),kl(21),Nl(),ut();for(;;){if(Hl!=41)break;Sl(41),kl(21),Nl(),ut()}Vl.endNonterminal("ForClause",Pl)}function ot(){xl(137),kl(21),at();for(;;){if(Hl!=41)break;xl(41),kl(21),at()}}function ut(){Vl.startNonterminal("ForBinding",Pl),Sl(31),kl(255),Nl(),hi(),kl(164),Hl==79&&(Nl(),ds()),kl(158),Hl==72&&(Nl(),ft()),kl(150),Hl==81&&(Nl(),ct()),kl(122),Hl==228&&(Nl(),pt()),kl(53),Sl(154),kl(267),Nl(),_f(),Vl.endNonterminal("ForBinding",Pl)}function at(){xl(31),kl(255),pi(),kl(164),Hl==79&&vs(),kl(158),Hl==72&&lt(),kl(150),Hl==81&&ht(),kl(122),Hl==228&&dt(),kl(53),xl(154),kl(267),Df()}function ft(){Vl.startNonterminal("AllowingEmpty",Pl),Sl(72),kl(49),Sl(123),Vl.endNonterminal("AllowingEmpty",Pl)}function lt(){xl(72),kl(49),xl(123)}function ct(){Vl.startNonterminal("PositionalVar",Pl),Sl(81),kl(21),Sl(31),kl(255),Nl(),hi(),Vl.endNonterminal("PositionalVar",Pl)}function ht(){xl(81),kl(21),xl(31),kl(255),pi()}function pt(){Vl.startNonterminal("FTScoreVar",Pl),Sl(228),kl(21),Sl(31),kl(255),Nl(),hi(),Vl.endNonterminal("FTScoreVar",Pl)}function dt(){xl(228),kl(21),xl(31),kl(255),pi()}function vt(){Vl.startNonterminal("LetClause",Pl),Sl(174),kl(96),Nl(),gt();for(;;){if(Hl!=41)break;Sl(41),kl(96),Nl(),gt()}Vl.endNonterminal("LetClause",Pl)}function mt(){xl(174),kl(96),yt();for(;;){if(Hl!=41)break;xl(41),kl(96),yt()}}function gt(){Vl.startNonterminal("LetBinding",Pl);switch(Hl){case 31:Sl(31),kl(255),Nl(),hi(),kl(105),Hl==79&&(Nl(),ds());break;default:pt()}kl(27),Sl(52),kl(267),Nl(),_f(),Vl.endNonterminal("LetBinding",Pl)}function yt(){switch(Hl){case 31:xl(31),kl(255),pi(),kl(105),Hl==79&&vs();break;default:dt()}kl(27),xl(52),kl(267),Df()}function bt(){Vl.startNonterminal("WindowClause",Pl),Sl(137),kl(135);switch(Hl){case 251:Nl(),Et();break;default:Nl(),xt()}Vl.endNonterminal("WindowClause",Pl)}function wt(){xl(137),kl(135);switch(Hl){case 251:St();break;default:Tt()}}function Et(){Vl.startNonterminal("TumblingWindowClause",Pl),Sl(251),kl(85),Sl(269),kl(21),Sl(31),kl(255),Nl(),hi(),kl(110),Hl==79&&(Nl(),ds()),kl(53),Sl(154),kl(267),Nl(),_f(),Nl(),Nt();if(Hl==126||Hl==198)Nl(),kt();Vl.endNonterminal("TumblingWindowClause",Pl)}function St(){xl(251),kl(85),xl(269),kl(21),xl(31),kl(255),pi(),kl(110),Hl==79&&vs(),kl(53),xl(154),kl(267),Df(),Ct(),(Hl==126||Hl==198)&&Lt()}function xt(){Vl.startNonterminal("SlidingWindowClause",Pl),Sl(234),kl(85),Sl(269),kl(21),Sl(31),kl(255),Nl(),hi(),kl(110),Hl==79&&(Nl(),ds()),kl(53),Sl(154),kl(267),Nl(),_f(),Nl(),Nt(),Nl(),kt(),Vl.endNonterminal("SlidingWindowClause",Pl)}function Tt(){xl(234),kl(85),xl(269),kl(21),xl(31),kl(255),pi(),kl(110),Hl==79&&vs(),kl(53),xl(154),kl(267),Df(),Ct(),Lt()}function Nt(){Vl.startNonterminal("WindowStartCondition",Pl),Sl(237),kl(163),Nl(),At(),kl(83),Sl(265),kl(267),Nl(),_f(),Vl.endNonterminal("WindowStartCondition",Pl)}function Ct(){xl(237),kl(163),Ot(),kl(83),xl(265),kl(267),Df()}function kt(){Vl.startNonterminal("WindowEndCondition",Pl),Hl==198&&Sl(198),kl(50),Sl(126),kl(163),Nl(),At(),kl(83),Sl(265),kl(267),Nl(),_f(),Vl.endNonterminal("WindowEndCondition",Pl)}function Lt(){Hl==198&&xl(198),kl(50),xl(126),kl(163),Ot(),kl(83),xl(265),kl(267),Df()}function At(){Vl.startNonterminal("WindowVars",Pl),Hl==31&&(Sl(31),kl(255),Nl(),Mt()),kl(159),Hl==81&&(Nl(),ct()),kl(153),Hl==215&&(Sl(215),kl(21),Sl(31),kl(255),Nl(),Dt()),kl(127),Hl==187&&(Sl(187),kl(21),Sl(31),kl(255),Nl(),Ht()),Vl.endNonterminal("WindowVars",Pl)}function Ot(){Hl==31&&(xl(31),kl(255),_t()),kl(159),Hl==81&&ht(),kl(153),Hl==215&&(xl(215),kl(21),xl(31),kl(255),Pt()),kl(127),Hl==187&&(xl(187),kl(21),xl(31),kl(255),Bt())}function Mt(){Vl.startNonterminal("CurrentItem",Pl),Ha(),Vl.endNonterminal("CurrentItem",Pl)}function _t(){Ba()}function Dt(){Vl.startNonterminal("PreviousItem",Pl),Ha(),Vl.endNonterminal("PreviousItem",Pl)}function Pt(){Ba()}function Ht(){Vl.startNonterminal("NextItem",Pl),Ha(),Vl.endNonterminal("NextItem",Pl)}function Bt(){Ba()}function jt(){Vl.startNonterminal("CountClause",Pl),Sl(105),kl(21),Sl(31),kl(255),Nl(),hi(),Vl.endNonterminal("CountClause",Pl)}function Ft(){xl(105),kl(21),xl(31),kl(255),pi()}function It(){Vl.startNonterminal("WhereClause",Pl),Sl(266),kl(267),Nl(),_f(),Vl.endNonterminal("WhereClause",Pl)}function qt(){xl(266),kl(267),Df()}function Rt(){Vl.startNonterminal("GroupByClause",Pl),Sl(148),kl(34),Sl(87),kl(267),Nl(),zt(),Vl.endNonterminal("GroupByClause",Pl)}function Ut(){xl(148),kl(34),xl(87),kl(267),Wt()}function zt(){Vl.startNonterminal("GroupingSpecList",Pl),Xt();for(;;){kl(176);if(Hl!=41)break;Sl(41),kl(267),Nl(),Xt()}Vl.endNonterminal("GroupingSpecList",Pl)}function Wt(){Vt();for(;;){kl(176);if(Hl!=41)break;xl(41),kl(267),Vt()}}function Xt(){Vl.startNonterminal("GroupingSpec",Pl);switch(Hl){case 31:Ll(255);break;default:_l=Hl}if(_l==3103||_l==35871||_l==36895||_l==37407||_l==37919||_l==38431||_l==39455||_l==39967||_l==40479||_l==40991||_l==41503||_l==42015||_l==42527||_l==43039||_l==43551||_l==44063||_l==45087||_l==45599||_l==46111||_l==46623||_l==47647||_l==48159||_l==49183||_l==49695||_l==50207||_l==51743||_l==52255||_l==52767||_l==53279||_l==53791||_l==54303||_l==55327||_l==55839||_l==56351||_l==56863||_l==57375||_l==57887||_l==60447||_l==60959||_l==61471||_l==61983||_l==62495||_l==63007||_l==63519||_l==64031||_l==64543||_l==65567||_l==66079||_l==67103||_l==67615||_l==68127||_l==68639||_l==69151||_l==69663||_l==70175||_l==72223||_l==74271||_l==74783||_l==75807||_l==76831||_l==77343||_l==77855||_l==78367||_l==78879||_l==79391||_l==81439||_l==81951||_l==82463||_l==82975||_l==83487||_l==83999||_l==84511||_l==85023||_l==85535||_l==87071||_l==87583||_l==88095||_l==89119||_l==90143||_l==91167||_l==92191||_l==92703||_l==93215||_l==94239||_l==94751||_l==95263||_l==97823||_l==98335||_l==99359||_l==101407||_l==101919||_l==102431||_l==102943||_l==103455||_l==103967||_l==105503||_l==108575||_l==109087||_l==110623||_l==111647||_l==112159||_l==112671||_l==113183||_l==113695||_l==114719||_l==115231||_l==115743||_l==116255||_l==116767||_l==117279||_l==119839||_l==120351||_l==120863||_l==121375||_l==122911||_l==123935||_l==124447||_l==124959||_l==127007||_l==127519||_l==128031||_l==128543||_l==129055||_l==129567||_l==130079||_l==131103||_l==131615||_l==133151||_l==133663||_l==134175||_l==134687||_l==136223||_l==136735||_l==138271||_l==140319){_l=Kl(2,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Jt(),kl(183);if(Hl==52||Hl==79)Hl==79&&vs(),kl(27),xl(52),kl(267),Df();Hl==94&&(xl(94),kl(15),xl(7)),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(2,Pl,_l)}}switch(_l){case-1:$t(),kl(183);if(Hl==52||Hl==79)Hl==79&&(Nl(),ds()),kl(27),Sl(52),kl(267),Nl(),_f();Hl==94&&(Sl(94),kl(15),Sl(7));break;default:_f()}Vl.endNonterminal("GroupingSpec",Pl)}function Vt(){switch(Hl){case 31:Ll(255);break;default:_l=Hl}if(_l==3103||_l==35871||_l==36895||_l==37407||_l==37919||_l==38431||_l==39455||_l==39967||_l==40479||_l==40991||_l==41503||_l==42015||_l==42527||_l==43039||_l==43551||_l==44063||_l==45087||_l==45599||_l==46111||_l==46623||_l==47647||_l==48159||_l==49183||_l==49695||_l==50207||_l==51743||_l==52255||_l==52767||_l==53279||_l==53791||_l==54303||_l==55327||_l==55839||_l==56351||_l==56863||_l==57375||_l==57887||_l==60447||_l==60959||_l==61471||_l==61983||_l==62495||_l==63007||_l==63519||_l==64031||_l==64543||_l==65567||_l==66079||_l==67103||_l==67615||_l==68127||_l==68639||_l==69151||_l==69663||_l==70175||_l==72223||_l==74271||_l==74783||_l==75807||_l==76831||_l==77343||_l==77855||_l==78367||_l==78879||_l==79391||_l==81439||_l==81951||_l==82463||_l==82975||_l==83487||_l==83999||_l==84511||_l==85023||_l==85535||_l==87071||_l==87583||_l==88095||_l==89119||_l==90143||_l==91167||_l==92191||_l==92703||_l==93215||_l==94239||_l==94751||_l==95263||_l==97823||_l==98335||_l==99359||_l==101407||_l==101919||_l==102431||_l==102943||_l==103455||_l==103967||_l==105503||_l==108575||_l==109087||_l==110623||_l==111647||_l==112159||_l==112671||_l==113183||_l==113695||_l==114719||_l==115231||_l==115743||_l==116255||_l==116767||_l==117279||_l==119839||_l==120351||_l==120863||_l==121375||_l==122911||_l==123935||_l==124447||_l==124959||_l==127007||_l==127519||_l==128031||_l==128543||_l==129055||_l==129567||_l==130079||_l==131103||_l==131615||_l==133151||_l==133663||_l==134175||_l==134687||_l==136223||_l==136735||_l==138271||_l==140319){_l=Kl(2,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Jt(),kl(183);if(Hl==52||Hl==79)Hl==79&&vs(),kl(27),xl(52),kl(267),Df();Hl==94&&(xl(94),kl(15),xl(7)),Jl(2,t,-1),_l=-3}catch(a){_l=-2,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(2,t,-2)}}}switch(_l){case-1:Jt(),kl(183);if(Hl==52||Hl==79)Hl==79&&vs(),kl(27),xl(52),kl(267),Df();Hl==94&&(xl(94),kl(15),xl(7));break;case-3:break;default:Df()}}function $t(){Vl.startNonterminal("GroupingVariable",Pl),Sl(31),kl(255),Nl(),hi(),Vl.endNonterminal("GroupingVariable",Pl)}function Jt(){xl(31),kl(255),pi()}function Kt(){Vl.startNonterminal("OrderByClause",Pl);switch(Hl){case 201:Sl(201),kl(34),Sl(87);break;default:Sl(236),kl(67),Sl(201),kl(34),Sl(87)}kl(267),Nl(),Gt(),Vl.endNonterminal("OrderByClause",Pl)}function Qt(){switch(Hl){case 201:xl(201),kl(34),xl(87);break;default:xl(236),kl(67),xl(201),kl(34),xl(87)}kl(267),Yt()}function Gt(){Vl.startNonterminal("OrderSpecList",Pl),Zt();for(;;){kl(176);if(Hl!=41)break;Sl(41),kl(267),Nl(),Zt()}Vl.endNonterminal("OrderSpecList",Pl)}function Yt(){en();for(;;){kl(176);if(Hl!=41)break;xl(41),kl(267),en()}}function Zt(){Vl.startNonterminal("OrderSpec",Pl),_f(),Nl(),tn(),Vl.endNonterminal("OrderSpec",Pl)}function en(){Df(),nn()}function tn(){Vl.startNonterminal("OrderModifier",Pl);if(Hl==80||Hl==113)switch(Hl){case 80:Sl(80);break;default:Sl(113)}kl(180);if(Hl==123){Sl(123),kl(121);switch(Hl){case 147:Sl(147);break;default:Sl(173)}}kl(177),Hl==94&&(Sl(94),kl(15),Sl(7)),Vl.endNonterminal("OrderModifier",Pl)}function nn(){if(Hl==80||Hl==113)switch(Hl){case 80:xl(80);break;default:xl(113)}kl(180);if(Hl==123){xl(123),kl(121);switch(Hl){case 147:xl(147);break;default:xl(173)}}kl(177),Hl==94&&(xl(94),kl(15),xl(7))}function rn(){Vl.startNonterminal("ReturnClause",Pl),Sl(220),kl(267),Nl(),_f(),Vl.endNonterminal("ReturnClause",Pl)}function sn(){xl(220),kl(267),Df()}function on(){Vl.startNonterminal("QuantifiedExpr",Pl);switch(Hl){case 235:Sl(235);break;default:Sl(129)}kl(21),Nl(),an();for(;;){if(Hl!=41)break;Sl(41),kl(21),Nl(),an()}Sl(224),kl(267),Nl(),_f(),Vl.endNonterminal("QuantifiedExpr",Pl)}function un(){switch(Hl){case 235:xl(235);break;default:xl(129)}kl(21),fn();for(;;){if(Hl!=41)break;xl(41),kl(21),fn()}xl(224),kl(267),Df()}function an(){Vl.startNonterminal("QuantifiedVarDecl",Pl),Sl(31),kl(255),Nl(),hi(),kl(110),Hl==79&&(Nl(),ds()),kl(53),Sl(154),kl(267),Nl(),_f(),Vl.endNonterminal("QuantifiedVarDecl",Pl)}function fn(){xl(31),kl(255),pi(),kl(110),Hl==79&&vs(),kl(53),xl(154),kl(267),Df()}function ln(){Vl.startNonterminal("SwitchExpr",Pl),Sl(243),kl(22),Sl(34),kl(267),Nl(),G(),Sl(37);for(;;){kl(35),Nl(),hn();if(Hl!=88)break}Sl(109),kl(70),Sl(220),kl(267),Nl(),_f(),Vl.endNonterminal("SwitchExpr",Pl)}function cn(){xl(243),kl(22),xl(34),kl(267),Y(),xl(37);for(;;){kl(35),pn();if(Hl!=88)break}xl(109),kl(70),xl(220),kl(267),Df()}function hn(){Vl.startNonterminal("SwitchCaseClause",Pl);for(;;){Sl(88),kl(267),Nl(),dn();if(Hl!=88)break}Sl(220),kl(267),Nl(),_f(),Vl.endNonterminal("SwitchCaseClause",Pl)}function pn(){for(;;){xl(88),kl(267),vn();if(Hl!=88)break}xl(220),kl(267),Df()}function dn(){Vl.startNonterminal("SwitchCaseOperand",Pl),_f(),Vl.endNonterminal("SwitchCaseOperand",Pl)}function vn(){Df()}function mn(){Vl.startNonterminal("TypeswitchExpr",Pl),Sl(253),kl(22),Sl(34),kl(267),Nl(),G(),Sl(37);for(;;){kl(35),Nl(),yn();if(Hl!=88)break}Sl(109),kl(95),Hl==31&&(Sl(31),kl(255),Nl(),hi()),kl(70),Sl(220),kl(267),Nl(),_f(),Vl.endNonterminal("TypeswitchExpr",Pl)}function gn(){xl(253),kl(22),xl(34),kl(267),Y(),xl(37);for(;;){kl(35),bn();if(Hl!=88)break}xl(109),kl(95),Hl==31&&(xl(31),kl(255),pi()),kl(70),xl(220),kl(267),Df()}function yn(){Vl.startNonterminal("CaseClause",Pl),Sl(88),kl(262),Hl==31&&(Sl(31),kl(255),Nl(),hi(),kl(30),Sl(79)),kl(260),Nl(),wn(),Sl(220),kl(267),Nl(),_f(),Vl.endNonterminal("CaseClause",Pl)}function bn(){xl(88),kl(262),Hl==31&&(xl(31),kl(255),pi(),kl(30),xl(79)),kl(260),En(),xl(220),kl(267),Df()}function wn(){Vl.startNonterminal("SequenceTypeUnion",Pl),ms();for(;;){kl(134);if(Hl!=279)break;Sl(279),kl(260),Nl(),ms()}Vl.endNonterminal("SequenceTypeUnion",Pl)}function En(){gs();for(;;){kl(134);if(Hl!=279)break;xl(279),kl(260),gs()}}function Sn(){Vl.startNonterminal("IfExpr",Pl),Sl(152),kl(22),Sl(34),kl(267),Nl(),G(),Sl(37),kl(77),Sl(245),kl(267),Nl(),_f(),Sl(122),kl(267),Nl(),_f(),Vl.endNonterminal("IfExpr",Pl)}function xn(){xl(152),kl(22),xl(34),kl(267),Y(),xl(37),kl(77),xl(245),kl(267),Df(),xl(122),kl(267),Df()}function Tn(){Vl.startNonterminal("TryCatchExpr",Pl),Cn();for(;;){kl(36),Nl(),On(),kl(184);if(Hl!=91)break}Vl.endNonterminal("TryCatchExpr",Pl)}function Nn(){kn();for(;;){kl(36),Mn(),kl(184);if(Hl!=91)break}}function Cn(){Vl.startNonterminal("TryClause",Pl),Sl(250),kl(87),Sl(276),kl(267),Nl(),Ln(),Sl(282),Vl.endNonterminal("TryClause",Pl)}function kn(){xl(250),kl(87),xl(276),kl(267),An(),xl(282)}function Ln(){Vl.startNonterminal("TryTargetExpr",Pl),G(),Vl.endNonterminal("TryTargetExpr",Pl)}function An(){Y()}function On(){Vl.startNonterminal("CatchClause",Pl),Sl(91),kl(257),Nl(),_n(),Sl(276),kl(267),Nl(),G(),Sl(282),Vl.endNonterminal("CatchClause",Pl)}function Mn(){xl(91),kl(257),Dn(),xl(276),kl(267),Y(),xl(282)}function _n(){Vl.startNonterminal("CatchErrorList",Pl),Qr();for(;;){kl(136);if(Hl!=279)break;Sl(279),kl(257),Nl(),Qr()}Vl.endNonterminal("CatchErrorList",Pl)}function Dn(){Gr();for(;;){kl(136);if(Hl!=279)break;xl(279),kl(257),Gr()}}function Pn(){Vl.startNonterminal("OrExpr",Pl),Bn();for(;;){if(Hl!=200)break;Sl(200),kl(267),Nl(),Bn()}Vl.endNonterminal("OrExpr",Pl)}function Hn(){jn();for(;;){if(Hl!=200)break;xl(200),kl(267),jn()}}function Bn(){Vl.startNonterminal("AndExpr",Pl),Fn();for(;;){if(Hl!=75)break;Sl(75),kl(267),Nl(),Fn()}Vl.endNonterminal("AndExpr",Pl)}function jn(){In();for(;;){if(Hl!=75)break;xl(75),kl(267),In()}}function Fn(){Vl.startNonterminal("ComparisonExpr",Pl),qn();if(Hl==27||Hl==54||Hl==57||Hl==58||Hl==60||Hl==61||Hl==62||Hl==63||Hl==128||Hl==146||Hl==150||Hl==164||Hl==172||Hl==178||Hl==186){switch(Hl){case 128:case 146:case 150:case 172:case 178:case 186:Nl(),mr();break;case 57:case 63:case 164:Nl(),yr();break;default:Nl(),dr()}kl(267),Nl(),qn()}Vl.endNonterminal("ComparisonExpr",Pl)}function In(){Rn();if(Hl==27||Hl==54||Hl==57||Hl==58||Hl==60||Hl==61||Hl==62||Hl==63||Hl==128||Hl==146||Hl==150||Hl==164||Hl==172||Hl==178||Hl==186){switch(Hl){case 128:case 146:case 150:case 172:case 178:case 186:gr();break;case 57:case 63:case 164:br();break;default:vr()}kl(267),Rn()}}function qn(){Vl.startNonterminal("FTContainsExpr",Pl),Un(),Hl==99&&(Sl(99),kl(76),Sl(244),kl(162),Nl(),Jo(),Hl==271&&(Nl(),ha())),Vl.endNonterminal("FTContainsExpr",Pl)}function Rn(){zn(),Hl==99&&(xl(99),kl(76),xl(244),kl(162),Ko(),Hl==271&&pa())}function Un(){Vl.startNonterminal("StringConcatExpr",Pl),Wn();for(;;){if(Hl!=280)break;Sl(280),kl(267),Nl(),Wn()}Vl.endNonterminal("StringConcatExpr",Pl)}function zn(){Xn();for(;;){if(Hl!=280)break;xl(280),kl(267),Xn()}}function Wn(){Vl.startNonterminal("RangeExpr",Pl),Vn(),Hl==248&&(Sl(248),kl(267),Nl(),Vn()),Vl.endNonterminal("RangeExpr",Pl)}function Xn(){$n(),Hl==248&&(xl(248),kl(267),$n())}function Vn(){Vl.startNonterminal("AdditiveExpr",Pl),Jn();for(;;){if(Hl!=40&&Hl!=42)break;switch(Hl){case 40:Sl(40);break;default:Sl(42)}kl(267),Nl(),Jn()}Vl.endNonterminal("AdditiveExpr",Pl)}function $n(){Kn();for(;;){if(Hl!=40&&Hl!=42)break;switch(Hl){case 40:xl(40);break;default:xl(42)}kl(267),Kn()}}function Jn(){Vl.startNonterminal("MultiplicativeExpr",Pl),Qn();for(;;){if(Hl!=38&&Hl!=118&&Hl!=151&&Hl!=180)break;switch(Hl){case 38:Sl(38);break;case 118:Sl(118);break;case 151:Sl(151);break;default:Sl(180)}kl(267),Nl(),Qn()}Vl.endNonterminal("MultiplicativeExpr",Pl)}function Kn(){Gn();for(;;){if(Hl!=38&&Hl!=118&&Hl!=151&&Hl!=180)break;switch(Hl){case 38:xl(38);break;case 118:xl(118);break;case 151:xl(151);break;default:xl(180)}kl(267),Gn()}}function Qn(){Vl.startNonterminal("UnionExpr",Pl),Yn();for(;;){if(Hl!=254&&Hl!=279)break;switch(Hl){case 254:Sl(254);break;default:Sl(279)}kl(267),Nl(),Yn()}Vl.endNonterminal("UnionExpr",Pl)}function Gn(){Zn();for(;;){if(Hl!=254&&Hl!=279)break;switch(Hl){case 254:xl(254);break;default:xl(279)}kl(267),Zn()}}function Yn(){Vl.startNonterminal("IntersectExceptExpr",Pl),er();for(;;){kl(223);if(Hl!=131&&Hl!=162)break;switch(Hl){case 162:Sl(162);break;default:Sl(131)}kl(267),Nl(),er()}Vl.endNonterminal("IntersectExceptExpr",Pl)}function Zn(){tr();for(;;){kl(223);if(Hl!=131&&Hl!=162)break;switch(Hl){case 162:xl(162);break;default:xl(131)}kl(267),tr()}}function er(){Vl.startNonterminal("InstanceofExpr",Pl),nr(),kl(224),Hl==160&&(Sl(160),kl(64),Sl(196),kl(260),Nl(),ms()),Vl.endNonterminal("InstanceofExpr",Pl)}function tr(){rr(),kl(224),Hl==160&&(xl(160),kl(64),xl(196),kl(260),gs())}function nr(){Vl.startNonterminal("TreatExpr",Pl),ir(),kl(225),Hl==249&&(Sl(249),kl(30),Sl(79),kl(260),Nl(),ms()),Vl.endNonterminal("TreatExpr",Pl)}function rr(){sr(),kl(225),Hl==249&&(xl(249),kl(30),xl(79),kl(260),gs())}function ir(){Vl.startNonterminal("CastableExpr",Pl),or(),kl(226),Hl==90&&(Sl(90),kl(30),Sl(79),kl(255),Nl(),hs()),Vl.endNonterminal("CastableExpr",Pl)}function sr(){ur(),kl(226),Hl==90&&(xl(90),kl(30),xl(79),kl(255),ps())}function or(){Vl.startNonterminal("CastExpr",Pl),ar(),kl(228),Hl==89&&(Sl(89),kl(30),Sl(79),kl(255),Nl(),hs()),Vl.endNonterminal("CastExpr",Pl)}function ur(){fr(),kl(228),Hl==89&&(xl(89),kl(30),xl(79),kl(255),ps())}function ar(){Vl.startNonterminal("UnaryExpr",Pl);for(;;){kl(267);if(Hl!=40&&Hl!=42)break;switch(Hl){case 42:Sl(42);break;default:Sl(40)}}Nl(),lr(),Vl.endNonterminal("UnaryExpr",Pl)}function fr(){for(;;){kl(267);if(Hl!=40&&Hl!=42)break;switch(Hl){case 42:xl(42);break;default:xl(40)}}cr()}function lr(){Vl.startNonterminal("ValueExpr",Pl);switch(Hl){case 260:Ll(248);break;default:_l=Hl}switch(_l){case 87812:case 123140:case 129284:case 141572:wr();break;case 35:Tr();break;default:hr()}Vl.endNonterminal("ValueExpr",Pl)}function cr(){switch(Hl){case 260:Ll(248);break;default:_l=Hl}switch(_l){case 87812:case 123140:case 129284:case 141572:Er();break;case 35:Nr();break;default:pr()}}function hr(){Vl.startNonterminal("SimpleMapExpr",Pl),Lr();for(;;){if(Hl!=26)break;Sl(26),kl(266),Nl(),Lr()}Vl.endNonterminal("SimpleMapExpr",Pl)}function pr(){Ar();for(;;){if(Hl!=26)break;xl(26),kl(266),Ar()}}function dr(){Vl.startNonterminal("GeneralComp",Pl);switch(Hl){case 60:Sl(60);break;case 27:Sl(27);break;case 54:Sl(54);break;case 58:Sl(58);break;case 61:Sl(61);break;default:Sl(62)}Vl.endNonterminal("GeneralComp",Pl)}function vr(){switch(Hl){case 60:xl(60);break;case 27:xl(27);break;case 54:xl(54);break;case 58:xl(58);break;case 61:xl(61);break;default:xl(62)}}function mr(){Vl.startNonterminal("ValueComp",Pl);switch(Hl){case 128:Sl(128);break;case 186:Sl(186);break;case 178:Sl(178);break;case 172:Sl(172);break;case 150:Sl(150);break;default:Sl(146)}Vl.endNonterminal("ValueComp",Pl)}function gr(){switch(Hl){case 128:xl(128);break;case 186:xl(186);break;case 178:xl(178);break;case 172:xl(172);break;case 150:xl(150);break;default:xl(146)}}function yr(){Vl.startNonterminal("NodeComp",Pl);switch(Hl){case 164:Sl(164);break;case 57:Sl(57);break;default:Sl(63)}Vl.endNonterminal("NodeComp",Pl)}function br(){switch(Hl){case 164:xl(164);break;case 57:xl(57);break;default:xl(63)}}function wr(){Vl.startNonterminal("ValidateExpr",Pl),Sl(260),kl(160);if(Hl!=276)switch(Hl){case 252:Sl(252),kl(255),Nl(),go();break;default:Nl(),Sr()}kl(87),Sl(276),kl(267),Nl(),G(),Sl(282),Vl.endNonterminal("ValidateExpr",Pl)}function Er(){xl(260),kl(160);if(Hl!=276)switch(Hl){case 252:xl(252),kl(255),yo();break;default:xr()}kl(87),xl(276),kl(267),Y(),xl(282)}function Sr(){Vl.startNonterminal("ValidationMode",Pl);switch(Hl){case 171:Sl(171);break;default:Sl(240)}Vl.endNonterminal("ValidationMode",Pl)}function xr(){switch(Hl){case 171:xl(171);break;default:xl(240)}}function Tr(){Vl.startNonterminal("ExtensionExpr",Pl);for(;;){Nl(),Cr(),kl(100);if(Hl!=35)break}Sl(276),kl(274),Hl!=282&&(Nl(),G()),Sl(282),Vl.endNonterminal("ExtensionExpr",Pl)}function Nr(){for(;;){kr(),kl(100);if(Hl!=35)break}xl(276),kl(274),Hl!=282&&Y(),xl(282)}function Cr(){Vl.startNonterminal("Pragma",Pl),Sl(35),Al(252),Hl==21&&Sl(21),Ha(),Al(10),Hl==21&&(Sl(21),Al(0),Sl(1)),Al(5),Sl(30),Vl.endNonterminal("Pragma",Pl)}function kr(){xl(35),Al(252),Hl==21&&xl(21),Ba(),Al(10),Hl==21&&(xl(21),Al(0),xl(1)),Al(5),xl(30)}function Lr(){Vl.startNonterminal("PathExpr",Pl);switch(Hl){case 46:Sl(46),kl(286);switch(Hl){case 25:case 26:case 27:case 37:case 38:case 40:case 41:case 42:case 49:case 53:case 57:case 58:case 60:case 61:case 62:case 63:case 69:case 87:case 99:case 205:case 232:case 247:case 273:case 279:case 280:case 281:case 282:break;default:Nl(),Or()}break;case 47:Sl(47),kl(265),Nl(),Or();break;default:Or()}Vl.endNonterminal("PathExpr",Pl)}function Ar(){switch(Hl){case 46:xl(46),kl(286);switch(Hl){case 25:case 26:case 27:case 37:case 38:case 40:case 41:case 42:case 49:case 53:case 57:case 58:case 60:case 61:case 62:case 63:case 69:case 87:case 99:case 205:case 232:case 247:case 273:case 279:case 280:case 281:case 282:break;default:Mr()}break;case 47:xl(47),kl(265),Mr();break;default:Mr()}}function Or(){Vl.startNonterminal("RelativePathExpr",Pl),_r();for(;;){switch(Hl){case 26:Ll(266);break;default:_l=Hl}if(_l!=25&&_l!=27&&_l!=37&&_l!=38&&_l!=40&&_l!=41&&_l!=42&&_l!=46&&_l!=47&&_l!=49&&_l!=53&&_l!=54&&_l!=57&&_l!=58&&_l!=60&&_l!=61&&_l!=62&&_l!=63&&_l!=69&&_l!=70&&_l!=75&&_l!=79&&_l!=80&&_l!=81&&_l!=84&&_l!=87&&_l!=88&&_l!=89&&_l!=90&&_l!=94&&_l!=99&&_l!=105&&_l!=109&&_l!=113&&_l!=118&&_l!=122&&_l!=123&&_l!=126&&_l!=128&&_l!=131&&_l!=137&&_l!=146&&_l!=148&&_l!=150&&_l!=151&&_l!=160&&_l!=162&&_l!=163&&_l!=164&&_l!=172&&_l!=174&&_l!=178&&_l!=180&&_l!=181&&_l!=186&&_l!=198&&_l!=200&&_l!=201&&_l!=205&&_l!=220&&_l!=224&&_l!=232&&_l!=236&&_l!=237&&_l!=247&&_l!=248&&_l!=249&&_l!=254&&_l!=266&&_l!=270&&_l!=273&&_l!=279&&_l!=280&&_l!=281&&_l!=282&&_l!=23578&&_l!=24090){_l=Kl(3,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{switch(Hl){case 46:xl(46);break;case 47:xl(47);break;default:xl(26)}kl(265),Dr(),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(3,Pl,_l)}}if(_l!=-1&&_l!=46&&_l!=47)break;switch(Hl){case 46:Sl(46);break;case 47:Sl(47);break;default:Sl(26)}kl(265),Nl(),_r()}Vl.endNonterminal("RelativePathExpr",Pl)}function Mr(){Dr();for(;;){switch(Hl){case 26:Ll(266);break;default:_l=Hl}if(_l!=25&&_l!=27&&_l!=37&&_l!=38&&_l!=40&&_l!=41&&_l!=42&&_l!=46&&_l!=47&&_l!=49&&_l!=53&&_l!=54&&_l!=57&&_l!=58&&_l!=60&&_l!=61&&_l!=62&&_l!=63&&_l!=69&&_l!=70&&_l!=75&&_l!=79&&_l!=80&&_l!=81&&_l!=84&&_l!=87&&_l!=88&&_l!=89&&_l!=90&&_l!=94&&_l!=99&&_l!=105&&_l!=109&&_l!=113&&_l!=118&&_l!=122&&_l!=123&&_l!=126&&_l!=128&&_l!=131&&_l!=137&&_l!=146&&_l!=148&&_l!=150&&_l!=151&&_l!=160&&_l!=162&&_l!=163&&_l!=164&&_l!=172&&_l!=174&&_l!=178&&_l!=180&&_l!=181&&_l!=186&&_l!=198&&_l!=200&&_l!=201&&_l!=205&&_l!=220&&_l!=224&&_l!=232&&_l!=236&&_l!=237&&_l!=247&&_l!=248&&_l!=249&&_l!=254&&_l!=266&&_l!=270&&_l!=273&&_l!=279&&_l!=280&&_l!=281&&_l!=282&&_l!=23578&&_l!=24090){_l=Kl(3,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{switch(Hl){case 46:xl(46);break;case 47:xl(47);break;default:xl(26)}kl(265),Dr(),Jl(3,t,-1);continue}catch(a){Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(3,t,-2);break}}}if(_l!=-1&&_l!=46&&_l!=47)break;switch(Hl){case 46:xl(46);break;case 47:xl(47);break;default:xl(26)}kl(265),Dr()}}function _r(){Vl.startNonterminal("StepExpr",Pl);switch(Hl){case 82:Ll(285);break;case 121:Ll(283);break;case 184:case 216:Ll(282);break;case 96:case 119:case 202:case 244:case 256:Ll(247);break;case 78:case 124:case 152:case 165:case 167:case 242:case 243:case 253:Ll(240);break;case 73:case 74:case 93:case 111:case 112:case 135:case 136:case 206:case 212:case 213:case 229:Ll(246);break;case 6:case 70:case 72:case 75:case 77:case 79:case 80:case 81:case 83:case 84:case 85:case 86:case 88:case 89:case 90:case 91:case 94:case 97:case 98:case 101:case 102:case 103:case 104:case 105:case 106:case 108:case 109:case 110:case 113:case 118:case 120:case 122:case 123:case 125:case 126:case 128:case 129:case 131:case 132:case 133:case 134:case 137:case 141:case 145:case 146:case 148:case 150:case 151:case 153:case 154:case 155:case 159:case 160:case 161:case 162:case 163:case 164:case 166:case 170:case 171:case 172:case 174:case 176:case 178:case 180:case 181:case 182:case 185:case 186:case 191:case 192:case 194:case 198:case 199:case 200:case 201:case 203:case 218:case 219:case 220:case 221:case 222:case 224:case 225:case 226:case 227:case 228:case 234:case 235:case 236:case 237:case 240:case 248:case 249:case 250:case 251:case 252:case 254:case 257:case 260:case 261:case 262:case 263:case 266:case 267:case 270:case 274:Ll(244);break;default:_l=Hl}if(_l==35922||_l==35961||_l==36024||_l==36056||_l==38482||_l==38521||_l==38584||_l==38616||_l==40530||_l==40569||_l==40632||_l==40664||_l==41042||_l==41081||_l==41144||_l==41176||_l==41554||_l==41593||_l==41656||_l==41688||_l==43090||_l==43129||_l==43192||_l==43224||_l==45138||_l==45177||_l==45240||_l==45272||_l==45650||_l==45689||_l==45752||_l==45784||_l==46162||_l==46201||_l==46264||_l==46296||_l==48210||_l==48249||_l==48312||_l==48344||_l==53842||_l==53881||_l==53944||_l==53976||_l==55890||_l==55929||_l==55992||_l==56024||_l==57938||_l==57977||_l==58040||_l==58072||_l==60498||_l==60537||_l==60600||_l==60632||_l==62546||_l==62585||_l==62648||_l==62680||_l==63058||_l==63097||_l==63160||_l==63192||_l==64594||_l==64633||_l==64696||_l==64728||_l==65618||_l==65657||_l==65720||_l==65752||_l==67154||_l==67193||_l==67256||_l==67288||_l==70226||_l==70265||_l==70328||_l==70360||_l==74834||_l==74873||_l==74936||_l==74968||_l==75858||_l==75897||_l==75960||_l==75992||_l==76882||_l==76921||_l==76984||_l==77016||_l==77394||_l==77433||_l==77496||_l==77528||_l==82002||_l==82041||_l==82104||_l==82136||_l==83026||_l==83065||_l==83128||_l==83160||_l==83538||_l==83577||_l==83640||_l==83672||_l==84050||_l==84089||_l==84152||_l==84184||_l==88146||_l==88185||_l==88248||_l==88280||_l==89170||_l==89209||_l==89272||_l==89304||_l==91218||_l==91257||_l==91320||_l==91352||_l==92242||_l==92281||_l==92344||_l==92376||_l==92754||_l==92793||_l==92856||_l==92888||_l==95314||_l==95353||_l==95416||_l==95448||_l==101458||_l==101497||_l==101560||_l==101592||_l==102482||_l==102521||_l==102584||_l==102616||_l==102994||_l==103033||_l==103096||_l==103128||_l==112722||_l==112761||_l==112824||_l==112856||_l==114770||_l==114809||_l==114872||_l==114904||_l==120914||_l==120953||_l==121016||_l==121048||_l==121426||_l==121465||_l==121528||_l==121560||_l==127058||_l==127097||_l==127160||_l==127192||_l==127570||_l==127609||_l==127672||_l==127704||_l==130130||_l==130169||_l==130232||_l==130264||_l==136274||_l==136313||_l==136376||_l==136408||_l==138322||_l==138361||_l==138424||_l==138456){_l=Kl(4,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Zr(),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(4,Pl,_l)}}switch(_l){case-1:case 8:case 9:case 10:case 11:case 31:case 32:case 34:case 44:case 54:case 55:case 59:case 68:case 276:case 278:case 3154:case 3193:case 9912:case 9944:case 14854:case 14918:case 14920:case 14921:case 14922:case 14923:case 14925:case 14926:case 14927:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14936:case 14937:case 14938:case 14939:case 14941:case 14942:case 14944:case 14945:case 14946:case 14949:case 14950:case 14951:case 14952:case 14953:case 14954:case 14956:case 14957:case 14958:case 14959:case 14960:case 14961:case 14966:case 14967:case 14968:case 14969:case 14970:case 14971:case 14972:case 14973:case 14974:case 14976:case 14977:case 14979:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14989:case 14993:case 14994:case 14996:case 14998:case 14999:case 15e3:case 15001:case 15002:case 15003:case 15007:case 15008:case 15009:case 15010:case 15011:case 15012:case 15013:case 15014:case 15015:case 15018:case 15019:case 15020:case 15022:case 15024:case 15026:case 15028:case 15029:case 15030:case 15032:case 15033:case 15034:case 15039:case 15040:case 15042:case 15046:case 15047:case 15048:case 15049:case 15050:case 15051:case 15054:case 15060:case 15061:case 15064:case 15066:case 15067:case 15068:case 15069:case 15070:case 15072:case 15073:case 15074:case 15075:case 15076:case 15077:case 15082:case 15083:case 15084:case 15085:case 15088:case 15090:case 15091:case 15092:case 15096:case 15097:case 15098:case 15099:case 15100:case 15101:case 15102:case 15104:case 15105:case 15108:case 15109:case 15110:case 15111:case 15114:case 15115:case 15118:case 15122:case 17414:case 17478:case 17480:case 17481:case 17482:case 17483:case 17485:case 17487:case 17488:case 17489:case 17491:case 17492:case 17493:case 17494:case 17496:case 17497:case 17498:case 17499:case 17501:case 17502:case 17505:case 17506:case 17509:case 17510:case 17511:case 17512:case 17513:case 17514:case 17516:case 17517:case 17518:case 17519:case 17520:case 17521:case 17526:case 17527:case 17530:case 17531:case 17533:case 17534:case 17536:case 17537:case 17539:case 17540:case 17541:case 17542:case 17543:case 17544:case 17545:case 17549:case 17553:case 17554:case 17556:case 17558:case 17559:case 17561:case 17562:case 17563:case 17567:case 17568:case 17569:case 17570:case 17571:case 17572:case 17574:case 17578:case 17579:case 17580:case 17582:case 17584:case 17586:case 17588:case 17589:case 17590:case 17592:case 17594:case 17600:case 17602:case 17606:case 17607:case 17608:case 17609:case 17610:case 17611:case 17614:case 17620:case 17621:case 17626:case 17627:case 17628:case 17629:case 17630:case 17632:case 17633:case 17636:case 17637:case 17642:case 17643:case 17644:case 17645:case 17648:case 17656:case 17657:case 17658:case 17659:case 17660:case 17662:case 17664:case 17665:case 17668:case 17669:case 17670:case 17671:case 17674:case 17675:case 17678:case 17682:case 36946:case 36985:case 37048:case 37080:case 37458:case 37497:case 37560:case 37592:case 37970:case 38009:case 38072:case 38104:case 39506:case 39545:case 39608:case 39640:case 40018:case 40057:case 42066:case 42105:case 42168:case 42200:case 42578:case 42617:case 42680:case 42712:case 43602:case 43641:case 43704:case 43736:case 44114:case 44153:case 44216:case 44248:case 46674:case 46713:case 46776:case 46808:case 47698:case 47737:case 47800:case 47832:case 49234:case 49273:case 49336:case 49368:case 49746:case 49785:case 49848:case 49880:case 50258:case 50297:case 50360:case 50392:case 51794:case 51833:case 51896:case 51928:case 52306:case 52345:case 52408:case 52440:case 52818:case 52857:case 52920:case 52952:case 53330:case 53369:case 53432:case 53464:case 54354:case 54393:case 54456:case 54488:case 55378:case 55417:case 55480:case 55512:case 56402:case 56441:case 56504:case 56536:case 56914:case 56953:case 57016:case 57048:case 57426:case 57465:case 57528:case 57560:case 61010:case 61049:case 61112:case 61144:case 61522:case 61561:case 61624:case 61656:case 62034:case 62073:case 62136:case 62168:case 63570:case 63609:case 63672:case 63704:case 64082:case 64121:case 64184:case 64216:case 66130:case 66169:case 66232:case 66264:case 67666:case 67705:case 67768:case 67800:case 68178:case 68217:case 68280:case 68312:case 68690:case 68729:case 68792:case 68824:case 69202:case 69241:case 69304:case 69336:case 69714:case 69753:case 69816:case 69848:case 72274:case 72313:case 72376:case 72408:case 74322:case 74361:case 74424:case 74456:case 77906:case 77945:case 78008:case 78040:case 78418:case 78457:case 78520:case 78552:case 78930:case 78969:case 79032:case 79064:case 79442:case 79481:case 79544:case 79576:case 81490:case 81529:case 81592:case 81624:case 82514:case 82553:case 82616:case 82648:case 84562:case 84601:case 84664:case 84696:case 85074:case 85113:case 85176:case 85208:case 85586:case 85625:case 87122:case 87161:case 87224:case 87256:case 87634:case 87673:case 87736:case 87768:case 90194:case 90233:case 90296:case 90328:case 93266:case 93305:case 93368:case 93400:case 94290:case 94329:case 94392:case 94424:case 94802:case 94841:case 94904:case 94936:case 97874:case 97913:case 97976:case 98008:case 98386:case 98425:case 98488:case 98520:case 99410:case 99449:case 99512:case 99544:case 101970:case 102009:case 102072:case 102104:case 103506:case 103545:case 103608:case 103640:case 104018:case 104057:case 104120:case 104152:case 105554:case 105593:case 105656:case 105688:case 108626:case 108665:case 108728:case 108760:case 109138:case 109177:case 109240:case 109272:case 110674:case 110713:case 110776:case 110808:case 111698:case 111737:case 111800:case 111832:case 112210:case 112249:case 112312:case 112344:case 113234:case 113273:case 113336:case 113368:case 113746:case 113785:case 113848:case 113880:case 115282:case 115321:case 115384:case 115416:case 115794:case 115833:case 115896:case 115928:case 116306:case 116345:case 116408:case 116440:case 116818:case 116857:case 116920:case 116952:case 117330:case 117369:case 117432:case 117464:case 119890:case 119929:case 119992:case 120024:case 120402:case 120441:case 120504:case 120536:case 122962:case 123001:case 123064:case 123096:case 123986:case 124025:case 124498:case 124537:case 124600:case 124632:case 125010:case 125049:case 125112:case 125144:case 128082:case 128121:case 128184:case 128216:case 128594:case 128633:case 128696:case 128728:case 129106:case 129145:case 129208:case 129240:case 129618:case 129657:case 129720:case 129752:case 131154:case 131193:case 131256:case 131288:case 131666:case 131705:case 131768:case 131800:case 133202:case 133241:case 133304:case 133336:case 133714:case 133753:case 133816:case 133848:case 134226:case 134265:case 134328:case 134360:case 134738:case 134777:case 134840:case 134872:case 136786:case 136825:case 136888:case 136920:case 140370:case 140409:case 140472:case 140504:case 141394:case 141408:case 141431:case 141433:case 141496:case 141514:case 141528:case 141556:case 141568:Yr();break;default:Pr()}Vl.endNonterminal("StepExpr",Pl)}function Dr(){switch(Hl){case 82:Ll(285);break;case 121:Ll(283);break;case 184:case 216:Ll(282);break;case 96:case 119:case 202:case 244:case 256:Ll(247);break;case 78:case 124:case 152:case 165:case 167:case 242:case 243:case 253:Ll(240);break;case 73:case 74:case 93:case 111:case 112:case 135:case 136:case 206:case 212:case 213:case 229:Ll(246);break;case 6:case 70:case 72:case 75:case 77:case 79:case 80:case 81:case 83:case 84:case 85:case 86:case 88:case 89:case 90:case 91:case 94:case 97:case 98:case 101:case 102:case 103:case 104:case 105:case 106:case 108:case 109:case 110:case 113:case 118:case 120:case 122:case 123:case 125:case 126:case 128:case 129:case 131:case 132:case 133:case 134:case 137:case 141:case 145:case 146:case 148:case 150:case 151:case 153:case 154:case 155:case 159:case 160:case 161:case 162:case 163:case 164:case 166:case 170:case 171:case 172:case 174:case 176:case 178:case 180:case 181:case 182:case 185:case 186:case 191:case 192:case 194:case 198:case 199:case 200:case 201:case 203:case 218:case 219:case 220:case 221:case 222:case 224:case 225:case 226:case 227:case 228:case 234:case 235:case 236:case 237:case 240:case 248:case 249:case 250:case 251:case 252:case 254:case 257:case 260:case 261:case 262:case 263:case 266:case 267:case 270:case 274:Ll(244);break;default:_l=Hl}if(_l==35922||_l==35961||_l==36024||_l==36056||_l==38482||_l==38521||_l==38584||_l==38616||_l==40530||_l==40569||_l==40632||_l==40664||_l==41042||_l==41081||_l==41144||_l==41176||_l==41554||_l==41593||_l==41656||_l==41688||_l==43090||_l==43129||_l==43192||_l==43224||_l==45138||_l==45177||_l==45240||_l==45272||_l==45650||_l==45689||_l==45752||_l==45784||_l==46162||_l==46201||_l==46264||_l==46296||_l==48210||_l==48249||_l==48312||_l==48344||_l==53842||_l==53881||_l==53944||_l==53976||_l==55890||_l==55929||_l==55992||_l==56024||_l==57938||_l==57977||_l==58040||_l==58072||_l==60498||_l==60537||_l==60600||_l==60632||_l==62546||_l==62585||_l==62648||_l==62680||_l==63058||_l==63097||_l==63160||_l==63192||_l==64594||_l==64633||_l==64696||_l==64728||_l==65618||_l==65657||_l==65720||_l==65752||_l==67154||_l==67193||_l==67256||_l==67288||_l==70226||_l==70265||_l==70328||_l==70360||_l==74834||_l==74873||_l==74936||_l==74968||_l==75858||_l==75897||_l==75960||_l==75992||_l==76882||_l==76921||_l==76984||_l==77016||_l==77394||_l==77433||_l==77496||_l==77528||_l==82002||_l==82041||_l==82104||_l==82136||_l==83026||_l==83065||_l==83128||_l==83160||_l==83538||_l==83577||_l==83640||_l==83672||_l==84050||_l==84089||_l==84152||_l==84184||_l==88146||_l==88185||_l==88248||_l==88280||_l==89170||_l==89209||_l==89272||_l==89304||_l==91218||_l==91257||_l==91320||_l==91352||_l==92242||_l==92281||_l==92344||_l==92376||_l==92754||_l==92793||_l==92856||_l==92888||_l==95314||_l==95353||_l==95416||_l==95448||_l==101458||_l==101497||_l==101560||_l==101592||_l==102482||_l==102521||_l==102584||_l==102616||_l==102994||_l==103033||_l==103096||_l==103128||_l==112722||_l==112761||_l==112824||_l==112856||_l==114770||_l==114809||_l==114872||_l==114904||_l==120914||_l==120953||_l==121016||_l==121048||_l==121426||_l==121465||_l==121528||_l==121560||_l==127058||_l==127097||_l==127160||_l==127192||_l==127570||_l==127609||_l==127672||_l==127704||_l==130130||_l==130169||_l==130232||_l==130264||_l==136274||_l==136313||_l==136376||_l==136408||_l==138322||_l==138361||_l==138424||_l==138456){_l=Kl(4,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Zr(),Jl(4,t,-1),_l=-3}catch(a){_l=-2,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(4,t,-2)}}}switch(_l){case-1:case 8:case 9:case 10:case 11:case 31:case 32:case 34:case 44:case 54:case 55:case 59:case 68:case 276:case 278:case 3154:case 3193:case 9912:case 9944:case 14854:case 14918:case 14920:case 14921:case 14922:case 14923:case 14925:case 14926:case 14927:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14936:case 14937:case 14938:case 14939:case 14941:case 14942:case 14944:case 14945:case 14946:case 14949:case 14950:case 14951:case 14952:case 14953:case 14954:case 14956:case 14957:case 14958:case 14959:case 14960:case 14961:case 14966:case 14967:case 14968:case 14969:case 14970:case 14971:case 14972:case 14973:case 14974:case 14976:case 14977:case 14979:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14989:case 14993:case 14994:case 14996:case 14998:case 14999:case 15e3:case 15001:case 15002:case 15003:case 15007:case 15008:case 15009:case 15010:case 15011:case 15012:case 15013:case 15014:case 15015:case 15018:case 15019:case 15020:case 15022:case 15024:case 15026:case 15028:case 15029:case 15030:case 15032:case 15033:case 15034:case 15039:case 15040:case 15042:case 15046:case 15047:case 15048:case 15049:case 15050:case 15051:case 15054:case 15060:case 15061:case 15064:case 15066:case 15067:case 15068:case 15069:case 15070:case 15072:case 15073:case 15074:case 15075:case 15076:case 15077:case 15082:case 15083:case 15084:case 15085:case 15088:case 15090:case 15091:case 15092:case 15096:case 15097:case 15098:case 15099:case 15100:case 15101:case 15102:case 15104:case 15105:case 15108:case 15109:case 15110:case 15111:case 15114:case 15115:case 15118:case 15122:case 17414:case 17478:case 17480:case 17481:case 17482:case 17483:case 17485:case 17487:case 17488:case 17489:case 17491:case 17492:case 17493:case 17494:case 17496:case 17497:case 17498:case 17499:case 17501:case 17502:case 17505:case 17506:case 17509:case 17510:case 17511:case 17512:case 17513:case 17514:case 17516:case 17517:case 17518:case 17519:case 17520:case 17521:case 17526:case 17527:case 17530:case 17531:case 17533:case 17534:case 17536:case 17537:case 17539:case 17540:case 17541:case 17542:case 17543:case 17544:case 17545:case 17549:case 17553:case 17554:case 17556:case 17558:case 17559:case 17561:case 17562:case 17563:case 17567:case 17568:case 17569:case 17570:case 17571:case 17572:case 17574:case 17578:case 17579:case 17580:case 17582:case 17584:case 17586:case 17588:case 17589:case 17590:case 17592:case 17594:case 17600:case 17602:case 17606:case 17607:case 17608:case 17609:case 17610:case 17611:case 17614:case 17620:case 17621:case 17626:case 17627:case 17628:case 17629:case 17630:case 17632:case 17633:case 17636:case 17637:case 17642:case 17643:case 17644:case 17645:case 17648:case 17656:case 17657:case 17658:case 17659:case 17660:case 17662:case 17664:case 17665:case 17668:case 17669:case 17670:case 17671:case 17674:case 17675:case 17678:case 17682:case 36946:case 36985:case 37048:case 37080:case 37458:case 37497:case 37560:case 37592:case 37970:case 38009:case 38072:case 38104:case 39506:case 39545:case 39608:case 39640:case 40018:case 40057:case 42066:case 42105:case 42168:case 42200:case 42578:case 42617:case 42680:case 42712:case 43602:case 43641:case 43704:case 43736:case 44114:case 44153:case 44216:case 44248:case 46674:case 46713:case 46776:case 46808:case 47698:case 47737:case 47800:case 47832:case 49234:case 49273:case 49336:case 49368:case 49746:case 49785:case 49848:case 49880:case 50258:case 50297:case 50360:case 50392:case 51794:case 51833:case 51896:case 51928:case 52306:case 52345:case 52408:case 52440:case 52818:case 52857:case 52920:case 52952:case 53330:case 53369:case 53432:case 53464:case 54354:case 54393:case 54456:case 54488:case 55378:case 55417:case 55480:case 55512:case 56402:case 56441:case 56504:case 56536:case 56914:case 56953:case 57016:case 57048:case 57426:case 57465:case 57528:case 57560:case 61010:case 61049:case 61112:case 61144:case 61522:case 61561:case 61624:case 61656:case 62034:case 62073:case 62136:case 62168:case 63570:case 63609:case 63672:case 63704:case 64082:case 64121:case 64184:case 64216:case 66130:case 66169:case 66232:case 66264:case 67666:case 67705:case 67768:case 67800:case 68178:case 68217:case 68280:case 68312:case 68690:case 68729:case 68792:case 68824:case 69202:case 69241:case 69304:case 69336:case 69714:case 69753:case 69816:case 69848:case 72274:case 72313:case 72376:case 72408:case 74322:case 74361:case 74424:case 74456:case 77906:case 77945:case 78008:case 78040:case 78418:case 78457:case 78520:case 78552:case 78930:case 78969:case 79032:case 79064:case 79442:case 79481:case 79544:case 79576:case 81490:case 81529:case 81592:case 81624:case 82514:case 82553:case 82616:case 82648:case 84562:case 84601:case 84664:case 84696:case 85074:case 85113:case 85176:case 85208:case 85586:case 85625:case 87122:case 87161:case 87224:case 87256:case 87634:case 87673:case 87736:case 87768:case 90194:case 90233:case 90296:case 90328:case 93266:case 93305:case 93368:case 93400:case 94290:case 94329:case 94392:case 94424:case 94802:case 94841:case 94904:case 94936:case 97874:case 97913:case 97976:case 98008:case 98386:case 98425:case 98488:case 98520:case 99410:case 99449:case 99512:case 99544:case 101970:case 102009:case 102072:case 102104:case 103506:case 103545:case 103608:case 103640:case 104018:case 104057:case 104120:case 104152:case 105554:case 105593:case 105656:case 105688:case 108626:case 108665:case 108728:case 108760:case 109138:case 109177:case 109240:case 109272:case 110674:case 110713:case 110776:case 110808:case 111698:case 111737:case 111800:case 111832:case 112210:case 112249:case 112312:case 112344:case 113234:case 113273:case 113336:case 113368:case 113746:case 113785:case 113848:case 113880:case 115282:case 115321:case 115384:case 115416:case 115794:case 115833:case 115896:case 115928:case 116306:case 116345:case 116408:case 116440:case 116818:case 116857:case 116920:case 116952:case 117330:case 117369:case 117432:case 117464:case 119890:case 119929:case 119992:case 120024:case 120402:case 120441:case 120504:case 120536:case 122962:case 123001:case 123064:case 123096:case 123986:case 124025:case 124498:case 124537:case 124600:case 124632:case 125010:case 125049:case 125112:case 125144:case 128082:case 128121:case 128184:case 128216:case 128594:case 128633:case 128696:case 128728:case 129106:case 129145:case 129208:case 129240:case 129618:case 129657:case 129720:case 129752:case 131154:case 131193:case 131256:case 131288:case 131666:case 131705:case 131768:case 131800:case 133202:case 133241:case 133304:case 133336:case 133714:case 133753:case 133816:case 133848:case 134226:case 134265:case 134328:case 134360:case 134738:case 134777:case 134840:case 134872:case 136786:case 136825:case 136888:case 136920:case 140370:case 140409:case 140472:case 140504:case 141394:case 141408:case 141431:case 141433:case 141496:case 141514:case 141528:case 141556:case 141568:Zr();break;case-3:break;default:Hr()}}function Pr(){Vl.startNonterminal("AxisStep",Pl);switch(Hl){case 73:case 74:case 206:case 212:case 213:Ll(242);break;default:_l=Hl}switch(_l){case 45:case 26185:case 26186:case 26318:case 26324:case 26325:Ur();break;default:Br()}kl(238),Nl(),ni(),Vl.endNonterminal("AxisStep",Pl)}function Hr(){switch(Hl){case 73:case 74:case 206:case 212:case 213:Ll(242);break;default:_l=Hl}switch(_l){case 45:case 26185:case 26186:case 26318:case 26324:case 26325:zr();break;default:jr()}kl(238),ri()}function Br(){Vl.startNonterminal("ForwardStep",Pl);switch(Hl){case 82:Ll(245);break;case 93:case 111:case 112:case 135:case 136:case 229:Ll(242);break;default:_l=Hl}switch(_l){case 26194:case 26205:case 26223:case 26224:case 26247:case 26248:case 26341:Fr(),kl(257),Nl(),Jr();break;default:qr()}Vl.endNonterminal("ForwardStep",Pl)}function jr(){switch(Hl){case 82:Ll(245);break;case 93:case 111:case 112:case 135:case 136:case 229:Ll(242);break;default:_l=Hl}switch(_l){case 26194:case 26205:case 26223:case 26224:case 26247:case 26248:case 26341:Ir(),kl(257),Kr();break;default:Rr()}}function Fr(){Vl.startNonterminal("ForwardAxis",Pl);switch(Hl){case 93:Sl(93),kl(26),Sl(51);break;case 111:Sl(111),kl(26),Sl(51);break;case 82:Sl(82),kl(26),Sl(51);break;case 229:Sl(229),kl(26),Sl(51);break;case 112:Sl(112),kl(26),Sl(51);break;case 136:Sl(136),kl(26),Sl(51);break;default:Sl(135),kl(26),Sl(51)}Vl.endNonterminal("ForwardAxis",Pl)}function Ir(){switch(Hl){case 93:xl(93),kl(26),xl(51);break;case 111:xl(111),kl(26),xl(51);break;case 82:xl(82),kl(26),xl(51);break;case 229:xl(229),kl(26),xl(51);break;case 112:xl(112),kl(26),xl(51);break;case 136:xl(136),kl(26),xl(51);break;default:xl(135),kl(26),xl(51)}}function qr(){Vl.startNonterminal("AbbrevForwardStep",Pl),Hl==66&&Sl(66),kl(257),Nl(),Jr(),Vl.endNonterminal("AbbrevForwardStep",Pl)}function Rr(){Hl==66&&xl(66),kl(257),Kr()}function Ur(){Vl.startNonterminal("ReverseStep",Pl);switch(Hl){case 45:Vr();break;default:Wr(),kl(257),Nl(),Jr()}Vl.endNonterminal("ReverseStep",Pl)}function zr(){switch(Hl){case 45:$r();break;default:Xr(),kl(257),Kr()}}function Wr(){Vl.startNonterminal("ReverseAxis",Pl);switch(Hl){case 206:Sl(206),kl(26),Sl(51);break;case 73:Sl(73),kl(26),Sl(51);break;case 213:Sl(213),kl(26),Sl(51);break;case 212:Sl(212),kl(26),Sl(51);break;default:Sl(74),kl(26),Sl(51)}Vl.endNonterminal("ReverseAxis",Pl)}function Xr(){switch(Hl){case 206:xl(206),kl(26),xl(51);break;case 73:xl(73),kl(26),xl(51);break;case 213:xl(213),kl(26),xl(51);break;case 212:xl(212),kl(26),xl(51);break;default:xl(74),kl(26),xl(51)}}function Vr(){Vl.startNonterminal("AbbrevReverseStep",Pl),Sl(45),Vl.endNonterminal("AbbrevReverseStep",Pl)}function $r(){xl(45)}function Jr(){Vl.startNonterminal("NodeTest",Pl);switch(Hl){case 82:case 96:case 120:case 121:case 185:case 191:case 216:case 226:case 227:case 244:Ll(241);break;default:_l=Hl}switch(_l){case 17490:case 17504:case 17528:case 17529:case 17593:case 17599:case 17624:case 17634:case 17635:case 17652:Ps();break;default:Qr()}Vl.endNonterminal("NodeTest",Pl)}function Kr(){switch(Hl){case 82:case 96:case 120:case 121:case 185:case 191:case 216:case 226:case 227:case 244:Ll(241);break;default:_l=Hl}switch(_l){case 17490:case 17504:case 17528:case 17529:case 17593:case 17599:case 17624:case 17634:case 17635:case 17652:Hs();break;default:Gr()}}function Qr(){Vl.startNonterminal("NameTest",Pl);switch(Hl){case 5:Sl(5);break;default:Ha()}Vl.endNonterminal("NameTest",Pl)}function Gr(){switch(Hl){case 5:xl(5);break;default:Ba()}}function Yr(){Vl.startNonterminal("PostfixExpr",Pl),ol();for(;;){kl(241);if(Hl!=34&&Hl!=68)break;switch(Hl){case 68:Nl(),ii();break;default:Nl(),ei()}}Vl.endNonterminal("PostfixExpr",Pl)}function Zr(){ul();for(;;){kl(241);if(Hl!=34&&Hl!=68)break;switch(Hl){case 68:si();break;default:ti()}}}function ei(){Vl.startNonterminal("ArgumentList",Pl),Sl(34),kl(276);if(Hl!=37){Nl(),Ti();for(;;){kl(101);if(Hl!=41)break;Sl(41),kl(271),Nl(),Ti()}}Sl(37),Vl.endNonterminal("ArgumentList",Pl)}function ti(){xl(34),kl(276);if(Hl!=37){Ni();for(;;){kl(101);if(Hl!=41)break;xl(41),kl(271),Ni()}}xl(37)}function ni(){Vl.startNonterminal("PredicateList",Pl);for(;;){kl(238);if(Hl!=68)break;Nl(),ii()}Vl.endNonterminal("PredicateList",Pl)}function ri(){for(;;){kl(238);if(Hl!=68)break;si()}}function ii(){Vl.startNonterminal("Predicate",Pl),Sl(68),kl(267),Nl(),G(),Sl(69),Vl.endNonterminal("Predicate",Pl)}function si(){xl(68),kl(267),Y(),xl(69)}function oi(){Vl.startNonterminal("Literal",Pl);switch(Hl){case 11:Sl(11);break;default:ai()}Vl.endNonterminal("Literal",Pl)}function ui(){switch(Hl){case 11:xl(11);break;default:fi()}}function ai(){Vl.startNonterminal("NumericLiteral",Pl);switch(Hl){case 8:Sl(8);break;case 9:Sl(9);break;default:Sl(10)}Vl.endNonterminal("NumericLiteral",Pl)}function fi(){switch(Hl){case 8:xl(8);break;case 9:xl(9);break;default:xl(10)}}function li(){Vl.startNonterminal("VarRef",Pl),Sl(31),kl(255),Nl(),hi(),Vl.endNonterminal("VarRef",Pl)}function ci(){xl(31),kl(255),pi()}function hi(){Vl.startNonterminal("VarName",Pl),Ha(),Vl.endNonterminal("VarName",Pl)}function pi(){Ba()}function di(){Vl.startNonterminal("ParenthesizedExpr",Pl),Sl(34),kl(269),Hl!=37&&(Nl(),G()),Sl(37),Vl.endNonterminal("ParenthesizedExpr",Pl)}function vi(){xl(34),kl(269),Hl!=37&&Y(),xl(37)}function mi(){Vl.startNonterminal("ContextItemExpr",Pl),Sl(44),Vl.endNonterminal("ContextItemExpr",Pl)}function gi(){xl(44)}function yi(){Vl.startNonterminal("OrderedExpr",Pl),Sl(202),kl(87),Sl(276),kl(267),Nl(),G(),Sl(282),Vl.endNonterminal("OrderedExpr",Pl)}function bi(){xl(202),kl(87),xl(276),kl(267),Y(),xl(282)}function wi(){Vl.startNonterminal("UnorderedExpr",Pl),Sl(256),kl(87),Sl(276),kl(267),Nl(),G(),Sl(282),Vl.endNonterminal("UnorderedExpr",Pl)}function Ei(){xl(256),kl(87),xl(276),kl(267),Y(),xl(282)}function Si(){Vl.startNonterminal("FunctionCall",Pl),ja(),kl(22),Nl(),ei(),Vl.endNonterminal("FunctionCall",Pl)}function xi(){Fa(),kl(22),ti()}function Ti(){Vl.startNonterminal("Argument",Pl);switch(Hl){case 64:Ci();break;default:_f()}Vl.endNonterminal("Argument",Pl)}function Ni(){switch(Hl){case 64:ki();break;default:Df()}}function Ci(){Vl.startNonterminal("ArgumentPlaceholder",Pl),Sl(64),Vl.endNonterminal("ArgumentPlaceholder",Pl)}function ki(){xl(64)}function Li(){Vl.startNonterminal("Constructor",Pl);switch(Hl){case 54:case 55:case 59:Oi();break;default:Ji()}Vl.endNonterminal("Constructor",Pl)}function Ai(){switch(Hl){case 54:case 55:case 59:Mi();break;default:Ki()}}function Oi(){Vl.startNonterminal("DirectConstructor",Pl);switch(Hl){case 54:_i();break;case 55:Wi();break;default:Vi()}Vl.endNonterminal("DirectConstructor",Pl)}function Mi(){switch(Hl){case 54:Di();break;case 55:Xi();break;default:$i()}}function _i(){Vl.startNonterminal("DirElemConstructor",Pl),Sl(54),Al(4),Sl(20),Pi();switch(Hl){case 48:Sl(48);break;default:Sl(61);for(;;){Al(174);if(Hl==56)break;Ui()}Sl(56),Al(4),Sl(20),Al(12),Hl==21&&Sl(21),Al(8),Sl(61)}Vl.endNonterminal("DirElemConstructor",Pl)}function Di(){xl(54),Al(4),xl(20),Hi();switch(Hl){case 48:xl(48);break;default:xl(61);for(;;){Al(174);if(Hl==56)break;zi()}xl(56),Al(4),xl(20),Al(12),Hl==21&&xl(21),Al(8),xl(61)}}function Pi(){Vl.startNonterminal("DirAttributeList",Pl);for(;;){Al(19);if(Hl!=21)break;Sl(21),Al(91),Hl==20&&(Sl(20),Al(11),Hl==21&&Sl(21),Al(7),Sl(60),Al(18),Hl==21&&Sl(21),Bi())}Vl.endNonterminal("DirAttributeList",Pl)}function Hi(){for(;;){Al(19);if(Hl!=21)break;xl(21),Al(91),Hl==20&&(xl(20),Al(11),Hl==21&&xl(21),Al(7),xl(60),Al(18),Hl==21&&xl(21),ji())}}function Bi(){Vl.startNonterminal("DirAttributeValue",Pl),Al(14);switch(Hl){case 28:Sl(28);for(;;){Al(167);if(Hl==28)break;switch(Hl){case 13:Sl(13);break;default:Fi()}}Sl(28);break;default:Sl(33);for(;;){Al(168);if(Hl==33)break;switch(Hl){case 14:Sl(14);break;default:qi()}}Sl(33)}Vl.endNonterminal("DirAttributeValue",Pl)}function ji(){Al(14);switch(Hl){case 28:xl(28);for(;;){Al(167);if(Hl==28)break;switch(Hl){case 13:xl(13);break;default:Ii()}}xl(28);break;default:xl(33);for(;;){Al(168);if(Hl==33)break;switch(Hl){case 14:xl(14);break;default:Ri()}}xl(33)}}function Fi(){Vl.startNonterminal("QuotAttrValueContent",Pl);switch(Hl){case 16:Sl(16);break;default:Vf()}Vl.endNonterminal("QuotAttrValueContent",Pl)}function Ii(){switch(Hl){case 16:xl(16);break;default:$f()}}function qi(){Vl.startNonterminal("AposAttrValueContent",Pl);switch(Hl){case 17:Sl(17);break;default:Vf()}Vl.endNonterminal("AposAttrValueContent",Pl)}function Ri(){switch(Hl){case 17:xl(17);break;default:$f()}}function Ui(){Vl.startNonterminal("DirElemContent",Pl);switch(Hl){case 54:case 55:case 59:Oi();break;case 4:Sl(4);break;case 15:Sl(15);break;default:Vf()}Vl.endNonterminal("DirElemContent",Pl)}function zi(){switch(Hl){case 54:case 55:case 59:Mi();break;case 4:xl(4);break;case 15:xl(15);break;default:$f()}}function Wi(){Vl.startNonterminal("DirCommentConstructor",Pl),Sl(55),Al(1),Sl(2),Al(6),Sl(43),Vl.endNonterminal("DirCommentConstructor",Pl)}function Xi(){xl(55),Al(1),xl(2),Al(6),xl(43)}function Vi(){Vl.startNonterminal("DirPIConstructor",Pl),Sl(59),Al(3),Sl(18),Al(13),Hl==21&&(Sl(21),Al(2),Sl(3)),Al(9),Sl(65),Vl.endNonterminal("DirPIConstructor",Pl)}function $i(){xl(59),Al(3),xl(18),Al(13),Hl==21&&(xl(21),Al(2),xl(3)),Al(9),xl(65)}function Ji(){Vl.startNonterminal("ComputedConstructor",Pl);switch(Hl){case 119:Qf();break;case 121:Qi();break;case 82:Yf();break;case 184:Yi();break;case 244:il();break;case 96:nl();break;default:el()}Vl.endNonterminal("ComputedConstructor",Pl)}function Ki(){switch(Hl){case 119:Gf();break;case 121:Gi();break;case 82:Zf();break;case 184:Zi();break;case 244:sl();break;case 96:rl();break;default:tl()}}function Qi(){Vl.startNonterminal("CompElemConstructor",Pl),Sl(121),kl(258);switch(Hl){case 276:Sl(276),kl(267),Nl(),G(),Sl(282);break;default:Nl(),Ha()}kl(87),Sl(276),kl(277),Hl!=282&&(Nl(),Jf()),Sl(282),Vl.endNonterminal("CompElemConstructor",Pl)}function Gi(){xl(121),kl(258);switch(Hl){case 276:xl(276),kl(267),Y(),xl(282);break;default:Ba()}kl(87),xl(276),kl(277),Hl!=282&&Kf(),xl(282)}function Yi(){Vl.startNonterminal("CompNamespaceConstructor",Pl),Sl(184),kl(251);switch(Hl){case 276:Sl(276),kl(267),Nl(),ns(),Sl(282);break;default:Nl(),es()}kl(87),Sl(276),kl(267),Nl(),is(),Sl(282),Vl.endNonterminal("CompNamespaceConstructor",Pl)}function Zi(){xl(184),kl(251);switch(Hl){case 276:xl(276),kl(267),rs(),xl(282);break;default:ts()}kl(87),xl(276),kl(267),ss(),xl(282)}function es(){Vl.startNonterminal("Prefix",Pl),Ia(),Vl.endNonterminal("Prefix",Pl)}function ts(){qa()}function ns(){Vl.startNonterminal("PrefixExpr",Pl),G(),Vl.endNonterminal("PrefixExpr",Pl)}function rs(){Y()}function is(){Vl.startNonterminal("URIExpr",Pl),G(),Vl.endNonterminal("URIExpr",Pl)}function ss(){Y()}function os(){Vl.startNonterminal("FunctionItemExpr",Pl);switch(Hl){case 145:Ll(92);break;default:_l=Hl}switch(_l){case 32:case 17553:ls();break;default:as()}Vl.endNonterminal("FunctionItemExpr",Pl)}function us(){switch(Hl){case 145:Ll(92);break;default:_l=Hl}switch(_l){case 32:case 17553:cs();break;default:fs()}}function as(){Vl.startNonterminal("NamedFunctionRef",Pl),Ha(),kl(20),Sl(29),kl(16),Sl(8),Vl.endNonterminal("NamedFunctionRef",Pl)}function fs(){Ba(),kl(20),xl(29),kl(16),xl(8)}function ls(){Vl.startNonterminal("InlineFunctionExpr",Pl);for(;;){kl(97);if(Hl!=32)break;Nl(),B()}Sl(145),kl(22),Sl(34),kl(94),Hl==31&&(Nl(),U()),Sl(37),kl(111),Hl==79&&(Sl(79),kl(260),Nl(),ms()),kl(87),Nl(),V(),Vl.endNonterminal("InlineFunctionExpr",Pl)}function cs(){for(;;){kl(97);if(Hl!=32)break;j()}xl(145),kl(22),xl(34),kl(94),Hl==31&&z(),xl(37),kl(111),Hl==79&&(xl(79),kl(260),gs()),kl(87),$()}function hs(){Vl.startNonterminal("SingleType",Pl),vo(),kl(227),Hl==64&&Sl(64),Vl.endNonterminal("SingleType",Pl)}function ps(){mo(),kl(227),Hl==64&&xl(64)}function ds(){Vl.startNonterminal("TypeDeclaration",Pl),Sl(79),kl(260),Nl(),ms(),Vl.endNonterminal("TypeDeclaration",Pl)}function vs(){xl(79),kl(260),gs()}function ms(){Vl.startNonterminal("SequenceType",Pl);switch(Hl){case 124:Ll(243);break;default:_l=Hl}switch(_l){case 17532:Sl(124),kl(22),Sl(34),kl(23),Sl(37);break;default:ws(),kl(239);switch(Hl){case 39:case 40:case 64:Nl(),ys();break;default:}}Vl.endNonterminal("SequenceType",Pl)}function gs(){switch(Hl){case 124:Ll(243);break;default:_l=Hl}switch(_l){case 17532:xl(124),kl(22),xl(34),kl(23),xl(37);break;default:Es(),kl(239);switch(Hl){case 39:case 40:case 64:bs();break;default:}}}function ys(){Vl.startNonterminal("OccurrenceIndicator",Pl);switch(Hl){case 64:Sl(64);break;case 39:Sl(39);break;default:Sl(40)}Vl.endNonterminal("OccurrenceIndicator",Pl)}function bs(){switch(Hl){case 64:xl(64);break;case 39:xl(39);break;default:xl(40)}}function ws(){Vl.startNonterminal("ItemType",Pl);switch(Hl){case 78:case 82:case 96:case 120:case 121:case 145:case 165:case 167:case 185:case 191:case 194:case 216:case 226:case 227:case 242:case 244:Ll(243);break;default:_l=Hl}switch(_l){case 17490:case 17504:case 17528:case 17529:case 17593:case 17599:case 17624:case 17634:case 17635:case 17652:Ps();break;case 17573:Sl(165),kl(22),Sl(34),kl(23),Sl(37);break;case 32:case 17553:bo();break;case 34:No();break;case 17486:case 17575:case 17602:Ss();break;case 17650:Ts();break;default:_s()}Vl.endNonterminal("ItemType",Pl)}function Es(){switch(Hl){case 78:case 82:case 96:case 120:case 121:case 145:case 165:case 167:case 185:case 191:case 194:case 216:case 226:case 227:case 242:case 244:Ll(243);break;default:_l=Hl}switch(_l){case 17490:case 17504:case 17528:case 17529:case 17593:case 17599:case 17624:case 17634:case 17635:case 17652:Hs();break;case 17573:xl(165),kl(22),xl(34),kl(23),xl(37);break;case 32:case 17553:wo();break;case 34:Co();break;case 17486:case 17575:case 17602:xs();break;case 17650:Ns();break;default:Ds()}}function Ss(){Vl.startNonterminal("JSONTest",Pl);switch(Hl){case 167:Cs();break;case 194:Ls();break;default:Os()}Vl.endNonterminal("JSONTest",Pl)}function xs(){switch(Hl){case 167:ks();break;case 194:As();break;default:Ms()}}function Ts(){Vl.startNonterminal("StructuredItemTest",Pl),Sl(242),kl(22),Sl(34),kl(23),Sl(37),Vl.endNonterminal("StructuredItemTest",Pl)}function Ns(){xl(242),kl(22),xl(34),kl(23),xl(37)}function Cs(){Vl.startNonterminal("JSONItemTest",Pl),Sl(167),kl(22),Sl(34),kl(23),Sl(37),Vl.endNonterminal("JSONItemTest",Pl)}function ks(){xl(167),kl(22),xl(34),kl(23),xl(37)}function Ls(){Vl.startNonterminal("JSONObjectTest",Pl),Sl(194),kl(22),Sl(34),kl(23),Sl(37),Vl.endNonterminal("JSONObjectTest",Pl)}function As(){xl(194),kl(22),xl(34),kl(23),xl(37)}function Os(){Vl.startNonterminal("JSONArrayTest",Pl),Sl(78),kl(22),Sl(34),kl(23),Sl(37),Vl.endNonterminal("JSONArrayTest",Pl)}function Ms(){xl(78),kl(22),xl(34),kl(23),xl(37)}function _s(){Vl.startNonterminal("AtomicOrUnionType",Pl),Ha(),Vl.endNonterminal("AtomicOrUnionType",Pl)}function Ds(){Ba()}function Ps(){Vl.startNonterminal("KindTest",Pl);switch(Hl){case 120:Fs();break;case 121:no();break;case 82:Js();break;case 227:oo();break;case 226:Ys();break;case 216:Vs();break;case 96:Us();break;case 244:qs();break;case 185:Ws();break;default:Bs()}Vl.endNonterminal("KindTest",Pl)}function Hs(){switch(Hl){case 120:Is();break;case 121:ro();break;case 82:Ks();break;case 227:uo();break;case 226:Zs();break;case 216:$s();break;case 96:zs();break;case 244:Rs();break;case 185:Xs();break;default:js()}}function Bs(){Vl.startNonterminal("AnyKindTest",Pl),Sl(191),kl(22),Sl(34),kl(23),Sl(37),Vl.endNonterminal("AnyKindTest",Pl)}function js(){xl(191),kl(22),xl(34),kl(23),xl(37)}function Fs(){Vl.startNonterminal("DocumentTest",Pl),Sl(120),kl(22),Sl(34),kl(144);if(Hl!=37)switch(Hl){case 121:Nl(),no();break;default:Nl(),oo()}kl(23),Sl(37),Vl.endNonterminal("DocumentTest",Pl)}function Is(){xl(120),kl(22),xl(34),kl(144);if(Hl!=37)switch(Hl){case 121:ro();break;default:uo()}kl(23),xl(37)}function qs(){Vl.startNonterminal("TextTest",Pl),Sl(244),kl(22),Sl(34),kl(23),Sl(37),Vl.endNonterminal("TextTest",Pl)}function Rs(){xl(244),kl(22),xl(34),kl(23),xl(37)}function Us(){Vl.startNonterminal("CommentTest",Pl),Sl(96),kl(22),Sl(34),kl(23),Sl(37),Vl.endNonterminal("CommentTest",Pl)}function zs(){xl(96),kl(22),xl(34),kl(23),xl(37)}function Ws(){Vl.startNonterminal("NamespaceNodeTest",Pl),Sl(185),kl(22),Sl(34),kl(23),Sl(37),Vl.endNonterminal("NamespaceNodeTest",Pl)}function Xs(){xl(185),kl(22),xl(34),kl(23),xl(37)}function Vs(){Vl.startNonterminal("PITest",Pl),Sl(216),kl(22),Sl(34),kl(253);if(Hl!=37)switch(Hl){case 11:Sl(11);break;default:Nl(),Ia()}kl(23),Sl(37),Vl.endNonterminal("PITest",Pl)}function $s(){xl(216),kl(22),xl(34),kl(253);if(Hl!=37)switch(Hl){case 11:xl(11);break;default:qa()}kl(23),xl(37)}function Js(){Vl.startNonterminal("AttributeTest",Pl),Sl(82),kl(22),Sl(34),kl(261),Hl!=37&&(Nl(),Qs(),kl(101),Hl==41&&(Sl(41),kl(255),Nl(),go())),kl(23),Sl(37),Vl.endNonterminal("AttributeTest",Pl)}function Ks(){xl(82),kl(22),xl(34),kl(261),Hl!=37&&(Gs(),kl(101),Hl==41&&(xl(41),kl(255),yo())),kl(23),xl(37)}function Qs(){Vl.startNonterminal("AttribNameOrWildcard",Pl);switch(Hl){case 38:Sl(38);break;default:lo()}Vl.endNonterminal("AttribNameOrWildcard",Pl)}function Gs(){switch(Hl){case 38:xl(38);break;default:co()}}function Ys(){Vl.startNonterminal("SchemaAttributeTest",Pl),Sl(226),kl(22),Sl(34),kl(255),Nl(),eo(),kl(23),Sl(37),Vl.endNonterminal("SchemaAttributeTest",Pl)}function Zs(){xl(226),kl(22),xl(34),kl(255),to(),kl(23),xl(37)}function eo(){Vl.startNonterminal("AttributeDeclaration",Pl),lo(),Vl.endNonterminal("AttributeDeclaration",Pl)}function to(){co()}function no(){Vl.startNonterminal("ElementTest",Pl),Sl(121),kl(22),Sl(34),kl(261),Hl!=37&&(Nl(),io(),kl(101),Hl==41&&(Sl(41),kl(255),Nl(),go(),kl(102),Hl==64&&Sl(64))),kl(23),Sl(37),Vl.endNonterminal("ElementTest",Pl)}function ro(){xl(121),kl(22),xl(34),kl(261),Hl!=37&&(so(),kl(101),Hl==41&&(xl(41),kl(255),yo(),kl(102),Hl==64&&xl(64))),kl(23),xl(37)}function io(){Vl.startNonterminal("ElementNameOrWildcard",Pl);switch(Hl){case 38:Sl(38);break;default:ho()}Vl.endNonterminal("ElementNameOrWildcard",Pl)}function so(){switch(Hl){case 38:xl(38);break;default:po()}}function oo(){Vl.startNonterminal("SchemaElementTest",Pl),Sl(227),kl(22),Sl(34),kl(255),Nl(),ao(),kl(23),Sl(37),Vl.endNonterminal("SchemaElementTest",Pl)}function uo(){xl(227),kl(22),xl(34),kl(255),fo(),kl(23),xl(37)}function ao(){Vl.startNonterminal("ElementDeclaration",Pl),ho(),Vl.endNonterminal("ElementDeclaration",Pl)}function fo(){po()}function lo(){Vl.startNonterminal("AttributeName",Pl),Ha(),Vl.endNonterminal("AttributeName",Pl)}function co(){Ba()}function ho(){Vl.startNonterminal("ElementName",Pl),Ha(),Vl.endNonterminal("ElementName",Pl)}function po(){Ba()}function vo(){Vl.startNonterminal("SimpleTypeName",Pl),go(),Vl.endNonterminal("SimpleTypeName",Pl)}function mo(){yo()}function go(){Vl.startNonterminal("TypeName",Pl),Ha(),Vl.endNonterminal("TypeName",Pl)}function yo(){Ba()}function bo(){Vl.startNonterminal("FunctionTest",Pl);for(;;){kl(97);if(Hl!=32)break;Nl(),B()}switch(Hl){case 145:Ll(22);break;default:_l=Hl}_l=Kl(5,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{So(),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(5,Pl,_l)}switch(_l){case-1:Nl(),Eo();break;default:Nl(),xo()}Vl.endNonterminal("FunctionTest",Pl)}function wo(){for(;;){kl(97);if(Hl!=32)break;j()}switch(Hl){case 145:Ll(22);break;default:_l=Hl}_l=Kl(5,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{So(),Jl(5,t,-1),_l=-3}catch(a){_l=-2,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(5,t,-2)}}switch(_l){case-1:So();break;case-3:break;default:To()}}function Eo(){Vl.startNonterminal("AnyFunctionTest",Pl),Sl(145),kl(22),Sl(34),kl(24),Sl(38),kl(23),Sl(37),Vl.endNonterminal("AnyFunctionTest",Pl)}function So(){xl(145),kl(22),xl(34),kl(24),xl(38),kl(23),xl(37)}function xo(){Vl.startNonterminal("TypedFunctionTest",Pl),Sl(145),kl(22),Sl(34),kl(263);if(Hl!=37){Nl(),ms();for(;;){kl(101);if(Hl!=41)break;Sl(41),kl(260),Nl(),ms()}}Sl(37),kl(30),Sl(79),kl(260),Nl(),ms(),Vl.endNonterminal("TypedFunctionTest",Pl)}function To(){xl(145),kl(22),xl(34),kl(263);if(Hl!=37){gs();for(;;){kl(101);if(Hl!=41)break;xl(41),kl(260),gs()}}xl(37),kl(30),xl(79),kl(260),gs()}function No(){Vl.startNonterminal("ParenthesizedItemType",Pl),Sl(34),kl(260),Nl(),ws(),kl(23),Sl(37),Vl.endNonterminal("ParenthesizedItemType",Pl)}function Co(){xl(34),kl(260),Es(),kl(23),xl(37)}function ko(){Vl.startNonterminal("RevalidationDecl",Pl),Sl(108),kl(72),Sl(222),kl(152);switch(Hl){case 240:Sl(240);break;case 171:Sl(171);break;default:Sl(233)}Vl.endNonterminal("RevalidationDecl",Pl)}function Lo(){Vl.startNonterminal("InsertExprTargetChoice",Pl);switch(Hl){case 70:Sl(70);break;case 84:Sl(84);break;default:if(Hl==79){Sl(79),kl(119);switch(Hl){case 134:Sl(134);break;default:Sl(170)}}kl(54),Sl(163)}Vl.endNonterminal("InsertExprTargetChoice",Pl)}function Ao(){switch(Hl){case 70:xl(70);break;case 84:xl(84);break;default:if(Hl==79){xl(79),kl(119);switch(Hl){case 134:xl(134);break;default:xl(170)}}kl(54),xl(163)}}function Oo(){Vl.startNonterminal("InsertExpr",Pl),Sl(159),kl(129);switch(Hl){case 191:Sl(191);break;default:Sl(192)}kl(267),Nl(),Fo(),Nl(),Lo(),kl(267),Nl(),qo(),Vl.endNonterminal("InsertExpr",Pl)}function Mo(){xl(159),kl(129);switch(Hl){case 191:xl(191);break;default:xl(192)}kl(267),Io(),Ao(),kl(267),Ro()}function _o(){Vl.startNonterminal("DeleteExpr",Pl),Sl(110),kl(129);switch(Hl){case 191:Sl(191);break;default:Sl(192)}kl(267),Nl(),qo(),Vl.endNonterminal("DeleteExpr",Pl)}function Do(){xl(110),kl(129);switch(Hl){case 191:xl(191);break;default:xl(192)}kl(267),Ro()}function Po(){Vl.startNonterminal("ReplaceExpr",Pl),Sl(219),kl(130),Hl==261&&(Sl(261),kl(64),Sl(196)),kl(62),Sl(191),kl(267),Nl(),qo(),Sl(270),kl(267),Nl(),_f(),Vl.endNonterminal("ReplaceExpr",Pl)}function Ho(){xl(219),kl(130),Hl==261&&(xl(261),kl(64),xl(196)),kl(62),xl(191),kl(267),Ro(),xl(270),kl(267),Df()}function Bo(){Vl.startNonterminal("RenameExpr",Pl),Sl(218),kl(62),Sl(191),kl(267),Nl(),qo(),Sl(79),kl(267),Nl(),Uo(),Vl.endNonterminal("RenameExpr",Pl)}function jo(){xl(218),kl(62),xl(191),kl(267),Ro(),xl(79),kl(267),zo()}function Fo(){Vl.startNonterminal("SourceExpr",Pl),_f(),Vl.endNonterminal("SourceExpr",Pl)}function Io(){Df()}function qo(){Vl.startNonterminal("TargetExpr",Pl),_f(),Vl.endNonterminal("TargetExpr",Pl)}function Ro(){Df()}function Uo(){Vl.startNonterminal("NewNameExpr",Pl),_f(),Vl.endNonterminal("NewNameExpr",Pl)}function zo(){Df()}function Wo(){Vl.startNonterminal("TransformExpr",Pl),Sl(103),kl(21),Nl(),Vo();for(;;){if(Hl!=41)break;Sl(41),kl(21),Nl(),Vo()}Sl(181),kl(267),Nl(),_f(),Sl(220),kl(267),Nl(),_f(),Vl.endNonterminal("TransformExpr",Pl)}function Xo(){xl(103),kl(21),$o();for(;;){if(Hl!=41)break;xl(41),kl(21),$o()}xl(181),kl(267),Df(),xl(220),kl(267),Df()}function Vo(){Vl.startNonterminal("TransformSpec",Pl),Sl(31),kl(255),Nl(),hi(),kl(27),Sl(52),kl(267),Nl(),_f(),Vl.endNonterminal("TransformSpec",Pl)}function $o(){xl(31),kl(255),pi(),kl(27),xl(52),kl(267),Df()}function Jo(){Vl.startNonterminal("FTSelection",Pl),Yo();for(;;){kl(212);switch(Hl){case 81:Ll(151);break;default:_l=Hl}if(_l!=115&&_l!=117&&_l!=127&&_l!=202&&_l!=223&&_l!=269&&_l!=64593&&_l!=121425)break;Nl(),Su()}Vl.endNonterminal("FTSelection",Pl)}function Ko(){Zo();for(;;){kl(212);switch(Hl){case 81:Ll(151);break;default:_l=Hl}if(_l!=115&&_l!=117&&_l!=127&&_l!=202&&_l!=223&&_l!=269&&_l!=64593&&_l!=121425)break;xu()}}function Qo(){Vl.startNonterminal("FTWeight",Pl),Sl(264),kl(87),Sl(276),kl(267),Nl(),G(),Sl(282),Vl.endNonterminal("FTWeight",Pl)}function Go(){xl(264),kl(87),xl(276),kl(267),Y(),xl(282)}function Yo(){Vl.startNonterminal("FTOr",Pl),eu();for(;;){if(Hl!=144)break;Sl(144),kl(162),Nl(),eu()}Vl.endNonterminal("FTOr",Pl)}function Zo(){tu();for(;;){if(Hl!=144)break;xl(144),kl(162),tu()}}function eu(){Vl.startNonterminal("FTAnd",Pl),nu();for(;;){if(Hl!=142)break;Sl(142),kl(162),Nl(),nu()}Vl.endNonterminal("FTAnd",Pl)}function tu(){ru();for(;;){if(Hl!=142)break;xl(142),kl(162),ru()}}function nu(){Vl.startNonterminal("FTMildNot",Pl),iu();for(;;){kl(213);if(Hl!=193)break;Sl(193),kl(53),Sl(154),kl(162),Nl(),iu()}Vl.endNonterminal("FTMildNot",Pl)}function ru(){su();for(;;){kl(213);if(Hl!=193)break;xl(193),kl(53),xl(154),kl(162),su()}}function iu(){Vl.startNonterminal("FTUnaryNot",Pl),Hl==143&&Sl(143),kl(155),Nl(),ou(),Vl.endNonterminal("FTUnaryNot",Pl)}function su(){Hl==143&&xl(143),kl(155),uu()}function ou(){Vl.startNonterminal("FTPrimaryWithOptions",Pl),au(),kl(215),Hl==259&&(Nl(),Fu()),Hl==264&&(Nl(),Qo()),Vl.endNonterminal("FTPrimaryWithOptions",Pl)}function uu(){fu(),kl(215),Hl==259&&Iu(),Hl==264&&Go()}function au(){Vl.startNonterminal("FTPrimary",Pl);switch(Hl){case 34:Sl(34),kl(162),Nl(),Jo(),Sl(37);break;case 35:du();break;default:lu(),kl(216),Hl==195&&(Nl(),yu())}Vl.endNonterminal("FTPrimary",Pl)}function fu(){switch(Hl){case 34:xl(34),kl(162),Ko(),xl(37);break;case 35:vu();break;default:cu(),kl(216),Hl==195&&bu()}}function lu(){Vl.startNonterminal("FTWords",Pl),hu(),kl(222);if(Hl==71||Hl==76||Hl==210)Nl(),mu();Vl.endNonterminal("FTWords",Pl)}function cu(){pu(),kl(222),(Hl==71||Hl==76||Hl==210)&&gu()}function hu(){Vl.startNonterminal("FTWordsValue",Pl);switch(Hl){case 11:Sl(11);break;default:Sl(276),kl(267),Nl(),G(),Sl(282)}Vl.endNonterminal("FTWordsValue",Pl)}function pu(){switch(Hl){case 11:xl(11);break;default:xl(276),kl(267),Y(),xl(282)}}function du(){Vl.startNonterminal("FTExtensionSelection",Pl);for(;;){Nl(),Cr(),kl(100);if(Hl!=35)break}Sl(276),kl(166),Hl!=282&&(Nl(),Jo()),Sl(282),Vl.endNonterminal("FTExtensionSelection",Pl)}function vu(){for(;;){kr(),kl(100);if(Hl!=35)break}xl(276),kl(166),Hl!=282&&Ko(),xl(282)}function mu(){Vl.startNonterminal("FTAnyallOption",Pl);switch(Hl){case 76:Sl(76),kl(219),Hl==272&&Sl(272);break;case 71:Sl(71),kl(220),Hl==273&&Sl(273);break;default:Sl(210)}Vl.endNonterminal("FTAnyallOption",Pl)}function gu(){switch(Hl){case 76:xl(76),kl(219),Hl==272&&xl(272);break;case 71:xl(71),kl(220),Hl==273&&xl(273);break;default:xl(210)}}function yu(){Vl.startNonterminal("FTTimes",Pl),Sl(195),kl(149),Nl(),wu(),Sl(247),Vl.endNonterminal("FTTimes",Pl)}function bu(){xl(195),kl(149),Eu(),xl(247)}function wu(){Vl.startNonterminal("FTRange",Pl);switch(Hl){case 130:Sl(130),kl(267),Nl(),Vn();break;case 81:Sl(81),kl(125);switch(Hl){case 173:Sl(173),kl(267),Nl(),Vn();break;default:Sl(183),kl(267),Nl(),Vn()}break;default:Sl(140),kl(267),Nl(),Vn(),Sl(248),kl(267),Nl(),Vn()}Vl.endNonterminal("FTRange",Pl)}function Eu(){switch(Hl){case 130:xl(130),kl(267),$n();break;case 81:xl(81),kl(125);switch(Hl){case 173:xl(173),kl(267),$n();break;default:xl(183),kl(267),$n()}break;default:xl(140),kl(267),$n(),xl(248),kl(267),$n()}}function Su(){Vl.startNonterminal("FTPosFilter",Pl);switch(Hl){case 202:Tu();break;case 269:Cu();break;case 117:Lu();break;case 115:case 223:_u();break;default:Bu()}Vl.endNonterminal("FTPosFilter",Pl)}function xu(){switch(Hl){case 202:Nu();break;case 269:ku();break;case 117:Au();break;case 115:case 223:Du();break;default:ju()}}function Tu(){Vl.startNonterminal("FTOrder",Pl),Sl(202),Vl.endNonterminal("FTOrder",Pl)}function Nu(){xl(202)}function Cu(){Vl.startNonterminal("FTWindow",Pl),Sl(269),kl(267),Nl(),Vn(),Nl(),Ou(),Vl.endNonterminal("FTWindow",Pl)}function ku(){xl(269),kl(267),$n(),Mu()}function Lu(){Vl.startNonterminal("FTDistance",Pl),Sl(117),kl(149),Nl(),wu(),Nl(),Ou(),Vl.endNonterminal("FTDistance",Pl)}function Au(){xl(117),kl(149),Eu(),Mu()}function Ou(){Vl.startNonterminal("FTUnit",Pl);switch(Hl){case 273:Sl(273);break;case 232:Sl(232);break;default:Sl(205)}Vl.endNonterminal("FTUnit",Pl)}function Mu(){switch(Hl){case 273:xl(273);break;case 232:xl(232);break;default:xl(205)}}function _u(){Vl.startNonterminal("FTScope",Pl);switch(Hl){case 223:Sl(223);break;default:Sl(115)}kl(132),Nl(),Pu(),Vl.endNonterminal("FTScope",Pl)}function Du(){switch(Hl){case 223:xl(223);break;default:xl(115)}kl(132),Hu()}function Pu(){Vl.startNonterminal("FTBigUnit",Pl);switch(Hl){case 231:Sl(231);break;default:Sl(204)}Vl.endNonterminal("FTBigUnit",Pl)}function Hu(){switch(Hl){case 231:xl(231);break;default:xl(204)}}function Bu(){Vl.startNonterminal("FTContent",Pl);switch(Hl){case 81:Sl(81),kl(117);switch(Hl){case 237:Sl(237);break;default:Sl(126)}break;default:Sl(127),kl(42),Sl(100)}Vl.endNonterminal("FTContent",Pl)}function ju(){switch(Hl){case 81:xl(81),kl(117);switch(Hl){case 237:xl(237);break;default:xl(126)}break;default:xl(127),kl(42),xl(100)}}function Fu(){Vl.startNonterminal("FTMatchOptions",Pl);for(;;){Sl(259),kl(182),Nl(),qu(),kl(215);if(Hl!=259)break}Vl.endNonterminal("FTMatchOptions",Pl)}function Iu(){for(;;){xl(259),kl(182),Ru(),kl(215);if(Hl!=259)break}}function qu(){Vl.startNonterminal("FTMatchOption",Pl);switch(Hl){case 188:Ll(161);break;default:_l=Hl}switch(_l){case 169:oa();break;case 268:case 137404:aa();break;case 246:case 126140:Ju();break;case 238:case 122044:Vu();break;case 114:Wu();break;case 239:case 122556:ea();break;case 199:la();break;default:Uu()}Vl.endNonterminal("FTMatchOption",Pl)}function Ru(){switch(Hl){case 188:Ll(161);break;default:_l=Hl}switch(_l){case 169:ua();break;case 268:case 137404:fa();break;case 246:case 126140:Ku();break;case 238:case 122044:$u();break;case 114:Xu();break;case 239:case 122556:ta();break;case 199:ca();break;default:zu()}}function Uu(){Vl.startNonterminal("FTCaseOption",Pl);switch(Hl){case 88:Sl(88),kl(124);switch(Hl){case 158:Sl(158);break;default:Sl(230)}break;case 177:Sl(177);break;default:Sl(258)}Vl.endNonterminal("FTCaseOption",Pl)}function zu(){switch(Hl){case 88:xl(88),kl(124);switch(Hl){case 158:xl(158);break;default:xl(230)}break;case 177:xl(177);break;default:xl(258)}}function Wu(){Vl.startNonterminal("FTDiacriticsOption",Pl),Sl(114),kl(124);switch(Hl){case 158:Sl(158);break;default:Sl(230)}Vl.endNonterminal("FTDiacriticsOption",Pl)}function Xu(){xl(114),kl(124);switch(Hl){case 158:xl(158);break;default:xl(230)}}function Vu(){Vl.startNonterminal("FTStemOption",Pl);switch(Hl){case 238:Sl(238);break;default:Sl(188),kl(74),Sl(238)}Vl.endNonterminal("FTStemOption",Pl)}function $u(){switch(Hl){case 238:xl(238);break;default:xl(188),kl(74),xl(238)}}function Ju(){Vl.startNonterminal("FTThesaurusOption",Pl);switch(Hl){case 246:Sl(246),kl(142);switch(Hl){case 81:Nl(),Qu();break;case 109:Sl(109);break;default:Sl(34),kl(112);switch(Hl){case 81:Nl(),Qu();break;default:Sl(109)}for(;;){kl(101);if(Hl!=41)break;Sl(41),kl(31),Nl(),Qu()}Sl(37)}break;default:Sl(188),kl(78),Sl(246)}Vl.endNonterminal("FTThesaurusOption",Pl)}function Ku(){switch(Hl){case 246:xl(246),kl(142);switch(Hl){case 81:Gu();break;case 109:xl(109);break;default:xl(34),kl(112);switch(Hl){case 81:Gu();break;default:xl(109)}for(;;){kl(101);if(Hl!=41)break;xl(41),kl(31),Gu()}xl(37)}break;default:xl(188),kl(78),xl(246)}}function Qu(){Vl.startNonterminal("FTThesaurusID",Pl),Sl(81),kl(15),Sl(7),kl(221),Hl==217&&(Sl(217),kl(17),Sl(11)),kl(217);switch(Hl){case 81:Ll(165);break;default:_l=Hl}if(_l==130||_l==140||_l==88657||_l==93777)Nl(),Yu(),kl(58),Sl(175);Vl.endNonterminal("FTThesaurusID",Pl)}function Gu(){xl(81),kl(15),xl(7),kl(221),Hl==217&&(xl(217),kl(17),xl(11)),kl(217);switch(Hl){case 81:Ll(165);break;default:_l=Hl}if(_l==130||_l==140||_l==88657||_l==93777)Zu(),kl(58),xl(175)}function Yu(){Vl.startNonterminal("FTLiteralRange",Pl);switch(Hl){case 130:Sl(130),kl(16),Sl(8);break;case 81:Sl(81),kl(125);switch(Hl){case 173:Sl(173),kl(16),Sl(8);break;default:Sl(183),kl(16),Sl(8)}break;default:Sl(140),kl(16),Sl(8),kl(79),Sl(248),kl(16),Sl(8)}Vl.endNonterminal("FTLiteralRange",Pl)}function Zu(){switch(Hl){case 130:xl(130),kl(16),xl(8);break;case 81:xl(81),kl(125);switch(Hl){case 173:xl(173),kl(16),xl(8);break;default:xl(183),kl(16),xl(8)}break;default:xl(140),kl(16),xl(8),kl(79),xl(248),kl(16),xl(8)}}function ea(){Vl.startNonterminal("FTStopWordOption",Pl);switch(Hl){case 239:Sl(239),kl(86),Sl(273),kl(142);switch(Hl){case 109:Sl(109);for(;;){kl(218);if(Hl!=131&&Hl!=254)break;Nl(),ia()}break;default:Nl(),na();for(;;){kl(218);if(Hl!=131&&Hl!=254)break;Nl(),ia()}}break;default:Sl(188),kl(75),Sl(239),kl(86),Sl(273)}Vl.endNonterminal("FTStopWordOption",Pl)}function ta(){switch(Hl){case 239:xl(239),kl(86),xl(273),kl(142);switch(Hl){case 109:xl(109);for(;;){kl(218);if(Hl!=131&&Hl!=254)break;sa()}break;default:ra();for(;;){kl(218);if(Hl!=131&&Hl!=254)break;sa()}}break;default:xl(188),kl(75),xl(239),kl(86),xl(273)}}function na(){Vl.startNonterminal("FTStopWords",Pl);switch(Hl){case 81:Sl(81),kl(15),Sl(7);break;default:Sl(34),kl(17),Sl(11);for(;;){kl(101);if(Hl!=41)break;Sl(41),kl(17),Sl(11)}Sl(37)}Vl.endNonterminal("FTStopWords",Pl)}function ra(){switch(Hl){case 81:xl(81),kl(15),xl(7);break;default:xl(34),kl(17),xl(11);for(;;){kl(101);if(Hl!=41)break;xl(41),kl(17),xl(11)}xl(37)}}function ia(){Vl.startNonterminal("FTStopWordsInclExcl",Pl);switch(Hl){case 254:Sl(254);break;default:Sl(131)}kl(99),Nl(),na(),Vl.endNonterminal("FTStopWordsInclExcl",Pl)}function sa(){switch(Hl){case 254:xl(254);break;default:xl(131)}kl(99),ra()}function oa(){Vl.startNonterminal("FTLanguageOption",Pl),Sl(169),kl(17),Sl(11),Vl.endNonterminal("FTLanguageOption",Pl)}function ua(){xl(169),kl(17),xl(11)}function aa(){Vl.startNonterminal("FTWildCardOption",Pl);switch(Hl){case 268:Sl(268);break;default:Sl(188),kl(84),Sl(268)}Vl.endNonterminal("FTWildCardOption",Pl)}function fa(){switch(Hl){case 268:xl(268);break;default:xl(188),kl(84),xl(268)}}function la(){Vl.startNonterminal("FTExtensionOption",Pl),Sl(199),kl(255),Nl(),Ha(),kl(17),Sl(11),Vl.endNonterminal("FTExtensionOption",Pl)}function ca(){xl(199),kl(255),Ba(),kl(17),xl(11)}function ha(){Vl.startNonterminal("FTIgnoreOption",Pl),Sl(271),kl(42),Sl(100),kl(267),Nl(),Qn(),Vl.endNonterminal("FTIgnoreOption",Pl)}function pa(){xl(271),kl(42),xl(100),kl(267),Gn()}function da(){Vl.startNonterminal("CollectionDecl",Pl),Sl(95),kl(255),Nl(),Ha(),kl(107),Hl==79&&(Nl(),va()),Vl.endNonterminal("CollectionDecl",Pl)}function va(){Vl.startNonterminal("CollectionTypeDecl",Pl),Sl(79),kl(178),Nl(),Ps(),kl(156),Hl!=53&&(Nl(),ys()),Vl.endNonterminal("CollectionTypeDecl",Pl)}function ma(){Vl.startNonterminal("IndexName",Pl),Ha(),Vl.endNonterminal("IndexName",Pl)}function ga(){Vl.startNonterminal("IndexDomainExpr",Pl),Lr(),Vl.endNonterminal("IndexDomainExpr",Pl)}function ya(){Vl.startNonterminal("IndexKeySpec",Pl),ba(),Hl==79&&(Nl(),wa()),kl(146),Hl==94&&(Nl(),Sa()),Vl.endNonterminal("IndexKeySpec",Pl)}function ba(){Vl.startNonterminal("IndexKeyExpr",Pl),Lr(),Vl.endNonterminal("IndexKeyExpr",Pl)}function wa(){Vl.startNonterminal("IndexKeyTypeDecl",Pl),Sl(79),kl(255),Nl(),Ea(),kl(169);if(Hl==39||Hl==40||Hl==64)Nl(),ys();Vl.endNonterminal("IndexKeyTypeDecl",Pl)}function Ea(){Vl.startNonterminal("AtomicType",Pl),Ha(),Vl.endNonterminal("AtomicType",Pl)}function Sa(){Vl.startNonterminal("IndexKeyCollation",Pl),Sl(94),kl(15),Sl(7),Vl.endNonterminal("IndexKeyCollation",Pl)}function xa(){Vl.startNonterminal("IndexDecl",Pl),Sl(155),kl(255),Nl(),ma(),kl(65),Sl(197),kl(63),Sl(192),kl(266),Nl(),ga(),Sl(87),kl(266),Nl(),ya();for(;;){kl(103);if(Hl!=41)break;Sl(41),kl(266),Nl(),ya()}Vl.endNonterminal("IndexDecl",Pl)}function Ta(){Vl.startNonterminal("ICDecl",Pl),Sl(161),kl(40),Sl(97),kl(255),Nl(),Ha(),kl(120);switch(Hl){case 197:Nl(),Na();break;default:Nl(),Aa()}Vl.endNonterminal("ICDecl",Pl)}function Na(){Vl.startNonterminal("ICCollection",Pl),Sl(197),kl(39),Sl(95),kl(255),Nl(),Ha(),kl(140);switch(Hl){case 31:Nl(),Ca();break;case 191:Nl(),ka();break;default:Nl(),La()}Vl.endNonterminal("ICCollection",Pl)}function Ca(){Vl.startNonterminal("ICCollSequence",Pl),li(),kl(37),Sl(92),kl(267),Nl(),_f(),Vl.endNonterminal("ICCollSequence",Pl)}function ka(){Vl.startNonterminal("ICCollSequenceUnique",Pl),Sl(191),kl(21),Nl(),li(),kl(37),Sl(92),kl(80),Sl(255),kl(57),Sl(168),kl(266),Nl(),Lr(),Vl.endNonterminal("ICCollSequenceUnique",Pl)}function La(){Vl.startNonterminal("ICCollNode",Pl),Sl(138),kl(62),Sl(191),kl(21),Nl(),li(),kl(37),Sl(92),kl(267),Nl(),_f(),Vl.endNonterminal("ICCollNode",Pl)}function Aa(){Vl.startNonterminal("ICForeignKey",Pl),Sl(139),kl(57),Sl(168),kl(51),Nl(),Oa(),Nl(),Ma(),Vl.endNonterminal("ICForeignKey",Pl)}function Oa(){Vl.startNonterminal("ICForeignKeySource",Pl),Sl(140),kl(39),Nl(),_a(),Vl.endNonterminal("ICForeignKeySource",Pl)}function Ma(){Vl.startNonterminal("ICForeignKeyTarget",Pl),Sl(248),kl(39),Nl(),_a(),Vl.endNonterminal("ICForeignKeyTarget",Pl)}function _a(){Vl.startNonterminal("ICForeignKeyValues",Pl),Sl(95),kl(255),Nl(),Ha(),kl(62),Sl(191),kl(21),Nl(),li(),kl(57),Sl(168),kl(266),Nl(),Lr(),Vl.endNonterminal("ICForeignKeyValues",Pl)}function Da(){xl(36);for(;;){Al(89);if(Hl==50)break;switch(Hl){case 24:xl(24);break;default:Da()}}xl(50)}function Pa(){switch(Hl){case 22:xl(22);break;default:Da()}}function Ha(){Vl.startNonterminal("EQName",Pl),Al(250);switch(Hl){case 82:Sl(82);break;case 96:Sl(96);break;case 120:Sl(120);break;case 121:Sl(121);break;case 124:Sl(124);break;case 145:Sl(145);break;case 152:Sl(152);break;case 165:Sl(165);break;case 185:Sl(185);break;case 191:Sl(191);break;case 216:Sl(216);break;case 226:Sl(226);break;case 227:Sl(227);break;case 243:Sl(243);break;case 244:Sl(244);break;case 253:Sl(253);break;case 78:Sl(78);break;case 167:Sl(167);break;case 242:Sl(242);break;default:ja()}Vl.endNonterminal("EQName",Pl)}function Ba(){Al(250);switch(Hl){case 82:xl(82);break;case 96:xl(96);break;case 120:xl(120);break;case 121:xl(121);break;case 124:xl(124);break;case 145:xl(145);break;case 152:xl(152);break;case 165:xl(165);break;case 185:xl(185);break;case 191:xl(191);break;case 216:xl(216);break;case 226:xl(226);break;case 227:xl(227);break;case 243:xl(243);break;case 244:xl(244);break;case 253:xl(253);break;case 78:xl(78);break;case 167:xl(167);break;case 242:xl(242);break;default:Fa()}}function ja(){Vl.startNonterminal("FunctionName",Pl);switch(Hl){case 6:Sl(6);break;case 70:Sl(70);break;case 73:Sl(73);break;case 74:Sl(74);break;case 75:Sl(75);break;case 79:Sl(79);break;case 80:Sl(80);break;case 84:Sl(84);break;case 88:Sl(88);break;case 89:Sl(89);break;case 90:Sl(90);break;case 93:Sl(93);break;case 94:Sl(94);break;case 103:Sl(103);break;case 105:Sl(105);break;case 108:Sl(108);break;case 109:Sl(109);break;case 110:Sl(110);break;case 111:Sl(111);break;case 112:Sl(112);break;case 113:Sl(113);break;case 118:Sl(118);break;case 119:Sl(119);break;case 122:Sl(122);break;case 123:Sl(123);break;case 126:Sl(126);break;case 128:Sl(128);break;case 129:Sl(129);break;case 131:Sl(131);break;case 134:Sl(134);break;case 135:Sl(135);break;case 136:Sl(136);break;case 137:Sl(137);break;case 146:Sl(146);break;case 148:Sl(148);break;case 150:Sl(150);break;case 151:Sl(151);break;case 153:Sl(153);break;case 159:Sl(159);break;case 160:Sl(160);break;case 162:Sl(162);break;case 163:Sl(163);break;case 164:Sl(164);break;case 170:Sl(170);break;case 172:Sl(172);break;case 174:Sl(174);break;case 178:Sl(178);break;case 180:Sl(180);break;case 181:Sl(181);break;case 182:Sl(182);break;case 184:Sl(184);break;case 186:Sl(186);break;case 198:Sl(198);break;case 200:Sl(200);break;case 201:Sl(201);break;case 202:Sl(202);break;case 206:Sl(206);break;case 212:Sl(212);break;case 213:Sl(213);break;case 218:Sl(218);break;case 219:Sl(219);break;case 220:Sl(220);break;case 224:Sl(224);break;case 229:Sl(229);break;case 235:Sl(235);break;case 236:Sl(236);break;case 237:Sl(237);break;case 248:Sl(248);break;case 249:Sl(249);break;case 250:Sl(250);break;case 254:Sl(254);break;case 256:Sl(256);break;case 260:Sl(260);break;case 266:Sl(266);break;case 270:Sl(270);break;case 274:Sl(274);break;case 72:Sl(72);break;case 81:Sl(81);break;case 83:Sl(83);break;case 85:Sl(85);break;case 86:Sl(86);break;case 91:Sl(91);break;case 98:Sl(98);break;case 101:Sl(101);break;case 102:Sl(102);break;case 104:Sl(104);break;case 106:Sl(106);break;case 125:Sl(125);break;case 132:Sl(132);break;case 133:Sl(133);break;case 141:Sl(141);break;case 154:Sl(154);break;case 155:Sl(155);break;case 161:Sl(161);break;case 171:Sl(171);break;case 192:Sl(192);break;case 199:Sl(199);break;case 203:Sl(203);break;case 222:Sl(222);break;case 225:Sl(225);break;case 228:Sl(228);break;case 234:Sl(234);break;case 240:Sl(240);break;case 251:Sl(251);break;case 252:Sl(252);break;case 257:Sl(257);break;case 261:Sl(261);break;case 262:Sl(262);break;case 263:Sl(263);break;case 267:Sl(267);break;case 97:Sl(97);break;case 176:Sl(176);break;case 221:Sl(221);break;case 77:Sl(77);break;case 166:Sl(166);break;default:Sl(194)}Vl.endNonterminal("FunctionName",Pl)}function Fa(){switch(Hl){case 6:xl(6);break;case 70:xl(70);break;case 73:xl(73);break;case 74:xl(74);break;case 75:xl(75);break;case 79:xl(79);break;case 80:xl(80);break;case 84:xl(84);break;case 88:xl(88);break;case 89:xl(89);break;case 90:xl(90);break;case 93:xl(93);break;case 94:xl(94);break;case 103:xl(103);break;case 105:xl(105);break;case 108:xl(108);break;case 109:xl(109);break;case 110:xl(110);break;case 111:xl(111);break;case 112:xl(112);break;case 113:xl(113);break;case 118:xl(118);break;case 119:xl(119);break;case 122:xl(122);break;case 123:xl(123);break;case 126:xl(126);break;case 128:xl(128);break;case 129:xl(129);break;case 131:xl(131);break;case 134:xl(134);break;case 135:xl(135);break;case 136:xl(136);break;case 137:xl(137);break;case 146:xl(146);break;case 148:xl(148);break;case 150:xl(150);break;case 151:xl(151);break;case 153:xl(153);break;case 159:xl(159);break;case 160:xl(160);break;case 162:xl(162);break;case 163:xl(163);break;case 164:xl(164);break;case 170:xl(170);break;case 172:xl(172);break;case 174:xl(174);break;case 178:xl(178);break;case 180:xl(180);break;case 181:xl(181);break;case 182:xl(182);break;case 184:xl(184);break;case 186:xl(186);break;case 198:xl(198);break;case 200:xl(200);break;case 201:xl(201);break;case 202:xl(202);break;case 206:xl(206);break;case 212:xl(212);break;case 213:xl(213);break;case 218:xl(218);break;case 219:xl(219);break;case 220:xl(220);break;case 224:xl(224);break;case 229:xl(229);break;case 235:xl(235);break;case 236:xl(236);break;case 237:xl(237);break;case 248:xl(248);break;case 249:xl(249);break;case 250:xl(250);break;case 254:xl(254);break;case 256:xl(256);break;case 260:xl(260);break;case 266:xl(266);break;case 270:xl(270);break;case 274:xl(274);break;case 72:xl(72);break;case 81:xl(81);break;case 83:xl(83);break;case 85:xl(85);break;case 86:xl(86);break;case 91:xl(91);break;case 98:xl(98);break;case 101:xl(101);break;case 102:xl(102);break;case 104:xl(104);break;case 106:xl(106);break;case 125:xl(125);break;case 132:xl(132);break;case 133:xl(133);break;case 141:xl(141);break;case 154:xl(154);break;case 155:xl(155);break;case 161:xl(161);break;case 171:xl(171);break;case 192:xl(192);break;case 199:xl(199);break;case 203:xl(203);break;case 222:xl(222);break;case 225:xl(225);break;case 228:xl(228);break;case 234:xl(234);break;case 240:xl(240);break;case 251:xl(251);break;case 252:xl(252);break;case 257:xl(257);break;case 261:xl(261);break;case 262:xl(262);break;case 263:xl(263);break;case 267:xl(267);break;case 97:xl(97);break;case 176:xl(176);break;case 221:xl(221);break;case 77:xl(77);break;case 166:xl(166);break;default:xl(194)}}function Ia(){Vl.startNonterminal("NCName",Pl);switch(Hl){case 19:Sl(19);break;case 70:Sl(70);break;case 75:Sl(75);break;case 79:Sl(79);break;case 80:Sl(80);break;case 84:Sl(84);break;case 88:Sl(88);break;case 89:Sl(89);break;case 90:Sl(90);break;case 94:Sl(94);break;case 105:Sl(105);break;case 109:Sl(109);break;case 113:Sl(113);break;case 118:Sl(118);break;case 122:Sl(122);break;case 123:Sl(123);break;case 126:Sl(126);break;case 128:Sl(128);break;case 131:Sl(131);break;case 137:Sl(137);break;case 146:Sl(146);break;case 148:Sl(148);break;case 150:Sl(150);break;case 151:Sl(151);break;case 160:Sl(160);break;case 162:Sl(162);break;case 163:Sl(163);break;case 164:Sl(164);break;case 172:Sl(172);break;case 174:Sl(174);break;case 178:Sl(178);break;case 180:Sl(180);break;case 181:Sl(181);break;case 186:Sl(186);break;case 198:Sl(198);break;case 200:Sl(200);break;case 201:Sl(201);break;case 220:Sl(220);break;case 224:Sl(224);break;case 236:Sl(236);break;case 237:Sl(237);break;case 248:Sl(248);break;case 249:Sl(249);break;case 254:Sl(254);break;case 266:Sl(266);break;case 270:Sl(270);break;case 73:Sl(73);break;case 74:Sl(74);break;case 82:Sl(82);break;case 93:Sl(93);break;case 96:Sl(96);break;case 103:Sl(103);break;case 108:Sl(108);break;case 110:Sl(110);break;case 111:Sl(111);break;case 112:Sl(112);break;case 119:Sl(119);break;case 120:Sl(120);break;case 121:Sl(121);break;case 124:Sl(124);break;case 129:Sl(129);break;case 134:Sl(134);break;case 135:Sl(135);break;case 136:Sl(136);break;case 145:Sl(145);break;case 152:Sl(152);break;case 153:Sl(153);break;case 159:Sl(159);break;case 165:Sl(165);break;case 170:Sl(170);break;case 182:Sl(182);break;case 184:Sl(184);break;case 185:Sl(185);break;case 191:Sl(191);break;case 202:Sl(202);break;case 206:Sl(206);break;case 212:Sl(212);break;case 213:Sl(213);break;case 216:Sl(216);break;case 218:Sl(218);break;case 219:Sl(219);break;case 226:Sl(226);break;case 227:Sl(227);break;case 229:Sl(229);break;case 235:Sl(235);break;case 243:Sl(243);break;case 244:Sl(244);break;case 250:Sl(250);break;case 253:Sl(253);break;case 256:Sl(256);break;case 260:Sl(260);break;case 262:Sl(262);break;case 274:Sl(274);break;case 72:Sl(72);break;case 81:Sl(81);break;case 83:Sl(83);break;case 85:Sl(85);break;case 86:Sl(86);break;case 91:Sl(91);break;case 98:Sl(98);break;case 101:Sl(101);break;case 102:Sl(102);break;case 104:Sl(104);break;case 106:Sl(106);break;case 125:Sl(125);break;case 132:Sl(132);break;case 133:Sl(133);break;case 141:Sl(141);break;case 154:Sl(154);break;case 155:Sl(155);break;case 161:Sl(161);break;case 171:Sl(171);break;case 192:Sl(192);break;case 199:Sl(199);break;case 203:Sl(203);break;case 222:Sl(222);break;case 225:Sl(225);break;case 228:Sl(228);break;case 234:Sl(234);break;case 240:Sl(240);break;case 251:Sl(251);break;case 252:Sl(252);break;case 257:Sl(257);break;case 261:Sl(261);break;case 263:Sl(263);break;case 267:Sl(267);break;case 97:Sl(97);break;case 176:Sl(176);break;case 221:Sl(221);break;case 77:Sl(77);break;case 166:Sl(166);break;default:Sl(194)}Vl.endNonterminal("NCName",Pl)}function qa(){switch(Hl){case 19:xl(19);break;case 70:xl(70);break;case 75:xl(75);break;case 79:xl(79);break;case 80:xl(80);break;case 84:xl(84);break;case 88:xl(88);break;case 89:xl(89);break;case 90:xl(90);break;case 94:xl(94);break;case 105:xl(105);break;case 109:xl(109);break;case 113:xl(113);break;case 118:xl(118);break;case 122:xl(122);break;case 123:xl(123);break;case 126:xl(126);break;case 128:xl(128);break;case 131:xl(131);break;case 137:xl(137);break;case 146:xl(146);break;case 148:xl(148);break;case 150:xl(150);break;case 151:xl(151);break;case 160:xl(160);break;case 162:xl(162);break;case 163:xl(163);break;case 164:xl(164);break;case 172:xl(172);break;case 174:xl(174);break;case 178:xl(178);break;case 180:xl(180);break;case 181:xl(181);break;case 186:xl(186);break;case 198:xl(198);break;case 200:xl(200);break;case 201:xl(201);break;case 220:xl(220);break;case 224:xl(224);break;case 236:xl(236);break;case 237:xl(237);break;case 248:xl(248);break;case 249:xl(249);break;case 254:xl(254);break;case 266:xl(266);break;case 270:xl(270);break;case 73:xl(73);break;case 74:xl(74);break;case 82:xl(82);break;case 93:xl(93);break;case 96:xl(96);break;case 103:xl(103);break;case 108:xl(108);break;case 110:xl(110);break;case 111:xl(111);break;case 112:xl(112);break;case 119:xl(119);break;case 120:xl(120);break;case 121:xl(121);break;case 124:xl(124);break;case 129:xl(129);break;case 134:xl(134);break;case 135:xl(135);break;case 136:xl(136);break;case 145:xl(145);break;case 152:xl(152);break;case 153:xl(153);break;case 159:xl(159);break;case 165:xl(165);break;case 170:xl(170);break;case 182:xl(182);break;case 184:xl(184);break;case 185:xl(185);break;case 191:xl(191);break;case 202:xl(202);break;case 206:xl(206);break;case 212:xl(212);break;case 213:xl(213);break;case 216:xl(216);break;case 218:xl(218);break;case 219:xl(219);break;case 226:xl(226);break;case 227:xl(227);break;case 229:xl(229);break;case 235:xl(235);break;case 243:xl(243);break;case 244:xl(244);break;case 250:xl(250);break;case 253:xl(253);break;case 256:xl(256);break;case 260:xl(260);break;case 262:xl(262);break;case 274:xl(274);break;case 72:xl(72);break;case 81:xl(81);break;case 83:xl(83);break;case 85:xl(85);break;case 86:xl(86);break;case 91:xl(91);break;case 98:xl(98);break;case 101:xl(101);break;case 102:xl(102);break;case 104:xl(104);break;case 106:xl(106);break;case 125:xl(125);break;case 132:xl(132);break;case 133:xl(133);break;case 141:xl(141);break;case 154:xl(154);break;case 155:xl(155);break;case 161:xl(161);break;case 171:xl(171);break;case 192:xl(192);break;case 199:xl(199);break;case 203:xl(203);break;case 222:xl(222);break;case 225:xl(225);break;case 228:xl(228);break;case 234:xl(234);break;case 240:xl(240);break;case 251:xl(251);break;case 252:xl(252);break;case 257:xl(257);break;case 261:xl(261);break;case 263:xl(263);break;case 267:xl(267);break;case 97:xl(97);break;case 176:xl(176);break;case 221:xl(221);break;case 77:xl(77);break;case 166:xl(166);break;default:xl(194)}}function Ra(){Vl.startNonterminal("MainModule",Pl),l(),Nl(),Ua(),Vl.endNonterminal("MainModule",Pl)}function Ua(){Vl.startNonterminal("Program",Pl),$a(),Vl.endNonterminal("Program",Pl)}function za(){Vl.startNonterminal("Statements",Pl);for(;;){kl(278);switch(Hl){case 34:Ll(269);break;case 35:Ol(252);break;case 46:Ll(284);break;case 47:Ll(265);break;case 54:Ol(4);break;case 55:Ol(1);break;case 59:Ol(3);break;case 66:Ll(257);break;case 68:Ll(272);break;case 77:Ll(200);break;case 82:Ll(281);break;case 121:Ll(280);break;case 132:Ll(203);break;case 137:Ll(208);break;case 174:Ll(205);break;case 218:Ll(206);break;case 219:Ll(207);break;case 260:Ll(210);break;case 276:Ll(277);break;case 278:Ll(273);break;case 5:case 45:Ll(186);break;case 31:case 32:Ll(255);break;case 40:case 42:Ll(267);break;case 86:case 102:Ll(201);break;case 110:case 159:Ll(209);break;case 184:case 216:Ll(268);break;case 103:case 129:case 235:case 262:Ll(197);break;case 8:case 9:case 10:case 11:case 44:Ll(192);break;case 78:case 124:case 165:case 167:case 242:Ll(191);break;case 96:case 119:case 202:case 244:case 250:case 256:Ll(204);break;case 73:case 74:case 93:case 111:case 112:case 135:case 136:case 206:case 212:case 213:case 229:Ll(198);break;case 6:case 70:case 72:case 75:case 79:case 80:case 81:case 83:case 84:case 85:case 88:case 89:case 90:case 91:case 94:case 97:case 98:case 101:case 104:case 105:case 106:case 108:case 109:case 113:case 118:case 120:case 122:case 123:case 125:case 126:case 128:case 131:case 133:case 134:case 141:case 145:case 146:case 148:case 150:case 151:case 152:case 153:case 154:case 155:case 160:case 161:case 162:case 163:case 164:case 166:case 170:case 171:case 172:case 176:case 178:case 180:case 181:case 182:case 185:case 186:case 191:case 192:case 194:case 198:case 199:case 200:case 201:case 203:case 220:case 221:case 222:case 224:case 225:case 226:case 227:case 228:case 234:case 236:case 237:case 240:case 243:case 248:case 249:case 251:case 252:case 253:case 254:case 257:case 261:case 263:case 266:case 267:case 270:case 274:Ll(195);break;default:_l=Hl}if(_l!=25&&_l!=53&&_l!=282&&_l!=12805&&_l!=12806&&_l!=12808&&_l!=12809&&_l!=12810&&_l!=12811&&_l!=12844&&_l!=12845&&_l!=12846&&_l!=12870&&_l!=12872&&_l!=12873&&_l!=12874&&_l!=12875&&_l!=12877&&_l!=12878&&_l!=12879&&_l!=12880&&_l!=12881&&_l!=12882&&_l!=12883&&_l!=12884&&_l!=12885&&_l!=12886&&_l!=12888&&_l!=12889&&_l!=12890&&_l!=12891&&_l!=12893&&_l!=12894&&_l!=12896&&_l!=12897&&_l!=12898&&_l!=12901&&_l!=12902&&_l!=12903&&_l!=12904&&_l!=12905&&_l!=12906&&_l!=12908&&_l!=12909&&_l!=12910&&_l!=12911&&_l!=12912&&_l!=12913&&_l!=12918&&_l!=12919&&_l!=12920&&_l!=12921&&_l!=12922&&_l!=12923&&_l!=12924&&_l!=12925&&_l!=12926&&_l!=12928&&_l!=12929&&_l!=12931&&_l!=12932&&_l!=12933&&_l!=12934&&_l!=12935&&_l!=12936&&_l!=12937&&_l!=12941&&_l!=12945&&_l!=12946&&_l!=12948&&_l!=12950&&_l!=12951&&_l!=12952&&_l!=12953&&_l!=12954&&_l!=12955&&_l!=12959&&_l!=12960&&_l!=12961&&_l!=12962&&_l!=12963&&_l!=12964&&_l!=12965&&_l!=12966&&_l!=12967&&_l!=12970&&_l!=12971&&_l!=12972&&_l!=12974&&_l!=12976&&_l!=12978&&_l!=12980&&_l!=12981&&_l!=12982&&_l!=12984&&_l!=12985&&_l!=12986&&_l!=12991&&_l!=12992&&_l!=12994&&_l!=12998&&_l!=12999&&_l!=13e3&&_l!=13001&&_l!=13002&&_l!=13003&&_l!=13006&&_l!=13012&&_l!=13013&&_l!=13016&&_l!=13018&&_l!=13019&&_l!=13020&&_l!=13021&&_l!=13022&&_l!=13024&&_l!=13025&&_l!=13026&&_l!=13027&&_l!=13028&&_l!=13029&&_l!=13034&&_l!=13035&&_l!=13036&&_l!=13037&&_l!=13040&&_l!=13042&&_l!=13043&&_l!=13044&&_l!=13048&&_l!=13049&&_l!=13050&&_l!=13051&&_l!=13052&&_l!=13053&&_l!=13054&&_l!=13056&&_l!=13057&&_l!=13060&&_l!=13061&&_l!=13062&&_l!=13063&&_l!=13066&&_l!=13067&&_l!=13070&&_l!=13074&&_l!=16134&&_l!=20997&&_l!=20998&&_l!=21e3&&_l!=21001&&_l!=21002&&_l!=21003&&_l!=21036&&_l!=21037&&_l!=21038&&_l!=21062&&_l!=21064&&_l!=21065&&_l!=21066&&_l!=21067&&_l!=21069&&_l!=21070&&_l!=21071&&_l!=21072&&_l!=21073&&_l!=21074&&_l!=21075&&_l!=21076&&_l!=21077&&_l!=21078&&_l!=21080&&_l!=21081&&_l!=21082&&_l!=21083&&_l!=21085&&_l!=21086&&_l!=21088&&_l!=21089&&_l!=21090&&_l!=21093&&_l!=21094&&_l!=21095&&_l!=21096&&_l!=21097&&_l!=21098&&_l!=21100&&_l!=21101&&_l!=21102&&_l!=21103&&_l!=21104&&_l!=21105&&_l!=21110&&_l!=21111&&_l!=21112&&_l!=21113&&_l!=21114&&_l!=21115&&_l!=21116&&_l!=21117&&_l!=21118&&_l!=21120&&_l!=21121&&_l!=21123&&_l!=21124&&_l!=21125&&_l!=21126&&_l!=21127&&_l!=21128&&_l!=21129&&_l!=21133&&_l!=21137&&_l!=21138&&_l!=21140&&_l!=21142&&_l!=21143&&_l!=21144&&_l!=21145&&_l!=21146&&_l!=21147&&_l!=21151&&_l!=21152&&_l!=21153&&_l!=21154&&_l!=21155&&_l!=21156&&_l!=21157&&_l!=21158&&_l!=21159&&_l!=21162&&_l!=21163&&_l!=21164&&_l!=21166&&_l!=21168&&_l!=21170&&_l!=21172&&_l!=21173&&_l!=21174&&_l!=21176&&_l!=21177&&_l!=21178&&_l!=21183&&_l!=21184&&_l!=21186&&_l!=21190&&_l!=21191&&_l!=21192&&_l!=21193&&_l!=21194&&_l!=21195&&_l!=21198&&_l!=21204&&_l!=21205&&_l!=21208&&_l!=21210&&_l!=21211&&_l!=21212&&_l!=21213&&_l!=21214&&_l!=21216&&_l!=21217&&_l!=21218&&_l!=21219&&_l!=21220&&_l!=21221&&_l!=21226&&_l!=21227&&_l!=21228&&_l!=21229&&_l!=21232&&_l!=21234&&_l!=21235&&_l!=21236&&_l!=21240&&_l!=21241&&_l!=21242&&_l!=21243&&_l!=21244&&_l!=21245&&_l!=21246&&_l!=21248&&_l!=21249&&_l!=21252&&_l!=21253&&_l!=21254&&_l!=21255&&_l!=21258&&_l!=21259&&_l!=21262&&_l!=21266&&_l!=27141&&_l!=27142&&_l!=27144&&_l!=27145&&_l!=27146&&_l!=27147&&_l!=27180&&_l!=27181&&_l!=27182&&_l!=27206&&_l!=27208&&_l!=27209&&_l!=27210&&_l!=27211&&_l!=27213&&_l!=27214&&_l!=27215&&_l!=27216&&_l!=27217&&_l!=27218&&_l!=27219&&_l!=27220&&_l!=27221&&_l!=27222&&_l!=27224&&_l!=27225&&_l!=27226&&_l!=27227&&_l!=27229&&_l!=27230&&_l!=27232&&_l!=27233&&_l!=27234&&_l!=27237&&_l!=27238&&_l!=27239&&_l!=27240&&_l!=27241&&_l!=27242&&_l!=27244&&_l!=27245&&_l!=27246&&_l!=27247&&_l!=27248&&_l!=27249&&_l!=27254&&_l!=27255&&_l!=27256&&_l!=27257&&_l!=27258&&_l!=27259&&_l!=27260&&_l!=27261&&_l!=27262&&_l!=27264&&_l!=27265&&_l!=27267&&_l!=27268&&_l!=27269&&_l!=27270&&_l!=27271&&_l!=27272&&_l!=27273&&_l!=27277&&_l!=27281&&_l!=27282&&_l!=27284&&_l!=27286&&_l!=27287&&_l!=27288&&_l!=27289&&_l!=27290&&_l!=27291&&_l!=27295&&_l!=27296&&_l!=27297&&_l!=27298&&_l!=27299&&_l!=27300&&_l!=27301&&_l!=27302&&_l!=27303&&_l!=27306&&_l!=27307&&_l!=27308&&_l!=27310&&_l!=27312&&_l!=27314&&_l!=27316&&_l!=27317&&_l!=27318&&_l!=27320&&_l!=27321&&_l!=27322&&_l!=27327&&_l!=27328&&_l!=27330&&_l!=27334&&_l!=27335&&_l!=27336&&_l!=27337&&_l!=27338&&_l!=27339&&_l!=27342&&_l!=27348&&_l!=27349&&_l!=27352&&_l!=27354&&_l!=27355&&_l!=27356&&_l!=27357&&_l!=27358&&_l!=27360&&_l!=27361&&_l!=27362&&_l!=27363&&_l!=27364&&_l!=27365&&_l!=27370&&_l!=27371&&_l!=27372&&_l!=27373&&_l!=27376&&_l!=27378&&_l!=27379&&_l!=27380&&_l!=27384&&_l!=27385&&_l!=27386&&_l!=27387&&_l!=27388&&_l!=27389&&_l!=27390&&_l!=27392&&_l!=27393&&_l!=27396&&_l!=27397&&_l!=27398&&_l!=27399&&_l!=27402&&_l!=27403&&_l!=27406&&_l!=27410&&_l!=90198&&_l!=90214&&_l!=113284&&_l!=144389&&_l!=144390&&_l!=144392&&_l!=144393&&_l!=144394&&_l!=144395&&_l!=144428&&_l!=144429&&_l!=144430&&_l!=144454&&_l!=144456&&_l!=144457&&_l!=144458&&_l!=144459&&_l!=144461&&_l!=144462&&_l!=144463&&_l!=144464&&_l!=144465&&_l!=144466&&_l!=144467&&_l!=144468&&_l!=144469&&_l!=144470&&_l!=144472&&_l!=144473&&_l!=144474&&_l!=144475&&_l!=144477&&_l!=144478&&_l!=144480&&_l!=144481&&_l!=144482&&_l!=144485&&_l!=144486&&_l!=144487&&_l!=144488&&_l!=144489&&_l!=144490&&_l!=144492&&_l!=144493&&_l!=144494&&_l!=144495&&_l!=144496&&_l!=144497&&_l!=144502&&_l!=144503&&_l!=144504&&_l!=144505&&_l!=144506&&_l!=144507&&_l!=144508&&_l!=144509&&_l!=144510&&_l!=144512&&_l!=144513&&_l!=144515&&_l!=144516&&_l!=144517&&_l!=144518&&_l!=144519&&_l!=144520&&_l!=144521&&_l!=144525&&_l!=144529&&_l!=144530&&_l!=144532&&_l!=144534&&_l!=144535&&_l!=144536&&_l!=144537&&_l!=144538&&_l!=144539&&_l!=144543&&_l!=144544&&_l!=144545&&_l!=144546&&_l!=144547&&_l!=144548&&_l!=144549&&_l!=144550&&_l!=144551&&_l!=144554&&_l!=144555&&_l!=144556&&_l!=144558&&_l!=144560&&_l!=144562&&_l!=144564&&_l!=144565&&_l!=144566&&_l!=144568&&_l!=144569&&_l!=144570&&_l!=144575&&_l!=144576&&_l!=144578&&_l!=144582&&_l!=144583&&_l!=144584&&_l!=144585&&_l!=144586&&_l!=144587&&_l!=144590&&_l!=144596&&_l!=144597&&_l!=144600&&_l!=144602&&_l!=144603&&_l!=144604&&_l!=144605&&_l!=144606&&_l!=144608&&_l!=144609&&_l!=144610&&_l!=144611&&_l!=144612&&_l!=144613&&_l!=144618&&_l!=144619&&_l!=144620&&_l!=144621&&_l!=144624&&_l!=144626&&_l!=144627&&_l!=144628&&_l!=144632&&_l!=144633&&_l!=144634&&_l!=144635&&_l!=144636&&_l!=144637&&_l!=144638&&_l!=144640&&_l!=144641&&_l!=144644&&_l!=144645&&_l!=144646&&_l!=144647&&_l!=144650&&_l!=144651&&_l!=144654&&_l!=144658){_l=Kl(6,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Qa(),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(6,Pl,_l)}}if(_l!=-1&&_l!=53&&_l!=16134&&_l!=27141&&_l!=27142&&_l!=27144&&_l!=27145&&_l!=27146&&_l!=27147&&_l!=27180&&_l!=27181&&_l!=27182&&_l!=27206&&_l!=27208&&_l!=27209&&_l!=27210&&_l!=27211&&_l!=27213&&_l!=27214&&_l!=27215&&_l!=27216&&_l!=27217&&_l!=27218&&_l!=27219&&_l!=27220&&_l!=27221&&_l!=27222&&_l!=27224&&_l!=27225&&_l!=27226&&_l!=27227&&_l!=27229&&_l!=27230&&_l!=27232&&_l!=27233&&_l!=27234&&_l!=27237&&_l!=27238&&_l!=27239&&_l!=27240&&_l!=27241&&_l!=27242&&_l!=27244&&_l!=27245&&_l!=27246&&_l!=27247&&_l!=27248&&_l!=27249&&_l!=27254&&_l!=27255&&_l!=27256&&_l!=27257&&_l!=27258&&_l!=27259&&_l!=27260&&_l!=27261&&_l!=27262&&_l!=27264&&_l!=27265&&_l!=27267&&_l!=27268&&_l!=27269&&_l!=27270&&_l!=27271&&_l!=27272&&_l!=27273&&_l!=27277&&_l!=27281&&_l!=27282&&_l!=27284&&_l!=27286&&_l!=27287&&_l!=27288&&_l!=27289&&_l!=27290&&_l!=27291&&_l!=27295&&_l!=27296&&_l!=27297&&_l!=27298&&_l!=27299&&_l!=27300&&_l!=27301&&_l!=27302&&_l!=27303&&_l!=27306&&_l!=27307&&_l!=27308&&_l!=27310&&_l!=27312&&_l!=27314&&_l!=27316&&_l!=27317&&_l!=27318&&_l!=27320&&_l!=27321&&_l!=27322&&_l!=27327&&_l!=27328&&_l!=27330&&_l!=27334&&_l!=27335&&_l!=27336&&_l!=27337&&_l!=27338&&_l!=27339&&_l!=27342&&_l!=27348&&_l!=27349&&_l!=27352&&_l!=27354&&_l!=27355&&_l!=27356&&_l!=27357&&_l!=27358&&_l!=27360&&_l!=27361&&_l!=27362&&_l!=27363&&_l!=27364&&_l!=27365&&_l!=27370&&_l!=27371&&_l!=27372&&_l!=27373&&_l!=27376&&_l!=27378&&_l!=27379&&_l!=27380&&_l!=27384&&_l!=27385&&_l!=27386&&_l!=27387&&_l!=27388&&_l!=27389&&_l!=27390&&_l!=27392&&_l!=27393&&_l!=27396&&_l!=27397&&_l!=27398&&_l!=27399&&_l!=27402&&_l!=27403&&_l!=27406&&_l!=27410&&_l!=90198&&_l!=90214&&_l!=113284)break;Nl(),Ka()}Vl.endNonterminal("Statements",Pl)}function Wa(){for(;;){kl(278);switch(Hl){case 34:Ll(269);break;case 35:Ol(252);break;case 46:Ll(284);break;case 47:Ll(265);break;case 54:Ol(4);break;case 55:Ol(1);break;case 59:Ol(3);break;case 66:Ll(257);break;case 68:Ll(272);break;case 77:Ll(200);break;case 82:Ll(281);break;case 121:Ll(280);break;case 132:Ll(203);break;case 137:Ll(208);break;case 174:Ll(205);break;case 218:Ll(206);break;case 219:Ll(207);break;case 260:Ll(210);break;case 276:Ll(277);break;case 278:Ll(273);break;case 5:case 45:Ll(186);break;case 31:case 32:Ll(255);break;case 40:case 42:Ll(267);break;case 86:case 102:Ll(201);break;case 110:case 159:Ll(209);break;case 184:case 216:Ll(268);break;case 103:case 129:case 235:case 262:Ll(197);break;case 8:case 9:case 10:case 11:case 44:Ll(192);break;case 78:case 124:case 165:case 167:case 242:Ll(191);break;case 96:case 119:case 202:case 244:case 250:case 256:Ll(204);break;case 73:case 74:case 93:case 111:case 112:case 135:case 136:case 206:case 212:case 213:case 229:Ll(198);break;case 6:case 70:case 72:case 75:case 79:case 80:case 81:case 83:case 84:case 85:case 88:case 89:case 90:case 91:case 94:case 97:case 98:case 101:case 104:case 105:case 106:case 108:case 109:case 113:case 118:case 120:case 122:case 123:case 125:case 126:case 128:case 131:case 133:case 134:case 141:case 145:case 146:case 148:case 150:case 151:case 152:case 153:case 154:case 155:case 160:case 161:case 162:case 163:case 164:case 166:case 170:case 171:case 172:case 176:case 178:case 180:case 181:case 182:case 185:case 186:case 191:case 192:case 194:case 198:case 199:case 200:case 201:case 203:case 220:case 221:case 222:case 224:case 225:case 226:case 227:case 228:case 234:case 236:case 237:case 240:case 243:case 248:case 249:case 251:case 252:case 253:case 254:case 257:case 261:case 263:case 266:case 267:case 270:case 274:Ll(195);break;default:_l=Hl}if(_l!=25&&_l!=53&&_l!=282&&_l!=12805&&_l!=12806&&_l!=12808&&_l!=12809&&_l!=12810&&_l!=12811&&_l!=12844&&_l!=12845&&_l!=12846&&_l!=12870&&_l!=12872&&_l!=12873&&_l!=12874&&_l!=12875&&_l!=12877&&_l!=12878&&_l!=12879&&_l!=12880&&_l!=12881&&_l!=12882&&_l!=12883&&_l!=12884&&_l!=12885&&_l!=12886&&_l!=12888&&_l!=12889&&_l!=12890&&_l!=12891&&_l!=12893&&_l!=12894&&_l!=12896&&_l!=12897&&_l!=12898&&_l!=12901&&_l!=12902&&_l!=12903&&_l!=12904&&_l!=12905&&_l!=12906&&_l!=12908&&_l!=12909&&_l!=12910&&_l!=12911&&_l!=12912&&_l!=12913&&_l!=12918&&_l!=12919&&_l!=12920&&_l!=12921&&_l!=12922&&_l!=12923&&_l!=12924&&_l!=12925&&_l!=12926&&_l!=12928&&_l!=12929&&_l!=12931&&_l!=12932&&_l!=12933&&_l!=12934&&_l!=12935&&_l!=12936&&_l!=12937&&_l!=12941&&_l!=12945&&_l!=12946&&_l!=12948&&_l!=12950&&_l!=12951&&_l!=12952&&_l!=12953&&_l!=12954&&_l!=12955&&_l!=12959&&_l!=12960&&_l!=12961&&_l!=12962&&_l!=12963&&_l!=12964&&_l!=12965&&_l!=12966&&_l!=12967&&_l!=12970&&_l!=12971&&_l!=12972&&_l!=12974&&_l!=12976&&_l!=12978&&_l!=12980&&_l!=12981&&_l!=12982&&_l!=12984&&_l!=12985&&_l!=12986&&_l!=12991&&_l!=12992&&_l!=12994&&_l!=12998&&_l!=12999&&_l!=13e3&&_l!=13001&&_l!=13002&&_l!=13003&&_l!=13006&&_l!=13012&&_l!=13013&&_l!=13016&&_l!=13018&&_l!=13019&&_l!=13020&&_l!=13021&&_l!=13022&&_l!=13024&&_l!=13025&&_l!=13026&&_l!=13027&&_l!=13028&&_l!=13029&&_l!=13034&&_l!=13035&&_l!=13036&&_l!=13037&&_l!=13040&&_l!=13042&&_l!=13043&&_l!=13044&&_l!=13048&&_l!=13049&&_l!=13050&&_l!=13051&&_l!=13052&&_l!=13053&&_l!=13054&&_l!=13056&&_l!=13057&&_l!=13060&&_l!=13061&&_l!=13062&&_l!=13063&&_l!=13066&&_l!=13067&&_l!=13070&&_l!=13074&&_l!=16134&&_l!=20997&&_l!=20998&&_l!=21e3&&_l!=21001&&_l!=21002&&_l!=21003&&_l!=21036&&_l!=21037&&_l!=21038&&_l!=21062&&_l!=21064&&_l!=21065&&_l!=21066&&_l!=21067&&_l!=21069&&_l!=21070&&_l!=21071&&_l!=21072&&_l!=21073&&_l!=21074&&_l!=21075&&_l!=21076&&_l!=21077&&_l!=21078&&_l!=21080&&_l!=21081&&_l!=21082&&_l!=21083&&_l!=21085&&_l!=21086&&_l!=21088&&_l!=21089&&_l!=21090&&_l!=21093&&_l!=21094&&_l!=21095&&_l!=21096&&_l!=21097&&_l!=21098&&_l!=21100&&_l!=21101&&_l!=21102&&_l!=21103&&_l!=21104&&_l!=21105&&_l!=21110&&_l!=21111&&_l!=21112&&_l!=21113&&_l!=21114&&_l!=21115&&_l!=21116&&_l!=21117&&_l!=21118&&_l!=21120&&_l!=21121&&_l!=21123&&_l!=21124&&_l!=21125&&_l!=21126&&_l!=21127&&_l!=21128&&_l!=21129&&_l!=21133&&_l!=21137&&_l!=21138&&_l!=21140&&_l!=21142&&_l!=21143&&_l!=21144&&_l!=21145&&_l!=21146&&_l!=21147&&_l!=21151&&_l!=21152&&_l!=21153&&_l!=21154&&_l!=21155&&_l!=21156&&_l!=21157&&_l!=21158&&_l!=21159&&_l!=21162&&_l!=21163&&_l!=21164&&_l!=21166&&_l!=21168&&_l!=21170&&_l!=21172&&_l!=21173&&_l!=21174&&_l!=21176&&_l!=21177&&_l!=21178&&_l!=21183&&_l!=21184&&_l!=21186&&_l!=21190&&_l!=21191&&_l!=21192&&_l!=21193&&_l!=21194&&_l!=21195&&_l!=21198&&_l!=21204&&_l!=21205&&_l!=21208&&_l!=21210&&_l!=21211&&_l!=21212&&_l!=21213&&_l!=21214&&_l!=21216&&_l!=21217&&_l!=21218&&_l!=21219&&_l!=21220&&_l!=21221&&_l!=21226&&_l!=21227&&_l!=21228&&_l!=21229&&_l!=21232&&_l!=21234&&_l!=21235&&_l!=21236&&_l!=21240&&_l!=21241&&_l!=21242&&_l!=21243&&_l!=21244&&_l!=21245&&_l!=21246&&_l!=21248&&_l!=21249&&_l!=21252&&_l!=21253&&_l!=21254&&_l!=21255&&_l!=21258&&_l!=21259&&_l!=21262&&_l!=21266&&_l!=27141&&_l!=27142&&_l!=27144&&_l!=27145&&_l!=27146&&_l!=27147&&_l!=27180&&_l!=27181&&_l!=27182&&_l!=27206&&_l!=27208&&_l!=27209&&_l!=27210&&_l!=27211&&_l!=27213&&_l!=27214&&_l!=27215&&_l!=27216&&_l!=27217&&_l!=27218&&_l!=27219&&_l!=27220&&_l!=27221&&_l!=27222&&_l!=27224&&_l!=27225&&_l!=27226&&_l!=27227&&_l!=27229&&_l!=27230&&_l!=27232&&_l!=27233&&_l!=27234&&_l!=27237&&_l!=27238&&_l!=27239&&_l!=27240&&_l!=27241&&_l!=27242&&_l!=27244&&_l!=27245&&_l!=27246&&_l!=27247&&_l!=27248&&_l!=27249&&_l!=27254&&_l!=27255&&_l!=27256&&_l!=27257&&_l!=27258&&_l!=27259&&_l!=27260&&_l!=27261&&_l!=27262&&_l!=27264&&_l!=27265&&_l!=27267&&_l!=27268&&_l!=27269&&_l!=27270&&_l!=27271&&_l!=27272&&_l!=27273&&_l!=27277&&_l!=27281&&_l!=27282&&_l!=27284&&_l!=27286&&_l!=27287&&_l!=27288&&_l!=27289&&_l!=27290&&_l!=27291&&_l!=27295&&_l!=27296&&_l!=27297&&_l!=27298&&_l!=27299&&_l!=27300&&_l!=27301&&_l!=27302&&_l!=27303&&_l!=27306&&_l!=27307&&_l!=27308&&_l!=27310&&_l!=27312&&_l!=27314&&_l!=27316&&_l!=27317&&_l!=27318&&_l!=27320&&_l!=27321&&_l!=27322&&_l!=27327&&_l!=27328&&_l!=27330&&_l!=27334&&_l!=27335&&_l!=27336&&_l!=27337&&_l!=27338&&_l!=27339&&_l!=27342&&_l!=27348&&_l!=27349&&_l!=27352&&_l!=27354&&_l!=27355&&_l!=27356&&_l!=27357&&_l!=27358&&_l!=27360&&_l!=27361&&_l!=27362&&_l!=27363&&_l!=27364&&_l!=27365&&_l!=27370&&_l!=27371&&_l!=27372&&_l!=27373&&_l!=27376&&_l!=27378&&_l!=27379&&_l!=27380&&_l!=27384&&_l!=27385&&_l!=27386&&_l!=27387&&_l!=27388&&_l!=27389&&_l!=27390&&_l!=27392&&_l!=27393&&_l!=27396&&_l!=27397&&_l!=27398&&_l!=27399&&_l!=27402&&_l!=27403&&_l!=27406&&_l!=27410&&_l!=90198&&_l!=90214&&_l!=113284&&_l!=144389&&_l!=144390&&_l!=144392&&_l!=144393&&_l!=144394&&_l!=144395&&_l!=144428&&_l!=144429&&_l!=144430&&_l!=144454&&_l!=144456&&_l!=144457&&_l!=144458&&_l!=144459&&_l!=144461&&_l!=144462&&_l!=144463&&_l!=144464&&_l!=144465&&_l!=144466&&_l!=144467&&_l!=144468&&_l!=144469&&_l!=144470&&_l!=144472&&_l!=144473&&_l!=144474&&_l!=144475&&_l!=144477&&_l!=144478&&_l!=144480&&_l!=144481&&_l!=144482&&_l!=144485&&_l!=144486&&_l!=144487&&_l!=144488&&_l!=144489&&_l!=144490&&_l!=144492&&_l!=144493&&_l!=144494&&_l!=144495&&_l!=144496&&_l!=144497&&_l!=144502&&_l!=144503&&_l!=144504&&_l!=144505&&_l!=144506&&_l!=144507&&_l!=144508&&_l!=144509&&_l!=144510&&_l!=144512&&_l!=144513&&_l!=144515&&_l!=144516&&_l!=144517&&_l!=144518&&_l!=144519&&_l!=144520&&_l!=144521&&_l!=144525&&_l!=144529&&_l!=144530&&_l!=144532&&_l!=144534&&_l!=144535&&_l!=144536&&_l!=144537&&_l!=144538&&_l!=144539&&_l!=144543&&_l!=144544&&_l!=144545&&_l!=144546&&_l!=144547&&_l!=144548&&_l!=144549&&_l!=144550&&_l!=144551&&_l!=144554&&_l!=144555&&_l!=144556&&_l!=144558&&_l!=144560&&_l!=144562&&_l!=144564&&_l!=144565&&_l!=144566&&_l!=144568&&_l!=144569&&_l!=144570&&_l!=144575&&_l!=144576&&_l!=144578&&_l!=144582&&_l!=144583&&_l!=144584&&_l!=144585&&_l!=144586&&_l!=144587&&_l!=144590&&_l!=144596&&_l!=144597&&_l!=144600&&_l!=144602&&_l!=144603&&_l!=144604&&_l!=144605&&_l!=144606&&_l!=144608&&_l!=144609&&_l!=144610&&_l!=144611&&_l!=144612&&_l!=144613&&_l!=144618&&_l!=144619&&_l!=144620&&_l!=144621&&_l!=144624&&_l!=144626&&_l!=144627&&_l!=144628&&_l!=144632&&_l!=144633&&_l!=144634&&_l!=144635&&_l!=144636&&_l!=144637&&_l!=144638&&_l!=144640&&_l!=144641&&_l!=144644&&_l!=144645&&_l!=144646&&_l!=144647&&_l!=144650&&_l!=144651&&_l!=144654&&_l!=144658){_l=Kl(6,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Qa(),Jl(6,t,-1);continue}catch(a){Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(6,t,-2);break}}}if(_l!=-1&&_l!=53&&_l!=16134&&_l!=27141&&_l!=27142&&_l!=27144&&_l!=27145&&_l!=27146&&_l!=27147&&_l!=27180&&_l!=27181&&_l!=27182&&_l!=27206&&_l!=27208&&_l!=27209&&_l!=27210&&_l!=27211&&_l!=27213&&_l!=27214&&_l!=27215&&_l!=27216&&_l!=27217&&_l!=27218&&_l!=27219&&_l!=27220&&_l!=27221&&_l!=27222&&_l!=27224&&_l!=27225&&_l!=27226&&_l!=27227&&_l!=27229&&_l!=27230&&_l!=27232&&_l!=27233&&_l!=27234&&_l!=27237&&_l!=27238&&_l!=27239&&_l!=27240&&_l!=27241&&_l!=27242&&_l!=27244&&_l!=27245&&_l!=27246&&_l!=27247&&_l!=27248&&_l!=27249&&_l!=27254&&_l!=27255&&_l!=27256&&_l!=27257&&_l!=27258&&_l!=27259&&_l!=27260&&_l!=27261&&_l!=27262&&_l!=27264&&_l!=27265&&_l!=27267&&_l!=27268&&_l!=27269&&_l!=27270&&_l!=27271&&_l!=27272&&_l!=27273&&_l!=27277&&_l!=27281&&_l!=27282&&_l!=27284&&_l!=27286&&_l!=27287&&_l!=27288&&_l!=27289&&_l!=27290&&_l!=27291&&_l!=27295&&_l!=27296&&_l!=27297&&_l!=27298&&_l!=27299&&_l!=27300&&_l!=27301&&_l!=27302&&_l!=27303&&_l!=27306&&_l!=27307&&_l!=27308&&_l!=27310&&_l!=27312&&_l!=27314&&_l!=27316&&_l!=27317&&_l!=27318&&_l!=27320&&_l!=27321&&_l!=27322&&_l!=27327&&_l!=27328&&_l!=27330&&_l!=27334&&_l!=27335&&_l!=27336&&_l!=27337&&_l!=27338&&_l!=27339&&_l!=27342&&_l!=27348&&_l!=27349&&_l!=27352&&_l!=27354&&_l!=27355&&_l!=27356&&_l!=27357&&_l!=27358&&_l!=27360&&_l!=27361&&_l!=27362&&_l!=27363&&_l!=27364&&_l!=27365&&_l!=27370&&_l!=27371&&_l!=27372&&_l!=27373&&_l!=27376&&_l!=27378&&_l!=27379&&_l!=27380&&_l!=27384&&_l!=27385&&_l!=27386&&_l!=27387&&_l!=27388&&_l!=27389&&_l!=27390&&_l!=27392&&_l!=27393&&_l!=27396&&_l!=27397&&_l!=27398&&_l!=27399&&_l!=27402&&_l!=27403&&_l!=27406&&_l!=27410&&_l!=90198&&_l!=90214&&_l!=113284)break;Qa()}}function Xa(){Vl.startNonterminal("StatementsAndExpr",Pl),za(),Nl(),G(),Vl.endNonterminal("StatementsAndExpr",Pl)}function Va(){Wa(),Y()}function $a(){Vl.startNonterminal("StatementsAndOptionalExpr",Pl),za(),Hl!=25&&Hl!=282&&(Nl(),G()),Vl.endNonterminal("StatementsAndOptionalExpr",Pl)}function Ja(){Wa(),Hl!=25&&Hl!=282&&Y()}function Ka(){Vl.startNonterminal("Statement",Pl);switch(Hl){case 132:Ll(189);break;case 137:Ll(196);break;case 174:Ll(193);break;case 250:Ll(190);break;case 262:Ll(187);break;case 276:Ll(277);break;case 31:case 32:Ll(255);break;case 86:case 102:Ll(188);break;case 152:case 243:case 253:case 267:Ll(185);break;default:_l=Hl}if(_l==2836||_l==3103||_l==3104||_l==3348||_l==4372||_l==4884||_l==5396||_l==5908||_l==16148||_l==16660||_l==17675||_l==17684||_l==18196||_l==20756||_l==21780||_l==22804||_l==23316||_l==23828||_l==24340||_l==27412||_l==27924||_l==28436||_l==30484||_l==34068||_l==35092||_l==35871||_l==35872||_l==36116||_l==36895||_l==36896||_l==37140||_l==37407||_l==37408||_l==37652||_l==37919||_l==37920||_l==38164||_l==38431||_l==38432||_l==38676||_l==39455||_l==39456||_l==39700||_l==39967||_l==39968||_l==40212||_l==40479||_l==40480||_l==40724||_l==40991||_l==40992||_l==41236||_l==41503||_l==41504||_l==41748||_l==42015||_l==42016||_l==42260||_l==42527||_l==42528||_l==42772||_l==43039||_l==43040||_l==43284||_l==43551||_l==43552||_l==43796||_l==44063||_l==44064||_l==44308||_l==45087||_l==45088||_l==45332||_l==45599||_l==45600||_l==45844||_l==46111||_l==46112||_l==46356||_l==46623||_l==46624||_l==46868||_l==47647||_l==47648||_l==47892||_l==48159||_l==48160||_l==48404||_l==49183||_l==49184||_l==49428||_l==49695||_l==49696||_l==49940||_l==50207||_l==50208||_l==50452||_l==51743||_l==51744||_l==51988||_l==52255||_l==52256||_l==52500||_l==52767||_l==52768||_l==53012||_l==53279||_l==53280||_l==53524||_l==53791||_l==53792||_l==54036||_l==54303||_l==54304||_l==54548||_l==55327||_l==55328||_l==55572||_l==55839||_l==55840||_l==56084||_l==56351||_l==56352||_l==56596||_l==56863||_l==56864||_l==57108||_l==57375||_l==57376||_l==57620||_l==57887||_l==57888||_l==58132||_l==60447||_l==60448||_l==60692||_l==60959||_l==60960||_l==61204||_l==61471||_l==61472||_l==61716||_l==61983||_l==61984||_l==62228||_l==62495||_l==62496||_l==62740||_l==63007||_l==63008||_l==63252||_l==63519||_l==63520||_l==63764||_l==64031||_l==64032||_l==64276||_l==64543||_l==64544||_l==64788||_l==65567||_l==65568||_l==65812||_l==66079||_l==66080||_l==66324||_l==67103||_l==67104||_l==67348||_l==67615||_l==67616||_l==67860||_l==68127||_l==68128||_l==68372||_l==68639||_l==68640||_l==68884||_l==69151||_l==69152||_l==69396||_l==69663||_l==69664||_l==69908||_l==70175||_l==70176||_l==70420||_l==72223||_l==72224||_l==72468||_l==74271||_l==74272||_l==74516||_l==74783||_l==74784||_l==75028||_l==75807||_l==75808||_l==76052||_l==76831||_l==76832||_l==77076||_l==77343||_l==77344||_l==77588||_l==77855||_l==77856||_l==78100||_l==78367||_l==78368||_l==78612||_l==78879||_l==78880||_l==79124||_l==79391||_l==79392||_l==79636||_l==81439||_l==81440||_l==81684||_l==81951||_l==81952||_l==82196||_l==82463||_l==82464||_l==82708||_l==82975||_l==82976||_l==83220||_l==83487||_l==83488||_l==83732||_l==83999||_l==84e3||_l==84244||_l==84511||_l==84512||_l==84756||_l==85023||_l==85024||_l==85268||_l==85535||_l==85536||_l==85780||_l==87071||_l==87072||_l==87316||_l==87583||_l==87584||_l==87828||_l==88095||_l==88096||_l==88340||_l==89119||_l==89120||_l==89364||_l==90143||_l==90144||_l==90388||_l==91167||_l==91168||_l==91412||_l==92191||_l==92192||_l==92436||_l==92703||_l==92704||_l==92948||_l==93215||_l==93216||_l==93460||_l==94239||_l==94240||_l==94484||_l==94751||_l==94752||_l==94996||_l==95263||_l==95264||_l==95508||_l==97823||_l==97824||_l==98068||_l==98335||_l==98336||_l==98580||_l==99359||_l==99360||_l==99604||_l==101407||_l==101408||_l==101652||_l==101919||_l==101920||_l==102164||_l==102431||_l==102432||_l==102676||_l==102943||_l==102944||_l==103188||_l==103455||_l==103456||_l==103700||_l==103967||_l==103968||_l==104212||_l==105503||_l==105504||_l==105748||_l==108575||_l==108576||_l==108820||_l==109087||_l==109088||_l==109332||_l==110623||_l==110624||_l==110868||_l==111647||_l==111648||_l==111892||_l==112159||_l==112160||_l==112404||_l==112671||_l==112672||_l==112916||_l==113183||_l==113184||_l==113428||_l==113695||_l==113696||_l==113940||_l==114719||_l==114720||_l==114964||_l==115231||_l==115232||_l==115476||_l==115743||_l==115744||_l==115988||_l==116255||_l==116256||_l==116500||_l==116767||_l==116768||_l==117012||_l==117279||_l==117280||_l==117524||_l==119839||_l==119840||_l==120084||_l==120351||_l==120352||_l==120596||_l==120863||_l==120864||_l==121108||_l==121375||_l==121376||_l==121620||_l==122911||_l==122912||_l==123156||_l==123935||_l==123936||_l==124180||_l==124447||_l==124448||_l==124692||_l==124959||_l==124960||_l==125204||_l==127007||_l==127008||_l==127252||_l==127519||_l==127520||_l==127764||_l==128031||_l==128032||_l==128276||_l==128543||_l==128544||_l==128788||_l==129055||_l==129056||_l==129300||_l==129567||_l==129568||_l==129812||_l==130079||_l==130080||_l==130324||_l==131103||_l==131104||_l==131348||_l==131615||_l==131616||_l==131860||_l==133151||_l==133152||_l==133396||_l==133663||_l==133664||_l==133908||_l==134175||_l==134176||_l==134420||_l==134687||_l==134688||_l==134932||_l==136223||_l==136224||_l==136468||_l==136735||_l==136736||_l==136980||_l==138271||_l==138272||_l==138516||_l==140319||_l==140320||_l==140564||_l==141588||_l==142612||_l==144660){_l=Kl(7,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Ya(),_l=-1}catch(a){try{Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),ef(),_l=-2}catch(f){try{Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),nf(),_l=-3}catch(l){try{Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),kf(),_l=-12}catch(c){_l=-13}}}}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(7,Pl,_l)}}switch(_l){case-2:Za();break;case-3:tf();break;case 90198:rf();break;case 90214:of();break;case 113284:af();break;case 16009:case 16046:case 116910:case 119945:case 128649:lf();break;case 17560:df();break;case 17651:mf();break;case 141562:wf();break;case 17661:Sf();break;case-12:case 16134:Cf();break;case-13:Lf();break;case 53:Of();break;default:Ga()}Vl.endNonterminal("Statement",Pl)}function Qa(){switch(Hl){case 132:Ll(189);break;case 137:Ll(196);break;case 174:Ll(193);break;case 250:Ll(190);break;case 262:Ll(187);break;case 276:Ll(277);break;case 31:case 32:Ll(255);break;case 86:case 102:Ll(188);break;case 152:case 243:case 253:case 267:Ll(185);break;default:_l=Hl}if(_l==2836||_l==3103||_l==3104||_l==3348||_l==4372||_l==4884||_l==5396||_l==5908||_l==16148||_l==16660||_l==17675||_l==17684||_l==18196||_l==20756||_l==21780||_l==22804||_l==23316||_l==23828||_l==24340||_l==27412||_l==27924||_l==28436||_l==30484||_l==34068||_l==35092||_l==35871||_l==35872||_l==36116||_l==36895||_l==36896||_l==37140||_l==37407||_l==37408||_l==37652||_l==37919||_l==37920||_l==38164||_l==38431||_l==38432||_l==38676||_l==39455||_l==39456||_l==39700||_l==39967||_l==39968||_l==40212||_l==40479||_l==40480||_l==40724||_l==40991||_l==40992||_l==41236||_l==41503||_l==41504||_l==41748||_l==42015||_l==42016||_l==42260||_l==42527||_l==42528||_l==42772||_l==43039||_l==43040||_l==43284||_l==43551||_l==43552||_l==43796||_l==44063||_l==44064||_l==44308||_l==45087||_l==45088||_l==45332||_l==45599||_l==45600||_l==45844||_l==46111||_l==46112||_l==46356||_l==46623||_l==46624||_l==46868||_l==47647||_l==47648||_l==47892||_l==48159||_l==48160||_l==48404||_l==49183||_l==49184||_l==49428||_l==49695||_l==49696||_l==49940||_l==50207||_l==50208||_l==50452||_l==51743||_l==51744||_l==51988||_l==52255||_l==52256||_l==52500||_l==52767||_l==52768||_l==53012||_l==53279||_l==53280||_l==53524||_l==53791||_l==53792||_l==54036||_l==54303||_l==54304||_l==54548||_l==55327||_l==55328||_l==55572||_l==55839||_l==55840||_l==56084||_l==56351||_l==56352||_l==56596||_l==56863||_l==56864||_l==57108||_l==57375||_l==57376||_l==57620||_l==57887||_l==57888||_l==58132||_l==60447||_l==60448||_l==60692||_l==60959||_l==60960||_l==61204||_l==61471||_l==61472||_l==61716||_l==61983||_l==61984||_l==62228||_l==62495||_l==62496||_l==62740||_l==63007||_l==63008||_l==63252||_l==63519||_l==63520||_l==63764||_l==64031||_l==64032||_l==64276||_l==64543||_l==64544||_l==64788||_l==65567||_l==65568||_l==65812||_l==66079||_l==66080||_l==66324||_l==67103||_l==67104||_l==67348||_l==67615||_l==67616||_l==67860||_l==68127||_l==68128||_l==68372||_l==68639||_l==68640||_l==68884||_l==69151||_l==69152||_l==69396||_l==69663||_l==69664||_l==69908||_l==70175||_l==70176||_l==70420||_l==72223||_l==72224||_l==72468||_l==74271||_l==74272||_l==74516||_l==74783||_l==74784||_l==75028||_l==75807||_l==75808||_l==76052||_l==76831||_l==76832||_l==77076||_l==77343||_l==77344||_l==77588||_l==77855||_l==77856||_l==78100||_l==78367||_l==78368||_l==78612||_l==78879||_l==78880||_l==79124||_l==79391||_l==79392||_l==79636||_l==81439||_l==81440||_l==81684||_l==81951||_l==81952||_l==82196||_l==82463||_l==82464||_l==82708||_l==82975||_l==82976||_l==83220||_l==83487||_l==83488||_l==83732||_l==83999||_l==84e3||_l==84244||_l==84511||_l==84512||_l==84756||_l==85023||_l==85024||_l==85268||_l==85535||_l==85536||_l==85780||_l==87071||_l==87072||_l==87316||_l==87583||_l==87584||_l==87828||_l==88095||_l==88096||_l==88340||_l==89119||_l==89120||_l==89364||_l==90143||_l==90144||_l==90388||_l==91167||_l==91168||_l==91412||_l==92191||_l==92192||_l==92436||_l==92703||_l==92704||_l==92948||_l==93215||_l==93216||_l==93460||_l==94239||_l==94240||_l==94484||_l==94751||_l==94752||_l==94996||_l==95263||_l==95264||_l==95508||_l==97823||_l==97824||_l==98068||_l==98335||_l==98336||_l==98580||_l==99359||_l==99360||_l==99604||_l==101407||_l==101408||_l==101652||_l==101919||_l==101920||_l==102164||_l==102431||_l==102432||_l==102676||_l==102943||_l==102944||_l==103188||_l==103455||_l==103456||_l==103700||_l==103967||_l==103968||_l==104212||_l==105503||_l==105504||_l==105748||_l==108575||_l==108576||_l==108820||_l==109087||_l==109088||_l==109332||_l==110623||_l==110624||_l==110868||_l==111647||_l==111648||_l==111892||_l==112159||_l==112160||_l==112404||_l==112671||_l==112672||_l==112916||_l==113183||_l==113184||_l==113428||_l==113695||_l==113696||_l==113940||_l==114719||_l==114720||_l==114964||_l==115231||_l==115232||_l==115476||_l==115743||_l==115744||_l==115988||_l==116255||_l==116256||_l==116500||_l==116767||_l==116768||_l==117012||_l==117279||_l==117280||_l==117524||_l==119839||_l==119840||_l==120084||_l==120351||_l==120352||_l==120596||_l==120863||_l==120864||_l==121108||_l==121375||_l==121376||_l==121620||_l==122911||_l==122912||_l==123156||_l==123935||_l==123936||_l==124180||_l==124447||_l==124448||_l==124692||_l==124959||_l==124960||_l==125204||_l==127007||_l==127008||_l==127252||_l==127519||_l==127520||_l==127764||_l==128031||_l==128032||_l==128276||_l==128543||_l==128544||_l==128788||_l==129055||_l==129056||_l==129300||_l==129567||_l==129568||_l==129812||_l==130079||_l==130080||_l==130324||_l==131103||_l==131104||_l==131348||_l==131615||_l==131616||_l==131860||_l==133151||_l==133152||_l==133396||_l==133663||_l==133664||_l==133908||_l==134175||_l==134176||_l==134420||_l==134687||_l==134688||_l==134932||_l==136223||_l==136224||_l==136468||_l==136735||_l==136736||_l==136980||_l==138271||_l==138272||_l==138516||_l==140319||_l==140320||_l==140564||_l==141588||_l==142612||_l==144660){_l=Kl(7,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Ya(),Jl(7,t,-1),_l=-15}catch(a){try{Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),ef(),Jl(7,t,-2),_l=-15}catch(f){try{Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),nf(),Jl(7,t,-3),_l=-15}catch(l){try{Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),kf(),Jl(7,t,-12),_l=-15}catch(c){_l=-13,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(7,t,-13)}}}}}}switch(_l){case-2:ef();break;case-3:nf();break;case 90198:sf();break;case 90214:uf();break;case 113284:ff();break;case 16009:case 16046:case 116910:case 119945:case 128649:cf();break;case 17560:vf();break;case 17651:gf();break;case 141562:Ef();break;case 17661:xf();break;case-12:case 16134:kf();break;case-13:Af();break;case 53:Mf();break;case-15:break;default:Ya()}}function Ga(){Vl.startNonterminal("ApplyStatement",Pl),Pf(),Sl(53),Vl.endNonterminal("ApplyStatement",Pl)}function Ya(){Hf(),xl(53)}function Za(){Vl.startNonterminal("AssignStatement",Pl),Sl(31),kl(255),Nl(),hi(),kl(27),Sl(52),kl(267),Nl(),_f(),Sl(53),Vl.endNonterminal("AssignStatement",Pl)}function ef(){xl(31),kl(255),pi(),kl(27),xl(52),kl(267),Df(),xl(53)}function tf(){Vl.startNonterminal("BlockStatement",Pl),Sl(276),kl(277),Nl(),za(),Sl(282),Vl.endNonterminal("BlockStatement",Pl)}function nf(){xl(276),kl(277),Wa(),xl(282)}function rf(){Vl.startNonterminal("BreakStatement",Pl),Sl(86),kl(59),Sl(176),kl(28),Sl(53),Vl.endNonterminal("BreakStatement",Pl)}function sf(){xl(86),kl(59),xl(176),kl(28),xl(53)}function of(){Vl.startNonterminal("ContinueStatement",Pl),Sl(102),kl(59),Sl(176),kl(28),Sl(53),Vl.endNonterminal("ContinueStatement",Pl)}function uf(){xl(102),kl(59),xl(176),kl(28),xl(53)}function af(){Vl.startNonterminal("ExitStatement",Pl),Sl(132),kl(71),Sl(221),kl(267),Nl(),_f(),Sl(53),Vl.endNonterminal("ExitStatement",Pl)}function ff(){xl(132),kl(71),xl(221),kl(267),Df(),xl(53)}function lf(){Vl.startNonterminal("FLWORStatement",Pl),tt();for(;;){kl(173);if(Hl==220)break;Nl(),rt()}Nl(),hf(),Vl.endNonterminal("FLWORStatement",Pl)}function cf(){nt();for(;;){kl(173);if(Hl==220)break;it()}pf()}function hf(){Vl.startNonterminal("ReturnStatement",Pl),Sl(220),kl(270),Nl(),Ka(),Vl.endNonterminal("ReturnStatement",Pl)}function pf(){xl(220),kl(270),Qa()}function df(){Vl.startNonterminal("IfStatement",Pl),Sl(152),kl(22),Sl(34),kl(267),Nl(),G(),Sl(37),kl(77),Sl(245),kl(270),Nl(),Ka(),kl(48),Sl(122),kl(270),Nl(),Ka(),Vl.endNonterminal("IfStatement",Pl)}function vf(){xl(152),kl(22),xl(34),kl(267),Y(),xl(37),kl(77),xl(245),kl(270),Qa(),kl(48),xl(122),kl(270),Qa()}function mf(){Vl.startNonterminal("SwitchStatement",Pl),Sl(243),kl(22),Sl(34),kl(267),Nl(),G(),Sl(37);for(;;){kl(35),Nl(),yf(),kl(113);if(Hl!=88)break}Sl(109),kl(70),Sl(220),kl(270),Nl(),Ka(),Vl.endNonterminal("SwitchStatement",Pl)}function gf(){xl(243),kl(22),xl(34),kl(267),Y(),xl(37);for(;;){kl(35),bf(),kl(113);if(Hl!=88)break}xl(109),kl(70),xl(220),kl(270),Qa()}function yf(){Vl.startNonterminal("SwitchCaseStatement",Pl);for(;;){Sl(88),kl(267),Nl(),dn();if(Hl!=88)break}Sl(220),kl(270),Nl(),Ka(),Vl.endNonterminal("SwitchCaseStatement",Pl)}function bf(){for(;;){xl(88),kl(267),vn();if(Hl!=88)break}xl(220),kl(270),Qa()}function wf(){Vl.startNonterminal("TryCatchStatement",Pl),Sl(250),kl(87),Nl(),tf();for(;;){kl(36),Sl(91),kl(257),Nl(),_n(),Nl(),tf(),kl(278);switch(Hl){case 91:Ll(279);break;default:_l=Hl}if(_l==38491||_l==45659||_l==46171||_l==60507||_l==65627||_l==67163||_l==74843||_l==76891||_l==77403||_l==82011||_l==83035||_l==84059||_l==88155||_l==91227||_l==92251||_l==95323||_l==102491||_l==127067||_l==127579||_l==130139){_l=Kl(8,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{kl(36),xl(91),kl(257),Dn(),nf(),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(8,Pl,_l)}}if(_l!=-1&&_l!=2651&&_l!=3163&&_l!=35931&&_l!=36955&&_l!=37467&&_l!=37979&&_l!=39515&&_l!=40027&&_l!=40539&&_l!=41051&&_l!=41563&&_l!=42075&&_l!=42587&&_l!=43099&&_l!=43611&&_l!=44123&&_l!=45147&&_l!=46683&&_l!=47707&&_l!=48219&&_l!=49243&&_l!=49755&&_l!=50267&&_l!=51803&&_l!=52315&&_l!=52827&&_l!=53339&&_l!=53851&&_l!=54363&&_l!=55387&&_l!=55899&&_l!=56411&&_l!=56923&&_l!=57435&&_l!=57947&&_l!=61019&&_l!=61531&&_l!=62043&&_l!=62555&&_l!=63067&&_l!=63579&&_l!=64091&&_l!=64603&&_l!=66139&&_l!=67675&&_l!=68187&&_l!=68699&&_l!=69211&&_l!=69723&&_l!=70235&&_l!=72283&&_l!=74331&&_l!=75867&&_l!=77915&&_l!=78427&&_l!=78939&&_l!=79451&&_l!=81499&&_l!=82523&&_l!=83547&&_l!=84571&&_l!=85083&&_l!=85595&&_l!=87131&&_l!=87643&&_l!=89179&&_l!=90203&&_l!=92763&&_l!=93275&&_l!=94299&&_l!=94811&&_l!=97883&&_l!=98395&&_l!=99419&&_l!=101467&&_l!=101979&&_l!=103003&&_l!=103515&&_l!=104027&&_l!=105563&&_l!=108635&&_l!=109147&&_l!=110683&&_l!=111707&&_l!=112219&&_l!=112731&&_l!=113243&&_l!=113755&&_l!=114779&&_l!=115291&&_l!=115803&&_l!=116315&&_l!=116827&&_l!=117339&&_l!=119899&&_l!=120411&&_l!=120923&&_l!=121435&&_l!=122971&&_l!=123995&&_l!=124507&&_l!=125019&&_l!=128091&&_l!=128603&&_l!=129115&&_l!=129627&&_l!=131163&&_l!=131675&&_l!=133211&&_l!=133723&&_l!=134235&&_l!=134747&&_l!=136283&&_l!=136795&&_l!=138331&&_l!=140379)break}Vl.endNonterminal("TryCatchStatement",Pl)}function Ef(){xl(250),kl(87),nf(),kl(36),xl(91),kl(257),Dn(),nf();for(;;){kl(278);switch(Hl){case 91:Ll(279);break;default:_l=Hl}if(_l==38491||_l==45659||_l==46171||_l==60507||_l==65627||_l==67163||_l==74843||_l==76891||_l==77403||_l==82011||_l==83035||_l==84059||_l==88155||_l==91227||_l==92251||_l==95323||_l==102491||_l==127067||_l==127579||_l==130139){_l=Kl(8,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{kl(36),xl(91),kl(257),Dn(),nf(),Jl(8,t,-1);continue}catch(a){Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(8,t,-2);break}}}if(_l!=-1&&_l!=2651&&_l!=3163&&_l!=35931&&_l!=36955&&_l!=37467&&_l!=37979&&_l!=39515&&_l!=40027&&_l!=40539&&_l!=41051&&_l!=41563&&_l!=42075&&_l!=42587&&_l!=43099&&_l!=43611&&_l!=44123&&_l!=45147&&_l!=46683&&_l!=47707&&_l!=48219&&_l!=49243&&_l!=49755&&_l!=50267&&_l!=51803&&_l!=52315&&_l!=52827&&_l!=53339&&_l!=53851&&_l!=54363&&_l!=55387&&_l!=55899&&_l!=56411&&_l!=56923&&_l!=57435&&_l!=57947&&_l!=61019&&_l!=61531&&_l!=62043&&_l!=62555&&_l!=63067&&_l!=63579&&_l!=64091&&_l!=64603&&_l!=66139&&_l!=67675&&_l!=68187&&_l!=68699&&_l!=69211&&_l!=69723&&_l!=70235&&_l!=72283&&_l!=74331&&_l!=75867&&_l!=77915&&_l!=78427&&_l!=78939&&_l!=79451&&_l!=81499&&_l!=82523&&_l!=83547&&_l!=84571&&_l!=85083&&_l!=85595&&_l!=87131&&_l!=87643&&_l!=89179&&_l!=90203&&_l!=92763&&_l!=93275&&_l!=94299&&_l!=94811&&_l!=97883&&_l!=98395&&_l!=99419&&_l!=101467&&_l!=101979&&_l!=103003&&_l!=103515&&_l!=104027&&_l!=105563&&_l!=108635&&_l!=109147&&_l!=110683&&_l!=111707&&_l!=112219&&_l!=112731&&_l!=113243&&_l!=113755&&_l!=114779&&_l!=115291&&_l!=115803&&_l!=116315&&_l!=116827&&_l!=117339&&_l!=119899&&_l!=120411&&_l!=120923&&_l!=121435&&_l!=122971&&_l!=123995&&_l!=124507&&_l!=125019&&_l!=128091&&_l!=128603&&_l!=129115&&_l!=129627&&_l!=131163&&_l!=131675&&_l!=133211&&_l!=133723&&_l!=134235&&_l!=134747&&_l!=136283&&_l!=136795&&_l!=138331&&_l!=140379)break;kl(36),xl(91),kl(257),Dn(),nf()}}function Sf(){Vl.startNonterminal("TypeswitchStatement",Pl),Sl(253),kl(22),Sl(34),kl(267),Nl(),G(),Sl(37);for(;;){kl(35),Nl(),Tf(),kl(113);if(Hl!=88)break}Sl(109),kl(95),Hl==31&&(Sl(31),kl(255),Nl(),hi()),kl(70),Sl(220),kl(270),Nl(),Ka(),Vl.endNonterminal("TypeswitchStatement",Pl)}function xf(){xl(253),kl(22),xl(34),kl(267),Y(),xl(37);for(;;){kl(35),Nf(),kl(113);if(Hl!=88)break}xl(109),kl(95),Hl==31&&(xl(31),kl(255),pi()),kl(70),xl(220),kl(270),Qa()}function Tf(){Vl.startNonterminal("CaseStatement",Pl),Sl(88),kl(262),Hl==31&&(Sl(31),kl(255),Nl(),hi(),kl(30),Sl(79)),kl(260),Nl(),ms(),kl(70),Sl(220),kl(270),Nl(),Ka(),Vl.endNonterminal("CaseStatement",Pl)}function Nf(){xl(88),kl(262),Hl==31&&(xl(31),kl(255),pi(),kl(30),xl(79)),kl(260),gs(),kl(70),xl(220),kl(270),Qa()}function Cf(){Vl.startNonterminal("VarDeclStatement",Pl);for(;;){kl(98);if(Hl!=32)break;Nl(),B()}Sl(262),kl(21),Sl(31),kl(255),Nl(),hi(),kl(157),Hl==79&&(Nl(),ds()),kl(145),Hl==52&&(Sl(52),kl(267),Nl(),_f());for(;;){if(Hl!=41)break;Sl(41),kl(21),Sl(31),kl(255),Nl(),hi(),kl(157),Hl==79&&(Nl(),ds()),kl(145),Hl==52&&(Sl(52),kl(267),Nl(),_f())}Sl(53),Vl.endNonterminal("VarDeclStatement",Pl)}function kf(){for(;;){kl(98);if(Hl!=32)break;j()}xl(262),kl(21),xl(31),kl(255),pi(),kl(157),Hl==79&&vs(),kl(145),Hl==52&&(xl(52),kl(267),Df());for(;;){if(Hl!=41)break;xl(41),kl(21),xl(31),kl(255),pi(),kl(157),Hl==79&&vs(),kl(145),Hl==52&&(xl(52),kl(267),Df())}xl(53)}function Lf(){Vl.startNonterminal("WhileStatement",Pl),Sl(267),kl(22),Sl(34),kl(267),Nl(),G(),Sl(37),kl(270),Nl(),Ka(),Vl.endNonterminal("WhileStatement",Pl)}function Af(){xl(267),kl(22),xl(34),kl(267),Y(),xl(37),kl(270),Qa()}function Of(){Vl.startNonterminal("VoidStatement",Pl),Sl(53),Vl.endNonterminal("VoidStatement",Pl)}function Mf(){xl(53)}function _f(){Vl.startNonterminal("ExprSingle",Pl);switch(Hl){case 137:Ll(236);break;case 174:Ll(233);break;case 250:Ll(232);break;case 152:case 243:case 253:Ll(229);break;default:_l=Hl}switch(_l){case 16009:case 16046:case 116910:case 119945:case 128649:Z();break;case 17560:Sn();break;case 17651:ln();break;case 141562:Tn();break;case 17661:mn();break;default:Pf()}Vl.endNonterminal("ExprSingle",Pl)}function Df(){switch(Hl){case 137:Ll(236);break;case 174:Ll(233);break;case 250:Ll(232);break;case 152:case 243:case 253:Ll(229);break;default:_l=Hl}switch(_l){case 16009:case 16046:case 116910:case 119945:case 128649:et();break;case 17560:xn();break;case 17651:cn();break;case 141562:Nn();break;case 17661:gn();break;default:Hf()}}function Pf(){Vl.startNonterminal("ExprSimple",Pl);switch(Hl){case 77:Ll(231);break;case 218:Ll(234);break;case 219:Ll(235);break;case 110:case 159:Ll(237);break;case 103:case 129:case 235:Ll(230);break;default:_l=Hl}if(_l==133851){_l=Kl(9,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Ho(),_l=-6}catch(a){_l=-11}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(9,Pl,_l)}}switch(_l){case 16001:case 16107:on();break;case 97951:case 98463:Oo();break;case 97902:case 98414:_o();break;case 98010:Bo();break;case-6:case 98011:Po();break;case 15975:Wo();break;case 85102:Bf();break;case 85151:Ff();break;case 85210:qf();break;case-11:Uf();break;case 85069:Wf();break;default:Pn()}Vl.endNonterminal("ExprSimple",Pl)}function Hf(){switch(Hl){case 77:Ll(231);break;case 218:Ll(234);break;case 219:Ll(235);break;case 110:case 159:Ll(237);break;case 103:case 129:case 235:Ll(230);break;default:_l=Hl}if(_l==133851){_l=Kl(9,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Ho(),Jl(9,t,-6),_l=-13}catch(a){_l=-11,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(9,t,-11)}}}switch(_l){case 16001:case 16107:un();break;case 97951:case 98463:Mo();break;case 97902:case 98414:Do();break;case 98010:jo();break;case-6:case 98011:Ho();break;case 15975:Xo();break;case 85102:jf();break;case 85151:If();break;case 85210:Rf();break;case-11:zf();break;case 85069:Xf();break;case-13:break;default:Hn()}}function Bf(){Vl.startNonterminal("JSONDeleteExpr",Pl),Sl(110),kl(56),Sl(166),kl(264),Nl(),Yr(),Vl.endNonterminal("JSONDeleteExpr",Pl)}function jf(){xl(110),kl(56),xl(166),kl(264),Zr()}function Ff(){Vl.startNonterminal("JSONInsertExpr",Pl);switch(Hl){case 159:Ll(56);break;default:_l=Hl}_l=Kl(10,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{xl(159),kl(56),xl(166),kl(267),Df(),xl(163),kl(267),Df();switch(Hl){case 81:Ll(69);break;default:_l=Hl}if(_l==108113){_l=Kl(11,Pl);if(_l==0){var a=Dl,f=Pl,l=Hl,c=Bl,h=jl,p=Fl,d=Il,v=ql;try{xl(81),kl(69),xl(211),kl(267),Df(),Jl(11,f,-1)}catch(m){Dl=a,Pl=f,Hl=l,Hl==0?Zl=f:(Bl=c,jl=h,Fl=p,Fl==0?Zl=h:(Il=d,ql=v,Zl=v)),Jl(11,f,-2)}_l=-2}}_l==-1&&(xl(81),kl(69),xl(211),kl(267),Df()),_l=-1}catch(g){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(10,Pl,_l)}switch(_l){case-1:Sl(159),kl(56),Sl(166),kl(267),Nl(),_f(),Sl(163),kl(267),Nl(),_f();switch(Hl){case 81:Ll(69);break;default:_l=Hl}if(_l==108113){_l=Kl(11,Pl);if(_l==0){var a=Dl,f=Pl,l=Hl,c=Bl,h=jl,p=Fl,d=Il,v=ql;try{xl(81),kl(69),xl(211),kl(267),Df(),_l=-1}catch(m){_l=-2}Dl=a,Pl=f,Hl=l,Hl==0?Zl=f:(Bl=c,jl=h,Fl=p,Fl==0?Zl=h:(Il=d,ql=v,Zl=v)),Jl(11,Pl,_l)}}_l==-1&&(Sl(81),kl(69),Sl(211),kl(267),Nl(),_f());break;default:Sl(159),kl(56),Sl(166),kl(267),Nl(),hl(),Sl(163),kl(267),Nl(),_f()}Vl.endNonterminal("JSONInsertExpr",Pl)}function If(){switch(Hl){case 159:Ll(56);break;default:_l=Hl}_l=Kl(10,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{xl(159),kl(56),xl(166),kl(267),Df(),xl(163),kl(267),Df();switch(Hl){case 81:Ll(69);break;default:_l=Hl}if(_l==108113){_l=Kl(11,Pl);if(_l==0){var a=Dl,f=Pl,l=Hl,c=Bl,h=jl,p=Fl,d=Il,v=ql;try{xl(81),kl(69),xl(211),kl(267),Df(),Jl(11,f,-1)}catch(m){Dl=a,Pl=f,Hl=l,Hl==0?Zl=f:(Bl=c,jl=h,Fl=p,Fl==0?Zl=h:(Il=d,ql=v,Zl=v)),Jl(11,f,-2)}_l=-2}}_l==-1&&(xl(81),kl(69),xl(211),kl(267),Df()),Jl(10,t,-1),_l=-3}catch(g){_l=-2,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(10,t,-2)}}switch(_l){case-1:xl(159),kl(56),xl(166),kl(267),Df(),xl(163),kl(267),Df();switch(Hl){case 81:Ll(69);break;default:_l=Hl}if(_l==108113){_l=Kl(11,Pl);if(_l==0){var a=Dl,f=Pl,l=Hl,c=Bl,h=jl,p=Fl,d=Il,v=ql;try{xl(81),kl(69),xl(211),kl(267),Df(),Jl(11,f,-1)}catch(m){Dl=a,Pl=f,Hl=l,Hl==0?Zl=f:(Bl=c,jl=h,Fl=p,Fl==0?Zl=h:(Il=d,ql=v,Zl=v)),Jl(11,f,-2)}_l=-2}}_l==-1&&(xl(81),kl(69),xl(211),kl(267),Df());break;case-3:break;default:xl(159),kl(56),xl(166),kl(267),pl(),xl(163),kl(267),Df()}}function qf(){Vl.startNonterminal("JSONRenameExpr",Pl),Sl(218),kl(56),Sl(166),kl(264),Nl(),Yr(),Sl(79),kl(267),Nl(),_f(),Vl.endNonterminal("JSONRenameExpr",Pl)}function Rf(){xl(218),kl(56),xl(166),kl(264),Zr(),xl(79),kl(267),Df()}function Uf(){Vl.startNonterminal("JSONReplaceExpr",Pl),Sl(219),kl(82),Sl(261),kl(64),Sl(196),kl(56),Sl(166),kl(264),Nl(),Yr(),Sl(270),kl(267),Nl(),_f(),Vl.endNonterminal("JSONReplaceExpr",Pl)}function zf(){xl(219),kl(82),xl(261),kl(64),xl(196),kl(56),xl(166),kl(264),Zr(),xl(270),kl(267),Df()}function Wf(){Vl.startNonterminal("JSONAppendExpr",Pl),Sl(77),kl(56),Sl(166),kl(267),Nl(),_f(),Sl(163),kl(267),Nl(),_f(),Vl.endNonterminal("JSONAppendExpr",Pl)}function Xf(){xl(77),kl(56),xl(166),kl(267),Df(),xl(163),kl(267),Df()}function Vf(){Vl.startNonterminal("CommonContent",Pl);switch(Hl){case 12:Sl(12);break;case 23:Sl(23);break;case 277:Sl(277);break;case 283:Sl(283);break;default:yl()}Vl.endNonterminal("CommonContent",Pl)}function $f(){switch(Hl){case 12:xl(12);break;case 23:xl(23);break;case 277:xl(277);break;case 283:xl(283);break;default:bl()}}function Jf(){Vl.startNonterminal("ContentExpr",Pl),Xa(),Vl.endNonterminal("ContentExpr",Pl)}function Kf(){Va()}function Qf(){Vl.startNonterminal("CompDocConstructor",Pl),Sl(119),kl(87),Nl(),yl(),Vl.endNonterminal("CompDocConstructor",Pl)}function Gf(){xl(119),kl(87),bl()}function Yf(){Vl.startNonterminal("CompAttrConstructor",Pl),Sl(82),kl(258);switch(Hl){case 276:Sl(276),kl(267),Nl(),G(),Sl(282);break;default:Nl(),Ha()}kl(87);switch(Hl){case 276:Ll(277);break;default:_l=Hl}if(_l==144660){_l=Kl(12,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{xl(276),kl(88),xl(282),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(12,Pl,_l)}}switch(_l){case-1:Sl(276),kl(88),Sl(282);break;default:Nl(),yl()}Vl.endNonterminal("CompAttrConstructor",Pl)}function Zf(){xl(82),kl(258);switch(Hl){case 276:xl(276),kl(267),Y(),xl(282);break;default:Ba()}kl(87);switch(Hl){case 276:Ll(277);break;default:_l=Hl}if(_l==144660){_l=Kl(12,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{xl(276),kl(88),xl(282),Jl(12,t,-1),_l=-3}catch(a){_l=-2,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(12,t,-2)}}}switch(_l){case-1:xl(276),kl(88),xl(282);break;case-3:break;default:bl()}}function el(){Vl.startNonterminal("CompPIConstructor",Pl),Sl(216),kl(251);switch(Hl){case 276:Sl(276),kl(267),Nl(),G(),Sl(282);break;default:Nl(),Ia()}kl(87);switch(Hl){case 276:Ll(277);break;default:_l=Hl}if(_l==144660){_l=Kl(13,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{xl(276),kl(88),xl(282),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(13,Pl,_l)}}switch(_l){case-1:Sl(276),kl(88),Sl(282);break;default:Nl(),yl()}Vl.endNonterminal("CompPIConstructor",Pl)}function tl(){xl(216),kl(251);switch(Hl){case 276:xl(276),kl(267),Y(),xl(282);break;default:qa()}kl(87);switch(Hl){case 276:Ll(277);break;default:_l=Hl}if(_l==144660){_l=Kl(13,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{xl(276),kl(88),xl(282),Jl(13,t,-1),_l=-3}catch(a){_l=-2,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(13,t,-2)}}}switch(_l){case-1:xl(276),kl(88),xl(282);break;case-3:break;default:bl()}}function nl(){Vl.startNonterminal("CompCommentConstructor",Pl),Sl(96),kl(87),Nl(),yl(),Vl.endNonterminal("CompCommentConstructor",Pl)}function rl(){xl(96),kl(87),bl()}function il(){Vl.startNonterminal("CompTextConstructor",Pl),Sl(244),kl(87),Nl(),yl(),Vl.endNonterminal("CompTextConstructor",Pl)}function sl(){xl(244),kl(87),bl()}function ol(){Vl.startNonterminal("PrimaryExpr",Pl);switch(Hl){case 184:Ll(256);break;case 216:Ll(254);break;case 276:Ll(277);break;case 82:case 121:Ll(259);break;case 96:case 244:Ll(93);break;case 119:case 202:case 256:Ll(139);break;case 6:case 70:case 72:case 73:case 74:case 75:case 77:case 79:case 80:case 81:case 83:case 84:case 85:case 86:case 88:case 89:case 90:case 91:case 93:case 94:case 97:case 98:case 101:case 102:case 103:case 104:case 105:case 106:case 108:case 109:case 110:case 111:case 112:case 113:case 118:case 122:case 123:case 125:case 126:case 128:case 129:case 131:case 132:case 133:case 134:case 135:case 136:case 137:case 141:case 146:case 148:case 150:case 151:case 153:case 154:case 155:case 159:case 160:case 161:case 162:case 163:case 164:case 166:case 170:case 171:case 172:case 174:case 176:case 178:case 180:case 181:case 182:case 186:case 192:case 194:case 198:case 199:case 200:case 201:case 203:case 206:case 212:case 213:case 218:case 219:case 220:case 221:case 222:case 224:case 225:case 228:case 229:case 234:case 235:case 236:case 237:case 240:case 248:case 249:case 250:case 251:case 252:case 254:case 257:case 260:case 261:case 262:case 263:case 266:case 267:case 270:case 274:Ll(92);break;default:_l=Hl}if(_l==2836||_l==3348||_l==4372||_l==4884||_l==5396||_l==5908||_l==16148||_l==16660||_l==17684||_l==18196||_l==20756||_l==21780||_l==22804||_l==23316||_l==23828||_l==24340||_l==27924||_l==28436||_l==30484||_l==34068||_l==35092||_l==36116||_l==37140||_l==37652||_l==38164||_l==38676||_l==39700||_l==40212||_l==40724||_l==41236||_l==41748||_l==42260||_l==42772||_l==43284||_l==43796||_l==44308||_l==45332||_l==45844||_l==46356||_l==46868||_l==47892||_l==48404||_l==49428||_l==49940||_l==50452||_l==51988||_l==52500||_l==53012||_l==53524||_l==54036||_l==54548||_l==55572||_l==56084||_l==56596||_l==57108||_l==57620||_l==58132||_l==60692||_l==61204||_l==61716||_l==62228||_l==62740||_l==63252||_l==63764||_l==64276||_l==64788||_l==65812||_l==66324||_l==67348||_l==67860||_l==68372||_l==68884||_l==69396||_l==69908||_l==70420||_l==72468||_l==74516||_l==75028||_l==76052||_l==77076||_l==77588||_l==78100||_l==78612||_l==79124||_l==79636||_l==81684||_l==82196||_l==82708||_l==83220||_l==83732||_l==84244||_l==84756||_l==85268||_l==85780||_l==87316||_l==87828||_l==88340||_l==89364||_l==90388||_l==91412||_l==92436||_l==92948||_l==93460||_l==94484||_l==94996||_l==95508||_l==98068||_l==98580||_l==99604||_l==101652||_l==102164||_l==102676||_l==103188||_l==103700||_l==104212||_l==105748||_l==108820||_l==109332||_l==110868||_l==111892||_l==112404||_l==112916||_l==113428||_l==113940||_l==114964||_l==115476||_l==115988||_l==116500||_l==117012||_l==117524||_l==120084||_l==120596||_l==121108||_l==121620||_l==123156||_l==124180||_l==124692||_l==125204||_l==127252||_l==127764||_l==128276||_l==128788||_l==129300||_l==129812||_l==130324||_l==131348||_l==131860||_l==133396||_l==133908||_l==134420||_l==134932||_l==136468||_l==136980||_l==138516||_l==140564||_l==141588||_l==142612||_l==144660){_l=Kl(14,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{bl(),_l=-10}catch(a){_l=-11}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(14,Pl,_l)}}switch(_l){case 8:case 9:case 10:case 11:oi();break;case 31:li();break;case 34:di();break;case 44:mi();break;case 17414:case 17478:case 17480:case 17481:case 17482:case 17483:case 17485:case 17487:case 17488:case 17489:case 17491:case 17492:case 17493:case 17494:case 17496:case 17497:case 17498:case 17499:case 17501:case 17502:case 17505:case 17506:case 17509:case 17510:case 17511:case 17512:case 17513:case 17514:case 17516:case 17517:case 17518:case 17519:case 17520:case 17521:case 17526:case 17527:case 17530:case 17531:case 17533:case 17534:case 17536:case 17537:case 17539:case 17540:case 17541:case 17542:case 17543:case 17544:case 17545:case 17549:case 17554:case 17556:case 17558:case 17559:case 17561:case 17562:case 17563:case 17567:case 17568:case 17569:case 17570:case 17571:case 17572:case 17574:case 17578:case 17579:case 17580:case 17582:case 17584:case 17586:case 17588:case 17589:case 17590:case 17592:case 17594:case 17600:case 17602:case 17606:case 17607:case 17608:case 17609:case 17610:case 17611:case 17614:case 17620:case 17621:case 17626:case 17627:case 17628:case 17629:case 17630:case 17632:case 17633:case 17636:case 17637:case 17642:case 17643:case 17644:case 17645:case 17648:case 17656:case 17657:case 17658:case 17659:case 17660:case 17662:case 17664:case 17665:case 17668:case 17669:case 17670:case 17671:case 17674:case 17675:case 17678:case 17682:Si();break;case 141514:yi();break;case 141568:wi();break;case 32:case 78:case 120:case 124:case 145:case 152:case 165:case 167:case 185:case 191:case 226:case 227:case 242:case 243:case 253:case 14854:case 14918:case 14920:case 14921:case 14922:case 14923:case 14925:case 14927:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14936:case 14937:case 14938:case 14939:case 14941:case 14942:case 14944:case 14945:case 14946:case 14949:case 14950:case 14951:case 14952:case 14953:case 14954:case 14956:case 14957:case 14958:case 14959:case 14960:case 14961:case 14966:case 14967:case 14969:case 14970:case 14971:case 14973:case 14974:case 14976:case 14977:case 14979:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14989:case 14994:case 14996:case 14998:case 14999:case 15001:case 15002:case 15003:case 15007:case 15008:case 15009:case 15010:case 15011:case 15012:case 15014:case 15018:case 15019:case 15020:case 15022:case 15024:case 15026:case 15028:case 15029:case 15030:case 15032:case 15034:case 15040:case 15042:case 15046:case 15047:case 15048:case 15049:case 15050:case 15051:case 15054:case 15060:case 15061:case 15064:case 15066:case 15067:case 15068:case 15069:case 15070:case 15072:case 15073:case 15076:case 15077:case 15082:case 15083:case 15084:case 15085:case 15088:case 15092:case 15096:case 15097:case 15098:case 15099:case 15100:case 15102:case 15104:case 15105:case 15108:case 15109:case 15110:case 15111:case 15114:case 15115:case 15118:case 15122:os();break;case-10:case 27412:yl();break;case-11:ll();break;case 68:ml();break;case 278:al();break;default:Li()}Vl.endNonterminal("PrimaryExpr",Pl)}function ul(){switch(Hl){case 184:Ll(256);break;case 216:Ll(254);break;case 276:Ll(277);break;case 82:case 121:Ll(259);break;case 96:case 244:Ll(93);break;case 119:case 202:case 256:Ll(139);break;case 6:case 70:case 72:case 73:case 74:case 75:case 77:case 79:case 80:case 81:case 83:case 84:case 85:case 86:case 88:case 89:case 90:case 91:case 93:case 94:case 97:case 98:case 101:case 102:case 103:case 104:case 105:case 106:case 108:case 109:case 110:case 111:case 112:case 113:case 118:case 122:case 123:case 125:case 126:case 128:case 129:case 131:case 132:case 133:case 134:case 135:case 136:case 137:case 141:case 146:case 148:case 150:case 151:case 153:case 154:case 155:case 159:case 160:case 161:case 162:case 163:case 164:case 166:case 170:case 171:case 172:case 174:case 176:case 178:case 180:case 181:case 182:case 186:case 192:case 194:case 198:case 199:case 200:case 201:case 203:case 206:case 212:case 213:case 218:case 219:case 220:case 221:case 222:case 224:case 225:case 228:case 229:case 234:case 235:case 236:case 237:case 240:case 248:case 249:case 250:case 251:case 252:case 254:case 257:case 260:case 261:case 262:case 263:case 266:case 267:case 270:case 274:Ll(92);break;default:_l=Hl}if(_l==2836||_l==3348||_l==4372||_l==4884||_l==5396||_l==5908||_l==16148||_l==16660||_l==17684||_l==18196||_l==20756||_l==21780||_l==22804||_l==23316||_l==23828||_l==24340||_l==27924||_l==28436||_l==30484||_l==34068||_l==35092||_l==36116||_l==37140||_l==37652||_l==38164||_l==38676||_l==39700||_l==40212||_l==40724||_l==41236||_l==41748||_l==42260||_l==42772||_l==43284||_l==43796||_l==44308||_l==45332||_l==45844||_l==46356||_l==46868||_l==47892||_l==48404||_l==49428||_l==49940||_l==50452||_l==51988||_l==52500||_l==53012||_l==53524||_l==54036||_l==54548||_l==55572||_l==56084||_l==56596||_l==57108||_l==57620||_l==58132||_l==60692||_l==61204||_l==61716||_l==62228||_l==62740||_l==63252||_l==63764||_l==64276||_l==64788||_l==65812||_l==66324||_l==67348||_l==67860||_l==68372||_l==68884||_l==69396||_l==69908||_l==70420||_l==72468||_l==74516||_l==75028||_l==76052||_l==77076||_l==77588||_l==78100||_l==78612||_l==79124||_l==79636||_l==81684||_l==82196||_l==82708||_l==83220||_l==83732||_l==84244||_l==84756||_l==85268||_l==85780||_l==87316||_l==87828||_l==88340||_l==89364||_l==90388||_l==91412||_l==92436||_l==92948||_l==93460||_l==94484||_l==94996||_l==95508||_l==98068||_l==98580||_l==99604||_l==101652||_l==102164||_l==102676||_l==103188||_l==103700||_l==104212||_l==105748||_l==108820||_l==109332||_l==110868||_l==111892||_l==112404||_l==112916||_l==113428||_l==113940||_l==114964||_l==115476||_l==115988||_l==116500||_l==117012||_l==117524||_l==120084||_l==120596||_l==121108||_l==121620||_l==123156||_l==124180||_l==124692||_l==125204||_l==127252||_l==127764||_l==128276||_l==128788||_l==129300||_l==129812||_l==130324||_l==131348||_l==131860||_l==133396||_l==133908||_l==134420||_l==134932||_l==136468||_l==136980||_l==138516||_l==140564||_l==141588||_l==142612||_l==144660){_l=Kl(14,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{bl(),Jl(14,t,-10),_l=-14}catch(a){_l=-11,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(14,t,-11)}}}switch(_l){case 8:case 9:case 10:case 11:ui();break;case 31:ci();break;case 34:vi();break;case 44:gi();break;case 17414:case 17478:case 17480:case 17481:case 17482:case 17483:case 17485:case 17487:case 17488:case 17489:case 17491:case 17492:case 17493:case 17494:case 17496:case 17497:case 17498:case 17499:case 17501:case 17502:case 17505:case 17506:case 17509:case 17510:case 17511:case 17512:case 17513:case 17514:case 17516:case 17517:case 17518:case 17519:case 17520:case 17521:case 17526:case 17527:case 17530:case 17531:case 17533:case 17534:case 17536:case 17537:case 17539:case 17540:case 17541:case 17542:case 17543:case 17544:case 17545:case 17549:case 17554:case 17556:case 17558:case 17559:case 17561:case 17562:case 17563:case 17567:case 17568:case 17569:case 17570:case 17571:case 17572:case 17574:case 17578:case 17579:case 17580:case 17582:case 17584:case 17586:case 17588:case 17589:case 17590:case 17592:case 17594:case 17600:case 17602:case 17606:case 17607:case 17608:case 17609:case 17610:case 17611:case 17614:case 17620:case 17621:case 17626:case 17627:case 17628:case 17629:case 17630:case 17632:case 17633:case 17636:case 17637:case 17642:case 17643:case 17644:case 17645:case 17648:case 17656:case 17657:case 17658:case 17659:case 17660:case 17662:case 17664:case 17665:case 17668:case 17669:case 17670:case 17671:case 17674:case 17675:case 17678:case 17682:xi();break;case 141514:bi();break;case 141568:Ei();break;case 32:case 78:case 120:case 124:case 145:case 152:case 165:case 167:case 185:case 191:case 226:case 227:case 242:case 243:case 253:case 14854:case 14918:case 14920:case 14921:case 14922:case 14923:case 14925:case 14927:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14936:case 14937:case 14938:case 14939:case 14941:case 14942:case 14944:case 14945:case 14946:case 14949:case 14950:case 14951:case 14952:case 14953:case 14954:case 14956:case 14957:case 14958:case 14959:case 14960:case 14961:case 14966:case 14967:case 14969:case 14970:case 14971:case 14973:case 14974:case 14976:case 14977:case 14979:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14989:case 14994:case 14996:case 14998:case 14999:case 15001:case 15002:case 15003:case 15007:case 15008:case 15009:case 15010:case 15011:case 15012:case 15014:case 15018:case 15019:case 15020:case 15022:case 15024:case 15026:case 15028:case 15029:case 15030:case 15032:case 15034:case 15040:case 15042:case 15046:case 15047:case 15048:case 15049:case 15050:case 15051:case 15054:case 15060:case 15061:case 15064:case 15066:case 15067:case 15068:case 15069:case 15070:case 15072:case 15073:case 15076:case 15077:case 15082:case 15083:case 15084:case 15085:case 15088:case 15092:case 15096:case 15097:case 15098:case 15099:case 15100:case 15102:case 15104:case 15105:case 15108:case 15109:case 15110:case 15111:case 15114:case 15115:case 15118:case 15122:us();break;case-10:case 27412:bl();break;case-11:cl();break;case 68:gl();break;case 278:fl();break;case-14:break;default:Ai()}}function al(){Vl.startNonterminal("JSONSimpleObjectUnion",Pl),Sl(278),kl(273),Hl!=281&&(Nl(),G()),Sl(281),Vl.endNonterminal("JSONSimpleObjectUnion",Pl)}function fl(){xl(278),kl(273),Hl!=281&&Y(),xl(281)}function ll(){Vl.startNonterminal("ObjectConstructor",Pl),Sl(276),kl(274),Hl!=282&&(Nl(),hl()),Sl(282),Vl.endNonterminal("ObjectConstructor",Pl)}function cl(){xl(276),kl(274),Hl!=282&&pl(),xl(282)}function hl(){Vl.startNonterminal("PairConstructorList",Pl),dl();for(;;){if(Hl!=41)break;Sl(41),kl(267),Nl(),dl()}Vl.endNonterminal("PairConstructorList",Pl)}function pl(){vl();for(;;){if(Hl!=41)break;xl(41),kl(267),vl()}}function dl(){Vl.startNonterminal("PairConstructor",Pl),_f(),Sl(49),kl(267),Nl(),_f(),Vl.endNonterminal("PairConstructor",Pl)}function vl(){Df(),xl(49),kl(267),Df()}function ml(){Vl.startNonterminal("ArrayConstructor",Pl),Sl(68),kl(272),Hl!=69&&(Nl(),G()),Sl(69),Vl.endNonterminal("ArrayConstructor",Pl)}function gl(){xl(68),kl(272),Hl!=69&&Y(),xl(69)}function yl(){Vl.startNonterminal("BlockExpr",Pl),Sl(276),kl(277),Nl(),$a(),Sl(282),Vl.endNonterminal("BlockExpr",Pl)}function bl(){xl(276),kl(277),Ja(),xl(282)}function wl(){Vl.startNonterminal("FunctionDecl",Pl),Sl(145),kl(255),Nl(),Ha(),kl(22),Sl(34),kl(94),Hl==31&&(Nl(),U()),Sl(37),kl(148),Hl==79&&(Nl(),El()),kl(118);switch(Hl){case 276:Sl(276),kl(277),Nl(),$a(),Sl(282);break;default:Sl(133)}Vl.endNonterminal("FunctionDecl",Pl)}function El(){Vl.startNonterminal("ReturnType",Pl),Sl(79),kl(260),Nl(),ms(),Vl.endNonterminal("ReturnType",Pl)}function Sl(e){Hl==e?(Nl(),Vl.terminal(i.TOKEN[Hl],Bl,jl>Gl?Gl:jl),Dl=Bl,Pl=jl,Hl=Fl,Hl!=0&&(Bl=Il,jl=ql,Fl=0)):Ml(Bl,jl,0,Hl,e)}function xl(e){Hl==e?(Dl=Bl,Pl=jl,Hl=Fl,Hl!=0&&(Bl=Il,jl=ql,Fl=0)):Ml(Bl,jl,0,Hl,e)}function Tl(e){var t=Dl,n=Pl,r=Hl,i=Bl,s=jl;Hl=e,Bl=Yl,jl=Zl,Fl=0,Pa(),Dl=t,Pl=n,Hl=r,Hl!=0&&(Bl=i,jl=s)}function Nl(){Pl!=Bl&&(Dl=Pl,Pl=Bl,Vl.whitespace(Dl,Pl))}function Cl(e){var t;for(;;){t=ec(e);if(t!=22){if(t!=36)break;Tl(t)}}return t}function kl(e){Hl==0&&(Hl=Cl(e),Bl=Yl,jl=Zl)}function Ll(e){Fl==0&&(Fl=Cl(e),Il=Yl,ql=Zl),_l=Fl<<9|Hl}function Al(e){Hl==0&&(Hl=ec(e),Bl=Yl,jl=Zl)}function Ol(e){Fl==0&&(Fl=ec(e),Il=Yl,ql=Zl),_l=Fl<<9|Hl}function Ml(e,t,r,i,s){throw t>Ul&&(Rl=e,Ul=t,zl=r,Wl=i,Xl=s),new n.ParseException(Rl,Ul,zl,Wl,Xl)}function Jl(e,t,n){$l[(t<<4)+e]=n}function Kl(e,t){var n=$l[(t<<4)+e];return typeof n!="undefined"?n:0}function ec(e){var t=!1;Yl=Zl;var n=Zl,r=i.INITIAL[e],s=0;for(var o=r&4095;o!=0;){var u,a=n<Gl?Ql.charCodeAt(n):0;++n;if(a<128)u=i.MAP0[a];else if(a<55296){var f=a>>4;u=i.MAP1[(a&15)+i.MAP1[(f&31)+i.MAP1[f>>5]]]}else{if(a<56320){var f=n<Gl?Ql.charCodeAt(n):0;f>=56320&&f<57344&&(++n,a=((a&1023)<<10)+(f&1023)+65536,t=!0)}var l=0,c=5;for(var h=3;;h=c+l>>1){if(i.MAP2[h]>a)c=h-1;else{if(!(i.MAP2[6+h]<a)){u=i.MAP2[12+h];break}l=h+1}if(l>c){u=0;break}}}s=o;var p=(u<<12)+o-1;o=i.TRANSITION[(p&15)+i.TRANSITION[p>>4]],o>4095&&(r=o,o&=4095,Zl=n)}r>>=12;if(r==0){Zl=n-1;var f=Zl<Gl?Ql.charCodeAt(Zl):0;return f>=56320&&f<57344&&--Zl,Ml(Yl,Zl,s,-1,-1)}if(t)for(var d=r>>9;d>0;--d){--Zl;var f=Zl<Gl?Ql.charCodeAt(Zl):0;f>=56320&&f<57344&&--Zl}else Zl-=r>>9;return(r&511)-1}r(e,t);var n=this;this.ParseException=function(e,t,n,r,i){var s=e,o=t,u=n,a=r,f=i;this.getBegin=function(){return s},this.getEnd=function(){return o},this.getState=function(){return u},this.getExpected=function(){return f},this.getOffending=function(){return a},this.getMessage=function(){return a<0?"lexical analysis failed":"syntax error"}},this.getInput=function(){return Ql},this.getOffendingToken=function(e){var t=e.getOffending();return t>=0?i.TOKEN[t]:null},this.getExpectedTokenSet=function(e){var t;return e.getExpected()<0?t=i.getTokenSet(-e.getState()):t=[i.TOKEN[e.getExpected()]],t},this.getErrorMessage=function(e){var t=this.getExpectedTokenSet(e),n=this.getOffendingToken(e),r=Ql.substring(0,e.getBegin()),i=r.split("\n"),s=i.length,o=i[s-1].length+1,u=e.getEnd()-e.getBegin();return e.getMessage()+(n==null?"":", found "+n)+"\nwhile expecting "+(t.length==1?t[0]:"["+t.join(", ")+"]")+"\n"+(u==0||n!=null?"":"after successfully scanning "+u+" characters beginning ")+"at line "+s+", column "+o+":\n..."+Ql.substring(e.getBegin(),Math.min(Ql.length,e.getBegin()+64))+"..."},this.parse_XQuery=function(){Vl.startNonterminal("XQuery",Pl),kl(275),Nl(),o(),Sl(25),Vl.endNonterminal("XQuery",Pl)};var _l,Dl,Pl,Hl,Bl,jl,Fl,Il,ql,Rl,Ul,zl,Wl,Xl,Vl,$l,Ql,Gl,Yl,Zl};r.getTokenSet=function(e){var t=[],n=e<0?-e:INITIAL[e]&4095;for(var i=0;i<284;i+=32){var s=i,o=(i>>5)*3694+n-1,u=o>>1,a=u>>2,f=r.EXPECTED[(o&1)+r.EXPECTED[(u&3)+r.EXPECTED[(a&3)+r.EXPECTED[a>>2]]]];for(;f!=0;f>>>=1,++s)(f&1)!=0&&t.push(r.TOKEN[s])}return t},r.MAP0=[70,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,17,17,17,17,17,17,17,17,17,18,19,20,21,22,23,24,25,26,27,28,29,26,30,30,30,30,30,31,32,33,30,30,34,30,30,35,30,30,30,36,30,30,37,38,39,38,30,38,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,38,38],r.MAP1=[108,124,214,214,214,214,214,214,214,214,214,214,214,214,214,214,156,181,181,181,181,181,214,215,213,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,247,261,277,293,309,355,371,387,423,423,423,415,339,331,339,331,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,440,440,440,440,440,440,440,324,339,339,339,339,339,339,339,339,401,423,423,424,422,423,423,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,338,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,423,70,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,17,17,17,17,17,17,17,17,17,18,19,20,21,22,23,24,25,26,27,28,29,26,30,30,30,30,30,31,32,33,30,30,30,30,30,30,30,30,30,30,30,30,30,30,38,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,34,30,30,35,30,30,30,36,30,30,37,38,39,38,30,38,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,38,38,38,38,38,38,38,38,38,38,38,38,30,30,38,38,38,38,38,38,38,69,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69],r.MAP2=[57344,63744,64976,65008,65536,983040,63743,64975,65007,65533,983039,1114111,38,30,38,30,30,38],r.INITIAL=[1,12290,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287],r.TRANSITION=[42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,25651,25666,25670,25670,25670,18189,25670,25670,25670,25670,18201,25670,25670,25670,25670,18176,25670,25671,18217,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,42516,25917,18730,20976,20988,20999,21015,25420,18732,21040,42516,42516,42516,27632,42516,42516,51474,31122,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,21056,21084,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,23286,21107,42516,42516,42516,39416,42516,42516,43470,47286,25568,42516,42516,42516,42516,23672,41495,21126,21160,42516,42516,42516,27632,42516,42516,35938,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,25556,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21176,21248,42516,42516,42516,50595,42516,42516,42445,42516,25917,23619,21211,21279,21269,21226,21240,44419,21040,42516,42516,42516,27632,21302,42516,32247,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,19871,21321,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,21344,26008,18612,18632,18596,21349,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42510,42516,42516,42516,48894,42515,42516,51366,42516,21365,42504,21403,42515,21410,42516,27599,27612,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,21426,42516,42516,42516,22170,42516,42516,21445,42516,42516,21468,21481,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,42516,24484,42516,42516,42516,42516,42516,42516,42517,21497,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,21513,25598,18486,18508,51408,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,25358,21538,42516,42516,42516,29996,42516,42516,26519,46446,25383,42516,42516,42516,42516,25736,28473,18232,21557,42516,42516,42516,27632,42516,42516,51474,21573,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,19060,21591,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,23074,23089,21619,21619,21619,21672,21614,21619,21624,23096,21640,21745,21688,21665,21655,21732,21703,21716,21040,42516,42516,42516,33326,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,21761,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,45317,42516,42516,42516,49458,21798,42516,22640,21804,25917,45316,42516,21821,21844,21828,21860,21869,21885,42516,42516,42516,29550,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,21901,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,21944,42516,42516,42516,48069,42516,42516,42516,26308,36543,25445,25454,21937,25455,21960,21985,21998,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,18888,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,26329,37275,42655,22014,22031,22014,22046,42653,22015,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,22071,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,26891,42516,42516,42516,48069,22092,42516,23653,22130,40293,22116,22186,22191,22191,22207,26888,44587,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,18247,42516,42516,42516,42516,48069,42516,42516,42516,42516,25917,35843,22232,22249,22232,22264,35841,22233,22289,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,46363,42516,33841,42516,34304,43899,22305,22071,36154,42516,42516,42516,42516,28243,22657,22322,22657,22657,22341,33347,46316,46316,39789,38147,35514,38147,38147,22359,22382,42516,42516,42516,42516,42516,28815,42516,22405,22426,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,47355,26569,42516,42516,42516,42516,42516,45225,42516,42516,32981,50880,22657,22657,22657,30360,22467,39622,46316,22501,46316,22343,36422,42625,38147,22520,38147,27826,41766,42516,42516,42516,42516,42516,49148,42516,23255,22657,44467,22657,22657,30361,22539,42077,46316,46316,46316,30525,38147,40186,38147,38147,34440,41769,42516,42516,20027,37487,42516,28242,22657,22657,36250,37745,46316,46316,44329,37798,38147,38147,43834,27827,30836,42516,42516,19405,22558,38368,22576,22657,40730,22597,46316,36583,22617,38147,40469,22638,42516,25905,42516,34153,22656,33064,46073,46316,22674,22710,27827,22690,51145,42516,32408,22729,37572,22752,32120,22683,29050,30609,22771,38961,22813,36803,22874,22893,22911,28238,43147,27775,22913,22451,22736,46400,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,50215,25917,42516,42516,42516,42516,42516,45715,23059,23112,42516,42516,42516,27632,42516,42516,37325,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,23128,46363,42516,42516,42516,34304,42516,42516,18360,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,22341,46316,46316,46316,39789,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,28815,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,23154,42516,42516,42516,46371,42516,42516,42516,42516,25917,35960,23175,23206,23195,23229,35959,23179,21040,42516,42516,42516,27632,42516,42516,51474,27227,42516,43023,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,23254,42516,42516,42516,48069,42516,42516,42516,19968,25917,42516,42516,42516,42516,42516,42762,23271,23302,42516,42516,42516,27632,42516,42516,21380,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,23318,46363,42516,42516,42516,34304,42516,42516,23344,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,22341,46316,46316,46316,39789,38147,38147,38147,38147,40896,23370,23409,42516,42516,42516,42516,38331,23429,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,23450,23383,42516,42516,42516,42516,42516,23487,42516,42516,42516,38370,22657,22657,22657,22657,50700,22540,46316,46316,46316,46316,47852,30533,38147,38147,38147,38147,27826,35762,23510,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,29796,22539,46316,46316,46316,46316,23533,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,46191,46316,46316,46316,32038,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,48371,42516,42516,42516,31492,32078,42516,42516,23557,25917,18721,49121,23587,23594,23610,42516,43878,23635,23651,42516,42516,33439,23669,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,25038,24355,23991,25028,23804,18270,40105,18293,23688,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,23724,24084,23749,23789,24317,23827,23849,23904,24015,23917,23946,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,23969,24689,24310,25086,25092,23974,23990,24416,24845,24007,23833,24977,24993,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,24031,23930,24046,24073,24057,24100,24137,24664,24240,24198,24251,24225,24986,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,24267,24283,24299,24348,24333,24371,24167,24428,24402,23773,24444,24474,35639,19379,39467,19401,41728,19421,19500,24458,19544,24500,24558,24572,24588,24604,24182,24745,24620,24636,24767,19696,19712,19728,19753,19773,19830,19435,19514,24680,24514,19528,24705,24152,24757,19947,19984,20043,20080,20119,20157,20667,24542,24528,24731,24830,24209,24939,20235,20264,20301,24783,24799,24815,24715,24861,20381,20397,19814,23733,24877,24893,20503,25039,24968,23864,24927,24955,25015,20652,18443,23763,24386,25055,24651,25071,25108,25159,25175,25191,25243,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,27003,42516,42516,42516,48069,25296,42516,42516,25291,40518,25312,25320,25320,25320,25327,27168,25343,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25399,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,18963,25373,18652,18689,18711,18748,18695,25415,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,19337,25436,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,25471,25509,25525,20579,19301,19596,25541,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,25584,19614,19632,19650,25620,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,42516,21541,28730,28739,28739,28739,28746,47533,25636,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,27653,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,25687,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51268,23158,42516,42516,42516,48069,42516,42516,42516,42516,25917,22795,25710,25710,25710,25717,23159,22797,21040,25733,42516,42516,27632,42516,42516,51474,42516,42516,44769,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,25752,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,26066,26075,42516,42516,42516,42907,42516,42516,42516,42516,25917,26405,25775,25775,25775,25782,28588,26407,25798,25814,42516,42516,27632,42516,42516,51474,42516,42516,23413,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,25831,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,25857,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,25891,42516,42516,42516,42516,48069,25942,42516,42516,28970,33768,42516,42516,42516,25933,25960,26180,25944,25980,42516,42516,42516,27632,42516,42516,51474,27927,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,25996,26028,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,42516,25917,42516,42516,42516,42516,42516,41865,26051,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,23487,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,26115,26152,42516,42516,42516,42516,42516,23487,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,35762,23510,42516,42516,42516,42516,26178,42516,23255,22657,22657,22657,22657,22877,22539,46316,46316,46316,46316,32774,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,46191,46316,46316,46316,32038,38147,38147,38147,27827,22690,42516,42516,23464,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,23487,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,26115,26152,42516,42516,42516,42516,42516,23487,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,35762,23510,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,22877,22539,46316,46316,46316,46316,32774,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,46191,46316,46316,46316,32038,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,23487,26196,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,26115,26152,42516,42516,42516,42516,42516,23487,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,35762,23510,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,22877,22539,46316,46316,46316,46316,32774,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,46191,46316,46316,46316,32038,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,23487,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,26115,26152,42516,42516,42516,42516,42516,26216,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,35762,23510,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,22877,22539,46316,46316,46316,46316,32774,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,46191,46316,46316,46316,32038,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,31151,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,31154,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,23487,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,26115,26152,42516,42516,42516,42516,42516,23487,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,35762,23510,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,22877,22539,46316,46316,46316,46316,32774,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,46191,46316,46316,46316,32038,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,22786,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26258,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,48694,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,28605,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,47769,26274,26287,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,26303,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,26324,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,42516,25917,35004,26345,26373,26362,26396,35005,26346,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,37963,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,26423,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,42516,25917,42516,42516,42516,42516,42516,42516,42517,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,42516,25917,47727,42516,26460,26483,26467,42516,47735,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,26499,20264,20301,20317,20346,20333,20349,20365,26535,20397,20422,20606,20438,26551,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,29068,42516,42516,42516,51537,26585,26616,29663,26601,26633,26690,26699,26715,26730,26742,26758,26771,26099,19999,42516,26787,26162,26806,41856,26832,26883,26907,26946,30733,26962,26998,27019,27054,46783,31896,27070,46885,46348,36728,27120,42516,42516,34304,27137,37896,42516,27163,34995,39190,42516,27184,43650,22657,22657,22657,27203,27401,46316,46316,41985,48318,38147,38147,38147,37213,40896,22382,42516,27222,48046,42516,27243,27263,27280,42516,42516,27038,20763,27308,27328,22657,22657,27363,27386,27419,35266,46316,30482,27448,27495,27524,27566,38147,35889,38740,46095,27585,26152,27628,42516,45564,42516,47310,23487,42516,46936,27648,27669,27685,34339,22657,27729,22984,44673,27748,45967,46316,27773,39768,32782,27791,37607,38147,27824,22485,27843,27859,27882,27899,42516,27922,31758,27943,23255,33056,27962,22657,42185,33093,27982,30091,46316,35423,43042,32774,28017,38147,38147,42363,28033,23138,28062,40096,28115,41486,28137,21969,22956,28160,22657,46191,35558,28176,28197,32038,49740,47969,28214,27827,28233,42899,42516,21253,42516,38368,42934,43766,40730,37393,48025,36583,51021,44713,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,28260,28298,33550,28320,28341,28379,28401,28421,26921,40729,36585,44924,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,28445,42516,42516,51537,42516,42516,42516,42516,31409,28464,42516,28489,28496,28512,28528,28541,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,42942,46314,28557,30860,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,28583,23487,28604,45602,42516,42516,38368,22657,22657,22657,44648,28621,22541,46316,46316,46316,40008,44805,38147,38147,38147,38147,41449,32923,26115,26152,42516,42516,42516,42516,42516,23487,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,35762,23510,42516,32305,42516,42516,28652,43395,23255,28671,22657,22657,22657,28690,28706,46316,46316,46316,37589,32774,28762,38147,38147,38147,44356,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,46191,46316,46316,46316,32038,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,23013,26674,44310,41661,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,28784,42516,42516,51537,42516,28813,42516,28831,36313,28851,28860,28876,28891,28903,28919,28932,26099,42516,42516,33807,29427,42516,42516,28948,42516,28965,42516,42516,42516,25275,42516,28986,44283,46314,29021,22622,37863,32069,42516,29066,42516,34304,29084,49128,42516,45291,29103,36853,42516,39408,30216,37513,22657,22657,22657,29138,29162,46316,46316,48917,29187,29203,38147,38147,40896,22382,23471,42516,42516,37970,42516,41320,23487,39926,29222,42516,42516,38368,29257,38293,22657,29296,38374,29315,31567,38618,38779,46316,44805,42631,29346,29367,48610,38147,32923,26115,26152,42516,42516,35359,42516,36267,23487,42516,42516,42516,38370,22657,22657,38875,29587,30360,22540,46316,46316,49716,48753,22343,30533,38147,38147,47896,47206,27826,35762,29388,42516,42516,42516,29423,42516,29443,23255,22657,22657,22657,43545,22877,22539,46316,46316,49625,46316,32774,38147,38147,38147,29464,34440,41769,42516,42516,19074,42516,46902,29483,22657,45738,22657,46191,46316,28001,46316,32038,38147,48630,38147,27827,29518,29546,42516,39530,20864,38368,29566,29583,46250,46316,29603,36583,29623,29640,40469,42516,42516,42516,29661,38373,22657,29679,46316,51108,36586,38147,50541,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,29702,29722,29738,29754,28244,40729,36585,22448,28385,36584,34366,22755,31692,34720,29778,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,26790,42516,42516,51537,42516,29812,25227,42516,31450,29831,29840,29856,29871,29878,29894,29907,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,31072,31070,42516,32276,32283,40826,29686,35273,29923,34810,28721,42516,35352,29943,34304,42516,29968,36872,42516,42516,29988,30012,34471,30028,22581,34160,30064,24121,30107,48780,30128,30172,30191,29624,22523,47650,28217,40896,22382,42516,42516,42516,42735,42516,30232,23487,42516,42516,42516,27906,38368,22657,22657,22657,26867,38374,22541,46316,46316,46316,37425,44805,38147,38147,38147,38147,30252,50615,30272,30304,42516,42516,42516,30320,30338,23487,42516,42516,27104,21782,30358,30377,22657,22657,30395,30434,30481,30498,46316,46316,30515,51071,30551,30568,38147,38147,30585,35762,23510,42516,42516,42516,42516,42516,30625,23255,30648,22657,22657,30668,22877,30687,46316,46316,34855,46316,32837,38147,38147,43217,38147,34440,41769,45029,42516,30729,42516,21024,28242,29299,22657,30749,46191,50174,46316,30776,32038,38147,30812,48472,27827,22690,23708,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,37071,42516,42516,38373,22657,31523,46316,43307,36586,38147,39352,22690,34920,42516,38372,43148,46316,38137,38147,30829,36804,38368,28385,28404,30535,27085,28354,31634,30852,30600,30074,38197,42103,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,21805,30876,42516,51537,49762,30895,42516,30918,43094,30942,30951,30967,30982,30994,31010,31023,26099,42516,31039,39573,31055,20844,31088,31151,40795,31438,31118,31138,31170,31208,31224,31259,31325,39316,31341,31357,42305,39859,31243,31397,39944,31425,33906,31466,31484,36903,42516,42516,38844,42516,28243,31508,40831,43064,26242,31546,31583,49551,32501,35578,43001,31607,35023,30465,31623,22382,40777,39e3,31658,40711,31716,41838,31747,42230,41234,31783,31813,31829,31873,31912,31936,31952,31988,32019,35868,32054,38034,47598,32094,32110,32136,39813,32152,32186,47170,32233,26152,32263,42516,49503,42516,32299,32321,32337,32365,32386,32406,32424,22657,35078,32463,30760,22540,32487,46316,47681,50971,43200,30533,32517,38147,37625,38481,40265,32560,23510,18666,32576,32596,39698,32624,37664,32645,31965,32706,47478,32693,32731,32762,40433,46316,32798,32825,32774,32853,32872,49013,32893,32919,41769,42516,21429,46706,42516,42516,32939,25143,43551,27695,46191,47568,50517,33128,32038,44391,37914,44027,27827,22690,51501,22158,32960,23571,32997,33045,33080,33109,33144,33160,33196,33225,33259,33289,25257,41794,33305,33321,22943,47433,44826,33342,33363,33392,45913,37247,22690,23238,33434,38372,47456,46316,49977,38147,33455,33478,32944,28385,33515,33536,30206,38372,33571,38971,31372,39304,33587,33611,33627,33643,33674,33720,28385,36584,33273,33742,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,33784,42516,51537,33805,33823,29972,43389,33866,33897,42516,33882,33940,33947,33963,33976,26099,42516,42516,20279,27632,42516,42516,42516,42516,42516,41269,42516,41261,42516,41268,25123,41628,38176,37400,33992,34810,28721,42516,34012,42516,34304,34012,42516,42516,42516,34029,34013,37295,42516,28243,34045,22657,22657,22657,34069,34103,46316,46316,48318,47159,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,23487,42516,42516,45931,42516,38368,22657,22657,22657,44213,38374,22541,46316,46316,46316,42968,44805,38147,38147,38147,38147,34120,32923,26115,26152,42516,42516,42516,42516,42516,23487,42516,46602,42516,38370,22657,22657,30041,22657,30360,22540,46316,46316,42268,46316,22343,30533,38147,38147,44e3,38147,27826,35762,23510,42516,42516,42516,42516,42516,39273,23255,22657,22657,22657,37139,22877,22539,46316,46316,49643,46316,32774,38147,38147,38147,48815,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,46191,46316,46316,46316,32038,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,46733,42516,42516,42516,36647,22657,28384,27995,46316,49984,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,44874,43254,31692,29762,34139,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,38852,42516,42516,51280,34176,34185,34201,34208,34215,34231,34244,26099,42516,42516,42516,27632,42516,42516,34401,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,37878,42057,42516,42516,34304,42516,42516,42516,42516,34260,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,34278,42516,28081,38368,22657,22657,22657,22657,38374,42076,46316,46316,46316,46316,46212,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,47761,42516,34299,19108,42516,42516,19113,34320,22657,22657,34338,22657,30360,22540,46316,34104,46316,46316,22343,30533,38147,42837,38147,38147,27826,34355,42516,42516,42516,34399,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,38663,42516,34417,28242,22657,22657,38760,37745,46316,46316,50996,37798,38147,38147,38147,34438,22690,34456,18364,34487,34538,24114,31309,31274,34559,34565,27432,34581,44559,30458,34604,22076,42516,19757,34657,29792,34679,47804,33555,31559,34736,35451,34758,22690,41150,39051,35676,32439,38610,34776,34795,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,34833,34871,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,18277,42516,42516,34899,42516,42516,42516,36062,42516,36065,42516,42516,34947,34936,36697,22657,34963,27757,38148,48007,34986,42516,42516,29815,34304,21387,19116,42516,38636,42516,42516,42516,42516,28243,22657,22657,43325,22657,27401,46316,46316,30705,48318,38147,38147,38147,35021,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,35376,42516,35039,38368,22657,22657,22657,22657,50945,22541,46316,46316,46316,46316,38717,38147,38147,38147,38147,38147,41757,22444,42516,35059,42516,42516,42516,42516,42516,42516,42516,39196,38370,35077,22657,22657,22657,30360,46821,46316,46316,46316,46316,22343,23541,38147,38147,38147,38147,27826,41766,42516,42516,42516,50318,42516,42516,42516,23255,22657,22657,22657,46040,30361,22539,46316,46316,46316,34080,30525,38147,38147,38147,42204,34440,41769,42516,42516,46608,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,23434,42516,22428,38373,22657,28384,46316,46316,36586,38147,27827,35094,34920,22560,38372,50497,46316,40393,38147,43581,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,44978,42516,51537,30322,33499,42482,50012,50022,18763,18772,35115,35131,35143,35159,35172,26099,42516,42516,42516,36498,41847,42516,42516,42516,31671,41803,35188,36161,35205,35221,43491,35237,35256,29171,35289,37464,35305,42516,42516,42516,35339,42516,28090,35375,42516,42516,28949,35314,39266,28243,48989,48108,22657,35392,47509,37433,35422,34970,35439,27808,35467,38147,35501,35536,22382,42516,35594,39908,48509,34515,35614,42516,18299,18417,42516,35655,35672,48116,22657,43129,29280,37184,22541,48019,46316,38117,35692,47637,38147,35719,38147,35737,27472,35753,22444,42516,42516,42516,42516,35778,48535,35820,42516,42516,42516,23024,36244,22657,22657,29502,38418,35859,41980,46316,46316,48733,41934,49389,35884,38147,38147,40673,49832,35905,42516,36909,35924,35976,35997,18673,36033,34522,36081,47410,36098,36117,36141,36177,46316,36198,32809,43953,30446,38147,43626,42012,36214,36230,23328,20636,45205,36266,36283,36301,35981,36329,26662,46771,36350,36390,48253,35703,36411,36456,40231,38454,41461,37653,42516,42516,37028,36479,40577,43121,45398,22366,37772,48725,38205,36432,50457,40469,42516,25485,42516,36514,38373,22657,28384,46316,46316,36586,38147,27827,36626,36531,42516,28996,31885,36559,36579,36602,36619,36804,36642,28385,28404,30535,42423,49897,44263,36663,36694,43147,27775,22913,28244,40729,36585,22448,36713,36744,34366,22755,31692,28429,36774,36790,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,39935,42516,51537,42516,42516,42516,42516,25917,42516,29952,39942,19158,38671,36820,36833,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,44206,22657,27401,46316,46317,46316,48318,38147,38147,34588,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,19484,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,36849,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,36869,42516,42516,42516,42516,42516,42516,42516,42516,46294,22657,22657,22657,22657,30360,49232,46316,46316,46316,46316,22343,30796,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,46996,42516,51537,42516,23354,42516,42753,36888,36925,36938,36954,36961,36977,36993,37006,26099,42516,37022,42516,27632,42516,41516,26816,42516,42516,37044,42516,37049,18537,37065,37087,37117,44086,37200,37235,39844,33658,37263,42516,42516,35791,42516,42516,34914,28072,42516,37291,22389,37311,18926,37716,37348,43712,48153,37366,37382,46316,37416,40607,40193,49587,35520,37449,27508,37480,37934,42516,42516,42516,42516,41144,42516,42516,42516,42516,42516,38368,37503,36125,22657,37529,39594,37550,37566,48265,46316,37588,30713,29645,37605,37623,38799,38147,37641,22444,42516,42516,37688,42516,42516,49494,24999,42516,42516,42516,38370,22657,22657,29494,37704,37740,22540,46316,46316,40001,37761,37795,30533,38147,38147,37825,37814,37848,41766,42516,37894,42516,42516,51139,42516,42516,23255,22657,41398,22657,22657,30361,22539,42274,46316,46316,46316,30525,38147,37912,38147,38147,34440,41769,37930,36490,42516,34663,37950,28242,37986,22657,22657,46812,38013,46316,46316,45485,49261,38147,38147,48821,22690,49311,42516,42516,38050,38368,41404,22657,40730,47057,46316,36583,48937,38147,40469,42516,21575,42516,42516,38373,22657,38069,46316,45780,36586,38147,40463,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,38089,46273,22694,23034,40134,34366,22755,38105,38164,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,26200,42516,51537,42516,27946,42516,42516,47834,20951,20960,38221,38236,38243,38259,38272,26258,42516,38551,42516,27632,42516,34262,42516,42516,42516,38553,42516,38546,21091,38552,21774,38288,31700,35273,38309,34810,28721,42516,42516,38329,34304,42516,29241,23811,23953,42516,42516,42516,38347,38364,33022,22657,38390,38410,28636,46316,29607,39628,38434,42370,38147,48603,38470,47663,38504,38541,39253,39681,42516,42516,42516,42516,41197,42516,42516,42516,38368,31857,22657,38569,22657,38374,22541,38589,28198,46316,46316,44805,29206,27800,32877,38147,38147,32923,22444,42516,28144,42516,38634,42516,45188,42516,38652,42516,42516,38370,39723,22657,22657,38687,30379,22540,23043,46316,46316,38710,22895,30533,49398,38147,38147,38733,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,33462,42516,42516,42516,42516,38368,38756,22657,40730,38776,46316,36583,38795,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,38815,36586,49663,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,49485,38368,44256,40047,45820,38834,38868,32210,38891,28238,43147,27775,22913,28244,40729,36585,22448,28385,38914,38935,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,27187,42516,30926,42516,34543,38987,37672,39016,39067,39107,39092,39111,39076,39127,39140,26099,42516,25841,23701,20829,39222,20009,42516,39156,41252,39175,39212,32746,21195,39238,26847,39289,45668,39332,39368,34810,28721,32390,42516,42516,26444,30879,36010,28099,40787,39398,38525,26035,39432,39483,44460,39503,41633,22657,32003,22601,46316,49709,48318,47976,47889,30552,38147,33209,39523,39917,39159,42516,39546,42516,42516,40976,42516,42516,42516,39568,39487,37157,22657,39589,22657,38374,39610,45436,46316,39644,46316,44805,27542,39661,38313,38147,38147,32923,22444,42516,42516,42516,42516,30632,42516,42516,21187,39678,39697,39714,22657,22657,50559,22657,39739,39760,46316,46316,38818,46316,39784,39805,38147,38147,32856,38147,39829,41766,46006,39893,48391,49682,42516,39960,34641,39976,38394,40024,37997,33010,30361,22539,40063,40121,43817,40157,30525,40868,40175,40209,40247,34760,44916,20285,40281,34623,40309,51090,50324,48429,40325,40344,40364,39645,40409,40428,40449,38147,40485,49825,39382,22690,40506,42516,42516,22216,40534,39507,48098,30083,50926,38024,33595,45640,28567,40469,40559,42516,40087,26129,45371,31289,28384,40593,41927,40637,40665,40689,34614,41203,40707,27312,43148,48295,28405,40861,22683,50287,38368,40727,40746,40649,40767,40811,22827,40847,33407,49334,48207,33243,28244,40729,36585,22448,28385,36584,41673,40884,31692,28429,22929,40922,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,40951,51537,42516,42744,40972,42516,27292,40992,41001,41017,41032,41039,41055,41068,26099,20248,41084,41102,41129,21286,41166,42516,41182,41219,41286,31731,41302,41336,41352,41368,41384,34883,41420,41436,48349,41477,42516,42240,27121,34422,42516,41511,25267,41532,41575,42516,42516,41594,28243,22657,31843,41613,34053,27401,40159,35568,34847,41649,38147,27550,41689,41744,40896,22382,42516,26380,42516,41578,42516,44762,41785,42516,41828,27866,41270,19255,22657,41881,41897,22657,35406,41916,43971,44095,46316,46316,41950,22851,37219,42001,38147,29467,32923,42028,42044,42516,46644,19385,42516,42516,42516,42516,42516,34632,38370,22657,27339,43920,22657,30360,22540,46316,44514,36395,46316,22343,30533,38147,35478,49592,38147,27826,41766,42516,42516,21305,42516,31235,42516,42516,23255,22657,22657,22657,22657,20064,42074,46316,46316,46316,46316,42093,38147,38147,38147,38147,50734,41769,50664,35952,42516,42516,42516,41113,22657,42177,22657,45759,46316,43945,46316,45799,38147,45843,38147,27827,29041,42127,42516,42516,42516,48412,30671,22657,38073,44692,46316,33520,45533,38147,40469,42146,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,43588,34920,42516,42166,40348,33173,48271,42201,22683,42220,41559,42256,42290,42321,33756,44448,35547,42352,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,32531,22755,42386,28429,22929,42410,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,39045,51537,42516,42516,42439,19363,42461,42498,42516,31468,42533,42547,42563,42576,26099,42516,42516,25867,27632,42516,42516,42516,42592,26617,42516,42516,26436,25867,42516,30236,31920,49620,42612,36440,34810,28721,42516,42647,42516,34304,42516,44608,36046,42516,35598,42516,42516,36057,51481,44194,32471,36334,37148,42671,32033,42687,33121,42706,38488,30256,30569,29372,32199,42722,42778,42516,42799,42516,49524,50043,35835,42516,42516,42516,42516,38368,22657,22657,37175,22657,38374,22541,46316,46316,47563,46316,44805,38147,38147,38147,42836,38147,32923,42853,42888,35656,42516,42516,42516,50763,30902,39460,48700,42516,38370,22657,42923,22657,22657,37350,22540,46316,42958,46316,46316,27403,30533,38147,42991,38147,38147,27826,41766,42516,29233,42516,42516,42516,43017,42516,23255,22657,22657,49093,22657,22325,22539,46316,46316,43039,46316,30788,38147,38147,35485,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,36017,42516,42516,43058,22657,22657,40730,46316,46316,36583,38147,38147,48843,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,46409,43080,43110,32715,30112,30535,40935,43145,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,35061,42516,42516,42516,28279,28282,18254,28275,31684,43164,43182,29146,43216,43233,29330,43270,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,43287,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,43306,46316,46316,46316,46316,50852,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,43323,28384,43789,46316,36586,43341,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,50278,22100,42516,42516,50243,42516,29530,43375,33789,43361,43411,43418,43434,43447,26099,42516,33915,33924,27632,40956,43463,43486,41243,43507,26512,26972,26982,27147,41812,42783,43531,49966,43567,43604,44058,40078,42516,42516,42516,23213,43642,34502,43666,43684,38517,42516,42516,35323,43702,22657,43728,30048,43746,43782,42975,46316,43805,34708,43833,43850,27569,49274,49874,43871,42516,42516,42516,45270,35189,42516,42516,43894,43668,42516,42814,33726,22657,43915,22657,37724,49041,43936,46316,43969,46316,45680,43987,44022,33996,38147,38147,44043,44074,22444,42516,42516,19081,42516,44111,44127,42516,43290,44154,44166,44182,22657,37101,44229,44279,30652,44299,46316,42336,45461,44326,40412,44345,38147,44372,45987,44388,34123,41766,28121,42516,42516,24911,44407,50085,42516,44435,27732,44483,22975,22657,30361,22539,44504,42690,46316,46316,30525,28768,44537,44554,38147,40691,44575,42516,44603,44624,42516,42516,28242,44645,22657,22657,44664,44689,46316,46316,49378,44708,38147,38147,49798,22690,42516,44729,42516,42516,20056,22657,22657,34376,46316,51047,22477,38147,44538,40469,42516,22273,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,44749,26230,34694,49922,44785,36803,38372,46315,38146,47702,44821,44842,44862,21913,40729,36585,22448,28385,36584,40621,44890,44940,42111,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,46959,51537,45028,47264,44964,45002,45045,45083,45015,45108,45123,45139,45155,45168,26099,45184,28448,42516,28797,42516,42516,30342,42516,42516,45204,45221,31185,28655,31192,26648,48147,38948,50978,45241,34810,28721,45262,45286,25875,34304,35804,42516,42516,42516,42516,45307,45333,42516,45362,45387,27370,22657,22657,45422,45457,45477,46316,48318,45501,22713,45531,38147,40896,22382,41086,42516,42516,45549,45580,42516,42516,42516,42516,42516,41312,38368,32670,37166,22657,22657,33029,22541,45618,47052,46316,46316,45690,35721,38147,45637,38147,38147,45656,22444,42516,42516,45593,44733,42516,45600,35835,45706,27030,38348,45731,22657,22657,40543,26861,45754,45775,46316,46316,43191,44800,45796,45815,38147,38147,40256,45836,45859,28046,42867,49429,42516,25220,42516,19477,43271,20461,22657,22657,27347,45890,30361,22539,46316,48577,44521,46316,30525,38147,38147,46850,45910,34440,41769,42516,50831,45929,19737,42516,28242,22657,45947,43759,50887,46316,45965,46065,28181,38147,45983,46857,27827,22690,42516,42516,46003,44138,38368,22657,22657,40730,46316,46316,36583,38147,38147,29031,51383,46022,26136,47337,46039,22657,46056,46316,34383,36586,38147,46089,46111,34920,46149,46173,43148,46207,44846,46228,32903,36804,38368,46247,46266,45515,36803,38372,46315,38146,35099,35240,22504,22913,46289,46310,46333,36758,46387,47879,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,27247,51537,42516,42516,23393,42516,46425,46462,46474,46490,46505,46521,46537,46550,26099,46566,25493,25815,46587,26561,21328,46624,21598,42516,46636,46660,46669,46685,46722,46757,46799,32544,46837,46873,41704,47524,33832,37332,35627,34304,46901,42516,44629,46918,39031,46952,46975,47012,47022,48184,31972,27713,43730,47038,31642,47073,47098,47607,47121,47145,47186,47202,47222,47250,47280,47302,42058,42516,47326,47353,42516,42516,47371,47388,46928,47404,47426,47449,47472,29567,47494,47549,47584,47623,47679,36182,44805,36463,37832,40141,38147,32161,32170,47697,42516,45060,42596,50682,47718,42130,47751,46440,36515,21144,38370,47785,29270,22657,44488,47820,47850,47868,40376,46316,45441,47912,47938,47958,43617,38147,38919,47992,41766,29407,48041,42516,27096,48062,42516,50062,40568,48085,38573,48132,48169,30361,48200,48223,48241,48287,48311,47922,47129,22858,48334,43855,34440,40906,48365,50193,42516,22144,48387,48407,44243,48428,22657,49223,47234,48445,46316,47082,50795,48488,38147,33704,22690,42516,48504,48525,42516,20103,22966,48559,32447,40385,48575,48593,50156,48626,48646,48680,42516,33850,39552,21921,26930,48716,48749,48769,48802,45246,48837,48960,48859,48887,32658,28363,48910,33376,48933,48953,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,45621,46231,48976,39991,49005,49029,40039,49057,44903,22755,31692,28429,49073,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,49109,42516,42516,49144,42516,32608,18328,18337,49164,18337,18344,49180,49193,26099,42516,42516,42516,27632,20863,28835,42516,42516,42516,42516,28834,42516,20857,42516,28241,49209,31530,22841,49248,36678,30143,33493,42516,42516,34304,42516,42516,35043,49290,42516,42516,42516,38053,28243,49327,22657,22657,22658,49350,46316,46316,46316,31591,33687,38147,38147,38147,49366,49414,49451,42516,49474,49519,42516,42516,43686,45346,42516,46571,46157,38368,45949,40328,45406,25137,29005,22541,48786,34087,38601,49540,48459,38147,33697,39345,49573,33236,49608,22444,42516,19180,42516,50588,42516,42516,42516,18791,42516,42516,38370,38694,22657,22657,22657,30360,49641,32217,46316,46316,46316,22343,49659,38898,38147,38147,38147,27826,41766,46990,42516,49679,42516,42516,42516,42516,20094,31303,22657,22657,22657,30361,49698,46316,46316,46316,46316,30525,49732,38147,38147,38147,34440,35908,42516,42516,46023,49756,42516,29706,37130,22657,22657,39744,38128,46316,46316,49778,49814,38147,38147,49848,22690,22055,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,34322,43148,47105,28405,38446,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,49890,49913,49938,22448,28385,36584,34366,34779,33418,49954,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,5e4,50082,50038,50059,42516,32349,42516,20487,50078,34283,44986,50101,50114,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,50130,42394,35273,50148,34810,28721,42516,36285,32580,34304,42516,42516,42516,42516,42516,25759,42516,42516,28243,27704,22657,37534,22657,27401,50172,46316,38188,48318,29351,38147,30813,38147,40896,22382,42516,42516,42516,42516,42516,41597,42516,42516,42516,42476,42516,38368,22657,50132,22657,22657,38374,22541,46316,49557,46316,46316,44805,38147,38147,50449,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,50190,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,50209,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,50231,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,50266,42516,22306,42516,45067,50303,50340,42516,50365,50380,50394,50410,50423,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,45894,46314,50439,28325,41965,36365,42516,42516,42516,34304,42516,42516,42516,42516,25694,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,50473,42516,42516,42516,50491,22657,22657,22657,22657,30360,50513,46316,46316,46316,46316,22343,50533,38147,38147,38147,38147,27826,41766,42516,42516,29399,42516,42516,42516,42516,23255,22657,22657,50557,22657,50575,22539,46316,43245,46316,33180,30525,38147,47942,38147,38147,50611,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,26324,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,48543,50631,50644,26099,42516,42516,42516,27632,50660,42516,50680,42516,42516,42516,29122,42516,21452,29118,32973,50698,44948,35273,50716,34810,28721,42516,42516,42516,50750,27264,27883,43515,42516,42516,42516,42516,42516,28243,22657,43166,22657,49088,27401,46316,30696,30175,48318,38147,38147,50786,27533,40896,50811,50827,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,51530,42516,42516,42516,38370,22657,27966,22657,22657,27206,22540,46316,36563,46316,46316,48225,30533,38147,43345,38147,38147,27826,41766,21110,42516,42516,42516,42516,42516,42516,23255,36082,22657,22657,22657,30361,22539,50847,46316,46316,46316,30525,40490,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,24903,42516,42516,27632,42516,42516,20017,42516,42516,42516,42516,20023,42516,42516,50868,36101,46314,27462,29927,45874,41719,42516,29087,42516,34304,42516,42516,42516,42516,42516,42516,42516,42872,28243,22657,22657,22657,47797,27401,46316,46316,22542,48318,38147,38147,38147,27479,40896,22382,42516,50903,42516,42516,42516,42516,42516,42516,42150,42516,42516,38368,46183,22657,41900,22657,38374,22541,50922,46316,37779,46316,44805,36603,38147,38147,40222,38147,32923,22444,42516,50475,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,50942,22657,22657,30360,50961,30499,50994,46316,46316,22343,49789,39662,51012,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,48664,23255,22657,22657,32677,22657,28304,22539,46316,46316,51045,46316,51063,38147,38147,50725,38147,44006,41769,42516,42516,50906,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,48656,42516,42516,47372,42516,31381,22657,22657,34817,46316,46316,40751,38147,38147,40469,42516,42516,51087,42516,38373,28681,28384,46316,51106,36586,34742,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,19962,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,46123,30288,30286,49299,30156,51124,22408,22410,49308,30152,46133,51161,51174,21040,42516,42516,42516,27632,42516,42516,31797,42516,42516,42516,42516,42516,42516,42516,32629,20505,20792,18990,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,51190,25598,18486,18508,19308,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,30409,42516,25917,39868,39877,51215,51230,51237,29448,51253,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,23517,42516,42516,23514,32629,20505,21066,18953,21068,18866,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,36374,42516,42516,42516,42516,31102,50349,51296,51323,51307,51330,32370,51346,21040,42516,42516,42516,27632,42516,42516,51474,51382,42516,26083,42516,42516,42516,26079,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,51399,25598,18486,18508,21522,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,42516,25917,42516,42516,42516,42516,42516,42516,42517,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,46363,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,22341,46316,46316,46316,39789,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,23494,42516,42516,45092,51424,51429,51429,51451,23492,51445,51467,42516,42516,42516,42516,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,51497,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,51190,25598,18486,18508,19308,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,51517,20264,20301,20317,20346,20333,20349,20365,51553,20397,20422,20606,20438,20453,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,94506,94506,94506,94506,94506,94506,94506,94506,94506,94506,0,94506,90409,94506,94506,94506,94506,94506,94506,94506,94506,94506,365,94506,90409,94506,94506,94506,94506,94506,94506,94506,69632,73728,94506,94506,94506,94506,94506,65536,94506,12290,3,0,0,2183168,0,0,0,90409,94506,299,300,0,2134016,303,304,304,304,304,304,304,304,0,0,0,0,0,304,0,304,1,289,3,0,0,0,295,0,0,0,0,0,0,0,0,0,0,796,0,796,0,0,0,0,0,2424832,2433024,0,0,2457600,0,0,0,0,0,0,0,0,0,0,650,0,0,0,0,0,0,0,0,0,2904064,2908160,0,0,0,0,0,0,0,0,0,0,0,1685,1686,0,1688,0,0,0,0,3117056,0,0,0,0,0,0,0,365,365,0,0,0,0,0,0,448,0,0,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,559,582,559,582,559,559,582,0,0,0,2138112,0,0,0,0,0,0,0,0,0,0,0,0,0,2991,0,0,0,2772992,2805760,2830336,0,2863104,2920448,0,0,0,0,0,0,0,2805760,2920448,0,0,0,0,0,0,0,2732032,0,2179072,2179072,2179072,2179072,2424832,2433024,0,0,0,0,0,2920448,0,0,0,0,0,0,0,0,0,0,0,1702,0,1704,0,0,2179072,2830336,2179072,2179072,2863104,2179072,2179072,2179072,2179072,2920448,2179072,2179072,2179072,2179072,2179072,2179072,2126737,2126737,2126737,2126737,2126737,2593681,2126737,2126737,2126737,2126737,0,914,2125824,2125824,2125824,2125824,2125824,2424832,2433024,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,0,2125824,2125824,2125824,2125824,2723840,2125824,2732032,2772992,2125824,2125824,2125824,2805760,2125824,2830336,2125824,2125824,2863104,2125824,2125824,2125824,2125824,2920448,2125824,2125824,2125824,2125824,2125824,2920448,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3117056,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2457600,2125824,2125824,2125824,2125824,2183168,0,0,0,0,0,0,0,0,0,0,661,0,661,0,0,0,2408448,0,0,2584576,0,0,0,0,2838528,0,0,2838528,0,0,0,0,0,2179072,2179072,2179072,2408448,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2625536,2179072,2179072,0,2125824,2125824,2125824,2408448,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3125248,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2662400,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2801664,2813952,2125824,2125824,2801664,2813952,2125824,2838528,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2461696,0,0,0,0,0,0,0,0,0,0,0,0,2600960,0,0,0,0,0,0,2441,0,0,0,0,0,0,0,0,0,0,2493,2494,0,0,2497,0,2768896,2777088,2781184,0,2822144,0,0,2883584,0,0,0,0,0,0,0,0,0,0,0,0,3055616,0,0,0,3080192,3100672,3104768,0,0,0,0,3186688,0,0,0,0,0,0,0,307,204800,0,0,0,0,0,0,0,0,0,111051,111051,111051,111051,111051,111051,111051,111051,1,0,0,0,0,0,2797568,0,0,0,0,0,0,0,2850816,2867200,0,0,0,0,0,441,0,0,332,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,0,0,3133440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2131,0,0,0,0,0,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2461696,2465792,2179072,2768896,2777088,2781184,2797568,2822144,2179072,2179072,2179072,2883584,2179072,2912256,2179072,2179072,2179072,2179072,2179072,2179072,2523136,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2600960,0,0,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2461696,2465792,2125824,0,1142784,0,2179072,2125824,2125824,2179072,2179072,2179072,2179072,2179072,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2592768,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,24576,988,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2523136,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2600960,2125824,0,2125824,2125824,2125824,2125824,2125824,0,0,0,0,0,0,0,0,0,0,541,1272,541,541,541,541,2125824,2125824,2125824,2641920,2125824,2125824,2125824,2125824,2125824,2125824,2719744,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,2125824,2125824,2125824,2125824,2125824,2125824,299,0,0,0,299,0,300,0,0,0,2768896,2777088,2781184,2797568,2822144,2125824,2125824,2125824,2883584,2125824,2912256,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,2125824,2126812,2125824,2125824,2125824,2125824,2125824,2125824,3133440,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3207168,2125824,0,0,0,2179072,2125824,2125824,2179072,2179072,2179072,2179072,2179072,2125824,2125824,2125824,2125824,0,0,0,0,0,0,2510848,2514944,0,0,2125824,2125824,3133440,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3207168,2125824,2179072,2125824,0,2125824,2125824,2125824,2125824,2125824,0,0,0,0,0,0,300,0,0,0,0,0,0,2764,0,0,0,0,0,0,0,0,0,0,2059,2060,0,2062,2063,0,0,0,0,2605056,0,0,0,0,2887680,0,2924544,0,0,0,0,0,0,0,2108,0,0,0,0,0,0,0,0,0,0,0,0,0,1177,0,0,0,0,0,0,3162112,3170304,0,0,3219456,3035136,0,0,0,0,0,3072e3,3190784,0,0,0,0,0,0,0,0,2576384,0,0,0,0,0,0,0,334,0,0,334,0,0,334,0,0,0,0,0,0,0,2387968,0,0,0,0,0,0,0,0,0,0,0,2050,0,0,0,0,3121152,3141632,0,0,0,2924544,0,2682880,0,0,0,0,0,0,3112960,2387968,2924544,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3035136,2179072,2179072,3072e3,2179072,2179072,2179072,2179072,2699264,2179072,2715648,2179072,2723840,2179072,2732032,2772992,2179072,2179072,2179072,2805760,3121152,2179072,2179072,3141632,2179072,2179072,2179072,3170304,2179072,2179072,3190784,3194880,2179072,0,0,0,0,0,0,541,1734,541,541,541,541,541,541,1740,541,2125824,3190784,3194880,2125824,0,0,0,0,0,0,2387968,2125824,2125824,2125824,2420736,2125824,2125824,2125824,2125824,2125824,2453504,2125824,2473984,2125824,2736128,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2887680,2125824,2125824,2924544,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,0,0,2125824,2125824,2125824,2125824,2125824,3141632,2125824,2125824,2125824,3170304,2125824,2125824,3190784,3194880,2125824,2179072,2125824,2125824,2179072,2179072,2179072,2179072,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,299,0,300,3112960,3219456,2125824,2125824,3112960,3219456,2125824,2125824,3112960,3219456,0,0,0,0,0,0,0,347,0,405,0,0,0,0,0,405,3022848,0,0,3145728,0,3203072,0,0,0,0,0,0,0,0,0,0,0,2072,0,0,0,0,0,0,0,3067904,0,0,0,0,0,0,0,0,0,0,0,0,0,3003,0,0,0,0,0,2621440,0,3182592,2899968,0,2961408,0,0,2179072,2179072,2416640,2179072,2179072,2179072,2179072,2928640,2179072,2179072,2179072,2998272,2179072,2179072,2179072,2179072,3059712,2179072,2179072,2179072,2179072,3178496,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2494464,2125824,2125824,0,2179072,2125824,2125824,0,2179072,2125824,2125824,2985984,2985984,2985984,2985984,0,0,0,0,0,0,2490,0,0,0,0,0,0,0,0,0,335,0,0,0,0,0,0,2179072,2445312,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2551808,2179072,2179072,2179072,2179072,3178496,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2495377,2126737,2126737,2126737,2126737,2126737,3179409,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2495451,2126811,2895872,2916352,2179072,2179072,2945024,2179072,2179072,2994176,2179072,3002368,2179072,2179072,3022848,2179072,3067904,3084288,2125824,3096576,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3223552,0,0,2125824,2125824,2416640,3096576,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3223552,0,0,2125824,2125824,2416640,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3035136,2125824,2125824,3072e3,2125824,2125824,2125824,3121152,2125824,2125824,3141632,2125824,2125824,2125824,3170304,2125824,2125824,2125824,2125824,2445312,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2551808,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2637824,2125824,2125824,2125824,2125824,2727936,2752512,2125824,2125824,2125824,2125824,2842624,2846720,2842624,2846720,2125824,2895872,2916352,2125824,2125824,2945024,2125824,2125824,2994176,2125824,3002368,2125824,2125824,3022848,2125824,3067904,2125824,3067904,3084288,2125824,3096576,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3223552,2179072,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3039232,2125824,3063808,2125824,2125824,2125824,2125824,2125824,3100672,2547712,2596864,0,0,0,0,0,0,0,0,0,0,0,0,0,3178496,2670592,0,2744320,0,0,0,0,0,2928640,0,0,0,3059712,0,2543616,2666496,0,2633728,0,0,0,0,0,0,2494464,0,0,0,0,0,0,0,0,0,2780,0,0,0,0,2785,0,0,0,0,2957312,0,0,0,0,0,0,0,0,0,0,0,0,0,3188,0,0,0,0,3211264,0,0,0,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2494464,2179072,2179072,2179072,2707456,2179072,2736128,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2887680,2179072,2179072,2179072,2179072,2641920,2179072,2179072,2179072,2179072,2179072,2179072,2719744,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3137536,2126737,2126737,2499473,2126737,2126737,2126737,2556817,2565009,2179072,2514944,2179072,2179072,2179072,2543616,2547712,2179072,2179072,2596864,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3039232,2179072,3063808,2179072,2179072,2179072,2179072,3100672,2125824,2125824,2125824,2125824,2125824,3178496,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2494464,2125824,0,2125824,2125824,2125824,2125824,2125824,0,0,0,0,1080,1084,0,0,1088,2125824,2514944,2125824,2125824,2125824,2543616,2547712,2125824,2125824,2596864,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2928640,2125824,2125824,2125824,2998272,2125824,2125824,2125824,2125824,3059712,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3178496,2179072,2125824,2125824,2179072,2179072,2125824,2125824,2125824,2125824,0,2486272,0,0,0,0,0,2678784,2854912,3006464,2441216,0,0,0,0,0,0,0,0,0,2932736,2965504,0,0,3076096,0,0,0,0,0,444,0,0,0,0,0,0,0,0,0,0,407,0,0,0,0,0,0,2695168,3174400,2646016,2613248,2703360,0,0,0,0,2977792,0,0,3047424,3129344,0,0,0,0,0,645,0,0,648,649,0,0,0,0,0,0,0,725,0,0,0,0,0,0,0,0,0,743,0,0,0,0,0,0,0,0,0,0,0,0,2769,0,0,0,2981888,2396160,0,3153920,0,0,0,0,0,0,0,0,2740224,0,0,0,0,0,0,541,3027,541,541,541,541,541,541,541,541,541,2584,541,541,541,0,0,0,0,0,2793472,0,0,0,0,0,2469888,2506752,2756608,0,0,2580480,0,0,0,0,0,0,2517,0,0,0,0,0,0,0,0,541,541,541,3029,541,541,541,541,541,541,0,2396160,2400256,2179072,2179072,2441216,2179072,2469888,2179072,2179072,2179072,2519040,2179072,2179072,2179072,2179072,2179072,2179072,2801664,2813952,2179072,2838528,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2453504,2179072,2473984,2482176,2179072,2179072,2179072,2179072,2588672,2179072,2613248,2646016,2179072,2179072,2695168,2756608,2179072,2179072,2179072,2932736,2179072,2179072,2179072,2179072,2179072,3117056,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2584576,2179072,2179072,2125824,2125824,2125824,2519040,2125824,2125824,2125824,2125824,2588672,2125824,2613248,2646016,2125824,2125824,2695168,2756608,2125824,2125824,2125824,2125824,2932736,2125824,2125824,2125824,2125824,2125824,2932736,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3129344,2125824,2125824,3153920,3166208,3174400,2506752,2506752,2506752,0,3108864,3198976,0,0,3043328,0,3149824,2936832,0,2760704,3180,2437120,0,0,0,0,0,0,646,0,0,0,0,651,652,653,654,655,0,0,0,0,0,2953216,0,0,2826240,3158016,2428928,0,3018752,2764800,2572288,0,0,0,0,0,677,0,0,0,0,0,0,0,0,0,0,0,2741,0,0,0,0,0,3051520,2179072,2428928,2437120,2179072,2486272,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2654208,2678784,2760704,2764800,2854912,2969600,2179072,3006464,2179072,3018752,2179072,2179072,2179072,3149824,2125824,2428928,2437120,2969600,2125824,3006464,2125824,3018752,2125824,2125824,2125824,2125824,3149824,2125824,2428928,2437120,2125824,2486272,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2654208,2678784,2760704,2764800,2785280,2854912,2969600,2125824,3006464,2125824,3018752,2125824,2125824,2125824,2125824,3149824,2179072,3051520,2125824,3051520,2125824,3051520,0,2490368,2498560,0,0,0,0,2875392,0,0,0,3180,0,0,0,0,0,0,2834432,0,3227648,2568192,2564096,0,2940928,2179072,2179072,2498560,2179072,2179072,2179072,2555904,2564096,2179072,2179072,2179072,2617344,2179072,2179072,2179072,2179072,2179072,2179072,2662400,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3137536,2125824,2125824,2498560,2125824,2125824,2125824,2555904,2564096,2125824,2555904,2564096,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3137536,2940928,2940928,0,0,0,0,0,2748416,2879488,0,0,0,0,0,0,0,0,0,2519,0,0,0,0,0,541,2940928,0,0,0,0,0,2748416,2879488,0,3180,0,0,0,0,0,0,0,375,0,0,0,0,0,0,0,360,0,0,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2125824,0,2502656,0,0,3010560,0,0,0,0,0,0,0,0,2990080,2179072,2179072,2179072,3129344,2179072,2179072,3153920,3166208,3174400,2396160,2400256,2125824,2125824,2441216,2125824,2469888,2125824,2125824,2125824,2519040,2125824,2125824,2179072,2502656,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3010560,2179072,2179072,2125824,2125824,2125824,2125824,2125824,2125824,2605056,2125824,2629632,2125824,2125824,2650112,2125824,2125824,2125824,2707456,2125824,2736128,2125824,2125824,2125824,2125824,2125824,2502656,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3010560,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3137536,2125824,2125824,2498560,2125824,2125824,2502656,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3010560,2125824,2125824,2125824,0,0,0,0,0,0,2739,0,0,0,0,0,0,0,2743,0,0,0,2592768,0,0,0,0,0,0,2179072,2179072,2179072,2179072,2179072,2592768,2179072,2179072,2179072,3129344,2179072,2179072,3153920,3166208,3174400,2397073,2401169,2126737,2126737,2442129,2126737,2470801,2125824,2125824,2449408,0,2535424,3031040,2859008,0,0,0,0,0,2179072,2449408,2179072,2535424,2179072,2609152,2179072,2859008,2179072,2179072,2179072,3031040,2125824,2449408,2125824,2535424,2125824,2609152,2125824,2859008,2125824,2125824,2125824,3031040,2125824,2125824,2449408,2125824,2535424,2125824,2609152,2125824,2859008,2125824,2125824,2125824,0,2179072,2125824,2125824,2457600,2179072,2179072,2179072,2179072,2457600,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2179072,2125824,2125824,2179072,2179072,2179072,2179072,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,0,0,0,0,0,0,0,0,0,0,1727,0,0,1728,0,3031040,2125824,2527232,0,0,0,0,0,2179072,2527232,2179072,2179072,2179072,2179072,2179072,2125824,2126738,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3125248,2125824,2125824,2125824,2125824,2125824,2527232,2125824,2125824,2125824,2125824,2125824,3092480,2125824,2527232,2125824,2125824,2125824,2125824,2125824,3092480,0,0,0,0,0,693,0,0,0,0,0,0,365,365,365,0,0,0,0,0,707,708,0,0,0,0,0,714,0,0,0,0,0,0,703,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3020,3026944,0,0,0,2404352,2179072,2179072,2179072,2179072,3026944,2404352,2125824,2125824,2125824,2125824,3026944,0,2539520,0,2949120,2179072,2658304,2973696,2179072,2125824,2658304,2973696,2125824,2125824,2658304,2973696,2125824,0,2711552,256e4,2179072,256e4,2125824,256e4,2125824,0,2179072,2179072,2531328,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2605056,2179072,2629632,2179072,2179072,2650112,0,0,2809856,0,0,0,0,0,0,0,0,0,0,3088384,0,0,0,0,0,442,0,0,454,470,470,470,470,470,470,470,470,470,470,480,470,470,470,470,470,111051,111051,111051,111051,111051,111051,111051,111051,111051,111051,111051,111051,111051,111051,111051,111051,459,459,111051,459,459,459,459,459,459,459,459,459,111051,111051,111051,111051,111051,111051,111051,111051,111051,111051,459,111051,111051,111051,459,111051,111051,111051,111051,111051,0,0,0,0,0,0,0,0,0,2795,0,0,0,0,0,0,12290,3,0,0,2183168,0,0,0,0,0,299,300,0,2134016,303,304,2125824,1060,0,0,2179072,2125824,2125824,2179072,2179072,2179072,2179072,2179072,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,1060,2125824,2125824,2125824,2125824,2125824,0,0,0,0,0,0,0,0,0,0,662,0,662,0,0,0,0,303,118784,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2434,0,303,303,303,303,303,303,303,0,0,0,0,0,303,0,303,1,12290,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2155,0,12290,3,0,0,2183168,0,0,0,0,0,33403,300,0,2134016,49791,304,2105632,12290,3,0,0,294,0,0,0,0,294,0,0,0,0,0,0,0,2124,0,0,0,0,0,0,0,0,0,788,814,0,814,809,0,0,0,122880,122880,122880,122880,122880,122880,122880,122880,122880,122880,122880,122880,122880,122880,122880,0,0,0,122880,0,122880,122880,122880,0,0,0,0,0,122880,0,0,122880,0,0,0,0,0,0,0,0,122880,0,0,0,0,0,0,0,0,0,0,0,0,3002,0,0,0,0,0,0,0,0,122880,122880,122880,122880,122880,122880,122880,122880,122880,0,0,122880,0,0,0,0,0,0,0,0,0,0,712,0,0,0,716,0,0,0,147456,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2459,0,1092,0,2424832,2433024,0,0,2457600,0,0,0,0,0,0,0,0,0,0,728,0,0,0,0,0,1823,2125824,2125824,2125824,2408448,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,1919,2125824,2125824,2125824,0,0,0,131072,0,0,0,69632,73728,0,0,0,0,0,65536,0,0,0,0,0,740,407,0,0,0,0,0,0,0,0,0,0,1158,0,0,0,0,0,0,131072,0,0,131072,131072,0,0,0,0,0,0,0,131072,0,0,131072,0,0,131072,0,0,0,0,135168,135168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2756,0,0,0,0,135168,0,0,135168,0,0,0,0,0,0,0,0,0,0,735,0,797,0,0,0,0,0,0,0,135168,0,135168,135168,135168,135168,135168,135168,0,135168,135168,135168,135168,135168,135168,135168,0,0,0,0,0,135168,0,135168,1,12290,3,0,0,2183168,0,0,0,0,0,636,637,0,2134016,640,641,0,1361,2125824,2125824,2125824,2125824,2125824,2424832,2433024,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,0,987,2125824,2125824,2125824,2125824,0,304,139264,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225709,0,12290,3,0,0,2183168,0,0,0,0,0,299,33406,0,2134016,303,49794,0,61440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3178,0,304,2424832,2433024,0,0,2457600,0,0,0,0,0,0,0,0,0,0,757,0,0,0,0,762,301,301,301,143661,371,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,143661,301,301,143661,301,301,301,143731,301,301,301,143731,69632,73728,301,301,143661,301,301,65536,301,301,301,301,301,143661,143661,143661,143661,143661,143661,143661,143661,143661,301,301,143661,301,301,301,301,301,301,301,301,301,366,301,0,143661,301,301,301,143661,143661,143661,143661,143661,143661,143661,143661,143661,143661,143661,143661,143661,143661,143661,143661,301,301,301,143661,301,143661,143661,143661,143661,143661,143731,143661,143731,143731,143731,143731,143731,143731,143731,143661,143661,143661,143661,143661,143661,143661,143661,1,301,143661,301,143661,143661,143661,143661,143661,143661,301,0,301,0,301,301,301,301,301,301,301,301,301,143661,301,143661,143661,143661,143661,301,0,0,0,3117056,0,0,0,0,0,0,0,2200252,2200252,0,0,0,0,0,0,662,0,0,0,0,0,541,541,541,541,541,541,541,541,2168,541,541,541,0,0,0,0,0,155648,155648,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,325,0,0,0,0,155648,155648,0,155648,155648,155648,155648,155648,155648,155648,155648,155648,0,0,0,0,155648,0,0,155648,155648,155648,155648,155648,155648,155648,155648,155648,155648,155648,155648,155648,155648,155648,155648,0,0,0,0,0,155648,0,155648,0,0,0,0,0,155648,0,0,0,0,0,155648,155648,0,155648,155648,0,12290,3,0,0,2183168,126976,0,0,0,0,299,300,0,2134016,303,304,0,0,0,3117056,0,0,0,0,0,0,0,365,0,0,0,0,0,0,0,3563,0,541,541,541,541,541,541,541,541,541,3209,541,541,541,541,541,159744,159744,159744,159744,0,0,159744,0,0,0,0,0,0,0,0,159744,0,0,0,0,0,0,0,159744,159744,159744,163840,159744,159744,159744,159744,159744,0,0,0,0,0,0,0,0,0,2805,0,541,541,541,541,541,0,25162,0,0,0,159744,0,0,0,25162,25162,25162,159744,25162,25162,25162,25162,25162,25162,25162,25162,159744,159744,159744,159744,25162,159744,25162,1,167936,167936,167936,167936,167936,167936,167936,167936,167936,167936,167936,167936,167936,167936,167936,167936,1,167936,167936,167936,167936,0,0,167936,0,0,0,0,0,0,0,0,167936,167936,167936,167936,167936,167936,167936,167936,167936,0,0,0,0,0,0,0,0,0,2976,0,0,0,0,0,0,0,0,0,2138112,1183,0,0,0,0,0,0,0,0,0,0,0,0,3168,0,0,0,0,0,0,0,0,172032,0,172032,0,0,0,0,0,0,0,0,0,365,0,293,0,0,0,348,172032,172032,0,0,172032,0,0,172032,172032,0,172032,0,0,0,0,172032,172032,0,0,0,0,0,0,0,0,0,0,172032,0,0,0,0,0,0,2777,0,0,0,0,0,0,2784,0,0,0,0,0,0,2986,2987,0,2988,0,2990,0,0,0,0,0,0,0,69632,73728,0,135168,135168,0,0,65536,135168,172032,0,172032,172032,0,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,0,0,0,0,0,0,0,0,0,3014,0,0,0,0,0,0,176128,176128,176128,176128,176128,176128,176128,176128,176128,176128,176128,176128,176128,176128,176128,176128,1,176128,176128,176128,176128,0,0,176128,0,0,0,0,0,0,0,0,176128,176128,176128,176128,176128,176128,176128,176128,176128,0,0,0,0,0,0,0,0,0,3175,0,0,0,0,0,0,0,3,78115,78115,293,0,634,0,0,0,299,300,0,2134016,303,304,1164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,361,541,541,1308,541,541,541,541,541,541,541,541,541,541,541,541,541,0,0,2242,0,914,563,563,563,563,563,563,563,563,563,563,563,563,563,563,0,0,587,587,587,1203,541,587,563,541,541,541,541,541,563,563,563,563,3070,563,563,563,563,3074,563,563,587,587,587,587,587,1079,0,0,0,0,0,0,0,0,0,0,1102,0,0,0,0,0,0,0,229376,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1134592,0,0,0,0,1691,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3201,563,563,587,587,587,587,0,0,0,0,0,0,0,0,0,0,541,541,541,541,3569,541,541,0,0,563,563,563,563,563,563,563,2251,563,563,563,563,563,563,587,3109,587,587,587,587,587,587,587,587,2407,587,587,587,587,587,2412,2413,563,563,2288,563,563,563,563,563,563,563,563,563,563,563,563,563,563,3541,587,587,587,2375,587,587,587,587,587,587,587,587,587,587,587,587,587,1497,587,587,0,0,0,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,1439,0,3007,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3317,541,541,541,541,3038,541,541,541,541,541,541,541,541,541,541,541,541,1300,541,541,541,563,563,563,3078,563,563,563,563,563,563,563,563,563,563,563,563,1401,563,563,563,587,587,587,587,3120,587,587,587,587,587,587,587,587,587,587,587,1042,587,587,587,587,0,3159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155648,3214,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1359,563,563,563,587,3259,587,587,587,3262,587,587,587,587,587,587,587,541,541,563,563,587,587,0,0,0,0,0,0,0,0,0,0,3609,541,541,541,587,587,3270,587,587,587,587,587,587,587,587,587,587,587,587,587,1498,587,587,541,541,541,3330,3331,541,541,541,541,541,541,541,541,563,563,563,563,3581,563,563,563,563,563,3349,563,563,563,563,563,563,563,563,563,587,587,587,587,587,587,587,587,0,541,541,541,3406,541,541,541,541,563,563,563,563,563,563,3415,563,0,587,587,587,587,587,291,1079,0,0,0,0,0,0,0,0,0,249856,249856,249856,249856,249856,249856,249856,249856,1,587,3431,587,587,587,587,587,587,3437,587,587,587,3441,587,541,563,563,3473,563,563,563,563,3478,563,563,563,563,3483,563,563,563,563,977,563,563,563,563,0,587,587,587,587,587,587,1931,587,587,587,587,587,587,587,587,587,2678,587,587,587,2681,587,587,0,0,3456,541,541,541,541,541,541,541,541,541,541,541,541,541,0,2586,0,541,3471,563,563,563,563,563,563,563,563,563,563,563,563,563,563,0,2327,563,3487,587,587,587,587,587,587,587,587,587,587,587,587,587,587,0,0,563,563,587,587,587,587,0,0,541,541,563,563,587,587,0,541,541,541,3205,541,541,541,541,541,541,541,3210,541,541,541,541,541,541,2816,541,541,2820,541,541,541,541,541,541,541,541,3041,541,541,541,541,541,541,541,541,2556,541,541,541,541,541,541,541,541,2233,541,541,541,541,541,0,0,563,587,0,541,563,587,0,541,563,587,0,541,563,587,0,0,0,0,0,0,0,0,0,3510,0,0,0,0,541,541,541,541,541,2165,541,541,541,541,541,541,541,541,3616,563,563,563,563,563,563,563,2265,563,563,563,563,2270,563,563,563,184932,184932,184932,184932,184932,184932,184932,0,0,0,0,0,184932,0,184932,1,12290,3,0,0,0,0,0,0,0,0,0,0,0,0,301,301,0,0,301,301,143661,301,301,301,301,301,301,301,301,301,301,301,143731,301,301,301,301,12290,3,78115,78115,293,0,0,0,0,0,299,300,0,2134016,303,304,587,0,0,188416,541,587,563,541,541,541,541,541,563,563,563,563,587,587,587,587,0,0,0,0,2731,0,0,0,0,305,0,0,0,0,0,0,0,0,0,0,0,0,0,249856,0,0,0,192972,192972,192972,192972,192972,192972,192972,192972,192972,192972,192972,192972,192972,192972,192972,192972,0,192972,0,1,0,0,0,0,0,192972,192972,192972,192972,192972,192972,192972,192972,192972,192972,0,0,192972,0,0,0,0,0,0,0,0,0,0,1145,365,365,0,0,1148,192972,192972,192972,0,192972,192972,192972,192972,192972,0,0,0,0,0,0,0,0,0,3304,0,3180,0,0,0,0,302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,541,407,407,407,407,407,407,407,0,0,0,0,0,407,0,407,1,12290,3,0,0,0,0,0,0,0,0,0,0,0,118784,299,12290,3,78115,78115,293,0,0,0,0,0,299,300,0,302,303,304,587,0,0,740,541,587,563,541,541,541,541,541,563,563,563,563,587,587,587,587,0,0,2729,0,0,0,0,0,0,740,1184,0,0,0,0,1188,0,0,0,0,0,0,0,378,0,381,0,0,0,381,0,0,563,587,587,587,587,587,1079,1559,0,0,0,1565,0,0,0,1571,2034,0,0,0,0,1577,2036,0,0,0,0,0,0,0,397,0,0,0,0,0,397,0,0,0,0,0,1577,0,0,0,0,0,0,0,0,0,0,0,0,0,262144,0,0,0,0,0,1188,1669,0,0,0,0,0,0,0,0,0,0,0,0,3177,0,0,0,563,563,587,587,587,587,1559,2030,0,0,0,0,1565,2032,0,0,0,0,0,0,2997,0,0,0,0,0,0,0,0,0,0,1586,1587,0,0,0,0,0,0,0,0,1669,0,0,0,0,0,0,0,0,0,0,0,0,106496,0,0,0,0,0,0,2034,0,2036,0,0,0,0,0,0,0,0,0,0,0,0,0,1150976,0,0,0,0,0,563,563,563,563,2325,2652,0,0,0,0,587,587,587,587,587,587,587,587,587,587,587,587,587,2343,0,307,0,307,0,0,0,0,0,0,0,0,0,307,0,0,0,0,0,0,3011,0,0,0,0,3016,3017,0,3019,0,0,0,0,0,204800,204800,0,204800,204800,204800,204800,204800,204800,204800,204800,204800,204800,204800,204800,204800,204800,204800,205107,204800,204800,205106,205107,204800,205106,205106,204800,204800,0,0,0,0,0,0,0,0,0,122880,0,122880,122880,122880,122880,122880,12290,3,0,0,2183801,0,0,0,0,0,299,300,151552,2134016,303,304,0,212992,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172032,0,0,151552,0,0,0,0,0,0,0,0,0,0,0,0,0,303,0,0,0,0,0,3117056,0,0,0,0,0,0,0,0,2200253,0,0,0,0,0,0,678,0,0,0,0,0,0,0,0,0,0,2977,0,0,0,0,0,0,914,2126737,2126737,2126737,2126737,2126737,2425745,2433937,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,3138449,2126811,2126811,2499547,2126811,2126811,2126737,2724753,2126737,2732945,2773905,2126737,2126737,2126737,2806673,2126737,2831249,2126737,2126737,2864017,2126737,2126737,2126737,2126737,2126811,2126811,2126811,2126811,2126811,2593755,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3036123,2126811,2126811,3072987,2126811,2126811,2126811,3122139,2126811,2126737,2126737,2921361,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,3117969,2126737,0,2126811,2126811,2126811,2126811,2126811,0,0,0,0,0,0,0,0,0,0,1190,0,0,0,0,0,2126811,2425819,2434011,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3126235,2126811,2126811,2126811,2126811,2126811,2626523,2126811,2126811,2126811,2126811,2126811,2126811,2700251,2126811,2716635,2126811,2724827,2126811,2733019,2773979,2126811,0,2502656,0,0,3010560,0,0,0,0,0,0,0,0,2990080,2179072,2179072,3125248,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2125824,2125824,2125824,2125824,2125824,2592768,2125824,2125824,2125824,2125824,2126811,2126811,2806747,2126811,2831323,2126811,2126811,2864091,2126811,2126811,2126811,2126811,2921435,2126811,2126811,2126811,0,2179072,2126811,2126737,2457600,2179072,2179072,2179072,2179072,2458513,2126737,2126737,2126737,2126737,2126737,2524049,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2601873,2126737,2126737,2458587,2126811,2126811,2126811,2126811,2183168,0,0,0,0,0,0,0,0,0,0,1206,0,1208,0,0,0,0,2126737,2126737,2126737,2409361,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,0,0,2126811,2126811,2126811,2409435,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2839515,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3118043,2126811,2126811,2126811,2126811,2126811,2126811,2126811,0,0,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2462609,2466705,2126737,2126737,2126737,2642833,2126737,2126737,2126737,2126737,2126737,2126737,2720657,2126737,2126737,2126737,2126737,2126737,2126737,2126737,3040145,2126737,3064721,2126737,2126737,2126737,2126737,2126737,3101585,2769809,2778001,2782097,2798481,2823057,2126737,2126737,2126737,2884497,2126737,2913169,2126737,2126737,2126737,2126737,2126737,2126737,2626449,2126737,2126737,2126737,2126737,2126737,2126737,2700177,2126737,2716561,2126737,2126737,3134353,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,3208081,2126737,0,0,0,0,0,0,3026,541,541,541,541,541,541,541,541,541,541,1352,541,541,541,541,541,0,0,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2462683,2466779,2126811,2126811,2126811,2126811,2126811,2929627,2126811,2126811,2126811,2999259,2126811,2126811,2126811,2126811,3060699,2126811,2126811,2126811,2126811,2454491,2126811,2474971,2483163,2126811,2126811,2126811,2126811,2126811,2126811,2532315,2126811,2126811,2126811,2446299,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2552795,2769883,2778075,2782171,2798555,2823131,2126811,2126811,2126811,2884571,2126811,2913243,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3130331,2126811,2126811,3154907,3167195,3175387,2506752,2507739,2507665,2126811,2126811,3134427,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3208155,2126811,2179072,2126811,2126811,2126811,2642907,2126811,2126811,2126811,2126811,2126811,2126811,2720731,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3040219,2126811,3064795,2126811,2126811,2126811,2126811,2126811,3101659,0,0,0,2388881,2126737,2126737,2126737,2421649,2126737,2126737,2126737,2126737,2126737,2454417,2126737,2474897,2483089,2126737,2126737,2126737,2126737,2126737,2126737,2532241,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2605969,2126737,2630545,2126737,2126737,2651025,2126737,2126737,2126737,2708369,2126737,2737041,2126737,2126737,2126737,2126737,2126737,2126737,2663313,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,0,0,988,2126811,2126811,2126811,2126811,3036049,2126737,2126737,3072913,2126737,2126737,2126737,3122065,2126737,2126737,3142545,2126737,2126737,2126737,3171217,2126737,2126737,2126737,2888593,2126737,2126737,2925457,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,986,2126811,2126811,2126811,2126811,2126811,2126811,2126737,3191697,3195793,2126737,0,0,0,0,0,0,2388955,2126811,2126811,2126811,2421723,2126811,2126811,2449408,0,2535424,3031040,2859008,0,0,0,0,0,2179072,2449408,2179072,2535424,2126811,2737115,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2888667,2126811,2126811,2925531,2126811,2126811,2126811,2126811,2126811,2585563,2126811,2126811,2126811,2126811,2126811,2618331,2126811,2126811,2126811,2126811,2126811,2126811,2606043,2126811,2630619,2126811,2126811,2651099,2126811,2126811,2126811,2708443,2126811,3142619,2126811,2126811,2126811,3171291,2126811,2126811,3191771,3195867,2126811,2179072,2126811,2126737,2179072,2179072,2179072,2637824,2179072,2179072,2179072,2179072,2727936,2752512,2179072,2179072,2179072,2842624,2846720,2179072,3112960,3219456,2126737,2126737,3113873,3220369,2126811,2126811,3113947,3220443,0,0,0,0,0,0,0,415,415,0,0,0,0,0,415,0,3096576,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3223552,0,0,2126737,2126737,2417553,2126737,2126737,2126737,2126737,2929553,2126737,2126737,2126737,2999185,2126737,2126737,2126737,2126737,3060625,2126737,2126737,2126737,2126737,2933649,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,3130257,2126737,2126737,2126737,2519953,2126737,2126737,2126737,2126737,2589585,2126737,2614161,2646929,2126737,2126737,2696081,2757521,2126737,2446225,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2552721,2126737,2126737,2126737,2638737,2126737,2126737,2126737,2126737,2728849,2753425,2126737,2126737,2126737,2126737,2843537,2847633,2126737,2896785,2917265,2126737,2126737,2945937,2126737,2126737,2995089,2126737,3003281,2126737,2126737,3023761,2126737,3068817,3085201,2126737,3097489,2126737,2126737,2126737,2126737,2126737,2126737,2126737,3224465,0,0,2126811,2126811,2417627,2843611,2847707,2126811,2896859,2917339,2126811,2126811,2946011,2126811,2126811,2995163,2126811,3003355,2126811,2126811,3023835,2126811,3068891,3085275,2126811,3097563,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3224539,2179072,2126811,2126737,2126737,2126737,3031953,2126737,2126811,2450395,2126811,2536411,2126811,2610139,2126811,2859995,2126811,2126811,2126811,2126811,2126811,2524123,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2601947,2126811,2515857,2126737,2126737,2126737,2544529,2548625,2126737,2126737,2597777,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2585489,2126737,2126737,2126737,2126737,2126737,2618257,2126811,2515931,2126811,2126811,2126811,2544603,2548699,2126811,2126811,2597851,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2655195,2679771,2761691,2765787,2786267,2855899,2970587,2126811,3007451,3154833,3167121,3175313,2397147,2401243,2126811,2126811,2442203,2126811,2470875,2126811,2126811,2126811,2520027,2126811,2126811,2126811,2126811,2126811,2638811,2126811,2126811,2126811,2126811,2728923,2753499,2126811,2126811,2126811,2126811,2126811,2126811,3179483,2179072,2126811,2126737,2179072,2179072,2126737,2126737,2126811,2126811,0,0,0,0,0,0,2510848,2514944,0,0,2678784,2760704,2764800,2854912,2969600,2179072,3006464,2179072,3018752,2179072,2179072,2179072,3149824,2126737,2429841,2438033,2126737,2487185,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2655121,2679697,2761617,2765713,2786193,2855825,2970513,2126737,3007377,2126737,3019665,2126737,2126737,2126737,2126737,3150737,2126811,2429915,2438107,2126811,2487259,2126811,2126811,2589659,2126811,2614235,2647003,2126811,2126811,2696155,2757595,2126811,2126811,2126811,2126811,2933723,2126811,2126811,2663387,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2802651,2814939,2126811,3019739,2126811,2126811,2126811,2126811,3150811,2179072,3051520,2126737,3052433,2126811,3052507,0,2490368,2498560,2126811,2556891,2565083,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3138523,2940928,2941841,2941915,0,0,0,0,0,2748416,2879488,0,3180,0,0,0,0,0,0,0,647,0,0,0,0,0,0,0,0,0,2467,0,0,2470,0,0,0,2179072,2502656,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3010560,2179072,2179072,2126737,2126737,2126811,2126811,0,2486272,0,0,0,0,0,2678784,2854912,3006464,2503569,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,3011473,2126737,2126737,2126737,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2179072,2126811,2126737,2179072,2179072,2179072,2179072,2126737,2126737,2126737,2126737,2126811,2126811,2126811,2126811,0,0,0,0,0,0,0,0,0,0,0,2112,0,0,0,0,2503643,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3011547,2126811,2126811,2126811,0,0,0,2179072,2126811,2126737,2179072,2179072,2179072,2179072,2179072,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2179072,2609152,2179072,2859008,2179072,2179072,2179072,3031040,2126737,2450321,2126737,2536337,2126737,2610065,2126737,2859921,3032027,2126811,2527232,0,0,0,0,0,2179072,2527232,2179072,2179072,2179072,2179072,2179072,2126737,2126737,2802577,2814865,2126737,2839441,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,3126161,2126737,2528145,2126737,2126737,2126737,2126737,2126737,3093393,2126811,2528219,2126811,2126811,2126811,2126811,2126811,3093467,0,0,0,0,0,782,0,0,0,0,0,0,541,843,541,541,541,541,541,1796,541,541,541,541,541,541,541,541,541,541,541,2822,541,541,541,541,3026944,0,0,0,2404352,2179072,2179072,2179072,2179072,3026944,2405265,2126737,2126737,2126737,2126737,3027857,2405339,2126811,2126811,2126811,2126811,3027931,0,2539520,0,2949120,2179072,2658304,2973696,2179072,2126737,2659217,2974609,2126737,2126811,2659291,2974683,2126811,0,2711552,256e4,2179072,2560913,2126737,2560987,2126811,0,2179072,2179072,3133440,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3207168,2179072,0,0,0,0,0,0,2464,0,0,0,0,0,0,0,0,0,324,398,0,0,0,324,0,2126737,2126811,0,2179072,2126737,2126811,0,2179072,2126737,2126811,2985984,2985984,2986897,2986971,0,0,0,0,0,0,3164,0,0,3167,0,0,0,0,0,0,0,1135,0,0,0,0,0,0,0,0,0,824,0,0,0,0,0,0,0,221184,221184,0,0,0,0,0,0,0,0,0,221184,221184,0,0,221184,221184,221184,0,0,0,0,0,0,0,221184,0,0,221184,221184,221184,221184,221184,221184,221184,221184,221184,221184,221184,221184,221184,221184,221184,221184,0,0,0,0,0,0,0,0,0,0,221184,0,221184,221184,221184,221184,221184,221184,221184,221184,221184,221184,1,12290,3,0,0,0,0,0,0,0,0,0,0,0,139264,300,0,303,0,0,0,303,0,304,0,0,0,304,0,0,0,304,69632,139682,0,0,0,0,0,65536,0,0,0,0,98304,0,0,0,53248,0,0,0,0,0,2662400,0,2813952,0,0,3133440,0,98304,0,0,0,0,0,0,0,0,0,0,0,0,111051,0,0,0,0,303,0,304,0,0,0,2473984,2478080,0,0,0,0,0,0,0,0,0,159744,159744,159744,159744,159744,159744,159744,159744,159744,159744,159744,159744,159744,159744,159744,159744,163840,3121152,2179072,2179072,3141632,2179072,2179072,2179072,3170304,2179072,2179072,3190784,3194880,2179072,914,0,0,0,0,0,0,3172,3173,0,0,0,0,0,0,0,0,0,665,0,0,668,0,0,0,0,914,0,2387968,2125824,2125824,2125824,2420736,2125824,2125824,2125824,2125824,2125824,2453504,2125824,2473984,2482176,2125824,2125824,2125824,2125824,2125824,2125824,2531328,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2605056,2125824,3190784,3194880,2125824,988,0,0,0,988,0,2387968,2125824,2125824,2125824,2420736,2125824,0,2125824,2125824,2125824,2125824,2125824,0,0,0,299,0,0,0,303,0,0,0,303,119198,73728,0,0,0,0,0,65536,0,3096576,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3223552,914,0,2125824,2125824,2416640,2125824,2125824,2125824,2125824,2125824,2125824,2625536,2125824,2125824,2125824,2125824,2125824,2125824,2699264,2125824,2715648,2125824,2723840,2125824,2732032,2772992,2125824,3084288,2125824,3096576,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3223552,988,0,2125824,2125824,2416640,225890,225890,225890,225890,225890,225890,225890,225741,225741,225741,225741,225741,225906,225741,225906,1,12290,3,0,0,0,0,0,0,0,90409,90409,90409,90409,0,94506,94506,90409,90409,94506,94506,94506,94506,94506,94506,94506,94506,94506,94506,94506,94506,94506,94506,94506,94506,1,2125824,237568,2125824,2125824,2125824,2125824,2125824,0,0,0,0,0,0,0,0,0,0,1222,0,0,0,0,0,249856,249856,249856,249856,249856,249856,249856,249856,249856,249856,249856,249856,249856,249856,249856,249856,0,0,0,0,0,0,0,0,0,217088,0,0,0,0,0,0,0,0,0,0,0,0,0,304,0,0,2125824,241664,2125824,2125824,2125824,2125824,2125824,0,0,0,0,0,0,0,0,0,0,1236,0,0,0,0,0,254414,254414,254414,254414,254414,254414,254414,254414,254414,254414,254414,254414,254414,254414,254414,254414,0,0,0,0,0,0,0,12290,0,0,0,2183168,0,0,270336,0,0,299,300,0,2134016,303,304,200704,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,687,2125824,0,2125824,2125824,2125824,2125824,2125824,0,0,180224,0,0,0,0,0,0,0,663,0,0,666,667,0,0,0,0,2940928,0,0,0,0,0,2748416,2879488,0,20480,0,0,0,0,0,0,0,679,0,0,0,0,0,0,0,0,0,1129,0,0,0,0,0,0,1,12290,2113826,0,0,0,0,0,0,296,0,0,0,296,0,0,0,0,0,0,3182,0,0,0,0,3187,0,0,0,0,0,0,0,69632,73728,0,0,0,0,0,65536,0,0,0,0,266240,0,0,0,0,0,0,0,0,0,0,0,266240,0,0,0,0,0,0,0,0,0,0,1,0,0,0,266240,0,0,0,0,0,0,0,0,0,0,0,0,0,2662400,0,2813952,12290,2113826,0,0,2183168,0,0,0,0,0,299,300,0,2134016,303,304,2125824,245760,0,0,2179072,2125824,2125824,2179072,2179072,2179072,2179072,2179072,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2584576,2125824,2125824,2125824,2125824,2125824,2617344,2125824,2125824,2125824,2125824,2125824,245760,2125824,2125824,2125824,2125824,2125824,0,0,0,0,0,0,0,0,0,0,1245,0,0,0,0,0,274432,274432,274432,274432,274432,274432,274432,0,0,0,0,0,274432,0,274432,1,12290,3,0,0,0,0,0,253952,0,0,0,253952,0,0,0,0,0,0,0,0,0,0,0,0,0,1155072,0,0,0,0,0,0,12290,3,78115,78115,293,0,0,0,0,0,299,300,0,0,303,304,563,563,587,587,587,587,0,2030,0,0,0,0,0,2032,0,0,0,0,0,0,3196,0,0,0,0,0,0,0,0,0,0,3186,0,0,0,3189,0,0,0,0,2034,0,0,0,0,0,2036,0,0,0,0,0,0,0,695,0,0,0,0,365,365,365,0,0,2485,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,266240,0,0,0,1678,0,0,0,0,0,0,0,0,0,0,0,0,338,0,0,0,0,0,0,0,1669,0,0,0,0,0,0,0,0,2114,0,0,0,0,0,0,3395,541,541,541,541,3399,541,541,541,541,541,541,1346,541,541,541,541,541,541,1356,541,541,12290,3,78115,78456,293,0,0,0,0,0,299,300,0,0,303,304,541,588,564,564,564,564,564,564,564,588,588,588,541,588,588,588,588,588,588,588,588,564,564,541,564,588,564,588,1,0,0,0,0,2775,0,0,0,0,0,0,0,0,0,0,0,0,163840,0,0,0,1,12290,3,78116,293,0,0,0,0,0,0,0,0,0,0,0,0,167936,0,0,0,282624,282624,282624,282624,282624,282624,282624,282624,282624,282624,282624,282624,282624,282624,282624,282624,1,0,0,0,0,0,282624,282624,282624,282624,282624,282624,282624,282624,282624,282624,0,0,282624,0,0,0,0,0,0,0,0,0,0,1600,1601,0,0,0,0,282624,282624,282624,0,282624,282624,282624,282624,282624,0,0,0,0,0,0,0,0,0,254414,254414,254414,254414,254414,254414,254414,254414,1,2981888,2396160,0,3153920,3180,0,0,0,0,0,0,0,2740224,0,0,0,0,0,0,679,751,0,0,0,0,0,0,0,0,0,1144,0,365,365,0,1147,0,0,0,0,0,286720,286720,0,286720,286720,286720,286720,286720,286720,286720,286720,286720,0,0,0,0,0,0,0,286720,286720,286720,286720,286720,286720,286720,286720,286720,286720,286720,286720,286720,286720,286720,286720,0,3108864,3198976,0,0,3043328,0,3149824,2936832,0,2760704,3305,2437120,0,0,0,0,0,0,680,0,0,0,0,0,0,0,0,0,300,0,0,0,0,0,0,0,0,0,0,2875392,0,0,0,3386,0,0,0,0,0,0,2834432,2940928,0,0,0,0,0,2748416,2879488,0,3386,0,0,0,0,0,0,0,709,0,0,0,0,0,0,0,0,0,2048,0,0,0,0,0,0,0,0,0,309,0,0,0,0,0,308,0,308,309,0,308,308,0,0,0,308,308,309,309,0,0,0,0,0,0,308,408,309,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,781,0,0,0,309,413,0,0,69632,73728,0,0,0,0,0,65536,0,0,0,0,0,783,0,802,0,0,0,0,541,847,541,541,541,541,541,2830,2831,541,541,541,541,2834,541,541,541,541,541,541,541,3521,541,3523,541,541,3525,541,563,563,0,0,432,0,0,0,0,308,449,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,489,489,463,489,489,489,489,489,489,489,514,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,534,489,489,489,489,489,542,565,542,565,542,542,565,542,589,565,565,565,565,565,565,565,589,589,589,542,589,589,589,589,589,589,589,589,565,565,542,565,589,565,589,1,0,0,674,0,0,0,0,0,0,0,0,0,0,0,0,0,323,324,0,0,704,0,0,0,0,0,0,0,711,0,0,0,0,0,0,0,742,0,0,0,0,742,0,748,0,0,0,736,0,0,0,0,0,0,0,0,0,0,0,747,0,0,0,0,0,792,663,841,0,0,0,0,541,845,541,541,541,541,541,2217,541,541,541,541,541,541,541,541,541,541,541,1802,541,541,541,541,0,0,0,0,645,0,0,0,0,0,0,0,0,0,0,0,0,172032,0,0,0,0,0,0,0,0,765,0,0,768,0,0,0,0,774,0,0,778,0,0,0,0,0,0,3562,0,3564,541,541,541,541,541,541,541,541,541,3219,541,541,541,541,541,3224,0,0,785,0,0,0,0,789,0,0,0,0,0,0,0,793,0,0,736,0,793,0,0,0,0,648,0,0,0,0,0,0,0,807,808,0,0,0,0,808,0,0,807,0,0,0,0,0,755,0,0,816,817,0,0,0,793,0,0,0,0,0,0,0,0,0,0,0,0,221184,0,0,0,0,0,0,648,0,0,0,0,0,834,789,0,0,0,0,0,0,0,2139,0,0,0,0,0,0,0,0,0,1712,0,0,0,0,0,0,838,839,789,789,0,0,0,0,789,736,789,0,541,541,849,853,563,964,563,967,563,563,981,563,563,0,587,587,587,996,1e3,587,0,0,0,0,0,0,0,0,3180,3448,0,0,0,0,0,0,0,2465,0,0,0,0,0,0,0,0,0,2152,0,0,0,0,0,0,1093,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1135,0,0,0,0,1152,0,0,0,0,1157,0,0,0,0,0,0,0,822,0,816,0,664,0,0,0,0,0,0,0,0,1201,0,0,0,0,0,0,0,0,0,0,0,0,221184,0,221184,0,0,0,1253,0,0,0,0,0,0,0,0,0,0,0,0,0,339,340,341,541,541,1342,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2239,0,0,0,0,0,1596,0,0,0,0,0,0,0,0,0,0,0,0,233472,0,0,0,0,0,0,1640,0,0,0,0,0,0,0,0,0,0,0,0,354,355,356,357,1653,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1163,0,0,0,0,1669,0,0,0,0,0,0,1673,0,0,0,0,0,0,0,69632,73728,0,0,0,346,345,65536,344,0,1729,0,0,0,0,541,541,541,541,541,541,541,541,541,541,541,3327,541,541,1742,541,541,541,541,541,541,541,541,541,1755,541,541,541,541,541,541,541,2193,541,541,541,541,541,541,541,541,541,2557,541,541,541,541,541,541,541,541,541,1794,541,541,1797,541,541,541,541,541,541,541,541,541,541,1314,541,541,541,1318,541,541,1809,541,541,541,541,541,1814,541,541,541,541,541,541,541,1360,914,563,563,563,563,563,563,563,563,563,563,563,563,563,563,0,2328,1824,563,563,563,563,563,1831,563,563,563,563,563,1837,563,563,563,563,563,3093,563,563,563,563,563,563,563,563,563,3102,563,563,1892,563,563,563,563,563,563,563,563,563,563,1905,563,563,563,563,978,563,563,563,563,0,587,587,587,587,587,587,1997,587,587,587,587,587,587,587,587,587,1531,587,587,587,587,587,587,563,563,563,1910,563,563,563,563,563,563,563,26028,1920,587,587,587,0,1285,1469,1377,541,541,1339,541,541,563,563,1431,563,587,587,1927,587,587,587,587,587,1933,587,587,587,587,587,587,587,1529,587,587,587,587,587,587,587,587,1932,587,587,587,587,587,587,587,587,1494,587,587,587,587,587,587,587,587,587,1946,587,587,587,587,587,587,587,587,587,587,587,587,587,1513,587,587,563,563,2026,587,587,587,0,2030,0,0,0,0,0,2032,0,0,0,0,0,0,131072,0,131072,131072,131072,131072,0,131072,131072,131072,131072,131072,131072,131072,0,0,0,0,0,131072,0,131072,1,0,0,0,2042,0,0,0,0,0,0,0,0,0,0,0,0,365,365,365,0,0,2141,0,0,2148,0,0,0,0,0,0,0,0,0,0,0,0,237568,0,0,0,0,0,0,2140,541,541,541,541,541,541,541,541,541,541,541,2170,541,541,2173,541,541,541,541,541,541,2181,541,541,541,541,541,541,541,541,2841,541,541,541,541,541,541,541,541,1294,541,541,541,541,541,541,541,541,1327,541,541,541,1334,1336,541,541,541,541,2214,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2535,541,563,2258,563,563,563,563,563,563,2266,563,563,563,563,563,563,563,983,563,0,587,587,587,587,1001,587,563,2300,563,563,563,563,563,563,563,563,563,563,563,563,563,563,587,587,587,2345,587,587,587,587,587,587,2353,587,587,587,587,587,587,587,1950,587,587,587,587,587,587,587,587,1468,587,587,587,587,587,587,587,587,2387,587,587,587,587,587,587,587,587,587,587,587,587,587,587,541,587,563,2414,541,541,541,541,563,563,563,563,587,587,587,587,2030,0,2032,0,2034,0,2036,0,0,2428,0,0,0,0,0,0,0,0,0,0,1713,0,0,0,0,0,2436,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1179,2449,0,0,0,0,0,2453,0,0,0,0,0,0,0,0,0,0,1726,0,0,0,0,0,0,0,0,0,2477,0,0,0,0,0,0,0,0,0,0,0,0,245760,0,0,0,0,0,2501,0,0,0,0,0,0,0,0,0,0,0,0,0,386,338,0,541,541,541,2539,541,541,541,541,541,541,541,541,541,541,541,541,541,2198,541,541,0,0,0,563,563,563,563,563,563,563,563,563,2595,563,563,563,563,563,3238,563,563,563,563,563,563,563,563,563,563,2880,563,563,563,563,563,587,587,587,2661,587,587,587,587,587,587,587,587,587,587,587,2669,587,587,587,587,2714,587,587,587,587,587,587,541,587,563,541,541,2417,2418,563,563,2421,2422,587,587,2425,2426,0,1563,0,0,0,2735,0,0,0,0,0,0,2740,0,0,0,0,0,0,0,1102,1101,0,0,0,0,0,0,0,0,1724,0,0,0,0,0,0,0,0,1172,0,0,0,0,0,0,0,0,1187,0,0,0,0,0,0,1104,0,0,0,0,0,2763,0,0,0,0,0,0,0,0,0,0,0,2431,2432,0,0,0,0,0,0,0,0,2792,2793,0,0,0,0,0,0,0,0,0,0,2049,0,0,0,0,0,541,541,541,541,2829,541,541,541,541,541,541,541,541,541,541,2836,563,563,563,563,2876,563,563,563,563,563,563,563,563,563,563,563,0,2329,587,587,587,2884,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,1874,587,587,2933,587,587,587,587,587,587,587,587,587,587,587,587,587,1536,587,587,2955,541,2957,563,2959,587,0,0,0,0,0,0,0,0,0,0,0,0,0,0,541,541,541,541,541,541,541,587,3442,0,3444,0,0,0,0,0,3180,0,0,0,0,3452,0,0,0,0,0,796,0,0,0,0,0,0,0,0,0,0,0,0,796,0,0,0,0,3454,0,541,3457,541,3459,541,541,541,541,541,541,541,541,541,541,541,541,2585,0,0,0,563,587,3488,587,3490,587,587,587,587,587,587,587,587,587,587,587,1047,587,587,587,587,587,0,0,0,3505,0,0,0,0,0,0,0,3512,0,0,541,541,541,541,541,541,3462,541,541,541,541,541,541,541,541,541,3334,541,541,541,563,563,563,541,541,541,3517,541,541,541,541,541,541,541,541,541,541,563,563,563,563,563,563,563,563,563,563,3530,563,563,563,563,563,563,563,563,563,563,563,587,587,587,587,587,587,587,587,3544,587,587,587,587,587,587,587,587,587,587,587,0,0,0,0,541,541,541,541,563,563,310,311,312,0,0,0,0,0,0,0,0,0,0,0,0,0,669,0,0,0,0,0,421,0,0,0,0,450,0,0,0,0,0,0,0,0,304,304,304,304,0,304,304,304,0,0,0,0,450,450,421,450,450,450,450,450,450,450,450,450,450,450,450,450,450,533,450,533,533,533,450,533,533,533,533,450,543,566,543,566,543,543,566,543,590,566,566,566,566,566,566,566,590,590,590,543,590,590,590,590,590,590,590,590,566,566,616,621,590,621,627,1,960,563,563,563,563,563,563,563,563,0,587,587,587,587,587,587,587,3136,587,587,3138,587,587,587,587,587,0,0,0,0,1657,0,0,0,0,0,0,0,0,0,0,0,0,254414,0,0,0,1676,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1211,541,541,541,1810,541,541,541,541,541,541,541,541,541,541,541,1360,914,563,563,563,563,563,563,563,563,563,563,563,563,563,1378,0,0,2486,0,0,0,0,0,0,0,0,0,0,0,0,0,694,0,0,541,541,541,541,2528,541,541,541,541,2532,541,541,541,541,541,541,541,541,3218,541,541,541,541,541,541,541,541,2583,541,541,541,541,0,2586,0,0,0,0,563,563,563,563,563,563,2592,563,563,563,563,2596,563,0,587,587,587,587,587,78115,1079,0,0,0,0,0,0,0,0,0,225741,225741,225741,225741,225741,225741,225741,225741,225741,225741,225741,225741,225741,225741,225741,225741,0,0,0,0,0,0,0,2658,587,587,587,587,2662,587,587,587,587,587,587,587,587,587,587,2665,587,587,587,587,587,0,0,0,313,314,315,316,317,318,319,320,321,322,0,0,0,0,0,0,694,0,0,0,0,0,365,365,365,0,0,313,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2142208,0,0,316,0,0,0,0,0,0,0,0,0,0,0,0,0,730,0,0,0,423,431,433,422,431,0,313,431,451,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,485,490,490,501,490,490,490,490,490,490,490,490,516,516,529,529,530,530,530,530,530,530,530,530,530,530,530,516,530,530,530,530,530,544,567,544,567,544,544,567,544,591,567,567,567,567,567,567,567,591,591,591,613,591,591,591,591,591,591,591,614,615,615,613,615,614,615,614,1,734,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1238,0,0,0,0,767,0,0,0,0,0,0,0,0,0,0,0,0,266240,0,0,0,0,0,702,0,0,0,0,0,702,0,0,0,541,541,541,541,541,541,3322,541,541,541,541,541,541,541,541,1816,541,541,541,541,541,541,1360,563,563,563,968,563,563,563,563,563,0,587,587,587,587,587,587,587,3150,3151,3152,541,541,563,563,587,587,0,0,2963,0,0,0,0,0,0,0,0,3180,0,0,3389,0,0,0,0,0,1108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,308,309,0,1150,1108,0,0,0,0,0,0,0,0,0,0,0,0,0,1119,0,0,1212,0,0,0,0,0,0,0,0,0,0,0,0,0,1225,0,0,0,0,0,797,0,0,0,0,0,0,0,0,0,0,0,0,797,0,1360,914,563,563,1364,563,563,1368,563,563,563,563,563,563,563,563,985,0,587,587,587,587,587,587,1382,563,1387,563,563,1391,563,563,1394,563,563,563,563,563,563,563,984,563,0,587,587,587,587,587,1004,587,1460,587,587,587,587,587,587,587,587,1474,587,1479,587,587,1483,587,587,1486,587,587,587,587,587,587,587,587,587,587,587,587,587,1939,587,587,0,1692,0,1694,0,0,0,0,0,0,1701,0,0,0,0,0,0,0,2442,0,0,0,0,0,0,0,0,0,1173,0,0,0,0,0,0,541,541,1745,541,541,541,541,541,541,541,541,541,1757,541,541,541,541,541,541,2192,541,541,2195,541,541,541,541,541,541,541,1798,541,541,541,541,541,541,1806,541,541,1792,1793,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2824,541,0,563,563,563,563,563,563,563,563,563,563,563,563,563,1840,563,0,587,587,587,587,587,78115,1079,0,0,1083,1087,0,0,1091,587,587,587,587,1948,587,587,587,587,587,587,587,587,587,587,587,1478,587,587,587,587,587,587,587,587,1961,587,587,587,587,587,587,587,587,587,587,587,1533,587,587,587,587,0,2034,0,2036,0,0,0,0,0,0,2430,0,0,0,0,0,0,0,2454,0,0,0,0,0,0,0,0,0,2429,0,0,0,0,0,0,0,0,0,2476,0,0,0,0,0,0,0,0,0,0,0,0,365,365,365,702,0,0,0,2502,2503,0,0,0,0,0,0,0,0,0,0,0,0,1147355,0,0,0,587,587,2700,587,587,587,587,587,587,587,587,587,587,587,587,587,2004,587,587,0,0,2802,0,0,0,0,0,0,0,2806,541,541,541,541,541,541,541,2204,541,541,541,541,541,541,541,541,541,2220,541,541,541,541,541,541,541,2956,563,2958,587,2960,0,0,0,0,0,2966,0,0,0,0,0,0,0,69632,73728,0,0,0,350,348,65536,0,0,0,0,2970,0,0,0,0,0,0,0,0,0,0,0,0,365,365,208896,0,3035,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1807,541,541,3050,3051,541,541,541,541,541,541,541,541,541,541,541,541,541,2223,2224,541,563,3090,563,3092,563,563,563,563,563,563,563,563,563,563,563,563,1415,563,563,563,3117,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,1484,587,587,3132,587,3134,587,587,587,587,587,587,587,587,587,587,587,1937,1938,587,587,587,0,3192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,309,308,541,541,541,541,3228,541,541,541,541,563,563,563,563,563,563,563,563,563,945,563,563,563,563,587,3503,0,3504,0,0,0,0,0,0,0,0,0,0,0,541,541,541,541,2810,3515,541,3516,541,541,541,3520,541,541,541,541,541,541,541,563,3528,563,3529,563,563,563,3533,563,563,563,563,563,563,563,563,587,3542,587,3543,587,587,587,3547,587,587,587,587,587,587,587,587,0,0,0,0,3673,541,541,541,3675,563,563,3676,587,587,587,3678,0,0,541,541,563,563,587,587,0,541,541,3204,541,541,541,541,541,541,541,541,541,541,541,541,541,2238,2586,0,324,324,374,0,0,0,0,0,0,0,0,0,0,0,0,0,1133,0,0,0,0,434,374,0,439,445,0,452,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,491,491,502,491,491,491,491,491,491,491,491,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,545,568,545,568,545,545,568,545,592,568,568,568,568,568,568,568,592,592,592,545,592,592,592,592,592,592,592,592,568,568,545,568,592,568,592,1,587,587,587,1019,587,587,587,587,587,587,587,587,587,587,587,587,1052,587,587,587,1122,0,1124,1125,0,0,0,1127,1128,0,0,0,0,0,0,0,0,334,0,0,0,0,0,334,0,0,0,1166,1167,0,0,0,0,0,0,0,0,0,0,0,0,400,0,0,0,0,0,1228,0,0,0,0,1233,0,0,0,0,0,0,0,0,0,365,300,0,0,0,0,0,0,0,0,0,1241,0,0,0,0,1244,0,1194,0,1113,0,1250,1127,0,0,0,0,0,0,0,0,0,541,541,1274,541,541,541,541,541,541,2203,541,541,541,541,541,541,541,541,541,541,1329,541,541,541,541,541,541,541,1322,541,541,1324,541,541,541,1328,541,541,541,541,541,541,541,541,3522,541,541,541,541,541,563,563,3068,563,563,563,563,563,563,563,563,2603,563,563,563,563,563,563,563,1360,914,563,563,1365,563,563,563,563,563,563,563,563,563,563,563,587,3427,587,587,3429,563,563,563,1405,563,563,563,563,563,563,563,1414,563,563,1416,563,0,587,587,587,1051,587,78115,1079,0,0,0,0,0,0,0,0,1134592,0,0,0,0,0,0,1134592,0,0,0,0,563,563,1420,563,563,563,563,563,563,563,563,563,563,563,563,563,1437,563,563,563,563,563,1444,563,563,563,563,563,26028,1360,988,587,587,1457,587,0,0,0,0,0,0,0,3447,3180,0,0,0,0,0,0,0,1237,0,0,541,541,1273,541,1276,541,0,0,0,1656,0,0,0,0,0,0,0,0,0,0,0,0,541,846,541,541,587,587,587,1993,587,587,587,587,587,587,587,587,587,587,587,587,1496,587,587,587,563,2025,587,587,587,2029,0,2030,0,0,0,0,0,2032,0,0,0,0,0,0,1134592,0,0,0,0,0,0,0,0,0,0,1134592,0,0,0,2034,0,0,0,0,0,2036,0,0,0,0,0,2039,0,2078,0,0,0,0,0,0,0,0,0,0,0,0,0,0,331,0,0,0,0,2092,0,0,0,0,0,0,0,0,0,0,0,0,643,0,0,0,541,2172,541,541,541,541,541,541,541,541,541,541,541,541,541,541,0,0,0,541,2188,541,541,541,541,541,541,541,541,541,541,541,541,541,541,0,2240,541,541,541,541,2229,541,2231,541,541,541,541,541,541,541,0,0,0,0,0,0,1146880,0,1146880,0,0,0,0,0,0,0,0,2617344,0,0,0,0,0,2789376,0,0,0,563,563,563,563,563,563,563,563,563,2253,563,563,563,563,0,0,0,0,0,0,587,2654,587,587,587,587,587,587,3135,587,587,587,587,587,587,587,587,587,1530,587,587,587,587,587,587,2257,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,1889,2273,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2272,563,563,563,563,2316,563,2318,563,563,563,563,563,563,563,0,0,0,0,0,0,587,587,587,587,587,587,587,587,587,587,587,587,587,587,541,563,2344,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,1516,2360,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,1517,587,587,587,587,2403,587,2405,587,587,587,587,587,587,587,541,587,0,0,0,0,0,0,0,3508,0,0,0,0,0,0,541,541,541,541,541,541,3400,541,541,541,2499,0,0,0,0,0,2504,0,0,0,0,0,0,0,0,0,0,2086,2087,0,0,0,0,541,541,2526,2527,541,541,541,541,541,541,541,541,541,541,541,541,541,2237,0,0,541,541,2566,541,541,541,541,541,541,541,541,541,541,541,541,541,541,3046,541,0,0,0,563,563,563,2590,563,2591,563,563,563,563,563,563,563,1411,563,563,563,563,563,563,563,563,1429,563,563,563,563,563,563,563,563,1916,563,563,26028,1921,587,587,587,0,0,0,2761,0,0,0,0,0,0,0,0,0,0,0,0,674,0,0,0,541,541,2837,541,541,541,541,541,541,541,2843,541,541,541,541,541,541,541,2232,541,541,2235,2236,541,541,0,0,563,563,563,2885,563,563,563,563,563,563,563,2891,563,563,563,563,0,0,2329,0,0,0,587,587,587,587,587,587,587,587,587,587,2341,587,587,587,2920,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,1519,587,587,587,587,3373,587,587,541,541,563,563,587,587,0,0,0,0,0,0,0,0,0,2968,563,587,587,587,587,587,587,3493,587,587,587,587,587,587,587,587,1034,587,587,587,587,587,587,587,326,327,328,0,0,0,0,0,0,0,0,0,0,0,0,0,1161,0,0,0,0,0,325,373,328,372,0,0,0,0,0,0,0,0,0,0,2111,0,0,0,0,0,325,0,0,372,372,402,0,328,0,0,0,0,0,0,0,0,0,365,339,293,0,0,0,0,0,0,325,0,327,0,0,0,453,466,466,466,466,466,466,466,479,466,466,466,466,466,466,466,466,466,466,466,466,492,492,466,492,492,507,509,492,492,507,492,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,535,518,518,518,518,518,546,569,546,569,546,546,569,546,593,569,569,569,569,569,569,569,593,593,593,546,593,593,593,593,593,593,593,593,569,569,546,569,593,569,593,1,0,0,658,659,0,0,0,0,0,0,0,0,0,0,670,671,0,689,0,0,0,0,0,0,0,0,0,0,365,365,365,0,0,0,0,0,800,0,0,0,0,0,0,0,0,0,0,0,0,718,0,720,0,0,0,0,0,0,727,0,0,0,731,0,0,0,0,0,0,1159168,417,417,0,0,0,0,0,417,0,0,784,0,786,0,0,0,0,0,0,0,0,0,0,0,0,759,0,0,0,0,0,798,0,803,0,806,0,0,0,0,803,806,0,0,0,0,0,0,741,0,0,0,0,0,0,0,0,0,0,0,0,806,806,803,0,0,0,0,0,0,0,786,0,798,0,815,0,0,0,0,0,802,0,0,783,0,0,0,0,802,0,0,0,0,0,0,0,802,0,0,0,0,806,0,707,0,0,823,0,0,0,0,0,823,823,826,0,0,0,786,0,0,0,0,0,835,0,0,0,0,0,0,0,2480,0,0,0,0,0,0,0,0,0,1100,0,0,0,0,0,0,0,0,0,0,784,0,0,0,835,815,835,0,541,541,850,541,541,541,541,541,3052,541,541,541,541,541,541,541,541,3060,541,541,541,541,541,3217,541,541,541,541,541,541,541,3222,541,541,541,541,541,2529,541,541,541,541,541,541,541,541,541,541,541,3043,541,541,541,541,856,541,541,869,541,541,880,541,885,541,541,893,896,901,541,909,563,563,966,969,974,563,982,563,563,0,587,587,587,997,587,1003,587,587,1016,587,587,1027,587,1032,587,587,1040,1043,1048,587,1056,587,0,0,0,0,0,0,3507,0,0,0,0,0,0,0,541,541,541,541,541,3031,541,541,541,541,0,0,0,1110,0,0,0,0,0,0,0,1117,0,0,0,0,0,0,0,69632,73728,0,0,0,421,0,65536,0,0,1137,1138,0,0,0,0,1142,0,0,0,365,365,0,0,0,0,0,0,769,0,0,0,775,776,0,0,0,0,0,0,0,69632,73728,0,0,0,374,0,65536,0,0,1165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,515,522,0,0,1182,741,0,0,0,1134,0,0,0,0,0,0,0,0,0,367,0,0,0,0,0,0,541,541,541,1281,541,541,541,541,541,541,1296,541,541,541,1301,541,541,541,541,541,3229,541,541,541,563,563,563,563,563,563,563,941,563,563,563,563,563,563,1360,914,563,563,563,563,563,563,563,563,563,563,1373,563,563,563,563,563,3249,563,3251,563,563,563,563,563,563,563,563,1852,563,563,563,563,563,563,563,563,563,563,1388,563,563,563,1393,563,563,563,563,563,563,563,563,1451,26028,1360,988,587,587,587,587,587,1485,587,587,587,587,587,587,587,587,587,587,587,587,587,1500,1540,587,587,0,541,587,563,541,541,541,541,541,563,563,563,563,563,563,3477,563,563,563,563,563,563,563,563,1396,563,563,563,563,563,563,563,0,0,1607,1608,1609,0,1611,1612,0,0,0,0,1617,0,0,0,0,0,0,770,0,0,773,0,0,777,0,0,0,0,0,0,796,0,0,0,0,0,541,541,541,541,541,541,563,563,563,563,563,563,933,563,563,947,563,563,563,563,0,0,1639,0,0,1642,0,1644,0,0,0,0,0,1650,1651,0,0,0,0,0,805,0,0,692,0,0,672,0,692,0,810,0,1667,0,0,1669,0,0,0,0,1671,1672,0,0,0,0,0,0,0,2491,2492,0,0,0,0,0,0,0,0,0,2686976,2736128,0,0,2531328,2707456,0,0,0,0,0,1708,0,0,1711,0,0,0,0,0,1715,0,0,0,0,0,0,2134016,0,0,0,0,0,0,0,0,1138688,0,1719,1720,0,0,0,0,0,0,0,0,0,0,0,0,1711,0,0,0,1731,1585,1585,1733,541,1735,541,1736,1737,541,1739,541,541,541,541,541,1310,541,541,541,541,541,541,541,1317,541,541,541,541,541,1748,541,541,541,541,541,541,541,541,541,1759,541,1743,541,541,541,541,541,541,541,541,541,1756,541,541,541,541,541,541,541,3333,541,541,541,541,541,563,563,563,922,926,563,563,563,563,563,563,952,563,957,1760,541,541,541,541,1764,541,1766,541,541,541,541,541,541,541,541,541,889,541,541,541,541,907,541,1774,1775,1777,541,541,541,541,541,541,541,1785,1786,1787,541,541,1790,1791,541,541,541,541,541,541,541,1799,541,541,541,1803,541,541,541,541,541,541,2530,541,541,541,541,541,541,541,541,541,541,1315,541,541,541,541,1320,541,541,541,541,1811,541,541,541,541,541,541,541,541,541,1822,1360,914,563,563,563,563,563,563,563,563,563,563,563,563,563,1379,0,1827,563,1829,563,1830,563,1832,563,1834,563,563,563,1838,563,563,563,563,1390,563,563,563,563,563,563,563,563,563,563,563,2652,0,587,587,587,563,1859,563,1861,563,563,563,563,563,563,563,563,1869,1870,1872,563,0,587,587,1042,587,587,78115,1079,0,0,0,0,0,0,0,0,307,307,307,0,0,0,0,0,1907,563,563,563,563,563,563,563,563,563,1918,26028,0,1923,587,1925,587,1926,587,1928,587,1930,587,587,587,1934,587,587,587,587,587,587,587,3366,587,587,587,587,3367,3368,587,587,587,587,587,1947,587,587,587,587,1951,587,587,587,587,1955,587,1957,587,587,1976,1977,1978,587,587,1981,1982,587,587,587,587,587,587,587,1999,2e3,587,587,587,587,587,587,587,2015,2016,2017,541,2019,541,541,563,2023,1990,587,587,587,1994,587,587,587,587,587,587,587,2003,587,587,587,0,1288,1472,1380,541,541,541,541,541,563,563,563,563,3475,563,563,563,563,563,563,563,563,563,563,2267,563,563,563,563,563,563,2024,563,1982,587,2028,587,0,2030,0,0,0,0,0,2032,0,0,0,0,0,0,2134016,0,0,0,0,0,0,0,746,0,0,0,0,0,2043,0,0,2046,2047,0,0,0,2051,0,0,0,0,0,0,800,0,0,0,0,0,0,0,800,0,0,0,0,541,541,541,541,2090,0,0,0,0,2094,0,0,0,0,0,0,0,0,0,0,0,2456,0,0,0,0,0,0,0,0,1669,0,0,0,0,0,0,0,2113,0,0,2116,0,0,2119,0,0,0,0,0,0,2126,0,2128,0,0,0,0,0,0,0,69632,73728,0,370,370,0,0,65536,370,0,0,0,0,2137,0,0,0,0,0,0,0,0,0,0,0,0,1159168,0,0,0,0,2047,0,2147,0,0,0,0,0,0,0,0,0,0,0,0,1103,1104,1105,1106,0,2158,0,0,541,541,541,541,541,541,541,541,541,541,541,541,541,3329,541,541,541,2174,541,2176,541,541,541,541,541,541,2184,541,2186,541,541,541,541,541,3332,541,541,541,541,541,541,541,563,563,563,3069,563,563,563,563,563,563,563,2212,541,541,541,541,541,541,2219,541,541,541,541,541,541,541,541,541,1312,541,541,541,541,541,541,563,563,2259,563,2261,563,563,563,563,563,563,2269,563,2271,563,563,563,563,1422,563,563,563,563,563,563,563,563,563,563,1438,587,587,2346,587,2348,587,587,587,587,587,587,2356,587,2358,587,587,0,0,0,3634,0,3636,541,541,541,541,541,541,541,563,563,921,563,563,563,563,940,944,950,563,955,563,563,2261,541,2416,541,541,563,2420,563,563,587,2424,587,587,2030,0,2032,0,0,0,2452,0,0,0,0,0,0,0,0,0,0,0,0,1132,0,0,0,0,0,2461,0,0,0,0,0,2466,0,2468,2469,0,0,0,0,0,0,0,69632,73728,0,420,420,0,0,65536,420,0,0,0,0,2488,0,0,0,0,0,0,0,0,0,0,0,0,2179072,2179072,2179072,2179072,0,0,0,0,2516,2468,0,0,0,0,0,2521,0,0,0,541,541,541,541,541,3321,541,541,541,3325,541,541,541,541,541,541,1749,541,541,541,541,541,541,541,541,541,541,2558,541,541,541,541,541,2563,541,541,541,2568,541,541,541,541,541,541,541,2575,541,541,541,541,541,541,2542,541,2544,541,541,541,541,541,541,541,541,563,3411,563,563,3413,563,563,563,541,541,541,541,2580,541,541,541,541,541,541,541,541,0,2586,0,0,0,0,0,812,0,809,792,0,0,814,0,667,0,788,0,0,0,563,563,563,563,563,563,563,563,2594,563,563,563,563,0,2652,0,0,0,0,587,587,587,587,587,587,587,587,587,587,587,587,2342,587,563,2624,563,563,563,563,2628,563,563,563,2633,563,563,563,563,563,563,2629,563,563,563,563,563,563,2636,563,563,563,563,2640,563,563,563,563,563,563,563,563,2646,563,563,563,563,0,2652,0,0,0,0,587,587,587,2656,587,2657,587,587,2660,587,587,587,587,587,587,587,587,587,587,587,587,587,2383,587,587,587,587,2672,587,2674,587,587,587,587,587,587,587,587,587,587,587,1970,587,587,587,587,587,2699,587,587,587,587,587,587,587,2706,587,587,587,587,587,587,587,3375,541,3376,563,3377,587,0,0,0,587,587,2712,587,587,587,587,587,587,587,587,541,587,563,541,541,541,541,563,563,2800,2801,0,0,0,0,0,0,0,0,0,541,541,541,541,541,541,541,541,541,3402,2992,0,0,0,0,0,0,0,0,0,0,0,2992,0,0,0,0,0,0,840,0,0,0,0,0,541,541,541,541,541,541,2166,541,541,541,541,541,0,3022,0,0,0,3025,541,541,541,541,541,541,3032,541,541,541,541,541,541,2570,541,541,541,541,2574,541,541,541,541,541,541,1286,541,541,541,541,541,541,541,541,541,541,1818,541,541,541,541,1360,541,541,3036,541,541,541,541,541,541,541,3042,541,541,541,541,541,541,541,2531,541,541,541,541,541,541,541,541,541,563,3230,563,563,563,3233,563,3048,541,541,541,541,541,541,541,541,541,541,3057,3059,541,541,541,541,541,541,2582,541,541,541,541,541,541,0,2586,0,3062,541,3064,3065,541,563,563,563,563,563,563,3072,563,563,563,563,563,1425,563,563,563,563,563,563,563,563,563,563,2889,563,563,563,563,563,563,563,3076,563,563,563,563,563,563,563,3082,563,563,563,563,563,3088,563,563,3091,563,563,563,563,563,563,563,563,3098,3100,563,563,563,563,563,3342,563,563,563,563,563,563,563,563,563,563,2645,563,563,563,563,563,563,563,3104,563,3106,3107,563,587,587,587,587,587,587,3114,587,587,587,0,1544,1545,1546,541,541,1548,541,541,563,563,1552,563,587,587,3118,587,587,587,587,587,587,587,3124,587,587,587,587,587,587,1998,587,587,587,587,587,587,587,587,587,3551,587,587,3553,587,0,0,3130,587,587,3133,587,587,587,587,587,587,587,587,3140,3142,587,587,0,0,3633,0,0,0,541,541,3638,541,541,541,3642,563,587,587,3146,587,3148,3149,587,541,587,563,541,3154,563,3156,587,3158,0,0,0,0,0,3181,0,3183,0,0,0,0,0,0,0,3190,0,0,0,3193,3194,0,0,0,0,0,0,0,0,0,0,0,0,2200252,2200252,2200252,0,563,563,563,563,3237,563,563,563,563,563,563,563,563,563,563,563,1400,563,563,563,563,563,563,563,3248,563,563,563,563,563,563,563,563,3256,563,563,563,563,563,3352,563,563,563,563,587,587,587,587,587,3358,563,563,563,587,587,587,3261,587,587,587,587,587,587,587,3266,587,0,0,0,0,0,3506,0,0,3509,0,0,0,0,0,541,541,541,541,3662,541,563,563,563,563,3666,563,0,3310,0,0,3313,0,0,0,0,0,0,0,0,0,0,0,0,2200253,151552,2200253,0,587,587,587,3372,587,587,587,541,541,563,563,587,587,0,0,0,0,0,0,0,0,2967,0,0,0,0,0,0,3383,3384,0,3180,0,0,0,0,0,3392,0,0,0,0,0,1097,0,0,0,0,0,0,0,0,0,0,331,382,384,0,0,0,563,3417,563,563,563,563,563,563,563,563,563,587,587,587,587,587,587,587,3115,587,587,587,587,587,587,3433,587,587,587,587,587,587,587,587,587,541,563,3472,563,3474,563,563,563,563,563,563,563,563,563,563,563,563,3243,563,563,563,3470,563,563,563,563,563,563,563,563,563,563,563,563,563,563,3485,563,563,563,563,3532,563,563,563,563,563,563,563,563,563,587,587,3110,587,587,587,587,587,587,587,587,587,587,587,3546,587,587,587,587,587,587,587,587,587,3555,3556,0,0,0,3559,0,0,0,0,0,3565,3566,3567,541,541,541,3570,541,3572,541,541,541,541,3577,3578,3579,563,563,563,3582,563,3584,563,0,587,587,1044,587,587,291,1079,0,0,1082,1086,0,0,1090,563,563,563,3589,3590,3591,3592,587,587,587,3595,587,3597,587,587,587,587,587,1464,587,587,587,1473,587,587,587,587,587,587,1949,587,587,587,587,587,587,587,587,587,2949,587,587,587,541,587,563,587,3602,0,0,0,0,0,0,0,0,0,0,541,541,541,541,541,541,1738,541,541,541,563,3644,563,563,563,3648,563,587,587,3650,587,587,587,3654,587,0,0,0,0,0,0,0,0,3180,0,3449,0,0,0,0,0,0,0,69632,73728,266240,0,0,0,0,65536,0,0,0,0,329,330,0,0,0,0,0,0,0,0,0,0,0,349,0,0,0,0,0,369,0,0,0,0,0,0,0,0,0,0,0,0,0,0,686,0,0,0,0,369,0,0,0,377,379,0,0,0,0,0,0,0,0,1099,0,0,0,0,0,0,0,0,1115,0,0,0,0,0,0,0,0,0,3185,0,0,0,0,0,0,0,0,412,0,0,0,412,69632,73728,0,369,369,0,424,65536,369,0,0,0,369,424,499,503,499,499,508,499,499,499,508,499,424,424,0,330,424,0,0,424,424,0,0,0,0,0,0,0,0,1156,0,0,0,0,0,0,0,0,664,0,0,0,0,0,0,0,0,680,681,0,0,0,0,0,0,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,547,570,547,570,547,547,570,547,594,570,570,570,570,570,570,570,594,594,594,547,594,594,594,594,594,594,594,594,570,570,547,570,594,570,594,1,587,587,587,1020,587,587,587,587,587,587,587,587,587,587,587,587,1954,587,587,587,0,0,1109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1215,0,0,0,0,0,0,0,0,0,0,0,1226,541,1279,541,541,541,541,541,1291,541,541,541,541,541,541,541,541,541,1351,541,541,541,541,541,541,1360,914,563,563,563,563,563,563,563,563,1371,563,563,563,563,563,563,2643,563,563,563,563,563,563,563,563,563,1866,563,563,563,563,563,563,1383,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2286,587,587,1992,587,587,587,587,587,587,587,587,587,587,587,587,587,2411,541,587,563,563,3677,587,587,587,0,0,541,541,563,563,587,587,0,541,3203,541,541,541,3206,541,541,541,541,541,541,541,541,541,541,1313,541,541,541,541,541,425,425,0,0,425,440,0,425,425,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,493,493,467,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,548,571,548,571,548,548,571,548,595,571,571,571,571,571,571,571,595,595,595,548,595,595,595,595,595,595,595,595,571,571,548,571,595,571,595,1,0,1213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,732,0,0,0,0,0,1695,0,0,0,0,0,0,0,0,0,0,0,360,0,0,0,0,0,0,0,0,2093,0,0,0,0,0,0,0,0,0,0,0,365,365,0,0,0,2157,0,0,0,541,541,541,541,541,541,541,541,541,541,541,541,3328,541,2201,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2200,563,2415,541,541,541,2419,563,563,563,2423,587,587,587,0,0,0,0,0,0,541,541,541,541,541,541,541,563,3067,563,563,563,563,563,563,563,563,563,3253,563,563,563,563,563,563,0,2460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,748,0,0,0,0,0,2791,0,0,0,0,0,0,0,0,0,0,0,365,365,1146,0,0,2943,587,587,587,587,587,587,587,587,587,587,587,587,541,587,563,541,541,0,0,0,0,2971,0,0,0,2975,0,0,0,0,0,2981,0,0,0,0,0,1128,0,0,0,0,0,1233,0,0,0,1265,0,0,0,2994,0,2996,0,0,0,0,0,0,0,0,3004,0,0,0,0,0,1169,0,1171,0,0,0,0,1176,0,0,0,0,0,0,1643,0,0,0,0,0,0,0,0,0,0,2520,0,0,0,0,541,0,0,0,0,3009,0,0,0,0,0,0,0,0,0,0,0,383,0,0,0,387,541,3063,541,541,541,3066,563,563,563,563,563,563,563,563,563,563,3083,563,563,563,563,563,563,563,3105,563,563,563,3108,587,587,587,587,587,587,587,587,587,1509,587,587,587,587,587,587,3144,587,587,3147,587,587,587,541,587,563,541,541,563,563,587,587,0,0,3295,0,0,0,0,0,0,0,0,2766,0,0,0,0,0,0,0,0,2151,0,0,0,0,0,0,0,0,2506,0,0,0,0,0,2512,0,0,0,0,0,0,3195,0,0,0,0,0,0,0,0,0,0,0,2782,0,0,0,0,541,541,541,541,3216,541,541,541,541,541,541,541,3221,541,3223,541,541,541,541,541,3408,541,541,3410,563,563,563,563,3414,563,563,563,563,1446,1447,563,563,563,26028,1360,988,587,587,587,587,587,587,3671,0,0,0,541,541,541,3674,563,563,563,563,563,587,587,3260,587,587,587,587,587,587,587,587,587,587,3274,587,587,587,587,587,587,3280,587,587,587,587,587,587,587,587,587,587,587,541,587,563,541,2722,563,3350,563,563,563,563,563,563,563,563,587,587,587,587,587,587,587,587,3655,587,587,587,587,3363,587,587,587,587,587,587,587,587,587,3369,587,0,0,0,541,587,563,541,541,541,541,541,563,563,563,563,563,3071,563,563,563,563,563,0,0,0,0,541,541,3660,3661,541,541,563,563,3664,3665,563,563,563,563,1423,563,563,1430,563,563,563,563,563,563,563,563,2631,563,563,563,563,563,563,563,587,587,3668,3669,587,587,0,0,0,0,541,541,541,541,563,563,563,924,928,931,563,939,563,563,563,954,956,959,0,0,690,691,0,0,0,0,696,0,0,0,365,365,365,0,0,0,0,0,1185,0,0,0,0,0,0,0,0,0,0,0,3180,0,0,0,0,0,0,829,0,0,0,0,0,0,0,0,0,758,0,0,0,0,0,0,758,0,0,0,0,0,758,758,910,541,563,563,563,563,927,563,563,563,563,563,563,563,563,563,1432,563,563,1436,563,563,563,983,0,587,587,587,587,1057,78115,1079,0,0,0,0,0,0,0,0,1220,0,0,0,0,0,0,0,0,0,282624,282624,282624,282624,282624,282624,282624,282624,587,1521,587,587,587,587,587,587,587,587,587,587,587,587,587,587,1514,587,0,0,0,1721,0,0,0,0,0,0,0,0,0,0,0,0,1193,0,0,0,0,2040,0,0,0,0,0,0,0,0,0,0,0,0,0,0,749,0,2171,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2211,3288,541,3290,563,3292,587,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3514,468,468,468,486,494,494,486,494,494,494,494,494,494,494,494,519,527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,536,527,527,527,527,527,549,572,549,572,549,549,572,549,596,572,572,572,572,572,572,572,596,596,596,549,596,596,596,596,596,596,596,596,572,572,549,572,596,572,596,1,795,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1652,0,818,0,0,0,795,0,0,818,0,0,0,0,0,818,818,0,0,0,0,795,0,0,0,0,0,0,836,791,0,0,836,857,541,865,541,541,541,541,541,541,541,541,541,541,541,541,541,541,3527,563,911,541,563,563,563,563,563,930,563,938,563,563,563,563,563,563,1850,563,563,563,563,563,563,563,563,563,0,587,587,587,587,587,587,587,1012,587,587,587,587,587,587,587,587,587,587,587,587,587,1058,984,0,587,587,587,1077,1058,78115,1079,0,0,0,0,0,0,0,0,1243,0,0,0,0,0,0,0,0,1259,0,0,0,1263,0,0,0,0,0,0,0,1139,1140,0,0,0,0,0,365,365,0,0,0,0,0,0,1113,0,0,0,0,0,0,0,0,0,0,2071,0,0,0,0,0,1180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1705,1340,541,541,1344,541,541,541,541,541,1350,541,541,541,1357,541,541,541,541,541,1812,541,541,541,541,541,541,541,541,541,1360,1403,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2638,563,563,1442,563,563,563,1449,563,563,26028,1360,988,587,587,587,587,587,587,3272,587,587,587,587,587,587,587,587,3278,587,587,1487,587,587,587,587,587,587,587,1495,587,587,587,587,587,587,2365,587,587,587,587,587,587,587,587,587,2691,587,587,587,587,587,587,587,587,587,1524,587,587,1528,587,587,587,587,587,1534,587,587,587,587,587,1492,587,587,587,587,587,587,587,587,587,587,1510,587,587,587,587,587,1541,587,587,0,541,587,563,541,541,541,541,541,563,563,563,563,563,3476,563,563,563,3480,563,563,563,563,563,563,2863,563,563,2867,563,563,563,563,563,563,1409,563,563,1413,563,563,563,563,563,563,1448,563,563,26028,1360,988,587,587,587,587,0,0,0,1595,0,0,0,0,0,0,0,0,0,0,0,0,1223,0,0,0,0,0,1655,0,0,0,0,0,0,0,0,0,1664,0,0,0,0,0,0,1126,0,0,0,1130,1131,0,0,0,0,0,0,0,2818048,2846720,0,2916352,0,0,3002368,0,0,1718,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2053,1702,0,0,0,0,0,541,541,541,541,541,541,541,541,541,541,3326,541,541,541,563,563,563,1893,563,563,563,563,563,563,1901,563,563,563,563,563,563,2887,563,563,563,2890,563,2892,563,563,563,587,1944,587,587,587,587,587,587,587,587,587,587,587,587,587,587,1940,587,587,1974,587,587,587,587,1980,587,587,587,587,587,587,587,587,1989,2007,2009,587,587,587,587,587,541,587,563,541,541,541,541,563,563,563,563,587,587,587,587,2030,0,2032,0,0,2079,0,0,0,2082,0,0,0,0,0,2088,0,0,0,0,0,0,1141,0,1143,0,0,365,365,0,0,0,0,0,0,1154,0,0,0,0,0,1160,0,1162,0,2104,0,0,0,0,0,0,0,0,0,0,0,0,0,2115,0,0,0,0,0,1192,0,0,0,0,0,0,0,0,0,0,0,176128,176128,176128,176128,176128,176128,176128,0,0,563,563,563,563,563,563,2250,563,563,563,563,563,563,563,1851,563,563,563,563,1855,563,563,563,587,587,587,587,2349,587,587,587,587,587,587,587,587,587,587,587,1985,587,587,1988,587,2262,541,541,541,541,563,563,563,563,587,587,587,587,0,0,0,0,0,2732,0,2450,0,0,0,0,0,0,0,0,2455,0,0,2458,0,0,0,0,0,0,2134016,0,0,0,0,0,0,57344,0,0,0,0,0,0,2748,0,0,0,0,0,0,0,0,0,0,192972,192972,192972,192972,192972,192972,192972,0,0,0,0,2462,0,0,0,0,0,0,0,0,0,0,0,541,541,541,2809,541,2473,0,0,0,0,0,0,0,2481,0,0,0,2483,0,0,0,0,0,0,1170,0,0,0,0,0,0,0,0,0,0,2989,0,0,0,0,0,0,2500,0,0,0,0,0,0,0,0,0,0,2510,0,0,0,0,0,0,1186,0,0,0,1191,0,0,0,0,1107,0,0,0,0,0,0,0,0,0,0,0,758,0,0,0,0,0,0,0,2524,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2536,541,541,2552,541,541,541,541,541,541,541,541,541,541,541,541,541,905,541,541,2564,541,541,541,541,541,541,2571,541,541,541,541,541,541,541,541,541,1768,541,541,541,541,541,541,541,2578,541,541,541,2581,541,541,541,541,541,541,541,0,0,0,0,0,0,1203,0,0,0,0,0,0,0,0,0,0,813,0,0,0,0,0,0,0,0,563,2588,563,563,563,563,563,563,563,563,563,563,563,1903,1904,563,563,563,2611,563,563,563,563,563,563,2616,563,563,563,563,563,563,563,2622,587,587,587,587,2702,587,587,587,587,587,587,587,587,587,587,2710,587,587,587,2713,587,587,587,587,587,587,587,2718,2719,2720,541,541,541,541,541,2177,541,541,541,541,541,541,541,541,541,541,541,541,2845,541,541,541,2758,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2103,0,2773,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1120,0,0,0,2789,0,0,0,0,2794,0,0,0,2796,0,0,0,0,0,0,0,69632,73728,316,317,317,422,423,65536,430,541,541,541,541,2814,541,541,541,541,541,541,541,541,541,541,541,541,1333,541,541,541,541,541,2848,541,541,541,541,541,541,0,0,563,563,563,2856,563,0,587,587,1047,587,587,78115,1079,0,0,0,0,0,0,0,0,1159168,365,0,0,0,0,0,0,563,563,563,563,2861,563,563,563,563,563,563,563,563,563,563,563,2294,563,563,563,563,563,563,563,563,2897,563,563,563,563,563,563,0,0,587,587,587,587,587,587,587,2338,587,587,587,587,587,587,587,3122,587,587,587,587,587,587,587,587,1036,587,587,587,587,1054,587,587,2905,587,587,587,587,587,2910,587,587,587,587,587,587,587,587,587,1935,587,587,587,587,1941,587,3006,0,0,0,0,3010,0,0,0,0,3015,0,0,0,0,0,0,0,2749,0,0,0,0,0,0,0,0,0,697,698,0,365,365,365,0,3191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2145,3300,0,0,0,0,0,0,0,0,0,0,3180,0,0,0,0,0,0,0,69632,73728,163840,0,0,0,0,65536,0,563,563,563,3340,563,563,563,563,563,563,563,563,563,563,563,563,2283,563,563,563,563,563,563,3351,563,563,563,563,563,563,587,587,587,587,587,587,587,587,587,587,587,587,587,3359,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,1942,3370,587,587,587,587,587,587,541,541,563,563,587,587,0,0,0,0,3297,0,0,0,0,0,0,0,0,0,3394,0,541,541,541,541,541,541,541,541,541,541,541,541,3211,541,541,3486,587,587,587,587,587,587,587,587,3495,587,3497,3498,587,3500,587,0,0,0,541,587,563,541,541,541,904,541,563,563,563,977,3502,0,0,0,0,0,0,0,0,0,0,0,0,0,0,541,541,541,854,541,541,3612,541,3613,541,541,541,563,563,563,563,563,563,3619,563,0,996,1075,1041,587,587,78115,1079,0,0,1081,1085,0,0,1089,3620,563,563,563,563,587,587,587,587,587,587,3627,587,3628,587,587,0,3603,0,0,0,0,0,0,0,0,541,541,3610,541,563,563,587,587,587,587,0,0,541,541,563,563,587,587,3683,3684,3685,3686,0,541,563,587,0,541,563,587,0,541,563,587,0,0,0,0,0,0,0,0,3180,0,0,0,0,0,0,0,550,597,573,573,573,573,573,573,573,597,597,597,550,597,597,597,597,597,597,597,597,573,573,550,573,597,573,597,1,0,0,0,737,0,0,0,0,0,0,0,0,0,0,0,0,1237,0,0,0,0,0,2041,0,0,0,0,0,0,0,0,0,0,0,0,0,1194,1196,0,403,0,0,0,0,381,0,69632,73728,0,0,0,0,426,65536,0,0,0,0,0,1202,0,0,0,0,0,0,0,0,0,0,0,2444,2445,0,0,2448,426,426,0,0,426,0,446,426,426,469,469,469,476,469,469,469,469,469,469,469,469,469,476,469,469,469,469,469,469,469,469,483,469,495,495,469,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,538,551,574,551,574,551,551,574,551,598,574,574,574,574,574,574,574,598,598,598,551,598,598,598,598,598,598,598,598,574,574,551,574,598,574,598,1,0,0,0,0,660,661,0,0,0,0,0,0,0,0,0,0,0,3001,0,0,0,0,0,0,0,0,661,0,0,0,0,0,0,0,0,0,0,0,661,0,0,0,0,0,827,0,0,0,661,0,0,0,0,0,0,0,0,0,0,0,3176,0,0,0,0,0,0,0,729,0,742,661,0,0,0,0,0,541,844,541,541,541,541,541,2191,541,541,541,541,541,541,2197,541,2199,541,541,859,541,541,541,541,541,541,541,541,541,541,897,541,541,541,541,541,541,2817,541,2819,541,541,541,541,541,541,541,541,2572,541,541,541,541,541,541,541,541,1349,541,541,541,541,541,541,541,541,1752,541,541,541,541,541,541,541,541,1767,541,541,541,541,541,541,541,541,1782,541,541,541,541,541,541,541,541,1815,1817,541,541,541,541,541,1360,563,563,563,970,563,563,563,563,563,0,587,587,990,587,587,587,587,587,1526,587,587,587,587,587,587,587,587,587,587,1953,587,587,587,587,587,1006,587,587,587,587,587,587,587,587,587,587,1044,587,587,587,587,587,587,3285,587,587,587,587,587,587,541,587,563,1094,0,0,0,0,0,0,0,0,0,1101,1102,0,0,0,0,0,0,0,69632,73728,167936,0,0,0,0,65536,0,0,0,0,1229,0,0,0,0,0,0,0,0,0,0,0,0,1247,0,0,0,0,0,0,0,1102,0,0,0,0,1260,1261,0,0,1101,0,0,0,0,0,0,2134756,0,0,0,0,0,0,0,0,0,0,1116,0,0,0,0,0,541,1306,541,541,541,541,541,541,541,541,541,541,541,541,541,541,0,2241,1360,914,563,1363,563,563,563,563,563,563,563,563,563,563,563,1377,1384,563,563,563,563,563,563,563,563,563,1398,563,563,563,563,563,563,3079,563,563,563,563,563,563,563,563,563,0,587,587,989,587,587,587,1418,563,563,563,563,563,563,563,1431,563,563,563,563,563,563,563,1897,563,563,563,563,563,563,563,563,1395,563,563,563,563,563,563,563,587,587,1523,587,587,587,587,587,587,587,587,587,587,587,1537,587,0,0,0,541,587,563,541,541,541,1067,911,563,563,563,1072,563,587,587,1523,587,587,1079,0,0,0,0,0,0,0,0,0,0,2781,0,0,0,0,0,541,541,541,1746,1747,541,541,541,541,1754,541,541,541,541,541,541,541,1290,541,1295,541,541,1299,541,541,1302,541,541,541,541,1795,541,541,541,541,541,541,541,541,541,541,541,541,1335,541,541,541,1825,563,563,563,563,563,563,563,563,563,563,563,563,563,563,1841,1842,563,563,563,563,1849,563,563,563,563,563,563,563,563,563,563,3347,563,563,563,563,3348,1890,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2649,587,1945,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2372,587,587,1959,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2384,2385,587,587,587,587,2012,587,587,541,587,563,541,541,541,541,563,563,587,587,2961,0,0,2964,2965,0,0,0,0,0,0,0,2505,0,0,0,0,0,0,0,0,0,387,0,0,0,0,0,387,0,0,0,2054,0,2055,0,0,0,0,0,0,0,0,0,2064,541,541,541,541,2216,541,541,541,541,541,541,2221,541,541,541,541,541,541,1285,1292,541,541,541,541,541,541,541,541,541,1800,541,541,541,1805,541,541,541,2226,541,541,541,541,541,541,541,541,541,541,541,541,0,0,563,563,563,563,563,563,563,563,2302,563,563,563,563,563,563,2307,563,563,563,563,563,563,3080,563,563,563,563,563,563,563,563,563,1883,563,563,563,563,563,563,563,2313,563,563,563,563,563,563,563,563,563,563,563,563,0,0,587,587,587,587,587,587,2389,587,587,587,587,587,587,2394,587,587,587,587,587,587,2377,587,587,587,587,587,587,587,587,587,1952,587,587,587,587,1956,587,587,2400,587,587,587,587,587,587,587,587,587,587,587,587,541,587,0,0,0,541,587,563,541,541,895,541,541,563,563,968,563,0,587,587,587,587,587,78115,1079,0,0,1082,1086,0,0,1090,0,2437,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1178,0,587,2671,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2931,587,0,0,0,2736,0,0,0,0,0,0,0,0,0,0,0,0,1588,1589,0,0,2787,0,0,0,0,0,0,0,0,0,0,0,2797,0,0,0,0,0,0,1204,0,0,0,0,0,0,0,0,0,0,1631,0,0,0,0,0,541,541,541,2813,541,541,541,541,541,541,2821,541,541,541,541,541,541,541,2555,541,541,541,541,541,541,541,2562,563,563,563,2860,563,563,563,563,563,563,2868,563,563,563,563,563,563,3094,563,563,3096,563,563,563,563,563,563,1880,1881,1882,563,563,1885,1886,563,563,563,0,0,3008,0,0,0,0,0,0,0,0,0,0,0,0,0,1197,0,0,541,541,3227,541,541,541,541,541,541,563,563,563,563,563,563,563,3073,563,563,563,3571,541,3573,541,541,541,563,563,563,563,563,563,563,3583,563,3585,0,0,0,0,541,3659,541,541,541,541,563,3663,563,563,563,563,563,1878,563,563,563,563,1884,563,563,563,563,563,563,2864,563,2866,563,563,563,563,563,563,563,3354,563,563,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,1057,587,3667,587,587,587,587,0,0,0,0,541,541,541,541,563,563,915,563,563,563,563,563,563,946,563,563,563,563,563,1427,563,563,563,563,563,563,563,563,563,563,3535,563,563,563,563,563,563,587,587,587,587,3112,587,587,587,587,3116,470,470,470,470,454,454,470,454,454,454,454,454,454,454,454,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,552,575,552,575,552,552,575,552,599,575,575,575,575,575,575,575,599,599,599,552,599,599,599,599,599,599,599,599,575,575,552,575,599,575,599,1,541,860,541,541,874,541,541,541,541,541,541,541,541,541,541,541,541,1770,541,541,541,1007,587,587,1021,587,587,587,587,587,587,587,587,587,587,587,587,1971,587,587,587,0,1123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1184,1184,1251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2156,0,0,0,1268,0,0,0,0,0,0,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1360,541,541,541,1323,541,541,541,541,541,541,541,541,541,541,541,541,541,2534,541,541,541,1341,541,541,541,541,541,1348,541,541,541,541,541,541,541,541,541,2234,541,541,541,541,0,0,1440,563,563,563,563,563,563,563,563,26028,1360,988,587,587,587,587,587,587,3365,587,587,587,587,587,587,587,587,587,2936,587,587,587,2939,587,2941,587,587,587,587,587,1525,587,587,587,587,587,1532,587,587,587,587,587,587,2392,587,587,587,587,587,587,587,587,587,1472,587,587,587,587,1482,587,563,587,587,587,1557,587,1079,0,1561,0,0,0,1567,0,0,0,0,0,0,1218,1219,0,0,0,0,0,0,0,0,0,1235,0,0,0,0,0,0,1573,0,0,0,1579,0,0,0,0,0,0,0,0,0,0,0,662,0,0,0,0,0,0,0,0,0,0,0,541,541,541,1779,541,541,541,541,541,541,541,541,541,541,541,541,541,2548,541,541,563,1843,563,563,563,563,563,563,563,563,563,1854,563,563,563,563,563,1879,563,563,563,563,563,563,563,563,563,563,3344,563,563,563,563,563,563,563,563,1865,563,563,563,563,563,563,563,2065,2066,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1210,0,2117,0,0,2120,2121,0,0,0,0,0,2127,0,0,0,0,0,0,0,2765,0,0,0,0,0,0,0,0,0,550,573,550,573,550,550,573,541,2213,541,541,541,541,2218,541,541,541,541,541,541,541,541,541,541,2182,541,541,541,541,541,2299,563,563,563,563,2304,563,563,563,563,563,563,563,563,563,563,1917,563,26028,0,587,587,587,2386,587,587,587,587,2391,587,587,587,587,587,587,587,587,587,587,2001,587,587,587,587,587,2006,541,541,541,3037,541,541,541,541,541,541,541,541,541,541,541,541,541,2846,541,541,563,563,3077,563,563,563,563,563,563,563,563,563,563,563,563,563,1887,1888,563,587,587,587,3119,587,587,587,587,587,587,587,587,587,587,587,587,1986,587,587,587,563,563,3247,563,563,563,563,563,563,563,563,563,563,563,563,563,2296,563,563,587,0,0,0,3445,0,0,0,0,3180,0,0,0,0,0,0,0,1242,0,0,0,0,0,0,0,0,0,380,0,0,0,0,0,0,0,0,541,541,541,541,3460,541,541,541,541,541,541,541,541,541,541,2207,541,541,541,541,541,563,587,587,587,587,3491,587,587,587,587,587,587,587,587,587,587,2354,587,587,587,587,587,587,563,563,563,563,3623,587,587,587,587,587,587,587,587,587,587,587,2395,587,587,587,587,587,3631,0,0,0,0,0,0,541,541,541,541,541,541,541,563,563,920,563,563,563,563,563,563,949,951,563,563,563,563,563,3421,563,563,563,3425,563,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3501,388,390,340,0,0,0,0,0,0,339,0,0,340,0,0,0,0,0,0,1598,0,0,0,0,0,0,0,0,1604,0,0,0,387,0,0,0,69632,73728,0,0,0,0,0,65536,0,0,0,0,0,1217,0,0,0,0,0,0,0,1224,0,0,0,0,0,347,0,0,0,0,0,0,0,0,0,0,0,3316,0,0,0,0,0,0,435,339,0,0,447,0,0,471,471,471,471,471,471,471,471,471,553,576,553,576,553,553,576,471,482,471,471,471,500,477,500,500,500,500,500,500,500,500,471,471,477,471,471,471,471,471,471,471,471,471,471,471,481,481,471,482,471,471,553,600,576,576,576,576,576,576,576,600,600,600,553,600,600,600,600,600,600,600,600,576,576,553,576,600,576,600,1,0,0,750,0,0,0,0,0,0,0,0,0,0,0,0,0,1603,0,0,0,0,0,0,663,0,788,0,0,0,0,0,0,0,792,0,0,0,0,0,1231,0,0,0,0,0,0,0,0,0,0,0,2153,0,0,0,0,0,0,0,801,0,0,0,0,0,809,0,0,0,0,706,0,0,0,0,0,0,0,0,715,0,717,0,828,0,0,0,663,831,0,788,0,0,0,0,0,837,0,0,0,0,0,1597,0,0,0,577536,0,0,1602,0,0,0,0,0,0,1257,0,0,0,0,0,0,0,0,0,0,2508,0,0,0,0,0,541,861,541,541,875,541,541,541,541,888,541,541,541,541,906,541,541,541,541,541,3519,541,541,541,541,541,541,541,541,563,563,563,923,563,929,563,563,942,563,563,953,563,958,961,563,563,563,563,979,563,563,563,0,587,587,991,587,587,587,587,587,1962,587,587,587,587,587,587,587,587,587,587,3287,587,587,587,541,587,563,1008,587,587,1022,587,587,587,587,1035,587,587,587,587,1053,587,587,587,587,587,2945,587,587,2948,587,587,2951,587,2952,2953,2954,0,0,0,0,1216,0,0,0,0,1221,0,0,0,0,0,0,0,1258,0,0,0,0,0,0,0,0,0,365,299,0,0,0,0,0,0,1144,0,0,1256,0,0,0,0,0,0,0,0,1235,0,0,0,0,0,0,2891776,0,0,0,0,0,2392064,2412544,0,0,0,0,0,0,2123,0,0,0,0,0,0,0,0,0,0,2727936,0,0,0,3084288,0,0,0,1267,0,0,0,0,0,0,0,541,541,541,541,541,541,541,541,541,1741,541,541,541,1309,541,541,541,541,541,541,541,541,541,541,541,541,541,3045,541,3047,563,587,587,1556,587,587,1079,0,0,0,0,0,0,0,0,0,0,3e3,0,0,0,0,0,1621,0,0,1624,0,1626,0,0,0,0,0,0,0,0,0,0,0,3198,3199,0,0,0,0,0,0,0,1722,0,0,0,0,0,0,0,0,0,0,0,683,684,685,0,0,541,541,541,541,1780,541,541,541,541,541,541,541,541,541,541,541,541,1820,541,541,1360,0,563,563,563,563,563,563,563,563,563,563,1836,563,563,563,563,563,2263,563,563,563,563,563,563,563,563,563,563,1433,563,563,563,563,563,1875,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2872,1943,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2359,0,0,2135,0,0,0,0,0,0,0,0,0,0,0,0,0,1618,0,0,2146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2484,0,0,0,0,541,541,541,2163,2164,541,541,541,541,541,541,541,541,2180,541,541,541,541,2185,541,541,541,541,541,2228,541,541,541,541,541,541,541,541,541,541,0,0,563,563,563,563,2857,0,0,563,563,563,2247,563,2249,563,563,563,563,563,563,563,563,2320,563,563,563,563,563,0,0,563,563,563,2315,563,563,563,563,563,563,563,563,563,563,0,0,988,587,587,587,587,0,0,587,587,587,2334,587,2336,587,587,587,587,587,587,587,587,1965,1966,1968,587,587,587,587,587,587,587,587,2402,587,587,587,587,587,587,587,587,587,587,541,587,0,0,0,541,587,563,541,541,897,541,541,563,563,970,563,0,997,587,1076,1048,587,78115,1079,0,0,0,0,0,0,0,0,458,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,0,0,2438,0,0,0,0,0,0,2443,0,0,0,2446,2447,0,0,0,0,0,1610,0,0,1613,0,0,0,0,0,0,0,0,1584,0,0,0,0,0,0,0,0,1683,0,0,0,0,0,0,0,0,334,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1134,0,0,0,0,2487,0,0,0,0,0,0,0,0,0,0,0,2498,0,0,0,2515,0,0,0,0,0,0,0,0,0,2523,0,541,541,541,541,541,3576,563,563,563,3580,563,563,563,563,563,563,2290,563,563,563,563,563,563,563,563,563,1899,563,563,563,563,563,1906,2537,2538,541,541,541,541,541,2543,541,2545,541,541,541,541,2549,541,541,541,541,541,3614,3615,541,563,563,563,563,563,563,563,563,3424,563,563,587,587,587,587,587,563,563,2598,563,563,2601,2602,563,563,563,563,563,2607,563,2609,563,0,999,1039,587,1050,587,78115,1079,0,0,0,0,0,0,0,0,3184,0,0,0,0,0,0,0,0,2750,0,0,0,0,0,0,0,0,0,2732032,0,0,0,0,0,0,563,563,563,2613,563,563,563,563,563,563,563,563,2619,563,563,563,563,563,3624,587,587,587,587,587,587,587,587,587,587,1967,587,587,587,1972,587,587,563,2639,563,563,563,563,563,563,563,563,563,563,563,563,563,563,1402,563,587,587,587,2673,587,2675,587,587,587,587,2679,587,587,587,587,587,587,2676,587,587,587,587,587,587,587,587,587,1469,1476,587,587,587,587,587,587,587,587,2685,587,587,587,587,587,587,587,587,2693,587,587,587,587,587,1979,587,587,587,587,587,587,587,587,587,587,2926,2927,587,587,587,587,2930,587,587,587,587,587,2701,587,587,587,587,2705,587,587,587,587,587,587,587,2378,2379,587,587,587,587,587,587,587,2406,587,587,2409,2410,587,587,2176,2348,0,2745,0,0,0,0,0,0,0,2751,2752,2753,0,0,0,0,0,0,0,69632,73728,172032,0,0,0,0,65536,0,2772,0,2774,0,0,0,0,2778,0,0,0,0,2783,0,0,2786,541,541,2828,541,541,541,541,541,541,541,541,541,541,541,541,541,1771,541,541,541,541,541,2838,541,541,541,541,541,541,541,541,541,541,541,541,541,3337,563,563,541,2847,541,541,2850,541,541,2853,541,0,0,2854,563,563,563,563,563,2277,563,563,2280,563,563,563,563,563,563,563,3081,563,563,563,563,563,563,563,563,3355,563,587,587,587,587,587,587,563,563,2875,563,563,563,563,563,563,563,563,563,563,563,563,563,2324,0,0,563,563,563,563,2886,563,563,563,563,563,563,563,563,563,563,563,2606,563,2608,563,563,563,563,563,2896,563,563,2899,563,563,2902,563,0,0,2903,587,587,587,587,587,3284,587,587,587,587,587,587,587,541,587,563,541,541,563,563,587,587,587,2921,587,587,2924,587,587,587,587,587,587,587,587,587,587,587,2666,587,587,587,587,0,0,0,0,0,2972,2973,0,0,0,0,2978,0,0,0,0,0,0,0,69632,73728,221184,0,0,0,0,65536,0,3021,0,0,3023,0,0,541,541,3028,541,541,541,541,541,541,541,541,2205,2206,541,541,541,541,541,541,0,0,3160,0,3162,0,0,0,3166,0,0,0,0,0,0,0,0,2518,0,0,0,0,0,0,541,541,541,541,3030,541,541,541,541,3034,3234,3235,563,563,563,563,3239,3240,563,563,563,563,563,3244,563,563,563,563,1445,563,563,563,563,26028,1360,988,587,1455,587,587,0,3632,0,0,0,0,541,541,541,541,541,3641,541,563,563,563,563,587,587,587,587,587,587,587,3263,3264,587,587,587,587,587,587,3435,587,587,587,587,587,587,587,541,563,3268,3269,587,587,587,587,587,3273,587,587,587,587,587,587,587,587,2393,587,587,587,587,587,587,587,3279,587,587,587,587,587,587,587,587,587,587,587,587,541,587,563,2721,541,0,0,0,3312,0,0,0,0,0,0,0,0,0,0,0,0,1633,0,0,0,541,3404,541,541,541,541,541,541,563,563,563,563,563,563,563,563,563,563,563,563,563,563,3419,563,563,563,563,563,563,563,587,587,587,587,587,3113,587,587,587,587,587,0,3443,0,0,3446,0,0,0,3180,0,0,0,0,0,0,0,1583,0,1585,0,0,0,0,0,0,0,1106,0,0,0,0,0,0,0,0,0,756,0,0,0,0,0,0,0,0,541,541,3458,541,541,541,541,3463,541,541,541,541,3468,541,541,541,541,872,541,541,541,541,541,541,541,541,541,541,541,541,1316,541,541,541,563,587,587,3489,587,587,587,587,3494,587,587,587,587,3499,587,587,587,587,587,3364,587,587,587,587,587,587,587,587,587,587,2664,587,587,2667,2668,587,587,563,563,3645,3646,563,563,563,587,587,587,3651,3652,587,587,587,0,541,587,563,541,541,541,541,541,563,563,563,563,587,587,587,587,0,0,0,2730,0,0,563,587,0,541,563,587,3691,3692,3693,3694,0,541,563,587,0,0,0,0,0,0,0,0,3180,0,0,0,0,0,3453,342,343,344,345,346,0,0,0,0,0,0,0,0,0,0,0,713,0,0,0,0,0,0,0,391,0,0,0,0,0,0,0,0,0,0,0,0,1674,0,0,0,345,345,0,346,345,0,344,345,455,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,487,496,496,504,496,506,496,496,506,506,496,506,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,554,577,554,577,554,554,577,554,601,577,577,577,577,577,577,577,601,601,601,554,601,601,601,601,601,601,601,601,577,577,554,577,601,577,601,1,656,657,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1590,1591,672,673,0,675,676,0,0,0,0,0,682,0,0,0,0,0,0,0,2804,0,0,0,541,2808,541,541,541,0,0,0,0,692,0,0,0,0,0,0,699,365,365,365,0,0,0,0,0,1658,0,0,0,0,0,0,0,0,0,0,0,3180,0,0,0,3308,0,719,0,721,0,723,0,0,0,0,0,0,0,0,0,733,0,0,0,0,646,752,753,754,0,0,0,0,0,760,761,0,0,0,0,0,1680,0,0,0,0,0,0,0,0,0,0,0,3180,0,3306,0,0,763,764,675,0,0,0,0,0,0,0,0,0,0,779,780,0,0,0,0,0,1696,1697,1698,1699,0,0,0,0,0,0,0,0,755,0,0,0,0,0,0,0,0,772,0,0,0,0,0,0,0,0,782,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1601,0,0,761,0,0,787,0,0,0,0,0,0,0,0,0,794,675,723,0,692,811,0,0,0,0,761,0,0,0,0,0,0,0,1591,0,0,0,0,0,0,0,0,0,1662,0,0,0,0,0,0,0,0,754,820,821,0,0,0,0,0,0,754,0,0,825,699,0,0,0,830,0,0,0,832,0,0,0,692,699,0,0,692,830,830,0,0,0,0,0,0,0,0,0,692,541,541,851,855,858,541,866,541,541,541,881,883,886,541,541,541,898,902,541,541,541,541,541,2541,541,541,541,541,541,541,541,541,541,541,541,541,3044,541,541,541,563,563,563,971,975,563,563,563,563,0,587,587,587,998,1002,1005,587,1013,587,587,587,1028,1030,1033,587,587,587,1045,1049,587,587,587,587,587,1995,587,587,587,587,587,2002,587,587,587,587,587,587,2946,587,587,587,587,587,587,541,587,563,1073,0,998,587,1045,1049,1078,78115,1079,0,0,0,0,0,0,0,0,2779,0,0,0,0,0,0,0,0,303,303,303,303,0,303,303,303,0,0,0,0,1168,0,0,0,0,0,0,0,0,0,0,0,729,0,0,0,0,0,0,1199,0,0,0,0,0,0,0,0,0,0,1209,0,0,0,0,0,0,2912256,0,3207168,2465792,0,0,2719744,0,0,0,0,0,0,541,541,541,3397,541,541,541,541,3401,541,0,0,1214,0,0,0,0,0,0,0,0,0,0,0,0,0,1634,0,0,0,0,1254,0,0,0,0,0,0,0,0,0,0,0,0,0,1665,0,0,1321,541,541,541,541,541,541,541,541,541,541,1331,541,541,1338,541,541,541,541,873,541,541,541,541,541,541,541,541,541,541,541,541,1332,541,541,541,563,563,1443,563,563,563,563,563,563,26028,1360,988,587,587,587,587,587,587,3548,587,3550,587,587,3552,587,587,0,0,0,0,0,0,541,541,541,3639,3640,541,541,563,1501,587,587,1505,587,587,587,587,587,587,587,587,587,587,1515,587,0,0,0,541,587,563,541,541,899,541,541,563,563,972,563,0,1074,587,587,1052,587,78115,1079,0,0,0,0,0,0,0,0,2445312,0,2842624,0,0,0,2637824,0,587,1522,587,587,587,587,587,587,587,587,587,587,1535,587,587,587,587,587,2013,587,541,587,563,541,541,541,541,563,563,563,563,587,587,587,587,0,0,0,0,0,0,1666,0,1668,0,0,0,1670,0,748,0,0,0,0,0,0,0,0,3174,0,0,0,0,0,0,0,0,791,0,0,0,0,0,0,0,0,833,0,0,0,0,0,0,808,0,0,1693,0,0,0,0,0,0,1700,0,0,0,0,0,0,0,1660,1661,0,0,0,0,0,0,0,0,710,0,0,0,0,0,0,0,0,726,0,0,0,0,0,0,0,0,0,274432,274432,274432,0,274432,274432,274432,541,541,1762,541,541,541,541,541,541,541,541,1769,541,541,541,1773,541,541,1778,541,541,541,541,541,541,541,541,541,541,541,541,541,1788,541,541,0,563,1828,563,563,563,563,563,563,563,1835,563,563,563,563,563,563,3250,563,563,563,563,563,563,563,563,563,2321,563,563,563,563,0,0,563,1908,563,563,563,563,563,563,563,563,563,26028,0,587,1924,587,0,0,0,541,587,563,541,541,900,541,541,563,563,973,563,563,563,563,2262,563,563,563,563,563,563,563,563,563,563,563,1434,563,563,563,563,587,587,587,1960,587,587,587,1964,587,587,1969,587,587,587,587,587,587,2688,587,587,587,587,587,587,2695,587,587,563,563,587,587,587,587,0,0,0,2031,0,1082,0,0,0,2033,0,1086,0,0,0,2035,0,1090,0,0,0,2037,0,1094,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1620,2587,0,1825,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2610,2650,563,563,563,0,0,0,2653,0,1921,587,587,587,587,587,587,587,3549,587,587,587,587,587,587,0,0,3672,0,541,541,541,541,563,563,0,0,2969,0,0,0,0,0,0,0,0,0,0,0,0,0,2102,0,0,0,0,0,3161,0,0,0,0,0,0,0,0,0,0,0,0,1703,0,0,0,0,0,3319,541,541,541,541,541,541,541,3324,541,541,541,541,541,541,541,2832,541,541,541,541,541,541,541,541,541,2573,541,541,541,541,541,541,587,587,3361,587,587,587,587,587,587,587,587,587,587,587,587,587,2709,587,587,3379,0,0,3382,0,0,0,0,3180,3387,0,0,0,0,0,0,0,1682,0,1684,0,0,0,0,0,0,0,1114,0,0,0,0,1118,0,0,1121,541,541,541,541,3407,541,541,541,563,563,563,3412,563,563,563,563,563,2289,563,563,563,563,563,563,563,563,563,563,2605,563,563,563,563,563,3416,563,563,563,563,563,3422,563,563,563,563,587,587,587,3428,587,0,0,0,541,587,563,850,541,1066,901,541,923,563,1071,974,587,587,587,3432,587,587,587,587,587,3438,587,587,587,587,541,563,563,563,563,2276,563,563,563,563,563,563,2282,563,2284,563,2287,563,587,587,587,587,587,3492,587,587,587,3496,587,587,587,587,587,587,2704,587,587,587,587,587,587,587,587,587,1470,587,587,587,587,587,587,0,0,3657,0,541,541,541,541,541,541,563,563,563,563,563,563,936,563,563,563,563,563,563,563,563,587,3687,3688,3689,3690,0,541,563,587,0,541,563,587,0,0,0,0,0,0,0,0,3180,0,0,3450,3451,0,0,389,0,0,0,393,389,0,0,0,0,0,0,0,0,0,0,0,122880,0,0,0,0,0,0,0,405,0,347,0,69632,73728,0,0,0,0,0,65536,0,0,0,0,0,1709,0,0,0,0,0,0,0,0,0,0,399,0,0,0,0,0,0,0,436,0,0,443,0,0,0,0,0,0,0,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,522,522,522,522,522,0,0,0,0,0,0,0,0,0,522,522,522,522,522,522,522,522,522,555,578,555,578,555,555,578,555,602,578,578,578,578,578,578,578,602,602,602,555,602,602,602,602,602,602,602,602,578,578,617,622,602,622,628,1,0,0,0,751,0,0,0,0,0,0,0,0,0,0,0,0,2061,0,0,0,962,563,563,563,563,980,563,563,563,0,587,587,992,587,587,587,587,587,2350,587,587,587,587,587,587,587,587,587,587,1936,587,587,587,587,587,1107,0,0,0,0,1112,0,0,0,0,0,0,0,0,0,0,0,167936,167936,167936,167936,167936,167936,167936,1360,914,563,563,563,1366,563,563,563,563,563,563,563,563,563,1380,563,563,1404,563,563,563,563,563,563,563,563,563,563,563,563,563,2620,563,563,563,1441,563,563,563,563,563,563,563,26028,1360,988,587,587,587,1458,563,587,587,587,587,587,1079,0,1562,0,0,0,1568,0,0,0,0,0,0,1627,1628,1629,0,0,0,0,0,0,0,0,343,0,0,0,0,0,0,0,0,403,0,0,0,0,0,0,0,0,407,407,407,407,0,407,407,407,1574,0,0,0,1580,0,0,0,0,0,0,0,0,0,0,0,808,541,541,852,541,1605,0,0,0,0,0,0,0,0,0,0,0,0,0,1619,0,0,0,0,0,1723,0,0,0,0,0,0,0,0,0,0,0,2625536,0,2699264,2715648,0,1973,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2373,563,563,587,587,587,587,0,0,1563,0,0,0,0,0,1569,0,1575,0,1581,0,0,0,0,0,0,0,0,0,0,0,1262,0,0,0,0,0,0,0,0,1575,0,0,0,0,0,1581,0,0,0,0,0,0,0,2974,0,0,0,0,0,0,0,0,0,365,0,253952,0,0,0,0,541,541,541,2190,541,541,541,541,2194,541,2196,541,541,541,541,541,541,541,3039,541,541,541,541,541,541,541,541,541,887,541,541,541,541,541,541,563,563,2275,563,563,563,563,2279,563,2281,563,563,563,563,563,563,1896,563,563,563,563,563,563,563,563,563,1397,1399,563,563,563,563,563,587,587,2362,587,587,587,587,2366,587,2368,587,587,587,587,587,587,1465,587,587,587,587,587,587,1480,587,587,0,0,0,0,0,2489,0,0,0,0,0,0,0,0,0,0,0,196608,0,0,0,0,563,563,2625,563,563,563,563,563,563,563,563,563,563,563,563,563,2648,563,563,0,0,0,0,3024,0,541,541,541,541,541,541,541,541,541,541,541,1330,541,541,541,541,0,3380,0,0,0,0,0,0,3180,0,0,0,0,3391,0,0,0,0,0,328,0,69632,73728,0,0,0,0,0,65536,0,3393,0,0,0,0,0,541,3396,541,541,3398,541,541,541,541,541,541,541,3040,541,541,541,541,541,541,541,541,541,1783,541,541,541,541,1789,541,0,3455,541,541,541,541,541,541,541,541,541,541,541,541,541,541,563,563,563,541,862,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1319,541,541,912,563,563,563,563,563,563,935,563,563,563,563,563,563,563,2291,2292,563,563,563,563,563,563,563,2319,563,563,2322,2323,563,563,0,0,1009,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2697,1059,0,0,0,541,587,563,541,541,541,541,541,563,563,563,563,563,2614,563,563,563,563,563,563,563,563,563,563,3649,587,587,587,587,587,587,587,0,1095,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2513,0,0,1623,0,0,0,0,0,0,0,0,0,0,0,0,0,2130,0,2132,1826,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,3258,541,3215,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1337,541,587,587,587,3271,587,587,587,587,587,587,587,587,587,587,587,587,2370,587,587,587,0,0,0,0,348,348,350,348,348,348,348,348,348,513,348,348,0,350,348,0,0,348,348,0,0,0,0,349,0,0,0,0,0,329,0,0,0,0,0,0,0,0,0,0,0,2509,0,0,0,0,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,556,579,556,579,556,556,579,556,603,579,579,579,579,579,579,579,603,603,603,556,603,603,603,603,603,603,603,603,579,579,556,579,603,579,603,1,0,0,0,0,722,0,724,0,0,0,0,0,0,0,0,0,299,0,0,0,0,0,0,0,0,0,0,739,0,0,0,0,0,0,0,0,0,0,0,836,541,541,541,541,0,0,0,766,0,0,0,771,0,0,0,0,0,0,0,0,0,1189,0,0,0,0,0,0,541,541,541,870,541,541,541,541,541,890,892,541,541,903,541,541,541,541,541,2569,541,541,541,541,541,541,541,541,541,541,541,541,2835,541,541,541,963,965,563,563,976,563,563,563,563,0,587,587,993,999,587,587,587,587,587,3374,587,541,541,563,563,587,587,0,0,0,0,0,0,3299,0,0,0,587,587,1017,587,587,587,587,587,1037,1039,587,587,1050,587,587,587,587,587,2364,587,587,2367,587,587,587,587,587,587,587,2677,587,587,587,587,587,587,2682,587,0,0,0,1151,0,1153,0,1155,0,0,0,0,0,0,0,0,0,1231,541,541,541,541,541,541,0,1181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1636,0,0,1198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1675,0,0,1266,0,0,0,0,0,0,0,1181,541,541,541,541,541,541,541,1326,541,541,541,541,541,541,541,1339,1305,1307,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1358,541,541,541,1343,541,541,541,541,541,541,541,541,1354,1355,541,541,541,541,541,541,2840,541,541,541,541,541,541,541,541,541,541,3056,541,3058,541,541,541,1360,914,563,563,563,563,1367,563,563,563,563,563,563,563,563,563,3242,563,563,563,563,563,563,563,563,563,1421,563,563,563,563,563,563,563,1435,563,563,563,563,563,2627,563,563,563,563,563,563,2635,563,563,563,1459,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2942,587,587,587,1489,1491,587,587,587,587,587,587,587,587,587,587,587,2707,2708,587,587,587,1554,587,1555,587,587,1558,1079,0,0,0,0,0,0,0,0,0,306,204800,204800,0,205106,204800,1,0,1677,0,0,1679,0,0,0,0,0,0,0,0,0,0,0,1159,0,0,0,0,541,541,541,541,1763,541,541,541,541,541,541,541,541,541,541,541,541,2208,541,541,541,0,563,563,563,563,563,563,563,1833,563,563,563,563,563,563,563,2879,563,563,563,563,563,563,563,563,2644,563,563,563,2647,563,563,563,1858,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,1857,563,563,563,1909,563,563,563,563,1915,563,563,563,26028,0,587,587,587,587,587,2376,587,587,587,587,587,587,587,587,587,587,2717,541,587,563,541,541,587,587,587,587,1929,587,587,587,587,587,587,587,587,587,587,587,2938,587,587,587,587,587,1991,587,587,587,1996,587,587,587,587,587,587,587,587,2005,587,0,0,0,541,587,563,852,892,541,903,541,925,965,563,976,587,587,587,2011,587,587,587,541,587,563,541,541,541,541,563,563,916,563,563,563,932,563,563,563,563,563,563,563,1864,563,563,563,1868,563,563,1873,563,2077,0,0,0,0,0,0,0,0,2085,0,0,0,0,0,2089,0,0,2091,0,0,0,0,0,0,0,2099,0,0,0,0,0,0,0,3012,3013,0,0,0,0,3018,0,0,2133,2134,0,2136,0,0,0,0,0,0,0,0,0,0,2144,0,0,2149,2150,0,0,0,0,0,2154,0,0,0,0,0,0,0,2160,541,541,541,541,541,541,2167,541,541,541,541,541,541,1288,541,541,541,541,1298,541,541,541,541,541,541,1325,541,541,541,541,541,541,541,541,541,541,1801,541,541,541,541,541,2202,541,541,541,541,541,541,541,541,541,541,541,541,2209,541,541,541,541,541,2815,541,2818,541,541,541,541,2823,541,541,541,541,541,541,3409,541,563,563,563,563,563,563,563,563,3479,563,3481,3482,563,3484,563,541,541,541,2215,541,541,541,541,541,541,541,541,541,541,541,541,895,541,541,541,0,0,2244,563,563,563,563,563,563,563,2252,563,563,563,563,563,563,3534,563,3536,563,563,3538,563,563,587,587,563,563,2301,563,563,563,563,563,563,563,563,563,563,563,563,563,2893,563,563,0,0,2331,587,587,587,587,587,587,587,2339,587,587,587,587,587,587,2715,587,587,587,587,541,587,563,541,541,587,587,587,587,2363,587,587,587,587,587,587,2369,587,2371,587,2374,587,587,2388,587,587,587,587,587,587,587,587,587,587,587,587,587,2918,587,587,0,2474,0,0,0,0,0,0,0,0,0,2482,0,0,0,0,0,0,0,122880,122880,122880,122880,122880,0,122880,0,2105632,0,0,2514,0,0,0,0,0,0,0,0,0,2522,0,0,541,541,541,541,541,3461,541,541,541,3465,541,541,541,541,541,541,1287,541,541,541,541,541,541,541,541,541,541,2546,541,541,541,541,541,541,541,541,541,2540,541,541,541,541,541,541,541,541,541,541,541,541,2222,541,541,541,563,563,563,2599,563,563,563,563,563,2604,563,563,563,563,563,563,2278,563,563,563,563,563,563,563,563,563,2632,563,563,563,563,563,563,2670,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3143,587,587,587,587,2686,587,587,587,587,587,587,587,587,587,587,587,3125,587,587,587,587,541,541,2723,563,563,563,2725,587,587,587,2727,2728,0,0,0,0,0,0,0,172032,172032,172032,172032,172032,172032,172032,172032,1,0,0,2746,0,2747,0,0,0,0,0,0,0,0,0,0,0,1175,0,0,0,0,0,0,0,0,2762,0,0,0,0,0,0,0,0,0,0,0,1192,0,1195,0,0,2811,541,2812,541,541,541,541,541,541,541,541,541,541,541,541,541,1804,541,541,541,541,541,2849,541,541,541,541,541,0,0,563,563,563,563,563,563,563,563,563,563,563,563,2255,563,2858,563,2859,563,563,563,563,563,563,563,563,563,563,563,563,563,3086,563,563,587,587,2907,587,2908,587,587,587,587,587,587,587,587,587,587,587,3139,587,3141,587,587,0,0,0,2983,0,0,0,0,0,0,0,0,0,0,0,0,2073,0,0,0,0,0,3381,0,0,0,0,0,3180,0,0,0,3390,0,0,0,0,0,0,1659,0,0,0,0,0,0,0,0,0,0,114688,0,241664,258048,0,0,3430,587,587,587,587,587,587,587,587,587,3439,587,587,587,541,563,563,563,563,2303,563,563,563,563,563,563,563,563,563,563,563,26028,0,587,587,587,541,541,541,541,3518,541,541,541,541,541,541,541,541,541,563,563,563,3232,563,563,563,563,563,563,3531,563,563,563,563,563,563,563,563,563,563,587,587,587,3357,587,587,587,587,587,3545,587,587,587,587,587,587,587,587,587,587,0,0,0,0,0,0,3637,541,541,541,541,541,541,3643,563,563,563,563,3647,563,563,587,587,587,587,587,3653,587,587,0,0,0,0,3635,0,541,541,541,541,541,541,541,563,2724,563,563,587,2726,587,587,0,0,0,0,0,0,0,0,3607,0,541,541,541,541,0,3656,0,3658,541,541,541,541,541,541,563,563,563,563,563,563,937,563,563,563,563,563,563,563,0,0,0,0,394,395,0,396,0,0,0,0,0,396,0,0,0,0,0,331,332,333,0,0,0,0,0,0,0,0,0,560,583,560,583,560,560,583,401,0,0,0,0,0,368,376,404,0,0,0,0,0,368,0,0,396,0,0,0,0,0,351,0,0,368,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2744,409,411,0,0,368,376,0,69632,73728,0,0,0,0,427,65536,0,0,0,0,0,2044,2045,0,0,0,0,0,0,0,0,0,361,0,0,0,0,0,361,427,427,437,0,427,0,411,427,456,0,0,0,0,0,0,0,0,106496,0,106496,0,0,0,0,106496,396,0,409,0,497,497,0,497,497,497,497,497,497,497,497,523,523,523,523,523,456,456,456,456,531,456,456,532,456,523,537,523,523,523,537,523,523,523,523,539,557,580,557,580,557,557,580,557,604,580,580,580,580,580,580,580,604,604,604,557,604,604,604,604,604,604,604,604,580,580,618,623,604,623,629,1,0,0,0,643,0,0,0,0,0,0,0,0,0,0,0,0,2101,0,0,0,783,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2757,0,0,0,802,0,0,0,0,0,0,0,0,0,0,0,0,2129,0,0,0,587,587,587,1023,1025,587,587,587,587,587,587,587,587,587,587,587,3275,587,587,587,587,0,0,0,0,1096,0,0,1098,0,0,0,0,0,0,0,0,0,1630,0,0,0,0,0,1636,0,0,0,0,1111,0,0,0,0,0,0,0,0,0,0,0,1207,0,0,0,0,1098,1227,0,0,0,0,0,0,1234,0,0,0,0,0,0,0,0,155648,0,0,0,0,0,0,0,0,1239,0,0,0,0,0,0,0,0,0,0,1239,1248,0,0,0,0,0,0,1681,0,0,0,0,0,0,1687,0,1689,0,0,0,0,1239,1269,1270,0,1239,0,541,541,541,541,541,541,541,3207,3208,541,541,541,541,3212,3213,1278,541,541,541,1282,541,541,1293,541,541,1297,541,541,541,541,541,541,541,3054,541,541,541,541,541,541,541,541,541,1784,541,541,541,541,541,541,1360,914,563,563,563,563,563,563,563,1370,563,563,563,1374,563,563,563,563,1847,563,563,563,563,563,563,563,563,563,563,563,2308,563,563,563,563,1385,563,563,1389,563,563,563,563,563,563,563,563,563,563,563,563,2295,563,563,563,563,563,563,1406,563,563,563,1410,563,563,563,563,563,563,563,563,2901,563,563,0,0,587,587,587,587,587,587,1462,587,587,587,1466,587,587,1477,587,587,1481,587,587,587,587,587,3434,587,3436,587,587,587,587,587,587,541,563,587,1502,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3128,587,0,1622,0,0,0,0,0,0,0,0,0,0,0,0,1635,0,0,0,0,0,2067,0,0,0,0,0,0,0,0,0,2076,1637,0,0,0,1641,0,0,0,1645,0,0,0,1649,0,0,0,0,0,0,2056,0,2057,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1676,0,563,563,1844,563,563,563,563,563,563,563,563,563,563,563,563,563,3540,587,587,1958,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3127,587,3129,587,587,2010,587,587,587,587,1749,1940,1844,541,541,541,541,563,563,917,563,563,563,934,563,563,948,563,563,563,563,563,1895,563,563,563,1900,563,563,563,563,563,563,1914,563,563,563,563,26028,0,587,587,587,0,2118,0,0,0,0,0,0,2125,0,0,0,0,0,0,0,0,184726,184932,184932,184932,0,184932,184932,184932,0,0,2159,0,541,541,2162,541,541,541,541,541,541,541,541,541,541,2833,541,541,541,541,541,541,541,2227,541,541,541,541,541,541,541,541,541,541,541,0,0,563,2855,563,563,563,0,0,563,563,2246,563,563,563,563,563,563,563,563,563,563,563,3255,563,563,563,563,563,563,2314,563,563,563,563,563,563,563,563,563,563,563,0,0,587,2904,587,0,0,587,587,2333,587,587,587,587,587,587,587,587,587,587,587,3440,587,587,541,563,587,587,587,587,2390,587,587,587,587,587,587,587,587,587,587,587,2928,587,587,587,587,587,587,587,587,2401,587,587,587,587,587,587,587,587,587,587,587,541,587,0,0,0,541,587,563,1064,541,541,905,541,1069,563,563,978,541,541,541,2567,541,541,541,541,541,541,541,541,541,541,541,541,900,541,541,541,2698,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3277,587,587,0,2759,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1716,0,541,2827,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1758,541,563,2874,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2285,563,587,587,587,2923,587,587,587,587,587,587,587,587,587,587,587,587,2382,587,587,587,0,0,2993,0,0,0,0,0,0,0,0,0,0,0,0,0,2433,0,2435,3171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2771,3202,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2577,3225,541,541,541,541,541,541,541,541,563,563,563,563,563,563,563,2888,563,563,563,563,563,563,563,563,3241,563,563,563,563,563,563,563,587,587,587,3282,587,587,587,587,587,587,587,587,587,541,587,563,2018,541,541,541,2022,563,541,3289,563,3291,587,3293,3294,0,0,0,0,3298,0,0,0,0,0,0,0,1134592,0,365,0,0,0,1134592,0,0,0,1134592,1134592,0,0,1134592,0,0,1134592,0,0,0,3311,0,0,0,0,3315,0,0,0,0,0,0,0,0,0,1725,0,0,0,0,0,0,3318,0,541,541,541,3320,541,541,541,3323,541,541,541,541,541,541,541,1751,541,541,541,541,541,541,541,541,541,2586,0,563,563,563,563,563,3338,563,563,563,3341,563,563,563,563,563,563,563,563,563,563,563,26028,1921,587,587,587,587,3360,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3554,0,0,3403,541,3405,541,541,541,541,541,563,563,563,563,563,563,563,563,563,563,3075,563,563,3418,563,3420,563,563,563,563,563,563,587,587,587,587,587,587,587,3596,587,3598,587,587,0,0,0,0,3560,0,0,0,0,541,541,541,541,541,541,541,541,541,2169,541,541,541,541,541,3574,541,541,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,1417,3586,563,563,563,587,587,587,587,587,587,587,587,587,587,3599,587,0,0,0,853,1e3,926,849,1065,894,541,541,922,1070,967,563,0,587,587,587,587,587,78115,0,0,0,0,0,0,0,0,0,365,0,305,0,0,0,0,3611,541,541,541,541,541,541,541,563,563,3617,563,3618,563,563,563,563,587,587,587,587,3594,587,587,587,587,587,587,587,541,541,563,563,587,587,3378,0,0,410,356,0,0,0,0,0,69632,73728,0,0,0,0,0,65536,0,0,0,0,0,2122,0,0,0,0,0,0,0,0,0,0,304,304,0,0,0,0,0,0,354,0,0,0,356,0,0,473,473,473,473,473,473,473,478,473,473,473,473,473,473,473,473,473,473,473,478,473,484,473,0,0,473,0,0,0,0,0,0,0,0,524,528,528,528,528,473,473,473,473,473,473,473,478,473,528,524,528,528,528,524,528,528,528,528,540,558,581,558,581,558,558,581,558,605,581,581,581,581,581,581,581,605,605,605,558,605,605,605,605,605,605,605,605,581,581,619,624,605,624,630,1,0,0,0,0,644,0,0,0,0,0,0,0,0,0,0,0,1606,0,0,0,0,688,0,0,0,0,0,0,0,0,0,0,0,365,365,365,0,0,0,0,0,2138,0,0,0,0,0,0,0,0,0,0,0,2768,0,0,0,0,0,0,0,738,0,0,0,644,738,0,744,745,644,0,0,0,0,0,0,790,0,0,0,0,0,0,0,0,0,2058,0,0,0,0,0,0,0,0,799,0,804,0,0,0,0,0,0,804,0,0,0,0,0,644,0,0,0,799,0,804,0,790,0,819,0,0,0,665,0,0,0,0,819,0,0,0,0,0,0,0,2473984,2478080,0,0,0,0,0,0,0,0,0,2767,0,0,0,0,0,0,0,644,0,0,0,0,0,0,0,0,790,0,0,0,0,0,0,0,3165,0,0,0,0,0,0,0,0,0,541,563,541,563,541,541,563,0,0,790,790,0,644,0,0,790,804,842,0,541,848,541,541,541,541,541,2839,541,541,541,2842,541,2844,541,541,541,541,541,541,879,541,884,541,891,541,894,541,541,908,541,541,867,871,877,541,882,541,541,541,541,541,899,541,541,541,541,541,541,2852,541,541,0,0,563,563,563,563,563,563,563,563,563,563,563,563,563,2256,563,563,563,972,563,563,563,563,563,0,587,587,995,587,587,587,587,587,2687,587,587,587,587,587,587,587,587,587,587,2937,587,587,587,587,587,587,587,1014,1018,1024,587,1029,587,587,587,587,587,1046,587,587,587,587,587,1026,587,1031,587,1038,587,1041,587,587,1055,587,1149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2799,0,0,0,1200,0,0,0,0,0,1205,0,0,0,0,0,0,0,1714,0,0,0,0,0,0,0,0,0,2140,2141,0,0,2143,0,0,1099,0,0,0,1230,0,1232,0,0,0,0,0,0,0,0,0,351,352,353,0,0,0,0,1240,0,0,0,0,0,0,0,0,0,0,1246,0,1249,1200,0,0,0,0,0,2427,0,0,0,0,0,0,0,0,0,0,336,337,0,0,0,0,1230,1252,0,1255,0,0,0,0,0,1130,0,0,0,0,1264,0,0,1149,1264,0,1271,541,541,541,541,1277,1360,914,1362,563,563,563,563,563,1369,563,563,563,563,1375,563,563,563,563,1862,563,563,563,563,563,563,563,563,563,563,563,3084,563,563,563,563,563,563,563,1407,563,563,563,563,1412,563,563,563,563,563,563,563,2900,563,563,563,0,0,587,587,587,563,1419,563,563,563,1426,1428,563,563,563,563,563,563,563,563,563,3346,563,563,563,563,563,563,587,587,1461,587,587,587,587,1467,587,587,587,587,587,587,587,587,2663,587,587,587,587,587,587,587,587,587,1488,587,587,587,587,587,587,587,587,587,587,1499,587,587,587,587,1463,587,587,587,587,587,1475,587,587,587,587,587,587,2014,541,587,563,1791,541,2020,541,1886,563,587,587,1504,587,587,587,587,587,587,587,587,1511,587,587,587,1518,1520,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2396,2397,2398,587,587,1542,587,0,541,587,563,541,541,541,541,541,563,563,563,563,563,2862,563,2865,563,563,563,563,2870,563,563,563,563,587,587,587,587,587,1079,0,0,1563,0,0,0,1569,0,0,0,0,0,376,0,0,0,0,368,0,385,0,351,0,0,1575,0,0,0,1581,0,0,0,0,0,0,0,0,0,0,303,303,0,0,0,0,1592,1593,0,0,0,0,0,1599,0,0,0,0,0,0,0,0,0,2098,0,2100,0,0,0,0,0,1638,0,0,0,0,0,0,0,1646,1647,0,0,0,0,0,0,0,3197,0,0,0,0,0,0,3200,0,0,1654,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2038,0,1690,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3005,0,1706,1707,0,0,0,1710,0,0,0,0,0,1714,0,0,1717,0,0,1730,0,1732,1706,541,541,541,541,541,541,541,541,541,541,541,2547,541,541,541,541,541,1744,541,541,541,541,1750,541,541,541,541,541,541,541,541,541,541,3220,541,541,541,541,541,541,1761,541,541,541,541,1765,541,541,541,541,541,541,541,541,541,541,3335,541,541,563,563,563,541,1776,541,541,541,1781,541,541,541,541,541,541,541,541,541,541,541,2559,541,541,541,541,1808,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1360,914,563,563,563,563,563,563,563,563,563,563,563,563,1376,563,0,587,587,1046,587,587,78115,1079,0,0,0,0,0,0,0,0,225890,225890,225890,225890,225741,225890,225890,225890,0,563,563,563,563,563,563,563,563,563,563,563,563,1839,563,563,563,563,1877,563,563,563,563,563,563,563,563,563,563,563,2869,563,563,563,563,563,563,1845,563,563,563,563,563,563,563,563,563,563,1856,563,563,563,563,1894,563,563,563,1898,563,563,563,563,563,563,563,1450,563,26028,1360,988,1454,587,587,587,563,563,1860,563,563,563,563,563,563,563,563,563,563,1871,563,563,563,563,1911,1913,563,563,563,563,563,26028,0,587,587,587,587,587,1506,587,587,1508,587,587,587,1512,587,587,587,0,1286,1470,1378,541,541,541,1549,541,563,563,563,1553,563,1876,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2297,2298,563,563,587,2027,587,587,0,0,0,0,0,0,0,0,0,0,3511,0,3513,0,541,0,0,0,2080,2081,0,0,2083,2084,0,0,0,0,0,0,0,0,286720,0,0,0,0,0,0,0,0,0,286720,286720,0,286720,286720,1,0,0,0,2106,0,0,0,0,2109,2110,0,0,0,0,0,0,0,2069,0,0,0,0,0,0,0,0,0,541,564,541,564,541,541,564,541,541,541,541,2175,541,541,2179,541,541,541,2183,541,541,541,541,541,541,1347,541,541,541,541,541,541,541,541,541,563,563,3231,563,563,563,563,2225,541,541,541,541,2230,541,541,541,541,541,541,541,541,0,0,0,0,0,386,0,69632,73728,0,0,0,0,0,65536,0,2242,0,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2325,0,563,563,563,2260,563,563,2264,563,563,563,2268,563,563,563,563,563,587,587,3625,587,3626,587,587,587,587,587,587,1493,587,587,587,587,587,587,587,587,587,2380,587,587,587,587,587,587,2312,563,563,563,563,2317,563,563,563,563,563,563,563,563,0,0,0,0,0,0,587,587,2655,587,587,587,2329,0,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2680,587,587,587,587,587,587,2347,587,587,2351,587,587,587,2355,587,587,587,587,587,587,2925,587,587,587,587,587,587,587,587,587,1471,587,587,587,587,587,587,2399,587,587,587,587,2404,587,587,587,587,587,587,587,587,541,587,0,0,0,854,1001,927,541,541,541,541,910,563,563,563,563,563,1848,563,563,563,563,563,563,563,563,563,563,3097,563,3099,563,563,563,0,0,0,0,2439,0,0,0,0,0,0,0,0,0,0,0,1616,0,0,0,0,0,0,2475,0,0,0,2479,0,0,0,0,0,0,0,0,0,365,0,0,0,0,0,0,541,2525,541,541,541,541,541,541,541,541,541,541,2533,541,541,541,541,541,541,3053,541,541,3055,541,541,541,541,541,541,541,1311,541,541,541,541,541,541,541,541,541,1753,541,541,541,541,541,541,541,2551,541,541,2553,541,2554,541,541,541,541,541,541,541,2561,541,541,541,541,876,878,541,541,541,541,541,541,541,541,541,541,541,1353,541,541,541,541,541,2565,541,541,541,541,541,541,541,541,541,541,541,541,2576,541,541,541,541,1283,541,541,541,541,541,541,541,541,541,541,1304,0,0,0,563,563,2589,563,563,563,563,563,563,563,563,563,563,3537,563,563,3539,563,587,587,563,2597,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2326,0,563,563,2612,563,563,563,2615,563,563,2617,563,2618,563,563,563,563,563,2877,2878,563,563,563,563,2881,563,563,563,563,563,1863,563,563,563,563,563,563,563,563,563,563,3356,587,587,587,587,587,563,563,563,563,2626,563,563,2630,563,563,563,563,563,563,563,563,3345,563,563,563,563,563,563,563,563,563,563,563,2641,2642,563,563,563,563,563,563,563,563,563,563,26028,1360,988,587,587,587,587,2683,587,2684,587,587,587,587,587,587,587,587,2692,587,587,2696,587,0,0,0,1061,1062,1063,851,541,898,902,1068,924,563,971,975,2733,2734,0,0,2737,2738,0,0,0,0,0,0,0,0,0,0,306,307,0,0,0,0,0,2788,0,2790,0,0,0,0,0,0,0,0,0,0,0,0,2457,0,0,0,0,0,0,0,2803,0,0,0,0,0,0,541,541,541,541,541,541,541,3033,541,541,2826,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2825,2873,563,563,563,563,563,563,563,563,563,563,563,563,2883,563,563,563,563,1912,563,563,563,563,563,563,26028,0,587,587,587,587,587,2934,587,587,587,587,587,587,587,2940,587,587,587,587,2922,587,587,587,587,587,587,587,587,587,587,587,587,2932,0,2982,0,0,2984,0,0,0,0,0,0,0,0,0,0,0,1632,0,0,0,0,0,0,0,0,2995,0,0,2998,0,2999,0,0,0,0,0,0,0,2096,0,0,0,0,0,0,0,0,0,562,585,562,585,562,562,585,541,3049,541,541,541,541,541,541,541,541,541,541,541,541,541,3061,3089,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2621,563,3103,563,563,563,563,563,587,587,587,3111,587,587,587,587,587,587,1507,587,587,587,587,587,587,587,587,587,1983,1984,587,587,587,587,587,587,3131,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2929,587,587,587,587,3145,587,587,587,587,587,541,587,563,541,541,563,563,587,587,0,2962,0,0,0,0,0,0,0,0,0,2507,0,0,0,0,0,0,0,0,0,0,0,3163,0,0,0,0,0,0,0,3169,0,0,0,0,0,438,0,0,0,0,0,0,0,0,0,0,0,2142,0,0,0,0,541,3226,541,541,541,541,541,541,541,563,563,563,563,563,563,563,3095,563,563,563,563,563,563,563,563,2306,563,563,563,563,563,563,563,563,563,3236,563,563,563,563,563,563,563,563,563,563,563,563,563,2309,2310,2311,563,563,3246,563,563,563,563,563,563,3252,563,3254,563,563,563,563,563,1392,563,563,563,563,563,563,563,563,563,563,1853,563,563,563,563,563,563,563,563,587,587,587,587,587,587,587,587,587,3265,587,587,587,587,587,2703,587,587,587,587,587,587,587,587,587,587,2950,587,587,541,587,563,587,587,3281,587,3283,587,587,587,587,587,587,587,587,541,587,563,3153,541,3155,563,3157,587,0,0,0,3301,0,0,0,0,0,0,0,3180,0,0,0,0,0,0,0,3014656,3207168,0,2691072,0,0,3215360,0,0,3309,0,0,0,0,0,3314,0,0,0,0,0,0,0,0,0,365,0,0,0,0,131072,131072,563,563,3339,563,563,563,3343,563,563,563,563,563,563,563,563,563,26028,1360,988,587,587,1456,587,587,587,587,3362,587,587,587,587,587,587,587,587,587,587,587,587,3126,587,587,587,587,587,3371,587,587,587,587,541,541,563,563,587,587,0,0,0,3296,0,0,0,0,0,0,3557,3558,0,0,0,0,0,0,0,541,541,541,3568,541,541,541,541,541,1284,541,541,541,541,541,541,541,541,541,1303,563,563,3588,563,587,587,587,3593,587,587,587,587,587,587,587,587,2690,587,587,587,587,2694,587,587,3601,587,0,0,0,0,0,3604,3605,3606,0,3608,541,541,541,541,541,541,1813,541,541,541,541,1819,541,541,541,1360,563,3621,3622,563,563,587,587,587,587,587,587,587,587,587,3629,3630,563,563,587,587,587,587,3679,0,541,3680,563,3681,587,3682,0,541,541,541,541,1345,541,541,541,541,541,541,541,541,541,541,541,541,2560,541,541,541,358,359,0,0,0,0,0,0,0,365,0,293,0,0,0,0,0,0,306,0,0,0,0,0,0,0,0,0,0,1174,0,0,0,0,0,0,0,0,392,0,0,0,0,0,0,0,0,0,0,0,0,2495,0,0,0,474,474,474,488,0,0,488,359,359,359,510,359,359,359,359,474,559,606,582,582,582,582,582,582,582,606,606,606,559,606,606,606,606,606,606,606,606,582,582,559,582,606,582,606,1,541,541,868,541,541,541,541,541,541,541,541,541,541,904,541,541,541,541,541,2851,541,541,541,0,0,563,563,563,563,563,563,563,563,563,563,2254,563,563,563,587,1015,587,587,587,587,587,587,587,587,587,587,1051,587,587,587,587,587,2909,587,587,587,587,587,587,2917,587,587,587,587,587,1527,587,587,587,587,587,587,587,587,1538,1539,1197,0,0,0,0,0,0,0,1197,0,0,0,0,0,0,0,0,1134592,0,0,1134592,0,0,0,0,0,0,0,0,0,0,0,0,0,2980,0,0,541,541,1280,541,541,541,1289,541,541,541,541,541,541,541,541,541,541,3524,541,541,3526,563,563,1360,914,563,563,563,563,563,563,563,563,563,1372,563,563,563,1381,587,587,1543,0,1289,1473,1381,541,541,541,541,541,563,563,563,563,563,2898,563,563,563,563,563,0,0,587,587,587,587,587,587,2337,587,587,587,587,587,587,587,2352,587,587,587,587,2357,587,587,587,563,587,587,587,587,587,1079,0,0,0,1564,0,0,0,1570,0,0,0,0,0,2440,0,0,0,0,0,0,0,0,0,0,0,2871296,0,0,2424832,0,0,0,1576,0,0,0,1582,0,0,0,0,0,0,0,0,0,365,0,0,0,0,155648,0,0,1606,0,0,0,0,0,0,0,1614,1615,0,0,0,0,0,0,0,3385,3180,0,0,0,0,0,0,0,0,2097,0,0,0,0,0,0,0,0,2070,0,0,0,0,2074,0,0,0,0,0,0,1625,0,0,0,0,0,0,0,0,0,0,0,1648,0,0,0,0,563,1891,563,563,563,563,563,563,563,563,1902,563,563,563,563,563,1408,563,563,563,563,563,563,563,563,563,563,1867,563,563,563,563,563,587,1975,587,587,587,587,587,587,587,587,587,587,587,1987,587,587,587,587,1490,587,587,587,587,587,587,587,587,587,587,587,2381,587,587,587,587,2008,587,587,587,587,587,587,541,587,563,541,541,541,541,563,563,918,563,563,563,563,563,563,563,563,563,563,563,2634,563,563,563,563,0,2243,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2637,563,0,2330,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3276,587,587,587,0,0,2451,0,0,0,0,0,0,0,0,0,0,0,0,0,2471,0,2472,0,0,0,563,563,563,563,563,563,563,2593,563,563,563,563,563,1424,563,563,563,563,563,563,563,563,563,563,2293,563,563,563,563,563,563,587,2659,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2912,587,587,2916,587,587,587,587,0,0,0,0,0,2776,0,0,0,0,0,0,0,0,0,0,372,0,0,373,0,0,563,2895,563,563,563,563,563,563,563,563,563,0,0,587,587,587,587,2335,587,587,587,587,587,587,587,587,587,2947,587,587,587,587,587,541,587,563,587,2906,587,587,587,587,587,587,2913,587,2915,587,587,587,587,587,587,2935,587,587,587,587,587,587,587,587,587,2408,587,587,587,587,2177,2349,587,587,587,2944,587,587,587,587,587,587,587,587,587,541,587,563,563,563,563,563,563,563,587,587,587,541,587,587,587,0,541,587,563,541,1547,541,541,1550,563,1551,563,563,0,0,0,0,0,3561,0,0,0,541,541,541,541,541,541,541,541,3464,541,3466,3467,541,3469,541,541,541,541,3575,541,563,563,563,563,563,563,563,563,563,563,3423,563,563,563,3426,587,587,587,587,563,3587,563,563,587,587,587,587,587,587,587,587,587,587,587,3600,587,587,587,587,3670,587,0,0,0,0,541,541,541,541,563,563,919,925,563,563,563,563,943,563,563,563,563,563,563,3353,563,563,563,587,587,587,587,587,587,587,587,587,587,587,587,3267,0,0,360,0,0,0,0,0,0,365,0,293,0,0,0,0,0,0,331,0,0,0,0,0,0,0,331,0,0,69632,73728,0,419,419,0,0,65536,419,0,0,0,0,375,0,0,0,0,0,0,0,0,0,0,0,1663,0,0,0,0,0,0,360,0,0,0,0,0,0,0,0,0,0,0,0,0,2511,0,0,0,0,0,370,0,0,370,0,0,0,0,0,0,0,0,0,0,0,0,0,2496,0,0,560,607,583,583,583,583,583,583,583,607,607,607,560,607,607,607,607,607,607,607,607,583,583,560,583,607,583,607,1,541,863,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1772,541,1010,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3123,587,587,587,587,587,587,587,563,1386,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2871,563,0,0,2760,0,0,0,0,0,0,0,0,0,0,0,0,0,2755,0,0,0,0,0,0,0,2985,0,0,0,0,0,0,0,0,0,0,406,0,0,0,0,0,0,0,0,0,3302,0,3303,0,0,0,0,3180,0,0,0,0,0,0,348,0,0,0,0,0,0,0,0,0,0,2801664,0,0,0,0,2142208,0,0,0,361,362,363,364,0,0,365,0,293,0,0,0,0,0,0,348,349,350,0,0,0,0,0,0,0,0,3180,0,3388,0,0,0,0,0,0,362,0,361,0,0,0,69632,73728,0,0,0,0,428,65536,0,0,0,0,0,2463,0,0,0,0,0,0,0,0,0,0,0,2807,541,541,541,541,428,428,0,0,428,0,362,428,457,0,0,0,0,0,0,0,0,1159168,0,1159168,0,0,0,0,1159168,0,0,0,0,498,498,0,505,505,505,505,511,512,505,505,525,525,525,525,525,457,457,457,457,457,457,457,457,457,525,525,525,525,525,525,525,525,525,561,584,561,584,561,561,584,561,608,584,584,584,584,584,584,584,608,608,608,561,608,608,608,608,608,608,608,608,584,584,620,625,608,625,631,1,563,563,563,973,563,563,563,563,563,0,587,587,587,587,587,587,1963,587,587,587,587,587,587,587,587,587,3137,587,587,587,587,587,587,587,0,2105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2052,0,0,0,0,0,541,2161,541,541,541,541,541,541,541,541,541,541,541,3336,541,563,563,563,0,0,563,2245,563,563,563,563,563,563,563,563,563,563,563,563,2882,563,563,563,0,0,587,2332,587,587,587,587,587,587,587,587,587,587,587,587,3286,587,587,587,587,541,587,563,2550,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2210,541,541,541,2579,541,541,541,541,541,541,541,541,541,541,0,0,0,0,0,0,2068,0,0,0,0,0,0,0,0,0,365,0,0,122880,122880,0,0,2711,587,587,587,587,587,587,587,587,587,587,541,587,563,541,541,541,2021,563,563,562,609,585,585,585,585,585,585,585,609,609,609,562,609,609,609,609,609,609,609,609,585,585,562,585,609,585,609,1,0,0,0,705,0,0,0,0,0,0,0,0,0,0,0,0,2742,0,0,0,0,735,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2075,0,541,864,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2238,0,1011,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2689,587,587,587,587,587,587,587,587,2716,587,587,587,541,587,563,541,541,1136,0,0,0,0,0,0,0,0,0,0,365,365,0,0,0,0,0,0,2095,0,0,0,0,0,0,0,0,0,0,2375680,0,0,0,0,0,587,1503,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2911,587,2914,587,587,587,587,2919,587,563,587,587,587,587,587,1079,1560,0,0,0,1566,0,0,0,1572,0,0,0,1578,0,0,0,0,0,0,0,0,0,0,0,0,2754,0,0,0,563,563,563,563,2600,563,563,563,563,563,563,563,563,563,563,563,26028,1922,587,587,587,0,0,0,0,647,0,0,0,0,0,0,743,541,541,541,541,541,541,2178,541,541,541,541,541,541,541,541,541,0,2242,563,563,563,563,563,0,0,1594,0,0,0,0,0,0,0,0,0,0,0,0,0,2770,0,0,563,563,563,1846,563,563,563,563,563,563,563,563,563,563,563,563,3085,563,3087,563,2187,541,2189,541,541,541,541,541,541,541,541,541,541,541,541,541,1821,541,1360,0,0,563,563,563,563,2248,563,563,563,563,563,563,563,563,563,2305,563,563,563,563,563,563,563,563,563,0,587,587,994,587,587,587,563,2274,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2894,563,587,2361,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3121,587,587,587,587,587,587,587,587,563,563,541,563,587,563,587,1,2623,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,3101,563,563,563,563,2651,0,0,0,0,0,0,587,587,587,587,587,587,587,587,587,2340,587,587,587,587,0,0,3179,0,0,0,0,0,0,0,0,0,0,0,0,0,2798,0,0,3245,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,3257,563,1134592,0,1134592,0,0,0,1134592,1135008,1135008,0,0,0,0,0,1135008,0,0,0,0,0,2478,0,0,0,0,0,0,0,0,0,0,0,3180,0,0,3307,0,1134592,0,1134592,1134592,0,0,0,0,1135203,1135203,1135203,1135203,1134592,1135203,1135203,1135203,1135203,1135203,1135203,1135203,0,1134592,1134592,1134592,1134592,1135203,1134592,1135203,1,0,0,2125824,2125824,2125824,2125824,2125824,2424832,2433024,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,0,988,2125824,2125824,2125824,2125824,1147355,1147355,1147355,1147355,458,458,1147355,458,458,458,458,458,458,458,458,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,0,0,0,0,0,0,0,0,458,0,0,0,0,0,1147355,1147355,1147355,1147406,1147406,1147355,1147406,1147406,1,12290,3,0,0,0,0,249856,0,0,0,249856,0,0,0,0,0,0,0,69632,73728,0,0,0,0,425,65536,0,1159168,0,0,1159168,0,1159168,1159168,0,1159168,1159168,0,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,0,1159168,1159168,0,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,0,0,0,0,0,0,0,0,0,1159168,0,0,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1,12290,3,78115,293,0,0,0,0,0,0,0,0,0,0,0,0,131072,131072,0,0,1163264,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3170,0,913,2125824,2125824,2125824,2125824,2125824,2424832,2433024,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,0,1453,2125824,2125824,2125824,2125824,106496,0,106496,106496,0,106496,106496,106496,106496,106496,106496,106496,106496,106496,106496,106496,106496,106496,106496,106496,106496,0,0,0,106496,0,0,106496,106496,106496,106496,106496,106496,106496,106496,106496,0,0,0,0,0,0,0,0,0,0,0,2183168,0,0,0,0,0,0,0,0,2134016,0,0,0,0,0,0,0,0,0,0,541,541,541,1275,541,541,0,0,0,3117056,0,0,0,0,0,0,0,0,0,0,0,0,2979,0,0,0,0,3108864,3198976,0,0,3043328,0,3149824,2936832,0,2760704,0,2437120,0,0,0,0,0,0,2107,0,0,0,0,0,0,0,0,0,365,0,293,0,0,0,0,0,0,0,0,2875392,0,0,0,0,0,0,0,0,0,0,2834432],r.EXPECTED=[1039,1047,1048,1046,1042,1052,1056,1060,1064,1068,1446,1074,2948,2053,1092,1446,2490,1670,1213,1080,1084,1085,1446,1089,1446,1446,2818,1098,1103,1108,1187,1181,1181,1114,1118,1446,1933,1123,1446,1136,1098,1098,1204,1108,1108,1171,1181,1181,1130,1134,1446,1446,1140,1446,1147,1098,1152,1108,1108,1109,1181,1181,1182,1158,1446,1446,1238,1668,1098,1148,1108,1108,1206,1181,1181,1165,1446,3130,2162,1098,1099,1108,1177,1181,1215,1219,2143,1136,1098,1186,1110,1181,1191,3130,2153,1099,1108,1180,1217,2659,2819,1197,1173,1201,1104,1235,1210,1224,1154,1228,1232,1168,1243,1247,1251,1255,1259,1261,1266,1262,1270,1274,1278,1282,1286,1290,1220,1295,1890,1296,1446,1446,1446,1446,1375,2489,1446,1446,1446,2385,1446,1446,1446,1446,1446,1446,1446,1446,1076,1446,1446,1446,1446,2986,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1300,1304,1305,1309,1405,1315,1318,1322,1326,1330,1446,1446,1804,1334,2315,1338,2350,1142,1143,1342,1346,1446,1446,2834,1352,1362,1369,1446,1126,1446,2386,1379,1446,1384,1390,1446,2987,2588,1396,2688,1457,1446,1518,1446,1446,2269,1446,1446,1446,1402,1446,1441,1897,1409,1413,1446,1447,1419,1446,1447,1419,1446,1446,1193,1446,2988,3136,2482,1446,2617,1425,1446,1448,1431,1446,1918,1446,2648,1436,1457,1348,1457,1380,1440,1446,1445,3050,1452,1446,1456,1311,1446,1916,2325,1463,2125,1347,1472,2317,1909,1478,3010,2343,2076,2746,2758,1482,2765,2077,1799,1486,2744,1493,1358,1446,1446,2131,1446,2559,1386,1365,1497,1501,1505,1509,1515,2369,1569,2450,1522,2538,1526,1530,1536,2479,2088,1457,1971,1540,1544,1548,1552,1557,1446,2103,1446,1532,1446,2479,2082,1563,1568,2137,1573,1577,3026,1446,1446,2116,1446,1446,3027,1446,1586,1938,1584,2123,1647,1590,1432,1594,1446,2517,1600,1446,2517,1600,1446,2872,1606,1612,1616,1620,1626,1446,1239,1633,1446,1596,1640,3118,2782,1645,1651,1863,1446,1863,1446,1602,1446,2675,2173,1655,2685,1559,1866,2685,3124,1659,1665,2904,2903,3055,2673,1674,1678,3047,2266,2239,1682,1686,1690,1694,1698,2892,1702,1715,1719,1723,1727,1731,1446,2332,1773,1737,1744,1748,1751,1755,1758,1446,1772,2979,1777,1781,2506,1788,1792,1635,1636,1446,2668,2874,1796,1808,2784,1815,1819,1823,2304,1828,1446,2430,1446,1446,2334,1853,2583,1834,1843,1446,2069,1446,1446,1954,1446,1446,2070,1446,1446,1622,1608,1847,1851,1857,1641,1871,1446,2225,1956,1446,2225,1956,1446,2374,1885,1876,1811,1446,1883,1446,1947,1889,1446,1511,1446,1291,2287,1894,1901,1906,1446,1906,1446,1913,1446,1740,1922,1446,1932,1733,1446,1932,1830,1094,1732,1446,1937,2066,2439,2671,1945,1942,2455,1489,2323,1951,1709,1711,1629,1161,1962,1968,1977,1980,1984,1446,1119,1994,1999,2003,2007,2011,2015,2019,2023,1986,1872,2093,1928,2028,2032,2036,1802,2040,1446,1446,2044,1580,2050,2059,2063,2074,2046,1446,2024,2081,1446,2086,1446,1446,1988,2092,2097,2109,2113,1446,2120,1446,1446,2129,1446,1558,2135,1446,1446,2141,2535,2866,2147,1446,1990,1446,1446,3096,1446,1446,3096,1446,1446,1466,2151,2157,2204,1458,2161,1446,2914,1446,1446,1764,1446,3053,2166,2170,1446,2182,1446,2187,1446,2916,1957,2192,2202,2305,1446,2210,2496,1824,3112,2217,1761,1459,1558,2224,2229,2841,2969,2682,2815,2233,2248,2236,2243,1837,1839,2247,2252,2100,1446,1446,1446,1446,2918,1766,2256,2260,2273,2277,2281,2284,1446,2889,1902,2985,2524,2433,2299,2576,2212,2213,2303,1415,1457,2309,1958,2321,2329,1446,2976,1446,1398,1446,1553,2338,2342,2751,1446,2347,2503,2354,2358,1558,2363,1446,1995,2368,1446,1421,2364,2373,2733,2378,2383,2390,3044,1446,2715,1446,1446,1860,1446,1446,1860,2719,2733,2397,2176,2401,1946,2461,1446,1446,2405,1446,1473,2717,2413,2417,2427,2437,3061,1446,2105,1446,1973,2407,2443,2447,2454,2459,2379,1446,2465,2472,2476,2486,2511,2494,2701,2409,2500,2510,2516,2521,2528,2220,2532,2542,2546,2198,2312,2550,2554,2563,2567,2571,2575,1446,2580,2592,2596,2600,2604,2608,2612,2616,1446,2621,2393,1372,2628,2632,2636,2640,2652,3103,1446,2708,2468,2656,2665,2679,2692,1558,2699,1446,2705,1446,2998,2712,1446,2723,2624,1768,1879,3159,1446,2205,2727,1446,1468,2732,1446,2206,2982,1446,3004,2737,2741,3109,2750,1446,2755,1446,1446,2762,1446,1446,2762,2769,3037,2775,2420,2779,1446,2788,1446,1446,2795,1446,1427,2801,3020,2805,2646,1446,2812,1446,2809,1446,3067,2853,2823,2643,2183,2827,2863,2512,2832,2838,1707,1070,2359,2845,2851,2857,1964,1474,3084,2557,2878,2955,3090,2882,2293,2295,2886,2896,2900,2908,2912,1446,1446,1446,2922,2926,2930,2934,2938,2942,2946,1446,2055,2952,1355,2791,2178,2959,1867,2963,1784,2967,1446,2973,2423,2992,2996,3002,1446,2728,1446,1446,3008,1446,3014,3018,1446,3024,2188,3031,3147,1446,1446,2694,1446,1446,2847,1446,1446,2695,3035,1446,3041,3078,3141,3059,1446,1446,3065,1446,1446,3065,1446,1446,3071,1446,3075,1925,3153,1446,1446,3082,1446,1564,3088,1446,1661,3094,3100,2195,3116,1446,3122,1446,3128,1446,3134,1705,3140,2586,2797,1446,3145,2771,1392,3151,1446,3157,2290,2828,2661,2869,2422,3106,2860,2263,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1473,3163,3166,3170,3182,3186,3182,3189,3181,3182,3182,3182,3182,3177,3173,3193,3182,3197,3201,3204,3210,3214,3216,3206,3220,3224,3228,3232,3235,3239,3243,3729,3929,3929,3246,3929,3929,5383,3929,3929,3300,3929,3261,3562,3273,4078,3734,3929,3929,3929,3277,3287,3294,4847,3929,3250,3929,3929,3344,3929,4873,4873,4873,4873,3266,4873,4873,3564,3564,3567,3564,3564,3564,3564,3267,3256,3305,3562,3568,3335,4081,3929,3929,3929,3323,4919,3377,4693,3929,3252,3722,3750,3365,3315,3269,3334,4080,3732,3929,3929,3559,4873,5799,4692,3929,3929,3688,3929,3929,3560,4873,4873,4873,4195,4873,4873,4873,4874,3564,3267,3264,3331,3339,3929,3342,3929,3738,3256,3367,3317,3321,3560,4873,3564,3309,3256,3256,3365,3371,3564,3564,3564,3567,3256,3256,3256,3256,3327,4195,3564,3564,3564,3310,3365,3359,3929,3929,3813,3929,3564,3564,3564,3364,3929,5741,3559,4873,4194,3564,3564,3268,3256,4193,4873,3266,3564,3310,3256,3256,3256,3366,3348,3929,3929,3929,3505,3383,3256,3373,3766,3256,3384,3929,4872,4874,3564,3268,3256,3257,3373,4694,3929,3929,3929,3355,3566,3256,3321,4194,3565,3311,3560,3563,3384,3561,3319,3360,3388,3390,4109,3394,3401,3405,3429,3429,3429,3429,3424,3430,3412,3416,3420,3428,3434,3438,3442,3397,3446,3450,3453,3457,3460,3463,3465,3469,3473,3408,3477,3481,3485,3696,3498,4473,3929,3929,3929,3512,3511,3929,3929,3929,3517,4964,4966,3929,3523,3527,3929,3929,3929,3752,3534,3543,3929,3929,3850,3854,3578,3582,3586,3589,3590,3594,3597,3601,3604,3608,3611,3614,3618,3622,3626,4965,3648,3636,5178,3647,5820,3654,4257,3659,3929,3669,4219,3694,3703,3929,5714,3525,3929,3929,3929,3770,3790,3929,5539,3707,3929,3342,5695,3904,3929,3289,3290,3906,3929,4658,4464,5227,4306,3936,3718,3726,3743,3929,3375,3631,3929,3548,5050,5064,3749,3929,3929,3929,3836,3758,3298,3929,3929,3915,3927,4893,3528,3929,3929,3921,4548,5744,4281,3929,3929,3932,5019,3929,5587,5178,3929,3553,3557,3572,5826,3929,3929,4530,3789,3794,3929,3929,3972,4899,3798,3806,3929,3929,3972,5040,3817,3826,3929,3929,3972,5490,3785,3929,3929,3929,3869,4728,4203,3770,3790,4142,3929,3929,3929,3894,4001,3929,3929,3929,3929,3252,3798,4127,4203,3850,3854,4139,3744,3929,3929,3929,3844,5313,5832,4137,4141,3929,3650,3929,3929,4854,4858,4140,3929,3929,3929,3930,5557,3873,3929,3929,3883,3929,5107,3929,5107,4780,3929,4781,5020,3929,3929,3738,5109,3929,3290,3904,3940,3947,3946,3942,3951,3955,3956,3956,3960,3962,3963,3962,3967,3971,3929,3929,4017,4021,4708,3978,3988,3929,3683,3781,3802,3995,4392,3929,5597,5363,3530,3929,4135,4005,4013,3929,3929,4065,4070,4026,3929,3929,4026,3375,3929,3929,4049,4056,4576,3997,5403,5596,3929,3856,4795,3529,3929,3929,3929,3931,4061,3929,3929,3929,3972,4199,3911,3929,3929,3929,3974,5170,3929,3929,4704,3929,4075,5320,4248,5165,3855,4657,4085,3929,3690,4699,5178,3978,3251,3929,3929,4101,3929,5319,4247,5772,5010,4113,3981,3929,3929,4164,4148,4148,4120,3929,3929,4165,4115,4709,4132,3929,3929,4247,4459,5170,3929,3929,4706,3879,4572,4576,5321,4249,4655,3929,3929,4274,3929,3972,4146,4150,3929,3735,3929,3735,4154,4158,3929,3929,4396,3929,3929,3982,3929,3929,3929,4029,4107,3929,4706,3929,4366,4574,4181,5320,5850,4644,4180,5319,4886,4217,4208,4673,3929,3929,4424,5855,3279,5321,4215,3929,3766,4873,4873,3563,3564,4228,3929,4451,4182,4233,4305,4240,4273,4435,4246,4434,4245,4708,4241,3929,3699,4502,3698,4255,5609,4272,5609,4272,3699,5199,5610,4273,4253,3281,4246,4270,3929,3809,3929,4549,3737,3929,3896,3929,5021,3770,4271,3771,4182,5163,5161,3929,3283,5762,3710,4279,4279,4211,4127,4128,4405,3712,4286,3929,3929,3929,4052,3929,5548,3754,4301,3929,3842,3574,4534,4651,5125,3745,4537,4310,4314,4318,4319,4323,4327,4333,4334,4331,4338,4339,4339,4340,3929,3844,4827,3929,3846,3929,3929,4905,3929,3376,5780,4202,3929,3929,3929,4235,4524,5352,5187,4364,4473,3342,4273,3929,3888,5737,4840,4356,4374,4378,4842,5051,4864,3929,4387,4491,3929,4413,3929,3892,5107,3929,3665,3929,3929,4681,3640,4265,4472,3929,4802,3929,4518,3670,4266,4421,3929,4204,4203,3929,4718,4428,4432,3929,3929,3929,4451,4440,4445,3929,3929,4450,4541,4470,3929,3343,3929,3897,3929,4294,3929,4296,3929,5616,3929,5461,4463,3929,5347,4362,5468,4800,3929,3929,4457,4461,5243,3929,4484,3929,3931,5074,3929,3972,4166,4116,3929,3929,3929,4035,4737,3929,3929,3929,4505,3929,5347,4495,3929,3972,5410,5415,4015,4019,3929,3929,4457,4490,4499,3929,3929,3929,4624,5347,3929,4801,3929,3997,3929,5743,4160,3929,3929,3929,4628,3929,5704,4529,3929,3998,5353,5435,3929,5703,4528,3929,4e3,3929,3929,3999,3528,4505,5352,4800,3929,4007,4653,3929,4009,3929,4642,5697,3929,3929,3929,4695,4052,3929,3929,3929,4708,4545,3929,3929,3301,4450,3929,3929,3929,4734,3929,5303,3342,3929,4030,4480,3929,3929,3929,4516,4994,3894,3929,3895,3929,3929,3351,3892,3737,3735,3929,4039,3929,3929,4086,5090,3895,5020,3895,3737,5022,3736,3737,4554,4556,3929,3929,4638,4794,3929,3929,4668,4806,4689,3929,3929,3929,4752,4504,3929,3929,5097,4566,4022,5334,4383,5691,4570,4582,4586,4590,4594,4598,4602,4605,4608,4612,4614,4618,4634,4632,4634,4621,3929,3929,3929,4757,4725,4816,3929,4648,4662,4666,5081,4672,3929,5344,4398,4352,4678,3929,3929,4678,4687,5178,3929,3929,4745,4749,4210,3929,4965,4768,5739,3929,3929,3322,5689,3899,5181,4703,5110,5214,4713,4722,3929,4051,3558,3929,4028,4478,4500,3929,5400,4741,3929,3929,4780,3929,4780,4762,3929,3929,3929,4821,4756,4761,3929,3929,4818,4822,4505,3863,3867,3929,3341,3341,3929,4766,4294,3929,3899,3929,4066,3929,3929,4087,5091,3767,5433,4817,4683,4716,3929,5809,3929,4091,4095,3751,3972,4773,4777,3929,4107,3929,3929,4137,4141,4786,4775,3929,3929,4820,3910,4788,4777,3929,3929,4828,3972,3322,4792,3929,3929,4847,3929,5432,4816,4833,4799,3929,5147,3929,3929,4872,4873,4966,4295,4304,4814,4826,3929,3929,3929,4871,4674,3929,4708,3897,5180,5433,4832,3929,4159,3929,3377,3299,3929,4503,4708,3929,4837,3929,3929,3929,4913,5207,3929,3929,3929,4965,3929,5148,3929,4008,3929,4408,3929,4172,3929,4172,3900,5432,3628,3929,3929,3929,4856,4860,3844,5313,3929,3929,4982,3929,5086,3768,5434,3630,3929,4174,3929,4562,5312,3929,3929,3929,5003,4502,5148,4878,4885,4293,3929,3929,4296,3929,4296,3929,4229,5198,5520,3928,3929,3928,3897,4293,3929,3898,3929,5228,3899,3898,3929,4296,3929,5547,3519,4911,3929,5584,4917,3769,3929,3929,3929,4240,4273,3929,3779,3800,3744,4923,4927,4934,4935,4930,4939,4943,4949,4953,4945,4957,4957,4958,4962,3929,4247,4511,3929,3972,5871,3929,3983,3929,5572,5591,3929,4731,4359,5861,5581,4990,3929,3929,3929,5111,4846,5503,4707,5051,3929,4263,4465,3929,4282,3929,3929,3860,3929,5742,3929,3929,3737,3929,3894,5322,3929,5e3,5007,3507,3929,4290,3929,3929,4449,3929,5018,3929,3929,3642,5026,3929,3929,3929,5177,4628,3929,3300,3929,4346,3674,3681,3547,3929,3539,5030,5034,3929,3929,3929,5337,5040,3822,3929,3929,3641,5042,3929,3929,3929,5368,3643,3929,3929,3929,5405,5793,3929,3929,3929,5453,4626,3377,5052,3929,3929,3929,3721,4501,4368,3929,3546,3490,5496,5308,5793,3929,3929,5485,4370,3929,3929,5068,3972,5073,4863,3929,3513,4450,5122,3375,5406,3842,3929,3655,5793,3929,3739,4707,5781,3929,3990,3929,3929,4006,3299,4452,4369,3929,4439,4444,3929,3895,4547,3886,3929,5078,3929,3929,5048,5304,3929,5095,3929,5486,5051,4451,4368,3929,4474,4050,4057,4293,4450,3929,3929,5228,3929,5453,3929,3929,5072,4862,3929,5101,3929,3512,5742,3929,5241,5105,4986,3751,5323,3296,4502,4381,3929,4486,4034,3929,3684,3783,3744,5062,3929,3929,4209,3929,3929,3929,3560,3929,5118,3929,3929,5111,4852,4515,4382,5129,3929,4502,4176,3929,4350,5314,3549,3929,5797,3929,3929,3929,5526,5795,3929,3929,3929,5603,5136,5144,5227,4451,4236,3929,4975,3676,5063,4465,3744,4042,4464,5152,3929,4507,3865,3929,4121,5622,4297,4174,3342,5169,3342,5169,4514,3537,4561,4558,3929,4559,4453,3929,5213,4466,3929,4520,3929,3929,5170,4045,5196,5187,5174,4560,5185,4558,5193,5203,5211,5218,5221,5222,5226,3929,3929,3929,5725,3929,5232,4690,3929,4524,5352,3677,3929,3929,3929,5771,3929,5740,3929,4274,4848,5238,5247,5773,5254,5251,4704,3918,5260,5266,5262,5268,5272,5276,5280,5284,5287,5291,5294,5293,5298,5302,3929,3929,3929,5742,5425,3929,4694,5050,3546,3490,3494,3929,5318,3929,5327,3923,4464,4390,5227,3929,5816,5331,5341,3929,5782,3744,3929,4547,3770,3929,4547,3929,3736,5322,3929,5189,3929,3929,5189,5361,5367,3374,3929,4693,3929,3929,3829,3929,5372,3929,5411,3929,4704,4292,3929,3892,3929,3929,4517,5713,4819,4170,3929,5416,3991,3929,4708,4852,3929,4186,4190,3929,3765,3775,3800,5841,5084,3929,3929,5111,5157,3753,5377,5381,3929,3929,5117,3929,3929,5388,3821,3929,4708,5234,4550,3929,5393,5392,3929,4751,5041,3744,3929,3929,5048,5036,3929,5373,5397,4693,3501,3929,3929,3929,5766,4862,3929,3929,3929,5789,5048,4769,3378,3492,5429,4705,5779,3929,4781,4779,3929,4505,5110,3876,3929,3929,3929,5791,3972,5439,3839,3929,4815,3929,4778,5514,5443,3839,3929,4815,3929,5108,5841,5843,3929,3929,5139,3929,5050,5457,3492,4485,5465,3770,3878,3929,4821,3929,3929,4417,3929,3929,5472,5477,3929,4881,3929,5701,5473,5482,3929,3929,5140,3929,5478,3929,5420,3877,3546,5494,3714,3632,3929,5514,5508,3929,4907,5500,3929,4890,4880,3929,4193,4873,4873,4195,5742,3379,5773,3631,5525,3929,3929,3929,5870,5524,3760,3896,3929,5819,4519,5513,3488,5530,5351,3929,4708,4846,4159,3929,3929,3929,5155,5159,5336,5518,3761,3929,3929,5512,5536,4519,4522,3989,3929,3929,3929,4913,5518,3929,4964,4293,5179,5352,3929,3929,4125,3929,3929,4247,4402,4086,3353,3929,5556,5570,3929,5570,5578,3983,3929,5573,3929,4971,3751,3929,4253,3929,4261,5594,4522,3929,5601,3984,3929,5574,3929,4978,4224,3929,3929,5608,5571,5607,5351,5349,3929,3929,3929,5206,4827,3929,3929,4897,4901,5733,5834,3662,4782,5757,3879,5132,5614,5467,5620,5626,5630,5634,5638,5642,5646,5650,5654,5658,5662,5666,5670,5673,5677,5681,5685,3929,3929,5256,4275,5756,3929,3972,3929,4996,3929,5561,5708,5718,3929,5722,5729,3929,3888,3998,5749,3929,3929,3929,5311,3929,5731,5753,5459,3929,5014,4985,3929,4344,4461,3929,3875,5420,3929,3878,3929,3929,3929,3736,4071,4506,3929,3766,4521,4967,3929,3929,3929,5387,3820,5761,4485,3929,3929,5424,4691,5113,3998,3929,3929,5435,3873,3929,5112,5770,4234,5849,3929,3929,3929,5447,3929,5732,5805,3929,3972,4093,4097,3929,3905,3929,4408,3670,5786,3929,3929,3929,5447,4693,4517,5803,5807,3929,5046,5056,3929,4434,4245,3929,3770,5321,3929,3649,3929,3929,4977,4223,3929,5830,3929,3929,5450,5042,4423,5838,3929,3929,5507,4159,4423,5838,4248,5847,4578,5805,3929,4548,3929,3929,5813,4423,5854,3929,3929,5552,5542,5859,3929,3929,3929,5564,3929,5786,4235,3929,3929,5566,4810,4103,5807,3990,3929,5059,5357,3929,4549,3929,3929,4549,5416,3929,4674,3929,4868,5532,3929,3929,3929,5710,3929,3831,3998,3929,3929,5712,4818,3973,5866,3929,3929,5739,3929,3972,5865,3929,3929,5745,3929,4964,3929,5180,4523,5824,3832,3929,3929,3929,5777,5545,4965,3929,4409,3929,3675,3738,3973,3547,3929,3929,5841,3929,6277,6502,5875,6282,5878,6547,6266,5881,6546,5889,6232,5882,6232,5892,6221,6267,5888,5883,5884,6232,6232,6232,6232,6414,5887,5883,6232,5891,6232,6232,5894,6232,6232,5922,5937,5949,5938,5939,5949,5944,5950,5944,5944,5940,5944,5941,5952,5941,5944,5946,5945,5946,5946,5946,5946,5947,5941,5948,5952,5948,5944,5942,5954,5956,5958,5962,5960,5959,5964,5966,5967,5971,5967,5968,5967,5969,5974,5973,5976,5978,6293,5998,5875,6282,5896,6871,6437,6282,6321,6282,6282,6282,5917,6456,6456,6456,6456,5991,5906,6379,6455,5990,6019,5991,5904,5904,5904,6456,6456,5926,5899,6456,6456,5997,6282,6408,6410,6282,5932,6282,5933,6464,6024,6282,6282,6379,5924,6282,6282,5924,6282,6362,6010,5984,6282,6003,6282,6362,6282,6282,6282,6004,6456,5906,6455,5990,5904,5902,6456,6456,6456,5906,6457,6019,6019,5904,5904,6456,6456,6282,6282,6282,5980,5917,6456,6456,6456,6455,5905,6456,6445,5926,5926,5926,5926,6032,6032,6008,5932,6282,6282,6282,6434,6024,6282,6019,5904,6456,6282,5896,6873,6282,6282,6282,6474,5903,6457,6019,5904,6456,6229,5904,6456,6456,6456,6018,6457,6019,5991,5905,5906,6282,6282,6282,5984,6282,6282,6282,5925,6543,5905,6456,6456,6456,6282,5905,6229,5905,6229,5905,6282,6650,6437,6043,6515,6056,6672,6088,6052,6515,6520,6054,6060,6058,6515,6515,6083,6528,6101,6761,6518,6521,6516,6517,6063,6065,6068,6061,6057,6515,6515,6519,6515,6070,6072,6066,6515,6515,6515,6515,6125,6522,6074,6515,6515,6076,6515,6523,6079,6082,6515,6081,6055,6091,6089,6090,6093,6114,6092,6113,6114,6114,6114,6114,6115,6117,6116,6117,6117,6118,6119,6120,6121,6121,6095,6097,6099,6122,6123,6124,6524,5900,6515,6518,6103,6108,6110,6104,6105,6109,6106,6112,6121,6127,6129,6282,5899,6282,5925,6463,6321,6282,6294,6006,6378,6282,6508,6282,6449,6646,6218,6604,6282,6524,6291,6282,6774,6282,6270,6282,6282,6282,6e3,6e3,6027,6161,6282,6282,5895,6375,6282,6312,6230,6366,6265,5876,6282,6282,6282,6015,6406,6282,6284,6027,6027,6137,6282,6282,6379,6281,6372,6028,6159,6282,5899,6282,6282,6282,6573,6282,6282,6467,6282,6311,6312,6372,6282,6282,6282,6019,6019,5904,5904,5904,5904,5905,6456,6456,6031,6154,6158,6282,6149,6273,6282,6163,6282,6677,6280,6166,6279,6682,6685,6501,6173,6175,6178,6178,6178,6178,6176,6181,6180,6181,6181,6183,6181,6185,6187,6188,6188,6188,6194,6193,6194,6193,6193,6189,6191,6190,6190,6196,6196,6198,6203,6202,6204,6208,6203,6205,6199,6200,6210,6206,6212,6282,6282,5896,6282,6282,6282,6512,6282,6150,6135,6320,6500,6163,6282,6282,6282,6026,6282,6026,6166,6282,6282,6282,6027,6221,6282,6505,6282,6282,6282,6032,6238,6282,6241,6282,5899,6451,6282,5913,6669,6401,6238,6282,6282,6282,6037,6245,6282,6282,6282,6040,6282,6282,6225,6248,6282,6282,5916,6722,6377,6247,6249,6282,6282,5924,6370,6252,6253,6282,6282,5932,6282,6282,6530,5924,6254,6282,6282,6254,6282,6322,6228,6282,5933,6378,6282,6378,6282,6452,6282,6432,6317,6282,5917,6086,6725,6727,6216,6086,6726,6450,6231,5926,5933,6008,6008,6008,6282,6282,6282,5918,6282,6282,6282,5923,6309,6683,6282,6282,6282,6148,6216,6308,6310,6282,6282,6282,6149,6282,5903,6397,6605,6282,6282,5933,5933,5933,6780,6282,6282,6282,6229,6282,6282,6282,5933,5924,6316,5917,6723,6377,5916,6722,6323,6448,6454,6216,6332,6436,6683,6282,5917,6328,6465,6450,6217,6231,6160,6436,6683,6328,6448,6454,6216,6610,6436,6683,6282,6221,6602,6310,6282,5984,5899,5925,6229,6435,6500,6281,6722,6013,6465,6450,6160,6603,6683,6282,6282,6231,6218,6310,6282,5984,6282,6283,6043,5914,6282,5933,6328,6465,6450,6647,6604,6282,6e3,6282,6282,6283,6277,6707,6733,6282,6722,6465,6230,6396,6282,6282,6282,6235,6686,6282,6708,6281,6282,6e3,6437,6362,6338,6279,6282,6282,6283,6444,6145,6683,6282,6282,5933,6003,6282,6282,6282,6006,6375,6465,6708,6282,6005,6282,6282,6287,6289,6282,6548,6282,6282,5933,6282,6282,6282,6137,6282,6282,6020,6282,6375,6282,6282,6282,6281,6471,6218,6683,6282,6282,6282,6370,5984,6282,6010,6795,5984,5899,6282,6282,6661,6282,6e3,6137,6282,6282,6282,6282,5896,5914,6704,6273,5928,6340,6344,6503,6348,6349,6349,6350,6355,6352,6349,6349,6349,6349,6354,6355,6355,6355,6356,6357,6357,6357,6357,6357,6358,6359,6359,6359,6359,6383,6360,6382,6382,6382,6361,6282,6282,6282,6283,6043,5903,5897,6485,6376,6395,6425,6282,6282,6282,6293,6291,6338,6282,6282,6282,6284,6282,6282,6345,6282,6282,6291,6282,6282,6282,6230,5876,6282,6407,6282,6282,6282,6286,6282,6282,6037,6411,6417,6282,6282,5979,5903,6470,6313,6647,6281,6282,6282,6408,6416,6418,6282,6282,5979,6525,6458,6342,6422,6282,6282,6282,6288,6282,6664,6731,6282,6012,6e3,6282,6012,6335,6310,5985,6504,6282,6282,6273,6470,6372,6273,6504,6385,6282,6282,6412,6257,6598,6600,6282,6411,6413,6597,6599,6599,6282,6282,6282,6291,6410,6282,6322,6451,5926,5926,6008,6008,6008,5932,6236,6282,6282,6282,6292,5982,6282,6283,6442,6050,6013,6609,6259,6424,6310,6282,5919,5920,6282,6282,6011,5916,6282,6664,6282,6282,6023,6437,6459,5983,6013,6594,6700,6437,6282,6424,6437,6282,6282,6235,6480,6481,6282,6282,6133,6282,6282,6485,6376,6647,6282,6016,6282,6282,5933,6330,6454,6217,6683,6282,6282,6484,5917,5929,6011,6608,6259,6425,6282,6486,5983,6013,6594,6786,6437,6282,6282,6282,6294,6282,6283,6484,5917,5983,6013,6531,6471,6282,6282,6146,6683,6282,6282,6155,6282,6282,6385,6282,6322,6282,6282,6275,6493,5917,5983,6324,6259,6729,6282,6019,6019,6019,5991,5904,6277,5903,6531,6011,6148,6282,6282,6282,6234,6531,6282,6282,6282,6322,6282,6133,6372,6505,6282,6230,6282,6282,6171,6756,6531,6046,6834,6437,6282,6282,6285,6530,5924,6282,6684,6282,6149,6282,6282,6282,6325,6285,6530,6045,6159,6024,6046,6386,6282,6282,6282,6372,6282,6294,6282,6530,6464,6386,6282,6282,6215,6224,5933,5924,6410,6282,6040,6282,6482,6282,6282,6282,6531,6536,6024,6282,6282,6282,6370,5987,6282,6535,6282,6282,6227,6282,6282,6282,6378,6378,6378,6282,6452,5994,6282,6282,6282,6394,6282,6282,6282,6404,6539,6333,6683,6282,6020,6282,6282,6282,6341,6282,6570,6300,6569,6301,6370,6545,6300,6302,6303,6303,6303,6303,6303,6304,6551,6554,6552,6561,6552,6555,6563,6564,6563,6563,6563,6563,6564,6556,6557,6557,6557,6557,6558,6372,6273,6282,6282,6243,6282,6509,6566,6282,6282,6271,6213,6282,6283,6568,6282,6021,6041,6282,6027,6282,6321,6282,6006,6282,6282,6027,6462,6282,6282,6282,6572,6282,6168,6282,6575,6510,6282,6029,6282,6282,6282,6588,5907,5909,5911,6282,6036,6282,6282,6388,6407,5908,5910,6282,6282,6272,6282,6526,6282,5916,6322,6282,6378,6282,6020,6282,6278,6282,6282,6394,5924,6278,6282,6283,6502,6365,6282,6579,6282,6282,6275,6525,5914,5992,6371,6048,6365,6367,6369,6282,6282,6277,6531,6046,6275,6583,5993,6047,6256,6256,6366,6368,6282,6282,6452,6e3,6282,6282,6282,6408,6282,6027,6282,6372,6526,6282,5899,6539,6664,6682,6282,6282,6282,6146,6282,6482,6282,6006,6451,6282,6282,6282,5985,6458,6342,6313,6136,6152,6282,6037,6378,6282,6282,6282,6421,6584,6020,6437,6683,6282,6027,6321,6282,6451,6646,6152,6282,6282,6282,6410,6282,6282,6282,6375,6282,6e3,6526,6322,6533,6682,6282,6408,6282,6282,6282,6505,6282,6282,6278,6282,6282,6282,6143,6371,6472,6282,6282,6282,6423,6539,6437,6683,6282,6040,6148,6040,6149,6273,6229,6682,6282,6470,6282,6282,6283,6282,6282,6282,6524,6548,5933,6282,5933,6282,6434,6410,6282,6282,6434,6537,6282,6664,6491,6866,5876,6482,6491,6282,6282,6283,6410,6282,6427,6282,6282,5980,6011,6276,6037,6285,6038,6590,6783,6607,6612,6620,6619,6620,6620,6616,6620,6620,6618,6622,6620,6614,6613,6624,6627,6626,6627,6627,6628,6630,6630,6634,6630,6632,6631,6630,6630,6630,6636,6638,6638,6637,6637,6640,6641,6282,6132,6282,6282,5895,5924,5984,6282,6640,6637,6640,6640,6640,6640,6505,5903,6644,6331,6649,6282,6282,6229,5879,6282,6527,6653,6148,6282,6137,5924,6282,6282,6282,6230,6281,6282,6282,6306,6402,6433,6346,6656,6658,6549,6282,6282,6283,6475,6423,6282,6282,6282,6437,6682,5912,6668,6400,6282,6157,6282,6282,5896,6451,5980,5917,6029,6221,6281,6282,6282,6524,6282,6282,6282,5930,6664,6282,6264,6683,6694,6282,6282,6282,6452,6282,6282,6282,6285,5897,6453,6654,6282,6346,6295,6282,6282,6283,6582,6297,6282,6681,6282,6164,6024,6282,6133,6451,6282,5988,6281,6285,5980,6458,6371,6263,6647,6281,6282,6676,6282,6676,6514,5903,6680,6465,6489,5995,6282,6282,6283,6496,6085,6282,6513,6525,6679,6688,6688,6399,6713,6281,6282,6286,6282,6037,6282,6282,6282,5899,6691,6497,6724,6488,6734,6282,6282,6282,6498,6282,6282,6282,6255,6282,6283,6691,6696,6724,6488,6698,6331,6222,6282,6282,6282,6431,6296,6282,6282,6282,6499,6282,6282,5903,6464,6231,6734,6696,6134,6733,6281,6693,6282,6282,6434,6282,6282,6282,6277,6525,6531,6471,6218,6231,6490,6282,6282,6282,6504,6548,6282,6283,6278,6282,6275,6710,6733,6282,6169,6282,6282,6509,6003,6712,6282,6282,6282,6508,5899,6702,6490,6282,6282,6283,6861,6854,6033,6858,6646,6218,6604,6282,6282,6282,6577,6286,6282,6394,6282,6229,6019,6019,6019,6019,5904,6286,6282,6137,6282,6229,6282,6292,6229,6282,6282,6372,6505,6282,6437,6683,6282,6229,6146,6265,6282,6283,6525,5927,6539,6729,6683,6282,6282,6650,6282,6282,6283,6863,6364,6024,6282,6282,6283,6869,6282,6362,6282,6362,6363,6010,6592,5925,6719,6591,6593,6718,6721,5934,5934,5935,6469,6736,5934,5934,5934,6736,6738,6742,6740,6739,6744,6746,6751,6751,6752,6753,6747,6748,6748,6748,6749,6751,6751,6751,6753,6753,6753,6753,6758,6754,6755,6282,6282,6285,6282,6282,6282,6014,6760,5981,6007,6728,6282,6763,6282,6282,6285,6496,6531,6282,6283,6768,6770,6282,6282,6282,6539,6392,6282,6282,6392,6027,6156,6282,6282,6293,6586,6282,6373,6281,6285,6507,5903,6470,6326,6505,6659,6282,6234,6229,5879,6283,6496,6703,6776,6704,6777,6282,6282,6282,6548,6282,5918,6025,6282,6282,6026,6282,6286,6505,6394,6282,6291,6370,6282,6370,6282,6496,6085,6831,6147,6603,6683,6282,6380,6282,6282,6370,6282,6282,6282,6003,6282,6294,6336,6e3,6282,6239,6846,6282,6260,6282,6282,6282,6642,6379,6282,6505,6336,6283,6702,6782,6319,6218,6604,6282,6785,5999,6282,6269,6663,6282,6140,6282,6282,6393,6282,5982,6724,6319,6218,6604,6539,6310,6282,6282,6375,6370,6375,6788,6320,6310,6e3,6e3,6282,6282,6375,6548,6282,6282,6282,6275,6084,6447,6282,6788,6429,6683,6282,6282,6664,6683,6282,6273,6541,6148,6282,6394,6e3,6282,6274,6282,6003,6318,6429,6683,6282,6275,5898,5915,6282,6282,6370,6370,6370,6664,6282,6683,6282,6410,6282,6699,6282,6275,5901,5982,6724,6291,6282,6282,6531,6689,6282,6282,6220,6282,6537,6282,6282,6282,6664,6146,6282,6282,6434,6281,6282,6282,6282,6020,6282,6006,6410,6408,6282,6027,6282,6282,6250,6843,6434,6410,6282,6434,6410,6282,6408,6282,6322,6282,6410,6410,6027,6282,6275,6702,6231,6490,6146,6282,6146,6282,6282,6282,6671,6146,6410,6408,6408,6409,6409,6409,6409,6409,6282,6282,6282,6682,6282,6282,6285,6039,6216,6221,6281,6286,6282,6282,6790,6543,6282,6505,6003,6282,6559,6282,6282,6559,6508,6792,6282,6077,6139,6282,6282,6379,6374,6793,6806,6798,6798,6801,6799,6798,6799,6798,6797,6803,6808,6807,6808,6805,6808,6809,6810,6813,6814,6815,6816,6815,6818,6811,6813,6811,6813,6820,6822,6822,6821,6821,6824,6824,6824,6824,6821,6824,6824,6828,6825,6826,6282,6282,6282,6683,6282,6282,6689,6439,6282,6277,6715,6282,6282,6282,6510,6035,6282,6282,6282,6684,6282,6282,6282,6233,6282,6716,6282,6580,6419,6282,6836,6282,6281,6282,6282,6283,6293,6337,6282,6838,6840,6282,6282,6666,6282,6143,6292,6282,6282,6292,6282,6282,6282,6378,6845,6282,6282,6845,6282,6487,6282,6282,6391,6391,6651,6282,6282,6282,6730,6512,6282,6282,6282,6830,6853,5931,6141,6428,6602,6604,6282,6282,6409,6410,6282,6852,6854,6856,6450,6002,6282,6001,6003,6282,6645,6231,6281,6282,6282,6674,6282,6167,6282,6282,6e3,6282,6e3,6034,6282,6282,6282,6848,6282,6394,6683,6282,6282,5933,6003,5933,6003,6282,6830,6645,6231,6222,6487,6282,6024,6282,6282,6693,6282,6282,6282,6464,6861,6854,6009,6377,6525,5931,6011,6465,6282,6830,5885,6282,6282,6702,5931,6319,6436,6683,5916,6282,6282,5925,6282,6282,6448,6282,6282,6931,6282,6282,6451,6282,6282,6282,6860,6044,6011,6465,6449,6647,6310,6282,6282,6142,6436,6683,6282,6282,6732,5924,5984,6861,5983,6377,6454,5982,6321,6282,6294,6138,6282,6461,6151,6437,6282,6282,6732,6772,6860,5983,6465,6151,6437,6282,6865,6282,6282,6282,6860,6337,6437,6282,6282,6466,6282,6144,6436,6282,6282,6282,6868,6219,6282,6282,6282,6468,6282,6282,6732,6282,5916,6262,6299,6282,5918,5918,5918,6378,6282,6282,6526,6282,6148,6282,6283,6293,6586,6292,6502,6437,6282,6282,6282,6294,6282,6292,6294,6282,6282,6474,5980,6293,6291,6282,6282,6292,6502,6282,6278,6294,6282,6278,6282,6282,6765,6282,6229,6362,6282,6230,6320,6500,6282,6505,6282,6292,6502,6282,6505,6233,6282,6282,6293,6282,6282,6282,6474,6478,6291,6278,6282,6282,6292,6531,6536,6875,6255,6282,6282,6476,6282,6006,6255,6282,6006,6390,6282,6314,6049,6282,6877,6878,6881,6375,6880,5930,6282,6532,6542,6883,6596,6258,6885,6596,6595,6595,6886,6889,6595,6888,6890,6889,6892,6897,6893,6894,6895,6899,6900,6905,6905,6901,6902,6912,6903,6902,6906,6905,6906,6905,6906,6907,6909,6908,6910,6914,6908,6908,6922,6922,6921,6922,6923,6916,6917,6918,6920,6926,6925,6928,6460,6371,6282,6282,6482,5932,6321,6285,6282,6282,6494,6371,6930,6282,6282,6282,6505,6494,6371,6130,6282,6282,6282,6505,6506,6282,6282,6282,6312,6933,6282,6505,6935,6282,6282,6937,6282,6282,6767,6769,6290,6282,6282,6282,6505,6692,6011,6313,6291,6233,6282,6282,6508,6282,6282,6282,5916,6030,6282,6423,6170,6282,6282,6170,6011,6372,6282,5916,6282,6282,5915,6451,6440,6282,6282,5918,6322,6283,6939,6446,6705,6447,6291,6282,6282,6294,6282,6282,6282,6438,6282,6282,6511,6282,6282,6282,6842,6149,6282,6149,6282,6282,6779,6007,6728,6310,6282,6282,6319,6310,6282,6282,6363,6282,6692,6011,6372,5916,6282,5915,6282,6282,6511,6268,6286,6282,5924,6282,6282,6833,6282,6279,6398,6282,6282,6014,6282,6282,6282,6601,6282,6439,5933,6133,6282,6148,6282,6255,6282,5914,5931,6705,6282,6282,6850,6282,6850,6282,6372,6282,6372,6282,6149,6282,6505,5914,5931,6291,6282,6282,5982,6585,6282,6282,6660,6291,6043,5914,6291,6282,6282,6283,6043,5899,6282,6282,1048576,1073741824,2147483648,1075838976,2097152,2147483648,4194560,4196352,-2143289344,-2143289344,4194304,2147483648,37748736,541065216,541065216,-2143289344,4198144,4196352,276901888,8540160,4194304,1,4,16,64,0,48,64,32,64,64,96,0,59,140224,5505024,-1887436800,0,63,64,128,0,64,256,0,110,110,8425488,4194304,1024,0,128,128,512,512,1024,1024,2048,0,256,256,257,37748736,742391808,742391808,775946240,-1371537408,775946240,4718592,775946240,775946240,171966464,171966464,775946240,239075328,-1405091840,-1371537408,239075328,171966464,64,4718592,2097216,4720640,541589504,4194368,4194368,541065280,541589504,4194400,-2143289280,4194368,-2143285440,-2143285408,-2143285408,-2109730976,775946336,776470528,-2143285408,776470528,775946304,775946304,-1908404384,775946304,-1908404384,2,8,32,128,1024,4096,0,260,8392704,0,1856,64,524288,64,896,8192,67108864,2147483648,96,262144,262144,8192,0,288,8388608,0,384,0,512,2048,2048,4096,4096,8192,8192,16384,0,520,520,96,524288,524288,0,2432,2048,268435456,0,24576,0,32768,32768,65536,1048576,128,2048,12288,0,12289,0,16384,16384,32768,0,1864,2,16,1024,98304,131072,262144,1048576,512,5120,2,536936448,80,528,528,2097168,2097168,268435472,524304,1048592,2097168,24,560,48,2097680,1048592,3145744,1048592,20,560,48,3146256,2097552,3146256,28,16,8192,2,2098064,163577856,17,21,112,128,3584,8192,2228784,-161430188,-161430188,-161429680,-161430188,-161429676,-161430188,-161298576,-160299088,-161298576,-161298572,-160774288,-160299084,146804757,146812949,146862101,146863389,146863389,148960541,-161429740,-161429676,146863421,148960541,146863389,-161429676,-160905388,-161429676,-161429676,-161429675,-161349072,-161349072,-161347728,-161347728,-161298572,-161298572,-160774284,-161298572,16,262160,-18860267,-160774284,-18729163,0,58368,159383552,0,65536,2097152,8388608,33554432,0,66048,0,77824,524288,33554432,1024,262144,2097152,16777216,67108864,0,131072,524288,134217728,2147483648,1,32768,196608,0,131328,131072,16777216,100663296,-1073741824,164096,0,131584,2621440,0,139264,0,150528,0,235712,16777216,1073774592,1226014816,100665360,-2046818288,100665360,100665360,-2044196848,1091799136,1091799136,1091803360,1091799136,1158908e3,1158908001,1192462432,1192462448,1192462448,1870638912,1870655296,1870638912,1200851056,1200851056,1091799393,1870655296,1870655296,1870655312,1870655316,1870655312,1870655312,1870638928,1870655316,1870655316,1870655317,1870655316,1879043952,1870655348,1870655316,1879027568,1879043952,1879043956,0,284672,229440,1048576,2097152,67108864,134217728,8,4194304,16777216,2147483648,1224736768,0,503616,2048,100663296,0,524288,2097152,4194304,4194304,0,40,0,44,-2046820352,0,605503,231488,1090519040,1157627904,1191182336,9437184,231744,52e4,7864320,1862270976,0,867391,1862270976,1862270976,16252928,0,1048576,4194304,25165824,25165824,33554432,8192,98304,1048576,8388608,134217728,268435456,4194432,3145728,0,24,0,29,0,32,1,2,2,4,0,2147483648,2147483648,0,0,1,0,2,0,3,240,19456,262144,0,4,8,0,6,0,7,150994944,0,1049088,1049088,12845065,12845065,147193865,128,6144,4194304,251658240,536870912,1073741824,32768,131072,1048576,4096,83886080,117440512,0,3145728,16777216,134217728,0,2048,8192,229376,0,2304,1536,8192,1536,65536,4194304,67108864,536870912,9216,33554432,262144,134217728,1073741824,50331649,9476,512,8192,134218240,1050624,0,5242880,1275208192,4194312,4194312,4194344,4194312,541065224,4203820,-869654016,-869654016,1279402504,1279402504,2143549415,2143549415,2143549423,0,8388608,4096,4194304,8388608,16777216,33554432,-1946157056,0,8192,131072,0,1792,0,1024,8192,65536,0,1536,2147483648,2143549423,2143549423,2143549415,1,16777216,268435456,512,139264,2760704,-872415232,0,19947520,0,33554432,67108864,1073741824,1073741824,262144,7340032,-2030043136,0,331776,300,4203520,4333568,1275068416,0,16777216,16777216,0,999,259072,4194304,4194432,999,29619200,2113929216,0,58720256,1007,1007,0,67108864,402653184,536870912,2048,1048576,16777216,536870912,300,0,83886080,0,2097152,134217728,536870912,0,49152,0,57344,102,384,6,96,128,3072,16384,65536,524288,1048576,0,4096,262144,524288,96,96,64,384,512,4096,65536,131072,1024,65536,262144,131072,32768,256,384,8192,33554432,2147483648,1,6,8,8388608,96,384,104,104,0,134217728,6,32,256,512,65536,7340032,50331648,0,8396800,4,32,384,4,64,1024,2097152,268435456,1073741824,8,262144,512,0,8,8,16,0,9,0,12,0,15,16,16,17,20,16,20,48,16,28,0,16,32,0,21,53,4,256,1024,524288,536870912,256,65536,16777216,1073741824,2048,524288,32,4100,1024,134217728,1049088,270532608,2097152,2097152,0,23,5505537,5587457,5591557,147202057,5587457,13894153,-1881791493,-1881791493,0,134218752,5587465,5587457,13894153,13894153,81003049,4456448,8388608,5505024,0,134348800,134348800,82432,0,142606336,5,86528,41,75497472,81920,0,184549376,2,56,64,2048,262144,536870912,2048,134217728,-2113929216,16777216,1073743872,268435968,229376,25165824,92274688,25165824,100663296,402653184,1610612736,0,100663296,134217728,805306368,1073741824,8388608,268567040,16384,229376,4194304,117440512,2113544,68423701,-2079059883,-2079059947,85200917,68423701,68423765,68489237,68423701,68423701,72618005,68423701,68425749,68423703,85200919,69488664,69488664,70537244,70537245,70537245,-2076946339,-2076946403,70537245,70537309,70539293,-2022351745,-2022351617,-2022351745,-2022351617,-2022351617,0,243269632,256,32768,1048576,33554432,134217728,-2113929216,0,268435456,49152,266240,1048576,67108864,-2080374784,-2080374784,268288,0,301989888,0,318767104,282624,0,536870912,28,3145728,192,351232,7340032,5,16,1049104,12,3145728,13,0,1073741825,192,3072,20480,0,1073741824,0,262144,2621440,-1073741824,20480,65536,268435456,14,32,512,131072,268435456,192,1024,64,32768,33554432,268435456,4,128,3840,16384,262144,128,2097152,1073741824,4,2097152,4,50331648,67108864,128,50331648,1073741824,128,268435968,268435968,268436032,256,1536,2048,16384,98304,393216,524288,268435456,536870912,9216,0,4194304,50331648,2147483648,256,536871168,-1879046336,-1879046334,-1879046326,-1879046334,1073744256,-1879046334,-1879046326,-1845491902,-1878784182,268444480,268436288,268436288,268436289,268444480,268444480,2100318149,2100318149,2100326341,0,1090519040,2100326341,2100326341,1,16,536936448,576,0,832,8192,1,4036,19939328,2080374784,0,1,1024,768,8192,16384,19922944,2080374784,1,128,4096,3584,16384,524288,8,33554432,402653184,2048,3145728,128,131072,268500992,4243456,4096,1048588,0,1258292224,1124073472,1124073472,1124073488,1124073474,1124073472,1392574464,1124073472,1073754113,12289,1124073472,12289,12289,1098920193,1132474625,1098920209,1132474625,1132474625,1124085761,1124085761,1124085777,1258304513,1124085761,1400975617,2132360255,2132622399,2132360255,2132622399,2132622399,2141011263,0,2140749119,2141011263,2,16384,3145728,12545,25165824,268435456,12305,13313,12561,0,78081,327155712,605247,1058013184,1073741824,867647,1066401792,0,1,12288,256,8388608,1,30,32,1024,2048,339968,327680,524288,1,14,16,14,1024,16384,4194304,134217728,1,12,1024,8,134217728,8,536870912,9437184,0,68157440,137363456,0,137363456,66,66,100680704,25165824,26214400,92274688,25165952,93323264,92274688,92274688,92274720,93323264,25165890,100721928,100721928,100787464,100721664,100721664,100853e3,100721928,125977600,125846528,125846528,125846560,125977600,125977600,127026176,281843,281843,1330419,281843,126895104,125846528,1330419,1330419,72633587,5524723,72633587,92556531,93605107,93605107,5524723,5524723,39079155,97799411,127290611,127290611,131484915,0,17408,33554432,1073741824,58624,0,124160,189696,148480,50331648,2,112],r.TOKEN=["(0)","PragmaContents","DirCommentContents","DirPIContents","CDataSection","Wildcard","EQName","URILiteral","IntegerLiteral","DecimalLiteral","DoubleLiteral","StringLiteral","PredefinedEntityRef","'\"\"'","EscapeApos","ElementContentChar","QuotAttrContentChar","AposAttrContentChar","PITarget","NCName","QName","S","S","CharRef","CommentContents","EOF","'!'","'!='","'\"'","'#'","'#)'","'$'","'%'","''''","'('","'(#'","'(:'","')'","'*'","'*'","'+'","','","'-'","'-->'","'.'","'..'","'/'","'//'","'/>'","':'","':)'","'::'","':='","';'","'<'","'<!--'","'</'","'<<'","'<='","'<?'","'='","'>'","'>='","'>>'","'?'","'?>'","'@'","'NaN'","'['","']'","'after'","'all'","'allowing'","'ancestor'","'ancestor-or-self'","'and'","'any'","'append'","'array'","'as'","'ascending'","'at'","'attribute'","'base-uri'","'before'","'boundary-space'","'break'","'by'","'case'","'cast'","'castable'","'catch'","'check'","'child'","'collation'","'collection'","'comment'","'constraint'","'construction'","'contains'","'content'","'context'","'continue'","'copy'","'copy-namespaces'","'count'","'decimal-format'","'decimal-separator'","'declare'","'default'","'delete'","'descendant'","'descendant-or-self'","'descending'","'diacritics'","'different'","'digit'","'distance'","'div'","'document'","'document-node'","'element'","'else'","'empty'","'empty-sequence'","'encoding'","'end'","'entire'","'eq'","'every'","'exactly'","'except'","'exit'","'external'","'first'","'following'","'following-sibling'","'for'","'foreach'","'foreign'","'from'","'ft-option'","'ftand'","'ftnot'","'ftor'","'function'","'ge'","'greatest'","'group'","'grouping-separator'","'gt'","'idiv'","'if'","'import'","'in'","'index'","'infinity'","'inherit'","'insensitive'","'insert'","'instance'","'integrity'","'intersect'","'into'","'is'","'item'","'json'","'json-item'","'key'","'language'","'last'","'lax'","'le'","'least'","'let'","'levels'","'loop'","'lowercase'","'lt'","'minus-sign'","'mod'","'modify'","'module'","'most'","'namespace'","'namespace-node'","'ne'","'next'","'no'","'no-inherit'","'no-preserve'","'node'","'nodes'","'not'","'object'","'occurs'","'of'","'on'","'only'","'option'","'or'","'order'","'ordered'","'ordering'","'paragraph'","'paragraphs'","'parent'","'pattern-separator'","'per-mille'","'percent'","'phrase'","'position'","'preceding'","'preceding-sibling'","'preserve'","'previous'","'processing-instruction'","'relationship'","'rename'","'replace'","'return'","'returning'","'revalidation'","'same'","'satisfies'","'schema'","'schema-attribute'","'schema-element'","'score'","'self'","'sensitive'","'sentence'","'sentences'","'skip'","'sliding'","'some'","'stable'","'start'","'stemming'","'stop'","'strict'","'strip'","'structured-item'","'switch'","'text'","'then'","'thesaurus'","'times'","'to'","'treat'","'try'","'tumbling'","'type'","'typeswitch'","'union'","'unique'","'unordered'","'updating'","'uppercase'","'using'","'validate'","'value'","'variable'","'version'","'weight'","'when'","'where'","'while'","'wildcards'","'window'","'with'","'without'","'word'","'words'","'xquery'","'zero-digit'","'{'","'{{'","'{|'","'|'","'||'","'|}'","'}'","'}}'"]},{}],11:[function(e,t,n){"use strict";n.TreeOps={flatten:function(e){var t=this,n="";if(!e)throw new Error("Invalid node found");return e.value===undefined?e.children.forEach(function(e){n+=t.flatten(e)}):n+=e.value,n},concat:function(e,t,n){var r=n?{}:e;n&&Object.keys(e).forEach(function(t){r[t]=e[t]});var i=Object.keys(t);return i.forEach(function(e){r[e]=t[e]}),r},removeParentPtr:function(e){e.getParent!==undefined&&delete e.getParent;for(var t in e.children){var n=e.children[t];this.removeParentPtr(n)}},inRange:function(e,t,n){if(e&&e.sl<=t.line&&t.line<=e.el){if(e.sl<t.line&&t.line<e.el)return!0;if(e.sl===t.line&&t.line<e.el)return e.sc<=t.col;if(e.sl===t.line&&e.el===t.line)return e.sc<=t.col&&t.col<=e.ec+(n?1:0);if(e.sl<t.line&&e.el===t.line)return t.col<=e.ec+(n?1:0)}},findNode:function(e,t){if(!e)return;var n=e.pos;if(this.inRange(n,t)===!0){for(var r in e.children){var i=e.children[r],s=this.findNode(i,t);if(s!==undefined)return s}return e}return},astAsXML:function(e,t){var n="";t=t?t:"",e.value&&(n+=t+"<"+e.name+">"+e.value+"</"+e.name+">\n"),n+=t+"<"+e.name+">\n";var r=this;return e.children.forEach(function(e){n+=r.astAsXML(e,t+" ")}),n+=t+"</"+e.name+">\n",n}}},{}],12:[function(e,t,n){"use strict";var r=e("./parsers/JSONiqParser").JSONiqParser,i=e("./parsers/XQueryParser").XQueryParser,s=e("./parsers/JSONParseTreeHandler").JSONParseTreeHandler,o=e("./compiler/translator").Translator,u=e("./formatter/style_checker").StyleChecker,a=e("../lib/completion/completer"),f=n.createStaticContext=function(){var t=e("./compiler/static_context").StaticContext;return new t},l=function(e,t){return e?(Object.keys(t).forEach(function(n){e[n]===undefined&&(e[n]=t[n])}),e):t},c=function(e,t,n){var r=e.substring(0,t),i=e.substring(0,n),s=r.split("\n").length,o=t-r.lastIndexOf("\n"),u=i.split("\n").length,a=n-i.lastIndexOf("\n"),f={sl:s-1,sc:o-1,el:u-1,ec:a-1};return f};n.XQLint=function(e,t){t=t?t:{},t=l(t,{styleCheck:!1});var n;this.getAST=function(){return n};var h=[];this.getMarkers=function(){return h},this.getMarkers=function(e){var t=[];return h.forEach(function(n){(n.type===e||e===undefined)&&t.push(n)}),t},this.getErrors=function(){return this.getMarkers("error")},this.getWarnings=function(){return this.getMarkers("warning")},this.getCompletions=function(t){return a.complete(e,n,d,t)};var p=!1;this.hasSyntaxError=function(){return p};var d=t.staticContext?t.staticContext:f(),v=t.fileName?t.fileName:"",m=v.substring(v.length-".jq".length).indexOf(".jq")!==-1&&e.indexOf("xquery version")!==0||e.indexOf("jsoniq version")===0,g=new s(e),y=m?new r(e,g):new i(e,g);try{y.parse_XQuery()}catch(b){if(!(b instanceof y.ParseException))throw b;p=!0,g.closeParseTree();var w=c(e,b.getBegin(),b.getEnd()),E=y.getErrorMessage(b);w.sc===w.ec&&w.ec++,h.push({pos:w,type:"error",level:"error",message:E})}n=g.getParseTree(),t.styleCheck&&(h=h.concat((new u(n,e)).getMarkers()));var S=new o(d,n);h=h.concat(S.getMarkers())}},{"../lib/completion/completer":6,"./compiler/static_context":4,"./compiler/translator":5,"./formatter/style_checker":7,"./parsers/JSONParseTreeHandler":8,"./parsers/JSONiqParser":9,"./parsers/XQueryParser":10}]},{},[12])(12)}),ace.define("ace/mode/xquery_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/xquery/xqlint"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../worker/mirror").Mirror,s=e("./xquery/xqlint"),o=s.XQLint,u=function(e){return function(t){var n=e,r=n[t],i={},s={};return r.functions.forEach(function(e){s[t+"#"+e.name+"#"+e.arity]={params:[]},e.parameters.forEach(function(n){s[t+"#"+e.name+"#"+e.arity].params.push("$"+n.name)})}),r.variables.forEach(function(e){var n=e.name.substring(e.name.indexOf(":")+1);i[t+"#"+n]={type:"VarDecl",annotations:[]}}),{variables:i,functions:s}}},a=t.XQueryWorker=function(e){i.call(this,e),this.setTimeout(200),this.opts={styleCheck:!1};var t=this;this.sender.on("complete",function(e){if(t.xqlint){var n={line:e.data.pos.row,col:e.data.pos.column},r=t.xqlint.getCompletions(n);t.sender.emit("complete",r)}}),this.sender.on("setAvailableModuleNamespaces",function(e){t.availableModuleNamespaces=e.data}),this.sender.on("setModuleResolver",function(e){t.moduleResolver=u(e.data)})};r.inherits(a,i),function(){this.onUpdate=function(){this.sender.emit("start");var e=this.doc.getValue(),t=s.createStaticContext();this.moduleResolver&&t.setModuleResolver(this.moduleResolver),this.availableModuleNamespaces&&(t.availableModuleNamespaces=this.availableModuleNamespaces);var n={styleCheck:this.styleCheck,staticContext:t};this.xqlint=new o(e,n),this.sender.emit("markers",this.xqlint.getMarkers())}}.call(a.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _=" \n \f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}}) \ No newline at end of file
diff --git a/library/bbedit/editor.css b/library/bbedit/editor.css
deleted file mode 100644
index 30fd4ce0c..000000000
--- a/library/bbedit/editor.css
+++ /dev/null
@@ -1,9 +0,0 @@
-.editorWYSIWYG {font: 10pt Tahoma;border:none;}
-.editorBBCODE {font: 9pt "Courier New";}
-
-div.richeditor div.editbar {margin-top:5px;background-image:url('images/editbar_bg.gif');border-left:1px solid silver;border-right:1px solid silver;border-top:1px solid silver;border-bottom:none;}
-div.richeditor div button{vertical-align:middle;width:25px;height:25px;border:1px solid transparent;background-color:Transparent;cursor:pointer;color:Black;background-position:center;background-repeat:no-repeat;background-image:none;}
-div.richeditor div button:hover{border:1px solid silver;}
-div.richeditor div.container {border-top:none;border-bottom:1px solid silver;border-left:1px solid silver;border-right:1px solid silver;}
-div.richeditor textarea{padding:0px 0px 0px 0px;border:none;}
-div.richeditor iframe{background-color:#ffffff;border:none;} \ No newline at end of file
diff --git a/library/bbedit/editor.js b/library/bbedit/editor.js
deleted file mode 100644
index 563472ff5..000000000
--- a/library/bbedit/editor.js
+++ /dev/null
@@ -1,524 +0,0 @@
-/*
-WYSIWYG-BBCODE editor
-Copyright (c) 2009, Jitbit Sotware, http://www.jitbit.com/
-PROJECT HOME: http://wysiwygbbcode.codeplex.com/
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the <organization> nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY Jitbit Software ''AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL Jitbit Software BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-
-
-function REDITOR(elm,wysiwyg) {
-
- this.elm = elm;
- this.wysiwyg = wysiwyg;
-
-
-
-}
-
-REDITOR.prototype.showEditor = function() {
- if (! this.enableWysiwyg) return;
- this.editorVisible = true;
- this.content = document.getElementById(this.body_id).value;
- this.myeditor = this.ifm.contentWindow.document;
- bbcode2html();
- this.myeditor.designMode = "on";
- this.myeditor.open();
- this.myeditor.write('<html><head><link href="editor.css" rel="Stylesheet" type="text/css" /></head>');
- this.myeditor.write('<body style="margin:0px 0px 0px 0px" class="editorWYSIWYG">');
- this.myeditor.write(content);
- this.myeditor.write('</body></html>');
- this.myeditor.close();
- if (this.myeditor.attachEvent) {
- if(parent.ProcessKeyPress)
- this.myeditor.attachEvent("onkeydown", parent.ProcessKeyPress);
- this.myeditor.attachEvent("onkeypress", kp);
- }
- else if (this.myeditor.addEventListener) {
- if (parent.ProcessKeyPress)
- this.myeditor.addEventListener("keydown", parent.ProcessKeyPress, true);
- this.myeditor.addEventListener("keypress",kp,true);
- }
-}
-
-
-var myeditor, ifm;
-var body_id, textboxelement;
-var content;
-var isIE = /msie|MSIE/.test(navigator.userAgent);
-var isChrome = /Chrome/.test(navigator.userAgent);
-var isSafari = /Safari/.test(navigator.userAgent) && !isChrome;
-var browser = isIE || window.opera;
-var textRange;
-var enter = 0;
-var editorVisible = false;
-var enableWysiwyg = false;
-
-function rep(re, str) {
- content = content.replace(re, str);
-}
-
-function initEditor(textarea_id, wysiwyg) {
- if(wysiwyg!=undefined)
- enableWysiwyg = wysiwyg;
- else
- enableWysiwyg = true;
- body_id = textarea_id;
- textboxelement = document.getElementById(body_id);
- textboxelement.setAttribute('class', 'editorBBCODE');
- textboxelement.className = "editorBBCODE";
- if (enableWysiwyg) {
- ifm = document.createElement("iframe");
- ifm.setAttribute("id", "rte");
- ifm.setAttribute("frameborder", "0");
- ifm.style.width = textboxelement.style.width;
- ifm.style.height = textboxelement.style.height;
- textboxelement.parentNode.insertBefore(ifm, textboxelement);
- textboxelement.style.display = 'none';
- if (ifm) {
- ShowEditor();
- } else
- setTimeout('ShowEditor()', 100);
- }
-}
-
-function getStyle(el,styleProp)
-{
- var x = document.getElementById(el);
- if (x.currentStyle)
- var y = x.currentStyle[styleProp];
- else if (window.getComputedStyle)
- var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
- return y;
-}
-
-function ShowEditor() {
- if (!enableWysiwyg) return;
- editorVisible = true;
- content = document.getElementById(body_id).value;
- myeditor = ifm.contentWindow.document;
- bbcode2html();
- myeditor.designMode = "on";
- myeditor.open();
- myeditor.write('<html><head><link href="editor.css" rel="Stylesheet" type="text/css" /></head>');
- myeditor.write('<body style="margin:0px 0px 0px 0px" class="editorWYSIWYG">');
- myeditor.write(content);
- myeditor.write('</body></html>');
- myeditor.close();
- if (myeditor.attachEvent) {
- if(parent.ProcessKeyPress)
- myeditor.attachEvent("onkeydown", parent.ProcessKeyPress);
- myeditor.attachEvent("onkeypress", kp);
- }
- else if (myeditor.addEventListener) {
- if (parent.ProcessKeyPress)
- myeditor.addEventListener("keydown", parent.ProcessKeyPress, true);
- myeditor.addEventListener("keypress",kp,true);
- }
-}
-
-function SwitchEditor() {
- if (editorVisible) {
- doCheck();
- ifm.style.display = 'none';
- textboxelement.style.display = '';
- editorVisible = false;
- }
- else {
- if (enableWysiwyg && ifm) {
- ifm.style.display = '';
- textboxelement.style.display = 'none';
- ShowEditor();
- editorVisible = true;
- }
- }
-}
-
-function html2bbcode() {
- rep(/<img\s[^<>]*?src=\"?([^<>]*?)\"?(\s[^<>]*)?\/?>/gi,"[img]$1[/img]");
- rep(/<\/(strong|b)>/gi, "[/b]");
- rep(/<(strong|b)(\s[^<>]*)?>/gi,"[b]");
- rep(/<\/(em|i)>/gi,"[/i]");
- rep(/<(em|i)(\s[^<>]*)?>/gi,"[i]");
- rep(/<\/u>/gi, "[/u]");
- rep(/\n/gi, " ");
- rep(/\r/gi, " ");
- rep(/<u(\s[^<>]*)?>/gi, "[u]");
- rep(/<div><br(\s[^<>]*)?>/gi, "<div>");//chrome-safari fix to prevent double linefeeds
- rep(/<br(\s[^<>]*)?>/gi,"\n");
- rep(/<p(\s[^<>]*)?>/gi,"");
- rep(/<\/p>/gi, "\n");
- rep(/<ul>/gi, "[ul]");
- rep(/<\/ul>/gi, "[/ul]");
- rep(/<ol>/gi, "[ol]");
- rep(/<\/ol>/gi, "[/ol]");
- rep(/<li>/gi, "[li]");
- rep(/<\/li>/gi, "[/li]");
- rep(/<\/div>\s*<div([^<>]*)>/gi, "</span>\n<span$1>");//chrome-safari fix to prevent double linefeeds
- rep(/<div([^<>]*)>/gi,"\n<span$1>");
- rep(/<\/div>/gi,"</span>\n");
- rep(/&nbsp;/gi," ");
- rep(/&quot;/gi,"\"");
- rep(/&amp;/gi,"&");
- var sc, sc2;
- do {
- sc = content;
- rep(/<font\s[^<>]*?color=\"?([^<>]*?)\"?(\s[^<>]*)?>([^<>]*?)<\/font>/gi,"[color=$1]$3[/color]");
- if(sc==content)
- rep(/<font[^<>]*>([^<>]*?)<\/font>/gi,"$1");
- rep(/<a\s[^<>]*?href=\"?([^<>]*?)\"?(\s[^<>]*)?>([^<>]*?)<\/a>/gi,"[url=$1]$3[/url]");
- sc2 = content;
- rep(/<(span|blockquote|pre)\s[^<>]*?style=\"?font-weight: ?bold;?\"?\s*([^<]*?)<\/\1>/gi,"[b]<$1 style=$2</$1>[/b]");
- rep(/<(span|blockquote|pre)\s[^<>]*?style=\"?font-weight: ?normal;?\"?\s*([^<]*?)<\/\1>/gi,"<$1 style=$2</$1>");
- rep(/<(span|blockquote|pre)\s[^<>]*?style=\"?font-style: ?italic;?\"?\s*([^<]*?)<\/\1>/gi,"[i]<$1 style=$2</$1>[/i]");
- rep(/<(span|blockquote|pre)\s[^<>]*?style=\"?font-style: ?normal;?\"?\s*([^<]*?)<\/\1>/gi,"<$1 style=$2</$1>");
- rep(/<(span|blockquote|pre)\s[^<>]*?style=\"?text-decoration: ?underline;?\"?\s*([^<]*?)<\/\1>/gi,"[u]<$1 style=$2</$1>[/u]");
- rep(/<(span|blockquote|pre)\s[^<>]*?style=\"?text-decoration: ?none;?\"?\s*([^<]*?)<\/\1>/gi,"<$1 style=$2</$1>");
- rep(/<(span|blockquote|pre)\s[^<>]*?style=\"?color: ?([^<>]*?);\"?\s*([^<]*?)<\/\1>/gi, "[color=$2]<$1 style=$3</$1>[/color]");
- rep(/<(span|blockquote|pre)\s[^<>]*?style=\"?font-family: ?([^<>]*?);\"?\s*([^<]*?)<\/\1>/gi, "[font=$2]<$1 style=$3</$1>[/font]");
- rep(/<(blockquote|pre)\s[^<>]*?style=\"?\"? (class=|id=)([^<>]*)>([^<>]*?)<\/\1>/gi, "<$1 $2$3>$4</$1>");
- rep(/<pre>([^<>]*?)<\/pre>/gi, "[code]$1[/code]");
- rep(/<span\s[^<>]*?style=\"?\"?>([^<>]*?)<\/span>/gi, "$1");
- if(sc2==content) {
- rep(/<span[^<>]*>([^<>]*?)<\/span>/gi, "$1");
- sc2 = content;
- }
- }while(sc!=content)
- rep(/<[^<>]*>/gi,"");
- rep(/&lt;/gi,"<");
- rep(/&gt;/gi,">");
-
- do {
- sc = content;
- rep(/\[(b|i|u)\]\[quote([^\]]*)\]([\s\S]*?)\[\/quote\]\[\/\1\]/gi, "[quote$2][$1]$3[/$1][/quote]");
- rep(/\[color=([^\]]*)\]\[quote([^\]]*)\]([\s\S]*?)\[\/quote\]\[\/color\]/gi, "[quote$2][color=$1]$3[/color][/quote]");
- rep(/\[(b|i|u)\]\[code\]([\s\S]*?)\[\/code\]\[\/\1\]/gi, "[code][$1]$2[/$1][/code]");
- rep(/\[color=([^\]]*)\]\[code\]([\s\S]*?)\[\/code\]\[\/color\]/gi, "[code][color=$1]$2[/color][/code]");
- }while(sc!=content)
-
- //clean up empty tags
- do {
- sc = content;
- rep(/\[b\]\[\/b\]/gi, "");
- rep(/\[i\]\[\/i\]/gi, "");
- rep(/\[u\]\[\/u\]/gi, "");
- rep(/\[quote[^\]]*\]\[\/quote\]/gi, "");
- rep(/\[code\]\[\/code\]/gi, "");
- rep(/\[url=([^\]]+)\]\[\/url\]/gi, "");
- rep(/\[img\]\[\/img\]/gi, "");
- rep(/\[color=([^\]]*)\]\[\/color\]/gi, "");
- }while(sc!=content)
-}
-
-function bbcode2html() {
- // example: [b] to <strong>
- rep(/\</gi,"&lt;"); //removing html tags
- rep(/\>/gi,"&gt;");
-
- rep(/\n/gi, "<br />");
- rep(/\[ul\]/gi, "<ul>");
- rep(/\[\/ul\]/gi, "</ul>");
- rep(/\[ol\]/gi, "<ol>");
- rep(/\[\/ol\]/gi, "</ol>");
- rep(/\[li\]/gi, "<li>");
- rep(/\[\/li\]/gi, "</li>");
- if(browser) {
- rep(/\[b\]/gi,"<strong>");
- rep(/\[\/b\]/gi,"</strong>");
- rep(/\[i\]/gi,"<em>");
- rep(/\[\/i\]/gi,"</em>");
- rep(/\[u\]/gi,"<u>");
- rep(/\[\/u\]/gi,"</u>");
- }else {
- rep(/\[b\]/gi,"<span style=\"font-weight: bold;\">");
- rep(/\[i\]/gi,"<span style=\"font-style: italic;\">");
- rep(/\[u\]/gi,"<span style=\"text-decoration: underline;\">");
- rep(/\[\/(b|i|u)\]/gi,"</span>");
- }
- rep(/\[img\]([^\"]*?)\[\/img\]/gi,"<img src=\"$1\" />");
- var sc;
- do {
- sc = content;
- rep(/\[url=([^\]]+)\]([\s\S]*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");
- rep(/\[url\]([\s\S]*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
- if(browser) {
- rep(/\[color=([^\]]*?)\]([\s\S]*?)\[\/color\]/gi, "<font color=\"$1\">$2</font>");
- rep(/\[font=([^\]]*?)\]([\s\S]*?)\[\/font\]/gi, "<font face=\"$1\">$2</font>");
- } else {
- rep(/\[color=([^\]]*?)\]([\s\S]*?)\[\/color\]/gi, "<span style=\"color: $1;\">$2</span>");
- rep(/\[font=([^\]]*?)\]([\s\S]*?)\[\/font\]/gi, "<span style=\"font-family: $1;\">$2</span>");
- }
- rep(/\[code\]([\s\S]*?)\[\/code\]/gi,"<pre>$1</pre>&nbsp;");
- }while(sc!=content);
-}
-
-function doCheck() {
- if (!editorVisible) {
- ShowEditor();
- }
- content = myeditor.body.innerHTML;
- html2bbcode();
- document.getElementById(body_id).value = content;
-}
-
-function stopEvent(evt){
- evt || window.event;
- if (evt.stopPropagation){
- evt.stopPropagation();
- evt.preventDefault();
- }else if(typeof evt.cancelBubble != "undefined"){
- evt.cancelBubble = true;
- evt.returnValue = false;
- }
- return false;
-}
-
-function doQuote() {
- if (editorVisible) {
- ifm.contentWindow.focus();
- if (isIE) {
- textRange = ifm.contentWindow.document.selection.createRange();
- var newTxt = "[quote=]" + textRange.text + "[/quote]";
- textRange.text = newTxt;
- }
- else {
- var edittext = ifm.contentWindow.getSelection().getRangeAt(0);
- var original = edittext.toString();
- edittext.deleteContents();
- edittext.insertNode(document.createTextNode("[quote=]" + original + "[/quote]"));
- }
- }
- else {
- AddTag('[quote=]', '[/quote]');
- }
-}
-
-function kp(e){
- if(isIE)
- var k = e.keyCode;
- else
- var k = e.which;
- if(k==13) {
- if(isIE) {
- var r = myeditor.selection.createRange();
- if (r.parentElement().tagName.toLowerCase() != "li") {
- r.pasteHTML('<br/>');
- if (r.move('character'))
- r.move('character', -1);
- r.select();
- stopEvent(e);
- return false;
- }
- }
- }else
- enter = 0;
-}
-
-function InsertSmile(txt) {
- InsertText(txt);
- document.getElementById('divSmilies').style.display = 'none';
-}
-function InsertYoutube() {
- InsertText("http://www.youtube.com/watch?v=XXXXXXXXXXX");
-}
-function InsertText(txt) {
- if (editorVisible)
- insertHtml(txt);
- else
- textboxelement.value += txt;
-}
-
-function doClick(command) {
- if (editorVisible) {
- ifm.contentWindow.focus();
- myeditor.execCommand(command, false, null);
- }
- else {
- switch (command) {
- case 'bold':
- AddTag('[b]', '[/b]'); break;
- case 'italic':
- AddTag('[i]', '[/i]'); break;
- case 'underline':
- AddTag('[u]', '[/u]'); break;
- case 'InsertUnorderedList':
- AddTag('[ul][li]', '[/li][/ul]'); break;
- }
- }
-}
-
-function doColor(color) {
- ifm.contentWindow.focus();
- if (isIE) {
- textRange = ifm.contentWindow.document.selection.createRange();
- textRange.select();
- }
- myeditor.execCommand('forecolor', false, color);
-}
-
-function doLink() {
- if (editorVisible) {
- ifm.contentWindow.focus();
- var mylink = prompt("Enter a URL:", "http://");
- if ((mylink != null) && (mylink != "")) {
- if (isIE) { //IE
- var range = ifm.contentWindow.document.selection.createRange();
- if (range.text == '') {
- range.pasteHTML("<a href='" + mylink + "'>" + mylink + "</a>");
- }
- else
- myeditor.execCommand("CreateLink", false, mylink);
- }
- else if (window.getSelection) { //FF
- var userSelection = ifm.contentWindow.getSelection().getRangeAt(0);
- if(userSelection.toString().length==0)
- myeditor.execCommand('inserthtml', false, "<a href='" + mylink + "'>" + mylink + "</a>");
- else
- myeditor.execCommand("CreateLink", false, mylink);
- }
- else
- myeditor.execCommand("CreateLink", false, mylink);
- }
- }
- else {
- AddTag('[url=',']click here[/url]');
- }
-}
-function doImage() {
- if (editorVisible) {
- ifm.contentWindow.focus();
- myimg = prompt('Enter Image URL:', 'http://');
- if ((myimg != null) && (myimg != "")) {
- myeditor.execCommand('InsertImage', false, myimg);
- }
- }
- else {
- AddTag('[img]', '[/img]');
- }
-}
-
-function insertHtml(html) {
- ifm.contentWindow.focus();
- if (isIE)
- ifm.contentWindow.document.selection.createRange().pasteHTML(html);
- else
- myeditor.execCommand('inserthtml', false, html);
-}
-
-//textarea-mode functions
-function MozillaInsertText(element, text, pos) {
- element.value = element.value.slice(0, pos) + text + element.value.slice(pos);
-}
-
-function AddTag(t1, t2) {
- var element = textboxelement;
- if (isIE) {
- if (document.selection) {
- element.focus();
-
- var txt = element.value;
- var str = document.selection.createRange();
-
- if (str.text == "") {
- str.text = t1 + t2;
- }
- else if (txt.indexOf(str.text) >= 0) {
- str.text = t1 + str.text + t2;
- }
- else {
- element.value = txt + t1 + t2;
- }
- str.select();
- }
- }
- else if (typeof(element.selectionStart) != 'undefined') {
- var sel_start = element.selectionStart;
- var sel_end = element.selectionEnd;
- MozillaInsertText(element, t1, sel_start);
- MozillaInsertText(element, t2, sel_end + t1.length);
- element.selectionStart = sel_start;
- element.selectionEnd = sel_end + t1.length + t2.length;
- element.focus();
- }
- else {
- element.value = element.value + t1 + t2;
- }
-}
-
-//=======color picker
-function getScrollY() { var scrOfX = 0, scrOfY = 0; if (typeof (window.pageYOffset) == 'number') { scrOfY = window.pageYOffset; scrOfX = window.pageXOffset; } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) { scrOfY = document.body.scrollTop; scrOfX = document.body.scrollLeft; } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) { scrOfY = document.documentElement.scrollTop; scrOfX = document.documentElement.scrollLeft; } return scrOfY; }
-
-document.write("<style type='text/css'>.colorpicker201{visibility:hidden;display:none;position:absolute;background:#FFF;z-index:999;filter:progid:DXImageTransform.Microsoft.Shadow(color=#D0D0D0,direction=135);}.o5582brd{padding:0;width:12px;height:14px;border-bottom:solid 1px #DFDFDF;border-right:solid 1px #DFDFDF;}a.o5582n66,.o5582n66,.o5582n66a{font-family:arial,tahoma,sans-serif;text-decoration:underline;font-size:9px;color:#666;border:none;}.o5582n66,.o5582n66a{text-align:center;text-decoration:none;}a:hover.o5582n66{text-decoration:none;color:#FFA500;cursor:pointer;}.a01p3{padding:1px 4px 1px 2px;background:whitesmoke;border:solid 1px #DFDFDF;}</style>");
-
-function getTop2() { csBrHt = 0; if (typeof (window.innerWidth) == 'number') { csBrHt = window.innerHeight; } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) { csBrHt = document.documentElement.clientHeight; } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) { csBrHt = document.body.clientHeight; } ctop = ((csBrHt / 2) - 115) + getScrollY(); return ctop; }
-var nocol1 = "&#78;&#79;&#32;&#67;&#79;&#76;&#79;&#82;",
-clos1 = "X";
-
-function getLeft2() { var csBrWt = 0; if (typeof (window.innerWidth) == 'number') { csBrWt = window.innerWidth; } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) { csBrWt = document.documentElement.clientWidth; } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) { csBrWt = document.body.clientWidth; } cleft = (csBrWt / 2) - 125; return cleft; }
-
-//function setCCbldID2(val, textBoxID) { document.getElementById(textBoxID).value = val; }
-function setCCbldID2(val) { if (editorVisible) doColor(val); else AddTag('[color=' + val + ']', '[/color]'); }
-
-function setCCbldSty2(objID, prop, val) {
- switch (prop) {
- case "bc": if (objID != 'none') { document.getElementById(objID).style.backgroundColor = val; }; break;
- case "vs": document.getElementById(objID).style.visibility = val; break;
- case "ds": document.getElementById(objID).style.display = val; break;
- case "tp": document.getElementById(objID).style.top = val; break;
- case "lf": document.getElementById(objID).style.left = val; break;
- }
-}
-
-function putOBJxColor2(Samp, pigMent, textBoxId) { if (pigMent != 'x') { setCCbldID2(pigMent, textBoxId); setCCbldSty2(Samp, 'bc', pigMent); } setCCbldSty2('colorpicker201', 'vs', 'hidden'); setCCbldSty2('colorpicker201', 'ds', 'none'); }
-
-function showColorGrid2(Sam, textBoxId) {
- var objX = new Array('00', '33', '66', '99', 'CC', 'FF');
- var c = 0;
- var xl = '"' + Sam + '","x", "' + textBoxId + '"'; var mid = '';
- mid += '<table bgcolor="#FFFFFF" border="0" cellpadding="0" cellspacing="0" style="border:solid 0px #F0F0F0;padding:2px;"><tr>';
- mid += "<td colspan='9' align='left' style='margin:0;padding:2px;height:12px;' ><input class='o5582n66' type='text' size='12' id='o5582n66' value='#FFFFFF'><input class='o5582n66a' type='text' size='2' style='width:14px;' id='o5582n66a' onclick='javascript:alert(\"click on selected swatch below...\");' value='' style='border:solid 1px #666;'></td><td colspan='9' align='right'><a class='o5582n66' href='javascript:onclick=putOBJxColor2(" + xl + ")'><span class='a01p3'>" + clos1 + "</span></a></td></tr><tr>";
- var br = 1;
- for (o = 0; o < 6; o++) {
- mid += '</tr><tr>';
- for (y = 0; y < 6; y++) {
- if (y == 3) { mid += '</tr><tr>'; }
- for (x = 0; x < 6; x++) {
- var grid = '';
- grid = objX[o] + objX[y] + objX[x];
- var b = "'" + Sam + "','" + grid + "', '" + textBoxId + "'";
- mid += '<td class="o5582brd" style="background-color:#' + grid + '"><a class="o5582n66" href="javascript:onclick=putOBJxColor2(' + b + ');" onmouseover=javascript:document.getElementById("o5582n66").value="#' + grid + '";javascript:document.getElementById("o5582n66a").style.backgroundColor="#' + grid + '"; title="#' + grid + '"><div style="width:12px;height:14px;"></div></a></td>';
- c++;
- }
- }
- }
- mid += "</tr></table>";
- //var ttop=getTop2();
- //setCCbldSty2('colorpicker201','tp',ttop);
- //document.getElementById('colorpicker201').style.left=getLeft2();
- document.getElementById('colorpicker201').innerHTML = mid;
- setCCbldSty2('colorpicker201', 'vs', 'visible');
- setCCbldSty2('colorpicker201', 'ds', 'inline');
-} \ No newline at end of file
diff --git a/library/bbedit/images/.svn/all-wcprops b/library/bbedit/images/.svn/all-wcprops
deleted file mode 100644
index 89080d8df..000000000
--- a/library/bbedit/images/.svn/all-wcprops
+++ /dev/null
@@ -1,53 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 26
-/svn/!svn/ver/43795/images
-END
-icon_html.gif
-K 25
-svn:wc:ra_dav:version-url
-V 40
-/svn/!svn/ver/43795/images/icon_html.gif
-END
-img.gif
-K 25
-svn:wc:ra_dav:version-url
-V 34
-/svn/!svn/ver/43795/images/img.gif
-END
-colors.gif
-K 25
-svn:wc:ra_dav:version-url
-V 37
-/svn/!svn/ver/43795/images/colors.gif
-END
-editbar_bg.gif
-K 25
-svn:wc:ra_dav:version-url
-V 41
-/svn/!svn/ver/43795/images/editbar_bg.gif
-END
-url.gif
-K 25
-svn:wc:ra_dav:version-url
-V 34
-/svn/!svn/ver/43795/images/url.gif
-END
-icon_list.gif
-K 25
-svn:wc:ra_dav:version-url
-V 40
-/svn/!svn/ver/43795/images/icon_list.gif
-END
-icon_quote.png
-K 25
-svn:wc:ra_dav:version-url
-V 41
-/svn/!svn/ver/43795/images/icon_quote.png
-END
-icon_youtube.gif
-K 25
-svn:wc:ra_dav:version-url
-V 43
-/svn/!svn/ver/43795/images/icon_youtube.gif
-END
diff --git a/library/bbedit/images/.svn/entries b/library/bbedit/images/.svn/entries
deleted file mode 100644
index 24594acfb..000000000
--- a/library/bbedit/images/.svn/entries
+++ /dev/null
@@ -1,300 +0,0 @@
-10
-
-dir
-43979
-https://wysiwygbbcode.svn.codeplex.com/svn/images
-https://wysiwygbbcode.svn.codeplex.com/svn
-
-
-
-2010-04-07T14:06:43.507000Z
-43795
-unknown
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1e68c9db-d3bb-46d7-945c-fd054d4afafc
-
-icon_html.gif
-file
-
-
-
-
-2010-04-07T14:11:18.000000Z
-67fe598a2ce41218bbe984ecb9ef5120
-2010-04-07T14:06:43.507000Z
-43795
-unknown
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-178
-
-img.gif
-file
-
-
-
-
-2010-04-07T14:11:18.000000Z
-9f86ef7d2cb43dc9211bc4527a4caa4a
-2010-04-07T14:06:43.507000Z
-43795
-unknown
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-570
-
-colors.gif
-file
-
-
-
-
-2010-04-07T14:11:18.000000Z
-2b1af4a86dc3c0c38066fed59a6b9284
-2010-04-07T14:06:43.507000Z
-43795
-unknown
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1024
-
-editbar_bg.gif
-file
-
-
-
-
-2010-04-07T14:11:18.000000Z
-ab683894bf1f523a2c9e3888b88ff6fe
-2010-04-07T14:06:43.507000Z
-43795
-unknown
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-301
-
-url.gif
-file
-
-
-
-
-2010-04-07T14:11:18.000000Z
-80486c8b54c622eff5fbde9cbe941c36
-2010-04-07T14:06:43.507000Z
-43795
-unknown
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-209
-
-icon_list.gif
-file
-
-
-
-
-2010-04-07T14:11:18.000000Z
-33b13631551a0890584ccc2f9d9187d2
-2010-04-07T14:06:43.507000Z
-43795
-unknown
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-82
-
-icon_quote.png
-file
-
-
-
-
-2010-04-07T14:11:18.000000Z
-c1980342644a5392efefbb315b12b246
-2010-04-07T14:06:43.507000Z
-43795
-unknown
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1239
-
-icon_youtube.gif
-file
-
-
-
-
-2010-04-07T14:11:18.000000Z
-406fca567bc8bd5655ae0d2cbb6c061c
-2010-04-07T14:06:43.507000Z
-43795
-unknown
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-613
-
diff --git a/library/bbedit/images/.svn/prop-base/colors.gif.svn-base b/library/bbedit/images/.svn/prop-base/colors.gif.svn-base
deleted file mode 100644
index 5e9587e65..000000000
--- a/library/bbedit/images/.svn/prop-base/colors.gif.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 24
-application/octet-stream
-END
diff --git a/library/bbedit/images/.svn/prop-base/editbar_bg.gif.svn-base b/library/bbedit/images/.svn/prop-base/editbar_bg.gif.svn-base
deleted file mode 100644
index 5e9587e65..000000000
--- a/library/bbedit/images/.svn/prop-base/editbar_bg.gif.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 24
-application/octet-stream
-END
diff --git a/library/bbedit/images/.svn/prop-base/icon_html.gif.svn-base b/library/bbedit/images/.svn/prop-base/icon_html.gif.svn-base
deleted file mode 100644
index 5e9587e65..000000000
--- a/library/bbedit/images/.svn/prop-base/icon_html.gif.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 24
-application/octet-stream
-END
diff --git a/library/bbedit/images/.svn/prop-base/icon_list.gif.svn-base b/library/bbedit/images/.svn/prop-base/icon_list.gif.svn-base
deleted file mode 100644
index 5e9587e65..000000000
--- a/library/bbedit/images/.svn/prop-base/icon_list.gif.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 24
-application/octet-stream
-END
diff --git a/library/bbedit/images/.svn/prop-base/icon_quote.png.svn-base b/library/bbedit/images/.svn/prop-base/icon_quote.png.svn-base
deleted file mode 100644
index 5e9587e65..000000000
--- a/library/bbedit/images/.svn/prop-base/icon_quote.png.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 24
-application/octet-stream
-END
diff --git a/library/bbedit/images/.svn/prop-base/icon_youtube.gif.svn-base b/library/bbedit/images/.svn/prop-base/icon_youtube.gif.svn-base
deleted file mode 100644
index 5e9587e65..000000000
--- a/library/bbedit/images/.svn/prop-base/icon_youtube.gif.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 24
-application/octet-stream
-END
diff --git a/library/bbedit/images/.svn/prop-base/img.gif.svn-base b/library/bbedit/images/.svn/prop-base/img.gif.svn-base
deleted file mode 100644
index 5e9587e65..000000000
--- a/library/bbedit/images/.svn/prop-base/img.gif.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 24
-application/octet-stream
-END
diff --git a/library/bbedit/images/.svn/prop-base/url.gif.svn-base b/library/bbedit/images/.svn/prop-base/url.gif.svn-base
deleted file mode 100644
index 5e9587e65..000000000
--- a/library/bbedit/images/.svn/prop-base/url.gif.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 24
-application/octet-stream
-END
diff --git a/library/bbedit/images/.svn/text-base/colors.gif.svn-base b/library/bbedit/images/.svn/text-base/colors.gif.svn-base
deleted file mode 100644
index b3ffe8a27..000000000
--- a/library/bbedit/images/.svn/text-base/colors.gif.svn-base
+++ /dev/null
Binary files differ
diff --git a/library/bbedit/images/.svn/text-base/editbar_bg.gif.svn-base b/library/bbedit/images/.svn/text-base/editbar_bg.gif.svn-base
deleted file mode 100644
index 023a43cec..000000000
--- a/library/bbedit/images/.svn/text-base/editbar_bg.gif.svn-base
+++ /dev/null
Binary files differ
diff --git a/library/bbedit/images/.svn/text-base/icon_html.gif.svn-base b/library/bbedit/images/.svn/text-base/icon_html.gif.svn-base
deleted file mode 100644
index 66c75fef8..000000000
--- a/library/bbedit/images/.svn/text-base/icon_html.gif.svn-base
+++ /dev/null
Binary files differ
diff --git a/library/bbedit/images/.svn/text-base/icon_list.gif.svn-base b/library/bbedit/images/.svn/text-base/icon_list.gif.svn-base
deleted file mode 100644
index e60f472c0..000000000
--- a/library/bbedit/images/.svn/text-base/icon_list.gif.svn-base
+++ /dev/null
Binary files differ
diff --git a/library/bbedit/images/.svn/text-base/icon_quote.png.svn-base b/library/bbedit/images/.svn/text-base/icon_quote.png.svn-base
deleted file mode 100644
index eae8a9ae9..000000000
--- a/library/bbedit/images/.svn/text-base/icon_quote.png.svn-base
+++ /dev/null
Binary files differ
diff --git a/library/bbedit/images/.svn/text-base/icon_youtube.gif.svn-base b/library/bbedit/images/.svn/text-base/icon_youtube.gif.svn-base
deleted file mode 100644
index d15af5126..000000000
--- a/library/bbedit/images/.svn/text-base/icon_youtube.gif.svn-base
+++ /dev/null
Binary files differ
diff --git a/library/bbedit/images/.svn/text-base/img.gif.svn-base b/library/bbedit/images/.svn/text-base/img.gif.svn-base
deleted file mode 100644
index 6e6fc24c5..000000000
--- a/library/bbedit/images/.svn/text-base/img.gif.svn-base
+++ /dev/null
Binary files differ
diff --git a/library/bbedit/images/.svn/text-base/url.gif.svn-base b/library/bbedit/images/.svn/text-base/url.gif.svn-base
deleted file mode 100644
index 2833e4ba3..000000000
--- a/library/bbedit/images/.svn/text-base/url.gif.svn-base
+++ /dev/null
Binary files differ
diff --git a/library/bbedit/images/colors.gif b/library/bbedit/images/colors.gif
deleted file mode 100644
index b3ffe8a27..000000000
--- a/library/bbedit/images/colors.gif
+++ /dev/null
Binary files differ
diff --git a/library/bbedit/images/editbar_bg.gif b/library/bbedit/images/editbar_bg.gif
deleted file mode 100644
index 023a43cec..000000000
--- a/library/bbedit/images/editbar_bg.gif
+++ /dev/null
Binary files differ
diff --git a/library/bbedit/images/icon_html.gif b/library/bbedit/images/icon_html.gif
deleted file mode 100644
index 66c75fef8..000000000
--- a/library/bbedit/images/icon_html.gif
+++ /dev/null
Binary files differ
diff --git a/library/bbedit/images/icon_list.gif b/library/bbedit/images/icon_list.gif
deleted file mode 100644
index e60f472c0..000000000
--- a/library/bbedit/images/icon_list.gif
+++ /dev/null
Binary files differ
diff --git a/library/bbedit/images/icon_quote.png b/library/bbedit/images/icon_quote.png
deleted file mode 100644
index eae8a9ae9..000000000
--- a/library/bbedit/images/icon_quote.png
+++ /dev/null
Binary files differ
diff --git a/library/bbedit/images/icon_youtube.gif b/library/bbedit/images/icon_youtube.gif
deleted file mode 100644
index d15af5126..000000000
--- a/library/bbedit/images/icon_youtube.gif
+++ /dev/null
Binary files differ
diff --git a/library/bbedit/images/img.gif b/library/bbedit/images/img.gif
deleted file mode 100644
index 6e6fc24c5..000000000
--- a/library/bbedit/images/img.gif
+++ /dev/null
Binary files differ
diff --git a/library/bbedit/images/url.gif b/library/bbedit/images/url.gif
deleted file mode 100644
index 2833e4ba3..000000000
--- a/library/bbedit/images/url.gif
+++ /dev/null
Binary files differ
diff --git a/library/bbedit/readme.txt b/library/bbedit/readme.txt
deleted file mode 100644
index 505e2ba67..000000000
--- a/library/bbedit/readme.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-WYSIWYG-BBCODE v1.6
-WYSIWYG-BBCODE editor
-Copyright (c) 2009, Jitbit Sotware, http://www.jitbit.com/
-PROJECT HOME: http://wysiwygbbcode.codeplex.com/
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the <organization> nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY Jitbit Software ''AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL Jitbit Software BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/library/bbedit/sample.htm b/library/bbedit/sample.htm
deleted file mode 100644
index 573687330..000000000
--- a/library/bbedit/sample.htm
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head runat="server">
- <link href="editor.css" rel="Stylesheet" type="text/css" />
- <script src="editor.js" type="text/javascript"></script>
-</head>
-<body>
-<form onsubmit="doCheck();"> <!--THIS IS IMPORTANT-->
-
-
- <div class="richeditor">
- <div class="editbar">
- <button title="bold" onclick="doClick('bold');" type="button"><b>B</b></button>
- <button title="italic" onclick="doClick('italic');" type="button"><i>I</i></button>
- <button title="underline" onclick="doClick('underline');" type="button"><u>U</u></button>
- <button title="hyperlink" onclick="doLink();" type="button" style="background-image:url('images/url.gif');"></button>
- <button title="image" onclick="doImage();" type="button" style="background-image:url('images/img.gif');"></button>
- <button title="list" onclick="doClick('InsertUnorderedList');" type="button" style="background-image:url('images/icon_list.gif');"></button>
- <button title="color" onclick="showColorGrid2('none')" type="button" style="background-image:url('images/colors.gif');"></button><span id="colorpicker201" class="colorpicker201"></span>
- <button title="quote" onclick="doQuote();" type="button" style="background-image:url('images/icon_quote.png');"></button>
- <button title="youtube" onclick="InsertYoutube();" type="button" style="background-image:url('images/icon_youtube.gif');"></button>
- <button title="switch to source" type="button" onclick="javascript:SwitchEditor()" style="background-image:url('images/icon_html.gif');"></button>
- </div>
- <div class="container">
- <textarea id="tbMsg" style="height:150px;width:100%;"></textarea>
- </div>
- </div>
- <script type="text/javascript">
- initEditor("tbMsg", true);
- </script>
- <input type="submit" onclick="doCheck();" />
-
-
-
-</form>
-</body>
-</html> \ No newline at end of file
diff --git a/library/emoji.json b/library/emoji.json
new file mode 100644
index 000000000..dc28c13a1
--- /dev/null
+++ b/library/emoji.json
@@ -0,0 +1 @@
+{"grinning":{"unicode":"1f600","unicode_alternates":"","name":"grinning face","shortname":":grinning:","category":"people","emoji_order":"1","aliases":[],"aliases_ascii":[],"keywords":["happy","smiley","emotion","emotion"]},"grimacing":{"unicode":"1f62c","unicode_alternates":"","name":"grimacing face","shortname":":grimacing:","category":"people","emoji_order":"2","aliases":[],"aliases_ascii":[],"keywords":["silly","smiley","emotion","emotion","selfie","selfie"]},"grin":{"unicode":"1f601","unicode_alternates":"","name":"grinning face with smiling eyes","shortname":":grin:","category":"people","emoji_order":"3","aliases":[],"aliases_ascii":[],"keywords":["happy","silly","smiley","emotion","emotion","good","good","selfie","selfie"]},"joy":{"unicode":"1f602","unicode_alternates":"","name":"face with tears of joy","shortname":":joy:","category":"people","emoji_order":"4","aliases":[],"aliases_ascii":[":')",":'-)"],"keywords":["happy","silly","smiley","cry","laugh","laugh","emotion","emotion","sarcastic","sarcastic"]},"smiley":{"unicode":"1f603","unicode_alternates":"","name":"smiling face with open mouth","shortname":":smiley:","category":"people","emoji_order":"5","aliases":[],"aliases_ascii":[":D",":-D","=D"],"keywords":["happy","smiley","emotion","emotion","good","good"]},"smile":{"unicode":"1f604","unicode_alternates":"","name":"smiling face with open mouth and smiling eyes","shortname":":smile:","category":"people","emoji_order":"6","aliases":[],"aliases_ascii":[],"keywords":["happy","smiley","emotion","emotion"]},"sweat_smile":{"unicode":"1f605","unicode_alternates":"","name":"smiling face with open mouth and cold sweat","shortname":":sweat_smile:","category":"people","emoji_order":"7","aliases":[],"aliases_ascii":["':)","':-)","'=)","':D","':-D","'=D"],"keywords":["smiley","workout","sweat","emotion","emotion"]},"laughing":{"unicode":"1f606","unicode_alternates":"","name":"smiling face with open mouth and tightly-closed eyes","shortname":":laughing:","category":"people","emoji_order":"8","aliases":[":satisfied:"],"aliases_ascii":[">:)",">;)",">:-)",">=)"],"keywords":["happy","smiley","laugh","laugh","emotion","emotion"]},"innocent":{"unicode":"1f607","unicode_alternates":"","name":"smiling face with halo","shortname":":innocent:","category":"people","emoji_order":"9","aliases":[],"aliases_ascii":["O:-)","0:-3","0:3","0:-)","0:)","0;^)","O:)","O;-)","O=)","0;-)","O:-3","O:3"],"keywords":["smiley","emotion","emotion"]},"wink":{"unicode":"1f609","unicode_alternates":"","name":"winking face","shortname":":wink:","category":"people","emoji_order":"10","aliases":[],"aliases_ascii":[";)",";-)","*-)","*)",";-]",";]",";D",";^)"],"keywords":["silly","smiley","emotion","emotion"]},"blush":{"unicode":"1f60a","unicode_alternates":"","name":"smiling face with smiling eyes","shortname":":blush:","category":"people","emoji_order":"11","aliases":[],"aliases_ascii":[],"keywords":["happy","smiley","emotion","emotion","good","good","beautiful","beautiful"]},"slight_smile":{"unicode":"1f642","unicode_alternates":"","name":"slightly smiling face","shortname":":slight_smile:","category":"people","emoji_order":"12","aliases":[":slightly_smiling_face:"],"aliases_ascii":[":)",":-)","=]","=)",":]"],"keywords":["happy","smiley"]},"upside_down":{"unicode":"1f643","unicode_alternates":"","name":"upside-down face","shortname":":upside_down:","category":"people","emoji_order":"13","aliases":[":upside_down_face:"],"aliases_ascii":[],"keywords":["silly","smiley","sarcastic","sarcastic"]},"relaxed":{"unicode":"263a","unicode_alternates":"263a-fe0f","name":"white smiling face","shortname":":relaxed:","category":"people","emoji_order":"14","aliases":[],"aliases_ascii":[],"keywords":["happy","smiley"]},"yum":{"unicode":"1f60b","unicode_alternates":"","name":"face savouring delicious food","shortname":":yum:","category":"people","emoji_order":"15","aliases":[],"aliases_ascii":[],"keywords":["happy","silly","smiley","emotion","emotion","sarcastic","sarcastic","good","good"]},"relieved":{"unicode":"1f60c","unicode_alternates":"","name":"relieved face","shortname":":relieved:","category":"people","emoji_order":"16","aliases":[],"aliases_ascii":[],"keywords":["smiley","emotion","emotion"]},"heart_eyes":{"unicode":"1f60d","unicode_alternates":"","name":"smiling face with heart-shaped eyes","shortname":":heart_eyes:","category":"people","emoji_order":"17","aliases":[],"aliases_ascii":[],"keywords":["happy","smiley","love","sex","heart eyes","emotion","emotion","beautiful","beautiful"]},"kissing_heart":{"unicode":"1f618","unicode_alternates":"","name":"face throwing a kiss","shortname":":kissing_heart:","category":"people","emoji_order":"18","aliases":[],"aliases_ascii":[":*",":-*","=*",":^*"],"keywords":["smiley","love","sexy"]},"kissing":{"unicode":"1f617","unicode_alternates":"","name":"kissing face","shortname":":kissing:","category":"people","emoji_order":"19","aliases":[],"aliases_ascii":[],"keywords":["smiley","sexy"]},"kissing_smiling_eyes":{"unicode":"1f619","unicode_alternates":"","name":"kissing face with smiling eyes","shortname":":kissing_smiling_eyes:","category":"people","emoji_order":"20","aliases":[],"aliases_ascii":[],"keywords":["smiley","sexy"]},"kissing_closed_eyes":{"unicode":"1f61a","unicode_alternates":"","name":"kissing face with closed eyes","shortname":":kissing_closed_eyes:","category":"people","emoji_order":"21","aliases":[],"aliases_ascii":[],"keywords":["smiley","sexy"]},"stuck_out_tongue_winking_eye":{"unicode":"1f61c","unicode_alternates":"","name":"face with stuck-out tongue and winking eye","shortname":":stuck_out_tongue_winking_eye:","category":"people","emoji_order":"22","aliases":[],"aliases_ascii":[">:P","X-P","x-p"],"keywords":["happy","smiley","emotion","emotion","parties","parties"]},"stuck_out_tongue_closed_eyes":{"unicode":"1f61d","unicode_alternates":"","name":"face with stuck-out tongue and tightly-closed eyes","shortname":":stuck_out_tongue_closed_eyes:","category":"people","emoji_order":"23","aliases":[],"aliases_ascii":[],"keywords":["happy","smiley","emotion","emotion"]},"stuck_out_tongue":{"unicode":"1f61b","unicode_alternates":"","name":"face with stuck-out tongue","shortname":":stuck_out_tongue:","category":"people","emoji_order":"24","aliases":[],"aliases_ascii":[":P",":-P","=P",":-p",":p","=p",":-\u00de",":\u00de",":\u00fe",":-\u00fe",":-b",":b","d:"],"keywords":["smiley","sex","emotion","emotion"]},"money_mouth":{"unicode":"1f911","unicode_alternates":"","name":"money-mouth face","shortname":":money_mouth:","category":"people","emoji_order":"25","aliases":[":money_mouth_face:"],"aliases_ascii":[],"keywords":["smiley","win","win","money","money","emotion","emotion","boys night","boys night"]},"nerd":{"unicode":"1f913","unicode_alternates":"","name":"nerd face","shortname":":nerd:","category":"people","emoji_order":"26","aliases":[":nerd_face:"],"aliases_ascii":[],"keywords":["smiley","glasses"]},"sunglasses":{"unicode":"1f60e","unicode_alternates":"","name":"smiling face with sunglasses","shortname":":sunglasses:","category":"people","emoji_order":"27","aliases":[],"aliases_ascii":["B-)","B)","8)","8-)","B-D","8-D"],"keywords":["silly","smiley","emojione","glasses","boys night","boys night"]},"hugging":{"unicode":"1f917","unicode_alternates":"","name":"hugging face","shortname":":hugging:","category":"people","emoji_order":"28","aliases":[":hugging_face:"],"aliases_ascii":[],"keywords":["smiley","hug","thank you"]},"smirk":{"unicode":"1f60f","unicode_alternates":"","name":"smirking face","shortname":":smirk:","category":"people","emoji_order":"29","aliases":[],"aliases_ascii":[],"keywords":["silly","smiley","sexy","sarcastic","sarcastic"]},"no_mouth":{"unicode":"1f636","unicode_alternates":"","name":"face without mouth","shortname":":no_mouth:","category":"people","emoji_order":"30","aliases":[],"aliases_ascii":[":-X",":X",":-#",":#","=X","=x",":x",":-x","=#"],"keywords":["mad","smiley","neutral","emotion","emotion"]},"neutral_face":{"unicode":"1f610","unicode_alternates":"","name":"neutral face","shortname":":neutral_face:","category":"people","emoji_order":"31","aliases":[],"aliases_ascii":[],"keywords":["mad","smiley","shrug","neutral","emotion","emotion"]},"expressionless":{"unicode":"1f611","unicode_alternates":"","name":"expressionless face","shortname":":expressionless:","category":"people","emoji_order":"32","aliases":[],"aliases_ascii":["-_-","-__-","-___-"],"keywords":["mad","smiley","neutral","emotion","emotion"]},"unamused":{"unicode":"1f612","unicode_alternates":"","name":"unamused face","shortname":":unamused:","category":"people","emoji_order":"33","aliases":[],"aliases_ascii":[],"keywords":["sad","mad","smiley","tired","emotion","emotion"]},"rolling_eyes":{"unicode":"1f644","unicode_alternates":"","name":"face with rolling eyes","shortname":":rolling_eyes:","category":"people","emoji_order":"34","aliases":[":face_with_rolling_eyes:"],"aliases_ascii":[],"keywords":["mad","smiley","rolling eyes","emotion","emotion","sarcastic","sarcastic"]},"thinking":{"unicode":"1f914","unicode_alternates":"","name":"thinking face","shortname":":thinking:","category":"people","emoji_order":"35","aliases":[":thinking_face:"],"aliases_ascii":[],"keywords":["smiley","thinking","boys night","boys night"]},"flushed":{"unicode":"1f633","unicode_alternates":"","name":"flushed face","shortname":":flushed:","category":"people","emoji_order":"36","aliases":[],"aliases_ascii":[":$","=$"],"keywords":["smiley","emotion","emotion","omg","omg"]},"disappointed":{"unicode":"1f61e","unicode_alternates":"","name":"disappointed face","shortname":":disappointed:","category":"people","emoji_order":"37","aliases":[],"aliases_ascii":[">:[",":-(",":(",":-[",":[","=("],"keywords":["sad","smiley","tired","emotion","emotion"]},"worried":{"unicode":"1f61f","unicode_alternates":"","name":"worried face","shortname":":worried:","category":"people","emoji_order":"38","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","emotion","emotion"]},"angry":{"unicode":"1f620","unicode_alternates":"","name":"angry face","shortname":":angry:","category":"people","emoji_order":"39","aliases":[],"aliases_ascii":[">:(",">:-(",":@"],"keywords":["mad","smiley","emotion","emotion"]},"rage":{"unicode":"1f621","unicode_alternates":"","name":"pouting face","shortname":":rage:","category":"people","emoji_order":"40","aliases":[],"aliases_ascii":[],"keywords":["mad","smiley","angry","emotion","emotion"]},"pensive":{"unicode":"1f614","unicode_alternates":"","name":"pensive face","shortname":":pensive:","category":"people","emoji_order":"41","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","emotion","emotion","rip","rip"]},"confused":{"unicode":"1f615","unicode_alternates":"","name":"confused face","shortname":":confused:","category":"people","emoji_order":"42","aliases":[],"aliases_ascii":[">:\\",">:\/",":-\/",":-.",":\/",":\\","=\/","=\\",":L","=L"],"keywords":["smiley","surprised","emotion","emotion"]},"slight_frown":{"unicode":"1f641","unicode_alternates":"","name":"slightly frowning face","shortname":":slight_frown:","category":"people","emoji_order":"43","aliases":[":slightly_frowning_face:"],"aliases_ascii":[],"keywords":["sad","smiley","emotion","emotion"]},"frowning2":{"unicode":"2639","unicode_alternates":"2639-fe0f","name":"white frowning face","shortname":":frowning2:","category":"people","emoji_order":"44","aliases":[":white_frowning_face:"],"aliases_ascii":[],"keywords":["sad","smiley","emotion","emotion"]},"persevere":{"unicode":"1f623","unicode_alternates":"","name":"persevering face","shortname":":persevere:","category":"people","emoji_order":"45","aliases":[],"aliases_ascii":[">.<"],"keywords":["sad","smiley","angry","emotion","emotion"]},"confounded":{"unicode":"1f616","unicode_alternates":"","name":"confounded face","shortname":":confounded:","category":"people","emoji_order":"46","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","angry","emotion","emotion"]},"tired_face":{"unicode":"1f62b","unicode_alternates":"","name":"tired face","shortname":":tired_face:","category":"people","emoji_order":"47","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","tired","emotion","emotion"]},"weary":{"unicode":"1f629","unicode_alternates":"","name":"weary face","shortname":":weary:","category":"people","emoji_order":"48","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","tired","stressed","emotion","emotion"]},"triumph":{"unicode":"1f624","unicode_alternates":"","name":"face with look of triumph","shortname":":triumph:","category":"people","emoji_order":"49","aliases":[],"aliases_ascii":[],"keywords":["mad","smiley","angry","emotion","emotion","steam","steam"]},"open_mouth":{"unicode":"1f62e","unicode_alternates":"","name":"face with open mouth","shortname":":open_mouth:","category":"people","emoji_order":"50","aliases":[],"aliases_ascii":[":-O",":O",":-o",":o","O_O",">:O"],"keywords":["smiley","surprised","wow","wow","emotion","emotion"]},"scream":{"unicode":"1f631","unicode_alternates":"","name":"face screaming in fear","shortname":":scream:","category":"people","emoji_order":"51","aliases":[],"aliases_ascii":[],"keywords":["smiley","surprised","wow","wow","emotion","emotion","omg","omg"]},"fearful":{"unicode":"1f628","unicode_alternates":"","name":"fearful face","shortname":":fearful:","category":"people","emoji_order":"52","aliases":[],"aliases_ascii":["D:"],"keywords":["smiley","surprised","emotion","emotion"]},"cold_sweat":{"unicode":"1f630","unicode_alternates":"","name":"face with open mouth and cold sweat","shortname":":cold_sweat:","category":"people","emoji_order":"53","aliases":[],"aliases_ascii":[],"keywords":["smiley","sweat","emotion","emotion"]},"hushed":{"unicode":"1f62f","unicode_alternates":"","name":"hushed face","shortname":":hushed:","category":"people","emoji_order":"54","aliases":[],"aliases_ascii":[],"keywords":["smiley","surprised","wow","wow"]},"frowning":{"unicode":"1f626","unicode_alternates":"","name":"frowning face with open mouth","shortname":":frowning:","category":"people","emoji_order":"55","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","surprised","emotion","emotion"]},"anguished":{"unicode":"1f627","unicode_alternates":"","name":"anguished face","shortname":":anguished:","category":"people","emoji_order":"56","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","surprised","emotion","emotion"]},"cry":{"unicode":"1f622","unicode_alternates":"","name":"crying face","shortname":":cry:","category":"people","emoji_order":"57","aliases":[],"aliases_ascii":[":'(",":'-(",";(",";-("],"keywords":["sad","smiley","cry","emotion","emotion","rip","rip","heartbreak","heartbreak"]},"disappointed_relieved":{"unicode":"1f625","unicode_alternates":"","name":"disappointed but relieved face","shortname":":disappointed_relieved:","category":"people","emoji_order":"58","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","stressed","sweat","cry","emotion","emotion"]},"sleepy":{"unicode":"1f62a","unicode_alternates":"","name":"sleepy face","shortname":":sleepy:","category":"people","emoji_order":"59","aliases":[],"aliases_ascii":[],"keywords":["smiley","sick","emotion","emotion"]},"sweat":{"unicode":"1f613","unicode_alternates":"","name":"face with cold sweat","shortname":":sweat:","category":"people","emoji_order":"60","aliases":[],"aliases_ascii":["':(","':-(","'=("],"keywords":["sad","smiley","stressed","sweat","emotion","emotion"]},"sob":{"unicode":"1f62d","unicode_alternates":"","name":"loudly crying face","shortname":":sob:","category":"people","emoji_order":"61","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","cry","emotion","emotion","heartbreak","heartbreak"]},"dizzy_face":{"unicode":"1f635","unicode_alternates":"","name":"dizzy face","shortname":":dizzy_face:","category":"people","emoji_order":"62","aliases":[],"aliases_ascii":["#-)","#)","%-)","%)","X)","X-)"],"keywords":["smiley","surprised","dead","wow","wow","emotion","emotion","omg","omg"]},"astonished":{"unicode":"1f632","unicode_alternates":"","name":"astonished face","shortname":":astonished:","category":"people","emoji_order":"63","aliases":[],"aliases_ascii":[],"keywords":["smiley","surprised","wow","wow","emotion","emotion","omg","omg"]},"zipper_mouth":{"unicode":"1f910","unicode_alternates":"","name":"zipper-mouth face","shortname":":zipper_mouth:","category":"people","emoji_order":"64","aliases":[":zipper_mouth_face:"],"aliases_ascii":[],"keywords":["mad","smiley"]},"mask":{"unicode":"1f637","unicode_alternates":"","name":"face with medical mask","shortname":":mask:","category":"people","emoji_order":"65","aliases":[],"aliases_ascii":[],"keywords":["smiley","dead","health","sick"]},"thermometer_face":{"unicode":"1f912","unicode_alternates":"","name":"face with thermometer","shortname":":thermometer_face:","category":"people","emoji_order":"66","aliases":[":face_with_thermometer:"],"aliases_ascii":[],"keywords":["smiley","health","sick","emotion","emotion"]},"head_bandage":{"unicode":"1f915","unicode_alternates":"","name":"face with head-bandage","shortname":":head_bandage:","category":"people","emoji_order":"67","aliases":[":face_with_head_bandage:"],"aliases_ascii":[],"keywords":["smiley","health","sick","emotion","emotion"]},"sleeping":{"unicode":"1f634","unicode_alternates":"","name":"sleeping face","shortname":":sleeping:","category":"people","emoji_order":"68","aliases":[],"aliases_ascii":[],"keywords":["smiley","tired","emotion","emotion","goodnight","goodnight"]},"zzz":{"unicode":"1f4a4","unicode_alternates":"","name":"sleeping symbol","shortname":":zzz:","category":"people","emoji_order":"69","aliases":[],"aliases_ascii":[],"keywords":["tired","goodnight","goodnight"]},"poop":{"unicode":"1f4a9","unicode_alternates":"","name":"pile of poo","shortname":":poop:","category":"people","emoji_order":"70","aliases":[":shit:",":hankey:",":poo:"],"aliases_ascii":[],"keywords":["bathroom","shit","sol","sol","diarrhea","diarrhea"]},"smiling_imp":{"unicode":"1f608","unicode_alternates":"","name":"smiling face with horns","shortname":":smiling_imp:","category":"people","emoji_order":"71","aliases":[],"aliases_ascii":[],"keywords":["silly","smiley","angry","monster","devil","devil","boys night","boys night"]},"imp":{"unicode":"1f47f","unicode_alternates":"","name":"imp","shortname":":imp:","category":"people","emoji_order":"72","aliases":[],"aliases_ascii":[],"keywords":["smiley","monster","devil","devil","wth","wth"]},"japanese_ogre":{"unicode":"1f479","unicode_alternates":"","name":"japanese ogre","shortname":":japanese_ogre:","category":"people","emoji_order":"73","aliases":[],"aliases_ascii":[],"keywords":["monster"]},"japanese_goblin":{"unicode":"1f47a","unicode_alternates":"","name":"japanese goblin","shortname":":japanese_goblin:","category":"people","emoji_order":"74","aliases":[],"aliases_ascii":[],"keywords":["angry","monster"]},"skull":{"unicode":"1f480","unicode_alternates":"","name":"skull","shortname":":skull:","category":"people","emoji_order":"75","aliases":[":skeleton:"],"aliases_ascii":[],"keywords":["dead","halloween","skull"]},"ghost":{"unicode":"1f47b","unicode_alternates":"","name":"ghost","shortname":":ghost:","category":"people","emoji_order":"76","aliases":[],"aliases_ascii":[],"keywords":["holidays","halloween","monster"]},"alien":{"unicode":"1f47d","unicode_alternates":"","name":"extraterrestrial alien","shortname":":alien:","category":"people","emoji_order":"77","aliases":[],"aliases_ascii":[],"keywords":["space","monster","alien","scientology","scientology"]},"robot":{"unicode":"1f916","unicode_alternates":"","name":"robot face","shortname":":robot:","category":"people","emoji_order":"78","aliases":[":robot_face:"],"aliases_ascii":[],"keywords":["monster","robot"]},"smiley_cat":{"unicode":"1f63a","unicode_alternates":"","name":"smiling cat face with open mouth","shortname":":smiley_cat:","category":"people","emoji_order":"79","aliases":[],"aliases_ascii":[],"keywords":["happy","cat","cat","animal","animal"]},"smile_cat":{"unicode":"1f638","unicode_alternates":"","name":"grinning cat face with smiling eyes","shortname":":smile_cat:","category":"people","emoji_order":"80","aliases":[],"aliases_ascii":[],"keywords":["happy","cat","cat","animal","animal"]},"joy_cat":{"unicode":"1f639","unicode_alternates":"","name":"cat face with tears of joy","shortname":":joy_cat:","category":"people","emoji_order":"81","aliases":[],"aliases_ascii":[],"keywords":["happy","silly","cry","laugh","laugh","cat","cat","animal","animal","sarcastic","sarcastic"]},"heart_eyes_cat":{"unicode":"1f63b","unicode_alternates":"","name":"smiling cat face with heart-shaped eyes","shortname":":heart_eyes_cat:","category":"people","emoji_order":"82","aliases":[],"aliases_ascii":[],"keywords":["heart eyes","cat","cat","animal","animal","beautiful","beautiful"]},"smirk_cat":{"unicode":"1f63c","unicode_alternates":"","name":"cat face with wry smile","shortname":":smirk_cat:","category":"people","emoji_order":"83","aliases":[],"aliases_ascii":[],"keywords":["cat","cat","animal","animal"]},"kissing_cat":{"unicode":"1f63d","unicode_alternates":"","name":"kissing cat face with closed eyes","shortname":":kissing_cat:","category":"people","emoji_order":"84","aliases":[],"aliases_ascii":[],"keywords":["cat","cat","animal","animal"]},"scream_cat":{"unicode":"1f640","unicode_alternates":"","name":"weary cat face","shortname":":scream_cat:","category":"people","emoji_order":"85","aliases":[],"aliases_ascii":[],"keywords":["cat","cat","animal","animal"]},"crying_cat_face":{"unicode":"1f63f","unicode_alternates":"","name":"crying cat face","shortname":":crying_cat_face:","category":"people","emoji_order":"86","aliases":[],"aliases_ascii":[],"keywords":["cry","cat","cat","animal","animal"]},"pouting_cat":{"unicode":"1f63e","unicode_alternates":"","name":"pouting cat face","shortname":":pouting_cat:","category":"people","emoji_order":"87","aliases":[],"aliases_ascii":[],"keywords":["cat","cat","animal","animal"]},"raised_hands":{"unicode":"1f64c","unicode_alternates":"","name":"person raising both hands in celebration","shortname":":raised_hands:","category":"people","emoji_order":"88","aliases":[],"aliases_ascii":[],"keywords":["body","hands","diversity","diversity","perfect","perfect","good","good","parties","parties"]},"clap":{"unicode":"1f44f","unicode_alternates":"","name":"clapping hands sign","shortname":":clap:","category":"people","emoji_order":"89","aliases":[],"aliases_ascii":[],"keywords":["body","hands","win","win","diversity","diversity","good","good","beautiful","beautiful"]},"wave":{"unicode":"1f44b","unicode_alternates":"","name":"waving hand sign","shortname":":wave:","category":"people","emoji_order":"90","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","diversity","diversity"]},"thumbsup":{"unicode":"1f44d","unicode_alternates":"","name":"thumbs up sign","shortname":":thumbsup:","category":"people","emoji_order":"91","aliases":[":+1:",":thumbup:"],"aliases_ascii":[],"keywords":["body","hands","hi","luck","thank you","diversity","diversity","perfect","perfect","good","good","beautiful","beautiful"]},"thumbsdown":{"unicode":"1f44e","unicode_alternates":"","name":"thumbs down sign","shortname":":thumbsdown:","category":"people","emoji_order":"92","aliases":[":-1:",":thumbdown:"],"aliases_ascii":[],"keywords":["body","hands","diversity","diversity"]},"punch":{"unicode":"1f44a","unicode_alternates":"","name":"fisted hand sign","shortname":":punch:","category":"people","emoji_order":"93","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","fist bump","diversity","diversity","boys night","boys night"]},"fist":{"unicode":"270a","unicode_alternates":"","name":"raised fist","shortname":":fist:","category":"people","emoji_order":"94","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","fist bump","diversity","diversity","condolence","condolence"]},"v":{"unicode":"270c","unicode_alternates":"270c-fe0f","name":"victory hand","shortname":":v:","category":"people","emoji_order":"95","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","thank you","peace","peace","diversity","diversity","girls night","girls night"]},"ok_hand":{"unicode":"1f44c","unicode_alternates":"","name":"ok hand sign","shortname":":ok_hand:","category":"people","emoji_order":"96","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","diversity","diversity","perfect","perfect","good","good","beautiful","beautiful"]},"raised_hand":{"unicode":"270b","unicode_alternates":"","name":"raised hand","shortname":":raised_hand:","category":"people","emoji_order":"97","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","diversity","diversity","girls night","girls night"]},"open_hands":{"unicode":"1f450","unicode_alternates":"","name":"open hands sign","shortname":":open_hands:","category":"people","emoji_order":"98","aliases":[],"aliases_ascii":[],"keywords":["body","hands","diversity","diversity","condolence","condolence"]},"muscle":{"unicode":"1f4aa","unicode_alternates":"","name":"flexed biceps","shortname":":muscle:","category":"people","emoji_order":"99","aliases":[],"aliases_ascii":[],"keywords":["body","hands","workout","flex","win","win","diversity","diversity","feminist","feminist","boys night","boys night"]},"pray":{"unicode":"1f64f","unicode_alternates":"","name":"person with folded hands","shortname":":pray:","category":"people","emoji_order":"100","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","luck","thank you","pray","pray","diversity","diversity","scientology","scientology"]},"point_up":{"unicode":"261d","unicode_alternates":"261d-fe0f","name":"white up pointing index","shortname":":point_up:","category":"people","emoji_order":"101","aliases":[],"aliases_ascii":[],"keywords":["body","hands","emojione","diversity","diversity"]},"point_up_2":{"unicode":"1f446","unicode_alternates":"","name":"white up pointing backhand index","shortname":":point_up_2:","category":"people","emoji_order":"102","aliases":[],"aliases_ascii":[],"keywords":["body","hands","diversity","diversity"]},"point_down":{"unicode":"1f447","unicode_alternates":"","name":"white down pointing backhand index","shortname":":point_down:","category":"people","emoji_order":"103","aliases":[],"aliases_ascii":[],"keywords":["body","hands","diversity","diversity"]},"point_left":{"unicode":"1f448","unicode_alternates":"","name":"white left pointing backhand index","shortname":":point_left:","category":"people","emoji_order":"104","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","diversity","diversity"]},"point_right":{"unicode":"1f449","unicode_alternates":"","name":"white right pointing backhand index","shortname":":point_right:","category":"people","emoji_order":"105","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","diversity","diversity"]},"middle_finger":{"unicode":"1f595","unicode_alternates":"","name":"reversed hand with middle finger extended","shortname":":middle_finger:","category":"people","emoji_order":"106","aliases":[":reversed_hand_with_middle_finger_extended:"],"aliases_ascii":[],"keywords":["body","hands","middle finger","diversity","diversity"]},"hand_splayed":{"unicode":"1f590","unicode_alternates":"1f590-fe0f","name":"raised hand with fingers splayed","shortname":":hand_splayed:","category":"people","emoji_order":"107","aliases":[":raised_hand_with_fingers_splayed:"],"aliases_ascii":[],"keywords":["body","hands","hi","diversity","diversity"]},"metal":{"unicode":"1f918","unicode_alternates":"","name":"sign of the horns","shortname":":metal:","category":"people","emoji_order":"108","aliases":[":sign_of_the_horns:"],"aliases_ascii":[],"keywords":["body","hands","hi","diversity","diversity","boys night","boys night","parties","parties"]},"vulcan":{"unicode":"1f596","unicode_alternates":"","name":"raised hand with part between middle and ring fingers","shortname":":vulcan:","category":"people","emoji_order":"109","aliases":[":raised_hand_with_part_between_middle_and_ring_fingers:"],"aliases_ascii":[],"keywords":["body","hands","hi","diversity","diversity"]},"writing_hand":{"unicode":"270d","unicode_alternates":"270d-fe0f","name":"writing hand","shortname":":writing_hand:","category":"people","emoji_order":"110","aliases":[],"aliases_ascii":[],"keywords":["body","hands","write","diversity","diversity"]},"nail_care":{"unicode":"1f485","unicode_alternates":"","name":"nail polish","shortname":":nail_care:","category":"people","emoji_order":"111","aliases":[],"aliases_ascii":[],"keywords":["women","body","hands","nailpolish","diversity","diversity","girls night","girls night"]},"lips":{"unicode":"1f444","unicode_alternates":"","name":"mouth","shortname":":lips:","category":"people","emoji_order":"112","aliases":[],"aliases_ascii":[],"keywords":["women","body","sexy","lip"]},"tongue":{"unicode":"1f445","unicode_alternates":"","name":"tongue","shortname":":tongue:","category":"people","emoji_order":"113","aliases":[],"aliases_ascii":[],"keywords":["body","sexy","lip"]},"ear":{"unicode":"1f442","unicode_alternates":"","name":"ear","shortname":":ear:","category":"people","emoji_order":"114","aliases":[],"aliases_ascii":[],"keywords":["body","diversity","diversity"]},"nose":{"unicode":"1f443","unicode_alternates":"","name":"nose","shortname":":nose:","category":"people","emoji_order":"115","aliases":[],"aliases_ascii":[],"keywords":["body","diversity","diversity"]},"eye":{"unicode":"1f441","unicode_alternates":"1f441-fe0f","name":"eye","shortname":":eye:","category":"people","emoji_order":"116","aliases":[],"aliases_ascii":[],"keywords":["body","eyes"]},"eyes":{"unicode":"1f440","unicode_alternates":"","name":"eyes","shortname":":eyes:","category":"people","emoji_order":"117","aliases":[],"aliases_ascii":[],"keywords":["body","eyes"]},"bust_in_silhouette":{"unicode":"1f464","unicode_alternates":"","name":"bust in silhouette","shortname":":bust_in_silhouette:","category":"people","emoji_order":"118","aliases":[],"aliases_ascii":[],"keywords":["people"]},"busts_in_silhouette":{"unicode":"1f465","unicode_alternates":"","name":"busts in silhouette","shortname":":busts_in_silhouette:","category":"people","emoji_order":"119","aliases":[],"aliases_ascii":[],"keywords":["people"]},"speaking_head":{"unicode":"1f5e3","unicode_alternates":"1f5e3-fe0f","name":"speaking head in silhouette","shortname":":speaking_head:","category":"people","emoji_order":"120","aliases":[":speaking_head_in_silhouette:"],"aliases_ascii":[],"keywords":["people","talk"]},"baby":{"unicode":"1f476","unicode_alternates":"","name":"baby","shortname":":baby:","category":"people","emoji_order":"121","aliases":[],"aliases_ascii":[],"keywords":["people","baby","diversity","diversity"]},"boy":{"unicode":"1f466","unicode_alternates":"","name":"boy","shortname":":boy:","category":"people","emoji_order":"122","aliases":[],"aliases_ascii":[],"keywords":["people","baby","diversity","diversity"]},"girl":{"unicode":"1f467","unicode_alternates":"","name":"girl","shortname":":girl:","category":"people","emoji_order":"123","aliases":[],"aliases_ascii":[],"keywords":["people","women","baby","diversity","diversity"]},"man":{"unicode":"1f468","unicode_alternates":"","name":"man","shortname":":man:","category":"people","emoji_order":"124","aliases":[],"aliases_ascii":[],"keywords":["people","men","sex","diversity","diversity","selfie","selfie","boys night","boys night"]},"woman":{"unicode":"1f469","unicode_alternates":"","name":"woman","shortname":":woman:","category":"people","emoji_order":"125","aliases":[],"aliases_ascii":[],"keywords":["people","women","sex","diversity","diversity","feminist","feminist","selfie","selfie","girls night","girls night"]},"person_with_blond_hair":{"unicode":"1f471","unicode_alternates":"","name":"person with blond hair","shortname":":person_with_blond_hair:","category":"people","emoji_order":"126","aliases":[],"aliases_ascii":[],"keywords":["people","men","diversity","diversity"]},"older_man":{"unicode":"1f474","unicode_alternates":"","name":"older man","shortname":":older_man:","category":"people","emoji_order":"127","aliases":[],"aliases_ascii":[],"keywords":["people","men","old people","diversity","diversity"]},"older_woman":{"unicode":"1f475","unicode_alternates":"","name":"older woman","shortname":":older_woman:","category":"people","emoji_order":"128","aliases":[":grandma:"],"aliases_ascii":[],"keywords":["people","old people","diversity","diversity"]},"man_with_gua_pi_mao":{"unicode":"1f472","unicode_alternates":"","name":"man with gua pi mao","shortname":":man_with_gua_pi_mao:","category":"people","emoji_order":"129","aliases":[],"aliases_ascii":[],"keywords":["people","hat","men","diversity","diversity"]},"man_with_turban":{"unicode":"1f473","unicode_alternates":"","name":"man with turban","shortname":":man_with_turban:","category":"people","emoji_order":"130","aliases":[],"aliases_ascii":[],"keywords":["people","hat","diversity","diversity"]},"cop":{"unicode":"1f46e","unicode_alternates":"","name":"police officer","shortname":":cop:","category":"people","emoji_order":"131","aliases":[],"aliases_ascii":[],"keywords":["people","hat","men","diversity","diversity","job","job","police","police","911","911"]},"construction_worker":{"unicode":"1f477","unicode_alternates":"","name":"construction worker","shortname":":construction_worker:","category":"people","emoji_order":"132","aliases":[],"aliases_ascii":[],"keywords":["people","hat","men","diversity","diversity","job","job"]},"guardsman":{"unicode":"1f482","unicode_alternates":"","name":"guardsman","shortname":":guardsman:","category":"people","emoji_order":"133","aliases":[],"aliases_ascii":[],"keywords":["people","hat","men","diversity","diversity","job","job"]},"spy":{"unicode":"1f575","unicode_alternates":"1f575-fe0f","name":"sleuth or spy","shortname":":spy:","category":"people","emoji_order":"134","aliases":[":sleuth_or_spy:"],"aliases_ascii":[],"keywords":["people","hat","men","glasses","diversity","diversity","job","job"]},"santa":{"unicode":"1f385","unicode_alternates":"","name":"father christmas","shortname":":santa:","category":"people","emoji_order":"135","aliases":[],"aliases_ascii":[],"keywords":["people","hat","winter","holidays","christmas","diversity","diversity","santa","santa"]},"angel":{"unicode":"1f47c","unicode_alternates":"","name":"baby angel","shortname":":angel:","category":"people","emoji_order":"136","aliases":[],"aliases_ascii":[],"keywords":["people","diversity","diversity","omg","omg"]},"princess":{"unicode":"1f478","unicode_alternates":"","name":"princess","shortname":":princess:","category":"people","emoji_order":"137","aliases":[],"aliases_ascii":[],"keywords":["people","women","diversity","diversity","beautiful","beautiful","girls night","girls night"]},"bride_with_veil":{"unicode":"1f470","unicode_alternates":"","name":"bride with veil","shortname":":bride_with_veil:","category":"people","emoji_order":"138","aliases":[],"aliases_ascii":[],"keywords":["people","wedding","women","diversity","diversity"]},"walking":{"unicode":"1f6b6","unicode_alternates":"","name":"pedestrian","shortname":":walking:","category":"people","emoji_order":"139","aliases":[],"aliases_ascii":[],"keywords":["people","men","diversity","diversity"]},"runner":{"unicode":"1f3c3","unicode_alternates":"","name":"runner","shortname":":runner:","category":"people","emoji_order":"140","aliases":[],"aliases_ascii":[],"keywords":["people","men","diversity","diversity","boys night","boys night","run","run"]},"dancer":{"unicode":"1f483","unicode_alternates":"","name":"dancer","shortname":":dancer:","category":"people","emoji_order":"141","aliases":[],"aliases_ascii":[],"keywords":["people","women","sexy","diversity","diversity","girls night","girls night","dance","dance"]},"dancers":{"unicode":"1f46f","unicode_alternates":"","name":"woman with bunny ears","shortname":":dancers:","category":"people","emoji_order":"142","aliases":[],"aliases_ascii":[],"keywords":["people","women","sexy","girls night","girls night","boys night","boys night","parties","parties","dance","dance"]},"couple":{"unicode":"1f46b","unicode_alternates":"","name":"man and woman holding hands","shortname":":couple:","category":"people","emoji_order":"143","aliases":[],"aliases_ascii":[],"keywords":["people","sex","creationism","creationism"]},"two_men_holding_hands":{"unicode":"1f46c","unicode_alternates":"","name":"two men holding hands","shortname":":two_men_holding_hands:","category":"people","emoji_order":"144","aliases":[],"aliases_ascii":[],"keywords":["people","gay","men","sex","lgbt","lgbt"]},"two_women_holding_hands":{"unicode":"1f46d","unicode_alternates":"","name":"two women holding hands","shortname":":two_women_holding_hands:","category":"people","emoji_order":"145","aliases":[],"aliases_ascii":[],"keywords":["people","women","sex","lgbt","lgbt","lesbian","lesbian","girls night","girls night"]},"bow":{"unicode":"1f647","unicode_alternates":"","name":"person bowing deeply","shortname":":bow:","category":"people","emoji_order":"146","aliases":[],"aliases_ascii":[],"keywords":["people","pray","pray","diversity","diversity"]},"information_desk_person":{"unicode":"1f481","unicode_alternates":"","name":"information desk person","shortname":":information_desk_person:","category":"people","emoji_order":"147","aliases":[],"aliases_ascii":[],"keywords":["people","women","diversity","diversity"]},"no_good":{"unicode":"1f645","unicode_alternates":"","name":"face with no good gesture","shortname":":no_good:","category":"people","emoji_order":"148","aliases":[],"aliases_ascii":[],"keywords":["people","women","diversity","diversity","girls night","girls night"]},"ok_woman":{"unicode":"1f646","unicode_alternates":"","name":"face with ok gesture","shortname":":ok_woman:","category":"people","emoji_order":"149","aliases":[],"aliases_ascii":["*\\0\/*","\\0\/","*\\O\/*","\\O\/"],"keywords":["people","women","diversity","diversity"]},"raising_hand":{"unicode":"1f64b","unicode_alternates":"","name":"happy person raising one hand","shortname":":raising_hand:","category":"people","emoji_order":"150","aliases":[],"aliases_ascii":[],"keywords":["people","women","diversity","diversity"]},"person_with_pouting_face":{"unicode":"1f64e","unicode_alternates":"","name":"person with pouting face","shortname":":person_with_pouting_face:","category":"people","emoji_order":"151","aliases":[],"aliases_ascii":[],"keywords":["people","women","diversity","diversity"]},"person_frowning":{"unicode":"1f64d","unicode_alternates":"","name":"person frowning","shortname":":person_frowning:","category":"people","emoji_order":"152","aliases":[],"aliases_ascii":[],"keywords":["people","women","diversity","diversity"]},"haircut":{"unicode":"1f487","unicode_alternates":"","name":"haircut","shortname":":haircut:","category":"people","emoji_order":"153","aliases":[],"aliases_ascii":[],"keywords":["people","women","diversity","diversity"]},"massage":{"unicode":"1f486","unicode_alternates":"","name":"face massage","shortname":":massage:","category":"people","emoji_order":"154","aliases":[],"aliases_ascii":[],"keywords":["people","women","diversity","diversity"]},"couple_with_heart":{"unicode":"1f491","unicode_alternates":"","name":"couple with heart","shortname":":couple_with_heart:","category":"people","emoji_order":"155","aliases":[],"aliases_ascii":[],"keywords":["people","love","sex"]},"couple_ww":{"unicode":"1f469-2764-1f469","unicode_alternates":"1f469-200d-2764-fe0f-200d-1f469","name":"couple (woman,woman)","shortname":":couple_ww:","category":"people","emoji_order":"156","aliases":[":couple_with_heart_ww:"],"aliases_ascii":[],"keywords":["people","women","love","sex","lgbt","lgbt"]},"couple_mm":{"unicode":"1f468-2764-1f468","unicode_alternates":"1f468-200d-2764-fe0f-200d-1f468","name":"couple (man,man)","shortname":":couple_mm:","category":"people","emoji_order":"157","aliases":[":couple_with_heart_mm:"],"aliases_ascii":[],"keywords":["people","gay","men","love","sex","lgbt","lgbt"]},"couplekiss":{"unicode":"1f48f","unicode_alternates":"","name":"kiss","shortname":":couplekiss:","category":"people","emoji_order":"158","aliases":[],"aliases_ascii":[],"keywords":["people","love","sex"]},"kiss_ww":{"unicode":"1f469-2764-1f48b-1f469","unicode_alternates":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","name":"kiss (woman,woman)","shortname":":kiss_ww:","category":"people","emoji_order":"159","aliases":[":couplekiss_ww:"],"aliases_ascii":[],"keywords":["people","women","love","sex","lgbt","lgbt","lesbian","lesbian"]},"kiss_mm":{"unicode":"1f468-2764-1f48b-1f468","unicode_alternates":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","name":"kiss (man,man)","shortname":":kiss_mm:","category":"people","emoji_order":"160","aliases":[":couplekiss_mm:"],"aliases_ascii":[],"keywords":["people","gay","men","love","sex","lgbt","lgbt"]},"family":{"unicode":"1f46a","unicode_alternates":"","name":"family","shortname":":family:","category":"people","emoji_order":"161","aliases":[],"aliases_ascii":[],"keywords":["people","family","baby"]},"family_mwg":{"unicode":"1f468-1f469-1f467","unicode_alternates":"1f468-200d-1f469-200d-1f467","name":"family (man,woman,girl)","shortname":":family_mwg:","category":"people","emoji_order":"162","aliases":[],"aliases_ascii":[],"keywords":["people","family","baby"]},"family_mwgb":{"unicode":"1f468-1f469-1f467-1f466","unicode_alternates":"1f468-200d-1f469-200d-1f467-200d-1f466","name":"family (man,woman,girl,boy)","shortname":":family_mwgb:","category":"people","emoji_order":"163","aliases":[],"aliases_ascii":[],"keywords":["people","family","baby"]},"family_mwbb":{"unicode":"1f468-1f469-1f466-1f466","unicode_alternates":"1f468-200d-1f469-200d-1f466-200d-1f466","name":"family (man,woman,boy,boy)","shortname":":family_mwbb:","category":"people","emoji_order":"164","aliases":[],"aliases_ascii":[],"keywords":["people","family","baby"]},"family_mwgg":{"unicode":"1f468-1f469-1f467-1f467","unicode_alternates":"1f468-200d-1f469-200d-1f467-200d-1f467","name":"family (man,woman,girl,girl)","shortname":":family_mwgg:","category":"people","emoji_order":"165","aliases":[],"aliases_ascii":[],"keywords":["people","family","baby"]},"family_wwb":{"unicode":"1f469-1f469-1f466","unicode_alternates":"1f469-200d-1f469-200d-1f466","name":"family (woman,woman,boy)","shortname":":family_wwb:","category":"people","emoji_order":"166","aliases":[],"aliases_ascii":[],"keywords":["people","family","women","baby","lgbt","lgbt","lesbian","lesbian"]},"family_wwg":{"unicode":"1f469-1f469-1f467","unicode_alternates":"1f469-200d-1f469-200d-1f467","name":"family (woman,woman,girl)","shortname":":family_wwg:","category":"people","emoji_order":"167","aliases":[],"aliases_ascii":[],"keywords":["people","family","women","baby","lgbt","lgbt","lesbian","lesbian"]},"family_wwgb":{"unicode":"1f469-1f469-1f467-1f466","unicode_alternates":"1f469-200d-1f469-200d-1f467-200d-1f466","name":"family (woman,woman,girl,boy)","shortname":":family_wwgb:","category":"people","emoji_order":"168","aliases":[],"aliases_ascii":[],"keywords":["people","family","women","baby","lgbt","lgbt","lesbian","lesbian"]},"family_wwbb":{"unicode":"1f469-1f469-1f466-1f466","unicode_alternates":"1f469-200d-1f469-200d-1f466-200d-1f466","name":"family (woman,woman,boy,boy)","shortname":":family_wwbb:","category":"people","emoji_order":"169","aliases":[],"aliases_ascii":[],"keywords":["people","family","women","baby","lgbt","lgbt","lesbian","lesbian"]},"family_wwgg":{"unicode":"1f469-1f469-1f467-1f467","unicode_alternates":"1f469-200d-1f469-200d-1f467-200d-1f467","name":"family (woman,woman,girl,girl)","shortname":":family_wwgg:","category":"people","emoji_order":"170","aliases":[],"aliases_ascii":[],"keywords":["people","family","women","baby","lgbt","lgbt","lesbian","lesbian"]},"family_mmb":{"unicode":"1f468-1f468-1f466","unicode_alternates":"1f468-200d-1f468-200d-1f466","name":"family (man,man,boy)","shortname":":family_mmb:","category":"people","emoji_order":"171","aliases":[],"aliases_ascii":[],"keywords":["people","gay","family","men","baby","lgbt","lgbt"]},"family_mmg":{"unicode":"1f468-1f468-1f467","unicode_alternates":"1f468-200d-1f468-200d-1f467","name":"family (man,man,girl)","shortname":":family_mmg:","category":"people","emoji_order":"172","aliases":[],"aliases_ascii":[],"keywords":["people","gay","family","men","baby","lgbt","lgbt"]},"family_mmgb":{"unicode":"1f468-1f468-1f467-1f466","unicode_alternates":"1f468-200d-1f468-200d-1f467-200d-1f466","name":"family (man,man,girl,boy)","shortname":":family_mmgb:","category":"people","emoji_order":"173","aliases":[],"aliases_ascii":[],"keywords":["people","gay","family","men","baby","lgbt","lgbt"]},"family_mmbb":{"unicode":"1f468-1f468-1f466-1f466","unicode_alternates":"1f468-200d-1f468-200d-1f466-200d-1f466","name":"family (man,man,boy,boy)","shortname":":family_mmbb:","category":"people","emoji_order":"174","aliases":[],"aliases_ascii":[],"keywords":["people","gay","family","men","baby","lgbt","lgbt"]},"family_mmgg":{"unicode":"1f468-1f468-1f467-1f467","unicode_alternates":"1f468-200d-1f468-200d-1f467-200d-1f467","name":"family (man,man,girl,girl)","shortname":":family_mmgg:","category":"people","emoji_order":"175","aliases":[],"aliases_ascii":[],"keywords":["people","gay","family","men","baby","lgbt","lgbt"]},"womans_clothes":{"unicode":"1f45a","unicode_alternates":"","name":"womans clothes","shortname":":womans_clothes:","category":"people","emoji_order":"176","aliases":[],"aliases_ascii":[],"keywords":["women","fashion"]},"shirt":{"unicode":"1f455","unicode_alternates":"","name":"t-shirt","shortname":":shirt:","category":"people","emoji_order":"177","aliases":[],"aliases_ascii":[],"keywords":["fashion"]},"jeans":{"unicode":"1f456","unicode_alternates":"","name":"jeans","shortname":":jeans:","category":"people","emoji_order":"178","aliases":[],"aliases_ascii":[],"keywords":["fashion"]},"necktie":{"unicode":"1f454","unicode_alternates":"","name":"necktie","shortname":":necktie:","category":"people","emoji_order":"179","aliases":[],"aliases_ascii":[],"keywords":["fashion"]},"dress":{"unicode":"1f457","unicode_alternates":"","name":"dress","shortname":":dress:","category":"people","emoji_order":"180","aliases":[],"aliases_ascii":[],"keywords":["women","fashion","sexy","girls night","girls night"]},"bikini":{"unicode":"1f459","unicode_alternates":"","name":"bikini","shortname":":bikini:","category":"people","emoji_order":"181","aliases":[],"aliases_ascii":[],"keywords":["women","fashion","sexy","vacation","tropical","swim"]},"kimono":{"unicode":"1f458","unicode_alternates":"","name":"kimono","shortname":":kimono:","category":"people","emoji_order":"182","aliases":[],"aliases_ascii":[],"keywords":["fashion"]},"lipstick":{"unicode":"1f484","unicode_alternates":"","name":"lipstick","shortname":":lipstick:","category":"people","emoji_order":"183","aliases":[],"aliases_ascii":[],"keywords":["object","women","fashion","sexy","lip"]},"kiss":{"unicode":"1f48b","unicode_alternates":"","name":"kiss mark","shortname":":kiss:","category":"people","emoji_order":"184","aliases":[],"aliases_ascii":[],"keywords":["women","love","sexy","lip","beautiful","beautiful","girls night","girls night"]},"footprints":{"unicode":"1f463","unicode_alternates":"","name":"footprints","shortname":":footprints:","category":"people","emoji_order":"185","aliases":[],"aliases_ascii":[],"keywords":[]},"high_heel":{"unicode":"1f460","unicode_alternates":"","name":"high-heeled shoe","shortname":":high_heel:","category":"people","emoji_order":"186","aliases":[],"aliases_ascii":[],"keywords":["women","fashion","shoe","sexy","accessories","girls night","girls night"]},"sandal":{"unicode":"1f461","unicode_alternates":"","name":"womans sandal","shortname":":sandal:","category":"people","emoji_order":"187","aliases":[],"aliases_ascii":[],"keywords":["fashion","shoe","accessories"]},"boot":{"unicode":"1f462","unicode_alternates":"","name":"womans boots","shortname":":boot:","category":"people","emoji_order":"188","aliases":[],"aliases_ascii":[],"keywords":["women","fashion","shoe","sexy","accessories"]},"mans_shoe":{"unicode":"1f45e","unicode_alternates":"","name":"mans shoe","shortname":":mans_shoe:","category":"people","emoji_order":"189","aliases":[],"aliases_ascii":[],"keywords":["fashion","shoe","accessories"]},"athletic_shoe":{"unicode":"1f45f","unicode_alternates":"","name":"athletic shoe","shortname":":athletic_shoe:","category":"people","emoji_order":"190","aliases":[],"aliases_ascii":[],"keywords":["fashion","shoe","accessories","boys night","boys night"]},"womans_hat":{"unicode":"1f452","unicode_alternates":"","name":"womans hat","shortname":":womans_hat:","category":"people","emoji_order":"191","aliases":[],"aliases_ascii":[],"keywords":["women","fashion","accessories"]},"tophat":{"unicode":"1f3a9","unicode_alternates":"","name":"top hat","shortname":":tophat:","category":"people","emoji_order":"192","aliases":[],"aliases_ascii":[],"keywords":["hat","fashion","accessories"]},"helmet_with_cross":{"unicode":"26d1","unicode_alternates":"26d1-fe0f","name":"helmet with white cross","shortname":":helmet_with_cross:","category":"people","emoji_order":"193","aliases":[":helmet_with_white_cross:"],"aliases_ascii":[],"keywords":["object","hat","accessories","job","job"]},"mortar_board":{"unicode":"1f393","unicode_alternates":"","name":"graduation cap","shortname":":mortar_board:","category":"people","emoji_order":"194","aliases":[],"aliases_ascii":[],"keywords":["hat","office","accessories"]},"crown":{"unicode":"1f451","unicode_alternates":"","name":"crown","shortname":":crown:","category":"people","emoji_order":"195","aliases":[],"aliases_ascii":[],"keywords":["object","gem","accessories"]},"school_satchel":{"unicode":"1f392","unicode_alternates":"","name":"school satchel","shortname":":school_satchel:","category":"people","emoji_order":"196","aliases":[],"aliases_ascii":[],"keywords":["bag","fashion","office","vacation","accessories"]},"pouch":{"unicode":"1f45d","unicode_alternates":"","name":"pouch","shortname":":pouch:","category":"people","emoji_order":"197","aliases":[],"aliases_ascii":[],"keywords":["bag","women","fashion","accessories"]},"purse":{"unicode":"1f45b","unicode_alternates":"","name":"purse","shortname":":purse:","category":"people","emoji_order":"198","aliases":[],"aliases_ascii":[],"keywords":["bag","women","fashion","accessories","money","money"]},"handbag":{"unicode":"1f45c","unicode_alternates":"","name":"handbag","shortname":":handbag:","category":"people","emoji_order":"199","aliases":[],"aliases_ascii":[],"keywords":["bag","women","fashion","vacation","accessories"]},"briefcase":{"unicode":"1f4bc","unicode_alternates":"","name":"briefcase","shortname":":briefcase:","category":"people","emoji_order":"200","aliases":[],"aliases_ascii":[],"keywords":["bag","work","accessories","nutcase","nutcase","job","job"]},"eyeglasses":{"unicode":"1f453","unicode_alternates":"","name":"eyeglasses","shortname":":eyeglasses:","category":"people","emoji_order":"201","aliases":[],"aliases_ascii":[],"keywords":["fashion","glasses","accessories"]},"dark_sunglasses":{"unicode":"1f576","unicode_alternates":"1f576-fe0f","name":"dark sunglasses","shortname":":dark_sunglasses:","category":"people","emoji_order":"202","aliases":[],"aliases_ascii":[],"keywords":["fashion","glasses","accessories"]},"ring":{"unicode":"1f48d","unicode_alternates":"","name":"ring","shortname":":ring:","category":"people","emoji_order":"203","aliases":[],"aliases_ascii":[],"keywords":["wedding","object","fashion","gem","accessories"]},"closed_umbrella":{"unicode":"1f302","unicode_alternates":"","name":"closed umbrella","shortname":":closed_umbrella:","category":"people","emoji_order":"204","aliases":[],"aliases_ascii":[],"keywords":["object","sky","rain","accessories"]},"dog":{"unicode":"1f436","unicode_alternates":"","name":"dog face","shortname":":dog:","category":"nature","emoji_order":"205","aliases":[],"aliases_ascii":[],"keywords":["dog","dog","pug","pug","animal","animal"]},"cat":{"unicode":"1f431","unicode_alternates":"","name":"cat face","shortname":":cat:","category":"nature","emoji_order":"206","aliases":[],"aliases_ascii":[],"keywords":["halloween","vagina","cat","cat","animal","animal"]},"mouse":{"unicode":"1f42d","unicode_alternates":"","name":"mouse face","shortname":":mouse:","category":"nature","emoji_order":"207","aliases":[],"aliases_ascii":[],"keywords":["animal","animal"]},"hamster":{"unicode":"1f439","unicode_alternates":"","name":"hamster face","shortname":":hamster:","category":"nature","emoji_order":"208","aliases":[],"aliases_ascii":[],"keywords":["animal","animal"]},"rabbit":{"unicode":"1f430","unicode_alternates":"","name":"rabbit face","shortname":":rabbit:","category":"nature","emoji_order":"209","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"bear":{"unicode":"1f43b","unicode_alternates":"","name":"bear face","shortname":":bear:","category":"nature","emoji_order":"210","aliases":[],"aliases_ascii":[],"keywords":["wildlife","roar","animal","animal"]},"panda_face":{"unicode":"1f43c","unicode_alternates":"","name":"panda face","shortname":":panda_face:","category":"nature","emoji_order":"211","aliases":[],"aliases_ascii":[],"keywords":["wildlife","roar","animal","animal"]},"koala":{"unicode":"1f428","unicode_alternates":"","name":"koala","shortname":":koala:","category":"nature","emoji_order":"212","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"tiger":{"unicode":"1f42f","unicode_alternates":"","name":"tiger face","shortname":":tiger:","category":"nature","emoji_order":"213","aliases":[],"aliases_ascii":[],"keywords":["wildlife","roar","cat","cat","animal","animal"]},"lion_face":{"unicode":"1f981","unicode_alternates":"","name":"lion face","shortname":":lion_face:","category":"nature","emoji_order":"214","aliases":[":lion:"],"aliases_ascii":[],"keywords":["wildlife","roar","cat","cat","animal","animal"]},"cow":{"unicode":"1f42e","unicode_alternates":"","name":"cow face","shortname":":cow:","category":"nature","emoji_order":"215","aliases":[],"aliases_ascii":[],"keywords":["animal","animal"]},"pig":{"unicode":"1f437","unicode_alternates":"","name":"pig face","shortname":":pig:","category":"nature","emoji_order":"216","aliases":[],"aliases_ascii":[],"keywords":["animal","animal"]},"pig_nose":{"unicode":"1f43d","unicode_alternates":"","name":"pig nose","shortname":":pig_nose:","category":"nature","emoji_order":"217","aliases":[],"aliases_ascii":[],"keywords":["animal","animal"]},"frog":{"unicode":"1f438","unicode_alternates":"","name":"frog face","shortname":":frog:","category":"nature","emoji_order":"218","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"octopus":{"unicode":"1f419","unicode_alternates":"","name":"octopus","shortname":":octopus:","category":"nature","emoji_order":"219","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"monkey_face":{"unicode":"1f435","unicode_alternates":"","name":"monkey face","shortname":":monkey_face:","category":"nature","emoji_order":"220","aliases":[],"aliases_ascii":[],"keywords":["animal","animal"]},"see_no_evil":{"unicode":"1f648","unicode_alternates":"","name":"see-no-evil monkey","shortname":":see_no_evil:","category":"nature","emoji_order":"221","aliases":[],"aliases_ascii":[],"keywords":["animal","animal"]},"hear_no_evil":{"unicode":"1f649","unicode_alternates":"","name":"hear-no-evil monkey","shortname":":hear_no_evil:","category":"nature","emoji_order":"222","aliases":[],"aliases_ascii":[],"keywords":["animal","animal"]},"speak_no_evil":{"unicode":"1f64a","unicode_alternates":"","name":"speak-no-evil monkey","shortname":":speak_no_evil:","category":"nature","emoji_order":"223","aliases":[],"aliases_ascii":[],"keywords":["animal","animal"]},"monkey":{"unicode":"1f412","unicode_alternates":"","name":"monkey","shortname":":monkey:","category":"nature","emoji_order":"224","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"chicken":{"unicode":"1f414","unicode_alternates":"","name":"chicken","shortname":":chicken:","category":"nature","emoji_order":"225","aliases":[],"aliases_ascii":[],"keywords":["animal","animal","chicken","chicken"]},"penguin":{"unicode":"1f427","unicode_alternates":"","name":"penguin","shortname":":penguin:","category":"nature","emoji_order":"226","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"bird":{"unicode":"1f426","unicode_alternates":"","name":"bird","shortname":":bird:","category":"nature","emoji_order":"227","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"baby_chick":{"unicode":"1f424","unicode_alternates":"","name":"baby chick","shortname":":baby_chick:","category":"nature","emoji_order":"228","aliases":[],"aliases_ascii":[],"keywords":["animal","animal","chicken","chicken"]},"hatching_chick":{"unicode":"1f423","unicode_alternates":"","name":"hatching chick","shortname":":hatching_chick:","category":"nature","emoji_order":"229","aliases":[],"aliases_ascii":[],"keywords":["animal","animal","chicken","chicken"]},"hatched_chick":{"unicode":"1f425","unicode_alternates":"","name":"front-facing baby chick","shortname":":hatched_chick:","category":"nature","emoji_order":"230","aliases":[],"aliases_ascii":[],"keywords":["animal","animal","chicken","chicken"]},"wolf":{"unicode":"1f43a","unicode_alternates":"","name":"wolf face","shortname":":wolf:","category":"nature","emoji_order":"231","aliases":[],"aliases_ascii":[],"keywords":["wildlife","roar","animal","animal"]},"boar":{"unicode":"1f417","unicode_alternates":"","name":"boar","shortname":":boar:","category":"nature","emoji_order":"232","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"horse":{"unicode":"1f434","unicode_alternates":"","name":"horse face","shortname":":horse:","category":"nature","emoji_order":"233","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"unicorn":{"unicode":"1f984","unicode_alternates":"","name":"unicorn face","shortname":":unicorn:","category":"nature","emoji_order":"234","aliases":[":unicorn_face:"],"aliases_ascii":[],"keywords":["animal","animal"]},"bee":{"unicode":"1f41d","unicode_alternates":"","name":"honeybee","shortname":":bee:","category":"nature","emoji_order":"235","aliases":[],"aliases_ascii":[],"keywords":["insects","animal","animal"]},"bug":{"unicode":"1f41b","unicode_alternates":"","name":"bug","shortname":":bug:","category":"nature","emoji_order":"236","aliases":[],"aliases_ascii":[],"keywords":["insects","animal","animal"]},"snail":{"unicode":"1f40c","unicode_alternates":"","name":"snail","shortname":":snail:","category":"nature","emoji_order":"237","aliases":[],"aliases_ascii":[],"keywords":["insects","animal","animal"]},"beetle":{"unicode":"1f41e","unicode_alternates":"","name":"lady beetle","shortname":":beetle:","category":"nature","emoji_order":"238","aliases":[],"aliases_ascii":[],"keywords":["insects","animal","animal"]},"ant":{"unicode":"1f41c","unicode_alternates":"","name":"ant","shortname":":ant:","category":"nature","emoji_order":"239","aliases":[],"aliases_ascii":[],"keywords":["insects","animal","animal"]},"spider":{"unicode":"1f577","unicode_alternates":"1f577-fe0f","name":"spider","shortname":":spider:","category":"nature","emoji_order":"240","aliases":[],"aliases_ascii":[],"keywords":["insects","halloween","animal","animal"]},"scorpion":{"unicode":"1f982","unicode_alternates":"","name":"scorpion","shortname":":scorpion:","category":"nature","emoji_order":"241","aliases":[],"aliases_ascii":[],"keywords":["insects","reptile","reptile","animal","animal"]},"crab":{"unicode":"1f980","unicode_alternates":"","name":"crab","shortname":":crab:","category":"nature","emoji_order":"242","aliases":[],"aliases_ascii":[],"keywords":["tropical","animal","animal"]},"snake":{"unicode":"1f40d","unicode_alternates":"","name":"snake","shortname":":snake:","category":"nature","emoji_order":"243","aliases":[],"aliases_ascii":[],"keywords":["wildlife","reptile","reptile","animal","animal","creationism","creationism"]},"turtle":{"unicode":"1f422","unicode_alternates":"","name":"turtle","shortname":":turtle:","category":"nature","emoji_order":"244","aliases":[],"aliases_ascii":[],"keywords":["wildlife","reptile","reptile","animal","animal"]},"tropical_fish":{"unicode":"1f420","unicode_alternates":"","name":"tropical fish","shortname":":tropical_fish:","category":"nature","emoji_order":"245","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"fish":{"unicode":"1f41f","unicode_alternates":"","name":"fish","shortname":":fish:","category":"nature","emoji_order":"246","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"blowfish":{"unicode":"1f421","unicode_alternates":"","name":"blowfish","shortname":":blowfish:","category":"nature","emoji_order":"247","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"dolphin":{"unicode":"1f42c","unicode_alternates":"","name":"dolphin","shortname":":dolphin:","category":"nature","emoji_order":"248","aliases":[],"aliases_ascii":[],"keywords":["wildlife","tropical","animal","animal"]},"whale":{"unicode":"1f433","unicode_alternates":"","name":"spouting whale","shortname":":whale:","category":"nature","emoji_order":"249","aliases":[],"aliases_ascii":[],"keywords":["wildlife","tropical","whales","whales","animal","animal"]},"whale2":{"unicode":"1f40b","unicode_alternates":"","name":"whale","shortname":":whale2:","category":"nature","emoji_order":"250","aliases":[],"aliases_ascii":[],"keywords":["wildlife","tropical","whales","whales","animal","animal"]},"crocodile":{"unicode":"1f40a","unicode_alternates":"","name":"crocodile","shortname":":crocodile:","category":"nature","emoji_order":"251","aliases":[],"aliases_ascii":[],"keywords":["wildlife","reptile","reptile","animal","animal"]},"leopard":{"unicode":"1f406","unicode_alternates":"","name":"leopard","shortname":":leopard:","category":"nature","emoji_order":"252","aliases":[],"aliases_ascii":[],"keywords":["wildlife","roar","animal","animal"]},"tiger2":{"unicode":"1f405","unicode_alternates":"","name":"tiger","shortname":":tiger2:","category":"nature","emoji_order":"253","aliases":[],"aliases_ascii":[],"keywords":["wildlife","roar","animal","animal"]},"water_buffalo":{"unicode":"1f403","unicode_alternates":"","name":"water buffalo","shortname":":water_buffalo:","category":"nature","emoji_order":"254","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"ox":{"unicode":"1f402","unicode_alternates":"","name":"ox","shortname":":ox:","category":"nature","emoji_order":"255","aliases":[],"aliases_ascii":[],"keywords":["animal","animal"]},"cow2":{"unicode":"1f404","unicode_alternates":"","name":"cow","shortname":":cow2:","category":"nature","emoji_order":"256","aliases":[],"aliases_ascii":[],"keywords":["animal","animal"]},"dromedary_camel":{"unicode":"1f42a","unicode_alternates":"","name":"dromedary camel","shortname":":dromedary_camel:","category":"nature","emoji_order":"257","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"camel":{"unicode":"1f42b","unicode_alternates":"","name":"bactrian camel","shortname":":camel:","category":"nature","emoji_order":"258","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal","hump day","hump day"]},"elephant":{"unicode":"1f418","unicode_alternates":"","name":"elephant","shortname":":elephant:","category":"nature","emoji_order":"259","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"goat":{"unicode":"1f410","unicode_alternates":"","name":"goat","shortname":":goat:","category":"nature","emoji_order":"260","aliases":[],"aliases_ascii":[],"keywords":["animal","animal"]},"ram":{"unicode":"1f40f","unicode_alternates":"","name":"ram","shortname":":ram:","category":"nature","emoji_order":"261","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"sheep":{"unicode":"1f411","unicode_alternates":"","name":"sheep","shortname":":sheep:","category":"nature","emoji_order":"262","aliases":[],"aliases_ascii":[],"keywords":["animal","animal"]},"racehorse":{"unicode":"1f40e","unicode_alternates":"","name":"horse","shortname":":racehorse:","category":"nature","emoji_order":"263","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"pig2":{"unicode":"1f416","unicode_alternates":"","name":"pig","shortname":":pig2:","category":"nature","emoji_order":"264","aliases":[],"aliases_ascii":[],"keywords":["animal","animal"]},"rat":{"unicode":"1f400","unicode_alternates":"","name":"rat","shortname":":rat:","category":"nature","emoji_order":"265","aliases":[],"aliases_ascii":[],"keywords":["animal","animal"]},"mouse2":{"unicode":"1f401","unicode_alternates":"","name":"mouse","shortname":":mouse2:","category":"nature","emoji_order":"266","aliases":[],"aliases_ascii":[],"keywords":["animal","animal"]},"rooster":{"unicode":"1f413","unicode_alternates":"","name":"rooster","shortname":":rooster:","category":"nature","emoji_order":"267","aliases":[],"aliases_ascii":[],"keywords":["animal","animal"]},"turkey":{"unicode":"1f983","unicode_alternates":"","name":"turkey","shortname":":turkey:","category":"nature","emoji_order":"268","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"dove":{"unicode":"1f54a","unicode_alternates":"1f54a-fe0f","name":"dove of peace","shortname":":dove:","category":"nature","emoji_order":"269","aliases":[":dove_of_peace:"],"aliases_ascii":[],"keywords":["animal","animal"]},"dog2":{"unicode":"1f415","unicode_alternates":"","name":"dog","shortname":":dog2:","category":"nature","emoji_order":"270","aliases":[],"aliases_ascii":[],"keywords":["dog","dog","pug","pug","animal","animal"]},"poodle":{"unicode":"1f429","unicode_alternates":"","name":"poodle","shortname":":poodle:","category":"nature","emoji_order":"271","aliases":[],"aliases_ascii":[],"keywords":["dog","dog","animal","animal"]},"cat2":{"unicode":"1f408","unicode_alternates":"","name":"cat","shortname":":cat2:","category":"nature","emoji_order":"272","aliases":[],"aliases_ascii":[],"keywords":["halloween","cat","cat","animal","animal"]},"rabbit2":{"unicode":"1f407","unicode_alternates":"","name":"rabbit","shortname":":rabbit2:","category":"nature","emoji_order":"273","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"chipmunk":{"unicode":"1f43f","unicode_alternates":"1f43f-fe0f","name":"chipmunk","shortname":":chipmunk:","category":"nature","emoji_order":"274","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","animal"]},"feet":{"unicode":"1f43e","unicode_alternates":"","name":"paw prints","shortname":":feet:","category":"nature","emoji_order":"275","aliases":[":paw_prints:"],"aliases_ascii":[],"keywords":["animal","animal"]},"dragon":{"unicode":"1f409","unicode_alternates":"","name":"dragon","shortname":":dragon:","category":"nature","emoji_order":"276","aliases":[],"aliases_ascii":[],"keywords":["roar","reptile","reptile","animal","animal"]},"dragon_face":{"unicode":"1f432","unicode_alternates":"","name":"dragon face","shortname":":dragon_face:","category":"nature","emoji_order":"277","aliases":[],"aliases_ascii":[],"keywords":["roar","monster","reptile","reptile","animal","animal"]},"cactus":{"unicode":"1f335","unicode_alternates":"","name":"cactus","shortname":":cactus:","category":"nature","emoji_order":"278","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","trees","trees"]},"christmas_tree":{"unicode":"1f384","unicode_alternates":"","name":"christmas tree","shortname":":christmas_tree:","category":"nature","emoji_order":"279","aliases":[],"aliases_ascii":[],"keywords":["plant","holidays","christmas","trees","trees"]},"evergreen_tree":{"unicode":"1f332","unicode_alternates":"","name":"evergreen tree","shortname":":evergreen_tree:","category":"nature","emoji_order":"280","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","holidays","christmas","camp","trees","trees"]},"deciduous_tree":{"unicode":"1f333","unicode_alternates":"","name":"deciduous tree","shortname":":deciduous_tree:","category":"nature","emoji_order":"281","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","camp","trees","trees"]},"palm_tree":{"unicode":"1f334","unicode_alternates":"","name":"palm tree","shortname":":palm_tree:","category":"nature","emoji_order":"282","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","tropical","trees","trees"]},"seedling":{"unicode":"1f331","unicode_alternates":"","name":"seedling","shortname":":seedling:","category":"nature","emoji_order":"283","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","leaf","leaf"]},"herb":{"unicode":"1f33f","unicode_alternates":"","name":"herb","shortname":":herb:","category":"nature","emoji_order":"284","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","leaf","leaf"]},"shamrock":{"unicode":"2618","unicode_alternates":"2618-fe0f","name":"shamrock","shortname":":shamrock:","category":"nature","emoji_order":"285","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","luck","leaf","leaf"]},"four_leaf_clover":{"unicode":"1f340","unicode_alternates":"","name":"four leaf clover","shortname":":four_leaf_clover:","category":"nature","emoji_order":"286","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","luck","leaf","leaf","sol","sol"]},"bamboo":{"unicode":"1f38d","unicode_alternates":"","name":"pine decoration","shortname":":bamboo:","category":"nature","emoji_order":"287","aliases":[],"aliases_ascii":[],"keywords":["nature","plant"]},"tanabata_tree":{"unicode":"1f38b","unicode_alternates":"","name":"tanabata tree","shortname":":tanabata_tree:","category":"nature","emoji_order":"288","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","trees","trees"]},"leaves":{"unicode":"1f343","unicode_alternates":"","name":"leaf fluttering in wind","shortname":":leaves:","category":"nature","emoji_order":"289","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","leaf","leaf"]},"fallen_leaf":{"unicode":"1f342","unicode_alternates":"","name":"fallen leaf","shortname":":fallen_leaf:","category":"nature","emoji_order":"290","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","leaf","leaf"]},"maple_leaf":{"unicode":"1f341","unicode_alternates":"","name":"maple leaf","shortname":":maple_leaf:","category":"nature","emoji_order":"291","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","leaf","leaf"]},"ear_of_rice":{"unicode":"1f33e","unicode_alternates":"","name":"ear of rice","shortname":":ear_of_rice:","category":"nature","emoji_order":"292","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","leaf","leaf"]},"hibiscus":{"unicode":"1f33a","unicode_alternates":"","name":"hibiscus","shortname":":hibiscus:","category":"nature","emoji_order":"293","aliases":[],"aliases_ascii":[],"keywords":["nature","flower","plant","tropical"]},"sunflower":{"unicode":"1f33b","unicode_alternates":"","name":"sunflower","shortname":":sunflower:","category":"nature","emoji_order":"294","aliases":[],"aliases_ascii":[],"keywords":["nature","flower","plant"]},"rose":{"unicode":"1f339","unicode_alternates":"","name":"rose","shortname":":rose:","category":"nature","emoji_order":"295","aliases":[],"aliases_ascii":[],"keywords":["nature","flower","plant","rip","rip","condolence","condolence","beautiful","beautiful"]},"tulip":{"unicode":"1f337","unicode_alternates":"","name":"tulip","shortname":":tulip:","category":"nature","emoji_order":"296","aliases":[],"aliases_ascii":[],"keywords":["nature","flower","plant","vagina","girls night","girls night"]},"blossom":{"unicode":"1f33c","unicode_alternates":"","name":"blossom","shortname":":blossom:","category":"nature","emoji_order":"297","aliases":[],"aliases_ascii":[],"keywords":["nature","flower","plant"]},"cherry_blossom":{"unicode":"1f338","unicode_alternates":"","name":"cherry blossom","shortname":":cherry_blossom:","category":"nature","emoji_order":"298","aliases":[],"aliases_ascii":[],"keywords":["nature","flower","plant","tropical"]},"bouquet":{"unicode":"1f490","unicode_alternates":"","name":"bouquet","shortname":":bouquet:","category":"nature","emoji_order":"299","aliases":[],"aliases_ascii":[],"keywords":["nature","flower","plant","rip","rip","condolence","condolence"]},"mushroom":{"unicode":"1f344","unicode_alternates":"","name":"mushroom","shortname":":mushroom:","category":"nature","emoji_order":"300","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","drugs","drugs"]},"chestnut":{"unicode":"1f330","unicode_alternates":"","name":"chestnut","shortname":":chestnut:","category":"nature","emoji_order":"301","aliases":[],"aliases_ascii":[],"keywords":["nature","plant"]},"jack_o_lantern":{"unicode":"1f383","unicode_alternates":"","name":"jack-o-lantern","shortname":":jack_o_lantern:","category":"nature","emoji_order":"302","aliases":[],"aliases_ascii":[],"keywords":["holidays","halloween"]},"shell":{"unicode":"1f41a","unicode_alternates":"","name":"spiral shell","shortname":":shell:","category":"nature","emoji_order":"303","aliases":[],"aliases_ascii":[],"keywords":[]},"spider_web":{"unicode":"1f578","unicode_alternates":"1f578-fe0f","name":"spider web","shortname":":spider_web:","category":"nature","emoji_order":"304","aliases":[],"aliases_ascii":[],"keywords":["halloween"]},"earth_americas":{"unicode":"1f30e","unicode_alternates":"","name":"earth globe americas","shortname":":earth_americas:","category":"nature","emoji_order":"305","aliases":[],"aliases_ascii":[],"keywords":["map","vacation","globe","globe"]},"earth_africa":{"unicode":"1f30d","unicode_alternates":"","name":"earth globe europe-africa","shortname":":earth_africa:","category":"nature","emoji_order":"306","aliases":[],"aliases_ascii":[],"keywords":["map","vacation","globe","globe"]},"earth_asia":{"unicode":"1f30f","unicode_alternates":"","name":"earth globe asia-australia","shortname":":earth_asia:","category":"nature","emoji_order":"307","aliases":[],"aliases_ascii":[],"keywords":["map","vacation","globe","globe"]},"full_moon":{"unicode":"1f315","unicode_alternates":"","name":"full moon symbol","shortname":":full_moon:","category":"nature","emoji_order":"308","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon","moon"]},"waning_gibbous_moon":{"unicode":"1f316","unicode_alternates":"","name":"waning gibbous moon symbol","shortname":":waning_gibbous_moon:","category":"nature","emoji_order":"309","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon","moon"]},"last_quarter_moon":{"unicode":"1f317","unicode_alternates":"","name":"last quarter moon symbol","shortname":":last_quarter_moon:","category":"nature","emoji_order":"310","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon","moon"]},"waning_crescent_moon":{"unicode":"1f318","unicode_alternates":"","name":"waning crescent moon symbol","shortname":":waning_crescent_moon:","category":"nature","emoji_order":"311","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon","moon"]},"new_moon":{"unicode":"1f311","unicode_alternates":"","name":"new moon symbol","shortname":":new_moon:","category":"nature","emoji_order":"312","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon","moon"]},"waxing_crescent_moon":{"unicode":"1f312","unicode_alternates":"","name":"waxing crescent moon symbol","shortname":":waxing_crescent_moon:","category":"nature","emoji_order":"313","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon","moon"]},"first_quarter_moon":{"unicode":"1f313","unicode_alternates":"","name":"first quarter moon symbol","shortname":":first_quarter_moon:","category":"nature","emoji_order":"314","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon","moon"]},"waxing_gibbous_moon":{"unicode":"1f314","unicode_alternates":"","name":"waxing gibbous moon symbol","shortname":":waxing_gibbous_moon:","category":"nature","emoji_order":"315","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon","moon"]},"new_moon_with_face":{"unicode":"1f31a","unicode_alternates":"","name":"new moon with face","shortname":":new_moon_with_face:","category":"nature","emoji_order":"316","aliases":[],"aliases_ascii":[],"keywords":["space","sky","goodnight","goodnight","moon","moon"]},"full_moon_with_face":{"unicode":"1f31d","unicode_alternates":"","name":"full moon with face","shortname":":full_moon_with_face:","category":"nature","emoji_order":"317","aliases":[],"aliases_ascii":[],"keywords":["space","sky","goodnight","goodnight","moon","moon"]},"first_quarter_moon_with_face":{"unicode":"1f31b","unicode_alternates":"","name":"first quarter moon with face","shortname":":first_quarter_moon_with_face:","category":"nature","emoji_order":"318","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon","moon"]},"last_quarter_moon_with_face":{"unicode":"1f31c","unicode_alternates":"","name":"last quarter moon with face","shortname":":last_quarter_moon_with_face:","category":"nature","emoji_order":"319","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon","moon"]},"sun_with_face":{"unicode":"1f31e","unicode_alternates":"","name":"sun with face","shortname":":sun_with_face:","category":"nature","emoji_order":"320","aliases":[],"aliases_ascii":[],"keywords":["sky","day","sun","hump day","hump day","morning","morning"]},"crescent_moon":{"unicode":"1f319","unicode_alternates":"","name":"crescent moon","shortname":":crescent_moon:","category":"nature","emoji_order":"321","aliases":[],"aliases_ascii":[],"keywords":["space","sky","goodnight","goodnight","moon","moon"]},"star":{"unicode":"2b50","unicode_alternates":"2b50-fe0f","name":"white medium star","shortname":":star:","category":"nature","emoji_order":"322","aliases":[],"aliases_ascii":[],"keywords":["space","sky","star"]},"star2":{"unicode":"1f31f","unicode_alternates":"","name":"glowing star","shortname":":star2:","category":"nature","emoji_order":"323","aliases":[],"aliases_ascii":[],"keywords":["space","sky","star"]},"dizzy":{"unicode":"1f4ab","unicode_alternates":"","name":"dizzy symbol","shortname":":dizzy:","category":"nature","emoji_order":"324","aliases":[],"aliases_ascii":[],"keywords":["star","symbol"]},"sparkles":{"unicode":"2728","unicode_alternates":"","name":"sparkles","shortname":":sparkles:","category":"nature","emoji_order":"325","aliases":[],"aliases_ascii":[],"keywords":["star","girls night","girls night"]},"comet":{"unicode":"2604","unicode_alternates":"2604-fe0f","name":"comet","shortname":":comet:","category":"nature","emoji_order":"326","aliases":[],"aliases_ascii":[],"keywords":["space","sky"]},"sunny":{"unicode":"2600","unicode_alternates":"2600-fe0f","name":"black sun with rays","shortname":":sunny:","category":"nature","emoji_order":"327","aliases":[],"aliases_ascii":[],"keywords":["weather","sky","day","sun","hot","hot","morning","morning"]},"white_sun_small_cloud":{"unicode":"1f324","unicode_alternates":"1f324-fe0f","name":"white sun with small cloud","shortname":":white_sun_small_cloud:","category":"nature","emoji_order":"328","aliases":[":white_sun_with_small_cloud:"],"aliases_ascii":[],"keywords":["weather","sky","cloud","sun"]},"partly_sunny":{"unicode":"26c5","unicode_alternates":"26c5-fe0f","name":"sun behind cloud","shortname":":partly_sunny:","category":"nature","emoji_order":"329","aliases":[],"aliases_ascii":[],"keywords":["weather","sky","cloud","sun"]},"white_sun_cloud":{"unicode":"1f325","unicode_alternates":"1f325-fe0f","name":"white sun behind cloud","shortname":":white_sun_cloud:","category":"nature","emoji_order":"330","aliases":[":white_sun_behind_cloud:"],"aliases_ascii":[],"keywords":["weather","sky","cloud","cold","sun"]},"white_sun_rain_cloud":{"unicode":"1f326","unicode_alternates":"1f326-fe0f","name":"white sun behind cloud with rain","shortname":":white_sun_rain_cloud:","category":"nature","emoji_order":"331","aliases":[":white_sun_behind_cloud_with_rain:"],"aliases_ascii":[],"keywords":["weather","sky","cloud","cold","rain","sun"]},"cloud":{"unicode":"2601","unicode_alternates":"2601-fe0f","name":"cloud","shortname":":cloud:","category":"nature","emoji_order":"332","aliases":[],"aliases_ascii":[],"keywords":["weather","sky","cloud","cold","rain"]},"cloud_rain":{"unicode":"1f327","unicode_alternates":"1f327-fe0f","name":"cloud with rain","shortname":":cloud_rain:","category":"nature","emoji_order":"333","aliases":[":cloud_with_rain:"],"aliases_ascii":[],"keywords":["weather","winter","sky","cloud","cold","rain"]},"thunder_cloud_rain":{"unicode":"26c8","unicode_alternates":"26c8-fe0f","name":"thunder cloud and rain","shortname":":thunder_cloud_rain:","category":"nature","emoji_order":"334","aliases":[":thunder_cloud_and_rain:"],"aliases_ascii":[],"keywords":["weather","sky","cloud","cold","rain"]},"cloud_lightning":{"unicode":"1f329","unicode_alternates":"1f329-fe0f","name":"cloud with lightning","shortname":":cloud_lightning:","category":"nature","emoji_order":"335","aliases":[":cloud_with_lightning:"],"aliases_ascii":[],"keywords":["weather","sky","cloud","cold","rain"]},"zap":{"unicode":"26a1","unicode_alternates":"26a1-fe0f","name":"high voltage sign","shortname":":zap:","category":"nature","emoji_order":"336","aliases":[],"aliases_ascii":[],"keywords":["weather","sky","diarrhea","diarrhea"]},"fire":{"unicode":"1f525","unicode_alternates":"","name":"fire","shortname":":fire:","category":"nature","emoji_order":"337","aliases":[":flame:"],"aliases_ascii":[],"keywords":["wth","wth","hot","hot"]},"boom":{"unicode":"1f4a5","unicode_alternates":"","name":"collision symbol","shortname":":boom:","category":"nature","emoji_order":"338","aliases":[],"aliases_ascii":[],"keywords":["symbol","blast","blast"]},"snowflake":{"unicode":"2744","unicode_alternates":"2744-fe0f","name":"snowflake","shortname":":snowflake:","category":"nature","emoji_order":"339","aliases":[],"aliases_ascii":[],"keywords":["weather","winter","sky","holidays","cold","snow","snow"]},"cloud_snow":{"unicode":"1f328","unicode_alternates":"1f328-fe0f","name":"cloud with snow","shortname":":cloud_snow:","category":"nature","emoji_order":"340","aliases":[":cloud_with_snow:"],"aliases_ascii":[],"keywords":["weather","winter","sky","cloud","cold","snow","snow"]},"snowman2":{"unicode":"2603","unicode_alternates":"2603-fe0f","name":"snowman","shortname":":snowman2:","category":"nature","emoji_order":"341","aliases":[],"aliases_ascii":[],"keywords":["weather","winter","holidays","christmas","cold","snow","snow"]},"snowman":{"unicode":"26c4","unicode_alternates":"26c4-fe0f","name":"snowman without snow","shortname":":snowman:","category":"nature","emoji_order":"342","aliases":[],"aliases_ascii":[],"keywords":["weather","winter","holidays","cold","snow","snow"]},"wind_blowing_face":{"unicode":"1f32c","unicode_alternates":"1f32c-fe0f","name":"wind blowing face","shortname":":wind_blowing_face:","category":"nature","emoji_order":"343","aliases":[],"aliases_ascii":[],"keywords":["weather","cold"]},"dash":{"unicode":"1f4a8","unicode_alternates":"","name":"dash symbol","shortname":":dash:","category":"nature","emoji_order":"344","aliases":[],"aliases_ascii":[],"keywords":["cloud","cold","smoking","smoking"]},"cloud_tornado":{"unicode":"1f32a","unicode_alternates":"1f32a-fe0f","name":"cloud with tornado","shortname":":cloud_tornado:","category":"nature","emoji_order":"345","aliases":[":cloud_with_tornado:"],"aliases_ascii":[],"keywords":["weather","sky","cold"]},"fog":{"unicode":"1f32b","unicode_alternates":"1f32b-fe0f","name":"fog","shortname":":fog:","category":"nature","emoji_order":"346","aliases":[],"aliases_ascii":[],"keywords":["weather","sky","cold"]},"umbrella2":{"unicode":"2602","unicode_alternates":"2602-fe0f","name":"umbrella","shortname":":umbrella2:","category":"nature","emoji_order":"347","aliases":[],"aliases_ascii":[],"keywords":["weather","object","sky","cold"]},"umbrella":{"unicode":"2614","unicode_alternates":"2614-fe0f","name":"umbrella with rain drops","shortname":":umbrella:","category":"nature","emoji_order":"348","aliases":[],"aliases_ascii":[],"keywords":["weather","sky","cold","rain"]},"droplet":{"unicode":"1f4a7","unicode_alternates":"","name":"droplet","shortname":":droplet:","category":"nature","emoji_order":"349","aliases":[],"aliases_ascii":[],"keywords":["weather","sky","rain"]},"sweat_drops":{"unicode":"1f4a6","unicode_alternates":"","name":"splashing sweat symbol","shortname":":sweat_drops:","category":"nature","emoji_order":"350","aliases":[],"aliases_ascii":[],"keywords":["rain","stressed","sweat"]},"ocean":{"unicode":"1f30a","unicode_alternates":"","name":"water wave","shortname":":ocean:","category":"nature","emoji_order":"351","aliases":[],"aliases_ascii":[],"keywords":["weather","boat","tropical","swim"]},"green_apple":{"unicode":"1f34f","unicode_alternates":"","name":"green apple","shortname":":green_apple:","category":"food","emoji_order":"352","aliases":[],"aliases_ascii":[],"keywords":["fruit","food"]},"apple":{"unicode":"1f34e","unicode_alternates":"","name":"red apple","shortname":":apple:","category":"food","emoji_order":"353","aliases":[],"aliases_ascii":[],"keywords":["fruit","food","creationism","creationism"]},"pear":{"unicode":"1f350","unicode_alternates":"","name":"pear","shortname":":pear:","category":"food","emoji_order":"354","aliases":[],"aliases_ascii":[],"keywords":["fruit","food"]},"tangerine":{"unicode":"1f34a","unicode_alternates":"","name":"tangerine","shortname":":tangerine:","category":"food","emoji_order":"355","aliases":[],"aliases_ascii":[],"keywords":["fruit","food"]},"lemon":{"unicode":"1f34b","unicode_alternates":"","name":"lemon","shortname":":lemon:","category":"food","emoji_order":"356","aliases":[],"aliases_ascii":[],"keywords":["fruit","food"]},"banana":{"unicode":"1f34c","unicode_alternates":"","name":"banana","shortname":":banana:","category":"food","emoji_order":"357","aliases":[],"aliases_ascii":[],"keywords":["fruit","penis","food"]},"watermelon":{"unicode":"1f349","unicode_alternates":"","name":"watermelon","shortname":":watermelon:","category":"food","emoji_order":"358","aliases":[],"aliases_ascii":[],"keywords":["fruit","food"]},"grapes":{"unicode":"1f347","unicode_alternates":"","name":"grapes","shortname":":grapes:","category":"food","emoji_order":"359","aliases":[],"aliases_ascii":[],"keywords":["fruit","food"]},"strawberry":{"unicode":"1f353","unicode_alternates":"","name":"strawberry","shortname":":strawberry:","category":"food","emoji_order":"360","aliases":[],"aliases_ascii":[],"keywords":["fruit","food"]},"melon":{"unicode":"1f348","unicode_alternates":"","name":"melon","shortname":":melon:","category":"food","emoji_order":"361","aliases":[],"aliases_ascii":[],"keywords":["fruit","boobs","food"]},"cherries":{"unicode":"1f352","unicode_alternates":"","name":"cherries","shortname":":cherries:","category":"food","emoji_order":"362","aliases":[],"aliases_ascii":[],"keywords":["fruit","food"]},"peach":{"unicode":"1f351","unicode_alternates":"","name":"peach","shortname":":peach:","category":"food","emoji_order":"363","aliases":[],"aliases_ascii":[],"keywords":["fruit","butt","food"]},"pineapple":{"unicode":"1f34d","unicode_alternates":"","name":"pineapple","shortname":":pineapple:","category":"food","emoji_order":"364","aliases":[],"aliases_ascii":[],"keywords":["fruit","food","tropical"]},"tomato":{"unicode":"1f345","unicode_alternates":"","name":"tomato","shortname":":tomato:","category":"food","emoji_order":"365","aliases":[],"aliases_ascii":[],"keywords":["fruit","vegetables","food"]},"eggplant":{"unicode":"1f346","unicode_alternates":"","name":"aubergine","shortname":":eggplant:","category":"food","emoji_order":"366","aliases":[],"aliases_ascii":[],"keywords":["vegetables","penis","food"]},"hot_pepper":{"unicode":"1f336","unicode_alternates":"1f336-fe0f","name":"hot pepper","shortname":":hot_pepper:","category":"food","emoji_order":"367","aliases":[],"aliases_ascii":[],"keywords":["vegetables","food"]},"corn":{"unicode":"1f33d","unicode_alternates":"","name":"ear of maize","shortname":":corn:","category":"food","emoji_order":"368","aliases":[],"aliases_ascii":[],"keywords":["vegetables","food"]},"sweet_potato":{"unicode":"1f360","unicode_alternates":"","name":"roasted sweet potato","shortname":":sweet_potato:","category":"food","emoji_order":"369","aliases":[],"aliases_ascii":[],"keywords":["vegetables","food"]},"honey_pot":{"unicode":"1f36f","unicode_alternates":"","name":"honey pot","shortname":":honey_pot:","category":"food","emoji_order":"370","aliases":[],"aliases_ascii":[],"keywords":["food","vagina"]},"bread":{"unicode":"1f35e","unicode_alternates":"","name":"bread","shortname":":bread:","category":"food","emoji_order":"371","aliases":[],"aliases_ascii":[],"keywords":["food"]},"cheese":{"unicode":"1f9c0","unicode_alternates":"","name":"cheese wedge","shortname":":cheese:","category":"food","emoji_order":"372","aliases":[":cheese_wedge:"],"aliases_ascii":[],"keywords":["food"]},"poultry_leg":{"unicode":"1f357","unicode_alternates":"","name":"poultry leg","shortname":":poultry_leg:","category":"food","emoji_order":"373","aliases":[],"aliases_ascii":[],"keywords":["food","holidays"]},"meat_on_bone":{"unicode":"1f356","unicode_alternates":"","name":"meat on bone","shortname":":meat_on_bone:","category":"food","emoji_order":"374","aliases":[],"aliases_ascii":[],"keywords":["food"]},"fried_shrimp":{"unicode":"1f364","unicode_alternates":"","name":"fried shrimp","shortname":":fried_shrimp:","category":"food","emoji_order":"375","aliases":[],"aliases_ascii":[],"keywords":["food"]},"egg":{"unicode":"1f373","unicode_alternates":"","name":"cooking","shortname":":egg:","category":"food","emoji_order":"376","aliases":[],"aliases_ascii":[],"keywords":["food"]},"hamburger":{"unicode":"1f354","unicode_alternates":"","name":"hamburger","shortname":":hamburger:","category":"food","emoji_order":"377","aliases":[],"aliases_ascii":[],"keywords":["america","food"]},"fries":{"unicode":"1f35f","unicode_alternates":"","name":"french fries","shortname":":fries:","category":"food","emoji_order":"378","aliases":[],"aliases_ascii":[],"keywords":["america","food"]},"hotdog":{"unicode":"1f32d","unicode_alternates":"","name":"hot dog","shortname":":hotdog:","category":"food","emoji_order":"379","aliases":[":hot_dog:"],"aliases_ascii":[],"keywords":["america","food"]},"pizza":{"unicode":"1f355","unicode_alternates":"","name":"slice of pizza","shortname":":pizza:","category":"food","emoji_order":"380","aliases":[],"aliases_ascii":[],"keywords":["italian","food","boys night","boys night"]},"spaghetti":{"unicode":"1f35d","unicode_alternates":"","name":"spaghetti","shortname":":spaghetti:","category":"food","emoji_order":"381","aliases":[],"aliases_ascii":[],"keywords":["noodles","pasta","italian","food"]},"taco":{"unicode":"1f32e","unicode_alternates":"","name":"taco","shortname":":taco:","category":"food","emoji_order":"382","aliases":[],"aliases_ascii":[],"keywords":["food","mexican","vagina"]},"burrito":{"unicode":"1f32f","unicode_alternates":"","name":"burrito","shortname":":burrito:","category":"food","emoji_order":"383","aliases":[],"aliases_ascii":[],"keywords":["food","mexican"]},"ramen":{"unicode":"1f35c","unicode_alternates":"","name":"steaming bowl","shortname":":ramen:","category":"food","emoji_order":"384","aliases":[],"aliases_ascii":[],"keywords":["noodles","ramen","japan","food"]},"stew":{"unicode":"1f372","unicode_alternates":"","name":"pot of food","shortname":":stew:","category":"food","emoji_order":"385","aliases":[],"aliases_ascii":[],"keywords":["food","steam","steam"]},"fish_cake":{"unicode":"1f365","unicode_alternates":"","name":"fish cake with swirl design","shortname":":fish_cake:","category":"food","emoji_order":"386","aliases":[],"aliases_ascii":[],"keywords":["sushi","food"]},"sushi":{"unicode":"1f363","unicode_alternates":"","name":"sushi","shortname":":sushi:","category":"food","emoji_order":"387","aliases":[],"aliases_ascii":[],"keywords":["sushi","japan","food"]},"bento":{"unicode":"1f371","unicode_alternates":"","name":"bento box","shortname":":bento:","category":"food","emoji_order":"388","aliases":[],"aliases_ascii":[],"keywords":["object","sushi","japan","food"]},"curry":{"unicode":"1f35b","unicode_alternates":"","name":"curry and rice","shortname":":curry:","category":"food","emoji_order":"389","aliases":[],"aliases_ascii":[],"keywords":["food"]},"rice_ball":{"unicode":"1f359","unicode_alternates":"","name":"rice ball","shortname":":rice_ball:","category":"food","emoji_order":"390","aliases":[],"aliases_ascii":[],"keywords":["sushi","japan","food"]},"rice":{"unicode":"1f35a","unicode_alternates":"","name":"cooked rice","shortname":":rice:","category":"food","emoji_order":"391","aliases":[],"aliases_ascii":[],"keywords":["sushi","japan","food"]},"rice_cracker":{"unicode":"1f358","unicode_alternates":"","name":"rice cracker","shortname":":rice_cracker:","category":"food","emoji_order":"392","aliases":[],"aliases_ascii":[],"keywords":["sushi","food"]},"oden":{"unicode":"1f362","unicode_alternates":"","name":"oden","shortname":":oden:","category":"food","emoji_order":"393","aliases":[],"aliases_ascii":[],"keywords":["food"]},"dango":{"unicode":"1f361","unicode_alternates":"","name":"dango","shortname":":dango:","category":"food","emoji_order":"394","aliases":[],"aliases_ascii":[],"keywords":["food"]},"shaved_ice":{"unicode":"1f367","unicode_alternates":"","name":"shaved ice","shortname":":shaved_ice:","category":"food","emoji_order":"395","aliases":[],"aliases_ascii":[],"keywords":["food"]},"ice_cream":{"unicode":"1f368","unicode_alternates":"","name":"ice cream","shortname":":ice_cream:","category":"food","emoji_order":"396","aliases":[],"aliases_ascii":[],"keywords":["food"]},"icecream":{"unicode":"1f366","unicode_alternates":"","name":"soft ice cream","shortname":":icecream:","category":"food","emoji_order":"397","aliases":[],"aliases_ascii":[],"keywords":["food"]},"cake":{"unicode":"1f370","unicode_alternates":"","name":"shortcake","shortname":":cake:","category":"food","emoji_order":"398","aliases":[],"aliases_ascii":[],"keywords":["food"]},"birthday":{"unicode":"1f382","unicode_alternates":"","name":"birthday cake","shortname":":birthday:","category":"food","emoji_order":"399","aliases":[],"aliases_ascii":[],"keywords":["birthday","food","parties","parties"]},"custard":{"unicode":"1f36e","unicode_alternates":"","name":"custard","shortname":":custard:","category":"food","emoji_order":"400","aliases":[":pudding:",":flan:"],"aliases_ascii":[],"keywords":["food"]},"candy":{"unicode":"1f36c","unicode_alternates":"","name":"candy","shortname":":candy:","category":"food","emoji_order":"401","aliases":[],"aliases_ascii":[],"keywords":["food","halloween"]},"lollipop":{"unicode":"1f36d","unicode_alternates":"","name":"lollipop","shortname":":lollipop:","category":"food","emoji_order":"402","aliases":[],"aliases_ascii":[],"keywords":["food","halloween"]},"chocolate_bar":{"unicode":"1f36b","unicode_alternates":"","name":"chocolate bar","shortname":":chocolate_bar:","category":"food","emoji_order":"403","aliases":[],"aliases_ascii":[],"keywords":["food","halloween"]},"popcorn":{"unicode":"1f37f","unicode_alternates":"","name":"popcorn","shortname":":popcorn:","category":"food","emoji_order":"404","aliases":[],"aliases_ascii":[],"keywords":["food","parties","parties"]},"doughnut":{"unicode":"1f369","unicode_alternates":"","name":"doughnut","shortname":":doughnut:","category":"food","emoji_order":"405","aliases":[],"aliases_ascii":[],"keywords":["food"]},"cookie":{"unicode":"1f36a","unicode_alternates":"","name":"cookie","shortname":":cookie:","category":"food","emoji_order":"406","aliases":[],"aliases_ascii":[],"keywords":["food","vagina"]},"beer":{"unicode":"1f37a","unicode_alternates":"","name":"beer mug","shortname":":beer:","category":"food","emoji_order":"407","aliases":[],"aliases_ascii":[],"keywords":["drink","beer","alcohol","parties","parties"]},"beers":{"unicode":"1f37b","unicode_alternates":"","name":"clinking beer mugs","shortname":":beers:","category":"food","emoji_order":"408","aliases":[],"aliases_ascii":[],"keywords":["drink","cheers","beer","alcohol","thank you","boys night","boys night","parties","parties"]},"wine_glass":{"unicode":"1f377","unicode_alternates":"","name":"wine glass","shortname":":wine_glass:","category":"food","emoji_order":"409","aliases":[],"aliases_ascii":[],"keywords":["drink","italian","alcohol","girls night","girls night","parties","parties"]},"cocktail":{"unicode":"1f378","unicode_alternates":"","name":"cocktail glass","shortname":":cocktail:","category":"food","emoji_order":"410","aliases":[],"aliases_ascii":[],"keywords":["drink","cocktail","alcohol","girls night","girls night","parties","parties"]},"tropical_drink":{"unicode":"1f379","unicode_alternates":"","name":"tropical drink","shortname":":tropical_drink:","category":"food","emoji_order":"411","aliases":[],"aliases_ascii":[],"keywords":["drink","cocktail","tropical","alcohol"]},"champagne":{"unicode":"1f37e","unicode_alternates":"","name":"bottle with popping cork","shortname":":champagne:","category":"food","emoji_order":"412","aliases":[":bottle_with_popping_cork:"],"aliases_ascii":[],"keywords":["drink","cheers","alcohol","parties","parties"]},"sake":{"unicode":"1f376","unicode_alternates":"","name":"sake bottle and cup","shortname":":sake:","category":"food","emoji_order":"413","aliases":[],"aliases_ascii":[],"keywords":["drink","japan","sake","alcohol","girls night","girls night"]},"tea":{"unicode":"1f375","unicode_alternates":"","name":"teacup without handle","shortname":":tea:","category":"food","emoji_order":"414","aliases":[],"aliases_ascii":[],"keywords":["drink","japan","caffeine","steam","steam","morning","morning"]},"coffee":{"unicode":"2615","unicode_alternates":"2615-fe0f","name":"hot beverage","shortname":":coffee:","category":"food","emoji_order":"415","aliases":[],"aliases_ascii":[],"keywords":["drink","caffeine","steam","steam","morning","morning"]},"baby_bottle":{"unicode":"1f37c","unicode_alternates":"","name":"baby bottle","shortname":":baby_bottle:","category":"food","emoji_order":"416","aliases":[],"aliases_ascii":[],"keywords":["drink","object","food","baby"]},"fork_and_knife":{"unicode":"1f374","unicode_alternates":"","name":"fork and knife","shortname":":fork_and_knife:","category":"food","emoji_order":"417","aliases":[],"aliases_ascii":[],"keywords":["object","weapon","food"]},"fork_knife_plate":{"unicode":"1f37d","unicode_alternates":"1f37d-fe0f","name":"fork and knife with plate","shortname":":fork_knife_plate:","category":"food","emoji_order":"418","aliases":[":fork_and_knife_with_plate:"],"aliases_ascii":[],"keywords":["object","food"]},"soccer":{"unicode":"26bd","unicode_alternates":"26bd-fe0f","name":"soccer ball","shortname":":soccer:","category":"activity","emoji_order":"419","aliases":[],"aliases_ascii":[],"keywords":["game","ball","sport","soccer","football"]},"basketball":{"unicode":"1f3c0","unicode_alternates":"","name":"basketball and hoop","shortname":":basketball:","category":"activity","emoji_order":"420","aliases":[],"aliases_ascii":[],"keywords":["game","ball","sport","basketball"]},"football":{"unicode":"1f3c8","unicode_alternates":"","name":"american football","shortname":":football:","category":"activity","emoji_order":"421","aliases":[],"aliases_ascii":[],"keywords":["america","game","ball","sport","football"]},"baseball":{"unicode":"26be","unicode_alternates":"26be-fe0f","name":"baseball","shortname":":baseball:","category":"activity","emoji_order":"422","aliases":[],"aliases_ascii":[],"keywords":["game","ball","sport","baseball"]},"tennis":{"unicode":"1f3be","unicode_alternates":"","name":"tennis racquet and ball","shortname":":tennis:","category":"activity","emoji_order":"423","aliases":[],"aliases_ascii":[],"keywords":["game","ball","sport","tennis"]},"volleyball":{"unicode":"1f3d0","unicode_alternates":"","name":"volleyball","shortname":":volleyball:","category":"activity","emoji_order":"424","aliases":[],"aliases_ascii":[],"keywords":["game","ball","sport","volleyball"]},"rugby_football":{"unicode":"1f3c9","unicode_alternates":"","name":"rugby football","shortname":":rugby_football:","category":"activity","emoji_order":"425","aliases":[],"aliases_ascii":[],"keywords":["game","sport","football"]},"8ball":{"unicode":"1f3b1","unicode_alternates":"","name":"billiards","shortname":":8ball:","category":"activity","emoji_order":"426","aliases":[],"aliases_ascii":[],"keywords":["game","ball","sport","billiards","luck","boys night","boys night"]},"golf":{"unicode":"26f3","unicode_alternates":"26f3-fe0f","name":"flag in hole","shortname":":golf:","category":"activity","emoji_order":"427","aliases":[],"aliases_ascii":[],"keywords":["game","ball","vacation","sport","golf","golf"]},"golfer":{"unicode":"1f3cc","unicode_alternates":"1f3cc-fe0f","name":"golfer","shortname":":golfer:","category":"activity","emoji_order":"428","aliases":[],"aliases_ascii":[],"keywords":["men","game","ball","vacation","sport","golf","golf"]},"ping_pong":{"unicode":"1f3d3","unicode_alternates":"","name":"table tennis paddle and ball","shortname":":ping_pong:","category":"activity","emoji_order":"429","aliases":[":table_tennis:"],"aliases_ascii":[],"keywords":["game","ball","sport","ping pong"]},"badminton":{"unicode":"1f3f8","unicode_alternates":"","name":"badminton racquet","shortname":":badminton:","category":"activity","emoji_order":"430","aliases":[],"aliases_ascii":[],"keywords":["game","sport","badminton"]},"hockey":{"unicode":"1f3d2","unicode_alternates":"","name":"ice hockey stick and puck","shortname":":hockey:","category":"activity","emoji_order":"431","aliases":[],"aliases_ascii":[],"keywords":["game","sport","hockey"]},"field_hockey":{"unicode":"1f3d1","unicode_alternates":"","name":"field hockey stick and ball","shortname":":field_hockey:","category":"activity","emoji_order":"432","aliases":[],"aliases_ascii":[],"keywords":["ball","sport","hockey"]},"cricket":{"unicode":"1f3cf","unicode_alternates":"","name":"cricket bat and ball","shortname":":cricket:","category":"activity","emoji_order":"433","aliases":[":cricket_bat_ball:"],"aliases_ascii":[],"keywords":["ball","sport","cricket"]},"ski":{"unicode":"1f3bf","unicode_alternates":"","name":"ski and ski boot","shortname":":ski:","category":"activity","emoji_order":"434","aliases":[],"aliases_ascii":[],"keywords":["cold","sport","skiing"]},"skier":{"unicode":"26f7","unicode_alternates":"26f7-fe0f","name":"skier","shortname":":skier:","category":"activity","emoji_order":"435","aliases":[],"aliases_ascii":[],"keywords":["hat","vacation","cold","sport","skiing"]},"snowboarder":{"unicode":"1f3c2","unicode_alternates":"","name":"snowboarder","shortname":":snowboarder:","category":"activity","emoji_order":"436","aliases":[],"aliases_ascii":[],"keywords":["hat","vacation","cold","sport","snowboarding"]},"ice_skate":{"unicode":"26f8","unicode_alternates":"26f8-fe0f","name":"ice skate","shortname":":ice_skate:","category":"activity","emoji_order":"437","aliases":[],"aliases_ascii":[],"keywords":["cold","sport","ice skating"]},"bow_and_arrow":{"unicode":"1f3f9","unicode_alternates":"","name":"bow and arrow","shortname":":bow_and_arrow:","category":"activity","emoji_order":"438","aliases":[":archery:"],"aliases_ascii":[],"keywords":["weapon","sport"]},"fishing_pole_and_fish":{"unicode":"1f3a3","unicode_alternates":"","name":"fishing pole and fish","shortname":":fishing_pole_and_fish:","category":"activity","emoji_order":"439","aliases":[],"aliases_ascii":[],"keywords":["vacation","sport","fishing"]},"rowboat":{"unicode":"1f6a3","unicode_alternates":"","name":"rowboat","shortname":":rowboat:","category":"activity","emoji_order":"440","aliases":[],"aliases_ascii":[],"keywords":["men","workout","sport","rowing","diversity","diversity"]},"swimmer":{"unicode":"1f3ca","unicode_alternates":"","name":"swimmer","shortname":":swimmer:","category":"activity","emoji_order":"441","aliases":[],"aliases_ascii":[],"keywords":["workout","sport","swim","diversity","diversity"]},"surfer":{"unicode":"1f3c4","unicode_alternates":"","name":"surfer","shortname":":surfer:","category":"activity","emoji_order":"442","aliases":[],"aliases_ascii":[],"keywords":["men","vacation","tropical","sport","diversity","diversity"]},"bath":{"unicode":"1f6c0","unicode_alternates":"","name":"bath","shortname":":bath:","category":"activity","emoji_order":"443","aliases":[],"aliases_ascii":[],"keywords":["bathroom","tired","diversity","diversity","steam","steam"]},"basketball_player":{"unicode":"26f9","unicode_alternates":"26f9-fe0f","name":"person with ball","shortname":":basketball_player:","category":"activity","emoji_order":"444","aliases":[":person_with_ball:"],"aliases_ascii":[],"keywords":["men","game","ball","sport","basketball","diversity","diversity"]},"lifter":{"unicode":"1f3cb","unicode_alternates":"1f3cb-fe0f","name":"weight lifter","shortname":":lifter:","category":"activity","emoji_order":"445","aliases":[":weight_lifter:"],"aliases_ascii":[],"keywords":["men","workout","flex","sport","weight lifting","win","win","diversity","diversity"]},"bicyclist":{"unicode":"1f6b4","unicode_alternates":"","name":"bicyclist","shortname":":bicyclist:","category":"activity","emoji_order":"446","aliases":[],"aliases_ascii":[],"keywords":["men","workout","sport","bike","diversity","diversity"]},"mountain_bicyclist":{"unicode":"1f6b5","unicode_alternates":"","name":"mountain bicyclist","shortname":":mountain_bicyclist:","category":"activity","emoji_order":"447","aliases":[],"aliases_ascii":[],"keywords":["men","sport","bike","diversity","diversity"]},"horse_racing":{"unicode":"1f3c7","unicode_alternates":"","name":"horse racing","shortname":":horse_racing:","category":"activity","emoji_order":"448","aliases":[],"aliases_ascii":[],"keywords":["men","sport","horse racing"]},"levitate":{"unicode":"1f574","unicode_alternates":"1f574-fe0f","name":"man in business suit levitating","shortname":":levitate:","category":"activity","emoji_order":"449","aliases":[":man_in_business_suit_levitating:"],"aliases_ascii":[],"keywords":["men","job","job"]},"trophy":{"unicode":"1f3c6","unicode_alternates":"","name":"trophy","shortname":":trophy:","category":"activity","emoji_order":"450","aliases":[],"aliases_ascii":[],"keywords":["object","game","award","win","win","perfect","perfect","parties","parties"]},"running_shirt_with_sash":{"unicode":"1f3bd","unicode_alternates":"","name":"running shirt with sash","shortname":":running_shirt_with_sash:","category":"activity","emoji_order":"451","aliases":[],"aliases_ascii":[],"keywords":["award"]},"medal":{"unicode":"1f3c5","unicode_alternates":"","name":"sports medal","shortname":":medal:","category":"activity","emoji_order":"452","aliases":[":sports_medal:"],"aliases_ascii":[],"keywords":["object","award","sport","win","win","perfect","perfect"]},"military_medal":{"unicode":"1f396","unicode_alternates":"1f396-fe0f","name":"military medal","shortname":":military_medal:","category":"activity","emoji_order":"453","aliases":[],"aliases_ascii":[],"keywords":["object","award","win","win"]},"reminder_ribbon":{"unicode":"1f397","unicode_alternates":"1f397-fe0f","name":"reminder ribbon","shortname":":reminder_ribbon:","category":"activity","emoji_order":"454","aliases":[],"aliases_ascii":[],"keywords":["award"]},"rosette":{"unicode":"1f3f5","unicode_alternates":"1f3f5-fe0f","name":"rosette","shortname":":rosette:","category":"activity","emoji_order":"455","aliases":[],"aliases_ascii":[],"keywords":["tropical"]},"ticket":{"unicode":"1f3ab","unicode_alternates":"","name":"ticket","shortname":":ticket:","category":"activity","emoji_order":"456","aliases":[],"aliases_ascii":[],"keywords":["theatre","movie","parties","parties"]},"tickets":{"unicode":"1f39f","unicode_alternates":"1f39f-fe0f","name":"admission tickets","shortname":":tickets:","category":"activity","emoji_order":"457","aliases":[":admission_tickets:"],"aliases_ascii":[],"keywords":["theatre","movie","parties","parties"]},"performing_arts":{"unicode":"1f3ad","unicode_alternates":"","name":"performing arts","shortname":":performing_arts:","category":"activity","emoji_order":"458","aliases":[],"aliases_ascii":[],"keywords":["theatre","movie"]},"art":{"unicode":"1f3a8","unicode_alternates":"","name":"artist palette","shortname":":art:","category":"activity","emoji_order":"459","aliases":[],"aliases_ascii":[],"keywords":[]},"circus_tent":{"unicode":"1f3aa","unicode_alternates":"","name":"circus tent","shortname":":circus_tent:","category":"activity","emoji_order":"460","aliases":[],"aliases_ascii":[],"keywords":["circus tent"]},"microphone":{"unicode":"1f3a4","unicode_alternates":"","name":"microphone","shortname":":microphone:","category":"activity","emoji_order":"461","aliases":[],"aliases_ascii":[],"keywords":["instruments"]},"headphones":{"unicode":"1f3a7","unicode_alternates":"","name":"headphone","shortname":":headphones:","category":"activity","emoji_order":"462","aliases":[],"aliases_ascii":[],"keywords":["instruments"]},"musical_score":{"unicode":"1f3bc","unicode_alternates":"","name":"musical score","shortname":":musical_score:","category":"activity","emoji_order":"463","aliases":[],"aliases_ascii":[],"keywords":["instruments"]},"musical_keyboard":{"unicode":"1f3b9","unicode_alternates":"","name":"musical keyboard","shortname":":musical_keyboard:","category":"activity","emoji_order":"464","aliases":[],"aliases_ascii":[],"keywords":["instruments"]},"saxophone":{"unicode":"1f3b7","unicode_alternates":"","name":"saxophone","shortname":":saxophone:","category":"activity","emoji_order":"465","aliases":[],"aliases_ascii":[],"keywords":["instruments"]},"trumpet":{"unicode":"1f3ba","unicode_alternates":"","name":"trumpet","shortname":":trumpet:","category":"activity","emoji_order":"466","aliases":[],"aliases_ascii":[],"keywords":["instruments"]},"guitar":{"unicode":"1f3b8","unicode_alternates":"","name":"guitar","shortname":":guitar:","category":"activity","emoji_order":"467","aliases":[],"aliases_ascii":[],"keywords":["instruments"]},"violin":{"unicode":"1f3bb","unicode_alternates":"","name":"violin","shortname":":violin:","category":"activity","emoji_order":"468","aliases":[],"aliases_ascii":[],"keywords":["instruments","sarcastic","sarcastic"]},"clapper":{"unicode":"1f3ac","unicode_alternates":"","name":"clapper board","shortname":":clapper:","category":"activity","emoji_order":"469","aliases":[],"aliases_ascii":[],"keywords":["movie"]},"video_game":{"unicode":"1f3ae","unicode_alternates":"","name":"video game","shortname":":video_game:","category":"activity","emoji_order":"470","aliases":[],"aliases_ascii":[],"keywords":["electronics","game","boys night","boys night"]},"space_invader":{"unicode":"1f47e","unicode_alternates":"","name":"alien monster","shortname":":space_invader:","category":"activity","emoji_order":"471","aliases":[],"aliases_ascii":[],"keywords":["monster","alien"]},"dart":{"unicode":"1f3af","unicode_alternates":"","name":"direct hit","shortname":":dart:","category":"activity","emoji_order":"472","aliases":[],"aliases_ascii":[],"keywords":["game","sport","boys night","boys night"]},"game_die":{"unicode":"1f3b2","unicode_alternates":"","name":"game die","shortname":":game_die:","category":"activity","emoji_order":"473","aliases":[],"aliases_ascii":[],"keywords":["object","game","boys night","boys night"]},"slot_machine":{"unicode":"1f3b0","unicode_alternates":"","name":"slot machine","shortname":":slot_machine:","category":"activity","emoji_order":"474","aliases":[],"aliases_ascii":[],"keywords":["game","boys night","boys night"]},"bowling":{"unicode":"1f3b3","unicode_alternates":"","name":"bowling","shortname":":bowling:","category":"activity","emoji_order":"475","aliases":[],"aliases_ascii":[],"keywords":["game","ball","sport","boys night","boys night"]},"red_car":{"unicode":"1f697","unicode_alternates":"","name":"automobile","shortname":":red_car:","category":"travel","emoji_order":"476","aliases":[],"aliases_ascii":[],"keywords":["transportation","car","travel"]},"taxi":{"unicode":"1f695","unicode_alternates":"","name":"taxi","shortname":":taxi:","category":"travel","emoji_order":"477","aliases":[],"aliases_ascii":[],"keywords":["transportation","car","travel"]},"blue_car":{"unicode":"1f699","unicode_alternates":"","name":"recreational vehicle","shortname":":blue_car:","category":"travel","emoji_order":"478","aliases":[],"aliases_ascii":[],"keywords":["transportation","car","travel"]},"bus":{"unicode":"1f68c","unicode_alternates":"","name":"bus","shortname":":bus:","category":"travel","emoji_order":"479","aliases":[],"aliases_ascii":[],"keywords":["transportation","bus","office"]},"trolleybus":{"unicode":"1f68e","unicode_alternates":"","name":"trolleybus","shortname":":trolleybus:","category":"travel","emoji_order":"480","aliases":[],"aliases_ascii":[],"keywords":["transportation","bus","travel"]},"race_car":{"unicode":"1f3ce","unicode_alternates":"1f3ce-fe0f","name":"racing car","shortname":":race_car:","category":"travel","emoji_order":"481","aliases":[":racing_car:"],"aliases_ascii":[],"keywords":["transportation","car"]},"police_car":{"unicode":"1f693","unicode_alternates":"","name":"police car","shortname":":police_car:","category":"travel","emoji_order":"482","aliases":[],"aliases_ascii":[],"keywords":["transportation","car","police","police","911","911"]},"ambulance":{"unicode":"1f691","unicode_alternates":"","name":"ambulance","shortname":":ambulance:","category":"travel","emoji_order":"483","aliases":[],"aliases_ascii":[],"keywords":["transportation","911","911"]},"fire_engine":{"unicode":"1f692","unicode_alternates":"","name":"fire engine","shortname":":fire_engine:","category":"travel","emoji_order":"484","aliases":[],"aliases_ascii":[],"keywords":["transportation","truck","911","911"]},"minibus":{"unicode":"1f690","unicode_alternates":"","name":"minibus","shortname":":minibus:","category":"travel","emoji_order":"485","aliases":[],"aliases_ascii":[],"keywords":["transportation","bus"]},"truck":{"unicode":"1f69a","unicode_alternates":"","name":"delivery truck","shortname":":truck:","category":"travel","emoji_order":"486","aliases":[],"aliases_ascii":[],"keywords":["transportation","truck"]},"articulated_lorry":{"unicode":"1f69b","unicode_alternates":"","name":"articulated lorry","shortname":":articulated_lorry:","category":"travel","emoji_order":"487","aliases":[],"aliases_ascii":[],"keywords":["transportation","truck"]},"tractor":{"unicode":"1f69c","unicode_alternates":"","name":"tractor","shortname":":tractor:","category":"travel","emoji_order":"488","aliases":[],"aliases_ascii":[],"keywords":["transportation"]},"motorcycle":{"unicode":"1f3cd","unicode_alternates":"1f3cd-fe0f","name":"racing motorcycle","shortname":":motorcycle:","category":"travel","emoji_order":"489","aliases":[":racing_motorcycle:"],"aliases_ascii":[],"keywords":["transportation","travel","bike"]},"bike":{"unicode":"1f6b2","unicode_alternates":"","name":"bicycle","shortname":":bike:","category":"travel","emoji_order":"490","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","bike"]},"rotating_light":{"unicode":"1f6a8","unicode_alternates":"","name":"police cars revolving light","shortname":":rotating_light:","category":"travel","emoji_order":"491","aliases":[],"aliases_ascii":[],"keywords":["transportation","object","police","police","911","911"]},"oncoming_police_car":{"unicode":"1f694","unicode_alternates":"","name":"oncoming police car","shortname":":oncoming_police_car:","category":"travel","emoji_order":"492","aliases":[],"aliases_ascii":[],"keywords":["transportation","car","police","police","911","911"]},"oncoming_bus":{"unicode":"1f68d","unicode_alternates":"","name":"oncoming bus","shortname":":oncoming_bus:","category":"travel","emoji_order":"493","aliases":[],"aliases_ascii":[],"keywords":["transportation","bus","travel"]},"oncoming_automobile":{"unicode":"1f698","unicode_alternates":"","name":"oncoming automobile","shortname":":oncoming_automobile:","category":"travel","emoji_order":"494","aliases":[],"aliases_ascii":[],"keywords":["transportation","car","travel"]},"oncoming_taxi":{"unicode":"1f696","unicode_alternates":"","name":"oncoming taxi","shortname":":oncoming_taxi:","category":"travel","emoji_order":"495","aliases":[],"aliases_ascii":[],"keywords":["transportation","car","travel"]},"aerial_tramway":{"unicode":"1f6a1","unicode_alternates":"","name":"aerial tramway","shortname":":aerial_tramway:","category":"travel","emoji_order":"496","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"mountain_cableway":{"unicode":"1f6a0","unicode_alternates":"","name":"mountain cableway","shortname":":mountain_cableway:","category":"travel","emoji_order":"497","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"suspension_railway":{"unicode":"1f69f","unicode_alternates":"","name":"suspension railway","shortname":":suspension_railway:","category":"travel","emoji_order":"498","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"railway_car":{"unicode":"1f683","unicode_alternates":"","name":"railway car","shortname":":railway_car:","category":"travel","emoji_order":"499","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"train":{"unicode":"1f68b","unicode_alternates":"","name":"tram car","shortname":":train:","category":"travel","emoji_order":"500","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"monorail":{"unicode":"1f69d","unicode_alternates":"","name":"monorail","shortname":":monorail:","category":"travel","emoji_order":"501","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train","vacation"]},"bullettrain_side":{"unicode":"1f684","unicode_alternates":"","name":"high-speed train","shortname":":bullettrain_side:","category":"travel","emoji_order":"502","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"bullettrain_front":{"unicode":"1f685","unicode_alternates":"","name":"high-speed train with bullet nose","shortname":":bullettrain_front:","category":"travel","emoji_order":"503","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"light_rail":{"unicode":"1f688","unicode_alternates":"","name":"light rail","shortname":":light_rail:","category":"travel","emoji_order":"504","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"mountain_railway":{"unicode":"1f69e","unicode_alternates":"","name":"mountain railway","shortname":":mountain_railway:","category":"travel","emoji_order":"505","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"steam_locomotive":{"unicode":"1f682","unicode_alternates":"","name":"steam locomotive","shortname":":steam_locomotive:","category":"travel","emoji_order":"506","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train","steam","steam"]},"train2":{"unicode":"1f686","unicode_alternates":"","name":"train","shortname":":train2:","category":"travel","emoji_order":"507","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"metro":{"unicode":"1f687","unicode_alternates":"","name":"metro","shortname":":metro:","category":"travel","emoji_order":"508","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"tram":{"unicode":"1f68a","unicode_alternates":"","name":"tram","shortname":":tram:","category":"travel","emoji_order":"509","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"station":{"unicode":"1f689","unicode_alternates":"","name":"station","shortname":":station:","category":"travel","emoji_order":"510","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"helicopter":{"unicode":"1f681","unicode_alternates":"","name":"helicopter","shortname":":helicopter:","category":"travel","emoji_order":"511","aliases":[],"aliases_ascii":[],"keywords":["transportation","plane","travel","fly","fly"]},"airplane_small":{"unicode":"1f6e9","unicode_alternates":"1f6e9-fe0f","name":"small airplane","shortname":":airplane_small:","category":"travel","emoji_order":"512","aliases":[":small_airplane:"],"aliases_ascii":[],"keywords":["transportation","plane","travel","vacation","fly","fly"]},"airplane":{"unicode":"2708","unicode_alternates":"2708-fe0f","name":"airplane","shortname":":airplane:","category":"travel","emoji_order":"513","aliases":[],"aliases_ascii":[],"keywords":["transportation","plane","travel","vacation","fly","fly"]},"airplane_departure":{"unicode":"1f6eb","unicode_alternates":"","name":"airplane departure","shortname":":airplane_departure:","category":"travel","emoji_order":"514","aliases":[],"aliases_ascii":[],"keywords":["transportation","plane","travel","vacation","fly","fly"]},"airplane_arriving":{"unicode":"1f6ec","unicode_alternates":"","name":"airplane arriving","shortname":":airplane_arriving:","category":"travel","emoji_order":"515","aliases":[],"aliases_ascii":[],"keywords":["transportation","plane","travel","vacation","fly","fly"]},"sailboat":{"unicode":"26f5","unicode_alternates":"26f5-fe0f","name":"sailboat","shortname":":sailboat:","category":"travel","emoji_order":"516","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","boat","vacation"]},"motorboat":{"unicode":"1f6e5","unicode_alternates":"1f6e5-fe0f","name":"motorboat","shortname":":motorboat:","category":"travel","emoji_order":"517","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","boat"]},"speedboat":{"unicode":"1f6a4","unicode_alternates":"","name":"speedboat","shortname":":speedboat:","category":"travel","emoji_order":"518","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","boat","vacation","tropical"]},"ferry":{"unicode":"26f4","unicode_alternates":"26f4-fe0f","name":"ferry","shortname":":ferry:","category":"travel","emoji_order":"519","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","boat","vacation"]},"cruise_ship":{"unicode":"1f6f3","unicode_alternates":"1f6f3-fe0f","name":"passenger ship","shortname":":cruise_ship:","category":"travel","emoji_order":"520","aliases":[":passenger_ship:"],"aliases_ascii":[],"keywords":["transportation","travel","boat","vacation"]},"rocket":{"unicode":"1f680","unicode_alternates":"","name":"rocket","shortname":":rocket:","category":"travel","emoji_order":"521","aliases":[],"aliases_ascii":[],"keywords":["transportation","object","space","fly","fly","blast","blast"]},"satellite_orbital":{"unicode":"1f6f0","unicode_alternates":"1f6f0-fe0f","name":"satellite","shortname":":satellite_orbital:","category":"travel","emoji_order":"522","aliases":[],"aliases_ascii":[],"keywords":["object"]},"seat":{"unicode":"1f4ba","unicode_alternates":"","name":"seat","shortname":":seat:","category":"travel","emoji_order":"523","aliases":[],"aliases_ascii":[],"keywords":["transportation","object","travel","vacation"]},"anchor":{"unicode":"2693","unicode_alternates":"2693-fe0f","name":"anchor","shortname":":anchor:","category":"travel","emoji_order":"524","aliases":[],"aliases_ascii":[],"keywords":["object","travel","boat","vacation"]},"construction":{"unicode":"1f6a7","unicode_alternates":"","name":"construction sign","shortname":":construction:","category":"travel","emoji_order":"525","aliases":[],"aliases_ascii":[],"keywords":["object"]},"fuelpump":{"unicode":"26fd","unicode_alternates":"26fd-fe0f","name":"fuel pump","shortname":":fuelpump:","category":"travel","emoji_order":"526","aliases":[],"aliases_ascii":[],"keywords":["object","gas pump"]},"busstop":{"unicode":"1f68f","unicode_alternates":"","name":"bus stop","shortname":":busstop:","category":"travel","emoji_order":"527","aliases":[],"aliases_ascii":[],"keywords":["object"]},"vertical_traffic_light":{"unicode":"1f6a6","unicode_alternates":"","name":"vertical traffic light","shortname":":vertical_traffic_light:","category":"travel","emoji_order":"528","aliases":[],"aliases_ascii":[],"keywords":["object","stop light"]},"traffic_light":{"unicode":"1f6a5","unicode_alternates":"","name":"horizontal traffic light","shortname":":traffic_light:","category":"travel","emoji_order":"529","aliases":[],"aliases_ascii":[],"keywords":["object","stop light"]},"checkered_flag":{"unicode":"1f3c1","unicode_alternates":"","name":"chequered flag","shortname":":checkered_flag:","category":"travel","emoji_order":"530","aliases":[],"aliases_ascii":[],"keywords":["object"]},"ship":{"unicode":"1f6a2","unicode_alternates":"","name":"ship","shortname":":ship:","category":"travel","emoji_order":"531","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","boat","vacation"]},"ferris_wheel":{"unicode":"1f3a1","unicode_alternates":"","name":"ferris wheel","shortname":":ferris_wheel:","category":"travel","emoji_order":"532","aliases":[],"aliases_ascii":[],"keywords":["places","vacation","ferris wheel"]},"roller_coaster":{"unicode":"1f3a2","unicode_alternates":"","name":"roller coaster","shortname":":roller_coaster:","category":"travel","emoji_order":"533","aliases":[],"aliases_ascii":[],"keywords":["places","vacation","roller coaster"]},"carousel_horse":{"unicode":"1f3a0","unicode_alternates":"","name":"carousel horse","shortname":":carousel_horse:","category":"travel","emoji_order":"534","aliases":[],"aliases_ascii":[],"keywords":["places","object","vacation","roller coaster","carousel"]},"construction_site":{"unicode":"1f3d7","unicode_alternates":"1f3d7-fe0f","name":"building construction","shortname":":construction_site:","category":"travel","emoji_order":"535","aliases":[":building_construction:"],"aliases_ascii":[],"keywords":["building","crane"]},"foggy":{"unicode":"1f301","unicode_alternates":"","name":"foggy","shortname":":foggy:","category":"travel","emoji_order":"536","aliases":[],"aliases_ascii":[],"keywords":["places","building","sky","travel","vacation"]},"tokyo_tower":{"unicode":"1f5fc","unicode_alternates":"","name":"tokyo tower","shortname":":tokyo_tower:","category":"travel","emoji_order":"537","aliases":[],"aliases_ascii":[],"keywords":["places","travel","vacation","eiffel tower"]},"factory":{"unicode":"1f3ed","unicode_alternates":"","name":"factory","shortname":":factory:","category":"travel","emoji_order":"538","aliases":[],"aliases_ascii":[],"keywords":["places","building","travel","steam","steam"]},"fountain":{"unicode":"26f2","unicode_alternates":"26f2-fe0f","name":"fountain","shortname":":fountain:","category":"travel","emoji_order":"539","aliases":[],"aliases_ascii":[],"keywords":["travel","vacation"]},"rice_scene":{"unicode":"1f391","unicode_alternates":"","name":"moon viewing ceremony","shortname":":rice_scene:","category":"travel","emoji_order":"540","aliases":[],"aliases_ascii":[],"keywords":["places","space","sky","travel"]},"mountain":{"unicode":"26f0","unicode_alternates":"26f0-fe0f","name":"mountain","shortname":":mountain:","category":"travel","emoji_order":"541","aliases":[],"aliases_ascii":[],"keywords":["places","travel","vacation","camp"]},"mountain_snow":{"unicode":"1f3d4","unicode_alternates":"1f3d4-fe0f","name":"snow capped mountain","shortname":":mountain_snow:","category":"travel","emoji_order":"542","aliases":[":snow_capped_mountain:"],"aliases_ascii":[],"keywords":["places","travel","vacation","cold","camp"]},"mount_fuji":{"unicode":"1f5fb","unicode_alternates":"","name":"mount fuji","shortname":":mount_fuji:","category":"travel","emoji_order":"543","aliases":[],"aliases_ascii":[],"keywords":["places","travel","vacation","cold","camp"]},"volcano":{"unicode":"1f30b","unicode_alternates":"","name":"volcano","shortname":":volcano:","category":"travel","emoji_order":"544","aliases":[],"aliases_ascii":[],"keywords":["places","tropical"]},"japan":{"unicode":"1f5fe","unicode_alternates":"","name":"silhouette of japan","shortname":":japan:","category":"travel","emoji_order":"545","aliases":[],"aliases_ascii":[],"keywords":["places","travel","map","vacation","tropical"]},"camping":{"unicode":"1f3d5","unicode_alternates":"1f3d5-fe0f","name":"camping","shortname":":camping:","category":"travel","emoji_order":"546","aliases":[],"aliases_ascii":[],"keywords":["places","travel","vacation","camp"]},"tent":{"unicode":"26fa","unicode_alternates":"26fa-fe0f","name":"tent","shortname":":tent:","category":"travel","emoji_order":"547","aliases":[],"aliases_ascii":[],"keywords":["places","travel","vacation","camp"]},"park":{"unicode":"1f3de","unicode_alternates":"1f3de-fe0f","name":"national park","shortname":":park:","category":"travel","emoji_order":"548","aliases":[":national_park:"],"aliases_ascii":[],"keywords":["travel","vacation","park","camp"]},"motorway":{"unicode":"1f6e3","unicode_alternates":"1f6e3-fe0f","name":"motorway","shortname":":motorway:","category":"travel","emoji_order":"549","aliases":[],"aliases_ascii":[],"keywords":["travel","vacation","camp"]},"railway_track":{"unicode":"1f6e4","unicode_alternates":"1f6e4-fe0f","name":"railway track","shortname":":railway_track:","category":"travel","emoji_order":"550","aliases":[":railroad_track:"],"aliases_ascii":[],"keywords":["travel","train","vacation"]},"sunrise":{"unicode":"1f305","unicode_alternates":"","name":"sunrise","shortname":":sunrise:","category":"travel","emoji_order":"551","aliases":[],"aliases_ascii":[],"keywords":["places","sky","travel","vacation","tropical","day","sun","hump day","hump day","morning","morning"]},"sunrise_over_mountains":{"unicode":"1f304","unicode_alternates":"","name":"sunrise over mountains","shortname":":sunrise_over_mountains:","category":"travel","emoji_order":"552","aliases":[],"aliases_ascii":[],"keywords":["places","sky","travel","vacation","day","sun","camp","morning","morning"]},"desert":{"unicode":"1f3dc","unicode_alternates":"1f3dc-fe0f","name":"desert","shortname":":desert:","category":"travel","emoji_order":"553","aliases":[],"aliases_ascii":[],"keywords":["places","travel","vacation","hot","hot"]},"beach":{"unicode":"1f3d6","unicode_alternates":"1f3d6-fe0f","name":"beach with umbrella","shortname":":beach:","category":"travel","emoji_order":"554","aliases":[":beach_with_umbrella:"],"aliases_ascii":[],"keywords":["places","travel","vacation","tropical","beach","swim"]},"island":{"unicode":"1f3dd","unicode_alternates":"1f3dd-fe0f","name":"desert island","shortname":":island:","category":"travel","emoji_order":"555","aliases":[":desert_island:"],"aliases_ascii":[],"keywords":["places","travel","vacation","tropical","beach","swim"]},"city_sunset":{"unicode":"1f307","unicode_alternates":"","name":"sunset over buildings","shortname":":city_sunset:","category":"travel","emoji_order":"556","aliases":[":city_sunrise:"],"aliases_ascii":[],"keywords":["places","building","sky","vacation"]},"city_dusk":{"unicode":"1f306","unicode_alternates":"","name":"cityscape at dusk","shortname":":city_dusk:","category":"travel","emoji_order":"557","aliases":[],"aliases_ascii":[],"keywords":["places","building"]},"cityscape":{"unicode":"1f3d9","unicode_alternates":"1f3d9-fe0f","name":"cityscape","shortname":":cityscape:","category":"travel","emoji_order":"558","aliases":[],"aliases_ascii":[],"keywords":["places","building","vacation"]},"night_with_stars":{"unicode":"1f303","unicode_alternates":"","name":"night with stars","shortname":":night_with_stars:","category":"travel","emoji_order":"559","aliases":[],"aliases_ascii":[],"keywords":["places","building","sky","vacation","goodnight","goodnight"]},"bridge_at_night":{"unicode":"1f309","unicode_alternates":"","name":"bridge at night","shortname":":bridge_at_night:","category":"travel","emoji_order":"560","aliases":[],"aliases_ascii":[],"keywords":["places","travel","vacation","goodnight","goodnight"]},"milky_way":{"unicode":"1f30c","unicode_alternates":"","name":"milky way","shortname":":milky_way:","category":"travel","emoji_order":"561","aliases":[],"aliases_ascii":[],"keywords":["places","space","sky","travel","vacation"]},"stars":{"unicode":"1f320","unicode_alternates":"","name":"shooting star","shortname":":stars:","category":"travel","emoji_order":"562","aliases":[],"aliases_ascii":[],"keywords":["space"]},"sparkler":{"unicode":"1f387","unicode_alternates":"","name":"firework sparkler","shortname":":sparkler:","category":"travel","emoji_order":"563","aliases":[],"aliases_ascii":[],"keywords":["parties","parties"]},"fireworks":{"unicode":"1f386","unicode_alternates":"","name":"fireworks","shortname":":fireworks:","category":"travel","emoji_order":"564","aliases":[],"aliases_ascii":[],"keywords":["parties","parties"]},"rainbow":{"unicode":"1f308","unicode_alternates":"","name":"rainbow","shortname":":rainbow:","category":"travel","emoji_order":"565","aliases":[],"aliases_ascii":[],"keywords":["weather","gay","sky","rain"]},"homes":{"unicode":"1f3d8","unicode_alternates":"1f3d8-fe0f","name":"house buildings","shortname":":homes:","category":"travel","emoji_order":"566","aliases":[":house_buildings:"],"aliases_ascii":[],"keywords":["places","building","house"]},"european_castle":{"unicode":"1f3f0","unicode_alternates":"","name":"european castle","shortname":":european_castle:","category":"travel","emoji_order":"567","aliases":[],"aliases_ascii":[],"keywords":["places","building","travel","vacation"]},"japanese_castle":{"unicode":"1f3ef","unicode_alternates":"","name":"japanese castle","shortname":":japanese_castle:","category":"travel","emoji_order":"568","aliases":[],"aliases_ascii":[],"keywords":["places","building","travel","vacation"]},"stadium":{"unicode":"1f3df","unicode_alternates":"1f3df-fe0f","name":"stadium","shortname":":stadium:","category":"travel","emoji_order":"569","aliases":[],"aliases_ascii":[],"keywords":["places","building","travel","vacation","boys night","boys night"]},"statue_of_liberty":{"unicode":"1f5fd","unicode_alternates":"","name":"statue of liberty","shortname":":statue_of_liberty:","category":"travel","emoji_order":"570","aliases":[],"aliases_ascii":[],"keywords":["places","america","travel","vacation","statue of liberty","free speech","free speech"]},"house":{"unicode":"1f3e0","unicode_alternates":"","name":"house building","shortname":":house:","category":"travel","emoji_order":"571","aliases":[],"aliases_ascii":[],"keywords":["places","building","house"]},"house_with_garden":{"unicode":"1f3e1","unicode_alternates":"","name":"house with garden","shortname":":house_with_garden:","category":"travel","emoji_order":"572","aliases":[],"aliases_ascii":[],"keywords":["places","building","house"]},"house_abandoned":{"unicode":"1f3da","unicode_alternates":"1f3da-fe0f","name":"derelict house building","shortname":":house_abandoned:","category":"travel","emoji_order":"573","aliases":[":derelict_house_building:"],"aliases_ascii":[],"keywords":["places","building","house"]},"office":{"unicode":"1f3e2","unicode_alternates":"","name":"office building","shortname":":office:","category":"travel","emoji_order":"574","aliases":[],"aliases_ascii":[],"keywords":["places","building","work"]},"department_store":{"unicode":"1f3ec","unicode_alternates":"","name":"department store","shortname":":department_store:","category":"travel","emoji_order":"575","aliases":[],"aliases_ascii":[],"keywords":["places","building"]},"post_office":{"unicode":"1f3e3","unicode_alternates":"","name":"japanese post office","shortname":":post_office:","category":"travel","emoji_order":"576","aliases":[],"aliases_ascii":[],"keywords":["places","building","post office"]},"european_post_office":{"unicode":"1f3e4","unicode_alternates":"","name":"european post office","shortname":":european_post_office:","category":"travel","emoji_order":"577","aliases":[],"aliases_ascii":[],"keywords":["places","building","post office"]},"hospital":{"unicode":"1f3e5","unicode_alternates":"","name":"hospital","shortname":":hospital:","category":"travel","emoji_order":"578","aliases":[],"aliases_ascii":[],"keywords":["places","building","health","911","911"]},"bank":{"unicode":"1f3e6","unicode_alternates":"","name":"bank","shortname":":bank:","category":"travel","emoji_order":"579","aliases":[],"aliases_ascii":[],"keywords":["places","building"]},"hotel":{"unicode":"1f3e8","unicode_alternates":"","name":"hotel","shortname":":hotel:","category":"travel","emoji_order":"580","aliases":[],"aliases_ascii":[],"keywords":["places","building","vacation"]},"convenience_store":{"unicode":"1f3ea","unicode_alternates":"","name":"convenience store","shortname":":convenience_store:","category":"travel","emoji_order":"581","aliases":[],"aliases_ascii":[],"keywords":["places","building"]},"school":{"unicode":"1f3eb","unicode_alternates":"","name":"school","shortname":":school:","category":"travel","emoji_order":"582","aliases":[],"aliases_ascii":[],"keywords":["places","building"]},"love_hotel":{"unicode":"1f3e9","unicode_alternates":"","name":"love hotel","shortname":":love_hotel:","category":"travel","emoji_order":"583","aliases":[],"aliases_ascii":[],"keywords":["places","building","love"]},"wedding":{"unicode":"1f492","unicode_alternates":"","name":"wedding","shortname":":wedding:","category":"travel","emoji_order":"584","aliases":[],"aliases_ascii":[],"keywords":["places","wedding","building","love","parties","parties"]},"classical_building":{"unicode":"1f3db","unicode_alternates":"1f3db-fe0f","name":"classical building","shortname":":classical_building:","category":"travel","emoji_order":"585","aliases":[],"aliases_ascii":[],"keywords":["places","building","travel","vacation"]},"church":{"unicode":"26ea","unicode_alternates":"26ea-fe0f","name":"church","shortname":":church:","category":"travel","emoji_order":"586","aliases":[],"aliases_ascii":[],"keywords":["places","wedding","religion","building","condolence","condolence"]},"mosque":{"unicode":"1f54c","unicode_alternates":"","name":"mosque","shortname":":mosque:","category":"travel","emoji_order":"587","aliases":[],"aliases_ascii":[],"keywords":["places","religion","building","vacation","condolence","condolence"]},"synagogue":{"unicode":"1f54d","unicode_alternates":"","name":"synagogue","shortname":":synagogue:","category":"travel","emoji_order":"588","aliases":[],"aliases_ascii":[],"keywords":["places","religion","building","travel","vacation","condolence","condolence"]},"kaaba":{"unicode":"1f54b","unicode_alternates":"","name":"kaaba","shortname":":kaaba:","category":"travel","emoji_order":"589","aliases":[],"aliases_ascii":[],"keywords":["places","religion","building","condolence","condolence"]},"shinto_shrine":{"unicode":"26e9","unicode_alternates":"26e9-fe0f","name":"shinto shrine","shortname":":shinto_shrine:","category":"travel","emoji_order":"590","aliases":[],"aliases_ascii":[],"keywords":["places","building","travel","vacation"]},"watch":{"unicode":"231a","unicode_alternates":"231a-fe0f","name":"watch","shortname":":watch:","category":"objects","emoji_order":"591","aliases":[],"aliases_ascii":[],"keywords":["electronics","time"]},"iphone":{"unicode":"1f4f1","unicode_alternates":"","name":"mobile phone","shortname":":iphone:","category":"objects","emoji_order":"592","aliases":[],"aliases_ascii":[],"keywords":["electronics","phone","selfie","selfie"]},"calling":{"unicode":"1f4f2","unicode_alternates":"","name":"mobile phone with rightwards arrow at left","shortname":":calling:","category":"objects","emoji_order":"593","aliases":[],"aliases_ascii":[],"keywords":["electronics","phone","selfie","selfie"]},"computer":{"unicode":"1f4bb","unicode_alternates":"","name":"personal computer","shortname":":computer:","category":"objects","emoji_order":"594","aliases":[],"aliases_ascii":[],"keywords":["electronics","work","office"]},"keyboard":{"unicode":"2328","unicode_alternates":"2328-fe0f","name":"keyboard","shortname":":keyboard:","category":"objects","emoji_order":"595","aliases":[],"aliases_ascii":[],"keywords":["electronics","work","office"]},"desktop":{"unicode":"1f5a5","unicode_alternates":"1f5a5-fe0f","name":"desktop computer","shortname":":desktop:","category":"objects","emoji_order":"596","aliases":[":desktop_computer:"],"aliases_ascii":[],"keywords":["electronics","work"]},"printer":{"unicode":"1f5a8","unicode_alternates":"1f5a8-fe0f","name":"printer","shortname":":printer:","category":"objects","emoji_order":"597","aliases":[],"aliases_ascii":[],"keywords":["electronics","work","office"]},"mouse_three_button":{"unicode":"1f5b1","unicode_alternates":"1f5b1-fe0f","name":"three button mouse","shortname":":mouse_three_button:","category":"objects","emoji_order":"598","aliases":[":three_button_mouse:"],"aliases_ascii":[],"keywords":["electronics","work","game","office"]},"trackball":{"unicode":"1f5b2","unicode_alternates":"1f5b2-fe0f","name":"trackball","shortname":":trackball:","category":"objects","emoji_order":"599","aliases":[],"aliases_ascii":[],"keywords":["electronics","work","game","office"]},"joystick":{"unicode":"1f579","unicode_alternates":"1f579-fe0f","name":"joystick","shortname":":joystick:","category":"objects","emoji_order":"600","aliases":[],"aliases_ascii":[],"keywords":["electronics","game","boys night","boys night"]},"compression":{"unicode":"1f5dc","unicode_alternates":"1f5dc-fe0f","name":"compression","shortname":":compression:","category":"objects","emoji_order":"601","aliases":[],"aliases_ascii":[],"keywords":[]},"minidisc":{"unicode":"1f4bd","unicode_alternates":"","name":"minidisc","shortname":":minidisc:","category":"objects","emoji_order":"602","aliases":[],"aliases_ascii":[],"keywords":["electronics"]},"floppy_disk":{"unicode":"1f4be","unicode_alternates":"","name":"floppy disk","shortname":":floppy_disk:","category":"objects","emoji_order":"603","aliases":[],"aliases_ascii":[],"keywords":["electronics","office"]},"cd":{"unicode":"1f4bf","unicode_alternates":"","name":"optical disc","shortname":":cd:","category":"objects","emoji_order":"604","aliases":[],"aliases_ascii":[],"keywords":["electronics"]},"dvd":{"unicode":"1f4c0","unicode_alternates":"","name":"dvd","shortname":":dvd:","category":"objects","emoji_order":"605","aliases":[],"aliases_ascii":[],"keywords":["electronics"]},"vhs":{"unicode":"1f4fc","unicode_alternates":"","name":"videocassette","shortname":":vhs:","category":"objects","emoji_order":"606","aliases":[],"aliases_ascii":[],"keywords":["electronics"]},"camera":{"unicode":"1f4f7","unicode_alternates":"","name":"camera","shortname":":camera:","category":"objects","emoji_order":"607","aliases":[],"aliases_ascii":[],"keywords":["electronics","camera","selfie","selfie"]},"camera_with_flash":{"unicode":"1f4f8","unicode_alternates":"","name":"camera with flash","shortname":":camera_with_flash:","category":"objects","emoji_order":"608","aliases":[],"aliases_ascii":[],"keywords":["electronics","camera"]},"video_camera":{"unicode":"1f4f9","unicode_alternates":"","name":"video camera","shortname":":video_camera:","category":"objects","emoji_order":"609","aliases":[],"aliases_ascii":[],"keywords":["electronics","camera","movie"]},"movie_camera":{"unicode":"1f3a5","unicode_alternates":"","name":"movie camera","shortname":":movie_camera:","category":"objects","emoji_order":"610","aliases":[],"aliases_ascii":[],"keywords":["object","camera","movie"]},"projector":{"unicode":"1f4fd","unicode_alternates":"1f4fd-fe0f","name":"film projector","shortname":":projector:","category":"objects","emoji_order":"611","aliases":[":film_projector:"],"aliases_ascii":[],"keywords":["object","camera","movie"]},"film_frames":{"unicode":"1f39e","unicode_alternates":"1f39e-fe0f","name":"film frames","shortname":":film_frames:","category":"objects","emoji_order":"612","aliases":[],"aliases_ascii":[],"keywords":["object","camera","movie"]},"telephone_receiver":{"unicode":"1f4de","unicode_alternates":"","name":"telephone receiver","shortname":":telephone_receiver:","category":"objects","emoji_order":"613","aliases":[],"aliases_ascii":[],"keywords":["electronics","phone"]},"telephone":{"unicode":"260e","unicode_alternates":"260e-fe0f","name":"black telephone","shortname":":telephone:","category":"objects","emoji_order":"614","aliases":[],"aliases_ascii":[],"keywords":["electronics","phone"]},"pager":{"unicode":"1f4df","unicode_alternates":"","name":"pager","shortname":":pager:","category":"objects","emoji_order":"615","aliases":[],"aliases_ascii":[],"keywords":["electronics","work"]},"fax":{"unicode":"1f4e0","unicode_alternates":"","name":"fax machine","shortname":":fax:","category":"objects","emoji_order":"616","aliases":[],"aliases_ascii":[],"keywords":["electronics","work","office"]},"tv":{"unicode":"1f4fa","unicode_alternates":"","name":"television","shortname":":tv:","category":"objects","emoji_order":"617","aliases":[],"aliases_ascii":[],"keywords":["electronics"]},"radio":{"unicode":"1f4fb","unicode_alternates":"","name":"radio","shortname":":radio:","category":"objects","emoji_order":"618","aliases":[],"aliases_ascii":[],"keywords":["electronics"]},"microphone2":{"unicode":"1f399","unicode_alternates":"1f399-fe0f","name":"studio microphone","shortname":":microphone2:","category":"objects","emoji_order":"619","aliases":[":studio_microphone:"],"aliases_ascii":[],"keywords":["electronics","object"]},"level_slider":{"unicode":"1f39a","unicode_alternates":"1f39a-fe0f","name":"level slider","shortname":":level_slider:","category":"objects","emoji_order":"620","aliases":[],"aliases_ascii":[],"keywords":[]},"control_knobs":{"unicode":"1f39b","unicode_alternates":"1f39b-fe0f","name":"control knobs","shortname":":control_knobs:","category":"objects","emoji_order":"621","aliases":[],"aliases_ascii":[],"keywords":["time"]},"stopwatch":{"unicode":"23f1","unicode_alternates":"23f1-fe0f","name":"stopwatch","shortname":":stopwatch:","category":"objects","emoji_order":"622","aliases":[],"aliases_ascii":[],"keywords":["electronics","time"]},"timer":{"unicode":"23f2","unicode_alternates":"23f2-fe0f","name":"timer clock","shortname":":timer:","category":"objects","emoji_order":"623","aliases":[":timer_clock:"],"aliases_ascii":[],"keywords":["object","time"]},"alarm_clock":{"unicode":"23f0","unicode_alternates":"","name":"alarm clock","shortname":":alarm_clock:","category":"objects","emoji_order":"624","aliases":[],"aliases_ascii":[],"keywords":["object","time"]},"clock":{"unicode":"1f570","unicode_alternates":"1f570-fe0f","name":"mantlepiece clock","shortname":":clock:","category":"objects","emoji_order":"625","aliases":[":mantlepiece_clock:"],"aliases_ascii":[],"keywords":["object","time"]},"hourglass_flowing_sand":{"unicode":"23f3","unicode_alternates":"","name":"hourglass with flowing sand","shortname":":hourglass_flowing_sand:","category":"objects","emoji_order":"626","aliases":[],"aliases_ascii":[],"keywords":["object","time"]},"hourglass":{"unicode":"231b","unicode_alternates":"231b-fe0f","name":"hourglass","shortname":":hourglass:","category":"objects","emoji_order":"627","aliases":[],"aliases_ascii":[],"keywords":["object","time"]},"satellite":{"unicode":"1f4e1","unicode_alternates":"","name":"satellite antenna","shortname":":satellite:","category":"objects","emoji_order":"628","aliases":[],"aliases_ascii":[],"keywords":["object"]},"battery":{"unicode":"1f50b","unicode_alternates":"","name":"battery","shortname":":battery:","category":"objects","emoji_order":"629","aliases":[],"aliases_ascii":[],"keywords":["object"]},"electric_plug":{"unicode":"1f50c","unicode_alternates":"","name":"electric plug","shortname":":electric_plug:","category":"objects","emoji_order":"630","aliases":[],"aliases_ascii":[],"keywords":["electronics"]},"bulb":{"unicode":"1f4a1","unicode_alternates":"","name":"electric light bulb","shortname":":bulb:","category":"objects","emoji_order":"631","aliases":[],"aliases_ascii":[],"keywords":["object","science"]},"flashlight":{"unicode":"1f526","unicode_alternates":"","name":"electric torch","shortname":":flashlight:","category":"objects","emoji_order":"632","aliases":[],"aliases_ascii":[],"keywords":["electronics","object"]},"candle":{"unicode":"1f56f","unicode_alternates":"1f56f-fe0f","name":"candle","shortname":":candle:","category":"objects","emoji_order":"633","aliases":[],"aliases_ascii":[],"keywords":["object"]},"wastebasket":{"unicode":"1f5d1","unicode_alternates":"1f5d1-fe0f","name":"wastebasket","shortname":":wastebasket:","category":"objects","emoji_order":"634","aliases":[],"aliases_ascii":[],"keywords":["object","work"]},"oil":{"unicode":"1f6e2","unicode_alternates":"1f6e2-fe0f","name":"oil drum","shortname":":oil:","category":"objects","emoji_order":"635","aliases":[":oil_drum:"],"aliases_ascii":[],"keywords":["object"]},"money_with_wings":{"unicode":"1f4b8","unicode_alternates":"","name":"money with wings","shortname":":money_with_wings:","category":"objects","emoji_order":"636","aliases":[],"aliases_ascii":[],"keywords":["money","money","boys night","boys night"]},"dollar":{"unicode":"1f4b5","unicode_alternates":"","name":"banknote with dollar sign","shortname":":dollar:","category":"objects","emoji_order":"637","aliases":[],"aliases_ascii":[],"keywords":["money","money"]},"yen":{"unicode":"1f4b4","unicode_alternates":"","name":"banknote with yen sign","shortname":":yen:","category":"objects","emoji_order":"638","aliases":[],"aliases_ascii":[],"keywords":["money","money"]},"euro":{"unicode":"1f4b6","unicode_alternates":"","name":"banknote with euro sign","shortname":":euro:","category":"objects","emoji_order":"639","aliases":[],"aliases_ascii":[],"keywords":["money","money"]},"pound":{"unicode":"1f4b7","unicode_alternates":"","name":"banknote with pound sign","shortname":":pound:","category":"objects","emoji_order":"640","aliases":[],"aliases_ascii":[],"keywords":["money","money"]},"moneybag":{"unicode":"1f4b0","unicode_alternates":"","name":"money bag","shortname":":moneybag:","category":"objects","emoji_order":"641","aliases":[],"aliases_ascii":[],"keywords":["bag","award","money","money"]},"credit_card":{"unicode":"1f4b3","unicode_alternates":"","name":"credit card","shortname":":credit_card:","category":"objects","emoji_order":"642","aliases":[],"aliases_ascii":[],"keywords":["object","money","money","boys night","boys night"]},"gem":{"unicode":"1f48e","unicode_alternates":"","name":"gem stone","shortname":":gem:","category":"objects","emoji_order":"643","aliases":[],"aliases_ascii":[],"keywords":["object","gem"]},"scales":{"unicode":"2696","unicode_alternates":"2696-fe0f","name":"scales","shortname":":scales:","category":"objects","emoji_order":"644","aliases":[],"aliases_ascii":[],"keywords":["object"]},"wrench":{"unicode":"1f527","unicode_alternates":"","name":"wrench","shortname":":wrench:","category":"objects","emoji_order":"645","aliases":[],"aliases_ascii":[],"keywords":["object","tool"]},"hammer":{"unicode":"1f528","unicode_alternates":"","name":"hammer","shortname":":hammer:","category":"objects","emoji_order":"646","aliases":[],"aliases_ascii":[],"keywords":["object","tool","weapon"]},"hammer_pick":{"unicode":"2692","unicode_alternates":"2692-fe0f","name":"hammer and pick","shortname":":hammer_pick:","category":"objects","emoji_order":"647","aliases":[":hammer_and_pick:"],"aliases_ascii":[],"keywords":["object","tool","weapon"]},"tools":{"unicode":"1f6e0","unicode_alternates":"1f6e0-fe0f","name":"hammer and wrench","shortname":":tools:","category":"objects","emoji_order":"648","aliases":[":hammer_and_wrench:"],"aliases_ascii":[],"keywords":["object","tool"]},"pick":{"unicode":"26cf","unicode_alternates":"26cf-fe0f","name":"pick","shortname":":pick:","category":"objects","emoji_order":"649","aliases":[],"aliases_ascii":[],"keywords":["object","tool","weapon"]},"nut_and_bolt":{"unicode":"1f529","unicode_alternates":"","name":"nut and bolt","shortname":":nut_and_bolt:","category":"objects","emoji_order":"650","aliases":[],"aliases_ascii":[],"keywords":["object","tool","nutcase","nutcase"]},"gear":{"unicode":"2699","unicode_alternates":"2699-fe0f","name":"gear","shortname":":gear:","category":"objects","emoji_order":"651","aliases":[],"aliases_ascii":[],"keywords":["object","tool"]},"chains":{"unicode":"26d3","unicode_alternates":"26d3-fe0f","name":"chains","shortname":":chains:","category":"objects","emoji_order":"652","aliases":[],"aliases_ascii":[],"keywords":["object","tool"]},"gun":{"unicode":"1f52b","unicode_alternates":"","name":"pistol","shortname":":gun:","category":"objects","emoji_order":"653","aliases":[],"aliases_ascii":[],"keywords":["object","weapon","dead","gun","sarcastic","sarcastic"]},"bomb":{"unicode":"1f4a3","unicode_alternates":"","name":"bomb","shortname":":bomb:","category":"objects","emoji_order":"654","aliases":[],"aliases_ascii":[],"keywords":["object","weapon","dead","blast","blast"]},"knife":{"unicode":"1f52a","unicode_alternates":"","name":"hocho","shortname":":knife:","category":"objects","emoji_order":"655","aliases":[],"aliases_ascii":[],"keywords":["object","weapon"]},"dagger":{"unicode":"1f5e1","unicode_alternates":"1f5e1-fe0f","name":"dagger knife","shortname":":dagger:","category":"objects","emoji_order":"656","aliases":[":dagger_knife:"],"aliases_ascii":[],"keywords":["object","weapon"]},"crossed_swords":{"unicode":"2694","unicode_alternates":"2694-fe0f","name":"crossed swords","shortname":":crossed_swords:","category":"objects","emoji_order":"657","aliases":[],"aliases_ascii":[],"keywords":["object","weapon"]},"shield":{"unicode":"1f6e1","unicode_alternates":"1f6e1-fe0f","name":"shield","shortname":":shield:","category":"objects","emoji_order":"658","aliases":[],"aliases_ascii":[],"keywords":["object"]},"smoking":{"unicode":"1f6ac","unicode_alternates":"","name":"smoking symbol","shortname":":smoking:","category":"objects","emoji_order":"659","aliases":[],"aliases_ascii":[],"keywords":["symbol","drugs","drugs","smoking","smoking"]},"skull_crossbones":{"unicode":"2620","unicode_alternates":"2620-fe0f","name":"skull and crossbones","shortname":":skull_crossbones:","category":"objects","emoji_order":"660","aliases":[":skull_and_crossbones:"],"aliases_ascii":[],"keywords":["symbol","dead","skull"]},"coffin":{"unicode":"26b0","unicode_alternates":"26b0-fe0f","name":"coffin","shortname":":coffin:","category":"objects","emoji_order":"661","aliases":[],"aliases_ascii":[],"keywords":["object","dead","rip","rip"]},"urn":{"unicode":"26b1","unicode_alternates":"26b1-fe0f","name":"funeral urn","shortname":":urn:","category":"objects","emoji_order":"662","aliases":[":funeral_urn:"],"aliases_ascii":[],"keywords":["object","dead","rip","rip"]},"amphora":{"unicode":"1f3fa","unicode_alternates":"","name":"amphora","shortname":":amphora:","category":"objects","emoji_order":"663","aliases":[],"aliases_ascii":[],"keywords":["object"]},"crystal_ball":{"unicode":"1f52e","unicode_alternates":"","name":"crystal ball","shortname":":crystal_ball:","category":"objects","emoji_order":"664","aliases":[],"aliases_ascii":[],"keywords":["object","ball"]},"prayer_beads":{"unicode":"1f4ff","unicode_alternates":"","name":"prayer beads","shortname":":prayer_beads:","category":"objects","emoji_order":"665","aliases":[],"aliases_ascii":[],"keywords":["object","rosary"]},"barber":{"unicode":"1f488","unicode_alternates":"","name":"barber pole","shortname":":barber:","category":"objects","emoji_order":"666","aliases":[],"aliases_ascii":[],"keywords":["object"]},"alembic":{"unicode":"2697","unicode_alternates":"2697-fe0f","name":"alembic","shortname":":alembic:","category":"objects","emoji_order":"667","aliases":[],"aliases_ascii":[],"keywords":["object","science"]},"telescope":{"unicode":"1f52d","unicode_alternates":"","name":"telescope","shortname":":telescope:","category":"objects","emoji_order":"668","aliases":[],"aliases_ascii":[],"keywords":["object","space","science"]},"microscope":{"unicode":"1f52c","unicode_alternates":"","name":"microscope","shortname":":microscope:","category":"objects","emoji_order":"669","aliases":[],"aliases_ascii":[],"keywords":["object","science"]},"hole":{"unicode":"1f573","unicode_alternates":"1f573-fe0f","name":"hole","shortname":":hole:","category":"objects","emoji_order":"670","aliases":[],"aliases_ascii":[],"keywords":["object"]},"pill":{"unicode":"1f48a","unicode_alternates":"","name":"pill","shortname":":pill:","category":"objects","emoji_order":"671","aliases":[],"aliases_ascii":[],"keywords":["object","health","drugs","drugs"]},"syringe":{"unicode":"1f489","unicode_alternates":"","name":"syringe","shortname":":syringe:","category":"objects","emoji_order":"672","aliases":[],"aliases_ascii":[],"keywords":["object","weapon","health","drugs","drugs"]},"thermometer":{"unicode":"1f321","unicode_alternates":"1f321-fe0f","name":"thermometer","shortname":":thermometer:","category":"objects","emoji_order":"673","aliases":[],"aliases_ascii":[],"keywords":["object","science","health","hot","hot"]},"label":{"unicode":"1f3f7","unicode_alternates":"1f3f7-fe0f","name":"label","shortname":":label:","category":"objects","emoji_order":"674","aliases":[],"aliases_ascii":[],"keywords":["object"]},"bookmark":{"unicode":"1f516","unicode_alternates":"","name":"bookmark","shortname":":bookmark:","category":"objects","emoji_order":"675","aliases":[],"aliases_ascii":[],"keywords":["object","book"]},"toilet":{"unicode":"1f6bd","unicode_alternates":"","name":"toilet","shortname":":toilet:","category":"objects","emoji_order":"676","aliases":[],"aliases_ascii":[],"keywords":["object","bathroom"]},"shower":{"unicode":"1f6bf","unicode_alternates":"","name":"shower","shortname":":shower:","category":"objects","emoji_order":"677","aliases":[],"aliases_ascii":[],"keywords":["object","bathroom"]},"bathtub":{"unicode":"1f6c1","unicode_alternates":"","name":"bathtub","shortname":":bathtub:","category":"objects","emoji_order":"678","aliases":[],"aliases_ascii":[],"keywords":["object","bathroom","tired","steam","steam"]},"key":{"unicode":"1f511","unicode_alternates":"","name":"key","shortname":":key:","category":"objects","emoji_order":"679","aliases":[],"aliases_ascii":[],"keywords":["object","lock"]},"key2":{"unicode":"1f5dd","unicode_alternates":"1f5dd-fe0f","name":"old key","shortname":":key2:","category":"objects","emoji_order":"680","aliases":[":old_key:"],"aliases_ascii":[],"keywords":["object","lock"]},"couch":{"unicode":"1f6cb","unicode_alternates":"1f6cb-fe0f","name":"couch and lamp","shortname":":couch:","category":"objects","emoji_order":"681","aliases":[":couch_and_lamp:"],"aliases_ascii":[],"keywords":["object"]},"sleeping_accommodation":{"unicode":"1f6cc","unicode_alternates":"","name":"sleeping accommodation","shortname":":sleeping_accommodation:","category":"objects","emoji_order":"682","aliases":[],"aliases_ascii":[],"keywords":["tired"]},"bed":{"unicode":"1f6cf","unicode_alternates":"1f6cf-fe0f","name":"bed","shortname":":bed:","category":"objects","emoji_order":"683","aliases":[],"aliases_ascii":[],"keywords":["object","tired"]},"door":{"unicode":"1f6aa","unicode_alternates":"","name":"door","shortname":":door:","category":"objects","emoji_order":"684","aliases":[],"aliases_ascii":[],"keywords":["object"]},"bellhop":{"unicode":"1f6ce","unicode_alternates":"1f6ce-fe0f","name":"bellhop bell","shortname":":bellhop:","category":"objects","emoji_order":"685","aliases":[":bellhop_bell:"],"aliases_ascii":[],"keywords":["object"]},"frame_photo":{"unicode":"1f5bc","unicode_alternates":"1f5bc-fe0f","name":"frame with picture","shortname":":frame_photo:","category":"objects","emoji_order":"686","aliases":[":frame_with_picture:"],"aliases_ascii":[],"keywords":["travel","vacation"]},"map":{"unicode":"1f5fa","unicode_alternates":"1f5fa-fe0f","name":"world map","shortname":":map:","category":"objects","emoji_order":"687","aliases":[":world_map:"],"aliases_ascii":[],"keywords":["travel","map","vacation"]},"beach_umbrella":{"unicode":"26f1","unicode_alternates":"26f1-fe0f","name":"umbrella on ground","shortname":":beach_umbrella:","category":"objects","emoji_order":"688","aliases":[":umbrella_on_ground:"],"aliases_ascii":[],"keywords":["travel","vacation","tropical"]},"moyai":{"unicode":"1f5ff","unicode_alternates":"","name":"moyai","shortname":":moyai:","category":"objects","emoji_order":"689","aliases":[],"aliases_ascii":[],"keywords":["travel","vacation"]},"shopping_bags":{"unicode":"1f6cd","unicode_alternates":"1f6cd-fe0f","name":"shopping bags","shortname":":shopping_bags:","category":"objects","emoji_order":"690","aliases":[],"aliases_ascii":[],"keywords":["object","birthday","parties","parties"]},"balloon":{"unicode":"1f388","unicode_alternates":"","name":"balloon","shortname":":balloon:","category":"objects","emoji_order":"691","aliases":[],"aliases_ascii":[],"keywords":["object","birthday","good","good","parties","parties"]},"flags":{"unicode":"1f38f","unicode_alternates":"","name":"carp streamer","shortname":":flags:","category":"objects","emoji_order":"692","aliases":[],"aliases_ascii":[],"keywords":["object","japan"]},"ribbon":{"unicode":"1f380","unicode_alternates":"","name":"ribbon","shortname":":ribbon:","category":"objects","emoji_order":"693","aliases":[],"aliases_ascii":[],"keywords":["object","gift","birthday"]},"gift":{"unicode":"1f381","unicode_alternates":"","name":"wrapped present","shortname":":gift:","category":"objects","emoji_order":"694","aliases":[],"aliases_ascii":[],"keywords":["object","gift","birthday","holidays","christmas","parties","parties"]},"confetti_ball":{"unicode":"1f38a","unicode_alternates":"","name":"confetti ball","shortname":":confetti_ball:","category":"objects","emoji_order":"695","aliases":[],"aliases_ascii":[],"keywords":["object","birthday","holidays","cheers","girls night","girls night","boys night","boys night","parties","parties"]},"tada":{"unicode":"1f389","unicode_alternates":"","name":"party popper","shortname":":tada:","category":"objects","emoji_order":"696","aliases":[],"aliases_ascii":[],"keywords":["object","birthday","holidays","cheers","good","good","girls night","girls night","boys night","boys night","parties","parties"]},"dolls":{"unicode":"1f38e","unicode_alternates":"","name":"japanese dolls","shortname":":dolls:","category":"objects","emoji_order":"697","aliases":[],"aliases_ascii":[],"keywords":["people","japan"]},"wind_chime":{"unicode":"1f390","unicode_alternates":"","name":"wind chime","shortname":":wind_chime:","category":"objects","emoji_order":"698","aliases":[],"aliases_ascii":[],"keywords":["object","japan"]},"crossed_flags":{"unicode":"1f38c","unicode_alternates":"","name":"crossed flags","shortname":":crossed_flags:","category":"objects","emoji_order":"699","aliases":[],"aliases_ascii":[],"keywords":["object","japan"]},"izakaya_lantern":{"unicode":"1f3ee","unicode_alternates":"","name":"izakaya lantern","shortname":":izakaya_lantern:","category":"objects","emoji_order":"700","aliases":[],"aliases_ascii":[],"keywords":["object","japan"]},"envelope":{"unicode":"2709","unicode_alternates":"2709-fe0f","name":"envelope","shortname":":envelope:","category":"objects","emoji_order":"701","aliases":[],"aliases_ascii":[],"keywords":["object","office","write"]},"envelope_with_arrow":{"unicode":"1f4e9","unicode_alternates":"","name":"envelope with downwards arrow above","shortname":":envelope_with_arrow:","category":"objects","emoji_order":"702","aliases":[],"aliases_ascii":[],"keywords":["object","office"]},"incoming_envelope":{"unicode":"1f4e8","unicode_alternates":"","name":"incoming envelope","shortname":":incoming_envelope:","category":"objects","emoji_order":"703","aliases":[],"aliases_ascii":[],"keywords":["object"]},"e-mail":{"unicode":"1f4e7","unicode_alternates":"","name":"e-mail symbol","shortname":":e-mail:","category":"objects","emoji_order":"704","aliases":[":email:"],"aliases_ascii":[],"keywords":["office"]},"love_letter":{"unicode":"1f48c","unicode_alternates":"","name":"love letter","shortname":":love_letter:","category":"objects","emoji_order":"705","aliases":[],"aliases_ascii":[],"keywords":["object"]},"postbox":{"unicode":"1f4ee","unicode_alternates":"","name":"postbox","shortname":":postbox:","category":"objects","emoji_order":"706","aliases":[],"aliases_ascii":[],"keywords":["object"]},"mailbox_closed":{"unicode":"1f4ea","unicode_alternates":"","name":"closed mailbox with lowered flag","shortname":":mailbox_closed:","category":"objects","emoji_order":"707","aliases":[],"aliases_ascii":[],"keywords":["object","office"]},"mailbox":{"unicode":"1f4eb","unicode_alternates":"","name":"closed mailbox with raised flag","shortname":":mailbox:","category":"objects","emoji_order":"708","aliases":[],"aliases_ascii":[],"keywords":["object"]},"mailbox_with_mail":{"unicode":"1f4ec","unicode_alternates":"","name":"open mailbox with raised flag","shortname":":mailbox_with_mail:","category":"objects","emoji_order":"709","aliases":[],"aliases_ascii":[],"keywords":["object"]},"mailbox_with_no_mail":{"unicode":"1f4ed","unicode_alternates":"","name":"open mailbox with lowered flag","shortname":":mailbox_with_no_mail:","category":"objects","emoji_order":"710","aliases":[],"aliases_ascii":[],"keywords":["object"]},"package":{"unicode":"1f4e6","unicode_alternates":"","name":"package","shortname":":package:","category":"objects","emoji_order":"711","aliases":[],"aliases_ascii":[],"keywords":["object","gift","office"]},"postal_horn":{"unicode":"1f4ef","unicode_alternates":"","name":"postal horn","shortname":":postal_horn:","category":"objects","emoji_order":"712","aliases":[],"aliases_ascii":[],"keywords":["object"]},"inbox_tray":{"unicode":"1f4e5","unicode_alternates":"","name":"inbox tray","shortname":":inbox_tray:","category":"objects","emoji_order":"713","aliases":[],"aliases_ascii":[],"keywords":["work","office"]},"outbox_tray":{"unicode":"1f4e4","unicode_alternates":"","name":"outbox tray","shortname":":outbox_tray:","category":"objects","emoji_order":"714","aliases":[],"aliases_ascii":[],"keywords":["work","office"]},"scroll":{"unicode":"1f4dc","unicode_alternates":"","name":"scroll","shortname":":scroll:","category":"objects","emoji_order":"715","aliases":[],"aliases_ascii":[],"keywords":["object","office"]},"page_with_curl":{"unicode":"1f4c3","unicode_alternates":"","name":"page with curl","shortname":":page_with_curl:","category":"objects","emoji_order":"716","aliases":[],"aliases_ascii":[],"keywords":["office","write"]},"bookmark_tabs":{"unicode":"1f4d1","unicode_alternates":"","name":"bookmark tabs","shortname":":bookmark_tabs:","category":"objects","emoji_order":"717","aliases":[],"aliases_ascii":[],"keywords":["office","write"]},"bar_chart":{"unicode":"1f4ca","unicode_alternates":"","name":"bar chart","shortname":":bar_chart:","category":"objects","emoji_order":"718","aliases":[],"aliases_ascii":[],"keywords":["work","office"]},"chart_with_upwards_trend":{"unicode":"1f4c8","unicode_alternates":"","name":"chart with upwards trend","shortname":":chart_with_upwards_trend:","category":"objects","emoji_order":"719","aliases":[],"aliases_ascii":[],"keywords":["work","office"]},"chart_with_downwards_trend":{"unicode":"1f4c9","unicode_alternates":"","name":"chart with downwards trend","shortname":":chart_with_downwards_trend:","category":"objects","emoji_order":"720","aliases":[],"aliases_ascii":[],"keywords":["work","office"]},"page_facing_up":{"unicode":"1f4c4","unicode_alternates":"","name":"page facing up","shortname":":page_facing_up:","category":"objects","emoji_order":"721","aliases":[],"aliases_ascii":[],"keywords":["work","office","write"]},"date":{"unicode":"1f4c5","unicode_alternates":"","name":"calendar","shortname":":date:","category":"objects","emoji_order":"722","aliases":[],"aliases_ascii":[],"keywords":["object","office"]},"calendar":{"unicode":"1f4c6","unicode_alternates":"","name":"tear-off calendar","shortname":":calendar:","category":"objects","emoji_order":"723","aliases":[],"aliases_ascii":[],"keywords":["object","office"]},"calendar_spiral":{"unicode":"1f5d3","unicode_alternates":"1f5d3-fe0f","name":"spiral calendar pad","shortname":":calendar_spiral:","category":"objects","emoji_order":"724","aliases":[":spiral_calendar_pad:"],"aliases_ascii":[],"keywords":["object","office"]},"card_index":{"unicode":"1f4c7","unicode_alternates":"","name":"card index","shortname":":card_index:","category":"objects","emoji_order":"725","aliases":[],"aliases_ascii":[],"keywords":["object","work","office"]},"card_box":{"unicode":"1f5c3","unicode_alternates":"1f5c3-fe0f","name":"card file box","shortname":":card_box:","category":"objects","emoji_order":"726","aliases":[":card_file_box:"],"aliases_ascii":[],"keywords":["object","work","office"]},"ballot_box":{"unicode":"1f5f3","unicode_alternates":"1f5f3-fe0f","name":"ballot box with ballot","shortname":":ballot_box:","category":"objects","emoji_order":"727","aliases":[":ballot_box_with_ballot:"],"aliases_ascii":[],"keywords":["object","office"]},"file_cabinet":{"unicode":"1f5c4","unicode_alternates":"1f5c4-fe0f","name":"file cabinet","shortname":":file_cabinet:","category":"objects","emoji_order":"728","aliases":[],"aliases_ascii":[],"keywords":["object","work","office"]},"clipboard":{"unicode":"1f4cb","unicode_alternates":"","name":"clipboard","shortname":":clipboard:","category":"objects","emoji_order":"729","aliases":[],"aliases_ascii":[],"keywords":["object","work","office","write"]},"notepad_spiral":{"unicode":"1f5d2","unicode_alternates":"1f5d2-fe0f","name":"spiral note pad","shortname":":notepad_spiral:","category":"objects","emoji_order":"730","aliases":[":spiral_note_pad:"],"aliases_ascii":[],"keywords":["work","office","write"]},"file_folder":{"unicode":"1f4c1","unicode_alternates":"","name":"file folder","shortname":":file_folder:","category":"objects","emoji_order":"731","aliases":[],"aliases_ascii":[],"keywords":["work","office"]},"open_file_folder":{"unicode":"1f4c2","unicode_alternates":"","name":"open file folder","shortname":":open_file_folder:","category":"objects","emoji_order":"732","aliases":[],"aliases_ascii":[],"keywords":["work","office"]},"dividers":{"unicode":"1f5c2","unicode_alternates":"1f5c2-fe0f","name":"card index dividers","shortname":":dividers:","category":"objects","emoji_order":"733","aliases":[":card_index_dividers:"],"aliases_ascii":[],"keywords":["work","office"]},"newspaper2":{"unicode":"1f5de","unicode_alternates":"1f5de-fe0f","name":"rolled-up newspaper","shortname":":newspaper2:","category":"objects","emoji_order":"734","aliases":[":rolled_up_newspaper:"],"aliases_ascii":[],"keywords":["office","write"]},"newspaper":{"unicode":"1f4f0","unicode_alternates":"","name":"newspaper","shortname":":newspaper:","category":"objects","emoji_order":"735","aliases":[],"aliases_ascii":[],"keywords":["office","write"]},"notebook":{"unicode":"1f4d3","unicode_alternates":"","name":"notebook","shortname":":notebook:","category":"objects","emoji_order":"736","aliases":[],"aliases_ascii":[],"keywords":["object","office","write"]},"closed_book":{"unicode":"1f4d5","unicode_alternates":"","name":"closed book","shortname":":closed_book:","category":"objects","emoji_order":"737","aliases":[],"aliases_ascii":[],"keywords":["object","office","write","book"]},"green_book":{"unicode":"1f4d7","unicode_alternates":"","name":"green book","shortname":":green_book:","category":"objects","emoji_order":"738","aliases":[],"aliases_ascii":[],"keywords":["object","office","book"]},"blue_book":{"unicode":"1f4d8","unicode_alternates":"","name":"blue book","shortname":":blue_book:","category":"objects","emoji_order":"739","aliases":[],"aliases_ascii":[],"keywords":["object","office","write","book"]},"orange_book":{"unicode":"1f4d9","unicode_alternates":"","name":"orange book","shortname":":orange_book:","category":"objects","emoji_order":"740","aliases":[],"aliases_ascii":[],"keywords":["object","office","write","book"]},"notebook_with_decorative_cover":{"unicode":"1f4d4","unicode_alternates":"","name":"notebook with decorative cover","shortname":":notebook_with_decorative_cover:","category":"objects","emoji_order":"741","aliases":[],"aliases_ascii":[],"keywords":["object","office","write"]},"ledger":{"unicode":"1f4d2","unicode_alternates":"","name":"ledger","shortname":":ledger:","category":"objects","emoji_order":"742","aliases":[],"aliases_ascii":[],"keywords":["object","office","write"]},"books":{"unicode":"1f4da","unicode_alternates":"","name":"books","shortname":":books:","category":"objects","emoji_order":"743","aliases":[],"aliases_ascii":[],"keywords":["object","office","write","book"]},"book":{"unicode":"1f4d6","unicode_alternates":"","name":"open book","shortname":":book:","category":"objects","emoji_order":"744","aliases":[],"aliases_ascii":[],"keywords":["object","office","write","book"]},"link":{"unicode":"1f517","unicode_alternates":"","name":"link symbol","shortname":":link:","category":"objects","emoji_order":"745","aliases":[],"aliases_ascii":[],"keywords":["symbol","office"]},"paperclip":{"unicode":"1f4ce","unicode_alternates":"","name":"paperclip","shortname":":paperclip:","category":"objects","emoji_order":"746","aliases":[],"aliases_ascii":[],"keywords":["object","work","office"]},"paperclips":{"unicode":"1f587","unicode_alternates":"1f587-fe0f","name":"linked paperclips","shortname":":paperclips:","category":"objects","emoji_order":"747","aliases":[":linked_paperclips:"],"aliases_ascii":[],"keywords":["object","work","office"]},"scissors":{"unicode":"2702","unicode_alternates":"2702-fe0f","name":"black scissors","shortname":":scissors:","category":"objects","emoji_order":"748","aliases":[],"aliases_ascii":[],"keywords":["object","tool","weapon","office"]},"triangular_ruler":{"unicode":"1f4d0","unicode_alternates":"","name":"triangular ruler","shortname":":triangular_ruler:","category":"objects","emoji_order":"749","aliases":[],"aliases_ascii":[],"keywords":["object","tool","office"]},"straight_ruler":{"unicode":"1f4cf","unicode_alternates":"","name":"straight ruler","shortname":":straight_ruler:","category":"objects","emoji_order":"750","aliases":[],"aliases_ascii":[],"keywords":["object","tool","office"]},"pushpin":{"unicode":"1f4cc","unicode_alternates":"","name":"pushpin","shortname":":pushpin:","category":"objects","emoji_order":"751","aliases":[],"aliases_ascii":[],"keywords":["object","office"]},"round_pushpin":{"unicode":"1f4cd","unicode_alternates":"","name":"round pushpin","shortname":":round_pushpin:","category":"objects","emoji_order":"752","aliases":[],"aliases_ascii":[],"keywords":["object","office"]},"triangular_flag_on_post":{"unicode":"1f6a9","unicode_alternates":"","name":"triangular flag on post","shortname":":triangular_flag_on_post:","category":"objects","emoji_order":"753","aliases":[],"aliases_ascii":[],"keywords":["object"]},"flag_white":{"unicode":"1f3f3","unicode_alternates":"1f3f3-fe0f","name":"waving white flag","shortname":":flag_white:","category":"objects","emoji_order":"754","aliases":[":waving_white_flag:"],"aliases_ascii":[],"keywords":["object"]},"flag_black":{"unicode":"1f3f4","unicode_alternates":"","name":"waving black flag","shortname":":flag_black:","category":"objects","emoji_order":"755","aliases":[":waving_black_flag:"],"aliases_ascii":[],"keywords":["object"]},"closed_lock_with_key":{"unicode":"1f510","unicode_alternates":"","name":"closed lock with key","shortname":":closed_lock_with_key:","category":"objects","emoji_order":"756","aliases":[],"aliases_ascii":[],"keywords":["object","lock"]},"lock":{"unicode":"1f512","unicode_alternates":"","name":"lock","shortname":":lock:","category":"objects","emoji_order":"757","aliases":[],"aliases_ascii":[],"keywords":["object","lock"]},"unlock":{"unicode":"1f513","unicode_alternates":"","name":"open lock","shortname":":unlock:","category":"objects","emoji_order":"758","aliases":[],"aliases_ascii":[],"keywords":["object","lock"]},"lock_with_ink_pen":{"unicode":"1f50f","unicode_alternates":"","name":"lock with ink pen","shortname":":lock_with_ink_pen:","category":"objects","emoji_order":"759","aliases":[],"aliases_ascii":[],"keywords":["object","lock"]},"pen_ballpoint":{"unicode":"1f58a","unicode_alternates":"1f58a-fe0f","name":"lower left ballpoint pen","shortname":":pen_ballpoint:","category":"objects","emoji_order":"760","aliases":[":lower_left_ballpoint_pen:"],"aliases_ascii":[],"keywords":["object","office","write"]},"pen_fountain":{"unicode":"1f58b","unicode_alternates":"1f58b-fe0f","name":"lower left fountain pen","shortname":":pen_fountain:","category":"objects","emoji_order":"761","aliases":[":lower_left_fountain_pen:"],"aliases_ascii":[],"keywords":["object","office","write"]},"black_nib":{"unicode":"2712","unicode_alternates":"2712-fe0f","name":"black nib","shortname":":black_nib:","category":"objects","emoji_order":"762","aliases":[],"aliases_ascii":[],"keywords":["object","office","write"]},"pencil":{"unicode":"1f4dd","unicode_alternates":"","name":"memo","shortname":":pencil:","category":"objects","emoji_order":"763","aliases":[],"aliases_ascii":[],"keywords":["work","office","write"]},"pencil2":{"unicode":"270f","unicode_alternates":"270f-fe0f","name":"pencil","shortname":":pencil2:","category":"objects","emoji_order":"764","aliases":[],"aliases_ascii":[],"keywords":["object","office","write"]},"crayon":{"unicode":"1f58d","unicode_alternates":"1f58d-fe0f","name":"lower left crayon","shortname":":crayon:","category":"objects","emoji_order":"765","aliases":[":lower_left_crayon:"],"aliases_ascii":[],"keywords":["object","office","write"]},"paintbrush":{"unicode":"1f58c","unicode_alternates":"1f58c-fe0f","name":"lower left paintbrush","shortname":":paintbrush:","category":"objects","emoji_order":"766","aliases":[":lower_left_paintbrush:"],"aliases_ascii":[],"keywords":["object","office","write"]},"mag":{"unicode":"1f50d","unicode_alternates":"","name":"left-pointing magnifying glass","shortname":":mag:","category":"objects","emoji_order":"767","aliases":[],"aliases_ascii":[],"keywords":["object"]},"mag_right":{"unicode":"1f50e","unicode_alternates":"","name":"right-pointing magnifying glass","shortname":":mag_right:","category":"objects","emoji_order":"768","aliases":[],"aliases_ascii":[],"keywords":["object"]},"heart":{"unicode":"2764","unicode_alternates":"2764-fe0f","name":"heavy black heart","shortname":":heart:","category":"symbols","emoji_order":"769","aliases":[],"aliases_ascii":["<3"],"keywords":["love","symbol","parties","parties"]},"yellow_heart":{"unicode":"1f49b","unicode_alternates":"","name":"yellow heart","shortname":":yellow_heart:","category":"symbols","emoji_order":"770","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"green_heart":{"unicode":"1f49a","unicode_alternates":"","name":"green heart","shortname":":green_heart:","category":"symbols","emoji_order":"771","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"blue_heart":{"unicode":"1f499","unicode_alternates":"","name":"blue heart","shortname":":blue_heart:","category":"symbols","emoji_order":"772","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"purple_heart":{"unicode":"1f49c","unicode_alternates":"","name":"purple heart","shortname":":purple_heart:","category":"symbols","emoji_order":"773","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"broken_heart":{"unicode":"1f494","unicode_alternates":"","name":"broken heart","shortname":":broken_heart:","category":"symbols","emoji_order":"774","aliases":[],"aliases_ascii":["<\/3"],"keywords":["love","symbol","heartbreak","heartbreak"]},"heart_exclamation":{"unicode":"2763","unicode_alternates":"2763-fe0f","name":"heavy heart exclamation mark ornament","shortname":":heart_exclamation:","category":"symbols","emoji_order":"775","aliases":[":heavy_heart_exclamation_mark_ornament:"],"aliases_ascii":[],"keywords":["love","symbol"]},"two_hearts":{"unicode":"1f495","unicode_alternates":"","name":"two hearts","shortname":":two_hearts:","category":"symbols","emoji_order":"776","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"revolving_hearts":{"unicode":"1f49e","unicode_alternates":"","name":"revolving hearts","shortname":":revolving_hearts:","category":"symbols","emoji_order":"777","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"heartbeat":{"unicode":"1f493","unicode_alternates":"","name":"beating heart","shortname":":heartbeat:","category":"symbols","emoji_order":"778","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"heartpulse":{"unicode":"1f497","unicode_alternates":"","name":"growing heart","shortname":":heartpulse:","category":"symbols","emoji_order":"779","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"sparkling_heart":{"unicode":"1f496","unicode_alternates":"","name":"sparkling heart","shortname":":sparkling_heart:","category":"symbols","emoji_order":"780","aliases":[],"aliases_ascii":[],"keywords":["love","symbol","girls night","girls night"]},"cupid":{"unicode":"1f498","unicode_alternates":"","name":"heart with arrow","shortname":":cupid:","category":"symbols","emoji_order":"781","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"gift_heart":{"unicode":"1f49d","unicode_alternates":"","name":"heart with ribbon","shortname":":gift_heart:","category":"symbols","emoji_order":"782","aliases":[],"aliases_ascii":[],"keywords":["love","symbol","condolence","condolence"]},"heart_decoration":{"unicode":"1f49f","unicode_alternates":"","name":"heart decoration","shortname":":heart_decoration:","category":"symbols","emoji_order":"783","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"peace":{"unicode":"262e","unicode_alternates":"262e-fe0f","name":"peace symbol","shortname":":peace:","category":"symbols","emoji_order":"784","aliases":[":peace_symbol:"],"aliases_ascii":[],"keywords":["symbol","peace","peace","drugs","drugs"]},"cross":{"unicode":"271d","unicode_alternates":"271d-fe0f","name":"latin cross","shortname":":cross:","category":"symbols","emoji_order":"785","aliases":[":latin_cross:"],"aliases_ascii":[],"keywords":["religion","symbol"]},"star_and_crescent":{"unicode":"262a","unicode_alternates":"262a-fe0f","name":"star and crescent","shortname":":star_and_crescent:","category":"symbols","emoji_order":"786","aliases":[],"aliases_ascii":[],"keywords":["religion","symbol"]},"om_symbol":{"unicode":"1f549","unicode_alternates":"1f549-fe0f","name":"om symbol","shortname":":om_symbol:","category":"symbols","emoji_order":"787","aliases":[],"aliases_ascii":[],"keywords":["religion","symbol"]},"wheel_of_dharma":{"unicode":"2638","unicode_alternates":"2638-fe0f","name":"wheel of dharma","shortname":":wheel_of_dharma:","category":"symbols","emoji_order":"788","aliases":[],"aliases_ascii":[],"keywords":["religion","symbol"]},"star_of_david":{"unicode":"2721","unicode_alternates":"2721-fe0f","name":"star of david","shortname":":star_of_david:","category":"symbols","emoji_order":"789","aliases":[],"aliases_ascii":[],"keywords":["religion","jew","star","symbol"]},"six_pointed_star":{"unicode":"1f52f","unicode_alternates":"","name":"six pointed star with middle dot","shortname":":six_pointed_star:","category":"symbols","emoji_order":"790","aliases":[],"aliases_ascii":[],"keywords":["religion","jew","star","symbol"]},"menorah":{"unicode":"1f54e","unicode_alternates":"","name":"menorah with nine branches","shortname":":menorah:","category":"symbols","emoji_order":"791","aliases":[],"aliases_ascii":[],"keywords":["religion","object","jew","symbol","holidays"]},"yin_yang":{"unicode":"262f","unicode_alternates":"262f-fe0f","name":"yin yang","shortname":":yin_yang:","category":"symbols","emoji_order":"792","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"orthodox_cross":{"unicode":"2626","unicode_alternates":"2626-fe0f","name":"orthodox cross","shortname":":orthodox_cross:","category":"symbols","emoji_order":"793","aliases":[],"aliases_ascii":[],"keywords":["religion","symbol"]},"place_of_worship":{"unicode":"1f6d0","unicode_alternates":"","name":"place of worship","shortname":":place_of_worship:","category":"symbols","emoji_order":"794","aliases":[":worship_symbol:"],"aliases_ascii":[],"keywords":["religion","symbol","pray","pray"]},"ophiuchus":{"unicode":"26ce","unicode_alternates":"","name":"ophiuchus","shortname":":ophiuchus:","category":"symbols","emoji_order":"795","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"aries":{"unicode":"2648","unicode_alternates":"2648-fe0f","name":"aries","shortname":":aries:","category":"symbols","emoji_order":"796","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"taurus":{"unicode":"2649","unicode_alternates":"2649-fe0f","name":"taurus","shortname":":taurus:","category":"symbols","emoji_order":"797","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"gemini":{"unicode":"264a","unicode_alternates":"264a-fe0f","name":"gemini","shortname":":gemini:","category":"symbols","emoji_order":"798","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"cancer":{"unicode":"264b","unicode_alternates":"264b-fe0f","name":"cancer","shortname":":cancer:","category":"symbols","emoji_order":"799","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"leo":{"unicode":"264c","unicode_alternates":"264c-fe0f","name":"leo","shortname":":leo:","category":"symbols","emoji_order":"800","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"virgo":{"unicode":"264d","unicode_alternates":"264d-fe0f","name":"virgo","shortname":":virgo:","category":"symbols","emoji_order":"801","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"libra":{"unicode":"264e","unicode_alternates":"264e-fe0f","name":"libra","shortname":":libra:","category":"symbols","emoji_order":"802","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"scorpius":{"unicode":"264f","unicode_alternates":"264f-fe0f","name":"scorpius","shortname":":scorpius:","category":"symbols","emoji_order":"803","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"sagittarius":{"unicode":"2650","unicode_alternates":"2650-fe0f","name":"sagittarius","shortname":":sagittarius:","category":"symbols","emoji_order":"804","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"capricorn":{"unicode":"2651","unicode_alternates":"2651-fe0f","name":"capricorn","shortname":":capricorn:","category":"symbols","emoji_order":"805","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"aquarius":{"unicode":"2652","unicode_alternates":"2652-fe0f","name":"aquarius","shortname":":aquarius:","category":"symbols","emoji_order":"806","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"pisces":{"unicode":"2653","unicode_alternates":"2653-fe0f","name":"pisces","shortname":":pisces:","category":"symbols","emoji_order":"807","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"id":{"unicode":"1f194","unicode_alternates":"","name":"squared id","shortname":":id:","category":"symbols","emoji_order":"808","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"atom":{"unicode":"269b","unicode_alternates":"269b-fe0f","name":"atom symbol","shortname":":atom:","category":"symbols","emoji_order":"809","aliases":[":atom_symbol:"],"aliases_ascii":[],"keywords":["symbol","science"]},"u7a7a":{"unicode":"1f233","unicode_alternates":"","name":"squared cjk unified ideograph-7a7a","shortname":":u7a7a:","category":"symbols","emoji_order":"810","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"u5272":{"unicode":"1f239","unicode_alternates":"","name":"squared cjk unified ideograph-5272","shortname":":u5272:","category":"symbols","emoji_order":"811","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"radioactive":{"unicode":"2622","unicode_alternates":"2622-fe0f","name":"radioactive sign","shortname":":radioactive:","category":"symbols","emoji_order":"812","aliases":[":radioactive_sign:"],"aliases_ascii":[],"keywords":["symbol","science"]},"biohazard":{"unicode":"2623","unicode_alternates":"2623-fe0f","name":"biohazard sign","shortname":":biohazard:","category":"symbols","emoji_order":"813","aliases":[":biohazard_sign:"],"aliases_ascii":[],"keywords":["symbol","science"]},"mobile_phone_off":{"unicode":"1f4f4","unicode_alternates":"","name":"mobile phone off","shortname":":mobile_phone_off:","category":"symbols","emoji_order":"814","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"vibration_mode":{"unicode":"1f4f3","unicode_alternates":"","name":"vibration mode","shortname":":vibration_mode:","category":"symbols","emoji_order":"815","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"u6709":{"unicode":"1f236","unicode_alternates":"","name":"squared cjk unified ideograph-6709","shortname":":u6709:","category":"symbols","emoji_order":"816","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"u7121":{"unicode":"1f21a","unicode_alternates":"1f21a-fe0f","name":"squared cjk unified ideograph-7121","shortname":":u7121:","category":"symbols","emoji_order":"817","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"u7533":{"unicode":"1f238","unicode_alternates":"","name":"squared cjk unified ideograph-7533","shortname":":u7533:","category":"symbols","emoji_order":"818","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"u55b6":{"unicode":"1f23a","unicode_alternates":"","name":"squared cjk unified ideograph-55b6","shortname":":u55b6:","category":"symbols","emoji_order":"819","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"u6708":{"unicode":"1f237","unicode_alternates":"1f237-fe0f","name":"squared cjk unified ideograph-6708","shortname":":u6708:","category":"symbols","emoji_order":"820","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"eight_pointed_black_star":{"unicode":"2734","unicode_alternates":"2734-fe0f","name":"eight pointed black star","shortname":":eight_pointed_black_star:","category":"symbols","emoji_order":"821","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"vs":{"unicode":"1f19a","unicode_alternates":"","name":"squared vs","shortname":":vs:","category":"symbols","emoji_order":"822","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"accept":{"unicode":"1f251","unicode_alternates":"","name":"circled ideograph accept","shortname":":accept:","category":"symbols","emoji_order":"823","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"white_flower":{"unicode":"1f4ae","unicode_alternates":"","name":"white flower","shortname":":white_flower:","category":"symbols","emoji_order":"824","aliases":[],"aliases_ascii":[],"keywords":["flower","symbol"]},"ideograph_advantage":{"unicode":"1f250","unicode_alternates":"","name":"circled ideograph advantage","shortname":":ideograph_advantage:","category":"symbols","emoji_order":"825","aliases":[],"aliases_ascii":[],"keywords":["japan","symbol"]},"secret":{"unicode":"3299","unicode_alternates":"3299-fe0f","name":"circled ideograph secret","shortname":":secret:","category":"symbols","emoji_order":"826","aliases":[],"aliases_ascii":[],"keywords":["japan","symbol"]},"congratulations":{"unicode":"3297","unicode_alternates":"3297-fe0f","name":"circled ideograph congratulation","shortname":":congratulations:","category":"symbols","emoji_order":"827","aliases":[],"aliases_ascii":[],"keywords":["japan","symbol"]},"u5408":{"unicode":"1f234","unicode_alternates":"","name":"squared cjk unified ideograph-5408","shortname":":u5408:","category":"symbols","emoji_order":"828","aliases":[],"aliases_ascii":[],"keywords":["japan","symbol"]},"u6e80":{"unicode":"1f235","unicode_alternates":"","name":"squared cjk unified ideograph-6e80","shortname":":u6e80:","category":"symbols","emoji_order":"829","aliases":[],"aliases_ascii":[],"keywords":["japan","symbol"]},"u7981":{"unicode":"1f232","unicode_alternates":"","name":"squared cjk unified ideograph-7981","shortname":":u7981:","category":"symbols","emoji_order":"830","aliases":[],"aliases_ascii":[],"keywords":["japan","symbol"]},"a":{"unicode":"1f170","unicode_alternates":"","name":"negative squared latin capital letter a","shortname":":a:","category":"symbols","emoji_order":"831","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"b":{"unicode":"1f171","unicode_alternates":"","name":"negative squared latin capital letter b","shortname":":b:","category":"symbols","emoji_order":"832","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"ab":{"unicode":"1f18e","unicode_alternates":"","name":"negative squared ab","shortname":":ab:","category":"symbols","emoji_order":"833","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"cl":{"unicode":"1f191","unicode_alternates":"","name":"squared cl","shortname":":cl:","category":"symbols","emoji_order":"834","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"o2":{"unicode":"1f17e","unicode_alternates":"","name":"negative squared latin capital letter o","shortname":":o2:","category":"symbols","emoji_order":"835","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"sos":{"unicode":"1f198","unicode_alternates":"","name":"squared sos","shortname":":sos:","category":"symbols","emoji_order":"836","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"no_entry":{"unicode":"26d4","unicode_alternates":"26d4-fe0f","name":"no entry","shortname":":no_entry:","category":"symbols","emoji_order":"837","aliases":[],"aliases_ascii":[],"keywords":["symbol","circle","circle"]},"name_badge":{"unicode":"1f4db","unicode_alternates":"","name":"name badge","shortname":":name_badge:","category":"symbols","emoji_order":"838","aliases":[],"aliases_ascii":[],"keywords":["work"]},"no_entry_sign":{"unicode":"1f6ab","unicode_alternates":"","name":"no entry sign","shortname":":no_entry_sign:","category":"symbols","emoji_order":"839","aliases":[],"aliases_ascii":[],"keywords":["symbol","circle","circle"]},"x":{"unicode":"274c","unicode_alternates":"","name":"cross mark","shortname":":x:","category":"symbols","emoji_order":"840","aliases":[],"aliases_ascii":[],"keywords":["symbol","sol","sol"]},"o":{"unicode":"2b55","unicode_alternates":"2b55-fe0f","name":"heavy large circle","shortname":":o:","category":"symbols","emoji_order":"841","aliases":[],"aliases_ascii":[],"keywords":["symbol","circle","circle"]},"anger":{"unicode":"1f4a2","unicode_alternates":"","name":"anger symbol","shortname":":anger:","category":"symbols","emoji_order":"842","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"hotsprings":{"unicode":"2668","unicode_alternates":"2668-fe0f","name":"hot springs","shortname":":hotsprings:","category":"symbols","emoji_order":"843","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"no_pedestrians":{"unicode":"1f6b7","unicode_alternates":"","name":"no pedestrians","shortname":":no_pedestrians:","category":"symbols","emoji_order":"844","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"do_not_litter":{"unicode":"1f6af","unicode_alternates":"","name":"do not litter symbol","shortname":":do_not_litter:","category":"symbols","emoji_order":"845","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"no_bicycles":{"unicode":"1f6b3","unicode_alternates":"","name":"no bicycles","shortname":":no_bicycles:","category":"symbols","emoji_order":"846","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"non-potable_water":{"unicode":"1f6b1","unicode_alternates":"","name":"non-potable water symbol","shortname":":non-potable_water:","category":"symbols","emoji_order":"847","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"underage":{"unicode":"1f51e","unicode_alternates":"","name":"no one under eighteen symbol","shortname":":underage:","category":"symbols","emoji_order":"848","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"no_mobile_phones":{"unicode":"1f4f5","unicode_alternates":"","name":"no mobile phones","shortname":":no_mobile_phones:","category":"symbols","emoji_order":"849","aliases":[],"aliases_ascii":[],"keywords":["symbol","phone"]},"exclamation":{"unicode":"2757","unicode_alternates":"2757-fe0f","name":"heavy exclamation mark symbol","shortname":":exclamation:","category":"symbols","emoji_order":"850","aliases":[],"aliases_ascii":[],"keywords":["symbol","punctuation"]},"grey_exclamation":{"unicode":"2755","unicode_alternates":"","name":"white exclamation mark ornament","shortname":":grey_exclamation:","category":"symbols","emoji_order":"851","aliases":[],"aliases_ascii":[],"keywords":["symbol","punctuation"]},"question":{"unicode":"2753","unicode_alternates":"","name":"black question mark ornament","shortname":":question:","category":"symbols","emoji_order":"852","aliases":[],"aliases_ascii":[],"keywords":["symbol","punctuation","wth","wth"]},"grey_question":{"unicode":"2754","unicode_alternates":"","name":"white question mark ornament","shortname":":grey_question:","category":"symbols","emoji_order":"853","aliases":[],"aliases_ascii":[],"keywords":["symbol","punctuation"]},"bangbang":{"unicode":"203c","unicode_alternates":"203c-fe0f","name":"double exclamation mark","shortname":":bangbang:","category":"symbols","emoji_order":"854","aliases":[],"aliases_ascii":[],"keywords":["symbol","punctuation"]},"interrobang":{"unicode":"2049","unicode_alternates":"2049-fe0f","name":"exclamation question mark","shortname":":interrobang:","category":"symbols","emoji_order":"855","aliases":[],"aliases_ascii":[],"keywords":["symbol","punctuation"]},"100":{"unicode":"1f4af","unicode_alternates":"","name":"hundred points symbol","shortname":":100:","category":"symbols","emoji_order":"856","aliases":[],"aliases_ascii":[],"keywords":["symbol","wow","wow","win","win","perfect","perfect","parties","parties"]},"low_brightness":{"unicode":"1f505","unicode_alternates":"","name":"low brightness symbol","shortname":":low_brightness:","category":"symbols","emoji_order":"857","aliases":[],"aliases_ascii":[],"keywords":["symbol","sun"]},"high_brightness":{"unicode":"1f506","unicode_alternates":"","name":"high brightness symbol","shortname":":high_brightness:","category":"symbols","emoji_order":"858","aliases":[],"aliases_ascii":[],"keywords":["symbol","sun"]},"trident":{"unicode":"1f531","unicode_alternates":"","name":"trident emblem","shortname":":trident:","category":"symbols","emoji_order":"859","aliases":[],"aliases_ascii":[],"keywords":["object","symbol"]},"fleur-de-lis":{"unicode":"269c","unicode_alternates":"269c-fe0f","name":"fleur-de-lis","shortname":":fleur-de-lis:","category":"symbols","emoji_order":"860","aliases":[],"aliases_ascii":[],"keywords":["object","symbol"]},"part_alternation_mark":{"unicode":"303d","unicode_alternates":"303d-fe0f","name":"part alternation mark","shortname":":part_alternation_mark:","category":"symbols","emoji_order":"861","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"warning":{"unicode":"26a0","unicode_alternates":"26a0-fe0f","name":"warning sign","shortname":":warning:","category":"symbols","emoji_order":"862","aliases":[],"aliases_ascii":[],"keywords":["symbol","punctuation"]},"children_crossing":{"unicode":"1f6b8","unicode_alternates":"","name":"children crossing","shortname":":children_crossing:","category":"symbols","emoji_order":"863","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"beginner":{"unicode":"1f530","unicode_alternates":"","name":"japanese symbol for beginner","shortname":":beginner:","category":"symbols","emoji_order":"864","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"recycle":{"unicode":"267b","unicode_alternates":"267b-fe0f","name":"black universal recycling symbol","shortname":":recycle:","category":"symbols","emoji_order":"865","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"u6307":{"unicode":"1f22f","unicode_alternates":"1f22f-fe0f","name":"squared cjk unified ideograph-6307","shortname":":u6307:","category":"symbols","emoji_order":"866","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"chart":{"unicode":"1f4b9","unicode_alternates":"","name":"chart with upwards trend and yen sign","shortname":":chart:","category":"symbols","emoji_order":"867","aliases":[],"aliases_ascii":[],"keywords":["symbol","money","money"]},"sparkle":{"unicode":"2747","unicode_alternates":"2747-fe0f","name":"sparkle","shortname":":sparkle:","category":"symbols","emoji_order":"868","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"eight_spoked_asterisk":{"unicode":"2733","unicode_alternates":"2733-fe0f","name":"eight spoked asterisk","shortname":":eight_spoked_asterisk:","category":"symbols","emoji_order":"869","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"negative_squared_cross_mark":{"unicode":"274e","unicode_alternates":"","name":"negative squared cross mark","shortname":":negative_squared_cross_mark:","category":"symbols","emoji_order":"870","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"white_check_mark":{"unicode":"2705","unicode_alternates":"","name":"white heavy check mark","shortname":":white_check_mark:","category":"symbols","emoji_order":"871","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"diamond_shape_with_a_dot_inside":{"unicode":"1f4a0","unicode_alternates":"","name":"diamond shape with a dot inside","shortname":":diamond_shape_with_a_dot_inside:","category":"symbols","emoji_order":"872","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"cyclone":{"unicode":"1f300","unicode_alternates":"","name":"cyclone","shortname":":cyclone:","category":"symbols","emoji_order":"873","aliases":[],"aliases_ascii":[],"keywords":["symbol","drugs","drugs"]},"loop":{"unicode":"27bf","unicode_alternates":"","name":"double curly loop","shortname":":loop:","category":"symbols","emoji_order":"874","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"globe_with_meridians":{"unicode":"1f310","unicode_alternates":"","name":"globe with meridians","shortname":":globe_with_meridians:","category":"symbols","emoji_order":"875","aliases":[],"aliases_ascii":[],"keywords":["symbol","globe","globe"]},"m":{"unicode":"24c2","unicode_alternates":"24c2-fe0f","name":"circled latin capital letter m","shortname":":m:","category":"symbols","emoji_order":"876","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"atm":{"unicode":"1f3e7","unicode_alternates":"","name":"automated teller machine","shortname":":atm:","category":"symbols","emoji_order":"877","aliases":[],"aliases_ascii":[],"keywords":["electronics","symbol","money","money"]},"sa":{"unicode":"1f202","unicode_alternates":"1f202-fe0f","name":"squared katakana sa","shortname":":sa:","category":"symbols","emoji_order":"878","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"passport_control":{"unicode":"1f6c2","unicode_alternates":"","name":"passport control","shortname":":passport_control:","category":"symbols","emoji_order":"879","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"customs":{"unicode":"1f6c3","unicode_alternates":"","name":"customs","shortname":":customs:","category":"symbols","emoji_order":"880","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"baggage_claim":{"unicode":"1f6c4","unicode_alternates":"","name":"baggage claim","shortname":":baggage_claim:","category":"symbols","emoji_order":"881","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"left_luggage":{"unicode":"1f6c5","unicode_alternates":"","name":"left luggage","shortname":":left_luggage:","category":"symbols","emoji_order":"882","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"wheelchair":{"unicode":"267f","unicode_alternates":"267f-fe0f","name":"wheelchair symbol","shortname":":wheelchair:","category":"symbols","emoji_order":"883","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"no_smoking":{"unicode":"1f6ad","unicode_alternates":"","name":"no smoking symbol","shortname":":no_smoking:","category":"symbols","emoji_order":"884","aliases":[],"aliases_ascii":[],"keywords":["symbol","smoking","smoking"]},"wc":{"unicode":"1f6be","unicode_alternates":"","name":"water closet","shortname":":wc:","category":"symbols","emoji_order":"885","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"parking":{"unicode":"1f17f","unicode_alternates":"1f17f-fe0f","name":"negative squared latin capital letter p","shortname":":parking:","category":"symbols","emoji_order":"886","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"potable_water":{"unicode":"1f6b0","unicode_alternates":"","name":"potable water symbol","shortname":":potable_water:","category":"symbols","emoji_order":"887","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"mens":{"unicode":"1f6b9","unicode_alternates":"","name":"mens symbol","shortname":":mens:","category":"symbols","emoji_order":"888","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"womens":{"unicode":"1f6ba","unicode_alternates":"","name":"womens symbol","shortname":":womens:","category":"symbols","emoji_order":"889","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"baby_symbol":{"unicode":"1f6bc","unicode_alternates":"","name":"baby symbol","shortname":":baby_symbol:","category":"symbols","emoji_order":"890","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"restroom":{"unicode":"1f6bb","unicode_alternates":"","name":"restroom","shortname":":restroom:","category":"symbols","emoji_order":"891","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"put_litter_in_its_place":{"unicode":"1f6ae","unicode_alternates":"","name":"put litter in its place symbol","shortname":":put_litter_in_its_place:","category":"symbols","emoji_order":"892","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"cinema":{"unicode":"1f3a6","unicode_alternates":"","name":"cinema","shortname":":cinema:","category":"symbols","emoji_order":"893","aliases":[],"aliases_ascii":[],"keywords":["symbol","camera","movie"]},"signal_strength":{"unicode":"1f4f6","unicode_alternates":"","name":"antenna with bars","shortname":":signal_strength:","category":"symbols","emoji_order":"894","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"koko":{"unicode":"1f201","unicode_alternates":"","name":"squared katakana koko","shortname":":koko:","category":"symbols","emoji_order":"895","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"ng":{"unicode":"1f196","unicode_alternates":"","name":"squared ng","shortname":":ng:","category":"symbols","emoji_order":"896","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"ok":{"unicode":"1f197","unicode_alternates":"","name":"squared ok","shortname":":ok:","category":"symbols","emoji_order":"897","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"up":{"unicode":"1f199","unicode_alternates":"","name":"squared up with exclamation mark","shortname":":up:","category":"symbols","emoji_order":"898","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"cool":{"unicode":"1f192","unicode_alternates":"","name":"squared cool","shortname":":cool:","category":"symbols","emoji_order":"899","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"new":{"unicode":"1f195","unicode_alternates":"","name":"squared new","shortname":":new:","category":"symbols","emoji_order":"900","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"free":{"unicode":"1f193","unicode_alternates":"","name":"squared free","shortname":":free:","category":"symbols","emoji_order":"901","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"zero":{"unicode":"0030-20e3","unicode_alternates":"0030-fe0f-20e3","name":"keycap digit zero","shortname":":zero:","category":"symbols","emoji_order":"902","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"one":{"unicode":"0031-20e3","unicode_alternates":"0031-fe0f-20e3","name":"keycap digit one","shortname":":one:","category":"symbols","emoji_order":"903","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"two":{"unicode":"0032-20e3","unicode_alternates":"0032-fe0f-20e3","name":"keycap digit two","shortname":":two:","category":"symbols","emoji_order":"904","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"three":{"unicode":"0033-20e3","unicode_alternates":"0033-fe0f-20e3","name":"keycap digit three","shortname":":three:","category":"symbols","emoji_order":"905","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"four":{"unicode":"0034-20e3","unicode_alternates":"0034-fe0f-20e3","name":"keycap digit four","shortname":":four:","category":"symbols","emoji_order":"906","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"five":{"unicode":"0035-20e3","unicode_alternates":"0035-fe0f-20e3","name":"keycap digit five","shortname":":five:","category":"symbols","emoji_order":"907","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"six":{"unicode":"0036-20e3","unicode_alternates":"0036-fe0f-20e3","name":"keycap digit six","shortname":":six:","category":"symbols","emoji_order":"908","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"seven":{"unicode":"0037-20e3","unicode_alternates":"0037-fe0f-20e3","name":"keycap digit seven","shortname":":seven:","category":"symbols","emoji_order":"909","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"eight":{"unicode":"0038-20e3","unicode_alternates":"0038-fe0f-20e3","name":"keycap digit eight","shortname":":eight:","category":"symbols","emoji_order":"910","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"nine":{"unicode":"0039-20e3","unicode_alternates":"0039-fe0f-20e3","name":"keycap digit nine","shortname":":nine:","category":"symbols","emoji_order":"911","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"ten":{"unicode":"1f51f","unicode_alternates":"","name":"keycap ten","shortname":":ten:","category":"symbols","emoji_order":"912","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"1234":{"unicode":"1f522","unicode_alternates":"","name":"input symbol for numbers","shortname":":1234:","category":"symbols","emoji_order":"913","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"arrow_forward":{"unicode":"25b6","unicode_alternates":"25b6-fe0f","name":"black right-pointing triangle","shortname":":arrow_forward:","category":"symbols","emoji_order":"914","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol","triangle","triangle"]},"pause_button":{"unicode":"23f8","unicode_alternates":"23f8-fe0f","name":"double vertical bar","shortname":":pause_button:","category":"symbols","emoji_order":"915","aliases":[":double_vertical_bar:"],"aliases_ascii":[],"keywords":["symbol"]},"play_pause":{"unicode":"23ef","unicode_alternates":"23ef-fe0f","name":"black right-pointing double triangle with double vertical bar","shortname":":play_pause:","category":"symbols","emoji_order":"916","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"stop_button":{"unicode":"23f9","unicode_alternates":"23f9-fe0f","name":"black square for stop","shortname":":stop_button:","category":"symbols","emoji_order":"917","aliases":[],"aliases_ascii":[],"keywords":["symbol","square","square"]},"record_button":{"unicode":"23fa","unicode_alternates":"23fa-fe0f","name":"black circle for record","shortname":":record_button:","category":"symbols","emoji_order":"918","aliases":[],"aliases_ascii":[],"keywords":["symbol","circle","circle"]},"track_next":{"unicode":"23ed","unicode_alternates":"23ed-fe0f","name":"black right-pointing double triangle with vertical bar","shortname":":track_next:","category":"symbols","emoji_order":"919","aliases":[":next_track:"],"aliases_ascii":[],"keywords":["arrow","symbol"]},"track_previous":{"unicode":"23ee","unicode_alternates":"23ee-fe0f","name":"black left-pointing double triangle with vertical bar","shortname":":track_previous:","category":"symbols","emoji_order":"920","aliases":[":previous_track:"],"aliases_ascii":[],"keywords":["arrow","symbol"]},"fast_forward":{"unicode":"23e9","unicode_alternates":"","name":"black right-pointing double triangle","shortname":":fast_forward:","category":"symbols","emoji_order":"921","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"rewind":{"unicode":"23ea","unicode_alternates":"","name":"black left-pointing double triangle","shortname":":rewind:","category":"symbols","emoji_order":"922","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"twisted_rightwards_arrows":{"unicode":"1f500","unicode_alternates":"","name":"twisted rightwards arrows","shortname":":twisted_rightwards_arrows:","category":"symbols","emoji_order":"923","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"repeat":{"unicode":"1f501","unicode_alternates":"","name":"clockwise rightwards and leftwards open circle arrows","shortname":":repeat:","category":"symbols","emoji_order":"924","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"repeat_one":{"unicode":"1f502","unicode_alternates":"","name":"clockwise rightwards and leftwards open circle arrows with circled one overlay","shortname":":repeat_one:","category":"symbols","emoji_order":"925","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_backward":{"unicode":"25c0","unicode_alternates":"25c0-fe0f","name":"black left-pointing triangle","shortname":":arrow_backward:","category":"symbols","emoji_order":"926","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol","triangle","triangle"]},"arrow_up_small":{"unicode":"1f53c","unicode_alternates":"","name":"up-pointing small red triangle","shortname":":arrow_up_small:","category":"symbols","emoji_order":"927","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol","triangle","triangle"]},"arrow_down_small":{"unicode":"1f53d","unicode_alternates":"","name":"down-pointing small red triangle","shortname":":arrow_down_small:","category":"symbols","emoji_order":"928","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol","triangle","triangle"]},"arrow_double_up":{"unicode":"23eb","unicode_alternates":"","name":"black up-pointing double triangle","shortname":":arrow_double_up:","category":"symbols","emoji_order":"929","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_double_down":{"unicode":"23ec","unicode_alternates":"","name":"black down-pointing double triangle","shortname":":arrow_double_down:","category":"symbols","emoji_order":"930","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_right":{"unicode":"27a1","unicode_alternates":"27a1-fe0f","name":"black rightwards arrow","shortname":":arrow_right:","category":"symbols","emoji_order":"931","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_left":{"unicode":"2b05","unicode_alternates":"2b05-fe0f","name":"leftwards black arrow","shortname":":arrow_left:","category":"symbols","emoji_order":"932","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_up":{"unicode":"2b06","unicode_alternates":"2b06-fe0f","name":"upwards black arrow","shortname":":arrow_up:","category":"symbols","emoji_order":"933","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_down":{"unicode":"2b07","unicode_alternates":"2b07-fe0f","name":"downwards black arrow","shortname":":arrow_down:","category":"symbols","emoji_order":"934","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_upper_right":{"unicode":"2197","unicode_alternates":"2197-fe0f","name":"north east arrow","shortname":":arrow_upper_right:","category":"symbols","emoji_order":"935","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_lower_right":{"unicode":"2198","unicode_alternates":"2198-fe0f","name":"south east arrow","shortname":":arrow_lower_right:","category":"symbols","emoji_order":"936","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_lower_left":{"unicode":"2199","unicode_alternates":"2199-fe0f","name":"south west arrow","shortname":":arrow_lower_left:","category":"symbols","emoji_order":"937","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_upper_left":{"unicode":"2196","unicode_alternates":"2196-fe0f","name":"north west arrow","shortname":":arrow_upper_left:","category":"symbols","emoji_order":"938","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_up_down":{"unicode":"2195","unicode_alternates":"2195-fe0f","name":"up down arrow","shortname":":arrow_up_down:","category":"symbols","emoji_order":"939","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"left_right_arrow":{"unicode":"2194","unicode_alternates":"2194-fe0f","name":"left right arrow","shortname":":left_right_arrow:","category":"symbols","emoji_order":"940","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrows_counterclockwise":{"unicode":"1f504","unicode_alternates":"","name":"anticlockwise downwards and upwards open circle arrows","shortname":":arrows_counterclockwise:","category":"symbols","emoji_order":"941","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_right_hook":{"unicode":"21aa","unicode_alternates":"21aa-fe0f","name":"rightwards arrow with hook","shortname":":arrow_right_hook:","category":"symbols","emoji_order":"942","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"leftwards_arrow_with_hook":{"unicode":"21a9","unicode_alternates":"21a9-fe0f","name":"leftwards arrow with hook","shortname":":leftwards_arrow_with_hook:","category":"symbols","emoji_order":"943","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_heading_up":{"unicode":"2934","unicode_alternates":"2934-fe0f","name":"arrow pointing rightwards then curving upwards","shortname":":arrow_heading_up:","category":"symbols","emoji_order":"944","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_heading_down":{"unicode":"2935","unicode_alternates":"2935-fe0f","name":"arrow pointing rightwards then curving downwards","shortname":":arrow_heading_down:","category":"symbols","emoji_order":"945","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"hash":{"unicode":"0023-20e3","unicode_alternates":"0023-fe0f-20e3","name":"keycap number sign","shortname":":hash:","category":"symbols","emoji_order":"946","aliases":[],"aliases_ascii":[],"keywords":["number","symbol"]},"asterisk":{"unicode":"002a-20e3","unicode_alternates":"002a-fe0f-20e3","name":"keycap asterisk","shortname":":asterisk:","category":"symbols","emoji_order":"947","aliases":[":keycap_asterisk:"],"aliases_ascii":[],"keywords":["symbol"]},"information_source":{"unicode":"2139","unicode_alternates":"2139-fe0f","name":"information source","shortname":":information_source:","category":"symbols","emoji_order":"948","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"abc":{"unicode":"1f524","unicode_alternates":"","name":"input symbol for latin letters","shortname":":abc:","category":"symbols","emoji_order":"949","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"abcd":{"unicode":"1f521","unicode_alternates":"","name":"input symbol for latin small letters","shortname":":abcd:","category":"symbols","emoji_order":"950","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"capital_abcd":{"unicode":"1f520","unicode_alternates":"","name":"input symbol for latin capital letters","shortname":":capital_abcd:","category":"symbols","emoji_order":"951","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"symbols":{"unicode":"1f523","unicode_alternates":"","name":"input symbol for symbols","shortname":":symbols:","category":"symbols","emoji_order":"952","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"musical_note":{"unicode":"1f3b5","unicode_alternates":"","name":"musical note","shortname":":musical_note:","category":"symbols","emoji_order":"953","aliases":[],"aliases_ascii":[],"keywords":["instruments","symbol"]},"notes":{"unicode":"1f3b6","unicode_alternates":"","name":"multiple musical notes","shortname":":notes:","category":"symbols","emoji_order":"954","aliases":[],"aliases_ascii":[],"keywords":["instruments","symbol"]},"wavy_dash":{"unicode":"3030","unicode_alternates":"3030-fe0f","name":"wavy dash","shortname":":wavy_dash:","category":"symbols","emoji_order":"955","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"curly_loop":{"unicode":"27b0","unicode_alternates":"","name":"curly loop","shortname":":curly_loop:","category":"symbols","emoji_order":"956","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"heavy_check_mark":{"unicode":"2714","unicode_alternates":"2714-fe0f","name":"heavy check mark","shortname":":heavy_check_mark:","category":"symbols","emoji_order":"957","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"arrows_clockwise":{"unicode":"1f503","unicode_alternates":"","name":"clockwise downwards and upwards open circle arrows","shortname":":arrows_clockwise:","category":"symbols","emoji_order":"958","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"heavy_plus_sign":{"unicode":"2795","unicode_alternates":"","name":"heavy plus sign","shortname":":heavy_plus_sign:","category":"symbols","emoji_order":"959","aliases":[],"aliases_ascii":[],"keywords":["math","symbol"]},"heavy_minus_sign":{"unicode":"2796","unicode_alternates":"","name":"heavy minus sign","shortname":":heavy_minus_sign:","category":"symbols","emoji_order":"960","aliases":[],"aliases_ascii":[],"keywords":["math","symbol"]},"heavy_division_sign":{"unicode":"2797","unicode_alternates":"","name":"heavy division sign","shortname":":heavy_division_sign:","category":"symbols","emoji_order":"961","aliases":[],"aliases_ascii":[],"keywords":["math","symbol"]},"heavy_multiplication_x":{"unicode":"2716","unicode_alternates":"2716-fe0f","name":"heavy multiplication x","shortname":":heavy_multiplication_x:","category":"symbols","emoji_order":"962","aliases":[],"aliases_ascii":[],"keywords":["math","symbol"]},"heavy_dollar_sign":{"unicode":"1f4b2","unicode_alternates":"","name":"heavy dollar sign","shortname":":heavy_dollar_sign:","category":"symbols","emoji_order":"963","aliases":[],"aliases_ascii":[],"keywords":["math","symbol","money","money"]},"currency_exchange":{"unicode":"1f4b1","unicode_alternates":"","name":"currency exchange","shortname":":currency_exchange:","category":"symbols","emoji_order":"964","aliases":[],"aliases_ascii":[],"keywords":["symbol","money","money"]},"copyright":{"unicode":"00a9","unicode_alternates":"00a9-fe0f","name":"copyright sign","shortname":":copyright:","category":"symbols","emoji_order":"965","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"registered":{"unicode":"00ae","unicode_alternates":"00ae-fe0f","name":"registered sign","shortname":":registered:","category":"symbols","emoji_order":"966","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"tm":{"unicode":"2122","unicode_alternates":"2122-fe0f","name":"trade mark sign","shortname":":tm:","category":"symbols","emoji_order":"967","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"end":{"unicode":"1f51a","unicode_alternates":"","name":"end with leftwards arrow above","shortname":":end:","category":"symbols","emoji_order":"968","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"back":{"unicode":"1f519","unicode_alternates":"","name":"back with leftwards arrow above","shortname":":back:","category":"symbols","emoji_order":"969","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"on":{"unicode":"1f51b","unicode_alternates":"","name":"on with exclamation mark with left right arrow abo","shortname":":on:","category":"symbols","emoji_order":"970","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"top":{"unicode":"1f51d","unicode_alternates":"","name":"top with upwards arrow above","shortname":":top:","category":"symbols","emoji_order":"971","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"soon":{"unicode":"1f51c","unicode_alternates":"","name":"soon with rightwards arrow above","shortname":":soon:","category":"symbols","emoji_order":"972","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"ballot_box_with_check":{"unicode":"2611","unicode_alternates":"2611-fe0f","name":"ballot box with check","shortname":":ballot_box_with_check:","category":"symbols","emoji_order":"973","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"radio_button":{"unicode":"1f518","unicode_alternates":"","name":"radio button","shortname":":radio_button:","category":"symbols","emoji_order":"974","aliases":[],"aliases_ascii":[],"keywords":["symbol","circle","circle"]},"white_circle":{"unicode":"26aa","unicode_alternates":"26aa-fe0f","name":"medium white circle","shortname":":white_circle:","category":"symbols","emoji_order":"975","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","circle","circle"]},"black_circle":{"unicode":"26ab","unicode_alternates":"26ab-fe0f","name":"medium black circle","shortname":":black_circle:","category":"symbols","emoji_order":"976","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","circle","circle"]},"red_circle":{"unicode":"1f534","unicode_alternates":"","name":"large red circle","shortname":":red_circle:","category":"symbols","emoji_order":"977","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","circle","circle"]},"large_blue_circle":{"unicode":"1f535","unicode_alternates":"","name":"large blue circle","shortname":":large_blue_circle:","category":"symbols","emoji_order":"978","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","circle","circle"]},"small_orange_diamond":{"unicode":"1f538","unicode_alternates":"","name":"small orange diamond","shortname":":small_orange_diamond:","category":"symbols","emoji_order":"979","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol"]},"small_blue_diamond":{"unicode":"1f539","unicode_alternates":"","name":"small blue diamond","shortname":":small_blue_diamond:","category":"symbols","emoji_order":"980","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol"]},"large_orange_diamond":{"unicode":"1f536","unicode_alternates":"","name":"large orange diamond","shortname":":large_orange_diamond:","category":"symbols","emoji_order":"981","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol"]},"large_blue_diamond":{"unicode":"1f537","unicode_alternates":"","name":"large blue diamond","shortname":":large_blue_diamond:","category":"symbols","emoji_order":"982","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol"]},"small_red_triangle":{"unicode":"1f53a","unicode_alternates":"","name":"up-pointing red triangle","shortname":":small_red_triangle:","category":"symbols","emoji_order":"983","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","triangle","triangle"]},"black_small_square":{"unicode":"25aa","unicode_alternates":"25aa-fe0f","name":"black small square","shortname":":black_small_square:","category":"symbols","emoji_order":"984","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square","square"]},"white_small_square":{"unicode":"25ab","unicode_alternates":"25ab-fe0f","name":"white small square","shortname":":white_small_square:","category":"symbols","emoji_order":"985","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square","square"]},"black_large_square":{"unicode":"2b1b","unicode_alternates":"2b1b-fe0f","name":"black large square","shortname":":black_large_square:","category":"symbols","emoji_order":"986","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square","square"]},"white_large_square":{"unicode":"2b1c","unicode_alternates":"2b1c-fe0f","name":"white large square","shortname":":white_large_square:","category":"symbols","emoji_order":"987","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square","square"]},"small_red_triangle_down":{"unicode":"1f53b","unicode_alternates":"","name":"down-pointing red triangle","shortname":":small_red_triangle_down:","category":"symbols","emoji_order":"988","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","triangle","triangle"]},"black_medium_square":{"unicode":"25fc","unicode_alternates":"25fc-fe0f","name":"black medium square","shortname":":black_medium_square:","category":"symbols","emoji_order":"989","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square","square"]},"white_medium_square":{"unicode":"25fb","unicode_alternates":"25fb-fe0f","name":"white medium square","shortname":":white_medium_square:","category":"symbols","emoji_order":"990","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square","square"]},"black_medium_small_square":{"unicode":"25fe","unicode_alternates":"25fe-fe0f","name":"black medium small square","shortname":":black_medium_small_square:","category":"symbols","emoji_order":"991","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square","square"]},"white_medium_small_square":{"unicode":"25fd","unicode_alternates":"25fd-fe0f","name":"white medium small square","shortname":":white_medium_small_square:","category":"symbols","emoji_order":"992","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square","square"]},"black_square_button":{"unicode":"1f532","unicode_alternates":"","name":"black square button","shortname":":black_square_button:","category":"symbols","emoji_order":"993","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square","square"]},"white_square_button":{"unicode":"1f533","unicode_alternates":"","name":"white square button","shortname":":white_square_button:","category":"symbols","emoji_order":"994","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square","square"]},"speaker":{"unicode":"1f508","unicode_alternates":"","name":"speaker","shortname":":speaker:","category":"symbols","emoji_order":"995","aliases":[],"aliases_ascii":[],"keywords":["alarm","symbol"]},"sound":{"unicode":"1f509","unicode_alternates":"","name":"speaker with one sound wave","shortname":":sound:","category":"symbols","emoji_order":"996","aliases":[],"aliases_ascii":[],"keywords":["alarm","symbol"]},"loud_sound":{"unicode":"1f50a","unicode_alternates":"","name":"speaker with three sound waves","shortname":":loud_sound:","category":"symbols","emoji_order":"997","aliases":[],"aliases_ascii":[],"keywords":["alarm","symbol"]},"mute":{"unicode":"1f507","unicode_alternates":"","name":"speaker with cancellation stroke","shortname":":mute:","category":"symbols","emoji_order":"998","aliases":[],"aliases_ascii":[],"keywords":["alarm","symbol"]},"mega":{"unicode":"1f4e3","unicode_alternates":"","name":"cheering megaphone","shortname":":mega:","category":"symbols","emoji_order":"999","aliases":[],"aliases_ascii":[],"keywords":["object","sport"]},"loudspeaker":{"unicode":"1f4e2","unicode_alternates":"","name":"public address loudspeaker","shortname":":loudspeaker:","category":"symbols","emoji_order":"1000","aliases":[],"aliases_ascii":[],"keywords":["object","alarm","symbol"]},"bell":{"unicode":"1f514","unicode_alternates":"","name":"bell","shortname":":bell:","category":"symbols","emoji_order":"1001","aliases":[],"aliases_ascii":[],"keywords":["object","alarm","symbol"]},"no_bell":{"unicode":"1f515","unicode_alternates":"","name":"bell with cancellation stroke","shortname":":no_bell:","category":"symbols","emoji_order":"1002","aliases":[],"aliases_ascii":[],"keywords":["alarm","symbol"]},"black_joker":{"unicode":"1f0cf","unicode_alternates":"","name":"playing card black joker","shortname":":black_joker:","category":"symbols","emoji_order":"1003","aliases":[],"aliases_ascii":[],"keywords":["object","symbol","game"]},"mahjong":{"unicode":"1f004","unicode_alternates":"1f004-fe0f","name":"mahjong tile red dragon","shortname":":mahjong:","category":"symbols","emoji_order":"1004","aliases":[],"aliases_ascii":[],"keywords":["object","symbol","game"]},"spades":{"unicode":"2660","unicode_alternates":"2660-fe0f","name":"black spade suit","shortname":":spades:","category":"symbols","emoji_order":"1005","aliases":[],"aliases_ascii":[],"keywords":["symbol","game"]},"clubs":{"unicode":"2663","unicode_alternates":"2663-fe0f","name":"black club suit","shortname":":clubs:","category":"symbols","emoji_order":"1006","aliases":[],"aliases_ascii":[],"keywords":["symbol","game"]},"hearts":{"unicode":"2665","unicode_alternates":"2665-fe0f","name":"black heart suit","shortname":":hearts:","category":"symbols","emoji_order":"1007","aliases":[],"aliases_ascii":[],"keywords":["love","symbol","game"]},"diamonds":{"unicode":"2666","unicode_alternates":"2666-fe0f","name":"black diamond suit","shortname":":diamonds:","category":"symbols","emoji_order":"1008","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","game"]},"flower_playing_cards":{"unicode":"1f3b4","unicode_alternates":"","name":"flower playing cards","shortname":":flower_playing_cards:","category":"symbols","emoji_order":"1009","aliases":[],"aliases_ascii":[],"keywords":["object","symbol"]},"thought_balloon":{"unicode":"1f4ad","unicode_alternates":"","name":"thought balloon","shortname":":thought_balloon:","category":"symbols","emoji_order":"1010","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"anger_right":{"unicode":"1f5ef","unicode_alternates":"1f5ef-fe0f","name":"right anger bubble","shortname":":anger_right:","category":"symbols","emoji_order":"1011","aliases":[":right_anger_bubble:"],"aliases_ascii":[],"keywords":["symbol"]},"speech_balloon":{"unicode":"1f4ac","unicode_alternates":"","name":"speech balloon","shortname":":speech_balloon:","category":"symbols","emoji_order":"1012","aliases":[],"aliases_ascii":[],"keywords":["symbol","free speech","free speech"]},"clock1":{"unicode":"1f550","unicode_alternates":"","name":"clock face one oclock","shortname":":clock1:","category":"symbols","emoji_order":"1013","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock2":{"unicode":"1f551","unicode_alternates":"","name":"clock face two oclock","shortname":":clock2:","category":"symbols","emoji_order":"1014","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock3":{"unicode":"1f552","unicode_alternates":"","name":"clock face three oclock","shortname":":clock3:","category":"symbols","emoji_order":"1015","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock4":{"unicode":"1f553","unicode_alternates":"","name":"clock face four oclock","shortname":":clock4:","category":"symbols","emoji_order":"1016","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock5":{"unicode":"1f554","unicode_alternates":"","name":"clock face five oclock","shortname":":clock5:","category":"symbols","emoji_order":"1017","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock6":{"unicode":"1f555","unicode_alternates":"","name":"clock face six oclock","shortname":":clock6:","category":"symbols","emoji_order":"1018","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock7":{"unicode":"1f556","unicode_alternates":"","name":"clock face seven oclock","shortname":":clock7:","category":"symbols","emoji_order":"1019","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock8":{"unicode":"1f557","unicode_alternates":"","name":"clock face eight oclock","shortname":":clock8:","category":"symbols","emoji_order":"1020","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock9":{"unicode":"1f558","unicode_alternates":"","name":"clock face nine oclock","shortname":":clock9:","category":"symbols","emoji_order":"1021","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock10":{"unicode":"1f559","unicode_alternates":"","name":"clock face ten oclock","shortname":":clock10:","category":"symbols","emoji_order":"1022","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock11":{"unicode":"1f55a","unicode_alternates":"","name":"clock face eleven oclock","shortname":":clock11:","category":"symbols","emoji_order":"1023","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock12":{"unicode":"1f55b","unicode_alternates":"","name":"clock face twelve oclock","shortname":":clock12:","category":"symbols","emoji_order":"1024","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock130":{"unicode":"1f55c","unicode_alternates":"","name":"clock face one-thirty","shortname":":clock130:","category":"symbols","emoji_order":"1025","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock230":{"unicode":"1f55d","unicode_alternates":"","name":"clock face two-thirty","shortname":":clock230:","category":"symbols","emoji_order":"1026","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock330":{"unicode":"1f55e","unicode_alternates":"","name":"clock face three-thirty","shortname":":clock330:","category":"symbols","emoji_order":"1027","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock430":{"unicode":"1f55f","unicode_alternates":"","name":"clock face four-thirty","shortname":":clock430:","category":"symbols","emoji_order":"1028","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock530":{"unicode":"1f560","unicode_alternates":"","name":"clock face five-thirty","shortname":":clock530:","category":"symbols","emoji_order":"1029","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock630":{"unicode":"1f561","unicode_alternates":"","name":"clock face six-thirty","shortname":":clock630:","category":"symbols","emoji_order":"1030","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock730":{"unicode":"1f562","unicode_alternates":"","name":"clock face seven-thirty","shortname":":clock730:","category":"symbols","emoji_order":"1031","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock830":{"unicode":"1f563","unicode_alternates":"","name":"clock face eight-thirty","shortname":":clock830:","category":"symbols","emoji_order":"1032","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock930":{"unicode":"1f564","unicode_alternates":"","name":"clock face nine-thirty","shortname":":clock930:","category":"symbols","emoji_order":"1033","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock1030":{"unicode":"1f565","unicode_alternates":"","name":"clock face ten-thirty","shortname":":clock1030:","category":"symbols","emoji_order":"1034","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock1130":{"unicode":"1f566","unicode_alternates":"","name":"clock face eleven-thirty","shortname":":clock1130:","category":"symbols","emoji_order":"1035","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock1230":{"unicode":"1f567","unicode_alternates":"","name":"clock face twelve-thirty","shortname":":clock1230:","category":"symbols","emoji_order":"1036","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"eye_in_speech_bubble":{"unicode":"1f441-1f5e8","unicode_alternates":"1f441-200d-1f5e8","name":"eye in speech bubble","shortname":":eye_in_speech_bubble:","category":"symbols","emoji_order":"1037","aliases":[],"aliases_ascii":[],"keywords":["object","symbol","eyes","talk"]},"flag_ac":{"unicode":"1f1e6-1f1e8","unicode_alternates":"","name":"ascension","shortname":":flag_ac:","category":"flags","emoji_order":"1038","aliases":[":ac:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_af":{"unicode":"1f1e6-1f1eb","unicode_alternates":"","name":"afghanistan","shortname":":flag_af:","category":"flags","emoji_order":"1039","aliases":[":af:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_al":{"unicode":"1f1e6-1f1f1","unicode_alternates":"","name":"albania","shortname":":flag_al:","category":"flags","emoji_order":"1040","aliases":[":al:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_dz":{"unicode":"1f1e9-1f1ff","unicode_alternates":"","name":"algeria","shortname":":flag_dz:","category":"flags","emoji_order":"1041","aliases":[":dz:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ad":{"unicode":"1f1e6-1f1e9","unicode_alternates":"","name":"andorra","shortname":":flag_ad:","category":"flags","emoji_order":"1042","aliases":[":ad:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ao":{"unicode":"1f1e6-1f1f4","unicode_alternates":"","name":"angola","shortname":":flag_ao:","category":"flags","emoji_order":"1043","aliases":[":ao:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ai":{"unicode":"1f1e6-1f1ee","unicode_alternates":"","name":"anguilla","shortname":":flag_ai:","category":"flags","emoji_order":"1044","aliases":[":ai:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ag":{"unicode":"1f1e6-1f1ec","unicode_alternates":"","name":"antigua and barbuda","shortname":":flag_ag:","category":"flags","emoji_order":"1045","aliases":[":ag:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ar":{"unicode":"1f1e6-1f1f7","unicode_alternates":"","name":"argentina","shortname":":flag_ar:","category":"flags","emoji_order":"1046","aliases":[":ar:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_am":{"unicode":"1f1e6-1f1f2","unicode_alternates":"","name":"armenia","shortname":":flag_am:","category":"flags","emoji_order":"1047","aliases":[":am:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_aw":{"unicode":"1f1e6-1f1fc","unicode_alternates":"","name":"aruba","shortname":":flag_aw:","category":"flags","emoji_order":"1048","aliases":[":aw:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_au":{"unicode":"1f1e6-1f1fa","unicode_alternates":"","name":"australia","shortname":":flag_au:","category":"flags","emoji_order":"1049","aliases":[":au:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_at":{"unicode":"1f1e6-1f1f9","unicode_alternates":"","name":"austria","shortname":":flag_at:","category":"flags","emoji_order":"1050","aliases":[":at:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_az":{"unicode":"1f1e6-1f1ff","unicode_alternates":"","name":"azerbaijan","shortname":":flag_az:","category":"flags","emoji_order":"1051","aliases":[":az:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_bs":{"unicode":"1f1e7-1f1f8","unicode_alternates":"","name":"the bahamas","shortname":":flag_bs:","category":"flags","emoji_order":"1052","aliases":[":bs:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_bh":{"unicode":"1f1e7-1f1ed","unicode_alternates":"","name":"bahrain","shortname":":flag_bh:","category":"flags","emoji_order":"1053","aliases":[":bh:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_bd":{"unicode":"1f1e7-1f1e9","unicode_alternates":"","name":"bangladesh","shortname":":flag_bd:","category":"flags","emoji_order":"1054","aliases":[":bd:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_bb":{"unicode":"1f1e7-1f1e7","unicode_alternates":"","name":"barbados","shortname":":flag_bb:","category":"flags","emoji_order":"1055","aliases":[":bb:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_by":{"unicode":"1f1e7-1f1fe","unicode_alternates":"","name":"belarus","shortname":":flag_by:","category":"flags","emoji_order":"1056","aliases":[":by:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_be":{"unicode":"1f1e7-1f1ea","unicode_alternates":"","name":"belgium","shortname":":flag_be:","category":"flags","emoji_order":"1057","aliases":[":be:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_bz":{"unicode":"1f1e7-1f1ff","unicode_alternates":"","name":"belize","shortname":":flag_bz:","category":"flags","emoji_order":"1058","aliases":[":bz:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_bj":{"unicode":"1f1e7-1f1ef","unicode_alternates":"","name":"benin","shortname":":flag_bj:","category":"flags","emoji_order":"1059","aliases":[":bj:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_bm":{"unicode":"1f1e7-1f1f2","unicode_alternates":"","name":"bermuda","shortname":":flag_bm:","category":"flags","emoji_order":"1060","aliases":[":bm:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_bt":{"unicode":"1f1e7-1f1f9","unicode_alternates":"","name":"bhutan","shortname":":flag_bt:","category":"flags","emoji_order":"1061","aliases":[":bt:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_bo":{"unicode":"1f1e7-1f1f4","unicode_alternates":"","name":"bolivia","shortname":":flag_bo:","category":"flags","emoji_order":"1062","aliases":[":bo:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ba":{"unicode":"1f1e7-1f1e6","unicode_alternates":"","name":"bosnia and herzegovina","shortname":":flag_ba:","category":"flags","emoji_order":"1063","aliases":[":ba:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_bw":{"unicode":"1f1e7-1f1fc","unicode_alternates":"","name":"botswana","shortname":":flag_bw:","category":"flags","emoji_order":"1064","aliases":[":bw:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_br":{"unicode":"1f1e7-1f1f7","unicode_alternates":"","name":"brazil","shortname":":flag_br:","category":"flags","emoji_order":"1065","aliases":[":br:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_bn":{"unicode":"1f1e7-1f1f3","unicode_alternates":"","name":"brunei","shortname":":flag_bn:","category":"flags","emoji_order":"1066","aliases":[":bn:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_bg":{"unicode":"1f1e7-1f1ec","unicode_alternates":"","name":"bulgaria","shortname":":flag_bg:","category":"flags","emoji_order":"1067","aliases":[":bg:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_bf":{"unicode":"1f1e7-1f1eb","unicode_alternates":"","name":"burkina faso","shortname":":flag_bf:","category":"flags","emoji_order":"1068","aliases":[":bf:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_bi":{"unicode":"1f1e7-1f1ee","unicode_alternates":"","name":"burundi","shortname":":flag_bi:","category":"flags","emoji_order":"1069","aliases":[":bi:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_cv":{"unicode":"1f1e8-1f1fb","unicode_alternates":"","name":"cape verde","shortname":":flag_cv:","category":"flags","emoji_order":"1070","aliases":[":cv:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_kh":{"unicode":"1f1f0-1f1ed","unicode_alternates":"","name":"cambodia","shortname":":flag_kh:","category":"flags","emoji_order":"1071","aliases":[":kh:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_cm":{"unicode":"1f1e8-1f1f2","unicode_alternates":"","name":"cameroon","shortname":":flag_cm:","category":"flags","emoji_order":"1072","aliases":[":cm:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ca":{"unicode":"1f1e8-1f1e6","unicode_alternates":"","name":"canada","shortname":":flag_ca:","category":"flags","emoji_order":"1073","aliases":[":ca:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ky":{"unicode":"1f1f0-1f1fe","unicode_alternates":"","name":"cayman islands","shortname":":flag_ky:","category":"flags","emoji_order":"1074","aliases":[":ky:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_cf":{"unicode":"1f1e8-1f1eb","unicode_alternates":"","name":"central african republic","shortname":":flag_cf:","category":"flags","emoji_order":"1075","aliases":[":cf:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_td":{"unicode":"1f1f9-1f1e9","unicode_alternates":"","name":"chad","shortname":":flag_td:","category":"flags","emoji_order":"1076","aliases":[":td:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_cl":{"unicode":"1f1e8-1f1f1","unicode_alternates":"","name":"chile","shortname":":flag_cl:","category":"flags","emoji_order":"1077","aliases":[":chile:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_cn":{"unicode":"1f1e8-1f1f3","unicode_alternates":"","name":"china","shortname":":flag_cn:","category":"flags","emoji_order":"1078","aliases":[":cn:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_co":{"unicode":"1f1e8-1f1f4","unicode_alternates":"","name":"colombia","shortname":":flag_co:","category":"flags","emoji_order":"1079","aliases":[":co:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_km":{"unicode":"1f1f0-1f1f2","unicode_alternates":"","name":"the comoros","shortname":":flag_km:","category":"flags","emoji_order":"1080","aliases":[":km:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_cg":{"unicode":"1f1e8-1f1ec","unicode_alternates":"","name":"the republic of the congo","shortname":":flag_cg:","category":"flags","emoji_order":"1081","aliases":[":cg:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_cd":{"unicode":"1f1e8-1f1e9","unicode_alternates":"","name":"the democratic republic of the congo","shortname":":flag_cd:","category":"flags","emoji_order":"1082","aliases":[":congo:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_cr":{"unicode":"1f1e8-1f1f7","unicode_alternates":"","name":"costa rica","shortname":":flag_cr:","category":"flags","emoji_order":"1083","aliases":[":cr:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_hr":{"unicode":"1f1ed-1f1f7","unicode_alternates":"","name":"croatia","shortname":":flag_hr:","category":"flags","emoji_order":"1084","aliases":[":hr:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_cu":{"unicode":"1f1e8-1f1fa","unicode_alternates":"","name":"cuba","shortname":":flag_cu:","category":"flags","emoji_order":"1085","aliases":[":cu:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_cy":{"unicode":"1f1e8-1f1fe","unicode_alternates":"","name":"cyprus","shortname":":flag_cy:","category":"flags","emoji_order":"1086","aliases":[":cy:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_cz":{"unicode":"1f1e8-1f1ff","unicode_alternates":"","name":"the czech republic","shortname":":flag_cz:","category":"flags","emoji_order":"1087","aliases":[":cz:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_dk":{"unicode":"1f1e9-1f1f0","unicode_alternates":"","name":"denmark","shortname":":flag_dk:","category":"flags","emoji_order":"1088","aliases":[":dk:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_dj":{"unicode":"1f1e9-1f1ef","unicode_alternates":"","name":"djibouti","shortname":":flag_dj:","category":"flags","emoji_order":"1089","aliases":[":dj:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_dm":{"unicode":"1f1e9-1f1f2","unicode_alternates":"","name":"dominica","shortname":":flag_dm:","category":"flags","emoji_order":"1090","aliases":[":dm:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_do":{"unicode":"1f1e9-1f1f4","unicode_alternates":"","name":"the dominican republic","shortname":":flag_do:","category":"flags","emoji_order":"1091","aliases":[":do:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ec":{"unicode":"1f1ea-1f1e8","unicode_alternates":"","name":"ecuador","shortname":":flag_ec:","category":"flags","emoji_order":"1092","aliases":[":ec:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_eg":{"unicode":"1f1ea-1f1ec","unicode_alternates":"","name":"egypt","shortname":":flag_eg:","category":"flags","emoji_order":"1093","aliases":[":eg:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_sv":{"unicode":"1f1f8-1f1fb","unicode_alternates":"","name":"el salvador","shortname":":flag_sv:","category":"flags","emoji_order":"1094","aliases":[":sv:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_gq":{"unicode":"1f1ec-1f1f6","unicode_alternates":"","name":"equatorial guinea","shortname":":flag_gq:","category":"flags","emoji_order":"1095","aliases":[":gq:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_er":{"unicode":"1f1ea-1f1f7","unicode_alternates":"","name":"eritrea","shortname":":flag_er:","category":"flags","emoji_order":"1096","aliases":[":er:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ee":{"unicode":"1f1ea-1f1ea","unicode_alternates":"","name":"estonia","shortname":":flag_ee:","category":"flags","emoji_order":"1097","aliases":[":ee:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_et":{"unicode":"1f1ea-1f1f9","unicode_alternates":"","name":"ethiopia","shortname":":flag_et:","category":"flags","emoji_order":"1098","aliases":[":et:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_fk":{"unicode":"1f1eb-1f1f0","unicode_alternates":"","name":"falkland islands","shortname":":flag_fk:","category":"flags","emoji_order":"1099","aliases":[":fk:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_fo":{"unicode":"1f1eb-1f1f4","unicode_alternates":"","name":"faroe islands","shortname":":flag_fo:","category":"flags","emoji_order":"1100","aliases":[":fo:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_fj":{"unicode":"1f1eb-1f1ef","unicode_alternates":"","name":"fiji","shortname":":flag_fj:","category":"flags","emoji_order":"1101","aliases":[":fj:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_fi":{"unicode":"1f1eb-1f1ee","unicode_alternates":"","name":"finland","shortname":":flag_fi:","category":"flags","emoji_order":"1102","aliases":[":fi:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_fr":{"unicode":"1f1eb-1f1f7","unicode_alternates":"","name":"france","shortname":":flag_fr:","category":"flags","emoji_order":"1103","aliases":[":fr:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_pf":{"unicode":"1f1f5-1f1eb","unicode_alternates":"","name":"french polynesia","shortname":":flag_pf:","category":"flags","emoji_order":"1104","aliases":[":pf:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ga":{"unicode":"1f1ec-1f1e6","unicode_alternates":"","name":"gabon","shortname":":flag_ga:","category":"flags","emoji_order":"1105","aliases":[":ga:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_gm":{"unicode":"1f1ec-1f1f2","unicode_alternates":"","name":"the gambia","shortname":":flag_gm:","category":"flags","emoji_order":"1106","aliases":[":gm:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ge":{"unicode":"1f1ec-1f1ea","unicode_alternates":"","name":"georgia","shortname":":flag_ge:","category":"flags","emoji_order":"1107","aliases":[":ge:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_de":{"unicode":"1f1e9-1f1ea","unicode_alternates":"","name":"germany","shortname":":flag_de:","category":"flags","emoji_order":"1108","aliases":[":de:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_gh":{"unicode":"1f1ec-1f1ed","unicode_alternates":"","name":"ghana","shortname":":flag_gh:","category":"flags","emoji_order":"1109","aliases":[":gh:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_gi":{"unicode":"1f1ec-1f1ee","unicode_alternates":"","name":"gibraltar","shortname":":flag_gi:","category":"flags","emoji_order":"1110","aliases":[":gi:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_gr":{"unicode":"1f1ec-1f1f7","unicode_alternates":"","name":"greece","shortname":":flag_gr:","category":"flags","emoji_order":"1111","aliases":[":gr:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_gl":{"unicode":"1f1ec-1f1f1","unicode_alternates":"","name":"greenland","shortname":":flag_gl:","category":"flags","emoji_order":"1112","aliases":[":gl:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_gd":{"unicode":"1f1ec-1f1e9","unicode_alternates":"","name":"grenada","shortname":":flag_gd:","category":"flags","emoji_order":"1113","aliases":[":gd:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_gu":{"unicode":"1f1ec-1f1fa","unicode_alternates":"","name":"guam","shortname":":flag_gu:","category":"flags","emoji_order":"1114","aliases":[":gu:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_gt":{"unicode":"1f1ec-1f1f9","unicode_alternates":"","name":"guatemala","shortname":":flag_gt:","category":"flags","emoji_order":"1115","aliases":[":gt:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_gn":{"unicode":"1f1ec-1f1f3","unicode_alternates":"","name":"guinea","shortname":":flag_gn:","category":"flags","emoji_order":"1116","aliases":[":gn:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_gw":{"unicode":"1f1ec-1f1fc","unicode_alternates":"","name":"guinea-bissau","shortname":":flag_gw:","category":"flags","emoji_order":"1117","aliases":[":gw:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_gy":{"unicode":"1f1ec-1f1fe","unicode_alternates":"","name":"guyana","shortname":":flag_gy:","category":"flags","emoji_order":"1118","aliases":[":gy:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ht":{"unicode":"1f1ed-1f1f9","unicode_alternates":"","name":"haiti","shortname":":flag_ht:","category":"flags","emoji_order":"1119","aliases":[":ht:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_hn":{"unicode":"1f1ed-1f1f3","unicode_alternates":"","name":"honduras","shortname":":flag_hn:","category":"flags","emoji_order":"1120","aliases":[":hn:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_hk":{"unicode":"1f1ed-1f1f0","unicode_alternates":"","name":"hong kong","shortname":":flag_hk:","category":"flags","emoji_order":"1121","aliases":[":hk:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_hu":{"unicode":"1f1ed-1f1fa","unicode_alternates":"","name":"hungary","shortname":":flag_hu:","category":"flags","emoji_order":"1122","aliases":[":hu:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_is":{"unicode":"1f1ee-1f1f8","unicode_alternates":"","name":"iceland","shortname":":flag_is:","category":"flags","emoji_order":"1123","aliases":[":is:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_in":{"unicode":"1f1ee-1f1f3","unicode_alternates":"","name":"india","shortname":":flag_in:","category":"flags","emoji_order":"1124","aliases":[":in:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_id":{"unicode":"1f1ee-1f1e9","unicode_alternates":"","name":"indonesia","shortname":":flag_id:","category":"flags","emoji_order":"1125","aliases":[":indonesia:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ir":{"unicode":"1f1ee-1f1f7","unicode_alternates":"","name":"iran","shortname":":flag_ir:","category":"flags","emoji_order":"1126","aliases":[":ir:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_iq":{"unicode":"1f1ee-1f1f6","unicode_alternates":"","name":"iraq","shortname":":flag_iq:","category":"flags","emoji_order":"1127","aliases":[":iq:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ie":{"unicode":"1f1ee-1f1ea","unicode_alternates":"","name":"ireland","shortname":":flag_ie:","category":"flags","emoji_order":"1128","aliases":[":ie:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_il":{"unicode":"1f1ee-1f1f1","unicode_alternates":"","name":"israel","shortname":":flag_il:","category":"flags","emoji_order":"1129","aliases":[":il:"],"aliases_ascii":[],"keywords":["jew","country","flag","flag"]},"flag_it":{"unicode":"1f1ee-1f1f9","unicode_alternates":"","name":"italy","shortname":":flag_it:","category":"flags","emoji_order":"1130","aliases":[":it:"],"aliases_ascii":[],"keywords":["italian","country","flag","flag"]},"flag_ci":{"unicode":"1f1e8-1f1ee","unicode_alternates":"","name":"c\u00f4te d\u2019ivoire","shortname":":flag_ci:","category":"flags","emoji_order":"1131","aliases":[":ci:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_jm":{"unicode":"1f1ef-1f1f2","unicode_alternates":"","name":"jamaica","shortname":":flag_jm:","category":"flags","emoji_order":"1132","aliases":[":jm:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_jp":{"unicode":"1f1ef-1f1f5","unicode_alternates":"","name":"japan","shortname":":flag_jp:","category":"flags","emoji_order":"1133","aliases":[":jp:"],"aliases_ascii":[],"keywords":["japan","country","flag","flag"]},"flag_je":{"unicode":"1f1ef-1f1ea","unicode_alternates":"","name":"jersey","shortname":":flag_je:","category":"flags","emoji_order":"1134","aliases":[":je:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_jo":{"unicode":"1f1ef-1f1f4","unicode_alternates":"","name":"jordan","shortname":":flag_jo:","category":"flags","emoji_order":"1135","aliases":[":jo:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_kz":{"unicode":"1f1f0-1f1ff","unicode_alternates":"","name":"kazakhstan","shortname":":flag_kz:","category":"flags","emoji_order":"1136","aliases":[":kz:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ke":{"unicode":"1f1f0-1f1ea","unicode_alternates":"","name":"kenya","shortname":":flag_ke:","category":"flags","emoji_order":"1137","aliases":[":ke:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ki":{"unicode":"1f1f0-1f1ee","unicode_alternates":"","name":"kiribati","shortname":":flag_ki:","category":"flags","emoji_order":"1138","aliases":[":ki:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_xk":{"unicode":"1f1fd-1f1f0","unicode_alternates":"","name":"kosovo","shortname":":flag_xk:","category":"flags","emoji_order":"1139","aliases":[":xk:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_kw":{"unicode":"1f1f0-1f1fc","unicode_alternates":"","name":"kuwait","shortname":":flag_kw:","category":"flags","emoji_order":"1140","aliases":[":kw:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_kg":{"unicode":"1f1f0-1f1ec","unicode_alternates":"","name":"kyrgyzstan","shortname":":flag_kg:","category":"flags","emoji_order":"1141","aliases":[":kg:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_la":{"unicode":"1f1f1-1f1e6","unicode_alternates":"","name":"laos","shortname":":flag_la:","category":"flags","emoji_order":"1142","aliases":[":la:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_lv":{"unicode":"1f1f1-1f1fb","unicode_alternates":"","name":"latvia","shortname":":flag_lv:","category":"flags","emoji_order":"1143","aliases":[":lv:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_lb":{"unicode":"1f1f1-1f1e7","unicode_alternates":"","name":"lebanon","shortname":":flag_lb:","category":"flags","emoji_order":"1144","aliases":[":lb:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ls":{"unicode":"1f1f1-1f1f8","unicode_alternates":"","name":"lesotho","shortname":":flag_ls:","category":"flags","emoji_order":"1145","aliases":[":ls:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_lr":{"unicode":"1f1f1-1f1f7","unicode_alternates":"","name":"liberia","shortname":":flag_lr:","category":"flags","emoji_order":"1146","aliases":[":lr:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ly":{"unicode":"1f1f1-1f1fe","unicode_alternates":"","name":"libya","shortname":":flag_ly:","category":"flags","emoji_order":"1147","aliases":[":ly:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_li":{"unicode":"1f1f1-1f1ee","unicode_alternates":"","name":"liechtenstein","shortname":":flag_li:","category":"flags","emoji_order":"1148","aliases":[":li:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_lt":{"unicode":"1f1f1-1f1f9","unicode_alternates":"","name":"lithuania","shortname":":flag_lt:","category":"flags","emoji_order":"1149","aliases":[":lt:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_lu":{"unicode":"1f1f1-1f1fa","unicode_alternates":"","name":"luxembourg","shortname":":flag_lu:","category":"flags","emoji_order":"1150","aliases":[":lu:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_mo":{"unicode":"1f1f2-1f1f4","unicode_alternates":"","name":"macau","shortname":":flag_mo:","category":"flags","emoji_order":"1151","aliases":[":mo:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_mk":{"unicode":"1f1f2-1f1f0","unicode_alternates":"","name":"macedonia","shortname":":flag_mk:","category":"flags","emoji_order":"1152","aliases":[":mk:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_mg":{"unicode":"1f1f2-1f1ec","unicode_alternates":"","name":"madagascar","shortname":":flag_mg:","category":"flags","emoji_order":"1153","aliases":[":mg:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_mw":{"unicode":"1f1f2-1f1fc","unicode_alternates":"","name":"malawi","shortname":":flag_mw:","category":"flags","emoji_order":"1154","aliases":[":mw:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_my":{"unicode":"1f1f2-1f1fe","unicode_alternates":"","name":"malaysia","shortname":":flag_my:","category":"flags","emoji_order":"1155","aliases":[":my:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_mv":{"unicode":"1f1f2-1f1fb","unicode_alternates":"","name":"maldives","shortname":":flag_mv:","category":"flags","emoji_order":"1156","aliases":[":mv:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ml":{"unicode":"1f1f2-1f1f1","unicode_alternates":"","name":"mali","shortname":":flag_ml:","category":"flags","emoji_order":"1157","aliases":[":ml:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_mt":{"unicode":"1f1f2-1f1f9","unicode_alternates":"","name":"malta","shortname":":flag_mt:","category":"flags","emoji_order":"1158","aliases":[":mt:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_mh":{"unicode":"1f1f2-1f1ed","unicode_alternates":"","name":"the marshall islands","shortname":":flag_mh:","category":"flags","emoji_order":"1159","aliases":[":mh:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_mr":{"unicode":"1f1f2-1f1f7","unicode_alternates":"","name":"mauritania","shortname":":flag_mr:","category":"flags","emoji_order":"1160","aliases":[":mr:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_mu":{"unicode":"1f1f2-1f1fa","unicode_alternates":"","name":"mauritius","shortname":":flag_mu:","category":"flags","emoji_order":"1161","aliases":[":mu:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_mx":{"unicode":"1f1f2-1f1fd","unicode_alternates":"","name":"mexico","shortname":":flag_mx:","category":"flags","emoji_order":"1162","aliases":[":mx:"],"aliases_ascii":[],"keywords":["country","mexican","flag","flag"]},"flag_fm":{"unicode":"1f1eb-1f1f2","unicode_alternates":"","name":"micronesia","shortname":":flag_fm:","category":"flags","emoji_order":"1163","aliases":[":fm:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_md":{"unicode":"1f1f2-1f1e9","unicode_alternates":"","name":"moldova","shortname":":flag_md:","category":"flags","emoji_order":"1164","aliases":[":md:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_mc":{"unicode":"1f1f2-1f1e8","unicode_alternates":"","name":"monaco","shortname":":flag_mc:","category":"flags","emoji_order":"1165","aliases":[":mc:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_mn":{"unicode":"1f1f2-1f1f3","unicode_alternates":"","name":"mongolia","shortname":":flag_mn:","category":"flags","emoji_order":"1166","aliases":[":mn:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_me":{"unicode":"1f1f2-1f1ea","unicode_alternates":"","name":"montenegro","shortname":":flag_me:","category":"flags","emoji_order":"1167","aliases":[":me:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ms":{"unicode":"1f1f2-1f1f8","unicode_alternates":"","name":"montserrat","shortname":":flag_ms:","category":"flags","emoji_order":"1168","aliases":[":ms:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ma":{"unicode":"1f1f2-1f1e6","unicode_alternates":"","name":"morocco","shortname":":flag_ma:","category":"flags","emoji_order":"1169","aliases":[":ma:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_mz":{"unicode":"1f1f2-1f1ff","unicode_alternates":"","name":"mozambique","shortname":":flag_mz:","category":"flags","emoji_order":"1170","aliases":[":mz:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_mm":{"unicode":"1f1f2-1f1f2","unicode_alternates":"","name":"myanmar","shortname":":flag_mm:","category":"flags","emoji_order":"1171","aliases":[":mm:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_na":{"unicode":"1f1f3-1f1e6","unicode_alternates":"","name":"namibia","shortname":":flag_na:","category":"flags","emoji_order":"1172","aliases":[":na:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_nr":{"unicode":"1f1f3-1f1f7","unicode_alternates":"","name":"nauru","shortname":":flag_nr:","category":"flags","emoji_order":"1173","aliases":[":nr:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_np":{"unicode":"1f1f3-1f1f5","unicode_alternates":"","name":"nepal","shortname":":flag_np:","category":"flags","emoji_order":"1174","aliases":[":np:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_nl":{"unicode":"1f1f3-1f1f1","unicode_alternates":"","name":"the netherlands","shortname":":flag_nl:","category":"flags","emoji_order":"1175","aliases":[":nl:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_nc":{"unicode":"1f1f3-1f1e8","unicode_alternates":"","name":"new caledonia","shortname":":flag_nc:","category":"flags","emoji_order":"1176","aliases":[":nc:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_nz":{"unicode":"1f1f3-1f1ff","unicode_alternates":"","name":"new zealand","shortname":":flag_nz:","category":"flags","emoji_order":"1177","aliases":[":nz:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ni":{"unicode":"1f1f3-1f1ee","unicode_alternates":"","name":"nicaragua","shortname":":flag_ni:","category":"flags","emoji_order":"1178","aliases":[":ni:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ne":{"unicode":"1f1f3-1f1ea","unicode_alternates":"","name":"niger","shortname":":flag_ne:","category":"flags","emoji_order":"1179","aliases":[":ne:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ng":{"unicode":"1f1f3-1f1ec","unicode_alternates":"","name":"nigeria","shortname":":flag_ng:","category":"flags","emoji_order":"1180","aliases":[":nigeria:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_nu":{"unicode":"1f1f3-1f1fa","unicode_alternates":"","name":"niue","shortname":":flag_nu:","category":"flags","emoji_order":"1181","aliases":[":nu:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_kp":{"unicode":"1f1f0-1f1f5","unicode_alternates":"","name":"north korea","shortname":":flag_kp:","category":"flags","emoji_order":"1182","aliases":[":kp:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_no":{"unicode":"1f1f3-1f1f4","unicode_alternates":"","name":"norway","shortname":":flag_no:","category":"flags","emoji_order":"1183","aliases":[":no:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_om":{"unicode":"1f1f4-1f1f2","unicode_alternates":"","name":"oman","shortname":":flag_om:","category":"flags","emoji_order":"1184","aliases":[":om:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_pk":{"unicode":"1f1f5-1f1f0","unicode_alternates":"","name":"pakistan","shortname":":flag_pk:","category":"flags","emoji_order":"1185","aliases":[":pk:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_pw":{"unicode":"1f1f5-1f1fc","unicode_alternates":"","name":"palau","shortname":":flag_pw:","category":"flags","emoji_order":"1186","aliases":[":pw:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ps":{"unicode":"1f1f5-1f1f8","unicode_alternates":"","name":"palestinian authority","shortname":":flag_ps:","category":"flags","emoji_order":"1187","aliases":[":ps:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_pa":{"unicode":"1f1f5-1f1e6","unicode_alternates":"","name":"panama","shortname":":flag_pa:","category":"flags","emoji_order":"1188","aliases":[":pa:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_pg":{"unicode":"1f1f5-1f1ec","unicode_alternates":"","name":"papua new guinea","shortname":":flag_pg:","category":"flags","emoji_order":"1189","aliases":[":pg:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_py":{"unicode":"1f1f5-1f1fe","unicode_alternates":"","name":"paraguay","shortname":":flag_py:","category":"flags","emoji_order":"1190","aliases":[":py:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_pe":{"unicode":"1f1f5-1f1ea","unicode_alternates":"","name":"peru","shortname":":flag_pe:","category":"flags","emoji_order":"1191","aliases":[":pe:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ph":{"unicode":"1f1f5-1f1ed","unicode_alternates":"","name":"the philippines","shortname":":flag_ph:","category":"flags","emoji_order":"1192","aliases":[":ph:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_pl":{"unicode":"1f1f5-1f1f1","unicode_alternates":"","name":"poland","shortname":":flag_pl:","category":"flags","emoji_order":"1193","aliases":[":pl:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_pt":{"unicode":"1f1f5-1f1f9","unicode_alternates":"","name":"portugal","shortname":":flag_pt:","category":"flags","emoji_order":"1194","aliases":[":pt:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_pr":{"unicode":"1f1f5-1f1f7","unicode_alternates":"","name":"puerto rico","shortname":":flag_pr:","category":"flags","emoji_order":"1195","aliases":[":pr:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_qa":{"unicode":"1f1f6-1f1e6","unicode_alternates":"","name":"qatar","shortname":":flag_qa:","category":"flags","emoji_order":"1196","aliases":[":qa:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ro":{"unicode":"1f1f7-1f1f4","unicode_alternates":"","name":"romania","shortname":":flag_ro:","category":"flags","emoji_order":"1197","aliases":[":ro:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ru":{"unicode":"1f1f7-1f1fa","unicode_alternates":"","name":"russia","shortname":":flag_ru:","category":"flags","emoji_order":"1198","aliases":[":ru:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_rw":{"unicode":"1f1f7-1f1fc","unicode_alternates":"","name":"rwanda","shortname":":flag_rw:","category":"flags","emoji_order":"1199","aliases":[":rw:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_sh":{"unicode":"1f1f8-1f1ed","unicode_alternates":"","name":"saint helena","shortname":":flag_sh:","category":"flags","emoji_order":"1200","aliases":[":sh:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_kn":{"unicode":"1f1f0-1f1f3","unicode_alternates":"","name":"saint kitts and nevis","shortname":":flag_kn:","category":"flags","emoji_order":"1201","aliases":[":kn:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_lc":{"unicode":"1f1f1-1f1e8","unicode_alternates":"","name":"saint lucia","shortname":":flag_lc:","category":"flags","emoji_order":"1202","aliases":[":lc:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_vc":{"unicode":"1f1fb-1f1e8","unicode_alternates":"","name":"saint vincent and the grenadines","shortname":":flag_vc:","category":"flags","emoji_order":"1203","aliases":[":vc:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ws":{"unicode":"1f1fc-1f1f8","unicode_alternates":"","name":"samoa","shortname":":flag_ws:","category":"flags","emoji_order":"1204","aliases":[":ws:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_sm":{"unicode":"1f1f8-1f1f2","unicode_alternates":"","name":"san marino","shortname":":flag_sm:","category":"flags","emoji_order":"1205","aliases":[":sm:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_st":{"unicode":"1f1f8-1f1f9","unicode_alternates":"","name":"s\u00e3o tom\u00e9 and pr\u00edncipe","shortname":":flag_st:","category":"flags","emoji_order":"1206","aliases":[":st:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_sa":{"unicode":"1f1f8-1f1e6","unicode_alternates":"","name":"saudi arabia","shortname":":flag_sa:","category":"flags","emoji_order":"1207","aliases":[":saudiarabia:",":saudi:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_sn":{"unicode":"1f1f8-1f1f3","unicode_alternates":"","name":"senegal","shortname":":flag_sn:","category":"flags","emoji_order":"1208","aliases":[":sn:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_rs":{"unicode":"1f1f7-1f1f8","unicode_alternates":"","name":"serbia","shortname":":flag_rs:","category":"flags","emoji_order":"1209","aliases":[":rs:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_sc":{"unicode":"1f1f8-1f1e8","unicode_alternates":"","name":"the seychelles","shortname":":flag_sc:","category":"flags","emoji_order":"1210","aliases":[":sc:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_sl":{"unicode":"1f1f8-1f1f1","unicode_alternates":"","name":"sierra leone","shortname":":flag_sl:","category":"flags","emoji_order":"1211","aliases":[":sl:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_sg":{"unicode":"1f1f8-1f1ec","unicode_alternates":"","name":"singapore","shortname":":flag_sg:","category":"flags","emoji_order":"1212","aliases":[":sg:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_sk":{"unicode":"1f1f8-1f1f0","unicode_alternates":"","name":"slovakia","shortname":":flag_sk:","category":"flags","emoji_order":"1213","aliases":[":sk:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_si":{"unicode":"1f1f8-1f1ee","unicode_alternates":"","name":"slovenia","shortname":":flag_si:","category":"flags","emoji_order":"1214","aliases":[":si:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_sb":{"unicode":"1f1f8-1f1e7","unicode_alternates":"","name":"the solomon islands","shortname":":flag_sb:","category":"flags","emoji_order":"1215","aliases":[":sb:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_so":{"unicode":"1f1f8-1f1f4","unicode_alternates":"","name":"somalia","shortname":":flag_so:","category":"flags","emoji_order":"1216","aliases":[":so:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_za":{"unicode":"1f1ff-1f1e6","unicode_alternates":"","name":"south africa","shortname":":flag_za:","category":"flags","emoji_order":"1217","aliases":[":za:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_kr":{"unicode":"1f1f0-1f1f7","unicode_alternates":"","name":"korea","shortname":":flag_kr:","category":"flags","emoji_order":"1218","aliases":[":kr:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_es":{"unicode":"1f1ea-1f1f8","unicode_alternates":"","name":"spain","shortname":":flag_es:","category":"flags","emoji_order":"1219","aliases":[":es:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_lk":{"unicode":"1f1f1-1f1f0","unicode_alternates":"","name":"sri lanka","shortname":":flag_lk:","category":"flags","emoji_order":"1220","aliases":[":lk:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_sd":{"unicode":"1f1f8-1f1e9","unicode_alternates":"","name":"sudan","shortname":":flag_sd:","category":"flags","emoji_order":"1221","aliases":[":sd:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_sr":{"unicode":"1f1f8-1f1f7","unicode_alternates":"","name":"suriname","shortname":":flag_sr:","category":"flags","emoji_order":"1222","aliases":[":sr:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_sz":{"unicode":"1f1f8-1f1ff","unicode_alternates":"","name":"swaziland","shortname":":flag_sz:","category":"flags","emoji_order":"1223","aliases":[":sz:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_se":{"unicode":"1f1f8-1f1ea","unicode_alternates":"","name":"sweden","shortname":":flag_se:","category":"flags","emoji_order":"1224","aliases":[":se:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ch":{"unicode":"1f1e8-1f1ed","unicode_alternates":"","name":"switzerland","shortname":":flag_ch:","category":"flags","emoji_order":"1225","aliases":[":ch:"],"aliases_ascii":[],"keywords":["country","neutral","flag","flag"]},"flag_sy":{"unicode":"1f1f8-1f1fe","unicode_alternates":"","name":"syria","shortname":":flag_sy:","category":"flags","emoji_order":"1226","aliases":[":sy:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_tw":{"unicode":"1f1f9-1f1fc","unicode_alternates":"","name":"the republic of china","shortname":":flag_tw:","category":"flags","emoji_order":"1227","aliases":[":tw:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_tj":{"unicode":"1f1f9-1f1ef","unicode_alternates":"","name":"tajikistan","shortname":":flag_tj:","category":"flags","emoji_order":"1228","aliases":[":tj:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_tz":{"unicode":"1f1f9-1f1ff","unicode_alternates":"","name":"tanzania","shortname":":flag_tz:","category":"flags","emoji_order":"1229","aliases":[":tz:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_th":{"unicode":"1f1f9-1f1ed","unicode_alternates":"","name":"thailand","shortname":":flag_th:","category":"flags","emoji_order":"1230","aliases":[":th:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_tl":{"unicode":"1f1f9-1f1f1","unicode_alternates":"","name":"timor-leste","shortname":":flag_tl:","category":"flags","emoji_order":"1231","aliases":[":tl:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_tg":{"unicode":"1f1f9-1f1ec","unicode_alternates":"","name":"togo","shortname":":flag_tg:","category":"flags","emoji_order":"1232","aliases":[":tg:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_to":{"unicode":"1f1f9-1f1f4","unicode_alternates":"","name":"tonga","shortname":":flag_to:","category":"flags","emoji_order":"1233","aliases":[":to:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_tt":{"unicode":"1f1f9-1f1f9","unicode_alternates":"","name":"trinidad and tobago","shortname":":flag_tt:","category":"flags","emoji_order":"1234","aliases":[":tt:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_tn":{"unicode":"1f1f9-1f1f3","unicode_alternates":"","name":"tunisia","shortname":":flag_tn:","category":"flags","emoji_order":"1235","aliases":[":tn:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_tr":{"unicode":"1f1f9-1f1f7","unicode_alternates":"","name":"turkey","shortname":":flag_tr:","category":"flags","emoji_order":"1236","aliases":[":tr:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_tm":{"unicode":"1f1f9-1f1f2","unicode_alternates":"","name":"turkmenistan","shortname":":flag_tm:","category":"flags","emoji_order":"1237","aliases":[":turkmenistan:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_tv":{"unicode":"1f1f9-1f1fb","unicode_alternates":"","name":"tuvalu","shortname":":flag_tv:","category":"flags","emoji_order":"1238","aliases":[":tuvalu:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ug":{"unicode":"1f1fa-1f1ec","unicode_alternates":"","name":"uganda","shortname":":flag_ug:","category":"flags","emoji_order":"1239","aliases":[":ug:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ua":{"unicode":"1f1fa-1f1e6","unicode_alternates":"","name":"ukraine","shortname":":flag_ua:","category":"flags","emoji_order":"1240","aliases":[":ua:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ae":{"unicode":"1f1e6-1f1ea","unicode_alternates":"","name":"the united arab emirates","shortname":":flag_ae:","category":"flags","emoji_order":"1241","aliases":[":ae:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_gb":{"unicode":"1f1ec-1f1e7","unicode_alternates":"","name":"great britain","shortname":":flag_gb:","category":"flags","emoji_order":"1242","aliases":[":gb:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_us":{"unicode":"1f1fa-1f1f8","unicode_alternates":"","name":"united states","shortname":":flag_us:","category":"flags","emoji_order":"1243","aliases":[":us:"],"aliases_ascii":[],"keywords":["america","country","flag","flag"]},"flag_vi":{"unicode":"1f1fb-1f1ee","unicode_alternates":"","name":"u.s. virgin islands","shortname":":flag_vi:","category":"flags","emoji_order":"1244","aliases":[":vi:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_uy":{"unicode":"1f1fa-1f1fe","unicode_alternates":"","name":"uruguay","shortname":":flag_uy:","category":"flags","emoji_order":"1245","aliases":[":uy:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_uz":{"unicode":"1f1fa-1f1ff","unicode_alternates":"","name":"uzbekistan","shortname":":flag_uz:","category":"flags","emoji_order":"1246","aliases":[":uz:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_vu":{"unicode":"1f1fb-1f1fa","unicode_alternates":"","name":"vanuatu","shortname":":flag_vu:","category":"flags","emoji_order":"1247","aliases":[":vu:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_va":{"unicode":"1f1fb-1f1e6","unicode_alternates":"","name":"the vatican city","shortname":":flag_va:","category":"flags","emoji_order":"1248","aliases":[":va:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ve":{"unicode":"1f1fb-1f1ea","unicode_alternates":"","name":"venezuela","shortname":":flag_ve:","category":"flags","emoji_order":"1249","aliases":[":ve:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_vn":{"unicode":"1f1fb-1f1f3","unicode_alternates":"","name":"vietnam","shortname":":flag_vn:","category":"flags","emoji_order":"1250","aliases":[":vn:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_wf":{"unicode":"1f1fc-1f1eb","unicode_alternates":"","name":"wallis and futuna","shortname":":flag_wf:","category":"flags","emoji_order":"1251","aliases":[":wf:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_eh":{"unicode":"1f1ea-1f1ed","unicode_alternates":"","name":"western sahara","shortname":":flag_eh:","category":"flags","emoji_order":"1252","aliases":[":eh:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ye":{"unicode":"1f1fe-1f1ea","unicode_alternates":"","name":"yemen","shortname":":flag_ye:","category":"flags","emoji_order":"1253","aliases":[":ye:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_zm":{"unicode":"1f1ff-1f1f2","unicode_alternates":"","name":"zambia","shortname":":flag_zm:","category":"flags","emoji_order":"1254","aliases":[":zm:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_zw":{"unicode":"1f1ff-1f1fc","unicode_alternates":"","name":"zimbabwe","shortname":":flag_zw:","category":"flags","emoji_order":"1255","aliases":[":zw:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_re":{"unicode":"1f1f7-1f1ea","unicode_alternates":"","name":"r\u00e9union","shortname":":flag_re:","category":"flags","emoji_order":"1256","aliases":[":re:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ax":{"unicode":"1f1e6-1f1fd","unicode_alternates":"","name":"\u00e5land islands","shortname":":flag_ax:","category":"flags","emoji_order":"1257","aliases":[":ax:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ta":{"unicode":"1f1f9-1f1e6","unicode_alternates":"","name":"tristan da cunha","shortname":":flag_ta:","category":"flags","emoji_order":"1258","aliases":[":ta:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_io":{"unicode":"1f1ee-1f1f4","unicode_alternates":"","name":"british indian ocean territory","shortname":":flag_io:","category":"flags","emoji_order":"1259","aliases":[":io:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_bq":{"unicode":"1f1e7-1f1f6","unicode_alternates":"","name":"caribbean netherlands","shortname":":flag_bq:","category":"flags","emoji_order":"1260","aliases":[":bq:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_cx":{"unicode":"1f1e8-1f1fd","unicode_alternates":"","name":"christmas island","shortname":":flag_cx:","category":"flags","emoji_order":"1261","aliases":[":cx:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_cc":{"unicode":"1f1e8-1f1e8","unicode_alternates":"","name":"cocos (keeling) islands","shortname":":flag_cc:","category":"flags","emoji_order":"1262","aliases":[":cc:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_gg":{"unicode":"1f1ec-1f1ec","unicode_alternates":"","name":"guernsey","shortname":":flag_gg:","category":"flags","emoji_order":"1263","aliases":[":gg:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_im":{"unicode":"1f1ee-1f1f2","unicode_alternates":"","name":"isle of man","shortname":":flag_im:","category":"flags","emoji_order":"1264","aliases":[":im:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_yt":{"unicode":"1f1fe-1f1f9","unicode_alternates":"","name":"mayotte","shortname":":flag_yt:","category":"flags","emoji_order":"1265","aliases":[":yt:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_nf":{"unicode":"1f1f3-1f1eb","unicode_alternates":"","name":"norfolk island","shortname":":flag_nf:","category":"flags","emoji_order":"1266","aliases":[":nf:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_pn":{"unicode":"1f1f5-1f1f3","unicode_alternates":"","name":"pitcairn","shortname":":flag_pn:","category":"flags","emoji_order":"1267","aliases":[":pn:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_bl":{"unicode":"1f1e7-1f1f1","unicode_alternates":"","name":"saint barth\u00e9lemy","shortname":":flag_bl:","category":"flags","emoji_order":"1268","aliases":[":bl:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_pm":{"unicode":"1f1f5-1f1f2","unicode_alternates":"","name":"saint pierre and miquelon","shortname":":flag_pm:","category":"flags","emoji_order":"1269","aliases":[":pm:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_gs":{"unicode":"1f1ec-1f1f8","unicode_alternates":"","name":"south georgia","shortname":":flag_gs:","category":"flags","emoji_order":"1270","aliases":[":gs:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_tk":{"unicode":"1f1f9-1f1f0","unicode_alternates":"","name":"tokelau","shortname":":flag_tk:","category":"flags","emoji_order":"1271","aliases":[":tk:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_bv":{"unicode":"1f1e7-1f1fb","unicode_alternates":"","name":"bouvet island","shortname":":flag_bv:","category":"flags","emoji_order":"1272","aliases":[":bv:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_hm":{"unicode":"1f1ed-1f1f2","unicode_alternates":"","name":"heard island and mcdonald islands","shortname":":flag_hm:","category":"flags","emoji_order":"1273","aliases":[":hm:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_sj":{"unicode":"1f1f8-1f1ef","unicode_alternates":"","name":"svalbard and jan mayen","shortname":":flag_sj:","category":"flags","emoji_order":"1274","aliases":[":sj:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_um":{"unicode":"1f1fa-1f1f2","unicode_alternates":"","name":"united states minor outlying islands","shortname":":flag_um:","category":"flags","emoji_order":"1275","aliases":[":um:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ic":{"unicode":"1f1ee-1f1e8","unicode_alternates":"","name":"canary islands","shortname":":flag_ic:","category":"flags","emoji_order":"1276","aliases":[":ic:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ea":{"unicode":"1f1ea-1f1e6","unicode_alternates":"","name":"ceuta, melilla","shortname":":flag_ea:","category":"flags","emoji_order":"1277","aliases":[":ea:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_cp":{"unicode":"1f1e8-1f1f5","unicode_alternates":"","name":"clipperton island","shortname":":flag_cp:","category":"flags","emoji_order":"1278","aliases":[":cp:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_dg":{"unicode":"1f1e9-1f1ec","unicode_alternates":"","name":"diego garcia","shortname":":flag_dg:","category":"flags","emoji_order":"1279","aliases":[":dg:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_as":{"unicode":"1f1e6-1f1f8","unicode_alternates":"","name":"american samoa","shortname":":flag_as:","category":"flags","emoji_order":"1280","aliases":[":as:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_aq":{"unicode":"1f1e6-1f1f6","unicode_alternates":"","name":"antarctica","shortname":":flag_aq:","category":"flags","emoji_order":"1281","aliases":[":aq:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_vg":{"unicode":"1f1fb-1f1ec","unicode_alternates":"","name":"british virgin islands","shortname":":flag_vg:","category":"flags","emoji_order":"1282","aliases":[":vg:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ck":{"unicode":"1f1e8-1f1f0","unicode_alternates":"","name":"cook islands","shortname":":flag_ck:","category":"flags","emoji_order":"1283","aliases":[":ck:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_cw":{"unicode":"1f1e8-1f1fc","unicode_alternates":"","name":"cura\u00e7ao","shortname":":flag_cw:","category":"flags","emoji_order":"1284","aliases":[":cw:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_eu":{"unicode":"1f1ea-1f1fa","unicode_alternates":"","name":"european union","shortname":":flag_eu:","category":"flags","emoji_order":"1285","aliases":[":eu:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_gf":{"unicode":"1f1ec-1f1eb","unicode_alternates":"","name":"french guiana","shortname":":flag_gf:","category":"flags","emoji_order":"1286","aliases":[":gf:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_tf":{"unicode":"1f1f9-1f1eb","unicode_alternates":"","name":"french southern territories","shortname":":flag_tf:","category":"flags","emoji_order":"1287","aliases":[":tf:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_gp":{"unicode":"1f1ec-1f1f5","unicode_alternates":"","name":"guadeloupe","shortname":":flag_gp:","category":"flags","emoji_order":"1288","aliases":[":gp:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_mq":{"unicode":"1f1f2-1f1f6","unicode_alternates":"","name":"martinique","shortname":":flag_mq:","category":"flags","emoji_order":"1289","aliases":[":mq:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_mp":{"unicode":"1f1f2-1f1f5","unicode_alternates":"","name":"northern mariana islands","shortname":":flag_mp:","category":"flags","emoji_order":"1290","aliases":[":mp:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_sx":{"unicode":"1f1f8-1f1fd","unicode_alternates":"","name":"sint maarten","shortname":":flag_sx:","category":"flags","emoji_order":"1291","aliases":[":sx:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_ss":{"unicode":"1f1f8-1f1f8","unicode_alternates":"","name":"south sudan","shortname":":flag_ss:","category":"flags","emoji_order":"1292","aliases":[":ss:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_tc":{"unicode":"1f1f9-1f1e8","unicode_alternates":"","name":"turks and caicos islands","shortname":":flag_tc:","category":"flags","emoji_order":"1293","aliases":[":tc:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"flag_mf":{"unicode":"1f1f2-1f1eb","unicode_alternates":"","name":"saint martin","shortname":":flag_mf:","category":"flags","emoji_order":"1294","aliases":[":mf:"],"aliases_ascii":[],"keywords":["country","flag","flag"]},"raised_hands_tone1":{"unicode":"1f64c-1f3fb","unicode_alternates":"","name":"person raising both hands in celebration tone 1","shortname":":raised_hands_tone1:","category":"people","emoji_order":"1295","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hands_tone2":{"unicode":"1f64c-1f3fc","unicode_alternates":"","name":"person raising both hands in celebration tone 2","shortname":":raised_hands_tone2:","category":"people","emoji_order":"1296","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hands_tone3":{"unicode":"1f64c-1f3fd","unicode_alternates":"","name":"person raising both hands in celebration tone 3","shortname":":raised_hands_tone3:","category":"people","emoji_order":"1297","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hands_tone4":{"unicode":"1f64c-1f3fe","unicode_alternates":"","name":"person raising both hands in celebration tone 4","shortname":":raised_hands_tone4:","category":"people","emoji_order":"1298","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hands_tone5":{"unicode":"1f64c-1f3ff","unicode_alternates":"","name":"person raising both hands in celebration tone 5","shortname":":raised_hands_tone5:","category":"people","emoji_order":"1299","aliases":[],"aliases_ascii":[],"keywords":[]},"clap_tone1":{"unicode":"1f44f-1f3fb","unicode_alternates":"","name":"clapping hands sign tone 1","shortname":":clap_tone1:","category":"people","emoji_order":"1300","aliases":[],"aliases_ascii":[],"keywords":[]},"clap_tone2":{"unicode":"1f44f-1f3fc","unicode_alternates":"","name":"clapping hands sign tone 2","shortname":":clap_tone2:","category":"people","emoji_order":"1301","aliases":[],"aliases_ascii":[],"keywords":[]},"clap_tone3":{"unicode":"1f44f-1f3fd","unicode_alternates":"","name":"clapping hands sign tone 3","shortname":":clap_tone3:","category":"people","emoji_order":"1302","aliases":[],"aliases_ascii":[],"keywords":[]},"clap_tone4":{"unicode":"1f44f-1f3fe","unicode_alternates":"","name":"clapping hands sign tone 4","shortname":":clap_tone4:","category":"people","emoji_order":"1303","aliases":[],"aliases_ascii":[],"keywords":[]},"clap_tone5":{"unicode":"1f44f-1f3ff","unicode_alternates":"","name":"clapping hands sign tone 5","shortname":":clap_tone5:","category":"people","emoji_order":"1304","aliases":[],"aliases_ascii":[],"keywords":[]},"wave_tone1":{"unicode":"1f44b-1f3fb","unicode_alternates":"","name":"waving hand sign tone 1","shortname":":wave_tone1:","category":"people","emoji_order":"1305","aliases":[],"aliases_ascii":[],"keywords":[]},"wave_tone2":{"unicode":"1f44b-1f3fc","unicode_alternates":"","name":"waving hand sign tone 2","shortname":":wave_tone2:","category":"people","emoji_order":"1306","aliases":[],"aliases_ascii":[],"keywords":[]},"wave_tone3":{"unicode":"1f44b-1f3fd","unicode_alternates":"","name":"waving hand sign tone 3","shortname":":wave_tone3:","category":"people","emoji_order":"1307","aliases":[],"aliases_ascii":[],"keywords":[]},"wave_tone4":{"unicode":"1f44b-1f3fe","unicode_alternates":"","name":"waving hand sign tone 4","shortname":":wave_tone4:","category":"people","emoji_order":"1308","aliases":[],"aliases_ascii":[],"keywords":[]},"wave_tone5":{"unicode":"1f44b-1f3ff","unicode_alternates":"","name":"waving hand sign tone 5","shortname":":wave_tone5:","category":"people","emoji_order":"1309","aliases":[],"aliases_ascii":[],"keywords":[]},"thumbsup_tone1":{"unicode":"1f44d-1f3fb","unicode_alternates":"","name":"thumbs up sign tone 1","shortname":":thumbsup_tone1:","category":"people","emoji_order":"1310","aliases":[":+1_tone1:",":thumbup_tone1:"],"aliases_ascii":[],"keywords":[]},"thumbsup_tone2":{"unicode":"1f44d-1f3fc","unicode_alternates":"","name":"thumbs up sign tone 2","shortname":":thumbsup_tone2:","category":"people","emoji_order":"1311","aliases":[":+1_tone2:",":thumbup_tone2:"],"aliases_ascii":[],"keywords":[]},"thumbsup_tone3":{"unicode":"1f44d-1f3fd","unicode_alternates":"","name":"thumbs up sign tone 3","shortname":":thumbsup_tone3:","category":"people","emoji_order":"1312","aliases":[":+1_tone3:",":thumbup_tone3:"],"aliases_ascii":[],"keywords":[]},"thumbsup_tone4":{"unicode":"1f44d-1f3fe","unicode_alternates":"","name":"thumbs up sign tone 4","shortname":":thumbsup_tone4:","category":"people","emoji_order":"1313","aliases":[":+1_tone4:",":thumbup_tone4:"],"aliases_ascii":[],"keywords":[]},"thumbsup_tone5":{"unicode":"1f44d-1f3ff","unicode_alternates":"","name":"thumbs up sign tone 5","shortname":":thumbsup_tone5:","category":"people","emoji_order":"1314","aliases":[":+1_tone5:",":thumbup_tone5:"],"aliases_ascii":[],"keywords":[]},"thumbsdown_tone1":{"unicode":"1f44e-1f3fb","unicode_alternates":"","name":"thumbs down sign tone 1","shortname":":thumbsdown_tone1:","category":"people","emoji_order":"1315","aliases":[":-1_tone1:",":thumbdown_tone1:"],"aliases_ascii":[],"keywords":[]},"thumbsdown_tone2":{"unicode":"1f44e-1f3fc","unicode_alternates":"","name":"thumbs down sign tone 2","shortname":":thumbsdown_tone2:","category":"people","emoji_order":"1316","aliases":[":-1_tone2:",":thumbdown_tone2:"],"aliases_ascii":[],"keywords":[]},"thumbsdown_tone3":{"unicode":"1f44e-1f3fd","unicode_alternates":"","name":"thumbs down sign tone 3","shortname":":thumbsdown_tone3:","category":"people","emoji_order":"1317","aliases":[":-1_tone3:",":thumbdown_tone3:"],"aliases_ascii":[],"keywords":[]},"thumbsdown_tone4":{"unicode":"1f44e-1f3fe","unicode_alternates":"","name":"thumbs down sign tone 4","shortname":":thumbsdown_tone4:","category":"people","emoji_order":"1318","aliases":[":-1_tone4:",":thumbdown_tone4:"],"aliases_ascii":[],"keywords":[]},"thumbsdown_tone5":{"unicode":"1f44e-1f3ff","unicode_alternates":"","name":"thumbs down sign tone 5","shortname":":thumbsdown_tone5:","category":"people","emoji_order":"1319","aliases":[":-1_tone5:",":thumbdown_tone5:"],"aliases_ascii":[],"keywords":[]},"punch_tone1":{"unicode":"1f44a-1f3fb","unicode_alternates":"","name":"fisted hand sign tone 1","shortname":":punch_tone1:","category":"people","emoji_order":"1320","aliases":[],"aliases_ascii":[],"keywords":[]},"punch_tone2":{"unicode":"1f44a-1f3fc","unicode_alternates":"","name":"fisted hand sign tone 2","shortname":":punch_tone2:","category":"people","emoji_order":"1321","aliases":[],"aliases_ascii":[],"keywords":[]},"punch_tone3":{"unicode":"1f44a-1f3fd","unicode_alternates":"","name":"fisted hand sign tone 3","shortname":":punch_tone3:","category":"people","emoji_order":"1322","aliases":[],"aliases_ascii":[],"keywords":[]},"punch_tone4":{"unicode":"1f44a-1f3fe","unicode_alternates":"","name":"fisted hand sign tone 4","shortname":":punch_tone4:","category":"people","emoji_order":"1323","aliases":[],"aliases_ascii":[],"keywords":[]},"punch_tone5":{"unicode":"1f44a-1f3ff","unicode_alternates":"","name":"fisted hand sign tone 5","shortname":":punch_tone5:","category":"people","emoji_order":"1324","aliases":[],"aliases_ascii":[],"keywords":[]},"fist_tone1":{"unicode":"270a-1f3fb","unicode_alternates":"","name":"raised fist tone 1","shortname":":fist_tone1:","category":"people","emoji_order":"1325","aliases":[],"aliases_ascii":[],"keywords":[]},"fist_tone2":{"unicode":"270a-1f3fc","unicode_alternates":"","name":"raised fist tone 2","shortname":":fist_tone2:","category":"people","emoji_order":"1326","aliases":[],"aliases_ascii":[],"keywords":[]},"fist_tone3":{"unicode":"270a-1f3fd","unicode_alternates":"","name":"raised fist tone 3","shortname":":fist_tone3:","category":"people","emoji_order":"1327","aliases":[],"aliases_ascii":[],"keywords":[]},"fist_tone4":{"unicode":"270a-1f3fe","unicode_alternates":"","name":"raised fist tone 4","shortname":":fist_tone4:","category":"people","emoji_order":"1328","aliases":[],"aliases_ascii":[],"keywords":[]},"fist_tone5":{"unicode":"270a-1f3ff","unicode_alternates":"","name":"raised fist tone 5","shortname":":fist_tone5:","category":"people","emoji_order":"1329","aliases":[],"aliases_ascii":[],"keywords":[]},"v_tone1":{"unicode":"270c-1f3fb","unicode_alternates":"","name":"victory hand tone 1","shortname":":v_tone1:","category":"people","emoji_order":"1330","aliases":[],"aliases_ascii":[],"keywords":[]},"v_tone2":{"unicode":"270c-1f3fc","unicode_alternates":"","name":"victory hand tone 2","shortname":":v_tone2:","category":"people","emoji_order":"1331","aliases":[],"aliases_ascii":[],"keywords":[]},"v_tone3":{"unicode":"270c-1f3fd","unicode_alternates":"","name":"victory hand tone 3","shortname":":v_tone3:","category":"people","emoji_order":"1332","aliases":[],"aliases_ascii":[],"keywords":[]},"v_tone4":{"unicode":"270c-1f3fe","unicode_alternates":"","name":"victory hand tone 4","shortname":":v_tone4:","category":"people","emoji_order":"1333","aliases":[],"aliases_ascii":[],"keywords":[]},"v_tone5":{"unicode":"270c-1f3ff","unicode_alternates":"","name":"victory hand tone 5","shortname":":v_tone5:","category":"people","emoji_order":"1334","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_hand_tone1":{"unicode":"1f44c-1f3fb","unicode_alternates":"","name":"ok hand sign tone 1","shortname":":ok_hand_tone1:","category":"people","emoji_order":"1335","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_hand_tone2":{"unicode":"1f44c-1f3fc","unicode_alternates":"","name":"ok hand sign tone 2","shortname":":ok_hand_tone2:","category":"people","emoji_order":"1336","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_hand_tone3":{"unicode":"1f44c-1f3fd","unicode_alternates":"","name":"ok hand sign tone 3","shortname":":ok_hand_tone3:","category":"people","emoji_order":"1337","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_hand_tone4":{"unicode":"1f44c-1f3fe","unicode_alternates":"","name":"ok hand sign tone 4","shortname":":ok_hand_tone4:","category":"people","emoji_order":"1338","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_hand_tone5":{"unicode":"1f44c-1f3ff","unicode_alternates":"","name":"ok hand sign tone 5","shortname":":ok_hand_tone5:","category":"people","emoji_order":"1339","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hand_tone1":{"unicode":"270b-1f3fb","unicode_alternates":"","name":"raised hand tone 1","shortname":":raised_hand_tone1:","category":"people","emoji_order":"1340","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hand_tone2":{"unicode":"270b-1f3fc","unicode_alternates":"","name":"raised hand tone 2","shortname":":raised_hand_tone2:","category":"people","emoji_order":"1341","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hand_tone3":{"unicode":"270b-1f3fd","unicode_alternates":"","name":"raised hand tone 3","shortname":":raised_hand_tone3:","category":"people","emoji_order":"1342","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hand_tone4":{"unicode":"270b-1f3fe","unicode_alternates":"","name":"raised hand tone 4","shortname":":raised_hand_tone4:","category":"people","emoji_order":"1343","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hand_tone5":{"unicode":"270b-1f3ff","unicode_alternates":"","name":"raised hand tone 5","shortname":":raised_hand_tone5:","category":"people","emoji_order":"1344","aliases":[],"aliases_ascii":[],"keywords":[]},"open_hands_tone1":{"unicode":"1f450-1f3fb","unicode_alternates":"","name":"open hands sign tone 1","shortname":":open_hands_tone1:","category":"people","emoji_order":"1345","aliases":[],"aliases_ascii":[],"keywords":[]},"open_hands_tone2":{"unicode":"1f450-1f3fc","unicode_alternates":"","name":"open hands sign tone 2","shortname":":open_hands_tone2:","category":"people","emoji_order":"1346","aliases":[],"aliases_ascii":[],"keywords":[]},"open_hands_tone3":{"unicode":"1f450-1f3fd","unicode_alternates":"","name":"open hands sign tone 3","shortname":":open_hands_tone3:","category":"people","emoji_order":"1347","aliases":[],"aliases_ascii":[],"keywords":[]},"open_hands_tone4":{"unicode":"1f450-1f3fe","unicode_alternates":"","name":"open hands sign tone 4","shortname":":open_hands_tone4:","category":"people","emoji_order":"1348","aliases":[],"aliases_ascii":[],"keywords":[]},"open_hands_tone5":{"unicode":"1f450-1f3ff","unicode_alternates":"","name":"open hands sign tone 5","shortname":":open_hands_tone5:","category":"people","emoji_order":"1349","aliases":[],"aliases_ascii":[],"keywords":[]},"muscle_tone1":{"unicode":"1f4aa-1f3fb","unicode_alternates":"","name":"flexed biceps tone 1","shortname":":muscle_tone1:","category":"people","emoji_order":"1350","aliases":[],"aliases_ascii":[],"keywords":[]},"muscle_tone2":{"unicode":"1f4aa-1f3fc","unicode_alternates":"","name":"flexed biceps tone 2","shortname":":muscle_tone2:","category":"people","emoji_order":"1351","aliases":[],"aliases_ascii":[],"keywords":[]},"muscle_tone3":{"unicode":"1f4aa-1f3fd","unicode_alternates":"","name":"flexed biceps tone 3","shortname":":muscle_tone3:","category":"people","emoji_order":"1352","aliases":[],"aliases_ascii":[],"keywords":[]},"muscle_tone4":{"unicode":"1f4aa-1f3fe","unicode_alternates":"","name":"flexed biceps tone 4","shortname":":muscle_tone4:","category":"people","emoji_order":"1353","aliases":[],"aliases_ascii":[],"keywords":[]},"muscle_tone5":{"unicode":"1f4aa-1f3ff","unicode_alternates":"","name":"flexed biceps tone 5","shortname":":muscle_tone5:","category":"people","emoji_order":"1354","aliases":[],"aliases_ascii":[],"keywords":[]},"pray_tone1":{"unicode":"1f64f-1f3fb","unicode_alternates":"","name":"person with folded hands tone 1","shortname":":pray_tone1:","category":"people","emoji_order":"1355","aliases":[],"aliases_ascii":[],"keywords":[]},"pray_tone2":{"unicode":"1f64f-1f3fc","unicode_alternates":"","name":"person with folded hands tone 2","shortname":":pray_tone2:","category":"people","emoji_order":"1356","aliases":[],"aliases_ascii":[],"keywords":[]},"pray_tone3":{"unicode":"1f64f-1f3fd","unicode_alternates":"","name":"person with folded hands tone 3","shortname":":pray_tone3:","category":"people","emoji_order":"1357","aliases":[],"aliases_ascii":[],"keywords":[]},"pray_tone4":{"unicode":"1f64f-1f3fe","unicode_alternates":"","name":"person with folded hands tone 4","shortname":":pray_tone4:","category":"people","emoji_order":"1358","aliases":[],"aliases_ascii":[],"keywords":[]},"pray_tone5":{"unicode":"1f64f-1f3ff","unicode_alternates":"","name":"person with folded hands tone 5","shortname":":pray_tone5:","category":"people","emoji_order":"1359","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_tone1":{"unicode":"261d-1f3fb","unicode_alternates":"","name":"white up pointing index tone 1","shortname":":point_up_tone1:","category":"people","emoji_order":"1360","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_tone2":{"unicode":"261d-1f3fc","unicode_alternates":"","name":"white up pointing index tone 2","shortname":":point_up_tone2:","category":"people","emoji_order":"1361","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_tone3":{"unicode":"261d-1f3fd","unicode_alternates":"","name":"white up pointing index tone 3","shortname":":point_up_tone3:","category":"people","emoji_order":"1362","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_tone4":{"unicode":"261d-1f3fe","unicode_alternates":"","name":"white up pointing index tone 4","shortname":":point_up_tone4:","category":"people","emoji_order":"1363","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_tone5":{"unicode":"261d-1f3ff","unicode_alternates":"","name":"white up pointing index tone 5","shortname":":point_up_tone5:","category":"people","emoji_order":"1364","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_2_tone1":{"unicode":"1f446-1f3fb","unicode_alternates":"","name":"white up pointing backhand index tone 1","shortname":":point_up_2_tone1:","category":"people","emoji_order":"1365","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_2_tone2":{"unicode":"1f446-1f3fc","unicode_alternates":"","name":"white up pointing backhand index tone 2","shortname":":point_up_2_tone2:","category":"people","emoji_order":"1366","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_2_tone3":{"unicode":"1f446-1f3fd","unicode_alternates":"","name":"white up pointing backhand index tone 3","shortname":":point_up_2_tone3:","category":"people","emoji_order":"1367","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_2_tone4":{"unicode":"1f446-1f3fe","unicode_alternates":"","name":"white up pointing backhand index tone 4","shortname":":point_up_2_tone4:","category":"people","emoji_order":"1368","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_2_tone5":{"unicode":"1f446-1f3ff","unicode_alternates":"","name":"white up pointing backhand index tone 5","shortname":":point_up_2_tone5:","category":"people","emoji_order":"1369","aliases":[],"aliases_ascii":[],"keywords":[]},"point_down_tone1":{"unicode":"1f447-1f3fb","unicode_alternates":"","name":"white down pointing backhand index tone 1","shortname":":point_down_tone1:","category":"people","emoji_order":"1370","aliases":[],"aliases_ascii":[],"keywords":[]},"point_down_tone2":{"unicode":"1f447-1f3fc","unicode_alternates":"","name":"white down pointing backhand index tone 2","shortname":":point_down_tone2:","category":"people","emoji_order":"1371","aliases":[],"aliases_ascii":[],"keywords":[]},"point_down_tone3":{"unicode":"1f447-1f3fd","unicode_alternates":"","name":"white down pointing backhand index tone 3","shortname":":point_down_tone3:","category":"people","emoji_order":"1372","aliases":[],"aliases_ascii":[],"keywords":[]},"point_down_tone4":{"unicode":"1f447-1f3fe","unicode_alternates":"","name":"white down pointing backhand index tone 4","shortname":":point_down_tone4:","category":"people","emoji_order":"1373","aliases":[],"aliases_ascii":[],"keywords":[]},"point_down_tone5":{"unicode":"1f447-1f3ff","unicode_alternates":"","name":"white down pointing backhand index tone 5","shortname":":point_down_tone5:","category":"people","emoji_order":"1374","aliases":[],"aliases_ascii":[],"keywords":[]},"point_left_tone1":{"unicode":"1f448-1f3fb","unicode_alternates":"","name":"white left pointing backhand index tone 1","shortname":":point_left_tone1:","category":"people","emoji_order":"1375","aliases":[],"aliases_ascii":[],"keywords":[]},"point_left_tone2":{"unicode":"1f448-1f3fc","unicode_alternates":"","name":"white left pointing backhand index tone 2","shortname":":point_left_tone2:","category":"people","emoji_order":"1376","aliases":[],"aliases_ascii":[],"keywords":[]},"point_left_tone3":{"unicode":"1f448-1f3fd","unicode_alternates":"","name":"white left pointing backhand index tone 3","shortname":":point_left_tone3:","category":"people","emoji_order":"1377","aliases":[],"aliases_ascii":[],"keywords":[]},"point_left_tone4":{"unicode":"1f448-1f3fe","unicode_alternates":"","name":"white left pointing backhand index tone 4","shortname":":point_left_tone4:","category":"people","emoji_order":"1378","aliases":[],"aliases_ascii":[],"keywords":[]},"point_left_tone5":{"unicode":"1f448-1f3ff","unicode_alternates":"","name":"white left pointing backhand index tone 5","shortname":":point_left_tone5:","category":"people","emoji_order":"1379","aliases":[],"aliases_ascii":[],"keywords":[]},"point_right_tone1":{"unicode":"1f449-1f3fb","unicode_alternates":"","name":"white right pointing backhand index tone 1","shortname":":point_right_tone1:","category":"people","emoji_order":"1380","aliases":[],"aliases_ascii":[],"keywords":[]},"point_right_tone2":{"unicode":"1f449-1f3fc","unicode_alternates":"","name":"white right pointing backhand index tone 2","shortname":":point_right_tone2:","category":"people","emoji_order":"1381","aliases":[],"aliases_ascii":[],"keywords":[]},"point_right_tone3":{"unicode":"1f449-1f3fd","unicode_alternates":"","name":"white right pointing backhand index tone 3","shortname":":point_right_tone3:","category":"people","emoji_order":"1382","aliases":[],"aliases_ascii":[],"keywords":[]},"point_right_tone4":{"unicode":"1f449-1f3fe","unicode_alternates":"","name":"white right pointing backhand index tone 4","shortname":":point_right_tone4:","category":"people","emoji_order":"1383","aliases":[],"aliases_ascii":[],"keywords":[]},"point_right_tone5":{"unicode":"1f449-1f3ff","unicode_alternates":"","name":"white right pointing backhand index tone 5","shortname":":point_right_tone5:","category":"people","emoji_order":"1384","aliases":[],"aliases_ascii":[],"keywords":[]},"middle_finger_tone1":{"unicode":"1f595-1f3fb","unicode_alternates":"","name":"reversed hand with middle finger extended tone 1","shortname":":middle_finger_tone1:","category":"people","emoji_order":"1385","aliases":[":reversed_hand_with_middle_finger_extended_tone1:"],"aliases_ascii":[],"keywords":[]},"middle_finger_tone2":{"unicode":"1f595-1f3fc","unicode_alternates":"","name":"reversed hand with middle finger extended tone 2","shortname":":middle_finger_tone2:","category":"people","emoji_order":"1386","aliases":[":reversed_hand_with_middle_finger_extended_tone2:"],"aliases_ascii":[],"keywords":[]},"middle_finger_tone3":{"unicode":"1f595-1f3fd","unicode_alternates":"","name":"reversed hand with middle finger extended tone 3","shortname":":middle_finger_tone3:","category":"people","emoji_order":"1387","aliases":[":reversed_hand_with_middle_finger_extended_tone3:"],"aliases_ascii":[],"keywords":[]},"middle_finger_tone4":{"unicode":"1f595-1f3fe","unicode_alternates":"","name":"reversed hand with middle finger extended tone 4","shortname":":middle_finger_tone4:","category":"people","emoji_order":"1388","aliases":[":reversed_hand_with_middle_finger_extended_tone4:"],"aliases_ascii":[],"keywords":[]},"middle_finger_tone5":{"unicode":"1f595-1f3ff","unicode_alternates":"","name":"reversed hand with middle finger extended tone 5","shortname":":middle_finger_tone5:","category":"people","emoji_order":"1389","aliases":[":reversed_hand_with_middle_finger_extended_tone5:"],"aliases_ascii":[],"keywords":[]},"hand_splayed_tone1":{"unicode":"1f590-1f3fb","unicode_alternates":"","name":"raised hand with fingers splayed tone 1","shortname":":hand_splayed_tone1:","category":"people","emoji_order":"1390","aliases":[":raised_hand_with_fingers_splayed_tone1:"],"aliases_ascii":[],"keywords":[]},"hand_splayed_tone2":{"unicode":"1f590-1f3fc","unicode_alternates":"","name":"raised hand with fingers splayed tone 2","shortname":":hand_splayed_tone2:","category":"people","emoji_order":"1391","aliases":[":raised_hand_with_fingers_splayed_tone2:"],"aliases_ascii":[],"keywords":[]},"hand_splayed_tone3":{"unicode":"1f590-1f3fd","unicode_alternates":"","name":"raised hand with fingers splayed tone 3","shortname":":hand_splayed_tone3:","category":"people","emoji_order":"1392","aliases":[":raised_hand_with_fingers_splayed_tone3:"],"aliases_ascii":[],"keywords":[]},"hand_splayed_tone4":{"unicode":"1f590-1f3fe","unicode_alternates":"","name":"raised hand with fingers splayed tone 4","shortname":":hand_splayed_tone4:","category":"people","emoji_order":"1393","aliases":[":raised_hand_with_fingers_splayed_tone4:"],"aliases_ascii":[],"keywords":[]},"hand_splayed_tone5":{"unicode":"1f590-1f3ff","unicode_alternates":"","name":"raised hand with fingers splayed tone 5","shortname":":hand_splayed_tone5:","category":"people","emoji_order":"1394","aliases":[":raised_hand_with_fingers_splayed_tone5:"],"aliases_ascii":[],"keywords":[]},"metal_tone1":{"unicode":"1f918-1f3fb","unicode_alternates":"","name":"sign of the horns tone 1","shortname":":metal_tone1:","category":"people","emoji_order":"1395","aliases":[":sign_of_the_horns_tone1:"],"aliases_ascii":[],"keywords":[]},"metal_tone2":{"unicode":"1f918-1f3fc","unicode_alternates":"","name":"sign of the horns tone 2","shortname":":metal_tone2:","category":"people","emoji_order":"1396","aliases":[":sign_of_the_horns_tone2:"],"aliases_ascii":[],"keywords":[]},"metal_tone3":{"unicode":"1f918-1f3fd","unicode_alternates":"","name":"sign of the horns tone 3","shortname":":metal_tone3:","category":"people","emoji_order":"1397","aliases":[":sign_of_the_horns_tone3:"],"aliases_ascii":[],"keywords":[]},"metal_tone4":{"unicode":"1f918-1f3fe","unicode_alternates":"","name":"sign of the horns tone 4","shortname":":metal_tone4:","category":"people","emoji_order":"1398","aliases":[":sign_of_the_horns_tone4:"],"aliases_ascii":[],"keywords":[]},"metal_tone5":{"unicode":"1f918-1f3ff","unicode_alternates":"","name":"sign of the horns tone 5","shortname":":metal_tone5:","category":"people","emoji_order":"1399","aliases":[":sign_of_the_horns_tone5:"],"aliases_ascii":[],"keywords":[]},"vulcan_tone1":{"unicode":"1f596-1f3fb","unicode_alternates":"","name":"raised hand with part between middle and ring fingers tone 1","shortname":":vulcan_tone1:","category":"people","emoji_order":"1400","aliases":[":raised_hand_with_part_between_middle_and_ring_fingers_tone1:"],"aliases_ascii":[],"keywords":[]},"vulcan_tone2":{"unicode":"1f596-1f3fc","unicode_alternates":"","name":"raised hand with part between middle and ring fingers tone 2","shortname":":vulcan_tone2:","category":"people","emoji_order":"1401","aliases":[":raised_hand_with_part_between_middle_and_ring_fingers_tone2:"],"aliases_ascii":[],"keywords":[]},"vulcan_tone3":{"unicode":"1f596-1f3fd","unicode_alternates":"","name":"raised hand with part between middle and ring fingers tone 3","shortname":":vulcan_tone3:","category":"people","emoji_order":"1402","aliases":[":raised_hand_with_part_between_middle_and_ring_fingers_tone3:"],"aliases_ascii":[],"keywords":[]},"vulcan_tone4":{"unicode":"1f596-1f3fe","unicode_alternates":"","name":"raised hand with part between middle and ring fingers tone 4","shortname":":vulcan_tone4:","category":"people","emoji_order":"1403","aliases":[":raised_hand_with_part_between_middle_and_ring_fingers_tone4:"],"aliases_ascii":[],"keywords":[]},"vulcan_tone5":{"unicode":"1f596-1f3ff","unicode_alternates":"","name":"raised hand with part between middle and ring fingers tone 5","shortname":":vulcan_tone5:","category":"people","emoji_order":"1404","aliases":[":raised_hand_with_part_between_middle_and_ring_fingers_tone5:"],"aliases_ascii":[],"keywords":[]},"writing_hand_tone1":{"unicode":"270d-1f3fb","unicode_alternates":"","name":"writing hand tone 1","shortname":":writing_hand_tone1:","category":"people","emoji_order":"1405","aliases":[],"aliases_ascii":[],"keywords":[]},"writing_hand_tone2":{"unicode":"270d-1f3fc","unicode_alternates":"","name":"writing hand tone 2","shortname":":writing_hand_tone2:","category":"people","emoji_order":"1406","aliases":[],"aliases_ascii":[],"keywords":[]},"writing_hand_tone3":{"unicode":"270d-1f3fd","unicode_alternates":"","name":"writing hand tone 3","shortname":":writing_hand_tone3:","category":"people","emoji_order":"1407","aliases":[],"aliases_ascii":[],"keywords":[]},"writing_hand_tone4":{"unicode":"270d-1f3fe","unicode_alternates":"","name":"writing hand tone 4","shortname":":writing_hand_tone4:","category":"people","emoji_order":"1408","aliases":[],"aliases_ascii":[],"keywords":[]},"writing_hand_tone5":{"unicode":"270d-1f3ff","unicode_alternates":"","name":"writing hand tone 5","shortname":":writing_hand_tone5:","category":"people","emoji_order":"1409","aliases":[],"aliases_ascii":[],"keywords":[]},"nail_care_tone1":{"unicode":"1f485-1f3fb","unicode_alternates":"","name":"nail polish tone 1","shortname":":nail_care_tone1:","category":"people","emoji_order":"1410","aliases":[],"aliases_ascii":[],"keywords":[]},"nail_care_tone2":{"unicode":"1f485-1f3fc","unicode_alternates":"","name":"nail polish tone 2","shortname":":nail_care_tone2:","category":"people","emoji_order":"1411","aliases":[],"aliases_ascii":[],"keywords":[]},"nail_care_tone3":{"unicode":"1f485-1f3fd","unicode_alternates":"","name":"nail polish tone 3","shortname":":nail_care_tone3:","category":"people","emoji_order":"1412","aliases":[],"aliases_ascii":[],"keywords":[]},"nail_care_tone4":{"unicode":"1f485-1f3fe","unicode_alternates":"","name":"nail polish tone 4","shortname":":nail_care_tone4:","category":"people","emoji_order":"1413","aliases":[],"aliases_ascii":[],"keywords":[]},"nail_care_tone5":{"unicode":"1f485-1f3ff","unicode_alternates":"","name":"nail polish tone 5","shortname":":nail_care_tone5:","category":"people","emoji_order":"1414","aliases":[],"aliases_ascii":[],"keywords":[]},"ear_tone1":{"unicode":"1f442-1f3fb","unicode_alternates":"","name":"ear tone 1","shortname":":ear_tone1:","category":"people","emoji_order":"1415","aliases":[],"aliases_ascii":[],"keywords":[]},"ear_tone2":{"unicode":"1f442-1f3fc","unicode_alternates":"","name":"ear tone 2","shortname":":ear_tone2:","category":"people","emoji_order":"1416","aliases":[],"aliases_ascii":[],"keywords":[]},"ear_tone3":{"unicode":"1f442-1f3fd","unicode_alternates":"","name":"ear tone 3","shortname":":ear_tone3:","category":"people","emoji_order":"1417","aliases":[],"aliases_ascii":[],"keywords":[]},"ear_tone4":{"unicode":"1f442-1f3fe","unicode_alternates":"","name":"ear tone 4","shortname":":ear_tone4:","category":"people","emoji_order":"1418","aliases":[],"aliases_ascii":[],"keywords":[]},"ear_tone5":{"unicode":"1f442-1f3ff","unicode_alternates":"","name":"ear tone 5","shortname":":ear_tone5:","category":"people","emoji_order":"1419","aliases":[],"aliases_ascii":[],"keywords":[]},"nose_tone1":{"unicode":"1f443-1f3fb","unicode_alternates":"","name":"nose tone 1","shortname":":nose_tone1:","category":"people","emoji_order":"1420","aliases":[],"aliases_ascii":[],"keywords":[]},"nose_tone2":{"unicode":"1f443-1f3fc","unicode_alternates":"","name":"nose tone 2","shortname":":nose_tone2:","category":"people","emoji_order":"1421","aliases":[],"aliases_ascii":[],"keywords":[]},"nose_tone3":{"unicode":"1f443-1f3fd","unicode_alternates":"","name":"nose tone 3","shortname":":nose_tone3:","category":"people","emoji_order":"1422","aliases":[],"aliases_ascii":[],"keywords":[]},"nose_tone4":{"unicode":"1f443-1f3fe","unicode_alternates":"","name":"nose tone 4","shortname":":nose_tone4:","category":"people","emoji_order":"1423","aliases":[],"aliases_ascii":[],"keywords":[]},"nose_tone5":{"unicode":"1f443-1f3ff","unicode_alternates":"","name":"nose tone 5","shortname":":nose_tone5:","category":"people","emoji_order":"1424","aliases":[],"aliases_ascii":[],"keywords":[]},"baby_tone1":{"unicode":"1f476-1f3fb","unicode_alternates":"","name":"baby tone 1","shortname":":baby_tone1:","category":"people","emoji_order":"1425","aliases":[],"aliases_ascii":[],"keywords":[]},"baby_tone2":{"unicode":"1f476-1f3fc","unicode_alternates":"","name":"baby tone 2","shortname":":baby_tone2:","category":"people","emoji_order":"1426","aliases":[],"aliases_ascii":[],"keywords":[]},"baby_tone3":{"unicode":"1f476-1f3fd","unicode_alternates":"","name":"baby tone 3","shortname":":baby_tone3:","category":"people","emoji_order":"1427","aliases":[],"aliases_ascii":[],"keywords":[]},"baby_tone4":{"unicode":"1f476-1f3fe","unicode_alternates":"","name":"baby tone 4","shortname":":baby_tone4:","category":"people","emoji_order":"1428","aliases":[],"aliases_ascii":[],"keywords":[]},"baby_tone5":{"unicode":"1f476-1f3ff","unicode_alternates":"","name":"baby tone 5","shortname":":baby_tone5:","category":"people","emoji_order":"1429","aliases":[],"aliases_ascii":[],"keywords":[]},"boy_tone1":{"unicode":"1f466-1f3fb","unicode_alternates":"","name":"boy tone 1","shortname":":boy_tone1:","category":"people","emoji_order":"1430","aliases":[],"aliases_ascii":[],"keywords":[]},"boy_tone2":{"unicode":"1f466-1f3fc","unicode_alternates":"","name":"boy tone 2","shortname":":boy_tone2:","category":"people","emoji_order":"1431","aliases":[],"aliases_ascii":[],"keywords":[]},"boy_tone3":{"unicode":"1f466-1f3fd","unicode_alternates":"","name":"boy tone 3","shortname":":boy_tone3:","category":"people","emoji_order":"1432","aliases":[],"aliases_ascii":[],"keywords":[]},"boy_tone4":{"unicode":"1f466-1f3fe","unicode_alternates":"","name":"boy tone 4","shortname":":boy_tone4:","category":"people","emoji_order":"1433","aliases":[],"aliases_ascii":[],"keywords":[]},"boy_tone5":{"unicode":"1f466-1f3ff","unicode_alternates":"","name":"boy tone 5","shortname":":boy_tone5:","category":"people","emoji_order":"1434","aliases":[],"aliases_ascii":[],"keywords":[]},"girl_tone1":{"unicode":"1f467-1f3fb","unicode_alternates":"","name":"girl tone 1","shortname":":girl_tone1:","category":"people","emoji_order":"1435","aliases":[],"aliases_ascii":[],"keywords":[]},"girl_tone2":{"unicode":"1f467-1f3fc","unicode_alternates":"","name":"girl tone 2","shortname":":girl_tone2:","category":"people","emoji_order":"1436","aliases":[],"aliases_ascii":[],"keywords":[]},"girl_tone3":{"unicode":"1f467-1f3fd","unicode_alternates":"","name":"girl tone 3","shortname":":girl_tone3:","category":"people","emoji_order":"1437","aliases":[],"aliases_ascii":[],"keywords":[]},"girl_tone4":{"unicode":"1f467-1f3fe","unicode_alternates":"","name":"girl tone 4","shortname":":girl_tone4:","category":"people","emoji_order":"1438","aliases":[],"aliases_ascii":[],"keywords":[]},"girl_tone5":{"unicode":"1f467-1f3ff","unicode_alternates":"","name":"girl tone 5","shortname":":girl_tone5:","category":"people","emoji_order":"1439","aliases":[],"aliases_ascii":[],"keywords":[]},"man_tone1":{"unicode":"1f468-1f3fb","unicode_alternates":"","name":"man tone 1","shortname":":man_tone1:","category":"people","emoji_order":"1440","aliases":[],"aliases_ascii":[],"keywords":[]},"man_tone2":{"unicode":"1f468-1f3fc","unicode_alternates":"","name":"man tone 2","shortname":":man_tone2:","category":"people","emoji_order":"1441","aliases":[],"aliases_ascii":[],"keywords":[]},"man_tone3":{"unicode":"1f468-1f3fd","unicode_alternates":"","name":"man tone 3","shortname":":man_tone3:","category":"people","emoji_order":"1442","aliases":[],"aliases_ascii":[],"keywords":[]},"man_tone4":{"unicode":"1f468-1f3fe","unicode_alternates":"","name":"man tone 4","shortname":":man_tone4:","category":"people","emoji_order":"1443","aliases":[],"aliases_ascii":[],"keywords":[]},"man_tone5":{"unicode":"1f468-1f3ff","unicode_alternates":"","name":"man tone 5","shortname":":man_tone5:","category":"people","emoji_order":"1444","aliases":[],"aliases_ascii":[],"keywords":[]},"woman_tone1":{"unicode":"1f469-1f3fb","unicode_alternates":"","name":"woman tone 1","shortname":":woman_tone1:","category":"people","emoji_order":"1445","aliases":[],"aliases_ascii":[],"keywords":[]},"woman_tone2":{"unicode":"1f469-1f3fc","unicode_alternates":"","name":"woman tone 2","shortname":":woman_tone2:","category":"people","emoji_order":"1446","aliases":[],"aliases_ascii":[],"keywords":[]},"woman_tone3":{"unicode":"1f469-1f3fd","unicode_alternates":"","name":"woman tone 3","shortname":":woman_tone3:","category":"people","emoji_order":"1447","aliases":[],"aliases_ascii":[],"keywords":[]},"woman_tone4":{"unicode":"1f469-1f3fe","unicode_alternates":"","name":"woman tone 4","shortname":":woman_tone4:","category":"people","emoji_order":"1448","aliases":[],"aliases_ascii":[],"keywords":[]},"woman_tone5":{"unicode":"1f469-1f3ff","unicode_alternates":"","name":"woman tone 5","shortname":":woman_tone5:","category":"people","emoji_order":"1449","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_blond_hair_tone1":{"unicode":"1f471-1f3fb","unicode_alternates":"","name":"person with blond hair tone 1","shortname":":person_with_blond_hair_tone1:","category":"people","emoji_order":"1450","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_blond_hair_tone2":{"unicode":"1f471-1f3fc","unicode_alternates":"","name":"person with blond hair tone 2","shortname":":person_with_blond_hair_tone2:","category":"people","emoji_order":"1451","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_blond_hair_tone3":{"unicode":"1f471-1f3fd","unicode_alternates":"","name":"person with blond hair tone 3","shortname":":person_with_blond_hair_tone3:","category":"people","emoji_order":"1452","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_blond_hair_tone4":{"unicode":"1f471-1f3fe","unicode_alternates":"","name":"person with blond hair tone 4","shortname":":person_with_blond_hair_tone4:","category":"people","emoji_order":"1453","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_blond_hair_tone5":{"unicode":"1f471-1f3ff","unicode_alternates":"","name":"person with blond hair tone 5","shortname":":person_with_blond_hair_tone5:","category":"people","emoji_order":"1454","aliases":[],"aliases_ascii":[],"keywords":[]},"older_man_tone1":{"unicode":"1f474-1f3fb","unicode_alternates":"","name":"older man tone 1","shortname":":older_man_tone1:","category":"people","emoji_order":"1455","aliases":[],"aliases_ascii":[],"keywords":[]},"older_man_tone2":{"unicode":"1f474-1f3fc","unicode_alternates":"","name":"older man tone 2","shortname":":older_man_tone2:","category":"people","emoji_order":"1456","aliases":[],"aliases_ascii":[],"keywords":[]},"older_man_tone3":{"unicode":"1f474-1f3fd","unicode_alternates":"","name":"older man tone 3","shortname":":older_man_tone3:","category":"people","emoji_order":"1457","aliases":[],"aliases_ascii":[],"keywords":[]},"older_man_tone4":{"unicode":"1f474-1f3fe","unicode_alternates":"","name":"older man tone 4","shortname":":older_man_tone4:","category":"people","emoji_order":"1458","aliases":[],"aliases_ascii":[],"keywords":[]},"older_man_tone5":{"unicode":"1f474-1f3ff","unicode_alternates":"","name":"older man tone 5","shortname":":older_man_tone5:","category":"people","emoji_order":"1459","aliases":[],"aliases_ascii":[],"keywords":[]},"older_woman_tone1":{"unicode":"1f475-1f3fb","unicode_alternates":"","name":"older woman tone 1","shortname":":older_woman_tone1:","category":"people","emoji_order":"1460","aliases":[":grandma_tone1:"],"aliases_ascii":[],"keywords":[]},"older_woman_tone2":{"unicode":"1f475-1f3fc","unicode_alternates":"","name":"older woman tone 2","shortname":":older_woman_tone2:","category":"people","emoji_order":"1461","aliases":[":grandma_tone2:"],"aliases_ascii":[],"keywords":[]},"older_woman_tone3":{"unicode":"1f475-1f3fd","unicode_alternates":"","name":"older woman tone 3","shortname":":older_woman_tone3:","category":"people","emoji_order":"1462","aliases":[":grandma_tone3:"],"aliases_ascii":[],"keywords":[]},"older_woman_tone4":{"unicode":"1f475-1f3fe","unicode_alternates":"","name":"older woman tone 4","shortname":":older_woman_tone4:","category":"people","emoji_order":"1463","aliases":[":grandma_tone4:"],"aliases_ascii":[],"keywords":[]},"older_woman_tone5":{"unicode":"1f475-1f3ff","unicode_alternates":"","name":"older woman tone 5","shortname":":older_woman_tone5:","category":"people","emoji_order":"1464","aliases":[":grandma_tone5:"],"aliases_ascii":[],"keywords":[]},"man_with_gua_pi_mao_tone1":{"unicode":"1f472-1f3fb","unicode_alternates":"","name":"man with gua pi mao tone 1","shortname":":man_with_gua_pi_mao_tone1:","category":"people","emoji_order":"1465","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_gua_pi_mao_tone2":{"unicode":"1f472-1f3fc","unicode_alternates":"","name":"man with gua pi mao tone 2","shortname":":man_with_gua_pi_mao_tone2:","category":"people","emoji_order":"1466","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_gua_pi_mao_tone3":{"unicode":"1f472-1f3fd","unicode_alternates":"","name":"man with gua pi mao tone 3","shortname":":man_with_gua_pi_mao_tone3:","category":"people","emoji_order":"1467","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_gua_pi_mao_tone4":{"unicode":"1f472-1f3fe","unicode_alternates":"","name":"man with gua pi mao tone 4","shortname":":man_with_gua_pi_mao_tone4:","category":"people","emoji_order":"1468","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_gua_pi_mao_tone5":{"unicode":"1f472-1f3ff","unicode_alternates":"","name":"man with gua pi mao tone 5","shortname":":man_with_gua_pi_mao_tone5:","category":"people","emoji_order":"1469","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_turban_tone1":{"unicode":"1f473-1f3fb","unicode_alternates":"","name":"man with turban tone 1","shortname":":man_with_turban_tone1:","category":"people","emoji_order":"1470","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_turban_tone2":{"unicode":"1f473-1f3fc","unicode_alternates":"","name":"man with turban tone 2","shortname":":man_with_turban_tone2:","category":"people","emoji_order":"1471","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_turban_tone3":{"unicode":"1f473-1f3fd","unicode_alternates":"","name":"man with turban tone 3","shortname":":man_with_turban_tone3:","category":"people","emoji_order":"1472","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_turban_tone4":{"unicode":"1f473-1f3fe","unicode_alternates":"","name":"man with turban tone 4","shortname":":man_with_turban_tone4:","category":"people","emoji_order":"1473","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_turban_tone5":{"unicode":"1f473-1f3ff","unicode_alternates":"","name":"man with turban tone 5","shortname":":man_with_turban_tone5:","category":"people","emoji_order":"1474","aliases":[],"aliases_ascii":[],"keywords":[]},"cop_tone1":{"unicode":"1f46e-1f3fb","unicode_alternates":"","name":"police officer tone 1","shortname":":cop_tone1:","category":"people","emoji_order":"1475","aliases":[],"aliases_ascii":[],"keywords":[]},"cop_tone2":{"unicode":"1f46e-1f3fc","unicode_alternates":"","name":"police officer tone 2","shortname":":cop_tone2:","category":"people","emoji_order":"1476","aliases":[],"aliases_ascii":[],"keywords":[]},"cop_tone3":{"unicode":"1f46e-1f3fd","unicode_alternates":"","name":"police officer tone 3","shortname":":cop_tone3:","category":"people","emoji_order":"1477","aliases":[],"aliases_ascii":[],"keywords":[]},"cop_tone4":{"unicode":"1f46e-1f3fe","unicode_alternates":"","name":"police officer tone 4","shortname":":cop_tone4:","category":"people","emoji_order":"1478","aliases":[],"aliases_ascii":[],"keywords":[]},"cop_tone5":{"unicode":"1f46e-1f3ff","unicode_alternates":"","name":"police officer tone 5","shortname":":cop_tone5:","category":"people","emoji_order":"1479","aliases":[],"aliases_ascii":[],"keywords":[]},"construction_worker_tone1":{"unicode":"1f477-1f3fb","unicode_alternates":"","name":"construction worker tone 1","shortname":":construction_worker_tone1:","category":"people","emoji_order":"1480","aliases":[],"aliases_ascii":[],"keywords":[]},"construction_worker_tone2":{"unicode":"1f477-1f3fc","unicode_alternates":"","name":"construction worker tone 2","shortname":":construction_worker_tone2:","category":"people","emoji_order":"1481","aliases":[],"aliases_ascii":[],"keywords":[]},"construction_worker_tone3":{"unicode":"1f477-1f3fd","unicode_alternates":"","name":"construction worker tone 3","shortname":":construction_worker_tone3:","category":"people","emoji_order":"1482","aliases":[],"aliases_ascii":[],"keywords":[]},"construction_worker_tone4":{"unicode":"1f477-1f3fe","unicode_alternates":"","name":"construction worker tone 4","shortname":":construction_worker_tone4:","category":"people","emoji_order":"1483","aliases":[],"aliases_ascii":[],"keywords":[]},"construction_worker_tone5":{"unicode":"1f477-1f3ff","unicode_alternates":"","name":"construction worker tone 5","shortname":":construction_worker_tone5:","category":"people","emoji_order":"1484","aliases":[],"aliases_ascii":[],"keywords":[]},"guardsman_tone1":{"unicode":"1f482-1f3fb","unicode_alternates":"","name":"guardsman tone 1","shortname":":guardsman_tone1:","category":"people","emoji_order":"1485","aliases":[],"aliases_ascii":[],"keywords":[]},"guardsman_tone2":{"unicode":"1f482-1f3fc","unicode_alternates":"","name":"guardsman tone 2","shortname":":guardsman_tone2:","category":"people","emoji_order":"1486","aliases":[],"aliases_ascii":[],"keywords":[]},"guardsman_tone3":{"unicode":"1f482-1f3fd","unicode_alternates":"","name":"guardsman tone 3","shortname":":guardsman_tone3:","category":"people","emoji_order":"1487","aliases":[],"aliases_ascii":[],"keywords":[]},"guardsman_tone4":{"unicode":"1f482-1f3fe","unicode_alternates":"","name":"guardsman tone 4","shortname":":guardsman_tone4:","category":"people","emoji_order":"1488","aliases":[],"aliases_ascii":[],"keywords":[]},"guardsman_tone5":{"unicode":"1f482-1f3ff","unicode_alternates":"","name":"guardsman tone 5","shortname":":guardsman_tone5:","category":"people","emoji_order":"1489","aliases":[],"aliases_ascii":[],"keywords":[]},"santa_tone1":{"unicode":"1f385-1f3fb","unicode_alternates":"","name":"father christmas tone 1","shortname":":santa_tone1:","category":"people","emoji_order":"1490","aliases":[],"aliases_ascii":[],"keywords":[]},"santa_tone2":{"unicode":"1f385-1f3fc","unicode_alternates":"","name":"father christmas tone 2","shortname":":santa_tone2:","category":"people","emoji_order":"1491","aliases":[],"aliases_ascii":[],"keywords":[]},"santa_tone3":{"unicode":"1f385-1f3fd","unicode_alternates":"","name":"father christmas tone 3","shortname":":santa_tone3:","category":"people","emoji_order":"1492","aliases":[],"aliases_ascii":[],"keywords":[]},"santa_tone4":{"unicode":"1f385-1f3fe","unicode_alternates":"","name":"father christmas tone 4","shortname":":santa_tone4:","category":"people","emoji_order":"1493","aliases":[],"aliases_ascii":[],"keywords":[]},"santa_tone5":{"unicode":"1f385-1f3ff","unicode_alternates":"","name":"father christmas tone 5","shortname":":santa_tone5:","category":"people","emoji_order":"1494","aliases":[],"aliases_ascii":[],"keywords":[]},"angel_tone1":{"unicode":"1f47c-1f3fb","unicode_alternates":"","name":"baby angel tone 1","shortname":":angel_tone1:","category":"people","emoji_order":"1495","aliases":[],"aliases_ascii":[],"keywords":[]},"angel_tone2":{"unicode":"1f47c-1f3fc","unicode_alternates":"","name":"baby angel tone 2","shortname":":angel_tone2:","category":"people","emoji_order":"1496","aliases":[],"aliases_ascii":[],"keywords":[]},"angel_tone3":{"unicode":"1f47c-1f3fd","unicode_alternates":"","name":"baby angel tone 3","shortname":":angel_tone3:","category":"people","emoji_order":"1497","aliases":[],"aliases_ascii":[],"keywords":[]},"angel_tone4":{"unicode":"1f47c-1f3fe","unicode_alternates":"","name":"baby angel tone 4","shortname":":angel_tone4:","category":"people","emoji_order":"1498","aliases":[],"aliases_ascii":[],"keywords":[]},"angel_tone5":{"unicode":"1f47c-1f3ff","unicode_alternates":"","name":"baby angel tone 5","shortname":":angel_tone5:","category":"people","emoji_order":"1499","aliases":[],"aliases_ascii":[],"keywords":[]},"princess_tone1":{"unicode":"1f478-1f3fb","unicode_alternates":"","name":"princess tone 1","shortname":":princess_tone1:","category":"people","emoji_order":"1500","aliases":[],"aliases_ascii":[],"keywords":[]},"princess_tone2":{"unicode":"1f478-1f3fc","unicode_alternates":"","name":"princess tone 2","shortname":":princess_tone2:","category":"people","emoji_order":"1501","aliases":[],"aliases_ascii":[],"keywords":[]},"princess_tone3":{"unicode":"1f478-1f3fd","unicode_alternates":"","name":"princess tone 3","shortname":":princess_tone3:","category":"people","emoji_order":"1502","aliases":[],"aliases_ascii":[],"keywords":[]},"princess_tone4":{"unicode":"1f478-1f3fe","unicode_alternates":"","name":"princess tone 4","shortname":":princess_tone4:","category":"people","emoji_order":"1503","aliases":[],"aliases_ascii":[],"keywords":[]},"princess_tone5":{"unicode":"1f478-1f3ff","unicode_alternates":"","name":"princess tone 5","shortname":":princess_tone5:","category":"people","emoji_order":"1504","aliases":[],"aliases_ascii":[],"keywords":[]},"bride_with_veil_tone1":{"unicode":"1f470-1f3fb","unicode_alternates":"","name":"bride with veil tone 1","shortname":":bride_with_veil_tone1:","category":"people","emoji_order":"1505","aliases":[],"aliases_ascii":[],"keywords":[]},"bride_with_veil_tone2":{"unicode":"1f470-1f3fc","unicode_alternates":"","name":"bride with veil tone 2","shortname":":bride_with_veil_tone2:","category":"people","emoji_order":"1506","aliases":[],"aliases_ascii":[],"keywords":[]},"bride_with_veil_tone3":{"unicode":"1f470-1f3fd","unicode_alternates":"","name":"bride with veil tone 3","shortname":":bride_with_veil_tone3:","category":"people","emoji_order":"1507","aliases":[],"aliases_ascii":[],"keywords":[]},"bride_with_veil_tone4":{"unicode":"1f470-1f3fe","unicode_alternates":"","name":"bride with veil tone 4","shortname":":bride_with_veil_tone4:","category":"people","emoji_order":"1508","aliases":[],"aliases_ascii":[],"keywords":[]},"bride_with_veil_tone5":{"unicode":"1f470-1f3ff","unicode_alternates":"","name":"bride with veil tone 5","shortname":":bride_with_veil_tone5:","category":"people","emoji_order":"1509","aliases":[],"aliases_ascii":[],"keywords":[]},"walking_tone1":{"unicode":"1f6b6-1f3fb","unicode_alternates":"","name":"pedestrian tone 1","shortname":":walking_tone1:","category":"people","emoji_order":"1510","aliases":[],"aliases_ascii":[],"keywords":[]},"walking_tone2":{"unicode":"1f6b6-1f3fc","unicode_alternates":"","name":"pedestrian tone 2","shortname":":walking_tone2:","category":"people","emoji_order":"1511","aliases":[],"aliases_ascii":[],"keywords":[]},"walking_tone3":{"unicode":"1f6b6-1f3fd","unicode_alternates":"","name":"pedestrian tone 3","shortname":":walking_tone3:","category":"people","emoji_order":"1512","aliases":[],"aliases_ascii":[],"keywords":[]},"walking_tone4":{"unicode":"1f6b6-1f3fe","unicode_alternates":"","name":"pedestrian tone 4","shortname":":walking_tone4:","category":"people","emoji_order":"1513","aliases":[],"aliases_ascii":[],"keywords":[]},"walking_tone5":{"unicode":"1f6b6-1f3ff","unicode_alternates":"","name":"pedestrian tone 5","shortname":":walking_tone5:","category":"people","emoji_order":"1514","aliases":[],"aliases_ascii":[],"keywords":[]},"runner_tone1":{"unicode":"1f3c3-1f3fb","unicode_alternates":"","name":"runner tone 1","shortname":":runner_tone1:","category":"people","emoji_order":"1515","aliases":[],"aliases_ascii":[],"keywords":[]},"runner_tone2":{"unicode":"1f3c3-1f3fc","unicode_alternates":"","name":"runner tone 2","shortname":":runner_tone2:","category":"people","emoji_order":"1516","aliases":[],"aliases_ascii":[],"keywords":[]},"runner_tone3":{"unicode":"1f3c3-1f3fd","unicode_alternates":"","name":"runner tone 3","shortname":":runner_tone3:","category":"people","emoji_order":"1517","aliases":[],"aliases_ascii":[],"keywords":[]},"runner_tone4":{"unicode":"1f3c3-1f3fe","unicode_alternates":"","name":"runner tone 4","shortname":":runner_tone4:","category":"people","emoji_order":"1518","aliases":[],"aliases_ascii":[],"keywords":[]},"runner_tone5":{"unicode":"1f3c3-1f3ff","unicode_alternates":"","name":"runner tone 5","shortname":":runner_tone5:","category":"people","emoji_order":"1519","aliases":[],"aliases_ascii":[],"keywords":[]},"dancer_tone1":{"unicode":"1f483-1f3fb","unicode_alternates":"","name":"dancer tone 1","shortname":":dancer_tone1:","category":"people","emoji_order":"1520","aliases":[],"aliases_ascii":[],"keywords":[]},"dancer_tone2":{"unicode":"1f483-1f3fc","unicode_alternates":"","name":"dancer tone 2","shortname":":dancer_tone2:","category":"people","emoji_order":"1521","aliases":[],"aliases_ascii":[],"keywords":[]},"dancer_tone3":{"unicode":"1f483-1f3fd","unicode_alternates":"","name":"dancer tone 3","shortname":":dancer_tone3:","category":"people","emoji_order":"1522","aliases":[],"aliases_ascii":[],"keywords":[]},"dancer_tone4":{"unicode":"1f483-1f3fe","unicode_alternates":"","name":"dancer tone 4","shortname":":dancer_tone4:","category":"people","emoji_order":"1523","aliases":[],"aliases_ascii":[],"keywords":[]},"dancer_tone5":{"unicode":"1f483-1f3ff","unicode_alternates":"","name":"dancer tone 5","shortname":":dancer_tone5:","category":"people","emoji_order":"1524","aliases":[],"aliases_ascii":[],"keywords":[]},"bow_tone1":{"unicode":"1f647-1f3fb","unicode_alternates":"","name":"person bowing deeply tone 1","shortname":":bow_tone1:","category":"people","emoji_order":"1525","aliases":[],"aliases_ascii":[],"keywords":[]},"bow_tone2":{"unicode":"1f647-1f3fc","unicode_alternates":"","name":"person bowing deeply tone 2","shortname":":bow_tone2:","category":"people","emoji_order":"1526","aliases":[],"aliases_ascii":[],"keywords":[]},"bow_tone3":{"unicode":"1f647-1f3fd","unicode_alternates":"","name":"person bowing deeply tone 3","shortname":":bow_tone3:","category":"people","emoji_order":"1527","aliases":[],"aliases_ascii":[],"keywords":[]},"bow_tone4":{"unicode":"1f647-1f3fe","unicode_alternates":"","name":"person bowing deeply tone 4","shortname":":bow_tone4:","category":"people","emoji_order":"1528","aliases":[],"aliases_ascii":[],"keywords":[]},"bow_tone5":{"unicode":"1f647-1f3ff","unicode_alternates":"","name":"person bowing deeply tone 5","shortname":":bow_tone5:","category":"people","emoji_order":"1529","aliases":[],"aliases_ascii":[],"keywords":[]},"information_desk_person_tone1":{"unicode":"1f481-1f3fb","unicode_alternates":"","name":"information desk person tone 1","shortname":":information_desk_person_tone1:","category":"people","emoji_order":"1530","aliases":[],"aliases_ascii":[],"keywords":[]},"information_desk_person_tone2":{"unicode":"1f481-1f3fc","unicode_alternates":"","name":"information desk person tone 2","shortname":":information_desk_person_tone2:","category":"people","emoji_order":"1531","aliases":[],"aliases_ascii":[],"keywords":[]},"information_desk_person_tone3":{"unicode":"1f481-1f3fd","unicode_alternates":"","name":"information desk person tone 3","shortname":":information_desk_person_tone3:","category":"people","emoji_order":"1532","aliases":[],"aliases_ascii":[],"keywords":[]},"information_desk_person_tone4":{"unicode":"1f481-1f3fe","unicode_alternates":"","name":"information desk person tone 4","shortname":":information_desk_person_tone4:","category":"people","emoji_order":"1533","aliases":[],"aliases_ascii":[],"keywords":[]},"information_desk_person_tone5":{"unicode":"1f481-1f3ff","unicode_alternates":"","name":"information desk person tone 5","shortname":":information_desk_person_tone5:","category":"people","emoji_order":"1534","aliases":[],"aliases_ascii":[],"keywords":[]},"no_good_tone1":{"unicode":"1f645-1f3fb","unicode_alternates":"","name":"face with no good gesture tone 1","shortname":":no_good_tone1:","category":"people","emoji_order":"1535","aliases":[],"aliases_ascii":[],"keywords":[]},"no_good_tone2":{"unicode":"1f645-1f3fc","unicode_alternates":"","name":"face with no good gesture tone 2","shortname":":no_good_tone2:","category":"people","emoji_order":"1536","aliases":[],"aliases_ascii":[],"keywords":[]},"no_good_tone3":{"unicode":"1f645-1f3fd","unicode_alternates":"","name":"face with no good gesture tone 3","shortname":":no_good_tone3:","category":"people","emoji_order":"1537","aliases":[],"aliases_ascii":[],"keywords":[]},"no_good_tone4":{"unicode":"1f645-1f3fe","unicode_alternates":"","name":"face with no good gesture tone 4","shortname":":no_good_tone4:","category":"people","emoji_order":"1538","aliases":[],"aliases_ascii":[],"keywords":[]},"no_good_tone5":{"unicode":"1f645-1f3ff","unicode_alternates":"","name":"face with no good gesture tone 5","shortname":":no_good_tone5:","category":"people","emoji_order":"1539","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_woman_tone1":{"unicode":"1f646-1f3fb","unicode_alternates":"","name":"face with ok gesture tone1","shortname":":ok_woman_tone1:","category":"people","emoji_order":"1540","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_woman_tone2":{"unicode":"1f646-1f3fc","unicode_alternates":"","name":"face with ok gesture tone2","shortname":":ok_woman_tone2:","category":"people","emoji_order":"1541","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_woman_tone3":{"unicode":"1f646-1f3fd","unicode_alternates":"","name":"face with ok gesture tone3","shortname":":ok_woman_tone3:","category":"people","emoji_order":"1542","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_woman_tone4":{"unicode":"1f646-1f3fe","unicode_alternates":"","name":"face with ok gesture tone4","shortname":":ok_woman_tone4:","category":"people","emoji_order":"1543","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_woman_tone5":{"unicode":"1f646-1f3ff","unicode_alternates":"","name":"face with ok gesture tone5","shortname":":ok_woman_tone5:","category":"people","emoji_order":"1544","aliases":[],"aliases_ascii":[],"keywords":[]},"raising_hand_tone1":{"unicode":"1f64b-1f3fb","unicode_alternates":"","name":"happy person raising one hand tone1","shortname":":raising_hand_tone1:","category":"people","emoji_order":"1545","aliases":[],"aliases_ascii":[],"keywords":[]},"raising_hand_tone2":{"unicode":"1f64b-1f3fc","unicode_alternates":"","name":"happy person raising one hand tone2","shortname":":raising_hand_tone2:","category":"people","emoji_order":"1546","aliases":[],"aliases_ascii":[],"keywords":[]},"raising_hand_tone3":{"unicode":"1f64b-1f3fd","unicode_alternates":"","name":"happy person raising one hand tone3","shortname":":raising_hand_tone3:","category":"people","emoji_order":"1547","aliases":[],"aliases_ascii":[],"keywords":[]},"raising_hand_tone4":{"unicode":"1f64b-1f3fe","unicode_alternates":"","name":"happy person raising one hand tone4","shortname":":raising_hand_tone4:","category":"people","emoji_order":"1548","aliases":[],"aliases_ascii":[],"keywords":[]},"raising_hand_tone5":{"unicode":"1f64b-1f3ff","unicode_alternates":"","name":"happy person raising one hand tone5","shortname":":raising_hand_tone5:","category":"people","emoji_order":"1549","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_pouting_face_tone1":{"unicode":"1f64e-1f3fb","unicode_alternates":"","name":"person with pouting face tone1","shortname":":person_with_pouting_face_tone1:","category":"people","emoji_order":"1550","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_pouting_face_tone2":{"unicode":"1f64e-1f3fc","unicode_alternates":"","name":"person with pouting face tone2","shortname":":person_with_pouting_face_tone2:","category":"people","emoji_order":"1551","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_pouting_face_tone3":{"unicode":"1f64e-1f3fd","unicode_alternates":"","name":"person with pouting face tone3","shortname":":person_with_pouting_face_tone3:","category":"people","emoji_order":"1552","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_pouting_face_tone4":{"unicode":"1f64e-1f3fe","unicode_alternates":"","name":"person with pouting face tone4","shortname":":person_with_pouting_face_tone4:","category":"people","emoji_order":"1553","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_pouting_face_tone5":{"unicode":"1f64e-1f3ff","unicode_alternates":"","name":"person with pouting face tone5","shortname":":person_with_pouting_face_tone5:","category":"people","emoji_order":"1554","aliases":[],"aliases_ascii":[],"keywords":[]},"person_frowning_tone1":{"unicode":"1f64d-1f3fb","unicode_alternates":"","name":"person frowning tone 1","shortname":":person_frowning_tone1:","category":"people","emoji_order":"1555","aliases":[],"aliases_ascii":[],"keywords":[]},"person_frowning_tone2":{"unicode":"1f64d-1f3fc","unicode_alternates":"","name":"person frowning tone 2","shortname":":person_frowning_tone2:","category":"people","emoji_order":"1556","aliases":[],"aliases_ascii":[],"keywords":[]},"person_frowning_tone3":{"unicode":"1f64d-1f3fd","unicode_alternates":"","name":"person frowning tone 3","shortname":":person_frowning_tone3:","category":"people","emoji_order":"1557","aliases":[],"aliases_ascii":[],"keywords":[]},"person_frowning_tone4":{"unicode":"1f64d-1f3fe","unicode_alternates":"","name":"person frowning tone 4","shortname":":person_frowning_tone4:","category":"people","emoji_order":"1558","aliases":[],"aliases_ascii":[],"keywords":[]},"person_frowning_tone5":{"unicode":"1f64d-1f3ff","unicode_alternates":"","name":"person frowning tone 5","shortname":":person_frowning_tone5:","category":"people","emoji_order":"1559","aliases":[],"aliases_ascii":[],"keywords":[]},"haircut_tone1":{"unicode":"1f487-1f3fb","unicode_alternates":"","name":"haircut tone 1","shortname":":haircut_tone1:","category":"people","emoji_order":"1560","aliases":[],"aliases_ascii":[],"keywords":[]},"haircut_tone2":{"unicode":"1f487-1f3fc","unicode_alternates":"","name":"haircut tone 2","shortname":":haircut_tone2:","category":"people","emoji_order":"1561","aliases":[],"aliases_ascii":[],"keywords":[]},"haircut_tone3":{"unicode":"1f487-1f3fd","unicode_alternates":"","name":"haircut tone 3","shortname":":haircut_tone3:","category":"people","emoji_order":"1562","aliases":[],"aliases_ascii":[],"keywords":[]},"haircut_tone4":{"unicode":"1f487-1f3fe","unicode_alternates":"","name":"haircut tone 4","shortname":":haircut_tone4:","category":"people","emoji_order":"1563","aliases":[],"aliases_ascii":[],"keywords":[]},"haircut_tone5":{"unicode":"1f487-1f3ff","unicode_alternates":"","name":"haircut tone 5","shortname":":haircut_tone5:","category":"people","emoji_order":"1564","aliases":[],"aliases_ascii":[],"keywords":[]},"massage_tone1":{"unicode":"1f486-1f3fb","unicode_alternates":"","name":"face massage tone 1","shortname":":massage_tone1:","category":"people","emoji_order":"1565","aliases":[],"aliases_ascii":[],"keywords":[]},"massage_tone2":{"unicode":"1f486-1f3fc","unicode_alternates":"","name":"face massage tone 2","shortname":":massage_tone2:","category":"people","emoji_order":"1566","aliases":[],"aliases_ascii":[],"keywords":[]},"massage_tone3":{"unicode":"1f486-1f3fd","unicode_alternates":"","name":"face massage tone 3","shortname":":massage_tone3:","category":"people","emoji_order":"1567","aliases":[],"aliases_ascii":[],"keywords":[]},"massage_tone4":{"unicode":"1f486-1f3fe","unicode_alternates":"","name":"face massage tone 4","shortname":":massage_tone4:","category":"people","emoji_order":"1568","aliases":[],"aliases_ascii":[],"keywords":[]},"massage_tone5":{"unicode":"1f486-1f3ff","unicode_alternates":"","name":"face massage tone 5","shortname":":massage_tone5:","category":"people","emoji_order":"1569","aliases":[],"aliases_ascii":[],"keywords":[]},"rowboat_tone1":{"unicode":"1f6a3-1f3fb","unicode_alternates":"","name":"rowboat tone 1","shortname":":rowboat_tone1:","category":"activity","emoji_order":"1570","aliases":[],"aliases_ascii":[],"keywords":[]},"rowboat_tone2":{"unicode":"1f6a3-1f3fc","unicode_alternates":"","name":"rowboat tone 2","shortname":":rowboat_tone2:","category":"activity","emoji_order":"1571","aliases":[],"aliases_ascii":[],"keywords":[]},"rowboat_tone3":{"unicode":"1f6a3-1f3fd","unicode_alternates":"","name":"rowboat tone 3","shortname":":rowboat_tone3:","category":"activity","emoji_order":"1572","aliases":[],"aliases_ascii":[],"keywords":[]},"rowboat_tone4":{"unicode":"1f6a3-1f3fe","unicode_alternates":"","name":"rowboat tone 4","shortname":":rowboat_tone4:","category":"activity","emoji_order":"1573","aliases":[],"aliases_ascii":[],"keywords":[]},"rowboat_tone5":{"unicode":"1f6a3-1f3ff","unicode_alternates":"","name":"rowboat tone 5","shortname":":rowboat_tone5:","category":"activity","emoji_order":"1574","aliases":[],"aliases_ascii":[],"keywords":[]},"swimmer_tone1":{"unicode":"1f3ca-1f3fb","unicode_alternates":"","name":"swimmer tone 1","shortname":":swimmer_tone1:","category":"activity","emoji_order":"1575","aliases":[],"aliases_ascii":[],"keywords":[]},"swimmer_tone2":{"unicode":"1f3ca-1f3fc","unicode_alternates":"","name":"swimmer tone 2","shortname":":swimmer_tone2:","category":"activity","emoji_order":"1576","aliases":[],"aliases_ascii":[],"keywords":[]},"swimmer_tone3":{"unicode":"1f3ca-1f3fd","unicode_alternates":"","name":"swimmer tone 3","shortname":":swimmer_tone3:","category":"activity","emoji_order":"1577","aliases":[],"aliases_ascii":[],"keywords":[]},"swimmer_tone4":{"unicode":"1f3ca-1f3fe","unicode_alternates":"","name":"swimmer tone 4","shortname":":swimmer_tone4:","category":"activity","emoji_order":"1578","aliases":[],"aliases_ascii":[],"keywords":[]},"swimmer_tone5":{"unicode":"1f3ca-1f3ff","unicode_alternates":"","name":"swimmer tone 5","shortname":":swimmer_tone5:","category":"activity","emoji_order":"1579","aliases":[],"aliases_ascii":[],"keywords":[]},"surfer_tone1":{"unicode":"1f3c4-1f3fb","unicode_alternates":"","name":"surfer tone 1","shortname":":surfer_tone1:","category":"activity","emoji_order":"1580","aliases":[],"aliases_ascii":[],"keywords":[]},"surfer_tone2":{"unicode":"1f3c4-1f3fc","unicode_alternates":"","name":"surfer tone 2","shortname":":surfer_tone2:","category":"activity","emoji_order":"1581","aliases":[],"aliases_ascii":[],"keywords":[]},"surfer_tone3":{"unicode":"1f3c4-1f3fd","unicode_alternates":"","name":"surfer tone 3","shortname":":surfer_tone3:","category":"activity","emoji_order":"1582","aliases":[],"aliases_ascii":[],"keywords":[]},"surfer_tone4":{"unicode":"1f3c4-1f3fe","unicode_alternates":"","name":"surfer tone 4","shortname":":surfer_tone4:","category":"activity","emoji_order":"1583","aliases":[],"aliases_ascii":[],"keywords":[]},"surfer_tone5":{"unicode":"1f3c4-1f3ff","unicode_alternates":"","name":"surfer tone 5","shortname":":surfer_tone5:","category":"activity","emoji_order":"1584","aliases":[],"aliases_ascii":[],"keywords":[]},"bath_tone1":{"unicode":"1f6c0-1f3fb","unicode_alternates":"","name":"bath tone 1","shortname":":bath_tone1:","category":"activity","emoji_order":"1585","aliases":[],"aliases_ascii":[],"keywords":[]},"bath_tone2":{"unicode":"1f6c0-1f3fc","unicode_alternates":"","name":"bath tone 2","shortname":":bath_tone2:","category":"activity","emoji_order":"1586","aliases":[],"aliases_ascii":[],"keywords":[]},"bath_tone3":{"unicode":"1f6c0-1f3fd","unicode_alternates":"","name":"bath tone 3","shortname":":bath_tone3:","category":"activity","emoji_order":"1587","aliases":[],"aliases_ascii":[],"keywords":[]},"bath_tone4":{"unicode":"1f6c0-1f3fe","unicode_alternates":"","name":"bath tone 4","shortname":":bath_tone4:","category":"activity","emoji_order":"1588","aliases":[],"aliases_ascii":[],"keywords":[]},"bath_tone5":{"unicode":"1f6c0-1f3ff","unicode_alternates":"","name":"bath tone 5","shortname":":bath_tone5:","category":"activity","emoji_order":"1589","aliases":[],"aliases_ascii":[],"keywords":[]},"basketball_player_tone1":{"unicode":"26f9-1f3fb","unicode_alternates":"","name":"person with ball tone 1","shortname":":basketball_player_tone1:","category":"activity","emoji_order":"1590","aliases":[":person_with_ball_tone1:"],"aliases_ascii":[],"keywords":[]},"basketball_player_tone2":{"unicode":"26f9-1f3fc","unicode_alternates":"","name":"person with ball tone 2","shortname":":basketball_player_tone2:","category":"activity","emoji_order":"1591","aliases":[":person_with_ball_tone2:"],"aliases_ascii":[],"keywords":[]},"basketball_player_tone3":{"unicode":"26f9-1f3fd","unicode_alternates":"","name":"person with ball tone 3","shortname":":basketball_player_tone3:","category":"activity","emoji_order":"1592","aliases":[":person_with_ball_tone3:"],"aliases_ascii":[],"keywords":[]},"basketball_player_tone4":{"unicode":"26f9-1f3fe","unicode_alternates":"","name":"person with ball tone 4","shortname":":basketball_player_tone4:","category":"activity","emoji_order":"1593","aliases":[":person_with_ball_tone4:"],"aliases_ascii":[],"keywords":[]},"basketball_player_tone5":{"unicode":"26f9-1f3ff","unicode_alternates":"","name":"person with ball tone 5","shortname":":basketball_player_tone5:","category":"activity","emoji_order":"1594","aliases":[":person_with_ball_tone5:"],"aliases_ascii":[],"keywords":[]},"lifter_tone1":{"unicode":"1f3cb-1f3fb","unicode_alternates":"","name":"weight lifter tone 1","shortname":":lifter_tone1:","category":"activity","emoji_order":"1595","aliases":[":weight_lifter_tone1:"],"aliases_ascii":[],"keywords":[]},"lifter_tone2":{"unicode":"1f3cb-1f3fc","unicode_alternates":"","name":"weight lifter tone 2","shortname":":lifter_tone2:","category":"activity","emoji_order":"1596","aliases":[":weight_lifter_tone2:"],"aliases_ascii":[],"keywords":[]},"lifter_tone3":{"unicode":"1f3cb-1f3fd","unicode_alternates":"","name":"weight lifter tone 3","shortname":":lifter_tone3:","category":"activity","emoji_order":"1597","aliases":[":weight_lifter_tone3:"],"aliases_ascii":[],"keywords":[]},"lifter_tone4":{"unicode":"1f3cb-1f3fe","unicode_alternates":"","name":"weight lifter tone 4","shortname":":lifter_tone4:","category":"activity","emoji_order":"1598","aliases":[":weight_lifter_tone4:"],"aliases_ascii":[],"keywords":[]},"lifter_tone5":{"unicode":"1f3cb-1f3ff","unicode_alternates":"","name":"weight lifter tone 5","shortname":":lifter_tone5:","category":"activity","emoji_order":"1599","aliases":[":weight_lifter_tone5:"],"aliases_ascii":[],"keywords":[]},"bicyclist_tone1":{"unicode":"1f6b4-1f3fb","unicode_alternates":"","name":"bicyclist tone 1","shortname":":bicyclist_tone1:","category":"activity","emoji_order":"1600","aliases":[],"aliases_ascii":[],"keywords":[]},"bicyclist_tone2":{"unicode":"1f6b4-1f3fc","unicode_alternates":"","name":"bicyclist tone 2","shortname":":bicyclist_tone2:","category":"activity","emoji_order":"1601","aliases":[],"aliases_ascii":[],"keywords":[]},"bicyclist_tone3":{"unicode":"1f6b4-1f3fd","unicode_alternates":"","name":"bicyclist tone 3","shortname":":bicyclist_tone3:","category":"activity","emoji_order":"1602","aliases":[],"aliases_ascii":[],"keywords":[]},"bicyclist_tone4":{"unicode":"1f6b4-1f3fe","unicode_alternates":"","name":"bicyclist tone 4","shortname":":bicyclist_tone4:","category":"activity","emoji_order":"1603","aliases":[],"aliases_ascii":[],"keywords":[]},"bicyclist_tone5":{"unicode":"1f6b4-1f3ff","unicode_alternates":"","name":"bicyclist tone 5","shortname":":bicyclist_tone5:","category":"activity","emoji_order":"1604","aliases":[],"aliases_ascii":[],"keywords":[]},"mountain_bicyclist_tone1":{"unicode":"1f6b5-1f3fb","unicode_alternates":"","name":"mountain bicyclist tone 1","shortname":":mountain_bicyclist_tone1:","category":"activity","emoji_order":"1605","aliases":[],"aliases_ascii":[],"keywords":[]},"mountain_bicyclist_tone2":{"unicode":"1f6b5-1f3fc","unicode_alternates":"","name":"mountain bicyclist tone 2","shortname":":mountain_bicyclist_tone2:","category":"activity","emoji_order":"1606","aliases":[],"aliases_ascii":[],"keywords":[]},"mountain_bicyclist_tone3":{"unicode":"1f6b5-1f3fd","unicode_alternates":"","name":"mountain bicyclist tone 3","shortname":":mountain_bicyclist_tone3:","category":"activity","emoji_order":"1607","aliases":[],"aliases_ascii":[],"keywords":[]},"mountain_bicyclist_tone4":{"unicode":"1f6b5-1f3fe","unicode_alternates":"","name":"mountain bicyclist tone 4","shortname":":mountain_bicyclist_tone4:","category":"activity","emoji_order":"1608","aliases":[],"aliases_ascii":[],"keywords":[]},"mountain_bicyclist_tone5":{"unicode":"1f6b5-1f3ff","unicode_alternates":"","name":"mountain bicyclist tone 5","shortname":":mountain_bicyclist_tone5:","category":"activity","emoji_order":"1609","aliases":[],"aliases_ascii":[],"keywords":[]},"horse_racing_tone1":{"unicode":"1f3c7-1f3fb","unicode_alternates":"","name":"horse racing tone 1","shortname":":horse_racing_tone1:","category":"activity","emoji_order":"1610","aliases":[],"aliases_ascii":[],"keywords":[]},"horse_racing_tone2":{"unicode":"1f3c7-1f3fc","unicode_alternates":"","name":"horse racing tone 2","shortname":":horse_racing_tone2:","category":"activity","emoji_order":"1611","aliases":[],"aliases_ascii":[],"keywords":[]},"horse_racing_tone3":{"unicode":"1f3c7-1f3fd","unicode_alternates":"","name":"horse racing tone 3","shortname":":horse_racing_tone3:","category":"activity","emoji_order":"1612","aliases":[],"aliases_ascii":[],"keywords":[]},"horse_racing_tone4":{"unicode":"1f3c7-1f3fe","unicode_alternates":"","name":"horse racing tone 4","shortname":":horse_racing_tone4:","category":"activity","emoji_order":"1613","aliases":[],"aliases_ascii":[],"keywords":[]},"horse_racing_tone5":{"unicode":"1f3c7-1f3ff","unicode_alternates":"","name":"horse racing tone 5","shortname":":horse_racing_tone5:","category":"activity","emoji_order":"1614","aliases":[],"aliases_ascii":[],"keywords":[]},"spy_tone1":{"unicode":"1f575-1f3fb","unicode_alternates":"","name":"sleuth or spy tone 1","shortname":":spy_tone1:","category":"people","emoji_order":"1615","aliases":[":sleuth_or_spy_tone1:"],"aliases_ascii":[],"keywords":[]},"spy_tone2":{"unicode":"1f575-1f3fc","unicode_alternates":"","name":"sleuth or spy tone 2","shortname":":spy_tone2:","category":"people","emoji_order":"1616","aliases":[":sleuth_or_spy_tone2:"],"aliases_ascii":[],"keywords":[]},"spy_tone3":{"unicode":"1f575-1f3fd","unicode_alternates":"","name":"sleuth or spy tone 3","shortname":":spy_tone3:","category":"people","emoji_order":"1617","aliases":[":sleuth_or_spy_tone3:"],"aliases_ascii":[],"keywords":[]},"spy_tone4":{"unicode":"1f575-1f3fe","unicode_alternates":"","name":"sleuth or spy tone 4","shortname":":spy_tone4:","category":"people","emoji_order":"1618","aliases":[":sleuth_or_spy_tone4:"],"aliases_ascii":[],"keywords":[]},"spy_tone5":{"unicode":"1f575-1f3ff","unicode_alternates":"","name":"sleuth or spy tone 5","shortname":":spy_tone5:","category":"people","emoji_order":"1619","aliases":[":sleuth_or_spy_tone5:"],"aliases_ascii":[],"keywords":[]},"tone1":{"unicode":"1f3fb","unicode_alternates":"","name":"emoji modifier Fitzpatrick type-1-2","shortname":":tone1:","category":"modifier","emoji_order":"1620","aliases":[],"aliases_ascii":[],"keywords":[]},"tone2":{"unicode":"1f3fc","unicode_alternates":"","name":"emoji modifier Fitzpatrick type-3","shortname":":tone2:","category":"modifier","emoji_order":"1621","aliases":[],"aliases_ascii":[],"keywords":[]},"tone3":{"unicode":"1f3fd","unicode_alternates":"","name":"emoji modifier Fitzpatrick type-4","shortname":":tone3:","category":"modifier","emoji_order":"1622","aliases":[],"aliases_ascii":[],"keywords":[]},"tone4":{"unicode":"1f3fe","unicode_alternates":"","name":"emoji modifier Fitzpatrick type-5","shortname":":tone4:","category":"modifier","emoji_order":"1623","aliases":[],"aliases_ascii":[],"keywords":[]},"tone5":{"unicode":"1f3ff","unicode_alternates":"","name":"emoji modifier Fitzpatrick type-6","shortname":":tone5:","category":"modifier","emoji_order":"1624","aliases":[],"aliases_ascii":[],"keywords":[]}} \ No newline at end of file
diff --git a/library/facebook.php b/library/facebook.php
deleted file mode 100644
index eebe3b464..000000000
--- a/library/facebook.php
+++ /dev/null
@@ -1,955 +0,0 @@
-<?php
-
-if (!function_exists('curl_init')) {
- throw new Exception('Facebook needs the CURL PHP extension.');
-}
-if (!function_exists('json_decode')) {
- throw new Exception('Facebook needs the JSON PHP extension.');
-}
-
-/**
- * Thrown when an API call returns an exception.
- *
- * @author Naitik Shah <naitik@facebook.com>
- */
-class FacebookApiException extends Exception
-{
- /**
- * The result from the API server that represents the exception information.
- */
- protected $result;
-
- /**
- * Make a new API Exception with the given result.
- *
- * @param Array $result the result from the API server
- */
- public function __construct($result) {
- $this->result = $result;
-
- $code = isset($result['error_code']) ? $result['error_code'] : 0;
-
- if (isset($result['error_description'])) {
- // OAuth 2.0 Draft 10 style
- $msg = $result['error_description'];
- } else if (isset($result['error']) && is_array($result['error'])) {
- // OAuth 2.0 Draft 00 style
- $msg = $result['error']['message'];
- } else if (isset($result['error_msg'])) {
- // Rest server style
- $msg = $result['error_msg'];
- } else {
- $msg = 'Unknown Error. Check getResult()';
- }
-
- parent::__construct($msg, $code);
- }
-
- /**
- * Return the associated result object returned by the API server.
- *
- * @returns Array the result from the API server
- */
- public function getResult() {
- return $this->result;
- }
-
- /**
- * Returns the associated type for the error. This will default to
- * 'Exception' when a type is not available.
- *
- * @return String
- */
- public function getType() {
- if (isset($this->result['error'])) {
- $error = $this->result['error'];
- if (is_string($error)) {
- // OAuth 2.0 Draft 10 style
- return $error;
- } else if (is_array($error)) {
- // OAuth 2.0 Draft 00 style
- if (isset($error['type'])) {
- return $error['type'];
- }
- }
- }
- return 'Exception';
- }
-
- /**
- * To make debugging easier.
- *
- * @returns String the string representation of the error
- */
- public function __toString() {
- $str = $this->getType() . ': ';
- if ($this->code != 0) {
- $str .= $this->code . ': ';
- }
- return $str . $this->message;
- }
-}
-
-/**
- * Provides access to the Facebook Platform.
- *
- * @author Naitik Shah <naitik@facebook.com>
- */
-class Facebook
-{
- /**
- * Version.
- */
- const VERSION = '2.1.2';
-
- /**
- * Default options for curl.
- */
- public static $CURL_OPTS = array(
- CURLOPT_CONNECTTIMEOUT => 10,
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_TIMEOUT => 60,
- CURLOPT_USERAGENT => 'facebook-php-2.0',
- );
-
- /**
- * List of query parameters that get automatically dropped when rebuilding
- * the current URL.
- */
- protected static $DROP_QUERY_PARAMS = array(
- 'session',
- 'signed_request',
- );
-
- /**
- * Maps aliases to Facebook domains.
- */
- public static $DOMAIN_MAP = array(
- 'api' => 'https://api.facebook.com/',
- 'api_read' => 'https://api-read.facebook.com/',
- 'graph' => 'https://graph.facebook.com/',
- 'www' => 'https://www.facebook.com/',
- );
-
- /**
- * The Application ID.
- */
- protected $appId;
-
- /**
- * The Application API Secret.
- */
- protected $apiSecret;
-
- /**
- * The active user session, if one is available.
- */
- protected $session;
-
- /**
- * The data from the signed_request token.
- */
- protected $signedRequest;
-
- /**
- * Indicates that we already loaded the session as best as we could.
- */
- protected $sessionLoaded = false;
-
- /**
- * Indicates if Cookie support should be enabled.
- */
- protected $cookieSupport = false;
-
- /**
- * Base domain for the Cookie.
- */
- protected $baseDomain = '';
-
- /**
- * Indicates if the CURL based @ syntax for file uploads is enabled.
- */
- protected $fileUploadSupport = false;
-
- /**
- * Initialize a Facebook Application.
- *
- * The configuration:
- * - appId: the application ID
- * - secret: the application secret
- * - cookie: (optional) boolean true to enable cookie support
- * - domain: (optional) domain for the cookie
- * - fileUpload: (optional) boolean indicating if file uploads are enabled
- *
- * @param Array $config the application configuration
- */
- public function __construct($config) {
- $this->setAppId($config['appId']);
- $this->setApiSecret($config['secret']);
- if (isset($config['cookie'])) {
- $this->setCookieSupport($config['cookie']);
- }
- if (isset($config['domain'])) {
- $this->setBaseDomain($config['domain']);
- }
- if (isset($config['fileUpload'])) {
- $this->setFileUploadSupport($config['fileUpload']);
- }
- }
-
- /**
- * Set the Application ID.
- *
- * @param String $appId the Application ID
- */
- public function setAppId($appId) {
- $this->appId = $appId;
- return $this;
- }
-
- /**
- * Get the Application ID.
- *
- * @return String the Application ID
- */
- public function getAppId() {
- return $this->appId;
- }
-
- /**
- * Set the API Secret.
- *
- * @param String $appId the API Secret
- */
- public function setApiSecret($apiSecret) {
- $this->apiSecret = $apiSecret;
- return $this;
- }
-
- /**
- * Get the API Secret.
- *
- * @return String the API Secret
- */
- public function getApiSecret() {
- return $this->apiSecret;
- }
-
- /**
- * Set the Cookie Support status.
- *
- * @param Boolean $cookieSupport the Cookie Support status
- */
- public function setCookieSupport($cookieSupport) {
- $this->cookieSupport = $cookieSupport;
- return $this;
- }
-
- /**
- * Get the Cookie Support status.
- *
- * @return Boolean the Cookie Support status
- */
- public function useCookieSupport() {
- return $this->cookieSupport;
- }
-
- /**
- * Set the base domain for the Cookie.
- *
- * @param String $domain the base domain
- */
- public function setBaseDomain($domain) {
- $this->baseDomain = $domain;
- return $this;
- }
-
- /**
- * Get the base domain for the Cookie.
- *
- * @return String the base domain
- */
- public function getBaseDomain() {
- return $this->baseDomain;
- }
-
- /**
- * Set the file upload support status.
- *
- * @param String $domain the base domain
- */
- public function setFileUploadSupport($fileUploadSupport) {
- $this->fileUploadSupport = $fileUploadSupport;
- return $this;
- }
-
- /**
- * Get the file upload support status.
- *
- * @return String the base domain
- */
- public function useFileUploadSupport() {
- return $this->fileUploadSupport;
- }
-
- /**
- * Get the data from a signed_request token
- *
- * @return String the base domain
- */
- public function getSignedRequest() {
- if (!$this->signedRequest) {
- if (isset($_REQUEST['signed_request'])) {
- $this->signedRequest = $this->parseSignedRequest(
- $_REQUEST['signed_request']);
- }
- }
- return $this->signedRequest;
- }
-
- /**
- * Set the Session.
- *
- * @param Array $session the session
- * @param Boolean $write_cookie indicate if a cookie should be written. this
- * value is ignored if cookie support has been disabled.
- */
- public function setSession($session=null, $write_cookie=true) {
- $session = $this->validateSessionObject($session);
- $this->sessionLoaded = true;
- $this->session = $session;
- if ($write_cookie) {
- $this->setCookieFromSession($session);
- }
- return $this;
- }
-
- /**
- * Get the session object. This will automatically look for a signed session
- * sent via the signed_request, Cookie or Query Parameters if needed.
- *
- * @return Array the session
- */
- public function getSession() {
- if (!$this->sessionLoaded) {
- $session = null;
- $write_cookie = true;
-
- // try loading session from signed_request in $_REQUEST
- $signedRequest = $this->getSignedRequest();
- if ($signedRequest) {
- // sig is good, use the signedRequest
- $session = $this->createSessionFromSignedRequest($signedRequest);
- }
-
- // try loading session from $_REQUEST
- if (!$session && isset($_REQUEST['session'])) {
- $session = json_decode(
- get_magic_quotes_gpc()
- ? stripslashes($_REQUEST['session'])
- : $_REQUEST['session'],
- true
- );
- $session = $this->validateSessionObject($session);
- }
-
- // try loading session from cookie if necessary
- if (!$session && $this->useCookieSupport()) {
- $cookieName = $this->getSessionCookieName();
- if (isset($_COOKIE[$cookieName])) {
- $session = array();
- parse_str(trim(
- get_magic_quotes_gpc()
- ? stripslashes($_COOKIE[$cookieName])
- : $_COOKIE[$cookieName],
- '"'
- ), $session);
- $session = $this->validateSessionObject($session);
- // write only if we need to delete a invalid session cookie
- $write_cookie = empty($session);
- }
- }
-
- $this->setSession($session, $write_cookie);
- }
-
- return $this->session;
- }
-
- /**
- * Get the UID from the session.
- *
- * @return String the UID if available
- */
- public function getUser() {
- $session = $this->getSession();
- return $session ? $session['uid'] : null;
- }
-
- /**
- * Gets a OAuth access token.
- *
- * @return String the access token
- */
- public function getAccessToken() {
- $session = $this->getSession();
- // either user session signed, or app signed
- if ($session) {
- return $session['access_token'];
- } else {
- return $this->getAppId() .'|'. $this->getApiSecret();
- }
- }
-
- /**
- * Get a Login URL for use with redirects. By default, full page redirect is
- * assumed. If you are using the generated URL with a window.open() call in
- * JavaScript, you can pass in display=popup as part of the $params.
- *
- * The parameters:
- * - next: the url to go to after a successful login
- * - cancel_url: the url to go to after the user cancels
- * - req_perms: comma separated list of requested extended perms
- * - display: can be "page" (default, full page) or "popup"
- *
- * @param Array $params provide custom parameters
- * @return String the URL for the login flow
- */
- public function getLoginUrl($params=array()) {
- $currentUrl = $this->getCurrentUrl();
- return $this->getUrl(
- 'www',
- 'login.php',
- array_merge(array(
- 'api_key' => $this->getAppId(),
- 'cancel_url' => $currentUrl,
- 'display' => 'page',
- 'fbconnect' => 1,
- 'next' => $currentUrl,
- 'return_session' => 1,
- 'session_version' => 3,
- 'v' => '1.0',
- ), $params)
- );
- }
-
- /**
- * Get a Logout URL suitable for use with redirects.
- *
- * The parameters:
- * - next: the url to go to after a successful logout
- *
- * @param Array $params provide custom parameters
- * @return String the URL for the logout flow
- */
- public function getLogoutUrl($params=array()) {
- return $this->getUrl(
- 'www',
- 'logout.php',
- array_merge(array(
- 'next' => $this->getCurrentUrl(),
- 'access_token' => $this->getAccessToken(),
- ), $params)
- );
- }
-
- /**
- * Get a login status URL to fetch the status from facebook.
- *
- * The parameters:
- * - ok_session: the URL to go to if a session is found
- * - no_session: the URL to go to if the user is not connected
- * - no_user: the URL to go to if the user is not signed into facebook
- *
- * @param Array $params provide custom parameters
- * @return String the URL for the logout flow
- */
- public function getLoginStatusUrl($params=array()) {
- return $this->getUrl(
- 'www',
- 'extern/login_status.php',
- array_merge(array(
- 'api_key' => $this->getAppId(),
- 'no_session' => $this->getCurrentUrl(),
- 'no_user' => $this->getCurrentUrl(),
- 'ok_session' => $this->getCurrentUrl(),
- 'session_version' => 3,
- ), $params)
- );
- }
-
- /**
- * Make an API call.
- *
- * @param Array $params the API call parameters
- * @return the decoded response
- */
- public function api(/* polymorphic */) {
- $args = func_get_args();
- if (is_array($args[0])) {
- return $this->_restserver($args[0]);
- } else {
- return call_user_func_array(array($this, '_graph'), $args);
- }
- }
-
- /**
- * Invoke the old restserver.php endpoint.
- *
- * @param Array $params method call object
- * @return the decoded response object
- * @throws FacebookApiException
- */
- protected function _restserver($params) {
- // generic application level parameters
- $params['api_key'] = $this->getAppId();
- $params['format'] = 'json-strings';
-
- $result = json_decode($this->_oauthRequest(
- $this->getApiUrl($params['method']),
- $params
- ), true);
-
- // results are returned, errors are thrown
- if (is_array($result) && isset($result['error_code'])) {
- throw new FacebookApiException($result);
- }
- return $result;
- }
-
- /**
- * Invoke the Graph API.
- *
- * @param String $path the path (required)
- * @param String $method the http method (default 'GET')
- * @param Array $params the query/post data
- * @return the decoded response object
- * @throws FacebookApiException
- */
- protected function _graph($path, $method='GET', $params=array()) {
- if (is_array($method) && empty($params)) {
- $params = $method;
- $method = 'GET';
- }
- $params['method'] = $method; // method override as we always do a POST
-
- $result = json_decode($this->_oauthRequest(
- $this->getUrl('graph', $path),
- $params
- ), true);
-
- // results are returned, errors are thrown
- if (is_array($result) && isset($result['error'])) {
- $e = new FacebookApiException($result);
- switch ($e->getType()) {
- // OAuth 2.0 Draft 00 style
- case 'OAuthException':
- // OAuth 2.0 Draft 10 style
- case 'invalid_token':
- $this->setSession(null);
- }
- throw $e;
- }
- return $result;
- }
-
- /**
- * Make a OAuth Request
- *
- * @param String $path the path (required)
- * @param Array $params the query/post data
- * @return the decoded response object
- * @throws FacebookApiException
- */
- protected function _oauthRequest($url, $params) {
- if (!isset($params['access_token'])) {
- $params['access_token'] = $this->getAccessToken();
- }
-
- // json_encode all params values that are not strings
- foreach ($params as $key => $value) {
- if (!is_string($value)) {
- $params[$key] = json_encode($value);
- }
- }
- return $this->makeRequest($url, $params);
- }
-
- /**
- * Makes an HTTP request. This method can be overriden by subclasses if
- * developers want to do fancier things or use something other than curl to
- * make the request.
- *
- * @param String $url the URL to make the request to
- * @param Array $params the parameters to use for the POST body
- * @param CurlHandler $ch optional initialized curl handle
- * @return String the response text
- */
- protected function makeRequest($url, $params, $ch=null) {
- if (!$ch) {
- $ch = curl_init();
- }
-
- $opts = self::$CURL_OPTS;
- if ($this->useFileUploadSupport()) {
- $opts[CURLOPT_POSTFIELDS] = $params;
- } else {
- $opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&');
- }
- $opts[CURLOPT_URL] = $url;
-
- // disable the 'Expect: 100-continue' behaviour. This causes CURL to wait
- // for 2 seconds if the server does not support this header.
- if (isset($opts[CURLOPT_HTTPHEADER])) {
- $existing_headers = $opts[CURLOPT_HTTPHEADER];
- $existing_headers[] = 'Expect:';
- $opts[CURLOPT_HTTPHEADER] = $existing_headers;
- } else {
- $opts[CURLOPT_HTTPHEADER] = array('Expect:');
- }
-
- curl_setopt_array($ch, $opts);
- $result = curl_exec($ch);
- if ($result === false) {
- $e = new FacebookApiException(array(
- 'error_code' => curl_errno($ch),
- 'error' => array(
- 'message' => curl_error($ch),
- 'type' => 'CurlException',
- ),
- ));
- curl_close($ch);
- throw $e;
- }
- curl_close($ch);
- return $result;
- }
-
- /**
- * The name of the Cookie that contains the session.
- *
- * @return String the cookie name
- */
- protected function getSessionCookieName() {
- return 'fbs_' . $this->getAppId();
- }
-
- /**
- * Set a JS Cookie based on the _passed in_ session. It does not use the
- * currently stored session -- you need to explicitly pass it in.
- *
- * @param Array $session the session to use for setting the cookie
- */
- protected function setCookieFromSession($session=null) {
- if (!$this->useCookieSupport()) {
- return;
- }
-
- $cookieName = $this->getSessionCookieName();
- $value = 'deleted';
- $expires = time() - 3600;
- $domain = $this->getBaseDomain();
- if ($session) {
- $value = '"' . http_build_query($session, null, '&') . '"';
- if (isset($session['base_domain'])) {
- $domain = $session['base_domain'];
- }
- $expires = $session['expires'];
- }
-
- // prepend dot if a domain is found
- if ($domain) {
- $domain = '.' . $domain;
- }
-
- // if an existing cookie is not set, we dont need to delete it
- if ($value == 'deleted' && empty($_COOKIE[$cookieName])) {
- return;
- }
-
- if (headers_sent()) {
- self::errorLog('Could not set cookie. Headers already sent.');
-
- // ignore for code coverage as we will never be able to setcookie in a CLI
- // environment
- // @codeCoverageIgnoreStart
- } else {
- setcookie($cookieName, $value, $expires, '/', $domain);
- }
- // @codeCoverageIgnoreEnd
- }
-
- /**
- * Validates a session_version=3 style session object.
- *
- * @param Array $session the session object
- * @return Array the session object if it validates, null otherwise
- */
- protected function validateSessionObject($session) {
- // make sure some essential fields exist
- if (is_array($session) &&
- isset($session['uid']) &&
- isset($session['access_token']) &&
- isset($session['sig'])) {
- // validate the signature
- $session_without_sig = $session;
- unset($session_without_sig['sig']);
- $expected_sig = self::generateSignature(
- $session_without_sig,
- $this->getApiSecret()
- );
- if ($session['sig'] != $expected_sig) {
- self::errorLog('Got invalid session signature in cookie.');
- $session = null;
- }
- // check expiry time
- } else {
- $session = null;
- }
- return $session;
- }
-
- /**
- * Returns something that looks like our JS session object from the
- * signed token's data
- *
- * TODO: Nuke this once the login flow uses OAuth2
- *
- * @param Array the output of getSignedRequest
- * @return Array Something that will work as a session
- */
- protected function createSessionFromSignedRequest($data) {
- if (!isset($data['oauth_token'])) {
- return null;
- }
-
- $session = array(
- 'uid' => $data['user_id'],
- 'access_token' => $data['oauth_token'],
- 'expires' => $data['expires'],
- );
-
- // put a real sig, so that validateSignature works
- $session['sig'] = self::generateSignature(
- $session,
- $this->getApiSecret()
- );
-
- return $session;
- }
-
- /**
- * Parses a signed_request and validates the signature.
- * Then saves it in $this->signed_data
- *
- * @param String A signed token
- * @param Boolean Should we remove the parts of the payload that
- * are used by the algorithm?
- * @return Array the payload inside it or null if the sig is wrong
- */
- protected function parseSignedRequest($signed_request) {
- list($encoded_sig, $payload) = explode('.', $signed_request, 2);
-
- // decode the data
- $sig = self::base64UrlDecode($encoded_sig);
- $data = json_decode(self::base64UrlDecode($payload), true);
-
- if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
- self::errorLog('Unknown algorithm. Expected HMAC-SHA256');
- return null;
- }
-
- // check sig
- $expected_sig = hash_hmac('sha256', $payload,
- $this->getApiSecret(), $raw = true);
- if ($sig !== $expected_sig) {
- self::errorLog('Bad Signed JSON signature!');
- return null;
- }
-
- return $data;
- }
-
- /**
- * Build the URL for api given parameters.
- *
- * @param $method String the method name.
- * @return String the URL for the given parameters
- */
- protected function getApiUrl($method) {
- static $READ_ONLY_CALLS =
- array('admin.getallocation' => 1,
- 'admin.getappproperties' => 1,
- 'admin.getbannedusers' => 1,
- 'admin.getlivestreamvialink' => 1,
- 'admin.getmetrics' => 1,
- 'admin.getrestrictioninfo' => 1,
- 'application.getpublicinfo' => 1,
- 'auth.getapppublickey' => 1,
- 'auth.getsession' => 1,
- 'auth.getsignedpublicsessiondata' => 1,
- 'comments.get' => 1,
- 'connect.getunconnectedfriendscount' => 1,
- 'dashboard.getactivity' => 1,
- 'dashboard.getcount' => 1,
- 'dashboard.getglobalnews' => 1,
- 'dashboard.getnews' => 1,
- 'dashboard.multigetcount' => 1,
- 'dashboard.multigetnews' => 1,
- 'data.getcookies' => 1,
- 'events.get' => 1,
- 'events.getmembers' => 1,
- 'fbml.getcustomtags' => 1,
- 'feed.getappfriendstories' => 1,
- 'feed.getregisteredtemplatebundlebyid' => 1,
- 'feed.getregisteredtemplatebundles' => 1,
- 'fql.multiquery' => 1,
- 'fql.query' => 1,
- 'friends.arefriends' => 1,
- 'friends.get' => 1,
- 'friends.getappusers' => 1,
- 'friends.getlists' => 1,
- 'friends.getmutualfriends' => 1,
- 'gifts.get' => 1,
- 'groups.get' => 1,
- 'groups.getmembers' => 1,
- 'intl.gettranslations' => 1,
- 'links.get' => 1,
- 'notes.get' => 1,
- 'notifications.get' => 1,
- 'pages.getinfo' => 1,
- 'pages.isadmin' => 1,
- 'pages.isappadded' => 1,
- 'pages.isfan' => 1,
- 'permissions.checkavailableapiaccess' => 1,
- 'permissions.checkgrantedapiaccess' => 1,
- 'photos.get' => 1,
- 'photos.getalbums' => 1,
- 'photos.gettags' => 1,
- 'profile.getinfo' => 1,
- 'profile.getinfooptions' => 1,
- 'stream.get' => 1,
- 'stream.getcomments' => 1,
- 'stream.getfilters' => 1,
- 'users.getinfo' => 1,
- 'users.getloggedinuser' => 1,
- 'users.getstandardinfo' => 1,
- 'users.hasapppermission' => 1,
- 'users.isappuser' => 1,
- 'users.isverified' => 1,
- 'video.getuploadlimits' => 1);
- $name = 'api';
- if (isset($READ_ONLY_CALLS[strtolower($method)])) {
- $name = 'api_read';
- }
- return self::getUrl($name, 'restserver.php');
- }
-
- /**
- * Build the URL for given domain alias, path and parameters.
- *
- * @param $name String the name of the domain
- * @param $path String optional path (without a leading slash)
- * @param $params Array optional query parameters
- * @return String the URL for the given parameters
- */
- protected function getUrl($name, $path='', $params=array()) {
- $url = self::$DOMAIN_MAP[$name];
- if ($path) {
- if ($path[0] === '/') {
- $path = substr($path, 1);
- }
- $url .= $path;
- }
- if ($params) {
- $url .= '?' . http_build_query($params, null, '&');
- }
- return $url;
- }
-
- /**
- * Returns the Current URL, stripping it of known FB parameters that should
- * not persist.
- *
- * @return String the current URL
- */
- protected function getCurrentUrl() {
- $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'
- ? 'https://'
- : 'http://';
- $currentUrl = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
- $parts = parse_url($currentUrl);
-
- // drop known fb params
- $query = '';
- if (!empty($parts['query'])) {
- $params = array();
- parse_str($parts['query'], $params);
- foreach(self::$DROP_QUERY_PARAMS as $key) {
- unset($params[$key]);
- }
- if (!empty($params)) {
- $query = '?' . http_build_query($params, null, '&');
- }
- }
-
- // use port if non default
- $port =
- isset($parts['port']) &&
- (($protocol === 'http://' && $parts['port'] !== 80) ||
- ($protocol === 'https://' && $parts['port'] !== 443))
- ? ':' . $parts['port'] : '';
-
- // rebuild
- return $protocol . $parts['host'] . $port . $parts['path'] . $query;
- }
-
- /**
- * Generate a signature for the given params and secret.
- *
- * @param Array $params the parameters to sign
- * @param String $secret the secret to sign with
- * @return String the generated signature
- */
- protected static function generateSignature($params, $secret) {
- // work with sorted data
- ksort($params);
-
- // generate the base string
- $base_string = '';
- foreach($params as $key => $value) {
- $base_string .= $key . '=' . $value;
- }
- $base_string .= $secret;
-
- return md5($base_string);
- }
-
- /**
- * Prints to the error log if you aren't in command line mode.
- *
- * @param String log message
- */
- protected static function errorLog($msg) {
- // disable error log if we are running in a CLI environment
- // @codeCoverageIgnoreStart
- if (php_sapi_name() != 'cli') {
- error_log($msg);
- }
- // uncomment this if you want to see the errors on the page
- // print 'error_log: '.$msg."\n";
- // @codeCoverageIgnoreEnd
- }
-
- /**
- * Base64 encoding that doesn't need to be urlencode()ed.
- * Exactly the same as base64_encode except it uses
- * - instead of +
- * _ instead of /
- *
- * @param String base64UrlEncodeded string
- */
- protected static function base64UrlDecode($input) {
- return base64_decode(strtr($input, '-_', '+/'));
- }
-}
diff --git a/library/html5.js b/library/html5.js
deleted file mode 100644
index 448cebd79..000000000
--- a/library/html5.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
-*/
-(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
-a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}</style>";
-c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
-"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);
-if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);
diff --git a/library/markdown.php b/library/markdown.php
index f548fc26c..0e3275ff2 100644
--- a/library/markdown.php
+++ b/library/markdown.php
@@ -1136,7 +1136,7 @@ class Markdown_Parser {
# Create a code span markup for $code. Called from handleSpanToken.
#
$code = htmlspecialchars(trim($code), ENT_NOQUOTES);
- return $this->hashPart("<code>$code</code>");
+ return $this->hashPart("<code class=\"inline-code\">$code</code>");
}
diff --git a/library/mcefixes/README b/library/mcefixes/README
deleted file mode 100644
index 578163a9d..000000000
--- a/library/mcefixes/README
+++ /dev/null
@@ -1,8 +0,0 @@
-In order to make TinyMCE work smoothly with Friendica, the files in this directory are those few files we've changed in TinyMCE. We will attempt to keep them current, but if you decide to upgrade tinymce, it is best to save current copies of the files in question from the active tinymce tree and replace them or merge them after upgrade.
-
-Except for some simple theming, the primary changes are the advanced theme icon set, which we changed the "html" icon to "[]" to represent BBcode, and major changes have been made to the bbcode plugin.
-
-
-in TinyMCE 3.5b2 it appears that we are getting double linefeeds. Code has been put in place in mod/item.php and mod/message.php to reduce the duplicates.
-
-
diff --git a/library/mcefixes/plugins.bbcode.editor_plugin_src.js b/library/mcefixes/plugins.bbcode.editor_plugin_src.js
deleted file mode 100644
index f94fbc5d7..000000000
--- a/library/mcefixes/plugins.bbcode.editor_plugin_src.js
+++ /dev/null
@@ -1,268 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-/* Macgirvin Aug-2010 changed from punbb to dfrn dialect */
-
-(function() {
- tinymce.create('tinymce.plugins.BBCodePlugin', {
- init : function(ed, url) {
- var t = this, dialect = ed.getParam('bbcode_dialect', 'dfrn').toLowerCase();
-
- ed.onBeforeSetContent.add(function(ed, o) {
- o.content = t['_' + dialect + '_bbcode2html'](o.content);
- });
-
- ed.onPostProcess.add(function(ed, o) {
- if (o.set)
- o.content = t['_' + dialect + '_bbcode2html'](o.content);
-
- if (o.get)
- o.content = t['_' + dialect + '_html2bbcode'](o.content);
- });
- },
-
- getInfo : function() {
- return {
- longname : 'BBCode Plugin',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- // Private methods
-
- // HTML -> BBCode in DFRN dialect
- _dfrn_html2bbcode : function(s) {
- s = tinymce.trim(s);
-
- function rep(re, str) {
-
-
-s = s.replace(re,str);
-
- //modify code to keep stuff intact within [code][/code] blocks
- //Waitman Gobble NO WARRANTY
-
-/* This doesn't seem to work well with
-[code]line1
-line2[/code]
-commenting out for now
-*/
-
-/*
- var o = new Array();
- var x = s.split("[code]");
- var i = 0;
-
- var si = "";
- si = x.shift();
- si = si.replace(re,str);
- o.push(si);
-
- for (i = 0; i < x.length; i++) {
- var no = new Array();
- var j = x.shift();
- var g = j.split("[/code]");
- no.push(g.shift());
- si = g.shift();
- si = si.replace(re,str);
- no.push(si);
- o.push(no.join("[/code]"));
- }
-
- s = o.join("[code]");
-*/
- };
-
-
-
-
- /* oembed */
- function _h2b_cb(match) {
- /*
- function s_h2b(data) {
- match = data;
- }
- $.ajax({
- type:"POST",
- url: 'oembed/h2b',
- data: {text: match},
- async: false,
- success: s_h2b,
- dataType: 'html'
- });
- */
-
- var f, g, tof = [], tor = [];
- var find_spanc = /<span [^>]*class *= *[\"'](?:[^\"']* )*oembed(?: [^\"']*)*[\"'][^>]*>(.*?(?:<span[^>]*>(.*?)<\/span *>)*.*?)<\/span *>/ig;
- while (f = find_spanc.exec(match)) {
- var find_a = /<a([^>]* rel=[\"']oembed[\"'][^>]*)>.*?<\/a *>/ig;
- if (g = find_a.exec(f[1])) {
- var find_href = /href=[\"']([^\"']*)[\"']/ig;
- var m2 = find_href.exec(g[1]);
- if (m2[1]) {
- tof.push(f[0]);
- tor.push("[EMBED]" + m2[1] + "[/EMBED]");
- }
- }
- }
- for (var i = 0; i < tof.length; i++) match = match.replace(tof[i], tor[i]);
-
- return match;
- }
- if (s.indexOf('class="oembed')>=0){
- //alert("request oembed html2bbcode");
- s = _h2b_cb(s);
- }
-
- /* /oembed */
-
-
- // example: <strong> to [b]
- rep(/<a class=\"bookmark\" href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[bookmark=$1]$2[/bookmark]");
- rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");
- rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");
- rep(/<span style=\"color:(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");
- rep(/<font>(.*?)<\/font>/gi,"$1");
- rep(/<img.*?width=\"(.*?)\".*?height=\"(.*?)\".*?src=\"(.*?)\".*?\/>/gi,"[img=$1x$2]$3[/img]");
- rep(/<img.*?height=\"(.*?)\".*?width=\"(.*?)\".*?src=\"(.*?)\".*?\/>/gi,"[img=$2x$1]$3[/img]");
- rep(/<img.*?src=\"(.*?)\".*?height=\"(.*?)\".*?width=\"(.*?)\".*?\/>/gi,"[img=$3x$2]$1[/img]");
- rep(/<img.*?src=\"(.*?)\".*?width=\"(.*?)\".*?height=\"(.*?)\".*?\/>/gi,"[img=$2x$3]$1[/img]");
- rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");
-
- rep(/<ul class=\"listbullet\" style=\"list-style-type\: circle\;\">(.*?)<\/ul>/gi,"[list]$1[/list]");
- rep(/<ul class=\"listnone\" style=\"list-style-type\: none\;\">(.*?)<\/ul>/gi,"[list=]$1[/list]");
- rep(/<ul class=\"listdecimal\" style=\"list-style-type\: decimal\;\">(.*?)<\/ul>/gi,"[list=1]$1[/list]");
- rep(/<ul class=\"listlowerroman\" style=\"list-style-type\: lower-roman\;\">(.*?)<\/ul>/gi,"[list=i]$1[/list]");
- rep(/<ul class=\"listupperroman\" style=\"list-style-type\: upper-roman\;\">(.*?)<\/ul>/gi,"[list=I]$1[/list]");
- rep(/<ul class=\"listloweralpha\" style=\"list-style-type\: lower-alpha\;\">(.*?)<\/ul>/gi,"[list=a]$1[/list]");
- rep(/<ul class=\"listupperalpha\" style=\"list-style-type\: upper-alpha\;\">(.*?)<\/ul>/gi,"[list=A]$1[/list]");
- rep(/<li>(.*?)<\/li>/gi,'[li]$1[/li]');
-
- rep(/<code>(.*?)<\/code>/gi,"[code]$1[/code]");
- rep(/<\/(strong|b)>/gi,"[/b]");
- rep(/<(strong|b)>/gi,"[b]");
- rep(/<\/(em|i)>/gi,"[/i]");
- rep(/<(em|i)>/gi,"[i]");
- rep(/<\/u>/gi,"[/u]");
- rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");
- rep(/<u>/gi,"[u]");
- rep(/<blockquote[^>]*>/gi,"[quote]");
- rep(/<\/blockquote>/gi,"[/quote]");
- rep(/<hr \/>/gi,"[hr]");
- rep(/<br (.*?)\/>/gi,"\n");
- rep(/<br\/>/gi,"\n");
- rep(/<br>/gi,"\n");
- rep(/<p>/gi,"");
- rep(/<\/p>/gi,"\n");
- rep(/&nbsp;/gi," ");
- rep(/&quot;/gi,"\"");
- rep(/&lt;/gi,"<");
- rep(/&gt;/gi,">");
- rep(/&amp;/gi,"&");
-
- return s;
- },
-
- // BBCode -> HTML from DFRN dialect
- _dfrn_bbcode2html : function(s) {
- s = tinymce.trim(s);
-
-
- function rep(re, str) {
-
-
- //modify code to keep stuff intact within [code][/code] blocks
- //Waitman Gobble NO WARRANTY
-
-
- var o = new Array();
- var x = s.split("[code]");
- var i = 0;
-
- var si = "";
- si = x.shift();
- si = si.replace(re,str);
- o.push(si);
-
- for (i = 0; i < x.length; i++) {
- var no = new Array();
- var j = x.shift();
- var g = j.split("[/code]");
- no.push(g.shift());
- si = g.shift();
- si = si.replace(re,str);
- no.push(si);
- o.push(no.join("[/code]"));
- }
-
- s = o.join("[code]");
-
- };
-
-
-
-
-
- // example: [b] to <strong>
- rep(/\n/gi,"<br />");
- rep(/\[b\]/gi,"<strong>");
- rep(/\[\/b\]/gi,"</strong>");
- rep(/\[i\]/gi,"<em>");
- rep(/\[\/i\]/gi,"</em>");
- rep(/\[u\]/gi,"<u>");
- rep(/\[\/u\]/gi,"</u>");
- rep(/\[hr\]/gi,"<hr />");
- rep(/\[bookmark=([^\]]+)\](.*?)\[\/bookmark\]/gi,"<a class=\"bookmark\" href=\"$1\">$2</a>");
- rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");
- rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
- rep(/\[img=(.*?)x(.*?)\](.*?)\[\/img\]/gi,"<img width=\"$1\" height=\"$2\" src=\"$3\" />");
- rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");
-
- rep(/\[list\](.*?)\[\/list\]/gi, '<ul class="listbullet" style="list-style-type: circle;">$1</ul>');
- rep(/\[list=\](.*?)\[\/list\]/gi, '<ul class="listnone" style="list-style-type: none;">$1</ul>');
- rep(/\[list=1\](.*?)\[\/list\]/gi, '<ul class="listdecimal" style="list-style-type: decimal;">$1</ul>');
- rep(/\[list=i\](.*?)\[\/list\]/gi,'<ul class="listlowerroman" style="list-style-type: lower-roman;">$1</ul>');
- rep(/\[list=I\](.*?)\[\/list\]/gi, '<ul class="listupperroman" style="list-style-type: upper-roman;">$1</ul>');
- rep(/\[list=a\](.*?)\[\/list\]/gi, '<ul class="listloweralpha" style="list-style-type: lower-alpha;">$1</ul>');
- rep(/\[list=A\](.*?)\[\/list\]/gi, '<ul class="listupperalpha" style="list-style-type: upper-alpha;">$1</ul>');
- rep(/\[li\](.*?)\[\/li\]/gi, '<li>$1</li>');
- rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<span style=\"color: $1;\">$2</span>");
- rep(/\[size=(.*?)\](.*?)\[\/size\]/gi,"<span style=\"font-size: $1;\">$2</span>");
- rep(/\[code\](.*?)\[\/code\]/gi,"<code>$1</code>");
- rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<blockquote>$1</blockquote>");
-
- /* oembed */
- function _b2h_cb(match, url) {
- url = bin2hex(url);
- function s_b2h(data) {
- match = data;
- }
- $.ajax({
- url: 'oembed/b2h?url=' + url,
- async: false,
- success: s_b2h,
- dataType: 'html'
- });
- return match;
- }
- s = s.replace(/\[embed\](.*?)\[\/embed\]/gi, _b2h_cb);
-
- /* /oembed */
-
- return s;
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin);
-})();
diff --git a/library/mcefixes/themes.advanced.img.icons.gif b/library/mcefixes/themes.advanced.img.icons.gif
deleted file mode 100644
index efb356c41..000000000
--- a/library/mcefixes/themes.advanced.img.icons.gif
+++ /dev/null
Binary files differ
diff --git a/library/mcefixes/themes.advanced.skins.default.dialog.css b/library/mcefixes/themes.advanced.skins.default.dialog.css
deleted file mode 100644
index f01222650..000000000
--- a/library/mcefixes/themes.advanced.skins.default.dialog.css
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Generic */
-body {
-font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
-scrollbar-3dlight-color:#F0F0EE;
-scrollbar-arrow-color:#676662;
-scrollbar-base-color:#F0F0EE;
-scrollbar-darkshadow-color:#DDDDDD;
-scrollbar-face-color:#E0E0DD;
-scrollbar-highlight-color:#F0F0EE;
-scrollbar-shadow-color:#F0F0EE;
-scrollbar-track-color:#F5F5F5;
-background:#F0F0EE;
-padding:0;
-margin:8px 8px 0 8px;
-}
-
-html {background:#F0F0EE;}
-td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-textarea {resize:none;outline:none;}
-a:link, a:visited {color:black;}
-a:hover {color:#2B6FB6;}
-.nowrap {white-space: nowrap}
-
-/* Forms */
-fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
-legend {color:#2B6FB6; font-weight:bold;}
-label.msg {display:none;}
-label.invalid {color:#EE0000; display:inline;}
-input.invalid {border:1px solid #EE0000;}
-input {background:#FFF; border:1px solid #CCC;}
-input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-input, select, textarea {border:1px solid #808080;}
-input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
-input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
-.input_noborder {border:0;}
-
-/* Buttons */
-#insert, #cancel, input.button, .updateButton {
-border:0; margin:0; padding:0;
-font-weight:bold;
-width:94px; height:26px;
-background:url(img/buttons.png) 0 -26px;
-cursor:pointer;
-padding-bottom:2px;
-float:left;
-}
-
-#insert {background:url(img/buttons.png) 0 -52px}
-#cancel {background:url(img/buttons.png) 0 0; float:right}
-
-/* Browse */
-a.pickcolor, a.browse {text-decoration:none}
-a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
-.mceOldBoxModel a.browse span {width:22px; height:20px;}
-a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
-a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
-a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
-.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
-a.pickcolor:hover span {background-color:#B2BBD0;}
-a.pickcolor:hover span.disabled {}
-
-/* Charmap */
-table.charmap {border:1px solid #AAA; text-align:center}
-td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
-#charmap a {display:block; color:#000; text-decoration:none; border:0}
-#charmap a:hover {background:#CCC;color:#2B6FB6}
-#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
-#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
-
-/* Source */
-.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
-.mceActionPanel {margin-top:5px;}
-
-/* Tabs classes */
-.tabs {width:100%; height:18px; line-height:normal; background:url(img/tabs.gif) repeat-x 0 -72px;}
-.tabs ul {margin:0; padding:0; list-style:none;}
-.tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
-.tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
-.tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
-.tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;}
-.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
-.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
-
-/* Panels */
-.panel_wrapper div.panel {display:none;}
-.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
-.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
-
-/* Columns */
-.column {float:left;}
-.properties {width:100%;}
-.properties .column1 {}
-.properties .column2 {text-align:left;}
-
-/* Titles */
-h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
-h3 {font-size:14px;}
-.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
-
-/* Dialog specific */
-#link .panel_wrapper, #link div.current {height:125px;}
-#image .panel_wrapper, #image div.current {height:200px;}
-#plugintable thead {font-weight:bold; background:#DDD;}
-#plugintable, #about #plugintable td {border:1px solid #919B9C;}
-#plugintable {width:96%; margin-top:10px;}
-#pluginscontainer {height:290px; overflow:auto;}
-#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
-#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
-#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
-#colorpicker #light div {overflow:hidden;}
-#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
-#colorpicker .panel_wrapper div.current {height:175px;}
-#colorpicker #namedcolors {width:150px;}
-#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
-#colorpicker #colornamecontainer {margin-top:5px;}
-#colorpicker #picker_panel fieldset {margin:auto;width:325px;}
diff --git a/library/mcefixes/themes.advanced.skins.default.ui.css b/library/mcefixes/themes.advanced.skins.default.ui.css
deleted file mode 100644
index 5f1f96448..000000000
--- a/library/mcefixes/themes.advanced.skins.default.ui.css
+++ /dev/null
@@ -1,213 +0,0 @@
-/* Reset */
-.defaultSkin table, .defaultSkin tbody, .defaultSkin a, .defaultSkin img, .defaultSkin tr, .defaultSkin div, .defaultSkin td, .defaultSkin iframe, .defaultSkin span, .defaultSkin *, .defaultSkin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}
-.defaultSkin a:hover, .defaultSkin a:link, .defaultSkin a:visited, .defaultSkin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}
-.defaultSkin table td {vertical-align:middle}
-
-/* Containers */
-.defaultSkin table {direction:ltr; background:#FFF}
-.defaultSkin iframe {display:block; background:#FFF}
-.defaultSkin .mceToolbar {height:26px}
-.defaultSkin .mceLeft {text-align:left}
-.defaultSkin .mceRight {text-align:right}
-
-/* External */
-.defaultSkin .mceExternalToolbar {position:absolute; border:2px solid #CCC; border-bottom:0; display:none;}
-.defaultSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
-.defaultSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}
-
-/* Layout */
-.defaultSkin table.mceLayout {border:0; border-left:1px solid #CCC; border-right:1px solid #CCC}
-.defaultSkin table.mceLayout tr.mceFirst td {border-top:1px solid #CCC}
-.defaultSkin table.mceLayout tr.mceLast td {border-bottom:1px solid #CCC}
-.defaultSkin table.mceToolbar, .defaultSkin tr.mceFirst .mceToolbar tr td, .defaultSkin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0;}
-.defaultSkin td.mceToolbar {padding-top:1px; vertical-align:top}
-.defaultSkin .mceIframeContainer { /*border-top:1px solid #CCC; border-bottom:1px solid #CCC */ border: none;}
-.defaultSkin .mceStatusbar {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; display:block; height:20px}
-.defaultSkin .mceStatusbar div {float:left; margin:2px}
-.defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0}
-.defaultSkin .mceStatusbar a:hover {text-decoration:underline}
-.defaultSkin table.mceToolbar {margin-left:3px}
-.defaultSkin span.mceIcon, .defaultSkin img.mceIcon {display:block; width:20px; height:20px}
-.defaultSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
-.defaultSkin td.mceCenter {text-align:center;}
-.defaultSkin td.mceCenter table {margin:0 auto; text-align:left;}
-.defaultSkin td.mceRight table {margin:0 0 0 auto;}
-
-/* Button */
-.defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:10px}
-.defaultSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}
-.defaultSkin a.mceButtonActive, .defaultSkin a.mceButtonSelected {border:1px solid #0A246A; background-color:#C2CBE0}
-.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-.defaultSkin .mceButtonLabeled {width:auto}
-.defaultSkin .mceButtonLabeled span.mceIcon {float:left}
-.defaultSkin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}
-.defaultSkin .mceButtonDisabled .mceButtonLabel {color:#888}
-
-/* Separator */
-.defaultSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:2px 2px 0 4px}
-
-/* ListBox */
-.defaultSkin .mceListBox, .defaultSkin .mceListBox a {display:block}
-.defaultSkin .mceListBox .mceText {padding-left:4px; width:70px; text-align:left; border:1px solid #CCC; border-right:0; background:#FFF; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}
-.defaultSkin .mceListBox .mceOpen {width:9px; height:20px; background:url(../../img/icons.gif) -741px 0; margin-right:2px; border:1px solid #CCC;}
-.defaultSkin table.mceListBoxEnabled:hover .mceText, .defaultSkin .mceListBoxHover .mceText, .defaultSkin .mceListBoxSelected .mceText {border:1px solid #A2ABC0; border-right:0; background:#FFF}
-.defaultSkin table.mceListBoxEnabled:hover .mceOpen, .defaultSkin .mceListBoxHover .mceOpen, .defaultSkin .mceListBoxSelected .mceOpen {background-color:#FFF; border:1px solid #A2ABC0}
-.defaultSkin .mceListBoxDisabled a.mceText {color:gray; background-color:transparent;}
-.defaultSkin .mceListBoxMenu {overflow:auto; overflow-x:hidden}
-.defaultSkin .mceOldBoxModel .mceListBox .mceText {height:22px}
-.defaultSkin .mceOldBoxModel .mceListBox .mceOpen {width:11px; height:22px;}
-.defaultSkin select.mceNativeListBox {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:7pt; background:#F0F0EE; border:1px solid gray; margin-right:2px;}
-
-/* SplitButton */
-.defaultSkin .mceSplitButton {width:32px; height:20px; direction:ltr}
-.defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block}
-.defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;}
-.defaultSkin .mceSplitButton span.mceAction {width:20px; background-image:url(../../img/icons.gif);}
-.defaultSkin .mceSplitButton a.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0; border:1px solid #F0F0EE;}
-.defaultSkin .mceSplitButton span.mceOpen {display:none}
-.defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0}
-.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {background-color:#B2BBD0; border:1px solid #0A246A;}
-.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled a.mceOpen {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-.defaultSkin .mceSplitButtonActive a.mceAction {border:1px solid #0A246A; background-color:#C2CBE0}
-.defaultSkin .mceSplitButtonActive a.mceOpen {border-left:0;}
-
-/* ColorSplitButton */
-.defaultSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}
-.defaultSkin .mceColorSplitMenu td {padding:2px}
-.defaultSkin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}
-.defaultSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
-.defaultSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}
-.defaultSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}
-.defaultSkin a.mceMoreColors:hover {border:1px solid #0A246A}
-.defaultSkin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a}
-.defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px}
-
-/* Menu */
-.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8}
-.defaultSkin .mceNoIcons span.mceIcon {width:0;}
-.defaultSkin .mceNoIcons a .mceText {padding-left:10px}
-.defaultSkin .mceMenu table {background:#FFF}
-.defaultSkin .mceMenu a, .defaultSkin .mceMenu span, .defaultSkin .mceMenu {display:block}
-.defaultSkin .mceMenu td {height:20px}
-.defaultSkin .mceMenu a {position:relative;padding:3px 0 4px 0}
-.defaultSkin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}
-.defaultSkin .mceMenu span.mceText, .defaultSkin .mceMenu .mcePreview {font-size:11px}
-.defaultSkin .mceMenu pre.mceText {font-family:Monospace}
-.defaultSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}
-.defaultSkin .mceMenu .mceMenuItemEnabled a:hover, .defaultSkin .mceMenu .mceMenuItemActive {background-color:#dbecf3}
-.defaultSkin td.mceMenuItemSeparator {background:#DDD; height:1px}
-.defaultSkin .mceMenuItemTitle a {border:0; background:#EEE; border-bottom:1px solid #DDD}
-.defaultSkin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}
-.defaultSkin .mceMenuItemDisabled .mceText {color:#888}
-.defaultSkin .mceMenuItemSelected .mceIcon {background:url(img/menu_check.gif)}
-.defaultSkin .mceNoIcons .mceMenuItemSelected a {background:url(img/menu_arrow.gif) no-repeat -6px center}
-.defaultSkin .mceMenu span.mceMenuLine {display:none}
-.defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;}
-
-/* Progress,Resize */
-.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50); background:#FFF}
-.defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
-
-/* Formats */
-.defaultSkin .mce_formatPreview a {font-size:10px}
-.defaultSkin .mce_p span.mceText {}
-.defaultSkin .mce_address span.mceText {font-style:italic}
-.defaultSkin .mce_pre span.mceText {font-family:monospace}
-.defaultSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
-.defaultSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
-.defaultSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
-.defaultSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
-.defaultSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
-.defaultSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
-
-/* Theme */
-.defaultSkin span.mce_bold {background-position:0 0}
-.defaultSkin span.mce_italic {background-position:-60px 0}
-.defaultSkin span.mce_underline {background-position:-140px 0}
-.defaultSkin span.mce_strikethrough {background-position:-120px 0}
-.defaultSkin span.mce_undo {background-position:-160px 0}
-.defaultSkin span.mce_redo {background-position:-100px 0}
-.defaultSkin span.mce_cleanup {background-position:-40px 0}
-.defaultSkin span.mce_bullist {background-position:-20px 0}
-.defaultSkin span.mce_numlist {background-position:-80px 0}
-.defaultSkin span.mce_justifyleft {background-position:-460px 0}
-.defaultSkin span.mce_justifyright {background-position:-480px 0}
-.defaultSkin span.mce_justifycenter {background-position:-420px 0}
-.defaultSkin span.mce_justifyfull {background-position:-440px 0}
-.defaultSkin span.mce_anchor {background-position:-200px 0}
-.defaultSkin span.mce_indent {background-position:-400px 0}
-.defaultSkin span.mce_outdent {background-position:-540px 0}
-.defaultSkin span.mce_link {background-position:-500px 0}
-.defaultSkin span.mce_unlink {background-position:-640px 0}
-.defaultSkin span.mce_sub {background-position:-600px 0}
-.defaultSkin span.mce_sup {background-position:-620px 0}
-.defaultSkin span.mce_removeformat {background-position:-580px 0}
-.defaultSkin span.mce_newdocument {background-position:-520px 0}
-.defaultSkin span.mce_image {background-position:-380px 0}
-.defaultSkin span.mce_help {background-position:-340px 0}
-.defaultSkin span.mce_code {background-position:-260px 0}
-.defaultSkin span.mce_hr {background-position:-360px 0}
-.defaultSkin span.mce_visualaid {background-position:-660px 0}
-.defaultSkin span.mce_charmap {background-position:-240px 0}
-.defaultSkin span.mce_paste {background-position:-560px 0}
-.defaultSkin span.mce_copy {background-position:-700px 0}
-.defaultSkin span.mce_cut {background-position:-680px 0}
-.defaultSkin span.mce_blockquote {background-position:-220px 0}
-.defaultSkin .mce_forecolor span.mceAction {background-position:-720px 0}
-.defaultSkin .mce_backcolor span.mceAction {background-position:-760px 0}
-.defaultSkin span.mce_forecolorpicker {background-position:-720px 0}
-.defaultSkin span.mce_backcolorpicker {background-position:-760px 0}
-
-/* Plugins */
-.defaultSkin span.mce_advhr {background-position:-0px -20px}
-.defaultSkin span.mce_ltr {background-position:-20px -20px}
-.defaultSkin span.mce_rtl {background-position:-40px -20px}
-.defaultSkin span.mce_emotions {background-position:-60px -20px}
-.defaultSkin span.mce_fullpage {background-position:-80px -20px}
-.defaultSkin span.mce_fullscreen {background-position:-100px -20px}
-.defaultSkin span.mce_iespell {background-position:-120px -20px}
-.defaultSkin span.mce_insertdate {background-position:-140px -20px}
-.defaultSkin span.mce_inserttime {background-position:-160px -20px}
-.defaultSkin span.mce_absolute {background-position:-180px -20px}
-.defaultSkin span.mce_backward {background-position:-200px -20px}
-.defaultSkin span.mce_forward {background-position:-220px -20px}
-.defaultSkin span.mce_insert_layer {background-position:-240px -20px}
-.defaultSkin span.mce_insertlayer {background-position:-260px -20px}
-.defaultSkin span.mce_movebackward {background-position:-280px -20px}
-.defaultSkin span.mce_moveforward {background-position:-300px -20px}
-.defaultSkin span.mce_media {background-position:-320px -20px}
-.defaultSkin span.mce_nonbreaking {background-position:-340px -20px}
-.defaultSkin span.mce_pastetext {background-position:-360px -20px}
-.defaultSkin span.mce_pasteword {background-position:-380px -20px}
-.defaultSkin span.mce_selectall {background-position:-400px -20px}
-.defaultSkin span.mce_preview {background-position:-420px -20px}
-.defaultSkin span.mce_print {background-position:-440px -20px}
-.defaultSkin span.mce_cancel {background-position:-460px -20px}
-.defaultSkin span.mce_save {background-position:-480px -20px}
-.defaultSkin span.mce_replace {background-position:-500px -20px}
-.defaultSkin span.mce_search {background-position:-520px -20px}
-.defaultSkin span.mce_styleprops {background-position:-560px -20px}
-.defaultSkin span.mce_table {background-position:-580px -20px}
-.defaultSkin span.mce_cell_props {background-position:-600px -20px}
-.defaultSkin span.mce_delete_table {background-position:-620px -20px}
-.defaultSkin span.mce_delete_col {background-position:-640px -20px}
-.defaultSkin span.mce_delete_row {background-position:-660px -20px}
-.defaultSkin span.mce_col_after {background-position:-680px -20px}
-.defaultSkin span.mce_col_before {background-position:-700px -20px}
-.defaultSkin span.mce_row_after {background-position:-720px -20px}
-.defaultSkin span.mce_row_before {background-position:-740px -20px}
-.defaultSkin span.mce_merge_cells {background-position:-760px -20px}
-.defaultSkin span.mce_table_props {background-position:-980px -20px}
-.defaultSkin span.mce_row_props {background-position:-780px -20px}
-.defaultSkin span.mce_split_cells {background-position:-800px -20px}
-.defaultSkin span.mce_template {background-position:-820px -20px}
-.defaultSkin span.mce_visualchars {background-position:-840px -20px}
-.defaultSkin span.mce_abbr {background-position:-860px -20px}
-.defaultSkin span.mce_acronym {background-position:-880px -20px}
-.defaultSkin span.mce_attribs {background-position:-900px -20px}
-.defaultSkin span.mce_cite {background-position:-920px -20px}
-.defaultSkin span.mce_del {background-position:-940px -20px}
-.defaultSkin span.mce_ins {background-position:-960px -20px}
-.defaultSkin span.mce_pagebreak {background-position:0 -40px}
-.defaultSkin span.mce_restoredraft {background-position:-20px -40px}
-.defaultSkin span.mce_spellchecker {background-position:-540px -20px}
diff --git a/library/spam/README b/library/spam/README
deleted file mode 100644
index a0d67fca7..000000000
--- a/library/spam/README
+++ /dev/null
@@ -1,12 +0,0 @@
-B8 for Friendica
-
-B8 is an excellent bayesian spam implementation for PHP. However when evaluating it for use in Friendica there were a few shortcomings. B8's primary audience is guestbooks and blogs - single user situations.
-
-Friendica is a multi-user distributed social environment. So the first thing we need to add to b8 is a concept of user ID.
-
-Second we don't want to use a second stored set of DB login credentials so we're going to implemetn Friendica's MySQL driver and use our existing connection and credentials.
-
-The third requirement is that the B8 processing model is to load a set of word/data sets from the DB, perform processing (which may change the value of the data) and then store the results back to the DB. We're in a highly dynamic environment with lots of sometimes concurrent message processing. So the plan is to alter the storage architecture to read data in, do processing, and then apply a somewhat atomic change operation where the changes are performed in a single query using the current data in storage rather than something passed through outside processing and where the data may be outdated come time to store it.
-
-In accordance with the LGPL of the B8 package these changes are available in source form at http://github.com/friendica/friendica in the directory library/spam
- \ No newline at end of file
diff --git a/library/spam/b8/b8.php b/library/spam/b8/b8.php
deleted file mode 100644
index 28a3dd29f..000000000
--- a/library/spam/b8/b8.php
+++ /dev/null
@@ -1,503 +0,0 @@
-<?php
-
-# Copyright (C) 2006-2010 Tobias Leupold <tobias.leupold@web.de>
-#
-# b8 - A Bayesian spam filter written in PHP 5
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation in version 2.1 of the License.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-# License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-/**
- * Copyright (C) 2006-2010 Tobias Leupold <tobias.leupold@web.de>
- *
- * @license LGPL
- * @access public
- * @package b8
- * @author Tobias Leupold
- * @author Oliver Lillie (aka buggedcom) (original PHP 5 port)
- */
-
-class b8
-{
-
- public $config = array(
- 'min_size' => 3,
- 'max_size' => 30,
- 'allow_numbers' => FALSE,
- 'lexer' => 'default',
- 'degenerator' => 'default',
- 'storage' => 'dba',
- 'use_relevant' => 15,
- 'min_dev' => 0.2,
- 'rob_s' => 0.3,
- 'rob_x' => 0.5
- );
-
- private $_lexer = NULL;
- private $_database = NULL;
- private $_token_data = NULL;
-
- const SPAM = 'spam';
- const HAM = 'ham';
- const LEARN = 'learn';
- const UNLEARN = 'unlearn';
-
- const STARTUP_FAIL_DATABASE = 'STARTUP_FAIL_DATABASE';
- const STARTUP_FAIL_LEXER = 'STARTUP_FAIL_LEXER';
- const TRAINER_CATEGORY_FAIL = 'TRAINER_CATEGORY_FAIL';
-
- /**
- * Constructs b8
- *
- * @access public
- * @return void
- */
-
- function __construct($config = array(), $database_config)
- {
-
- # Validate config data
-
- if(count($config) > 0) {
-
- foreach ($config as $name=>$value) {
-
- switch($name) {
-
- case 'min_dev':
- case 'rob_s':
- case 'rob_x':
- $this->config[$name] = (float) $value;
- break;
-
- case 'min_size':
- case 'max_size':
- case 'use_relevant':
- $this->config[$name] = (int) $value;
- break;
-
- case 'allow_numbers':
- $this->config[$name] = (bool) $value;
- break;
-
- case 'lexer':
- $value = (string) strtolower($value);
- $this->config[$name] = is_file(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'lexer' . DIRECTORY_SEPARATOR . "lexer_" . $value . '.php') === TRUE ? $value : 'default';
- break;
-
- case 'storage':
- $this->config[$name] = (string) $value;
- break;
-
- }
-
- }
-
- }
-
- # Setup the database backend
-
- # Get the basic storage class used by all backends
- if($this->load_class('b8_storage_base', dirname(__FILE__) . DIRECTORY_SEPARATOR . 'storage' . DIRECTORY_SEPARATOR . 'storage_base.php') === FALSE)
- return;
-
- # Get the degenerator we need
- if($this->load_class('b8_degenerator_' . $this->config['degenerator'], dirname(__FILE__) . DIRECTORY_SEPARATOR . 'degenerator' . DIRECTORY_SEPARATOR . 'degenerator_' . $this->config['degenerator'] . '.php') === FALSE)
- return;
-
- # Get the actual storage backend we need
- if($this->load_class('b8_storage_' . $this->config['storage'], dirname(__FILE__) . DIRECTORY_SEPARATOR . 'storage' . DIRECTORY_SEPARATOR . 'storage_' . $this->config['storage'] . '.php') === FALSE)
- return;
-
- # Setup the backend
- $class = 'b8_storage_' . $this->config['storage'];
- $this->_database = new $class(
- $database_config,
- $this->config['degenerator'], date('ymd')
- );
-
- # Setup the lexer class
-
- if($this->load_class('b8_lexer_' . $this->config['lexer'], dirname(__FILE__) . DIRECTORY_SEPARATOR . 'lexer' . DIRECTORY_SEPARATOR . 'lexer_' . $this->config['lexer'] . '.php') === FALSE)
- return;
-
- $class = 'b8_lexer_' . $this->config['lexer'];
- $this->_lexer = new $class(
- array(
- 'min_size' => $this->config['min_size'],
- 'max_size' => $this->config['max_size'],
- 'allow_numbers' => $this->config['allow_numbers']
- )
- );
-
- }
-
- /**
- * Load a class file if a class has not been defined yet.
- *
- * @access public
- * @return boolean Returns TRUE if everything is okay, otherwise FALSE.
- */
-
- public function load_class($class_name, $class_file)
- {
-
- if(class_exists($class_name, FALSE) === FALSE) {
-
- $included = require_once $class_file;
-
- if($included === FALSE or class_exists($class_name, FALSE) === FALSE)
- return FALSE;
-
- }
-
- return TRUE;
-
- }
-
- /**
- * Validates the class has all it needs to work.
- *
- * @access public
- * @return mixed Returns TRUE if everything is okay, otherwise an error code.
- */
-
- public function validate()
- {
-
- if($this->_database === NULL)
- return self::STARTUP_FAIL_DATABASE;
-
- # Connect the database backend if we aren't connected yet
-
- elseif($this->_database->connected === FALSE) {
-
- $connection = $this->_database->connect();
-
- if($connection !== TRUE)
- return $connection;
-
- }
-
- if($this->_lexer === NULL)
- return self::STARTUP_FAIL_LEXER;
-
- return TRUE;
-
- }
-
- /**
- * Classifies a text
- *
- * @access public
- * @package default
- * @param string $text
- * @return float The rating between 0 (ham) and 1 (spam)
- */
-
- public function classify($uid,$text)
- {
-
- # Validate the startup
-
- $started_up = $this->validate();
-
- if($started_up !== TRUE)
- return $started_up;
-
- # Get the internal database variables, containing the number of ham and
- # spam texts so the spam probability can be calculated in relation to them
- $internals = $this->_database->get_internals($uid);
-
- # Calculate the spamminess of all tokens
-
- # Get all tokens we want to rate
-
- $tokens = $this->_lexer->get_tokens($text);
-
- # Check if the lexer failed
- # (if so, $tokens will be a lexer error code, if not, $tokens will be an array)
- if(!is_array($tokens))
- return $tokens;
-
- # Fetch all availible data for the token set from the database
- $this->_token_data = $this->_database->get(array_keys($tokens),$uid);
-
- # Calculate the spamminess and importance for each token (or a degenerated form of it)
-
- $word_count = array();
- $rating = array();
- $importance = array();
-
- foreach($tokens as $word => $count) {
-
- $word_count[$word] = $count;
-
- # Although we only call this function only here ... let's do the
- # calculation stuff in a function to make this a bit less confusing ;-)
- $rating[$word] = $this->_get_probability($word, $internals['texts_ham'], $internals['texts_spam']);
-
- $importance[$word] = abs(0.5 - $rating[$word]);
-
- }
-
- # Order by importance
- arsort($importance);
- reset($importance);
-
- # Get the most interesting tokens (use all if we have less than the given number)
-
- $relevant = array();
-
- for($i = 0; $i < $this->config['use_relevant']; $i++) {
-
- if($tmp = each($importance)) {
-
- # Important tokens remain
-
- # If the token's rating is relevant enough, use it
-
- if(abs(0.5 - $rating[$tmp['key']]) > $this->config['min_dev']) {
-
- # Tokens that appear more than once also count more than once
-
- for($x = 0, $l = $word_count[$tmp['key']]; $x < $l; $x++)
- array_push($relevant, $rating[$tmp['key']]);
-
- }
-
- }
-
- else {
- # We have less than words to use, so we already
- # use what we have and can break here
- break;
- }
-
- }
-
- # Calculate the spamminess of the text (thanks to Mr. Robinson ;-)
- # We set both hamminess and Spamminess to 1 for the first multiplying
- $hamminess = 1;
- $spamminess = 1;
-
- # Consider all relevant ratings
- foreach($relevant as $value) {
- $hamminess *= (1.0 - $value);
- $spamminess *= $value;
- }
-
- # If no token was good for calculation, we really don't know how
- # to rate this text; so we assume a spam and ham probability of 0.5
-
- if($hamminess === 1 and $spamminess === 1) {
- $hamminess = 0.5;
- $spamminess = 0.5;
- $n = 1;
- }
- else {
- # Get the number of relevant ratings
- $n = count($relevant);
- }
-
- # Calculate the combined rating
-
- # The actual hamminess and spamminess
- $hamminess = 1 - pow($hamminess, (1 / $n));
- $spamminess = 1 - pow($spamminess, (1 / $n));
-
- # Calculate the combined indicator
- $probability = ($hamminess - $spamminess) / ($hamminess + $spamminess);
-
- # We want a value between 0 and 1, not between -1 and +1, so ...
- $probability = (1 + $probability) / 2;
-
- # Alea iacta est
- return $probability;
-
- }
-
- /**
- * Calculate the spamminess of a single token also considering "degenerated" versions
- *
- * @access private
- * @param string $word
- * @param string $texts_ham
- * @param string $texts_spam
- * @return void
- */
-
- private function _get_probability($word, $texts_ham, $texts_spam)
- {
-
- # Let's see what we have!
-
- if(isset($this->_token_data['tokens'][$word]) === TRUE) {
- # The token was in the database, so we can use it's data as-is
- # and calculate the spamminess of this token directly
- return $this->_calc_probability($this->_token_data['tokens'][$word], $texts_ham, $texts_spam);
- }
-
- # Damn. The token was not found, so do we have at least similar words?
-
- if(isset($this->_token_data['degenerates'][$word]) === TRUE) {
-
- # We found similar words, so calculate the spamminess for each one
- # and choose the most important one for the further calculation
-
- # The default rating is 0.5 simply saying nothing
- $rating = 0.5;
-
- foreach($this->_token_data['degenerates'][$word] as $degenerate => $count) {
-
- # Calculate the rating of the current degenerated token
- $rating_tmp = $this->_calc_probability($count, $texts_ham, $texts_spam);
-
- # Is it more important than the rating of another degenerated version?
- if(abs(0.5 - $rating_tmp) > abs(0.5 - $rating))
- $rating = $rating_tmp;
-
- }
-
- return $rating;
-
- }
-
- else {
- # The token is really unknown, so choose the default rating
- # for completely unknown tokens. This strips down to the
- # robX parameter so we can cheap out the freaky math ;-)
- return $this->config['rob_x'];
- }
-
- }
-
- /**
- * Do the actual spamminess calculation of a single token
- *
- * @access private
- * @param array $data
- * @param string $texts_ham
- * @param string $texts_spam
- * @return void
- */
-
- private function _calc_probability($data, $texts_ham, $texts_spam)
- {
-
- # Calculate the basic probability by Mr. Graham
-
- # But: consider the number of ham and spam texts saved instead of the
- # number of entries where the token appeared to calculate a relative
- # spamminess because we count tokens appearing multiple times not just
- # once but as often as they appear in the learned texts
-
- $rel_ham = $data['count_ham'];
- $rel_spam = $data['count_spam'];
-
- if($texts_ham > 0)
- $rel_ham = $data['count_ham'] / $texts_ham;
-
- if($texts_spam > 0)
- $rel_spam = $data['count_spam'] / $texts_spam;
-
- $rating = $rel_spam / ($rel_ham + $rel_spam);
-
- # Calculate the better probability proposed by Mr. Robinson
- $all = $data['count_ham'] + $data['count_spam'];
- return (($this->config['rob_s'] * $this->config['rob_x']) + ($all * $rating)) / ($this->config['rob_s'] + $all);
-
- }
-
- /**
- * Check the validity of the category of a request
- *
- * @access private
- * @param string $category
- * @return void
- */
-
- private function _check_category($category)
- {
- return $category === self::HAM or $category === self::SPAM;
- }
-
- /**
- * Learn a reference text
- *
- * @access public
- * @param string $text
- * @param const $category Either b8::SPAM or b8::HAM
- * @return void
- */
-
- public function learn($text, $category, $uid)
- {
- return $this->_process_text($text, $category, self::LEARN, $uid);
- }
-
- /**
- * Unlearn a reference text
- *
- * @access public
- * @param string $text
- * @param const $category Either b8::SPAM or b8::HAM
- * @return void
- */
-
- public function unlearn($text, $category, $uid)
- {
- return $this->_process_text($text, $category, self::UNLEARN, $uid);
- }
-
- /**
- * Does the actual interaction with the storage backend for learning or unlearning texts
- *
- * @access private
- * @param string $text
- * @param const $category Either b8::SPAM or b8::HAM
- * @param const $action Either b8::LEARN or b8::UNLEARN
- * @return void
- */
-
- private function _process_text($text, $category, $action, $uid = 0)
- {
-
- # Validate the startup
-
- $started_up = $this->validate();
-
- if($started_up !== TRUE)
- return $started_up;
-
- # Look if the request is okay
- if($this->_check_category($category) === FALSE)
- return self::TRAINER_CATEGORY_FAIL;
-
- # Get all tokens from $text
-
- $tokens = $this->_lexer->get_tokens($text);
-
- # Check if the lexer failed
- # (if so, $tokens will be a lexer error code, if not, $tokens will be an array)
- if(!is_array($tokens))
- return $tokens;
-
- # Pass the tokens and what to do with it to the storage backend
- return $this->_database->process_text($tokens, $category, $action, $uid);
-
- }
-
-}
-
-?> \ No newline at end of file
diff --git a/library/spam/b8/b8.php.ORIG b/library/spam/b8/b8.php.ORIG
deleted file mode 100644
index ea1e15ffa..000000000
--- a/library/spam/b8/b8.php.ORIG
+++ /dev/null
@@ -1,503 +0,0 @@
-<?php
-
-# Copyright (C) 2006-2010 Tobias Leupold <tobias.leupold@web.de>
-#
-# b8 - A Bayesian spam filter written in PHP 5
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation in version 2.1 of the License.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-# License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-/**
- * Copyright (C) 2006-2010 Tobias Leupold <tobias.leupold@web.de>
- *
- * @license LGPL
- * @access public
- * @package b8
- * @author Tobias Leupold
- * @author Oliver Lillie (aka buggedcom) (original PHP 5 port)
- */
-
-class b8
-{
-
- public $config = array(
- 'min_size' => 3,
- 'max_size' => 30,
- 'allow_numbers' => FALSE,
- 'lexer' => 'default',
- 'degenerator' => 'default',
- 'storage' => 'dba',
- 'use_relevant' => 15,
- 'min_dev' => 0.2,
- 'rob_s' => 0.3,
- 'rob_x' => 0.5
- );
-
- private $_lexer = NULL;
- private $_database = NULL;
- private $_token_data = NULL;
-
- const SPAM = 'spam';
- const HAM = 'ham';
- const LEARN = 'learn';
- const UNLEARN = 'unlearn';
-
- const STARTUP_FAIL_DATABASE = 'STARTUP_FAIL_DATABASE';
- const STARTUP_FAIL_LEXER = 'STARTUP_FAIL_LEXER';
- const TRAINER_CATEGORY_FAIL = 'TRAINER_CATEGORY_FAIL';
-
- /**
- * Constructs b8
- *
- * @access public
- * @return void
- */
-
- function __construct($config = array(), $database_config)
- {
-
- # Validate config data
-
- if(count($config) > 0) {
-
- foreach ($config as $name=>$value) {
-
- switch($name) {
-
- case 'min_dev':
- case 'rob_s':
- case 'rob_x':
- $this->config[$name] = (float) $value;
- break;
-
- case 'min_size':
- case 'max_size':
- case 'use_relevant':
- $this->config[$name] = (int) $value;
- break;
-
- case 'allow_numbers':
- $this->config[$name] = (bool) $value;
- break;
-
- case 'lexer':
- $value = (string) strtolower($value);
- $this->config[$name] = is_file(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'lexer' . DIRECTORY_SEPARATOR . "lexer_" . $value . '.php') === TRUE ? $value : 'default';
- break;
-
- case 'storage':
- $this->config[$name] = (string) $value;
- break;
-
- }
-
- }
-
- }
-
- # Setup the database backend
-
- # Get the basic storage class used by all backends
- if($this->load_class('b8_storage_base', dirname(__FILE__) . DIRECTORY_SEPARATOR . 'storage' . DIRECTORY_SEPARATOR . 'storage_base.php') === FALSE)
- return;
-
- # Get the degenerator we need
- if($this->load_class('b8_degenerator_' . $this->config['degenerator'], dirname(__FILE__) . DIRECTORY_SEPARATOR . 'degenerator' . DIRECTORY_SEPARATOR . 'degenerator_' . $this->config['degenerator'] . '.php') === FALSE)
- return;
-
- # Get the actual storage backend we need
- if($this->load_class('b8_storage_' . $this->config['storage'], dirname(__FILE__) . DIRECTORY_SEPARATOR . 'storage' . DIRECTORY_SEPARATOR . 'storage_' . $this->config['storage'] . '.php') === FALSE)
- return;
-
- # Setup the backend
- $class = 'b8_storage_' . $this->config['storage'];
- $this->_database = new $class(
- $database_config,
- $this->config['degenerator'], date('ymd')
- );
-
- # Setup the lexer class
-
- if($this->load_class('b8_lexer_' . $this->config['lexer'], dirname(__FILE__) . DIRECTORY_SEPARATOR . 'lexer' . DIRECTORY_SEPARATOR . 'lexer_' . $this->config['lexer'] . '.php') === FALSE)
- return;
-
- $class = 'b8_lexer_' . $this->config['lexer'];
- $this->_lexer = new $class(
- array(
- 'min_size' => $this->config['min_size'],
- 'max_size' => $this->config['max_size'],
- 'allow_numbers' => $this->config['allow_numbers']
- )
- );
-
- }
-
- /**
- * Load a class file if a class has not been defined yet.
- *
- * @access public
- * @return boolean Returns TRUE if everything is okay, otherwise FALSE.
- */
-
- public function load_class($class_name, $class_file)
- {
-
- if(class_exists($class_name, FALSE) === FALSE) {
-
- $included = require_once $class_file;
-
- if($included === FALSE or class_exists($class_name, FALSE) === FALSE)
- return FALSE;
-
- }
-
- return TRUE;
-
- }
-
- /**
- * Validates the class has all it needs to work.
- *
- * @access public
- * @return mixed Returns TRUE if everything is okay, otherwise an error code.
- */
-
- public function validate()
- {
-
- if($this->_database === NULL)
- return self::STARTUP_FAIL_DATABASE;
-
- # Connect the database backend if we aren't connected yet
-
- elseif($this->_database->connected === FALSE) {
-
- $connection = $this->_database->connect();
-
- if($connection !== TRUE)
- return $connection;
-
- }
-
- if($this->_lexer === NULL)
- return self::STARTUP_FAIL_LEXER;
-
- return TRUE;
-
- }
-
- /**
- * Classifies a text
- *
- * @access public
- * @package default
- * @param string $text
- * @return float The rating between 0 (ham) and 1 (spam)
- */
-
- public function classify($text)
- {
-
- # Validate the startup
-
- $started_up = $this->validate();
-
- if($started_up !== TRUE)
- return $started_up;
-
- # Get the internal database variables, containing the number of ham and
- # spam texts so the spam probability can be calculated in relation to them
- $internals = $this->_database->get_internals();
-
- # Calculate the spamminess of all tokens
-
- # Get all tokens we want to rate
-
- $tokens = $this->_lexer->get_tokens($text);
-
- # Check if the lexer failed
- # (if so, $tokens will be a lexer error code, if not, $tokens will be an array)
- if(!is_array($tokens))
- return $tokens;
-
- # Fetch all availible data for the token set from the database
- $this->_token_data = $this->_database->get(array_keys($tokens));
-
- # Calculate the spamminess and importance for each token (or a degenerated form of it)
-
- $word_count = array();
- $rating = array();
- $importance = array();
-
- foreach($tokens as $word => $count) {
-
- $word_count[$word] = $count;
-
- # Although we only call this function only here ... let's do the
- # calculation stuff in a function to make this a bit less confusing ;-)
- $rating[$word] = $this->_get_probability($word, $internals['texts_ham'], $internals['texts_spam']);
-
- $importance[$word] = abs(0.5 - $rating[$word]);
-
- }
-
- # Order by importance
- arsort($importance);
- reset($importance);
-
- # Get the most interesting tokens (use all if we have less than the given number)
-
- $relevant = array();
-
- for($i = 0; $i < $this->config['use_relevant']; $i++) {
-
- if($tmp = each($importance)) {
-
- # Important tokens remain
-
- # If the token's rating is relevant enough, use it
-
- if(abs(0.5 - $rating[$tmp['key']]) > $this->config['min_dev']) {
-
- # Tokens that appear more than once also count more than once
-
- for($x = 0, $l = $word_count[$tmp['key']]; $x < $l; $x++)
- array_push($relevant, $rating[$tmp['key']]);
-
- }
-
- }
-
- else {
- # We have less than words to use, so we already
- # use what we have and can break here
- break;
- }
-
- }
-
- # Calculate the spamminess of the text (thanks to Mr. Robinson ;-)
- # We set both hamminess and Spamminess to 1 for the first multiplying
- $hamminess = 1;
- $spamminess = 1;
-
- # Consider all relevant ratings
- foreach($relevant as $value) {
- $hamminess *= (1.0 - $value);
- $spamminess *= $value;
- }
-
- # If no token was good for calculation, we really don't know how
- # to rate this text; so we assume a spam and ham probability of 0.5
-
- if($hamminess === 1 and $spamminess === 1) {
- $hamminess = 0.5;
- $spamminess = 0.5;
- $n = 1;
- }
- else {
- # Get the number of relevant ratings
- $n = count($relevant);
- }
-
- # Calculate the combined rating
-
- # The actual hamminess and spamminess
- $hamminess = 1 - pow($hamminess, (1 / $n));
- $spamminess = 1 - pow($spamminess, (1 / $n));
-
- # Calculate the combined indicator
- $probability = ($hamminess - $spamminess) / ($hamminess + $spamminess);
-
- # We want a value between 0 and 1, not between -1 and +1, so ...
- $probability = (1 + $probability) / 2;
-
- # Alea iacta est
- return $probability;
-
- }
-
- /**
- * Calculate the spamminess of a single token also considering "degenerated" versions
- *
- * @access private
- * @param string $word
- * @param string $texts_ham
- * @param string $texts_spam
- * @return void
- */
-
- private function _get_probability($word, $texts_ham, $texts_spam)
- {
-
- # Let's see what we have!
-
- if(isset($this->_token_data['tokens'][$word]) === TRUE) {
- # The token was in the database, so we can use it's data as-is
- # and calculate the spamminess of this token directly
- return $this->_calc_probability($this->_token_data['tokens'][$word], $texts_ham, $texts_spam);
- }
-
- # Damn. The token was not found, so do we have at least similar words?
-
- if(isset($this->_token_data['degenerates'][$word]) === TRUE) {
-
- # We found similar words, so calculate the spamminess for each one
- # and choose the most important one for the further calculation
-
- # The default rating is 0.5 simply saying nothing
- $rating = 0.5;
-
- foreach($this->_token_data['degenerates'][$word] as $degenerate => $count) {
-
- # Calculate the rating of the current degenerated token
- $rating_tmp = $this->_calc_probability($count, $texts_ham, $texts_spam);
-
- # Is it more important than the rating of another degenerated version?
- if(abs(0.5 - $rating_tmp) > abs(0.5 - $rating))
- $rating = $rating_tmp;
-
- }
-
- return $rating;
-
- }
-
- else {
- # The token is really unknown, so choose the default rating
- # for completely unknown tokens. This strips down to the
- # robX parameter so we can cheap out the freaky math ;-)
- return $this->config['rob_x'];
- }
-
- }
-
- /**
- * Do the actual spamminess calculation of a single token
- *
- * @access private
- * @param array $data
- * @param string $texts_ham
- * @param string $texts_spam
- * @return void
- */
-
- private function _calc_probability($data, $texts_ham, $texts_spam)
- {
-
- # Calculate the basic probability by Mr. Graham
-
- # But: consider the number of ham and spam texts saved instead of the
- # number of entries where the token appeared to calculate a relative
- # spamminess because we count tokens appearing multiple times not just
- # once but as often as they appear in the learned texts
-
- $rel_ham = $data['count_ham'];
- $rel_spam = $data['count_spam'];
-
- if($texts_ham > 0)
- $rel_ham = $data['count_ham'] / $texts_ham;
-
- if($texts_spam > 0)
- $rel_spam = $data['count_spam'] / $texts_spam;
-
- $rating = $rel_spam / ($rel_ham + $rel_spam);
-
- # Calculate the better probability proposed by Mr. Robinson
- $all = $data['count_ham'] + $data['count_spam'];
- return (($this->config['rob_s'] * $this->config['rob_x']) + ($all * $rating)) / ($this->config['rob_s'] + $all);
-
- }
-
- /**
- * Check the validity of the category of a request
- *
- * @access private
- * @param string $category
- * @return void
- */
-
- private function _check_category($category)
- {
- return $category === self::HAM or $category === self::SPAM;
- }
-
- /**
- * Learn a reference text
- *
- * @access public
- * @param string $text
- * @param const $category Either b8::SPAM or b8::HAM
- * @return void
- */
-
- public function learn($text, $category)
- {
- return $this->_process_text($text, $category, self::LEARN);
- }
-
- /**
- * Unlearn a reference text
- *
- * @access public
- * @param string $text
- * @param const $category Either b8::SPAM or b8::HAM
- * @return void
- */
-
- public function unlearn($text, $category)
- {
- return $this->_process_text($text, $category, self::UNLEARN);
- }
-
- /**
- * Does the actual interaction with the storage backend for learning or unlearning texts
- *
- * @access private
- * @param string $text
- * @param const $category Either b8::SPAM or b8::HAM
- * @param const $action Either b8::LEARN or b8::UNLEARN
- * @return void
- */
-
- private function _process_text($text, $category, $action)
- {
-
- # Validate the startup
-
- $started_up = $this->validate();
-
- if($started_up !== TRUE)
- return $started_up;
-
- # Look if the request is okay
- if($this->_check_category($category) === FALSE)
- return self::TRAINER_CATEGORY_FAIL;
-
- # Get all tokens from $text
-
- $tokens = $this->_lexer->get_tokens($text);
-
- # Check if the lexer failed
- # (if so, $tokens will be a lexer error code, if not, $tokens will be an array)
- if(!is_array($tokens))
- return $tokens;
-
- # Pass the tokens and what to do with it to the storage backend
- return $this->_database->process_text($tokens, $category, $action);
-
- }
-
-}
-
-?> \ No newline at end of file
diff --git a/library/spam/b8/degenerator/degenerator_default.php b/library/spam/b8/degenerator/degenerator_default.php
deleted file mode 100644
index 4ff6d882b..000000000
--- a/library/spam/b8/degenerator/degenerator_default.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-
-# Copyright (C) 2006-2010 Tobias Leupold <tobias.leupold@web.de>
-#
-# This file is part of the b8 package
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation in version 2.1 of the License.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-# License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-/**
- * Copyright (C) 2006-2010 Tobias Leupold <tobias.leupold@web.de>
- *
- * @license LGPL
- * @access public
- * @package b8
- * @author Tobias Leupold
- */
-
-class b8_degenerator_default
-{
-
- public $degenerates = array();
-
- /**
- * Generates a list of "degenerated" words for a list of words.
- *
- * @access public
- * @param array $tokens
- * @return array An array containing an array of degenerated tokens for each token
- */
-
- public function degenerate(array $words)
- {
-
- $degenerates = array();
-
- foreach($words as $word)
- $degenerates[$word] = $this->_degenerate_word($word);
-
- return $degenerates;
-
- }
-
- /**
- * If the original word is not found in the database then
- * we build "degenerated" versions of the word to lookup.
- *
- * @access private
- * @param string $word
- * @return array An array of degenerated words
- */
-
- protected function _degenerate_word($word)
- {
-
- # Check for any stored words so the process doesn't have to repeat
- if(isset($this->degenerates[$word]) === TRUE)
- return $this->degenerates[$word];
-
- $degenerate = array();
-
- # Add different version of upper and lower case and ucfirst
- array_push($degenerate, strtolower($word));
- array_push($degenerate, strtoupper($word));
- array_push($degenerate, ucfirst($word));
-
- # Degenerate all versions
-
- foreach($degenerate as $alt_word) {
-
- # Look for stuff like !!! and ???
-
- if(preg_match('/[!?]$/', $alt_word) > 0) {
-
- # Add versions with different !s and ?s
-
- if(preg_match('/[!?]{2,}$/', $alt_word) > 0) {
- $tmp = preg_replace('/([!?])+$/', '$1', $alt_word);
- array_push($degenerate, $tmp);
- }
-
- $tmp = preg_replace('/([!?])+$/', '', $alt_word);
- array_push($degenerate, $tmp);
-
- }
-
- # Look for ... at the end of the word
-
- $alt_word_int = $alt_word;
-
- while(preg_match('/[\.]$/', $alt_word_int) > 0) {
- $alt_word_int = substr($alt_word_int, 0, strlen($alt_word_int) - 1);
- array_push($degenerate, $alt_word_int);
- }
-
- }
-
- # Some degenerates are the same as the original word. These don't have
- # to be fetched, so we create a new array with only new tokens
-
- $real_degenerate = array();
-
- foreach($degenerate as $deg_word) {
- if($word != $deg_word)
- array_push($real_degenerate, $deg_word);
- }
-
- # Store the list of degenerates for the token
- $this->degenerates[$word] = $real_degenerate;
-
- return $real_degenerate;
-
- }
-
-}
-
-?> \ No newline at end of file
diff --git a/library/spam/b8/lexer/lexer_default.php b/library/spam/b8/lexer/lexer_default.php
deleted file mode 100644
index 7b5ca22bf..000000000
--- a/library/spam/b8/lexer/lexer_default.php
+++ /dev/null
@@ -1,205 +0,0 @@
-<?php
-
-# Copyright (C) 2006-2010 Tobias Leupold <tobias.leupold@web.de>
-#
-# This file is part of the b8 package
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation in version 2.1 of the License.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-# License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-/**
- * Copyright (C) 2006-2010 Tobias Leupold <tobias.leupold@web.de>
- *
- * @license LGPL
- * @access public
- * @package b8
- * @author Tobias Leupold
- * @author Oliver Lillie (aka buggedcom) (original PHP 5 port)
- */
-
-class b8_lexer_default
-{
-
- const LEXER_TEXT_NOT_STRING = 'LEXER_TEXT_NOT_STRING';
- const LEXER_TEXT_EMPTY = 'LEXER_TEXT_EMPTY';
-
- public $config = NULL;
-
- # The regular expressions we use to split the text to tokens
-
- public $regexp = array(
- 'ip' => '/([A-Za-z0-9\_\-\.]+)/',
- 'raw_split' => '/[\s,\.\/"\:;\|<>\-_\[\]{}\+=\)\(\*\&\^%]+/',
- 'html' => '/(<.+?>)/',
- 'tagname' => '/(.+?)\s/',
- 'numbers' => '/^[0-9]+$/'
- );
-
- /**
- * Constructs the lexer.
- *
- * @access public
- * @return void
- */
-
- function __construct($config)
- {
- $this->config = $config;
- }
-
- /**
- * Generates the tokens required for the bayesian filter.
- *
- * @access public
- * @param string $text
- * @return array Returns the list of tokens
- */
-
- public function get_tokens($text)
- {
-
- # Check that we actually have a string ...
- if(is_string($text) === FALSE)
- return self::LEXER_TEXT_NOT_STRING;
-
- # ... and that it's not empty
- if(empty($text) === TRUE)
- return self::LEXER_TEXT_EMPTY;
-
- # Re-convert the text to the original characters coded in UTF-8, as
- # they have been coded in html entities during the post process
- $text = html_entity_decode($text, ENT_QUOTES, 'UTF-8');
-
- $tokens = array();
-
- # Find URLs and IP addresses
-
- preg_match_all($this->regexp['ip'], $text, $raw_tokens);
-
- foreach($raw_tokens[1] as $word) {
-
- # Check for a dot
- if(strpos($word, '.') === FALSE)
- continue;
-
- # Check that the word is valid, min and max sizes, etc.
- if($this->_is_valid($word) === FALSE)
- continue;
-
- if(isset($tokens[$word]) === FALSE)
- $tokens[$word] = 1;
- else
- $tokens[$word] += 1;
-
- # Delete the word from the text so it doesn't get re-added.
- $text = str_replace($word, '', $text);
-
- # Also process the parts of the URLs
- $url_parts = preg_split($this->regexp['raw_split'], $word);
-
- foreach($url_parts as $word) {
-
- # Again validate the part
-
- if($this->_is_valid($word) === FALSE)
- continue;
-
- if(isset($tokens[$word]) === FALSE)
- $tokens[$word] = 1;
- else
- $tokens[$word] += 1;
-
- }
-
- }
-
- # Split the remaining text
-
- $raw_tokens = preg_split($this->regexp['raw_split'], $text);
-
- foreach($raw_tokens as $word) {
-
- # Again validate the part
-
- if($this->_is_valid($word) === FALSE)
- continue;
-
- if(isset($tokens[$word]) === FALSE)
- $tokens[$word] = 1;
- else
- $tokens[$word] += 1;
-
- }
-
- # Process the HTML
-
- preg_match_all($this->regexp['html'], $text, $raw_tokens);
-
- foreach($raw_tokens[1] as $word) {
-
- # Again validate the part
-
- if($this->_is_valid($word) === FALSE)
- continue;
-
- # If the tag has parameters, just use the tag itself
-
- if(strpos($word, ' ') !== FALSE) {
- preg_match($this->regexp['tagname'], $word, $tmp);
- $word = "{$tmp[1]}...>";
- }
-
- if(isset($tokens[$word]) === FALSE)
- $tokens[$word] = 1;
- else
- $tokens[$word] += 1;
-
- }
-
- # Return a list of all found tokens
- return $tokens;
-
- }
-
- /**
- * Validates a token.
- *
- * @access private
- * @param string $token The token string.
- * @return boolean Returns TRUE if the token is valid, otherwise returns FALSE
- */
-
- private function _is_valid($token)
- {
-
- # Validate the size of the token
-
- $len = strlen($token);
-
- if($len < $this->config['min_size'] or $len > $this->config['max_size'])
- return FALSE;
-
- # We may want to exclude pure numbers
- if($this->config['allow_numbers'] === FALSE) {
- if(preg_match($this->regexp['numbers'], $token) > 0)
- return FALSE;
- }
-
- # Token is okay
- return TRUE;
-
- }
-
-}
-
-?> \ No newline at end of file
diff --git a/library/spam/b8/storage/storage_base.php b/library/spam/b8/storage/storage_base.php
deleted file mode 100644
index 6b181ee96..000000000
--- a/library/spam/b8/storage/storage_base.php
+++ /dev/null
@@ -1,396 +0,0 @@
-<?php
-
-# Copyright (C) 2010 Tobias Leupold <tobias.leupold@web.de>
-#
-# This file is part of the b8 package
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation in version 2.1 of the License.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-# License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-/**
- * Functions used by all storage backends
- * Copyright (C) 2010 Tobias Leupold <tobias.leupold@web.de>
- *
- * @license LGPL
- * @access public
- * @package b8
- * @author Tobias Leupold
- */
-
-abstract class b8_storage_base
-{
-
- public $connected = FALSE;
-
- protected $_degenerator = NULL;
-
- const INTERNALS_TEXTS_HAM = 'bayes*texts.ham';
- const INTERNALS_TEXTS_SPAM = 'bayes*texts.spam';
- const INTERNALS_DBVERSION = 'bayes*dbversion';
-
- const BACKEND_NOT_CONNECTED = 'BACKEND_NOT_CONNECTED';
- const DATABASE_WRONG_VERSION = 'DATABASE_WRONG_VERSION';
- const DATABASE_NOT_B8 = 'DATABASE_NOT_B8';
-
- /**
- * Validates the class has all it needs to work.
- *
- * @access protected
- * @return mixed Returns TRUE if everything is okay, otherwise an error code.
- */
-
- protected function validate()
- {
-
- # We set up the degenerator here, as we would have to duplicate code if it
- # was done in the constructor of the respective storage backend.
- $class = 'b8_degenerator_' . $this->b8_config['degenerator'];
- $this->_degenerator = new $class();
-
- if($this->connected !== TRUE)
- return self::BACKEND_NOT_CONNECTED;
-
- return TRUE;
-
- }
-
- /**
- * Checks if a b8 database is used and if it's version is okay
- *
- * @access protected
- * @return mixed Returns TRUE if everything is okay, otherwise an error code.
- */
-
- protected function check_database($uid)
- {
-
- $internals = $this->get_internals($uid);
-
- if(isset($internals['dbversion'])) {
- if($internals['dbversion'] == "2") {
- return TRUE;
- }
- else {
- $this->connected = FALSE;
- return self::DATABASE_WRONG_VERSION;
- }
- }
- else {
- $this->connected = FALSE;
- return self::DATABASE_NOT_B8;
- }
-
- }
-
- /**
- * Parses the "count" data of a token.
- *
- * @access private
- * @param string $data
- * @return array Returns an array of the parsed data: array(count_ham, count_spam, lastseen).
- */
-
- private function _parse_count($data)
- {
-
- list($count_ham, $count_spam, $lastseen) = explode(' ', $data);
-
- $count_ham = (int) $count_ham;
- $count_spam = (int) $count_spam;
-
- return array(
- 'count_ham' => $count_ham,
- 'count_spam' => $count_spam
- );
-
- }
-
- /**
- * Get the database's internal variables.
- *
- * @access public
- * @return array Returns an array of all internals.
- */
-
- public function get_internals($uid)
- {
-
- $internals = $this->_get_query(
- array(
- self::INTERNALS_TEXTS_HAM,
- self::INTERNALS_TEXTS_SPAM,
- self::INTERNALS_DBVERSION
- ),
- $uid
- );
-
- return array(
- 'texts_ham' => (int) $internals[self::INTERNALS_TEXTS_HAM],
- 'texts_spam' => (int) $internals[self::INTERNALS_TEXTS_SPAM],
- 'dbversion' => (int) $internals[self::INTERNALS_DBVERSION]
- );
-
- }
-
- /**
- * Get all data about a list of tags from the database.
- *
- * @access public
- * @param array $tokens
- * @return mixed Returns FALSE on failure, otherwise returns array of returned data in the format array('tokens' => array(token => count), 'degenerates' => array(token => array(degenerate => count))).
- */
-
- public function get($tokens, $uid)
- {
-
- # Validate the startup
-
- $started_up = $this->validate();
-
- if($started_up !== TRUE)
- return $started_up;
-
- # First we see what we have in the database.
- $token_data = $this->_get_query($tokens, $uid);
-
- # Check if we have to degenerate some tokens
-
- $missing_tokens = array();
-
- foreach($tokens as $token) {
- if(!isset($token_data[$token]))
- $missing_tokens[] = $token;
- }
-
- if(count($missing_tokens) > 0) {
-
- # We have to degenerate some tokens
- $degenerates_list = array();
-
- # Generate a list of degenerated tokens for the missing tokens ...
- $degenerates = $this->_degenerator->degenerate($missing_tokens);
-
- # ... and look them up
-
- foreach($degenerates as $token => $token_degenerates)
- $degenerates_list = array_merge($degenerates_list, $token_degenerates);
-
- $token_data = array_merge($token_data, $this->_get_query($degenerates_list));
-
- }
-
- # Here, we have all availible data in $token_data.
-
- $return_data_tokens = array();
- $return_data_degenerates = array();
-
- foreach($tokens as $token) {
-
- if(isset($token_data[$token]) === TRUE) {
-
- # The token was found in the database
-
- # Add the data ...
- $return_data_tokens[$token] = $this->_parse_count($token_data[$token]);
-
- # ... and update it's lastseen parameter
- $this->_update($token, "{$return_data_tokens[$token]['count_ham']} {$return_data_tokens[$token]['count_spam']} " . $this->b8_config['today'], $uid );
-
- }
-
- else {
-
- # The token was not found, so we look if we
- # can return data for degenerated tokens
-
- # Check all degenerated forms of the token
-
- foreach($this->_degenerator->degenerates[$token] as $degenerate) {
-
- if(isset($token_data[$degenerate]) === TRUE) {
-
- # A degeneration of the token way found in the database
-
- # Add the data ...
- $return_data_degenerates[$token][$degenerate] = $this->_parse_count($token_data[$degenerate]);
-
- # ... and update it's lastseen parameter
- $this->_update($degenerate, "{$return_data_degenerates[$token][$degenerate]['count_ham']} {$return_data_degenerates[$token][$degenerate]['count_spam']} " . $this->b8_config['today'], $uid);
-
- }
-
- }
-
- }
-
- }
-
- # Now, all token data directly found in the database is in $return_data_tokens
- # and all data for degenerated versions is in $return_data_degenerates
-
- # First, we commit the changes to the lastseen parameters
- $this->_commit();
-
- # Then, we return what we have
- return array(
- 'tokens' => $return_data_tokens,
- 'degenerates' => $return_data_degenerates
- );
-
- }
-
- /**
- * Stores or deletes a list of tokens from the given category.
- *
- * @access public
- * @param array $tokens
- * @param const $category Either b8::HAM or b8::SPAM
- * @param const $action Either b8::LEARN or b8::UNLEARN
- * @return void
- */
-
- public function process_text($tokens, $category, $action, $uid)
- {
-
- # Validate the startup
-
- $started_up = $this->validate();
-
- if($started_up !== TRUE)
- return $started_up;
-
- # No matter what we do, we first have to check what data we have.
-
- # First get the internals, including the ham texts and spam texts counter
- $internals = $this->get_internals($uid);
-
- # Then, fetch all data for all tokens we have (and update their lastseen parameters)
- $token_data = $this->_get_query(array_keys($tokens), $uid);
-
- # Process all tokens to learn/unlearn
-
- foreach($tokens as $token => $count) {
-
- if(isset($token_data[$token])) {
-
- # We already have this token, so update it's data
-
- # Get the existing data
- list($count_ham, $count_spam, $lastseen) = explode(' ', $token_data[$token]);
- $count_ham = (int) $count_ham;
- $count_spam = (int) $count_spam;
-
- # Increase or decrease the right counter
-
- if($action === b8::LEARN) {
- if($category === b8::HAM)
- $count_ham += $count;
- elseif($category === b8::SPAM)
- $count_spam += $count;
- }
-
- elseif($action == b8::UNLEARN) {
- if($category === b8::HAM)
- $count_ham -= $count;
- elseif($category === b8::SPAM)
- $count_spam -= $count;
- }
-
- # We don't want to have negative values
-
- if($count_ham < 0)
- $count_ham = 0;
-
- if($count_spam < 0)
- $count_spam = 0;
-
- # Now let's see if we have to update or delete the token
- if($count_ham !== 0 or $count_spam !== 0)
- $this->_update($token, "$count_ham $count_spam " . $this->b8_config['today'], $uid);
- else
- $this->_del($token, $uid);
-
- }
-
- else {
-
- # We don't have the token. If we unlearn a text, we can't delete it
- # as we don't have it anyway, so just do something if we learn a text
-
- if($action === b8::LEARN) {
-
- if($category === b8::HAM)
- $data = '1 0 ';
- elseif($category === b8::SPAM)
- $data = '0 1 ';
-
- $data .= $this->b8_config['today'];
-
- $this->_put($token, $data, $uid);
-
- }
-
- }
-
- }
-
- # Now, all token have been processed, so let's update the right text
-
- if($action === b8::LEARN) {
-
- if($category === b8::HAM) {
- $internals['texts_ham']++;
- $this->_update(self::INTERNALS_TEXTS_HAM, $internals['texts_ham'], $uid);
- }
-
- elseif($category === b8::SPAM) {
- $internals['texts_spam']++;
- $this->_update(self::INTERNALS_TEXTS_SPAM, $internals['texts_spam'], $uid);
- }
-
- }
-
- elseif($action == b8::UNLEARN) {
-
- if($category === b8::HAM) {
-
- $internals['texts_ham']--;
-
- if($internals['texts_ham'] < 0)
- $internals['texts_ham'] = 0;
-
- $this->_update(self::INTERNALS_TEXTS_HAM, $internals['texts_ham'], $uid);
-
- }
-
- elseif($category === b8::SPAM) {
-
- $internals['texts_spam']--;
-
- if($internals['texts_spam'] < 0)
- $internals['texts_spam'] = 0;
-
- $this->_update(self::INTERNALS_TEXTS_SPAM, $internals['texts_spam'], $uid);
-
- }
-
- }
-
- # We're done and can commit all changes to the database now
- $this->_commit($uid);
-
- }
-
-}
-
-?> \ No newline at end of file
diff --git a/library/spam/b8/storage/storage_base.php.ORIG b/library/spam/b8/storage/storage_base.php.ORIG
deleted file mode 100644
index 01f5a69d7..000000000
--- a/library/spam/b8/storage/storage_base.php.ORIG
+++ /dev/null
@@ -1,395 +0,0 @@
-<?php
-
-# Copyright (C) 2010 Tobias Leupold <tobias.leupold@web.de>
-#
-# This file is part of the b8 package
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation in version 2.1 of the License.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-# License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-/**
- * Functions used by all storage backends
- * Copyright (C) 2010 Tobias Leupold <tobias.leupold@web.de>
- *
- * @license LGPL
- * @access public
- * @package b8
- * @author Tobias Leupold
- */
-
-abstract class b8_storage_base
-{
-
- public $connected = FALSE;
-
- protected $_degenerator = NULL;
-
- const INTERNALS_TEXTS_HAM = 'bayes*texts.ham';
- const INTERNALS_TEXTS_SPAM = 'bayes*texts.spam';
- const INTERNALS_DBVERSION = 'bayes*dbversion';
-
- const BACKEND_NOT_CONNECTED = 'BACKEND_NOT_CONNECTED';
- const DATABASE_WRONG_VERSION = 'DATABASE_WRONG_VERSION';
- const DATABASE_NOT_B8 = 'DATABASE_NOT_B8';
-
- /**
- * Validates the class has all it needs to work.
- *
- * @access protected
- * @return mixed Returns TRUE if everything is okay, otherwise an error code.
- */
-
- protected function validate()
- {
-
- # We set up the degenerator here, as we would have to duplicate code if it
- # was done in the constructor of the respective storage backend.
- $class = 'b8_degenerator_' . $this->b8_config['degenerator'];
- $this->_degenerator = new $class();
-
- if($this->connected !== TRUE)
- return self::BACKEND_NOT_CONNECTED;
-
- return TRUE;
-
- }
-
- /**
- * Checks if a b8 database is used and if it's version is okay
- *
- * @access protected
- * @return mixed Returns TRUE if everything is okay, otherwise an error code.
- */
-
- protected function check_database()
- {
-
- $internals = $this->get_internals();
-
- if(isset($internals['dbversion'])) {
- if($internals['dbversion'] == "2") {
- return TRUE;
- }
- else {
- $this->connected = FALSE;
- return self::DATABASE_WRONG_VERSION;
- }
- }
- else {
- $this->connected = FALSE;
- return self::DATABASE_NOT_B8;
- }
-
- }
-
- /**
- * Parses the "count" data of a token.
- *
- * @access private
- * @param string $data
- * @return array Returns an array of the parsed data: array(count_ham, count_spam, lastseen).
- */
-
- private function _parse_count($data)
- {
-
- list($count_ham, $count_spam, $lastseen) = explode(' ', $data);
-
- $count_ham = (int) $count_ham;
- $count_spam = (int) $count_spam;
-
- return array(
- 'count_ham' => $count_ham,
- 'count_spam' => $count_spam
- );
-
- }
-
- /**
- * Get the database's internal variables.
- *
- * @access public
- * @return array Returns an array of all internals.
- */
-
- public function get_internals()
- {
-
- $internals = $this->_get_query(
- array(
- self::INTERNALS_TEXTS_HAM,
- self::INTERNALS_TEXTS_SPAM,
- self::INTERNALS_DBVERSION
- )
- );
-
- return array(
- 'texts_ham' => (int) $internals[self::INTERNALS_TEXTS_HAM],
- 'texts_spam' => (int) $internals[self::INTERNALS_TEXTS_SPAM],
- 'dbversion' => (int) $internals[self::INTERNALS_DBVERSION]
- );
-
- }
-
- /**
- * Get all data about a list of tags from the database.
- *
- * @access public
- * @param array $tokens
- * @return mixed Returns FALSE on failure, otherwise returns array of returned data in the format array('tokens' => array(token => count), 'degenerates' => array(token => array(degenerate => count))).
- */
-
- public function get($tokens)
- {
-
- # Validate the startup
-
- $started_up = $this->validate();
-
- if($started_up !== TRUE)
- return $started_up;
-
- # First we see what we have in the database.
- $token_data = $this->_get_query($tokens);
-
- # Check if we have to degenerate some tokens
-
- $missing_tokens = array();
-
- foreach($tokens as $token) {
- if(!isset($token_data[$token]))
- $missing_tokens[] = $token;
- }
-
- if(count($missing_tokens) > 0) {
-
- # We have to degenerate some tokens
- $degenerates_list = array();
-
- # Generate a list of degenerated tokens for the missing tokens ...
- $degenerates = $this->_degenerator->degenerate($missing_tokens);
-
- # ... and look them up
-
- foreach($degenerates as $token => $token_degenerates)
- $degenerates_list = array_merge($degenerates_list, $token_degenerates);
-
- $token_data = array_merge($token_data, $this->_get_query($degenerates_list));
-
- }
-
- # Here, we have all availible data in $token_data.
-
- $return_data_tokens = array();
- $return_data_degenerates = array();
-
- foreach($tokens as $token) {
-
- if(isset($token_data[$token]) === TRUE) {
-
- # The token was found in the database
-
- # Add the data ...
- $return_data_tokens[$token] = $this->_parse_count($token_data[$token]);
-
- # ... and update it's lastseen parameter
- $this->_update($token, "{$return_data_tokens[$token]['count_ham']} {$return_data_tokens[$token]['count_spam']} " . $this->b8_config['today']);
-
- }
-
- else {
-
- # The token was not found, so we look if we
- # can return data for degenerated tokens
-
- # Check all degenerated forms of the token
-
- foreach($this->_degenerator->degenerates[$token] as $degenerate) {
-
- if(isset($token_data[$degenerate]) === TRUE) {
-
- # A degeneration of the token way found in the database
-
- # Add the data ...
- $return_data_degenerates[$token][$degenerate] = $this->_parse_count($token_data[$degenerate]);
-
- # ... and update it's lastseen parameter
- $this->_update($degenerate, "{$return_data_degenerates[$token][$degenerate]['count_ham']} {$return_data_degenerates[$token][$degenerate]['count_spam']} " . $this->b8_config['today']);
-
- }
-
- }
-
- }
-
- }
-
- # Now, all token data directly found in the database is in $return_data_tokens
- # and all data for degenerated versions is in $return_data_degenerates
-
- # First, we commit the changes to the lastseen parameters
- $this->_commit();
-
- # Then, we return what we have
- return array(
- 'tokens' => $return_data_tokens,
- 'degenerates' => $return_data_degenerates
- );
-
- }
-
- /**
- * Stores or deletes a list of tokens from the given category.
- *
- * @access public
- * @param array $tokens
- * @param const $category Either b8::HAM or b8::SPAM
- * @param const $action Either b8::LEARN or b8::UNLEARN
- * @return void
- */
-
- public function process_text($tokens, $category, $action)
- {
-
- # Validate the startup
-
- $started_up = $this->validate();
-
- if($started_up !== TRUE)
- return $started_up;
-
- # No matter what we do, we first have to check what data we have.
-
- # First get the internals, including the ham texts and spam texts counter
- $internals = $this->get_internals();
-
- # Then, fetch all data for all tokens we have (and update their lastseen parameters)
- $token_data = $this->_get_query(array_keys($tokens));
-
- # Process all tokens to learn/unlearn
-
- foreach($tokens as $token => $count) {
-
- if(isset($token_data[$token])) {
-
- # We already have this token, so update it's data
-
- # Get the existing data
- list($count_ham, $count_spam, $lastseen) = explode(' ', $token_data[$token]);
- $count_ham = (int) $count_ham;
- $count_spam = (int) $count_spam;
-
- # Increase or decrease the right counter
-
- if($action === b8::LEARN) {
- if($category === b8::HAM)
- $count_ham += $count;
- elseif($category === b8::SPAM)
- $count_spam += $count;
- }
-
- elseif($action == b8::UNLEARN) {
- if($category === b8::HAM)
- $count_ham -= $count;
- elseif($category === b8::SPAM)
- $count_spam -= $count;
- }
-
- # We don't want to have negative values
-
- if($count_ham < 0)
- $count_ham = 0;
-
- if($count_spam < 0)
- $count_spam = 0;
-
- # Now let's see if we have to update or delete the token
- if($count_ham !== 0 or $count_spam !== 0)
- $this->_update($token, "$count_ham $count_spam " . $this->b8_config['today']);
- else
- $this->_del($token);
-
- }
-
- else {
-
- # We don't have the token. If we unlearn a text, we can't delete it
- # as we don't have it anyway, so just do something if we learn a text
-
- if($action === b8::LEARN) {
-
- if($category === b8::HAM)
- $data = '1 0 ';
- elseif($category === b8::SPAM)
- $data = '0 1 ';
-
- $data .= $this->b8_config['today'];
-
- $this->_put($token, $data);
-
- }
-
- }
-
- }
-
- # Now, all token have been processed, so let's update the right text
-
- if($action === b8::LEARN) {
-
- if($category === b8::HAM) {
- $internals['texts_ham']++;
- $this->_update(self::INTERNALS_TEXTS_HAM, $internals['texts_ham']);
- }
-
- elseif($category === b8::SPAM) {
- $internals['texts_spam']++;
- $this->_update(self::INTERNALS_TEXTS_SPAM, $internals['texts_spam']);
- }
-
- }
-
- elseif($action == b8::UNLEARN) {
-
- if($category === b8::HAM) {
-
- $internals['texts_ham']--;
-
- if($internals['texts_ham'] < 0)
- $internals['texts_ham'] = 0;
-
- $this->_update(self::INTERNALS_TEXTS_HAM, $internals['texts_ham']);
-
- }
-
- elseif($category === b8::SPAM) {
-
- $internals['texts_spam']--;
-
- if($internals['texts_spam'] < 0)
- $internals['texts_spam'] = 0;
-
- $this->_update(self::INTERNALS_TEXTS_SPAM, $internals['texts_spam']);
-
- }
-
- }
-
- # We're done and can commit all changes to the database now
- $this->_commit();
-
- }
-
-}
-
-?> \ No newline at end of file
diff --git a/library/spam/b8/storage/storage_dba.php b/library/spam/b8/storage/storage_dba.php
deleted file mode 100644
index 04618b23e..000000000
--- a/library/spam/b8/storage/storage_dba.php
+++ /dev/null
@@ -1,198 +0,0 @@
-<?php
-
-# Copyright (C) 2006-2010 Tobias Leupold <tobias.leupold@web.de>
-#
-# This file is part of the b8 package
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation in version 2.1 of the License.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-# License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-/**
- * The DBA (Berkeley DB) abstraction layer for communicating with the database.
- * Copyright (C) 2006-2010 Tobias Leupold <tobias.leupold@web.de>
- *
- * @license LGPL
- * @access public
- * @package b8
- * @author Tobias Leupold
- */
-
-class b8_storage_dba extends b8_storage_base
-{
-
- public $config = array(
- 'database' => 'wordlist.db',
- 'handler' => 'db4',
- );
-
- public $b8_config = array(
- 'degenerator' => NULL,
- 'today' => NULL
- );
-
- private $_db = NULL;
-
- const DATABASE_CONNECTION_FAIL = 'DATABASE_CONNECTION_FAIL';
-
- /**
- * Constructs the database layer.
- *
- * @access public
- * @param string $config
- */
-
- function __construct($config, $degenerator, $today)
- {
-
- # Pass some variables of the main b8 config to this class
- $this->b8_config['degenerator'] = $degenerator;
- $this->b8_config['today'] = $today;
-
- # Validate the config items
- if(count($config) > 0) {
- foreach ($config as $name => $value) {
- $this->config[$name] = (string) $value;
- }
- }
-
- }
-
- /**
- * Closes the database connection.
- *
- * @access public
- * @return void
- */
-
- function __destruct()
- {
- if($this->_db !== NULL) {
- dba_close($this->_db);
- $this->connected = FALSE;
- }
- }
-
- /**
- * Connect to the database and do some checks.
- *
- * @access public
- * @return mixed Returns TRUE on a successful database connection, otherwise returns a constant from b8.
- */
-
- public function connect()
- {
-
- # Have we already connected?
- if($this->_db !== NULL)
- return TRUE;
-
- # Open the database connection
- $this->_db = dba_open(dirname(__FILE__) . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . $this->config['database'], "w", $this->config['handler']);
-
- if($this->_db === FALSE) {
- $this->connected = FALSE;
- $this->_db = NULL;
- return self::DATABASE_CONNECTION_FAIL;
- }
-
- # Everything is okay and connected
-
- $this->connected = TRUE;
-
- # Let's see if this is a b8 database and the version is okay
- return $this->check_database();
-
- }
-
- /**
- * Does the actual interaction with the database when fetching data.
- *
- * @access protected
- * @param array $tokens
- * @return mixed Returns an array of the returned data in the format array(token => data) or an empty array if there was no data.
- */
-
- protected function _get_query($tokens)
- {
-
- $data = array();
-
- foreach ($tokens as $token) {
-
- $count = dba_fetch($token, $this->_db);
-
- if($count !== FALSE)
- $data[$token] = $count;
-
- }
-
- return $data;
-
- }
-
- /**
- * Store a token to the database.
- *
- * @access protected
- * @param string $token
- * @param string $count
- * @return bool TRUE on success or FALSE on failure
- */
-
- protected function _put($token, $count) {
- return dba_insert($token, $count, $this->_db);
- }
-
- /**
- * Update an existing token.
- *
- * @access protected
- * @param string $token
- * @param string $count
- * @return bool TRUE on success or FALSE on failure
- */
-
- protected function _update($token, $count)
- {
- return dba_replace($token, $count, $this->_db);
- }
-
- /**
- * Remove a token from the database.
- *
- * @access protected
- * @param string $token
- * @return bool TRUE on success or FALSE on failure
- */
-
- protected function _del($token)
- {
- return dba_delete($token, $this->_db);
- }
-
- /**
- * Does nothing :-D
- *
- * @access protected
- * @return void
- */
-
- protected function _commit()
- {
- # We just need this function because the (My)SQL backend(s) need it.
- return;
- }
-
-}
-
-?> \ No newline at end of file
diff --git a/library/spam/b8/storage/storage_frndc.php b/library/spam/b8/storage/storage_frndc.php
deleted file mode 100644
index f211d4431..000000000
--- a/library/spam/b8/storage/storage_frndc.php
+++ /dev/null
@@ -1,318 +0,0 @@
-<?php
-
-# Copyright (C) 2006-2011 Tobias Leupold <tobias.leupold@web.de>
-#
-# This file is part of the b8 package
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation in version 2.1 of the License.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-# License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-/**
- * The MySQL abstraction layer for communicating with the database.
- * Copyright (C) 2009 Oliver Lillie (aka buggedcom)
- * Copyright (C) 2010-2011 Tobias Leupold <tobias.leupold@web.de>
- *
- * @license LGPL
- * @access public
- * @package b8
- * @author Oliver Lillie (aka buggedcom) (original PHP 5 port and optimizations)
- * @author Tobias Leupold
- */
-
-class b8_storage_frndc extends b8_storage_base
-{
-
- public $config = array(
- 'database' => 'b8_wordlist',
- 'table_name' => 'b8_wordlist',
- 'host' => 'localhost',
- 'user' => FALSE,
- 'pass' => FALSE,
- 'connection' => NULL
- );
-
- public $b8_config = array(
- 'degenerator' => NULL,
- 'today' => NULL
- );
-
- private $_connection = NULL;
- private $_deletes = array();
- private $_puts = array();
- private $_updates = array();
- private $uid = 0;
-
- const DATABASE_CONNECTION_FAIL = 'DATABASE_CONNECTION_FAIL';
- const DATABASE_CONNECTION_ERROR = 'DATABASE_CONNECTION_ERROR';
- const DATABASE_CONNECTION_BAD_RESOURCE = 'DATABASE_CONNECTION_BAD_RESOURCE';
- const DATABASE_SELECT_ERROR = 'DATABASE_SELECT_ERROR';
- const DATABASE_TABLE_ACCESS_FAIL = 'DATABASE_TABLE_ACCESS_FAIL';
- const DATABASE_WRONG_VERSION = 'DATABASE_WRONG_VERSION';
-
- /**
- * Constructs the database layer.
- *
- * @access public
- * @param string $config
- */
-
- function __construct($config, $degenerator, $today)
- {
-
- # Pass some variables of the main b8 config to this class
- $this->b8_config['degenerator'] = $degenerator;
- $this->b8_config['today'] = $today;
-
- # Validate the config items
-
- if(count($config) > 0) {
-
- foreach ($config as $name => $value) {
-
- switch($name) {
-
- case 'table_name':
- case 'host':
- case 'user':
- case 'pass':
- case 'database':
- $this->config[$name] = (string) $value;
- break;
-
- case 'connection':
-
- if($value !== NULL) {
-
- if(is_resource($value) === TRUE) {
- $resource_type = get_resource_type($value);
- $this->config['connection'] = $resource_type !== 'mysql link' && $resource_type !== 'mysql link persistent' ? FALSE : $value;
- }
-
- else
- $this->config['connection'] = FALSE;
-
- }
-
- break;
-
- }
-
- }
-
- }
-
- }
-
- /**
- * Closes the database connection.
- *
- * @access public
- * @return void
- */
-
- function __destruct()
- {
-
- if($this->_connection === NULL)
- return;
-
- # Commit any changes before closing
- $this->_commit();
-
- # Just close the connection if no link-resource was passed and b8 created it's own connection
- if($this->config['connection'] === NULL)
- mysql_close($this->_connection);
-
- $this->connected = FALSE;
-
- }
-
- /**
- * Connect to the database and do some checks.
- *
- * @access public
- * @return mixed Returns TRUE on a successful database connection, otherwise returns a constant from b8.
- */
-
- public function connect()
- {
-
- $this->connected = TRUE;
- return TRUE;
-
- }
-
- /**
- * Does the actual interaction with the database when fetching data.
- *
- * @access protected
- * @param array $tokens
- * @return mixed Returns an array of the returned data in the format array(token => data) or an empty array if there was no data.
- */
-
- protected function _get_query($tokens, $uid)
- {
-
- # Construct the query ...
-
- if(count($tokens) > 0) {
-
- $where = array();
-
- foreach ($tokens as $token) {
- $token = dbesc($token);
- array_push($where, $token);
- }
-
- $where = 'term IN ("' . implode('", "', $where) . '")';
- }
-
- else {
- $token = dbesc($token);
- $where = 'term = "' . $token . '"';
- }
-
- # ... and fetch the data
-
- $result = q('
- SELECT * FROM spam WHERE ' . $where . ' AND uid = ' . $uid );
-
-
- $returned_tokens = array();
- if(count($result)) {
- foreach($result as $rr)
- $returned_tokens[] = $rr['term'];
- }
- $to_create = array();
-
- if(count($tokens) > 0) {
- foreach($tokens as $token)
- if(! in_array($token,$returned_tokens))
- $to_create[] = str_tolower($token);
- }
- if(count($to_create)) {
- $sql = '';
- foreach($to_create as $term) {
- if(strlen($sql))
- $sql .= ',';
- $sql .= sprintf("(term,date,uid) values('%s','%s',%d)",
- dbesc(str_tolower($term))
- dbesc(datetime_convert()),
- intval($uid)
- );
- q("insert into spam " . $sql);
- }
-
- return $result;
-
- }
-
- /**
- * Store a token to the database.
- *
- * @access protected
- * @param string $token
- * @param string $count
- * @return void
- */
-
- protected function _put($token, $count, $uid) {
- $token = dbesc($token);
- $count = dbesc($count);
- $uid = dbesc($uid);
- array_push($this->_puts, '("' . $token . '", "' . $count . '", "' . $uid .'")');
- }
-
- /**
- * Update an existing token.
- *
- * @access protected
- * @param string $token
- * @param string $count
- * @return void
- */
-
- protected function _update($token, $count, $uid)
- {
- $token = dbesc($token);
- $count = dbesc($count);
- $uid = dbesc($uid);
- array_push($this->_puts, '("' . $token . '", "' . $count . '", "' . $uid .'")');
- }
-
- /**
- * Remove a token from the database.
- *
- * @access protected
- * @param string $token
- * @return void
- */
-
- protected function _del($token, $uid)
- {
- $token = dbesc($token);
- $uid = dbesc($uid);
- $this->uid = $uid;
- array_push($this->_deletes, $token);
- }
-
- /**
- * Commits any modification queries.
- *
- * @access protected
- * @return void
- */
-
- protected function _commit($uid)
- {
-
- if(count($this->_deletes) > 0) {
-
- $result = q('
- DELETE FROM ' . $this->config['table_name'] . '
- WHERE term IN ("' . implode('", "', $this->_deletes) . '") AND uid = ' . $this->uid);
-
- $this->_deletes = array();
-
- }
-
- if(count($this->_puts) > 0) {
-//fixme
- $result = q('
- INSERT INTO ' . $this->config['table_name'] . '(term, count, uid)
- VALUES ' . implode(', ', $this->_puts));
-
- $this->_puts = array();
-
- }
-
- if(count($this->_updates) > 0) {
-
- // this still needs work
- $result = q("select * from " . $this->config['table_name'] . ' where token = ');
-
-
- $result = q('
- INSERT INTO ' . $this->config['table_name'] . '(token, count, uid)
- VALUES ' . implode(', ', $this->_updates) . ', ' . $uid . '
- ON DUPLICATE KEY UPDATE ' . $this->config['table_name'] . '.count = VALUES(count);', $this->_connection);
-
- $this->_updates = array();
-
- }
-
- }
-
-}
-
-?> \ No newline at end of file
diff --git a/library/spam/b8/storage/storage_mysql.php b/library/spam/b8/storage/storage_mysql.php
deleted file mode 100644
index 022536350..000000000
--- a/library/spam/b8/storage/storage_mysql.php
+++ /dev/null
@@ -1,351 +0,0 @@
-<?php
-
-# Copyright (C) 2006-2011 Tobias Leupold <tobias.leupold@web.de>
-#
-# This file is part of the b8 package
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation in version 2.1 of the License.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-# License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-/**
- * The MySQL abstraction layer for communicating with the database.
- * Copyright (C) 2009 Oliver Lillie (aka buggedcom)
- * Copyright (C) 2010-2011 Tobias Leupold <tobias.leupold@web.de>
- *
- * @license LGPL
- * @access public
- * @package b8
- * @author Oliver Lillie (aka buggedcom) (original PHP 5 port and optimizations)
- * @author Tobias Leupold
- */
-
-class b8_storage_mysql extends b8_storage_base
-{
-
- public $config = array(
- 'database' => 'b8_wordlist',
- 'table_name' => 'b8_wordlist',
- 'host' => 'localhost',
- 'user' => FALSE,
- 'pass' => FALSE,
- 'connection' => NULL
- );
-
- public $b8_config = array(
- 'degenerator' => NULL,
- 'today' => NULL
- );
-
- private $_connection = NULL;
- private $_deletes = array();
- private $_puts = array();
- private $_updates = array();
-
- const DATABASE_CONNECTION_FAIL = 'DATABASE_CONNECTION_FAIL';
- const DATABASE_CONNECTION_ERROR = 'DATABASE_CONNECTION_ERROR';
- const DATABASE_CONNECTION_BAD_RESOURCE = 'DATABASE_CONNECTION_BAD_RESOURCE';
- const DATABASE_SELECT_ERROR = 'DATABASE_SELECT_ERROR';
- const DATABASE_TABLE_ACCESS_FAIL = 'DATABASE_TABLE_ACCESS_FAIL';
- const DATABASE_WRONG_VERSION = 'DATABASE_WRONG_VERSION';
-
- /**
- * Constructs the database layer.
- *
- * @access public
- * @param string $config
- */
-
- function __construct($config, $degenerator, $today)
- {
-
- # Pass some variables of the main b8 config to this class
- $this->b8_config['degenerator'] = $degenerator;
- $this->b8_config['today'] = $today;
-
- # Validate the config items
-
- if(count($config) > 0) {
-
- foreach ($config as $name => $value) {
-
- switch($name) {
-
- case 'table_name':
- case 'host':
- case 'user':
- case 'pass':
- case 'database':
- $this->config[$name] = (string) $value;
- break;
-
- case 'connection':
-
- if($value !== NULL) {
-
- if(is_resource($value) === TRUE) {
- $resource_type = get_resource_type($value);
- $this->config['connection'] = $resource_type !== 'mysql link' && $resource_type !== 'mysql link persistent' ? FALSE : $value;
- }
-
- else
- $this->config['connection'] = FALSE;
-
- }
-
- break;
-
- }
-
- }
-
- }
-
- }
-
- /**
- * Closes the database connection.
- *
- * @access public
- * @return void
- */
-
- function __destruct()
- {
-
- if($this->_connection === NULL)
- return;
-
- # Commit any changes before closing
- $this->_commit();
-
- # Just close the connection if no link-resource was passed and b8 created it's own connection
- if($this->config['connection'] === NULL)
- mysql_close($this->_connection);
-
- $this->connected = FALSE;
-
- }
-
- /**
- * Connect to the database and do some checks.
- *
- * @access public
- * @return mixed Returns TRUE on a successful database connection, otherwise returns a constant from b8.
- */
-
- public function connect()
- {
-
- # Are we already connected?
- if($this->connected === TRUE)
- return TRUE;
-
- # Are we using an existing passed resource?
- if($this->config['connection'] === FALSE) {
- # ... yes we are, but the connection is not a resource, so return an error
- $this->connected = FALSE;
- return self::DATABASE_CONNECTION_BAD_RESOURCE;
- }
-
- elseif($this->config['connection'] === NULL) {
-
- # ... no we aren't so we have to connect.
-
- if($this->_connection = mysql_connect($this->config['host'], $this->config['user'], $this->config['pass'])) {
- if(mysql_select_db($this->config['database'], $this->_connection) === FALSE) {
- $this->connected = FALSE;
- return self::DATABASE_SELECT_ERROR . ": " . mysql_error();
- }
- }
- else {
- $this->connected = FALSE;
- return self::DATABASE_CONNECTION_ERROR;
- }
-
- }
-
- else {
- # ... yes we are
- $this->_connection = $this->config['connection'];
- }
-
- # Just in case ...
- if($this->_connection === NULL) {
- $this->connected = FALSE;
- return self::DATABASE_CONNECTION_FAIL;
- }
-
- # Check to see if the wordlist table exists
- if(mysql_query('DESCRIBE ' . $this->config['table_name'], $this->_connection) === FALSE) {
- $this->connected = FALSE;
- return self::DATABASE_TABLE_ACCESS_FAIL . ": " . mysql_error();
- }
-
- # Everything is okay and connected
- $this->connected = TRUE;
-
- # Let's see if this is a b8 database and the version is okay
- return $this->check_database();
-
- }
-
- /**
- * Does the actual interaction with the database when fetching data.
- *
- * @access protected
- * @param array $tokens
- * @return mixed Returns an array of the returned data in the format array(token => data) or an empty array if there was no data.
- */
-
- protected function _get_query($tokens)
- {
-
- # Construct the query ...
-
- if(count($tokens) > 0) {
-
- $where = array();
-
- foreach ($tokens as $token) {
- $token = mysql_real_escape_string($token, $this->_connection);
- array_push($where, $token);
- }
-
- $where = 'token IN ("' . implode('", "', $where) . '")';
- }
-
- else {
- $token = mysql_real_escape_string($token, $this->_connection);
- $where = 'token = "' . $token . '"';
- }
-
- # ... and fetch the data
-
- $result = mysql_query('
- SELECT token, count
- FROM ' . $this->config['table_name'] . '
- WHERE ' . $where . ';
- ', $this->_connection);
-
- $data = array();
-
- while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
- $data[$row['token']] = $row['count'];
-
- mysql_free_result($result);
-
- return $data;
-
- }
-
- /**
- * Store a token to the database.
- *
- * @access protected
- * @param string $token
- * @param string $count
- * @return void
- */
-
- protected function _put($token, $count) {
- $token = mysql_real_escape_string($token, $this->_connection);
- $count = mysql_real_escape_string($count, $this->_connection);;
- array_push($this->_puts, '("' . $token . '", "' . $count . '")');
- }
-
- /**
- * Update an existing token.
- *
- * @access protected
- * @param string $token
- * @param string $count
- * @return void
- */
-
- protected function _update($token, $count)
- {
- $token = mysql_real_escape_string($token, $this->_connection);
- $count = mysql_real_escape_string($count, $this->_connection);
- array_push($this->_updates, '("' . $token . '", "' . $count . '")');
- }
-
- /**
- * Remove a token from the database.
- *
- * @access protected
- * @param string $token
- * @return void
- */
-
- protected function _del($token)
- {
- $token = mysql_real_escape_string($token, $this->_connection);
- array_push($this->_deletes, $token);
- }
-
- /**
- * Commits any modification queries.
- *
- * @access protected
- * @return void
- */
-
- protected function _commit()
- {
-
- if(count($this->_deletes) > 0) {
-
- $result = mysql_query('
- DELETE FROM ' . $this->config['table_name'] . '
- WHERE token IN ("' . implode('", "', $this->_deletes) . '");
- ', $this->_connection);
-
- if(is_resource($result) === TRUE)
- mysql_free_result($result);
-
- $this->_deletes = array();
-
- }
-
- if(count($this->_puts) > 0) {
-
- $result = mysql_query('
- INSERT INTO ' . $this->config['table_name'] . '(token, count)
- VALUES ' . implode(', ', $this->_puts) . ';', $this->_connection);
-
- if(is_resource($result) === TRUE)
- mysql_free_result($result);
-
- $this->_puts = array();
-
- }
-
- if(count($this->_updates) > 0) {
-
- $result = mysql_query('
- INSERT INTO ' . $this->config['table_name'] . '(token, count)
- VALUES ' . implode(', ', $this->_updates) . '
- ON DUPLICATE KEY UPDATE ' . $this->config['table_name'] . '.count = VALUES(count);', $this->_connection);
-
- if(is_resource($result) === TRUE)
- mysql_free_result($result);
-
- $this->_updates = array();
-
- }
-
- }
-
-}
-
-?> \ No newline at end of file
diff --git a/library/spam/doc/COPYING b/library/spam/doc/COPYING
deleted file mode 100644
index 8add30ad5..000000000
--- a/library/spam/doc/COPYING
+++ /dev/null
@@ -1,504 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
diff --git a/library/spam/doc/ChangeLog b/library/spam/doc/ChangeLog
deleted file mode 100644
index 78a4fc77f..000000000
--- a/library/spam/doc/ChangeLog
+++ /dev/null
@@ -1,179 +0,0 @@
-2010-12-30 Tobias Leupold <tobias.leupold@web.de>
-
- * Release: Version 0.5.1
-
- * Bigger changes:
- - Fixed some issues with the scope of variables leading to problems when multiple instances of b8 are created. Thanks to Mike Creuzer for the bug report :-)
- - Centralized the loading of class definition files in the b8 constructor and created a function to handle the inclusion.
-
- * b8.php: Return a lexer error code instead of a rating if the lexer failed. The lexer never returned FALSE but b8 checked only for this value to validate the lexer didn't fail. Thanks to Matt Friedman for the bug report :-)
-
- * lexer/lexer_default.php: A bit of code cleanup: less useless nesting.
-
- * doc/readme.*: Updated the documentation, added a FAQ.
-
-2010-06-27 Tobias Leupold <tobias.leupold@web.de>
-
- * Release: Version 0.5-r1
-
- * doc/readme.*: Updated the documentation; forgot the newly introduced b8::HAM and b8::SPAM variables. Added some additional information about the storage model.
-
-2010-06-02 Tobias Leupold <tobias.leupold@web.de>
-
- * Release: Version 0.5
-
- * 100.000 Changes (new major release!), at a glance:
- - No PHP 4 compatibility anymore. Much cleaner code base with less hacks.
- - Completely reworked storage model. The SQL performance increased dramatically, the Berkeley DB performance remains as fast as it always has been.
- - Better lexer which can also handle non-latin1 texts in a nice way, so that e. g. Cyrillic or Chinese texts can be classified more performant.
- - No config files anymore, multiple instances of b8 can be now created in the same script with different configuration, databases and no problems.
- - No spooky administration interface anymore that needs an SQL database, even if Berkeley DB is used (anybody who actually used this?! I never did ;-).
- - No "install" scripts and routines and a less end-user compatible documentation. Anybody integrating b8 in his homepage won't be an end-user, will he?
-
-2009-02-03 Oliver Lillie (aka buggedcom)
-
- * Revision: 221 (the original PHP 5 port)
-
- * Rewrote Tobias' original class for optimisation and PHP 5 functionality.
-
- * Improved database mysql query useage by over ~820%
-
- * Class is faster, ~20%.
-
- * Slight increase in memory usage, but it's small and given the advantages of the speed increase and query reduction it's worth it.
-
- * Removed install code from mysql class and added a sql file. Anyone who wants to use this is generally going to be more advanced anyway and see the sql to install.
-
-2009-02-03 Tobias Leupold <tobias.leupold@web.de>
-
- * Release: Version 0.4.4 -- changed the license type from GPL to LGPL
-
-2008-06-27 Tobias Leupold <tobias.leupold@web.de>
-
- * Release: Version 0.4.3 -- no bugs found ... so let's make a release with only small changes ;-)
-
- * b8.php: Removed debugging messages that were commented out anyway
-
- * storage/storage_mysql.php: Made it possible to pass both a MySQL-link resource and a table name to b8. This makes b8 useable in the Redaxo CMS (and probably others)
-
- * doc/readme.htm: Updated documentation accordingly
-
-2008-02-17 Tobias Leupold <tobias.leupold@web.de>
-
- * Release: Version 0.4.2
-
- * interface/backup.php: the bayes*dbversion tag is now written to a database emptied by drop(), so that it will be useable without an error message even if no backup is recovered afterwards.
-
- * doc/readme.htm: added a security note to the configuration section (htaccess should be used to avoid everybody to be able to see the configuration)
-
-2007-09-17 Tobias Leupold <tobias.leupold@web.de>
-
- * Release: Version 0.4.1
-
- * storage/storage_mysql.php: fixed b8 crashing when getting passed a persistent MySQL resource link. Thanks to Paul Chapman for the bug report :-)
-
-2007-06-08 Tobias Leupold <tobias.leupold@web.de>
-
- * Release: Version 0.4
-
- * Let's go the whole hog. b8's class is now "b8" and no more "bayes", and all internal variables have now according names.
-
- * Reworked the whole (surprisingly crappy) implementation of b8. No more global() calls, everything happens inside the classes now. Made that whole stuff really object oriented (as good as possible with PHP's poor OOP model ;-).
-
- * No more PHP code in the configuration files.
-
- * Created an extra lexer class. This is now also configurable.
-
- * Storage classes now can create their own databases when this is requested by the configuration.
-
- * MySQL calls are no random shots anymore: either, a MySQL-link resource is passed to b8 on startup which will be used for the queries, or the class sets up it's own link. Same for SQLite.
-
- * The interface now uses a separate storage backend capable of SQL. In this way, we _really_ can query the database for e. g. an ordered list of tokens. After doing what we wanted with this work database, the b8 database can be synced with it.
-
- * Added a lot of verbose error handling.
-
- * Fixed a dumb error: all tokens from a text were used for the spamminess calculation, because two for() loops both used $i as their counter. D'oh!!! Now, the filter's performance is way better.
-
- * Catched on the way how that whole math stuff works a little more ;-) Now, the calculation of the single probabilities proposed by Mr. Robinson does a little more the stuff it was intended to do, because ...
-
- * Made some calculation constants parameters: the number of tokens to use, the default rating for unknown tokens and Gary Robinson's s constant.
-
- * Introduced an optional minimum deviation that a token's rating must have to be considered in the spamminess calculation.
-
- * The default extreme ratings for tokens only in ham or spam are now optional. One can also choose to calculate all ratings by Mr. Robinson's method.
-
- * Noticed that text primary keys are not case sensitive by default in MySQL, which has a noticeable impact on the filter's performance. Informed the MySQL users about that.
-
- * The whole code sucks much less ;-) b8 should be way more user friendly now.
-
- * Re-wrote the whole documentation.
-
- * Fixed the ChangeLog :-)
-
-2007-02-08 Tobias Leupold <tobias.leupold@web.de>
-
- * Release: Version 0.3.3 again ;-)
-
- * bayes-php is now b8. See http://www.nasauber.de/blog/text.php?text=58 for details :-) Thanks to Tobias Lang (http://langt.net/) for this cool new name!
-
-2007-01-05 Tobias Leupold <tobias.leupold@web.de>
-
- * Release: Version 0.3.3
-
- * Renamed the internal BerkeleyDB handle from "$db" to the less general name "$bayes_php_db" due to an collision with phpwcms's (http://www.phpwcms.de/) global $db variable and potentially other php programs.
-
- * Commented out Laurent Goussard's SQLite storage class by default, as it's try { } catch { } calls break PHP 4
-
-2006-09-03 Tobias Leupold <tobias.leupold@web.de>
-
- * Release: Version 0.3.2
-
- * Laurent Goussard (loranger@free.fr) contributed an SQLite storage class(which needs PHP 5).
-
- * I finally added my eMail address to the sources ;-)
-
-2006-07-24 Tobias Leupold <tobias.leupold@web.de>
-
- * Release: Version 0.3.1
-
- * Fixed a problem in the unlearn() function: If a text was unlearned that wasn't learned before (accidentaly), it could happen that the count parameter for this text was smaller than 0, breaking the spamminess calulation
-
-2006-07-02 Tobias Leupold <tobias.leupold@web.de>
-
- * Release: Version 0.3
-
- * Improved the get_tokens() function; the filter should now be a lot more performant, especially with short texts
-
- * Added the "lastseen" parameter for each token to make the database maintainable (outdated tokens can be deleted)
-
- * Added a real database maintainance interface
-
-2006-06-12 Tobias Leupold <tobias.leupold@web.de>
-
- * Release: Version 0.2.1
-
- * Fixed a problem in get_tokens() (if it was called more than once, tokens were counted more often than they appeared in the text)
-
- * Slightly enhanced the default index.php interface: after learning a text as Ham or Spam, the rating before and after it is displayed to inform the user about it
-
-2006-05-21 Tobias Leupold <tobias.leupold@web.de>
-
- * Release: Version 0.2
-
- * Comments now in English (to pretend international success of bayes-php ;-)
-
- * Recommendations of Paul Graham's article "Better Bayesian Filtering" ( http://www.paulgraham.com/better.html ) are now considered: Tokens that only appear in Ham or Spam and not in the other category are rated with 0.9998 or 0.0002 if they were less than 10 times in Ham or Spam and with 0.9999 or 0.0001 if they appeared more that 10 times. This should allow the filter to differentiate spam texts more sharp from ham texts. Also, token "degeneration" as described in the article is performed for unknown tokens to estimate their spamminess.
-
- * The database connect is now swapped in a separate configuration file, so only this file has to be preserved if bayes-php is updated and only this file has to be changed to configure the script.
-
-2006-03-29 Tobias Leupold <tobias.leupold@web.de>
-
- * Release: Version 0.1.1
-
- * get_tokens() beachtet jetzt auch HTML-Tags und Wörter mit Akzenten und Apostrophen
-
- * Verschiedene Kleinigkeiten "sauber" gemacht :-)
-
-2006-03-05 Tobias Leupold <tobias.leupold@web.de>
-
- * Added 2007-06-08: Initial release (Version 0.1)
diff --git a/library/spam/doc/readme.htm b/library/spam/doc/readme.htm
deleted file mode 100644
index 727d5ae5f..000000000
--- a/library/spam/doc/readme.htm
+++ /dev/null
@@ -1,707 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.7: http://docutils.sourceforge.net/" />
-<title>b8: readme</title>
-<meta name="author" content="Tobias Leupold" />
-<meta name="date" content="2010-12-23" />
-<style type="text/css">
-
-/*
-:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 6253 2010-03-02 00:24:53Z milde $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
- border: 0 }
-
-table.borderless td, table.borderless th {
- /* Override padding for "table.docutils td" with "! important".
- The right padding separates the table cells. */
- padding: 0 0.5em 0 0 ! important }
-
-.first {
- /* Override more specific margin styles with "! important". */
- margin-top: 0 ! important }
-
-.last, .with-subtitle {
- margin-bottom: 0 ! important }
-
-.hidden {
- display: none }
-
-a.toc-backref {
- text-decoration: none ;
- color: black }
-
-blockquote.epigraph {
- margin: 2em 5em ; }
-
-dl.docutils dd {
- margin-bottom: 0.5em }
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
- font-weight: bold }
-*/
-
-div.abstract {
- margin: 2em 5em }
-
-div.abstract p.topic-title {
- font-weight: bold ;
- text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
- margin: 2em ;
- border: medium outset ;
- padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
- font-weight: bold ;
- font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title {
- color: red ;
- font-weight: bold ;
- font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
- compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
- margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
- margin-top: 0.5em }
-*/
-
-div.dedication {
- margin: 2em 5em ;
- text-align: center ;
- font-style: italic }
-
-div.dedication p.topic-title {
- font-weight: bold ;
- font-style: normal }
-
-div.figure {
- margin-left: 2em ;
- margin-right: 2em }
-
-div.footer, div.header {
- clear: both;
- font-size: smaller }
-
-div.line-block {
- display: block ;
- margin-top: 1em ;
- margin-bottom: 1em }
-
-div.line-block div.line-block {
- margin-top: 0 ;
- margin-bottom: 0 ;
- margin-left: 1.5em }
-
-div.sidebar {
- margin: 0 0 0.5em 1em ;
- border: medium outset ;
- padding: 1em ;
- background-color: #ffffee ;
- width: 40% ;
- float: right ;
- clear: right }
-
-div.sidebar p.rubric {
- font-family: sans-serif ;
- font-size: medium }
-
-div.system-messages {
- margin: 5em }
-
-div.system-messages h1 {
- color: red }
-
-div.system-message {
- border: medium outset ;
- padding: 1em }
-
-div.system-message p.system-message-title {
- color: red ;
- font-weight: bold }
-
-div.topic {
- margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
- margin-top: 0.4em }
-
-h1.title {
- text-align: center }
-
-h2.subtitle {
- text-align: center }
-
-hr.docutils {
- width: 75% }
-
-img.align-left, .figure.align-left, object.align-left {
- clear: left ;
- float: left ;
- margin-right: 1em }
-
-img.align-right, .figure.align-right, object.align-right {
- clear: right ;
- float: right ;
- margin-left: 1em }
-
-img.align-center, .figure.align-center, object.align-center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-.align-left {
- text-align: left }
-
-.align-center {
- clear: both ;
- text-align: center }
-
-.align-right {
- text-align: right }
-
-/* reset inner alignment in figures */
-div.align-right {
- text-align: left }
-
-/* div.align-center * { */
-/* text-align: left } */
-
-ol.simple, ul.simple {
- margin-bottom: 1em }
-
-ol.arabic {
- list-style: decimal }
-
-ol.loweralpha {
- list-style: lower-alpha }
-
-ol.upperalpha {
- list-style: upper-alpha }
-
-ol.lowerroman {
- list-style: lower-roman }
-
-ol.upperroman {
- list-style: upper-roman }
-
-p.attribution {
- text-align: right ;
- margin-left: 50% }
-
-p.caption {
- font-style: italic }
-
-p.credits {
- font-style: italic ;
- font-size: smaller }
-
-p.label {
- white-space: nowrap }
-
-p.rubric {
- font-weight: bold ;
- font-size: larger ;
- color: maroon ;
- text-align: center }
-
-p.sidebar-title {
- font-family: sans-serif ;
- font-weight: bold ;
- font-size: larger }
-
-p.sidebar-subtitle {
- font-family: sans-serif ;
- font-weight: bold }
-
-p.topic-title {
- font-weight: bold }
-
-pre.address {
- margin-bottom: 0 ;
- margin-top: 0 ;
- font: inherit }
-
-pre.literal-block, pre.doctest-block {
- margin-left: 2em ;
- margin-right: 2em }
-
-span.classifier {
- font-family: sans-serif ;
- font-style: oblique }
-
-span.classifier-delimiter {
- font-family: sans-serif ;
- font-weight: bold }
-
-span.interpreted {
- font-family: sans-serif }
-
-span.option {
- white-space: nowrap }
-
-span.pre {
- white-space: pre }
-
-span.problematic {
- color: red }
-
-span.section-subtitle {
- /* font-size relative to parent (h1..h6 element) */
- font-size: 80% }
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px }
-
-table.docinfo {
- margin: 2em 4em }
-
-table.docutils {
- margin-top: 0.5em ;
- margin-bottom: 0.5em }
-
-table.footnote {
- border-left: solid 1px black;
- margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
- padding-left: 0.5em ;
- padding-right: 0.5em ;
- vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
- font-weight: bold ;
- text-align: left ;
- white-space: nowrap ;
- padding-left: 0 }
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
- font-size: 100% }
-
-ul.auto-toc {
- list-style-type: none }
-
-</style>
-</head>
-<body>
-<div class="document" id="b8-readme">
-<h1 class="title">b8: readme</h1>
-<table class="docinfo" frame="void" rules="none">
-<col class="docinfo-name" />
-<col class="docinfo-content" />
-<tbody valign="top">
-<tr><th class="docinfo-name">Author:</th>
-<td>Tobias Leupold</td></tr>
-<tr class="field"><th class="docinfo-name">Homepage:</th><td class="field-body"><a class="reference external" href="http://nasauber.de/">http://nasauber.de/</a></td>
-</tr>
-<tr><th class="docinfo-name">Contact:</th>
-<td><a class="first last reference external" href="mailto:tobias.leupold&#64;web.de">tobias.leupold&#64;web.de</a></td></tr>
-<tr><th class="docinfo-name">Date:</th>
-<td>2010-12-23</td></tr>
-</tbody>
-</table>
-<div class="contents topic" id="table-of-contents">
-<p class="topic-title first">Table of Contents</p>
-<ul class="auto-toc simple">
-<li><a class="reference internal" href="#description-of-b8" id="id18">1&nbsp;&nbsp;&nbsp;Description of b8</a><ul class="auto-toc">
-<li><a class="reference internal" href="#what-is-b8" id="id19">1.1&nbsp;&nbsp;&nbsp;What is b8?</a></li>
-<li><a class="reference internal" href="#how-does-it-work" id="id20">1.2&nbsp;&nbsp;&nbsp;How does it work?</a></li>
-<li><a class="reference internal" href="#what-do-i-need-for-it" id="id21">1.3&nbsp;&nbsp;&nbsp;What do I need for it?</a></li>
-<li><a class="reference internal" href="#what-s-different" id="id22">1.4&nbsp;&nbsp;&nbsp;What's different?</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#update-from-prior-versions" id="id23">2&nbsp;&nbsp;&nbsp;Update from prior versions</a><ul class="auto-toc">
-<li><a class="reference internal" href="#update-from-bayes-php-version-0-2-1-or-earlier" id="id24">2.1&nbsp;&nbsp;&nbsp;Update from bayes-php version 0.2.1 or earlier</a></li>
-<li><a class="reference internal" href="#update-from-bayes-php-version-0-3-or-later" id="id25">2.2&nbsp;&nbsp;&nbsp;Update from bayes-php version 0.3 or later</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#installation" id="id26">3&nbsp;&nbsp;&nbsp;Installation</a></li>
-<li><a class="reference internal" href="#configuration" id="id27">4&nbsp;&nbsp;&nbsp;Configuration</a><ul class="auto-toc">
-<li><a class="reference internal" href="#b8-s-base-configuration" id="id28">4.1&nbsp;&nbsp;&nbsp;b8's base configuration</a></li>
-<li><a class="reference internal" href="#configuration-of-the-storage-backend" id="id29">4.2&nbsp;&nbsp;&nbsp;Configuration of the storage backend</a><ul class="auto-toc">
-<li><a class="reference internal" href="#settings-for-the-berkeley-db-dba-backend" id="id30">4.2.1&nbsp;&nbsp;&nbsp;Settings for the Berkeley DB (DBA) backend</a></li>
-<li><a class="reference internal" href="#settings-for-the-mysql-backend" id="id31">4.2.2&nbsp;&nbsp;&nbsp;Settings for the MySQL backend</a></li>
-</ul>
-</li>
-</ul>
-</li>
-<li><a class="reference internal" href="#using-b8" id="id32">5&nbsp;&nbsp;&nbsp;Using b8</a><ul class="auto-toc">
-<li><a class="reference internal" href="#setting-up-a-new-database" id="id33">5.1&nbsp;&nbsp;&nbsp;Setting up a new database</a><ul class="auto-toc">
-<li><a class="reference internal" href="#setting-up-a-new-berkeley-db" id="id34">5.1.1&nbsp;&nbsp;&nbsp;Setting up a new Berkeley DB</a></li>
-<li><a class="reference internal" href="#setting-up-a-new-mysql-table" id="id35">5.1.2&nbsp;&nbsp;&nbsp;Setting up a new MySQL table</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#using-b8-in-your-scripts" id="id36">5.2&nbsp;&nbsp;&nbsp;Using b8 in your scripts</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#tips-on-operation" id="id37">6&nbsp;&nbsp;&nbsp;Tips on operation</a></li>
-<li><a class="reference internal" href="#closing" id="id38">7&nbsp;&nbsp;&nbsp;Closing</a></li>
-<li><a class="reference internal" href="#references" id="id39">8&nbsp;&nbsp;&nbsp;References</a></li>
-<li><a class="reference internal" href="#appendix" id="id40">9&nbsp;&nbsp;&nbsp;Appendix</a><ul class="auto-toc">
-<li><a class="reference internal" href="#faq" id="id41">9.1&nbsp;&nbsp;&nbsp;FAQ</a><ul class="auto-toc">
-<li><a class="reference internal" href="#what-about-more-than-two-categories" id="id42">9.1.1&nbsp;&nbsp;&nbsp;What about more than two categories?</a></li>
-<li><a class="reference internal" href="#what-about-a-list-with-words-to-ignore" id="id43">9.1.2&nbsp;&nbsp;&nbsp;What about a list with words to ignore?</a></li>
-<li><a class="reference internal" href="#why-is-it-called-b8" id="id44">9.1.3&nbsp;&nbsp;&nbsp;Why is it called &quot;b8&quot;?</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#about-the-database" id="id45">9.2&nbsp;&nbsp;&nbsp;About the database</a><ul class="auto-toc">
-<li><a class="reference internal" href="#the-database-layout" id="id46">9.2.1&nbsp;&nbsp;&nbsp;The database layout</a></li>
-<li><a class="reference internal" href="#the-lastseen-parameter" id="id47">9.2.2&nbsp;&nbsp;&nbsp;The &quot;lastseen&quot; parameter</a></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<div class="section" id="description-of-b8">
-<h1><a class="toc-backref" href="#id18">1&nbsp;&nbsp;&nbsp;Description of b8</a></h1>
-<div class="section" id="what-is-b8">
-<h2><a class="toc-backref" href="#id19">1.1&nbsp;&nbsp;&nbsp;What is b8?</a></h2>
-<p>b8 is a spam filter implemented in <a class="reference external" href="http://www.php.net/">PHP</a>. It is intended to keep your weblog or guestbook spam-free. The filter can be used anywhere in your PHP code and tells you whether a text is spam or not, using statistical text analysis. See <a class="reference internal" href="#how-does-it-work">How does it work?</a> for details about this. To be able to do this, b8 first has to learn some spam and some ham example texts to decide what's good and what's not. If it makes mistakes classifying unknown texts, they can be corrected and b8 learns from the corrections, getting better with each learned text.</p>
-<p>At the moment of this writing, b8 has classified 14411 guestbook entries and weblog comments on my homepage since december 2006. 131 were ham. 39 spam texts (0.27 %) have been rated as ham (false negatives), with not even one false positive (ham message classified as spam). This results in a sensitivity of 99.73 % (the probability that a spam text will actually be rated as spam) and a specifity of 100 % (the probability that a ham text will actually be rated as ham) for me. I hope, you'll get the same good results :-)</p>
-<p>Basically, b8 is a statistical (&quot;Bayesian&quot;<a class="footnote-reference" href="#id2" id="id1">[1]</a>) spam filter like <a class="reference external" href="http://bogofilter.sourceforge.net/">Bogofilter</a> or <a class="reference external" href="http://spambayes.sourceforge.net/">SpamBayes</a>, but it is not intended to classify e-mails. When I started to write b8, I didn't find a good PHP spam filter (or any spam filter that wasn't just some example code how one <em>could</em> implement a Bayesian spam filter in PHP) that was intended to filter weblog or guestbook entries. That's why I had to write my own ;-) <br />
-Caused by it's purpose, the way b8 works is slightly different from most of the Bayesian email spam filters out there. See <a class="reference internal" href="#what-s-different">What's different?</a> if you're interested in the details.</p>
-<table class="docutils footnote" frame="void" id="id2" rules="none">
-<colgroup><col class="label" /><col /></colgroup>
-<tbody valign="top">
-<tr><td class="label"><a class="fn-backref" href="#id1">[1]</a></td><td>A mathematician told me that the math in b8 actually does not use Bayes' theorem but some derived algorithms that are just related to it. So … let's simply believe that and stop claiming b8 was a <em>Bayesian</em> spam filter ;-)</td></tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="how-does-it-work">
-<h2><a class="toc-backref" href="#id20">1.2&nbsp;&nbsp;&nbsp;How does it work?</a></h2>
-<p>b8 basically uses the math and technique described in Paul Graham's article &quot;A Plan For Spam&quot; <a class="footnote-reference" href="#planforspam" id="id3">[2]</a> to distinguish ham and spam. The improvements proposed in Graham's article &quot;Better Bayesian Filtering&quot; <a class="footnote-reference" href="#betterbayesian" id="id4">[3]</a> and Gary Robinson's article &quot;Spam Detection&quot; <a class="footnote-reference" href="#spamdetection" id="id5">[4]</a> have also been considered. See also the article &quot;A Statistical Approach to the Spam Problem&quot; <a class="footnote-reference" href="#statisticalapproach" id="id6">[5]</a>.</p>
-<p>b8 cuts the text to classify to pieces, extracting stuff like e-mail addresses, links and HTML tags. For each such token, it calculates a single probability for a text containing it being spam, based on what the filter has learned so far. When the token was not seen before, b8 tries to find similar ones using the &quot;degeneration&quot; described in <a class="footnote-reference" href="#betterbayesian" id="id7">[3]</a> and uses the most relevant value found. If really nothing is found, b8 assumes a default rating for this token for the further calculations. <br />
-Then, b8 takes the most relevant values (which have a rating far from 0.5, which would mean we don't know what it is) and calculates the probability that the whole text is spam by the inverse chi-square function described in <a class="footnote-reference" href="#spamdetection" id="id8">[4]</a>.
-There are some parameters that can be set which influence the filter's behaviour (see below).</p>
-<p>In short words: you give b8 a text and it returns a value between 0 and 1, saying it's ham when it's near 0 and saying it's spam when it's near 1.</p>
-</div>
-<div class="section" id="what-do-i-need-for-it">
-<h2><a class="toc-backref" href="#id21">1.3&nbsp;&nbsp;&nbsp;What do I need for it?</a></h2>
-<p>Not much! You just need PHP 5 on the server where b8 will be used (b8 version 0.5 finally dropped PHP 4 compatibility – thankfully ;-) and a proper storage possibility for the wordlists. I strongly recommend using <a class="reference external" href="http://www.oracle.com/database/berkeley-db/index.html">Berkeley DB</a>. See below how you can check if you can use it and why you should use it. If the server's PHP wasn't compiled with Berkeley DB support, a <a class="reference external" href="http://mysql.com/">MySQL</a> table can be used alternatively.</p>
-</div>
-<div class="section" id="what-s-different">
-<h2><a class="toc-backref" href="#id22">1.4&nbsp;&nbsp;&nbsp;What's different?</a></h2>
-<p>b8 is designed to classify weblog or guestbook entries, not e-mails. For this reason, it uses a slightly different technique than most of the other statistical spam filters out there use.</p>
-<p>My experience was that spam entries on my weblog or guestbook were often quite short, sometimes just something like &quot;123abc&quot; as text and a link to a suspect homepage. Some spam bots don't even made a difference between e. g. the &quot;name&quot; and &quot;text&quot; fields and posted their text as email address, for example. Considering this, b8 just takes one string to classify, making no difference between &quot;headers&quot; and &quot;text&quot;. <br />
-The other thing is that most statistical spam filters count one token one time, no matter how often it appears in the text (as Graham describes it in <a class="footnote-reference" href="#planforspam" id="id9">[2]</a>). b8 does count how often a token was seen and learns or considers this. Additionally, the number of learned ham and spam texts are saved and used as the calculation base for the single probabilities. Why this? Because a text containing one link (no matter where it points to, just indicated by a &quot;http://&quot; or a &quot;www.&quot;) might not be spam, but a text containing 20 links might be.</p>
-<p>This means that b8 might be good for classifying weblog or guestbook entries (I really think it is ;-) – but very likely, it will work quite poor when being used for something else (like classifying e-mails). But as said above, for this task, there are a lot of very good filters out there to choose from.</p>
-</div>
-</div>
-<div class="section" id="update-from-prior-versions">
-<h1><a class="toc-backref" href="#id23">2&nbsp;&nbsp;&nbsp;Update from prior versions</a></h1>
-<p>If this is a new b8 installation, read on at the <a class="reference internal" href="#installation">Installation</a> section!</p>
-<div class="section" id="update-from-bayes-php-version-0-2-1-or-earlier">
-<h2><a class="toc-backref" href="#id24">2.1&nbsp;&nbsp;&nbsp;Update from bayes-php version 0.2.1 or earlier</a></h2>
-<p>Please first follow the database update instructions of the bayes-php-0.3 release if you update from a version prior to bayes-php-0.3 and then read the following paragraph about updating from a version &lt;0.3.3.</p>
-</div>
-<div class="section" id="update-from-bayes-php-version-0-3-or-later">
-<h2><a class="toc-backref" href="#id25">2.2&nbsp;&nbsp;&nbsp;Update from bayes-php version 0.3 or later</a></h2>
-<dl class="docutils">
-<dt><strong>You use Berkeley DB?</strong></dt>
-<dd>Everything's fine, you can simply continue using your database.</dd>
-<dt><strong>You use MySQL?</strong></dt>
-<dd>The <tt class="docutils literal">CREATE</tt> statement of b8's wordlist has changed. The best is probably to create a dump via your favorite administration tool or script, create the new table and re-insert all data. The layout is still the same: there's one &quot;token&quot; column and one &quot;data&quot; column. Having done that, you can keep using your data.</dd>
-<dt><strong>You use SQLite?</strong></dt>
-<dd>Sorry, at the moment, there's no SQLite backend for b8. But we're working on it :-)</dd>
-</dl>
-<p>The configuration model of b8 has changed. Please read through the <a class="reference internal" href="#configuration">Configuration</a> section and update your configuration accordingly.</p>
-<p>b8's lexer has been partially re-written. It should now be able to handle all kind of non-latin-1 input, like cyrillic, chinese or japanese texts. Caused by this fact, much more tokens will be recognized when classifying such texts. Therefore, you could get different results in b8's ratings, even if the same database is used and although the math is still the same.</p>
-<p>b8 0.5 introduced two constants that can be used in the <tt class="docutils literal">learn()</tt> and <tt class="docutils literal">unlearn()</tt> functions: <tt class="docutils literal"><span class="pre">b8::HAM</span></tt> and <tt class="docutils literal"><span class="pre">b8::SPAM</span></tt>. The literal values &quot;ham&quot; and &quot;spam&quot; can still be used anyway.</p>
-</div>
-</div>
-<div class="section" id="installation">
-<h1><a class="toc-backref" href="#id26">3&nbsp;&nbsp;&nbsp;Installation</a></h1>
-<p>Installing b8 on your server is quite easy. You just have to provide the needed files. To do this, you could just upload the whole <tt class="docutils literal">b8</tt> subdirectory to the base directory of your homepage. It contains the filter itself and all needed backend classes. The other directories (<tt class="docutils literal">doc</tt>, <tt class="docutils literal">example</tt> and <tt class="docutils literal">install</tt>) are not used by b8.</p>
-<p>That's it ;-)</p>
-</div>
-<div class="section" id="configuration">
-<h1><a class="toc-backref" href="#id27">4&nbsp;&nbsp;&nbsp;Configuration</a></h1>
-<p>The configuration is passed as arrays when instantiating a new b8 object. Two arrays can be passed to b8, one containing b8's base configuration and some settings for the lexer (which should be common for all lexer classes, in case some other lexer than the default one will be written one day) and one for the storage backend. <br />
-You can have a look at <tt class="docutils literal">example/index.php</tt> to see how this can be done. <a class="reference internal" href="#using-b8-in-your-scripts">Using b8 in your scripts</a> also shows example code showing how b8 can be included in a PHP script.</p>
-<p>Not all values have to be set. When some values are missing, the default ones will be used. If you do use the default settings, you don't have to pass them to b8.</p>
-<div class="section" id="b8-s-base-configuration">
-<h2><a class="toc-backref" href="#id28">4.1&nbsp;&nbsp;&nbsp;b8's base configuration</a></h2>
-<p>All these values can be set in the &quot;config_b8&quot; array (the first parameter) passed to b8. The name of the array doesn't matter (of course), it just has to be the first argument.</p>
-<p>These are some basic settings telling b8 which backend classes to use:</p>
-<blockquote>
-<dl class="docutils">
-<dt><strong>storage</strong></dt>
-<dd><p class="first">This defines which storage backend will be used to save b8's wordlist. Currently, two backends are available: <a class="reference external" href="http://www.oracle.com/database/berkeley-db/index.html">Berkeley DB</a> (<tt class="docutils literal">dba</tt>) and <a class="reference external" href="http://mysql.com/">MySQL</a> (<tt class="docutils literal">mysql</tt>). At the moment, b8 does not support <a class="reference external" href="http://sqlite.org/">SQLite</a> (as the previous version did), but it will be (hopefully) re-added in one of the next releases. The default is <tt class="docutils literal">dba</tt> (string).</p>
-<dl class="docutils">
-<dt><em>Berkeley DB</em></dt>
-<dd>This is the preferred storage backend. It was the original backend for the filter and remains the most performant. b8's storage model is optimized for this database, as it is really fast and fits perfectly to what the filter needs to do the job. All content is saved in a single file, you don't need special user rights or a database server. <br />
-If you don't know whether your server's PHP can use a Berkeley DB, simply run the script <tt class="docutils literal">install/setup_berkeleydb.php</tt>. If it shows a Berkeley DB handler, please use this backend.</dd>
-<dt><em>MySQL</em></dt>
-<dd>As some webspace hosters don't allow using a Berkeley DB (but please be sure to check if you can use it!), but most do provide a MySQL server, using a MySQL table for the wordlist is provided as an alternative storage method. As said above, b8 was always intended to use a Berkeley DB. It doesn't use or need SQL to query the database. So, very likely, this will work less performant, produce a lot of unnecessary overhead and waste computing power. But it will do fine anyway!</dd>
-</dl>
-<p class="last">See <a class="reference internal" href="#configuration-of-the-storage-backend">Configuration of the storage backend</a> for the settings of the chosen backend.</p>
-</dd>
-<dt><strong>degenerator</strong></dt>
-<dd>The degenerator class to be used. See <a class="reference internal" href="#how-does-it-work">How does it work?</a> and <a class="footnote-reference" href="#betterbayesian" id="id12">[3]</a> if you're interested in what &quot;degeneration&quot; is. Defaults to <tt class="docutils literal">default</tt> (string). At the moment, only one degenerator exists, so you probably don't want to change this unless you have written your own degenerator.</dd>
-<dt><strong>lexer</strong></dt>
-<dd><p class="first">The lexer class to be used. Defaults to <tt class="docutils literal">default</tt> (string). At the moment, only one lexer exists, so you probably don't want to change this unless you have written your own lexer.</p>
-<p>The behaviour of the lexer can be additionally configured with the following variables:</p>
-<blockquote class="last">
-<dl class="docutils">
-<dt><strong>min_size</strong></dt>
-<dd>The minimal length for a token to be considered when calculating the rating of a text. Defaults to <tt class="docutils literal">3</tt> (integer).</dd>
-<dt><strong>max_size</strong></dt>
-<dd>The maximal length for a token to be considered when calculating the rating of a text. Defaults to <tt class="docutils literal">30</tt> (integer).</dd>
-<dt><strong>allow_numbers</strong></dt>
-<dd>Should pure numbers also be considered? Defaults to <tt class="docutils literal">FALSE</tt> (boolean).</dd>
-</dl>
-</blockquote>
-</dd>
-</dl>
-</blockquote>
-<p>The following settings influence the mathematical internals of b8. If you want to experiment, feel free to play around with them; but be warned: wrong settings of these values will result in poor performance or could even &quot;short-circuit&quot; the filter. <br />
-Leave these values as they are unless you know what you are doing!</p>
-<p>The &quot;Statistical discussion about b8&quot; <a class="footnote-reference" href="#b8statistic" id="id13">[6]</a> shows why the default values are the default ones.</p>
-<blockquote>
-<dl class="docutils">
-<dt><strong>use_relevant</strong></dt>
-<dd>This tells b8 how many tokens should be used when calculating the spamminess of a text. The default setting is <tt class="docutils literal">15</tt> (integer). This seems to be a quite reasonable value. When using to many tokens, the filter will fail on texts filled with useless stuff or with passages from a newspaper, etc. not being very spammish. <br />
-The tokens counted multiple times (see above) are added in addition to this value. They don't replace other ratings.</dd>
-<dt><strong>min_dev</strong></dt>
-<dd>This defines a minimum deviation from 0.5 that a token's rating must have to be considered when calculating the spamminess. Tokens with a rating closer to 0.5 than this value will simply be skipped. <br />
-If you don't want to use this feature, set this to <tt class="docutils literal">0</tt>. Defaults to <tt class="docutils literal">0.2</tt> (float). Read <a class="footnote-reference" href="#b8statistic" id="id14">[6]</a> before increasing this.</dd>
-<dt><strong>rob_x</strong></dt>
-<dd>This is Gary Robinson's <em>x</em> constant (cf. <a class="footnote-reference" href="#spamdetection" id="id15">[4]</a>). A completely unknown token will be rated with the value of <tt class="docutils literal">rob_x</tt>. The default <tt class="docutils literal">0.5</tt> (float) seems to be quite reasonable, as we can't say if a token that also can't be rated by degeneration is good or bad. <br />
-If you receive much more spam than ham or vice versa, you could change this setting accordingly.</dd>
-<dt><strong>rob_s</strong></dt>
-<dd>This is Gary Robinson's <em>s</em> constant. This is essentially the probability that the <em>rob_x</em> value is correct for a completely unknown token. It will also shift the probability of rarely seen tokens towards this value. The default is <tt class="docutils literal">0.3</tt> (float) <br />
-See <a class="footnote-reference" href="#spamdetection" id="id16">[4]</a> for a closer description of the <em>s</em> constant and read <a class="footnote-reference" href="#b8statistic" id="id17">[6]</a> for specific information about this constant in b8's algorithms.</dd>
-</dl>
-</blockquote>
-</div>
-<div class="section" id="configuration-of-the-storage-backend">
-<h2><a class="toc-backref" href="#id29">4.2&nbsp;&nbsp;&nbsp;Configuration of the storage backend</a></h2>
-<p>All the following values can be set in the &quot;config_database&quot; array (the second parameter) passed to b8. The name of the array doesn't matter (of course), it just has to be the second argument.</p>
-<div class="section" id="settings-for-the-berkeley-db-dba-backend">
-<h3><a class="toc-backref" href="#id30">4.2.1&nbsp;&nbsp;&nbsp;Settings for the Berkeley DB (DBA) backend</a></h3>
-<dl class="docutils">
-<dt><strong>database</strong></dt>
-<dd>The filename of the database file, relative to the location of <tt class="docutils literal">b8.php</tt>. Defaults to <tt class="docutils literal">wordlist.db</tt> (string).</dd>
-<dt><strong>handler</strong></dt>
-<dd>The DBA handler to use (cf. <a class="reference external" href="http://php.net/manual/en/dba.requirements.php">the PHP documentation</a> and <a class="reference internal" href="#setting-up-a-new-berkeley-db">Setting up a new Berkeley DB</a>). Defaults to <tt class="docutils literal">db4</tt> (string).</dd>
-</dl>
-</div>
-<div class="section" id="settings-for-the-mysql-backend">
-<h3><a class="toc-backref" href="#id31">4.2.2&nbsp;&nbsp;&nbsp;Settings for the MySQL backend</a></h3>
-<dl class="docutils">
-<dt><strong>database</strong></dt>
-<dd>The database containing b8's wordlist table. Defaults to <tt class="docutils literal">b8_wordlist</tt> (string).</dd>
-<dt><strong>table_name</strong></dt>
-<dd>The table containing b8's wordlist. Defaults to <tt class="docutils literal">b8_wordlist</tt> (string).</dd>
-<dt><strong>host</strong></dt>
-<dd>The host of the MySQL server. Defaults to <tt class="docutils literal">localhost</tt> (string).</dd>
-<dt><strong>user</strong></dt>
-<dd>The user name used to open the database connection. Defaults to <tt class="docutils literal">FALSE</tt> (boolean).</dd>
-<dt><strong>pass</strong></dt>
-<dd>The password required to open the database connection. Defaults to <tt class="docutils literal">FALSE</tt> (boolean).</dd>
-<dt><strong>connection</strong></dt>
-<dd>An existing MySQL link-resource that can be used by b8. Defaults to <tt class="docutils literal">NULL</tt> (NULL).</dd>
-</dl>
-</div>
-</div>
-</div>
-<div class="section" id="using-b8">
-<h1><a class="toc-backref" href="#id32">5&nbsp;&nbsp;&nbsp;Using b8</a></h1>
-<p>Now, that everything is configured, you can start to use b8. A sample script that shows what can be done with the filter exists in <tt class="docutils literal">example/index.php</tt>. The best thing for testing how all this works is to use this script before using b8 in your own scripts.</p>
-<p>Before you can start, you have to setup a database so that b8 can store a wordlist.</p>
-<div class="section" id="setting-up-a-new-database">
-<h2><a class="toc-backref" href="#id33">5.1&nbsp;&nbsp;&nbsp;Setting up a new database</a></h2>
-<div class="section" id="setting-up-a-new-berkeley-db">
-<h3><a class="toc-backref" href="#id34">5.1.1&nbsp;&nbsp;&nbsp;Setting up a new Berkeley DB</a></h3>
-<p>I wrote a script to setup a new Berkeley DB for b8. It is located in <tt class="docutils literal">install/setup_berkeleydb.php</tt>. Just run this script on your server and be sure that the directory containing it has the proper access rights set so that the server's HTTP server user or PHP user can create a new file in it (probably <tt class="docutils literal">0777</tt>). The script is quite self-explaining, just run it.</p>
-<p>Of course, you can also create a Berkeley DB by hand. In this case, you just have to insert three keys:</p>
-<pre class="literal-block">
-bayes*dbversion =&gt; 2
-bayes*texts.ham =&gt; 0
-bayes*texts.spam =&gt; 0
-</pre>
-<p>Be sure to set the right DBA handler in the storage backend configuration if it's not <tt class="docutils literal">db4</tt>.</p>
-</div>
-<div class="section" id="setting-up-a-new-mysql-table">
-<h3><a class="toc-backref" href="#id35">5.1.2&nbsp;&nbsp;&nbsp;Setting up a new MySQL table</a></h3>
-<p>The SQL file <tt class="docutils literal">install/setup_mysql.sql</tt> contains both the create statement for the wordlist table of b8 and the <tt class="docutils literal">INSERT</tt> statements for adding the necessary internal variables.</p>
-<p>Simply change the table name according to your needs (or leave it as it is ;-) and run the SQL to setup a b8 wordlist MySQL table.</p>
-</div>
-</div>
-<div class="section" id="using-b8-in-your-scripts">
-<h2><a class="toc-backref" href="#id36">5.2&nbsp;&nbsp;&nbsp;Using b8 in your scripts</a></h2>
-<p>Just have a look at the example script located in <tt class="docutils literal">example/index.php</tt> to see how you can include b8 in your scripts. Essentially, this strips down to:</p>
-<pre class="literal-block">
-# Include the b8 code
-require &quot;{$_SERVER['DOCUMENT_ROOT']}/b8/b8.php&quot;;
-
-# Do some configuration
-
-$config_b8 = array(
- 'some_key' =&gt; 'some_value',
- 'foo' =&gt; 'bar'
-);
-
-$config_database = array(
- 'some_key' =&gt; 'some_value',
- 'foo' =&gt; 'bar'
-);
-
-# Create a new b8 instance
-$b8 = new b8($config_b8, $config_database);
-</pre>
-<p>b8 provides three functions in an object oriented way (called e. g. via <tt class="docutils literal"><span class="pre">$b8-&gt;classify($text)</span></tt>):</p>
-<dl class="docutils">
-<dt><strong>learn($text, $category)</strong></dt>
-<dd>This saves the reference text <tt class="docutils literal">$text</tt> (string) in the category <tt class="docutils literal">$category</tt> (b8 constant). <br />
-b8 0.5 introduced two constants that can be used as <tt class="docutils literal">$category</tt>: <tt class="docutils literal"><span class="pre">b8::HAM</span></tt> and <tt class="docutils literal"><span class="pre">b8::SPAM</span></tt>. To be downward compatible with older versions of b8, the literal values &quot;ham&quot; and &quot;spam&quot; (case-sensitive strings) can still be used here.</dd>
-<dt><strong>unlearn($text, $category)</strong></dt>
-<dd>This function just exists to delete a text from a category in which is has been stored accidentally before. It deletes the reference text <tt class="docutils literal">$text</tt> (string) from the category <tt class="docutils literal">$category</tt> (either the constants <tt class="docutils literal"><span class="pre">b8::HAM</span></tt> or <tt class="docutils literal"><span class="pre">b8::SPAM</span></tt> or the literal case-sensitive strings &quot;ham&quot; or &quot;spam&quot; – cf. above). <br />
-<strong>Don't delete a spam text from ham after saving it in spam or vice versa, as long you don't have stored it accidentally in the wrong category before!</strong> This will not improve performance, quite the opposite: it will actually break the filter after a time, as the counter for saved ham or spam texts will reach 0, although you have ham or spam tokens stored: the filter will try to remove texts from the ham or spam data which have never been stored there, decrease the counter for tokens which are found just skip the non-existing words.</dd>
-<dt><strong>classify($text)</strong></dt>
-<dd>This function takes the text <tt class="docutils literal">$text</tt> (string), calculates it's probability for being spam it and returns a value between 0 and 1 (float). <br />
-A value close to 0 says the text is more likely ham and a value close to 1 says the text is more likely spam. What to do with this value is <em>your</em> business ;-) See also <a class="reference internal" href="#tips-on-operation">Tips on operation</a> below.</dd>
-</dl>
-</div>
-</div>
-<div class="section" id="tips-on-operation">
-<h1><a class="toc-backref" href="#id37">6&nbsp;&nbsp;&nbsp;Tips on operation</a></h1>
-<p>Before b8 can decide whether a text is spam or ham, you have to tell it what you consider as spam or ham. At least one learned spam or one learned ham text is needed to calculate anything. To get good ratings, you need both learned ham and learned spam texts, the more the better. <br />
-What's considered as &quot;ham&quot; or &quot;spam&quot; can be very different, depending on the operation site. On my homepage, practically each and every text posted in English or using cyrillic letters is spam. On an English or Russian homepage, this will be not the case. So I think it's not really meaningful to provide some &quot;spam data&quot; to start. Just train b8 with &quot;your&quot; spam and ham.</p>
-<p>For the practical use, I advise to give the filter all data availible. E. g. name, email address, homepage, IP address und of course the text itself should be stored in a variable (e. g. separated with an <tt class="docutils literal">\n</tt> or just a space or tab after each block) and then be classified. The learning should also be done with all data availible. <br />
-Saving the IP address is probably only meaningful for spam entries, because spammers often use the same IP address multiple times. In principle, you can leave out the IP of ham entries.</p>
-<p>You can use b8 e. g. in a guestbook script and let it classify the text before saving it. Everyone has to decide which rating is necessary to classify a text as &quot;spam&quot;, but a rating of &gt;= 0.8 seems to be reasonable for me. If one expects the spam to be in another language that the ham entries or the spams are very short normally, one could also think about a limit of 0.7. <br />
-The email filters out there mostly use &gt; 0.9 or even &gt; 0.99; but keep in mind that they have way more data to analyze in most of the cases. A guestbook entry may be quite short, especially when it's spam.</p>
-<p>In my opinion, a autolearn function is very handy. I save spam messages with a rating higher than 0.7 but less than 0.9 automatically as spam. I don't do this with ham messages in an automated way to prevent the filter from saving a false negative as ham and then classifying and learning all the spam as ham when I'm on holidays ;-)</p>
-</div>
-<div class="section" id="closing">
-<h1><a class="toc-backref" href="#id38">7&nbsp;&nbsp;&nbsp;Closing</a></h1>
-<p>So … that's it. Thanks for using b8! If you find a bug or have an idea how to make b8 better, let me know. I'm also always looking forward to get e-mails from people using b8 on their homepages :-)</p>
-</div>
-<div class="section" id="references">
-<h1><a class="toc-backref" href="#id39">8&nbsp;&nbsp;&nbsp;References</a></h1>
-<table class="docutils footnote" frame="void" id="planforspam" rules="none">
-<colgroup><col class="label" /><col /></colgroup>
-<tbody valign="top">
-<tr><td class="label">[2]</td><td><em>(<a class="fn-backref" href="#id3">1</a>, <a class="fn-backref" href="#id9">2</a>)</em> Paul Graham, <em>A Plan For Spam</em> (<a class="reference external" href="http://paulgraham.com/spam.html">http://paulgraham.com/spam.html</a>)</td></tr>
-</tbody>
-</table>
-<table class="docutils footnote" frame="void" id="betterbayesian" rules="none">
-<colgroup><col class="label" /><col /></colgroup>
-<tbody valign="top">
-<tr><td class="label">[3]</td><td><em>(<a class="fn-backref" href="#id4">1</a>, <a class="fn-backref" href="#id7">2</a>, <a class="fn-backref" href="#id12">3</a>)</em> Paul Graham, <em>Better Bayesian Filtering</em> (<a class="reference external" href="http://paulgraham.com/better.html">http://paulgraham.com/better.html</a>)</td></tr>
-</tbody>
-</table>
-<table class="docutils footnote" frame="void" id="spamdetection" rules="none">
-<colgroup><col class="label" /><col /></colgroup>
-<tbody valign="top">
-<tr><td class="label">[4]</td><td><em>(<a class="fn-backref" href="#id5">1</a>, <a class="fn-backref" href="#id8">2</a>, <a class="fn-backref" href="#id15">3</a>, <a class="fn-backref" href="#id16">4</a>)</em> Gary Robinson, <em>Spam Detection</em> (<a class="reference external" href="http://radio.weblogs.com/0101454/stories/2002/09/16/spamDetection.html">http://radio.weblogs.com/0101454/stories/2002/09/16/spamDetection.html</a>)</td></tr>
-</tbody>
-</table>
-<table class="docutils footnote" frame="void" id="statisticalapproach" rules="none">
-<colgroup><col class="label" /><col /></colgroup>
-<tbody valign="top">
-<tr><td class="label"><a class="fn-backref" href="#id6">[5]</a></td><td><em>A Statistical Approach to the Spam Problem</em> (<a class="reference external" href="http://linuxjournal.com/article/6467">http://linuxjournal.com/article/6467</a>)</td></tr>
-</tbody>
-</table>
-<table class="docutils footnote" frame="void" id="b8statistic" rules="none">
-<colgroup><col class="label" /><col /></colgroup>
-<tbody valign="top">
-<tr><td class="label">[6]</td><td><em>(<a class="fn-backref" href="#id13">1</a>, <a class="fn-backref" href="#id14">2</a>, <a class="fn-backref" href="#id17">3</a>)</em> Tobias Leupold, <em>Statistical discussion about b8</em> (<a class="reference external" href="http://nasauber.de/opensource/b8/discussion/">http://nasauber.de/opensource/b8/discussion/</a>)</td></tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="appendix">
-<h1><a class="toc-backref" href="#id40">9&nbsp;&nbsp;&nbsp;Appendix</a></h1>
-<div class="section" id="faq">
-<h2><a class="toc-backref" href="#id41">9.1&nbsp;&nbsp;&nbsp;FAQ</a></h2>
-<div class="section" id="what-about-more-than-two-categories">
-<h3><a class="toc-backref" href="#id42">9.1.1&nbsp;&nbsp;&nbsp;What about more than two categories?</a></h3>
-<p>I wrote b8 with the <a class="reference external" href="http://en.wikipedia.org/wiki/KISS_principle">KISS principle</a> in mind. For the &quot;end-user&quot;, we have a class with almost no setup to do that can do three things: classify a text, learn a text and un-learn a text. Normally, there's no need to un-learn a text, so essentially, there are only two functions we need. <br />
-This simplicity is only possible because b8 only knows two categories (normally &quot;Ham&quot; and &quot;Spam&quot; or some other category pair) and tells you, in one float number between 0 and 1, if a given texts rather fits in the first or the second category. If we would support multiple categories, more work would have to be done and things would become more complicated. One would have to setup the categories, have another database layout (perhaps making it mandatory to have SQL) and one float number would not be sufficient to describe b8's output, so more code would be needed – even outside of b8.</p>
-<p>All the code, the database layout and particularly the math is intended to do exactly one thing: distinguish between two categories. I think it would be a lot of work to change b8 so that it would support more than two categories. Probably, this is possible to do, but don't ask me in which way we would have to change the math to get multiple-category support – I'm a dentist, not a mathematician ;-) <br />
-Apart from this I do believe that most people using b8 don't want or need multiple categories. They just want to know if a text is spam or not, don't they? I do, at least ;-)</p>
-<p>But let's think about the multiple-category thing. How would we calculate a rating for more than two categories? If we had a third one, let's call it &quot;<a class="reference external" href="http://en.wikipedia.org/wiki/Treet">Treet</a>&quot;, how would we calculate a rating? We could calculate three different ratings. One for &quot;Ham&quot;, one for &quot;Spam&quot; and one for &quot;Treet&quot; and choose the highest one to tell the user what category fits best for the text. This could be done by using a small wrapper script using three instances of b8 as-is and three different databases, each containing texts being &quot;Ham&quot;, &quot;Spam&quot;, &quot;Treet&quot; and the respective counterparts. <br />
-But here's the problem: if we have &quot;Ham&quot; and &quot;Spam&quot;, &quot;Spam&quot; is the counterpart of &quot;Ham&quot;. But what's the counterpart of &quot;Spam&quot; if we have more than one additional category? Where do the &quot;Non-Ham&quot;, &quot;Non-Spam&quot; and &quot;Non-Treet&quot; texts come from?</p>
-<p>Another approach, a direct calculation of more than two probabilities (the &quot;Ham&quot; probability is simply 1 minus the &quot;Spam&quot; probability, so we actually get two probabilities with the return value of b8) out of one database would require big changes in b8's structure and math.</p>
-<p>There's a project called <a class="reference external" href="http://xhtml.net/scripts/PHPNaiveBayesianFilter">PHPNaiveBayesianFilter</a> which supports multiple categories by default. The author calls his software &quot;Version 1.0&quot;, but I think this is the very first release, not a stable or mature one. The most recent change of that release dates back to 2003 according to the &quot;changed&quot; date of the files inside the zip archive, so probably, this project is dead or has never been alive and under active development at all. <br />
-Actually, I played around with that code but the results weren't really good, so I decided to write my own spam filter from scratch back in early 2006 ;-)</p>
-<p>All in all, there seems to be no easy way to implement multiple (meaning more than two) categories using b8's current code base and probably, b8 will never support more than two categories. Perhaps, a fork or a complete re-write would be better than implementing such a feature. Anyway, I don't close my mind to multiple categories in b8. Feel free to tell me how multiple categories could be implementented in b8 or how a multiple-category version using the same code base (sharing a common abstract class?) could be written.</p>
-</div>
-<div class="section" id="what-about-a-list-with-words-to-ignore">
-<h3><a class="toc-backref" href="#id43">9.1.2&nbsp;&nbsp;&nbsp;What about a list with words to ignore?</a></h3>
-<p>Some people suggested to introduce a list with words that b8 will simply ignore. Like &quot;and&quot;, &quot;or&quot;, &quot;the&quot;, and so on. I don't think this is very meaningful.</p>
-<p>First, it would just work for the particular language that has been stored in the list. Speaking of my homepage, most of my spam is English, almost all my ham is German. So I would have to maintain a list with the probably less interesting words for at least two languages. Additionally, I get spam in Chinese, Japanese and Cyrillic writing or something else I can't read as well. What word should be ignored in those texts? <br />
-Second, why should we ever exclude words? Who tells us those words are <em>actually</em> meaningless? If a word appears both in ham and spam, it's rating will be near 0.5 and so, it won't be used for the final calculation if a appropriate minimum deviation was set. So b8 will exclude it anyway without any blacklist. And think of this: if we excluded a word of which we only <em>think</em> it doesn't mean anything but it actually does appear more often in ham or spam, the results will get even worse.</p>
-<p>So why should we care about things we do not have to care about? ;-)</p>
-</div>
-<div class="section" id="why-is-it-called-b8">
-<h3><a class="toc-backref" href="#id44">9.1.3&nbsp;&nbsp;&nbsp;Why is it called &quot;b8&quot;?</a></h3>
-<p>The initial name for the filter was (damn creative!) &quot;bayes-php&quot;. There were two main reasons for searching another name: 1. &quot;bayes-php&quot; sucks. 2. the <a class="reference external" href="http://php.net/license/3_01.txt">PHP License</a> says the PHP guys do not like when the name of a script written in PHP contains the word &quot;PHP&quot;. Read the <a class="reference external" href="http://www.php.net/license/index.php#faq-lic">License FAQ</a> for a reasonable argumentation about this.</p>
-<p>Luckily, <a class="reference external" href="http://langt.net/">Tobias Lang</a> proposed the new name &quot;b8&quot;. And these are the reasons why I chose this name:</p>
-<ul class="simple">
-<li>&quot;bayes-php&quot; is a &quot;b&quot; followed by 8 letters.</li>
-<li>&quot;b8&quot; is short and handy. Additionally, there was no program with the name &quot;b8&quot; or &quot;bate&quot;</li>
-<li>The English verb &quot;to bate&quot; means &quot;to decrease&quot; – and that's what b8 does: it decreases the number of spam entries in your weblog or guestbook!</li>
-<li>&quot;b8&quot; just sounds way cooler than &quot;bayes-php&quot; ;-)</li>
-</ul>
-</div>
-</div>
-<div class="section" id="about-the-database">
-<h2><a class="toc-backref" href="#id45">9.2&nbsp;&nbsp;&nbsp;About the database</a></h2>
-<div class="section" id="the-database-layout">
-<h3><a class="toc-backref" href="#id46">9.2.1&nbsp;&nbsp;&nbsp;The database layout</a></h3>
-<p>The database layout is quite simple. It's just key:value for everything stored. There are three &quot;internal&quot; variables stored as normal tokens (but all containing a <tt class="docutils literal">*</tt> which is always used as a split character by the lexer, so we can't get collisions):</p>
-<dl class="docutils">
-<dt><strong>bayes*dbversion</strong></dt>
-<dd>This indicates the database's &quot;version&quot;. The first versions of b8 did not set this. Version &quot;2&quot; indicates that we have a database created by a b8 version already storing <a class="reference internal" href="#the-lastseen-parameter">the &quot;lastseen&quot; parameter</a>.</dd>
-<dt><strong>bayes*texts.ham</strong></dt>
-<dd>The number of ham texts learned.</dd>
-<dt><strong>bayes*texts.spam</strong></dt>
-<dd>The number of spam texts learned.</dd>
-</dl>
-<p>Each &quot;normal&quot; token is stored with it's literal name as the key and it's data as the value. The data consists of the count of the token in all ham and spam texts and the date when the token was used the last time, all in one string and separated by spaces. So we have the following scheme:</p>
-<pre class="literal-block">
-&quot;token&quot; =&gt; &quot;count_ham count_spam lastseen&quot;
-</pre>
-</div>
-<div class="section" id="the-lastseen-parameter">
-<h3><a class="toc-backref" href="#id47">9.2.2&nbsp;&nbsp;&nbsp;The &quot;lastseen&quot; parameter</a></h3>
-<p>Somebody looking at the code might be wondering why b8 stores this &quot;lastseen&quot; parameter. This value is not used for any calculation at the moment. Initially, it was intended to keep the database maintainable in a way that &quot;old&quot; data could be removed. When e. g. a token only appeared once in ham or spam and has not been seen for a year, one could simply delete it from the database. <br />
-I actually never used this feature (does anybody?). So probably, some changes will be done to this one day. Perhaps, I find a way to include this data in the spamminess calculation in a meaningful way, or at least for some statistics. One could also make this optional to keep the calculation effort small if this is needed.</p>
-<p>Feel free to send me any suggestions about this!</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>
diff --git a/library/spam/doc/readme.rst b/library/spam/doc/readme.rst
deleted file mode 100644
index 451b28326..000000000
--- a/library/spam/doc/readme.rst
+++ /dev/null
@@ -1,371 +0,0 @@
-==========
-b8: readme
-==========
-
-:Author: Tobias Leupold
-:Homepage: http://nasauber.de/
-:Contact: tobias.leupold@web.de
-:Date: |date|
-
-.. contents:: Table of Contents
-
-Description of b8
-=================
-
-What is b8?
------------
-
-b8 is a spam filter implemented in `PHP <http://www.php.net/>`__. It is intended to keep your weblog or guestbook spam-free. The filter can be used anywhere in your PHP code and tells you whether a text is spam or not, using statistical text analysis. See `How does it work?`_ for details about this. To be able to do this, b8 first has to learn some spam and some ham example texts to decide what's good and what's not. If it makes mistakes classifying unknown texts, they can be corrected and b8 learns from the corrections, getting better with each learned text.
-
-At the moment of this writing, b8 has classified 14411 guestbook entries and weblog comments on my homepage since december 2006. 131 were ham. 39 spam texts (0.27 %) have been rated as ham (false negatives), with not even one false positive (ham message classified as spam). This results in a sensitivity of 99.73 % (the probability that a spam text will actually be rated as spam) and a specifity of 100 % (the probability that a ham text will actually be rated as ham) for me. I hope, you'll get the same good results :-)
-
-Basically, b8 is a statistical ("Bayesian"[#]_) spam filter like `Bogofilter <http://bogofilter.sourceforge.net/>`__ or `SpamBayes <http://spambayes.sourceforge.net/>`__, but it is not intended to classify e-mails. When I started to write b8, I didn't find a good PHP spam filter (or any spam filter that wasn't just some example code how one *could* implement a Bayesian spam filter in PHP) that was intended to filter weblog or guestbook entries. That's why I had to write my own ;-) |br|
-Caused by it's purpose, the way b8 works is slightly different from most of the Bayesian email spam filters out there. See `What's different?`_ if you're interested in the details.
-
-.. [#] A mathematician told me that the math in b8 actually does not use Bayes' theorem but some derived algorithms that are just related to it. So … let's simply believe that and stop claiming b8 was a *Bayesian* spam filter ;-)
-
-How does it work?
------------------
-
-b8 basically uses the math and technique described in Paul Graham's article "A Plan For Spam" [#planforspam]_ to distinguish ham and spam. The improvements proposed in Graham's article "Better Bayesian Filtering" [#betterbayesian]_ and Gary Robinson's article "Spam Detection" [#spamdetection]_ have also been considered. See also the article "A Statistical Approach to the Spam Problem" [#statisticalapproach]_.
-
-b8 cuts the text to classify to pieces, extracting stuff like e-mail addresses, links and HTML tags. For each such token, it calculates a single probability for a text containing it being spam, based on what the filter has learned so far. When the token was not seen before, b8 tries to find similar ones using the "degeneration" described in [#betterbayesian]_ and uses the most relevant value found. If really nothing is found, b8 assumes a default rating for this token for the further calculations. |br|
-Then, b8 takes the most relevant values (which have a rating far from 0.5, which would mean we don't know what it is) and calculates the probability that the whole text is spam by the inverse chi-square function described in [#spamdetection]_.
-There are some parameters that can be set which influence the filter's behaviour (see below).
-
-In short words: you give b8 a text and it returns a value between 0 and 1, saying it's ham when it's near 0 and saying it's spam when it's near 1.
-
-What do I need for it?
-----------------------
-
-Not much! You just need PHP 5 on the server where b8 will be used (b8 version 0.5 finally dropped PHP 4 compatibility – thankfully ;-) and a proper storage possibility for the wordlists. I strongly recommend using `Berkeley DB <http://www.oracle.com/database/berkeley-db/index.html>`_. See below how you can check if you can use it and why you should use it. If the server's PHP wasn't compiled with Berkeley DB support, a `MySQL <http://mysql.com/>`_ table can be used alternatively.
-
-What's different?
------------------
-
-b8 is designed to classify weblog or guestbook entries, not e-mails. For this reason, it uses a slightly different technique than most of the other statistical spam filters out there use.
-
-My experience was that spam entries on my weblog or guestbook were often quite short, sometimes just something like "123abc" as text and a link to a suspect homepage. Some spam bots don't even made a difference between e. g. the "name" and "text" fields and posted their text as email address, for example. Considering this, b8 just takes one string to classify, making no difference between "headers" and "text". |br|
-The other thing is that most statistical spam filters count one token one time, no matter how often it appears in the text (as Graham describes it in [#planforspam]_). b8 does count how often a token was seen and learns or considers this. Additionally, the number of learned ham and spam texts are saved and used as the calculation base for the single probabilities. Why this? Because a text containing one link (no matter where it points to, just indicated by a "\h\t\t\p\:\/\/" or a "www.") might not be spam, but a text containing 20 links might be.
-
-This means that b8 might be good for classifying weblog or guestbook entries (I really think it is ;-) – but very likely, it will work quite poor when being used for something else (like classifying e-mails). But as said above, for this task, there are a lot of very good filters out there to choose from.
-
-Update from prior versions
-==========================
-
-If this is a new b8 installation, read on at the `Installation`_ section!
-
-Update from bayes-php version 0.2.1 or earlier
-----------------------------------------------
-
-Please first follow the database update instructions of the bayes-php-0.3 release if you update from a version prior to bayes-php-0.3 and then read the following paragraph about updating from a version <0.3.3.
-
-Update from bayes-php version 0.3 or later
-------------------------------------------
-
-**You use Berkeley DB?**
- Everything's fine, you can simply continue using your database.
-
-**You use MySQL?**
- The ``CREATE`` statement of b8's wordlist has changed. The best is probably to create a dump via your favorite administration tool or script, create the new table and re-insert all data. The layout is still the same: there's one "token" column and one "data" column. Having done that, you can keep using your data.
-
-**You use SQLite?**
- Sorry, at the moment, there's no SQLite backend for b8. But we're working on it :-)
-
-The configuration model of b8 has changed. Please read through the `Configuration`_ section and update your configuration accordingly.
-
-b8's lexer has been partially re-written. It should now be able to handle all kind of non-latin-1 input, like cyrillic, chinese or japanese texts. Caused by this fact, much more tokens will be recognized when classifying such texts. Therefore, you could get different results in b8's ratings, even if the same database is used and although the math is still the same.
-
-b8 0.5 introduced two constants that can be used in the ``learn()`` and ``unlearn()`` functions: ``b8::HAM`` and ``b8::SPAM``. The literal values "ham" and "spam" can still be used anyway.
-
-Installation
-============
-
-Installing b8 on your server is quite easy. You just have to provide the needed files. To do this, you could just upload the whole ``b8`` subdirectory to the base directory of your homepage. It contains the filter itself and all needed backend classes. The other directories (``doc``, ``example`` and ``install``) are not used by b8.
-
-That's it ;-)
-
-Configuration
-=============
-
-The configuration is passed as arrays when instantiating a new b8 object. Two arrays can be passed to b8, one containing b8's base configuration and some settings for the lexer (which should be common for all lexer classes, in case some other lexer than the default one will be written one day) and one for the storage backend. |br|
-You can have a look at ``example/index.php`` to see how this can be done. `Using b8 in your scripts`_ also shows example code showing how b8 can be included in a PHP script.
-
-Not all values have to be set. When some values are missing, the default ones will be used. If you do use the default settings, you don't have to pass them to b8.
-
-b8's base configuration
------------------------
-
-All these values can be set in the "config_b8" array (the first parameter) passed to b8. The name of the array doesn't matter (of course), it just has to be the first argument.
-
-These are some basic settings telling b8 which backend classes to use:
-
- **storage**
- This defines which storage backend will be used to save b8's wordlist. Currently, two backends are available: `Berkeley DB <http://www.oracle.com/database/berkeley-db/index.html>`_ (``dba``) and `MySQL <http://mysql.com/>`_ (``mysql``). At the moment, b8 does not support `SQLite <http://sqlite.org/>`_ (as the previous version did), but it will be (hopefully) re-added in one of the next releases. The default is ``dba`` (string).
-
- *Berkeley DB*
- This is the preferred storage backend. It was the original backend for the filter and remains the most performant. b8's storage model is optimized for this database, as it is really fast and fits perfectly to what the filter needs to do the job. All content is saved in a single file, you don't need special user rights or a database server. |br|
- If you don't know whether your server's PHP can use a Berkeley DB, simply run the script ``install/setup_berkeleydb.php``. If it shows a Berkeley DB handler, please use this backend.
-
- *MySQL*
- As some webspace hosters don't allow using a Berkeley DB (but please be sure to check if you can use it!), but most do provide a MySQL server, using a MySQL table for the wordlist is provided as an alternative storage method. As said above, b8 was always intended to use a Berkeley DB. It doesn't use or need SQL to query the database. So, very likely, this will work less performant, produce a lot of unnecessary overhead and waste computing power. But it will do fine anyway!
-
- See `Configuration of the storage backend`_ for the settings of the chosen backend.
-
- **degenerator**
- The degenerator class to be used. See `How does it work?`_ and [#betterbayesian]_ if you're interested in what "degeneration" is. Defaults to ``default`` (string). At the moment, only one degenerator exists, so you probably don't want to change this unless you have written your own degenerator.
-
- **lexer**
- The lexer class to be used. Defaults to ``default`` (string). At the moment, only one lexer exists, so you probably don't want to change this unless you have written your own lexer.
-
- The behaviour of the lexer can be additionally configured with the following variables:
-
- **min_size**
- The minimal length for a token to be considered when calculating the rating of a text. Defaults to ``3`` (integer).
-
- **max_size**
- The maximal length for a token to be considered when calculating the rating of a text. Defaults to ``30`` (integer).
-
- **allow_numbers**
- Should pure numbers also be considered? Defaults to ``FALSE`` (boolean).
-
-The following settings influence the mathematical internals of b8. If you want to experiment, feel free to play around with them; but be warned: wrong settings of these values will result in poor performance or could even "short-circuit" the filter. |br|
-Leave these values as they are unless you know what you are doing!
-
-The "Statistical discussion about b8" [#b8statistic]_ shows why the default values are the default ones.
-
- **use_relevant**
- This tells b8 how many tokens should be used when calculating the spamminess of a text. The default setting is ``15`` (integer). This seems to be a quite reasonable value. When using to many tokens, the filter will fail on texts filled with useless stuff or with passages from a newspaper, etc. not being very spammish. |br|
- The tokens counted multiple times (see above) are added in addition to this value. They don't replace other ratings.
-
- **min_dev**
- This defines a minimum deviation from 0.5 that a token's rating must have to be considered when calculating the spamminess. Tokens with a rating closer to 0.5 than this value will simply be skipped. |br|
- If you don't want to use this feature, set this to ``0``. Defaults to ``0.2`` (float). Read [#b8statistic]_ before increasing this.
-
- **rob_x**
- This is Gary Robinson's *x* constant (cf. [#spamdetection]_). A completely unknown token will be rated with the value of ``rob_x``. The default ``0.5`` (float) seems to be quite reasonable, as we can't say if a token that also can't be rated by degeneration is good or bad. |br|
- If you receive much more spam than ham or vice versa, you could change this setting accordingly.
-
- **rob_s**
- This is Gary Robinson's *s* constant. This is essentially the probability that the *rob_x* value is correct for a completely unknown token. It will also shift the probability of rarely seen tokens towards this value. The default is ``0.3`` (float) |br|
- See [#spamdetection]_ for a closer description of the *s* constant and read [#b8statistic]_ for specific information about this constant in b8's algorithms.
-
-Configuration of the storage backend
-------------------------------------
-
-All the following values can be set in the "config_database" array (the second parameter) passed to b8. The name of the array doesn't matter (of course), it just has to be the second argument.
-
-Settings for the Berkeley DB (DBA) backend
-``````````````````````````````````````````
-**database**
- The filename of the database file, relative to the location of ``b8.php``. Defaults to ``wordlist.db`` (string).
-
-**handler**
- The DBA handler to use (cf. `the PHP documentation <http://php.net/manual/en/dba.requirements.php>`_ and `Setting up a new Berkeley DB`_). Defaults to ``db4`` (string).
-
-Settings for the MySQL backend
-``````````````````````````````
-
-**database**
- The database containing b8's wordlist table. Defaults to ``b8_wordlist`` (string).
-
-**table_name**
- The table containing b8's wordlist. Defaults to ``b8_wordlist`` (string).
-
-**host**
- The host of the MySQL server. Defaults to ``localhost`` (string).
-
-**user**
- The user name used to open the database connection. Defaults to ``FALSE`` (boolean).
-
-**pass**
- The password required to open the database connection. Defaults to ``FALSE`` (boolean).
-
-**connection**
- An existing MySQL link-resource that can be used by b8. Defaults to ``NULL`` (NULL).
-
-Using b8
-========
-
-Now, that everything is configured, you can start to use b8. A sample script that shows what can be done with the filter exists in ``example/index.php``. The best thing for testing how all this works is to use this script before using b8 in your own scripts.
-
-Before you can start, you have to setup a database so that b8 can store a wordlist.
-
-Setting up a new database
--------------------------
-
-Setting up a new Berkeley DB
-````````````````````````````
-
-I wrote a script to setup a new Berkeley DB for b8. It is located in ``install/setup_berkeleydb.php``. Just run this script on your server and be sure that the directory containing it has the proper access rights set so that the server's HTTP server user or PHP user can create a new file in it (probably ``0777``). The script is quite self-explaining, just run it.
-
-Of course, you can also create a Berkeley DB by hand. In this case, you just have to insert three keys:
-
-::
-
- bayes*dbversion => 2
- bayes*texts.ham => 0
- bayes*texts.spam => 0
-
-Be sure to set the right DBA handler in the storage backend configuration if it's not ``db4``.
-
-Setting up a new MySQL table
-````````````````````````````
-
-The SQL file ``install/setup_mysql.sql`` contains both the create statement for the wordlist table of b8 and the ``INSERT`` statements for adding the necessary internal variables.
-
-Simply change the table name according to your needs (or leave it as it is ;-) and run the SQL to setup a b8 wordlist MySQL table.
-
-Using b8 in your scripts
-------------------------
-
-Just have a look at the example script located in ``example/index.php`` to see how you can include b8 in your scripts. Essentially, this strips down to:
-
-::
-
- # Include the b8 code
- require "{$_SERVER['DOCUMENT_ROOT']}/b8/b8.php";
-
- # Do some configuration
-
- $config_b8 = array(
- 'some_key' => 'some_value',
- 'foo' => 'bar'
- );
-
- $config_database = array(
- 'some_key' => 'some_value',
- 'foo' => 'bar'
- );
-
- # Create a new b8 instance
- $b8 = new b8($config_b8, $config_database);
-
-b8 provides three functions in an object oriented way (called e. g. via ``$b8->classify($text)``):
-
-**learn($text, $category)**
- This saves the reference text ``$text`` (string) in the category ``$category`` (b8 constant). |br|
- b8 0.5 introduced two constants that can be used as ``$category``: ``b8::HAM`` and ``b8::SPAM``. To be downward compatible with older versions of b8, the literal values "ham" and "spam" (case-sensitive strings) can still be used here.
-
-**unlearn($text, $category)**
- This function just exists to delete a text from a category in which is has been stored accidentally before. It deletes the reference text ``$text`` (string) from the category ``$category`` (either the constants ``b8::HAM`` or ``b8::SPAM`` or the literal case-sensitive strings "ham" or "spam" – cf. above). |br|
- **Don't delete a spam text from ham after saving it in spam or vice versa, as long you don't have stored it accidentally in the wrong category before!** This will not improve performance, quite the opposite: it will actually break the filter after a time, as the counter for saved ham or spam texts will reach 0, although you have ham or spam tokens stored: the filter will try to remove texts from the ham or spam data which have never been stored there, decrease the counter for tokens which are found just skip the non-existing words.
-
-**classify($text)**
- This function takes the text ``$text`` (string), calculates it's probability for being spam it and returns a value between 0 and 1 (float). |br|
- A value close to 0 says the text is more likely ham and a value close to 1 says the text is more likely spam. What to do with this value is *your* business ;-) See also `Tips on operation`_ below.
-
-Tips on operation
-=================
-
-Before b8 can decide whether a text is spam or ham, you have to tell it what you consider as spam or ham. At least one learned spam or one learned ham text is needed to calculate anything. To get good ratings, you need both learned ham and learned spam texts, the more the better. |br|
-What's considered as "ham" or "spam" can be very different, depending on the operation site. On my homepage, practically each and every text posted in English or using cyrillic letters is spam. On an English or Russian homepage, this will be not the case. So I think it's not really meaningful to provide some "spam data" to start. Just train b8 with "your" spam and ham.
-
-For the practical use, I advise to give the filter all data availible. E. g. name, email address, homepage, IP address und of course the text itself should be stored in a variable (e. g. separated with an ``\n`` or just a space or tab after each block) and then be classified. The learning should also be done with all data availible. |br|
-Saving the IP address is probably only meaningful for spam entries, because spammers often use the same IP address multiple times. In principle, you can leave out the IP of ham entries.
-
-You can use b8 e. g. in a guestbook script and let it classify the text before saving it. Everyone has to decide which rating is necessary to classify a text as "spam", but a rating of >= 0.8 seems to be reasonable for me. If one expects the spam to be in another language that the ham entries or the spams are very short normally, one could also think about a limit of 0.7. |br|
-The email filters out there mostly use > 0.9 or even > 0.99; but keep in mind that they have way more data to analyze in most of the cases. A guestbook entry may be quite short, especially when it's spam.
-
-In my opinion, a autolearn function is very handy. I save spam messages with a rating higher than 0.7 but less than 0.9 automatically as spam. I don't do this with ham messages in an automated way to prevent the filter from saving a false negative as ham and then classifying and learning all the spam as ham when I'm on holidays ;-)
-
-Closing
-=======
-
-So … that's it. Thanks for using b8! If you find a bug or have an idea how to make b8 better, let me know. I'm also always looking forward to get e-mails from people using b8 on their homepages :-)
-
-References
-==========
-
-.. [#planforspam] Paul Graham, *A Plan For Spam* (http://paulgraham.com/spam.html)
-.. [#betterbayesian] Paul Graham, *Better Bayesian Filtering* (http://paulgraham.com/better.html)
-.. [#spamdetection] Gary Robinson, *Spam Detection* (http://radio.weblogs.com/0101454/stories/2002/09/16/spamDetection.html)
-.. [#statisticalapproach] *A Statistical Approach to the Spam Problem* (http://linuxjournal.com/article/6467)
-.. [#b8statistic] Tobias Leupold, *Statistical discussion about b8* (http://nasauber.de/opensource/b8/discussion/)
-
-Appendix
-========
-
-FAQ
----
-
-What about more than two categories?
-````````````````````````````````````
-
-I wrote b8 with the `KISS principle <http://en.wikipedia.org/wiki/KISS_principle>`__ in mind. For the "end-user", we have a class with almost no setup to do that can do three things: classify a text, learn a text and un-learn a text. Normally, there's no need to un-learn a text, so essentially, there are only two functions we need. |br|
-This simplicity is only possible because b8 only knows two categories (normally "Ham" and "Spam" or some other category pair) and tells you, in one float number between 0 and 1, if a given texts rather fits in the first or the second category. If we would support multiple categories, more work would have to be done and things would become more complicated. One would have to setup the categories, have another database layout (perhaps making it mandatory to have SQL) and one float number would not be sufficient to describe b8's output, so more code would be needed – even outside of b8.
-
-All the code, the database layout and particularly the math is intended to do exactly one thing: distinguish between two categories. I think it would be a lot of work to change b8 so that it would support more than two categories. Probably, this is possible to do, but don't ask me in which way we would have to change the math to get multiple-category support – I'm a dentist, not a mathematician ;-) |br|
-Apart from this I do believe that most people using b8 don't want or need multiple categories. They just want to know if a text is spam or not, don't they? I do, at least ;-)
-
-But let's think about the multiple-category thing. How would we calculate a rating for more than two categories? If we had a third one, let's call it "`Treet <http://en.wikipedia.org/wiki/Treet>`__", how would we calculate a rating? We could calculate three different ratings. One for "Ham", one for "Spam" and one for "Treet" and choose the highest one to tell the user what category fits best for the text. This could be done by using a small wrapper script using three instances of b8 as-is and three different databases, each containing texts being "Ham", "Spam", "Treet" and the respective counterparts. |br|
-But here's the problem: if we have "Ham" and "Spam", "Spam" is the counterpart of "Ham". But what's the counterpart of "Spam" if we have more than one additional category? Where do the "Non-Ham", "Non-Spam" and "Non-Treet" texts come from?
-
-Another approach, a direct calculation of more than two probabilities (the "Ham" probability is simply 1 minus the "Spam" probability, so we actually get two probabilities with the return value of b8) out of one database would require big changes in b8's structure and math.
-
-There's a project called `PHPNaiveBayesianFilter <http://xhtml.net/scripts/PHPNaiveBayesianFilter>`__ which supports multiple categories by default. The author calls his software "Version 1.0", but I think this is the very first release, not a stable or mature one. The most recent change of that release dates back to 2003 according to the "changed" date of the files inside the zip archive, so probably, this project is dead or has never been alive and under active development at all. |br|
-Actually, I played around with that code but the results weren't really good, so I decided to write my own spam filter from scratch back in early 2006 ;-)
-
-All in all, there seems to be no easy way to implement multiple (meaning more than two) categories using b8's current code base and probably, b8 will never support more than two categories. Perhaps, a fork or a complete re-write would be better than implementing such a feature. Anyway, I don't close my mind to multiple categories in b8. Feel free to tell me how multiple categories could be implementented in b8 or how a multiple-category version using the same code base (sharing a common abstract class?) could be written.
-
-What about a list with words to ignore?
-```````````````````````````````````````
-
-Some people suggested to introduce a list with words that b8 will simply ignore. Like "and", "or", "the", and so on. I don't think this is very meaningful.
-
-First, it would just work for the particular language that has been stored in the list. Speaking of my homepage, most of my spam is English, almost all my ham is German. So I would have to maintain a list with the probably less interesting words for at least two languages. Additionally, I get spam in Chinese, Japanese and Cyrillic writing or something else I can't read as well. What word should be ignored in those texts? |br|
-Second, why should we ever exclude words? Who tells us those words are *actually* meaningless? If a word appears both in ham and spam, it's rating will be near 0.5 and so, it won't be used for the final calculation if a appropriate minimum deviation was set. So b8 will exclude it anyway without any blacklist. And think of this: if we excluded a word of which we only *think* it doesn't mean anything but it actually does appear more often in ham or spam, the results will get even worse.
-
-So why should we care about things we do not have to care about? ;-)
-
-
-Why is it called "b8"?
-``````````````````````
-
-The initial name for the filter was (damn creative!) "bayes-php". There were two main reasons for searching another name: 1. "bayes-php" sucks. 2. the `PHP License <http://php.net/license/3_01.txt>`_ says the PHP guys do not like when the name of a script written in PHP contains the word "PHP". Read the `License FAQ <http://www.php.net/license/index.php#faq-lic>`_ for a reasonable argumentation about this.
-
-Luckily, `Tobias Lang <http://langt.net/>`_ proposed the new name "b8". And these are the reasons why I chose this name:
-
-- "bayes-php" is a "b" followed by 8 letters.
-- "b8" is short and handy. Additionally, there was no program with the name "b8" or "bate"
-- The English verb "to bate" means "to decrease" – and that's what b8 does: it decreases the number of spam entries in your weblog or guestbook!
-- "b8" just sounds way cooler than "bayes-php" ;-)
-
-About the database
-------------------
-
-The database layout
-```````````````````
-
-The database layout is quite simple. It's just key:value for everything stored. There are three "internal" variables stored as normal tokens (but all containing a ``*`` which is always used as a split character by the lexer, so we can't get collisions):
-
-**bayes*dbversion**
- This indicates the database's "version". The first versions of b8 did not set this. Version "2" indicates that we have a database created by a b8 version already storing `the "lastseen" parameter`_.
-
-**bayes*texts.ham**
- The number of ham texts learned.
-
-**bayes*texts.spam**
- The number of spam texts learned.
-
-Each "normal" token is stored with it's literal name as the key and it's data as the value. The data consists of the count of the token in all ham and spam texts and the date when the token was used the last time, all in one string and separated by spaces. So we have the following scheme:
-
-::
-
- "token" => "count_ham count_spam lastseen"
-
-The "lastseen" parameter
-````````````````````````
-
-Somebody looking at the code might be wondering why b8 stores this "lastseen" parameter. This value is not used for any calculation at the moment. Initially, it was intended to keep the database maintainable in a way that "old" data could be removed. When e. g. a token only appeared once in ham or spam and has not been seen for a year, one could simply delete it from the database. |br|
-I actually never used this feature (does anybody?). So probably, some changes will be done to this one day. Perhaps, I find a way to include this data in the spamminess calculation in a meaningful way, or at least for some statistics. One could also make this optional to keep the calculation effort small if this is needed.
-
-Feel free to send me any suggestions about this!
-
-.. |br| raw:: html
-
- <br />
-
-.. section-numbering::
-
-.. |date| date::
diff --git a/library/spam/example/index.php b/library/spam/example/index.php
deleted file mode 100644
index 6d3c14260..000000000
--- a/library/spam/example/index.php
+++ /dev/null
@@ -1,241 +0,0 @@
-<?php
-
-# Copyright (C) 2006-2010 Tobias Leupold <tobias.leupold@web.de>
-#
-# This file is part of the b8 package
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation in version 2.1 of the License.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-# License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-
-### This is an example script demonstrating how b8 can be used. ###
-
-#/*
-
-# Use this code block if you want to use Berkeley DB.
-
-# The database filename is interpreted relative to the b8.php script location.
-
-$config_b8 = array(
- 'storage' => 'dba'
-);
-
-$config_database = array(
- 'database' => 'wordlist.db',
- 'handler' => 'db4'
-);
-
-#*/
-
-/*
-
-# Use this code block if you want to use MySQL.
-
-# An existing link resource can be passed to b8 by setting
-# $config_database['connection'] to this link resource.
-# Be sure to set your database access data otherwise!
-
-$config_b8 = array(
- 'storage' => 'mysql'
-);
-
-$config_database = array(
- 'database' => 'test',
- 'table_name' => 'b8_wordlist',
- 'host' => 'localhost',
- 'user' => '',
- 'pass' => ''
-);
-
-*/
-
-# To be able to calculate the time the classification took
-
-$time_start = NULL;
-
-function microtimeFloat()
-{
- list($usec, $sec) = explode(" ", microtime());
- return ((float) $usec + (float) $sec);
-}
-
-# Output a nicely colored rating
-
-function formatRating($rating)
-{
-
- if($rating === FALSE)
- return "<span style=\"color:red\">could not calculate spaminess</span>";
-
- $red = floor(255 * $rating);
- $green = floor(255 * (1 - $rating));
-
- return "<span style=\"color:rgb($red, $green, 0);\"><b>" . sprintf("%5f", $rating) . "</b></span>";
-
-}
-
-echo <<<END
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
- "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-
-<head>
-
-<title>example b8 interface</title>
-
-<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-
-<meta name="dc.creator" content="Tobias Leupold" />
-<meta name="dc.rights" content="Copyright (c) by Tobias Leupold" />
-
-</head>
-
-<body>
-
-<div>
-
-<h1>example b8 interface</h1>
-
-
-END;
-
-$postedText = "";
-
-if(isset($_POST['action']) and $_POST['text'] == "")
- echo "<p style=\"color:red;\"><b>Please type in a text!</b></p>\n\n";
-
-elseif(isset($_POST['action']) and $_POST['text'] != "") {
-
- $time_start = microtimeFloat();
-
- # Include the b8 code
- require dirname(__FILE__) . "/../b8/b8.php";
-
- # Create a new b8 instance
- $b8 = new b8($config_b8, $config_database);
-
- # Check if everything worked smoothly
-
- $started_up = $b8->validate();
-
- if($started_up !== TRUE) {
- echo "<b>example:</b> Could not initialize b8. error code: $started_up";
- exit;
- }
-
- $text = stripslashes($_POST['text']);
- $postedText = htmlentities($text, ENT_QUOTES, 'UTF-8');
-
- switch($_POST['action']) {
-
- case "Classify":
- echo "<p><b>Spaminess: " . formatRating($b8->classify($text)) . "</b></p>\n";
- break;
-
- case "Save as Spam":
-
- $ratingBefore = $b8->classify($text);
- $b8->learn($text, b8::SPAM);
- $ratingAfter = $b8->classify($text);
-
- echo "<p>Saved the text as Spam</p>\n\n";
-
- echo "<div><table>\n";
- echo "<tr><td>Classification before learning:</td><td>" . formatRating($ratingBefore) . "</td></tr>\n";
- echo "<tr><td>Classification after learning:</td><td>" . formatRating($ratingAfter) . "</td></tr>\n";
- echo "</table></div>\n\n";
-
- break;
-
- case "Save as Ham":
-
- $ratingBefore = $b8->classify($text);
- $b8->learn($text, b8::HAM);
- $ratingAfter = $b8->classify($text);
-
- echo "<p>Saved the text as Ham</p>\n\n";
-
- echo "<div><table>\n";
- echo "<tr><td>Classification before learning:</td><td>" . formatRating($ratingBefore) . "</td></tr>\n";
- echo "<tr><td>Classification after learning:</td><td>" . formatRating($ratingAfter) . "</td></tr>\n";
- echo "</table></div>\n\n";
-
- break;
-
- case "Delete from Spam":
- $b8->unlearn($text, b8::SPAM);
- echo "<p style=\"color:green\">Deleted the text from Spam</p>\n\n";
- break;
-
- case "Delete from Ham":
- $b8->unlearn($text, b8::HAM);
- echo "<p style=\"color:green\">Deleted the text from Ham</p>\n\n";
- break;
-
- }
-
- $mem_used = round(memory_get_usage() / 1048576, 5);
- $peak_mem_used = round(memory_get_peak_usage() / 1048576, 5);
- $time_taken = round(microtimeFloat() - $time_start, 5);
-
-}
-
-echo <<<END
-<div>
-<form action="{$_SERVER['PHP_SELF']}" method="post">
-<div>
-<textarea name="text" cols="50" rows="16">$postedText</textarea>
-</div>
-<table>
-<tr>
-<td><input type="submit" name="action" value="Classify" /></td>
-</tr>
-<tr>
-<td><input type="submit" name="action" value="Save as Spam" /></td>
-<td><input type="submit" name="action" value="Save as Ham" /></td>
-</tr>
-<tr>
-<td><input type="submit" name="action" value="Delete from Spam" /></td>
-<td><input type="submit" name="action" value="Delete from Ham" /></td>
-</tr>
-</table>
-</form>
-</div>
-
-</div>
-
-END;
-
-if($time_start !== NULL) {
-
-echo <<<END
-<div>
-<table border="0">
-<tr><td>Memory used: </td><td>$mem_used&thinsp;MB</td></tr>
-<tr><td>Peak memory used:</td><td>$peak_mem_used&thinsp;MB</td></tr>
-<tr><td>Time taken: </td><td>$time_taken&thinsp;sec</td></tr>
-</table>
-</div>
-
-END;
-
-}
-
-?>
-
-</body>
-
-</html>
diff --git a/library/spam/install/setup_berkeleydb.php b/library/spam/install/setup_berkeleydb.php
deleted file mode 100644
index 81e1d5afa..000000000
--- a/library/spam/install/setup_berkeleydb.php
+++ /dev/null
@@ -1,240 +0,0 @@
-<?php
-
-# Copyright (C) 2010 Tobias Leupold <tobias.leupold@web.de>
-#
-# This file is part of the b8 package
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation in version 2.1 of the License.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-# License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-echo <<<END
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
- "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-
-<head>
-
-<title>b8 Berkeley DB setup</title>
-
-<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-
-<meta name="dc.creator" content="Tobias Leupold" />
-<meta name="dc.rights" content="Copyright (c) by Tobias Leupold" />
-
-</head>
-
-<body>
-
-<div>
-
-<h1>b8 Berkeley DB setup</h1>
-
-
-END;
-
-$failed = FALSE;
-
-if(isset($_POST['handler'])) {
-
- $dbfile = $_POST['dbfile'];
- $dbfile_directory = $_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']);
-
- echo "<h2>Creating database</h2>\n\n";
-
- echo "<p>\n";
-
- echo "Checking database file name &hellip; ";
-
- if($dbfile == "") {
- echo "<span style=\"color:red;\">Please provide the name of the database file!</span><br />\n";
- $failed = TRUE;
- }
- else
- echo "$dbfile<br />\n";
-
- if(!$failed) {
-
- echo "Touching/Creating " . htmlentities($dbfile) . " &hellip; ";
-
- if(touch($dbfile) === FALSE) {
- echo "<span style=\"color:red;\">Failed to touch the database file. Please check the given filename and/or fix the permissions of $dbfile_directory.</span><br />\n";
- $failed = TRUE;
- }
- else
- echo "done<br />\n";
-
- }
-
- if(!$failed) {
-
- echo "Setting file permissions to 0666 &hellip ";
-
- if(chmod($dbfile, 0666) === FALSE) {
- echo "<span style=\"color:red;\">Failed to change the permissions of $dbfile_directory/$dbfile. Please adjust them manually.</span><br />\n";
- $failed = TRUE;
- }
- else
- echo "done<br />\n";
-
- }
-
- if(!$failed) {
-
- echo "Checking if the given file is empty &hellip ";
-
- if(filesize($dbfile) > 0) {
- echo "<span style=\"color:red;\">$dbfile_directory/$dbfile is not empty. Can't create a new database. Please delete/empty this file or give another filename.</span><br />\n";
- $failed = TRUE;
- }
- else
- echo "it is<br />\n";
-
- }
-
- if(!$failed) {
-
- echo "Connecting to $dbfile &hellip; ";
-
- $db = dba_open($dbfile, "c", $_POST['handler']);
-
- if($db === FALSE) {
- echo "<span style=\"color:red;\">Could not connect to the database!</span><br />\n";
- $failed = TRUE;
- }
- else
- echo "done<br />\n";
-
- }
-
- if(!$failed) {
-
- echo "Storing necessary internal variables &hellip ";
-
- $internals = array(
- "bayes*dbversion" => "2",
- "bayes*texts.ham" => "0",
- "bayes*texts.spam" => "0"
- );
-
- foreach($internals as $key => $value) {
- if(dba_insert($key, $value, $db) === FALSE) {
- echo "<span style=\"color:red;\">Failed to insert data!</span><br />\n";
- $failed = TRUE;
- break;
- }
- }
-
- if(!$failed)
- echo "done<br />\n";
-
- }
-
- if(!$failed) {
-
- echo "Trying to read data from the database &hellip ";
-
- $dbversion = dba_fetch("bayes*dbversion", $db);
-
- if($dbversion != "2") {
- echo "<span style=\"color:red;\">Failed to read data!</span><br />\n";
- $failed = TRUE;
- }
- else
- echo "success<br />\n";
- }
-
- if(!$failed) {
-
- dba_close($db);
-
- echo "</p>\n\n";
- echo "<p style=\"color:green;\">Successfully created a new b8 database!</p>\n\n";
- echo "<table>\n";
- echo "<tr><td>Filename:</td><td>$dbfile_directory/$dbfile</td></tr>\n";
- echo "<tr><td>DBA handler:</td><td>{$_POST['handler']}</td><tr>\n";
- echo "</table>\n\n";
- echo "<p>Move this file to it's destination directory (default: the base directory of b8) to use it with b8. Be sure to use the right DBA handler in b8's configuration.";
-
- }
-
- echo "</p>\n\n";
-
-}
-
-if($failed === TRUE or !isset($_POST['handler'])) {
-
-echo <<<END
-<form action="{$_SERVER['PHP_SELF']}" method="post">
-
-<h2>DBA Handler</h2>
-
-<p>
-The following table shows all available DBA handlers. Please choose the "Berkeley DB" one.
-</p>
-
-<table>
-<tr><td></td><td><b>Handler</b></td><td><b>Description</b></td></tr>
-
-END;
-
-foreach(dba_handlers(TRUE) as $name => $version) {
-
- $checked = "";
-
- if(!isset($_POST['handler'])) {
- if(strpos($version, "Berkeley") !== FALSE )
- $checked = " checked=\"checked\"";
- }
- else {
- if($_POST['handler'] == $name)
- $checked = " checked=\"checked\"";
- }
-
- echo "<tr><td><input type=\"radio\" name=\"handler\" value=\"$name\"$checked /></td><td>$name</td><td>$version</td></tr>\n";
-
-}
-
-echo <<<END
-</table>
-
-<h2>Database file</h2>
-
-<p>
-Please the name of the desired database file. It will be created in the directory where this script is located.
-</p>
-
-<p>
-<input type="text" name="dbfile" value="wordlist.db" />
-</p>
-
-<p>
-<input type="submit" value="Create the database" />
-</p>
-
-</form>
-
-
-END;
-
-}
-
-?>
-
-</div>
-
-</body>
-
-</html>
diff --git a/library/spam/install/setup_mysql.sql b/library/spam/install/setup_mysql.sql
deleted file mode 100644
index ac43274e9..000000000
--- a/library/spam/install/setup_mysql.sql
+++ /dev/null
@@ -1,27 +0,0 @@
-
--- Copyright (C) 2010 Tobias Leupold <tobias.leupold@web.de>
---
--- This file is part of the b8 package
---
--- This program is free software; you can redistribute it and/or modify it
--- under the terms of the GNU Lesser General Public License as published by
--- the Free Software Foundation in version 2.1 of the License.
---
--- This program is distributed in the hope that it will be useful, but
--- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
--- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
--- License for more details.
---
--- You should have received a copy of the GNU Lesser General Public License
--- along with this program; if not, write to the Free Software Foundation,
--- Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
-
-CREATE TABLE `b8_wordlist` (
- `token` varchar(255) character set utf8 collate utf8_bin NOT NULL,
- `count` varchar(255) default NULL,
- PRIMARY KEY (`token`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-INSERT INTO `b8_wordlist` VALUES ('bayes*dbversion', '2');
-INSERT INTO `b8_wordlist` VALUES ('bayes*texts.ham', '0');
-INSERT INTO `b8_wordlist` VALUES ('bayes*texts.spam', '0');
diff --git a/library/stylish_select/index.html b/library/stylish_select/index.html
deleted file mode 100644
index b711c09f6..000000000
--- a/library/stylish_select/index.html
+++ /dev/null
@@ -1,314 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <title>jQuery Stylish Select 0.4.9 plugin examples</title>
- <meta http-equiv="content-type" content="text/html;charset=utf-8" />
- <link rel="stylesheet" type="text/css" href="stylish-select.css" />
-
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
- <script src="jquery.stylish-select.js" type="text/javascript"></script>
-
- <script type="text/javascript">
- $(function(){
-
- $('#my-dropdown, #my-dropdown2, #my-dropdown3, #my-dropdown4, #my-dropdown5, #my-dropdown6, #my-dropdown7, #my-dropdown8, #my-dropdown9').sSelect();
-
- //set max height
- $('#my-dropdownCountries').sSelect({ddMaxHeight: '300px'});
-
- //set value on click
- $('#setVal').click(function(){
- $('#my-dropdown5').getSetSSValue('4');
- });
-
- //get value on click
- $('#getVal').click(function(){
- alert('The value is: '+$('#my-dropdown5').getSetSSValue());
- });
-
- //alert change event
- $('#my-dropdownChange').sSelect().change(function(){alert('changed')});
-
- //add options to select and update
- $('#addOptions').click(function(){
- $('#my-dropdown6').append('<option value="newOpt">New Option</option>').resetSS();
- return false;
- });
-
- });
- </script>
-
- <style type="text/css">
- body {font-family:Arial, Helvetica, sans-serif; font-size:12px;}
- .selCont {clear:both; margin-bottom:20px; padding-bottom:40px; float:left; border-bottom:dotted 1px #000; width:600px;}
- </style>
-
- </head>
- <body>
- <form action="" method="post">
- <h1>Stylish Select 0.4.9</h1>
- <h2>A cross-browser, accessible alternative to the standard form element which can be fully customised with CSS</h2>
- <p>Stylish Select attempts to replicate the functionality of the browser default select box as closely as possible with support for keyboard navigation, and intelligent positioning.</p>
- <p>Stylish Select aims to have a minimal code footprint and weighs in at just over 3KB when minified.</p>
- <a href="http://github.com/scottdarby/Stylish-Select">Get latest source code from GitHub</a>
- <h2>Usage</h2>
- <p>First, include the stylesheet, jQuery and the stylish select .js file in your html head tag.</p>
- <p>The plugin can be used to replace any select with the following:</p>
- <pre class="brush: javascript">
-$(document).ready(function(){
-$('#my-dropdown').sSelect();
-});
- </pre>
- <div class="selCont">
- <h2>Simplest example, option selected by default</h2>
- <p>You can use the alphabetical and arrow keys to navigate the list as you would a browser default select.</p>
- <select id="my-dropdown" name="my-dropdown">
- <option value="1">A cappella</option>
- <option value="test">Acid Jazz</option>
- <option value="3">Big Band</option>
- <option value="4">Big Beat</option>
- <option value="5">Cakewalk</option>
- <option value="6">Calenda</option>
- <option value="7">Dark ambient</option>
- <option value="8">Dark cabaret</option>
- <option value="9">Chalk &amp; Cheese</option>
- </select>
- </div>
- <div class="selCont">
- <h2>Change event</h2>
- <p>Stylish Select alters the original select on the page, so you can access it's change event:</p>
- <pre class="brush: javascript">
-//change event
-$('#my-dropdownChange').sSelect().change(function(){alert('changed')});
- </pre>
- <select id="my-dropdownChange" name="my-dropdown">
- <option value="1">A cappella</option>
- <option value="test">Acid Jazz</option>
- <option value="3" selected="selected">Big Band</option>
- <option value="4">Big Beat</option>
- <option value="5">Cakewalk</option>
- <option value="6">Calenda</option>
- <option value="7">Dark ambient</option>
- <option value="8">Dark cabaret</option>
- </select>
- </div>
- <div class="selCont">
- <h2>Grouped options</h2>
- <p>Stylish Select supports optgroups and also optgroups and options together.</p>
- <select id="my-dropdown2" name="my-dropdown">
- <option>Please select</option>
- <optgroup label="Tool">
- <option value="1">Opiate</option>
- <option value="2">Undertow</option>
- <option value="3">Aenima</option>
- <option value="4">Lateralus</option>
- </optgroup>
- <optgroup label="A Tribe Called Quest">
- <option value="5">People's Instinctive Travels and the Paths of Rhythm</option>
- <option value="6">The Low End Theory</option>
- <option selected="selected" value="7">Midnight Marauders</option>
- <option value="8">Beats, Rhymes and Life</option>
- <option value="9">The Love Movement</option>
- </optgroup>
- </select>
- </div>
- <div id="get-set" class="selCont">
- <h2>Getting/setting the value</h2>
- <pre class="brush: javascript">
-//set value
-$('#setVal').click(function(){
-$('#my-dropdown5').getSetSSValue(4);
-});
-
-//get value
-$('#getVal').click(function(){
-alert('The value is: '+$('#my-dropdown5').getSetSSValue());
-});
- </pre>
- <p><a id="setVal" href="javascript:void(0)">Set value to 4</a></p>
- <p><a id="getVal" href="javascript:void(0)">Get value</a></p>
- <select id="my-dropdown5" name="my-dropdown">
- <option value="1">Lorem</option>
- <option value="2">Ipsum</option>
- <option value="3">Dolor</option>
- <option value="4">Sit</option>
- <option value="5">Amet</option>
- <option value="6">Consectetuer</option>
- <option value="7">Adipiscing</option>
- </select>
- </div>
- <div id="update" class="selCont">
- <h2>Add new options to Stylish Select</h2>
- <pre class="brush: javascript">
-//add options to select and update
-$('#addOptions').click(function(){
-$('#my-dropdown6').append('&lt;option value="newOpt">New Option&lt;/option&gt;').resetSS();
-});
- </pre>
- <p>If you add or remove options from the initial select element on the page, be sure to call the .resetSS() method on the select to update the Stylish Select replacement.</p>
-
- <p><a id="addOptions" href="javascript:void(0)">Add new options to select and update</a></p>
- <select id="my-dropdown6" name="my-dropdown">
- <option value="1">Lorem</option>
- <option value="2">Ipsum</option>
- <option value="3">Dolor</option>
- <option value="4">Sit</option>
- <option value="5">Amet</option>
- <option value="6">Consectetuer</option>
- <option value="7">Adipiscing</option>
- <option value="7">Adipiscing</option>
- <option value="7">Adipiscing</option>
- <option value="7">Adipiscing</option>
- </select>
- </div>
- <div class="selCont">
- <h2>Max-height for large lists</h2>
- <pre class="brush: javascript">
-$('#my-dropdown').sSelect({ddMaxHeight: '300px'});
- </pre>
- <select id="my-dropdownCountries" name="my-dropdown">
- <option value="1">Afghanistan</option>
- <option value="1">Akrotiri</option>
- <option value="1">Albania</option>
- <option value="1">Algeria</option>
- <option value="1">American Samoa</option>
- <option value="1">Andorra</option>
- <option value="1">Angola</option>
- <option value="1">Anguilla</option>
- <option value="1">Antarctica</option>
- <option value="1">Antigua and Barbuda</option>
- <option value="1">Argentina</option>
- <option value="1">Armenia</option>
- <option value="1">Aruba</option>
- <option value="1">Ashmore and Cartier Islands</option>
- <option value="1">Australia</option>
- <option value="1">Austria</option>
- <option value="1">Azerbaijan</option>
- <option value="1">Bahamas, The</option>
- <option value="1">Bahrain</option>
- <option value="1">Bangladesh</option>
- <option value="1">Barbados</option>
- <option value="1">Bassas da India</option>
- <option value="1">Belarus</option>
- <option value="1">Belgium</option>
- <option value="1">Belize</option>
- <option value="1">Benin</option>
- <option value="1">Bermuda</option>
- <option value="1">Bhutan</option>
- <option value="1">Bolivia</option>
- <option value="1">Bosnia and Herzegovina</option>
- <option value="1">Botswana</option>
- <option value="1">Bouvet Island</option>
- <option value="1">Brazil</option>
- <option value="1">British Indian Ocean Territory</option>
- <option value="1">British Virgin Islands</option>
- <option value="1">Brunei</option>
- <option value="1">Bulgaria</option>
- <option value="1">Burkina Faso</option>
- <option value="1">Burma</option>
- <option value="1">Burundi</option>
- <option value="1">Cambodia</option>
- <option value="1">Cameroon</option>
- <option value="1">Canada</option>
- <option value="1">Cape Verde</option>
- <option value="1">Cayman Islands</option>
- <option value="1">Central African Republic</option>
- <option value="1">Chad</option>
- <option value="1">Chile</option>
- <option value="1">China</option>
- <option value="1">Christmas Island</option>
- <option value="1">Clipperton Island</option>
- <option value="1">Cocos (Keeling) Islands</option>
- <option value="1">Colombia</option>
- <option value="1">Comoros</option>
- <option value="1">Congo, Democratic Republic of the</option>
- <option value="1">Congo, Republic of the</option>
- <option value="1">Cook Islands</option>
- <option value="1">Coral Sea Islands</option>
- <option value="1">Costa Rica</option>
- <option value="1">Cote d'Ivoire</option>
- <option value="1">Croatia</option>
- <option value="1">Cuba</option>
- <option value="1">Cyprus</option>
- <option value="1">Czech Republic</option>
- <option value="1">Denmark</option>
- <option value="1">Dhekelia</option>
- <option value="1">Djibouti</option>
- <option value="1">Dominica</option>
- <option value="1">Dominican Republic</option>
- <option value="1">Ecuador</option>
- <option value="1">Egypt</option>
- <option value="1">El Salvador</option>
- <option value="1">Equatorial Guinea</option>
- <option value="1">Eritrea</option>
- <option value="1">Estonia</option>
- <option value="1">Ethiopia</option>
- <option value="1">Europa Island</option>
- <option value="1">Falkland Islands (Islas Malvinas)</option>
- <option value="1">Faroe Islands</option>
- <option value="1">Fiji</option>
- <option value="1">Finland</option>
- <option value="1">France</option>
- <option value="1">French Guiana</option>
- </select>
- </div>
- <div class="selCont">
- <h2>Intelligent positioning</h2>
- <p>Stylish Select will always remain visible on the page.</p>
- <select id="my-dropdown4" name="my-dropdown">
- <optgroup label="Tool">
- <option value="1">Opiate</option>
- <option value="2">Undertow</option>
- <option value="3">Aenima</option>
- <option value="4">Lateralus</option>
- </optgroup>
- <optgroup label="A Tribe Called Quest">
- <option value="5">People's Instinctive Travels and the Paths of Rhythm</option>
- <option value="6">The Low End Theory</option>
- <option value="7" selected="selected">Midnight Marauders</option>
- <option value="8">Beats, Rhymes and Life</option>
- <option value="9">The Love Movement</option>
- </optgroup>
- </select>
- </div>
- <div class="selCont">
- <h2>Disabled Select</h2>
- <select disabled="disabled" id="my-dropdown7" name="my-dropdown">
- <option value="1">Opiate</option>
- <option value="2">Undertow</option>
- <option value="3">Aenima</option>
- <option value="4">Lateralus</option>
- <option value="9">The Love Movement</option>
- </select>
- </div>
- <div class="selCont">
- <h2>Disabled Options</h2>
- <select id="my-dropdown8" name="my-dropdown">
- <option value="1">Opiate</option>
- <option disabled="disabled" value="2">Undertow</option>
- <option value="3">Aenima</option>
- <option selected="selected" value="4">Lateralus</option>
- <option value="9">The Love Movement</option>
- </select>
- </div>
- <div class="selCont">
- <h2>Disabled Grouped options</h2>
- <select id="my-dropdown9" name="my-dropdown">
- <optgroup label="Tool" disabled="disabled">
- <option value="1">Opiate</option>
- <option value="2">Undertow</option>
- <option value="3">Aenima</option>
- <option value="4">Lateralus</option>
- </optgroup>
- <optgroup label="A Tribe Called Quest">
- <option value="5">People's Instinctive Travels and the Paths of Rhythm</option>
- <option value="6">The Low End Theory</option>
- <option value="7" selected="selected">Midnight Marauders</option>
- <option value="8">Beats, Rhymes and Life</option>
- <option value="9">The Love Movement</option>
- </optgroup>
- </select>
- </div>
- </form>
- </body>
-</html> \ No newline at end of file
diff --git a/library/stylish_select/jquery.stylish-select.js b/library/stylish_select/jquery.stylish-select.js
deleted file mode 100644
index 61a38ca8d..000000000
--- a/library/stylish_select/jquery.stylish-select.js
+++ /dev/null
@@ -1,492 +0,0 @@
-/**
-* Stylish Select 0.4.9 - jQuery plugin to replace a select drop down box with a stylable unordered list
-* http://github.com/scottdarby/Stylish-Select
-*
-* Requires: jQuery 1.3 or newer
-*
-* Contributions from Justin Beasley: http://www.harvest.org/
-* Anatoly Ressin: http://www.artazor.lv/ Wilfred Hughes: https://github.com/Wilfred
-* Grigory Zarubin: https://github.com/Craigy-
-*
-* Dual licensed under the MIT and GPL licenses.
-*/
-(function($){
- //add class to html tag
- $('html').addClass('stylish-select');
-
- //Cross-browser implementation of indexOf from MDN: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf
- if (!Array.prototype.indexOf){
- Array.prototype.indexOf = function(searchElement /*, fromIndex */){
- if (this === void 0 || this === null)
- throw new TypeError();
-
- var t = Object(this);
- var len = t.length >>> 0;
- if (len === 0)
- return -1;
-
- var n = 0;
- if (arguments.length > 0){
- n = Number(arguments[1]);
- if (n !== n) // shortcut for verifying if it's NaN
- n = 0;
- else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0))
- n = (n > 0 || -1) * Math.floor(Math.abs(n));
- }
-
- if (n >= len)
- return -1;
-
- var k = n >= 0
- ? n
- : Math.max(len - Math.abs(n), 0);
-
- for (; k < len; k++){
- if (k in t && t[k] === searchElement)
- return k;
- }
- return -1;
- };
- }
-
- //utility methods
- $.fn.extend({
- getSetSSValue: function(value){
- if (value){
- //set value and trigger change event
- $(this).val(value).change();
- return this;
- } else {
- return $(this).find(':selected').val();
- }
- },
- //added by Justin Beasley
- resetSS: function(){
- var oldOpts = $(this).data('ssOpts');
- $this = $(this);
- $this.next().remove();
- //unbind all events and redraw
- $this.unbind('.sSelect').sSelect(oldOpts);
- }
- });
-
- $.fn.sSelect = function(options){
- return this.each(function(){
- var defaults = {
- defaultText: 'Please select',
- animationSpeed: 0, //set speed of dropdown
- ddMaxHeight: '', //set css max-height value of dropdown
- containerClass: '' //additional classes for container div
- };
-
- //initial variables
- var opts = $.extend(defaults, options),
- $input = $(this),
- $containerDivText = $('<div class="selectedTxt"></div>'),
- $containerDiv = $('<div class="newListSelected ' + opts.containerClass + ($input.is(':disabled') ? ' newListDisabled' : '') + '"></div>'),
- $containerDivWrapper = $('<div class="SSContainerDivWrapper" style="visibility:hidden;"></div>'),
- $newUl = $('<ul class="newList"></ul>'),
- currentIndex = -1,
- prevIndex = -1,
- keys = [],
- prevKey = false,
- prevented = false,
- $newLi;
-
- //added by Justin Beasley
- $(this).data('ssOpts',options);
-
- if( $(this).next('.newListSelected').length ) {
- return;
- }
-
- //build new list
- $containerDiv.insertAfter($input);
- $containerDiv.attr("tabindex", $input.attr("tabindex") || "0");
- $containerDivText.prependTo($containerDiv);
- $newUl.appendTo($containerDiv);
- $newUl.wrap($containerDivWrapper);
- $containerDivWrapper = $newUl.parent();
- $input.hide();
-
- if($input.is(':disabled')){
- return;
- }
-
- //added by Justin Beasley (used for lists initialized while hidden)
- $containerDivText.data('ssReRender',!$containerDivText.is(':visible'));
-
- //add one item to list
- function addItem(item, container) {
- var option = $(item).text(),
- key = $(item).val(),
- isDisabled = $(item).is(':disabled');
-
- if (!isDisabled && !$(item).parents().is(':disabled')) {
- //add first letter of each word to array
- keys.push(option.charAt(0).toLowerCase());
- }
- container.append($('<li><a'+(isDisabled ? ' class="newListItemDisabled"' : '')+' href="JavaScript:void(0);">'+option+'</a></li>').data({
- 'key' : key,
- 'selected' : $(item).is(':selected')
- }));
- }
-
- $input.children().each(function(){
- if ($(this).is('option')){
- addItem(this, $newUl);
- } else {
- var optionTitle = $(this).attr('label'),
- $optGroup = $('<li class="newListOptionTitle ' + ($(this).is(':disabled') ? 'newListOptionDisabled' : '') + '">'+optionTitle+'</li>'),
- $optGroupList = $('<ul></ul>');
-
- $optGroup.appendTo($newUl);
- $optGroupList.appendTo($optGroup);
-
- $(this).children().each(function(){
- addItem(this, $optGroupList);
- });
- }
- });
-
- //cache list items object
- $newLi = $newUl.find('li a:not(.newListItemDisabled)').not(function(){
- return $(this).parents().hasClass('newListOptionDisabled');
- });
-
- //get selected item from new list (because it doesn't contain disabled options)
- $newLi.each(function(i){
- if ($(this).parent().data('selected')){
- opts.defaultText = $(this).html();
- currentIndex = prevIndex = i;
- }
- });
-
- //get heights of new elements for use later
- var newUlHeight = $newUl.height(),
- containerHeight = $containerDiv.height(),
- newLiLength = $newLi.length;
-
- //check if a value is selected
- if (currentIndex != -1){
- navigateList(currentIndex);
- } else {
- //set placeholder text
- $containerDivText.text(opts.defaultText);
- }
-
- //decide if to place the new list above or below the drop-down
- function newUlPos(){
- var containerPosY = $containerDiv.offset().top,
- docHeight = $(window).height(),
- scrollTop = $(window).scrollTop();
-
- //if height of list is greater then max height, set list height to max height value
- if (newUlHeight > parseInt(opts.ddMaxHeight)){
- newUlHeight = parseInt(opts.ddMaxHeight);
- }
-
- containerPosY = containerPosY-scrollTop;
- if (containerPosY+newUlHeight >= docHeight){
- $newUl.css({
- height: newUlHeight
- });
- $containerDivWrapper.css({
- top: '-'+newUlHeight+'px',
- height: newUlHeight
- });
- $input.onTop = true;
- } else {
- $newUl.css({
- height: newUlHeight
- });
- $containerDivWrapper.css({
- top: containerHeight+'px',
- height: newUlHeight
- });
- $input.onTop = false;
- }
- }
-
- //run function on page load
- newUlPos();
-
- //run function on browser window resize
- $(window).bind('resize.sSelect scroll.sSelect', newUlPos);
-
- //positioning
- function positionFix(){
- $containerDiv.css('position','relative');
- }
-
- function positionHideFix(){
- $containerDiv.css(
- {
- position: 'static'
- });
- }
-
- $containerDivText.bind('click.sSelect',function(event){
- event.stopPropagation();
-
- //added by Justin Beasley
- if($(this).data('ssReRender')){
- newUlHeight = $newUl.height('').height();
- $containerDivWrapper.height('');
- containerHeight = $containerDiv.height();
- $(this).data('ssReRender',false);
- newUlPos();
- }
-
- //hide all menus apart from this one
- $('.SSContainerDivWrapper')
- .not($(this).next())
- .hide()
- .parent()
- .css('position', 'static')
- .removeClass('newListSelFocus');
-
- //show/hide this menu
- $containerDivWrapper.toggle();
- positionFix();
-
- //scroll list to selected item
- if(currentIndex == -1) currentIndex = 0;
- try {
- $newLi.eq(currentIndex).focus();
- } catch(ex) {}
- });
-
- function closeDropDown(fireChange, resetText){
- if(fireChange == true){
- prevIndex = currentIndex;
- $input.change();
- }
-
- if(resetText == true){
- currentIndex = prevIndex;
- navigateList(currentIndex);
- }
-
- $containerDivWrapper.hide();
- positionHideFix();
- }
-
- $newLi.bind('click.sSelect',function(e){
- var $clickedLi = $(e.target);
-
- //update counter
- currentIndex = $newLi.index($clickedLi);
-
- //remove all hilites, then add hilite to selected item
- prevented = true;
- navigateList(currentIndex, true);
- closeDropDown();
- });
-
- $newLi.bind('mouseenter.sSelect',
- function(e){
- var $hoveredLi = $(e.target);
- $hoveredLi.addClass('newListHover');
- }).bind('mouseleave.sSelect',
- function(e){
- var $hoveredLi = $(e.target);
- $hoveredLi.removeClass('newListHover');
- });
-
- function navigateList(currentIndex, fireChange){
- if(currentIndex == -1){
- $containerDivText.text(opts.defaultText);
- $newLi.removeClass('hiLite');
- } else {
- $newLi.removeClass('hiLite')
- .eq(currentIndex)
- .addClass('hiLite');
-
- var text = $newLi.eq(currentIndex).text(),
- val = $newLi.eq(currentIndex).parent().data('key');
-
- try {
- $input.val(val);
- } catch(ex) {
- // handle ie6 exception
- $input[0].selectedIndex = currentIndex;
- }
-
- $containerDivText.text(text);
-
- //only fire change event if specified
- if(fireChange == true){
- prevIndex = currentIndex;
- $input.change();
- }
-
- if ($containerDivWrapper.is(':visible')){
- try {
- $newLi.eq(currentIndex).focus();
- } catch(ex) {}
- }
- }
- }
-
- $input.bind('change.sSelect',function(event){
- var $targetInput = $(event.target);
- //stop change function from firing
- if (prevented == true){
- prevented = false;
- return false;
- }
- var $currentOpt = $targetInput.find(':selected');
- currentIndex = $targetInput.find('option').index($currentOpt);
- navigateList(currentIndex);
- });
-
- //handle up and down keys
- function keyPress(element){
- //when keys are pressed
- $(element).unbind('keydown.sSelect').bind('keydown.sSelect',function(e){
- var keycode = e.which;
-
- //prevent change function from firing
- prevented = true;
-
- switch(keycode){
- case 40: //down
- case 39: //right
- incrementList();
- return false;
- break;
- case 38: //up
- case 37: //left
- decrementList();
- return false;
- break;
- case 33: //page up
- case 36: //home
- gotoFirst();
- return false;
- break;
- case 34: //page down
- case 35: //end
- gotoLast();
- return false;
- break;
- case 13: //enter
- case 27: //esc
- closeDropDown(true);
- return false;
- break;
- case 9: //tab
- closeDropDown(true);
- nextFormElement();
- return false;
- break;
- }
-
- //check for keyboard shortcuts
- keyPressed = String.fromCharCode(keycode).toLowerCase();
-
- var currentKeyIndex = keys.indexOf(keyPressed);
-
- if (typeof currentKeyIndex != 'undefined'){ //if key code found in array
- ++currentIndex;
- currentIndex = keys.indexOf(keyPressed, currentIndex); //search array from current index
-
- if (currentIndex == -1 || currentIndex == null || prevKey != keyPressed){
- // if no entry was found or new key pressed search from start of array
- currentIndex = keys.indexOf(keyPressed);
- }
-
- navigateList(currentIndex);
- //store last key pressed
- prevKey = keyPressed;
- return false;
- }
- });
- }
-
- function incrementList(){
- if (currentIndex < (newLiLength-1)){
- ++currentIndex;
- navigateList(currentIndex);
- }
- }
-
- function decrementList(){
- if (currentIndex > 0){
- --currentIndex;
- navigateList(currentIndex);
- }
- }
-
- function gotoFirst(){
- currentIndex = 0;
- navigateList(currentIndex);
- }
-
- function gotoLast(){
- currentIndex = newLiLength-1;
- navigateList(currentIndex);
- }
-
- $containerDiv.bind('click.sSelect',function(e){
- e.stopPropagation();
- keyPress(this);
- });
-
- $containerDiv.bind('focus.sSelect',function(){
- $(this).addClass('newListSelFocus');
- keyPress(this);
- });
-
- $containerDiv.bind('blur.sSelect',function(){
- $(this).removeClass('newListSelFocus');
- });
-
- //hide list on blur
- $(document).bind('click.sSelect',function(){
- $containerDiv.removeClass('newListSelFocus');
- if ($containerDivWrapper.is(':visible')){
- closeDropDown(false, true);
- } else {
- closeDropDown(false);
- }
- });
-
- //select next form element in document
- function nextFormElement() {
- var fields = $('body').find('button,input,textarea,select'),
- index = fields.index($input);
- if (index > -1 && (index + 1) < fields.length) {
- fields.eq(index + 1).focus();
- }
- return false;
- }
- // handle focus on original select element
- $input.focus(function(){
- $input.next().focus();
- });
-
- //add classes on hover
- $containerDivText.bind('mouseenter.sSelect',
- function(e){
- var $hoveredTxt = $(e.target);
- $hoveredTxt.parent().addClass('newListSelHover');
- }).bind('mouseleave.sSelect',
- function(e){
- var $hoveredTxt = $(e.target);
- $hoveredTxt.parent().removeClass('newListSelHover');
- });
-
- //reset left property and hide
- $containerDivWrapper.css({
- left: '0',
- display: 'none',
- visibility: 'visible'
- });
-
- });
-
- };
-
-})(jQuery); \ No newline at end of file
diff --git a/library/stylish_select/select-bg.png b/library/stylish_select/select-bg.png
deleted file mode 100755
index 151eda726..000000000
--- a/library/stylish_select/select-bg.png
+++ /dev/null
Binary files differ
diff --git a/library/stylish_select/stylish-select.css b/library/stylish_select/stylish-select.css
deleted file mode 100644
index 1f3dcd28d..000000000
--- a/library/stylish_select/stylish-select.css
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
-* Stylish Select 0.4.9 - $ plugin to replace a select drop down box with a stylable unordered list
-* http://github.com/scottdarby/Stylish-Select/
-*
-* Copyright (c) 2009 Scott Darby
-*
-* Requires: jQuery 1.3 or newer
-*
-* Dual licensed under the MIT and GPL licenses.
-*/
-
-/**
-* Hide lists on page load
----------------------------------------------------------*/
-
-.stylish-select .SSContainerDivWrapper {
- left:-9999px;
-}
-
-/*
-* Red example
----------------------------------------------------------*/
-.stylish-select .SSContainerDivWrapper {
- margin:0;
- padding:0;
- width:290px;
- position:absolute;
- top:22px;
- left:0;
- z-index:2;
-}
-
-.stylish-select ul.newList {
- margin:0;
- padding:0;
- list-style:none;
- color:#000;
- background:#fff;
- border:1px solid #ccc;
- overflow:auto;
-}
-
-.stylish-select ul.newList * {
- margin:0;
- padding:0;
-}
-
-
-.stylish-select ul.newList a {
- color: #000;
- text-decoration:none;
- display:block;
- padding:3px 8px;
-}
-
-.stylish-select .newListSelected {
- width:285px;
- color:#000;
- height:19px;
- padding:3px 0 0 6px;
- float:left;
- background:url(select-bg.png) no-repeat;
-}
-
-.stylish-select ul.newList li a:focus {
- -moz-outline-style: none;
-}
-
-.stylish-select .selectedTxt {
- width:258px;
- overflow:hidden;
- height:16px;
- padding:0 23px 0 0;
-}
-
-.stylish-select .hiLite {
- background:#650101!important;
- color:#fff!important;
-}
-
-.stylish-select .newListHover {
- background:#ccc!important;
- color:#000!important;
- cursor:default;
-}
-
-.stylish-select .newListDisabled {
- opacity: 0.6;
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";
- filter: alpha(opacity=60);
-}
-
-.stylish-select .newListItemDisabled {
- opacity: 0.6;
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";
- filter: alpha(opacity=60);
-}
-
-.stylish-select .newListOptionDisabled {
- opacity: 0.6;
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";
- filter: alpha(opacity=60);
-}
-
-.stylish-select .newListSelHover,
-.stylish-select .newListSelFocus {
- background-position:0 -22px;
- cursor:default;
-}
-
-.stylish-select .newListOptionTitle {
- font-weight:bold;
-}
-
-.stylish-select .newListOptionTitle ul {
- margin:3px 0 0;
-}
-
-.stylish-select .newListOptionTitle li {
- font-weight:normal;
-} \ No newline at end of file
diff --git a/library/tinymce/changelog.txt b/library/tinymce/changelog.txt
deleted file mode 100644
index 7285b7424..000000000
--- a/library/tinymce/changelog.txt
+++ /dev/null
@@ -1,1562 +0,0 @@
-Version 3.5.0.1 (2012-05-10)
- Fixed bug where selection normalization logic would break the selections of parent elements using the element path.
- Fixed bug where the autolink plugin would include trailing dots in domain names in the link creation.
- Fixed bug where the autolink plugin would produce an error on older IE versions when pressing enter.
- Fixed bug where old IE versions would throw an error during initialization when the editor was placed in an size restricted div.
-Version 3.5 (2012-05-03)
- Fixed menu rendering issue if the document was in rtl mode.
- Fixed bug where the hide function would throw an error about a missing variable.
- Fixed bug where autolink wouldn't convert URLs when hitting enter on IE due to the new enter key logic.
- Fixed bug where formatting using shortcuts like ctrl+b wouldn't work properly the first time.
- Fixed bug where selection.setContent after a formatter call wouldn't generate formatted contents.
- Fixed bug where whitespace would be removed before/after invalid_elements when they where removed.
- Fixed bug where updating styles using the theme image dialog in non inline mode on IE9 would produce errors.
- Fixed bug where IE 8 would produce an error when using the contextmenu plugin.
- Fixed bug where delete/backspace could remove contents of noneditable elements.
- Fixed so background color in style preview gets computed from body element if the current style element is transparent.
-Version 3.5b3 (2012-03-29)
- Added cancel button to colour picker dialog.
- Added figure and figcaption to the html5 visualblocks plugin.
- Added default alignment options for the figure element.
- Fixed bug where empty inline elements within block elements would sometimes produce a br child element.
- Fixed bug where urls pointing to the same domain as the current one would cause undefined errors. Patch contributed by Paul Giberson.
- Fixed bug where enter inside an editable element inside an non editable element would split the element.
- Fixed bug where cut/copy/paste of noneditable elements didn't work.
- Fixed bug where backspace would sometimes produce font elements on WebKit.
- Fixed bug where WebKit would produce spans out of various inline elements when using backspace.
- Fixed bug where IE9 wouldn't properly update image styles when images where resized.
- Fixed bug where drag/drop of noneditable elements didn't work correctly.
- Fixed bug where applying formatting to all contents wouldn't work correctly when an end point was inside an empty bock. Patch contributed by Jose Luiz.
- Fixed bug where IE10 removed the scopeName from the DOM element interface and there for it produced an undefined string in element path.
- Fixed bug where the caret would be placed at an incorrect location if you applied block formatting while having the caret at the end of the block.
- Fixed bug where applying column changes using the cell dialog would only update the first column. Patch contributed by krzyko.
- Fixed bug where the visualblocks plugin would force editor focus if it was turned on by default.
- Fixed bug where the tabfocus plugin would tab to iframes these are now ignored.
- Fixed bug where format drop down list wouldn't show the currently active format for a parent element.
- Fixed bug where paste of plain text in IE 9 would remove the new line characters from text.
- Fixed bug where the menu buttons/split button menus wouldn't be opened at the right location on older IE versions.
- Fixed bug where Gecko browsers wouldn't properly display the right format when having the selection as specific places.
- Fixed bug where shift+enter inside the body when having forced_root_blocks set to false would throw an error.
- Fixed bug where the jQuery plugin would break the attr method of jQuery 1.7.2. Patch contributed by Markus Kemmerling.
- Fixed so options like content_css accepts and array as well as a comma separated string as input.
- Restructured the internal logic to make it more separate from Editor.js.
- Updated the Sizzle engine to the latest version.
-Version 3.5b2 (2012-03-15)
- Rewrote the enter key logic to normalize browser behavior.
- Fixed so enter within PRE elements produces a BR and shift+enter breaks/end the PRE. Can be disabled using the br_in_pre option.
- Fixed bug where the selection wouldn't be correct after applying formatting and having the caret at the end of the new format node.
- Fixed bug where the noneditable plugin would process contents on raw input calls for example on undo/redo calls.
- Fixed bug where WebKit could produce an exception when a bookmark was requested when there wasn't a proper selection.
- Fixed bug where WebKit would fail to open the image dialog since it would be returning false for a class name instead of a string.
- Fixed so alignment and indentation works properly when forced_root_blocks is set to false. It will produce a DIV by default.
-Version 3.5b1 (2012-03-08)
- Added new event class that is faster and enables support for faking events.
- Added new self_closing_elements, short_ended_elements, boolean_attributes, non_empty_elements and block_elements options to control the HTML Schema.
- Added new schema option and support for the HTML5 schema.
- Added new visualblocks plugin that shows html5 blocks with visual borders.
- Added new types and selector options to make it easier to create editor instances with different configs.
- Added new preview of formatting options in various listboxes.
- Added new preview_styles option that enables control over what gets previewed.
- Fixed bug where content css would be loaded twice into iframe.
- Fixed bug where start elements with only whitespace in the attribute part wouldn't be correctly parsed.
- Fixed bug where the advlink dialog would produce an error about the addSelectAccessibility function not being defined.
- Fixed bug where the caret would be placed at an incorrect position if span was removed by the invalid_elements setting.
- Fixed bug where elements inside a white space preserve element like pre didn't inherit the behavior while parsing.
-Version 3.4.9 (2012-02-23)
- Added settings to wordcount plugin to configure update rate and checking wordcount on backspace and delete using wordcount_update_rate and wordcount_update_on_delete.
- Fixed bug in Webkit and IE where deleting empty paragraphs would remove entire editor contents.
- Fixed bug where pressing enter on end of list item with a heading would create a new item with heading.
- Fixed edit css style dialog text-decoration none checkbox so it disables other text-decoration options when enabled.
- Fixed bug in Gecko where undo wasn't added when focus was lost.
- Fixed bug in Gecko where shift-enter in table cell ending with BR doesn't move caret to new line.
- Fixed bug where right-click on formatted text in IE selected the entire line.
- Fixed bug where text ending with space could not be unformatted in IE.
- Fixed bug where caret formatting would be removed when moving the caret when a selector expression was used.
- Fixed bug where formatting would be applied to the body element when all contents where selected and format had both inline and selector parts.
- Fixed bug where the media plugin would throw errors if you had iframe set as an invalid element in config.
- Fixed bug where the caret would be placed at the top of the document if you inserted a table and undo:ed that operation. Patch contributed by Wesley Walser.
- Fixed bug where content css files where loaded twice into the iframe.
- Fixed so elements with comments would be trated as non empty elements. Patch contributed by Arjan Scherpenisse.
-Version 3.4.8 (2012-02-02)
- Fixed bug in IE where selected text ending with space cannot be formatted then formatted again to get original text.
- Fixed bug in IE where images larger than editor area were being deselected when toolbar buttons are clicked.
- Fixed bug where wrong text align buttons are active when multiple block elements are selected.
- Fixed bug where selected link not showing in target field of link dialog in some selection cases.
- Use settings for remove_trailing_br so this can be turned off instead of hard coding the value.
- Fixed bug in IE where the media plugin displayed null text when some values aren't filled in.
- Added API method 'onSetAttrib' that fires when the attribute value on a node changes.
- Fix font size dropdown value not being updated when text already has a font size in the advanced template.
- Fixed bug in IE where IE doesn't use ARIA attributes properly on options - causing labels to be read out 2 times.
- Fixed bug where caret cannot be placed after table if table is at end of document in IE.
- Fixed bug where adding range isn't always successful so we need to check range count otherwise an exception can occur.
- Added spacebar onclick handler to toolbar buttons to ensure that the accessibility behaviour works correctly.
- Fixed bug where a stranded bullet point would get created in WebKit.
- Fixed bug where selecting text in a blockquote and pressing backspace toggles the style.
- Fixed bug where pressing enter from a heading in IE, the resulting P tag below it shares the style property.
- Fix white space in between spans from being deleted.
- Fixed bug where scrollbars where visible in the character map dialog on Gecko.
- Fixed issue with missing translation for one of the emoticons.
- Fixed bug where dots in id:s where causing problems. Patch provided by Abhishek Dev.
- Fixed bug where urls with an at sign in the path wouldn't be parsed correctly. Patch contributed by Jason Grout.
- Fixed bug where Opera would remove the first character of a inline formatted word if you pressed backspace.
- Fixed bugs with the autoresize plugin on various browsers and removed the need for the throbber.
- Fixed performance issue where the contextmenu plugin would try to remove the menu even if it was removed. Patch contributed by mhu.
-Version 3.4.7 (2011-11-03)
- Modified the caret formatting behavior to word similar to common desktop wordprocessors like Word or Libre Office.
- Fixed bug in Webkit - Cursor positioning does not work vertically within a table cell with multiple lines of text.
- Fixed bug in IE where Inserting a table in IE8 places cursor in the second cell of the first row.
- Fixed bug in IE where editor in a frame doesn't give focus to the toolbar using ALT-F10.
- Fix for webkit and gecko so that deleting bullet from start of list outdents inner list items and moves first item into paragraph.
- Fix new list items in IE8 not displayed on a new line when list contains nested list items.
- Clear formatting in table cell breaks the cell.
- Made media type list localisable.
- Fix out of memory error when using prototype in media dialog.
- Fixed bug where could not add a space in the middle of a th cell.
- Fixed bug where adding a bullet between two existing bullets adds an extra one
- Fixed bug where trying to insert a new entry midway through a bulleted list fails dismally when the next entry is tabbed in.
- Fixed bug where pressing enter on an empty list item does not outdent properly in FF
- Fixed bug where adding a heading after a list item in a table cell changes all styles in that cell
- Fixed bug where hitting enter to exit from a bullet list moves cursor to the top of the page in Firefox.
- Fixed bug where pressing backspace would not delete HRs in Firefox and IE when next to an empty paragraph.
- Fixed bug where deleting part of the link text can cause a link with no destination to be saved.
- Fixed bug where css style border widths wasn't handled correctly in table dialog.
- Fixed bug where parsing invalid html contents on IE or WebKit could produce an infinite loop.
- Fixed bug where scripts with custom script types wasn't properly passed though the editor.
- Fixed issue where some Japanese kanji characters wasn't properly entity encoded when numeric entity mode was enabled.
- Made emoticons dialog use the keyboard naviation.
- Added navigation instructions to the symbols dialog.
- Added ability to set default values for the media plugin.
- Added new font_size_legacy_values option for converting old font element sizes to span with font-size properties.
- Fixed bug where the symbols dialog was not accessible.
- Added quirk for IE ensuring that the body of the document containing tinyMCE has a role="application" for accessibility.
- Fixed bug where the advanced color picker wasn't working properly on FF 7.
- Fixed issue where the advanced color picker was producing uppercase hex codes.
- Fixed bug where IE 8 could throw exceptions if the contents contained resizable content elements.
- Fixed bug where caret formatting wouldn't be correctly applied to previous sibling on WebKit.
- Fixed bug where the select boxes for font size/family would loose it's value on WebKit due to recent iOS fixes.
-Version 3.4.6 (2011-09-29)
- Fixed bug where list items were being created for empty divs.
- Added support in Media plugin for audio media using the embed tag
- Fixed accessibility bugs in WebKit and IE8 where toolbar items were not being read.
- Added new use_accessible_selects option to ensure accessible list boxes are used in all browsers (custom widget in firefox native on other browsers)
- Fixed bug where classid attribute was not being checked from embed objects.
- Fixed bug in jsrobot tests with intermittently failing.
- Fixed bug where anchors wasn't updated properly if you edited them using IE 8.
- Fixed bug where input method on WebKit on Mac OS X would fail to initialize when sometimes focusing the editor.
- Fixed bug where it wasn't possible to select HR elements on WebKit by simply clicking on them.
- Fixed bug where the media plugin wouldn't work on IE9 when not using the inlinepopups plugin.
- Fixed bug where hspace,vspace,align and bgcolor would be removed from object elements in the media plugin.
- Fixed bug where the new youtube format wouldn't be properly parsed by the media plugin.
- Fixed bug where the style attribute of layers wasn't properly updated on IE and Gecko.
- Fixed bug where editing contents in a layer would fail on Gecko since contentEditable doesn't inherit properly.
- Fixed bug where IE 6/7 would produce JS errors when serializing contents containing layers.
-Version 3.4.5 (2011-09-06)
- Fixed accessibility bug in WebKit where the right and left arrow keys would update native list boxes.
- Added new whitespace_elements option to enable users to specify specific elements where the whitespace is preserved.
- Added new merge_siblings option to formats. This option makes it possible to disable the auto merging of siblings when applying formats.
- Fixed bug in IE where trailing comma in paste plugin would cause plugin to not run correctly.
- Fixed bug in WebKit where console messages would be logged when deleting an empty document.
- Fixed bug in IE8 where caret positioned is on list item instead of paragraph when outdent splits the list
- Fixed bug with image dialogs not inserting an image if id was omitted from valid_elements.
- Fixed bug where the selection normalization logic wouldn't properly handle image elements in specific config cases.
- Fixed bug where the map elements coords attribute would be messed up by IE when serializing the DOM.
- Fixed bug where IE wouldn't properly handle custom elements when the contents was serialized.
- Fixed bug where you couldn't move the caret in Gecko if you focused the editor using the API or a UI control.
- Fixed bug where adjacent links would get merged on IE due to bugs in their link command.
- Fixed bug where the color split buttons would loose the selection on IE if the editor was placed in a frame/iframe.
- Fixed bug where floated images in WebKit wouldn't get properly linked.
- Fixed bug where the fullscreen mode in a separate window wasn't forced into IE9+ standards mode.
- Fixed bug where pressing enter in an empty editor on WebKit could produce DIV elements instead of P.
- Fixed bug where spans would get removed incorrectly when merging two blocks on backspace/delete on WebKit.
- Fixed bug where the editor contents wouldn't be completely removed on backspace/delete on WebKit.
- Fixed bug where the fullpage plugin wouldn't properly render style elements in the head on IE 6/7.
- Fixed bug where the nonbreaking_force_tab option in the nonbreaking plugin wouldn't work on Gecko/WebKit.
- Fixed bug where the isDirty state would become true on non IE browsers if there was an table at the end of the contents.
- Fixed bug where entities wasn't properly encoded on WebKit when pasting text as plain text.
- Fixed bug where empty editors would produce an exception of valid_elements didn't include body and forced_root_blocks where disabled.
- Fixed bug where the fullscreen mode wouldn't retain the header/footer in the fullpage plugin.
- Fixed issue where the plaintext_mode and plaintext_mode_sticky language keys where swapped.
-Version 3.4.4 (2011-08-04)
- Added new html5 audio support. Patch contributed by Ronald M. Clifford.
- Added mute option for video elements and preload options for video/audio patch contributed by Dmitry Kalinkin.
- Fixed selection to match visual selection before applying formatting changes.
- Fixed browser specific bugs in lists for WebKit and IE.
- Fixed bug where IE would scroll the window if you closed an inline dialog that was larger than the viewport. Patch by Laurence Keijmel.
- Fixed bug where pasting contents near a span element could remove parts of that span. Patch contributed by Wesley Walser.
- Fixed bug where formatting change would be lost after pressing enter.
- Fixed bug in WebKit where deleting across blocks would add extra styles.
- Fixed bug where moving cursor vertically in tables in WebKit wasn't working.
- Fixed bug in IE where deleting would cause error in console.
- Fixed bug where the formatter was not applying formats across list elements.
- Fixed bug where the wordcount plugin would try and update the wordcount if tinymce had been destroyed.
- Fixed bug where tabfocus plugin would attempt to focus elements not displayed when their parent element was hidden.
- Fixed bug where the contentEditable state would sometimes be removed if you deleted contents in Gecko.
- Fixed bug where inserting contents using mceInsertContent would fail if "span" was disabled in valid_elements.
- Fixed bug where initialization might fail if some resource on gecko wouldn't load properly and fire the onload event.
- Fixed bug where ctrl+7/8/9 keys wouldn't properly add the specific formats associated with them.
- Fixed bug where the HTML tags wasn't properly closed in the style plugins properties dialog.
- Fixed bug where the list plugin would produce an exception if the user tried to delete an element at the very first location.
-Version 3.4.3.2 (2011-06-30)
- Fixed bug where deleting all of a paragraph inside a table cell would behave badly in webkit.
- Fixed bugs in tests in firefox5 and WebKit.
- Fixed bug where selection of table cells would produce an exception on Gecko.
- Fixed bug where the caret wasn't properly rendered on Gecko when the editor was hidden.
- Fixed bug where pasting plain text into WebKit would produce a pre element it will now produce more semantic markup.
- Fixed bug where selecting list type formats using the advlist plugin on IE8 would loose editor selection.
- Fixed bug where forced root blocks logic wouldn't properly pad elements created if they contained data attributes.
- Fixed bug where it would remove all contents of the editor if you inserted an image when not having a caret in the document.
- Fixed bug where the YUI compressor wouldn't properly encode strings with only a quote in them.
- Fixed bug where WebKit on iOS5 wouldn't call nodeChanged when the selection was changed.
- Fixed bug where mceFocus command wouldn't work properly on Gecko since it didn't focus the body element.
- Fixed performance issue with the noneditable plugin where it would enable/disable controls to often.
-Version 3.4.3.1 (2011-06-16)
- Fixed bug where listboxes were not being handled correctly by JAWS in firefox with the o2k7 skin.
- Fixed bug where custom buttons were not being rendered correctly when in high contrast mode.
- Added support for iOS 5 that now supporting contentEditable in it's latest beta.
- Fixed bug where urls in style attributes with a _ character followed by a number would cause incorrect output.
- Fixed bug where custom_elements option wasn't working properly on IE browsers.
- Fixed bug where custom_elements marked as block elements wouldn't get correctly treated as block elements.
- Fixed bug where attributes with </> wasn't properly encoded as XML entities.
-Version 3.4.3 (2011-06-09)
- Fixed bug where deleting backwards before an image into a list would put the cursor in the wrong location.
- Fixed bug where styles plugin would not apply styles across multiple selected block elements correctly.
- Fixed bug where cursor would jump to start of document when selection contained empty table cells in IE8.
- Fixed bug where applied styles wouldn't be kept if you pressed enter twice to produce two paragraphs.
- Fixed bug where a ghost like caret would appear on Gecko when pressing enter while having a text color applied.
- Fixed bug where IE would produce absolute urls if you inserted a image/link and reloaded the page.
- Fixed bug where applying a heading style to a list item would cascade style to children list items.
- Fixed bug where Editor loses focus when backspacing and changing styles in WebKit.
- Fixed bug where exception was thrown in tinymce.util.URI when parsing a relative URI and no base_uri setting was provided.
- Fixed bug where alt-f10 was not always giving focus to the toolbar on Safari.
- Added new 'allow_html_in_named_anchor' option to allow html to occur within a named anchor tag. Use at own risk.
- Added plugin dependency support. Will autoload plugins specified as a dependency if they haven't been loaded.
- Fixed bug where the autolink plugin didn't work with non-English keyboards when pressing ).
- Added possibility to change properties of all table cells in a column.
- Added external_image_list option to get images list from user-defined variable or function.
- Fixed bug where the autoresize plugin wouldn't reduce the editors height on Chrome.
- Fixed bug where table size inputs were to small for values with size units.
- Fixed bug where table cell/row size input values were not validated.
- Fixed bug where menu item line-height would be set to wrong value by external styles.
- Fixed bug where hasUndo() would return wrong answer.
- Fixed bug where page title would be set to undefined by fullpage plugin.
- Fixed bug where HTML5 video properties were not updated in embedded media settings.
- Fixed bug where HTML comment on the first line would cause an error.
- Fixed bug where spellchecker menu was positioned incorrectly on IE.
- Fixed bug where breaking out of list elements on WebKit would produce a DIV instead of P after the list.
- Fixed bug where pasting from Word in IE9 would add extra BR elements when text was word wrapped.
- Fixed bug where numeric entities with leading zeros would produce incorrect decoding.
- Fixed bug where hexadecimal entities wasn't properly decoded.
- Fixed bug where bookmarks wasn't properly stored/restored on undo/redo.
- Fixed bug where the mceInsertCommand didn't retain the values of links if they contained non url contents.
- Fixed bug where the valid_styles option wouldn't be properly used on styles for specific elements.
- Fixed so contentEditable is used for the body of the editor if it's supported.
- Fixed so trailing BR elements gets removed even when forced_root_blocks option was set to false/null.
- Fixed performance issue with mceInsertCommand and inserting very simple contents.
- Fixed performance issue with older IE version and huge documents by optimizing the forced root blocks logic.
- Fixed performance issue with table plugin where it checked for selected cells to often.
- Fixed bug where creating a link on centered/floated image would produce an error on WebKit browsers.
- Fixed bug where Gecko would remove single paragraphs if there where contents before/after it.
- Fixed bug where the scrollbar would move up/down when pasting contents using the paste plugin.
-Version 3.4.2 (2011-04-07)
- Added new 'paste_text_sticky_default' option to paste plugin, enables you to set the default state for paste as plain text.
- Added new autoresize_bottom_margin option to autoresize plugin that enables you to add an extra margin at the bottom. Patch contributed by Andrew Ozz.
- Rewritten the fullpage plugin to handle style contents better and have a more normalized behavior across browsers.
- Fixed bug where contents inserted with mceInsertContent wasn't parsed using the default dom parser.
- Fixed bug where blocks containing a single anchor element would be treated as empty.
- Fixed bug where merging of table cells on IE 6, 7 wouldn't look correctly until the contents was refreshed.
- Fixed bug where context menu wouldn't work properly on Safari since it was passing out the ctrl key as pressed.
- Fixed bug where image border color/style values were overwritten by advimage plugin.
- Fixed bug where setting border in advimage plugin would throw error in IE.
- Fixed bug where empty anchors list in link settings wasn't hidden.
- Fixed bug where xhtmlextras popups were missing localized popup-size parameters.
- Fixed bug where the context menu wouldn't select images on WebKit browsers.
- Fixed bug where paste plugin wouldn't properly extract the contents on WebKit due to recent changes in browser behavior.
- Fixed bug where focus of the editor would get on control contents on IE lost due to a bug in the ColorSplitButton control.
- Fixed bug where contextmenu wasn't disabled on noneditable elements.
- Fixed bug where getStyle function would trigger error when called on element without style property.
- Fixed bug where editor fail to load if Javascript Compressor was used.
- Fixed bug where list-style-type=lower-greek would produce errors in IE<8.
- Fixed bug where spellchecker plugin would produce errors on IE6-7.
- Fixed bug where theme_advanced_containers configuration option causes error.
- Fixed bug where the mceReplaceContent command would produce an error since it didn't correctly handle a return value.
- Fixed bug where you couldn't enter float point values for em in dialog input fields since it wouldn't be considered a valid size.
- Fixed bug in xhtmlxtras plugin where it wasn't possible to remove some attributes in the attributes dialog.
-Version 3.4.1 (2011-03-24)
- Added significantly improved list handling via the new 'lists' plugin.
- Added 'autolink' plugin to enable automatically linking URLs. Similar to the behavior IE has by default.
- Added 'theme_advanced_show_current_color' setting to enable the forecolor and backcolor buttons to continuously show the current text color.
- Added 'contextmenu_never_use_native' setting to disable the ctrl-right-click showing the native browser context menu behaviour.
- Added 'paste_enable_default_filters' setting to enable the default paste filters to be disabled.
- Fixed bug where selection locations on undo/redo didn't work correctly on specific contents.
- Fixed bug where an exception would be trown on IE when loading TinyMCE inside an iframe.
- Fixed bug where some ascii numeric entities wasn't properly decoded.
- Fixed bug where some non western language codes wasn't properly decoded/encoded.
- Fixed bug where undo levels wasn't created when deleting contents on IE.
- Fixed bug where the initial undo levels bookmark wasn't updated correctly.
- Fixed bug where search/replace wouldn't be scoped to editor instances on IE8.
- Fixed bug where IE9 would produce two br elements after block elements when pasting.
- Fixed bug where IE would place the caret at an incorrect position after a paste operation.
- Fixed bug where a paste operation using the keyboard would add an extra undo level.
- Fixed bug where some attributes/elements wasn't correctly filtered when invalid contents was inserted.
- Fixed bug where the table plugin couldn't correctly handle invalid table structures.
- Fixed bug where charset and title of the page were handled incorrectly by the fullpage plugin.
- Fixed bug where toggle states on some of the list boxes didn't update correctly.
- Fixed bug where sub/sub wouldn't work correctly when done as a caret action in Chrome 10.
- Fixed bug where the constrain proportions checkbox wouldn't work in the media plugin.
- Fixed bug where block elements containing trailing br elements wouldn't treated properly if they where invalid.
- Fixed bug where the color picker dialog wouldn't be rendered correctly when using the o2k7 theme.
- Fixed bug where setting border=0 using advimage plugin invalid style attribute content was created in Chrome.
- Fixed bug with references to non-existing images in css of fullpage plugin.
- Fixed bug where item could be unselected in spellchecker's language selector.
- Fixed bug where some mispelled words could be not highlighted using spellchecker plugin.
- Fixed bug where spellchecking would merge some words on IE.
- Fixed bug where spellchecker context menu was not always positioned correctly.
- Fixed bug with empty anchors list in advlink popup when Invisible Elements feature was disabled.
- Fixed bug where older IE versions wouldn't properly handle some elements if they where placed at the top of editor contents.
- Fixed bug where selecting the whole table would enable table tools for cells and rows.
- Fixed bug where it wasn't possible to replace selected contents on IE when pasting using the paste plugin.
- Fixed bug where setting text color in fullpage plugin doesn't work.
- Fixed bug where the state of checkboxes in media plugin wouldn't be set correctly.
- Fixed bug where black spade suit character was not included in special character selector.
- Fixed bug where setting invalid values for table cell size would throw an error in IE.
- Fixed bug where spellchecking would remove whitespace characters from PRE block in IE.
- Fixed bug where HR was inserted inside P elements instead of splitting them.
- Fixed bug where extra, empty span tags were added when using a format with both selector and inline modes.
- Fixed bug where bullet lists weren't always detected correctly.
- Fixed bug where deleting some paragraphs on IE would cause an exception.
- Fixed bug where the json encoder logic wouldn't properly encode \ characters.
- Fixed bug where the onChange event would be fired when the editor was first initialized.
- Fixed bug where mceSelected wouldn't be removed properly from output even if it's an internal class.
- Fixed issue with table background colors not being transparent. This improves compliance with users browser color preferences.
- Fixed issue where styles were not included when using the full page plugin.
- Fixed issue where drag/drop operations wasn't properly added to the undo levels.
- Fixed issue where colors wasn't correctly applied to elements with underline decoration.
- Fixed issue where deleting some paragraphs on IE would cause an exception.
-Version 3.4 (2011-03-10)
- Added accessibility example with various accessibility options contributed by Ephox.
- Fixed bug where attributes wasn't properly handled in the xhtmlxtras plugin.
- Fixed bug where the image.htm had some strange td artifacts probably due to auto merging.
- Fixed bug where the ToolbarGroup had an missing reference to this in it's destroy method.
- Fixed bug with the resizeBy function in the advanced theme where it was scaled by the wrong parent.
- Fixed bug where an exception would be thrown by the element if the page was served in xhtml mode.
- Fixed bug where mceInsertContent would throw an exception when page was served in xhtml mode.
- Fixed bug where you couldn't select a forground/background color when page was served in xhtml mode.
- Fixed bug where the editor would scroll to the toolbar when clicked due to a call to focus in ListBox.
- Fixed bug where pages with rtl dir wouldn't render split buttons correctly when using the o2k7 theme.
- Fixed bug where anchor elements with names wasn't properly collapsed as they where in 3.3.x.
- Fixed bug where WebKit wouldn't properly handle image selection if it was done left to right.
- Fixed bug where the formatter would align images when the selection range was collapsed.
- Fixed bug where the image button would be active when the selection range was collapsed.
- Fixed bug where the element_format option wasn't used by the new (X)HTML serializer logic.
- Fixed bug where the table cell/row dialogs would produce empty attributes.
- Fixed bug where the tfoot wouldn't be added to the top of the table.
- Fixed bug where the formatter would merge siblings with white space between them.
- Fixed bug where pasting headers and paragraphs would produce an extra paragraph.
- Fixed bug where the ColorSplitButton would throw an exception if you clicked out side a color.
- Fixed bug where IE9 wouldn't properly produce new paragraphs on enter if the current paragraph had formatting.
- Fixed bug where multiple BR elements at end of block elements where removed.
- Fixed bug where fullscreen plugin wouldn't correctly display the edit area on IE6 for long pages.
- Fixed bug where paste plugin wouldn't properly encode raw entities when pasting in plain text mode.
- Fixed bug where the search/replace plugin wouldn't work correctly on IE 9.
- Fixed so the drop menus doesn't get an outline border visible when focused, patch contributed by Ephox.
- Fixed so the values entered in the color picker are forced to hex values.
- Removed dialog workaround for IE 9 beta since the RC is now out and people should upgrade.
- Removed obsolete calls in various plugins to the mceBeginUndoLevel command.
-Version 3.4b3 (2011-02-10)
- Added WAI-ARIA support for the main UI and dialogs this feature was contributed by Ephox.
- Added iframe support to media plugin in order to handle the new YouTube HTML5 video formats.
- Fixed bug where anchors would wrap the text contents after it due to a bug in the DomParser logic.
- Fixed bug where the selected state wouldn't be removed on ListBox controls when a menu item was selected.
- Fixed bug where IE could throw an unspecified error exception when the getBookmark logic was executed.
- Fixed bug where IE would throw an invalid argument error when focus was applied to an empty editor instance.
- Fixed bug where applying inline format wouldn't work if the start cell in the selection was empty.
- Fixed bug where auto detection logic for YouTube and Google Video wouldn't work in the new media plugin.
- Fixed bug where td elements would get a colspan/rowspan of 1 when created by the table plugin.
- Fixed bug where removal/padding of empty elements wasn't handled correctly.
- Fixed bug where internal elements would show up in element path.
- Fixed bug where internal elements would get serialized as valid output.
- Fixed bug where color wasn't correctly applied to anchor elements.
- Fixed bug where float option in the style plugin dialog wouldn't be handled correctly on WebKit.
- Fixed bug where the tinymce.dom.TreeWalker prev function wouldn't walk the DOM correctly.
- Fixed bug where mceInsertContent command could produce empty block elements after the inserted content.
- Fixed bug where mceInsertContent command wouldn't apply visual aids on tables and similar elements.
- Fixed bug where empty block elements would get double br bogus elements in them.
- Fixed bug where the color menu wouldn't apply the color correctly on IE when the viewport was to small.
- Fixed bug where right clicking out side the body element of the editor iframe would prevent paste from working on IE.
- Fixed bug where the onContextMenu event wouldn't fire correctly on IE if you clicked out side the body element.
- Fixed bug where the onContextMenu event wouldn't fire correctly on modern Opera versions that now support it by default.
- Fixed bug where legacy content wasn't converted correctly when inserted using mceInsertContent or through the source dialog.
- Fixed bug where resizing images or tables wouldn't update the style attribute correctly or leave data-mce prefixed attributes.
- Fixed bug where adding links wouldn't work correctly when using TinyMCE jQuery version with jQuery 1.5.
- Fixed bug where single quotes inside param elements wasn't treated correctly by the media plugin.
- Fixed bug where pasting plain text in WebKit wouldn't work correctly. It will now auto detect the WebKit bug and use plain text mode.
- Fixed bug where the DomParser would fail to move out invalid elements within invalid elements on complex contents.
- Fixed bug where paste as plain text would not decode html entities properly.
- Fixed bug where large paragraphs would cause incorrect scrolling behavior if you would split them using enter.
- Fixed bug where the SaxParser wouldn't properly parse some specific short ended elements.
- Fixed so mceReplaceContent supports caret position and makes sure that the contents inserted gets validated.
- Fixed so unnecessary traling br elements in blocks gets removed on Gecko/WebKit when using mceInsertContent command.
- Moved some plugin css contents into the skin content css files to reduce the number of http requests.
- Moved some plugin specific images into the theme img directory since they can then be shared.
-Version 3.4b2 (2011-01-13)
- Added new custom flash player, this player supports mp4 and flv and has skin support.
- Fixed so mceInsertContent handles context correctly to enforce valid nesting of elements.
- Fixed bug where scrolling would become jerky on IE on some contents.
- Fixed bug where paste as plain text would throw exception of missing entities setting.
- Fixed bug where anchor nodes where removed by the new serializer engine.
- Fixed bug where IE would crash if when backspace where used on some specific contents.
- Fixed bug where pasting of plain text in WebKit would result in merging of text lines.
- Fixed bug where it wasn't possible to delete images or tables using backspace on IE9.
- Fixed bug where urls in styles would generate a JS error due to incorrect scope.
- Fixed bug where copy paste from Java applications would produce extra contents in FF on Mac.
- Fixed bug where the verify_html option wouldn't allow all elements and attributes.
-Version 3.4b1 (2010-12-20)
- Added new serialization engine that increases performance and enforces valid output according to the specified schema settings.
- Added new HTML parser logic used by the serialization engine and can handle malformed html contents.
- Added new valid_children config option, enables more fine grain control of elements can be inside other elements.
- Added new entities encoding logic boost performance and will only encode entities based on context i.e. attributes/text nodes.
- Added new protect setting that enables users to protect template items from being removed by the serializer logic.
- Added new {$caret} marker for the mceInsertContent command. Makes it possible to move the caret to a specific position when inserting contents.
- Added new validation of anchor names. Only valid W3C names will be accepted.
- Replaced the internal _mce_ prefixed attributes to the more standard HTML5 data-mce- prefix. This will also resolve future browser santiaztion issues.
- Fixed bug where the paste plugin wouldn't convert Word lists with more than 9 items to real ol lists. Patch contributed by Mike (yogaboy).
- Fixed bug where clicking on a format title would produce errors if the current selection didn't have any formats.
- Fixed bug where paste of simple texts wouldn't work correctly in Gecko using the paste plugin since it keeps block formatting.
- Fixed bug where confirm dialogs didn't display correctly due to resent IE9 fixes.
- Fixed bug where spaces in URLs wouldn't be properly encoded to %20 if the user entered them in the link dialogs. Patch contributed by Ephox.
- Fixed bug where the image alignment buttons wouldn't reposition the resize handles on FF due to a browser issue. Patch contributed by Ephox.
- Fixed bug where the compareBoundaryPoints method of the IE Range class didn't work correctly. Patch contributed by Ephox.
- Fixed bug where selection of elements using double click wouldn't select the clicked element but rather the parent node on FF. Patch contributed by Ephox.
- Fixed bug where IE would scroll the user to the current selection causing parent document to scroll as well. Patch contributed by Ephox.
- Fixed bug where style compression would incorrectly compress items with different values. It now only compresses if the values are the same. Patch contributed by Ephox.
- Fixed bug where FF would add non breaking spaces outside TD elements if formatting was applied to table cells. Patch contributed by Ephox.
- Fixed bug where the caret position would be lost on WebKit browsers if you pasted images multiple times. Patch contributed by Ephox.
- Fixed bug where non word contents like * would be counted as words in the wordcount pluging. Patch contributed by David Balatero.
- Fixed bug where the toggle absolute button in the layer plugin wouldn't remove the existing internal style attribute first.
- Fixed bug where the autosave plugin would generate an exception on IE if the user had disabled userdata persistence.
- Fixed bug where the paste plugin would remove dashed classes on IE since the regexps didn't include that character.
- Fixed bug where applying text color would not add spans inside link elements. This is needed due to CSS style inheritance.
- Fixed bug where applying block formats to empty elements wouldn't render correctly on IE.
- Fixed bug where the searchreplace plugin would add a f or r character when shortcuts where used on IE while using default dialogs.
- Fixed bug where Opera wouldn't load scripts correctly since the onreadystate would fire even though the script wasn't loaded.
- Fixed issue where &nbsp; wouldn't be handled correctly in the bbcode plugin if entity_encoding was set to raw.
- Fixed issue where contents would flicker since the content css files where asynchronously loaded.
- Fixed bug where WebKit wouldn't create links on images with a float style.
-Version 3.3.9.3 (2010-12-20)
- Fixed issue where WebKit wouldn't correctly apply ins/del in xhtmlxtras plugin.
- Fixed bug where paste as plaintext on WebKit wouldn't produce br and p elements correctly.
- Fixed bug where the confirm dialog texts would be incorrectly placed due to recent IE 9 workarounds in the window.css.
- Fixed bug where applying text color would not add spans inside link elements. This is needed due to CSS style inheritance.
-Version 3.3.9.2 (2010-09-29)
- Fixed bug where placing the caret in IE 9 beta 1 would not work correctly if you clicked out side the document body element.
- Fixed bug where IE 9 beta 1 wouldn't resize the editor correctly since the events didn't fire as previous versions did.
- Fixed bug where FF would produce an error message when being rendered inside a hidden div element.
- Fixed bug where resize logic could produce a cookie with a width/height less than the size of the container.
- Fixed bug where content_css wouldn't populate the styles dropdown correctly.
-Version 3.3.9.1 (2010-09-23)
- Fixed bug where WebKit browsers wouldn't activate the image button when images where selected.
- Fixed bug where Opera Presto 10.60 deletes elements when restoring bookmarks.
- Fixed bug where IE9 beta1 doesn't handle regexp replacement values correctly.
- Fixed bug where IE9 beta1 didn't render the inline dialogs correctly due to a bug with CSS clip.
- Fixed bug where IE9 beta1 would produce error messages on load since they removed the document.recalc method.
- Fixed bug where IE9 beta1 would produce <html xmlns=""> since they haven't implemented document.implementation.createDocument correctly.
- Fixed bug where IE9 beta1 would searchreplace doesn't work since their native DOM Range doesn't have a find method.
- Fixed bug where IE9 beta1 would render the source view incorrectly due to incorrect viewport size measurements.
- Fixed bug where IE9 beta1 would crash when running the basic functionality unit tests.
- Fixed bug where IE9 beta1 would wrap elements in blocks correctly due to changes to the selection object.
- Fixed bug where IE9 beta1 would fail to insert contents since they havn't implemented the createContextualFragment method in their DOM Range.
- Fixed bug where IE9 beta1 would fail to handle image selection since they currently doesn't support control selections in their DOM Range.
- Fixed bug where IE9 beta1 would fail to load scripts since they fire the onload event before the scripts are parsed and executed.
-Version 3.3.9 (2010-09-08)
- Fixed bug where inserting table rows into a table with subtable would produce an incorrect column count.
- Fixed bug where the selection of cells in a table with subtables could produce invalid selections.
- Fixed bug where the table plugin would produce a script error if you tried to move the caret before a first child table.
- Fixed bug where the keep_styles feature on IE would move the caret to an incorrect location at the end of list blocks.
- Fixed so attributes from legacy elements such as font gets retained when they get converted to spans.
- Fixed minor issue where the select boxes wouldn't be set the not set by default in the table dialog.
-Version 3.3.8 (2010-06-30)
- On IE8+ and FireFox 3.5+, dragging an image now correctly adds an undo
- event.
- Fixed bug where WebKit would not move the caret to a correct position after a paste operation.
- Fixed bug where WebKit would produce a div wrapper element when pasting some contents.
- Fixed bug where the visual chars and nonbreaking plugin wouldn't show nbsp elements correctly.
- Fixed bug where the format states would be enabled even after the format was removed.
- Fixed bug where the delete key would move the caret to an incorrect position.
- Fixed bug where it wasn't possible to toggle of the current font size/family/style by clicking the title item.
- Fixed bug where the abbr element wouldn't get serialized correctly on IE6.
- Fixed so that the examples checks if they are executed from the local file system since that might not work properly.
-Version 3.3.7 (2010-06-10)
- Fixed bug where context menu would produce an error on IE if you right clicked twice and left clicked once.
- Fixed bug where resizing of the window on WebKit browsers in fullscreen mode wouldn't position the statusbar correctly.
- Fixed bug where IE would produce an error if the editor was empty and you where undoing to that initial level.
- Fixed bug where setting the table background on gecko would produce \" entities inside the url style property.
- Fixed bug where the button states wouldn't be updated correctly on IE if you placed the caret inside the new element.
- Fixed bug where undo levels wasn't properly added after applying styles or font sizes.
- Fixed bug where IE would throw an error if you used "select all" on empty elements and applied formatting to that.
- Fixed bug where IE could select one extra character when you did a bookmark call on a caret location.
- Fixed bug where IE could produce a script error on delete since it would sometimes produce an invalid DOM.
- Fixed bug where IE would return the wrong start element if the whole element was selected.
- Fixed bug where formatting states wasn't updated on IE if you pressed enter at the end of a block with formatting.
- Fixed bug where submenus for the context menu wasn't removed correctly when the editor was destroyed.
- Fixed bug where Gecko could select the wrong element after applying format to multiple elements.
- Fixed bug where Gecko would delete parts of the previous element if the selection range was a element selection.
- Fixed bug where Gecko would not merge paragraph elements correctly if they contained br elements.
- Fixed bug where the cleanup button could produce span artifacts if you pressed it twice in a row.
- Fixed bug where the fullpage plugin header/footer would be have it's header reseted to it's initial state on undo.
- Fixed bug where an empty paragraph would be collapsed if you performed a cleanup while having the caret inside it.
- Fixed a few memory leaks on IE especially with drop menus in listboxes and the spellchecker.
- Fixed so formats applied to the current caret gets merged to reduce the number of output elements.
- Added the latest version of Sizzle for the CSS selector logic to fix a compatibility issue with prototype.
-Version 3.3.6 (2010-05-20)
- Fixed bug where a editor.focus call could produce errors on IE in very specific scenarios.
- Fixed bug where Gecko would produce an error if you unformatted text inside an empty element.
- Fixed bug where IE would produce an error if the caret was placed before a table and you used the align buttons.
- Fixed bug where the font size drop down didn't display the a preview correctly.
- Fixed bug where the paste plugin wouldn't include all contents some times on WebKit browsers.
- Fixed bug where the plain text mode toggle wouldn't work properly on WebKit.
- Fixed bug where the editors statusbar would become invisible when you resized the window in fullscreen mode.
-Version 3.3.5.1 (2010-05-07)
- Fixed a critical bug with the fullscreen plugin. Produced error messages when the state was toggled on/off.
-Version 3.3.5 (2010-05-06)
- Added new merge_with_parents option to formats, enables the control of removal of elements with similar parents.
- Fixed so the default behavior for applying classes isn't a toggle state but the old behavior from before the 3.3 release.
- Fixed bug where selecting contents using double click on Gecko would produce errors when using removing format.
- Fixed bug where the IE DOM could get messed up when non valid contents was pasted into the editor.
- Fixed bug where merging selected table cells using the context menu didn't work as expected.
- Fixed bug where some nestled formatting would be applied incorrectly.
- Fixed bug with enter in list items when using the force_br_newlines mode on WebKit patch contributed by Ryan Koopmans.
- Fixed bug where undo/redo could produce js errors on some specific operations.
- Fixed bug where the theme_advanced_font_sizes didn't work as before 3.3 when complex settings where used.
- Fixed bug where the table plugin would copy cell/row id attributes when making new rows/cells.
-Version 3.3.4 (2010-04-27)
- Fixed bug where fullscreen plugin would add two editor instances to EditorManager collection.
- Fixed bug where it was difficult to enter text on non western languages such as Japanese on IE.
- Fixed bug where removing contents from nodes could result in an exception when using undo/redo.
- Fixed bug with selection of images inside layers or other resizable containers on IE.
- Fixed so editors isn't initialized on iPhone/iPad devices since they don't have caret support.
-Version 3.3.3 (2010-04-19)
- Added new script_loaded callback function setting for the jQuery plugin.
- Added various fixes and new rpc methods for the spellchecker plugin. Patch contributed by Michael Peters.
- Removed some unnecessary inline style information from some of the dialogs.
- Fixed some issues with the chaining for the TinyMCE jQuery plugin.
- Fixed so any extra arguments passed to patched jQuery functions gets passed through. Patch contributed by Lee Henson.
- Fixed so spellchecking/contextmenu can be toggled on/off if the browser has native spellchecker support.
- Fixed bug where some texts in the new paste plugin wasn't placed in language pack.
- Fixed bug where IE would produce an incorrect information message when cutting.
- Fixed bug where removing items using the xhtmlxtras plugin wouldn't work correctly.
- Fixed bug where setting table background images would add extra quotes on Gecko.
- Fixed bug where shortcut for bold/italic/underline wouldn't work properly on WebKit.
- Fixed bug where IE would produce an error message if only contents was an image tag and bold was used.
- Fixed bug where the caret would move if alignment was applied to empty block elements.
- Fixed bug where some shortcut key commands wouldn't apply formatting correctly.
-Version 3.3.2 (2010-03-25)
- Fixed bug where it was possible to scale the editor iframe smaller than the editor UI.
- Fixed bug where some of the resizing option didn't work with the new live resize.
- Fixed bug where the format listbox didn't show nestled formats correctly.
- Fixed bug where the native listboxes didn't work correctly.
- Fixed bug where font size selection in using the legacyoutput plugin would produce errors.
- Fixed so block and blockquote formats remove their matching element regardless of it's attributes.
-Version 3.3.1 (2010-03-18)
- Added new live resize feature, the editor contents is now visible while resizing.
- Fixed bug where some valid_element patterns would produce an unknown property error.
- Fixed bug where it wasn't possible to toggle off blockquotes.
- Fixed bug where an undo level wasn't produced when applying formatting using the styles dropdown.
- Fixed bug where IE 6/7 wouldn't perform caret formatting due to a focus/event bug in IE.
- Fixed bug where undo/redo wasn't restoring the previous selection correctly.
- Fixed bug where the caret would become invisible if you resized the editor in latest Gecko.
- Fixed bug where the class attribute wasn't completely removed in IE 6/7 when the removeClass function was used.
- Fixed so the matchNode method of the Formatter class returns the matched format rule.
- Fixed so it's possible to apply formatting to both blocks and as inline elements.
-Version 3.3 (2010-03-10)
- Fixed bug where backspace on a table on IE would produce an empty tbody and some JS exceptions.
- Fixed bug where some redundant children wasn't removed properly when applying inline styles to them.
- Fixed bug where Chrome would produce incorect dialog sizes if the inlinepopups plugin wasn't used.
- Fixed bug where spans with different classes would get merged if they where siblings to each other.
- Fixed bug where IE 8 would crash if you used the spellchecker.
- Fixed bug where Input Method for non western languages didn't work correctly.
- Fixed bug where the UI would render incorrectly in FF 3.6 on Mac due to a bug n their rendering engine.
- Fixed bug where WebKit wouldn't scroll down correctly if Shift+Enter was used. Patch contributed by Thomas Andersen.
-Version 3.3rc1 (2010-02-23)
- Fixed bug with new legacyoutput plugin not working correctly on it's own.
- Fixed bug some performance issues with removing text formats.
- Fixed bug where TinyMCE specific attributes wasn't removed properly by remove format.
- Fixed bug where it wasn't possible to align images within inline elements.
- Fixed bug where Ctrl+Delete/Backspace would produce an invalid argument exception on IE.
- Fixed bug where the search/replace logic could produce an infinite loop on IE for reverse searches.
- Fixed bug where cloning formats in cells didn't work properly on IE.
- Fixed bug where IE6 would produce a horizontal scroll bar.
- Fixed so remove jQuery method removes the TinyMCE instance as well as the specified textarea.
- Fixed so selected rows and cells gets updated using the row/cell properties dialogs.
-Version 3.3b2 (2010-02-04)
- Fixed bug where sometimes img elements would be removed by split method in DOMUtils.
- Fixed bug where merging of span elements could occur on bookmark nodes.
- Fixed bug where classes wasn't properly removed when removeformat was used on IE 6.
- Fixed bug where multiple calls to an tinyMCE.init with mode set to exact could produce the same unique ID.
- Fixed bug with the IE selection implementation when it was feeded an document range.
- Fixed bug where block elements formatting wasn't properly removed by removeformat on all browsers.
- Fixed bug where selection location was lost if you performed a manual cleanup.
- Fixed bug where removeformat wouldn't remove span elements within styled block elements.
- Fixed bug where an error would be thrown if you clicked on the separator lines in menus.
- Fixed bug with the jQuery plugin adding always adding a querystring value to other resources.
- Fixed bug where IE would produce an error message if you had an empty editor instance.
- Fixed bug where Shift+Enter didn't produce br elements on WebKit browsers.
- Fixed bug where a temporary marker element wasn't removed by the paste plugin.
- Fixed bug where inserting a table would produce two undo levels instead of one.
-Version 3.3b1 (2010-01-25)
- Added new text formatting engine. Fixes a lot of browser quirks and adds new possibilities.
- Added new advlist plugin that enables you to set the formats of list elements.
- Added new paste plugin logic that enables you to retain style information from Office.
- Added new autosave plugin logic that automatically saves contents in local storage.
- Added new valid_styles option. Adds the possibility to restrict styles and their order.
- Added new theme_advanced_runtime_fontsize option to display the runtime font size in font size select box.
- Added new jquery plugin version that handles the gzip compressor amongst other things. Contributed by Speednet.
- Added new $ function to tinymce namespace and editor instances for the jQuery build.
- Added the possibility to get editors by index as well as name in the tinyMCE.editors collection.
- Fixed so the contents inside the editor renders in standards mode by default.
- Fixed bug where it wasn't possible to move the caret on short documents running in standards mode on IE.
- Fixed bug where the decode method of the DOMUtils class could end up in an endless loop.
- Fixed bug where it was possible to bypass the paste cleanup on non IE browsers if you clicked while pasting.
- Fixed bug where some attributes wasn't serialized correctly on IE if wildcard attribute patters where used.
- Fixed bug where entity decoding was performed on strings that didn't have any valid entities in them.
- Fixed bugs with the insertNode method of the IE DOMRange implementation. Patch contributed by Scott McNaught.
- Rewrote the getBookmark/moveToBookmark selection logic to boost performance on larger documents.
- Rewrote the table plugin to include new cell selection logic and fixed various bugs and issues.
- Merged the tinyMCE, tinymce and tinymce.EditorManager into the same instance makes more sense.
- Removed browser setting since the browser support for TinyMCE is not far better than it was when that setting was introduced.
- Changed the mce_ attribute prefix to the more standard _mce_ prefix. This is similar to browser vendors prefixes.
- Optimized performance with named entities on Gecko. Regexp replace was executing very slowly probably due to a Gecko bug.
- Optimized performance of the IE specific selection/range implementation.
- Removed the safari plugin since we now replaced all text formatting logic to custom code.
-Version 3.2.7 (2009-09-22)
- Fixed bug where uppercase paragraphs could still produce an invalid DOM tree on IE.
- Fixed bug where split command didn't work on WebKit since the node serializer needs a real document to work with.
- Fixed bug where it was impossible in Gecko to place the caret before a table if it was the first one.
- Fixed bug where linking to urls like ../../ would produce an extra traling slash ../..//.
- Fixed bug where the template cdate functionality was using an old 2.x API call. Patch contributed by vectorjohn.
- Fixed bug where urls to the same site but different protocol would be converted when relative_urls where set to false. Patch contributed by Ted Rust.
- Fixed bug where the paste plugin would remove mceItem prefixed classes.
- Fixed bug where the paste plugin would sometimes add items in a reverse order on WebKit.
- Fixed bug where the paste buttons would present an error message on Gecko even if you changed user.js. Patch contributed by Todd (teeaykay).
- Fixed bug where Opera would crash if you had tables incorrectly placed inside paragraphs.
- Fixed bug where styles elements wasn't properly processed if you had bad input HTML.
- Fixed bug where style attributes wasn't properly forced into a specific format.
- Fixed bug and issues with boolean attributes like checked, nowrap etc.
- Fixed bug where input elements could override attributes on form elements.
- Fixed bug where script or style elements could get modified by the DOMUtils processHTML method.
- Fixed bug where the selected attribute could get lost when force root blocks logic got executed on IE. Patch contributed by Attila Mezei-Horvati.
- Fixed bug where getAttribs method didn't handle boolean attributes correctly on IE.
- Fixed so the paste from word dialog is presented if you paste content on an IE with to restrictive security settings.
- Fixed so the paste_strip_class_attributes option is set to none by default in the paste plugin.
- Removed default border=0 on tables for the default value of valid_elements.
-Version 3.2.6 (2009-08-19)
- Added new wordcount plugin, this will display the number of typed words as you write. Contributed by Andrew Ozz.
- Added new getNext and getPrev methods to DOM utils. These will return the first matching sibling.
- Fixed bug where it was impossible to place the caret after a table on Gecko. It will now add a paragraph after tables.
- Fixed bug where inline dialogs would fail if used in a window opened using a showModalDialog. Patch contributed by Derek Britt.
- Fixed bug where IE could sometimes render a unknown runtime error on invalid input HTML.
- Fixed bug where some incorrectly placed tables wouldn't be moved outside the paragraphs on IE.
- Fixed bug where uppercase script/style element wouldn't be handled correctly and converted to valid lowercase.
- Fixed bug where some WebKit versions on Mac OS X would produce issues with hidden select fields.
- Fixed bug where the media plugin would fail on WebKit since the node wasn't properly imported to the right document.
- Fixed bug where absolute URLs for the TinyMCE script using a base href element would cause loading problems in IE 6/7.
- Fixed bug where pasting using the paste plugin wasn't possible on IE with to restrictive security settings.
- Fixed bug where pasting of whitespace was impossible using the new custom paste method.
- Fixed bug where pasting on some WebKit browsers would not work if you pasted specific contents due to a WebKit bug.
- Fixed bug where doctypes with multiple lines would not be parsed correctly by the fullpage plugin. Patch contributed by Colin.
- Fixed bug where the autoresize plugin would break the fullscreen functionality.
- Fixed bug where tables would be chopped up running on IE using invalid contents and pasting paragraphs into a cell.
- Fixed bug where the each method of jQuery build didn't iterate styleSheets. We now use the TinyMCE API one instead.
- Fixed bug where auto switching to paragraphs after headers some times failed in Gecko.
- Fixed so all editor options gets passed to the Serializer class. Patch contributed by Jasper Mattsson.
- Fixed so script/style blocks isn't wrapped in paragraphs as other inline elements.
- Fixed so the XHR requests sends the X-Requested-With HTTP header.
- Fixed so the data url scheme is handled in the tinymce.util.URI class.
- Changed inline documentation to use moxiedoc style comments.
- Removed the compat2x plugin people should have upgraded to the 3.x API by now. 3.0 was released more then a year ago.
- Re-added Gecko specific message for users who doesn't understand the security concept regarding paste.
-Version 3.2.5 (2009-06-29)
- Added new jQuery plugin for the jQuery specific package. This enables you to more easily load and use TinyMCE.
- Added new autoresize plugin contributed by Peter Dekkers. This plugin will auto resize the editor to the size of the contents.
- Fixed so all packages have the same directory structure. Previous releases had a different structure for the production package.
- Fixed so the paste from word dialog forces the contents to be processed as word contents even if it's not.
- Fixed so the jQuery build adapter build works. It's currently only excluding Sizzle.
- Fixed so noscript element contents is retained during the editing process.
- Fixed bug where the getBookmark method would need a "simple" string input when the documented way is a boolean.
- Fixed bug where invalid contents could break the fix_table_elements logic.
- Fixed bug where Sizzle specific attributes would be serialized if the valid_elements was set to *[*].
- Fixed bug where IE would produce an error if you specified a relative content_css and opened the paste dialog.
- Fixed bug where pasting images on IE would produce broken images if they came from an external site.
- Fixed bug where memory was leaked if you add/remove controls dynamically. Some event handlers wasn't removed properly.
- Fixed bug where domain relaxing wasn't treated correctly if you added it after the TinyMCE script element.
- Fixed bug where the activeEditor wasn't set to null if the last editor instance was removed.
- Fixed bug where IE was leaking memory on the onbeforeunload event due to some recently introduced logic. Patch contributed by Options.
- Fixed bug where inserting tables in Safari 4 didn't work due to a new WebKit bug where some element names are reserved.
- Fixed bug where URLs having a :// value in the query string would make it absolute regardless of URL settings.
- Fixed the WebKit specific bug where DOM Ranges would fail if the node wasn't attached to something in a different way.
- Removed the auto_resize option and the resizeToContent method from the tinymce.Editor class. Use the new autoresize plugin instead.
-Version 3.2.4.1 (2009-05-25)
- Fixed bug where Gecko browsers would produce an extra space after for example strong when loaded from sub domains.
- Fixed bug where script elements would be removed if they where placed inside a paragraph element.
- Fixed bug where IE 8 would produce 1 item remaining when loading CSS files dynamically with an empty cache.
- Fixed bug where bound events would be removed from other editor instances if a specific one was removed.
- Fixed various bugs and issues with script and style elements inside the editor.
- Fixed so all script contents gets wrapped in CDATA sections so that they can be parsed using a XML parser.
- Fixed so it's impossible for elements marked as closed to have child nodes rendered in output.
-Version 3.2.4 (2009-05-21)
- Added new paste_remove_styles/paste_remove_styles_if_webkit option to paste plugin concept contributed by Hadrien Gardeur.
- Added new functionality to paste plugin contributed by Scott Eade aka monkeybrain.
- Added new paste_block_drop option to the paste plugin this is disabled by default and will block any drag/drop event.
- Added new bind/unbind methods to DOMUtils these works like Event.add/Event.remove but is easier to access.
- Added new paste_dialog_width/paste_dialog_height options to paste pluign. Enables you to change the dialog sizes.
- Fixed bug on IE 8 where it would sometimes produce a "1 item remaining" status message that would never finish.
- Fixed bug on Safari 4 beta that would produce DOM Range exceptions on the DOMUtils split method since the browser has a bug.
- Fixed bug where the paste plugin could accidentally think that some word sentences was supposed to be list elements.
- Fixed bug where paste plugin would produce one extra empty undo level on some browsers.
- Fixed bug where spans wasn't produced correctly on new line when the keep_styles option was enabled.
- Fixed bug where the caret would be placed at the beginning of contents in IE 8 if you selected colors from the color pickers.
- Fixed so the Event class is a normal class instead of a static one. The tinymce.dom.Event is now a global instance of that class.
- Fixed so internal events for instances gets removed when the DOMUtils instance is removed.
- Fixed so preventDefault and stopPropagation methods can be used on the event object in all browsers.
-Version 3.2.3.1 (2009-05-05)
- Fixed bug where paragraphs containing form elements such as input or textarea would be removed.
- Fixed bug where some IE versions would produce a wrapper function for events attributes.
- Fixed bug where table cell contents could be removed if you pressed return/enter at the end of the cell contents.
- Fixed bug where the paste plugin would remove a extra character if the selection range was collapsed.
- Fixed bug where creating tables with % width wouldn't be handled correctly on WebKit browsers.
-Version 3.2.3 (2009-04-23)
- Added new paste plugin logic. This new version will autodetect Word contents and clean it up.
- Added a optional root element argument to getPos so you can tell it where to stop the calculation.
- Added new DOM ready logic to remove the usage of document.write. We now use basically the same method as jQuery.
- Fixed bug where WebKit browsers would fail when selecting all contents in the area using Ctrl+A.
- Fixed bug where IE would produce paragraphs with empty inline style elements.
- Fixed bug where WebKit browsers would fail when inserting tables with a non pixel width.
- Fixed bug where block elements could get a redundant br element at the end of the element.
- Fixed bug where the tabfocus plugin only worked with a single editor instance on page.
- Fixed bug where IE 8 was loosing caret position if the selection was collapsed and a menu was clicked.
- Fixed bug with application/xhtml+xml mode where menus wasn't working properly.
- Fixed bug where the onstop workaround fix for IE would produce errors in an ASP update panel.
- Fixed bug where the submit function override could produce errors if executed in the wrong scope.
- Fixed bug where the area element wasn't closed by a short ending.
- Fixed various number issues in the style plugins properties dialog. Contributed by datpaulchen.
- Fixed issues with size suffix values in the style plugin dialog.
- Fixed issue where hasDuplicate variable would leak out to the global space due to a bug in the Sizzle engine.
- Fixed issue where the paste event would fire a dialog warning on IE since we extracted the text contents.
- Updated Sizzle engine to the latest version, this version fixes a few bugs that was reported.
-Version 3.2.2.3 (2009-03-26)
- Fixed regression bug with the getPos method, it would return invalid if the view port was to small.
-Version 3.2.2.2 (2009-03-25)
- Fixed so the DOMUtils getPos method can be used cross documents if needed.
- Fixed bug where undo/redo wasn't working correctly in Gecko browsers.
-Version 3.2.2.1 (2009-03-19)
- Added support for tel: URL prefixes. Even though this doesn't match any official RFC.
- Fixed so the select method of the Selection class selects the first best suitable contents.
- Fixed bug where the regexps for www. prefixes for link and advlink dialogs would match wwwX.
- Fixed bug where the preview dialog would fail to open if the content_css wasn't defined. Patch contributed by David Bildström (ChronoZ).
- Fixed bug where editors wasn't converted in application/xhtml+xml mode due to an issue with Sizzle.
- Fixed bug where alignment would fail if multiple lines where selected.
- Updated Sizzle engine to the latest version, this version fixes a few bugs that was reported.
-Version 3.2.2 (2009-03-05)
- Added new CSS selector engine. Sizzle the same one that jQuery and other libraries are using.
- Added new is and getParents methods to the DOMUtils class. These use the new Sizzle engine to select elements.
- Added new removeformat_selector option, enables you to specify a CSS selector pattern of elements to remove when using removeformat.
- Fixed so the getParent method can take CSS expressions when selecting it's parents.
- Added new ant based build process, includes a new javabased preprocessor and a yuicompressor ant task.
- Moved the tab_focus logic into a plugin called tabfocus, so the old tab_focus option has been removed from the core.
- Replaced the TinyMCE custom unit testing framework with Qunit and rewrote all tests to match the new logic.
- Moved the examples/testcases to a root directory called tests since it now includes slickspeed.
- Fixed bug where nbsp wasn't replaced correctly in ForceBlocks.js. Patch contributed by thorn.
- Fixed bug where an dom exception would be thrown in Gecko when the theme_advanced_path path was set to false under xml application mode.
- Fixed bug where it was impossible to get out of a link at the end of a block element in Gecko.
- Fixed bug where the latest WebKit nightly would fail when changing font size and font family.
- Fixed bug where the latest WebKit nightly would fail when opening dialogs due to changes to the arguments object.
- Fixed bug where paragraphs wasn't added to elements positioned absolute using classes.
- Fixed bug where font size values with dot's like 1.4em would produce a class instead of the style value.
- Fixed bug where IE 8 would return an incorrect position for elements.
- Fixed bug where IE 8 would render colorpicker/filepicker icons incorrectly.
- Fixed bug where trailing slashes for directories in URLs would be removed.
- Fixed bug where autostart and other boolean values in the media dialog wouldn't be stored/parsed correctly.
- Fixed bug where the repaint call for the media plugin wouldn't be executed due to a typo in the source.
- Fixed bug where id attribute of object elements wasn't kept intact by the media plugin.
- Fixed bug where preview of embeded elements when the media_use_script option was used would fail.
- Fixed bug where inlinepopups could be rendered at an incorrect location on IE 6 while dragging.
- Fixed bug where the blocker shim could be placed at an incorrect location on IE 6.
- Fixed bug where the multiple and size attributes of select elements would produce incorrect values while running in IE.
- Fixed bug where IE would loose the caret position is you selected a color from the color drop down.
- Fixed bug where remove format wouldn't work on IE since it couldn't remove span elements that had style information.
- Fixed bug where Opera was removing links when removing formatting from selected contents.
- Fixed bug where paragraphs could be produced inside non positional elements styled with the CSS position value of static.
- Fixed bug where removeformat wouldn't work if you selected part of a span in IE.
- Fixed bug where media plugin didn't retain the style attribute on embed/object elements.
- Fixed bug where auto focus on empty editor instances could produce strange results if you inserted an image into it.
- Fixed bug where &nbsp; characters would be removed in FF when inserted with the mceInsertContent or selection.setContent methods.
- Fixed bug where warning message of missing paste support wasn't displayed on WebKit browsers.
- Fixed bug where anchor links could include other links. The selected range is now unlinked before adding news links to it.
- Fixed memory leak when TinyMCE was used with prototype. Patch contributed by James Ots.
- Fixed so the non documented fullpage_hide_in_source_view option for the fullpage plugin works again in the 3.x branch.
- Fixed so tables doesn't get inserted into paragraphs by default since it's not W3C valid. Can be disabled by using the fix_table_elements option.
- Fixed so the source view dialog sets a source_view state to the event object. Enables plugins to intercept the source view mode.
- Fixed various validation issues with the html dialogs and pages.
- Removed ask mode option since there is way better ways of doing this now. Use the add/remove control methods instead.
- Removed logic for compatibility with Safari 2.x, this browser is no longer supported since no one is using it.
- Removed the auto domain relaxing feature. If loading scripts cross sub domains it's better to specify the document.domain by hand.
-Version 3.2.1.1 (2008-11-27)
- Added new theme_advanced_default_background_color/theme_advanced_default_foreground_color options. Patch contributed by David Bildström (ChronoZ).
- Fixed font style formatting compatibility issue with Adobe Air.
- Fixed so legacy font elements get converted into spans even if cleanup_on_startup isn't enabled.
- Fixed bug where pre elements could be incorrectly modified by an IE bug workaround. Patch contributed by hu vime.
- Fixed bug where input elements inside inlinepopups wasn't editable in Firefox 2.
- Fixed bug where the xhtmlxtras plugin wasn't replacing attribute values correctly.
- Fixed bug where menu buttons in skin variants would look strange due to IE 8 fixes.
- Fixed bug where WebKit browsers would on backspace take you back to the previous page if the editor was empty.
- Fixed bug where DOMUtils decode method wouldn't handle strings larger than 4096kb due to node chunking.
- Fixed bug where meta key wasn't handled as ctrl key on Mac OS X for custom keyboard short cuts.
- Fixed bug where init event would get fired twice on WebKit on Mac OS X.
-Version 3.2.1 (2008-11-04)
- Added support for custom icon image for drop menus. Use icon_src to set a custom image directly.
- Added new media_strict option to media plugin. Enables you to control if the flash embed is strict or not. Enabled by default.
- Fixed so the editors script files gets dynamically loaded without using XHR or eval.
- Fixed so the media plugin outputs valid XHTML object elements for Flash movies. Can be disabled with the media_strict option.
- Fixed so dynamic loading doesn't require eval calls on non IE browsers for better Air support.
- Fixed bug where the editor wasn't treated as empty if the remaining paragraph had attributes.
- Fixed bug where id's of elements was removed ones they got wrapped in paragraphs. Patch contributed by ChronoZ.
- Fixed bug where WebKit browsers where placing list elements inside paragraph elements.
- Fixed bug where inserting images or links would produce absolute urls on WebKit browsers.
- Fixed bug where values for checked, readonly, disabled and selected attributes was incorrect on IE.
- Fixed bug where positive values for checked, readonly, disabled and selected attributes wasn't forced to valid values.
- Fixed bug where selecting the first option in a native select box would produce an undefined error.
- Fixed bug where tabindex 32768 could be outputted on IE if element attributes where cloned.
- Fixed bug where the media dialogs preview window would display incorrect contents due to duplicate clsid prefixes.
- Fixed bug where non pixel or percent heights for textarea elements would produce errors on IE.
- Fixed bug where cdata sections in script elements wasn't handled correctly.
- Fixed bug where nowrap of table cells would produce a 65535 value output.
- Fixed bug where media plugin would produce an error if you selected the first item in the items list.
- Fixed bug where media plugin would modify links with the item _value in them.
- Fixed so table width/height is better forced if inline_styles is enabled. Patch contributed by daKmoR.
- Fixed css for IE 8 such as opacity and other rendering quirks.
-Version 3.2.0.2 (2008-10-02)
- Fixed bug where the SelectBox and NativeSelectBox wasn't updated correctly if undefined was passed to them.
- Fixed bug where the style dropdown wasn't correctly changed back to it's original state when element had no class.
- Fixed bug where multiple pending font styles wasn't handled correctly.
- Fixed so you can disable all auto css loading for dialogs by setting the popups_css option to false.
-Version 3.2.0.1 (2008-09-17)
- Fixed bug where font sizes and faces wouldn't be changed correctly when there was a parent with a different style.
- Fixed bug where adding fonts to the same selection would produce redundant spans.
-Version 3.2 (2008-09-11)
- Added new text style support, it will now use span elements internally instead of font elements.
- Added new improved support for the theme_advanced_font_sizes option, check the Wiki for details.
- Added new keep_style setting that maintains the text style on return/enter on non IE browsers, enabled by default.
- Added new onBeforeSetContent/onBeforeGetContent/onSetContent/onGetContent events to the Selection class.
- Added new selectByIndex method to ListBox class. This enables you to select list items by an index instead of a value.
- Added new possibility to the select method of the ListBox class. This can now have a selector function as it's value argument.
- Added new possibility to skip the loading of popups css by setting the feature popup_css to the value false.
- Added new possibility to skip translation of popups by setting the translate_i18n feature to false.
- Added new element_format option enables you to produce HTML element endings instead of XHTML. But we are still in the XHTML is better camp.
- Added missing allowfullscreen and quality options for flash elements, this will now get correctly stored.
- Fixed bug where table cell dialog didn't close properly unless the accessibility_warnings option was set to false.
- Fixed bug where the modal dialog blocker element for inlinepopups wasn't placed at a correct location if the page had scroll.
- Fixed bug where non inline dialogs didn't close correctly if the inlinepopups plugin was used.
- Fixed bug where non inline dialogs could make the modal dialog blocker to work incorrectly.
- Fixed bug where style select wasn't populated correctly if you pressed the arrow. Patch by Hari Karam Singh.
- Fixed bug where toggling the fullscreen mode didn't restore scrollbars on IE when the editor was inside a frame. Patch by Jacob Barrett.
- Fixed bug where inserting flash contents using the template plugin didn't work correctly.
- Fixed bug where inserting flash contents using the selection.setContent or mceInsertContent command didn't work correctly.
- Fixed bug where IE would produce an exception if a comment started with -.
- Fixed bug where the blockquote button would wrap lists incorrectly on non IE browsers.
- Fixed bug where Opera would display BR elements in the element path.
- Fixed bug where xhtmlxtras didn't insert elements correctly on IE.
- Fixed bug where the buttons wasn't activated correctly in the xhtmlxtras plugin.
- Fixed bug where adding an object as the style attribute for the dom setAttribs method wouldn't work.
- Fixed bug where the background color would bleed out to parent container element in Gecko.
- Fixed bug where the insert column actions for tables would fail if you did it in a thead or tfoot. Patch contributed by T Andersen (tan73).
- Fixed bug where event blocker element wasn't positioned correctly for the inlinepopups plugin.
- Fixed bug where pasting from Office 2007 would produce an odd comment in the contents.
- Fixed bug where the paste as plain text could remove an extra character. Patch contributed by Speednet.
- Fixed bug where some characters where missing for the paste_replace_list option. Patch contributed by Speednet.
- Fixed bug where removing non existing editor instances by the mceRemoveControl command would produce an error.
- Fixed bug where meta elements with the name description would produce errors in IE.
- Fixed bug where color and background colors wouldn't be updated properly.
- Fixed bug where the createMenuButton of tinymce.ControlManager didn't implement the last class argument.
- Fixed bug where the editor_css option was relative from the TinyMCE installation directory not the current page.
- Fixed bug where elements wouldn't be padded if the element contained bogus br elements. For example TD elements.
- Fixed bug where parsing of <body > in fullpage plugin would produce an error.
- Fixed bug where relative urls with just ./ would become an empty string.
- Fixed bug where outdent button would be disabled if inline_styles where set to false.
- Fixed bug where replace with an empty search string would produce an error on IE.
- Fixed bug where restoring the overflow state of the body in fullscreen plugin running on IE would produce vertical scrollbars.
- Fixed bug where pressing return/enter in list items would sometimes move the caret the to top of the content area in FF.
- Fixed bug where the style listbox wouldn't be updated correctly if you used the use_native_selects option.
- Fixed bug where WebKit browsers would produce a div element when ending list elements using return.
- Fixed so translation of popup contents only occurs if it's needed.
- Optimized the URI object in regards or converting absolute URIs to relative URIs.
-Version 3.1.1 (2008-08-18)
- Added new getSize method to DOMUtils it will return the dimensions only of an element.
- Added new alert/confirm methods to the tinyMCEPopup class to prevent focus problems and also to shorten method calls.
- Added new plugin_preview_inline option to preview plugin to enable/disable native/inline dialogs.
- Added new readonly option. If this is set the editor will only display the contents for the user.
- Added missing tabindex and accesskey to input elements in the default valid_elements setup.
- Updated firebug lite to 1.2, to enable it use the tiny_mce_dev.js?debug=1 on the development package.
- Fixed so the preview dialog in the preview plugin uses inline dialogs/popups.
- Fixed so CDATA sections remains intact through the serialization process of the DOM tree.
- Fixed various issues with the getAttrib command. It will now return more correct values.
- Fixed bug where the embed element wasn't properly parsed in the media plugin it now supports 3 formats.
- Fixed bug where the noshade attribute was serialized incorrectly on IE.
- Fixed bug where editing an existing link element didn't force it relative.
- Fixed bug where image link creation fails on Safari if the image is aligned.
- Fixed bug where it was possible to scroll the fullscreen mode in Opera 9.50.
- Fixed bug where removal of center image alignment would fail. Patch contributed by Andrew Ozz.
- Fixed bug where inlinedialogs didn't work properly if the doctype was incorrect in IE.
- Fixed bug where cross domain loading didn't work correctly in Opera 9.50.
- Fixed bug where breaking huge text blocks with return/enter key would scroll to end of block.
- Fixed bug where replace button kept inserting the replacement text even if there is no more matches.
- Fixed bug with fullpage plugin where value wasn't set correctly. Patch contributed by Pascal Chantelois.
- Fixed bug where the dom utils setAttrib method call could produce an exception if the input was null/false.
- Fixed bug where pressing backspace would sometimes remove one extra character in Gecko browsers.
- Fixed bug where the native confirm/alert boxes would move focus to parent document if fired in dialogs.
- Fixed bug where Opera 9.50 was telling you that the selection is collapsed even when it isn't.
- Fixed bug where mceInsertContent would break up existing elements in Opera and Gecko.
- Fixed bug where TinyMCE fails to detect some keyboard combos on Mac, contributed by MattyRob.
- Fixed bug where replace all didn't move the caret to beginning of text before searching.
- Fixed bug where the oninit callback wasn't executed correctly when the strict_loading_mode option was used, thanks goes to Nicholas Oxhoej.
- Fixed bug where a access denied exception was thrown if some other script specified document.domain before loading TinyMCE.
- Fixed so setting language to empty string will skip language loading if translations are made by some backend.
- Fixed so dialog_type is automatically modal if you use the inlinepopups plugin use dialog_type : "window" to re-enable the old behavior.
-Version 3.1.0.1 (2008-06-18)
- Fixed bug where the Opera line break fix didn't work correctly on Mac OS X and Unix.
- Fixed bug where IE was producing the default value the maxlength attribute of input elements.
-Version 3.1.0 (2008-06-17)
- Fixed bug where the paste as text didn't work correctly it encoded produced paragraphs and br elements.
- Fixed bug where embed element in XHTML style didn't work correctly in the media plugin.
- Fixed bug where style elements was forced empty in IE. The will now be wrapped in a comment just like script elements.
- Fixed bug where some script elements wrapped in CDATA could fail to be serialized correctly.
- Fixed bug where FF 3 produced -moz- internal styles in some style attributes.
- Fixed bug where query strings and external URLs didn't work correctly in style attributes.
- Fixed bug where shape attribute of area elements got serialized as rect regardless of it's initial value in IE 6.
- Fixed bug where selection of elements inside layers would fail in IE since focus was moved to the document body.
- Fixed bug where pressing enter/return in an editable select box would produce an __mce_add_custom__ class value.
- Fixed bug where changing font size of text placed inside a colored text chunk would remove the parent node.
- Fixed bug where Opera 9.5 final produced a strange line break behavior due to a workaround for previous Opera versions.
- Fixed bug where text/background color would produce a strange focus problem when you tried to click on the body in IE.
- Fixed issue where selecting the title of an listbox equals the old 2.x behavior of changing the value to an empty string.
- Fixed issue where it was common for the media plugin to break if the _value attribute wasn't added for the param element.
- Fixed issue where the wrong parent editor instance might be updated if you use fullscreen mode in an incorrect way.
- Fixed issue where Safari was producing a warning about the base element not being closed correctly.
- Removed redundant form element name matching from regexp in the DOMUtils class.
-Version 3.0.9 (2008-06-02)
- Added new contextmenu_offset_x/contextmenu_offset_y options for the contextmenu plugin.
- Added cite attribute to the default rule for the blockquote element.
- Added support for using arrow keys for selection of items in listboxes.
- Added support for using arrow keys for selection of items in dropmenus.
- Fixed bug where blockformat change on elements with BR inside them didn't change correctly on Firefox.
- Fixed bug where removing table rows inside thead or tfoot would remove the whole table if it was the last one.
- Fixed bug where XHR synchronous mode didn't execute the callback handlers synchronously.
- Fixed bug where setting border to 0 didn't add border: 0 to the style attribute when using the advimage dialog.
- Fixed bug where the selection of images and table cells didn't work correctly when the editor is placed in a frame and running on IE.
- Fixed bug where the store/restore of a selection didn't work correctly in non IE browsers.
- Fixed bug where only the first element would be invalid for the invalid_elements option.
- Fixed bug where paste as plain text didn't encode the characters correctly when they where inserted.
- Fixed bug where HTML source window couldn't be maximized on Gecko when the maximizable feature was enabled.
- Fixed bug where color selection using the color picker could produce exception in IE.
- Fixed bug where font size changes could produce produce extra redundant elements.
- Fixed bug where IE could produce unknown runtime error if you replaced a image with another image from a separate frame.
- Fixed bug where the domLoaded state for the Event class wasn't set correctly if the editor was loaded dynamically using the gzip compressor.
- Fixed bug where handling of the base element for a page would produce incorrect urls. Based on a patch contributed by John LeSueur.
- Fixed bug where table constraint alert boxes was presented with an empty value and wasn't the skinned inline ones.
- Fixed bug where the onChange event wasn't fired when the form was submitted. It's now also triggered when the save method is called.
- Fixed bug where encoding set to xml didn't work as expected. It now encodes the contents into XML entities.
- Fixed bug where numrows didn't work correctly for the merge cells dialog of the table plugin.
- Fixed bug where the onGetContent event was fired even when the no_events flag was set.
- Fixed bug where the preview panels for the advimage and the media plugin could overflow on Safari and FF 3.
- Fixed bug where the editing and removal of abbr elements using the xhtmlxtras plugin working correctly on IE.
- Fixed bug where save button in the save plugin didn't work correctly on IE.
- Fixed bug where dragging layers didn't work as expected since it would snap back to it's original location if you saved.
- Fixed bug where the description of the template plugin dialog wasn't updated correctly.
- Fixed bug where the values for frame and rules in the table dialogs where swapped.
- Fixed bug where the elements like ins, del, cite, acronym and abbr didn't have the default editing style as the old 2.x branch.
- Fixed bug where ask mode would lock the focused textarea if you pressed cancel in the confirm dialog on FF 3.
- Fixed bug where ask mode would produce contents for empty textareas if you reloaded the page.
- Fixed so the onGetContent event gets the full pass through object just like the other events.
- Fixed so attributes for block elements remains the same when you change format of a element.
-Version 3.0.8 (2008-04-30)
- Fixed bug where IE would produce an error if textareas without names where converted.
- Fixed bug where editor wasn't forced empty when there was only a single br or empty paragraph left.
- Fixed bug where IE would produce an warning message if object elements where produced in the media plugins preview running on https.
- Fixed bug where new addVer function didn't handle hash items correctly. Patch contributed by Mirek Burkon.
- Fixed bug where font_size_style_values option wasn't applied correctly to fonts inside the editor.
- Fixed bug where image selection could be lost if a image was edited using context menu on IE.
- Fixed bug where style values wasn't updated properly due to an invalid regexp.
- Fixed bug where IE 6 where displaying warning message about insecure items when inserting an image while using https. Patch contributed by Norifumi Sunaoka.
- Fixed bug where IE was producing an auto save message if you selected a color from the color split button.
- Fixed bug where backspace sometimes would move the caret to the end of the previous block in Gecko.
- Fixed bug where the rowlayout manager didn't work as described in the documentation.
- Fixed bug where the default options for the fullpage plugin wasn't applied correctly.
- Fixed bug where selection would jump one character if you applied a styles to a words in non IE browsers.
- Fixed bug where undo levels wasn't added correctly if you went back in undo history and added a new event.
- Fixed bug where font size dropdown didn't mark the selected size in IE.
- Fixed bug where the size of the editor was determined using clientWidth instead of offsetWidth.
- Fixed so the onchange event doesn't fire on the initial undo level, it will also fire when the editor is blurred.
- Fixed so the advhr plugin produces XHTML valid output instead of non standard attributes.
- Fixed so blockquote gets converted into [quote] in when the bbcode plugin is enabled.
- Fixed so theme_advanced_font_sizes can be named for example Font 1=1, Font 2=2 etc.
- Fixed so editor_selector/editor_deselector can be regexps. By default only strings are allowed not part regexps like before.
- Fixed so that the version suffix is optional. It still requires the build process so you need to export it manually.
- Fixed so it's possible to tab to table cells in non Gecko browsers and also produce new rows if you tab at the end of a table. Contributed by Josh Peek.
-Version 3.0.7 (2008-04-14)
- Added new version suffix to all internal GET requests to make sure that the users cache gets cleared correctly.
- Fixed issue with isDirty returning true event if it wasn't dirty on IE due to changes in tables during initialization.
- Fixed memory leak in IE where if a page was unloaded before all images on the page was loaded it would leak.
- Fixed bug in IE where underline and strikethrough could produce an exception error message.
- Fixed bug where inserting paragraphs in totally empty table cells would produce odd effects.
- Fixed bug where layer style data wasn't updated correctly due to some performance enhancements with the DOM serializer.
- Fixed bug where it would convert the wrong element if there was two elements with the same name and id on the page.
- Fixed bug where it was possible to add style information to the body element using the style plugin.
- Fixed bug where Gecko would add an extra undo level some times due to the blur event.
- Fixed bug where the underline icon would get active if the caret was inside a link element.
- Fixed bug where merging th cells not working correctly. Patch contributed by André R.
- Fixed bug where forecolorpicker and backcolorpicker buttons where rendered incorrectly when the o2k7 skin was used.
- Fixed bug where comment couldn't contain -- since it's invalid markup. It will now at least not break on those invalid comments.
- Fixed bug where apos wasn't handled correctly in IE. It will now convert apos to &#39; on IE since that browser doesn't support that entity.
- Fixed bug where entities wasn't encoded correctly inside pre elements since they where protected from whitespace removal.
- Fixed bug where color split buttons where rendered incorrectly on IE6 when using the non default theme.
- Fixed so caret is placed after links ones they are created, to improve usability of the editor.
- Fixed so you can select tables by clicking on it's borders in non IE browsers to normalize the behavior.
- Fixed so the menus can be toggled by clicking once more on the icon in listboxes, menubuttons and splitbuttons based on code contributed by Josh Peek.
- Fixed so buttons can be labeled, currently only works with the default skin, so it's kind of experimental. Patch contributed by Daniel Insley.
- Fixed so forecolorpicker and backcolorpicker remembers the last selected color. Patch contributed by Shane Tomlinson.
- Fixed so that you can only execute the mceAddEditor command once for the same instance name.
- Fixed so command functions added with addCommand can pass though the call to default handles if it returns true.
-Version 3.0.6.2 (2008-04-07)
- Fixed bug where empty tables couldn't be edited correctly on non IE browsers if they where loaded into the editor.
- Fixed bug where it was impossible to resize layers correctly in IE since it thought it was an image.
- Fixed bug where an editor instance was stealing focus in IE resulting in a scroll to the editor on page reloads.
- Fixed bug where Safari was crashing on Mac OS X if you closed dialogs using the Esc key.
-Version 3.0.6.1 (2008-04-04)
- Added support for the missing mceAddFrameControl command. The input for this command has changed so consult the Wiki.
- Fixed bug where sub menus for the drop menus would leave an empty element behind.
- Fixed memory leak in IE if the editor was placed in a frame or iframe.
-Version 3.0.6 (2008-04-03)
- Added elements to the default value of valid_elements option. It now contains all XHTML strict elements and a few transitional.
- Added more accessibility fixes, it's now possible to navigate and close list boxes and split button menus with the keyboard.
- Added missing getInfo method to the contextmenu and safari plugin, this caused problems for the Drupal module.
- Added new inlinepopups_zindex option to the inlinepopups plugin so that you can configure the default start z-index.
- Added new setControlType method to the tinymce.ControlManager class. This method enables you to override the default classes.
- Added ability to specific an optional control class to use instead of the default one for the ControlManager methods. Based on concept by Josh Peek.
- Fixed bug where attribute rules for the DOM Serializer couldn't contain - or _ characters in their names.
- Fixed bug where inlinepopups event blocker and modal dialog blocker elements produced vertical scrollbars.
- Fixed bug where there was a rendering issue with quirks mode in Safari moving the resize handle to an incorrect position.
- Fixed bug with forecolor/backcolor controls on IE. Sometimes elements positioned relative will generate display errors.
- Fixed bug where a p2 was leaking out in the global name space when you selected a color from the forecolor/backcolor controls.
- Fixed bug where empty paragraphs didn't work as expected in browsers other than IE.
- Fixed bug where the load method of the tinymce.dom.ScriptLoader didn't check if the file was already loaded.
- Fixed bug where the load method for the PluginManager and ThemeManager didn't check if a plugin/theme by a specific name was all ready loaded.
- Fixed bug where the theme_advanced_link_targets option didn't work correctly with the advanced themes link dialog. Patch contributed by Arnold B.
- Fixed bug where the style command would merge classes into empty span elements.
- Fixed bug where the style command would remove empty span elements outside the current selection.
- Fixed bug where the fix for the Safari backspace bug removed all editor contents if it was filled with empty paragraphs.
- Fixed bug where alert and confirm boxes opened by the inlinepopups plugin would produce an exception if domain relaxing was used.
- Fixed bug where Safari was adding style attributes to all elements when you paste them into the editor.
- Fixed bug where the spellchecker menus was visually incorrect since the space for the non existing icon was still there.
- Fixed bug where remove_linebreaks option didn't remove line breaks inside the text contents of a element.
- Fixed bug where Safari 3.1 was introducing _mc_tmp into paragraphs due to the new querySelectorAll and a TinyMCE specific workaround.
- Fixed bug where getParam method in the Editor class was returning incorrect objects and would mess up the font drop down. Patch contributed by speednet.
- Fixed bug where the table dialog would produce an exception in IE when you edited tables since it tried to place focus in a disabled field.
- Fixed bug where class attribute on some span elements was removed on cleanup.
- Fixed bug where resizing the editor in IE could produce an exception if the editor width/height got to be a negative value.
- Fixed bug where wmv files wouldn't play since the src param was used instead of the url param.
- Fixed bug where br elements would be added here and there in Gecko. Geckos internal _moz_dirty br elements where serialized as well.
- Fixed bug where editing named anchors would produce two anchors instead of one updated one.
- Fixed bug where arrow and function keys didn't work when an noneditable element was focused within the editor.
- Fixed bug where the dispatcher could produce an exception if the listener list was altered inside an event callback.
- Fixed bug where it was impossible to totally empty the editor contents on Safari due to an mistreatment of nbsp as whitespace. Patch contributed by Andrew Ozz.
- Fixed bug where TinyMCE would not convert textareas with the same name attribute value. It will now generate an unique id for those textareas.
- Fixed bug where backspace/delete key was deleting td elements inside tables while running on Gecko.
- Fixed bug where Firefox 3.0b4 and Opera 9.26 where scrolling to the top of document when pressing return/enter.
- Fixed bug where the template plugin wasn't just inserting the mceTmpl tagged element.
- Fixed bug where the alert method of the default WindowManager implementation didn't translate input language strings like the inlinepopups dialog does.
- Fixed bugs with the backspace behavior in Gecko. The caret was placed on incorrect locations in the DOM sometimes.
- Fixed so advimage dialog and table dialogs has support for editable select boxes for the class value.
- Fixed so the media, pagebreak and spellchecker doesn't load it's default content.css file if the content_css option is set to false.
- Fixed so the paste_use_dialog option works again it's enabled by default but can be disabled on IE. Patch contributed by Speednet.
- Fixed so that the fullscreen editor is focused when switching fullscreen editing on.
- Fixed so it's possible to edit images and links inside tables using the context menu.
- Fixed so table dialogs and the advanced image dialog doesn't loose selection in IE if the dialogs where navigated/submitted with the keyboard.
- Fixed so the theme_advanced_blockformats options can have named items for example title 1=h1;title 2=h2.
- Fixed so it's possible to add a custom editor_css for the simple theme.
- Fixed quirks with directionality rtl, patch contributed by Andrew Ozz.
- Fixed so the inlinepopups default start zIndex is 300000.
- Fixed typo in media plugin Shockware is now replaced with Shockwave.
- Fixed psuedo memory leak in IE with the replaceChild method inside the DOMUtils.replace method.
- Fixed so memory is released when an editor instance is removed from page.
- Optimized the color split button menus so that they use less event handlers.
- Removed the util/mclayer.js file since it's no longer used by any of the TinyMCE dialogs and is considered deprecated.
-Version 3.0.5 (2008-03-12)
- Added new black skin variant to the o2k7 skin contributed by Stefan Moonen.
- Added new explode method to the tinymce core class. This does a split but removed whitespace it also defaults to a , delimiter.
- Added new detection logic for IE 8 standards mode into the DOMUtils class strMode can now be checked to see if that mode is on/off.
- Added new noscale option value for the scale select box for Flash in the media plugin.
- Fixed bug where the menu for the ColorSplitButton wasn't removed when the editor was removed.
- Fixed bug where font colors couldn't be edited correctly since the style of the element didn't get updated correctly.
- Fixed bug where class of elements would get lost when TinyMCE was fixing incorrect HTML markup.
- Fixed bug where table editing would produce double height values.
- Fixed bug where width style value wouldn't be removed if you switched width unit from cm/em to pixels or percent.
- Fixed bug where the search/replace input box wasn't auto focused like the other dialogs.
- Fixed bug where the old mceAddControl command would use the fullscreen settings next time it created an instance.
- Fixed bug where multiple lines where added to the target cell if you merged multiple empty cells.
- Fixed bug where drop down menus would be incorrectly positioned inside scrollable divs.
- Fixed bug where the separators of the silver skin variant didn't display correctly in IE 6.
- Fixed bug where createStyleSheet seems to load scripts at opposite order in some IE versions.
- Fixed bug where directionality could produce odd results for the UI and the dialogs.
- Fixed bug where the DOM serializer wouldn't serialize custom namespaced attributes in IE 6 using the *[*] valid elements rule.
- Fixed bug where table caption would be inserted after the thead element if you swapped a tr to be inside the thead.
- Fixed bug where the youtube detection logic for the media plugin was to generic.
- Fixed so the deprecated and undocumented theme_advanced_path_location set to none won't hide the whole statusbar.
- Fixed so most input lists can have whitespace in them they are now split using the new tinymce.explode method.
- Fixed so the popup_css and popup_css_add URLs are relative to where the current document is located.
- Fixed various bugs and quirks with the store/restore selection logic.
- Fixed so the editor starts in IE 8 standards mode but still that browser is very very buggy.
- Fixed so dialog_type set to modal will block the background and other inline windows and only give access to the front most window.
-Version 3.0.4.1 (2008-03-08)
- Fixed critical bug where it was impossible to edit images when inlinepopups where used due to lost selection in IE.
-Version 3.0.4 (2008-03-07)
- Added new option constrain_menus, this enables you to force view port constraints on all menus. Contributed by Shane Tomlinson.
- Fixed bug where table background wasn't visible inside the editor due to a default CSS rule overriding the style attribute.
- Fixed bug where links would get a null class added if no styles was used in IE.
- Fixed bug where spellchecker was auto focusing the editor in IE.
- Fixed bug where document.domain would produce invalid argument if the editor was loaded in IE6 over a network UNC path.
- Fixed bug where table height attribute was used, this is deprecated in XHTML so it now adds it as an style.
- Fixed bug where textareas with style values would produce error in IE.
- Fixed so the first element in each dialog is focused by default to enhance keyboard usage.
- Fixed so you can add a mceFocus class to elements to make it auto focused.
- Fixed so you can close dialogs using the esc key.
- Fixed so you can press return/enter to submit the action of each dialog.
- Fixed so tabbing inside an inline popups wont focus the resize anchor elements.
- Fixed so you can press ok in inline alert messages using the return/enter key.
- Fixed so textareas can be set to non px or % sizes for example em, cm, pt etc.
- Fixed so non pixel values can be used in width/height properties for tables.
- Fixed so the custom context menu can be disabled by holding down ctrl key while clicking.
- Fixed so the layout for the o2k7 skin looks better if you don't have separators before and after list boxes.
- Fixed so the sub classes get a copy of the super class constructor function to ease up type checking.
- Fixed so font sizes for the format block previews are normalized according to http://www.w3.org/TR/CSS21/sample.html (it can be overridden).
- Fixed so font sizes for h1-h6 in the default content.css is normalized according to http://www.w3.org/TR/CSS21/sample.html (it can be overridden).
-Version 3.0.3 (2008-03-03)
- Fixed bug where an error about document.domain would be thrown if TinyMCE was loaded using a different port.
- Fixed bug where mode exact would convert textareas without id or name if the elements option was omitted.
- Fixed bug where the caret could be placed at an incorrect location when backspace was used in Gecko.
- Fixed bug where local file:// URLs where converted into absolute domain URLs.
- Fixed bug where an error was produced if a editor was removed inside an editor command.
- Fixed bug where force_p_newlines didn't effect the paste plugin correctly.
- Fixed bug where the paste plugin was producing an exception on IE if you pasted contents with middots.
- Fixed bug where delete key could produce exceptions in Gecko sometimes due to the fix for the table cell bug.
- Fixed bug where the layer plugin would produce an visual add class called mceVisualAid this one is now renamed to mceItemVisualAid to mark it internal.
- Fixed bug where TinyMCE wouldn't initialize properly if ActiveX controls was disabled in IE.
- Fixed bug where tables and other elements that had visual aids on them would produce an extra space after any custom class names.
- Fixed bug where search with an empty string would produce some odd "invalid pointer" error in IE.
- Fixed bug where elements like menus where placed at incorrect positions in Opera 9.26.
- Fixed bug where IE was loosing focus of the editor when you clicked some dropmenu and if it was placed in a frame or iframe.
- Fixed bug where focus of images could be lost in IE if you focused the accessibility confirm dialog in the advimage plugin.
- Fixed bug where nestled font elements would produce odd output like missing font elements.
- Fixed bug where text colors and styles got removed if invalid_elements included the font element.
- Fixed bug where text-decoration set to underline or line-through would remove other styles from span elements.
- Fixed bug where editor contents like \n\n would be incorrectly handled and processed as real line feeds.
- Fixed bug where incorrectly encoded urls with ampersands in them would be decoded incorrectly.
- Optimized the DOMUtils decode method to be a lot faster if the string doesn't have any entities to decode.
-Version 3.0.2.1 (2008-02-26)
- Fixed alert/confirm dialogs so they display correctly.
-Version 3.0.2 (2008-02-26)
- Added new body_id option that enables you to specify the id of the body inside the editor iframe based on ideas by David Bildström (ChronoZ).
- Added new body_class option that enables you to set the class for the body of the editor iframe based on ideas by David Bildström (ChronoZ).
- Added new CSS class to the default content.css files mceForceColors that forces white background and black text can be used with the body_class option.
- Added new type parameter to the Editor.getParam function to reduce redundant logic for parsing hash tables.
- Added new isDone method to the ScriptLoaded class, this enables you to check if a script has been loaded or not.
- Added new resizeTo and resizeBy methods for the advanced theme. Can be called using tinyMCE.activeEditor.theme.resizeTo(w, h);
- Added new skin_variant option this can be used to extend existing skins with slight modifications like color.
- Added new variant of the o2k7 skin called "silver" based on a contribution made by Stefan Moonen.
- Fixed bug where the template plugin might produce errors if the template_mdate_classes wasn't configured.
- Fixed bug where the media plugin didn't convert the URLs for movies once they where inserted.
- Fixed bug where the style field for the advlink dialog didn't work correctly if you edited an existing link.
- Fixed bug where alignment of toolbars would fail in editor was uses in a quirks mode on IE, fix contributed by Peter Wood & Art Lawry.
- Fixed bug where initialization of multiple editors at the same time using the mceAddControl method would produce errors.
- Fixed bug where initialization of editors using mceAddControl command or new tinymce.Editor calls would fail during page load.
- Fixed bug where the check for domain relaxing could fail if the document.domain property was changed by another script.
- Fixed bug where textareas couldn't be named description or any other name that matches the meta elements in IE and Opera.
- Fixed bug where the element path would fail sometimes in IE due to "unknown runtime error" on innerHTML.
- Fixed bug where Safari would crash if you was hiding the editor before serializing the contents.
- Fixed bug where the editor wasn't scaled propertly in fullscreen mode using the old fullscreen_new_window option.
- Fixed bug where render method didn't load language packs in IE and Opera if you rendered an editor during page load.
- Fixed bug where resizing the browser window in fullscreen didn't resize the editor.
- Fixed bug where the blockquote command didn't move the caret inside the new empty blockquote if you used it on an empty document.
- Fixed bug where auto in a style width/height for the textarea would produce an editor with the size value of 100. Fix contributed by Shane Tomlinson.
- Fixed bug where restoration of selection at the beginning of an element could fail in Gecko.
- Fixed bug where caret restoration after a cleanup could place the it at an incorrect location.
- Fixed bug where delete key inside td elements would delete the cell in Gecko.
- Fixed so the blockquote button toggles individual lines. This behavior is a bit more like the old indentation behavior in the 2.x branch.
- Fixed so the dialog language packs only gets loaded the first time you open a dialog.
- Fixed so all classes in the whole UI is prefixed with "mce" to avoid collisions, use the skin converter to update your existing skins.
- Fixed so all classes in the inlinepopups logic is prefixed with "mce" to avoid collisions, use the skin converter to update your existing skins.
- Fixed so that the window in fullscreen mode can be resized when fullscreen_new_window option is enabled.
- Fixed so blockquote elements are formatted in the source output with an linefeed before and after it.
- Optimized the editor initialization by reducing the number of calls to getBookmark/moveToBookmark.
-Version 3.0.1 (2008-02-21)
- Added spellchecker plugin into the main package, but without any backend can be specified with the spellchecker_rpc_url option.
- Added src attribute for script elements to the default valid_elements option value.
- Added extra parameter to the class_filter callback it can now also filter out classes based on the whole CSS rule.
- Added support for domain relaxing, TinyMCE can now be loaded from an remote domain as long as they are on the same root domain.
- Added support for custom elements the new custom_elements option enables you to add non HTML elements to the editor.
- Added support for the W3C Selectors API that was added to latest nightly build of WebKit.
- Fixed bug where some object param element wasn't stored correctly using the media plugin.
- Fixed bug where Opera was scrolling to top of page is drop menus on list boxes where displayed.
- Fixed bug where IE6 was crashing if a format block was used on a container with anchor elements.
- Fixed bug where spans with font sizes wasn't handled correctly when editor was loading contents.
- Fixed bug where mode exact couldn't convert editors with name only. Id is no longer required but recommended.
- Fixed bug where the mceInsertRawHTML command produced an extra undo level.
- Fixed bug where the specific_textareas mode didn't work correctly this is the same thing as textareas now.
- Fixed bug where the values of input elements in the HTML page of dialogs pages where changed in IE.
- Fixed bug where fullscreen and fullpage plugins didn't work well together.
- Fixed bug where embed elements wasn't handled properly in the media plugin.
- Fixed bug where style information on span elements gets munged when fonts are converted to spans.
- Fixed bug where some entities in element attributes where encoded incorrectly in the latest WebKit build.
- Fixed bug where initialization would fail in IE if there where two input elements with the name submit in the form.
- Fixed bug where fullscreen mode didn't work correctly in IE when the fullscreen_new_window option was used.
- Fixed bug where invalid contents like an ul inside a p element would produce odd results in IE.
- Fixed bug where Opera 9.2x was placing the drop menus at incorrect locations if the editor was placed in a table.
- Fixed bug where Opera was producing odd results if enter/return was pressed while having forced_root_blocks disabled.
- Fixed bug where layer plugin was stealing focus in IE on initialization.
- Fixed bug where body attributes wasn't set properly in the fullpage plugin, fix contributed by Hiroaki Kawai.
- Fixed bug where insert image and insert link dialogs where producing an extra level in the undo history.
- Fixed bug where Gecko would produce an error if empty elements like <div></div> where inserted using mceInsertContent.
- Fixed bug where center alignment of images produced odd results inside table cells.
- Fixed bug where center alignment of images couldn't be toggled correctly.
- Fixed bug where alignment of images inside tables would produce double float style items in IE if the fix_table_elements option was enabled.
- Fixed bug where a variable called 'v' was polluting the global namespace. Objects tinymce and tinyMCE are the only ones allowed to be global.
- Fixed bug where insert table from context menu couldn't insert new tables inside existing tables.
- Fixed bug where Safari wouldn't produce br elements on enter when the force_br_newlines option was enabled.
- Fixed bug where switching cell type in table cell dialog would produce odd attributes in IE.
- Fixed bug where Gecko was outputting internal attributes if valid_elements where set to "*[*]".
- Fixed bug where the style plugin would produce non hex colors inside the dialog when running on Gecko.
- Fixed bug where an empty src value for insert image would remove the currently selected image if it wasn't and image element.
- Fixed bug where hidden input elements would break the logic for the tab_focus option.
- Fixed bug where save button wasn't working correctly in fullscreen mode.
- Fixed bug where the editor was forced to be placed in a form element if the save_onsavecallback option was used.
- Fixed bug where upper case param attributes wasn't parsed correctly in the media plugin.
- Fixed bug where render method of tinymce.Editor class would produce an exception if the strict_loading_mode option was omitted.
- Fixed bug where nodeChanged event could be fired while the editor was loading and there for produce an exception in FF.
- Fixed bug where no undo levels where added if the user created new table rows using the tab key on Gecko.
- Fixed bug where tables would be broken if you selected a different block format for contents withing an table cell.
- Fixed bug where the render method of the tinymce.Editor class didn't setup the tinymce.EditorManager.settings object correctly.
- Fixed bug where the advanced image dialog would go to the first tab if the alternative image was changed using the file browser link.
- Fixed bug where the forced_root_block option would produce BR elements inside empty blocks if the block wasn't a paragraph.
- Fixed bug where the forced_root_block doesn't work correctly on IE if the specified element was something else than paragraphs.
- Fixed bug where selection of images would get lost if user selected something from the context menu in IE.
- Fixed bug where the context menu plugin would pollute the global namespace with two variables p1 and p2.
- Fixed compatibility issue with Mootools, it is destroying document.getElementById on unload in IE. (Mantra: You don't own the internal objects).
- Fixed bugs where dialogs/tabs and other UI elements where rendered incorrectly in Firefox 3.
- Fixed so the auto CSS class importer is compatible with 2.x.
- Fixed so the editor UI and inlinedialogs works correctly with the YUI CSS reset package.
- Fixed so header and footer elements are forced to lower case when the fullpage plugin is used.
- Fixed so load prefixes "-" for plugins and themes isn't required if the plugin/theme was loaded by the ThemeManager/PluginManager.
- Fixed so the JSONRequest uses application/json content type to make Ruby on rails happy.
- Fixed so the CSS rule is more exact for the body in the default content.css files. Body is now defined as "body.mceContentBody" instead of just "body".
- Fixed so the tiny_mce_dev.js uses XHR instead of document.write to load scripts to resolve an issue with Opera 9.50.
- Fixed so language pack loading can be disabled by setting the language option to false. Can be useful for systems with their own language pack management.
-Version 3.0 (2008-01-30)
- Added map and area elements to the default valid_elements list and also some indentation rules.
- Fixed bug where empty paragraphs wasn't padded when loading contents.
- Fixed bug where the RowLayout manager didn't work at all.
- Fixed bug where style attribute data would get messed up in advimage dialog.
- Fixed bug where the table dialogs class select wasn't updated correctly.
- Fixed bug where elements would get extra whitespace around on insert when body was present in valid_elements.
- Fixed bug where coords attribute of the area element wasn't handled properly in IE.
- Fixed bug where Safari didn't produce BR elements on shift+return.
- Fixed bug where force blocks would cast odd invalid attribute exception in IE.
- Fixed bug where media plugin would produce extra whitespace before and after objects.
- Fixed bug where cleanup_callback could break the contents of the editor. But use the new event system instead of this option.
- Fixed bug where the tab_focus option didn't work between editor instanced. You can now tab between editors.
- Fixed bug where the load function of the ScriptLoader class didn't load single files without the load que as it was supposed to.
- Fixed bug where the execcommand_callback parameter order was incorrect. Recommendation use the new addCommand method.
- Fixed bug where range.select calls sometimes failed on some IE versions.
- Fixed bug where Safari was scrolling to top of document when enter/returned was pressed.
- Fixed bug where fullscreen_new_window option didn't work correctly.
- Fixed bug where the nonbreaking plugin inserted an space instead of an non breaking space the first time.
- Fixed bug where the visualization of non breaking spaces where visual in element path.
- Fixed so the focus is restored to the editor after inserting an custom character.
- Fixed so the isNotDirty state is set to false if a new undo level is added.
- Fixed so pointless style information for borders gets removed in IE.
- Fixed so the resize button has a se-resize cursor css value.
-Version 3.0rc2 (2008-01-18)
- Added new fix_nesting option to fix bug #1867292, this is disabled by default.
- Added new indentation option enables you to specify how much each indent/outdent call will add/remove.
- Added easier support for enabling/disabling icon columns on drop menues.
- Added new menu button control class. This control is very similar to the splitbutton but without any onclick action.
- Added support for previous tab focus (shift+tab). The tab_focus setting now takes two items next and previous element.
- Fixed bug where iframes inside the editor got removed in Firefox on initial load.
- Fixed bug where the CSS for abbr elements wasn't applied correctly in IE.
- Fixed bug where mceAddControl on element inside a hidden container produced errors.
- Fixed bug where closed anchors like <a /> produced strange results.
- Fixed bug where caret would jump to the top of the editor if enter was pressed a the end of a list.
- Fixed bug where remove editor failed if the editor wasn't properly initialized.
- Fixed bug where render call on for a non existing element produced exception.
- Fixed bug where parent window was hidden when the color picker was used in a non inlinepopups setup.
- Fixed bug where onchange event wasn't fired correctly on IE when color picker was used in dialogs.
- Fixed bug where save plugin could not save contents if the converted element wasn't an textarea.
- Fixed bug where events might be fired even after an editor instance was removed such as blur events.
- Fixed bug where an exception about undefined undo levels could be throwed sometimes.
- Fixed bug where the plugin_preview_pageurl option didn't work.
- Fixed bug where adding/removing an editor instance very fast could produce problems.
- Fixed bug where the link button was highlighted when an anchor element was selected.
- Fixed bug where the selected contents where removed if a new anchor element was added.
- Fixed bug where splitbuttons where rendered one pixel down in the default theme.
- Fixed bug where some buttons where placed at incorrect positions in the o2k7 theme.
- Fixed bug that made it impossible to visually disable a custom button that used an image instead of CSS sprites.
- Fixed bug where it wasn't possible to press delete/backspace if the editor was added+removed and re-added due to a FF bug.
- Fixed bug where an entities option with only 38,amp,60,lt,62,gt would fail in IE.
- Fixed bug where innerHTML sometimes generated unknown runtime error on IE.
- Fixed bug where content_css files wasn't loaded in the template preview iframe.
- Fixed bug where scroll position was incorrect when toggling fullscreen mode.
- Fixed bug where restoration of overflow didn't work correctly when disabling fullscreen mode in Opera.
- Fixed bug where drop menus where places at incorrect locations if the editor was placed in a scrollable container element.
- Fixed bug where hideMenu didn't hide sub menus correctly. It will now hide all menus recursively.
- Fixed so theme_advanced_path_location can be used in init options for compatibility reasons.
- Fixed so the drop menu colors matches the rest of o2k7 theme.
- Fixed so the preview example.html file is updated to the new 3.x API.
- Fixed so the margins are the same by default inside the editable area between IE and other browsers.
- Fixed so editor contents gets stored before it the onSubmit event is fired.
-Version 3.0rc1 (2008-01-08)
- Added new classes for toolbar rows in advanced theme mceToolbarRow1..n enabled you to change appearance of individual rows.
- Added auto detection for the strict_loading_mode option when running in application/xhtml+xml mode on Gecko.
- Optimized the HTML serializer by bundling some post process methods together.
- Fixed so that the toolbars have unique IDs, enables you to alter the toolbars using the ControlManager and the DOM.
- Fixed bug where delta values for dialog sizes in language packs didn't work correctly due to missing string to number casting.
- Fixed bug where paragraph generation logic didn't handle hr or table elements correctly if they where the only element.
- Fixed bug where some elements got extra linebreaks added after or before it in HTML output.
- Fixed bug where it was hard to modify existing style data on table rows and table cells.
- Fixed bug where the dom.getRect method didn't handle non pixel values correctly.
- Fixed bug where strikethrough and underline couldn't be toggled on existing span elements.
- Fixed bug where the postprocessor searched for nsbp instead of nbsp entities.
- Fixed bug where it was impossible to edit links that had child elements within them.
- Fixed bug where it was possible to click on the parent item of a submenu.
- Fixed bug where mouseover/mouseout images couldn't be removed in advimage dialog.
- Fixed bug where drop menus didn't work when running in application/xhtml+xml mode.
- Fixed bug where Opera added doctype to output in application/xhtml+xml mode.
- Fixed bug where some DOM methods didn't work correctly in the application/xhtml+xml mode.
- Fixed bug where the inlinepopups didn't work correctly in the application/xhtml+xml mode.
- Fixed bug where the ColorSplitButton didn't display correctly in the application/xhtml+xml mode.
- Fixed bug where the UI layout was incorrect on Gecko browsers when running in application/xhtml+xml mode.
- Fixed bug where the word paste plugin produced exception while running in application/xhtml+xml mode.
- Fixed bug where there wasn't any hidden input element generated for divs while running in application/xhtml+xml mode.
- Fixed bug where indentation of script/style/pre elements where incorrect.
- Fixed bug where script element contents was removed in IE.
- Fixed bug where script element contents got entity encoded.
- Fixed bug where you couldn't edit existing element styles using the styles plugin.
- Fixed bug where styles wasn't updated properly sometimes due to an performance enhancement.
- Fixed bug where font sizes couldn't be changed using the style plugin.
- Fixed bug where an error was produced in Gecko browsers when switching back from fullscreen mode.
- Fixed bug where Opera was producing br elements after elements like h3.
- Fixed bug where TinyMCE couldn't be loaded on a page using - characters in it's URL.
- Fixed bug where the editor container element was forced to have a specific name.
- Fixed bug with force_br_newlines option on Firefox, even though it should never be used (Read FAQ).
- Fixed bug where onclick event had an return true; prefix added when creating an popup.
- Fixed bug where the theme_advanced_statusbar_location option couldn't handle the value "none".
- Fixed issue with URLs with multiple at characters for example an Zope URI.
- Fixed so simple and advanced themes doesn't collide.
- Fixed so a elements gets removed when the href field is left empty, the href attribute is required in a link after all.
- Fixed so img elements gets removed when the src field is left empty, the src attribute is required for all images after all.
- Removed the indent and encode methods from the tinymce.dom.Serializer class due to performance enhancement and reduction of the API size.
-Version 3.0b3 (2007-12-14)
- Added new getElement method to Editor class, returns the element that was replaced with the editor instance.
- Added new unavailable prefix for disabled controls for accessibility reasons.
- Fixed bug where regexp patterns couldn't be used for the editor_selector/editor_deselector options.
- Fixed bug where the DOM wasn't properly initialized before the onInit event was executed in popups.
- Fixed bug where font sizes where reduced by font size actions on previous spans in Safari.
- Fixed bug where HR elements got places at the wrong location in IE.
- Fixed bug where align/justify didn't work correctly on multiple paragraphs.
- Fixed bug with missing translation for cell scope settings.
- Fixed bug where selection/caret position was lost on some table actions.
- Fixed bug where editor instances couldn't be added to hidden div elements.
- Fixed bug where list elements in Safari would get an odd ID attribute.
- Fixed bug where IE would return <html/> when the editor was completely empty.
- Fixed bug where accessibility title attribute for access keys wasn't setup properly.
- Fixed bug where forecolorpicker and backcolorpicker control names wasn't working.
- Fixed bug where inserting template content didn't work in Safari due to selection exception.
- Fixed bug where absolute URLs to remote hosts couldn't be used for background images.
- Fixed bug where mysterious span elements where produced in Safari when injecting HTML contents.
- Fixed bug where the media plugin didn't work correctly on the latest Opera 9.24.
- Fixed bug where indentation of HTML output wasn't applied to all block elements.
- Fixed bug where Safari was production DOM exception if you pressed enter in an empty editor.
- Fixed bug where media plugin didn't parse script tags correctly patch contributed by Mathieu Campagna.
- Fixed bug where the drop menus of list boxes like blockformat could produce scrolling of the page.
- Fixed bug where the drop menus where placed at an incorrect location if TinyMCE was placed in a scrollable div.
- Fixed bug where submit buttons couldn't be named submit, it's not recommended to name submit buttons submit anyway.
- Fixed bug where the stylelistbox produced an exception if there was only one class in the list box.
- Fixed bug where the stylelistbox wasn't updated correctly when the current class was removed.
- Fixed bug where the formatblock command sometimes removed the body element.
- Fixed bug where fullscreen switching in IE sometimes produced an exception when the spellchecker plugin was enabled.
- Fixed issue where FF produced an empty paragraph when the editor was completely empty.
- Fixed issue with size of image dialog in the advanced theme.
- Fixed issues with the bbcode plugin it now also handles spans and the [font] rule.
- Fixed so the style compression feature is a bit smarter to resolve issues with Opera.
- Reintroduced the remove_linebreaks option, this is enabled by default.
-Version 3.0b2 (2007-11-29)
- Added type and compact attributes to the default valid_elements list for the ul and ol elements.
- Added missing accessibility support to native list boxes in both the toolbar and dialogs.
- Added missing access key for the element path for accessibility reasons.
- Fixed support for loading themes from external URLs.
- Fixed bug where setOuterHTML didn't work correctly when multiple elements where passed to it.
- Fixed bug with visualchars plugin was moving elements around in the DOM.
- Fixed bug with DIV elements that got converted into editors on IE.
- Fixed bug with paste plugin using the old event API.
- Fixed bug where the spellchecker was removing the word when it was ignored.
- Fixed bug where fullscreen wasn't working properly.
- Fixed bug where the base href element and attribute was ignored.
- Fixed bug where redo function didn't work in IE.
- Fixed bug where content_css didn't work as previous 2.x branch.
- Fixed bug where preview dialog was throwing errors if the content_css wasn't defined.
- Fixed bug where the theme_advanced_path option didn't work like the 2.x branch.
- Fixed bug where the theme_advanced_statusbar_location was called theme_advanced_status_location.
- Fixed bug where the strict_loading_mode option didn't work if you created editors dynamically without using the EditorManager.
- Fixed bug where some language values wasn't translated such as insert and update in dialogs.
- Fixed bug where some image attributes wasn't stored correctly when inserting an image.
- Fixed bug where fullscreen mode didn't restore scrollbars when disabled.
- Fixed bug where there was no visual representation for tab focus in toolbars on IE.
- Fixed bug where HR elements wasn't treated as block elements so forced_root_block would fail on these.
- Fixed bug where autosave presented warning message even when the form was submitted normally.
- Fixed typo of openBrower it's now openBrowser in form_utils.js.
- Fixed various HTML problems like missing TD elements and duplicated doctypes.
- Fixed default values for theme_advanced_resize_horizontal, theme_advanced_resizing_use_cookie to be 2.x compatible.
- Moved spellchecker JS files into the development package.
- Removed support for theme_advanced_path_location since the theme_advanced_statusbar_location is the correct option name.
-Version 3.0b1 (2007-11-21)
- Added new tab_focus option, that enables you to specify a element id or that the next element to be focused on tab key down.
- Added new addQueryValueHandler method to the tinymce.Editor class.
- Added new class_filter option, this enables you to specify a function that can filter out CSS classes for the styles list box.
- Added support form [url=url]title[/url] to the bbcode plugin.
- Renamed the addCommandQueryState method in the tinymce.Editor class to addQueryStateHandler.
- Renamed loadQue to loadQueue, to correct spelling.
- Removed the createDOM method from the window manager and replace it with a createInstance method.
- Removed the add to beginning of class attribute parameter of the DOMUtils.addClass method.
- Fixed bug with the forced_root_block option, didn't work correctly with multiple inline elements.
- Fixed bug where image dialogs replaced the current image element with a new one even when it was updated.
- Fixed bug where the submit trigger wasn't executed when divs where converted into editor instances.
- Fixed bug where div elements that got converted into editors didn't get a hidden input element generated for them.
- Fixed bug where the the media_use_script option for the media plugin wasn't working correctly.
- Fixed bug where the font size and font family listboxes wasn't updated correctly on Safari.
- Fixed bug where the height of the fieldset in default image dialog for the advanced theme was to small.
- Fixed bug where the font sizes behaved incorrectly after a cleanup on Safari.
- Fixed bug where formatblock didn't work correctly in Safari on some elements.
- Fixed bug where template plugin didn't insert content correctly unless some options where specified.
- Fixed bug where charmap on Safari produced scrollbars.
- Fixed bug where there was white artifacts in some dialogs due to missing background color.
- Fixed bug where port was added to all external URLs if the editor was loaded from a custom port.
- Fixed bug where the context menus got duplicated on Safari 3.0.4 on Mac OS X.
- Fixed bug where dialogs like paste from word was huge on Firefox.
- Fixed bug with media plugin not working with windows media objects.
- Fixed bug where a forever loop was created if multiple instances where submitted using form.submit.
- Fixed bug with editing a table produce error in IE when inlinepopups where used.
- Fixed bug where the style plugin generated ugly looking style information in IE.
- Fixed bug where the inline dialogs that got opened while in fullscreen mode wasn't visible.
- Fixed bug where it was difficult to place the caret inside the word paste dialog.
- Fixed bug where Opera produced strange border in the word paste dialog.
- Fixed bug where viewport constraints could move a inlinepopup to a negative x, y position if the viewport was to small.
- Fixed bug where template plugin was producing an error due to a deprecated API call.
- Fixed bug where drag drop of images failed in Gecko if a document_base_url was specified.
- Fixed bug where Firefox 3 failed to apply block formats like H1-H6 it still breaks on DIVs this has been reported to bugzilla.
- Fixed bug where IE was producing a warning dialog about non secure items when running TinyMCE over HTTPS.
- Fixed bug where the onbeforeunload event was triggered when menus or dialogs where opened.
- Fixed bug where the fullscreen mode of the HTML view source box threw an error.
- Fixed bug where the mceFocus command didn't work correctly.
- Fixed bug where the selection could get lost in IE using inlinepopups.
- Fixed so the body of the editor area has the mceContentBody class just like the 2.x branch.
- Fixed so the media icon gets active when a media element is selected.
-Version 3.0a3 (2007-11-13)
- Added new experimental jQuery and Prototype framework adapters to the development package.
- Added new translation.html file for the development package. Helps with the internationalization of TinyMCE.
- Added new setup callback option, use this callback to add events to TinyMCE. This method is recommended over the old callbacks.
- Added new API documetation to all classes, functions, events, properties to the Wiki with examples etc.
- Added new init method to all plugins and themes, since it's shorter to write and it mimics interface capable languages better.
- Fixed various CSS issues in the default skin such as alignment of split buttons and separators.
- Fixed issues with mod_security. It didn't like that a content type of text/javascript was forced in a XHR.
- Fixed all events so that they now pass the sender object as it's first argument.
- Fixed some DOM methods so they now can take an array as input.
- Fixed so addButton and the methods of the ControlManager uses less arguments and it now uses a settings object instead.
- Fixed various issues with the tinymce.util.URI class.
- Fixed bug in IE and Safari and the on demand gzip loading feature.
- Fixed bug with moving inline windows sometimes failed in IE6.
- Fixed bug where save_callback function wasn't executed at all.
- Fixed bug where inlinepopups produces scrollbars if windows where moved to the corners of the browser.
- Fixed bug where view HTML source failed when inserting a embedded media object.
- Fixed bug where the listbox menus didn't display correctly on IE6.
- Fixed bug where undo level wasn't added when editor was blurred.
- Fixed bug where spellchecker wasn't disabled when fullscreen mode was enabled.
- Fixed bug where Firefox could crash some times when the user switched to fullscreen mode.
- Fixed bug where tinymce.ui.DropMenu didn't remove all item data when an item was removed from the menu.
- Fixed bug where anchor list in advlink dialog wasn't populated correctly in Safari.
- Fixed bug where it wasn't possible to edit tables in IE when inlinepopups was enabled.
- Fixed bug where it wasn't possible to change the table width of an existing table.
- Fixed bug where xhtmlxtras like abbr didn't work correctly on IE.
- Fixed bug where IE6 had some graphics rendering issues with the inlinepopups.
- Fixed bug where inlinepopup windows where moved incorrectly when they were boundary checked for min width.
- Fixed bug where textareas without id or name couldn't be converted into editor instances.
- Fixed bug where TinyMCE was stealing element focus on IE.
- Fixed bug where the getParam method didn't handle false values correctly.
- Fixed bug where inlinepopups was clipped by other TinyMCE instances or relative elements in IE.
- Fixed bug where the contextmenu was clipped by other TinyMCE instances or relative elements in IE.
- Fixed bug where listbox menus was clipped by other TinyMCE instances or relative elements in IE.
- Fixed bug where listboxes wasn't updated correctly when the a value wasn't found by select.
- Fixed various CSS issues that produced odd rendering bugs in IE.
- Fixed issues with tinymce.ui.DropMenu class, it required some optional settings to be specified.
- Fixed so multiple blockquotes can be removed with a easier method than before.
- Optimized some of the core API to boost performance.
- Removed some functions from the core API that wasn't needed.
-Version 3.0a2 (2007-11-02)
- Fixed critical bug where IE generaded an error on a hasAttribute call in the serialization engine.
- Fixed critical bug where some dialogs didn't open in the non dev package.
- Fixed bug when using the theme_advanced_styles option. Error was thrown in some dialogs.
- Fixed bug where the close buttons produced an error when native windows where used.
- Fixed bug in default skin so that split buttons gets activated correctly.
- Fixed so plugins can be loaded from external urls outsite the plugins directory.
-Version 3.0a1 (2007-11-01)
- Rewrote the core and most of the plugins and themes from scratch.
- Added new and improved serialization engine, faster and more powerful.
- Added new internal event system, things like editor.onClick.add(func).
- Added new inlinepopups plugin, the dialogs are now skinnable and uses clearlooks2 as default.
- Added new contextmenu plugin, context menus can now have submenus and plugins can add items on the fly.
- Added new skin support for the simple and advanced themes you can alter the whole UI using CSS.
- Added new o2k7 skin for the simple and advanced themes.
- Added new custom list boxes for font size/format/style etc with preview support.
- Added new UI management, enabled plugins to create controls like splitbuttons or menus easier.
- Added new JSON parser/serializer and JSON-RPC class to the core API.
- Added new cookie utility class to the core API.
- Added new Unit testing class to the core API only available in dev mode.
- Added new firebug lite integration when loading the dev version of TinyMCE.
- Added new Safari plugin, fixes lots compatibility of issues with Safari 3.x.
- Added new URI/URL parsing it now handles the hole RFC and even some exceptions.
- Added new pagebreak plugin, enables you to insert pagebreak comments like <!-- pagebreak -->
- Added new on demand loading of plugins and themes. Enables you to load and init TinyMCE at any time.
- Added new throbber/progress visualization a plugin can show/hide this when it's needed.
- Added new blockquote button. Enables you to wrap paragraphs in blockquotes.
- Added new compat2x plugin. Will provide a TinyMCE 2.x API for older plugins.
- Added new theme_advanced_resizing_min_width, theme_advanced_resizing_min_height options.
- Added new theme_advanced_resizing_max_height, theme_advanced_resizing_max_height options.
- Added new use_native_selects option. Enables you to toggle native listboxes on and off.
- Added new docs_url option enables you to specify where the TinyMCE user documentation is located.
- Added new frame and rules options for the table dialog.
- Added new global rule for valid_elements/extended_valid_elements enables you to specify global attributes for all elements.
- Added new deny attribute rule characher so it's possible to deny global attribute rules on specific elements.
- Added new unit tests in the dev package of TinyMCE. Runs tests on the core API, commands and settings of the editor.
- Readded the inline_styles option and enabled it by default so deprecated attributes are no longer used.
- Removed all button images and replaced them with CSS sprite images. Reduces the number of requests needed.
- Removed lots of language files and merged them into the base language files. Reduces the number of requests needed.
- Removed lots of unnecessary files and merged many of them together to reduce requests and improve loading speed.
- Reduced the over all script size by 33% and the number of files/requests by 75% so it loads a lot faster.
- Fixed so convert_fonts_to_spans are enabled by default. So no more font tags.
- Fixed so underline and strikethrough uses spans instread of deprecated U and STRIKE elements.
- Fixed so indent/outdent adds/removed margin-left instead of blockquotes.
- Fixed so alignment of paragraphs results in a text-align style value instead of the deprecated align attribute.
- Fixed so alignment of images uses float or vertical-align style values instead of the deprecated align attribute.
- Fixed so all classes from @import stylesheets gets imported into the editor.
- Fixed so the directionality can toggle the dir attribute on and off.
- Fixed so the fullscreen_settings can be used for all types of fullscreen modes.
- Fixed so the advanced HR dialog gets displayed when inserting a HR not only on edit.
- Fixed bug where word wrap didn't work in the source editor on Safari.
- Fixed so non HTML elements can be used within the editor such as <myns:tag>
- Fixed various memory leaks in IE and reduced the unload cleanups needed.
- Fixed so the preformatted option adds an invisible container pre tag inside the editor.
- Renamed the _template plugin to example and updated it to use the new 3.x API.
diff --git a/library/tinymce/examples/accessibility.html b/library/tinymce/examples/accessibility.html
deleted file mode 100644
index 69059403c..000000000
--- a/library/tinymce/examples/accessibility.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>Full featured example</title>
-
-<!-- TinyMCE -->
-<script type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script>
-<script type="text/javascript">
- tinyMCE.init({
- // General options
- mode : "textareas",
- theme : "advanced",
- plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,advlist,autosave",
-
- // Theme options
- theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
- theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
- theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
- theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak,restoredraft",
- theme_advanced_toolbar_location : "top",
- theme_advanced_toolbar_align : "left",
- theme_advanced_statusbar_location : "bottom",
- theme_advanced_resizing : true,
-
- // Example content CSS (should be your site CSS)
- // using false to ensure that the default browser settings are used for best Accessibility
- // ACCESSIBILITY SETTINGS
- content_css : false,
- // Use browser preferred colors for dialogs.
- browser_preferred_colors : true,
- detect_highcontrast : true,
-
- // Drop lists for link/image/media/template dialogs
- template_external_list_url : "lists/template_list.js",
- external_link_list_url : "lists/link_list.js",
- external_image_list_url : "lists/image_list.js",
- media_external_list_url : "lists/media_list.js",
-
- // Style formats
- style_formats : [
- {title : 'Bold text', inline : 'b'},
- {title : 'Red text', inline : 'span', styles : {color : '#ff0000'}},
- {title : 'Red header', block : 'h1', styles : {color : '#ff0000'}},
- {title : 'Example 1', inline : 'span', classes : 'example1'},
- {title : 'Example 2', inline : 'span', classes : 'example2'},
- {title : 'Table styles'},
- {title : 'Table row 1', selector : 'tr', classes : 'tablerow1'}
- ],
-
- // Replace values for the template plugin
- template_replace_values : {
- username : "Some User",
- staffid : "991234"
- }
- });
-</script>
-<!-- /TinyMCE -->
-
-</head>
-<body>
-
-<form method="post" action="http://tinymce.moxiecode.com/dump.php?example=true">
- <div>
- <h3>Full featured example, with Accessibility settings enabled</h3>
-
- <p>
- This page has got the TinyMCE set up to work with configurations related to accessiblity enabled.
- In particular
- <ul>
- <li>the <strong>content_css</strong> is set to false, to ensure that all default browser styles are used, </li>
- <li>the <strong>browser_preferred_colors</strong> dialog option is used to ensure that default css is used for dialogs, </li>
- <li>and the <strong>detect_highcontrast</strong> option has been set to ensure that highcontrast mode in Windows browsers
- is detected and the toolbars are displayed in a high contrast mode.</li>
- </ul>
- </p>
-
- <!-- Gets replaced with TinyMCE, remember HTML in a textarea should be encoded -->
- <div>
- <textarea id="elm1" name="elm1" rows="15" cols="80" style="width: 80%">
- &lt;p&gt;
- This is some example text that you can edit inside the &lt;strong&gt;TinyMCE editor&lt;/strong&gt;.
- &lt;/p&gt;
- &lt;p&gt;
- Nam nisi elit, cursus in rhoncus sit amet, pulvinar laoreet leo. Nam sed lectus quam, ut sagittis tellus. Quisque dignissim mauris a augue rutrum tempor. Donec vitae purus nec massa vestibulum ornare sit amet id tellus. Nunc quam mauris, fermentum nec lacinia eget, sollicitudin nec ante. Aliquam molestie volutpat dapibus. Nunc interdum viverra sodales. Morbi laoreet pulvinar gravida. Quisque ut turpis sagittis nunc accumsan vehicula. Duis elementum congue ultrices. Cras faucibus feugiat arcu quis lacinia. In hac habitasse platea dictumst. Pellentesque fermentum magna sit amet tellus varius ullamcorper. Vestibulum at urna augue, eget varius neque. Fusce facilisis venenatis dapibus. Integer non sem at arcu euismod tempor nec sed nisl. Morbi ultricies, mauris ut ultricies adipiscing, felis odio condimentum massa, et luctus est nunc nec eros.
- &lt;/p&gt;
- </textarea>
- </div>
-
- <br />
- <input type="submit" name="save" value="Submit" />
- <input type="reset" name="reset" value="Reset" />
- </div>
-</form>
-
-<script type="text/javascript">
-if (document.location.protocol == 'file:') {
- alert("The examples might not work properly on the local file system due to security settings in your browser. Please use a real webserver.");
-}
-</script>
-</body>
-</html>
diff --git a/library/tinymce/examples/css/content.css b/library/tinymce/examples/css/content.css
deleted file mode 100644
index a76c38a2f..000000000
--- a/library/tinymce/examples/css/content.css
+++ /dev/null
@@ -1,105 +0,0 @@
-body {
- background-color: #FFFFFF;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 10px;
- scrollbar-3dlight-color: #F0F0EE;
- scrollbar-arrow-color: #676662;
- scrollbar-base-color: #F0F0EE;
- scrollbar-darkshadow-color: #DDDDDD;
- scrollbar-face-color: #E0E0DD;
- scrollbar-highlight-color: #F0F0EE;
- scrollbar-shadow-color: #F0F0EE;
- scrollbar-track-color: #F5F5F5;
-}
-
-td {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 10px;
-}
-
-pre {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 10px;
-}
-
-.example1 {
- font-weight: bold;
- font-size: 14px
-}
-
-.example2 {
- font-weight: bold;
- font-size: 12px;
- color: #FF0000
-}
-
-.tablerow1 {
- background-color: #BBBBBB;
-}
-
-thead {
- background-color: #FFBBBB;
-}
-
-tfoot {
- background-color: #BBBBFF;
-}
-
-th {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 13px;
-}
-
-/* Basic formats */
-
-.bold {
- font-weight: bold;
-}
-
-.italic {
- font-style: italic;
-}
-
-.underline {
- text-decoration: underline;
-}
-
-/* Global align classes */
-
-.left {
- text-align: inherit;
-}
-
-.center {
- text-align: center;
-}
-
-.right {
- text-align: right;
-}
-
-.full {
- text-align: justify
-}
-
-/* Image and table specific aligns */
-
-img.left, table.left {
- float: left;
- text-align: inherit;
-}
-
-img.center, table.center {
- margin-left: auto;
- margin-right: auto;
- text-align: inherit;
-}
-
-img.center {
- display: block;
-}
-
-img.right, table.right {
- float: right;
- text-align: inherit;
-}
diff --git a/library/tinymce/examples/css/word.css b/library/tinymce/examples/css/word.css
deleted file mode 100644
index 049a39fbd..000000000
--- a/library/tinymce/examples/css/word.css
+++ /dev/null
@@ -1,53 +0,0 @@
-body {
- background-color: #FFFFFF;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 10px;
- scrollbar-3dlight-color: #F0F0EE;
- scrollbar-arrow-color: #676662;
- scrollbar-base-color: #F0F0EE;
- scrollbar-darkshadow-color: #DDDDDD;
- scrollbar-face-color: #E0E0DD;
- scrollbar-highlight-color: #F0F0EE;
- scrollbar-shadow-color: #F0F0EE;
- scrollbar-track-color: #F5F5F5;
-}
-
-p {margin:0; padding:0;}
-
-td {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 10px;
-}
-
-pre {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 10px;
-}
-
-.example1 {
- font-weight: bold;
- font-size: 14px
-}
-
-.example2 {
- font-weight: bold;
- font-size: 12px;
- color: #FF0000
-}
-
-.tablerow1 {
- background-color: #BBBBBB;
-}
-
-thead {
- background-color: #FFBBBB;
-}
-
-tfoot {
- background-color: #BBBBFF;
-}
-
-th {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 13px;
-}
diff --git a/library/tinymce/examples/custom_formats.html b/library/tinymce/examples/custom_formats.html
deleted file mode 100644
index ba9d1eb0c..000000000
--- a/library/tinymce/examples/custom_formats.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>Custom formats example</title>
-
-<!-- TinyMCE -->
-<script type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script>
-<script type="text/javascript">
- tinyMCE.init({
- // General options
- mode : "textareas",
- theme : "advanced",
- plugins : "autolink,lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,advlist,autosave",
-
- // Theme options
- theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
- theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
- theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
- theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak,restoredraft",
- theme_advanced_toolbar_location : "top",
- theme_advanced_toolbar_align : "left",
- theme_advanced_statusbar_location : "bottom",
- theme_advanced_resizing : true,
-
- // Example content CSS (should be your site CSS)
- content_css : "css/content.css",
-
- // Drop lists for link/image/media/template dialogs
- template_external_list_url : "lists/template_list.js",
- external_link_list_url : "lists/link_list.js",
- external_image_list_url : "lists/image_list.js",
- media_external_list_url : "lists/media_list.js",
-
- // Style formats
- style_formats : [
- {title : 'Bold text', inline : 'b'},
- {title : 'Red text', inline : 'span', styles : {color : '#ff0000'}},
- {title : 'Red header', block : 'h1', styles : {color : '#ff0000'}},
- {title : 'Example 1', inline : 'span', classes : 'example1'},
- {title : 'Example 2', inline : 'span', classes : 'example2'},
- {title : 'Table styles'},
- {title : 'Table row 1', selector : 'tr', classes : 'tablerow1'}
- ],
-
- formats : {
- alignleft : {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes : 'left'},
- aligncenter : {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes : 'center'},
- alignright : {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes : 'right'},
- alignfull : {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', classes : 'full'},
- bold : {inline : 'span', 'classes' : 'bold'},
- italic : {inline : 'span', 'classes' : 'italic'},
- underline : {inline : 'span', 'classes' : 'underline', exact : true},
- strikethrough : {inline : 'del'}
- },
-
- // Replace values for the template plugin
- template_replace_values : {
- username : "Some User",
- staffid : "991234"
- }
- });
-</script>
-<!-- /TinyMCE -->
-
-</head>
-<body>
-
-<form method="post" action="http://tinymce.moxiecode.com/dump.php?example=true">
- <div>
- <h3>Custom formats example</h3>
-
- <p>
- This example shows you how to override the default formats for bold, italic, underline, strikethough and alignment to use classes instead of inline styles.
- There are more examples on how to use TinyMCE in the <a href="http://tinymce.moxiecode.com/examples/">Wiki</a>.
- </p>
-
- <!-- Gets replaced with TinyMCE, remember HTML in a textarea should be encoded -->
- <div>
- <textarea id="elm1" name="elm1" rows="15" cols="80" style="width: 80%">
- &lt;p&gt;
- This is some example text that you can edit inside the &lt;strong&gt;TinyMCE editor&lt;/strong&gt;.
- &lt;/p&gt;
- &lt;p&gt;
- Nam nisi elit, cursus in rhoncus sit amet, pulvinar laoreet leo. Nam sed lectus quam, ut sagittis tellus. Quisque dignissim mauris a augue rutrum tempor. Donec vitae purus nec massa vestibulum ornare sit amet id tellus. Nunc quam mauris, fermentum nec lacinia eget, sollicitudin nec ante. Aliquam molestie volutpat dapibus. Nunc interdum viverra sodales. Morbi laoreet pulvinar gravida. Quisque ut turpis sagittis nunc accumsan vehicula. Duis elementum congue ultrices. Cras faucibus feugiat arcu quis lacinia. In hac habitasse platea dictumst. Pellentesque fermentum magna sit amet tellus varius ullamcorper. Vestibulum at urna augue, eget varius neque. Fusce facilisis venenatis dapibus. Integer non sem at arcu euismod tempor nec sed nisl. Morbi ultricies, mauris ut ultricies adipiscing, felis odio condimentum massa, et luctus est nunc nec eros.
- &lt;/p&gt;
- </textarea>
- </div>
-
- <!-- Some integration calls -->
- <a href="javascript:;" onmousedown="tinyMCE.get('elm1').show();">[Show]</a>
- <a href="javascript:;" onmousedown="tinyMCE.get('elm1').hide();">[Hide]</a>
- <a href="javascript:;" onmousedown="tinyMCE.get('elm1').execCommand('Bold');">[Bold]</a>
- <a href="javascript:;" onmousedown="alert(tinyMCE.get('elm1').getContent());">[Get contents]</a>
- <a href="javascript:;" onmousedown="alert(tinyMCE.get('elm1').selection.getContent());">[Get selected HTML]</a>
- <a href="javascript:;" onmousedown="alert(tinyMCE.get('elm1').selection.getContent({format : 'text'}));">[Get selected text]</a>
- <a href="javascript:;" onmousedown="alert(tinyMCE.get('elm1').selection.getNode().nodeName);">[Get selected element]</a>
- <a href="javascript:;" onmousedown="tinyMCE.execCommand('mceInsertContent',false,'<b>Hello world!!</b>');">[Insert HTML]</a>
- <a href="javascript:;" onmousedown="tinyMCE.execCommand('mceReplaceContent',false,'<b>{$selection}</b>');">[Replace selection]</a>
-
- <br />
- <input type="submit" name="save" value="Submit" />
- <input type="reset" name="reset" value="Reset" />
- </div>
-</form>
-<script type="text/javascript">
-if (document.location.protocol == 'file:') {
- alert("The examples might not work properly on the local file system due to security settings in your browser. Please use a real webserver.");
-}
-</script>
-</body>
-</html>
diff --git a/library/tinymce/examples/full.html b/library/tinymce/examples/full.html
deleted file mode 100644
index 84b76ca7a..000000000
--- a/library/tinymce/examples/full.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>Full featured example</title>
-<meta http-equiv="X-UA-Compatible" content="IE=edge" />
-<!-- TinyMCE -->
-<script type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script>
-<script type="text/javascript">
- tinyMCE.init({
- // General options
- mode : "textareas",
- theme : "advanced",
- plugins : "autolink,lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,advlist,autosave,visualblocks",
-
- // Theme options
- theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
- theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
- theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
- theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak,restoredraft,visualblocks",
- theme_advanced_toolbar_location : "top",
- theme_advanced_toolbar_align : "left",
- theme_advanced_statusbar_location : "bottom",
- theme_advanced_resizing : true,
-
- // Example content CSS (should be your site CSS)
- content_css : "css/content.css",
-
- // Drop lists for link/image/media/template dialogs
- template_external_list_url : "lists/template_list.js",
- external_link_list_url : "lists/link_list.js",
- external_image_list_url : "lists/image_list.js",
- media_external_list_url : "lists/media_list.js",
-
- // Style formats
- style_formats : [
- {title : 'Bold text', inline : 'b'},
- {title : 'Red text', inline : 'span', styles : {color : '#ff0000'}},
- {title : 'Red header', block : 'h1', styles : {color : '#ff0000'}},
- {title : 'Example 1', inline : 'span', classes : 'example1'},
- {title : 'Example 2', inline : 'span', classes : 'example2'},
- {title : 'Table styles'},
- {title : 'Table row 1', selector : 'tr', classes : 'tablerow1'}
- ],
-
- // Replace values for the template plugin
- template_replace_values : {
- username : "Some User",
- staffid : "991234"
- }
- });
-</script>
-<!-- /TinyMCE -->
-
-</head>
-<body role="application">
-
-<form method="post" action="http://tinymce.moxiecode.com/dump.php?example=true">
- <div>
- <h3>Full featured example</h3>
-
- <p>
- This page shows all available buttons and plugins that are included in the TinyMCE core package.
- There are more examples on how to use TinyMCE in the <a href="http://tinymce.moxiecode.com/examples/">Wiki</a>.
- </p>
-
- <!-- Gets replaced with TinyMCE, remember HTML in a textarea should be encoded -->
- <div>
- <textarea id="elm1" name="elm1" rows="15" cols="80" style="width: 80%">
- &lt;p&gt;
- This is some example text that you can edit inside the &lt;strong&gt;TinyMCE editor&lt;/strong&gt;.
- &lt;/p&gt;
- &lt;p&gt;
- Nam nisi elit, cursus in rhoncus sit amet, pulvinar laoreet leo. Nam sed lectus quam, ut sagittis tellus. Quisque dignissim mauris a augue rutrum tempor. Donec vitae purus nec massa vestibulum ornare sit amet id tellus. Nunc quam mauris, fermentum nec lacinia eget, sollicitudin nec ante. Aliquam molestie volutpat dapibus. Nunc interdum viverra sodales. Morbi laoreet pulvinar gravida. Quisque ut turpis sagittis nunc accumsan vehicula. Duis elementum congue ultrices. Cras faucibus feugiat arcu quis lacinia. In hac habitasse platea dictumst. Pellentesque fermentum magna sit amet tellus varius ullamcorper. Vestibulum at urna augue, eget varius neque. Fusce facilisis venenatis dapibus. Integer non sem at arcu euismod tempor nec sed nisl. Morbi ultricies, mauris ut ultricies adipiscing, felis odio condimentum massa, et luctus est nunc nec eros.
- &lt;/p&gt;
- </textarea>
- </div>
-
- <!-- Some integration calls -->
- <a href="javascript:;" onclick="tinyMCE.get('elm1').show();return false;">[Show]</a>
- <a href="javascript:;" onclick="tinyMCE.get('elm1').hide();return false;">[Hide]</a>
- <a href="javascript:;" onclick="tinyMCE.get('elm1').execCommand('Bold');return false;">[Bold]</a>
- <a href="javascript:;" onclick="alert(tinyMCE.get('elm1').getContent());return false;">[Get contents]</a>
- <a href="javascript:;" onclick="alert(tinyMCE.get('elm1').selection.getContent());return false;">[Get selected HTML]</a>
- <a href="javascript:;" onclick="alert(tinyMCE.get('elm1').selection.getContent({format : 'text'}));return false;">[Get selected text]</a>
- <a href="javascript:;" onclick="alert(tinyMCE.get('elm1').selection.getNode().nodeName);return false;">[Get selected element]</a>
- <a href="javascript:;" onclick="tinyMCE.execCommand('mceInsertContent',false,'<b>Hello world!!</b>');return false;">[Insert HTML]</a>
- <a href="javascript:;" onclick="tinyMCE.execCommand('mceReplaceContent',false,'<b>{$selection}</b>');return false;">[Replace selection]</a>
-
- <br />
- <input type="submit" name="save" value="Submit" />
- <input type="reset" name="reset" value="Reset" />
- </div>
-</form>
-
-<script type="text/javascript">
-if (document.location.protocol == 'file:') {
- alert("The examples might not work properly on the local file system due to security settings in your browser. Please use a real webserver.");
-}
-</script>
-</body>
-</html>
diff --git a/library/tinymce/examples/index.html b/library/tinymce/examples/index.html
deleted file mode 100644
index 6ebfbea57..000000000
--- a/library/tinymce/examples/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
-<html>
-<head>
- <title>TinyMCE examples</title>
-</head>
-<frameset cols="180,80%">
- <frame src="menu.html" name="menu" />
- <frame src="full.html" name="main" />
-</frameset>
-</html>
diff --git a/library/tinymce/examples/lists/image_list.js b/library/tinymce/examples/lists/image_list.js
deleted file mode 100644
index 7ba049a24..000000000
--- a/library/tinymce/examples/lists/image_list.js
+++ /dev/null
@@ -1,9 +0,0 @@
-// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system.
-// There images will be displayed as a dropdown in all image dialogs if the "external_link_image_url"
-// option is defined in TinyMCE init.
-
-var tinyMCEImageList = new Array(
- // Name, URL
- ["Logo 1", "media/logo.jpg"],
- ["Logo 2 Over", "media/logo_over.jpg"]
-);
diff --git a/library/tinymce/examples/lists/link_list.js b/library/tinymce/examples/lists/link_list.js
deleted file mode 100644
index 0d464331f..000000000
--- a/library/tinymce/examples/lists/link_list.js
+++ /dev/null
@@ -1,10 +0,0 @@
-// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system.
-// There links will be displayed as a dropdown in all link dialogs if the "external_link_list_url"
-// option is defined in TinyMCE init.
-
-var tinyMCELinkList = new Array(
- // Name, URL
- ["Moxiecode", "http://www.moxiecode.com"],
- ["Freshmeat", "http://www.freshmeat.com"],
- ["Sourceforge", "http://www.sourceforge.com"]
-);
diff --git a/library/tinymce/examples/lists/media_list.js b/library/tinymce/examples/lists/media_list.js
deleted file mode 100644
index 2e049587c..000000000
--- a/library/tinymce/examples/lists/media_list.js
+++ /dev/null
@@ -1,14 +0,0 @@
-// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system.
-// There flash movies will be displayed as a dropdown in all media dialog if the "media_external_list_url"
-// option is defined in TinyMCE init.
-
-var tinyMCEMediaList = [
- // Name, URL
- ["Some Flash", "media/sample.swf"],
- ["Some Quicktime", "media/sample.mov"],
- ["Some AVI", "media/sample.avi"],
- ["Some RealMedia", "media/sample.rm"],
- ["Some Shockwave", "media/sample.dcr"],
- ["Some Video", "media/sample.mp4"],
- ["Some FLV", "media/sample.flv"]
-]; \ No newline at end of file
diff --git a/library/tinymce/examples/lists/template_list.js b/library/tinymce/examples/lists/template_list.js
deleted file mode 100644
index e06d35788..000000000
--- a/library/tinymce/examples/lists/template_list.js
+++ /dev/null
@@ -1,9 +0,0 @@
-// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system.
-// There templates will be displayed as a dropdown in all media dialog if the "template_external_list_url"
-// option is defined in TinyMCE init.
-
-var tinyMCETemplateList = [
- // Name, URL, Description
- ["Simple snippet", "templates/snippet1.htm", "Simple HTML snippet."],
- ["Layout", "templates/layout1.htm", "HTML Layout."]
-]; \ No newline at end of file
diff --git a/library/tinymce/examples/media/logo.jpg b/library/tinymce/examples/media/logo.jpg
deleted file mode 100644
index ad535d671..000000000
--- a/library/tinymce/examples/media/logo.jpg
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/examples/media/logo_over.jpg b/library/tinymce/examples/media/logo_over.jpg
deleted file mode 100644
index 79fcd884a..000000000
--- a/library/tinymce/examples/media/logo_over.jpg
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/examples/media/sample.avi b/library/tinymce/examples/media/sample.avi
deleted file mode 100644
index 238bb688a..000000000
--- a/library/tinymce/examples/media/sample.avi
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/examples/media/sample.dcr b/library/tinymce/examples/media/sample.dcr
deleted file mode 100644
index 353b3ce67..000000000
--- a/library/tinymce/examples/media/sample.dcr
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/examples/media/sample.flv b/library/tinymce/examples/media/sample.flv
deleted file mode 100644
index 799d137e6..000000000
--- a/library/tinymce/examples/media/sample.flv
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/examples/media/sample.mov b/library/tinymce/examples/media/sample.mov
deleted file mode 100644
index 9c0a0932c..000000000
--- a/library/tinymce/examples/media/sample.mov
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/examples/media/sample.ram b/library/tinymce/examples/media/sample.ram
deleted file mode 100644
index e2ce04cf7..000000000
--- a/library/tinymce/examples/media/sample.ram
+++ /dev/null
@@ -1 +0,0 @@
-http://streaming.uga.edu/samples/ayp_lan.rm \ No newline at end of file
diff --git a/library/tinymce/examples/media/sample.rm b/library/tinymce/examples/media/sample.rm
deleted file mode 100644
index 8947706e0..000000000
--- a/library/tinymce/examples/media/sample.rm
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/examples/media/sample.swf b/library/tinymce/examples/media/sample.swf
deleted file mode 100644
index 9f5fc4ac5..000000000
--- a/library/tinymce/examples/media/sample.swf
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/examples/menu.html b/library/tinymce/examples/menu.html
deleted file mode 100644
index e48650abd..000000000
--- a/library/tinymce/examples/menu.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>Menu</title>
-<style>
-a {display:block;}
-</style>
-</head>
-<body>
-<h3>Examples</h3>
-<a href="full.html" target="main">Full featured</a>
-<a href="simple.html" target="main">Simple theme</a>
-<a href="skins.html" target="main">Skin support</a>
-<a href="word.html" target="main">Word processor</a>
-<a href="custom_formats.html" target="main">Custom formats</a>
-<a href="accessibility.html" target="main">Accessibility Options</a>
-</body>
-</html>
diff --git a/library/tinymce/examples/simple.html b/library/tinymce/examples/simple.html
deleted file mode 100644
index 70720caa1..000000000
--- a/library/tinymce/examples/simple.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>Simple theme example</title>
-
-<!-- TinyMCE -->
-<script type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script>
-<script type="text/javascript">
- tinyMCE.init({
- mode : "textareas",
- theme : "simple"
- });
-</script>
-<!-- /TinyMCE -->
-
-</head>
-<body>
-
-<form method="post" action="http://tinymce.moxiecode.com/dump.php?example=true">
- <h3>Simple theme example</h3>
-
- <p>
- This page shows you the simple theme and it's core functionality you can extend it by changing the code use the advanced theme if you need to configure/add more buttons etc.
- There are more examples on how to use TinyMCE in the <a href="http://tinymce.moxiecode.com/examples/">Wiki</a>.
- </p>
-
- <!-- Gets replaced with TinyMCE, remember HTML in a textarea should be encoded -->
- <textarea id="elm1" name="elm1" rows="15" cols="80" style="width: 80%">
- &lt;p&gt;
- This is some example text that you can edit inside the &lt;strong&gt;TinyMCE editor&lt;/strong&gt;.
- &lt;/p&gt;
- &lt;p&gt;
- Nam nisi elit, cursus in rhoncus sit amet, pulvinar laoreet leo. Nam sed lectus quam, ut sagittis tellus. Quisque dignissim mauris a augue rutrum tempor. Donec vitae purus nec massa vestibulum ornare sit amet id tellus. Nunc quam mauris, fermentum nec lacinia eget, sollicitudin nec ante. Aliquam molestie volutpat dapibus. Nunc interdum viverra sodales. Morbi laoreet pulvinar gravida. Quisque ut turpis sagittis nunc accumsan vehicula. Duis elementum congue ultrices. Cras faucibus feugiat arcu quis lacinia. In hac habitasse platea dictumst. Pellentesque fermentum magna sit amet tellus varius ullamcorper. Vestibulum at urna augue, eget varius neque. Fusce facilisis venenatis dapibus. Integer non sem at arcu euismod tempor nec sed nisl. Morbi ultricies, mauris ut ultricies adipiscing, felis odio condimentum massa, et luctus est nunc nec eros.
- &lt;/p&gt;
- </textarea>
-
- <br />
- <input type="submit" name="save" value="Submit" />
- <input type="reset" name="reset" value="Reset" />
-</form>
-<script type="text/javascript">
-if (document.location.protocol == 'file:') {
- alert("The examples might not work properly on the local file system due to security settings in your browser. Please use a real webserver.");
-}
-</script>
-</body>
-</html>
diff --git a/library/tinymce/examples/skins.html b/library/tinymce/examples/skins.html
deleted file mode 100644
index c15085885..000000000
--- a/library/tinymce/examples/skins.html
+++ /dev/null
@@ -1,216 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>Skin support example</title>
-
-<!-- TinyMCE -->
-<script type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script>
-<script type="text/javascript">
- // Default skin
- tinyMCE.init({
- // General options
- mode : "exact",
- elements : "elm1",
- theme : "advanced",
- plugins : "autolink,lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave",
-
- // Theme options
- theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
- theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
- theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
- theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak,restoredraft",
- theme_advanced_toolbar_location : "top",
- theme_advanced_toolbar_align : "left",
- theme_advanced_statusbar_location : "bottom",
- theme_advanced_resizing : true,
-
- // Example content CSS (should be your site CSS)
- content_css : "css/content.css",
-
- // Drop lists for link/image/media/template dialogs
- template_external_list_url : "lists/template_list.js",
- external_link_list_url : "lists/link_list.js",
- external_image_list_url : "lists/image_list.js",
- media_external_list_url : "lists/media_list.js",
-
- // Replace values for the template plugin
- template_replace_values : {
- username : "Some User",
- staffid : "991234"
- }
- });
-
- // O2k7 skin
- tinyMCE.init({
- // General options
- mode : "exact",
- elements : "elm2",
- theme : "advanced",
- skin : "o2k7",
- plugins : "lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave",
-
- // Theme options
- theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
- theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
- theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
- theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak,restoredraft",
- theme_advanced_toolbar_location : "top",
- theme_advanced_toolbar_align : "left",
- theme_advanced_statusbar_location : "bottom",
- theme_advanced_resizing : true,
-
- // Example content CSS (should be your site CSS)
- content_css : "css/content.css",
-
- // Drop lists for link/image/media/template dialogs
- template_external_list_url : "lists/template_list.js",
- external_link_list_url : "lists/link_list.js",
- external_image_list_url : "lists/image_list.js",
- media_external_list_url : "lists/media_list.js",
-
- // Replace values for the template plugin
- template_replace_values : {
- username : "Some User",
- staffid : "991234"
- }
- });
-
- // O2k7 skin (silver)
- tinyMCE.init({
- // General options
- mode : "exact",
- elements : "elm3",
- theme : "advanced",
- skin : "o2k7",
- skin_variant : "silver",
- plugins : "lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave",
-
- // Theme options
- theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
- theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
- theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
- theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak,restoredraft",
- theme_advanced_toolbar_location : "top",
- theme_advanced_toolbar_align : "left",
- theme_advanced_statusbar_location : "bottom",
- theme_advanced_resizing : true,
-
- // Example content CSS (should be your site CSS)
- content_css : "css/content.css",
-
- // Drop lists for link/image/media/template dialogs
- template_external_list_url : "lists/template_list.js",
- external_link_list_url : "lists/link_list.js",
- external_image_list_url : "lists/image_list.js",
- media_external_list_url : "lists/media_list.js",
-
- // Replace values for the template plugin
- template_replace_values : {
- username : "Some User",
- staffid : "991234"
- }
- });
-
- // O2k7 skin (silver)
- tinyMCE.init({
- // General options
- mode : "exact",
- elements : "elm4",
- theme : "advanced",
- skin : "o2k7",
- skin_variant : "black",
- plugins : "lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave",
-
- // Theme options
- theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
- theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
- theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
- theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak,restoredraft",
- theme_advanced_toolbar_location : "top",
- theme_advanced_toolbar_align : "left",
- theme_advanced_statusbar_location : "bottom",
- theme_advanced_resizing : true,
-
- // Example content CSS (should be your site CSS)
- content_css : "css/content.css",
-
- // Drop lists for link/image/media/template dialogs
- template_external_list_url : "lists/template_list.js",
- external_link_list_url : "lists/link_list.js",
- external_image_list_url : "lists/image_list.js",
- media_external_list_url : "lists/media_list.js",
-
- // Replace values for the template plugin
- template_replace_values : {
- username : "Some User",
- staffid : "991234"
- }
- });
-</script>
-<!-- /TinyMCE -->
-
-</head>
-<body>
-
-<form method="post" action="http://tinymce.moxiecode.com/dump.php?example=true">
- <h3>Skin support example</h3>
-
- <p>
- This page displays the two skins that TinyMCE comes with. You can make your own by creating a CSS file in themes/advanced/skins/<yout skin>/ui.css
- There are more examples on how to use TinyMCE in the <a href="http://tinymce.moxiecode.com/examples/">Wiki</a>.
- </p>
-
- <!-- Gets replaced with TinyMCE, remember HTML in a textarea should be encoded -->
- <textarea id="elm1" name="elm1" rows="15" cols="80" style="width: 80%">
- &lt;p&gt;
- This is some example text that you can edit inside the &lt;strong&gt;TinyMCE editor&lt;/strong&gt;.
- &lt;/p&gt;
- &lt;p&gt;
- Nam nisi elit, cursus in rhoncus sit amet, pulvinar laoreet leo. Nam sed lectus quam, ut sagittis tellus. Quisque dignissim mauris a augue rutrum tempor. Donec vitae purus nec massa vestibulum ornare sit amet id tellus. Nunc quam mauris, fermentum nec lacinia eget, sollicitudin nec ante. Aliquam molestie volutpat dapibus. Nunc interdum viverra sodales. Morbi laoreet pulvinar gravida. Quisque ut turpis sagittis nunc accumsan vehicula. Duis elementum congue ultrices. Cras faucibus feugiat arcu quis lacinia. In hac habitasse platea dictumst. Pellentesque fermentum magna sit amet tellus varius ullamcorper. Vestibulum at urna augue, eget varius neque. Fusce facilisis venenatis dapibus. Integer non sem at arcu euismod tempor nec sed nisl. Morbi ultricies, mauris ut ultricies adipiscing, felis odio condimentum massa, et luctus est nunc nec eros.
- &lt;/p&gt;
- </textarea>
-
- <br />
-
- <textarea id="elm2" name="elm2" rows="15" cols="80" style="width: 80%">
- &lt;p&gt;
- This is some example text that you can edit inside the &lt;strong&gt;TinyMCE editor&lt;/strong&gt;.
- &lt;/p&gt;
- &lt;p&gt;
- Nam nisi elit, cursus in rhoncus sit amet, pulvinar laoreet leo. Nam sed lectus quam, ut sagittis tellus. Quisque dignissim mauris a augue rutrum tempor. Donec vitae purus nec massa vestibulum ornare sit amet id tellus. Nunc quam mauris, fermentum nec lacinia eget, sollicitudin nec ante. Aliquam molestie volutpat dapibus. Nunc interdum viverra sodales. Morbi laoreet pulvinar gravida. Quisque ut turpis sagittis nunc accumsan vehicula. Duis elementum congue ultrices. Cras faucibus feugiat arcu quis lacinia. In hac habitasse platea dictumst. Pellentesque fermentum magna sit amet tellus varius ullamcorper. Vestibulum at urna augue, eget varius neque. Fusce facilisis venenatis dapibus. Integer non sem at arcu euismod tempor nec sed nisl. Morbi ultricies, mauris ut ultricies adipiscing, felis odio condimentum massa, et luctus est nunc nec eros.
- &lt;/p&gt;
- </textarea>
-
- <br />
-
- <textarea id="elm3" name="elm3" rows="15" cols="80" style="width: 80%">
- &lt;p&gt;
- This is some example text that you can edit inside the &lt;strong&gt;TinyMCE editor&lt;/strong&gt;.
- &lt;/p&gt;
- &lt;p&gt;
- Nam nisi elit, cursus in rhoncus sit amet, pulvinar laoreet leo. Nam sed lectus quam, ut sagittis tellus. Quisque dignissim mauris a augue rutrum tempor. Donec vitae purus nec massa vestibulum ornare sit amet id tellus. Nunc quam mauris, fermentum nec lacinia eget, sollicitudin nec ante. Aliquam molestie volutpat dapibus. Nunc interdum viverra sodales. Morbi laoreet pulvinar gravida. Quisque ut turpis sagittis nunc accumsan vehicula. Duis elementum congue ultrices. Cras faucibus feugiat arcu quis lacinia. In hac habitasse platea dictumst. Pellentesque fermentum magna sit amet tellus varius ullamcorper. Vestibulum at urna augue, eget varius neque. Fusce facilisis venenatis dapibus. Integer non sem at arcu euismod tempor nec sed nisl. Morbi ultricies, mauris ut ultricies adipiscing, felis odio condimentum massa, et luctus est nunc nec eros.
- &lt;/p&gt;
- </textarea>
-
- <br />
-
- <textarea id="elm4" name="elm4" rows="15" cols="80" style="width: 80%">
- &lt;p&gt;
- This is some example text that you can edit inside the &lt;strong&gt;TinyMCE editor&lt;/strong&gt;.
- &lt;/p&gt;
- &lt;p&gt;
- Nam nisi elit, cursus in rhoncus sit amet, pulvinar laoreet leo. Nam sed lectus quam, ut sagittis tellus. Quisque dignissim mauris a augue rutrum tempor. Donec vitae purus nec massa vestibulum ornare sit amet id tellus. Nunc quam mauris, fermentum nec lacinia eget, sollicitudin nec ante. Aliquam molestie volutpat dapibus. Nunc interdum viverra sodales. Morbi laoreet pulvinar gravida. Quisque ut turpis sagittis nunc accumsan vehicula. Duis elementum congue ultrices. Cras faucibus feugiat arcu quis lacinia. In hac habitasse platea dictumst. Pellentesque fermentum magna sit amet tellus varius ullamcorper. Vestibulum at urna augue, eget varius neque. Fusce facilisis venenatis dapibus. Integer non sem at arcu euismod tempor nec sed nisl. Morbi ultricies, mauris ut ultricies adipiscing, felis odio condimentum massa, et luctus est nunc nec eros.
- &lt;/p&gt;
- </textarea>
-
- <br />
- <input type="submit" name="save" value="Submit" />
- <input type="reset" name="reset" value="Reset" />
-</form>
-<script type="text/javascript">
-if (document.location.protocol == 'file:') {
- alert("The examples might not work properly on the local file system due to security settings in your browser. Please use a real webserver.");
-}
-</script>
-</body>
-</html>
diff --git a/library/tinymce/examples/templates/layout1.htm b/library/tinymce/examples/templates/layout1.htm
deleted file mode 100644
index a38df3e68..000000000
--- a/library/tinymce/examples/templates/layout1.htm
+++ /dev/null
@@ -1,15 +0,0 @@
-<table border="1">
- <thead>
- <tr>
- <td>Column 1</td>
- <td>Column 2</td>
- </tr>
- </thead>
-
- <tbody>
- <tr>
- <td>Username: {$username}</td>
- <td>Staffid: {$staffid}</td>
- </tr>
- </tbody>
-</table>
diff --git a/library/tinymce/examples/templates/snippet1.htm b/library/tinymce/examples/templates/snippet1.htm
deleted file mode 100644
index b2520beaf..000000000
--- a/library/tinymce/examples/templates/snippet1.htm
+++ /dev/null
@@ -1 +0,0 @@
-This is just some <strong>code</strong>.
diff --git a/library/tinymce/examples/word.html b/library/tinymce/examples/word.html
deleted file mode 100644
index d827b6fed..000000000
--- a/library/tinymce/examples/word.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>Word processor example</title>
-<meta http-equiv="X-UA-Compatible" content="IE=edge" />
-<!-- TinyMCE -->
-<script type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script>
-<script type="text/javascript">
- tinyMCE.init({
- // General options
- mode : "textareas",
- theme : "advanced",
- skin : "o2k7",
- plugins : "autolink,lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave",
-
- // Theme options
- theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
- theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
- theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
- theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak,restoredraft",
- theme_advanced_toolbar_location : "top",
- theme_advanced_toolbar_align : "left",
- theme_advanced_statusbar_location : "bottom",
- theme_advanced_resizing : true,
-
- // Example word content CSS (should be your site CSS) this one removes paragraph margins
- content_css : "css/word.css",
-
- // Drop lists for link/image/media/template dialogs
- template_external_list_url : "lists/template_list.js",
- external_link_list_url : "lists/link_list.js",
- external_image_list_url : "lists/image_list.js",
- media_external_list_url : "lists/media_list.js",
-
- // Replace values for the template plugin
- template_replace_values : {
- username : "Some User",
- staffid : "991234"
- }
- });
-</script>
-<!-- /TinyMCE -->
-
-</head>
-<body>
-
-<form method="post" action="http://tinymce.moxiecode.com/dump.php?example=true">
- <h3>Word processor example</h3>
-
- <p>
- This page shows you how to configure TinyMCE to work more like common word processors.
- There are more examples on how to use TinyMCE in the <a href="http://tinymce.moxiecode.com/examples/">Wiki</a>.
- </p>
-
- <!-- Gets replaced with TinyMCE, remember HTML in a textarea should be encoded -->
- <textarea id="elm1" name="elm1" rows="15" cols="80" style="width: 80%">
- &lt;p&gt;This is the first paragraph.&lt;/p&gt;
- &lt;p&gt;This is the second paragraph.&lt;/p&gt;
- &lt;p&gt;This is the third paragraph.&lt;/p&gt;
- </textarea>
-
- <br />
- <input type="submit" name="save" value="Submit" />
- <input type="reset" name="reset" value="Reset" />
-</form>
-<script type="text/javascript">
-if (document.location.protocol == 'file:') {
- alert("The examples might not work properly on the local file system due to security settings in your browser. Please use a real webserver.");
-}
-</script>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/langs/en.js b/library/tinymce/jscripts/tiny_mce/langs/en.js
deleted file mode 100644
index 19324f74c..000000000
--- a/library/tinymce/jscripts/tiny_mce/langs/en.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({en:{common:{"more_colors":"More Colors...","invalid_data":"Error: Invalid values entered, these are marked in red.","popup_blocked":"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.","clipboard_no_support":"Currently not supported by your browser, use keyboard shortcuts instead.","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","not_set":"-- Not Set --","class_name":"Class",browse:"Browse",close:"Close",cancel:"Cancel",update:"Update",insert:"Insert",apply:"Apply","edit_confirm":"Do you want to use the WYSIWYG mode for this textarea?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"Full",right:"Right",center:"Center",left:"Left",align:"Alignment"},insertdatetime:{"day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","inserttime_desc":"Insert Time","insertdate_desc":"Insert Date","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Print"},preview:{"preview_desc":"Preview"},directionality:{"rtl_desc":"Direction Right to Left","ltr_desc":"Direction Left to Right"},layer:{content:"New layer...","absolute_desc":"Toggle Absolute Positioning","backward_desc":"Move Backward","forward_desc":"Move Forward","insertlayer_desc":"Insert New Layer"},save:{"save_desc":"Save","cancel_desc":"Cancel All Changes"},nonbreaking:{"nonbreaking_desc":"Insert Non-Breaking Space Character"},iespell:{download:"ieSpell not detected. Do you want to install it now?","iespell_desc":"Check Spelling"},advhr:{"delta_height":"","delta_width":"","advhr_desc":"Insert Horizontal Line"},emotions:{"delta_height":"","delta_width":"","emotions_desc":"Emotions"},searchreplace:{"replace_desc":"Find/Replace","delta_width":"","delta_height":"","search_desc":"Find"},advimage:{"delta_width":"","image_desc":"Insert/Edit Image","delta_height":""},advlink:{"delta_height":"","delta_width":"","link_desc":"Insert/Edit Link"},xhtmlxtras:{"attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":"","attribs_desc":"Insert/Edit Attributes","ins_desc":"Insertion","del_desc":"Deletion","acronym_desc":"Acronym","abbr_desc":"Abbreviation","cite_desc":"Citation"},style:{"delta_height":"","delta_width":"",desc:"Edit CSS Style"},paste:{"plaintext_mode_stick":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.","selectall_desc":"Select All","paste_word_desc":"Paste from Word","paste_text_desc":"Paste as Plain Text"},"paste_dlg":{"word_title":"Use Ctrl+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep Linebreaks","text_title":"Use Ctrl+V on your keyboard to paste the text into the window."},table:{"merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":"",cell:"Cell",col:"Column",row:"Row",del:"Delete Table","copy_row_desc":"Copy Table Row","cut_row_desc":"Cut Table Row","paste_row_after_desc":"Paste Table Row After","paste_row_before_desc":"Paste Table Row Before","props_desc":"Table Properties","cell_desc":"Table Cell Properties","row_desc":"Table Row Properties","merge_cells_desc":"Merge Table Cells","split_cells_desc":"Split Merged Table Cells","delete_col_desc":"Delete Column","col_after_desc":"Insert Column After","col_before_desc":"Insert Column Before","delete_row_desc":"Delete Row","row_after_desc":"Insert Row After","row_before_desc":"Insert Row Before",desc:"Insert/Edit Table"},autosave:{"warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?","restore_content":"Restore auto-saved content.","unload_msg":"The changes you made will be lost if you navigate away from this page."},fullscreen:{desc:"Toggle Full Screen Mode"},media:{"delta_height":"","delta_width":"",edit:"Edit Embedded Media",desc:"Insert/Edit Embedded Media"},fullpage:{desc:"Document Properties","delta_width":"","delta_height":""},template:{desc:"Insert Predefined Template Content"},visualchars:{desc:"Show/Hide Visual Control Characters"},spellchecker:{desc:"Toggle Spell Checker",menu:"Spell Checker Settings","ignore_word":"Ignore Word","ignore_words":"Ignore All",langs:"Languages",wait:"Please wait...",sug:"Suggestions","no_sug":"No Suggestions","no_mpell":"No misspellings found.","learn_word":"Learn word"},pagebreak:{desc:"Insert Page Break for Printing"},advlist:{types:"Types",def:"Default","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words:"},visualblocks:{desc:'Show/hide block elements'}}}); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/license.txt b/library/tinymce/jscripts/tiny_mce/license.txt
deleted file mode 100644
index 60d6d4c8f..000000000
--- a/library/tinymce/jscripts/tiny_mce/license.txt
+++ /dev/null
@@ -1,504 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css b/library/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css
deleted file mode 100644
index 0e2283498..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css
+++ /dev/null
@@ -1,5 +0,0 @@
-input.radio {border:1px none #000; background:transparent; vertical-align:middle;}
-.panel_wrapper div.current {height:80px;}
-#width {width:50px; vertical-align:middle;}
-#width2 {width:50px; vertical-align:middle;}
-#size {width:100px;}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js
deleted file mode 100644
index 4d3b062de..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.AdvancedHRPlugin",{init:function(a,b){a.addCommand("mceAdvancedHr",function(){a.windowManager.open({file:b+"/rule.htm",width:250+parseInt(a.getLang("advhr.delta_width",0)),height:160+parseInt(a.getLang("advhr.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("advhr",{title:"advhr.advhr_desc",cmd:"mceAdvancedHr"});a.onNodeChange.add(function(d,c,e){c.setActive("advhr",e.nodeName=="HR")});a.onClick.add(function(c,d){d=d.target;if(d.nodeName==="HR"){c.selection.select(d)}})},getInfo:function(){return{longname:"Advanced HR",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advhr",tinymce.plugins.AdvancedHRPlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js
deleted file mode 100644
index 0c652d330..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.AdvancedHRPlugin', {
- init : function(ed, url) {
- // Register commands
- ed.addCommand('mceAdvancedHr', function() {
- ed.windowManager.open({
- file : url + '/rule.htm',
- width : 250 + parseInt(ed.getLang('advhr.delta_width', 0)),
- height : 160 + parseInt(ed.getLang('advhr.delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- // Register buttons
- ed.addButton('advhr', {
- title : 'advhr.advhr_desc',
- cmd : 'mceAdvancedHr'
- });
-
- ed.onNodeChange.add(function(ed, cm, n) {
- cm.setActive('advhr', n.nodeName == 'HR');
- });
-
- ed.onClick.add(function(ed, e) {
- e = e.target;
-
- if (e.nodeName === 'HR')
- ed.selection.select(e);
- });
- },
-
- getInfo : function() {
- return {
- longname : 'Advanced HR',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('advhr', tinymce.plugins.AdvancedHRPlugin);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js b/library/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js
deleted file mode 100644
index b6cbd66c7..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var AdvHRDialog = {
- init : function(ed) {
- var dom = ed.dom, f = document.forms[0], n = ed.selection.getNode(), w;
-
- w = dom.getAttrib(n, 'width');
- f.width.value = w ? parseInt(w) : (dom.getStyle('width') || '');
- f.size.value = dom.getAttrib(n, 'size') || parseInt(dom.getStyle('height')) || '';
- f.noshade.checked = !!dom.getAttrib(n, 'noshade') || !!dom.getStyle('border-width');
- selectByValue(f, 'width2', w.indexOf('%') != -1 ? '%' : 'px');
- },
-
- update : function() {
- var ed = tinyMCEPopup.editor, h, f = document.forms[0], st = '';
-
- h = '<hr';
-
- if (f.size.value) {
- h += ' size="' + f.size.value + '"';
- st += ' height:' + f.size.value + 'px;';
- }
-
- if (f.width.value) {
- h += ' width="' + f.width.value + (f.width2.value == '%' ? '%' : '') + '"';
- st += ' width:' + f.width.value + (f.width2.value == '%' ? '%' : 'px') + ';';
- }
-
- if (f.noshade.checked) {
- h += ' noshade="noshade"';
- st += ' border-width: 1px; border-style: solid; border-color: #CCCCCC; color: #ffffff;';
- }
-
- if (ed.settings.inline_styles)
- h += ' style="' + tinymce.trim(st) + '"';
-
- h += ' />';
-
- ed.execCommand("mceInsertContent", false, h);
- tinyMCEPopup.close();
- }
-};
-
-tinyMCEPopup.requireLangPack();
-tinyMCEPopup.onInit.add(AdvHRDialog.init, AdvHRDialog);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js
deleted file mode 100644
index 0c3bf15e6..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.advhr_dlg',{size:"Height",noshade:"No Shadow",width:"Width",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm b/library/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm
deleted file mode 100644
index 843e1f8f0..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advhr.advhr_desc}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/rule.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <link href="css/advhr.css" rel="stylesheet" type="text/css" />
-</head>
-<body role="application">
-<form onsubmit="AdvHRDialog.update();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advhr.advhr_desc}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr role="group" aria-labelledby="width_label">
- <td><label id="width_label" for="width">{#advhr_dlg.width}</label></td>
- <td class="nowrap">
- <input id="width" name="width" type="text" value="" class="mceFocus" />
- <span style="display:none;" id="width_unit_label">{#advhr_dlg.widthunits}</span>
- <select name="width2" id="width2" aria-labelledby="width_unit_label">
- <option value="">px</option>
- <option value="%">%</option>
- </select>
- </td>
- </tr>
- <tr>
- <td><label for="size">{#advhr_dlg.size}</label></td>
- <td><select id="size" name="size">
- <option value="">{#advhr_dlg.normal}</option>
- <option value="1">1</option>
- <option value="2">2</option>
- <option value="3">3</option>
- <option value="4">4</option>
- <option value="5">5</option>
- </select></td>
- </tr>
- <tr>
- <td><label for="noshade">{#advhr_dlg.noshade}</label></td>
- <td><input type="checkbox" name="noshade" id="noshade" class="radio" /></td>
- </tr>
- </table>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css b/library/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css
deleted file mode 100644
index 0a6251a69..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css
+++ /dev/null
@@ -1,13 +0,0 @@
-#src_list, #over_list, #out_list {width:280px;}
-.mceActionPanel {margin-top:7px;}
-.alignPreview {border:1px solid #000; width:140px; height:140px; overflow:hidden; padding:5px;}
-.checkbox {border:0;}
-.panel_wrapper div.current {height:305px;}
-#prev {margin:0; border:1px solid #000; width:428px; height:150px; overflow:auto;}
-#align, #classlist {width:150px;}
-#width, #height {vertical-align:middle; width:50px; text-align:center;}
-#vspace, #hspace, #border {vertical-align:middle; width:30px; text-align:center;}
-#class_list {width:180px;}
-input {width: 280px;}
-#constrain, #onmousemovecheck {width:auto;}
-#id, #dir, #lang, #usemap, #longdesc {width:200px;}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js
deleted file mode 100644
index d613a6139..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.AdvancedImagePlugin",{init:function(a,b){a.addCommand("mceAdvImage",function(){if(a.dom.getAttrib(a.selection.getNode(),"class","").indexOf("mceItem")!=-1){return}a.windowManager.open({file:b+"/image.htm",width:480+parseInt(a.getLang("advimage.delta_width",0)),height:385+parseInt(a.getLang("advimage.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("image",{title:"advimage.image_desc",cmd:"mceAdvImage"})},getInfo:function(){return{longname:"Advanced image",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advimage",tinymce.plugins.AdvancedImagePlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js
deleted file mode 100644
index d2678cbcf..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.AdvancedImagePlugin', {
- init : function(ed, url) {
- // Register commands
- ed.addCommand('mceAdvImage', function() {
- // Internal image object like a flash placeholder
- if (ed.dom.getAttrib(ed.selection.getNode(), 'class', '').indexOf('mceItem') != -1)
- return;
-
- ed.windowManager.open({
- file : url + '/image.htm',
- width : 480 + parseInt(ed.getLang('advimage.delta_width', 0)),
- height : 385 + parseInt(ed.getLang('advimage.delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- // Register buttons
- ed.addButton('image', {
- title : 'advimage.image_desc',
- cmd : 'mceAdvImage'
- });
- },
-
- getInfo : function() {
- return {
- longname : 'Advanced image',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('advimage', tinymce.plugins.AdvancedImagePlugin);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm b/library/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm
deleted file mode 100644
index ed16b3d4a..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm
+++ /dev/null
@@ -1,235 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advimage_dlg.dialog_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/validate.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/image.js"></script>
- <link href="css/advimage.css" rel="stylesheet" type="text/css" />
-</head>
-<body id="advimage" style="display: none" role="application" aria-labelledby="app_title">
- <span id="app_title" style="display:none">{#advimage_dlg.dialog_title}</span>
- <form onsubmit="ImageDialog.insert();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advimage_dlg.tab_general}</a></span></li>
- <li id="appearance_tab" aria-controls="appearance_panel"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#advimage_dlg.tab_appearance}</a></span></li>
- <li id="advanced_tab" aria-controls="advanced_panel"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#advimage_dlg.tab_advanced}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#advimage_dlg.general}</legend>
-
- <table role="presentation" class="properties">
- <tr>
- <td class="column1"><label id="srclabel" for="src">{#advimage_dlg.src}</label></td>
- <td colspan="2"><table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input name="src" type="text" id="src" value="" class="mceFocus" onchange="ImageDialog.showPreviewImage(this.value);" aria-required="true" /></td>
- <td id="srcbrowsercontainer">&nbsp;</td>
- </tr>
- </table></td>
- </tr>
- <tr>
- <td><label for="src_list">{#advimage_dlg.image_list}</label></td>
- <td><select id="src_list" name="src_list" onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;document.getElementById('title').value=this.options[this.selectedIndex].text;ImageDialog.showPreviewImage(this.options[this.selectedIndex].value);"><option value=""></option></select></td>
- </tr>
- <tr>
- <td class="column1"><label id="altlabel" for="alt">{#advimage_dlg.alt}</label></td>
- <td colspan="2"><input id="alt" name="alt" type="text" value="" /></td>
- </tr>
- <tr>
- <td class="column1"><label id="titlelabel" for="title">{#advimage_dlg.title}</label></td>
- <td colspan="2"><input id="title" name="title" type="text" value="" /></td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset>
- <legend>{#advimage_dlg.preview}</legend>
- <div id="prev"></div>
- </fieldset>
- </div>
-
- <div id="appearance_panel" class="panel">
- <fieldset>
- <legend>{#advimage_dlg.tab_appearance}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="column1"><label id="alignlabel" for="align">{#advimage_dlg.align}</label></td>
- <td><select id="align" name="align" onchange="ImageDialog.updateStyle('align');ImageDialog.changeAppearance();">
- <option value="">{#not_set}</option>
- <option value="baseline">{#advimage_dlg.align_baseline}</option>
- <option value="top">{#advimage_dlg.align_top}</option>
- <option value="middle">{#advimage_dlg.align_middle}</option>
- <option value="bottom">{#advimage_dlg.align_bottom}</option>
- <option value="text-top">{#advimage_dlg.align_texttop}</option>
- <option value="text-bottom">{#advimage_dlg.align_textbottom}</option>
- <option value="left">{#advimage_dlg.align_left}</option>
- <option value="right">{#advimage_dlg.align_right}</option>
- </select>
- </td>
- <td rowspan="6" valign="top">
- <div class="alignPreview">
- <img id="alignSampleImg" src="img/sample.gif" alt="{#advimage_dlg.example_img}" />
- Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam
- nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum
- edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam
- erat volutpat.
- </div>
- </td>
- </tr>
-
- <tr role="group" aria-labelledby="widthlabel">
- <td class="column1"><label id="widthlabel" for="width">{#advimage_dlg.dimensions}</label></td>
- <td class="nowrap">
- <span style="display:none" id="width_voiceLabel">{#advimage_dlg.width}</span>
- <input name="width" type="text" id="width" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeHeight();" aria-labelledby="width_voiceLabel" /> x
- <span style="display:none" id="height_voiceLabel">{#advimage_dlg.height}</span>
- <input name="height" type="text" id="height" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeWidth();" aria-labelledby="height_voiceLabel" /> px
- </td>
- </tr>
-
- <tr>
- <td>&nbsp;</td>
- <td><table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>
- <td><label id="constrainlabel" for="constrain">{#advimage_dlg.constrain_proportions}</label></td>
- </tr>
- </table></td>
- </tr>
-
- <tr>
- <td class="column1"><label id="vspacelabel" for="vspace">{#advimage_dlg.vspace}</label></td>
- <td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('vspace');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('vspace');ImageDialog.changeAppearance();" />
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label id="hspacelabel" for="hspace">{#advimage_dlg.hspace}</label></td>
- <td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('hspace');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('hspace');ImageDialog.changeAppearance();" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label id="borderlabel" for="border">{#advimage_dlg.border}</label></td>
- <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('border');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('border');ImageDialog.changeAppearance();" /></td>
- </tr>
-
- <tr>
- <td><label for="class_list">{#class_name}</label></td>
- <td colspan="2"><select id="class_list" name="class_list" class="mceEditableSelect"><option value=""></option></select></td>
- </tr>
-
- <tr>
- <td class="column1"><label id="stylelabel" for="style">{#advimage_dlg.style}</label></td>
- <td colspan="2"><input id="style" name="style" type="text" value="" onchange="ImageDialog.changeAppearance();" /></td>
- </tr>
-
- <!-- <tr>
- <td class="column1"><label id="classeslabel" for="classes">{#advimage_dlg.classes}</label></td>
- <td colspan="2"><input id="classes" name="classes" type="text" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>
- </tr> -->
- </table>
- </fieldset>
- </div>
-
- <div id="advanced_panel" class="panel">
- <fieldset>
- <legend>{#advimage_dlg.swap_image}</legend>
-
- <input type="checkbox" id="onmousemovecheck" name="onmousemovecheck" class="checkbox" onclick="ImageDialog.setSwapImage(this.checked);" aria-controls="onmouseoversrc onmouseoutsrc" />
- <label id="onmousemovechecklabel" for="onmousemovecheck">{#advimage_dlg.alt_image}</label>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0" width="100%">
- <tr>
- <td class="column1"><label id="onmouseoversrclabel" for="onmouseoversrc">{#advimage_dlg.mouseover}</label></td>
- <td><table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="onmouseoversrc" name="onmouseoversrc" type="text" value="" /></td>
- <td id="onmouseoversrccontainer">&nbsp;</td>
- </tr>
- </table></td>
- </tr>
- <tr>
- <td><label for="over_list">{#advimage_dlg.image_list}</label></td>
- <td><select id="over_list" name="over_list" onchange="document.getElementById('onmouseoversrc').value=this.options[this.selectedIndex].value;"><option value=""></option></select></td>
- </tr>
- <tr>
- <td class="column1"><label id="onmouseoutsrclabel" for="onmouseoutsrc">{#advimage_dlg.mouseout}</label></td>
- <td class="column2"><table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="onmouseoutsrc" name="onmouseoutsrc" type="text" value="" /></td>
- <td id="onmouseoutsrccontainer">&nbsp;</td>
- </tr>
- </table></td>
- </tr>
- <tr>
- <td><label for="out_list">{#advimage_dlg.image_list}</label></td>
- <td><select id="out_list" name="out_list" onchange="document.getElementById('onmouseoutsrc').value=this.options[this.selectedIndex].value;"><option value=""></option></select></td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset>
- <legend>{#advimage_dlg.misc}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="column1"><label id="idlabel" for="id">{#advimage_dlg.id}</label></td>
- <td><input id="id" name="id" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label id="dirlabel" for="dir">{#advimage_dlg.langdir}</label></td>
- <td>
- <select id="dir" name="dir" onchange="ImageDialog.changeAppearance();">
- <option value="">{#not_set}</option>
- <option value="ltr">{#advimage_dlg.ltr}</option>
- <option value="rtl">{#advimage_dlg.rtl}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label id="langlabel" for="lang">{#advimage_dlg.langcode}</label></td>
- <td>
- <input id="lang" name="lang" type="text" value="" />
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label id="usemaplabel" for="usemap">{#advimage_dlg.map}</label></td>
- <td>
- <input id="usemap" name="usemap" type="text" value="" />
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label id="longdesclabel" for="longdesc">{#advimage_dlg.long_desc}</label></td>
- <td><table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="longdesc" name="longdesc" type="text" value="" /></td>
- <td id="longdesccontainer">&nbsp;</td>
- </tr>
- </table></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
- </form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif b/library/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif
deleted file mode 100644
index 53bf6890b..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js b/library/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js
deleted file mode 100644
index 546b69c0d..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js
+++ /dev/null
@@ -1,462 +0,0 @@
-var ImageDialog = {
- preInit : function() {
- var url;
-
- tinyMCEPopup.requireLangPack();
-
- if (url = tinyMCEPopup.getParam("external_image_list_url"))
- document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
- },
-
- init : function(ed) {
- var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, dom = ed.dom, n = ed.selection.getNode(), fl = tinyMCEPopup.getParam('external_image_list', 'tinyMCEImageList');
-
- tinyMCEPopup.resizeToInnerSize();
- this.fillClassList('class_list');
- this.fillFileList('src_list', fl);
- this.fillFileList('over_list', fl);
- this.fillFileList('out_list', fl);
- TinyMCE_EditableSelects.init();
-
- if (n.nodeName == 'IMG') {
- nl.src.value = dom.getAttrib(n, 'src');
- nl.width.value = dom.getAttrib(n, 'width');
- nl.height.value = dom.getAttrib(n, 'height');
- nl.alt.value = dom.getAttrib(n, 'alt');
- nl.title.value = dom.getAttrib(n, 'title');
- nl.vspace.value = this.getAttrib(n, 'vspace');
- nl.hspace.value = this.getAttrib(n, 'hspace');
- nl.border.value = this.getAttrib(n, 'border');
- selectByValue(f, 'align', this.getAttrib(n, 'align'));
- selectByValue(f, 'class_list', dom.getAttrib(n, 'class'), true, true);
- nl.style.value = dom.getAttrib(n, 'style');
- nl.id.value = dom.getAttrib(n, 'id');
- nl.dir.value = dom.getAttrib(n, 'dir');
- nl.lang.value = dom.getAttrib(n, 'lang');
- nl.usemap.value = dom.getAttrib(n, 'usemap');
- nl.longdesc.value = dom.getAttrib(n, 'longdesc');
- nl.insert.value = ed.getLang('update');
-
- if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseover')))
- nl.onmouseoversrc.value = dom.getAttrib(n, 'onmouseover').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');
-
- if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseout')))
- nl.onmouseoutsrc.value = dom.getAttrib(n, 'onmouseout').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');
-
- if (ed.settings.inline_styles) {
- // Move attribs to styles
- if (dom.getAttrib(n, 'align'))
- this.updateStyle('align');
-
- if (dom.getAttrib(n, 'hspace'))
- this.updateStyle('hspace');
-
- if (dom.getAttrib(n, 'border'))
- this.updateStyle('border');
-
- if (dom.getAttrib(n, 'vspace'))
- this.updateStyle('vspace');
- }
- }
-
- // Setup browse button
- document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
- if (isVisible('srcbrowser'))
- document.getElementById('src').style.width = '260px';
-
- // Setup browse button
- document.getElementById('onmouseoversrccontainer').innerHTML = getBrowserHTML('overbrowser','onmouseoversrc','image','theme_advanced_image');
- if (isVisible('overbrowser'))
- document.getElementById('onmouseoversrc').style.width = '260px';
-
- // Setup browse button
- document.getElementById('onmouseoutsrccontainer').innerHTML = getBrowserHTML('outbrowser','onmouseoutsrc','image','theme_advanced_image');
- if (isVisible('outbrowser'))
- document.getElementById('onmouseoutsrc').style.width = '260px';
-
- // If option enabled default contrain proportions to checked
- if (ed.getParam("advimage_constrain_proportions", true))
- f.constrain.checked = true;
-
- // Check swap image if valid data
- if (nl.onmouseoversrc.value || nl.onmouseoutsrc.value)
- this.setSwapImage(true);
- else
- this.setSwapImage(false);
-
- this.changeAppearance();
- this.showPreviewImage(nl.src.value, 1);
- },
-
- insert : function(file, title) {
- var ed = tinyMCEPopup.editor, t = this, f = document.forms[0];
-
- if (f.src.value === '') {
- if (ed.selection.getNode().nodeName == 'IMG') {
- ed.dom.remove(ed.selection.getNode());
- ed.execCommand('mceRepaint');
- }
-
- tinyMCEPopup.close();
- return;
- }
-
- if (tinyMCEPopup.getParam("accessibility_warnings", 1)) {
- if (!f.alt.value) {
- tinyMCEPopup.confirm(tinyMCEPopup.getLang('advimage_dlg.missing_alt'), function(s) {
- if (s)
- t.insertAndClose();
- });
-
- return;
- }
- }
-
- t.insertAndClose();
- },
-
- insertAndClose : function() {
- var ed = tinyMCEPopup.editor, f = document.forms[0], nl = f.elements, v, args = {}, el;
-
- tinyMCEPopup.restoreSelection();
-
- // Fixes crash in Safari
- if (tinymce.isWebKit)
- ed.getWin().focus();
-
- if (!ed.settings.inline_styles) {
- args = {
- vspace : nl.vspace.value,
- hspace : nl.hspace.value,
- border : nl.border.value,
- align : getSelectValue(f, 'align')
- };
- } else {
- // Remove deprecated values
- args = {
- vspace : '',
- hspace : '',
- border : '',
- align : ''
- };
- }
-
- tinymce.extend(args, {
- src : nl.src.value.replace(/ /g, '%20'),
- width : nl.width.value,
- height : nl.height.value,
- alt : nl.alt.value,
- title : nl.title.value,
- 'class' : getSelectValue(f, 'class_list'),
- style : nl.style.value,
- id : nl.id.value,
- dir : nl.dir.value,
- lang : nl.lang.value,
- usemap : nl.usemap.value,
- longdesc : nl.longdesc.value
- });
-
- args.onmouseover = args.onmouseout = '';
-
- if (f.onmousemovecheck.checked) {
- if (nl.onmouseoversrc.value)
- args.onmouseover = "this.src='" + nl.onmouseoversrc.value + "';";
-
- if (nl.onmouseoutsrc.value)
- args.onmouseout = "this.src='" + nl.onmouseoutsrc.value + "';";
- }
-
- el = ed.selection.getNode();
-
- if (el && el.nodeName == 'IMG') {
- ed.dom.setAttribs(el, args);
- } else {
- tinymce.each(args, function(value, name) {
- if (value === "") {
- delete args[name];
- }
- });
-
- ed.execCommand('mceInsertContent', false, tinyMCEPopup.editor.dom.createHTML('img', args), {skip_undo : 1});
- ed.undoManager.add();
- }
-
- tinyMCEPopup.editor.execCommand('mceRepaint');
- tinyMCEPopup.editor.focus();
- tinyMCEPopup.close();
- },
-
- getAttrib : function(e, at) {
- var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;
-
- if (ed.settings.inline_styles) {
- switch (at) {
- case 'align':
- if (v = dom.getStyle(e, 'float'))
- return v;
-
- if (v = dom.getStyle(e, 'vertical-align'))
- return v;
-
- break;
-
- case 'hspace':
- v = dom.getStyle(e, 'margin-left')
- v2 = dom.getStyle(e, 'margin-right');
-
- if (v && v == v2)
- return parseInt(v.replace(/[^0-9]/g, ''));
-
- break;
-
- case 'vspace':
- v = dom.getStyle(e, 'margin-top')
- v2 = dom.getStyle(e, 'margin-bottom');
- if (v && v == v2)
- return parseInt(v.replace(/[^0-9]/g, ''));
-
- break;
-
- case 'border':
- v = 0;
-
- tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {
- sv = dom.getStyle(e, 'border-' + sv + '-width');
-
- // False or not the same as prev
- if (!sv || (sv != v && v !== 0)) {
- v = 0;
- return false;
- }
-
- if (sv)
- v = sv;
- });
-
- if (v)
- return parseInt(v.replace(/[^0-9]/g, ''));
-
- break;
- }
- }
-
- if (v = dom.getAttrib(e, at))
- return v;
-
- return '';
- },
-
- setSwapImage : function(st) {
- var f = document.forms[0];
-
- f.onmousemovecheck.checked = st;
- setBrowserDisabled('overbrowser', !st);
- setBrowserDisabled('outbrowser', !st);
-
- if (f.over_list)
- f.over_list.disabled = !st;
-
- if (f.out_list)
- f.out_list.disabled = !st;
-
- f.onmouseoversrc.disabled = !st;
- f.onmouseoutsrc.disabled = !st;
- },
-
- fillClassList : function(id) {
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
-
- if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {
- cl = [];
-
- tinymce.each(v.split(';'), function(v) {
- var p = v.split('=');
-
- cl.push({'title' : p[0], 'class' : p[1]});
- });
- } else
- cl = tinyMCEPopup.editor.dom.getClasses();
-
- if (cl.length > 0) {
- lst.options.length = 0;
- lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
-
- tinymce.each(cl, function(o) {
- lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);
- });
- } else
- dom.remove(dom.getParent(id, 'tr'));
- },
-
- fillFileList : function(id, l) {
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
-
- l = typeof(l) === 'function' ? l() : window[l];
- lst.options.length = 0;
-
- if (l && l.length > 0) {
- lst.options[lst.options.length] = new Option('', '');
-
- tinymce.each(l, function(o) {
- lst.options[lst.options.length] = new Option(o[0], o[1]);
- });
- } else
- dom.remove(dom.getParent(id, 'tr'));
- },
-
- resetImageData : function() {
- var f = document.forms[0];
-
- f.elements.width.value = f.elements.height.value = '';
- },
-
- updateImageData : function(img, st) {
- var f = document.forms[0];
-
- if (!st) {
- f.elements.width.value = img.width;
- f.elements.height.value = img.height;
- }
-
- this.preloadImg = img;
- },
-
- changeAppearance : function() {
- var ed = tinyMCEPopup.editor, f = document.forms[0], img = document.getElementById('alignSampleImg');
-
- if (img) {
- if (ed.getParam('inline_styles')) {
- ed.dom.setAttrib(img, 'style', f.style.value);
- } else {
- img.align = f.align.value;
- img.border = f.border.value;
- img.hspace = f.hspace.value;
- img.vspace = f.vspace.value;
- }
- }
- },
-
- changeHeight : function() {
- var f = document.forms[0], tp, t = this;
-
- if (!f.constrain.checked || !t.preloadImg) {
- return;
- }
-
- if (f.width.value == "" || f.height.value == "")
- return;
-
- tp = (parseInt(f.width.value) / parseInt(t.preloadImg.width)) * t.preloadImg.height;
- f.height.value = tp.toFixed(0);
- },
-
- changeWidth : function() {
- var f = document.forms[0], tp, t = this;
-
- if (!f.constrain.checked || !t.preloadImg) {
- return;
- }
-
- if (f.width.value == "" || f.height.value == "")
- return;
-
- tp = (parseInt(f.height.value) / parseInt(t.preloadImg.height)) * t.preloadImg.width;
- f.width.value = tp.toFixed(0);
- },
-
- updateStyle : function(ty) {
- var dom = tinyMCEPopup.dom, b, bStyle, bColor, v, isIE = tinymce.isIE, f = document.forms[0], img = dom.create('img', {style : dom.get('style').value});
-
- if (tinyMCEPopup.editor.settings.inline_styles) {
- // Handle align
- if (ty == 'align') {
- dom.setStyle(img, 'float', '');
- dom.setStyle(img, 'vertical-align', '');
-
- v = getSelectValue(f, 'align');
- if (v) {
- if (v == 'left' || v == 'right')
- dom.setStyle(img, 'float', v);
- else
- img.style.verticalAlign = v;
- }
- }
-
- // Handle border
- if (ty == 'border') {
- b = img.style.border ? img.style.border.split(' ') : [];
- bStyle = dom.getStyle(img, 'border-style');
- bColor = dom.getStyle(img, 'border-color');
-
- dom.setStyle(img, 'border', '');
-
- v = f.border.value;
- if (v || v == '0') {
- if (v == '0')
- img.style.border = isIE ? '0' : '0 none none';
- else {
- if (b.length == 3 && b[isIE ? 2 : 1])
- bStyle = b[isIE ? 2 : 1];
- else if (!bStyle || bStyle == 'none')
- bStyle = 'solid';
- if (b.length == 3 && b[isIE ? 0 : 2])
- bColor = b[isIE ? 0 : 2];
- else if (!bColor || bColor == 'none')
- bColor = 'black';
- img.style.border = v + 'px ' + bStyle + ' ' + bColor;
- }
- }
- }
-
- // Handle hspace
- if (ty == 'hspace') {
- dom.setStyle(img, 'marginLeft', '');
- dom.setStyle(img, 'marginRight', '');
-
- v = f.hspace.value;
- if (v) {
- img.style.marginLeft = v + 'px';
- img.style.marginRight = v + 'px';
- }
- }
-
- // Handle vspace
- if (ty == 'vspace') {
- dom.setStyle(img, 'marginTop', '');
- dom.setStyle(img, 'marginBottom', '');
-
- v = f.vspace.value;
- if (v) {
- img.style.marginTop = v + 'px';
- img.style.marginBottom = v + 'px';
- }
- }
-
- // Merge
- dom.get('style').value = dom.serializeStyle(dom.parseStyle(img.style.cssText), 'img');
- }
- },
-
- changeMouseMove : function() {
- },
-
- showPreviewImage : function(u, st) {
- if (!u) {
- tinyMCEPopup.dom.setHTML('prev', '');
- return;
- }
-
- if (!st && tinyMCEPopup.getParam("advimage_update_dimensions_onchange", true))
- this.resetImageData();
-
- u = tinyMCEPopup.editor.documentBaseURI.toAbsolute(u);
-
- if (!st)
- tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this);" onerror="ImageDialog.resetImageData();" />');
- else
- tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this, 1);" />');
- }
-};
-
-ImageDialog.preInit();
-tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js
deleted file mode 100644
index 5f122e2cd..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.advimage_dlg',{"image_list":"Image List","align_right":"Right","align_left":"Left","align_textbottom":"Text Bottom","align_texttop":"Text Top","align_bottom":"Bottom","align_middle":"Middle","align_top":"Top","align_baseline":"Baseline",align:"Alignment",hspace:"Horizontal Space",vspace:"Vertical Space",dimensions:"Dimensions",border:"Border",list:"Image List",alt:"Image Description",src:"Image URL","dialog_title":"Insert/Edit Image","missing_alt":"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.","example_img":"Appearance Preview Image",misc:"Miscellaneous",mouseout:"For Mouse Out",mouseover:"For Mouse Over","alt_image":"Alternative Image","swap_image":"Swap Image",map:"Image Map",id:"ID",rtl:"Right to Left",ltr:"Left to Right",classes:"Classes",style:"Style","long_desc":"Long Description Link",langcode:"Language Code",langdir:"Language Direction","constrain_proportions":"Constrain Proportions",preview:"Preview",title:"Title",general:"General","tab_advanced":"Advanced","tab_appearance":"Appearance","tab_general":"General",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css b/library/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css
deleted file mode 100644
index 14364316a..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css
+++ /dev/null
@@ -1,8 +0,0 @@
-.mceLinkList, .mceAnchorList, #targetlist {width:280px;}
-.mceActionPanel {margin-top:7px;}
-.panel_wrapper div.current {height:320px;}
-#classlist, #title, #href {width:280px;}
-#popupurl, #popupname {width:200px;}
-#popupwidth, #popupheight, #popupleft, #popuptop {width:30px;vertical-align:middle;text-align:center;}
-#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {width:200px;}
-#events_panel input {width:200px;}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js
deleted file mode 100644
index 983fe5a9c..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.AdvancedLinkPlugin",{init:function(a,b){this.editor=a;a.addCommand("mceAdvLink",function(){var c=a.selection;if(c.isCollapsed()&&!a.dom.getParent(c.getNode(),"A")){return}a.windowManager.open({file:b+"/link.htm",width:480+parseInt(a.getLang("advlink.delta_width",0)),height:400+parseInt(a.getLang("advlink.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("link",{title:"advlink.link_desc",cmd:"mceAdvLink"});a.addShortcut("ctrl+k","advlink.advlink_desc","mceAdvLink");a.onNodeChange.add(function(d,c,f,e){c.setDisabled("link",e&&f.nodeName!="A");c.setActive("link",f.nodeName=="A"&&!f.name)})},getInfo:function(){return{longname:"Advanced link",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advlink",tinymce.plugins.AdvancedLinkPlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js
deleted file mode 100644
index 14e46a762..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.AdvancedLinkPlugin', {
- init : function(ed, url) {
- this.editor = ed;
-
- // Register commands
- ed.addCommand('mceAdvLink', function() {
- var se = ed.selection;
-
- // No selection and not in link
- if (se.isCollapsed() && !ed.dom.getParent(se.getNode(), 'A'))
- return;
-
- ed.windowManager.open({
- file : url + '/link.htm',
- width : 480 + parseInt(ed.getLang('advlink.delta_width', 0)),
- height : 400 + parseInt(ed.getLang('advlink.delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- // Register buttons
- ed.addButton('link', {
- title : 'advlink.link_desc',
- cmd : 'mceAdvLink'
- });
-
- ed.addShortcut('ctrl+k', 'advlink.advlink_desc', 'mceAdvLink');
-
- ed.onNodeChange.add(function(ed, cm, n, co) {
- cm.setDisabled('link', co && n.nodeName != 'A');
- cm.setActive('link', n.nodeName == 'A' && !n.name);
- });
- },
-
- getInfo : function() {
- return {
- longname : 'Advanced link',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('advlink', tinymce.plugins.AdvancedLinkPlugin);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js b/library/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js
deleted file mode 100644
index 9ca955c92..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js
+++ /dev/null
@@ -1,539 +0,0 @@
-/* Functions for the advlink plugin popup */
-
-tinyMCEPopup.requireLangPack();
-
-var templates = {
- "window.open" : "window.open('${url}','${target}','${options}')"
-};
-
-function preinit() {
- var url;
-
- if (url = tinyMCEPopup.getParam("external_link_list_url"))
- document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
-}
-
-function changeClass() {
- var f = document.forms[0];
-
- f.classes.value = getSelectValue(f, 'classlist');
-}
-
-function init() {
- tinyMCEPopup.resizeToInnerSize();
-
- var formObj = document.forms[0];
- var inst = tinyMCEPopup.editor;
- var elm = inst.selection.getNode();
- var action = "insert";
- var html;
-
- document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink');
- document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink');
- document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target');
-
- // Link list
- html = getLinkListHTML('linklisthref','href');
- if (html == "")
- document.getElementById("linklisthrefrow").style.display = 'none';
- else
- document.getElementById("linklisthrefcontainer").innerHTML = html;
-
- // Anchor list
- html = getAnchorListHTML('anchorlist','href');
- if (html == "")
- document.getElementById("anchorlistrow").style.display = 'none';
- else
- document.getElementById("anchorlistcontainer").innerHTML = html;
-
- // Resize some elements
- if (isVisible('hrefbrowser'))
- document.getElementById('href').style.width = '260px';
-
- if (isVisible('popupurlbrowser'))
- document.getElementById('popupurl').style.width = '180px';
-
- elm = inst.dom.getParent(elm, "A");
- if (elm == null) {
- var prospect = inst.dom.create("p", null, inst.selection.getContent());
- if (prospect.childNodes.length === 1) {
- elm = prospect.firstChild;
- }
- }
-
- if (elm != null && elm.nodeName == "A")
- action = "update";
-
- formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true);
-
- setPopupControlsDisabled(true);
-
- if (action == "update") {
- var href = inst.dom.getAttrib(elm, 'href');
- var onclick = inst.dom.getAttrib(elm, 'onclick');
-
- // Setup form data
- setFormValue('href', href);
- setFormValue('title', inst.dom.getAttrib(elm, 'title'));
- setFormValue('id', inst.dom.getAttrib(elm, 'id'));
- setFormValue('style', inst.dom.getAttrib(elm, "style"));
- setFormValue('rel', inst.dom.getAttrib(elm, 'rel'));
- setFormValue('rev', inst.dom.getAttrib(elm, 'rev'));
- setFormValue('charset', inst.dom.getAttrib(elm, 'charset'));
- setFormValue('hreflang', inst.dom.getAttrib(elm, 'hreflang'));
- setFormValue('dir', inst.dom.getAttrib(elm, 'dir'));
- setFormValue('lang', inst.dom.getAttrib(elm, 'lang'));
- setFormValue('tabindex', inst.dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));
- setFormValue('accesskey', inst.dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));
- setFormValue('type', inst.dom.getAttrib(elm, 'type'));
- setFormValue('onfocus', inst.dom.getAttrib(elm, 'onfocus'));
- setFormValue('onblur', inst.dom.getAttrib(elm, 'onblur'));
- setFormValue('onclick', onclick);
- setFormValue('ondblclick', inst.dom.getAttrib(elm, 'ondblclick'));
- setFormValue('onmousedown', inst.dom.getAttrib(elm, 'onmousedown'));
- setFormValue('onmouseup', inst.dom.getAttrib(elm, 'onmouseup'));
- setFormValue('onmouseover', inst.dom.getAttrib(elm, 'onmouseover'));
- setFormValue('onmousemove', inst.dom.getAttrib(elm, 'onmousemove'));
- setFormValue('onmouseout', inst.dom.getAttrib(elm, 'onmouseout'));
- setFormValue('onkeypress', inst.dom.getAttrib(elm, 'onkeypress'));
- setFormValue('onkeydown', inst.dom.getAttrib(elm, 'onkeydown'));
- setFormValue('onkeyup', inst.dom.getAttrib(elm, 'onkeyup'));
- setFormValue('target', inst.dom.getAttrib(elm, 'target'));
- setFormValue('classes', inst.dom.getAttrib(elm, 'class'));
-
- // Parse onclick data
- if (onclick != null && onclick.indexOf('window.open') != -1)
- parseWindowOpen(onclick);
- else
- parseFunction(onclick);
-
- // Select by the values
- selectByValue(formObj, 'dir', inst.dom.getAttrib(elm, 'dir'));
- selectByValue(formObj, 'rel', inst.dom.getAttrib(elm, 'rel'));
- selectByValue(formObj, 'rev', inst.dom.getAttrib(elm, 'rev'));
- selectByValue(formObj, 'linklisthref', href);
-
- if (href.charAt(0) == '#')
- selectByValue(formObj, 'anchorlist', href);
-
- addClassesToList('classlist', 'advlink_styles');
-
- selectByValue(formObj, 'classlist', inst.dom.getAttrib(elm, 'class'), true);
- selectByValue(formObj, 'targetlist', inst.dom.getAttrib(elm, 'target'), true);
- } else
- addClassesToList('classlist', 'advlink_styles');
-}
-
-function checkPrefix(n) {
- if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_email')))
- n.value = 'mailto:' + n.value;
-
- if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external')))
- n.value = 'http://' + n.value;
-}
-
-function setFormValue(name, value) {
- document.forms[0].elements[name].value = value;
-}
-
-function parseWindowOpen(onclick) {
- var formObj = document.forms[0];
-
- // Preprocess center code
- if (onclick.indexOf('return false;') != -1) {
- formObj.popupreturn.checked = true;
- onclick = onclick.replace('return false;', '');
- } else
- formObj.popupreturn.checked = false;
-
- var onClickData = parseLink(onclick);
-
- if (onClickData != null) {
- formObj.ispopup.checked = true;
- setPopupControlsDisabled(false);
-
- var onClickWindowOptions = parseOptions(onClickData['options']);
- var url = onClickData['url'];
-
- formObj.popupname.value = onClickData['target'];
- formObj.popupurl.value = url;
- formObj.popupwidth.value = getOption(onClickWindowOptions, 'width');
- formObj.popupheight.value = getOption(onClickWindowOptions, 'height');
-
- formObj.popupleft.value = getOption(onClickWindowOptions, 'left');
- formObj.popuptop.value = getOption(onClickWindowOptions, 'top');
-
- if (formObj.popupleft.value.indexOf('screen') != -1)
- formObj.popupleft.value = "c";
-
- if (formObj.popuptop.value.indexOf('screen') != -1)
- formObj.popuptop.value = "c";
-
- formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes";
- formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes";
- formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes";
- formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes";
- formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes";
- formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes";
- formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes";
-
- buildOnClick();
- }
-}
-
-function parseFunction(onclick) {
- var formObj = document.forms[0];
- var onClickData = parseLink(onclick);
-
- // TODO: Add stuff here
-}
-
-function getOption(opts, name) {
- return typeof(opts[name]) == "undefined" ? "" : opts[name];
-}
-
-function setPopupControlsDisabled(state) {
- var formObj = document.forms[0];
-
- formObj.popupname.disabled = state;
- formObj.popupurl.disabled = state;
- formObj.popupwidth.disabled = state;
- formObj.popupheight.disabled = state;
- formObj.popupleft.disabled = state;
- formObj.popuptop.disabled = state;
- formObj.popuplocation.disabled = state;
- formObj.popupscrollbars.disabled = state;
- formObj.popupmenubar.disabled = state;
- formObj.popupresizable.disabled = state;
- formObj.popuptoolbar.disabled = state;
- formObj.popupstatus.disabled = state;
- formObj.popupreturn.disabled = state;
- formObj.popupdependent.disabled = state;
-
- setBrowserDisabled('popupurlbrowser', state);
-}
-
-function parseLink(link) {
- link = link.replace(new RegExp('&#39;', 'g'), "'");
-
- var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");
-
- // Is function name a template function
- var template = templates[fnName];
- if (template) {
- // Build regexp
- var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));
- var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\(";
- var replaceStr = "";
- for (var i=0; i<variableNames.length; i++) {
- // Is string value
- if (variableNames[i].indexOf("'${") != -1)
- regExp += "'(.*)'";
- else // Number value
- regExp += "([0-9]*)";
-
- replaceStr += "$" + (i+1);
-
- // Cleanup variable name
- variableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");
-
- if (i != variableNames.length-1) {
- regExp += "\\s*,\\s*";
- replaceStr += "<delim>";
- } else
- regExp += ".*";
- }
-
- regExp += "\\);?";
-
- // Build variable array
- var variables = [];
- variables["_function"] = fnName;
- var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split('<delim>');
- for (var i=0; i<variableNames.length; i++)
- variables[variableNames[i]] = variableValues[i];
-
- return variables;
- }
-
- return null;
-}
-
-function parseOptions(opts) {
- if (opts == null || opts == "")
- return [];
-
- // Cleanup the options
- opts = opts.toLowerCase();
- opts = opts.replace(/;/g, ",");
- opts = opts.replace(/[^0-9a-z=,]/g, "");
-
- var optionChunks = opts.split(',');
- var options = [];
-
- for (var i=0; i<optionChunks.length; i++) {
- var parts = optionChunks[i].split('=');
-
- if (parts.length == 2)
- options[parts[0]] = parts[1];
- }
-
- return options;
-}
-
-function buildOnClick() {
- var formObj = document.forms[0];
-
- if (!formObj.ispopup.checked) {
- formObj.onclick.value = "";
- return;
- }
-
- var onclick = "window.open('";
- var url = formObj.popupurl.value;
-
- onclick += url + "','";
- onclick += formObj.popupname.value + "','";
-
- if (formObj.popuplocation.checked)
- onclick += "location=yes,";
-
- if (formObj.popupscrollbars.checked)
- onclick += "scrollbars=yes,";
-
- if (formObj.popupmenubar.checked)
- onclick += "menubar=yes,";
-
- if (formObj.popupresizable.checked)
- onclick += "resizable=yes,";
-
- if (formObj.popuptoolbar.checked)
- onclick += "toolbar=yes,";
-
- if (formObj.popupstatus.checked)
- onclick += "status=yes,";
-
- if (formObj.popupdependent.checked)
- onclick += "dependent=yes,";
-
- if (formObj.popupwidth.value != "")
- onclick += "width=" + formObj.popupwidth.value + ",";
-
- if (formObj.popupheight.value != "")
- onclick += "height=" + formObj.popupheight.value + ",";
-
- if (formObj.popupleft.value != "") {
- if (formObj.popupleft.value != "c")
- onclick += "left=" + formObj.popupleft.value + ",";
- else
- onclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2) + ")+',";
- }
-
- if (formObj.popuptop.value != "") {
- if (formObj.popuptop.value != "c")
- onclick += "top=" + formObj.popuptop.value + ",";
- else
- onclick += "top='+(screen.availHeight/2-" + (formObj.popupheight.value/2) + ")+',";
- }
-
- if (onclick.charAt(onclick.length-1) == ',')
- onclick = onclick.substring(0, onclick.length-1);
-
- onclick += "');";
-
- if (formObj.popupreturn.checked)
- onclick += "return false;";
-
- // tinyMCE.debug(onclick);
-
- formObj.onclick.value = onclick;
-
- if (formObj.href.value == "")
- formObj.href.value = url;
-}
-
-function setAttrib(elm, attrib, value) {
- var formObj = document.forms[0];
- var valueElm = formObj.elements[attrib.toLowerCase()];
- var dom = tinyMCEPopup.editor.dom;
-
- if (typeof(value) == "undefined" || value == null) {
- value = "";
-
- if (valueElm)
- value = valueElm.value;
- }
-
- // Clean up the style
- if (attrib == 'style')
- value = dom.serializeStyle(dom.parseStyle(value), 'a');
-
- dom.setAttrib(elm, attrib, value);
-}
-
-function getAnchorListHTML(id, target) {
- var ed = tinyMCEPopup.editor, nodes = ed.dom.select('a'), name, i, len, html = "";
-
- for (i=0, len=nodes.length; i<len; i++) {
- if ((name = ed.dom.getAttrib(nodes[i], "name")) != "")
- html += '<option value="#' + name + '">' + name + '</option>';
- }
-
- if (html == "")
- return "";
-
- html = '<select id="' + id + '" name="' + id + '" class="mceAnchorList"'
- + ' onchange="this.form.' + target + '.value=this.options[this.selectedIndex].value"'
- + '>'
- + '<option value="">---</option>'
- + html
- + '</select>';
-
- return html;
-}
-
-function insertAction() {
- var inst = tinyMCEPopup.editor;
- var elm, elementArray, i;
-
- elm = inst.selection.getNode();
- checkPrefix(document.forms[0].href);
-
- elm = inst.dom.getParent(elm, "A");
-
- // Remove element if there is no href
- if (!document.forms[0].href.value) {
- i = inst.selection.getBookmark();
- inst.dom.remove(elm, 1);
- inst.selection.moveToBookmark(i);
- tinyMCEPopup.execCommand("mceEndUndoLevel");
- tinyMCEPopup.close();
- return;
- }
-
- // Create new anchor elements
- if (elm == null) {
- inst.getDoc().execCommand("unlink", false, null);
- tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1});
-
- elementArray = tinymce.grep(inst.dom.select("a"), function(n) {return inst.dom.getAttrib(n, 'href') == '#mce_temp_url#';});
- for (i=0; i<elementArray.length; i++)
- setAllAttribs(elm = elementArray[i]);
- } else
- setAllAttribs(elm);
-
- // Don't move caret if selection was image
- if (elm.childNodes.length != 1 || elm.firstChild.nodeName != 'IMG') {
- inst.focus();
- inst.selection.select(elm);
- inst.selection.collapse(0);
- tinyMCEPopup.storeSelection();
- }
-
- tinyMCEPopup.execCommand("mceEndUndoLevel");
- tinyMCEPopup.close();
-}
-
-function setAllAttribs(elm) {
- var formObj = document.forms[0];
- var href = formObj.href.value.replace(/ /g, '%20');
- var target = getSelectValue(formObj, 'targetlist');
-
- setAttrib(elm, 'href', href);
- setAttrib(elm, 'title');
- setAttrib(elm, 'target', target == '_self' ? '' : target);
- setAttrib(elm, 'id');
- setAttrib(elm, 'style');
- setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));
- setAttrib(elm, 'rel');
- setAttrib(elm, 'rev');
- setAttrib(elm, 'charset');
- setAttrib(elm, 'hreflang');
- setAttrib(elm, 'dir');
- setAttrib(elm, 'lang');
- setAttrib(elm, 'tabindex');
- setAttrib(elm, 'accesskey');
- setAttrib(elm, 'type');
- setAttrib(elm, 'onfocus');
- setAttrib(elm, 'onblur');
- setAttrib(elm, 'onclick');
- setAttrib(elm, 'ondblclick');
- setAttrib(elm, 'onmousedown');
- setAttrib(elm, 'onmouseup');
- setAttrib(elm, 'onmouseover');
- setAttrib(elm, 'onmousemove');
- setAttrib(elm, 'onmouseout');
- setAttrib(elm, 'onkeypress');
- setAttrib(elm, 'onkeydown');
- setAttrib(elm, 'onkeyup');
-
- // Refresh in old MSIE
- if (tinyMCE.isMSIE5)
- elm.outerHTML = elm.outerHTML;
-}
-
-function getSelectValue(form_obj, field_name) {
- var elm = form_obj.elements[field_name];
-
- if (!elm || elm.options == null || elm.selectedIndex == -1)
- return "";
-
- return elm.options[elm.selectedIndex].value;
-}
-
-function getLinkListHTML(elm_id, target_form_element, onchange_func) {
- if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)
- return "";
-
- var html = "";
-
- html += '<select id="' + elm_id + '" name="' + elm_id + '"';
- html += ' class="mceLinkList" onchange="this.form.' + target_form_element + '.value=';
- html += 'this.options[this.selectedIndex].value;';
-
- if (typeof(onchange_func) != "undefined")
- html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';
-
- html += '"><option value="">---</option>';
-
- for (var i=0; i<tinyMCELinkList.length; i++)
- html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';
-
- html += '</select>';
-
- return html;
-
- // tinyMCE.debug('-- image list start --', html, '-- image list end --');
-}
-
-function getTargetListHTML(elm_id, target_form_element) {
- var targets = tinyMCEPopup.getParam('theme_advanced_link_targets', '').split(';');
- var html = '';
-
- html += '<select id="' + elm_id + '" name="' + elm_id + '" onchange="this.form.' + target_form_element + '.value=';
- html += 'this.options[this.selectedIndex].value;">';
- html += '<option value="_self">' + tinyMCEPopup.getLang('advlink_dlg.target_same') + '</option>';
- html += '<option value="_blank">' + tinyMCEPopup.getLang('advlink_dlg.target_blank') + ' (_blank)</option>';
- html += '<option value="_parent">' + tinyMCEPopup.getLang('advlink_dlg.target_parent') + ' (_parent)</option>';
- html += '<option value="_top">' + tinyMCEPopup.getLang('advlink_dlg.target_top') + ' (_top)</option>';
-
- for (var i=0; i<targets.length; i++) {
- var key, value;
-
- if (targets[i] == "")
- continue;
-
- key = targets[i].split('=')[0];
- value = targets[i].split('=')[1];
-
- html += '<option value="' + key + '">' + value + ' (' + key + ')</option>';
- }
-
- html += '</select>';
-
- return html;
-}
-
-// While loading
-preinit();
-tinyMCEPopup.onInit.add(init);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js
deleted file mode 100644
index 3169a5658..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.advlink_dlg',{"target_name":"Target Name",classes:"Classes",style:"Style",id:"ID","popup_position":"Position (X/Y)",langdir:"Language Direction","popup_size":"Size","popup_dependent":"Dependent (Mozilla/Firefox Only)","popup_resizable":"Make Window Resizable","popup_location":"Show Location Bar","popup_menubar":"Show Menu Bar","popup_toolbar":"Show Toolbars","popup_statusbar":"Show Status Bar","popup_scrollbars":"Show Scrollbars","popup_return":"Insert \'return false\'","popup_name":"Window Name","popup_url":"Popup URL",popup:"JavaScript Popup","target_blank":"Open in New Window","target_top":"Open in Top Frame (Replaces All Frames)","target_parent":"Open in Parent Window/Frame","target_same":"Open in This Window/Frame","anchor_names":"Anchors","popup_opts":"Options","advanced_props":"Advanced Properties","event_props":"Events","popup_props":"Popup Properties","general_props":"General Properties","advanced_tab":"Advanced","events_tab":"Events","popup_tab":"Popup","general_tab":"General",list:"Link List","is_external":"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?","is_email":"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/Edit Link","link_list":"Link List",rtl:"Right to Left",ltr:"Left to Right",accesskey:"AccessKey",tabindex:"TabIndex",rev:"Relationship Target to Page",rel:"Relationship Page to Target",mime:"Target MIME Type",encoding:"Target Character Encoding",langcode:"Language Code","target_langcode":"Target Language",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm b/library/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm
deleted file mode 100644
index 8ab7c2a95..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm
+++ /dev/null
@@ -1,338 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advlink_dlg.title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/validate.js"></script>
- <script type="text/javascript" src="js/advlink.js"></script>
- <link href="css/advlink.css" rel="stylesheet" type="text/css" />
-</head>
-<body id="advlink" style="display: none" role="application" onload="javascript:mcTabs.displayTab('general_tab','general_panel', true);" aria-labelledby="app_label">
- <span class="mceVoiceLabel" id="app_label" style="display:none;">{#advlink_dlg.title}</span>
- <form onsubmit="insertAction();return false;" action="#">
- <div class="tabs" role="presentation">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel" ><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advlink_dlg.general_tab}</a></span></li>
- <li id="popup_tab" aria-controls="popup_panel" ><span><a href="javascript:mcTabs.displayTab('popup_tab','popup_panel');" onmousedown="return false;">{#advlink_dlg.popup_tab}</a></span></li>
- <li id="events_tab" aria-controls="events_panel"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#advlink_dlg.events_tab}</a></span></li>
- <li id="advanced_tab" aria-controls="advanced_panel"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#advlink_dlg.advanced_tab}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper" role="presentation">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#advlink_dlg.general_props}</legend>
-
- <table border="0" cellpadding="4" cellspacing="0" role="presentation">
- <tr>
- <td class="nowrap"><label id="hreflabel" for="href">{#advlink_dlg.url}</label></td>
- <td><table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="href" name="href" type="text" class="mceFocus" value="" onchange="selectByValue(this.form,'linklisthref',this.value);" aria-required="true" /></td>
- <td id="hrefbrowsercontainer">&nbsp;</td>
- </tr>
- </table></td>
- </tr>
- <tr id="linklisthrefrow">
- <td class="column1"><label for="linklisthref">{#advlink_dlg.list}</label></td>
- <td colspan="2" id="linklisthrefcontainer"><select id="linklisthref"><option value=""></option></select></td>
- </tr>
- <tr id="anchorlistrow">
- <td class="column1"><label for="anchorlist">{#advlink_dlg.anchor_names}</label></td>
- <td colspan="2" id="anchorlistcontainer"><select id="anchorlist"><option value=""></option></select></td>
- </tr>
- <tr>
- <td><label id="targetlistlabel" for="targetlist">{#advlink_dlg.target}</label></td>
- <td id="targetlistcontainer"><select id="targetlist"><option value=""></option></select></td>
- </tr>
- <tr>
- <td class="nowrap"><label id="titlelabel" for="title">{#advlink_dlg.titlefield}</label></td>
- <td><input id="title" name="title" type="text" value="" /></td>
- </tr>
- <tr>
- <td><label id="classlabel" for="classlist">{#class_name}</label></td>
- <td>
- <select id="classlist" name="classlist" onchange="changeClass();">
- <option value="" selected="selected">{#not_set}</option>
- </select>
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
-
- <div id="popup_panel" class="panel">
- <fieldset>
- <legend>{#advlink_dlg.popup_props}</legend>
-
- <input type="checkbox" id="ispopup" name="ispopup" class="radio" onclick="setPopupControlsDisabled(!this.checked);buildOnClick();" />
- <label id="ispopuplabel" for="ispopup">{#advlink_dlg.popup}</label>
-
- <table border="0" cellpadding="0" cellspacing="4" role="presentation" >
- <tr>
- <td class="nowrap"><label for="popupurl">{#advlink_dlg.popup_url}</label>&nbsp;</td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" name="popupurl" id="popupurl" value="" onchange="buildOnClick();" /></td>
- <td id="popupurlbrowsercontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td class="nowrap"><label for="popupname">{#advlink_dlg.popup_name}</label>&nbsp;</td>
- <td><input type="text" name="popupname" id="popupname" value="" onchange="buildOnClick();" /></td>
- </tr>
- <tr role="group" aria-labelledby="popup_size_label">
- <td class="nowrap"><label id="popup_size_label">{#advlink_dlg.popup_size}</label>&nbsp;</td>
- <td class="nowrap">
- <span style="display:none" id="width_voiceLabel">{#advlink_dlg.width}</span>
- <input type="text" id="popupwidth" name="popupwidth" value="" onchange="buildOnClick();" aria-labelledby="width_voiceLabel" /> x
- <span style="display:none" id="height_voiceLabel">{#advlink_dlg.height}</span>
- <input type="text" id="popupheight" name="popupheight" value="" onchange="buildOnClick();" aria-labelledby="height_voiceLabel" /> px
- </td>
- </tr>
- <tr role="group" aria-labelledby="popup_position_label center_hint">
- <td class="nowrap" id="labelleft"><label id="popup_position_label">{#advlink_dlg.popup_position}</label>&nbsp;</td>
- <td class="nowrap">
- <span style="display:none" id="x_voiceLabel">X</span>
- <input type="text" id="popupleft" name="popupleft" value="" onchange="buildOnClick();" aria-labelledby="x_voiceLabel" /> /
- <span style="display:none" id="y_voiceLabel">Y</span>
- <input type="text" id="popuptop" name="popuptop" value="" onchange="buildOnClick();" aria-labelledby="y_voiceLabel" /> <span id="center_hint">(c /c = center)</span>
- </td>
- </tr>
- </table>
-
- <fieldset>
- <legend>{#advlink_dlg.popup_opts}</legend>
-
- <table border="0" cellpadding="0" cellspacing="4" role="presentation" >
- <tr>
- <td><input type="checkbox" id="popuplocation" name="popuplocation" class="checkbox" onchange="buildOnClick();" /></td>
- <td class="nowrap"><label id="popuplocationlabel" for="popuplocation">{#advlink_dlg.popup_location}</label></td>
- <td><input type="checkbox" id="popupscrollbars" name="popupscrollbars" class="checkbox" onchange="buildOnClick();" /></td>
- <td class="nowrap"><label id="popupscrollbarslabel" for="popupscrollbars">{#advlink_dlg.popup_scrollbars}</label></td>
- </tr>
- <tr>
- <td><input type="checkbox" id="popupmenubar" name="popupmenubar" class="checkbox" onchange="buildOnClick();" /></td>
- <td class="nowrap"><label id="popupmenubarlabel" for="popupmenubar">{#advlink_dlg.popup_menubar}</label></td>
- <td><input type="checkbox" id="popupresizable" name="popupresizable" class="checkbox" onchange="buildOnClick();" /></td>
- <td class="nowrap"><label id="popupresizablelabel" for="popupresizable">{#advlink_dlg.popup_resizable}</label></td>
- </tr>
- <tr>
- <td><input type="checkbox" id="popuptoolbar" name="popuptoolbar" class="checkbox" onchange="buildOnClick();" /></td>
- <td class="nowrap"><label id="popuptoolbarlabel" for="popuptoolbar">{#advlink_dlg.popup_toolbar}</label></td>
- <td><input type="checkbox" id="popupdependent" name="popupdependent" class="checkbox" onchange="buildOnClick();" /></td>
- <td class="nowrap"><label id="popupdependentlabel" for="popupdependent">{#advlink_dlg.popup_dependent}</label></td>
- </tr>
- <tr>
- <td><input type="checkbox" id="popupstatus" name="popupstatus" class="checkbox" onchange="buildOnClick();" /></td>
- <td class="nowrap"><label id="popupstatuslabel" for="popupstatus">{#advlink_dlg.popup_statusbar}</label></td>
- <td><input type="checkbox" id="popupreturn" name="popupreturn" class="checkbox" onchange="buildOnClick();" checked="checked" /></td>
- <td class="nowrap"><label id="popupreturnlabel" for="popupreturn">{#advlink_dlg.popup_return}</label></td>
- </tr>
- </table>
- </fieldset>
- </fieldset>
- </div>
-
- <div id="advanced_panel" class="panel">
- <fieldset>
- <legend>{#advlink_dlg.advanced_props}</legend>
-
- <table border="0" cellpadding="0" cellspacing="4" role="presentation" >
- <tr>
- <td class="column1"><label id="idlabel" for="id">{#advlink_dlg.id}</label></td>
- <td><input id="id" name="id" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td><label id="stylelabel" for="style">{#advlink_dlg.style}</label></td>
- <td><input type="text" id="style" name="style" value="" /></td>
- </tr>
-
- <tr>
- <td><label id="classeslabel" for="classes">{#advlink_dlg.classes}</label></td>
- <td><input type="text" id="classes" name="classes" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>
- </tr>
-
- <tr>
- <td><label id="targetlabel" for="target">{#advlink_dlg.target_name}</label></td>
- <td><input type="text" id="target" name="target" value="" onchange="selectByValue(this.form,'targetlist',this.value,true);" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label id="dirlabel" for="dir">{#advlink_dlg.langdir}</label></td>
- <td>
- <select id="dir" name="dir">
- <option value="">{#not_set}</option>
- <option value="ltr">{#advlink_dlg.ltr}</option>
- <option value="rtl">{#advlink_dlg.rtl}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td><label id="hreflanglabel" for="hreflang">{#advlink_dlg.target_langcode}</label></td>
- <td><input type="text" id="hreflang" name="hreflang" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label id="langlabel" for="lang">{#advlink_dlg.langcode}</label></td>
- <td>
- <input id="lang" name="lang" type="text" value="" />
- </td>
- </tr>
-
- <tr>
- <td><label id="charsetlabel" for="charset">{#advlink_dlg.encoding}</label></td>
- <td><input type="text" id="charset" name="charset" value="" /></td>
- </tr>
-
- <tr>
- <td><label id="typelabel" for="type">{#advlink_dlg.mime}</label></td>
- <td><input type="text" id="type" name="type" value="" /></td>
- </tr>
-
- <tr>
- <td><label id="rellabel" for="rel">{#advlink_dlg.rel}</label></td>
- <td><select id="rel" name="rel">
- <option value="">{#not_set}</option>
- <option value="lightbox">Lightbox</option>
- <option value="alternate">Alternate</option>
- <option value="designates">Designates</option>
- <option value="stylesheet">Stylesheet</option>
- <option value="start">Start</option>
- <option value="next">Next</option>
- <option value="prev">Prev</option>
- <option value="contents">Contents</option>
- <option value="index">Index</option>
- <option value="glossary">Glossary</option>
- <option value="copyright">Copyright</option>
- <option value="chapter">Chapter</option>
- <option value="subsection">Subsection</option>
- <option value="appendix">Appendix</option>
- <option value="help">Help</option>
- <option value="bookmark">Bookmark</option>
- <option value="nofollow">No Follow</option>
- <option value="tag">Tag</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td><label id="revlabel" for="rev">{#advlink_dlg.rev}</label></td>
- <td><select id="rev" name="rev">
- <option value="">{#not_set}</option>
- <option value="alternate">Alternate</option>
- <option value="designates">Designates</option>
- <option value="stylesheet">Stylesheet</option>
- <option value="start">Start</option>
- <option value="next">Next</option>
- <option value="prev">Prev</option>
- <option value="contents">Contents</option>
- <option value="index">Index</option>
- <option value="glossary">Glossary</option>
- <option value="copyright">Copyright</option>
- <option value="chapter">Chapter</option>
- <option value="subsection">Subsection</option>
- <option value="appendix">Appendix</option>
- <option value="help">Help</option>
- <option value="bookmark">Bookmark</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td><label id="tabindexlabel" for="tabindex">{#advlink_dlg.tabindex}</label></td>
- <td><input type="text" id="tabindex" name="tabindex" value="" /></td>
- </tr>
-
- <tr>
- <td><label id="accesskeylabel" for="accesskey">{#advlink_dlg.accesskey}</label></td>
- <td><input type="text" id="accesskey" name="accesskey" value="" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
-
- <div id="events_panel" class="panel">
- <fieldset>
- <legend>{#advlink_dlg.event_props}</legend>
-
- <table border="0" cellpadding="0" cellspacing="4" role="presentation" >
- <tr>
- <td class="column1"><label for="onfocus">onfocus</label></td>
- <td><input id="onfocus" name="onfocus" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onblur">onblur</label></td>
- <td><input id="onblur" name="onblur" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onclick">onclick</label></td>
- <td><input id="onclick" name="onclick" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="ondblclick">ondblclick</label></td>
- <td><input id="ondblclick" name="ondblclick" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onmousedown">onmousedown</label></td>
- <td><input id="onmousedown" name="onmousedown" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onmouseup">onmouseup</label></td>
- <td><input id="onmouseup" name="onmouseup" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onmouseover">onmouseover</label></td>
- <td><input id="onmouseover" name="onmouseover" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onmousemove">onmousemove</label></td>
- <td><input id="onmousemove" name="onmousemove" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onmouseout">onmouseout</label></td>
- <td><input id="onmouseout" name="onmouseout" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onkeypress">onkeypress</label></td>
- <td><input id="onkeypress" name="onkeypress" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onkeydown">onkeydown</label></td>
- <td><input id="onkeydown" name="onkeydown" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onkeyup">onkeyup</label></td>
- <td><input id="onkeyup" name="onkeyup" type="text" value="" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
- </form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js
deleted file mode 100644
index 57ecce6e0..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.AdvListPlugin",{init:function(b,c){var d=this;d.editor=b;function e(g){var f=[];a(g.split(/,/),function(h){f.push({title:"advlist."+(h=="default"?"def":h.replace(/-/g,"_")),styles:{listStyleType:h=="default"?"":h}})});return f}d.numlist=b.getParam("advlist_number_styles")||e("default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");d.bullist=b.getParam("advlist_bullet_styles")||e("default,circle,disc,square");if(tinymce.isIE&&/MSIE [2-7]/.test(navigator.userAgent)){d.isIE7=true}},createControl:function(d,b){var f=this,e,i,g=f.editor;if(d=="numlist"||d=="bullist"){if(f[d][0].title=="advlist.def"){i=f[d][0]}function c(j,l){var k=true;a(l.styles,function(n,m){if(g.dom.getStyle(j,m)!=n){k=false;return false}});return k}function h(){var k,l=g.dom,j=g.selection;k=l.getParent(j.getNode(),"ol,ul");if(!k||k.nodeName==(d=="bullist"?"OL":"UL")||c(k,i)){g.execCommand(d=="bullist"?"InsertUnorderedList":"InsertOrderedList")}if(i){k=l.getParent(j.getNode(),"ol,ul");if(k){l.setStyles(k,i.styles);k.removeAttribute("data-mce-style")}}g.focus()}e=b.createSplitButton(d,{title:"advanced."+d+"_desc","class":"mce_"+d,onclick:function(){h()}});e.onRenderMenu.add(function(j,k){k.onHideMenu.add(function(){if(f.bookmark){g.selection.moveToBookmark(f.bookmark);f.bookmark=0}});k.onShowMenu.add(function(){var n=g.dom,m=n.getParent(g.selection.getNode(),"ol,ul"),l;if(m||i){l=f[d];a(k.items,function(o){var p=true;o.setSelected(0);if(m&&!o.isDisabled()){a(l,function(q){if(q.id==o.id){if(!c(m,q)){p=false;return false}}});if(p){o.setSelected(1)}}});if(!m){k.items[i.id].setSelected(1)}}g.focus();if(tinymce.isIE){f.bookmark=g.selection.getBookmark(1)}});k.add({id:g.dom.uniqueId(),title:"advlist.types","class":"mceMenuItemTitle",titleItem:true}).setDisabled(1);a(f[d],function(l){if(f.isIE7&&l.styles.listStyleType=="lower-greek"){return}l.id=g.dom.uniqueId();k.add({id:l.id,title:l.title,onclick:function(){i=l;h()}})})});return e}},getInfo:function(){return{longname:"Advanced lists",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlist",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advlist",tinymce.plugins.AdvListPlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js
deleted file mode 100644
index a8f046b41..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js
+++ /dev/null
@@ -1,176 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var each = tinymce.each;
-
- tinymce.create('tinymce.plugins.AdvListPlugin', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- function buildFormats(str) {
- var formats = [];
-
- each(str.split(/,/), function(type) {
- formats.push({
- title : 'advlist.' + (type == 'default' ? 'def' : type.replace(/-/g, '_')),
- styles : {
- listStyleType : type == 'default' ? '' : type
- }
- });
- });
-
- return formats;
- };
-
- // Setup number formats from config or default
- t.numlist = ed.getParam("advlist_number_styles") || buildFormats("default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");
- t.bullist = ed.getParam("advlist_bullet_styles") || buildFormats("default,circle,disc,square");
-
- if (tinymce.isIE && /MSIE [2-7]/.test(navigator.userAgent))
- t.isIE7 = true;
- },
-
- createControl: function(name, cm) {
- var t = this, btn, format, editor = t.editor;
-
- if (name == 'numlist' || name == 'bullist') {
- // Default to first item if it's a default item
- if (t[name][0].title == 'advlist.def')
- format = t[name][0];
-
- function hasFormat(node, format) {
- var state = true;
-
- each(format.styles, function(value, name) {
- // Format doesn't match
- if (editor.dom.getStyle(node, name) != value) {
- state = false;
- return false;
- }
- });
-
- return state;
- };
-
- function applyListFormat() {
- var list, dom = editor.dom, sel = editor.selection;
-
- // Check for existing list element
- list = dom.getParent(sel.getNode(), 'ol,ul');
-
- // Switch/add list type if needed
- if (!list || list.nodeName == (name == 'bullist' ? 'OL' : 'UL') || hasFormat(list, format))
- editor.execCommand(name == 'bullist' ? 'InsertUnorderedList' : 'InsertOrderedList');
-
- // Append styles to new list element
- if (format) {
- list = dom.getParent(sel.getNode(), 'ol,ul');
- if (list) {
- dom.setStyles(list, format.styles);
- list.removeAttribute('data-mce-style');
- }
- }
-
- editor.focus();
- };
-
- btn = cm.createSplitButton(name, {
- title : 'advanced.' + name + '_desc',
- 'class' : 'mce_' + name,
- onclick : function() {
- applyListFormat();
- }
- });
-
- btn.onRenderMenu.add(function(btn, menu) {
- menu.onHideMenu.add(function() {
- if (t.bookmark) {
- editor.selection.moveToBookmark(t.bookmark);
- t.bookmark = 0;
- }
- });
-
- menu.onShowMenu.add(function() {
- var dom = editor.dom, list = dom.getParent(editor.selection.getNode(), 'ol,ul'), fmtList;
-
- if (list || format) {
- fmtList = t[name];
-
- // Unselect existing items
- each(menu.items, function(item) {
- var state = true;
-
- item.setSelected(0);
-
- if (list && !item.isDisabled()) {
- each(fmtList, function(fmt) {
- if (fmt.id == item.id) {
- if (!hasFormat(list, fmt)) {
- state = false;
- return false;
- }
- }
- });
-
- if (state)
- item.setSelected(1);
- }
- });
-
- // Select the current format
- if (!list)
- menu.items[format.id].setSelected(1);
- }
-
- editor.focus();
-
- // IE looses it's selection so store it away and restore it later
- if (tinymce.isIE) {
- t.bookmark = editor.selection.getBookmark(1);
- }
- });
-
- menu.add({id : editor.dom.uniqueId(), title : 'advlist.types', 'class' : 'mceMenuItemTitle', titleItem: true}).setDisabled(1);
-
- each(t[name], function(item) {
- // IE<8 doesn't support lower-greek, skip it
- if (t.isIE7 && item.styles.listStyleType == 'lower-greek')
- return;
-
- item.id = editor.dom.uniqueId();
-
- menu.add({id : item.id, title : item.title, onclick : function() {
- format = item;
- applyListFormat();
- }});
- });
- });
-
- return btn;
- }
- },
-
- getInfo : function() {
- return {
- longname : 'Advanced lists',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlist',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('advlist', tinymce.plugins.AdvListPlugin);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js
deleted file mode 100644
index 8c164ff9f..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.AutolinkPlugin",{init:function(a,b){var c=this;a.onKeyDown.addToTop(function(d,f){if(f.keyCode==13){return c.handleEnter(d)}});if(tinyMCE.isIE){return}a.onKeyPress.add(function(d,f){if(f.which==41){return c.handleEclipse(d)}});a.onKeyUp.add(function(d,f){if(f.keyCode==32){return c.handleSpacebar(d)}})},handleEclipse:function(a){this.parseCurrentLine(a,-1,"(",true)},handleSpacebar:function(a){this.parseCurrentLine(a,0,"",true)},handleEnter:function(a){this.parseCurrentLine(a,-1,"",false)},parseCurrentLine:function(i,d,b,g){var a,f,c,n,k,m,h,e,j;a=i.selection.getRng(true).cloneRange();if(a.startOffset<5){e=a.endContainer.previousSibling;if(e==null){if(a.endContainer.firstChild==null||a.endContainer.firstChild.nextSibling==null){return}e=a.endContainer.firstChild.nextSibling}j=e.length;a.setStart(e,j);a.setEnd(e,j);if(a.endOffset<5){return}f=a.endOffset;n=e}else{n=a.endContainer;if(n.nodeType!=3&&n.firstChild){while(n.nodeType!=3&&n.firstChild){n=n.firstChild}a.setStart(n,0);a.setEnd(n,n.nodeValue.length)}if(a.endOffset==1){f=2}else{f=a.endOffset-1-d}}c=f;do{a.setStart(n,f-2);a.setEnd(n,f-1);f-=1}while(a.toString()!=" "&&a.toString()!=""&&a.toString().charCodeAt(0)!=160&&(f-2)>=0&&a.toString()!=b);if(a.toString()==b||a.toString().charCodeAt(0)==160){a.setStart(n,f);a.setEnd(n,c);f+=1}else{if(a.startOffset==0){a.setStart(n,0);a.setEnd(n,c)}else{a.setStart(n,f);a.setEnd(n,c)}}var m=a.toString();if(m.charAt(m.length-1)=="."){a.setEnd(n,c-1)}m=a.toString();h=m.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|[A-Z0-9._%+-]+@)(.+)$/i);if(h){if(h[1]=="www."){h[1]="http://www."}else{if(/@$/.test(h[1])){h[1]="mailto:"+h[1]}}k=i.selection.getBookmark();i.selection.setRng(a);tinyMCE.execCommand("createlink",false,h[1]+h[2]);i.selection.moveToBookmark(k);if(tinyMCE.isWebKit){i.selection.collapse(false);var l=Math.min(n.length,c+1);a.setStart(n,l);a.setEnd(n,l);i.selection.setRng(a)}}},getInfo:function(){return{longname:"Autolink",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autolink",tinymce.plugins.AutolinkPlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js
deleted file mode 100644
index ad9d7007a..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js
+++ /dev/null
@@ -1,180 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2011, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.AutolinkPlugin', {
- /**
- * Initializes the plugin, this will be executed after the plugin has been created.
- * This call is done before the editor instance has finished it's initialization so use the onInit event
- * of the editor instance to intercept that event.
- *
- * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
- * @param {string} url Absolute URL to where the plugin is located.
- */
-
- init : function(ed, url) {
- var t = this;
-
- // Add a key down handler
- ed.onKeyDown.addToTop(function(ed, e) {
- if (e.keyCode == 13)
- return t.handleEnter(ed);
- });
-
- // Internet Explorer has built-in automatic linking for most cases
- if (tinyMCE.isIE)
- return;
-
- ed.onKeyPress.add(function(ed, e) {
- if (e.which == 41)
- return t.handleEclipse(ed);
- });
-
- // Add a key up handler
- ed.onKeyUp.add(function(ed, e) {
- if (e.keyCode == 32)
- return t.handleSpacebar(ed);
- });
- },
-
- handleEclipse : function(ed) {
- this.parseCurrentLine(ed, -1, '(', true);
- },
-
- handleSpacebar : function(ed) {
- this.parseCurrentLine(ed, 0, '', true);
- },
-
- handleEnter : function(ed) {
- this.parseCurrentLine(ed, -1, '', false);
- },
-
- parseCurrentLine : function(ed, end_offset, delimiter, goback) {
- var r, end, start, endContainer, bookmark, text, matches, prev, len;
-
- // We need at least five characters to form a URL,
- // hence, at minimum, five characters from the beginning of the line.
- r = ed.selection.getRng(true).cloneRange();
- if (r.startOffset < 5) {
- // During testing, the caret is placed inbetween two text nodes.
- // The previous text node contains the URL.
- prev = r.endContainer.previousSibling;
- if (prev == null) {
- if (r.endContainer.firstChild == null || r.endContainer.firstChild.nextSibling == null)
- return;
-
- prev = r.endContainer.firstChild.nextSibling;
- }
- len = prev.length;
- r.setStart(prev, len);
- r.setEnd(prev, len);
-
- if (r.endOffset < 5)
- return;
-
- end = r.endOffset;
- endContainer = prev;
- } else {
- endContainer = r.endContainer;
-
- // Get a text node
- if (endContainer.nodeType != 3 && endContainer.firstChild) {
- while (endContainer.nodeType != 3 && endContainer.firstChild)
- endContainer = endContainer.firstChild;
-
- r.setStart(endContainer, 0);
- r.setEnd(endContainer, endContainer.nodeValue.length);
- }
-
- if (r.endOffset == 1)
- end = 2;
- else
- end = r.endOffset - 1 - end_offset;
- }
-
- start = end;
-
- do
- {
- // Move the selection one character backwards.
- r.setStart(endContainer, end - 2);
- r.setEnd(endContainer, end - 1);
- end -= 1;
-
- // Loop until one of the following is found: a blank space, &nbsp;, delimeter, (end-2) >= 0
- } while (r.toString() != ' ' && r.toString() != '' && r.toString().charCodeAt(0) != 160 && (end -2) >= 0 && r.toString() != delimiter);
-
- if (r.toString() == delimiter || r.toString().charCodeAt(0) == 160) {
- r.setStart(endContainer, end);
- r.setEnd(endContainer, start);
- end += 1;
- } else if (r.startOffset == 0) {
- r.setStart(endContainer, 0);
- r.setEnd(endContainer, start);
- }
- else {
- r.setStart(endContainer, end);
- r.setEnd(endContainer, start);
- }
-
- // Exclude last . from word like "www.site.com."
- var text = r.toString();
- if (text.charAt(text.length - 1) == '.') {
- r.setEnd(endContainer, start - 1);
- }
-
- text = r.toString();
- matches = text.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|[A-Z0-9._%+-]+@)(.+)$/i);
-
- if (matches) {
- if (matches[1] == 'www.') {
- matches[1] = 'http://www.';
- } else if (/@$/.test(matches[1])) {
- matches[1] = 'mailto:' + matches[1];
- }
-
- bookmark = ed.selection.getBookmark();
-
- ed.selection.setRng(r);
- tinyMCE.execCommand('createlink',false, matches[1] + matches[2]);
- ed.selection.moveToBookmark(bookmark);
-
- // TODO: Determine if this is still needed.
- if (tinyMCE.isWebKit) {
- // move the caret to its original position
- ed.selection.collapse(false);
- var max = Math.min(endContainer.length, start + 1);
- r.setStart(endContainer, max);
- r.setEnd(endContainer, max);
- ed.selection.setRng(r);
- }
- }
- },
-
- /**
- * Returns information about the plugin as a name/value array.
- * The current keys are longname, author, authorurl, infourl and version.
- *
- * @return {Object} Name/value array containing information about the plugin.
- */
- getInfo : function() {
- return {
- longname : 'Autolink',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('autolink', tinymce.plugins.AutolinkPlugin);
-})();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js
deleted file mode 100644
index 46d9dc3dd..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.AutoResizePlugin",{init:function(a,c){var d=this,e=0;if(a.getParam("fullscreen_is_enabled")){return}function b(){var j,i=a.getDoc(),f=i.body,l=i.documentElement,h=tinymce.DOM,k=d.autoresize_min_height,g;g=tinymce.isIE?f.scrollHeight:(tinymce.isWebKit&&f.clientHeight==0?0:f.offsetHeight);if(g>d.autoresize_min_height){k=g}if(d.autoresize_max_height&&g>d.autoresize_max_height){k=d.autoresize_max_height;f.style.overflowY="auto";l.style.overflowY="auto"}else{f.style.overflowY="hidden";l.style.overflowY="hidden";f.scrollTop=0}if(k!==e){j=k-e;h.setStyle(h.get(a.id+"_ifr"),"height",k+"px");e=k;if(tinymce.isWebKit&&j<0){b()}}}d.editor=a;d.autoresize_min_height=parseInt(a.getParam("autoresize_min_height",a.getElement().offsetHeight));d.autoresize_max_height=parseInt(a.getParam("autoresize_max_height",0));a.onInit.add(function(f){f.dom.setStyle(f.getBody(),"paddingBottom",f.getParam("autoresize_bottom_margin",50)+"px")});a.onChange.add(b);a.onSetContent.add(b);a.onPaste.add(b);a.onKeyUp.add(b);a.onPostRender.add(b);if(a.getParam("autoresize_on_init",true)){a.onLoad.add(b);a.onLoadContent.add(b)}a.addCommand("mceAutoResize",b)},getInfo:function(){return{longname:"Auto Resize",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autoresize",tinymce.plugins.AutoResizePlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js
deleted file mode 100644
index 7673bcff8..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- /**
- * Auto Resize
- *
- * This plugin automatically resizes the content area to fit its content height.
- * It will retain a minimum height, which is the height of the content area when
- * it's initialized.
- */
- tinymce.create('tinymce.plugins.AutoResizePlugin', {
- /**
- * Initializes the plugin, this will be executed after the plugin has been created.
- * This call is done before the editor instance has finished it's initialization so use the onInit event
- * of the editor instance to intercept that event.
- *
- * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
- * @param {string} url Absolute URL to where the plugin is located.
- */
- init : function(ed, url) {
- var t = this, oldSize = 0;
-
- if (ed.getParam('fullscreen_is_enabled'))
- return;
-
- /**
- * This method gets executed each time the editor needs to resize.
- */
- function resize() {
- var deltaSize, d = ed.getDoc(), body = d.body, de = d.documentElement, DOM = tinymce.DOM, resizeHeight = t.autoresize_min_height, myHeight;
-
- // Get height differently depending on the browser used
- myHeight = tinymce.isIE ? body.scrollHeight : (tinymce.isWebKit && body.clientHeight == 0 ? 0 : body.offsetHeight);
-
- // Don't make it smaller than the minimum height
- if (myHeight > t.autoresize_min_height)
- resizeHeight = myHeight;
-
- // If a maximum height has been defined don't exceed this height
- if (t.autoresize_max_height && myHeight > t.autoresize_max_height) {
- resizeHeight = t.autoresize_max_height;
- body.style.overflowY = "auto";
- de.style.overflowY = "auto"; // Old IE
- } else {
- body.style.overflowY = "hidden";
- de.style.overflowY = "hidden"; // Old IE
- body.scrollTop = 0;
- }
-
- // Resize content element
- if (resizeHeight !== oldSize) {
- deltaSize = resizeHeight - oldSize;
- DOM.setStyle(DOM.get(ed.id + '_ifr'), 'height', resizeHeight + 'px');
- oldSize = resizeHeight;
-
- // WebKit doesn't decrease the size of the body element until the iframe gets resized
- // So we need to continue to resize the iframe down until the size gets fixed
- if (tinymce.isWebKit && deltaSize < 0)
- resize();
- }
- };
-
- t.editor = ed;
-
- // Define minimum height
- t.autoresize_min_height = parseInt(ed.getParam('autoresize_min_height', ed.getElement().offsetHeight));
-
- // Define maximum height
- t.autoresize_max_height = parseInt(ed.getParam('autoresize_max_height', 0));
-
- // Add padding at the bottom for better UX
- ed.onInit.add(function(ed){
- ed.dom.setStyle(ed.getBody(), 'paddingBottom', ed.getParam('autoresize_bottom_margin', 50) + 'px');
- });
-
- // Add appropriate listeners for resizing content area
- ed.onChange.add(resize);
- ed.onSetContent.add(resize);
- ed.onPaste.add(resize);
- ed.onKeyUp.add(resize);
- ed.onPostRender.add(resize);
-
- if (ed.getParam('autoresize_on_init', true)) {
- ed.onLoad.add(resize);
- ed.onLoadContent.add(resize);
- }
-
- // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');
- ed.addCommand('mceAutoResize', resize);
- },
-
- /**
- * Returns information about the plugin as a name/value array.
- * The current keys are longname, author, authorurl, infourl and version.
- *
- * @return {Object} Name/value array containing information about the plugin.
- */
- getInfo : function() {
- return {
- longname : 'Auto Resize',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('autoresize', tinymce.plugins.AutoResizePlugin);
-})();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js
deleted file mode 100644
index f7d057600..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(e){var c="autosave",g="restoredraft",b=true,f,d,a=e.util.Dispatcher;e.create("tinymce.plugins.AutoSave",{init:function(i,j){var h=this,l=i.settings;h.editor=i;function k(n){var m={s:1000,m:60000};n=/^(\d+)([ms]?)$/.exec(""+n);return(n[2]?m[n[2]]:1)*parseInt(n)}e.each({ask_before_unload:b,interval:"30s",retention:"20m",minlength:50},function(n,m){m=c+"_"+m;if(l[m]===f){l[m]=n}});l.autosave_interval=k(l.autosave_interval);l.autosave_retention=k(l.autosave_retention);i.addButton(g,{title:c+".restore_content",onclick:function(){if(i.getContent({draft:true}).replace(/\s|&nbsp;|<\/?p[^>]*>|<br[^>]*>/gi,"").length>0){i.windowManager.confirm(c+".warning_message",function(m){if(m){h.restoreDraft()}})}else{h.restoreDraft()}}});i.onNodeChange.add(function(){var m=i.controlManager;if(m.get(g)){m.setDisabled(g,!h.hasDraft())}});i.onInit.add(function(){if(i.controlManager.get(g)){h.setupStorage(i);setInterval(function(){h.storeDraft();i.nodeChanged()},l.autosave_interval)}});h.onStoreDraft=new a(h);h.onRestoreDraft=new a(h);h.onRemoveDraft=new a(h);if(!d){window.onbeforeunload=e.plugins.AutoSave._beforeUnloadHandler;d=b}},getInfo:function(){return{longname:"Auto save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave",version:e.majorVersion+"."+e.minorVersion}},getExpDate:function(){return new Date(new Date().getTime()+this.editor.settings.autosave_retention).toUTCString()},setupStorage:function(i){var h=this,k=c+"_test",j="OK";h.key=c+i.id;e.each([function(){if(localStorage){localStorage.setItem(k,j);if(localStorage.getItem(k)===j){localStorage.removeItem(k);return localStorage}}},function(){if(sessionStorage){sessionStorage.setItem(k,j);if(sessionStorage.getItem(k)===j){sessionStorage.removeItem(k);return sessionStorage}}},function(){if(e.isIE){i.getElement().style.behavior="url('#default#userData')";return{autoExpires:b,setItem:function(l,n){var m=i.getElement();m.setAttribute(l,n);m.expires=h.getExpDate();try{m.save("TinyMCE")}catch(o){}},getItem:function(l){var m=i.getElement();try{m.load("TinyMCE");return m.getAttribute(l)}catch(n){return null}},removeItem:function(l){i.getElement().removeAttribute(l)}}}},],function(l){try{h.storage=l();if(h.storage){return false}}catch(m){}})},storeDraft:function(){var i=this,l=i.storage,j=i.editor,h,k;if(l){if(!l.getItem(i.key)&&!j.isDirty()){return}k=j.getContent({draft:true});if(k.length>j.settings.autosave_minlength){h=i.getExpDate();if(!i.storage.autoExpires){i.storage.setItem(i.key+"_expires",h)}i.storage.setItem(i.key,k);i.onStoreDraft.dispatch(i,{expires:h,content:k})}}},restoreDraft:function(){var h=this,j=h.storage,i;if(j){i=j.getItem(h.key);if(i){h.editor.setContent(i);h.onRestoreDraft.dispatch(h,{content:i})}}},hasDraft:function(){var h=this,k=h.storage,i,j;if(k){j=!!k.getItem(h.key);if(j){if(!h.storage.autoExpires){i=new Date(k.getItem(h.key+"_expires"));if(new Date().getTime()<i.getTime()){return b}h.removeDraft()}else{return b}}}return false},removeDraft:function(){var h=this,k=h.storage,i=h.key,j;if(k){j=k.getItem(i);k.removeItem(i);k.removeItem(i+"_expires");if(j){h.onRemoveDraft.dispatch(h,{content:j})}}},"static":{_beforeUnloadHandler:function(h){var i;e.each(tinyMCE.editors,function(j){if(j.plugins.autosave){j.plugins.autosave.storeDraft()}if(j.getParam("fullscreen_is_enabled")){return}if(!i&&j.isDirty()&&j.getParam("autosave_ask_before_unload")){i=j.getLang("autosave.unload_msg")}});return i}}});e.PluginManager.add("autosave",e.plugins.AutoSave)})(tinymce); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js
deleted file mode 100644
index 8311483f9..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js
+++ /dev/null
@@ -1,431 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- *
- * Adds auto-save capability to the TinyMCE text editor to rescue content
- * inadvertently lost. This plugin was originally developed by Speednet
- * and that project can be found here: http://code.google.com/p/tinyautosave/
- *
- * TECHNOLOGY DISCUSSION:
- *
- * The plugin attempts to use the most advanced features available in the current browser to save
- * as much content as possible. There are a total of four different methods used to autosave the
- * content. In order of preference, they are:
- *
- * 1. localStorage - A new feature of HTML 5, localStorage can store megabytes of data per domain
- * on the client computer. Data stored in the localStorage area has no expiration date, so we must
- * manage expiring the data ourselves. localStorage is fully supported by IE8, and it is supposed
- * to be working in Firefox 3 and Safari 3.2, but in reality is is flaky in those browsers. As
- * HTML 5 gets wider support, the AutoSave plugin will use it automatically. In Windows Vista/7,
- * localStorage is stored in the following folder:
- * C:\Users\[username]\AppData\Local\Microsoft\Internet Explorer\DOMStore\[tempFolder]
- *
- * 2. sessionStorage - A new feature of HTML 5, sessionStorage works similarly to localStorage,
- * except it is designed to expire after a certain amount of time. Because the specification
- * around expiration date/time is very loosely-described, it is preferrable to use locaStorage and
- * manage the expiration ourselves. sessionStorage has similar storage characteristics to
- * localStorage, although it seems to have better support by Firefox 3 at the moment. (That will
- * certainly change as Firefox continues getting better at HTML 5 adoption.)
- *
- * 3. UserData - A very under-exploited feature of Microsoft Internet Explorer, UserData is a
- * way to store up to 128K of data per "document", or up to 1MB of data per domain, on the client
- * computer. The feature is available for IE 5+, which makes it available for every version of IE
- * supported by TinyMCE. The content is persistent across browser restarts and expires on the
- * date/time specified, just like a cookie. However, the data is not cleared when the user clears
- * cookies on the browser, which makes it well-suited for rescuing autosaved content. UserData,
- * like other Microsoft IE browser technologies, is implemented as a behavior attached to a
- * specific DOM object, so in this case we attach the behavior to the same DOM element that the
- * TinyMCE editor instance is attached to.
- */
-
-(function(tinymce) {
- // Setup constants to help the compressor to reduce script size
- var PLUGIN_NAME = 'autosave',
- RESTORE_DRAFT = 'restoredraft',
- TRUE = true,
- undefined,
- unloadHandlerAdded,
- Dispatcher = tinymce.util.Dispatcher;
-
- /**
- * This plugin adds auto-save capability to the TinyMCE text editor to rescue content
- * inadvertently lost. By using localStorage.
- *
- * @class tinymce.plugins.AutoSave
- */
- tinymce.create('tinymce.plugins.AutoSave', {
- /**
- * Initializes the plugin, this will be executed after the plugin has been created.
- * This call is done before the editor instance has finished it's initialization so use the onInit event
- * of the editor instance to intercept that event.
- *
- * @method init
- * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
- * @param {string} url Absolute URL to where the plugin is located.
- */
- init : function(ed, url) {
- var self = this, settings = ed.settings;
-
- self.editor = ed;
-
- // Parses the specified time string into a milisecond number 10m, 10s etc.
- function parseTime(time) {
- var multipels = {
- s : 1000,
- m : 60000
- };
-
- time = /^(\d+)([ms]?)$/.exec('' + time);
-
- return (time[2] ? multipels[time[2]] : 1) * parseInt(time);
- };
-
- // Default config
- tinymce.each({
- ask_before_unload : TRUE,
- interval : '30s',
- retention : '20m',
- minlength : 50
- }, function(value, key) {
- key = PLUGIN_NAME + '_' + key;
-
- if (settings[key] === undefined)
- settings[key] = value;
- });
-
- // Parse times
- settings.autosave_interval = parseTime(settings.autosave_interval);
- settings.autosave_retention = parseTime(settings.autosave_retention);
-
- // Register restore button
- ed.addButton(RESTORE_DRAFT, {
- title : PLUGIN_NAME + ".restore_content",
- onclick : function() {
- if (ed.getContent({draft: true}).replace(/\s|&nbsp;|<\/?p[^>]*>|<br[^>]*>/gi, "").length > 0) {
- // Show confirm dialog if the editor isn't empty
- ed.windowManager.confirm(
- PLUGIN_NAME + ".warning_message",
- function(ok) {
- if (ok)
- self.restoreDraft();
- }
- );
- } else
- self.restoreDraft();
- }
- });
-
- // Enable/disable restoredraft button depending on if there is a draft stored or not
- ed.onNodeChange.add(function() {
- var controlManager = ed.controlManager;
-
- if (controlManager.get(RESTORE_DRAFT))
- controlManager.setDisabled(RESTORE_DRAFT, !self.hasDraft());
- });
-
- ed.onInit.add(function() {
- // Check if the user added the restore button, then setup auto storage logic
- if (ed.controlManager.get(RESTORE_DRAFT)) {
- // Setup storage engine
- self.setupStorage(ed);
-
- // Auto save contents each interval time
- setInterval(function() {
- self.storeDraft();
- ed.nodeChanged();
- }, settings.autosave_interval);
- }
- });
-
- /**
- * This event gets fired when a draft is stored to local storage.
- *
- * @event onStoreDraft
- * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event.
- * @param {Object} draft Draft object containing the HTML contents of the editor.
- */
- self.onStoreDraft = new Dispatcher(self);
-
- /**
- * This event gets fired when a draft is restored from local storage.
- *
- * @event onStoreDraft
- * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event.
- * @param {Object} draft Draft object containing the HTML contents of the editor.
- */
- self.onRestoreDraft = new Dispatcher(self);
-
- /**
- * This event gets fired when a draft removed/expired.
- *
- * @event onRemoveDraft
- * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event.
- * @param {Object} draft Draft object containing the HTML contents of the editor.
- */
- self.onRemoveDraft = new Dispatcher(self);
-
- // Add ask before unload dialog only add one unload handler
- if (!unloadHandlerAdded) {
- window.onbeforeunload = tinymce.plugins.AutoSave._beforeUnloadHandler;
- unloadHandlerAdded = TRUE;
- }
- },
-
- /**
- * Returns information about the plugin as a name/value array.
- * The current keys are longname, author, authorurl, infourl and version.
- *
- * @method getInfo
- * @return {Object} Name/value array containing information about the plugin.
- */
- getInfo : function() {
- return {
- longname : 'Auto save',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- /**
- * Returns an expiration date UTC string.
- *
- * @method getExpDate
- * @return {String} Expiration date UTC string.
- */
- getExpDate : function() {
- return new Date(
- new Date().getTime() + this.editor.settings.autosave_retention
- ).toUTCString();
- },
-
- /**
- * This method will setup the storage engine. If the browser has support for it.
- *
- * @method setupStorage
- */
- setupStorage : function(ed) {
- var self = this, testKey = PLUGIN_NAME + '_test', testVal = "OK";
-
- self.key = PLUGIN_NAME + ed.id;
-
- // Loop though each storage engine type until we find one that works
- tinymce.each([
- function() {
- // Try HTML5 Local Storage
- if (localStorage) {
- localStorage.setItem(testKey, testVal);
-
- if (localStorage.getItem(testKey) === testVal) {
- localStorage.removeItem(testKey);
-
- return localStorage;
- }
- }
- },
-
- function() {
- // Try HTML5 Session Storage
- if (sessionStorage) {
- sessionStorage.setItem(testKey, testVal);
-
- if (sessionStorage.getItem(testKey) === testVal) {
- sessionStorage.removeItem(testKey);
-
- return sessionStorage;
- }
- }
- },
-
- function() {
- // Try IE userData
- if (tinymce.isIE) {
- ed.getElement().style.behavior = "url('#default#userData')";
-
- // Fake localStorage on old IE
- return {
- autoExpires : TRUE,
-
- setItem : function(key, value) {
- var userDataElement = ed.getElement();
-
- userDataElement.setAttribute(key, value);
- userDataElement.expires = self.getExpDate();
-
- try {
- userDataElement.save("TinyMCE");
- } catch (e) {
- // Ignore, saving might fail if "Userdata Persistence" is disabled in IE
- }
- },
-
- getItem : function(key) {
- var userDataElement = ed.getElement();
-
- try {
- userDataElement.load("TinyMCE");
- return userDataElement.getAttribute(key);
- } catch (e) {
- // Ignore, loading might fail if "Userdata Persistence" is disabled in IE
- return null;
- }
- },
-
- removeItem : function(key) {
- ed.getElement().removeAttribute(key);
- }
- };
- }
- },
- ], function(setup) {
- // Try executing each function to find a suitable storage engine
- try {
- self.storage = setup();
-
- if (self.storage)
- return false;
- } catch (e) {
- // Ignore
- }
- });
- },
-
- /**
- * This method will store the current contents in the the storage engine.
- *
- * @method storeDraft
- */
- storeDraft : function() {
- var self = this, storage = self.storage, editor = self.editor, expires, content;
-
- // Is the contents dirty
- if (storage) {
- // If there is no existing key and the contents hasn't been changed since
- // it's original value then there is no point in saving a draft
- if (!storage.getItem(self.key) && !editor.isDirty())
- return;
-
- // Store contents if the contents if longer than the minlength of characters
- content = editor.getContent({draft: true});
- if (content.length > editor.settings.autosave_minlength) {
- expires = self.getExpDate();
-
- // Store expiration date if needed IE userData has auto expire built in
- if (!self.storage.autoExpires)
- self.storage.setItem(self.key + "_expires", expires);
-
- self.storage.setItem(self.key, content);
- self.onStoreDraft.dispatch(self, {
- expires : expires,
- content : content
- });
- }
- }
- },
-
- /**
- * This method will restore the contents from the storage engine back to the editor.
- *
- * @method restoreDraft
- */
- restoreDraft : function() {
- var self = this, storage = self.storage, content;
-
- if (storage) {
- content = storage.getItem(self.key);
-
- if (content) {
- self.editor.setContent(content);
- self.onRestoreDraft.dispatch(self, {
- content : content
- });
- }
- }
- },
-
- /**
- * This method will return true/false if there is a local storage draft available.
- *
- * @method hasDraft
- * @return {boolean} true/false state if there is a local draft.
- */
- hasDraft : function() {
- var self = this, storage = self.storage, expDate, exists;
-
- if (storage) {
- // Does the item exist at all
- exists = !!storage.getItem(self.key);
- if (exists) {
- // Storage needs autoexpire
- if (!self.storage.autoExpires) {
- expDate = new Date(storage.getItem(self.key + "_expires"));
-
- // Contents hasn't expired
- if (new Date().getTime() < expDate.getTime())
- return TRUE;
-
- // Remove it if it has
- self.removeDraft();
- } else
- return TRUE;
- }
- }
-
- return false;
- },
-
- /**
- * Removes the currently stored draft.
- *
- * @method removeDraft
- */
- removeDraft : function() {
- var self = this, storage = self.storage, key = self.key, content;
-
- if (storage) {
- // Get current contents and remove the existing draft
- content = storage.getItem(key);
- storage.removeItem(key);
- storage.removeItem(key + "_expires");
-
- // Dispatch remove event if we had any contents
- if (content) {
- self.onRemoveDraft.dispatch(self, {
- content : content
- });
- }
- }
- },
-
- "static" : {
- // Internal unload handler will be called before the page is unloaded
- _beforeUnloadHandler : function(e) {
- var msg;
-
- tinymce.each(tinyMCE.editors, function(ed) {
- // Store a draft for each editor instance
- if (ed.plugins.autosave)
- ed.plugins.autosave.storeDraft();
-
- // Never ask in fullscreen mode
- if (ed.getParam("fullscreen_is_enabled"))
- return;
-
- // Setup a return message if the editor is dirty
- if (!msg && ed.isDirty() && ed.getParam("autosave_ask_before_unload"))
- msg = ed.getLang("autosave.unload_msg");
- });
-
- return msg;
- }
- }
- });
-
- tinymce.PluginManager.add('autosave', tinymce.plugins.AutoSave);
-})(tinymce);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js b/library/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js
deleted file mode 100644
index fce6bd3e1..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js
+++ /dev/null
@@ -1,4 +0,0 @@
-tinyMCE.addI18n('en.autosave',{
-restore_content: "Restore auto-saved content",
-warning_message: "If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?"
-}); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js
deleted file mode 100644
index 81b69e736..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(e,t){var n=this,r=e.getParam("bbcode_dialect","dfrn").toLowerCase();e.onBeforeSetContent.add(function(e,t){t.content=n["_"+r+"_bbcode2html"](t.content)});e.onPostProcess.add(function(e,t){if(t.set)t.content=n["_"+r+"_bbcode2html"](t.content);if(t.get)t.content=n["_"+r+"_html2bbcode"](t.content)})},getInfo:function(){return{longname:"BBCode Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_dfrn_html2bbcode:function(e){function t(t,n){e=e.replace(t,n)}function n(e){var t,n,r=[],i=[];var s=/<span [^>]*class *= *[\"'](?:[^\"']* )*oembed(?: [^\"']*)*[\"'][^>]*>(.*?(?:<span[^>]*>(.*?)<\/span *>)*.*?)<\/span *>/ig;while(t=s.exec(e)){var o=/<a([^>]* rel=[\"']oembed[\"'][^>]*)>.*?<\/a *>/ig;if(n=o.exec(t[1])){var u=/href=[\"']([^\"']*)[\"']/ig;var a=u.exec(n[1]);if(a[1]){r.push(t[0]);i.push("[EMBED]"+a[1]+"[/EMBED]")}}}for(var f=0;f<r.length;f++)e=e.replace(r[f],i[f]);return e}e=tinymce.trim(e);if(e.indexOf('class="oembed')>=0){e=n(e)}t(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");t(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");t(/<span style=\"color:(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");t(/<font>(.*?)<\/font>/gi,"$1");t(/<img.*?width=\"(.*?)\".*?height=\"(.*?)\".*?src=\"(.*?)\".*?\/>/gi,"[img=$1x$2]$3[/img]");t(/<img.*?height=\"(.*?)\".*?width=\"(.*?)\".*?src=\"(.*?)\".*?\/>/gi,"[img=$2x$1]$3[/img]");t(/<img.*?src=\"(.*?)\".*?height=\"(.*?)\".*?width=\"(.*?)\".*?\/>/gi,"[img=$3x$2]$1[/img]");t(/<img.*?src=\"(.*?)\".*?width=\"(.*?)\".*?height=\"(.*?)\".*?\/>/gi,"[img=$2x$3]$1[/img]");t(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");t(/<ul class=\"listbullet\" style=\"list-style-type\: circle\;\">(.*?)<\/ul>/gi,"[list]$1[/list]");t(/<ul class=\"listnone\" style=\"list-style-type\: none\;\">(.*?)<\/ul>/gi,"[list=]$1[/list]");t(/<ul class=\"listdecimal\" style=\"list-style-type\: decimal\;\">(.*?)<\/ul>/gi,"[list=1]$1[/list]");t(/<ul class=\"listlowerroman\" style=\"list-style-type\: lower-roman\;\">(.*?)<\/ul>/gi,"[list=i]$1[/list]");t(/<ul class=\"listupperroman\" style=\"list-style-type\: upper-roman\;\">(.*?)<\/ul>/gi,"[list=I]$1[/list]");t(/<ul class=\"listloweralpha\" style=\"list-style-type\: lower-alpha\;\">(.*?)<\/ul>/gi,"[list=a]$1[/list]");t(/<ul class=\"listupperalpha\" style=\"list-style-type\: upper-alpha\;\">(.*?)<\/ul>/gi,"[list=A]$1[/list]");t(/<li>(.*?)<\/li>/gi,"[li]$1[/li]");t(/<code>(.*?)<\/code>/gi,"[code]$1[/code]");t(/<\/(strong|b)>/gi,"[/b]");t(/<(strong|b)>/gi,"[b]");t(/<\/(em|i)>/gi,"[/i]");t(/<(em|i)>/gi,"[i]");t(/<\/u>/gi,"[/u]");t(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");t(/<u>/gi,"[u]");t(/<blockquote[^>]*>/gi,"[quote]");t(/<\/blockquote>/gi,"[/quote]");t(/<hr \/>/gi,"[hr]");t(/<br (.*?)\/>/gi,"\n");t(/<br\/>/gi,"\n");t(/<br>/gi,"\n");t(/<p>/gi,"");t(/<\/p>/gi,"\n");t(/&nbsp;/gi," ");t(/&quot;/gi,'"');t(/&lt;/gi,"<");t(/&gt;/gi,">");t(/&/gi,"&");return e},_dfrn_bbcode2html:function(e){function t(t,n){var r=new Array;var i=e.split("[code]");var o=0;var u="";u=i.shift();u=u.replace(t,n);r.push(u);for(o=0;o<i.length;o++){var a=new Array;var f=i.shift();var l=f.split("[/code]");a.push(l.shift());u=l.shift();u=u.replace(t,n);a.push(u);r.push(a.join("[/code]"))}e=r.join("[code]")}function n(e,t){function n(t){e=t}t=bin2hex(t);$.ajax({url:"oembed/b2h?url="+t,async:false,success:n,dataType:"html"});return e}e=tinymce.trim(e);t(/\n/gi,"<br />");t(/\[b\]/gi,"<strong>");t(/\[\/b\]/gi,"</strong>");t(/\[i\]/gi,"<em>");t(/\[\/i\]/gi,"</em>");t(/\[u\]/gi,"<u>");t(/\[\/u\]/gi,"</u>");t(/\[hr\]/gi,"<hr />");t(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>');t(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>');t(/\[img=(.*?)x(.*?)\](.*?)\[\/img\]/gi,'<img width="$1" height="$2" src="$3" />');t(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />');t(/\[list\](.*?)\[\/list\]/gi,'<ul class="listbullet" style="list-style-type: circle;">$1</ul>');t(/\[list=\](.*?)\[\/list\]/gi,'<ul class="listnone" style="list-style-type: none;">$1</ul>');t(/\[list=1\](.*?)\[\/list\]/gi,'<ul class="listdecimal" style="list-style-type: decimal;">$1</ul>');t(/\[list=i\](.*?)\[\/list\]/gi,'<ul class="listlowerroman" style="list-style-type: lower-roman;">$1</ul>');t(/\[list=I\](.*?)\[\/list\]/gi,'<ul class="listupperroman" style="list-style-type: upper-roman;">$1</ul>');t(/\[list=a\](.*?)\[\/list\]/gi,'<ul class="listloweralpha" style="list-style-type: lower-alpha;">$1</ul>');t(/\[list=A\](.*?)\[\/list\]/gi,'<ul class="listupperalpha" style="list-style-type: upper-alpha;">$1</ul>');t(/\[li\](.*?)\[\/li\]/gi,"<li>$1</li>");t(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<span style="color: $1;">$2</span>');t(/\[size=(.*?)\](.*?)\[\/size\]/gi,'<span style="font-size: $1;">$2</span>');t(/\[code\](.*?)\[\/code\]/gi,"<code>$1</code>");t(/\[quote.*?\](.*?)\[\/quote\]/gi,"<blockquote>$1</blockquote>");e=e.replace(/\[embed\](.*?)\[\/embed\]/gi,n);return e}});tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)})()
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js2 b/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js2
deleted file mode 100644
index 290508845..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js2
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(e,t){var n=this,r=e.getParam("bbcode_dialect","dfrn").toLowerCase();e.onBeforeSetContent.add(function(e,t){t.content=n["_"+r+"_bbcode2html"](t.content)});e.onPostProcess.add(function(e,t){if(t.set)t.content=n["_"+r+"_bbcode2html"](t.content);if(t.get)t.content=n["_"+r+"_html2bbcode"](t.content)})},getInfo:function(){return{longname:"BBCode Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_dfrn_html2bbcode:function(e){function t(t,n){e=e.replace(t,n)}function n(e){var t,n,r=[],i=[];var s=/<span [^>]*class *= *[\"'](?:[^\"']* )*oembed(?: [^\"']*)*[\"'][^>]*>(.*?(?:<span[^>]*>(.*?)<\/span *>)*.*?)<\/span *>/ig;while(t=s.exec(e)){var o=/<a([^>]* rel=[\"']oembed[\"'][^>]*)>.*?<\/a *>/ig;if(n=o.exec(t[1])){var u=/href=[\"']([^\"']*)[\"']/ig;var a=u.exec(n[1]);if(a[1]){r.push(t[0]);i.push("[EMBED]"+a[1]+"[/EMBED]")}}}for(var f=0;f<r.length;f++)e=e.replace(r[f],i[f]);return e}e=tinymce.trim(e);if(e.indexOf('class="oembed')>=0){e=n(e)}t(/#\^<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"#^[url=$1]$2[/url]");t(/(^|[^#\^])<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"$1#^[url=$2]$3[/url]");t(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");t(/<span style=\"color:(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");t(/<font>(.*?)<\/font>/gi,"$1");t(/<img.*?width=\"(.*?)\".*?height=\"(.*?)\".*?src=\"(.*?)\".*?\/>/gi,"[img=$1x$2]$3[/img]");t(/<img.*?height=\"(.*?)\".*?width=\"(.*?)\".*?src=\"(.*?)\".*?\/>/gi,"[img=$2x$1]$3[/img]");t(/<img.*?src=\"(.*?)\".*?height=\"(.*?)\".*?width=\"(.*?)\".*?\/>/gi,"[img=$3x$2]$1[/img]");t(/<img.*?src=\"(.*?)\".*?width=\"(.*?)\".*?height=\"(.*?)\".*?\/>/gi,"[img=$2x$3]$1[/img]");t(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");t(/<ul class=\"listbullet\" style=\"list-style-type\: circle\;\">(.*?)<\/ul>/gi,"[list]$1[/list]");t(/<ul class=\"listnone\" style=\"list-style-type\: none\;\">(.*?)<\/ul>/gi,"[list=]$1[/list]");t(/<ul class=\"listdecimal\" style=\"list-style-type\: decimal\;\">(.*?)<\/ul>/gi,"[list=1]$1[/list]");t(/<ul class=\"listlowerroman\" style=\"list-style-type\: lower-roman\;\">(.*?)<\/ul>/gi,"[list=i]$1[/list]");t(/<ul class=\"listupperroman\" style=\"list-style-type\: upper-roman\;\">(.*?)<\/ul>/gi,"[list=I]$1[/list]");t(/<ul class=\"listloweralpha\" style=\"list-style-type\: lower-alpha\;\">(.*?)<\/ul>/gi,"[list=a]$1[/list]");t(/<ul class=\"listupperalpha\" style=\"list-style-type\: upper-alpha\;\">(.*?)<\/ul>/gi,"[list=A]$1[/list]");t(/<li>(.*?)<\/li>/gi,"[li]$1[/li]");t(/<code>(.*?)<\/code>/gi,"[code]$1[/code]");t(/<\/(strong|b)>/gi,"[/b]");t(/<(strong|b)>/gi,"[b]");t(/<\/(em|i)>/gi,"[/i]");t(/<(em|i)>/gi,"[i]");t(/<\/u>/gi,"[/u]");t(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");t(/<u>/gi,"[u]");t(/<blockquote[^>]*>/gi,"[quote]");t(/<\/blockquote>/gi,"[/quote]");t(/<hr \/>/gi,"[hr]");t(/<br (.*?)\/>/gi,"\n");t(/<br\/>/gi,"\n");t(/<br>/gi,"\n");t(/<p>/gi,"");t(/<\/p>/gi,"\n");t(/&nbsp;/gi," ");t(/&quot;/gi,'"');t(/&lt;/gi,"<");t(/&gt;/gi,">");t(/&/gi,"&");return e},_dfrn_bbcode2html:function(e){function t(t,n){var r=new Array;var i=e.split("[code]");var o=0;var u="";u=i.shift();u=u.replace(t,n);r.push(u);for(o=0;o<i.length;o++){var a=new Array;var f=i.shift();var l=f.split("[/code]");a.push(l.shift());u=l.shift();u=u.replace(t,n);a.push(u);r.push(a.join("[/code]"))}e=r.join("[code]")}function n(e,t){function n(t){e=t}t=bin2hex(t);$.ajax({url:"oembed/b2h?url="+t,async:false,success:n,dataType:"html"});return e}e=tinymce.trim(e);t(/\n/gi,"<br />");t(/\[b\]/gi,"<strong>");t(/\[\/b\]/gi,"</strong>");t(/\[i\]/gi,"<em>");t(/\[\/i\]/gi,"</em>");t(/\[u\]/gi,"<u>");t(/\[\/u\]/gi,"</u>");t(/\[hr\]/gi,"<hr />");t(/[#\^]\[url=([^\]]+)\](.*?)\[\/url\]/gi,"#^<a href=\"$1\">$2</a>");t(/[#\^]\[url\](.*?)\[\/url\]/gi,"#^<a href=\"$1\">$1</a>");t(/(^|[^#\^])\[url=([^\]]+)\](.*?)\[\/url\]/gi,"$1#^<a href=\"$2\">$3</a>");t(/(^|[^#\^])\[url\](.*?)\[\/url\]/gi,"$1#^<a href=\"$2\">$2</a>");t(/\[img=(.*?)x(.*?)\](.*?)\[\/img\]/gi,'<img width="$1" height="$2" src="$3" />');t(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />');t(/\[list\](.*?)\[\/list\]/gi,'<ul class="listbullet" style="list-style-type: circle;">$1</ul>');t(/\[list=\](.*?)\[\/list\]/gi,'<ul class="listnone" style="list-style-type: none;">$1</ul>');t(/\[list=1\](.*?)\[\/list\]/gi,'<ul class="listdecimal" style="list-style-type: decimal;">$1</ul>');t(/\[list=i\](.*?)\[\/list\]/gi,'<ul class="listlowerroman" style="list-style-type: lower-roman;">$1</ul>');t(/\[list=I\](.*?)\[\/list\]/gi,'<ul class="listupperroman" style="list-style-type: upper-roman;">$1</ul>');t(/\[list=a\](.*?)\[\/list\]/gi,'<ul class="listloweralpha" style="list-style-type: lower-alpha;">$1</ul>');t(/\[list=A\](.*?)\[\/list\]/gi,'<ul class="listupperalpha" style="list-style-type: upper-alpha;">$1</ul>');t(/\[li\](.*?)\[\/li\]/gi,"<li>$1</li>");t(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<span style="color: $1;">$2</span>');t(/\[size=(.*?)\](.*?)\[\/size\]/gi,'<span style="font-size: $1;">$2</span>');t(/\[code\](.*?)\[\/code\]/gi,"<code>$1</code>");t(/\[quote.*?\](.*?)\[\/quote\]/gi,"<blockquote>$1</blockquote>");e=e.replace(/\[embed\](.*?)\[\/embed\]/gi,n);return e}});tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)})()
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js
deleted file mode 100644
index ff0109b23..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js
+++ /dev/null
@@ -1,220 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-/* Macgirvin Aug-2010 changed from punbb to dfrn dialect */
-
-/**
- * If you want to try and get bookmark content (#^{somelink}) working in tinymce,
- * I've made some progress, but one or the other of insert-url or insert-link gets it wrong,
- * and the error compounds on every edit.
- * See editor_plugin_src.js2/editor_plugin.js2 if you're interested in fixing this.
- */
-
-(function() {
- tinymce.create('tinymce.plugins.BBCodePlugin', {
- init : function(ed, url) {
- var t = this, dialect = ed.getParam('bbcode_dialect', 'dfrn').toLowerCase();
-
- ed.onBeforeSetContent.add(function(ed, o) {
- o.content = t['_' + dialect + '_bbcode2html'](o.content);
- });
-
- ed.onPostProcess.add(function(ed, o) {
- if (o.set)
- o.content = t['_' + dialect + '_bbcode2html'](o.content);
-
- if (o.get)
- o.content = t['_' + dialect + '_html2bbcode'](o.content);
- });
- },
-
- getInfo : function() {
- return {
- longname : 'BBCode Plugin',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- // Private methods
-
- // HTML -> BBCode in DFRN dialect
- _dfrn_html2bbcode : function(s) {
- s = tinymce.trim(s);
-
- function rep(re, str) {
- s = s.replace(re,str);
- };
-
-
- /* oembed */
- function _h2b_cb(match) {
- var f, g, tof = [], tor = [];
- var find_spanc = /<span [^>]*class *= *[\"'](?:[^\"']* )*oembed(?: [^\"']*)*[\"'][^>]*>(.*?(?:<span[^>]*>(.*?)<\/span *>)*.*?)<\/span *>/ig;
- while (f = find_spanc.exec(match)) {
- var find_a = /<a([^>]* rel=[\"']oembed[\"'][^>]*)>.*?<\/a *>/ig;
- if (g = find_a.exec(f[1])) {
- var find_href = /href=[\"']([^\"']*)[\"']/ig;
- var m2 = find_href.exec(g[1]);
- if (m2[1]) {
- tof.push(f[0]);
- tor.push("[EMBED]" + m2[1] + "[/EMBED]");
- }
- }
- }
- for (var i = 0; i < tof.length; i++) match = match.replace(tof[i], tor[i]);
-
- return match;
- }
- if (s.indexOf('class="oembed')>=0){
- //alert("request oembed html2bbcode");
- s = _h2b_cb(s);
- }
-
- // example: <strong> to [b]
-
- rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");
- rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");
- rep(/<span style=\"color:(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");
- rep(/<font>(.*?)<\/font>/gi,"$1");
- rep(/<img.*?width=\"(.*?)\".*?height=\"(.*?)\".*?src=\"(.*?)\".*?\/>/gi,"[img=$1x$2]$3[/img]");
- rep(/<img.*?height=\"(.*?)\".*?width=\"(.*?)\".*?src=\"(.*?)\".*?\/>/gi,"[img=$2x$1]$3[/img]");
- rep(/<img.*?src=\"(.*?)\".*?height=\"(.*?)\".*?width=\"(.*?)\".*?\/>/gi,"[img=$3x$2]$1[/img]");
- rep(/<img.*?src=\"(.*?)\".*?width=\"(.*?)\".*?height=\"(.*?)\".*?\/>/gi,"[img=$2x$3]$1[/img]");
- rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");
-
- rep(/<ul class=\"listbullet\" style=\"list-style-type\: circle\;\">(.*?)<\/ul>/gi,"[list]$1[/list]");
- rep(/<ul class=\"listnone\" style=\"list-style-type\: none\;\">(.*?)<\/ul>/gi,"[list=]$1[/list]");
- rep(/<ul class=\"listdecimal\" style=\"list-style-type\: decimal\;\">(.*?)<\/ul>/gi,"[list=1]$1[/list]");
- rep(/<ul class=\"listlowerroman\" style=\"list-style-type\: lower-roman\;\">(.*?)<\/ul>/gi,"[list=i]$1[/list]");
- rep(/<ul class=\"listupperroman\" style=\"list-style-type\: upper-roman\;\">(.*?)<\/ul>/gi,"[list=I]$1[/list]");
- rep(/<ul class=\"listloweralpha\" style=\"list-style-type\: lower-alpha\;\">(.*?)<\/ul>/gi,"[list=a]$1[/list]");
- rep(/<ul class=\"listupperalpha\" style=\"list-style-type\: upper-alpha\;\">(.*?)<\/ul>/gi,"[list=A]$1[/list]");
- rep(/<li>(.*?)<\/li>/gi,'[li]$1[/li]');
-
- rep(/<code>(.*?)<\/code>/gi,"[code]$1[/code]");
- rep(/<\/(strong|b)>/gi,"[/b]");
- rep(/<(strong|b)>/gi,"[b]");
- rep(/<\/(em|i)>/gi,"[/i]");
- rep(/<(em|i)>/gi,"[i]");
- rep(/<\/u>/gi,"[/u]");
- rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");
- rep(/<u>/gi,"[u]");
- rep(/<blockquote[^>]*>/gi,"[quote]");
- rep(/<\/blockquote>/gi,"[/quote]");
- rep(/<hr \/>/gi,"[hr]");
- rep(/<br (.*?)\/>/gi,"\n");
- rep(/<br\/>/gi,"\n");
- rep(/<br>/gi,"\n");
- rep(/<p>/gi,"");
- rep(/<\/p>/gi,"\n");
- rep(/&nbsp;/gi," ");
- rep(/&quot;/gi,"\"");
- rep(/&lt;/gi,"<");
- rep(/&gt;/gi,">");
- rep(/&amp;/gi,"&");
-
- return s;
- },
-
- // BBCode -> HTML from DFRN dialect
- _dfrn_bbcode2html : function(s) {
- s = tinymce.trim(s);
-
-
- function rep(re, str) {
-
-
- //modify code to keep stuff intact within [code][/code] blocks
- //Waitman Gobble NO WARRANTY
-
-
- var o = new Array();
- var x = s.split("[code]");
- var i = 0;
-
- var si = "";
- si = x.shift();
- si = si.replace(re,str);
- o.push(si);
-
- for (i = 0; i < x.length; i++) {
- var no = new Array();
- var j = x.shift();
- var g = j.split("[/code]");
- no.push(g.shift());
- si = g.shift();
- si = si.replace(re,str);
- no.push(si);
- o.push(no.join("[/code]"));
- }
-
- s = o.join("[code]");
-
- };
-
-
-
-
-
- // example: [b] to <strong>
- rep(/\n/gi,"<br />");
- rep(/\[b\]/gi,"<strong>");
- rep(/\[\/b\]/gi,"</strong>");
- rep(/\[i\]/gi,"<em>");
- rep(/\[\/i\]/gi,"</em>");
- rep(/\[u\]/gi,"<u>");
- rep(/\[\/u\]/gi,"</u>");
- rep(/\[hr\]/gi,"<hr />");
- rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");
- rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
- rep(/\[img=(.*?)x(.*?)\](.*?)\[\/img\]/gi,"<img width=\"$1\" height=\"$2\" src=\"$3\" />");
- rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");
-
- rep(/\[list\](.*?)\[\/list\]/gi, '<ul class="listbullet" style="list-style-type: circle;">$1</ul>');
- rep(/\[list=\](.*?)\[\/list\]/gi, '<ul class="listnone" style="list-style-type: none;">$1</ul>');
- rep(/\[list=1\](.*?)\[\/list\]/gi, '<ul class="listdecimal" style="list-style-type: decimal;">$1</ul>');
- rep(/\[list=i\](.*?)\[\/list\]/gi,'<ul class="listlowerroman" style="list-style-type: lower-roman;">$1</ul>');
- rep(/\[list=I\](.*?)\[\/list\]/gi, '<ul class="listupperroman" style="list-style-type: upper-roman;">$1</ul>');
- rep(/\[list=a\](.*?)\[\/list\]/gi, '<ul class="listloweralpha" style="list-style-type: lower-alpha;">$1</ul>');
- rep(/\[list=A\](.*?)\[\/list\]/gi, '<ul class="listupperalpha" style="list-style-type: upper-alpha;">$1</ul>');
- rep(/\[li\](.*?)\[\/li\]/gi, '<li>$1</li>');
- rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<span style=\"color: $1;\">$2</span>");
- rep(/\[size=(.*?)\](.*?)\[\/size\]/gi,"<span style=\"font-size: $1;\">$2</span>");
- rep(/\[code\](.*?)\[\/code\]/gi,"<code>$1</code>");
- rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<blockquote>$1</blockquote>");
-
- /* oembed */
- function _b2h_cb(match, url) {
- url = bin2hex(url);
- function s_b2h(data) {
- match = data;
- }
- $.ajax({
- url: 'oembed/b2h?url=' + url,
- async: false,
- success: s_b2h,
- dataType: 'html'
- });
- return match;
- }
- s = s.replace(/\[embed\](.*?)\[\/embed\]/gi, _b2h_cb);
-
- /* /oembed */
-
- return s;
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin);
-})();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js2 b/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js2
deleted file mode 100644
index bfb4bd9c7..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js2
+++ /dev/null
@@ -1,216 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-/* Macgirvin Aug-2010 changed from punbb to dfrn dialect */
-
-(function() {
- tinymce.create('tinymce.plugins.BBCodePlugin', {
- init : function(ed, url) {
- var t = this, dialect = ed.getParam('bbcode_dialect', 'dfrn').toLowerCase();
-
- ed.onBeforeSetContent.add(function(ed, o) {
- o.content = t['_' + dialect + '_bbcode2html'](o.content);
- });
-
- ed.onPostProcess.add(function(ed, o) {
- if (o.set)
- o.content = t['_' + dialect + '_bbcode2html'](o.content);
-
- if (o.get)
- o.content = t['_' + dialect + '_html2bbcode'](o.content);
- });
- },
-
- getInfo : function() {
- return {
- longname : 'BBCode Plugin',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- // Private methods
-
- // HTML -> BBCode in DFRN dialect
- _dfrn_html2bbcode : function(s) {
- s = tinymce.trim(s);
-
- function rep(re, str) {
- s = s.replace(re,str);
- };
-
-
- /* oembed */
- function _h2b_cb(match) {
- var f, g, tof = [], tor = [];
- var find_spanc = /<span [^>]*class *= *[\"'](?:[^\"']* )*oembed(?: [^\"']*)*[\"'][^>]*>(.*?(?:<span[^>]*>(.*?)<\/span *>)*.*?)<\/span *>/ig;
- while (f = find_spanc.exec(match)) {
- var find_a = /<a([^>]* rel=[\"']oembed[\"'][^>]*)>.*?<\/a *>/ig;
- if (g = find_a.exec(f[1])) {
- var find_href = /href=[\"']([^\"']*)[\"']/ig;
- var m2 = find_href.exec(g[1]);
- if (m2[1]) {
- tof.push(f[0]);
- tor.push("[EMBED]" + m2[1] + "[/EMBED]");
- }
- }
- }
- for (var i = 0; i < tof.length; i++) match = match.replace(tof[i], tor[i]);
-
- return match;
- }
- if (s.indexOf('class="oembed')>=0){
- //alert("request oembed html2bbcode");
- s = _h2b_cb(s);
- }
-
- // example: <strong> to [b]
-
- rep(/#\^<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"#^[url=$1]$2[/url]");
- rep(/(^|[^#\^])<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"$1#^[url=$2]$3[/url]");
- rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");
- rep(/<span style=\"color:(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");
- rep(/<font>(.*?)<\/font>/gi,"$1");
- rep(/<img.*?width=\"(.*?)\".*?height=\"(.*?)\".*?src=\"(.*?)\".*?\/>/gi,"[img=$1x$2]$3[/img]");
- rep(/<img.*?height=\"(.*?)\".*?width=\"(.*?)\".*?src=\"(.*?)\".*?\/>/gi,"[img=$2x$1]$3[/img]");
- rep(/<img.*?src=\"(.*?)\".*?height=\"(.*?)\".*?width=\"(.*?)\".*?\/>/gi,"[img=$3x$2]$1[/img]");
- rep(/<img.*?src=\"(.*?)\".*?width=\"(.*?)\".*?height=\"(.*?)\".*?\/>/gi,"[img=$2x$3]$1[/img]");
- rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");
-
- rep(/<ul class=\"listbullet\" style=\"list-style-type\: circle\;\">(.*?)<\/ul>/gi,"[list]$1[/list]");
- rep(/<ul class=\"listnone\" style=\"list-style-type\: none\;\">(.*?)<\/ul>/gi,"[list=]$1[/list]");
- rep(/<ul class=\"listdecimal\" style=\"list-style-type\: decimal\;\">(.*?)<\/ul>/gi,"[list=1]$1[/list]");
- rep(/<ul class=\"listlowerroman\" style=\"list-style-type\: lower-roman\;\">(.*?)<\/ul>/gi,"[list=i]$1[/list]");
- rep(/<ul class=\"listupperroman\" style=\"list-style-type\: upper-roman\;\">(.*?)<\/ul>/gi,"[list=I]$1[/list]");
- rep(/<ul class=\"listloweralpha\" style=\"list-style-type\: lower-alpha\;\">(.*?)<\/ul>/gi,"[list=a]$1[/list]");
- rep(/<ul class=\"listupperalpha\" style=\"list-style-type\: upper-alpha\;\">(.*?)<\/ul>/gi,"[list=A]$1[/list]");
- rep(/<li>(.*?)<\/li>/gi,'[li]$1[/li]');
-
- rep(/<code>(.*?)<\/code>/gi,"[code]$1[/code]");
- rep(/<\/(strong|b)>/gi,"[/b]");
- rep(/<(strong|b)>/gi,"[b]");
- rep(/<\/(em|i)>/gi,"[/i]");
- rep(/<(em|i)>/gi,"[i]");
- rep(/<\/u>/gi,"[/u]");
- rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");
- rep(/<u>/gi,"[u]");
- rep(/<blockquote[^>]*>/gi,"[quote]");
- rep(/<\/blockquote>/gi,"[/quote]");
- rep(/<hr \/>/gi,"[hr]");
- rep(/<br (.*?)\/>/gi,"\n");
- rep(/<br\/>/gi,"\n");
- rep(/<br>/gi,"\n");
- rep(/<p>/gi,"");
- rep(/<\/p>/gi,"\n");
- rep(/&nbsp;/gi," ");
- rep(/&quot;/gi,"\"");
- rep(/&lt;/gi,"<");
- rep(/&gt;/gi,">");
- rep(/&amp;/gi,"&");
-
- return s;
- },
-
- // BBCode -> HTML from DFRN dialect
- _dfrn_bbcode2html : function(s) {
- s = tinymce.trim(s);
-
-
- function rep(re, str) {
-
-
- //modify code to keep stuff intact within [code][/code] blocks
- //Waitman Gobble NO WARRANTY
-
-
- var o = new Array();
- var x = s.split("[code]");
- var i = 0;
-
- var si = "";
- si = x.shift();
- si = si.replace(re,str);
- o.push(si);
-
- for (i = 0; i < x.length; i++) {
- var no = new Array();
- var j = x.shift();
- var g = j.split("[/code]");
- no.push(g.shift());
- si = g.shift();
- si = si.replace(re,str);
- no.push(si);
- o.push(no.join("[/code]"));
- }
-
- s = o.join("[code]");
-
- };
-
-
-
-
-
- // example: [b] to <strong>
- rep(/\n/gi,"<br />");
- rep(/\[b\]/gi,"<strong>");
- rep(/\[\/b\]/gi,"</strong>");
- rep(/\[i\]/gi,"<em>");
- rep(/\[\/i\]/gi,"</em>");
- rep(/\[u\]/gi,"<u>");
- rep(/\[\/u\]/gi,"</u>");
- rep(/\[hr\]/gi,"<hr />");
- rep(/[#\^]\[url=([^\]]+)\](.*?)\[\/url\]/gi,"#^<a href=\"$1\">$2</a>");
- rep(/[#\^]\[url\](.*?)\[\/url\]/gi,"#^<a href=\"$1\">$1</a>");
- rep(/(^|[^#\^])\[url=([^\]]+)\](.*?)\[\/url\]/gi,"$1#^<a href=\"$2\">$3</a>");
- rep(/(^|[^#\^])\[url\](.*?)\[\/url\]/gi,"$1#^<a href=\"$2\">$2</a>");
- rep(/\[img=(.*?)x(.*?)\](.*?)\[\/img\]/gi,"<img width=\"$1\" height=\"$2\" src=\"$3\" />");
- rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");
-
- rep(/\[list\](.*?)\[\/list\]/gi, '<ul class="listbullet" style="list-style-type: circle;">$1</ul>');
- rep(/\[list=\](.*?)\[\/list\]/gi, '<ul class="listnone" style="list-style-type: none;">$1</ul>');
- rep(/\[list=1\](.*?)\[\/list\]/gi, '<ul class="listdecimal" style="list-style-type: decimal;">$1</ul>');
- rep(/\[list=i\](.*?)\[\/list\]/gi,'<ul class="listlowerroman" style="list-style-type: lower-roman;">$1</ul>');
- rep(/\[list=I\](.*?)\[\/list\]/gi, '<ul class="listupperroman" style="list-style-type: upper-roman;">$1</ul>');
- rep(/\[list=a\](.*?)\[\/list\]/gi, '<ul class="listloweralpha" style="list-style-type: lower-alpha;">$1</ul>');
- rep(/\[list=A\](.*?)\[\/list\]/gi, '<ul class="listupperalpha" style="list-style-type: upper-alpha;">$1</ul>');
- rep(/\[li\](.*?)\[\/li\]/gi, '<li>$1</li>');
- rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<span style=\"color: $1;\">$2</span>");
- rep(/\[size=(.*?)\](.*?)\[\/size\]/gi,"<span style=\"font-size: $1;\">$2</span>");
- rep(/\[code\](.*?)\[\/code\]/gi,"<code>$1</code>");
- rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<blockquote>$1</blockquote>");
-
- /* oembed */
- function _b2h_cb(match, url) {
- url = bin2hex(url);
- function s_b2h(data) {
- match = data;
- }
- $.ajax({
- url: 'oembed/b2h?url=' + url,
- async: false,
- success: s_b2h,
- dataType: 'html'
- });
- return match;
- }
- s = s.replace(/\[embed\](.*?)\[\/embed\]/gi, _b2h_cb);
-
- /* /oembed */
-
- return s;
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin);
-})();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js
deleted file mode 100644
index 4f99010e8..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var a=tinymce.dom.Event,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.ContextMenu",{init:function(e){var h=this,f,d,i;h.editor=e;d=e.settings.contextmenu_never_use_native;h.onContextMenu=new tinymce.util.Dispatcher(this);f=e.onContextMenu.add(function(j,k){if((i!==0?i:k.ctrlKey)&&!d){return}a.cancel(k);if(k.target.nodeName=="IMG"){j.selection.select(k.target)}h._getMenu(j).showMenu(k.clientX||k.pageX,k.clientY||k.pageY);a.add(j.getDoc(),"click",function(l){g(j,l)});j.nodeChanged()});e.onRemove.add(function(){if(h._menu){h._menu.removeAll()}});function g(j,k){i=0;if(k&&k.button==2){i=k.ctrlKey;return}if(h._menu){h._menu.removeAll();h._menu.destroy();a.remove(j.getDoc(),"click",g);h._menu=null}}e.onMouseDown.add(g);e.onKeyDown.add(g);e.onKeyDown.add(function(j,k){if(k.shiftKey&&!k.ctrlKey&&!k.altKey&&k.keyCode===121){a.cancel(k);f(j,k)}})},getInfo:function(){return{longname:"Contextmenu",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getMenu:function(e){var g=this,d=g._menu,j=e.selection,f=j.isCollapsed(),h=j.getNode()||e.getBody(),i,k;if(d){d.removeAll();d.destroy()}k=b.getPos(e.getContentAreaContainer());d=e.controlManager.createDropMenu("contextmenu",{offset_x:k.x+e.getParam("contextmenu_offset_x",0),offset_y:k.y+e.getParam("contextmenu_offset_y",0),constrain:1,keyboard_focus:true});g._menu=d;d.add({title:"advanced.cut_desc",icon:"cut",cmd:"Cut"}).setDisabled(f);d.add({title:"advanced.copy_desc",icon:"copy",cmd:"Copy"}).setDisabled(f);d.add({title:"advanced.paste_desc",icon:"paste",cmd:"Paste"});if((h.nodeName=="A"&&!e.dom.getAttrib(h,"name"))||!f){d.addSeparator();d.add({title:"advanced.link_desc",icon:"link",cmd:e.plugins.advlink?"mceAdvLink":"mceLink",ui:true});d.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"})}d.addSeparator();d.add({title:"advanced.image_desc",icon:"image",cmd:e.plugins.advimage?"mceAdvImage":"mceImage",ui:true});d.addSeparator();i=d.addMenu({title:"contextmenu.align"});i.add({title:"contextmenu.left",icon:"justifyleft",cmd:"JustifyLeft"});i.add({title:"contextmenu.center",icon:"justifycenter",cmd:"JustifyCenter"});i.add({title:"contextmenu.right",icon:"justifyright",cmd:"JustifyRight"});i.add({title:"contextmenu.full",icon:"justifyfull",cmd:"JustifyFull"});g.onContextMenu.dispatch(g,d,h,f);return d}});tinymce.PluginManager.add("contextmenu",tinymce.plugins.ContextMenu)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js
deleted file mode 100644
index 004d011d0..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js
+++ /dev/null
@@ -1,161 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var Event = tinymce.dom.Event, each = tinymce.each, DOM = tinymce.DOM;
-
- /**
- * This plugin a context menu to TinyMCE editor instances.
- *
- * @class tinymce.plugins.ContextMenu
- */
- tinymce.create('tinymce.plugins.ContextMenu', {
- /**
- * Initializes the plugin, this will be executed after the plugin has been created.
- * This call is done before the editor instance has finished it's initialization so use the onInit event
- * of the editor instance to intercept that event.
- *
- * @method init
- * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
- * @param {string} url Absolute URL to where the plugin is located.
- */
- init : function(ed) {
- var t = this, showMenu, contextmenuNeverUseNative, realCtrlKey;
-
- t.editor = ed;
-
- contextmenuNeverUseNative = ed.settings.contextmenu_never_use_native;
-
- /**
- * This event gets fired when the context menu is shown.
- *
- * @event onContextMenu
- * @param {tinymce.plugins.ContextMenu} sender Plugin instance sending the event.
- * @param {tinymce.ui.DropMenu} menu Drop down menu to fill with more items if needed.
- */
- t.onContextMenu = new tinymce.util.Dispatcher(this);
-
- showMenu = ed.onContextMenu.add(function(ed, e) {
- // Block TinyMCE menu on ctrlKey and work around Safari issue
- if ((realCtrlKey !== 0 ? realCtrlKey : e.ctrlKey) && !contextmenuNeverUseNative)
- return;
-
- Event.cancel(e);
-
- // Select the image if it's clicked. WebKit would other wise expand the selection
- if (e.target.nodeName == 'IMG')
- ed.selection.select(e.target);
-
- t._getMenu(ed).showMenu(e.clientX || e.pageX, e.clientY || e.pageY);
- Event.add(ed.getDoc(), 'click', function(e) {
- hide(ed, e);
- });
-
- ed.nodeChanged();
- });
-
- ed.onRemove.add(function() {
- if (t._menu)
- t._menu.removeAll();
- });
-
- function hide(ed, e) {
- realCtrlKey = 0;
-
- // Since the contextmenu event moves
- // the selection we need to store it away
- if (e && e.button == 2) {
- realCtrlKey = e.ctrlKey;
- return;
- }
-
- if (t._menu) {
- t._menu.removeAll();
- t._menu.destroy();
- Event.remove(ed.getDoc(), 'click', hide);
- t._menu = null;
- }
- };
-
- ed.onMouseDown.add(hide);
- ed.onKeyDown.add(hide);
- ed.onKeyDown.add(function(ed, e) {
- if (e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode === 121) {
- Event.cancel(e);
- showMenu(ed, e);
- }
- });
- },
-
- /**
- * Returns information about the plugin as a name/value array.
- * The current keys are longname, author, authorurl, infourl and version.
- *
- * @method getInfo
- * @return {Object} Name/value array containing information about the plugin.
- */
- getInfo : function() {
- return {
- longname : 'Contextmenu',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- _getMenu : function(ed) {
- var t = this, m = t._menu, se = ed.selection, col = se.isCollapsed(), el = se.getNode() || ed.getBody(), am, p;
-
- if (m) {
- m.removeAll();
- m.destroy();
- }
-
- p = DOM.getPos(ed.getContentAreaContainer());
-
- m = ed.controlManager.createDropMenu('contextmenu', {
- offset_x : p.x + ed.getParam('contextmenu_offset_x', 0),
- offset_y : p.y + ed.getParam('contextmenu_offset_y', 0),
- constrain : 1,
- keyboard_focus: true
- });
-
- t._menu = m;
-
- m.add({title : 'advanced.cut_desc', icon : 'cut', cmd : 'Cut'}).setDisabled(col);
- m.add({title : 'advanced.copy_desc', icon : 'copy', cmd : 'Copy'}).setDisabled(col);
- m.add({title : 'advanced.paste_desc', icon : 'paste', cmd : 'Paste'});
-
- if ((el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) || !col) {
- m.addSeparator();
- m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true});
- m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'});
- }
-
- m.addSeparator();
- m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true});
-
- m.addSeparator();
- am = m.addMenu({title : 'contextmenu.align'});
- am.add({title : 'contextmenu.left', icon : 'justifyleft', cmd : 'JustifyLeft'});
- am.add({title : 'contextmenu.center', icon : 'justifycenter', cmd : 'JustifyCenter'});
- am.add({title : 'contextmenu.right', icon : 'justifyright', cmd : 'JustifyRight'});
- am.add({title : 'contextmenu.full', icon : 'justifyfull', cmd : 'JustifyFull'});
-
- t.onContextMenu.dispatch(t, m, el, col);
-
- return m;
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('contextmenu', tinymce.plugins.ContextMenu);
-})();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js
deleted file mode 100644
index bce8e7399..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.Directionality",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceDirectionLTR",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="ltr"){a.dom.setAttrib(d,"dir","ltr")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addCommand("mceDirectionRTL",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="rtl"){a.dom.setAttrib(d,"dir","rtl")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addButton("ltr",{title:"directionality.ltr_desc",cmd:"mceDirectionLTR"});a.addButton("rtl",{title:"directionality.rtl_desc",cmd:"mceDirectionRTL"});a.onNodeChange.add(c._nodeChange,c)},getInfo:function(){return{longname:"Directionality",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var d=b.dom,c;e=d.getParent(e,d.isBlock);if(!e){a.setDisabled("ltr",1);a.setDisabled("rtl",1);return}c=d.getAttrib(e,"dir");a.setActive("ltr",c=="ltr");a.setDisabled("ltr",0);a.setActive("rtl",c=="rtl");a.setDisabled("rtl",0)}});tinymce.PluginManager.add("directionality",tinymce.plugins.Directionality)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js
deleted file mode 100644
index 4444959bf..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js
+++ /dev/null
@@ -1,82 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.Directionality', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- ed.addCommand('mceDirectionLTR', function() {
- var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);
-
- if (e) {
- if (ed.dom.getAttrib(e, "dir") != "ltr")
- ed.dom.setAttrib(e, "dir", "ltr");
- else
- ed.dom.setAttrib(e, "dir", "");
- }
-
- ed.nodeChanged();
- });
-
- ed.addCommand('mceDirectionRTL', function() {
- var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);
-
- if (e) {
- if (ed.dom.getAttrib(e, "dir") != "rtl")
- ed.dom.setAttrib(e, "dir", "rtl");
- else
- ed.dom.setAttrib(e, "dir", "");
- }
-
- ed.nodeChanged();
- });
-
- ed.addButton('ltr', {title : 'directionality.ltr_desc', cmd : 'mceDirectionLTR'});
- ed.addButton('rtl', {title : 'directionality.rtl_desc', cmd : 'mceDirectionRTL'});
-
- ed.onNodeChange.add(t._nodeChange, t);
- },
-
- getInfo : function() {
- return {
- longname : 'Directionality',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- // Private methods
-
- _nodeChange : function(ed, cm, n) {
- var dom = ed.dom, dir;
-
- n = dom.getParent(n, dom.isBlock);
- if (!n) {
- cm.setDisabled('ltr', 1);
- cm.setDisabled('rtl', 1);
- return;
- }
-
- dir = dom.getAttrib(n, 'dir');
- cm.setActive('ltr', dir == "ltr");
- cm.setDisabled('ltr', 0);
- cm.setActive('rtl', dir == "rtl");
- cm.setDisabled('rtl', 0);
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('directionality', tinymce.plugins.Directionality);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js
deleted file mode 100644
index dbdd8ffb5..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(a){a.create("tinymce.plugins.EmotionsPlugin",{init:function(b,c){b.addCommand("mceEmotion",function(){b.windowManager.open({file:c+"/emotions.htm",width:250+parseInt(b.getLang("emotions.delta_width",0)),height:160+parseInt(b.getLang("emotions.delta_height",0)),inline:1},{plugin_url:c})});b.addButton("emotions",{title:"emotions.emotions_desc",cmd:"mceEmotion"})},getInfo:function(){return{longname:"Emotions",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions",version:a.majorVersion+"."+a.minorVersion}}});a.PluginManager.add("emotions",a.plugins.EmotionsPlugin)})(tinymce); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js
deleted file mode 100644
index 71d541697..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function(tinymce) {
- tinymce.create('tinymce.plugins.EmotionsPlugin', {
- init : function(ed, url) {
- // Register commands
- ed.addCommand('mceEmotion', function() {
- ed.windowManager.open({
- file : url + '/emotions.htm',
- width : 250 + parseInt(ed.getLang('emotions.delta_width', 0)),
- height : 160 + parseInt(ed.getLang('emotions.delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- // Register buttons
- ed.addButton('emotions', {title : 'emotions.emotions_desc', cmd : 'mceEmotion'});
- },
-
- getInfo : function() {
- return {
- longname : 'Emotions',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('emotions', tinymce.plugins.EmotionsPlugin);
-})(tinymce); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm b/library/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm
deleted file mode 100644
index 101355654..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#emotions_dlg.title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/emotions.js"></script>
-</head>
-<body style="display: none" role="application" aria-labelledby="app_title">
-<span style="display:none;" id="app_title">{#emotions_dlg.title}</span>
-<div align="center">
- <div class="title">{#emotions_dlg.title}:<br /><br /></div>
-
- <table id="emoticon_table" role="presentation" border="0" cellspacing="0" cellpadding="4">
- <tr>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.cool}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-cool.gif','emotions_dlg.cool');"><img src="img/smiley-cool.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cool}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.cry}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-cry.gif','emotions_dlg.cry');"><img src="img/smiley-cry.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cry}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.embarassed}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-embarassed.gif','emotions_dlg.embarassed');"><img src="img/smiley-embarassed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.embarassed}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.foot_in_mouth}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-foot-in-mouth.gif','emotions_dlg.foot_in_mouth');"><img src="img/smiley-foot-in-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.foot_in_mouth}. {#emotions_dlg.usage}" /></a></td>
- </tr>
- <tr>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.frown}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-frown.gif','emotions_dlg.frown');"><img src="img/smiley-frown.gif" width="18" height="18" border="0" alt="{#emotions_dlg.frown}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.innocent}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-innocent.gif','emotions_dlg.innocent');"><img src="img/smiley-innocent.gif" width="18" height="18" border="0" alt="{#emotions_dlg.innocent}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.kiss}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-kiss.gif','emotions_dlg.kiss');"><img src="img/smiley-kiss.gif" width="18" height="18" border="0" alt="{#emotions_dlg.kiss}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.laughing}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-laughing.gif','emotions_dlg.laughing');"><img src="img/smiley-laughing.gif" width="18" height="18" border="0" alt="{#emotions_dlg.laughing}. {#emotions_dlg.usage}" /></a></td>
- </tr>
- <tr>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.money_mouth}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-money-mouth.gif','emotions_dlg.money_mouth');"><img src="img/smiley-money-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.money_mouth}. {#emotions_dlg.usage}"/></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.sealed}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-sealed.gif','emotions_dlg.sealed');"><img src="img/smiley-sealed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.sealed}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.smile}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-smile.gif','emotions_dlg.smile');"><img src="img/smiley-smile.gif" width="18" height="18" border="0" alt="{#emotions_dlg.smile}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.surprised}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-surprised.gif','emotions_dlg.surprised');"><img src="img/smiley-surprised.gif" width="18" height="18" border="0" alt="{#emotions_dlg.surprised}. {#emotions_dlg.usage}" /></a></td>
- </tr>
- <tr>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.tongue_out}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-tongue-out.gif','emotions_dlg.tongue_out');"><img src="img/smiley-tongue-out.gif" width="18" height="18" border="0" alt="{#emotions_dlg.tongue-out}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.undecided}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-undecided.gif','emotions_dlg.undecided');"><img src="img/smiley-undecided.gif" width="18" height="18" border="0" alt="{#emotions_dlg.undecided}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.wink}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-wink.gif','emotions_dlg.wink');"><img src="img/smiley-wink.gif" width="18" height="18" border="0" alt="{#emotions_dlg.wink}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.yell}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-yell.gif','emotions_dlg.yell');"><img src="img/smiley-yell.gif" width="18" height="18" border="0" alt="{#emotions_dlg.yell}. {#emotions_dlg.usage}" /></a></td>
- </tr>
- </table>
- <div>{#emotions_dlg.usage}</div>
-</div>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif
deleted file mode 100644
index ba90cc36f..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif
deleted file mode 100644
index 74d897a4f..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif
deleted file mode 100644
index 963a96b8a..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif
deleted file mode 100644
index c7cf1011d..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif
deleted file mode 100644
index 716f55e16..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif
deleted file mode 100644
index 334d49e0e..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif
deleted file mode 100644
index 4efd549ed..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif
deleted file mode 100644
index 82c5b182e..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif
deleted file mode 100644
index ca2451e10..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif
deleted file mode 100644
index fe66220c2..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif
deleted file mode 100644
index fd27edfaa..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif
deleted file mode 100644
index 0cc9bb71c..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif
deleted file mode 100644
index 2075dc160..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif
deleted file mode 100644
index bef7e2573..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif
deleted file mode 100644
index 0631c7616..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif
deleted file mode 100644
index 648e6e879..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/js/emotions.js b/library/tinymce/jscripts/tiny_mce/plugins/emotions/js/emotions.js
deleted file mode 100644
index b360f20b6..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/js/emotions.js
+++ /dev/null
@@ -1,43 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var EmotionsDialog = {
- addKeyboardNavigation: function(){
- var tableElm, cells, settings;
-
- cells = tinyMCEPopup.dom.select("a.emoticon_link", "emoticon_table");
-
- settings ={
- root: "emoticon_table",
- items: cells
- };
- cells[0].tabindex=0;
- tinyMCEPopup.dom.addClass(cells[0], "mceFocus");
- if (tinymce.isGecko) {
- cells[0].focus();
- } else {
- setTimeout(function(){
- cells[0].focus();
- }, 100);
- }
- tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', settings, tinyMCEPopup.dom);
- },
- init : function(ed) {
- tinyMCEPopup.resizeToInnerSize();
- this.addKeyboardNavigation();
- },
-
- insert : function(file, title) {
- var ed = tinyMCEPopup.editor, dom = ed.dom;
-
- tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', {
- src : tinyMCEPopup.getWindowArg('plugin_url') + '/img/' + file,
- alt : ed.getLang(title),
- title : ed.getLang(title),
- border : 0
- }));
-
- tinyMCEPopup.close();
- }
-};
-
-tinyMCEPopup.onInit.add(EmotionsDialog.init, EmotionsDialog);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js
deleted file mode 100644
index 037c4b588..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"Emotions",title:"Insert Emotion",usage:"Use left and right arrows to navigate.",yell:"Yell",wink:"Wink",undecided:"Undecided","tongue_out":"Tongue Out",surprised:"Surprised",smile:"Smile",sealed:"Sealed","money_mouth":"Money Mouth",laughing:"Laughing",kiss:"Kiss",innocent:"Innocent",frown:"Frown","foot_in_mouth":"Foot in Mouth",embarassed:"Embarassed"});
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm b/library/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm
deleted file mode 100644
index 50b2b3445..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#example_dlg.title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/dialog.js"></script>
-</head>
-<body>
-
-<form onsubmit="ExampleDialog.insert();return false;" action="#">
- <p>Here is a example dialog.</p>
- <p>Selected text: <input id="someval" name="someval" type="text" class="text" /></p>
- <p>Custom arg: <input id="somearg" name="somearg" type="text" class="text" /></p>
-
- <div class="mceActionPanel">
- <input type="button" id="insert" name="insert" value="{#insert}" onclick="ExampleDialog.insert();" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js
deleted file mode 100644
index ec1f81ea4..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.PluginManager.requireLangPack("example");tinymce.create("tinymce.plugins.ExamplePlugin",{init:function(a,b){a.addCommand("mceExample",function(){a.windowManager.open({file:b+"/dialog.htm",width:320+parseInt(a.getLang("example.delta_width",0)),height:120+parseInt(a.getLang("example.delta_height",0)),inline:1},{plugin_url:b,some_custom_arg:"custom arg"})});a.addButton("example",{title:"example.desc",cmd:"mceExample",image:b+"/img/example.gif"});a.onNodeChange.add(function(d,c,e){c.setActive("example",e.nodeName=="IMG")})},createControl:function(b,a){return null},getInfo:function(){return{longname:"Example plugin",author:"Some author",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example",version:"1.0"}}});tinymce.PluginManager.add("example",tinymce.plugins.ExamplePlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js
deleted file mode 100644
index 9a0e7da15..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- // Load plugin specific language pack
- tinymce.PluginManager.requireLangPack('example');
-
- tinymce.create('tinymce.plugins.ExamplePlugin', {
- /**
- * Initializes the plugin, this will be executed after the plugin has been created.
- * This call is done before the editor instance has finished it's initialization so use the onInit event
- * of the editor instance to intercept that event.
- *
- * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
- * @param {string} url Absolute URL to where the plugin is located.
- */
- init : function(ed, url) {
- // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');
- ed.addCommand('mceExample', function() {
- ed.windowManager.open({
- file : url + '/dialog.htm',
- width : 320 + parseInt(ed.getLang('example.delta_width', 0)),
- height : 120 + parseInt(ed.getLang('example.delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url, // Plugin absolute URL
- some_custom_arg : 'custom arg' // Custom argument
- });
- });
-
- // Register example button
- ed.addButton('example', {
- title : 'example.desc',
- cmd : 'mceExample',
- image : url + '/img/example.gif'
- });
-
- // Add a node change handler, selects the button in the UI when a image is selected
- ed.onNodeChange.add(function(ed, cm, n) {
- cm.setActive('example', n.nodeName == 'IMG');
- });
- },
-
- /**
- * Creates control instances based in the incomming name. This method is normally not
- * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
- * but you sometimes need to create more complex controls like listboxes, split buttons etc then this
- * method can be used to create those.
- *
- * @param {String} n Name of the control to create.
- * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.
- * @return {tinymce.ui.Control} New control instance or null if no control was created.
- */
- createControl : function(n, cm) {
- return null;
- },
-
- /**
- * Returns information about the plugin as a name/value array.
- * The current keys are longname, author, authorurl, infourl and version.
- *
- * @return {Object} Name/value array containing information about the plugin.
- */
- getInfo : function() {
- return {
- longname : 'Example plugin',
- author : 'Some author',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example',
- version : "1.0"
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('example', tinymce.plugins.ExamplePlugin);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif b/library/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif
deleted file mode 100644
index 1ab5da446..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/example/js/dialog.js b/library/tinymce/jscripts/tiny_mce/plugins/example/js/dialog.js
deleted file mode 100644
index fa8341132..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/example/js/dialog.js
+++ /dev/null
@@ -1,19 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var ExampleDialog = {
- init : function() {
- var f = document.forms[0];
-
- // Get the selected contents as text and place it in the input
- f.someval.value = tinyMCEPopup.editor.selection.getContent({format : 'text'});
- f.somearg.value = tinyMCEPopup.getWindowArg('some_custom_arg');
- },
-
- insert : function() {
- // Insert the contents from the input into the document
- tinyMCEPopup.editor.execCommand('mceInsertContent', false, document.forms[0].someval.value);
- tinyMCEPopup.close();
- }
-};
-
-tinyMCEPopup.onInit.add(ExampleDialog.init, ExampleDialog);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/example/langs/en.js b/library/tinymce/jscripts/tiny_mce/plugins/example/langs/en.js
deleted file mode 100644
index e0784f80f..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/example/langs/en.js
+++ /dev/null
@@ -1,3 +0,0 @@
-tinyMCE.addI18n('en.example',{
- desc : 'This is just a template button'
-});
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/example/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/example/langs/en_dlg.js
deleted file mode 100644
index ebcf948da..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/example/langs/en_dlg.js
+++ /dev/null
@@ -1,3 +0,0 @@
-tinyMCE.addI18n('en.example_dlg',{
- title : 'This is just a example title'
-});
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/example_dependency/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/example_dependency/editor_plugin.js
deleted file mode 100644
index 0a4551d38..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/example_dependency/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.ExampleDependencyPlugin",{init:function(a,b){},getInfo:function(){return{longname:"Example Dependency plugin",author:"Some author",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example_dependency",version:"1.0"}}});tinymce.PluginManager.add("example_dependency",tinymce.plugins.ExampleDependencyPlugin,["example"])})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/example_dependency/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/example_dependency/editor_plugin_src.js
deleted file mode 100644
index e1c55e41b..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/example_dependency/editor_plugin_src.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
-
- tinymce.create('tinymce.plugins.ExampleDependencyPlugin', {
- /**
- * Initializes the plugin, this will be executed after the plugin has been created.
- * This call is done before the editor instance has finished it's initialization so use the onInit event
- * of the editor instance to intercept that event.
- *
- * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
- * @param {string} url Absolute URL to where the plugin is located.
- */
- init : function(ed, url) {
- },
-
-
- /**
- * Returns information about the plugin as a name/value array.
- * The current keys are longname, author, authorurl, infourl and version.
- *
- * @return {Object} Name/value array containing information about the plugin.
- */
- getInfo : function() {
- return {
- longname : 'Example Dependency plugin',
- author : 'Some author',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example_dependency',
- version : "1.0"
- };
- }
- });
-
- /**
- * Register the plugin, specifying the list of the plugins that this plugin depends on. They are specified in a list, with the list loaded in order.
- * plugins in this list will be initialised when this plugin is initialized. (before the init method is called).
- * plugins in a depends list should typically be specified using the short name). If neccesary this can be done
- * with an object which has the url to the plugin and the shortname.
- */
- tinymce.PluginManager.add('example_dependency', tinymce.plugins.ExampleDependencyPlugin, ['example']);
-})();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css b/library/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css
deleted file mode 100644
index 2675cec15..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css
+++ /dev/null
@@ -1,143 +0,0 @@
-/* Hide the advanced tab */
-#advanced_tab {
- display: none;
-}
-
-#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright {
- width: 280px;
-}
-
-#doctype, #docencoding {
- width: 200px;
-}
-
-#langcode {
- width: 30px;
-}
-
-#bgimage {
- width: 220px;
-}
-
-#fontface {
- width: 240px;
-}
-
-#leftmargin, #rightmargin, #topmargin, #bottommargin {
- width: 50px;
-}
-
-.panel_wrapper div.current {
- height: 400px;
-}
-
-#stylesheet, #style {
- width: 240px;
-}
-
-#doctypes {
- width: 200px;
-}
-
-/* Head list classes */
-
-.headlistwrapper {
- width: 100%;
-}
-
-.selected {
- border: 1px solid #0A246A;
- background-color: #B6BDD2;
-}
-
-.toolbar {
- width: 100%;
-}
-
-#headlist {
- width: 100%;
- margin-top: 3px;
- font-size: 11px;
-}
-
-#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element {
- display: none;
-}
-
-#addmenu {
- position: absolute;
- border: 1px solid gray;
- display: none;
- z-index: 100;
- background-color: white;
-}
-
-#addmenu a {
- display: block;
- width: 100%;
- line-height: 20px;
- text-decoration: none;
- background-color: white;
-}
-
-#addmenu a:hover {
- background-color: #B6BDD2;
- color: black;
-}
-
-#addmenu span {
- padding-left: 10px;
- padding-right: 10px;
-}
-
-#updateElementPanel {
- display: none;
-}
-
-#script_element .panel_wrapper div.current {
- height: 108px;
-}
-
-#style_element .panel_wrapper div.current {
- height: 108px;
-}
-
-#link_element .panel_wrapper div.current {
- height: 140px;
-}
-
-#element_script_value {
- width: 100%;
- height: 100px;
-}
-
-#element_comment_value {
- width: 100%;
- height: 120px;
-}
-
-#element_style_value {
- width: 100%;
- height: 100px;
-}
-
-#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title {
- width: 250px;
-}
-
-.updateElementButton {
- margin-top: 3px;
-}
-
-/* MSIE specific styles */
-
-* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton {
- width: 22px;
- height: 22px;
-}
-
-textarea {
- height: 55px;
-}
-
-.panel_wrapper div.current {height:420px;} \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js
deleted file mode 100644
index dcf76024d..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var b=tinymce.each,a=tinymce.html.Node;tinymce.create("tinymce.plugins.FullPagePlugin",{init:function(c,d){var e=this;e.editor=c;c.addCommand("mceFullPageProperties",function(){c.windowManager.open({file:d+"/fullpage.htm",width:430+parseInt(c.getLang("fullpage.delta_width",0)),height:495+parseInt(c.getLang("fullpage.delta_height",0)),inline:1},{plugin_url:d,data:e._htmlToData()})});c.addButton("fullpage",{title:"fullpage.desc",cmd:"mceFullPageProperties"});c.onBeforeSetContent.add(e._setContent,e);c.onGetContent.add(e._getContent,e)},getInfo:function(){return{longname:"Fullpage",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_htmlToData:function(){var f=this._parseHeader(),h={},c,i,g,e=this.editor;function d(l,j){var k=l.attr(j);return k||""}h.fontface=e.getParam("fullpage_default_fontface","");h.fontsize=e.getParam("fullpage_default_fontsize","");i=f.firstChild;if(i.type==7){h.xml_pi=true;g=/encoding="([^"]+)"/.exec(i.value);if(g){h.docencoding=g[1]}}i=f.getAll("#doctype")[0];if(i){h.doctype="<!DOCTYPE"+i.value+">"}i=f.getAll("title")[0];if(i&&i.firstChild){h.metatitle=i.firstChild.value}b(f.getAll("meta"),function(m){var k=m.attr("name"),j=m.attr("http-equiv"),l;if(k){h["meta"+k.toLowerCase()]=m.attr("content")}else{if(j=="Content-Type"){l=/charset\s*=\s*(.*)\s*/gi.exec(m.attr("content"));if(l){h.docencoding=l[1]}}}});i=f.getAll("html")[0];if(i){h.langcode=d(i,"lang")||d(i,"xml:lang")}i=f.getAll("link")[0];if(i&&i.attr("rel")=="stylesheet"){h.stylesheet=i.attr("href")}i=f.getAll("body")[0];if(i){h.langdir=d(i,"dir");h.style=d(i,"style");h.visited_color=d(i,"vlink");h.link_color=d(i,"link");h.active_color=d(i,"alink")}return h},_dataToHtml:function(g){var f,d,h,j,k,e=this.editor.dom;function c(n,l,m){n.attr(l,m?m:undefined)}function i(l){if(d.firstChild){d.insert(l,d.firstChild)}else{d.append(l)}}f=this._parseHeader();d=f.getAll("head")[0];if(!d){j=f.getAll("html")[0];d=new a("head",1);if(j.firstChild){j.insert(d,j.firstChild,true)}else{j.append(d)}}j=f.firstChild;if(g.xml_pi){k='version="1.0"';if(g.docencoding){k+=' encoding="'+g.docencoding+'"'}if(j.type!=7){j=new a("xml",7);f.insert(j,f.firstChild,true)}j.value=k}else{if(j&&j.type==7){j.remove()}}j=f.getAll("#doctype")[0];if(g.doctype){if(!j){j=new a("#doctype",10);if(g.xml_pi){f.insert(j,f.firstChild)}else{i(j)}}j.value=g.doctype.substring(9,g.doctype.length-1)}else{if(j){j.remove()}}j=f.getAll("title")[0];if(g.metatitle){if(!j){j=new a("title",1);j.append(new a("#text",3)).value=g.metatitle;i(j)}}if(g.docencoding){j=null;b(f.getAll("meta"),function(l){if(l.attr("http-equiv")=="Content-Type"){j=l}});if(!j){j=new a("meta",1);j.attr("http-equiv","Content-Type");j.shortEnded=true;i(j)}j.attr("content","text/html; charset="+g.docencoding)}b("keywords,description,author,copyright,robots".split(","),function(m){var l=f.getAll("meta"),n,p,o=g["meta"+m];for(n=0;n<l.length;n++){p=l[n];if(p.attr("name")==m){if(o){p.attr("content",o)}else{p.remove()}return}}if(o){j=new a("meta",1);j.attr("name",m);j.attr("content",o);j.shortEnded=true;i(j)}});j=f.getAll("link")[0];if(j&&j.attr("rel")=="stylesheet"){if(g.stylesheet){j.attr("href",g.stylesheet)}else{j.remove()}}else{if(g.stylesheet){j=new a("link",1);j.attr({rel:"stylesheet",text:"text/css",href:g.stylesheet});j.shortEnded=true;i(j)}}j=f.getAll("body")[0];if(j){c(j,"dir",g.langdir);c(j,"style",g.style);c(j,"vlink",g.visited_color);c(j,"link",g.link_color);c(j,"alink",g.active_color);e.setAttribs(this.editor.getBody(),{style:g.style,dir:g.dir,vLink:g.visited_color,link:g.link_color,aLink:g.active_color})}j=f.getAll("html")[0];if(j){c(j,"lang",g.langcode);c(j,"xml:lang",g.langcode)}h=new tinymce.html.Serializer({validate:false,indent:true,apply_source_formatting:true,indent_before:"head,html,body,meta,title,script,link,style",indent_after:"head,html,body,meta,title,script,link,style"}).serialize(f);this.head=h.substring(0,h.indexOf("</body>"))},_parseHeader:function(){return new tinymce.html.DomParser({validate:false,root_name:"#document"}).parse(this.head)},_setContent:function(g,d){var m=this,i,c,h=d.content,f,l="",e=m.editor.dom,j;function k(n){return n.replace(/<\/?[A-Z]+/g,function(o){return o.toLowerCase()})}if(d.format=="raw"&&m.head){return}if(d.source_view&&g.getParam("fullpage_hide_in_source_view")){return}h=h.replace(/<(\/?)BODY/gi,"<$1body");i=h.indexOf("<body");if(i!=-1){i=h.indexOf(">",i);m.head=k(h.substring(0,i+1));c=h.indexOf("</body",i);if(c==-1){c=h.length}d.content=h.substring(i+1,c);m.foot=k(h.substring(c))}else{m.head=this._getDefaultHeader();m.foot="\n</body>\n</html>"}f=m._parseHeader();b(f.getAll("style"),function(n){if(n.firstChild){l+=n.firstChild.value}});j=f.getAll("body")[0];if(j){e.setAttribs(m.editor.getBody(),{style:j.attr("style")||"",dir:j.attr("dir")||"",vLink:j.attr("vlink")||"",link:j.attr("link")||"",aLink:j.attr("alink")||""})}e.remove("fullpage_styles");if(l){e.add(m.editor.getDoc().getElementsByTagName("head")[0],"style",{id:"fullpage_styles"},l);j=e.get("fullpage_styles");if(j.styleSheet){j.styleSheet.cssText=l}}},_getDefaultHeader:function(){var f="",c=this.editor,e,d="";if(c.getParam("fullpage_default_xml_pi")){f+='<?xml version="1.0" encoding="'+c.getParam("fullpage_default_encoding","ISO-8859-1")+'" ?>\n'}f+=c.getParam("fullpage_default_doctype",'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');f+="\n<html>\n<head>\n";if(e=c.getParam("fullpage_default_title")){f+="<title>"+e+"</title>\n"}if(e=c.getParam("fullpage_default_encoding")){f+='<meta http-equiv="Content-Type" content="text/html; charset='+e+'" />\n'}if(e=c.getParam("fullpage_default_font_family")){d+="font-family: "+e+";"}if(e=c.getParam("fullpage_default_font_size")){d+="font-size: "+e+";"}if(e=c.getParam("fullpage_default_text_color")){d+="color: "+e+";"}f+="</head>\n<body"+(d?' style="'+d+'"':"")+">\n";return f},_getContent:function(d,e){var c=this;if(!e.source_view||!d.getParam("fullpage_hide_in_source_view")){e.content=tinymce.trim(c.head)+"\n"+tinymce.trim(e.content)+"\n"+tinymce.trim(c.foot)}}});tinymce.PluginManager.add("fullpage",tinymce.plugins.FullPagePlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js
deleted file mode 100644
index 23de7c5a1..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js
+++ /dev/null
@@ -1,405 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var each = tinymce.each, Node = tinymce.html.Node;
-
- tinymce.create('tinymce.plugins.FullPagePlugin', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- // Register commands
- ed.addCommand('mceFullPageProperties', function() {
- ed.windowManager.open({
- file : url + '/fullpage.htm',
- width : 430 + parseInt(ed.getLang('fullpage.delta_width', 0)),
- height : 495 + parseInt(ed.getLang('fullpage.delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url,
- data : t._htmlToData()
- });
- });
-
- // Register buttons
- ed.addButton('fullpage', {title : 'fullpage.desc', cmd : 'mceFullPageProperties'});
-
- ed.onBeforeSetContent.add(t._setContent, t);
- ed.onGetContent.add(t._getContent, t);
- },
-
- getInfo : function() {
- return {
- longname : 'Fullpage',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- // Private plugin internal methods
-
- _htmlToData : function() {
- var headerFragment = this._parseHeader(), data = {}, nodes, elm, matches, editor = this.editor;
-
- function getAttr(elm, name) {
- var value = elm.attr(name);
-
- return value || '';
- };
-
- // Default some values
- data.fontface = editor.getParam("fullpage_default_fontface", "");
- data.fontsize = editor.getParam("fullpage_default_fontsize", "");
-
- // Parse XML PI
- elm = headerFragment.firstChild;
- if (elm.type == 7) {
- data.xml_pi = true;
- matches = /encoding="([^"]+)"/.exec(elm.value);
- if (matches)
- data.docencoding = matches[1];
- }
-
- // Parse doctype
- elm = headerFragment.getAll('#doctype')[0];
- if (elm)
- data.doctype = '<!DOCTYPE' + elm.value + ">";
-
- // Parse title element
- elm = headerFragment.getAll('title')[0];
- if (elm && elm.firstChild) {
- data.metatitle = elm.firstChild.value;
- }
-
- // Parse meta elements
- each(headerFragment.getAll('meta'), function(meta) {
- var name = meta.attr('name'), httpEquiv = meta.attr('http-equiv'), matches;
-
- if (name)
- data['meta' + name.toLowerCase()] = meta.attr('content');
- else if (httpEquiv == "Content-Type") {
- matches = /charset\s*=\s*(.*)\s*/gi.exec(meta.attr('content'));
-
- if (matches)
- data.docencoding = matches[1];
- }
- });
-
- // Parse html attribs
- elm = headerFragment.getAll('html')[0];
- if (elm)
- data.langcode = getAttr(elm, 'lang') || getAttr(elm, 'xml:lang');
-
- // Parse stylesheet
- elm = headerFragment.getAll('link')[0];
- if (elm && elm.attr('rel') == 'stylesheet')
- data.stylesheet = elm.attr('href');
-
- // Parse body parts
- elm = headerFragment.getAll('body')[0];
- if (elm) {
- data.langdir = getAttr(elm, 'dir');
- data.style = getAttr(elm, 'style');
- data.visited_color = getAttr(elm, 'vlink');
- data.link_color = getAttr(elm, 'link');
- data.active_color = getAttr(elm, 'alink');
- }
-
- return data;
- },
-
- _dataToHtml : function(data) {
- var headerFragment, headElement, html, elm, value, dom = this.editor.dom;
-
- function setAttr(elm, name, value) {
- elm.attr(name, value ? value : undefined);
- };
-
- function addHeadNode(node) {
- if (headElement.firstChild)
- headElement.insert(node, headElement.firstChild);
- else
- headElement.append(node);
- };
-
- headerFragment = this._parseHeader();
- headElement = headerFragment.getAll('head')[0];
- if (!headElement) {
- elm = headerFragment.getAll('html')[0];
- headElement = new Node('head', 1);
-
- if (elm.firstChild)
- elm.insert(headElement, elm.firstChild, true);
- else
- elm.append(headElement);
- }
-
- // Add/update/remove XML-PI
- elm = headerFragment.firstChild;
- if (data.xml_pi) {
- value = 'version="1.0"';
-
- if (data.docencoding)
- value += ' encoding="' + data.docencoding + '"';
-
- if (elm.type != 7) {
- elm = new Node('xml', 7);
- headerFragment.insert(elm, headerFragment.firstChild, true);
- }
-
- elm.value = value;
- } else if (elm && elm.type == 7)
- elm.remove();
-
- // Add/update/remove doctype
- elm = headerFragment.getAll('#doctype')[0];
- if (data.doctype) {
- if (!elm) {
- elm = new Node('#doctype', 10);
-
- if (data.xml_pi)
- headerFragment.insert(elm, headerFragment.firstChild);
- else
- addHeadNode(elm);
- }
-
- elm.value = data.doctype.substring(9, data.doctype.length - 1);
- } else if (elm)
- elm.remove();
-
- // Add/update/remove title
- elm = headerFragment.getAll('title')[0];
- if (data.metatitle) {
- if (!elm) {
- elm = new Node('title', 1);
- elm.append(new Node('#text', 3)).value = data.metatitle;
- addHeadNode(elm);
- }
- }
-
- // Add meta encoding
- if (data.docencoding) {
- elm = null;
- each(headerFragment.getAll('meta'), function(meta) {
- if (meta.attr('http-equiv') == 'Content-Type')
- elm = meta;
- });
-
- if (!elm) {
- elm = new Node('meta', 1);
- elm.attr('http-equiv', 'Content-Type');
- elm.shortEnded = true;
- addHeadNode(elm);
- }
-
- elm.attr('content', 'text/html; charset=' + data.docencoding);
- }
-
- // Add/update/remove meta
- each('keywords,description,author,copyright,robots'.split(','), function(name) {
- var nodes = headerFragment.getAll('meta'), i, meta, value = data['meta' + name];
-
- for (i = 0; i < nodes.length; i++) {
- meta = nodes[i];
-
- if (meta.attr('name') == name) {
- if (value)
- meta.attr('content', value);
- else
- meta.remove();
-
- return;
- }
- }
-
- if (value) {
- elm = new Node('meta', 1);
- elm.attr('name', name);
- elm.attr('content', value);
- elm.shortEnded = true;
-
- addHeadNode(elm);
- }
- });
-
- // Add/update/delete link
- elm = headerFragment.getAll('link')[0];
- if (elm && elm.attr('rel') == 'stylesheet') {
- if (data.stylesheet)
- elm.attr('href', data.stylesheet);
- else
- elm.remove();
- } else if (data.stylesheet) {
- elm = new Node('link', 1);
- elm.attr({
- rel : 'stylesheet',
- text : 'text/css',
- href : data.stylesheet
- });
- elm.shortEnded = true;
-
- addHeadNode(elm);
- }
-
- // Update body attributes
- elm = headerFragment.getAll('body')[0];
- if (elm) {
- setAttr(elm, 'dir', data.langdir);
- setAttr(elm, 'style', data.style);
- setAttr(elm, 'vlink', data.visited_color);
- setAttr(elm, 'link', data.link_color);
- setAttr(elm, 'alink', data.active_color);
-
- // Update iframe body as well
- dom.setAttribs(this.editor.getBody(), {
- style : data.style,
- dir : data.dir,
- vLink : data.visited_color,
- link : data.link_color,
- aLink : data.active_color
- });
- }
-
- // Set html attributes
- elm = headerFragment.getAll('html')[0];
- if (elm) {
- setAttr(elm, 'lang', data.langcode);
- setAttr(elm, 'xml:lang', data.langcode);
- }
-
- // Serialize header fragment and crop away body part
- html = new tinymce.html.Serializer({
- validate: false,
- indent: true,
- apply_source_formatting : true,
- indent_before: 'head,html,body,meta,title,script,link,style',
- indent_after: 'head,html,body,meta,title,script,link,style'
- }).serialize(headerFragment);
-
- this.head = html.substring(0, html.indexOf('</body>'));
- },
-
- _parseHeader : function() {
- // Parse the contents with a DOM parser
- return new tinymce.html.DomParser({
- validate: false,
- root_name: '#document'
- }).parse(this.head);
- },
-
- _setContent : function(ed, o) {
- var self = this, startPos, endPos, content = o.content, headerFragment, styles = '', dom = self.editor.dom, elm;
-
- function low(s) {
- return s.replace(/<\/?[A-Z]+/g, function(a) {
- return a.toLowerCase();
- })
- };
-
- // Ignore raw updated if we already have a head, this will fix issues with undo/redo keeping the head/foot separate
- if (o.format == 'raw' && self.head)
- return;
-
- if (o.source_view && ed.getParam('fullpage_hide_in_source_view'))
- return;
-
- // Parse out head, body and footer
- content = content.replace(/<(\/?)BODY/gi, '<$1body');
- startPos = content.indexOf('<body');
-
- if (startPos != -1) {
- startPos = content.indexOf('>', startPos);
- self.head = low(content.substring(0, startPos + 1));
-
- endPos = content.indexOf('</body', startPos);
- if (endPos == -1)
- endPos = content.length;
-
- o.content = content.substring(startPos + 1, endPos);
- self.foot = low(content.substring(endPos));
- } else {
- self.head = this._getDefaultHeader();
- self.foot = '\n</body>\n</html>';
- }
-
- // Parse header and update iframe
- headerFragment = self._parseHeader();
- each(headerFragment.getAll('style'), function(node) {
- if (node.firstChild)
- styles += node.firstChild.value;
- });
-
- elm = headerFragment.getAll('body')[0];
- if (elm) {
- dom.setAttribs(self.editor.getBody(), {
- style : elm.attr('style') || '',
- dir : elm.attr('dir') || '',
- vLink : elm.attr('vlink') || '',
- link : elm.attr('link') || '',
- aLink : elm.attr('alink') || ''
- });
- }
-
- dom.remove('fullpage_styles');
-
- if (styles) {
- dom.add(self.editor.getDoc().getElementsByTagName('head')[0], 'style', {id : 'fullpage_styles'}, styles);
-
- // Needed for IE 6/7
- elm = dom.get('fullpage_styles');
- if (elm.styleSheet)
- elm.styleSheet.cssText = styles;
- }
- },
-
- _getDefaultHeader : function() {
- var header = '', editor = this.editor, value, styles = '';
-
- if (editor.getParam('fullpage_default_xml_pi'))
- header += '<?xml version="1.0" encoding="' + editor.getParam('fullpage_default_encoding', 'ISO-8859-1') + '" ?>\n';
-
- header += editor.getParam('fullpage_default_doctype', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
- header += '\n<html>\n<head>\n';
-
- if (value = editor.getParam('fullpage_default_title'))
- header += '<title>' + value + '</title>\n';
-
- if (value = editor.getParam('fullpage_default_encoding'))
- header += '<meta http-equiv="Content-Type" content="text/html; charset=' + value + '" />\n';
-
- if (value = editor.getParam('fullpage_default_font_family'))
- styles += 'font-family: ' + value + ';';
-
- if (value = editor.getParam('fullpage_default_font_size'))
- styles += 'font-size: ' + value + ';';
-
- if (value = editor.getParam('fullpage_default_text_color'))
- styles += 'color: ' + value + ';';
-
- header += '</head>\n<body' + (styles ? ' style="' + styles + '"' : '') + '>\n';
-
- return header;
- },
-
- _getContent : function(ed, o) {
- var self = this;
-
- if (!o.source_view || !ed.getParam('fullpage_hide_in_source_view'))
- o.content = tinymce.trim(self.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(self.foot);
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('fullpage', tinymce.plugins.FullPagePlugin);
-})();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm b/library/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm
deleted file mode 100644
index 14ab8652e..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm
+++ /dev/null
@@ -1,259 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#fullpage_dlg.title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="js/fullpage.js"></script>
- <link href="css/fullpage.css" rel="stylesheet" type="text/css" />
-</head>
-<body id="fullpage" style="display: none">
-<form onsubmit="FullPageDialog.update();return false;" name="fullpage" action="#">
- <div class="tabs">
- <ul>
- <li id="meta_tab" class="current"><span><a href="javascript:mcTabs.displayTab('meta_tab','meta_panel');" onmousedown="return false;">{#fullpage_dlg.meta_tab}</a></span></li>
- <li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#fullpage_dlg.appearance_tab}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="meta_panel" class="panel current">
- <fieldset>
- <legend>{#fullpage_dlg.meta_props}</legend>
-
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="nowrap"><label for="metatitle">{#fullpage_dlg.meta_title}</label>&nbsp;</td>
- <td><input type="text" id="metatitle" name="metatitle" value="" class="mceFocus" /></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="metakeywords">{#fullpage_dlg.meta_keywords}</label>&nbsp;</td>
- <td><textarea id="metakeywords" name="metakeywords" rows="4"></textarea></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="metadescription">{#fullpage_dlg.meta_description}</label>&nbsp;</td>
- <td><textarea id="metadescription" name="metadescription" rows="4"></textarea></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="metaauthor">{#fullpage_dlg.author}</label>&nbsp;</td>
- <td><input type="text" id="metaauthor" name="metaauthor" value="" /></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="metacopyright">{#fullpage_dlg.copyright}</label>&nbsp;</td>
- <td><input type="text" id="metacopyright" name="metacopyright" value="" /></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="metarobots">{#fullpage_dlg.meta_robots}</label>&nbsp;</td>
- <td>
- <select id="metarobots" name="metarobots">
- <option value="">{#not_set}</option>
- <option value="index,follow">{#fullpage_dlg.meta_index_follow}</option>
- <option value="index,nofollow">{#fullpage_dlg.meta_index_nofollow}</option>
- <option value="noindex,follow">{#fullpage_dlg.meta_noindex_follow}</option>
- <option value="noindex,nofollow">{#fullpage_dlg.meta_noindex_nofollow}</option>
- </select>
- </td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset>
- <legend>{#fullpage_dlg.langprops}</legend>
-
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="column1"><label for="docencoding">{#fullpage_dlg.encoding}</label></td>
- <td>
- <select id="docencoding" name="docencoding">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="nowrap"><label for="doctype">{#fullpage_dlg.doctypes}</label>&nbsp;</td>
- <td>
- <select id="doctype" name="doctype">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="nowrap"><label for="langcode">{#fullpage_dlg.langcode}</label>&nbsp;</td>
- <td><input type="text" id="langcode" name="langcode" value="" /></td>
- </tr>
- <tr>
- <td class="column1"><label for="langdir">{#fullpage_dlg.langdir}</label></td>
- <td>
- <select id="langdir" name="langdir">
- <option value="">{#not_set}</option>
- <option value="ltr">{#fullpage_dlg.ltr}</option>
- <option value="rtl">{#fullpage_dlg.rtl}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="nowrap"><label for="xml_pi">{#fullpage_dlg.xml_pi}</label>&nbsp;</td>
- <td><input type="checkbox" id="xml_pi" name="xml_pi" class="checkbox" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
-
- <div id="appearance_panel" class="panel">
- <fieldset>
- <legend>{#fullpage_dlg.appearance_textprops}</legend>
-
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="column1"><label for="fontface">{#fullpage_dlg.fontface}</label></td>
- <td>
- <select id="fontface" name="fontface" onchange="FullPageDialog.changedStyleProp();">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="fontsize">{#fullpage_dlg.fontsize}</label></td>
- <td>
- <select id="fontsize" name="fontsize" onchange="FullPageDialog.changedStyleProp();">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="textcolor">{#fullpage_dlg.textcolor}</label></td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="textcolor" name="textcolor" type="text" value="" size="9" onchange="updateColor('textcolor_pick','textcolor');FullPageDialog.changedStyleProp();" /></td>
- <td id="textcolor_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset>
- <legend>{#fullpage_dlg.appearance_bgprops}</legend>
-
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="column1"><label for="bgimage">{#fullpage_dlg.bgimage}</label></td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="bgimage" name="bgimage" type="text" value="" onchange="FullPageDialog.changedStyleProp();" /></td>
- <td id="bgimage_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td class="column1"><label for="bgcolor">{#fullpage_dlg.bgcolor}</label></td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');FullPageDialog.changedStyleProp();" /></td>
- <td id="bgcolor_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset>
- <legend>{#fullpage_dlg.appearance_marginprops}</legend>
-
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="column1"><label for="leftmargin">{#fullpage_dlg.left_margin}</label></td>
- <td><input id="leftmargin" name="leftmargin" type="text" value="" onchange="FullPageDialog.changedStyleProp();" /></td>
- <td class="column1"><label for="rightmargin">{#fullpage_dlg.right_margin}</label></td>
- <td><input id="rightmargin" name="rightmargin" type="text" value="" onchange="FullPageDialog.changedStyleProp();" /></td>
- </tr>
- <tr>
- <td class="column1"><label for="topmargin">{#fullpage_dlg.top_margin}</label></td>
- <td><input id="topmargin" name="topmargin" type="text" value="" onchange="FullPageDialog.changedStyleProp();" /></td>
- <td class="column1"><label for="bottommargin">{#fullpage_dlg.bottom_margin}</label></td>
- <td><input id="bottommargin" name="bottommargin" type="text" value="" onchange="FullPageDialog.changedStyleProp();" /></td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset>
- <legend>{#fullpage_dlg.appearance_linkprops}</legend>
-
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="column1"><label for="link_color">{#fullpage_dlg.link_color}</label></td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="link_color" name="link_color" type="text" value="" size="9" onchange="updateColor('link_color_pick','link_color');FullPageDialog.changedStyleProp();" /></td>
- <td id="link_color_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
-
- <td class="column1"><label for="visited_color">{#fullpage_dlg.visited_color}</label></td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="visited_color" name="visited_color" type="text" value="" size="9" onchange="updateColor('visited_color_pick','visited_color');FullPageDialog.changedStyleProp();" /></td>
- <td id="visited_color_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="active_color">{#fullpage_dlg.active_color}</label></td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="active_color" name="active_color" type="text" value="" size="9" onchange="updateColor('active_color_pick','active_color');FullPageDialog.changedStyleProp();" /></td>
- <td id="active_color_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
-
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset>
- <legend>{#fullpage_dlg.appearance_style}</legend>
-
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="column1"><label for="stylesheet">{#fullpage_dlg.stylesheet}</label></td>
- <td><table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="stylesheet" name="stylesheet" type="text" value="" /></td>
- <td id="stylesheet_browsercontainer">&nbsp;</td>
- </tr>
- </table></td>
- </tr>
- <tr>
- <td class="column1"><label for="style">{#fullpage_dlg.style}</label></td>
- <td><input id="style" name="style" type="text" value="" onchange="FullPageDialog.changedStyle();" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="update" value="{#update}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js b/library/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js
deleted file mode 100644
index 3f672ad3b..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js
+++ /dev/null
@@ -1,232 +0,0 @@
-/**
- * fullpage.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinyMCEPopup.requireLangPack();
-
- var defaultDocTypes =
- 'XHTML 1.0 Transitional=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">,' +
- 'XHTML 1.0 Frameset=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">,' +
- 'XHTML 1.0 Strict=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">,' +
- 'XHTML 1.1=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">,' +
- 'HTML 4.01 Transitional=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">,' +
- 'HTML 4.01 Strict=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">,' +
- 'HTML 4.01 Frameset=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">';
-
- var defaultEncodings =
- 'Western european (iso-8859-1)=iso-8859-1,' +
- 'Central European (iso-8859-2)=iso-8859-2,' +
- 'Unicode (UTF-8)=utf-8,' +
- 'Chinese traditional (Big5)=big5,' +
- 'Cyrillic (iso-8859-5)=iso-8859-5,' +
- 'Japanese (iso-2022-jp)=iso-2022-jp,' +
- 'Greek (iso-8859-7)=iso-8859-7,' +
- 'Korean (iso-2022-kr)=iso-2022-kr,' +
- 'ASCII (us-ascii)=us-ascii';
-
- var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';
- var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px';
-
- function setVal(id, value) {
- var elm = document.getElementById(id);
-
- if (elm) {
- value = value || '';
-
- if (elm.nodeName == "SELECT")
- selectByValue(document.forms[0], id, value);
- else if (elm.type == "checkbox")
- elm.checked = !!value;
- else
- elm.value = value;
- }
- };
-
- function getVal(id) {
- var elm = document.getElementById(id);
-
- if (elm.nodeName == "SELECT")
- return elm.options[elm.selectedIndex].value;
-
- if (elm.type == "checkbox")
- return elm.checked;
-
- return elm.value;
- };
-
- window.FullPageDialog = {
- changedStyle : function() {
- var val, styles = tinyMCEPopup.editor.dom.parseStyle(getVal('style'));
-
- setVal('fontface', styles['font-face']);
- setVal('fontsize', styles['font-size']);
- setVal('textcolor', styles['color']);
-
- if (val = styles['background-image'])
- setVal('bgimage', val.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"));
- else
- setVal('bgimage', '');
-
- setVal('bgcolor', styles['background-color']);
-
- // Reset margin form elements
- setVal('topmargin', '');
- setVal('rightmargin', '');
- setVal('bottommargin', '');
- setVal('leftmargin', '');
-
- // Expand margin
- if (val = styles['margin']) {
- val = val.split(' ');
- styles['margin-top'] = val[0] || '';
- styles['margin-right'] = val[1] || val[0] || '';
- styles['margin-bottom'] = val[2] || val[0] || '';
- styles['margin-left'] = val[3] || val[0] || '';
- }
-
- if (val = styles['margin-top'])
- setVal('topmargin', val.replace(/px/, ''));
-
- if (val = styles['margin-right'])
- setVal('rightmargin', val.replace(/px/, ''));
-
- if (val = styles['margin-bottom'])
- setVal('bottommargin', val.replace(/px/, ''));
-
- if (val = styles['margin-left'])
- setVal('leftmargin', val.replace(/px/, ''));
-
- updateColor('bgcolor_pick', 'bgcolor');
- updateColor('textcolor_pick', 'textcolor');
- },
-
- changedStyleProp : function() {
- var val, dom = tinyMCEPopup.editor.dom, styles = dom.parseStyle(getVal('style'));
-
- styles['font-face'] = getVal('fontface');
- styles['font-size'] = getVal('fontsize');
- styles['color'] = getVal('textcolor');
- styles['background-color'] = getVal('bgcolor');
-
- if (val = getVal('bgimage'))
- styles['background-image'] = "url('" + val + "')";
- else
- styles['background-image'] = '';
-
- delete styles['margin'];
-
- if (val = getVal('topmargin'))
- styles['margin-top'] = val + "px";
- else
- styles['margin-top'] = '';
-
- if (val = getVal('rightmargin'))
- styles['margin-right'] = val + "px";
- else
- styles['margin-right'] = '';
-
- if (val = getVal('bottommargin'))
- styles['margin-bottom'] = val + "px";
- else
- styles['margin-bottom'] = '';
-
- if (val = getVal('leftmargin'))
- styles['margin-left'] = val + "px";
- else
- styles['margin-left'] = '';
-
- // Serialize, parse and reserialize this will compress redundant styles
- setVal('style', dom.serializeStyle(dom.parseStyle(dom.serializeStyle(styles))));
- this.changedStyle();
- },
-
- update : function() {
- var data = {};
-
- tinymce.each(tinyMCEPopup.dom.select('select,input,textarea'), function(node) {
- data[node.id] = getVal(node.id);
- });
-
- tinyMCEPopup.editor.plugins.fullpage._dataToHtml(data);
- tinyMCEPopup.close();
- }
- };
-
- function init() {
- var form = document.forms[0], i, item, list, editor = tinyMCEPopup.editor;
-
- // Setup doctype select box
- list = editor.getParam("fullpage_doctypes", defaultDocTypes).split(',');
- for (i = 0; i < list.length; i++) {
- item = list[i].split('=');
-
- if (item.length > 1)
- addSelectValue(form, 'doctype', item[0], item[1]);
- }
-
- // Setup fonts select box
- list = editor.getParam("fullpage_fonts", defaultFontNames).split(';');
- for (i = 0; i < list.length; i++) {
- item = list[i].split('=');
-
- if (item.length > 1)
- addSelectValue(form, 'fontface', item[0], item[1]);
- }
-
- // Setup fontsize select box
- list = editor.getParam("fullpage_fontsizes", defaultFontSizes).split(',');
- for (i = 0; i < list.length; i++)
- addSelectValue(form, 'fontsize', list[i], list[i]);
-
- // Setup encodings select box
- list = editor.getParam("fullpage_encodings", defaultEncodings).split(',');
- for (i = 0; i < list.length; i++) {
- item = list[i].split('=');
-
- if (item.length > 1)
- addSelectValue(form, 'docencoding', item[0], item[1]);
- }
-
- // Setup color pickers
- document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
- document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color');
- document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color');
- document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color');
- document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor');
- document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage');
- document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage');
-
- // Resize some elements
- if (isVisible('stylesheetbrowser'))
- document.getElementById('stylesheet').style.width = '220px';
-
- if (isVisible('link_href_browser'))
- document.getElementById('element_link_href').style.width = '230px';
-
- if (isVisible('bgimage_browser'))
- document.getElementById('bgimage').style.width = '210px';
-
- // Update form
- tinymce.each(tinyMCEPopup.getWindowArg('data'), function(value, key) {
- setVal(key, value);
- });
-
- FullPageDialog.changedStyle();
-
- // Update colors
- updateColor('textcolor_pick', 'textcolor');
- updateColor('bgcolor_pick', 'bgcolor');
- updateColor('visited_color_pick', 'visited_color');
- updateColor('active_color_pick', 'active_color');
- updateColor('link_color_pick', 'link_color');
- };
-
- tinyMCEPopup.onInit.add(init);
-})();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js
deleted file mode 100644
index 516edc74f..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.fullpage_dlg',{title:"Document Properties","meta_tab":"General","appearance_tab":"Appearance","advanced_tab":"Advanced","meta_props":"Meta Information",langprops:"Language and Encoding","meta_title":"Title","meta_keywords":"Keywords","meta_description":"Description","meta_robots":"Robots",doctypes:"Doctype",langcode:"Language Code",langdir:"Language Direction",ltr:"Left to Right",rtl:"Right to Left","xml_pi":"XML Declaration",encoding:"Character Encoding","appearance_bgprops":"Background Properties","appearance_marginprops":"Body Margins","appearance_linkprops":"Link Colors","appearance_textprops":"Text Properties",bgcolor:"Background Color",bgimage:"Background Image","left_margin":"Left Margin","right_margin":"Right Margin","top_margin":"Top Margin","bottom_margin":"Bottom Margin","text_color":"Text Color","font_size":"Font Size","font_face":"Font Face","link_color":"Link Color","hover_color":"Hover Color","visited_color":"Visited Color","active_color":"Active Color",textcolor:"Color",fontsize:"Font Size",fontface:"Font Family","meta_index_follow":"Index and Follow the Links","meta_index_nofollow":"Index and Don\'t Follow the Links","meta_noindex_follow":"Do Not Index but Follow the Links","meta_noindex_nofollow":"Do Not Index and Don\'t Follow the Links","appearance_style":"Stylesheet and Style Properties",stylesheet:"Stylesheet",style:"Style",author:"Author",copyright:"Copyright",add:"Add New Element",remove:"Remove Selected Element",moveup:"Move Selected Element Up",movedown:"Move Selected Element Down","head_elements":"Head Elements",info:"Information","add_title":"Title Element","add_meta":"Meta Element","add_script":"Script Element","add_style":"Style Element","add_link":"Link Element","add_base":"Base Element","add_comment":"Comment Node","title_element":"Title Element","script_element":"Script Element","style_element":"Style Element","base_element":"Base Element","link_element":"Link Element","meta_element":"Meta Element","comment_element":"Comment",src:"Source",language:"Language",href:"HREF",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"Name",value:"Value",content:"Content",rel:"Rel",rev:"Rev",hreflang:"HREF Lang","general_props":"General","advanced_props":"Advanced"}); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js
deleted file mode 100644
index 7b65e733c..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(d,e){var f=this,g={},c,b;f.editor=d;d.addCommand("mceFullScreen",function(){var i,j=a.doc.documentElement;if(d.getParam("fullscreen_is_enabled")){if(d.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",f.resizeFunc);tinyMCE.get(d.getParam("fullscreen_editor_id")).setContent(d.getContent());tinyMCE.remove(d);a.remove("mce_fullscreen_container");j.style.overflow=d.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",d.getParam("fullscreen_overflow"));a.win.scrollTo(d.getParam("fullscreen_scrollx"),d.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(d.getParam("fullscreen_new_window")){i=a.win.open(e+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{i.resizeTo(screen.availWidth,screen.availHeight)}catch(h){}}else{tinyMCE.oldSettings=tinyMCE.settings;g.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";g.fullscreen_html_overflow=a.getStyle(j,"overflow",1);c=a.getViewPort();g.fullscreen_scrollx=c.x;g.fullscreen_scrolly=c.y;if(tinymce.isOpera&&g.fullscreen_overflow=="visible"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&g.fullscreen_overflow=="scroll"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&(g.fullscreen_html_overflow=="visible"||g.fullscreen_html_overflow=="scroll")){g.fullscreen_html_overflow="auto"}if(g.fullscreen_overflow=="0px"){g.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");j.style.overflow="hidden";c=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){c.h-=1}if(tinymce.isIE6||document.compatMode=="BackCompat"){b="absolute;top:"+c.y}else{b="fixed;top:0"}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+b+";left:0;width:"+c.w+"px;height:"+c.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(d.settings,function(k,l){g[l]=k});g.id="mce_fullscreen";g.width=n.clientWidth;g.height=n.clientHeight-15;g.fullscreen_is_enabled=true;g.fullscreen_editor_id=d.id;g.theme_advanced_resizing=false;g.save_onsavecallback=function(){d.setContent(tinyMCE.get(g.id).getContent());d.execCommand("mceSave")};tinymce.each(d.getParam("fullscreen_settings"),function(m,l){g[l]=m});if(g.theme_advanced_toolbar_location==="external"){g.theme_advanced_toolbar_location="top"}f.fullscreenEditor=new tinymce.Editor("mce_fullscreen",g);f.fullscreenEditor.onInit.add(function(){f.fullscreenEditor.setContent(d.getContent());f.fullscreenEditor.focus()});f.fullscreenEditor.render();f.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");f.fullscreenElement.update();f.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var o=tinymce.DOM.getViewPort(),l=f.fullscreenEditor,k,m;k=l.dom.getSize(l.getContainer().firstChild);m=l.dom.getSize(l.getContainer().getElementsByTagName("iframe")[0]);l.theme.resizeTo(o.w-k.w+m.w,o.h-k.h+m.h)})}});d.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});d.onNodeChange.add(function(i,h){h.setActive("fullscreen",i.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js
deleted file mode 100644
index 6622f924a..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js
+++ /dev/null
@@ -1,159 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var DOM = tinymce.DOM;
-
- tinymce.create('tinymce.plugins.FullScreenPlugin', {
- init : function(ed, url) {
- var t = this, s = {}, vp, posCss;
-
- t.editor = ed;
-
- // Register commands
- ed.addCommand('mceFullScreen', function() {
- var win, de = DOM.doc.documentElement;
-
- if (ed.getParam('fullscreen_is_enabled')) {
- if (ed.getParam('fullscreen_new_window'))
- closeFullscreen(); // Call to close in new window
- else {
- DOM.win.setTimeout(function() {
- tinymce.dom.Event.remove(DOM.win, 'resize', t.resizeFunc);
- tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent());
- tinyMCE.remove(ed);
- DOM.remove('mce_fullscreen_container');
- de.style.overflow = ed.getParam('fullscreen_html_overflow');
- DOM.setStyle(DOM.doc.body, 'overflow', ed.getParam('fullscreen_overflow'));
- DOM.win.scrollTo(ed.getParam('fullscreen_scrollx'), ed.getParam('fullscreen_scrolly'));
- tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings
- }, 10);
- }
-
- return;
- }
-
- if (ed.getParam('fullscreen_new_window')) {
- win = DOM.win.open(url + "/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight);
- try {
- win.resizeTo(screen.availWidth, screen.availHeight);
- } catch (e) {
- // Ignore
- }
- } else {
- tinyMCE.oldSettings = tinyMCE.settings; // Store old settings
- s.fullscreen_overflow = DOM.getStyle(DOM.doc.body, 'overflow', 1) || 'auto';
- s.fullscreen_html_overflow = DOM.getStyle(de, 'overflow', 1);
- vp = DOM.getViewPort();
- s.fullscreen_scrollx = vp.x;
- s.fullscreen_scrolly = vp.y;
-
- // Fixes an Opera bug where the scrollbars doesn't reappear
- if (tinymce.isOpera && s.fullscreen_overflow == 'visible')
- s.fullscreen_overflow = 'auto';
-
- // Fixes an IE bug where horizontal scrollbars would appear
- if (tinymce.isIE && s.fullscreen_overflow == 'scroll')
- s.fullscreen_overflow = 'auto';
-
- // Fixes an IE bug where the scrollbars doesn't reappear
- if (tinymce.isIE && (s.fullscreen_html_overflow == 'visible' || s.fullscreen_html_overflow == 'scroll'))
- s.fullscreen_html_overflow = 'auto';
-
- if (s.fullscreen_overflow == '0px')
- s.fullscreen_overflow = '';
-
- DOM.setStyle(DOM.doc.body, 'overflow', 'hidden');
- de.style.overflow = 'hidden'; //Fix for IE6/7
- vp = DOM.getViewPort();
- DOM.win.scrollTo(0, 0);
-
- if (tinymce.isIE)
- vp.h -= 1;
-
- // Use fixed position if it exists
- if (tinymce.isIE6 || document.compatMode == 'BackCompat')
- posCss = 'absolute;top:' + vp.y;
- else
- posCss = 'fixed;top:0';
-
- n = DOM.add(DOM.doc.body, 'div', {
- id : 'mce_fullscreen_container',
- style : 'position:' + posCss + ';left:0;width:' + vp.w + 'px;height:' + vp.h + 'px;z-index:200000;'});
- DOM.add(n, 'div', {id : 'mce_fullscreen'});
-
- tinymce.each(ed.settings, function(v, n) {
- s[n] = v;
- });
-
- s.id = 'mce_fullscreen';
- s.width = n.clientWidth;
- s.height = n.clientHeight - 15;
- s.fullscreen_is_enabled = true;
- s.fullscreen_editor_id = ed.id;
- s.theme_advanced_resizing = false;
- s.save_onsavecallback = function() {
- ed.setContent(tinyMCE.get(s.id).getContent());
- ed.execCommand('mceSave');
- };
-
- tinymce.each(ed.getParam('fullscreen_settings'), function(v, k) {
- s[k] = v;
- });
-
- if (s.theme_advanced_toolbar_location === 'external')
- s.theme_advanced_toolbar_location = 'top';
-
- t.fullscreenEditor = new tinymce.Editor('mce_fullscreen', s);
- t.fullscreenEditor.onInit.add(function() {
- t.fullscreenEditor.setContent(ed.getContent());
- t.fullscreenEditor.focus();
- });
-
- t.fullscreenEditor.render();
-
- t.fullscreenElement = new tinymce.dom.Element('mce_fullscreen_container');
- t.fullscreenElement.update();
- //document.body.overflow = 'hidden';
-
- t.resizeFunc = tinymce.dom.Event.add(DOM.win, 'resize', function() {
- var vp = tinymce.DOM.getViewPort(), fed = t.fullscreenEditor, outerSize, innerSize;
-
- // Get outer/inner size to get a delta size that can be used to calc the new iframe size
- outerSize = fed.dom.getSize(fed.getContainer().firstChild);
- innerSize = fed.dom.getSize(fed.getContainer().getElementsByTagName('iframe')[0]);
-
- fed.theme.resizeTo(vp.w - outerSize.w + innerSize.w, vp.h - outerSize.h + innerSize.h);
- });
- }
- });
-
- // Register buttons
- ed.addButton('fullscreen', {title : 'fullscreen.desc', cmd : 'mceFullScreen'});
-
- ed.onNodeChange.add(function(ed, cm) {
- cm.setActive('fullscreen', ed.getParam('fullscreen_is_enabled'));
- });
- },
-
- getInfo : function() {
- return {
- longname : 'Fullscreen',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('fullscreen', tinymce.plugins.FullScreenPlugin);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm b/library/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm
deleted file mode 100644
index ffe528e41..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title></title>
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
- <script type="text/javascript" src="../../tiny_mce.js"></script>
- <script type="text/javascript">
- function patchCallback(settings, key) {
- if (settings[key])
- settings[key] = "window.opener." + settings[key];
- }
-
- var settings = {}, paSe = window.opener.tinyMCE.activeEditor.settings, oeID = window.opener.tinyMCE.activeEditor.id;
-
- // Clone array
- for (var n in paSe)
- settings[n] = paSe[n];
-
- // Override options for fullscreen
- for (var n in paSe.fullscreen_settings)
- settings[n] = paSe.fullscreen_settings[n];
-
- // Patch callbacks, make them point to window.opener
- patchCallback(settings, 'urlconverter_callback');
- patchCallback(settings, 'insertlink_callback');
- patchCallback(settings, 'insertimage_callback');
- patchCallback(settings, 'setupcontent_callback');
- patchCallback(settings, 'save_callback');
- patchCallback(settings, 'onchange_callback');
- patchCallback(settings, 'init_instance_callback');
- patchCallback(settings, 'file_browser_callback');
- patchCallback(settings, 'cleanup_callback');
- patchCallback(settings, 'execcommand_callback');
- patchCallback(settings, 'oninit');
-
- // Set options
- delete settings.id;
- settings['mode'] = 'exact';
- settings['elements'] = 'fullscreenarea';
- settings['add_unload_trigger'] = false;
- settings['ask'] = false;
- settings['document_base_url'] = window.opener.tinyMCE.activeEditor.documentBaseURI.getURI();
- settings['fullscreen_is_enabled'] = true;
- settings['fullscreen_editor_id'] = oeID;
- settings['theme_advanced_resizing'] = false;
- settings['strict_loading_mode'] = true;
-
- settings.save_onsavecallback = function() {
- window.opener.tinyMCE.get(oeID).setContent(tinyMCE.get('fullscreenarea').getContent({format : 'raw'}), {format : 'raw'});
- window.opener.tinyMCE.get(oeID).execCommand('mceSave');
- window.close();
- };
-
- function unloadHandler(e) {
- moveContent();
- }
-
- function moveContent() {
- window.opener.tinyMCE.get(oeID).setContent(tinyMCE.activeEditor.getContent());
- }
-
- function closeFullscreen() {
- moveContent();
- window.close();
- }
-
- function doParentSubmit() {
- moveContent();
-
- if (window.opener.tinyMCE.selectedInstance.formElement.form)
- window.opener.tinyMCE.selectedInstance.formElement.form.submit();
-
- window.close();
-
- return false;
- }
-
- function render() {
- var e = document.getElementById('fullscreenarea'), vp, ed, ow, oh, dom = tinymce.DOM;
-
- e.value = window.opener.tinyMCE.get(oeID).getContent();
-
- vp = dom.getViewPort();
- settings.width = vp.w;
- settings.height = vp.h - 15;
-
- tinymce.dom.Event.add(window, 'resize', function() {
- var vp = dom.getViewPort();
-
- tinyMCE.activeEditor.theme.resizeTo(vp.w, vp.h);
- });
-
- tinyMCE.init(settings);
- }
-
- // Add onunload
- tinymce.dom.Event.add(window, "beforeunload", unloadHandler);
- </script>
-</head>
-<body style="margin:0;overflow:hidden;width:100%;height:100%" scrolling="no" scroll="no">
-<form onsubmit="doParentSubmit();">
-<textarea id="fullscreenarea" style="width:100%; height:100%"></textarea>
-</form>
-
-<script type="text/javascript">
- render();
-</script>
-
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js
deleted file mode 100644
index e9cba106c..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.IESpell",{init:function(a,b){var c=this,d;if(!tinymce.isIE){return}c.editor=a;a.addCommand("mceIESpell",function(){try{d=new ActiveXObject("ieSpell.ieSpellExtension");d.CheckDocumentNode(a.getDoc().documentElement)}catch(f){if(f.number==-2146827859){a.windowManager.confirm(a.getLang("iespell.download"),function(e){if(e){window.open("http://www.iespell.com/download.php","ieSpellDownload","")}})}else{a.windowManager.alert("Error Loading ieSpell: Exception "+f.number)}}});a.addButton("iespell",{title:"iespell.iespell_desc",cmd:"mceIESpell"})},getInfo:function(){return{longname:"IESpell (IE Only)",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("iespell",tinymce.plugins.IESpell)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js
deleted file mode 100644
index 1b2bb9846..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.IESpell', {
- init : function(ed, url) {
- var t = this, sp;
-
- if (!tinymce.isIE)
- return;
-
- t.editor = ed;
-
- // Register commands
- ed.addCommand('mceIESpell', function() {
- try {
- sp = new ActiveXObject("ieSpell.ieSpellExtension");
- sp.CheckDocumentNode(ed.getDoc().documentElement);
- } catch (e) {
- if (e.number == -2146827859) {
- ed.windowManager.confirm(ed.getLang("iespell.download"), function(s) {
- if (s)
- window.open('http://www.iespell.com/download.php', 'ieSpellDownload', '');
- });
- } else
- ed.windowManager.alert("Error Loading ieSpell: Exception " + e.number);
- }
- });
-
- // Register buttons
- ed.addButton('iespell', {title : 'iespell.iespell_desc', cmd : 'mceIESpell'});
- },
-
- getInfo : function() {
- return {
- longname : 'IESpell (IE Only)',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('iespell', tinymce.plugins.IESpell);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js
deleted file mode 100644
index 8bb96f9cb..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var d=tinymce.DOM,b=tinymce.dom.Element,a=tinymce.dom.Event,e=tinymce.each,c=tinymce.is;tinymce.create("tinymce.plugins.InlinePopups",{init:function(f,g){f.onBeforeRenderUI.add(function(){f.windowManager=new tinymce.InlineWindowManager(f);d.loadCSS(g+"/skins/"+(f.settings.inlinepopups_skin||"clearlooks2")+"/window.css")})},getInfo:function(){return{longname:"InlinePopups",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.create("tinymce.InlineWindowManager:tinymce.WindowManager",{InlineWindowManager:function(f){var g=this;g.parent(f);g.zIndex=300000;g.count=0;g.windows={}},open:function(s,j){var z=this,i,k="",r=z.editor,g=0,v=0,h,m,o,q,l,x,y,n;s=s||{};j=j||{};if(!s.inline){return z.parent(s,j)}n=z._frontWindow();if(n&&d.get(n.id+"_ifr")){n.focussedElement=d.get(n.id+"_ifr").contentWindow.document.activeElement}if(!s.type){z.bookmark=r.selection.getBookmark(1)}i=d.uniqueId();h=d.getViewPort();s.width=parseInt(s.width||320);s.height=parseInt(s.height||240)+(tinymce.isIE?8:0);s.min_width=parseInt(s.min_width||150);s.min_height=parseInt(s.min_height||100);s.max_width=parseInt(s.max_width||2000);s.max_height=parseInt(s.max_height||2000);s.left=s.left||Math.round(Math.max(h.x,h.x+(h.w/2)-(s.width/2)));s.top=s.top||Math.round(Math.max(h.y,h.y+(h.h/2)-(s.height/2)));s.movable=s.resizable=true;j.mce_width=s.width;j.mce_height=s.height;j.mce_inline=true;j.mce_window_id=i;j.mce_auto_focus=s.auto_focus;z.features=s;z.params=j;z.onOpen.dispatch(z,s,j);if(s.type){k+=" mceModal";if(s.type){k+=" mce"+s.type.substring(0,1).toUpperCase()+s.type.substring(1)}s.resizable=false}if(s.statusbar){k+=" mceStatusbar"}if(s.resizable){k+=" mceResizable"}if(s.minimizable){k+=" mceMinimizable"}if(s.maximizable){k+=" mceMaximizable"}if(s.movable){k+=" mceMovable"}z._addAll(d.doc.body,["div",{id:i,role:"dialog","aria-labelledby":s.type?i+"_content":i+"_title","class":(r.settings.inlinepopups_skin||"clearlooks2")+(tinymce.isIE&&window.getSelection?" ie9":""),style:"width:100px;height:100px"},["div",{id:i+"_wrapper","class":"mceWrapper"+k},["div",{id:i+"_top","class":"mceTop"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_title"},s.title||""]],["div",{id:i+"_middle","class":"mceMiddle"},["div",{id:i+"_left","class":"mceLeft",tabindex:"0"}],["span",{id:i+"_content"}],["div",{id:i+"_right","class":"mceRight",tabindex:"0"}]],["div",{id:i+"_bottom","class":"mceBottom"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_status"},"Content"]],["a",{"class":"mceMove",tabindex:"-1",href:"javascript:;"}],["a",{"class":"mceMin",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMax",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMed",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceClose",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{id:i+"_resize_n","class":"mceResize mceResizeN",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_s","class":"mceResize mceResizeS",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_w","class":"mceResize mceResizeW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_e","class":"mceResize mceResizeE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_nw","class":"mceResize mceResizeNW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_ne","class":"mceResize mceResizeNE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_sw","class":"mceResize mceResizeSW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_se","class":"mceResize mceResizeSE",tabindex:"-1",href:"javascript:;"}]]]);d.setStyles(i,{top:-10000,left:-10000});if(tinymce.isGecko){d.setStyle(i,"overflow","auto")}if(!s.type){g+=d.get(i+"_left").clientWidth;g+=d.get(i+"_right").clientWidth;v+=d.get(i+"_top").clientHeight;v+=d.get(i+"_bottom").clientHeight}d.setStyles(i,{top:s.top,left:s.left,width:s.width+g,height:s.height+v});y=s.url||s.file;if(y){if(tinymce.relaxedDomain){y+=(y.indexOf("?")==-1?"?":"&")+"mce_rdomain="+tinymce.relaxedDomain}y=tinymce._addVer(y)}if(!s.type){d.add(i+"_content","iframe",{id:i+"_ifr",src:'javascript:""',frameBorder:0,style:"border:0;width:10px;height:10px"});d.setStyles(i+"_ifr",{width:s.width,height:s.height});d.setAttrib(i+"_ifr","src",y)}else{d.add(i+"_wrapper","a",{id:i+"_ok","class":"mceButton mceOk",href:"javascript:;",onmousedown:"return false;"},"Ok");if(s.type=="confirm"){d.add(i+"_wrapper","a",{"class":"mceButton mceCancel",href:"javascript:;",onmousedown:"return false;"},"Cancel")}d.add(i+"_middle","div",{"class":"mceIcon"});d.setHTML(i+"_content",s.content.replace("\n","<br />"));a.add(i,"keyup",function(f){var p=27;if(f.keyCode===p){s.button_func(false);return a.cancel(f)}});a.add(i,"keydown",function(f){var t,p=9;if(f.keyCode===p){t=d.select("a.mceCancel",i+"_wrapper")[0];if(t&&t!==f.target){t.focus()}else{d.get(i+"_ok").focus()}return a.cancel(f)}})}o=a.add(i,"mousedown",function(t){var u=t.target,f,p;f=z.windows[i];z.focus(i);if(u.nodeName=="A"||u.nodeName=="a"){if(u.className=="mceClose"){z.close(null,i);return a.cancel(t)}else{if(u.className=="mceMax"){f.oldPos=f.element.getXY();f.oldSize=f.element.getSize();p=d.getViewPort();p.w-=2;p.h-=2;f.element.moveTo(p.x,p.y);f.element.resizeTo(p.w,p.h);d.setStyles(i+"_ifr",{width:p.w-f.deltaWidth,height:p.h-f.deltaHeight});d.addClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMed"){f.element.moveTo(f.oldPos.x,f.oldPos.y);f.element.resizeTo(f.oldSize.w,f.oldSize.h);f.iframeElement.resizeTo(f.oldSize.w-f.deltaWidth,f.oldSize.h-f.deltaHeight);d.removeClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMove"){return z._startDrag(i,t,u.className)}else{if(d.hasClass(u,"mceResize")){return z._startDrag(i,t,u.className.substring(13))}}}}}}});q=a.add(i,"click",function(f){var p=f.target;z.focus(i);if(p.nodeName=="A"||p.nodeName=="a"){switch(p.className){case"mceClose":z.close(null,i);return a.cancel(f);case"mceButton mceOk":case"mceButton mceCancel":s.button_func(p.className=="mceButton mceOk");return a.cancel(f)}}});a.add([i+"_left",i+"_right"],"focus",function(p){var t=d.get(i+"_ifr");if(t){var f=t.contentWindow.document.body;var u=d.select(":input:enabled,*[tabindex=0]",f);if(p.target.id===(i+"_left")){u[u.length-1].focus()}else{u[0].focus()}}else{d.get(i+"_ok").focus()}});x=z.windows[i]={id:i,mousedown_func:o,click_func:q,element:new b(i,{blocker:1,container:r.getContainer()}),iframeElement:new b(i+"_ifr"),features:s,deltaWidth:g,deltaHeight:v};x.iframeElement.on("focus",function(){z.focus(i)});if(z.count==0&&z.editor.getParam("dialog_type","modal")=="modal"){d.add(d.doc.body,"div",{id:"mceModalBlocker","class":(z.editor.settings.inlinepopups_skin||"clearlooks2")+"_modalBlocker",style:{zIndex:z.zIndex-1}});d.show("mceModalBlocker");d.setAttrib(d.doc.body,"aria-hidden","true")}else{d.setStyle("mceModalBlocker","z-index",z.zIndex-1)}if(tinymce.isIE6||/Firefox\/2\./.test(navigator.userAgent)||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceModalBlocker",{position:"absolute",left:h.x,top:h.y,width:h.w-2,height:h.h-2})}d.setAttrib(i,"aria-hidden","false");z.focus(i);z._fixIELayout(i,1);if(d.get(i+"_ok")){d.get(i+"_ok").focus()}z.count++;return x},focus:function(h){var g=this,f;if(f=g.windows[h]){f.zIndex=this.zIndex++;f.element.setStyle("zIndex",f.zIndex);f.element.update();h=h+"_wrapper";d.removeClass(g.lastId,"mceFocus");d.addClass(h,"mceFocus");g.lastId=h;if(f.focussedElement){f.focussedElement.focus()}else{if(d.get(h+"_ok")){d.get(f.id+"_ok").focus()}else{if(d.get(f.id+"_ifr")){d.get(f.id+"_ifr").focus()}}}}},_addAll:function(k,h){var g,l,f=this,j=tinymce.DOM;if(c(h,"string")){k.appendChild(j.doc.createTextNode(h))}else{if(h.length){k=k.appendChild(j.create(h[0],h[1]));for(g=2;g<h.length;g++){f._addAll(k,h[g])}}}},_startDrag:function(v,G,E){var o=this,u,z,C=d.doc,f,l=o.windows[v],h=l.element,y=h.getXY(),x,q,F,g,A,s,r,j,i,m,k,n,B;g={x:0,y:0};A=d.getViewPort();A.w-=2;A.h-=2;j=G.screenX;i=G.screenY;m=k=n=B=0;u=a.add(C,"mouseup",function(p){a.remove(C,"mouseup",u);a.remove(C,"mousemove",z);if(f){f.remove()}h.moveBy(m,k);h.resizeBy(n,B);q=h.getSize();d.setStyles(v+"_ifr",{width:q.w-l.deltaWidth,height:q.h-l.deltaHeight});o._fixIELayout(v,1);return a.cancel(p)});if(E!="Move"){D()}function D(){if(f){return}o._fixIELayout(v,0);d.add(C.body,"div",{id:"mceEventBlocker","class":"mceEventBlocker "+(o.editor.settings.inlinepopups_skin||"clearlooks2"),style:{zIndex:o.zIndex+1}});if(tinymce.isIE6||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceEventBlocker",{position:"absolute",left:A.x,top:A.y,width:A.w-2,height:A.h-2})}f=new b("mceEventBlocker");f.update();x=h.getXY();q=h.getSize();s=g.x+x.x-A.x;r=g.y+x.y-A.y;d.add(f.get(),"div",{id:"mcePlaceHolder","class":"mcePlaceHolder",style:{left:s,top:r,width:q.w,height:q.h}});F=new b("mcePlaceHolder")}z=a.add(C,"mousemove",function(w){var p,H,t;D();p=w.screenX-j;H=w.screenY-i;switch(E){case"ResizeW":m=p;n=0-p;break;case"ResizeE":n=p;break;case"ResizeN":case"ResizeNW":case"ResizeNE":if(E=="ResizeNW"){m=p;n=0-p}else{if(E=="ResizeNE"){n=p}}k=H;B=0-H;break;case"ResizeS":case"ResizeSW":case"ResizeSE":if(E=="ResizeSW"){m=p;n=0-p}else{if(E=="ResizeSE"){n=p}}B=H;break;case"mceMove":m=p;k=H;break}if(n<(t=l.features.min_width-q.w)){if(m!==0){m+=n-t}n=t}if(B<(t=l.features.min_height-q.h)){if(k!==0){k+=B-t}B=t}n=Math.min(n,l.features.max_width-q.w);B=Math.min(B,l.features.max_height-q.h);m=Math.max(m,A.x-(s+A.x));k=Math.max(k,A.y-(r+A.y));m=Math.min(m,(A.w+A.x)-(s+q.w+A.x));k=Math.min(k,(A.h+A.y)-(r+q.h+A.y));if(m+k!==0){if(s+m<0){m=0}if(r+k<0){k=0}F.moveTo(s+m,r+k)}if(n+B!==0){F.resizeTo(q.w+n,q.h+B)}return a.cancel(w)});return a.cancel(G)},resizeBy:function(g,h,i){var f=this.windows[i];if(f){f.element.resizeBy(g,h);f.iframeElement.resizeBy(g,h)}},close:function(i,k){var g=this,f,j=d.doc,h,k;k=g._findId(k||i);if(!g.windows[k]){g.parent(i);return}g.count--;if(g.count==0){d.remove("mceModalBlocker");d.setAttrib(d.doc.body,"aria-hidden","false");g.editor.focus()}if(f=g.windows[k]){g.onClose.dispatch(g);a.remove(j,"mousedown",f.mousedownFunc);a.remove(j,"click",f.clickFunc);a.clear(k);a.clear(k+"_ifr");d.setAttrib(k+"_ifr","src",'javascript:""');f.element.remove();delete g.windows[k];h=g._frontWindow();if(h){g.focus(h.id)}}},_frontWindow:function(){var g,f=0;e(this.windows,function(h){if(h.zIndex>f){g=h;f=h.zIndex}});return g},setTitle:function(f,g){var h;f=this._findId(f);if(h=d.get(f+"_title")){h.innerHTML=d.encode(g)}},alert:function(g,f,j){var i=this,h;h=i.open({title:i,type:"alert",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},confirm:function(g,f,j){var i=this,h;h=i.open({title:i,type:"confirm",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},_findId:function(f){var g=this;if(typeof(f)=="string"){return f}e(g.windows,function(h){var i=d.get(h.id+"_ifr");if(i&&f==i.contentWindow){f=h.id;return false}});return f},_fixIELayout:function(i,h){var f,g;if(!tinymce.isIE6){return}e(["n","s","w","e","nw","ne","sw","se"],function(j){var k=d.get(i+"_resize_"+j);d.setStyles(k,{width:h?k.clientWidth:"",height:h?k.clientHeight:"",cursor:d.getStyle(k,"cursor",1)});d.setStyle(i+"_bottom","bottom","-1px");k=0});if(f=this.windows[i]){f.element.hide();f.element.show();e(d.select("div,a",i),function(k,j){if(k.currentStyle.backgroundImage!="none"){g=new Image();g.src=k.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/,"$1")}});d.get(i).style.filter=""}}});tinymce.PluginManager.add("inlinepopups",tinymce.plugins.InlinePopups)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
deleted file mode 100644
index 67123ca31..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
+++ /dev/null
@@ -1,699 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var DOM = tinymce.DOM, Element = tinymce.dom.Element, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is;
-
- tinymce.create('tinymce.plugins.InlinePopups', {
- init : function(ed, url) {
- // Replace window manager
- ed.onBeforeRenderUI.add(function() {
- ed.windowManager = new tinymce.InlineWindowManager(ed);
- DOM.loadCSS(url + '/skins/' + (ed.settings.inlinepopups_skin || 'clearlooks2') + "/window.css");
- });
- },
-
- getInfo : function() {
- return {
- longname : 'InlinePopups',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager', {
- InlineWindowManager : function(ed) {
- var t = this;
-
- t.parent(ed);
- t.zIndex = 300000;
- t.count = 0;
- t.windows = {};
- },
-
- open : function(f, p) {
- var t = this, id, opt = '', ed = t.editor, dw = 0, dh = 0, vp, po, mdf, clf, we, w, u, parentWindow;
-
- f = f || {};
- p = p || {};
-
- // Run native windows
- if (!f.inline)
- return t.parent(f, p);
-
- parentWindow = t._frontWindow();
- if (parentWindow && DOM.get(parentWindow.id + '_ifr')) {
- parentWindow.focussedElement = DOM.get(parentWindow.id + '_ifr').contentWindow.document.activeElement;
- }
-
- // Only store selection if the type is a normal window
- if (!f.type)
- t.bookmark = ed.selection.getBookmark(1);
-
- id = DOM.uniqueId();
- vp = DOM.getViewPort();
- f.width = parseInt(f.width || 320);
- f.height = parseInt(f.height || 240) + (tinymce.isIE ? 8 : 0);
- f.min_width = parseInt(f.min_width || 150);
- f.min_height = parseInt(f.min_height || 100);
- f.max_width = parseInt(f.max_width || 2000);
- f.max_height = parseInt(f.max_height || 2000);
- f.left = f.left || Math.round(Math.max(vp.x, vp.x + (vp.w / 2.0) - (f.width / 2.0)));
- f.top = f.top || Math.round(Math.max(vp.y, vp.y + (vp.h / 2.0) - (f.height / 2.0)));
- f.movable = f.resizable = true;
- p.mce_width = f.width;
- p.mce_height = f.height;
- p.mce_inline = true;
- p.mce_window_id = id;
- p.mce_auto_focus = f.auto_focus;
-
- // Transpose
-// po = DOM.getPos(ed.getContainer());
-// f.left -= po.x;
-// f.top -= po.y;
-
- t.features = f;
- t.params = p;
- t.onOpen.dispatch(t, f, p);
-
- if (f.type) {
- opt += ' mceModal';
-
- if (f.type)
- opt += ' mce' + f.type.substring(0, 1).toUpperCase() + f.type.substring(1);
-
- f.resizable = false;
- }
-
- if (f.statusbar)
- opt += ' mceStatusbar';
-
- if (f.resizable)
- opt += ' mceResizable';
-
- if (f.minimizable)
- opt += ' mceMinimizable';
-
- if (f.maximizable)
- opt += ' mceMaximizable';
-
- if (f.movable)
- opt += ' mceMovable';
-
- // Create DOM objects
- t._addAll(DOM.doc.body,
- ['div', {id : id, role : 'dialog', 'aria-labelledby': f.type ? id + '_content' : id + '_title', 'class' : (ed.settings.inlinepopups_skin || 'clearlooks2') + (tinymce.isIE && window.getSelection ? ' ie9' : ''), style : 'width:100px;height:100px'},
- ['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt},
- ['div', {id : id + '_top', 'class' : 'mceTop'},
- ['div', {'class' : 'mceLeft'}],
- ['div', {'class' : 'mceCenter'}],
- ['div', {'class' : 'mceRight'}],
- ['span', {id : id + '_title'}, f.title || '']
- ],
-
- ['div', {id : id + '_middle', 'class' : 'mceMiddle'},
- ['div', {id : id + '_left', 'class' : 'mceLeft', tabindex : '0'}],
- ['span', {id : id + '_content'}],
- ['div', {id : id + '_right', 'class' : 'mceRight', tabindex : '0'}]
- ],
-
- ['div', {id : id + '_bottom', 'class' : 'mceBottom'},
- ['div', {'class' : 'mceLeft'}],
- ['div', {'class' : 'mceCenter'}],
- ['div', {'class' : 'mceRight'}],
- ['span', {id : id + '_status'}, 'Content']
- ],
-
- ['a', {'class' : 'mceMove', tabindex : '-1', href : 'javascript:;'}],
- ['a', {'class' : 'mceMin', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
- ['a', {'class' : 'mceMax', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
- ['a', {'class' : 'mceMed', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
- ['a', {'class' : 'mceClose', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
- ['a', {id : id + '_resize_n', 'class' : 'mceResize mceResizeN', tabindex : '-1', href : 'javascript:;'}],
- ['a', {id : id + '_resize_s', 'class' : 'mceResize mceResizeS', tabindex : '-1', href : 'javascript:;'}],
- ['a', {id : id + '_resize_w', 'class' : 'mceResize mceResizeW', tabindex : '-1', href : 'javascript:;'}],
- ['a', {id : id + '_resize_e', 'class' : 'mceResize mceResizeE', tabindex : '-1', href : 'javascript:;'}],
- ['a', {id : id + '_resize_nw', 'class' : 'mceResize mceResizeNW', tabindex : '-1', href : 'javascript:;'}],
- ['a', {id : id + '_resize_ne', 'class' : 'mceResize mceResizeNE', tabindex : '-1', href : 'javascript:;'}],
- ['a', {id : id + '_resize_sw', 'class' : 'mceResize mceResizeSW', tabindex : '-1', href : 'javascript:;'}],
- ['a', {id : id + '_resize_se', 'class' : 'mceResize mceResizeSE', tabindex : '-1', href : 'javascript:;'}]
- ]
- ]
- );
-
- DOM.setStyles(id, {top : -10000, left : -10000});
-
- // Fix gecko rendering bug, where the editors iframe messed with window contents
- if (tinymce.isGecko)
- DOM.setStyle(id, 'overflow', 'auto');
-
- // Measure borders
- if (!f.type) {
- dw += DOM.get(id + '_left').clientWidth;
- dw += DOM.get(id + '_right').clientWidth;
- dh += DOM.get(id + '_top').clientHeight;
- dh += DOM.get(id + '_bottom').clientHeight;
- }
-
- // Resize window
- DOM.setStyles(id, {top : f.top, left : f.left, width : f.width + dw, height : f.height + dh});
-
- u = f.url || f.file;
- if (u) {
- if (tinymce.relaxedDomain)
- u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain;
-
- u = tinymce._addVer(u);
- }
-
- if (!f.type) {
- DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'});
- DOM.setStyles(id + '_ifr', {width : f.width, height : f.height});
- DOM.setAttrib(id + '_ifr', 'src', u);
- } else {
- DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'mceButton mceOk', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok');
-
- if (f.type == 'confirm')
- DOM.add(id + '_wrapper', 'a', {'class' : 'mceButton mceCancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel');
-
- DOM.add(id + '_middle', 'div', {'class' : 'mceIcon'});
- DOM.setHTML(id + '_content', f.content.replace('\n', '<br />'));
-
- Event.add(id, 'keyup', function(evt) {
- var VK_ESCAPE = 27;
- if (evt.keyCode === VK_ESCAPE) {
- f.button_func(false);
- return Event.cancel(evt);
- }
- });
-
- Event.add(id, 'keydown', function(evt) {
- var cancelButton, VK_TAB = 9;
- if (evt.keyCode === VK_TAB) {
- cancelButton = DOM.select('a.mceCancel', id + '_wrapper')[0];
- if (cancelButton && cancelButton !== evt.target) {
- cancelButton.focus();
- } else {
- DOM.get(id + '_ok').focus();
- }
- return Event.cancel(evt);
- }
- });
- }
-
- // Register events
- mdf = Event.add(id, 'mousedown', function(e) {
- var n = e.target, w, vp;
-
- w = t.windows[id];
- t.focus(id);
-
- if (n.nodeName == 'A' || n.nodeName == 'a') {
- if (n.className == 'mceClose') {
- t.close(null, id);
- return Event.cancel(e);
- } else if (n.className == 'mceMax') {
- w.oldPos = w.element.getXY();
- w.oldSize = w.element.getSize();
-
- vp = DOM.getViewPort();
-
- // Reduce viewport size to avoid scrollbars
- vp.w -= 2;
- vp.h -= 2;
-
- w.element.moveTo(vp.x, vp.y);
- w.element.resizeTo(vp.w, vp.h);
- DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight});
- DOM.addClass(id + '_wrapper', 'mceMaximized');
- } else if (n.className == 'mceMed') {
- // Reset to old size
- w.element.moveTo(w.oldPos.x, w.oldPos.y);
- w.element.resizeTo(w.oldSize.w, w.oldSize.h);
- w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight);
-
- DOM.removeClass(id + '_wrapper', 'mceMaximized');
- } else if (n.className == 'mceMove')
- return t._startDrag(id, e, n.className);
- else if (DOM.hasClass(n, 'mceResize'))
- return t._startDrag(id, e, n.className.substring(13));
- }
- });
-
- clf = Event.add(id, 'click', function(e) {
- var n = e.target;
-
- t.focus(id);
-
- if (n.nodeName == 'A' || n.nodeName == 'a') {
- switch (n.className) {
- case 'mceClose':
- t.close(null, id);
- return Event.cancel(e);
-
- case 'mceButton mceOk':
- case 'mceButton mceCancel':
- f.button_func(n.className == 'mceButton mceOk');
- return Event.cancel(e);
- }
- }
- });
-
- // Make sure the tab order loops within the dialog.
- Event.add([id + '_left', id + '_right'], 'focus', function(evt) {
- var iframe = DOM.get(id + '_ifr');
- if (iframe) {
- var body = iframe.contentWindow.document.body;
- var focusable = DOM.select(':input:enabled,*[tabindex=0]', body);
- if (evt.target.id === (id + '_left')) {
- focusable[focusable.length - 1].focus();
- } else {
- focusable[0].focus();
- }
- } else {
- DOM.get(id + '_ok').focus();
- }
- });
-
- // Add window
- w = t.windows[id] = {
- id : id,
- mousedown_func : mdf,
- click_func : clf,
- element : new Element(id, {blocker : 1, container : ed.getContainer()}),
- iframeElement : new Element(id + '_ifr'),
- features : f,
- deltaWidth : dw,
- deltaHeight : dh
- };
-
- w.iframeElement.on('focus', function() {
- t.focus(id);
- });
-
- // Setup blocker
- if (t.count == 0 && t.editor.getParam('dialog_type', 'modal') == 'modal') {
- DOM.add(DOM.doc.body, 'div', {
- id : 'mceModalBlocker',
- 'class' : (t.editor.settings.inlinepopups_skin || 'clearlooks2') + '_modalBlocker',
- style : {zIndex : t.zIndex - 1}
- });
-
- DOM.show('mceModalBlocker'); // Reduces flicker in IE
- DOM.setAttrib(DOM.doc.body, 'aria-hidden', 'true');
- } else
- DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1);
-
- if (tinymce.isIE6 || /Firefox\/2\./.test(navigator.userAgent) || (tinymce.isIE && !DOM.boxModel))
- DOM.setStyles('mceModalBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});
-
- DOM.setAttrib(id, 'aria-hidden', 'false');
- t.focus(id);
- t._fixIELayout(id, 1);
-
- // Focus ok button
- if (DOM.get(id + '_ok'))
- DOM.get(id + '_ok').focus();
- t.count++;
-
- return w;
- },
-
- focus : function(id) {
- var t = this, w;
-
- if (w = t.windows[id]) {
- w.zIndex = this.zIndex++;
- w.element.setStyle('zIndex', w.zIndex);
- w.element.update();
-
- id = id + '_wrapper';
- DOM.removeClass(t.lastId, 'mceFocus');
- DOM.addClass(id, 'mceFocus');
- t.lastId = id;
-
- if (w.focussedElement) {
- w.focussedElement.focus();
- } else if (DOM.get(id + '_ok')) {
- DOM.get(w.id + '_ok').focus();
- } else if (DOM.get(w.id + '_ifr')) {
- DOM.get(w.id + '_ifr').focus();
- }
- }
- },
-
- _addAll : function(te, ne) {
- var i, n, t = this, dom = tinymce.DOM;
-
- if (is(ne, 'string'))
- te.appendChild(dom.doc.createTextNode(ne));
- else if (ne.length) {
- te = te.appendChild(dom.create(ne[0], ne[1]));
-
- for (i=2; i<ne.length; i++)
- t._addAll(te, ne[i]);
- }
- },
-
- _startDrag : function(id, se, ac) {
- var t = this, mu, mm, d = DOM.doc, eb, w = t.windows[id], we = w.element, sp = we.getXY(), p, sz, ph, cp, vp, sx, sy, sex, sey, dx, dy, dw, dh;
-
- // Get positons and sizes
-// cp = DOM.getPos(t.editor.getContainer());
- cp = {x : 0, y : 0};
- vp = DOM.getViewPort();
-
- // Reduce viewport size to avoid scrollbars while dragging
- vp.w -= 2;
- vp.h -= 2;
-
- sex = se.screenX;
- sey = se.screenY;
- dx = dy = dw = dh = 0;
-
- // Handle mouse up
- mu = Event.add(d, 'mouseup', function(e) {
- Event.remove(d, 'mouseup', mu);
- Event.remove(d, 'mousemove', mm);
-
- if (eb)
- eb.remove();
-
- we.moveBy(dx, dy);
- we.resizeBy(dw, dh);
- sz = we.getSize();
- DOM.setStyles(id + '_ifr', {width : sz.w - w.deltaWidth, height : sz.h - w.deltaHeight});
- t._fixIELayout(id, 1);
-
- return Event.cancel(e);
- });
-
- if (ac != 'Move')
- startMove();
-
- function startMove() {
- if (eb)
- return;
-
- t._fixIELayout(id, 0);
-
- // Setup event blocker
- DOM.add(d.body, 'div', {
- id : 'mceEventBlocker',
- 'class' : 'mceEventBlocker ' + (t.editor.settings.inlinepopups_skin || 'clearlooks2'),
- style : {zIndex : t.zIndex + 1}
- });
-
- if (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel))
- DOM.setStyles('mceEventBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});
-
- eb = new Element('mceEventBlocker');
- eb.update();
-
- // Setup placeholder
- p = we.getXY();
- sz = we.getSize();
- sx = cp.x + p.x - vp.x;
- sy = cp.y + p.y - vp.y;
- DOM.add(eb.get(), 'div', {id : 'mcePlaceHolder', 'class' : 'mcePlaceHolder', style : {left : sx, top : sy, width : sz.w, height : sz.h}});
- ph = new Element('mcePlaceHolder');
- };
-
- // Handle mouse move/drag
- mm = Event.add(d, 'mousemove', function(e) {
- var x, y, v;
-
- startMove();
-
- x = e.screenX - sex;
- y = e.screenY - sey;
-
- switch (ac) {
- case 'ResizeW':
- dx = x;
- dw = 0 - x;
- break;
-
- case 'ResizeE':
- dw = x;
- break;
-
- case 'ResizeN':
- case 'ResizeNW':
- case 'ResizeNE':
- if (ac == "ResizeNW") {
- dx = x;
- dw = 0 - x;
- } else if (ac == "ResizeNE")
- dw = x;
-
- dy = y;
- dh = 0 - y;
- break;
-
- case 'ResizeS':
- case 'ResizeSW':
- case 'ResizeSE':
- if (ac == "ResizeSW") {
- dx = x;
- dw = 0 - x;
- } else if (ac == "ResizeSE")
- dw = x;
-
- dh = y;
- break;
-
- case 'mceMove':
- dx = x;
- dy = y;
- break;
- }
-
- // Boundary check
- if (dw < (v = w.features.min_width - sz.w)) {
- if (dx !== 0)
- dx += dw - v;
-
- dw = v;
- }
-
- if (dh < (v = w.features.min_height - sz.h)) {
- if (dy !== 0)
- dy += dh - v;
-
- dh = v;
- }
-
- dw = Math.min(dw, w.features.max_width - sz.w);
- dh = Math.min(dh, w.features.max_height - sz.h);
- dx = Math.max(dx, vp.x - (sx + vp.x));
- dy = Math.max(dy, vp.y - (sy + vp.y));
- dx = Math.min(dx, (vp.w + vp.x) - (sx + sz.w + vp.x));
- dy = Math.min(dy, (vp.h + vp.y) - (sy + sz.h + vp.y));
-
- // Move if needed
- if (dx + dy !== 0) {
- if (sx + dx < 0)
- dx = 0;
-
- if (sy + dy < 0)
- dy = 0;
-
- ph.moveTo(sx + dx, sy + dy);
- }
-
- // Resize if needed
- if (dw + dh !== 0)
- ph.resizeTo(sz.w + dw, sz.h + dh);
-
- return Event.cancel(e);
- });
-
- return Event.cancel(se);
- },
-
- resizeBy : function(dw, dh, id) {
- var w = this.windows[id];
-
- if (w) {
- w.element.resizeBy(dw, dh);
- w.iframeElement.resizeBy(dw, dh);
- }
- },
-
- close : function(win, id) {
- var t = this, w, d = DOM.doc, fw, id;
-
- id = t._findId(id || win);
-
- // Probably not inline
- if (!t.windows[id]) {
- t.parent(win);
- return;
- }
-
- t.count--;
-
- if (t.count == 0) {
- DOM.remove('mceModalBlocker');
- DOM.setAttrib(DOM.doc.body, 'aria-hidden', 'false');
- t.editor.focus();
- }
-
- if (w = t.windows[id]) {
- t.onClose.dispatch(t);
- Event.remove(d, 'mousedown', w.mousedownFunc);
- Event.remove(d, 'click', w.clickFunc);
- Event.clear(id);
- Event.clear(id + '_ifr');
-
- DOM.setAttrib(id + '_ifr', 'src', 'javascript:""'); // Prevent leak
- w.element.remove();
- delete t.windows[id];
-
- fw = t._frontWindow();
-
- if (fw)
- t.focus(fw.id);
- }
- },
-
- // Find front most window
- _frontWindow : function() {
- var fw, ix = 0;
- // Find front most window and focus that
- each (this.windows, function(w) {
- if (w.zIndex > ix) {
- fw = w;
- ix = w.zIndex;
- }
- });
- return fw;
- },
-
- setTitle : function(w, ti) {
- var e;
-
- w = this._findId(w);
-
- if (e = DOM.get(w + '_title'))
- e.innerHTML = DOM.encode(ti);
- },
-
- alert : function(txt, cb, s) {
- var t = this, w;
-
- w = t.open({
- title : t,
- type : 'alert',
- button_func : function(s) {
- if (cb)
- cb.call(s || t, s);
-
- t.close(null, w.id);
- },
- content : DOM.encode(t.editor.getLang(txt, txt)),
- inline : 1,
- width : 400,
- height : 130
- });
- },
-
- confirm : function(txt, cb, s) {
- var t = this, w;
-
- w = t.open({
- title : t,
- type : 'confirm',
- button_func : function(s) {
- if (cb)
- cb.call(s || t, s);
-
- t.close(null, w.id);
- },
- content : DOM.encode(t.editor.getLang(txt, txt)),
- inline : 1,
- width : 400,
- height : 130
- });
- },
-
- // Internal functions
-
- _findId : function(w) {
- var t = this;
-
- if (typeof(w) == 'string')
- return w;
-
- each(t.windows, function(wo) {
- var ifr = DOM.get(wo.id + '_ifr');
-
- if (ifr && w == ifr.contentWindow) {
- w = wo.id;
- return false;
- }
- });
-
- return w;
- },
-
- _fixIELayout : function(id, s) {
- var w, img;
-
- if (!tinymce.isIE6)
- return;
-
- // Fixes the bug where hover flickers and does odd things in IE6
- each(['n','s','w','e','nw','ne','sw','se'], function(v) {
- var e = DOM.get(id + '_resize_' + v);
-
- DOM.setStyles(e, {
- width : s ? e.clientWidth : '',
- height : s ? e.clientHeight : '',
- cursor : DOM.getStyle(e, 'cursor', 1)
- });
-
- DOM.setStyle(id + "_bottom", 'bottom', '-1px');
-
- e = 0;
- });
-
- // Fixes graphics glitch
- if (w = this.windows[id]) {
- // Fixes rendering bug after resize
- w.element.hide();
- w.element.show();
-
- // Forced a repaint of the window
- //DOM.get(id).style.filter = '';
-
- // IE has a bug where images used in CSS won't get loaded
- // sometimes when the cache in the browser is disabled
- // This fix tries to solve it by loading the images using the image object
- each(DOM.select('div,a', id), function(e, i) {
- if (e.currentStyle.backgroundImage != 'none') {
- img = new Image();
- img.src = e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/, '$1');
- }
- });
-
- DOM.get(id).style.filter = '';
- }
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('inlinepopups', tinymce.plugins.InlinePopups);
-})();
-
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif b/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif
deleted file mode 100644
index 219139857..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif b/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif
deleted file mode 100644
index f957e49a3..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif b/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif
deleted file mode 100644
index 6baf64ad3..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif b/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif
deleted file mode 100644
index 20acbbf7a..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif b/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif
deleted file mode 100644
index d5de1cc23..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif b/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif
deleted file mode 100644
index c2a2ad454..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif b/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif
deleted file mode 100644
index 0b4cc3682..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css b/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css
deleted file mode 100644
index a50d4fc57..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css
+++ /dev/null
@@ -1,90 +0,0 @@
-/* Clearlooks 2 */
-
-/* Reset */
-.clearlooks2, .clearlooks2 div, .clearlooks2 span, .clearlooks2 a {vertical-align:baseline; text-align:left; position:absolute; border:0; padding:0; margin:0; background:transparent; font-family:Arial,Verdana; font-size:11px; color:#000; text-decoration:none; font-weight:normal; width:auto; height:auto; overflow:hidden; display:block}
-
-/* General */
-.clearlooks2 {position:absolute; direction:ltr}
-.clearlooks2 .mceWrapper {position:static}
-.mceEventBlocker {position:fixed; left:0; top:0; background:url(img/horizontal.gif) no-repeat 0 -75px; width:100%; height:100%}
-.clearlooks2 .mcePlaceHolder {border:1px solid #000; background:#888; top:0; left:0; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50)}
-.clearlooks2_modalBlocker {position:fixed; left:0; top:0; width:100%; height:100%; background:#FFF; opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60); display:none}
-
-/* Top */
-.clearlooks2 .mceTop, .clearlooks2 .mceTop div {top:0; width:100%; height:23px}
-.clearlooks2 .mceTop .mceLeft {width:6px; background:url(img/corners.gif)}
-.clearlooks2 .mceTop .mceCenter {right:6px; width:100%; height:23px; background:url(img/horizontal.gif) 12px 0; clip:rect(auto auto auto 12px)}
-.clearlooks2 .mceTop .mceRight {right:0; width:6px; height:23px; background:url(img/corners.gif) -12px 0}
-.clearlooks2 .mceTop span {width:100%; text-align:center; vertical-align:middle; line-height:23px; font-weight:bold}
-.clearlooks2 .mceFocus .mceTop .mceLeft {background:url(img/corners.gif) -6px 0}
-.clearlooks2 .mceFocus .mceTop .mceCenter {background:url(img/horizontal.gif) 0 -23px}
-.clearlooks2 .mceFocus .mceTop .mceRight {background:url(img/corners.gif) -18px 0}
-.clearlooks2 .mceFocus .mceTop span {color:#FFF}
-
-/* Middle */
-.clearlooks2 .mceMiddle, .clearlooks2 .mceMiddle div {top:0}
-.clearlooks2 .mceMiddle {width:100%; height:100%; clip:rect(23px auto auto auto)}
-.clearlooks2 .mceMiddle .mceLeft {left:0; width:5px; height:100%; background:url(img/vertical.gif) -5px 0}
-.clearlooks2 .mceMiddle span {top:23px; left:5px; width:100%; height:100%; background:#FFF}
-.clearlooks2 .mceMiddle .mceRight {right:0; width:5px; height:100%; background:url(img/vertical.gif)}
-
-/* Bottom */
-.clearlooks2 .mceBottom, .clearlooks2 .mceBottom div {height:6px}
-.clearlooks2 .mceBottom {left:0; bottom:0; width:100%}
-.clearlooks2 .mceBottom div {top:0}
-.clearlooks2 .mceBottom .mceLeft {left:0; width:5px; background:url(img/corners.gif) -34px -6px}
-.clearlooks2 .mceBottom .mceCenter {left:5px; width:100%; background:url(img/horizontal.gif) 0 -46px}
-.clearlooks2 .mceBottom .mceRight {right:0; width:5px; background: url(img/corners.gif) -34px 0}
-.clearlooks2 .mceBottom span {display:none}
-.clearlooks2 .mceStatusbar .mceBottom, .clearlooks2 .mceStatusbar .mceBottom div {height:23px}
-.clearlooks2 .mceStatusbar .mceBottom .mceLeft {background:url(img/corners.gif) -29px 0}
-.clearlooks2 .mceStatusbar .mceBottom .mceCenter {background:url(img/horizontal.gif) 0 -52px}
-.clearlooks2 .mceStatusbar .mceBottom .mceRight {background:url(img/corners.gif) -24px 0}
-.clearlooks2 .mceStatusbar .mceBottom span {display:block; left:7px; font-family:Arial, Verdana; font-size:11px; line-height:23px}
-
-/* Actions */
-.clearlooks2 a {width:29px; height:16px; top:3px;}
-.clearlooks2 .mceClose {right:6px; background:url(img/buttons.gif) -87px 0}
-.clearlooks2 .mceMin {display:none; right:68px; background:url(img/buttons.gif) 0 0}
-.clearlooks2 .mceMed {display:none; right:37px; background:url(img/buttons.gif) -29px 0}
-.clearlooks2 .mceMax {display:none; right:37px; background:url(img/buttons.gif) -58px 0}
-.clearlooks2 .mceMove {display:none;width:100%;cursor:move;background:url(img/corners.gif) no-repeat -100px -100px}
-.clearlooks2 .mceMovable .mceMove {display:block}
-.clearlooks2 .mceFocus .mceClose {right:6px; background:url(img/buttons.gif) -87px -16px}
-.clearlooks2 .mceFocus .mceMin {right:68px; background:url(img/buttons.gif) 0 -16px}
-.clearlooks2 .mceFocus .mceMed {right:37px; background:url(img/buttons.gif) -29px -16px}
-.clearlooks2 .mceFocus .mceMax {right:37px; background:url(img/buttons.gif) -58px -16px}
-.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px}
-.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px}
-.clearlooks2 .mceFocus .mceMin:hover {right:68px; background:url(img/buttons.gif) 0 -32px}
-.clearlooks2 .mceFocus .mceMed:hover {right:37px; background:url(img/buttons.gif) -29px -32px}
-.clearlooks2 .mceFocus .mceMax:hover {right:37px; background:url(img/buttons.gif) -58px -32px}
-
-/* Resize */
-.clearlooks2 .mceResize {top:auto; left:auto; display:none; width:5px; height:5px; background:url(img/horizontal.gif) no-repeat 0 -75px}
-.clearlooks2 .mceResizable .mceResize {display:block}
-.clearlooks2 .mceResizable .mceMin, .clearlooks2 .mceMax {display:none}
-.clearlooks2 .mceMinimizable .mceMin {display:block}
-.clearlooks2 .mceMaximizable .mceMax {display:block}
-.clearlooks2 .mceMaximized .mceMed {display:block}
-.clearlooks2 .mceMaximized .mceMax {display:none}
-.clearlooks2 a.mceResizeN {top:0; left:0; width:100%; cursor:n-resize}
-.clearlooks2 a.mceResizeNW {top:0; left:0; cursor:nw-resize}
-.clearlooks2 a.mceResizeNE {top:0; right:0; cursor:ne-resize}
-.clearlooks2 a.mceResizeW {top:0; left:0; height:100%; cursor:w-resize;}
-.clearlooks2 a.mceResizeE {top:0; right:0; height:100%; cursor:e-resize}
-.clearlooks2 a.mceResizeS {bottom:0; left:0; width:100%; cursor:s-resize}
-.clearlooks2 a.mceResizeSW {bottom:0; left:0; cursor:sw-resize}
-.clearlooks2 a.mceResizeSE {bottom:0; right:0; cursor:se-resize}
-
-/* Alert/Confirm */
-.clearlooks2 .mceButton {font-weight:bold; bottom:10px; width:80px; height:30px; background:url(img/button.gif); line-height:30px; vertical-align:middle; text-align:center; outline:0}
-.clearlooks2 .mceMiddle .mceIcon {left:15px; top:35px; width:32px; height:32px}
-.clearlooks2 .mceAlert .mceMiddle span, .clearlooks2 .mceConfirm .mceMiddle span {background:transparent;left:60px; top:35px; width:320px; height:50px; font-weight:bold; overflow:auto; white-space:normal}
-.clearlooks2 a:hover {font-weight:bold;}
-.clearlooks2 .mceAlert .mceMiddle, .clearlooks2 .mceConfirm .mceMiddle {background:#D6D7D5}
-.clearlooks2 .mceAlert .mceOk {left:50%; top:auto; margin-left: -40px}
-.clearlooks2 .mceAlert .mceIcon {background:url(img/alert.gif)}
-.clearlooks2 .mceConfirm .mceOk {left:50%; top:auto; margin-left: -90px}
-.clearlooks2 .mceConfirm .mceCancel {left:50%; top:auto}
-.clearlooks2 .mceConfirm .mceIcon {background:url(img/confirm.gif)}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/template.htm b/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/template.htm
deleted file mode 100644
index f9ec64219..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/template.htm
+++ /dev/null
@@ -1,387 +0,0 @@
-<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>Template for dialogs</title>
-<link rel="stylesheet" type="text/css" href="skins/clearlooks2/window.css" />
-</head>
-<body>
-
-<div class="mceEditor">
- <div class="clearlooks2" style="width:400px; height:100px; left:10px;">
- <div class="mceWrapper">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Blured</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>Content</span>
- <div class="mceRight"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar text.</span>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceMin" href="#"></a>
- <a class="mceMax" href="#"></a>
- <a class="mceMed" href="#"></a>
- <a class="mceClose" href="#"></a>
- <a class="mceResize mceResizeN" href="#"></a>
- <a class="mceResize mceResizeS" href="#"></a>
- <a class="mceResize mceResizeW" href="#"></a>
- <a class="mceResize mceResizeE" href="#"></a>
- <a class="mceResize mceResizeNW" href="#"></a>
- <a class="mceResize mceResizeNE" href="#"></a>
- <a class="mceResize mceResizeSW" href="#"></a>
- <a class="mceResize mceResizeSE" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:100px; left:420px;">
- <div class="mceWrapper mceMovable mceFocus">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Focused</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>Content</span>
- <div class="mceRight"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar text.</span>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceMin" href="#"></a>
- <a class="mceMax" href="#"></a>
- <a class="mceMed" href="#"></a>
- <a class="mceClose" href="#"></a>
- <a class="mceResize mceResizeN" href="#"></a>
- <a class="mceResize mceResizeS" href="#"></a>
- <a class="mceResize mceResizeW" href="#"></a>
- <a class="mceResize mceResizeE" href="#"></a>
- <a class="mceResize mceResizeNW" href="#"></a>
- <a class="mceResize mceResizeNE" href="#"></a>
- <a class="mceResize mceResizeSW" href="#"></a>
- <a class="mceResize mceResizeSE" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:120px;">
- <div class="mceWrapper mceMovable mceFocus mceStatusbar">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>Content</span>
- <div class="mceRight"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar text.</span>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceMin" href="#"></a>
- <a class="mceMax" href="#"></a>
- <a class="mceMed" href="#"></a>
- <a class="mceClose" href="#"></a>
- <a class="mceResize mceResizeN" href="#"></a>
- <a class="mceResize mceResizeS" href="#"></a>
- <a class="mceResize mceResizeW" href="#"></a>
- <a class="mceResize mceResizeE" href="#"></a>
- <a class="mceResize mceResizeNW" href="#"></a>
- <a class="mceResize mceResizeNE" href="#"></a>
- <a class="mceResize mceResizeSW" href="#"></a>
- <a class="mceResize mceResizeSE" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:120px;">
- <div class="mceWrapper mceMovable mceFocus mceStatusbar mceResizable">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar, Resizable</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>Content</span>
- <div class="mceRight"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar text.</span>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceMin" href="#"></a>
- <a class="mceMax" href="#"></a>
- <a class="mceMed" href="#"></a>
- <a class="mceClose" href="#"></a>
- <a class="mceResize mceResizeN" href="#"></a>
- <a class="mceResize mceResizeS" href="#"></a>
- <a class="mceResize mceResizeW" href="#"></a>
- <a class="mceResize mceResizeE" href="#"></a>
- <a class="mceResize mceResizeNW" href="#"></a>
- <a class="mceResize mceResizeNE" href="#"></a>
- <a class="mceResize mceResizeSW" href="#"></a>
- <a class="mceResize mceResizeSE" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:230px;">
- <div class="mceWrapper mceMovable mceFocus mceResizable mceMaximizable">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Resizable, Maximizable</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>Content</span>
- <div class="mceRight"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar text.</span>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceMin" href="#"></a>
- <a class="mceMax" href="#"></a>
- <a class="mceMed" href="#"></a>
- <a class="mceClose" href="#"></a>
- <a class="mceResize mceResizeN" href="#"></a>
- <a class="mceResize mceResizeS" href="#"></a>
- <a class="mceResize mceResizeW" href="#"></a>
- <a class="mceResize mceResizeE" href="#"></a>
- <a class="mceResize mceResizeNW" href="#"></a>
- <a class="mceResize mceResizeNE" href="#"></a>
- <a class="mceResize mceResizeSW" href="#"></a>
- <a class="mceResize mceResizeSE" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:230px;">
- <div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximizable">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Blurred, Maximizable, Statusbar, Resizable</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>Content</span>
- <div class="mceRight"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar text.</span>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceMin" href="#"></a>
- <a class="mceMax" href="#"></a>
- <a class="mceMed" href="#"></a>
- <a class="mceClose" href="#"></a>
- <a class="mceResize mceResizeN" href="#"></a>
- <a class="mceResize mceResizeS" href="#"></a>
- <a class="mceResize mceResizeW" href="#"></a>
- <a class="mceResize mceResizeE" href="#"></a>
- <a class="mceResize mceResizeNW" href="#"></a>
- <a class="mceResize mceResizeNE" href="#"></a>
- <a class="mceResize mceResizeSW" href="#"></a>
- <a class="mceResize mceResizeSE" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:340px;">
- <div class="mceWrapper mceMovable mceFocus mceResizable mceMaximized mceMinimizable mceMaximizable">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Maximized, Maximizable, Minimizable</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>Content</span>
- <div class="mceRight"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar text.</span>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceMin" href="#"></a>
- <a class="mceMax" href="#"></a>
- <a class="mceMed" href="#"></a>
- <a class="mceClose" href="#"></a>
- <a class="mceResize mceResizeN" href="#"></a>
- <a class="mceResize mceResizeS" href="#"></a>
- <a class="mceResize mceResizeW" href="#"></a>
- <a class="mceResize mceResizeE" href="#"></a>
- <a class="mceResize mceResizeNW" href="#"></a>
- <a class="mceResize mceResizeNE" href="#"></a>
- <a class="mceResize mceResizeSW" href="#"></a>
- <a class="mceResize mceResizeSE" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:340px;">
- <div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximized mceMinimizable mceMaximizable">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Blured</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>Content</span>
- <div class="mceRight"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar text.</span>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceMin" href="#"></a>
- <a class="mceMax" href="#"></a>
- <a class="mceMed" href="#"></a>
- <a class="mceClose" href="#"></a>
- <a class="mceResize mceResizeN" href="#"></a>
- <a class="mceResize mceResizeS" href="#"></a>
- <a class="mceResize mceResizeW" href="#"></a>
- <a class="mceResize mceResizeE" href="#"></a>
- <a class="mceResize mceResizeNW" href="#"></a>
- <a class="mceResize mceResizeNE" href="#"></a>
- <a class="mceResize mceResizeSW" href="#"></a>
- <a class="mceResize mceResizeSE" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:130px; left:10px; top:450px;">
- <div class="mceWrapper mceMovable mceFocus mceModal mceAlert">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Alert</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- </span>
- <div class="mceRight"></div>
- <div class="mceIcon"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceButton mceOk" href="#">Ok</a>
- <a class="mceClose" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:130px; left:420px; top:450px;">
- <div class="mceWrapper mceMovable mceFocus mceModal mceConfirm">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Confirm</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- </span>
- <div class="mceRight"></div>
- <div class="mceIcon"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceButton mceOk" href="#">Ok</a>
- <a class="mceButton mceCancel" href="#">Cancel</a>
- <a class="mceClose" href="#"></a>
- </div>
- </div>
-</div>
-
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js
deleted file mode 100644
index 938ce6b17..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.InsertDateTime",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceInsertDate",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_dateFormat",a.getLang("insertdatetime.date_fmt")));a.execCommand("mceInsertContent",false,d)});a.addCommand("mceInsertTime",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_timeFormat",a.getLang("insertdatetime.time_fmt")));a.execCommand("mceInsertContent",false,d)});a.addButton("insertdate",{title:"insertdatetime.insertdate_desc",cmd:"mceInsertDate"});a.addButton("inserttime",{title:"insertdatetime.inserttime_desc",cmd:"mceInsertTime"})},getInfo:function(){return{longname:"Insert date/time",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getDateTime:function(e,a){var c=this.editor;function b(g,d){g=""+g;if(g.length<d){for(var f=0;f<(d-g.length);f++){g="0"+g}}return g}a=a.replace("%D","%m/%d/%y");a=a.replace("%r","%I:%M:%S %p");a=a.replace("%Y",""+e.getFullYear());a=a.replace("%y",""+e.getYear());a=a.replace("%m",b(e.getMonth()+1,2));a=a.replace("%d",b(e.getDate(),2));a=a.replace("%H",""+b(e.getHours(),2));a=a.replace("%M",""+b(e.getMinutes(),2));a=a.replace("%S",""+b(e.getSeconds(),2));a=a.replace("%I",""+((e.getHours()+11)%12+1));a=a.replace("%p",""+(e.getHours()<12?"AM":"PM"));a=a.replace("%B",""+c.getLang("insertdatetime.months_long").split(",")[e.getMonth()]);a=a.replace("%b",""+c.getLang("insertdatetime.months_short").split(",")[e.getMonth()]);a=a.replace("%A",""+c.getLang("insertdatetime.day_long").split(",")[e.getDay()]);a=a.replace("%a",""+c.getLang("insertdatetime.day_short").split(",")[e.getDay()]);a=a.replace("%%","%");return a}});tinymce.PluginManager.add("insertdatetime",tinymce.plugins.InsertDateTime)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js
deleted file mode 100644
index 181c791ec..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.InsertDateTime', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- ed.addCommand('mceInsertDate', function() {
- var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_dateFormat", ed.getLang('insertdatetime.date_fmt')));
-
- ed.execCommand('mceInsertContent', false, str);
- });
-
- ed.addCommand('mceInsertTime', function() {
- var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_timeFormat", ed.getLang('insertdatetime.time_fmt')));
-
- ed.execCommand('mceInsertContent', false, str);
- });
-
- ed.addButton('insertdate', {title : 'insertdatetime.insertdate_desc', cmd : 'mceInsertDate'});
- ed.addButton('inserttime', {title : 'insertdatetime.inserttime_desc', cmd : 'mceInsertTime'});
- },
-
- getInfo : function() {
- return {
- longname : 'Insert date/time',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- // Private methods
-
- _getDateTime : function(d, fmt) {
- var ed = this.editor;
-
- function addZeros(value, len) {
- value = "" + value;
-
- if (value.length < len) {
- for (var i=0; i<(len-value.length); i++)
- value = "0" + value;
- }
-
- return value;
- };
-
- fmt = fmt.replace("%D", "%m/%d/%y");
- fmt = fmt.replace("%r", "%I:%M:%S %p");
- fmt = fmt.replace("%Y", "" + d.getFullYear());
- fmt = fmt.replace("%y", "" + d.getYear());
- fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
- fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
- fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
- fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
- fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
- fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
- fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
- fmt = fmt.replace("%B", "" + ed.getLang("insertdatetime.months_long").split(',')[d.getMonth()]);
- fmt = fmt.replace("%b", "" + ed.getLang("insertdatetime.months_short").split(',')[d.getMonth()]);
- fmt = fmt.replace("%A", "" + ed.getLang("insertdatetime.day_long").split(',')[d.getDay()]);
- fmt = fmt.replace("%a", "" + ed.getLang("insertdatetime.day_short").split(',')[d.getDay()]);
- fmt = fmt.replace("%%", "%");
-
- return fmt;
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('insertdatetime', tinymce.plugins.InsertDateTime);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js
deleted file mode 100644
index ca3857a74..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){function a(b){do{if(b.className&&b.className.indexOf("mceItemLayer")!=-1){return b}}while(b=b.parentNode)}tinymce.create("tinymce.plugins.Layer",{init:function(b,c){var d=this;d.editor=b;b.addCommand("mceInsertLayer",d._insertLayer,d);b.addCommand("mceMoveForward",function(){d._move(1)});b.addCommand("mceMoveBackward",function(){d._move(-1)});b.addCommand("mceMakeAbsolute",function(){d._toggleAbsolute()});b.addButton("moveforward",{title:"layer.forward_desc",cmd:"mceMoveForward"});b.addButton("movebackward",{title:"layer.backward_desc",cmd:"mceMoveBackward"});b.addButton("absolute",{title:"layer.absolute_desc",cmd:"mceMakeAbsolute"});b.addButton("insertlayer",{title:"layer.insertlayer_desc",cmd:"mceInsertLayer"});b.onInit.add(function(){var e=b.dom;if(tinymce.isIE){b.getDoc().execCommand("2D-Position",false,true)}});b.onMouseUp.add(function(f,h){var g=a(h.target);if(g){f.dom.setAttrib(g,"data-mce-style","")}});b.onMouseDown.add(function(f,j){var h=j.target,i=f.getDoc(),g;if(tinymce.isGecko){if(a(h)){if(i.designMode!=="on"){i.designMode="on";h=i.body;g=h.parentNode;g.removeChild(h);g.appendChild(h)}}else{if(i.designMode=="on"){i.designMode="off"}}}});b.onNodeChange.add(d._nodeChange,d);b.onVisualAid.add(d._visualAid,d)},getInfo:function(){return{longname:"Layer",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(c,b,f){var d,e;d=this._getParentLayer(f);e=c.dom.getParent(f,"DIV,P,IMG");if(!e){b.setDisabled("absolute",1);b.setDisabled("moveforward",1);b.setDisabled("movebackward",1)}else{b.setDisabled("absolute",0);b.setDisabled("moveforward",!d);b.setDisabled("movebackward",!d);b.setActive("absolute",d&&d.style.position.toLowerCase()=="absolute")}},_visualAid:function(b,d,c){var f=b.dom;tinymce.each(f.select("div,p",d),function(g){if(/^(absolute|relative|fixed)$/i.test(g.style.position)){if(c){f.addClass(g,"mceItemVisualAid")}else{f.removeClass(g,"mceItemVisualAid")}f.addClass(g,"mceItemLayer")}})},_move:function(j){var c=this.editor,g,h=[],f=this._getParentLayer(c.selection.getNode()),e=-1,k=-1,b;b=[];tinymce.walk(c.getBody(),function(d){if(d.nodeType==1&&/^(absolute|relative|static)$/i.test(d.style.position)){b.push(d)}},"childNodes");for(g=0;g<b.length;g++){h[g]=b[g].style.zIndex?parseInt(b[g].style.zIndex):0;if(e<0&&b[g]==f){e=g}}if(j<0){for(g=0;g<h.length;g++){if(h[g]<h[e]){k=g;break}}if(k>-1){b[e].style.zIndex=h[k];b[k].style.zIndex=h[e]}else{if(h[e]>0){b[e].style.zIndex=h[e]-1}}}else{for(g=0;g<h.length;g++){if(h[g]>h[e]){k=g;break}}if(k>-1){b[e].style.zIndex=h[k];b[k].style.zIndex=h[e]}else{b[e].style.zIndex=h[e]+1}}c.execCommand("mceRepaint")},_getParentLayer:function(b){return this.editor.dom.getParent(b,function(c){return c.nodeType==1&&/^(absolute|relative|static)$/i.test(c.style.position)})},_insertLayer:function(){var c=this.editor,e=c.dom,d=e.getPos(e.getParent(c.selection.getNode(),"*")),b=c.getBody();c.dom.add(b,"div",{style:{position:"absolute",left:d.x,top:(d.y>20?d.y:20),width:100,height:100},"class":"mceItemVisualAid mceItemLayer"},c.selection.getContent()||c.getLang("layer.content"));if(tinymce.isIE){e.setHTML(b,b.innerHTML)}},_toggleAbsolute:function(){var b=this.editor,c=this._getParentLayer(b.selection.getNode());if(!c){c=b.dom.getParent(b.selection.getNode(),"DIV,P,IMG")}if(c){if(c.style.position.toLowerCase()=="absolute"){b.dom.setStyles(c,{position:"",left:"",top:"",width:"",height:""});b.dom.removeClass(c,"mceItemVisualAid");b.dom.removeClass(c,"mceItemLayer")}else{if(c.style.left==""){c.style.left=20+"px"}if(c.style.top==""){c.style.top=20+"px"}if(c.style.width==""){c.style.width=c.width?(c.width+"px"):"100px"}if(c.style.height==""){c.style.height=c.height?(c.height+"px"):"100px"}c.style.position="absolute";b.dom.setAttrib(c,"data-mce-style","");b.addVisual(b.getBody())}b.execCommand("mceRepaint");b.nodeChanged()}}});tinymce.PluginManager.add("layer",tinymce.plugins.Layer)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js
deleted file mode 100644
index daed2806c..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js
+++ /dev/null
@@ -1,262 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- function findParentLayer(node) {
- do {
- if (node.className && node.className.indexOf('mceItemLayer') != -1) {
- return node;
- }
- } while (node = node.parentNode);
- };
-
- tinymce.create('tinymce.plugins.Layer', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- // Register commands
- ed.addCommand('mceInsertLayer', t._insertLayer, t);
-
- ed.addCommand('mceMoveForward', function() {
- t._move(1);
- });
-
- ed.addCommand('mceMoveBackward', function() {
- t._move(-1);
- });
-
- ed.addCommand('mceMakeAbsolute', function() {
- t._toggleAbsolute();
- });
-
- // Register buttons
- ed.addButton('moveforward', {title : 'layer.forward_desc', cmd : 'mceMoveForward'});
- ed.addButton('movebackward', {title : 'layer.backward_desc', cmd : 'mceMoveBackward'});
- ed.addButton('absolute', {title : 'layer.absolute_desc', cmd : 'mceMakeAbsolute'});
- ed.addButton('insertlayer', {title : 'layer.insertlayer_desc', cmd : 'mceInsertLayer'});
-
- ed.onInit.add(function() {
- var dom = ed.dom;
-
- if (tinymce.isIE)
- ed.getDoc().execCommand('2D-Position', false, true);
- });
-
- // Remove serialized styles when selecting a layer since it might be changed by a drag operation
- ed.onMouseUp.add(function(ed, e) {
- var layer = findParentLayer(e.target);
-
- if (layer) {
- ed.dom.setAttrib(layer, 'data-mce-style', '');
- }
- });
-
- // Fixes edit focus issues with layers on Gecko
- // This will enable designMode while inside a layer and disable it when outside
- ed.onMouseDown.add(function(ed, e) {
- var node = e.target, doc = ed.getDoc(), parent;
-
- if (tinymce.isGecko) {
- if (findParentLayer(node)) {
- if (doc.designMode !== 'on') {
- doc.designMode = 'on';
-
- // Repaint caret
- node = doc.body;
- parent = node.parentNode;
- parent.removeChild(node);
- parent.appendChild(node);
- }
- } else if (doc.designMode == 'on') {
- doc.designMode = 'off';
- }
- }
- });
-
- ed.onNodeChange.add(t._nodeChange, t);
- ed.onVisualAid.add(t._visualAid, t);
- },
-
- getInfo : function() {
- return {
- longname : 'Layer',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- // Private methods
-
- _nodeChange : function(ed, cm, n) {
- var le, p;
-
- le = this._getParentLayer(n);
- p = ed.dom.getParent(n, 'DIV,P,IMG');
-
- if (!p) {
- cm.setDisabled('absolute', 1);
- cm.setDisabled('moveforward', 1);
- cm.setDisabled('movebackward', 1);
- } else {
- cm.setDisabled('absolute', 0);
- cm.setDisabled('moveforward', !le);
- cm.setDisabled('movebackward', !le);
- cm.setActive('absolute', le && le.style.position.toLowerCase() == "absolute");
- }
- },
-
- // Private methods
-
- _visualAid : function(ed, e, s) {
- var dom = ed.dom;
-
- tinymce.each(dom.select('div,p', e), function(e) {
- if (/^(absolute|relative|fixed)$/i.test(e.style.position)) {
- if (s)
- dom.addClass(e, 'mceItemVisualAid');
- else
- dom.removeClass(e, 'mceItemVisualAid');
-
- dom.addClass(e, 'mceItemLayer');
- }
- });
- },
-
- _move : function(d) {
- var ed = this.editor, i, z = [], le = this._getParentLayer(ed.selection.getNode()), ci = -1, fi = -1, nl;
-
- nl = [];
- tinymce.walk(ed.getBody(), function(n) {
- if (n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position))
- nl.push(n);
- }, 'childNodes');
-
- // Find z-indexes
- for (i=0; i<nl.length; i++) {
- z[i] = nl[i].style.zIndex ? parseInt(nl[i].style.zIndex) : 0;
-
- if (ci < 0 && nl[i] == le)
- ci = i;
- }
-
- if (d < 0) {
- // Move back
-
- // Try find a lower one
- for (i=0; i<z.length; i++) {
- if (z[i] < z[ci]) {
- fi = i;
- break;
- }
- }
-
- if (fi > -1) {
- nl[ci].style.zIndex = z[fi];
- nl[fi].style.zIndex = z[ci];
- } else {
- if (z[ci] > 0)
- nl[ci].style.zIndex = z[ci] - 1;
- }
- } else {
- // Move forward
-
- // Try find a higher one
- for (i=0; i<z.length; i++) {
- if (z[i] > z[ci]) {
- fi = i;
- break;
- }
- }
-
- if (fi > -1) {
- nl[ci].style.zIndex = z[fi];
- nl[fi].style.zIndex = z[ci];
- } else
- nl[ci].style.zIndex = z[ci] + 1;
- }
-
- ed.execCommand('mceRepaint');
- },
-
- _getParentLayer : function(n) {
- return this.editor.dom.getParent(n, function(n) {
- return n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position);
- });
- },
-
- _insertLayer : function() {
- var ed = this.editor, dom = ed.dom, p = dom.getPos(dom.getParent(ed.selection.getNode(), '*')), body = ed.getBody();
-
- ed.dom.add(body, 'div', {
- style : {
- position : 'absolute',
- left : p.x,
- top : (p.y > 20 ? p.y : 20),
- width : 100,
- height : 100
- },
- 'class' : 'mceItemVisualAid mceItemLayer'
- }, ed.selection.getContent() || ed.getLang('layer.content'));
-
- // Workaround for IE where it messes up the JS engine if you insert a layer on IE 6,7
- if (tinymce.isIE)
- dom.setHTML(body, body.innerHTML);
- },
-
- _toggleAbsolute : function() {
- var ed = this.editor, le = this._getParentLayer(ed.selection.getNode());
-
- if (!le)
- le = ed.dom.getParent(ed.selection.getNode(), 'DIV,P,IMG');
-
- if (le) {
- if (le.style.position.toLowerCase() == "absolute") {
- ed.dom.setStyles(le, {
- position : '',
- left : '',
- top : '',
- width : '',
- height : ''
- });
-
- ed.dom.removeClass(le, 'mceItemVisualAid');
- ed.dom.removeClass(le, 'mceItemLayer');
- } else {
- if (le.style.left == "")
- le.style.left = 20 + 'px';
-
- if (le.style.top == "")
- le.style.top = 20 + 'px';
-
- if (le.style.width == "")
- le.style.width = le.width ? (le.width + 'px') : '100px';
-
- if (le.style.height == "")
- le.style.height = le.height ? (le.height + 'px') : '100px';
-
- le.style.position = "absolute";
-
- ed.dom.setAttrib(le, 'data-mce-style', '');
- ed.addVisual(ed.getBody());
- }
-
- ed.execCommand('mceRepaint');
- ed.nodeChanged();
- }
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('layer', tinymce.plugins.Layer);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js
deleted file mode 100644
index b3a4ce31c..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(a){a.onAddEditor.addToTop(function(c,b){b.settings.inline_styles=false});a.create("tinymce.plugins.LegacyOutput",{init:function(b){b.onInit.add(function(){var c="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",e=a.explode(b.settings.font_size_style_values),d=b.schema;b.formatter.register({alignleft:{selector:c,attributes:{align:"left"}},aligncenter:{selector:c,attributes:{align:"center"}},alignright:{selector:c,attributes:{align:"right"}},alignfull:{selector:c,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:true}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:true}],fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(f){return a.inArray(e,f.value)+1}}},forecolor:{inline:"font",styles:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}});a.each("b,i,u,strike".split(","),function(f){d.addValidElements(f+"[*]")});if(!d.getElementRule("font")){d.addValidElements("font[face|size|color|style]")}a.each(c.split(","),function(f){var h=d.getElementRule(f),g;if(h){if(!h.attributes.align){h.attributes.align={};h.attributesOrder.push("align")}}});b.onNodeChange.add(function(g,k){var j,f,h,i;f=g.dom.getParent(g.selection.getNode(),"font");if(f){h=f.face;i=f.size}if(j=k.get("fontselect")){j.select(function(l){return l==h})}if(j=k.get("fontsizeselect")){j.select(function(m){var l=a.inArray(e,m.fontSize);return l+1==i})}})})},getInfo:function(){return{longname:"LegacyOutput",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/legacyoutput",version:a.majorVersion+"."+a.minorVersion}}});a.PluginManager.add("legacyoutput",a.plugins.LegacyOutput)})(tinymce); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js
deleted file mode 100644
index e627ec76e..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js
+++ /dev/null
@@ -1,139 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- *
- * This plugin will force TinyMCE to produce deprecated legacy output such as font elements, u elements, align
- * attributes and so forth. There are a few cases where these old items might be needed for example in email applications or with Flash
- *
- * However you should NOT use this plugin if you are building some system that produces web contents such as a CMS. All these elements are
- * not apart of the newer specifications for HTML and XHTML.
- */
-
-(function(tinymce) {
- // Override inline_styles setting to force TinyMCE to produce deprecated contents
- tinymce.onAddEditor.addToTop(function(tinymce, editor) {
- editor.settings.inline_styles = false;
- });
-
- // Create the legacy ouput plugin
- tinymce.create('tinymce.plugins.LegacyOutput', {
- init : function(editor) {
- editor.onInit.add(function() {
- var alignElements = 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img',
- fontSizes = tinymce.explode(editor.settings.font_size_style_values),
- schema = editor.schema;
-
- // Override some internal formats to produce legacy elements and attributes
- editor.formatter.register({
- // Change alignment formats to use the deprecated align attribute
- alignleft : {selector : alignElements, attributes : {align : 'left'}},
- aligncenter : {selector : alignElements, attributes : {align : 'center'}},
- alignright : {selector : alignElements, attributes : {align : 'right'}},
- alignfull : {selector : alignElements, attributes : {align : 'justify'}},
-
- // Change the basic formatting elements to use deprecated element types
- bold : [
- {inline : 'b', remove : 'all'},
- {inline : 'strong', remove : 'all'},
- {inline : 'span', styles : {fontWeight : 'bold'}}
- ],
- italic : [
- {inline : 'i', remove : 'all'},
- {inline : 'em', remove : 'all'},
- {inline : 'span', styles : {fontStyle : 'italic'}}
- ],
- underline : [
- {inline : 'u', remove : 'all'},
- {inline : 'span', styles : {textDecoration : 'underline'}, exact : true}
- ],
- strikethrough : [
- {inline : 'strike', remove : 'all'},
- {inline : 'span', styles : {textDecoration: 'line-through'}, exact : true}
- ],
-
- // Change font size and font family to use the deprecated font element
- fontname : {inline : 'font', attributes : {face : '%value'}},
- fontsize : {
- inline : 'font',
- attributes : {
- size : function(vars) {
- return tinymce.inArray(fontSizes, vars.value) + 1;
- }
- }
- },
-
- // Setup font elements for colors as well
- forecolor : {inline : 'font', styles : {color : '%value'}},
- hilitecolor : {inline : 'font', styles : {backgroundColor : '%value'}}
- });
-
- // Check that deprecated elements are allowed if not add them
- tinymce.each('b,i,u,strike'.split(','), function(name) {
- schema.addValidElements(name + '[*]');
- });
-
- // Add font element if it's missing
- if (!schema.getElementRule("font"))
- schema.addValidElements("font[face|size|color|style]");
-
- // Add the missing and depreacted align attribute for the serialization engine
- tinymce.each(alignElements.split(','), function(name) {
- var rule = schema.getElementRule(name), found;
-
- if (rule) {
- if (!rule.attributes.align) {
- rule.attributes.align = {};
- rule.attributesOrder.push('align');
- }
- }
- });
-
- // Listen for the onNodeChange event so that we can do special logic for the font size and font name drop boxes
- editor.onNodeChange.add(function(editor, control_manager) {
- var control, fontElm, fontName, fontSize;
-
- // Find font element get it's name and size
- fontElm = editor.dom.getParent(editor.selection.getNode(), 'font');
- if (fontElm) {
- fontName = fontElm.face;
- fontSize = fontElm.size;
- }
-
- // Select/unselect the font name in droplist
- if (control = control_manager.get('fontselect')) {
- control.select(function(value) {
- return value == fontName;
- });
- }
-
- // Select/unselect the font size in droplist
- if (control = control_manager.get('fontsizeselect')) {
- control.select(function(value) {
- var index = tinymce.inArray(fontSizes, value.fontSize);
-
- return index + 1 == fontSize;
- });
- }
- });
- });
- },
-
- getInfo : function() {
- return {
- longname : 'LegacyOutput',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/legacyoutput',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('legacyoutput', tinymce.plugins.LegacyOutput);
-})(tinymce);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin.js
deleted file mode 100644
index f07e37250..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var e=tinymce.each,r=tinymce.dom.Event,g;function p(t,s){while(t&&(t.nodeType===8||(t.nodeType===3&&/^[ \t\n\r]*$/.test(t.nodeValue)))){t=s(t)}return t}function b(s){return p(s,function(t){return t.previousSibling})}function i(s){return p(s,function(t){return t.nextSibling})}function d(s,u,t){return s.dom.getParent(u,function(v){return tinymce.inArray(t,v)!==-1})}function n(s){return s&&(s.tagName==="OL"||s.tagName==="UL")}function c(u,v){var t,w,s;t=b(u.lastChild);while(n(t)){w=t;t=b(w.previousSibling)}if(w){s=v.create("li",{style:"list-style-type: none;"});v.split(u,w);v.insertAfter(s,w);s.appendChild(w);s.appendChild(w);u=s.previousSibling}return u}function m(t,s,u){t=a(t,s,u);return o(t,s,u)}function a(u,s,v){var t=b(u.previousSibling);if(t){return h(t,u,s?t:false,v)}else{return u}}function o(u,t,v){var s=i(u.nextSibling);if(s){return h(u,s,t?s:false,v)}else{return u}}function h(u,s,t,v){if(l(u,s,!!t,v)){return f(u,s,t)}else{if(u&&u.tagName==="LI"&&n(s)){u.appendChild(s)}}return s}function l(u,t,s,v){if(!u||!t){return false}else{if(u.tagName==="LI"&&t.tagName==="LI"){return t.style.listStyleType==="none"||j(t)}else{if(n(u)){return(u.tagName===t.tagName&&(s||u.style.listStyleType===t.style.listStyleType))||q(t)}else{return v&&u.tagName==="P"&&t.tagName==="P"}}}}function q(t){var s=i(t.firstChild),u=b(t.lastChild);return s&&u&&n(t)&&s===u&&(n(s)||s.style.listStyleType==="none"||j(s))}function j(u){var t=i(u.firstChild),s=b(u.lastChild);return t&&s&&t===s&&n(t)}function f(w,v,s){var u=b(w.lastChild),t=i(v.firstChild);if(w.tagName==="P"){w.appendChild(w.ownerDocument.createElement("br"))}while(v.firstChild){w.appendChild(v.firstChild)}if(s){w.style.listStyleType=s.style.listStyleType}v.parentNode.removeChild(v);h(u,t,false);return w}function k(t,u){var s;if(!u.is(t,"li,ol,ul")){s=u.getParent(t,"li");if(s){t=s}}return t}tinymce.create("tinymce.plugins.Lists",{init:function(y){var v="TABBING";var s="EMPTY";var J="ESCAPE";var z="PARAGRAPH";var N="UNKNOWN";var x=N;function E(U){return U.keyCode===tinymce.VK.TAB&&!(U.altKey||U.ctrlKey)&&(y.queryCommandState("InsertUnorderedList")||y.queryCommandState("InsertOrderedList"))}function w(){var U=B();var W=U.parentNode.parentNode;var V=U.parentNode.lastChild===U;return V&&!t(W)&&P(U)}function t(U){if(n(U)){return U.parentNode&&U.parentNode.tagName==="LI"}else{return U.tagName==="LI"}}function F(){return y.selection.isCollapsed()&&P(B())}function B(){var U=y.selection.getStart();return((U.tagName=="BR"||U.tagName=="")&&U.parentNode.tagName=="LI")?U.parentNode:U}function P(U){var V=U.childNodes.length;if(U.tagName==="LI"){return V==0?true:V==1&&(U.firstChild.tagName==""||U.firstChild.tagName=="BR"||H(U))}return false}function H(U){var V=tinymce.grep(U.parentNode.childNodes,function(Y){return Y.tagName=="LI"});var W=U==V[V.length-1];var X=U.firstChild;return tinymce.isIE9&&W&&(X.nodeValue==String.fromCharCode(160)||X.nodeValue==String.fromCharCode(32))}function T(U){return U.keyCode===tinymce.VK.ENTER}function A(U){return T(U)&&!U.shiftKey}function M(U){if(E(U)){return v}else{if(A(U)&&w()){return N}else{if(A(U)&&F()){return s}else{return N}}}}function D(U,V){if(x==v||x==s||tinymce.isGecko&&x==J){r.cancel(V)}}function C(){var U=y.selection.getRng(true);var V=U.startContainer;if(V.nodeType==3){var W=V.nodeValue;if(tinymce.isIE9&&W.length>1&&W.charCodeAt(W.length-1)==32){return(U.endOffset==W.length-1)}else{return(U.endOffset==W.length)}}else{if(V.nodeType==1){return U.endOffset==V.childNodes.length}}return false}function I(){var W=y.selection.getNode();var V="h1,h2,h3,h4,h5,h6,p,div";var U=y.dom.is(W,V)&&W.parentNode.tagName==="LI"&&W.parentNode.lastChild===W;return y.selection.isCollapsed()&&U&&C()}function K(W,Y){if(A(Y)&&I()){var X=W.selection.getNode();var V=W.dom.create("li");var U=W.dom.getParent(X,"li");W.dom.insertAfter(V,U);if(tinymce.isIE6||tinymce.isIE7||tinyMCE.isIE8){W.selection.setCursorLocation(V,1)}else{W.selection.setCursorLocation(V,0)}Y.preventDefault()}}function u(X,Z){var ac;if(!tinymce.isGecko){return}var V=X.selection.getStart();if(Z.keyCode!=tinymce.VK.BACKSPACE||V.tagName!=="IMG"){return}function W(ag){var ah=ag.firstChild;var af=null;do{if(!ah){break}if(ah.tagName==="LI"){af=ah}}while(ah=ah.nextSibling);return af}function ae(ag,af){while(ag.childNodes.length>0){af.appendChild(ag.childNodes[0])}}ac=V.parentNode.previousSibling;if(!ac){return}var aa;if(ac.tagName==="UL"||ac.tagName==="OL"){aa=ac}else{if(ac.previousSibling&&(ac.previousSibling.tagName==="UL"||ac.previousSibling.tagName==="OL")){aa=ac.previousSibling}else{return}}var ad=W(aa);var U=X.dom.createRng();U.setStart(ad,1);U.setEnd(ad,1);X.selection.setRng(U);X.selection.collapse(true);var Y=X.selection.getBookmark();var ab=V.parentNode.cloneNode(true);if(ab.tagName==="P"||ab.tagName==="DIV"){ae(ab,ad)}else{ad.appendChild(ab)}V.parentNode.parentNode.removeChild(V.parentNode);X.selection.moveToBookmark(Y)}function G(U){var V=y.dom.getParent(U,"ol,ul");if(V!=null){var W=V.lastChild;y.selection.setCursorLocation(W,0)}}this.ed=y;y.addCommand("Indent",this.indent,this);y.addCommand("Outdent",this.outdent,this);y.addCommand("InsertUnorderedList",function(){this.applyList("UL","OL")},this);y.addCommand("InsertOrderedList",function(){this.applyList("OL","UL")},this);y.onInit.add(function(){y.editorCommands.addCommands({outdent:function(){var V=y.selection,W=y.dom;function U(X){X=W.getParent(X,W.isBlock);return X&&(parseInt(y.dom.getStyle(X,"margin-left")||0,10)+parseInt(y.dom.getStyle(X,"padding-left")||0,10))>0}return U(V.getStart())||U(V.getEnd())||y.queryCommandState("InsertOrderedList")||y.queryCommandState("InsertUnorderedList")}},"state")});y.onKeyUp.add(function(V,W){if(x==v){V.execCommand(W.shiftKey?"Outdent":"Indent",true,null);x=N;return r.cancel(W)}else{if(x==s){var U=B();var Y=V.settings.list_outdent_on_enter===true||W.shiftKey;V.execCommand(Y?"Outdent":"Indent",true,null);if(tinymce.isIE){G(U)}return r.cancel(W)}else{if(x==J){if(tinymce.isIE6||tinymce.isIE7||tinymce.isIE8){var X=V.getDoc().createTextNode("\uFEFF");V.selection.getNode().appendChild(X)}else{if(tinymce.isIE9||tinymce.isGecko){V.execCommand("Outdent");return r.cancel(W)}}}}}});function L(V,U){var W=y.getDoc().createTextNode("\uFEFF");V.insertBefore(W,U);y.selection.setCursorLocation(W,0);y.execCommand("mceRepaint")}function R(V,X){if(T(X)){var U=B();if(U){var W=U.parentNode;var Y=W&&W.parentNode;if(Y&&Y.nodeName=="LI"&&Y.firstChild==W&&U==W.firstChild){L(Y,W)}}}}function S(V,X){if(T(X)){var U=B();if(V.dom.select("ul li",U).length===1){var W=U.firstChild;L(U,W)}}}function Q(V,Z){function W(ad,aa){var ac=[];var ae=new tinymce.dom.TreeWalker(aa,ad);for(var ab=ae.current();ab;ab=ae.next()){if(V.dom.is(ab,"ol,ul,li")){ac.push(ab)}}return ac}if(Z.keyCode==tinymce.VK.BACKSPACE){var U=B();if(U){var Y=V.dom.getParent(U,"ol,ul");if(Y&&Y.firstChild===U){var X=W(Y,U);V.execCommand("Outdent",false,X);V.undoManager.add();return r.cancel(Z)}}}}function O(V,X){var U=B();if(X.keyCode===tinymce.VK.BACKSPACE&&V.dom.is(U,"li")&&U.parentNode.firstChild!==U){if(V.dom.select("ul,ol",U).length===1){var Z=U.previousSibling;V.dom.remove(V.dom.select("br",U));V.dom.remove(U,true);var W=tinymce.grep(Z.childNodes,function(aa){return aa.nodeType===3});if(W.length===1){var Y=W[0];V.selection.setCursorLocation(Y,Y.length)}V.undoManager.add();return r.cancel(X)}}}y.onKeyDown.add(function(U,V){x=M(V)});y.onKeyDown.add(D);y.onKeyDown.add(u);y.onKeyDown.add(K);if(tinymce.isGecko){y.onKeyUp.add(R)}if(tinymce.isIE8){y.onKeyUp.add(S)}if(tinymce.isGecko||tinymce.isWebKit){y.onKeyDown.add(Q)}if(tinymce.isWebKit){y.onKeyDown.add(O)}},applyList:function(y,v){var C=this,z=C.ed,I=z.dom,s=[],H=false,u=false,w=false,B,G=z.selection.getSelectedBlocks();function E(t){if(t&&t.tagName==="BR"){I.remove(t)}}function F(M){var N=I.create(y),t;function L(O){if(O.style.marginLeft||O.style.paddingLeft){C.adjustPaddingFunction(false)(O)}}if(M.tagName==="LI"){}else{if(M.tagName==="P"||M.tagName==="DIV"||M.tagName==="BODY"){K(M,function(P,O){J(P,O,M.tagName==="BODY"?null:P.parentNode);t=P.parentNode;L(t);E(O)});if(t){if(t.tagName==="LI"&&(M.tagName==="P"||G.length>1)){I.split(t.parentNode.parentNode,t.parentNode)}m(t.parentNode,true)}return}else{t=I.create("li");I.insertAfter(t,M);t.appendChild(M);L(M);M=t}}I.insertAfter(N,M);N.appendChild(M);m(N,true);s.push(M)}function J(P,L,N){var t,O=P,M;while(!I.isBlock(P.parentNode)&&P.parentNode!==I.getRoot()){P=I.split(P.parentNode,P.previousSibling);P=P.nextSibling;O=P}if(N){t=N.cloneNode(true);P.parentNode.insertBefore(t,P);while(t.firstChild){I.remove(t.firstChild)}t=I.rename(t,"li")}else{t=I.create("li");P.parentNode.insertBefore(t,P)}while(O&&O!=L){M=O.nextSibling;t.appendChild(O);O=M}if(t.childNodes.length===0){t.innerHTML='<br _mce_bogus="1" />'}F(t)}function K(Q,T){var N,R,O=3,L=1,t="br,ul,ol,p,div,h1,h2,h3,h4,h5,h6,table,blockquote,address,pre,form,center,dl";function P(X,U){var V=I.createRng(),W;g.keep=true;z.selection.moveToBookmark(g);g.keep=false;W=z.selection.getRng(true);if(!U){U=X.parentNode.lastChild}V.setStartBefore(X);V.setEndAfter(U);return !(V.compareBoundaryPoints(O,W)>0||V.compareBoundaryPoints(L,W)<=0)}function S(U){if(U.nextSibling){return U.nextSibling}if(!I.isBlock(U.parentNode)&&U.parentNode!==I.getRoot()){return S(U.parentNode)}}N=Q.firstChild;var M=false;e(I.select(t,Q),function(U){if(U.hasAttribute&&U.hasAttribute("_mce_bogus")){return true}if(P(N,U)){I.addClass(U,"_mce_tagged_br");N=S(U)}});M=(N&&P(N,undefined));N=Q.firstChild;e(I.select(t,Q),function(V){var U=S(V);if(V.hasAttribute&&V.hasAttribute("_mce_bogus")){return true}if(I.hasClass(V,"_mce_tagged_br")){T(N,V,R);R=null}else{R=V}N=U});if(M){T(N,undefined,R)}}function D(t){K(t,function(M,L,N){J(M,L);E(L);E(N)})}function A(t){if(tinymce.inArray(s,t)!==-1){return}if(t.parentNode.tagName===v){I.split(t.parentNode,t);F(t);o(t.parentNode,false)}s.push(t)}function x(M){var O,N,L,t;if(tinymce.inArray(s,M)!==-1){return}M=c(M,I);while(I.is(M.parentNode,"ol,ul,li")){I.split(M.parentNode,M)}s.push(M);M=I.rename(M,"p");L=m(M,false,z.settings.force_br_newlines);if(L===M){O=M.firstChild;while(O){if(I.isBlock(O)){O=I.split(O.parentNode,O);t=true;N=O.nextSibling&&O.nextSibling.firstChild}else{N=O.nextSibling;if(t&&O.tagName==="BR"){I.remove(O)}t=false}O=N}}}e(G,function(t){t=k(t,I);if(t.tagName===v||(t.tagName==="LI"&&t.parentNode.tagName===v)){u=true}else{if(t.tagName===y||(t.tagName==="LI"&&t.parentNode.tagName===y)){H=true}else{w=true}}});if(w&&!H||u||G.length===0){B={LI:A,H1:F,H2:F,H3:F,H4:F,H5:F,H6:F,P:F,BODY:F,DIV:G.length>1?F:D,defaultAction:D,elements:this.selectedBlocks()}}else{B={defaultAction:x,elements:this.selectedBlocks()}}this.process(B)},indent:function(){var u=this.ed,w=u.dom,x=[];function s(z){var y=w.create("li",{style:"list-style-type: none;"});w.insertAfter(y,z);return y}function t(B){var y=s(B),D=w.getParent(B,"ol,ul"),C=D.tagName,E=w.getStyle(D,"list-style-type"),A={},z;if(E!==""){A.style="list-style-type: "+E+";"}z=w.create(C,A);y.appendChild(z);return z}function v(z){if(!d(u,z,x)){z=c(z,w);var y=t(z);y.appendChild(z);m(y.parentNode,false);m(y,false);x.push(z)}}this.process({LI:v,defaultAction:this.adjustPaddingFunction(true),elements:this.selectedBlocks()})},outdent:function(y,x){var w=this,u=w.ed,z=u.dom,s=[];function A(t){var C,B,D;if(!d(u,t,s)){if(z.getStyle(t,"margin-left")!==""||z.getStyle(t,"padding-left")!==""){return w.adjustPaddingFunction(false)(t)}D=z.getStyle(t,"text-align",true);if(D==="center"||D==="right"){z.setStyle(t,"text-align","left");return}t=c(t,z);C=t.parentNode;B=t.parentNode.parentNode;if(B.tagName==="P"){z.split(B,t.parentNode)}else{z.split(C,t);if(B.tagName==="LI"){z.split(B,t)}else{if(!z.is(B,"ol,ul")){z.rename(t,"p")}}}s.push(t)}}var v=x&&tinymce.is(x,"array")?x:this.selectedBlocks();this.process({LI:A,defaultAction:this.adjustPaddingFunction(false),elements:v});e(s,m)},process:function(y){var F=this,w=F.ed.selection,z=F.ed.dom,E,u;function B(t){var s=tinymce.grep(t.childNodes,function(H){return !(H.nodeName==="BR"||H.nodeName==="SPAN"&&z.getAttrib(H,"data-mce-type")=="bookmark"||H.nodeType==3&&(H.nodeValue==String.fromCharCode(160)||H.nodeValue==""))});return s.length===0}function x(s){z.removeClass(s,"_mce_act_on");if(!s||s.nodeType!==1||E.length>1&&B(s)){return}s=k(s,z);var t=y[s.tagName];if(!t){t=y.defaultAction}t(s)}function v(s){F.splitSafeEach(s.childNodes,x)}function C(s,t){return t>=0&&s.hasChildNodes()&&t<s.childNodes.length&&s.childNodes[t].tagName==="BR"}function D(){var t=w.getNode();var s=z.getParent(t,"td");return s!==null}E=y.elements;u=w.getRng(true);if(!u.collapsed){if(C(u.endContainer,u.endOffset-1)){u.setEnd(u.endContainer,u.endOffset-1);w.setRng(u)}if(C(u.startContainer,u.startOffset)){u.setStart(u.startContainer,u.startOffset+1);w.setRng(u)}}if(tinymce.isIE8){var G=F.ed.selection.getNode();if(G.tagName==="LI"&&!(G.parentNode.lastChild===G)){var A=F.ed.getDoc().createTextNode("\uFEFF");G.appendChild(A)}}g=w.getBookmark();y.OL=y.UL=v;F.splitSafeEach(E,x);w.moveToBookmark(g);g=null;if(!D()){F.ed.execCommand("mceRepaint")}},splitSafeEach:function(t,s){if(tinymce.isGecko&&(/Firefox\/[12]\.[0-9]/.test(navigator.userAgent)||/Firefox\/3\.[0-4]/.test(navigator.userAgent))){this.classBasedEach(t,s)}else{e(t,s)}},classBasedEach:function(v,u){var w=this.ed.dom,s,t;e(v,function(x){w.addClass(x,"_mce_act_on")});s=w.select("._mce_act_on");while(s.length>0){t=s.shift();w.removeClass(t,"_mce_act_on");u(t);s=w.select("._mce_act_on")}},adjustPaddingFunction:function(u){var s,v,t=this.ed;s=t.settings.indentation;v=/[a-z%]+/i.exec(s);s=parseInt(s,10);return function(w){var y,x;y=parseInt(t.dom.getStyle(w,"margin-left")||0,10)+parseInt(t.dom.getStyle(w,"padding-left")||0,10);if(u){x=y+s}else{x=y-s}t.dom.setStyle(w,"padding-left","");t.dom.setStyle(w,"margin-left",x>0?x+v:"")}},selectedBlocks:function(){var s=this.ed;var t=s.selection.getSelectedBlocks();return t.length==0?[s.dom.getRoot()]:t},getInfo:function(){return{longname:"Lists",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/lists",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("lists",tinymce.plugins.Lists)}()); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js
deleted file mode 100644
index e711d5301..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js
+++ /dev/null
@@ -1,951 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2011, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var each = tinymce.each, Event = tinymce.dom.Event, bookmark;
-
- // Skips text nodes that only contain whitespace since they aren't semantically important.
- function skipWhitespaceNodes(e, next) {
- while (e && (e.nodeType === 8 || (e.nodeType === 3 && /^[ \t\n\r]*$/.test(e.nodeValue)))) {
- e = next(e);
- }
- return e;
- }
-
- function skipWhitespaceNodesBackwards(e) {
- return skipWhitespaceNodes(e, function(e) {
- return e.previousSibling;
- });
- }
-
- function skipWhitespaceNodesForwards(e) {
- return skipWhitespaceNodes(e, function(e) {
- return e.nextSibling;
- });
- }
-
- function hasParentInList(ed, e, list) {
- return ed.dom.getParent(e, function(p) {
- return tinymce.inArray(list, p) !== -1;
- });
- }
-
- function isList(e) {
- return e && (e.tagName === 'OL' || e.tagName === 'UL');
- }
-
- function splitNestedLists(element, dom) {
- var tmp, nested, wrapItem;
- tmp = skipWhitespaceNodesBackwards(element.lastChild);
- while (isList(tmp)) {
- nested = tmp;
- tmp = skipWhitespaceNodesBackwards(nested.previousSibling);
- }
- if (nested) {
- wrapItem = dom.create('li', { style: 'list-style-type: none;'});
- dom.split(element, nested);
- dom.insertAfter(wrapItem, nested);
- wrapItem.appendChild(nested);
- wrapItem.appendChild(nested);
- element = wrapItem.previousSibling;
- }
- return element;
- }
-
- function attemptMergeWithAdjacent(e, allowDifferentListStyles, mergeParagraphs) {
- e = attemptMergeWithPrevious(e, allowDifferentListStyles, mergeParagraphs);
- return attemptMergeWithNext(e, allowDifferentListStyles, mergeParagraphs);
- }
-
- function attemptMergeWithPrevious(e, allowDifferentListStyles, mergeParagraphs) {
- var prev = skipWhitespaceNodesBackwards(e.previousSibling);
- if (prev) {
- return attemptMerge(prev, e, allowDifferentListStyles ? prev : false, mergeParagraphs);
- } else {
- return e;
- }
- }
-
- function attemptMergeWithNext(e, allowDifferentListStyles, mergeParagraphs) {
- var next = skipWhitespaceNodesForwards(e.nextSibling);
- if (next) {
- return attemptMerge(e, next, allowDifferentListStyles ? next : false, mergeParagraphs);
- } else {
- return e;
- }
- }
-
- function attemptMerge(e1, e2, differentStylesMasterElement, mergeParagraphs) {
- if (canMerge(e1, e2, !!differentStylesMasterElement, mergeParagraphs)) {
- return merge(e1, e2, differentStylesMasterElement);
- } else if (e1 && e1.tagName === 'LI' && isList(e2)) {
- // Fix invalidly nested lists.
- e1.appendChild(e2);
- }
- return e2;
- }
-
- function canMerge(e1, e2, allowDifferentListStyles, mergeParagraphs) {
- if (!e1 || !e2) {
- return false;
- } else if (e1.tagName === 'LI' && e2.tagName === 'LI') {
- return e2.style.listStyleType === 'none' || containsOnlyAList(e2);
- } else if (isList(e1)) {
- return (e1.tagName === e2.tagName && (allowDifferentListStyles || e1.style.listStyleType === e2.style.listStyleType)) || isListForIndent(e2);
- } else return mergeParagraphs && e1.tagName === 'P' && e2.tagName === 'P';
- }
-
- function isListForIndent(e) {
- var firstLI = skipWhitespaceNodesForwards(e.firstChild), lastLI = skipWhitespaceNodesBackwards(e.lastChild);
- return firstLI && lastLI && isList(e) && firstLI === lastLI && (isList(firstLI) || firstLI.style.listStyleType === 'none' || containsOnlyAList(firstLI));
- }
-
- function containsOnlyAList(e) {
- var firstChild = skipWhitespaceNodesForwards(e.firstChild), lastChild = skipWhitespaceNodesBackwards(e.lastChild);
- return firstChild && lastChild && firstChild === lastChild && isList(firstChild);
- }
-
- function merge(e1, e2, masterElement) {
- var lastOriginal = skipWhitespaceNodesBackwards(e1.lastChild), firstNew = skipWhitespaceNodesForwards(e2.firstChild);
- if (e1.tagName === 'P') {
- e1.appendChild(e1.ownerDocument.createElement('br'));
- }
- while (e2.firstChild) {
- e1.appendChild(e2.firstChild);
- }
- if (masterElement) {
- e1.style.listStyleType = masterElement.style.listStyleType;
- }
- e2.parentNode.removeChild(e2);
- attemptMerge(lastOriginal, firstNew, false);
- return e1;
- }
-
- function findItemToOperateOn(e, dom) {
- var item;
- if (!dom.is(e, 'li,ol,ul')) {
- item = dom.getParent(e, 'li');
- if (item) {
- e = item;
- }
- }
- return e;
- }
-
- tinymce.create('tinymce.plugins.Lists', {
- init: function(ed) {
- var LIST_TABBING = 'TABBING';
- var LIST_EMPTY_ITEM = 'EMPTY';
- var LIST_ESCAPE = 'ESCAPE';
- var LIST_PARAGRAPH = 'PARAGRAPH';
- var LIST_UNKNOWN = 'UNKNOWN';
- var state = LIST_UNKNOWN;
-
- function isTabInList(e) {
- // Don't indent on Ctrl+Tab or Alt+Tab
- return e.keyCode === tinymce.VK.TAB && !(e.altKey || e.ctrlKey) &&
- (ed.queryCommandState('InsertUnorderedList') || ed.queryCommandState('InsertOrderedList'));
- }
-
- function isOnLastListItem() {
- var li = getLi();
- var grandParent = li.parentNode.parentNode;
- var isLastItem = li.parentNode.lastChild === li;
- return isLastItem && !isNestedList(grandParent) && isEmptyListItem(li);
- }
-
- function isNestedList(grandParent) {
- if (isList(grandParent)) {
- return grandParent.parentNode && grandParent.parentNode.tagName === 'LI';
- } else {
- return grandParent.tagName === 'LI';
- }
- }
-
- function isInEmptyListItem() {
- return ed.selection.isCollapsed() && isEmptyListItem(getLi());
- }
-
- function getLi() {
- var n = ed.selection.getStart();
- // Get start will return BR if the LI only contains a BR or an empty element as we use these to fix caret position
- return ((n.tagName == 'BR' || n.tagName == '') && n.parentNode.tagName == 'LI') ? n.parentNode : n;
- }
-
- function isEmptyListItem(li) {
- var numChildren = li.childNodes.length;
- if (li.tagName === 'LI') {
- return numChildren == 0 ? true : numChildren == 1 && (li.firstChild.tagName == '' || li.firstChild.tagName == 'BR' || isEmptyIE9Li(li));
- }
- return false;
- }
-
- function isEmptyIE9Li(li) {
- // only consider this to be last item if there is no list item content or that content is nbsp or space since IE9 creates these
- var lis = tinymce.grep(li.parentNode.childNodes, function(n) {return n.tagName == 'LI'});
- var isLastLi = li == lis[lis.length - 1];
- var child = li.firstChild;
- return tinymce.isIE9 && isLastLi && (child.nodeValue == String.fromCharCode(160) || child.nodeValue == String.fromCharCode(32));
- }
-
- function isEnter(e) {
- return e.keyCode === tinymce.VK.ENTER;
- }
-
- function isEnterWithoutShift(e) {
- return isEnter(e) && !e.shiftKey;
- }
-
- function getListKeyState(e) {
- if (isTabInList(e)) {
- return LIST_TABBING;
- } else if (isEnterWithoutShift(e) && isOnLastListItem()) {
- // Returns LIST_UNKNOWN since breaking out of lists is handled by the EnterKey.js logic now
- //return LIST_ESCAPE;
- return LIST_UNKNOWN;
- } else if (isEnterWithoutShift(e) && isInEmptyListItem()) {
- return LIST_EMPTY_ITEM;
- } else {
- return LIST_UNKNOWN;
- }
- }
-
- function cancelDefaultEvents(ed, e) {
- // list escape is done manually using outdent as it does not create paragraphs correctly in td's
- if (state == LIST_TABBING || state == LIST_EMPTY_ITEM || tinymce.isGecko && state == LIST_ESCAPE) {
- Event.cancel(e);
- }
- }
-
- function isCursorAtEndOfContainer() {
- var range = ed.selection.getRng(true);
- var startContainer = range.startContainer;
- if (startContainer.nodeType == 3) {
- var value = startContainer.nodeValue;
- if (tinymce.isIE9 && value.length > 1 && value.charCodeAt(value.length-1) == 32) {
- // IE9 places a space on the end of the text in some cases so ignore last char
- return (range.endOffset == value.length-1);
- } else {
- return (range.endOffset == value.length);
- }
- } else if (startContainer.nodeType == 1) {
- return range.endOffset == startContainer.childNodes.length;
- }
- return false;
- }
-
- /*
- If we are at the end of a list item surrounded with an element, pressing enter should create a
- new list item instead without splitting the element e.g. don't want to create new P or H1 tag
- */
- function isEndOfListItem() {
- var node = ed.selection.getNode();
- var validElements = 'h1,h2,h3,h4,h5,h6,p,div';
- var isLastParagraphOfLi = ed.dom.is(node, validElements) && node.parentNode.tagName === 'LI' && node.parentNode.lastChild === node;
- return ed.selection.isCollapsed() && isLastParagraphOfLi && isCursorAtEndOfContainer();
- }
-
- // Creates a new list item after the current selection's list item parent
- function createNewLi(ed, e) {
- if (isEnterWithoutShift(e) && isEndOfListItem()) {
- var node = ed.selection.getNode();
- var li = ed.dom.create("li");
- var parentLi = ed.dom.getParent(node, 'li');
- ed.dom.insertAfter(li, parentLi);
-
- // Move caret to new list element.
- if (tinymce.isIE6 || tinymce.isIE7 || tinyMCE.isIE8) {
- // Removed this line since it would create an odd <&nbsp;> tag and placing the caret inside an empty LI is handled and should be handled by the selection logic
- //li.appendChild(ed.dom.create("&nbsp;")); // IE needs an element within the bullet point
- ed.selection.setCursorLocation(li, 1);
- } else {
- ed.selection.setCursorLocation(li, 0);
- }
- e.preventDefault();
- }
- }
-
- function imageJoiningListItem(ed, e) {
- var prevSibling;
-
- if (!tinymce.isGecko)
- return;
-
- var n = ed.selection.getStart();
- if (e.keyCode != tinymce.VK.BACKSPACE || n.tagName !== 'IMG')
- return;
-
- function lastLI(node) {
- var child = node.firstChild;
- var li = null;
- do {
- if (!child)
- break;
-
- if (child.tagName === 'LI')
- li = child;
- } while (child = child.nextSibling);
-
- return li;
- }
-
- function addChildren(parentNode, destination) {
- while (parentNode.childNodes.length > 0)
- destination.appendChild(parentNode.childNodes[0]);
- }
-
- // Check if there is a previous sibling
- prevSibling = n.parentNode.previousSibling;
- if (!prevSibling)
- return;
-
- var ul;
- if (prevSibling.tagName === 'UL' || prevSibling.tagName === 'OL')
- ul = prevSibling;
- else if (prevSibling.previousSibling && (prevSibling.previousSibling.tagName === 'UL' || prevSibling.previousSibling.tagName === 'OL'))
- ul = prevSibling.previousSibling;
- else
- return;
-
- var li = lastLI(ul);
-
- // move the caret to the end of the list item
- var rng = ed.dom.createRng();
- rng.setStart(li, 1);
- rng.setEnd(li, 1);
- ed.selection.setRng(rng);
- ed.selection.collapse(true);
-
- // save a bookmark at the end of the list item
- var bookmark = ed.selection.getBookmark();
-
- // copy the image an its text to the list item
- var clone = n.parentNode.cloneNode(true);
- if (clone.tagName === 'P' || clone.tagName === 'DIV')
- addChildren(clone, li);
- else
- li.appendChild(clone);
-
- // remove the old copy of the image
- n.parentNode.parentNode.removeChild(n.parentNode);
-
- // move the caret where we saved the bookmark
- ed.selection.moveToBookmark(bookmark);
- }
-
- // fix the cursor position to ensure it is correct in IE
- function setCursorPositionToOriginalLi(li) {
- var list = ed.dom.getParent(li, 'ol,ul');
- if (list != null) {
- var lastLi = list.lastChild;
- // Removed this line since IE9 would report an DOM character error and placing the caret inside an empty LI is handled and should be handled by the selection logic
- //lastLi.appendChild(ed.getDoc().createElement(''));
- ed.selection.setCursorLocation(lastLi, 0);
- }
- }
-
- this.ed = ed;
- ed.addCommand('Indent', this.indent, this);
- ed.addCommand('Outdent', this.outdent, this);
- ed.addCommand('InsertUnorderedList', function() {
- this.applyList('UL', 'OL');
- }, this);
- ed.addCommand('InsertOrderedList', function() {
- this.applyList('OL', 'UL');
- }, this);
-
- ed.onInit.add(function() {
- ed.editorCommands.addCommands({
- 'outdent': function() {
- var sel = ed.selection, dom = ed.dom;
-
- function hasStyleIndent(n) {
- n = dom.getParent(n, dom.isBlock);
- return n && (parseInt(ed.dom.getStyle(n, 'margin-left') || 0, 10) + parseInt(ed.dom.getStyle(n, 'padding-left') || 0, 10)) > 0;
- }
-
- return hasStyleIndent(sel.getStart()) || hasStyleIndent(sel.getEnd()) || ed.queryCommandState('InsertOrderedList') || ed.queryCommandState('InsertUnorderedList');
- }
- }, 'state');
- });
-
- ed.onKeyUp.add(function(ed, e) {
- if (state == LIST_TABBING) {
- ed.execCommand(e.shiftKey ? 'Outdent' : 'Indent', true, null);
- state = LIST_UNKNOWN;
- return Event.cancel(e);
- } else if (state == LIST_EMPTY_ITEM) {
- var li = getLi();
- var shouldOutdent = ed.settings.list_outdent_on_enter === true || e.shiftKey;
- ed.execCommand(shouldOutdent ? 'Outdent' : 'Indent', true, null);
- if (tinymce.isIE) {
- setCursorPositionToOriginalLi(li);
- }
-
- return Event.cancel(e);
- } else if (state == LIST_ESCAPE) {
- if (tinymce.isIE6 || tinymce.isIE7 || tinymce.isIE8) {
- // append a zero sized nbsp so that caret is positioned correctly in IE after escaping and applying formatting.
- // if there is no text then applying formatting for e.g a H1 to the P tag immediately following list after
- // escaping from it will cause the caret to be positioned on the last li instead of staying the in P tag.
- var n = ed.getDoc().createTextNode('\uFEFF');
- ed.selection.getNode().appendChild(n);
- } else if (tinymce.isIE9 || tinymce.isGecko) {
- // IE9 does not escape the list so we use outdent to do this and cancel the default behaviour
- // Gecko does not create a paragraph outdenting inside a TD so default behaviour is cancelled and we outdent ourselves
- ed.execCommand('Outdent');
- return Event.cancel(e);
- }
- }
- });
-
- function fixListItem(parent, reference) {
- // a zero-sized non-breaking space is placed in the empty list item so that the nested list is
- // displayed on the below line instead of next to it
- var n = ed.getDoc().createTextNode('\uFEFF');
- parent.insertBefore(n, reference);
- ed.selection.setCursorLocation(n, 0);
- // repaint to remove rendering artifact. only visible when creating new list
- ed.execCommand('mceRepaint');
- }
-
- function fixIndentedListItemForGecko(ed, e) {
- if (isEnter(e)) {
- var li = getLi();
- if (li) {
- var parent = li.parentNode;
- var grandParent = parent && parent.parentNode;
- if (grandParent && grandParent.nodeName == 'LI' && grandParent.firstChild == parent && li == parent.firstChild) {
- fixListItem(grandParent, parent);
- }
- }
- }
- }
-
- function fixIndentedListItemForIE8(ed, e) {
- if (isEnter(e)) {
- var li = getLi();
- if (ed.dom.select('ul li', li).length === 1) {
- var list = li.firstChild;
- fixListItem(li, list);
- }
- }
- }
-
- function fixDeletingFirstCharOfList(ed, e) {
- function listElements(list, li) {
- var elements = [];
- var walker = new tinymce.dom.TreeWalker(li, list);
- for (var node = walker.current(); node; node = walker.next()) {
- if (ed.dom.is(node, 'ol,ul,li')) {
- elements.push(node);
- }
- }
- return elements;
- }
-
- if (e.keyCode == tinymce.VK.BACKSPACE) {
- var li = getLi();
- if (li) {
- var list = ed.dom.getParent(li, 'ol,ul');
- if (list && list.firstChild === li) {
- var elements = listElements(list, li);
- ed.execCommand("Outdent", false, elements);
- ed.undoManager.add();
- return Event.cancel(e);
- }
- }
- }
- }
-
- function fixDeletingEmptyLiInWebkit(ed, e) {
- var li = getLi();
- if (e.keyCode === tinymce.VK.BACKSPACE && ed.dom.is(li, 'li') && li.parentNode.firstChild!==li) {
- if (ed.dom.select('ul,ol', li).length === 1) {
- var prevLi = li.previousSibling;
- ed.dom.remove(ed.dom.select('br', li));
- ed.dom.remove(li, true);
- var textNodes = tinymce.grep(prevLi.childNodes, function(n){ return n.nodeType === 3 });
- if (textNodes.length === 1) {
- var textNode = textNodes[0]
- ed.selection.setCursorLocation(textNode, textNode.length);
- }
- ed.undoManager.add();
- return Event.cancel(e);
- }
- }
- }
-
- ed.onKeyDown.add(function(_, e) { state = getListKeyState(e); });
- ed.onKeyDown.add(cancelDefaultEvents);
- ed.onKeyDown.add(imageJoiningListItem);
- ed.onKeyDown.add(createNewLi);
-
- if (tinymce.isGecko) {
- ed.onKeyUp.add(fixIndentedListItemForGecko);
- }
- if (tinymce.isIE8) {
- ed.onKeyUp.add(fixIndentedListItemForIE8);
- }
- if (tinymce.isGecko || tinymce.isWebKit) {
- ed.onKeyDown.add(fixDeletingFirstCharOfList);
- }
- if (tinymce.isWebKit) {
- ed.onKeyDown.add(fixDeletingEmptyLiInWebkit);
- }
- },
-
- applyList: function(targetListType, oppositeListType) {
- var t = this, ed = t.ed, dom = ed.dom, applied = [], hasSameType = false, hasOppositeType = false, hasNonList = false, actions,
- selectedBlocks = ed.selection.getSelectedBlocks();
-
- function cleanupBr(e) {
- if (e && e.tagName === 'BR') {
- dom.remove(e);
- }
- }
-
- function makeList(element) {
- var list = dom.create(targetListType), li;
-
- function adjustIndentForNewList(element) {
- // If there's a margin-left, outdent one level to account for the extra list margin.
- if (element.style.marginLeft || element.style.paddingLeft) {
- t.adjustPaddingFunction(false)(element);
- }
- }
-
- if (element.tagName === 'LI') {
- // No change required.
- } else if (element.tagName === 'P' || element.tagName === 'DIV' || element.tagName === 'BODY') {
- processBrs(element, function(startSection, br) {
- doWrapList(startSection, br, element.tagName === 'BODY' ? null : startSection.parentNode);
- li = startSection.parentNode;
- adjustIndentForNewList(li);
- cleanupBr(br);
- });
- if (li) {
- if (li.tagName === 'LI' && (element.tagName === 'P' || selectedBlocks.length > 1)) {
- dom.split(li.parentNode.parentNode, li.parentNode);
- }
- attemptMergeWithAdjacent(li.parentNode, true);
- }
- return;
- } else {
- // Put the list around the element.
- li = dom.create('li');
- dom.insertAfter(li, element);
- li.appendChild(element);
- adjustIndentForNewList(element);
- element = li;
- }
- dom.insertAfter(list, element);
- list.appendChild(element);
- attemptMergeWithAdjacent(list, true);
- applied.push(element);
- }
-
- function doWrapList(start, end, template) {
- var li, n = start, tmp;
- while (!dom.isBlock(start.parentNode) && start.parentNode !== dom.getRoot()) {
- start = dom.split(start.parentNode, start.previousSibling);
- start = start.nextSibling;
- n = start;
- }
- if (template) {
- li = template.cloneNode(true);
- start.parentNode.insertBefore(li, start);
- while (li.firstChild) dom.remove(li.firstChild);
- li = dom.rename(li, 'li');
- } else {
- li = dom.create('li');
- start.parentNode.insertBefore(li, start);
- }
- while (n && n != end) {
- tmp = n.nextSibling;
- li.appendChild(n);
- n = tmp;
- }
- if (li.childNodes.length === 0) {
- li.innerHTML = '<br _mce_bogus="1" />';
- }
- makeList(li);
- }
-
- function processBrs(element, callback) {
- var startSection, previousBR, END_TO_START = 3, START_TO_END = 1,
- breakElements = 'br,ul,ol,p,div,h1,h2,h3,h4,h5,h6,table,blockquote,address,pre,form,center,dl';
-
- function isAnyPartSelected(start, end) {
- var r = dom.createRng(), sel;
- bookmark.keep = true;
- ed.selection.moveToBookmark(bookmark);
- bookmark.keep = false;
- sel = ed.selection.getRng(true);
- if (!end) {
- end = start.parentNode.lastChild;
- }
- r.setStartBefore(start);
- r.setEndAfter(end);
- return !(r.compareBoundaryPoints(END_TO_START, sel) > 0 || r.compareBoundaryPoints(START_TO_END, sel) <= 0);
- }
-
- function nextLeaf(br) {
- if (br.nextSibling)
- return br.nextSibling;
- if (!dom.isBlock(br.parentNode) && br.parentNode !== dom.getRoot())
- return nextLeaf(br.parentNode);
- }
-
- // Split on BRs within the range and process those.
- startSection = element.firstChild;
- // First mark the BRs that have any part of the previous section selected.
- var trailingContentSelected = false;
- each(dom.select(breakElements, element), function(br) {
- if (br.hasAttribute && br.hasAttribute('_mce_bogus')) {
- return true; // Skip the bogus Brs that are put in to appease Firefox and Safari.
- }
- if (isAnyPartSelected(startSection, br)) {
- dom.addClass(br, '_mce_tagged_br');
- startSection = nextLeaf(br);
- }
- });
- trailingContentSelected = (startSection && isAnyPartSelected(startSection, undefined));
- startSection = element.firstChild;
- each(dom.select(breakElements, element), function(br) {
- // Got a section from start to br.
- var tmp = nextLeaf(br);
- if (br.hasAttribute && br.hasAttribute('_mce_bogus')) {
- return true; // Skip the bogus Brs that are put in to appease Firefox and Safari.
- }
- if (dom.hasClass(br, '_mce_tagged_br')) {
- callback(startSection, br, previousBR);
- previousBR = null;
- } else {
- previousBR = br;
- }
- startSection = tmp;
- });
- if (trailingContentSelected) {
- callback(startSection, undefined, previousBR);
- }
- }
-
- function wrapList(element) {
- processBrs(element, function(startSection, br, previousBR) {
- // Need to indent this part
- doWrapList(startSection, br);
- cleanupBr(br);
- cleanupBr(previousBR);
- });
- }
-
- function changeList(element) {
- if (tinymce.inArray(applied, element) !== -1) {
- return;
- }
- if (element.parentNode.tagName === oppositeListType) {
- dom.split(element.parentNode, element);
- makeList(element);
- attemptMergeWithNext(element.parentNode, false);
- }
- applied.push(element);
- }
-
- function convertListItemToParagraph(element) {
- var child, nextChild, mergedElement, splitLast;
- if (tinymce.inArray(applied, element) !== -1) {
- return;
- }
- element = splitNestedLists(element, dom);
- while (dom.is(element.parentNode, 'ol,ul,li')) {
- dom.split(element.parentNode, element);
- }
- // Push the original element we have from the selection, not the renamed one.
- applied.push(element);
- element = dom.rename(element, 'p');
- mergedElement = attemptMergeWithAdjacent(element, false, ed.settings.force_br_newlines);
- if (mergedElement === element) {
- // Now split out any block elements that can't be contained within a P.
- // Manually iterate to ensure we handle modifications correctly (doesn't work with tinymce.each)
- child = element.firstChild;
- while (child) {
- if (dom.isBlock(child)) {
- child = dom.split(child.parentNode, child);
- splitLast = true;
- nextChild = child.nextSibling && child.nextSibling.firstChild;
- } else {
- nextChild = child.nextSibling;
- if (splitLast && child.tagName === 'BR') {
- dom.remove(child);
- }
- splitLast = false;
- }
- child = nextChild;
- }
- }
- }
-
- each(selectedBlocks, function(e) {
- e = findItemToOperateOn(e, dom);
- if (e.tagName === oppositeListType || (e.tagName === 'LI' && e.parentNode.tagName === oppositeListType)) {
- hasOppositeType = true;
- } else if (e.tagName === targetListType || (e.tagName === 'LI' && e.parentNode.tagName === targetListType)) {
- hasSameType = true;
- } else {
- hasNonList = true;
- }
- });
-
- if (hasNonList &&!hasSameType || hasOppositeType || selectedBlocks.length === 0) {
- actions = {
- 'LI': changeList,
- 'H1': makeList,
- 'H2': makeList,
- 'H3': makeList,
- 'H4': makeList,
- 'H5': makeList,
- 'H6': makeList,
- 'P': makeList,
- 'BODY': makeList,
- 'DIV': selectedBlocks.length > 1 ? makeList : wrapList,
- defaultAction: wrapList,
- elements: this.selectedBlocks()
- };
- } else {
- actions = {
- defaultAction: convertListItemToParagraph,
- elements: this.selectedBlocks()
- };
- }
- this.process(actions);
- },
-
- indent: function() {
- var ed = this.ed, dom = ed.dom, indented = [];
-
- function createWrapItem(element) {
- var wrapItem = dom.create('li', { style: 'list-style-type: none;'});
- dom.insertAfter(wrapItem, element);
- return wrapItem;
- }
-
- function createWrapList(element) {
- var wrapItem = createWrapItem(element),
- list = dom.getParent(element, 'ol,ul'),
- listType = list.tagName,
- listStyle = dom.getStyle(list, 'list-style-type'),
- attrs = {},
- wrapList;
- if (listStyle !== '') {
- attrs.style = 'list-style-type: ' + listStyle + ';';
- }
- wrapList = dom.create(listType, attrs);
- wrapItem.appendChild(wrapList);
- return wrapList;
- }
-
- function indentLI(element) {
- if (!hasParentInList(ed, element, indented)) {
- element = splitNestedLists(element, dom);
- var wrapList = createWrapList(element);
- wrapList.appendChild(element);
- attemptMergeWithAdjacent(wrapList.parentNode, false);
- attemptMergeWithAdjacent(wrapList, false);
- indented.push(element);
- }
- }
-
- this.process({
- 'LI': indentLI,
- defaultAction: this.adjustPaddingFunction(true),
- elements: this.selectedBlocks()
- });
-
- },
-
- outdent: function(ui, elements) {
- var t = this, ed = t.ed, dom = ed.dom, outdented = [];
-
- function outdentLI(element) {
- var listElement, targetParent, align;
- if (!hasParentInList(ed, element, outdented)) {
- if (dom.getStyle(element, 'margin-left') !== '' || dom.getStyle(element, 'padding-left') !== '') {
- return t.adjustPaddingFunction(false)(element);
- }
- align = dom.getStyle(element, 'text-align', true);
- if (align === 'center' || align === 'right') {
- dom.setStyle(element, 'text-align', 'left');
- return;
- }
- element = splitNestedLists(element, dom);
- listElement = element.parentNode;
- targetParent = element.parentNode.parentNode;
- if (targetParent.tagName === 'P') {
- dom.split(targetParent, element.parentNode);
- } else {
- dom.split(listElement, element);
- if (targetParent.tagName === 'LI') {
- // Nested list, need to split the LI and go back out to the OL/UL element.
- dom.split(targetParent, element);
- } else if (!dom.is(targetParent, 'ol,ul')) {
- dom.rename(element, 'p');
- }
- }
- outdented.push(element);
- }
- }
-
- var listElements = elements && tinymce.is(elements, 'array') ? elements : this.selectedBlocks();
- this.process({
- 'LI': outdentLI,
- defaultAction: this.adjustPaddingFunction(false),
- elements: listElements
- });
-
- each(outdented, attemptMergeWithAdjacent);
- },
-
- process: function(actions) {
- var t = this, sel = t.ed.selection, dom = t.ed.dom, selectedBlocks, r;
-
- function isEmptyElement(element) {
- var excludeBrsAndBookmarks = tinymce.grep(element.childNodes, function(n) {
- return !(n.nodeName === 'BR' || n.nodeName === 'SPAN' && dom.getAttrib(n, 'data-mce-type') == 'bookmark'
- || n.nodeType == 3 && (n.nodeValue == String.fromCharCode(160) || n.nodeValue == ''));
- });
- return excludeBrsAndBookmarks.length === 0;
- }
-
- function processElement(element) {
- dom.removeClass(element, '_mce_act_on');
- if (!element || element.nodeType !== 1 || selectedBlocks.length > 1 && isEmptyElement(element)) {
- return;
- }
- element = findItemToOperateOn(element, dom);
- var action = actions[element.tagName];
- if (!action) {
- action = actions.defaultAction;
- }
- action(element);
- }
-
- function recurse(element) {
- t.splitSafeEach(element.childNodes, processElement);
- }
-
- function brAtEdgeOfSelection(container, offset) {
- return offset >= 0 && container.hasChildNodes() && offset < container.childNodes.length &&
- container.childNodes[offset].tagName === 'BR';
- }
-
- function isInTable() {
- var n = sel.getNode();
- var p = dom.getParent(n, 'td');
- return p !== null;
- }
-
- selectedBlocks = actions.elements;
-
- r = sel.getRng(true);
- if (!r.collapsed) {
- if (brAtEdgeOfSelection(r.endContainer, r.endOffset - 1)) {
- r.setEnd(r.endContainer, r.endOffset - 1);
- sel.setRng(r);
- }
- if (brAtEdgeOfSelection(r.startContainer, r.startOffset)) {
- r.setStart(r.startContainer, r.startOffset + 1);
- sel.setRng(r);
- }
- }
-
-
- if (tinymce.isIE8) {
- // append a zero sized nbsp so that caret is restored correctly using bookmark
- var s = t.ed.selection.getNode();
- if (s.tagName === 'LI' && !(s.parentNode.lastChild === s)) {
- var i = t.ed.getDoc().createTextNode('\uFEFF');
- s.appendChild(i);
- }
- }
-
- bookmark = sel.getBookmark();
- actions.OL = actions.UL = recurse;
- t.splitSafeEach(selectedBlocks, processElement);
- sel.moveToBookmark(bookmark);
- bookmark = null;
-
- // we avoid doing repaint in a table as this will move the caret out of the table in Firefox 3.6
- if (!isInTable()) {
- // Avoids table or image handles being left behind in Firefox.
- t.ed.execCommand('mceRepaint');
- }
- },
-
- splitSafeEach: function(elements, f) {
- if (tinymce.isGecko && (/Firefox\/[12]\.[0-9]/.test(navigator.userAgent) ||
- /Firefox\/3\.[0-4]/.test(navigator.userAgent))) {
- this.classBasedEach(elements, f);
- } else {
- each(elements, f);
- }
- },
-
- classBasedEach: function(elements, f) {
- var dom = this.ed.dom, nodes, element;
- // Mark nodes
- each(elements, function(element) {
- dom.addClass(element, '_mce_act_on');
- });
- nodes = dom.select('._mce_act_on');
- while (nodes.length > 0) {
- element = nodes.shift();
- dom.removeClass(element, '_mce_act_on');
- f(element);
- nodes = dom.select('._mce_act_on');
- }
- },
-
- adjustPaddingFunction: function(isIndent) {
- var indentAmount, indentUnits, ed = this.ed;
- indentAmount = ed.settings.indentation;
- indentUnits = /[a-z%]+/i.exec(indentAmount);
- indentAmount = parseInt(indentAmount, 10);
- return function(element) {
- var currentIndent, newIndentAmount;
- currentIndent = parseInt(ed.dom.getStyle(element, 'margin-left') || 0, 10) + parseInt(ed.dom.getStyle(element, 'padding-left') || 0, 10);
- if (isIndent) {
- newIndentAmount = currentIndent + indentAmount;
- } else {
- newIndentAmount = currentIndent - indentAmount;
- }
- ed.dom.setStyle(element, 'padding-left', '');
- ed.dom.setStyle(element, 'margin-left', newIndentAmount > 0 ? newIndentAmount + indentUnits : '');
- };
- },
-
- selectedBlocks: function() {
- var ed = this.ed
- var selectedBlocks = ed.selection.getSelectedBlocks();
- return selectedBlocks.length == 0 ? [ ed.dom.getRoot() ] : selectedBlocks;
- },
-
- getInfo: function() {
- return {
- longname : 'Lists',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/lists',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
- tinymce.PluginManager.add("lists", tinymce.plugins.Lists);
-}());
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/css/media.css b/library/tinymce/jscripts/tiny_mce/plugins/media/css/media.css
deleted file mode 100644
index 0c45c7ff6..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/media/css/media.css
+++ /dev/null
@@ -1,17 +0,0 @@
-#id, #name, #hspace, #vspace, #class_name, #align { width: 100px }
-#hspace, #vspace { width: 50px }
-#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode { width: 100px }
-#flash_base, #flash_flashvars, #html5_altsource1, #html5_altsource2, #html5_poster { width: 240px }
-#width, #height { width: 40px }
-#src, #media_type { width: 250px }
-#class { width: 120px }
-#prev { margin: 0; border: 1px solid black; width: 380px; height: 260px; overflow: auto }
-.panel_wrapper div.current { height: 420px; overflow: auto }
-#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options { display: none }
-.mceAddSelectValue { background-color: #DDDDDD }
-#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume { width: 70px }
-#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume { width: 70px }
-#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks { width: 70px }
-#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle { width: 90px }
-#qt_qtsrc { width: 200px }
-iframe {border: 1px solid gray}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js
deleted file mode 100644
index 37b4320bd..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var d=tinymce.explode("id,name,width,height,style,align,class,hspace,vspace,bgcolor,type"),h=tinymce.makeMap(d.join(",")),b=tinymce.html.Node,f,a,g=tinymce.util.JSON,e;f=[["Flash","d27cdb6e-ae6d-11cf-96b8-444553540000","application/x-shockwave-flash","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["ShockWave","166b1bca-3f9c-11cf-8075-444553540000","application/x-director","http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0"],["WindowsMedia","6bf52a52-394a-11d3-b153-00c04f79faa6,22d6f312-b0f6-11d0-94ab-0080c74c7e95,05589fa1-c356-11ce-bf01-00aa0055595a","application/x-mplayer2","http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"],["QuickTime","02bf25d5-8c17-4b23-bc80-d3488abddc6b","video/quicktime","http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"],["RealMedia","cfcdaa03-8be4-11cf-b84b-0020afbbccfa","audio/x-pn-realaudio-plugin","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["Java","8ad9c840-044e-11d1-b3e9-00805f499d93","application/x-java-applet","http://java.sun.com/products/plugin/autodl/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0"],["Silverlight","dfeaf541-f3e1-4c24-acac-99c30715084a","application/x-silverlight-2"],["Iframe"],["Video"],["EmbeddedAudio"],["Audio"]];function c(m){var l,j,k;if(m&&!m.splice){j=[];for(k=0;true;k++){if(m[k]){j[k]=m[k]}else{break}}return j}return m}tinymce.create("tinymce.plugins.MediaPlugin",{init:function(n,j){var r=this,l={},m,p,q,k;function o(i){return i&&i.nodeName==="IMG"&&n.dom.hasClass(i,"mceItemMedia")}r.editor=n;r.url=j;a="";for(m=0;m<f.length;m++){k=f[m][0];q={name:k,clsids:tinymce.explode(f[m][1]||""),mimes:tinymce.explode(f[m][2]||""),codebase:f[m][3]};for(p=0;p<q.clsids.length;p++){l["clsid:"+q.clsids[p]]=q}for(p=0;p<q.mimes.length;p++){l[q.mimes[p]]=q}l["mceItem"+k]=q;l[k.toLowerCase()]=q;a+=(a?"|":"")+k}tinymce.each(n.getParam("media_types","video=mp4,m4v,ogv,webm;silverlight=xap;flash=swf,flv;shockwave=dcr;quicktime=mov,qt,mpg,mpeg;shockwave=dcr;windowsmedia=avi,wmv,wm,asf,asx,wmx,wvx;realmedia=rm,ra,ram;java=jar;audio=mp3,ogg").split(";"),function(v){var s,u,t;v=v.split(/=/);u=tinymce.explode(v[1].toLowerCase());for(s=0;s<u.length;s++){t=l[v[0].toLowerCase()];if(t){l[u[s]]=t}}});a=new RegExp("write("+a+")\\(([^)]+)\\)");r.lookup=l;n.onPreInit.add(function(){n.schema.addValidElements("object[id|style|width|height|classid|codebase|*],param[name|value],embed[id|style|width|height|type|src|*],video[*],audio[*],source[*]");n.parser.addNodeFilter("object,embed,video,audio,script,iframe",function(s){var t=s.length;while(t--){r.objectToImg(s[t])}});n.serializer.addNodeFilter("img",function(s,u,t){var v=s.length,w;while(v--){w=s[v];if((w.attr("class")||"").indexOf("mceItemMedia")!==-1){r.imgToObject(w,t)}}})});n.onInit.add(function(){if(n.theme&&n.theme.onResolveName){n.theme.onResolveName.add(function(i,s){if(s.name==="img"&&n.dom.hasClass(s.node,"mceItemMedia")){s.name="media"}})}if(n&&n.plugins.contextmenu){n.plugins.contextmenu.onContextMenu.add(function(s,t,i){if(i.nodeName==="IMG"&&i.className.indexOf("mceItemMedia")!==-1){t.add({title:"media.edit",icon:"media",cmd:"mceMedia"})}})}});n.addCommand("mceMedia",function(){var s,i;i=n.selection.getNode();if(o(i)){s=n.dom.getAttrib(i,"data-mce-json");if(s){s=g.parse(s);tinymce.each(d,function(t){var u=n.dom.getAttrib(i,t);if(u){s[t]=u}});s.type=r.getType(i.className).name.toLowerCase()}}if(!s){s={type:"flash",video:{sources:[]},params:{}}}n.windowManager.open({file:j+"/media.htm",width:430+parseInt(n.getLang("media.delta_width",0)),height:500+parseInt(n.getLang("media.delta_height",0)),inline:1},{plugin_url:j,data:s})});n.addButton("media",{title:"media.desc",cmd:"mceMedia"});n.onNodeChange.add(function(s,i,t){i.setActive("media",o(t))})},convertUrl:function(k,n){var j=this,m=j.editor,l=m.settings,o=l.url_converter,i=l.url_converter_scope||j;if(!k){return k}if(n){return m.documentBaseURI.toAbsolute(k)}return o.call(i,k,"src","object")},getInfo:function(){return{longname:"Media",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media",version:tinymce.majorVersion+"."+tinymce.minorVersion}},dataToImg:function(m,k){var r=this,o=r.editor,p=o.documentBaseURI,j,q,n,l;m.params.src=r.convertUrl(m.params.src,k);q=m.video.attrs;if(q){q.src=r.convertUrl(q.src,k)}if(q){q.poster=r.convertUrl(q.poster,k)}j=c(m.video.sources);if(j){for(l=0;l<j.length;l++){j[l].src=r.convertUrl(j[l].src,k)}}n=r.editor.dom.create("img",{id:m.id,style:m.style,align:m.align,hspace:m.hspace,vspace:m.vspace,src:r.editor.theme.url+"/img/trans.gif","class":"mceItemMedia mceItem"+r.getType(m.type).name,"data-mce-json":g.serialize(m,"'")});n.width=m.width||(m.type=="audio"?"300":"320");n.height=m.height||(m.type=="audio"?"32":"240");return n},dataToHtml:function(i,j){return this.editor.serializer.serialize(this.dataToImg(i,j),{forced_root_block:"",force_absolute:j})},htmlToData:function(k){var j,i,l;l={type:"flash",video:{sources:[]},params:{}};j=this.editor.parser.parse(k);i=j.getAll("img")[0];if(i){l=g.parse(i.attr("data-mce-json"));l.type=this.getType(i.attr("class")).name.toLowerCase();tinymce.each(d,function(m){var n=i.attr(m);if(n){l[m]=n}})}return l},getType:function(m){var k,j,l;j=tinymce.explode(m," ");for(k=0;k<j.length;k++){l=this.lookup[j[k]];if(l){return l}}},imgToObject:function(z,o){var u=this,p=u.editor,C,H,j,t,I,y,G,w,k,E,s,q,A,D,m,x,l,B,F;function r(i,n){var M,L,N,K,J;J=p.getParam("flash_video_player_url",u.convertUrl(u.url+"/moxieplayer.swf"));if(J){M=p.documentBaseURI;G.params.src=J;if(p.getParam("flash_video_player_absvideourl",true)){i=M.toAbsolute(i||"",true);n=M.toAbsolute(n||"",true)}N="";L=p.getParam("flash_video_player_flashvars",{url:"$url",poster:"$poster"});tinymce.each(L,function(P,O){P=P.replace(/\$url/,i||"");P=P.replace(/\$poster/,n||"");if(P.length>0){N+=(N?"&":"")+O+"="+escape(P)}});if(N.length){G.params.flashvars=N}K=p.getParam("flash_video_player_params",{allowfullscreen:true,allowscriptaccess:true});tinymce.each(K,function(P,O){G.params[O]=""+P})}}G=z.attr("data-mce-json");if(!G){return}G=g.parse(G);q=this.getType(z.attr("class"));B=z.attr("data-mce-style");if(!B){B=z.attr("style");if(B){B=p.dom.serializeStyle(p.dom.parseStyle(B,"img"))}}if(q.name==="Iframe"){x=new b("iframe",1);tinymce.each(d,function(i){var n=z.attr(i);if(i=="class"&&n){n=n.replace(/mceItem.+ ?/g,"")}if(n&&n.length>0){x.attr(i,n)}});for(I in G.params){x.attr(I,G.params[I])}x.attr({style:B,src:G.params.src});z.replace(x);return}if(this.editor.settings.media_use_script){x=new b("script",1).attr("type","text/javascript");y=new b("#text",3);y.value="write"+q.name+"("+g.serialize(tinymce.extend(G.params,{width:z.attr("width"),height:z.attr("height")}))+");";x.append(y);z.replace(x);return}if(q.name==="Video"&&G.video.sources[0]){C=new b("video",1).attr(tinymce.extend({id:z.attr("id"),width:z.attr("width"),height:z.attr("height"),style:B},G.video.attrs));if(G.video.attrs){l=G.video.attrs.poster}k=G.video.sources=c(G.video.sources);for(A=0;A<k.length;A++){if(/\.mp4$/.test(k[A].src)){m=k[A].src}}if(!k[0].type){C.attr("src",k[0].src);k.splice(0,1)}for(A=0;A<k.length;A++){w=new b("source",1).attr(k[A]);w.shortEnded=true;C.append(w)}if(m){r(m,l);q=u.getType("flash")}else{G.params.src=""}}if(q.name==="Audio"&&G.video.sources[0]){F=new b("audio",1).attr(tinymce.extend({id:z.attr("id"),width:z.attr("width"),height:z.attr("height"),style:B},G.video.attrs));if(G.video.attrs){l=G.video.attrs.poster}k=G.video.sources=c(G.video.sources);if(!k[0].type){F.attr("src",k[0].src);k.splice(0,1)}for(A=0;A<k.length;A++){w=new b("source",1).attr(k[A]);w.shortEnded=true;F.append(w)}G.params.src=""}if(q.name==="EmbeddedAudio"){j=new b("embed",1);j.shortEnded=true;j.attr({id:z.attr("id"),width:z.attr("width"),height:z.attr("height"),style:B,type:z.attr("type")});for(I in G.params){j.attr(I,G.params[I])}tinymce.each(d,function(i){if(G[i]&&i!="type"){j.attr(i,G[i])}});G.params.src=""}if(G.params.src){if(/\.flv$/i.test(G.params.src)){r(G.params.src,"")}if(o&&o.force_absolute){G.params.src=p.documentBaseURI.toAbsolute(G.params.src)}H=new b("object",1).attr({id:z.attr("id"),width:z.attr("width"),height:z.attr("height"),style:B});tinymce.each(d,function(i){var n=G[i];if(i=="class"&&n){n=n.replace(/mceItem.+ ?/g,"")}if(n&&i!="type"){H.attr(i,n)}});for(I in G.params){s=new b("param",1);s.shortEnded=true;y=G.params[I];if(I==="src"&&q.name==="WindowsMedia"){I="url"}s.attr({name:I,value:y});H.append(s)}if(this.editor.getParam("media_strict",true)){H.attr({data:G.params.src,type:q.mimes[0]})}else{H.attr({classid:"clsid:"+q.clsids[0],codebase:q.codebase});j=new b("embed",1);j.shortEnded=true;j.attr({id:z.attr("id"),width:z.attr("width"),height:z.attr("height"),style:B,type:q.mimes[0]});for(I in G.params){j.attr(I,G.params[I])}tinymce.each(d,function(i){if(G[i]&&i!="type"){j.attr(i,G[i])}});H.append(j)}if(G.object_html){y=new b("#text",3);y.raw=true;y.value=G.object_html;H.append(y)}if(C){C.append(H)}}if(C){if(G.video_html){y=new b("#text",3);y.raw=true;y.value=G.video_html;C.append(y)}}if(F){if(G.video_html){y=new b("#text",3);y.raw=true;y.value=G.video_html;F.append(y)}}var v=C||F||H||j;if(v){z.replace(v)}else{z.remove()}},objectToImg:function(C){var L,k,F,s,M,N,y,A,x,G,E,t,q,I,B,l,K,o,H=this.lookup,m,z,v=this.editor.settings.url_converter,n=this.editor.settings.url_converter_scope,w,r,D,j;function u(i){return new tinymce.html.Serializer({inner:true,validate:false}).serialize(i)}function J(O,i){return H[(O.attr(i)||"").toLowerCase()]}function p(O){var i=O.replace(/^.*\.([^.]+)$/,"$1");return H[i.toLowerCase()||""]}if(!C.parent){return}if(C.name==="script"){if(C.firstChild){m=a.exec(C.firstChild.value)}if(!m){return}o=m[1];K={video:{},params:g.parse(m[2])};A=K.params.width;x=K.params.height}K=K||{video:{},params:{}};M=new b("img",1);M.attr({src:this.editor.theme.url+"/img/trans.gif"});N=C.name;if(N==="video"||N=="audio"){F=C;L=C.getAll("object")[0];k=C.getAll("embed")[0];A=F.attr("width");x=F.attr("height");y=F.attr("id");K.video={attrs:{},sources:[]};z=K.video.attrs;for(N in F.attributes.map){z[N]=F.attributes.map[N]}B=C.attr("src");if(B){K.video.sources.push({src:v.call(n,B,"src",C.name)})}l=F.getAll("source");for(E=0;E<l.length;E++){B=l[E].remove();K.video.sources.push({src:v.call(n,B.attr("src"),"src","source"),type:B.attr("type"),media:B.attr("media")})}if(z.poster){z.poster=v.call(n,z.poster,"poster",C.name)}}if(C.name==="object"){L=C;k=C.getAll("embed")[0]}if(C.name==="embed"){k=C}if(C.name==="iframe"){s=C;o="Iframe"}if(L){A=A||L.attr("width");x=x||L.attr("height");G=G||L.attr("style");y=y||L.attr("id");w=w||L.attr("hspace");r=r||L.attr("vspace");D=D||L.attr("align");j=j||L.attr("bgcolor");K.name=L.attr("name");I=L.getAll("param");for(E=0;E<I.length;E++){q=I[E];N=q.remove().attr("name");if(!h[N]){K.params[N]=q.attr("value")}}K.params.src=K.params.src||L.attr("data")}if(k){A=A||k.attr("width");x=x||k.attr("height");G=G||k.attr("style");y=y||k.attr("id");w=w||k.attr("hspace");r=r||k.attr("vspace");D=D||k.attr("align");j=j||k.attr("bgcolor");for(N in k.attributes.map){if(!h[N]&&!K.params[N]){K.params[N]=k.attributes.map[N]}}}if(s){A=s.attr("width");x=s.attr("height");G=G||s.attr("style");y=s.attr("id");w=s.attr("hspace");r=s.attr("vspace");D=s.attr("align");j=s.attr("bgcolor");tinymce.each(d,function(i){M.attr(i,s.attr(i))});for(N in s.attributes.map){if(!h[N]&&!K.params[N]){K.params[N]=s.attributes.map[N]}}}if(K.params.movie){K.params.src=K.params.src||K.params.movie;delete K.params.movie}if(K.params.src){K.params.src=v.call(n,K.params.src,"src","object")}if(F){if(C.name==="video"){o=H.video.name}else{if(C.name==="audio"){o=H.audio.name}}}if(L&&!o){o=(J(L,"clsid")||J(L,"classid")||J(L,"type")||{}).name}if(k&&!o){o=(J(k,"type")||p(K.params.src)||{}).name}if(k&&o=="EmbeddedAudio"){K.params.type=k.attr("type")}C.replace(M);if(k){k.remove()}if(L){t=u(L.remove());if(t){K.object_html=t}}if(F){t=u(F.remove());if(t){K.video_html=t}}K.hspace=w;K.vspace=r;K.align=D;K.bgcolor=j;M.attr({id:y,"class":"mceItemMedia mceItem"+(o||"Flash"),style:G,width:A||(C.name=="audio"?"300":"320"),height:x||(C.name=="audio"?"32":"240"),hspace:w,vspace:r,align:D,bgcolor:j,"data-mce-json":g.serialize(K,"'")})}});tinymce.PluginManager.add("media",tinymce.plugins.MediaPlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js
deleted file mode 100644
index ea79db18a..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js
+++ /dev/null
@@ -1,890 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var rootAttributes = tinymce.explode('id,name,width,height,style,align,class,hspace,vspace,bgcolor,type'), excludedAttrs = tinymce.makeMap(rootAttributes.join(',')), Node = tinymce.html.Node,
- mediaTypes, scriptRegExp, JSON = tinymce.util.JSON, mimeTypes;
-
- // Media types supported by this plugin
- mediaTypes = [
- // Type, clsid:s, mime types, codebase
- ["Flash", "d27cdb6e-ae6d-11cf-96b8-444553540000", "application/x-shockwave-flash", "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],
- ["ShockWave", "166b1bca-3f9c-11cf-8075-444553540000", "application/x-director", "http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0"],
- ["WindowsMedia", "6bf52a52-394a-11d3-b153-00c04f79faa6,22d6f312-b0f6-11d0-94ab-0080c74c7e95,05589fa1-c356-11ce-bf01-00aa0055595a", "application/x-mplayer2", "http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"],
- ["QuickTime", "02bf25d5-8c17-4b23-bc80-d3488abddc6b", "video/quicktime", "http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"],
- ["RealMedia", "cfcdaa03-8be4-11cf-b84b-0020afbbccfa", "audio/x-pn-realaudio-plugin", "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],
- ["Java", "8ad9c840-044e-11d1-b3e9-00805f499d93", "application/x-java-applet", "http://java.sun.com/products/plugin/autodl/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0"],
- ["Silverlight", "dfeaf541-f3e1-4c24-acac-99c30715084a", "application/x-silverlight-2"],
- ["Iframe"],
- ["Video"],
- ["EmbeddedAudio"],
- ["Audio"]
- ];
-
- function toArray(obj) {
- var undef, out, i;
-
- if (obj && !obj.splice) {
- out = [];
-
- for (i = 0; true; i++) {
- if (obj[i])
- out[i] = obj[i];
- else
- break;
- }
-
- return out;
- }
-
- return obj;
- };
-
- tinymce.create('tinymce.plugins.MediaPlugin', {
- init : function(ed, url) {
- var self = this, lookup = {}, i, y, item, name;
-
- function isMediaImg(node) {
- return node && node.nodeName === 'IMG' && ed.dom.hasClass(node, 'mceItemMedia');
- };
-
- self.editor = ed;
- self.url = url;
-
- // Parse media types into a lookup table
- scriptRegExp = '';
- for (i = 0; i < mediaTypes.length; i++) {
- name = mediaTypes[i][0];
-
- item = {
- name : name,
- clsids : tinymce.explode(mediaTypes[i][1] || ''),
- mimes : tinymce.explode(mediaTypes[i][2] || ''),
- codebase : mediaTypes[i][3]
- };
-
- for (y = 0; y < item.clsids.length; y++)
- lookup['clsid:' + item.clsids[y]] = item;
-
- for (y = 0; y < item.mimes.length; y++)
- lookup[item.mimes[y]] = item;
-
- lookup['mceItem' + name] = item;
- lookup[name.toLowerCase()] = item;
-
- scriptRegExp += (scriptRegExp ? '|' : '') + name;
- }
-
- // Handle the media_types setting
- tinymce.each(ed.getParam("media_types",
- "video=mp4,m4v,ogv,webm;" +
- "silverlight=xap;" +
- "flash=swf,flv;" +
- "shockwave=dcr;" +
- "quicktime=mov,qt,mpg,mpeg;" +
- "shockwave=dcr;" +
- "windowsmedia=avi,wmv,wm,asf,asx,wmx,wvx;" +
- "realmedia=rm,ra,ram;" +
- "java=jar;" +
- "audio=mp3,ogg"
- ).split(';'), function(item) {
- var i, extensions, type;
-
- item = item.split(/=/);
- extensions = tinymce.explode(item[1].toLowerCase());
- for (i = 0; i < extensions.length; i++) {
- type = lookup[item[0].toLowerCase()];
-
- if (type)
- lookup[extensions[i]] = type;
- }
- });
-
- scriptRegExp = new RegExp('write(' + scriptRegExp + ')\\(([^)]+)\\)');
- self.lookup = lookup;
-
- ed.onPreInit.add(function() {
- // Allow video elements
- ed.schema.addValidElements('object[id|style|width|height|classid|codebase|*],param[name|value],embed[id|style|width|height|type|src|*],video[*],audio[*],source[*]');
-
- // Convert video elements to image placeholder
- ed.parser.addNodeFilter('object,embed,video,audio,script,iframe', function(nodes) {
- var i = nodes.length;
-
- while (i--)
- self.objectToImg(nodes[i]);
- });
-
- // Convert image placeholders to video elements
- ed.serializer.addNodeFilter('img', function(nodes, name, args) {
- var i = nodes.length, node;
-
- while (i--) {
- node = nodes[i];
- if ((node.attr('class') || '').indexOf('mceItemMedia') !== -1)
- self.imgToObject(node, args);
- }
- });
- });
-
- ed.onInit.add(function() {
- // Display "media" instead of "img" in element path
- if (ed.theme && ed.theme.onResolveName) {
- ed.theme.onResolveName.add(function(theme, path_object) {
- if (path_object.name === 'img' && ed.dom.hasClass(path_object.node, 'mceItemMedia'))
- path_object.name = 'media';
- });
- }
-
- // Add contect menu if it's loaded
- if (ed && ed.plugins.contextmenu) {
- ed.plugins.contextmenu.onContextMenu.add(function(plugin, menu, element) {
- if (element.nodeName === 'IMG' && element.className.indexOf('mceItemMedia') !== -1)
- menu.add({title : 'media.edit', icon : 'media', cmd : 'mceMedia'});
- });
- }
- });
-
- // Register commands
- ed.addCommand('mceMedia', function() {
- var data, img;
-
- img = ed.selection.getNode();
- if (isMediaImg(img)) {
- data = ed.dom.getAttrib(img, 'data-mce-json');
- if (data) {
- data = JSON.parse(data);
-
- // Add some extra properties to the data object
- tinymce.each(rootAttributes, function(name) {
- var value = ed.dom.getAttrib(img, name);
-
- if (value)
- data[name] = value;
- });
-
- data.type = self.getType(img.className).name.toLowerCase();
- }
- }
-
- if (!data) {
- data = {
- type : 'flash',
- video: {sources:[]},
- params: {}
- };
- }
-
- ed.windowManager.open({
- file : url + '/media.htm',
- width : 430 + parseInt(ed.getLang('media.delta_width', 0)),
- height : 500 + parseInt(ed.getLang('media.delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url,
- data : data
- });
- });
-
- // Register buttons
- ed.addButton('media', {title : 'media.desc', cmd : 'mceMedia'});
-
- // Update media selection status
- ed.onNodeChange.add(function(ed, cm, node) {
- cm.setActive('media', isMediaImg(node));
- });
- },
-
- convertUrl : function(url, force_absolute) {
- var self = this, editor = self.editor, settings = editor.settings,
- urlConverter = settings.url_converter,
- urlConverterScope = settings.url_converter_scope || self;
-
- if (!url)
- return url;
-
- if (force_absolute)
- return editor.documentBaseURI.toAbsolute(url);
-
- return urlConverter.call(urlConverterScope, url, 'src', 'object');
- },
-
- getInfo : function() {
- return {
- longname : 'Media',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- /**
- * Converts the JSON data object to an img node.
- */
- dataToImg : function(data, force_absolute) {
- var self = this, editor = self.editor, baseUri = editor.documentBaseURI, sources, attrs, img, i;
-
- data.params.src = self.convertUrl(data.params.src, force_absolute);
-
- attrs = data.video.attrs;
- if (attrs)
- attrs.src = self.convertUrl(attrs.src, force_absolute);
-
- if (attrs)
- attrs.poster = self.convertUrl(attrs.poster, force_absolute);
-
- sources = toArray(data.video.sources);
- if (sources) {
- for (i = 0; i < sources.length; i++)
- sources[i].src = self.convertUrl(sources[i].src, force_absolute);
- }
-
- img = self.editor.dom.create('img', {
- id : data.id,
- style : data.style,
- align : data.align,
- hspace : data.hspace,
- vspace : data.vspace,
- src : self.editor.theme.url + '/img/trans.gif',
- 'class' : 'mceItemMedia mceItem' + self.getType(data.type).name,
- 'data-mce-json' : JSON.serialize(data, "'")
- });
-
- img.width = data.width || (data.type == 'audio' ? "300" : "320");
- img.height = data.height || (data.type == 'audio' ? "32" : "240");
-
- return img;
- },
-
- /**
- * Converts the JSON data object to a HTML string.
- */
- dataToHtml : function(data, force_absolute) {
- return this.editor.serializer.serialize(this.dataToImg(data, force_absolute), {forced_root_block : '', force_absolute : force_absolute});
- },
-
- /**
- * Converts the JSON data object to a HTML string.
- */
- htmlToData : function(html) {
- var fragment, img, data;
-
- data = {
- type : 'flash',
- video: {sources:[]},
- params: {}
- };
-
- fragment = this.editor.parser.parse(html);
- img = fragment.getAll('img')[0];
-
- if (img) {
- data = JSON.parse(img.attr('data-mce-json'));
- data.type = this.getType(img.attr('class')).name.toLowerCase();
-
- // Add some extra properties to the data object
- tinymce.each(rootAttributes, function(name) {
- var value = img.attr(name);
-
- if (value)
- data[name] = value;
- });
- }
-
- return data;
- },
-
- /**
- * Get type item by extension, class, clsid or mime type.
- *
- * @method getType
- * @param {String} value Value to get type item by.
- * @return {Object} Type item object or undefined.
- */
- getType : function(value) {
- var i, values, typeItem;
-
- // Find type by checking the classes
- values = tinymce.explode(value, ' ');
- for (i = 0; i < values.length; i++) {
- typeItem = this.lookup[values[i]];
-
- if (typeItem)
- return typeItem;
- }
- },
-
- /**
- * Converts a tinymce.html.Node image element to video/object/embed.
- */
- imgToObject : function(node, args) {
- var self = this, editor = self.editor, video, object, embed, iframe, name, value, data,
- source, sources, params, param, typeItem, i, item, mp4Source, replacement,
- posterSrc, style, audio;
-
- // Adds the flash player
- function addPlayer(video_src, poster_src) {
- var baseUri, flashVars, flashVarsOutput, params, flashPlayer;
-
- flashPlayer = editor.getParam('flash_video_player_url', self.convertUrl(self.url + '/moxieplayer.swf'));
- if (flashPlayer) {
- baseUri = editor.documentBaseURI;
- data.params.src = flashPlayer;
-
- // Convert the movie url to absolute urls
- if (editor.getParam('flash_video_player_absvideourl', true)) {
- video_src = baseUri.toAbsolute(video_src || '', true);
- poster_src = baseUri.toAbsolute(poster_src || '', true);
- }
-
- // Generate flash vars
- flashVarsOutput = '';
- flashVars = editor.getParam('flash_video_player_flashvars', {url : '$url', poster : '$poster'});
- tinymce.each(flashVars, function(value, name) {
- // Replace $url and $poster variables in flashvars value
- value = value.replace(/\$url/, video_src || '');
- value = value.replace(/\$poster/, poster_src || '');
-
- if (value.length > 0)
- flashVarsOutput += (flashVarsOutput ? '&' : '') + name + '=' + escape(value);
- });
-
- if (flashVarsOutput.length)
- data.params.flashvars = flashVarsOutput;
-
- params = editor.getParam('flash_video_player_params', {
- allowfullscreen: true,
- allowscriptaccess: true
- });
-
- tinymce.each(params, function(value, name) {
- data.params[name] = "" + value;
- });
- }
- };
-
- data = node.attr('data-mce-json');
- if (!data)
- return;
-
- data = JSON.parse(data);
- typeItem = this.getType(node.attr('class'));
-
- style = node.attr('data-mce-style')
- if (!style) {
- style = node.attr('style');
-
- if (style)
- style = editor.dom.serializeStyle(editor.dom.parseStyle(style, 'img'));
- }
-
- // Handle iframe
- if (typeItem.name === 'Iframe') {
- replacement = new Node('iframe', 1);
-
- tinymce.each(rootAttributes, function(name) {
- var value = node.attr(name);
-
- if (name == 'class' && value)
- value = value.replace(/mceItem.+ ?/g, '');
-
- if (value && value.length > 0)
- replacement.attr(name, value);
- });
-
- for (name in data.params)
- replacement.attr(name, data.params[name]);
-
- replacement.attr({
- style: style,
- src: data.params.src
- });
-
- node.replace(replacement);
-
- return;
- }
-
- // Handle scripts
- if (this.editor.settings.media_use_script) {
- replacement = new Node('script', 1).attr('type', 'text/javascript');
-
- value = new Node('#text', 3);
- value.value = 'write' + typeItem.name + '(' + JSON.serialize(tinymce.extend(data.params, {
- width: node.attr('width'),
- height: node.attr('height')
- })) + ');';
-
- replacement.append(value);
- node.replace(replacement);
-
- return;
- }
-
- // Add HTML5 video element
- if (typeItem.name === 'Video' && data.video.sources[0]) {
- // Create new object element
- video = new Node('video', 1).attr(tinymce.extend({
- id : node.attr('id'),
- width: node.attr('width'),
- height: node.attr('height'),
- style : style
- }, data.video.attrs));
-
- // Get poster source and use that for flash fallback
- if (data.video.attrs)
- posterSrc = data.video.attrs.poster;
-
- sources = data.video.sources = toArray(data.video.sources);
- for (i = 0; i < sources.length; i++) {
- if (/\.mp4$/.test(sources[i].src))
- mp4Source = sources[i].src;
- }
-
- if (!sources[0].type) {
- video.attr('src', sources[0].src);
- sources.splice(0, 1);
- }
-
- for (i = 0; i < sources.length; i++) {
- source = new Node('source', 1).attr(sources[i]);
- source.shortEnded = true;
- video.append(source);
- }
-
- // Create flash fallback for video if we have a mp4 source
- if (mp4Source) {
- addPlayer(mp4Source, posterSrc);
- typeItem = self.getType('flash');
- } else
- data.params.src = '';
- }
-
- // Add HTML5 audio element
- if (typeItem.name === 'Audio' && data.video.sources[0]) {
- // Create new object element
- audio = new Node('audio', 1).attr(tinymce.extend({
- id : node.attr('id'),
- width: node.attr('width'),
- height: node.attr('height'),
- style : style
- }, data.video.attrs));
-
- // Get poster source and use that for flash fallback
- if (data.video.attrs)
- posterSrc = data.video.attrs.poster;
-
- sources = data.video.sources = toArray(data.video.sources);
- if (!sources[0].type) {
- audio.attr('src', sources[0].src);
- sources.splice(0, 1);
- }
-
- for (i = 0; i < sources.length; i++) {
- source = new Node('source', 1).attr(sources[i]);
- source.shortEnded = true;
- audio.append(source);
- }
-
- data.params.src = '';
- }
-
- if (typeItem.name === 'EmbeddedAudio') {
- embed = new Node('embed', 1);
- embed.shortEnded = true;
- embed.attr({
- id: node.attr('id'),
- width: node.attr('width'),
- height: node.attr('height'),
- style : style,
- type: node.attr('type')
- });
-
- for (name in data.params)
- embed.attr(name, data.params[name]);
-
- tinymce.each(rootAttributes, function(name) {
- if (data[name] && name != 'type')
- embed.attr(name, data[name]);
- });
-
- data.params.src = '';
- }
-
- // Do we have a params src then we can generate object
- if (data.params.src) {
- // Is flv movie add player for it
- if (/\.flv$/i.test(data.params.src))
- addPlayer(data.params.src, '');
-
- if (args && args.force_absolute)
- data.params.src = editor.documentBaseURI.toAbsolute(data.params.src);
-
- // Create new object element
- object = new Node('object', 1).attr({
- id : node.attr('id'),
- width: node.attr('width'),
- height: node.attr('height'),
- style : style
- });
-
- tinymce.each(rootAttributes, function(name) {
- var value = data[name];
-
- if (name == 'class' && value)
- value = value.replace(/mceItem.+ ?/g, '');
-
- if (value && name != 'type')
- object.attr(name, value);
- });
-
- // Add params
- for (name in data.params) {
- param = new Node('param', 1);
- param.shortEnded = true;
- value = data.params[name];
-
- // Windows media needs to use url instead of src for the media URL
- if (name === 'src' && typeItem.name === 'WindowsMedia')
- name = 'url';
-
- param.attr({name: name, value: value});
- object.append(param);
- }
-
- // Setup add type and classid if strict is disabled
- if (this.editor.getParam('media_strict', true)) {
- object.attr({
- data: data.params.src,
- type: typeItem.mimes[0]
- });
- } else {
- object.attr({
- classid: "clsid:" + typeItem.clsids[0],
- codebase: typeItem.codebase
- });
-
- embed = new Node('embed', 1);
- embed.shortEnded = true;
- embed.attr({
- id: node.attr('id'),
- width: node.attr('width'),
- height: node.attr('height'),
- style : style,
- type: typeItem.mimes[0]
- });
-
- for (name in data.params)
- embed.attr(name, data.params[name]);
-
- tinymce.each(rootAttributes, function(name) {
- if (data[name] && name != 'type')
- embed.attr(name, data[name]);
- });
-
- object.append(embed);
- }
-
- // Insert raw HTML
- if (data.object_html) {
- value = new Node('#text', 3);
- value.raw = true;
- value.value = data.object_html;
- object.append(value);
- }
-
- // Append object to video element if it exists
- if (video)
- video.append(object);
- }
-
- if (video) {
- // Insert raw HTML
- if (data.video_html) {
- value = new Node('#text', 3);
- value.raw = true;
- value.value = data.video_html;
- video.append(value);
- }
- }
-
- if (audio) {
- // Insert raw HTML
- if (data.video_html) {
- value = new Node('#text', 3);
- value.raw = true;
- value.value = data.video_html;
- audio.append(value);
- }
- }
-
- var n = video || audio || object || embed;
- if (n)
- node.replace(n);
- else
- node.remove();
- },
-
- /**
- * Converts a tinymce.html.Node video/object/embed to an img element.
- *
- * The video/object/embed will be converted into an image placeholder with a JSON data attribute like this:
- * <img class="mceItemMedia mceItemFlash" width="100" height="100" data-mce-json="{..}" />
- *
- * The JSON structure will be like this:
- * {'params':{'flashvars':'something','quality':'high','src':'someurl'}, 'video':{'sources':[{src: 'someurl', type: 'video/mp4'}]}}
- */
- objectToImg : function(node) {
- var object, embed, video, iframe, img, name, id, width, height, style, i, html,
- param, params, source, sources, data, type, lookup = this.lookup,
- matches, attrs, urlConverter = this.editor.settings.url_converter,
- urlConverterScope = this.editor.settings.url_converter_scope,
- hspace, vspace, align, bgcolor;
-
- function getInnerHTML(node) {
- return new tinymce.html.Serializer({
- inner: true,
- validate: false
- }).serialize(node);
- };
-
- function lookupAttribute(o, attr) {
- return lookup[(o.attr(attr) || '').toLowerCase()];
- }
-
- function lookupExtension(src) {
- var ext = src.replace(/^.*\.([^.]+)$/, '$1');
- return lookup[ext.toLowerCase() || ''];
- }
-
- // If node isn't in document
- if (!node.parent)
- return;
-
- // Handle media scripts
- if (node.name === 'script') {
- if (node.firstChild)
- matches = scriptRegExp.exec(node.firstChild.value);
-
- if (!matches)
- return;
-
- type = matches[1];
- data = {video : {}, params : JSON.parse(matches[2])};
- width = data.params.width;
- height = data.params.height;
- }
-
- // Setup data objects
- data = data || {
- video : {},
- params : {}
- };
-
- // Setup new image object
- img = new Node('img', 1);
- img.attr({
- src : this.editor.theme.url + '/img/trans.gif'
- });
-
- // Video element
- name = node.name;
- if (name === 'video' || name == 'audio') {
- video = node;
- object = node.getAll('object')[0];
- embed = node.getAll('embed')[0];
- width = video.attr('width');
- height = video.attr('height');
- id = video.attr('id');
- data.video = {attrs : {}, sources : []};
-
- // Get all video attributes
- attrs = data.video.attrs;
- for (name in video.attributes.map)
- attrs[name] = video.attributes.map[name];
-
- source = node.attr('src');
- if (source)
- data.video.sources.push({src : urlConverter.call(urlConverterScope, source, 'src', node.name)});
-
- // Get all sources
- sources = video.getAll("source");
- for (i = 0; i < sources.length; i++) {
- source = sources[i].remove();
-
- data.video.sources.push({
- src: urlConverter.call(urlConverterScope, source.attr('src'), 'src', 'source'),
- type: source.attr('type'),
- media: source.attr('media')
- });
- }
-
- // Convert the poster URL
- if (attrs.poster)
- attrs.poster = urlConverter.call(urlConverterScope, attrs.poster, 'poster', node.name);
- }
-
- // Object element
- if (node.name === 'object') {
- object = node;
- embed = node.getAll('embed')[0];
- }
-
- // Embed element
- if (node.name === 'embed')
- embed = node;
-
- // Iframe element
- if (node.name === 'iframe') {
- iframe = node;
- type = 'Iframe';
- }
-
- if (object) {
- // Get width/height
- width = width || object.attr('width');
- height = height || object.attr('height');
- style = style || object.attr('style');
- id = id || object.attr('id');
- hspace = hspace || object.attr('hspace');
- vspace = vspace || object.attr('vspace');
- align = align || object.attr('align');
- bgcolor = bgcolor || object.attr('bgcolor');
- data.name = object.attr('name');
-
- // Get all object params
- params = object.getAll("param");
- for (i = 0; i < params.length; i++) {
- param = params[i];
- name = param.remove().attr('name');
-
- if (!excludedAttrs[name])
- data.params[name] = param.attr('value');
- }
-
- data.params.src = data.params.src || object.attr('data');
- }
-
- if (embed) {
- // Get width/height
- width = width || embed.attr('width');
- height = height || embed.attr('height');
- style = style || embed.attr('style');
- id = id || embed.attr('id');
- hspace = hspace || embed.attr('hspace');
- vspace = vspace || embed.attr('vspace');
- align = align || embed.attr('align');
- bgcolor = bgcolor || embed.attr('bgcolor');
-
- // Get all embed attributes
- for (name in embed.attributes.map) {
- if (!excludedAttrs[name] && !data.params[name])
- data.params[name] = embed.attributes.map[name];
- }
- }
-
- if (iframe) {
- // Get width/height
- width = iframe.attr('width');
- height = iframe.attr('height');
- style = style || iframe.attr('style');
- id = iframe.attr('id');
- hspace = iframe.attr('hspace');
- vspace = iframe.attr('vspace');
- align = iframe.attr('align');
- bgcolor = iframe.attr('bgcolor');
-
- tinymce.each(rootAttributes, function(name) {
- img.attr(name, iframe.attr(name));
- });
-
- // Get all iframe attributes
- for (name in iframe.attributes.map) {
- if (!excludedAttrs[name] && !data.params[name])
- data.params[name] = iframe.attributes.map[name];
- }
- }
-
- // Use src not movie
- if (data.params.movie) {
- data.params.src = data.params.src || data.params.movie;
- delete data.params.movie;
- }
-
- // Convert the URL to relative/absolute depending on configuration
- if (data.params.src)
- data.params.src = urlConverter.call(urlConverterScope, data.params.src, 'src', 'object');
-
- if (video) {
- if (node.name === 'video')
- type = lookup.video.name;
- else if (node.name === 'audio')
- type = lookup.audio.name;
- }
-
- if (object && !type)
- type = (lookupAttribute(object, 'clsid') || lookupAttribute(object, 'classid') || lookupAttribute(object, 'type') || {}).name;
-
- if (embed && !type)
- type = (lookupAttribute(embed, 'type') || lookupExtension(data.params.src) || {}).name;
-
- // for embedded audio we preserve the original specified type
- if (embed && type == 'EmbeddedAudio') {
- data.params.type = embed.attr('type');
- }
-
- // Replace the video/object/embed element with a placeholder image containing the data
- node.replace(img);
-
- // Remove embed
- if (embed)
- embed.remove();
-
- // Serialize the inner HTML of the object element
- if (object) {
- html = getInnerHTML(object.remove());
-
- if (html)
- data.object_html = html;
- }
-
- // Serialize the inner HTML of the video element
- if (video) {
- html = getInnerHTML(video.remove());
-
- if (html)
- data.video_html = html;
- }
-
- data.hspace = hspace;
- data.vspace = vspace;
- data.align = align;
- data.bgcolor = bgcolor;
-
- // Set width/height of placeholder
- img.attr({
- id : id,
- 'class' : 'mceItemMedia mceItem' + (type || 'Flash'),
- style : style,
- width : width || (node.name == 'audio' ? "300" : "320"),
- height : height || (node.name == 'audio' ? "32" : "240"),
- hspace : hspace,
- vspace : vspace,
- align : align,
- bgcolor : bgcolor,
- "data-mce-json" : JSON.serialize(data, "'")
- });
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('media', tinymce.plugins.MediaPlugin);
-})();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js b/library/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js
deleted file mode 100644
index f8dc81052..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.
- */
-
-function writeFlash(p) {
- writeEmbed(
- 'D27CDB6E-AE6D-11cf-96B8-444553540000',
- 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
- 'application/x-shockwave-flash',
- p
- );
-}
-
-function writeShockWave(p) {
- writeEmbed(
- '166B1BCA-3F9C-11CF-8075-444553540000',
- 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
- 'application/x-director',
- p
- );
-}
-
-function writeQuickTime(p) {
- writeEmbed(
- '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
- 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
- 'video/quicktime',
- p
- );
-}
-
-function writeRealMedia(p) {
- writeEmbed(
- 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
- 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
- 'audio/x-pn-realaudio-plugin',
- p
- );
-}
-
-function writeWindowsMedia(p) {
- p.url = p.src;
- writeEmbed(
- '6BF52A52-394A-11D3-B153-00C04F79FAA6',
- 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
- 'application/x-mplayer2',
- p
- );
-}
-
-function writeEmbed(cls, cb, mt, p) {
- var h = '', n;
-
- h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
- h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
- h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
- h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
- h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
- h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
- h += '>';
-
- for (n in p)
- h += '<param name="' + n + '" value="' + p[n] + '">';
-
- h += '<embed type="' + mt + '"';
-
- for (n in p)
- h += n + '="' + p[n] + '" ';
-
- h += '></embed></object>';
-
- document.write(h);
-}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/js/media.js b/library/tinymce/jscripts/tiny_mce/plugins/media/js/media.js
deleted file mode 100644
index 733c5f6c2..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/media/js/media.js
+++ /dev/null
@@ -1,470 +0,0 @@
-(function() {
- var url;
-
- if (url = tinyMCEPopup.getParam("media_external_list_url"))
- document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
-
- function get(id) {
- return document.getElementById(id);
- }
-
- function clone(obj) {
- var i, len, copy, attr;
-
- if (null == obj || "object" != typeof obj)
- return obj;
-
- // Handle Array
- if ('length' in obj) {
- copy = [];
-
- for (i = 0, len = obj.length; i < len; ++i) {
- copy[i] = clone(obj[i]);
- }
-
- return copy;
- }
-
- // Handle Object
- copy = {};
- for (attr in obj) {
- if (obj.hasOwnProperty(attr))
- copy[attr] = clone(obj[attr]);
- }
-
- return copy;
- }
-
- function getVal(id) {
- var elm = get(id);
-
- if (elm.nodeName == "SELECT")
- return elm.options[elm.selectedIndex].value;
-
- if (elm.type == "checkbox")
- return elm.checked;
-
- return elm.value;
- }
-
- function setVal(id, value, name) {
- if (typeof(value) != 'undefined' && value != null) {
- var elm = get(id);
-
- if (elm.nodeName == "SELECT")
- selectByValue(document.forms[0], id, value);
- else if (elm.type == "checkbox") {
- if (typeof(value) == 'string') {
- value = value.toLowerCase();
- value = (!name && value === 'true') || (name && value === name.toLowerCase());
- }
- elm.checked = !!value;
- } else
- elm.value = value;
- }
- }
-
- window.Media = {
- init : function() {
- var html, editor, self = this;
-
- self.editor = editor = tinyMCEPopup.editor;
-
- // Setup file browsers and color pickers
- get('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media');
- get('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','quicktime_qtsrc','media','media');
- get('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
- get('video_altsource1_filebrowser').innerHTML = getBrowserHTML('video_filebrowser_altsource1','video_altsource1','media','media');
- get('video_altsource2_filebrowser').innerHTML = getBrowserHTML('video_filebrowser_altsource2','video_altsource2','media','media');
- get('audio_altsource1_filebrowser').innerHTML = getBrowserHTML('audio_filebrowser_altsource1','audio_altsource1','media','media');
- get('audio_altsource2_filebrowser').innerHTML = getBrowserHTML('audio_filebrowser_altsource2','audio_altsource2','media','media');
- get('video_poster_filebrowser').innerHTML = getBrowserHTML('filebrowser_poster','video_poster','media','image');
-
- html = self.getMediaListHTML('medialist', 'src', 'media', 'media');
- if (html == "")
- get("linklistrow").style.display = 'none';
- else
- get("linklistcontainer").innerHTML = html;
-
- if (isVisible('filebrowser'))
- get('src').style.width = '230px';
-
- if (isVisible('video_filebrowser_altsource1'))
- get('video_altsource1').style.width = '220px';
-
- if (isVisible('video_filebrowser_altsource2'))
- get('video_altsource2').style.width = '220px';
-
- if (isVisible('audio_filebrowser_altsource1'))
- get('audio_altsource1').style.width = '220px';
-
- if (isVisible('audio_filebrowser_altsource2'))
- get('audio_altsource2').style.width = '220px';
-
- if (isVisible('filebrowser_poster'))
- get('video_poster').style.width = '220px';
-
- editor.dom.setOuterHTML(get('media_type'), self.getMediaTypeHTML(editor));
-
- self.setDefaultDialogSettings(editor);
- self.data = clone(tinyMCEPopup.getWindowArg('data'));
- self.dataToForm();
- self.preview();
-
- updateColor('bgcolor_pick', 'bgcolor');
- },
-
- insert : function() {
- var editor = tinyMCEPopup.editor;
-
- this.formToData();
- editor.execCommand('mceRepaint');
- tinyMCEPopup.restoreSelection();
- editor.selection.setNode(editor.plugins.media.dataToImg(this.data));
- tinyMCEPopup.close();
- },
-
- preview : function() {
- get('prev').innerHTML = this.editor.plugins.media.dataToHtml(this.data, true);
- },
-
- moveStates : function(to_form, field) {
- var data = this.data, editor = this.editor,
- mediaPlugin = editor.plugins.media, ext, src, typeInfo, defaultStates, src;
-
- defaultStates = {
- // QuickTime
- quicktime_autoplay : true,
- quicktime_controller : true,
-
- // Flash
- flash_play : true,
- flash_loop : true,
- flash_menu : true,
-
- // WindowsMedia
- windowsmedia_autostart : true,
- windowsmedia_enablecontextmenu : true,
- windowsmedia_invokeurls : true,
-
- // RealMedia
- realmedia_autogotourl : true,
- realmedia_imagestatus : true
- };
-
- function parseQueryParams(str) {
- var out = {};
-
- if (str) {
- tinymce.each(str.split('&'), function(item) {
- var parts = item.split('=');
-
- out[unescape(parts[0])] = unescape(parts[1]);
- });
- }
-
- return out;
- };
-
- function setOptions(type, names) {
- var i, name, formItemName, value, list;
-
- if (type == data.type || type == 'global') {
- names = tinymce.explode(names);
- for (i = 0; i < names.length; i++) {
- name = names[i];
- formItemName = type == 'global' ? name : type + '_' + name;
-
- if (type == 'global')
- list = data;
- else if (type == 'video' || type == 'audio') {
- list = data.video.attrs;
-
- if (!list && !to_form)
- data.video.attrs = list = {};
- } else
- list = data.params;
-
- if (list) {
- if (to_form) {
- setVal(formItemName, list[name], type == 'video' || type == 'audio' ? name : '');
- } else {
- delete list[name];
-
- value = getVal(formItemName);
- if ((type == 'video' || type == 'audio') && value === true)
- value = name;
-
- if (defaultStates[formItemName]) {
- if (value !== defaultStates[formItemName]) {
- value = "" + value;
- list[name] = value;
- }
- } else if (value) {
- value = "" + value;
- list[name] = value;
- }
- }
- }
- }
- }
- }
-
- if (!to_form) {
- data.type = get('media_type').options[get('media_type').selectedIndex].value;
- data.width = getVal('width');
- data.height = getVal('height');
-
- // Switch type based on extension
- src = getVal('src');
- if (field == 'src') {
- ext = src.replace(/^.*\.([^.]+)$/, '$1');
- if (typeInfo = mediaPlugin.getType(ext))
- data.type = typeInfo.name.toLowerCase();
-
- setVal('media_type', data.type);
- }
-
- if (data.type == "video" || data.type == "audio") {
- if (!data.video.sources)
- data.video.sources = [];
-
- data.video.sources[0] = {src: getVal('src')};
- }
- }
-
- // Hide all fieldsets and show the one active
- get('video_options').style.display = 'none';
- get('audio_options').style.display = 'none';
- get('flash_options').style.display = 'none';
- get('quicktime_options').style.display = 'none';
- get('shockwave_options').style.display = 'none';
- get('windowsmedia_options').style.display = 'none';
- get('realmedia_options').style.display = 'none';
- get('embeddedaudio_options').style.display = 'none';
-
- if (get(data.type + '_options'))
- get(data.type + '_options').style.display = 'block';
-
- setVal('media_type', data.type);
-
- setOptions('flash', 'play,loop,menu,swliveconnect,quality,scale,salign,wmode,base,flashvars');
- setOptions('quicktime', 'loop,autoplay,cache,controller,correction,enablejavascript,kioskmode,autohref,playeveryframe,targetcache,scale,starttime,endtime,target,qtsrcchokespeed,volume,qtsrc');
- setOptions('shockwave', 'sound,progress,autostart,swliveconnect,swvolume,swstretchstyle,swstretchhalign,swstretchvalign');
- setOptions('windowsmedia', 'autostart,enabled,enablecontextmenu,fullscreen,invokeurls,mute,stretchtofit,windowlessvideo,balance,baseurl,captioningid,currentmarker,currentposition,defaultframe,playcount,rate,uimode,volume');
- setOptions('realmedia', 'autostart,loop,autogotourl,center,imagestatus,maintainaspect,nojava,prefetch,shuffle,console,controls,numloop,scriptcallbacks');
- setOptions('video', 'poster,autoplay,loop,muted,preload,controls');
- setOptions('audio', 'autoplay,loop,preload,controls');
- setOptions('embeddedaudio', 'autoplay,loop,controls');
- setOptions('global', 'id,name,vspace,hspace,bgcolor,align,width,height');
-
- if (to_form) {
- if (data.type == 'video') {
- if (data.video.sources[0])
- setVal('src', data.video.sources[0].src);
-
- src = data.video.sources[1];
- if (src)
- setVal('video_altsource1', src.src);
-
- src = data.video.sources[2];
- if (src)
- setVal('video_altsource2', src.src);
- } else if (data.type == 'audio') {
- if (data.video.sources[0])
- setVal('src', data.video.sources[0].src);
-
- src = data.video.sources[1];
- if (src)
- setVal('audio_altsource1', src.src);
-
- src = data.video.sources[2];
- if (src)
- setVal('audio_altsource2', src.src);
- } else {
- // Check flash vars
- if (data.type == 'flash') {
- tinymce.each(editor.getParam('flash_video_player_flashvars', {url : '$url', poster : '$poster'}), function(value, name) {
- if (value == '$url')
- data.params.src = parseQueryParams(data.params.flashvars)[name] || data.params.src || '';
- });
- }
-
- setVal('src', data.params.src);
- }
- } else {
- src = getVal("src");
-
- // YouTube *NEW*
- if (src.match(/youtu.be\/[a-z1-9.-_]+/)) {
- data.width = 425;
- data.height = 350;
- data.params.frameborder = '0';
- data.type = 'iframe';
- src = 'http://www.youtube.com/embed/' + src.match(/youtu.be\/([a-z1-9.-_]+)/)[1];
- setVal('src', src);
- setVal('media_type', data.type);
- }
-
- // YouTube
- if (src.match(/youtube.com(.+)v=([^&]+)/)) {
- data.width = 425;
- data.height = 350;
- data.params.frameborder = '0';
- data.type = 'iframe';
- src = 'http://www.youtube.com/embed/' + src.match(/v=([^&]+)/)[1];
- setVal('src', src);
- setVal('media_type', data.type);
- }
-
- // Google video
- if (src.match(/video.google.com(.+)docid=([^&]+)/)) {
- data.width = 425;
- data.height = 326;
- data.type = 'flash';
- src = 'http://video.google.com/googleplayer.swf?docId=' + src.match(/docid=([^&]+)/)[1] + '&hl=en';
- setVal('src', src);
- setVal('media_type', data.type);
- }
-
- if (data.type == 'video') {
- if (!data.video.sources)
- data.video.sources = [];
-
- data.video.sources[0] = {src : src};
-
- src = getVal("video_altsource1");
- if (src)
- data.video.sources[1] = {src : src};
-
- src = getVal("video_altsource2");
- if (src)
- data.video.sources[2] = {src : src};
- } else if (data.type == 'audio') {
- if (!data.video.sources)
- data.video.sources = [];
-
- data.video.sources[0] = {src : src};
-
- src = getVal("audio_altsource1");
- if (src)
- data.video.sources[1] = {src : src};
-
- src = getVal("audio_altsource2");
- if (src)
- data.video.sources[2] = {src : src};
- } else
- data.params.src = src;
-
- // Set default size
- setVal('width', data.width || (data.type == 'audio' ? 300 : 320));
- setVal('height', data.height || (data.type == 'audio' ? 32 : 240));
- }
- },
-
- dataToForm : function() {
- this.moveStates(true);
- },
-
- formToData : function(field) {
- if (field == "width" || field == "height")
- this.changeSize(field);
-
- if (field == 'source') {
- this.moveStates(false, field);
- setVal('source', this.editor.plugins.media.dataToHtml(this.data));
- this.panel = 'source';
- } else {
- if (this.panel == 'source') {
- this.data = clone(this.editor.plugins.media.htmlToData(getVal('source')));
- this.dataToForm();
- this.panel = '';
- }
-
- this.moveStates(false, field);
- this.preview();
- }
- },
-
- beforeResize : function() {
- this.width = parseInt(getVal('width') || (this.data.type == 'audio' ? "300" : "320"), 10);
- this.height = parseInt(getVal('height') || (this.data.type == 'audio' ? "32" : "240"), 10);
- },
-
- changeSize : function(type) {
- var width, height, scale, size;
-
- if (get('constrain').checked) {
- width = parseInt(getVal('width') || (this.data.type == 'audio' ? "300" : "320"), 10);
- height = parseInt(getVal('height') || (this.data.type == 'audio' ? "32" : "240"), 10);
-
- if (type == 'width') {
- this.height = Math.round((width / this.width) * height);
- setVal('height', this.height);
- } else {
- this.width = Math.round((height / this.height) * width);
- setVal('width', this.width);
- }
- }
- },
-
- getMediaListHTML : function() {
- if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length > 0) {
- var html = "";
-
- html += '<select id="linklist" name="linklist" style="width: 250px" onchange="this.form.src.value=this.options[this.selectedIndex].value;Media.formToData(\'src\');">';
- html += '<option value="">---</option>';
-
- for (var i=0; i<tinyMCEMediaList.length; i++)
- html += '<option value="' + tinyMCEMediaList[i][1] + '">' + tinyMCEMediaList[i][0] + '</option>';
-
- html += '</select>';
-
- return html;
- }
-
- return "";
- },
-
- getMediaTypeHTML : function(editor) {
- function option(media_type, element) {
- if (!editor.schema.getElementRule(element || media_type)) {
- return '';
- }
-
- return '<option value="'+media_type+'">'+tinyMCEPopup.editor.translate("media_dlg."+media_type)+'</option>'
- }
-
- var html = "";
-
- html += '<select id="media_type" name="media_type" onchange="Media.formToData(\'type\');">';
- html += option("video");
- html += option("audio");
- html += option("flash", "object");
- html += option("quicktime", "object");
- html += option("shockwave", "object");
- html += option("windowsmedia", "object");
- html += option("realmedia", "object");
- html += option("iframe");
-
- if (editor.getParam('media_embedded_audio', false)) {
- html += option('embeddedaudio', "object");
- }
-
- html += '</select>';
- return html;
- },
-
- setDefaultDialogSettings : function(editor) {
- var defaultDialogSettings = editor.getParam("media_dialog_defaults", {});
- tinymce.each(defaultDialogSettings, function(v, k) {
- setVal(k, v);
- });
- }
- };
-
- tinyMCEPopup.requireLangPack();
- tinyMCEPopup.onInit.add(function() {
- Media.init();
- });
-})();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js
deleted file mode 100644
index ecef3a801..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert/Edit Embedded Media","align_top_left":"Top Left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed RTSP resources should be added to the QT Source field under the Advanced tab.\nYou should also add a non-streamed version to the Source field.",qtsrc:"QT Source",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch Style",scriptcallbacks:"Script Callbacks","align_top_right":"Top Right",uimode:"UI Mode",rate:"Rate",playcount:"Play Count",defaultframe:"Default Frame",currentposition:"Current Position",currentmarker:"Current Marker",captioningid:"Captioning ID",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless Video",stretchtofit:"Stretch to Fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Full Screen",enabled:"Enabled",autostart:"Auto Start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke Speed",href:"HREF",endtime:"End Time",starttime:"Start Time",enablejavascript:"Enable JavaScript",correction:"No Correction",targetcache:"Target Cache",playeveryframe:"Play Every Frame",kioskmode:"Kiosk Mode",controller:"Controller",menu:"Show Menu",loop:"Loop",play:"Auto Play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"ID",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain Proportions",controls:"Controls",numloop:"Num Loops",console:"Console",cache:"Cache",autohref:"Auto HREF",liveconnect:"SWLiveConnect",flashvars:"Flash Vars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No Java",maintainaspect:"Maintain Aspect",imagestatus:"Image Status",center:"Center",autogotourl:"Auto Goto URL","shockwave_options":"Shockwave Options","rmp_options":"Real Media Player Options","wmp_options":"Windows Media Player Options","qt_options":"QuickTime Options","flash_options":"Flash Options",hidden:"Hidden","align_bottom_left":"Bottom Left","align_bottom_right":"Bottom Right","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide", "embedded_audio_options":"Embedded Audio Options", video:"HTML5 Video", audio:"HTML5 Audio", flash:"Flash", quicktime:"QuickTime", shockwave:"Shockwave", windowsmedia:"Windows Media", realmedia:"Real Media", iframe:"Iframe", embeddedaudio:"Embedded Audio" });
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/media.htm b/library/tinymce/jscripts/tiny_mce/plugins/media/media.htm
deleted file mode 100644
index 957d83a68..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/media/media.htm
+++ /dev/null
@@ -1,922 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#media_dlg.title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/media.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/validate.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <link href="css/media.css" rel="stylesheet" type="text/css" />
-</head>
-<body style="display: none" role="application">
-<form onsubmit="Media.insert();return false;" action="#">
- <div class="tabs" role="presentation">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');Media.formToData();" onmousedown="return false;">{#media_dlg.general}</a></span></li>
- <li id="advanced_tab" aria-controls="advanced_panel"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');Media.formToData();" onmousedown="return false;">{#media_dlg.advanced}</a></span></li>
- <li id="source_tab" aria-controls="source_panel"><span><a href="javascript:mcTabs.displayTab('source_tab','source_panel');Media.formToData('source');" onmousedown="return false;">{#media_dlg.source}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#media_dlg.general}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td><label for="media_type">{#media_dlg.type}</label></td>
- <td>
- <select id="media_type"></select>
- </td>
- </tr>
- <tr>
- <td><label for="src">{#media_dlg.file}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="src" name="src" type="text" value="" class="mceFocus" onchange="Media.formToData();" /></td>
- <td id="filebrowsercontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr id="linklistrow">
- <td><label for="linklist">{#media_dlg.list}</label></td>
- <td id="linklistcontainer"><select id="linklist"><option value=""></option></select></td>
- </tr>
- <tr>
- <td><label for="width">{#media_dlg.size}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="text" id="width" name="width" value="" class="size" onchange="Media.formToData('width');" onfocus="Media.beforeResize();" /> x <input type="text" id="height" name="height" value="" class="size" onfocus="Media.beforeResize();" onchange="Media.formToData('height');" /></td>
- <td>&nbsp;&nbsp;<input id="constrain" type="checkbox" name="constrain" class="checkbox" checked="checked" /></td>
- <td><label id="constrainlabel" for="constrain">{#media_dlg.constrain_proportions}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset>
- <legend>{#media_dlg.preview}</legend>
- <div id="prev"></div>
- </fieldset>
- </div>
-
- <div id="advanced_panel" class="panel">
- <fieldset>
- <legend>{#media_dlg.advanced}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0" width="100%">
- <tr>
- <td><label for="id">{#media_dlg.id}</label></td>
- <td><input type="text" id="id" name="id" onchange="Media.formToData();" /></td>
- <td><label for="name">{#media_dlg.name}</label></td>
- <td><input type="text" id="name" name="name" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="align">{#media_dlg.align}</label></td>
- <td>
- <select id="align" name="align" onchange="Media.formToData();">
- <option value="">{#not_set}</option>
- <option value="top">{#media_dlg.align_top}</option>
- <option value="right">{#media_dlg.align_right}</option>
- <option value="bottom">{#media_dlg.align_bottom}</option>
- <option value="left">{#media_dlg.align_left}</option>
- </select>
- </td>
-
- <td><label for="bgcolor">{#media_dlg.bgcolor}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');Media.formToData();" /></td>
- <td id="bgcolor_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="vspace">{#media_dlg.vspace}</label></td>
- <td><input type="text" id="vspace" name="vspace" class="number" onchange="Media.formToData();" /></td>
- <td><label for="hspace">{#media_dlg.hspace}</label></td>
- <td><input type="text" id="hspace" name="hspace" class="number" onchange="Media.formToData();" /></td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset id="video_options">
- <legend>{#media_dlg.html5_video_options}</legend>
-
- <table role="presentation">
- <tr>
- <td><label for="video_altsource1">{#media_dlg.altsource1}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="video_altsource1" name="video_altsource1" onchange="Media.formToData();" style="width: 240px" /></td>
- <td id="video_altsource1_filebrowser">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="video_altsource2">{#media_dlg.altsource2}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="video_altsource2" name="video_altsource2" onchange="Media.formToData();" style="width: 240px" /></td>
- <td id="video_altsource2_filebrowser">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="video_poster">{#media_dlg.poster}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="video_poster" name="video_poster" onchange="Media.formToData();" style="width: 240px" /></td>
- <td id="video_poster_filebrowser">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="video_preload">{#media_dlg.preload}</label></td>
- <td>
- <select id="video_preload" name="video_preload" onchange="Media.formToData();">
- <option value="none">{#media_dlg.preload_none}</option>
- <option value="metadata">{#media_dlg.preload_metadata}</option>
- <option value="auto">{#media_dlg.preload_auto}</option>
- </select>
- </td>
- </tr>
- </table>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="video_autoplay" name="video_autoplay" onchange="Media.formToData();" /></td>
- <td><label for="video_autoplay">{#media_dlg.play}</label></td>
- </tr>
- </table>
- </td>
-
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="video_muted" name="video_muted" onchange="Media.formToData();" /></td>
- <td><label for="video_muted">{#media_dlg.mute}</label></td>
- </tr>
- </table>
- </td>
-
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="video_loop" name="video_loop" onchange="Media.formToData();" /></td>
- <td><label for="video_loop">{#media_dlg.loop}</label></td>
- </tr>
- </table>
- </td>
-
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="video_controls" name="video_controls" onchange="Media.formToData();" /></td>
- <td><label for="video_controls">{#media_dlg.controls}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset id="embeddedaudio_options">
- <legend>{#media_dlg.embedded_audio_options}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="embeddedaudio_autoplay" name="audio_autoplay" onchange="Media.formToData();" /></td>
- <td><label for="audio_autoplay">{#media_dlg.play}</label></td>
- </tr>
- </table>
- </td>
-
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="embeddedaudio_loop" name="audio_loop" onchange="Media.formToData();" /></td>
- <td><label for="audio_loop">{#media_dlg.loop}</label></td>
- </tr>
- </table>
- </td>
-
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="embeddedaudio_controls" name="audio_controls" onchange="Media.formToData();" /></td>
- <td><label for="audio_controls">{#media_dlg.controls}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset id="audio_options">
- <legend>{#media_dlg.html5_audio_options}</legend>
-
- <table role="presentation">
- <tr>
- <td><label for="audio_altsource1">{#media_dlg.altsource1}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="audio_altsource1" name="audio_altsource1" onchange="Media.formToData();" style="width: 240px" /></td>
- <td id="audio_altsource1_filebrowser">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="audio_altsource2">{#media_dlg.altsource2}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="audio_altsource2" name="audio_altsource2" onchange="Media.formToData();" style="width: 240px" /></td>
- <td id="audio_altsource2_filebrowser">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="audio_preload">{#media_dlg.preload}</label></td>
- <td>
- <select id="audio_preload" name="audio_preload" onchange="Media.formToData();">
- <option value="none">{#media_dlg.preload_none}</option>
- <option value="metadata">{#media_dlg.preload_metadata}</option>
- <option value="auto">{#media_dlg.preload_auto}</option>
- </select>
- </td>
- </tr>
- </table>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="audio_autoplay" name="audio_autoplay" onchange="Media.formToData();" /></td>
- <td><label for="audio_autoplay">{#media_dlg.play}</label></td>
- </tr>
- </table>
- </td>
-
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="audio_loop" name="audio_loop" onchange="Media.formToData();" /></td>
- <td><label for="audio_loop">{#media_dlg.loop}</label></td>
- </tr>
- </table>
- </td>
-
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="audio_controls" name="audio_controls" onchange="Media.formToData();" /></td>
- <td><label for="audio_controls">{#media_dlg.controls}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset id="flash_options">
- <legend>{#media_dlg.flash_options}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td><label for="flash_quality">{#media_dlg.quality}</label></td>
- <td>
- <select id="flash_quality" name="flash_quality" onchange="Media.formToData();">
- <option value="">{#not_set}</option>
- <option value="high">high</option>
- <option value="low">low</option>
- <option value="autolow">autolow</option>
- <option value="autohigh">autohigh</option>
- <option value="best">best</option>
- </select>
- </td>
-
- <td><label for="flash_scale">{#media_dlg.scale}</label></td>
- <td>
- <select id="flash_scale" name="flash_scale" onchange="Media.formToData();">
- <option value="">{#not_set}</option>
- <option value="showall">showall</option>
- <option value="noborder">noborder</option>
- <option value="exactfit">exactfit</option>
- <option value="noscale">noscale</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td><label for="flash_wmode">{#media_dlg.wmode}</label></td>
- <td>
- <select id="flash_wmode" name="flash_wmode" onchange="Media.formToData();">
- <option value="">{#not_set}</option>
- <option value="window">window</option>
- <option value="opaque">opaque</option>
- <option value="transparent">transparent</option>
- </select>
- </td>
-
- <td><label for="flash_salign">{#media_dlg.salign}</label></td>
- <td>
- <select id="flash_salign" name="flash_salign" onchange="Media.formToData();">
- <option value="">{#not_set}</option>
- <option value="l">{#media_dlg.align_left}</option>
- <option value="t">{#media_dlg.align_top}</option>
- <option value="r">{#media_dlg.align_right}</option>
- <option value="b">{#media_dlg.align_bottom}</option>
- <option value="tl">{#media_dlg.align_top_left}</option>
- <option value="tr">{#media_dlg.align_top_right}</option>
- <option value="bl">{#media_dlg.align_bottom_left}</option>
- <option value="br">{#media_dlg.align_bottom_right}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="flash_play" name="flash_play" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="flash_play">{#media_dlg.play}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="flash_loop" name="flash_loop" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="flash_loop">{#media_dlg.loop}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="flash_menu" name="flash_menu" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="flash_menu">{#media_dlg.menu}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="flash_swliveconnect" name="flash_swliveconnect" onchange="Media.formToData();" /></td>
- <td><label for="flash_swliveconnect">{#media_dlg.liveconnect}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
-
- <table role="presentation">
- <tr>
- <td><label for="flash_base">{#media_dlg.base}</label></td>
- <td><input type="text" id="flash_base" name="flash_base" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="flash_flashvars">{#media_dlg.flashvars}</label></td>
- <td><input type="text" id="flash_flashvars" name="flash_flashvars" onchange="Media.formToData();" /></td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset id="quicktime_options">
- <legend>{#media_dlg.qt_options}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_loop" name="quicktime_loop" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_loop">{#media_dlg.loop}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_autoplay" name="quicktime_autoplay" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_autoplay">{#media_dlg.play}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_cache" name="quicktime_cache" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_cache">{#media_dlg.cache}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_controller" name="quicktime_controller" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_controller">{#media_dlg.controller}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_correction" name="quicktime_correction" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_correction">{#media_dlg.correction}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_enablejavascript" name="quicktime_enablejavascript" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_enablejavascript">{#media_dlg.enablejavascript}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_kioskmode" name="quicktime_kioskmode" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_kioskmode">{#media_dlg.kioskmode}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_autohref" name="quicktime_autohref" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_autohref">{#media_dlg.autohref}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_playeveryframe" name="quicktime_playeveryframe" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_playeveryframe">{#media_dlg.playeveryframe}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_targetcache" name="quicktime_targetcache" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_targetcache">{#media_dlg.targetcache}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="quicktime_scale">{#media_dlg.scale}</label></td>
- <td><select id="quicktime_scale" name="quicktime_scale" class="mceEditableSelect" onchange="Media.formToData();">
- <option value="">{#not_set}</option>
- <option value="tofit">tofit</option>
- <option value="aspect">aspect</option>
- </select>
- </td>
-
- <td colspan="2">&nbsp;</td>
- </tr>
-
- <tr>
- <td><label for="quicktime_starttime">{#media_dlg.starttime}</label></td>
- <td><input type="text" id="quicktime_starttime" name="quicktime_starttime" onchange="Media.formToData();" /></td>
-
- <td><label for="quicktime_endtime">{#media_dlg.endtime}</label></td>
- <td><input type="text" id="quicktime_endtime" name="quicktime_endtime" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="quicktime_target">{#media_dlg.target}</label></td>
- <td><input type="text" id="quicktime_target" name="quicktime_target" onchange="Media.formToData();" /></td>
-
- <td><label for="quicktime_href">{#media_dlg.href}</label></td>
- <td><input type="text" id="quicktime_href" name="quicktime_href" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="quicktime_qtsrcchokespeed">{#media_dlg.qtsrcchokespeed}</label></td>
- <td><input type="text" id="quicktime_qtsrcchokespeed" name="quicktime_qtsrcchokespeed" onchange="Media.formToData();" /></td>
-
- <td><label for="quicktime_volume">{#media_dlg.volume}</label></td>
- <td><input type="text" id="quicktime_volume" name="quicktime_volume" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="quicktime_qtsrc">{#media_dlg.qtsrc}</label></td>
- <td colspan="4">
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="quicktime_qtsrc" name="quicktime_qtsrc" onchange="Media.formToData();" /></td>
- <td id="qtsrcfilebrowsercontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset id="windowsmedia_options">
- <legend>{#media_dlg.wmp_options}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="windowsmedia_autostart" name="windowsmedia_autostart" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="windowsmedia_autostart">{#media_dlg.autostart}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="windowsmedia_enabled" name="windowsmedia_enabled" onchange="Media.formToData();" /></td>
- <td><label for="windowsmedia_enabled">{#media_dlg.enabled}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="windowsmedia_enablecontextmenu" name="windowsmedia_enablecontextmenu" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="windowsmedia_enablecontextmenu">{#media_dlg.menu}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="windowsmedia_fullscreen" name="windowsmedia_fullscreen" onchange="Media.formToData();" /></td>
- <td><label for="windowsmedia_fullscreen">{#media_dlg.fullscreen}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="windowsmedia_invokeurls" name="windowsmedia_invokeurls" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="windowsmedia_invokeurls">{#media_dlg.invokeurls}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="windowsmedia_mute" name="windowsmedia_mute" onchange="Media.formToData();" /></td>
- <td><label for="windowsmedia_mute">{#media_dlg.mute}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="windowsmedia_stretchtofit" name="windowsmedia_stretchtofit" onchange="Media.formToData();" /></td>
- <td><label for="windowsmedia_stretchtofit">{#media_dlg.stretchtofit}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="windowsmedia_windowlessvideo" name="windowsmedia_windowlessvideo" onchange="Media.formToData();" /></td>
- <td><label for="windowsmedia_windowlessvideo">{#media_dlg.windowlessvideo}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="windowsmedia_balance">{#media_dlg.balance}</label></td>
- <td><input type="text" id="windowsmedia_balance" name="windowsmedia_balance" onchange="Media.formToData();" /></td>
-
- <td><label for="windowsmedia_baseurl">{#media_dlg.baseurl}</label></td>
- <td><input type="text" id="windowsmedia_baseurl" name="windowsmedia_baseurl" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="windowsmedia_captioningid">{#media_dlg.captioningid}</label></td>
- <td><input type="text" id="windowsmedia_captioningid" name="windowsmedia_captioningid" onchange="Media.formToData();" /></td>
-
- <td><label for="windowsmedia_currentmarker">{#media_dlg.currentmarker}</label></td>
- <td><input type="text" id="windowsmedia_currentmarker" name="windowsmedia_currentmarker" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="windowsmedia_currentposition">{#media_dlg.currentposition}</label></td>
- <td><input type="text" id="windowsmedia_currentposition" name="windowsmedia_currentposition" onchange="Media.formToData();" /></td>
-
- <td><label for="windowsmedia_defaultframe">{#media_dlg.defaultframe}</label></td>
- <td><input type="text" id="windowsmedia_defaultframe" name="windowsmedia_defaultframe" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="windowsmedia_playcount">{#media_dlg.playcount}</label></td>
- <td><input type="text" id="windowsmedia_playcount" name="windowsmedia_playcount" onchange="Media.formToData();" /></td>
-
- <td><label for="windowsmedia_rate">{#media_dlg.rate}</label></td>
- <td><input type="text" id="windowsmedia_rate" name="windowsmedia_rate" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="windowsmedia_uimode">{#media_dlg.uimode}</label></td>
- <td><input type="text" id="windowsmedia_uimode" name="windowsmedia_uimode" onchange="Media.formToData();" /></td>
-
- <td><label for="windowsmedia_volume">{#media_dlg.volume}</label></td>
- <td><input type="text" id="windowsmedia_volume" name="windowsmedia_volume" onchange="Media.formToData();" /></td>
- </tr>
-
- </table>
- </fieldset>
-
- <fieldset id="realmedia_options">
- <legend>{#media_dlg.rmp_options}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_autostart" name="realmedia_autostart" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_autostart">{#media_dlg.autostart}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_loop" name="realmedia_loop" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_loop">{#media_dlg.loop}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_autogotourl" name="realmedia_autogotourl" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_autogotourl">{#media_dlg.autogotourl}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_center" name="realmedia_center" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_center">{#media_dlg.center}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_imagestatus" name="realmedia_imagestatus" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_imagestatus">{#media_dlg.imagestatus}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_maintainaspect" name="realmedia_maintainaspect" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_maintainaspect">{#media_dlg.maintainaspect}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_nojava" name="realmedia_nojava" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_nojava">{#media_dlg.nojava}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_prefetch" name="realmedia_prefetch" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_prefetch">{#media_dlg.prefetch}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_shuffle" name="realmedia_shuffle" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_shuffle">{#media_dlg.shuffle}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- &nbsp;
- </td>
- </tr>
-
- <tr>
- <td><label for="realmedia_console">{#media_dlg.console}</label></td>
- <td><input type="text" id="realmedia_console" name="realmedia_console" onchange="Media.formToData();" /></td>
-
- <td><label for="realmedia_controls">{#media_dlg.controls}</label></td>
- <td><input type="text" id="realmedia_controls" name="realmedia_controls" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="realmedia_numloop">{#media_dlg.numloop}</label></td>
- <td><input type="text" id="realmedia_numloop" name="realmedia_numloop" onchange="Media.formToData();" /></td>
-
- <td><label for="realmedia_scriptcallbacks">{#media_dlg.scriptcallbacks}</label></td>
- <td><input type="text" id="realmedia_scriptcallbacks" name="realmedia_scriptcallbacks" onchange="Media.formToData();" /></td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset id="shockwave_options">
- <legend>{#media_dlg.shockwave_options}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td><label for="shockwave_swstretchstyle">{#media_dlg.swstretchstyle}</label></td>
- <td>
- <select id="shockwave_swstretchstyle" name="shockwave_swstretchstyle" onchange="Media.formToData();">
- <option value="none">{#not_set}</option>
- <option value="meet">Meet</option>
- <option value="fill">Fill</option>
- <option value="stage">Stage</option>
- </select>
- </td>
-
- <td><label for="shockwave_swvolume">{#media_dlg.volume}</label></td>
- <td><input type="text" id="shockwave_swvolume" name="shockwave_swvolume" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="shockwave_swstretchhalign">{#media_dlg.swstretchhalign}</label></td>
- <td>
- <select id="shockwave_swstretchhalign" name="shockwave_swstretchhalign" onchange="Media.formToData();">
- <option value="none">{#not_set}</option>
- <option value="left">{#media_dlg.align_left}</option>
- <option value="center">{#media_dlg.align_center}</option>
- <option value="right">{#media_dlg.align_right}</option>
- </select>
- </td>
-
- <td><label for="shockwave_swstretchvalign">{#media_dlg.swstretchvalign}</label></td>
- <td>
- <select id="shockwave_swstretchvalign" name="shockwave_swstretchvalign" onchange="Media.formToData();">
- <option value="none">{#not_set}</option>
- <option value="meet">Meet</option>
- <option value="fill">Fill</option>
- <option value="stage">Stage</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="shockwave_autostart" name="shockwave_autostart" onchange="Media.formToData();" checked="checked" /></td>
- <td><label for="shockwave_autostart">{#media_dlg.autostart}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="shockwave_sound" name="shockwave_sound" onchange="Media.formToData();" checked="checked" /></td>
- <td><label for="shockwave_sound">{#media_dlg.sound}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="shockwave_swliveconnect" name="shockwave_swliveconnect" onchange="Media.formToData();" /></td>
- <td><label for="shockwave_swliveconnect">{#media_dlg.liveconnect}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="shockwave_progress" name="shockwave_progress" onchange="Media.formToData();" checked="checked" /></td>
- <td><label for="shockwave_progress">{#media_dlg.progress}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
-
- <div id="source_panel" class="panel">
- <fieldset>
- <legend>{#media_dlg.source}</legend>
- <textarea id="source" style="width: 99%; height: 390px"></textarea>
- </fieldset>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
- </form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/moxieplayer.swf b/library/tinymce/jscripts/tiny_mce/plugins/media/moxieplayer.swf
deleted file mode 100644
index 585d772d6..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/media/moxieplayer.swf
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js
deleted file mode 100644
index 687f54866..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.Nonbreaking",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceNonBreaking",function(){a.execCommand("mceInsertContent",false,(a.plugins.visualchars&&a.plugins.visualchars.state)?'<span data-mce-bogus="1" class="mceItemHidden mceItemNbsp">&nbsp;</span>':"&nbsp;")});a.addButton("nonbreaking",{title:"nonbreaking.nonbreaking_desc",cmd:"mceNonBreaking"});if(a.getParam("nonbreaking_force_tab")){a.onKeyDown.add(function(d,f){if(f.keyCode==9){f.preventDefault();d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking")}})}},getInfo:function(){return{longname:"Nonbreaking space",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("nonbreaking",tinymce.plugins.Nonbreaking)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js
deleted file mode 100644
index d492fbefe..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.Nonbreaking', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- // Register commands
- ed.addCommand('mceNonBreaking', function() {
- ed.execCommand('mceInsertContent', false, (ed.plugins.visualchars && ed.plugins.visualchars.state) ? '<span data-mce-bogus="1" class="mceItemHidden mceItemNbsp">&nbsp;</span>' : '&nbsp;');
- });
-
- // Register buttons
- ed.addButton('nonbreaking', {title : 'nonbreaking.nonbreaking_desc', cmd : 'mceNonBreaking'});
-
- if (ed.getParam('nonbreaking_force_tab')) {
- ed.onKeyDown.add(function(ed, e) {
- if (e.keyCode == 9) {
- e.preventDefault();
-
- ed.execCommand('mceNonBreaking');
- ed.execCommand('mceNonBreaking');
- ed.execCommand('mceNonBreaking');
- }
- });
- }
- },
-
- getInfo : function() {
- return {
- longname : 'Nonbreaking space',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
-
- // Private methods
- });
-
- // Register plugin
- tinymce.PluginManager.add('nonbreaking', tinymce.plugins.Nonbreaking);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js
deleted file mode 100644
index e204328d9..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var c=tinymce.dom.TreeWalker;var a="contenteditable",d="data-mce-"+a;var e=tinymce.VK;function b(n){var j=n.dom,p=n.selection,r,o="mce_noneditablecaret";r=tinymce.isGecko?"\u200B":"\uFEFF";function m(t){var s;if(t.nodeType===1){s=t.getAttribute(d);if(s&&s!=="inherit"){return s}s=t.contentEditable;if(s!=="inherit"){return s}}return null}function g(s){var t;while(s){t=m(s);if(t){return t==="false"?s:null}s=s.parentNode}}function l(s){while(s){if(s.id===o){return s}s=s.parentNode}}function k(s){var t;if(s){t=new c(s,s);for(s=t.current();s;s=t.next()){if(s.nodeType===3){return s}}}}function f(v,u){var s,t;if(m(v)==="false"){if(j.isBlock(v)){p.select(v);return}}t=j.createRng();if(m(v)==="true"){if(!v.firstChild){v.appendChild(n.getDoc().createTextNode("\u00a0"))}v=v.firstChild;u=true}s=j.create("span",{id:o,"data-mce-bogus":true},r);if(u){v.parentNode.insertBefore(s,v)}else{j.insertAfter(s,v)}t.setStart(s.firstChild,1);t.collapse(true);p.setRng(t);return s}function i(s){var v,t,u;if(s){rng=p.getRng(true);rng.setStartBefore(s);rng.setEndBefore(s);v=k(s);if(v&&v.nodeValue.charAt(0)==r){v=v.deleteData(0,1)}j.remove(s,true);p.setRng(rng)}else{t=l(p.getStart());while((s=j.get(o))&&s!==u){if(t!==s){v=k(s);if(v&&v.nodeValue.charAt(0)==r){v=v.deleteData(0,1)}j.remove(s,true)}u=s}}}function q(){var s,w,u,t,v;function x(B,D){var A,F,E,C,z;A=t.startContainer;F=t.startOffset;if(A.nodeType==3){z=A.nodeValue.length;if((F>0&&F<z)||(D?F==z:F==0)){return}}else{if(F<A.childNodes.length){var G=!D&&F>0?F-1:F;A=A.childNodes[G];if(A.hasChildNodes()){A=A.firstChild}}else{return !D?B:null}}E=new c(A,B);while(C=E[D?"prev":"next"]()){if(C.nodeType===3&&C.nodeValue.length>0){return}else{if(m(C)==="true"){return C}}}return B}i();u=p.isCollapsed();s=g(p.getStart());w=g(p.getEnd());if(s||w){t=p.getRng(true);if(u){s=s||w;var y=p.getStart();if(v=x(s,true)){f(v,true)}else{if(v=x(s,false)){f(v,false)}else{p.select(s)}}}else{t=p.getRng(true);if(s){t.setStartBefore(s)}if(w){t.setEndAfter(w)}p.setRng(t)}}}function h(z,B){var F=B.keyCode,x,C,D,v;function u(H,G){while(H=H[G?"previousSibling":"nextSibling"]){if(H.nodeType!==3||H.nodeValue.length>0){return H}}}function y(G,H){p.select(G);p.collapse(H)}function t(K){var J,I,M,H;function G(O){var N=I;while(N){if(N===O){return}N=N.parentNode}j.remove(O);q()}function L(){var O,P,N=z.schema.getNonEmptyElements();P=new tinymce.dom.TreeWalker(I,z.getBody());while(O=(K?P.prev():P.next())){if(N[O.nodeName.toLowerCase()]){break}if(O.nodeType===3&&tinymce.trim(O.nodeValue).length>0){break}if(m(O)==="false"){G(O);return true}}if(g(O)){return true}return false}if(p.isCollapsed()){J=p.getRng(true);I=J.startContainer;M=J.startOffset;I=l(I)||I;if(H=g(I)){G(H);return false}if(I.nodeType==3&&(K?M>0:M<I.nodeValue.length)){return true}if(I.nodeType==1){I=I.childNodes[M]||I}if(L()){return false}}return true}D=p.getStart();v=p.getEnd();x=g(D)||g(v);if(x&&(F<112||F>124)&&F!=e.DELETE&&F!=e.BACKSPACE){if((tinymce.isMac?B.metaKey:B.ctrlKey)&&(F==67||F==88||F==86)){return}B.preventDefault();if(F==e.LEFT||F==e.RIGHT){var w=F==e.LEFT;if(z.dom.isBlock(x)){var A=w?x.previousSibling:x.nextSibling;var s=new c(A,A);var E=w?s.prev():s.next();y(E,!w)}else{y(x,w)}}}else{if(F==e.LEFT||F==e.RIGHT||F==e.BACKSPACE||F==e.DELETE){C=l(D);if(C){if(F==e.LEFT||F==e.BACKSPACE){x=u(C,true);if(x&&m(x)==="false"){B.preventDefault();if(F==e.LEFT){y(x,true)}else{j.remove(x);return}}else{i(C)}}if(F==e.RIGHT||F==e.DELETE){x=u(C);if(x&&m(x)==="false"){B.preventDefault();if(F==e.RIGHT){y(x,false)}else{j.remove(x);return}}else{i(C)}}}if((F==e.BACKSPACE||F==e.DELETE)&&!t(F==e.BACKSPACE)){B.preventDefault();return false}}}}n.onMouseDown.addToTop(function(s,u){var t=s.selection.getNode();if(m(t)==="false"&&t==u.target){q()}});n.onMouseUp.addToTop(q);n.onKeyDown.addToTop(h);n.onKeyUp.addToTop(q)}tinymce.create("tinymce.plugins.NonEditablePlugin",{init:function(i,k){var h,g,j;function f(m,n){var o=j.length,p=n.content,l=tinymce.trim(g);if(n.format=="raw"){return}while(o--){p=p.replace(j[o],function(s){var r=arguments,q=r[r.length-2];if(q>0&&p.charAt(q-1)=='"'){return s}return'<span class="'+l+'" data-mce-content="'+m.dom.encode(r[0])+'">'+m.dom.encode(typeof(r[1])==="string"?r[1]:r[0])+"</span>"})}n.content=p}h=" "+tinymce.trim(i.getParam("noneditable_editable_class","mceEditable"))+" ";g=" "+tinymce.trim(i.getParam("noneditable_noneditable_class","mceNonEditable"))+" ";j=i.getParam("noneditable_regexp");if(j&&!j.length){j=[j]}i.onPreInit.add(function(){b(i);if(j){i.selection.onBeforeSetContent.add(f);i.onBeforeSetContent.add(f)}i.parser.addAttributeFilter("class",function(l){var m=l.length,n,o;while(m--){o=l[m];n=" "+o.attr("class")+" ";if(n.indexOf(h)!==-1){o.attr(d,"true")}else{if(n.indexOf(g)!==-1){o.attr(d,"false")}}}});i.serializer.addAttributeFilter(d,function(l,m){var n=l.length,o;while(n--){o=l[n];if(j&&o.attr("data-mce-content")){o.name="#text";o.type=3;o.raw=true;o.value=o.attr("data-mce-content")}else{o.attr(a,null);o.attr(d,null)}}});i.parser.addAttributeFilter(a,function(l,m){var n=l.length,o;while(n--){o=l[n];o.attr(d,o.attr(a));o.attr(a,null)}})})},getInfo:function(){return{longname:"Non editable elements",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("noneditable",tinymce.plugins.NonEditablePlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js
deleted file mode 100644
index c0efe749c..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js
+++ /dev/null
@@ -1,540 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var TreeWalker = tinymce.dom.TreeWalker;
- var externalName = 'contenteditable', internalName = 'data-mce-' + externalName;
- var VK = tinymce.VK;
-
- function handleContentEditableSelection(ed) {
- var dom = ed.dom, selection = ed.selection, invisibleChar, caretContainerId = 'mce_noneditablecaret';
-
- // Setup invisible character use zero width space on Gecko since it doesn't change the height of the container
- invisibleChar = tinymce.isGecko ? '\u200B' : '\uFEFF';
-
- // Returns the content editable state of a node "true/false" or null
- function getContentEditable(node) {
- var contentEditable;
-
- // Ignore non elements
- if (node.nodeType === 1) {
- // Check for fake content editable
- contentEditable = node.getAttribute(internalName);
- if (contentEditable && contentEditable !== "inherit") {
- return contentEditable;
- }
-
- // Check for real content editable
- contentEditable = node.contentEditable;
- if (contentEditable !== "inherit") {
- return contentEditable;
- }
- }
-
- return null;
- };
-
- // Returns the noneditable parent or null if there is a editable before it or if it wasn't found
- function getNonEditableParent(node) {
- var state;
-
- while (node) {
- state = getContentEditable(node);
- if (state) {
- return state === "false" ? node : null;
- }
-
- node = node.parentNode;
- }
- };
-
- // Get caret container parent for the specified node
- function getParentCaretContainer(node) {
- while (node) {
- if (node.id === caretContainerId) {
- return node;
- }
-
- node = node.parentNode;
- }
- };
-
- // Finds the first text node in the specified node
- function findFirstTextNode(node) {
- var walker;
-
- if (node) {
- walker = new TreeWalker(node, node);
-
- for (node = walker.current(); node; node = walker.next()) {
- if (node.nodeType === 3) {
- return node;
- }
- }
- }
- };
-
- // Insert caret container before/after target or expand selection to include block
- function insertCaretContainerOrExpandToBlock(target, before) {
- var caretContainer, rng;
-
- // Select block
- if (getContentEditable(target) === "false") {
- if (dom.isBlock(target)) {
- selection.select(target);
- return;
- }
- }
-
- rng = dom.createRng();
-
- if (getContentEditable(target) === "true") {
- if (!target.firstChild) {
- target.appendChild(ed.getDoc().createTextNode('\u00a0'));
- }
-
- target = target.firstChild;
- before = true;
- }
-
- //caretContainer = dom.create('span', {id: caretContainerId, 'data-mce-bogus': true, style:'border: 1px solid red'}, invisibleChar);
- caretContainer = dom.create('span', {id: caretContainerId, 'data-mce-bogus': true}, invisibleChar);
-
- if (before) {
- target.parentNode.insertBefore(caretContainer, target);
- } else {
- dom.insertAfter(caretContainer, target);
- }
-
- rng.setStart(caretContainer.firstChild, 1);
- rng.collapse(true);
- selection.setRng(rng);
-
- return caretContainer;
- };
-
- // Removes any caret container except the one we might be in
- function removeCaretContainer(caretContainer) {
- var child, currentCaretContainer, lastContainer;
-
- if (caretContainer) {
- rng = selection.getRng(true);
- rng.setStartBefore(caretContainer);
- rng.setEndBefore(caretContainer);
-
- child = findFirstTextNode(caretContainer);
- if (child && child.nodeValue.charAt(0) == invisibleChar) {
- child = child.deleteData(0, 1);
- }
-
- dom.remove(caretContainer, true);
-
- selection.setRng(rng);
- } else {
- currentCaretContainer = getParentCaretContainer(selection.getStart());
- while ((caretContainer = dom.get(caretContainerId)) && caretContainer !== lastContainer) {
- if (currentCaretContainer !== caretContainer) {
- child = findFirstTextNode(caretContainer);
- if (child && child.nodeValue.charAt(0) == invisibleChar) {
- child = child.deleteData(0, 1);
- }
-
- dom.remove(caretContainer, true);
- }
-
- lastContainer = caretContainer;
- }
- }
- };
-
- // Modifies the selection to include contentEditable false elements or insert caret containers
- function moveSelection() {
- var nonEditableStart, nonEditableEnd, isCollapsed, rng, element;
-
- // Checks if there is any contents to the left/right side of caret returns the noneditable element or any editable element if it finds one inside
- function hasSideContent(element, left) {
- var container, offset, walker, node, len;
-
- container = rng.startContainer;
- offset = rng.startOffset;
-
- // If endpoint is in middle of text node then expand to beginning/end of element
- if (container.nodeType == 3) {
- len = container.nodeValue.length;
- if ((offset > 0 && offset < len) || (left ? offset == len : offset == 0)) {
- return;
- }
- } else {
- // Can we resolve the node by index
- if (offset < container.childNodes.length) {
- // Browser represents caret position as the offset at the start of an element. When moving right
- // this is the element we are moving into so we consider our container to be child node at offset-1
- var pos = !left && offset > 0 ? offset-1 : offset;
- container = container.childNodes[pos];
- if (container.hasChildNodes()) {
- container = container.firstChild;
- }
- } else {
- // If not then the caret is at the last position in it's container and the caret container should be inserted after the noneditable element
- return !left ? element : null;
- }
- }
-
- // Walk left/right to look for contents
- walker = new TreeWalker(container, element);
- while (node = walker[left ? 'prev' : 'next']()) {
- if (node.nodeType === 3 && node.nodeValue.length > 0) {
- return;
- } else if (getContentEditable(node) === "true") {
- // Found contentEditable=true element return this one to we can move the caret inside it
- return node;
- }
- }
-
- return element;
- };
-
- // Remove any existing caret containers
- removeCaretContainer();
-
- // Get noneditable start/end elements
- isCollapsed = selection.isCollapsed();
- nonEditableStart = getNonEditableParent(selection.getStart());
- nonEditableEnd = getNonEditableParent(selection.getEnd());
-
- // Is any fo the range endpoints noneditable
- if (nonEditableStart || nonEditableEnd) {
- rng = selection.getRng(true);
-
- // If it's a caret selection then look left/right to see if we need to move the caret out side or expand
- if (isCollapsed) {
- nonEditableStart = nonEditableStart || nonEditableEnd;
- var start = selection.getStart();
- if (element = hasSideContent(nonEditableStart, true)) {
- // We have no contents to the left of the caret then insert a caret container before the noneditable element
- insertCaretContainerOrExpandToBlock(element, true);
- } else if (element = hasSideContent(nonEditableStart, false)) {
- // We have no contents to the right of the caret then insert a caret container after the noneditable element
- insertCaretContainerOrExpandToBlock(element, false);
- } else {
- // We are in the middle of a noneditable so expand to select it
- selection.select(nonEditableStart);
- }
- } else {
- rng = selection.getRng(true);
-
- // Expand selection to include start non editable element
- if (nonEditableStart) {
- rng.setStartBefore(nonEditableStart);
- }
-
- // Expand selection to include end non editable element
- if (nonEditableEnd) {
- rng.setEndAfter(nonEditableEnd);
- }
-
- selection.setRng(rng);
- }
- }
- };
-
- function handleKey(ed, e) {
- var keyCode = e.keyCode, nonEditableParent, caretContainer, startElement, endElement;
-
- function getNonEmptyTextNodeSibling(node, prev) {
- while (node = node[prev ? 'previousSibling' : 'nextSibling']) {
- if (node.nodeType !== 3 || node.nodeValue.length > 0) {
- return node;
- }
- }
- };
-
- function positionCaretOnElement(element, start) {
- selection.select(element);
- selection.collapse(start);
- }
-
- function canDelete(backspace) {
- var rng, container, offset, nonEditableParent;
-
- function removeNodeIfNotParent(node) {
- var parent = container;
-
- while (parent) {
- if (parent === node) {
- return;
- }
-
- parent = parent.parentNode;
- }
-
- dom.remove(node);
- moveSelection();
- }
-
- function isNextPrevTreeNodeNonEditable() {
- var node, walker, nonEmptyElements = ed.schema.getNonEmptyElements();
-
- walker = new tinymce.dom.TreeWalker(container, ed.getBody());
- while (node = (backspace ? walker.prev() : walker.next())) {
- // Found IMG/INPUT etc
- if (nonEmptyElements[node.nodeName.toLowerCase()]) {
- break;
- }
-
- // Found text node with contents
- if (node.nodeType === 3 && tinymce.trim(node.nodeValue).length > 0) {
- break;
- }
-
- // Found non editable node
- if (getContentEditable(node) === "false") {
- removeNodeIfNotParent(node);
- return true;
- }
- }
-
- // Check if the content node is within a non editable parent
- if (getNonEditableParent(node)) {
- return true;
- }
-
- return false;
- }
-
- if (selection.isCollapsed()) {
- rng = selection.getRng(true);
- container = rng.startContainer;
- offset = rng.startOffset;
- container = getParentCaretContainer(container) || container;
-
- // Is in noneditable parent
- if (nonEditableParent = getNonEditableParent(container)) {
- removeNodeIfNotParent(nonEditableParent);
- return false;
- }
-
- // Check if the caret is in the middle of a text node
- if (container.nodeType == 3 && (backspace ? offset > 0 : offset < container.nodeValue.length)) {
- return true;
- }
-
- // Resolve container index
- if (container.nodeType == 1) {
- container = container.childNodes[offset] || container;
- }
-
- // Check if previous or next tree node is non editable then block the event
- if (isNextPrevTreeNodeNonEditable()) {
- return false;
- }
- }
-
- return true;
- }
-
- startElement = selection.getStart()
- endElement = selection.getEnd();
-
- // Disable all key presses in contentEditable=false except delete or backspace
- nonEditableParent = getNonEditableParent(startElement) || getNonEditableParent(endElement);
- if (nonEditableParent && (keyCode < 112 || keyCode > 124) && keyCode != VK.DELETE && keyCode != VK.BACKSPACE) {
- // Is Ctrl+c, Ctrl+v or Ctrl+x then use default browser behavior
- if ((tinymce.isMac ? e.metaKey : e.ctrlKey) && (keyCode == 67 || keyCode == 88 || keyCode == 86)) {
- return;
- }
-
- e.preventDefault();
-
- // Arrow left/right select the element and collapse left/right
- if (keyCode == VK.LEFT || keyCode == VK.RIGHT) {
- var left = keyCode == VK.LEFT;
- // If a block element find previous or next element to position the caret
- if (ed.dom.isBlock(nonEditableParent)) {
- var targetElement = left ? nonEditableParent.previousSibling : nonEditableParent.nextSibling;
- var walker = new TreeWalker(targetElement, targetElement);
- var caretElement = left ? walker.prev() : walker.next();
- positionCaretOnElement(caretElement, !left);
- } else {
- positionCaretOnElement(nonEditableParent, left);
- }
- }
- } else {
- // Is arrow left/right, backspace or delete
- if (keyCode == VK.LEFT || keyCode == VK.RIGHT || keyCode == VK.BACKSPACE || keyCode == VK.DELETE) {
- caretContainer = getParentCaretContainer(startElement);
- if (caretContainer) {
- // Arrow left or backspace
- if (keyCode == VK.LEFT || keyCode == VK.BACKSPACE) {
- nonEditableParent = getNonEmptyTextNodeSibling(caretContainer, true);
-
- if (nonEditableParent && getContentEditable(nonEditableParent) === "false") {
- e.preventDefault();
-
- if (keyCode == VK.LEFT) {
- positionCaretOnElement(nonEditableParent, true);
- } else {
- dom.remove(nonEditableParent);
- return;
- }
- } else {
- removeCaretContainer(caretContainer);
- }
- }
-
- // Arrow right or delete
- if (keyCode == VK.RIGHT || keyCode == VK.DELETE) {
- nonEditableParent = getNonEmptyTextNodeSibling(caretContainer);
-
- if (nonEditableParent && getContentEditable(nonEditableParent) === "false") {
- e.preventDefault();
-
- if (keyCode == VK.RIGHT) {
- positionCaretOnElement(nonEditableParent, false);
- } else {
- dom.remove(nonEditableParent);
- return;
- }
- } else {
- removeCaretContainer(caretContainer);
- }
- }
- }
-
- if ((keyCode == VK.BACKSPACE || keyCode == VK.DELETE) && !canDelete(keyCode == VK.BACKSPACE)) {
- e.preventDefault();
- return false;
- }
- }
- }
- };
-
- ed.onMouseDown.addToTop(function(ed, e) {
- var node = ed.selection.getNode();
-
- if (getContentEditable(node) === "false" && node == e.target) {
- // Expand selection on mouse down we can't block the default event since it's used for drag/drop
- moveSelection();
- }
- });
-
- ed.onMouseUp.addToTop(moveSelection);
- ed.onKeyDown.addToTop(handleKey);
- ed.onKeyUp.addToTop(moveSelection);
- };
-
- tinymce.create('tinymce.plugins.NonEditablePlugin', {
- init : function(ed, url) {
- var editClass, nonEditClass, nonEditableRegExps;
-
- // Converts configured regexps to noneditable span items
- function convertRegExpsToNonEditable(ed, args) {
- var i = nonEditableRegExps.length, content = args.content, cls = tinymce.trim(nonEditClass);
-
- // Don't replace the variables when raw is used for example on undo/redo
- if (args.format == "raw") {
- return;
- }
-
- while (i--) {
- content = content.replace(nonEditableRegExps[i], function(match) {
- var args = arguments, index = args[args.length - 2];
-
- // Is value inside an attribute then don't replace
- if (index > 0 && content.charAt(index - 1) == '"') {
- return match;
- }
-
- return '<span class="' + cls + '" data-mce-content="' + ed.dom.encode(args[0]) + '">' + ed.dom.encode(typeof(args[1]) === "string" ? args[1] : args[0]) + '</span>';
- });
- }
-
- args.content = content;
- };
-
- editClass = " " + tinymce.trim(ed.getParam("noneditable_editable_class", "mceEditable")) + " ";
- nonEditClass = " " + tinymce.trim(ed.getParam("noneditable_noneditable_class", "mceNonEditable")) + " ";
-
- // Setup noneditable regexps array
- nonEditableRegExps = ed.getParam("noneditable_regexp");
- if (nonEditableRegExps && !nonEditableRegExps.length) {
- nonEditableRegExps = [nonEditableRegExps];
- }
-
- ed.onPreInit.add(function() {
- handleContentEditableSelection(ed);
-
- if (nonEditableRegExps) {
- ed.selection.onBeforeSetContent.add(convertRegExpsToNonEditable);
- ed.onBeforeSetContent.add(convertRegExpsToNonEditable);
- }
-
- // Apply contentEditable true/false on elements with the noneditable/editable classes
- ed.parser.addAttributeFilter('class', function(nodes) {
- var i = nodes.length, className, node;
-
- while (i--) {
- node = nodes[i];
- className = " " + node.attr("class") + " ";
-
- if (className.indexOf(editClass) !== -1) {
- node.attr(internalName, "true");
- } else if (className.indexOf(nonEditClass) !== -1) {
- node.attr(internalName, "false");
- }
- }
- });
-
- // Remove internal name
- ed.serializer.addAttributeFilter(internalName, function(nodes, name) {
- var i = nodes.length, node;
-
- while (i--) {
- node = nodes[i];
-
- if (nonEditableRegExps && node.attr('data-mce-content')) {
- node.name = "#text";
- node.type = 3;
- node.raw = true;
- node.value = node.attr('data-mce-content');
- } else {
- node.attr(externalName, null);
- node.attr(internalName, null);
- }
- }
- });
-
- // Convert external name into internal name
- ed.parser.addAttributeFilter(externalName, function(nodes, name) {
- var i = nodes.length, node;
-
- while (i--) {
- node = nodes[i];
- node.attr(internalName, node.attr(externalName));
- node.attr(externalName, null);
- }
- });
- });
- },
-
- getInfo : function() {
- return {
- longname : 'Non editable elements',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('noneditable', tinymce.plugins.NonEditablePlugin);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js
deleted file mode 100644
index 35085e8ad..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.PageBreakPlugin",{init:function(b,d){var f='<img src="'+b.theme.url+'/img/trans.gif" class="mcePageBreak mceItemNoResize" />',a="mcePageBreak",c=b.getParam("pagebreak_separator","<!-- pagebreak -->"),e;e=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(g){return"\\"+g}),"g");b.addCommand("mcePageBreak",function(){b.execCommand("mceInsertContent",0,f)});b.addButton("pagebreak",{title:"pagebreak.desc",cmd:a});b.onInit.add(function(){if(b.theme.onResolveName){b.theme.onResolveName.add(function(g,h){if(h.node.nodeName=="IMG"&&b.dom.hasClass(h.node,a)){h.name="pagebreak"}})}});b.onClick.add(function(g,h){h=h.target;if(h.nodeName==="IMG"&&g.dom.hasClass(h,a)){g.selection.select(h)}});b.onNodeChange.add(function(h,g,i){g.setActive("pagebreak",i.nodeName==="IMG"&&h.dom.hasClass(i,a))});b.onBeforeSetContent.add(function(g,h){h.content=h.content.replace(e,f)});b.onPostProcess.add(function(g,h){if(h.get){h.content=h.content.replace(/<img[^>]+>/g,function(i){if(i.indexOf('class="mcePageBreak')!==-1){i=c}return i})}})},getInfo:function(){return{longname:"PageBreak",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("pagebreak",tinymce.plugins.PageBreakPlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js
deleted file mode 100644
index a094c1916..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.PageBreakPlugin', {
- init : function(ed, url) {
- var pb = '<img src="' + ed.theme.url + '/img/trans.gif" class="mcePageBreak mceItemNoResize" />', cls = 'mcePageBreak', sep = ed.getParam('pagebreak_separator', '<!-- pagebreak -->'), pbRE;
-
- pbRE = new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) {return '\\' + a;}), 'g');
-
- // Register commands
- ed.addCommand('mcePageBreak', function() {
- ed.execCommand('mceInsertContent', 0, pb);
- });
-
- // Register buttons
- ed.addButton('pagebreak', {title : 'pagebreak.desc', cmd : cls});
-
- ed.onInit.add(function() {
- if (ed.theme.onResolveName) {
- ed.theme.onResolveName.add(function(th, o) {
- if (o.node.nodeName == 'IMG' && ed.dom.hasClass(o.node, cls))
- o.name = 'pagebreak';
- });
- }
- });
-
- ed.onClick.add(function(ed, e) {
- e = e.target;
-
- if (e.nodeName === 'IMG' && ed.dom.hasClass(e, cls))
- ed.selection.select(e);
- });
-
- ed.onNodeChange.add(function(ed, cm, n) {
- cm.setActive('pagebreak', n.nodeName === 'IMG' && ed.dom.hasClass(n, cls));
- });
-
- ed.onBeforeSetContent.add(function(ed, o) {
- o.content = o.content.replace(pbRE, pb);
- });
-
- ed.onPostProcess.add(function(ed, o) {
- if (o.get)
- o.content = o.content.replace(/<img[^>]+>/g, function(im) {
- if (im.indexOf('class="mcePageBreak') !== -1)
- im = sep;
-
- return im;
- });
- });
- },
-
- getInfo : function() {
- return {
- longname : 'PageBreak',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('pagebreak', tinymce.plugins.PageBreakPlugin);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js
deleted file mode 100644
index be7eee8f1..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var c=tinymce.each,a={paste_auto_cleanup_on_paste:true,paste_enable_default_filters:true,paste_block_drop:false,paste_retain_style_properties:"none",paste_strip_class_attributes:"mso",paste_remove_spans:false,paste_remove_styles:false,paste_remove_styles_if_webkit:true,paste_convert_middot_lists:true,paste_convert_headers_to_strong:false,paste_dialog_width:"450",paste_dialog_height:"400",paste_text_use_dialog:false,paste_text_sticky:false,paste_text_sticky_default:false,paste_text_notifyalways:false,paste_text_linebreaktype:"combined",paste_text_replacements:[[/\u2026/g,"..."],[/[\x93\x94\u201c\u201d]/g,'"'],[/[\x60\x91\x92\u2018\u2019]/g,"'"]]};function b(d,e){return d.getParam(e,a[e])}tinymce.create("tinymce.plugins.PastePlugin",{init:function(d,e){var f=this;f.editor=d;f.url=e;f.onPreProcess=new tinymce.util.Dispatcher(f);f.onPostProcess=new tinymce.util.Dispatcher(f);f.onPreProcess.add(f._preProcess);f.onPostProcess.add(f._postProcess);f.onPreProcess.add(function(i,j){d.execCallback("paste_preprocess",i,j)});f.onPostProcess.add(function(i,j){d.execCallback("paste_postprocess",i,j)});d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){return false}});d.pasteAsPlainText=b(d,"paste_text_sticky_default");function h(l,j){var k=d.dom,i;f.onPreProcess.dispatch(f,l);l.node=k.create("div",0,l.content);if(tinymce.isGecko){i=d.selection.getRng(true);if(i.startContainer==i.endContainer&&i.startContainer.nodeType==3){if(l.node.childNodes.length===1&&/^(p|h[1-6]|pre)$/i.test(l.node.firstChild.nodeName)&&l.content.indexOf("__MCE_ITEM__")===-1){k.remove(l.node.firstChild,true)}}}f.onPostProcess.dispatch(f,l);l.content=d.serializer.serialize(l.node,{getInner:1,forced_root_block:""});if((!j)&&(d.pasteAsPlainText)){f._insertPlainText(l.content);if(!b(d,"paste_text_sticky")){d.pasteAsPlainText=false;d.controlManager.setActive("pastetext",false)}}else{f._insert(l.content)}}d.addCommand("mceInsertClipboardContent",function(i,j){h(j,true)});if(!b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(j,i){var k=tinymce.util.Cookie;d.pasteAsPlainText=!d.pasteAsPlainText;d.controlManager.setActive("pastetext",d.pasteAsPlainText);if((d.pasteAsPlainText)&&(!k.get("tinymcePasteText"))){if(b(d,"paste_text_sticky")){d.windowManager.alert(d.translate("paste.plaintext_mode_sticky"))}else{d.windowManager.alert(d.translate("paste.plaintext_mode"))}if(!b(d,"paste_text_notifyalways")){k.set("tinymcePasteText","1",new Date(new Date().getFullYear()+1,12,31))}}})}d.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});d.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"});function g(s){var l,p,j,t,k=d.selection,o=d.dom,q=d.getBody(),i,r;if(s.clipboardData||o.doc.dataTransfer){r=(s.clipboardData||o.doc.dataTransfer).getData("Text");if(d.pasteAsPlainText){s.preventDefault();h({content:o.encode(r).replace(/\r?\n/g,"<br />")});return}}if(o.get("_mcePaste")){return}l=o.add(q,"div",{id:"_mcePaste","class":"mcePaste","data-mce-bogus":"1"},"\uFEFF\uFEFF");if(q!=d.getDoc().body){i=o.getPos(d.selection.getStart(),q).y}else{i=q.scrollTop+o.getViewPort(d.getWin()).y}o.setStyles(l,{position:"absolute",left:tinymce.isGecko?-40:0,top:i-25,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){t=k.getRng();j=o.doc.body.createTextRange();j.moveToElementText(l);j.execCommand("Paste");o.remove(l);if(l.innerHTML==="\uFEFF\uFEFF"){d.execCommand("mcePasteWord");s.preventDefault();return}k.setRng(t);k.setContent("");setTimeout(function(){h({content:l.innerHTML})},0);return tinymce.dom.Event.cancel(s)}else{function m(n){n.preventDefault()}o.bind(d.getDoc(),"mousedown",m);o.bind(d.getDoc(),"keydown",m);p=d.selection.getRng();l=l.firstChild;j=d.getDoc().createRange();j.setStart(l,0);j.setEnd(l,2);k.setRng(j);window.setTimeout(function(){var u="",n;if(!o.select("div.mcePaste > div.mcePaste").length){n=o.select("div.mcePaste");c(n,function(w){var v=w.firstChild;if(v&&v.nodeName=="DIV"&&v.style.marginTop&&v.style.backgroundColor){o.remove(v,1)}c(o.select("span.Apple-style-span",w),function(x){o.remove(x,1)});c(o.select("br[data-mce-bogus]",w),function(x){o.remove(x)});if(w.parentNode.className!="mcePaste"){u+=w.innerHTML}})}else{u="<p>"+o.encode(r).replace(/\r?\n\r?\n/g,"</p><p>").replace(/\r?\n/g,"<br />")+"</p>"}c(o.select("div.mcePaste"),function(v){o.remove(v)});if(p){k.setRng(p)}h({content:u});o.unbind(d.getDoc(),"mousedown",m);o.unbind(d.getDoc(),"keydown",m)},0)}}if(b(d,"paste_auto_cleanup_on_paste")){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){g(j)}})}else{d.onPaste.addToTop(function(i,j){return g(j)})}}d.onInit.add(function(){d.controlManager.setActive("pastetext",d.pasteAsPlainText);if(b(d,"paste_block_drop")){d.dom.bind(d.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(i){i.preventDefault();i.stopPropagation();return false})}});f._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(g,e){var k=this.editor,j=e.content,p=tinymce.grep,n=tinymce.explode,f=tinymce.trim,l,i;function d(h){c(h,function(o){if(o.constructor==RegExp){j=j.replace(o,"")}else{j=j.replace(o[0],o[1])}})}if(k.settings.paste_enable_default_filters==false){return}if(tinymce.isIE&&document.documentMode>=9&&/<(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)/.test(e.content)){d([[/(?:<br>&nbsp;[\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br>&nbsp;[\s\r\n]+|<br>)*/g,"$1"]]);d([[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}if(/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(j)||e.wordContent){e.wordContent=true;d([/^\s*(&nbsp;)+/gi,/(&nbsp;|<br[^>]*>)+\s*$/gi]);if(b(k,"paste_convert_headers_to_strong")){j=j.replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"<p><strong>$1</strong></p>")}if(b(k,"paste_convert_middot_lists")){d([[/<!--\[if !supportLists\]-->/gi,"$&__MCE_ITEM__"],[/(<span[^>]+(?:mso-list:|:\s*symbol)[^>]+>)/gi,"$1__MCE_ITEM__"],[/(<p[^>]+(?:MsoListParagraph)[^>]+>)/gi,"$1__MCE_ITEM__"]])}d([/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\u00a0"]]);do{l=j.length;j=j.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1")}while(l!=j.length);if(b(k,"paste_retain_style_properties").replace(/^none$/i,"").length==0){j=j.replace(/<\/?span[^>]*>/gi,"")}else{d([[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(o,h){return(h.length>0)?h.replace(/./," ").slice(Math.floor(h.length/2)).split("").join("\u00a0"):""}],[/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,function(t,h,r){var u=[],o=0,q=n(f(r).replace(/&quot;/gi,"'"),";");c(q,function(s){var w,y,z=n(s,":");function x(A){return A+((A!=="0")&&(/\d$/.test(A)))?"px":""}if(z.length==2){w=z[0].toLowerCase();y=z[1].toLowerCase();switch(w){case"mso-padding-alt":case"mso-padding-top-alt":case"mso-padding-right-alt":case"mso-padding-bottom-alt":case"mso-padding-left-alt":case"mso-margin-alt":case"mso-margin-top-alt":case"mso-margin-right-alt":case"mso-margin-bottom-alt":case"mso-margin-left-alt":case"mso-table-layout-alt":case"mso-height":case"mso-width":case"mso-vertical-align-alt":u[o++]=w.replace(/^mso-|-alt$/g,"")+":"+x(y);return;case"horiz-align":u[o++]="text-align:"+y;return;case"vert-align":u[o++]="vertical-align:"+y;return;case"font-color":case"mso-foreground":u[o++]="color:"+y;return;case"mso-background":case"mso-highlight":u[o++]="background:"+y;return;case"mso-default-height":u[o++]="min-height:"+x(y);return;case"mso-default-width":u[o++]="min-width:"+x(y);return;case"mso-padding-between-alt":u[o++]="border-collapse:separate;border-spacing:"+x(y);return;case"text-line-through":if((y=="single")||(y=="double")){u[o++]="text-decoration:line-through"}return;case"mso-zero-height":if(y=="yes"){u[o++]="display:none"}return}if(/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(w)){return}u[o++]=w+":"+z[1]}});if(o>0){return h+' style="'+u.join(";")+'"'}else{return h}}]])}}if(b(k,"paste_convert_headers_to_strong")){d([[/<h[1-6][^>]*>/gi,"<p><strong>"],[/<\/h[1-6][^>]*>/gi,"</strong></p>"]])}d([[/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi,""]]);i=b(k,"paste_strip_class_attributes");if(i!=="none"){function m(q,o){if(i==="all"){return""}var h=p(n(o.replace(/^(["'])(.*)\1$/,"$2")," "),function(r){return(/^(?!mso)/i.test(r))});return h.length?' class="'+h.join(" ")+'"':""}j=j.replace(/ class="([^"]+)"/gi,m);j=j.replace(/ class=([\-\w]+)/gi,m)}if(b(k,"paste_remove_spans")){j=j.replace(/<\/?span[^>]*>/gi,"")}e.content=j},_postProcess:function(g,i){var f=this,e=f.editor,h=e.dom,d;if(e.settings.paste_enable_default_filters==false){return}if(i.wordContent){c(h.select("a",i.node),function(j){if(!j.href||j.href.indexOf("#_Toc")!=-1){h.remove(j,1)}});if(b(e,"paste_convert_middot_lists")){f._convertLists(g,i)}d=b(e,"paste_retain_style_properties");if((tinymce.is(d,"string"))&&(d!=="all")&&(d!=="*")){d=tinymce.explode(d.replace(/^none$/i,""));c(h.select("*",i.node),function(m){var n={},k=0,l,o,j;if(d){for(l=0;l<d.length;l++){o=d[l];j=h.getStyle(m,o);if(j){n[o]=j;k++}}}h.setAttrib(m,"style","");if(d&&k>0){h.setStyles(m,n)}else{if(m.nodeName=="SPAN"&&!m.className){h.remove(m,true)}}})}}if(b(e,"paste_remove_styles")||(b(e,"paste_remove_styles_if_webkit")&&tinymce.isWebKit)){c(h.select("*[style]",i.node),function(j){j.removeAttribute("style");j.removeAttribute("data-mce-style")})}else{if(tinymce.isWebKit){c(h.select("*",i.node),function(j){j.removeAttribute("data-mce-style")})}}},_convertLists:function(g,e){var i=g.editor.dom,h,l,d=-1,f,m=[],k,j;c(i.select("p",e.node),function(t){var q,u="",s,r,n,o;for(q=t.firstChild;q&&q.nodeType==3;q=q.nextSibling){u+=q.nodeValue}u=t.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/&nbsp;/g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(u)){s="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(u)){s="ol"}if(s){f=parseFloat(t.style.marginLeft||0);if(f>d){m.push(f)}if(!h||s!=k){h=i.create(s);i.insertAfter(h,t)}else{if(f>d){h=l.appendChild(i.create(s))}else{if(f<d){n=tinymce.inArray(m,f);o=i.getParents(h.parentNode,s);h=o[o.length-1-n]||h}}}c(i.select("span",t),function(v){var p=v.innerHTML.replace(/<\/?\w+[^>]*>/gi,"");if(s=="ul"&&/^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(p)){i.remove(v)}else{if(/^__MCE_ITEM__[\s\S]*\w+\.(&nbsp;|\u00a0)*\s*/.test(p)){i.remove(v)}}});r=t.innerHTML;if(s=="ul"){r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*(&nbsp;|\u00a0)+\s*/,"")}else{r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.(&nbsp;|\u00a0)+\s*/,"")}l=h.appendChild(i.create("li",0,r));i.remove(t);d=f;k=s}else{h=d=0}});j=e.node.innerHTML;if(j.indexOf("__MCE_ITEM__")!=-1){e.node.innerHTML=j.replace(/__MCE_ITEM__/g,"")}},_insert:function(f,d){var e=this.editor,g=e.selection.getRng();if(!e.selection.isCollapsed()&&g.startContainer!=g.endContainer){e.getDoc().execCommand("Delete",false,null)}e.execCommand("mceInsertContent",false,f,{skip_undo:d})},_insertPlainText:function(g){var d=this.editor,e=b(d,"paste_text_linebreaktype"),i=b(d,"paste_text_replacements"),f=tinymce.is;function h(j){c(j,function(k){if(k.constructor==RegExp){g=g.replace(k,"")}else{g=g.replace(k[0],k[1])}})}if((typeof(g)==="string")&&(g.length>0)){if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(g)){h([/[\n\r]+/g])}else{h([/\r+/g])}h([[/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi,"\n\n"],[/<br[^>]*>|<\/tr>/gi,"\n"],[/<\/t[dh]>\s*<t[dh][^>]*>/gi,"\t"],/<[a-z!\/?][^>]*>/gi,[/&nbsp;/gi," "],[/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi,"$1"],[/\n{3,}/g,"\n\n"]]);g=d.dom.decode(tinymce.html.Entities.encodeRaw(g));if(f(i,"array")){h(i)}else{if(f(i,"string")){h(new RegExp(i,"gi"))}}if(e=="none"){h([[/\n+/g," "]])}else{if(e=="br"){h([[/\n/g,"<br />"]])}else{if(e=="p"){h([[/\n+/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"]])}else{h([[/\n\n/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"],[/\n/g,"<br />"]])}}}d.execCommand("mceInsertContent",false,g)}},_legacySupport:function(){var e=this,d=e.editor;d.addCommand("mcePasteWord",function(){d.windowManager.open({file:e.url+"/pasteword.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})});if(b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(){d.windowManager.open({file:e.url+"/pastetext.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})})}d.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js
deleted file mode 100644
index 9f1c35476..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js
+++ /dev/null
@@ -1,871 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var each = tinymce.each,
- defs = {
- paste_auto_cleanup_on_paste : true,
- paste_enable_default_filters : true,
- paste_block_drop : false,
- paste_retain_style_properties : "none",
- paste_strip_class_attributes : "mso",
- paste_remove_spans : false,
- paste_remove_styles : false,
- paste_remove_styles_if_webkit : true,
- paste_convert_middot_lists : true,
- paste_convert_headers_to_strong : false,
- paste_dialog_width : "450",
- paste_dialog_height : "400",
- paste_text_use_dialog : false,
- paste_text_sticky : false,
- paste_text_sticky_default : false,
- paste_text_notifyalways : false,
- paste_text_linebreaktype : "combined",
- paste_text_replacements : [
- [/\u2026/g, "..."],
- [/[\x93\x94\u201c\u201d]/g, '"'],
- [/[\x60\x91\x92\u2018\u2019]/g, "'"]
- ]
- };
-
- function getParam(ed, name) {
- return ed.getParam(name, defs[name]);
- }
-
- tinymce.create('tinymce.plugins.PastePlugin', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
- t.url = url;
-
- // Setup plugin events
- t.onPreProcess = new tinymce.util.Dispatcher(t);
- t.onPostProcess = new tinymce.util.Dispatcher(t);
-
- // Register default handlers
- t.onPreProcess.add(t._preProcess);
- t.onPostProcess.add(t._postProcess);
-
- // Register optional preprocess handler
- t.onPreProcess.add(function(pl, o) {
- ed.execCallback('paste_preprocess', pl, o);
- });
-
- // Register optional postprocess
- t.onPostProcess.add(function(pl, o) {
- ed.execCallback('paste_postprocess', pl, o);
- });
-
- ed.onKeyDown.addToTop(function(ed, e) {
- // Block ctrl+v from adding an undo level since the default logic in tinymce.Editor will add that
- if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45))
- return false; // Stop other listeners
- });
-
- // Initialize plain text flag
- ed.pasteAsPlainText = getParam(ed, 'paste_text_sticky_default');
-
- // This function executes the process handlers and inserts the contents
- // force_rich overrides plain text mode set by user, important for pasting with execCommand
- function process(o, force_rich) {
- var dom = ed.dom, rng;
-
- // Execute pre process handlers
- t.onPreProcess.dispatch(t, o);
-
- // Create DOM structure
- o.node = dom.create('div', 0, o.content);
-
- // If pasting inside the same element and the contents is only one block
- // remove the block and keep the text since Firefox will copy parts of pre and h1-h6 as a pre element
- if (tinymce.isGecko) {
- rng = ed.selection.getRng(true);
- if (rng.startContainer == rng.endContainer && rng.startContainer.nodeType == 3) {
- // Is only one block node and it doesn't contain word stuff
- if (o.node.childNodes.length === 1 && /^(p|h[1-6]|pre)$/i.test(o.node.firstChild.nodeName) && o.content.indexOf('__MCE_ITEM__') === -1)
- dom.remove(o.node.firstChild, true);
- }
- }
-
- // Execute post process handlers
- t.onPostProcess.dispatch(t, o);
-
- // Serialize content
- o.content = ed.serializer.serialize(o.node, {getInner : 1, forced_root_block : ''});
-
- // Plain text option active?
- if ((!force_rich) && (ed.pasteAsPlainText)) {
- t._insertPlainText(o.content);
-
- if (!getParam(ed, "paste_text_sticky")) {
- ed.pasteAsPlainText = false;
- ed.controlManager.setActive("pastetext", false);
- }
- } else {
- t._insert(o.content);
- }
- }
-
- // Add command for external usage
- ed.addCommand('mceInsertClipboardContent', function(u, o) {
- process(o, true);
- });
-
- if (!getParam(ed, "paste_text_use_dialog")) {
- ed.addCommand('mcePasteText', function(u, v) {
- var cookie = tinymce.util.Cookie;
-
- ed.pasteAsPlainText = !ed.pasteAsPlainText;
- ed.controlManager.setActive('pastetext', ed.pasteAsPlainText);
-
- if ((ed.pasteAsPlainText) && (!cookie.get("tinymcePasteText"))) {
- if (getParam(ed, "paste_text_sticky")) {
- ed.windowManager.alert(ed.translate('paste.plaintext_mode_sticky'));
- } else {
- ed.windowManager.alert(ed.translate('paste.plaintext_mode'));
- }
-
- if (!getParam(ed, "paste_text_notifyalways")) {
- cookie.set("tinymcePasteText", "1", new Date(new Date().getFullYear() + 1, 12, 31))
- }
- }
- });
- }
-
- ed.addButton('pastetext', {title: 'paste.paste_text_desc', cmd: 'mcePasteText'});
- ed.addButton('selectall', {title: 'paste.selectall_desc', cmd: 'selectall'});
-
- // This function grabs the contents from the clipboard by adding a
- // hidden div and placing the caret inside it and after the browser paste
- // is done it grabs that contents and processes that
- function grabContent(e) {
- var n, or, rng, oldRng, sel = ed.selection, dom = ed.dom, body = ed.getBody(), posY, textContent;
-
- // Check if browser supports direct plaintext access
- if (e.clipboardData || dom.doc.dataTransfer) {
- textContent = (e.clipboardData || dom.doc.dataTransfer).getData('Text');
-
- if (ed.pasteAsPlainText) {
- e.preventDefault();
- process({content : dom.encode(textContent).replace(/\r?\n/g, '<br />')});
- return;
- }
- }
-
- if (dom.get('_mcePaste'))
- return;
-
- // Create container to paste into
- n = dom.add(body, 'div', {id : '_mcePaste', 'class' : 'mcePaste', 'data-mce-bogus' : '1'}, '\uFEFF\uFEFF');
-
- // If contentEditable mode we need to find out the position of the closest element
- if (body != ed.getDoc().body)
- posY = dom.getPos(ed.selection.getStart(), body).y;
- else
- posY = body.scrollTop + dom.getViewPort(ed.getWin()).y;
-
- // Styles needs to be applied after the element is added to the document since WebKit will otherwise remove all styles
- // If also needs to be in view on IE or the paste would fail
- dom.setStyles(n, {
- position : 'absolute',
- left : tinymce.isGecko ? -40 : 0, // Need to move it out of site on Gecko since it will othewise display a ghost resize rect for the div
- top : posY - 25,
- width : 1,
- height : 1,
- overflow : 'hidden'
- });
-
- if (tinymce.isIE) {
- // Store away the old range
- oldRng = sel.getRng();
-
- // Select the container
- rng = dom.doc.body.createTextRange();
- rng.moveToElementText(n);
- rng.execCommand('Paste');
-
- // Remove container
- dom.remove(n);
-
- // Check if the contents was changed, if it wasn't then clipboard extraction failed probably due
- // to IE security settings so we pass the junk though better than nothing right
- if (n.innerHTML === '\uFEFF\uFEFF') {
- ed.execCommand('mcePasteWord');
- e.preventDefault();
- return;
- }
-
- // Restore the old range and clear the contents before pasting
- sel.setRng(oldRng);
- sel.setContent('');
-
- // For some odd reason we need to detach the the mceInsertContent call from the paste event
- // It's like IE has a reference to the parent element that you paste in and the selection gets messed up
- // when it tries to restore the selection
- setTimeout(function() {
- // Process contents
- process({content : n.innerHTML});
- }, 0);
-
- // Block the real paste event
- return tinymce.dom.Event.cancel(e);
- } else {
- function block(e) {
- e.preventDefault();
- };
-
- // Block mousedown and click to prevent selection change
- dom.bind(ed.getDoc(), 'mousedown', block);
- dom.bind(ed.getDoc(), 'keydown', block);
-
- or = ed.selection.getRng();
-
- // Move select contents inside DIV
- n = n.firstChild;
- rng = ed.getDoc().createRange();
- rng.setStart(n, 0);
- rng.setEnd(n, 2);
- sel.setRng(rng);
-
- // Wait a while and grab the pasted contents
- window.setTimeout(function() {
- var h = '', nl;
-
- // Paste divs duplicated in paste divs seems to happen when you paste plain text so lets first look for that broken behavior in WebKit
- if (!dom.select('div.mcePaste > div.mcePaste').length) {
- nl = dom.select('div.mcePaste');
-
- // WebKit will split the div into multiple ones so this will loop through then all and join them to get the whole HTML string
- each(nl, function(n) {
- var child = n.firstChild;
-
- // WebKit inserts a DIV container with lots of odd styles
- if (child && child.nodeName == 'DIV' && child.style.marginTop && child.style.backgroundColor) {
- dom.remove(child, 1);
- }
-
- // Remove apply style spans
- each(dom.select('span.Apple-style-span', n), function(n) {
- dom.remove(n, 1);
- });
-
- // Remove bogus br elements
- each(dom.select('br[data-mce-bogus]', n), function(n) {
- dom.remove(n);
- });
-
- // WebKit will make a copy of the DIV for each line of plain text pasted and insert them into the DIV
- if (n.parentNode.className != 'mcePaste')
- h += n.innerHTML;
- });
- } else {
- // Found WebKit weirdness so force the content into paragraphs this seems to happen when you paste plain text from Nodepad etc
- // So this logic will replace double enter with paragraphs and single enter with br so it kind of looks the same
- h = '<p>' + dom.encode(textContent).replace(/\r?\n\r?\n/g, '</p><p>').replace(/\r?\n/g, '<br />') + '</p>';
- }
-
- // Remove the nodes
- each(dom.select('div.mcePaste'), function(n) {
- dom.remove(n);
- });
-
- // Restore the old selection
- if (or)
- sel.setRng(or);
-
- process({content : h});
-
- // Unblock events ones we got the contents
- dom.unbind(ed.getDoc(), 'mousedown', block);
- dom.unbind(ed.getDoc(), 'keydown', block);
- }, 0);
- }
- }
-
- // Check if we should use the new auto process method
- if (getParam(ed, "paste_auto_cleanup_on_paste")) {
- // Is it's Opera or older FF use key handler
- if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) {
- ed.onKeyDown.addToTop(function(ed, e) {
- if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45))
- grabContent(e);
- });
- } else {
- // Grab contents on paste event on Gecko and WebKit
- ed.onPaste.addToTop(function(ed, e) {
- return grabContent(e);
- });
- }
- }
-
- ed.onInit.add(function() {
- ed.controlManager.setActive("pastetext", ed.pasteAsPlainText);
-
- // Block all drag/drop events
- if (getParam(ed, "paste_block_drop")) {
- ed.dom.bind(ed.getBody(), ['dragend', 'dragover', 'draggesture', 'dragdrop', 'drop', 'drag'], function(e) {
- e.preventDefault();
- e.stopPropagation();
-
- return false;
- });
- }
- });
-
- // Add legacy support
- t._legacySupport();
- },
-
- getInfo : function() {
- return {
- longname : 'Paste text/word',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- _preProcess : function(pl, o) {
- var ed = this.editor,
- h = o.content,
- grep = tinymce.grep,
- explode = tinymce.explode,
- trim = tinymce.trim,
- len, stripClass;
-
- //console.log('Before preprocess:' + o.content);
-
- function process(items) {
- each(items, function(v) {
- // Remove or replace
- if (v.constructor == RegExp)
- h = h.replace(v, '');
- else
- h = h.replace(v[0], v[1]);
- });
- }
-
- if (ed.settings.paste_enable_default_filters == false) {
- return;
- }
-
- // IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser
- if (tinymce.isIE && document.documentMode >= 9 && /<(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)/.test(o.content)) {
- // IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser
- process([[/(?:<br>&nbsp;[\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br>&nbsp;[\s\r\n]+|<br>)*/g, '$1']]);
-
- // IE9 also adds an extra BR element for each soft-linefeed and it also adds a BR for each word wrap break
- process([
- [/<br><br>/g, '<BR><BR>'], // Replace multiple BR elements with uppercase BR to keep them intact
- [/<br>/g, ' '], // Replace single br elements with space since they are word wrap BR:s
- [/<BR><BR>/g, '<br>'] // Replace back the double brs but into a single BR
- ]);
- }
-
- // Detect Word content and process it more aggressive
- if (/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(h) || o.wordContent) {
- o.wordContent = true; // Mark the pasted contents as word specific content
- //console.log('Word contents detected.');
-
- // Process away some basic content
- process([
- /^\s*(&nbsp;)+/gi, // &nbsp; entities at the start of contents
- /(&nbsp;|<br[^>]*>)+\s*$/gi // &nbsp; entities at the end of contents
- ]);
-
- if (getParam(ed, "paste_convert_headers_to_strong")) {
- h = h.replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, "<p><strong>$1</strong></p>");
- }
-
- if (getParam(ed, "paste_convert_middot_lists")) {
- process([
- [/<!--\[if !supportLists\]-->/gi, '$&__MCE_ITEM__'], // Convert supportLists to a list item marker
- [/(<span[^>]+(?:mso-list:|:\s*symbol)[^>]+>)/gi, '$1__MCE_ITEM__'], // Convert mso-list and symbol spans to item markers
- [/(<p[^>]+(?:MsoListParagraph)[^>]+>)/gi, '$1__MCE_ITEM__'] // Convert mso-list and symbol paragraphs to item markers (FF)
- ]);
- }
-
- process([
- // Word comments like conditional comments etc
- /<!--[\s\S]+?-->/gi,
-
- // Remove comments, scripts (e.g., msoShowComment), XML tag, VML content, MS Office namespaced tags, and a few other tags
- /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,
-
- // Convert <s> into <strike> for line-though
- [/<(\/?)s>/gi, "<$1strike>"],
-
- // Replace nsbp entites to char since it's easier to handle
- [/&nbsp;/gi, "\u00a0"]
- ]);
-
- // Remove bad attributes, with or without quotes, ensuring that attribute text is really inside a tag.
- // If JavaScript had a RegExp look-behind, we could have integrated this with the last process() array and got rid of the loop. But alas, it does not, so we cannot.
- do {
- len = h.length;
- h = h.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi, "$1");
- } while (len != h.length);
-
- // Remove all spans if no styles is to be retained
- if (getParam(ed, "paste_retain_style_properties").replace(/^none$/i, "").length == 0) {
- h = h.replace(/<\/?span[^>]*>/gi, "");
- } else {
- // We're keeping styles, so at least clean them up.
- // CSS Reference: http://msdn.microsoft.com/en-us/library/aa155477.aspx
-
- process([
- // Convert <span style="mso-spacerun:yes">___</span> to string of alternating breaking/non-breaking spaces of same length
- [/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,
- function(str, spaces) {
- return (spaces.length > 0)? spaces.replace(/./, " ").slice(Math.floor(spaces.length/2)).split("").join("\u00a0") : "";
- }
- ],
-
- // Examine all styles: delete junk, transform some, and keep the rest
- [/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,
- function(str, tag, style) {
- var n = [],
- i = 0,
- s = explode(trim(style).replace(/&quot;/gi, "'"), ";");
-
- // Examine each style definition within the tag's style attribute
- each(s, function(v) {
- var name, value,
- parts = explode(v, ":");
-
- function ensureUnits(v) {
- return v + ((v !== "0") && (/\d$/.test(v)))? "px" : "";
- }
-
- if (parts.length == 2) {
- name = parts[0].toLowerCase();
- value = parts[1].toLowerCase();
-
- // Translate certain MS Office styles into their CSS equivalents
- switch (name) {
- case "mso-padding-alt":
- case "mso-padding-top-alt":
- case "mso-padding-right-alt":
- case "mso-padding-bottom-alt":
- case "mso-padding-left-alt":
- case "mso-margin-alt":
- case "mso-margin-top-alt":
- case "mso-margin-right-alt":
- case "mso-margin-bottom-alt":
- case "mso-margin-left-alt":
- case "mso-table-layout-alt":
- case "mso-height":
- case "mso-width":
- case "mso-vertical-align-alt":
- n[i++] = name.replace(/^mso-|-alt$/g, "") + ":" + ensureUnits(value);
- return;
-
- case "horiz-align":
- n[i++] = "text-align:" + value;
- return;
-
- case "vert-align":
- n[i++] = "vertical-align:" + value;
- return;
-
- case "font-color":
- case "mso-foreground":
- n[i++] = "color:" + value;
- return;
-
- case "mso-background":
- case "mso-highlight":
- n[i++] = "background:" + value;
- return;
-
- case "mso-default-height":
- n[i++] = "min-height:" + ensureUnits(value);
- return;
-
- case "mso-default-width":
- n[i++] = "min-width:" + ensureUnits(value);
- return;
-
- case "mso-padding-between-alt":
- n[i++] = "border-collapse:separate;border-spacing:" + ensureUnits(value);
- return;
-
- case "text-line-through":
- if ((value == "single") || (value == "double")) {
- n[i++] = "text-decoration:line-through";
- }
- return;
-
- case "mso-zero-height":
- if (value == "yes") {
- n[i++] = "display:none";
- }
- return;
- }
-
- // Eliminate all MS Office style definitions that have no CSS equivalent by examining the first characters in the name
- if (/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(name)) {
- return;
- }
-
- // If it reached this point, it must be a valid CSS style
- n[i++] = name + ":" + parts[1]; // Lower-case name, but keep value case
- }
- });
-
- // If style attribute contained any valid styles the re-write it; otherwise delete style attribute.
- if (i > 0) {
- return tag + ' style="' + n.join(';') + '"';
- } else {
- return tag;
- }
- }
- ]
- ]);
- }
- }
-
- // Replace headers with <strong>
- if (getParam(ed, "paste_convert_headers_to_strong")) {
- process([
- [/<h[1-6][^>]*>/gi, "<p><strong>"],
- [/<\/h[1-6][^>]*>/gi, "</strong></p>"]
- ]);
- }
-
- process([
- // Copy paste from Java like Open Office will produce this junk on FF
- [/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi, '']
- ]);
-
- // Class attribute options are: leave all as-is ("none"), remove all ("all"), or remove only those starting with mso ("mso").
- // Note:- paste_strip_class_attributes: "none", verify_css_classes: true is also a good variation.
- stripClass = getParam(ed, "paste_strip_class_attributes");
-
- if (stripClass !== "none") {
- function removeClasses(match, g1) {
- if (stripClass === "all")
- return '';
-
- var cls = grep(explode(g1.replace(/^(["'])(.*)\1$/, "$2"), " "),
- function(v) {
- return (/^(?!mso)/i.test(v));
- }
- );
-
- return cls.length ? ' class="' + cls.join(" ") + '"' : '';
- };
-
- h = h.replace(/ class="([^"]+)"/gi, removeClasses);
- h = h.replace(/ class=([\-\w]+)/gi, removeClasses);
- }
-
- // Remove spans option
- if (getParam(ed, "paste_remove_spans")) {
- h = h.replace(/<\/?span[^>]*>/gi, "");
- }
-
- //console.log('After preprocess:' + h);
-
- o.content = h;
- },
-
- /**
- * Various post process items.
- */
- _postProcess : function(pl, o) {
- var t = this, ed = t.editor, dom = ed.dom, styleProps;
-
- if (ed.settings.paste_enable_default_filters == false) {
- return;
- }
-
- if (o.wordContent) {
- // Remove named anchors or TOC links
- each(dom.select('a', o.node), function(a) {
- if (!a.href || a.href.indexOf('#_Toc') != -1)
- dom.remove(a, 1);
- });
-
- if (getParam(ed, "paste_convert_middot_lists")) {
- t._convertLists(pl, o);
- }
-
- // Process styles
- styleProps = getParam(ed, "paste_retain_style_properties"); // retained properties
-
- // Process only if a string was specified and not equal to "all" or "*"
- if ((tinymce.is(styleProps, "string")) && (styleProps !== "all") && (styleProps !== "*")) {
- styleProps = tinymce.explode(styleProps.replace(/^none$/i, ""));
-
- // Retains some style properties
- each(dom.select('*', o.node), function(el) {
- var newStyle = {}, npc = 0, i, sp, sv;
-
- // Store a subset of the existing styles
- if (styleProps) {
- for (i = 0; i < styleProps.length; i++) {
- sp = styleProps[i];
- sv = dom.getStyle(el, sp);
-
- if (sv) {
- newStyle[sp] = sv;
- npc++;
- }
- }
- }
-
- // Remove all of the existing styles
- dom.setAttrib(el, 'style', '');
-
- if (styleProps && npc > 0)
- dom.setStyles(el, newStyle); // Add back the stored subset of styles
- else // Remove empty span tags that do not have class attributes
- if (el.nodeName == 'SPAN' && !el.className)
- dom.remove(el, true);
- });
- }
- }
-
- // Remove all style information or only specifically on WebKit to avoid the style bug on that browser
- if (getParam(ed, "paste_remove_styles") || (getParam(ed, "paste_remove_styles_if_webkit") && tinymce.isWebKit)) {
- each(dom.select('*[style]', o.node), function(el) {
- el.removeAttribute('style');
- el.removeAttribute('data-mce-style');
- });
- } else {
- if (tinymce.isWebKit) {
- // We need to compress the styles on WebKit since if you paste <img border="0" /> it will become <img border="0" style="... lots of junk ..." />
- // Removing the mce_style that contains the real value will force the Serializer engine to compress the styles
- each(dom.select('*', o.node), function(el) {
- el.removeAttribute('data-mce-style');
- });
- }
- }
- },
-
- /**
- * Converts the most common bullet and number formats in Office into a real semantic UL/LI list.
- */
- _convertLists : function(pl, o) {
- var dom = pl.editor.dom, listElm, li, lastMargin = -1, margin, levels = [], lastType, html;
-
- // Convert middot lists into real semantic lists
- each(dom.select('p', o.node), function(p) {
- var sib, val = '', type, html, idx, parents;
-
- // Get text node value at beginning of paragraph
- for (sib = p.firstChild; sib && sib.nodeType == 3; sib = sib.nextSibling)
- val += sib.nodeValue;
-
- val = p.innerHTML.replace(/<\/?\w+[^>]*>/gi, '').replace(/&nbsp;/g, '\u00a0');
-
- // Detect unordered lists look for bullets
- if (/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(val))
- type = 'ul';
-
- // Detect ordered lists 1., a. or ixv.
- if (/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(val))
- type = 'ol';
-
- // Check if node value matches the list pattern: o&nbsp;&nbsp;
- if (type) {
- margin = parseFloat(p.style.marginLeft || 0);
-
- if (margin > lastMargin)
- levels.push(margin);
-
- if (!listElm || type != lastType) {
- listElm = dom.create(type);
- dom.insertAfter(listElm, p);
- } else {
- // Nested list element
- if (margin > lastMargin) {
- listElm = li.appendChild(dom.create(type));
- } else if (margin < lastMargin) {
- // Find parent level based on margin value
- idx = tinymce.inArray(levels, margin);
- parents = dom.getParents(listElm.parentNode, type);
- listElm = parents[parents.length - 1 - idx] || listElm;
- }
- }
-
- // Remove middot or number spans if they exists
- each(dom.select('span', p), function(span) {
- var html = span.innerHTML.replace(/<\/?\w+[^>]*>/gi, '');
-
- // Remove span with the middot or the number
- if (type == 'ul' && /^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(html))
- dom.remove(span);
- else if (/^__MCE_ITEM__[\s\S]*\w+\.(&nbsp;|\u00a0)*\s*/.test(html))
- dom.remove(span);
- });
-
- html = p.innerHTML;
-
- // Remove middot/list items
- if (type == 'ul')
- html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*(&nbsp;|\u00a0)+\s*/, '');
- else
- html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^\s*\w+\.(&nbsp;|\u00a0)+\s*/, '');
-
- // Create li and add paragraph data into the new li
- li = listElm.appendChild(dom.create('li', 0, html));
- dom.remove(p);
-
- lastMargin = margin;
- lastType = type;
- } else
- listElm = lastMargin = 0; // End list element
- });
-
- // Remove any left over makers
- html = o.node.innerHTML;
- if (html.indexOf('__MCE_ITEM__') != -1)
- o.node.innerHTML = html.replace(/__MCE_ITEM__/g, '');
- },
-
- /**
- * Inserts the specified contents at the caret position.
- */
- _insert : function(h, skip_undo) {
- var ed = this.editor, r = ed.selection.getRng();
-
- // First delete the contents seems to work better on WebKit when the selection spans multiple list items or multiple table cells.
- if (!ed.selection.isCollapsed() && r.startContainer != r.endContainer)
- ed.getDoc().execCommand('Delete', false, null);
-
- ed.execCommand('mceInsertContent', false, h, {skip_undo : skip_undo});
- },
-
- /**
- * Instead of the old plain text method which tried to re-create a paste operation, the
- * new approach adds a plain text mode toggle switch that changes the behavior of paste.
- * This function is passed the same input that the regular paste plugin produces.
- * It performs additional scrubbing and produces (and inserts) the plain text.
- * This approach leverages all of the great existing functionality in the paste
- * plugin, and requires minimal changes to add the new functionality.
- * Speednet - June 2009
- */
- _insertPlainText : function(content) {
- var ed = this.editor,
- linebr = getParam(ed, "paste_text_linebreaktype"),
- rl = getParam(ed, "paste_text_replacements"),
- is = tinymce.is;
-
- function process(items) {
- each(items, function(v) {
- if (v.constructor == RegExp)
- content = content.replace(v, "");
- else
- content = content.replace(v[0], v[1]);
- });
- };
-
- if ((typeof(content) === "string") && (content.length > 0)) {
- // If HTML content with line-breaking tags, then remove all cr/lf chars because only tags will break a line
- if (/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(content)) {
- process([
- /[\n\r]+/g
- ]);
- } else {
- // Otherwise just get rid of carriage returns (only need linefeeds)
- process([
- /\r+/g
- ]);
- }
-
- process([
- [/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi, "\n\n"], // Block tags get a blank line after them
- [/<br[^>]*>|<\/tr>/gi, "\n"], // Single linebreak for <br /> tags and table rows
- [/<\/t[dh]>\s*<t[dh][^>]*>/gi, "\t"], // Table cells get tabs betweem them
- /<[a-z!\/?][^>]*>/gi, // Delete all remaining tags
- [/&nbsp;/gi, " "], // Convert non-break spaces to regular spaces (remember, *plain text*)
- [/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"],// Cool little RegExp deletes whitespace around linebreak chars.
- [/\n{3,}/g, "\n\n"] // Max. 2 consecutive linebreaks
- ]);
-
- content = ed.dom.decode(tinymce.html.Entities.encodeRaw(content));
-
- // Perform default or custom replacements
- if (is(rl, "array")) {
- process(rl);
- } else if (is(rl, "string")) {
- process(new RegExp(rl, "gi"));
- }
-
- // Treat paragraphs as specified in the config
- if (linebr == "none") {
- // Convert all line breaks to space
- process([
- [/\n+/g, " "]
- ]);
- } else if (linebr == "br") {
- // Convert all line breaks to <br />
- process([
- [/\n/g, "<br />"]
- ]);
- } else if (linebr == "p") {
- // Convert all line breaks to <p>...</p>
- process([
- [/\n+/g, "</p><p>"],
- [/^(.*<\/p>)(<p>)$/, '<p>$1']
- ]);
- } else {
- // defaults to "combined"
- // Convert single line breaks to <br /> and double line breaks to <p>...</p>
- process([
- [/\n\n/g, "</p><p>"],
- [/^(.*<\/p>)(<p>)$/, '<p>$1'],
- [/\n/g, "<br />"]
- ]);
- }
-
- ed.execCommand('mceInsertContent', false, content);
- }
- },
-
- /**
- * This method will open the old style paste dialogs. Some users might want the old behavior but still use the new cleanup engine.
- */
- _legacySupport : function() {
- var t = this, ed = t.editor;
-
- // Register command(s) for backwards compatibility
- ed.addCommand("mcePasteWord", function() {
- ed.windowManager.open({
- file: t.url + "/pasteword.htm",
- width: parseInt(getParam(ed, "paste_dialog_width")),
- height: parseInt(getParam(ed, "paste_dialog_height")),
- inline: 1
- });
- });
-
- if (getParam(ed, "paste_text_use_dialog")) {
- ed.addCommand("mcePasteText", function() {
- ed.windowManager.open({
- file : t.url + "/pastetext.htm",
- width: parseInt(getParam(ed, "paste_dialog_width")),
- height: parseInt(getParam(ed, "paste_dialog_height")),
- inline : 1
- });
- });
- }
-
- // Register button for backwards compatibility
- ed.addButton("pasteword", {title : "paste.paste_word_desc", cmd : "mcePasteWord"});
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add("paste", tinymce.plugins.PastePlugin);
-})();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js b/library/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js
deleted file mode 100644
index c524f9eb0..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js
+++ /dev/null
@@ -1,36 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var PasteTextDialog = {
- init : function() {
- this.resize();
- },
-
- insert : function() {
- var h = tinyMCEPopup.dom.encode(document.getElementById('content').value), lines;
-
- // Convert linebreaks into paragraphs
- if (document.getElementById('linebreaks').checked) {
- lines = h.split(/\r?\n/);
- if (lines.length > 1) {
- h = '';
- tinymce.each(lines, function(row) {
- h += '<p>' + row + '</p>';
- });
- }
- }
-
- tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h});
- tinyMCEPopup.close();
- },
-
- resize : function() {
- var vp = tinyMCEPopup.dom.getViewPort(window), el;
-
- el = document.getElementById('content');
-
- el.style.width = (vp.w - 20) + 'px';
- el.style.height = (vp.h - 90) + 'px';
- }
-};
-
-tinyMCEPopup.onInit.add(PasteTextDialog.init, PasteTextDialog);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js b/library/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js
deleted file mode 100644
index a52731c36..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js
+++ /dev/null
@@ -1,51 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var PasteWordDialog = {
- init : function() {
- var ed = tinyMCEPopup.editor, el = document.getElementById('iframecontainer'), ifr, doc, css, cssHTML = '';
-
- // Create iframe
- el.innerHTML = '<iframe id="iframe" src="javascript:\'\';" frameBorder="0" style="border: 1px solid gray"></iframe>';
- ifr = document.getElementById('iframe');
- doc = ifr.contentWindow.document;
-
- // Force absolute CSS urls
- css = [ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css")];
- css = css.concat(tinymce.explode(ed.settings.content_css) || []);
- tinymce.each(css, function(u) {
- cssHTML += '<link href="' + ed.documentBaseURI.toAbsolute('' + u) + '" rel="stylesheet" type="text/css" />';
- });
-
- // Write content into iframe
- doc.open();
- doc.write('<html><head>' + cssHTML + '</head><body class="mceContentBody" spellcheck="false"></body></html>');
- doc.close();
-
- doc.designMode = 'on';
- this.resize();
-
- window.setTimeout(function() {
- ifr.contentWindow.focus();
- }, 10);
- },
-
- insert : function() {
- var h = document.getElementById('iframe').contentWindow.document.body.innerHTML;
-
- tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h, wordContent : true});
- tinyMCEPopup.close();
- },
-
- resize : function() {
- var vp = tinyMCEPopup.dom.getViewPort(window), el;
-
- el = document.getElementById('iframe');
-
- if (el) {
- el.style.width = (vp.w - 20) + 'px';
- el.style.height = (vp.h - 90) + 'px';
- }
- }
-};
-
-tinyMCEPopup.onInit.add(PasteWordDialog.init, PasteWordDialog);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js
deleted file mode 100644
index bc74daf85..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.paste_dlg',{"word_title":"Use Ctrl+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep Linebreaks","text_title":"Use Ctrl+V on your keyboard to paste the text into the window."}); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm b/library/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm
deleted file mode 100644
index b65594547..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm
+++ /dev/null
@@ -1,27 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#paste.paste_text_desc}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/pastetext.js"></script>
-</head>
-<body onresize="PasteTextDialog.resize();" style="display:none; overflow:hidden;">
- <form name="source" onsubmit="return PasteTextDialog.insert();" action="#">
- <div style="float: left" class="title">{#paste.paste_text_desc}</div>
-
- <div style="float: right">
- <input type="checkbox" name="linebreaks" id="linebreaks" class="wordWrapCode" checked="checked" /><label for="linebreaks">{#paste_dlg.text_linebreaks}</label>
- </div>
-
- <br style="clear: both" />
-
- <div>{#paste_dlg.text_title}</div>
-
- <textarea id="content" name="content" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,mono; font-size: 12px;" dir="ltr" wrap="soft" class="mceFocus"></textarea>
-
- <div class="mceActionPanel">
- <input type="submit" name="insert" value="{#insert}" id="insert" />
- <input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
- </div>
- </form>
-</body>
-</html> \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm b/library/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm
deleted file mode 100644
index 0f6bb4121..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm
+++ /dev/null
@@ -1,21 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#paste.paste_word_desc}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/pasteword.js"></script>
-</head>
-<body onresize="PasteWordDialog.resize();" style="display:none; overflow:hidden;">
- <form name="source" onsubmit="return PasteWordDialog.insert();" action="#">
- <div class="title">{#paste.paste_word_desc}</div>
-
- <div>{#paste_dlg.word_title}</div>
-
- <div id="iframecontainer"></div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
- </form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js
deleted file mode 100644
index 507909c5f..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.Preview",{init:function(a,b){var d=this,c=tinymce.explode(a.settings.content_css);d.editor=a;tinymce.each(c,function(f,e){c[e]=a.documentBaseURI.toAbsolute(f)});a.addCommand("mcePreview",function(){a.windowManager.open({file:a.getParam("plugin_preview_pageurl",b+"/preview.html"),width:parseInt(a.getParam("plugin_preview_width","550")),height:parseInt(a.getParam("plugin_preview_height","600")),resizable:"yes",scrollbars:"yes",popup_css:c?c.join(","):a.baseURI.toAbsolute("themes/"+a.settings.theme+"/skins/"+a.settings.skin+"/content.css"),inline:a.getParam("plugin_preview_inline",1)},{base:a.documentBaseURI.getURI()})});a.addButton("preview",{title:"preview.preview_desc",cmd:"mcePreview"})},getInfo:function(){return{longname:"Preview",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("preview",tinymce.plugins.Preview)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js
deleted file mode 100644
index 80f00f0d9..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.Preview', {
- init : function(ed, url) {
- var t = this, css = tinymce.explode(ed.settings.content_css);
-
- t.editor = ed;
-
- // Force absolute CSS urls
- tinymce.each(css, function(u, k) {
- css[k] = ed.documentBaseURI.toAbsolute(u);
- });
-
- ed.addCommand('mcePreview', function() {
- ed.windowManager.open({
- file : ed.getParam("plugin_preview_pageurl", url + "/preview.html"),
- width : parseInt(ed.getParam("plugin_preview_width", "550")),
- height : parseInt(ed.getParam("plugin_preview_height", "600")),
- resizable : "yes",
- scrollbars : "yes",
- popup_css : css ? css.join(',') : ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css"),
- inline : ed.getParam("plugin_preview_inline", 1)
- }, {
- base : ed.documentBaseURI.getURI()
- });
- });
-
- ed.addButton('preview', {title : 'preview.preview_desc', cmd : 'mcePreview'});
- },
-
- getInfo : function() {
- return {
- longname : 'Preview',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('preview', tinymce.plugins.Preview);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/preview/example.html b/library/tinymce/jscripts/tiny_mce/plugins/preview/example.html
deleted file mode 100644
index b2c3d90ce..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/preview/example.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<script language="javascript" src="../../tiny_mce_popup.js"></script>
-<script type="text/javascript" src="jscripts/embed.js"></script>
-<script type="text/javascript">
-tinyMCEPopup.onInit.add(function(ed) {
- var dom = tinyMCEPopup.dom;
-
- // Load editor content_css
- tinymce.each(ed.settings.content_css.split(','), function(u) {
- dom.loadCSS(ed.documentBaseURI.toAbsolute(u));
- });
-
- // Place contents inside div container
- dom.setHTML('content', ed.getContent());
-});
-</script>
-<title>Example of a custom preview page</title>
-</head>
-<body>
-
-Editor contents: <br />
-<div id="content">
-<!-- Gets filled with editor contents -->
-</div>
-
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js b/library/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js
deleted file mode 100644
index f8dc81052..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.
- */
-
-function writeFlash(p) {
- writeEmbed(
- 'D27CDB6E-AE6D-11cf-96B8-444553540000',
- 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
- 'application/x-shockwave-flash',
- p
- );
-}
-
-function writeShockWave(p) {
- writeEmbed(
- '166B1BCA-3F9C-11CF-8075-444553540000',
- 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
- 'application/x-director',
- p
- );
-}
-
-function writeQuickTime(p) {
- writeEmbed(
- '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
- 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
- 'video/quicktime',
- p
- );
-}
-
-function writeRealMedia(p) {
- writeEmbed(
- 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
- 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
- 'audio/x-pn-realaudio-plugin',
- p
- );
-}
-
-function writeWindowsMedia(p) {
- p.url = p.src;
- writeEmbed(
- '6BF52A52-394A-11D3-B153-00C04F79FAA6',
- 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
- 'application/x-mplayer2',
- p
- );
-}
-
-function writeEmbed(cls, cb, mt, p) {
- var h = '', n;
-
- h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
- h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
- h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
- h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
- h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
- h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
- h += '>';
-
- for (n in p)
- h += '<param name="' + n + '" value="' + p[n] + '">';
-
- h += '<embed type="' + mt + '"';
-
- for (n in p)
- h += n + '="' + p[n] + '" ';
-
- h += '></embed></object>';
-
- document.write(h);
-}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/preview/preview.html b/library/tinymce/jscripts/tiny_mce/plugins/preview/preview.html
deleted file mode 100644
index 67e7b142f..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/preview/preview.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-<script type="text/javascript" src="jscripts/embed.js"></script>
-<script type="text/javascript"><!--
-document.write('<base href="' + tinyMCEPopup.getWindowArg("base") + '">');
-// -->
-</script>
-<title>{#preview.preview_desc}</title>
-</head>
-<body id="content">
-<script type="text/javascript">
- document.write(tinyMCEPopup.editor.getContent());
-</script>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js
deleted file mode 100644
index b5b3a55ed..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.Print",{init:function(a,b){a.addCommand("mcePrint",function(){a.getWin().print()});a.addButton("print",{title:"print.print_desc",cmd:"mcePrint"})},getInfo:function(){return{longname:"Print",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("print",tinymce.plugins.Print)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js
deleted file mode 100644
index 3933fe656..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.Print', {
- init : function(ed, url) {
- ed.addCommand('mcePrint', function() {
- ed.getWin().print();
- });
-
- ed.addButton('print', {title : 'print.print_desc', cmd : 'mcePrint'});
- },
-
- getInfo : function() {
- return {
- longname : 'Print',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('print', tinymce.plugins.Print);
-})();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js
deleted file mode 100644
index 8e9399667..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.Save",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceSave",c._save,c);a.addCommand("mceCancel",c._cancel,c);a.addButton("save",{title:"save.save_desc",cmd:"mceSave"});a.addButton("cancel",{title:"save.cancel_desc",cmd:"mceCancel"});a.onNodeChange.add(c._nodeChange,c);a.addShortcut("ctrl+s",a.getLang("save.save_desc"),"mceSave")},getInfo:function(){return{longname:"Save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,c){var b=this.editor;if(b.getParam("save_enablewhendirty")){a.setDisabled("save",!b.isDirty());a.setDisabled("cancel",!b.isDirty())}},_save:function(){var c=this.editor,a,e,d,b;a=tinymce.DOM.get(c.id).form||tinymce.DOM.getParent(c.id,"form");if(c.getParam("save_enablewhendirty")&&!c.isDirty()){return}tinyMCE.triggerSave();if(e=c.getParam("save_onsavecallback")){if(c.execCallback("save_onsavecallback",c)){c.startContent=tinymce.trim(c.getContent({format:"raw"}));c.nodeChanged()}return}if(a){c.isNotDirty=true;if(a.onsubmit==null||a.onsubmit()!=false){a.submit()}c.nodeChanged()}else{c.windowManager.alert("Error: No form element found.")}},_cancel:function(){var a=this.editor,c,b=tinymce.trim(a.startContent);if(c=a.getParam("save_oncancelcallback")){a.execCallback("save_oncancelcallback",a);return}a.setContent(b);a.undoManager.clear();a.nodeChanged()}});tinymce.PluginManager.add("save",tinymce.plugins.Save)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js
deleted file mode 100644
index f5a3de8f5..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.Save', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- // Register commands
- ed.addCommand('mceSave', t._save, t);
- ed.addCommand('mceCancel', t._cancel, t);
-
- // Register buttons
- ed.addButton('save', {title : 'save.save_desc', cmd : 'mceSave'});
- ed.addButton('cancel', {title : 'save.cancel_desc', cmd : 'mceCancel'});
-
- ed.onNodeChange.add(t._nodeChange, t);
- ed.addShortcut('ctrl+s', ed.getLang('save.save_desc'), 'mceSave');
- },
-
- getInfo : function() {
- return {
- longname : 'Save',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- // Private methods
-
- _nodeChange : function(ed, cm, n) {
- var ed = this.editor;
-
- if (ed.getParam('save_enablewhendirty')) {
- cm.setDisabled('save', !ed.isDirty());
- cm.setDisabled('cancel', !ed.isDirty());
- }
- },
-
- // Private methods
-
- _save : function() {
- var ed = this.editor, formObj, os, i, elementId;
-
- formObj = tinymce.DOM.get(ed.id).form || tinymce.DOM.getParent(ed.id, 'form');
-
- if (ed.getParam("save_enablewhendirty") && !ed.isDirty())
- return;
-
- tinyMCE.triggerSave();
-
- // Use callback instead
- if (os = ed.getParam("save_onsavecallback")) {
- if (ed.execCallback('save_onsavecallback', ed)) {
- ed.startContent = tinymce.trim(ed.getContent({format : 'raw'}));
- ed.nodeChanged();
- }
-
- return;
- }
-
- if (formObj) {
- ed.isNotDirty = true;
-
- if (formObj.onsubmit == null || formObj.onsubmit() != false)
- formObj.submit();
-
- ed.nodeChanged();
- } else
- ed.windowManager.alert("Error: No form element found.");
- },
-
- _cancel : function() {
- var ed = this.editor, os, h = tinymce.trim(ed.startContent);
-
- // Use callback instead
- if (os = ed.getParam("save_oncancelcallback")) {
- ed.execCallback('save_oncancelcallback', ed);
- return;
- }
-
- ed.setContent(h);
- ed.undoManager.clear();
- ed.nodeChanged();
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('save', tinymce.plugins.Save);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css b/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css
deleted file mode 100644
index ecdf58c7b..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css
+++ /dev/null
@@ -1,6 +0,0 @@
-.panel_wrapper {height:85px;}
-.panel_wrapper div.current {height:85px;}
-
-/* IE */
-* html .panel_wrapper {height:100px;}
-* html .panel_wrapper div.current {height:100px;}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js
deleted file mode 100644
index 165bc12df..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.SearchReplacePlugin",{init:function(a,c){function b(d){window.focus();a.windowManager.open({file:c+"/searchreplace.htm",width:420+parseInt(a.getLang("searchreplace.delta_width",0)),height:170+parseInt(a.getLang("searchreplace.delta_height",0)),inline:1,auto_focus:0},{mode:d,search_string:a.selection.getContent({format:"text"}),plugin_url:c})}a.addCommand("mceSearch",function(){b("search")});a.addCommand("mceReplace",function(){b("replace")});a.addButton("search",{title:"searchreplace.search_desc",cmd:"mceSearch"});a.addButton("replace",{title:"searchreplace.replace_desc",cmd:"mceReplace"});a.addShortcut("ctrl+f","searchreplace.search_desc","mceSearch")},getInfo:function(){return{longname:"Search/Replace",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("searchreplace",tinymce.plugins.SearchReplacePlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js
deleted file mode 100644
index 4c87e8fa7..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.SearchReplacePlugin', {
- init : function(ed, url) {
- function open(m) {
- // Keep IE from writing out the f/r character to the editor
- // instance while initializing a new dialog. See: #3131190
- window.focus();
-
- ed.windowManager.open({
- file : url + '/searchreplace.htm',
- width : 420 + parseInt(ed.getLang('searchreplace.delta_width', 0)),
- height : 170 + parseInt(ed.getLang('searchreplace.delta_height', 0)),
- inline : 1,
- auto_focus : 0
- }, {
- mode : m,
- search_string : ed.selection.getContent({format : 'text'}),
- plugin_url : url
- });
- };
-
- // Register commands
- ed.addCommand('mceSearch', function() {
- open('search');
- });
-
- ed.addCommand('mceReplace', function() {
- open('replace');
- });
-
- // Register buttons
- ed.addButton('search', {title : 'searchreplace.search_desc', cmd : 'mceSearch'});
- ed.addButton('replace', {title : 'searchreplace.replace_desc', cmd : 'mceReplace'});
-
- ed.addShortcut('ctrl+f', 'searchreplace.search_desc', 'mceSearch');
- },
-
- getInfo : function() {
- return {
- longname : 'Search/Replace',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('searchreplace', tinymce.plugins.SearchReplacePlugin);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js b/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js
deleted file mode 100644
index 80284b9f3..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js
+++ /dev/null
@@ -1,142 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var SearchReplaceDialog = {
- init : function(ed) {
- var t = this, f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");
-
- t.switchMode(m);
-
- f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");
-
- // Focus input field
- f[m + '_panel_searchstring'].focus();
-
- mcTabs.onChange.add(function(tab_id, panel_id) {
- t.switchMode(tab_id.substring(0, tab_id.indexOf('_')));
- });
- },
-
- switchMode : function(m) {
- var f, lm = this.lastMode;
-
- if (lm != m) {
- f = document.forms[0];
-
- if (lm) {
- f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value;
- f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked;
- f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked;
- f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked;
- }
-
- mcTabs.displayTab(m + '_tab', m + '_panel');
- document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none";
- document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none";
- this.lastMode = m;
- }
- },
-
- searchNext : function(a) {
- var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0;
-
- // Get input
- f = document.forms[0];
- s = f[m + '_panel_searchstring'].value;
- b = f[m + '_panel_backwardsu'].checked;
- ca = f[m + '_panel_casesensitivebox'].checked;
- rs = f['replace_panel_replacestring'].value;
-
- if (tinymce.isIE) {
- r = ed.getDoc().selection.createRange();
- }
-
- if (s == '')
- return;
-
- function fix() {
- // Correct Firefox graphics glitches
- // TODO: Verify if this is actually needed any more, maybe it was for very old FF versions?
- r = se.getRng().cloneRange();
- ed.getDoc().execCommand('SelectAll', false, null);
- se.setRng(r);
- };
-
- function replace() {
- ed.selection.setContent(rs); // Needs to be duplicated due to selection bug in IE
- };
-
- // IE flags
- if (ca)
- fl = fl | 4;
-
- switch (a) {
- case 'all':
- // Move caret to beginning of text
- ed.execCommand('SelectAll');
- ed.selection.collapse(true);
-
- if (tinymce.isIE) {
- ed.focus();
- r = ed.getDoc().selection.createRange();
-
- while (r.findText(s, b ? -1 : 1, fl)) {
- r.scrollIntoView();
- r.select();
- replace();
- fo = 1;
-
- if (b) {
- r.moveEnd("character", -(rs.length)); // Otherwise will loop forever
- }
- }
-
- tinyMCEPopup.storeSelection();
- } else {
- while (w.find(s, ca, b, false, false, false, false)) {
- replace();
- fo = 1;
- }
- }
-
- if (fo)
- tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced'));
- else
- tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
-
- return;
-
- case 'current':
- if (!ed.selection.isCollapsed())
- replace();
-
- break;
- }
-
- se.collapse(b);
- r = se.getRng();
-
- // Whats the point
- if (!s)
- return;
-
- if (tinymce.isIE) {
- ed.focus();
- r = ed.getDoc().selection.createRange();
-
- if (r.findText(s, b ? -1 : 1, fl)) {
- r.scrollIntoView();
- r.select();
- } else
- tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
-
- tinyMCEPopup.storeSelection();
- } else {
- if (!w.find(s, ca, b, false, false, false, false))
- tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
- else
- fix();
- }
- }
-};
-
-tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js
deleted file mode 100644
index 8a6590097..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.searchreplace_dlg',{findwhat:"Find What",replacewith:"Replace with",direction:"Direction",up:"Up",down:"Down",mcase:"Match Case",findnext:"Find Next",allreplaced:"All occurrences of the search string were replaced.","searchnext_desc":"Find Again",notfound:"The search has been completed. The search string could not be found.","search_title":"Find","replace_title":"Find/Replace",replaceall:"Replace All",replace:"Replace"}); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm b/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm
deleted file mode 100644
index 5a22d8aa4..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm
+++ /dev/null
@@ -1,100 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#searchreplace_dlg.replace_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="js/searchreplace.js"></script>
- <link rel="stylesheet" type="text/css" href="css/searchreplace.css" />
-</head>
-<body style="display:none;" role="application" aria-labelledby="app_title">
-<span id="app_title" style="display:none">{#searchreplace_dlg.replace_title}</span>
-<form onsubmit="SearchReplaceDialog.searchNext('none');return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="search_tab" aria-controls="search_panel"><span><a href="javascript:SearchReplaceDialog.switchMode('search');" onmousedown="return false;">{#searchreplace.search_desc}</a></span></li>
- <li id="replace_tab" aria-controls="replace_panel"><span><a href="javascript:SearchReplaceDialog.switchMode('replace');" onmousedown="return false;">{#searchreplace_dlg.replace}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="search_panel" class="panel">
- <table role="presentation" border="0" cellspacing="0" cellpadding="2">
- <tr>
- <td><label for="search_panel_searchstring">{#searchreplace_dlg.findwhat}</label></td>
- <td><input type="text" id="search_panel_searchstring" name="search_panel_searchstring" style="width: 200px" aria-required="true" /></td>
- </tr>
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellspacing="0" cellpadding="0" class="direction">
- <tr role="group" aria-labelledby="search_panel_backwards_label">
- <td><label id="search_panel_backwards_label">{#searchreplace_dlg.direction}</label></td>
- <td><input id="search_panel_backwardsu" name="search_panel_backwards" class="radio" type="radio" /></td>
- <td><label for="search_panel_backwardsu">{#searchreplace_dlg.up}</label></td>
- <td><input id="search_panel_backwardsd" name="search_panel_backwards" class="radio" type="radio" checked="checked" /></td>
- <td><label for="search_panel_backwardsd">{#searchreplace_dlg.down}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="search_panel_casesensitivebox" name="search_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>
- <td><label for="search_panel_casesensitivebox">{#searchreplace_dlg.mcase}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </div>
-
- <div id="replace_panel" class="panel">
- <table role="presentation" border="0" cellspacing="0" cellpadding="2">
- <tr>
- <td><label for="replace_panel_searchstring">{#searchreplace_dlg.findwhat}</label></td>
- <td><input type="text" id="replace_panel_searchstring" name="replace_panel_searchstring" style="width: 200px" aria-required="true" /></td>
- </tr>
- <tr>
- <td><label for="replace_panel_replacestring">{#searchreplace_dlg.replacewith}</label></td>
- <td><input type="text" id="replace_panel_replacestring" name="replace_panel_replacestring" style="width: 200px" aria-required="true" /></td>
- </tr>
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellspacing="0" cellpadding="0" class="direction">
- <tr role="group" aria-labelledby="replace_panel_dir_label">
- <td><label id="replace_panel_dir_label">{#searchreplace_dlg.direction}</label></td>
- <td><input id="replace_panel_backwardsu" name="replace_panel_backwards" class="radio" type="radio" /></td>
- <td><label for="replace_panel_backwardsu">{#searchreplace_dlg.up}</label></td>
- <td><input id="replace_panel_backwardsd" name="replace_panel_backwards" class="radio" type="radio" checked="checked" /></td>
- <td><label for="replace_panel_backwardsd">{#searchreplace_dlg.down}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="replace_panel_casesensitivebox" name="replace_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>
- <td><label for="replace_panel_casesensitivebox">{#searchreplace_dlg.mcase}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </div>
-
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#searchreplace_dlg.findnext}" />
- <input type="button" class="button" id="replaceBtn" name="replaceBtn" value="{#searchreplace_dlg.replace}" onclick="SearchReplaceDialog.searchNext('current');" />
- <input type="button" class="button" id="replaceAllBtn" name="replaceAllBtn" value="{#searchreplace_dlg.replaceall}" onclick="SearchReplaceDialog.searchNext('all');" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/content.css b/library/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/content.css
deleted file mode 100644
index 24efa0217..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/content.css
+++ /dev/null
@@ -1 +0,0 @@
-.mceItemHiddenSpellWord {background:url(../img/wline.gif) repeat-x bottom left; cursor:default;}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js
deleted file mode 100644
index 48549c923..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var a=tinymce.util.JSONRequest,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.SpellcheckerPlugin",{getInfo:function(){return{longname:"Spellchecker",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker",version:tinymce.majorVersion+"."+tinymce.minorVersion}},init:function(e,f){var g=this,d;g.url=f;g.editor=e;g.rpcUrl=e.getParam("spellchecker_rpc_url","{backend}");if(g.rpcUrl=="{backend}"){if(tinymce.isIE){return}g.hasSupport=true;e.onContextMenu.addToTop(function(h,i){if(g.active){return false}})}e.addCommand("mceSpellCheck",function(){if(g.rpcUrl=="{backend}"){g.editor.getBody().spellcheck=g.active=!g.active;return}if(!g.active){e.setProgressState(1);g._sendRPC("checkWords",[g.selectedLang,g._getWords()],function(h){if(h.length>0){g.active=1;g._markWords(h);e.setProgressState(0);e.nodeChanged()}else{e.setProgressState(0);if(e.getParam("spellchecker_report_no_misspellings",true)){e.windowManager.alert("spellchecker.no_mpell")}}})}else{g._done()}});if(e.settings.content_css!==false){e.contentCSS.push(f+"/css/content.css")}e.onClick.add(g._showMenu,g);e.onContextMenu.add(g._showMenu,g);e.onBeforeGetContent.add(function(){if(g.active){g._removeWords()}});e.onNodeChange.add(function(i,h){h.setActive("spellchecker",g.active)});e.onSetContent.add(function(){g._done()});e.onBeforeGetContent.add(function(){g._done()});e.onBeforeExecCommand.add(function(h,i){if(i=="mceFullScreen"){g._done()}});g.languages={};c(e.getParam("spellchecker_languages","+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv","hash"),function(i,h){if(h.indexOf("+")===0){h=h.substring(1);g.selectedLang=i}g.languages[h]=i})},createControl:function(h,d){var f=this,g,e=f.editor;if(h=="spellchecker"){if(f.rpcUrl=="{backend}"){if(f.hasSupport){g=d.createButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f})}return g}g=d.createSplitButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f});g.onRenderMenu.add(function(j,i){i.add({title:"spellchecker.langs","class":"mceMenuItemTitle"}).setDisabled(1);c(f.languages,function(n,m){var p={icon:1},l;p.onclick=function(){if(n==f.selectedLang){return}l.setSelected(1);f.selectedItem.setSelected(0);f.selectedItem=l;f.selectedLang=n};p.title=m;l=i.add(p);l.setSelected(n==f.selectedLang);if(n==f.selectedLang){f.selectedItem=l}})});return g}},_walk:function(i,g){var h=this.editor.getDoc(),e;if(h.createTreeWalker){e=h.createTreeWalker(i,NodeFilter.SHOW_TEXT,null,false);while((i=e.nextNode())!=null){g.call(this,i)}}else{tinymce.walk(i,g,"childNodes")}},_getSeparators:function(){var e="",d,f=this.editor.getParam("spellchecker_word_separator_chars",'\\s!"#$%&()*+,-./:;<=>?@[]^_{|}§©«®±¶·¸»¼½¾¿×÷¤\u201d\u201c');for(d=0;d<f.length;d++){e+="\\"+f.charAt(d)}return e},_getWords:function(){var e=this.editor,g=[],d="",f={},h=[];this._walk(e.getBody(),function(i){if(i.nodeType==3){d+=i.nodeValue+" "}});if(e.getParam("spellchecker_word_pattern")){h=d.match("("+e.getParam("spellchecker_word_pattern")+")","gi")}else{d=d.replace(new RegExp("([0-9]|["+this._getSeparators()+"])","g")," ");d=tinymce.trim(d.replace(/(\s+)/g," "));h=d.split(" ")}c(h,function(i){if(!f[i]){g.push(i);f[i]=1}});return g},_removeWords:function(d){var e=this.editor,h=e.dom,g=e.selection,f=g.getRng(true);c(h.select("span").reverse(),function(i){if(i&&(h.hasClass(i,"mceItemHiddenSpellWord")||h.hasClass(i,"mceItemHidden"))){if(!d||h.decode(i.innerHTML)==d){h.remove(i,1)}}});g.setRng(f)},_markWords:function(l){var h=this.editor,g=h.dom,j=h.getDoc(),i=h.selection,d=i.getRng(true),e=[],k=l.join("|"),m=this._getSeparators(),f=new RegExp("(^|["+m+"])("+k+")(?=["+m+"]|$)","g");this._walk(h.getBody(),function(o){if(o.nodeType==3){e.push(o)}});c(e,function(t){var r,q,o,s,p=t.nodeValue;if(f.test(p)){p=g.encode(p);q=g.create("span",{"class":"mceItemHidden"});if(tinymce.isIE){p=p.replace(f,"$1<mcespell>$2</mcespell>");while((s=p.indexOf("<mcespell>"))!=-1){o=p.substring(0,s);if(o.length){r=j.createTextNode(g.decode(o));q.appendChild(r)}p=p.substring(s+10);s=p.indexOf("</mcespell>");o=p.substring(0,s);p=p.substring(s+11);q.appendChild(g.create("span",{"class":"mceItemHiddenSpellWord"},o))}if(p.length){r=j.createTextNode(g.decode(p));q.appendChild(r)}}else{q.innerHTML=p.replace(f,'$1<span class="mceItemHiddenSpellWord">$2</span>')}g.replace(q,t)}});i.setRng(d)},_showMenu:function(h,j){var i=this,h=i.editor,d=i._menu,l,k=h.dom,g=k.getViewPort(h.getWin()),f=j.target;j=0;if(!d){d=h.controlManager.createDropMenu("spellcheckermenu",{"class":"mceNoIcons"});i._menu=d}if(k.hasClass(f,"mceItemHiddenSpellWord")){d.removeAll();d.add({title:"spellchecker.wait","class":"mceMenuItemTitle"}).setDisabled(1);i._sendRPC("getSuggestions",[i.selectedLang,k.decode(f.innerHTML)],function(m){var e;d.removeAll();if(m.length>0){d.add({title:"spellchecker.sug","class":"mceMenuItemTitle"}).setDisabled(1);c(m,function(n){d.add({title:n,onclick:function(){k.replace(h.getDoc().createTextNode(n),f);i._checkDone()}})});d.addSeparator()}else{d.add({title:"spellchecker.no_sug","class":"mceMenuItemTitle"}).setDisabled(1)}if(h.getParam("show_ignore_words",true)){e=i.editor.getParam("spellchecker_enable_ignore_rpc","");d.add({title:"spellchecker.ignore_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}}});d.add({title:"spellchecker.ignore_words",onclick:function(){var n=f.innerHTML;i._removeWords(k.decode(n));i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWords",[i.selectedLang,n],function(o){h.setProgressState(0)})}}})}if(i.editor.getParam("spellchecker_enable_learn_rpc")){d.add({title:"spellchecker.learn_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();h.setProgressState(1);i._sendRPC("learnWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}})}d.update()});l=b.getPos(h.getContentAreaContainer());d.settings.offset_x=l.x;d.settings.offset_y=l.y;h.selection.select(f);l=k.getPos(f);d.showMenu(l.x,l.y+f.offsetHeight-g.y);return tinymce.dom.Event.cancel(j)}else{d.hideMenu()}},_checkDone:function(){var e=this,d=e.editor,g=d.dom,f;c(g.select("span"),function(h){if(h&&g.hasClass(h,"mceItemHiddenSpellWord")){f=true;return false}});if(!f){e._done()}},_done:function(){var d=this,e=d.active;if(d.active){d.active=0;d._removeWords();if(d._menu){d._menu.hideMenu()}if(e){d.editor.nodeChanged()}}},_sendRPC:function(e,g,d){var f=this;a.sendRPC({url:f.rpcUrl,method:e,params:g,success:d,error:function(i,h){f.editor.setProgressState(0);f.editor.windowManager.alert(i.errstr||("Error response: "+h.responseText))}})}});tinymce.PluginManager.add("spellchecker",tinymce.plugins.SpellcheckerPlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js
deleted file mode 100644
index 86fdfceb4..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js
+++ /dev/null
@@ -1,436 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var JSONRequest = tinymce.util.JSONRequest, each = tinymce.each, DOM = tinymce.DOM;
-
- tinymce.create('tinymce.plugins.SpellcheckerPlugin', {
- getInfo : function() {
- return {
- longname : 'Spellchecker',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- init : function(ed, url) {
- var t = this, cm;
-
- t.url = url;
- t.editor = ed;
- t.rpcUrl = ed.getParam("spellchecker_rpc_url", "{backend}");
-
- if (t.rpcUrl == '{backend}') {
- // Sniff if the browser supports native spellchecking (Don't know of a better way)
- if (tinymce.isIE)
- return;
-
- t.hasSupport = true;
-
- // Disable the context menu when spellchecking is active
- ed.onContextMenu.addToTop(function(ed, e) {
- if (t.active)
- return false;
- });
- }
-
- // Register commands
- ed.addCommand('mceSpellCheck', function() {
- if (t.rpcUrl == '{backend}') {
- // Enable/disable native spellchecker
- t.editor.getBody().spellcheck = t.active = !t.active;
- return;
- }
-
- if (!t.active) {
- ed.setProgressState(1);
- t._sendRPC('checkWords', [t.selectedLang, t._getWords()], function(r) {
- if (r.length > 0) {
- t.active = 1;
- t._markWords(r);
- ed.setProgressState(0);
- ed.nodeChanged();
- } else {
- ed.setProgressState(0);
-
- if (ed.getParam('spellchecker_report_no_misspellings', true))
- ed.windowManager.alert('spellchecker.no_mpell');
- }
- });
- } else
- t._done();
- });
-
- if (ed.settings.content_css !== false)
- ed.contentCSS.push(url + '/css/content.css');
-
- ed.onClick.add(t._showMenu, t);
- ed.onContextMenu.add(t._showMenu, t);
- ed.onBeforeGetContent.add(function() {
- if (t.active)
- t._removeWords();
- });
-
- ed.onNodeChange.add(function(ed, cm) {
- cm.setActive('spellchecker', t.active);
- });
-
- ed.onSetContent.add(function() {
- t._done();
- });
-
- ed.onBeforeGetContent.add(function() {
- t._done();
- });
-
- ed.onBeforeExecCommand.add(function(ed, cmd) {
- if (cmd == 'mceFullScreen')
- t._done();
- });
-
- // Find selected language
- t.languages = {};
- each(ed.getParam('spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv', 'hash'), function(v, k) {
- if (k.indexOf('+') === 0) {
- k = k.substring(1);
- t.selectedLang = v;
- }
-
- t.languages[k] = v;
- });
- },
-
- createControl : function(n, cm) {
- var t = this, c, ed = t.editor;
-
- if (n == 'spellchecker') {
- // Use basic button if we use the native spellchecker
- if (t.rpcUrl == '{backend}') {
- // Create simple toggle button if we have native support
- if (t.hasSupport)
- c = cm.createButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t});
-
- return c;
- }
-
- c = cm.createSplitButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t});
-
- c.onRenderMenu.add(function(c, m) {
- m.add({title : 'spellchecker.langs', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
- each(t.languages, function(v, k) {
- var o = {icon : 1}, mi;
-
- o.onclick = function() {
- if (v == t.selectedLang) {
- return;
- }
- mi.setSelected(1);
- t.selectedItem.setSelected(0);
- t.selectedItem = mi;
- t.selectedLang = v;
- };
-
- o.title = k;
- mi = m.add(o);
- mi.setSelected(v == t.selectedLang);
-
- if (v == t.selectedLang)
- t.selectedItem = mi;
- })
- });
-
- return c;
- }
- },
-
- // Internal functions
-
- _walk : function(n, f) {
- var d = this.editor.getDoc(), w;
-
- if (d.createTreeWalker) {
- w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
-
- while ((n = w.nextNode()) != null)
- f.call(this, n);
- } else
- tinymce.walk(n, f, 'childNodes');
- },
-
- _getSeparators : function() {
- var re = '', i, str = this.editor.getParam('spellchecker_word_separator_chars', '\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}§©«®±¶·¸»¼½¾¿×÷¤\u201d\u201c');
-
- // Build word separator regexp
- for (i=0; i<str.length; i++)
- re += '\\' + str.charAt(i);
-
- return re;
- },
-
- _getWords : function() {
- var ed = this.editor, wl = [], tx = '', lo = {}, rawWords = [];
-
- // Get area text
- this._walk(ed.getBody(), function(n) {
- if (n.nodeType == 3)
- tx += n.nodeValue + ' ';
- });
-
- // split the text up into individual words
- if (ed.getParam('spellchecker_word_pattern')) {
- // look for words that match the pattern
- rawWords = tx.match('(' + ed.getParam('spellchecker_word_pattern') + ')', 'gi');
- } else {
- // Split words by separator
- tx = tx.replace(new RegExp('([0-9]|[' + this._getSeparators() + '])', 'g'), ' ');
- tx = tinymce.trim(tx.replace(/(\s+)/g, ' '));
- rawWords = tx.split(' ');
- }
-
- // Build word array and remove duplicates
- each(rawWords, function(v) {
- if (!lo[v]) {
- wl.push(v);
- lo[v] = 1;
- }
- });
-
- return wl;
- },
-
- _removeWords : function(w) {
- var ed = this.editor, dom = ed.dom, se = ed.selection, r = se.getRng(true);
-
- each(dom.select('span').reverse(), function(n) {
- if (n && (dom.hasClass(n, 'mceItemHiddenSpellWord') || dom.hasClass(n, 'mceItemHidden'))) {
- if (!w || dom.decode(n.innerHTML) == w)
- dom.remove(n, 1);
- }
- });
-
- se.setRng(r);
- },
-
- _markWords : function(wl) {
- var ed = this.editor, dom = ed.dom, doc = ed.getDoc(), se = ed.selection, r = se.getRng(true), nl = [],
- w = wl.join('|'), re = this._getSeparators(), rx = new RegExp('(^|[' + re + '])(' + w + ')(?=[' + re + ']|$)', 'g');
-
- // Collect all text nodes
- this._walk(ed.getBody(), function(n) {
- if (n.nodeType == 3) {
- nl.push(n);
- }
- });
-
- // Wrap incorrect words in spans
- each(nl, function(n) {
- var node, elem, txt, pos, v = n.nodeValue;
-
- if (rx.test(v)) {
- // Encode the content
- v = dom.encode(v);
- // Create container element
- elem = dom.create('span', {'class' : 'mceItemHidden'});
-
- // Following code fixes IE issues by creating text nodes
- // using DOM methods instead of innerHTML.
- // Bug #3124: <PRE> elements content is broken after spellchecking.
- // Bug #1408: Preceding whitespace characters are removed
- // @TODO: I'm not sure that both are still issues on IE9.
- if (tinymce.isIE) {
- // Enclose mispelled words with temporal tag
- v = v.replace(rx, '$1<mcespell>$2</mcespell>');
- // Loop over the content finding mispelled words
- while ((pos = v.indexOf('<mcespell>')) != -1) {
- // Add text node for the content before the word
- txt = v.substring(0, pos);
- if (txt.length) {
- node = doc.createTextNode(dom.decode(txt));
- elem.appendChild(node);
- }
- v = v.substring(pos+10);
- pos = v.indexOf('</mcespell>');
- txt = v.substring(0, pos);
- v = v.substring(pos+11);
- // Add span element for the word
- elem.appendChild(dom.create('span', {'class' : 'mceItemHiddenSpellWord'}, txt));
- }
- // Add text node for the rest of the content
- if (v.length) {
- node = doc.createTextNode(dom.decode(v));
- elem.appendChild(node);
- }
- } else {
- // Other browsers preserve whitespace characters on innerHTML usage
- elem.innerHTML = v.replace(rx, '$1<span class="mceItemHiddenSpellWord">$2</span>');
- }
-
- // Finally, replace the node with the container
- dom.replace(elem, n);
- }
- });
-
- se.setRng(r);
- },
-
- _showMenu : function(ed, e) {
- var t = this, ed = t.editor, m = t._menu, p1, dom = ed.dom, vp = dom.getViewPort(ed.getWin()), wordSpan = e.target;
-
- e = 0; // Fixes IE memory leak
-
- if (!m) {
- m = ed.controlManager.createDropMenu('spellcheckermenu', {'class' : 'mceNoIcons'});
- t._menu = m;
- }
-
- if (dom.hasClass(wordSpan, 'mceItemHiddenSpellWord')) {
- m.removeAll();
- m.add({title : 'spellchecker.wait', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
-
- t._sendRPC('getSuggestions', [t.selectedLang, dom.decode(wordSpan.innerHTML)], function(r) {
- var ignoreRpc;
-
- m.removeAll();
-
- if (r.length > 0) {
- m.add({title : 'spellchecker.sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
- each(r, function(v) {
- m.add({title : v, onclick : function() {
- dom.replace(ed.getDoc().createTextNode(v), wordSpan);
- t._checkDone();
- }});
- });
-
- m.addSeparator();
- } else
- m.add({title : 'spellchecker.no_sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
-
- if (ed.getParam('show_ignore_words', true)) {
- ignoreRpc = t.editor.getParam("spellchecker_enable_ignore_rpc", '');
- m.add({
- title : 'spellchecker.ignore_word',
- onclick : function() {
- var word = wordSpan.innerHTML;
-
- dom.remove(wordSpan, 1);
- t._checkDone();
-
- // tell the server if we need to
- if (ignoreRpc) {
- ed.setProgressState(1);
- t._sendRPC('ignoreWord', [t.selectedLang, word], function(r) {
- ed.setProgressState(0);
- });
- }
- }
- });
-
- m.add({
- title : 'spellchecker.ignore_words',
- onclick : function() {
- var word = wordSpan.innerHTML;
-
- t._removeWords(dom.decode(word));
- t._checkDone();
-
- // tell the server if we need to
- if (ignoreRpc) {
- ed.setProgressState(1);
- t._sendRPC('ignoreWords', [t.selectedLang, word], function(r) {
- ed.setProgressState(0);
- });
- }
- }
- });
- }
-
- if (t.editor.getParam("spellchecker_enable_learn_rpc")) {
- m.add({
- title : 'spellchecker.learn_word',
- onclick : function() {
- var word = wordSpan.innerHTML;
-
- dom.remove(wordSpan, 1);
- t._checkDone();
-
- ed.setProgressState(1);
- t._sendRPC('learnWord', [t.selectedLang, word], function(r) {
- ed.setProgressState(0);
- });
- }
- });
- }
-
- m.update();
- });
-
- p1 = DOM.getPos(ed.getContentAreaContainer());
- m.settings.offset_x = p1.x;
- m.settings.offset_y = p1.y;
-
- ed.selection.select(wordSpan);
- p1 = dom.getPos(wordSpan);
- m.showMenu(p1.x, p1.y + wordSpan.offsetHeight - vp.y);
-
- return tinymce.dom.Event.cancel(e);
- } else
- m.hideMenu();
- },
-
- _checkDone : function() {
- var t = this, ed = t.editor, dom = ed.dom, o;
-
- each(dom.select('span'), function(n) {
- if (n && dom.hasClass(n, 'mceItemHiddenSpellWord')) {
- o = true;
- return false;
- }
- });
-
- if (!o)
- t._done();
- },
-
- _done : function() {
- var t = this, la = t.active;
-
- if (t.active) {
- t.active = 0;
- t._removeWords();
-
- if (t._menu)
- t._menu.hideMenu();
-
- if (la)
- t.editor.nodeChanged();
- }
- },
-
- _sendRPC : function(m, p, cb) {
- var t = this;
-
- JSONRequest.sendRPC({
- url : t.rpcUrl,
- method : m,
- params : p,
- success : cb,
- error : function(e, x) {
- t.editor.setProgressState(0);
- t.editor.windowManager.alert(e.errstr || ('Error response: ' + x.responseText));
- }
- });
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('spellchecker', tinymce.plugins.SpellcheckerPlugin);
-})();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif b/library/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif
deleted file mode 100644
index 7d0a4dbca..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/style/css/props.css b/library/tinymce/jscripts/tiny_mce/plugins/style/css/props.css
deleted file mode 100644
index 3b8f0ee77..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/style/css/props.css
+++ /dev/null
@@ -1,14 +0,0 @@
-#text_font {width:250px;}
-#text_size {width:70px;}
-.mceAddSelectValue {background:#DDD;}
-select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {width:70px;}
-#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {width:70px;}
-#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {width:70px;}
-#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {width:70px;}
-.panel_toggle_insert_span {padding-top:10px;}
-.panel_wrapper div.current {padding-top:10px;height:230px;}
-.delim {border-left:1px solid gray;}
-.tdelim {border-bottom:1px solid gray;}
-#block_display {width:145px;}
-#list_type {width:115px;}
-.disabled {background:#EEE;}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js
deleted file mode 100644
index dda9f928b..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.StylePlugin",{init:function(a,b){a.addCommand("mceStyleProps",function(){var c=false;var f=a.selection.getSelectedBlocks();var d=[];if(f.length===1){d.push(a.selection.getNode().style.cssText)}else{tinymce.each(f,function(g){d.push(a.dom.getAttrib(g,"style"))});c=true}a.windowManager.open({file:b+"/props.htm",width:480+parseInt(a.getLang("style.delta_width",0)),height:340+parseInt(a.getLang("style.delta_height",0)),inline:1},{applyStyleToBlocks:c,plugin_url:b,styles:d})});a.addCommand("mceSetElementStyle",function(d,c){if(e=a.selection.getNode()){a.dom.setAttrib(e,"style",c);a.execCommand("mceRepaint")}});a.onNodeChange.add(function(d,c,f){c.setDisabled("styleprops",f.nodeName==="BODY")});a.addButton("styleprops",{title:"style.desc",cmd:"mceStyleProps"})},getInfo:function(){return{longname:"Style",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("style",tinymce.plugins.StylePlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js
deleted file mode 100644
index eaa7c7713..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.StylePlugin', {
- init : function(ed, url) {
- // Register commands
- ed.addCommand('mceStyleProps', function() {
-
- var applyStyleToBlocks = false;
- var blocks = ed.selection.getSelectedBlocks();
- var styles = [];
-
- if (blocks.length === 1) {
- styles.push(ed.selection.getNode().style.cssText);
- }
- else {
- tinymce.each(blocks, function(block) {
- styles.push(ed.dom.getAttrib(block, 'style'));
- });
- applyStyleToBlocks = true;
- }
-
- ed.windowManager.open({
- file : url + '/props.htm',
- width : 480 + parseInt(ed.getLang('style.delta_width', 0)),
- height : 340 + parseInt(ed.getLang('style.delta_height', 0)),
- inline : 1
- }, {
- applyStyleToBlocks : applyStyleToBlocks,
- plugin_url : url,
- styles : styles
- });
- });
-
- ed.addCommand('mceSetElementStyle', function(ui, v) {
- if (e = ed.selection.getNode()) {
- ed.dom.setAttrib(e, 'style', v);
- ed.execCommand('mceRepaint');
- }
- });
-
- ed.onNodeChange.add(function(ed, cm, n) {
- cm.setDisabled('styleprops', n.nodeName === 'BODY');
- });
-
- // Register buttons
- ed.addButton('styleprops', {title : 'style.desc', cmd : 'mceStyleProps'});
- },
-
- getInfo : function() {
- return {
- longname : 'Style',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('style', tinymce.plugins.StylePlugin);
-})();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/style/js/props.js b/library/tinymce/jscripts/tiny_mce/plugins/style/js/props.js
deleted file mode 100644
index 0a8a8ec3e..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/style/js/props.js
+++ /dev/null
@@ -1,709 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var defaultFonts = "" +
- "Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" +
- "Times New Roman, Times, serif=Times New Roman, Times, serif;" +
- "Courier New, Courier, mono=Courier New, Courier, mono;" +
- "Times New Roman, Times, serif=Times New Roman, Times, serif;" +
- "Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" +
- "Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" +
- "Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif";
-
-var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger";
-var defaultMeasurement = "+pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%";
-var defaultSpacingMeasurement = "pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;+ems=em;exs=ex;%";
-var defaultIndentMeasurement = "pixels=px;+points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%";
-var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900";
-var defaultTextStyle = "normal;italic;oblique";
-var defaultVariant = "normal;small-caps";
-var defaultLineHeight = "normal";
-var defaultAttachment = "fixed;scroll";
-var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y";
-var defaultPosH = "left;center;right";
-var defaultPosV = "top;center;bottom";
-var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom";
-var defaultDisplay = "inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none";
-var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset";
-var defaultBorderWidth = "thin;medium;thick";
-var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none";
-
-function aggregateStyles(allStyles) {
- var mergedStyles = {};
-
- tinymce.each(allStyles, function(style) {
- if (style !== '') {
- var parsedStyles = tinyMCEPopup.editor.dom.parseStyle(style);
- for (var name in parsedStyles) {
- if (parsedStyles.hasOwnProperty(name)) {
- if (mergedStyles[name] === undefined) {
- mergedStyles[name] = parsedStyles[name];
- }
- else if (name === 'text-decoration') {
- if (mergedStyles[name].indexOf(parsedStyles[name]) === -1) {
- mergedStyles[name] = mergedStyles[name] +' '+ parsedStyles[name];
- }
- }
- }
- }
- }
- });
-
- return mergedStyles;
-}
-
-var applyActionIsInsert;
-var existingStyles;
-
-function init(ed) {
- var ce = document.getElementById('container'), h;
-
- existingStyles = aggregateStyles(tinyMCEPopup.getWindowArg('styles'));
- ce.style.cssText = tinyMCEPopup.editor.dom.serializeStyle(existingStyles);
-
- applyActionIsInsert = ed.getParam("edit_css_style_insert_span", false);
- document.getElementById('toggle_insert_span').checked = applyActionIsInsert;
-
- h = getBrowserHTML('background_image_browser','background_image','image','advimage');
- document.getElementById("background_image_browser").innerHTML = h;
-
- document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color');
- document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color');
- document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top');
- document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right');
- document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom');
- document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left');
-
- fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true);
- fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true);
- fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true);
- fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true);
- fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true);
- fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true);
- fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true);
- fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true);
-
- fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true);
- fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true);
-
- fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true);
-
- fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true);
- fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true);
-
- fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true);
- fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true);
- fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true);
- fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true);
- fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true);
- fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true);
- fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true);
- fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true);
- fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true);
-
- fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true);
- fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true);
- fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true);
-
- fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true);
- fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true);
- fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true);
- fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true);
-
- fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true);
- fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true);
- fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true);
- fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true);
-
- fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true);
-
- fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true);
- fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true);
-
- fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true);
- fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true);
-
- fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true);
-
- fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true);
-
- fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true);
-
- TinyMCE_EditableSelects.init();
- setupFormData();
- showDisabledControls();
-}
-
-function setupFormData() {
- var ce = document.getElementById('container'), f = document.forms[0], s, b, i;
-
- // Setup text fields
-
- selectByValue(f, 'text_font', ce.style.fontFamily, true, true);
- selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true);
- selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize));
- selectByValue(f, 'text_weight', ce.style.fontWeight, true, true);
- selectByValue(f, 'text_style', ce.style.fontStyle, true, true);
- selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true);
- selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight));
- selectByValue(f, 'text_case', ce.style.textTransform, true, true);
- selectByValue(f, 'text_variant', ce.style.fontVariant, true, true);
- f.text_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.color);
- updateColor('text_color_pick', 'text_color');
- f.text_underline.checked = inStr(ce.style.textDecoration, 'underline');
- f.text_overline.checked = inStr(ce.style.textDecoration, 'overline');
- f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through');
- f.text_blink.checked = inStr(ce.style.textDecoration, 'blink');
- f.text_none.checked = inStr(ce.style.textDecoration, 'none');
- updateTextDecorations();
-
- // Setup background fields
-
- f.background_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.backgroundColor);
- updateColor('background_color_pick', 'background_color');
- f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
- selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true);
- selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true);
- selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true);
- selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0)));
- selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true);
- selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1)));
-
- // Setup block fields
-
- selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true);
- selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing));
- selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true);
- selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing));
- selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true);
- selectByValue(f, 'block_text_align', ce.style.textAlign, true, true);
- f.block_text_indent.value = getNum(ce.style.textIndent);
- selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent));
- selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true);
- selectByValue(f, 'block_display', ce.style.display, true, true);
-
- // Setup box fields
-
- f.box_width.value = getNum(ce.style.width);
- selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width));
-
- f.box_height.value = getNum(ce.style.height);
- selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height));
- selectByValue(f, 'box_float', ce.style.cssFloat || ce.style.styleFloat, true, true);
-
- selectByValue(f, 'box_clear', ce.style.clear, true, true);
-
- setupBox(f, ce, 'box_padding', 'padding', '');
- setupBox(f, ce, 'box_margin', 'margin', '');
-
- // Setup border fields
-
- setupBox(f, ce, 'border_style', 'border', 'Style');
- setupBox(f, ce, 'border_width', 'border', 'Width');
- setupBox(f, ce, 'border_color', 'border', 'Color');
-
- updateColor('border_color_top_pick', 'border_color_top');
- updateColor('border_color_right_pick', 'border_color_right');
- updateColor('border_color_bottom_pick', 'border_color_bottom');
- updateColor('border_color_left_pick', 'border_color_left');
-
- f.elements.border_color_top.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_top.value);
- f.elements.border_color_right.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_right.value);
- f.elements.border_color_bottom.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_bottom.value);
- f.elements.border_color_left.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_left.value);
-
- // Setup list fields
-
- selectByValue(f, 'list_type', ce.style.listStyleType, true, true);
- selectByValue(f, 'list_position', ce.style.listStylePosition, true, true);
- f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
-
- // Setup box fields
-
- selectByValue(f, 'positioning_type', ce.style.position, true, true);
- selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true);
- selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true);
- f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : "";
-
- f.positioning_width.value = getNum(ce.style.width);
- selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width));
-
- f.positioning_height.value = getNum(ce.style.height);
- selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height));
-
- setupBox(f, ce, 'positioning_placement', '', '', ['top', 'right', 'bottom', 'left']);
-
- s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1");
- s = s.replace(/,/g, ' ');
-
- if (!hasEqualValues([getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)])) {
- f.positioning_clip_top.value = getNum(getVal(s, 0));
- selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));
- f.positioning_clip_right.value = getNum(getVal(s, 1));
- selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1)));
- f.positioning_clip_bottom.value = getNum(getVal(s, 2));
- selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2)));
- f.positioning_clip_left.value = getNum(getVal(s, 3));
- selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3)));
- } else {
- f.positioning_clip_top.value = getNum(getVal(s, 0));
- selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));
- f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value;
- }
-
-// setupBox(f, ce, '', 'border', 'Color');
-}
-
-function getMeasurement(s) {
- return s.replace(/^([0-9.]+)(.*)$/, "$2");
-}
-
-function getNum(s) {
- if (new RegExp('^(?:[0-9.]+)(?:[a-z%]+)$', 'gi').test(s))
- return s.replace(/[^0-9.]/g, '');
-
- return s;
-}
-
-function inStr(s, n) {
- return new RegExp(n, 'gi').test(s);
-}
-
-function getVal(s, i) {
- var a = s.split(' ');
-
- if (a.length > 1)
- return a[i];
-
- return "";
-}
-
-function setValue(f, n, v) {
- if (f.elements[n].type == "text")
- f.elements[n].value = v;
- else
- selectByValue(f, n, v, true, true);
-}
-
-function setupBox(f, ce, fp, pr, sf, b) {
- if (typeof(b) == "undefined")
- b = ['Top', 'Right', 'Bottom', 'Left'];
-
- if (isSame(ce, pr, sf, b)) {
- f.elements[fp + "_same"].checked = true;
-
- setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));
- f.elements[fp + "_top"].disabled = false;
-
- f.elements[fp + "_right"].value = "";
- f.elements[fp + "_right"].disabled = true;
- f.elements[fp + "_bottom"].value = "";
- f.elements[fp + "_bottom"].disabled = true;
- f.elements[fp + "_left"].value = "";
- f.elements[fp + "_left"].disabled = true;
-
- if (f.elements[fp + "_top_measurement"]) {
- selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));
- f.elements[fp + "_left_measurement"].disabled = true;
- f.elements[fp + "_bottom_measurement"].disabled = true;
- f.elements[fp + "_right_measurement"].disabled = true;
- }
- } else {
- f.elements[fp + "_same"].checked = false;
-
- setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));
- f.elements[fp + "_top"].disabled = false;
-
- setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf]));
- f.elements[fp + "_right"].disabled = false;
-
- setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf]));
- f.elements[fp + "_bottom"].disabled = false;
-
- setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf]));
- f.elements[fp + "_left"].disabled = false;
-
- if (f.elements[fp + "_top_measurement"]) {
- selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));
- selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf]));
- selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf]));
- selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf]));
- f.elements[fp + "_left_measurement"].disabled = false;
- f.elements[fp + "_bottom_measurement"].disabled = false;
- f.elements[fp + "_right_measurement"].disabled = false;
- }
- }
-}
-
-function isSame(e, pr, sf, b) {
- var a = [], i, x;
-
- if (typeof(b) == "undefined")
- b = ['Top', 'Right', 'Bottom', 'Left'];
-
- if (typeof(sf) == "undefined" || sf == null)
- sf = "";
-
- a[0] = e.style[pr + b[0] + sf];
- a[1] = e.style[pr + b[1] + sf];
- a[2] = e.style[pr + b[2] + sf];
- a[3] = e.style[pr + b[3] + sf];
-
- for (i=0; i<a.length; i++) {
- if (a[i] == null)
- return false;
-
- for (x=0; x<a.length; x++) {
- if (a[x] != a[i])
- return false;
- }
- }
-
- return true;
-};
-
-function hasEqualValues(a) {
- var i, x;
-
- for (i=0; i<a.length; i++) {
- if (a[i] == null)
- return false;
-
- for (x=0; x<a.length; x++) {
- if (a[x] != a[i])
- return false;
- }
- }
-
- return true;
-}
-
-function toggleApplyAction() {
- applyActionIsInsert = ! applyActionIsInsert;
-}
-
-function applyAction() {
- var ce = document.getElementById('container'), ed = tinyMCEPopup.editor;
-
- generateCSS();
-
- tinyMCEPopup.restoreSelection();
-
- var newStyles = tinyMCEPopup.editor.dom.parseStyle(ce.style.cssText);
-
- if (applyActionIsInsert) {
- ed.formatter.register('plugin_style', {
- inline: 'span', styles: existingStyles
- });
- ed.formatter.remove('plugin_style');
-
- ed.formatter.register('plugin_style', {
- inline: 'span', styles: newStyles
- });
- ed.formatter.apply('plugin_style');
- } else {
- var nodes;
-
- if (tinyMCEPopup.getWindowArg('applyStyleToBlocks')) {
- nodes = ed.selection.getSelectedBlocks();
- }
- else {
- nodes = ed.selection.getNode();
- }
-
- ed.dom.setAttrib(nodes, 'style', tinyMCEPopup.editor.dom.serializeStyle(newStyles));
- }
-}
-
-function updateAction() {
- applyAction();
- tinyMCEPopup.close();
-}
-
-function generateCSS() {
- var ce = document.getElementById('container'), f = document.forms[0], num = new RegExp('[0-9]+', 'g'), s, t;
-
- ce.style.cssText = "";
-
- // Build text styles
- ce.style.fontFamily = f.text_font.value;
- ce.style.fontSize = f.text_size.value + (isNum(f.text_size.value) ? (f.text_size_measurement.value || 'px') : "");
- ce.style.fontStyle = f.text_style.value;
- ce.style.lineHeight = f.text_lineheight.value + (isNum(f.text_lineheight.value) ? f.text_lineheight_measurement.value : "");
- ce.style.textTransform = f.text_case.value;
- ce.style.fontWeight = f.text_weight.value;
- ce.style.fontVariant = f.text_variant.value;
- ce.style.color = f.text_color.value;
-
- s = "";
- s += f.text_underline.checked ? " underline" : "";
- s += f.text_overline.checked ? " overline" : "";
- s += f.text_linethrough.checked ? " line-through" : "";
- s += f.text_blink.checked ? " blink" : "";
- s = s.length > 0 ? s.substring(1) : s;
-
- if (f.text_none.checked)
- s = "none";
-
- ce.style.textDecoration = s;
-
- // Build background styles
-
- ce.style.backgroundColor = f.background_color.value;
- ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : "";
- ce.style.backgroundRepeat = f.background_repeat.value;
- ce.style.backgroundAttachment = f.background_attachment.value;
-
- if (f.background_hpos.value != "") {
- s = "";
- s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " ";
- s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : "");
- ce.style.backgroundPosition = s;
- }
-
- // Build block styles
-
- ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : "");
- ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : "");
- ce.style.verticalAlign = f.block_vertical_alignment.value;
- ce.style.textAlign = f.block_text_align.value;
- ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : "");
- ce.style.whiteSpace = f.block_whitespace.value;
- ce.style.display = f.block_display.value;
-
- // Build box styles
-
- ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : "");
- ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : "");
- ce.style.styleFloat = f.box_float.value;
- ce.style.cssFloat = f.box_float.value;
-
- ce.style.clear = f.box_clear.value;
-
- if (!f.box_padding_same.checked) {
- ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");
- ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : "");
- ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : "");
- ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : "");
- } else
- ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");
-
- if (!f.box_margin_same.checked) {
- ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");
- ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : "");
- ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : "");
- ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : "");
- } else
- ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");
-
- // Build border styles
-
- if (!f.border_style_same.checked) {
- ce.style.borderTopStyle = f.border_style_top.value;
- ce.style.borderRightStyle = f.border_style_right.value;
- ce.style.borderBottomStyle = f.border_style_bottom.value;
- ce.style.borderLeftStyle = f.border_style_left.value;
- } else
- ce.style.borderStyle = f.border_style_top.value;
-
- if (!f.border_width_same.checked) {
- ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : "");
- ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : "");
- ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : "");
- ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : "");
- } else
- ce.style.borderWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : "");
-
- if (!f.border_color_same.checked) {
- ce.style.borderTopColor = f.border_color_top.value;
- ce.style.borderRightColor = f.border_color_right.value;
- ce.style.borderBottomColor = f.border_color_bottom.value;
- ce.style.borderLeftColor = f.border_color_left.value;
- } else
- ce.style.borderColor = f.border_color_top.value;
-
- // Build list styles
-
- ce.style.listStyleType = f.list_type.value;
- ce.style.listStylePosition = f.list_position.value;
- ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : "";
-
- // Build positioning styles
-
- ce.style.position = f.positioning_type.value;
- ce.style.visibility = f.positioning_visibility.value;
-
- if (ce.style.width == "")
- ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : "");
-
- if (ce.style.height == "")
- ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : "");
-
- ce.style.zIndex = f.positioning_zindex.value;
- ce.style.overflow = f.positioning_overflow.value;
-
- if (!f.positioning_placement_same.checked) {
- ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");
- ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : "");
- ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : "");
- ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : "");
- } else {
- s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");
- ce.style.top = s;
- ce.style.right = s;
- ce.style.bottom = s;
- ce.style.left = s;
- }
-
- if (!f.positioning_clip_same.checked) {
- s = "rect(";
- s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " ";
- s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " ";
- s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " ";
- s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto");
- s += ")";
-
- if (s != "rect(auto auto auto auto)")
- ce.style.clip = s;
- } else {
- s = "rect(";
- t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto";
- s += t + " ";
- s += t + " ";
- s += t + " ";
- s += t + ")";
-
- if (s != "rect(auto auto auto auto)")
- ce.style.clip = s;
- }
-
- ce.style.cssText = ce.style.cssText;
-}
-
-function isNum(s) {
- return new RegExp('[0-9]+', 'g').test(s);
-}
-
-function showDisabledControls() {
- var f = document.forms, i, a;
-
- for (i=0; i<f.length; i++) {
- for (a=0; a<f[i].elements.length; a++) {
- if (f[i].elements[a].disabled)
- tinyMCEPopup.editor.dom.addClass(f[i].elements[a], "disabled");
- else
- tinyMCEPopup.editor.dom.removeClass(f[i].elements[a], "disabled");
- }
- }
-}
-
-function fillSelect(f, s, param, dval, sep, em) {
- var i, ar, p, se;
-
- f = document.forms[f];
- sep = typeof(sep) == "undefined" ? ";" : sep;
-
- if (em)
- addSelectValue(f, s, "", "");
-
- ar = tinyMCEPopup.getParam(param, dval).split(sep);
- for (i=0; i<ar.length; i++) {
- se = false;
-
- if (ar[i].charAt(0) == '+') {
- ar[i] = ar[i].substring(1);
- se = true;
- }
-
- p = ar[i].split('=');
-
- if (p.length > 1) {
- addSelectValue(f, s, p[0], p[1]);
-
- if (se)
- selectByValue(f, s, p[1]);
- } else {
- addSelectValue(f, s, p[0], p[0]);
-
- if (se)
- selectByValue(f, s, p[0]);
- }
- }
-}
-
-function toggleSame(ce, pre) {
- var el = document.forms[0].elements, i;
-
- if (ce.checked) {
- el[pre + "_top"].disabled = false;
- el[pre + "_right"].disabled = true;
- el[pre + "_bottom"].disabled = true;
- el[pre + "_left"].disabled = true;
-
- if (el[pre + "_top_measurement"]) {
- el[pre + "_top_measurement"].disabled = false;
- el[pre + "_right_measurement"].disabled = true;
- el[pre + "_bottom_measurement"].disabled = true;
- el[pre + "_left_measurement"].disabled = true;
- }
- } else {
- el[pre + "_top"].disabled = false;
- el[pre + "_right"].disabled = false;
- el[pre + "_bottom"].disabled = false;
- el[pre + "_left"].disabled = false;
-
- if (el[pre + "_top_measurement"]) {
- el[pre + "_top_measurement"].disabled = false;
- el[pre + "_right_measurement"].disabled = false;
- el[pre + "_bottom_measurement"].disabled = false;
- el[pre + "_left_measurement"].disabled = false;
- }
- }
-
- showDisabledControls();
-}
-
-function synch(fr, to) {
- var f = document.forms[0];
-
- f.elements[to].value = f.elements[fr].value;
-
- if (f.elements[fr + "_measurement"])
- selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value);
-}
-
-function updateTextDecorations(){
- var el = document.forms[0].elements;
-
- var textDecorations = ["text_underline", "text_overline", "text_linethrough", "text_blink"];
- var noneChecked = el["text_none"].checked;
- tinymce.each(textDecorations, function(id) {
- el[id].disabled = noneChecked;
- if (noneChecked) {
- el[id].checked = false;
- }
- });
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js
deleted file mode 100644
index 35881b3ac..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.style_dlg',{"text_lineheight":"Line Height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",toggle_insert_span:"Insert span at selection",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet Image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for All",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text Indent","block_text_align":"Text Align","block_vertical_alignment":"Vertical Alignment","block_letterspacing":"Letter Spacing","block_wordspacing":"Word Spacing","background_vpos":"Vertical Position","background_hpos":"Horizontal Position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background Image","background_color":"Background Color","text_none":"None","text_blink":"Blink","text_case":"Case","text_striketrough":"Strikethrough","text_underline":"Underline","text_overline":"Overline","text_decoration":"Decoration","text_color":"Color",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"});
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/style/props.htm b/library/tinymce/jscripts/tiny_mce/plugins/style/props.htm
deleted file mode 100644
index 7dc087a30..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/style/props.htm
+++ /dev/null
@@ -1,845 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#style_dlg.title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="js/props.js"></script>
- <link href="css/props.css" rel="stylesheet" type="text/css" />
-</head>
-
-<body id="styleprops" style="display: none" role="application" aria-labelledby="app_title">
-<span id="app_title" style="display:none">{#style_dlg.title}</span>
-<form onsubmit="updateAction();return false;" action="#">
-<div class="tabs">
- <ul>
- <li id="text_tab" class="current" aria-controls="text_panel"><span><a href="javascript:mcTabs.displayTab('text_tab','text_panel');" onMouseDown="return false;">{#style_dlg.text_tab}</a></span></li>
- <li id="background_tab" aria-controls="background_panel"><span><a href="javascript:mcTabs.displayTab('background_tab','background_panel');" onMouseDown="return false;">{#style_dlg.background_tab}</a></span></li>
- <li id="block_tab" aria-controls="block_panel"><span><a href="javascript:mcTabs.displayTab('block_tab','block_panel');" onMouseDown="return false;">{#style_dlg.block_tab}</a></span></li>
- <li id="box_tab" aria-controls="box_panel"><span><a href="javascript:mcTabs.displayTab('box_tab','box_panel');" onMouseDown="return false;">{#style_dlg.box_tab}</a></span></li>
- <li id="border_tab" aria-controls="border_panel"><span><a href="javascript:mcTabs.displayTab('border_tab','border_panel');" onMouseDown="return false;">{#style_dlg.border_tab}</a></span></li>
- <li id="list_tab" aria-controls="list_panel"><span><a href="javascript:mcTabs.displayTab('list_tab','list_panel');" onMouseDown="return false;">{#style_dlg.list_tab}</a></span></li>
- <li id="positioning_tab" aria-controls="positioning_panel"><span><a href="javascript:mcTabs.displayTab('positioning_tab','positioning_panel');" onMouseDown="return false;">{#style_dlg.positioning_tab}</a></span></li>
- </ul>
-</div>
-
-<div class="panel_wrapper">
-<div id="text_panel" class="panel current">
- <fieldset>
- <legend>{#style_dlg.text}</legend>
- <table role="presentation" border="0" width="100%">
- <tr>
- <td><label for="text_font">{#style_dlg.text_font}</label></td>
- <td colspan="3">
- <select id="text_font" name="text_font" class="mceEditableSelect mceFocus"></select>
- </td>
- </tr>
- <tr>
- <td><label for="text_size">{#style_dlg.text_size}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="text_size" name="text_size" class="mceEditableSelect"></select></td>
- <td>&nbsp;</td>
- <td>
- <label id="text_size_measurement_label" for="text_size_measurement" style="display: none; visibility: hidden;">Text Size Measurement Unit</label>
- <select id="text_size_measurement" name="text_size_measurement" aria-labelledby="text_size_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td><label for="text_weight">{#style_dlg.text_weight}</label></td>
- <td>
- <select id="text_weight" name="text_weight"></select>
- </td>
- </tr>
- <tr>
- <td><label for="text_style">{#style_dlg.text_style}</label></td>
- <td>
- <select id="text_style" name="text_style" class="mceEditableSelect"></select>
- </td>
- <td><label for="text_variant">{#style_dlg.text_variant}</label></td>
- <td>
- <select id="text_variant" name="text_variant"></select>
- </td>
- </tr>
- <tr>
- <td><label for="text_lineheight">{#style_dlg.text_lineheight}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td>
- <select id="text_lineheight" name="text_lineheight" class="mceEditableSelect"></select>
- </td>
- <td>&nbsp;</td>
- <td>
- <label id="text_lineheight_measurement_label" for="text_lineheight_measurement" style="display: none; visibility: hidden;">Line Height Measurement Unit</label>
- <select id="text_lineheight_measurement" name="text_lineheight_measurement" aria-labelledby="text_lineheight_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td><label for="text_case">{#style_dlg.text_case}</label></td>
- <td>
- <select id="text_case" name="text_case"></select>
- </td>
- </tr>
- <tr>
- <td><label for="text_color">{#style_dlg.text_color}</label></td>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="text_color" name="text_color" type="text" value="" size="9" onChange="updateColor('text_color_pick','text_color');" /></td>
- <td id="text_color_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td valign="top" style="vertical-align: top; padding-top: 3px;">{#style_dlg.text_decoration}</td>
- <td colspan="2">
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="text_underline" name="text_underline" class="checkbox" type="checkbox" /></td>
- <td><label for="text_underline">{#style_dlg.text_underline}</label></td>
- </tr>
- <tr>
- <td><input id="text_overline" name="text_overline" class="checkbox" type="checkbox" /></td>
- <td><label for="text_overline">{#style_dlg.text_overline}</label></td>
- </tr>
- <tr>
- <td><input id="text_linethrough" name="text_linethrough" class="checkbox" type="checkbox" /></td>
- <td><label for="text_linethrough">{#style_dlg.text_striketrough}</label></td>
- </tr>
- <tr>
- <td><input id="text_blink" name="text_blink" class="checkbox" type="checkbox" /></td>
- <td><label for="text_blink">{#style_dlg.text_blink}</label></td>
- </tr>
- <tr>
- <td><input id="text_none" name="text_none" class="checkbox" type="checkbox" onclick="updateTextDecorations();"/></td>
- <td><label for="text_none">{#style_dlg.text_none}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-
-<div id="background_panel" class="panel">
- <fieldset>
- <legend>{#style_dlg.background}</legend>
- <table role="presentation" border="0">
- <tr>
- <td><label for="background_color">{#style_dlg.background_color}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="background_color" name="background_color" type="text" value="" size="9" onChange="updateColor('background_color_pick','background_color');" /></td>
- <td id="background_color_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="background_image">{#style_dlg.background_image}</label></td>
- <td><table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="background_image" name="background_image" type="text" /></td>
- <td id="background_image_browser">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="background_repeat">{#style_dlg.background_repeat}</label></td>
- <td><select id="background_repeat" name="background_repeat" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="background_attachment">{#style_dlg.background_attachment}</label></td>
- <td><select id="background_attachment" name="background_attachment" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="background_hpos">{#style_dlg.background_hpos}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="background_hpos" name="background_hpos" class="mceEditableSelect"></select></td>
- <td>&nbsp;</td>
- <td>
- <label id="background_hpos_measurement_label" for="background_hpos_measurement" style="display: none; visibility: hidden;">Horizontal position measurement unit</label>
- <select id="background_hpos_measurement" name="background_hpos_measurement" aria-labelledby="background_hpos_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="background_vpos">{#style_dlg.background_vpos}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="background_vpos" name="background_vpos" class="mceEditableSelect"></select></td>
- <td>&nbsp;</td>
- <td>
-
- <label id="background_vpos_measurement_label" for="background_vpos_measurement" style="display: none; visibility: hidden;">Vertical position measurement unit</label>
- <select id="background_vpos_measurement" name="background_vpos_measurement" aria-labelledby="background_vpos_measurement_label">></select></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-
-<div id="block_panel" class="panel">
- <fieldset>
- <legend>{#style_dlg.block}</legend>
- <table role="presentation" border="0">
- <tr>
- <td><label for="block_wordspacing">{#style_dlg.block_wordspacing}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="block_wordspacing" name="block_wordspacing" class="mceEditableSelect"></select></td>
- <td>&nbsp;</td>
- <td>
- <label id="block_wordspacing_measurement_label" for="block_wordspacing_measurement" style="display: none; visibility: hidden;">Word spacing measurement unit</label>
- <select id="block_wordspacing_measurement" name="block_wordspacing_measurement" aria-labelledby="block_wordspacing_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="block_letterspacing">{#style_dlg.block_letterspacing}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="block_letterspacing" name="block_letterspacing" class="mceEditableSelect"></select></td>
- <td>&nbsp;</td>
- <td>
- <label id="block_letterspacing_measurement_label" for="block_letterspacing_measurement" style="display: none; visibility: hidden;">Letter spacing measurement unit</label>
- <select id="block_letterspacing_measurement" name="block_letterspacing_measurement" aria-labelledby="block_letterspacing_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="block_vertical_alignment">{#style_dlg.block_vertical_alignment}</label></td>
- <td><select id="block_vertical_alignment" name="block_vertical_alignment" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="block_text_align">{#style_dlg.block_text_align}</label></td>
- <td><select id="block_text_align" name="block_text_align" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="block_text_indent">{#style_dlg.block_text_indent}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="block_text_indent" name="block_text_indent" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="block_text_indent_measurement_label" for="block_text_indent_measurement" style="display: none; visibility: hidden;">Text Indent Measurement Unit</label>
-
- <select id="block_text_indent_measurement" name="block_text_indent_measurement" aria-labelledby="block_text_indent_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="block_whitespace">{#style_dlg.block_whitespace}</label></td>
- <td><select id="block_whitespace" name="block_whitespace" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="block_display">{#style_dlg.block_display}</label></td>
- <td><select id="block_display" name="block_display" class="mceEditableSelect"></select></td>
- </tr>
- </table>
- </fieldset>
-</div>
-
-<div id="box_panel" class="panel">
- <fieldset>
- <legend>{#style_dlg.box}</legend>
- <table role="presentation" border="0">
- <tr>
- <td><label for="box_width">{#style_dlg.box_width}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_width" name="box_width" class="mceEditableSelect" onChange="synch('box_width','positioning_width');" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_width_measurement_label" for="box_width_measurement" style="display: none; visibility: hidden;">Box Width Measurement Unit</label>
- <select id="box_width_measurement" name="box_width_measurement" aria-labelledby="box_width_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td>&nbsp;&nbsp;&nbsp;<label for="box_float">{#style_dlg.box_float}</label></td>
- <td><select id="box_float" name="box_float" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="box_height">{#style_dlg.box_height}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_height" name="box_height" class="mceEditableSelect" onChange="synch('box_height','positioning_height');" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_height_measurement_label" for="box_height_measurement" style="display: none; visibility: hidden;">Box Height Measurement Unit</label>
- <select id="box_height_measurement" name="box_height_measurement" aria-labelledby="box_height_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td>&nbsp;&nbsp;&nbsp;<label for="box_clear">{#style_dlg.box_clear}</label></td>
- <td><select id="box_clear" name="box_clear" class="mceEditableSelect"></select></td>
- </tr>
- </table>
- </fieldset>
-
-<div style="float: left; width: 49%">
- <fieldset>
- <legend>{#style_dlg.padding}</legend>
-
- <table role="presentation" border="0">
- <tr>
- <td>&nbsp;</td>
- <td><input type="checkbox" id="box_padding_same" name="box_padding_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_padding');" /> <label for="box_padding_same">{#style_dlg.same}</label></td>
- </tr>
- <tr>
- <td><label for="box_padding_top">{#style_dlg.top}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_padding_top" name="box_padding_top" class="mceEditableSelect" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_padding_top_measurement_label" for="box_padding_top_measurement" style="display: none; visibility: hidden;">Padding Top Measurement Unit</label>
- <select id="box_padding_top_measurement" name="box_padding_top_measurement" aria-labelledby="box_padding_top_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_padding_right">{#style_dlg.right}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_padding_right" name="box_padding_right" class="mceEditableSelect" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_padding_right_measurement_label" for="box_padding_right_measurement" style="display: none; visibility: hidden;">Padding Right Measurement Unit</label>
- <select id="box_padding_right_measurement" name="box_padding_right_measurement" disabled="disabled" aria-labelledby="box_padding_right_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_padding_bottom">{#style_dlg.bottom}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_padding_bottom" name="box_padding_bottom" class="mceEditableSelect" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_padding_bottom_measurement_label" for="box_padding_bottom_measurement" style="display: none; visibility: hidden;">Padding Bottom Measurement Unit</label>
- <select id="box_padding_bottom_measurement" name="box_padding_bottom_measurement" disabled="disabled" aria-labelledby="box_padding_bottom_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_padding_left">{#style_dlg.left}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_padding_left" name="box_padding_left" class="mceEditableSelect" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_padding_left_measurement_label" for="box_padding_left_measurement" style="display: none; visibility: hidden;">Padding Left Measurement Unit</label>
- <select id="box_padding_left_measurement" name="box_padding_left_measurement" disabled="disabled" aria-labelledby="box_padding_left_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-
-<div style="float: right; width: 49%">
- <fieldset>
- <legend>{#style_dlg.margin}</legend>
-
- <table role="presentation" border="0">
- <tr>
- <td>&nbsp;</td>
- <td><input type="checkbox" id="box_margin_same" name="box_margin_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_margin');" /> <label for="box_margin_same">{#style_dlg.same}</label></td>
- </tr>
- <tr>
- <td><label for="box_margin_top">{#style_dlg.top}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_margin_top" name="box_margin_top" class="mceEditableSelect" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_margin_top_measurement_label" for="box_margin_top_measurement" style="display: none; visibility: hidden;">Margin Top Measurement Unit</label>
- <select id="box_margin_top_measurement" name="box_margin_top_measurement" aria-labelledby="box_margin_top_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_margin_right">{#style_dlg.right}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_margin_right" name="box_margin_right" class="mceEditableSelect" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_margin_right_measurement_label" for="box_margin_right_measurement" style="display: none; visibility: hidden;">Margin Right Measurement Unit</label>
- <select id="box_margin_right_measurement" name="box_margin_right_measurement" disabled="disabled" aria-labelledby="box_margin_right_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_margin_bottom">{#style_dlg.bottom}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_margin_bottom" name="box_margin_bottom" class="mceEditableSelect" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_margin_bottom_measurement_label" for="box_margin_bottom_measurement" style="display: none; visibility: hidden;">Margin Bottom Measurement Unit</label>
- <select id="box_margin_bottom_measurement" name="box_margin_bottom_measurement" disabled="disabled" aria-labelledby="box_margin_bottom_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_margin_left">{#style_dlg.left}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_margin_left" name="box_margin_left" class="mceEditableSelect" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_margin_left_measurement_label" for="box_margin_left_measurement" style="display: none; visibility: hidden;">Margin Left Measurement Unit</label>
- <select id="box_margin_left_measurement" name="box_margin_left_measurement" disabled="disabled" aria-labelledby="box_margin_left_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-<br style="clear: both" />
-</div>
-
-<div id="border_panel" class="panel">
- <fieldset>
- <legend>{#style_dlg.border}</legend>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td class="tdelim">&nbsp;</td>
- <td class="tdelim delim">&nbsp;</td>
- <td class="tdelim">{#style_dlg.style}</td>
- <td class="tdelim delim">&nbsp;</td>
- <td class="tdelim">{#style_dlg.width}</td>
- <td class="tdelim delim">&nbsp;</td>
- <td class="tdelim">{#style_dlg.color}</td>
- </tr>
-
- <tr>
- <td>&nbsp;</td>
- <td class="delim">&nbsp;</td>
- <td><input type="checkbox" id="border_style_same" name="border_style_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_style');" /> <label for="border_style_same">{#style_dlg.same}</label></td>
- <td class="delim">&nbsp;</td>
- <td><input type="checkbox" id="border_width_same" name="border_width_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_width');" /> <label for="border_width_same">{#style_dlg.same}</label></td>
- <td class="delim">&nbsp;</td>
- <td><input type="checkbox" id="border_color_same" name="border_color_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_color');" /> <label for="border_color_same">{#style_dlg.same}</label></td>
- </tr>
-
- <tr>
- <td>{#style_dlg.top}</td>
- <td class="delim">&nbsp;</td>
- <td><select id="border_style_top" name="border_style_top" class="mceEditableSelect"></select></td>
- <td class="delim">&nbsp;</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="border_width_top" name="border_width_top" class="mceEditableSelect"></select></td>
- <td>&nbsp;</td>
- <td>
- <label id="border_width_top_measurement_label" for="border_width_top_measurement" style="display: none; visibility: hidden;">Width top Measurement Unit</label>
- <select id="border_width_top_measurement" name="border_width_top_measurement" aria-labelledby="border_width_top_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td class="delim">&nbsp;</td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="border_color_top" name="border_color_top" type="text" value="" size="9" onChange="updateColor('border_color_top_pick','border_color_top');" /></td>
- <td id="border_color_top_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td>{#style_dlg.right}</td>
- <td class="delim">&nbsp;</td>
- <td><select id="border_style_right" name="border_style_right" class="mceEditableSelect" disabled="disabled"></select></td>
- <td class="delim">&nbsp;</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="border_width_right" name="border_width_right" class="mceEditableSelect" disabled="disabled"></select></td>
- <td>&nbsp;</td>
- <td>
- <label id="border_width_right_measurement_label" for="border_width_right_measurement" style="display: none; visibility: hidden;">Width Right Measurement Unit</label>
- <select id="border_width_right_measurement" name="border_width_right_measurement" disabled="disabled" aria-labelledby="border_width_right_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td class="delim">&nbsp;</td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="border_color_right" name="border_color_right" type="text" value="" size="9" onChange="updateColor('border_color_right_pick','border_color_right');" disabled="disabled" /></td>
- <td id="border_color_right_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td>{#style_dlg.bottom}</td>
- <td class="delim">&nbsp;</td>
- <td><select id="border_style_bottom" name="border_style_bottom" class="mceEditableSelect" disabled="disabled"></select></td>
- <td class="delim">&nbsp;</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="border_width_bottom" name="border_width_bottom" class="mceEditableSelect" disabled="disabled"></select></td>
- <td>&nbsp;</td>
- <td>
- <label id="border_width_bottom_measurement_label" for="border_width_bottom_measurement" style="display: none; visibility: hidden;">Width Bottom Measurement Unit</label>
- <select id="border_width_bottom_measurement" name="border_width_bottom_measurement" disabled="disabled" aria-labelledby="border_width_bottom_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td class="delim">&nbsp;</td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="border_color_bottom" name="border_color_bottom" type="text" value="" size="9" onChange="updateColor('border_color_bottom_pick','border_color_bottom');" disabled="disabled" /></td>
- <td id="border_color_bottom_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td>{#style_dlg.left}</td>
- <td class="delim">&nbsp;</td>
- <td><select id="border_style_left" name="border_style_left" class="mceEditableSelect" disabled="disabled"></select></td>
- <td class="delim">&nbsp;</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="border_width_left" name="border_width_left" class="mceEditableSelect" disabled="disabled"></select></td>
- <td>&nbsp;</td>
- <td>
- <label id="border_width_left_measurement_label" for="border_width_left_measurement" style="display: none; visibility: hidden;">Width Left Measurement Unit</label>
- <select id="border_width_left_measurement" name="border_width_left_measurement" disabled="disabled" aria-labelledby="border_width_left_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td class="delim">&nbsp;</td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="border_color_left" name="border_color_left" type="text" value="" size="9" onChange="updateColor('border_color_left_pick','border_color_left');" disabled="disabled" /></td>
- <td id="border_color_left_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-
-<div id="list_panel" class="panel">
-<fieldset>
- <legend>{#style_dlg.list}</legend>
- <table role="presentation" border="0">
- <tr>
- <td><label for="list_type">{#style_dlg.list_type}</label></td>
- <td><select id="list_type" name="list_type" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="list_bullet_image">{#style_dlg.bullet_image}</label></td>
- <td><input id="list_bullet_image" name="list_bullet_image" type="text" /></td>
- </tr>
-
- <tr>
- <td><label for="list_position">{#style_dlg.position}</label></td>
- <td><select id="list_position" name="list_position" class="mceEditableSelect"></select></td>
- </tr>
- </table>
-</fieldset>
-</div>
-
-<div id="positioning_panel" class="panel">
-<fieldset>
- <legend>{#style_dlg.position}</legend>
-<table role="presentation" border="0">
- <tr>
- <td><label for="positioning_type">{#style_dlg.positioning_type}</label></td>
- <td><select id="positioning_type" name="positioning_type" class="mceEditableSelect"></select></td>
- <td>&nbsp;&nbsp;&nbsp;<label for="positioning_visibility">{#style_dlg.visibility}</label></td>
- <td><select id="positioning_visibility" name="positioning_visibility" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="positioning_width">{#style_dlg.width}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_width" name="positioning_width" onChange="synch('positioning_width','box_width');" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_width_measurement_label" for="positioning_width_measurement" style="display: none; visibility: hidden;">Positioning width Measurement Unit</label>
- <select id="positioning_width_measurement" name="positioning_width_measurement" aria-labelledby="positioning_width_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td>&nbsp;&nbsp;&nbsp;<label for="positioning_zindex">{#style_dlg.zindex}</label></td>
- <td><input type="text" id="positioning_zindex" name="positioning_zindex" /></td>
- </tr>
-
- <tr>
- <td><label for="positioning_height">{#style_dlg.height}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_height" name="positioning_height" onChange="synch('positioning_height','box_height');" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_height_measurement_label" for="positioning_height_measurement" style="display: none; visibility: hidden;">Positioning Height Measurement Unit</label>
- <select id="positioning_height_measurement" name="positioning_height_measurement" aria-labelledby="positioning_height_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td>&nbsp;&nbsp;&nbsp;<label for="positioning_overflow">{#style_dlg.overflow}</label></td>
- <td><select id="positioning_overflow" name="positioning_overflow" class="mceEditableSelect"></select></td>
- </tr>
-</table>
-</fieldset>
-
-<div style="float: left; width: 49%">
- <fieldset>
- <legend>{#style_dlg.placement}</legend>
-
- <table role="presentation" border="0">
- <tr>
- <td>&nbsp;</td>
- <td><input type="checkbox" id="positioning_placement_same" name="positioning_placement_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_placement');" /> <label for="positioning_placement_same">{#style_dlg.same}</label></td>
- </tr>
- <tr>
- <td>{#style_dlg.top}</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_placement_top" name="positioning_placement_top" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_placement_top_measurement_label" for="positioning_placement_top_measurement" style="display: none; visibility: hidden;">Placement Top Measurement Unit</label>
- <select id="positioning_placement_top_measurement" name="positioning_placement_top_measurement" aria-labelledby="positioning_placement_top_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.right}</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_placement_right" name="positioning_placement_right" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_placement_right_measurement_label" for="positioning_placement_right_measurement" style="display: none; visibility: hidden;">Placement Right Measurement Unit</label>
- <select id="positioning_placement_right_measurement" name="positioning_placement_right_measurement" disabled="disabled" aria-labelledby="positioning_placement_right_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.bottom}</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_placement_bottom" name="positioning_placement_bottom" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_placement_bottom_measurement_label" for="positioning_placement_bottom_measurement" style="display: none; visibility: hidden;">Placement Bottom Measurement Unit</label>
- <select id="positioning_placement_bottom_measurement" name="positioning_placement_bottom_measurement" disabled="disabled" aria-labelledby="positioning_placement_bottom_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.left}</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_placement_left" name="positioning_placement_left" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_placement_left_measurement_label" for="positioning_placement_left_measurement" style="display: none; visibility: hidden;">Placement Left Measurement Unit</label>
- <select id="positioning_placement_left_measurement" name="positioning_placement_left_measurement" disabled="disabled" aria-labelledby="positioning_placement_left_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-
-<div style="float: right; width: 49%">
- <fieldset>
- <legend>{#style_dlg.clip}</legend>
-
- <table role="presentation" border="0">
- <tr>
- <td>&nbsp;</td>
- <td><input type="checkbox" id="positioning_clip_same" name="positioning_clip_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_clip');" /> <label for="positioning_clip_same">{#style_dlg.same}</label></td>
- </tr>
- <tr>
- <td>{#style_dlg.top}</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_clip_top" name="positioning_clip_top" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_clip_top_measurement_label" for="positioning_clip_top_measurement" style="display: none; visibility: hidden;">Clip Top Measurement Unit</label>
- <select id="positioning_clip_top_measurement" name="positioning_clip_top_measurement" aria-labelledby="positioning_clip_top_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.right}</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_clip_right" name="positioning_clip_right" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_clip_right_measurement_label" for="positioning_clip_right_measurement" style="display: none; visibility: hidden;">Clip Right Measurement Unit</label>
- <select id="positioning_clip_right_measurement" name="positioning_clip_right_measurement" disabled="disabled" aria-labelledby="positioning_clip_right_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.bottom}</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_clip_bottom" name="positioning_clip_bottom" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_clip_bottom_measurement_label" for="positioning_clip_bottom_measurement" style="display: none; visibility: hidden;">Clip Bottom Measurement Unit</label>
- <select id="positioning_clip_bottom_measurement" name="positioning_clip_bottom_measurement" disabled="disabled" aria-labelledby="positioning_clip_bottom_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.left}</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_clip_left" name="positioning_clip_left" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_clip_left_measurement_label" for="positioning_clip_left_measurement" style="display: none; visibility: hidden;">Clip Left Measurement Unit</label>
- <select id="positioning_clip_left_measurement" name="positioning_clip_left_measurement" disabled="disabled" aria-labelledby="positioning_clip_left_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-<br style="clear: both" />
-</div>
-</div>
-
-<div class="panel_toggle_insert_span">
- <input type="checkbox" class="checkbox" id="toggle_insert_span" name="toggle_insert_span" onClick="toggleApplyAction();" />
- <label for="toggle_insert_span">{#style_dlg.toggle_insert_span}</label>
-</div>
-
-<div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" class="button" id="apply" name="apply" value="{#style_dlg.apply}" onClick="applyAction();" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onClick="tinyMCEPopup.close();" />
-</div>
-</form>
-
-<div style="display: none">
- <div id="container"></div>
-</div>
-
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/style/readme.txt b/library/tinymce/jscripts/tiny_mce/plugins/style/readme.txt
deleted file mode 100644
index 5bac30202..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/style/readme.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Edit CSS Style plug-in notes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Unlike WYSIWYG editor functionality that operates only on the selected text,
-typically by inserting new HTML elements with the specified styles.
-This plug-in operates on the HTML blocks surrounding the selected text.
-No new HTML elements are created.
-
-This plug-in only operates on the surrounding blocks and not the nearest
-parent node. This means that if a block encapsulates a node,
-e.g <p><span>text</span></p>, then only the styles in the block are
-recognized, not those in the span.
-
-When selecting text that includes multiple blocks at the same level (peers),
-this plug-in accumulates the specified styles in all of the surrounding blocks
-and populates the dialogue checkboxes accordingly. There is no differentiation
-between styles set in all the blocks versus styles set in some of the blocks.
-
-When the [Update] or [Apply] buttons are pressed, the styles selected in the
-checkboxes are applied to all blocks that surround the selected text.
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js
deleted file mode 100644
index 2c5129161..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(t){n=c.select(":input:enabled,*[tabindex]:not(iframe)");function s(v){return v.nodeName==="BODY"||(v.type!="hidden"&&!(v.style.display=="none")&&!(v.style.visibility=="hidden")&&s(v.parentNode))}function i(v){return v.attributes.tabIndex.specified||v.nodeName=="INPUT"||v.nodeName=="TEXTAREA"}function u(){return tinymce.isIE6||tinymce.isIE7}function r(v){return((!u()||i(v)))&&v.getAttribute("tabindex")!="-1"&&s(v)}d(n,function(w,v){if(w.id==l.id){j=v;return false}});if(t>0){for(m=j+1;m<n.length;m++){if(r(n[m])){return n[m]}}}else{for(m=j-1;m>=0;m--){if(r(n[m])){return n[m]}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(n.id&&(l=tinymce.get(n.id||n.name))){l.focus()}else{window.setTimeout(function(){if(!tinymce.isWebKit){window.focus()}n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js
deleted file mode 100644
index 94f45320d..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, explode = tinymce.explode;
-
- tinymce.create('tinymce.plugins.TabFocusPlugin', {
- init : function(ed, url) {
- function tabCancel(ed, e) {
- if (e.keyCode === 9)
- return Event.cancel(e);
- }
-
- function tabHandler(ed, e) {
- var x, i, f, el, v;
-
- function find(d) {
- el = DOM.select(':input:enabled,*[tabindex]:not(iframe)');
-
- function canSelectRecursive(e) {
- return e.nodeName==="BODY" || (e.type != 'hidden' &&
- !(e.style.display == "none") &&
- !(e.style.visibility == "hidden") && canSelectRecursive(e.parentNode));
- }
- function canSelectInOldIe(el) {
- return el.attributes["tabIndex"].specified || el.nodeName == "INPUT" || el.nodeName == "TEXTAREA";
- }
- function isOldIe() {
- return tinymce.isIE6 || tinymce.isIE7;
- }
- function canSelect(el) {
- return ((!isOldIe() || canSelectInOldIe(el))) && el.getAttribute("tabindex") != '-1' && canSelectRecursive(el);
- }
-
- each(el, function(e, i) {
- if (e.id == ed.id) {
- x = i;
- return false;
- }
- });
- if (d > 0) {
- for (i = x + 1; i < el.length; i++) {
- if (canSelect(el[i]))
- return el[i];
- }
- } else {
- for (i = x - 1; i >= 0; i--) {
- if (canSelect(el[i]))
- return el[i];
- }
- }
-
- return null;
- }
-
- if (e.keyCode === 9) {
- v = explode(ed.getParam('tab_focus', ed.getParam('tabfocus_elements', ':prev,:next')));
-
- if (v.length == 1) {
- v[1] = v[0];
- v[0] = ':prev';
- }
-
- // Find element to focus
- if (e.shiftKey) {
- if (v[0] == ':prev')
- el = find(-1);
- else
- el = DOM.get(v[0]);
- } else {
- if (v[1] == ':next')
- el = find(1);
- else
- el = DOM.get(v[1]);
- }
-
- if (el) {
- if (el.id && (ed = tinymce.get(el.id || el.name)))
- ed.focus();
- else
- window.setTimeout(function() {
- if (!tinymce.isWebKit)
- window.focus();
- el.focus();
- }, 10);
-
- return Event.cancel(e);
- }
- }
- }
-
- ed.onKeyUp.add(tabCancel);
-
- if (tinymce.isGecko) {
- ed.onKeyPress.add(tabHandler);
- ed.onKeyDown.add(tabCancel);
- } else
- ed.onKeyDown.add(tabHandler);
-
- },
-
- getInfo : function() {
- return {
- longname : 'Tabfocus',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('tabfocus', tinymce.plugins.TabFocusPlugin);
-})();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/cell.htm b/library/tinymce/jscripts/tiny_mce/plugins/table/cell.htm
deleted file mode 100644
index a72a8d697..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/table/cell.htm
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#table_dlg.cell_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/validate.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/cell.js"></script>
- <link href="css/cell.css" rel="stylesheet" type="text/css" />
-</head>
-<body id="tablecell" style="display: none" role="application">
- <form onsubmit="updateAction();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
- <li id="advanced_tab" aria-controls="advanced_panel"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#table_dlg.general_props}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td><label for="align">{#table_dlg.align}</label></td>
- <td>
- <select id="align" name="align" class="mceFocus">
- <option value="">{#not_set}</option>
- <option value="center">{#table_dlg.align_middle}</option>
- <option value="left">{#table_dlg.align_left}</option>
- <option value="right">{#table_dlg.align_right}</option>
- </select>
- </td>
-
- <td><label for="celltype">{#table_dlg.cell_type}</label></td>
- <td>
- <select id="celltype" name="celltype">
- <option value="td">{#table_dlg.td}</option>
- <option value="th">{#table_dlg.th}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td><label for="valign">{#table_dlg.valign}</label></td>
- <td>
- <select id="valign" name="valign">
- <option value="">{#not_set}</option>
- <option value="top">{#table_dlg.align_top}</option>
- <option value="middle">{#table_dlg.align_middle}</option>
- <option value="bottom">{#table_dlg.align_bottom}</option>
- </select>
- </td>
-
- <td><label for="scope">{#table_dlg.scope}</label></td>
- <td>
- <select id="scope" name="scope">
- <option value="">{#not_set}</option>
- <option value="col">{#table.col}</option>
- <option value="row">{#table.row}</option>
- <option value="rowgroup">{#table_dlg.rowgroup}</option>
- <option value="colgroup">{#table_dlg.colgroup}</option>
- </select>
- </td>
-
- </tr>
-
- <tr>
- <td><label for="width">{#table_dlg.width}</label></td>
- <td><input id="width" name="width" type="text" value="" size="7" maxlength="7" onchange="changedSize();" class="size" /></td>
-
- <td><label for="height">{#table_dlg.height}</label></td>
- <td><input id="height" name="height" type="text" value="" size="7" maxlength="7" onchange="changedSize();" class="size" /></td>
- </tr>
-
- <tr id="styleSelectRow">
- <td><label for="class">{#class_name}</label></td>
- <td colspan="3">
- <select id="class" name="class" class="mceEditableSelect">
- <option value="" selected="selected">{#not_set}</option>
- </select>
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
-
- <div id="advanced_panel" class="panel">
- <fieldset>
- <legend>{#table_dlg.advanced_props}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="column1"><label for="id">{#table_dlg.id}</label></td>
- <td><input id="id" name="id" type="text" value="" style="width: 200px" /></td>
- </tr>
-
- <tr>
- <td><label for="style">{#table_dlg.style}</label></td>
- <td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="dir">{#table_dlg.langdir}</label></td>
- <td>
- <select id="dir" name="dir" style="width: 200px">
- <option value="">{#not_set}</option>
- <option value="ltr">{#table_dlg.ltr}</option>
- <option value="rtl">{#table_dlg.rtl}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="lang">{#table_dlg.langcode}</label></td>
- <td>
- <input id="lang" name="lang" type="text" value="" style="width: 200px" />
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>
- <td id="backgroundimagebrowsercontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr role="group" aria-labelledby="bordercolor_label">
- <td class="column1"><label id="bordercolor_label" for="bordercolor">{#table_dlg.bordercolor}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>
- <td id="bordercolor_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr role="group" aria-labelledby="bgcolor_label">
- <td class="column1"><label id="bgcolor_label" for="bgcolor">{#table_dlg.bgcolor}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
- <td id="bgcolor_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <div>
- <select id="action" name="action">
- <option value="cell">{#table_dlg.cell_cell}</option>
- <option value="row">{#table_dlg.cell_row}</option>
- <option value="col">{#table_dlg.cell_col}</option>
- <option value="all">{#table_dlg.cell_all}</option>
- </select>
- </div>
-
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
- </form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css b/library/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css
deleted file mode 100644
index a067ecdfe..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css
+++ /dev/null
@@ -1,17 +0,0 @@
-/* CSS file for cell dialog in the table plugin */
-
-.panel_wrapper div.current {
- height: 200px;
-}
-
-.advfield {
- width: 200px;
-}
-
-#action {
- margin-bottom: 3px;
-}
-
-#class {
- width: 150px;
-} \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/css/row.css b/library/tinymce/jscripts/tiny_mce/plugins/table/css/row.css
deleted file mode 100644
index 1f7755daf..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/table/css/row.css
+++ /dev/null
@@ -1,25 +0,0 @@
-/* CSS file for row dialog in the table plugin */
-
-.panel_wrapper div.current {
- height: 200px;
-}
-
-.advfield {
- width: 200px;
-}
-
-#action {
- margin-bottom: 3px;
-}
-
-#rowtype,#align,#valign,#class,#height {
- width: 150px;
-}
-
-#height {
- width: 50px;
-}
-
-.col2 {
- padding-left: 20px;
-}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/css/table.css b/library/tinymce/jscripts/tiny_mce/plugins/table/css/table.css
deleted file mode 100644
index d11c3f69c..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/table/css/table.css
+++ /dev/null
@@ -1,13 +0,0 @@
-/* CSS file for table dialog in the table plugin */
-
-.panel_wrapper div.current {
- height: 245px;
-}
-
-.advfield {
- width: 200px;
-}
-
-#class {
- width: 150px;
-}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js
deleted file mode 100644
index ad462f0e0..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(d){var e=d.each;function c(g,h){var j=h.ownerDocument,f=j.createRange(),k;f.setStartBefore(h);f.setEnd(g.endContainer,g.endOffset);k=j.createElement("body");k.appendChild(f.cloneContents());return k.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length==0}function a(g,f){return parseInt(g.getAttribute(f)||1)}function b(H,G,K){var g,L,D,o;t();o=G.getParent(K.getStart(),"th,td");if(o){L=F(o);D=I();o=z(L.x,L.y)}function A(N,M){N=N.cloneNode(M);N.removeAttribute("id");return N}function t(){var M=0;g=[];e(["thead","tbody","tfoot"],function(N){var O=G.select("> "+N+" tr",H);e(O,function(P,Q){Q+=M;e(G.select("> td, > th",P),function(W,R){var S,T,U,V;if(g[Q]){while(g[Q][R]){R++}}U=a(W,"rowspan");V=a(W,"colspan");for(T=Q;T<Q+U;T++){if(!g[T]){g[T]=[]}for(S=R;S<R+V;S++){g[T][S]={part:N,real:T==Q&&S==R,elm:W,rowspan:U,colspan:V}}}})});M+=O.length})}function z(M,O){var N;N=g[O];if(N){return N[M]}}function s(O,M,N){if(O){N=parseInt(N);if(N===1){O.removeAttribute(M,1)}else{O.setAttribute(M,N,1)}}}function j(M){return M&&(G.hasClass(M.elm,"mceSelected")||M==o)}function k(){var M=[];e(H.rows,function(N){e(N.cells,function(O){if(G.hasClass(O,"mceSelected")||O==o.elm){M.push(N);return false}})});return M}function r(){var M=G.createRng();M.setStartAfter(H);M.setEndAfter(H);K.setRng(M);G.remove(H)}function f(M){var N;d.walk(M,function(P){var O;if(P.nodeType==3){e(G.getParents(P.parentNode,null,M).reverse(),function(Q){Q=A(Q,false);if(!N){N=O=Q}else{if(O){O.appendChild(Q)}}O=Q});if(O){O.innerHTML=d.isIE?"&nbsp;":'<br data-mce-bogus="1" />'}return false}},"childNodes");M=A(M,false);s(M,"rowSpan",1);s(M,"colSpan",1);if(N){M.appendChild(N)}else{if(!d.isIE){M.innerHTML='<br data-mce-bogus="1" />'}}return M}function q(){var M=G.createRng();e(G.select("tr",H),function(N){if(N.cells.length==0){G.remove(N)}});if(G.select("tr",H).length==0){M.setStartAfter(H);M.setEndAfter(H);K.setRng(M);G.remove(H);return}e(G.select("thead,tbody,tfoot",H),function(N){if(N.rows.length==0){G.remove(N)}});t();row=g[Math.min(g.length-1,L.y)];if(row){K.select(row[Math.min(row.length-1,L.x)].elm,true);K.collapse(true)}}function u(S,Q,U,R){var P,N,M,O,T;P=g[Q][S].elm.parentNode;for(M=1;M<=U;M++){P=G.getNext(P,"tr");if(P){for(N=S;N>=0;N--){T=g[Q+M][N].elm;if(T.parentNode==P){for(O=1;O<=R;O++){G.insertAfter(f(T),T)}break}}if(N==-1){for(O=1;O<=R;O++){P.insertBefore(f(P.cells[0]),P.cells[0])}}}}}function C(){e(g,function(M,N){e(M,function(P,O){var S,R,T,Q;if(j(P)){P=P.elm;S=a(P,"colspan");R=a(P,"rowspan");if(S>1||R>1){s(P,"rowSpan",1);s(P,"colSpan",1);for(Q=0;Q<S-1;Q++){G.insertAfter(f(P),P)}u(O,N,R-1,S)}}})})}function p(V,S,Y){var P,O,X,W,U,R,T,M,V,N,Q;if(V){pos=F(V);P=pos.x;O=pos.y;X=P+(S-1);W=O+(Y-1)}else{P=L.x;O=L.y;X=D.x;W=D.y}T=z(P,O);M=z(X,W);if(T&&M&&T.part==M.part){C();t();T=z(P,O).elm;s(T,"colSpan",(X-P)+1);s(T,"rowSpan",(W-O)+1);for(R=O;R<=W;R++){for(U=P;U<=X;U++){if(!g[R]||!g[R][U]){continue}V=g[R][U].elm;if(V!=T){N=d.grep(V.childNodes);e(N,function(Z){T.appendChild(Z)});if(N.length){N=d.grep(T.childNodes);Q=0;e(N,function(Z){if(Z.nodeName=="BR"&&G.getAttrib(Z,"data-mce-bogus")&&Q++<N.length-1){T.removeChild(Z)}})}G.remove(V)}}}q()}}function l(Q){var M,S,P,R,T,U,N,V,O;e(g,function(W,X){e(W,function(Z,Y){if(j(Z)){Z=Z.elm;T=Z.parentNode;U=A(T,false);M=X;if(Q){return false}}});if(Q){return !M}});for(R=0;R<g[0].length;R++){if(!g[M][R]){continue}S=g[M][R].elm;if(S!=P){if(!Q){O=a(S,"rowspan");if(O>1){s(S,"rowSpan",O+1);continue}}else{if(M>0&&g[M-1][R]){V=g[M-1][R].elm;O=a(V,"rowSpan");if(O>1){s(V,"rowSpan",O+1);continue}}}N=f(S);s(N,"colSpan",S.colSpan);U.appendChild(N);P=S}}if(U.hasChildNodes()){if(!Q){G.insertAfter(U,T)}else{T.parentNode.insertBefore(U,T)}}}function h(N){var O,M;e(g,function(P,Q){e(P,function(S,R){if(j(S)){O=R;if(N){return false}}});if(N){return !O}});e(g,function(S,T){var P,Q,R;if(!S[O]){return}P=S[O].elm;if(P!=M){R=a(P,"colspan");Q=a(P,"rowspan");if(R==1){if(!N){G.insertAfter(f(P),P);u(O,T,Q-1,R)}else{P.parentNode.insertBefore(f(P),P);u(O,T,Q-1,R)}}else{s(P,"colSpan",P.colSpan+1)}M=P}})}function n(){var M=[];e(g,function(N,O){e(N,function(Q,P){if(j(Q)&&d.inArray(M,P)===-1){e(g,function(T){var R=T[P].elm,S;S=a(R,"colSpan");if(S>1){s(R,"colSpan",S-1)}else{G.remove(R)}});M.push(P)}})});q()}function m(){var N;function M(Q){var P,R,O;P=G.getNext(Q,"tr");e(Q.cells,function(S){var T=a(S,"rowSpan");if(T>1){s(S,"rowSpan",T-1);R=F(S);u(R.x,R.y,1,1)}});R=F(Q.cells[0]);e(g[R.y],function(S){var T;S=S.elm;if(S!=O){T=a(S,"rowSpan");if(T<=1){G.remove(S)}else{s(S,"rowSpan",T-1)}O=S}})}N=k();e(N.reverse(),function(O){M(O)});q()}function E(){var M=k();G.remove(M);q();return M}function J(){var M=k();e(M,function(O,N){M[N]=A(O,true)});return M}function B(O,N){var P=k(),M=P[N?0:P.length-1],Q=M.cells.length;e(g,function(S){var R;Q=0;e(S,function(U,T){if(U.real){Q+=U.colspan}if(U.elm.parentNode==M){R=1}});if(R){return false}});if(!N){O.reverse()}e(O,function(T){var S=T.cells.length,R;for(i=0;i<S;i++){R=T.cells[i];s(R,"colSpan",1);s(R,"rowSpan",1)}for(i=S;i<Q;i++){T.appendChild(f(T.cells[S-1]))}for(i=Q;i<S;i++){G.remove(T.cells[i])}if(N){M.parentNode.insertBefore(T,M)}else{G.insertAfter(T,M)}})}function F(M){var N;e(g,function(O,P){e(O,function(R,Q){if(R.elm==M){N={x:Q,y:P};return false}});return !N});return N}function w(M){L=F(M)}function I(){var O,N,M;N=M=0;e(g,function(P,Q){e(P,function(S,R){var U,T;if(j(S)){S=g[Q][R];if(R>N){N=R}if(Q>M){M=Q}if(S.real){U=S.colspan-1;T=S.rowspan-1;if(U){if(R+U>N){N=R+U}}if(T){if(Q+T>M){M=Q+T}}}}})});return{x:N,y:M}}function v(S){var P,O,U,T,N,M,Q,R;D=F(S);if(L&&D){P=Math.min(L.x,D.x);O=Math.min(L.y,D.y);U=Math.max(L.x,D.x);T=Math.max(L.y,D.y);N=U;M=T;for(y=O;y<=M;y++){S=g[y][P];if(!S.real){if(P-(S.colspan-1)<P){P-=S.colspan-1}}}for(x=P;x<=N;x++){S=g[O][x];if(!S.real){if(O-(S.rowspan-1)<O){O-=S.rowspan-1}}}for(y=O;y<=T;y++){for(x=P;x<=U;x++){S=g[y][x];if(S.real){Q=S.colspan-1;R=S.rowspan-1;if(Q){if(x+Q>N){N=x+Q}}if(R){if(y+R>M){M=y+R}}}}}G.removeClass(G.select("td.mceSelected,th.mceSelected"),"mceSelected");for(y=O;y<=M;y++){for(x=P;x<=N;x++){if(g[y][x]){G.addClass(g[y][x].elm,"mceSelected")}}}}}d.extend(this,{deleteTable:r,split:C,merge:p,insertRow:l,insertCol:h,deleteCols:n,deleteRows:m,cutRows:E,copyRows:J,pasteRows:B,getPos:F,setStartCell:w,setEndCell:v})}d.create("tinymce.plugins.TablePlugin",{init:function(g,h){var f,m,j=true;function l(p){var o=g.selection,n=g.dom.getParent(p||o.getNode(),"table");if(n){return new b(n,g.dom,o)}}function k(){g.getBody().style.webkitUserSelect="";if(j){g.dom.removeClass(g.dom.select("td.mceSelected,th.mceSelected"),"mceSelected");j=false}}e([["table","table.desc","mceInsertTable",true],["delete_table","table.del","mceTableDelete"],["delete_col","table.delete_col_desc","mceTableDeleteCol"],["delete_row","table.delete_row_desc","mceTableDeleteRow"],["col_after","table.col_after_desc","mceTableInsertColAfter"],["col_before","table.col_before_desc","mceTableInsertColBefore"],["row_after","table.row_after_desc","mceTableInsertRowAfter"],["row_before","table.row_before_desc","mceTableInsertRowBefore"],["row_props","table.row_desc","mceTableRowProps",true],["cell_props","table.cell_desc","mceTableCellProps",true],["split_cells","table.split_cells_desc","mceTableSplitCells",true],["merge_cells","table.merge_cells_desc","mceTableMergeCells",true]],function(n){g.addButton(n[0],{title:n[1],cmd:n[2],ui:n[3]})});if(!d.isIE){g.onClick.add(function(n,o){o=o.target;if(o.nodeName==="TABLE"){n.selection.select(o);n.nodeChanged()}})}g.onPreProcess.add(function(o,p){var n,q,r,t=o.dom,s;n=t.select("table",p.node);q=n.length;while(q--){r=n[q];t.setAttrib(r,"data-mce-style","");if((s=t.getAttrib(r,"width"))){t.setStyle(r,"width",s);t.setAttrib(r,"width","")}if((s=t.getAttrib(r,"height"))){t.setStyle(r,"height",s);t.setAttrib(r,"height","")}}});g.onNodeChange.add(function(q,o,s){var r;s=q.selection.getStart();r=q.dom.getParent(s,"td,th,caption");o.setActive("table",s.nodeName==="TABLE"||!!r);if(r&&r.nodeName==="CAPTION"){r=0}o.setDisabled("delete_table",!r);o.setDisabled("delete_col",!r);o.setDisabled("delete_table",!r);o.setDisabled("delete_row",!r);o.setDisabled("col_after",!r);o.setDisabled("col_before",!r);o.setDisabled("row_after",!r);o.setDisabled("row_before",!r);o.setDisabled("row_props",!r);o.setDisabled("cell_props",!r);o.setDisabled("split_cells",!r);o.setDisabled("merge_cells",!r)});g.onInit.add(function(r){var p,t,q=r.dom,u;f=r.windowManager;r.onMouseDown.add(function(w,z){if(z.button!=2){k();t=q.getParent(z.target,"td,th");p=q.getParent(t,"table")}});q.bind(r.getDoc(),"mouseover",function(C){var A,z,B=C.target;if(t&&(u||B!=t)&&(B.nodeName=="TD"||B.nodeName=="TH")){z=q.getParent(B,"table");if(z==p){if(!u){u=l(z);u.setStartCell(t);r.getBody().style.webkitUserSelect="none"}u.setEndCell(B);j=true}A=r.selection.getSel();try{if(A.removeAllRanges){A.removeAllRanges()}else{A.empty()}}catch(w){}C.preventDefault()}});r.onMouseUp.add(function(F,G){var z,B=F.selection,H,I=B.getSel(),w,C,A,E;if(t){if(u){F.getBody().style.webkitUserSelect=""}function D(J,L){var K=new d.dom.TreeWalker(J,J);do{if(J.nodeType==3&&d.trim(J.nodeValue).length!=0){if(L){z.setStart(J,0)}else{z.setEnd(J,J.nodeValue.length)}return}if(J.nodeName=="BR"){if(L){z.setStartBefore(J)}else{z.setEndBefore(J)}return}}while(J=(L?K.next():K.prev()))}H=q.select("td.mceSelected,th.mceSelected");if(H.length>0){z=q.createRng();C=H[0];E=H[H.length-1];z.setStartBefore(C);z.setEndAfter(C);D(C,1);w=new d.dom.TreeWalker(C,q.getParent(H[0],"table"));do{if(C.nodeName=="TD"||C.nodeName=="TH"){if(!q.hasClass(C,"mceSelected")){break}A=C}}while(C=w.next());D(A);B.setRng(z)}F.nodeChanged();t=u=p=null}});r.onKeyUp.add(function(w,z){k()});r.onKeyDown.add(function(w,z){n(w)});r.onMouseDown.add(function(w,z){if(z.button!=2){n(w)}});function o(D,z,A,F){var B=3,G=D.dom.getParent(z.startContainer,"TABLE"),C,w,E;if(G){C=G.parentNode}w=z.startContainer.nodeType==B&&z.startOffset==0&&z.endOffset==0&&F&&(A.nodeName=="TR"||A==C);E=(A.nodeName=="TD"||A.nodeName=="TH")&&!F;return w||E}function n(A){if(!d.isWebKit){return}var z=A.selection.getRng();var C=A.selection.getNode();var B=A.dom.getParent(z.startContainer,"TD,TH");if(!o(A,z,C,B)){return}if(!B){B=C}var w=B.lastChild;while(w.lastChild){w=w.lastChild}z.setEnd(w,w.nodeValue.length);A.selection.setRng(z)}r.plugins.table.fixTableCellSelection=n;if(r&&r.plugins.contextmenu){r.plugins.contextmenu.onContextMenu.add(function(A,w,C){var D,B=r.selection,z=B.getNode()||r.getBody();if(r.dom.getParent(C,"td")||r.dom.getParent(C,"th")||r.dom.select("td.mceSelected,th.mceSelected").length){w.removeAll();if(z.nodeName=="A"&&!r.dom.getAttrib(z,"name")){w.add({title:"advanced.link_desc",icon:"link",cmd:r.plugins.advlink?"mceAdvLink":"mceLink",ui:true});w.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});w.addSeparator()}if(z.nodeName=="IMG"&&z.className.indexOf("mceItem")==-1){w.add({title:"advanced.image_desc",icon:"image",cmd:r.plugins.advimage?"mceAdvImage":"mceImage",ui:true});w.addSeparator()}w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",value:{action:"insert"}});w.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable"});w.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete"});w.addSeparator();D=w.addMenu({title:"table.cell"});D.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps"});D.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells"});D.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells"});D=w.addMenu({title:"table.row"});D.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps"});D.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});D.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});D.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});D.addSeparator();D.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});D.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});D.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"}).setDisabled(!m);D.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"}).setDisabled(!m);D=w.addMenu({title:"table.col"});D.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});D.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});D.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable"})}})}if(d.isWebKit){function v(C,N){var L=d.VK;var Q=N.keyCode;function O(Y,U,S){var T=Y?"previousSibling":"nextSibling";var Z=C.dom.getParent(U,"tr");var X=Z[T];if(X){z(C,U,X,Y);d.dom.Event.cancel(S);return true}else{var aa=C.dom.getParent(Z,"table");var W=Z.parentNode;var R=W.nodeName.toLowerCase();if(R==="tbody"||R===(Y?"tfoot":"thead")){var V=w(Y,aa,W,"tbody");if(V!==null){return K(Y,V,U,S)}}return M(Y,Z,T,aa,S)}}function w(V,T,U,X){var S=C.dom.select(">"+X,T);var R=S.indexOf(U);if(V&&R===0||!V&&R===S.length-1){return B(V,T)}else{if(R===-1){var W=U.tagName.toLowerCase()==="thead"?0:S.length-1;return S[W]}else{return S[R+(V?-1:1)]}}}function B(U,T){var S=U?"thead":"tfoot";var R=C.dom.select(">"+S,T);return R.length!==0?R[0]:null}function K(V,T,S,U){var R=J(T,V);R&&z(C,S,R,V);d.dom.Event.cancel(U);return true}function M(Y,U,R,X,W){var S=X[R];if(S){F(S);return true}else{var V=C.dom.getParent(X,"td,th");if(V){return O(Y,V,W)}else{var T=J(U,!Y);F(T);return d.dom.Event.cancel(W)}}}function J(S,R){var T=S&&S[R?"lastChild":"firstChild"];return T&&T.nodeName==="BR"?C.dom.getParent(T,"td,th"):T}function F(R){C.selection.setCursorLocation(R,0)}function A(){return Q==L.UP||Q==L.DOWN}function D(R){var T=R.selection.getNode();var S=R.dom.getParent(T,"tr");return S!==null}function P(S){var R=0;var T=S;while(T.previousSibling){T=T.previousSibling;R=R+a(T,"colspan")}return R}function E(T,R){var U=0;var S=0;e(T.children,function(V,W){U=U+a(V,"colspan");S=W;if(U>R){return false}});return S}function z(T,W,Y,V){var X=P(T.dom.getParent(W,"td,th"));var S=E(Y,X);var R=Y.childNodes[S];var U=J(R,V);F(U||R)}function H(R){var T=C.selection.getNode();var U=C.dom.getParent(T,"td,th");var S=C.dom.getParent(R,"td,th");return U&&U!==S&&I(U,S)}function I(S,R){return C.dom.getParent(S,"TABLE")===C.dom.getParent(R,"TABLE")}if(A()&&D(C)){var G=C.selection.getNode();setTimeout(function(){if(H(G)){O(!N.shiftKey&&Q===L.UP,G,N)}},0)}}r.onKeyDown.add(v)}if(!d.isIE){function s(){var w;for(w=r.getBody().lastChild;w&&w.nodeType==3&&!w.nodeValue.length;w=w.previousSibling){}if(w&&w.nodeName=="TABLE"){r.dom.add(r.getBody(),"p",null,'<br mce_bogus="1" />')}}if(d.isGecko){r.onKeyDown.add(function(z,B){var w,A,C=z.dom;if(B.keyCode==37||B.keyCode==38){w=z.selection.getRng();A=C.getParent(w.startContainer,"table");if(A&&z.getBody().firstChild==A){if(c(w,A)){w=C.createRng();w.setStartBefore(A);w.setEndBefore(A);z.selection.setRng(w);B.preventDefault()}}}})}r.onKeyUp.add(s);r.onSetContent.add(s);r.onVisualAid.add(s);r.onPreProcess.add(function(w,A){var z=A.node.lastChild;if(z&&z.childNodes.length==1&&z.firstChild.nodeName=="BR"){w.dom.remove(z)}});if(d.isGecko){r.onKeyDown.add(function(z,B){if(B.keyCode===d.VK.ENTER&&B.shiftKey){var A=z.selection.getRng().startContainer;var C=q.getParent(A,"td,th");if(C){var w=z.getDoc().createTextNode("\uFEFF");q.insertAfter(w,A)}}})}s();r.startContent=r.getContent({format:"raw"})}});e({mceTableSplitCells:function(n){n.split()},mceTableMergeCells:function(o){var p,q,n;n=g.dom.getParent(g.selection.getNode(),"th,td");if(n){p=n.rowSpan;q=n.colSpan}if(!g.dom.select("td.mceSelected,th.mceSelected").length){f.open({url:h+"/merge_cells.htm",width:240+parseInt(g.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(g.getLang("table.merge_cells_delta_height",0)),inline:1},{rows:p,cols:q,onaction:function(r){o.merge(n,r.cols,r.rows)},plugin_url:h})}else{o.merge()}},mceTableInsertRowBefore:function(n){n.insertRow(true)},mceTableInsertRowAfter:function(n){n.insertRow()},mceTableInsertColBefore:function(n){n.insertCol(true)},mceTableInsertColAfter:function(n){n.insertCol()},mceTableDeleteCol:function(n){n.deleteCols()},mceTableDeleteRow:function(n){n.deleteRows()},mceTableCutRow:function(n){m=n.cutRows()},mceTableCopyRow:function(n){m=n.copyRows()},mceTablePasteRowBefore:function(n){n.pasteRows(m,true)},mceTablePasteRowAfter:function(n){n.pasteRows(m)},mceTableDelete:function(n){n.deleteTable()}},function(o,n){g.addCommand(n,function(){var p=l();if(p){o(p);g.execCommand("mceRepaint");k()}})});e({mceInsertTable:function(n){f.open({url:h+"/table.htm",width:400+parseInt(g.getLang("table.table_delta_width",0)),height:320+parseInt(g.getLang("table.table_delta_height",0)),inline:1},{plugin_url:h,action:n?n.action:0})},mceTableRowProps:function(){f.open({url:h+"/row.htm",width:400+parseInt(g.getLang("table.rowprops_delta_width",0)),height:295+parseInt(g.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:h})},mceTableCellProps:function(){f.open({url:h+"/cell.htm",width:400+parseInt(g.getLang("table.cellprops_delta_width",0)),height:295+parseInt(g.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:h})}},function(o,n){g.addCommand(n,function(p,q){o(q)})})}});d.PluginManager.add("table",d.plugins.TablePlugin)})(tinymce); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js
deleted file mode 100644
index 832b5e943..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js
+++ /dev/null
@@ -1,1428 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function(tinymce) {
- var each = tinymce.each;
-
- // Checks if the selection/caret is at the start of the specified block element
- function isAtStart(rng, par) {
- var doc = par.ownerDocument, rng2 = doc.createRange(), elm;
-
- rng2.setStartBefore(par);
- rng2.setEnd(rng.endContainer, rng.endOffset);
-
- elm = doc.createElement('body');
- elm.appendChild(rng2.cloneContents());
-
- // Check for text characters of other elements that should be treated as content
- return elm.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi, '-').replace(/<[^>]+>/g, '').length == 0;
- };
-
- function getSpanVal(td, name) {
- return parseInt(td.getAttribute(name) || 1);
- }
-
- /**
- * Table Grid class.
- */
- function TableGrid(table, dom, selection) {
- var grid, startPos, endPos, selectedCell;
-
- buildGrid();
- selectedCell = dom.getParent(selection.getStart(), 'th,td');
- if (selectedCell) {
- startPos = getPos(selectedCell);
- endPos = findEndPos();
- selectedCell = getCell(startPos.x, startPos.y);
- }
-
- function cloneNode(node, children) {
- node = node.cloneNode(children);
- node.removeAttribute('id');
-
- return node;
- }
-
- function buildGrid() {
- var startY = 0;
-
- grid = [];
-
- each(['thead', 'tbody', 'tfoot'], function(part) {
- var rows = dom.select('> ' + part + ' tr', table);
-
- each(rows, function(tr, y) {
- y += startY;
-
- each(dom.select('> td, > th', tr), function(td, x) {
- var x2, y2, rowspan, colspan;
-
- // Skip over existing cells produced by rowspan
- if (grid[y]) {
- while (grid[y][x])
- x++;
- }
-
- // Get col/rowspan from cell
- rowspan = getSpanVal(td, 'rowspan');
- colspan = getSpanVal(td, 'colspan');
-
- // Fill out rowspan/colspan right and down
- for (y2 = y; y2 < y + rowspan; y2++) {
- if (!grid[y2])
- grid[y2] = [];
-
- for (x2 = x; x2 < x + colspan; x2++) {
- grid[y2][x2] = {
- part : part,
- real : y2 == y && x2 == x,
- elm : td,
- rowspan : rowspan,
- colspan : colspan
- };
- }
- }
- });
- });
-
- startY += rows.length;
- });
- };
-
- function getCell(x, y) {
- var row;
-
- row = grid[y];
- if (row)
- return row[x];
- };
-
- function setSpanVal(td, name, val) {
- if (td) {
- val = parseInt(val);
-
- if (val === 1)
- td.removeAttribute(name, 1);
- else
- td.setAttribute(name, val, 1);
- }
- }
-
- function isCellSelected(cell) {
- return cell && (dom.hasClass(cell.elm, 'mceSelected') || cell == selectedCell);
- };
-
- function getSelectedRows() {
- var rows = [];
-
- each(table.rows, function(row) {
- each(row.cells, function(cell) {
- if (dom.hasClass(cell, 'mceSelected') || cell == selectedCell.elm) {
- rows.push(row);
- return false;
- }
- });
- });
-
- return rows;
- };
-
- function deleteTable() {
- var rng = dom.createRng();
-
- rng.setStartAfter(table);
- rng.setEndAfter(table);
-
- selection.setRng(rng);
-
- dom.remove(table);
- };
-
- function cloneCell(cell) {
- var formatNode;
-
- // Clone formats
- tinymce.walk(cell, function(node) {
- var curNode;
-
- if (node.nodeType == 3) {
- each(dom.getParents(node.parentNode, null, cell).reverse(), function(node) {
- node = cloneNode(node, false);
-
- if (!formatNode)
- formatNode = curNode = node;
- else if (curNode)
- curNode.appendChild(node);
-
- curNode = node;
- });
-
- // Add something to the inner node
- if (curNode)
- curNode.innerHTML = tinymce.isIE ? '&nbsp;' : '<br data-mce-bogus="1" />';
-
- return false;
- }
- }, 'childNodes');
-
- cell = cloneNode(cell, false);
- setSpanVal(cell, 'rowSpan', 1);
- setSpanVal(cell, 'colSpan', 1);
-
- if (formatNode) {
- cell.appendChild(formatNode);
- } else {
- if (!tinymce.isIE)
- cell.innerHTML = '<br data-mce-bogus="1" />';
- }
-
- return cell;
- };
-
- function cleanup() {
- var rng = dom.createRng();
-
- // Empty rows
- each(dom.select('tr', table), function(tr) {
- if (tr.cells.length == 0)
- dom.remove(tr);
- });
-
- // Empty table
- if (dom.select('tr', table).length == 0) {
- rng.setStartAfter(table);
- rng.setEndAfter(table);
- selection.setRng(rng);
- dom.remove(table);
- return;
- }
-
- // Empty header/body/footer
- each(dom.select('thead,tbody,tfoot', table), function(part) {
- if (part.rows.length == 0)
- dom.remove(part);
- });
-
- // Restore selection to start position if it still exists
- buildGrid();
-
- // Restore the selection to the closest table position
- row = grid[Math.min(grid.length - 1, startPos.y)];
- if (row) {
- selection.select(row[Math.min(row.length - 1, startPos.x)].elm, true);
- selection.collapse(true);
- }
- };
-
- function fillLeftDown(x, y, rows, cols) {
- var tr, x2, r, c, cell;
-
- tr = grid[y][x].elm.parentNode;
- for (r = 1; r <= rows; r++) {
- tr = dom.getNext(tr, 'tr');
-
- if (tr) {
- // Loop left to find real cell
- for (x2 = x; x2 >= 0; x2--) {
- cell = grid[y + r][x2].elm;
-
- if (cell.parentNode == tr) {
- // Append clones after
- for (c = 1; c <= cols; c++)
- dom.insertAfter(cloneCell(cell), cell);
-
- break;
- }
- }
-
- if (x2 == -1) {
- // Insert nodes before first cell
- for (c = 1; c <= cols; c++)
- tr.insertBefore(cloneCell(tr.cells[0]), tr.cells[0]);
- }
- }
- }
- };
-
- function split() {
- each(grid, function(row, y) {
- each(row, function(cell, x) {
- var colSpan, rowSpan, newCell, i;
-
- if (isCellSelected(cell)) {
- cell = cell.elm;
- colSpan = getSpanVal(cell, 'colspan');
- rowSpan = getSpanVal(cell, 'rowspan');
-
- if (colSpan > 1 || rowSpan > 1) {
- setSpanVal(cell, 'rowSpan', 1);
- setSpanVal(cell, 'colSpan', 1);
-
- // Insert cells right
- for (i = 0; i < colSpan - 1; i++)
- dom.insertAfter(cloneCell(cell), cell);
-
- fillLeftDown(x, y, rowSpan - 1, colSpan);
- }
- }
- });
- });
- };
-
- function merge(cell, cols, rows) {
- var startX, startY, endX, endY, x, y, startCell, endCell, cell, children, count;
-
- // Use specified cell and cols/rows
- if (cell) {
- pos = getPos(cell);
- startX = pos.x;
- startY = pos.y;
- endX = startX + (cols - 1);
- endY = startY + (rows - 1);
- } else {
- // Use selection
- startX = startPos.x;
- startY = startPos.y;
- endX = endPos.x;
- endY = endPos.y;
- }
-
- // Find start/end cells
- startCell = getCell(startX, startY);
- endCell = getCell(endX, endY);
-
- // Check if the cells exists and if they are of the same part for example tbody = tbody
- if (startCell && endCell && startCell.part == endCell.part) {
- // Split and rebuild grid
- split();
- buildGrid();
-
- // Set row/col span to start cell
- startCell = getCell(startX, startY).elm;
- setSpanVal(startCell, 'colSpan', (endX - startX) + 1);
- setSpanVal(startCell, 'rowSpan', (endY - startY) + 1);
-
- // Remove other cells and add it's contents to the start cell
- for (y = startY; y <= endY; y++) {
- for (x = startX; x <= endX; x++) {
- if (!grid[y] || !grid[y][x])
- continue;
-
- cell = grid[y][x].elm;
-
- if (cell != startCell) {
- // Move children to startCell
- children = tinymce.grep(cell.childNodes);
- each(children, function(node) {
- startCell.appendChild(node);
- });
-
- // Remove bogus nodes if there is children in the target cell
- if (children.length) {
- children = tinymce.grep(startCell.childNodes);
- count = 0;
- each(children, function(node) {
- if (node.nodeName == 'BR' && dom.getAttrib(node, 'data-mce-bogus') && count++ < children.length - 1)
- startCell.removeChild(node);
- });
- }
-
- // Remove cell
- dom.remove(cell);
- }
- }
- }
-
- // Remove empty rows etc and restore caret location
- cleanup();
- }
- };
-
- function insertRow(before) {
- var posY, cell, lastCell, x, rowElm, newRow, newCell, otherCell, rowSpan;
-
- // Find first/last row
- each(grid, function(row, y) {
- each(row, function(cell, x) {
- if (isCellSelected(cell)) {
- cell = cell.elm;
- rowElm = cell.parentNode;
- newRow = cloneNode(rowElm, false);
- posY = y;
-
- if (before)
- return false;
- }
- });
-
- if (before)
- return !posY;
- });
-
- for (x = 0; x < grid[0].length; x++) {
- // Cell not found could be because of an invalid table structure
- if (!grid[posY][x])
- continue;
-
- cell = grid[posY][x].elm;
-
- if (cell != lastCell) {
- if (!before) {
- rowSpan = getSpanVal(cell, 'rowspan');
- if (rowSpan > 1) {
- setSpanVal(cell, 'rowSpan', rowSpan + 1);
- continue;
- }
- } else {
- // Check if cell above can be expanded
- if (posY > 0 && grid[posY - 1][x]) {
- otherCell = grid[posY - 1][x].elm;
- rowSpan = getSpanVal(otherCell, 'rowSpan');
- if (rowSpan > 1) {
- setSpanVal(otherCell, 'rowSpan', rowSpan + 1);
- continue;
- }
- }
- }
-
- // Insert new cell into new row
- newCell = cloneCell(cell);
- setSpanVal(newCell, 'colSpan', cell.colSpan);
-
- newRow.appendChild(newCell);
-
- lastCell = cell;
- }
- }
-
- if (newRow.hasChildNodes()) {
- if (!before)
- dom.insertAfter(newRow, rowElm);
- else
- rowElm.parentNode.insertBefore(newRow, rowElm);
- }
- };
-
- function insertCol(before) {
- var posX, lastCell;
-
- // Find first/last column
- each(grid, function(row, y) {
- each(row, function(cell, x) {
- if (isCellSelected(cell)) {
- posX = x;
-
- if (before)
- return false;
- }
- });
-
- if (before)
- return !posX;
- });
-
- each(grid, function(row, y) {
- var cell, rowSpan, colSpan;
-
- if (!row[posX])
- return;
-
- cell = row[posX].elm;
- if (cell != lastCell) {
- colSpan = getSpanVal(cell, 'colspan');
- rowSpan = getSpanVal(cell, 'rowspan');
-
- if (colSpan == 1) {
- if (!before) {
- dom.insertAfter(cloneCell(cell), cell);
- fillLeftDown(posX, y, rowSpan - 1, colSpan);
- } else {
- cell.parentNode.insertBefore(cloneCell(cell), cell);
- fillLeftDown(posX, y, rowSpan - 1, colSpan);
- }
- } else
- setSpanVal(cell, 'colSpan', cell.colSpan + 1);
-
- lastCell = cell;
- }
- });
- };
-
- function deleteCols() {
- var cols = [];
-
- // Get selected column indexes
- each(grid, function(row, y) {
- each(row, function(cell, x) {
- if (isCellSelected(cell) && tinymce.inArray(cols, x) === -1) {
- each(grid, function(row) {
- var cell = row[x].elm, colSpan;
-
- colSpan = getSpanVal(cell, 'colSpan');
-
- if (colSpan > 1)
- setSpanVal(cell, 'colSpan', colSpan - 1);
- else
- dom.remove(cell);
- });
-
- cols.push(x);
- }
- });
- });
-
- cleanup();
- };
-
- function deleteRows() {
- var rows;
-
- function deleteRow(tr) {
- var nextTr, pos, lastCell;
-
- nextTr = dom.getNext(tr, 'tr');
-
- // Move down row spanned cells
- each(tr.cells, function(cell) {
- var rowSpan = getSpanVal(cell, 'rowSpan');
-
- if (rowSpan > 1) {
- setSpanVal(cell, 'rowSpan', rowSpan - 1);
- pos = getPos(cell);
- fillLeftDown(pos.x, pos.y, 1, 1);
- }
- });
-
- // Delete cells
- pos = getPos(tr.cells[0]);
- each(grid[pos.y], function(cell) {
- var rowSpan;
-
- cell = cell.elm;
-
- if (cell != lastCell) {
- rowSpan = getSpanVal(cell, 'rowSpan');
-
- if (rowSpan <= 1)
- dom.remove(cell);
- else
- setSpanVal(cell, 'rowSpan', rowSpan - 1);
-
- lastCell = cell;
- }
- });
- };
-
- // Get selected rows and move selection out of scope
- rows = getSelectedRows();
-
- // Delete all selected rows
- each(rows.reverse(), function(tr) {
- deleteRow(tr);
- });
-
- cleanup();
- };
-
- function cutRows() {
- var rows = getSelectedRows();
-
- dom.remove(rows);
- cleanup();
-
- return rows;
- };
-
- function copyRows() {
- var rows = getSelectedRows();
-
- each(rows, function(row, i) {
- rows[i] = cloneNode(row, true);
- });
-
- return rows;
- };
-
- function pasteRows(rows, before) {
- var selectedRows = getSelectedRows(),
- targetRow = selectedRows[before ? 0 : selectedRows.length - 1],
- targetCellCount = targetRow.cells.length;
-
- // Calc target cell count
- each(grid, function(row) {
- var match;
-
- targetCellCount = 0;
- each(row, function(cell, x) {
- if (cell.real)
- targetCellCount += cell.colspan;
-
- if (cell.elm.parentNode == targetRow)
- match = 1;
- });
-
- if (match)
- return false;
- });
-
- if (!before)
- rows.reverse();
-
- each(rows, function(row) {
- var cellCount = row.cells.length, cell;
-
- // Remove col/rowspans
- for (i = 0; i < cellCount; i++) {
- cell = row.cells[i];
- setSpanVal(cell, 'colSpan', 1);
- setSpanVal(cell, 'rowSpan', 1);
- }
-
- // Needs more cells
- for (i = cellCount; i < targetCellCount; i++)
- row.appendChild(cloneCell(row.cells[cellCount - 1]));
-
- // Needs less cells
- for (i = targetCellCount; i < cellCount; i++)
- dom.remove(row.cells[i]);
-
- // Add before/after
- if (before)
- targetRow.parentNode.insertBefore(row, targetRow);
- else
- dom.insertAfter(row, targetRow);
- });
- };
-
- function getPos(target) {
- var pos;
-
- each(grid, function(row, y) {
- each(row, function(cell, x) {
- if (cell.elm == target) {
- pos = {x : x, y : y};
- return false;
- }
- });
-
- return !pos;
- });
-
- return pos;
- };
-
- function setStartCell(cell) {
- startPos = getPos(cell);
- };
-
- function findEndPos() {
- var pos, maxX, maxY;
-
- maxX = maxY = 0;
-
- each(grid, function(row, y) {
- each(row, function(cell, x) {
- var colSpan, rowSpan;
-
- if (isCellSelected(cell)) {
- cell = grid[y][x];
-
- if (x > maxX)
- maxX = x;
-
- if (y > maxY)
- maxY = y;
-
- if (cell.real) {
- colSpan = cell.colspan - 1;
- rowSpan = cell.rowspan - 1;
-
- if (colSpan) {
- if (x + colSpan > maxX)
- maxX = x + colSpan;
- }
-
- if (rowSpan) {
- if (y + rowSpan > maxY)
- maxY = y + rowSpan;
- }
- }
- }
- });
- });
-
- return {x : maxX, y : maxY};
- };
-
- function setEndCell(cell) {
- var startX, startY, endX, endY, maxX, maxY, colSpan, rowSpan;
-
- endPos = getPos(cell);
-
- if (startPos && endPos) {
- // Get start/end positions
- startX = Math.min(startPos.x, endPos.x);
- startY = Math.min(startPos.y, endPos.y);
- endX = Math.max(startPos.x, endPos.x);
- endY = Math.max(startPos.y, endPos.y);
-
- // Expand end positon to include spans
- maxX = endX;
- maxY = endY;
-
- // Expand startX
- for (y = startY; y <= maxY; y++) {
- cell = grid[y][startX];
-
- if (!cell.real) {
- if (startX - (cell.colspan - 1) < startX)
- startX -= cell.colspan - 1;
- }
- }
-
- // Expand startY
- for (x = startX; x <= maxX; x++) {
- cell = grid[startY][x];
-
- if (!cell.real) {
- if (startY - (cell.rowspan - 1) < startY)
- startY -= cell.rowspan - 1;
- }
- }
-
- // Find max X, Y
- for (y = startY; y <= endY; y++) {
- for (x = startX; x <= endX; x++) {
- cell = grid[y][x];
-
- if (cell.real) {
- colSpan = cell.colspan - 1;
- rowSpan = cell.rowspan - 1;
-
- if (colSpan) {
- if (x + colSpan > maxX)
- maxX = x + colSpan;
- }
-
- if (rowSpan) {
- if (y + rowSpan > maxY)
- maxY = y + rowSpan;
- }
- }
- }
- }
-
- // Remove current selection
- dom.removeClass(dom.select('td.mceSelected,th.mceSelected'), 'mceSelected');
-
- // Add new selection
- for (y = startY; y <= maxY; y++) {
- for (x = startX; x <= maxX; x++) {
- if (grid[y][x])
- dom.addClass(grid[y][x].elm, 'mceSelected');
- }
- }
- }
- };
-
- // Expose to public
- tinymce.extend(this, {
- deleteTable : deleteTable,
- split : split,
- merge : merge,
- insertRow : insertRow,
- insertCol : insertCol,
- deleteCols : deleteCols,
- deleteRows : deleteRows,
- cutRows : cutRows,
- copyRows : copyRows,
- pasteRows : pasteRows,
- getPos : getPos,
- setStartCell : setStartCell,
- setEndCell : setEndCell
- });
- };
-
- tinymce.create('tinymce.plugins.TablePlugin', {
- init : function(ed, url) {
- var winMan, clipboardRows, hasCellSelection = true; // Might be selected cells on reload
-
- function createTableGrid(node) {
- var selection = ed.selection, tblElm = ed.dom.getParent(node || selection.getNode(), 'table');
-
- if (tblElm)
- return new TableGrid(tblElm, ed.dom, selection);
- };
-
- function cleanup() {
- // Restore selection possibilities
- ed.getBody().style.webkitUserSelect = '';
-
- if (hasCellSelection) {
- ed.dom.removeClass(ed.dom.select('td.mceSelected,th.mceSelected'), 'mceSelected');
- hasCellSelection = false;
- }
- };
-
- // Register buttons
- each([
- ['table', 'table.desc', 'mceInsertTable', true],
- ['delete_table', 'table.del', 'mceTableDelete'],
- ['delete_col', 'table.delete_col_desc', 'mceTableDeleteCol'],
- ['delete_row', 'table.delete_row_desc', 'mceTableDeleteRow'],
- ['col_after', 'table.col_after_desc', 'mceTableInsertColAfter'],
- ['col_before', 'table.col_before_desc', 'mceTableInsertColBefore'],
- ['row_after', 'table.row_after_desc', 'mceTableInsertRowAfter'],
- ['row_before', 'table.row_before_desc', 'mceTableInsertRowBefore'],
- ['row_props', 'table.row_desc', 'mceTableRowProps', true],
- ['cell_props', 'table.cell_desc', 'mceTableCellProps', true],
- ['split_cells', 'table.split_cells_desc', 'mceTableSplitCells', true],
- ['merge_cells', 'table.merge_cells_desc', 'mceTableMergeCells', true]
- ], function(c) {
- ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]});
- });
-
- // Select whole table is a table border is clicked
- if (!tinymce.isIE) {
- ed.onClick.add(function(ed, e) {
- e = e.target;
-
- if (e.nodeName === 'TABLE') {
- ed.selection.select(e);
- ed.nodeChanged();
- }
- });
- }
-
- ed.onPreProcess.add(function(ed, args) {
- var nodes, i, node, dom = ed.dom, value;
-
- nodes = dom.select('table', args.node);
- i = nodes.length;
- while (i--) {
- node = nodes[i];
- dom.setAttrib(node, 'data-mce-style', '');
-
- if ((value = dom.getAttrib(node, 'width'))) {
- dom.setStyle(node, 'width', value);
- dom.setAttrib(node, 'width', '');
- }
-
- if ((value = dom.getAttrib(node, 'height'))) {
- dom.setStyle(node, 'height', value);
- dom.setAttrib(node, 'height', '');
- }
- }
- });
-
- // Handle node change updates
- ed.onNodeChange.add(function(ed, cm, n) {
- var p;
-
- n = ed.selection.getStart();
- p = ed.dom.getParent(n, 'td,th,caption');
- cm.setActive('table', n.nodeName === 'TABLE' || !!p);
-
- // Disable table tools if we are in caption
- if (p && p.nodeName === 'CAPTION')
- p = 0;
-
- cm.setDisabled('delete_table', !p);
- cm.setDisabled('delete_col', !p);
- cm.setDisabled('delete_table', !p);
- cm.setDisabled('delete_row', !p);
- cm.setDisabled('col_after', !p);
- cm.setDisabled('col_before', !p);
- cm.setDisabled('row_after', !p);
- cm.setDisabled('row_before', !p);
- cm.setDisabled('row_props', !p);
- cm.setDisabled('cell_props', !p);
- cm.setDisabled('split_cells', !p);
- cm.setDisabled('merge_cells', !p);
- });
-
- ed.onInit.add(function(ed) {
- var startTable, startCell, dom = ed.dom, tableGrid;
-
- winMan = ed.windowManager;
-
- // Add cell selection logic
- ed.onMouseDown.add(function(ed, e) {
- if (e.button != 2) {
- cleanup();
-
- startCell = dom.getParent(e.target, 'td,th');
- startTable = dom.getParent(startCell, 'table');
- }
- });
-
- dom.bind(ed.getDoc(), 'mouseover', function(e) {
- var sel, table, target = e.target;
-
- if (startCell && (tableGrid || target != startCell) && (target.nodeName == 'TD' || target.nodeName == 'TH')) {
- table = dom.getParent(target, 'table');
- if (table == startTable) {
- if (!tableGrid) {
- tableGrid = createTableGrid(table);
- tableGrid.setStartCell(startCell);
-
- ed.getBody().style.webkitUserSelect = 'none';
- }
-
- tableGrid.setEndCell(target);
- hasCellSelection = true;
- }
-
- // Remove current selection
- sel = ed.selection.getSel();
-
- try {
- if (sel.removeAllRanges)
- sel.removeAllRanges();
- else
- sel.empty();
- } catch (ex) {
- // IE9 might throw errors here
- }
-
- e.preventDefault();
- }
- });
-
- ed.onMouseUp.add(function(ed, e) {
- var rng, sel = ed.selection, selectedCells, nativeSel = sel.getSel(), walker, node, lastNode, endNode;
-
- // Move selection to startCell
- if (startCell) {
- if (tableGrid)
- ed.getBody().style.webkitUserSelect = '';
-
- function setPoint(node, start) {
- var walker = new tinymce.dom.TreeWalker(node, node);
-
- do {
- // Text node
- if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length != 0) {
- if (start)
- rng.setStart(node, 0);
- else
- rng.setEnd(node, node.nodeValue.length);
-
- return;
- }
-
- // BR element
- if (node.nodeName == 'BR') {
- if (start)
- rng.setStartBefore(node);
- else
- rng.setEndBefore(node);
-
- return;
- }
- } while (node = (start ? walker.next() : walker.prev()));
- }
-
- // Try to expand text selection as much as we can only Gecko supports cell selection
- selectedCells = dom.select('td.mceSelected,th.mceSelected');
- if (selectedCells.length > 0) {
- rng = dom.createRng();
- node = selectedCells[0];
- endNode = selectedCells[selectedCells.length - 1];
- rng.setStartBefore(node);
- rng.setEndAfter(node);
-
- setPoint(node, 1);
- walker = new tinymce.dom.TreeWalker(node, dom.getParent(selectedCells[0], 'table'));
-
- do {
- if (node.nodeName == 'TD' || node.nodeName == 'TH') {
- if (!dom.hasClass(node, 'mceSelected'))
- break;
-
- lastNode = node;
- }
- } while (node = walker.next());
-
- setPoint(lastNode);
-
- sel.setRng(rng);
- }
-
- ed.nodeChanged();
- startCell = tableGrid = startTable = null;
- }
- });
-
- ed.onKeyUp.add(function(ed, e) {
- cleanup();
- });
-
- ed.onKeyDown.add(function (ed, e) {
- fixTableCellSelection(ed);
- });
-
- ed.onMouseDown.add(function (ed, e) {
- if (e.button != 2) {
- fixTableCellSelection(ed);
- }
- });
- function tableCellSelected(ed, rng, n, currentCell) {
- // The decision of when a table cell is selected is somewhat involved. The fact that this code is
- // required is actually a pointer to the root cause of this bug. A cell is selected when the start
- // and end offsets are 0, the start container is a text, and the selection node is either a TR (most cases)
- // or the parent of the table (in the case of the selection containing the last cell of a table).
- var TEXT_NODE = 3, table = ed.dom.getParent(rng.startContainer, 'TABLE'),
- tableParent, allOfCellSelected, tableCellSelection;
- if (table)
- tableParent = table.parentNode;
- allOfCellSelected =rng.startContainer.nodeType == TEXT_NODE &&
- rng.startOffset == 0 &&
- rng.endOffset == 0 &&
- currentCell &&
- (n.nodeName=="TR" || n==tableParent);
- tableCellSelection = (n.nodeName=="TD"||n.nodeName=="TH")&& !currentCell;
- return allOfCellSelected || tableCellSelection;
- // return false;
- }
-
- // this nasty hack is here to work around some WebKit selection bugs.
- function fixTableCellSelection(ed) {
- if (!tinymce.isWebKit)
- return;
-
- var rng = ed.selection.getRng();
- var n = ed.selection.getNode();
- var currentCell = ed.dom.getParent(rng.startContainer, 'TD,TH');
-
- if (!tableCellSelected(ed, rng, n, currentCell))
- return;
- if (!currentCell) {
- currentCell=n;
- }
-
- // Get the very last node inside the table cell
- var end = currentCell.lastChild;
- while (end.lastChild)
- end = end.lastChild;
-
- // Select the entire table cell. Nothing outside of the table cell should be selected.
- rng.setEnd(end, end.nodeValue.length);
- ed.selection.setRng(rng);
- }
- ed.plugins.table.fixTableCellSelection=fixTableCellSelection;
-
- // Add context menu
- if (ed && ed.plugins.contextmenu) {
- ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) {
- var sm, se = ed.selection, el = se.getNode() || ed.getBody();
-
- if (ed.dom.getParent(e, 'td') || ed.dom.getParent(e, 'th') || ed.dom.select('td.mceSelected,th.mceSelected').length) {
- m.removeAll();
-
- if (el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) {
- m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true});
- m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'});
- m.addSeparator();
- }
-
- if (el.nodeName == 'IMG' && el.className.indexOf('mceItem') == -1) {
- m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true});
- m.addSeparator();
- }
-
- m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', value : {action : 'insert'}});
- m.add({title : 'table.props_desc', icon : 'table_props', cmd : 'mceInsertTable'});
- m.add({title : 'table.del', icon : 'delete_table', cmd : 'mceTableDelete'});
- m.addSeparator();
-
- // Cell menu
- sm = m.addMenu({title : 'table.cell'});
- sm.add({title : 'table.cell_desc', icon : 'cell_props', cmd : 'mceTableCellProps'});
- sm.add({title : 'table.split_cells_desc', icon : 'split_cells', cmd : 'mceTableSplitCells'});
- sm.add({title : 'table.merge_cells_desc', icon : 'merge_cells', cmd : 'mceTableMergeCells'});
-
- // Row menu
- sm = m.addMenu({title : 'table.row'});
- sm.add({title : 'table.row_desc', icon : 'row_props', cmd : 'mceTableRowProps'});
- sm.add({title : 'table.row_before_desc', icon : 'row_before', cmd : 'mceTableInsertRowBefore'});
- sm.add({title : 'table.row_after_desc', icon : 'row_after', cmd : 'mceTableInsertRowAfter'});
- sm.add({title : 'table.delete_row_desc', icon : 'delete_row', cmd : 'mceTableDeleteRow'});
- sm.addSeparator();
- sm.add({title : 'table.cut_row_desc', icon : 'cut', cmd : 'mceTableCutRow'});
- sm.add({title : 'table.copy_row_desc', icon : 'copy', cmd : 'mceTableCopyRow'});
- sm.add({title : 'table.paste_row_before_desc', icon : 'paste', cmd : 'mceTablePasteRowBefore'}).setDisabled(!clipboardRows);
- sm.add({title : 'table.paste_row_after_desc', icon : 'paste', cmd : 'mceTablePasteRowAfter'}).setDisabled(!clipboardRows);
-
- // Column menu
- sm = m.addMenu({title : 'table.col'});
- sm.add({title : 'table.col_before_desc', icon : 'col_before', cmd : 'mceTableInsertColBefore'});
- sm.add({title : 'table.col_after_desc', icon : 'col_after', cmd : 'mceTableInsertColAfter'});
- sm.add({title : 'table.delete_col_desc', icon : 'delete_col', cmd : 'mceTableDeleteCol'});
- } else
- m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable'});
- });
- }
-
- // Fix to allow navigating up and down in a table in WebKit browsers.
- if (tinymce.isWebKit) {
- function moveSelection(ed, e) {
- var VK = tinymce.VK;
- var key = e.keyCode;
-
- function handle(upBool, sourceNode, event) {
- var siblingDirection = upBool ? 'previousSibling' : 'nextSibling';
- var currentRow = ed.dom.getParent(sourceNode, 'tr');
- var siblingRow = currentRow[siblingDirection];
-
- if (siblingRow) {
- moveCursorToRow(ed, sourceNode, siblingRow, upBool);
- tinymce.dom.Event.cancel(event);
- return true;
- } else {
- var tableNode = ed.dom.getParent(currentRow, 'table');
- var middleNode = currentRow.parentNode;
- var parentNodeName = middleNode.nodeName.toLowerCase();
- if (parentNodeName === 'tbody' || parentNodeName === (upBool ? 'tfoot' : 'thead')) {
- var targetParent = getTargetParent(upBool, tableNode, middleNode, 'tbody');
- if (targetParent !== null) {
- return moveToRowInTarget(upBool, targetParent, sourceNode, event);
- }
- }
- return escapeTable(upBool, currentRow, siblingDirection, tableNode, event);
- }
- }
-
- function getTargetParent(upBool, topNode, secondNode, nodeName) {
- var tbodies = ed.dom.select('>' + nodeName, topNode);
- var position = tbodies.indexOf(secondNode);
- if (upBool && position === 0 || !upBool && position === tbodies.length - 1) {
- return getFirstHeadOrFoot(upBool, topNode);
- } else if (position === -1) {
- var topOrBottom = secondNode.tagName.toLowerCase() === 'thead' ? 0 : tbodies.length - 1;
- return tbodies[topOrBottom];
- } else {
- return tbodies[position + (upBool ? -1 : 1)];
- }
- }
-
- function getFirstHeadOrFoot(upBool, parent) {
- var tagName = upBool ? 'thead' : 'tfoot';
- var headOrFoot = ed.dom.select('>' + tagName, parent);
- return headOrFoot.length !== 0 ? headOrFoot[0] : null;
- }
-
- function moveToRowInTarget(upBool, targetParent, sourceNode, event) {
- var targetRow = getChildForDirection(targetParent, upBool);
- targetRow && moveCursorToRow(ed, sourceNode, targetRow, upBool);
- tinymce.dom.Event.cancel(event);
- return true;
- }
-
- function escapeTable(upBool, currentRow, siblingDirection, table, event) {
- var tableSibling = table[siblingDirection];
- if (tableSibling) {
- moveCursorToStartOfElement(tableSibling);
- return true;
- } else {
- var parentCell = ed.dom.getParent(table, 'td,th');
- if (parentCell) {
- return handle(upBool, parentCell, event);
- } else {
- var backUpSibling = getChildForDirection(currentRow, !upBool);
- moveCursorToStartOfElement(backUpSibling);
- return tinymce.dom.Event.cancel(event);
- }
- }
- }
-
- function getChildForDirection(parent, up) {
- var child = parent && parent[up ? 'lastChild' : 'firstChild'];
- // BR is not a valid table child to return in this case we return the table cell
- return child && child.nodeName === 'BR' ? ed.dom.getParent(child, 'td,th') : child;
- }
-
- function moveCursorToStartOfElement(n) {
- ed.selection.setCursorLocation(n, 0);
- }
-
- function isVerticalMovement() {
- return key == VK.UP || key == VK.DOWN;
- }
-
- function isInTable(ed) {
- var node = ed.selection.getNode();
- var currentRow = ed.dom.getParent(node, 'tr');
- return currentRow !== null;
- }
-
- function columnIndex(column) {
- var colIndex = 0;
- var c = column;
- while (c.previousSibling) {
- c = c.previousSibling;
- colIndex = colIndex + getSpanVal(c, "colspan");
- }
- return colIndex;
- }
-
- function findColumn(rowElement, columnIndex) {
- var c = 0;
- var r = 0;
- each(rowElement.children, function(cell, i) {
- c = c + getSpanVal(cell, "colspan");
- r = i;
- if (c > columnIndex)
- return false;
- });
- return r;
- }
-
- function moveCursorToRow(ed, node, row, upBool) {
- var srcColumnIndex = columnIndex(ed.dom.getParent(node, 'td,th'));
- var tgtColumnIndex = findColumn(row, srcColumnIndex);
- var tgtNode = row.childNodes[tgtColumnIndex];
- var rowCellTarget = getChildForDirection(tgtNode, upBool);
- moveCursorToStartOfElement(rowCellTarget || tgtNode);
- }
-
- function shouldFixCaret(preBrowserNode) {
- var newNode = ed.selection.getNode();
- var newParent = ed.dom.getParent(newNode, 'td,th');
- var oldParent = ed.dom.getParent(preBrowserNode, 'td,th');
- return newParent && newParent !== oldParent && checkSameParentTable(newParent, oldParent)
- }
-
- function checkSameParentTable(nodeOne, NodeTwo) {
- return ed.dom.getParent(nodeOne, 'TABLE') === ed.dom.getParent(NodeTwo, 'TABLE');
- }
-
- if (isVerticalMovement() && isInTable(ed)) {
- var preBrowserNode = ed.selection.getNode();
- setTimeout(function() {
- if (shouldFixCaret(preBrowserNode)) {
- handle(!e.shiftKey && key === VK.UP, preBrowserNode, e);
- }
- }, 0);
- }
- }
-
- ed.onKeyDown.add(moveSelection);
- }
-
- // Fixes an issue on Gecko where it's impossible to place the caret behind a table
- // This fix will force a paragraph element after the table but only when the forced_root_block setting is enabled
- if (!tinymce.isIE) {
- function fixTableCaretPos() {
- var last;
-
- // Skip empty text nodes form the end
- for (last = ed.getBody().lastChild; last && last.nodeType == 3 && !last.nodeValue.length; last = last.previousSibling) ;
-
- if (last && last.nodeName == 'TABLE')
- ed.dom.add(ed.getBody(), 'p', null, '<br mce_bogus="1" />');
- };
-
- // Fixes an bug where it's impossible to place the caret before a table in Gecko
- // this fix solves it by detecting when the caret is at the beginning of such a table
- // and then manually moves the caret infront of the table
- if (tinymce.isGecko) {
- ed.onKeyDown.add(function(ed, e) {
- var rng, table, dom = ed.dom;
-
- // On gecko it's not possible to place the caret before a table
- if (e.keyCode == 37 || e.keyCode == 38) {
- rng = ed.selection.getRng();
- table = dom.getParent(rng.startContainer, 'table');
-
- if (table && ed.getBody().firstChild == table) {
- if (isAtStart(rng, table)) {
- rng = dom.createRng();
-
- rng.setStartBefore(table);
- rng.setEndBefore(table);
-
- ed.selection.setRng(rng);
-
- e.preventDefault();
- }
- }
- }
- });
- }
-
- ed.onKeyUp.add(fixTableCaretPos);
- ed.onSetContent.add(fixTableCaretPos);
- ed.onVisualAid.add(fixTableCaretPos);
-
- ed.onPreProcess.add(function(ed, o) {
- var last = o.node.lastChild;
-
- if (last && last.childNodes.length == 1 && last.firstChild.nodeName == 'BR')
- ed.dom.remove(last);
- });
-
-
- /**
- * Fixes bug in Gecko where shift-enter in table cell does not place caret on new line
- */
- if (tinymce.isGecko) {
- ed.onKeyDown.add(function(ed, e) {
- if (e.keyCode === tinymce.VK.ENTER && e.shiftKey) {
- var node = ed.selection.getRng().startContainer;
- var tableCell = dom.getParent(node, 'td,th');
- if (tableCell) {
- var zeroSizedNbsp = ed.getDoc().createTextNode("\uFEFF");
- dom.insertAfter(zeroSizedNbsp, node);
- }
- }
- });
- }
-
-
- fixTableCaretPos();
- ed.startContent = ed.getContent({format : 'raw'});
- }
- });
-
- // Register action commands
- each({
- mceTableSplitCells : function(grid) {
- grid.split();
- },
-
- mceTableMergeCells : function(grid) {
- var rowSpan, colSpan, cell;
-
- cell = ed.dom.getParent(ed.selection.getNode(), 'th,td');
- if (cell) {
- rowSpan = cell.rowSpan;
- colSpan = cell.colSpan;
- }
-
- if (!ed.dom.select('td.mceSelected,th.mceSelected').length) {
- winMan.open({
- url : url + '/merge_cells.htm',
- width : 240 + parseInt(ed.getLang('table.merge_cells_delta_width', 0)),
- height : 110 + parseInt(ed.getLang('table.merge_cells_delta_height', 0)),
- inline : 1
- }, {
- rows : rowSpan,
- cols : colSpan,
- onaction : function(data) {
- grid.merge(cell, data.cols, data.rows);
- },
- plugin_url : url
- });
- } else
- grid.merge();
- },
-
- mceTableInsertRowBefore : function(grid) {
- grid.insertRow(true);
- },
-
- mceTableInsertRowAfter : function(grid) {
- grid.insertRow();
- },
-
- mceTableInsertColBefore : function(grid) {
- grid.insertCol(true);
- },
-
- mceTableInsertColAfter : function(grid) {
- grid.insertCol();
- },
-
- mceTableDeleteCol : function(grid) {
- grid.deleteCols();
- },
-
- mceTableDeleteRow : function(grid) {
- grid.deleteRows();
- },
-
- mceTableCutRow : function(grid) {
- clipboardRows = grid.cutRows();
- },
-
- mceTableCopyRow : function(grid) {
- clipboardRows = grid.copyRows();
- },
-
- mceTablePasteRowBefore : function(grid) {
- grid.pasteRows(clipboardRows, true);
- },
-
- mceTablePasteRowAfter : function(grid) {
- grid.pasteRows(clipboardRows);
- },
-
- mceTableDelete : function(grid) {
- grid.deleteTable();
- }
- }, function(func, name) {
- ed.addCommand(name, function() {
- var grid = createTableGrid();
-
- if (grid) {
- func(grid);
- ed.execCommand('mceRepaint');
- cleanup();
- }
- });
- });
-
- // Register dialog commands
- each({
- mceInsertTable : function(val) {
- winMan.open({
- url : url + '/table.htm',
- width : 400 + parseInt(ed.getLang('table.table_delta_width', 0)),
- height : 320 + parseInt(ed.getLang('table.table_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url,
- action : val ? val.action : 0
- });
- },
-
- mceTableRowProps : function() {
- winMan.open({
- url : url + '/row.htm',
- width : 400 + parseInt(ed.getLang('table.rowprops_delta_width', 0)),
- height : 295 + parseInt(ed.getLang('table.rowprops_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- },
-
- mceTableCellProps : function() {
- winMan.open({
- url : url + '/cell.htm',
- width : 400 + parseInt(ed.getLang('table.cellprops_delta_width', 0)),
- height : 295 + parseInt(ed.getLang('table.cellprops_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- }
- }, function(func, name) {
- ed.addCommand(name, function(ui, val) {
- func(val);
- });
- });
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('table', tinymce.plugins.TablePlugin);
-})(tinymce);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js b/library/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js
deleted file mode 100644
index 02ecf22c8..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js
+++ /dev/null
@@ -1,319 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var ed;
-
-function init() {
- ed = tinyMCEPopup.editor;
- tinyMCEPopup.resizeToInnerSize();
-
- document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
- document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
- document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor')
-
- var inst = ed;
- var tdElm = ed.dom.getParent(ed.selection.getStart(), "td,th");
- var formObj = document.forms[0];
- var st = ed.dom.parseStyle(ed.dom.getAttrib(tdElm, "style"));
-
- // Get table cell data
- var celltype = tdElm.nodeName.toLowerCase();
- var align = ed.dom.getAttrib(tdElm, 'align');
- var valign = ed.dom.getAttrib(tdElm, 'valign');
- var width = trimSize(getStyle(tdElm, 'width', 'width'));
- var height = trimSize(getStyle(tdElm, 'height', 'height'));
- var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor'));
- var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor'));
- var className = ed.dom.getAttrib(tdElm, 'class');
- var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
- var id = ed.dom.getAttrib(tdElm, 'id');
- var lang = ed.dom.getAttrib(tdElm, 'lang');
- var dir = ed.dom.getAttrib(tdElm, 'dir');
- var scope = ed.dom.getAttrib(tdElm, 'scope');
-
- // Setup form
- addClassesToList('class', 'table_cell_styles');
- TinyMCE_EditableSelects.init();
-
- if (!ed.dom.hasClass(tdElm, 'mceSelected')) {
- formObj.bordercolor.value = bordercolor;
- formObj.bgcolor.value = bgcolor;
- formObj.backgroundimage.value = backgroundimage;
- formObj.width.value = width;
- formObj.height.value = height;
- formObj.id.value = id;
- formObj.lang.value = lang;
- formObj.style.value = ed.dom.serializeStyle(st);
- selectByValue(formObj, 'align', align);
- selectByValue(formObj, 'valign', valign);
- selectByValue(formObj, 'class', className, true, true);
- selectByValue(formObj, 'celltype', celltype);
- selectByValue(formObj, 'dir', dir);
- selectByValue(formObj, 'scope', scope);
-
- // Resize some elements
- if (isVisible('backgroundimagebrowser'))
- document.getElementById('backgroundimage').style.width = '180px';
-
- updateColor('bordercolor_pick', 'bordercolor');
- updateColor('bgcolor_pick', 'bgcolor');
- } else
- tinyMCEPopup.dom.hide('action');
-}
-
-function updateAction() {
- var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0];
-
- if (!AutoValidator.validate(formObj)) {
- tinyMCEPopup.alert(AutoValidator.getErrorMessages(formObj).join('. ') + '.');
- return false;
- }
-
- tinyMCEPopup.restoreSelection();
- el = ed.selection.getStart();
- tdElm = ed.dom.getParent(el, "td,th");
- trElm = ed.dom.getParent(el, "tr");
- tableElm = ed.dom.getParent(el, "table");
-
- // Cell is selected
- if (ed.dom.hasClass(tdElm, 'mceSelected')) {
- // Update all selected sells
- tinymce.each(ed.dom.select('td.mceSelected,th.mceSelected'), function(td) {
- updateCell(td);
- });
-
- ed.addVisual();
- ed.nodeChanged();
- inst.execCommand('mceEndUndoLevel');
- tinyMCEPopup.close();
- return;
- }
-
- switch (getSelectValue(formObj, 'action')) {
- case "cell":
- var celltype = getSelectValue(formObj, 'celltype');
- var scope = getSelectValue(formObj, 'scope');
-
- function doUpdate(s) {
- if (s) {
- updateCell(tdElm);
-
- ed.addVisual();
- ed.nodeChanged();
- inst.execCommand('mceEndUndoLevel');
- tinyMCEPopup.close();
- }
- };
-
- if (ed.getParam("accessibility_warnings", 1)) {
- if (celltype == "th" && scope == "")
- tinyMCEPopup.confirm(ed.getLang('table_dlg.missing_scope', '', true), doUpdate);
- else
- doUpdate(1);
-
- return;
- }
-
- updateCell(tdElm);
- break;
-
- case "row":
- var cell = trElm.firstChild;
-
- if (cell.nodeName != "TD" && cell.nodeName != "TH")
- cell = nextCell(cell);
-
- do {
- cell = updateCell(cell, true);
- } while ((cell = nextCell(cell)) != null);
-
- break;
-
- case "col":
- var curr, col = 0, cell = trElm.firstChild, rows = tableElm.getElementsByTagName("tr");
-
- if (cell.nodeName != "TD" && cell.nodeName != "TH")
- cell = nextCell(cell);
-
- do {
- if (cell == tdElm)
- break;
- col += cell.getAttribute("colspan")?cell.getAttribute("colspan"):1;
- } while ((cell = nextCell(cell)) != null);
-
- for (var i=0; i<rows.length; i++) {
- cell = rows[i].firstChild;
-
- if (cell.nodeName != "TD" && cell.nodeName != "TH")
- cell = nextCell(cell);
-
- curr = 0;
- do {
- if (curr == col) {
- cell = updateCell(cell, true);
- break;
- }
- curr += cell.getAttribute("colspan")?cell.getAttribute("colspan"):1;
- } while ((cell = nextCell(cell)) != null);
- }
-
- break;
-
- case "all":
- var rows = tableElm.getElementsByTagName("tr");
-
- for (var i=0; i<rows.length; i++) {
- var cell = rows[i].firstChild;
-
- if (cell.nodeName != "TD" && cell.nodeName != "TH")
- cell = nextCell(cell);
-
- do {
- cell = updateCell(cell, true);
- } while ((cell = nextCell(cell)) != null);
- }
-
- break;
- }
-
- ed.addVisual();
- ed.nodeChanged();
- inst.execCommand('mceEndUndoLevel');
- tinyMCEPopup.close();
-}
-
-function nextCell(elm) {
- while ((elm = elm.nextSibling) != null) {
- if (elm.nodeName == "TD" || elm.nodeName == "TH")
- return elm;
- }
-
- return null;
-}
-
-function updateCell(td, skip_id) {
- var inst = ed;
- var formObj = document.forms[0];
- var curCellType = td.nodeName.toLowerCase();
- var celltype = getSelectValue(formObj, 'celltype');
- var doc = inst.getDoc();
- var dom = ed.dom;
-
- if (!skip_id)
- dom.setAttrib(td, 'id', formObj.id.value);
-
- dom.setAttrib(td, 'align', formObj.align.value);
- dom.setAttrib(td, 'vAlign', formObj.valign.value);
- dom.setAttrib(td, 'lang', formObj.lang.value);
- dom.setAttrib(td, 'dir', getSelectValue(formObj, 'dir'));
- dom.setAttrib(td, 'style', ed.dom.serializeStyle(ed.dom.parseStyle(formObj.style.value)));
- dom.setAttrib(td, 'scope', formObj.scope.value);
- dom.setAttrib(td, 'class', getSelectValue(formObj, 'class'));
-
- // Clear deprecated attributes
- ed.dom.setAttrib(td, 'width', '');
- ed.dom.setAttrib(td, 'height', '');
- ed.dom.setAttrib(td, 'bgColor', '');
- ed.dom.setAttrib(td, 'borderColor', '');
- ed.dom.setAttrib(td, 'background', '');
-
- // Set styles
- td.style.width = getCSSSize(formObj.width.value);
- td.style.height = getCSSSize(formObj.height.value);
- if (formObj.bordercolor.value != "") {
- td.style.borderColor = formObj.bordercolor.value;
- td.style.borderStyle = td.style.borderStyle == "" ? "solid" : td.style.borderStyle;
- td.style.borderWidth = td.style.borderWidth == "" ? "1px" : td.style.borderWidth;
- } else
- td.style.borderColor = '';
-
- td.style.backgroundColor = formObj.bgcolor.value;
-
- if (formObj.backgroundimage.value != "")
- td.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
- else
- td.style.backgroundImage = '';
-
- if (curCellType != celltype) {
- // changing to a different node type
- var newCell = doc.createElement(celltype);
-
- for (var c=0; c<td.childNodes.length; c++)
- newCell.appendChild(td.childNodes[c].cloneNode(1));
-
- for (var a=0; a<td.attributes.length; a++)
- ed.dom.setAttrib(newCell, td.attributes[a].name, ed.dom.getAttrib(td, td.attributes[a].name));
-
- td.parentNode.replaceChild(newCell, td);
- td = newCell;
- }
-
- dom.setAttrib(td, 'style', dom.serializeStyle(dom.parseStyle(td.style.cssText)));
-
- return td;
-}
-
-function changedBackgroundImage() {
- var formObj = document.forms[0];
- var st = ed.dom.parseStyle(formObj.style.value);
-
- st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
-
- formObj.style.value = ed.dom.serializeStyle(st);
-}
-
-function changedSize() {
- var formObj = document.forms[0];
- var st = ed.dom.parseStyle(formObj.style.value);
-
- var width = formObj.width.value;
- if (width != "")
- st['width'] = getCSSSize(width);
- else
- st['width'] = "";
-
- var height = formObj.height.value;
- if (height != "")
- st['height'] = getCSSSize(height);
- else
- st['height'] = "";
-
- formObj.style.value = ed.dom.serializeStyle(st);
-}
-
-function changedColor() {
- var formObj = document.forms[0];
- var st = ed.dom.parseStyle(formObj.style.value);
-
- st['background-color'] = formObj.bgcolor.value;
- st['border-color'] = formObj.bordercolor.value;
-
- formObj.style.value = ed.dom.serializeStyle(st);
-}
-
-function changedStyle() {
- var formObj = document.forms[0];
- var st = ed.dom.parseStyle(formObj.style.value);
-
- if (st['background-image'])
- formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
- else
- formObj.backgroundimage.value = '';
-
- if (st['width'])
- formObj.width.value = trimSize(st['width']);
-
- if (st['height'])
- formObj.height.value = trimSize(st['height']);
-
- if (st['background-color']) {
- formObj.bgcolor.value = st['background-color'];
- updateColor('bgcolor_pick','bgcolor');
- }
-
- if (st['border-color']) {
- formObj.bordercolor.value = st['border-color'];
- updateColor('bordercolor_pick','bordercolor');
- }
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js b/library/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js
deleted file mode 100644
index 7ee4bf040..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js
+++ /dev/null
@@ -1,27 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var MergeCellsDialog = {
- init : function() {
- var f = document.forms[0];
-
- f.numcols.value = tinyMCEPopup.getWindowArg('cols', 1);
- f.numrows.value = tinyMCEPopup.getWindowArg('rows', 1);
- },
-
- merge : function() {
- var func, f = document.forms[0];
-
- tinyMCEPopup.restoreSelection();
-
- func = tinyMCEPopup.getWindowArg('onaction');
-
- func({
- cols : f.numcols.value,
- rows : f.numrows.value
- });
-
- tinyMCEPopup.close();
- }
-};
-
-tinyMCEPopup.onInit.add(MergeCellsDialog.init, MergeCellsDialog);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/js/row.js b/library/tinymce/jscripts/tiny_mce/plugins/table/js/row.js
deleted file mode 100644
index a13d69592..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/table/js/row.js
+++ /dev/null
@@ -1,237 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-function init() {
- tinyMCEPopup.resizeToInnerSize();
-
- document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
- document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
-
- var inst = tinyMCEPopup.editor;
- var dom = inst.dom;
- var trElm = dom.getParent(inst.selection.getStart(), "tr");
- var formObj = document.forms[0];
- var st = dom.parseStyle(dom.getAttrib(trElm, "style"));
-
- // Get table row data
- var rowtype = trElm.parentNode.nodeName.toLowerCase();
- var align = dom.getAttrib(trElm, 'align');
- var valign = dom.getAttrib(trElm, 'valign');
- var height = trimSize(getStyle(trElm, 'height', 'height'));
- var className = dom.getAttrib(trElm, 'class');
- var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));
- var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
- var id = dom.getAttrib(trElm, 'id');
- var lang = dom.getAttrib(trElm, 'lang');
- var dir = dom.getAttrib(trElm, 'dir');
-
- selectByValue(formObj, 'rowtype', rowtype);
-
- // Any cells selected
- if (dom.select('td.mceSelected,th.mceSelected', trElm).length == 0) {
- // Setup form
- addClassesToList('class', 'table_row_styles');
- TinyMCE_EditableSelects.init();
-
- formObj.bgcolor.value = bgcolor;
- formObj.backgroundimage.value = backgroundimage;
- formObj.height.value = height;
- formObj.id.value = id;
- formObj.lang.value = lang;
- formObj.style.value = dom.serializeStyle(st);
- selectByValue(formObj, 'align', align);
- selectByValue(formObj, 'valign', valign);
- selectByValue(formObj, 'class', className, true, true);
- selectByValue(formObj, 'dir', dir);
-
- // Resize some elements
- if (isVisible('backgroundimagebrowser'))
- document.getElementById('backgroundimage').style.width = '180px';
-
- updateColor('bgcolor_pick', 'bgcolor');
- } else
- tinyMCEPopup.dom.hide('action');
-}
-
-function updateAction() {
- var inst = tinyMCEPopup.editor, dom = inst.dom, trElm, tableElm, formObj = document.forms[0];
- var action = getSelectValue(formObj, 'action');
-
- if (!AutoValidator.validate(formObj)) {
- tinyMCEPopup.alert(AutoValidator.getErrorMessages(formObj).join('. ') + '.');
- return false;
- }
-
- tinyMCEPopup.restoreSelection();
- trElm = dom.getParent(inst.selection.getStart(), "tr");
- tableElm = dom.getParent(inst.selection.getStart(), "table");
-
- // Update all selected rows
- if (dom.select('td.mceSelected,th.mceSelected', trElm).length > 0) {
- tinymce.each(tableElm.rows, function(tr) {
- var i;
-
- for (i = 0; i < tr.cells.length; i++) {
- if (dom.hasClass(tr.cells[i], 'mceSelected')) {
- updateRow(tr, true);
- return;
- }
- }
- });
-
- inst.addVisual();
- inst.nodeChanged();
- inst.execCommand('mceEndUndoLevel');
- tinyMCEPopup.close();
- return;
- }
-
- switch (action) {
- case "row":
- updateRow(trElm);
- break;
-
- case "all":
- var rows = tableElm.getElementsByTagName("tr");
-
- for (var i=0; i<rows.length; i++)
- updateRow(rows[i], true);
-
- break;
-
- case "odd":
- case "even":
- var rows = tableElm.getElementsByTagName("tr");
-
- for (var i=0; i<rows.length; i++) {
- if ((i % 2 == 0 && action == "odd") || (i % 2 != 0 && action == "even"))
- updateRow(rows[i], true, true);
- }
-
- break;
- }
-
- inst.addVisual();
- inst.nodeChanged();
- inst.execCommand('mceEndUndoLevel');
- tinyMCEPopup.close();
-}
-
-function updateRow(tr_elm, skip_id, skip_parent) {
- var inst = tinyMCEPopup.editor;
- var formObj = document.forms[0];
- var dom = inst.dom;
- var curRowType = tr_elm.parentNode.nodeName.toLowerCase();
- var rowtype = getSelectValue(formObj, 'rowtype');
- var doc = inst.getDoc();
-
- // Update row element
- if (!skip_id)
- dom.setAttrib(tr_elm, 'id', formObj.id.value);
-
- dom.setAttrib(tr_elm, 'align', getSelectValue(formObj, 'align'));
- dom.setAttrib(tr_elm, 'vAlign', getSelectValue(formObj, 'valign'));
- dom.setAttrib(tr_elm, 'lang', formObj.lang.value);
- dom.setAttrib(tr_elm, 'dir', getSelectValue(formObj, 'dir'));
- dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(formObj.style.value)));
- dom.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));
-
- // Clear deprecated attributes
- dom.setAttrib(tr_elm, 'background', '');
- dom.setAttrib(tr_elm, 'bgColor', '');
- dom.setAttrib(tr_elm, 'height', '');
-
- // Set styles
- tr_elm.style.height = getCSSSize(formObj.height.value);
- tr_elm.style.backgroundColor = formObj.bgcolor.value;
-
- if (formObj.backgroundimage.value != "")
- tr_elm.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
- else
- tr_elm.style.backgroundImage = '';
-
- // Setup new rowtype
- if (curRowType != rowtype && !skip_parent) {
- // first, clone the node we are working on
- var newRow = tr_elm.cloneNode(1);
-
- // next, find the parent of its new destination (creating it if necessary)
- var theTable = dom.getParent(tr_elm, "table");
- var dest = rowtype;
- var newParent = null;
- for (var i = 0; i < theTable.childNodes.length; i++) {
- if (theTable.childNodes[i].nodeName.toLowerCase() == dest)
- newParent = theTable.childNodes[i];
- }
-
- if (newParent == null) {
- newParent = doc.createElement(dest);
-
- if (theTable.firstChild.nodeName == 'CAPTION')
- inst.dom.insertAfter(newParent, theTable.firstChild);
- else
- theTable.insertBefore(newParent, theTable.firstChild);
- }
-
- // append the row to the new parent
- newParent.appendChild(newRow);
-
- // remove the original
- tr_elm.parentNode.removeChild(tr_elm);
-
- // set tr_elm to the new node
- tr_elm = newRow;
- }
-
- dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(tr_elm.style.cssText)));
-}
-
-function changedBackgroundImage() {
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
- var st = dom.parseStyle(formObj.style.value);
-
- st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
-
- formObj.style.value = dom.serializeStyle(st);
-}
-
-function changedStyle() {
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
- var st = dom.parseStyle(formObj.style.value);
-
- if (st['background-image'])
- formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
- else
- formObj.backgroundimage.value = '';
-
- if (st['height'])
- formObj.height.value = trimSize(st['height']);
-
- if (st['background-color']) {
- formObj.bgcolor.value = st['background-color'];
- updateColor('bgcolor_pick','bgcolor');
- }
-}
-
-function changedSize() {
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
- var st = dom.parseStyle(formObj.style.value);
-
- var height = formObj.height.value;
- if (height != "")
- st['height'] = getCSSSize(height);
- else
- st['height'] = "";
-
- formObj.style.value = dom.serializeStyle(st);
-}
-
-function changedColor() {
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
- var st = dom.parseStyle(formObj.style.value);
-
- st['background-color'] = formObj.bgcolor.value;
-
- formObj.style.value = dom.serializeStyle(st);
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/js/table.js b/library/tinymce/jscripts/tiny_mce/plugins/table/js/table.js
deleted file mode 100644
index 0aafb5fda..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/table/js/table.js
+++ /dev/null
@@ -1,489 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var action, orgTableWidth, orgTableHeight, dom = tinyMCEPopup.editor.dom;
-
-function insertTable() {
- var formObj = document.forms[0];
- var inst = tinyMCEPopup.editor, dom = inst.dom;
- var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className, caption, frame, rules;
- var html = '', capEl, elm;
- var cellLimit, rowLimit, colLimit;
-
- tinyMCEPopup.restoreSelection();
-
- if (!AutoValidator.validate(formObj)) {
- tinyMCEPopup.alert(AutoValidator.getErrorMessages(formObj).join('. ') + '.');
- return false;
- }
-
- elm = dom.getParent(inst.selection.getNode(), 'table');
-
- // Get form data
- cols = formObj.elements['cols'].value;
- rows = formObj.elements['rows'].value;
- border = formObj.elements['border'].value != "" ? formObj.elements['border'].value : 0;
- cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";
- cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";
- align = getSelectValue(formObj, "align");
- frame = getSelectValue(formObj, "tframe");
- rules = getSelectValue(formObj, "rules");
- width = formObj.elements['width'].value;
- height = formObj.elements['height'].value;
- bordercolor = formObj.elements['bordercolor'].value;
- bgcolor = formObj.elements['bgcolor'].value;
- className = getSelectValue(formObj, "class");
- id = formObj.elements['id'].value;
- summary = formObj.elements['summary'].value;
- style = formObj.elements['style'].value;
- dir = formObj.elements['dir'].value;
- lang = formObj.elements['lang'].value;
- background = formObj.elements['backgroundimage'].value;
- caption = formObj.elements['caption'].checked;
-
- cellLimit = tinyMCEPopup.getParam('table_cell_limit', false);
- rowLimit = tinyMCEPopup.getParam('table_row_limit', false);
- colLimit = tinyMCEPopup.getParam('table_col_limit', false);
-
- // Validate table size
- if (colLimit && cols > colLimit) {
- tinyMCEPopup.alert(inst.getLang('table_dlg.col_limit').replace(/\{\$cols\}/g, colLimit));
- return false;
- } else if (rowLimit && rows > rowLimit) {
- tinyMCEPopup.alert(inst.getLang('table_dlg.row_limit').replace(/\{\$rows\}/g, rowLimit));
- return false;
- } else if (cellLimit && cols * rows > cellLimit) {
- tinyMCEPopup.alert(inst.getLang('table_dlg.cell_limit').replace(/\{\$cells\}/g, cellLimit));
- return false;
- }
-
- // Update table
- if (action == "update") {
- dom.setAttrib(elm, 'cellPadding', cellpadding, true);
- dom.setAttrib(elm, 'cellSpacing', cellspacing, true);
-
- if (!isCssSize(border)) {
- dom.setAttrib(elm, 'border', border);
- } else {
- dom.setAttrib(elm, 'border', '');
- }
-
- if (border == '') {
- dom.setStyle(elm, 'border-width', '');
- dom.setStyle(elm, 'border', '');
- dom.setAttrib(elm, 'border', '');
- }
-
- dom.setAttrib(elm, 'align', align);
- dom.setAttrib(elm, 'frame', frame);
- dom.setAttrib(elm, 'rules', rules);
- dom.setAttrib(elm, 'class', className);
- dom.setAttrib(elm, 'style', style);
- dom.setAttrib(elm, 'id', id);
- dom.setAttrib(elm, 'summary', summary);
- dom.setAttrib(elm, 'dir', dir);
- dom.setAttrib(elm, 'lang', lang);
-
- capEl = inst.dom.select('caption', elm)[0];
-
- if (capEl && !caption)
- capEl.parentNode.removeChild(capEl);
-
- if (!capEl && caption) {
- capEl = elm.ownerDocument.createElement('caption');
-
- if (!tinymce.isIE)
- capEl.innerHTML = '<br data-mce-bogus="1"/>';
-
- elm.insertBefore(capEl, elm.firstChild);
- }
-
- if (width && inst.settings.inline_styles) {
- dom.setStyle(elm, 'width', width);
- dom.setAttrib(elm, 'width', '');
- } else {
- dom.setAttrib(elm, 'width', width, true);
- dom.setStyle(elm, 'width', '');
- }
-
- // Remove these since they are not valid XHTML
- dom.setAttrib(elm, 'borderColor', '');
- dom.setAttrib(elm, 'bgColor', '');
- dom.setAttrib(elm, 'background', '');
-
- if (height && inst.settings.inline_styles) {
- dom.setStyle(elm, 'height', height);
- dom.setAttrib(elm, 'height', '');
- } else {
- dom.setAttrib(elm, 'height', height, true);
- dom.setStyle(elm, 'height', '');
- }
-
- if (background != '')
- elm.style.backgroundImage = "url('" + background + "')";
- else
- elm.style.backgroundImage = '';
-
-/* if (tinyMCEPopup.getParam("inline_styles")) {
- if (width != '')
- elm.style.width = getCSSSize(width);
- }*/
-
- if (bordercolor != "") {
- elm.style.borderColor = bordercolor;
- elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle;
- elm.style.borderWidth = cssSize(border);
- } else
- elm.style.borderColor = '';
-
- elm.style.backgroundColor = bgcolor;
- elm.style.height = getCSSSize(height);
-
- inst.addVisual();
-
- // Fix for stange MSIE align bug
- //elm.outerHTML = elm.outerHTML;
-
- inst.nodeChanged();
- inst.execCommand('mceEndUndoLevel', false, {}, {skip_undo: true});
-
- // Repaint if dimensions changed
- if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)
- inst.execCommand('mceRepaint');
-
- tinyMCEPopup.close();
- return true;
- }
-
- // Create new table
- html += '<table';
-
- html += makeAttrib('id', id);
- if (!isCssSize(border)) {
- html += makeAttrib('border', border);
- }
-
- html += makeAttrib('cellpadding', cellpadding);
- html += makeAttrib('cellspacing', cellspacing);
- html += makeAttrib('data-mce-new', '1');
-
- if (width && inst.settings.inline_styles) {
- if (style)
- style += '; ';
-
- // Force px
- if (/^[0-9\.]+$/.test(width))
- width += 'px';
-
- style += 'width: ' + width;
- } else
- html += makeAttrib('width', width);
-
-/* if (height) {
- if (style)
- style += '; ';
-
- style += 'height: ' + height;
- }*/
-
- //html += makeAttrib('height', height);
- //html += makeAttrib('bordercolor', bordercolor);
- //html += makeAttrib('bgcolor', bgcolor);
- html += makeAttrib('align', align);
- html += makeAttrib('frame', frame);
- html += makeAttrib('rules', rules);
- html += makeAttrib('class', className);
- html += makeAttrib('style', style);
- html += makeAttrib('summary', summary);
- html += makeAttrib('dir', dir);
- html += makeAttrib('lang', lang);
- html += '>';
-
- if (caption) {
- if (!tinymce.isIE)
- html += '<caption><br data-mce-bogus="1"/></caption>';
- else
- html += '<caption></caption>';
- }
-
- for (var y=0; y<rows; y++) {
- html += "<tr>";
-
- for (var x=0; x<cols; x++) {
- if (!tinymce.isIE)
- html += '<td><br data-mce-bogus="1"/></td>';
- else
- html += '<td></td>';
- }
-
- html += "</tr>";
- }
-
- html += "</table>";
-
- // Move table
- if (inst.settings.fix_table_elements) {
- var patt = '';
-
- inst.focus();
- inst.selection.setContent('<br class="_mce_marker" />');
-
- tinymce.each('h1,h2,h3,h4,h5,h6,p'.split(','), function(n) {
- if (patt)
- patt += ',';
-
- patt += n + ' ._mce_marker';
- });
-
- tinymce.each(inst.dom.select(patt), function(n) {
- inst.dom.split(inst.dom.getParent(n, 'h1,h2,h3,h4,h5,h6,p'), n);
- });
-
- dom.setOuterHTML(dom.select('br._mce_marker')[0], html);
- } else
- inst.execCommand('mceInsertContent', false, html);
-
- tinymce.each(dom.select('table[data-mce-new]'), function(node) {
- var tdorth = dom.select('td,th', node);
-
- // Fixes a bug in IE where the caret cannot be placed after the table if the table is at the end of the document
- if (tinymce.isIE && node.nextSibling == null) {
- dom.insertAfter(dom.create('p'), node);
- }
-
- try {
- // IE9 might fail to do this selection
- inst.selection.setCursorLocation(tdorth[0], 0);
- } catch (ex) {
- // Ignore
- }
-
- dom.setAttrib(node, 'data-mce-new', '');
- });
-
- inst.addVisual();
- inst.execCommand('mceEndUndoLevel', false, {}, {skip_undo: true});
-
- tinyMCEPopup.close();
-}
-
-function makeAttrib(attrib, value) {
- var formObj = document.forms[0];
- var valueElm = formObj.elements[attrib];
-
- if (typeof(value) == "undefined" || value == null) {
- value = "";
-
- if (valueElm)
- value = valueElm.value;
- }
-
- if (value == "")
- return "";
-
- // XML encode it
- value = value.replace(/&/g, '&amp;');
- value = value.replace(/\"/g, '&quot;');
- value = value.replace(/</g, '&lt;');
- value = value.replace(/>/g, '&gt;');
-
- return ' ' + attrib + '="' + value + '"';
-}
-
-function init() {
- tinyMCEPopup.resizeToInnerSize();
-
- document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
- document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
- document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
- document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
-
- var cols = 2, rows = 2, border = tinyMCEPopup.getParam('table_default_border', '0'), cellpadding = tinyMCEPopup.getParam('table_default_cellpadding', ''), cellspacing = tinyMCEPopup.getParam('table_default_cellspacing', '');
- var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";
- var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "", rules = "", frame = "";
- var inst = tinyMCEPopup.editor, dom = inst.dom;
- var formObj = document.forms[0];
- var elm = dom.getParent(inst.selection.getNode(), "table");
-
- action = tinyMCEPopup.getWindowArg('action');
-
- if (!action)
- action = elm ? "update" : "insert";
-
- if (elm && action != "insert") {
- var rowsAr = elm.rows;
- var cols = 0;
- for (var i=0; i<rowsAr.length; i++)
- if (rowsAr[i].cells.length > cols)
- cols = rowsAr[i].cells.length;
-
- cols = cols;
- rows = rowsAr.length;
-
- st = dom.parseStyle(dom.getAttrib(elm, "style"));
- border = trimSize(getStyle(elm, 'border', 'borderWidth'));
- cellpadding = dom.getAttrib(elm, 'cellpadding', "");
- cellspacing = dom.getAttrib(elm, 'cellspacing', "");
- width = trimSize(getStyle(elm, 'width', 'width'));
- height = trimSize(getStyle(elm, 'height', 'height'));
- bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor'));
- bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor'));
- align = dom.getAttrib(elm, 'align', align);
- frame = dom.getAttrib(elm, 'frame');
- rules = dom.getAttrib(elm, 'rules');
- className = tinymce.trim(dom.getAttrib(elm, 'class').replace(/mceItem.+/g, ''));
- id = dom.getAttrib(elm, 'id');
- summary = dom.getAttrib(elm, 'summary');
- style = dom.serializeStyle(st);
- dir = dom.getAttrib(elm, 'dir');
- lang = dom.getAttrib(elm, 'lang');
- background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
- formObj.caption.checked = elm.getElementsByTagName('caption').length > 0;
-
- orgTableWidth = width;
- orgTableHeight = height;
-
- action = "update";
- formObj.insert.value = inst.getLang('update');
- }
-
- addClassesToList('class', "table_styles");
- TinyMCE_EditableSelects.init();
-
- // Update form
- selectByValue(formObj, 'align', align);
- selectByValue(formObj, 'tframe', frame);
- selectByValue(formObj, 'rules', rules);
- selectByValue(formObj, 'class', className, true, true);
- formObj.cols.value = cols;
- formObj.rows.value = rows;
- formObj.border.value = border;
- formObj.cellpadding.value = cellpadding;
- formObj.cellspacing.value = cellspacing;
- formObj.width.value = width;
- formObj.height.value = height;
- formObj.bordercolor.value = bordercolor;
- formObj.bgcolor.value = bgcolor;
- formObj.id.value = id;
- formObj.summary.value = summary;
- formObj.style.value = style;
- formObj.dir.value = dir;
- formObj.lang.value = lang;
- formObj.backgroundimage.value = background;
-
- updateColor('bordercolor_pick', 'bordercolor');
- updateColor('bgcolor_pick', 'bgcolor');
-
- // Resize some elements
- if (isVisible('backgroundimagebrowser'))
- document.getElementById('backgroundimage').style.width = '180px';
-
- // Disable some fields in update mode
- if (action == "update") {
- formObj.cols.disabled = true;
- formObj.rows.disabled = true;
- }
-}
-
-function changedSize() {
- var formObj = document.forms[0];
- var st = dom.parseStyle(formObj.style.value);
-
-/* var width = formObj.width.value;
- if (width != "")
- st['width'] = tinyMCEPopup.getParam("inline_styles") ? getCSSSize(width) : "";
- else
- st['width'] = "";*/
-
- var height = formObj.height.value;
- if (height != "")
- st['height'] = getCSSSize(height);
- else
- st['height'] = "";
-
- formObj.style.value = dom.serializeStyle(st);
-}
-
-function isCssSize(value) {
- return /^[0-9.]+(%|in|cm|mm|em|ex|pt|pc|px)$/.test(value);
-}
-
-function cssSize(value, def) {
- value = tinymce.trim(value || def);
-
- if (!isCssSize(value)) {
- return parseInt(value, 10) + 'px';
- }
-
- return value;
-}
-
-function changedBackgroundImage() {
- var formObj = document.forms[0];
- var st = dom.parseStyle(formObj.style.value);
-
- st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
-
- formObj.style.value = dom.serializeStyle(st);
-}
-
-function changedBorder() {
- var formObj = document.forms[0];
- var st = dom.parseStyle(formObj.style.value);
-
- // Update border width if the element has a color
- if (formObj.border.value != "" && (isCssSize(formObj.border.value) || formObj.bordercolor.value != ""))
- st['border-width'] = cssSize(formObj.border.value);
- else {
- if (!formObj.border.value) {
- st['border'] = '';
- st['border-width'] = '';
- }
- }
-
- formObj.style.value = dom.serializeStyle(st);
-}
-
-function changedColor() {
- var formObj = document.forms[0];
- var st = dom.parseStyle(formObj.style.value);
-
- st['background-color'] = formObj.bgcolor.value;
-
- if (formObj.bordercolor.value != "") {
- st['border-color'] = formObj.bordercolor.value;
-
- // Add border-width if it's missing
- if (!st['border-width'])
- st['border-width'] = cssSize(formObj.border.value, 1);
- }
-
- formObj.style.value = dom.serializeStyle(st);
-}
-
-function changedStyle() {
- var formObj = document.forms[0];
- var st = dom.parseStyle(formObj.style.value);
-
- if (st['background-image'])
- formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
- else
- formObj.backgroundimage.value = '';
-
- if (st['width'])
- formObj.width.value = trimSize(st['width']);
-
- if (st['height'])
- formObj.height.value = trimSize(st['height']);
-
- if (st['background-color']) {
- formObj.bgcolor.value = st['background-color'];
- updateColor('bgcolor_pick','bgcolor');
- }
-
- if (st['border-color']) {
- formObj.bordercolor.value = st['border-color'];
- updateColor('bordercolor_pick','bordercolor');
- }
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/table/langs/en_dlg.js
deleted file mode 100644
index 463e09ee1..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/table/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"Rules","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Frame",caption:"Table Caption","missing_scope":"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.","cell_limit":"You\'ve exceeded the maximum number of cells of {$cells}.","row_limit":"You\'ve exceeded the maximum number of rows of {$rows}.","col_limit":"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Footer",tbody:"Body",thead:"Header","row_all":"Update All Rows in Table","row_even":"Update Even Rows in Table","row_odd":"Update Odd Rows in Table","row_row":"Update Current Row","cell_all":"Update All Cells in Table","cell_row":"Update All Cells in Row","cell_cell":"Update Current Cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background Image",rtl:"Right to Left",ltr:"Left to Right",mime:"Target MIME Type",langcode:"Language Code",langdir:"Language Direction",style:"Style",id:"ID","merge_cells_title":"Merge Table Cells",bgcolor:"Background Color",bordercolor:"Border Color","align_bottom":"Bottom","align_top":"Top",valign:"Vertical Alignment","cell_type":"Cell Type","cell_title":"Table Cell Properties","row_title":"Table Row Properties","align_middle":"Center","align_right":"Right","align_left":"Left","align_default":"Default",align:"Alignment",border:"Border",cellpadding:"Cell Padding",cellspacing:"Cell Spacing",rows:"Rows",cols:"Columns",height:"Height",width:"Width",title:"Insert/Edit Table",rowtype:"Row Type","advanced_props":"Advanced Properties","general_props":"General Properties","advanced_tab":"Advanced","general_tab":"General","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm b/library/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm
deleted file mode 100644
index d231090e7..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#table_dlg.merge_cells_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/validate.js"></script>
- <script type="text/javascript" src="js/merge_cells.js"></script>
-</head>
-<body style="margin: 8px" role="application">
-<form onsubmit="MergeCellsDialog.merge();return false;" action="#">
- <fieldset>
- <legend>{#table_dlg.merge_cells_title}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="3" width="100%">
- <tr>
- <td><label for="numcols">{#table_dlg.cols}</label>:</td>
- <td align="right"><input type="text" id="numcols" name="numcols" value="" class="number min1 mceFocus" style="width: 30px" aria-required="true" /></td>
- </tr>
- <tr>
- <td><label for="numrows">{#table_dlg.rows}</label>:</td>
- <td align="right"><input type="text" id="numrows" name="numrows" value="" class="number min1" style="width: 30px" aria-required="true" /></td>
- </tr>
- </table>
- </fieldset>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/row.htm b/library/tinymce/jscripts/tiny_mce/plugins/table/row.htm
deleted file mode 100644
index 1885401f6..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/table/row.htm
+++ /dev/null
@@ -1,158 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#table_dlg.row_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/validate.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/row.js"></script>
- <link href="css/row.css" rel="stylesheet" type="text/css" />
-</head>
-<body id="tablerow" style="display: none" role="application">
- <form onsubmit="updateAction();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
- <li id="advanced_tab" aria-controls="advanced_panel"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#table_dlg.general_props}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td><label for="rowtype">{#table_dlg.rowtype}</label></td>
- <td class="col2">
- <select id="rowtype" name="rowtype" class="mceFocus">
- <option value="thead">{#table_dlg.thead}</option>
- <option value="tbody">{#table_dlg.tbody}</option>
- <option value="tfoot">{#table_dlg.tfoot}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td><label for="align">{#table_dlg.align}</label></td>
- <td class="col2">
- <select id="align" name="align">
- <option value="">{#not_set}</option>
- <option value="center">{#table_dlg.align_middle}</option>
- <option value="left">{#table_dlg.align_left}</option>
- <option value="right">{#table_dlg.align_right}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td><label for="valign">{#table_dlg.valign}</label></td>
- <td class="col2">
- <select id="valign" name="valign">
- <option value="">{#not_set}</option>
- <option value="top">{#table_dlg.align_top}</option>
- <option value="middle">{#table_dlg.align_middle}</option>
- <option value="bottom">{#table_dlg.align_bottom}</option>
- </select>
- </td>
- </tr>
-
- <tr id="styleSelectRow">
- <td><label for="class">{#class_name}</label></td>
- <td class="col2">
- <select id="class" name="class" class="mceEditableSelect">
- <option value="" selected="selected">{#not_set}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td><label for="height">{#table_dlg.height}</label></td>
- <td class="col2"><input name="height" type="text" id="height" value="" size="7" maxlength="7" onchange="changedSize();" class="size" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
-
- <div id="advanced_panel" class="panel">
- <fieldset>
- <legend>{#table_dlg.advanced_props}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="column1"><label for="id">{#table_dlg.id}</label></td>
- <td><input id="id" name="id" type="text" value="" style="width: 200px" /></td>
- </tr>
-
- <tr>
- <td><label for="style">{#table_dlg.style}</label></td>
- <td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="dir">{#table_dlg.langdir}</label></td>
- <td>
- <select id="dir" name="dir" style="width: 200px">
- <option value="">{#not_set}</option>
- <option value="ltr">{#table_dlg.ltr}</option>
- <option value="rtl">{#table_dlg.rtl}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="lang">{#table_dlg.langcode}</label></td>
- <td>
- <input id="lang" name="lang" type="text" value="" style="width: 200px" />
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>
- <td id="backgroundimagebrowsercontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="bgcolor" id="bgcolor_label">{#table_dlg.bgcolor}</label></td>
- <td>
- <span role="group" aria-labelledby="bgcolor_label">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
- <td id="bgcolor_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </span>
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <div>
- <select id="action" name="action">
- <option value="row">{#table_dlg.row_row}</option>
- <option value="odd">{#table_dlg.row_odd}</option>
- <option value="even">{#table_dlg.row_even}</option>
- <option value="all">{#table_dlg.row_all}</option>
- </select>
- </div>
-
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
- </form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/table.htm b/library/tinymce/jscripts/tiny_mce/plugins/table/table.htm
deleted file mode 100644
index b92fa741e..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/table/table.htm
+++ /dev/null
@@ -1,188 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#table_dlg.title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/validate.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/table.js"></script>
- <link href="css/table.css" rel="stylesheet" type="text/css" />
-</head>
-<body id="table" style="display: none" role="application" aria-labelledby="app_title">
- <span style="display:none;" id="app_title">{#table_dlg.title}</span>
- <form onsubmit="insertTable();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" aria-controls="general_panel" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
- <li id="advanced_tab" aria-controls="advanced_panel"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#table_dlg.general_props}</legend>
- <table role="presentation" border="0" cellpadding="4" cellspacing="0" width="100%">
- <tr>
- <td><label id="colslabel" for="cols">{#table_dlg.cols}</label></td>
- <td><input id="cols" name="cols" type="text" value="" size="3" maxlength="3" class="required number min1 mceFocus" aria-required="true" /></td>
- <td><label id="rowslabel" for="rows">{#table_dlg.rows}</label></td>
- <td><input id="rows" name="rows" type="text" value="" size="3" maxlength="3" class="required number min1" aria-required="true" /></td>
- </tr>
- <tr>
- <td><label id="cellpaddinglabel" for="cellpadding">{#table_dlg.cellpadding}</label></td>
- <td><input id="cellpadding" name="cellpadding" type="text" value="" size="3" maxlength="3" class="number" /></td>
- <td><label id="cellspacinglabel" for="cellspacing">{#table_dlg.cellspacing}</label></td>
- <td><input id="cellspacing" name="cellspacing" type="text" value="" size="3" maxlength="3" class="number" /></td>
- </tr>
- <tr>
- <td><label id="alignlabel" for="align">{#table_dlg.align}</label></td>
- <td><select id="align" name="align">
- <option value="">{#not_set}</option>
- <option value="center">{#table_dlg.align_middle}</option>
- <option value="left">{#table_dlg.align_left}</option>
- <option value="right">{#table_dlg.align_right}</option>
- </select></td>
- <td><label id="borderlabel" for="border">{#table_dlg.border}</label></td>
- <td><input id="border" name="border" type="text" value="" size="3" maxlength="5" onchange="changedBorder();" class="size" /></td>
- </tr>
- <tr id="width_row">
- <td><label id="widthlabel" for="width">{#table_dlg.width}</label></td>
- <td><input name="width" type="text" id="width" value="" size="7" maxlength="7" onchange="changedSize();" class="size" /></td>
- <td><label id="heightlabel" for="height">{#table_dlg.height}</label></td>
- <td><input name="height" type="text" id="height" value="" size="7" maxlength="7" onchange="changedSize();" class="size" /></td>
- </tr>
- <tr id="styleSelectRow" >
- <td><label id="classlabel" for="class">{#class_name}</label></td>
- <td colspan="3" >
- <select id="class" name="class" class="mceEditableSelect">
- <option value="" selected="selected">{#not_set}</option>
- </select></td>
- </tr>
- <tr>
- <td class="column1" ><label for="caption">{#table_dlg.caption}</label></td>
- <td><input id="caption" name="caption" type="checkbox" class="checkbox" value="true" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
-
- <div id="advanced_panel" class="panel">
- <fieldset>
- <legend>{#table_dlg.advanced_props}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="column1"><label for="id">{#table_dlg.id}</label></td>
- <td><input id="id" name="id" type="text" value="" class="advfield" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="summary">{#table_dlg.summary}</label></td>
- <td><input id="summary" name="summary" type="text" value="" class="advfield" /></td>
- </tr>
-
- <tr>
- <td><label for="style">{#table_dlg.style}</label></td>
- <td><input type="text" id="style" name="style" value="" class="advfield" onchange="changedStyle();" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label id="langlabel" for="lang">{#table_dlg.langcode}</label></td>
- <td>
- <input id="lang" name="lang" type="text" value="" class="advfield" />
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td>
- <td>
- <table role="presentation" aria-labelledby="backgroundimage_label" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="backgroundimage" name="backgroundimage" type="text" value="" class="advfield" onchange="changedBackgroundImage();" /></td>
- <td id="backgroundimagebrowsercontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="tframe">{#table_dlg.frame}</label></td>
- <td>
- <select id="tframe" name="tframe" class="advfield">
- <option value="">{#not_set}</option>
- <option value="void">{#table_dlg.rules_void}</option>
- <option value="above">{#table_dlg.rules_above}</option>
- <option value="below">{#table_dlg.rules_below}</option>
- <option value="hsides">{#table_dlg.rules_hsides}</option>
- <option value="lhs">{#table_dlg.rules_lhs}</option>
- <option value="rhs">{#table_dlg.rules_rhs}</option>
- <option value="vsides">{#table_dlg.rules_vsides}</option>
- <option value="box">{#table_dlg.rules_box}</option>
- <option value="border">{#table_dlg.rules_border}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="rules">{#table_dlg.rules}</label></td>
- <td>
- <select id="rules" name="rules" class="advfield">
- <option value="">{#not_set}</option>
- <option value="none">{#table_dlg.frame_none}</option>
- <option value="groups">{#table_dlg.frame_groups}</option>
- <option value="rows">{#table_dlg.frame_rows}</option>
- <option value="cols">{#table_dlg.frame_cols}</option>
- <option value="all">{#table_dlg.frame_all}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="dir">{#table_dlg.langdir}</label></td>
- <td>
- <select id="dir" name="dir" class="advfield">
- <option value="">{#not_set}</option>
- <option value="ltr">{#table_dlg.ltr}</option>
- <option value="rtl">{#table_dlg.rtl}</option>
- </select>
- </td>
- </tr>
-
- <tr role="group" aria-labelledby="bordercolor_label">
- <td class="column1"><label id="bordercolor_label" for="bordercolor">{#table_dlg.bordercolor}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>
- <td id="bordercolor_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr role="group" aria-labelledby="bgcolor_label">
- <td class="column1"><label id="bgcolor_label" for="bgcolor">{#table_dlg.bgcolor}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
- <td id="bgcolor_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
- </form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/template/blank.htm b/library/tinymce/jscripts/tiny_mce/plugins/template/blank.htm
deleted file mode 100644
index ecde53fae..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/template/blank.htm
+++ /dev/null
@@ -1,12 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>blank_page</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <script type="text/javascript">
- parent.TemplateDialog.loadCSSFiles(document);
- </script>
-</head>
-<body id="mceTemplatePreview" class="mceContentBody">
-
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/template/css/template.css b/library/tinymce/jscripts/tiny_mce/plugins/template/css/template.css
deleted file mode 100644
index 2d23a4938..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/template/css/template.css
+++ /dev/null
@@ -1,23 +0,0 @@
-#frmbody {
- padding: 10px;
- background-color: #FFF;
- border: 1px solid #CCC;
-}
-
-.frmRow {
- margin-bottom: 10px;
-}
-
-#templatesrc {
- border: none;
- width: 320px;
- height: 240px;
-}
-
-.title {
- padding-bottom: 5px;
-}
-
-.mceActionPanel {
- padding-top: 5px;
-}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js
deleted file mode 100644
index ebe3c27d7..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.TemplatePlugin",{init:function(b,c){var d=this;d.editor=b;b.addCommand("mceTemplate",function(e){b.windowManager.open({file:c+"/template.htm",width:b.getParam("template_popup_width",750),height:b.getParam("template_popup_height",600),inline:1},{plugin_url:c})});b.addCommand("mceInsertTemplate",d._insertTemplate,d);b.addButton("template",{title:"template.desc",cmd:"mceTemplate"});b.onPreProcess.add(function(e,g){var f=e.dom;a(f.select("div",g.node),function(h){if(f.hasClass(h,"mceTmpl")){a(f.select("*",h),function(i){if(f.hasClass(i,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){i.innerHTML=d._getDateTime(new Date(),e.getParam("template_mdate_format",e.getLang("template.mdate_format")))}});d._replaceVals(h)}})})},getInfo:function(){return{longname:"Template plugin",author:"Moxiecode Systems AB",authorurl:"http://www.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_insertTemplate:function(i,j){var k=this,g=k.editor,f,c,d=g.dom,b=g.selection.getContent();f=j.content;a(k.editor.getParam("template_replace_values"),function(l,h){if(typeof(l)!="function"){f=f.replace(new RegExp("\\{\\$"+h+"\\}","g"),l)}});c=d.create("div",null,f);n=d.select(".mceTmpl",c);if(n&&n.length>0){c=d.create("div",null);c.appendChild(n[0].cloneNode(true))}function e(l,h){return new RegExp("\\b"+h+"\\b","g").test(l.className)}a(d.select("*",c),function(h){if(e(h,g.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_cdate_format",g.getLang("template.cdate_format")))}if(e(h,g.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_mdate_format",g.getLang("template.mdate_format")))}if(e(h,g.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))){h.innerHTML=b}});k._replaceVals(c);g.execCommand("mceInsertContent",false,c.innerHTML);g.addVisual()},_replaceVals:function(c){var d=this.editor.dom,b=this.editor.getParam("template_replace_values");a(d.select("*",c),function(f){a(b,function(g,e){if(d.hasClass(f,e)){if(typeof(b[e])=="function"){b[e](f)}}})})},_getDateTime:function(e,b){if(!b){return""}function c(g,d){var f;g=""+g;if(g.length<d){for(f=0;f<(d-g.length);f++){g="0"+g}}return g}b=b.replace("%D","%m/%d/%y");b=b.replace("%r","%I:%M:%S %p");b=b.replace("%Y",""+e.getFullYear());b=b.replace("%y",""+e.getYear());b=b.replace("%m",c(e.getMonth()+1,2));b=b.replace("%d",c(e.getDate(),2));b=b.replace("%H",""+c(e.getHours(),2));b=b.replace("%M",""+c(e.getMinutes(),2));b=b.replace("%S",""+c(e.getSeconds(),2));b=b.replace("%I",""+((e.getHours()+11)%12+1));b=b.replace("%p",""+(e.getHours()<12?"AM":"PM"));b=b.replace("%B",""+this.editor.getLang("template_months_long").split(",")[e.getMonth()]);b=b.replace("%b",""+this.editor.getLang("template_months_short").split(",")[e.getMonth()]);b=b.replace("%A",""+this.editor.getLang("template_day_long").split(",")[e.getDay()]);b=b.replace("%a",""+this.editor.getLang("template_day_short").split(",")[e.getDay()]);b=b.replace("%%","%");return b}});tinymce.PluginManager.add("template",tinymce.plugins.TemplatePlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js
deleted file mode 100644
index 9cac26991..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js
+++ /dev/null
@@ -1,159 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var each = tinymce.each;
-
- tinymce.create('tinymce.plugins.TemplatePlugin', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- // Register commands
- ed.addCommand('mceTemplate', function(ui) {
- ed.windowManager.open({
- file : url + '/template.htm',
- width : ed.getParam('template_popup_width', 750),
- height : ed.getParam('template_popup_height', 600),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- ed.addCommand('mceInsertTemplate', t._insertTemplate, t);
-
- // Register buttons
- ed.addButton('template', {title : 'template.desc', cmd : 'mceTemplate'});
-
- ed.onPreProcess.add(function(ed, o) {
- var dom = ed.dom;
-
- each(dom.select('div', o.node), function(e) {
- if (dom.hasClass(e, 'mceTmpl')) {
- each(dom.select('*', e), function(e) {
- if (dom.hasClass(e, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))
- e.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));
- });
-
- t._replaceVals(e);
- }
- });
- });
- },
-
- getInfo : function() {
- return {
- longname : 'Template plugin',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://www.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- _insertTemplate : function(ui, v) {
- var t = this, ed = t.editor, h, el, dom = ed.dom, sel = ed.selection.getContent();
-
- h = v.content;
-
- each(t.editor.getParam('template_replace_values'), function(v, k) {
- if (typeof(v) != 'function')
- h = h.replace(new RegExp('\\{\\$' + k + '\\}', 'g'), v);
- });
-
- el = dom.create('div', null, h);
-
- // Find template element within div
- n = dom.select('.mceTmpl', el);
- if (n && n.length > 0) {
- el = dom.create('div', null);
- el.appendChild(n[0].cloneNode(true));
- }
-
- function hasClass(n, c) {
- return new RegExp('\\b' + c + '\\b', 'g').test(n.className);
- };
-
- each(dom.select('*', el), function(n) {
- // Replace cdate
- if (hasClass(n, ed.getParam('template_cdate_classes', 'cdate').replace(/\s+/g, '|')))
- n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_cdate_format", ed.getLang("template.cdate_format")));
-
- // Replace mdate
- if (hasClass(n, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))
- n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));
-
- // Replace selection
- if (hasClass(n, ed.getParam('template_selected_content_classes', 'selcontent').replace(/\s+/g, '|')))
- n.innerHTML = sel;
- });
-
- t._replaceVals(el);
-
- ed.execCommand('mceInsertContent', false, el.innerHTML);
- ed.addVisual();
- },
-
- _replaceVals : function(e) {
- var dom = this.editor.dom, vl = this.editor.getParam('template_replace_values');
-
- each(dom.select('*', e), function(e) {
- each(vl, function(v, k) {
- if (dom.hasClass(e, k)) {
- if (typeof(vl[k]) == 'function')
- vl[k](e);
- }
- });
- });
- },
-
- _getDateTime : function(d, fmt) {
- if (!fmt)
- return "";
-
- function addZeros(value, len) {
- var i;
-
- value = "" + value;
-
- if (value.length < len) {
- for (i=0; i<(len-value.length); i++)
- value = "0" + value;
- }
-
- return value;
- }
-
- fmt = fmt.replace("%D", "%m/%d/%y");
- fmt = fmt.replace("%r", "%I:%M:%S %p");
- fmt = fmt.replace("%Y", "" + d.getFullYear());
- fmt = fmt.replace("%y", "" + d.getYear());
- fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
- fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
- fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
- fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
- fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
- fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
- fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
- fmt = fmt.replace("%B", "" + this.editor.getLang("template_months_long").split(',')[d.getMonth()]);
- fmt = fmt.replace("%b", "" + this.editor.getLang("template_months_short").split(',')[d.getMonth()]);
- fmt = fmt.replace("%A", "" + this.editor.getLang("template_day_long").split(',')[d.getDay()]);
- fmt = fmt.replace("%a", "" + this.editor.getLang("template_day_short").split(',')[d.getDay()]);
- fmt = fmt.replace("%%", "%");
-
- return fmt;
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('template', tinymce.plugins.TemplatePlugin);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/template/js/template.js b/library/tinymce/jscripts/tiny_mce/plugins/template/js/template.js
deleted file mode 100644
index bc3045d24..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/template/js/template.js
+++ /dev/null
@@ -1,106 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var TemplateDialog = {
- preInit : function() {
- var url = tinyMCEPopup.getParam("template_external_list_url");
-
- if (url != null)
- document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></sc'+'ript>');
- },
-
- init : function() {
- var ed = tinyMCEPopup.editor, tsrc, sel, x, u;
-
- tsrc = ed.getParam("template_templates", false);
- sel = document.getElementById('tpath');
-
- // Setup external template list
- if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') {
- for (x=0, tsrc = []; x<tinyMCETemplateList.length; x++)
- tsrc.push({title : tinyMCETemplateList[x][0], src : tinyMCETemplateList[x][1], description : tinyMCETemplateList[x][2]});
- }
-
- for (x=0; x<tsrc.length; x++)
- sel.options[sel.options.length] = new Option(tsrc[x].title, tinyMCEPopup.editor.documentBaseURI.toAbsolute(tsrc[x].src));
-
- this.resize();
- this.tsrc = tsrc;
- },
-
- resize : function() {
- var w, h, e;
-
- if (!self.innerWidth) {
- w = document.body.clientWidth - 50;
- h = document.body.clientHeight - 160;
- } else {
- w = self.innerWidth - 50;
- h = self.innerHeight - 170;
- }
-
- e = document.getElementById('templatesrc');
-
- if (e) {
- e.style.height = Math.abs(h) + 'px';
- e.style.width = Math.abs(w - 5) + 'px';
- }
- },
-
- loadCSSFiles : function(d) {
- var ed = tinyMCEPopup.editor;
-
- tinymce.each(ed.getParam("content_css", '').split(','), function(u) {
- d.write('<link href="' + ed.documentBaseURI.toAbsolute(u) + '" rel="stylesheet" type="text/css" />');
- });
- },
-
- selectTemplate : function(u, ti) {
- var d = window.frames['templatesrc'].document, x, tsrc = this.tsrc;
-
- if (!u)
- return;
-
- d.body.innerHTML = this.templateHTML = this.getFileContents(u);
-
- for (x=0; x<tsrc.length; x++) {
- if (tsrc[x].title == ti)
- document.getElementById('tmpldesc').innerHTML = tsrc[x].description || '';
- }
- },
-
- insert : function() {
- tinyMCEPopup.execCommand('mceInsertTemplate', false, {
- content : this.templateHTML,
- selection : tinyMCEPopup.editor.selection.getContent()
- });
-
- tinyMCEPopup.close();
- },
-
- getFileContents : function(u) {
- var x, d, t = 'text/plain';
-
- function g(s) {
- x = 0;
-
- try {
- x = new ActiveXObject(s);
- } catch (s) {
- }
-
- return x;
- };
-
- x = window.ActiveXObject ? g('Msxml2.XMLHTTP') || g('Microsoft.XMLHTTP') : new XMLHttpRequest();
-
- // Synchronous AJAX load file
- x.overrideMimeType && x.overrideMimeType(t);
- x.open("GET", u, false);
- x.send(null);
-
- return x.responseText;
- }
-};
-
-TemplateDialog.preInit();
-tinyMCEPopup.onInit.add(TemplateDialog.init, TemplateDialog);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js
deleted file mode 100644
index 83e599d68..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.template_dlg',{title:"Templates",label:"Template","desc_label":"Description",desc:"Insert Predefined Template Content",select:"Select a Template",preview:"Preview",warning:"Warning: Updating a template with a different one may cause data loss.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"}); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/template/template.htm b/library/tinymce/jscripts/tiny_mce/plugins/template/template.htm
deleted file mode 100644
index b2182e632..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/template/template.htm
+++ /dev/null
@@ -1,31 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#template_dlg.title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/template.js"></script>
- <link href="css/template.css" rel="stylesheet" type="text/css" />
-</head>
-<body onresize="TemplateDialog.resize();">
- <form onsubmit="TemplateDialog.insert();return false;">
- <div id="frmbody">
- <div class="title">{#template_dlg.desc}</div>
- <div class="frmRow"><label for="tpath" title="{#template_dlg.select}">{#template_dlg.label}:</label>
- <select id="tpath" name="tpath" onchange="TemplateDialog.selectTemplate(this.options[this.selectedIndex].value, this.options[this.selectedIndex].text);" class="mceFocus">
- <option value="">{#template_dlg.select}...</option>
- </select>
- <span id="warning"></span></div>
- <div class="frmRow"><label for="tdesc">{#template_dlg.desc_label}:</label>
- <span id="tmpldesc"></span></div>
- <fieldset>
- <legend>{#template_dlg.preview}</legend>
- <iframe id="templatesrc" name="templatesrc" src="blank.htm" width="690" height="400" frameborder="0"></iframe>
- </fieldset>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
- </form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/visualblocks.css b/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/visualblocks.css
deleted file mode 100644
index 76bc92b50..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/visualblocks.css
+++ /dev/null
@@ -1,21 +0,0 @@
-p, h1, h2, h3, h4, h5, h6, hgroup, aside, div, section, article, blockquote, address, pre, figure {display: block; padding-top: 10px; border: 1px dashed #BBB; background: transparent no-repeat}
-p, h1, h2, h3, h4, h5, h6, hgroup, aside, div, section, article, address, pre, figure {margin-left: 3px}
-section, article, address, hgroup, aside, figure {margin: 0 0 1em 3px}
-
-p {background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}
-h1 {background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}
-h2 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}
-h3 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}
-h4 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}
-h5 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}
-h6 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}
-div {background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}
-section {background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}
-article {background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}
-blockquote {background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}
-address {background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}
-pre {background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}
-hgroup {background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}
-aside {background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}
-figure {background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}
-figcaption {border: 1px dashed #BBB}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js
deleted file mode 100644
index c65eaf2b4..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.VisualBlocks",{init:function(a,b){var c;if(!window.NodeList){return}a.addCommand("mceVisualBlocks",function(){var e=a.dom,d;if(!c){c=e.uniqueId();d=e.create("link",{id:c,rel:"stylesheet",href:b+"/css/visualblocks.css"});a.getDoc().getElementsByTagName("head")[0].appendChild(d)}else{d=e.get(c);d.disabled=!d.disabled}a.controlManager.setActive("visualblocks",!d.disabled)});a.addButton("visualblocks",{title:"visualblocks.desc",cmd:"mceVisualBlocks"});a.onInit.add(function(){if(a.settings.visualblocks_default_state){a.execCommand("mceVisualBlocks",false,null,{skip_focus:true})}})},getInfo:function(){return{longname:"Visual blocks",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualblocks",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("visualblocks",tinymce.plugins.VisualBlocks)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin_src.js
deleted file mode 100644
index b9d2ab2e1..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin_src.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2012, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.VisualBlocks', {
- init : function(ed, url) {
- var cssId;
-
- // We don't support older browsers like IE6/7 and they don't provide prototypes for DOM objects
- if (!window.NodeList) {
- return;
- }
-
- ed.addCommand('mceVisualBlocks', function() {
- var dom = ed.dom, linkElm;
-
- if (!cssId) {
- cssId = dom.uniqueId();
- linkElm = dom.create('link', {
- id: cssId,
- rel : 'stylesheet',
- href : url + '/css/visualblocks.css'
- });
-
- ed.getDoc().getElementsByTagName('head')[0].appendChild(linkElm);
- } else {
- linkElm = dom.get(cssId);
- linkElm.disabled = !linkElm.disabled;
- }
-
- ed.controlManager.setActive('visualblocks', !linkElm.disabled);
- });
-
- ed.addButton('visualblocks', {title : 'visualblocks.desc', cmd : 'mceVisualBlocks'});
-
- ed.onInit.add(function() {
- if (ed.settings.visualblocks_default_state) {
- ed.execCommand('mceVisualBlocks', false, null, {skip_focus : true});
- }
- });
- },
-
- getInfo : function() {
- return {
- longname : 'Visual blocks',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualblocks',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('visualblocks', tinymce.plugins.VisualBlocks);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js
deleted file mode 100644
index 1a148e8b4..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.VisualChars",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceVisualChars",c._toggleVisualChars,c);a.addButton("visualchars",{title:"visualchars.desc",cmd:"mceVisualChars"});a.onBeforeGetContent.add(function(d,e){if(c.state&&e.format!="raw"&&!e.draft){c.state=true;c._toggleVisualChars(false)}})},getInfo:function(){return{longname:"Visual characters",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_toggleVisualChars:function(m){var p=this,k=p.editor,a,g,j,n=k.getDoc(),o=k.getBody(),l,q=k.selection,e,c,f;p.state=!p.state;k.controlManager.setActive("visualchars",p.state);if(m){f=q.getBookmark()}if(p.state){a=[];tinymce.walk(o,function(b){if(b.nodeType==3&&b.nodeValue&&b.nodeValue.indexOf("\u00a0")!=-1){a.push(b)}},"childNodes");for(g=0;g<a.length;g++){l=a[g].nodeValue;l=l.replace(/(\u00a0)/g,'<span data-mce-bogus="1" class="mceItemHidden mceItemNbsp">$1</span>');c=k.dom.create("div",null,l);while(node=c.lastChild){k.dom.insertAfter(node,a[g])}k.dom.remove(a[g])}}else{a=k.dom.select("span.mceItemNbsp",o);for(g=a.length-1;g>=0;g--){k.dom.remove(a[g],1)}}q.moveToBookmark(f)}});tinymce.PluginManager.add("visualchars",tinymce.plugins.VisualChars)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js
deleted file mode 100644
index df985905b..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.VisualChars', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- // Register commands
- ed.addCommand('mceVisualChars', t._toggleVisualChars, t);
-
- // Register buttons
- ed.addButton('visualchars', {title : 'visualchars.desc', cmd : 'mceVisualChars'});
-
- ed.onBeforeGetContent.add(function(ed, o) {
- if (t.state && o.format != 'raw' && !o.draft) {
- t.state = true;
- t._toggleVisualChars(false);
- }
- });
- },
-
- getInfo : function() {
- return {
- longname : 'Visual characters',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- // Private methods
-
- _toggleVisualChars : function(bookmark) {
- var t = this, ed = t.editor, nl, i, h, d = ed.getDoc(), b = ed.getBody(), nv, s = ed.selection, bo, div, bm;
-
- t.state = !t.state;
- ed.controlManager.setActive('visualchars', t.state);
-
- if (bookmark)
- bm = s.getBookmark();
-
- if (t.state) {
- nl = [];
- tinymce.walk(b, function(n) {
- if (n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1)
- nl.push(n);
- }, 'childNodes');
-
- for (i = 0; i < nl.length; i++) {
- nv = nl[i].nodeValue;
- nv = nv.replace(/(\u00a0)/g, '<span data-mce-bogus="1" class="mceItemHidden mceItemNbsp">$1</span>');
-
- div = ed.dom.create('div', null, nv);
- while (node = div.lastChild)
- ed.dom.insertAfter(node, nl[i]);
-
- ed.dom.remove(nl[i]);
- }
- } else {
- nl = ed.dom.select('span.mceItemNbsp', b);
-
- for (i = nl.length - 1; i >= 0; i--)
- ed.dom.remove(nl[i], 1);
- }
-
- s.moveToBookmark(bm);
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('visualchars', tinymce.plugins.VisualChars);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js
deleted file mode 100644
index 42ece2092..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.WordCount",{block:0,id:null,countre:null,cleanre:null,init:function(c,d){var e=this,f=0,g=tinymce.VK;e.countre=c.getParam("wordcount_countregex",/[\w\u2019\'-]+/g);e.cleanre=c.getParam("wordcount_cleanregex",/[0-9.(),;:!?%#$?\'\"_+=\\\/-]*/g);e.update_rate=c.getParam("wordcount_update_rate",2000);e.update_on_delete=c.getParam("wordcount_update_on_delete",false);e.id=c.id+"-word-count";c.onPostRender.add(function(i,h){var j,k;k=i.getParam("wordcount_target_id");if(!k){j=tinymce.DOM.get(i.id+"_path_row");if(j){tinymce.DOM.add(j.parentNode,"div",{style:"float: right"},i.getLang("wordcount.words","Words: ")+'<span id="'+e.id+'">0</span>')}}else{tinymce.DOM.add(k,"span",{},'<span id="'+e.id+'">0</span>')}});c.onInit.add(function(h){h.selection.onSetContent.add(function(){e._count(h)});e._count(h)});c.onSetContent.add(function(h){e._count(h)});function b(h){return h!==f&&(h===g.ENTER||f===g.SPACEBAR||a(f))}function a(h){return h===g.DELETE||h===g.BACKSPACE}c.onKeyUp.add(function(h,i){if(b(i.keyCode)||e.update_on_delete&&a(i.keyCode)){e._count(h)}f=i.keyCode})},_getCount:function(c){var a=0;var b=c.getContent({format:"raw"});if(b){b=b.replace(/\.\.\./g," ");b=b.replace(/<.[^<>]*?>/g," ").replace(/&nbsp;|&#160;/gi," ");b=b.replace(/(\w+)(&.+?;)+(\w+)/,"$1$3").replace(/&.+?;/g," ");b=b.replace(this.cleanre,"");var d=b.match(this.countre);if(d){a=d.length}}return a},_count:function(a){var b=this;if(b.block){return}b.block=1;setTimeout(function(){if(!a.destroyed){var c=b._getCount(a);tinymce.DOM.setHTML(b.id,c.toString());setTimeout(function(){b.block=0},b.update_rate)}},1)},getInfo:function(){return{longname:"Word Count plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("wordcount",tinymce.plugins.WordCount)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js
deleted file mode 100644
index 34b265553..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.WordCount', {
- block : 0,
- id : null,
- countre : null,
- cleanre : null,
-
- init : function(ed, url) {
- var t = this, last = 0, VK = tinymce.VK;
-
- t.countre = ed.getParam('wordcount_countregex', /[\w\u2019\'-]+/g); // u2019 == &rsquo;
- t.cleanre = ed.getParam('wordcount_cleanregex', /[0-9.(),;:!?%#$?\'\"_+=\\\/-]*/g);
- t.update_rate = ed.getParam('wordcount_update_rate', 2000);
- t.update_on_delete = ed.getParam('wordcount_update_on_delete', false);
- t.id = ed.id + '-word-count';
-
- ed.onPostRender.add(function(ed, cm) {
- var row, id;
-
- // Add it to the specified id or the theme advanced path
- id = ed.getParam('wordcount_target_id');
- if (!id) {
- row = tinymce.DOM.get(ed.id + '_path_row');
-
- if (row)
- tinymce.DOM.add(row.parentNode, 'div', {'style': 'float: right'}, ed.getLang('wordcount.words', 'Words: ') + '<span id="' + t.id + '">0</span>');
- } else {
- tinymce.DOM.add(id, 'span', {}, '<span id="' + t.id + '">0</span>');
- }
- });
-
- ed.onInit.add(function(ed) {
- ed.selection.onSetContent.add(function() {
- t._count(ed);
- });
-
- t._count(ed);
- });
-
- ed.onSetContent.add(function(ed) {
- t._count(ed);
- });
-
- function checkKeys(key) {
- return key !== last && (key === VK.ENTER || last === VK.SPACEBAR || checkDelOrBksp(last));
- }
-
- function checkDelOrBksp(key) {
- return key === VK.DELETE || key === VK.BACKSPACE;
- }
-
- ed.onKeyUp.add(function(ed, e) {
- if (checkKeys(e.keyCode) || t.update_on_delete && checkDelOrBksp(e.keyCode)) {
- t._count(ed);
- }
-
- last = e.keyCode;
- });
- },
-
- _getCount : function(ed) {
- var tc = 0;
- var tx = ed.getContent({ format: 'raw' });
-
- if (tx) {
- tx = tx.replace(/\.\.\./g, ' '); // convert ellipses to spaces
- tx = tx.replace(/<.[^<>]*?>/g, ' ').replace(/&nbsp;|&#160;/gi, ' '); // remove html tags and space chars
-
- // deal with html entities
- tx = tx.replace(/(\w+)(&.+?;)+(\w+)/, "$1$3").replace(/&.+?;/g, ' ');
- tx = tx.replace(this.cleanre, ''); // remove numbers and punctuation
-
- var wordArray = tx.match(this.countre);
- if (wordArray) {
- tc = wordArray.length;
- }
- }
-
- return tc;
- },
-
- _count : function(ed) {
- var t = this;
-
- // Keep multiple calls from happening at the same time
- if (t.block)
- return;
-
- t.block = 1;
-
- setTimeout(function() {
- if (!ed.destroyed) {
- var tc = t._getCount(ed);
- tinymce.DOM.setHTML(t.id, tc.toString());
- setTimeout(function() {t.block = 0;}, t.update_rate);
- }
- }, 1);
- },
-
- getInfo: function() {
- return {
- longname : 'Word Count plugin',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- tinymce.PluginManager.add('wordcount', tinymce.plugins.WordCount);
-})();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm
deleted file mode 100644
index 30a894f7c..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm
+++ /dev/null
@@ -1,142 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#xhtmlxtras_dlg.title_abbr_element}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/element_common.js"></script>
- <script type="text/javascript" src="js/abbr.js"></script>
- <link rel="stylesheet" type="text/css" href="css/popup.css" />
-</head>
-<body style="display: none" role="application" aria-labelledby="app_title">
-<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.title_abbr_element}</span>
-<form onsubmit="insertAbbr();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
- <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
- <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td>
- </tr>
- <tr>
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
- <td><input id="id" name="id" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td>
- <td>
- <select id="class" name="class" class="field mceEditableSelect">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
- <td><input id="style" name="style" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
- <td>
- <select id="dir" name="dir" class="field">
- <option value="">{#not_set}</option>
- <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option>
- <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
- <td>
- <input id="lang" name="lang" type="text" value="" class="field" />
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
- <div id="events_panel" class="panel">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label for="onfocus">onfocus</label>:</td>
- <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onblur">onblur</label>:</td>
- <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onclick">onclick</label>:</td>
- <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="ondblclick">ondblclick</label>:</td>
- <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousedown">onmousedown</label>:</td>
- <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseup">onmouseup</label>:</td>
- <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseover">onmouseover</label>:</td>
- <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousemove">onmousemove</label>:</td>
- <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseout">onmouseout</label>:</td>
- <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeypress">onkeypress</label>:</td>
- <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeydown">onkeydown</label>:</td>
- <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeyup">onkeyup</label>:</td>
- <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeAbbr();" style="display: none;" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm
deleted file mode 100644
index c10934592..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm
+++ /dev/null
@@ -1,142 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#xhtmlxtras_dlg.title_acronym_element}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/element_common.js"></script>
- <script type="text/javascript" src="js/acronym.js"></script>
- <link rel="stylesheet" type="text/css" href="css/popup.css" />
-</head>
-<body style="display: none" role="application" aria-labelledby="app_title">
-<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.title_acronym_element}</span>
-<form onsubmit="insertAcronym();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
- <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
- <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td>
- </tr>
- <tr>
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
- <td><input id="id" name="id" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td>
- <td>
- <select id="class" name="class" class="field mceEditableSelect">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
- <td><input id="style" name="style" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
- <td>
- <select id="dir" name="dir" class="field">
- <option value="">{#not_set}</option>
- <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option>
- <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
- <td>
- <input id="lang" name="lang" type="text" value="" class="field" />
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
- <div id="events_panel" class="panel">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label for="onfocus">onfocus</label>:</td>
- <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onblur">onblur</label>:</td>
- <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onclick">onclick</label>:</td>
- <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="ondblclick">ondblclick</label>:</td>
- <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousedown">onmousedown</label>:</td>
- <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseup">onmouseup</label>:</td>
- <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseover">onmouseover</label>:</td>
- <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousemove">onmousemove</label>:</td>
- <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseout">onmouseout</label>:</td>
- <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeypress">onkeypress</label>:</td>
- <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeydown">onkeydown</label>:</td>
- <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeyup">onkeyup</label>:</td>
- <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeAcronym();" style="display: none;" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm
deleted file mode 100644
index e8d606a34..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#xhtmlxtras_dlg.attribs_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="js/attributes.js"></script>
- <link rel="stylesheet" type="text/css" href="css/attributes.css" />
-</head>
-<body style="display: none" role="application" aria-labelledby="app_title">
-<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.attribs_title}</span>
-<form onsubmit="insertAction();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.attribute_attrib_tab}</a></span></li>
- <li id="events_tab" aria-controls="events_panel"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.attribute_events_tab}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.attribute_attrib_tab}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
- <td><input id="title" name="title" type="text" value="" class="mceFocus" /></td>
- </tr>
- <tr>
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
- <td><input id="id" name="id" type="text" value="" /></td>
- </tr>
- <tr>
- <td><label id="classlabel" for="classlist">{#class_name}</label></td>
- <td>
- <select id="classlist" name="classlist" class="mceEditableSelect">
- <option value="" selected="selected">{#not_set}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
- <td><input id="style" name="style" type="text" value="" /></td>
- </tr>
- <tr>
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
- <td>
- <select id="dir" name="dir">
- <option value="">{#not_set}</option>
- <option value="ltr">{#xhtmlxtras_dlg.option_ltr}</option>
- <option value="rtl">{#xhtmlxtras_dlg.option_rtl}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
- <td>
- <input id="lang" name="lang" type="text" value="" />
- </td>
- </tr>
- <tr>
- <td><label id="tabindexlabel" for="tabindex">{#xhtmlxtras_dlg.attribute_label_tabindex}</label></td>
- <td><input type="text" id="tabindex" name="tabindex" value="" /></td>
- </tr>
-
- <tr>
- <td><label id="accesskeylabel" for="accesskey">{#xhtmlxtras_dlg.attribute_label_accesskey}</label></td>
- <td><input type="text" id="accesskey" name="accesskey" value="" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- <div id="events_panel" class="panel">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.attribute_events_tab}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label for="onfocus">onfocus</label>:</td>
- <td><input id="onfocus" name="onfocus" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onblur">onblur</label>:</td>
- <td><input id="onblur" name="onblur" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onclick">onclick</label>:</td>
- <td><input id="onclick" name="onclick" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="ondblclick">ondblclick</label>:</td>
- <td><input id="ondblclick" name="ondblclick" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousedown">onmousedown</label>:</td>
- <td><input id="onmousedown" name="onmousedown" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseup">onmouseup</label>:</td>
- <td><input id="onmouseup" name="onmouseup" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseover">onmouseover</label>:</td>
- <td><input id="onmouseover" name="onmouseover" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousemove">onmousemove</label>:</td>
- <td><input id="onmousemove" name="onmousemove" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseout">onmouseout</label>:</td>
- <td><input id="onmouseout" name="onmouseout" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeypress">onkeypress</label>:</td>
- <td><input id="onkeypress" name="onkeypress" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeydown">onkeydown</label>:</td>
- <td><input id="onkeydown" name="onkeydown" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeyup">onkeyup</label>:</td>
- <td><input id="onkeyup" name="onkeyup" type="text" value="" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm
deleted file mode 100644
index 0ac6bdb66..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm
+++ /dev/null
@@ -1,142 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#xhtmlxtras_dlg.title_cite_element}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/element_common.js"></script>
- <script type="text/javascript" src="js/cite.js"></script>
- <link rel="stylesheet" type="text/css" href="css/popup.css" />
-</head>
-<body style="display: none" role="application" aria-labelledby="app_title">
-<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.title_cite_element}</span>
-<form onsubmit="insertCite();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
- <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
- <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td>
- </tr>
- <tr>
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
- <td><input id="id" name="id" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td>
- <td>
- <select id="class" name="class" class="field mceEditableSelect">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
- <td><input id="style" name="style" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
- <td>
- <select id="dir" name="dir" class="field">
- <option value="">{#not_set}</option>
- <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option>
- <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
- <td>
- <input id="lang" name="lang" type="text" value="" class="field" />
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
- <div id="events_panel" class="panel">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label for="onfocus">onfocus</label>:</td>
- <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onblur">onblur</label>:</td>
- <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onclick">onclick</label>:</td>
- <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="ondblclick">ondblclick</label>:</td>
- <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousedown">onmousedown</label>:</td>
- <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseup">onmouseup</label>:</td>
- <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseover">onmouseover</label>:</td>
- <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousemove">onmousemove</label>:</td>
- <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseout">onmouseout</label>:</td>
- <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeypress">onkeypress</label>:</td>
- <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeydown">onkeydown</label>:</td>
- <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeyup">onkeyup</label>:</td>
- <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeCite();" style="display: none;" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css
deleted file mode 100644
index 9a6a235c3..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css
+++ /dev/null
@@ -1,11 +0,0 @@
-.panel_wrapper div.current {
- height: 290px;
-}
-
-#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey {
- width: 200px;
-}
-
-#events_panel input {
- width: 200px;
-}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css
deleted file mode 100644
index e67114dba..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css
+++ /dev/null
@@ -1,9 +0,0 @@
-input.field, select.field {width:200px;}
-input.picker {width:179px; margin-left: 5px;}
-input.disabled {border-color:#F2F2F2;}
-img.picker {vertical-align:text-bottom; cursor:pointer;}
-h1 {padding: 0 0 5px 0;}
-.panel_wrapper div.current {height:160px;}
-#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {height: 230px;}
-a.browse span {display:block; width:20px; height:20px; background:url('../../../themes/advanced/img/icons.gif') -140px -20px;}
-#datetime {width:180px;}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm
deleted file mode 100644
index 5f667510f..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm
+++ /dev/null
@@ -1,162 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#xhtmlxtras_dlg.title_del_element}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/element_common.js"></script>
- <script type="text/javascript" src="js/del.js"></script>
- <link rel="stylesheet" type="text/css" href="css/popup.css" />
-</head>
-<body id="xhtmlxtrasins" style="display: none" role="application" aria-labelledby="app_title">
-<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.title_del_element}</span>
-<form onsubmit="insertDel();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
- <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_general_tab}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label id="datetimelabel" for="datetime">{#xhtmlxtras_dlg.attribute_label_datetime}</label>:</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td>
- <td><a href="javascript:insertDateTime('datetime');" onmousedown="return false;" class="browse" role="button" aria-labelledby="datetimelabel"><span class="datetime" title="{#xhtmlxtras_dlg.insert_date}"></span></a></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="citelabel" for="cite">{#xhtmlxtras_dlg.attribute_label_cite}</label>:</td>
- <td><input id="cite" name="cite" type="text" value="" class="field" /></td>
- </tr>
- </table>
- </fieldset>
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
- <td><input id="title" name="title" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
- <td><input id="id" name="id" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td>
- <td>
- <select id="class" name="class" class="field mceEditableSelect">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
- <td><input id="style" name="style" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
- <td>
- <select id="dir" name="dir" class="field">
- <option value="">{#not_set}</option>
- <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option>
- <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
- <td>
- <input id="lang" name="lang" type="text" value="" class="field" />
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
- <div id="events_panel" class="panel">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label for="onfocus">onfocus</label>:</td>
- <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onblur">onblur</label>:</td>
- <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onclick">onclick</label>:</td>
- <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="ondblclick">ondblclick</label>:</td>
- <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousedown">onmousedown</label>:</td>
- <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseup">onmouseup</label>:</td>
- <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseover">onmouseover</label>:</td>
- <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousemove">onmousemove</label>:</td>
- <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseout">onmouseout</label>:</td>
- <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeypress">onkeypress</label>:</td>
- <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeydown">onkeydown</label>:</td>
- <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeyup">onkeyup</label>:</td>
- <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeDel();" style="display: none;" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js
deleted file mode 100644
index 9b98a5154..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.XHTMLXtrasPlugin",{init:function(a,b){a.addCommand("mceCite",function(){a.windowManager.open({file:b+"/cite.htm",width:350+parseInt(a.getLang("xhtmlxtras.cite_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.cite_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAcronym",function(){a.windowManager.open({file:b+"/acronym.htm",width:350+parseInt(a.getLang("xhtmlxtras.acronym_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.acronym_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAbbr",function(){a.windowManager.open({file:b+"/abbr.htm",width:350+parseInt(a.getLang("xhtmlxtras.abbr_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.abbr_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceDel",function(){a.windowManager.open({file:b+"/del.htm",width:340+parseInt(a.getLang("xhtmlxtras.del_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.del_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceIns",function(){a.windowManager.open({file:b+"/ins.htm",width:340+parseInt(a.getLang("xhtmlxtras.ins_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.ins_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAttributes",function(){a.windowManager.open({file:b+"/attributes.htm",width:380+parseInt(a.getLang("xhtmlxtras.attr_delta_width",0)),height:370+parseInt(a.getLang("xhtmlxtras.attr_delta_height",0)),inline:1},{plugin_url:b})});a.addButton("cite",{title:"xhtmlxtras.cite_desc",cmd:"mceCite"});a.addButton("acronym",{title:"xhtmlxtras.acronym_desc",cmd:"mceAcronym"});a.addButton("abbr",{title:"xhtmlxtras.abbr_desc",cmd:"mceAbbr"});a.addButton("del",{title:"xhtmlxtras.del_desc",cmd:"mceDel"});a.addButton("ins",{title:"xhtmlxtras.ins_desc",cmd:"mceIns"});a.addButton("attribs",{title:"xhtmlxtras.attribs_desc",cmd:"mceAttributes"});a.onNodeChange.add(function(d,c,f,e){f=d.dom.getParent(f,"CITE,ACRONYM,ABBR,DEL,INS");c.setDisabled("cite",e);c.setDisabled("acronym",e);c.setDisabled("abbr",e);c.setDisabled("del",e);c.setDisabled("ins",e);c.setDisabled("attribs",f&&f.nodeName=="BODY");c.setActive("cite",0);c.setActive("acronym",0);c.setActive("abbr",0);c.setActive("del",0);c.setActive("ins",0);if(f){do{c.setDisabled(f.nodeName.toLowerCase(),0);c.setActive(f.nodeName.toLowerCase(),1)}while(f=f.parentNode)}});a.onPreInit.add(function(){a.dom.create("abbr")})},getInfo:function(){return{longname:"XHTML Xtras Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("xhtmlxtras",tinymce.plugins.XHTMLXtrasPlugin)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js
deleted file mode 100644
index f24057211..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.XHTMLXtrasPlugin', {
- init : function(ed, url) {
- // Register commands
- ed.addCommand('mceCite', function() {
- ed.windowManager.open({
- file : url + '/cite.htm',
- width : 350 + parseInt(ed.getLang('xhtmlxtras.cite_delta_width', 0)),
- height : 250 + parseInt(ed.getLang('xhtmlxtras.cite_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- ed.addCommand('mceAcronym', function() {
- ed.windowManager.open({
- file : url + '/acronym.htm',
- width : 350 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)),
- height : 250 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- ed.addCommand('mceAbbr', function() {
- ed.windowManager.open({
- file : url + '/abbr.htm',
- width : 350 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)),
- height : 250 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- ed.addCommand('mceDel', function() {
- ed.windowManager.open({
- file : url + '/del.htm',
- width : 340 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)),
- height : 310 + parseInt(ed.getLang('xhtmlxtras.del_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- ed.addCommand('mceIns', function() {
- ed.windowManager.open({
- file : url + '/ins.htm',
- width : 340 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)),
- height : 310 + parseInt(ed.getLang('xhtmlxtras.ins_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- ed.addCommand('mceAttributes', function() {
- ed.windowManager.open({
- file : url + '/attributes.htm',
- width : 380 + parseInt(ed.getLang('xhtmlxtras.attr_delta_width', 0)),
- height : 370 + parseInt(ed.getLang('xhtmlxtras.attr_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- // Register buttons
- ed.addButton('cite', {title : 'xhtmlxtras.cite_desc', cmd : 'mceCite'});
- ed.addButton('acronym', {title : 'xhtmlxtras.acronym_desc', cmd : 'mceAcronym'});
- ed.addButton('abbr', {title : 'xhtmlxtras.abbr_desc', cmd : 'mceAbbr'});
- ed.addButton('del', {title : 'xhtmlxtras.del_desc', cmd : 'mceDel'});
- ed.addButton('ins', {title : 'xhtmlxtras.ins_desc', cmd : 'mceIns'});
- ed.addButton('attribs', {title : 'xhtmlxtras.attribs_desc', cmd : 'mceAttributes'});
-
- ed.onNodeChange.add(function(ed, cm, n, co) {
- n = ed.dom.getParent(n, 'CITE,ACRONYM,ABBR,DEL,INS');
-
- cm.setDisabled('cite', co);
- cm.setDisabled('acronym', co);
- cm.setDisabled('abbr', co);
- cm.setDisabled('del', co);
- cm.setDisabled('ins', co);
- cm.setDisabled('attribs', n && n.nodeName == 'BODY');
- cm.setActive('cite', 0);
- cm.setActive('acronym', 0);
- cm.setActive('abbr', 0);
- cm.setActive('del', 0);
- cm.setActive('ins', 0);
-
- // Activate all
- if (n) {
- do {
- cm.setDisabled(n.nodeName.toLowerCase(), 0);
- cm.setActive(n.nodeName.toLowerCase(), 1);
- } while (n = n.parentNode);
- }
- });
-
- ed.onPreInit.add(function() {
- // Fixed IE issue where it can't handle these elements correctly
- ed.dom.create('abbr');
- });
- },
-
- getInfo : function() {
- return {
- longname : 'XHTML Xtras Plugin',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('xhtmlxtras', tinymce.plugins.XHTMLXtrasPlugin);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm
deleted file mode 100644
index d001ac7c4..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm
+++ /dev/null
@@ -1,162 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#xhtmlxtras_dlg.title_ins_element}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/element_common.js"></script>
- <script type="text/javascript" src="js/ins.js"></script>
- <link rel="stylesheet" type="text/css" href="css/popup.css" />
-</head>
-<body id="xhtmlxtrasins" style="display: none" role="application" aria-labelledby="app_title">
-<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.title_ins_element}</span>
-<form onsubmit="insertIns();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
- <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_general_tab}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label id="datetimelabel" for="datetime">{#xhtmlxtras_dlg.attribute_label_datetime}</label>:</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td>
- <td ><a href="javascript:insertDateTime('datetime');" onmousedown="return false;" class="browse" role="button" aria-labelledby="datetimelabel"><span class="datetime" title="{#xhtmlxtras_dlg.insert_date}"></span></a></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr >
- <td class="label"><label id="citelabel" for="cite">{#xhtmlxtras_dlg.attribute_label_cite}</label>:</td>
- <td><input id="cite" name="cite" type="text" value="" class="field" /></td>
- </tr>
- </table>
- </fieldset>
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
- <td><input id="title" name="title" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
- <td><input id="id" name="id" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td>
- <td>
- <select id="class" name="class" class="field mceEditableSelect">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
- <td><input id="style" name="style" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
- <td>
- <select id="dir" name="dir" class="field">
- <option value="">{#not_set}</option>
- <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option>
- <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
- <td>
- <input id="lang" name="lang" type="text" value="" class="field" />
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
- <div id="events_panel" class="panel">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label for="onfocus">onfocus</label>:</td>
- <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onblur">onblur</label>:</td>
- <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onclick">onclick</label>:</td>
- <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="ondblclick">ondblclick</label>:</td>
- <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousedown">onmousedown</label>:</td>
- <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseup">onmouseup</label>:</td>
- <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseover">onmouseover</label>:</td>
- <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousemove">onmousemove</label>:</td>
- <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseout">onmouseout</label>:</td>
- <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeypress">onkeypress</label>:</td>
- <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeydown">onkeydown</label>:</td>
- <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeyup">onkeyup</label>:</td>
- <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeIns();" style="display: none;" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js
deleted file mode 100644
index 4b51a2572..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * abbr.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-function init() {
- SXE.initElementDialog('abbr');
- if (SXE.currentAction == "update") {
- SXE.showRemoveButton();
- }
-}
-
-function insertAbbr() {
- SXE.insertElement('abbr');
- tinyMCEPopup.close();
-}
-
-function removeAbbr() {
- SXE.removeElement('abbr');
- tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js
deleted file mode 100644
index 6ec2f8871..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * acronym.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-function init() {
- SXE.initElementDialog('acronym');
- if (SXE.currentAction == "update") {
- SXE.showRemoveButton();
- }
-}
-
-function insertAcronym() {
- SXE.insertElement('acronym');
- tinyMCEPopup.close();
-}
-
-function removeAcronym() {
- SXE.removeElement('acronym');
- tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js
deleted file mode 100644
index 9c99995ad..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js
+++ /dev/null
@@ -1,111 +0,0 @@
-/**
- * attributes.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-function init() {
- tinyMCEPopup.resizeToInnerSize();
- var inst = tinyMCEPopup.editor;
- var dom = inst.dom;
- var elm = inst.selection.getNode();
- var f = document.forms[0];
- var onclick = dom.getAttrib(elm, 'onclick');
-
- setFormValue('title', dom.getAttrib(elm, 'title'));
- setFormValue('id', dom.getAttrib(elm, 'id'));
- setFormValue('style', dom.getAttrib(elm, "style"));
- setFormValue('dir', dom.getAttrib(elm, 'dir'));
- setFormValue('lang', dom.getAttrib(elm, 'lang'));
- setFormValue('tabindex', dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));
- setFormValue('accesskey', dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));
- setFormValue('onfocus', dom.getAttrib(elm, 'onfocus'));
- setFormValue('onblur', dom.getAttrib(elm, 'onblur'));
- setFormValue('onclick', onclick);
- setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick'));
- setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown'));
- setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup'));
- setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover'));
- setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove'));
- setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout'));
- setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress'));
- setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown'));
- setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup'));
- className = dom.getAttrib(elm, 'class');
-
- addClassesToList('classlist', 'advlink_styles');
- selectByValue(f, 'classlist', className, true);
-
- TinyMCE_EditableSelects.init();
-}
-
-function setFormValue(name, value) {
- if(value && document.forms[0].elements[name]){
- document.forms[0].elements[name].value = value;
- }
-}
-
-function insertAction() {
- var inst = tinyMCEPopup.editor;
- var elm = inst.selection.getNode();
-
- setAllAttribs(elm);
- tinyMCEPopup.execCommand("mceEndUndoLevel");
- tinyMCEPopup.close();
-}
-
-function setAttrib(elm, attrib, value) {
- var formObj = document.forms[0];
- var valueElm = formObj.elements[attrib.toLowerCase()];
- var inst = tinyMCEPopup.editor;
- var dom = inst.dom;
-
- if (typeof(value) == "undefined" || value == null) {
- value = "";
-
- if (valueElm)
- value = valueElm.value;
- }
-
- dom.setAttrib(elm, attrib.toLowerCase(), value);
-}
-
-function setAllAttribs(elm) {
- var f = document.forms[0];
-
- setAttrib(elm, 'title');
- setAttrib(elm, 'id');
- setAttrib(elm, 'style');
- setAttrib(elm, 'class', getSelectValue(f, 'classlist'));
- setAttrib(elm, 'dir');
- setAttrib(elm, 'lang');
- setAttrib(elm, 'tabindex');
- setAttrib(elm, 'accesskey');
- setAttrib(elm, 'onfocus');
- setAttrib(elm, 'onblur');
- setAttrib(elm, 'onclick');
- setAttrib(elm, 'ondblclick');
- setAttrib(elm, 'onmousedown');
- setAttrib(elm, 'onmouseup');
- setAttrib(elm, 'onmouseover');
- setAttrib(elm, 'onmousemove');
- setAttrib(elm, 'onmouseout');
- setAttrib(elm, 'onkeypress');
- setAttrib(elm, 'onkeydown');
- setAttrib(elm, 'onkeyup');
-
- // Refresh in old MSIE
-// if (tinyMCE.isMSIE5)
-// elm.outerHTML = elm.outerHTML;
-}
-
-function insertAttribute() {
- tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
-tinyMCEPopup.requireLangPack();
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js
deleted file mode 100644
index 009b71546..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * cite.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-function init() {
- SXE.initElementDialog('cite');
- if (SXE.currentAction == "update") {
- SXE.showRemoveButton();
- }
-}
-
-function insertCite() {
- SXE.insertElement('cite');
- tinyMCEPopup.close();
-}
-
-function removeCite() {
- SXE.removeElement('cite');
- tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js
deleted file mode 100644
index 1f957dc78..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * del.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-function init() {
- SXE.initElementDialog('del');
- if (SXE.currentAction == "update") {
- setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime'));
- setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite'));
- SXE.showRemoveButton();
- }
-}
-
-function setElementAttribs(elm) {
- setAllCommonAttribs(elm);
- setAttrib(elm, 'datetime');
- setAttrib(elm, 'cite');
- elm.removeAttribute('data-mce-new');
-}
-
-function insertDel() {
- var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'DEL');
-
- if (elm == null) {
- var s = SXE.inst.selection.getContent();
- if(s.length > 0) {
- insertInlineElement('del');
- var elementArray = SXE.inst.dom.select('del[data-mce-new]');
- for (var i=0; i<elementArray.length; i++) {
- var elm = elementArray[i];
- setElementAttribs(elm);
- }
- }
- } else {
- setElementAttribs(elm);
- }
- tinyMCEPopup.editor.nodeChanged();
- tinyMCEPopup.execCommand('mceEndUndoLevel');
- tinyMCEPopup.close();
-}
-
-function removeDel() {
- SXE.removeElement('del');
- tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js
deleted file mode 100644
index 4e5d9c3bb..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js
+++ /dev/null
@@ -1,229 +0,0 @@
-/**
- * element_common.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-tinyMCEPopup.requireLangPack();
-
-function initCommonAttributes(elm) {
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
-
- // Setup form data for common element attributes
- setFormValue('title', dom.getAttrib(elm, 'title'));
- setFormValue('id', dom.getAttrib(elm, 'id'));
- selectByValue(formObj, 'class', dom.getAttrib(elm, 'class'), true);
- setFormValue('style', dom.getAttrib(elm, 'style'));
- selectByValue(formObj, 'dir', dom.getAttrib(elm, 'dir'));
- setFormValue('lang', dom.getAttrib(elm, 'lang'));
- setFormValue('onfocus', dom.getAttrib(elm, 'onfocus'));
- setFormValue('onblur', dom.getAttrib(elm, 'onblur'));
- setFormValue('onclick', dom.getAttrib(elm, 'onclick'));
- setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick'));
- setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown'));
- setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup'));
- setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover'));
- setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove'));
- setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout'));
- setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress'));
- setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown'));
- setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup'));
-}
-
-function setFormValue(name, value) {
- if(document.forms[0].elements[name]) document.forms[0].elements[name].value = value;
-}
-
-function insertDateTime(id) {
- document.getElementById(id).value = getDateTime(new Date(), "%Y-%m-%dT%H:%M:%S");
-}
-
-function getDateTime(d, fmt) {
- fmt = fmt.replace("%D", "%m/%d/%y");
- fmt = fmt.replace("%r", "%I:%M:%S %p");
- fmt = fmt.replace("%Y", "" + d.getFullYear());
- fmt = fmt.replace("%y", "" + d.getYear());
- fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
- fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
- fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
- fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
- fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
- fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
- fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
- fmt = fmt.replace("%%", "%");
-
- return fmt;
-}
-
-function addZeros(value, len) {
- var i;
-
- value = "" + value;
-
- if (value.length < len) {
- for (i=0; i<(len-value.length); i++)
- value = "0" + value;
- }
-
- return value;
-}
-
-function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
- if (!form_obj || !form_obj.elements[field_name])
- return;
-
- var sel = form_obj.elements[field_name];
-
- var found = false;
- for (var i=0; i<sel.options.length; i++) {
- var option = sel.options[i];
-
- if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
- option.selected = true;
- found = true;
- } else
- option.selected = false;
- }
-
- if (!found && add_custom && value != '') {
- var option = new Option('Value: ' + value, value);
- option.selected = true;
- sel.options[sel.options.length] = option;
- }
-
- return found;
-}
-
-function setAttrib(elm, attrib, value) {
- var formObj = document.forms[0];
- var valueElm = formObj.elements[attrib.toLowerCase()];
- tinyMCEPopup.editor.dom.setAttrib(elm, attrib, value || valueElm.value);
-}
-
-function setAllCommonAttribs(elm) {
- setAttrib(elm, 'title');
- setAttrib(elm, 'id');
- setAttrib(elm, 'class');
- setAttrib(elm, 'style');
- setAttrib(elm, 'dir');
- setAttrib(elm, 'lang');
- /*setAttrib(elm, 'onfocus');
- setAttrib(elm, 'onblur');
- setAttrib(elm, 'onclick');
- setAttrib(elm, 'ondblclick');
- setAttrib(elm, 'onmousedown');
- setAttrib(elm, 'onmouseup');
- setAttrib(elm, 'onmouseover');
- setAttrib(elm, 'onmousemove');
- setAttrib(elm, 'onmouseout');
- setAttrib(elm, 'onkeypress');
- setAttrib(elm, 'onkeydown');
- setAttrib(elm, 'onkeyup');*/
-}
-
-SXE = {
- currentAction : "insert",
- inst : tinyMCEPopup.editor,
- updateElement : null
-}
-
-SXE.focusElement = SXE.inst.selection.getNode();
-
-SXE.initElementDialog = function(element_name) {
- addClassesToList('class', 'xhtmlxtras_styles');
- TinyMCE_EditableSelects.init();
-
- element_name = element_name.toLowerCase();
- var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());
- if (elm != null && elm.nodeName.toUpperCase() == element_name.toUpperCase()) {
- SXE.currentAction = "update";
- }
-
- if (SXE.currentAction == "update") {
- initCommonAttributes(elm);
- SXE.updateElement = elm;
- }
-
- document.forms[0].insert.value = tinyMCEPopup.getLang(SXE.currentAction, 'Insert', true);
-}
-
-SXE.insertElement = function(element_name) {
- var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase()), h, tagName;
-
- if (elm == null) {
- var s = SXE.inst.selection.getContent();
- if(s.length > 0) {
- tagName = element_name;
-
- insertInlineElement(element_name);
- var elementArray = tinymce.grep(SXE.inst.dom.select(element_name));
- for (var i=0; i<elementArray.length; i++) {
- var elm = elementArray[i];
-
- if (SXE.inst.dom.getAttrib(elm, 'data-mce-new')) {
- elm.id = '';
- elm.setAttribute('id', '');
- elm.removeAttribute('id');
- elm.removeAttribute('data-mce-new');
-
- setAllCommonAttribs(elm);
- }
- }
- }
- } else {
- setAllCommonAttribs(elm);
- }
- SXE.inst.nodeChanged();
- tinyMCEPopup.execCommand('mceEndUndoLevel');
-}
-
-SXE.removeElement = function(element_name){
- element_name = element_name.toLowerCase();
- elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());
- if(elm && elm.nodeName.toUpperCase() == element_name.toUpperCase()){
- tinyMCE.execCommand('mceRemoveNode', false, elm);
- SXE.inst.nodeChanged();
- tinyMCEPopup.execCommand('mceEndUndoLevel');
- }
-}
-
-SXE.showRemoveButton = function() {
- document.getElementById("remove").style.display = '';
-}
-
-SXE.containsClass = function(elm,cl) {
- return (elm.className.indexOf(cl) > -1) ? true : false;
-}
-
-SXE.removeClass = function(elm,cl) {
- if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) {
- return true;
- }
- var classNames = elm.className.split(" ");
- var newClassNames = "";
- for (var x = 0, cnl = classNames.length; x < cnl; x++) {
- if (classNames[x] != cl) {
- newClassNames += (classNames[x] + " ");
- }
- }
- elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end
-}
-
-SXE.addClass = function(elm,cl) {
- if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl;
- return true;
-}
-
-function insertInlineElement(en) {
- var ed = tinyMCEPopup.editor, dom = ed.dom;
-
- ed.getDoc().execCommand('FontName', false, 'mceinline');
- tinymce.each(dom.select('span,font'), function(n) {
- if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline')
- dom.replace(dom.create(en, {'data-mce-new' : 1}), n, 1);
- });
-}
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js
deleted file mode 100644
index c4addfb01..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * ins.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-function init() {
- SXE.initElementDialog('ins');
- if (SXE.currentAction == "update") {
- setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime'));
- setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite'));
- SXE.showRemoveButton();
- }
-}
-
-function setElementAttribs(elm) {
- setAllCommonAttribs(elm);
- setAttrib(elm, 'datetime');
- setAttrib(elm, 'cite');
- elm.removeAttribute('data-mce-new');
-}
-
-function insertIns() {
- var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'INS');
-
- if (elm == null) {
- var s = SXE.inst.selection.getContent();
- if(s.length > 0) {
- insertInlineElement('ins');
- var elementArray = SXE.inst.dom.select('ins[data-mce-new]');
- for (var i=0; i<elementArray.length; i++) {
- var elm = elementArray[i];
- setElementAttribs(elm);
- }
- }
- } else {
- setElementAttribs(elm);
- }
- tinyMCEPopup.editor.nodeChanged();
- tinyMCEPopup.execCommand('mceEndUndoLevel');
- tinyMCEPopup.close();
-}
-
-function removeIns() {
- SXE.removeElement('ins');
- tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js
deleted file mode 100644
index c4569f85e..000000000
--- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.xhtmlxtras_dlg',{"attribs_title":"Insert/Edit Attributes","option_rtl":"Right to Left","option_ltr":"Left to Right","insert_date":"Insert Current Date/Time",remove:"Remove","title_cite_element":"Citation Element","title_abbr_element":"Abbreviation Element","title_acronym_element":"Acronym Element","title_del_element":"Deletion Element","title_ins_element":"Insertion Element","fieldset_events_tab":"Element Events","fieldset_attrib_tab":"Element Attributes","fieldset_general_tab":"General Settings","events_tab":"Events","attrib_tab":"Attributes","general_tab":"General","attribute_attrib_tab":"Attributes","attribute_events_tab":"Events","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Language","attribute_option_rtl":"Right to Left","attribute_option_ltr":"Left to Right","attribute_label_langdir":"Text Direction","attribute_label_datetime":"Date/Time","attribute_label_cite":"Cite","attribute_label_style":"Style","attribute_label_class":"Class","attribute_label_id":"ID","attribute_label_title":"Title"}); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/about.htm b/library/tinymce/jscripts/tiny_mce/themes/advanced/about.htm
deleted file mode 100644
index 7a97cb715..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/about.htm
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advanced_dlg.about_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="js/about.js"></script>
-</head>
-<body id="about" style="display: none">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.about_general}</a></span></li>
- <li id="help_tab" style="display:none" aria-hidden="true" aria-controls="help_panel"><span><a href="javascript:mcTabs.displayTab('help_tab','help_panel');" onmousedown="return false;">{#advanced_dlg.about_help}</a></span></li>
- <li id="plugins_tab" aria-controls="plugins_panel"><span><a href="javascript:mcTabs.displayTab('plugins_tab','plugins_panel');" onmousedown="return false;">{#advanced_dlg.about_plugins}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <h3>{#advanced_dlg.about_title}</h3>
- <p>Version: <span id="version"></span> (<span id="date"></span>)</p>
- <p>TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under <a href="../../license.txt" target="_blank">LGPL</a>
- by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.</p>
- <p>Copyright &copy; 2003-2008, <a href="http://www.moxiecode.com" target="_blank">Moxiecode Systems AB</a>, All rights reserved.</p>
- <p>For more information about this software visit the <a href="http://tinymce.moxiecode.com" target="_blank">TinyMCE website</a>.</p>
-
- <div id="buttoncontainer">
- <a href="http://www.moxiecode.com" target="_blank"><img src="http://tinymce.moxiecode.com/images/gotmoxie.png" alt="Got Moxie?" border="0" /></a>
- </div>
- </div>
-
- <div id="plugins_panel" class="panel">
- <div id="pluginscontainer">
- <h3>{#advanced_dlg.about_loaded}</h3>
-
- <div id="plugintablecontainer">
- </div>
-
- <p>&nbsp;</p>
- </div>
- </div>
-
- <div id="help_panel" class="panel noscroll" style="overflow: visible;">
- <div id="iframecontainer"></div>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="button" id="cancel" name="cancel" value="{#close}" onclick="tinyMCEPopup.close();" />
- </div>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm b/library/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm
deleted file mode 100644
index 75c93b799..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advanced_dlg.anchor_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/anchor.js"></script>
-</head>
-<body style="display: none" role="application" aria-labelledby="app_title">
-<form onsubmit="AnchorDialog.update();return false;" action="#">
- <table border="0" cellpadding="4" cellspacing="0" role="presentation">
- <tr>
- <td colspan="2" class="title" id="app_title">{#advanced_dlg.anchor_title}</td>
- </tr>
- <tr>
- <td class="nowrap"><label for="anchorName">{#advanced_dlg.anchor_name}:</label></td>
- <td><input name="anchorName" type="text" class="mceFocus" id="anchorName" value="" style="width: 200px" aria-required="true" /></td>
- </tr>
- </table>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm b/library/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm
deleted file mode 100644
index d4b6bdfb7..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advanced_dlg.charmap_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/charmap.js"></script>
-</head>
-<body id="charmap" style="display:none" role="application">
-<table align="center" border="0" cellspacing="0" cellpadding="2" role="presentation">
- <tr>
- <td colspan="2" class="title" ><label for="charmapView" id="charmap_label">{#advanced_dlg.charmap_title}</label></td>
- </tr>
- <tr>
- <td id="charmapView" rowspan="2" align="left" valign="top">
- <!-- Chars will be rendered here -->
- </td>
- <td width="100" align="center" valign="top">
- <table border="0" cellpadding="0" cellspacing="0" width="100" style="height:100px" role="presentation">
- <tr>
- <td id="codeV">&nbsp;</td>
- </tr>
- <tr>
- <td id="codeN">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td valign="bottom" style="padding-bottom: 3px;">
- <table width="100" align="center" border="0" cellpadding="2" cellspacing="0" role="presentation">
- <tr>
- <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;"><label for="codeA">HTML-Code</label></td>
- </tr>
- <tr>
- <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeA" align="center">&nbsp;</td>
- </tr>
- <tr>
- <td style="font-size: 1px;">&nbsp;</td>
- </tr>
- <tr>
- <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;"><label for="codeB">NUM-Code</label></td>
- </tr>
- <tr>
- <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeB" align="center">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td colspan="2" id="charmap_usage">{#advanced_dlg.charmap_usage}</td>
- </tr>
-
-</table>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm b/library/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm
deleted file mode 100644
index b625531a6..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advanced_dlg.colorpicker_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="js/color_picker.js"></script>
-</head>
-<body id="colorpicker" style="display: none" role="application" aria-labelledby="app_label">
- <span class="mceVoiceLabel" id="app_label" style="display:none;">{#advanced_dlg.colorpicker_title}</span>
-<form onsubmit="insertAction();return false" action="#">
- <div class="tabs">
- <ul>
- <li id="picker_tab" aria-controls="picker_panel" class="current"><span><a href="javascript:mcTabs.displayTab('picker_tab','picker_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_picker_tab}</a></span></li>
- <li id="rgb_tab" aria-controls="rgb_panel"><span><a href="javascript:;" onclick="mcTabs.displayTab('rgb_tab','rgb_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_palette_tab}</a></span></li>
- <li id="named_tab" aria-controls="named_panel"><span><a href="javascript:;" onclick="javascript:mcTabs.displayTab('named_tab','named_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_named_tab}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="picker_panel" class="panel current">
- <fieldset>
- <legend>{#advanced_dlg.colorpicker_picker_title}</legend>
- <div id="picker">
- <img id="colors" src="img/colorpicker.jpg" onclick="computeColor(event)" onmousedown="isMouseDown = true;return false;" onmouseup="isMouseDown = false;" onmousemove="if (isMouseDown && isMouseOver) computeColor(event); return false;" onmouseover="isMouseOver=true;" onmouseout="isMouseOver=false;" alt="" />
-
- <div id="light">
- <!-- Will be filled with divs -->
- </div>
-
- <br style="clear: both" />
- </div>
- </fieldset>
- </div>
-
- <div id="rgb_panel" class="panel">
- <fieldset>
- <legend id="webcolors_title">{#advanced_dlg.colorpicker_palette_title}</legend>
- <div id="webcolors">
- <!-- Gets filled with web safe colors-->
- </div>
-
- <br style="clear: both" />
- </fieldset>
- </div>
-
- <div id="named_panel" class="panel">
- <fieldset id="named_picker_label">
- <legend id="named_title">{#advanced_dlg.colorpicker_named_title}</legend>
- <div id="namedcolors" role="listbox" tabindex="0" aria-labelledby="named_picker_label">
- <!-- Gets filled with named colors-->
- </div>
-
- <br style="clear: both" />
-
- <div id="colornamecontainer">
- {#advanced_dlg.colorpicker_name} <span id="colorname"></span>
- </div>
- </fieldset>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#apply}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();"/>
- <div id="preview_wrapper"><div id="previewblock"><label for="color">{#advanced_dlg.colorpicker_color}</label> <input id="color" type="text" size="8" class="text mceFocus" aria-required="true" /></div><span id="preview"></span></div>
- </div>
-</form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js
deleted file mode 100644
index 5e9deec89..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(h){var i=h.DOM,g=h.dom.Event,c=h.extend,f=h.each,a=h.util.Cookie,e,d=h.explode;function b(m,k){var q,p=m.dom,n="",o,l;previewStyles=m.settings.preview_styles;if(previewStyles===false){return""}if(!previewStyles){previewStyles="font-family font-size font-weight text-decoration text-transform color background-color"}function j(r){return r.replace(/%(\w+)/g,"")}name=k.block||k.inline||"span";q=p.create(name);f(k.styles,function(s,r){s=j(s);if(s){p.setStyle(q,r,s)}});f(k.attributes,function(s,r){s=j(s);if(s){p.setAttrib(q,r,s)}});f(k.classes,function(r){r=j(r);if(!p.hasClass(q,r)){p.addClass(q,r)}});p.setStyles(q,{position:"absolute",left:-65535});m.getBody().appendChild(q);o=p.getStyle(m.getBody(),"fontSize",true);o=/px$/.test(o)?parseInt(o,10):0;f(previewStyles.split(" "),function(r){var s=p.getStyle(q,r,true);if(r=="background-color"&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(s)){s=p.getStyle(m.getBody(),r,true);if(p.toHex(s).toLowerCase()=="#ffffff"){return}}if(r=="font-size"){if(/em|%$/.test(s)){if(o===0){return}s=parseFloat(s,10)/(/%$/.test(s)?100:1);s=(s*o)+"px"}}n+=r+":"+s+";"});p.remove(q);return n}h.ThemeManager.requireLangPack("advanced");h.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(k,l){var m=this,n,j,p;m.editor=k;m.url=l;m.onResolveName=new h.util.Dispatcher(this);k.forcedHighContrastMode=k.settings.detect_highcontrast&&m._isHighContrast();k.settings.skin=k.forcedHighContrastMode?"highcontrast":k.settings.skin;m.settings=n=c({theme_advanced_path:true,theme_advanced_toolbar_location:"bottom",theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",theme_advanced_font_selector:"span",theme_advanced_show_current_color:0,readonly:k.settings.readonly},k.settings);if(!n.font_size_style_values){n.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(h.is(n.theme_advanced_font_sizes,"string")){n.font_size_style_values=h.explode(n.font_size_style_values);n.font_size_classes=h.explode(n.font_size_classes||"");p={};k.settings.theme_advanced_font_sizes=n.theme_advanced_font_sizes;f(k.getParam("theme_advanced_font_sizes","","hash"),function(r,q){var o;if(q==r&&r>=1&&r<=7){q=r+" ("+m.sizes[r-1]+"pt)";o=n.font_size_classes[r-1];r=n.font_size_style_values[r-1]||(m.sizes[r-1]+"pt")}if(/^\s*\./.test(r)){o=r.replace(/\./g,"")}p[q]=o?{"class":o}:{fontSize:r}});n.theme_advanced_font_sizes=p}if((j=n.theme_advanced_path_location)&&j!="none"){n.theme_advanced_statusbar_location=n.theme_advanced_path_location}if(n.theme_advanced_statusbar_location=="none"){n.theme_advanced_statusbar_location=0}if(k.settings.content_css!==false){k.contentCSS.push(k.baseURI.toAbsolute(l+"/skins/"+k.settings.skin+"/content.css"))}k.onInit.add(function(){if(!k.settings.readonly){k.onNodeChange.add(m._nodeChanged,m);k.onKeyUp.add(m._updateUndoStatus,m);k.onMouseUp.add(m._updateUndoStatus,m);k.dom.bind(k.dom.getRoot(),"dragend",function(){m._updateUndoStatus(k)})}});k.onSetProgressState.add(function(r,o,s){var t,u=r.id,q;if(o){m.progressTimer=setTimeout(function(){t=r.getContainer();t=t.insertBefore(i.create("DIV",{style:"position:relative"}),t.firstChild);q=i.get(r.id+"_tbl");i.add(t,"div",{id:u+"_blocker","class":"mceBlocker",style:{width:q.clientWidth+2,height:q.clientHeight+2}});i.add(t,"div",{id:u+"_progress","class":"mceProgress",style:{left:q.clientWidth/2,top:q.clientHeight/2}})},s||0)}else{i.remove(u+"_blocker");i.remove(u+"_progress");clearTimeout(m.progressTimer)}});i.loadCSS(n.editor_css?k.documentBaseURI.toAbsolute(n.editor_css):l+"/skins/"+k.settings.skin+"/ui.css");if(n.skin_variant){i.loadCSS(l+"/skins/"+k.settings.skin+"/ui_"+n.skin_variant+".css")}},_isHighContrast:function(){var j,k=i.add(i.getRoot(),"div",{style:"background-color: rgb(171,239,86);"});j=(i.getStyle(k,"background-color",true)+"").toLowerCase().replace(/ /g,"");i.remove(k);return j!="rgb(171,239,86)"&&j!="#abef56"},createControl:function(m,j){var k,l;if(l=j.createControl(m)){return l}switch(m){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((k=this.controls[m])){return j.createButton(m,{title:"advanced."+k[0],cmd:k[1],ui:k[2],value:k[3]})}},execCommand:function(l,k,m){var j=this["_"+l];if(j){j.call(this,k,m);return true}return false},_importClasses:function(l){var j=this.editor,k=j.controlManager.get("styleselect");if(k.getLength()==0){f(j.dom.getClasses(),function(q,m){var p="style_"+m,n;n={inline:"span",attributes:{"class":q["class"]},selector:"*"};j.formatter.register(p,n);k.add(q["class"],p,{style:function(){return b(j,n)}})})}},_createStyleSelect:function(o){var l=this,j=l.editor,k=j.controlManager,m;m=k.createListBox("styleselect",{title:"advanced.style_select",onselect:function(q){var r,n=[],p;f(m.items,function(s){n.push(s.value)});j.focus();j.undoManager.add();r=j.formatter.matchAll(n);h.each(r,function(s){if(!q||s==q){if(s){j.formatter.remove(s)}p=true}});if(!p){j.formatter.apply(q)}j.undoManager.add();j.nodeChanged();return false}});j.onPreInit.add(function(){var p=0,n=j.getParam("style_formats");if(n){f(n,function(q){var r,s=0;f(q,function(){s++});if(s>1){r=q.name=q.name||"style_"+(p++);j.formatter.register(r,q);m.add(q.title,r,{style:function(){return b(j,q)}})}else{m.add(q.title)}})}else{f(j.getParam("theme_advanced_styles","","hash"),function(t,s){var r,q;if(t){r="style_"+(p++);q={inline:"span",classes:t,selector:"*"};j.formatter.register(r,q);m.add(l.editor.translate(s),r,{style:function(){return b(j,q)}})}})}});if(m.getLength()==0){m.onPostRender.add(function(p,q){if(!m.NativeListBox){g.add(q.id+"_text","focus",l._importClasses,l);g.add(q.id+"_text","mousedown",l._importClasses,l);g.add(q.id+"_open","focus",l._importClasses,l);g.add(q.id+"_open","mousedown",l._importClasses,l)}else{g.add(q.id,"focus",l._importClasses,l)}})}return m},_createFontSelect:function(){var l,k=this,j=k.editor;l=j.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(m){var n=l.items[l.selectedIndex];if(!m&&n){j.execCommand("FontName",false,n.value);return}j.execCommand("FontName",false,m);l.select(function(o){return m==o});if(n&&n.value==m){l.select(null)}return false}});if(l){f(j.getParam("theme_advanced_fonts",k.settings.theme_advanced_fonts,"hash"),function(n,m){l.add(j.translate(m),n,{style:n.indexOf("dings")==-1?"font-family:"+n:""})})}return l},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(o){var p=n.items[n.selectedIndex];if(!o&&p){p=p.value;if(p["class"]){k.formatter.toggle("fontsize_class",{value:p["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,p.fontSize)}return}if(o["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:o["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,o.fontSize)}n.select(function(q){return o==q});if(p&&(p.value.fontSize==o.fontSize||p.value["class"]&&p.value["class"]==o["class"])){n.select(null)}return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(p,o){var q=p.fontSize;if(q>=1&&q<=7){q=m.sizes[parseInt(q)-1]+"pt"}n.add(o,p,{style:"font-size:"+q,"class":"mceFontSize"+(l++)+(" "+(p["class"]||""))})})}return n},_createBlockFormats:function(){var l,j={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},k=this;l=k.editor.controlManager.createListBox("formatselect",{title:"advanced.block",onselect:function(m){k.editor.execCommand("FormatBlock",false,m);return false}});if(l){f(k.editor.getParam("theme_advanced_blockformats",k.settings.theme_advanced_blockformats,"hash"),function(n,m){l.add(k.editor.translate(m!=n?m:j[n]),n,{"class":"mce_formatPreview mce_"+n,style:function(){return b(k.editor,{block:n})}})})}return l},_createForeColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_text_colors){m.colors=j}if(l.theme_advanced_default_foreground_color){m.default_color=l.theme_advanced_default_foreground_color}m.title="advanced.forecolor_desc";m.cmd="ForeColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("forecolor",m);return n},_createBackColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_background_colors){m.colors=j}if(l.theme_advanced_default_background_color){m.default_color=l.theme_advanced_default_background_color}m.title="advanced.backcolor_desc";m.cmd="HiliteColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("backcolor",m);return n},renderUI:function(l){var q,m,r,w=this,u=w.editor,x=w.settings,v,k,j;if(u.settings){u.settings.aria_label=x.aria_label+u.getLang("advanced.help_shortcut")}q=k=i.create("span",{role:"application","aria-labelledby":u.id+"_voice",id:u.id+"_parent","class":"mceEditor "+u.settings.skin+"Skin"+(x.skin_variant?" "+u.settings.skin+"Skin"+w._ufirst(x.skin_variant):"")+(u.settings.directionality=="rtl"?" mceRtl":"")});i.add(q,"span",{"class":"mceVoiceLabel",style:"display:none;",id:u.id+"_voice"},x.aria_label);if(!i.boxModel){q=i.add(q,"div",{"class":"mceOldBoxModel"})}q=v=i.add(q,"table",{role:"presentation",id:u.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});q=r=i.add(q,"tbody");switch((x.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":m=w._rowLayout(x,r,l);break;case"customlayout":m=u.execCallback("theme_advanced_custom_layout",x,r,l,k);break;default:m=w._simpleLayout(x,r,l,k)}q=l.targetNode;j=v.rows;i.addClass(j[0],"mceFirst");i.addClass(j[j.length-1],"mceLast");f(i.select("tr",r),function(o){i.addClass(o.firstChild,"mceFirst");i.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(i.get(x.theme_advanced_toolbar_container)){i.get(x.theme_advanced_toolbar_container).appendChild(k)}else{i.insertAfter(k,q)}g.add(u.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){w._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return false}});if(!u.getParam("accessibility_focus")){g.add(i.add(k,"a",{href:"#"},"<!-- IE -->"),"focus",function(){tinyMCE.get(u.id).focus()})}if(x.theme_advanced_toolbar_location=="external"){l.deltaHeight=0}w.deltaHeight=l.deltaHeight;l.targetNode=null;u.onKeyDown.add(function(p,n){var s=121,o=122;if(n.altKey){if(n.keyCode===s){if(h.isWebKit){window.focus()}w.toolbarGroup.focus();return g.cancel(n)}else{if(n.keyCode===o){i.get(p.id+"_path_row").focus();return g.cancel(n)}}}});u.addShortcut("alt+0","","mceShortcuts",w);return{iframeContainer:m,editorContainer:u.id+"_parent",sizeContainer:v,deltaHeight:l.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:h.majorVersion+"."+h.minorVersion}},resizeBy:function(j,k){var l=i.get(this.editor.id+"_ifr");this.resizeTo(l.clientWidth+j,l.clientHeight+k)},resizeTo:function(j,n,l){var k=this.editor,m=this.settings,o=i.get(k.id+"_tbl"),p=i.get(k.id+"_ifr");j=Math.max(m.theme_advanced_resizing_min_width||100,j);n=Math.max(m.theme_advanced_resizing_min_height||100,n);j=Math.min(m.theme_advanced_resizing_max_width||65535,j);n=Math.min(m.theme_advanced_resizing_max_height||65535,n);i.setStyle(o,"height","");i.setStyle(p,"height",n);if(m.theme_advanced_resize_horizontal){i.setStyle(o,"width","");i.setStyle(p,"width",j);if(j<o.clientWidth){j=o.clientWidth;i.setStyle(p,"width",o.clientWidth)}}if(l&&m.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+k.id+"_size",{cw:j,ch:n})}},destroy:function(){var j=this.editor.id;g.clear(j+"_resize");g.clear(j+"_path_row");g.clear(j+"_external_close")},_simpleLayout:function(z,u,l,j){var y=this,v=y.editor,w=z.theme_advanced_toolbar_location,q=z.theme_advanced_statusbar_location,m,k,r,x;if(z.readonly){m=i.add(u,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"});return k}if(w=="top"){y._addToolbars(u,l)}if(w=="external"){m=x=i.create("div",{style:"position:relative"});m=i.add(m,"div",{id:v.id+"_external","class":"mceExternalToolbar"});i.add(m,"a",{id:v.id+"_external_close",href:"javascript:;","class":"mceExternalClose"});m=i.add(m,"table",{id:v.id+"_tblext",cellSpacing:0,cellPadding:0});r=i.add(m,"tbody");if(j.firstChild.className=="mceOldBoxModel"){j.firstChild.appendChild(x)}else{j.insertBefore(x,j.firstChild)}y._addToolbars(r,l);v.onMouseUp.add(function(){var o=i.get(v.id+"_external");i.show(o);i.hide(e);var n=g.add(v.id+"_external_close","click",function(){i.hide(v.id+"_external");g.remove(v.id+"_external_close","click",n)});i.show(o);i.setStyle(o,"top",0-i.getRect(v.id+"_tblext").h-1);i.hide(o);i.show(o);o.style.filter="";e=v.id+"_external";o=null})}if(q=="top"){y._addStatusBar(u,l)}if(!z.theme_advanced_toolbar_container){m=i.add(u,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"})}if(w=="bottom"){y._addToolbars(u,l)}if(q=="bottom"){y._addStatusBar(u,l)}return k},_rowLayout:function(x,p,l){var w=this,q=w.editor,v,y,j=q.controlManager,m,k,u,r;v=x.theme_advanced_containers_default_class||"";y=x.theme_advanced_containers_default_align||"center";f(d(x.theme_advanced_containers||""),function(s,o){var n=x["theme_advanced_container_"+s]||"";switch(s.toLowerCase()){case"mceeditor":m=i.add(p,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"});break;case"mceelementpath":w._addStatusBar(p,l);break;default:r=(x["theme_advanced_container_"+s+"_align"]||y).toLowerCase();r="mce"+w._ufirst(r);m=i.add(i.add(p,"tr"),"td",{"class":"mceToolbar "+(x["theme_advanced_container_"+s+"_class"]||v)+" "+r||y});u=j.createToolbar("toolbar"+o);w._addControls(n,u);i.setHTML(m,u.renderHTML());l.deltaHeight-=x.theme_advanced_row_height}});return k},_addControls:function(k,j){var l=this,m=l.settings,n,o=l.editor.controlManager;if(m.theme_advanced_disable&&!l._disabled){n={};f(d(m.theme_advanced_disable),function(p){n[p]=1});l._disabled=n}else{n=l._disabled}f(d(k),function(q){var p;if(n&&n[q]){return}if(q=="tablecontrols"){f(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(r){r=l.createControl(r,o);if(r){j.add(r)}});return}p=l.createControl(q,o);if(p){j.add(p)}})},_addToolbars:function(y,k){var B=this,q,p,u=B.editor,C=B.settings,A,j=u.controlManager,w,l,r=[],z,x,m=false;x=j.createToolbarGroup("toolbargroup",{name:u.getLang("advanced.toolbar"),tab_focus_toolbar:u.getParam("theme_advanced_tab_focus_toolbar")});B.toolbarGroup=x;z=C.theme_advanced_toolbar_align.toLowerCase();z="mce"+B._ufirst(z);l=i.add(i.add(y,"tr",{role:"presentation"}),"td",{"class":"mceToolbar "+z,role:"presentation"});for(q=1;(A=C["theme_advanced_buttons"+q]);q++){m=true;p=j.createToolbar("toolbar"+q,{"class":"mceToolbarRow"+q});if(C["theme_advanced_buttons"+q+"_add"]){A+=","+C["theme_advanced_buttons"+q+"_add"]}if(C["theme_advanced_buttons"+q+"_add_before"]){A=C["theme_advanced_buttons"+q+"_add_before"]+","+A}B._addControls(A,p);x.add(p);k.deltaHeight-=C.theme_advanced_row_height}if(!m){k.deltaHeight-=C.theme_advanced_row_height}r.push(x.renderHTML());r.push(i.createHTML("a",{href:"#",accesskey:"z",title:u.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+u.id+"').focus();"},"<!-- IE -->"));i.setHTML(l,r.join(""))},_addStatusBar:function(p,k){var l,w=this,q=w.editor,x=w.settings,j,u,v,m;l=i.add(p,"tr");l=m=i.add(l,"td",{"class":"mceStatusbar"});l=i.add(l,"div",{id:q.id+"_path_row",role:"group","aria-labelledby":q.id+"_path_voice"});if(x.theme_advanced_path){i.add(l,"span",{id:q.id+"_path_voice"},q.translate("advanced.path"));i.add(l,"span",{},": ")}else{i.add(l,"span",{},"&#160;")}if(x.theme_advanced_resizing){i.add(m,"a",{id:q.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize",tabIndex:"-1"});if(x.theme_advanced_resizing_use_cookie){q.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+q.id+"_size"),r=i.get(q.id+"_tbl");if(!n){return}w.resizeTo(n.cw,n.ch)})}q.onPostRender.add(function(){g.add(q.id+"_resize","click",function(n){n.preventDefault()});g.add(q.id+"_resize","mousedown",function(E){var t,r,s,o,D,A,B,G,n,F,y;function z(H){H.preventDefault();n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F)}function C(H){g.remove(i.doc,"mousemove",t);g.remove(q.getDoc(),"mousemove",r);g.remove(i.doc,"mouseup",s);g.remove(q.getDoc(),"mouseup",o);n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F,true)}E.preventDefault();D=E.screenX;A=E.screenY;y=i.get(w.editor.id+"_ifr");B=n=y.clientWidth;G=F=y.clientHeight;t=g.add(i.doc,"mousemove",z);r=g.add(q.getDoc(),"mousemove",z);s=g.add(i.doc,"mouseup",C);o=g.add(q.getDoc(),"mouseup",C)})})}k.deltaHeight-=21;l=p=null},_updateUndoStatus:function(k){var j=k.controlManager,l=k.undoManager;j.setDisabled("undo",!l.hasUndo()&&!l.typing);j.setDisabled("redo",!l.hasRedo())},_nodeChanged:function(o,u,E,r,F){var z=this,D,G=0,y,H,A=z.settings,x,l,w,C,m,k,j;h.each(z.stateControls,function(n){u.setActive(n,o.queryCommandState(z.controls[n][1]))});function q(p){var s,n=F.parents,t=p;if(typeof(p)=="string"){t=function(v){return v.nodeName==p}}for(s=0;s<n.length;s++){if(t(n[s])){return n[s]}}}u.setActive("visualaid",o.hasVisual);z._updateUndoStatus(o);u.setDisabled("outdent",!o.queryCommandState("Outdent"));D=q("A");if(H=u.get("link")){if(!D||!D.name){H.setDisabled(!D&&r);H.setActive(!!D)}}if(H=u.get("unlink")){H.setDisabled(!D&&r);H.setActive(!!D&&!D.name)}if(H=u.get("anchor")){H.setActive(!r&&!!D&&D.name)}D=q("IMG");if(H=u.get("image")){H.setActive(!r&&!!D&&E.className.indexOf("mceItem")==-1)}if(H=u.get("styleselect")){z._importClasses();k=[];f(H.items,function(n){k.push(n.value)});j=o.formatter.matchAll(k);H.select(j[0]);h.each(j,function(p,n){if(n>0){H.mark(p)}})}if(H=u.get("formatselect")){D=q(o.dom.isBlock);if(D){H.select(D.nodeName.toLowerCase())}}q(function(p){if(p.nodeName==="SPAN"){if(!x&&p.className){x=p.className}}if(o.dom.is(p,A.theme_advanced_font_selector)){if(!l&&p.style.fontSize){l=p.style.fontSize}if(!w&&p.style.fontFamily){w=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}if(!C&&p.style.color){C=p.style.color}if(!m&&p.style.backgroundColor){m=p.style.backgroundColor}}return false});if(H=u.get("fontselect")){H.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==w})}if(H=u.get("fontsizeselect")){if(A.theme_advanced_runtime_fontsize&&!l&&!x){l=o.dom.getStyle(E,"fontSize",true)}H.select(function(n){if(n.fontSize&&n.fontSize===l){return true}if(n["class"]&&n["class"]===x){return true}})}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_path&&A.theme_advanced_statusbar_location){D=i.get(o.id+"_path")||i.add(o.id+"_path_row","span",{id:o.id+"_path"});if(z.statusKeyboardNavigation){z.statusKeyboardNavigation.destroy();z.statusKeyboardNavigation=null}i.setHTML(D,"");q(function(I){var p=I.nodeName.toLowerCase(),s,v,t="";if(I.nodeType!=1||p==="br"||I.getAttribute("data-mce-bogus")||i.hasClass(I,"mceItemHidden")||i.hasClass(I,"mceItemRemoved")){return}if(h.isIE&&I.scopeName!=="HTML"&&I.scopeName){p=I.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(y=i.getAttrib(I,"src")){t+="src: "+y+" "}break;case"a":if(y=i.getAttrib(I,"name")){t+="name: "+y+" ";p+="#"+y}if(y=i.getAttrib(I,"href")){t+="href: "+y+" "}break;case"font":if(y=i.getAttrib(I,"face")){t+="font: "+y+" "}if(y=i.getAttrib(I,"size")){t+="size: "+y+" "}if(y=i.getAttrib(I,"color")){t+="color: "+y+" "}break;case"span":if(y=i.getAttrib(I,"style")){t+="style: "+y+" "}break}if(y=i.getAttrib(I,"id")){t+="id: "+y+" "}if(y=I.className){y=y.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g,"");if(y){t+="class: "+y+" ";if(o.dom.isBlock(I)||p=="img"||p=="span"){p+="."+y}}}p=p.replace(/(html:)/g,"");p={name:p,node:I,title:t};z.onResolveName.dispatch(z,p);t=p.title;p=p.name;v=i.create("a",{href:"javascript:;",role:"button",onmousedown:"return false;",title:t,"class":"mcePath_"+(G++)},p);if(D.hasChildNodes()){D.insertBefore(i.create("span",{"aria-hidden":"true"},"\u00a0\u00bb "),D.firstChild);D.insertBefore(v,D.firstChild)}else{D.appendChild(v)}},o.getBody());if(i.select("a",D).length>0){z.statusKeyboardNavigation=new h.ui.KeyboardNavigation({root:o.id+"_path_row",items:i.select("a",D),excludeFromTabOrder:true,onCancel:function(){o.focus()}},i)}}},_sel:function(j){this.editor.execCommand("mceSelectNodeDepth",false,j)},_mceInsertAnchor:function(l,k){var j=this.editor;j.windowManager.open({url:this.url+"/anchor.htm",width:320+parseInt(j.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(j.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var j=this.editor;j.windowManager.open({url:this.url+"/charmap.htm",width:550+parseInt(j.getLang("advanced.charmap_delta_width",0)),height:265+parseInt(j.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var j=this.editor;j.windowManager.open({url:this.url+"/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceShortcuts:function(){var j=this.editor;j.windowManager.open({url:this.url+"/shortcuts.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(l,k){var j=this.editor;k=k||{};j.windowManager.open({url:this.url+"/color_picker.htm",width:375+parseInt(j.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(j.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:k.color,func:k.func,theme_url:this.url})},_mceCodeEditor:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/source_editor.htm",width:parseInt(j.getParam("theme_advanced_source_editor_width",720)),height:parseInt(j.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(k,l){var j=this.editor;if(j.dom.getAttrib(j.selection.getNode(),"class","").indexOf("mceItem")!=-1){return}j.windowManager.open({url:this.url+"/image.htm",width:355+parseInt(j.getLang("advanced.image_delta_width",0)),height:275+parseInt(j.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/link.htm",width:310+parseInt(j.getLang("advanced.link_delta_width",0)),height:200+parseInt(j.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var j=this.editor;j.windowManager.confirm("advanced.newdocument",function(k){if(k){j.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var j=this;this._mceColorPicker(0,{color:j.fgColor,func:function(k){j.fgColor=k;j.editor.execCommand("ForeColor",false,k)}})},_mceBackColor:function(){var j=this;this._mceColorPicker(0,{color:j.bgColor,func:function(k){j.bgColor=k;j.editor.execCommand("HiliteColor",false,k)}})},_ufirst:function(j){return j.substring(0,1).toUpperCase()+j.substring(1)}});h.ThemeManager.add("advanced",h.themes.AdvancedTheme)}(tinymce)); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js
deleted file mode 100644
index 61fe53707..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js
+++ /dev/null
@@ -1,1481 +0,0 @@
-/**
- * editor_template_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function(tinymce) {
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode;
-
- // Generates a preview for a format
- function getPreviewCss(ed, fmt) {
- var previewElm, dom = ed.dom, previewCss = '', parentFontSize, previewStylesName;
-
- previewStyles = ed.settings.preview_styles;
-
- // No preview forced
- if (previewStyles === false)
- return '';
-
- // Default preview
- if (!previewStyles)
- previewStyles = 'font-family font-size font-weight text-decoration text-transform color background-color';
-
- // Removes any variables since these can't be previewed
- function removeVars(val) {
- return val.replace(/%(\w+)/g, '');
- };
-
- // Create block/inline element to use for preview
- name = fmt.block || fmt.inline || 'span';
- previewElm = dom.create(name);
-
- // Add format styles to preview element
- each(fmt.styles, function(value, name) {
- value = removeVars(value);
-
- if (value)
- dom.setStyle(previewElm, name, value);
- });
-
- // Add attributes to preview element
- each(fmt.attributes, function(value, name) {
- value = removeVars(value);
-
- if (value)
- dom.setAttrib(previewElm, name, value);
- });
-
- // Add classes to preview element
- each(fmt.classes, function(value) {
- value = removeVars(value);
-
- if (!dom.hasClass(previewElm, value))
- dom.addClass(previewElm, value);
- });
-
- // Add the previewElm outside the visual area
- dom.setStyles(previewElm, {position: 'absolute', left: -0xFFFF});
- ed.getBody().appendChild(previewElm);
-
- // Get parent container font size so we can compute px values out of em/% for older IE:s
- parentFontSize = dom.getStyle(ed.getBody(), 'fontSize', true);
- parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0;
-
- each(previewStyles.split(' '), function(name) {
- var value = dom.getStyle(previewElm, name, true);
-
- // If background is transparent then check if the body has a background color we can use
- if (name == 'background-color' && /transparent|rgba\s*\([^)]+,\s*0\)/.test(value)) {
- value = dom.getStyle(ed.getBody(), name, true);
-
- // Ignore white since it's the default color, not the nicest fix
- if (dom.toHex(value).toLowerCase() == '#ffffff') {
- return;
- }
- }
-
- // Old IE won't calculate the font size so we need to do that manually
- if (name == 'font-size') {
- if (/em|%$/.test(value)) {
- if (parentFontSize === 0) {
- return;
- }
-
- // Convert font size from em/% to px
- value = parseFloat(value, 10) / (/%$/.test(value) ? 100 : 1);
- value = (value * parentFontSize) + 'px';
- }
- }
-
- previewCss += name + ':' + value + ';';
- });
-
- dom.remove(previewElm);
-
- return previewCss;
- };
-
- // Tell it to load theme specific language pack(s)
- tinymce.ThemeManager.requireLangPack('advanced');
-
- tinymce.create('tinymce.themes.AdvancedTheme', {
- sizes : [8, 10, 12, 14, 18, 24, 36],
-
- // Control name lookup, format: title, command
- controls : {
- bold : ['bold_desc', 'Bold'],
- italic : ['italic_desc', 'Italic'],
- underline : ['underline_desc', 'Underline'],
- strikethrough : ['striketrough_desc', 'Strikethrough'],
- justifyleft : ['justifyleft_desc', 'JustifyLeft'],
- justifycenter : ['justifycenter_desc', 'JustifyCenter'],
- justifyright : ['justifyright_desc', 'JustifyRight'],
- justifyfull : ['justifyfull_desc', 'JustifyFull'],
- bullist : ['bullist_desc', 'InsertUnorderedList'],
- numlist : ['numlist_desc', 'InsertOrderedList'],
- outdent : ['outdent_desc', 'Outdent'],
- indent : ['indent_desc', 'Indent'],
- cut : ['cut_desc', 'Cut'],
- copy : ['copy_desc', 'Copy'],
- paste : ['paste_desc', 'Paste'],
- undo : ['undo_desc', 'Undo'],
- redo : ['redo_desc', 'Redo'],
- link : ['link_desc', 'mceLink'],
- unlink : ['unlink_desc', 'unlink'],
- image : ['image_desc', 'mceImage'],
- cleanup : ['cleanup_desc', 'mceCleanup'],
- help : ['help_desc', 'mceHelp'],
- code : ['code_desc', 'mceCodeEditor'],
- hr : ['hr_desc', 'InsertHorizontalRule'],
- removeformat : ['removeformat_desc', 'RemoveFormat'],
- sub : ['sub_desc', 'subscript'],
- sup : ['sup_desc', 'superscript'],
- forecolor : ['forecolor_desc', 'ForeColor'],
- forecolorpicker : ['forecolor_desc', 'mceForeColor'],
- backcolor : ['backcolor_desc', 'HiliteColor'],
- backcolorpicker : ['backcolor_desc', 'mceBackColor'],
- charmap : ['charmap_desc', 'mceCharMap'],
- visualaid : ['visualaid_desc', 'mceToggleVisualAid'],
- anchor : ['anchor_desc', 'mceInsertAnchor'],
- newdocument : ['newdocument_desc', 'mceNewDocument'],
- blockquote : ['blockquote_desc', 'mceBlockQuote']
- },
-
- stateControls : ['bold', 'italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'sub', 'sup', 'blockquote'],
-
- init : function(ed, url) {
- var t = this, s, v, o;
-
- t.editor = ed;
- t.url = url;
- t.onResolveName = new tinymce.util.Dispatcher(this);
-
- ed.forcedHighContrastMode = ed.settings.detect_highcontrast && t._isHighContrast();
- ed.settings.skin = ed.forcedHighContrastMode ? 'highcontrast' : ed.settings.skin;
-
- // Default settings
- t.settings = s = extend({
- theme_advanced_path : true,
- theme_advanced_toolbar_location : 'bottom',
- theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",
- theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",
- theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap",
- theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6",
- theme_advanced_toolbar_align : "center",
- theme_advanced_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",
- theme_advanced_more_colors : 1,
- theme_advanced_row_height : 23,
- theme_advanced_resize_horizontal : 1,
- theme_advanced_resizing_use_cookie : 1,
- theme_advanced_font_sizes : "1,2,3,4,5,6,7",
- theme_advanced_font_selector : "span",
- theme_advanced_show_current_color: 0,
- readonly : ed.settings.readonly
- }, ed.settings);
-
- // Setup default font_size_style_values
- if (!s.font_size_style_values)
- s.font_size_style_values = "8pt,10pt,12pt,14pt,18pt,24pt,36pt";
-
- if (tinymce.is(s.theme_advanced_font_sizes, 'string')) {
- s.font_size_style_values = tinymce.explode(s.font_size_style_values);
- s.font_size_classes = tinymce.explode(s.font_size_classes || '');
-
- // Parse string value
- o = {};
- ed.settings.theme_advanced_font_sizes = s.theme_advanced_font_sizes;
- each(ed.getParam('theme_advanced_font_sizes', '', 'hash'), function(v, k) {
- var cl;
-
- if (k == v && v >= 1 && v <= 7) {
- k = v + ' (' + t.sizes[v - 1] + 'pt)';
- cl = s.font_size_classes[v - 1];
- v = s.font_size_style_values[v - 1] || (t.sizes[v - 1] + 'pt');
- }
-
- if (/^\s*\./.test(v))
- cl = v.replace(/\./g, '');
-
- o[k] = cl ? {'class' : cl} : {fontSize : v};
- });
-
- s.theme_advanced_font_sizes = o;
- }
-
- if ((v = s.theme_advanced_path_location) && v != 'none')
- s.theme_advanced_statusbar_location = s.theme_advanced_path_location;
-
- if (s.theme_advanced_statusbar_location == 'none')
- s.theme_advanced_statusbar_location = 0;
-
- if (ed.settings.content_css !== false)
- ed.contentCSS.push(ed.baseURI.toAbsolute(url + "/skins/" + ed.settings.skin + "/content.css"));
-
- // Init editor
- ed.onInit.add(function() {
- if (!ed.settings.readonly) {
- ed.onNodeChange.add(t._nodeChanged, t);
- ed.onKeyUp.add(t._updateUndoStatus, t);
- ed.onMouseUp.add(t._updateUndoStatus, t);
- ed.dom.bind(ed.dom.getRoot(), 'dragend', function() {
- t._updateUndoStatus(ed);
- });
- }
- });
-
- ed.onSetProgressState.add(function(ed, b, ti) {
- var co, id = ed.id, tb;
-
- if (b) {
- t.progressTimer = setTimeout(function() {
- co = ed.getContainer();
- co = co.insertBefore(DOM.create('DIV', {style : 'position:relative'}), co.firstChild);
- tb = DOM.get(ed.id + '_tbl');
-
- DOM.add(co, 'div', {id : id + '_blocker', 'class' : 'mceBlocker', style : {width : tb.clientWidth + 2, height : tb.clientHeight + 2}});
- DOM.add(co, 'div', {id : id + '_progress', 'class' : 'mceProgress', style : {left : tb.clientWidth / 2, top : tb.clientHeight / 2}});
- }, ti || 0);
- } else {
- DOM.remove(id + '_blocker');
- DOM.remove(id + '_progress');
- clearTimeout(t.progressTimer);
- }
- });
-
- DOM.loadCSS(s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : url + "/skins/" + ed.settings.skin + "/ui.css");
-
- if (s.skin_variant)
- DOM.loadCSS(url + "/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css");
- },
-
- _isHighContrast : function() {
- var actualColor, div = DOM.add(DOM.getRoot(), 'div', {'style': 'background-color: rgb(171,239,86);'});
-
- actualColor = (DOM.getStyle(div, 'background-color', true) + '').toLowerCase().replace(/ /g, '');
- DOM.remove(div);
-
- return actualColor != 'rgb(171,239,86)' && actualColor != '#abef56';
- },
-
- createControl : function(n, cf) {
- var cd, c;
-
- if (c = cf.createControl(n))
- return c;
-
- switch (n) {
- case "styleselect":
- return this._createStyleSelect();
-
- case "formatselect":
- return this._createBlockFormats();
-
- case "fontselect":
- return this._createFontSelect();
-
- case "fontsizeselect":
- return this._createFontSizeSelect();
-
- case "forecolor":
- return this._createForeColorMenu();
-
- case "backcolor":
- return this._createBackColorMenu();
- }
-
- if ((cd = this.controls[n]))
- return cf.createButton(n, {title : "advanced." + cd[0], cmd : cd[1], ui : cd[2], value : cd[3]});
- },
-
- execCommand : function(cmd, ui, val) {
- var f = this['_' + cmd];
-
- if (f) {
- f.call(this, ui, val);
- return true;
- }
-
- return false;
- },
-
- _importClasses : function(e) {
- var ed = this.editor, ctrl = ed.controlManager.get('styleselect');
-
- if (ctrl.getLength() == 0) {
- each(ed.dom.getClasses(), function(o, idx) {
- var name = 'style_' + idx, fmt;
-
- fmt = {
- inline : 'span',
- attributes : {'class' : o['class']},
- selector : '*'
- };
-
- ed.formatter.register(name, fmt);
-
- ctrl.add(o['class'], name, {
- style: function() {
- return getPreviewCss(ed, fmt);
- }
- });
- });
- }
- },
-
- _createStyleSelect : function(n) {
- var t = this, ed = t.editor, ctrlMan = ed.controlManager, ctrl;
-
- // Setup style select box
- ctrl = ctrlMan.createListBox('styleselect', {
- title : 'advanced.style_select',
- onselect : function(name) {
- var matches, formatNames = [], removedFormat;
-
- each(ctrl.items, function(item) {
- formatNames.push(item.value);
- });
-
- ed.focus();
- ed.undoManager.add();
-
- // Toggle off the current format(s)
- matches = ed.formatter.matchAll(formatNames);
- tinymce.each(matches, function(match) {
- if (!name || match == name) {
- if (match)
- ed.formatter.remove(match);
-
- removedFormat = true;
- }
- });
-
- if (!removedFormat)
- ed.formatter.apply(name);
-
- ed.undoManager.add();
- ed.nodeChanged();
-
- return false; // No auto select
- }
- });
-
- // Handle specified format
- ed.onPreInit.add(function() {
- var counter = 0, formats = ed.getParam('style_formats');
-
- if (formats) {
- each(formats, function(fmt) {
- var name, keys = 0;
-
- each(fmt, function() {keys++;});
-
- if (keys > 1) {
- name = fmt.name = fmt.name || 'style_' + (counter++);
- ed.formatter.register(name, fmt);
- ctrl.add(fmt.title, name, {
- style: function() {
- return getPreviewCss(ed, fmt);
- }
- });
- } else
- ctrl.add(fmt.title);
- });
- } else {
- each(ed.getParam('theme_advanced_styles', '', 'hash'), function(val, key) {
- var name, fmt;
-
- if (val) {
- name = 'style_' + (counter++);
- fmt = {
- inline : 'span',
- classes : val,
- selector : '*'
- };
-
- ed.formatter.register(name, fmt);
- ctrl.add(t.editor.translate(key), name, {
- style: function() {
- return getPreviewCss(ed, fmt);
- }
- });
- }
- });
- }
- });
-
- // Auto import classes if the ctrl box is empty
- if (ctrl.getLength() == 0) {
- ctrl.onPostRender.add(function(ed, n) {
- if (!ctrl.NativeListBox) {
- Event.add(n.id + '_text', 'focus', t._importClasses, t);
- Event.add(n.id + '_text', 'mousedown', t._importClasses, t);
- Event.add(n.id + '_open', 'focus', t._importClasses, t);
- Event.add(n.id + '_open', 'mousedown', t._importClasses, t);
- } else
- Event.add(n.id, 'focus', t._importClasses, t);
- });
- }
-
- return ctrl;
- },
-
- _createFontSelect : function() {
- var c, t = this, ed = t.editor;
-
- c = ed.controlManager.createListBox('fontselect', {
- title : 'advanced.fontdefault',
- onselect : function(v) {
- var cur = c.items[c.selectedIndex];
-
- if (!v && cur) {
- ed.execCommand('FontName', false, cur.value);
- return;
- }
-
- ed.execCommand('FontName', false, v);
-
- // Fake selection, execCommand will fire a nodeChange and update the selection
- c.select(function(sv) {
- return v == sv;
- });
-
- if (cur && cur.value == v) {
- c.select(null);
- }
-
- return false; // No auto select
- }
- });
-
- if (c) {
- each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) {
- c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''});
- });
- }
-
- return c;
- },
-
- _createFontSizeSelect : function() {
- var t = this, ed = t.editor, c, i = 0, cl = [];
-
- c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', onselect : function(v) {
- var cur = c.items[c.selectedIndex];
-
- if (!v && cur) {
- cur = cur.value;
-
- if (cur['class']) {
- ed.formatter.toggle('fontsize_class', {value : cur['class']});
- ed.undoManager.add();
- ed.nodeChanged();
- } else {
- ed.execCommand('FontSize', false, cur.fontSize);
- }
-
- return;
- }
-
- if (v['class']) {
- ed.focus();
- ed.undoManager.add();
- ed.formatter.toggle('fontsize_class', {value : v['class']});
- ed.undoManager.add();
- ed.nodeChanged();
- } else
- ed.execCommand('FontSize', false, v.fontSize);
-
- // Fake selection, execCommand will fire a nodeChange and update the selection
- c.select(function(sv) {
- return v == sv;
- });
-
- if (cur && (cur.value.fontSize == v.fontSize || cur.value['class'] && cur.value['class'] == v['class'])) {
- c.select(null);
- }
-
- return false; // No auto select
- }});
-
- if (c) {
- each(t.settings.theme_advanced_font_sizes, function(v, k) {
- var fz = v.fontSize;
-
- if (fz >= 1 && fz <= 7)
- fz = t.sizes[parseInt(fz) - 1] + 'pt';
-
- c.add(k, v, {'style' : 'font-size:' + fz, 'class' : 'mceFontSize' + (i++) + (' ' + (v['class'] || ''))});
- });
- }
-
- return c;
- },
-
- _createBlockFormats : function() {
- var c, fmts = {
- p : 'advanced.paragraph',
- address : 'advanced.address',
- pre : 'advanced.pre',
- h1 : 'advanced.h1',
- h2 : 'advanced.h2',
- h3 : 'advanced.h3',
- h4 : 'advanced.h4',
- h5 : 'advanced.h5',
- h6 : 'advanced.h6',
- div : 'advanced.div',
- blockquote : 'advanced.blockquote',
- code : 'advanced.code',
- dt : 'advanced.dt',
- dd : 'advanced.dd',
- samp : 'advanced.samp'
- }, t = this;
-
- c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', onselect : function(v) {
- t.editor.execCommand('FormatBlock', false, v);
- return false;
- }});
-
- if (c) {
- each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) {
- c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v, style: function() {
- return getPreviewCss(t.editor, {block: v});
- }});
- });
- }
-
- return c;
- },
-
- _createForeColorMenu : function() {
- var c, t = this, s = t.settings, o = {}, v;
-
- if (s.theme_advanced_more_colors) {
- o.more_colors_func = function() {
- t._mceColorPicker(0, {
- color : c.value,
- func : function(co) {
- c.setColor(co);
- }
- });
- };
- }
-
- if (v = s.theme_advanced_text_colors)
- o.colors = v;
-
- if (s.theme_advanced_default_foreground_color)
- o.default_color = s.theme_advanced_default_foreground_color;
-
- o.title = 'advanced.forecolor_desc';
- o.cmd = 'ForeColor';
- o.scope = this;
-
- c = t.editor.controlManager.createColorSplitButton('forecolor', o);
-
- return c;
- },
-
- _createBackColorMenu : function() {
- var c, t = this, s = t.settings, o = {}, v;
-
- if (s.theme_advanced_more_colors) {
- o.more_colors_func = function() {
- t._mceColorPicker(0, {
- color : c.value,
- func : function(co) {
- c.setColor(co);
- }
- });
- };
- }
-
- if (v = s.theme_advanced_background_colors)
- o.colors = v;
-
- if (s.theme_advanced_default_background_color)
- o.default_color = s.theme_advanced_default_background_color;
-
- o.title = 'advanced.backcolor_desc';
- o.cmd = 'HiliteColor';
- o.scope = this;
-
- c = t.editor.controlManager.createColorSplitButton('backcolor', o);
-
- return c;
- },
-
- renderUI : function(o) {
- var n, ic, tb, t = this, ed = t.editor, s = t.settings, sc, p, nl;
-
- if (ed.settings) {
- ed.settings.aria_label = s.aria_label + ed.getLang('advanced.help_shortcut');
- }
-
- // TODO: ACC Should have an aria-describedby attribute which is user-configurable to describe what this field is actually for.
- // Maybe actually inherit it from the original textara?
- n = p = DOM.create('span', {role : 'application', 'aria-labelledby' : ed.id + '_voice', id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '') + (ed.settings.directionality == "rtl" ? ' mceRtl' : '')});
- DOM.add(n, 'span', {'class': 'mceVoiceLabel', 'style': 'display:none;', id: ed.id + '_voice'}, s.aria_label);
-
- if (!DOM.boxModel)
- n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'});
-
- n = sc = DOM.add(n, 'table', {role : "presentation", id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0});
- n = tb = DOM.add(n, 'tbody');
-
- switch ((s.theme_advanced_layout_manager || '').toLowerCase()) {
- case "rowlayout":
- ic = t._rowLayout(s, tb, o);
- break;
-
- case "customlayout":
- ic = ed.execCallback("theme_advanced_custom_layout", s, tb, o, p);
- break;
-
- default:
- ic = t._simpleLayout(s, tb, o, p);
- }
-
- n = o.targetNode;
-
- // Add classes to first and last TRs
- nl = sc.rows;
- DOM.addClass(nl[0], 'mceFirst');
- DOM.addClass(nl[nl.length - 1], 'mceLast');
-
- // Add classes to first and last TDs
- each(DOM.select('tr', tb), function(n) {
- DOM.addClass(n.firstChild, 'mceFirst');
- DOM.addClass(n.childNodes[n.childNodes.length - 1], 'mceLast');
- });
-
- if (DOM.get(s.theme_advanced_toolbar_container))
- DOM.get(s.theme_advanced_toolbar_container).appendChild(p);
- else
- DOM.insertAfter(p, n);
-
- Event.add(ed.id + '_path_row', 'click', function(e) {
- e = e.target;
-
- if (e.nodeName == 'A') {
- t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1'));
- return false;
- }
- });
-/*
- if (DOM.get(ed.id + '_path_row')) {
- Event.add(ed.id + '_tbl', 'mouseover', function(e) {
- var re;
-
- e = e.target;
-
- if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) {
- re = DOM.get(ed.id + '_path_row');
- t.lastPath = re.innerHTML;
- DOM.setHTML(re, e.parentNode.title);
- }
- });
-
- Event.add(ed.id + '_tbl', 'mouseout', function(e) {
- if (t.lastPath) {
- DOM.setHTML(ed.id + '_path_row', t.lastPath);
- t.lastPath = 0;
- }
- });
- }
-*/
-
- if (!ed.getParam('accessibility_focus'))
- Event.add(DOM.add(p, 'a', {href : '#'}, '<!-- IE -->'), 'focus', function() {tinyMCE.get(ed.id).focus();});
-
- if (s.theme_advanced_toolbar_location == 'external')
- o.deltaHeight = 0;
-
- t.deltaHeight = o.deltaHeight;
- o.targetNode = null;
-
- ed.onKeyDown.add(function(ed, evt) {
- var DOM_VK_F10 = 121, DOM_VK_F11 = 122;
-
- if (evt.altKey) {
- if (evt.keyCode === DOM_VK_F10) {
- // Make sure focus is given to toolbar in Safari.
- // We can't do this in IE as it prevents giving focus to toolbar when editor is in a frame
- if (tinymce.isWebKit) {
- window.focus();
- }
- t.toolbarGroup.focus();
- return Event.cancel(evt);
- } else if (evt.keyCode === DOM_VK_F11) {
- DOM.get(ed.id + '_path_row').focus();
- return Event.cancel(evt);
- }
- }
- });
-
- // alt+0 is the UK recommended shortcut for accessing the list of access controls.
- ed.addShortcut('alt+0', '', 'mceShortcuts', t);
-
- return {
- iframeContainer : ic,
- editorContainer : ed.id + '_parent',
- sizeContainer : sc,
- deltaHeight : o.deltaHeight
- };
- },
-
- getInfo : function() {
- return {
- longname : 'Advanced theme',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- }
- },
-
- resizeBy : function(dw, dh) {
- var e = DOM.get(this.editor.id + '_ifr');
-
- this.resizeTo(e.clientWidth + dw, e.clientHeight + dh);
- },
-
- resizeTo : function(w, h, store) {
- var ed = this.editor, s = this.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr');
-
- // Boundery fix box
- w = Math.max(s.theme_advanced_resizing_min_width || 100, w);
- h = Math.max(s.theme_advanced_resizing_min_height || 100, h);
- w = Math.min(s.theme_advanced_resizing_max_width || 0xFFFF, w);
- h = Math.min(s.theme_advanced_resizing_max_height || 0xFFFF, h);
-
- // Resize iframe and container
- DOM.setStyle(e, 'height', '');
- DOM.setStyle(ifr, 'height', h);
-
- if (s.theme_advanced_resize_horizontal) {
- DOM.setStyle(e, 'width', '');
- DOM.setStyle(ifr, 'width', w);
-
- // Make sure that the size is never smaller than the over all ui
- if (w < e.clientWidth) {
- w = e.clientWidth;
- DOM.setStyle(ifr, 'width', e.clientWidth);
- }
- }
-
- // Store away the size
- if (store && s.theme_advanced_resizing_use_cookie) {
- Cookie.setHash("TinyMCE_" + ed.id + "_size", {
- cw : w,
- ch : h
- });
- }
- },
-
- destroy : function() {
- var id = this.editor.id;
-
- Event.clear(id + '_resize');
- Event.clear(id + '_path_row');
- Event.clear(id + '_external_close');
- },
-
- // Internal functions
-
- _simpleLayout : function(s, tb, o, p) {
- var t = this, ed = t.editor, lo = s.theme_advanced_toolbar_location, sl = s.theme_advanced_statusbar_location, n, ic, etb, c;
-
- if (s.readonly) {
- n = DOM.add(tb, 'tr');
- n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
- return ic;
- }
-
- // Create toolbar container at top
- if (lo == 'top')
- t._addToolbars(tb, o);
-
- // Create external toolbar
- if (lo == 'external') {
- n = c = DOM.create('div', {style : 'position:relative'});
- n = DOM.add(n, 'div', {id : ed.id + '_external', 'class' : 'mceExternalToolbar'});
- DOM.add(n, 'a', {id : ed.id + '_external_close', href : 'javascript:;', 'class' : 'mceExternalClose'});
- n = DOM.add(n, 'table', {id : ed.id + '_tblext', cellSpacing : 0, cellPadding : 0});
- etb = DOM.add(n, 'tbody');
-
- if (p.firstChild.className == 'mceOldBoxModel')
- p.firstChild.appendChild(c);
- else
- p.insertBefore(c, p.firstChild);
-
- t._addToolbars(etb, o);
-
- ed.onMouseUp.add(function() {
- var e = DOM.get(ed.id + '_external');
- DOM.show(e);
-
- DOM.hide(lastExtID);
-
- var f = Event.add(ed.id + '_external_close', 'click', function() {
- DOM.hide(ed.id + '_external');
- Event.remove(ed.id + '_external_close', 'click', f);
- });
-
- DOM.show(e);
- DOM.setStyle(e, 'top', 0 - DOM.getRect(ed.id + '_tblext').h - 1);
-
- // Fixes IE rendering bug
- DOM.hide(e);
- DOM.show(e);
- e.style.filter = '';
-
- lastExtID = ed.id + '_external';
-
- e = null;
- });
- }
-
- if (sl == 'top')
- t._addStatusBar(tb, o);
-
- // Create iframe container
- if (!s.theme_advanced_toolbar_container) {
- n = DOM.add(tb, 'tr');
- n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
- }
-
- // Create toolbar container at bottom
- if (lo == 'bottom')
- t._addToolbars(tb, o);
-
- if (sl == 'bottom')
- t._addStatusBar(tb, o);
-
- return ic;
- },
-
- _rowLayout : function(s, tb, o) {
- var t = this, ed = t.editor, dc, da, cf = ed.controlManager, n, ic, to, a;
-
- dc = s.theme_advanced_containers_default_class || '';
- da = s.theme_advanced_containers_default_align || 'center';
-
- each(explode(s.theme_advanced_containers || ''), function(c, i) {
- var v = s['theme_advanced_container_' + c] || '';
-
- switch (c.toLowerCase()) {
- case 'mceeditor':
- n = DOM.add(tb, 'tr');
- n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
- break;
-
- case 'mceelementpath':
- t._addStatusBar(tb, o);
- break;
-
- default:
- a = (s['theme_advanced_container_' + c + '_align'] || da).toLowerCase();
- a = 'mce' + t._ufirst(a);
-
- n = DOM.add(DOM.add(tb, 'tr'), 'td', {
- 'class' : 'mceToolbar ' + (s['theme_advanced_container_' + c + '_class'] || dc) + ' ' + a || da
- });
-
- to = cf.createToolbar("toolbar" + i);
- t._addControls(v, to);
- DOM.setHTML(n, to.renderHTML());
- o.deltaHeight -= s.theme_advanced_row_height;
- }
- });
-
- return ic;
- },
-
- _addControls : function(v, tb) {
- var t = this, s = t.settings, di, cf = t.editor.controlManager;
-
- if (s.theme_advanced_disable && !t._disabled) {
- di = {};
-
- each(explode(s.theme_advanced_disable), function(v) {
- di[v] = 1;
- });
-
- t._disabled = di;
- } else
- di = t._disabled;
-
- each(explode(v), function(n) {
- var c;
-
- if (di && di[n])
- return;
-
- // Compatiblity with 2.x
- if (n == 'tablecontrols') {
- each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"], function(n) {
- n = t.createControl(n, cf);
-
- if (n)
- tb.add(n);
- });
-
- return;
- }
-
- c = t.createControl(n, cf);
-
- if (c)
- tb.add(c);
- });
- },
-
- _addToolbars : function(c, o) {
- var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a, toolbarGroup, toolbarsExist = false;
-
- toolbarGroup = cf.createToolbarGroup('toolbargroup', {
- 'name': ed.getLang('advanced.toolbar'),
- 'tab_focus_toolbar':ed.getParam('theme_advanced_tab_focus_toolbar')
- });
-
- t.toolbarGroup = toolbarGroup;
-
- a = s.theme_advanced_toolbar_align.toLowerCase();
- a = 'mce' + t._ufirst(a);
-
- n = DOM.add(DOM.add(c, 'tr', {role: 'presentation'}), 'td', {'class' : 'mceToolbar ' + a, "role":"presentation"});
-
- // Create toolbar and add the controls
- for (i=1; (v = s['theme_advanced_buttons' + i]); i++) {
- toolbarsExist = true;
- tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i});
-
- if (s['theme_advanced_buttons' + i + '_add'])
- v += ',' + s['theme_advanced_buttons' + i + '_add'];
-
- if (s['theme_advanced_buttons' + i + '_add_before'])
- v = s['theme_advanced_buttons' + i + '_add_before'] + ',' + v;
-
- t._addControls(v, tb);
- toolbarGroup.add(tb);
-
- o.deltaHeight -= s.theme_advanced_row_height;
- }
- // Handle case when there are no toolbar buttons and ensure editor height is adjusted accordingly
- if (!toolbarsExist)
- o.deltaHeight -= s.theme_advanced_row_height;
- h.push(toolbarGroup.renderHTML());
- h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
- DOM.setHTML(n, h.join(''));
- },
-
- _addStatusBar : function(tb, o) {
- var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td;
-
- n = DOM.add(tb, 'tr');
- n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'});
- n = DOM.add(n, 'div', {id : ed.id + '_path_row', 'role': 'group', 'aria-labelledby': ed.id + '_path_voice'});
- if (s.theme_advanced_path) {
- DOM.add(n, 'span', {id: ed.id + '_path_voice'}, ed.translate('advanced.path'));
- DOM.add(n, 'span', {}, ': ');
- } else {
- DOM.add(n, 'span', {}, '&#160;');
- }
-
-
- if (s.theme_advanced_resizing) {
- DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize', tabIndex:"-1"});
-
- if (s.theme_advanced_resizing_use_cookie) {
- ed.onPostRender.add(function() {
- var o = Cookie.getHash("TinyMCE_" + ed.id + "_size"), c = DOM.get(ed.id + '_tbl');
-
- if (!o)
- return;
-
- t.resizeTo(o.cw, o.ch);
- });
- }
-
- ed.onPostRender.add(function() {
- Event.add(ed.id + '_resize', 'click', function(e) {
- e.preventDefault();
- });
-
- Event.add(ed.id + '_resize', 'mousedown', function(e) {
- var mouseMoveHandler1, mouseMoveHandler2,
- mouseUpHandler1, mouseUpHandler2,
- startX, startY, startWidth, startHeight, width, height, ifrElm;
-
- function resizeOnMove(e) {
- e.preventDefault();
-
- width = startWidth + (e.screenX - startX);
- height = startHeight + (e.screenY - startY);
-
- t.resizeTo(width, height);
- };
-
- function endResize(e) {
- // Stop listening
- Event.remove(DOM.doc, 'mousemove', mouseMoveHandler1);
- Event.remove(ed.getDoc(), 'mousemove', mouseMoveHandler2);
- Event.remove(DOM.doc, 'mouseup', mouseUpHandler1);
- Event.remove(ed.getDoc(), 'mouseup', mouseUpHandler2);
-
- width = startWidth + (e.screenX - startX);
- height = startHeight + (e.screenY - startY);
- t.resizeTo(width, height, true);
- };
-
- e.preventDefault();
-
- // Get the current rect size
- startX = e.screenX;
- startY = e.screenY;
- ifrElm = DOM.get(t.editor.id + '_ifr');
- startWidth = width = ifrElm.clientWidth;
- startHeight = height = ifrElm.clientHeight;
-
- // Register envent handlers
- mouseMoveHandler1 = Event.add(DOM.doc, 'mousemove', resizeOnMove);
- mouseMoveHandler2 = Event.add(ed.getDoc(), 'mousemove', resizeOnMove);
- mouseUpHandler1 = Event.add(DOM.doc, 'mouseup', endResize);
- mouseUpHandler2 = Event.add(ed.getDoc(), 'mouseup', endResize);
- });
- });
- }
-
- o.deltaHeight -= 21;
- n = tb = null;
- },
-
- _updateUndoStatus : function(ed) {
- var cm = ed.controlManager, um = ed.undoManager;
-
- cm.setDisabled('undo', !um.hasUndo() && !um.typing);
- cm.setDisabled('redo', !um.hasRedo());
- },
-
- _nodeChanged : function(ed, cm, n, co, ob) {
- var t = this, p, de = 0, v, c, s = t.settings, cl, fz, fn, fc, bc, formatNames, matches;
-
- tinymce.each(t.stateControls, function(c) {
- cm.setActive(c, ed.queryCommandState(t.controls[c][1]));
- });
-
- function getParent(name) {
- var i, parents = ob.parents, func = name;
-
- if (typeof(name) == 'string') {
- func = function(node) {
- return node.nodeName == name;
- };
- }
-
- for (i = 0; i < parents.length; i++) {
- if (func(parents[i]))
- return parents[i];
- }
- };
-
- cm.setActive('visualaid', ed.hasVisual);
- t._updateUndoStatus(ed);
- cm.setDisabled('outdent', !ed.queryCommandState('Outdent'));
-
- p = getParent('A');
- if (c = cm.get('link')) {
- if (!p || !p.name) {
- c.setDisabled(!p && co);
- c.setActive(!!p);
- }
- }
-
- if (c = cm.get('unlink')) {
- c.setDisabled(!p && co);
- c.setActive(!!p && !p.name);
- }
-
- if (c = cm.get('anchor')) {
- c.setActive(!co && !!p && p.name);
- }
-
- p = getParent('IMG');
- if (c = cm.get('image'))
- c.setActive(!co && !!p && n.className.indexOf('mceItem') == -1);
-
- if (c = cm.get('styleselect')) {
- t._importClasses();
-
- formatNames = [];
- each(c.items, function(item) {
- formatNames.push(item.value);
- });
-
- matches = ed.formatter.matchAll(formatNames);
- c.select(matches[0]);
- tinymce.each(matches, function(match, index) {
- if (index > 0) {
- c.mark(match);
- }
- });
- }
-
- if (c = cm.get('formatselect')) {
- p = getParent(ed.dom.isBlock);
-
- if (p)
- c.select(p.nodeName.toLowerCase());
- }
-
- // Find out current fontSize, fontFamily and fontClass
- getParent(function(n) {
- if (n.nodeName === 'SPAN') {
- if (!cl && n.className)
- cl = n.className;
- }
-
- if (ed.dom.is(n, s.theme_advanced_font_selector)) {
- if (!fz && n.style.fontSize)
- fz = n.style.fontSize;
-
- if (!fn && n.style.fontFamily)
- fn = n.style.fontFamily.replace(/[\"\']+/g, '').replace(/^([^,]+).*/, '$1').toLowerCase();
-
- if (!fc && n.style.color)
- fc = n.style.color;
-
- if (!bc && n.style.backgroundColor)
- bc = n.style.backgroundColor;
- }
-
- return false;
- });
-
- if (c = cm.get('fontselect')) {
- c.select(function(v) {
- return v.replace(/^([^,]+).*/, '$1').toLowerCase() == fn;
- });
- }
-
- // Select font size
- if (c = cm.get('fontsizeselect')) {
- // Use computed style
- if (s.theme_advanced_runtime_fontsize && !fz && !cl)
- fz = ed.dom.getStyle(n, 'fontSize', true);
-
- c.select(function(v) {
- if (v.fontSize && v.fontSize === fz)
- return true;
-
- if (v['class'] && v['class'] === cl)
- return true;
- });
- }
-
- if (s.theme_advanced_show_current_color) {
- function updateColor(controlId, color) {
- if (c = cm.get(controlId)) {
- if (!color)
- color = c.settings.default_color;
- if (color !== c.value) {
- c.displayColor(color);
- }
- }
- }
- updateColor('forecolor', fc);
- updateColor('backcolor', bc);
- }
-
- if (s.theme_advanced_show_current_color) {
- function updateColor(controlId, color) {
- if (c = cm.get(controlId)) {
- if (!color)
- color = c.settings.default_color;
- if (color !== c.value) {
- c.displayColor(color);
- }
- }
- };
-
- updateColor('forecolor', fc);
- updateColor('backcolor', bc);
- }
-
- if (s.theme_advanced_path && s.theme_advanced_statusbar_location) {
- p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'});
-
- if (t.statusKeyboardNavigation) {
- t.statusKeyboardNavigation.destroy();
- t.statusKeyboardNavigation = null;
- }
-
- DOM.setHTML(p, '');
-
- getParent(function(n) {
- var na = n.nodeName.toLowerCase(), u, pi, ti = '';
-
- // Ignore non element and bogus/hidden elements
- if (n.nodeType != 1 || na === 'br' || n.getAttribute('data-mce-bogus') || DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved'))
- return;
-
- // Handle prefix
- if (tinymce.isIE && n.scopeName !== 'HTML' && n.scopeName)
- na = n.scopeName + ':' + na;
-
- // Remove internal prefix
- na = na.replace(/mce\:/g, '');
-
- // Handle node name
- switch (na) {
- case 'b':
- na = 'strong';
- break;
-
- case 'i':
- na = 'em';
- break;
-
- case 'img':
- if (v = DOM.getAttrib(n, 'src'))
- ti += 'src: ' + v + ' ';
-
- break;
-
- case 'a':
- if (v = DOM.getAttrib(n, 'name')) {
- ti += 'name: ' + v + ' ';
- na += '#' + v;
- }
-
- if (v = DOM.getAttrib(n, 'href'))
- ti += 'href: ' + v + ' ';
-
- break;
-
- case 'font':
- if (v = DOM.getAttrib(n, 'face'))
- ti += 'font: ' + v + ' ';
-
- if (v = DOM.getAttrib(n, 'size'))
- ti += 'size: ' + v + ' ';
-
- if (v = DOM.getAttrib(n, 'color'))
- ti += 'color: ' + v + ' ';
-
- break;
-
- case 'span':
- if (v = DOM.getAttrib(n, 'style'))
- ti += 'style: ' + v + ' ';
-
- break;
- }
-
- if (v = DOM.getAttrib(n, 'id'))
- ti += 'id: ' + v + ' ';
-
- if (v = n.className) {
- v = v.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g, '')
-
- if (v) {
- ti += 'class: ' + v + ' ';
-
- if (ed.dom.isBlock(n) || na == 'img' || na == 'span')
- na += '.' + v;
- }
- }
-
- na = na.replace(/(html:)/g, '');
- na = {name : na, node : n, title : ti};
- t.onResolveName.dispatch(t, na);
- ti = na.title;
- na = na.name;
-
- //u = "javascript:tinymce.EditorManager.get('" + ed.id + "').theme._sel('" + (de++) + "');";
- pi = DOM.create('a', {'href' : "javascript:;", role: 'button', onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na);
-
- if (p.hasChildNodes()) {
- p.insertBefore(DOM.create('span', {'aria-hidden': 'true'}, '\u00a0\u00bb '), p.firstChild);
- p.insertBefore(pi, p.firstChild);
- } else
- p.appendChild(pi);
- }, ed.getBody());
-
- if (DOM.select('a', p).length > 0) {
- t.statusKeyboardNavigation = new tinymce.ui.KeyboardNavigation({
- root: ed.id + "_path_row",
- items: DOM.select('a', p),
- excludeFromTabOrder: true,
- onCancel: function() {
- ed.focus();
- }
- }, DOM);
- }
- }
- },
-
- // Commands gets called by execCommand
-
- _sel : function(v) {
- this.editor.execCommand('mceSelectNodeDepth', false, v);
- },
-
- _mceInsertAnchor : function(ui, v) {
- var ed = this.editor;
-
- ed.windowManager.open({
- url : this.url + '/anchor.htm',
- width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)),
- height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)),
- inline : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceCharMap : function() {
- var ed = this.editor;
-
- ed.windowManager.open({
- url : this.url + '/charmap.htm',
- width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)),
- height : 265 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)),
- inline : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceHelp : function() {
- var ed = this.editor;
-
- ed.windowManager.open({
- url : this.url + '/about.htm',
- width : 480,
- height : 380,
- inline : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceShortcuts : function() {
- var ed = this.editor;
- ed.windowManager.open({
- url: this.url + '/shortcuts.htm',
- width: 480,
- height: 380,
- inline: true
- }, {
- theme_url: this.url
- });
- },
-
- _mceColorPicker : function(u, v) {
- var ed = this.editor;
-
- v = v || {};
-
- ed.windowManager.open({
- url : this.url + '/color_picker.htm',
- width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)),
- height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)),
- close_previous : false,
- inline : true
- }, {
- input_color : v.color,
- func : v.func,
- theme_url : this.url
- });
- },
-
- _mceCodeEditor : function(ui, val) {
- var ed = this.editor;
-
- ed.windowManager.open({
- url : this.url + '/source_editor.htm',
- width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)),
- height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)),
- inline : true,
- resizable : true,
- maximizable : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceImage : function(ui, val) {
- var ed = this.editor;
-
- // Internal image object like a flash placeholder
- if (ed.dom.getAttrib(ed.selection.getNode(), 'class', '').indexOf('mceItem') != -1)
- return;
-
- ed.windowManager.open({
- url : this.url + '/image.htm',
- width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)),
- height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)),
- inline : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceLink : function(ui, val) {
- var ed = this.editor;
-
- ed.windowManager.open({
- url : this.url + '/link.htm',
- width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)),
- height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)),
- inline : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceNewDocument : function() {
- var ed = this.editor;
-
- ed.windowManager.confirm('advanced.newdocument', function(s) {
- if (s)
- ed.execCommand('mceSetContent', false, '');
- });
- },
-
- _mceForeColor : function() {
- var t = this;
-
- this._mceColorPicker(0, {
- color: t.fgColor,
- func : function(co) {
- t.fgColor = co;
- t.editor.execCommand('ForeColor', false, co);
- }
- });
- },
-
- _mceBackColor : function() {
- var t = this;
-
- this._mceColorPicker(0, {
- color: t.bgColor,
- func : function(co) {
- t.bgColor = co;
- t.editor.execCommand('HiliteColor', false, co);
- }
- });
- },
-
- _ufirst : function(s) {
- return s.substring(0, 1).toUpperCase() + s.substring(1);
- }
- });
-
- tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme);
-}(tinymce));
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/image.htm b/library/tinymce/jscripts/tiny_mce/themes/advanced/image.htm
deleted file mode 100644
index b8ba729f6..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/image.htm
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advanced_dlg.image_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="js/image.js"></script>
-</head>
-<body id="image" style="display: none">
-<form onsubmit="ImageDialog.update();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.image_title}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="nowrap"><label for="src">{#advanced_dlg.image_src}</label></td>
- <td><table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="src" name="src" type="text" class="mceFocus" value="" style="width: 200px" onchange="ImageDialog.getImageData();" /></td>
- <td id="srcbrowsercontainer">&nbsp;</td>
- </tr>
- </table></td>
- </tr>
- <tr>
- <td><label for="image_list">{#advanced_dlg.image_list}</label></td>
- <td><select id="image_list" name="image_list" onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;"></select></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="alt">{#advanced_dlg.image_alt}</label></td>
- <td><input id="alt" name="alt" type="text" value="" style="width: 200px" /></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="align">{#advanced_dlg.image_align}</label></td>
- <td><select id="align" name="align" onchange="ImageDialog.updateStyle();">
- <option value="">{#not_set}</option>
- <option value="baseline">{#advanced_dlg.image_align_baseline}</option>
- <option value="top">{#advanced_dlg.image_align_top}</option>
- <option value="middle">{#advanced_dlg.image_align_middle}</option>
- <option value="bottom">{#advanced_dlg.image_align_bottom}</option>
- <option value="text-top">{#advanced_dlg.image_align_texttop}</option>
- <option value="text-bottom">{#advanced_dlg.image_align_textbottom}</option>
- <option value="left">{#advanced_dlg.image_align_left}</option>
- <option value="right">{#advanced_dlg.image_align_right}</option>
- </select></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="width">{#advanced_dlg.image_dimensions}</label></td>
- <td><input id="width" name="width" type="text" value="" size="3" maxlength="5" />
- x
- <input id="height" name="height" type="text" value="" size="3" maxlength="5" /></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="border">{#advanced_dlg.image_border}</label></td>
- <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="vspace">{#advanced_dlg.image_vspace}</label></td>
- <td><input id="vspace" name="vspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="hspace">{#advanced_dlg.image_hspace}</label></td>
- <td><input id="hspace" name="hspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
- </tr>
- </table>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg
deleted file mode 100644
index b1a377aba..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/flash.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/flash.gif
deleted file mode 100644
index dec3f7c70..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/flash.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif
deleted file mode 100644
index efb356c41..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/iframe.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/iframe.gif
deleted file mode 100644
index 410c7ad08..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/iframe.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/pagebreak.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/pagebreak.gif
deleted file mode 100644
index acdf4085f..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/pagebreak.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/quicktime.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/quicktime.gif
deleted file mode 100644
index 8f10e7aa6..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/quicktime.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/realmedia.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/realmedia.gif
deleted file mode 100644
index fdfe0b9ac..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/realmedia.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/shockwave.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/shockwave.gif
deleted file mode 100644
index 9314d0447..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/shockwave.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/trans.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/trans.gif
deleted file mode 100644
index 388486517..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/trans.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/video.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/video.gif
deleted file mode 100644
index 357010407..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/video.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/windowsmedia.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/windowsmedia.gif
deleted file mode 100644
index ab50f2d88..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/windowsmedia.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js
deleted file mode 100644
index 5b3584576..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js
+++ /dev/null
@@ -1,73 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-function init() {
- var ed, tcont;
-
- tinyMCEPopup.resizeToInnerSize();
- ed = tinyMCEPopup.editor;
-
- // Give FF some time
- window.setTimeout(insertHelpIFrame, 10);
-
- tcont = document.getElementById('plugintablecontainer');
- document.getElementById('plugins_tab').style.display = 'none';
-
- var html = "";
- html += '<table id="plugintable">';
- html += '<thead>';
- html += '<tr>';
- html += '<td>' + ed.getLang('advanced_dlg.about_plugin') + '</td>';
- html += '<td>' + ed.getLang('advanced_dlg.about_author') + '</td>';
- html += '<td>' + ed.getLang('advanced_dlg.about_version') + '</td>';
- html += '</tr>';
- html += '</thead>';
- html += '<tbody>';
-
- tinymce.each(ed.plugins, function(p, n) {
- var info;
-
- if (!p.getInfo)
- return;
-
- html += '<tr>';
-
- info = p.getInfo();
-
- if (info.infourl != null && info.infourl != '')
- html += '<td width="50%" title="' + n + '"><a href="' + info.infourl + '" target="_blank">' + info.longname + '</a></td>';
- else
- html += '<td width="50%" title="' + n + '">' + info.longname + '</td>';
-
- if (info.authorurl != null && info.authorurl != '')
- html += '<td width="35%"><a href="' + info.authorurl + '" target="_blank">' + info.author + '</a></td>';
- else
- html += '<td width="35%">' + info.author + '</td>';
-
- html += '<td width="15%">' + info.version + '</td>';
- html += '</tr>';
-
- document.getElementById('plugins_tab').style.display = '';
-
- });
-
- html += '</tbody>';
- html += '</table>';
-
- tcont.innerHTML = html;
-
- tinyMCEPopup.dom.get('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion;
- tinyMCEPopup.dom.get('date').innerHTML = tinymce.releaseDate;
-}
-
-function insertHelpIFrame() {
- var html;
-
- if (tinyMCEPopup.getParam('docs_url')) {
- html = '<iframe width="100%" height="300" src="' + tinyMCEPopup.editor.baseURI.toAbsolute(tinyMCEPopup.getParam('docs_url')) + '"></iframe>';
- document.getElementById('iframecontainer').innerHTML = html;
- document.getElementById('help_tab').style.display = 'block';
- document.getElementById('help_tab').setAttribute("aria-hidden", "false");
- }
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js
deleted file mode 100644
index 2940db359..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js
+++ /dev/null
@@ -1,44 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var AnchorDialog = {
- init : function(ed) {
- var action, elm, f = document.forms[0];
-
- this.editor = ed;
- elm = ed.dom.getParent(ed.selection.getNode(), 'A');
- v = ed.dom.getAttrib(elm, 'name');
-
- if (v) {
- this.action = 'update';
- f.anchorName.value = v;
- }
-
- f.insert.value = ed.getLang(elm ? 'update' : 'insert');
- },
-
- update : function() {
- var ed = this.editor, elm, name = document.forms[0].anchorName.value;
-
- if (!name || !/^[a-z][a-z0-9\-\_:\.]*$/i.test(name)) {
- tinyMCEPopup.alert('advanced_dlg.anchor_invalid');
- return;
- }
-
- tinyMCEPopup.restoreSelection();
-
- if (this.action != 'update')
- ed.selection.collapse(1);
-
- elm = ed.dom.getParent(ed.selection.getNode(), 'A');
- if (elm) {
- elm.setAttribute('name', name);
- elm.name = name;
- } else
- // create with zero-sized nbsp so that in Webkit where anchor is on last line by itself caret cannot be placed after it
- ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : name, 'class' : 'mceItemAnchor'}, '\uFEFF'));
-
- tinyMCEPopup.close();
- }
-};
-
-tinyMCEPopup.onInit.add(AnchorDialog.init, AnchorDialog);
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js
deleted file mode 100644
index bb1869558..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js
+++ /dev/null
@@ -1,363 +0,0 @@
-/**
- * charmap.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-tinyMCEPopup.requireLangPack();
-
-var charmap = [
- ['&nbsp;', '&#160;', true, 'no-break space'],
- ['&amp;', '&#38;', true, 'ampersand'],
- ['&quot;', '&#34;', true, 'quotation mark'],
-// finance
- ['&cent;', '&#162;', true, 'cent sign'],
- ['&euro;', '&#8364;', true, 'euro sign'],
- ['&pound;', '&#163;', true, 'pound sign'],
- ['&yen;', '&#165;', true, 'yen sign'],
-// signs
- ['&copy;', '&#169;', true, 'copyright sign'],
- ['&reg;', '&#174;', true, 'registered sign'],
- ['&trade;', '&#8482;', true, 'trade mark sign'],
- ['&permil;', '&#8240;', true, 'per mille sign'],
- ['&micro;', '&#181;', true, 'micro sign'],
- ['&middot;', '&#183;', true, 'middle dot'],
- ['&bull;', '&#8226;', true, 'bullet'],
- ['&hellip;', '&#8230;', true, 'three dot leader'],
- ['&prime;', '&#8242;', true, 'minutes / feet'],
- ['&Prime;', '&#8243;', true, 'seconds / inches'],
- ['&sect;', '&#167;', true, 'section sign'],
- ['&para;', '&#182;', true, 'paragraph sign'],
- ['&szlig;', '&#223;', true, 'sharp s / ess-zed'],
-// quotations
- ['&lsaquo;', '&#8249;', true, 'single left-pointing angle quotation mark'],
- ['&rsaquo;', '&#8250;', true, 'single right-pointing angle quotation mark'],
- ['&laquo;', '&#171;', true, 'left pointing guillemet'],
- ['&raquo;', '&#187;', true, 'right pointing guillemet'],
- ['&lsquo;', '&#8216;', true, 'left single quotation mark'],
- ['&rsquo;', '&#8217;', true, 'right single quotation mark'],
- ['&ldquo;', '&#8220;', true, 'left double quotation mark'],
- ['&rdquo;', '&#8221;', true, 'right double quotation mark'],
- ['&sbquo;', '&#8218;', true, 'single low-9 quotation mark'],
- ['&bdquo;', '&#8222;', true, 'double low-9 quotation mark'],
- ['&lt;', '&#60;', true, 'less-than sign'],
- ['&gt;', '&#62;', true, 'greater-than sign'],
- ['&le;', '&#8804;', true, 'less-than or equal to'],
- ['&ge;', '&#8805;', true, 'greater-than or equal to'],
- ['&ndash;', '&#8211;', true, 'en dash'],
- ['&mdash;', '&#8212;', true, 'em dash'],
- ['&macr;', '&#175;', true, 'macron'],
- ['&oline;', '&#8254;', true, 'overline'],
- ['&curren;', '&#164;', true, 'currency sign'],
- ['&brvbar;', '&#166;', true, 'broken bar'],
- ['&uml;', '&#168;', true, 'diaeresis'],
- ['&iexcl;', '&#161;', true, 'inverted exclamation mark'],
- ['&iquest;', '&#191;', true, 'turned question mark'],
- ['&circ;', '&#710;', true, 'circumflex accent'],
- ['&tilde;', '&#732;', true, 'small tilde'],
- ['&deg;', '&#176;', true, 'degree sign'],
- ['&minus;', '&#8722;', true, 'minus sign'],
- ['&plusmn;', '&#177;', true, 'plus-minus sign'],
- ['&divide;', '&#247;', true, 'division sign'],
- ['&frasl;', '&#8260;', true, 'fraction slash'],
- ['&times;', '&#215;', true, 'multiplication sign'],
- ['&sup1;', '&#185;', true, 'superscript one'],
- ['&sup2;', '&#178;', true, 'superscript two'],
- ['&sup3;', '&#179;', true, 'superscript three'],
- ['&frac14;', '&#188;', true, 'fraction one quarter'],
- ['&frac12;', '&#189;', true, 'fraction one half'],
- ['&frac34;', '&#190;', true, 'fraction three quarters'],
-// math / logical
- ['&fnof;', '&#402;', true, 'function / florin'],
- ['&int;', '&#8747;', true, 'integral'],
- ['&sum;', '&#8721;', true, 'n-ary sumation'],
- ['&infin;', '&#8734;', true, 'infinity'],
- ['&radic;', '&#8730;', true, 'square root'],
- ['&sim;', '&#8764;', false,'similar to'],
- ['&cong;', '&#8773;', false,'approximately equal to'],
- ['&asymp;', '&#8776;', true, 'almost equal to'],
- ['&ne;', '&#8800;', true, 'not equal to'],
- ['&equiv;', '&#8801;', true, 'identical to'],
- ['&isin;', '&#8712;', false,'element of'],
- ['&notin;', '&#8713;', false,'not an element of'],
- ['&ni;', '&#8715;', false,'contains as member'],
- ['&prod;', '&#8719;', true, 'n-ary product'],
- ['&and;', '&#8743;', false,'logical and'],
- ['&or;', '&#8744;', false,'logical or'],
- ['&not;', '&#172;', true, 'not sign'],
- ['&cap;', '&#8745;', true, 'intersection'],
- ['&cup;', '&#8746;', false,'union'],
- ['&part;', '&#8706;', true, 'partial differential'],
- ['&forall;', '&#8704;', false,'for all'],
- ['&exist;', '&#8707;', false,'there exists'],
- ['&empty;', '&#8709;', false,'diameter'],
- ['&nabla;', '&#8711;', false,'backward difference'],
- ['&lowast;', '&#8727;', false,'asterisk operator'],
- ['&prop;', '&#8733;', false,'proportional to'],
- ['&ang;', '&#8736;', false,'angle'],
-// undefined
- ['&acute;', '&#180;', true, 'acute accent'],
- ['&cedil;', '&#184;', true, 'cedilla'],
- ['&ordf;', '&#170;', true, 'feminine ordinal indicator'],
- ['&ordm;', '&#186;', true, 'masculine ordinal indicator'],
- ['&dagger;', '&#8224;', true, 'dagger'],
- ['&Dagger;', '&#8225;', true, 'double dagger'],
-// alphabetical special chars
- ['&Agrave;', '&#192;', true, 'A - grave'],
- ['&Aacute;', '&#193;', true, 'A - acute'],
- ['&Acirc;', '&#194;', true, 'A - circumflex'],
- ['&Atilde;', '&#195;', true, 'A - tilde'],
- ['&Auml;', '&#196;', true, 'A - diaeresis'],
- ['&Aring;', '&#197;', true, 'A - ring above'],
- ['&AElig;', '&#198;', true, 'ligature AE'],
- ['&Ccedil;', '&#199;', true, 'C - cedilla'],
- ['&Egrave;', '&#200;', true, 'E - grave'],
- ['&Eacute;', '&#201;', true, 'E - acute'],
- ['&Ecirc;', '&#202;', true, 'E - circumflex'],
- ['&Euml;', '&#203;', true, 'E - diaeresis'],
- ['&Igrave;', '&#204;', true, 'I - grave'],
- ['&Iacute;', '&#205;', true, 'I - acute'],
- ['&Icirc;', '&#206;', true, 'I - circumflex'],
- ['&Iuml;', '&#207;', true, 'I - diaeresis'],
- ['&ETH;', '&#208;', true, 'ETH'],
- ['&Ntilde;', '&#209;', true, 'N - tilde'],
- ['&Ograve;', '&#210;', true, 'O - grave'],
- ['&Oacute;', '&#211;', true, 'O - acute'],
- ['&Ocirc;', '&#212;', true, 'O - circumflex'],
- ['&Otilde;', '&#213;', true, 'O - tilde'],
- ['&Ouml;', '&#214;', true, 'O - diaeresis'],
- ['&Oslash;', '&#216;', true, 'O - slash'],
- ['&OElig;', '&#338;', true, 'ligature OE'],
- ['&Scaron;', '&#352;', true, 'S - caron'],
- ['&Ugrave;', '&#217;', true, 'U - grave'],
- ['&Uacute;', '&#218;', true, 'U - acute'],
- ['&Ucirc;', '&#219;', true, 'U - circumflex'],
- ['&Uuml;', '&#220;', true, 'U - diaeresis'],
- ['&Yacute;', '&#221;', true, 'Y - acute'],
- ['&Yuml;', '&#376;', true, 'Y - diaeresis'],
- ['&THORN;', '&#222;', true, 'THORN'],
- ['&agrave;', '&#224;', true, 'a - grave'],
- ['&aacute;', '&#225;', true, 'a - acute'],
- ['&acirc;', '&#226;', true, 'a - circumflex'],
- ['&atilde;', '&#227;', true, 'a - tilde'],
- ['&auml;', '&#228;', true, 'a - diaeresis'],
- ['&aring;', '&#229;', true, 'a - ring above'],
- ['&aelig;', '&#230;', true, 'ligature ae'],
- ['&ccedil;', '&#231;', true, 'c - cedilla'],
- ['&egrave;', '&#232;', true, 'e - grave'],
- ['&eacute;', '&#233;', true, 'e - acute'],
- ['&ecirc;', '&#234;', true, 'e - circumflex'],
- ['&euml;', '&#235;', true, 'e - diaeresis'],
- ['&igrave;', '&#236;', true, 'i - grave'],
- ['&iacute;', '&#237;', true, 'i - acute'],
- ['&icirc;', '&#238;', true, 'i - circumflex'],
- ['&iuml;', '&#239;', true, 'i - diaeresis'],
- ['&eth;', '&#240;', true, 'eth'],
- ['&ntilde;', '&#241;', true, 'n - tilde'],
- ['&ograve;', '&#242;', true, 'o - grave'],
- ['&oacute;', '&#243;', true, 'o - acute'],
- ['&ocirc;', '&#244;', true, 'o - circumflex'],
- ['&otilde;', '&#245;', true, 'o - tilde'],
- ['&ouml;', '&#246;', true, 'o - diaeresis'],
- ['&oslash;', '&#248;', true, 'o slash'],
- ['&oelig;', '&#339;', true, 'ligature oe'],
- ['&scaron;', '&#353;', true, 's - caron'],
- ['&ugrave;', '&#249;', true, 'u - grave'],
- ['&uacute;', '&#250;', true, 'u - acute'],
- ['&ucirc;', '&#251;', true, 'u - circumflex'],
- ['&uuml;', '&#252;', true, 'u - diaeresis'],
- ['&yacute;', '&#253;', true, 'y - acute'],
- ['&thorn;', '&#254;', true, 'thorn'],
- ['&yuml;', '&#255;', true, 'y - diaeresis'],
- ['&Alpha;', '&#913;', true, 'Alpha'],
- ['&Beta;', '&#914;', true, 'Beta'],
- ['&Gamma;', '&#915;', true, 'Gamma'],
- ['&Delta;', '&#916;', true, 'Delta'],
- ['&Epsilon;', '&#917;', true, 'Epsilon'],
- ['&Zeta;', '&#918;', true, 'Zeta'],
- ['&Eta;', '&#919;', true, 'Eta'],
- ['&Theta;', '&#920;', true, 'Theta'],
- ['&Iota;', '&#921;', true, 'Iota'],
- ['&Kappa;', '&#922;', true, 'Kappa'],
- ['&Lambda;', '&#923;', true, 'Lambda'],
- ['&Mu;', '&#924;', true, 'Mu'],
- ['&Nu;', '&#925;', true, 'Nu'],
- ['&Xi;', '&#926;', true, 'Xi'],
- ['&Omicron;', '&#927;', true, 'Omicron'],
- ['&Pi;', '&#928;', true, 'Pi'],
- ['&Rho;', '&#929;', true, 'Rho'],
- ['&Sigma;', '&#931;', true, 'Sigma'],
- ['&Tau;', '&#932;', true, 'Tau'],
- ['&Upsilon;', '&#933;', true, 'Upsilon'],
- ['&Phi;', '&#934;', true, 'Phi'],
- ['&Chi;', '&#935;', true, 'Chi'],
- ['&Psi;', '&#936;', true, 'Psi'],
- ['&Omega;', '&#937;', true, 'Omega'],
- ['&alpha;', '&#945;', true, 'alpha'],
- ['&beta;', '&#946;', true, 'beta'],
- ['&gamma;', '&#947;', true, 'gamma'],
- ['&delta;', '&#948;', true, 'delta'],
- ['&epsilon;', '&#949;', true, 'epsilon'],
- ['&zeta;', '&#950;', true, 'zeta'],
- ['&eta;', '&#951;', true, 'eta'],
- ['&theta;', '&#952;', true, 'theta'],
- ['&iota;', '&#953;', true, 'iota'],
- ['&kappa;', '&#954;', true, 'kappa'],
- ['&lambda;', '&#955;', true, 'lambda'],
- ['&mu;', '&#956;', true, 'mu'],
- ['&nu;', '&#957;', true, 'nu'],
- ['&xi;', '&#958;', true, 'xi'],
- ['&omicron;', '&#959;', true, 'omicron'],
- ['&pi;', '&#960;', true, 'pi'],
- ['&rho;', '&#961;', true, 'rho'],
- ['&sigmaf;', '&#962;', true, 'final sigma'],
- ['&sigma;', '&#963;', true, 'sigma'],
- ['&tau;', '&#964;', true, 'tau'],
- ['&upsilon;', '&#965;', true, 'upsilon'],
- ['&phi;', '&#966;', true, 'phi'],
- ['&chi;', '&#967;', true, 'chi'],
- ['&psi;', '&#968;', true, 'psi'],
- ['&omega;', '&#969;', true, 'omega'],
-// symbols
- ['&alefsym;', '&#8501;', false,'alef symbol'],
- ['&piv;', '&#982;', false,'pi symbol'],
- ['&real;', '&#8476;', false,'real part symbol'],
- ['&thetasym;','&#977;', false,'theta symbol'],
- ['&upsih;', '&#978;', false,'upsilon - hook symbol'],
- ['&weierp;', '&#8472;', false,'Weierstrass p'],
- ['&image;', '&#8465;', false,'imaginary part'],
-// arrows
- ['&larr;', '&#8592;', true, 'leftwards arrow'],
- ['&uarr;', '&#8593;', true, 'upwards arrow'],
- ['&rarr;', '&#8594;', true, 'rightwards arrow'],
- ['&darr;', '&#8595;', true, 'downwards arrow'],
- ['&harr;', '&#8596;', true, 'left right arrow'],
- ['&crarr;', '&#8629;', false,'carriage return'],
- ['&lArr;', '&#8656;', false,'leftwards double arrow'],
- ['&uArr;', '&#8657;', false,'upwards double arrow'],
- ['&rArr;', '&#8658;', false,'rightwards double arrow'],
- ['&dArr;', '&#8659;', false,'downwards double arrow'],
- ['&hArr;', '&#8660;', false,'left right double arrow'],
- ['&there4;', '&#8756;', false,'therefore'],
- ['&sub;', '&#8834;', false,'subset of'],
- ['&sup;', '&#8835;', false,'superset of'],
- ['&nsub;', '&#8836;', false,'not a subset of'],
- ['&sube;', '&#8838;', false,'subset of or equal to'],
- ['&supe;', '&#8839;', false,'superset of or equal to'],
- ['&oplus;', '&#8853;', false,'circled plus'],
- ['&otimes;', '&#8855;', false,'circled times'],
- ['&perp;', '&#8869;', false,'perpendicular'],
- ['&sdot;', '&#8901;', false,'dot operator'],
- ['&lceil;', '&#8968;', false,'left ceiling'],
- ['&rceil;', '&#8969;', false,'right ceiling'],
- ['&lfloor;', '&#8970;', false,'left floor'],
- ['&rfloor;', '&#8971;', false,'right floor'],
- ['&lang;', '&#9001;', false,'left-pointing angle bracket'],
- ['&rang;', '&#9002;', false,'right-pointing angle bracket'],
- ['&loz;', '&#9674;', true, 'lozenge'],
- ['&spades;', '&#9824;', true, 'black spade suit'],
- ['&clubs;', '&#9827;', true, 'black club suit'],
- ['&hearts;', '&#9829;', true, 'black heart suit'],
- ['&diams;', '&#9830;', true, 'black diamond suit'],
- ['&ensp;', '&#8194;', false,'en space'],
- ['&emsp;', '&#8195;', false,'em space'],
- ['&thinsp;', '&#8201;', false,'thin space'],
- ['&zwnj;', '&#8204;', false,'zero width non-joiner'],
- ['&zwj;', '&#8205;', false,'zero width joiner'],
- ['&lrm;', '&#8206;', false,'left-to-right mark'],
- ['&rlm;', '&#8207;', false,'right-to-left mark'],
- ['&shy;', '&#173;', false,'soft hyphen']
-];
-
-tinyMCEPopup.onInit.add(function() {
- tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML());
- addKeyboardNavigation();
-});
-
-function addKeyboardNavigation(){
- var tableElm, cells, settings;
-
- cells = tinyMCEPopup.dom.select("a.charmaplink", "charmapgroup");
-
- settings ={
- root: "charmapgroup",
- items: cells
- };
- cells[0].tabindex=0;
- tinyMCEPopup.dom.addClass(cells[0], "mceFocus");
- if (tinymce.isGecko) {
- cells[0].focus();
- } else {
- setTimeout(function(){
- cells[0].focus();
- }, 100);
- }
- tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', settings, tinyMCEPopup.dom);
-}
-
-function renderCharMapHTML() {
- var charsPerRow = 20, tdWidth=20, tdHeight=20, i;
- var html = '<div id="charmapgroup" aria-labelledby="charmap_label" tabindex="0" role="listbox">'+
- '<table role="presentation" border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) +
- '"><tr height="' + tdHeight + '">';
- var cols=-1;
-
- for (i=0; i<charmap.length; i++) {
- var previewCharFn;
-
- if (charmap[i][2]==true) {
- cols++;
- previewCharFn = 'previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');';
- html += ''
- + '<td class="charmap">'
- + '<a class="charmaplink" role="button" onmouseover="'+previewCharFn+'" onfocus="'+previewCharFn+'" href="javascript:void(0)" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + ' '+ tinyMCEPopup.editor.translate("advanced_dlg.charmap_usage")+'">'
- + charmap[i][1]
- + '</a></td>';
- if ((cols+1) % charsPerRow == 0)
- html += '</tr><tr height="' + tdHeight + '">';
- }
- }
-
- if (cols % charsPerRow > 0) {
- var padd = charsPerRow - (cols % charsPerRow);
- for (var i=0; i<padd-1; i++)
- html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap">&nbsp;</td>';
- }
-
- html += '</tr></table></div>';
- html = html.replace(/<tr height="20"><\/tr>/g, '');
-
- return html;
-}
-
-function insertChar(chr) {
- tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');
-
- // Refocus in window
- if (tinyMCEPopup.isWindow)
- window.focus();
-
- tinyMCEPopup.editor.focus();
- tinyMCEPopup.close();
-}
-
-function previewChar(codeA, codeB, codeN) {
- var elmA = document.getElementById('codeA');
- var elmB = document.getElementById('codeB');
- var elmV = document.getElementById('codeV');
- var elmN = document.getElementById('codeN');
-
- if (codeA=='#160;') {
- elmV.innerHTML = '__';
- } else {
- elmV.innerHTML = '&' + codeA;
- }
-
- elmB.innerHTML = '&amp;' + codeA;
- elmA.innerHTML = '&amp;' + codeB;
- elmN.innerHTML = codeN;
-}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js
deleted file mode 100644
index cc891c171..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js
+++ /dev/null
@@ -1,345 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false;
-
-var colors = [
- "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",
- "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",
- "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",
- "#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",
- "#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",
- "#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",
- "#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",
- "#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",
- "#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",
- "#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",
- "#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",
- "#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",
- "#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",
- "#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",
- "#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",
- "#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",
- "#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",
- "#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",
- "#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",
- "#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",
- "#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",
- "#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",
- "#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",
- "#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",
- "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",
- "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",
- "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"
-];
-
-var named = {
- '#F0F8FF':'Alice Blue','#FAEBD7':'Antique White','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige',
- '#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'Blanched Almond','#0000FF':'Blue','#8A2BE2':'Blue Violet','#A52A2A':'Brown',
- '#DEB887':'Burly Wood','#5F9EA0':'Cadet Blue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'Cornflower Blue',
- '#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'Dark Blue','#008B8B':'Dark Cyan','#B8860B':'Dark Golden Rod',
- '#A9A9A9':'Dark Gray','#A9A9A9':'Dark Grey','#006400':'Dark Green','#BDB76B':'Dark Khaki','#8B008B':'Dark Magenta','#556B2F':'Dark Olive Green',
- '#FF8C00':'Darkorange','#9932CC':'Dark Orchid','#8B0000':'Dark Red','#E9967A':'Dark Salmon','#8FBC8F':'Dark Sea Green','#483D8B':'Dark Slate Blue',
- '#2F4F4F':'Dark Slate Gray','#2F4F4F':'Dark Slate Grey','#00CED1':'Dark Turquoise','#9400D3':'Dark Violet','#FF1493':'Deep Pink','#00BFFF':'Deep Sky Blue',
- '#696969':'Dim Gray','#696969':'Dim Grey','#1E90FF':'Dodger Blue','#B22222':'Fire Brick','#FFFAF0':'Floral White','#228B22':'Forest Green',
- '#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'Ghost White','#FFD700':'Gold','#DAA520':'Golden Rod','#808080':'Gray','#808080':'Grey',
- '#008000':'Green','#ADFF2F':'Green Yellow','#F0FFF0':'Honey Dew','#FF69B4':'Hot Pink','#CD5C5C':'Indian Red','#4B0082':'Indigo','#FFFFF0':'Ivory',
- '#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'Lavender Blush','#7CFC00':'Lawn Green','#FFFACD':'Lemon Chiffon','#ADD8E6':'Light Blue',
- '#F08080':'Light Coral','#E0FFFF':'Light Cyan','#FAFAD2':'Light Golden Rod Yellow','#D3D3D3':'Light Gray','#D3D3D3':'Light Grey','#90EE90':'Light Green',
- '#FFB6C1':'Light Pink','#FFA07A':'Light Salmon','#20B2AA':'Light Sea Green','#87CEFA':'Light Sky Blue','#778899':'Light Slate Gray','#778899':'Light Slate Grey',
- '#B0C4DE':'Light Steel Blue','#FFFFE0':'Light Yellow','#00FF00':'Lime','#32CD32':'Lime Green','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon',
- '#66CDAA':'Medium Aqua Marine','#0000CD':'Medium Blue','#BA55D3':'Medium Orchid','#9370D8':'Medium Purple','#3CB371':'Medium Sea Green','#7B68EE':'Medium Slate Blue',
- '#00FA9A':'Medium Spring Green','#48D1CC':'Medium Turquoise','#C71585':'Medium Violet Red','#191970':'Midnight Blue','#F5FFFA':'Mint Cream','#FFE4E1':'Misty Rose','#FFE4B5':'Moccasin',
- '#FFDEAD':'Navajo White','#000080':'Navy','#FDF5E6':'Old Lace','#808000':'Olive','#6B8E23':'Olive Drab','#FFA500':'Orange','#FF4500':'Orange Red','#DA70D6':'Orchid',
- '#EEE8AA':'Pale Golden Rod','#98FB98':'Pale Green','#AFEEEE':'Pale Turquoise','#D87093':'Pale Violet Red','#FFEFD5':'Papaya Whip','#FFDAB9':'Peach Puff',
- '#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'Powder Blue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'Rosy Brown','#4169E1':'Royal Blue',
- '#8B4513':'Saddle Brown','#FA8072':'Salmon','#F4A460':'Sandy Brown','#2E8B57':'Sea Green','#FFF5EE':'Sea Shell','#A0522D':'Sienna','#C0C0C0':'Silver',
- '#87CEEB':'Sky Blue','#6A5ACD':'Slate Blue','#708090':'Slate Gray','#708090':'Slate Grey','#FFFAFA':'Snow','#00FF7F':'Spring Green',
- '#4682B4':'Steel Blue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet',
- '#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'White Smoke','#FFFF00':'Yellow','#9ACD32':'Yellow Green'
-};
-
-var namedLookup = {};
-
-function init() {
- var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color')), key, value;
-
- tinyMCEPopup.resizeToInnerSize();
-
- generatePicker();
- generateWebColors();
- generateNamedColors();
-
- if (inputColor) {
- changeFinalColor(inputColor);
-
- col = convertHexToRGB(inputColor);
-
- if (col)
- updateLight(col.r, col.g, col.b);
- }
-
- for (key in named) {
- value = named[key];
- namedLookup[value.replace(/\s+/, '').toLowerCase()] = key.replace(/#/, '').toLowerCase();
- }
-}
-
-function toHexColor(color) {
- var matches, red, green, blue, toInt = parseInt;
-
- function hex(value) {
- value = parseInt(value).toString(16);
-
- return value.length > 1 ? value : '0' + value; // Padd with leading zero
- };
-
- color = tinymce.trim(color);
- color = color.replace(/^[#]/, '').toLowerCase(); // remove leading '#'
- color = namedLookup[color] || color;
-
- matches = /^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)$/.exec(color);
-
- if (matches) {
- red = toInt(matches[1]);
- green = toInt(matches[2]);
- blue = toInt(matches[3]);
- } else {
- matches = /^([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/.exec(color);
-
- if (matches) {
- red = toInt(matches[1], 16);
- green = toInt(matches[2], 16);
- blue = toInt(matches[3], 16);
- } else {
- matches = /^([0-9a-f])([0-9a-f])([0-9a-f])$/.exec(color);
-
- if (matches) {
- red = toInt(matches[1] + matches[1], 16);
- green = toInt(matches[2] + matches[2], 16);
- blue = toInt(matches[3] + matches[3], 16);
- } else {
- return '';
- }
- }
- }
-
- return '#' + hex(red) + hex(green) + hex(blue);
-}
-
-function insertAction() {
- var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func');
-
- var hexColor = toHexColor(color);
-
- if (hexColor === '') {
- var text = tinyMCEPopup.editor.getLang('advanced_dlg.invalid_color_value');
- tinyMCEPopup.alert(text + ': ' + color);
- }
- else {
- tinyMCEPopup.restoreSelection();
-
- if (f)
- f(hexColor);
-
- tinyMCEPopup.close();
- }
-}
-
-function showColor(color, name) {
- if (name)
- document.getElementById("colorname").innerHTML = name;
-
- document.getElementById("preview").style.backgroundColor = color;
- document.getElementById("color").value = color.toUpperCase();
-}
-
-function convertRGBToHex(col) {
- var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
-
- if (!col)
- return col;
-
- var rgb = col.replace(re, "$1,$2,$3").split(',');
- if (rgb.length == 3) {
- r = parseInt(rgb[0]).toString(16);
- g = parseInt(rgb[1]).toString(16);
- b = parseInt(rgb[2]).toString(16);
-
- r = r.length == 1 ? '0' + r : r;
- g = g.length == 1 ? '0' + g : g;
- b = b.length == 1 ? '0' + b : b;
-
- return "#" + r + g + b;
- }
-
- return col;
-}
-
-function convertHexToRGB(col) {
- if (col.indexOf('#') != -1) {
- col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
-
- r = parseInt(col.substring(0, 2), 16);
- g = parseInt(col.substring(2, 4), 16);
- b = parseInt(col.substring(4, 6), 16);
-
- return {r : r, g : g, b : b};
- }
-
- return null;
-}
-
-function generatePicker() {
- var el = document.getElementById('light'), h = '', i;
-
- for (i = 0; i < detail; i++){
- h += '<div id="gs'+i+'" style="background-color:#000000; width:15px; height:3px; border-style:none; border-width:0px;"'
- + ' onclick="changeFinalColor(this.style.backgroundColor)"'
- + ' onmousedown="isMouseDown = true; return false;"'
- + ' onmouseup="isMouseDown = false;"'
- + ' onmousemove="if (isMouseDown && isMouseOver) changeFinalColor(this.style.backgroundColor); return false;"'
- + ' onmouseover="isMouseOver = true;"'
- + ' onmouseout="isMouseOver = false;"'
- + '></div>';
- }
-
- el.innerHTML = h;
-}
-
-function generateWebColors() {
- var el = document.getElementById('webcolors'), h = '', i;
-
- if (el.className == 'generated')
- return;
-
- // TODO: VoiceOver doesn't seem to support legend as a label referenced by labelledby.
- h += '<div role="listbox" aria-labelledby="webcolors_title" tabindex="0"><table role="presentation" border="0" cellspacing="1" cellpadding="0">'
- + '<tr>';
-
- for (i=0; i<colors.length; i++) {
- h += '<td bgcolor="' + colors[i] + '" width="10" height="10">'
- + '<a href="javascript:insertAction();" role="option" tabindex="-1" aria-labelledby="web_colors_' + i + '" onfocus="showColor(\'' + colors[i] + '\');" onmouseover="showColor(\'' + colors[i] + '\');" style="display:block;width:10px;height:10px;overflow:hidden;">';
- if (tinyMCEPopup.editor.forcedHighContrastMode) {
- h += '<canvas class="mceColorSwatch" height="10" width="10" data-color="' + colors[i] + '"></canvas>';
- }
- h += '<span class="mceVoiceLabel" style="display:none;" id="web_colors_' + i + '">' + colors[i].toUpperCase() + '</span>';
- h += '</a></td>';
- if ((i+1) % 18 == 0)
- h += '</tr><tr>';
- }
-
- h += '</table></div>';
-
- el.innerHTML = h;
- el.className = 'generated';
-
- paintCanvas(el);
- enableKeyboardNavigation(el.firstChild);
-}
-
-function paintCanvas(el) {
- tinyMCEPopup.getWin().tinymce.each(tinyMCEPopup.dom.select('canvas.mceColorSwatch', el), function(canvas) {
- var context;
- if (canvas.getContext && (context = canvas.getContext("2d"))) {
- context.fillStyle = canvas.getAttribute('data-color');
- context.fillRect(0, 0, 10, 10);
- }
- });
-}
-function generateNamedColors() {
- var el = document.getElementById('namedcolors'), h = '', n, v, i = 0;
-
- if (el.className == 'generated')
- return;
-
- for (n in named) {
- v = named[n];
- h += '<a href="javascript:insertAction();" role="option" tabindex="-1" aria-labelledby="named_colors_' + i + '" onfocus="showColor(\'' + n + '\',\'' + v + '\');" onmouseover="showColor(\'' + n + '\',\'' + v + '\');" style="background-color: ' + n + '">';
- if (tinyMCEPopup.editor.forcedHighContrastMode) {
- h += '<canvas class="mceColorSwatch" height="10" width="10" data-color="' + colors[i] + '"></canvas>';
- }
- h += '<span class="mceVoiceLabel" style="display:none;" id="named_colors_' + i + '">' + v + '</span>';
- h += '</a>';
- i++;
- }
-
- el.innerHTML = h;
- el.className = 'generated';
-
- paintCanvas(el);
- enableKeyboardNavigation(el);
-}
-
-function enableKeyboardNavigation(el) {
- tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', {
- root: el,
- items: tinyMCEPopup.dom.select('a', el)
- }, tinyMCEPopup.dom);
-}
-
-function dechex(n) {
- return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16);
-}
-
-function computeColor(e) {
- var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB, pos = tinyMCEPopup.dom.getPos(e.target);
-
- x = e.offsetX ? e.offsetX : (e.target ? e.clientX - pos.x : 0);
- y = e.offsetY ? e.offsetY : (e.target ? e.clientY - pos.y : 0);
-
- partWidth = document.getElementById('colors').width / 6;
- partDetail = detail / 2;
- imHeight = document.getElementById('colors').height;
-
- r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255;
- g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth);
- b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth);
-
- coef = (imHeight - y) / imHeight;
- r = 128 + (r - 128) * coef;
- g = 128 + (g - 128) * coef;
- b = 128 + (b - 128) * coef;
-
- changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b));
- updateLight(r, g, b);
-}
-
-function updateLight(r, g, b) {
- var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color;
-
- for (i=0; i<detail; i++) {
- if ((i>=0) && (i<partDetail)) {
- finalCoef = i / partDetail;
- finalR = dechex(255 - (255 - r) * finalCoef);
- finalG = dechex(255 - (255 - g) * finalCoef);
- finalB = dechex(255 - (255 - b) * finalCoef);
- } else {
- finalCoef = 2 - i / partDetail;
- finalR = dechex(r * finalCoef);
- finalG = dechex(g * finalCoef);
- finalB = dechex(b * finalCoef);
- }
-
- color = finalR + finalG + finalB;
-
- setCol('gs' + i, '#'+color);
- }
-}
-
-function changeFinalColor(color) {
- if (color.indexOf('#') == -1)
- color = convertRGBToHex(color);
-
- setCol('preview', color);
- document.getElementById('color').value = color;
-}
-
-function setCol(e, c) {
- try {
- document.getElementById(e).style.backgroundColor = c;
- } catch (ex) {
- // Ignore IE warning
- }
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js
deleted file mode 100644
index bb09e75bf..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js
+++ /dev/null
@@ -1,253 +0,0 @@
-var ImageDialog = {
- preInit : function() {
- var url;
-
- tinyMCEPopup.requireLangPack();
-
- if (url = tinyMCEPopup.getParam("external_image_list_url"))
- document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
- },
-
- init : function() {
- var f = document.forms[0], ed = tinyMCEPopup.editor;
-
- // Setup browse button
- document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
- if (isVisible('srcbrowser'))
- document.getElementById('src').style.width = '180px';
-
- e = ed.selection.getNode();
-
- this.fillFileList('image_list', tinyMCEPopup.getParam('external_image_list', 'tinyMCEImageList'));
-
- if (e.nodeName == 'IMG') {
- f.src.value = ed.dom.getAttrib(e, 'src');
- f.alt.value = ed.dom.getAttrib(e, 'alt');
- f.border.value = this.getAttrib(e, 'border');
- f.vspace.value = this.getAttrib(e, 'vspace');
- f.hspace.value = this.getAttrib(e, 'hspace');
- f.width.value = ed.dom.getAttrib(e, 'width');
- f.height.value = ed.dom.getAttrib(e, 'height');
- f.insert.value = ed.getLang('update');
- this.styleVal = ed.dom.getAttrib(e, 'style');
- selectByValue(f, 'image_list', f.src.value);
- selectByValue(f, 'align', this.getAttrib(e, 'align'));
- this.updateStyle();
- }
- },
-
- fillFileList : function(id, l) {
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
-
- l = typeof(l) === 'function' ? l() : window[l];
-
- if (l && l.length > 0) {
- lst.options[lst.options.length] = new Option('', '');
-
- tinymce.each(l, function(o) {
- lst.options[lst.options.length] = new Option(o[0], o[1]);
- });
- } else
- dom.remove(dom.getParent(id, 'tr'));
- },
-
- update : function() {
- var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, args = {}, el;
-
- tinyMCEPopup.restoreSelection();
-
- if (f.src.value === '') {
- if (ed.selection.getNode().nodeName == 'IMG') {
- ed.dom.remove(ed.selection.getNode());
- ed.execCommand('mceRepaint');
- }
-
- tinyMCEPopup.close();
- return;
- }
-
- if (!ed.settings.inline_styles) {
- args = tinymce.extend(args, {
- vspace : nl.vspace.value,
- hspace : nl.hspace.value,
- border : nl.border.value,
- align : getSelectValue(f, 'align')
- });
- } else
- args.style = this.styleVal;
-
- tinymce.extend(args, {
- src : f.src.value.replace(/ /g, '%20'),
- alt : f.alt.value,
- width : f.width.value,
- height : f.height.value
- });
-
- el = ed.selection.getNode();
-
- if (el && el.nodeName == 'IMG') {
- ed.dom.setAttribs(el, args);
- tinyMCEPopup.editor.execCommand('mceRepaint');
- tinyMCEPopup.editor.focus();
- } else {
- tinymce.each(args, function(value, name) {
- if (value === "") {
- delete args[name];
- }
- });
-
- ed.execCommand('mceInsertContent', false, tinyMCEPopup.editor.dom.createHTML('img', args), {skip_undo : 1});
- ed.undoManager.add();
- }
-
- tinyMCEPopup.close();
- },
-
- updateStyle : function() {
- var dom = tinyMCEPopup.dom, st = {}, v, f = document.forms[0];
-
- if (tinyMCEPopup.editor.settings.inline_styles) {
- tinymce.each(tinyMCEPopup.dom.parseStyle(this.styleVal), function(value, key) {
- st[key] = value;
- });
-
- // Handle align
- v = getSelectValue(f, 'align');
- if (v) {
- if (v == 'left' || v == 'right') {
- st['float'] = v;
- delete st['vertical-align'];
- } else {
- st['vertical-align'] = v;
- delete st['float'];
- }
- } else {
- delete st['float'];
- delete st['vertical-align'];
- }
-
- // Handle border
- v = f.border.value;
- if (v || v == '0') {
- if (v == '0')
- st['border'] = '0';
- else
- st['border'] = v + 'px solid black';
- } else
- delete st['border'];
-
- // Handle hspace
- v = f.hspace.value;
- if (v) {
- delete st['margin'];
- st['margin-left'] = v + 'px';
- st['margin-right'] = v + 'px';
- } else {
- delete st['margin-left'];
- delete st['margin-right'];
- }
-
- // Handle vspace
- v = f.vspace.value;
- if (v) {
- delete st['margin'];
- st['margin-top'] = v + 'px';
- st['margin-bottom'] = v + 'px';
- } else {
- delete st['margin-top'];
- delete st['margin-bottom'];
- }
-
- // Merge
- st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st), 'img');
- this.styleVal = dom.serializeStyle(st, 'img');
- }
- },
-
- getAttrib : function(e, at) {
- var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;
-
- if (ed.settings.inline_styles) {
- switch (at) {
- case 'align':
- if (v = dom.getStyle(e, 'float'))
- return v;
-
- if (v = dom.getStyle(e, 'vertical-align'))
- return v;
-
- break;
-
- case 'hspace':
- v = dom.getStyle(e, 'margin-left')
- v2 = dom.getStyle(e, 'margin-right');
- if (v && v == v2)
- return parseInt(v.replace(/[^0-9]/g, ''));
-
- break;
-
- case 'vspace':
- v = dom.getStyle(e, 'margin-top')
- v2 = dom.getStyle(e, 'margin-bottom');
- if (v && v == v2)
- return parseInt(v.replace(/[^0-9]/g, ''));
-
- break;
-
- case 'border':
- v = 0;
-
- tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {
- sv = dom.getStyle(e, 'border-' + sv + '-width');
-
- // False or not the same as prev
- if (!sv || (sv != v && v !== 0)) {
- v = 0;
- return false;
- }
-
- if (sv)
- v = sv;
- });
-
- if (v)
- return parseInt(v.replace(/[^0-9]/g, ''));
-
- break;
- }
- }
-
- if (v = dom.getAttrib(e, at))
- return v;
-
- return '';
- },
-
- resetImageData : function() {
- var f = document.forms[0];
-
- f.width.value = f.height.value = "";
- },
-
- updateImageData : function() {
- var f = document.forms[0], t = ImageDialog;
-
- if (f.width.value == "")
- f.width.value = t.preloadImg.width;
-
- if (f.height.value == "")
- f.height.value = t.preloadImg.height;
- },
-
- getImageData : function() {
- var f = document.forms[0];
-
- this.preloadImg = new Image();
- this.preloadImg.onload = this.updateImageData;
- this.preloadImg.onerror = this.resetImageData;
- this.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.src.value);
- }
-};
-
-ImageDialog.preInit();
-tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js
deleted file mode 100644
index 53ff409e7..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js
+++ /dev/null
@@ -1,153 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var LinkDialog = {
- preInit : function() {
- var url;
-
- if (url = tinyMCEPopup.getParam("external_link_list_url"))
- document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
- },
-
- init : function() {
- var f = document.forms[0], ed = tinyMCEPopup.editor;
-
- // Setup browse button
- document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser', 'href', 'file', 'theme_advanced_link');
- if (isVisible('hrefbrowser'))
- document.getElementById('href').style.width = '180px';
-
- this.fillClassList('class_list');
- this.fillFileList('link_list', 'tinyMCELinkList');
- this.fillTargetList('target_list');
-
- if (e = ed.dom.getParent(ed.selection.getNode(), 'A')) {
- f.href.value = ed.dom.getAttrib(e, 'href');
- f.linktitle.value = ed.dom.getAttrib(e, 'title');
- f.insert.value = ed.getLang('update');
- selectByValue(f, 'link_list', f.href.value);
- selectByValue(f, 'target_list', ed.dom.getAttrib(e, 'target'));
- selectByValue(f, 'class_list', ed.dom.getAttrib(e, 'class'));
- }
- },
-
- update : function() {
- var f = document.forms[0], ed = tinyMCEPopup.editor, e, b, href = f.href.value.replace(/ /g, '%20');
-
- tinyMCEPopup.restoreSelection();
- e = ed.dom.getParent(ed.selection.getNode(), 'A');
-
- // Remove element if there is no href
- if (!f.href.value) {
- if (e) {
- b = ed.selection.getBookmark();
- ed.dom.remove(e, 1);
- ed.selection.moveToBookmark(b);
- tinyMCEPopup.execCommand("mceEndUndoLevel");
- tinyMCEPopup.close();
- return;
- }
- }
-
- // Create new anchor elements
- if (e == null) {
- ed.getDoc().execCommand("unlink", false, null);
- tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1});
-
- tinymce.each(ed.dom.select("a"), function(n) {
- if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {
- e = n;
-
- ed.dom.setAttribs(e, {
- href : href,
- title : f.linktitle.value,
- target : f.target_list ? getSelectValue(f, "target_list") : null,
- 'class' : f.class_list ? getSelectValue(f, "class_list") : null
- });
- }
- });
- } else {
- ed.dom.setAttribs(e, {
- href : href,
- title : f.linktitle.value,
- target : f.target_list ? getSelectValue(f, "target_list") : null,
- 'class' : f.class_list ? getSelectValue(f, "class_list") : null
- });
- }
-
- // Don't move caret if selection was image
- if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') {
- ed.focus();
- ed.selection.select(e);
- ed.selection.collapse(0);
- tinyMCEPopup.storeSelection();
- }
-
- tinyMCEPopup.execCommand("mceEndUndoLevel");
- tinyMCEPopup.close();
- },
-
- checkPrefix : function(n) {
- if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email')))
- n.value = 'mailto:' + n.value;
-
- if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external')))
- n.value = 'http://' + n.value;
- },
-
- fillFileList : function(id, l) {
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
-
- l = window[l];
-
- if (l && l.length > 0) {
- lst.options[lst.options.length] = new Option('', '');
-
- tinymce.each(l, function(o) {
- lst.options[lst.options.length] = new Option(o[0], o[1]);
- });
- } else
- dom.remove(dom.getParent(id, 'tr'));
- },
-
- fillClassList : function(id) {
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
-
- if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {
- cl = [];
-
- tinymce.each(v.split(';'), function(v) {
- var p = v.split('=');
-
- cl.push({'title' : p[0], 'class' : p[1]});
- });
- } else
- cl = tinyMCEPopup.editor.dom.getClasses();
-
- if (cl.length > 0) {
- lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
-
- tinymce.each(cl, function(o) {
- lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);
- });
- } else
- dom.remove(dom.getParent(id, 'tr'));
- },
-
- fillTargetList : function(id) {
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v;
-
- lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
- lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_same'), '_self');
- lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_blank'), '_blank');
-
- if (v = tinyMCEPopup.getParam('theme_advanced_link_targets')) {
- tinymce.each(v.split(','), function(v) {
- v = v.split('=');
- lst.options[lst.options.length] = new Option(v[0], v[1]);
- });
- }
- }
-};
-
-LinkDialog.preInit();
-tinyMCEPopup.onInit.add(LinkDialog.init, LinkDialog);
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js
deleted file mode 100644
index dd5e366fa..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js
+++ /dev/null
@@ -1,78 +0,0 @@
-tinyMCEPopup.requireLangPack();
-tinyMCEPopup.onInit.add(onLoadInit);
-
-function saveContent() {
- tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value, {source_view : true});
- tinyMCEPopup.close();
-}
-
-function onLoadInit() {
- tinyMCEPopup.resizeToInnerSize();
-
- // Remove Gecko spellchecking
- if (tinymce.isGecko)
- document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck");
-
- document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true});
-
- if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) {
- turnWrapOn();
- document.getElementById('wraped').checked = true;
- }
-
- resizeInputs();
-}
-
-function setWrap(val) {
- var v, n, s = document.getElementById('htmlSource');
-
- s.wrap = val;
-
- if (!tinymce.isIE) {
- v = s.value;
- n = s.cloneNode(false);
- n.setAttribute("wrap", val);
- s.parentNode.replaceChild(n, s);
- n.value = v;
- }
-}
-
-function setWhiteSpaceCss(value) {
- var el = document.getElementById('htmlSource');
- tinymce.DOM.setStyle(el, 'white-space', value);
-}
-
-function turnWrapOff() {
- if (tinymce.isWebKit) {
- setWhiteSpaceCss('pre');
- } else {
- setWrap('off');
- }
-}
-
-function turnWrapOn() {
- if (tinymce.isWebKit) {
- setWhiteSpaceCss('pre-wrap');
- } else {
- setWrap('soft');
- }
-}
-
-function toggleWordWrap(elm) {
- if (elm.checked) {
- turnWrapOn();
- } else {
- turnWrapOff();
- }
-}
-
-function resizeInputs() {
- var vp = tinyMCEPopup.dom.getViewPort(window), el;
-
- el = document.getElementById('htmlSource');
-
- if (el) {
- el.style.width = (vp.w - 20) + 'px';
- el.style.height = (vp.h - 65) + 'px';
- }
-}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js
deleted file mode 100644
index 6e5848187..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.advanced',{"underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)",dd:"Definition Description",dt:"Definition Term ",samp:"Code Sample",code:"Code",blockquote:"Block Quote",h6:"Heading 6",h5:"Heading 5",h4:"Heading 4",h3:"Heading 3",h2:"Heading 2",h1:"Heading 1",pre:"Preformatted",address:"Address",div:"DIV",paragraph:"Paragraph",block:"Format",fontdefault:"Font Family","font_size":"Font Size","style_select":"Styles","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","more_colors":"More Colors...","toolbar_focus":"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",newdocument:"Are you sure you want clear all contents?",path:"Path","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","blockquote_desc":"Block Quote","help_desc":"Help","newdocument_desc":"New Document","image_props_desc":"Image Properties","paste_desc":"Paste (Ctrl+V)","copy_desc":"Copy (Ctrl+C)","cut_desc":"Cut (Ctrl+X)","anchor_desc":"Insert/Edit Anchor","visualaid_desc":"show/Hide Guidelines/Invisible Elements","charmap_desc":"Insert Special Character","backcolor_desc":"Select Background Color","forecolor_desc":"Select Text Color","custom1_desc":"Your Custom Description Here","removeformat_desc":"Remove Formatting","hr_desc":"Insert Horizontal Line","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"Edit HTML Source","cleanup_desc":"Cleanup Messy Code","image_desc":"Insert/Edit Image","unlink_desc":"Unlink","link_desc":"Insert/Edit Link","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","indent_desc":"Increase Indent","outdent_desc":"Decrease Indent","numlist_desc":"Insert/Remove Numbered List","bullist_desc":"Insert/Remove Bulleted List","justifyfull_desc":"Align Full","justifyright_desc":"Align Right","justifycenter_desc":"Align Center","justifyleft_desc":"Align Left","striketrough_desc":"Strikethrough","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js
deleted file mode 100644
index 50cd87e3d..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.advanced_dlg', {"link_list":"Link List","link_is_external":"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?","link_is_email":"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?","link_titlefield":"Title","link_target_blank":"Open Link in a New Window","link_target_same":"Open Link in the Same Window","link_target":"Target","link_url":"Link URL","link_title":"Insert/Edit Link","image_align_right":"Right","image_align_left":"Left","image_align_textbottom":"Text Bottom","image_align_texttop":"Text Top","image_align_bottom":"Bottom","image_align_middle":"Middle","image_align_top":"Top","image_align_baseline":"Baseline","image_align":"Alignment","image_hspace":"Horizontal Space","image_vspace":"Vertical Space","image_dimensions":"Dimensions","image_alt":"Image Description","image_list":"Image List","image_border":"Border","image_src":"Image URL","image_title":"Insert/Edit Image","charmap_title":"Select Special Character", "charmap_usage":"Use left and right arrows to navigate.","colorpicker_name":"Name:","colorpicker_color":"Color:","colorpicker_named_title":"Named Colors","colorpicker_named_tab":"Named","colorpicker_palette_title":"Palette Colors","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Color Picker","colorpicker_picker_tab":"Picker","colorpicker_title":"Select a Color","code_wordwrap":"Word Wrap","code_title":"HTML Source Editor","anchor_name":"Anchor Name","anchor_title":"Insert/Edit Anchor","about_loaded":"Loaded Plugins","about_version":"Version","about_author":"Author","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"License","about_help":"Help","about_general":"About","about_title":"About TinyMCE","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage","invalid_color_value":"Invalid color value","":""});
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/link.htm b/library/tinymce/jscripts/tiny_mce/themes/advanced/link.htm
deleted file mode 100644
index 5d9dea9b8..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/link.htm
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advanced_dlg.link_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/validate.js"></script>
- <script type="text/javascript" src="js/link.js"></script>
-</head>
-<body id="link" style="display: none">
-<form onsubmit="LinkDialog.update();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.link_title}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="nowrap"><label for="href">{#advanced_dlg.link_url}</label></td>
- <td><table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="href" name="href" type="text" class="mceFocus" value="" style="width: 200px" onchange="LinkDialog.checkPrefix(this);" /></td>
- <td id="hrefbrowsercontainer">&nbsp;</td>
- </tr>
- </table></td>
- </tr>
- <tr>
- <td><label for="link_list">{#advanced_dlg.link_list}</label></td>
- <td><select id="link_list" name="link_list" onchange="document.getElementById('href').value=this.options[this.selectedIndex].value;"></select></td>
- </tr>
- <tr>
- <td><label id="targetlistlabel" for="targetlist">{#advanced_dlg.link_target}</label></td>
- <td><select id="target_list" name="target_list"></select></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="linktitle">{#advanced_dlg.link_titlefield}</label></td>
- <td><input id="linktitle" name="linktitle" type="text" value="" style="width: 200px" /></td>
- </tr>
- <tr>
- <td><label for="class_list">{#class_name}</label></td>
- <td><select id="class_list" name="class_list"></select></td>
- </tr>
- </table>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/shortcuts.htm b/library/tinymce/jscripts/tiny_mce/themes/advanced/shortcuts.htm
deleted file mode 100644
index 20ec2f5a3..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/shortcuts.htm
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>{#advanced_dlg.accessibility_help}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript">tinyMCEPopup.requireLangPack();</script>
- </head>
- <body id="content">
- <h1>{#advanced_dlg.accessibility_usage_title}</h1>
- <h2>Toolbars</h2>
- <p>Press ALT-F10 to move focus to the toolbars. Navigate through the buttons using the arrow keys.
- Press enter to activate a button and return focus to the editor.
- Press escape to return focus to the editor without performing any actions.</p>
-
- <h2>Status Bar</h2>
- <p>To access the editor status bar, press ALT-F11. Use the left and right arrow keys to navigate between elements in the path.
- Press enter or space to select an element. Press escape to return focus to the editor without changing the selection.</p>
-
- <h2>Context Menu</h2>
- <p>Press shift-F10 to activate the context menu. Use the up and down arrow keys to move between menu items. To open sub-menus press the right arrow key.
- To close submenus press the left arrow key. Press escape to close the context menu.</p>
-
- <h1>Keyboard Shortcuts</h1>
- <table>
- <thead>
- <tr>
- <th>Keystroke</th>
- <th>Function</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>Control-B</td><td>Bold</td>
- </tr>
- <tr>
- <td>Control-I</td><td>Italic</td>
- </tr>
- <tr>
- <td>Control-Z</td><td>Undo</td>
- </tr>
- <tr>
- <td>Control-Y</td><td>Redo</td>
- </tr>
- </tbody>
- </table>
- </body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css
deleted file mode 100644
index 52a1d67e2..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css
+++ /dev/null
@@ -1,51 +0,0 @@
-body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
-body {background:#FFF;}
-body.mceForceColors {background:#FFF; color:#000;}
-body.mceBrowserDefaults {background:transparent; color:inherit; font-size:inherit; font-family:inherit;}
-h1 {font-size: 2em}
-h2 {font-size: 1.5em}
-h3 {font-size: 1.17em}
-h4 {font-size: 1em}
-h5 {font-size: .83em}
-h6 {font-size: .75em}
-.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
-a.mceItemAnchor {display:inline-block; -webkit-user-select:all; -webkit-user-modify:read-only; -moz-user-select:all; -moz-user-modify:read-only; width:11px !important; height:11px !important; background:url(img/items.gif) no-repeat center center}
-span.mceItemNbsp {background: #DDD}
-td.mceSelected, th.mceSelected {background-color:#3399ff !important}
-img {border:0;}
-table, img, hr, .mceItemAnchor {cursor:default}
-table td, table th {cursor:text}
-ins {border-bottom:1px solid green; text-decoration: none; color:green}
-del {color:red; text-decoration:line-through}
-cite {border-bottom:1px dashed blue}
-acronym {border-bottom:1px dotted #CCC; cursor:help}
-abbr {border-bottom:1px dashed #CCC; cursor:help}
-
-/* IE */
-* html body {
-scrollbar-3dlight-color:#F0F0EE;
-scrollbar-arrow-color:#676662;
-scrollbar-base-color:#F0F0EE;
-scrollbar-darkshadow-color:#DDD;
-scrollbar-face-color:#E0E0DD;
-scrollbar-highlight-color:#F0F0EE;
-scrollbar-shadow-color:#F0F0EE;
-scrollbar-track-color:#F5F5F5;
-}
-
-img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px}
-font[face=mceinline] {font-family:inherit !important}
-*[contentEditable]:focus {outline:0}
-
-.mceItemMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc}
-.mceItemShockWave {background-image:url(../../img/shockwave.gif)}
-.mceItemFlash {background-image:url(../../img/flash.gif)}
-.mceItemQuickTime {background-image:url(../../img/quicktime.gif)}
-.mceItemWindowsMedia {background-image:url(../../img/windowsmedia.gif)}
-.mceItemRealMedia {background-image:url(../../img/realmedia.gif)}
-.mceItemVideo {background-image:url(../../img/video.gif)}
-.mceItemAudio {background-image:url(../../img/video.gif)}
-.mceItemEmbeddedAudio {background-image:url(../../img/video.gif)}
-.mceItemIframe {background-image:url(../../img/iframe.gif)}
-.mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../../img/pagebreak.gif) no-repeat center top;}
-.mceHideBrInPre pre br {display: none}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css
deleted file mode 100644
index f01222650..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Generic */
-body {
-font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
-scrollbar-3dlight-color:#F0F0EE;
-scrollbar-arrow-color:#676662;
-scrollbar-base-color:#F0F0EE;
-scrollbar-darkshadow-color:#DDDDDD;
-scrollbar-face-color:#E0E0DD;
-scrollbar-highlight-color:#F0F0EE;
-scrollbar-shadow-color:#F0F0EE;
-scrollbar-track-color:#F5F5F5;
-background:#F0F0EE;
-padding:0;
-margin:8px 8px 0 8px;
-}
-
-html {background:#F0F0EE;}
-td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-textarea {resize:none;outline:none;}
-a:link, a:visited {color:black;}
-a:hover {color:#2B6FB6;}
-.nowrap {white-space: nowrap}
-
-/* Forms */
-fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
-legend {color:#2B6FB6; font-weight:bold;}
-label.msg {display:none;}
-label.invalid {color:#EE0000; display:inline;}
-input.invalid {border:1px solid #EE0000;}
-input {background:#FFF; border:1px solid #CCC;}
-input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-input, select, textarea {border:1px solid #808080;}
-input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
-input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
-.input_noborder {border:0;}
-
-/* Buttons */
-#insert, #cancel, input.button, .updateButton {
-border:0; margin:0; padding:0;
-font-weight:bold;
-width:94px; height:26px;
-background:url(img/buttons.png) 0 -26px;
-cursor:pointer;
-padding-bottom:2px;
-float:left;
-}
-
-#insert {background:url(img/buttons.png) 0 -52px}
-#cancel {background:url(img/buttons.png) 0 0; float:right}
-
-/* Browse */
-a.pickcolor, a.browse {text-decoration:none}
-a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
-.mceOldBoxModel a.browse span {width:22px; height:20px;}
-a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
-a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
-a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
-.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
-a.pickcolor:hover span {background-color:#B2BBD0;}
-a.pickcolor:hover span.disabled {}
-
-/* Charmap */
-table.charmap {border:1px solid #AAA; text-align:center}
-td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
-#charmap a {display:block; color:#000; text-decoration:none; border:0}
-#charmap a:hover {background:#CCC;color:#2B6FB6}
-#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
-#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
-
-/* Source */
-.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
-.mceActionPanel {margin-top:5px;}
-
-/* Tabs classes */
-.tabs {width:100%; height:18px; line-height:normal; background:url(img/tabs.gif) repeat-x 0 -72px;}
-.tabs ul {margin:0; padding:0; list-style:none;}
-.tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
-.tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
-.tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
-.tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;}
-.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
-.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
-
-/* Panels */
-.panel_wrapper div.panel {display:none;}
-.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
-.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
-
-/* Columns */
-.column {float:left;}
-.properties {width:100%;}
-.properties .column1 {}
-.properties .column2 {text-align:left;}
-
-/* Titles */
-h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
-h3 {font-size:14px;}
-.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
-
-/* Dialog specific */
-#link .panel_wrapper, #link div.current {height:125px;}
-#image .panel_wrapper, #image div.current {height:200px;}
-#plugintable thead {font-weight:bold; background:#DDD;}
-#plugintable, #about #plugintable td {border:1px solid #919B9C;}
-#plugintable {width:96%; margin-top:10px;}
-#pluginscontainer {height:290px; overflow:auto;}
-#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
-#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
-#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
-#colorpicker #light div {overflow:hidden;}
-#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
-#colorpicker .panel_wrapper div.current {height:175px;}
-#colorpicker #namedcolors {width:150px;}
-#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
-#colorpicker #colornamecontainer {margin-top:5px;}
-#colorpicker #picker_panel fieldset {margin:auto;width:325px;}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png
deleted file mode 100644
index 1e53560e0..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif
deleted file mode 100644
index d2f93671c..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif
deleted file mode 100644
index 85e31dfb2..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif
deleted file mode 100644
index adfdddccd..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif
deleted file mode 100644
index 5bb90fd6a..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif
deleted file mode 100644
index 06812cb41..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css
deleted file mode 100644
index 5f1f96448..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css
+++ /dev/null
@@ -1,213 +0,0 @@
-/* Reset */
-.defaultSkin table, .defaultSkin tbody, .defaultSkin a, .defaultSkin img, .defaultSkin tr, .defaultSkin div, .defaultSkin td, .defaultSkin iframe, .defaultSkin span, .defaultSkin *, .defaultSkin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}
-.defaultSkin a:hover, .defaultSkin a:link, .defaultSkin a:visited, .defaultSkin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}
-.defaultSkin table td {vertical-align:middle}
-
-/* Containers */
-.defaultSkin table {direction:ltr; background:#FFF}
-.defaultSkin iframe {display:block; background:#FFF}
-.defaultSkin .mceToolbar {height:26px}
-.defaultSkin .mceLeft {text-align:left}
-.defaultSkin .mceRight {text-align:right}
-
-/* External */
-.defaultSkin .mceExternalToolbar {position:absolute; border:2px solid #CCC; border-bottom:0; display:none;}
-.defaultSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
-.defaultSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}
-
-/* Layout */
-.defaultSkin table.mceLayout {border:0; border-left:1px solid #CCC; border-right:1px solid #CCC}
-.defaultSkin table.mceLayout tr.mceFirst td {border-top:1px solid #CCC}
-.defaultSkin table.mceLayout tr.mceLast td {border-bottom:1px solid #CCC}
-.defaultSkin table.mceToolbar, .defaultSkin tr.mceFirst .mceToolbar tr td, .defaultSkin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0;}
-.defaultSkin td.mceToolbar {padding-top:1px; vertical-align:top}
-.defaultSkin .mceIframeContainer { /*border-top:1px solid #CCC; border-bottom:1px solid #CCC */ border: none;}
-.defaultSkin .mceStatusbar {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; display:block; height:20px}
-.defaultSkin .mceStatusbar div {float:left; margin:2px}
-.defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0}
-.defaultSkin .mceStatusbar a:hover {text-decoration:underline}
-.defaultSkin table.mceToolbar {margin-left:3px}
-.defaultSkin span.mceIcon, .defaultSkin img.mceIcon {display:block; width:20px; height:20px}
-.defaultSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
-.defaultSkin td.mceCenter {text-align:center;}
-.defaultSkin td.mceCenter table {margin:0 auto; text-align:left;}
-.defaultSkin td.mceRight table {margin:0 0 0 auto;}
-
-/* Button */
-.defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:10px}
-.defaultSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}
-.defaultSkin a.mceButtonActive, .defaultSkin a.mceButtonSelected {border:1px solid #0A246A; background-color:#C2CBE0}
-.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-.defaultSkin .mceButtonLabeled {width:auto}
-.defaultSkin .mceButtonLabeled span.mceIcon {float:left}
-.defaultSkin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}
-.defaultSkin .mceButtonDisabled .mceButtonLabel {color:#888}
-
-/* Separator */
-.defaultSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:2px 2px 0 4px}
-
-/* ListBox */
-.defaultSkin .mceListBox, .defaultSkin .mceListBox a {display:block}
-.defaultSkin .mceListBox .mceText {padding-left:4px; width:70px; text-align:left; border:1px solid #CCC; border-right:0; background:#FFF; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}
-.defaultSkin .mceListBox .mceOpen {width:9px; height:20px; background:url(../../img/icons.gif) -741px 0; margin-right:2px; border:1px solid #CCC;}
-.defaultSkin table.mceListBoxEnabled:hover .mceText, .defaultSkin .mceListBoxHover .mceText, .defaultSkin .mceListBoxSelected .mceText {border:1px solid #A2ABC0; border-right:0; background:#FFF}
-.defaultSkin table.mceListBoxEnabled:hover .mceOpen, .defaultSkin .mceListBoxHover .mceOpen, .defaultSkin .mceListBoxSelected .mceOpen {background-color:#FFF; border:1px solid #A2ABC0}
-.defaultSkin .mceListBoxDisabled a.mceText {color:gray; background-color:transparent;}
-.defaultSkin .mceListBoxMenu {overflow:auto; overflow-x:hidden}
-.defaultSkin .mceOldBoxModel .mceListBox .mceText {height:22px}
-.defaultSkin .mceOldBoxModel .mceListBox .mceOpen {width:11px; height:22px;}
-.defaultSkin select.mceNativeListBox {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:7pt; background:#F0F0EE; border:1px solid gray; margin-right:2px;}
-
-/* SplitButton */
-.defaultSkin .mceSplitButton {width:32px; height:20px; direction:ltr}
-.defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block}
-.defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;}
-.defaultSkin .mceSplitButton span.mceAction {width:20px; background-image:url(../../img/icons.gif);}
-.defaultSkin .mceSplitButton a.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0; border:1px solid #F0F0EE;}
-.defaultSkin .mceSplitButton span.mceOpen {display:none}
-.defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0}
-.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {background-color:#B2BBD0; border:1px solid #0A246A;}
-.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled a.mceOpen {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-.defaultSkin .mceSplitButtonActive a.mceAction {border:1px solid #0A246A; background-color:#C2CBE0}
-.defaultSkin .mceSplitButtonActive a.mceOpen {border-left:0;}
-
-/* ColorSplitButton */
-.defaultSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}
-.defaultSkin .mceColorSplitMenu td {padding:2px}
-.defaultSkin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}
-.defaultSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
-.defaultSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}
-.defaultSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}
-.defaultSkin a.mceMoreColors:hover {border:1px solid #0A246A}
-.defaultSkin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a}
-.defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px}
-
-/* Menu */
-.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8}
-.defaultSkin .mceNoIcons span.mceIcon {width:0;}
-.defaultSkin .mceNoIcons a .mceText {padding-left:10px}
-.defaultSkin .mceMenu table {background:#FFF}
-.defaultSkin .mceMenu a, .defaultSkin .mceMenu span, .defaultSkin .mceMenu {display:block}
-.defaultSkin .mceMenu td {height:20px}
-.defaultSkin .mceMenu a {position:relative;padding:3px 0 4px 0}
-.defaultSkin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}
-.defaultSkin .mceMenu span.mceText, .defaultSkin .mceMenu .mcePreview {font-size:11px}
-.defaultSkin .mceMenu pre.mceText {font-family:Monospace}
-.defaultSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}
-.defaultSkin .mceMenu .mceMenuItemEnabled a:hover, .defaultSkin .mceMenu .mceMenuItemActive {background-color:#dbecf3}
-.defaultSkin td.mceMenuItemSeparator {background:#DDD; height:1px}
-.defaultSkin .mceMenuItemTitle a {border:0; background:#EEE; border-bottom:1px solid #DDD}
-.defaultSkin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}
-.defaultSkin .mceMenuItemDisabled .mceText {color:#888}
-.defaultSkin .mceMenuItemSelected .mceIcon {background:url(img/menu_check.gif)}
-.defaultSkin .mceNoIcons .mceMenuItemSelected a {background:url(img/menu_arrow.gif) no-repeat -6px center}
-.defaultSkin .mceMenu span.mceMenuLine {display:none}
-.defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;}
-
-/* Progress,Resize */
-.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50); background:#FFF}
-.defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
-
-/* Formats */
-.defaultSkin .mce_formatPreview a {font-size:10px}
-.defaultSkin .mce_p span.mceText {}
-.defaultSkin .mce_address span.mceText {font-style:italic}
-.defaultSkin .mce_pre span.mceText {font-family:monospace}
-.defaultSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
-.defaultSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
-.defaultSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
-.defaultSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
-.defaultSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
-.defaultSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
-
-/* Theme */
-.defaultSkin span.mce_bold {background-position:0 0}
-.defaultSkin span.mce_italic {background-position:-60px 0}
-.defaultSkin span.mce_underline {background-position:-140px 0}
-.defaultSkin span.mce_strikethrough {background-position:-120px 0}
-.defaultSkin span.mce_undo {background-position:-160px 0}
-.defaultSkin span.mce_redo {background-position:-100px 0}
-.defaultSkin span.mce_cleanup {background-position:-40px 0}
-.defaultSkin span.mce_bullist {background-position:-20px 0}
-.defaultSkin span.mce_numlist {background-position:-80px 0}
-.defaultSkin span.mce_justifyleft {background-position:-460px 0}
-.defaultSkin span.mce_justifyright {background-position:-480px 0}
-.defaultSkin span.mce_justifycenter {background-position:-420px 0}
-.defaultSkin span.mce_justifyfull {background-position:-440px 0}
-.defaultSkin span.mce_anchor {background-position:-200px 0}
-.defaultSkin span.mce_indent {background-position:-400px 0}
-.defaultSkin span.mce_outdent {background-position:-540px 0}
-.defaultSkin span.mce_link {background-position:-500px 0}
-.defaultSkin span.mce_unlink {background-position:-640px 0}
-.defaultSkin span.mce_sub {background-position:-600px 0}
-.defaultSkin span.mce_sup {background-position:-620px 0}
-.defaultSkin span.mce_removeformat {background-position:-580px 0}
-.defaultSkin span.mce_newdocument {background-position:-520px 0}
-.defaultSkin span.mce_image {background-position:-380px 0}
-.defaultSkin span.mce_help {background-position:-340px 0}
-.defaultSkin span.mce_code {background-position:-260px 0}
-.defaultSkin span.mce_hr {background-position:-360px 0}
-.defaultSkin span.mce_visualaid {background-position:-660px 0}
-.defaultSkin span.mce_charmap {background-position:-240px 0}
-.defaultSkin span.mce_paste {background-position:-560px 0}
-.defaultSkin span.mce_copy {background-position:-700px 0}
-.defaultSkin span.mce_cut {background-position:-680px 0}
-.defaultSkin span.mce_blockquote {background-position:-220px 0}
-.defaultSkin .mce_forecolor span.mceAction {background-position:-720px 0}
-.defaultSkin .mce_backcolor span.mceAction {background-position:-760px 0}
-.defaultSkin span.mce_forecolorpicker {background-position:-720px 0}
-.defaultSkin span.mce_backcolorpicker {background-position:-760px 0}
-
-/* Plugins */
-.defaultSkin span.mce_advhr {background-position:-0px -20px}
-.defaultSkin span.mce_ltr {background-position:-20px -20px}
-.defaultSkin span.mce_rtl {background-position:-40px -20px}
-.defaultSkin span.mce_emotions {background-position:-60px -20px}
-.defaultSkin span.mce_fullpage {background-position:-80px -20px}
-.defaultSkin span.mce_fullscreen {background-position:-100px -20px}
-.defaultSkin span.mce_iespell {background-position:-120px -20px}
-.defaultSkin span.mce_insertdate {background-position:-140px -20px}
-.defaultSkin span.mce_inserttime {background-position:-160px -20px}
-.defaultSkin span.mce_absolute {background-position:-180px -20px}
-.defaultSkin span.mce_backward {background-position:-200px -20px}
-.defaultSkin span.mce_forward {background-position:-220px -20px}
-.defaultSkin span.mce_insert_layer {background-position:-240px -20px}
-.defaultSkin span.mce_insertlayer {background-position:-260px -20px}
-.defaultSkin span.mce_movebackward {background-position:-280px -20px}
-.defaultSkin span.mce_moveforward {background-position:-300px -20px}
-.defaultSkin span.mce_media {background-position:-320px -20px}
-.defaultSkin span.mce_nonbreaking {background-position:-340px -20px}
-.defaultSkin span.mce_pastetext {background-position:-360px -20px}
-.defaultSkin span.mce_pasteword {background-position:-380px -20px}
-.defaultSkin span.mce_selectall {background-position:-400px -20px}
-.defaultSkin span.mce_preview {background-position:-420px -20px}
-.defaultSkin span.mce_print {background-position:-440px -20px}
-.defaultSkin span.mce_cancel {background-position:-460px -20px}
-.defaultSkin span.mce_save {background-position:-480px -20px}
-.defaultSkin span.mce_replace {background-position:-500px -20px}
-.defaultSkin span.mce_search {background-position:-520px -20px}
-.defaultSkin span.mce_styleprops {background-position:-560px -20px}
-.defaultSkin span.mce_table {background-position:-580px -20px}
-.defaultSkin span.mce_cell_props {background-position:-600px -20px}
-.defaultSkin span.mce_delete_table {background-position:-620px -20px}
-.defaultSkin span.mce_delete_col {background-position:-640px -20px}
-.defaultSkin span.mce_delete_row {background-position:-660px -20px}
-.defaultSkin span.mce_col_after {background-position:-680px -20px}
-.defaultSkin span.mce_col_before {background-position:-700px -20px}
-.defaultSkin span.mce_row_after {background-position:-720px -20px}
-.defaultSkin span.mce_row_before {background-position:-740px -20px}
-.defaultSkin span.mce_merge_cells {background-position:-760px -20px}
-.defaultSkin span.mce_table_props {background-position:-980px -20px}
-.defaultSkin span.mce_row_props {background-position:-780px -20px}
-.defaultSkin span.mce_split_cells {background-position:-800px -20px}
-.defaultSkin span.mce_template {background-position:-820px -20px}
-.defaultSkin span.mce_visualchars {background-position:-840px -20px}
-.defaultSkin span.mce_abbr {background-position:-860px -20px}
-.defaultSkin span.mce_acronym {background-position:-880px -20px}
-.defaultSkin span.mce_attribs {background-position:-900px -20px}
-.defaultSkin span.mce_cite {background-position:-920px -20px}
-.defaultSkin span.mce_del {background-position:-940px -20px}
-.defaultSkin span.mce_ins {background-position:-960px -20px}
-.defaultSkin span.mce_pagebreak {background-position:0 -40px}
-.defaultSkin span.mce_restoredraft {background-position:-20px -40px}
-.defaultSkin span.mce_spellchecker {background-position:-540px -20px}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/content.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/content.css
deleted file mode 100644
index fe09e2141..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/content.css
+++ /dev/null
@@ -1,25 +0,0 @@
-body, td, pre { margin:8px;}
-body.mceForceColors {background:#FFF; color:#000;}
-h1 {font-size: 2em}
-h2 {font-size: 1.5em}
-h3 {font-size: 1.17em}
-h4 {font-size: 1em}
-h5 {font-size: .83em}
-h6 {font-size: .75em}
-.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
-a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(../default/img/items.gif) no-repeat 0 0;}
-span.mceItemNbsp {background: #DDD}
-td.mceSelected, th.mceSelected {background-color:#3399ff !important}
-img {border:0;}
-table, img, hr, .mceItemAnchor {cursor:default}
-table td, table th {cursor:text}
-ins {border-bottom:1px solid green; text-decoration: none; color:green}
-del {color:red; text-decoration:line-through}
-cite {border-bottom:1px dashed blue}
-acronym {border-bottom:1px dotted #CCC; cursor:help}
-abbr {border-bottom:1px dashed #CCC; cursor:help}
-
-img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px}
-font[face=mceinline] {font-family:inherit !important}
-*[contentEditable]:focus {outline:0}
-.mceHideBrInPre pre br {display: none}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css
deleted file mode 100644
index 6d9fc8dd6..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css
+++ /dev/null
@@ -1,106 +0,0 @@
-/* Generic */
-body {
-font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
-background:#F0F0EE;
-color: black;
-padding:0;
-margin:8px 8px 0 8px;
-}
-
-html {background:#F0F0EE; color:#000;}
-td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-textarea {resize:none;outline:none;}
-a:link, a:visited {color:black;background-color:transparent;}
-a:hover {color:#2B6FB6;background-color:transparent;}
-.nowrap {white-space: nowrap}
-
-/* Forms */
-fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
-legend {color:#2B6FB6; font-weight:bold;}
-label.msg {display:none;}
-label.invalid {color:#EE0000; display:inline;background-color:transparent;}
-input.invalid {border:1px solid #EE0000;background-color:transparent;}
-input {background:#FFF; border:1px solid #CCC;color:black;}
-input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-input, select, textarea {border:1px solid #808080;}
-input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
-input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
-.input_noborder {border:0;}
-
-/* Buttons */
-#insert, #cancel, input.button, .updateButton {
-font-weight:bold;
-width:94px; height:23px;
-cursor:pointer;
-padding-bottom:2px;
-float:left;
-}
-
-#cancel {float:right}
-
-/* Browse */
-a.pickcolor, a.browse {text-decoration:none}
-a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
-.mceOldBoxModel a.browse span {width:22px; height:20px;}
-a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
-a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
-a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
-.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
-a.pickcolor:hover span {background-color:#B2BBD0;}
-a.pickcolor:hover span.disabled {}
-
-/* Charmap */
-table.charmap {border:1px solid #AAA; text-align:center}
-td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
-#charmap a {display:block; color:#000; text-decoration:none; border:0}
-#charmap a:hover {background:#CCC;color:#2B6FB6}
-#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
-#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
-
-/* Source */
-.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
-.mceActionPanel {margin-top:5px;}
-
-/* Tabs classes */
-.tabs {width:100%; height:18px; line-height:normal;}
-.tabs ul {margin:0; padding:0; list-style:none;}
-.tabs li {float:left; border: 1px solid black; border-bottom:0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block; cursor:pointer;}
-.tabs li.current {font-weight: bold; margin-right:2px;}
-.tabs span {float:left; display:block; padding:0px 10px 0 0;}
-.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
-.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
-
-/* Panels */
-.panel_wrapper div.panel {display:none;}
-.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
-.panel_wrapper {border:1px solid #919B9C; padding:10px; padding-top:5px; clear:both; background:white;}
-
-/* Columns */
-.column {float:left;}
-.properties {width:100%;}
-.properties .column1 {}
-.properties .column2 {text-align:left;}
-
-/* Titles */
-h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
-h3 {font-size:14px;}
-.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
-
-/* Dialog specific */
-#link .panel_wrapper, #link div.current {height:125px;}
-#image .panel_wrapper, #image div.current {height:200px;}
-#plugintable thead {font-weight:bold; background:#DDD;}
-#plugintable, #about #plugintable td {border:1px solid #919B9C;}
-#plugintable {width:96%; margin-top:10px;}
-#pluginscontainer {height:290px; overflow:auto;}
-#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
-#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
-#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}
-#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
-#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
-#colorpicker #light div {overflow:hidden;}
-#colorpicker .panel_wrapper div.current {height:175px;}
-#colorpicker #namedcolors {width:150px;}
-#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
-#colorpicker #colornamecontainer {margin-top:5px;}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css
deleted file mode 100644
index effbbe158..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css
+++ /dev/null
@@ -1,106 +0,0 @@
-/* Reset */
-.highcontrastSkin table, .highcontrastSkin tbody, .highcontrastSkin a, .highcontrastSkin img, .highcontrastSkin tr, .highcontrastSkin div, .highcontrastSkin td, .highcontrastSkin iframe, .highcontrastSkin span, .highcontrastSkin *, .highcontrastSkin .mceText {border:0; margin:0; padding:0; vertical-align:baseline; border-collapse:separate;}
-.highcontrastSkin a:hover, .highcontrastSkin a:link, .highcontrastSkin a:visited, .highcontrastSkin a:active {text-decoration:none; font-weight:normal; cursor:default;}
-.highcontrastSkin table td {vertical-align:middle}
-
-.highcontrastSkin .mceIconOnly {display: block !important;}
-
-/* External */
-.highcontrastSkin .mceExternalToolbar {position:absolute; border:1px solid; border-bottom:0; display:none; background-color: white;}
-.highcontrastSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
-.highcontrastSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px;}
-
-/* Layout */
-.highcontrastSkin table.mceLayout {border: 1px solid;}
-.highcontrastSkin .mceIframeContainer {border-top:1px solid; border-bottom:1px solid}
-.highcontrastSkin .mceStatusbar a:hover {text-decoration:underline}
-.highcontrastSkin .mceStatusbar {display:block; line-height:1.5em; overflow:visible;}
-.highcontrastSkin .mceStatusbar div {float:left}
-.highcontrastSkin .mceStatusbar a.mceResize {display:block; float:right; width:20px; height:20px; cursor:se-resize; outline:0}
-
-.highcontrastSkin .mceToolbar td { display: inline-block; float: left;}
-.highcontrastSkin .mceToolbar tr { display: block;}
-.highcontrastSkin .mceToolbar table { display: block; }
-
-/* Button */
-
-.highcontrastSkin .mceButton { display:block; margin: 2px; padding: 5px 10px;border: 1px solid; border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; -ms-border-radius: 3px; height: 2em;}
-.highcontrastSkin .mceButton .mceVoiceLabel { height: 100%; vertical-align: center; line-height: 2em}
-.highcontrastSkin .mceButtonDisabled .mceVoiceLabel { opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60);}
-.highcontrastSkin .mceButtonActive, .highcontrastSkin .mceButton:focus, .highcontrastSkin .mceButton:active { border: 5px solid; padding: 1px 6px;-webkit-focus-ring-color:none;outline:none;}
-
-/* Separator */
-.highcontrastSkin .mceSeparator {display:block; width:16px; height:26px;}
-
-/* ListBox */
-.highcontrastSkin .mceListBox { display: block; margin:2px;-webkit-focus-ring-color:none;outline:none;}
-.highcontrastSkin .mceListBox .mceText {padding: 5px 6px; line-height: 2em; width: 15ex; overflow: hidden;}
-.highcontrastSkin .mceListBoxDisabled .mceText { opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60);}
-.highcontrastSkin .mceListBox a.mceText { padding: 5px 10px; display: block; height: 2em; line-height: 2em; border: 1px solid; border-right: 0; border-radius: 3px 0px 0px 3px; -moz-border-radius: 3px 0px 0px 3px; -webkit-border-radius: 3px 0px 0px 3px; -ms-border-radius: 3px 0px 0px 3px;}
-.highcontrastSkin .mceListBox a.mceOpen { padding: 5px 4px; display: block; height: 2em; line-height: 2em; border: 1px solid; border-left: 0; border-radius: 0px 3px 3px 0px; -moz-border-radius: 0px 3px 3px 0px; -webkit-border-radius: 0px 3px 3px 0px; -ms-border-radius: 0px 3px 3px 0px;}
-.highcontrastSkin .mceListBox:focus a.mceText, .highcontrastSkin .mceListBox:active a.mceText { border-width: 5px; padding: 1px 10px 1px 6px;}
-.highcontrastSkin .mceListBox:focus a.mceOpen, .highcontrastSkin .mceListBox:active a.mceOpen { border-width: 5px; padding: 1px 0px 1px 4px;}
-
-.highcontrastSkin .mceListBoxMenu {overflow-y:auto}
-
-/* SplitButton */
-.highcontrastSkin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-
-.highcontrastSkin .mceSplitButton { border-collapse: collapse; margin: 2px; height: 2em; line-height: 2em;-webkit-focus-ring-color:none;outline:none;}
-.highcontrastSkin .mceSplitButton td { display: table-cell; float: none; margin: 0; padding: 0; height: 2em;}
-.highcontrastSkin .mceSplitButton tr { display: table-row; }
-.highcontrastSkin table.mceSplitButton { display: table; }
-.highcontrastSkin .mceSplitButton a.mceAction { padding: 5px 10px; display: block; height: 2em; line-height: 2em; overflow: hidden; border: 1px solid; border-right: 0; border-radius: 3px 0px 0px 3px; -moz-border-radius: 3px 0px 0px 3px; -webkit-border-radius: 3px 0px 0px 3px; -ms-border-radius: 3px 0px 0px 3px;}
-.highcontrastSkin .mceSplitButton a.mceOpen { padding: 5px 4px; display: block; height: 2em; line-height: 2em; border: 1px solid; border-radius: 0px 3px 3px 0px; -moz-border-radius: 0px 3px 3px 0px; -webkit-border-radius: 0px 3px 3px 0px; -ms-border-radius: 0px 3px 3px 0px;}
-.highcontrastSkin .mceSplitButton .mceVoiceLabel { height: 2em; vertical-align: center; line-height: 2em; }
-.highcontrastSkin .mceSplitButton:focus a.mceAction, .highcontrastSkin .mceSplitButton:active a.mceAction { border-width: 5px; border-right-width: 1px; padding: 1px 10px 1px 6px;-webkit-focus-ring-color:none;outline:none;}
-.highcontrastSkin .mceSplitButton:focus a.mceOpen, .highcontrastSkin .mceSplitButton:active a.mceOpen { border-width: 5px; border-left-width: 1px; padding: 1px 0px 1px 4px;-webkit-focus-ring-color:none;outline:none;}
-
-/* Menu */
-.highcontrastSkin .mceNoIcons span.mceIcon {width:0;}
-.highcontrastSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid; direction:ltr}
-.highcontrastSkin .mceMenu table {background:white; color: black}
-.highcontrastSkin .mceNoIcons a .mceText {padding-left:10px}
-.highcontrastSkin .mceMenu a, .highcontrastSkin .mceMenu span, .highcontrastSkin .mceMenu {display:block;background:white; color: black}
-.highcontrastSkin .mceMenu td {height:2em}
-.highcontrastSkin .mceMenu a {position:relative;padding:3px 0 4px 0; display: block;}
-.highcontrastSkin .mceMenu .mceText {position:relative; display:block; cursor:default; margin:0; padding:0 25px 0 25px;}
-.highcontrastSkin .mceMenu pre.mceText {font-family:Monospace}
-.highcontrastSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:26px;}
-.highcontrastSkin td.mceMenuItemSeparator {border-top:1px solid; height:1px}
-.highcontrastSkin .mceMenuItemTitle a {border:0; border-bottom:1px solid}
-.highcontrastSkin .mceMenuItemTitle span.mceText {font-weight:bold; padding-left:4px}
-.highcontrastSkin .mceNoIcons .mceMenuItemSelected span.mceText:before {content: "\2713\A0";}
-.highcontrastSkin .mceMenu span.mceMenuLine {display:none}
-.highcontrastSkin .mceMenuItemSub a .mceText:after {content: "\A0\25B8"}
-.highcontrastSkin .mceMenuItem td, .highcontrastSkin .mceMenuItem th {line-height: normal}
-
-/* ColorSplitButton */
-.highcontrastSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid; color: #000}
-.highcontrastSkin .mceColorSplitMenu td {padding:2px}
-.highcontrastSkin .mceColorSplitMenu a {display:block; width:16px; height:16px; overflow:hidden; color:#000; margin: 0; padding: 0;}
-.highcontrastSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
-.highcontrastSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}
-.highcontrastSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid; background-color:#B6BDD2}
-.highcontrastSkin a.mceMoreColors:hover {border:1px solid #0A246A; color: #000;}
-.highcontrastSkin .mceColorPreview {display:none;}
-.highcontrastSkin .mce_forecolor span.mceAction, .highcontrastSkin .mce_backcolor span.mceAction {height:17px;overflow:hidden}
-
-/* Progress,Resize */
-.highcontrastSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}
-.highcontrastSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
-
-/* Rtl */
-.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0}
-.mceRtl .mceMenuItem .mceText {text-align: right}
-
-/* Formats */
-.highcontrastSkin .mce_p span.mceText {}
-.highcontrastSkin .mce_address span.mceText {font-style:italic}
-.highcontrastSkin .mce_pre span.mceText {font-family:monospace}
-.highcontrastSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
-.highcontrastSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
-.highcontrastSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
-.highcontrastSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
-.highcontrastSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
-.highcontrastSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css
deleted file mode 100644
index 3537c8bc0..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css
+++ /dev/null
@@ -1,49 +0,0 @@
-body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
-body {background:#FFF;}
-body.mceForceColors {background:#FFF; color:#000;}
-h1 {font-size: 2em}
-h2 {font-size: 1.5em}
-h3 {font-size: 1.17em}
-h4 {font-size: 1em}
-h5 {font-size: .83em}
-h6 {font-size: .75em}
-.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
-a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(../default/img/items.gif) no-repeat 0 0;}
-span.mceItemNbsp {background: #DDD}
-td.mceSelected, th.mceSelected {background-color:#3399ff !important}
-img {border:0;}
-table, img, hr, .mceItemAnchor {cursor:default}
-table td, table th {cursor:text}
-ins {border-bottom:1px solid green; text-decoration: none; color:green}
-del {color:red; text-decoration:line-through}
-cite {border-bottom:1px dashed blue}
-acronym {border-bottom:1px dotted #CCC; cursor:help}
-abbr {border-bottom:1px dashed #CCC; cursor:help}
-
-/* IE */
-* html body {
-scrollbar-3dlight-color:#F0F0EE;
-scrollbar-arrow-color:#676662;
-scrollbar-base-color:#F0F0EE;
-scrollbar-darkshadow-color:#DDD;
-scrollbar-face-color:#E0E0DD;
-scrollbar-highlight-color:#F0F0EE;
-scrollbar-shadow-color:#F0F0EE;
-scrollbar-track-color:#F5F5F5;
-}
-
-img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px}
-font[face=mceinline] {font-family:inherit !important}
-*[contentEditable]:focus {outline:0}
-
-.mceItemMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc}
-.mceItemShockWave {background-image:url(../../img/shockwave.gif)}
-.mceItemFlash {background-image:url(../../img/flash.gif)}
-.mceItemQuickTime {background-image:url(../../img/quicktime.gif)}
-.mceItemWindowsMedia {background-image:url(../../img/windowsmedia.gif)}
-.mceItemRealMedia {background-image:url(../../img/realmedia.gif)}
-.mceItemVideo {background-image:url(../../img/video.gif)}
-.mceItemAudio {background-image:url(../../img/video.gif)}
-.mceItemIframe {background-image:url(../../img/iframe.gif)}
-.mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../../img/pagebreak.gif) no-repeat center top;}
-.mceHideBrInPre pre br {display: none}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css
deleted file mode 100644
index a54db98df..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css
+++ /dev/null
@@ -1,118 +0,0 @@
-/* Generic */
-body {
-font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
-scrollbar-3dlight-color:#F0F0EE;
-scrollbar-arrow-color:#676662;
-scrollbar-base-color:#F0F0EE;
-scrollbar-darkshadow-color:#DDDDDD;
-scrollbar-face-color:#E0E0DD;
-scrollbar-highlight-color:#F0F0EE;
-scrollbar-shadow-color:#F0F0EE;
-scrollbar-track-color:#F5F5F5;
-background:#F0F0EE;
-padding:0;
-margin:8px 8px 0 8px;
-}
-
-html {background:#F0F0EE;}
-td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-textarea {resize:none;outline:none;}
-a:link, a:visited {color:black;}
-a:hover {color:#2B6FB6;}
-.nowrap {white-space: nowrap}
-
-/* Forms */
-fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
-legend {color:#2B6FB6; font-weight:bold;}
-label.msg {display:none;}
-label.invalid {color:#EE0000; display:inline;}
-input.invalid {border:1px solid #EE0000;}
-input {background:#FFF; border:1px solid #CCC;}
-input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-input, select, textarea {border:1px solid #808080;}
-input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
-input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
-.input_noborder {border:0;}
-
-/* Buttons */
-#insert, #cancel, input.button, .updateButton {
-border:0; margin:0; padding:0;
-font-weight:bold;
-width:94px; height:26px;
-background:url(../default/img/buttons.png) 0 -26px;
-cursor:pointer;
-padding-bottom:2px;
-float:left;
-}
-
-#insert {background:url(../default/img/buttons.png) 0 -52px}
-#cancel {background:url(../default/img/buttons.png) 0 0; float:right}
-
-/* Browse */
-a.pickcolor, a.browse {text-decoration:none}
-a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
-.mceOldBoxModel a.browse span {width:22px; height:20px;}
-a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
-a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
-a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
-.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
-a.pickcolor:hover span {background-color:#B2BBD0;}
-a.pickcolor:hover span.disabled {}
-
-/* Charmap */
-table.charmap {border:1px solid #AAA; text-align:center}
-td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
-#charmap a {display:block; color:#000; text-decoration:none; border:0}
-#charmap a:hover {background:#CCC;color:#2B6FB6}
-#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
-#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
-
-/* Source */
-.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
-.mceActionPanel {margin-top:5px;}
-
-/* Tabs classes */
-.tabs {width:100%; height:18px; line-height:normal; background:url(../default/img/tabs.gif) repeat-x 0 -72px;}
-.tabs ul {margin:0; padding:0; list-style:none;}
-.tabs li {float:left; background:url(../default/img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
-.tabs li.current {background:url(../default/img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
-.tabs span {float:left; display:block; background:url(../default/img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
-.tabs .current span {background:url(../default/img/tabs.gif) no-repeat right -54px;}
-.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
-.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
-
-/* Panels */
-.panel_wrapper div.panel {display:none;}
-.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
-.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
-
-/* Columns */
-.column {float:left;}
-.properties {width:100%;}
-.properties .column1 {}
-.properties .column2 {text-align:left;}
-
-/* Titles */
-h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
-h3 {font-size:14px;}
-.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
-
-/* Dialog specific */
-#link .panel_wrapper, #link div.current {height:125px;}
-#image .panel_wrapper, #image div.current {height:200px;}
-#plugintable thead {font-weight:bold; background:#DDD;}
-#plugintable, #about #plugintable td {border:1px solid #919B9C;}
-#plugintable {width:96%; margin-top:10px;}
-#pluginscontainer {height:290px; overflow:auto;}
-#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
-#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
-#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}
-#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
-#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
-#colorpicker #light div {overflow:hidden;}
-#colorpicker .panel_wrapper div.current {height:175px;}
-#colorpicker #namedcolors {width:150px;}
-#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
-#colorpicker #colornamecontainer {margin-top:5px;}
-#colorpicker #picker_panel fieldset {margin:auto;width:325px;}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png
deleted file mode 100644
index 13a5cb030..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png
deleted file mode 100644
index 7fc57f2bc..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png
deleted file mode 100644
index c0dcc6cac..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css
deleted file mode 100644
index a31022371..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css
+++ /dev/null
@@ -1,222 +0,0 @@
-/* Reset */
-.o2k7Skin table, .o2k7Skin tbody, .o2k7Skin a, .o2k7Skin img, .o2k7Skin tr, .o2k7Skin div, .o2k7Skin td, .o2k7Skin iframe, .o2k7Skin span, .o2k7Skin *, .o2k7Skin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}
-.o2k7Skin a:hover, .o2k7Skin a:link, .o2k7Skin a:visited, .o2k7Skin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}
-.o2k7Skin table td {vertical-align:middle}
-
-/* Containers */
-.o2k7Skin table {background:transparent}
-.o2k7Skin iframe {display:block;}
-.o2k7Skin .mceToolbar {height:26px}
-
-/* External */
-.o2k7Skin .mceExternalToolbar {position:absolute; border:1px solid #ABC6DD; border-bottom:0; display:none}
-.o2k7Skin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
-.o2k7Skin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}
-
-/* Layout */
-.o2k7Skin table.mceLayout {border:0; border-left:1px solid #ABC6DD; border-right:1px solid #ABC6DD}
-.o2k7Skin table.mceLayout tr.mceFirst td {border-top:1px solid #ABC6DD}
-.o2k7Skin table.mceLayout tr.mceLast td {border-bottom:1px solid #ABC6DD}
-.o2k7Skin table.mceToolbar, .o2k7Skin tr.mceFirst .mceToolbar tr td, .o2k7Skin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0}
-.o2k7Skin .mceIframeContainer {border-top:1px solid #ABC6DD; border-bottom:1px solid #ABC6DD}
-.o2k7Skin td.mceToolbar{background:#E5EFFD}
-.o2k7Skin .mceStatusbar {background:#E5EFFD; display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px}
-.o2k7Skin .mceStatusbar div {float:left; padding:2px}
-.o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0}
-.o2k7Skin .mceStatusbar a:hover {text-decoration:underline}
-.o2k7Skin table.mceToolbar {margin-left:3px}
-.o2k7Skin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; margin-left:3px;}
-.o2k7Skin .mceToolbar td.mceFirst span {margin:0}
-.o2k7Skin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px}
-.o2k7Skin .mceToolbar .mceToolbarEndListBox span, .o2k7Skin .mceToolbar .mceToolbarStartListBox span {display:none}
-.o2k7Skin span.mceIcon, .o2k7Skin img.mceIcon {display:block; width:20px; height:20px}
-.o2k7Skin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
-.o2k7Skin td.mceCenter {text-align:center;}
-.o2k7Skin td.mceCenter table {margin:0 auto; text-align:left;}
-.o2k7Skin td.mceRight table {margin:0 0 0 auto;}
-
-/* Button */
-.o2k7Skin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px}
-.o2k7Skin a.mceButton span, .o2k7Skin a.mceButton img {margin-left:1px}
-.o2k7Skin .mceOldBoxModel a.mceButton span, .o2k7Skin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px}
-.o2k7Skin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}
-.o2k7Skin a.mceButtonActive, .o2k7Skin a.mceButtonSelected {background-position:0 -44px}
-.o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-.o2k7Skin .mceButtonLabeled {width:auto}
-.o2k7Skin .mceButtonLabeled span.mceIcon {float:left}
-.o2k7Skin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}
-.o2k7Skin .mceButtonDisabled .mceButtonLabel {color:#888}
-
-/* Separator */
-.o2k7Skin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}
-
-/* ListBox */
-.o2k7Skin .mceListBox {padding-left: 3px}
-.o2k7Skin .mceListBox, .o2k7Skin .mceListBox a {display:block}
-.o2k7Skin .mceListBox .mceText {padding-left:4px; text-align:left; width:70px; border:1px solid #b3c7e1; border-right:0; background:#eaf2fb; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}
-.o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0}
-.o2k7Skin table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF}
-.o2k7Skin table.mceListBoxEnabled:hover .mceOpen, .o2k7Skin .mceListBoxHover .mceOpen, .o2k7Skin .mceListBoxSelected .mceOpen {background-position:-66px -22px}
-.o2k7Skin .mceListBoxDisabled .mceText {color:gray}
-.o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden; margin-left:3px}
-.o2k7Skin .mceOldBoxModel .mceListBox .mceText {height:22px}
-.o2k7Skin select.mceListBox {font-family:Tahoma,Verdana,Arial,Helvetica; font-size:12px; border:1px solid #b3c7e1; background:#FFF;}
-
-/* SplitButton */
-.o2k7Skin .mceSplitButton, .o2k7Skin .mceSplitButton a, .o2k7Skin .mceSplitButton span {display:block; height:22px; direction:ltr}
-.o2k7Skin .mceSplitButton {background:url(img/button_bg.png)}
-.o2k7Skin .mceSplitButton a.mceAction {width:22px}
-.o2k7Skin .mceSplitButton span.mceAction {width:22px; background-image:url(../../img/icons.gif)}
-.o2k7Skin .mceSplitButton a.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0}
-.o2k7Skin .mceSplitButton span.mceOpen {display:none}
-.o2k7Skin table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background:url(img/button_bg.png) 0 -22px}
-.o2k7Skin table.mceSplitButtonEnabled:hover a.mceOpen, .o2k7Skin .mceSplitButtonHover a.mceOpen, .o2k7Skin .mceSplitButtonSelected a.mceOpen {background-position:-44px -44px}
-.o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-.o2k7Skin .mceSplitButtonActive {background-position:0 -44px}
-
-/* ColorSplitButton */
-.o2k7Skin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}
-.o2k7Skin .mceColorSplitMenu td {padding:2px}
-.o2k7Skin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}
-.o2k7Skin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
-.o2k7Skin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}
-.o2k7Skin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}
-.o2k7Skin a.mceMoreColors:hover {border:1px solid #0A246A}
-.o2k7Skin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a;overflow:hidden}
-.o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden}
-
-/* Menu */
-.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD; direction:ltr}
-.o2k7Skin .mceNoIcons span.mceIcon {width:0;}
-.o2k7Skin .mceNoIcons a .mceText {padding-left:10px}
-.o2k7Skin .mceMenu table {background:#FFF}
-.o2k7Skin .mceMenu a, .o2k7Skin .mceMenu span, .o2k7Skin .mceMenu {display:block}
-.o2k7Skin .mceMenu td {height:20px}
-.o2k7Skin .mceMenu a {position:relative;padding:3px 0 4px 0}
-.o2k7Skin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}
-.o2k7Skin .mceMenu span.mceText, .o2k7Skin .mceMenu .mcePreview {font-size:11px}
-.o2k7Skin .mceMenu pre.mceText {font-family:Monospace}
-.o2k7Skin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}
-.o2k7Skin .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#dbecf3}
-.o2k7Skin td.mceMenuItemSeparator {background:#DDD; height:1px}
-.o2k7Skin .mceMenuItemTitle a {border:0; background:#E5EFFD; border-bottom:1px solid #ABC6DD}
-.o2k7Skin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}
-.o2k7Skin .mceMenuItemDisabled .mceText {color:#888}
-.o2k7Skin .mceMenuItemSelected .mceIcon {background:url(../default/img/menu_check.gif)}
-.o2k7Skin .mceNoIcons .mceMenuItemSelected a {background:url(../default/img/menu_arrow.gif) no-repeat -6px center}
-.o2k7Skin .mceMenu span.mceMenuLine {display:none}
-.o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;}
-.o2k7Skin .mceMenuItem td, .o2k7Skin .mceMenuItem th {line-height: normal}
-
-/* Progress,Resize */
-.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}
-.o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
-
-/* Rtl */
-.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0}
-.mceRtl .mceMenuItem .mceText {text-align: right}
-
-/* Formats */
-.o2k7Skin .mce_formatPreview a {font-size:10px}
-.o2k7Skin .mce_p span.mceText {}
-.o2k7Skin .mce_address span.mceText {font-style:italic}
-.o2k7Skin .mce_pre span.mceText {font-family:monospace}
-.o2k7Skin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
-.o2k7Skin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
-.o2k7Skin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
-.o2k7Skin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
-.o2k7Skin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
-.o2k7Skin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
-
-/* Theme */
-.o2k7Skin span.mce_bold {background-position:0 0}
-.o2k7Skin span.mce_italic {background-position:-60px 0}
-.o2k7Skin span.mce_underline {background-position:-140px 0}
-.o2k7Skin span.mce_strikethrough {background-position:-120px 0}
-.o2k7Skin span.mce_undo {background-position:-160px 0}
-.o2k7Skin span.mce_redo {background-position:-100px 0}
-.o2k7Skin span.mce_cleanup {background-position:-40px 0}
-.o2k7Skin span.mce_bullist {background-position:-20px 0}
-.o2k7Skin span.mce_numlist {background-position:-80px 0}
-.o2k7Skin span.mce_justifyleft {background-position:-460px 0}
-.o2k7Skin span.mce_justifyright {background-position:-480px 0}
-.o2k7Skin span.mce_justifycenter {background-position:-420px 0}
-.o2k7Skin span.mce_justifyfull {background-position:-440px 0}
-.o2k7Skin span.mce_anchor {background-position:-200px 0}
-.o2k7Skin span.mce_indent {background-position:-400px 0}
-.o2k7Skin span.mce_outdent {background-position:-540px 0}
-.o2k7Skin span.mce_link {background-position:-500px 0}
-.o2k7Skin span.mce_unlink {background-position:-640px 0}
-.o2k7Skin span.mce_sub {background-position:-600px 0}
-.o2k7Skin span.mce_sup {background-position:-620px 0}
-.o2k7Skin span.mce_removeformat {background-position:-580px 0}
-.o2k7Skin span.mce_newdocument {background-position:-520px 0}
-.o2k7Skin span.mce_image {background-position:-380px 0}
-.o2k7Skin span.mce_help {background-position:-340px 0}
-.o2k7Skin span.mce_code {background-position:-260px 0}
-.o2k7Skin span.mce_hr {background-position:-360px 0}
-.o2k7Skin span.mce_visualaid {background-position:-660px 0}
-.o2k7Skin span.mce_charmap {background-position:-240px 0}
-.o2k7Skin span.mce_paste {background-position:-560px 0}
-.o2k7Skin span.mce_copy {background-position:-700px 0}
-.o2k7Skin span.mce_cut {background-position:-680px 0}
-.o2k7Skin span.mce_blockquote {background-position:-220px 0}
-.o2k7Skin .mce_forecolor span.mceAction {background-position:-720px 0}
-.o2k7Skin .mce_backcolor span.mceAction {background-position:-760px 0}
-.o2k7Skin span.mce_forecolorpicker {background-position:-720px 0}
-.o2k7Skin span.mce_backcolorpicker {background-position:-760px 0}
-
-/* Plugins */
-.o2k7Skin span.mce_advhr {background-position:-0px -20px}
-.o2k7Skin span.mce_ltr {background-position:-20px -20px}
-.o2k7Skin span.mce_rtl {background-position:-40px -20px}
-.o2k7Skin span.mce_emotions {background-position:-60px -20px}
-.o2k7Skin span.mce_fullpage {background-position:-80px -20px}
-.o2k7Skin span.mce_fullscreen {background-position:-100px -20px}
-.o2k7Skin span.mce_iespell {background-position:-120px -20px}
-.o2k7Skin span.mce_insertdate {background-position:-140px -20px}
-.o2k7Skin span.mce_inserttime {background-position:-160px -20px}
-.o2k7Skin span.mce_absolute {background-position:-180px -20px}
-.o2k7Skin span.mce_backward {background-position:-200px -20px}
-.o2k7Skin span.mce_forward {background-position:-220px -20px}
-.o2k7Skin span.mce_insert_layer {background-position:-240px -20px}
-.o2k7Skin span.mce_insertlayer {background-position:-260px -20px}
-.o2k7Skin span.mce_movebackward {background-position:-280px -20px}
-.o2k7Skin span.mce_moveforward {background-position:-300px -20px}
-.o2k7Skin span.mce_media {background-position:-320px -20px}
-.o2k7Skin span.mce_nonbreaking {background-position:-340px -20px}
-.o2k7Skin span.mce_pastetext {background-position:-360px -20px}
-.o2k7Skin span.mce_pasteword {background-position:-380px -20px}
-.o2k7Skin span.mce_selectall {background-position:-400px -20px}
-.o2k7Skin span.mce_preview {background-position:-420px -20px}
-.o2k7Skin span.mce_print {background-position:-440px -20px}
-.o2k7Skin span.mce_cancel {background-position:-460px -20px}
-.o2k7Skin span.mce_save {background-position:-480px -20px}
-.o2k7Skin span.mce_replace {background-position:-500px -20px}
-.o2k7Skin span.mce_search {background-position:-520px -20px}
-.o2k7Skin span.mce_styleprops {background-position:-560px -20px}
-.o2k7Skin span.mce_table {background-position:-580px -20px}
-.o2k7Skin span.mce_cell_props {background-position:-600px -20px}
-.o2k7Skin span.mce_delete_table {background-position:-620px -20px}
-.o2k7Skin span.mce_delete_col {background-position:-640px -20px}
-.o2k7Skin span.mce_delete_row {background-position:-660px -20px}
-.o2k7Skin span.mce_col_after {background-position:-680px -20px}
-.o2k7Skin span.mce_col_before {background-position:-700px -20px}
-.o2k7Skin span.mce_row_after {background-position:-720px -20px}
-.o2k7Skin span.mce_row_before {background-position:-740px -20px}
-.o2k7Skin span.mce_merge_cells {background-position:-760px -20px}
-.o2k7Skin span.mce_table_props {background-position:-980px -20px}
-.o2k7Skin span.mce_row_props {background-position:-780px -20px}
-.o2k7Skin span.mce_split_cells {background-position:-800px -20px}
-.o2k7Skin span.mce_template {background-position:-820px -20px}
-.o2k7Skin span.mce_visualchars {background-position:-840px -20px}
-.o2k7Skin span.mce_abbr {background-position:-860px -20px}
-.o2k7Skin span.mce_acronym {background-position:-880px -20px}
-.o2k7Skin span.mce_attribs {background-position:-900px -20px}
-.o2k7Skin span.mce_cite {background-position:-920px -20px}
-.o2k7Skin span.mce_del {background-position:-940px -20px}
-.o2k7Skin span.mce_ins {background-position:-960px -20px}
-.o2k7Skin span.mce_pagebreak {background-position:0 -40px}
-.o2k7Skin span.mce_restoredraft {background-position:-20px -40px}
-.o2k7Skin span.mce_spellchecker {background-position:-540px -20px}
-.o2k7Skin span.mce_visualblocks {background-position: -40px -40px}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css
deleted file mode 100644
index 50c9b76a2..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Black */
-.o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton a.mceOpen, .o2k7SkinBlack .mceListBox a.mceOpen {background-image:url(img/button_bg_black.png)}
-.o2k7SkinBlack td.mceToolbar, .o2k7SkinBlack td.mceStatusbar, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF}
-.o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0}
-.o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7SkinBlack .mceListBoxHover .mceText, .o2k7SkinBlack .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0}
-.o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;}
-.o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7SkinBlack .mceSplitButtonHover a.mceAction, .o2k7SkinBlack .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)}
-.o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7SkinBlack .mceMenu .mceMenuItemActive {background-color:#FFE7A1} \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css
deleted file mode 100644
index 960a8e475..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/* Silver */
-.o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton a.mceOpen, .o2k7SkinSilver .mceListBox a.mceOpen {background-image:url(img/button_bg_silver.png)}
-.o2k7SkinSilver td.mceToolbar, .o2k7SkinSilver td.mceStatusbar, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee}
-.o2k7SkinSilver .mceListBox .mceText {background:#FFF}
-.o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm b/library/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm
deleted file mode 100644
index 3c6d65808..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm
+++ /dev/null
@@ -1,25 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advanced_dlg.code_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/source_editor.js"></script>
-</head>
-<body onresize="resizeInputs();" style="display:none; overflow:hidden;">
- <form name="source" onsubmit="saveContent();return false;" action="#">
- <div style="float: left" class="title"><label for="htmlSource">{#advanced_dlg.code_title}</label></div>
-
- <div id="wrapline" style="float: right">
- <input type="checkbox" name="wraped" id="wraped" onclick="toggleWordWrap(this);" class="wordWrapCode" /><label for="wraped">{#advanced_dlg.code_wordwrap}</label>
- </div>
-
- <br style="clear: both" />
-
- <textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,monospace; font-size: 12px;" dir="ltr" wrap="off" class="mceFocus"></textarea>
-
- <div class="mceActionPanel">
- <input type="submit" role="button" name="insert" value="{#update}" id="insert" />
- <input type="button" role="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
- </div>
- </form>
-</body>
-</html>
diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js b/library/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js
deleted file mode 100644
index 4b3209cc9..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var a=tinymce.DOM;tinymce.ThemeManager.requireLangPack("simple");tinymce.create("tinymce.themes.SimpleTheme",{init:function(c,d){var e=this,b=["Bold","Italic","Underline","Strikethrough","InsertUnorderedList","InsertOrderedList"],f=c.settings;e.editor=c;c.contentCSS.push(d+"/skins/"+f.skin+"/content.css");c.onInit.add(function(){c.onNodeChange.add(function(h,g){tinymce.each(b,function(i){g.get(i.toLowerCase()).setActive(h.queryCommandState(i))})})});a.loadCSS((f.editor_css?c.documentBaseURI.toAbsolute(f.editor_css):"")||d+"/skins/"+f.skin+"/ui.css")},renderUI:function(h){var e=this,i=h.targetNode,b,c,d=e.editor,f=d.controlManager,g;i=a.insertAfter(a.create("span",{id:d.id+"_container","class":"mceEditor "+d.settings.skin+"SimpleSkin"}),i);i=g=a.add(i,"table",{cellPadding:0,cellSpacing:0,"class":"mceLayout"});i=c=a.add(i,"tbody");i=a.add(c,"tr");i=b=a.add(a.add(i,"td"),"div",{"class":"mceIframeContainer"});i=a.add(a.add(c,"tr",{"class":"last"}),"td",{"class":"mceToolbar mceLast",align:"center"});c=e.toolbar=f.createToolbar("tools1");c.add(f.createButton("bold",{title:"simple.bold_desc",cmd:"Bold"}));c.add(f.createButton("italic",{title:"simple.italic_desc",cmd:"Italic"}));c.add(f.createButton("underline",{title:"simple.underline_desc",cmd:"Underline"}));c.add(f.createButton("strikethrough",{title:"simple.striketrough_desc",cmd:"Strikethrough"}));c.add(f.createSeparator());c.add(f.createButton("undo",{title:"simple.undo_desc",cmd:"Undo"}));c.add(f.createButton("redo",{title:"simple.redo_desc",cmd:"Redo"}));c.add(f.createSeparator());c.add(f.createButton("cleanup",{title:"simple.cleanup_desc",cmd:"mceCleanup"}));c.add(f.createSeparator());c.add(f.createButton("insertunorderedlist",{title:"simple.bullist_desc",cmd:"InsertUnorderedList"}));c.add(f.createButton("insertorderedlist",{title:"simple.numlist_desc",cmd:"InsertOrderedList"}));c.renderTo(i);return{iframeContainer:b,editorContainer:d.id+"_container",sizeContainer:g,deltaHeight:-20}},getInfo:function(){return{longname:"Simple theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add("simple",tinymce.themes.SimpleTheme)})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js b/library/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js
deleted file mode 100644
index 01ce87c58..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * editor_template_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var DOM = tinymce.DOM;
-
- // Tell it to load theme specific language pack(s)
- tinymce.ThemeManager.requireLangPack('simple');
-
- tinymce.create('tinymce.themes.SimpleTheme', {
- init : function(ed, url) {
- var t = this, states = ['Bold', 'Italic', 'Underline', 'Strikethrough', 'InsertUnorderedList', 'InsertOrderedList'], s = ed.settings;
-
- t.editor = ed;
- ed.contentCSS.push(url + "/skins/" + s.skin + "/content.css");
-
- ed.onInit.add(function() {
- ed.onNodeChange.add(function(ed, cm) {
- tinymce.each(states, function(c) {
- cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));
- });
- });
- });
-
- DOM.loadCSS((s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : '') || url + "/skins/" + s.skin + "/ui.css");
- },
-
- renderUI : function(o) {
- var t = this, n = o.targetNode, ic, tb, ed = t.editor, cf = ed.controlManager, sc;
-
- n = DOM.insertAfter(DOM.create('span', {id : ed.id + '_container', 'class' : 'mceEditor ' + ed.settings.skin + 'SimpleSkin'}), n);
- n = sc = DOM.add(n, 'table', {cellPadding : 0, cellSpacing : 0, 'class' : 'mceLayout'});
- n = tb = DOM.add(n, 'tbody');
-
- // Create iframe container
- n = DOM.add(tb, 'tr');
- n = ic = DOM.add(DOM.add(n, 'td'), 'div', {'class' : 'mceIframeContainer'});
-
- // Create toolbar container
- n = DOM.add(DOM.add(tb, 'tr', {'class' : 'last'}), 'td', {'class' : 'mceToolbar mceLast', align : 'center'});
-
- // Create toolbar
- tb = t.toolbar = cf.createToolbar("tools1");
- tb.add(cf.createButton('bold', {title : 'simple.bold_desc', cmd : 'Bold'}));
- tb.add(cf.createButton('italic', {title : 'simple.italic_desc', cmd : 'Italic'}));
- tb.add(cf.createButton('underline', {title : 'simple.underline_desc', cmd : 'Underline'}));
- tb.add(cf.createButton('strikethrough', {title : 'simple.striketrough_desc', cmd : 'Strikethrough'}));
- tb.add(cf.createSeparator());
- tb.add(cf.createButton('undo', {title : 'simple.undo_desc', cmd : 'Undo'}));
- tb.add(cf.createButton('redo', {title : 'simple.redo_desc', cmd : 'Redo'}));
- tb.add(cf.createSeparator());
- tb.add(cf.createButton('cleanup', {title : 'simple.cleanup_desc', cmd : 'mceCleanup'}));
- tb.add(cf.createSeparator());
- tb.add(cf.createButton('insertunorderedlist', {title : 'simple.bullist_desc', cmd : 'InsertUnorderedList'}));
- tb.add(cf.createButton('insertorderedlist', {title : 'simple.numlist_desc', cmd : 'InsertOrderedList'}));
- tb.renderTo(n);
-
- return {
- iframeContainer : ic,
- editorContainer : ed.id + '_container',
- sizeContainer : sc,
- deltaHeight : -20
- };
- },
-
- getInfo : function() {
- return {
- longname : 'Simple theme',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- }
- }
- });
-
- tinymce.ThemeManager.add('simple', tinymce.themes.SimpleTheme);
-})(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif b/library/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif
deleted file mode 100644
index 6fcbcb5de..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js b/library/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js
deleted file mode 100644
index 088ed0fcb..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.simple',{"cleanup_desc":"Cleanup Messy Code","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","numlist_desc":"Insert/Remove Numbered List","bullist_desc":"Insert/Remove Bulleted List","striketrough_desc":"Strikethrough","underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)"}); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css b/library/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css
deleted file mode 100644
index 2506c807c..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css
+++ /dev/null
@@ -1,25 +0,0 @@
-body, td, pre {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 10px;
-}
-
-body {
- background-color: #FFFFFF;
-}
-
-.mceVisualAid {
- border: 1px dashed #BBBBBB;
-}
-
-/* MSIE specific */
-
-* html body {
- scrollbar-3dlight-color: #F0F0EE;
- scrollbar-arrow-color: #676662;
- scrollbar-base-color: #F0F0EE;
- scrollbar-darkshadow-color: #DDDDDD;
- scrollbar-face-color: #E0E0DD;
- scrollbar-highlight-color: #F0F0EE;
- scrollbar-shadow-color: #F0F0EE;
- scrollbar-track-color: #F5F5F5;
-}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css b/library/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css
deleted file mode 100644
index 076fe84e3..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Reset */
-.defaultSimpleSkin table, .defaultSimpleSkin tbody, .defaultSimpleSkin a, .defaultSimpleSkin img, .defaultSimpleSkin tr, .defaultSimpleSkin div, .defaultSimpleSkin td, .defaultSimpleSkin iframe, .defaultSimpleSkin span, .defaultSimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}
-
-/* Containers */
-.defaultSimpleSkin {position:relative}
-.defaultSimpleSkin table.mceLayout {background:#F0F0EE; border:1px solid #CCC;}
-.defaultSimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #CCC;}
-.defaultSimpleSkin .mceToolbar {height:24px;}
-
-/* Layout */
-.defaultSimpleSkin span.mceIcon, .defaultSimpleSkin img.mceIcon {display:block; width:20px; height:20px}
-.defaultSimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
-
-/* Button */
-.defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px}
-.defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}
-.defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0}
-.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-
-/* Separator */
-.defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px}
-
-/* Theme */
-.defaultSimpleSkin span.mce_bold {background-position:0 0}
-.defaultSimpleSkin span.mce_italic {background-position:-60px 0}
-.defaultSimpleSkin span.mce_underline {background-position:-140px 0}
-.defaultSimpleSkin span.mce_strikethrough {background-position:-120px 0}
-.defaultSimpleSkin span.mce_undo {background-position:-160px 0}
-.defaultSimpleSkin span.mce_redo {background-position:-100px 0}
-.defaultSimpleSkin span.mce_cleanup {background-position:-40px 0}
-.defaultSimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}
-.defaultSimpleSkin span.mce_insertorderedlist {background-position:-80px 0}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css b/library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css
deleted file mode 100644
index 595809fa6..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css
+++ /dev/null
@@ -1,17 +0,0 @@
-body, td, pre {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-
-body {background: #FFF;}
-.mceVisualAid {border: 1px dashed #BBB;}
-
-/* IE */
-
-* html body {
-scrollbar-3dlight-color: #F0F0EE;
-scrollbar-arrow-color: #676662;
-scrollbar-base-color: #F0F0EE;
-scrollbar-darkshadow-color: #DDDDDD;
-scrollbar-face-color: #E0E0DD;
-scrollbar-highlight-color: #F0F0EE;
-scrollbar-shadow-color: #F0F0EE;
-scrollbar-track-color: #F5F5F5;
-}
diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png b/library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png
deleted file mode 100644
index 527e3495a..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png
+++ /dev/null
Binary files differ
diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css b/library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css
deleted file mode 100644
index cf6c35d10..000000000
--- a/library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Reset */
-.o2k7SimpleSkin table, .o2k7SimpleSkin tbody, .o2k7SimpleSkin a, .o2k7SimpleSkin img, .o2k7SimpleSkin tr, .o2k7SimpleSkin div, .o2k7SimpleSkin td, .o2k7SimpleSkin iframe, .o2k7SimpleSkin span, .o2k7SimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}
-
-/* Containers */
-.o2k7SimpleSkin {position:relative}
-.o2k7SimpleSkin table.mceLayout {background:#E5EFFD; border:1px solid #ABC6DD;}
-.o2k7SimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #ABC6DD;}
-.o2k7SimpleSkin .mceToolbar {height:26px;}
-
-/* Layout */
-.o2k7SimpleSkin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; }
-.o2k7SimpleSkin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px}
-.o2k7SimpleSkin span.mceIcon, .o2k7SimpleSkin img.mceIcon {display:block; width:20px; height:20px}
-.o2k7SimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
-
-/* Button */
-.o2k7SimpleSkin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px}
-.o2k7SimpleSkin a.mceButton span, .o2k7SimpleSkin a.mceButton img {margin:1px 0 0 1px}
-.o2k7SimpleSkin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}
-.o2k7SimpleSkin a.mceButtonActive {background-position:0 -44px}
-.o2k7SimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-
-/* Separator */
-.o2k7SimpleSkin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}
-
-/* Theme */
-.o2k7SimpleSkin span.mce_bold {background-position:0 0}
-.o2k7SimpleSkin span.mce_italic {background-position:-60px 0}
-.o2k7SimpleSkin span.mce_underline {background-position:-140px 0}
-.o2k7SimpleSkin span.mce_strikethrough {background-position:-120px 0}
-.o2k7SimpleSkin span.mce_undo {background-position:-160px 0}
-.o2k7SimpleSkin span.mce_redo {background-position:-100px 0}
-.o2k7SimpleSkin span.mce_cleanup {background-position:-40px 0}
-.o2k7SimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}
-.o2k7SimpleSkin span.mce_insertorderedlist {background-position:-80px 0}
diff --git a/library/tinymce/jscripts/tiny_mce/tiny_mce.js b/library/tinymce/jscripts/tiny_mce/tiny_mce.js
deleted file mode 100644
index f52fd836f..000000000
--- a/library/tinymce/jscripts/tiny_mce/tiny_mce.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(e){var a=/^\s*|\s*$/g,b,d="B".replace(/A(.)|B/,"$1")==="$1";var c={majorVersion:"3",minorVersion:"5.0.1",releaseDate:"2012-05-10",_init:function(){var s=this,q=document,o=navigator,g=o.userAgent,m,f,l,k,j,r;s.isOpera=e.opera&&opera.buildNumber;s.isWebKit=/WebKit/.test(g);s.isIE=!s.isWebKit&&!s.isOpera&&(/MSIE/gi).test(g)&&(/Explorer/gi).test(o.appName);s.isIE6=s.isIE&&/MSIE [56]/.test(g);s.isIE7=s.isIE&&/MSIE [7]/.test(g);s.isIE8=s.isIE&&/MSIE [8]/.test(g);s.isIE9=s.isIE&&/MSIE [9]/.test(g);s.isGecko=!s.isWebKit&&/Gecko/.test(g);s.isMac=g.indexOf("Mac")!=-1;s.isAir=/adobeair/i.test(g);s.isIDevice=/(iPad|iPhone)/.test(g);s.isIOS5=s.isIDevice&&g.match(/AppleWebKit\/(\d*)/)[1]>=534;if(e.tinyMCEPreInit){s.suffix=tinyMCEPreInit.suffix;s.baseURL=tinyMCEPreInit.base;s.query=tinyMCEPreInit.query;return}s.suffix="";f=q.getElementsByTagName("base");for(m=0;m<f.length;m++){r=f[m].href;if(r){if(/^https?:\/\/[^\/]+$/.test(r)){r+="/"}k=r?r.match(/.*\//)[0]:""}}function h(i){if(i.src&&/tiny_mce(|_gzip|_jquery|_prototype|_full)(_dev|_src)?.js/.test(i.src)){if(/_(src|dev)\.js/g.test(i.src)){s.suffix="_src"}if((j=i.src.indexOf("?"))!=-1){s.query=i.src.substring(j+1)}s.baseURL=i.src.substring(0,i.src.lastIndexOf("/"));if(k&&s.baseURL.indexOf("://")==-1&&s.baseURL.indexOf("/")!==0){s.baseURL=k+s.baseURL}return s.baseURL}return null}f=q.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}l=q.getElementsByTagName("head")[0];if(l){f=l.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}}return},is:function(g,f){if(!f){return g!==b}if(f=="array"&&(g.hasOwnProperty&&g instanceof Array)){return true}return typeof(g)==f},makeMap:function(f,j,h){var g;f=f||[];j=j||",";if(typeof(f)=="string"){f=f.split(j)}h=h||{};g=f.length;while(g--){h[f[g]]={}}return h},each:function(i,f,h){var j,g;if(!i){return 0}h=h||i;if(i.length!==b){for(j=0,g=i.length;j<g;j++){if(f.call(h,i[j],j,i)===false){return 0}}}else{for(j in i){if(i.hasOwnProperty(j)){if(f.call(h,i[j],j,i)===false){return 0}}}}return 1},map:function(g,h){var i=[];c.each(g,function(f){i.push(h(f))});return i},grep:function(g,h){var i=[];c.each(g,function(f){if(!h||h(f)){i.push(f)}});return i},inArray:function(g,h){var j,f;if(g){for(j=0,f=g.length;j<f;j++){if(g[j]===h){return j}}}return -1},extend:function(n,k){var j,f,h,g=arguments,m;for(j=1,f=g.length;j<f;j++){k=g[j];for(h in k){if(k.hasOwnProperty(h)){m=k[h];if(m!==b){n[h]=m}}}}return n},trim:function(f){return(f?""+f:"").replace(a,"")},create:function(o,f,j){var n=this,g,i,k,l,h,m=0;o=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(o);k=o[3].match(/(^|\.)(\w+)$/i)[2];i=n.createNS(o[3].replace(/\.\w+$/,""),j);if(i[k]){return}if(o[2]=="static"){i[k]=f;if(this.onCreate){this.onCreate(o[2],o[3],i[k])}return}if(!f[k]){f[k]=function(){};m=1}i[k]=f[k];n.extend(i[k].prototype,f);if(o[5]){g=n.resolve(o[5]).prototype;l=o[5].match(/\.(\w+)$/i)[1];h=i[k];if(m){i[k]=function(){return g[l].apply(this,arguments)}}else{i[k]=function(){this.parent=g[l];return h.apply(this,arguments)}}i[k].prototype[k]=i[k];n.each(g,function(p,q){i[k].prototype[q]=g[q]});n.each(f,function(p,q){if(g[q]){i[k].prototype[q]=function(){this.parent=g[q];return p.apply(this,arguments)}}else{if(q!=k){i[k].prototype[q]=p}}})}n.each(f["static"],function(p,q){i[k][q]=p});if(this.onCreate){this.onCreate(o[2],o[3],i[k].prototype)}},walk:function(i,h,j,g){g=g||this;if(i){if(j){i=i[j]}c.each(i,function(k,f){if(h.call(g,k,f,j)===false){return false}c.walk(k,h,j,g)})}},createNS:function(j,h){var g,f;h=h||e;j=j.split(".");for(g=0;g<j.length;g++){f=j[g];if(!h[f]){h[f]={}}h=h[f]}return h},resolve:function(j,h){var g,f;h=h||e;j=j.split(".");for(g=0,f=j.length;g<f;g++){h=h[j[g]];if(!h){break}}return h},addUnload:function(j,i){var h=this,g;g=function(){var f=h.unloads,l,m;if(f){for(m in f){l=f[m];if(l&&l.func){l.func.call(l.scope,1)}}if(e.detachEvent){e.detachEvent("onbeforeunload",k);e.detachEvent("onunload",g)}else{if(e.removeEventListener){e.removeEventListener("unload",g,false)}}h.unloads=l=f=w=g=0;if(e.CollectGarbage){CollectGarbage()}}};function k(){var l=document;function f(){l.detachEvent("onstop",f);if(g){g()}l=0}if(l.readyState=="interactive"){if(l){l.attachEvent("onstop",f)}e.setTimeout(function(){if(l){l.detachEvent("onstop",f)}},0)}}j={func:j,scope:i||this};if(!h.unloads){if(e.attachEvent){e.attachEvent("onunload",g);e.attachEvent("onbeforeunload",k)}else{if(e.addEventListener){e.addEventListener("unload",g,false)}}h.unloads=[j]}else{h.unloads.push(j)}return j},removeUnload:function(i){var g=this.unloads,h=null;c.each(g,function(j,f){if(j&&j.func==i){g.splice(f,1);h=i;return false}});return h},explode:function(f,g){if(!f||c.is(f,"array")){return f}return c.map(f.split(g||","),c.trim)},_addVer:function(g){var f;if(!this.query){return g}f=(g.indexOf("?")==-1?"?":"&")+this.query;if(g.indexOf("#")==-1){return g+f}return g.replace("#",f+"#")},_replace:function(h,f,g){if(d){return g.replace(h,function(){var l=f,j=arguments,k;for(k=0;k<j.length-2;k++){if(j[k]===b){l=l.replace(new RegExp("\\$"+k,"g"),"")}else{l=l.replace(new RegExp("\\$"+k,"g"),j[k])}}return l})}return g.replace(h,f)}};c._init();e.tinymce=e.tinyMCE=c})(window);tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,inDispatch:false,Dispatcher:function(a){this.scope=a||this;this.listeners=[]},add:function(b,a){this.listeners.push({cb:b,scope:a||this.scope});return b},addToTop:function(d,b){var a=this,c={cb:d,scope:b||a.scope};if(a.inDispatch){a.listeners=[c].concat(a.listeners)}else{a.listeners.unshift(c)}return d},remove:function(c){var b=this.listeners,a=null;tinymce.each(b,function(e,d){if(c==e.cb){a=e;b.splice(d,1);return false}});return a},dispatch:function(){var a=this,e,b=arguments,c,d=a.listeners,f;a.inDispatch=true;for(c=0;c<d.length;c++){f=d[c];e=f.cb.apply(f.scope,b.length>0?b:[f.scope]);if(e===false){break}}a.inDispatch=false;return e}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,i,d,c,h;e=tinymce.trim(e);g=f.settings=g||{};if(/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e)){f.source=e;return}if(e.indexOf("/")===0&&e.indexOf("//")!==0){e=(g.base_uri?g.base_uri.protocol||"http":"http")+"://mce_host"+e}if(!/^[\w\-]*:?\/\//.test(e)){h=g.base_uri?g.base_uri.path:new tinymce.util.URI(location.href).directory;e=((g.base_uri&&g.base_uri.protocol)||"http")+"://mce_host"+f.toAbsPath(h,e)}e=e.replace(/@@/g,"(mce_at)");e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(b,j){var k=e[j];if(k){k=k.replace(/\(mce_at\)/g,"@@")}f[b]=k});c=g.base_uri;if(c){if(!f.protocol){f.protocol=c.protocol}if(!f.userInfo){f.userInfo=c.userInfo}if(!f.port&&f.host==="mce_host"){f.port=c.port}if(!f.host||f.host==="mce_host"){f.host=c.host}f.source=""}},setPath:function(c){var b=this;c=/^(.*?)\/?(\w+)?$/.exec(c);b.path=c[0];b.directory=c[1];b.file=c[2];b.source="";b.getURI()},toRelative:function(b){var d=this,f;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:d});if((b.host!="mce_host"&&d.host!=b.host&&b.host)||d.port!=b.port||d.protocol!=b.protocol){return b.getURI()}var c=d.getURI(),e=b.getURI();if(c==e||(c.charAt(c.length-1)=="/"&&c.substr(0,c.length-1)==e)){return c}f=d.toRelPath(d.path,b.path);if(b.query){f+="?"+b.query}if(b.anchor){f+="#"+b.anchor}return f},toAbsolute:function(b,c){b=new tinymce.util.URI(b,{base_uri:this});return b.getURI(this.host==b.host&&this.protocol==b.protocol?c:0)},toRelPath:function(g,h){var c,f=0,d="",e,b;g=g.substring(0,g.lastIndexOf("/"));g=g.split("/");c=h.split("/");if(g.length>=c.length){for(e=0,b=g.length;e<b;e++){if(e>=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length<c.length){for(e=0,b=c.length;e<b;e++){if(e>=g.length||g[e]!=c[e]){f=e+1;break}}}if(f===1){return h}for(e=0,b=g.length-(f-1);e<b;e++){d+="../"}for(e=f-1,b=c.length;e<b;e++){if(e!=f-1){d+="/"+c[e]}else{d+=c[e]}}return d},toAbsPath:function(e,f){var c,b=0,h=[],d,g;d=/\/$/.test(f)?"/":"";e=e.split("/");f=f.split("/");a(e,function(i){if(i){h.push(i)}});e=h;for(c=f.length-1,h=[];c>=0;c--){if(f[c].length===0||f[c]==="."){continue}if(f[c]===".."){b++;continue}if(b>0){b--;continue}h.push(f[c])}c=e.length-b;if(c<=0){g=h.reverse().join("/")}else{g=e.slice(0,c).join("/")+"/"+h.reverse().join("/")}if(g.indexOf("/")!==0){g="/"+g}if(d&&g.lastIndexOf("/")!==g.length-1){g+=d}return g},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!==0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(e,b){var c=new Date();c.setTime(c.getTime()-1000);this.set(e,"",c,b,c)}})})();(function(){function serialize(o,quote){var i,v,t,name;quote=quote||'"';if(o==null){return"null"}t=typeof o;if(t=="string"){v="\bb\tt\nn\ff\rr\"\"''\\\\";return quote+o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(a,b){if(quote==='"'&&a==="'"){return a}i=v.indexOf(b);if(i+1){return"\\"+v.charAt(i+1)}a=b.charCodeAt().toString(16);return"\\u"+"0000".substring(a.length)+a})+quote}if(t=="object"){if(o.hasOwnProperty&&o instanceof Array){for(i=0,v="[";i<o.length;i++){v+=(i>0?",":"")+serialize(o[i],quote)}return v+"]"}v="{";for(name in o){if(o.hasOwnProperty(name)){v+=typeof o[name]!="function"?(v.length>1?","+quote:quote)+name+quote+":"+serialize(o[name],quote):""}}return v+"}"}return""+o}tinymce.util.JSON={serialize:serialize,parse:function(s){try{return eval("("+s+")")}catch(ex){}}}})();tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.setRequestHeader("X-Requested-With","XMLHttpRequest");a.send(g.data);if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){if(e){e.call(f.error_scope||f.scope,h,g)}};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(a){a.VK={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(b){return b.shiftKey||b.ctrlKey||b.altKey}}})(tinymce);tinymce.util.Quirks=function(d){var l=tinymce.VK,r=l.BACKSPACE,s=l.DELETE,o=d.dom,z=d.selection,q=d.settings;function c(D,C){try{d.getDoc().execCommand(D,false,C)}catch(B){}}function h(){function B(E){var C,G,D,F;C=z.getRng();G=o.getParent(C.startContainer,o.isBlock);if(E){G=o.getNext(G,o.isBlock)}if(G){D=G.firstChild;while(D&&D.nodeType==3&&D.nodeValue.length===0){D=D.nextSibling}if(D&&D.nodeName==="SPAN"){F=D.cloneNode(false)}}d.getDoc().execCommand(E?"ForwardDelete":"Delete",false,null);G=o.getParent(C.startContainer,o.isBlock);tinymce.each(o.select("span.Apple-style-span,font.Apple-style-span",G),function(H){var I=z.getBookmark();if(F){o.replace(F.cloneNode(false),H,true)}else{o.remove(H,true)}z.moveToBookmark(I)})}d.onKeyDown.add(function(C,E){var D;D=E.keyCode==s;if(!E.isDefaultPrevented()&&(D||E.keyCode==r)&&!l.modifierPressed(E)){E.preventDefault();B(D)}});d.addCommand("Delete",function(){B()})}function A(){function C(E,H){var D,G,F=H?"start":"end";D=E[F+"Container"];G=E[F+"Offset"];if(D.nodeType==1&&D.hasChildNodes()){D=D.childNodes[Math.min(H?G:(G>0?G-1:0),D.childNodes.length-1)]}return D}function B(G,K){var F,J,E,H,I=K?"start":"end",D;F=G[I+"Container"];J=G[I+"Offset"];E=o.getRoot();if(F.nodeType==1){D=J>=F.childNodes.length;F=C(G,K);if(F.nodeType==3){J=K&&!D?0:F.nodeValue.length}}if(F.nodeType==3&&((K&&J>0)||(!K&&J<F.nodeValue.length))){return false}while(F!==E){H=F.parentNode[K?"firstChild":"lastChild"];if(H.nodeName=="BR"){H=H[K?"nextSibling":"previousSibling"]||H}if(H!==F){return false}F=F.parentNode}return true}d.onKeyDown.addToTop(function(E,G){var D,F=G.keyCode;if(!G.isDefaultPrevented()&&(F==s||F==r)){D=z.getRng(true);if(B(D,true)&&B(D,false)&&(D.collapsed||o.findCommonAncestor(C(D,true),C(D))===o.getRoot())){E.setContent("");E.nodeChanged();G.preventDefault()}}})}function t(){if(!d.settings.content_editable){o.bind(d.getDoc(),"focusin",function(B){z.setRng(z.getRng())});o.bind(d.getDoc(),"mousedown",function(B){if(B.target==d.getDoc().documentElement){d.getWin().focus();z.setRng(z.getRng())}})}}function m(){d.onKeyDown.add(function(B,E){if(!E.isDefaultPrevented()&&E.keyCode===r){if(z.isCollapsed()&&z.getRng(true).startOffset===0){var D=z.getNode();var C=D.previousSibling;if(C&&C.nodeName&&C.nodeName.toLowerCase()==="hr"){o.remove(C);tinymce.dom.Event.cancel(E)}}}})}function b(){if(!Range.prototype.getClientRects){d.onMouseDown.add(function(C,D){if(D.target.nodeName==="HTML"){var B=C.getBody();B.blur();setTimeout(function(){B.focus()},0)}})}}function v(){d.onClick.add(function(B,C){C=C.target;if(/^(IMG|HR)$/.test(C.nodeName)){z.getSel().setBaseAndExtent(C,0,C,1)}if(C.nodeName=="A"&&o.hasClass(C,"mceItemAnchor")){z.select(C)}B.nodeChanged()})}function x(){function C(){var E=o.getAttribs(z.getStart().cloneNode(false));return function(){var F=z.getStart();if(F!==d.getBody()){o.setAttrib(F,"style",null);tinymce.each(E,function(G){F.setAttributeNode(G.cloneNode(true))})}}}function B(){return !z.isCollapsed()&&z.getStart()!=z.getEnd()}function D(E,F){F.preventDefault();return false}d.onKeyPress.add(function(E,G){var F;if((G.keyCode==8||G.keyCode==46)&&B()){F=C();E.getDoc().execCommand("delete",false,null);F();G.preventDefault();return false}});o.bind(d.getDoc(),"cut",function(F){var E;if(B()){E=C();d.onKeyUp.addToTop(D);setTimeout(function(){E();d.onKeyUp.remove(D)},0)}})}function i(){var C,B;o.bind(d.getDoc(),"selectionchange",function(){if(B){clearTimeout(B);B=0}B=window.setTimeout(function(){var D=z.getRng();if(!C||!tinymce.dom.RangeUtils.compareRanges(D,C)){d.nodeChanged();C=D}},50)})}function y(){document.body.setAttribute("role","application")}function u(){d.onKeyDown.add(function(B,D){if(!D.isDefaultPrevented()&&D.keyCode===r){if(z.isCollapsed()&&z.getRng(true).startOffset===0){var C=z.getNode().previousSibling;if(C&&C.nodeName&&C.nodeName.toLowerCase()==="table"){return tinymce.dom.Event.cancel(D)}}}})}function g(){var B=d.getDoc().documentMode;if(B&&B>7){return}c("RespectVisibilityInDesign",true);o.addClass(d.getBody(),"mceHideBrInPre");d.parser.addNodeFilter("pre",function(C,E){var F=C.length,H,D,I,G;while(F--){H=C[F].getAll("br");D=H.length;while(D--){I=H[D];G=I.prev;if(G&&G.type===3&&G.value.charAt(G.value-1)!="\n"){G.value+="\n"}else{I.parent.insert(new tinymce.html.Node("#text",3),I,true).value="\n"}}}});d.serializer.addNodeFilter("pre",function(C,E){var F=C.length,H,D,I,G;while(F--){H=C[F].getAll("br");D=H.length;while(D--){I=H[D];G=I.prev;if(G&&G.type==3){G.value=G.value.replace(/\r?\n$/,"")}}}})}function f(){o.bind(d.getBody(),"mouseup",function(D){var C,B=z.getNode();if(B.nodeName=="IMG"){if(C=o.getStyle(B,"width")){o.setAttrib(B,"width",C.replace(/[^0-9%]+/g,""));o.setStyle(B,"width","")}if(C=o.getStyle(B,"height")){o.setAttrib(B,"height",C.replace(/[^0-9%]+/g,""));o.setStyle(B,"height","")}}})}function p(){d.onKeyDown.add(function(H,I){var G,B,C,E,F,J,D;G=I.keyCode==s;if(!I.isDefaultPrevented()&&(G||I.keyCode==r)&&!l.modifierPressed(I)){B=z.getRng();C=B.startContainer;E=B.startOffset;D=B.collapsed;if(C.nodeType==3&&C.nodeValue.length>0&&((E===0&&!D)||(D&&E===(G?0:1)))){nonEmptyElements=H.schema.getNonEmptyElements();I.preventDefault();F=o.create("br",{id:"__tmp"});C.parentNode.insertBefore(F,C);H.getDoc().execCommand(G?"ForwardDelete":"Delete",false,null);C=z.getRng().startContainer;J=C.previousSibling;if(J&&J.nodeType==1&&!o.isBlock(J)&&o.isEmpty(J)&&!nonEmptyElements[J.nodeName.toLowerCase()]){o.remove(J)}o.remove("__tmp")}}})}function e(){d.onKeyDown.add(function(F,G){var D,C,H,B,E;if(G.isDefaultPrevented()||G.keyCode!=l.BACKSPACE){return}D=z.getRng();C=D.startContainer;H=D.startOffset;B=o.getRoot();E=C;if(!D.collapsed||H!==0){return}while(E&&E.parentNode&&E.parentNode.firstChild==E&&E.parentNode!=B){E=E.parentNode}if(E.tagName==="BLOCKQUOTE"){F.formatter.toggle("blockquote",null,E);D.setStart(C,0);D.setEnd(C,0);z.setRng(D);z.collapse(false)}})}function k(){function B(){d._refreshContentEditable();c("StyleWithCSS",false);c("enableInlineTableEditing",false);if(!q.object_resizing){c("enableObjectResizing",false)}}if(!q.readonly){d.onBeforeExecCommand.add(B);d.onMouseDown.add(B)}}function n(){function B(C,D){tinymce.each(o.select("a"),function(G){var E=G.parentNode,F=o.getRoot();if(E.lastChild===G){while(E&&!o.isBlock(E)){if(E.parentNode.lastChild!==E||E===F){return}E=E.parentNode}o.add(E,"br",{"data-mce-bogus":1})}})}d.onExecCommand.add(function(C,D){if(D==="CreateLink"){B(C)}});d.onSetContent.add(z.onSetContent.add(B))}function a(){function B(D,C){if(!D||!C.initial){d.execCommand("mceRepaint")}}d.onUndo.add(B);d.onRedo.add(B);d.onSetContent.add(B)}function j(){d.onKeyDown.add(function(B,C){if(!C.isDefaultPrevented()&&C.keyCode==8&&z.getNode().nodeName=="IMG"){C.preventDefault();B.undoManager.beforeChange();o.remove(z.getNode());B.undoManager.add()}})}u();e();A();if(tinymce.isWebKit){p();h();t();v();if(tinymce.isIDevice){i()}}if(tinymce.isIE){m();y();g();f();j()}if(tinymce.isGecko){m();b();x();k();n();a()}};(function(j){var a,g,d,k=/[&<>\"\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=/[<>&\"\']/g,c=/&(#x|#)?([\w]+);/g,i={128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"};g={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;"};d={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"};function h(l){var m;m=document.createElement("div");m.innerHTML=l;return m.textContent||m.innerText||l}function e(m,p){var n,o,l,q={};if(m){m=m.split(",");p=p||10;for(n=0;n<m.length;n+=2){o=String.fromCharCode(parseInt(m[n],p));if(!g[o]){l="&"+m[n+1]+";";q[o]=l;q[l]=o}}return q}}a=e("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);j.html=j.html||{};j.html.Entities={encodeRaw:function(m,l){return m.replace(l?k:b,function(n){return g[n]||n})},encodeAllRaw:function(l){return(""+l).replace(f,function(m){return g[m]||m})},encodeNumeric:function(m,l){return m.replace(l?k:b,function(n){if(n.length>1){return"&#"+(((n.charCodeAt(0)-55296)*1024)+(n.charCodeAt(1)-56320)+65536)+";"}return g[n]||"&#"+n.charCodeAt(0)+";"})},encodeNamed:function(n,l,m){m=m||a;return n.replace(l?k:b,function(o){return g[o]||m[o]||o})},getEncodeFunc:function(l,o){var p=j.html.Entities;o=e(o)||a;function m(r,q){return r.replace(q?k:b,function(s){return g[s]||o[s]||"&#"+s.charCodeAt(0)+";"||s})}function n(r,q){return p.encodeNamed(r,q,o)}l=j.makeMap(l.replace(/\+/g,","));if(l.named&&l.numeric){return m}if(l.named){if(o){return n}return p.encodeNamed}if(l.numeric){return p.encodeNumeric}return p.encodeRaw},decode:function(l){return l.replace(c,function(n,m,o){if(m){o=parseInt(o,m.length===2?16:10);if(o>65535){o-=65536;return String.fromCharCode(55296+(o>>10),56320+(o&1023))}else{return i[o]||String.fromCharCode(o)}}return d[n]||a[n]||h(n)})}}})(tinymce);tinymce.html.Styles=function(d,f){var k=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,h=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,b=/\s*([^:]+):\s*([^;]+);?/g,l=/\s+$/,m=/rgb/,e,g,a={},j;d=d||{};j="\\\" \\' \\; \\: ; : \uFEFF".split(" ");for(g=0;g<j.length;g++){a[j[g]]="\uFEFF"+g;a["\uFEFF"+g]=j[g]}function c(n,q,p,i){function o(r){r=parseInt(r).toString(16);return r.length>1?r:"0"+r}return"#"+o(q)+o(p)+o(i)}return{toHex:function(i){return i.replace(k,c)},parse:function(s){var z={},q,n,x,r,v=d.url_converter,y=d.url_converter_scope||this;function p(D,G){var F,C,B,E;F=z[D+"-top"+G];if(!F){return}C=z[D+"-right"+G];if(F!=C){return}B=z[D+"-bottom"+G];if(C!=B){return}E=z[D+"-left"+G];if(B!=E){return}z[D+G]=E;delete z[D+"-top"+G];delete z[D+"-right"+G];delete z[D+"-bottom"+G];delete z[D+"-left"+G]}function u(C){var D=z[C],B;if(!D||D.indexOf(" ")<0){return}D=D.split(" ");B=D.length;while(B--){if(D[B]!==D[0]){return false}}z[C]=D[0];return true}function A(D,C,B,E){if(!u(C)){return}if(!u(B)){return}if(!u(E)){return}z[D]=z[C]+" "+z[B]+" "+z[E];delete z[C];delete z[B];delete z[E]}function t(B){r=true;return a[B]}function i(C,B){if(r){C=C.replace(/\uFEFF[0-9]/g,function(D){return a[D]})}if(!B){C=C.replace(/\\([\'\";:])/g,"$1")}return C}function o(C,B,F,E,G,D){G=G||D;if(G){G=i(G);return"'"+G.replace(/\'/g,"\\'")+"'"}B=i(B||F||E);if(v){B=v.call(y,B,"style")}return"url('"+B.replace(/\'/g,"\\'")+"')"}if(s){s=s.replace(/\\[\"\';:\uFEFF]/g,t).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(B){return B.replace(/[;:]/g,t)});while(q=b.exec(s)){n=q[1].replace(l,"").toLowerCase();x=q[2].replace(l,"");if(n&&x.length>0){if(n==="font-weight"&&x==="700"){x="bold"}else{if(n==="color"||n==="background-color"){x=x.toLowerCase()}}x=x.replace(k,c);x=x.replace(h,o);z[n]=r?i(x,true):x}b.lastIndex=q.index+q[0].length}p("border","");p("border","-width");p("border","-color");p("border","-style");p("padding","");p("margin","");A("border","border-width","border-style","border-color");if(z.border==="medium none"){delete z.border}}return z},serialize:function(p,r){var o="",n,q;function i(t){var x,u,s,v;x=f.styles[t];if(x){for(u=0,s=x.length;u<s;u++){t=x[u];v=p[t];if(v!==e&&v.length>0){o+=(o.length>0?" ":"")+t+": "+v+";"}}}}if(r&&f&&f.styles){i("*");i(r)}else{for(n in p){q=p[n];if(q!==e&&q.length>0){o+=(o.length>0?" ":"")+n+": "+q+";"}}}return o}}};(function(f){var a={},e=f.makeMap,g=f.each;function d(j,i){return j.split(i||",")}function h(m,l){var j,k={};function i(n){return n.replace(/[A-Z]+/g,function(o){return i(m[o])})}for(j in m){if(m.hasOwnProperty(j)){m[j]=i(m[j])}}i(l).replace(/#/g,"#text").replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g,function(q,o,n,p){n=d(n,"|");k[o]={attributes:e(n),attributesOrder:n,children:e(p,"|",{"#comment":{}})}});return k}function b(){var i=a.html5;if(!i){i=a.html5=h({A:"id|accesskey|class|dir|draggable|item|hidden|itemprop|role|spellcheck|style|subject|title",B:"#|a|abbr|area|audio|b|bdo|br|button|canvas|cite|code|command|datalist|del|dfn|em|embed|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|meta|meter|noscript|object|output|progress|q|ruby|samp|script|select|small|span|strong|sub|sup|svg|textarea|time|var|video",C:"#|a|abbr|area|address|article|aside|audio|b|bdo|blockquote|br|button|canvas|cite|code|command|datalist|del|details|dfn|dialog|div|dl|em|embed|fieldset|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|menu|meta|meter|nav|noscript|ol|object|output|p|pre|progress|q|ruby|samp|script|section|select|small|span|strong|style|sub|sup|svg|table|textarea|time|ul|var|video"},"html[A|manifest][body|head]head[A][base|command|link|meta|noscript|script|style|title]title[A][#]base[A|href|target][]link[A|href|rel|media|type|sizes][]meta[A|http-equiv|name|content|charset][]style[A|type|media|scoped][#]script[A|charset|type|src|defer|async][#]noscript[A][C]body[A][C]section[A][C]nav[A][C]article[A][C]aside[A][C]h1[A][B]h2[A][B]h3[A][B]h4[A][B]h5[A][B]h6[A][B]hgroup[A][h1|h2|h3|h4|h5|h6]header[A][C]footer[A][C]address[A][C]p[A][B]br[A][]pre[A][B]dialog[A][dd|dt]blockquote[A|cite][C]ol[A|start|reversed][li]ul[A][li]li[A|value][C]dl[A][dd|dt]dt[A][B]dd[A][C]a[A|href|target|ping|rel|media|type][C]em[A][B]strong[A][B]small[A][B]cite[A][B]q[A|cite][B]dfn[A][B]abbr[A][B]code[A][B]var[A][B]samp[A][B]kbd[A][B]sub[A][B]sup[A][B]i[A][B]b[A][B]mark[A][B]progress[A|value|max][B]meter[A|value|min|max|low|high|optimum][B]time[A|datetime][B]ruby[A][B|rt|rp]rt[A][B]rp[A][B]bdo[A][B]span[A][B]ins[A|cite|datetime][B]del[A|cite|datetime][B]figure[A][C|legend|figcaption]figcaption[A][C]img[A|alt|src|height|width|usemap|ismap][]iframe[A|name|src|height|width|sandbox|seamless][]embed[A|src|height|width|type][]object[A|data|type|height|width|usemap|name|form|classid][param]param[A|name|value][]details[A|open][C|legend]command[A|type|label|icon|disabled|checked|radiogroup][]menu[A|type|label][C|li]legend[A][C|B]div[A][C]source[A|src|type|media][]audio[A|src|autobuffer|autoplay|loop|controls][source]video[A|src|autobuffer|autoplay|loop|controls|width|height|poster][source]hr[A][]form[A|accept-charset|action|autocomplete|enctype|method|name|novalidate|target][C]fieldset[A|disabled|form|name][C|legend]label[A|form|for][B]input[A|type|accept|alt|autocomplete|checked|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|height|list|max|maxlength|min|multiple|pattern|placeholder|readonly|required|size|src|step|width|files|value][]button[A|autofocus|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|name|value|type][B]select[A|autofocus|disabled|form|multiple|name|size][option|optgroup]datalist[A][B|option]optgroup[A|disabled|label][option]option[A|disabled|selected|label|value][]textarea[A|autofocus|disabled|form|maxlength|name|placeholder|readonly|required|rows|cols|wrap][]keygen[A|autofocus|challenge|disabled|form|keytype|name][]output[A|for|form|name][B]canvas[A|width|height][]map[A|name][B|C]area[A|shape|coords|href|alt|target|media|rel|ping|type][]mathml[A][]svg[A][]table[A|summary][caption|colgroup|thead|tfoot|tbody|tr]caption[A][C]colgroup[A|span][col]col[A|span][]thead[A][tr]tfoot[A][tr]tbody[A][tr]tr[A][th|td]th[A|headers|rowspan|colspan|scope][B]td[A|headers|rowspan|colspan][C]")}return i}function c(){var i=a.html4;if(!i){i=a.html4=h({Z:"H|K|N|O|P",Y:"X|form|R|Q",ZG:"E|span|width|align|char|charoff|valign",X:"p|T|div|U|W|isindex|fieldset|table",ZF:"E|align|char|charoff|valign",W:"pre|hr|blockquote|address|center|noframes",ZE:"abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height",ZD:"[E][S]",U:"ul|ol|dl|menu|dir",ZC:"p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q",T:"h1|h2|h3|h4|h5|h6",ZB:"X|S|Q",S:"R|P",ZA:"a|G|J|M|O|P",R:"a|H|K|N|O",Q:"noscript|P",P:"ins|del|script",O:"input|select|textarea|label|button",N:"M|L",M:"em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym",L:"sub|sup",K:"J|I",J:"tt|i|b|u|s|strike",I:"big|small|font|basefont",H:"G|F",G:"br|span|bdo",F:"object|applet|img|map|iframe",E:"A|B|C",D:"accesskey|tabindex|onfocus|onblur",C:"onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"lang|xml:lang|dir",A:"id|class|style|title"},"script[id|charset|type|language|src|defer|xml:space][]style[B|id|type|media|title|xml:space][]object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]param[id|name|value|valuetype|type][]p[E|align][#|S]a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]br[A|clear][]span[E][#|S]bdo[A|C|B][#|S]applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]h1[E|align][#|S]img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]map[B|C|A|name][X|form|Q|area]h2[E|align][#|S]iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]h3[E|align][#|S]tt[E][#|S]i[E][#|S]b[E][#|S]u[E][#|S]s[E][#|S]strike[E][#|S]big[E][#|S]small[E][#|S]font[A|B|size|color|face][#|S]basefont[id|size|color|face][]em[E][#|S]strong[E][#|S]dfn[E][#|S]code[E][#|S]q[E|cite][#|S]samp[E][#|S]kbd[E][#|S]var[E][#|S]cite[E][#|S]abbr[E][#|S]acronym[E][#|S]sub[E][#|S]sup[E][#|S]input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]optgroup[E|disabled|label][option]option[E|selected|disabled|label|value][]textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]label[E|for|accesskey|onfocus|onblur][#|S]button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]h4[E|align][#|S]ins[E|cite|datetime][#|Y]h5[E|align][#|S]del[E|cite|datetime][#|Y]h6[E|align][#|S]div[E|align][#|Y]ul[E|type|compact][li]li[E|type|value][#|Y]ol[E|type|compact|start][li]dl[E|compact][dt|dd]dt[E][#|S]dd[E][#|Y]menu[E|compact][li]dir[E|compact][li]pre[E|width|xml:space][#|ZA]hr[E|align|noshade|size|width][]blockquote[E|cite][#|Y]address[E][#|S|p]center[E][#|Y]noframes[E][#|Y]isindex[A|B|prompt][]fieldset[E][#|legend|Y]legend[E|accesskey|align][#|S]table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]caption[E|align][#|S]col[ZG][]colgroup[ZG][col]thead[ZF][tr]tr[ZF|bgcolor][th|td]th[E|ZE][#|Y]form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]noscript[E][#|Y]td[E|ZE][#|Y]tfoot[ZF][tr]tbody[ZF][tr]area[E|D|shape|coords|href|nohref|alt|target][]base[id|href|target][]body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]")}return i}f.html.Schema=function(A){var u=this,s={},k={},j=[],D,y;var o,q,z,r,v,n,p={};function m(F,E,H){var G=A[F];if(!G){G=a[F];if(!G){G=e(E," ",e(E.toUpperCase()," "));G=f.extend(G,H);a[F]=G}}else{G=e(G,",",e(G.toUpperCase()," "))}return G}A=A||{};y=A.schema=="html5"?b():c();if(A.verify_html===false){A.valid_elements="*[*]"}if(A.valid_styles){D={};g(A.valid_styles,function(F,E){D[E]=f.explode(F)})}o=m("whitespace_elements","pre script style textarea");q=m("self_closing_elements","colgroup dd dt li options p td tfoot th thead tr");z=m("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source");r=m("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls");n=m("non_empty_elements","td th iframe video audio object",z);v=m("block_elements","h1 h2 h3 h4 h5 h6 hr p div address pre form table tbody thead tfoot th tr td li ol ul caption blockquote center dl dt dd dir fieldset noscript menu isindex samp header footer article section hgroup aside nav figure");function i(E){return new RegExp("^"+E.replace(/([?+*])/g,".$1")+"$")}function C(L){var K,G,Z,V,aa,F,I,U,X,Q,Y,ac,O,J,W,E,S,H,ab,ad,P,T,N=/^([#+\-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,R=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,M=/[*?+]/;if(L){L=d(L);if(s["@"]){S=s["@"].attributes;H=s["@"].attributesOrder}for(K=0,G=L.length;K<G;K++){F=N.exec(L[K]);if(F){W=F[1];Q=F[2];E=F[3];X=F[4];O={};J=[];I={attributes:O,attributesOrder:J};if(W==="#"){I.paddEmpty=true}if(W==="-"){I.removeEmpty=true}if(S){for(ad in S){O[ad]=S[ad]}J.push.apply(J,H)}if(X){X=d(X,"|");for(Z=0,V=X.length;Z<V;Z++){F=R.exec(X[Z]);if(F){U={};ac=F[1];Y=F[2].replace(/::/g,":");W=F[3];T=F[4];if(ac==="!"){I.attributesRequired=I.attributesRequired||[];I.attributesRequired.push(Y);U.required=true}if(ac==="-"){delete O[Y];J.splice(f.inArray(J,Y),1);continue}if(W){if(W==="="){I.attributesDefault=I.attributesDefault||[];I.attributesDefault.push({name:Y,value:T});U.defaultValue=T}if(W===":"){I.attributesForced=I.attributesForced||[];I.attributesForced.push({name:Y,value:T});U.forcedValue=T}if(W==="<"){U.validValues=e(T,"?")}}if(M.test(Y)){I.attributePatterns=I.attributePatterns||[];U.pattern=i(Y);I.attributePatterns.push(U)}else{if(!O[Y]){J.push(Y)}O[Y]=U}}}}if(!S&&Q=="@"){S=O;H=J}if(E){I.outputName=Q;s[E]=I}if(M.test(Q)){I.pattern=i(Q);j.push(I)}else{s[Q]=I}}}}}function t(E){s={};j=[];C(E);g(y,function(G,F){k[F]=G.children})}function l(F){var E=/^(~)?(.+)$/;if(F){g(d(F),function(J){var H=E.exec(J),I=H[1]==="~",K=I?"span":"div",G=H[2];k[G]=k[K];p[G]=K;if(!I){v[G]={}}g(k,function(L,M){if(L[K]){L[G]=L[K]}})})}}function x(F){var E=/^([+\-]?)(\w+)\[([^\]]+)\]$/;if(F){g(d(F),function(J){var I=E.exec(J),G,H;if(I){H=I[1];if(H){G=k[I[2]]}else{G=k[I[2]]={"#comment":{}}}G=k[I[2]];g(d(I[3],"|"),function(K){if(H==="-"){delete G[K]}else{G[K]={}}})}})}}function B(E){var G=s[E],F;if(G){return G}F=j.length;while(F--){G=j[F];if(G.pattern.test(E)){return G}}}if(!A.valid_elements){g(y,function(F,E){s[E]={attributes:F.attributes,attributesOrder:F.attributesOrder};k[E]=F.children});if(A.schema!="html5"){g(d("strong/b,em/i"),function(E){E=d(E,"/");s[E[1]].outputName=E[0]})}s.img.attributesDefault=[{name:"alt",value:""}];g(d("ol,ul,sub,sup,blockquote,span,font,a,table,tbody,tr,strong,em,b,i"),function(E){if(s[E]){s[E].removeEmpty=true}});g(d("p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption"),function(E){s[E].paddEmpty=true})}else{t(A.valid_elements)}l(A.custom_elements);x(A.valid_children);C(A.extended_valid_elements);x("+ol[ul|ol],+ul[ul|ol]");if(A.invalid_elements){f.each(f.explode(A.invalid_elements),function(E){if(s[E]){delete s[E]}})}if(!B("span")){C("span[!data-mce-type|*]")}u.children=k;u.styles=D;u.getBoolAttrs=function(){return r};u.getBlockElements=function(){return v};u.getShortEndedElements=function(){return z};u.getSelfClosingElements=function(){return q};u.getNonEmptyElements=function(){return n};u.getWhiteSpaceElements=function(){return o};u.isValidChild=function(E,G){var F=k[E];return !!(F&&F[G])};u.getElementRule=B;u.getCustomElements=function(){return p};u.addValidElements=C;u.setValidElements=t;u.addCustomElements=l;u.addValidChildren=x}})(tinymce);(function(a){a.html.SaxParser=function(c,e){var b=this,d=function(){};c=c||{};b.schema=e=e||new a.html.Schema();if(c.fix_self_closing!==false){c.fix_self_closing=true}a.each("comment cdata text start end pi doctype".split(" "),function(f){if(f){b[f]=c[f]||d}});b.parse=function(E){var n=this,g,G=0,I,B,A=[],N,Q,C,r,z,s,M,H,O,v,m,k,t,R,o,P,F,S,L,f,J,l,D,K,h,x=0,j=a.html.Entities.decode,y,q;function u(T){var V,U;V=A.length;while(V--){if(A[V].name===T){break}}if(V>=0){for(U=A.length-1;U>=V;U--){T=A[U];if(T.valid){n.end(T.name)}}A.length=V}}function p(U,T,Y,X,W){var Z,V;T=T.toLowerCase();Y=T in H?T:j(Y||X||W||"");if(v&&!z&&T.indexOf("data-")!==0){Z=P[T];if(!Z&&F){V=F.length;while(V--){Z=F[V];if(Z.pattern.test(T)){break}}if(V===-1){Z=null}}if(!Z){return}if(Z.validValues&&!(Y in Z.validValues)){return}}N.map[T]=Y;N.push({name:T,value:Y})}l=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-\\:]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g");D=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:\\.|[^\"])*)\")|(?:\'((?:\\.|[^\'])*)\')|([^>\s]+)))?/g;K={script:/<\/script[^>]*>/gi,style:/<\/style[^>]*>/gi,noscript:/<\/noscript[^>]*>/gi};M=e.getShortEndedElements();J=e.getSelfClosingElements();H=e.getBoolAttrs();v=c.validate;s=c.remove_internals;y=c.fix_self_closing;q=a.isIE;o=/^:/;while(g=l.exec(E)){if(G<g.index){n.text(j(E.substr(G,g.index-G)))}if(I=g[6]){I=I.toLowerCase();if(q&&o.test(I)){I=I.substr(1)}u(I)}else{if(I=g[7]){I=I.toLowerCase();if(q&&o.test(I)){I=I.substr(1)}O=I in M;if(y&&J[I]&&A.length>0&&A[A.length-1].name===I){u(I)}if(!v||(m=e.getElementRule(I))){k=true;if(v){P=m.attributes;F=m.attributePatterns}if(R=g[8]){z=R.indexOf("data-mce-type")!==-1;if(z&&s){k=false}N=[];N.map={};R.replace(D,p)}else{N=[];N.map={}}if(v&&!z){S=m.attributesRequired;L=m.attributesDefault;f=m.attributesForced;if(f){Q=f.length;while(Q--){t=f[Q];r=t.name;h=t.value;if(h==="{$uid}"){h="mce_"+x++}N.map[r]=h;N.push({name:r,value:h})}}if(L){Q=L.length;while(Q--){t=L[Q];r=t.name;if(!(r in N.map)){h=t.value;if(h==="{$uid}"){h="mce_"+x++}N.map[r]=h;N.push({name:r,value:h})}}}if(S){Q=S.length;while(Q--){if(S[Q] in N.map){break}}if(Q===-1){k=false}}if(N.map["data-mce-bogus"]){k=false}}if(k){n.start(I,N,O)}}else{k=false}if(B=K[I]){B.lastIndex=G=g.index+g[0].length;if(g=B.exec(E)){if(k){C=E.substr(G,g.index-G)}G=g.index+g[0].length}else{C=E.substr(G);G=E.length}if(k&&C.length>0){n.text(C,true)}if(k){n.end(I)}l.lastIndex=G;continue}if(!O){if(!R||R.indexOf("/")!=R.length-1){A.push({name:I,valid:k})}else{if(k){n.end(I)}}}}else{if(I=g[1]){n.comment(I)}else{if(I=g[2]){n.cdata(I)}else{if(I=g[3]){n.doctype(I)}else{if(I=g[4]){n.pi(I,g[5])}}}}}}G=g.index+g[0].length}if(G<E.length){n.text(j(E.substr(G)))}for(Q=A.length-1;Q>=0;Q--){I=A[Q];if(I.valid){n.end(I.name)}}}}})(tinymce);(function(d){var c=/^[ \t\r\n]*$/,e={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};function a(k,l,j){var i,h,f=j?"lastChild":"firstChild",g=j?"prev":"next";if(k[f]){return k[f]}if(k!==l){i=k[g];if(i){return i}for(h=k.parent;h&&h!==l;h=h.parent){i=h[g];if(i){return i}}}}function b(f,g){this.name=f;this.type=g;if(g===1){this.attributes=[];this.attributes.map={}}}d.extend(b.prototype,{replace:function(g){var f=this;if(g.parent){g.remove()}f.insert(g,f);f.remove();return f},attr:function(h,l){var f=this,g,j,k;if(typeof h!=="string"){for(j in h){f.attr(j,h[j])}return f}if(g=f.attributes){if(l!==k){if(l===null){if(h in g.map){delete g.map[h];j=g.length;while(j--){if(g[j].name===h){g=g.splice(j,1);return f}}}return f}if(h in g.map){j=g.length;while(j--){if(g[j].name===h){g[j].value=l;break}}}else{g.push({name:h,value:l})}g.map[h]=l;return f}else{return g.map[h]}}},clone:function(){var g=this,n=new b(g.name,g.type),h,f,m,j,k;if(m=g.attributes){k=[];k.map={};for(h=0,f=m.length;h<f;h++){j=m[h];if(j.name!=="id"){k[k.length]={name:j.name,value:j.value};k.map[j.name]=j.value}}n.attributes=k}n.value=g.value;n.shortEnded=g.shortEnded;return n},wrap:function(g){var f=this;f.parent.insert(g,f);g.append(f);return f},unwrap:function(){var f=this,h,g;for(h=f.firstChild;h;){g=h.next;f.insert(h,f,true);h=g}f.remove()},remove:function(){var f=this,h=f.parent,g=f.next,i=f.prev;if(h){if(h.firstChild===f){h.firstChild=g;if(g){g.prev=null}}else{i.next=g}if(h.lastChild===f){h.lastChild=i;if(i){i.next=null}}else{g.prev=i}f.parent=f.next=f.prev=null}return f},append:function(h){var f=this,g;if(h.parent){h.remove()}g=f.lastChild;if(g){g.next=h;h.prev=g;f.lastChild=h}else{f.lastChild=f.firstChild=h}h.parent=f;return h},insert:function(h,f,i){var g;if(h.parent){h.remove()}g=f.parent||this;if(i){if(f===g.firstChild){g.firstChild=h}else{f.prev.next=h}h.prev=f.prev;h.next=f;f.prev=h}else{if(f===g.lastChild){g.lastChild=h}else{f.next.prev=h}h.next=f.next;h.prev=f;f.next=h}h.parent=g;return h},getAll:function(g){var f=this,h,i=[];for(h=f.firstChild;h;h=a(h,f)){if(h.name===g){i.push(h)}}return i},empty:function(){var g=this,f,h,j;if(g.firstChild){f=[];for(j=g.firstChild;j;j=a(j,g)){f.push(j)}h=f.length;while(h--){j=f[h];j.parent=j.firstChild=j.lastChild=j.next=j.prev=null}}g.firstChild=g.lastChild=null;return g},isEmpty:function(k){var f=this,j=f.firstChild,h,g;if(j){do{if(j.type===1){if(j.attributes.map["data-mce-bogus"]){continue}if(k[j.name]){return false}h=j.attributes.length;while(h--){g=j.attributes[h].name;if(g==="name"||g.indexOf("data-")===0){return false}}}if(j.type===8){return false}if((j.type===3&&!c.test(j.value))){return false}}while(j=a(j,f))}return true},walk:function(f){return a(this,null,f)}});d.extend(b,{create:function(g,f){var i,h;i=new b(g,e[g]||1);if(f){for(h in f){i.attr(h,f[h])}}return i}});d.html.Node=b})(tinymce);(function(b){var a=b.html.Node;b.html.DomParser=function(g,h){var f=this,e={},d=[],i={},c={};g=g||{};g.validate="validate" in g?g.validate:true;g.root_name=g.root_name||"body";f.schema=h=h||new b.html.Schema();function j(m){var o,p,x,v,z,n,q,l,t,u,k,s,y,r;s=b.makeMap("tr,td,th,tbody,thead,tfoot,table");k=h.getNonEmptyElements();for(o=0;o<m.length;o++){p=m[o];if(!p.parent){continue}v=[p];for(x=p.parent;x&&!h.isValidChild(x.name,p.name)&&!s[x.name];x=x.parent){v.push(x)}if(x&&v.length>1){v.reverse();z=n=f.filterNode(v[0].clone());for(t=0;t<v.length-1;t++){if(h.isValidChild(n.name,v[t].name)){q=f.filterNode(v[t].clone());n.append(q)}else{q=n}for(l=v[t].firstChild;l&&l!=v[t+1];){r=l.next;q.append(l);l=r}n=q}if(!z.isEmpty(k)){x.insert(z,v[0],true);x.insert(p,z)}else{x.insert(p,v[0],true)}x=v[0];if(x.isEmpty(k)||x.firstChild===x.lastChild&&x.firstChild.name==="br"){x.empty().remove()}}else{if(p.parent){if(p.name==="li"){y=p.prev;if(y&&(y.name==="ul"||y.name==="ul")){y.append(p);continue}y=p.next;if(y&&(y.name==="ul"||y.name==="ul")){y.insert(p,y.firstChild,true);continue}p.wrap(f.filterNode(new a("ul",1)));continue}if(h.isValidChild(p.parent.name,"div")&&h.isValidChild("div",p.name)){p.wrap(f.filterNode(new a("div",1)))}else{if(p.name==="style"||p.name==="script"){p.empty().remove()}else{p.unwrap()}}}}}}f.filterNode=function(m){var l,k,n;if(k in e){n=i[k];if(n){n.push(m)}else{i[k]=[m]}}l=d.length;while(l--){k=d[l].name;if(k in m.attributes.map){n=c[k];if(n){n.push(m)}else{c[k]=[m]}}}return m};f.addNodeFilter=function(k,l){b.each(b.explode(k),function(m){var n=e[m];if(!n){e[m]=n=[]}n.push(l)})};f.addAttributeFilter=function(k,l){b.each(b.explode(k),function(m){var n;for(n=0;n<d.length;n++){if(d[n].name===m){d[n].callbacks.push(l);return}}d.push({name:m,callbacks:[l]})})};f.parse=function(v,m){var n,I,B,A,D,C,x,r,F,M,z,o,E,L=[],K,t,k,y,s,p,u,q;m=m||{};i={};c={};o=b.extend(b.makeMap("script,style,head,html,body,title,meta,param"),h.getBlockElements());u=h.getNonEmptyElements();p=h.children;z=g.validate;q="forced_root_block" in m?m.forced_root_block:g.forced_root_block;s=h.getWhiteSpaceElements();E=/^[ \t\r\n]+/;t=/[ \t\r\n]+$/;k=/[ \t\r\n]+/g;y=/^[ \t\r\n]+$/;function G(){var N=I.firstChild,l,O;while(N){l=N.next;if(N.type==3||(N.type==1&&N.name!=="p"&&!o[N.name]&&!N.attr("data-mce-type"))){if(!O){O=J(q,1);I.insert(O,N);O.append(N)}else{O.append(N)}}else{O=null}N=l}}function J(l,N){var O=new a(l,N),P;if(l in e){P=i[l];if(P){P.push(O)}else{i[l]=[O]}}return O}function H(O){var P,l,N;for(P=O.prev;P&&P.type===3;){l=P.value.replace(t,"");if(l.length>0){P.value=l;P=P.prev}else{N=P.prev;P.remove();P=N}}}n=new b.html.SaxParser({validate:z,fix_self_closing:!z,cdata:function(l){B.append(J("#cdata",4)).value=l},text:function(O,l){var N;if(!K){O=O.replace(k," ");if(B.lastChild&&o[B.lastChild.name]){O=O.replace(E,"")}}if(O.length!==0){N=J("#text",3);N.raw=!!l;B.append(N).value=O}},comment:function(l){B.append(J("#comment",8)).value=l},pi:function(l,N){B.append(J(l,7)).value=N;H(B)},doctype:function(N){var l;l=B.append(J("#doctype",10));l.value=N;H(B)},start:function(l,V,O){var T,Q,P,N,R,W,U,S;P=z?h.getElementRule(l):{};if(P){T=J(P.outputName||l,1);T.attributes=V;T.shortEnded=O;B.append(T);S=p[B.name];if(S&&p[T.name]&&!S[T.name]){L.push(T)}Q=d.length;while(Q--){R=d[Q].name;if(R in V.map){F=c[R];if(F){F.push(T)}else{c[R]=[T]}}}if(o[l]){H(T)}if(!O){B=T}if(!K&&s[l]){K=true}}},end:function(l){var R,O,Q,N,P;O=z?h.getElementRule(l):{};if(O){if(o[l]){if(!K){R=B.firstChild;if(R&&R.type===3){Q=R.value.replace(E,"");if(Q.length>0){R.value=Q;R=R.next}else{N=R.next;R.remove();R=N}while(R&&R.type===3){Q=R.value;N=R.next;if(Q.length===0||y.test(Q)){R.remove();R=N}R=N}}R=B.lastChild;if(R&&R.type===3){Q=R.value.replace(t,"");if(Q.length>0){R.value=Q;R=R.prev}else{N=R.prev;R.remove();R=N}while(R&&R.type===3){Q=R.value;N=R.prev;if(Q.length===0||y.test(Q)){R.remove();R=N}R=N}}}R=B.prev;if(R&&R.type===3){Q=R.value.replace(E,"");if(Q.length>0){R.value=Q}else{R.remove()}}}if(K&&s[l]){K=false}if(O.removeEmpty||O.paddEmpty){if(B.isEmpty(u)){if(O.paddEmpty){B.empty().append(new a("#text","3")).value="\u00a0"}else{if(!B.attributes.map.name){P=B.parent;B.empty().remove();B=P;return}}}}B=B.parent}}},h);I=B=new a(m.context||g.root_name,11);n.parse(v);if(z&&L.length){if(!m.context){j(L)}else{m.invalid=true}}if(q&&I.name=="body"){G()}if(!m.invalid){for(M in i){F=e[M];A=i[M];x=A.length;while(x--){if(!A[x].parent){A.splice(x,1)}}for(D=0,C=F.length;D<C;D++){F[D](A,M,m)}}for(D=0,C=d.length;D<C;D++){F=d[D];if(F.name in c){A=c[F.name];x=A.length;while(x--){if(!A[x].parent){A.splice(x,1)}}for(x=0,r=F.callbacks.length;x<r;x++){F.callbacks[x](A,F.name,m)}}}}return I};if(g.remove_trailing_brs){f.addNodeFilter("br",function(n,m){var r,q=n.length,o,v=b.extend({},h.getBlockElements()),k=h.getNonEmptyElements(),t,s,p,u;v.body=1;for(r=0;r<q;r++){o=n[r];t=o.parent;if(v[o.parent.name]&&o===t.lastChild){p=o.prev;while(p){u=p.name;if(u!=="span"||p.attr("data-mce-type")!=="bookmark"){if(u!=="br"){break}if(u==="br"){o=null;break}}p=p.prev}if(o){o.remove();if(t.isEmpty(k)){elementRule=h.getElementRule(t.name);if(elementRule){if(elementRule.removeEmpty){t.remove()}else{if(elementRule.paddEmpty){t.empty().append(new b.html.Node("#text",3)).value="\u00a0"}}}}}}else{s=o;while(t.firstChild===s&&t.lastChild===s){s=t;if(v[t.name]){break}t=t.parent}if(s===t){textNode=new b.html.Node("#text",3);textNode.value="\u00a0";o.replace(textNode)}}}})}if(!g.allow_html_in_named_anchor){f.addAttributeFilter("name",function(k,l){var n=k.length,p,m,o,q;while(n--){q=k[n];if(q.name==="a"&&q.firstChild){o=q.parent;p=q.lastChild;do{m=p.prev;o.insert(p,q);p=m}while(p)}}})}}})(tinymce);tinymce.html.Writer=function(e){var c=[],a,b,d,f,g;e=e||{};a=e.indent;b=tinymce.makeMap(e.indent_before||"");d=tinymce.makeMap(e.indent_after||"");f=tinymce.html.Entities.getEncodeFunc(e.entity_encoding||"raw",e.entities);g=e.element_format=="html";return{start:function(m,k,p){var n,j,h,o;if(a&&b[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}c.push("<",m);if(k){for(n=0,j=k.length;n<j;n++){h=k[n];c.push(" ",h.name,'="',f(h.value,true),'"')}}if(!p||g){c[c.length]=">"}else{c[c.length]=" />"}if(p&&a&&d[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}},end:function(h){var i;c.push("</",h,">");if(a&&d[h]&&c.length>0){i=c[c.length-1];if(i.length>0&&i!=="\n"){c.push("\n")}}},text:function(i,h){if(i.length>0){c[c.length]=h?i:f(i)}},cdata:function(h){c.push("<![CDATA[",h,"]]>")},comment:function(h){c.push("<!--",h,"-->")},pi:function(h,i){if(i){c.push("<?",h," ",i,"?>")}else{c.push("<?",h,"?>")}if(a){c.push("\n")}},doctype:function(h){c.push("<!DOCTYPE",h,">",a?"\n":"")},reset:function(){c.length=0},getContent:function(){return c.join("").replace(/\n$/,"")}}};(function(a){a.html.Serializer=function(c,d){var b=this,e=new a.html.Writer(c);c=c||{};c.validate="validate" in c?c.validate:true;b.schema=d=d||new a.html.Schema();b.writer=e;b.serialize=function(h){var g,i;i=c.validate;g={3:function(k,j){e.text(k.value,k.raw)},8:function(j){e.comment(j.value)},7:function(j){e.pi(j.name,j.value)},10:function(j){e.doctype(j.value)},4:function(j){e.cdata(j.value)},11:function(j){if((j=j.firstChild)){do{f(j)}while(j=j.next)}}};e.reset();function f(k){var t=g[k.type],j,o,s,r,p,u,n,m,q;if(!t){j=k.name;o=k.shortEnded;s=k.attributes;if(i&&s&&s.length>1){u=[];u.map={};q=d.getElementRule(k.name);for(n=0,m=q.attributesOrder.length;n<m;n++){r=q.attributesOrder[n];if(r in s.map){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}for(n=0,m=s.length;n<m;n++){r=s[n].name;if(!(r in u.map)){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}s=u}e.start(k.name,s,o);if(!o){if((k=k.firstChild)){do{f(k)}while(k=k.next)}e.end(j)}}else{t(k)}}if(h.type==1&&!c.inner){f(h)}else{g[11](h)}return e.getContent()}}})(tinymce);tinymce.dom={};(function(b,h){var g=!!document.addEventListener;function c(k,j,l,i){if(k.addEventListener){k.addEventListener(j,l,i||false)}else{if(k.attachEvent){k.attachEvent("on"+j,l)}}}function e(k,j,l,i){if(k.removeEventListener){k.removeEventListener(j,l,i||false)}else{if(k.detachEvent){k.detachEvent("on"+j,l)}}}function a(n,l){var i,k=l||{};function j(){return false}function m(){return true}for(i in n){if(i!=="layerX"&&i!=="layerY"){k[i]=n[i]}}if(!k.target){k.target=k.srcElement||document}k.preventDefault=function(){k.isDefaultPrevented=m;if(n){if(n.preventDefault){n.preventDefault()}else{n.returnValue=false}}};k.stopPropagation=function(){k.isPropagationStopped=m;if(n){if(n.stopPropagation){n.stopPropagation()}else{n.cancelBubble=true}}};k.stopImmediatePropagation=function(){k.isImmediatePropagationStopped=m;k.stopPropagation()};if(!k.isDefaultPrevented){k.isDefaultPrevented=j;k.isPropagationStopped=j;k.isImmediatePropagationStopped=j}return k}function d(m,n,l){var k=m.document,j={type:"ready"};function i(){if(!l.domLoaded){l.domLoaded=true;n(j)}}if(g){c(m,"DOMContentLoaded",i)}else{c(k,"readystatechange",function(){if(k.readyState==="complete"){e(k,"readystatechange",arguments.callee);i()}});if(k.documentElement.doScroll&&m===m.top){(function(){try{k.documentElement.doScroll("left")}catch(o){setTimeout(arguments.callee,0);return}i()})()}}c(m,"load",i)}function f(k){var q=this,p={},i,o,n,m,l;m="onmouseenter" in document.documentElement;n="onfocusin" in document.documentElement;l={mouseenter:"mouseover",mouseleave:"mouseout"};i=1;q.domLoaded=false;q.events=p;function j(t,x){var s,u,r,v;s=p[x][t.type];if(s){for(u=0,r=s.length;u<r;u++){v=s[u];if(v&&v.func.call(v.scope,t)===false){t.preventDefault()}if(t.isImmediatePropagationStopped()){return}}}}q.bind=function(x,A,D,E){var s,t,u,r,B,z,C,v=window;function y(F){j(a(F||v.event),s)}if(!x||x.nodeType===3||x.nodeType===8){return}if(!x[h]){s=i++;x[h]=s;p[s]={}}else{s=x[h];if(!p[s]){p[s]={}}}E=E||x;A=A.split(" ");u=A.length;while(u--){r=A[u];z=y;B=C=false;if(r==="DOMContentLoaded"){r="ready"}if((q.domLoaded||x.readyState=="complete")&&r==="ready"){q.domLoaded=true;D.call(E,a({type:r}));continue}if(!m){B=l[r];if(B){z=function(F){var H,G;H=F.currentTarget;G=F.relatedTarget;if(G&&H.contains){G=H.contains(G)}else{while(G&&G!==H){G=G.parentNode}}if(!G){F=a(F||v.event);F.type=F.type==="mouseout"?"mouseleave":"mouseenter";F.target=H;j(F,s)}}}}if(!n&&(r==="focusin"||r==="focusout")){C=true;B=r==="focusin"?"focus":"blur";z=function(F){F=a(F||v.event);F.type=F.type==="focus"?"focusin":"focusout";j(F,s)}}t=p[s][r];if(!t){p[s][r]=t=[{func:D,scope:E}];t.fakeName=B;t.capture=C;t.nativeHandler=z;if(!g){t.proxyHandler=k(s)}if(r==="ready"){d(x,z,q)}else{c(x,B||r,g?z:t.proxyHandler,C)}}else{t.push({func:D,scope:E})}}x=t=0;return D};q.unbind=function(x,z,A){var s,u,v,B,r,t;if(!x||x.nodeType===3||x.nodeType===8){return q}s=x[h];if(s){t=p[s];if(z){z=z.split(" ");v=z.length;while(v--){r=z[v];u=t[r];if(u){if(A){B=u.length;while(B--){if(u[B].func===A){u.splice(B,1)}}}if(!A||u.length===0){delete t[r];e(x,u.fakeName||r,g?u.nativeHandler:u.proxyHandler,u.capture)}}}}else{for(r in t){u=t[r];e(x,u.fakeName||r,g?u.nativeHandler:u.proxyHandler,u.capture)}t={}}for(r in t){return q}delete p[s];try{delete x[h]}catch(y){x[h]=null}}return q};q.fire=function(u,s,r){var v,t;if(!u||u.nodeType===3||u.nodeType===8){return q}t=a(null,r);t.type=s;do{v=u[h];if(v){j(t,v)}u=u.parentNode||u.ownerDocument||u.defaultView||u.parentWindow}while(u&&!t.isPropagationStopped());return q};q.clean=function(u){var s,r,t=q.unbind;if(!u||u.nodeType===3||u.nodeType===8){return q}if(u[h]){t(u)}if(!u.getElementsByTagName){u=u.document}if(u&&u.getElementsByTagName){t(u);r=u.getElementsByTagName("*");s=r.length;while(s--){u=r[s];if(u[h]){t(u)}}}return q};q.callNativeHandler=function(s,r){if(p){p[s][r.type].nativeHandler(r)}};q.destory=function(){p={}};q.add=function(v,s,u,t){if(typeof(v)==="string"){v=document.getElementById(v)}if(v&&v instanceof Array){var r=v;while(r--){q.add(v[r],s,u,t)}return}if(s==="init"){s="ready"}return q.bind(v,s instanceof Array?s.join(" "):s,u,t)};q.remove=function(v,s,u,t){if(!v){return q}if(typeof(v)==="string"){v=document.getElementById(v)}if(v instanceof Array){var r=v.length;while(r--){q.remove(v[r],s,u,t)}return q}return q.unbind(v,s instanceof Array?s.join(" "):s,u)};q.clear=function(r){if(typeof(r)==="string"){r=document.getElementById(r)}return q.clean(r)};q.cancel=function(r){if(r){q.prevent(r);q.stop(r)}return false};q.prevent=function(r){r.preventDefault();return false};q.stop=function(r){r.stopPropagation();return false}}b.EventUtils=f;b.Event=new f(function(i){return function(j){tinymce.dom.Event.callNativeHandler(i,j)}});b.Event.bind(window,"ready",function(){});b=0})(tinymce.dom,"data-mce-expando");tinymce.dom.TreeWalker=function(a,c){var b=a;function d(i,f,e,j){var h,g;if(i){if(!j&&i[f]){return i[f]}if(i!=c){h=i[e];if(h){return h}for(g=i.parentNode;g&&g!=c;g=g.parentNode){h=g[e];if(h){return h}}}}}this.current=function(){return b};this.next=function(e){return(b=d(b,"firstChild","nextSibling",e))};this.prev=function(e){return(b=d(b,"lastChild","previousSibling",e))}};(function(e){var g=e.each,d=e.is,f=e.isWebKit,b=e.isIE,h=e.html.Entities,c=/^([a-z0-9],?)+$/i,a=/^[ \t\r\n]*$/;e.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(o,l){var k=this,i,j,n;k.doc=o;k.win=window;k.files={};k.cssFlicker=false;k.counter=0;k.stdMode=!e.isIE||o.documentMode>=8;k.boxModel=!e.isIE||o.compatMode=="CSS1Compat"||k.stdMode;k.hasOuterHTML="outerHTML" in o.createElement("a");k.settings=l=e.extend({keep_values:false,hex_colors:1},l);k.schema=l.schema;k.styles=new e.html.Styles({url_converter:l.url_converter,url_converter_scope:l.url_converter_scope},l.schema);if(e.isIE6){try{o.execCommand("BackgroundImageCache",false,true)}catch(m){k.cssFlicker=true}}k.fixDoc(o);k.events=l.ownEvents?new e.dom.EventUtils(l.proxy):e.dom.Event;e.addUnload(k.destroy,k);n=l.schema?l.schema.getBlockElements():{};k.isBlock=function(q){var p=q.nodeType;if(p){return !!(p===1&&n[q.nodeName])}return !!n[q]}},fixDoc:function(k){var j=this.settings,i;if(b&&j.schema){("abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video").replace(/\w+/g,function(l){k.createElement(l)});for(i in j.schema.getCustomElements()){k.createElement(i)}}},clone:function(k,i){var j=this,m,l;if(!b||k.nodeType!==1||i){return k.cloneNode(i)}l=j.doc;if(!i){m=l.createElement(k.nodeName);g(j.getAttribs(k),function(n){j.setAttrib(m,n.nodeName,j.getAttrib(k,n.nodeName))});return m}return m.firstChild},getRoot:function(){var i=this,j=i.settings;return(j&&i.get(j.root_element))||i.doc.body},getViewPort:function(j){var k,i;j=!j?this.win:j;k=j.document;i=this.boxModel?k.documentElement:k.body;return{x:j.pageXOffset||i.scrollLeft,y:j.pageYOffset||i.scrollTop,w:j.innerWidth||i.clientWidth,h:j.innerHeight||i.clientHeight}},getRect:function(l){var k,i=this,j;l=i.get(l);k=i.getPos(l);j=i.getSize(l);return{x:k.x,y:k.y,w:j.w,h:j.h}},getSize:function(l){var j=this,i,k;l=j.get(l);i=j.getStyle(l,"width");k=j.getStyle(l,"height");if(i.indexOf("px")===-1){i=0}if(k.indexOf("px")===-1){k=0}return{w:parseInt(i,10)||l.offsetWidth||l.clientWidth,h:parseInt(k,10)||l.offsetHeight||l.clientHeight}},getParent:function(k,j,i){return this.getParents(k,j,i,false)},getParents:function(s,m,k,q){var j=this,i,l=j.settings,p=[];s=j.get(s);q=q===undefined;if(l.strict_root){k=k||j.getRoot()}if(d(m,"string")){i=m;if(m==="*"){m=function(o){return o.nodeType==1}}else{m=function(o){return j.is(o,i)}}}while(s){if(s==k||!s.nodeType||s.nodeType===9){break}if(!m||m(s)){if(q){p.push(s)}else{return s}}s=s.parentNode}return q?p:null},get:function(i){var j;if(i&&this.doc&&typeof(i)=="string"){j=i;i=this.doc.getElementById(i);if(i&&i.id!==j){return this.doc.getElementsByName(j)[1]}}return i},getNext:function(j,i){return this._findSib(j,i,"nextSibling")},getPrev:function(j,i){return this._findSib(j,i,"previousSibling")},select:function(k,j){var i=this;return e.dom.Sizzle(k,i.get(j)||i.get(i.settings.root_element)||i.doc,[])},is:function(l,j){var k;if(l.length===undefined){if(j==="*"){return l.nodeType==1}if(c.test(j)){j=j.toLowerCase().split(/,/);l=l.nodeName.toLowerCase();for(k=j.length-1;k>=0;k--){if(j[k]==l){return true}}return false}}return e.dom.Sizzle.matches(j,l.nodeType?[l]:l).length>0},add:function(l,o,i,k,m){var j=this;return this.run(l,function(r){var q,n;q=d(o,"string")?j.doc.createElement(o):o;j.setAttribs(q,i);if(k){if(k.nodeType){q.appendChild(k)}else{j.setHTML(q,k)}}return !m?r.appendChild(q):q})},create:function(k,i,j){return this.add(this.doc.createElement(k),k,i,j,1)},createHTML:function(q,i,m){var p="",l=this,j;p+="<"+q;for(j in i){if(i.hasOwnProperty(j)){p+=" "+j+'="'+l.encode(i[j])+'"'}}if(typeof(m)!="undefined"){return p+">"+m+"</"+q+">"}return p+" />"},remove:function(i,j){return this.run(i,function(l){var m,k=l.parentNode;if(!k){return null}if(j){while(m=l.firstChild){if(!e.isIE||m.nodeType!==3||m.nodeValue){k.insertBefore(m,l)}else{l.removeChild(m)}}}return k.removeChild(l)})},setStyle:function(l,i,j){var k=this;return k.run(l,function(o){var n,m;n=o.style;i=i.replace(/-(\D)/g,function(q,p){return p.toUpperCase()});if(k.pixelStyles.test(i)&&(e.is(j,"number")||/^[\-0-9\.]+$/.test(j))){j+="px"}switch(i){case"opacity":if(b){n.filter=j===""?"":"alpha(opacity="+(j*100)+")";if(!l.currentStyle||!l.currentStyle.hasLayout){n.display="inline-block"}}n[i]=n["-moz-opacity"]=n["-khtml-opacity"]=j||"";break;case"float":b?n.styleFloat=j:n.cssFloat=j;break;default:n[i]=j||""}if(k.settings.update_styles){k.setAttrib(o,"data-mce-style")}})},getStyle:function(l,i,k){l=this.get(l);if(!l){return}if(this.doc.defaultView&&k){i=i.replace(/[A-Z]/g,function(m){return"-"+m});try{return this.doc.defaultView.getComputedStyle(l,null).getPropertyValue(i)}catch(j){return null}}i=i.replace(/-(\D)/g,function(n,m){return m.toUpperCase()});if(i=="float"){i=b?"styleFloat":"cssFloat"}if(l.currentStyle&&k){return l.currentStyle[i]}return l.style?l.style[i]:undefined},setStyles:function(l,m){var j=this,k=j.settings,i;i=k.update_styles;k.update_styles=0;g(m,function(o,p){j.setStyle(l,p,o)});k.update_styles=i;if(k.update_styles){j.setAttrib(l,k.cssText)}},removeAllAttribs:function(i){return this.run(i,function(l){var k,j=l.attributes;for(k=j.length-1;k>=0;k--){l.removeAttributeNode(j.item(k))}})},setAttrib:function(k,l,i){var j=this;if(!k||!l){return}if(j.settings.strict){l=l.toLowerCase()}return this.run(k,function(p){var o=j.settings;var m=p.getAttribute(l);if(i!==null){switch(l){case"style":if(!d(i,"string")){g(i,function(q,r){j.setStyle(p,r,q)});return}if(o.keep_values){if(i&&!j._isRes(i)){p.setAttribute("data-mce-style",i,2)}else{p.removeAttribute("data-mce-style",2)}}p.style.cssText=i;break;case"class":p.className=i||"";break;case"src":case"href":if(o.keep_values){if(o.url_converter){i=o.url_converter.call(o.url_converter_scope||j,i,l,p)}j.setAttrib(p,"data-mce-"+l,i,2)}break;case"shape":p.setAttribute("data-mce-style",i);break}}if(d(i)&&i!==null&&i.length!==0){p.setAttribute(l,""+i,2)}else{p.removeAttribute(l,2)}if(tinyMCE.activeEditor&&m!=i){var n=tinyMCE.activeEditor;n.onSetAttrib.dispatch(n,p,l,i)}})},setAttribs:function(j,k){var i=this;return this.run(j,function(l){g(k,function(m,o){i.setAttrib(l,o,m)})})},getAttrib:function(m,o,k){var i,j=this,l;m=j.get(m);if(!m||m.nodeType!==1){return k===l?false:k}if(!d(k)){k=""}if(/^(src|href|style|coords|shape)$/.test(o)){i=m.getAttribute("data-mce-"+o);if(i){return i}}if(b&&j.props[o]){i=m[j.props[o]];i=i&&i.nodeValue?i.nodeValue:i}if(!i){i=m.getAttribute(o,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(o)){if(m[j.props[o]]===true&&i===""){return o}return i?o:""}if(m.nodeName==="FORM"&&m.getAttributeNode(o)){return m.getAttributeNode(o).nodeValue}if(o==="style"){i=i||m.style.cssText;if(i){i=j.serializeStyle(j.parseStyle(i),m.nodeName);if(j.settings.keep_values&&!j._isRes(i)){m.setAttribute("data-mce-style",i)}}}if(f&&o==="class"&&i){i=i.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(b){switch(o){case"rowspan":case"colspan":if(i===1){i=""}break;case"size":if(i==="+0"||i===20||i===0){i=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(i===0){i=""}break;case"hspace":if(i===-1){i=""}break;case"maxlength":case"tabindex":if(i===32768||i===2147483647||i==="32768"){i=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(i===65535){return o}return k;case"shape":i=i.toLowerCase();break;default:if(o.indexOf("on")===0&&i){i=e._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1",""+i)}}}return(i!==l&&i!==null&&i!=="")?""+i:k},getPos:function(q,l){var j=this,i=0,p=0,m,o=j.doc,k;q=j.get(q);l=l||o.body;if(q){if(q.getBoundingClientRect){q=q.getBoundingClientRect();m=j.boxModel?o.documentElement:o.body;i=q.left+(o.documentElement.scrollLeft||o.body.scrollLeft)-m.clientTop;p=q.top+(o.documentElement.scrollTop||o.body.scrollTop)-m.clientLeft;return{x:i,y:p}}k=q;while(k&&k!=l&&k.nodeType){i+=k.offsetLeft||0;p+=k.offsetTop||0;k=k.offsetParent}k=q.parentNode;while(k&&k!=l&&k.nodeType){i-=k.scrollLeft||0;p-=k.scrollTop||0;k=k.parentNode}}return{x:i,y:p}},parseStyle:function(i){return this.styles.parse(i)},serializeStyle:function(j,i){return this.styles.serialize(j,i)},loadCSS:function(i){var k=this,l=k.doc,j;if(!i){i=""}j=l.getElementsByTagName("head")[0];g(i.split(","),function(m){var n;if(k.files[m]){return}k.files[m]=true;n=k.create("link",{rel:"stylesheet",href:e._addVer(m)});if(b&&l.documentMode&&l.recalc){n.onload=function(){if(l.recalc){l.recalc()}n.onload=null}}j.appendChild(n)})},addClass:function(i,j){return this.run(i,function(k){var l;if(!j){return 0}if(this.hasClass(k,j)){return k.className}l=this.removeClass(k,j);return k.className=(l!=""?(l+" "):"")+j})},removeClass:function(k,l){var i=this,j;return i.run(k,function(n){var m;if(i.hasClass(n,l)){if(!j){j=new RegExp("(^|\\s+)"+l+"(\\s+|$)","g")}m=n.className.replace(j," ");m=e.trim(m!=" "?m:"");n.className=m;if(!m){n.removeAttribute("class");n.removeAttribute("className")}return m}return n.className})},hasClass:function(j,i){j=this.get(j);if(!j||!i){return false}return(" "+j.className+" ").indexOf(" "+i+" ")!==-1},show:function(i){return this.setStyle(i,"display","block")},hide:function(i){return this.setStyle(i,"display","none")},isHidden:function(i){i=this.get(i);return !i||i.style.display=="none"||this.getStyle(i,"display")=="none"},uniqueId:function(i){return(!i?"mce_":i)+(this.counter++)},setHTML:function(k,j){var i=this;return i.run(k,function(m){if(b){while(m.firstChild){m.removeChild(m.firstChild)}try{m.innerHTML="<br />"+j;m.removeChild(m.firstChild)}catch(l){m=i.create("div");m.innerHTML="<br />"+j;g(m.childNodes,function(o,n){if(n){m.appendChild(o)}})}}else{m.innerHTML=j}return j})},getOuterHTML:function(k){var j,i=this;k=i.get(k);if(!k){return null}if(k.nodeType===1&&i.hasOuterHTML){return k.outerHTML}j=(k.ownerDocument||i.doc).createElement("body");j.appendChild(k.cloneNode(true));return j.innerHTML},setOuterHTML:function(l,j,m){var i=this;function k(p,o,r){var s,q;q=r.createElement("body");q.innerHTML=o;s=q.lastChild;while(s){i.insertAfter(s.cloneNode(true),p);s=s.previousSibling}i.remove(p)}return this.run(l,function(o){o=i.get(o);if(o.nodeType==1){m=m||o.ownerDocument||i.doc;if(b){try{if(b&&o.nodeType==1){o.outerHTML=j}else{k(o,j,m)}}catch(n){k(o,j,m)}}else{k(o,j,m)}}})},decode:h.decode,encode:h.encodeAllRaw,insertAfter:function(i,j){j=this.get(j);return this.run(i,function(l){var k,m;k=j.parentNode;m=j.nextSibling;if(m){k.insertBefore(l,m)}else{k.appendChild(l)}return l})},replace:function(m,l,i){var j=this;if(d(l,"array")){m=m.cloneNode(true)}return j.run(l,function(k){if(i){g(e.grep(k.childNodes),function(n){m.appendChild(n)})}return k.parentNode.replaceChild(m,k)})},rename:function(l,i){var k=this,j;if(l.nodeName!=i.toUpperCase()){j=k.create(i);g(k.getAttribs(l),function(m){k.setAttrib(j,m.nodeName,k.getAttrib(l,m.nodeName))});k.replace(j,l,1)}return j||l},findCommonAncestor:function(k,i){var l=k,j;while(l){j=i;while(j&&l!=j){j=j.parentNode}if(l==j){break}l=l.parentNode}if(!l&&k.ownerDocument){return k.ownerDocument.documentElement}return l},toHex:function(i){var k=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(i);function j(l){l=parseInt(l,10).toString(16);return l.length>1?l:"0"+l}if(k){i="#"+j(k[1])+j(k[2])+j(k[3]);return i}return i},getClasses:function(){var n=this,j=[],m,o={},p=n.settings.class_filter,l;if(n.classes){return n.classes}function q(i){g(i.imports,function(s){q(s)});g(i.cssRules||i.rules,function(s){switch(s.type||1){case 1:if(s.selectorText){g(s.selectorText.split(","),function(r){r=r.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(r)||!/\.[\w\-]+$/.test(r)){return}l=r;r=e._replace(/.*\.([a-z0-9_\-]+).*/i,"$1",r);if(p&&!(r=p(r,l))){return}if(!o[r]){j.push({"class":r});o[r]=1}})}break;case 3:q(s.styleSheet);break}})}try{g(n.doc.styleSheets,q)}catch(k){}if(j.length>0){n.classes=j}return j},run:function(l,k,j){var i=this,m;if(i.doc&&typeof(l)==="string"){l=i.get(l)}if(!l){return false}j=j||this;if(!l.nodeType&&(l.length||l.length===0)){m=[];g(l,function(o,n){if(o){if(typeof(o)=="string"){o=i.doc.getElementById(o)}m.push(k.call(j,o,n))}});return m}return k.call(j,l)},getAttribs:function(j){var i;j=this.get(j);if(!j){return[]}if(b){i=[];if(j.nodeName=="OBJECT"){return j.attributes}if(j.nodeName==="OPTION"&&this.getAttrib(j,"selected")){i.push({specified:1,nodeName:"selected"})}j.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,"").replace(/[\w:\-]+/gi,function(k){i.push({specified:1,nodeName:k})});return i}return j.attributes},isEmpty:function(m,k){var r=this,o,n,q,j,l,p=0;m=m.firstChild;if(m){j=new e.dom.TreeWalker(m,m.parentNode);k=k||r.schema?r.schema.getNonEmptyElements():null;do{q=m.nodeType;if(q===1){if(m.getAttribute("data-mce-bogus")){continue}l=m.nodeName.toLowerCase();if(k&&k[l]){if(l==="br"){p++;continue}return false}n=r.getAttribs(m);o=m.attributes.length;while(o--){l=m.attributes[o].nodeName;if(l==="name"||l==="data-mce-bookmark"){return false}}}if(q==8){return false}if((q===3&&!a.test(m.nodeValue))){return false}}while(m=j.next())}return p<=1},destroy:function(j){var i=this;i.win=i.doc=i.root=i.events=i.frag=null;if(!j){e.removeUnload(i.destroy)}},createRng:function(){var i=this.doc;return i.createRange?i.createRange():new e.dom.Range(this)},nodeIndex:function(m,n){var i=0,k,l,j;if(m){for(k=m.nodeType,m=m.previousSibling,l=m;m;m=m.previousSibling){j=m.nodeType;if(n&&j==3){if(j==k||!m.nodeValue.length){continue}}i++;k=j}}return i},split:function(m,l,p){var q=this,i=q.createRng(),n,k,o;function j(v){var t,s=v.childNodes,u=v.nodeType;function x(A){var z=A.previousSibling&&A.previousSibling.nodeName=="SPAN";var y=A.nextSibling&&A.nextSibling.nodeName=="SPAN";return z&&y}if(u==1&&v.getAttribute("data-mce-type")=="bookmark"){return}for(t=s.length-1;t>=0;t--){j(s[t])}if(u!=9){if(u==3&&v.nodeValue.length>0){var r=e.trim(v.nodeValue).length;if(!q.isBlock(v.parentNode)||r>0||r===0&&x(v)){return}}else{if(u==1){s=v.childNodes;if(s.length==1&&s[0]&&s[0].nodeType==1&&s[0].getAttribute("data-mce-type")=="bookmark"){v.parentNode.insertBefore(s[0],v)}if(s.length||/^(br|hr|input|img)$/i.test(v.nodeName)){return}}}q.remove(v)}return v}if(m&&l){i.setStart(m.parentNode,q.nodeIndex(m));i.setEnd(l.parentNode,q.nodeIndex(l));n=i.extractContents();i=q.createRng();i.setStart(l.parentNode,q.nodeIndex(l)+1);i.setEnd(m.parentNode,q.nodeIndex(m)+1);k=i.extractContents();o=m.parentNode;o.insertBefore(j(n),m);if(p){o.replaceChild(p,l)}else{o.insertBefore(l,m)}o.insertBefore(j(k),m);q.remove(m);return p||l}},bind:function(l,i,k,j){return this.events.add(l,i,k,j||this)},unbind:function(k,i,j){return this.events.remove(k,i,j)},fire:function(k,j,i){return this.events.fire(k,j,i)},getContentEditable:function(j){var i;if(j.nodeType!=1){return null}i=j.getAttribute("data-mce-contenteditable");if(i&&i!=="inherit"){return i}return j.contentEditable!=="inherit"?j.contentEditable:null},_findSib:function(l,i,j){var k=this,m=i;if(l){if(d(m,"string")){m=function(n){return k.is(n,i)}}for(l=l[j];l;l=l[j]){if(m(l)){return l}}}return null},_isRes:function(i){return/^(top|left|bottom|right|width|height)/i.test(i)||/;\s*(top|left|bottom|right|width|height)/i.test(i)}});e.DOM=new e.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(a){function b(c){var O=this,e=c.doc,T=0,F=1,j=2,E=true,S=false,V="startOffset",h="startContainer",Q="endContainer",A="endOffset",k=tinymce.extend,n=c.nodeIndex;k(O,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:E,commonAncestorContainer:e,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:q,setEnd:s,setStartBefore:g,setStartAfter:J,setEndBefore:K,setEndAfter:u,collapse:B,selectNode:y,selectNodeContents:G,compareBoundaryPoints:v,deleteContents:p,extractContents:I,cloneContents:d,insertNode:D,surroundContents:N,cloneRange:L});function x(){return e.createDocumentFragment()}function q(W,t){C(E,W,t)}function s(W,t){C(S,W,t)}function g(t){q(t.parentNode,n(t))}function J(t){q(t.parentNode,n(t)+1)}function K(t){s(t.parentNode,n(t))}function u(t){s(t.parentNode,n(t)+1)}function B(t){if(t){O[Q]=O[h];O[A]=O[V]}else{O[h]=O[Q];O[V]=O[A]}O.collapsed=E}function y(t){g(t);u(t)}function G(t){q(t,0);s(t,t.nodeType===1?t.childNodes.length:t.nodeValue.length)}function v(Z,t){var ac=O[h],X=O[V],ab=O[Q],W=O[A],aa=t.startContainer,ae=t.startOffset,Y=t.endContainer,ad=t.endOffset;if(Z===0){return H(ac,X,aa,ae)}if(Z===1){return H(ab,W,aa,ae)}if(Z===2){return H(ab,W,Y,ad)}if(Z===3){return H(ac,X,Y,ad)}}function p(){l(j)}function I(){return l(T)}function d(){return l(F)}function D(Z){var W=this[h],t=this[V],Y,X;if((W.nodeType===3||W.nodeType===4)&&W.nodeValue){if(!t){W.parentNode.insertBefore(Z,W)}else{if(t>=W.nodeValue.length){c.insertAfter(Z,W)}else{Y=W.splitText(t);W.parentNode.insertBefore(Z,Y)}}}else{if(W.childNodes.length>0){X=W.childNodes[t]}if(X){W.insertBefore(Z,X)}else{W.appendChild(Z)}}}function N(W){var t=O.extractContents();O.insertNode(W);W.appendChild(t);O.selectNode(W)}function L(){return k(new b(c),{startContainer:O[h],startOffset:O[V],endContainer:O[Q],endOffset:O[A],collapsed:O.collapsed,commonAncestorContainer:O.commonAncestorContainer})}function P(t,W){var X;if(t.nodeType==3){return t}if(W<0){return t}X=t.firstChild;while(X&&W>0){--W;X=X.nextSibling}if(X){return X}return t}function m(){return(O[h]==O[Q]&&O[V]==O[A])}function H(Y,aa,W,Z){var ab,X,t,ac,ae,ad;if(Y==W){if(aa==Z){return 0}if(aa<Z){return -1}return 1}ab=W;while(ab&&ab.parentNode!=Y){ab=ab.parentNode}if(ab){X=0;t=Y.firstChild;while(t!=ab&&X<aa){X++;t=t.nextSibling}if(aa<=X){return -1}return 1}ab=Y;while(ab&&ab.parentNode!=W){ab=ab.parentNode}if(ab){X=0;t=W.firstChild;while(t!=ab&&X<Z){X++;t=t.nextSibling}if(X<Z){return -1}return 1}ac=c.findCommonAncestor(Y,W);ae=Y;while(ae&&ae.parentNode!=ac){ae=ae.parentNode}if(!ae){ae=ac}ad=W;while(ad&&ad.parentNode!=ac){ad=ad.parentNode}if(!ad){ad=ac}if(ae==ad){return 0}t=ac.firstChild;while(t){if(t==ae){return -1}if(t==ad){return 1}t=t.nextSibling}}function C(W,Z,Y){var t,X;if(W){O[h]=Z;O[V]=Y}else{O[Q]=Z;O[A]=Y}t=O[Q];while(t.parentNode){t=t.parentNode}X=O[h];while(X.parentNode){X=X.parentNode}if(X==t){if(H(O[h],O[V],O[Q],O[A])>0){O.collapse(W)}}else{O.collapse(W)}O.collapsed=m();O.commonAncestorContainer=c.findCommonAncestor(O[h],O[Q])}function l(ac){var ab,Y=0,ae=0,W,aa,X,Z,t,ad;if(O[h]==O[Q]){return f(ac)}for(ab=O[Q],W=ab.parentNode;W;ab=W,W=W.parentNode){if(W==O[h]){return r(ab,ac)}++Y}for(ab=O[h],W=ab.parentNode;W;ab=W,W=W.parentNode){if(W==O[Q]){return U(ab,ac)}++ae}aa=ae-Y;X=O[h];while(aa>0){X=X.parentNode;aa--}Z=O[Q];while(aa<0){Z=Z.parentNode;aa++}for(t=X.parentNode,ad=Z.parentNode;t!=ad;t=t.parentNode,ad=ad.parentNode){X=t;Z=ad}return o(X,Z,ac)}function f(ab){var ad,ae,t,X,Y,ac,Z,W,aa;if(ab!=j){ad=x()}if(O[V]==O[A]){return ad}if(O[h].nodeType==3){ae=O[h].nodeValue;t=ae.substring(O[V],O[A]);if(ab!=F){X=O[h];W=O[V];aa=O[A]-O[V];if(W===0&&aa>=X.nodeValue.length-1){X.parentNode.removeChild(X)}else{X.deleteData(W,aa)}O.collapse(E)}if(ab==j){return}if(t.length>0){ad.appendChild(e.createTextNode(t))}return ad}X=P(O[h],O[V]);Y=O[A]-O[V];while(X&&Y>0){ac=X.nextSibling;Z=z(X,ab);if(ad){ad.appendChild(Z)}--Y;X=ac}if(ab!=F){O.collapse(E)}return ad}function r(ac,Z){var ab,aa,W,t,Y,X;if(Z!=j){ab=x()}aa=i(ac,Z);if(ab){ab.appendChild(aa)}W=n(ac);t=W-O[V];if(t<=0){if(Z!=F){O.setEndBefore(ac);O.collapse(S)}return ab}aa=ac.previousSibling;while(t>0){Y=aa.previousSibling;X=z(aa,Z);if(ab){ab.insertBefore(X,ab.firstChild)}--t;aa=Y}if(Z!=F){O.setEndBefore(ac);O.collapse(S)}return ab}function U(aa,Z){var ac,W,ab,t,Y,X;if(Z!=j){ac=x()}ab=R(aa,Z);if(ac){ac.appendChild(ab)}W=n(aa);++W;t=O[A]-W;ab=aa.nextSibling;while(ab&&t>0){Y=ab.nextSibling;X=z(ab,Z);if(ac){ac.appendChild(X)}--t;ab=Y}if(Z!=F){O.setStartAfter(aa);O.collapse(E)}return ac}function o(aa,t,ad){var X,af,Z,ab,ac,W,ae,Y;if(ad!=j){af=x()}X=R(aa,ad);if(af){af.appendChild(X)}Z=aa.parentNode;ab=n(aa);ac=n(t);++ab;W=ac-ab;ae=aa.nextSibling;while(W>0){Y=ae.nextSibling;X=z(ae,ad);if(af){af.appendChild(X)}ae=Y;--W}X=i(t,ad);if(af){af.appendChild(X)}if(ad!=F){O.setStartAfter(aa);O.collapse(E)}return af}function i(ab,ac){var X=P(O[Q],O[A]-1),ad,aa,Z,t,W,Y=X!=O[Q];if(X==ab){return M(X,Y,S,ac)}ad=X.parentNode;aa=M(ad,S,S,ac);while(ad){while(X){Z=X.previousSibling;t=M(X,Y,S,ac);if(ac!=j){aa.insertBefore(t,aa.firstChild)}Y=E;X=Z}if(ad==ab){return aa}X=ad.previousSibling;ad=ad.parentNode;W=M(ad,S,S,ac);if(ac!=j){W.appendChild(aa)}aa=W}}function R(ab,ac){var Y=P(O[h],O[V]),Z=Y!=O[h],ad,aa,X,t,W;if(Y==ab){return M(Y,Z,E,ac)}ad=Y.parentNode;aa=M(ad,S,E,ac);while(ad){while(Y){X=Y.nextSibling;t=M(Y,Z,E,ac);if(ac!=j){aa.appendChild(t)}Z=E;Y=X}if(ad==ab){return aa}Y=ad.nextSibling;ad=ad.parentNode;W=M(ad,S,E,ac);if(ac!=j){W.appendChild(aa)}aa=W}}function M(t,Z,ac,ad){var Y,X,aa,W,ab;if(Z){return z(t,ad)}if(t.nodeType==3){Y=t.nodeValue;if(ac){W=O[V];X=Y.substring(W);aa=Y.substring(0,W)}else{W=O[A];X=Y.substring(0,W);aa=Y.substring(W)}if(ad!=F){t.nodeValue=aa}if(ad==j){return}ab=c.clone(t,S);ab.nodeValue=X;return ab}if(ad==j){return}return c.clone(t,S)}function z(W,t){if(t!=j){return t==F?c.clone(W,E):W}W.parentNode.removeChild(W)}}a.Range=b})(tinymce.dom);(function(){function a(d){var b=this,h=d.dom,c=true,f=false;function e(i,j){var k,t=0,q,n,m,l,o,r,p=-1,s;k=i.duplicate();k.collapse(j);s=k.parentElement();if(s.ownerDocument!==d.dom.doc){return}while(s.contentEditable==="false"){s=s.parentNode}if(!s.hasChildNodes()){return{node:s,inside:1}}m=s.children;q=m.length-1;while(t<=q){r=Math.floor((t+q)/2);l=m[r];k.moveToElementText(l);p=k.compareEndPoints(j?"StartToStart":"EndToEnd",i);if(p>0){q=r-1}else{if(p<0){t=r+1}else{return{node:l}}}}if(p<0){if(!l){k.moveToElementText(s);k.collapse(true);l=s;n=true}else{k.collapse(false)}o=0;while(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)!==0){if(k.move("character",1)===0||s!=k.parentElement()){break}o++}}else{k.collapse(true);o=0;while(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)!==0){if(k.move("character",-1)===0||s!=k.parentElement()){break}o++}}return{node:l,position:p,offset:o,inside:n}}function g(){var i=d.getRng(),r=h.createRng(),l,k,p,q,m,j;l=i.item?i.item(0):i.parentElement();if(l.ownerDocument!=h.doc){return r}k=d.isCollapsed();if(i.item){r.setStart(l.parentNode,h.nodeIndex(l));r.setEnd(r.startContainer,r.startOffset+1);return r}function o(A){var u=e(i,A),s,y,z=0,x,v,t;s=u.node;y=u.offset;if(u.inside&&!s.hasChildNodes()){r[A?"setStart":"setEnd"](s,0);return}if(y===v){r[A?"setStartBefore":"setEndAfter"](s);return}if(u.position<0){x=u.inside?s.firstChild:s.nextSibling;if(!x){r[A?"setStartAfter":"setEndAfter"](s);return}if(!y){if(x.nodeType==3){r[A?"setStart":"setEnd"](x,0)}else{r[A?"setStartBefore":"setEndBefore"](x)}return}while(x){t=x.nodeValue;z+=t.length;if(z>=y){s=x;z-=y;z=t.length-z;break}x=x.nextSibling}}else{x=s.previousSibling;if(!x){return r[A?"setStartBefore":"setEndBefore"](s)}if(!y){if(s.nodeType==3){r[A?"setStart":"setEnd"](x,s.nodeValue.length)}else{r[A?"setStartAfter":"setEndAfter"](x)}return}while(x){z+=x.nodeValue.length;if(z>=y){s=x;z-=y;break}x=x.previousSibling}}r[A?"setStart":"setEnd"](s,z)}try{o(true);if(!k){o()}}catch(n){if(n.number==-2147024809){m=b.getBookmark(2);p=i.duplicate();p.collapse(true);l=p.parentElement();if(!k){p=i.duplicate();p.collapse(false);q=p.parentElement();q.innerHTML=q.innerHTML}l.innerHTML=l.innerHTML;b.moveToBookmark(m);i=d.getRng();o(true);if(!k){o()}}else{throw n}}return r}this.getBookmark=function(m){var j=d.getRng(),o,i,l={};function n(u){var t,p,s,r,q=[];t=u.parentNode;p=h.getRoot().parentNode;while(t!=p&&t.nodeType!==9){s=t.children;r=s.length;while(r--){if(u===s[r]){q.push(r);break}}u=t;t=t.parentNode}return q}function k(q){var p;p=e(j,q);if(p){return{position:p.position,offset:p.offset,indexes:n(p.node),inside:p.inside}}}if(m===2){if(!j.item){l.start=k(true);if(!d.isCollapsed()){l.end=k()}}else{l.start={ctrl:true,indexes:n(j.item(0))}}}return l};this.moveToBookmark=function(k){var j,i=h.doc.body;function m(o){var r,q,n,p;r=h.getRoot();for(q=o.length-1;q>=0;q--){p=r.children;n=o[q];if(n<=p.length-1){r=p[n]}}return r}function l(r){var n=k[r?"start":"end"],q,p,o;if(n){q=n.position>0;p=i.createTextRange();p.moveToElementText(m(n.indexes));offset=n.offset;if(offset!==o){p.collapse(n.inside||q);p.moveStart("character",q?-offset:offset)}else{p.collapse(r)}j.setEndPoint(r?"StartToStart":"EndToStart",p);if(r){j.collapse(true)}}}if(k.start){if(k.start.ctrl){j=i.createControlRange();j.addElement(m(k.start.indexes));j.select()}else{j=i.createTextRange();l(true);l();j.select()}}};this.addRange=function(i){var n,l,k,p,s,q,r=d.dom.doc,m=r.body;function j(z){var u,y,t,x,v;t=h.create("a");u=z?k:s;y=z?p:q;x=n.duplicate();if(u==r||u==r.documentElement){u=m;y=0}if(u.nodeType==3){u.parentNode.insertBefore(t,u);x.moveToElementText(t);x.moveStart("character",y);h.remove(t);n.setEndPoint(z?"StartToStart":"EndToEnd",x)}else{v=u.childNodes;if(v.length){if(y>=v.length){h.insertAfter(t,v[v.length-1])}else{u.insertBefore(t,v[y])}x.moveToElementText(t)}else{if(u.canHaveHTML){u.innerHTML="<span>\uFEFF</span>";t=u.firstChild;x.moveToElementText(t);x.collapse(f)}}n.setEndPoint(z?"StartToStart":"EndToEnd",x);h.remove(t)}}k=i.startContainer;p=i.startOffset;s=i.endContainer;q=i.endOffset;n=m.createTextRange();if(k==s&&k.nodeType==1){if(p==q&&!k.hasChildNodes()){if(k.canHaveHTML){k.innerHTML="<span>\uFEFF</span><span>\uFEFF</span>";n.moveToElementText(k.lastChild);n.select();h.doc.selection.clear();k.innerHTML="";return}else{p=h.nodeIndex(k);k=k.parentNode}}if(p==q-1){try{l=m.createControlRange();l.addElement(k.childNodes[p]);l.select();return}catch(o){}}}j(true);j();n.select()};this.getRangeAt=g}tinymce.dom.TridentSelection=a})();(function(){var n=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i="sizcache",o=0,r=Object.prototype.toString,h=false,g=true,q=/\\/g,u=/\r\n/g,x=/\W/;[0,0].sort(function(){g=false;return 0});var d=function(C,e,F,G){F=F||[];e=e||document;var I=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!C||typeof C!=="string"){return F}var z,K,N,y,J,M,L,E,B=true,A=d.isXML(e),D=[],H=C;do{n.exec("");z=n.exec(H);if(z){H=z[3];D.push(z[1]);if(z[2]){y=z[3];break}}}while(z);if(D.length>1&&j.exec(C)){if(D.length===2&&k.relative[D[0]]){K=s(D[0]+D[1],e,G)}else{K=k.relative[D[0]]?[e]:d(D.shift(),e);while(D.length){C=D.shift();if(k.relative[C]){C+=D.shift()}K=s(C,K,G)}}}else{if(!G&&D.length>1&&e.nodeType===9&&!A&&k.match.ID.test(D[0])&&!k.match.ID.test(D[D.length-1])){J=d.find(D.shift(),e,A);e=J.expr?d.filter(J.expr,J.set)[0]:J.set[0]}if(e){J=G?{expr:D.pop(),set:l(G)}:d.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&e.parentNode?e.parentNode:e,A);K=J.expr?d.filter(J.expr,J.set):J.set;if(D.length>0){N=l(K)}else{B=false}while(D.length){M=D.pop();L=M;if(!k.relative[M]){M=""}else{L=D.pop()}if(L==null){L=e}k.relative[M](N,L,A)}}else{N=D=[]}}if(!N){N=K}if(!N){d.error(M||C)}if(r.call(N)==="[object Array]"){if(!B){F.push.apply(F,N)}else{if(e&&e.nodeType===1){for(E=0;N[E]!=null;E++){if(N[E]&&(N[E]===true||N[E].nodeType===1&&d.contains(e,N[E]))){F.push(K[E])}}}else{for(E=0;N[E]!=null;E++){if(N[E]&&N[E].nodeType===1){F.push(K[E])}}}}}else{l(N,F)}if(y){d(y,I,F,G);d.uniqueSort(F)}return F};d.uniqueSort=function(y){if(p){h=g;y.sort(p);if(h){for(var e=1;e<y.length;e++){if(y[e]===y[e-1]){y.splice(e--,1)}}}}return y};d.matches=function(e,y){return d(e,null,null,y)};d.matchesSelector=function(e,y){return d(y,null,null,[e]).length>0};d.find=function(E,e,F){var D,z,B,A,C,y;if(!E){return[]}for(z=0,B=k.order.length;z<B;z++){C=k.order[z];if((A=k.leftMatch[C].exec(E))){y=A[1];A.splice(1,1);if(y.substr(y.length-1)!=="\\"){A[1]=(A[1]||"").replace(q,"");D=k.find[C](A,e,F);if(D!=null){E=E.replace(k.match[C],"");break}}}}if(!D){D=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:D,expr:E}};d.filter=function(I,H,L,B){var D,e,G,N,K,y,A,C,J,z=I,M=[],F=H,E=H&&H[0]&&d.isXML(H[0]);while(I&&H.length){for(G in k.filter){if((D=k.leftMatch[G].exec(I))!=null&&D[2]){y=k.filter[G];A=D[1];e=false;D.splice(1,1);if(A.substr(A.length-1)==="\\"){continue}if(F===M){M=[]}if(k.preFilter[G]){D=k.preFilter[G](D,F,L,M,B,E);if(!D){e=N=true}else{if(D===true){continue}}}if(D){for(C=0;(K=F[C])!=null;C++){if(K){N=y(K,D,C,F);J=B^N;if(L&&N!=null){if(J){e=true}else{F[C]=false}}else{if(J){M.push(K);e=true}}}}}if(N!==undefined){if(!L){F=M}I=I.replace(k.match[G],"");if(!e){return[]}break}}}if(I===z){if(e==null){d.error(I)}else{break}}z=I}return F};d.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var b=d.getText=function(B){var z,A,e=B.nodeType,y="";if(e){if(e===1||e===9||e===11){if(typeof B.textContent==="string"){return B.textContent}else{if(typeof B.innerText==="string"){return B.innerText.replace(u,"")}else{for(B=B.firstChild;B;B=B.nextSibling){y+=b(B)}}}}else{if(e===3||e===4){return B.nodeValue}}}else{for(z=0;(A=B[z]);z++){if(A.nodeType!==8){y+=b(A)}}}return y};var k=d.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(D,y){var A=typeof y==="string",C=A&&!x.test(y),E=A&&!C;if(C){y=y.toLowerCase()}for(var z=0,e=D.length,B;z<e;z++){if((B=D[z])){while((B=B.previousSibling)&&B.nodeType!==1){}D[z]=E||B&&B.nodeName.toLowerCase()===y?B||false:B===y}}if(E){d.filter(y,D,true)}},">":function(D,y){var C,B=typeof y==="string",z=0,e=D.length;if(B&&!x.test(y)){y=y.toLowerCase();for(;z<e;z++){C=D[z];if(C){var A=C.parentNode;D[z]=A.nodeName.toLowerCase()===y?A:false}}}else{for(;z<e;z++){C=D[z];if(C){D[z]=B?C.parentNode:C.parentNode===y}}if(B){d.filter(y,D,true)}}},"":function(A,y,C){var B,z=o++,e=t;if(typeof y==="string"&&!x.test(y)){y=y.toLowerCase();B=y;e=a}e("parentNode",y,z,A,B,C)},"~":function(A,y,C){var B,z=o++,e=t;if(typeof y==="string"&&!x.test(y)){y=y.toLowerCase();B=y;e=a}e("previousSibling",y,z,A,B,C)}},find:{ID:function(y,z,A){if(typeof z.getElementById!=="undefined"&&!A){var e=z.getElementById(y[1]);return e&&e.parentNode?[e]:[]}},NAME:function(z,C){if(typeof C.getElementsByName!=="undefined"){var y=[],B=C.getElementsByName(z[1]);for(var A=0,e=B.length;A<e;A++){if(B[A].getAttribute("name")===z[1]){y.push(B[A])}}return y.length===0?null:y}},TAG:function(e,y){if(typeof y.getElementsByTagName!=="undefined"){return y.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(A,y,z,e,D,E){A=" "+A[1].replace(q,"")+" ";if(E){return A}for(var B=0,C;(C=y[B])!=null;B++){if(C){if(D^(C.className&&(" "+C.className+" ").replace(/[\t\n\r]/g," ").indexOf(A)>=0)){if(!z){e.push(C)}}else{if(z){y[B]=false}}}}return false},ID:function(e){return e[1].replace(q,"")},TAG:function(y,e){return y[1].replace(q,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){d.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var y=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(y[1]+(y[2]||1))-0;e[3]=y[3]-0}else{if(e[2]){d.error(e[0])}}e[0]=o++;return e},ATTR:function(B,y,z,e,C,D){var A=B[1]=B[1].replace(q,"");if(!D&&k.attrMap[A]){B[1]=k.attrMap[A]}B[4]=(B[4]||B[5]||"").replace(q,"");if(B[2]==="~="){B[4]=" "+B[4]+" "}return B},PSEUDO:function(B,y,z,e,C){if(B[1]==="not"){if((n.exec(B[3])||"").length>1||/^\w/.test(B[3])){B[3]=d(B[3],null,null,y)}else{var A=d.filter(B[3],y,z,true^C);if(!z){e.push.apply(e,A)}return false}}else{if(k.match.POS.test(B[0])||k.match.CHILD.test(B[0])){return true}}return B},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(z,y,e){return !!d(e[3],z).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(z){var e=z.getAttribute("type"),y=z.type;return z.nodeName.toLowerCase()==="input"&&"text"===y&&(e===y||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(y){var e=y.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===y.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(y){var e=y.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===y.type},button:function(y){var e=y.nodeName.toLowerCase();return e==="input"&&"button"===y.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(y,e){return e===0},last:function(z,y,e,A){return y===A.length-1},even:function(y,e){return e%2===0},odd:function(y,e){return e%2===1},lt:function(z,y,e){return y<e[3]-0},gt:function(z,y,e){return y>e[3]-0},nth:function(z,y,e){return e[3]-0===y},eq:function(z,y,e){return e[3]-0===y}},filter:{PSEUDO:function(z,E,D,F){var e=E[1],y=k.filters[e];if(y){return y(z,D,E,F)}else{if(e==="contains"){return(z.textContent||z.innerText||b([z])||"").indexOf(E[3])>=0}else{if(e==="not"){var A=E[3];for(var C=0,B=A.length;C<B;C++){if(A[C]===z){return false}}return true}else{d.error(e)}}}},CHILD:function(z,B){var A,H,D,G,e,C,F,E=B[1],y=z;switch(E){case"only":case"first":while((y=y.previousSibling)){if(y.nodeType===1){return false}}if(E==="first"){return true}y=z;case"last":while((y=y.nextSibling)){if(y.nodeType===1){return false}}return true;case"nth":A=B[2];H=B[3];if(A===1&&H===0){return true}D=B[0];G=z.parentNode;if(G&&(G[i]!==D||!z.nodeIndex)){C=0;for(y=G.firstChild;y;y=y.nextSibling){if(y.nodeType===1){y.nodeIndex=++C}}G[i]=D}F=z.nodeIndex-H;if(A===0){return F===0}else{return(F%A===0&&F/A>=0)}}},ID:function(y,e){return y.nodeType===1&&y.getAttribute("id")===e},TAG:function(y,e){return(e==="*"&&y.nodeType===1)||!!y.nodeName&&y.nodeName.toLowerCase()===e},CLASS:function(y,e){return(" "+(y.className||y.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(C,A){var z=A[1],e=d.attr?d.attr(C,z):k.attrHandle[z]?k.attrHandle[z](C):C[z]!=null?C[z]:C.getAttribute(z),D=e+"",B=A[2],y=A[4];return e==null?B==="!=":!B&&d.attr?e!=null:B==="="?D===y:B==="*="?D.indexOf(y)>=0:B==="~="?(" "+D+" ").indexOf(y)>=0:!y?D&&e!==false:B==="!="?D!==y:B==="^="?D.indexOf(y)===0:B==="$="?D.substr(D.length-y.length)===y:B==="|="?D===y||D.substr(0,y.length+1)===y+"-":false},POS:function(B,y,z,C){var e=y[2],A=k.setFilters[e];if(A){return A(B,z,y,C)}}}};var j=k.match.POS,c=function(y,e){return"\\"+(e-0+1)};for(var f in k.match){k.match[f]=new RegExp(k.match[f].source+(/(?![^\[]*\])(?![^\(]*\))/.source));k.leftMatch[f]=new RegExp(/(^(?:.|\r|\n)*?)/.source+k.match[f].source.replace(/\\(\d+)/g,c))}k.match.globalPOS=j;var l=function(y,e){y=Array.prototype.slice.call(y,0);if(e){e.push.apply(e,y);return e}return y};try{Array.prototype.slice.call(document.documentElement.childNodes,0)[0].nodeType}catch(v){l=function(B,A){var z=0,y=A||[];if(r.call(B)==="[object Array]"){Array.prototype.push.apply(y,B)}else{if(typeof B.length==="number"){for(var e=B.length;z<e;z++){y.push(B[z])}}else{for(;B[z];z++){y.push(B[z])}}}return y}}var p,m;if(document.documentElement.compareDocumentPosition){p=function(y,e){if(y===e){h=true;return 0}if(!y.compareDocumentPosition||!e.compareDocumentPosition){return y.compareDocumentPosition?-1:1}return y.compareDocumentPosition(e)&4?-1:1}}else{p=function(F,E){if(F===E){h=true;return 0}else{if(F.sourceIndex&&E.sourceIndex){return F.sourceIndex-E.sourceIndex}}var C,y,z=[],e=[],B=F.parentNode,D=E.parentNode,G=B;if(B===D){return m(F,E)}else{if(!B){return -1}else{if(!D){return 1}}}while(G){z.unshift(G);G=G.parentNode}G=D;while(G){e.unshift(G);G=G.parentNode}C=z.length;y=e.length;for(var A=0;A<C&&A<y;A++){if(z[A]!==e[A]){return m(z[A],e[A])}}return A===C?m(F,e[A],-1):m(z[A],E,1)};m=function(y,e,z){if(y===e){return z}var A=y.nextSibling;while(A){if(A===e){return -1}A=A.nextSibling}return 1}}(function(){var y=document.createElement("div"),z="script"+(new Date()).getTime(),e=document.documentElement;y.innerHTML="<a name='"+z+"'/>";e.insertBefore(y,e.firstChild);if(document.getElementById(z)){k.find.ID=function(B,C,D){if(typeof C.getElementById!=="undefined"&&!D){var A=C.getElementById(B[1]);return A?A.id===B[1]||typeof A.getAttributeNode!=="undefined"&&A.getAttributeNode("id").nodeValue===B[1]?[A]:undefined:[]}};k.filter.ID=function(C,A){var B=typeof C.getAttributeNode!=="undefined"&&C.getAttributeNode("id");return C.nodeType===1&&B&&B.nodeValue===A}}e.removeChild(y);e=y=null})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){k.find.TAG=function(y,C){var B=C.getElementsByTagName(y[1]);if(y[1]==="*"){var A=[];for(var z=0;B[z];z++){if(B[z].nodeType===1){A.push(B[z])}}B=A}return B}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){k.attrHandle.href=function(y){return y.getAttribute("href",2)}}e=null})();if(document.querySelectorAll){(function(){var e=d,A=document.createElement("div"),z="__sizzle__";A.innerHTML="<p class='TEST'></p>";if(A.querySelectorAll&&A.querySelectorAll(".TEST").length===0){return}d=function(L,C,G,K){C=C||document;if(!K&&!d.isXML(C)){var J=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(L);if(J&&(C.nodeType===1||C.nodeType===9)){if(J[1]){return l(C.getElementsByTagName(L),G)}else{if(J[2]&&k.find.CLASS&&C.getElementsByClassName){return l(C.getElementsByClassName(J[2]),G)}}}if(C.nodeType===9){if(L==="body"&&C.body){return l([C.body],G)}else{if(J&&J[3]){var F=C.getElementById(J[3]);if(F&&F.parentNode){if(F.id===J[3]){return l([F],G)}}else{return l([],G)}}}try{return l(C.querySelectorAll(L),G)}catch(H){}}else{if(C.nodeType===1&&C.nodeName.toLowerCase()!=="object"){var D=C,E=C.getAttribute("id"),B=E||z,N=C.parentNode,M=/^\s*[+~]/.test(L);if(!E){C.setAttribute("id",B)}else{B=B.replace(/'/g,"\\$&")}if(M&&N){C=C.parentNode}try{if(!M||N){return l(C.querySelectorAll("[id='"+B+"'] "+L),G)}}catch(I){}finally{if(!E){D.removeAttribute("id")}}}}}return e(L,C,G,K)};for(var y in e){d[y]=e[y]}A=null})()}(function(){var e=document.documentElement,z=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(z){var B=!z.call(document.createElement("div"),"div"),y=false;try{z.call(document.documentElement,"[test!='']:sizzle")}catch(A){y=true}d.matchesSelector=function(D,F){F=F.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!d.isXML(D)){try{if(y||!k.match.PSEUDO.test(F)&&!/!=/.test(F)){var C=z.call(D,F);if(C||!B||D.document&&D.document.nodeType!==11){return C}}}catch(E){}}return d(F,null,null,[D]).length>0}}})();(function(){var e=document.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}k.order.splice(1,0,"CLASS");k.find.CLASS=function(y,z,A){if(typeof z.getElementsByClassName!=="undefined"&&!A){return z.getElementsByClassName(y[1])}};e=null})();function a(y,D,C,G,E,F){for(var A=0,z=G.length;A<z;A++){var e=G[A];if(e){var B=false;e=e[y];while(e){if(e[i]===C){B=G[e.sizset];break}if(e.nodeType===1&&!F){e[i]=C;e.sizset=A}if(e.nodeName.toLowerCase()===D){B=e;break}e=e[y]}G[A]=B}}}function t(y,D,C,G,E,F){for(var A=0,z=G.length;A<z;A++){var e=G[A];if(e){var B=false;e=e[y];while(e){if(e[i]===C){B=G[e.sizset];break}if(e.nodeType===1){if(!F){e[i]=C;e.sizset=A}if(typeof D!=="string"){if(e===D){B=true;break}}else{if(d.filter(D,[e]).length>0){B=e;break}}}e=e[y]}G[A]=B}}}if(document.documentElement.contains){d.contains=function(y,e){return y!==e&&(y.contains?y.contains(e):true)}}else{if(document.documentElement.compareDocumentPosition){d.contains=function(y,e){return !!(y.compareDocumentPosition(e)&16)}}else{d.contains=function(){return false}}}d.isXML=function(e){var y=(e?e.ownerDocument||e:0).documentElement;return y?y.nodeName!=="HTML":false};var s=function(z,e,D){var C,E=[],B="",F=e.nodeType?[e]:e;while((C=k.match.PSEUDO.exec(z))){B+=C[0];z=z.replace(k.match.PSEUDO,"")}z=k.relative[z]?z+"*":z;for(var A=0,y=F.length;A<y;A++){d(z,F[A],E,D)}return d.filter(B,E)};window.tinymce.dom.Sizzle=d})();(function(a){a.dom.Element=function(f,d){var b=this,e,c;b.settings=d=d||{};b.id=f;b.dom=e=d.dom||a.DOM;if(!a.isIE){c=e.get(b.id)}a.each(("getPos,getRect,getParent,add,setStyle,getStyle,setStyles,setAttrib,setAttribs,getAttrib,addClass,removeClass,hasClass,getOuterHTML,setOuterHTML,remove,show,hide,isHidden,setHTML,get").split(/,/),function(g){b[g]=function(){var h=[f],j;for(j=0;j<arguments.length;j++){h.push(arguments[j])}h=e[g].apply(e,h);b.update(g);return h}});a.extend(b,{on:function(i,h,g){return a.dom.Event.add(b.id,i,h,g)},getXY:function(){return{x:parseInt(b.getStyle("left")),y:parseInt(b.getStyle("top"))}},getSize:function(){var g=e.get(b.id);return{w:parseInt(b.getStyle("width")||g.clientWidth),h:parseInt(b.getStyle("height")||g.clientHeight)}},moveTo:function(g,h){b.setStyles({left:g,top:h})},moveBy:function(g,i){var h=b.getXY();b.moveTo(h.x+g,h.y+i)},resizeTo:function(g,i){b.setStyles({width:g,height:i})},resizeBy:function(g,j){var i=b.getSize();b.resizeTo(i.w+g,i.h+j)},update:function(h){var g;if(a.isIE6&&d.blocker){h=h||"";if(h.indexOf("get")===0||h.indexOf("has")===0||h.indexOf("is")===0){return}if(h=="remove"){e.remove(b.blocker);return}if(!b.blocker){b.blocker=e.uniqueId();g=e.add(d.container||e.getRoot(),"iframe",{id:b.blocker,style:"position:absolute;",frameBorder:0,src:'javascript:""'});e.setStyle(g,"opacity",0)}else{g=e.get(b.blocker)}e.setStyles(g,{left:b.getStyle("left",1),top:b.getStyle("top",1),width:b.getStyle("width",1),height:b.getStyle("height",1),display:b.getStyle("display",1),zIndex:parseInt(b.getStyle("zIndex",1)||0)-1})}}})}})(tinymce);(function(d){function f(g){return g.replace(/[\n\r]+/g,"")}var c=d.is,b=d.isIE,e=d.each,a=d.dom.TreeWalker;d.create("tinymce.dom.Selection",{Selection:function(j,i,h){var g=this;g.dom=j;g.win=i;g.serializer=h;e(["onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent"],function(k){g[k]=new d.util.Dispatcher(g)});if(!g.win.getSelection){g.tridentSel=new d.dom.TridentSelection(g)}if(d.isIE&&j.boxModel){this._fixIESelection()}d.addUnload(g.destroy,g)},setCursorLocation:function(i,j){var g=this;var h=g.dom.createRng();h.setStart(i,j);h.setEnd(i,j);g.setRng(h);g.collapse(false)},getContent:function(h){var g=this,i=g.getRng(),m=g.dom.create("body"),k=g.getSel(),j,l,o;h=h||{};j=l="";h.get=true;h.format=h.format||"html";h.forced_root_block="";g.onBeforeGetContent.dispatch(g,h);if(h.format=="text"){return g.isCollapsed()?"":(i.text||(k.toString?k.toString():""))}if(i.cloneContents){o=i.cloneContents();if(o){m.appendChild(o)}}else{if(c(i.item)||c(i.htmlText)){m.innerHTML="<br>"+(i.item?i.item(0).outerHTML:i.htmlText);m.removeChild(m.firstChild)}else{m.innerHTML=i.toString()}}if(/^\s/.test(m.innerHTML)){j=" "}if(/\s+$/.test(m.innerHTML)){l=" "}h.getInner=true;h.content=g.isCollapsed()?"":j+g.serializer.serialize(m,h)+l;g.onGetContent.dispatch(g,h);return h.content},setContent:function(h,j){var o=this,g=o.getRng(),k,l=o.win.document,n,m;j=j||{format:"html"};j.set=true;h=j.content=h;if(!j.no_events){o.onBeforeSetContent.dispatch(o,j)}h=j.content;if(g.insertNode){h+='<span id="__caret">_</span>';if(g.startContainer==l&&g.endContainer==l){l.body.innerHTML=h}else{g.deleteContents();if(l.body.childNodes.length===0){l.body.innerHTML=h}else{if(g.createContextualFragment){g.insertNode(g.createContextualFragment(h))}else{n=l.createDocumentFragment();m=l.createElement("div");n.appendChild(m);m.outerHTML=h;g.insertNode(n)}}}k=o.dom.get("__caret");g=l.createRange();g.setStartBefore(k);g.setEndBefore(k);o.setRng(g);o.dom.remove("__caret");try{o.setRng(g)}catch(i){}}else{if(g.item){l.execCommand("Delete",false,null);g=o.getRng()}if(/^\s+/.test(h)){g.pasteHTML('<span id="__mce_tmp">_</span>'+h);o.dom.remove("__mce_tmp")}else{g.pasteHTML(h)}}if(!j.no_events){o.onSetContent.dispatch(o,j)}},getStart:function(){var h=this.getRng(),i,g,k,j;if(h.duplicate||h.item){if(h.item){return h.item(0)}k=h.duplicate();k.collapse(1);i=k.parentElement();g=j=h.parentElement();while(j=j.parentNode){if(j==i){i=g;break}}return i}else{i=h.startContainer;if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[Math.min(i.childNodes.length-1,h.startOffset)]}if(i&&i.nodeType==3){return i.parentNode}return i}},getEnd:function(){var h=this,i=h.getRng(),j,g;if(i.duplicate||i.item){if(i.item){return i.item(0)}i=i.duplicate();i.collapse(0);j=i.parentElement();if(j&&j.nodeName=="BODY"){return j.lastChild||j}return j}else{j=i.endContainer;g=i.endOffset;if(j.nodeType==1&&j.hasChildNodes()){j=j.childNodes[g>0?g-1:g]}if(j&&j.nodeType==3){return j.parentNode}return j}},getBookmark:function(s,v){var y=this,n=y.dom,h,k,j,o,i,p,q,m="\uFEFF",x;function g(z,A){var t=0;e(n.select(z),function(C,B){if(C==A){t=B}});return t}function u(t){function z(E){var A,D,C,B=E?"start":"end";A=t[B+"Container"];D=t[B+"Offset"];if(A.nodeType==1&&A.nodeName=="TR"){C=A.childNodes;A=C[Math.min(E?D:D-1,C.length-1)];if(A){D=E?0:A.childNodes.length;t["set"+(E?"Start":"End")](A,D)}}}z(true);z();return t}function l(){var z=y.getRng(true),t=n.getRoot(),A={};function B(E,J){var D=E[J?"startContainer":"endContainer"],I=E[J?"startOffset":"endOffset"],C=[],F,H,G=0;if(D.nodeType==3){if(v){for(F=D.previousSibling;F&&F.nodeType==3;F=F.previousSibling){I+=F.nodeValue.length}}C.push(I)}else{H=D.childNodes;if(I>=H.length&&H.length){G=1;I=Math.max(0,H.length-1)}C.push(y.dom.nodeIndex(H[I],v)+G)}for(;D&&D!=t;D=D.parentNode){C.push(y.dom.nodeIndex(D,v))}return C}A.start=B(z,true);if(!y.isCollapsed()){A.end=B(z)}return A}if(s==2){if(y.tridentSel){return y.tridentSel.getBookmark(s)}return l()}if(s){return{rng:y.getRng()}}h=y.getRng();j=n.uniqueId();o=tinyMCE.activeEditor.selection.isCollapsed();x="overflow:hidden;line-height:0px";if(h.duplicate||h.item){if(!h.item){k=h.duplicate();try{h.collapse();h.pasteHTML('<span data-mce-type="bookmark" id="'+j+'_start" style="'+x+'">'+m+"</span>");if(!o){k.collapse(false);h.moveToElementText(k.parentElement());if(h.compareEndPoints("StartToEnd",k)===0){k.move("character",-1)}k.pasteHTML('<span data-mce-type="bookmark" id="'+j+'_end" style="'+x+'">'+m+"</span>")}}catch(r){return null}}else{p=h.item(0);i=p.nodeName;return{name:i,index:g(i,p)}}}else{p=y.getNode();i=p.nodeName;if(i=="IMG"){return{name:i,index:g(i,p)}}k=u(h.cloneRange());if(!o){k.collapse(false);k.insertNode(n.create("span",{"data-mce-type":"bookmark",id:j+"_end",style:x},m))}h=u(h);h.collapse(true);h.insertNode(n.create("span",{"data-mce-type":"bookmark",id:j+"_start",style:x},m))}y.moveToBookmark({id:j,keep:1});return{id:j}},moveToBookmark:function(o){var s=this,m=s.dom,j,i,g,r,k,u,p,q;function h(A){var t=o[A?"start":"end"],x,y,z,v;if(t){z=t[0];for(y=r,x=t.length-1;x>=1;x--){v=y.childNodes;if(t[x]>v.length-1){return}y=v[t[x]]}if(y.nodeType===3){z=Math.min(t[0],y.nodeValue.length)}if(y.nodeType===1){z=Math.min(t[0],y.childNodes.length)}if(A){g.setStart(y,z)}else{g.setEnd(y,z)}}return true}function l(B){var v=m.get(o.id+"_"+B),A,t,y,z,x=o.keep;if(v){A=v.parentNode;if(B=="start"){if(!x){t=m.nodeIndex(v)}else{A=v.firstChild;t=1}k=u=A;p=q=t}else{if(!x){t=m.nodeIndex(v)}else{A=v.firstChild;t=1}u=A;q=t}if(!x){z=v.previousSibling;y=v.nextSibling;e(d.grep(v.childNodes),function(C){if(C.nodeType==3){C.nodeValue=C.nodeValue.replace(/\uFEFF/g,"")}});while(v=m.get(o.id+"_"+B)){m.remove(v,1)}if(z&&y&&z.nodeType==y.nodeType&&z.nodeType==3&&!d.isOpera){t=z.nodeValue.length;z.appendData(y.nodeValue);m.remove(y);if(B=="start"){k=u=z;p=q=t}else{u=z;q=t}}}}}function n(t){if(m.isBlock(t)&&!t.innerHTML&&!b){t.innerHTML='<br data-mce-bogus="1" />'}return t}if(o){if(o.start){g=m.createRng();r=m.getRoot();if(s.tridentSel){return s.tridentSel.moveToBookmark(o)}if(h(true)&&h()){s.setRng(g)}}else{if(o.id){l("start");l("end");if(k){g=m.createRng();g.setStart(n(k),p);g.setEnd(n(u),q);s.setRng(g)}}else{if(o.name){s.select(m.select(o.name)[o.index])}else{if(o.rng){s.setRng(o.rng)}}}}}},select:function(l,k){var j=this,m=j.dom,h=m.createRng(),g;function i(n,p){var o=new a(n,n);do{if(n.nodeType==3&&d.trim(n.nodeValue).length!==0){if(p){h.setStart(n,0)}else{h.setEnd(n,n.nodeValue.length)}return}if(n.nodeName=="BR"){if(p){h.setStartBefore(n)}else{h.setEndBefore(n)}return}}while(n=(p?o.next():o.prev()))}if(l){g=m.nodeIndex(l);h.setStart(l.parentNode,g);h.setEnd(l.parentNode,g+1);if(k){i(l,1);i(l)}j.setRng(h)}return l},isCollapsed:function(){var g=this,i=g.getRng(),h=g.getSel();if(!i||i.item){return false}if(i.compareEndPoints){return i.compareEndPoints("StartToEnd",i)===0}return !h||i.collapsed},collapse:function(g){var i=this,h=i.getRng(),j;if(h.item){j=h.item(0);h=i.win.document.body.createTextRange();h.moveToElementText(j)}h.collapse(!!g);i.setRng(h)},getSel:function(){var h=this,g=this.win;return g.getSelection?g.getSelection():g.document.selection},getRng:function(m){var h=this,j,g,l,k=h.win.document;if(m&&h.tridentSel){return h.tridentSel.getRangeAt(0)}try{if(j=h.getSel()){g=j.rangeCount>0?j.getRangeAt(0):(j.createRange?j.createRange():k.createRange())}}catch(i){}if(d.isIE&&g&&g.setStart&&k.selection.createRange().item){l=k.selection.createRange().item(0);g=k.createRange();g.setStartBefore(l);g.setEndAfter(l)}if(!g){g=k.createRange?k.createRange():k.body.createTextRange()}if(g.setStart&&g.startContainer.nodeType===9&&g.collapsed){l=h.dom.getRoot();g.setStart(l,0);g.setEnd(l,0)}if(h.selectedRange&&h.explicitRange){if(g.compareBoundaryPoints(g.START_TO_START,h.selectedRange)===0&&g.compareBoundaryPoints(g.END_TO_END,h.selectedRange)===0){g=h.explicitRange}else{h.selectedRange=null;h.explicitRange=null}}return g},setRng:function(k,g){var j,i=this;if(!i.tridentSel){j=i.getSel();if(j){i.explicitRange=k;try{j.removeAllRanges()}catch(h){}j.addRange(k);if(g===false&&j.extend){j.collapse(k.endContainer,k.endOffset);j.extend(k.startContainer,k.startOffset)}i.selectedRange=j.rangeCount>0?j.getRangeAt(0):null}}else{if(k.cloneRange){try{i.tridentSel.addRange(k);return}catch(h){}}try{k.select()}catch(h){}}},setNode:function(h){var g=this;g.setContent(g.dom.getOuterHTML(h));return h},getNode:function(){var i=this,h=i.getRng(),j=i.getSel(),m,l=h.startContainer,g=h.endContainer;function k(q,o){var p=q;while(q&&q.nodeType===3&&q.length===0){q=o?q.nextSibling:q.previousSibling}return q||p}if(!h){return i.dom.getRoot()}if(h.setStart){m=h.commonAncestorContainer;if(!h.collapsed){if(h.startContainer==h.endContainer){if(h.endOffset-h.startOffset<2){if(h.startContainer.hasChildNodes()){m=h.startContainer.childNodes[h.startOffset]}}}if(l.nodeType===3&&g.nodeType===3){if(l.length===h.startOffset){l=k(l.nextSibling,true)}else{l=l.parentNode}if(h.endOffset===0){g=k(g.previousSibling,false)}else{g=g.parentNode}if(l&&l===g){return l}}}if(m&&m.nodeType==3){return m.parentNode}return m}return h.item?h.item(0):h.parentElement()},getSelectedBlocks:function(p,h){var o=this,k=o.dom,m,l,i,j=[];m=k.getParent(p||o.getStart(),k.isBlock);l=k.getParent(h||o.getEnd(),k.isBlock);if(m){j.push(m)}if(m&&l&&m!=l){i=m;var g=new a(m,k.getRoot());while((i=g.next())&&i!=l){if(k.isBlock(i)){j.push(i)}}}if(l&&m!=l){j.push(l)}return j},isForward:function(){var i=this.dom,g=this.getSel(),j,h;if(!g||g.anchorNode==null||g.focusNode==null){return true}j=i.createRng();j.setStart(g.anchorNode,g.anchorOffset);j.collapse(true);h=i.createRng();h.setStart(g.focusNode,g.focusOffset);h.collapse(true);return j.compareBoundaryPoints(j.START_TO_START,h)<=0},normalize:function(){var h=this,g,m,l,j,i;function k(p){var o,r,n,s=h.dom,u=s.getRoot(),q,t,v;function y(z,A){var B=new a(z,s.getParent(z.parentNode,s.isBlock)||u);while(z=B[A?"prev":"next"]()){if(z.nodeName==="BR"){return true}}}function x(B,z){var C,A;z=z||o;C=new a(z,s.getParent(z.parentNode,s.isBlock)||u);while(q=C[B?"prev":"next"]()){if(q.nodeType===3&&q.nodeValue.length>0){o=q;r=B?q.nodeValue.length:0;m=true;return}if(s.isBlock(q)||t[q.nodeName.toLowerCase()]){return}A=q}if(l&&A){o=A;m=true;r=0}}o=g[(p?"start":"end")+"Container"];r=g[(p?"start":"end")+"Offset"];t=s.schema.getNonEmptyElements();if(o.nodeType===9){o=s.getRoot();r=0}if(o===u){if(p){q=o.childNodes[r>0?r-1:0];if(q){v=q.nodeName.toLowerCase();if(t[q.nodeName]||q.nodeName=="TABLE"){return}}}if(o.hasChildNodes()){o=o.childNodes[Math.min(!p&&r>0?r-1:r,o.childNodes.length-1)];r=0;if(o.hasChildNodes()&&!/TABLE/.test(o.nodeName)){q=o;n=new a(o,u);do{if(q.nodeType===3&&q.nodeValue.length>0){r=p?0:q.nodeValue.length;o=q;m=true;break}if(t[q.nodeName.toLowerCase()]){r=s.nodeIndex(q);o=q.parentNode;if(q.nodeName=="IMG"&&!p){r++}m=true;break}}while(q=(p?n.next():n.prev()))}}}if(l){if(o.nodeType===3&&r===0){x(true)}if(o.nodeType===1){q=o.childNodes[r];if(q&&q.nodeName==="BR"&&!y(q)&&!y(q,true)){x(true,o.childNodes[r])}}}if(p&&!l&&o.nodeType===3&&r===o.nodeValue.length){x(false)}if(m){g["set"+(p?"Start":"End")](o,r)}}if(d.isIE){return}g=h.getRng();l=g.collapsed;k(true);if(!l){k()}if(m){if(l){g.collapse(true)}h.setRng(g,h.isForward())}},destroy:function(h){var g=this;g.win=null;if(!h){d.removeUnload(g.destroy)}},_fixIESelection:function(){var h=this.dom,n=h.doc,i=n.body,k,o,g;function j(p,s){var q=i.createTextRange();try{q.moveToPoint(p,s)}catch(r){q=null}return q}function m(q){var p;if(q.button){p=j(q.x,q.y);if(p){if(p.compareEndPoints("StartToStart",o)>0){p.setEndPoint("StartToStart",o)}else{p.setEndPoint("EndToEnd",o)}p.select()}}else{l()}}function l(){var p=n.selection.createRange();if(o&&!p.item&&p.compareEndPoints("StartToEnd",p)===0){o.select()}h.unbind(n,"mouseup",l);h.unbind(n,"mousemove",m);o=k=0}n.documentElement.unselectable=true;h.bind(n,["mousedown","contextmenu"],function(p){if(p.target.nodeName==="HTML"){if(k){l()}g=n.documentElement;if(g.scrollHeight>g.clientHeight){return}k=1;o=j(p.x,p.y);if(o){h.bind(n,"mouseup",l);h.bind(n,"mousemove",m);h.win.focus();o.select()}}})}})})(tinymce);(function(a){a.dom.Serializer=function(e,i,f){var h,b,d=a.isIE,g=a.each,c;if(!e.apply_source_formatting){e.indent=false}i=i||a.DOM;f=f||new a.html.Schema(e);e.entity_encoding=e.entity_encoding||"named";e.remove_trailing_brs="remove_trailing_brs" in e?e.remove_trailing_brs:true;h=new a.util.Dispatcher(self);b=new a.util.Dispatcher(self);c=new a.html.DomParser(e,f);c.addAttributeFilter("src,href,style",function(k,j){var o=k.length,l,q,n="data-mce-"+j,p=e.url_converter,r=e.url_converter_scope,m;while(o--){l=k[o];q=l.attributes.map[n];if(q!==m){l.attr(j,q.length>0?q:null);l.attr(n,null)}else{q=l.attributes.map[j];if(j==="style"){q=i.serializeStyle(i.parseStyle(q),l.name)}else{if(p){q=p.call(r,q,j,l.name)}}l.attr(j,q.length>0?q:null)}}});c.addAttributeFilter("class",function(j,k){var l=j.length,m,n;while(l--){m=j[l];n=m.attr("class").replace(/(?:^|\s)mce(Item\w+|Selected)(?!\S)/g,"");m.attr("class",n.length>0?n:null)}});c.addAttributeFilter("data-mce-type",function(j,l,k){var m=j.length,n;while(m--){n=j[m];if(n.attributes.map["data-mce-type"]==="bookmark"&&!k.cleanup){n.remove()}}});c.addAttributeFilter("data-mce-expando",function(j,l,k){var m=j.length;while(m--){j[m].attr(l,null)}});c.addNodeFilter("script,style",function(k,l){var m=k.length,n,o;function j(p){return p.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}while(m--){n=k[m];o=n.firstChild?n.firstChild.value:"";if(l==="script"){n.attr("type",(n.attr("type")||"text/javascript").replace(/^mce\-/,""));if(o.length>0){n.firstChild.value="// <![CDATA[\n"+j(o)+"\n// ]]>"}}else{if(o.length>0){n.firstChild.value="<!--\n"+j(o)+"\n-->"}}}});c.addNodeFilter("#comment",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.value.indexOf("[CDATA[")===0){m.name="#cdata";m.type=4;m.value=m.value.replace(/^\[CDATA\[|\]\]$/g,"")}else{if(m.value.indexOf("mce:protected ")===0){m.name="#text";m.type=3;m.raw=true;m.value=unescape(m.value).substr(14)}}}});c.addNodeFilter("xml:namespace,input",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.type===7){m.remove()}else{if(m.type===1){if(k==="input"&&!("type" in m.attributes.map)){m.attr("type","text")}}}}});if(e.fix_list_elements){c.addNodeFilter("ul,ol",function(k,l){var m=k.length,n,j;while(m--){n=k[m];j=n.parent;if(j.name==="ul"||j.name==="ol"){if(n.prev&&n.prev.name==="li"){n.prev.append(n)}}}})}c.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style",function(j,k){var l=j.length;while(l--){j[l].attr(k,null)}});return{schema:f,addNodeFilter:c.addNodeFilter,addAttributeFilter:c.addAttributeFilter,onPreProcess:h,onPostProcess:b,serialize:function(o,m){var l,p,k,j,n;if(d&&i.select("script,style,select,map").length>0){n=o.innerHTML;o=o.cloneNode(false);i.setHTML(o,n)}else{o=o.cloneNode(true)}l=o.ownerDocument.implementation;if(l.createHTMLDocument){p=l.createHTMLDocument("");g(o.nodeName=="BODY"?o.childNodes:[o],function(q){p.body.appendChild(p.importNode(q,true))});if(o.nodeName!="BODY"){o=p.body.firstChild}else{o=p.body}k=i.doc;i.doc=p}m=m||{};m.format=m.format||"html";if(!m.no_events){m.node=o;h.dispatch(self,m)}j=new a.html.Serializer(e,f);m.content=j.serialize(c.parse(a.trim(m.getInner?o.innerHTML:i.getOuterHTML(o)),m));if(!m.cleanup){m.content=m.content.replace(/\uFEFF|\u200B/g,"")}if(!m.no_events){b.dispatch(self,m)}if(k){i.doc=k}m.node=null;return m.content},addRules:function(j){f.addValidElements(j)},setRules:function(j){f.setValidElements(j)}}}})(tinymce);(function(a){a.dom.ScriptLoader=function(h){var c=0,k=1,i=2,l={},j=[],e={},d=[],g=0,f;function b(m,v){var x=this,q=a.DOM,s,o,r,n;function p(){q.remove(n);if(s){s.onreadystatechange=s.onload=s=null}v()}function u(){if(typeof(console)!=="undefined"&&console.log){console.log("Failed to load: "+m)}}n=q.uniqueId();if(a.isIE6){o=new a.util.URI(m);r=location;if(o.host==r.hostname&&o.port==r.port&&(o.protocol+":")==r.protocol&&o.protocol.toLowerCase()!="file"){a.util.XHR.send({url:a._addVer(o.getURI()),success:function(y){var t=q.create("script",{type:"text/javascript"});t.text=y;document.getElementsByTagName("head")[0].appendChild(t);q.remove(t);p()},error:u});return}}s=q.create("script",{id:n,type:"text/javascript",src:a._addVer(m)});if(!a.isIE){s.onload=p}s.onerror=u;if(!a.isOpera){s.onreadystatechange=function(){var t=s.readyState;if(t=="complete"||t=="loaded"){p()}}}(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}this.isDone=function(m){return l[m]==i};this.markDone=function(m){l[m]=i};this.add=this.load=function(m,q,n){var o,p=l[m];if(p==f){j.push(m);l[m]=c}if(q){if(!e[m]){e[m]=[]}e[m].push({func:q,scope:n||this})}};this.loadQueue=function(n,m){this.loadScripts(j,n,m)};this.loadScripts=function(m,q,p){var o;function n(r){a.each(e[r],function(s){s.func.call(s.scope)});e[r]=f}d.push({func:q,scope:p||this});o=function(){var r=a.grep(m);m.length=0;a.each(r,function(s){if(l[s]==i){n(s);return}if(l[s]!=k){l[s]=k;g++;b(s,function(){l[s]=i;g--;n(s);o()})}});if(!g){a.each(d,function(s){s.func.call(s.scope)});d.length=0}};o()}};a.ScriptLoader=new a.dom.ScriptLoader()})(tinymce);(function(a){a.dom.RangeUtils=function(c){var b="\uFEFF";this.walk=function(d,s){var i=d.startContainer,l=d.startOffset,t=d.endContainer,m=d.endOffset,j,g,o,h,r,q,e;e=c.select("td.mceSelected,th.mceSelected");if(e.length>0){a.each(e,function(u){s([u])});return}function f(u){var v;v=u[0];if(v.nodeType===3&&v===i&&l>=v.nodeValue.length){u.splice(0,1)}v=u[u.length-1];if(m===0&&u.length>0&&v===t&&v.nodeType===3){u.splice(u.length-1,1)}return u}function p(x,v,u){var y=[];for(;x&&x!=u;x=x[v]){y.push(x)}return y}function n(v,u){do{if(v.parentNode==u){return v}v=v.parentNode}while(v)}function k(x,v,y){var u=y?"nextSibling":"previousSibling";for(h=x,r=h.parentNode;h&&h!=v;h=r){r=h.parentNode;q=p(h==x?h:h[u],u);if(q.length){if(!y){q.reverse()}s(f(q))}}}if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[l]}if(t.nodeType==1&&t.hasChildNodes()){t=t.childNodes[Math.min(m-1,t.childNodes.length-1)]}if(i==t){return s(f([i]))}j=c.findCommonAncestor(i,t);for(h=i;h;h=h.parentNode){if(h===t){return k(i,j,true)}if(h===j){break}}for(h=t;h;h=h.parentNode){if(h===i){return k(t,j)}if(h===j){break}}g=n(i,j)||i;o=n(t,j)||t;k(i,g,true);q=p(g==i?g:g.nextSibling,"nextSibling",o==t?o.nextSibling:o);if(q.length){s(f(q))}k(t,o)};this.split=function(e){var h=e.startContainer,d=e.startOffset,i=e.endContainer,g=e.endOffset;function f(j,k){return j.splitText(k)}if(h==i&&h.nodeType==3){if(d>0&&d<h.nodeValue.length){i=f(h,d);h=i.previousSibling;if(g>d){g=g-d;h=i=f(i,g).previousSibling;g=i.nodeValue.length;d=0}else{g=0}}}else{if(h.nodeType==3&&d>0&&d<h.nodeValue.length){h=f(h,d);d=0}if(i.nodeType==3&&g>0&&g<i.nodeValue.length){i=f(i,g).previousSibling;g=i.nodeValue.length}}return{startContainer:h,startOffset:d,endContainer:i,endOffset:g}}};a.dom.RangeUtils.compareRanges=function(c,b){if(c&&b){if(c.item||c.duplicate){if(c.item&&b.item&&c.item(0)===b.item(0)){return true}if(c.isEqual&&b.isEqual&&b.isEqual(c)){return true}}else{return c.startContainer==b.startContainer&&c.startOffset==b.startOffset}}return false}})(tinymce);(function(b){var a=b.dom.Event,c=b.each;b.create("tinymce.ui.KeyboardNavigation",{KeyboardNavigation:function(e,f){var p=this,m=e.root,l=e.items,n=e.enableUpDown,i=e.enableLeftRight||!e.enableUpDown,k=e.excludeFromTabOrder,j,h,o,d,g;f=f||b.DOM;j=function(q){g=q.target.id};h=function(q){f.setAttrib(q.target.id,"tabindex","-1")};d=function(q){var r=f.get(g);f.setAttrib(r,"tabindex","0");r.focus()};p.focus=function(){f.get(g).focus()};p.destroy=function(){c(l,function(q){f.unbind(f.get(q.id),"focus",j);f.unbind(f.get(q.id),"blur",h)});f.unbind(f.get(m),"focus",d);f.unbind(f.get(m),"keydown",o);l=f=m=p.focus=j=h=o=d=null;p.destroy=function(){}};p.moveFocus=function(u,r){var q=-1,t=p.controls,s;if(!g){return}c(l,function(x,v){if(x.id===g){q=v;return false}});q+=u;if(q<0){q=l.length-1}else{if(q>=l.length){q=0}}s=l[q];f.setAttrib(g,"tabindex","-1");f.setAttrib(s.id,"tabindex","0");f.get(s.id).focus();if(e.actOnFocus){e.onAction(s.id)}if(r){a.cancel(r)}};o=function(y){var u=37,t=39,x=38,z=40,q=27,s=14,r=13,v=32;switch(y.keyCode){case u:if(i){p.moveFocus(-1)}break;case t:if(i){p.moveFocus(1)}break;case x:if(n){p.moveFocus(-1)}break;case z:if(n){p.moveFocus(1)}break;case q:if(e.onCancel){e.onCancel();a.cancel(y)}break;case s:case r:case v:if(e.onAction){e.onAction(g);a.cancel(y)}break}};c(l,function(s,q){var r;if(!s.id){s.id=f.uniqueId("_mce_item_")}if(k){f.bind(s.id,"blur",h);r="-1"}else{r=(q===0?"0":"-1")}f.setAttrib(s.id,"tabindex",r);f.bind(f.get(s.id),"focus",j)});if(l[0]){g=l[0].id}f.setAttrib(m,"tabindex","-1");f.bind(f.get(m),"focus",d);f.bind(f.get(m),"keydown",o)}})})(tinymce);(function(c){var b=c.DOM,a=c.is;c.create("tinymce.ui.Control",{Control:function(f,e,d){this.id=f;this.settings=e=e||{};this.rendered=false;this.onRender=new c.util.Dispatcher(this);this.classPrefix="";this.scope=e.scope||this;this.disabled=0;this.active=0;this.editor=d},setAriaProperty:function(f,e){var d=b.get(this.id+"_aria")||b.get(this.id);if(d){b.setAttrib(d,"aria-"+f,!!e)}},focus:function(){b.get(this.id).focus()},setDisabled:function(d){if(d!=this.disabled){this.setAriaProperty("disabled",d);this.setState("Disabled",d);this.setState("Enabled",!d);this.disabled=d}},isDisabled:function(){return this.disabled},setActive:function(d){if(d!=this.active){this.setState("Active",d);this.active=d;this.setAriaProperty("pressed",d)}},isActive:function(){return this.active},setState:function(f,d){var e=b.get(this.id);f=this.classPrefix+f;if(d){b.addClass(e,f)}else{b.removeClass(e,f)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,this.renderHTML())},postRender:function(){var e=this,d;if(a(e.disabled)){d=e.disabled;e.disabled=-1;e.setDisabled(d)}if(a(e.active)){d=e.active;e.active=-1;e.setActive(d)}},remove:function(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(c,b,a){this.parent(c,b,a);this.controls=[];this.lookup={}},add:function(a){this.lookup[a.id]=a;this.controls.push(a);return a},get:function(a){return this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(b,a){this.parent(b,a);this.classPrefix="mceSeparator";this.setDisabled(true)},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix,role:"separator","aria-orientation":"vertical",tabindex:"-1"})}});(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPrefix="mceMenuItem"},setSelected:function(f){this.setState("Selected",f);this.setAriaProperty("checked",!!f);this.selected=f},isSelected:function(){return this.selected},postRender:function(){var f=this;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tinymce);(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(h,g){var f=this;f.parent(h,g);f.items={};f.collapsed=false;f.menuCount=0;f.onAddItem=new d.util.Dispatcher(this)},expand:function(g){var f=this;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.collapsed=false},collapse:function(g){var f=this;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(f){if(!f.settings){f=new d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);return this.items[f.id]=f},addSeparator:function(){return this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=this.createMenu(f)}this.menuCount++;return this.add(f)},hasMenus:function(){return this.menuCount!==0},remove:function(f){delete this.items[f.id]},removeAll:function(){var f=this;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.destroy()},"items",f);f.items={}},createMenu:function(g){var f=new d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return f}})})(tinymce);(function(e){var d=e.is,c=e.DOM,f=e.each,a=e.dom.Event,b=e.dom.Element;e.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=g||{};g.container=g.container||c.doc.body;g.offset_x=g.offset_x||0;g.offset_y=g.offset_y||0;g.vp_offset_x=g.vp_offset_x||0;g.vp_offset_y=g.vp_offset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=" mceNoIcons"}this.parent(h,g);this.onShowMenu=new e.util.Dispatcher(this);this.onHideMenu=new e.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(j){var h=this,i=h.settings,g;j.container=j.container||i.container;j.parent=h;j.constrain=j.constrain||i.constrain;j["class"]=j["class"]||i["class"];j.vp_offset_x=j.vp_offset_x||i.vp_offset_x;j.vp_offset_y=j.vp_offset_y||i.vp_offset_y;j.keyboard_focus=i.keyboard_focus;g=new e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,h.onAddItem);return g},focus:function(){var g=this;if(g.keyboardNav){g.keyboardNav.focus()}},update:function(){var i=this,j=i.settings,g=c.get("menu_"+i.id+"_tbl"),l=c.get("menu_"+i.id+"_co"),h,k;h=j.max_width?Math.min(g.offsetWidth,j.max_width):g.offsetWidth;k=j.max_height?Math.min(g.offsetHeight,j.max_height):g.offsetHeight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeight<j.max_height){c.setStyle(l,"overflow","hidden")}}},showMenu:function(p,n,r){var z=this,A=z.settings,o,g=c.getViewPort(),u,l,v,q,i=2,k,j,m=z.classPrefix;z.collapse(1);if(z.isMenuVisible){return}if(!z.rendered){o=c.add(z.settings.container,z.renderNode());f(z.items,function(h){h.postRender()});z.element=new b("menu_"+z.id,{blocker:1,container:A.container})}else{o=c.get("menu_"+z.id)}if(!e.isOpera){c.setStyles(o,{left:-65535,top:-65535})}c.show(o);z.update();p+=A.offset_x||0;n+=A.offset_y||0;g.w-=4;g.h-=4;if(A.constrain){u=o.clientWidth-i;l=o.clientHeight-i;v=g.x+g.w;q=g.y+g.h;if((p+A.vp_offset_x+u)>v){p=r?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n+A.vp_offset_y+l)>q){n=Math.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{left:p,top:n});z.element.update();z.isMenuVisible=1;z.mouseClickFunc=a.add(o,"click",function(s){var h;s=s.target;if(s&&(s=c.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub")){h=z.items[s.id];if(h.isDisabled()){return}k=z;while(k){if(k.hideMenu){k.hideMenu()}k=k.settings.parent}if(h.settings.onclick){h.settings.onclick(s)}return false}});if(z.hasMenus()){z.mouseOverFunc=a.add(o,"mouseover",function(x){var h,t,s;x=x.target;if(x&&(x=c.getParent(x,"tr"))){h=z.items[x.id];if(z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(x&&c.hasClass(x,m+"ItemSub")){t=c.getRect(x);h.showMenu((t.x+t.w-i),t.y-i,t.x);z.lastMenu=h;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}a.add(o,"keydown",z._keyHandler,z);z.onShowMenu.dispatch(z);if(A.keyboard_focus){z._setupKeyboardNav()}},hideMenu:function(j){var g=this,i=c.get("menu_"+g.id),h;if(!g.isMenuVisible){return}if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(i,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remove(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=0;if(!j){g.collapse(1)}if(g.element){g.element.hide()}if(h=c.get(g.id)){c.removeClass(h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:function(i){var g=this,h;i=g.parent(i);if(g.isRendered&&(h=c.get("menu_"+g.id))){g._add(c.select("tbody",h)[0],i)}return i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(g){c.remove(g.id);this.destroy();return this.parent(g)},destroy:function(){var g=this,h=c.get("menu_"+g.id);if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(h,"mouseover",g.mouseOverFunc);a.remove(c.select("a",h),"focus",g.mouseOverFunc);a.remove(h,"click",g.mouseClickFunc);a.remove(h,"keydown",g._keyHandler);if(g.element){g.element.remove()}c.remove(h)},renderNode:function(){var i=this,j=i.settings,l,h,k,g;g=c.create("div",{role:"listbox",id:"menu_"+i.id,"class":j["class"],style:"position:absolute;left:0;top:0;z-index:200000;outline:0"});if(i.settings.parent){c.setAttrib(g,"aria-parent","menu_"+i.settings.parent.id)}k=c.add(g,"div",{role:"presentation",id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" "+j["class"]:"")});i.element=new b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k,"span",{"class":i.classPrefix+"Line"})}l=c.add(k,"table",{role:"presentation",id:"menu_"+i.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=c.add(l,"tbody");f(i.items,function(m){i._add(h,m)});i.rendered=true;return g},_setupKeyboardNav:function(){var i,h,g=this;i=c.get("menu_"+g.id);h=c.select("a[role=option]","menu_"+g.id);h.splice(0,0,i);g.keyboardNav=new e.ui.KeyboardNavigation({root:"menu_"+g.id,items:h,onCancel:function(){g.hideMenu()},enableUpDown:true});i.focus()},_keyHandler:function(g){var h=this,i;switch(g.keyCode){case 37:if(h.settings.parent){h.hideMenu();h.settings.parent.focus();a.cancel(g)}break;case 39:if(h.mouseOverFunc){h.mouseOverFunc(g)}break}},_add:function(j,h){var i,q=h.settings,p,l,k,m=this.classPrefix,g;if(q.separator){l=c.add(j,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemSeparator"});if(i=l.previousSibling){c.addClass(i,"mceLast")}return}i=l=c.add(j,"tr",{id:h.id,"class":m+"Item "+m+"ItemEnabled"});i=k=c.add(i,q.titleItem?"th":"td");i=p=c.add(i,"a",{id:h.id+"_aria",role:q.titleItem?"presentation":"option",href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});if(q.parent){c.setAttrib(p,"aria-haspopup","true");c.setAttrib(p,"aria-owns","menu_"+h.id)}c.addClass(k,q["class"]);g=c.add(i,"span",{"class":"mceIcon"+(q.icon?" mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=c.add(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.settings.title);if(h.settings.style){if(typeof h.settings.style=="function"){h.settings.style=h.settings.style()}c.setAttrib(i,"style",h.settings.style)}if(j.childNodes.length==1){c.addClass(l,"mceFirst")}if((i=l.previousSibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.collapse){c.addClass(l,m+"ItemSub")}if(i=l.previousSibling){c.removeClass(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var a=b.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(e,d,c){this.parent(e,d,c);this.classPrefix="mceButton"},renderHTML:function(){var f=this.classPrefix,e=this.settings,d,c;c=a.encode(e.label||"");d='<a role="button" id="'+this.id+'" href="javascript:;" class="'+f+" "+f+"Enabled "+e["class"]+(c?" "+f+"Labeled":"")+'" onmousedown="return false;" onclick="return false;" aria-labelledby="'+this.id+'_voice" title="'+a.encode(e.title)+'">';if(e.image&&!(this.editor&&this.editor.forcedHighContrastMode)){d+='<img class="mceIcon" src="'+e.image+'" alt="'+a.encode(e.title)+'" />'+c}else{d+='<span class="mceIcon '+e["class"]+'"></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")}d+='<span class="mceVoiceLabel mceIconOnly" style="display: none;" id="'+this.id+'_voice">'+e.title+"</span>";d+="</a>";return d},postRender:function(){var d=this,e=d.settings,c;if(b.isIE&&d.editor){b.dom.Event.add(d.id,"mousedown",function(f){var g=d.editor.selection.getNode().nodeName;c=g==="IMG"?d.editor.selection.getBookmark():null})}b.dom.Event.add(d.id,"click",function(f){if(!d.isDisabled()){if(b.isIE&&d.editor&&c!==null){d.editor.selection.moveToBookmark(c)}return e.onclick.call(e.scope,f)}});b.dom.Event.add(d.id,"keyup",function(f){if(!d.isDisabled()&&f.keyCode==b.VK.SPACEBAR){return e.onclick.call(e.scope,f)}})}})})(tinymce);(function(e){var d=e.DOM,b=e.dom.Event,f=e.each,a=e.util.Dispatcher,c;e.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(j,i,g){var h=this;h.parent(j,i,g);h.items=[];h.onChange=new a(h);h.onPostRender=new a(h);h.onAdd=new a(h);h.onRenderMenu=new e.util.Dispatcher(this);h.classPrefix="mceListBox";h.marked={}},select:function(h){var g=this,j,i;g.marked={};if(h==c){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(k){return k==h}}if(h!=g.selectedValue){f(g.items,function(l,k){if(i(l.value)){j=1;g.selectByIndex(k);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(g){var i=this,j,k,h;i.marked={};if(g!=i.selectedIndex){j=d.get(i.id+"_text");h=d.get(i.id+"_voiceDesc");k=i.items[g];if(k){i.selectedValue=k.value;i.selectedIndex=g;d.setHTML(j,d.encode(k.title));d.setHTML(h,i.settings.title+" - "+k.title);d.removeClass(j,"mceTitle");d.setAttrib(i.id,"aria-valuenow",k.title)}else{d.setHTML(j,d.encode(i.settings.title));d.setHTML(h,d.encode(i.settings.title));d.addClass(j,"mceTitle");i.selectedValue=i.selectedIndex=null;d.setAttrib(i.id,"aria-valuenow",i.settings.title)}j=0}},mark:function(g){this.marked[g]=true},add:function(j,g,i){var h=this;i=i||{};i=e.extend(i,{title:j,value:g});h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return this.items.length},renderHTML:function(){var j="",g=this,i=g.settings,k=g.classPrefix;j='<span role="listbox" aria-haspopup="true" aria-labelledby="'+g.id+'_voiceDesc" aria-describedby="'+g.id+'_voiceDesc"><table role="presentation" tabindex="0" id="'+g.id+'" cellpadding="0" cellspacing="0" class="'+k+" "+k+"Enabled"+(i["class"]?(" "+i["class"]):"")+'"><tbody><tr>';j+="<td>"+d.createHTML("span",{id:g.id+"_voiceDesc","class":"voiceLabel",style:"display:none;"},g.settings.title);j+=d.createHTML("a",{id:g.id+"_text",tabindex:-1,href:"javascript:;","class":"mceText",onclick:"return false;",onmousedown:"return false;"},d.encode(g.settings.title))+"</td>";j+="<td>"+d.createHTML("a",{id:g.id+"_open",tabindex:-1,href:"javascript:;","class":"mceOpen",onclick:"return false;",onmousedown:"return false;"},'<span><span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span></span>')+"</td>";j+="</tr></tbody></table></span>";return j},showMenu:function(){var h=this,j,i=d.get(this.id),g;if(h.isDisabled()||h.items.length===0){return}if(h.menu&&h.menu.isMenuVisible){return h.hideMenu()}if(!h.isMenuRendered){h.renderMenu();h.isMenuRendered=true}j=d.getPos(i);g=h.menu;g.settings.offset_x=j.x;g.settings.offset_y=j.y;g.settings.keyboard_focus=!e.isOpera;f(h.items,function(k){if(g.items[k.id]){g.items[k.id].setSelected(0)}});f(h.items,function(k){if(g.items[k.id]&&h.marked[k.value]){g.items[k.id].setSelected(1)}if(k.value===h.selectedValue){g.items[k.id].setSelected(1)}});g.showMenu(0,i.clientHeight);b.add(d.doc,"mousedown",h.hideMenu,h);d.addClass(h.id,h.classPrefix+"Selected")},hideMenu:function(h){var g=this;if(g.menu&&g.menu.isMenuVisible){d.removeClass(g.id,g.classPrefix+"Selected");if(h&&h.type=="mousedown"&&(h.target.id==g.id+"_text"||h.target.id==g.id+"_open")){return}if(!h||!d.getParent(h.target,".mceMenu")){d.removeClass(g.id,g.classPrefix+"Selected");b.remove(d.doc,"mousedown",g.hideMenu,g);g.menu.hideMenu()}}},renderMenu:function(){var h=this,g;g=h.settings.control_manager.createDropMenu(h.id+"_menu",{menu_line:1,"class":h.classPrefix+"Menu mceNoIcons",max_width:250,max_height:150});g.onHideMenu.add(function(){h.hideMenu();h.focus()});g.add({title:h.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(h.settings.onselect("")!==false){h.select("")}}});f(h.items,function(i){if(i.value===c){g.add({title:i.title,role:"option","class":"mceMenuItemTitle",onclick:function(){if(h.settings.onselect("")!==false){h.select("")}}})}else{i.id=d.uniqueId();i.role="option";i.onclick=function(){if(h.settings.onselect(i.value)!==false){h.select(i.value)}};g.add(i)}});h.onRenderMenu.dispatch(h,g);h.menu=g},postRender:function(){var g=this,h=g.classPrefix;b.add(g.id,"click",g.showMenu,g);b.add(g.id,"keydown",function(i){if(i.keyCode==32){g.showMenu(i);b.cancel(i)}});b.add(g.id,"focus",function(){if(!g._focused){g.keyDownHandler=b.add(g.id,"keydown",function(i){if(i.keyCode==40){g.showMenu();b.cancel(i)}});g.keyPressHandler=b.add(g.id,"keypress",function(j){var i;if(j.keyCode==13){i=g.selectedValue;g.selectedValue=null;b.cancel(j);g.settings.onselect(i)}})}g._focused=1});b.add(g.id,"blur",function(){b.remove(g.id,"keydown",g.keyDownHandler);b.remove(g.id,"keypress",g.keyPressHandler);g._focused=0});if(e.isIE6||!d.boxModel){b.add(g.id,"mouseover",function(){if(!d.hasClass(g.id,h+"Disabled")){d.addClass(g.id,h+"Hover")}});b.add(g.id,"mouseout",function(){if(!d.hasClass(g.id,h+"Disabled")){d.removeClass(g.id,h+"Hover")}})}g.onPostRender.dispatch(g,d.get(g.id))},destroy:function(){this.parent();b.clear(this.id+"_text");b.clear(this.id+"_open")}})})(tinymce);(function(e){var d=e.DOM,b=e.dom.Event,f=e.each,a=e.util.Dispatcher,c;e.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(h,g){this.parent(h,g);this.classPrefix="mceNativeListBox"},setDisabled:function(g){d.get(this.id).disabled=g;this.setAriaProperty("disabled",g)},isDisabled:function(){return d.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==c){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(k){return k==h}}if(h!=g.selectedValue){f(g.items,function(l,k){if(i(l.value)){j=1;g.selectByIndex(k);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(g){d.get(this.id).selectedIndex=g+1;this.selectedValue=this.items[g]?this.items[g].value:null},add:function(k,h,g){var j,i=this;g=g||{};g.value=h;if(i.isRendered()){d.add(d.get(this.id),"option",g,k)}j={title:k,value:h,attribs:g};i.items.push(j);i.onAdd.dispatch(i,j)},getLength:function(){return this.items.length},renderHTML:function(){var i,g=this;i=d.createHTML("option",{value:""},"-- "+g.settings.title+" --");f(g.items,function(h){i+=d.createHTML("option",{value:h.value},h.title)});i=d.createHTML("select",{id:g.id,"class":"mceNativeListBox","aria-labelledby":g.id+"_aria"},i);i+=d.createHTML("span",{id:g.id+"_aria",style:"display: none"},g.settings.title);return i},postRender:function(){var h=this,i,j=true;h.rendered=true;function g(l){var k=h.items[l.target.selectedIndex-1];if(k&&(k=k.value)){h.onChange.dispatch(h,k);if(h.settings.onselect){h.settings.onselect(k)}}}b.add(h.id,"change",g);b.add(h.id,"keydown",function(l){var k;b.remove(h.id,"change",i);j=false;k=b.add(h.id,"blur",function(){if(j){return}j=true;b.add(h.id,"change",g);b.remove(h.id,"blur",k)});if(e.isWebKit&&(l.keyCode==37||l.keyCode==39)){return b.prevent(l)}if(l.keyCode==13||l.keyCode==32){g(l);return b.cancel(l)}});h.onPostRender.dispatch(h,d.get(h.id))}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(g,f,e){this.parent(g,f,e);this.onRenderMenu=new c.util.Dispatcher(this);f.menu_container=f.menu_container||b.doc.body},showMenu:function(){var g=this,j,i,h=b.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}if(g.isMenuVisible){return g.hideMenu()}j=b.getPos(g.settings.menu_container);i=b.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.vp_offset_x=i.x;f.settings.vp_offset_y=i.y;f.settings.keyboard_focus=g._focused;f.showMenu(0,h.firstChild.clientHeight);a.add(b.doc,"mousedown",g.hideMenu,g);g.setState("Selected",1);g.isMenuVisible=1},renderMenu:function(){var f=this,e;e=f.settings.control_manager.createDropMenu(f.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHideMenu.add(function(){f.hideMenu();f.focus()});f.onRenderMenu.dispatch(f,e);f.menu=e},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&b.getParent(g.target,function(h){return h.id===f.id||h.id===f.id+"_open"})){return}if(!g||!b.getParent(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=0},postRender:function(){var e=this,f=e.settings;a.add(e.id,"click",function(){if(!e.isDisabled()){if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(g,f,e){this.parent(g,f,e);this.classPrefix="mceSplitButton"},renderHTML:function(){var i,f=this,g=f.settings,e;i="<tbody><tr>";if(g.image){e=b.createHTML("img ",{src:g.image,role:"presentation","class":"mceAction "+g["class"]})}else{e=b.createHTML("span",{"class":"mceAction "+g["class"]},"")}e+=b.createHTML("span",{"class":"mceVoiceLabel mceIconOnly",id:f.id+"_voice",style:"display:none;"},g.title);i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_action",tabindex:"-1",href:"javascript:;","class":"mceAction "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";e=b.createHTML("span",{"class":"mceOpen "+g["class"]},'<span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span>');i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_open",tabindex:"-1",href:"javascript:;","class":"mceOpen "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";i+="</tr></tbody>";i=b.createHTML("table",{role:"presentation","class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",title:g.title},i);return b.createHTML("div",{id:f.id,role:"button",tabindex:"0","aria-labelledby":f.id+"_voice","aria-haspopup":"true"},i)},postRender:function(){var e=this,g=e.settings,f;if(g.onclick){f=function(h){if(!e.isDisabled()){g.onclick(e.value);a.cancel(h)}};a.add(e.id+"_action","click",f);a.add(e.id,["click","keydown"],function(h){var k=32,m=14,i=13,j=38,l=40;if((h.keyCode===32||h.keyCode===13||h.keyCode===14)&&!h.altKey&&!h.ctrlKey&&!h.metaKey){f();a.cancel(h)}else{if(h.type==="click"||h.keyCode===l){e.showMenu();a.cancel(h)}}})}a.add(e.id+"_open","click",function(h){e.showMenu();a.cancel(h)});a.add([e.id,e.id+"_open"],"focus",function(){e._focused=1});a.add([e.id,e.id+"_open"],"blur",function(){e._focused=0});if(c.isIE6||!b.boxModel){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clear(this.id+"_action");a.clear(this.id+"_open");a.clear(this.id)}})})(tinymce);(function(d){var c=d.DOM,a=d.dom.Event,b=d.is,e=d.each;d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(i,h,f){var g=this;g.parent(i,h,f);g.settings=h=d.extend({colors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color:"#888888"},g.settings);g.onShowMenu=new d.util.Dispatcher(g);g.onHideMenu=new d.util.Dispatcher(g);g.value=h.default_color},showMenu:function(){var f=this,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.renderMenu();f.isMenuRendered=true}if(f.isMenuVisible){return f.hideMenu()}i=c.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitButtonSelected");h=c.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.y+i.firstChild.clientHeight,zIndex:200000});i=0;a.add(c.doc,"mousedown",f.hideMenu,f);f.onShowMenu.dispatch(f);if(f._focused){f._keyHandler=a.add(f.id+"_menu","keydown",function(k){if(k.keyCode==27){f.hideMenu()}});c.select("a",f.id+"_menu")[0].focus()}f.isMenuVisible=1},hideMenu:function(g){var f=this;if(f.isMenuVisible){if(g&&g.type=="mousedown"&&c.getParent(g.target,function(h){return h.id===f.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSplitButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.doc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandler);c.hide(f.id+"_menu")}f.isMenuVisible=0;f.onHideMenu.dispatch()}},renderMenu:function(){var p=this,h,k=0,q=p.settings,g,j,l,o,f;o=c.add(q.menu_container,"div",{role:"listbox",id:p.id+"_menu","class":q.menu_class+" "+q["class"],style:"position:absolute;left:0;top:-1000px;"});h=c.add(o,"div",{"class":q["class"]+" mceSplitButtonMenu"});c.add(h,"span",{"class":"mceMenuLine"});g=c.add(h,"table",{role:"presentation","class":"mceColorSplitMenu"});j=c.add(g,"tbody");k=0;e(b(q.colors,"array")?q.colors:q.colors.split(","),function(m){m=m.replace(/^#/,"");if(!k--){l=c.add(j,"tr");k=q.grid_width-1}g=c.add(l,"td");var i={href:"javascript:;",style:{backgroundColor:"#"+m},title:p.editor.getLang("colors."+m,m),"data-mce-color":"#"+m};if(!d.isIE){i.role="option"}g=c.add(g,"a",i);if(p.editor.forcedHighContrastMode){g=c.add(g,"canvas",{width:16,height:16,"aria-hidden":"true"});if(g.getContext&&(f=g.getContext("2d"))){f.fillStyle="#"+m;f.fillRect(0,0,16,16)}else{c.remove(g)}}});if(q.more_colors_func){g=c.add(j,"tr");g=c.add(g,"td",{colspan:q.grid_width,"class":"mceMoreColors"});g=c.add(g,"a",{role:"option",id:p.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},q.more_colors_title);a.add(g,"click",function(i){q.more_colors_func.call(q.more_colors_scope||this);return a.cancel(i)})}c.addClass(h,"mceColorSplitMenu");new d.ui.KeyboardNavigation({root:p.id+"_menu",items:c.select("a",p.id+"_menu"),onCancel:function(){p.hideMenu();p.focus()}});a.add(p.id+"_menu","mousedown",function(i){return a.cancel(i)});a.add(p.id+"_menu","click",function(i){var m;i=c.getParent(i.target,"a",j);if(i&&i.nodeName.toLowerCase()=="a"&&(m=i.getAttribute("data-mce-color"))){p.setColor(m)}return false});return o},setColor:function(f){this.displayColor(f);this.hideMenu();this.settings.onselect(f)},displayColor:function(g){var f=this;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=g},postRender:function(){var f=this,g=f.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","class":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.value)},destroy:function(){this.parent();a.clear(this.id+"_menu");a.clear(this.id+"_more");c.remove(this.id+"_menu")}})})(tinymce);(function(b){var d=b.DOM,c=b.each,a=b.dom.Event;b.create("tinymce.ui.ToolbarGroup:tinymce.ui.Container",{renderHTML:function(){var f=this,i=[],e=f.controls,j=b.each,g=f.settings;i.push('<div id="'+f.id+'" role="group" aria-labelledby="'+f.id+'_voice">');i.push("<span role='application'>");i.push('<span id="'+f.id+'_voice" class="mceVoiceLabel" style="display:none;">'+d.encode(g.name)+"</span>");j(e,function(h){i.push(h.renderHTML())});i.push("</span>");i.push("</div>");return i.join("")},focus:function(){var e=this;d.get(e.id).focus()},postRender:function(){var f=this,e=[];c(f.controls,function(g){c(g.controls,function(h){if(h.id){e.push(h)}})});f.keyNav=new b.ui.KeyboardNavigation({root:f.id,items:e,onCancel:function(){if(b.isWebKit){d.get(f.editor.id+"_ifr").focus()}f.editor.focus()},excludeFromTabOrder:!f.settings.tab_focus_toolbar})},destroy:function(){var e=this;e.parent();e.keyNav.destroy();a.clear(e.id)}})})(tinymce);(function(a){var c=a.DOM,b=a.each;a.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var m=this,f="",j,k,n=m.settings,e,d,g,l;l=m.controls;for(e=0;e<l.length;e++){k=l[e];d=l[e-1];g=l[e+1];if(e===0){j="mceToolbarStart";if(k.Button){j+=" mceToolbarStartButton"}else{if(k.SplitButton){j+=" mceToolbarStartSplitButton"}else{if(k.ListBox){j+=" mceToolbarStartListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"))}if(d&&k.ListBox){if(d.Button||d.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarEnd"},c.createHTML("span",null,"<!-- IE -->"))}}if(c.stdMode){f+='<td style="position: relative">'+k.renderHTML()+"</td>"}else{f+="<td>"+k.renderHTML()+"</td>"}if(g&&k.ListBox){if(g.Button||g.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarStart"},c.createHTML("span",null,"<!-- IE -->"))}}}j="mceToolbarEnd";if(k.Button){j+=" mceToolbarEndButton"}else{if(k.SplitButton){j+=" mceToolbarEndSplitButton"}else{if(k.ListBox){j+=" mceToolbarEndListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"));return c.createHTML("table",{id:m.id,"class":"mceToolbar"+(n["class"]?" "+n["class"]:""),cellpadding:"0",cellspacing:"0",align:m.settings.align||"",role:"presentation",tabindex:"-1"},"<tbody><tr>"+f+"</tr></tbody>")}})})(tinymce);(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{AddOnManager:function(){var d=this;d.items=[];d.urls={};d.lookup={};d.onAdd=new a(d)},get:function(d){if(this.lookup[d]){return this.lookup[d].instance}else{return undefined}},dependencies:function(e){var d;if(this.lookup[e]){d=this.lookup[e].dependencies}return d||[]},requireLangPack:function(e){var d=b.settings;if(d&&d.language&&d.language_load!==false){b.ScriptLoader.add(this.urls[e]+"/langs/"+d.language+".js")}},add:function(f,e,d){this.items.push(e);this.lookup[f]={instance:e,dependencies:d};this.onAdd.dispatch(this,f,e);return e},createUrl:function(d,e){if(typeof e==="object"){return e}else{return{prefix:d.prefix,resource:e,suffix:d.suffix}}},addComponents:function(f,d){var e=this.urls[f];b.each(d,function(g){b.ScriptLoader.add(e+"/"+g)})},load:function(j,f,d,h){var g=this,e=f;function i(){var k=g.dependencies(j);b.each(k,function(m){var l=g.createUrl(f,m);g.load(l.resource,l,undefined,undefined)});if(d){if(h){d.call(h)}else{d.call(b.ScriptLoader)}}}if(g.urls[j]){return}if(typeof f==="object"){e=f.prefix+f.resource+f.suffix}if(e.indexOf("/")!==0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}g.urls[j]=e.substring(0,e.lastIndexOf("/"));if(g.lookup[j]){i()}else{b.ScriptLoader.add(e,i,h)}}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(j){var g=j.each,d=j.extend,k=j.DOM,i=j.dom.Event,f=j.ThemeManager,b=j.PluginManager,e=j.explode,h=j.util.Dispatcher,a,c=0;j.documentBaseURL=window.location.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(j.documentBaseURL)){j.documentBaseURL+="/"}j.baseURL=new j.util.URI(j.documentBaseURL).toAbsolute(j.baseURL);j.baseURI=new j.util.URI(j.baseURL);j.onBeforeUnload=new h(j);i.add(window,"beforeunload",function(l){j.onBeforeUnload.dispatch(j,l)});j.onAddEditor=new h(j);j.onRemoveEditor=new h(j);j.EditorManager=d(j,{editors:[],i18n:{},activeEditor:null,init:function(x){var v=this,o,n=j.ScriptLoader,u,l=[],r;function q(t){var s=t.id;if(!s){s=t.name;if(s&&!k.get(s)){s=t.name}else{s=k.uniqueId()}t.setAttribute("id",s)}return s}function m(z,A,t){var y=z[A];if(!y){return}if(j.is(y,"string")){t=y.replace(/\.\w+$/,"");t=t?j.resolve(t):0;y=j.resolve(y)}return y.apply(t||this,Array.prototype.slice.call(arguments,2))}function p(t,s){return s.constructor===RegExp?s.test(t.className):k.hasClass(t,s)}x=d({theme:"simple",language:"en"},x);v.settings=x;i.bind(window,"ready",function(){var s,t;m(x,"onpageload");switch(x.mode){case"exact":s=x.elements||"";if(s.length>0){g(e(s),function(y){if(k.get(y)){r=new j.Editor(y,x);l.push(r);r.render(1)}else{g(document.forms,function(z){g(z.elements,function(A){if(A.name===y){y="mce_editor_"+c++;k.setAttrib(A,"id",y);r=new j.Editor(y,x);l.push(r);r.render(1)}})})}})}break;case"textareas":case"specific_textareas":g(k.select("textarea"),function(y){if(x.editor_deselector&&p(y,x.editor_deselector)){return}if(!x.editor_selector||p(y,x.editor_selector)){r=new j.Editor(q(y),x);l.push(r);r.render(1)}});break;default:if(x.types){g(x.types,function(y){g(k.select(y.selector),function(A){var z=new j.Editor(q(A),j.extend({},x,y));l.push(z);z.render(1)})})}else{if(x.selector){g(k.select(x.selector),function(z){var y=new j.Editor(q(z),x);l.push(y);y.render(1)})}}}if(x.oninit){s=t=0;g(l,function(y){t++;if(!y.initialized){y.onInit.add(function(){s++;if(s==t){m(x,"oninit")}})}else{s++}if(s==t){m(x,"oninit")}})}})},get:function(l){if(l===a){return this.editors}return this.editors[l]},getInstanceById:function(l){return this.get(l)},add:function(m){var l=this,n=l.editors;n[m.id]=m;n.push(m);l._setActive(m);l.onAddEditor.dispatch(l,m);return m},remove:function(n){var m=this,l,o=m.editors;if(!o[n.id]){return null}delete o[n.id];for(l=0;l<o.length;l++){if(o[l]==n){o.splice(l,1);break}}if(m.activeEditor==n){m._setActive(o[0])}n.destroy();m.onRemoveEditor.dispatch(m,n);return n},execCommand:function(r,p,o){var q=this,n=q.get(o),l;function m(){n.destroy();l.detachEvent("onunload",m);l=l.tinyMCE=l.tinymce=null}switch(r){case"mceFocus":n.focus();return true;case"mceAddEditor":case"mceAddControl":if(!q.get(o)){new j.Editor(o,q.settings).render()}return true;case"mceAddFrameControl":l=o.window;l.tinyMCE=tinyMCE;l.tinymce=j;j.DOM.doc=l.document;j.DOM.win=l;n=new j.Editor(o.element_id,o);n.render();if(j.isIE){l.attachEvent("onunload",m)}o.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(n){n.remove()}return true;case"mceToggleEditor":if(!n){q.execCommand("mceAddControl",0,o);return true}if(n.isHidden()){n.show()}else{n.hide()}return true}if(q.activeEditor){return q.activeEditor.execCommand(r,p,o)}return false},execInstanceCommand:function(p,o,n,m){var l=this.get(p);if(l){return l.execCommand(o,n,m)}return false},triggerSave:function(){g(this.editors,function(l){l.save()})},addI18n:function(n,q){var l,m=this.i18n;if(!j.is(n,"string")){g(n,function(r,p){g(r,function(t,s){g(t,function(v,u){if(s==="common"){m[p+"."+u]=v}else{m[p+"."+s+"."+u]=v}})})})}else{g(q,function(r,p){m[n+"."+p]=r})}},_setActive:function(l){this.selectedInstance=this.activeEditor=l}})})(tinymce);(function(k){var l=k.DOM,j=k.dom.Event,f=k.extend,i=k.each,a=k.isGecko,b=k.isIE,e=k.isWebKit,d=k.is,h=k.ThemeManager,c=k.PluginManager,g=k.explode;k.create("tinymce.Editor",{Editor:function(p,o){var m=this,n=true;m.settings=o=f({id:p,language:"en",theme:"simple",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:k.documentBaseURL,add_form_submit_trigger:n,submit_patch:n,add_unload_trigger:n,convert_urls:n,relative_urls:n,remove_script_host:n,table_inline_editing:false,object_resizing:n,accessibility_focus:n,doctype:k.isIE6?'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">':"<!DOCTYPE>",visual:n,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",apply_source_formatting:n,directionality:"ltr",forced_root_block:"p",hidden_input:n,padd_empty_editor:n,render_ui:n,indentation:"30px",fix_table_elements:n,inline_styles:n,convert_fonts_to_spans:n,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure",validate:n,entity_encoding:"named",url_converter:m.convertURL,url_converter_scope:m,ie7_compat:n},o);m.id=m.editorId=p;m.isNotDirty=false;m.plugins={};m.documentBaseURI=new k.util.URI(o.document_base_url||k.documentBaseURL,{base_uri:tinyMCE.baseURI});m.baseURI=k.baseURI;m.contentCSS=[];m.setupEvents();m.execCommands={};m.queryStateCommands={};m.queryValueCommands={};m.execCallback("setup",m)},render:function(o){var p=this,q=p.settings,r=p.id,m=k.ScriptLoader;if(!j.domLoaded){j.add(window,"ready",function(){p.render()});return}tinyMCE.settings=q;if(!p.getElement()){return}if(k.isIDevice&&!k.isIOS5){return}if(!/TEXTAREA|INPUT/i.test(p.getElement().nodeName)&&q.hidden_input&&l.getParent(r,"form")){l.insertAfter(l.create("input",{type:"hidden",name:r}),r)}if(k.WindowManager){p.windowManager=new k.WindowManager(p)}if(q.encoding=="xml"){p.onGetContent.add(function(s,t){if(t.save){t.content=l.encode(t.content)}})}if(q.add_form_submit_trigger){p.onSubmit.addToTop(function(){if(p.initialized){p.save();p.isNotDirty=1}})}if(q.add_unload_trigger){p._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(p.initialized&&!p.destroyed&&!p.isHidden()){p.save({format:"raw",no_events:true})}})}k.addUnload(p.destroy,p);if(q.submit_patch){p.onBeforeRenderUI.add(function(){var s=p.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){p.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){k.triggerSave();p.isNotDirty=1;return p.formElement._mceOldSubmit(p.formElement)}}s=null})}function n(){if(q.language&&q.language_load!==false){m.add(k.baseURL+"/langs/"+q.language+".js")}if(q.theme&&q.theme.charAt(0)!="-"&&!h.urls[q.theme]){h.load(q.theme,"themes/"+q.theme+"/editor_template"+k.suffix+".js")}i(g(q.plugins),function(t){if(t&&!c.urls[t]){if(t.charAt(0)=="-"){t=t.substr(1,t.length);var s=c.dependencies(t);i(s,function(v){var u={prefix:"plugins/",resource:v,suffix:"/editor_plugin"+k.suffix+".js"};v=c.createUrl(u,v);c.load(v.resource,v)})}else{if(t=="safari"){return}c.load(t,{prefix:"plugins/",resource:t,suffix:"/editor_plugin"+k.suffix+".js"})}}});m.loadQueue(function(){if(!p.removed){p.init()}})}n()},init:function(){var q,F=this,G=F.settings,C,y,B=F.getElement(),p,m,D,v,A,E,x,r=[];k.add(F);G.aria_label=G.aria_label||l.getAttrib(B,"aria-label",F.getLang("aria.rich_text_area"));if(G.theme){G.theme=G.theme.replace(/-/,"");p=h.get(G.theme);F.theme=new p();if(F.theme.init){F.theme.init(F,h.urls[G.theme]||k.documentBaseURL.replace(/\/$/,""))}}function z(s){var t=c.get(s),o=c.urls[s]||k.documentBaseURL.replace(/\/$/,""),n;if(t&&k.inArray(r,s)===-1){i(c.dependencies(s),function(u){z(u)});n=new t(F,o);F.plugins[s]=n;if(n.init){n.init(F,o);r.push(s)}}}i(g(G.plugins.replace(/\-/g,"")),z);if(G.popup_css!==false){if(G.popup_css){G.popup_css=F.documentBaseURI.toAbsolute(G.popup_css)}else{G.popup_css=F.baseURI.toAbsolute("themes/"+G.theme+"/skins/"+G.skin+"/dialog.css")}}if(G.popup_css_add){G.popup_css+=","+F.documentBaseURI.toAbsolute(G.popup_css_add)}F.controlManager=new k.ControlManager(F);F.onExecCommand.add(function(n,o){if(!/^(FontName|FontSize)$/.test(o)){F.nodeChanged()}});F.onBeforeRenderUI.dispatch(F,F.controlManager);if(G.render_ui&&F.theme){C=G.width||B.style.width||B.offsetWidth;y=G.height||B.style.height||B.offsetHeight;F.orgDisplay=B.style.display;E=/^[0-9\.]+(|px)$/i;if(E.test(""+C)){C=Math.max(parseInt(C,10)+(p.deltaWidth||0),100)}if(E.test(""+y)){y=Math.max(parseInt(y,10)+(p.deltaHeight||0),100)}p=F.theme.renderUI({targetNode:B,width:C,height:y,deltaWidth:G.delta_width,deltaHeight:G.delta_height});F.editorContainer=p.editorContainer}if(G.content_css){i(g(G.content_css),function(n){F.contentCSS.push(F.documentBaseURI.toAbsolute(n))})}if(G.content_editable){B=q=p=null;return F.initContentBody()}if(document.domain&&location.hostname!=document.domain){k.relaxedDomain=document.domain}l.setStyles(p.sizeContainer||p.editorContainer,{width:C,height:y});y=(p.iframeHeight||y)+(typeof(y)=="number"?(p.deltaHeight||0):"");if(y<100){y=100}F.iframeHTML=G.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml">';if(G.document_base_url!=k.documentBaseURL){F.iframeHTML+='<base href="'+F.documentBaseURI.getURI()+'" />'}if(G.ie7_compat){F.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'}else{F.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=edge" />'}F.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';for(x=0;x<F.contentCSS.length;x++){F.iframeHTML+='<link type="text/css" rel="stylesheet" href="'+F.contentCSS[x]+'" />'}F.contentCSS=[];v=G.body_id||"tinymce";if(v.indexOf("=")!=-1){v=F.getParam("body_id","","hash");v=v[F.id]||v}A=G.body_class||"";if(A.indexOf("=")!=-1){A=F.getParam("body_class","","hash");A=A[F.id]||""}F.iframeHTML+='</head><body id="'+v+'" class="mceContentBody '+A+'" onload="window.parent.tinyMCE.get(\''+F.id+"').onLoad.dispatch();\"><br></body></html>";if(k.relaxedDomain&&(b||(k.isOpera&&parseFloat(opera.version())<11))){D='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+F.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody();})()'}q=l.add(p.iframeContainer,"iframe",{id:F.id+"_ifr",src:D||'javascript:""',frameBorder:"0",allowTransparency:"true",title:G.aria_label,style:{width:"100%",height:y,display:"block"}});F.contentAreaContainer=p.iframeContainer;l.get(p.editorContainer).style.display=F.orgDisplay;l.get(F.id).style.display="none";l.setAttrib(F.id,"aria-hidden",true);if(!k.relaxedDomain||!D){F.initContentBody()}B=q=p=null},initContentBody:function(){var n=this,p=n.settings,q=l.get(n.id),r=n.getDoc(),o,m;if((!b||!k.relaxedDomain)&&!p.content_editable){r.open();r.write(n.iframeHTML);r.close();if(k.relaxedDomain){r.domain=k.relaxedDomain}}if(p.content_editable){l.addClass(q,"mceContentBody");n.contentDocument=r=p.content_document||document;n.contentWindow=p.content_window||window;n.bodyElement=q;p.content_document=p.content_window=null}m=n.getBody();m.disabled=true;if(!p.readonly){m.contentEditable=n.getParam("content_editable_state",true)}m.disabled=false;n.schema=new k.html.Schema(p);n.dom=new k.dom.DOMUtils(r,{keep_values:true,url_converter:n.convertURL,url_converter_scope:n,hex_colors:p.force_hex_style_colors,class_filter:p.class_filter,update_styles:true,root_element:p.content_editable?n.id:null,schema:n.schema});n.parser=new k.html.DomParser(p,n.schema);n.parser.addAttributeFilter("src,href,style",function(s,t){var u=s.length,x,z=n.dom,y,v;while(u--){x=s[u];y=x.attr(t);v="data-mce-"+t;if(!x.attributes.map[v]){if(t==="style"){x.attr(v,z.serializeStyle(z.parseStyle(y),x.name))}else{x.attr(v,n.convertURL(y,t,x.name))}}}});n.parser.addNodeFilter("script",function(s,t){var u=s.length,v;while(u--){v=s[u];v.attr("type","mce-"+(v.attr("type")||"text/javascript"))}});n.parser.addNodeFilter("#cdata",function(s,t){var u=s.length,v;while(u--){v=s[u];v.type=8;v.name="#comment";v.value="[CDATA["+v.value+"]]"}});n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(t,u){var v=t.length,x,s=n.schema.getNonEmptyElements();while(v--){x=t[v];if(x.isEmpty(s)){x.empty().append(new k.html.Node("br",1)).shortEnded=true}}});n.serializer=new k.dom.Serializer(p,n.dom,n.schema);n.selection=new k.dom.Selection(n.dom,n.getWin(),n.serializer);n.formatter=new k.Formatter(n);n.undoManager=new k.UndoManager(n);n.forceBlocks=new k.ForceBlocks(n);n.enterKey=new k.EnterKey(n);n.editorCommands=new k.EditorCommands(n);n.serializer.onPreProcess.add(function(s,t){return n.onPreProcess.dispatch(n,t,s)});n.serializer.onPostProcess.add(function(s,t){return n.onPostProcess.dispatch(n,t,s)});n.onPreInit.dispatch(n);if(!p.gecko_spellcheck){r.body.spellcheck=false}if(!p.readonly){n.bindNativeEvents()}n.controlManager.onPostRender.dispatch(n,n.controlManager);n.onPostRender.dispatch(n);n.quirks=k.util.Quirks(n);if(p.directionality){m.dir=p.directionality}if(p.nowrap){m.style.whiteSpace="nowrap"}if(p.protect){n.onBeforeSetContent.add(function(s,t){i(p.protect,function(u){t.content=t.content.replace(u,function(v){return"<!--mce:protected "+escape(v)+"-->"})})})}n.onSetContent.add(function(){n.addVisual(n.getBody())});if(p.padd_empty_editor){n.onPostProcess.add(function(s,t){t.content=t.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}n.load({initial:true,format:"html"});n.startContent=n.getContent({format:"raw"});n.initialized=true;n.onInit.dispatch(n);n.execCallback("setupcontent_callback",n.id,m,r);n.execCallback("init_instance_callback",n);n.focus(true);n.nodeChanged({initial:true});i(n.contentCSS,function(s){n.dom.loadCSS(s)});if(p.auto_focus){setTimeout(function(){var s=k.get(p.auto_focus);s.selection.select(s.getBody(),1);s.selection.collapse(1);s.getBody().focus();s.getWin().focus()},100)}q=r=m=null},focus:function(p){var o,u=this,t=u.selection,q=u.settings.content_editable,n,r,s=u.getDoc(),m;if(!p){n=t.getRng();if(n.item){r=n.item(0)}u._refreshContentEditable();if(!q){u.getWin().focus()}if(k.isGecko||q){m=u.getBody();if(m.setActive){m.setActive()}else{m.focus()}if(q){t.normalize()}}if(r&&r.ownerDocument==s){n=s.body.createControlRange();n.addElement(r);n.select()}}if(k.activeEditor!=u){if((o=k.activeEditor)!=null){o.onDeactivate.dispatch(o,u)}u.onActivate.dispatch(u,o)}k._setActive(u)},execCallback:function(q){var m=this,p=m.settings[q],o;if(!p){return}if(m.callbackLookup&&(o=m.callbackLookup[q])){p=o.func;o=o.scope}if(d(p,"string")){o=p.replace(/\.\w+$/,"");o=o?k.resolve(o):0;p=k.resolve(p);m.callbackLookup=m.callbackLookup||{};m.callbackLookup[q]={func:p,scope:o}}return p.apply(o||m,Array.prototype.slice.call(arguments,1))},translate:function(m){var o=this.settings.language||"en",n=k.i18n;if(!m){return""}return n[o+"."+m]||m.replace(/\{\#([^\}]+)\}/g,function(q,p){return n[o+"."+p]||"{#"+p+"}"})},getLang:function(o,m){return k.i18n[(this.settings.language||"en")+"."+o]||(d(m)?m:"{#"+o+"}")},getParam:function(t,q,m){var r=k.trim,p=d(this.settings[t])?this.settings[t]:q,s;if(m==="hash"){s={};if(d(p,"string")){i(p.indexOf("=")>0?p.split(/[;,](?![^=;,]*(?:[;,]|$))/):p.split(","),function(n){n=n.split("=");if(n.length>1){s[r(n[0])]=r(n[1])}else{s[r(n[0])]=r(n)}})}else{s=p}return s}return p},nodeChanged:function(q){var m=this,n=m.selection,p;if(m.initialized){q=q||{};p=n.getStart()||m.getBody();p=b&&p.ownerDocument!=m.getDoc()?m.getBody():p;q.parents=[];m.dom.getParent(p,function(o){if(o.nodeName=="BODY"){return true}q.parents.push(o)});m.onNodeChange.dispatch(m,q?q.controlManager||m.controlManager:m.controlManager,p,n.isCollapsed(),q)}},addButton:function(n,o){var m=this;m.buttons=m.buttons||{};m.buttons[n]=o},addCommand:function(m,o,n){this.execCommands[m]={func:o,scope:n||this}},addQueryStateHandler:function(m,o,n){this.queryStateCommands[m]={func:o,scope:n||this}},addQueryValueHandler:function(m,o,n){this.queryValueCommands[m]={func:o,scope:n||this}},addShortcut:function(o,q,m,p){var n=this,r;if(n.settings.custom_shortcuts===false){return false}n.shortcuts=n.shortcuts||{};if(d(m,"string")){r=m;m=function(){n.execCommand(r,false,null)}}if(d(m,"object")){r=m;m=function(){n.execCommand(r[0],r[1],r[2])}}i(g(o),function(s){var t={func:m,scope:p||this,desc:n.translate(q),alt:false,ctrl:false,shift:false};i(g(s,"+"),function(u){switch(u){case"alt":case"ctrl":case"shift":t[u]=true;break;default:t.charCode=u.charCodeAt(0);t.keyCode=u.toUpperCase().charCodeAt(0)}});n.shortcuts[(t.ctrl?"ctrl":"")+","+(t.alt?"alt":"")+","+(t.shift?"shift":"")+","+t.keyCode]=t});return true},execCommand:function(u,r,x,m){var p=this,q=0,v,n;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(u)&&(!m||!m.skip_focus)){p.focus()}m=f({},m);p.onBeforeExecCommand.dispatch(p,u,r,x,m);if(m.terminate){return false}if(p.execCallback("execcommand_callback",p.id,p.selection.getNode(),u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}if(v=p.execCommands[u]){n=v.func.call(v.scope,r,x);if(n!==true){p.onExecCommand.dispatch(p,u,r,x,m);return n}}i(p.plugins,function(o){if(o.execCommand&&o.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);q=1;return false}});if(q){return true}if(p.theme&&p.theme.execCommand&&p.theme.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}if(p.editorCommands.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}p.getDoc().execCommand(u,r,x);p.onExecCommand.dispatch(p,u,r,x,m)},queryCommandState:function(q){var n=this,r,p;if(n._isHidden()){return}if(r=n.queryStateCommands[q]){p=r.func.call(r.scope);if(p!==true){return p}}r=n.editorCommands.queryCommandState(q);if(r!==-1){return r}try{return this.getDoc().queryCommandState(q)}catch(m){}},queryCommandValue:function(r){var n=this,q,p;if(n._isHidden()){return}if(q=n.queryValueCommands[r]){p=q.func.call(q.scope);if(p!==true){return p}}q=n.editorCommands.queryCommandValue(r);if(d(q)){return q}try{return this.getDoc().queryCommandValue(r)}catch(m){}},show:function(){var m=this;l.show(m.getContainer());l.hide(m.id);m.load()},hide:function(){var m=this,n=m.getDoc();if(b&&n){n.execCommand("SelectAll")}m.save();l.hide(m.getContainer());l.setStyle(m.id,"display",m.orgDisplay)},isHidden:function(){return !l.isHidden(this.id)},setProgressState:function(m,n,p){this.onSetProgressState.dispatch(this,m,n,p);return m},load:function(q){var m=this,p=m.getElement(),n;if(p){q=q||{};q.load=true;n=m.setContent(d(p.value)?p.value:p.innerHTML,q);q.element=p;if(!q.no_events){m.onLoadContent.dispatch(m,q)}q.element=p=null;return n}},save:function(r){var m=this,q=m.getElement(),n,p;if(!q||!m.initialized){return}r=r||{};r.save=true;r.element=q;n=r.content=m.getContent(r);if(!r.no_events){m.onSaveContent.dispatch(m,r)}n=r.content;if(!/TEXTAREA|INPUT/i.test(q.nodeName)){q.innerHTML=n;if(p=l.getParent(m.id,"form")){i(p.elements,function(o){if(o.name==m.id){o.value=n;return false}})}}else{q.value=n}r.element=q=null;return n},setContent:function(r,p){var o=this,n,m=o.getBody(),q;p=p||{};p.format=p.format||"html";p.set=true;p.content=r;if(!p.no_events){o.onBeforeSetContent.dispatch(o,p)}r=p.content;if(!k.isIE&&(r.length===0||/^\s+$/.test(r))){q=o.settings.forced_root_block;if(q){r="<"+q+'><br data-mce-bogus="1"></'+q+">"}else{r='<br data-mce-bogus="1">'}m.innerHTML=r;o.selection.select(m,true);o.selection.collapse(true);return}if(p.format!=="raw"){r=new k.html.Serializer({},o.schema).serialize(o.parser.parse(r))}p.content=k.trim(r);o.dom.setHTML(m,p.content);if(!p.no_events){o.onSetContent.dispatch(o,p)}o.selection.normalize();return p.content},getContent:function(n){var m=this,o;n=n||{};n.format=n.format||"html";n.get=true;n.getInner=true;if(!n.no_events){m.onBeforeGetContent.dispatch(m,n)}if(n.format=="raw"){o=m.getBody().innerHTML}else{o=m.serializer.serialize(m.getBody(),n)}n.content=k.trim(o);if(!n.no_events){m.onGetContent.dispatch(m,n)}return n.content},isDirty:function(){var m=this;return k.trim(m.startContent)!=k.trim(m.getContent({format:"raw",no_events:1}))&&!m.isNotDirty},getContainer:function(){var m=this;if(!m.container){m.container=l.get(m.editorContainer||m.id+"_parent")}return m.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return l.get(this.settings.content_element||this.id)},getWin:function(){var m=this,n;if(!m.contentWindow){n=l.get(m.id+"_ifr");if(n){m.contentWindow=n.contentWindow}}return m.contentWindow},getDoc:function(){var m=this,n;if(!m.contentDocument){n=m.getWin();if(n){m.contentDocument=n.document}}return m.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(o,n,q){var m=this,p=m.settings;if(p.urlconverter_callback){return m.execCallback("urlconverter_callback",o,q,true,n)}if(!p.convert_urls||(q&&q.nodeName=="LINK")||o.indexOf("file:")===0){return o}if(p.relative_urls){return m.documentBaseURI.toRelative(o)}o=m.documentBaseURI.toAbsolute(o,p.remove_script_host);return o},addVisual:function(q){var n=this,o=n.settings,p=n.dom,m;q=q||n.getBody();if(!d(n.hasVisual)){n.hasVisual=o.visual}i(p.select("table,a",q),function(s){var r;switch(s.nodeName){case"TABLE":m=o.visual_table_class||"mceItemTable";r=p.getAttrib(s,"border");if(!r||r=="0"){if(n.hasVisual){p.addClass(s,m)}else{p.removeClass(s,m)}}return;case"A":r=p.getAttrib(s,"name");m="mceItemAnchor";if(r){if(n.hasVisual){p.addClass(s,m)}else{p.removeClass(s,m)}}return}});n.onVisualAid.dispatch(n,q,n.hasVisual)},remove:function(){var m=this,n=m.getContainer();if(!m.removed){m.removed=1;m.hide();if(!m.settings.content_editable){j.clear(m.getWin());j.clear(m.getDoc())}j.clear(m.getBody());j.clear(m.formElement);j.unbind(n);m.execCallback("remove_instance_callback",m);m.onRemove.dispatch(m);m.onExecCommand.listeners=[];k.remove(m);l.remove(n)}},destroy:function(n){var m=this;if(m.destroyed){return}if(a){j.unbind(m.getDoc());j.unbind(m.getWin());j.unbind(m.getBody())}if(!n){k.removeUnload(m.destroy);tinyMCE.onBeforeUnload.remove(m._beforeUnload);if(m.theme&&m.theme.destroy){m.theme.destroy()}m.controlManager.destroy();m.selection.destroy();m.dom.destroy()}if(m.formElement){m.formElement.submit=m.formElement._mceOldSubmit;m.formElement._mceOldSubmit=null}m.contentAreaContainer=m.formElement=m.container=m.settings.content_element=m.bodyElement=m.contentDocument=m.contentWindow=null;if(m.selection){m.selection=m.selection.win=m.selection.dom=m.selection.dom.doc=null}m.destroyed=1},_refreshContentEditable:function(){var n=this,m,o;if(n._isHidden()){m=n.getBody();o=m.parentNode;o.removeChild(m);o.appendChild(m);m.focus()}},_isHidden:function(){var m;if(!a){return 0}m=this.selection.getSel();return(!m||!m.rangeCount||m.rangeCount===0)}})})(tinymce);(function(a){var b=a.each;a.Editor.prototype.setupEvents=function(){var c=this,d=c.settings;b(["onPreInit","onBeforeRenderUI","onPostRender","onLoad","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState","onSetAttrib"],function(e){c[e]=new a.util.Dispatcher(c)});if(d.cleanup_callback){c.onBeforeSetContent.add(function(e,f){f.content=e.execCallback("cleanup_callback","insert_to_editor",f.content,f)});c.onPreProcess.add(function(e,f){if(f.set){e.execCallback("cleanup_callback","insert_to_editor_dom",f.node,f)}if(f.get){e.execCallback("cleanup_callback","get_from_editor_dom",f.node,f)}});c.onPostProcess.add(function(e,f){if(f.set){f.content=e.execCallback("cleanup_callback","insert_to_editor",f.content,f)}if(f.get){f.content=e.execCallback("cleanup_callback","get_from_editor",f.content,f)}})}if(d.save_callback){c.onGetContent.add(function(e,f){if(f.save){f.content=e.execCallback("save_callback",e.id,f.content,e.getBody())}})}if(d.handle_event_callback){c.onEvent.add(function(f,g,h){if(c.execCallback("handle_event_callback",g,f,h)===false){Event.cancel(g)}})}if(d.handle_node_change_callback){c.onNodeChange.add(function(f,e,g){f.execCallback("handle_node_change_callback",f.id,g,-1,-1,true,f.selection.isCollapsed())})}if(d.save_callback){c.onSaveContent.add(function(e,g){var f=e.execCallback("save_callback",e.id,g.content,e.getBody());if(f){g.content=f}})}if(d.onchange_callback){c.onChange.add(function(f,e){f.execCallback("onchange_callback",f,e)})}};a.Editor.prototype.bindNativeEvents=function(){var l=this,f,d=l.settings,e=l.dom,h;h={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function c(i,m){var n=i.type;if(l.removed){return}if(l.onEvent.dispatch(l,i,m)!==false){l[h[i.fakeType||i.type]].dispatch(l,i,m)}}function j(i){l.focus(true)}function k(){l.selection.normalize();l.nodeChanged()}b(h,function(m,n){var i=d.content_editable?l.getBody():l.getDoc();switch(n){case"contextmenu":e.bind(i,n,c);break;case"paste":e.bind(l.getBody(),n,c);break;case"submit":case"reset":e.bind(l.getElement().form||a.DOM.getParent(l.id,"form"),n,c);break;default:e.bind(i,n,c)}});e.bind(d.content_editable?l.getBody():(a.isGecko?l.getDoc():l.getWin()),"focus",function(i){l.focus(true)});if(d.content_editable&&a.isOpera){e.bind(l.getBody(),"click",j);e.bind(l.getBody(),"keydown",j)}l.onMouseUp.add(k);l.onKeyUp.add(function(i,n){var m=n.keyCode;if((m>=33&&m<=36)||(m>=37&&m<=40)||m==13||m==45||m==46||m==8||(a.isMac&&(m==91||m==93))||n.ctrlKey){k()}});l.onReset.add(function(){l.setContent(l.startContent,{format:"raw"})});function g(m,i){if(m.altKey||m.ctrlKey||m.metaKey){b(l.shortcuts,function(n){var o=a.isMac?m.metaKey:m.ctrlKey;if(n.ctrl!=o||n.alt!=m.altKey||n.shift!=m.shiftKey){return}if(m.keyCode==n.keyCode||(m.charCode&&m.charCode==n.charCode)){m.preventDefault();if(i){n.func.call(n.scope)}return true}})}}l.onKeyUp.add(function(i,m){g(m)});l.onKeyPress.add(function(i,m){g(m)});l.onKeyDown.add(function(i,m){g(m,true)});if(a.isOpera){l.onClick.add(function(i,m){m.preventDefault()})}}})(tinymce);(function(d){var e=d.each,b,a=true,c=false;d.EditorCommands=function(n){var m=n.dom,p=n.selection,j={state:{},exec:{},value:{}},k=n.settings,q=n.formatter,o;function r(z,y,x){var v;z=z.toLowerCase();if(v=j.exec[z]){v(z,y,x);return a}return c}function l(x){var v;x=x.toLowerCase();if(v=j.state[x]){return v(x)}return -1}function h(x){var v;x=x.toLowerCase();if(v=j.value[x]){return v(x)}return c}function u(v,x){x=x||"exec";e(v,function(z,y){e(y.toLowerCase().split(","),function(A){j[x][A]=z})})}d.extend(this,{execCommand:r,queryCommandState:l,queryCommandValue:h,addCommands:u});function f(y,x,v){if(x===b){x=c}if(v===b){v=null}return n.getDoc().execCommand(y,x,v)}function t(v){return q.match(v)}function s(v,x){q.toggle(v,x?{value:x}:b)}function i(v){o=p.getBookmark(v)}function g(){p.moveToBookmark(o)}u({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(z){var y=n.getDoc(),v;try{f(z)}catch(x){v=a}if(v||!y.queryCommandSupported(z)){if(d.isGecko){n.windowManager.confirm(n.getLang("clipboard_msg"),function(A){if(A){open("http://www.mozilla.org/editor/midasdemo/securityprefs.html","_blank")}})}else{n.windowManager.alert(n.getLang("clipboard_no_support"))}}},unlink:function(v){if(p.isCollapsed()){p.select(p.getNode())}f(v);p.collapse(c)},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(v){var x=v.substring(7);e("left,center,right,full".split(","),function(y){if(x!=y){q.remove("align"+y)}});s("align"+x);r("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(y){var v,x;f(y);v=m.getParent(p.getNode(),"ol,ul");if(v){x=v.parentNode;if(/^(H[1-6]|P|ADDRESS|PRE)$/.test(x.nodeName)){i();m.split(x,v);g()}}},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){s(v)},"ForeColor,HiliteColor,FontName":function(y,x,v){s(y,v)},FontSize:function(z,y,x){var v,A;if(x>=1&&x<=7){A=d.explode(k.font_size_style_values);v=d.explode(k.font_size_classes);if(v){x=v[x-1]||x}else{x=A[x-1]||x}}s(z,x)},RemoveFormat:function(v){q.remove(v)},mceBlockQuote:function(v){s("blockquote")},FormatBlock:function(y,x,v){return s(v||"p")},mceCleanup:function(){var v=p.getBookmark();n.setContent(n.getContent({cleanup:a}),{cleanup:a});p.moveToBookmark(v)},mceRemoveNode:function(z,y,x){var v=x||p.getNode();if(v!=n.getBody()){i();n.dom.remove(v,a);g()}},mceSelectNodeDepth:function(z,y,x){var v=0;m.getParent(p.getNode(),function(A){if(A.nodeType==1&&v++==x){p.select(A);return c}},n.getBody())},mceSelectNode:function(y,x,v){p.select(v)},mceInsertContent:function(B,I,K){var y,J,E,z,F,G,D,C,L,x,A,M,v,H;y=n.parser;J=new d.html.Serializer({},n.schema);v='<span id="mce_marker" data-mce-type="bookmark">\uFEFF</span>';G={content:K,format:"html"};p.onBeforeSetContent.dispatch(p,G);K=G.content;if(K.indexOf("{$caret}")==-1){K+="{$caret}"}K=K.replace(/\{\$caret\}/,v);if(!p.isCollapsed()){n.getDoc().execCommand("Delete",false,null)}E=p.getNode();G={context:E.nodeName.toLowerCase()};F=y.parse(K,G);A=F.lastChild;if(A.attr("id")=="mce_marker"){D=A;for(A=A.prev;A;A=A.walk(true)){if(A.type==3||!m.isBlock(A.name)){A.parent.insert(D,A,A.name==="br");break}}}if(!G.invalid){K=J.serialize(F);A=E.firstChild;M=E.lastChild;if(!A||(A===M&&A.nodeName==="BR")){m.setHTML(E,K)}else{p.setContent(K)}}else{p.setContent(v);E=n.selection.getNode();z=n.getBody();if(E.nodeType==9){E=A=z}else{A=E}while(A!==z){E=A;A=A.parentNode}K=E==z?z.innerHTML:m.getOuterHTML(E);K=J.serialize(y.parse(K.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return J.serialize(F)})));if(E==z){m.setHTML(z,K)}else{m.setOuterHTML(E,K)}}D=m.get("mce_marker");C=m.getRect(D);L=m.getViewPort(n.getWin());if((C.y+C.h>L.y+L.h||C.y<L.y)||(C.x>L.x+L.w||C.x<L.x)){H=d.isIE?n.getDoc().documentElement:n.getBody();H.scrollLeft=C.x;H.scrollTop=C.y-L.h+25}x=m.createRng();A=D.previousSibling;if(A&&A.nodeType==3){x.setStart(A,A.nodeValue.length)}else{x.setStartBefore(D);x.setEndBefore(D)}m.remove(D);p.setRng(x);p.onSetContent.dispatch(p,G);n.addVisual()},mceInsertRawHTML:function(y,x,v){p.setContent("tiny_mce_marker");n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return v}))},mceSetContent:function(y,x,v){n.setContent(v)},"Indent,Outdent":function(z){var x,v,y;x=k.indentation;v=/[a-z%]+$/i.exec(x);x=parseInt(x);if(!l("InsertUnorderedList")&&!l("InsertOrderedList")){if(!k.forced_root_block&&!m.getParent(p.getNode(),m.isBlock)){q.apply("div")}e(p.getSelectedBlocks(),function(A){if(z=="outdent"){y=Math.max(0,parseInt(A.style.paddingLeft||0)-x);m.setStyle(A,"paddingLeft",y?y+v:"")}else{m.setStyle(A,"paddingLeft",(parseInt(A.style.paddingLeft||0)+x)+v)}})}else{f(z)}},mceRepaint:function(){var x;if(d.isGecko){try{i(a);if(p.getSel()){p.getSel().selectAllChildren(n.getBody())}p.collapse(a);g()}catch(v){}}},mceToggleFormat:function(y,x,v){q.toggle(v)},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",false,"<hr />")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual;n.addVisual()},mceReplaceContent:function(y,x,v){n.execCommand("mceInsertContent",false,v.replace(/\{\$selection\}/g,p.getContent({format:"text"})))},mceInsertLink:function(z,y,x){var v;if(typeof(x)=="string"){x={href:x}}v=m.getParent(p.getNode(),"a");x.href=x.href.replace(" ","%20");if(!v||!x.href){q.remove("link")}if(x.href){q.apply("link",x,v)}},selectAll:function(){var x=m.getRoot(),v=m.createRng();v.setStart(x,0);v.setEnd(x,x.childNodes.length);n.selection.setRng(v)}});u({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(z){var x="align"+z.substring(7);var v=p.isCollapsed()?[m.getParent(p.getNode(),m.isBlock)]:p.getSelectedBlocks();var y=d.map(v,function(A){return !!q.matchNode(A,x)});return d.inArray(y,a)!==-1},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){return t(v)},mceBlockQuote:function(){return t("blockquote")},Outdent:function(){var v;if(k.inline_styles){if((v=m.getParent(p.getStart(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}if((v=m.getParent(p.getEnd(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}}return l("InsertUnorderedList")||l("InsertOrderedList")||(!k.inline_styles&&!!m.getParent(p.getNode(),"BLOCKQUOTE"))},"InsertUnorderedList,InsertOrderedList":function(v){return m.getParent(p.getNode(),v=="insertunorderedlist"?"UL":"OL")}},"state");u({"FontSize,FontName":function(y){var x=0,v;if(v=m.getParent(p.getNode(),"span")){if(y=="fontsize"){x=v.style.fontSize}else{x=v.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}}return x}},"value");u({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}})(tinymce);(function(b){var a=b.util.Dispatcher;b.UndoManager=function(h){var l,i=0,e=[],g,k,j,f;function c(){return b.trim(h.getContent({format:"raw",no_events:1}).replace(/<span[^>]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\/span>/g,""))}function d(){l.typing=false;l.add()}k=new a(l);j=new a(l);f=new a(l);k.add(function(m,n){if(m.hasUndo()){return h.onChange.dispatch(h,n,m)}});j.add(function(m,n){return h.onUndo.dispatch(h,n,m)});f.add(function(m,n){return h.onRedo.dispatch(h,n,m)});h.onInit.add(function(){l.add()});h.onBeforeExecCommand.add(function(m,p,o,q,n){if(p!="Undo"&&p!="Redo"&&p!="mceRepaint"&&(!n||!n.skip_undo)){l.beforeChange()}});h.onExecCommand.add(function(m,p,o,q,n){if(p!="Undo"&&p!="Redo"&&p!="mceRepaint"&&(!n||!n.skip_undo)){l.add()}});h.onSaveContent.add(d);h.dom.bind(h.dom.getRoot(),"dragend",d);h.dom.bind(h.getDoc(),b.isGecko?"blur":"focusout",function(m){if(!h.removed&&l.typing){d()}});h.onKeyUp.add(function(m,o){var n=o.keyCode;if((n>=33&&n<=36)||(n>=37&&n<=40)||n==45||n==13||o.ctrlKey){d()}});h.onKeyDown.add(function(m,o){var n=o.keyCode;if((n>=33&&n<=36)||(n>=37&&n<=40)||n==45){if(l.typing){d()}return}if((n<16||n>20)&&n!=224&&n!=91&&!l.typing){l.beforeChange();l.typing=true;l.add()}});h.onMouseDown.add(function(m,n){if(l.typing){d()}});h.addShortcut("ctrl+z","undo_desc","Undo");h.addShortcut("ctrl+y","redo_desc","Redo");l={data:e,typing:false,onAdd:k,onUndo:j,onRedo:f,beforeChange:function(){g=h.selection.getBookmark(2,true)},add:function(p){var m,n=h.settings,o;p=p||{};p.content=c();o=e[i];if(o&&o.content==p.content){return null}if(e[i]){e[i].beforeBookmark=g}if(n.custom_undo_redo_levels){if(e.length>n.custom_undo_redo_levels){for(m=0;m<e.length-1;m++){e[m]=e[m+1]}e.length--;i=e.length}}p.bookmark=h.selection.getBookmark(2,true);if(i<e.length-1){e.length=i+1}e.push(p);i=e.length-1;l.onAdd.dispatch(l,p);h.isNotDirty=0;return p},undo:function(){var n,m;if(l.typing){l.add();l.typing=false}if(i>0){n=e[--i];h.setContent(n.content,{format:"raw"});h.selection.moveToBookmark(n.beforeBookmark);l.onUndo.dispatch(l,n)}return n},redo:function(){var m;if(i<e.length-1){m=e[++i];h.setContent(m.content,{format:"raw"});h.selection.moveToBookmark(m.bookmark);l.onRedo.dispatch(l,m)}return m},clear:function(){e=[];i=0;l.typing=false},hasUndo:function(){return i>0||this.typing},hasRedo:function(){return i<e.length-1&&!this.typing}};return l}})(tinymce);tinymce.ForceBlocks=function(c){var b=c.settings,e=c.dom,a=c.selection,d=c.schema.getBlockElements();function f(){var j=a.getStart(),h=c.getBody(),g,k,o,r,q,i,l,m=-16777215,p;if(!j||j.nodeType!==1||!b.forced_root_block){return}while(j&&j!=h){if(d[j.nodeName]){return}j=j.parentNode}g=a.getRng();if(g.setStart){k=g.startContainer;o=g.startOffset;r=g.endContainer;q=g.endOffset}else{if(g.item){j=g.item(0);g=c.getDoc().body.createTextRange();g.moveToElementText(j)}tmpRng=g.duplicate();tmpRng.collapse(true);o=tmpRng.move("character",m)*-1;if(!tmpRng.collapsed){tmpRng=g.duplicate();tmpRng.collapse(false);q=(tmpRng.move("character",m)*-1)-o}}j=h.firstChild;while(j){if(j.nodeType===3||(j.nodeType==1&&!d[j.nodeName])){if(!i){i=e.create(b.forced_root_block);j.parentNode.insertBefore(i,j);p=true}l=j;j=j.nextSibling;i.appendChild(l)}else{i=null;j=j.nextSibling}}if(g.setStart){g.setStart(k,o);g.setEnd(r,q);a.setRng(g)}else{try{g=c.getDoc().body.createTextRange();g.moveToElementText(h);g.collapse(true);g.moveStart("character",o);if(q>0){g.moveEnd("character",q)}g.select()}catch(n){}}if(p){c.nodeChanged()}}if(b.forced_root_block){c.onKeyUp.add(f);c.onNodeChange.add(f)}};(function(c){var b=c.DOM,a=c.dom.Event,d=c.each,e=c.extend;c.create("tinymce.ControlManager",{ControlManager:function(f,j){var h=this,g;j=j||{};h.editor=f;h.controls={};h.onAdd=new c.util.Dispatcher(h);h.onPostRender=new c.util.Dispatcher(h);h.prefix=j.prefix||f.id+"_";h._cls={};h.onPostRender.add(function(){d(h.controls,function(i){i.postRender()})})},get:function(f){return this.controls[this.prefix+f]||this.controls[f]},setActive:function(h,f){var g=null;if(g=this.get(h)){g.setActive(f)}return g},setDisabled:function(h,f){var g=null;if(g=this.get(h)){g.setDisabled(f)}return g},add:function(g){var f=this;if(g){f.controls[g.id]=g;f.onAdd.dispatch(g,f)}return g},createControl:function(i){var h,g=this,f=g.editor;d(f.plugins,function(j){if(j.createControl){h=j.createControl(i,g);if(h){return false}}});switch(i){case"|":case"separator":return g.createSeparator()}if(!h&&f.buttons&&(h=f.buttons[i])){return g.createButton(i,h)}return g.add(h)},createDropMenu:function(f,n,h){var m=this,i=m.editor,j,g,k,l;n=e({"class":"mceDropDown",constrain:i.settings.constrain_menus},n);n["class"]=n["class"]+" "+i.getParam("skin")+"Skin";if(k=i.getParam("skin_variant")){n["class"]+=" "+i.getParam("skin")+"Skin"+k.substring(0,1).toUpperCase()+k.substring(1)}n["class"]+=i.settings.directionality=="rtl"?" mceRtl":"";f=m.prefix+f;l=h||m._cls.dropmenu||c.ui.DropMenu;j=m.controls[f]=new l(f,n);j.onAddItem.add(function(r,q){var p=q.settings;p.title=i.getLang(p.title,p.title);if(!p.onclick){p.onclick=function(o){if(p.cmd){i.execCommand(p.cmd,p.ui||false,p.value)}}}});i.onRemove.add(function(){j.destroy()});if(c.isIE){j.onShowMenu.add(function(){i.focus();g=i.selection.getBookmark(1)});j.onHideMenu.add(function(){if(g){i.selection.moveToBookmark(g);g=0}})}return m.add(j)},createListBox:function(f,n,h){var l=this,j=l.editor,i,k,m;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,scope:n.scope,control_manager:l},n);f=l.prefix+f;function g(o){return o.settings.use_accessible_selects&&!c.isGecko}if(j.settings.use_native_selects||g(j)){k=new c.ui.NativeListBox(f,n)}else{m=h||l._cls.listbox||c.ui.ListBox;k=new m(f,n,j)}l.controls[f]=k;if(c.isWebKit){k.onPostRender.add(function(p,o){a.add(o,"mousedown",function(){j.bookmark=j.selection.getBookmark(1)});a.add(o,"focus",function(){j.selection.moveToBookmark(j.bookmark);j.bookmark=null})})}if(k.hideMenu){j.onMouseDown.add(k.hideMenu,k)}return l.add(k)},createButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.label=g.translate(i.label);i.scope=i.scope||g;if(!i.onclick&&!i.menu_button){i.onclick=function(){g.execCommand(i.cmd,i.ui||false,i.value)}}i=e({title:i.title,"class":"mce_"+m,unavailable_prefix:g.getLang("unavailable",""),scope:i.scope,control_manager:h},i);m=h.prefix+m;if(i.menu_button){f=l||h._cls.menubutton||c.ui.MenuButton;k=new f(m,i,g);g.onMouseDown.add(k.hideMenu,k)}else{f=h._cls.button||c.ui.Button;k=new f(m,i,g)}return h.add(k)},createMenuButton:function(h,f,g){f=f||{};f.menu_button=1;return this.createButton(h,f,g)},createSplitButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onclick){i.onclick=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;f=l||h._cls.splitbutton||c.ui.SplitButton;k=h.add(new f(m,i,g));g.onMouseDown.add(k.hideMenu,k);return k},createColorSplitButton:function(f,n,h){var l=this,j=l.editor,i,k,m,g;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onclick){n.onclick=function(o){if(c.isIE){g=j.selection.getBookmark(1)}j.execCommand(n.cmd,n.ui||false,o||n.value)}}if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,menu_class:j.getParam("skin")+"Skin",scope:n.scope,more_colors_title:j.getLang("more_colors")},n);f=l.prefix+f;m=h||l._cls.colorsplitbutton||c.ui.ColorSplitButton;k=new m(f,n,j);j.onMouseDown.add(k.hideMenu,k);j.onRemove.add(function(){k.destroy()});if(c.isIE){k.onShowMenu.add(function(){j.focus();g=j.selection.getBookmark(1)});k.onHideMenu.add(function(){if(g){j.selection.moveToBookmark(g);g=0}})}return l.add(k)},createToolbar:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||g._cls.toolbar||c.ui.Toolbar;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createToolbarGroup:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||this._cls.toolbarGroup||c.ui.ToolbarGroup;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createSeparator:function(g){var f=g||this._cls.separator||c.ui.Separator;return new f()},setControlType:function(g,f){return this._cls[g.toLowerCase()]=f},destroy:function(){d(this.controls,function(f){f.destroy()});this.controls=null}})})(tinymce);(function(d){var a=d.util.Dispatcher,e=d.each,c=d.isIE,b=d.isOpera;d.create("tinymce.WindowManager",{WindowManager:function(f){var g=this;g.editor=f;g.onOpen=new a(g);g.onClose=new a(g);g.params={};g.features={}},open:function(z,h){var v=this,k="",n,m,i=v.editor.settings.dialog_type=="modal",q,o,j,g=d.DOM.getViewPort(),r;z=z||{};h=h||{};o=b?g.w:screen.width;j=b?g.h:screen.height;z.name=z.name||"mc_"+new Date().getTime();z.width=parseInt(z.width||320);z.height=parseInt(z.height||240);z.resizable=true;z.left=z.left||parseInt(o/2)-(z.width/2);z.top=z.top||parseInt(j/2)-(z.height/2);h.inline=false;h.mce_width=z.width;h.mce_height=z.height;h.mce_auto_focus=z.auto_focus;if(i){if(c){z.center=true;z.help=false;z.dialogWidth=z.width+"px";z.dialogHeight=z.height+"px";z.scroll=z.scrollbars||false}}e(z,function(p,f){if(d.is(p,"boolean")){p=p?"yes":"no"}if(!/^(name|url)$/.test(f)){if(c&&i){k+=(k?";":"")+f+":"+p}else{k+=(k?",":"")+f+"="+p}}});v.features=z;v.params=h;v.onOpen.dispatch(v,z,h);r=z.url||z.file;r=d._addVer(r);try{if(c&&i){q=1;window.showModalDialog(r,window,k)}else{q=window.open(r,z.name,k)}}catch(l){}if(!q){alert(v.editor.getLang("popup_blocked"))}},close:function(f){f.close();this.onClose.dispatch(this)},createInstance:function(i,h,g,m,l,k){var j=d.resolve(i);return new j(h,g,m,l,k)},confirm:function(h,f,i,g){g=g||window;f.call(i||this,g.confirm(this._decode(this.editor.getLang(h,h))))},alert:function(h,f,j,g){var i=this;g=g||window;g.alert(i._decode(i.editor.getLang(h,h)));if(f){f.call(j||i)}},resizeBy:function(f,g,h){h.resizeBy(f,g)},_decode:function(f){return d.DOM.decode(f).replace(/\\n/g,"\n")}})}(tinymce));(function(a){a.Formatter=function(Y){var O={},R=a.each,c=Y.dom,r=Y.selection,t=a.dom.TreeWalker,M=new a.dom.RangeUtils(c),d=Y.schema.isValidChild,H=c.isBlock,m=Y.settings.forced_root_block,s=c.nodeIndex,G=a.isGecko?"\u200B":"\uFEFF",e=/^(src|href|style)$/,V=false,C=true,D,x=c.getContentEditable;function A(Z){return Z instanceof Array}function n(aa,Z){return c.getParents(aa,Z,c.getRoot())}function b(Z){return Z.nodeType===1&&Z.id==="_mce_caret"}function j(){l({alignleft:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"left"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"left"}}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"center"},defaultBlock:"div"},{selector:"img",collapsed:false,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:false,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"right"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"right"}}],alignfull:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"justify"},defaultBlock:"div"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:true},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:true},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},wrap_links:false},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},wrap_links:false},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},link:{inline:"a",selector:"a",remove:"all",split:true,deep:true,onmatch:function(Z){return true},onformat:function(ab,Z,aa){R(aa,function(ad,ac){c.setAttrib(ab,ac,ad)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike",remove:"all",split:true,expand:false,block_expand:true,deep:true},{selector:"span",attributes:["style","class"],remove:"empty",split:true,expand:false,deep:true},{selector:"*",attributes:["style","class"],split:false,expand:false,deep:true}]});R("p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp".split(/\s/),function(Z){l(Z,{block:Z,remove:"all"})});l(Y.settings.formats)}function U(){Y.addShortcut("ctrl+b","bold_desc","Bold");Y.addShortcut("ctrl+i","italic_desc","Italic");Y.addShortcut("ctrl+u","underline_desc","Underline");for(var Z=1;Z<=6;Z++){Y.addShortcut("ctrl+"+Z,"",["FormatBlock",false,"h"+Z])}Y.addShortcut("ctrl+7","",["FormatBlock",false,"p"]);Y.addShortcut("ctrl+8","",["FormatBlock",false,"div"]);Y.addShortcut("ctrl+9","",["FormatBlock",false,"address"])}function T(Z){return Z?O[Z]:O}function l(Z,aa){if(Z){if(typeof(Z)!=="string"){R(Z,function(ac,ab){l(ab,ac)})}else{aa=aa.length?aa:[aa];R(aa,function(ab){if(ab.deep===D){ab.deep=!ab.selector}if(ab.split===D){ab.split=!ab.selector||ab.inline}if(ab.remove===D&&ab.selector&&!ab.inline){ab.remove="none"}if(ab.selector&&ab.inline){ab.mixed=true;ab.block_expand=true}if(typeof(ab.classes)==="string"){ab.classes=ab.classes.split(/\s+/)}});O[Z]=aa}}}var i=function(aa){var Z;Y.dom.getParent(aa,function(ab){Z=Y.dom.getStyle(ab,"text-decoration");return Z&&Z!=="none"});return Z};var K=function(Z){var aa;if(Z.nodeType===1&&Z.parentNode&&Z.parentNode.nodeType===1){aa=i(Z.parentNode);if(Y.dom.getStyle(Z,"color")&&aa){Y.dom.setStyle(Z,"text-decoration",aa)}else{if(Y.dom.getStyle(Z,"textdecoration")===aa){Y.dom.setStyle(Z,"text-decoration",null)}}}};function W(ac,aj,ae){var af=T(ac),ak=af[0],ai,aa,ah,ag=r.isCollapsed();function Z(ao,an){an=an||ak;if(ao){if(an.onformat){an.onformat(ao,an,aj,ae)}R(an.styles,function(aq,ap){c.setStyle(ao,ap,q(aq,aj))});R(an.attributes,function(aq,ap){c.setAttrib(ao,ap,q(aq,aj))});R(an.classes,function(ap){ap=q(ap,aj);if(!c.hasClass(ao,ap)){c.addClass(ao,ap)}})}}function ad(){function ap(aw,au){var av=new t(au);for(ae=av.current();ae;ae=av.prev()){if(ae.childNodes.length>1||ae==aw||ae.tagName=="BR"){return ae}}}var ao=Y.selection.getRng();var at=ao.startContainer;var an=ao.endContainer;if(at!=an&&ao.endOffset===0){var ar=ap(at,an);var aq=ar.nodeType==3?ar.length:ar.childNodes.length;ao.setEnd(ar,aq)}return ao}function ab(aq,aw,au,at,ao){var an=[],ap=-1,av,ay=-1,ar=-1,ax;R(aq.childNodes,function(aA,az){if(aA.nodeName==="UL"||aA.nodeName==="OL"){ap=az;av=aA;return false}});R(aq.childNodes,function(aA,az){if(aA.nodeName==="SPAN"&&c.getAttrib(aA,"data-mce-type")=="bookmark"){if(aA.id==aw.id+"_start"){ay=az}else{if(aA.id==aw.id+"_end"){ar=az}}}});if(ap<=0||(ay<ap&&ar>ap)){R(a.grep(aq.childNodes),ao);return 0}else{ax=c.clone(au,V);R(a.grep(aq.childNodes),function(aA,az){if((ay<ap&&az<ap)||(ay>ap&&az>ap)){an.push(aA);aA.parentNode.removeChild(aA)}});if(ay<ap){aq.insertBefore(ax,av)}else{if(ay>ap){aq.insertBefore(ax,av.nextSibling)}}at.push(ax);R(an,function(az){ax.appendChild(az)});return ax}}function al(ao,aq,au){var an=[],at,ap,ar=true;at=ak.inline||ak.block;ap=c.create(at);Z(ap);M.walk(ao,function(av){var aw;function ax(ay){var aD,aB,az,aA,aC;aC=ar;aD=ay.nodeName.toLowerCase();aB=ay.parentNode.nodeName.toLowerCase();if(ay.nodeType===1&&x(ay)){aC=ar;ar=x(ay)==="true";aA=true}if(g(aD,"br")){aw=0;if(ak.block){c.remove(ay)}return}if(ak.wrapper&&y(ay,ac,aj)){aw=0;return}if(ar&&!aA&&ak.block&&!ak.wrapper&&I(aD)){ay=c.rename(ay,at);Z(ay);an.push(ay);aw=0;return}if(ak.selector){R(af,function(aE){if("collapsed" in aE&&aE.collapsed!==ag){return}if(c.is(ay,aE.selector)&&!b(ay)){Z(ay,aE);az=true}});if(!ak.inline||az){aw=0;return}}if(ar&&!aA&&d(at,aD)&&d(aB,at)&&!(!au&&ay.nodeType===3&&ay.nodeValue.length===1&&ay.nodeValue.charCodeAt(0)===65279)&&!b(ay)){if(!aw){aw=c.clone(ap,V);ay.parentNode.insertBefore(aw,ay);an.push(aw)}aw.appendChild(ay)}else{if(aD=="li"&&aq){aw=ab(ay,aq,ap,an,ax)}else{aw=0;R(a.grep(ay.childNodes),ax);if(aA){ar=aC}aw=0}}}R(av,ax)});if(ak.wrap_links===false){R(an,function(av){function aw(aA){var az,ay,ax;if(aA.nodeName==="A"){ay=c.clone(ap,V);an.push(ay);ax=a.grep(aA.childNodes);for(az=0;az<ax.length;az++){ay.appendChild(ax[az])}aA.appendChild(ay)}R(a.grep(aA.childNodes),aw)}aw(av)})}R(an,function(ax){var av;function ay(aA){var az=0;R(aA.childNodes,function(aB){if(!f(aB)&&!J(aB)){az++}});return az}function aw(az){var aB,aA;R(az.childNodes,function(aC){if(aC.nodeType==1&&!J(aC)&&!b(aC)){aB=aC;return V}});if(aB&&h(aB,ak)){aA=c.clone(aB,V);Z(aA);c.replace(aA,az,C);c.remove(aB,1)}return aA||az}av=ay(ax);if((an.length>1||!H(ax))&&av===0){c.remove(ax,1);return}if(ak.inline||ak.wrapper){if(!ak.exact&&av===1){ax=aw(ax)}R(af,function(az){R(c.select(az.inline,ax),function(aB){var aA;if(az.wrap_links===false){aA=aB.parentNode;do{if(aA.nodeName==="A"){return}}while(aA=aA.parentNode)}X(az,aj,aB,az.exact?aB:null)})});if(y(ax.parentNode,ac,aj)){c.remove(ax,1);ax=0;return C}if(ak.merge_with_parents){c.getParent(ax.parentNode,function(az){if(y(az,ac,aj)){c.remove(ax,1);ax=0;return C}})}if(ax&&ak.merge_siblings!==false){ax=u(E(ax),ax);ax=u(ax,E(ax,C))}}})}if(ak){if(ae){if(ae.nodeType){aa=c.createRng();aa.setStartBefore(ae);aa.setEndAfter(ae);al(p(aa,af),null,true)}else{al(ae,null,true)}}else{if(!ag||!ak.inline||c.select("td.mceSelected,th.mceSelected").length){var am=Y.selection.getNode();if(!m&&af[0].defaultBlock&&!c.getParent(am,c.isBlock)){W(af[0].defaultBlock)}Y.selection.setRng(ad());ai=r.getBookmark();al(p(r.getRng(C),af),ai);if(ak.styles&&(ak.styles.color||ak.styles.textDecoration)){a.walk(am,K,"childNodes");K(am)}r.moveToBookmark(ai);P(r.getRng(C));Y.nodeChanged()}else{S("apply",ac,aj)}}}}function B(ab,ak,ad){var ae=T(ab),am=ae[0],ai,ah,aa,aj=true;function ac(at){var ar,aq,ap,ao,av,au;if(at.nodeType===1&&x(at)){av=aj;aj=x(at)==="true";au=true}ar=a.grep(at.childNodes);if(aj&&!au){for(aq=0,ap=ae.length;aq<ap;aq++){if(X(ae[aq],ak,at,at)){break}}}if(am.deep){if(ar.length){for(aq=0,ap=ar.length;aq<ap;aq++){ac(ar[aq])}if(au){aj=av}}}}function af(ao){var ap;R(n(ao.parentNode).reverse(),function(aq){var ar;if(!ap&&aq.id!="_start"&&aq.id!="_end"){ar=y(aq,ab,ak);if(ar&&ar.split!==false){ap=aq}}});return ap}function Z(ar,ao,au,ax){var ay,aw,av,aq,at,ap;if(ar){ap=ar.parentNode;for(ay=ao.parentNode;ay&&ay!=ap;ay=ay.parentNode){aw=c.clone(ay,V);for(at=0;at<ae.length;at++){if(X(ae[at],ak,aw,aw)){aw=0;break}}if(aw){if(av){aw.appendChild(av)}if(!aq){aq=aw}av=aw}}if(ax&&(!am.mixed||!H(ar))){ao=c.split(ar,ao)}if(av){au.parentNode.insertBefore(av,au);aq.appendChild(au)}}return ao}function al(ao){return Z(af(ao),ao,ao,true)}function ag(aq){var ap=c.get(aq?"_start":"_end"),ao=ap[aq?"firstChild":"lastChild"];if(J(ao)){ao=ao[aq?"firstChild":"lastChild"]}c.remove(ap,true);return ao}function an(ao){var aq,ar,ap;ao=p(ao,ae,C);if(am.split){aq=L(ao,C);ar=L(ao);if(aq!=ar){if(/^(TR|TD)$/.test(aq.nodeName)&&aq.firstChild){aq=(aq.nodeName=="TD"?aq.firstChild:aq.firstChild.firstChild)||aq}aq=Q(aq,"span",{id:"_start","data-mce-type":"bookmark"});ar=Q(ar,"span",{id:"_end","data-mce-type":"bookmark"});al(aq);al(ar);aq=ag(C);ar=ag()}else{aq=ar=al(aq)}ao.startContainer=aq.parentNode;ao.startOffset=s(aq);ao.endContainer=ar.parentNode;ao.endOffset=s(ar)+1}M.walk(ao,function(at){R(at,function(au){ac(au);if(au.nodeType===1&&Y.dom.getStyle(au,"text-decoration")==="underline"&&au.parentNode&&i(au.parentNode)==="underline"){X({deep:false,exact:true,inline:"span",styles:{textDecoration:"underline"}},null,au)}})})}if(ad){if(ad.nodeType){aa=c.createRng();aa.setStartBefore(ad);aa.setEndAfter(ad);an(aa)}else{an(ad)}return}if(!r.isCollapsed()||!am.inline||c.select("td.mceSelected,th.mceSelected").length){ai=r.getBookmark();an(r.getRng(C));r.moveToBookmark(ai);if(am.inline&&k(ab,ak,r.getStart())){P(r.getRng(true))}Y.nodeChanged()}else{S("remove",ab,ak)}}function F(aa,ac,ab){var Z=T(aa);if(k(aa,ac,ab)&&(!("toggle" in Z[0])||Z[0].toggle)){B(aa,ac,ab)}else{W(aa,ac,ab)}}function y(aa,Z,af,ad){var ab=T(Z),ag,ae,ac;function ah(al,an,ao){var ak,am,ai=an[ao],aj;if(an.onmatch){return an.onmatch(al,an,ao)}if(ai){if(ai.length===D){for(ak in ai){if(ai.hasOwnProperty(ak)){if(ao==="attributes"){am=c.getAttrib(al,ak)}else{am=N(al,ak)}if(ad&&!am&&!an.exact){return}if((!ad||an.exact)&&!g(am,q(ai[ak],af))){return}}}}else{for(aj=0;aj<ai.length;aj++){if(ao==="attributes"?c.getAttrib(al,ai[aj]):N(al,ai[aj])){return an}}}}return an}if(ab&&aa){for(ae=0;ae<ab.length;ae++){ag=ab[ae];if(h(aa,ag)&&ah(aa,ag,"attributes")&&ah(aa,ag,"styles")){if(ac=ag.classes){for(ae=0;ae<ac.length;ae++){if(!c.hasClass(aa,ac[ae])){return}}}return ag}}}}function k(ab,ad,ac){var aa;function Z(ae){ae=c.getParent(ae,function(af){return !!y(af,ab,ad,true)});return y(ae,ab,ad)}if(ac){return Z(ac)}ac=r.getNode();if(Z(ac)){return C}aa=r.getStart();if(aa!=ac){if(Z(aa)){return C}}return V}function v(ag,af){var ad,ae=[],ac={},ab,aa,Z;ad=r.getStart();c.getParent(ad,function(aj){var ai,ah;for(ai=0;ai<ag.length;ai++){ah=ag[ai];if(!ac[ah]&&y(aj,ah,af)){ac[ah]=true;ae.push(ah)}}});return ae}function z(ad){var af=T(ad),ac,ab,ae,aa,Z;if(af){ac=r.getStart();ab=n(ac);for(aa=af.length-1;aa>=0;aa--){Z=af[aa].selector;if(!Z){return C}for(ae=ab.length-1;ae>=0;ae--){if(c.is(ab[ae],Z)){return C}}}}return V}a.extend(this,{get:T,register:l,apply:W,remove:B,toggle:F,match:k,matchAll:v,matchNode:y,canApply:z});j();U();function h(Z,aa){if(g(Z,aa.inline)){return C}if(g(Z,aa.block)){return C}if(aa.selector){return c.is(Z,aa.selector)}}function g(aa,Z){aa=aa||"";Z=Z||"";aa=""+(aa.nodeName||aa);Z=""+(Z.nodeName||Z);return aa.toLowerCase()==Z.toLowerCase()}function N(aa,Z){var ab=c.getStyle(aa,Z);if(Z=="color"||Z=="backgroundColor"){ab=c.toHex(ab)}if(Z=="fontWeight"&&ab==700){ab="bold"}return""+ab}function q(Z,aa){if(typeof(Z)!="string"){Z=Z(aa)}else{if(aa){Z=Z.replace(/%(\w+)/g,function(ac,ab){return aa[ab]||ac})}}return Z}function f(Z){return Z&&Z.nodeType===3&&/^([\t \r\n]+|)$/.test(Z.nodeValue)}function Q(ab,aa,Z){var ac=c.create(aa,Z);ab.parentNode.insertBefore(ac,ab);ac.appendChild(ab);return ac}function p(Z,ak,ac){var an,al,af,aj,ab=Z.startContainer,ag=Z.startOffset,ap=Z.endContainer,ai=Z.endOffset;function am(ax){var ar,av,aw,au,at,aq;ar=av=ax?ab:ap;at=ax?"previousSibling":"nextSibling";aq=c.getRoot();if(ar.nodeType==3&&!f(ar)){if(ax?ag>0:ai<ar.nodeValue.length){return ar}}for(;;){if(!ak[0].block_expand&&H(av)){return av}for(au=av[at];au;au=au[at]){if(!J(au)&&!f(au)){return av}}if(av.parentNode==aq){ar=av;break}av=av.parentNode}return ar}function ae(aq,ar){if(ar===D){ar=aq.nodeType===3?aq.length:aq.childNodes.length}while(aq&&aq.hasChildNodes()){aq=aq.childNodes[ar];if(aq){ar=aq.nodeType===3?aq.length:aq.childNodes.length}}return{node:aq,offset:ar}}if(ab.nodeType==1&&ab.hasChildNodes()){al=ab.childNodes.length-1;ab=ab.childNodes[ag>al?al:ag];if(ab.nodeType==3){ag=0}}if(ap.nodeType==1&&ap.hasChildNodes()){al=ap.childNodes.length-1;ap=ap.childNodes[ai>al?al:ai-1];if(ap.nodeType==3){ai=ap.nodeValue.length}}function ao(ar){var aq=ar;while(aq){if(aq.nodeType===1&&x(aq)){return x(aq)==="false"?aq:ar}aq=aq.parentNode}return ar}function ah(ar,aw,ay){var av,at,ax,aq;function au(aA,aC){var aD,az,aB=aA.nodeValue;if(typeof(aC)=="undefined"){aC=ay?aB.length:0}if(ay){aD=aB.lastIndexOf(" ",aC);az=aB.lastIndexOf("\u00a0",aC);aD=aD>az?aD:az;if(aD!==-1&&!ac){aD++}}else{aD=aB.indexOf(" ",aC);az=aB.indexOf("\u00a0",aC);aD=aD!==-1&&(az===-1||aD<az)?aD:az}return aD}if(ar.nodeType===3){ax=au(ar,aw);if(ax!==-1){return{container:ar,offset:ax}}aq=ar}av=new t(ar,c.getParent(ar,H)||Y.getBody());while(at=av[ay?"prev":"next"]()){if(at.nodeType===3){aq=at;ax=au(at);if(ax!==-1){return{container:at,offset:ax}}}else{if(H(at)){break}}}if(aq){if(ay){aw=0}else{aw=aq.length}return{container:aq,offset:aw}}}function ad(ar,aq){var at,au,aw,av;if(ar.nodeType==3&&ar.nodeValue.length===0&&ar[aq]){ar=ar[aq]}at=n(ar);for(au=0;au<at.length;au++){for(aw=0;aw<ak.length;aw++){av=ak[aw];if("collapsed" in av&&av.collapsed!==Z.collapsed){continue}if(c.is(at[au],av.selector)){return at[au]}}}return ar}function aa(ar,aq,au){var at;if(!ak[0].wrapper){at=c.getParent(ar,ak[0].block)}if(!at){at=c.getParent(ar.nodeType==3?ar.parentNode:ar,H)}if(at&&ak[0].wrapper){at=n(at,"ul,ol").reverse()[0]||at}if(!at){at=ar;while(at[aq]&&!H(at[aq])){at=at[aq];if(g(at,"br")){break}}}return at||ar}ab=ao(ab);ap=ao(ap);if(J(ab.parentNode)||J(ab)){ab=J(ab)?ab:ab.parentNode;ab=ab.nextSibling||ab;if(ab.nodeType==3){ag=0}}if(J(ap.parentNode)||J(ap)){ap=J(ap)?ap:ap.parentNode;ap=ap.previousSibling||ap;if(ap.nodeType==3){ai=ap.length}}if(ak[0].inline){if(Z.collapsed){aj=ah(ab,ag,true);if(aj){ab=aj.container;ag=aj.offset}aj=ah(ap,ai);if(aj){ap=aj.container;ai=aj.offset}}af=ae(ap,ai);if(af.node){while(af.node&&af.offset===0&&af.node.previousSibling){af=ae(af.node.previousSibling)}if(af.node&&af.offset>0&&af.node.nodeType===3&&af.node.nodeValue.charAt(af.offset-1)===" "){if(af.offset>1){ap=af.node;ap.splitText(af.offset-1)}}}}if(ak[0].inline||ak[0].block_expand){if(!ak[0].inline||(ab.nodeType!=3||ag===0)){ab=am(true)}if(!ak[0].inline||(ap.nodeType!=3||ai===ap.nodeValue.length)){ap=am()}}if(ak[0].selector&&ak[0].expand!==V&&!ak[0].inline){ab=ad(ab,"previousSibling");ap=ad(ap,"nextSibling")}if(ak[0].block||ak[0].selector){ab=aa(ab,"previousSibling");ap=aa(ap,"nextSibling");if(ak[0].block){if(!H(ab)){ab=am(true)}if(!H(ap)){ap=am()}}}if(ab.nodeType==1){ag=s(ab);ab=ab.parentNode}if(ap.nodeType==1){ai=s(ap)+1;ap=ap.parentNode}return{startContainer:ab,startOffset:ag,endContainer:ap,endOffset:ai}}function X(af,ae,ac,Z){var ab,aa,ad;if(!h(ac,af)){return V}if(af.remove!="all"){R(af.styles,function(ah,ag){ah=q(ah,ae);if(typeof(ag)==="number"){ag=ah;Z=0}if(!Z||g(N(Z,ag),ah)){c.setStyle(ac,ag,"")}ad=1});if(ad&&c.getAttrib(ac,"style")==""){ac.removeAttribute("style");ac.removeAttribute("data-mce-style")}R(af.attributes,function(ai,ag){var ah;ai=q(ai,ae);if(typeof(ag)==="number"){ag=ai;Z=0}if(!Z||g(c.getAttrib(Z,ag),ai)){if(ag=="class"){ai=c.getAttrib(ac,ag);if(ai){ah="";R(ai.split(/\s+/),function(aj){if(/mce\w+/.test(aj)){ah+=(ah?" ":"")+aj}});if(ah){c.setAttrib(ac,ag,ah);return}}}if(ag=="class"){ac.removeAttribute("className")}if(e.test(ag)){ac.removeAttribute("data-mce-"+ag)}ac.removeAttribute(ag)}});R(af.classes,function(ag){ag=q(ag,ae);if(!Z||c.hasClass(Z,ag)){c.removeClass(ac,ag)}});aa=c.getAttribs(ac);for(ab=0;ab<aa.length;ab++){if(aa[ab].nodeName.indexOf("_")!==0){return V}}}if(af.remove!="none"){o(ac,af);return C}}function o(ab,ac){var Z=ab.parentNode,aa;function ad(af,ae,ag){af=E(af,ae,ag);return !af||(af.nodeName=="BR"||H(af))}if(ac.block){if(!m){if(H(ab)&&!H(Z)){if(!ad(ab,V)&&!ad(ab.firstChild,C,1)){ab.insertBefore(c.create("br"),ab.firstChild)}if(!ad(ab,C)&&!ad(ab.lastChild,V,1)){ab.appendChild(c.create("br"))}}}else{if(Z==c.getRoot()){if(!ac.list_block||!g(ab,ac.list_block)){R(a.grep(ab.childNodes),function(ae){if(d(m,ae.nodeName.toLowerCase())){if(!aa){aa=Q(ae,m)}else{aa.appendChild(ae)}}else{aa=0}})}}}}if(ac.selector&&ac.inline&&!g(ac.inline,ab)){return}c.remove(ab,1)}function E(aa,Z,ab){if(aa){Z=Z?"nextSibling":"previousSibling";for(aa=ab?aa:aa[Z];aa;aa=aa[Z]){if(aa.nodeType==1||!f(aa)){return aa}}}}function J(Z){return Z&&Z.nodeType==1&&Z.getAttribute("data-mce-type")=="bookmark"}function u(ad,ac){var Z,ab,aa;function af(ai,ah){if(ai.nodeName!=ah.nodeName){return V}function ag(ak){var al={};R(c.getAttribs(ak),function(am){var an=am.nodeName.toLowerCase();if(an.indexOf("_")!==0&&an!=="style"){al[an]=c.getAttrib(ak,an)}});return al}function aj(an,am){var al,ak;for(ak in an){if(an.hasOwnProperty(ak)){al=am[ak];if(al===D){return V}if(an[ak]!=al){return V}delete am[ak]}}for(ak in am){if(am.hasOwnProperty(ak)){return V}}return C}if(!aj(ag(ai),ag(ah))){return V}if(!aj(c.parseStyle(c.getAttrib(ai,"style")),c.parseStyle(c.getAttrib(ah,"style")))){return V}return C}function ae(ah,ag){for(ab=ah;ab;ab=ab[ag]){if(ab.nodeType==3&&ab.nodeValue.length!==0){return ah}if(ab.nodeType==1&&!J(ab)){return ab}}return ah}if(ad&&ac){ad=ae(ad,"previousSibling");ac=ae(ac,"nextSibling");if(af(ad,ac)){for(ab=ad.nextSibling;ab&&ab!=ac;){aa=ab;ab=ab.nextSibling;ad.appendChild(aa)}c.remove(ac);R(a.grep(ac.childNodes),function(ag){ad.appendChild(ag)});return ad}}return ac}function I(Z){return/^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(Z)}function L(aa,ae){var Z,ad,ab,ac;Z=aa[ae?"startContainer":"endContainer"];ad=aa[ae?"startOffset":"endOffset"];if(Z.nodeType==1){ab=Z.childNodes.length-1;if(!ae&&ad){ad--}Z=Z.childNodes[ad>ab?ab:ad]}if(Z.nodeType===3&&ae&&ad>=Z.nodeValue.length){Z=new t(Z,Y.getBody()).next()||Z}if(Z.nodeType===3&&!ae&&ad===0){Z=new t(Z,Y.getBody()).prev()||Z}return Z}function S(ai,Z,ag){var aj="_mce_caret",aa=Y.settings.caret_debug;function ab(am){var al=c.create("span",{id:aj,"data-mce-bogus":true,style:aa?"color:red":""});if(am){al.appendChild(Y.getDoc().createTextNode(G))}return al}function ah(am,al){while(am){if((am.nodeType===3&&am.nodeValue!==G)||am.childNodes.length>1){return false}if(al&&am.nodeType===1){al.push(am)}am=am.firstChild}return true}function ae(al){while(al){if(al.id===aj){return al}al=al.parentNode}}function ad(al){var am;if(al){am=new t(al,al);for(al=am.current();al;al=am.next()){if(al.nodeType===3){return al}}}}function ac(an,am){var ao,al;if(!an){an=ae(r.getStart());if(!an){while(an=c.get(aj)){ac(an,false)}}}else{al=r.getRng(true);if(ah(an)){if(am!==false){al.setStartBefore(an);al.setEndBefore(an)}c.remove(an)}else{ao=ad(an);if(ao.nodeValue.charAt(0)===G){ao=ao.deleteData(0,1)}c.remove(an,1)}r.setRng(al)}}function af(){var an,al,ar,aq,ao,am,ap;an=r.getRng(true);aq=an.startOffset;am=an.startContainer;ap=am.nodeValue;al=ae(r.getStart());if(al){ar=ad(al)}if(ap&&aq>0&&aq<ap.length&&/\w/.test(ap.charAt(aq))&&/\w/.test(ap.charAt(aq-1))){ao=r.getBookmark();an.collapse(true);an=p(an,T(Z));an=M.split(an);W(Z,ag,an);r.moveToBookmark(ao)}else{if(!al||ar.nodeValue!==G){al=ab(true);ar=al.firstChild;an.insertNode(al);aq=1;W(Z,ag,al)}else{W(Z,ag,al)}r.setCursorLocation(ar,aq)}}function ak(){var al=r.getRng(true),am,ao,ar,aq,an,av,au=[],ap,at;am=al.startContainer;ao=al.startOffset;an=am;if(am.nodeType==3){if(ao!=am.nodeValue.length||am.nodeValue===G){aq=true}an=an.parentNode}while(an){if(y(an,Z,ag)){av=an;break}if(an.nextSibling){aq=true}au.push(an);an=an.parentNode}if(!av){return}if(aq){ar=r.getBookmark();al.collapse(true);al=p(al,T(Z),true);al=M.split(al);B(Z,ag,al);r.moveToBookmark(ar)}else{at=ab();an=at;for(ap=au.length-1;ap>=0;ap--){an.appendChild(c.clone(au[ap],false));an=an.firstChild}an.appendChild(c.doc.createTextNode(G));an=an.firstChild;c.insertAfter(at,av);r.setCursorLocation(an,1)}}if(!self._hasCaretEvents){Y.onBeforeGetContent.addToTop(function(){var al=[],am;if(ah(ae(r.getStart()),al)){am=al.length;while(am--){c.setAttrib(al[am],"data-mce-bogus","1")}}});a.each("onMouseUp onKeyUp".split(" "),function(al){Y[al].addToTop(function(){ac()})});Y.onKeyDown.addToTop(function(al,an){var am=an.keyCode;if(am==8||am==37||am==39){ac(ae(r.getStart()))}});r.onSetContent.add(function(){c.getParent(r.getStart(),function(al){if(al.id!==aj&&c.getAttrib(al,"data-mce-bogus")&&!c.isEmpty(al)){c.setAttrib(al,"data-mce-bogus",null)}})});self._hasCaretEvents=true}if(ai=="apply"){af()}else{ak()}}function P(aa){var Z=aa.startContainer,ag=aa.startOffset,ac,af,ae,ab,ad;if(Z.nodeType==3&&ag>=Z.nodeValue.length){ag=s(Z);Z=Z.parentNode;ac=true}if(Z.nodeType==1){ab=Z.childNodes;Z=ab[Math.min(ag,ab.length-1)];af=new t(Z,c.getParent(Z,c.isBlock));if(ag>ab.length-1||ac){af.next()}for(ae=af.current();ae;ae=af.next()){if(ae.nodeType==3&&!f(ae)){ad=c.create("a",null,G);ae.parentNode.insertBefore(ad,ae);aa.setStart(ae,0);r.setRng(aa);c.remove(ad);return}}}}}})(tinymce);tinymce.onAddEditor.add(function(e,a){var d,h,g,c=a.settings;function b(j,i){e.each(i,function(l,k){if(l){g.setStyle(j,k,l)}});g.rename(j,"span")}function f(i,j){g=i.dom;if(c.convert_fonts_to_spans){e.each(g.select("font,u,strike",j.node),function(k){d[k.nodeName.toLowerCase()](a.dom,k)})}}if(c.inline_styles){h=e.explode(c.font_size_legacy_values);d={font:function(j,i){b(i,{backgroundColor:i.style.backgroundColor,color:i.color,fontFamily:i.face,fontSize:h[parseInt(i.size,10)-1]})},u:function(j,i){b(i,{textDecoration:"underline"})},strike:function(j,i){b(i,{textDecoration:"line-through"})}};a.onPreProcess.add(f);a.onSetContent.add(f);a.onInit.add(function(){a.selection.onSetContent.add(f)})}});(function(b){var a=b.dom.TreeWalker;b.EnterKey=function(e){var h=e.dom,d=e.selection,c=e.settings,g=e.undoManager;function f(y){var u=d.getRng(true),C,i,x,t,o,H,n,j,l,s,E,v,z;function B(I){return I&&h.isBlock(I)&&!/^(TD|TH|CAPTION)$/.test(I.nodeName)&&!/^(fixed|absolute)/i.test(I.style.position)&&h.getContentEditable(I)!=="true"}function m(J){var O,M,I,P,N,L=J,K;I=h.createRng();if(J.hasChildNodes()){O=new a(J,J);while(M=O.current()){if(M.nodeType==3){I.setStart(M,0);I.setEnd(M,0);break}if(/^(BR|IMG)$/.test(M.nodeName)){I.setStartBefore(M);I.setEndBefore(M);break}L=M;M=O.next()}if(!M){I.setStart(L,0);I.setEnd(L,0)}}else{if(J.nodeName=="BR"){if(J.nextSibling&&h.isBlock(J.nextSibling)){if(!H||H<9){K=h.create("br");J.parentNode.insertBefore(K,J)}I.setStartBefore(J);I.setEndBefore(J)}else{I.setStartAfter(J);I.setEndAfter(J)}}else{I.setStart(J,0);I.setEnd(J,0)}}d.setRng(I);h.remove(K);N=h.getViewPort(e.getWin());P=h.getPos(J).y;if(P<N.y||P+25>N.y+N.h){e.getWin().scrollTo(0,P<N.y?P:P-N.h+25)}}function q(J){var K=x,M,L,I;M=J||s=="TABLE"?h.create(J||v):o.cloneNode(false);I=M;if(c.keep_styles!==false){do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(K.nodeName)){L=K.cloneNode(false);h.setAttrib(L,"id","");if(M.hasChildNodes()){L.appendChild(M.firstChild);M.appendChild(L)}else{I=L;M.appendChild(L)}}}while(K=K.parentNode)}if(!b.isIE){I.innerHTML="<br>"}return M}function p(L){var K,J,I;if(x.nodeType==3&&(L?t>0:t<x.nodeValue.length)){return false}if(x.parentNode==o&&z&&!L){return true}if(x.nodeName==="TABLE"||(x.previousSibling&&x.previousSibling.nodeName=="TABLE")){return(z&&!L)||(!z&&L)}K=new a(x,o);while(J=(L?K.prev():K.next())){if(J.nodeType===1){if(J.getAttribute("data-mce-bogus")){continue}I=J.nodeName.toLowerCase();if(I==="IMG"){return false}}else{if(J.nodeType===3&&!/^[ \t\r\n]*$/.test(J.nodeValue)){return false}}}return true}function k(I,O){var P,N,K,M,L,J=v||"P";N=h.getParent(I,h.isBlock);if(!N||!B(N)){N=N||i;if(!N.hasChildNodes()){P=h.create(J);N.appendChild(P);u.setStart(P,0);u.setEnd(P,0);return P}M=I;while(M.parentNode!=N){M=M.parentNode}while(M&&!h.isBlock(M)){K=M;M=M.previousSibling}if(K){P=h.create(J);K.parentNode.insertBefore(P,K);M=K;while(M&&!h.isBlock(M)){L=M.nextSibling;P.appendChild(M);M=L}u.setStart(I,O);u.setEnd(I,O)}}return I}function D(){function I(K){var J=l[K?"firstChild":"lastChild"];while(J){if(J.nodeType==1){break}J=J[K?"nextSibling":"previousSibling"]}return J===o}n=v?q(v):h.create("BR");if(I(true)&&I()){h.replace(n,l)}else{if(I(true)){l.parentNode.insertBefore(n,l)}else{if(I()){h.insertAfter(n,l)}else{C=u.cloneRange();C.setStartAfter(o);C.setEndAfter(l);j=C.extractContents();h.insertAfter(j,l);h.insertAfter(n,l)}}}h.remove(o);m(n);g.add()}function A(){var J=new a(x,o),I;while(I=J.current()){if(I.nodeName=="BR"){return true}I=J.next()}}function G(){var J,I;if(x&&x.nodeType==3&&t>=x.nodeValue.length){if(!b.isIE&&!A()){J=h.create("br");u.insertNode(J);u.setStartAfter(J);u.setEndAfter(J);I=true}}J=h.create("br");u.insertNode(J);if(b.isIE&&s=="PRE"&&(!H||H<8)){J.parentNode.insertBefore(h.doc.createTextNode("\r"),J)}if(!I){u.setStartAfter(J);u.setEndAfter(J)}else{u.setStartBefore(J);u.setEndBefore(J)}d.setRng(u);g.add()}function r(I){do{if(I.nodeType===3){I.nodeValue=I.nodeValue.replace(/^[\r\n]+/,"")}I=I.firstChild}while(I)}function F(K){var I=h.getRoot(),J,L;J=K;while(J!==I&&h.getContentEditable(J)!=="false"){if(h.getContentEditable(J)==="true"){L=J}J=J.parentNode}return J!==I?L:I}if(!u.collapsed){e.execCommand("Delete");return}if(y.isDefaultPrevented()){return}x=u.startContainer;t=u.startOffset;v=c.forced_root_block;v=v?v.toUpperCase():"";H=h.doc.documentMode;if(x.nodeType==1&&x.hasChildNodes()){z=t>x.childNodes.length-1;x=x.childNodes[Math.min(t,x.childNodes.length-1)]||x;t=0}i=F(x);if(!i){return}g.beforeChange();if(!h.isBlock(i)&&i!=h.getRoot()){if(!v||y.shiftKey){G()}return}if((v&&!y.shiftKey)||(!v&&y.shiftKey)){x=k(x,t)}o=h.getParent(x,h.isBlock);l=o?h.getParent(o.parentNode,h.isBlock):null;s=o?o.nodeName.toUpperCase():"";E=l?l.nodeName.toUpperCase():"";if(s=="LI"&&h.isEmpty(o)){if(/^(UL|OL|LI)$/.test(l.parentNode.nodeName)){return false}D();return}if(s=="PRE"&&c.br_in_pre!==false){if(!y.shiftKey){G();return}}else{if((!v&&!y.shiftKey&&s!="LI")||(v&&y.shiftKey)){G();return}}v=v||"P";if(p()){if(/^(H[1-6]|PRE)$/.test(s)&&E!="HGROUP"){n=q(v)}else{n=q()}if(c.end_container_on_empty_block&&B(l)&&h.isEmpty(o)){n=h.split(l,o)}else{h.insertAfter(n,o)}}else{if(p(true)){n=o.parentNode.insertBefore(q(),o)}else{C=u.cloneRange();C.setEndAfter(o);j=C.extractContents();r(j);n=j.firstChild;h.insertAfter(j,o)}}h.setAttrib(n,"id","");m(n);g.add()}e.onKeyDown.add(function(j,i){if(i.keyCode==13){if(f(i)!==false){i.preventDefault()}}})}})(tinymce); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/tiny_mce_popup.js b/library/tinymce/jscripts/tiny_mce/tiny_mce_popup.js
deleted file mode 100644
index 4d9ffc03a..000000000
--- a/library/tinymce/jscripts/tiny_mce/tiny_mce_popup.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-// Uncomment and change this document.domain value if you are loading the script cross subdomains
-// document.domain = 'moxiecode.com';
-
-var tinymce=null,tinyMCEPopup,tinyMCE;tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=b.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document,{ownEvents:true,proxy:tinyMCEPopup._eventProxy});b.dom.bind(window,"ready",b._onDOMLoaded,b);if(b.features.popup_css!==false){b.dom.loadCSS(b.features.popup_css||b.editor.settings.popup_css)}b.listeners=[];b.onInit={add:function(e,d){b.listeners.push({func:e,scope:d})}};b.isWindow=!b.getWindowArg("mce_inline");b.id=b.getWindowArg("mce_window_id");b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return(!window.frameElement&&window.dialogArguments)||opener||parent||top},getWindowArg:function(c,b){var a=this.params[c];return tinymce.is(a)?a:b},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},resizeToInnerSize:function(){var a=this;setTimeout(function(){var b=a.dom.getViewPort(window);a.editor.windowManager.resizeBy(a.getWindowArg("mce_width")-b.w,a.getWindowArg("mce_height")-b.h,a.id||window)},10)},executeOnLoad:function(s){this.onInit.add(function(){eval(s)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var b=this,a=b.getWindowArg("plugin_url")||b.getWindowArg("theme_url");if(a&&b.editor.settings.language&&b.features.translate_i18n!==false&&b.editor.settings.language_load!==false){a+="/langs/"+b.editor.settings.language+"_dlg.js";if(!tinymce.ScriptLoader.isDone(a)){document.write('<script type="text/javascript" src="'+tinymce._addVer(a)+'"><\/script>');tinymce.ScriptLoader.markDone(a)}}},pickColor:function(b,a){this.execCommand("mceColorPicker",true,{color:document.getElementById(a).value,func:function(e){document.getElementById(a).value=e;try{document.getElementById(a).onchange()}catch(d){}}})},openBrowser:function(a,c,b){tinyMCEPopup.restoreSelection();this.editor.execCallback("file_browser_callback",a,document.getElementById(a).value,c,window)},confirm:function(b,a,c){this.editor.windowManager.confirm(b,a,c,window)},alert:function(b,a,c){this.editor.windowManager.alert(b,a,c,window)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);tinymce=tinyMCE=a.editor=a.params=a.dom=a.dom.doc=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},_restoreSelection:function(){var a=window.event.srcElement;if(a.nodeName=="INPUT"&&(a.type=="submit"||a.type=="button")){tinyMCEPopup.restoreSelection()}},_onDOMLoaded:function(){var b=tinyMCEPopup,d=document.title,e,c,a;if(b.features.translate_i18n!==false){c=document.body.innerHTML;if(tinymce.isIE){c=c.replace(/ (value|title|alt)=([^"][^\s>]+)/gi,' $1="$2"')}document.dir=b.editor.getParam("directionality","");if((a=b.editor.translate(c))&&a!=c){document.body.innerHTML=a}if((a=b.editor.translate(d))&&a!=d){document.title=d=a}}if(!b.editor.getParam("browser_preferred_colors",false)||!b.isWindow){b.dom.addClass(document.body,"forceColors")}document.body.style.display="";if(tinymce.isIE){document.attachEvent("onmouseup",tinyMCEPopup._restoreSelection);b.dom.add(b.dom.select("head")[0],"base",{target:"_self"})}b.restoreSelection();b.resizeToInnerSize();if(!b.isWindow){b.editor.windowManager.setTitle(window,d)}else{window.focus()}if(!tinymce.isIE&&!b.isWindow){b.dom.bind(document,"focus",function(){b.editor.windowManager.focus(b.id)})}tinymce.each(b.dom.select("select"),function(f){f.onkeydown=tinyMCEPopup._accessHandler});tinymce.each(b.listeners,function(f){f.func.call(f.scope,b.editor)});if(b.getWindowArg("mce_auto_focus",true)){window.focus();tinymce.each(document.forms,function(g){tinymce.each(g.elements,function(f){if(b.dom.hasClass(f,"mceFocus")&&!f.disabled){f.focus();return false}})})}document.onkeyup=tinyMCEPopup._closeWinKeyHandler},_accessHandler:function(a){a=a||window.event;if(a.keyCode==13||a.keyCode==32){a=a.target||a.srcElement;if(a.onchange){a.onchange()}return tinymce.dom.Event.cancel(a)}},_closeWinKeyHandler:function(a){a=a||window.event;if(a.keyCode==27){tinyMCEPopup.close()}},_eventProxy:function(a){return function(b){tinyMCEPopup.dom.events.callNativeHandler(a,b)}}};tinyMCEPopup.init(); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js b/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js
deleted file mode 100644
index a0e114bea..000000000
--- a/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js
+++ /dev/null
@@ -1,18121 +0,0 @@
-// FILE IS GENERATED BY COMBINING THE SOURCES IN THE "classes" DIRECTORY SO DON'T MODIFY THIS FILE DIRECTLY
-(function(win) {
- var whiteSpaceRe = /^\s*|\s*$/g,
- undef, isRegExpBroken = 'B'.replace(/A(.)|B/, '$1') === '$1';
-
- var tinymce = {
- majorVersion : '3',
-
- minorVersion : '5.0.1',
-
- releaseDate : '2012-05-10',
-
- _init : function() {
- var t = this, d = document, na = navigator, ua = na.userAgent, i, nl, n, base, p, v;
-
- t.isOpera = win.opera && opera.buildNumber;
-
- t.isWebKit = /WebKit/.test(ua);
-
- t.isIE = !t.isWebKit && !t.isOpera && (/MSIE/gi).test(ua) && (/Explorer/gi).test(na.appName);
-
- t.isIE6 = t.isIE && /MSIE [56]/.test(ua);
-
- t.isIE7 = t.isIE && /MSIE [7]/.test(ua);
-
- t.isIE8 = t.isIE && /MSIE [8]/.test(ua);
-
- t.isIE9 = t.isIE && /MSIE [9]/.test(ua);
-
- t.isGecko = !t.isWebKit && /Gecko/.test(ua);
-
- t.isMac = ua.indexOf('Mac') != -1;
-
- t.isAir = /adobeair/i.test(ua);
-
- t.isIDevice = /(iPad|iPhone)/.test(ua);
-
- t.isIOS5 = t.isIDevice && ua.match(/AppleWebKit\/(\d*)/)[1]>=534;
-
- // TinyMCE .NET webcontrol might be setting the values for TinyMCE
- if (win.tinyMCEPreInit) {
- t.suffix = tinyMCEPreInit.suffix;
- t.baseURL = tinyMCEPreInit.base;
- t.query = tinyMCEPreInit.query;
- return;
- }
-
- // Get suffix and base
- t.suffix = '';
-
- // If base element found, add that infront of baseURL
- nl = d.getElementsByTagName('base');
- for (i=0; i<nl.length; i++) {
- v = nl[i].href;
- if (v) {
- // Host only value like http://site.com or http://site.com:8008
- if (/^https?:\/\/[^\/]+$/.test(v))
- v += '/';
-
- base = v ? v.match(/.*\//)[0] : ''; // Get only directory
- }
- }
-
- function getBase(n) {
- if (n.src && /tiny_mce(|_gzip|_jquery|_prototype|_full)(_dev|_src)?.js/.test(n.src)) {
- if (/_(src|dev)\.js/g.test(n.src))
- t.suffix = '_src';
-
- if ((p = n.src.indexOf('?')) != -1)
- t.query = n.src.substring(p + 1);
-
- t.baseURL = n.src.substring(0, n.src.lastIndexOf('/'));
-
- // If path to script is relative and a base href was found add that one infront
- // the src property will always be an absolute one on non IE browsers and IE 8
- // so this logic will basically only be executed on older IE versions
- if (base && t.baseURL.indexOf('://') == -1 && t.baseURL.indexOf('/') !== 0)
- t.baseURL = base + t.baseURL;
-
- return t.baseURL;
- }
-
- return null;
- };
-
- // Check document
- nl = d.getElementsByTagName('script');
- for (i=0; i<nl.length; i++) {
- if (getBase(nl[i]))
- return;
- }
-
- // Check head
- n = d.getElementsByTagName('head')[0];
- if (n) {
- nl = n.getElementsByTagName('script');
- for (i=0; i<nl.length; i++) {
- if (getBase(nl[i]))
- return;
- }
- }
-
- return;
- },
-
- is : function(o, t) {
- if (!t)
- return o !== undef;
-
- if (t == 'array' && (o.hasOwnProperty && o instanceof Array))
- return true;
-
- return typeof(o) == t;
- },
-
- makeMap : function(items, delim, map) {
- var i;
-
- items = items || [];
- delim = delim || ',';
-
- if (typeof(items) == "string")
- items = items.split(delim);
-
- map = map || {};
-
- i = items.length;
- while (i--)
- map[items[i]] = {};
-
- return map;
- },
-
- each : function(o, cb, s) {
- var n, l;
-
- if (!o)
- return 0;
-
- s = s || o;
-
- if (o.length !== undef) {
- // Indexed arrays, needed for Safari
- for (n=0, l = o.length; n < l; n++) {
- if (cb.call(s, o[n], n, o) === false)
- return 0;
- }
- } else {
- // Hashtables
- for (n in o) {
- if (o.hasOwnProperty(n)) {
- if (cb.call(s, o[n], n, o) === false)
- return 0;
- }
- }
- }
-
- return 1;
- },
-
-
- map : function(a, f) {
- var o = [];
-
- tinymce.each(a, function(v) {
- o.push(f(v));
- });
-
- return o;
- },
-
- grep : function(a, f) {
- var o = [];
-
- tinymce.each(a, function(v) {
- if (!f || f(v))
- o.push(v);
- });
-
- return o;
- },
-
- inArray : function(a, v) {
- var i, l;
-
- if (a) {
- for (i = 0, l = a.length; i < l; i++) {
- if (a[i] === v)
- return i;
- }
- }
-
- return -1;
- },
-
- extend : function(obj, ext) {
- var i, l, name, args = arguments, value;
-
- for (i = 1, l = args.length; i < l; i++) {
- ext = args[i];
- for (name in ext) {
- if (ext.hasOwnProperty(name)) {
- value = ext[name];
-
- if (value !== undef) {
- obj[name] = value;
- }
- }
- }
- }
-
- return obj;
- },
-
-
- trim : function(s) {
- return (s ? '' + s : '').replace(whiteSpaceRe, '');
- },
-
- create : function(s, p, root) {
- var t = this, sp, ns, cn, scn, c, de = 0;
-
- // Parse : <prefix> <class>:<super class>
- s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s);
- cn = s[3].match(/(^|\.)(\w+)$/i)[2]; // Class name
-
- // Create namespace for new class
- ns = t.createNS(s[3].replace(/\.\w+$/, ''), root);
-
- // Class already exists
- if (ns[cn])
- return;
-
- // Make pure static class
- if (s[2] == 'static') {
- ns[cn] = p;
-
- if (this.onCreate)
- this.onCreate(s[2], s[3], ns[cn]);
-
- return;
- }
-
- // Create default constructor
- if (!p[cn]) {
- p[cn] = function() {};
- de = 1;
- }
-
- // Add constructor and methods
- ns[cn] = p[cn];
- t.extend(ns[cn].prototype, p);
-
- // Extend
- if (s[5]) {
- sp = t.resolve(s[5]).prototype;
- scn = s[5].match(/\.(\w+)$/i)[1]; // Class name
-
- // Extend constructor
- c = ns[cn];
- if (de) {
- // Add passthrough constructor
- ns[cn] = function() {
- return sp[scn].apply(this, arguments);
- };
- } else {
- // Add inherit constructor
- ns[cn] = function() {
- this.parent = sp[scn];
- return c.apply(this, arguments);
- };
- }
- ns[cn].prototype[cn] = ns[cn];
-
- // Add super methods
- t.each(sp, function(f, n) {
- ns[cn].prototype[n] = sp[n];
- });
-
- // Add overridden methods
- t.each(p, function(f, n) {
- // Extend methods if needed
- if (sp[n]) {
- ns[cn].prototype[n] = function() {
- this.parent = sp[n];
- return f.apply(this, arguments);
- };
- } else {
- if (n != cn)
- ns[cn].prototype[n] = f;
- }
- });
- }
-
- // Add static methods
- t.each(p['static'], function(f, n) {
- ns[cn][n] = f;
- });
-
- if (this.onCreate)
- this.onCreate(s[2], s[3], ns[cn].prototype);
- },
-
- walk : function(o, f, n, s) {
- s = s || this;
-
- if (o) {
- if (n)
- o = o[n];
-
- tinymce.each(o, function(o, i) {
- if (f.call(s, o, i, n) === false)
- return false;
-
- tinymce.walk(o, f, n, s);
- });
- }
- },
-
- createNS : function(n, o) {
- var i, v;
-
- o = o || win;
-
- n = n.split('.');
- for (i=0; i<n.length; i++) {
- v = n[i];
-
- if (!o[v])
- o[v] = {};
-
- o = o[v];
- }
-
- return o;
- },
-
- resolve : function(n, o) {
- var i, l;
-
- o = o || win;
-
- n = n.split('.');
- for (i = 0, l = n.length; i < l; i++) {
- o = o[n[i]];
-
- if (!o)
- break;
- }
-
- return o;
- },
-
- addUnload : function(f, s) {
- var t = this, unload;
-
- unload = function() {
- var li = t.unloads, o, n;
-
- if (li) {
- // Call unload handlers
- for (n in li) {
- o = li[n];
-
- if (o && o.func)
- o.func.call(o.scope, 1); // Send in one arg to distinct unload and user destroy
- }
-
- // Detach unload function
- if (win.detachEvent) {
- win.detachEvent('onbeforeunload', fakeUnload);
- win.detachEvent('onunload', unload);
- } else if (win.removeEventListener)
- win.removeEventListener('unload', unload, false);
-
- // Destroy references
- t.unloads = o = li = w = unload = 0;
-
- // Run garbarge collector on IE
- if (win.CollectGarbage)
- CollectGarbage();
- }
- };
-
- function fakeUnload() {
- var d = document;
-
- function stop() {
- // Prevent memory leak
- d.detachEvent('onstop', stop);
-
- // Call unload handler
- if (unload)
- unload();
-
- d = 0;
- };
-
- // Is there things still loading, then do some magic
- if (d.readyState == 'interactive') {
- // Fire unload when the currently loading page is stopped
- if (d)
- d.attachEvent('onstop', stop);
-
- // Remove onstop listener after a while to prevent the unload function
- // to execute if the user presses cancel in an onbeforeunload
- // confirm dialog and then presses the browser stop button
- win.setTimeout(function() {
- if (d)
- d.detachEvent('onstop', stop);
- }, 0);
- }
- };
-
- f = {func : f, scope : s || this};
-
- if (!t.unloads) {
- // Attach unload handler
- if (win.attachEvent) {
- win.attachEvent('onunload', unload);
- win.attachEvent('onbeforeunload', fakeUnload);
- } else if (win.addEventListener)
- win.addEventListener('unload', unload, false);
-
- // Setup initial unload handler array
- t.unloads = [f];
- } else
- t.unloads.push(f);
-
- return f;
- },
-
- removeUnload : function(f) {
- var u = this.unloads, r = null;
-
- tinymce.each(u, function(o, i) {
- if (o && o.func == f) {
- u.splice(i, 1);
- r = f;
- return false;
- }
- });
-
- return r;
- },
-
- explode : function(s, d) {
- if (!s || tinymce.is(s, 'array')) {
- return s;
- }
-
- return tinymce.map(s.split(d || ','), tinymce.trim);
- },
-
- _addVer : function(u) {
- var v;
-
- if (!this.query)
- return u;
-
- v = (u.indexOf('?') == -1 ? '?' : '&') + this.query;
-
- if (u.indexOf('#') == -1)
- return u + v;
-
- return u.replace('#', v + '#');
- },
-
- // Fix function for IE 9 where regexps isn't working correctly
- // Todo: remove me once MS fixes the bug
- _replace : function(find, replace, str) {
- // On IE9 we have to fake $x replacement
- if (isRegExpBroken) {
- return str.replace(find, function() {
- var val = replace, args = arguments, i;
-
- for (i = 0; i < args.length - 2; i++) {
- if (args[i] === undef) {
- val = val.replace(new RegExp('\\$' + i, 'g'), '');
- } else {
- val = val.replace(new RegExp('\\$' + i, 'g'), args[i]);
- }
- }
-
- return val;
- });
- }
-
- return str.replace(find, replace);
- }
-
- };
-
- // Initialize the API
- tinymce._init();
-
- // Expose tinymce namespace to the global namespace (window)
- win.tinymce = win.tinyMCE = tinymce;
-
- // Describe the different namespaces
-
- })(window);
-
-
-
-tinymce.create('tinymce.util.Dispatcher', {
- scope : null,
- listeners : null,
- inDispatch: false,
-
- Dispatcher : function(scope) {
- this.scope = scope || this;
- this.listeners = [];
- },
-
- add : function(callback, scope) {
- this.listeners.push({cb : callback, scope : scope || this.scope});
-
- return callback;
- },
-
- addToTop : function(callback, scope) {
- var self = this, listener = {cb : callback, scope : scope || self.scope};
-
- // Create new listeners if addToTop is executed in a dispatch loop
- if (self.inDispatch) {
- self.listeners = [listener].concat(self.listeners);
- } else {
- self.listeners.unshift(listener);
- }
-
- return callback;
- },
-
- remove : function(callback) {
- var listeners = this.listeners, output = null;
-
- tinymce.each(listeners, function(listener, i) {
- if (callback == listener.cb) {
- output = listener;
- listeners.splice(i, 1);
- return false;
- }
- });
-
- return output;
- },
-
- dispatch : function() {
- var self = this, returnValue, args = arguments, i, listeners = self.listeners, listener;
-
- self.inDispatch = true;
-
- // Needs to be a real loop since the listener count might change while looping
- // And this is also more efficient
- for (i = 0; i < listeners.length; i++) {
- listener = listeners[i];
- returnValue = listener.cb.apply(listener.scope, args.length > 0 ? args : [listener.scope]);
-
- if (returnValue === false)
- break;
- }
-
- self.inDispatch = false;
-
- return returnValue;
- }
-
- });
-
-(function() {
- var each = tinymce.each;
-
- tinymce.create('tinymce.util.URI', {
- URI : function(u, s) {
- var t = this, o, a, b, base_url;
-
- // Trim whitespace
- u = tinymce.trim(u);
-
- // Default settings
- s = t.settings = s || {};
-
- // Strange app protocol that isn't http/https or local anchor
- // For example: mailto,skype,tel etc.
- if (/^([\w\-]+):([^\/]{2})/i.test(u) || /^\s*#/.test(u)) {
- t.source = u;
- return;
- }
-
- // Absolute path with no host, fake host and protocol
- if (u.indexOf('/') === 0 && u.indexOf('//') !== 0)
- u = (s.base_uri ? s.base_uri.protocol || 'http' : 'http') + '://mce_host' + u;
-
- // Relative path http:// or protocol relative //path
- if (!/^[\w\-]*:?\/\//.test(u)) {
- base_url = s.base_uri ? s.base_uri.path : new tinymce.util.URI(location.href).directory;
- u = ((s.base_uri && s.base_uri.protocol) || 'http') + '://mce_host' + t.toAbsPath(base_url, u);
- }
-
- // Parse URL (Credits goes to Steave, http://blog.stevenlevithan.com/archives/parseuri)
- u = u.replace(/@@/g, '(mce_at)'); // Zope 3 workaround, they use @@something
- u = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(u);
- each(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], function(v, i) {
- var s = u[i];
-
- // Zope 3 workaround, they use @@something
- if (s)
- s = s.replace(/\(mce_at\)/g, '@@');
-
- t[v] = s;
- });
-
- b = s.base_uri;
- if (b) {
- if (!t.protocol)
- t.protocol = b.protocol;
-
- if (!t.userInfo)
- t.userInfo = b.userInfo;
-
- if (!t.port && t.host === 'mce_host')
- t.port = b.port;
-
- if (!t.host || t.host === 'mce_host')
- t.host = b.host;
-
- t.source = '';
- }
-
- //t.path = t.path || '/';
- },
-
- setPath : function(p) {
- var t = this;
-
- p = /^(.*?)\/?(\w+)?$/.exec(p);
-
- // Update path parts
- t.path = p[0];
- t.directory = p[1];
- t.file = p[2];
-
- // Rebuild source
- t.source = '';
- t.getURI();
- },
-
- toRelative : function(u) {
- var t = this, o;
-
- if (u === "./")
- return u;
-
- u = new tinymce.util.URI(u, {base_uri : t});
-
- // Not on same domain/port or protocol
- if ((u.host != 'mce_host' && t.host != u.host && u.host) || t.port != u.port || t.protocol != u.protocol)
- return u.getURI();
-
- var tu = t.getURI(), uu = u.getURI();
-
- // Allow usage of the base_uri when relative_urls = true
- if(tu == uu || (tu.charAt(tu.length - 1) == "/" && tu.substr(0, tu.length - 1) == uu))
- return tu;
-
- o = t.toRelPath(t.path, u.path);
-
- // Add query
- if (u.query)
- o += '?' + u.query;
-
- // Add anchor
- if (u.anchor)
- o += '#' + u.anchor;
-
- return o;
- },
-
- toAbsolute : function(u, nh) {
- u = new tinymce.util.URI(u, {base_uri : this});
-
- return u.getURI(this.host == u.host && this.protocol == u.protocol ? nh : 0);
- },
-
- toRelPath : function(base, path) {
- var items, bp = 0, out = '', i, l;
-
- // Split the paths
- base = base.substring(0, base.lastIndexOf('/'));
- base = base.split('/');
- items = path.split('/');
-
- if (base.length >= items.length) {
- for (i = 0, l = base.length; i < l; i++) {
- if (i >= items.length || base[i] != items[i]) {
- bp = i + 1;
- break;
- }
- }
- }
-
- if (base.length < items.length) {
- for (i = 0, l = items.length; i < l; i++) {
- if (i >= base.length || base[i] != items[i]) {
- bp = i + 1;
- break;
- }
- }
- }
-
- if (bp === 1)
- return path;
-
- for (i = 0, l = base.length - (bp - 1); i < l; i++)
- out += "../";
-
- for (i = bp - 1, l = items.length; i < l; i++) {
- if (i != bp - 1)
- out += "/" + items[i];
- else
- out += items[i];
- }
-
- return out;
- },
-
- toAbsPath : function(base, path) {
- var i, nb = 0, o = [], tr, outPath;
-
- // Split paths
- tr = /\/$/.test(path) ? '/' : '';
- base = base.split('/');
- path = path.split('/');
-
- // Remove empty chunks
- each(base, function(k) {
- if (k)
- o.push(k);
- });
-
- base = o;
-
- // Merge relURLParts chunks
- for (i = path.length - 1, o = []; i >= 0; i--) {
- // Ignore empty or .
- if (path[i].length === 0 || path[i] === ".")
- continue;
-
- // Is parent
- if (path[i] === '..') {
- nb++;
- continue;
- }
-
- // Move up
- if (nb > 0) {
- nb--;
- continue;
- }
-
- o.push(path[i]);
- }
-
- i = base.length - nb;
-
- // If /a/b/c or /
- if (i <= 0)
- outPath = o.reverse().join('/');
- else
- outPath = base.slice(0, i).join('/') + '/' + o.reverse().join('/');
-
- // Add front / if it's needed
- if (outPath.indexOf('/') !== 0)
- outPath = '/' + outPath;
-
- // Add traling / if it's needed
- if (tr && outPath.lastIndexOf('/') !== outPath.length - 1)
- outPath += tr;
-
- return outPath;
- },
-
- getURI : function(nh) {
- var s, t = this;
-
- // Rebuild source
- if (!t.source || nh) {
- s = '';
-
- if (!nh) {
- if (t.protocol)
- s += t.protocol + '://';
-
- if (t.userInfo)
- s += t.userInfo + '@';
-
- if (t.host)
- s += t.host;
-
- if (t.port)
- s += ':' + t.port;
- }
-
- if (t.path)
- s += t.path;
-
- if (t.query)
- s += '?' + t.query;
-
- if (t.anchor)
- s += '#' + t.anchor;
-
- t.source = s;
- }
-
- return t.source;
- }
- });
-})();
-
-(function() {
- var each = tinymce.each;
-
- tinymce.create('static tinymce.util.Cookie', {
- getHash : function(n) {
- var v = this.get(n), h;
-
- if (v) {
- each(v.split('&'), function(v) {
- v = v.split('=');
- h = h || {};
- h[unescape(v[0])] = unescape(v[1]);
- });
- }
-
- return h;
- },
-
- setHash : function(n, v, e, p, d, s) {
- var o = '';
-
- each(v, function(v, k) {
- o += (!o ? '' : '&') + escape(k) + '=' + escape(v);
- });
-
- this.set(n, o, e, p, d, s);
- },
-
- get : function(n) {
- var c = document.cookie, e, p = n + "=", b;
-
- // Strict mode
- if (!c)
- return;
-
- b = c.indexOf("; " + p);
-
- if (b == -1) {
- b = c.indexOf(p);
-
- if (b !== 0)
- return null;
- } else
- b += 2;
-
- e = c.indexOf(";", b);
-
- if (e == -1)
- e = c.length;
-
- return unescape(c.substring(b + p.length, e));
- },
-
- set : function(n, v, e, p, d, s) {
- document.cookie = n + "=" + escape(v) +
- ((e) ? "; expires=" + e.toGMTString() : "") +
- ((p) ? "; path=" + escape(p) : "") +
- ((d) ? "; domain=" + d : "") +
- ((s) ? "; secure" : "");
- },
-
- remove : function(n, p) {
- var d = new Date();
-
- d.setTime(d.getTime() - 1000);
-
- this.set(n, '', d, p, d);
- }
- });
-})();
-
-(function() {
- function serialize(o, quote) {
- var i, v, t, name;
-
- quote = quote || '"';
-
- if (o == null)
- return 'null';
-
- t = typeof o;
-
- if (t == 'string') {
- v = '\bb\tt\nn\ff\rr\""\'\'\\\\';
-
- return quote + o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g, function(a, b) {
- // Make sure single quotes never get encoded inside double quotes for JSON compatibility
- if (quote === '"' && a === "'")
- return a;
-
- i = v.indexOf(b);
-
- if (i + 1)
- return '\\' + v.charAt(i + 1);
-
- a = b.charCodeAt().toString(16);
-
- return '\\u' + '0000'.substring(a.length) + a;
- }) + quote;
- }
-
- if (t == 'object') {
- if (o.hasOwnProperty && o instanceof Array) {
- for (i=0, v = '['; i<o.length; i++)
- v += (i > 0 ? ',' : '') + serialize(o[i], quote);
-
- return v + ']';
- }
-
- v = '{';
-
- for (name in o) {
- if (o.hasOwnProperty(name)) {
- v += typeof o[name] != 'function' ? (v.length > 1 ? ',' + quote : quote) + name + quote +':' + serialize(o[name], quote) : '';
- }
- }
-
- return v + '}';
- }
-
- return '' + o;
- };
-
- tinymce.util.JSON = {
- serialize: serialize,
-
- parse: function(s) {
- try {
- return eval('(' + s + ')');
- } catch (ex) {
- // Ignore
- }
- }
-
- };
-})();
-
-tinymce.create('static tinymce.util.XHR', {
- send : function(o) {
- var x, t, w = window, c = 0;
-
- function ready() {
- if (!o.async || x.readyState == 4 || c++ > 10000) {
- if (o.success && c < 10000 && x.status == 200)
- o.success.call(o.success_scope, '' + x.responseText, x, o);
- else if (o.error)
- o.error.call(o.error_scope, c > 10000 ? 'TIMED_OUT' : 'GENERAL', x, o);
-
- x = null;
- } else
- w.setTimeout(ready, 10);
- };
-
- // Default settings
- o.scope = o.scope || this;
- o.success_scope = o.success_scope || o.scope;
- o.error_scope = o.error_scope || o.scope;
- o.async = o.async === false ? false : true;
- o.data = o.data || '';
-
- function get(s) {
- x = 0;
-
- try {
- x = new ActiveXObject(s);
- } catch (ex) {
- }
-
- return x;
- };
-
- x = w.XMLHttpRequest ? new XMLHttpRequest() : get('Microsoft.XMLHTTP') || get('Msxml2.XMLHTTP');
-
- if (x) {
- if (x.overrideMimeType)
- x.overrideMimeType(o.content_type);
-
- x.open(o.type || (o.data ? 'POST' : 'GET'), o.url, o.async);
-
- if (o.content_type)
- x.setRequestHeader('Content-Type', o.content_type);
-
- x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
-
- x.send(o.data);
-
- // Syncronous request
- if (!o.async)
- return ready();
-
- // Wait for response, onReadyStateChange can not be used since it leaks memory in IE
- t = w.setTimeout(ready, 10);
- }
- }
-});
-
-(function() {
- var extend = tinymce.extend, JSON = tinymce.util.JSON, XHR = tinymce.util.XHR;
-
- tinymce.create('tinymce.util.JSONRequest', {
- JSONRequest : function(s) {
- this.settings = extend({
- }, s);
- this.count = 0;
- },
-
- send : function(o) {
- var ecb = o.error, scb = o.success;
-
- o = extend(this.settings, o);
-
- o.success = function(c, x) {
- c = JSON.parse(c);
-
- if (typeof(c) == 'undefined') {
- c = {
- error : 'JSON Parse error.'
- };
- }
-
- if (c.error)
- ecb.call(o.error_scope || o.scope, c.error, x);
- else
- scb.call(o.success_scope || o.scope, c.result);
- };
-
- o.error = function(ty, x) {
- if (ecb)
- ecb.call(o.error_scope || o.scope, ty, x);
- };
-
- o.data = JSON.serialize({
- id : o.id || 'c' + (this.count++),
- method : o.method,
- params : o.params
- });
-
- // JSON content type for Ruby on rails. Bug: #1883287
- o.content_type = 'application/json';
-
- XHR.send(o);
- },
-
- 'static' : {
- sendRPC : function(o) {
- return new tinymce.util.JSONRequest().send(o);
- }
- }
- });
-}());
-(function(tinymce){
- tinymce.VK = {
- BACKSPACE: 8,
- DELETE: 46,
- DOWN: 40,
- ENTER: 13,
- LEFT: 37,
- RIGHT: 39,
- SPACEBAR: 32,
- TAB: 9,
- UP: 38,
-
- modifierPressed: function (e) {
- return e.shiftKey || e.ctrlKey || e.altKey;
- }
- };
-})(tinymce);
-
-tinymce.util.Quirks = function(editor) {
- var VK = tinymce.VK, BACKSPACE = VK.BACKSPACE, DELETE = VK.DELETE, dom = editor.dom, selection = editor.selection, settings = editor.settings;
-
- function setEditorCommandState(cmd, state) {
- try {
- editor.getDoc().execCommand(cmd, false, state);
- } catch (ex) {
- // Ignore
- }
- }
-
- function cleanupStylesWhenDeleting() {
- function removeMergedFormatSpans(isDelete) {
- var rng, blockElm, node, clonedSpan;
-
- rng = selection.getRng();
-
- // Find root block
- blockElm = dom.getParent(rng.startContainer, dom.isBlock);
-
- // On delete clone the root span of the next block element
- if (isDelete)
- blockElm = dom.getNext(blockElm, dom.isBlock);
-
- // Locate root span element and clone it since it would otherwise get merged by the "apple-style-span" on delete/backspace
- if (blockElm) {
- node = blockElm.firstChild;
-
- // Ignore empty text nodes
- while (node && node.nodeType == 3 && node.nodeValue.length === 0)
- node = node.nextSibling;
-
- if (node && node.nodeName === 'SPAN') {
- clonedSpan = node.cloneNode(false);
- }
- }
-
- // Do the backspace/delete action
- editor.getDoc().execCommand(isDelete ? 'ForwardDelete' : 'Delete', false, null);
-
- // Find all odd apple-style-spans
- blockElm = dom.getParent(rng.startContainer, dom.isBlock);
- tinymce.each(dom.select('span.Apple-style-span,font.Apple-style-span', blockElm), function(span) {
- var bm = selection.getBookmark();
-
- if (clonedSpan) {
- dom.replace(clonedSpan.cloneNode(false), span, true);
- } else {
- dom.remove(span, true);
- }
-
- // Restore the selection
- selection.moveToBookmark(bm);
- });
- };
-
- editor.onKeyDown.add(function(editor, e) {
- var isDelete;
-
- isDelete = e.keyCode == DELETE;
- if (!e.isDefaultPrevented() && (isDelete || e.keyCode == BACKSPACE) && !VK.modifierPressed(e)) {
- e.preventDefault();
- removeMergedFormatSpans(isDelete);
- }
- });
-
- editor.addCommand('Delete', function() {removeMergedFormatSpans();});
- };
-
- function emptyEditorWhenDeleting() {
- function getEndPointNode(rng, start) {
- var container, offset, prefix = start ? 'start' : 'end';
-
- container = rng[prefix + 'Container'];
- offset = rng[prefix + 'Offset'];
-
- // Resolve indexed container
- if (container.nodeType == 1 && container.hasChildNodes()) {
- container = container.childNodes[Math.min(start ? offset : (offset > 0 ? offset - 1 : 0), container.childNodes.length - 1)]
- }
-
- return container;
- };
-
- function isAtStartEndOfBody(rng, start) {
- var container, offset, root, childNode, prefix = start ? 'start' : 'end', isAfter;
-
- container = rng[prefix + 'Container'];
- offset = rng[prefix + 'Offset'];
- root = dom.getRoot();
-
- // Resolve indexed container
- if (container.nodeType == 1) {
- isAfter = offset >= container.childNodes.length;
- container = getEndPointNode(rng, start);
-
- if (container.nodeType == 3) {
- offset = start && !isAfter ? 0 : container.nodeValue.length;
- }
- }
-
- // Check if start/end is in the middle of text
- if (container.nodeType == 3 && ((start && offset > 0) || (!start && offset < container.nodeValue.length))) {
- return false;
- }
-
- // Walk up the DOM tree to see if the endpoint is at the beginning/end of body
- while (container !== root) {
- childNode = container.parentNode[start ? 'firstChild' : 'lastChild'];
-
- // If first/last element is a BR then jump to it's sibling in case: <p>x<br></p>
- if (childNode.nodeName == "BR") {
- childNode = childNode[start ? 'nextSibling' : 'previousSibling'] || childNode;
- }
-
- // If the childNode isn't the container node then break in case <p><span>A</span>[X]</p>
- if (childNode !== container) {
- return false;
- }
-
- container = container.parentNode;
- }
-
- return true;
- };
-
- editor.onKeyDown.addToTop(function(editor, e) {
- var rng, keyCode = e.keyCode;
-
- if (!e.isDefaultPrevented() && (keyCode == DELETE || keyCode == BACKSPACE)) {
- rng = selection.getRng(true);
-
- if (isAtStartEndOfBody(rng, true) && isAtStartEndOfBody(rng, false) &&
- (rng.collapsed || dom.findCommonAncestor(getEndPointNode(rng, true), getEndPointNode(rng)) === dom.getRoot())) {
- editor.setContent('');
- editor.nodeChanged();
- e.preventDefault();
- }
- }
- });
- };
-
- function inputMethodFocus() {
- if (!editor.settings.content_editable) {
- // Case 1 IME doesn't initialize if you focus the document
- dom.bind(editor.getDoc(), 'focusin', function(e) {
- selection.setRng(selection.getRng());
- });
-
- // Case 2 IME doesn't initialize if you click the documentElement it also doesn't properly fire the focusin event
- dom.bind(editor.getDoc(), 'mousedown', function(e) {
- if (e.target == editor.getDoc().documentElement) {
- editor.getWin().focus();
- selection.setRng(selection.getRng());
- }
- });
- }
- };
-
- function removeHrOnBackspace() {
- editor.onKeyDown.add(function(editor, e) {
- if (!e.isDefaultPrevented() && e.keyCode === BACKSPACE) {
- if (selection.isCollapsed() && selection.getRng(true).startOffset === 0) {
- var node = selection.getNode();
- var previousSibling = node.previousSibling;
-
- if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === "hr") {
- dom.remove(previousSibling);
- tinymce.dom.Event.cancel(e);
- }
- }
- }
- })
- }
-
- function focusBody() {
- // Fix for a focus bug in FF 3.x where the body element
- // wouldn't get proper focus if the user clicked on the HTML element
- if (!Range.prototype.getClientRects) { // Detect getClientRects got introduced in FF 4
- editor.onMouseDown.add(function(editor, e) {
- if (e.target.nodeName === "HTML") {
- var body = editor.getBody();
-
- // Blur the body it's focused but not correctly focused
- body.blur();
-
- // Refocus the body after a little while
- setTimeout(function() {
- body.focus();
- }, 0);
- }
- });
- }
- };
-
- function selectControlElements() {
- editor.onClick.add(function(editor, e) {
- e = e.target;
-
- // Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250
- // WebKit can't even do simple things like selecting an image
- // Needs tobe the setBaseAndExtend or it will fail to select floated images
- if (/^(IMG|HR)$/.test(e.nodeName)) {
- selection.getSel().setBaseAndExtent(e, 0, e, 1);
- }
-
- if (e.nodeName == 'A' && dom.hasClass(e, 'mceItemAnchor')) {
- selection.select(e);
- }
-
- editor.nodeChanged();
- });
- };
-
- function removeStylesWhenDeletingAccrossBlockElements() {
- function getAttributeApplyFunction() {
- var template = dom.getAttribs(selection.getStart().cloneNode(false));
-
- return function() {
- var target = selection.getStart();
-
- if (target !== editor.getBody()) {
- dom.setAttrib(target, "style", null);
-
- tinymce.each(template, function(attr) {
- target.setAttributeNode(attr.cloneNode(true));
- });
- }
- };
- }
-
- function isSelectionAcrossElements() {
- return !selection.isCollapsed() && selection.getStart() != selection.getEnd();
- }
-
- function blockEvent(editor, e) {
- e.preventDefault();
- return false;
- }
-
- editor.onKeyPress.add(function(editor, e) {
- var applyAttributes;
-
- if ((e.keyCode == 8 || e.keyCode == 46) && isSelectionAcrossElements()) {
- applyAttributes = getAttributeApplyFunction();
- editor.getDoc().execCommand('delete', false, null);
- applyAttributes();
- e.preventDefault();
- return false;
- }
- });
-
- dom.bind(editor.getDoc(), 'cut', function(e) {
- var applyAttributes;
-
- if (isSelectionAcrossElements()) {
- applyAttributes = getAttributeApplyFunction();
- editor.onKeyUp.addToTop(blockEvent);
-
- setTimeout(function() {
- applyAttributes();
- editor.onKeyUp.remove(blockEvent);
- }, 0);
- }
- });
- }
-
- function selectionChangeNodeChanged() {
- var lastRng, selectionTimer;
-
- dom.bind(editor.getDoc(), 'selectionchange', function() {
- if (selectionTimer) {
- clearTimeout(selectionTimer);
- selectionTimer = 0;
- }
-
- selectionTimer = window.setTimeout(function() {
- var rng = selection.getRng();
-
- // Compare the ranges to see if it was a real change or not
- if (!lastRng || !tinymce.dom.RangeUtils.compareRanges(rng, lastRng)) {
- editor.nodeChanged();
- lastRng = rng;
- }
- }, 50);
- });
- }
-
- function ensureBodyHasRoleApplication() {
- document.body.setAttribute("role", "application");
- }
-
- function disableBackspaceIntoATable() {
- editor.onKeyDown.add(function(editor, e) {
- if (!e.isDefaultPrevented() && e.keyCode === BACKSPACE) {
- if (selection.isCollapsed() && selection.getRng(true).startOffset === 0) {
- var previousSibling = selection.getNode().previousSibling;
- if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === "table") {
- return tinymce.dom.Event.cancel(e);
- }
- }
- }
- })
- }
-
- function addNewLinesBeforeBrInPre() {
- var documentMode = editor.getDoc().documentMode;
-
- // IE8+ rendering mode does the right thing with BR in PRE
- if (documentMode && documentMode > 7) {
- return;
- }
-
- // Enable display: none in area and add a specific class that hides all BR elements in PRE to
- // avoid the caret from getting stuck at the BR elements while pressing the right arrow key
- setEditorCommandState('RespectVisibilityInDesign', true);
- dom.addClass(editor.getBody(), 'mceHideBrInPre');
-
- // Adds a \n before all BR elements in PRE to get them visual
- editor.parser.addNodeFilter('pre', function(nodes, name) {
- var i = nodes.length, brNodes, j, brElm, sibling;
-
- while (i--) {
- brNodes = nodes[i].getAll('br');
- j = brNodes.length;
- while (j--) {
- brElm = brNodes[j];
-
- // Add \n before BR in PRE elements on older IE:s so the new lines get rendered
- sibling = brElm.prev;
- if (sibling && sibling.type === 3 && sibling.value.charAt(sibling.value - 1) != '\n') {
- sibling.value += '\n';
- } else {
- brElm.parent.insert(new tinymce.html.Node('#text', 3), brElm, true).value = '\n';
- }
- }
- }
- });
-
- // Removes any \n before BR elements in PRE since other browsers and in contentEditable=false mode they will be visible
- editor.serializer.addNodeFilter('pre', function(nodes, name) {
- var i = nodes.length, brNodes, j, brElm, sibling;
-
- while (i--) {
- brNodes = nodes[i].getAll('br');
- j = brNodes.length;
- while (j--) {
- brElm = brNodes[j];
- sibling = brElm.prev;
- if (sibling && sibling.type == 3) {
- sibling.value = sibling.value.replace(/\r?\n$/, '');
- }
- }
- }
- });
- }
-
- function removePreSerializedStylesWhenSelectingControls() {
- dom.bind(editor.getBody(), 'mouseup', function(e) {
- var value, node = selection.getNode();
-
- // Moved styles to attributes on IMG eements
- if (node.nodeName == 'IMG') {
- // Convert style width to width attribute
- if (value = dom.getStyle(node, 'width')) {
- dom.setAttrib(node, 'width', value.replace(/[^0-9%]+/g, ''));
- dom.setStyle(node, 'width', '');
- }
-
- // Convert style height to height attribute
- if (value = dom.getStyle(node, 'height')) {
- dom.setAttrib(node, 'height', value.replace(/[^0-9%]+/g, ''));
- dom.setStyle(node, 'height', '');
- }
- }
- });
- }
-
- function keepInlineElementOnDeleteBackspace() {
- editor.onKeyDown.add(function(editor, e) {
- var isDelete, rng, container, offset, brElm, sibling, collapsed;
-
- isDelete = e.keyCode == DELETE;
- if (!e.isDefaultPrevented() && (isDelete || e.keyCode == BACKSPACE) && !VK.modifierPressed(e)) {
- rng = selection.getRng();
- container = rng.startContainer;
- offset = rng.startOffset;
- collapsed = rng.collapsed;
-
- // Override delete if the start container is a text node and is at the beginning of text or
- // just before/after the last character to be deleted in collapsed mode
- if (container.nodeType == 3 && container.nodeValue.length > 0 && ((offset === 0 && !collapsed) || (collapsed && offset === (isDelete ? 0 : 1)))) {
- nonEmptyElements = editor.schema.getNonEmptyElements();
-
- // Prevent default logic since it's broken
- e.preventDefault();
-
- // Insert a BR before the text node this will prevent the containing element from being deleted/converted
- brElm = dom.create('br', {id: '__tmp'});
- container.parentNode.insertBefore(brElm, container);
-
- // Do the browser delete
- editor.getDoc().execCommand(isDelete ? 'ForwardDelete' : 'Delete', false, null);
-
- // Check if the previous sibling is empty after deleting for example: <p><b></b>|</p>
- container = selection.getRng().startContainer;
- sibling = container.previousSibling;
- if (sibling && sibling.nodeType == 1 && !dom.isBlock(sibling) && dom.isEmpty(sibling) && !nonEmptyElements[sibling.nodeName.toLowerCase()]) {
- dom.remove(sibling);
- }
-
- // Remove the temp element we inserted
- dom.remove('__tmp');
- }
- }
- });
- }
-
- function removeBlockQuoteOnBackSpace() {
- // Add block quote deletion handler
- editor.onKeyDown.add(function(editor, e) {
- var rng, container, offset, root, parent;
-
- if (e.isDefaultPrevented() || e.keyCode != VK.BACKSPACE) {
- return;
- }
-
- rng = selection.getRng();
- container = rng.startContainer;
- offset = rng.startOffset;
- root = dom.getRoot();
- parent = container;
-
- if (!rng.collapsed || offset !== 0) {
- return;
- }
-
- while (parent && parent.parentNode && parent.parentNode.firstChild == parent && parent.parentNode != root) {
- parent = parent.parentNode;
- }
-
- // Is the cursor at the beginning of a blockquote?
- if (parent.tagName === 'BLOCKQUOTE') {
- // Remove the blockquote
- editor.formatter.toggle('blockquote', null, parent);
-
- // Move the caret to the beginning of container
- rng.setStart(container, 0);
- rng.setEnd(container, 0);
- selection.setRng(rng);
- selection.collapse(false);
- }
- });
- };
-
- function setGeckoEditingOptions() {
- function setOpts() {
- editor._refreshContentEditable();
-
- setEditorCommandState("StyleWithCSS", false);
- setEditorCommandState("enableInlineTableEditing", false);
-
- if (!settings.object_resizing) {
- setEditorCommandState("enableObjectResizing", false);
- }
- };
-
- if (!settings.readonly) {
- editor.onBeforeExecCommand.add(setOpts);
- editor.onMouseDown.add(setOpts);
- }
- };
-
- function addBrAfterLastLinks() {
- function fixLinks(editor, o) {
- tinymce.each(dom.select('a'), function(node) {
- var parentNode = node.parentNode, root = dom.getRoot();
-
- if (parentNode.lastChild === node) {
- while (parentNode && !dom.isBlock(parentNode)) {
- if (parentNode.parentNode.lastChild !== parentNode || parentNode === root) {
- return;
- }
-
- parentNode = parentNode.parentNode;
- }
-
- dom.add(parentNode, 'br', {'data-mce-bogus' : 1});
- }
- });
- };
-
- editor.onExecCommand.add(function(editor, cmd) {
- if (cmd === 'CreateLink') {
- fixLinks(editor);
- }
- });
-
- editor.onSetContent.add(selection.onSetContent.add(fixLinks));
- };
-
- function removeGhostSelection() {
- function repaint(sender, args) {
- if (!sender || !args.initial) {
- editor.execCommand('mceRepaint');
- }
- };
-
- editor.onUndo.add(repaint);
- editor.onRedo.add(repaint);
- editor.onSetContent.add(repaint);
- };
-
- function deleteImageOnBackSpace() {
- editor.onKeyDown.add(function(editor, e) {
- if (!e.isDefaultPrevented() && e.keyCode == 8 && selection.getNode().nodeName == 'IMG') {
- e.preventDefault();
- editor.undoManager.beforeChange();
- dom.remove(selection.getNode());
- editor.undoManager.add();
- }
- });
- };
-
- // All browsers
- disableBackspaceIntoATable();
- removeBlockQuoteOnBackSpace();
- emptyEditorWhenDeleting();
-
- // WebKit
- if (tinymce.isWebKit) {
- keepInlineElementOnDeleteBackspace();
- cleanupStylesWhenDeleting();
- inputMethodFocus();
- selectControlElements();
-
- // iOS
- if (tinymce.isIDevice) {
- selectionChangeNodeChanged();
- }
- }
-
- // IE
- if (tinymce.isIE) {
- removeHrOnBackspace();
- ensureBodyHasRoleApplication();
- addNewLinesBeforeBrInPre();
- removePreSerializedStylesWhenSelectingControls();
- deleteImageOnBackSpace();
- }
-
- // Gecko
- if (tinymce.isGecko) {
- removeHrOnBackspace();
- focusBody();
- removeStylesWhenDeletingAccrossBlockElements();
- setGeckoEditingOptions();
- addBrAfterLastLinks();
- removeGhostSelection();
- }
-};
-(function(tinymce) {
- var namedEntities, baseEntities, reverseEntities,
- attrsCharsRegExp = /[&<>\"\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
- textCharsRegExp = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
- rawCharsRegExp = /[<>&\"\']/g,
- entityRegExp = /&(#x|#)?([\w]+);/g,
- asciiMap = {
- 128 : "\u20AC", 130 : "\u201A", 131 : "\u0192", 132 : "\u201E", 133 : "\u2026", 134 : "\u2020",
- 135 : "\u2021", 136 : "\u02C6", 137 : "\u2030", 138 : "\u0160", 139 : "\u2039", 140 : "\u0152",
- 142 : "\u017D", 145 : "\u2018", 146 : "\u2019", 147 : "\u201C", 148 : "\u201D", 149 : "\u2022",
- 150 : "\u2013", 151 : "\u2014", 152 : "\u02DC", 153 : "\u2122", 154 : "\u0161", 155 : "\u203A",
- 156 : "\u0153", 158 : "\u017E", 159 : "\u0178"
- };
-
- // Raw entities
- baseEntities = {
- '\"' : '&quot;', // Needs to be escaped since the YUI compressor would otherwise break the code
- "'" : '&#39;',
- '<' : '&lt;',
- '>' : '&gt;',
- '&' : '&amp;'
- };
-
- // Reverse lookup table for raw entities
- reverseEntities = {
- '&lt;' : '<',
- '&gt;' : '>',
- '&amp;' : '&',
- '&quot;' : '"',
- '&apos;' : "'"
- };
-
- // Decodes text by using the browser
- function nativeDecode(text) {
- var elm;
-
- elm = document.createElement("div");
- elm.innerHTML = text;
-
- return elm.textContent || elm.innerText || text;
- };
-
- // Build a two way lookup table for the entities
- function buildEntitiesLookup(items, radix) {
- var i, chr, entity, lookup = {};
-
- if (items) {
- items = items.split(',');
- radix = radix || 10;
-
- // Build entities lookup table
- for (i = 0; i < items.length; i += 2) {
- chr = String.fromCharCode(parseInt(items[i], radix));
-
- // Only add non base entities
- if (!baseEntities[chr]) {
- entity = '&' + items[i + 1] + ';';
- lookup[chr] = entity;
- lookup[entity] = chr;
- }
- }
-
- return lookup;
- }
- };
-
- // Unpack entities lookup where the numbers are in radix 32 to reduce the size
- namedEntities = buildEntitiesLookup(
- '50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' +
- '5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' +
- '5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' +
- '5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' +
- '68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' +
- '6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' +
- '6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' +
- '75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' +
- '7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' +
- '7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' +
- 'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' +
- 'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' +
- 't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' +
- 'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' +
- 'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' +
- '81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' +
- '8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' +
- '8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' +
- '8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' +
- '8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' +
- 'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' +
- 'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' +
- 'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' +
- '80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' +
- '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32);
-
- tinymce.html = tinymce.html || {};
-
- tinymce.html.Entities = {
- encodeRaw : function(text, attr) {
- return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
- return baseEntities[chr] || chr;
- });
- },
-
- encodeAllRaw : function(text) {
- return ('' + text).replace(rawCharsRegExp, function(chr) {
- return baseEntities[chr] || chr;
- });
- },
-
- encodeNumeric : function(text, attr) {
- return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
- // Multi byte sequence convert it to a single entity
- if (chr.length > 1)
- return '&#' + (((chr.charCodeAt(0) - 0xD800) * 0x400) + (chr.charCodeAt(1) - 0xDC00) + 0x10000) + ';';
-
- return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';';
- });
- },
-
- encodeNamed : function(text, attr, entities) {
- entities = entities || namedEntities;
-
- return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
- return baseEntities[chr] || entities[chr] || chr;
- });
- },
-
- getEncodeFunc : function(name, entities) {
- var Entities = tinymce.html.Entities;
-
- entities = buildEntitiesLookup(entities) || namedEntities;
-
- function encodeNamedAndNumeric(text, attr) {
- return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
- return baseEntities[chr] || entities[chr] || '&#' + chr.charCodeAt(0) + ';' || chr;
- });
- };
-
- function encodeCustomNamed(text, attr) {
- return Entities.encodeNamed(text, attr, entities);
- };
-
- // Replace + with , to be compatible with previous TinyMCE versions
- name = tinymce.makeMap(name.replace(/\+/g, ','));
-
- // Named and numeric encoder
- if (name.named && name.numeric)
- return encodeNamedAndNumeric;
-
- // Named encoder
- if (name.named) {
- // Custom names
- if (entities)
- return encodeCustomNamed;
-
- return Entities.encodeNamed;
- }
-
- // Numeric
- if (name.numeric)
- return Entities.encodeNumeric;
-
- // Raw encoder
- return Entities.encodeRaw;
- },
-
- decode : function(text) {
- return text.replace(entityRegExp, function(all, numeric, value) {
- if (numeric) {
- value = parseInt(value, numeric.length === 2 ? 16 : 10);
-
- // Support upper UTF
- if (value > 0xFFFF) {
- value -= 0x10000;
-
- return String.fromCharCode(0xD800 + (value >> 10), 0xDC00 + (value & 0x3FF));
- } else
- return asciiMap[value] || String.fromCharCode(value);
- }
-
- return reverseEntities[all] || namedEntities[all] || nativeDecode(all);
- });
- }
- };
-})(tinymce);
-
-tinymce.html.Styles = function(settings, schema) {
- var rgbRegExp = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,
- urlOrStrRegExp = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,
- styleRegExp = /\s*([^:]+):\s*([^;]+);?/g,
- trimRightRegExp = /\s+$/,
- urlColorRegExp = /rgb/,
- undef, i, encodingLookup = {}, encodingItems;
-
- settings = settings || {};
-
- encodingItems = '\\" \\\' \\; \\: ; : \uFEFF'.split(' ');
- for (i = 0; i < encodingItems.length; i++) {
- encodingLookup[encodingItems[i]] = '\uFEFF' + i;
- encodingLookup['\uFEFF' + i] = encodingItems[i];
- }
-
- function toHex(match, r, g, b) {
- function hex(val) {
- val = parseInt(val).toString(16);
-
- return val.length > 1 ? val : '0' + val; // 0 -> 00
- };
-
- return '#' + hex(r) + hex(g) + hex(b);
- };
-
- return {
- toHex : function(color) {
- return color.replace(rgbRegExp, toHex);
- },
-
- parse : function(css) {
- var styles = {}, matches, name, value, isEncoded, urlConverter = settings.url_converter, urlConverterScope = settings.url_converter_scope || this;
-
- function compress(prefix, suffix) {
- var top, right, bottom, left;
-
- // Get values and check it it needs compressing
- top = styles[prefix + '-top' + suffix];
- if (!top)
- return;
-
- right = styles[prefix + '-right' + suffix];
- if (top != right)
- return;
-
- bottom = styles[prefix + '-bottom' + suffix];
- if (right != bottom)
- return;
-
- left = styles[prefix + '-left' + suffix];
- if (bottom != left)
- return;
-
- // Compress
- styles[prefix + suffix] = left;
- delete styles[prefix + '-top' + suffix];
- delete styles[prefix + '-right' + suffix];
- delete styles[prefix + '-bottom' + suffix];
- delete styles[prefix + '-left' + suffix];
- };
-
- function canCompress(key) {
- var value = styles[key], i;
-
- if (!value || value.indexOf(' ') < 0)
- return;
-
- value = value.split(' ');
- i = value.length;
- while (i--) {
- if (value[i] !== value[0])
- return false;
- }
-
- styles[key] = value[0];
-
- return true;
- };
-
- function compress2(target, a, b, c) {
- if (!canCompress(a))
- return;
-
- if (!canCompress(b))
- return;
-
- if (!canCompress(c))
- return;
-
- // Compress
- styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c];
- delete styles[a];
- delete styles[b];
- delete styles[c];
- };
-
- // Encodes the specified string by replacing all \" \' ; : with _<num>
- function encode(str) {
- isEncoded = true;
-
- return encodingLookup[str];
- };
-
- // Decodes the specified string by replacing all _<num> with it's original value \" \' etc
- // It will also decode the \" \' if keep_slashes is set to fale or omitted
- function decode(str, keep_slashes) {
- if (isEncoded) {
- str = str.replace(/\uFEFF[0-9]/g, function(str) {
- return encodingLookup[str];
- });
- }
-
- if (!keep_slashes)
- str = str.replace(/\\([\'\";:])/g, "$1");
-
- return str;
- };
-
- function processUrl(match, url, url2, url3, str, str2) {
- str = str || str2;
-
- if (str) {
- str = decode(str);
-
- // Force strings into single quote format
- return "'" + str.replace(/\'/g, "\\'") + "'";
- }
-
- url = decode(url || url2 || url3);
-
- // Convert the URL to relative/absolute depending on config
- if (urlConverter)
- url = urlConverter.call(urlConverterScope, url, 'style');
-
- // Output new URL format
- return "url('" + url.replace(/\'/g, "\\'") + "')";
- };
-
- if (css) {
- // Encode \" \' % and ; and : inside strings so they don't interfere with the style parsing
- css = css.replace(/\\[\"\';:\uFEFF]/g, encode).replace(/\"[^\"]+\"|\'[^\']+\'/g, function(str) {
- return str.replace(/[;:]/g, encode);
- });
-
- // Parse styles
- while (matches = styleRegExp.exec(css)) {
- name = matches[1].replace(trimRightRegExp, '').toLowerCase();
- value = matches[2].replace(trimRightRegExp, '');
-
- if (name && value.length > 0) {
- // Opera will produce 700 instead of bold in their style values
- if (name === 'font-weight' && value === '700')
- value = 'bold';
- else if (name === 'color' || name === 'background-color') // Lowercase colors like RED
- value = value.toLowerCase();
-
- // Convert RGB colors to HEX
- value = value.replace(rgbRegExp, toHex);
-
- // Convert URLs and force them into url('value') format
- value = value.replace(urlOrStrRegExp, processUrl);
- styles[name] = isEncoded ? decode(value, true) : value;
- }
-
- styleRegExp.lastIndex = matches.index + matches[0].length;
- }
-
- // Compress the styles to reduce it's size for example IE will expand styles
- compress("border", "");
- compress("border", "-width");
- compress("border", "-color");
- compress("border", "-style");
- compress("padding", "");
- compress("margin", "");
- compress2('border', 'border-width', 'border-style', 'border-color');
-
- // Remove pointless border, IE produces these
- if (styles.border === 'medium none')
- delete styles.border;
- }
-
- return styles;
- },
-
- serialize : function(styles, element_name) {
- var css = '', name, value;
-
- function serializeStyles(name) {
- var styleList, i, l, value;
-
- styleList = schema.styles[name];
- if (styleList) {
- for (i = 0, l = styleList.length; i < l; i++) {
- name = styleList[i];
- value = styles[name];
-
- if (value !== undef && value.length > 0)
- css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';
- }
- }
- };
-
- // Serialize styles according to schema
- if (element_name && schema && schema.styles) {
- // Serialize global styles and element specific styles
- serializeStyles('*');
- serializeStyles(element_name);
- } else {
- // Output the styles in the order they are inside the object
- for (name in styles) {
- value = styles[name];
-
- if (value !== undef && value.length > 0)
- css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';
- }
- }
-
- return css;
- }
- };
-};
-
-(function(tinymce) {
- var mapCache = {}, makeMap = tinymce.makeMap, each = tinymce.each;
-
- function split(str, delim) {
- return str.split(delim || ',');
- };
-
- function unpack(lookup, data) {
- var key, elements = {};
-
- function replace(value) {
- return value.replace(/[A-Z]+/g, function(key) {
- return replace(lookup[key]);
- });
- };
-
- // Unpack lookup
- for (key in lookup) {
- if (lookup.hasOwnProperty(key))
- lookup[key] = replace(lookup[key]);
- }
-
- // Unpack and parse data into object map
- replace(data).replace(/#/g, '#text').replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g, function(str, name, attributes, children) {
- attributes = split(attributes, '|');
-
- elements[name] = {
- attributes : makeMap(attributes),
- attributesOrder : attributes,
- children : makeMap(children, '|', {'#comment' : {}})
- }
- });
-
- return elements;
- };
-
- function getHTML5() {
- var html5 = mapCache.html5;
-
- if (!html5) {
- html5 = mapCache.html5 = unpack({
- A : 'id|accesskey|class|dir|draggable|item|hidden|itemprop|role|spellcheck|style|subject|title',
- B : '#|a|abbr|area|audio|b|bdo|br|button|canvas|cite|code|command|datalist|del|dfn|em|embed|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|meta|meter|noscript|object|output|progress|q|ruby|samp|script|select|small|span|strong|sub|sup|svg|textarea|time|var|video',
- C : '#|a|abbr|area|address|article|aside|audio|b|bdo|blockquote|br|button|canvas|cite|code|command|datalist|del|details|dfn|dialog|div|dl|em|embed|fieldset|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|menu|meta|meter|nav|noscript|ol|object|output|p|pre|progress|q|ruby|samp|script|section|select|small|span|strong|style|sub|sup|svg|table|textarea|time|ul|var|video'
- }, 'html[A|manifest][body|head]' +
- 'head[A][base|command|link|meta|noscript|script|style|title]' +
- 'title[A][#]' +
- 'base[A|href|target][]' +
- 'link[A|href|rel|media|type|sizes][]' +
- 'meta[A|http-equiv|name|content|charset][]' +
- 'style[A|type|media|scoped][#]' +
- 'script[A|charset|type|src|defer|async][#]' +
- 'noscript[A][C]' +
- 'body[A][C]' +
- 'section[A][C]' +
- 'nav[A][C]' +
- 'article[A][C]' +
- 'aside[A][C]' +
- 'h1[A][B]' +
- 'h2[A][B]' +
- 'h3[A][B]' +
- 'h4[A][B]' +
- 'h5[A][B]' +
- 'h6[A][B]' +
- 'hgroup[A][h1|h2|h3|h4|h5|h6]' +
- 'header[A][C]' +
- 'footer[A][C]' +
- 'address[A][C]' +
- 'p[A][B]' +
- 'br[A][]' +
- 'pre[A][B]' +
- 'dialog[A][dd|dt]' +
- 'blockquote[A|cite][C]' +
- 'ol[A|start|reversed][li]' +
- 'ul[A][li]' +
- 'li[A|value][C]' +
- 'dl[A][dd|dt]' +
- 'dt[A][B]' +
- 'dd[A][C]' +
- 'a[A|href|target|ping|rel|media|type][C]' +
- 'em[A][B]' +
- 'strong[A][B]' +
- 'small[A][B]' +
- 'cite[A][B]' +
- 'q[A|cite][B]' +
- 'dfn[A][B]' +
- 'abbr[A][B]' +
- 'code[A][B]' +
- 'var[A][B]' +
- 'samp[A][B]' +
- 'kbd[A][B]' +
- 'sub[A][B]' +
- 'sup[A][B]' +
- 'i[A][B]' +
- 'b[A][B]' +
- 'mark[A][B]' +
- 'progress[A|value|max][B]' +
- 'meter[A|value|min|max|low|high|optimum][B]' +
- 'time[A|datetime][B]' +
- 'ruby[A][B|rt|rp]' +
- 'rt[A][B]' +
- 'rp[A][B]' +
- 'bdo[A][B]' +
- 'span[A][B]' +
- 'ins[A|cite|datetime][B]' +
- 'del[A|cite|datetime][B]' +
- 'figure[A][C|legend|figcaption]' +
- 'figcaption[A][C]' +
- 'img[A|alt|src|height|width|usemap|ismap][]' +
- 'iframe[A|name|src|height|width|sandbox|seamless][]' +
- 'embed[A|src|height|width|type][]' +
- 'object[A|data|type|height|width|usemap|name|form|classid][param]' +
- 'param[A|name|value][]' +
- 'details[A|open][C|legend]' +
- 'command[A|type|label|icon|disabled|checked|radiogroup][]' +
- 'menu[A|type|label][C|li]' +
- 'legend[A][C|B]' +
- 'div[A][C]' +
- 'source[A|src|type|media][]' +
- 'audio[A|src|autobuffer|autoplay|loop|controls][source]' +
- 'video[A|src|autobuffer|autoplay|loop|controls|width|height|poster][source]' +
- 'hr[A][]' +
- 'form[A|accept-charset|action|autocomplete|enctype|method|name|novalidate|target][C]' +
- 'fieldset[A|disabled|form|name][C|legend]' +
- 'label[A|form|for][B]' +
- 'input[A|type|accept|alt|autocomplete|checked|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|height|list|max|maxlength|min|multiple|pattern|placeholder|readonly|required|size|src|step|width|files|value][]' +
- 'button[A|autofocus|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|name|value|type][B]' +
- 'select[A|autofocus|disabled|form|multiple|name|size][option|optgroup]' +
- 'datalist[A][B|option]' +
- 'optgroup[A|disabled|label][option]' +
- 'option[A|disabled|selected|label|value][]' +
- 'textarea[A|autofocus|disabled|form|maxlength|name|placeholder|readonly|required|rows|cols|wrap][]' +
- 'keygen[A|autofocus|challenge|disabled|form|keytype|name][]' +
- 'output[A|for|form|name][B]' +
- 'canvas[A|width|height][]' +
- 'map[A|name][B|C]' +
- 'area[A|shape|coords|href|alt|target|media|rel|ping|type][]' +
- 'mathml[A][]' +
- 'svg[A][]' +
- 'table[A|summary][caption|colgroup|thead|tfoot|tbody|tr]' +
- 'caption[A][C]' +
- 'colgroup[A|span][col]' +
- 'col[A|span][]' +
- 'thead[A][tr]' +
- 'tfoot[A][tr]' +
- 'tbody[A][tr]' +
- 'tr[A][th|td]' +
- 'th[A|headers|rowspan|colspan|scope][B]' +
- 'td[A|headers|rowspan|colspan][C]'
- );
- }
-
- return html5;
- };
-
- function getHTML4() {
- var html4 = mapCache.html4;
-
- if (!html4) {
- // This is the XHTML 1.0 transitional elements with it's attributes and children packed to reduce it's size
- html4 = mapCache.html4 = unpack({
- Z : 'H|K|N|O|P',
- Y : 'X|form|R|Q',
- ZG : 'E|span|width|align|char|charoff|valign',
- X : 'p|T|div|U|W|isindex|fieldset|table',
- ZF : 'E|align|char|charoff|valign',
- W : 'pre|hr|blockquote|address|center|noframes',
- ZE : 'abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height',
- ZD : '[E][S]',
- U : 'ul|ol|dl|menu|dir',
- ZC : 'p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q',
- T : 'h1|h2|h3|h4|h5|h6',
- ZB : 'X|S|Q',
- S : 'R|P',
- ZA : 'a|G|J|M|O|P',
- R : 'a|H|K|N|O',
- Q : 'noscript|P',
- P : 'ins|del|script',
- O : 'input|select|textarea|label|button',
- N : 'M|L',
- M : 'em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym',
- L : 'sub|sup',
- K : 'J|I',
- J : 'tt|i|b|u|s|strike',
- I : 'big|small|font|basefont',
- H : 'G|F',
- G : 'br|span|bdo',
- F : 'object|applet|img|map|iframe',
- E : 'A|B|C',
- D : 'accesskey|tabindex|onfocus|onblur',
- C : 'onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup',
- B : 'lang|xml:lang|dir',
- A : 'id|class|style|title'
- }, 'script[id|charset|type|language|src|defer|xml:space][]' +
- 'style[B|id|type|media|title|xml:space][]' +
- 'object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]' +
- 'param[id|name|value|valuetype|type][]' +
- 'p[E|align][#|S]' +
- 'a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]' +
- 'br[A|clear][]' +
- 'span[E][#|S]' +
- 'bdo[A|C|B][#|S]' +
- 'applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]' +
- 'h1[E|align][#|S]' +
- 'img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]' +
- 'map[B|C|A|name][X|form|Q|area]' +
- 'h2[E|align][#|S]' +
- 'iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]' +
- 'h3[E|align][#|S]' +
- 'tt[E][#|S]' +
- 'i[E][#|S]' +
- 'b[E][#|S]' +
- 'u[E][#|S]' +
- 's[E][#|S]' +
- 'strike[E][#|S]' +
- 'big[E][#|S]' +
- 'small[E][#|S]' +
- 'font[A|B|size|color|face][#|S]' +
- 'basefont[id|size|color|face][]' +
- 'em[E][#|S]' +
- 'strong[E][#|S]' +
- 'dfn[E][#|S]' +
- 'code[E][#|S]' +
- 'q[E|cite][#|S]' +
- 'samp[E][#|S]' +
- 'kbd[E][#|S]' +
- 'var[E][#|S]' +
- 'cite[E][#|S]' +
- 'abbr[E][#|S]' +
- 'acronym[E][#|S]' +
- 'sub[E][#|S]' +
- 'sup[E][#|S]' +
- 'input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]' +
- 'select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]' +
- 'optgroup[E|disabled|label][option]' +
- 'option[E|selected|disabled|label|value][]' +
- 'textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]' +
- 'label[E|for|accesskey|onfocus|onblur][#|S]' +
- 'button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]' +
- 'h4[E|align][#|S]' +
- 'ins[E|cite|datetime][#|Y]' +
- 'h5[E|align][#|S]' +
- 'del[E|cite|datetime][#|Y]' +
- 'h6[E|align][#|S]' +
- 'div[E|align][#|Y]' +
- 'ul[E|type|compact][li]' +
- 'li[E|type|value][#|Y]' +
- 'ol[E|type|compact|start][li]' +
- 'dl[E|compact][dt|dd]' +
- 'dt[E][#|S]' +
- 'dd[E][#|Y]' +
- 'menu[E|compact][li]' +
- 'dir[E|compact][li]' +
- 'pre[E|width|xml:space][#|ZA]' +
- 'hr[E|align|noshade|size|width][]' +
- 'blockquote[E|cite][#|Y]' +
- 'address[E][#|S|p]' +
- 'center[E][#|Y]' +
- 'noframes[E][#|Y]' +
- 'isindex[A|B|prompt][]' +
- 'fieldset[E][#|legend|Y]' +
- 'legend[E|accesskey|align][#|S]' +
- 'table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]' +
- 'caption[E|align][#|S]' +
- 'col[ZG][]' +
- 'colgroup[ZG][col]' +
- 'thead[ZF][tr]' +
- 'tr[ZF|bgcolor][th|td]' +
- 'th[E|ZE][#|Y]' +
- 'form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]' +
- 'noscript[E][#|Y]' +
- 'td[E|ZE][#|Y]' +
- 'tfoot[ZF][tr]' +
- 'tbody[ZF][tr]' +
- 'area[E|D|shape|coords|href|nohref|alt|target][]' +
- 'base[id|href|target][]' +
- 'body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]'
- );
- }
-
- return html4;
- };
-
- tinymce.html.Schema = function(settings) {
- var self = this, elements = {}, children = {}, patternElements = [], validStyles, schemaItems;
- var whiteSpaceElementsMap, selfClosingElementsMap, shortEndedElementsMap, boolAttrMap, blockElementsMap, nonEmptyElementsMap, customElementsMap = {};
-
- // Creates an lookup table map object for the specified option or the default value
- function createLookupTable(option, default_value, extend) {
- var value = settings[option];
-
- if (!value) {
- // Get cached default map or make it if needed
- value = mapCache[option];
-
- if (!value) {
- value = makeMap(default_value, ' ', makeMap(default_value.toUpperCase(), ' '));
- value = tinymce.extend(value, extend);
-
- mapCache[option] = value;
- }
- } else {
- // Create custom map
- value = makeMap(value, ',', makeMap(value.toUpperCase(), ' '));
- }
-
- return value;
- };
-
- settings = settings || {};
- schemaItems = settings.schema == "html5" ? getHTML5() : getHTML4();
-
- // Allow all elements and attributes if verify_html is set to false
- if (settings.verify_html === false)
- settings.valid_elements = '*[*]';
-
- // Build styles list
- if (settings.valid_styles) {
- validStyles = {};
-
- // Convert styles into a rule list
- each(settings.valid_styles, function(value, key) {
- validStyles[key] = tinymce.explode(value);
- });
- }
-
- // Setup map objects
- whiteSpaceElementsMap = createLookupTable('whitespace_elements', 'pre script style textarea');
- selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li options p td tfoot th thead tr');
- shortEndedElementsMap = createLookupTable('short_ended_elements', 'area base basefont br col frame hr img input isindex link meta param embed source');
- boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls');
- nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object', shortEndedElementsMap);
- blockElementsMap = createLookupTable('block_elements', 'h1 h2 h3 h4 h5 h6 hr p div address pre form table tbody thead tfoot ' +
- 'th tr td li ol ul caption blockquote center dl dt dd dir fieldset ' +
- 'noscript menu isindex samp header footer article section hgroup aside nav figure');
-
- // Converts a wildcard expression string to a regexp for example *a will become /.*a/.
- function patternToRegExp(str) {
- return new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$');
- };
-
- // Parses the specified valid_elements string and adds to the current rules
- // This function is a bit hard to read since it's heavily optimized for speed
- function addValidElements(valid_elements) {
- var ei, el, ai, al, yl, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder,
- prefix, outputName, globalAttributes, globalAttributesOrder, transElement, key, childKey, value,
- elementRuleRegExp = /^([#+\-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,
- attrRuleRegExp = /^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,
- hasPatternsRegExp = /[*?+]/;
-
- if (valid_elements) {
- // Split valid elements into an array with rules
- valid_elements = split(valid_elements);
-
- if (elements['@']) {
- globalAttributes = elements['@'].attributes;
- globalAttributesOrder = elements['@'].attributesOrder;
- }
-
- // Loop all rules
- for (ei = 0, el = valid_elements.length; ei < el; ei++) {
- // Parse element rule
- matches = elementRuleRegExp.exec(valid_elements[ei]);
- if (matches) {
- // Setup local names for matches
- prefix = matches[1];
- elementName = matches[2];
- outputName = matches[3];
- attrData = matches[4];
-
- // Create new attributes and attributesOrder
- attributes = {};
- attributesOrder = [];
-
- // Create the new element
- element = {
- attributes : attributes,
- attributesOrder : attributesOrder
- };
-
- // Padd empty elements prefix
- if (prefix === '#')
- element.paddEmpty = true;
-
- // Remove empty elements prefix
- if (prefix === '-')
- element.removeEmpty = true;
-
- // Copy attributes from global rule into current rule
- if (globalAttributes) {
- for (key in globalAttributes)
- attributes[key] = globalAttributes[key];
-
- attributesOrder.push.apply(attributesOrder, globalAttributesOrder);
- }
-
- // Attributes defined
- if (attrData) {
- attrData = split(attrData, '|');
- for (ai = 0, al = attrData.length; ai < al; ai++) {
- matches = attrRuleRegExp.exec(attrData[ai]);
- if (matches) {
- attr = {};
- attrType = matches[1];
- attrName = matches[2].replace(/::/g, ':');
- prefix = matches[3];
- value = matches[4];
-
- // Required
- if (attrType === '!') {
- element.attributesRequired = element.attributesRequired || [];
- element.attributesRequired.push(attrName);
- attr.required = true;
- }
-
- // Denied from global
- if (attrType === '-') {
- delete attributes[attrName];
- attributesOrder.splice(tinymce.inArray(attributesOrder, attrName), 1);
- continue;
- }
-
- // Default value
- if (prefix) {
- // Default value
- if (prefix === '=') {
- element.attributesDefault = element.attributesDefault || [];
- element.attributesDefault.push({name: attrName, value: value});
- attr.defaultValue = value;
- }
-
- // Forced value
- if (prefix === ':') {
- element.attributesForced = element.attributesForced || [];
- element.attributesForced.push({name: attrName, value: value});
- attr.forcedValue = value;
- }
-
- // Required values
- if (prefix === '<')
- attr.validValues = makeMap(value, '?');
- }
-
- // Check for attribute patterns
- if (hasPatternsRegExp.test(attrName)) {
- element.attributePatterns = element.attributePatterns || [];
- attr.pattern = patternToRegExp(attrName);
- element.attributePatterns.push(attr);
- } else {
- // Add attribute to order list if it doesn't already exist
- if (!attributes[attrName])
- attributesOrder.push(attrName);
-
- attributes[attrName] = attr;
- }
- }
- }
- }
-
- // Global rule, store away these for later usage
- if (!globalAttributes && elementName == '@') {
- globalAttributes = attributes;
- globalAttributesOrder = attributesOrder;
- }
-
- // Handle substitute elements such as b/strong
- if (outputName) {
- element.outputName = elementName;
- elements[outputName] = element;
- }
-
- // Add pattern or exact element
- if (hasPatternsRegExp.test(elementName)) {
- element.pattern = patternToRegExp(elementName);
- patternElements.push(element);
- } else
- elements[elementName] = element;
- }
- }
- }
- };
-
- function setValidElements(valid_elements) {
- elements = {};
- patternElements = [];
-
- addValidElements(valid_elements);
-
- each(schemaItems, function(element, name) {
- children[name] = element.children;
- });
- };
-
- // Adds custom non HTML elements to the schema
- function addCustomElements(custom_elements) {
- var customElementRegExp = /^(~)?(.+)$/;
-
- if (custom_elements) {
- each(split(custom_elements), function(rule) {
- var matches = customElementRegExp.exec(rule),
- inline = matches[1] === '~',
- cloneName = inline ? 'span' : 'div',
- name = matches[2];
-
- children[name] = children[cloneName];
- customElementsMap[name] = cloneName;
-
- // If it's not marked as inline then add it to valid block elements
- if (!inline)
- blockElementsMap[name] = {};
-
- // Add custom elements at span/div positions
- each(children, function(element, child) {
- if (element[cloneName])
- element[name] = element[cloneName];
- });
- });
- }
- };
-
- // Adds valid children to the schema object
- function addValidChildren(valid_children) {
- var childRuleRegExp = /^([+\-]?)(\w+)\[([^\]]+)\]$/;
-
- if (valid_children) {
- each(split(valid_children), function(rule) {
- var matches = childRuleRegExp.exec(rule), parent, prefix;
-
- if (matches) {
- prefix = matches[1];
-
- // Add/remove items from default
- if (prefix)
- parent = children[matches[2]];
- else
- parent = children[matches[2]] = {'#comment' : {}};
-
- parent = children[matches[2]];
-
- each(split(matches[3], '|'), function(child) {
- if (prefix === '-')
- delete parent[child];
- else
- parent[child] = {};
- });
- }
- });
- }
- };
-
- function getElementRule(name) {
- var element = elements[name], i;
-
- // Exact match found
- if (element)
- return element;
-
- // No exact match then try the patterns
- i = patternElements.length;
- while (i--) {
- element = patternElements[i];
-
- if (element.pattern.test(name))
- return element;
- }
- };
-
- if (!settings.valid_elements) {
- // No valid elements defined then clone the elements from the schema spec
- each(schemaItems, function(element, name) {
- elements[name] = {
- attributes : element.attributes,
- attributesOrder : element.attributesOrder
- };
-
- children[name] = element.children;
- });
-
- // Switch these on HTML4
- if (settings.schema != "html5") {
- each(split('strong/b,em/i'), function(item) {
- item = split(item, '/');
- elements[item[1]].outputName = item[0];
- });
- }
-
- // Add default alt attribute for images
- elements.img.attributesDefault = [{name: 'alt', value: ''}];
-
- // Remove these if they are empty by default
- each(split('ol,ul,sub,sup,blockquote,span,font,a,table,tbody,tr,strong,em,b,i'), function(name) {
- if (elements[name]) {
- elements[name].removeEmpty = true;
- }
- });
-
- // Padd these by default
- each(split('p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption'), function(name) {
- elements[name].paddEmpty = true;
- });
- } else
- setValidElements(settings.valid_elements);
-
- addCustomElements(settings.custom_elements);
- addValidChildren(settings.valid_children);
- addValidElements(settings.extended_valid_elements);
-
- // Todo: Remove this when we fix list handling to be valid
- addValidChildren('+ol[ul|ol],+ul[ul|ol]');
-
- // Delete invalid elements
- if (settings.invalid_elements) {
- tinymce.each(tinymce.explode(settings.invalid_elements), function(item) {
- if (elements[item])
- delete elements[item];
- });
- }
-
- // If the user didn't allow span only allow internal spans
- if (!getElementRule('span'))
- addValidElements('span[!data-mce-type|*]');
-
- self.children = children;
-
- self.styles = validStyles;
-
- self.getBoolAttrs = function() {
- return boolAttrMap;
- };
-
- self.getBlockElements = function() {
- return blockElementsMap;
- };
-
- self.getShortEndedElements = function() {
- return shortEndedElementsMap;
- };
-
- self.getSelfClosingElements = function() {
- return selfClosingElementsMap;
- };
-
- self.getNonEmptyElements = function() {
- return nonEmptyElementsMap;
- };
-
- self.getWhiteSpaceElements = function() {
- return whiteSpaceElementsMap;
- };
-
- self.isValidChild = function(name, child) {
- var parent = children[name];
-
- return !!(parent && parent[child]);
- };
-
- self.getElementRule = getElementRule;
-
- self.getCustomElements = function() {
- return customElementsMap;
- };
-
- self.addValidElements = addValidElements;
-
- self.setValidElements = setValidElements;
-
- self.addCustomElements = addCustomElements;
-
- self.addValidChildren = addValidChildren;
- };
-})(tinymce);
-
-(function(tinymce) {
- tinymce.html.SaxParser = function(settings, schema) {
- var self = this, noop = function() {};
-
- settings = settings || {};
- self.schema = schema = schema || new tinymce.html.Schema();
-
- if (settings.fix_self_closing !== false)
- settings.fix_self_closing = true;
-
- // Add handler functions from settings and setup default handlers
- tinymce.each('comment cdata text start end pi doctype'.split(' '), function(name) {
- if (name)
- self[name] = settings[name] || noop;
- });
-
- self.parse = function(html) {
- var self = this, matches, index = 0, value, endRegExp, stack = [], attrList, i, text, name, isInternalElement, removeInternalElements,
- shortEndedElements, fillAttrsMap, isShortEnded, validate, elementRule, isValidElement, attr, attribsValue, invalidPrefixRegExp,
- validAttributesMap, validAttributePatterns, attributesRequired, attributesDefault, attributesForced, selfClosing,
- tokenRegExp, attrRegExp, specialElements, attrValue, idCount = 0, decode = tinymce.html.Entities.decode, fixSelfClosing, isIE;
-
- function processEndTag(name) {
- var pos, i;
-
- // Find position of parent of the same type
- pos = stack.length;
- while (pos--) {
- if (stack[pos].name === name)
- break;
- }
-
- // Found parent
- if (pos >= 0) {
- // Close all the open elements
- for (i = stack.length - 1; i >= pos; i--) {
- name = stack[i];
-
- if (name.valid)
- self.end(name.name);
- }
-
- // Remove the open elements from the stack
- stack.length = pos;
- }
- };
-
- function parseAttribute(match, name, value, val2, val3) {
- var attrRule, i;
-
- name = name.toLowerCase();
- value = name in fillAttrsMap ? name : decode(value || val2 || val3 || ''); // Handle boolean attribute than value attribute
-
- // Validate name and value
- if (validate && !isInternalElement && name.indexOf('data-') !== 0) {
- attrRule = validAttributesMap[name];
-
- // Find rule by pattern matching
- if (!attrRule && validAttributePatterns) {
- i = validAttributePatterns.length;
- while (i--) {
- attrRule = validAttributePatterns[i];
- if (attrRule.pattern.test(name))
- break;
- }
-
- // No rule matched
- if (i === -1)
- attrRule = null;
- }
-
- // No attribute rule found
- if (!attrRule)
- return;
-
- // Validate value
- if (attrRule.validValues && !(value in attrRule.validValues))
- return;
- }
-
- // Add attribute to list and map
- attrList.map[name] = value;
- attrList.push({
- name: name,
- value: value
- });
- };
-
- // Precompile RegExps and map objects
- tokenRegExp = new RegExp('<(?:' +
- '(?:!--([\\w\\W]*?)-->)|' + // Comment
- '(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|' + // CDATA
- '(?:!DOCTYPE([\\w\\W]*?)>)|' + // DOCTYPE
- '(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|' + // PI
- '(?:\\/([^>]+)>)|' + // End element
- '(?:([A-Za-z0-9\\-\\:]+)((?:\\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\\/|\\s+)>)' + // Start element
- ')', 'g');
-
- attrRegExp = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:\\.|[^\"])*)\")|(?:\'((?:\\.|[^\'])*)\')|([^>\s]+)))?/g;
- specialElements = {
- 'script' : /<\/script[^>]*>/gi,
- 'style' : /<\/style[^>]*>/gi,
- 'noscript' : /<\/noscript[^>]*>/gi
- };
-
- // Setup lookup tables for empty elements and boolean attributes
- shortEndedElements = schema.getShortEndedElements();
- selfClosing = schema.getSelfClosingElements();
- fillAttrsMap = schema.getBoolAttrs();
- validate = settings.validate;
- removeInternalElements = settings.remove_internals;
- fixSelfClosing = settings.fix_self_closing;
- isIE = tinymce.isIE;
- invalidPrefixRegExp = /^:/;
-
- while (matches = tokenRegExp.exec(html)) {
- // Text
- if (index < matches.index)
- self.text(decode(html.substr(index, matches.index - index)));
-
- if (value = matches[6]) { // End element
- value = value.toLowerCase();
-
- // IE will add a ":" in front of elements it doesn't understand like custom elements or HTML5 elements
- if (isIE && invalidPrefixRegExp.test(value))
- value = value.substr(1);
-
- processEndTag(value);
- } else if (value = matches[7]) { // Start element
- value = value.toLowerCase();
-
- // IE will add a ":" in front of elements it doesn't understand like custom elements or HTML5 elements
- if (isIE && invalidPrefixRegExp.test(value))
- value = value.substr(1);
-
- isShortEnded = value in shortEndedElements;
-
- // Is self closing tag for example an <li> after an open <li>
- if (fixSelfClosing && selfClosing[value] && stack.length > 0 && stack[stack.length - 1].name === value)
- processEndTag(value);
-
- // Validate element
- if (!validate || (elementRule = schema.getElementRule(value))) {
- isValidElement = true;
-
- // Grab attributes map and patters when validation is enabled
- if (validate) {
- validAttributesMap = elementRule.attributes;
- validAttributePatterns = elementRule.attributePatterns;
- }
-
- // Parse attributes
- if (attribsValue = matches[8]) {
- isInternalElement = attribsValue.indexOf('data-mce-type') !== -1; // Check if the element is an internal element
-
- // If the element has internal attributes then remove it if we are told to do so
- if (isInternalElement && removeInternalElements)
- isValidElement = false;
-
- attrList = [];
- attrList.map = {};
-
- attribsValue.replace(attrRegExp, parseAttribute);
- } else {
- attrList = [];
- attrList.map = {};
- }
-
- // Process attributes if validation is enabled
- if (validate && !isInternalElement) {
- attributesRequired = elementRule.attributesRequired;
- attributesDefault = elementRule.attributesDefault;
- attributesForced = elementRule.attributesForced;
-
- // Handle forced attributes
- if (attributesForced) {
- i = attributesForced.length;
- while (i--) {
- attr = attributesForced[i];
- name = attr.name;
- attrValue = attr.value;
-
- if (attrValue === '{$uid}')
- attrValue = 'mce_' + idCount++;
-
- attrList.map[name] = attrValue;
- attrList.push({name: name, value: attrValue});
- }
- }
-
- // Handle default attributes
- if (attributesDefault) {
- i = attributesDefault.length;
- while (i--) {
- attr = attributesDefault[i];
- name = attr.name;
-
- if (!(name in attrList.map)) {
- attrValue = attr.value;
-
- if (attrValue === '{$uid}')
- attrValue = 'mce_' + idCount++;
-
- attrList.map[name] = attrValue;
- attrList.push({name: name, value: attrValue});
- }
- }
- }
-
- // Handle required attributes
- if (attributesRequired) {
- i = attributesRequired.length;
- while (i--) {
- if (attributesRequired[i] in attrList.map)
- break;
- }
-
- // None of the required attributes where found
- if (i === -1)
- isValidElement = false;
- }
-
- // Invalidate element if it's marked as bogus
- if (attrList.map['data-mce-bogus'])
- isValidElement = false;
- }
-
- if (isValidElement)
- self.start(value, attrList, isShortEnded);
- } else
- isValidElement = false;
-
- // Treat script, noscript and style a bit different since they may include code that looks like elements
- if (endRegExp = specialElements[value]) {
- endRegExp.lastIndex = index = matches.index + matches[0].length;
-
- if (matches = endRegExp.exec(html)) {
- if (isValidElement)
- text = html.substr(index, matches.index - index);
-
- index = matches.index + matches[0].length;
- } else {
- text = html.substr(index);
- index = html.length;
- }
-
- if (isValidElement && text.length > 0)
- self.text(text, true);
-
- if (isValidElement)
- self.end(value);
-
- tokenRegExp.lastIndex = index;
- continue;
- }
-
- // Push value on to stack
- if (!isShortEnded) {
- if (!attribsValue || attribsValue.indexOf('/') != attribsValue.length - 1)
- stack.push({name: value, valid: isValidElement});
- else if (isValidElement)
- self.end(value);
- }
- } else if (value = matches[1]) { // Comment
- self.comment(value);
- } else if (value = matches[2]) { // CDATA
- self.cdata(value);
- } else if (value = matches[3]) { // DOCTYPE
- self.doctype(value);
- } else if (value = matches[4]) { // PI
- self.pi(value, matches[5]);
- }
-
- index = matches.index + matches[0].length;
- }
-
- // Text
- if (index < html.length)
- self.text(decode(html.substr(index)));
-
- // Close any open elements
- for (i = stack.length - 1; i >= 0; i--) {
- value = stack[i];
-
- if (value.valid)
- self.end(value.name);
- }
- };
- }
-})(tinymce);
-
-(function(tinymce) {
- var whiteSpaceRegExp = /^[ \t\r\n]*$/, typeLookup = {
- '#text' : 3,
- '#comment' : 8,
- '#cdata' : 4,
- '#pi' : 7,
- '#doctype' : 10,
- '#document-fragment' : 11
- };
-
- // Walks the tree left/right
- function walk(node, root_node, prev) {
- var sibling, parent, startName = prev ? 'lastChild' : 'firstChild', siblingName = prev ? 'prev' : 'next';
-
- // Walk into nodes if it has a start
- if (node[startName])
- return node[startName];
-
- // Return the sibling if it has one
- if (node !== root_node) {
- sibling = node[siblingName];
-
- if (sibling)
- return sibling;
-
- // Walk up the parents to look for siblings
- for (parent = node.parent; parent && parent !== root_node; parent = parent.parent) {
- sibling = parent[siblingName];
-
- if (sibling)
- return sibling;
- }
- }
- };
-
- function Node(name, type) {
- this.name = name;
- this.type = type;
-
- if (type === 1) {
- this.attributes = [];
- this.attributes.map = {};
- }
- }
-
- tinymce.extend(Node.prototype, {
- replace : function(node) {
- var self = this;
-
- if (node.parent)
- node.remove();
-
- self.insert(node, self);
- self.remove();
-
- return self;
- },
-
- attr : function(name, value) {
- var self = this, attrs, i, undef;
-
- if (typeof name !== "string") {
- for (i in name)
- self.attr(i, name[i]);
-
- return self;
- }
-
- if (attrs = self.attributes) {
- if (value !== undef) {
- // Remove attribute
- if (value === null) {
- if (name in attrs.map) {
- delete attrs.map[name];
-
- i = attrs.length;
- while (i--) {
- if (attrs[i].name === name) {
- attrs = attrs.splice(i, 1);
- return self;
- }
- }
- }
-
- return self;
- }
-
- // Set attribute
- if (name in attrs.map) {
- // Set attribute
- i = attrs.length;
- while (i--) {
- if (attrs[i].name === name) {
- attrs[i].value = value;
- break;
- }
- }
- } else
- attrs.push({name: name, value: value});
-
- attrs.map[name] = value;
-
- return self;
- } else {
- return attrs.map[name];
- }
- }
- },
-
- clone : function() {
- var self = this, clone = new Node(self.name, self.type), i, l, selfAttrs, selfAttr, cloneAttrs;
-
- // Clone element attributes
- if (selfAttrs = self.attributes) {
- cloneAttrs = [];
- cloneAttrs.map = {};
-
- for (i = 0, l = selfAttrs.length; i < l; i++) {
- selfAttr = selfAttrs[i];
-
- // Clone everything except id
- if (selfAttr.name !== 'id') {
- cloneAttrs[cloneAttrs.length] = {name: selfAttr.name, value: selfAttr.value};
- cloneAttrs.map[selfAttr.name] = selfAttr.value;
- }
- }
-
- clone.attributes = cloneAttrs;
- }
-
- clone.value = self.value;
- clone.shortEnded = self.shortEnded;
-
- return clone;
- },
-
- wrap : function(wrapper) {
- var self = this;
-
- self.parent.insert(wrapper, self);
- wrapper.append(self);
-
- return self;
- },
-
- unwrap : function() {
- var self = this, node, next;
-
- for (node = self.firstChild; node; ) {
- next = node.next;
- self.insert(node, self, true);
- node = next;
- }
-
- self.remove();
- },
-
- remove : function() {
- var self = this, parent = self.parent, next = self.next, prev = self.prev;
-
- if (parent) {
- if (parent.firstChild === self) {
- parent.firstChild = next;
-
- if (next)
- next.prev = null;
- } else {
- prev.next = next;
- }
-
- if (parent.lastChild === self) {
- parent.lastChild = prev;
-
- if (prev)
- prev.next = null;
- } else {
- next.prev = prev;
- }
-
- self.parent = self.next = self.prev = null;
- }
-
- return self;
- },
-
- append : function(node) {
- var self = this, last;
-
- if (node.parent)
- node.remove();
-
- last = self.lastChild;
- if (last) {
- last.next = node;
- node.prev = last;
- self.lastChild = node;
- } else
- self.lastChild = self.firstChild = node;
-
- node.parent = self;
-
- return node;
- },
-
- insert : function(node, ref_node, before) {
- var parent;
-
- if (node.parent)
- node.remove();
-
- parent = ref_node.parent || this;
-
- if (before) {
- if (ref_node === parent.firstChild)
- parent.firstChild = node;
- else
- ref_node.prev.next = node;
-
- node.prev = ref_node.prev;
- node.next = ref_node;
- ref_node.prev = node;
- } else {
- if (ref_node === parent.lastChild)
- parent.lastChild = node;
- else
- ref_node.next.prev = node;
-
- node.next = ref_node.next;
- node.prev = ref_node;
- ref_node.next = node;
- }
-
- node.parent = parent;
-
- return node;
- },
-
- getAll : function(name) {
- var self = this, node, collection = [];
-
- for (node = self.firstChild; node; node = walk(node, self)) {
- if (node.name === name)
- collection.push(node);
- }
-
- return collection;
- },
-
- empty : function() {
- var self = this, nodes, i, node;
-
- // Remove all children
- if (self.firstChild) {
- nodes = [];
-
- // Collect the children
- for (node = self.firstChild; node; node = walk(node, self))
- nodes.push(node);
-
- // Remove the children
- i = nodes.length;
- while (i--) {
- node = nodes[i];
- node.parent = node.firstChild = node.lastChild = node.next = node.prev = null;
- }
- }
-
- self.firstChild = self.lastChild = null;
-
- return self;
- },
-
- isEmpty : function(elements) {
- var self = this, node = self.firstChild, i, name;
-
- if (node) {
- do {
- if (node.type === 1) {
- // Ignore bogus elements
- if (node.attributes.map['data-mce-bogus'])
- continue;
-
- // Keep empty elements like <img />
- if (elements[node.name])
- return false;
-
- // Keep elements with data attributes or name attribute like <a name="1"></a>
- i = node.attributes.length;
- while (i--) {
- name = node.attributes[i].name;
- if (name === "name" || name.indexOf('data-') === 0)
- return false;
- }
- }
-
- // Keep comments
- if (node.type === 8)
- return false;
-
- // Keep non whitespace text nodes
- if ((node.type === 3 && !whiteSpaceRegExp.test(node.value)))
- return false;
- } while (node = walk(node, self));
- }
-
- return true;
- },
-
- walk : function(prev) {
- return walk(this, null, prev);
- }
- });
-
- tinymce.extend(Node, {
- create : function(name, attrs) {
- var node, attrName;
-
- // Create node
- node = new Node(name, typeLookup[name] || 1);
-
- // Add attributes if needed
- if (attrs) {
- for (attrName in attrs)
- node.attr(attrName, attrs[attrName]);
- }
-
- return node;
- }
- });
-
- tinymce.html.Node = Node;
-})(tinymce);
-
-(function(tinymce) {
- var Node = tinymce.html.Node;
-
- tinymce.html.DomParser = function(settings, schema) {
- var self = this, nodeFilters = {}, attributeFilters = [], matchedNodes = {}, matchedAttributes = {};
-
- settings = settings || {};
- settings.validate = "validate" in settings ? settings.validate : true;
- settings.root_name = settings.root_name || 'body';
- self.schema = schema = schema || new tinymce.html.Schema();
-
- function fixInvalidChildren(nodes) {
- var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i,
- childClone, nonEmptyElements, nonSplitableElements, sibling, nextNode;
-
- nonSplitableElements = tinymce.makeMap('tr,td,th,tbody,thead,tfoot,table');
- nonEmptyElements = schema.getNonEmptyElements();
-
- for (ni = 0; ni < nodes.length; ni++) {
- node = nodes[ni];
-
- // Already removed
- if (!node.parent)
- continue;
-
- // Get list of all parent nodes until we find a valid parent to stick the child into
- parents = [node];
- for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) && !nonSplitableElements[parent.name]; parent = parent.parent)
- parents.push(parent);
-
- // Found a suitable parent
- if (parent && parents.length > 1) {
- // Reverse the array since it makes looping easier
- parents.reverse();
-
- // Clone the related parent and insert that after the moved node
- newParent = currentNode = self.filterNode(parents[0].clone());
-
- // Start cloning and moving children on the left side of the target node
- for (i = 0; i < parents.length - 1; i++) {
- if (schema.isValidChild(currentNode.name, parents[i].name)) {
- tempNode = self.filterNode(parents[i].clone());
- currentNode.append(tempNode);
- } else
- tempNode = currentNode;
-
- for (childNode = parents[i].firstChild; childNode && childNode != parents[i + 1]; ) {
- nextNode = childNode.next;
- tempNode.append(childNode);
- childNode = nextNode;
- }
-
- currentNode = tempNode;
- }
-
- if (!newParent.isEmpty(nonEmptyElements)) {
- parent.insert(newParent, parents[0], true);
- parent.insert(node, newParent);
- } else {
- parent.insert(node, parents[0], true);
- }
-
- // Check if the element is empty by looking through it's contents and special treatment for <p><br /></p>
- parent = parents[0];
- if (parent.isEmpty(nonEmptyElements) || parent.firstChild === parent.lastChild && parent.firstChild.name === 'br') {
- parent.empty().remove();
- }
- } else if (node.parent) {
- // If it's an LI try to find a UL/OL for it or wrap it
- if (node.name === 'li') {
- sibling = node.prev;
- if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {
- sibling.append(node);
- continue;
- }
-
- sibling = node.next;
- if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {
- sibling.insert(node, sibling.firstChild, true);
- continue;
- }
-
- node.wrap(self.filterNode(new Node('ul', 1)));
- continue;
- }
-
- // Try wrapping the element in a DIV
- if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) {
- node.wrap(self.filterNode(new Node('div', 1)));
- } else {
- // We failed wrapping it, then remove or unwrap it
- if (node.name === 'style' || node.name === 'script')
- node.empty().remove();
- else
- node.unwrap();
- }
- }
- }
- };
-
- self.filterNode = function(node) {
- var i, name, list;
-
- // Run element filters
- if (name in nodeFilters) {
- list = matchedNodes[name];
-
- if (list)
- list.push(node);
- else
- matchedNodes[name] = [node];
- }
-
- // Run attribute filters
- i = attributeFilters.length;
- while (i--) {
- name = attributeFilters[i].name;
-
- if (name in node.attributes.map) {
- list = matchedAttributes[name];
-
- if (list)
- list.push(node);
- else
- matchedAttributes[name] = [node];
- }
- }
-
- return node;
- };
-
- self.addNodeFilter = function(name, callback) {
- tinymce.each(tinymce.explode(name), function(name) {
- var list = nodeFilters[name];
-
- if (!list)
- nodeFilters[name] = list = [];
-
- list.push(callback);
- });
- };
-
- self.addAttributeFilter = function(name, callback) {
- tinymce.each(tinymce.explode(name), function(name) {
- var i;
-
- for (i = 0; i < attributeFilters.length; i++) {
- if (attributeFilters[i].name === name) {
- attributeFilters[i].callbacks.push(callback);
- return;
- }
- }
-
- attributeFilters.push({name: name, callbacks: [callback]});
- });
- };
-
- self.parse = function(html, args) {
- var parser, rootNode, node, nodes, i, l, fi, fl, list, name, validate,
- blockElements, startWhiteSpaceRegExp, invalidChildren = [], isInWhiteSpacePreservedElement,
- endWhiteSpaceRegExp, allWhiteSpaceRegExp, isAllWhiteSpaceRegExp, whiteSpaceElements, children, nonEmptyElements, rootBlockName;
-
- args = args || {};
- matchedNodes = {};
- matchedAttributes = {};
- blockElements = tinymce.extend(tinymce.makeMap('script,style,head,html,body,title,meta,param'), schema.getBlockElements());
- nonEmptyElements = schema.getNonEmptyElements();
- children = schema.children;
- validate = settings.validate;
- rootBlockName = "forced_root_block" in args ? args.forced_root_block : settings.forced_root_block;
-
- whiteSpaceElements = schema.getWhiteSpaceElements();
- startWhiteSpaceRegExp = /^[ \t\r\n]+/;
- endWhiteSpaceRegExp = /[ \t\r\n]+$/;
- allWhiteSpaceRegExp = /[ \t\r\n]+/g;
- isAllWhiteSpaceRegExp = /^[ \t\r\n]+$/;
-
- function addRootBlocks() {
- var node = rootNode.firstChild, next, rootBlockNode;
-
- while (node) {
- next = node.next;
-
- if (node.type == 3 || (node.type == 1 && node.name !== 'p' && !blockElements[node.name] && !node.attr('data-mce-type'))) {
- if (!rootBlockNode) {
- // Create a new root block element
- rootBlockNode = createNode(rootBlockName, 1);
- rootNode.insert(rootBlockNode, node);
- rootBlockNode.append(node);
- } else
- rootBlockNode.append(node);
- } else {
- rootBlockNode = null;
- }
-
- node = next;
- };
- };
-
- function createNode(name, type) {
- var node = new Node(name, type), list;
-
- if (name in nodeFilters) {
- list = matchedNodes[name];
-
- if (list)
- list.push(node);
- else
- matchedNodes[name] = [node];
- }
-
- return node;
- };
-
- function removeWhitespaceBefore(node) {
- var textNode, textVal, sibling;
-
- for (textNode = node.prev; textNode && textNode.type === 3; ) {
- textVal = textNode.value.replace(endWhiteSpaceRegExp, '');
-
- if (textVal.length > 0) {
- textNode.value = textVal;
- textNode = textNode.prev;
- } else {
- sibling = textNode.prev;
- textNode.remove();
- textNode = sibling;
- }
- }
- };
-
- parser = new tinymce.html.SaxParser({
- validate : validate,
- fix_self_closing : !validate, // Let the DOM parser handle <li> in <li> or <p> in <p> for better results
-
- cdata: function(text) {
- node.append(createNode('#cdata', 4)).value = text;
- },
-
- text: function(text, raw) {
- var textNode;
-
- // Trim all redundant whitespace on non white space elements
- if (!isInWhiteSpacePreservedElement) {
- text = text.replace(allWhiteSpaceRegExp, ' ');
-
- if (node.lastChild && blockElements[node.lastChild.name])
- text = text.replace(startWhiteSpaceRegExp, '');
- }
-
- // Do we need to create the node
- if (text.length !== 0) {
- textNode = createNode('#text', 3);
- textNode.raw = !!raw;
- node.append(textNode).value = text;
- }
- },
-
- comment: function(text) {
- node.append(createNode('#comment', 8)).value = text;
- },
-
- pi: function(name, text) {
- node.append(createNode(name, 7)).value = text;
- removeWhitespaceBefore(node);
- },
-
- doctype: function(text) {
- var newNode;
-
- newNode = node.append(createNode('#doctype', 10));
- newNode.value = text;
- removeWhitespaceBefore(node);
- },
-
- start: function(name, attrs, empty) {
- var newNode, attrFiltersLen, elementRule, textNode, attrName, text, sibling, parent;
-
- elementRule = validate ? schema.getElementRule(name) : {};
- if (elementRule) {
- newNode = createNode(elementRule.outputName || name, 1);
- newNode.attributes = attrs;
- newNode.shortEnded = empty;
-
- node.append(newNode);
-
- // Check if node is valid child of the parent node is the child is
- // unknown we don't collect it since it's probably a custom element
- parent = children[node.name];
- if (parent && children[newNode.name] && !parent[newNode.name])
- invalidChildren.push(newNode);
-
- attrFiltersLen = attributeFilters.length;
- while (attrFiltersLen--) {
- attrName = attributeFilters[attrFiltersLen].name;
-
- if (attrName in attrs.map) {
- list = matchedAttributes[attrName];
-
- if (list)
- list.push(newNode);
- else
- matchedAttributes[attrName] = [newNode];
- }
- }
-
- // Trim whitespace before block
- if (blockElements[name])
- removeWhitespaceBefore(newNode);
-
- // Change current node if the element wasn't empty i.e not <br /> or <img />
- if (!empty)
- node = newNode;
-
- // Check if we are inside a whitespace preserved element
- if (!isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {
- isInWhiteSpacePreservedElement = true;
- }
- }
- },
-
- end: function(name) {
- var textNode, elementRule, text, sibling, tempNode;
-
- elementRule = validate ? schema.getElementRule(name) : {};
- if (elementRule) {
- if (blockElements[name]) {
- if (!isInWhiteSpacePreservedElement) {
- // Trim whitespace of the first node in a block
- textNode = node.firstChild;
- if (textNode && textNode.type === 3) {
- text = textNode.value.replace(startWhiteSpaceRegExp, '');
-
- // Any characters left after trim or should we remove it
- if (text.length > 0) {
- textNode.value = text;
- textNode = textNode.next;
- } else {
- sibling = textNode.next;
- textNode.remove();
- textNode = sibling;
- }
-
- // Remove any pure whitespace siblings
- while (textNode && textNode.type === 3) {
- text = textNode.value;
- sibling = textNode.next;
-
- if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {
- textNode.remove();
- textNode = sibling;
- }
-
- textNode = sibling;
- }
- }
-
- // Trim whitespace of the last node in a block
- textNode = node.lastChild;
- if (textNode && textNode.type === 3) {
- text = textNode.value.replace(endWhiteSpaceRegExp, '');
-
- // Any characters left after trim or should we remove it
- if (text.length > 0) {
- textNode.value = text;
- textNode = textNode.prev;
- } else {
- sibling = textNode.prev;
- textNode.remove();
- textNode = sibling;
- }
-
- // Remove any pure whitespace siblings
- while (textNode && textNode.type === 3) {
- text = textNode.value;
- sibling = textNode.prev;
-
- if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {
- textNode.remove();
- textNode = sibling;
- }
-
- textNode = sibling;
- }
- }
- }
-
- // Trim start white space
- textNode = node.prev;
- if (textNode && textNode.type === 3) {
- text = textNode.value.replace(startWhiteSpaceRegExp, '');
-
- if (text.length > 0)
- textNode.value = text;
- else
- textNode.remove();
- }
- }
-
- // Check if we exited a whitespace preserved element
- if (isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {
- isInWhiteSpacePreservedElement = false;
- }
-
- // Handle empty nodes
- if (elementRule.removeEmpty || elementRule.paddEmpty) {
- if (node.isEmpty(nonEmptyElements)) {
- if (elementRule.paddEmpty)
- node.empty().append(new Node('#text', '3')).value = '\u00a0';
- else {
- // Leave nodes that have a name like <a name="name">
- if (!node.attributes.map.name) {
- tempNode = node.parent;
- node.empty().remove();
- node = tempNode;
- return;
- }
- }
- }
- }
-
- node = node.parent;
- }
- }
- }, schema);
-
- rootNode = node = new Node(args.context || settings.root_name, 11);
-
- parser.parse(html);
-
- // Fix invalid children or report invalid children in a contextual parsing
- if (validate && invalidChildren.length) {
- if (!args.context)
- fixInvalidChildren(invalidChildren);
- else
- args.invalid = true;
- }
-
- // Wrap nodes in the root into block elements if the root is body
- if (rootBlockName && rootNode.name == 'body')
- addRootBlocks();
-
- // Run filters only when the contents is valid
- if (!args.invalid) {
- // Run node filters
- for (name in matchedNodes) {
- list = nodeFilters[name];
- nodes = matchedNodes[name];
-
- // Remove already removed children
- fi = nodes.length;
- while (fi--) {
- if (!nodes[fi].parent)
- nodes.splice(fi, 1);
- }
-
- for (i = 0, l = list.length; i < l; i++)
- list[i](nodes, name, args);
- }
-
- // Run attribute filters
- for (i = 0, l = attributeFilters.length; i < l; i++) {
- list = attributeFilters[i];
-
- if (list.name in matchedAttributes) {
- nodes = matchedAttributes[list.name];
-
- // Remove already removed children
- fi = nodes.length;
- while (fi--) {
- if (!nodes[fi].parent)
- nodes.splice(fi, 1);
- }
-
- for (fi = 0, fl = list.callbacks.length; fi < fl; fi++)
- list.callbacks[fi](nodes, list.name, args);
- }
- }
- }
-
- return rootNode;
- };
-
- // Remove <br> at end of block elements Gecko and WebKit injects BR elements to
- // make it possible to place the caret inside empty blocks. This logic tries to remove
- // these elements and keep br elements that where intended to be there intact
- if (settings.remove_trailing_brs) {
- self.addNodeFilter('br', function(nodes, name) {
- var i, l = nodes.length, node, blockElements = tinymce.extend({}, schema.getBlockElements()),
- nonEmptyElements = schema.getNonEmptyElements(), parent, lastParent, prev, prevName;
-
- // Remove brs from body element as well
- blockElements.body = 1;
-
- // Must loop forwards since it will otherwise remove all brs in <p>a<br><br><br></p>
- for (i = 0; i < l; i++) {
- node = nodes[i];
- parent = node.parent;
-
- if (blockElements[node.parent.name] && node === parent.lastChild) {
- // Loop all nodes to the left of the current node and check for other BR elements
- // excluding bookmarks since they are invisible
- prev = node.prev;
- while (prev) {
- prevName = prev.name;
-
- // Ignore bookmarks
- if (prevName !== "span" || prev.attr('data-mce-type') !== 'bookmark') {
- // Found a non BR element
- if (prevName !== "br")
- break;
-
- // Found another br it's a <br><br> structure then don't remove anything
- if (prevName === 'br') {
- node = null;
- break;
- }
- }
-
- prev = prev.prev;
- }
-
- if (node) {
- node.remove();
-
- // Is the parent to be considered empty after we removed the BR
- if (parent.isEmpty(nonEmptyElements)) {
- elementRule = schema.getElementRule(parent.name);
-
- // Remove or padd the element depending on schema rule
- if (elementRule) {
- if (elementRule.removeEmpty)
- parent.remove();
- else if (elementRule.paddEmpty)
- parent.empty().append(new tinymce.html.Node('#text', 3)).value = '\u00a0';
- }
- }
- }
- } else {
- // Replaces BR elements inside inline elements like <p><b><i><br></i></b></p> so they become <p><b><i>&nbsp;</i></b></p>
- lastParent = node;
- while (parent.firstChild === lastParent && parent.lastChild === lastParent) {
- lastParent = parent;
-
- if (blockElements[parent.name]) {
- break;
- }
-
- parent = parent.parent;
- }
-
- if (lastParent === parent) {
- textNode = new tinymce.html.Node('#text', 3);
- textNode.value = '\u00a0';
- node.replace(textNode);
- }
- }
- }
- });
- }
-
- // Force anchor names closed, unless the setting "allow_html_in_named_anchor" is explicitly included.
- if (!settings.allow_html_in_named_anchor) {
- self.addAttributeFilter('name', function(nodes, name) {
- var i = nodes.length, sibling, prevSibling, parent, node;
-
- while (i--) {
- node = nodes[i];
- if (node.name === 'a' && node.firstChild) {
- parent = node.parent;
-
- // Move children after current node
- sibling = node.lastChild;
- do {
- prevSibling = sibling.prev;
- parent.insert(sibling, node);
- sibling = prevSibling;
- } while (sibling);
- }
- }
- });
- }
- }
-})(tinymce);
-
-tinymce.html.Writer = function(settings) {
- var html = [], indent, indentBefore, indentAfter, encode, htmlOutput;
-
- settings = settings || {};
- indent = settings.indent;
- indentBefore = tinymce.makeMap(settings.indent_before || '');
- indentAfter = tinymce.makeMap(settings.indent_after || '');
- encode = tinymce.html.Entities.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities);
- htmlOutput = settings.element_format == "html";
-
- return {
- start: function(name, attrs, empty) {
- var i, l, attr, value;
-
- if (indent && indentBefore[name] && html.length > 0) {
- value = html[html.length - 1];
-
- if (value.length > 0 && value !== '\n')
- html.push('\n');
- }
-
- html.push('<', name);
-
- if (attrs) {
- for (i = 0, l = attrs.length; i < l; i++) {
- attr = attrs[i];
- html.push(' ', attr.name, '="', encode(attr.value, true), '"');
- }
- }
-
- if (!empty || htmlOutput)
- html[html.length] = '>';
- else
- html[html.length] = ' />';
-
- if (empty && indent && indentAfter[name] && html.length > 0) {
- value = html[html.length - 1];
-
- if (value.length > 0 && value !== '\n')
- html.push('\n');
- }
- },
-
- end: function(name) {
- var value;
-
- /*if (indent && indentBefore[name] && html.length > 0) {
- value = html[html.length - 1];
-
- if (value.length > 0 && value !== '\n')
- html.push('\n');
- }*/
-
- html.push('</', name, '>');
-
- if (indent && indentAfter[name] && html.length > 0) {
- value = html[html.length - 1];
-
- if (value.length > 0 && value !== '\n')
- html.push('\n');
- }
- },
-
- text: function(text, raw) {
- if (text.length > 0)
- html[html.length] = raw ? text : encode(text);
- },
-
- cdata: function(text) {
- html.push('<![CDATA[', text, ']]>');
- },
-
- comment: function(text) {
- html.push('<!--', text, '-->');
- },
-
- pi: function(name, text) {
- if (text)
- html.push('<?', name, ' ', text, '?>');
- else
- html.push('<?', name, '?>');
-
- if (indent)
- html.push('\n');
- },
-
- doctype: function(text) {
- html.push('<!DOCTYPE', text, '>', indent ? '\n' : '');
- },
-
- reset: function() {
- html.length = 0;
- },
-
- getContent: function() {
- return html.join('').replace(/\n$/, '');
- }
- };
-};
-
-(function(tinymce) {
- tinymce.html.Serializer = function(settings, schema) {
- var self = this, writer = new tinymce.html.Writer(settings);
-
- settings = settings || {};
- settings.validate = "validate" in settings ? settings.validate : true;
-
- self.schema = schema = schema || new tinymce.html.Schema();
- self.writer = writer;
-
- self.serialize = function(node) {
- var handlers, validate;
-
- validate = settings.validate;
-
- handlers = {
- // #text
- 3: function(node, raw) {
- writer.text(node.value, node.raw);
- },
-
- // #comment
- 8: function(node) {
- writer.comment(node.value);
- },
-
- // Processing instruction
- 7: function(node) {
- writer.pi(node.name, node.value);
- },
-
- // Doctype
- 10: function(node) {
- writer.doctype(node.value);
- },
-
- // CDATA
- 4: function(node) {
- writer.cdata(node.value);
- },
-
- // Document fragment
- 11: function(node) {
- if ((node = node.firstChild)) {
- do {
- walk(node);
- } while (node = node.next);
- }
- }
- };
-
- writer.reset();
-
- function walk(node) {
- var handler = handlers[node.type], name, isEmpty, attrs, attrName, attrValue, sortedAttrs, i, l, elementRule;
-
- if (!handler) {
- name = node.name;
- isEmpty = node.shortEnded;
- attrs = node.attributes;
-
- // Sort attributes
- if (validate && attrs && attrs.length > 1) {
- sortedAttrs = [];
- sortedAttrs.map = {};
-
- elementRule = schema.getElementRule(node.name);
- for (i = 0, l = elementRule.attributesOrder.length; i < l; i++) {
- attrName = elementRule.attributesOrder[i];
-
- if (attrName in attrs.map) {
- attrValue = attrs.map[attrName];
- sortedAttrs.map[attrName] = attrValue;
- sortedAttrs.push({name: attrName, value: attrValue});
- }
- }
-
- for (i = 0, l = attrs.length; i < l; i++) {
- attrName = attrs[i].name;
-
- if (!(attrName in sortedAttrs.map)) {
- attrValue = attrs.map[attrName];
- sortedAttrs.map[attrName] = attrValue;
- sortedAttrs.push({name: attrName, value: attrValue});
- }
- }
-
- attrs = sortedAttrs;
- }
-
- writer.start(node.name, attrs, isEmpty);
-
- if (!isEmpty) {
- if ((node = node.firstChild)) {
- do {
- walk(node);
- } while (node = node.next);
- }
-
- writer.end(name);
- }
- } else
- handler(node);
- }
-
- // Serialize element and treat all non elements as fragments
- if (node.type == 1 && !settings.inner)
- walk(node);
- else
- handlers[11](node);
-
- return writer.getContent();
- };
- }
-})(tinymce);
-
-// JSLint defined globals
-/*global tinymce:false, window:false */
-
-tinymce.dom = {};
-
-(function(namespace, expando) {
- var w3cEventModel = !!document.addEventListener;
-
- function addEvent(target, name, callback, capture) {
- if (target.addEventListener) {
- target.addEventListener(name, callback, capture || false);
- } else if (target.attachEvent) {
- target.attachEvent('on' + name, callback);
- }
- }
-
- function removeEvent(target, name, callback, capture) {
- if (target.removeEventListener) {
- target.removeEventListener(name, callback, capture || false);
- } else if (target.detachEvent) {
- target.detachEvent('on' + name, callback);
- }
- }
-
- function fix(original_event, data) {
- var name, event = data || {};
-
- // Dummy function that gets replaced on the delegation state functions
- function returnFalse() {
- return false;
- }
-
- // Dummy function that gets replaced on the delegation state functions
- function returnTrue() {
- return true;
- }
-
- // Copy all properties from the original event
- for (name in original_event) {
- // layerX/layerY is deprecated in Chrome and produces a warning
- if (name !== "layerX" && name !== "layerY") {
- event[name] = original_event[name];
- }
- }
-
- // Normalize target IE uses srcElement
- if (!event.target) {
- event.target = event.srcElement || document;
- }
-
- // Add preventDefault method
- event.preventDefault = function() {
- event.isDefaultPrevented = returnTrue;
-
- // Execute preventDefault on the original event object
- if (original_event) {
- if (original_event.preventDefault) {
- original_event.preventDefault();
- } else {
- original_event.returnValue = false; // IE
- }
- }
- };
-
- // Add stopPropagation
- event.stopPropagation = function() {
- event.isPropagationStopped = returnTrue;
-
- // Execute stopPropagation on the original event object
- if (original_event) {
- if (original_event.stopPropagation) {
- original_event.stopPropagation();
- } else {
- original_event.cancelBubble = true; // IE
- }
- }
- };
-
- // Add stopImmediatePropagation
- event.stopImmediatePropagation = function() {
- event.isImmediatePropagationStopped = returnTrue;
- event.stopPropagation();
- };
-
- // Add event delegation states
- if (!event.isDefaultPrevented) {
- event.isDefaultPrevented = returnFalse;
- event.isPropagationStopped = returnFalse;
- event.isImmediatePropagationStopped = returnFalse;
- }
-
- return event;
- }
-
- function bindOnReady(win, callback, event_utils) {
- var doc = win.document, event = {type: 'ready'};
-
- // Gets called when the DOM is ready
- function readyHandler() {
- if (!event_utils.domLoaded) {
- event_utils.domLoaded = true;
- callback(event);
- }
- }
-
- // Use W3C method
- if (w3cEventModel) {
- addEvent(win, 'DOMContentLoaded', readyHandler);
- } else {
- // Use IE method
- addEvent(doc, "readystatechange", function() {
- if (doc.readyState === "complete") {
- removeEvent(doc, "readystatechange", arguments.callee);
- readyHandler();
- }
- });
-
- // Wait until we can scroll, when we can the DOM is initialized
- if (doc.documentElement.doScroll && win === win.top) {
- (function() {
- try {
- // If IE is used, use the trick by Diego Perini licensed under MIT by request to the author.
- // http://javascript.nwbox.com/IEContentLoaded/
- doc.documentElement.doScroll("left");
- } catch (ex) {
- setTimeout(arguments.callee, 0);
- return;
- }
-
- readyHandler();
- })();
- }
- }
-
- // Fallback if any of the above methods should fail for some odd reason
- addEvent(win, 'load', readyHandler);
- }
-
- function EventUtils(proxy) {
- var self = this, events = {}, count, isFocusBlurBound, hasFocusIn, hasMouseEnterLeave, mouseEnterLeave;
-
- hasMouseEnterLeave = "onmouseenter" in document.documentElement;
- hasFocusIn = "onfocusin" in document.documentElement;
- mouseEnterLeave = {mouseenter: 'mouseover', mouseleave: 'mouseout'};
- count = 1;
-
- // State if the DOMContentLoaded was executed or not
- self.domLoaded = false;
- self.events = events;
-
- function executeHandlers(evt, id) {
- var callbackList, i, l, callback;
-
- callbackList = events[id][evt.type];
- if (callbackList) {
- for (i = 0, l = callbackList.length; i < l; i++) {
- callback = callbackList[i];
-
- // Check if callback exists might be removed if a unbind is called inside the callback
- if (callback && callback.func.call(callback.scope, evt) === false) {
- evt.preventDefault();
- }
-
- // Should we stop propagation to immediate listeners
- if (evt.isImmediatePropagationStopped()) {
- return;
- }
- }
- }
- }
-
- self.bind = function(target, names, callback, scope) {
- var id, callbackList, i, name, fakeName, nativeHandler, capture, win = window;
-
- // Native event handler function patches the event and executes the callbacks for the expando
- function defaultNativeHandler(evt) {
- executeHandlers(fix(evt || win.event), id);
- }
-
- // Don't bind to text nodes or comments
- if (!target || target.nodeType === 3 || target.nodeType === 8) {
- return;
- }
-
- // Create or get events id for the target
- if (!target[expando]) {
- id = count++;
- target[expando] = id;
- events[id] = {};
- } else {
- id = target[expando];
-
- if (!events[id]) {
- events[id] = {};
- }
- }
-
- // Setup the specified scope or use the target as a default
- scope = scope || target;
-
- // Split names and bind each event, enables you to bind multiple events with one call
- names = names.split(' ');
- i = names.length;
- while (i--) {
- name = names[i];
- nativeHandler = defaultNativeHandler;
- fakeName = capture = false;
-
- // Use ready instead of DOMContentLoaded
- if (name === "DOMContentLoaded") {
- name = "ready";
- }
-
- // DOM is already ready
- if ((self.domLoaded || target.readyState == 'complete') && name === "ready") {
- self.domLoaded = true;
- callback.call(scope, fix({type: name}));
- continue;
- }
-
- // Handle mouseenter/mouseleaver
- if (!hasMouseEnterLeave) {
- fakeName = mouseEnterLeave[name];
-
- if (fakeName) {
- nativeHandler = function(evt) {
- var current, related;
-
- current = evt.currentTarget;
- related = evt.relatedTarget;
-
- // Check if related is inside the current target if it's not then the event should be ignored since it's a mouseover/mouseout inside the element
- if (related && current.contains) {
- // Use contains for performance
- related = current.contains(related);
- } else {
- while (related && related !== current) {
- related = related.parentNode;
- }
- }
-
- // Fire fake event
- if (!related) {
- evt = fix(evt || win.event);
- evt.type = evt.type === 'mouseout' ? 'mouseleave' : 'mouseenter';
- evt.target = current;
- executeHandlers(evt, id);
- }
- };
- }
- }
-
- // Fake bubbeling of focusin/focusout
- if (!hasFocusIn && (name === "focusin" || name === "focusout")) {
- capture = true;
- fakeName = name === "focusin" ? "focus" : "blur";
- nativeHandler = function(evt) {
- evt = fix(evt || win.event);
- evt.type = evt.type === 'focus' ? 'focusin' : 'focusout';
- executeHandlers(evt, id);
- };
- }
-
- // Setup callback list and bind native event
- callbackList = events[id][name];
- if (!callbackList) {
- events[id][name] = callbackList = [{func: callback, scope: scope}];
- callbackList.fakeName = fakeName;
- callbackList.capture = capture;
-
- // Add the nativeHandler to the callback list so that we can later unbind it
- callbackList.nativeHandler = nativeHandler;
- if (!w3cEventModel) {
- callbackList.proxyHandler = proxy(id);
- }
-
- // Check if the target has native events support
- if (name === "ready") {
- bindOnReady(target, nativeHandler, self);
- } else {
- addEvent(target, fakeName || name, w3cEventModel ? nativeHandler : callbackList.proxyHandler, capture);
- }
- } else {
- // If it already has an native handler then just push the callback
- callbackList.push({func: callback, scope: scope});
- }
- }
-
- target = callbackList = 0; // Clean memory for IE
-
- return callback;
- };
-
- self.unbind = function(target, names, callback) {
- var id, callbackList, i, ci, name, eventMap;
-
- // Don't bind to text nodes or comments
- if (!target || target.nodeType === 3 || target.nodeType === 8) {
- return self;
- }
-
- // Unbind event or events if the target has the expando
- id = target[expando];
- if (id) {
- eventMap = events[id];
-
- // Specific callback
- if (names) {
- names = names.split(' ');
- i = names.length;
- while (i--) {
- name = names[i];
- callbackList = eventMap[name];
-
- // Unbind the event if it exists in the map
- if (callbackList) {
- // Remove specified callback
- if (callback) {
- ci = callbackList.length;
- while (ci--) {
- if (callbackList[ci].func === callback) {
- callbackList.splice(ci, 1);
- }
- }
- }
-
- // Remove all callbacks if there isn't a specified callback or there is no callbacks left
- if (!callback || callbackList.length === 0) {
- delete eventMap[name];
- removeEvent(target, callbackList.fakeName || name, w3cEventModel ? callbackList.nativeHandler : callbackList.proxyHandler, callbackList.capture);
- }
- }
- }
- } else {
- // All events for a specific element
- for (name in eventMap) {
- callbackList = eventMap[name];
- removeEvent(target, callbackList.fakeName || name, w3cEventModel ? callbackList.nativeHandler : callbackList.proxyHandler, callbackList.capture);
- }
-
- eventMap = {};
- }
-
- // Check if object is empty, if it isn't then we won't remove the expando map
- for (name in eventMap) {
- return self;
- }
-
- // Delete event object
- delete events[id];
-
- // Remove expando from target
- try {
- // IE will fail here since it can't delete properties from window
- delete target[expando];
- } catch (ex) {
- // IE will set it to null
- target[expando] = null;
- }
- }
-
- return self;
- };
-
- self.fire = function(target, name, args) {
- var id, event;
-
- // Don't bind to text nodes or comments
- if (!target || target.nodeType === 3 || target.nodeType === 8) {
- return self;
- }
-
- // Build event object by patching the args
- event = fix(null, args);
- event.type = name;
-
- do {
- // Found an expando that means there is listeners to execute
- id = target[expando];
- if (id) {
- executeHandlers(event, id);
- }
-
- // Walk up the DOM
- target = target.parentNode || target.ownerDocument || target.defaultView || target.parentWindow;
- } while (target && !event.isPropagationStopped());
-
- return self;
- };
-
- self.clean = function(target) {
- var i, children, unbind = self.unbind;
-
- // Don't bind to text nodes or comments
- if (!target || target.nodeType === 3 || target.nodeType === 8) {
- return self;
- }
-
- // Unbind any element on the specificed target
- if (target[expando]) {
- unbind(target);
- }
-
- // Target doesn't have getElementsByTagName it's probably a window object then use it's document to find the children
- if (!target.getElementsByTagName) {
- target = target.document;
- }
-
- // Remove events from each child element
- if (target && target.getElementsByTagName) {
- unbind(target);
-
- children = target.getElementsByTagName('*');
- i = children.length;
- while (i--) {
- target = children[i];
-
- if (target[expando]) {
- unbind(target);
- }
- }
- }
-
- return self;
- };
-
- self.callNativeHandler = function(id, evt) {
- if (events) {
- events[id][evt.type].nativeHandler(evt);
- }
- };
-
- self.destory = function() {
- events = {};
- };
-
- // Legacy function calls
-
- self.add = function(target, events, func, scope) {
- // Old API supported direct ID assignment
- if (typeof(target) === "string") {
- target = document.getElementById(target);
- }
-
- // Old API supported multiple targets
- if (target && target instanceof Array) {
- var i = target;
-
- while (i--) {
- self.add(target[i], events, func, scope);
- }
-
- return;
- }
-
- // Old API called ready init
- if (events === "init") {
- events = "ready";
- }
-
- return self.bind(target, events instanceof Array ? events.join(' ') : events, func, scope);
- };
-
- self.remove = function(target, events, func, scope) {
- if (!target) {
- return self;
- }
-
- // Old API supported direct ID assignment
- if (typeof(target) === "string") {
- target = document.getElementById(target);
- }
-
- // Old API supported multiple targets
- if (target instanceof Array) {
- var i = target.length;
-
- while (i--) {
- self.remove(target[i], events, func, scope);
- }
-
- return self;
- }
-
- return self.unbind(target, events instanceof Array ? events.join(' ') : events, func);
- };
-
- self.clear = function(target) {
- // Old API supported direct ID assignment
- if (typeof(target) === "string") {
- target = document.getElementById(target);
- }
-
- return self.clean(target);
- };
-
- self.cancel = function(e) {
- if (e) {
- self.prevent(e);
- self.stop(e);
- }
-
- return false;
- };
-
- self.prevent = function(e) {
- e.preventDefault();
-
- return false;
- };
-
- self.stop = function(e) {
- e.stopPropagation();
-
- return false;
- };
- }
-
- namespace.EventUtils = EventUtils;
-
- namespace.Event = new EventUtils(function(id) {
- return function(evt) {
- tinymce.dom.Event.callNativeHandler(id, evt);
- };
- });
-
- // Bind ready event when tinymce script is loaded
- namespace.Event.bind(window, 'ready', function() {});
-
- namespace = 0;
-})(tinymce.dom, 'data-mce-expando'); // Namespace and expando
-
-tinymce.dom.TreeWalker = function(start_node, root_node) {
- var node = start_node;
-
- function findSibling(node, start_name, sibling_name, shallow) {
- var sibling, parent;
-
- if (node) {
- // Walk into nodes if it has a start
- if (!shallow && node[start_name])
- return node[start_name];
-
- // Return the sibling if it has one
- if (node != root_node) {
- sibling = node[sibling_name];
- if (sibling)
- return sibling;
-
- // Walk up the parents to look for siblings
- for (parent = node.parentNode; parent && parent != root_node; parent = parent.parentNode) {
- sibling = parent[sibling_name];
- if (sibling)
- return sibling;
- }
- }
- }
- };
-
- this.current = function() {
- return node;
- };
-
- this.next = function(shallow) {
- return (node = findSibling(node, 'firstChild', 'nextSibling', shallow));
- };
-
- this.prev = function(shallow) {
- return (node = findSibling(node, 'lastChild', 'previousSibling', shallow));
- };
-};
-
-(function(tinymce) {
- // Shorten names
- var each = tinymce.each,
- is = tinymce.is,
- isWebKit = tinymce.isWebKit,
- isIE = tinymce.isIE,
- Entities = tinymce.html.Entities,
- simpleSelectorRe = /^([a-z0-9],?)+$/i,
- whiteSpaceRegExp = /^[ \t\r\n]*$/;
-
- tinymce.create('tinymce.dom.DOMUtils', {
- doc : null,
- root : null,
- files : null,
- pixelStyles : /^(top|left|bottom|right|width|height|borderWidth)$/,
- props : {
- "for" : "htmlFor",
- "class" : "className",
- className : "className",
- checked : "checked",
- disabled : "disabled",
- maxlength : "maxLength",
- readonly : "readOnly",
- selected : "selected",
- value : "value",
- id : "id",
- name : "name",
- type : "type"
- },
-
- DOMUtils : function(d, s) {
- var t = this, globalStyle, name, blockElementsMap;
-
- t.doc = d;
- t.win = window;
- t.files = {};
- t.cssFlicker = false;
- t.counter = 0;
- t.stdMode = !tinymce.isIE || d.documentMode >= 8;
- t.boxModel = !tinymce.isIE || d.compatMode == "CSS1Compat" || t.stdMode;
- t.hasOuterHTML = "outerHTML" in d.createElement("a");
-
- t.settings = s = tinymce.extend({
- keep_values : false,
- hex_colors : 1
- }, s);
-
- t.schema = s.schema;
- t.styles = new tinymce.html.Styles({
- url_converter : s.url_converter,
- url_converter_scope : s.url_converter_scope
- }, s.schema);
-
- // Fix IE6SP2 flicker and check it failed for pre SP2
- if (tinymce.isIE6) {
- try {
- d.execCommand('BackgroundImageCache', false, true);
- } catch (e) {
- t.cssFlicker = true;
- }
- }
-
- t.fixDoc(d);
- t.events = s.ownEvents ? new tinymce.dom.EventUtils(s.proxy) : tinymce.dom.Event;
- tinymce.addUnload(t.destroy, t);
- blockElementsMap = s.schema ? s.schema.getBlockElements() : {};
-
- t.isBlock = function(node) {
- // This function is called in module pattern style since it might be executed with the wrong this scope
- var type = node.nodeType;
-
- // If it's a node then check the type and use the nodeName
- if (type)
- return !!(type === 1 && blockElementsMap[node.nodeName]);
-
- return !!blockElementsMap[node];
- };
- },
-
- fixDoc: function(doc) {
- var settings = this.settings, name;
-
- if (isIE && settings.schema) {
- // Add missing HTML 4/5 elements to IE
- ('abbr article aside audio canvas ' +
- 'details figcaption figure footer ' +
- 'header hgroup mark menu meter nav ' +
- 'output progress section summary ' +
- 'time video').replace(/\w+/g, function(name) {
- doc.createElement(name);
- });
-
- // Create all custom elements
- for (name in settings.schema.getCustomElements()) {
- doc.createElement(name);
- }
- }
- },
-
- clone: function(node, deep) {
- var self = this, clone, doc;
-
- // TODO: Add feature detection here in the future
- if (!isIE || node.nodeType !== 1 || deep) {
- return node.cloneNode(deep);
- }
-
- doc = self.doc;
-
- // Make a HTML5 safe shallow copy
- if (!deep) {
- clone = doc.createElement(node.nodeName);
-
- // Copy attribs
- each(self.getAttribs(node), function(attr) {
- self.setAttrib(clone, attr.nodeName, self.getAttrib(node, attr.nodeName));
- });
-
- return clone;
- }
-/*
- // Setup HTML5 patched document fragment
- if (!self.frag) {
- self.frag = doc.createDocumentFragment();
- self.fixDoc(self.frag);
- }
-
- // Make a deep copy by adding it to the document fragment then removing it this removed the :section
- clone = doc.createElement('div');
- self.frag.appendChild(clone);
- clone.innerHTML = node.outerHTML;
- self.frag.removeChild(clone);
-*/
- return clone.firstChild;
- },
-
- getRoot : function() {
- var t = this, s = t.settings;
-
- return (s && t.get(s.root_element)) || t.doc.body;
- },
-
- getViewPort : function(w) {
- var d, b;
-
- w = !w ? this.win : w;
- d = w.document;
- b = this.boxModel ? d.documentElement : d.body;
-
- // Returns viewport size excluding scrollbars
- return {
- x : w.pageXOffset || b.scrollLeft,
- y : w.pageYOffset || b.scrollTop,
- w : w.innerWidth || b.clientWidth,
- h : w.innerHeight || b.clientHeight
- };
- },
-
- getRect : function(e) {
- var p, t = this, sr;
-
- e = t.get(e);
- p = t.getPos(e);
- sr = t.getSize(e);
-
- return {
- x : p.x,
- y : p.y,
- w : sr.w,
- h : sr.h
- };
- },
-
- getSize : function(e) {
- var t = this, w, h;
-
- e = t.get(e);
- w = t.getStyle(e, 'width');
- h = t.getStyle(e, 'height');
-
- // Non pixel value, then force offset/clientWidth
- if (w.indexOf('px') === -1)
- w = 0;
-
- // Non pixel value, then force offset/clientWidth
- if (h.indexOf('px') === -1)
- h = 0;
-
- return {
- w : parseInt(w, 10) || e.offsetWidth || e.clientWidth,
- h : parseInt(h, 10) || e.offsetHeight || e.clientHeight
- };
- },
-
- getParent : function(n, f, r) {
- return this.getParents(n, f, r, false);
- },
-
- getParents : function(n, f, r, c) {
- var t = this, na, se = t.settings, o = [];
-
- n = t.get(n);
- c = c === undefined;
-
- if (se.strict_root)
- r = r || t.getRoot();
-
- // Wrap node name as func
- if (is(f, 'string')) {
- na = f;
-
- if (f === '*') {
- f = function(n) {return n.nodeType == 1;};
- } else {
- f = function(n) {
- return t.is(n, na);
- };
- }
- }
-
- while (n) {
- if (n == r || !n.nodeType || n.nodeType === 9)
- break;
-
- if (!f || f(n)) {
- if (c)
- o.push(n);
- else
- return n;
- }
-
- n = n.parentNode;
- }
-
- return c ? o : null;
- },
-
- get : function(e) {
- var n;
-
- if (e && this.doc && typeof(e) == 'string') {
- n = e;
- e = this.doc.getElementById(e);
-
- // IE and Opera returns meta elements when they match the specified input ID, but getElementsByName seems to do the trick
- if (e && e.id !== n)
- return this.doc.getElementsByName(n)[1];
- }
-
- return e;
- },
-
- getNext : function(node, selector) {
- return this._findSib(node, selector, 'nextSibling');
- },
-
- getPrev : function(node, selector) {
- return this._findSib(node, selector, 'previousSibling');
- },
-
-
- select : function(pa, s) {
- var t = this;
-
- return tinymce.dom.Sizzle(pa, t.get(s) || t.get(t.settings.root_element) || t.doc, []);
- },
-
- is : function(n, selector) {
- var i;
-
- // If it isn't an array then try to do some simple selectors instead of Sizzle for to boost performance
- if (n.length === undefined) {
- // Simple all selector
- if (selector === '*')
- return n.nodeType == 1;
-
- // Simple selector just elements
- if (simpleSelectorRe.test(selector)) {
- selector = selector.toLowerCase().split(/,/);
- n = n.nodeName.toLowerCase();
-
- for (i = selector.length - 1; i >= 0; i--) {
- if (selector[i] == n)
- return true;
- }
-
- return false;
- }
- }
-
- return tinymce.dom.Sizzle.matches(selector, n.nodeType ? [n] : n).length > 0;
- },
-
-
- add : function(p, n, a, h, c) {
- var t = this;
-
- return this.run(p, function(p) {
- var e, k;
-
- e = is(n, 'string') ? t.doc.createElement(n) : n;
- t.setAttribs(e, a);
-
- if (h) {
- if (h.nodeType)
- e.appendChild(h);
- else
- t.setHTML(e, h);
- }
-
- return !c ? p.appendChild(e) : e;
- });
- },
-
- create : function(n, a, h) {
- return this.add(this.doc.createElement(n), n, a, h, 1);
- },
-
- createHTML : function(n, a, h) {
- var o = '', t = this, k;
-
- o += '<' + n;
-
- for (k in a) {
- if (a.hasOwnProperty(k))
- o += ' ' + k + '="' + t.encode(a[k]) + '"';
- }
-
- // A call to tinymce.is doesn't work for some odd reason on IE9 possible bug inside their JS runtime
- if (typeof(h) != "undefined")
- return o + '>' + h + '</' + n + '>';
-
- return o + ' />';
- },
-
- remove : function(node, keep_children) {
- return this.run(node, function(node) {
- var child, parent = node.parentNode;
-
- if (!parent)
- return null;
-
- if (keep_children) {
- while (child = node.firstChild) {
- // IE 8 will crash if you don't remove completely empty text nodes
- if (!tinymce.isIE || child.nodeType !== 3 || child.nodeValue)
- parent.insertBefore(child, node);
- else
- node.removeChild(child);
- }
- }
-
- return parent.removeChild(node);
- });
- },
-
- setStyle : function(n, na, v) {
- var t = this;
-
- return t.run(n, function(e) {
- var s, i;
-
- s = e.style;
-
- // Camelcase it, if needed
- na = na.replace(/-(\D)/g, function(a, b){
- return b.toUpperCase();
- });
-
- // Default px suffix on these
- if (t.pixelStyles.test(na) && (tinymce.is(v, 'number') || /^[\-0-9\.]+$/.test(v)))
- v += 'px';
-
- switch (na) {
- case 'opacity':
- // IE specific opacity
- if (isIE) {
- s.filter = v === '' ? '' : "alpha(opacity=" + (v * 100) + ")";
-
- if (!n.currentStyle || !n.currentStyle.hasLayout)
- s.display = 'inline-block';
- }
-
- // Fix for older browsers
- s[na] = s['-moz-opacity'] = s['-khtml-opacity'] = v || '';
- break;
-
- case 'float':
- isIE ? s.styleFloat = v : s.cssFloat = v;
- break;
-
- default:
- s[na] = v || '';
- }
-
- // Force update of the style data
- if (t.settings.update_styles)
- t.setAttrib(e, 'data-mce-style');
- });
- },
-
- getStyle : function(n, na, c) {
- n = this.get(n);
-
- if (!n)
- return;
-
- // Gecko
- if (this.doc.defaultView && c) {
- // Remove camelcase
- na = na.replace(/[A-Z]/g, function(a){
- return '-' + a;
- });
-
- try {
- return this.doc.defaultView.getComputedStyle(n, null).getPropertyValue(na);
- } catch (ex) {
- // Old safari might fail
- return null;
- }
- }
-
- // Camelcase it, if needed
- na = na.replace(/-(\D)/g, function(a, b){
- return b.toUpperCase();
- });
-
- if (na == 'float')
- na = isIE ? 'styleFloat' : 'cssFloat';
-
- // IE & Opera
- if (n.currentStyle && c)
- return n.currentStyle[na];
-
- return n.style ? n.style[na] : undefined;
- },
-
- setStyles : function(e, o) {
- var t = this, s = t.settings, ol;
-
- ol = s.update_styles;
- s.update_styles = 0;
-
- each(o, function(v, n) {
- t.setStyle(e, n, v);
- });
-
- // Update style info
- s.update_styles = ol;
- if (s.update_styles)
- t.setAttrib(e, s.cssText);
- },
-
- removeAllAttribs: function(e) {
- return this.run(e, function(e) {
- var i, attrs = e.attributes;
- for (i = attrs.length - 1; i >= 0; i--) {
- e.removeAttributeNode(attrs.item(i));
- }
- });
- },
-
- setAttrib : function(e, n, v) {
- var t = this;
-
- // Whats the point
- if (!e || !n)
- return;
-
- // Strict XML mode
- if (t.settings.strict)
- n = n.toLowerCase();
-
- return this.run(e, function(e) {
- var s = t.settings;
- var originalValue = e.getAttribute(n);
- if (v !== null) {
- switch (n) {
- case "style":
- if (!is(v, 'string')) {
- each(v, function(v, n) {
- t.setStyle(e, n, v);
- });
-
- return;
- }
-
- // No mce_style for elements with these since they might get resized by the user
- if (s.keep_values) {
- if (v && !t._isRes(v))
- e.setAttribute('data-mce-style', v, 2);
- else
- e.removeAttribute('data-mce-style', 2);
- }
-
- e.style.cssText = v;
- break;
-
- case "class":
- e.className = v || ''; // Fix IE null bug
- break;
-
- case "src":
- case "href":
- if (s.keep_values) {
- if (s.url_converter)
- v = s.url_converter.call(s.url_converter_scope || t, v, n, e);
-
- t.setAttrib(e, 'data-mce-' + n, v, 2);
- }
-
- break;
-
- case "shape":
- e.setAttribute('data-mce-style', v);
- break;
- }
- }
- if (is(v) && v !== null && v.length !== 0)
- e.setAttribute(n, '' + v, 2);
- else
- e.removeAttribute(n, 2);
-
- // fire onChangeAttrib event for attributes that have changed
- if (tinyMCE.activeEditor && originalValue != v) {
- var ed = tinyMCE.activeEditor;
- ed.onSetAttrib.dispatch(ed, e, n, v);
- }
- });
- },
-
- setAttribs : function(e, o) {
- var t = this;
-
- return this.run(e, function(e) {
- each(o, function(v, n) {
- t.setAttrib(e, n, v);
- });
- });
- },
-
- getAttrib : function(e, n, dv) {
- var v, t = this, undef;
-
- e = t.get(e);
-
- if (!e || e.nodeType !== 1)
- return dv === undef ? false : dv;
-
- if (!is(dv))
- dv = '';
-
- // Try the mce variant for these
- if (/^(src|href|style|coords|shape)$/.test(n)) {
- v = e.getAttribute("data-mce-" + n);
-
- if (v)
- return v;
- }
-
- if (isIE && t.props[n]) {
- v = e[t.props[n]];
- v = v && v.nodeValue ? v.nodeValue : v;
- }
-
- if (!v)
- v = e.getAttribute(n, 2);
-
- // Check boolean attribs
- if (/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(n)) {
- if (e[t.props[n]] === true && v === '')
- return n;
-
- return v ? n : '';
- }
-
- // Inner input elements will override attributes on form elements
- if (e.nodeName === "FORM" && e.getAttributeNode(n))
- return e.getAttributeNode(n).nodeValue;
-
- if (n === 'style') {
- v = v || e.style.cssText;
-
- if (v) {
- v = t.serializeStyle(t.parseStyle(v), e.nodeName);
-
- if (t.settings.keep_values && !t._isRes(v))
- e.setAttribute('data-mce-style', v);
- }
- }
-
- // Remove Apple and WebKit stuff
- if (isWebKit && n === "class" && v)
- v = v.replace(/(apple|webkit)\-[a-z\-]+/gi, '');
-
- // Handle IE issues
- if (isIE) {
- switch (n) {
- case 'rowspan':
- case 'colspan':
- // IE returns 1 as default value
- if (v === 1)
- v = '';
-
- break;
-
- case 'size':
- // IE returns +0 as default value for size
- if (v === '+0' || v === 20 || v === 0)
- v = '';
-
- break;
-
- case 'width':
- case 'height':
- case 'vspace':
- case 'checked':
- case 'disabled':
- case 'readonly':
- if (v === 0)
- v = '';
-
- break;
-
- case 'hspace':
- // IE returns -1 as default value
- if (v === -1)
- v = '';
-
- break;
-
- case 'maxlength':
- case 'tabindex':
- // IE returns default value
- if (v === 32768 || v === 2147483647 || v === '32768')
- v = '';
-
- break;
-
- case 'multiple':
- case 'compact':
- case 'noshade':
- case 'nowrap':
- if (v === 65535)
- return n;
-
- return dv;
-
- case 'shape':
- v = v.toLowerCase();
- break;
-
- default:
- // IE has odd anonymous function for event attributes
- if (n.indexOf('on') === 0 && v)
- v = tinymce._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/, '$1', '' + v);
- }
- }
-
- return (v !== undef && v !== null && v !== '') ? '' + v : dv;
- },
-
- getPos : function(n, ro) {
- var t = this, x = 0, y = 0, e, d = t.doc, r;
-
- n = t.get(n);
- ro = ro || d.body;
-
- if (n) {
- // Use getBoundingClientRect if it exists since it's faster than looping offset nodes
- if (n.getBoundingClientRect) {
- n = n.getBoundingClientRect();
- e = t.boxModel ? d.documentElement : d.body;
-
- // Add scroll offsets from documentElement or body since IE with the wrong box model will use d.body and so do WebKit
- // Also remove the body/documentelement clientTop/clientLeft on IE 6, 7 since they offset the position
- x = n.left + (d.documentElement.scrollLeft || d.body.scrollLeft) - e.clientTop;
- y = n.top + (d.documentElement.scrollTop || d.body.scrollTop) - e.clientLeft;
-
- return {x : x, y : y};
- }
-
- r = n;
- while (r && r != ro && r.nodeType) {
- x += r.offsetLeft || 0;
- y += r.offsetTop || 0;
- r = r.offsetParent;
- }
-
- r = n.parentNode;
- while (r && r != ro && r.nodeType) {
- x -= r.scrollLeft || 0;
- y -= r.scrollTop || 0;
- r = r.parentNode;
- }
- }
-
- return {x : x, y : y};
- },
-
- parseStyle : function(st) {
- return this.styles.parse(st);
- },
-
- serializeStyle : function(o, name) {
- return this.styles.serialize(o, name);
- },
-
- loadCSS : function(u) {
- var t = this, d = t.doc, head;
-
- if (!u)
- u = '';
-
- head = d.getElementsByTagName('head')[0];
-
- each(u.split(','), function(u) {
- var link;
-
- if (t.files[u])
- return;
-
- t.files[u] = true;
- link = t.create('link', {rel : 'stylesheet', href : tinymce._addVer(u)});
-
- // IE 8 has a bug where dynamically loading stylesheets would produce a 1 item remaining bug
- // This fix seems to resolve that issue by realcing the document ones a stylesheet finishes loading
- // It's ugly but it seems to work fine.
- if (isIE && d.documentMode && d.recalc) {
- link.onload = function() {
- if (d.recalc)
- d.recalc();
-
- link.onload = null;
- };
- }
-
- head.appendChild(link);
- });
- },
-
- addClass : function(e, c) {
- return this.run(e, function(e) {
- var o;
-
- if (!c)
- return 0;
-
- if (this.hasClass(e, c))
- return e.className;
-
- o = this.removeClass(e, c);
-
- return e.className = (o != '' ? (o + ' ') : '') + c;
- });
- },
-
- removeClass : function(e, c) {
- var t = this, re;
-
- return t.run(e, function(e) {
- var v;
-
- if (t.hasClass(e, c)) {
- if (!re)
- re = new RegExp("(^|\\s+)" + c + "(\\s+|$)", "g");
-
- v = e.className.replace(re, ' ');
- v = tinymce.trim(v != ' ' ? v : '');
-
- e.className = v;
-
- // Empty class attr
- if (!v) {
- e.removeAttribute('class');
- e.removeAttribute('className');
- }
-
- return v;
- }
-
- return e.className;
- });
- },
-
- hasClass : function(n, c) {
- n = this.get(n);
-
- if (!n || !c)
- return false;
-
- return (' ' + n.className + ' ').indexOf(' ' + c + ' ') !== -1;
- },
-
- show : function(e) {
- return this.setStyle(e, 'display', 'block');
- },
-
- hide : function(e) {
- return this.setStyle(e, 'display', 'none');
- },
-
- isHidden : function(e) {
- e = this.get(e);
-
- return !e || e.style.display == 'none' || this.getStyle(e, 'display') == 'none';
- },
-
- uniqueId : function(p) {
- return (!p ? 'mce_' : p) + (this.counter++);
- },
-
- setHTML : function(element, html) {
- var self = this;
-
- return self.run(element, function(element) {
- if (isIE) {
- // Remove all child nodes, IE keeps empty text nodes in DOM
- while (element.firstChild)
- element.removeChild(element.firstChild);
-
- try {
- // IE will remove comments from the beginning
- // unless you padd the contents with something
- element.innerHTML = '<br />' + html;
- element.removeChild(element.firstChild);
- } catch (ex) {
- // IE sometimes produces an unknown runtime error on innerHTML if it's an block element within a block element for example a div inside a p
- // This seems to fix this problem
-
- // Create new div with HTML contents and a BR infront to keep comments
- element = self.create('div');
- element.innerHTML = '<br />' + html;
-
- // Add all children from div to target
- each (element.childNodes, function(node, i) {
- // Skip br element
- if (i)
- element.appendChild(node);
- });
- }
- } else
- element.innerHTML = html;
-
- return html;
- });
- },
-
- getOuterHTML : function(elm) {
- var doc, self = this;
-
- elm = self.get(elm);
-
- if (!elm)
- return null;
-
- if (elm.nodeType === 1 && self.hasOuterHTML)
- return elm.outerHTML;
-
- doc = (elm.ownerDocument || self.doc).createElement("body");
- doc.appendChild(elm.cloneNode(true));
-
- return doc.innerHTML;
- },
-
- setOuterHTML : function(e, h, d) {
- var t = this;
-
- function setHTML(e, h, d) {
- var n, tp;
-
- tp = d.createElement("body");
- tp.innerHTML = h;
-
- n = tp.lastChild;
- while (n) {
- t.insertAfter(n.cloneNode(true), e);
- n = n.previousSibling;
- }
-
- t.remove(e);
- };
-
- return this.run(e, function(e) {
- e = t.get(e);
-
- // Only set HTML on elements
- if (e.nodeType == 1) {
- d = d || e.ownerDocument || t.doc;
-
- if (isIE) {
- try {
- // Try outerHTML for IE it sometimes produces an unknown runtime error
- if (isIE && e.nodeType == 1)
- e.outerHTML = h;
- else
- setHTML(e, h, d);
- } catch (ex) {
- // Fix for unknown runtime error
- setHTML(e, h, d);
- }
- } else
- setHTML(e, h, d);
- }
- });
- },
-
- decode : Entities.decode,
-
- encode : Entities.encodeAllRaw,
-
- insertAfter : function(node, reference_node) {
- reference_node = this.get(reference_node);
-
- return this.run(node, function(node) {
- var parent, nextSibling;
-
- parent = reference_node.parentNode;
- nextSibling = reference_node.nextSibling;
-
- if (nextSibling)
- parent.insertBefore(node, nextSibling);
- else
- parent.appendChild(node);
-
- return node;
- });
- },
-
- replace : function(n, o, k) {
- var t = this;
-
- if (is(o, 'array'))
- n = n.cloneNode(true);
-
- return t.run(o, function(o) {
- if (k) {
- each(tinymce.grep(o.childNodes), function(c) {
- n.appendChild(c);
- });
- }
-
- return o.parentNode.replaceChild(n, o);
- });
- },
-
- rename : function(elm, name) {
- var t = this, newElm;
-
- if (elm.nodeName != name.toUpperCase()) {
- // Rename block element
- newElm = t.create(name);
-
- // Copy attribs to new block
- each(t.getAttribs(elm), function(attr_node) {
- t.setAttrib(newElm, attr_node.nodeName, t.getAttrib(elm, attr_node.nodeName));
- });
-
- // Replace block
- t.replace(newElm, elm, 1);
- }
-
- return newElm || elm;
- },
-
- findCommonAncestor : function(a, b) {
- var ps = a, pe;
-
- while (ps) {
- pe = b;
-
- while (pe && ps != pe)
- pe = pe.parentNode;
-
- if (ps == pe)
- break;
-
- ps = ps.parentNode;
- }
-
- if (!ps && a.ownerDocument)
- return a.ownerDocument.documentElement;
-
- return ps;
- },
-
- toHex : function(s) {
- var c = /^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s);
-
- function hex(s) {
- s = parseInt(s, 10).toString(16);
-
- return s.length > 1 ? s : '0' + s; // 0 -> 00
- };
-
- if (c) {
- s = '#' + hex(c[1]) + hex(c[2]) + hex(c[3]);
-
- return s;
- }
-
- return s;
- },
-
- getClasses : function() {
- var t = this, cl = [], i, lo = {}, f = t.settings.class_filter, ov;
-
- if (t.classes)
- return t.classes;
-
- function addClasses(s) {
- // IE style imports
- each(s.imports, function(r) {
- addClasses(r);
- });
-
- each(s.cssRules || s.rules, function(r) {
- // Real type or fake it on IE
- switch (r.type || 1) {
- // Rule
- case 1:
- if (r.selectorText) {
- each(r.selectorText.split(','), function(v) {
- v = v.replace(/^\s*|\s*$|^\s\./g, "");
-
- // Is internal or it doesn't contain a class
- if (/\.mce/.test(v) || !/\.[\w\-]+$/.test(v))
- return;
-
- // Remove everything but class name
- ov = v;
- v = tinymce._replace(/.*\.([a-z0-9_\-]+).*/i, '$1', v);
-
- // Filter classes
- if (f && !(v = f(v, ov)))
- return;
-
- if (!lo[v]) {
- cl.push({'class' : v});
- lo[v] = 1;
- }
- });
- }
- break;
-
- // Import
- case 3:
- addClasses(r.styleSheet);
- break;
- }
- });
- };
-
- try {
- each(t.doc.styleSheets, addClasses);
- } catch (ex) {
- // Ignore
- }
-
- if (cl.length > 0)
- t.classes = cl;
-
- return cl;
- },
-
- run : function(e, f, s) {
- var t = this, o;
-
- if (t.doc && typeof(e) === 'string')
- e = t.get(e);
-
- if (!e)
- return false;
-
- s = s || this;
- if (!e.nodeType && (e.length || e.length === 0)) {
- o = [];
-
- each(e, function(e, i) {
- if (e) {
- if (typeof(e) == 'string')
- e = t.doc.getElementById(e);
-
- o.push(f.call(s, e, i));
- }
- });
-
- return o;
- }
-
- return f.call(s, e);
- },
-
- getAttribs : function(n) {
- var o;
-
- n = this.get(n);
-
- if (!n)
- return [];
-
- if (isIE) {
- o = [];
-
- // Object will throw exception in IE
- if (n.nodeName == 'OBJECT')
- return n.attributes;
-
- // IE doesn't keep the selected attribute if you clone option elements
- if (n.nodeName === 'OPTION' && this.getAttrib(n, 'selected'))
- o.push({specified : 1, nodeName : 'selected'});
-
- // It's crazy that this is faster in IE but it's because it returns all attributes all the time
- n.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi, '').replace(/[\w:\-]+/gi, function(a) {
- o.push({specified : 1, nodeName : a});
- });
-
- return o;
- }
-
- return n.attributes;
- },
-
- isEmpty : function(node, elements) {
- var self = this, i, attributes, type, walker, name, brCount = 0;
-
- node = node.firstChild;
- if (node) {
- walker = new tinymce.dom.TreeWalker(node, node.parentNode);
- elements = elements || self.schema ? self.schema.getNonEmptyElements() : null;
-
- do {
- type = node.nodeType;
-
- if (type === 1) {
- // Ignore bogus elements
- if (node.getAttribute('data-mce-bogus'))
- continue;
-
- // Keep empty elements like <img />
- name = node.nodeName.toLowerCase();
- if (elements && elements[name]) {
- // Ignore single BR elements in blocks like <p><br /></p> or <p><span><br /></span></p>
- if (name === 'br') {
- brCount++;
- continue;
- }
-
- return false;
- }
-
- // Keep elements with data-bookmark attributes or name attribute like <a name="1"></a>
- attributes = self.getAttribs(node);
- i = node.attributes.length;
- while (i--) {
- name = node.attributes[i].nodeName;
- if (name === "name" || name === 'data-mce-bookmark')
- return false;
- }
- }
-
- // Keep comment nodes
- if (type == 8)
- return false;
-
- // Keep non whitespace text nodes
- if ((type === 3 && !whiteSpaceRegExp.test(node.nodeValue)))
- return false;
- } while (node = walker.next());
- }
-
- return brCount <= 1;
- },
-
- destroy : function(s) {
- var t = this;
-
- t.win = t.doc = t.root = t.events = t.frag = null;
-
- // Manual destroy then remove unload handler
- if (!s)
- tinymce.removeUnload(t.destroy);
- },
-
- createRng : function() {
- var d = this.doc;
-
- return d.createRange ? d.createRange() : new tinymce.dom.Range(this);
- },
-
- nodeIndex : function(node, normalized) {
- var idx = 0, lastNodeType, lastNode, nodeType;
-
- if (node) {
- for (lastNodeType = node.nodeType, node = node.previousSibling, lastNode = node; node; node = node.previousSibling) {
- nodeType = node.nodeType;
-
- // Normalize text nodes
- if (normalized && nodeType == 3) {
- if (nodeType == lastNodeType || !node.nodeValue.length)
- continue;
- }
- idx++;
- lastNodeType = nodeType;
- }
- }
-
- return idx;
- },
-
- split : function(pe, e, re) {
- var t = this, r = t.createRng(), bef, aft, pa;
-
- // W3C valid browsers tend to leave empty nodes to the left/right side of the contents, this makes sense
- // but we don't want that in our code since it serves no purpose for the end user
- // For example if this is chopped:
- // <p>text 1<span><b>CHOP</b></span>text 2</p>
- // would produce:
- // <p>text 1<span></span></p><b>CHOP</b><p><span></span>text 2</p>
- // this function will then trim of empty edges and produce:
- // <p>text 1</p><b>CHOP</b><p>text 2</p>
- function trim(node) {
- var i, children = node.childNodes, type = node.nodeType;
-
- function surroundedBySpans(node) {
- var previousIsSpan = node.previousSibling && node.previousSibling.nodeName == 'SPAN';
- var nextIsSpan = node.nextSibling && node.nextSibling.nodeName == 'SPAN';
- return previousIsSpan && nextIsSpan;
- }
-
- if (type == 1 && node.getAttribute('data-mce-type') == 'bookmark')
- return;
-
- for (i = children.length - 1; i >= 0; i--)
- trim(children[i]);
-
- if (type != 9) {
- // Keep non whitespace text nodes
- if (type == 3 && node.nodeValue.length > 0) {
- // If parent element isn't a block or there isn't any useful contents for example "<p> </p>"
- // Also keep text nodes with only spaces if surrounded by spans.
- // eg. "<p><span>a</span> <span>b</span></p>" should keep space between a and b
- var trimmedLength = tinymce.trim(node.nodeValue).length;
- if (!t.isBlock(node.parentNode) || trimmedLength > 0 || trimmedLength === 0 && surroundedBySpans(node))
- return;
- } else if (type == 1) {
- // If the only child is a bookmark then move it up
- children = node.childNodes;
- if (children.length == 1 && children[0] && children[0].nodeType == 1 && children[0].getAttribute('data-mce-type') == 'bookmark')
- node.parentNode.insertBefore(children[0], node);
-
- // Keep non empty elements or img, hr etc
- if (children.length || /^(br|hr|input|img)$/i.test(node.nodeName))
- return;
- }
-
- t.remove(node);
- }
-
- return node;
- };
-
- if (pe && e) {
- // Get before chunk
- r.setStart(pe.parentNode, t.nodeIndex(pe));
- r.setEnd(e.parentNode, t.nodeIndex(e));
- bef = r.extractContents();
-
- // Get after chunk
- r = t.createRng();
- r.setStart(e.parentNode, t.nodeIndex(e) + 1);
- r.setEnd(pe.parentNode, t.nodeIndex(pe) + 1);
- aft = r.extractContents();
-
- // Insert before chunk
- pa = pe.parentNode;
- pa.insertBefore(trim(bef), pe);
-
- // Insert middle chunk
- if (re)
- pa.replaceChild(re, e);
- else
- pa.insertBefore(e, pe);
-
- // Insert after chunk
- pa.insertBefore(trim(aft), pe);
- t.remove(pe);
-
- return re || e;
- }
- },
-
- bind : function(target, name, func, scope) {
- return this.events.add(target, name, func, scope || this);
- },
-
- unbind : function(target, name, func) {
- return this.events.remove(target, name, func);
- },
-
- fire : function(target, name, evt) {
- return this.events.fire(target, name, evt);
- },
-
- // Returns the content editable state of a node
- getContentEditable: function(node) {
- var contentEditable;
-
- // Check type
- if (node.nodeType != 1) {
- return null;
- }
-
- // Check for fake content editable
- contentEditable = node.getAttribute("data-mce-contenteditable");
- if (contentEditable && contentEditable !== "inherit") {
- return contentEditable;
- }
-
- // Check for real content editable
- return node.contentEditable !== "inherit" ? node.contentEditable : null;
- },
-
-
- _findSib : function(node, selector, name) {
- var t = this, f = selector;
-
- if (node) {
- // If expression make a function of it using is
- if (is(f, 'string')) {
- f = function(node) {
- return t.is(node, selector);
- };
- }
-
- // Loop all siblings
- for (node = node[name]; node; node = node[name]) {
- if (f(node))
- return node;
- }
- }
-
- return null;
- },
-
- _isRes : function(c) {
- // Is live resizble element
- return /^(top|left|bottom|right|width|height)/i.test(c) || /;\s*(top|left|bottom|right|width|height)/i.test(c);
- }
-
- /*
- walk : function(n, f, s) {
- var d = this.doc, w;
-
- if (d.createTreeWalker) {
- w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
-
- while ((n = w.nextNode()) != null)
- f.call(s || this, n);
- } else
- tinymce.walk(n, f, 'childNodes', s);
- }
- */
-
- /*
- toRGB : function(s) {
- var c = /^\s*?#([0-9A-F]{2})([0-9A-F]{1,2})([0-9A-F]{2})?\s*?$/.exec(s);
-
- if (c) {
- // #FFF -> #FFFFFF
- if (!is(c[3]))
- c[3] = c[2] = c[1];
-
- return "rgb(" + parseInt(c[1], 16) + "," + parseInt(c[2], 16) + "," + parseInt(c[3], 16) + ")";
- }
-
- return s;
- }
- */
- });
-
- tinymce.DOM = new tinymce.dom.DOMUtils(document, {process_html : 0});
-})(tinymce);
-
-(function(ns) {
- // Range constructor
- function Range(dom) {
- var t = this,
- doc = dom.doc,
- EXTRACT = 0,
- CLONE = 1,
- DELETE = 2,
- TRUE = true,
- FALSE = false,
- START_OFFSET = 'startOffset',
- START_CONTAINER = 'startContainer',
- END_CONTAINER = 'endContainer',
- END_OFFSET = 'endOffset',
- extend = tinymce.extend,
- nodeIndex = dom.nodeIndex;
-
- extend(t, {
- // Inital states
- startContainer : doc,
- startOffset : 0,
- endContainer : doc,
- endOffset : 0,
- collapsed : TRUE,
- commonAncestorContainer : doc,
-
- // Range constants
- START_TO_START : 0,
- START_TO_END : 1,
- END_TO_END : 2,
- END_TO_START : 3,
-
- // Public methods
- setStart : setStart,
- setEnd : setEnd,
- setStartBefore : setStartBefore,
- setStartAfter : setStartAfter,
- setEndBefore : setEndBefore,
- setEndAfter : setEndAfter,
- collapse : collapse,
- selectNode : selectNode,
- selectNodeContents : selectNodeContents,
- compareBoundaryPoints : compareBoundaryPoints,
- deleteContents : deleteContents,
- extractContents : extractContents,
- cloneContents : cloneContents,
- insertNode : insertNode,
- surroundContents : surroundContents,
- cloneRange : cloneRange
- });
-
- function createDocumentFragment() {
- return doc.createDocumentFragment();
- };
-
- function setStart(n, o) {
- _setEndPoint(TRUE, n, o);
- };
-
- function setEnd(n, o) {
- _setEndPoint(FALSE, n, o);
- };
-
- function setStartBefore(n) {
- setStart(n.parentNode, nodeIndex(n));
- };
-
- function setStartAfter(n) {
- setStart(n.parentNode, nodeIndex(n) + 1);
- };
-
- function setEndBefore(n) {
- setEnd(n.parentNode, nodeIndex(n));
- };
-
- function setEndAfter(n) {
- setEnd(n.parentNode, nodeIndex(n) + 1);
- };
-
- function collapse(ts) {
- if (ts) {
- t[END_CONTAINER] = t[START_CONTAINER];
- t[END_OFFSET] = t[START_OFFSET];
- } else {
- t[START_CONTAINER] = t[END_CONTAINER];
- t[START_OFFSET] = t[END_OFFSET];
- }
-
- t.collapsed = TRUE;
- };
-
- function selectNode(n) {
- setStartBefore(n);
- setEndAfter(n);
- };
-
- function selectNodeContents(n) {
- setStart(n, 0);
- setEnd(n, n.nodeType === 1 ? n.childNodes.length : n.nodeValue.length);
- };
-
- function compareBoundaryPoints(h, r) {
- var sc = t[START_CONTAINER], so = t[START_OFFSET], ec = t[END_CONTAINER], eo = t[END_OFFSET],
- rsc = r.startContainer, rso = r.startOffset, rec = r.endContainer, reo = r.endOffset;
-
- // Check START_TO_START
- if (h === 0)
- return _compareBoundaryPoints(sc, so, rsc, rso);
-
- // Check START_TO_END
- if (h === 1)
- return _compareBoundaryPoints(ec, eo, rsc, rso);
-
- // Check END_TO_END
- if (h === 2)
- return _compareBoundaryPoints(ec, eo, rec, reo);
-
- // Check END_TO_START
- if (h === 3)
- return _compareBoundaryPoints(sc, so, rec, reo);
- };
-
- function deleteContents() {
- _traverse(DELETE);
- };
-
- function extractContents() {
- return _traverse(EXTRACT);
- };
-
- function cloneContents() {
- return _traverse(CLONE);
- };
-
- function insertNode(n) {
- var startContainer = this[START_CONTAINER],
- startOffset = this[START_OFFSET], nn, o;
-
- // Node is TEXT_NODE or CDATA
- if ((startContainer.nodeType === 3 || startContainer.nodeType === 4) && startContainer.nodeValue) {
- if (!startOffset) {
- // At the start of text
- startContainer.parentNode.insertBefore(n, startContainer);
- } else if (startOffset >= startContainer.nodeValue.length) {
- // At the end of text
- dom.insertAfter(n, startContainer);
- } else {
- // Middle, need to split
- nn = startContainer.splitText(startOffset);
- startContainer.parentNode.insertBefore(n, nn);
- }
- } else {
- // Insert element node
- if (startContainer.childNodes.length > 0)
- o = startContainer.childNodes[startOffset];
-
- if (o)
- startContainer.insertBefore(n, o);
- else
- startContainer.appendChild(n);
- }
- };
-
- function surroundContents(n) {
- var f = t.extractContents();
-
- t.insertNode(n);
- n.appendChild(f);
- t.selectNode(n);
- };
-
- function cloneRange() {
- return extend(new Range(dom), {
- startContainer : t[START_CONTAINER],
- startOffset : t[START_OFFSET],
- endContainer : t[END_CONTAINER],
- endOffset : t[END_OFFSET],
- collapsed : t.collapsed,
- commonAncestorContainer : t.commonAncestorContainer
- });
- };
-
- // Private methods
-
- function _getSelectedNode(container, offset) {
- var child;
-
- if (container.nodeType == 3 /* TEXT_NODE */)
- return container;
-
- if (offset < 0)
- return container;
-
- child = container.firstChild;
- while (child && offset > 0) {
- --offset;
- child = child.nextSibling;
- }
-
- if (child)
- return child;
-
- return container;
- };
-
- function _isCollapsed() {
- return (t[START_CONTAINER] == t[END_CONTAINER] && t[START_OFFSET] == t[END_OFFSET]);
- };
-
- function _compareBoundaryPoints(containerA, offsetA, containerB, offsetB) {
- var c, offsetC, n, cmnRoot, childA, childB;
-
- // In the first case the boundary-points have the same container. A is before B
- // if its offset is less than the offset of B, A is equal to B if its offset is
- // equal to the offset of B, and A is after B if its offset is greater than the
- // offset of B.
- if (containerA == containerB) {
- if (offsetA == offsetB)
- return 0; // equal
-
- if (offsetA < offsetB)
- return -1; // before
-
- return 1; // after
- }
-
- // In the second case a child node C of the container of A is an ancestor
- // container of B. In this case, A is before B if the offset of A is less than or
- // equal to the index of the child node C and A is after B otherwise.
- c = containerB;
- while (c && c.parentNode != containerA)
- c = c.parentNode;
-
- if (c) {
- offsetC = 0;
- n = containerA.firstChild;
-
- while (n != c && offsetC < offsetA) {
- offsetC++;
- n = n.nextSibling;
- }
-
- if (offsetA <= offsetC)
- return -1; // before
-
- return 1; // after
- }
-
- // In the third case a child node C of the container of B is an ancestor container
- // of A. In this case, A is before B if the index of the child node C is less than
- // the offset of B and A is after B otherwise.
- c = containerA;
- while (c && c.parentNode != containerB) {
- c = c.parentNode;
- }
-
- if (c) {
- offsetC = 0;
- n = containerB.firstChild;
-
- while (n != c && offsetC < offsetB) {
- offsetC++;
- n = n.nextSibling;
- }
-
- if (offsetC < offsetB)
- return -1; // before
-
- return 1; // after
- }
-
- // In the fourth case, none of three other cases hold: the containers of A and B
- // are siblings or descendants of sibling nodes. In this case, A is before B if
- // the container of A is before the container of B in a pre-order traversal of the
- // Ranges' context tree and A is after B otherwise.
- cmnRoot = dom.findCommonAncestor(containerA, containerB);
- childA = containerA;
-
- while (childA && childA.parentNode != cmnRoot)
- childA = childA.parentNode;
-
- if (!childA)
- childA = cmnRoot;
-
- childB = containerB;
- while (childB && childB.parentNode != cmnRoot)
- childB = childB.parentNode;
-
- if (!childB)
- childB = cmnRoot;
-
- if (childA == childB)
- return 0; // equal
-
- n = cmnRoot.firstChild;
- while (n) {
- if (n == childA)
- return -1; // before
-
- if (n == childB)
- return 1; // after
-
- n = n.nextSibling;
- }
- };
-
- function _setEndPoint(st, n, o) {
- var ec, sc;
-
- if (st) {
- t[START_CONTAINER] = n;
- t[START_OFFSET] = o;
- } else {
- t[END_CONTAINER] = n;
- t[END_OFFSET] = o;
- }
-
- // If one boundary-point of a Range is set to have a root container
- // other than the current one for the Range, the Range is collapsed to
- // the new position. This enforces the restriction that both boundary-
- // points of a Range must have the same root container.
- ec = t[END_CONTAINER];
- while (ec.parentNode)
- ec = ec.parentNode;
-
- sc = t[START_CONTAINER];
- while (sc.parentNode)
- sc = sc.parentNode;
-
- if (sc == ec) {
- // The start position of a Range is guaranteed to never be after the
- // end position. To enforce this restriction, if the start is set to
- // be at a position after the end, the Range is collapsed to that
- // position.
- if (_compareBoundaryPoints(t[START_CONTAINER], t[START_OFFSET], t[END_CONTAINER], t[END_OFFSET]) > 0)
- t.collapse(st);
- } else
- t.collapse(st);
-
- t.collapsed = _isCollapsed();
- t.commonAncestorContainer = dom.findCommonAncestor(t[START_CONTAINER], t[END_CONTAINER]);
- };
-
- function _traverse(how) {
- var c, endContainerDepth = 0, startContainerDepth = 0, p, depthDiff, startNode, endNode, sp, ep;
-
- if (t[START_CONTAINER] == t[END_CONTAINER])
- return _traverseSameContainer(how);
-
- for (c = t[END_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) {
- if (p == t[START_CONTAINER])
- return _traverseCommonStartContainer(c, how);
-
- ++endContainerDepth;
- }
-
- for (c = t[START_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) {
- if (p == t[END_CONTAINER])
- return _traverseCommonEndContainer(c, how);
-
- ++startContainerDepth;
- }
-
- depthDiff = startContainerDepth - endContainerDepth;
-
- startNode = t[START_CONTAINER];
- while (depthDiff > 0) {
- startNode = startNode.parentNode;
- depthDiff--;
- }
-
- endNode = t[END_CONTAINER];
- while (depthDiff < 0) {
- endNode = endNode.parentNode;
- depthDiff++;
- }
-
- // ascend the ancestor hierarchy until we have a common parent.
- for (sp = startNode.parentNode, ep = endNode.parentNode; sp != ep; sp = sp.parentNode, ep = ep.parentNode) {
- startNode = sp;
- endNode = ep;
- }
-
- return _traverseCommonAncestors(startNode, endNode, how);
- };
-
- function _traverseSameContainer(how) {
- var frag, s, sub, n, cnt, sibling, xferNode, start, len;
-
- if (how != DELETE)
- frag = createDocumentFragment();
-
- // If selection is empty, just return the fragment
- if (t[START_OFFSET] == t[END_OFFSET])
- return frag;
-
- // Text node needs special case handling
- if (t[START_CONTAINER].nodeType == 3 /* TEXT_NODE */) {
- // get the substring
- s = t[START_CONTAINER].nodeValue;
- sub = s.substring(t[START_OFFSET], t[END_OFFSET]);
-
- // set the original text node to its new value
- if (how != CLONE) {
- n = t[START_CONTAINER];
- start = t[START_OFFSET];
- len = t[END_OFFSET] - t[START_OFFSET];
-
- if (start === 0 && len >= n.nodeValue.length - 1) {
- n.parentNode.removeChild(n);
- } else {
- n.deleteData(start, len);
- }
-
- // Nothing is partially selected, so collapse to start point
- t.collapse(TRUE);
- }
-
- if (how == DELETE)
- return;
-
- if (sub.length > 0) {
- frag.appendChild(doc.createTextNode(sub));
- }
-
- return frag;
- }
-
- // Copy nodes between the start/end offsets.
- n = _getSelectedNode(t[START_CONTAINER], t[START_OFFSET]);
- cnt = t[END_OFFSET] - t[START_OFFSET];
-
- while (n && cnt > 0) {
- sibling = n.nextSibling;
- xferNode = _traverseFullySelected(n, how);
-
- if (frag)
- frag.appendChild( xferNode );
-
- --cnt;
- n = sibling;
- }
-
- // Nothing is partially selected, so collapse to start point
- if (how != CLONE)
- t.collapse(TRUE);
-
- return frag;
- };
-
- function _traverseCommonStartContainer(endAncestor, how) {
- var frag, n, endIdx, cnt, sibling, xferNode;
-
- if (how != DELETE)
- frag = createDocumentFragment();
-
- n = _traverseRightBoundary(endAncestor, how);
-
- if (frag)
- frag.appendChild(n);
-
- endIdx = nodeIndex(endAncestor);
- cnt = endIdx - t[START_OFFSET];
-
- if (cnt <= 0) {
- // Collapse to just before the endAncestor, which
- // is partially selected.
- if (how != CLONE) {
- t.setEndBefore(endAncestor);
- t.collapse(FALSE);
- }
-
- return frag;
- }
-
- n = endAncestor.previousSibling;
- while (cnt > 0) {
- sibling = n.previousSibling;
- xferNode = _traverseFullySelected(n, how);
-
- if (frag)
- frag.insertBefore(xferNode, frag.firstChild);
-
- --cnt;
- n = sibling;
- }
-
- // Collapse to just before the endAncestor, which
- // is partially selected.
- if (how != CLONE) {
- t.setEndBefore(endAncestor);
- t.collapse(FALSE);
- }
-
- return frag;
- };
-
- function _traverseCommonEndContainer(startAncestor, how) {
- var frag, startIdx, n, cnt, sibling, xferNode;
-
- if (how != DELETE)
- frag = createDocumentFragment();
-
- n = _traverseLeftBoundary(startAncestor, how);
- if (frag)
- frag.appendChild(n);
-
- startIdx = nodeIndex(startAncestor);
- ++startIdx; // Because we already traversed it
-
- cnt = t[END_OFFSET] - startIdx;
- n = startAncestor.nextSibling;
- while (n && cnt > 0) {
- sibling = n.nextSibling;
- xferNode = _traverseFullySelected(n, how);
-
- if (frag)
- frag.appendChild(xferNode);
-
- --cnt;
- n = sibling;
- }
-
- if (how != CLONE) {
- t.setStartAfter(startAncestor);
- t.collapse(TRUE);
- }
-
- return frag;
- };
-
- function _traverseCommonAncestors(startAncestor, endAncestor, how) {
- var n, frag, commonParent, startOffset, endOffset, cnt, sibling, nextSibling;
-
- if (how != DELETE)
- frag = createDocumentFragment();
-
- n = _traverseLeftBoundary(startAncestor, how);
- if (frag)
- frag.appendChild(n);
-
- commonParent = startAncestor.parentNode;
- startOffset = nodeIndex(startAncestor);
- endOffset = nodeIndex(endAncestor);
- ++startOffset;
-
- cnt = endOffset - startOffset;
- sibling = startAncestor.nextSibling;
-
- while (cnt > 0) {
- nextSibling = sibling.nextSibling;
- n = _traverseFullySelected(sibling, how);
-
- if (frag)
- frag.appendChild(n);
-
- sibling = nextSibling;
- --cnt;
- }
-
- n = _traverseRightBoundary(endAncestor, how);
-
- if (frag)
- frag.appendChild(n);
-
- if (how != CLONE) {
- t.setStartAfter(startAncestor);
- t.collapse(TRUE);
- }
-
- return frag;
- };
-
- function _traverseRightBoundary(root, how) {
- var next = _getSelectedNode(t[END_CONTAINER], t[END_OFFSET] - 1), parent, clonedParent, prevSibling, clonedChild, clonedGrandParent, isFullySelected = next != t[END_CONTAINER];
-
- if (next == root)
- return _traverseNode(next, isFullySelected, FALSE, how);
-
- parent = next.parentNode;
- clonedParent = _traverseNode(parent, FALSE, FALSE, how);
-
- while (parent) {
- while (next) {
- prevSibling = next.previousSibling;
- clonedChild = _traverseNode(next, isFullySelected, FALSE, how);
-
- if (how != DELETE)
- clonedParent.insertBefore(clonedChild, clonedParent.firstChild);
-
- isFullySelected = TRUE;
- next = prevSibling;
- }
-
- if (parent == root)
- return clonedParent;
-
- next = parent.previousSibling;
- parent = parent.parentNode;
-
- clonedGrandParent = _traverseNode(parent, FALSE, FALSE, how);
-
- if (how != DELETE)
- clonedGrandParent.appendChild(clonedParent);
-
- clonedParent = clonedGrandParent;
- }
- };
-
- function _traverseLeftBoundary(root, how) {
- var next = _getSelectedNode(t[START_CONTAINER], t[START_OFFSET]), isFullySelected = next != t[START_CONTAINER], parent, clonedParent, nextSibling, clonedChild, clonedGrandParent;
-
- if (next == root)
- return _traverseNode(next, isFullySelected, TRUE, how);
-
- parent = next.parentNode;
- clonedParent = _traverseNode(parent, FALSE, TRUE, how);
-
- while (parent) {
- while (next) {
- nextSibling = next.nextSibling;
- clonedChild = _traverseNode(next, isFullySelected, TRUE, how);
-
- if (how != DELETE)
- clonedParent.appendChild(clonedChild);
-
- isFullySelected = TRUE;
- next = nextSibling;
- }
-
- if (parent == root)
- return clonedParent;
-
- next = parent.nextSibling;
- parent = parent.parentNode;
-
- clonedGrandParent = _traverseNode(parent, FALSE, TRUE, how);
-
- if (how != DELETE)
- clonedGrandParent.appendChild(clonedParent);
-
- clonedParent = clonedGrandParent;
- }
- };
-
- function _traverseNode(n, isFullySelected, isLeft, how) {
- var txtValue, newNodeValue, oldNodeValue, offset, newNode;
-
- if (isFullySelected)
- return _traverseFullySelected(n, how);
-
- if (n.nodeType == 3 /* TEXT_NODE */) {
- txtValue = n.nodeValue;
-
- if (isLeft) {
- offset = t[START_OFFSET];
- newNodeValue = txtValue.substring(offset);
- oldNodeValue = txtValue.substring(0, offset);
- } else {
- offset = t[END_OFFSET];
- newNodeValue = txtValue.substring(0, offset);
- oldNodeValue = txtValue.substring(offset);
- }
-
- if (how != CLONE)
- n.nodeValue = oldNodeValue;
-
- if (how == DELETE)
- return;
-
- newNode = dom.clone(n, FALSE);
- newNode.nodeValue = newNodeValue;
-
- return newNode;
- }
-
- if (how == DELETE)
- return;
-
- return dom.clone(n, FALSE);
- };
-
- function _traverseFullySelected(n, how) {
- if (how != DELETE)
- return how == CLONE ? dom.clone(n, TRUE) : n;
-
- n.parentNode.removeChild(n);
- };
- };
-
- ns.Range = Range;
-})(tinymce.dom);
-
-(function() {
- function Selection(selection) {
- var self = this, dom = selection.dom, TRUE = true, FALSE = false;
-
- function getPosition(rng, start) {
- var checkRng, startIndex = 0, endIndex, inside,
- children, child, offset, index, position = -1, parent;
-
- // Setup test range, collapse it and get the parent
- checkRng = rng.duplicate();
- checkRng.collapse(start);
- parent = checkRng.parentElement();
-
- // Check if the selection is within the right document
- if (parent.ownerDocument !== selection.dom.doc)
- return;
-
- // IE will report non editable elements as it's parent so look for an editable one
- while (parent.contentEditable === "false") {
- parent = parent.parentNode;
- }
-
- // If parent doesn't have any children then return that we are inside the element
- if (!parent.hasChildNodes()) {
- return {node : parent, inside : 1};
- }
-
- // Setup node list and endIndex
- children = parent.children;
- endIndex = children.length - 1;
-
- // Perform a binary search for the position
- while (startIndex <= endIndex) {
- index = Math.floor((startIndex + endIndex) / 2);
-
- // Move selection to node and compare the ranges
- child = children[index];
- checkRng.moveToElementText(child);
- position = checkRng.compareEndPoints(start ? 'StartToStart' : 'EndToEnd', rng);
-
- // Before/after or an exact match
- if (position > 0) {
- endIndex = index - 1;
- } else if (position < 0) {
- startIndex = index + 1;
- } else {
- return {node : child};
- }
- }
-
- // Check if child position is before or we didn't find a position
- if (position < 0) {
- // No element child was found use the parent element and the offset inside that
- if (!child) {
- checkRng.moveToElementText(parent);
- checkRng.collapse(true);
- child = parent;
- inside = true;
- } else
- checkRng.collapse(false);
-
- // Walk character by character in text node until we hit the selected range endpoint, hit the end of document or parent isn't the right one
- // We need to walk char by char since rng.text or rng.htmlText will trim line endings
- offset = 0;
- while (checkRng.compareEndPoints(start ? 'StartToStart' : 'StartToEnd', rng) !== 0) {
- if (checkRng.move('character', 1) === 0 || parent != checkRng.parentElement()) {
- break;
- }
-
- offset++;
- }
- } else {
- // Child position is after the selection endpoint
- checkRng.collapse(true);
-
- // Walk character by character in text node until we hit the selected range endpoint, hit the end of document or parent isn't the right one
- offset = 0;
- while (checkRng.compareEndPoints(start ? 'StartToStart' : 'StartToEnd', rng) !== 0) {
- if (checkRng.move('character', -1) === 0 || parent != checkRng.parentElement()) {
- break;
- }
-
- offset++;
- }
- }
-
- return {node : child, position : position, offset : offset, inside : inside};
- };
-
- // Returns a W3C DOM compatible range object by using the IE Range API
- function getRange() {
- var ieRange = selection.getRng(), domRange = dom.createRng(), element, collapsed, tmpRange, element2, bookmark, fail;
-
- // If selection is outside the current document just return an empty range
- element = ieRange.item ? ieRange.item(0) : ieRange.parentElement();
- if (element.ownerDocument != dom.doc)
- return domRange;
-
- collapsed = selection.isCollapsed();
-
- // Handle control selection
- if (ieRange.item) {
- domRange.setStart(element.parentNode, dom.nodeIndex(element));
- domRange.setEnd(domRange.startContainer, domRange.startOffset + 1);
-
- return domRange;
- }
-
- function findEndPoint(start) {
- var endPoint = getPosition(ieRange, start), container, offset, textNodeOffset = 0, sibling, undef, nodeValue;
-
- container = endPoint.node;
- offset = endPoint.offset;
-
- if (endPoint.inside && !container.hasChildNodes()) {
- domRange[start ? 'setStart' : 'setEnd'](container, 0);
- return;
- }
-
- if (offset === undef) {
- domRange[start ? 'setStartBefore' : 'setEndAfter'](container);
- return;
- }
-
- if (endPoint.position < 0) {
- sibling = endPoint.inside ? container.firstChild : container.nextSibling;
-
- if (!sibling) {
- domRange[start ? 'setStartAfter' : 'setEndAfter'](container);
- return;
- }
-
- if (!offset) {
- if (sibling.nodeType == 3)
- domRange[start ? 'setStart' : 'setEnd'](sibling, 0);
- else
- domRange[start ? 'setStartBefore' : 'setEndBefore'](sibling);
-
- return;
- }
-
- // Find the text node and offset
- while (sibling) {
- nodeValue = sibling.nodeValue;
- textNodeOffset += nodeValue.length;
-
- // We are at or passed the position we where looking for
- if (textNodeOffset >= offset) {
- container = sibling;
- textNodeOffset -= offset;
- textNodeOffset = nodeValue.length - textNodeOffset;
- break;
- }
-
- sibling = sibling.nextSibling;
- }
- } else {
- // Find the text node and offset
- sibling = container.previousSibling;
-
- if (!sibling)
- return domRange[start ? 'setStartBefore' : 'setEndBefore'](container);
-
- // If there isn't any text to loop then use the first position
- if (!offset) {
- if (container.nodeType == 3)
- domRange[start ? 'setStart' : 'setEnd'](sibling, container.nodeValue.length);
- else
- domRange[start ? 'setStartAfter' : 'setEndAfter'](sibling);
-
- return;
- }
-
- while (sibling) {
- textNodeOffset += sibling.nodeValue.length;
-
- // We are at or passed the position we where looking for
- if (textNodeOffset >= offset) {
- container = sibling;
- textNodeOffset -= offset;
- break;
- }
-
- sibling = sibling.previousSibling;
- }
- }
-
- domRange[start ? 'setStart' : 'setEnd'](container, textNodeOffset);
- };
-
- try {
- // Find start point
- findEndPoint(true);
-
- // Find end point if needed
- if (!collapsed)
- findEndPoint();
- } catch (ex) {
- // IE has a nasty bug where text nodes might throw "invalid argument" when you
- // access the nodeValue or other properties of text nodes. This seems to happend when
- // text nodes are split into two nodes by a delete/backspace call. So lets detect it and try to fix it.
- if (ex.number == -2147024809) {
- // Get the current selection
- bookmark = self.getBookmark(2);
-
- // Get start element
- tmpRange = ieRange.duplicate();
- tmpRange.collapse(true);
- element = tmpRange.parentElement();
-
- // Get end element
- if (!collapsed) {
- tmpRange = ieRange.duplicate();
- tmpRange.collapse(false);
- element2 = tmpRange.parentElement();
- element2.innerHTML = element2.innerHTML;
- }
-
- // Remove the broken elements
- element.innerHTML = element.innerHTML;
-
- // Restore the selection
- self.moveToBookmark(bookmark);
-
- // Since the range has moved we need to re-get it
- ieRange = selection.getRng();
-
- // Find start point
- findEndPoint(true);
-
- // Find end point if needed
- if (!collapsed)
- findEndPoint();
- } else
- throw ex; // Throw other errors
- }
-
- return domRange;
- };
-
- this.getBookmark = function(type) {
- var rng = selection.getRng(), start, end, bookmark = {};
-
- function getIndexes(node) {
- var parent, root, children, i, indexes = [];
-
- parent = node.parentNode;
- root = dom.getRoot().parentNode;
-
- while (parent != root && parent.nodeType !== 9) {
- children = parent.children;
-
- i = children.length;
- while (i--) {
- if (node === children[i]) {
- indexes.push(i);
- break;
- }
- }
-
- node = parent;
- parent = parent.parentNode;
- }
-
- return indexes;
- };
-
- function getBookmarkEndPoint(start) {
- var position;
-
- position = getPosition(rng, start);
- if (position) {
- return {
- position : position.position,
- offset : position.offset,
- indexes : getIndexes(position.node),
- inside : position.inside
- };
- }
- };
-
- // Non ubstructive bookmark
- if (type === 2) {
- // Handle text selection
- if (!rng.item) {
- bookmark.start = getBookmarkEndPoint(true);
-
- if (!selection.isCollapsed())
- bookmark.end = getBookmarkEndPoint();
- } else
- bookmark.start = {ctrl : true, indexes : getIndexes(rng.item(0))};
- }
-
- return bookmark;
- };
-
- this.moveToBookmark = function(bookmark) {
- var rng, body = dom.doc.body;
-
- function resolveIndexes(indexes) {
- var node, i, idx, children;
-
- node = dom.getRoot();
- for (i = indexes.length - 1; i >= 0; i--) {
- children = node.children;
- idx = indexes[i];
-
- if (idx <= children.length - 1) {
- node = children[idx];
- }
- }
-
- return node;
- };
-
- function setBookmarkEndPoint(start) {
- var endPoint = bookmark[start ? 'start' : 'end'], moveLeft, moveRng, undef;
-
- if (endPoint) {
- moveLeft = endPoint.position > 0;
-
- moveRng = body.createTextRange();
- moveRng.moveToElementText(resolveIndexes(endPoint.indexes));
-
- offset = endPoint.offset;
- if (offset !== undef) {
- moveRng.collapse(endPoint.inside || moveLeft);
- moveRng.moveStart('character', moveLeft ? -offset : offset);
- } else
- moveRng.collapse(start);
-
- rng.setEndPoint(start ? 'StartToStart' : 'EndToStart', moveRng);
-
- if (start)
- rng.collapse(true);
- }
- };
-
- if (bookmark.start) {
- if (bookmark.start.ctrl) {
- rng = body.createControlRange();
- rng.addElement(resolveIndexes(bookmark.start.indexes));
- rng.select();
- } else {
- rng = body.createTextRange();
- setBookmarkEndPoint(true);
- setBookmarkEndPoint();
- rng.select();
- }
- }
- };
-
- this.addRange = function(rng) {
- var ieRng, ctrlRng, startContainer, startOffset, endContainer, endOffset, doc = selection.dom.doc, body = doc.body;
-
- function setEndPoint(start) {
- var container, offset, marker, tmpRng, nodes;
-
- marker = dom.create('a');
- container = start ? startContainer : endContainer;
- offset = start ? startOffset : endOffset;
- tmpRng = ieRng.duplicate();
-
- if (container == doc || container == doc.documentElement) {
- container = body;
- offset = 0;
- }
-
- if (container.nodeType == 3) {
- container.parentNode.insertBefore(marker, container);
- tmpRng.moveToElementText(marker);
- tmpRng.moveStart('character', offset);
- dom.remove(marker);
- ieRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', tmpRng);
- } else {
- nodes = container.childNodes;
-
- if (nodes.length) {
- if (offset >= nodes.length) {
- dom.insertAfter(marker, nodes[nodes.length - 1]);
- } else {
- container.insertBefore(marker, nodes[offset]);
- }
-
- tmpRng.moveToElementText(marker);
- } else if (container.canHaveHTML) {
- // Empty node selection for example <div>|</div>
- // Setting innerHTML with a span marker then remove that marker seems to keep empty block elements open
- container.innerHTML = '<span>\uFEFF</span>';
- marker = container.firstChild;
- tmpRng.moveToElementText(marker);
- tmpRng.collapse(FALSE); // Collapse false works better than true for some odd reason
- }
-
- ieRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', tmpRng);
- dom.remove(marker);
- }
- }
-
- // Setup some shorter versions
- startContainer = rng.startContainer;
- startOffset = rng.startOffset;
- endContainer = rng.endContainer;
- endOffset = rng.endOffset;
- ieRng = body.createTextRange();
-
- // If single element selection then try making a control selection out of it
- if (startContainer == endContainer && startContainer.nodeType == 1) {
- // Trick to place the caret inside an empty block element like <p></p>
- if (startOffset == endOffset && !startContainer.hasChildNodes()) {
- if (startContainer.canHaveHTML) {
- startContainer.innerHTML = '<span>\uFEFF</span><span>\uFEFF</span>';
- ieRng.moveToElementText(startContainer.lastChild);
- ieRng.select();
- dom.doc.selection.clear();
- startContainer.innerHTML = '';
- return;
- } else {
- startOffset = dom.nodeIndex(startContainer);
- startContainer = startContainer.parentNode;
- }
- }
-
- if (startOffset == endOffset - 1) {
- try {
- ctrlRng = body.createControlRange();
- ctrlRng.addElement(startContainer.childNodes[startOffset]);
- ctrlRng.select();
- return;
- } catch (ex) {
- // Ignore
- }
- }
- }
-
- // Set start/end point of selection
- setEndPoint(true);
- setEndPoint();
-
- // Select the new range and scroll it into view
- ieRng.select();
- };
-
- // Expose range method
- this.getRangeAt = getRange;
- };
-
- // Expose the selection object
- tinymce.dom.TridentSelection = Selection;
-})();
-
-
-/*
- * Sizzle CSS Selector Engine
- * Copyright, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- * More information: http://sizzlejs.com/
- */
-(function(){
-
-var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
- expando = "sizcache",
- done = 0,
- toString = Object.prototype.toString,
- hasDuplicate = false,
- baseHasDuplicate = true,
- rBackslash = /\\/g,
- rReturn = /\r\n/g,
- rNonWord = /\W/;
-
-// Here we check if the JavaScript engine is using some sort of
-// optimization where it does not always call our comparision
-// function. If that is the case, discard the hasDuplicate value.
-// Thus far that includes Google Chrome.
-[0, 0].sort(function() {
- baseHasDuplicate = false;
- return 0;
-});
-
-var Sizzle = function( selector, context, results, seed ) {
- results = results || [];
- context = context || document;
-
- var origContext = context;
-
- if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
- return [];
- }
-
- if ( !selector || typeof selector !== "string" ) {
- return results;
- }
-
- var m, set, checkSet, extra, ret, cur, pop, i,
- prune = true,
- contextXML = Sizzle.isXML( context ),
- parts = [],
- soFar = selector;
-
- // Reset the position of the chunker regexp (start from head)
- do {
- chunker.exec( "" );
- m = chunker.exec( soFar );
-
- if ( m ) {
- soFar = m[3];
-
- parts.push( m[1] );
-
- if ( m[2] ) {
- extra = m[3];
- break;
- }
- }
- } while ( m );
-
- if ( parts.length > 1 && origPOS.exec( selector ) ) {
-
- if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
- set = posProcess( parts[0] + parts[1], context, seed );
-
- } else {
- set = Expr.relative[ parts[0] ] ?
- [ context ] :
- Sizzle( parts.shift(), context );
-
- while ( parts.length ) {
- selector = parts.shift();
-
- if ( Expr.relative[ selector ] ) {
- selector += parts.shift();
- }
-
- set = posProcess( selector, set, seed );
- }
- }
-
- } else {
- // Take a shortcut and set the context if the root selector is an ID
- // (but not if it'll be faster if the inner selector is an ID)
- if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
- Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
-
- ret = Sizzle.find( parts.shift(), context, contextXML );
- context = ret.expr ?
- Sizzle.filter( ret.expr, ret.set )[0] :
- ret.set[0];
- }
-
- if ( context ) {
- ret = seed ?
- { expr: parts.pop(), set: makeArray(seed) } :
- Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
-
- set = ret.expr ?
- Sizzle.filter( ret.expr, ret.set ) :
- ret.set;
-
- if ( parts.length > 0 ) {
- checkSet = makeArray( set );
-
- } else {
- prune = false;
- }
-
- while ( parts.length ) {
- cur = parts.pop();
- pop = cur;
-
- if ( !Expr.relative[ cur ] ) {
- cur = "";
- } else {
- pop = parts.pop();
- }
-
- if ( pop == null ) {
- pop = context;
- }
-
- Expr.relative[ cur ]( checkSet, pop, contextXML );
- }
-
- } else {
- checkSet = parts = [];
- }
- }
-
- if ( !checkSet ) {
- checkSet = set;
- }
-
- if ( !checkSet ) {
- Sizzle.error( cur || selector );
- }
-
- if ( toString.call(checkSet) === "[object Array]" ) {
- if ( !prune ) {
- results.push.apply( results, checkSet );
-
- } else if ( context && context.nodeType === 1 ) {
- for ( i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
- results.push( set[i] );
- }
- }
-
- } else {
- for ( i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
- results.push( set[i] );
- }
- }
- }
-
- } else {
- makeArray( checkSet, results );
- }
-
- if ( extra ) {
- Sizzle( extra, origContext, results, seed );
- Sizzle.uniqueSort( results );
- }
-
- return results;
-};
-
-Sizzle.uniqueSort = function( results ) {
- if ( sortOrder ) {
- hasDuplicate = baseHasDuplicate;
- results.sort( sortOrder );
-
- if ( hasDuplicate ) {
- for ( var i = 1; i < results.length; i++ ) {
- if ( results[i] === results[ i - 1 ] ) {
- results.splice( i--, 1 );
- }
- }
- }
- }
-
- return results;
-};
-
-Sizzle.matches = function( expr, set ) {
- return Sizzle( expr, null, null, set );
-};
-
-Sizzle.matchesSelector = function( node, expr ) {
- return Sizzle( expr, null, null, [node] ).length > 0;
-};
-
-Sizzle.find = function( expr, context, isXML ) {
- var set, i, len, match, type, left;
-
- if ( !expr ) {
- return [];
- }
-
- for ( i = 0, len = Expr.order.length; i < len; i++ ) {
- type = Expr.order[i];
-
- if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
- left = match[1];
- match.splice( 1, 1 );
-
- if ( left.substr( left.length - 1 ) !== "\\" ) {
- match[1] = (match[1] || "").replace( rBackslash, "" );
- set = Expr.find[ type ]( match, context, isXML );
-
- if ( set != null ) {
- expr = expr.replace( Expr.match[ type ], "" );
- break;
- }
- }
- }
- }
-
- if ( !set ) {
- set = typeof context.getElementsByTagName !== "undefined" ?
- context.getElementsByTagName( "*" ) :
- [];
- }
-
- return { set: set, expr: expr };
-};
-
-Sizzle.filter = function( expr, set, inplace, not ) {
- var match, anyFound,
- type, found, item, filter, left,
- i, pass,
- old = expr,
- result = [],
- curLoop = set,
- isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
-
- while ( expr && set.length ) {
- for ( type in Expr.filter ) {
- if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
- filter = Expr.filter[ type ];
- left = match[1];
-
- anyFound = false;
-
- match.splice(1,1);
-
- if ( left.substr( left.length - 1 ) === "\\" ) {
- continue;
- }
-
- if ( curLoop === result ) {
- result = [];
- }
-
- if ( Expr.preFilter[ type ] ) {
- match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
-
- if ( !match ) {
- anyFound = found = true;
-
- } else if ( match === true ) {
- continue;
- }
- }
-
- if ( match ) {
- for ( i = 0; (item = curLoop[i]) != null; i++ ) {
- if ( item ) {
- found = filter( item, match, i, curLoop );
- pass = not ^ found;
-
- if ( inplace && found != null ) {
- if ( pass ) {
- anyFound = true;
-
- } else {
- curLoop[i] = false;
- }
-
- } else if ( pass ) {
- result.push( item );
- anyFound = true;
- }
- }
- }
- }
-
- if ( found !== undefined ) {
- if ( !inplace ) {
- curLoop = result;
- }
-
- expr = expr.replace( Expr.match[ type ], "" );
-
- if ( !anyFound ) {
- return [];
- }
-
- break;
- }
- }
- }
-
- // Improper expression
- if ( expr === old ) {
- if ( anyFound == null ) {
- Sizzle.error( expr );
-
- } else {
- break;
- }
- }
-
- old = expr;
- }
-
- return curLoop;
-};
-
-Sizzle.error = function( msg ) {
- throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-var getText = Sizzle.getText = function( elem ) {
- var i, node,
- nodeType = elem.nodeType,
- ret = "";
-
- if ( nodeType ) {
- if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
- // Use textContent || innerText for elements
- if ( typeof elem.textContent === 'string' ) {
- return elem.textContent;
- } else if ( typeof elem.innerText === 'string' ) {
- // Replace IE's carriage returns
- return elem.innerText.replace( rReturn, '' );
- } else {
- // Traverse it's children
- for ( elem = elem.firstChild; elem; elem = elem.nextSibling) {
- ret += getText( elem );
- }
- }
- } else if ( nodeType === 3 || nodeType === 4 ) {
- return elem.nodeValue;
- }
- } else {
-
- // If no nodeType, this is expected to be an array
- for ( i = 0; (node = elem[i]); i++ ) {
- // Do not traverse comment nodes
- if ( node.nodeType !== 8 ) {
- ret += getText( node );
- }
- }
- }
- return ret;
-};
-
-var Expr = Sizzle.selectors = {
- order: [ "ID", "NAME", "TAG" ],
-
- match: {
- ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
- CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
- NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
- ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
- TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
- CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
- POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
- PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
- },
-
- leftMatch: {},
-
- attrMap: {
- "class": "className",
- "for": "htmlFor"
- },
-
- attrHandle: {
- href: function( elem ) {
- return elem.getAttribute( "href" );
- },
- type: function( elem ) {
- return elem.getAttribute( "type" );
- }
- },
-
- relative: {
- "+": function(checkSet, part){
- var isPartStr = typeof part === "string",
- isTag = isPartStr && !rNonWord.test( part ),
- isPartStrNotTag = isPartStr && !isTag;
-
- if ( isTag ) {
- part = part.toLowerCase();
- }
-
- for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
- if ( (elem = checkSet[i]) ) {
- while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
-
- checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
- elem || false :
- elem === part;
- }
- }
-
- if ( isPartStrNotTag ) {
- Sizzle.filter( part, checkSet, true );
- }
- },
-
- ">": function( checkSet, part ) {
- var elem,
- isPartStr = typeof part === "string",
- i = 0,
- l = checkSet.length;
-
- if ( isPartStr && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
-
- for ( ; i < l; i++ ) {
- elem = checkSet[i];
-
- if ( elem ) {
- var parent = elem.parentNode;
- checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
- }
- }
-
- } else {
- for ( ; i < l; i++ ) {
- elem = checkSet[i];
-
- if ( elem ) {
- checkSet[i] = isPartStr ?
- elem.parentNode :
- elem.parentNode === part;
- }
- }
-
- if ( isPartStr ) {
- Sizzle.filter( part, checkSet, true );
- }
- }
- },
-
- "": function(checkSet, part, isXML){
- var nodeCheck,
- doneName = done++,
- checkFn = dirCheck;
-
- if ( typeof part === "string" && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
- nodeCheck = part;
- checkFn = dirNodeCheck;
- }
-
- checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
- },
-
- "~": function( checkSet, part, isXML ) {
- var nodeCheck,
- doneName = done++,
- checkFn = dirCheck;
-
- if ( typeof part === "string" && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
- nodeCheck = part;
- checkFn = dirNodeCheck;
- }
-
- checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
- }
- },
-
- find: {
- ID: function( match, context, isXML ) {
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- return m && m.parentNode ? [m] : [];
- }
- },
-
- NAME: function( match, context ) {
- if ( typeof context.getElementsByName !== "undefined" ) {
- var ret = [],
- results = context.getElementsByName( match[1] );
-
- for ( var i = 0, l = results.length; i < l; i++ ) {
- if ( results[i].getAttribute("name") === match[1] ) {
- ret.push( results[i] );
- }
- }
-
- return ret.length === 0 ? null : ret;
- }
- },
-
- TAG: function( match, context ) {
- if ( typeof context.getElementsByTagName !== "undefined" ) {
- return context.getElementsByTagName( match[1] );
- }
- }
- },
- preFilter: {
- CLASS: function( match, curLoop, inplace, result, not, isXML ) {
- match = " " + match[1].replace( rBackslash, "" ) + " ";
-
- if ( isXML ) {
- return match;
- }
-
- for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
- if ( elem ) {
- if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
- if ( !inplace ) {
- result.push( elem );
- }
-
- } else if ( inplace ) {
- curLoop[i] = false;
- }
- }
- }
-
- return false;
- },
-
- ID: function( match ) {
- return match[1].replace( rBackslash, "" );
- },
-
- TAG: function( match, curLoop ) {
- return match[1].replace( rBackslash, "" ).toLowerCase();
- },
-
- CHILD: function( match ) {
- if ( match[1] === "nth" ) {
- if ( !match[2] ) {
- Sizzle.error( match[0] );
- }
-
- match[2] = match[2].replace(/^\+|\s*/g, '');
-
- // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
- var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
- match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
- !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
-
- // calculate the numbers (first)n+(last) including if they are negative
- match[2] = (test[1] + (test[2] || 1)) - 0;
- match[3] = test[3] - 0;
- }
- else if ( match[2] ) {
- Sizzle.error( match[0] );
- }
-
- // TODO: Move to normal caching system
- match[0] = done++;
-
- return match;
- },
-
- ATTR: function( match, curLoop, inplace, result, not, isXML ) {
- var name = match[1] = match[1].replace( rBackslash, "" );
-
- if ( !isXML && Expr.attrMap[name] ) {
- match[1] = Expr.attrMap[name];
- }
-
- // Handle if an un-quoted value was used
- match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
-
- if ( match[2] === "~=" ) {
- match[4] = " " + match[4] + " ";
- }
-
- return match;
- },
-
- PSEUDO: function( match, curLoop, inplace, result, not ) {
- if ( match[1] === "not" ) {
- // If we're dealing with a complex expression, or a simple one
- if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
- match[3] = Sizzle(match[3], null, null, curLoop);
-
- } else {
- var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
-
- if ( !inplace ) {
- result.push.apply( result, ret );
- }
-
- return false;
- }
-
- } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
- return true;
- }
-
- return match;
- },
-
- POS: function( match ) {
- match.unshift( true );
-
- return match;
- }
- },
-
- filters: {
- enabled: function( elem ) {
- return elem.disabled === false && elem.type !== "hidden";
- },
-
- disabled: function( elem ) {
- return elem.disabled === true;
- },
-
- checked: function( elem ) {
- return elem.checked === true;
- },
-
- selected: function( elem ) {
- // Accessing this property makes selected-by-default
- // options in Safari work properly
- if ( elem.parentNode ) {
- elem.parentNode.selectedIndex;
- }
-
- return elem.selected === true;
- },
-
- parent: function( elem ) {
- return !!elem.firstChild;
- },
-
- empty: function( elem ) {
- return !elem.firstChild;
- },
-
- has: function( elem, i, match ) {
- return !!Sizzle( match[3], elem ).length;
- },
-
- header: function( elem ) {
- return (/h\d/i).test( elem.nodeName );
- },
-
- text: function( elem ) {
- var attr = elem.getAttribute( "type" ), type = elem.type;
- // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
- // use getAttribute instead to test this case
- return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
- },
-
- radio: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
- },
-
- checkbox: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
- },
-
- file: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
- },
-
- password: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
- },
-
- submit: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && "submit" === elem.type;
- },
-
- image: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
- },
-
- reset: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && "reset" === elem.type;
- },
-
- button: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && "button" === elem.type || name === "button";
- },
-
- input: function( elem ) {
- return (/input|select|textarea|button/i).test( elem.nodeName );
- },
-
- focus: function( elem ) {
- return elem === elem.ownerDocument.activeElement;
- }
- },
- setFilters: {
- first: function( elem, i ) {
- return i === 0;
- },
-
- last: function( elem, i, match, array ) {
- return i === array.length - 1;
- },
-
- even: function( elem, i ) {
- return i % 2 === 0;
- },
-
- odd: function( elem, i ) {
- return i % 2 === 1;
- },
-
- lt: function( elem, i, match ) {
- return i < match[3] - 0;
- },
-
- gt: function( elem, i, match ) {
- return i > match[3] - 0;
- },
-
- nth: function( elem, i, match ) {
- return match[3] - 0 === i;
- },
-
- eq: function( elem, i, match ) {
- return match[3] - 0 === i;
- }
- },
- filter: {
- PSEUDO: function( elem, match, i, array ) {
- var name = match[1],
- filter = Expr.filters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
-
- } else if ( name === "contains" ) {
- return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
-
- } else if ( name === "not" ) {
- var not = match[3];
-
- for ( var j = 0, l = not.length; j < l; j++ ) {
- if ( not[j] === elem ) {
- return false;
- }
- }
-
- return true;
-
- } else {
- Sizzle.error( name );
- }
- },
-
- CHILD: function( elem, match ) {
- var first, last,
- doneName, parent, cache,
- count, diff,
- type = match[1],
- node = elem;
-
- switch ( type ) {
- case "only":
- case "first":
- while ( (node = node.previousSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
-
- if ( type === "first" ) {
- return true;
- }
-
- node = elem;
-
- /* falls through */
- case "last":
- while ( (node = node.nextSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
-
- return true;
-
- case "nth":
- first = match[2];
- last = match[3];
-
- if ( first === 1 && last === 0 ) {
- return true;
- }
-
- doneName = match[0];
- parent = elem.parentNode;
-
- if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {
- count = 0;
-
- for ( node = parent.firstChild; node; node = node.nextSibling ) {
- if ( node.nodeType === 1 ) {
- node.nodeIndex = ++count;
- }
- }
-
- parent[ expando ] = doneName;
- }
-
- diff = elem.nodeIndex - last;
-
- if ( first === 0 ) {
- return diff === 0;
-
- } else {
- return ( diff % first === 0 && diff / first >= 0 );
- }
- }
- },
-
- ID: function( elem, match ) {
- return elem.nodeType === 1 && elem.getAttribute("id") === match;
- },
-
- TAG: function( elem, match ) {
- return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;
- },
-
- CLASS: function( elem, match ) {
- return (" " + (elem.className || elem.getAttribute("class")) + " ")
- .indexOf( match ) > -1;
- },
-
- ATTR: function( elem, match ) {
- var name = match[1],
- result = Sizzle.attr ?
- Sizzle.attr( elem, name ) :
- Expr.attrHandle[ name ] ?
- Expr.attrHandle[ name ]( elem ) :
- elem[ name ] != null ?
- elem[ name ] :
- elem.getAttribute( name ),
- value = result + "",
- type = match[2],
- check = match[4];
-
- return result == null ?
- type === "!=" :
- !type && Sizzle.attr ?
- result != null :
- type === "=" ?
- value === check :
- type === "*=" ?
- value.indexOf(check) >= 0 :
- type === "~=" ?
- (" " + value + " ").indexOf(check) >= 0 :
- !check ?
- value && result !== false :
- type === "!=" ?
- value !== check :
- type === "^=" ?
- value.indexOf(check) === 0 :
- type === "$=" ?
- value.substr(value.length - check.length) === check :
- type === "|=" ?
- value === check || value.substr(0, check.length + 1) === check + "-" :
- false;
- },
-
- POS: function( elem, match, i, array ) {
- var name = match[2],
- filter = Expr.setFilters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
- }
- }
- }
-};
-
-var origPOS = Expr.match.POS,
- fescape = function(all, num){
- return "\\" + (num - 0 + 1);
- };
-
-for ( var type in Expr.match ) {
- Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
- Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
-}
-// Expose origPOS
-// "global" as in regardless of relation to brackets/parens
-Expr.match.globalPOS = origPOS;
-
-var makeArray = function( array, results ) {
- array = Array.prototype.slice.call( array, 0 );
-
- if ( results ) {
- results.push.apply( results, array );
- return results;
- }
-
- return array;
-};
-
-// Perform a simple check to determine if the browser is capable of
-// converting a NodeList to an array using builtin methods.
-// Also verifies that the returned array holds DOM nodes
-// (which is not the case in the Blackberry browser)
-try {
- Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
-
-// Provide a fallback method if it does not work
-} catch( e ) {
- makeArray = function( array, results ) {
- var i = 0,
- ret = results || [];
-
- if ( toString.call(array) === "[object Array]" ) {
- Array.prototype.push.apply( ret, array );
-
- } else {
- if ( typeof array.length === "number" ) {
- for ( var l = array.length; i < l; i++ ) {
- ret.push( array[i] );
- }
-
- } else {
- for ( ; array[i]; i++ ) {
- ret.push( array[i] );
- }
- }
- }
-
- return ret;
- };
-}
-
-var sortOrder, siblingCheck;
-
-if ( document.documentElement.compareDocumentPosition ) {
- sortOrder = function( a, b ) {
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
- }
-
- if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
- return a.compareDocumentPosition ? -1 : 1;
- }
-
- return a.compareDocumentPosition(b) & 4 ? -1 : 1;
- };
-
-} else {
- sortOrder = function( a, b ) {
- // The nodes are identical, we can exit early
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
-
- // Fallback to using sourceIndex (in IE) if it's available on both nodes
- } else if ( a.sourceIndex && b.sourceIndex ) {
- return a.sourceIndex - b.sourceIndex;
- }
-
- var al, bl,
- ap = [],
- bp = [],
- aup = a.parentNode,
- bup = b.parentNode,
- cur = aup;
-
- // If the nodes are siblings (or identical) we can do a quick check
- if ( aup === bup ) {
- return siblingCheck( a, b );
-
- // If no parents were found then the nodes are disconnected
- } else if ( !aup ) {
- return -1;
-
- } else if ( !bup ) {
- return 1;
- }
-
- // Otherwise they're somewhere else in the tree so we need
- // to build up a full list of the parentNodes for comparison
- while ( cur ) {
- ap.unshift( cur );
- cur = cur.parentNode;
- }
-
- cur = bup;
-
- while ( cur ) {
- bp.unshift( cur );
- cur = cur.parentNode;
- }
-
- al = ap.length;
- bl = bp.length;
-
- // Start walking down the tree looking for a discrepancy
- for ( var i = 0; i < al && i < bl; i++ ) {
- if ( ap[i] !== bp[i] ) {
- return siblingCheck( ap[i], bp[i] );
- }
- }
-
- // We ended someplace up the tree so do a sibling check
- return i === al ?
- siblingCheck( a, bp[i], -1 ) :
- siblingCheck( ap[i], b, 1 );
- };
-
- siblingCheck = function( a, b, ret ) {
- if ( a === b ) {
- return ret;
- }
-
- var cur = a.nextSibling;
-
- while ( cur ) {
- if ( cur === b ) {
- return -1;
- }
-
- cur = cur.nextSibling;
- }
-
- return 1;
- };
-}
-
-// Check to see if the browser returns elements by name when
-// querying by getElementById (and provide a workaround)
-(function(){
- // We're going to inject a fake input element with a specified name
- var form = document.createElement("div"),
- id = "script" + (new Date()).getTime(),
- root = document.documentElement;
-
- form.innerHTML = "<a name='" + id + "'/>";
-
- // Inject it into the root element, check its status, and remove it quickly
- root.insertBefore( form, root.firstChild );
-
- // The workaround has to do additional checks after a getElementById
- // Which slows things down for other browsers (hence the branching)
- if ( document.getElementById( id ) ) {
- Expr.find.ID = function( match, context, isXML ) {
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
-
- return m ?
- m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
- [m] :
- undefined :
- [];
- }
- };
-
- Expr.filter.ID = function( elem, match ) {
- var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
-
- return elem.nodeType === 1 && node && node.nodeValue === match;
- };
- }
-
- root.removeChild( form );
-
- // release memory in IE
- root = form = null;
-})();
-
-(function(){
- // Check to see if the browser returns only elements
- // when doing getElementsByTagName("*")
-
- // Create a fake element
- var div = document.createElement("div");
- div.appendChild( document.createComment("") );
-
- // Make sure no comments are found
- if ( div.getElementsByTagName("*").length > 0 ) {
- Expr.find.TAG = function( match, context ) {
- var results = context.getElementsByTagName( match[1] );
-
- // Filter out possible comments
- if ( match[1] === "*" ) {
- var tmp = [];
-
- for ( var i = 0; results[i]; i++ ) {
- if ( results[i].nodeType === 1 ) {
- tmp.push( results[i] );
- }
- }
-
- results = tmp;
- }
-
- return results;
- };
- }
-
- // Check to see if an attribute returns normalized href attributes
- div.innerHTML = "<a href='#'></a>";
-
- if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
- div.firstChild.getAttribute("href") !== "#" ) {
-
- Expr.attrHandle.href = function( elem ) {
- return elem.getAttribute( "href", 2 );
- };
- }
-
- // release memory in IE
- div = null;
-})();
-
-if ( document.querySelectorAll ) {
- (function(){
- var oldSizzle = Sizzle,
- div = document.createElement("div"),
- id = "__sizzle__";
-
- div.innerHTML = "<p class='TEST'></p>";
-
- // Safari can't handle uppercase or unicode characters when
- // in quirks mode.
- if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
- return;
- }
-
- Sizzle = function( query, context, extra, seed ) {
- context = context || document;
-
- // Only use querySelectorAll on non-XML documents
- // (ID selectors don't work in non-HTML documents)
- if ( !seed && !Sizzle.isXML(context) ) {
- // See if we find a selector to speed up
- var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
-
- if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
- // Speed-up: Sizzle("TAG")
- if ( match[1] ) {
- return makeArray( context.getElementsByTagName( query ), extra );
-
- // Speed-up: Sizzle(".CLASS")
- } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
- return makeArray( context.getElementsByClassName( match[2] ), extra );
- }
- }
-
- if ( context.nodeType === 9 ) {
- // Speed-up: Sizzle("body")
- // The body element only exists once, optimize finding it
- if ( query === "body" && context.body ) {
- return makeArray( [ context.body ], extra );
-
- // Speed-up: Sizzle("#ID")
- } else if ( match && match[3] ) {
- var elem = context.getElementById( match[3] );
-
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- if ( elem && elem.parentNode ) {
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem.id === match[3] ) {
- return makeArray( [ elem ], extra );
- }
-
- } else {
- return makeArray( [], extra );
- }
- }
-
- try {
- return makeArray( context.querySelectorAll(query), extra );
- } catch(qsaError) {}
-
- // qSA works strangely on Element-rooted queries
- // We can work around this by specifying an extra ID on the root
- // and working up from there (Thanks to Andrew Dupont for the technique)
- // IE 8 doesn't work on object elements
- } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
- var oldContext = context,
- old = context.getAttribute( "id" ),
- nid = old || id,
- hasParent = context.parentNode,
- relativeHierarchySelector = /^\s*[+~]/.test( query );
-
- if ( !old ) {
- context.setAttribute( "id", nid );
- } else {
- nid = nid.replace( /'/g, "\\$&" );
- }
- if ( relativeHierarchySelector && hasParent ) {
- context = context.parentNode;
- }
-
- try {
- if ( !relativeHierarchySelector || hasParent ) {
- return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
- }
-
- } catch(pseudoError) {
- } finally {
- if ( !old ) {
- oldContext.removeAttribute( "id" );
- }
- }
- }
- }
-
- return oldSizzle(query, context, extra, seed);
- };
-
- for ( var prop in oldSizzle ) {
- Sizzle[ prop ] = oldSizzle[ prop ];
- }
-
- // release memory in IE
- div = null;
- })();
-}
-
-(function(){
- var html = document.documentElement,
- matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
-
- if ( matches ) {
- // Check to see if it's possible to do matchesSelector
- // on a disconnected node (IE 9 fails this)
- var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
- pseudoWorks = false;
-
- try {
- // This should fail with an exception
- // Gecko does not error, returns false instead
- matches.call( document.documentElement, "[test!='']:sizzle" );
-
- } catch( pseudoError ) {
- pseudoWorks = true;
- }
-
- Sizzle.matchesSelector = function( node, expr ) {
- // Make sure that attribute selectors are quoted
- expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
-
- if ( !Sizzle.isXML( node ) ) {
- try {
- if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
- var ret = matches.call( node, expr );
-
- // IE 9's matchesSelector returns false on disconnected nodes
- if ( ret || !disconnectedMatch ||
- // As well, disconnected nodes are said to be in a document
- // fragment in IE 9, so check for that
- node.document && node.document.nodeType !== 11 ) {
- return ret;
- }
- }
- } catch(e) {}
- }
-
- return Sizzle(expr, null, null, [node]).length > 0;
- };
- }
-})();
-
-(function(){
- var div = document.createElement("div");
-
- div.innerHTML = "<div class='test e'></div><div class='test'></div>";
-
- // Opera can't find a second classname (in 9.6)
- // Also, make sure that getElementsByClassName actually exists
- if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
- return;
- }
-
- // Safari caches class attributes, doesn't catch changes (in 3.2)
- div.lastChild.className = "e";
-
- if ( div.getElementsByClassName("e").length === 1 ) {
- return;
- }
-
- Expr.order.splice(1, 0, "CLASS");
- Expr.find.CLASS = function( match, context, isXML ) {
- if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
- return context.getElementsByClassName(match[1]);
- }
- };
-
- // release memory in IE
- div = null;
-})();
-
-function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
-
- if ( elem ) {
- var match = false;
-
- elem = elem[dir];
-
- while ( elem ) {
- if ( elem[ expando ] === doneName ) {
- match = checkSet[elem.sizset];
- break;
- }
-
- if ( elem.nodeType === 1 && !isXML ){
- elem[ expando ] = doneName;
- elem.sizset = i;
- }
-
- if ( elem.nodeName.toLowerCase() === cur ) {
- match = elem;
- break;
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
-
- if ( elem ) {
- var match = false;
-
- elem = elem[dir];
-
- while ( elem ) {
- if ( elem[ expando ] === doneName ) {
- match = checkSet[elem.sizset];
- break;
- }
-
- if ( elem.nodeType === 1 ) {
- if ( !isXML ) {
- elem[ expando ] = doneName;
- elem.sizset = i;
- }
-
- if ( typeof cur !== "string" ) {
- if ( elem === cur ) {
- match = true;
- break;
- }
-
- } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
- match = elem;
- break;
- }
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-if ( document.documentElement.contains ) {
- Sizzle.contains = function( a, b ) {
- return a !== b && (a.contains ? a.contains(b) : true);
- };
-
-} else if ( document.documentElement.compareDocumentPosition ) {
- Sizzle.contains = function( a, b ) {
- return !!(a.compareDocumentPosition(b) & 16);
- };
-
-} else {
- Sizzle.contains = function() {
- return false;
- };
-}
-
-Sizzle.isXML = function( elem ) {
- // documentElement is verified for cases where it doesn't yet exist
- // (such as loading iframes in IE - #4833)
- var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
-
- return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-var posProcess = function( selector, context, seed ) {
- var match,
- tmpSet = [],
- later = "",
- root = context.nodeType ? [context] : context;
-
- // Position selectors must be done after the filter
- // And so must :not(positional) so we move all PSEUDOs to the end
- while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
- later += match[0];
- selector = selector.replace( Expr.match.PSEUDO, "" );
- }
-
- selector = Expr.relative[selector] ? selector + "*" : selector;
-
- for ( var i = 0, l = root.length; i < l; i++ ) {
- Sizzle( selector, root[i], tmpSet, seed );
- }
-
- return Sizzle.filter( later, tmpSet );
-};
-
-// EXPOSE
-
-window.tinymce.dom.Sizzle = Sizzle;
-
-})();
-
-
-(function(tinymce) {
- tinymce.dom.Element = function(id, settings) {
- var t = this, dom, el;
-
- t.settings = settings = settings || {};
- t.id = id;
- t.dom = dom = settings.dom || tinymce.DOM;
-
- // Only IE leaks DOM references, this is a lot faster
- if (!tinymce.isIE)
- el = dom.get(t.id);
-
- tinymce.each(
- ('getPos,getRect,getParent,add,setStyle,getStyle,setStyles,' +
- 'setAttrib,setAttribs,getAttrib,addClass,removeClass,' +
- 'hasClass,getOuterHTML,setOuterHTML,remove,show,hide,' +
- 'isHidden,setHTML,get').split(/,/), function(k) {
- t[k] = function() {
- var a = [id], i;
-
- for (i = 0; i < arguments.length; i++)
- a.push(arguments[i]);
-
- a = dom[k].apply(dom, a);
- t.update(k);
-
- return a;
- };
- }
- );
-
- tinymce.extend(t, {
- on : function(n, f, s) {
- return tinymce.dom.Event.add(t.id, n, f, s);
- },
-
- getXY : function() {
- return {
- x : parseInt(t.getStyle('left')),
- y : parseInt(t.getStyle('top'))
- };
- },
-
- getSize : function() {
- var n = dom.get(t.id);
-
- return {
- w : parseInt(t.getStyle('width') || n.clientWidth),
- h : parseInt(t.getStyle('height') || n.clientHeight)
- };
- },
-
- moveTo : function(x, y) {
- t.setStyles({left : x, top : y});
- },
-
- moveBy : function(x, y) {
- var p = t.getXY();
-
- t.moveTo(p.x + x, p.y + y);
- },
-
- resizeTo : function(w, h) {
- t.setStyles({width : w, height : h});
- },
-
- resizeBy : function(w, h) {
- var s = t.getSize();
-
- t.resizeTo(s.w + w, s.h + h);
- },
-
- update : function(k) {
- var b;
-
- if (tinymce.isIE6 && settings.blocker) {
- k = k || '';
-
- // Ignore getters
- if (k.indexOf('get') === 0 || k.indexOf('has') === 0 || k.indexOf('is') === 0)
- return;
-
- // Remove blocker on remove
- if (k == 'remove') {
- dom.remove(t.blocker);
- return;
- }
-
- if (!t.blocker) {
- t.blocker = dom.uniqueId();
- b = dom.add(settings.container || dom.getRoot(), 'iframe', {id : t.blocker, style : 'position:absolute;', frameBorder : 0, src : 'javascript:""'});
- dom.setStyle(b, 'opacity', 0);
- } else
- b = dom.get(t.blocker);
-
- dom.setStyles(b, {
- left : t.getStyle('left', 1),
- top : t.getStyle('top', 1),
- width : t.getStyle('width', 1),
- height : t.getStyle('height', 1),
- display : t.getStyle('display', 1),
- zIndex : parseInt(t.getStyle('zIndex', 1) || 0) - 1
- });
- }
- }
- });
- };
-})(tinymce);
-
-(function(tinymce) {
- function trimNl(s) {
- return s.replace(/[\n\r]+/g, '');
- };
-
- // Shorten names
- var is = tinymce.is, isIE = tinymce.isIE, each = tinymce.each, TreeWalker = tinymce.dom.TreeWalker;
-
- tinymce.create('tinymce.dom.Selection', {
- Selection : function(dom, win, serializer) {
- var t = this;
-
- t.dom = dom;
- t.win = win;
- t.serializer = serializer;
-
- // Add events
- each([
- 'onBeforeSetContent',
-
- 'onBeforeGetContent',
-
- 'onSetContent',
-
- 'onGetContent'
- ], function(e) {
- t[e] = new tinymce.util.Dispatcher(t);
- });
-
- // No W3C Range support
- if (!t.win.getSelection)
- t.tridentSel = new tinymce.dom.TridentSelection(t);
-
- if (tinymce.isIE && dom.boxModel)
- this._fixIESelection();
-
- // Prevent leaks
- tinymce.addUnload(t.destroy, t);
- },
-
- setCursorLocation: function(node, offset) {
- var t = this; var r = t.dom.createRng();
- r.setStart(node, offset);
- r.setEnd(node, offset);
- t.setRng(r);
- t.collapse(false);
- },
- getContent : function(s) {
- var t = this, r = t.getRng(), e = t.dom.create("body"), se = t.getSel(), wb, wa, n;
-
- s = s || {};
- wb = wa = '';
- s.get = true;
- s.format = s.format || 'html';
- s.forced_root_block = '';
- t.onBeforeGetContent.dispatch(t, s);
-
- if (s.format == 'text')
- return t.isCollapsed() ? '' : (r.text || (se.toString ? se.toString() : ''));
-
- if (r.cloneContents) {
- n = r.cloneContents();
-
- if (n)
- e.appendChild(n);
- } else if (is(r.item) || is(r.htmlText)) {
- // IE will produce invalid markup if elements are present that
- // it doesn't understand like custom elements or HTML5 elements.
- // Adding a BR in front of the contents and then remoiving it seems to fix it though.
- e.innerHTML = '<br>' + (r.item ? r.item(0).outerHTML : r.htmlText);
- e.removeChild(e.firstChild);
- } else
- e.innerHTML = r.toString();
-
- // Keep whitespace before and after
- if (/^\s/.test(e.innerHTML))
- wb = ' ';
-
- if (/\s+$/.test(e.innerHTML))
- wa = ' ';
-
- s.getInner = true;
-
- s.content = t.isCollapsed() ? '' : wb + t.serializer.serialize(e, s) + wa;
- t.onGetContent.dispatch(t, s);
-
- return s.content;
- },
-
- setContent : function(content, args) {
- var self = this, rng = self.getRng(), caretNode, doc = self.win.document, frag, temp;
-
- args = args || {format : 'html'};
- args.set = true;
- content = args.content = content;
-
- // Dispatch before set content event
- if (!args.no_events)
- self.onBeforeSetContent.dispatch(self, args);
-
- content = args.content;
-
- if (rng.insertNode) {
- // Make caret marker since insertNode places the caret in the beginning of text after insert
- content += '<span id="__caret">_</span>';
-
- // Delete and insert new node
- if (rng.startContainer == doc && rng.endContainer == doc) {
- // WebKit will fail if the body is empty since the range is then invalid and it can't insert contents
- doc.body.innerHTML = content;
- } else {
- rng.deleteContents();
-
- if (doc.body.childNodes.length === 0) {
- doc.body.innerHTML = content;
- } else {
- // createContextualFragment doesn't exists in IE 9 DOMRanges
- if (rng.createContextualFragment) {
- rng.insertNode(rng.createContextualFragment(content));
- } else {
- // Fake createContextualFragment call in IE 9
- frag = doc.createDocumentFragment();
- temp = doc.createElement('div');
-
- frag.appendChild(temp);
- temp.outerHTML = content;
-
- rng.insertNode(frag);
- }
- }
- }
-
- // Move to caret marker
- caretNode = self.dom.get('__caret');
-
- // Make sure we wrap it compleatly, Opera fails with a simple select call
- rng = doc.createRange();
- rng.setStartBefore(caretNode);
- rng.setEndBefore(caretNode);
- self.setRng(rng);
-
- // Remove the caret position
- self.dom.remove('__caret');
-
- try {
- self.setRng(rng);
- } catch (ex) {
- // Might fail on Opera for some odd reason
- }
- } else {
- if (rng.item) {
- // Delete content and get caret text selection
- doc.execCommand('Delete', false, null);
- rng = self.getRng();
- }
-
- // Explorer removes spaces from the beginning of pasted contents
- if (/^\s+/.test(content)) {
- rng.pasteHTML('<span id="__mce_tmp">_</span>' + content);
- self.dom.remove('__mce_tmp');
- } else
- rng.pasteHTML(content);
- }
-
- // Dispatch set content event
- if (!args.no_events)
- self.onSetContent.dispatch(self, args);
- },
-
- getStart : function() {
- var rng = this.getRng(), startElement, parentElement, checkRng, node;
-
- if (rng.duplicate || rng.item) {
- // Control selection, return first item
- if (rng.item)
- return rng.item(0);
-
- // Get start element
- checkRng = rng.duplicate();
- checkRng.collapse(1);
- startElement = checkRng.parentElement();
-
- // Check if range parent is inside the start element, then return the inner parent element
- // This will fix issues when a single element is selected, IE would otherwise return the wrong start element
- parentElement = node = rng.parentElement();
- while (node = node.parentNode) {
- if (node == startElement) {
- startElement = parentElement;
- break;
- }
- }
-
- return startElement;
- } else {
- startElement = rng.startContainer;
-
- if (startElement.nodeType == 1 && startElement.hasChildNodes())
- startElement = startElement.childNodes[Math.min(startElement.childNodes.length - 1, rng.startOffset)];
-
- if (startElement && startElement.nodeType == 3)
- return startElement.parentNode;
-
- return startElement;
- }
- },
-
- getEnd : function() {
- var t = this, r = t.getRng(), e, eo;
-
- if (r.duplicate || r.item) {
- if (r.item)
- return r.item(0);
-
- r = r.duplicate();
- r.collapse(0);
- e = r.parentElement();
-
- if (e && e.nodeName == 'BODY')
- return e.lastChild || e;
-
- return e;
- } else {
- e = r.endContainer;
- eo = r.endOffset;
-
- if (e.nodeType == 1 && e.hasChildNodes())
- e = e.childNodes[eo > 0 ? eo - 1 : eo];
-
- if (e && e.nodeType == 3)
- return e.parentNode;
-
- return e;
- }
- },
-
- getBookmark : function(type, normalized) {
- var t = this, dom = t.dom, rng, rng2, id, collapsed, name, element, index, chr = '\uFEFF', styles;
-
- function findIndex(name, element) {
- var index = 0;
-
- each(dom.select(name), function(node, i) {
- if (node == element)
- index = i;
- });
-
- return index;
- };
-
- function normalizeTableCellSelection(rng) {
- function moveEndPoint(start) {
- var container, offset, childNodes, prefix = start ? 'start' : 'end';
-
- container = rng[prefix + 'Container'];
- offset = rng[prefix + 'Offset'];
-
- if (container.nodeType == 1 && container.nodeName == "TR") {
- childNodes = container.childNodes;
- container = childNodes[Math.min(start ? offset : offset - 1, childNodes.length - 1)];
- if (container) {
- offset = start ? 0 : container.childNodes.length;
- rng['set' + (start ? 'Start' : 'End')](container, offset);
- }
- }
- };
-
- moveEndPoint(true);
- moveEndPoint();
-
- return rng;
- };
-
- function getLocation() {
- var rng = t.getRng(true), root = dom.getRoot(), bookmark = {};
-
- function getPoint(rng, start) {
- var container = rng[start ? 'startContainer' : 'endContainer'],
- offset = rng[start ? 'startOffset' : 'endOffset'], point = [], node, childNodes, after = 0;
-
- if (container.nodeType == 3) {
- if (normalized) {
- for (node = container.previousSibling; node && node.nodeType == 3; node = node.previousSibling)
- offset += node.nodeValue.length;
- }
-
- point.push(offset);
- } else {
- childNodes = container.childNodes;
-
- if (offset >= childNodes.length && childNodes.length) {
- after = 1;
- offset = Math.max(0, childNodes.length - 1);
- }
-
- point.push(t.dom.nodeIndex(childNodes[offset], normalized) + after);
- }
-
- for (; container && container != root; container = container.parentNode)
- point.push(t.dom.nodeIndex(container, normalized));
-
- return point;
- };
-
- bookmark.start = getPoint(rng, true);
-
- if (!t.isCollapsed())
- bookmark.end = getPoint(rng);
-
- return bookmark;
- };
-
- if (type == 2) {
- if (t.tridentSel)
- return t.tridentSel.getBookmark(type);
-
- return getLocation();
- }
-
- // Handle simple range
- if (type)
- return {rng : t.getRng()};
-
- rng = t.getRng();
- id = dom.uniqueId();
- collapsed = tinyMCE.activeEditor.selection.isCollapsed();
- styles = 'overflow:hidden;line-height:0px';
-
- // Explorer method
- if (rng.duplicate || rng.item) {
- // Text selection
- if (!rng.item) {
- rng2 = rng.duplicate();
-
- try {
- // Insert start marker
- rng.collapse();
- rng.pasteHTML('<span data-mce-type="bookmark" id="' + id + '_start" style="' + styles + '">' + chr + '</span>');
-
- // Insert end marker
- if (!collapsed) {
- rng2.collapse(false);
-
- // Detect the empty space after block elements in IE and move the end back one character <p></p>] becomes <p>]</p>
- rng.moveToElementText(rng2.parentElement());
- if (rng.compareEndPoints('StartToEnd', rng2) === 0)
- rng2.move('character', -1);
-
- rng2.pasteHTML('<span data-mce-type="bookmark" id="' + id + '_end" style="' + styles + '">' + chr + '</span>');
- }
- } catch (ex) {
- // IE might throw unspecified error so lets ignore it
- return null;
- }
- } else {
- // Control selection
- element = rng.item(0);
- name = element.nodeName;
-
- return {name : name, index : findIndex(name, element)};
- }
- } else {
- element = t.getNode();
- name = element.nodeName;
- if (name == 'IMG')
- return {name : name, index : findIndex(name, element)};
-
- // W3C method
- rng2 = normalizeTableCellSelection(rng.cloneRange());
-
- // Insert end marker
- if (!collapsed) {
- rng2.collapse(false);
- rng2.insertNode(dom.create('span', {'data-mce-type' : "bookmark", id : id + '_end', style : styles}, chr));
- }
-
- rng = normalizeTableCellSelection(rng);
- rng.collapse(true);
- rng.insertNode(dom.create('span', {'data-mce-type' : "bookmark", id : id + '_start', style : styles}, chr));
- }
-
- t.moveToBookmark({id : id, keep : 1});
-
- return {id : id};
- },
-
- moveToBookmark : function(bookmark) {
- var t = this, dom = t.dom, marker1, marker2, rng, root, startContainer, endContainer, startOffset, endOffset;
-
- function setEndPoint(start) {
- var point = bookmark[start ? 'start' : 'end'], i, node, offset, children;
-
- if (point) {
- offset = point[0];
-
- // Find container node
- for (node = root, i = point.length - 1; i >= 1; i--) {
- children = node.childNodes;
-
- if (point[i] > children.length - 1)
- return;
-
- node = children[point[i]];
- }
-
- // Move text offset to best suitable location
- if (node.nodeType === 3)
- offset = Math.min(point[0], node.nodeValue.length);
-
- // Move element offset to best suitable location
- if (node.nodeType === 1)
- offset = Math.min(point[0], node.childNodes.length);
-
- // Set offset within container node
- if (start)
- rng.setStart(node, offset);
- else
- rng.setEnd(node, offset);
- }
-
- return true;
- };
-
- function restoreEndPoint(suffix) {
- var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev, keep = bookmark.keep;
-
- if (marker) {
- node = marker.parentNode;
-
- if (suffix == 'start') {
- if (!keep) {
- idx = dom.nodeIndex(marker);
- } else {
- node = marker.firstChild;
- idx = 1;
- }
-
- startContainer = endContainer = node;
- startOffset = endOffset = idx;
- } else {
- if (!keep) {
- idx = dom.nodeIndex(marker);
- } else {
- node = marker.firstChild;
- idx = 1;
- }
-
- endContainer = node;
- endOffset = idx;
- }
-
- if (!keep) {
- prev = marker.previousSibling;
- next = marker.nextSibling;
-
- // Remove all marker text nodes
- each(tinymce.grep(marker.childNodes), function(node) {
- if (node.nodeType == 3)
- node.nodeValue = node.nodeValue.replace(/\uFEFF/g, '');
- });
-
- // Remove marker but keep children if for example contents where inserted into the marker
- // Also remove duplicated instances of the marker for example by a split operation or by WebKit auto split on paste feature
- while (marker = dom.get(bookmark.id + '_' + suffix))
- dom.remove(marker, 1);
-
- // If siblings are text nodes then merge them unless it's Opera since it some how removes the node
- // and we are sniffing since adding a lot of detection code for a browser with 3% of the market isn't worth the effort. Sorry, Opera but it's just a fact
- if (prev && next && prev.nodeType == next.nodeType && prev.nodeType == 3 && !tinymce.isOpera) {
- idx = prev.nodeValue.length;
- prev.appendData(next.nodeValue);
- dom.remove(next);
-
- if (suffix == 'start') {
- startContainer = endContainer = prev;
- startOffset = endOffset = idx;
- } else {
- endContainer = prev;
- endOffset = idx;
- }
- }
- }
- }
- };
-
- function addBogus(node) {
- // Adds a bogus BR element for empty block elements
- if (dom.isBlock(node) && !node.innerHTML && !isIE)
- node.innerHTML = '<br data-mce-bogus="1" />';
-
- return node;
- };
-
- if (bookmark) {
- if (bookmark.start) {
- rng = dom.createRng();
- root = dom.getRoot();
-
- if (t.tridentSel)
- return t.tridentSel.moveToBookmark(bookmark);
-
- if (setEndPoint(true) && setEndPoint()) {
- t.setRng(rng);
- }
- } else if (bookmark.id) {
- // Restore start/end points
- restoreEndPoint('start');
- restoreEndPoint('end');
-
- if (startContainer) {
- rng = dom.createRng();
- rng.setStart(addBogus(startContainer), startOffset);
- rng.setEnd(addBogus(endContainer), endOffset);
- t.setRng(rng);
- }
- } else if (bookmark.name) {
- t.select(dom.select(bookmark.name)[bookmark.index]);
- } else if (bookmark.rng)
- t.setRng(bookmark.rng);
- }
- },
-
- select : function(node, content) {
- var t = this, dom = t.dom, rng = dom.createRng(), idx;
-
- function setPoint(node, start) {
- var walker = new TreeWalker(node, node);
-
- do {
- // Text node
- if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length !== 0) {
- if (start)
- rng.setStart(node, 0);
- else
- rng.setEnd(node, node.nodeValue.length);
-
- return;
- }
-
- // BR element
- if (node.nodeName == 'BR') {
- if (start)
- rng.setStartBefore(node);
- else
- rng.setEndBefore(node);
-
- return;
- }
- } while (node = (start ? walker.next() : walker.prev()));
- };
-
- if (node) {
- idx = dom.nodeIndex(node);
- rng.setStart(node.parentNode, idx);
- rng.setEnd(node.parentNode, idx + 1);
-
- // Find first/last text node or BR element
- if (content) {
- setPoint(node, 1);
- setPoint(node);
- }
-
- t.setRng(rng);
- }
-
- return node;
- },
-
- isCollapsed : function() {
- var t = this, r = t.getRng(), s = t.getSel();
-
- if (!r || r.item)
- return false;
-
- if (r.compareEndPoints)
- return r.compareEndPoints('StartToEnd', r) === 0;
-
- return !s || r.collapsed;
- },
-
- collapse : function(to_start) {
- var self = this, rng = self.getRng(), node;
-
- // Control range on IE
- if (rng.item) {
- node = rng.item(0);
- rng = self.win.document.body.createTextRange();
- rng.moveToElementText(node);
- }
-
- rng.collapse(!!to_start);
- self.setRng(rng);
- },
-
- getSel : function() {
- var t = this, w = this.win;
-
- return w.getSelection ? w.getSelection() : w.document.selection;
- },
-
- getRng : function(w3c) {
- var self = this, selection, rng, elm, doc = self.win.document;
-
- // Found tridentSel object then we need to use that one
- if (w3c && self.tridentSel) {
- return self.tridentSel.getRangeAt(0);
- }
-
- try {
- if (selection = self.getSel()) {
- rng = selection.rangeCount > 0 ? selection.getRangeAt(0) : (selection.createRange ? selection.createRange() : doc.createRange());
- }
- } catch (ex) {
- // IE throws unspecified error here if TinyMCE is placed in a frame/iframe
- }
-
- // We have W3C ranges and it's IE then fake control selection since IE9 doesn't handle that correctly yet
- if (tinymce.isIE && rng && rng.setStart && doc.selection.createRange().item) {
- elm = doc.selection.createRange().item(0);
- rng = doc.createRange();
- rng.setStartBefore(elm);
- rng.setEndAfter(elm);
- }
-
- // No range found then create an empty one
- // This can occur when the editor is placed in a hidden container element on Gecko
- // Or on IE when there was an exception
- if (!rng) {
- rng = doc.createRange ? doc.createRange() : doc.body.createTextRange();
- }
-
- // If range is at start of document then move it to start of body
- if (rng.setStart && rng.startContainer.nodeType === 9 && rng.collapsed) {
- elm = self.dom.getRoot();
- rng.setStart(elm, 0);
- rng.setEnd(elm, 0);
- }
-
- if (self.selectedRange && self.explicitRange) {
- if (rng.compareBoundaryPoints(rng.START_TO_START, self.selectedRange) === 0 && rng.compareBoundaryPoints(rng.END_TO_END, self.selectedRange) === 0) {
- // Safari, Opera and Chrome only ever select text which causes the range to change.
- // This lets us use the originally set range if the selection hasn't been changed by the user.
- rng = self.explicitRange;
- } else {
- self.selectedRange = null;
- self.explicitRange = null;
- }
- }
-
- return rng;
- },
-
- setRng : function(r, forward) {
- var s, t = this;
-
- if (!t.tridentSel) {
- s = t.getSel();
-
- if (s) {
- t.explicitRange = r;
-
- try {
- s.removeAllRanges();
- } catch (ex) {
- // IE9 might throw errors here don't know why
- }
-
- s.addRange(r);
-
- // Forward is set to false and we have an extend function
- if (forward === false && s.extend) {
- s.collapse(r.endContainer, r.endOffset);
- s.extend(r.startContainer, r.startOffset);
- }
-
- // adding range isn't always successful so we need to check range count otherwise an exception can occur
- t.selectedRange = s.rangeCount > 0 ? s.getRangeAt(0) : null;
- }
- } else {
- // Is W3C Range
- if (r.cloneRange) {
- try {
- t.tridentSel.addRange(r);
- return;
- } catch (ex) {
- //IE9 throws an error here if called before selection is placed in the editor
- }
- }
-
- // Is IE specific range
- try {
- r.select();
- } catch (ex) {
- // Needed for some odd IE bug #1843306
- }
- }
- },
-
- setNode : function(n) {
- var t = this;
-
- t.setContent(t.dom.getOuterHTML(n));
-
- return n;
- },
-
- getNode : function() {
- var t = this, rng = t.getRng(), sel = t.getSel(), elm, start = rng.startContainer, end = rng.endContainer;
-
- function skipEmptyTextNodes(n, forwards) {
- var orig = n;
- while (n && n.nodeType === 3 && n.length === 0) {
- n = forwards ? n.nextSibling : n.previousSibling;
- }
- return n || orig;
- };
-
- // Range maybe lost after the editor is made visible again
- if (!rng)
- return t.dom.getRoot();
-
- if (rng.setStart) {
- elm = rng.commonAncestorContainer;
-
- // Handle selection a image or other control like element such as anchors
- if (!rng.collapsed) {
- if (rng.startContainer == rng.endContainer) {
- if (rng.endOffset - rng.startOffset < 2) {
- if (rng.startContainer.hasChildNodes())
- elm = rng.startContainer.childNodes[rng.startOffset];
- }
- }
-
- // If the anchor node is a element instead of a text node then return this element
- //if (tinymce.isWebKit && sel.anchorNode && sel.anchorNode.nodeType == 1)
- // return sel.anchorNode.childNodes[sel.anchorOffset];
-
- // Handle cases where the selection is immediately wrapped around a node and return that node instead of it's parent.
- // This happens when you double click an underlined word in FireFox.
- if (start.nodeType === 3 && end.nodeType === 3) {
- if (start.length === rng.startOffset) {
- start = skipEmptyTextNodes(start.nextSibling, true);
- } else {
- start = start.parentNode;
- }
- if (rng.endOffset === 0) {
- end = skipEmptyTextNodes(end.previousSibling, false);
- } else {
- end = end.parentNode;
- }
-
- if (start && start === end)
- return start;
- }
- }
-
- if (elm && elm.nodeType == 3)
- return elm.parentNode;
-
- return elm;
- }
-
- return rng.item ? rng.item(0) : rng.parentElement();
- },
-
- getSelectedBlocks : function(st, en) {
- var t = this, dom = t.dom, sb, eb, n, bl = [];
-
- sb = dom.getParent(st || t.getStart(), dom.isBlock);
- eb = dom.getParent(en || t.getEnd(), dom.isBlock);
-
- if (sb)
- bl.push(sb);
-
- if (sb && eb && sb != eb) {
- n = sb;
-
- var walker = new TreeWalker(sb, dom.getRoot());
- while ((n = walker.next()) && n != eb) {
- if (dom.isBlock(n))
- bl.push(n);
- }
- }
-
- if (eb && sb != eb)
- bl.push(eb);
-
- return bl;
- },
-
- isForward: function(){
- var dom = this.dom, sel = this.getSel(), anchorRange, focusRange;
-
- // No support for selection direction then always return true
- if (!sel || sel.anchorNode == null || sel.focusNode == null) {
- return true;
- }
-
- anchorRange = dom.createRng();
- anchorRange.setStart(sel.anchorNode, sel.anchorOffset);
- anchorRange.collapse(true);
-
- focusRange = dom.createRng();
- focusRange.setStart(sel.focusNode, sel.focusOffset);
- focusRange.collapse(true);
-
- return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0;
- },
-
- normalize : function() {
- var self = this, rng, normalized, collapsed, node, sibling;
-
- function normalizeEndPoint(start) {
- var container, offset, walker, dom = self.dom, body = dom.getRoot(), node, nonEmptyElementsMap, nodeName;
-
- function hasBrBeforeAfter(node, left) {
- var walker = new TreeWalker(node, dom.getParent(node.parentNode, dom.isBlock) || body);
-
- while (node = walker[left ? 'prev' : 'next']()) {
- if (node.nodeName === "BR") {
- return true;
- }
- }
- };
-
- // Walks the dom left/right to find a suitable text node to move the endpoint into
- // It will only walk within the current parent block or body and will stop if it hits a block or a BR/IMG
- function findTextNodeRelative(left, startNode) {
- var walker, lastInlineElement;
-
- startNode = startNode || container;
- walker = new TreeWalker(startNode, dom.getParent(startNode.parentNode, dom.isBlock) || body);
-
- // Walk left until we hit a text node we can move to or a block/br/img
- while (node = walker[left ? 'prev' : 'next']()) {
- // Found text node that has a length
- if (node.nodeType === 3 && node.nodeValue.length > 0) {
- container = node;
- offset = left ? node.nodeValue.length : 0;
- normalized = true;
- return;
- }
-
- // Break if we find a block or a BR/IMG/INPUT etc
- if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
- return;
- }
-
- lastInlineElement = node;
- }
-
- // Only fetch the last inline element when in caret mode for now
- if (collapsed && lastInlineElement) {
- container = lastInlineElement;
- normalized = true;
- offset = 0;
- }
- };
-
- container = rng[(start ? 'start' : 'end') + 'Container'];
- offset = rng[(start ? 'start' : 'end') + 'Offset'];
- nonEmptyElementsMap = dom.schema.getNonEmptyElements();
-
- // If the container is a document move it to the body element
- if (container.nodeType === 9) {
- container = dom.getRoot();
- offset = 0;
- }
-
- // If the container is body try move it into the closest text node or position
- if (container === body) {
- // If start is before/after a image, table etc
- if (start) {
- node = container.childNodes[offset > 0 ? offset - 1 : 0];
- if (node) {
- nodeName = node.nodeName.toLowerCase();
- if (nonEmptyElementsMap[node.nodeName] || node.nodeName == "TABLE") {
- return;
- }
- }
- }
-
- // Resolve the index
- if (container.hasChildNodes()) {
- container = container.childNodes[Math.min(!start && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1)];
- offset = 0;
-
- // Don't walk into elements that doesn't have any child nodes like a IMG
- if (container.hasChildNodes() && !/TABLE/.test(container.nodeName)) {
- // Walk the DOM to find a text node to place the caret at or a BR
- node = container;
- walker = new TreeWalker(container, body);
-
- do {
- // Found a text node use that position
- if (node.nodeType === 3 && node.nodeValue.length > 0) {
- offset = start ? 0 : node.nodeValue.length;
- container = node;
- normalized = true;
- break;
- }
-
- // Found a BR/IMG element that we can place the caret before
- if (nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
- offset = dom.nodeIndex(node);
- container = node.parentNode;
-
- // Put caret after image when moving the end point
- if (node.nodeName == "IMG" && !start) {
- offset++;
- }
-
- normalized = true;
- break;
- }
- } while (node = (start ? walker.next() : walker.prev()));
- }
- }
- }
-
- // Lean the caret to the left if possible
- if (collapsed) {
- // So this: <b>x</b><i>|x</i>
- // Becomes: <b>x|</b><i>x</i>
- // Seems that only gecko has issues with this
- if (container.nodeType === 3 && offset === 0) {
- findTextNodeRelative(true);
- }
-
- // Lean left into empty inline elements when the caret is before a BR
- // So this: <i><b></b><i>|<br></i>
- // Becomes: <i><b>|</b><i><br></i>
- // Seems that only gecko has issues with this
- if (container.nodeType === 1) {
- node = container.childNodes[offset];
- if(node && node.nodeName === 'BR' && !hasBrBeforeAfter(node) && !hasBrBeforeAfter(node, true)) {
- findTextNodeRelative(true, container.childNodes[offset]);
- }
- }
- }
-
- // Lean the start of the selection right if possible
- // So this: x[<b>x]</b>
- // Becomes: x<b>[x]</b>
- if (start && !collapsed && container.nodeType === 3 && offset === container.nodeValue.length) {
- findTextNodeRelative(false);
- }
-
- // Set endpoint if it was normalized
- if (normalized)
- rng['set' + (start ? 'Start' : 'End')](container, offset);
- };
-
- // Normalize only on non IE browsers for now
- if (tinymce.isIE)
- return;
-
- rng = self.getRng();
- collapsed = rng.collapsed;
-
- // Normalize the end points
- normalizeEndPoint(true);
-
- if (!collapsed)
- normalizeEndPoint();
-
- // Set the selection if it was normalized
- if (normalized) {
- // If it was collapsed then make sure it still is
- if (collapsed) {
- rng.collapse(true);
- }
-
- //console.log(self.dom.dumpRng(rng));
- self.setRng(rng, self.isForward());
- }
- },
-
- destroy : function(s) {
- var t = this;
-
- t.win = null;
-
- // Manual destroy then remove unload handler
- if (!s)
- tinymce.removeUnload(t.destroy);
- },
-
- // IE has an issue where you can't select/move the caret by clicking outside the body if the document is in standards mode
- _fixIESelection : function() {
- var dom = this.dom, doc = dom.doc, body = doc.body, started, startRng, htmlElm;
-
- // Return range from point or null if it failed
- function rngFromPoint(x, y) {
- var rng = body.createTextRange();
-
- try {
- rng.moveToPoint(x, y);
- } catch (ex) {
- // IE sometimes throws and exception, so lets just ignore it
- rng = null;
- }
-
- return rng;
- };
-
- // Fires while the selection is changing
- function selectionChange(e) {
- var pointRng;
-
- // Check if the button is down or not
- if (e.button) {
- // Create range from mouse position
- pointRng = rngFromPoint(e.x, e.y);
-
- if (pointRng) {
- // Check if pointRange is before/after selection then change the endPoint
- if (pointRng.compareEndPoints('StartToStart', startRng) > 0)
- pointRng.setEndPoint('StartToStart', startRng);
- else
- pointRng.setEndPoint('EndToEnd', startRng);
-
- pointRng.select();
- }
- } else
- endSelection();
- }
-
- // Removes listeners
- function endSelection() {
- var rng = doc.selection.createRange();
-
- // If the range is collapsed then use the last start range
- if (startRng && !rng.item && rng.compareEndPoints('StartToEnd', rng) === 0)
- startRng.select();
-
- dom.unbind(doc, 'mouseup', endSelection);
- dom.unbind(doc, 'mousemove', selectionChange);
- startRng = started = 0;
- };
-
- // Make HTML element unselectable since we are going to handle selection by hand
- doc.documentElement.unselectable = true;
-
- // Detect when user selects outside BODY
- dom.bind(doc, ['mousedown', 'contextmenu'], function(e) {
- if (e.target.nodeName === 'HTML') {
- if (started)
- endSelection();
-
- // Detect vertical scrollbar, since IE will fire a mousedown on the scrollbar and have target set as HTML
- htmlElm = doc.documentElement;
- if (htmlElm.scrollHeight > htmlElm.clientHeight)
- return;
-
- started = 1;
- // Setup start position
- startRng = rngFromPoint(e.x, e.y);
- if (startRng) {
- // Listen for selection change events
- dom.bind(doc, 'mouseup', endSelection);
- dom.bind(doc, 'mousemove', selectionChange);
-
- dom.win.focus();
- startRng.select();
- }
- }
- });
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- tinymce.dom.Serializer = function(settings, dom, schema) {
- var onPreProcess, onPostProcess, isIE = tinymce.isIE, each = tinymce.each, htmlParser;
-
- // Support the old apply_source_formatting option
- if (!settings.apply_source_formatting)
- settings.indent = false;
-
- // Default DOM and Schema if they are undefined
- dom = dom || tinymce.DOM;
- schema = schema || new tinymce.html.Schema(settings);
- settings.entity_encoding = settings.entity_encoding || 'named';
- settings.remove_trailing_brs = "remove_trailing_brs" in settings ? settings.remove_trailing_brs : true;
-
- onPreProcess = new tinymce.util.Dispatcher(self);
-
- onPostProcess = new tinymce.util.Dispatcher(self);
-
- htmlParser = new tinymce.html.DomParser(settings, schema);
-
- // Convert move data-mce-src, data-mce-href and data-mce-style into nodes or process them if needed
- htmlParser.addAttributeFilter('src,href,style', function(nodes, name) {
- var i = nodes.length, node, value, internalName = 'data-mce-' + name, urlConverter = settings.url_converter, urlConverterScope = settings.url_converter_scope, undef;
-
- while (i--) {
- node = nodes[i];
-
- value = node.attributes.map[internalName];
- if (value !== undef) {
- // Set external name to internal value and remove internal
- node.attr(name, value.length > 0 ? value : null);
- node.attr(internalName, null);
- } else {
- // No internal attribute found then convert the value we have in the DOM
- value = node.attributes.map[name];
-
- if (name === "style")
- value = dom.serializeStyle(dom.parseStyle(value), node.name);
- else if (urlConverter)
- value = urlConverter.call(urlConverterScope, value, name, node.name);
-
- node.attr(name, value.length > 0 ? value : null);
- }
- }
- });
-
- // Remove internal classes mceItem<..> or mceSelected
- htmlParser.addAttributeFilter('class', function(nodes, name) {
- var i = nodes.length, node, value;
-
- while (i--) {
- node = nodes[i];
- value = node.attr('class').replace(/(?:^|\s)mce(Item\w+|Selected)(?!\S)/g, '');
- node.attr('class', value.length > 0 ? value : null);
- }
- });
-
- // Remove bookmark elements
- htmlParser.addAttributeFilter('data-mce-type', function(nodes, name, args) {
- var i = nodes.length, node;
-
- while (i--) {
- node = nodes[i];
-
- if (node.attributes.map['data-mce-type'] === 'bookmark' && !args.cleanup)
- node.remove();
- }
- });
-
- // Remove expando attributes
- htmlParser.addAttributeFilter('data-mce-expando', function(nodes, name, args) {
- var i = nodes.length;
-
- while (i--) {
- nodes[i].attr(name, null);
- }
- });
-
- // Force script into CDATA sections and remove the mce- prefix also add comments around styles
- htmlParser.addNodeFilter('script,style', function(nodes, name) {
- var i = nodes.length, node, value;
-
- function trim(value) {
- return value.replace(/(<!--\[CDATA\[|\]\]-->)/g, '\n')
- .replace(/^[\r\n]*|[\r\n]*$/g, '')
- .replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi, '')
- .replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g, '');
- };
-
- while (i--) {
- node = nodes[i];
- value = node.firstChild ? node.firstChild.value : '';
-
- if (name === "script") {
- // Remove mce- prefix from script elements
- node.attr('type', (node.attr('type') || 'text/javascript').replace(/^mce\-/, ''));
-
- if (value.length > 0)
- node.firstChild.value = '// <![CDATA[\n' + trim(value) + '\n// ]]>';
- } else {
- if (value.length > 0)
- node.firstChild.value = '<!--\n' + trim(value) + '\n-->';
- }
- }
- });
-
- // Convert comments to cdata and handle protected comments
- htmlParser.addNodeFilter('#comment', function(nodes, name) {
- var i = nodes.length, node;
-
- while (i--) {
- node = nodes[i];
-
- if (node.value.indexOf('[CDATA[') === 0) {
- node.name = '#cdata';
- node.type = 4;
- node.value = node.value.replace(/^\[CDATA\[|\]\]$/g, '');
- } else if (node.value.indexOf('mce:protected ') === 0) {
- node.name = "#text";
- node.type = 3;
- node.raw = true;
- node.value = unescape(node.value).substr(14);
- }
- }
- });
-
- htmlParser.addNodeFilter('xml:namespace,input', function(nodes, name) {
- var i = nodes.length, node;
-
- while (i--) {
- node = nodes[i];
- if (node.type === 7)
- node.remove();
- else if (node.type === 1) {
- if (name === "input" && !("type" in node.attributes.map))
- node.attr('type', 'text');
- }
- }
- });
-
- // Fix list elements, TODO: Replace this later
- if (settings.fix_list_elements) {
- htmlParser.addNodeFilter('ul,ol', function(nodes, name) {
- var i = nodes.length, node, parentNode;
-
- while (i--) {
- node = nodes[i];
- parentNode = node.parent;
-
- if (parentNode.name === 'ul' || parentNode.name === 'ol') {
- if (node.prev && node.prev.name === 'li') {
- node.prev.append(node);
- }
- }
- }
- });
- }
-
- // Remove internal data attributes
- htmlParser.addAttributeFilter('data-mce-src,data-mce-href,data-mce-style', function(nodes, name) {
- var i = nodes.length;
-
- while (i--) {
- nodes[i].attr(name, null);
- }
- });
-
- // Return public methods
- return {
- schema : schema,
-
- addNodeFilter : htmlParser.addNodeFilter,
-
- addAttributeFilter : htmlParser.addAttributeFilter,
-
- onPreProcess : onPreProcess,
-
- onPostProcess : onPostProcess,
-
- serialize : function(node, args) {
- var impl, doc, oldDoc, htmlSerializer, content;
-
- // Explorer won't clone contents of script and style and the
- // selected index of select elements are cleared on a clone operation.
- if (isIE && dom.select('script,style,select,map').length > 0) {
- content = node.innerHTML;
- node = node.cloneNode(false);
- dom.setHTML(node, content);
- } else
- node = node.cloneNode(true);
-
- // Nodes needs to be attached to something in WebKit/Opera
- // Older builds of Opera crashes if you attach the node to an document created dynamically
- // and since we can't feature detect a crash we need to sniff the acutal build number
- // This fix will make DOM ranges and make Sizzle happy!
- impl = node.ownerDocument.implementation;
- if (impl.createHTMLDocument) {
- // Create an empty HTML document
- doc = impl.createHTMLDocument("");
-
- // Add the element or it's children if it's a body element to the new document
- each(node.nodeName == 'BODY' ? node.childNodes : [node], function(node) {
- doc.body.appendChild(doc.importNode(node, true));
- });
-
- // Grab first child or body element for serialization
- if (node.nodeName != 'BODY')
- node = doc.body.firstChild;
- else
- node = doc.body;
-
- // set the new document in DOMUtils so createElement etc works
- oldDoc = dom.doc;
- dom.doc = doc;
- }
-
- args = args || {};
- args.format = args.format || 'html';
-
- // Pre process
- if (!args.no_events) {
- args.node = node;
- onPreProcess.dispatch(self, args);
- }
-
- // Setup serializer
- htmlSerializer = new tinymce.html.Serializer(settings, schema);
-
- // Parse and serialize HTML
- args.content = htmlSerializer.serialize(
- htmlParser.parse(tinymce.trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node)), args)
- );
-
- // Replace all BOM characters for now until we can find a better solution
- if (!args.cleanup)
- args.content = args.content.replace(/\uFEFF|\u200B/g, '');
-
- // Post process
- if (!args.no_events)
- onPostProcess.dispatch(self, args);
-
- // Restore the old document if it was changed
- if (oldDoc)
- dom.doc = oldDoc;
-
- args.node = null;
-
- return args.content;
- },
-
- addRules : function(rules) {
- schema.addValidElements(rules);
- },
-
- setRules : function(rules) {
- schema.setValidElements(rules);
- }
- };
- };
-})(tinymce);
-(function(tinymce) {
- tinymce.dom.ScriptLoader = function(settings) {
- var QUEUED = 0,
- LOADING = 1,
- LOADED = 2,
- states = {},
- queue = [],
- scriptLoadedCallbacks = {},
- queueLoadedCallbacks = [],
- loading = 0,
- undef;
-
- function loadScript(url, callback) {
- var t = this, dom = tinymce.DOM, elm, uri, loc, id;
-
- // Execute callback when script is loaded
- function done() {
- dom.remove(id);
-
- if (elm)
- elm.onreadystatechange = elm.onload = elm = null;
-
- callback();
- };
-
- function error() {
- // Report the error so it's easier for people to spot loading errors
- if (typeof(console) !== "undefined" && console.log)
- console.log("Failed to load: " + url);
-
- // We can't mark it as done if there is a load error since
- // A) We don't want to produce 404 errors on the server and
- // B) the onerror event won't fire on all browsers.
- // done();
- };
-
- id = dom.uniqueId();
-
- if (tinymce.isIE6) {
- uri = new tinymce.util.URI(url);
- loc = location;
-
- // If script is from same domain and we
- // use IE 6 then use XHR since it's more reliable
- if (uri.host == loc.hostname && uri.port == loc.port && (uri.protocol + ':') == loc.protocol && uri.protocol.toLowerCase() != 'file') {
- tinymce.util.XHR.send({
- url : tinymce._addVer(uri.getURI()),
- success : function(content) {
- // Create new temp script element
- var script = dom.create('script', {
- type : 'text/javascript'
- });
-
- // Evaluate script in global scope
- script.text = content;
- document.getElementsByTagName('head')[0].appendChild(script);
- dom.remove(script);
-
- done();
- },
-
- error : error
- });
-
- return;
- }
- }
-
- // Create new script element
- elm = dom.create('script', {
- id : id,
- type : 'text/javascript',
- src : tinymce._addVer(url)
- });
-
- // Add onload listener for non IE browsers since IE9
- // fires onload event before the script is parsed and executed
- if (!tinymce.isIE)
- elm.onload = done;
-
- // Add onerror event will get fired on some browsers but not all of them
- elm.onerror = error;
-
- // Opera 9.60 doesn't seem to fire the onreadystate event at correctly
- if (!tinymce.isOpera) {
- elm.onreadystatechange = function() {
- var state = elm.readyState;
-
- // Loaded state is passed on IE 6 however there
- // are known issues with this method but we can't use
- // XHR in a cross domain loading
- if (state == 'complete' || state == 'loaded')
- done();
- };
- }
-
- // Most browsers support this feature so we report errors
- // for those at least to help users track their missing plugins etc
- // todo: Removed since it produced error if the document is unloaded by navigating away, re-add it as an option
- /*elm.onerror = function() {
- alert('Failed to load: ' + url);
- };*/
-
- // Add script to document
- (document.getElementsByTagName('head')[0] || document.body).appendChild(elm);
- };
-
- this.isDone = function(url) {
- return states[url] == LOADED;
- };
-
- this.markDone = function(url) {
- states[url] = LOADED;
- };
-
- this.add = this.load = function(url, callback, scope) {
- var item, state = states[url];
-
- // Add url to load queue
- if (state == undef) {
- queue.push(url);
- states[url] = QUEUED;
- }
-
- if (callback) {
- // Store away callback for later execution
- if (!scriptLoadedCallbacks[url])
- scriptLoadedCallbacks[url] = [];
-
- scriptLoadedCallbacks[url].push({
- func : callback,
- scope : scope || this
- });
- }
- };
-
- this.loadQueue = function(callback, scope) {
- this.loadScripts(queue, callback, scope);
- };
-
- this.loadScripts = function(scripts, callback, scope) {
- var loadScripts;
-
- function execScriptLoadedCallbacks(url) {
- // Execute URL callback functions
- tinymce.each(scriptLoadedCallbacks[url], function(callback) {
- callback.func.call(callback.scope);
- });
-
- scriptLoadedCallbacks[url] = undef;
- };
-
- queueLoadedCallbacks.push({
- func : callback,
- scope : scope || this
- });
-
- loadScripts = function() {
- var loadingScripts = tinymce.grep(scripts);
-
- // Current scripts has been handled
- scripts.length = 0;
-
- // Load scripts that needs to be loaded
- tinymce.each(loadingScripts, function(url) {
- // Script is already loaded then execute script callbacks directly
- if (states[url] == LOADED) {
- execScriptLoadedCallbacks(url);
- return;
- }
-
- // Is script not loading then start loading it
- if (states[url] != LOADING) {
- states[url] = LOADING;
- loading++;
-
- loadScript(url, function() {
- states[url] = LOADED;
- loading--;
-
- execScriptLoadedCallbacks(url);
-
- // Load more scripts if they where added by the recently loaded script
- loadScripts();
- });
- }
- });
-
- // No scripts are currently loading then execute all pending queue loaded callbacks
- if (!loading) {
- tinymce.each(queueLoadedCallbacks, function(callback) {
- callback.func.call(callback.scope);
- });
-
- queueLoadedCallbacks.length = 0;
- }
- };
-
- loadScripts();
- };
- };
-
- // Global script loader
- tinymce.ScriptLoader = new tinymce.dom.ScriptLoader();
-})(tinymce);
-
-(function(tinymce) {
- tinymce.dom.RangeUtils = function(dom) {
- var INVISIBLE_CHAR = '\uFEFF';
-
- this.walk = function(rng, callback) {
- var startContainer = rng.startContainer,
- startOffset = rng.startOffset,
- endContainer = rng.endContainer,
- endOffset = rng.endOffset,
- ancestor, startPoint,
- endPoint, node, parent, siblings, nodes;
-
- // Handle table cell selection the table plugin enables
- // you to fake select table cells and perform formatting actions on them
- nodes = dom.select('td.mceSelected,th.mceSelected');
- if (nodes.length > 0) {
- tinymce.each(nodes, function(node) {
- callback([node]);
- });
-
- return;
- }
-
- function exclude(nodes) {
- var node;
-
- // First node is excluded
- node = nodes[0];
- if (node.nodeType === 3 && node === startContainer && startOffset >= node.nodeValue.length) {
- nodes.splice(0, 1);
- }
-
- // Last node is excluded
- node = nodes[nodes.length - 1];
- if (endOffset === 0 && nodes.length > 0 && node === endContainer && node.nodeType === 3) {
- nodes.splice(nodes.length - 1, 1);
- }
-
- return nodes;
- };
-
- function collectSiblings(node, name, end_node) {
- var siblings = [];
-
- for (; node && node != end_node; node = node[name])
- siblings.push(node);
-
- return siblings;
- };
-
- function findEndPoint(node, root) {
- do {
- if (node.parentNode == root)
- return node;
-
- node = node.parentNode;
- } while(node);
- };
-
- function walkBoundary(start_node, end_node, next) {
- var siblingName = next ? 'nextSibling' : 'previousSibling';
-
- for (node = start_node, parent = node.parentNode; node && node != end_node; node = parent) {
- parent = node.parentNode;
- siblings = collectSiblings(node == start_node ? node : node[siblingName], siblingName);
-
- if (siblings.length) {
- if (!next)
- siblings.reverse();
-
- callback(exclude(siblings));
- }
- }
- };
-
- // If index based start position then resolve it
- if (startContainer.nodeType == 1 && startContainer.hasChildNodes())
- startContainer = startContainer.childNodes[startOffset];
-
- // If index based end position then resolve it
- if (endContainer.nodeType == 1 && endContainer.hasChildNodes())
- endContainer = endContainer.childNodes[Math.min(endOffset - 1, endContainer.childNodes.length - 1)];
-
- // Same container
- if (startContainer == endContainer)
- return callback(exclude([startContainer]));
-
- // Find common ancestor and end points
- ancestor = dom.findCommonAncestor(startContainer, endContainer);
-
- // Process left side
- for (node = startContainer; node; node = node.parentNode) {
- if (node === endContainer)
- return walkBoundary(startContainer, ancestor, true);
-
- if (node === ancestor)
- break;
- }
-
- // Process right side
- for (node = endContainer; node; node = node.parentNode) {
- if (node === startContainer)
- return walkBoundary(endContainer, ancestor);
-
- if (node === ancestor)
- break;
- }
-
- // Find start/end point
- startPoint = findEndPoint(startContainer, ancestor) || startContainer;
- endPoint = findEndPoint(endContainer, ancestor) || endContainer;
-
- // Walk left leaf
- walkBoundary(startContainer, startPoint, true);
-
- // Walk the middle from start to end point
- siblings = collectSiblings(
- startPoint == startContainer ? startPoint : startPoint.nextSibling,
- 'nextSibling',
- endPoint == endContainer ? endPoint.nextSibling : endPoint
- );
-
- if (siblings.length)
- callback(exclude(siblings));
-
- // Walk right leaf
- walkBoundary(endContainer, endPoint);
- };
-
- this.split = function(rng) {
- var startContainer = rng.startContainer,
- startOffset = rng.startOffset,
- endContainer = rng.endContainer,
- endOffset = rng.endOffset;
-
- function splitText(node, offset) {
- return node.splitText(offset);
- };
-
- // Handle single text node
- if (startContainer == endContainer && startContainer.nodeType == 3) {
- if (startOffset > 0 && startOffset < startContainer.nodeValue.length) {
- endContainer = splitText(startContainer, startOffset);
- startContainer = endContainer.previousSibling;
-
- if (endOffset > startOffset) {
- endOffset = endOffset - startOffset;
- startContainer = endContainer = splitText(endContainer, endOffset).previousSibling;
- endOffset = endContainer.nodeValue.length;
- startOffset = 0;
- } else {
- endOffset = 0;
- }
- }
- } else {
- // Split startContainer text node if needed
- if (startContainer.nodeType == 3 && startOffset > 0 && startOffset < startContainer.nodeValue.length) {
- startContainer = splitText(startContainer, startOffset);
- startOffset = 0;
- }
-
- // Split endContainer text node if needed
- if (endContainer.nodeType == 3 && endOffset > 0 && endOffset < endContainer.nodeValue.length) {
- endContainer = splitText(endContainer, endOffset).previousSibling;
- endOffset = endContainer.nodeValue.length;
- }
- }
-
- return {
- startContainer : startContainer,
- startOffset : startOffset,
- endContainer : endContainer,
- endOffset : endOffset
- };
- };
-
- };
-
- tinymce.dom.RangeUtils.compareRanges = function(rng1, rng2) {
- if (rng1 && rng2) {
- // Compare native IE ranges
- if (rng1.item || rng1.duplicate) {
- // Both are control ranges and the selected element matches
- if (rng1.item && rng2.item && rng1.item(0) === rng2.item(0))
- return true;
-
- // Both are text ranges and the range matches
- if (rng1.isEqual && rng2.isEqual && rng2.isEqual(rng1))
- return true;
- } else {
- // Compare w3c ranges
- return rng1.startContainer == rng2.startContainer && rng1.startOffset == rng2.startOffset;
- }
- }
-
- return false;
- };
-})(tinymce);
-
-(function(tinymce) {
- var Event = tinymce.dom.Event, each = tinymce.each;
-
- tinymce.create('tinymce.ui.KeyboardNavigation', {
- KeyboardNavigation: function(settings, dom) {
- var t = this, root = settings.root, items = settings.items,
- enableUpDown = settings.enableUpDown, enableLeftRight = settings.enableLeftRight || !settings.enableUpDown,
- excludeFromTabOrder = settings.excludeFromTabOrder,
- itemFocussed, itemBlurred, rootKeydown, rootFocussed, focussedId;
-
- dom = dom || tinymce.DOM;
-
- itemFocussed = function(evt) {
- focussedId = evt.target.id;
- };
-
- itemBlurred = function(evt) {
- dom.setAttrib(evt.target.id, 'tabindex', '-1');
- };
-
- rootFocussed = function(evt) {
- var item = dom.get(focussedId);
- dom.setAttrib(item, 'tabindex', '0');
- item.focus();
- };
-
- t.focus = function() {
- dom.get(focussedId).focus();
- };
-
- t.destroy = function() {
- each(items, function(item) {
- dom.unbind(dom.get(item.id), 'focus', itemFocussed);
- dom.unbind(dom.get(item.id), 'blur', itemBlurred);
- });
-
- dom.unbind(dom.get(root), 'focus', rootFocussed);
- dom.unbind(dom.get(root), 'keydown', rootKeydown);
-
- items = dom = root = t.focus = itemFocussed = itemBlurred = rootKeydown = rootFocussed = null;
- t.destroy = function() {};
- };
-
- t.moveFocus = function(dir, evt) {
- var idx = -1, controls = t.controls, newFocus;
-
- if (!focussedId)
- return;
-
- each(items, function(item, index) {
- if (item.id === focussedId) {
- idx = index;
- return false;
- }
- });
-
- idx += dir;
- if (idx < 0) {
- idx = items.length - 1;
- } else if (idx >= items.length) {
- idx = 0;
- }
-
- newFocus = items[idx];
- dom.setAttrib(focussedId, 'tabindex', '-1');
- dom.setAttrib(newFocus.id, 'tabindex', '0');
- dom.get(newFocus.id).focus();
-
- if (settings.actOnFocus) {
- settings.onAction(newFocus.id);
- }
-
- if (evt)
- Event.cancel(evt);
- };
-
- rootKeydown = function(evt) {
- var DOM_VK_LEFT = 37, DOM_VK_RIGHT = 39, DOM_VK_UP = 38, DOM_VK_DOWN = 40, DOM_VK_ESCAPE = 27, DOM_VK_ENTER = 14, DOM_VK_RETURN = 13, DOM_VK_SPACE = 32;
-
- switch (evt.keyCode) {
- case DOM_VK_LEFT:
- if (enableLeftRight) t.moveFocus(-1);
- break;
-
- case DOM_VK_RIGHT:
- if (enableLeftRight) t.moveFocus(1);
- break;
-
- case DOM_VK_UP:
- if (enableUpDown) t.moveFocus(-1);
- break;
-
- case DOM_VK_DOWN:
- if (enableUpDown) t.moveFocus(1);
- break;
-
- case DOM_VK_ESCAPE:
- if (settings.onCancel) {
- settings.onCancel();
- Event.cancel(evt);
- }
- break;
-
- case DOM_VK_ENTER:
- case DOM_VK_RETURN:
- case DOM_VK_SPACE:
- if (settings.onAction) {
- settings.onAction(focussedId);
- Event.cancel(evt);
- }
- break;
- }
- };
-
- // Set up state and listeners for each item.
- each(items, function(item, idx) {
- var tabindex;
-
- if (!item.id) {
- item.id = dom.uniqueId('_mce_item_');
- }
-
- if (excludeFromTabOrder) {
- dom.bind(item.id, 'blur', itemBlurred);
- tabindex = '-1';
- } else {
- tabindex = (idx === 0 ? '0' : '-1');
- }
-
- dom.setAttrib(item.id, 'tabindex', tabindex);
- dom.bind(dom.get(item.id), 'focus', itemFocussed);
- });
-
- // Setup initial state for root element.
- if (items[0]){
- focussedId = items[0].id;
- }
-
- dom.setAttrib(root, 'tabindex', '-1');
-
- // Setup listeners for root element.
- dom.bind(dom.get(root), 'focus', rootFocussed);
- dom.bind(dom.get(root), 'keydown', rootKeydown);
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- // Shorten class names
- var DOM = tinymce.DOM, is = tinymce.is;
-
- tinymce.create('tinymce.ui.Control', {
- Control : function(id, s, editor) {
- this.id = id;
- this.settings = s = s || {};
- this.rendered = false;
- this.onRender = new tinymce.util.Dispatcher(this);
- this.classPrefix = '';
- this.scope = s.scope || this;
- this.disabled = 0;
- this.active = 0;
- this.editor = editor;
- },
-
- setAriaProperty : function(property, value) {
- var element = DOM.get(this.id + '_aria') || DOM.get(this.id);
- if (element) {
- DOM.setAttrib(element, 'aria-' + property, !!value);
- }
- },
-
- focus : function() {
- DOM.get(this.id).focus();
- },
-
- setDisabled : function(s) {
- if (s != this.disabled) {
- this.setAriaProperty('disabled', s);
-
- this.setState('Disabled', s);
- this.setState('Enabled', !s);
- this.disabled = s;
- }
- },
-
- isDisabled : function() {
- return this.disabled;
- },
-
- setActive : function(s) {
- if (s != this.active) {
- this.setState('Active', s);
- this.active = s;
- this.setAriaProperty('pressed', s);
- }
- },
-
- isActive : function() {
- return this.active;
- },
-
- setState : function(c, s) {
- var n = DOM.get(this.id);
-
- c = this.classPrefix + c;
-
- if (s)
- DOM.addClass(n, c);
- else
- DOM.removeClass(n, c);
- },
-
- isRendered : function() {
- return this.rendered;
- },
-
- renderHTML : function() {
- },
-
- renderTo : function(n) {
- DOM.setHTML(n, this.renderHTML());
- },
-
- postRender : function() {
- var t = this, b;
-
- // Set pending states
- if (is(t.disabled)) {
- b = t.disabled;
- t.disabled = -1;
- t.setDisabled(b);
- }
-
- if (is(t.active)) {
- b = t.active;
- t.active = -1;
- t.setActive(b);
- }
- },
-
- remove : function() {
- DOM.remove(this.id);
- this.destroy();
- },
-
- destroy : function() {
- tinymce.dom.Event.clear(this.id);
- }
- });
-})(tinymce);
-tinymce.create('tinymce.ui.Container:tinymce.ui.Control', {
- Container : function(id, s, editor) {
- this.parent(id, s, editor);
-
- this.controls = [];
-
- this.lookup = {};
- },
-
- add : function(c) {
- this.lookup[c.id] = c;
- this.controls.push(c);
-
- return c;
- },
-
- get : function(n) {
- return this.lookup[n];
- }
-});
-
-
-tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
- Separator : function(id, s) {
- this.parent(id, s);
- this.classPrefix = 'mceSeparator';
- this.setDisabled(true);
- },
-
- renderHTML : function() {
- return tinymce.DOM.createHTML('span', {'class' : this.classPrefix, role : 'separator', 'aria-orientation' : 'vertical', tabindex : '-1'});
- }
-});
-
-(function(tinymce) {
- var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, walk = tinymce.walk;
-
- tinymce.create('tinymce.ui.MenuItem:tinymce.ui.Control', {
- MenuItem : function(id, s) {
- this.parent(id, s);
- this.classPrefix = 'mceMenuItem';
- },
-
- setSelected : function(s) {
- this.setState('Selected', s);
- this.setAriaProperty('checked', !!s);
- this.selected = s;
- },
-
- isSelected : function() {
- return this.selected;
- },
-
- postRender : function() {
- var t = this;
-
- t.parent();
-
- // Set pending state
- if (is(t.selected))
- t.setSelected(t.selected);
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, walk = tinymce.walk;
-
- tinymce.create('tinymce.ui.Menu:tinymce.ui.MenuItem', {
- Menu : function(id, s) {
- var t = this;
-
- t.parent(id, s);
- t.items = {};
- t.collapsed = false;
- t.menuCount = 0;
- t.onAddItem = new tinymce.util.Dispatcher(this);
- },
-
- expand : function(d) {
- var t = this;
-
- if (d) {
- walk(t, function(o) {
- if (o.expand)
- o.expand();
- }, 'items', t);
- }
-
- t.collapsed = false;
- },
-
- collapse : function(d) {
- var t = this;
-
- if (d) {
- walk(t, function(o) {
- if (o.collapse)
- o.collapse();
- }, 'items', t);
- }
-
- t.collapsed = true;
- },
-
- isCollapsed : function() {
- return this.collapsed;
- },
-
- add : function(o) {
- if (!o.settings)
- o = new tinymce.ui.MenuItem(o.id || DOM.uniqueId(), o);
-
- this.onAddItem.dispatch(this, o);
-
- return this.items[o.id] = o;
- },
-
- addSeparator : function() {
- return this.add({separator : true});
- },
-
- addMenu : function(o) {
- if (!o.collapse)
- o = this.createMenu(o);
-
- this.menuCount++;
-
- return this.add(o);
- },
-
- hasMenus : function() {
- return this.menuCount !== 0;
- },
-
- remove : function(o) {
- delete this.items[o.id];
- },
-
- removeAll : function() {
- var t = this;
-
- walk(t, function(o) {
- if (o.removeAll)
- o.removeAll();
- else
- o.remove();
-
- o.destroy();
- }, 'items', t);
-
- t.items = {};
- },
-
- createMenu : function(o) {
- var m = new tinymce.ui.Menu(o.id || DOM.uniqueId(), o);
-
- m.onAddItem.add(this.onAddItem.dispatch, this.onAddItem);
-
- return m;
- }
- });
-})(tinymce);
-(function(tinymce) {
- var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, Event = tinymce.dom.Event, Element = tinymce.dom.Element;
-
- tinymce.create('tinymce.ui.DropMenu:tinymce.ui.Menu', {
- DropMenu : function(id, s) {
- s = s || {};
- s.container = s.container || DOM.doc.body;
- s.offset_x = s.offset_x || 0;
- s.offset_y = s.offset_y || 0;
- s.vp_offset_x = s.vp_offset_x || 0;
- s.vp_offset_y = s.vp_offset_y || 0;
-
- if (is(s.icons) && !s.icons)
- s['class'] += ' mceNoIcons';
-
- this.parent(id, s);
- this.onShowMenu = new tinymce.util.Dispatcher(this);
- this.onHideMenu = new tinymce.util.Dispatcher(this);
- this.classPrefix = 'mceMenu';
- },
-
- createMenu : function(s) {
- var t = this, cs = t.settings, m;
-
- s.container = s.container || cs.container;
- s.parent = t;
- s.constrain = s.constrain || cs.constrain;
- s['class'] = s['class'] || cs['class'];
- s.vp_offset_x = s.vp_offset_x || cs.vp_offset_x;
- s.vp_offset_y = s.vp_offset_y || cs.vp_offset_y;
- s.keyboard_focus = cs.keyboard_focus;
- m = new tinymce.ui.DropMenu(s.id || DOM.uniqueId(), s);
-
- m.onAddItem.add(t.onAddItem.dispatch, t.onAddItem);
-
- return m;
- },
-
- focus : function() {
- var t = this;
- if (t.keyboardNav) {
- t.keyboardNav.focus();
- }
- },
-
- update : function() {
- var t = this, s = t.settings, tb = DOM.get('menu_' + t.id + '_tbl'), co = DOM.get('menu_' + t.id + '_co'), tw, th;
-
- tw = s.max_width ? Math.min(tb.offsetWidth, s.max_width) : tb.offsetWidth;
- th = s.max_height ? Math.min(tb.offsetHeight, s.max_height) : tb.offsetHeight;
-
- if (!DOM.boxModel)
- t.element.setStyles({width : tw + 2, height : th + 2});
- else
- t.element.setStyles({width : tw, height : th});
-
- if (s.max_width)
- DOM.setStyle(co, 'width', tw);
-
- if (s.max_height) {
- DOM.setStyle(co, 'height', th);
-
- if (tb.clientHeight < s.max_height)
- DOM.setStyle(co, 'overflow', 'hidden');
- }
- },
-
- showMenu : function(x, y, px) {
- var t = this, s = t.settings, co, vp = DOM.getViewPort(), w, h, mx, my, ot = 2, dm, tb, cp = t.classPrefix;
-
- t.collapse(1);
-
- if (t.isMenuVisible)
- return;
-
- if (!t.rendered) {
- co = DOM.add(t.settings.container, t.renderNode());
-
- each(t.items, function(o) {
- o.postRender();
- });
-
- t.element = new Element('menu_' + t.id, {blocker : 1, container : s.container});
- } else
- co = DOM.get('menu_' + t.id);
-
- // Move layer out of sight unless it's Opera since it scrolls to top of page due to an bug
- if (!tinymce.isOpera)
- DOM.setStyles(co, {left : -0xFFFF , top : -0xFFFF});
-
- DOM.show(co);
- t.update();
-
- x += s.offset_x || 0;
- y += s.offset_y || 0;
- vp.w -= 4;
- vp.h -= 4;
-
- // Move inside viewport if not submenu
- if (s.constrain) {
- w = co.clientWidth - ot;
- h = co.clientHeight - ot;
- mx = vp.x + vp.w;
- my = vp.y + vp.h;
-
- if ((x + s.vp_offset_x + w) > mx)
- x = px ? px - w : Math.max(0, (mx - s.vp_offset_x) - w);
-
- if ((y + s.vp_offset_y + h) > my)
- y = Math.max(0, (my - s.vp_offset_y) - h);
- }
-
- DOM.setStyles(co, {left : x , top : y});
- t.element.update();
-
- t.isMenuVisible = 1;
- t.mouseClickFunc = Event.add(co, 'click', function(e) {
- var m;
-
- e = e.target;
-
- if (e && (e = DOM.getParent(e, 'tr')) && !DOM.hasClass(e, cp + 'ItemSub')) {
- m = t.items[e.id];
-
- if (m.isDisabled())
- return;
-
- dm = t;
-
- while (dm) {
- if (dm.hideMenu)
- dm.hideMenu();
-
- dm = dm.settings.parent;
- }
-
- if (m.settings.onclick)
- m.settings.onclick(e);
-
- return false; // Cancel to fix onbeforeunload problem
- }
- });
-
- if (t.hasMenus()) {
- t.mouseOverFunc = Event.add(co, 'mouseover', function(e) {
- var m, r, mi;
-
- e = e.target;
- if (e && (e = DOM.getParent(e, 'tr'))) {
- m = t.items[e.id];
-
- if (t.lastMenu)
- t.lastMenu.collapse(1);
-
- if (m.isDisabled())
- return;
-
- if (e && DOM.hasClass(e, cp + 'ItemSub')) {
- //p = DOM.getPos(s.container);
- r = DOM.getRect(e);
- m.showMenu((r.x + r.w - ot), r.y - ot, r.x);
- t.lastMenu = m;
- DOM.addClass(DOM.get(m.id).firstChild, cp + 'ItemActive');
- }
- }
- });
- }
-
- Event.add(co, 'keydown', t._keyHandler, t);
-
- t.onShowMenu.dispatch(t);
-
- if (s.keyboard_focus) {
- t._setupKeyboardNav();
- }
- },
-
- hideMenu : function(c) {
- var t = this, co = DOM.get('menu_' + t.id), e;
-
- if (!t.isMenuVisible)
- return;
-
- if (t.keyboardNav) t.keyboardNav.destroy();
- Event.remove(co, 'mouseover', t.mouseOverFunc);
- Event.remove(co, 'click', t.mouseClickFunc);
- Event.remove(co, 'keydown', t._keyHandler);
- DOM.hide(co);
- t.isMenuVisible = 0;
-
- if (!c)
- t.collapse(1);
-
- if (t.element)
- t.element.hide();
-
- if (e = DOM.get(t.id))
- DOM.removeClass(e.firstChild, t.classPrefix + 'ItemActive');
-
- t.onHideMenu.dispatch(t);
- },
-
- add : function(o) {
- var t = this, co;
-
- o = t.parent(o);
-
- if (t.isRendered && (co = DOM.get('menu_' + t.id)))
- t._add(DOM.select('tbody', co)[0], o);
-
- return o;
- },
-
- collapse : function(d) {
- this.parent(d);
- this.hideMenu(1);
- },
-
- remove : function(o) {
- DOM.remove(o.id);
- this.destroy();
-
- return this.parent(o);
- },
-
- destroy : function() {
- var t = this, co = DOM.get('menu_' + t.id);
-
- if (t.keyboardNav) t.keyboardNav.destroy();
- Event.remove(co, 'mouseover', t.mouseOverFunc);
- Event.remove(DOM.select('a', co), 'focus', t.mouseOverFunc);
- Event.remove(co, 'click', t.mouseClickFunc);
- Event.remove(co, 'keydown', t._keyHandler);
-
- if (t.element)
- t.element.remove();
-
- DOM.remove(co);
- },
-
- renderNode : function() {
- var t = this, s = t.settings, n, tb, co, w;
-
- w = DOM.create('div', {role: 'listbox', id : 'menu_' + t.id, 'class' : s['class'], 'style' : 'position:absolute;left:0;top:0;z-index:200000;outline:0'});
- if (t.settings.parent) {
- DOM.setAttrib(w, 'aria-parent', 'menu_' + t.settings.parent.id);
- }
- co = DOM.add(w, 'div', {role: 'presentation', id : 'menu_' + t.id + '_co', 'class' : t.classPrefix + (s['class'] ? ' ' + s['class'] : '')});
- t.element = new Element('menu_' + t.id, {blocker : 1, container : s.container});
-
- if (s.menu_line)
- DOM.add(co, 'span', {'class' : t.classPrefix + 'Line'});
-
-// n = DOM.add(co, 'div', {id : 'menu_' + t.id + '_co', 'class' : 'mceMenuContainer'});
- n = DOM.add(co, 'table', {role: 'presentation', id : 'menu_' + t.id + '_tbl', border : 0, cellPadding : 0, cellSpacing : 0});
- tb = DOM.add(n, 'tbody');
-
- each(t.items, function(o) {
- t._add(tb, o);
- });
-
- t.rendered = true;
-
- return w;
- },
-
- // Internal functions
- _setupKeyboardNav : function(){
- var contextMenu, menuItems, t=this;
- contextMenu = DOM.get('menu_' + t.id);
- menuItems = DOM.select('a[role=option]', 'menu_' + t.id);
- menuItems.splice(0,0,contextMenu);
- t.keyboardNav = new tinymce.ui.KeyboardNavigation({
- root: 'menu_' + t.id,
- items: menuItems,
- onCancel: function() {
- t.hideMenu();
- },
- enableUpDown: true
- });
- contextMenu.focus();
- },
-
- _keyHandler : function(evt) {
- var t = this, e;
- switch (evt.keyCode) {
- case 37: // Left
- if (t.settings.parent) {
- t.hideMenu();
- t.settings.parent.focus();
- Event.cancel(evt);
- }
- break;
- case 39: // Right
- if (t.mouseOverFunc)
- t.mouseOverFunc(evt);
- break;
- }
- },
-
- _add : function(tb, o) {
- var n, s = o.settings, a, ro, it, cp = this.classPrefix, ic;
-
- if (s.separator) {
- ro = DOM.add(tb, 'tr', {id : o.id, 'class' : cp + 'ItemSeparator'});
- DOM.add(ro, 'td', {'class' : cp + 'ItemSeparator'});
-
- if (n = ro.previousSibling)
- DOM.addClass(n, 'mceLast');
-
- return;
- }
-
- n = ro = DOM.add(tb, 'tr', {id : o.id, 'class' : cp + 'Item ' + cp + 'ItemEnabled'});
- n = it = DOM.add(n, s.titleItem ? 'th' : 'td');
- n = a = DOM.add(n, 'a', {id: o.id + '_aria', role: s.titleItem ? 'presentation' : 'option', href : 'javascript:;', onclick : "return false;", onmousedown : 'return false;'});
-
- if (s.parent) {
- DOM.setAttrib(a, 'aria-haspopup', 'true');
- DOM.setAttrib(a, 'aria-owns', 'menu_' + o.id);
- }
-
- DOM.addClass(it, s['class']);
-// n = DOM.add(n, 'span', {'class' : 'item'});
-
- ic = DOM.add(n, 'span', {'class' : 'mceIcon' + (s.icon ? ' mce_' + s.icon : '')});
-
- if (s.icon_src)
- DOM.add(ic, 'img', {src : s.icon_src});
-
- n = DOM.add(n, s.element || 'span', {'class' : 'mceText', title : o.settings.title}, o.settings.title);
-
- if (o.settings.style) {
- if (typeof o.settings.style == "function")
- o.settings.style = o.settings.style();
-
- DOM.setAttrib(n, 'style', o.settings.style);
- }
-
- if (tb.childNodes.length == 1)
- DOM.addClass(ro, 'mceFirst');
-
- if ((n = ro.previousSibling) && DOM.hasClass(n, cp + 'ItemSeparator'))
- DOM.addClass(ro, 'mceFirst');
-
- if (o.collapse)
- DOM.addClass(ro, cp + 'ItemSub');
-
- if (n = ro.previousSibling)
- DOM.removeClass(n, 'mceLast');
-
- DOM.addClass(ro, 'mceLast');
- }
- });
-})(tinymce);
-(function(tinymce) {
- var DOM = tinymce.DOM;
-
- tinymce.create('tinymce.ui.Button:tinymce.ui.Control', {
- Button : function(id, s, ed) {
- this.parent(id, s, ed);
- this.classPrefix = 'mceButton';
- },
-
- renderHTML : function() {
- var cp = this.classPrefix, s = this.settings, h, l;
-
- l = DOM.encode(s.label || '');
- h = '<a role="button" id="' + this.id + '" href="javascript:;" class="' + cp + ' ' + cp + 'Enabled ' + s['class'] + (l ? ' ' + cp + 'Labeled' : '') +'" onmousedown="return false;" onclick="return false;" aria-labelledby="' + this.id + '_voice" title="' + DOM.encode(s.title) + '">';
- if (s.image && !(this.editor &&this.editor.forcedHighContrastMode) )
- h += '<img class="mceIcon" src="' + s.image + '" alt="' + DOM.encode(s.title) + '" />' + l;
- else
- h += '<span class="mceIcon ' + s['class'] + '"></span>' + (l ? '<span class="' + cp + 'Label">' + l + '</span>' : '');
-
- h += '<span class="mceVoiceLabel mceIconOnly" style="display: none;" id="' + this.id + '_voice">' + s.title + '</span>';
- h += '</a>';
- return h;
- },
-
- postRender : function() {
- var t = this, s = t.settings, imgBookmark;
-
- // In IE a large image that occupies the entire editor area will be deselected when a button is clicked, so
- // need to keep the selection in case the selection is lost
- if (tinymce.isIE && t.editor) {
- tinymce.dom.Event.add(t.id, 'mousedown', function(e) {
- var nodeName = t.editor.selection.getNode().nodeName;
- imgBookmark = nodeName === 'IMG' ? t.editor.selection.getBookmark() : null;
- });
- }
- tinymce.dom.Event.add(t.id, 'click', function(e) {
- if (!t.isDisabled()) {
- // restore the selection in case the selection is lost in IE
- if (tinymce.isIE && t.editor && imgBookmark !== null) {
- t.editor.selection.moveToBookmark(imgBookmark);
- }
- return s.onclick.call(s.scope, e);
- }
- });
- tinymce.dom.Event.add(t.id, 'keyup', function(e) {
- if (!t.isDisabled() && e.keyCode==tinymce.VK.SPACEBAR)
- return s.onclick.call(s.scope, e);
- });
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher, undef;
-
- tinymce.create('tinymce.ui.ListBox:tinymce.ui.Control', {
- ListBox : function(id, s, ed) {
- var t = this;
-
- t.parent(id, s, ed);
-
- t.items = [];
-
- t.onChange = new Dispatcher(t);
-
- t.onPostRender = new Dispatcher(t);
-
- t.onAdd = new Dispatcher(t);
-
- t.onRenderMenu = new tinymce.util.Dispatcher(this);
-
- t.classPrefix = 'mceListBox';
- t.marked = {};
- },
-
- select : function(va) {
- var t = this, fv, f;
-
- t.marked = {};
-
- if (va == undef)
- return t.selectByIndex(-1);
-
- // Is string or number make function selector
- if (va && typeof(va)=="function")
- f = va;
- else {
- f = function(v) {
- return v == va;
- };
- }
-
- // Do we need to do something?
- if (va != t.selectedValue) {
- // Find item
- each(t.items, function(o, i) {
- if (f(o.value)) {
- fv = 1;
- t.selectByIndex(i);
- return false;
- }
- });
-
- if (!fv)
- t.selectByIndex(-1);
- }
- },
-
- selectByIndex : function(idx) {
- var t = this, e, o, label;
-
- t.marked = {};
-
- if (idx != t.selectedIndex) {
- e = DOM.get(t.id + '_text');
- label = DOM.get(t.id + '_voiceDesc');
- o = t.items[idx];
-
- if (o) {
- t.selectedValue = o.value;
- t.selectedIndex = idx;
- DOM.setHTML(e, DOM.encode(o.title));
- DOM.setHTML(label, t.settings.title + " - " + o.title);
- DOM.removeClass(e, 'mceTitle');
- DOM.setAttrib(t.id, 'aria-valuenow', o.title);
- } else {
- DOM.setHTML(e, DOM.encode(t.settings.title));
- DOM.setHTML(label, DOM.encode(t.settings.title));
- DOM.addClass(e, 'mceTitle');
- t.selectedValue = t.selectedIndex = null;
- DOM.setAttrib(t.id, 'aria-valuenow', t.settings.title);
- }
- e = 0;
- }
- },
-
- mark : function(value) {
- this.marked[value] = true;
- },
-
- add : function(n, v, o) {
- var t = this;
-
- o = o || {};
- o = tinymce.extend(o, {
- title : n,
- value : v
- });
-
- t.items.push(o);
- t.onAdd.dispatch(t, o);
- },
-
- getLength : function() {
- return this.items.length;
- },
-
- renderHTML : function() {
- var h = '', t = this, s = t.settings, cp = t.classPrefix;
-
- h = '<span role="listbox" aria-haspopup="true" aria-labelledby="' + t.id +'_voiceDesc" aria-describedby="' + t.id + '_voiceDesc"><table role="presentation" tabindex="0" id="' + t.id + '" cellpadding="0" cellspacing="0" class="' + cp + ' ' + cp + 'Enabled' + (s['class'] ? (' ' + s['class']) : '') + '"><tbody><tr>';
- h += '<td>' + DOM.createHTML('span', {id: t.id + '_voiceDesc', 'class': 'voiceLabel', style:'display:none;'}, t.settings.title);
- h += DOM.createHTML('a', {id : t.id + '_text', tabindex : -1, href : 'javascript:;', 'class' : 'mceText', onclick : "return false;", onmousedown : 'return false;'}, DOM.encode(t.settings.title)) + '</td>';
- h += '<td>' + DOM.createHTML('a', {id : t.id + '_open', tabindex : -1, href : 'javascript:;', 'class' : 'mceOpen', onclick : "return false;", onmousedown : 'return false;'}, '<span><span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span></span>') + '</td>';
- h += '</tr></tbody></table></span>';
-
- return h;
- },
-
- showMenu : function() {
- var t = this, p2, e = DOM.get(this.id), m;
-
- if (t.isDisabled() || t.items.length === 0)
- return;
-
- if (t.menu && t.menu.isMenuVisible)
- return t.hideMenu();
-
- if (!t.isMenuRendered) {
- t.renderMenu();
- t.isMenuRendered = true;
- }
-
- p2 = DOM.getPos(e);
-
- m = t.menu;
- m.settings.offset_x = p2.x;
- m.settings.offset_y = p2.y;
- m.settings.keyboard_focus = !tinymce.isOpera; // Opera is buggy when it comes to auto focus
-
- // Select in menu
- each(t.items, function(o) {
- if (m.items[o.id]) {
- m.items[o.id].setSelected(0);
- }
- });
-
- each(t.items, function(o) {
- if (m.items[o.id] && t.marked[o.value]) {
- m.items[o.id].setSelected(1);
- }
-
- if (o.value === t.selectedValue) {
- m.items[o.id].setSelected(1);
- }
- });
-
- m.showMenu(0, e.clientHeight);
-
- Event.add(DOM.doc, 'mousedown', t.hideMenu, t);
- DOM.addClass(t.id, t.classPrefix + 'Selected');
-
- //DOM.get(t.id + '_text').focus();
- },
-
- hideMenu : function(e) {
- var t = this;
-
- if (t.menu && t.menu.isMenuVisible) {
- DOM.removeClass(t.id, t.classPrefix + 'Selected');
-
- // Prevent double toogles by canceling the mouse click event to the button
- if (e && e.type == "mousedown" && (e.target.id == t.id + '_text' || e.target.id == t.id + '_open'))
- return;
-
- if (!e || !DOM.getParent(e.target, '.mceMenu')) {
- DOM.removeClass(t.id, t.classPrefix + 'Selected');
- Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);
- t.menu.hideMenu();
- }
- }
- },
-
- renderMenu : function() {
- var t = this, m;
-
- m = t.settings.control_manager.createDropMenu(t.id + '_menu', {
- menu_line : 1,
- 'class' : t.classPrefix + 'Menu mceNoIcons',
- max_width : 250,
- max_height : 150
- });
-
- m.onHideMenu.add(function() {
- t.hideMenu();
- t.focus();
- });
-
- m.add({
- title : t.settings.title,
- 'class' : 'mceMenuItemTitle',
- onclick : function() {
- if (t.settings.onselect('') !== false)
- t.select(''); // Must be runned after
- }
- });
-
- each(t.items, function(o) {
- // No value then treat it as a title
- if (o.value === undef) {
- m.add({
- title : o.title,
- role : "option",
- 'class' : 'mceMenuItemTitle',
- onclick : function() {
- if (t.settings.onselect('') !== false)
- t.select(''); // Must be runned after
- }
- });
- } else {
- o.id = DOM.uniqueId();
- o.role= "option";
- o.onclick = function() {
- if (t.settings.onselect(o.value) !== false)
- t.select(o.value); // Must be runned after
- };
-
- m.add(o);
- }
- });
-
- t.onRenderMenu.dispatch(t, m);
- t.menu = m;
- },
-
- postRender : function() {
- var t = this, cp = t.classPrefix;
-
- Event.add(t.id, 'click', t.showMenu, t);
- Event.add(t.id, 'keydown', function(evt) {
- if (evt.keyCode == 32) { // Space
- t.showMenu(evt);
- Event.cancel(evt);
- }
- });
- Event.add(t.id, 'focus', function() {
- if (!t._focused) {
- t.keyDownHandler = Event.add(t.id, 'keydown', function(e) {
- if (e.keyCode == 40) {
- t.showMenu();
- Event.cancel(e);
- }
- });
- t.keyPressHandler = Event.add(t.id, 'keypress', function(e) {
- var v;
- if (e.keyCode == 13) {
- // Fake select on enter
- v = t.selectedValue;
- t.selectedValue = null; // Needs to be null to fake change
- Event.cancel(e);
- t.settings.onselect(v);
- }
- });
- }
-
- t._focused = 1;
- });
- Event.add(t.id, 'blur', function() {
- Event.remove(t.id, 'keydown', t.keyDownHandler);
- Event.remove(t.id, 'keypress', t.keyPressHandler);
- t._focused = 0;
- });
-
- // Old IE doesn't have hover on all elements
- if (tinymce.isIE6 || !DOM.boxModel) {
- Event.add(t.id, 'mouseover', function() {
- if (!DOM.hasClass(t.id, cp + 'Disabled'))
- DOM.addClass(t.id, cp + 'Hover');
- });
-
- Event.add(t.id, 'mouseout', function() {
- if (!DOM.hasClass(t.id, cp + 'Disabled'))
- DOM.removeClass(t.id, cp + 'Hover');
- });
- }
-
- t.onPostRender.dispatch(t, DOM.get(t.id));
- },
-
- destroy : function() {
- this.parent();
-
- Event.clear(this.id + '_text');
- Event.clear(this.id + '_open');
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher, undef;
-
- tinymce.create('tinymce.ui.NativeListBox:tinymce.ui.ListBox', {
- NativeListBox : function(id, s) {
- this.parent(id, s);
- this.classPrefix = 'mceNativeListBox';
- },
-
- setDisabled : function(s) {
- DOM.get(this.id).disabled = s;
- this.setAriaProperty('disabled', s);
- },
-
- isDisabled : function() {
- return DOM.get(this.id).disabled;
- },
-
- select : function(va) {
- var t = this, fv, f;
-
- if (va == undef)
- return t.selectByIndex(-1);
-
- // Is string or number make function selector
- if (va && typeof(va)=="function")
- f = va;
- else {
- f = function(v) {
- return v == va;
- };
- }
-
- // Do we need to do something?
- if (va != t.selectedValue) {
- // Find item
- each(t.items, function(o, i) {
- if (f(o.value)) {
- fv = 1;
- t.selectByIndex(i);
- return false;
- }
- });
-
- if (!fv)
- t.selectByIndex(-1);
- }
- },
-
- selectByIndex : function(idx) {
- DOM.get(this.id).selectedIndex = idx + 1;
- this.selectedValue = this.items[idx] ? this.items[idx].value : null;
- },
-
- add : function(n, v, a) {
- var o, t = this;
-
- a = a || {};
- a.value = v;
-
- if (t.isRendered())
- DOM.add(DOM.get(this.id), 'option', a, n);
-
- o = {
- title : n,
- value : v,
- attribs : a
- };
-
- t.items.push(o);
- t.onAdd.dispatch(t, o);
- },
-
- getLength : function() {
- return this.items.length;
- },
-
- renderHTML : function() {
- var h, t = this;
-
- h = DOM.createHTML('option', {value : ''}, '-- ' + t.settings.title + ' --');
-
- each(t.items, function(it) {
- h += DOM.createHTML('option', {value : it.value}, it.title);
- });
-
- h = DOM.createHTML('select', {id : t.id, 'class' : 'mceNativeListBox', 'aria-labelledby': t.id + '_aria'}, h);
- h += DOM.createHTML('span', {id : t.id + '_aria', 'style': 'display: none'}, t.settings.title);
- return h;
- },
-
- postRender : function() {
- var t = this, ch, changeListenerAdded = true;
-
- t.rendered = true;
-
- function onChange(e) {
- var v = t.items[e.target.selectedIndex - 1];
-
- if (v && (v = v.value)) {
- t.onChange.dispatch(t, v);
-
- if (t.settings.onselect)
- t.settings.onselect(v);
- }
- };
-
- Event.add(t.id, 'change', onChange);
-
- // Accessibility keyhandler
- Event.add(t.id, 'keydown', function(e) {
- var bf;
-
- Event.remove(t.id, 'change', ch);
- changeListenerAdded = false;
-
- bf = Event.add(t.id, 'blur', function() {
- if (changeListenerAdded) return;
- changeListenerAdded = true;
- Event.add(t.id, 'change', onChange);
- Event.remove(t.id, 'blur', bf);
- });
-
- //prevent default left and right keys on chrome - so that the keyboard navigation is used.
- if (tinymce.isWebKit && (e.keyCode==37 ||e.keyCode==39)) {
- return Event.prevent(e);
- }
-
- if (e.keyCode == 13 || e.keyCode == 32) {
- onChange(e);
- return Event.cancel(e);
- }
- });
-
- t.onPostRender.dispatch(t, DOM.get(t.id));
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each;
-
- tinymce.create('tinymce.ui.MenuButton:tinymce.ui.Button', {
- MenuButton : function(id, s, ed) {
- this.parent(id, s, ed);
-
- this.onRenderMenu = new tinymce.util.Dispatcher(this);
-
- s.menu_container = s.menu_container || DOM.doc.body;
- },
-
- showMenu : function() {
- var t = this, p1, p2, e = DOM.get(t.id), m;
-
- if (t.isDisabled())
- return;
-
- if (!t.isMenuRendered) {
- t.renderMenu();
- t.isMenuRendered = true;
- }
-
- if (t.isMenuVisible)
- return t.hideMenu();
-
- p1 = DOM.getPos(t.settings.menu_container);
- p2 = DOM.getPos(e);
-
- m = t.menu;
- m.settings.offset_x = p2.x;
- m.settings.offset_y = p2.y;
- m.settings.vp_offset_x = p2.x;
- m.settings.vp_offset_y = p2.y;
- m.settings.keyboard_focus = t._focused;
- m.showMenu(0, e.firstChild.clientHeight);
-
- Event.add(DOM.doc, 'mousedown', t.hideMenu, t);
- t.setState('Selected', 1);
-
- t.isMenuVisible = 1;
- },
-
- renderMenu : function() {
- var t = this, m;
-
- m = t.settings.control_manager.createDropMenu(t.id + '_menu', {
- menu_line : 1,
- 'class' : this.classPrefix + 'Menu',
- icons : t.settings.icons
- });
-
- m.onHideMenu.add(function() {
- t.hideMenu();
- t.focus();
- });
-
- t.onRenderMenu.dispatch(t, m);
- t.menu = m;
- },
-
- hideMenu : function(e) {
- var t = this;
-
- // Prevent double toogles by canceling the mouse click event to the button
- if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id || e.id === t.id + '_open';}))
- return;
-
- if (!e || !DOM.getParent(e.target, '.mceMenu')) {
- t.setState('Selected', 0);
- Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);
- if (t.menu)
- t.menu.hideMenu();
- }
-
- t.isMenuVisible = 0;
- },
-
- postRender : function() {
- var t = this, s = t.settings;
-
- Event.add(t.id, 'click', function() {
- if (!t.isDisabled()) {
- if (s.onclick)
- s.onclick(t.value);
-
- t.showMenu();
- }
- });
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each;
-
- tinymce.create('tinymce.ui.SplitButton:tinymce.ui.MenuButton', {
- SplitButton : function(id, s, ed) {
- this.parent(id, s, ed);
- this.classPrefix = 'mceSplitButton';
- },
-
- renderHTML : function() {
- var h, t = this, s = t.settings, h1;
-
- h = '<tbody><tr>';
-
- if (s.image)
- h1 = DOM.createHTML('img ', {src : s.image, role: 'presentation', 'class' : 'mceAction ' + s['class']});
- else
- h1 = DOM.createHTML('span', {'class' : 'mceAction ' + s['class']}, '');
-
- h1 += DOM.createHTML('span', {'class': 'mceVoiceLabel mceIconOnly', id: t.id + '_voice', style: 'display:none;'}, s.title);
- h += '<td >' + DOM.createHTML('a', {role: 'button', id : t.id + '_action', tabindex: '-1', href : 'javascript:;', 'class' : 'mceAction ' + s['class'], onclick : "return false;", onmousedown : 'return false;', title : s.title}, h1) + '</td>';
-
- h1 = DOM.createHTML('span', {'class' : 'mceOpen ' + s['class']}, '<span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span>');
- h += '<td >' + DOM.createHTML('a', {role: 'button', id : t.id + '_open', tabindex: '-1', href : 'javascript:;', 'class' : 'mceOpen ' + s['class'], onclick : "return false;", onmousedown : 'return false;', title : s.title}, h1) + '</td>';
-
- h += '</tr></tbody>';
- h = DOM.createHTML('table', { role: 'presentation', 'class' : 'mceSplitButton mceSplitButtonEnabled ' + s['class'], cellpadding : '0', cellspacing : '0', title : s.title}, h);
- return DOM.createHTML('div', {id : t.id, role: 'button', tabindex: '0', 'aria-labelledby': t.id + '_voice', 'aria-haspopup': 'true'}, h);
- },
-
- postRender : function() {
- var t = this, s = t.settings, activate;
-
- if (s.onclick) {
- activate = function(evt) {
- if (!t.isDisabled()) {
- s.onclick(t.value);
- Event.cancel(evt);
- }
- };
- Event.add(t.id + '_action', 'click', activate);
- Event.add(t.id, ['click', 'keydown'], function(evt) {
- var DOM_VK_SPACE = 32, DOM_VK_ENTER = 14, DOM_VK_RETURN = 13, DOM_VK_UP = 38, DOM_VK_DOWN = 40;
- if ((evt.keyCode === 32 || evt.keyCode === 13 || evt.keyCode === 14) && !evt.altKey && !evt.ctrlKey && !evt.metaKey) {
- activate();
- Event.cancel(evt);
- } else if (evt.type === 'click' || evt.keyCode === DOM_VK_DOWN) {
- t.showMenu();
- Event.cancel(evt);
- }
- });
- }
-
- Event.add(t.id + '_open', 'click', function (evt) {
- t.showMenu();
- Event.cancel(evt);
- });
- Event.add([t.id, t.id + '_open'], 'focus', function() {t._focused = 1;});
- Event.add([t.id, t.id + '_open'], 'blur', function() {t._focused = 0;});
-
- // Old IE doesn't have hover on all elements
- if (tinymce.isIE6 || !DOM.boxModel) {
- Event.add(t.id, 'mouseover', function() {
- if (!DOM.hasClass(t.id, 'mceSplitButtonDisabled'))
- DOM.addClass(t.id, 'mceSplitButtonHover');
- });
-
- Event.add(t.id, 'mouseout', function() {
- if (!DOM.hasClass(t.id, 'mceSplitButtonDisabled'))
- DOM.removeClass(t.id, 'mceSplitButtonHover');
- });
- }
- },
-
- destroy : function() {
- this.parent();
-
- Event.clear(this.id + '_action');
- Event.clear(this.id + '_open');
- Event.clear(this.id);
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, is = tinymce.is, each = tinymce.each;
-
- tinymce.create('tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton', {
- ColorSplitButton : function(id, s, ed) {
- var t = this;
-
- t.parent(id, s, ed);
-
- t.settings = s = tinymce.extend({
- colors : '000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF',
- grid_width : 8,
- default_color : '#888888'
- }, t.settings);
-
- t.onShowMenu = new tinymce.util.Dispatcher(t);
-
- t.onHideMenu = new tinymce.util.Dispatcher(t);
-
- t.value = s.default_color;
- },
-
- showMenu : function() {
- var t = this, r, p, e, p2;
-
- if (t.isDisabled())
- return;
-
- if (!t.isMenuRendered) {
- t.renderMenu();
- t.isMenuRendered = true;
- }
-
- if (t.isMenuVisible)
- return t.hideMenu();
-
- e = DOM.get(t.id);
- DOM.show(t.id + '_menu');
- DOM.addClass(e, 'mceSplitButtonSelected');
- p2 = DOM.getPos(e);
- DOM.setStyles(t.id + '_menu', {
- left : p2.x,
- top : p2.y + e.firstChild.clientHeight,
- zIndex : 200000
- });
- e = 0;
-
- Event.add(DOM.doc, 'mousedown', t.hideMenu, t);
- t.onShowMenu.dispatch(t);
-
- if (t._focused) {
- t._keyHandler = Event.add(t.id + '_menu', 'keydown', function(e) {
- if (e.keyCode == 27)
- t.hideMenu();
- });
-
- DOM.select('a', t.id + '_menu')[0].focus(); // Select first link
- }
-
- t.isMenuVisible = 1;
- },
-
- hideMenu : function(e) {
- var t = this;
-
- if (t.isMenuVisible) {
- // Prevent double toogles by canceling the mouse click event to the button
- if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id + '_open';}))
- return;
-
- if (!e || !DOM.getParent(e.target, '.mceSplitButtonMenu')) {
- DOM.removeClass(t.id, 'mceSplitButtonSelected');
- Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);
- Event.remove(t.id + '_menu', 'keydown', t._keyHandler);
- DOM.hide(t.id + '_menu');
- }
-
- t.isMenuVisible = 0;
- t.onHideMenu.dispatch();
- }
- },
-
- renderMenu : function() {
- var t = this, m, i = 0, s = t.settings, n, tb, tr, w, context;
-
- w = DOM.add(s.menu_container, 'div', {role: 'listbox', id : t.id + '_menu', 'class' : s.menu_class + ' ' + s['class'], style : 'position:absolute;left:0;top:-1000px;'});
- m = DOM.add(w, 'div', {'class' : s['class'] + ' mceSplitButtonMenu'});
- DOM.add(m, 'span', {'class' : 'mceMenuLine'});
-
- n = DOM.add(m, 'table', {role: 'presentation', 'class' : 'mceColorSplitMenu'});
- tb = DOM.add(n, 'tbody');
-
- // Generate color grid
- i = 0;
- each(is(s.colors, 'array') ? s.colors : s.colors.split(','), function(c) {
- c = c.replace(/^#/, '');
-
- if (!i--) {
- tr = DOM.add(tb, 'tr');
- i = s.grid_width - 1;
- }
-
- n = DOM.add(tr, 'td');
- var settings = {
- href : 'javascript:;',
- style : {
- backgroundColor : '#' + c
- },
- 'title': t.editor.getLang('colors.' + c, c),
- 'data-mce-color' : '#' + c
- };
-
- // adding a proper ARIA role = button causes JAWS to read things incorrectly on IE.
- if (!tinymce.isIE ) {
- settings.role = 'option';
- }
-
- n = DOM.add(n, 'a', settings);
-
- if (t.editor.forcedHighContrastMode) {
- n = DOM.add(n, 'canvas', { width: 16, height: 16, 'aria-hidden': 'true' });
- if (n.getContext && (context = n.getContext("2d"))) {
- context.fillStyle = '#' + c;
- context.fillRect(0, 0, 16, 16);
- } else {
- // No point leaving a canvas element around if it's not supported for drawing on anyway.
- DOM.remove(n);
- }
- }
- });
-
- if (s.more_colors_func) {
- n = DOM.add(tb, 'tr');
- n = DOM.add(n, 'td', {colspan : s.grid_width, 'class' : 'mceMoreColors'});
- n = DOM.add(n, 'a', {role: 'option', id : t.id + '_more', href : 'javascript:;', onclick : 'return false;', 'class' : 'mceMoreColors'}, s.more_colors_title);
-
- Event.add(n, 'click', function(e) {
- s.more_colors_func.call(s.more_colors_scope || this);
- return Event.cancel(e); // Cancel to fix onbeforeunload problem
- });
- }
-
- DOM.addClass(m, 'mceColorSplitMenu');
-
- new tinymce.ui.KeyboardNavigation({
- root: t.id + '_menu',
- items: DOM.select('a', t.id + '_menu'),
- onCancel: function() {
- t.hideMenu();
- t.focus();
- }
- });
-
- // Prevent IE from scrolling and hindering click to occur #4019
- Event.add(t.id + '_menu', 'mousedown', function(e) {return Event.cancel(e);});
-
- Event.add(t.id + '_menu', 'click', function(e) {
- var c;
-
- e = DOM.getParent(e.target, 'a', tb);
-
- if (e && e.nodeName.toLowerCase() == 'a' && (c = e.getAttribute('data-mce-color')))
- t.setColor(c);
-
- return false; // Prevent IE auto save warning
- });
-
- return w;
- },
-
- setColor : function(c) {
- this.displayColor(c);
- this.hideMenu();
- this.settings.onselect(c);
- },
-
- displayColor : function(c) {
- var t = this;
-
- DOM.setStyle(t.id + '_preview', 'backgroundColor', c);
-
- t.value = c;
- },
-
- postRender : function() {
- var t = this, id = t.id;
-
- t.parent();
- DOM.add(id + '_action', 'div', {id : id + '_preview', 'class' : 'mceColorPreview'});
- DOM.setStyle(t.id + '_preview', 'backgroundColor', t.value);
- },
-
- destroy : function() {
- this.parent();
-
- Event.clear(this.id + '_menu');
- Event.clear(this.id + '_more');
- DOM.remove(this.id + '_menu');
- }
- });
-})(tinymce);
-
-(function(tinymce) {
-// Shorten class names
-var dom = tinymce.DOM, each = tinymce.each, Event = tinymce.dom.Event;
-tinymce.create('tinymce.ui.ToolbarGroup:tinymce.ui.Container', {
- renderHTML : function() {
- var t = this, h = [], controls = t.controls, each = tinymce.each, settings = t.settings;
-
- h.push('<div id="' + t.id + '" role="group" aria-labelledby="' + t.id + '_voice">');
- //TODO: ACC test this out - adding a role = application for getting the landmarks working well.
- h.push("<span role='application'>");
- h.push('<span id="' + t.id + '_voice" class="mceVoiceLabel" style="display:none;">' + dom.encode(settings.name) + '</span>');
- each(controls, function(toolbar) {
- h.push(toolbar.renderHTML());
- });
- h.push("</span>");
- h.push('</div>');
-
- return h.join('');
- },
-
- focus : function() {
- var t = this;
- dom.get(t.id).focus();
- },
-
- postRender : function() {
- var t = this, items = [];
-
- each(t.controls, function(toolbar) {
- each (toolbar.controls, function(control) {
- if (control.id) {
- items.push(control);
- }
- });
- });
-
- t.keyNav = new tinymce.ui.KeyboardNavigation({
- root: t.id,
- items: items,
- onCancel: function() {
- //Move focus if webkit so that navigation back will read the item.
- if (tinymce.isWebKit) {
- dom.get(t.editor.id+"_ifr").focus();
- }
- t.editor.focus();
- },
- excludeFromTabOrder: !t.settings.tab_focus_toolbar
- });
- },
-
- destroy : function() {
- var self = this;
-
- self.parent();
- self.keyNav.destroy();
- Event.clear(self.id);
- }
-});
-})(tinymce);
-
-(function(tinymce) {
-// Shorten class names
-var dom = tinymce.DOM, each = tinymce.each;
-tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
- renderHTML : function() {
- var t = this, h = '', c, co, s = t.settings, i, pr, nx, cl;
-
- cl = t.controls;
- for (i=0; i<cl.length; i++) {
- // Get current control, prev control, next control and if the control is a list box or not
- co = cl[i];
- pr = cl[i - 1];
- nx = cl[i + 1];
-
- // Add toolbar start
- if (i === 0) {
- c = 'mceToolbarStart';
-
- if (co.Button)
- c += ' mceToolbarStartButton';
- else if (co.SplitButton)
- c += ' mceToolbarStartSplitButton';
- else if (co.ListBox)
- c += ' mceToolbarStartListBox';
-
- h += dom.createHTML('td', {'class' : c}, dom.createHTML('span', null, '<!-- IE -->'));
- }
-
- // Add toolbar end before list box and after the previous button
- // This is to fix the o2k7 editor skins
- if (pr && co.ListBox) {
- if (pr.Button || pr.SplitButton)
- h += dom.createHTML('td', {'class' : 'mceToolbarEnd'}, dom.createHTML('span', null, '<!-- IE -->'));
- }
-
- // Render control HTML
-
- // IE 8 quick fix, needed to propertly generate a hit area for anchors
- if (dom.stdMode)
- h += '<td style="position: relative">' + co.renderHTML() + '</td>';
- else
- h += '<td>' + co.renderHTML() + '</td>';
-
- // Add toolbar start after list box and before the next button
- // This is to fix the o2k7 editor skins
- if (nx && co.ListBox) {
- if (nx.Button || nx.SplitButton)
- h += dom.createHTML('td', {'class' : 'mceToolbarStart'}, dom.createHTML('span', null, '<!-- IE -->'));
- }
- }
-
- c = 'mceToolbarEnd';
-
- if (co.Button)
- c += ' mceToolbarEndButton';
- else if (co.SplitButton)
- c += ' mceToolbarEndSplitButton';
- else if (co.ListBox)
- c += ' mceToolbarEndListBox';
-
- h += dom.createHTML('td', {'class' : c}, dom.createHTML('span', null, '<!-- IE -->'));
-
- return dom.createHTML('table', {id : t.id, 'class' : 'mceToolbar' + (s['class'] ? ' ' + s['class'] : ''), cellpadding : '0', cellspacing : '0', align : t.settings.align || '', role: 'presentation', tabindex: '-1'}, '<tbody><tr>' + h + '</tr></tbody>');
- }
-});
-})(tinymce);
-
-(function(tinymce) {
- var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each;
-
- tinymce.create('tinymce.AddOnManager', {
- AddOnManager : function() {
- var self = this;
-
- self.items = [];
- self.urls = {};
- self.lookup = {};
- self.onAdd = new Dispatcher(self);
- },
-
- get : function(n) {
- if (this.lookup[n]) {
- return this.lookup[n].instance;
- } else {
- return undefined;
- }
- },
-
- dependencies : function(n) {
- var result;
- if (this.lookup[n]) {
- result = this.lookup[n].dependencies;
- }
- return result || [];
- },
-
- requireLangPack : function(n) {
- var s = tinymce.settings;
-
- if (s && s.language && s.language_load !== false)
- tinymce.ScriptLoader.add(this.urls[n] + '/langs/' + s.language + '.js');
- },
-
- add : function(id, o, dependencies) {
- this.items.push(o);
- this.lookup[id] = {instance:o, dependencies:dependencies};
- this.onAdd.dispatch(this, id, o);
-
- return o;
- },
- createUrl: function(baseUrl, dep) {
- if (typeof dep === "object") {
- return dep
- } else {
- return {prefix: baseUrl.prefix, resource: dep, suffix: baseUrl.suffix};
- }
- },
-
- addComponents: function(pluginName, scripts) {
- var pluginUrl = this.urls[pluginName];
- tinymce.each(scripts, function(script){
- tinymce.ScriptLoader.add(pluginUrl+"/"+script);
- });
- },
-
- load : function(n, u, cb, s) {
- var t = this, url = u;
-
- function loadDependencies() {
- var dependencies = t.dependencies(n);
- tinymce.each(dependencies, function(dep) {
- var newUrl = t.createUrl(u, dep);
- t.load(newUrl.resource, newUrl, undefined, undefined);
- });
- if (cb) {
- if (s) {
- cb.call(s);
- } else {
- cb.call(tinymce.ScriptLoader);
- }
- }
- }
-
- if (t.urls[n])
- return;
- if (typeof u === "object")
- url = u.prefix + u.resource + u.suffix;
-
- if (url.indexOf('/') !== 0 && url.indexOf('://') == -1)
- url = tinymce.baseURL + '/' + url;
-
- t.urls[n] = url.substring(0, url.lastIndexOf('/'));
-
- if (t.lookup[n]) {
- loadDependencies();
- } else {
- tinymce.ScriptLoader.add(url, loadDependencies, s);
- }
- }
- });
-
- // Create plugin and theme managers
- tinymce.PluginManager = new tinymce.AddOnManager();
- tinymce.ThemeManager = new tinymce.AddOnManager();
-}(tinymce));
-
-(function(tinymce) {
- // Shorten names
- var each = tinymce.each, extend = tinymce.extend,
- DOM = tinymce.DOM, Event = tinymce.dom.Event,
- ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager,
- explode = tinymce.explode,
- Dispatcher = tinymce.util.Dispatcher, undef, instanceCounter = 0;
-
- // Setup some URLs where the editor API is located and where the document is
- tinymce.documentBaseURL = window.location.href.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, '');
- if (!/[\/\\]$/.test(tinymce.documentBaseURL))
- tinymce.documentBaseURL += '/';
-
- tinymce.baseURL = new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL);
-
- tinymce.baseURI = new tinymce.util.URI(tinymce.baseURL);
-
- // Add before unload listener
- // This was required since IE was leaking memory if you added and removed beforeunload listeners
- // with attachEvent/detatchEvent so this only adds one listener and instances can the attach to the onBeforeUnload event
- tinymce.onBeforeUnload = new Dispatcher(tinymce);
-
- // Must be on window or IE will leak if the editor is placed in frame or iframe
- Event.add(window, 'beforeunload', function(e) {
- tinymce.onBeforeUnload.dispatch(tinymce, e);
- });
-
- tinymce.onAddEditor = new Dispatcher(tinymce);
-
- tinymce.onRemoveEditor = new Dispatcher(tinymce);
-
- tinymce.EditorManager = extend(tinymce, {
- editors : [],
-
- i18n : {},
-
- activeEditor : null,
-
- init : function(s) {
- var t = this, pl, sl = tinymce.ScriptLoader, e, el = [], ed;
-
- function createId(elm) {
- var id = elm.id;
-
- // Use element id, or unique name or generate a unique id
- if (!id) {
- id = elm.name;
-
- if (id && !DOM.get(id)) {
- id = elm.name;
- } else {
- // Generate unique name
- id = DOM.uniqueId();
- }
-
- elm.setAttribute('id', id);
- }
-
- return id;
- };
-
- function execCallback(se, n, s) {
- var f = se[n];
-
- if (!f)
- return;
-
- if (tinymce.is(f, 'string')) {
- s = f.replace(/\.\w+$/, '');
- s = s ? tinymce.resolve(s) : 0;
- f = tinymce.resolve(f);
- }
-
- return f.apply(s || this, Array.prototype.slice.call(arguments, 2));
- };
-
- function hasClass(n, c) {
- return c.constructor === RegExp ? c.test(n.className) : DOM.hasClass(n, c);
- };
-
- s = extend({
- theme : "simple",
- language : "en"
- }, s);
-
- t.settings = s;
-
- // Legacy call
- Event.bind(window, 'ready', function() {
- var l, co;
-
- execCallback(s, 'onpageload');
-
- switch (s.mode) {
- case "exact":
- l = s.elements || '';
-
- if(l.length > 0) {
- each(explode(l), function(v) {
- if (DOM.get(v)) {
- ed = new tinymce.Editor(v, s);
- el.push(ed);
- ed.render(1);
- } else {
- each(document.forms, function(f) {
- each(f.elements, function(e) {
- if (e.name === v) {
- v = 'mce_editor_' + instanceCounter++;
- DOM.setAttrib(e, 'id', v);
-
- ed = new tinymce.Editor(v, s);
- el.push(ed);
- ed.render(1);
- }
- });
- });
- }
- });
- }
- break;
-
- case "textareas":
- case "specific_textareas":
- each(DOM.select('textarea'), function(elm) {
- if (s.editor_deselector && hasClass(elm, s.editor_deselector))
- return;
-
- if (!s.editor_selector || hasClass(elm, s.editor_selector)) {
- ed = new tinymce.Editor(createId(elm), s);
- el.push(ed);
- ed.render(1);
- }
- });
- break;
-
- default:
- if (s.types) {
- // Process type specific selector
- each(s.types, function(type) {
- each(DOM.select(type.selector), function(elm) {
- var editor = new tinymce.Editor(createId(elm), tinymce.extend({}, s, type));
- el.push(editor);
- editor.render(1);
- });
- });
- } else if (s.selector) {
- // Process global selector
- each(DOM.select(s.selector), function(elm) {
- var editor = new tinymce.Editor(createId(elm), s);
- el.push(editor);
- editor.render(1);
- });
- }
- }
-
- // Call onInit when all editors are initialized
- if (s.oninit) {
- l = co = 0;
-
- each(el, function(ed) {
- co++;
-
- if (!ed.initialized) {
- // Wait for it
- ed.onInit.add(function() {
- l++;
-
- // All done
- if (l == co)
- execCallback(s, 'oninit');
- });
- } else
- l++;
-
- // All done
- if (l == co)
- execCallback(s, 'oninit');
- });
- }
- });
- },
-
- get : function(id) {
- if (id === undef)
- return this.editors;
-
- return this.editors[id];
- },
-
- getInstanceById : function(id) {
- return this.get(id);
- },
-
- add : function(editor) {
- var self = this, editors = self.editors;
-
- // Add named and index editor instance
- editors[editor.id] = editor;
- editors.push(editor);
-
- self._setActive(editor);
- self.onAddEditor.dispatch(self, editor);
-
-
- return editor;
- },
-
- remove : function(editor) {
- var t = this, i, editors = t.editors;
-
- // Not in the collection
- if (!editors[editor.id])
- return null;
-
- delete editors[editor.id];
-
- for (i = 0; i < editors.length; i++) {
- if (editors[i] == editor) {
- editors.splice(i, 1);
- break;
- }
- }
-
- // Select another editor since the active one was removed
- if (t.activeEditor == editor)
- t._setActive(editors[0]);
-
- editor.destroy();
- t.onRemoveEditor.dispatch(t, editor);
-
- return editor;
- },
-
- execCommand : function(c, u, v) {
- var t = this, ed = t.get(v), w;
-
- function clr() {
- ed.destroy();
- w.detachEvent('onunload', clr);
- w = w.tinyMCE = w.tinymce = null; // IE leak
- };
-
- // Manager commands
- switch (c) {
- case "mceFocus":
- ed.focus();
- return true;
-
- case "mceAddEditor":
- case "mceAddControl":
- if (!t.get(v))
- new tinymce.Editor(v, t.settings).render();
-
- return true;
-
- case "mceAddFrameControl":
- w = v.window;
-
- // Add tinyMCE global instance and tinymce namespace to specified window
- w.tinyMCE = tinyMCE;
- w.tinymce = tinymce;
-
- tinymce.DOM.doc = w.document;
- tinymce.DOM.win = w;
-
- ed = new tinymce.Editor(v.element_id, v);
- ed.render();
-
- // Fix IE memory leaks
- if (tinymce.isIE) {
- w.attachEvent('onunload', clr);
- }
-
- v.page_window = null;
-
- return true;
-
- case "mceRemoveEditor":
- case "mceRemoveControl":
- if (ed)
- ed.remove();
-
- return true;
-
- case 'mceToggleEditor':
- if (!ed) {
- t.execCommand('mceAddControl', 0, v);
- return true;
- }
-
- if (ed.isHidden())
- ed.show();
- else
- ed.hide();
-
- return true;
- }
-
- // Run command on active editor
- if (t.activeEditor)
- return t.activeEditor.execCommand(c, u, v);
-
- return false;
- },
-
- execInstanceCommand : function(id, c, u, v) {
- var ed = this.get(id);
-
- if (ed)
- return ed.execCommand(c, u, v);
-
- return false;
- },
-
- triggerSave : function() {
- each(this.editors, function(e) {
- e.save();
- });
- },
-
- addI18n : function(p, o) {
- var lo, i18n = this.i18n;
-
- if (!tinymce.is(p, 'string')) {
- each(p, function(o, lc) {
- each(o, function(o, g) {
- each(o, function(o, k) {
- if (g === 'common')
- i18n[lc + '.' + k] = o;
- else
- i18n[lc + '.' + g + '.' + k] = o;
- });
- });
- });
- } else {
- each(o, function(o, k) {
- i18n[p + '.' + k] = o;
- });
- }
- },
-
- // Private methods
-
- _setActive : function(editor) {
- this.selectedInstance = this.activeEditor = editor;
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- // Shorten these names
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend,
- each = tinymce.each, isGecko = tinymce.isGecko,
- isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, is = tinymce.is,
- ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager,
- explode = tinymce.explode;
-
- tinymce.create('tinymce.Editor', {
- Editor : function(id, settings) {
- var self = this, TRUE = true;
-
- self.settings = settings = extend({
- id : id,
- language : 'en',
- theme : 'simple',
- skin : 'default',
- delta_width : 0,
- delta_height : 0,
- popup_css : '',
- plugins : '',
- document_base_url : tinymce.documentBaseURL,
- add_form_submit_trigger : TRUE,
- submit_patch : TRUE,
- add_unload_trigger : TRUE,
- convert_urls : TRUE,
- relative_urls : TRUE,
- remove_script_host : TRUE,
- table_inline_editing : false,
- object_resizing : TRUE,
- accessibility_focus : TRUE,
- doctype : tinymce.isIE6 ? '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' : '<!DOCTYPE>', // Use old doctype on IE 6 to avoid horizontal scroll
- visual : TRUE,
- font_size_style_values : 'xx-small,x-small,small,medium,large,x-large,xx-large',
- font_size_legacy_values : 'xx-small,small,medium,large,x-large,xx-large,300%', // See: http://www.w3.org/TR/CSS2/fonts.html#propdef-font-size
- apply_source_formatting : TRUE,
- directionality : 'ltr',
- forced_root_block : 'p',
- hidden_input : TRUE,
- padd_empty_editor : TRUE,
- render_ui : TRUE,
- indentation : '30px',
- fix_table_elements : TRUE,
- inline_styles : TRUE,
- convert_fonts_to_spans : TRUE,
- indent : 'simple',
- indent_before : 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure',
- indent_after : 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure',
- validate : TRUE,
- entity_encoding : 'named',
- url_converter : self.convertURL,
- url_converter_scope : self,
- ie7_compat : TRUE
- }, settings);
-
- self.id = self.editorId = id;
-
- self.isNotDirty = false;
-
- self.plugins = {};
-
- self.documentBaseURI = new tinymce.util.URI(settings.document_base_url || tinymce.documentBaseURL, {
- base_uri : tinyMCE.baseURI
- });
-
- self.baseURI = tinymce.baseURI;
-
- self.contentCSS = [];
-
- // Creates all events like onClick, onSetContent etc see Editor.Events.js for the actual logic
- self.setupEvents();
-
- // Internal command handler objects
- self.execCommands = {};
- self.queryStateCommands = {};
- self.queryValueCommands = {};
-
- // Call setup
- self.execCallback('setup', self);
- },
-
- render : function(nst) {
- var t = this, s = t.settings, id = t.id, sl = tinymce.ScriptLoader;
-
- // Page is not loaded yet, wait for it
- if (!Event.domLoaded) {
- Event.add(window, 'ready', function() {
- t.render();
- });
- return;
- }
-
- tinyMCE.settings = s;
-
- // Element not found, then skip initialization
- if (!t.getElement())
- return;
-
- // Is a iPad/iPhone and not on iOS5, then skip initialization. We need to sniff
- // here since the browser says it has contentEditable support but there is no visible caret.
- if (tinymce.isIDevice && !tinymce.isIOS5)
- return;
-
- // Add hidden input for non input elements inside form elements
- if (!/TEXTAREA|INPUT/i.test(t.getElement().nodeName) && s.hidden_input && DOM.getParent(id, 'form'))
- DOM.insertAfter(DOM.create('input', {type : 'hidden', name : id}), id);
-
- if (tinymce.WindowManager)
- t.windowManager = new tinymce.WindowManager(t);
-
- if (s.encoding == 'xml') {
- t.onGetContent.add(function(ed, o) {
- if (o.save)
- o.content = DOM.encode(o.content);
- });
- }
-
- if (s.add_form_submit_trigger) {
- t.onSubmit.addToTop(function() {
- if (t.initialized) {
- t.save();
- t.isNotDirty = 1;
- }
- });
- }
-
- if (s.add_unload_trigger) {
- t._beforeUnload = tinyMCE.onBeforeUnload.add(function() {
- if (t.initialized && !t.destroyed && !t.isHidden())
- t.save({format : 'raw', no_events : true});
- });
- }
-
- tinymce.addUnload(t.destroy, t);
-
- if (s.submit_patch) {
- t.onBeforeRenderUI.add(function() {
- var n = t.getElement().form;
-
- if (!n)
- return;
-
- // Already patched
- if (n._mceOldSubmit)
- return;
-
- // Check page uses id="submit" or name="submit" for it's submit button
- if (!n.submit.nodeType && !n.submit.length) {
- t.formElement = n;
- n._mceOldSubmit = n.submit;
- n.submit = function() {
- // Save all instances
- tinymce.triggerSave();
- t.isNotDirty = 1;
-
- return t.formElement._mceOldSubmit(t.formElement);
- };
- }
-
- n = null;
- });
- }
-
- // Load scripts
- function loadScripts() {
- if (s.language && s.language_load !== false)
- sl.add(tinymce.baseURL + '/langs/' + s.language + '.js');
-
- if (s.theme && s.theme.charAt(0) != '-' && !ThemeManager.urls[s.theme])
- ThemeManager.load(s.theme, 'themes/' + s.theme + '/editor_template' + tinymce.suffix + '.js');
-
- each(explode(s.plugins), function(p) {
- if (p &&!PluginManager.urls[p]) {
- if (p.charAt(0) == '-') {
- p = p.substr(1, p.length);
- var dependencies = PluginManager.dependencies(p);
- each(dependencies, function(dep) {
- var defaultSettings = {prefix:'plugins/', resource: dep, suffix:'/editor_plugin' + tinymce.suffix + '.js'};
- dep = PluginManager.createUrl(defaultSettings, dep);
- PluginManager.load(dep.resource, dep);
- });
- } else {
- // Skip safari plugin, since it is removed as of 3.3b1
- if (p == 'safari') {
- return;
- }
- PluginManager.load(p, {prefix:'plugins/', resource: p, suffix:'/editor_plugin' + tinymce.suffix + '.js'});
- }
- }
- });
-
- // Init when que is loaded
- sl.loadQueue(function() {
- if (!t.removed)
- t.init();
- });
- };
-
- loadScripts();
- },
-
- init : function() {
- var n, t = this, s = t.settings, w, h, e = t.getElement(), o, ti, u, bi, bc, re, i, initializedPlugins = [];
-
- tinymce.add(t);
-
- s.aria_label = s.aria_label || DOM.getAttrib(e, 'aria-label', t.getLang('aria.rich_text_area'));
-
- if (s.theme) {
- s.theme = s.theme.replace(/-/, '');
- o = ThemeManager.get(s.theme);
- t.theme = new o();
-
- if (t.theme.init)
- t.theme.init(t, ThemeManager.urls[s.theme] || tinymce.documentBaseURL.replace(/\/$/, ''));
- }
- function initPlugin(p) {
- var c = PluginManager.get(p), u = PluginManager.urls[p] || tinymce.documentBaseURL.replace(/\/$/, ''), po;
- if (c && tinymce.inArray(initializedPlugins,p) === -1) {
- each(PluginManager.dependencies(p), function(dep){
- initPlugin(dep);
- });
- po = new c(t, u);
-
- t.plugins[p] = po;
-
- if (po.init) {
- po.init(t, u);
- initializedPlugins.push(p);
- }
- }
- }
-
- // Create all plugins
- each(explode(s.plugins.replace(/\-/g, '')), initPlugin);
-
- // Setup popup CSS path(s)
- if (s.popup_css !== false) {
- if (s.popup_css)
- s.popup_css = t.documentBaseURI.toAbsolute(s.popup_css);
- else
- s.popup_css = t.baseURI.toAbsolute("themes/" + s.theme + "/skins/" + s.skin + "/dialog.css");
- }
-
- if (s.popup_css_add)
- s.popup_css += ',' + t.documentBaseURI.toAbsolute(s.popup_css_add);
-
- t.controlManager = new tinymce.ControlManager(t);
-
- t.onExecCommand.add(function(ed, c) {
- // Don't refresh the select lists until caret move
- if (!/^(FontName|FontSize)$/.test(c))
- t.nodeChanged();
- });
-
- // Enables users to override the control factory
- t.onBeforeRenderUI.dispatch(t, t.controlManager);
-
- // Measure box
- if (s.render_ui && t.theme) {
- w = s.width || e.style.width || e.offsetWidth;
- h = s.height || e.style.height || e.offsetHeight;
- t.orgDisplay = e.style.display;
- re = /^[0-9\.]+(|px)$/i;
-
- if (re.test('' + w))
- w = Math.max(parseInt(w, 10) + (o.deltaWidth || 0), 100);
-
- if (re.test('' + h))
- h = Math.max(parseInt(h, 10) + (o.deltaHeight || 0), 100);
-
- // Render UI
- o = t.theme.renderUI({
- targetNode : e,
- width : w,
- height : h,
- deltaWidth : s.delta_width,
- deltaHeight : s.delta_height
- });
-
- t.editorContainer = o.editorContainer;
- }
-
- // Load specified content CSS last
- if (s.content_css) {
- each(explode(s.content_css), function(u) {
- t.contentCSS.push(t.documentBaseURI.toAbsolute(u));
- });
- }
-
- // Content editable mode ends here
- if (s.content_editable) {
- e = n = o = null; // Fix IE leak
- return t.initContentBody();
- }
-
- // User specified a document.domain value
- if (document.domain && location.hostname != document.domain)
- tinymce.relaxedDomain = document.domain;
-
- // Resize editor
- DOM.setStyles(o.sizeContainer || o.editorContainer, {
- width : w,
- height : h
- });
-
- h = (o.iframeHeight || h) + (typeof(h) == 'number' ? (o.deltaHeight || 0) : '');
- if (h < 100)
- h = 100;
-
- t.iframeHTML = s.doctype + '<html><head xmlns="http://www.w3.org/1999/xhtml">';
-
- // We only need to override paths if we have to
- // IE has a bug where it remove site absolute urls to relative ones if this is specified
- if (s.document_base_url != tinymce.documentBaseURL)
- t.iframeHTML += '<base href="' + t.documentBaseURI.getURI() + '" />';
-
- // IE8 doesn't support carets behind images setting ie7_compat would force IE8+ to run in IE7 compat mode.
- if (s.ie7_compat)
- t.iframeHTML += '<meta http-equiv="X-UA-Compatible" content="IE=7" />';
- else
- t.iframeHTML += '<meta http-equiv="X-UA-Compatible" content="IE=edge" />';
-
- t.iframeHTML += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
-
- // Load the CSS by injecting them into the HTML this will reduce "flicker"
- for (i = 0; i < t.contentCSS.length; i++) {
- t.iframeHTML += '<link type="text/css" rel="stylesheet" href="' + t.contentCSS[i] + '" />';
- }
-
- t.contentCSS = [];
-
- bi = s.body_id || 'tinymce';
- if (bi.indexOf('=') != -1) {
- bi = t.getParam('body_id', '', 'hash');
- bi = bi[t.id] || bi;
- }
-
- bc = s.body_class || '';
- if (bc.indexOf('=') != -1) {
- bc = t.getParam('body_class', '', 'hash');
- bc = bc[t.id] || '';
- }
-
- t.iframeHTML += '</head><body id="' + bi + '" class="mceContentBody ' + bc + '" onload="window.parent.tinyMCE.get(\'' + t.id + '\').onLoad.dispatch();"><br></body></html>';
-
- // Domain relaxing enabled, then set document domain
- if (tinymce.relaxedDomain && (isIE || (tinymce.isOpera && parseFloat(opera.version()) < 11))) {
- // We need to write the contents here in IE since multiple writes messes up refresh button and back button
- u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinyMCE.get("' + t.id + '");document.write(ed.iframeHTML);document.close();ed.initContentBody();})()';
- }
-
- // Create iframe
- // TODO: ACC add the appropriate description on this.
- n = DOM.add(o.iframeContainer, 'iframe', {
- id : t.id + "_ifr",
- src : u || 'javascript:""', // Workaround for HTTPS warning in IE6/7
- frameBorder : '0',
- allowTransparency : "true",
- title : s.aria_label,
- style : {
- width : '100%',
- height : h,
- display : 'block' // Important for Gecko to render the iframe correctly
- }
- });
-
- t.contentAreaContainer = o.iframeContainer;
- DOM.get(o.editorContainer).style.display = t.orgDisplay;
- DOM.get(t.id).style.display = 'none';
- DOM.setAttrib(t.id, 'aria-hidden', true);
-
- if (!tinymce.relaxedDomain || !u)
- t.initContentBody();
-
- e = n = o = null; // Cleanup
- },
-
- initContentBody : function() {
- var self = this, settings = self.settings, targetElm = DOM.get(self.id), doc = self.getDoc(), html, body;
-
- // Setup iframe body
- if ((!isIE || !tinymce.relaxedDomain) && !settings.content_editable) {
- doc.open();
- doc.write(self.iframeHTML);
- doc.close();
-
- if (tinymce.relaxedDomain)
- doc.domain = tinymce.relaxedDomain;
- }
-
- if (settings.content_editable) {
- DOM.addClass(targetElm, 'mceContentBody');
- self.contentDocument = doc = settings.content_document || document;
- self.contentWindow = settings.content_window || window;
- self.bodyElement = targetElm;
-
- // Prevent leak in IE
- settings.content_document = settings.content_window = null;
- }
-
- // It will not steal focus while setting contentEditable
- body = self.getBody();
- body.disabled = true;
-
- if (!settings.readonly)
- body.contentEditable = self.getParam('content_editable_state', true);
-
- body.disabled = false;
-
- self.schema = new tinymce.html.Schema(settings);
-
- self.dom = new tinymce.dom.DOMUtils(doc, {
- keep_values : true,
- url_converter : self.convertURL,
- url_converter_scope : self,
- hex_colors : settings.force_hex_style_colors,
- class_filter : settings.class_filter,
- update_styles : true,
- root_element : settings.content_editable ? self.id : null,
- schema : self.schema
- });
-
- self.parser = new tinymce.html.DomParser(settings, self.schema);
-
- // Convert src and href into data-mce-src, data-mce-href and data-mce-style
- self.parser.addAttributeFilter('src,href,style', function(nodes, name) {
- var i = nodes.length, node, dom = self.dom, value, internalName;
-
- while (i--) {
- node = nodes[i];
- value = node.attr(name);
- internalName = 'data-mce-' + name;
-
- // Add internal attribute if we need to we don't on a refresh of the document
- if (!node.attributes.map[internalName]) {
- if (name === "style")
- node.attr(internalName, dom.serializeStyle(dom.parseStyle(value), node.name));
- else
- node.attr(internalName, self.convertURL(value, name, node.name));
- }
- }
- });
-
- // Keep scripts from executing
- self.parser.addNodeFilter('script', function(nodes, name) {
- var i = nodes.length, node;
-
- while (i--) {
- node = nodes[i];
- node.attr('type', 'mce-' + (node.attr('type') || 'text/javascript'));
- }
- });
-
- self.parser.addNodeFilter('#cdata', function(nodes, name) {
- var i = nodes.length, node;
-
- while (i--) {
- node = nodes[i];
- node.type = 8;
- node.name = '#comment';
- node.value = '[CDATA[' + node.value + ']]';
- }
- });
-
- self.parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function(nodes, name) {
- var i = nodes.length, node, nonEmptyElements = self.schema.getNonEmptyElements();
-
- while (i--) {
- node = nodes[i];
-
- if (node.isEmpty(nonEmptyElements))
- node.empty().append(new tinymce.html.Node('br', 1)).shortEnded = true;
- }
- });
-
- self.serializer = new tinymce.dom.Serializer(settings, self.dom, self.schema);
-
- self.selection = new tinymce.dom.Selection(self.dom, self.getWin(), self.serializer);
-
- self.formatter = new tinymce.Formatter(self);
-
- self.undoManager = new tinymce.UndoManager(self);
-
- self.forceBlocks = new tinymce.ForceBlocks(self);
- self.enterKey = new tinymce.EnterKey(self);
- self.editorCommands = new tinymce.EditorCommands(self);
-
- // Pass through
- self.serializer.onPreProcess.add(function(se, o) {
- return self.onPreProcess.dispatch(self, o, se);
- });
-
- self.serializer.onPostProcess.add(function(se, o) {
- return self.onPostProcess.dispatch(self, o, se);
- });
-
- self.onPreInit.dispatch(self);
-
- if (!settings.gecko_spellcheck)
- doc.body.spellcheck = false;
-
- if (!settings.readonly) {
- self.bindNativeEvents();
- }
-
- self.controlManager.onPostRender.dispatch(self, self.controlManager);
- self.onPostRender.dispatch(self);
-
- self.quirks = tinymce.util.Quirks(self);
-
- if (settings.directionality)
- body.dir = settings.directionality;
-
- if (settings.nowrap)
- body.style.whiteSpace = "nowrap";
-
- if (settings.protect) {
- self.onBeforeSetContent.add(function(ed, o) {
- each(settings.protect, function(pattern) {
- o.content = o.content.replace(pattern, function(str) {
- return '<!--mce:protected ' + escape(str) + '-->';
- });
- });
- });
- }
-
- // Add visual aids when new contents is added
- self.onSetContent.add(function() {
- self.addVisual(self.getBody());
- });
-
- // Remove empty contents
- if (settings.padd_empty_editor) {
- self.onPostProcess.add(function(ed, o) {
- o.content = o.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, '');
- });
- }
-
- self.load({initial : true, format : 'html'});
- self.startContent = self.getContent({format : 'raw'});
-
- self.initialized = true;
-
- self.onInit.dispatch(self);
- self.execCallback('setupcontent_callback', self.id, body, doc);
- self.execCallback('init_instance_callback', self);
- self.focus(true);
- self.nodeChanged({initial : true});
-
- // Load specified content CSS last
- each(self.contentCSS, function(url) {
- self.dom.loadCSS(url);
- });
-
- // Handle auto focus
- if (settings.auto_focus) {
- setTimeout(function () {
- var ed = tinymce.get(settings.auto_focus);
-
- ed.selection.select(ed.getBody(), 1);
- ed.selection.collapse(1);
- ed.getBody().focus();
- ed.getWin().focus();
- }, 100);
- }
-
- // Clean up references for IE
- targetElm = doc = body = null;
- },
-
- focus : function(skip_focus) {
- var oed, self = this, selection = self.selection, contentEditable = self.settings.content_editable, ieRng, controlElm, doc = self.getDoc(), body;
-
- if (!skip_focus) {
- // Get selected control element
- ieRng = selection.getRng();
- if (ieRng.item) {
- controlElm = ieRng.item(0);
- }
-
- self._refreshContentEditable();
-
- // Focus the window iframe
- if (!contentEditable) {
- self.getWin().focus();
- }
-
- // Focus the body as well since it's contentEditable
- if (tinymce.isGecko || contentEditable) {
- body = self.getBody();
-
- // Check for setActive since it doesn't scroll to the element
- if (body.setActive) {
- body.setActive();
- } else {
- body.focus();
- }
-
- if (contentEditable) {
- selection.normalize();
- }
- }
-
- // Restore selected control element
- // This is needed when for example an image is selected within a
- // layer a call to focus will then remove the control selection
- if (controlElm && controlElm.ownerDocument == doc) {
- ieRng = doc.body.createControlRange();
- ieRng.addElement(controlElm);
- ieRng.select();
- }
- }
-
- if (tinymce.activeEditor != self) {
- if ((oed = tinymce.activeEditor) != null)
- oed.onDeactivate.dispatch(oed, self);
-
- self.onActivate.dispatch(self, oed);
- }
-
- tinymce._setActive(self);
- },
-
- execCallback : function(n) {
- var t = this, f = t.settings[n], s;
-
- if (!f)
- return;
-
- // Look through lookup
- if (t.callbackLookup && (s = t.callbackLookup[n])) {
- f = s.func;
- s = s.scope;
- }
-
- if (is(f, 'string')) {
- s = f.replace(/\.\w+$/, '');
- s = s ? tinymce.resolve(s) : 0;
- f = tinymce.resolve(f);
- t.callbackLookup = t.callbackLookup || {};
- t.callbackLookup[n] = {func : f, scope : s};
- }
-
- return f.apply(s || t, Array.prototype.slice.call(arguments, 1));
- },
-
- translate : function(s) {
- var c = this.settings.language || 'en', i18n = tinymce.i18n;
-
- if (!s)
- return '';
-
- return i18n[c + '.' + s] || s.replace(/\{\#([^\}]+)\}/g, function(a, b) {
- return i18n[c + '.' + b] || '{#' + b + '}';
- });
- },
-
- getLang : function(n, dv) {
- return tinymce.i18n[(this.settings.language || 'en') + '.' + n] || (is(dv) ? dv : '{#' + n + '}');
- },
-
- getParam : function(n, dv, ty) {
- var tr = tinymce.trim, v = is(this.settings[n]) ? this.settings[n] : dv, o;
-
- if (ty === 'hash') {
- o = {};
-
- if (is(v, 'string')) {
- each(v.indexOf('=') > 0 ? v.split(/[;,](?![^=;,]*(?:[;,]|$))/) : v.split(','), function(v) {
- v = v.split('=');
-
- if (v.length > 1)
- o[tr(v[0])] = tr(v[1]);
- else
- o[tr(v[0])] = tr(v);
- });
- } else
- o = v;
-
- return o;
- }
-
- return v;
- },
-
- nodeChanged : function(o) {
- var self = this, selection = self.selection, node;
-
- // Fix for bug #1896577 it seems that this can not be fired while the editor is loading
- if (self.initialized) {
- o = o || {};
-
- // Get start node
- node = selection.getStart() || self.getBody();
- node = isIE && node.ownerDocument != self.getDoc() ? self.getBody() : node; // Fix for IE initial state
-
- // Get parents and add them to object
- o.parents = [];
- self.dom.getParent(node, function(node) {
- if (node.nodeName == 'BODY')
- return true;
-
- o.parents.push(node);
- });
-
- self.onNodeChange.dispatch(
- self,
- o ? o.controlManager || self.controlManager : self.controlManager,
- node,
- selection.isCollapsed(),
- o
- );
- }
- },
-
- addButton : function(name, settings) {
- var self = this;
-
- self.buttons = self.buttons || {};
- self.buttons[name] = settings;
- },
-
- addCommand : function(name, callback, scope) {
- this.execCommands[name] = {func : callback, scope : scope || this};
- },
-
- addQueryStateHandler : function(name, callback, scope) {
- this.queryStateCommands[name] = {func : callback, scope : scope || this};
- },
-
- addQueryValueHandler : function(name, callback, scope) {
- this.queryValueCommands[name] = {func : callback, scope : scope || this};
- },
-
- addShortcut : function(pa, desc, cmd_func, sc) {
- var t = this, c;
-
- if (t.settings.custom_shortcuts === false)
- return false;
-
- t.shortcuts = t.shortcuts || {};
-
- if (is(cmd_func, 'string')) {
- c = cmd_func;
-
- cmd_func = function() {
- t.execCommand(c, false, null);
- };
- }
-
- if (is(cmd_func, 'object')) {
- c = cmd_func;
-
- cmd_func = function() {
- t.execCommand(c[0], c[1], c[2]);
- };
- }
-
- each(explode(pa), function(pa) {
- var o = {
- func : cmd_func,
- scope : sc || this,
- desc : t.translate(desc),
- alt : false,
- ctrl : false,
- shift : false
- };
-
- each(explode(pa, '+'), function(v) {
- switch (v) {
- case 'alt':
- case 'ctrl':
- case 'shift':
- o[v] = true;
- break;
-
- default:
- o.charCode = v.charCodeAt(0);
- o.keyCode = v.toUpperCase().charCodeAt(0);
- }
- });
-
- t.shortcuts[(o.ctrl ? 'ctrl' : '') + ',' + (o.alt ? 'alt' : '') + ',' + (o.shift ? 'shift' : '') + ',' + o.keyCode] = o;
- });
-
- return true;
- },
-
- execCommand : function(cmd, ui, val, a) {
- var t = this, s = 0, o, st;
-
- if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd) && (!a || !a.skip_focus))
- t.focus();
-
- a = extend({}, a);
- t.onBeforeExecCommand.dispatch(t, cmd, ui, val, a);
- if (a.terminate)
- return false;
-
- // Command callback
- if (t.execCallback('execcommand_callback', t.id, t.selection.getNode(), cmd, ui, val)) {
- t.onExecCommand.dispatch(t, cmd, ui, val, a);
- return true;
- }
-
- // Registred commands
- if (o = t.execCommands[cmd]) {
- st = o.func.call(o.scope, ui, val);
-
- // Fall through on true
- if (st !== true) {
- t.onExecCommand.dispatch(t, cmd, ui, val, a);
- return st;
- }
- }
-
- // Plugin commands
- each(t.plugins, function(p) {
- if (p.execCommand && p.execCommand(cmd, ui, val)) {
- t.onExecCommand.dispatch(t, cmd, ui, val, a);
- s = 1;
- return false;
- }
- });
-
- if (s)
- return true;
-
- // Theme commands
- if (t.theme && t.theme.execCommand && t.theme.execCommand(cmd, ui, val)) {
- t.onExecCommand.dispatch(t, cmd, ui, val, a);
- return true;
- }
-
- // Editor commands
- if (t.editorCommands.execCommand(cmd, ui, val)) {
- t.onExecCommand.dispatch(t, cmd, ui, val, a);
- return true;
- }
-
- // Browser commands
- t.getDoc().execCommand(cmd, ui, val);
- t.onExecCommand.dispatch(t, cmd, ui, val, a);
- },
-
- queryCommandState : function(cmd) {
- var t = this, o, s;
-
- // Is hidden then return undefined
- if (t._isHidden())
- return;
-
- // Registred commands
- if (o = t.queryStateCommands[cmd]) {
- s = o.func.call(o.scope);
-
- // Fall though on true
- if (s !== true)
- return s;
- }
-
- // Registred commands
- o = t.editorCommands.queryCommandState(cmd);
- if (o !== -1)
- return o;
-
- // Browser commands
- try {
- return this.getDoc().queryCommandState(cmd);
- } catch (ex) {
- // Fails sometimes see bug: 1896577
- }
- },
-
- queryCommandValue : function(c) {
- var t = this, o, s;
-
- // Is hidden then return undefined
- if (t._isHidden())
- return;
-
- // Registred commands
- if (o = t.queryValueCommands[c]) {
- s = o.func.call(o.scope);
-
- // Fall though on true
- if (s !== true)
- return s;
- }
-
- // Registred commands
- o = t.editorCommands.queryCommandValue(c);
- if (is(o))
- return o;
-
- // Browser commands
- try {
- return this.getDoc().queryCommandValue(c);
- } catch (ex) {
- // Fails sometimes see bug: 1896577
- }
- },
-
- show : function() {
- var self = this;
-
- DOM.show(self.getContainer());
- DOM.hide(self.id);
- self.load();
- },
-
- hide : function() {
- var self = this, doc = self.getDoc();
-
- // Fixed bug where IE has a blinking cursor left from the editor
- if (isIE && doc)
- doc.execCommand('SelectAll');
-
- // We must save before we hide so Safari doesn't crash
- self.save();
- DOM.hide(self.getContainer());
- DOM.setStyle(self.id, 'display', self.orgDisplay);
- },
-
- isHidden : function() {
- return !DOM.isHidden(this.id);
- },
-
- setProgressState : function(b, ti, o) {
- this.onSetProgressState.dispatch(this, b, ti, o);
-
- return b;
- },
-
- load : function(o) {
- var t = this, e = t.getElement(), h;
-
- if (e) {
- o = o || {};
- o.load = true;
-
- // Double encode existing entities in the value
- h = t.setContent(is(e.value) ? e.value : e.innerHTML, o);
- o.element = e;
-
- if (!o.no_events)
- t.onLoadContent.dispatch(t, o);
-
- o.element = e = null;
-
- return h;
- }
- },
-
- save : function(o) {
- var t = this, e = t.getElement(), h, f;
-
- if (!e || !t.initialized)
- return;
-
- o = o || {};
- o.save = true;
-
- o.element = e;
- h = o.content = t.getContent(o);
-
- if (!o.no_events)
- t.onSaveContent.dispatch(t, o);
-
- h = o.content;
-
- if (!/TEXTAREA|INPUT/i.test(e.nodeName)) {
- e.innerHTML = h;
-
- // Update hidden form element
- if (f = DOM.getParent(t.id, 'form')) {
- each(f.elements, function(e) {
- if (e.name == t.id) {
- e.value = h;
- return false;
- }
- });
- }
- } else
- e.value = h;
-
- o.element = e = null;
-
- return h;
- },
-
- setContent : function(content, args) {
- var self = this, rootNode, body = self.getBody(), forcedRootBlockName;
-
- // Setup args object
- args = args || {};
- args.format = args.format || 'html';
- args.set = true;
- args.content = content;
-
- // Do preprocessing
- if (!args.no_events)
- self.onBeforeSetContent.dispatch(self, args);
-
- content = args.content;
-
- // Padd empty content in Gecko and Safari. Commands will otherwise fail on the content
- // It will also be impossible to place the caret in the editor unless there is a BR element present
- if (!tinymce.isIE && (content.length === 0 || /^\s+$/.test(content))) {
- forcedRootBlockName = self.settings.forced_root_block;
- if (forcedRootBlockName)
- content = '<' + forcedRootBlockName + '><br data-mce-bogus="1"></' + forcedRootBlockName + '>';
- else
- content = '<br data-mce-bogus="1">';
-
- body.innerHTML = content;
- self.selection.select(body, true);
- self.selection.collapse(true);
- return;
- }
-
- // Parse and serialize the html
- if (args.format !== 'raw') {
- content = new tinymce.html.Serializer({}, self.schema).serialize(
- self.parser.parse(content)
- );
- }
-
- // Set the new cleaned contents to the editor
- args.content = tinymce.trim(content);
- self.dom.setHTML(body, args.content);
-
- // Do post processing
- if (!args.no_events)
- self.onSetContent.dispatch(self, args);
-
- self.selection.normalize();
-
- return args.content;
- },
-
- getContent : function(args) {
- var self = this, content;
-
- // Setup args object
- args = args || {};
- args.format = args.format || 'html';
- args.get = true;
- args.getInner = true;
-
- // Do preprocessing
- if (!args.no_events)
- self.onBeforeGetContent.dispatch(self, args);
-
- // Get raw contents or by default the cleaned contents
- if (args.format == 'raw')
- content = self.getBody().innerHTML;
- else
- content = self.serializer.serialize(self.getBody(), args);
-
- args.content = tinymce.trim(content);
-
- // Do post processing
- if (!args.no_events)
- self.onGetContent.dispatch(self, args);
-
- return args.content;
- },
-
- isDirty : function() {
- var self = this;
-
- return tinymce.trim(self.startContent) != tinymce.trim(self.getContent({format : 'raw', no_events : 1})) && !self.isNotDirty;
- },
-
- getContainer : function() {
- var self = this;
-
- if (!self.container)
- self.container = DOM.get(self.editorContainer || self.id + '_parent');
-
- return self.container;
- },
-
- getContentAreaContainer : function() {
- return this.contentAreaContainer;
- },
-
- getElement : function() {
- return DOM.get(this.settings.content_element || this.id);
- },
-
- getWin : function() {
- var self = this, elm;
-
- if (!self.contentWindow) {
- elm = DOM.get(self.id + "_ifr");
-
- if (elm)
- self.contentWindow = elm.contentWindow;
- }
-
- return self.contentWindow;
- },
-
- getDoc : function() {
- var self = this, win;
-
- if (!self.contentDocument) {
- win = self.getWin();
-
- if (win)
- self.contentDocument = win.document;
- }
-
- return self.contentDocument;
- },
-
- getBody : function() {
- return this.bodyElement || this.getDoc().body;
- },
-
- convertURL : function(url, name, elm) {
- var self = this, settings = self.settings;
-
- // Use callback instead
- if (settings.urlconverter_callback)
- return self.execCallback('urlconverter_callback', url, elm, true, name);
-
- // Don't convert link href since thats the CSS files that gets loaded into the editor also skip local file URLs
- if (!settings.convert_urls || (elm && elm.nodeName == 'LINK') || url.indexOf('file:') === 0)
- return url;
-
- // Convert to relative
- if (settings.relative_urls)
- return self.documentBaseURI.toRelative(url);
-
- // Convert to absolute
- url = self.documentBaseURI.toAbsolute(url, settings.remove_script_host);
-
- return url;
- },
-
- addVisual : function(elm) {
- var self = this, settings = self.settings, dom = self.dom, cls;
-
- elm = elm || self.getBody();
-
- if (!is(self.hasVisual))
- self.hasVisual = settings.visual;
-
- each(dom.select('table,a', elm), function(elm) {
- var value;
-
- switch (elm.nodeName) {
- case 'TABLE':
- cls = settings.visual_table_class || 'mceItemTable';
- value = dom.getAttrib(elm, 'border');
-
- if (!value || value == '0') {
- if (self.hasVisual)
- dom.addClass(elm, cls);
- else
- dom.removeClass(elm, cls);
- }
-
- return;
-
- case 'A':
- value = dom.getAttrib(elm, 'name');
- cls = 'mceItemAnchor';
-
- if (value) {
- if (self.hasVisual)
- dom.addClass(elm, cls);
- else
- dom.removeClass(elm, cls);
- }
-
- return;
- }
- });
-
- self.onVisualAid.dispatch(self, elm, self.hasVisual);
- },
-
- remove : function() {
- var self = this, elm = self.getContainer();
-
- if (!self.removed) {
- self.removed = 1; // Cancels post remove event execution
- self.hide();
-
- // Don't clear the window or document if content editable
- // is enabled since other instances might still be present
- if (!self.settings.content_editable) {
- Event.clear(self.getWin());
- Event.clear(self.getDoc());
- }
-
- Event.clear(self.getBody());
- Event.clear(self.formElement);
- Event.unbind(elm);
-
- self.execCallback('remove_instance_callback', self);
- self.onRemove.dispatch(self);
-
- // Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command
- self.onExecCommand.listeners = [];
-
- tinymce.remove(self);
- DOM.remove(elm);
- }
- },
-
- destroy : function(s) {
- var t = this;
-
- // One time is enough
- if (t.destroyed)
- return;
-
- // We must unbind on Gecko since it would otherwise produce the pesky "attempt to run compile-and-go script on a cleared scope" message
- if (isGecko) {
- Event.unbind(t.getDoc());
- Event.unbind(t.getWin());
- Event.unbind(t.getBody());
- }
-
- if (!s) {
- tinymce.removeUnload(t.destroy);
- tinyMCE.onBeforeUnload.remove(t._beforeUnload);
-
- // Manual destroy
- if (t.theme && t.theme.destroy)
- t.theme.destroy();
-
- // Destroy controls, selection and dom
- t.controlManager.destroy();
- t.selection.destroy();
- t.dom.destroy();
- }
-
- if (t.formElement) {
- t.formElement.submit = t.formElement._mceOldSubmit;
- t.formElement._mceOldSubmit = null;
- }
-
- t.contentAreaContainer = t.formElement = t.container = t.settings.content_element = t.bodyElement = t.contentDocument = t.contentWindow = null;
-
- if (t.selection)
- t.selection = t.selection.win = t.selection.dom = t.selection.dom.doc = null;
-
- t.destroyed = 1;
- },
-
- // Internal functions
-
- _refreshContentEditable : function() {
- var self = this, body, parent;
-
- // Check if the editor was hidden and the re-initalize contentEditable mode by removing and adding the body again
- if (self._isHidden()) {
- body = self.getBody();
- parent = body.parentNode;
-
- parent.removeChild(body);
- parent.appendChild(body);
-
- body.focus();
- }
- },
-
- _isHidden : function() {
- var s;
-
- if (!isGecko)
- return 0;
-
- // Weird, wheres that cursor selection?
- s = this.selection.getSel();
- return (!s || !s.rangeCount || s.rangeCount === 0);
- }
- });
-})(tinymce);
-(function(tinymce) {
- var each = tinymce.each;
-
- tinymce.Editor.prototype.setupEvents = function() {
- var self = this, settings = self.settings;
-
- // Add events to the editor
- each([
- 'onPreInit',
-
- 'onBeforeRenderUI',
-
- 'onPostRender',
-
- 'onLoad',
-
- 'onInit',
-
- 'onRemove',
-
- 'onActivate',
-
- 'onDeactivate',
-
- 'onClick',
-
- 'onEvent',
-
- 'onMouseUp',
-
- 'onMouseDown',
-
- 'onDblClick',
-
- 'onKeyDown',
-
- 'onKeyUp',
-
- 'onKeyPress',
-
- 'onContextMenu',
-
- 'onSubmit',
-
- 'onReset',
-
- 'onPaste',
-
- 'onPreProcess',
-
- 'onPostProcess',
-
- 'onBeforeSetContent',
-
- 'onBeforeGetContent',
-
- 'onSetContent',
-
- 'onGetContent',
-
- 'onLoadContent',
-
- 'onSaveContent',
-
- 'onNodeChange',
-
- 'onChange',
-
- 'onBeforeExecCommand',
-
- 'onExecCommand',
-
- 'onUndo',
-
- 'onRedo',
-
- 'onVisualAid',
-
- 'onSetProgressState',
-
- 'onSetAttrib'
- ], function(name) {
- self[name] = new tinymce.util.Dispatcher(self);
- });
-
- // Handle legacy cleanup_callback option
- if (settings.cleanup_callback) {
- self.onBeforeSetContent.add(function(ed, o) {
- o.content = ed.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
- });
-
- self.onPreProcess.add(function(ed, o) {
- if (o.set)
- ed.execCallback('cleanup_callback', 'insert_to_editor_dom', o.node, o);
-
- if (o.get)
- ed.execCallback('cleanup_callback', 'get_from_editor_dom', o.node, o);
- });
-
- self.onPostProcess.add(function(ed, o) {
- if (o.set)
- o.content = ed.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
-
- if (o.get)
- o.content = ed.execCallback('cleanup_callback', 'get_from_editor', o.content, o);
- });
- }
-
- // Handle legacy save_callback option
- if (settings.save_callback) {
- self.onGetContent.add(function(ed, o) {
- if (o.save)
- o.content = ed.execCallback('save_callback', ed.id, o.content, ed.getBody());
- });
- }
-
- // Handle legacy handle_event_callback option
- if (settings.handle_event_callback) {
- self.onEvent.add(function(ed, e, o) {
- if (self.execCallback('handle_event_callback', e, ed, o) === false)
- Event.cancel(e);
- });
- }
-
- // Handle legacy handle_node_change_callback option
- if (settings.handle_node_change_callback) {
- self.onNodeChange.add(function(ed, cm, n) {
- ed.execCallback('handle_node_change_callback', ed.id, n, -1, -1, true, ed.selection.isCollapsed());
- });
- }
-
- // Handle legacy save_callback option
- if (settings.save_callback) {
- self.onSaveContent.add(function(ed, o) {
- var h = ed.execCallback('save_callback', ed.id, o.content, ed.getBody());
-
- if (h)
- o.content = h;
- });
- }
-
- // Handle legacy onchange_callback option
- if (settings.onchange_callback) {
- self.onChange.add(function(ed, l) {
- ed.execCallback('onchange_callback', ed, l);
- });
- }
- };
-
- tinymce.Editor.prototype.bindNativeEvents = function() {
- // 'focus', 'blur', 'dblclick', 'beforedeactivate', submit, reset
- var self = this, i, settings = self.settings, dom = self.dom, nativeToDispatcherMap;
-
- nativeToDispatcherMap = {
- mouseup : 'onMouseUp',
- mousedown : 'onMouseDown',
- click : 'onClick',
- keyup : 'onKeyUp',
- keydown : 'onKeyDown',
- keypress : 'onKeyPress',
- submit : 'onSubmit',
- reset : 'onReset',
- contextmenu : 'onContextMenu',
- dblclick : 'onDblClick',
- paste : 'onPaste' // Doesn't work in all browsers yet
- };
-
- // Handler that takes a native event and sends it out to a dispatcher like onKeyDown
- function eventHandler(evt, args) {
- var type = evt.type;
-
- // Don't fire events when it's removed
- if (self.removed)
- return;
-
- // Sends the native event out to a global dispatcher then to the specific event dispatcher
- if (self.onEvent.dispatch(self, evt, args) !== false) {
- self[nativeToDispatcherMap[evt.fakeType || evt.type]].dispatch(self, evt, args);
- }
- };
-
- // Opera doesn't support focus event for contentEditable elements so we need to fake it
- function doOperaFocus(e) {
- self.focus(true);
- };
-
- function nodeChanged() {
- // Normalize selection for example <b>a</b><i>|a</i> becomes <b>a|</b><i>a</i>
- self.selection.normalize();
- self.nodeChanged();
- }
-
- // Add DOM events
- each(nativeToDispatcherMap, function(dispatcherName, nativeName) {
- var root = settings.content_editable ? self.getBody() : self.getDoc();
-
- switch (nativeName) {
- case 'contextmenu':
- dom.bind(root, nativeName, eventHandler);
- break;
-
- case 'paste':
- dom.bind(self.getBody(), nativeName, eventHandler);
- break;
-
- case 'submit':
- case 'reset':
- dom.bind(self.getElement().form || tinymce.DOM.getParent(self.id, 'form'), nativeName, eventHandler);
- break;
-
- default:
- dom.bind(root, nativeName, eventHandler);
- }
- });
-
- // Set the editor as active when focused
- dom.bind(settings.content_editable ? self.getBody() : (tinymce.isGecko ? self.getDoc() : self.getWin()), 'focus', function(e) {
- self.focus(true);
- });
-
- if (settings.content_editable && tinymce.isOpera) {
- dom.bind(self.getBody(), 'click', doOperaFocus);
- dom.bind(self.getBody(), 'keydown', doOperaFocus);
- }
-
- // Add node change handler
- self.onMouseUp.add(nodeChanged);
-
- self.onKeyUp.add(function(ed, e) {
- var keyCode = e.keyCode;
-
- if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 13 || keyCode == 45 || keyCode == 46 || keyCode == 8 || (tinymce.isMac && (keyCode == 91 || keyCode == 93)) || e.ctrlKey)
- nodeChanged();
- });
-
- // Add reset handler
- self.onReset.add(function() {
- self.setContent(self.startContent, {format : 'raw'});
- });
-
- // Add shortcuts
- function handleShortcut(e, execute) {
- if (e.altKey || e.ctrlKey || e.metaKey) {
- each(self.shortcuts, function(shortcut) {
- var ctrlState = tinymce.isMac ? e.metaKey : e.ctrlKey;
-
- if (shortcut.ctrl != ctrlState || shortcut.alt != e.altKey || shortcut.shift != e.shiftKey)
- return;
-
- if (e.keyCode == shortcut.keyCode || (e.charCode && e.charCode == shortcut.charCode)) {
- e.preventDefault();
-
- if (execute) {
- shortcut.func.call(shortcut.scope);
- }
-
- return true;
- }
- });
- }
- };
-
- self.onKeyUp.add(function(ed, e) {
- handleShortcut(e);
- });
-
- self.onKeyPress.add(function(ed, e) {
- handleShortcut(e);
- });
-
- self.onKeyDown.add(function(ed, e) {
- handleShortcut(e, true);
- });
-
- if (tinymce.isOpera) {
- self.onClick.add(function(ed, e) {
- e.preventDefault();
- });
- }
- };
-})(tinymce);
-(function(tinymce) {
- // Added for compression purposes
- var each = tinymce.each, undef, TRUE = true, FALSE = false;
-
- tinymce.EditorCommands = function(editor) {
- var dom = editor.dom,
- selection = editor.selection,
- commands = {state: {}, exec : {}, value : {}},
- settings = editor.settings,
- formatter = editor.formatter,
- bookmark;
-
- function execCommand(command, ui, value) {
- var func;
-
- command = command.toLowerCase();
- if (func = commands.exec[command]) {
- func(command, ui, value);
- return TRUE;
- }
-
- return FALSE;
- };
-
- function queryCommandState(command) {
- var func;
-
- command = command.toLowerCase();
- if (func = commands.state[command])
- return func(command);
-
- return -1;
- };
-
- function queryCommandValue(command) {
- var func;
-
- command = command.toLowerCase();
- if (func = commands.value[command])
- return func(command);
-
- return FALSE;
- };
-
- function addCommands(command_list, type) {
- type = type || 'exec';
-
- each(command_list, function(callback, command) {
- each(command.toLowerCase().split(','), function(command) {
- commands[type][command] = callback;
- });
- });
- };
-
- // Expose public methods
- tinymce.extend(this, {
- execCommand : execCommand,
- queryCommandState : queryCommandState,
- queryCommandValue : queryCommandValue,
- addCommands : addCommands
- });
-
- // Private methods
-
- function execNativeCommand(command, ui, value) {
- if (ui === undef)
- ui = FALSE;
-
- if (value === undef)
- value = null;
-
- return editor.getDoc().execCommand(command, ui, value);
- };
-
- function isFormatMatch(name) {
- return formatter.match(name);
- };
-
- function toggleFormat(name, value) {
- formatter.toggle(name, value ? {value : value} : undef);
- };
-
- function storeSelection(type) {
- bookmark = selection.getBookmark(type);
- };
-
- function restoreSelection() {
- selection.moveToBookmark(bookmark);
- };
-
- // Add execCommand overrides
- addCommands({
- // Ignore these, added for compatibility
- 'mceResetDesignMode,mceBeginUndoLevel' : function() {},
-
- // Add undo manager logic
- 'mceEndUndoLevel,mceAddUndoLevel' : function() {
- editor.undoManager.add();
- },
-
- 'Cut,Copy,Paste' : function(command) {
- var doc = editor.getDoc(), failed;
-
- // Try executing the native command
- try {
- execNativeCommand(command);
- } catch (ex) {
- // Command failed
- failed = TRUE;
- }
-
- // Present alert message about clipboard access not being available
- if (failed || !doc.queryCommandSupported(command)) {
- if (tinymce.isGecko) {
- editor.windowManager.confirm(editor.getLang('clipboard_msg'), function(state) {
- if (state)
- open('http://www.mozilla.org/editor/midasdemo/securityprefs.html', '_blank');
- });
- } else
- editor.windowManager.alert(editor.getLang('clipboard_no_support'));
- }
- },
-
- // Override unlink command
- unlink : function(command) {
- if (selection.isCollapsed())
- selection.select(selection.getNode());
-
- execNativeCommand(command);
- selection.collapse(FALSE);
- },
-
- // Override justify commands to use the text formatter engine
- 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) {
- var align = command.substring(7);
-
- // Remove all other alignments first
- each('left,center,right,full'.split(','), function(name) {
- if (align != name)
- formatter.remove('align' + name);
- });
-
- toggleFormat('align' + align);
- execCommand('mceRepaint');
- },
-
- // Override list commands to fix WebKit bug
- 'InsertUnorderedList,InsertOrderedList' : function(command) {
- var listElm, listParent;
-
- execNativeCommand(command);
-
- // WebKit produces lists within block elements so we need to split them
- // we will replace the native list creation logic to custom logic later on
- // TODO: Remove this when the list creation logic is removed
- listElm = dom.getParent(selection.getNode(), 'ol,ul');
- if (listElm) {
- listParent = listElm.parentNode;
-
- // If list is within a text block then split that block
- if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) {
- storeSelection();
- dom.split(listParent, listElm);
- restoreSelection();
- }
- }
- },
-
- // Override commands to use the text formatter engine
- 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript' : function(command) {
- toggleFormat(command);
- },
-
- // Override commands to use the text formatter engine
- 'ForeColor,HiliteColor,FontName' : function(command, ui, value) {
- toggleFormat(command, value);
- },
-
- FontSize : function(command, ui, value) {
- var fontClasses, fontSizes;
-
- // Convert font size 1-7 to styles
- if (value >= 1 && value <= 7) {
- fontSizes = tinymce.explode(settings.font_size_style_values);
- fontClasses = tinymce.explode(settings.font_size_classes);
-
- if (fontClasses)
- value = fontClasses[value - 1] || value;
- else
- value = fontSizes[value - 1] || value;
- }
-
- toggleFormat(command, value);
- },
-
- RemoveFormat : function(command) {
- formatter.remove(command);
- },
-
- mceBlockQuote : function(command) {
- toggleFormat('blockquote');
- },
-
- FormatBlock : function(command, ui, value) {
- return toggleFormat(value || 'p');
- },
-
- mceCleanup : function() {
- var bookmark = selection.getBookmark();
-
- editor.setContent(editor.getContent({cleanup : TRUE}), {cleanup : TRUE});
-
- selection.moveToBookmark(bookmark);
- },
-
- mceRemoveNode : function(command, ui, value) {
- var node = value || selection.getNode();
-
- // Make sure that the body node isn't removed
- if (node != editor.getBody()) {
- storeSelection();
- editor.dom.remove(node, TRUE);
- restoreSelection();
- }
- },
-
- mceSelectNodeDepth : function(command, ui, value) {
- var counter = 0;
-
- dom.getParent(selection.getNode(), function(node) {
- if (node.nodeType == 1 && counter++ == value) {
- selection.select(node);
- return FALSE;
- }
- }, editor.getBody());
- },
-
- mceSelectNode : function(command, ui, value) {
- selection.select(value);
- },
-
- mceInsertContent : function(command, ui, value) {
- var parser, serializer, parentNode, rootNode, fragment, args,
- marker, nodeRect, viewPortRect, rng, node, node2, bookmarkHtml, viewportBodyElement;
-
- //selection.normalize();
-
- // Setup parser and serializer
- parser = editor.parser;
- serializer = new tinymce.html.Serializer({}, editor.schema);
- bookmarkHtml = '<span id="mce_marker" data-mce-type="bookmark">\uFEFF</span>';
-
- // Run beforeSetContent handlers on the HTML to be inserted
- args = {content: value, format: 'html'};
- selection.onBeforeSetContent.dispatch(selection, args);
- value = args.content;
-
- // Add caret at end of contents if it's missing
- if (value.indexOf('{$caret}') == -1)
- value += '{$caret}';
-
- // Replace the caret marker with a span bookmark element
- value = value.replace(/\{\$caret\}/, bookmarkHtml);
-
- // Insert node maker where we will insert the new HTML and get it's parent
- if (!selection.isCollapsed())
- editor.getDoc().execCommand('Delete', false, null);
-
- parentNode = selection.getNode();
-
- // Parse the fragment within the context of the parent node
- args = {context : parentNode.nodeName.toLowerCase()};
- fragment = parser.parse(value, args);
-
- // Move the caret to a more suitable location
- node = fragment.lastChild;
- if (node.attr('id') == 'mce_marker') {
- marker = node;
-
- for (node = node.prev; node; node = node.walk(true)) {
- if (node.type == 3 || !dom.isBlock(node.name)) {
- node.parent.insert(marker, node, node.name === 'br');
- break;
- }
- }
- }
-
- // If parser says valid we can insert the contents into that parent
- if (!args.invalid) {
- value = serializer.serialize(fragment);
-
- // Check if parent is empty or only has one BR element then set the innerHTML of that parent
- node = parentNode.firstChild;
- node2 = parentNode.lastChild;
- if (!node || (node === node2 && node.nodeName === 'BR'))
- dom.setHTML(parentNode, value);
- else
- selection.setContent(value);
- } else {
- // If the fragment was invalid within that context then we need
- // to parse and process the parent it's inserted into
-
- // Insert bookmark node and get the parent
- selection.setContent(bookmarkHtml);
- parentNode = editor.selection.getNode();
- rootNode = editor.getBody();
-
- // Opera will return the document node when selection is in root
- if (parentNode.nodeType == 9)
- parentNode = node = rootNode;
- else
- node = parentNode;
-
- // Find the ancestor just before the root element
- while (node !== rootNode) {
- parentNode = node;
- node = node.parentNode;
- }
-
- // Get the outer/inner HTML depending on if we are in the root and parser and serialize that
- value = parentNode == rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode);
- value = serializer.serialize(
- parser.parse(
- // Need to replace by using a function since $ in the contents would otherwise be a problem
- value.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i, function() {
- return serializer.serialize(fragment);
- })
- )
- );
-
- // Set the inner/outer HTML depending on if we are in the root or not
- if (parentNode == rootNode)
- dom.setHTML(rootNode, value);
- else
- dom.setOuterHTML(parentNode, value);
- }
-
- marker = dom.get('mce_marker');
-
- // Scroll range into view scrollIntoView on element can't be used since it will scroll the main view port as well
- nodeRect = dom.getRect(marker);
- viewPortRect = dom.getViewPort(editor.getWin());
-
- // Check if node is out side the viewport if it is then scroll to it
- if ((nodeRect.y + nodeRect.h > viewPortRect.y + viewPortRect.h || nodeRect.y < viewPortRect.y) ||
- (nodeRect.x > viewPortRect.x + viewPortRect.w || nodeRect.x < viewPortRect.x)) {
- viewportBodyElement = tinymce.isIE ? editor.getDoc().documentElement : editor.getBody();
- viewportBodyElement.scrollLeft = nodeRect.x;
- viewportBodyElement.scrollTop = nodeRect.y - viewPortRect.h + 25;
- }
-
- // Move selection before marker and remove it
- rng = dom.createRng();
-
- // If previous sibling is a text node set the selection to the end of that node
- node = marker.previousSibling;
- if (node && node.nodeType == 3) {
- rng.setStart(node, node.nodeValue.length);
- } else {
- // If the previous sibling isn't a text node or doesn't exist set the selection before the marker node
- rng.setStartBefore(marker);
- rng.setEndBefore(marker);
- }
-
- // Remove the marker node and set the new range
- dom.remove(marker);
- selection.setRng(rng);
-
- // Dispatch after event and add any visual elements needed
- selection.onSetContent.dispatch(selection, args);
- editor.addVisual();
- },
-
- mceInsertRawHTML : function(command, ui, value) {
- selection.setContent('tiny_mce_marker');
- editor.setContent(editor.getContent().replace(/tiny_mce_marker/g, function() { return value }));
- },
-
- mceSetContent : function(command, ui, value) {
- editor.setContent(value);
- },
-
- 'Indent,Outdent' : function(command) {
- var intentValue, indentUnit, value;
-
- // Setup indent level
- intentValue = settings.indentation;
- indentUnit = /[a-z%]+$/i.exec(intentValue);
- intentValue = parseInt(intentValue);
-
- if (!queryCommandState('InsertUnorderedList') && !queryCommandState('InsertOrderedList')) {
- // If forced_root_blocks is set to false we don't have a block to indent so lets create a div
- if (!settings.forced_root_block && !dom.getParent(selection.getNode(), dom.isBlock)) {
- formatter.apply('div');
- }
-
- each(selection.getSelectedBlocks(), function(element) {
- if (command == 'outdent') {
- value = Math.max(0, parseInt(element.style.paddingLeft || 0) - intentValue);
- dom.setStyle(element, 'paddingLeft', value ? value + indentUnit : '');
- } else
- dom.setStyle(element, 'paddingLeft', (parseInt(element.style.paddingLeft || 0) + intentValue) + indentUnit);
- });
- } else
- execNativeCommand(command);
- },
-
- mceRepaint : function() {
- var bookmark;
-
- if (tinymce.isGecko) {
- try {
- storeSelection(TRUE);
-
- if (selection.getSel())
- selection.getSel().selectAllChildren(editor.getBody());
-
- selection.collapse(TRUE);
- restoreSelection();
- } catch (ex) {
- // Ignore
- }
- }
- },
-
- mceToggleFormat : function(command, ui, value) {
- formatter.toggle(value);
- },
-
- InsertHorizontalRule : function() {
- editor.execCommand('mceInsertContent', false, '<hr />');
- },
-
- mceToggleVisualAid : function() {
- editor.hasVisual = !editor.hasVisual;
- editor.addVisual();
- },
-
- mceReplaceContent : function(command, ui, value) {
- editor.execCommand('mceInsertContent', false, value.replace(/\{\$selection\}/g, selection.getContent({format : 'text'})));
- },
-
- mceInsertLink : function(command, ui, value) {
- var anchor;
-
- if (typeof(value) == 'string')
- value = {href : value};
-
- anchor = dom.getParent(selection.getNode(), 'a');
-
- // Spaces are never valid in URLs and it's a very common mistake for people to make so we fix it here.
- value.href = value.href.replace(' ', '%20');
-
- // Remove existing links if there could be child links or that the href isn't specified
- if (!anchor || !value.href) {
- formatter.remove('link');
- }
-
- // Apply new link to selection
- if (value.href) {
- formatter.apply('link', value, anchor);
- }
- },
-
- selectAll : function() {
- var root = dom.getRoot(), rng = dom.createRng();
-
- rng.setStart(root, 0);
- rng.setEnd(root, root.childNodes.length);
-
- editor.selection.setRng(rng);
- }
- });
-
- // Add queryCommandState overrides
- addCommands({
- // Override justify commands
- 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) {
- var name = 'align' + command.substring(7);
- var nodes = selection.isCollapsed() ? [dom.getParent(selection.getNode(), dom.isBlock)] : selection.getSelectedBlocks();
- var matches = tinymce.map(nodes, function(node) {
- return !!formatter.matchNode(node, name);
- });
- return tinymce.inArray(matches, TRUE) !== -1;
- },
-
- 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript' : function(command) {
- return isFormatMatch(command);
- },
-
- mceBlockQuote : function() {
- return isFormatMatch('blockquote');
- },
-
- Outdent : function() {
- var node;
-
- if (settings.inline_styles) {
- if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0)
- return TRUE;
-
- if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0)
- return TRUE;
- }
-
- return queryCommandState('InsertUnorderedList') || queryCommandState('InsertOrderedList') || (!settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE'));
- },
-
- 'InsertUnorderedList,InsertOrderedList' : function(command) {
- return dom.getParent(selection.getNode(), command == 'insertunorderedlist' ? 'UL' : 'OL');
- }
- }, 'state');
-
- // Add queryCommandValue overrides
- addCommands({
- 'FontSize,FontName' : function(command) {
- var value = 0, parent;
-
- if (parent = dom.getParent(selection.getNode(), 'span')) {
- if (command == 'fontsize')
- value = parent.style.fontSize;
- else
- value = parent.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase();
- }
-
- return value;
- }
- }, 'value');
-
- // Add undo manager logic
- addCommands({
- Undo : function() {
- editor.undoManager.undo();
- },
-
- Redo : function() {
- editor.undoManager.redo();
- }
- });
- };
-})(tinymce);
-
-(function(tinymce) {
- var Dispatcher = tinymce.util.Dispatcher;
-
- tinymce.UndoManager = function(editor) {
- var self, index = 0, data = [], beforeBookmark, onAdd, onUndo, onRedo;
-
- function getContent() {
- // Remove whitespace before/after and remove pure bogus nodes
- return tinymce.trim(editor.getContent({format : 'raw', no_events : 1}).replace(/<span[^>]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\/span>/g, ''));
- };
-
- function addNonTypingUndoLevel() {
- self.typing = false;
- self.add();
- };
-
- // Create event instances
- onAdd = new Dispatcher(self);
- onUndo = new Dispatcher(self);
- onRedo = new Dispatcher(self);
-
- // Pass though onAdd event from UndoManager to Editor as onChange
- onAdd.add(function(undoman, level) {
- if (undoman.hasUndo())
- return editor.onChange.dispatch(editor, level, undoman);
- });
-
- // Pass though onUndo event from UndoManager to Editor
- onUndo.add(function(undoman, level) {
- return editor.onUndo.dispatch(editor, level, undoman);
- });
-
- // Pass though onRedo event from UndoManager to Editor
- onRedo.add(function(undoman, level) {
- return editor.onRedo.dispatch(editor, level, undoman);
- });
-
- // Add initial undo level when the editor is initialized
- editor.onInit.add(function() {
- self.add();
- });
-
- // Get position before an execCommand is processed
- editor.onBeforeExecCommand.add(function(ed, cmd, ui, val, args) {
- if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!args || !args.skip_undo)) {
- self.beforeChange();
- }
- });
-
- // Add undo level after an execCommand call was made
- editor.onExecCommand.add(function(ed, cmd, ui, val, args) {
- if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!args || !args.skip_undo)) {
- self.add();
- }
- });
-
- // Add undo level on save contents, drag end and blur/focusout
- editor.onSaveContent.add(addNonTypingUndoLevel);
- editor.dom.bind(editor.dom.getRoot(), 'dragend', addNonTypingUndoLevel);
- editor.dom.bind(editor.getDoc(), tinymce.isGecko ? 'blur' : 'focusout', function(e) {
- if (!editor.removed && self.typing) {
- addNonTypingUndoLevel();
- }
- });
-
- editor.onKeyUp.add(function(editor, e) {
- var keyCode = e.keyCode;
-
- if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 45 || keyCode == 13 || e.ctrlKey) {
- addNonTypingUndoLevel();
- }
- });
-
- editor.onKeyDown.add(function(editor, e) {
- var keyCode = e.keyCode;
-
- // Is caracter positon keys left,right,up,down,home,end,pgdown,pgup,enter
- if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 45) {
- if (self.typing) {
- addNonTypingUndoLevel();
- }
-
- return;
- }
-
- // If key isn't shift,ctrl,alt,capslock,metakey
- if ((keyCode < 16 || keyCode > 20) && keyCode != 224 && keyCode != 91 && !self.typing) {
- self.beforeChange();
- self.typing = true;
- self.add();
- }
- });
-
- editor.onMouseDown.add(function(editor, e) {
- if (self.typing) {
- addNonTypingUndoLevel();
- }
- });
-
- // Add keyboard shortcuts for undo/redo keys
- editor.addShortcut('ctrl+z', 'undo_desc', 'Undo');
- editor.addShortcut('ctrl+y', 'redo_desc', 'Redo');
-
- self = {
- // Explose for debugging reasons
- data : data,
-
- typing : false,
-
- onAdd : onAdd,
-
- onUndo : onUndo,
-
- onRedo : onRedo,
-
- beforeChange : function() {
- beforeBookmark = editor.selection.getBookmark(2, true);
- },
-
- add : function(level) {
- var i, settings = editor.settings, lastLevel;
-
- level = level || {};
- level.content = getContent();
-
- // Add undo level if needed
- lastLevel = data[index];
- if (lastLevel && lastLevel.content == level.content)
- return null;
-
- // Set before bookmark on previous level
- if (data[index])
- data[index].beforeBookmark = beforeBookmark;
-
- // Time to compress
- if (settings.custom_undo_redo_levels) {
- if (data.length > settings.custom_undo_redo_levels) {
- for (i = 0; i < data.length - 1; i++)
- data[i] = data[i + 1];
-
- data.length--;
- index = data.length;
- }
- }
-
- // Get a non intrusive normalized bookmark
- level.bookmark = editor.selection.getBookmark(2, true);
-
- // Crop array if needed
- if (index < data.length - 1)
- data.length = index + 1;
-
- data.push(level);
- index = data.length - 1;
-
- self.onAdd.dispatch(self, level);
- editor.isNotDirty = 0;
-
- return level;
- },
-
- undo : function() {
- var level, i;
-
- if (self.typing) {
- self.add();
- self.typing = false;
- }
-
- if (index > 0) {
- level = data[--index];
-
- editor.setContent(level.content, {format : 'raw'});
- editor.selection.moveToBookmark(level.beforeBookmark);
-
- self.onUndo.dispatch(self, level);
- }
-
- return level;
- },
-
- redo : function() {
- var level;
-
- if (index < data.length - 1) {
- level = data[++index];
-
- editor.setContent(level.content, {format : 'raw'});
- editor.selection.moveToBookmark(level.bookmark);
-
- self.onRedo.dispatch(self, level);
- }
-
- return level;
- },
-
- clear : function() {
- data = [];
- index = 0;
- self.typing = false;
- },
-
- hasUndo : function() {
- return index > 0 || this.typing;
- },
-
- hasRedo : function() {
- return index < data.length - 1 && !this.typing;
- }
- };
-
- return self;
- };
-})(tinymce);
-
-tinymce.ForceBlocks = function(editor) {
- var settings = editor.settings, dom = editor.dom, selection = editor.selection, blockElements = editor.schema.getBlockElements();
-
- function addRootBlocks() {
- var node = selection.getStart(), rootNode = editor.getBody(), rng, startContainer, startOffset, endContainer, endOffset, rootBlockNode, tempNode, offset = -0xFFFFFF, wrapped;
-
- if (!node || node.nodeType !== 1 || !settings.forced_root_block)
- return;
-
- // Check if node is wrapped in block
- while (node && node != rootNode) {
- if (blockElements[node.nodeName])
- return;
-
- node = node.parentNode;
- }
-
- // Get current selection
- rng = selection.getRng();
- if (rng.setStart) {
- startContainer = rng.startContainer;
- startOffset = rng.startOffset;
- endContainer = rng.endContainer;
- endOffset = rng.endOffset;
- } else {
- // Force control range into text range
- if (rng.item) {
- node = rng.item(0);
- rng = editor.getDoc().body.createTextRange();
- rng.moveToElementText(node);
- }
-
- tmpRng = rng.duplicate();
- tmpRng.collapse(true);
- startOffset = tmpRng.move('character', offset) * -1;
-
- if (!tmpRng.collapsed) {
- tmpRng = rng.duplicate();
- tmpRng.collapse(false);
- endOffset = (tmpRng.move('character', offset) * -1) - startOffset;
- }
- }
-
- // Wrap non block elements and text nodes
- node = rootNode.firstChild;
- while (node) {
- if (node.nodeType === 3 || (node.nodeType == 1 && !blockElements[node.nodeName])) {
- if (!rootBlockNode) {
- rootBlockNode = dom.create(settings.forced_root_block);
- node.parentNode.insertBefore(rootBlockNode, node);
- wrapped = true;
- }
-
- tempNode = node;
- node = node.nextSibling;
- rootBlockNode.appendChild(tempNode);
- } else {
- rootBlockNode = null;
- node = node.nextSibling;
- }
- }
-
- if (rng.setStart) {
- rng.setStart(startContainer, startOffset);
- rng.setEnd(endContainer, endOffset);
- selection.setRng(rng);
- } else {
- try {
- rng = editor.getDoc().body.createTextRange();
- rng.moveToElementText(rootNode);
- rng.collapse(true);
- rng.moveStart('character', startOffset);
-
- if (endOffset > 0)
- rng.moveEnd('character', endOffset);
-
- rng.select();
- } catch (ex) {
- // Ignore
- }
- }
-
- // Only trigger nodeChange when we wrapped nodes to prevent a forever loop
- if (wrapped) {
- editor.nodeChanged();
- }
- };
-
- // Force root blocks
- if (settings.forced_root_block) {
- editor.onKeyUp.add(addRootBlocks);
- editor.onNodeChange.add(addRootBlocks);
- }
-};
-
-(function(tinymce) {
- // Shorten names
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, extend = tinymce.extend;
-
- tinymce.create('tinymce.ControlManager', {
- ControlManager : function(ed, s) {
- var t = this, i;
-
- s = s || {};
- t.editor = ed;
- t.controls = {};
- t.onAdd = new tinymce.util.Dispatcher(t);
- t.onPostRender = new tinymce.util.Dispatcher(t);
- t.prefix = s.prefix || ed.id + '_';
- t._cls = {};
-
- t.onPostRender.add(function() {
- each(t.controls, function(c) {
- c.postRender();
- });
- });
- },
-
- get : function(id) {
- return this.controls[this.prefix + id] || this.controls[id];
- },
-
- setActive : function(id, s) {
- var c = null;
-
- if (c = this.get(id))
- c.setActive(s);
-
- return c;
- },
-
- setDisabled : function(id, s) {
- var c = null;
-
- if (c = this.get(id))
- c.setDisabled(s);
-
- return c;
- },
-
- add : function(c) {
- var t = this;
-
- if (c) {
- t.controls[c.id] = c;
- t.onAdd.dispatch(c, t);
- }
-
- return c;
- },
-
- createControl : function(n) {
- var c, t = this, ed = t.editor;
-
- each(ed.plugins, function(p) {
- if (p.createControl) {
- c = p.createControl(n, t);
-
- if (c)
- return false;
- }
- });
-
- switch (n) {
- case "|":
- case "separator":
- return t.createSeparator();
- }
-
- if (!c && ed.buttons && (c = ed.buttons[n]))
- return t.createButton(n, c);
-
- return t.add(c);
- },
-
- createDropMenu : function(id, s, cc) {
- var t = this, ed = t.editor, c, bm, v, cls;
-
- s = extend({
- 'class' : 'mceDropDown',
- constrain : ed.settings.constrain_menus
- }, s);
-
- s['class'] = s['class'] + ' ' + ed.getParam('skin') + 'Skin';
- if (v = ed.getParam('skin_variant'))
- s['class'] += ' ' + ed.getParam('skin') + 'Skin' + v.substring(0, 1).toUpperCase() + v.substring(1);
-
- s['class'] += ed.settings.directionality == "rtl" ? ' mceRtl' : '';
-
- id = t.prefix + id;
- cls = cc || t._cls.dropmenu || tinymce.ui.DropMenu;
- c = t.controls[id] = new cls(id, s);
- c.onAddItem.add(function(c, o) {
- var s = o.settings;
-
- s.title = ed.getLang(s.title, s.title);
-
- if (!s.onclick) {
- s.onclick = function(v) {
- if (s.cmd)
- ed.execCommand(s.cmd, s.ui || false, s.value);
- };
- }
- });
-
- ed.onRemove.add(function() {
- c.destroy();
- });
-
- // Fix for bug #1897785, #1898007
- if (tinymce.isIE) {
- c.onShowMenu.add(function() {
- // IE 8 needs focus in order to store away a range with the current collapsed caret location
- ed.focus();
-
- bm = ed.selection.getBookmark(1);
- });
-
- c.onHideMenu.add(function() {
- if (bm) {
- ed.selection.moveToBookmark(bm);
- bm = 0;
- }
- });
- }
-
- return t.add(c);
- },
-
- createListBox : function(id, s, cc) {
- var t = this, ed = t.editor, cmd, c, cls;
-
- if (t.get(id))
- return null;
-
- s.title = ed.translate(s.title);
- s.scope = s.scope || ed;
-
- if (!s.onselect) {
- s.onselect = function(v) {
- ed.execCommand(s.cmd, s.ui || false, v || s.value);
- };
- }
-
- s = extend({
- title : s.title,
- 'class' : 'mce_' + id,
- scope : s.scope,
- control_manager : t
- }, s);
-
- id = t.prefix + id;
-
-
- function useNativeListForAccessibility(ed) {
- return ed.settings.use_accessible_selects && !tinymce.isGecko
- }
-
- if (ed.settings.use_native_selects || useNativeListForAccessibility(ed))
- c = new tinymce.ui.NativeListBox(id, s);
- else {
- cls = cc || t._cls.listbox || tinymce.ui.ListBox;
- c = new cls(id, s, ed);
- }
-
- t.controls[id] = c;
-
- // Fix focus problem in Safari
- if (tinymce.isWebKit) {
- c.onPostRender.add(function(c, n) {
- // Store bookmark on mousedown
- Event.add(n, 'mousedown', function() {
- ed.bookmark = ed.selection.getBookmark(1);
- });
-
- // Restore on focus, since it might be lost
- Event.add(n, 'focus', function() {
- ed.selection.moveToBookmark(ed.bookmark);
- ed.bookmark = null;
- });
- });
- }
-
- if (c.hideMenu)
- ed.onMouseDown.add(c.hideMenu, c);
-
- return t.add(c);
- },
-
- createButton : function(id, s, cc) {
- var t = this, ed = t.editor, o, c, cls;
-
- if (t.get(id))
- return null;
-
- s.title = ed.translate(s.title);
- s.label = ed.translate(s.label);
- s.scope = s.scope || ed;
-
- if (!s.onclick && !s.menu_button) {
- s.onclick = function() {
- ed.execCommand(s.cmd, s.ui || false, s.value);
- };
- }
-
- s = extend({
- title : s.title,
- 'class' : 'mce_' + id,
- unavailable_prefix : ed.getLang('unavailable', ''),
- scope : s.scope,
- control_manager : t
- }, s);
-
- id = t.prefix + id;
-
- if (s.menu_button) {
- cls = cc || t._cls.menubutton || tinymce.ui.MenuButton;
- c = new cls(id, s, ed);
- ed.onMouseDown.add(c.hideMenu, c);
- } else {
- cls = t._cls.button || tinymce.ui.Button;
- c = new cls(id, s, ed);
- }
-
- return t.add(c);
- },
-
- createMenuButton : function(id, s, cc) {
- s = s || {};
- s.menu_button = 1;
-
- return this.createButton(id, s, cc);
- },
-
- createSplitButton : function(id, s, cc) {
- var t = this, ed = t.editor, cmd, c, cls;
-
- if (t.get(id))
- return null;
-
- s.title = ed.translate(s.title);
- s.scope = s.scope || ed;
-
- if (!s.onclick) {
- s.onclick = function(v) {
- ed.execCommand(s.cmd, s.ui || false, v || s.value);
- };
- }
-
- if (!s.onselect) {
- s.onselect = function(v) {
- ed.execCommand(s.cmd, s.ui || false, v || s.value);
- };
- }
-
- s = extend({
- title : s.title,
- 'class' : 'mce_' + id,
- scope : s.scope,
- control_manager : t
- }, s);
-
- id = t.prefix + id;
- cls = cc || t._cls.splitbutton || tinymce.ui.SplitButton;
- c = t.add(new cls(id, s, ed));
- ed.onMouseDown.add(c.hideMenu, c);
-
- return c;
- },
-
- createColorSplitButton : function(id, s, cc) {
- var t = this, ed = t.editor, cmd, c, cls, bm;
-
- if (t.get(id))
- return null;
-
- s.title = ed.translate(s.title);
- s.scope = s.scope || ed;
-
- if (!s.onclick) {
- s.onclick = function(v) {
- if (tinymce.isIE)
- bm = ed.selection.getBookmark(1);
-
- ed.execCommand(s.cmd, s.ui || false, v || s.value);
- };
- }
-
- if (!s.onselect) {
- s.onselect = function(v) {
- ed.execCommand(s.cmd, s.ui || false, v || s.value);
- };
- }
-
- s = extend({
- title : s.title,
- 'class' : 'mce_' + id,
- 'menu_class' : ed.getParam('skin') + 'Skin',
- scope : s.scope,
- more_colors_title : ed.getLang('more_colors')
- }, s);
-
- id = t.prefix + id;
- cls = cc || t._cls.colorsplitbutton || tinymce.ui.ColorSplitButton;
- c = new cls(id, s, ed);
- ed.onMouseDown.add(c.hideMenu, c);
-
- // Remove the menu element when the editor is removed
- ed.onRemove.add(function() {
- c.destroy();
- });
-
- // Fix for bug #1897785, #1898007
- if (tinymce.isIE) {
- c.onShowMenu.add(function() {
- // IE 8 needs focus in order to store away a range with the current collapsed caret location
- ed.focus();
- bm = ed.selection.getBookmark(1);
- });
-
- c.onHideMenu.add(function() {
- if (bm) {
- ed.selection.moveToBookmark(bm);
- bm = 0;
- }
- });
- }
-
- return t.add(c);
- },
-
- createToolbar : function(id, s, cc) {
- var c, t = this, cls;
-
- id = t.prefix + id;
- cls = cc || t._cls.toolbar || tinymce.ui.Toolbar;
- c = new cls(id, s, t.editor);
-
- if (t.get(id))
- return null;
-
- return t.add(c);
- },
-
- createToolbarGroup : function(id, s, cc) {
- var c, t = this, cls;
- id = t.prefix + id;
- cls = cc || this._cls.toolbarGroup || tinymce.ui.ToolbarGroup;
- c = new cls(id, s, t.editor);
-
- if (t.get(id))
- return null;
-
- return t.add(c);
- },
-
- createSeparator : function(cc) {
- var cls = cc || this._cls.separator || tinymce.ui.Separator;
-
- return new cls();
- },
-
- setControlType : function(n, c) {
- return this._cls[n.toLowerCase()] = c;
- },
-
- destroy : function() {
- each(this.controls, function(c) {
- c.destroy();
- });
-
- this.controls = null;
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isIE = tinymce.isIE, isOpera = tinymce.isOpera;
-
- tinymce.create('tinymce.WindowManager', {
- WindowManager : function(ed) {
- var t = this;
-
- t.editor = ed;
- t.onOpen = new Dispatcher(t);
- t.onClose = new Dispatcher(t);
- t.params = {};
- t.features = {};
- },
-
- open : function(s, p) {
- var t = this, f = '', x, y, mo = t.editor.settings.dialog_type == 'modal', w, sw, sh, vp = tinymce.DOM.getViewPort(), u;
-
- // Default some options
- s = s || {};
- p = p || {};
- sw = isOpera ? vp.w : screen.width; // Opera uses windows inside the Opera window
- sh = isOpera ? vp.h : screen.height;
- s.name = s.name || 'mc_' + new Date().getTime();
- s.width = parseInt(s.width || 320);
- s.height = parseInt(s.height || 240);
- s.resizable = true;
- s.left = s.left || parseInt(sw / 2.0) - (s.width / 2.0);
- s.top = s.top || parseInt(sh / 2.0) - (s.height / 2.0);
- p.inline = false;
- p.mce_width = s.width;
- p.mce_height = s.height;
- p.mce_auto_focus = s.auto_focus;
-
- if (mo) {
- if (isIE) {
- s.center = true;
- s.help = false;
- s.dialogWidth = s.width + 'px';
- s.dialogHeight = s.height + 'px';
- s.scroll = s.scrollbars || false;
- }
- }
-
- // Build features string
- each(s, function(v, k) {
- if (tinymce.is(v, 'boolean'))
- v = v ? 'yes' : 'no';
-
- if (!/^(name|url)$/.test(k)) {
- if (isIE && mo)
- f += (f ? ';' : '') + k + ':' + v;
- else
- f += (f ? ',' : '') + k + '=' + v;
- }
- });
-
- t.features = s;
- t.params = p;
- t.onOpen.dispatch(t, s, p);
-
- u = s.url || s.file;
- u = tinymce._addVer(u);
-
- try {
- if (isIE && mo) {
- w = 1;
- window.showModalDialog(u, window, f);
- } else
- w = window.open(u, s.name, f);
- } catch (ex) {
- // Ignore
- }
-
- if (!w)
- alert(t.editor.getLang('popup_blocked'));
- },
-
- close : function(w) {
- w.close();
- this.onClose.dispatch(this);
- },
-
- createInstance : function(cl, a, b, c, d, e) {
- var f = tinymce.resolve(cl);
-
- return new f(a, b, c, d, e);
- },
-
- confirm : function(t, cb, s, w) {
- w = w || window;
-
- cb.call(s || this, w.confirm(this._decode(this.editor.getLang(t, t))));
- },
-
- alert : function(tx, cb, s, w) {
- var t = this;
-
- w = w || window;
- w.alert(t._decode(t.editor.getLang(tx, tx)));
-
- if (cb)
- cb.call(s || t);
- },
-
- resizeBy : function(dw, dh, win) {
- win.resizeBy(dw, dh);
- },
-
- // Internal functions
-
- _decode : function(s) {
- return tinymce.DOM.decode(s).replace(/\\n/g, '\n');
- }
- });
-}(tinymce));
-(function(tinymce) {
- tinymce.Formatter = function(ed) {
- var formats = {},
- each = tinymce.each,
- dom = ed.dom,
- selection = ed.selection,
- TreeWalker = tinymce.dom.TreeWalker,
- rangeUtils = new tinymce.dom.RangeUtils(dom),
- isValid = ed.schema.isValidChild,
- isBlock = dom.isBlock,
- forcedRootBlock = ed.settings.forced_root_block,
- nodeIndex = dom.nodeIndex,
- INVISIBLE_CHAR = tinymce.isGecko ? '\u200B' : '\uFEFF',
- MCE_ATTR_RE = /^(src|href|style)$/,
- FALSE = false,
- TRUE = true,
- undef,
- getContentEditable = dom.getContentEditable;
-
- function isArray(obj) {
- return obj instanceof Array;
- };
-
- function getParents(node, selector) {
- return dom.getParents(node, selector, dom.getRoot());
- };
-
- function isCaretNode(node) {
- return node.nodeType === 1 && node.id === '_mce_caret';
- };
-
- function defaultFormats() {
- register({
- alignleft : [
- {selector : 'figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'left'}, defaultBlock: 'div'},
- {selector : 'img,table', collapsed : false, styles : {'float' : 'left'}}
- ],
-
- aligncenter : [
- {selector : 'figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'center'}, defaultBlock: 'div'},
- {selector : 'img', collapsed : false, styles : {display : 'block', marginLeft : 'auto', marginRight : 'auto'}},
- {selector : 'table', collapsed : false, styles : {marginLeft : 'auto', marginRight : 'auto'}}
- ],
-
- alignright : [
- {selector : 'figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'right'}, defaultBlock: 'div'},
- {selector : 'img,table', collapsed : false, styles : {'float' : 'right'}}
- ],
-
- alignfull : [
- {selector : 'figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'justify'}, defaultBlock: 'div'}
- ],
-
- bold : [
- {inline : 'strong', remove : 'all'},
- {inline : 'span', styles : {fontWeight : 'bold'}},
- {inline : 'b', remove : 'all'}
- ],
-
- italic : [
- {inline : 'em', remove : 'all'},
- {inline : 'span', styles : {fontStyle : 'italic'}},
- {inline : 'i', remove : 'all'}
- ],
-
- underline : [
- {inline : 'span', styles : {textDecoration : 'underline'}, exact : true},
- {inline : 'u', remove : 'all'}
- ],
-
- strikethrough : [
- {inline : 'span', styles : {textDecoration : 'line-through'}, exact : true},
- {inline : 'strike', remove : 'all'}
- ],
-
- forecolor : {inline : 'span', styles : {color : '%value'}, wrap_links : false},
- hilitecolor : {inline : 'span', styles : {backgroundColor : '%value'}, wrap_links : false},
- fontname : {inline : 'span', styles : {fontFamily : '%value'}},
- fontsize : {inline : 'span', styles : {fontSize : '%value'}},
- fontsize_class : {inline : 'span', attributes : {'class' : '%value'}},
- blockquote : {block : 'blockquote', wrapper : 1, remove : 'all'},
- subscript : {inline : 'sub'},
- superscript : {inline : 'sup'},
-
- link : {inline : 'a', selector : 'a', remove : 'all', split : true, deep : true,
- onmatch : function(node) {
- return true;
- },
-
- onformat : function(elm, fmt, vars) {
- each(vars, function(value, key) {
- dom.setAttrib(elm, key, value);
- });
- }
- },
-
- removeformat : [
- {selector : 'b,strong,em,i,font,u,strike', remove : 'all', split : true, expand : false, block_expand : true, deep : true},
- {selector : 'span', attributes : ['style', 'class'], remove : 'empty', split : true, expand : false, deep : true},
- {selector : '*', attributes : ['style', 'class'], split : false, expand : false, deep : true}
- ]
- });
-
- // Register default block formats
- each('p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp'.split(/\s/), function(name) {
- register(name, {block : name, remove : 'all'});
- });
-
- // Register user defined formats
- register(ed.settings.formats);
- };
-
- function addKeyboardShortcuts() {
- // Add some inline shortcuts
- ed.addShortcut('ctrl+b', 'bold_desc', 'Bold');
- ed.addShortcut('ctrl+i', 'italic_desc', 'Italic');
- ed.addShortcut('ctrl+u', 'underline_desc', 'Underline');
-
- // BlockFormat shortcuts keys
- for (var i = 1; i <= 6; i++) {
- ed.addShortcut('ctrl+' + i, '', ['FormatBlock', false, 'h' + i]);
- }
-
- ed.addShortcut('ctrl+7', '', ['FormatBlock', false, 'p']);
- ed.addShortcut('ctrl+8', '', ['FormatBlock', false, 'div']);
- ed.addShortcut('ctrl+9', '', ['FormatBlock', false, 'address']);
- };
-
- // Public functions
-
- function get(name) {
- return name ? formats[name] : formats;
- };
-
- function register(name, format) {
- if (name) {
- if (typeof(name) !== 'string') {
- each(name, function(format, name) {
- register(name, format);
- });
- } else {
- // Force format into array and add it to internal collection
- format = format.length ? format : [format];
-
- each(format, function(format) {
- // Set deep to false by default on selector formats this to avoid removing
- // alignment on images inside paragraphs when alignment is changed on paragraphs
- if (format.deep === undef)
- format.deep = !format.selector;
-
- // Default to true
- if (format.split === undef)
- format.split = !format.selector || format.inline;
-
- // Default to true
- if (format.remove === undef && format.selector && !format.inline)
- format.remove = 'none';
-
- // Mark format as a mixed format inline + block level
- if (format.selector && format.inline) {
- format.mixed = true;
- format.block_expand = true;
- }
-
- // Split classes if needed
- if (typeof(format.classes) === 'string')
- format.classes = format.classes.split(/\s+/);
- });
-
- formats[name] = format;
- }
- }
- };
-
- var getTextDecoration = function(node) {
- var decoration;
-
- ed.dom.getParent(node, function(n) {
- decoration = ed.dom.getStyle(n, 'text-decoration');
- return decoration && decoration !== 'none';
- });
-
- return decoration;
- };
-
- var processUnderlineAndColor = function(node) {
- var textDecoration;
- if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) {
- textDecoration = getTextDecoration(node.parentNode);
- if (ed.dom.getStyle(node, 'color') && textDecoration) {
- ed.dom.setStyle(node, 'text-decoration', textDecoration);
- } else if (ed.dom.getStyle(node, 'textdecoration') === textDecoration) {
- ed.dom.setStyle(node, 'text-decoration', null);
- }
- }
- };
-
- function apply(name, vars, node) {
- var formatList = get(name), format = formatList[0], bookmark, rng, i, isCollapsed = selection.isCollapsed();
-
- function setElementFormat(elm, fmt) {
- fmt = fmt || format;
-
- if (elm) {
- if (fmt.onformat) {
- fmt.onformat(elm, fmt, vars, node);
- }
-
- each(fmt.styles, function(value, name) {
- dom.setStyle(elm, name, replaceVars(value, vars));
- });
-
- each(fmt.attributes, function(value, name) {
- dom.setAttrib(elm, name, replaceVars(value, vars));
- });
-
- each(fmt.classes, function(value) {
- value = replaceVars(value, vars);
-
- if (!dom.hasClass(elm, value))
- dom.addClass(elm, value);
- });
- }
- };
- function adjustSelectionToVisibleSelection() {
- function findSelectionEnd(start, end) {
- var walker = new TreeWalker(end);
- for (node = walker.current(); node; node = walker.prev()) {
- if (node.childNodes.length > 1 || node == start || node.tagName == 'BR') {
- return node;
- }
- }
- };
-
- // Adjust selection so that a end container with a end offset of zero is not included in the selection
- // as this isn't visible to the user.
- var rng = ed.selection.getRng();
- var start = rng.startContainer;
- var end = rng.endContainer;
-
- if (start != end && rng.endOffset === 0) {
- var newEnd = findSelectionEnd(start, end);
- var endOffset = newEnd.nodeType == 3 ? newEnd.length : newEnd.childNodes.length;
-
- rng.setEnd(newEnd, endOffset);
- }
-
- return rng;
- }
-
- function applyStyleToList(node, bookmark, wrapElm, newWrappers, process){
- var nodes = [], listIndex = -1, list, startIndex = -1, endIndex = -1, currentWrapElm;
-
- // find the index of the first child list.
- each(node.childNodes, function(n, index) {
- if (n.nodeName === "UL" || n.nodeName === "OL") {
- listIndex = index;
- list = n;
- return false;
- }
- });
-
- // get the index of the bookmarks
- each(node.childNodes, function(n, index) {
- if (n.nodeName === "SPAN" && dom.getAttrib(n, "data-mce-type") == "bookmark") {
- if (n.id == bookmark.id + "_start") {
- startIndex = index;
- } else if (n.id == bookmark.id + "_end") {
- endIndex = index;
- }
- }
- });
-
- // if the selection spans across an embedded list, or there isn't an embedded list - handle processing normally
- if (listIndex <= 0 || (startIndex < listIndex && endIndex > listIndex)) {
- each(tinymce.grep(node.childNodes), process);
- return 0;
- } else {
- currentWrapElm = dom.clone(wrapElm, FALSE);
-
- // create a list of the nodes on the same side of the list as the selection
- each(tinymce.grep(node.childNodes), function(n, index) {
- if ((startIndex < listIndex && index < listIndex) || (startIndex > listIndex && index > listIndex)) {
- nodes.push(n);
- n.parentNode.removeChild(n);
- }
- });
-
- // insert the wrapping element either before or after the list.
- if (startIndex < listIndex) {
- node.insertBefore(currentWrapElm, list);
- } else if (startIndex > listIndex) {
- node.insertBefore(currentWrapElm, list.nextSibling);
- }
-
- // add the new nodes to the list.
- newWrappers.push(currentWrapElm);
-
- each(nodes, function(node) {
- currentWrapElm.appendChild(node);
- });
-
- return currentWrapElm;
- }
- };
-
- function applyRngStyle(rng, bookmark, node_specific) {
- var newWrappers = [], wrapName, wrapElm, contentEditable = true;
-
- // Setup wrapper element
- wrapName = format.inline || format.block;
- wrapElm = dom.create(wrapName);
- setElementFormat(wrapElm);
-
- rangeUtils.walk(rng, function(nodes) {
- var currentWrapElm;
-
- function process(node) {
- var nodeName, parentName, found, hasContentEditableState, lastContentEditable;
-
- lastContentEditable = contentEditable;
- nodeName = node.nodeName.toLowerCase();
- parentName = node.parentNode.nodeName.toLowerCase();
-
- // Node has a contentEditable value
- if (node.nodeType === 1 && getContentEditable(node)) {
- lastContentEditable = contentEditable;
- contentEditable = getContentEditable(node) === "true";
- hasContentEditableState = true; // We don't want to wrap the container only it's children
- }
-
- // Stop wrapping on br elements
- if (isEq(nodeName, 'br')) {
- currentWrapElm = 0;
-
- // Remove any br elements when we wrap things
- if (format.block)
- dom.remove(node);
-
- return;
- }
-
- // If node is wrapper type
- if (format.wrapper && matchNode(node, name, vars)) {
- currentWrapElm = 0;
- return;
- }
-
- // Can we rename the block
- if (contentEditable && !hasContentEditableState && format.block && !format.wrapper && isTextBlock(nodeName)) {
- node = dom.rename(node, wrapName);
- setElementFormat(node);
- newWrappers.push(node);
- currentWrapElm = 0;
- return;
- }
-
- // Handle selector patterns
- if (format.selector) {
- // Look for matching formats
- each(formatList, function(format) {
- // Check collapsed state if it exists
- if ('collapsed' in format && format.collapsed !== isCollapsed) {
- return;
- }
-
- if (dom.is(node, format.selector) && !isCaretNode(node)) {
- setElementFormat(node, format);
- found = true;
- }
- });
-
- // Continue processing if a selector match wasn't found and a inline element is defined
- if (!format.inline || found) {
- currentWrapElm = 0;
- return;
- }
- }
-
- // Is it valid to wrap this item
- if (contentEditable && !hasContentEditableState && isValid(wrapName, nodeName) && isValid(parentName, wrapName) &&
- !(!node_specific && node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279) && !isCaretNode(node)) {
- // Start wrapping
- if (!currentWrapElm) {
- // Wrap the node
- currentWrapElm = dom.clone(wrapElm, FALSE);
- node.parentNode.insertBefore(currentWrapElm, node);
- newWrappers.push(currentWrapElm);
- }
-
- currentWrapElm.appendChild(node);
- } else if (nodeName == 'li' && bookmark) {
- // Start wrapping - if we are in a list node and have a bookmark, then we will always begin by wrapping in a new element.
- currentWrapElm = applyStyleToList(node, bookmark, wrapElm, newWrappers, process);
- } else {
- // Start a new wrapper for possible children
- currentWrapElm = 0;
-
- each(tinymce.grep(node.childNodes), process);
-
- if (hasContentEditableState) {
- contentEditable = lastContentEditable; // Restore last contentEditable state from stack
- }
-
- // End the last wrapper
- currentWrapElm = 0;
- }
- };
-
- // Process siblings from range
- each(nodes, process);
- });
-
- // Wrap links inside as well, for example color inside a link when the wrapper is around the link
- if (format.wrap_links === false) {
- each(newWrappers, function(node) {
- function process(node) {
- var i, currentWrapElm, children;
-
- if (node.nodeName === 'A') {
- currentWrapElm = dom.clone(wrapElm, FALSE);
- newWrappers.push(currentWrapElm);
-
- children = tinymce.grep(node.childNodes);
- for (i = 0; i < children.length; i++)
- currentWrapElm.appendChild(children[i]);
-
- node.appendChild(currentWrapElm);
- }
-
- each(tinymce.grep(node.childNodes), process);
- };
-
- process(node);
- });
- }
-
- // Cleanup
-
- each(newWrappers, function(node) {
- var childCount;
-
- function getChildCount(node) {
- var count = 0;
-
- each(node.childNodes, function(node) {
- if (!isWhiteSpaceNode(node) && !isBookmarkNode(node))
- count++;
- });
-
- return count;
- };
-
- function mergeStyles(node) {
- var child, clone;
-
- each(node.childNodes, function(node) {
- if (node.nodeType == 1 && !isBookmarkNode(node) && !isCaretNode(node)) {
- child = node;
- return FALSE; // break loop
- }
- });
-
- // If child was found and of the same type as the current node
- if (child && matchName(child, format)) {
- clone = dom.clone(child, FALSE);
- setElementFormat(clone);
-
- dom.replace(clone, node, TRUE);
- dom.remove(child, 1);
- }
-
- return clone || node;
- };
-
- childCount = getChildCount(node);
-
- // Remove empty nodes but only if there is multiple wrappers and they are not block
- // elements so never remove single <h1></h1> since that would remove the currrent empty block element where the caret is at
- if ((newWrappers.length > 1 || !isBlock(node)) && childCount === 0) {
- dom.remove(node, 1);
- return;
- }
-
- if (format.inline || format.wrapper) {
- // Merges the current node with it's children of similar type to reduce the number of elements
- if (!format.exact && childCount === 1)
- node = mergeStyles(node);
-
- // Remove/merge children
- each(formatList, function(format) {
- // Merge all children of similar type will move styles from child to parent
- // this: <span style="color:red"><b><span style="color:red; font-size:10px">text</span></b></span>
- // will become: <span style="color:red"><b><span style="font-size:10px">text</span></b></span>
- each(dom.select(format.inline, node), function(child) {
- var parent;
-
- // When wrap_links is set to false we don't want
- // to remove the format on children within links
- if (format.wrap_links === false) {
- parent = child.parentNode;
-
- do {
- if (parent.nodeName === 'A')
- return;
- } while (parent = parent.parentNode);
- }
-
- removeFormat(format, vars, child, format.exact ? child : null);
- });
- });
-
- // Remove child if direct parent is of same type
- if (matchNode(node.parentNode, name, vars)) {
- dom.remove(node, 1);
- node = 0;
- return TRUE;
- }
-
- // Look for parent with similar style format
- if (format.merge_with_parents) {
- dom.getParent(node.parentNode, function(parent) {
- if (matchNode(parent, name, vars)) {
- dom.remove(node, 1);
- node = 0;
- return TRUE;
- }
- });
- }
-
- // Merge next and previous siblings if they are similar <b>text</b><b>text</b> becomes <b>texttext</b>
- if (node && format.merge_siblings !== false) {
- node = mergeSiblings(getNonWhiteSpaceSibling(node), node);
- node = mergeSiblings(node, getNonWhiteSpaceSibling(node, TRUE));
- }
- }
- });
- };
-
- if (format) {
- if (node) {
- if (node.nodeType) {
- rng = dom.createRng();
- rng.setStartBefore(node);
- rng.setEndAfter(node);
- applyRngStyle(expandRng(rng, formatList), null, true);
- } else {
- applyRngStyle(node, null, true);
- }
- } else {
- if (!isCollapsed || !format.inline || dom.select('td.mceSelected,th.mceSelected').length) {
- // Obtain selection node before selection is unselected by applyRngStyle()
- var curSelNode = ed.selection.getNode();
-
- // If the formats have a default block and we can't find a parent block then start wrapping it with a DIV this is for forced_root_blocks: false
- // It's kind of a hack but people should be using the default block type P since all desktop editors work that way
- if (!forcedRootBlock && formatList[0].defaultBlock && !dom.getParent(curSelNode, dom.isBlock)) {
- apply(formatList[0].defaultBlock);
- }
-
- // Apply formatting to selection
- ed.selection.setRng(adjustSelectionToVisibleSelection());
- bookmark = selection.getBookmark();
- applyRngStyle(expandRng(selection.getRng(TRUE), formatList), bookmark);
-
- // Colored nodes should be underlined so that the color of the underline matches the text color.
- if (format.styles && (format.styles.color || format.styles.textDecoration)) {
- tinymce.walk(curSelNode, processUnderlineAndColor, 'childNodes');
- processUnderlineAndColor(curSelNode);
- }
-
- selection.moveToBookmark(bookmark);
- moveStart(selection.getRng(TRUE));
- ed.nodeChanged();
- } else
- performCaretAction('apply', name, vars);
- }
- }
- };
-
- function remove(name, vars, node) {
- var formatList = get(name), format = formatList[0], bookmark, i, rng, contentEditable = true;
-
- // Merges the styles for each node
- function process(node) {
- var children, i, l, localContentEditable, lastContentEditable, hasContentEditableState;
-
- // Node has a contentEditable value
- if (node.nodeType === 1 && getContentEditable(node)) {
- lastContentEditable = contentEditable;
- contentEditable = getContentEditable(node) === "true";
- hasContentEditableState = true; // We don't want to wrap the container only it's children
- }
-
- // Grab the children first since the nodelist might be changed
- children = tinymce.grep(node.childNodes);
-
- // Process current node
- if (contentEditable && !hasContentEditableState) {
- for (i = 0, l = formatList.length; i < l; i++) {
- if (removeFormat(formatList[i], vars, node, node))
- break;
- }
- }
-
- // Process the children
- if (format.deep) {
- if (children.length) {
- for (i = 0, l = children.length; i < l; i++)
- process(children[i]);
-
- if (hasContentEditableState) {
- contentEditable = lastContentEditable; // Restore last contentEditable state from stack
- }
- }
- }
- };
-
- function findFormatRoot(container) {
- var formatRoot;
-
- // Find format root
- each(getParents(container.parentNode).reverse(), function(parent) {
- var format;
-
- // Find format root element
- if (!formatRoot && parent.id != '_start' && parent.id != '_end') {
- // Is the node matching the format we are looking for
- format = matchNode(parent, name, vars);
- if (format && format.split !== false)
- formatRoot = parent;
- }
- });
-
- return formatRoot;
- };
-
- function wrapAndSplit(format_root, container, target, split) {
- var parent, clone, lastClone, firstClone, i, formatRootParent;
-
- // Format root found then clone formats and split it
- if (format_root) {
- formatRootParent = format_root.parentNode;
-
- for (parent = container.parentNode; parent && parent != formatRootParent; parent = parent.parentNode) {
- clone = dom.clone(parent, FALSE);
-
- for (i = 0; i < formatList.length; i++) {
- if (removeFormat(formatList[i], vars, clone, clone)) {
- clone = 0;
- break;
- }
- }
-
- // Build wrapper node
- if (clone) {
- if (lastClone)
- clone.appendChild(lastClone);
-
- if (!firstClone)
- firstClone = clone;
-
- lastClone = clone;
- }
- }
-
- // Never split block elements if the format is mixed
- if (split && (!format.mixed || !isBlock(format_root)))
- container = dom.split(format_root, container);
-
- // Wrap container in cloned formats
- if (lastClone) {
- target.parentNode.insertBefore(lastClone, target);
- firstClone.appendChild(target);
- }
- }
-
- return container;
- };
-
- function splitToFormatRoot(container) {
- return wrapAndSplit(findFormatRoot(container), container, container, true);
- };
-
- function unwrap(start) {
- var node = dom.get(start ? '_start' : '_end'),
- out = node[start ? 'firstChild' : 'lastChild'];
-
- // If the end is placed within the start the result will be removed
- // So this checks if the out node is a bookmark node if it is it
- // checks for another more suitable node
- if (isBookmarkNode(out))
- out = out[start ? 'firstChild' : 'lastChild'];
-
- dom.remove(node, true);
-
- return out;
- };
-
- function removeRngStyle(rng) {
- var startContainer, endContainer, node;
-
- rng = expandRng(rng, formatList, TRUE);
-
- if (format.split) {
- startContainer = getContainer(rng, TRUE);
- endContainer = getContainer(rng);
-
- if (startContainer != endContainer) {
- // WebKit will render the table incorrectly if we wrap a TD in a SPAN so lets see if the can use the first child instead
- // This will happen if you tripple click a table cell and use remove formatting
- if (/^(TR|TD)$/.test(startContainer.nodeName) && startContainer.firstChild) {
- startContainer = (startContainer.nodeName == "TD" ? startContainer.firstChild : startContainer.firstChild.firstChild) || startContainer;
- }
-
- // Wrap start/end nodes in span element since these might be cloned/moved
- startContainer = wrap(startContainer, 'span', {id : '_start', 'data-mce-type' : 'bookmark'});
- endContainer = wrap(endContainer, 'span', {id : '_end', 'data-mce-type' : 'bookmark'});
-
- // Split start/end
- splitToFormatRoot(startContainer);
- splitToFormatRoot(endContainer);
-
- // Unwrap start/end to get real elements again
- startContainer = unwrap(TRUE);
- endContainer = unwrap();
- } else
- startContainer = endContainer = splitToFormatRoot(startContainer);
-
- // Update range positions since they might have changed after the split operations
- rng.startContainer = startContainer.parentNode;
- rng.startOffset = nodeIndex(startContainer);
- rng.endContainer = endContainer.parentNode;
- rng.endOffset = nodeIndex(endContainer) + 1;
- }
-
- // Remove items between start/end
- rangeUtils.walk(rng, function(nodes) {
- each(nodes, function(node) {
- process(node);
-
- // Remove parent span if it only contains text-decoration: underline, yet a parent node is also underlined.
- if (node.nodeType === 1 && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && getTextDecoration(node.parentNode) === 'underline') {
- removeFormat({'deep': false, 'exact': true, 'inline': 'span', 'styles': {'textDecoration' : 'underline'}}, null, node);
- }
- });
- });
- };
-
- // Handle node
- if (node) {
- if (node.nodeType) {
- rng = dom.createRng();
- rng.setStartBefore(node);
- rng.setEndAfter(node);
- removeRngStyle(rng);
- } else {
- removeRngStyle(node);
- }
-
- return;
- }
-
- if (!selection.isCollapsed() || !format.inline || dom.select('td.mceSelected,th.mceSelected').length) {
- bookmark = selection.getBookmark();
- removeRngStyle(selection.getRng(TRUE));
- selection.moveToBookmark(bookmark);
-
- // Check if start element still has formatting then we are at: "<b>text|</b>text" and need to move the start into the next text node
- if (format.inline && match(name, vars, selection.getStart())) {
- moveStart(selection.getRng(true));
- }
-
- ed.nodeChanged();
- } else
- performCaretAction('remove', name, vars);
- };
-
- function toggle(name, vars, node) {
- var fmt = get(name);
-
- if (match(name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle))
- remove(name, vars, node);
- else
- apply(name, vars, node);
- };
-
- function matchNode(node, name, vars, similar) {
- var formatList = get(name), format, i, classes;
-
- function matchItems(node, format, item_name) {
- var key, value, items = format[item_name], i;
-
- // Custom match
- if (format.onmatch) {
- return format.onmatch(node, format, item_name);
- }
-
- // Check all items
- if (items) {
- // Non indexed object
- if (items.length === undef) {
- for (key in items) {
- if (items.hasOwnProperty(key)) {
- if (item_name === 'attributes')
- value = dom.getAttrib(node, key);
- else
- value = getStyle(node, key);
-
- if (similar && !value && !format.exact)
- return;
-
- if ((!similar || format.exact) && !isEq(value, replaceVars(items[key], vars)))
- return;
- }
- }
- } else {
- // Only one match needed for indexed arrays
- for (i = 0; i < items.length; i++) {
- if (item_name === 'attributes' ? dom.getAttrib(node, items[i]) : getStyle(node, items[i]))
- return format;
- }
- }
- }
-
- return format;
- };
-
- if (formatList && node) {
- // Check each format in list
- for (i = 0; i < formatList.length; i++) {
- format = formatList[i];
-
- // Name name, attributes, styles and classes
- if (matchName(node, format) && matchItems(node, format, 'attributes') && matchItems(node, format, 'styles')) {
- // Match classes
- if (classes = format.classes) {
- for (i = 0; i < classes.length; i++) {
- if (!dom.hasClass(node, classes[i]))
- return;
- }
- }
-
- return format;
- }
- }
- }
- };
-
- function match(name, vars, node) {
- var startNode;
-
- function matchParents(node) {
- // Find first node with similar format settings
- node = dom.getParent(node, function(node) {
- return !!matchNode(node, name, vars, true);
- });
-
- // Do an exact check on the similar format element
- return matchNode(node, name, vars);
- };
-
- // Check specified node
- if (node)
- return matchParents(node);
-
- // Check selected node
- node = selection.getNode();
- if (matchParents(node))
- return TRUE;
-
- // Check start node if it's different
- startNode = selection.getStart();
- if (startNode != node) {
- if (matchParents(startNode))
- return TRUE;
- }
-
- return FALSE;
- };
-
- function matchAll(names, vars) {
- var startElement, matchedFormatNames = [], checkedMap = {}, i, ni, name;
-
- // Check start of selection for formats
- startElement = selection.getStart();
- dom.getParent(startElement, function(node) {
- var i, name;
-
- for (i = 0; i < names.length; i++) {
- name = names[i];
-
- if (!checkedMap[name] && matchNode(node, name, vars)) {
- checkedMap[name] = true;
- matchedFormatNames.push(name);
- }
- }
- });
-
- return matchedFormatNames;
- };
-
- function canApply(name) {
- var formatList = get(name), startNode, parents, i, x, selector;
-
- if (formatList) {
- startNode = selection.getStart();
- parents = getParents(startNode);
-
- for (x = formatList.length - 1; x >= 0; x--) {
- selector = formatList[x].selector;
-
- // Format is not selector based, then always return TRUE
- if (!selector)
- return TRUE;
-
- for (i = parents.length - 1; i >= 0; i--) {
- if (dom.is(parents[i], selector))
- return TRUE;
- }
- }
- }
-
- return FALSE;
- };
-
- // Expose to public
- tinymce.extend(this, {
- get : get,
- register : register,
- apply : apply,
- remove : remove,
- toggle : toggle,
- match : match,
- matchAll : matchAll,
- matchNode : matchNode,
- canApply : canApply
- });
-
- // Initialize
- defaultFormats();
- addKeyboardShortcuts();
-
- // Private functions
-
- function matchName(node, format) {
- // Check for inline match
- if (isEq(node, format.inline))
- return TRUE;
-
- // Check for block match
- if (isEq(node, format.block))
- return TRUE;
-
- // Check for selector match
- if (format.selector)
- return dom.is(node, format.selector);
- };
-
- function isEq(str1, str2) {
- str1 = str1 || '';
- str2 = str2 || '';
-
- str1 = '' + (str1.nodeName || str1);
- str2 = '' + (str2.nodeName || str2);
-
- return str1.toLowerCase() == str2.toLowerCase();
- };
-
- function getStyle(node, name) {
- var styleVal = dom.getStyle(node, name);
-
- // Force the format to hex
- if (name == 'color' || name == 'backgroundColor')
- styleVal = dom.toHex(styleVal);
-
- // Opera will return bold as 700
- if (name == 'fontWeight' && styleVal == 700)
- styleVal = 'bold';
-
- return '' + styleVal;
- };
-
- function replaceVars(value, vars) {
- if (typeof(value) != "string")
- value = value(vars);
- else if (vars) {
- value = value.replace(/%(\w+)/g, function(str, name) {
- return vars[name] || str;
- });
- }
-
- return value;
- };
-
- function isWhiteSpaceNode(node) {
- return node && node.nodeType === 3 && /^([\t \r\n]+|)$/.test(node.nodeValue);
- };
-
- function wrap(node, name, attrs) {
- var wrapper = dom.create(name, attrs);
-
- node.parentNode.insertBefore(wrapper, node);
- wrapper.appendChild(node);
-
- return wrapper;
- };
-
- function expandRng(rng, format, remove) {
- var sibling, lastIdx, leaf, endPoint,
- startContainer = rng.startContainer,
- startOffset = rng.startOffset,
- endContainer = rng.endContainer,
- endOffset = rng.endOffset;
-
- // This function walks up the tree if there is no siblings before/after the node
- function findParentContainer(start) {
- var container, parent, child, sibling, siblingName, root;
-
- container = parent = start ? startContainer : endContainer;
- siblingName = start ? 'previousSibling' : 'nextSibling';
- root = dom.getRoot();
-
- // If it's a text node and the offset is inside the text
- if (container.nodeType == 3 && !isWhiteSpaceNode(container)) {
- if (start ? startOffset > 0 : endOffset < container.nodeValue.length) {
- return container;
- }
- }
-
- for (;;) {
- // Stop expanding on block elements
- if (!format[0].block_expand && isBlock(parent))
- return parent;
-
- // Walk left/right
- for (sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) {
- if (!isBookmarkNode(sibling) && !isWhiteSpaceNode(sibling)) {
- return parent;
- }
- }
-
- // Check if we can move up are we at root level or body level
- if (parent.parentNode == root) {
- container = parent;
- break;
- }
-
- parent = parent.parentNode;
- }
-
- return container;
- };
-
- // This function walks down the tree to find the leaf at the selection.
- // The offset is also returned as if node initially a leaf, the offset may be in the middle of the text node.
- function findLeaf(node, offset) {
- if (offset === undef)
- offset = node.nodeType === 3 ? node.length : node.childNodes.length;
- while (node && node.hasChildNodes()) {
- node = node.childNodes[offset];
- if (node)
- offset = node.nodeType === 3 ? node.length : node.childNodes.length;
- }
- return { node: node, offset: offset };
- }
-
- // If index based start position then resolve it
- if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) {
- lastIdx = startContainer.childNodes.length - 1;
- startContainer = startContainer.childNodes[startOffset > lastIdx ? lastIdx : startOffset];
-
- if (startContainer.nodeType == 3)
- startOffset = 0;
- }
-
- // If index based end position then resolve it
- if (endContainer.nodeType == 1 && endContainer.hasChildNodes()) {
- lastIdx = endContainer.childNodes.length - 1;
- endContainer = endContainer.childNodes[endOffset > lastIdx ? lastIdx : endOffset - 1];
-
- if (endContainer.nodeType == 3)
- endOffset = endContainer.nodeValue.length;
- }
-
- // Expands the node to the closes contentEditable false element if it exists
- function findParentContentEditable(node) {
- var parent = node;
-
- while (parent) {
- if (parent.nodeType === 1 && getContentEditable(parent)) {
- return getContentEditable(parent) === "false" ? parent : node;
- }
-
- parent = parent.parentNode;
- }
-
- return node;
- };
-
- function findWordEndPoint(container, offset, start) {
- var walker, node, pos, lastTextNode;
-
- function findSpace(node, offset) {
- var pos, pos2, str = node.nodeValue;
-
- if (typeof(offset) == "undefined") {
- offset = start ? str.length : 0;
- }
-
- if (start) {
- pos = str.lastIndexOf(' ', offset);
- pos2 = str.lastIndexOf('\u00a0', offset);
- pos = pos > pos2 ? pos : pos2;
-
- // Include the space on remove to avoid tag soup
- if (pos !== -1 && !remove) {
- pos++;
- }
- } else {
- pos = str.indexOf(' ', offset);
- pos2 = str.indexOf('\u00a0', offset);
- pos = pos !== -1 && (pos2 === -1 || pos < pos2) ? pos : pos2;
- }
-
- return pos;
- };
-
- if (container.nodeType === 3) {
- pos = findSpace(container, offset);
-
- if (pos !== -1) {
- return {container : container, offset : pos};
- }
-
- lastTextNode = container;
- }
-
- // Walk the nodes inside the block
- walker = new TreeWalker(container, dom.getParent(container, isBlock) || ed.getBody());
- while (node = walker[start ? 'prev' : 'next']()) {
- if (node.nodeType === 3) {
- lastTextNode = node;
- pos = findSpace(node);
-
- if (pos !== -1) {
- return {container : node, offset : pos};
- }
- } else if (isBlock(node)) {
- break;
- }
- }
-
- if (lastTextNode) {
- if (start) {
- offset = 0;
- } else {
- offset = lastTextNode.length;
- }
-
- return {container: lastTextNode, offset: offset};
- }
- };
-
- function findSelectorEndPoint(container, sibling_name) {
- var parents, i, y, curFormat;
-
- if (container.nodeType == 3 && container.nodeValue.length === 0 && container[sibling_name])
- container = container[sibling_name];
-
- parents = getParents(container);
- for (i = 0; i < parents.length; i++) {
- for (y = 0; y < format.length; y++) {
- curFormat = format[y];
-
- // If collapsed state is set then skip formats that doesn't match that
- if ("collapsed" in curFormat && curFormat.collapsed !== rng.collapsed)
- continue;
-
- if (dom.is(parents[i], curFormat.selector))
- return parents[i];
- }
- }
-
- return container;
- };
-
- function findBlockEndPoint(container, sibling_name, sibling_name2) {
- var node;
-
- // Expand to block of similar type
- if (!format[0].wrapper)
- node = dom.getParent(container, format[0].block);
-
- // Expand to first wrappable block element or any block element
- if (!node)
- node = dom.getParent(container.nodeType == 3 ? container.parentNode : container, isBlock);
-
- // Exclude inner lists from wrapping
- if (node && format[0].wrapper)
- node = getParents(node, 'ul,ol').reverse()[0] || node;
-
- // Didn't find a block element look for first/last wrappable element
- if (!node) {
- node = container;
-
- while (node[sibling_name] && !isBlock(node[sibling_name])) {
- node = node[sibling_name];
-
- // Break on BR but include it will be removed later on
- // we can't remove it now since we need to check if it can be wrapped
- if (isEq(node, 'br'))
- break;
- }
- }
-
- return node || container;
- };
-
- // Expand to closest contentEditable element
- startContainer = findParentContentEditable(startContainer);
- endContainer = findParentContentEditable(endContainer);
-
- // Exclude bookmark nodes if possible
- if (isBookmarkNode(startContainer.parentNode) || isBookmarkNode(startContainer)) {
- startContainer = isBookmarkNode(startContainer) ? startContainer : startContainer.parentNode;
- startContainer = startContainer.nextSibling || startContainer;
-
- if (startContainer.nodeType == 3)
- startOffset = 0;
- }
-
- if (isBookmarkNode(endContainer.parentNode) || isBookmarkNode(endContainer)) {
- endContainer = isBookmarkNode(endContainer) ? endContainer : endContainer.parentNode;
- endContainer = endContainer.previousSibling || endContainer;
-
- if (endContainer.nodeType == 3)
- endOffset = endContainer.length;
- }
-
- if (format[0].inline) {
- if (rng.collapsed) {
- // Expand left to closest word boundery
- endPoint = findWordEndPoint(startContainer, startOffset, true);
- if (endPoint) {
- startContainer = endPoint.container;
- startOffset = endPoint.offset;
- }
-
- // Expand right to closest word boundery
- endPoint = findWordEndPoint(endContainer, endOffset);
- if (endPoint) {
- endContainer = endPoint.container;
- endOffset = endPoint.offset;
- }
- }
-
- // Avoid applying formatting to a trailing space.
- leaf = findLeaf(endContainer, endOffset);
- if (leaf.node) {
- while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling)
- leaf = findLeaf(leaf.node.previousSibling);
-
- if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 &&
- leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') {
-
- if (leaf.offset > 1) {
- endContainer = leaf.node;
- endContainer.splitText(leaf.offset - 1);
- }
- }
- }
- }
-
- // Move start/end point up the tree if the leaves are sharp and if we are in different containers
- // Example * becomes !: !<p><b><i>*text</i><i>text*</i></b></p>!
- // This will reduce the number of wrapper elements that needs to be created
- // Move start point up the tree
- if (format[0].inline || format[0].block_expand) {
- if (!format[0].inline || (startContainer.nodeType != 3 || startOffset === 0)) {
- startContainer = findParentContainer(true);
- }
-
- if (!format[0].inline || (endContainer.nodeType != 3 || endOffset === endContainer.nodeValue.length)) {
- endContainer = findParentContainer();
- }
- }
-
- // Expand start/end container to matching selector
- if (format[0].selector && format[0].expand !== FALSE && !format[0].inline) {
- // Find new startContainer/endContainer if there is better one
- startContainer = findSelectorEndPoint(startContainer, 'previousSibling');
- endContainer = findSelectorEndPoint(endContainer, 'nextSibling');
- }
-
- // Expand start/end container to matching block element or text node
- if (format[0].block || format[0].selector) {
- // Find new startContainer/endContainer if there is better one
- startContainer = findBlockEndPoint(startContainer, 'previousSibling');
- endContainer = findBlockEndPoint(endContainer, 'nextSibling');
-
- // Non block element then try to expand up the leaf
- if (format[0].block) {
- if (!isBlock(startContainer))
- startContainer = findParentContainer(true);
-
- if (!isBlock(endContainer))
- endContainer = findParentContainer();
- }
- }
-
- // Setup index for startContainer
- if (startContainer.nodeType == 1) {
- startOffset = nodeIndex(startContainer);
- startContainer = startContainer.parentNode;
- }
-
- // Setup index for endContainer
- if (endContainer.nodeType == 1) {
- endOffset = nodeIndex(endContainer) + 1;
- endContainer = endContainer.parentNode;
- }
-
- // Return new range like object
- return {
- startContainer : startContainer,
- startOffset : startOffset,
- endContainer : endContainer,
- endOffset : endOffset
- };
- }
-
- function removeFormat(format, vars, node, compare_node) {
- var i, attrs, stylesModified;
-
- // Check if node matches format
- if (!matchName(node, format))
- return FALSE;
-
- // Should we compare with format attribs and styles
- if (format.remove != 'all') {
- // Remove styles
- each(format.styles, function(value, name) {
- value = replaceVars(value, vars);
-
- // Indexed array
- if (typeof(name) === 'number') {
- name = value;
- compare_node = 0;
- }
-
- if (!compare_node || isEq(getStyle(compare_node, name), value))
- dom.setStyle(node, name, '');
-
- stylesModified = 1;
- });
-
- // Remove style attribute if it's empty
- if (stylesModified && dom.getAttrib(node, 'style') == '') {
- node.removeAttribute('style');
- node.removeAttribute('data-mce-style');
- }
-
- // Remove attributes
- each(format.attributes, function(value, name) {
- var valueOut;
-
- value = replaceVars(value, vars);
-
- // Indexed array
- if (typeof(name) === 'number') {
- name = value;
- compare_node = 0;
- }
-
- if (!compare_node || isEq(dom.getAttrib(compare_node, name), value)) {
- // Keep internal classes
- if (name == 'class') {
- value = dom.getAttrib(node, name);
- if (value) {
- // Build new class value where everything is removed except the internal prefixed classes
- valueOut = '';
- each(value.split(/\s+/), function(cls) {
- if (/mce\w+/.test(cls))
- valueOut += (valueOut ? ' ' : '') + cls;
- });
-
- // We got some internal classes left
- if (valueOut) {
- dom.setAttrib(node, name, valueOut);
- return;
- }
- }
- }
-
- // IE6 has a bug where the attribute doesn't get removed correctly
- if (name == "class")
- node.removeAttribute('className');
-
- // Remove mce prefixed attributes
- if (MCE_ATTR_RE.test(name))
- node.removeAttribute('data-mce-' + name);
-
- node.removeAttribute(name);
- }
- });
-
- // Remove classes
- each(format.classes, function(value) {
- value = replaceVars(value, vars);
-
- if (!compare_node || dom.hasClass(compare_node, value))
- dom.removeClass(node, value);
- });
-
- // Check for non internal attributes
- attrs = dom.getAttribs(node);
- for (i = 0; i < attrs.length; i++) {
- if (attrs[i].nodeName.indexOf('_') !== 0)
- return FALSE;
- }
- }
-
- // Remove the inline child if it's empty for example <b> or <span>
- if (format.remove != 'none') {
- removeNode(node, format);
- return TRUE;
- }
- };
-
- function removeNode(node, format) {
- var parentNode = node.parentNode, rootBlockElm;
-
- function find(node, next, inc) {
- node = getNonWhiteSpaceSibling(node, next, inc);
-
- return !node || (node.nodeName == 'BR' || isBlock(node));
- };
-
- if (format.block) {
- if (!forcedRootBlock) {
- // Append BR elements if needed before we remove the block
- if (isBlock(node) && !isBlock(parentNode)) {
- if (!find(node, FALSE) && !find(node.firstChild, TRUE, 1))
- node.insertBefore(dom.create('br'), node.firstChild);
-
- if (!find(node, TRUE) && !find(node.lastChild, FALSE, 1))
- node.appendChild(dom.create('br'));
- }
- } else {
- // Wrap the block in a forcedRootBlock if we are at the root of document
- if (parentNode == dom.getRoot()) {
- if (!format.list_block || !isEq(node, format.list_block)) {
- each(tinymce.grep(node.childNodes), function(node) {
- if (isValid(forcedRootBlock, node.nodeName.toLowerCase())) {
- if (!rootBlockElm)
- rootBlockElm = wrap(node, forcedRootBlock);
- else
- rootBlockElm.appendChild(node);
- } else
- rootBlockElm = 0;
- });
- }
- }
- }
- }
-
- // Never remove nodes that isn't the specified inline element if a selector is specified too
- if (format.selector && format.inline && !isEq(format.inline, node))
- return;
-
- dom.remove(node, 1);
- };
-
- function getNonWhiteSpaceSibling(node, next, inc) {
- if (node) {
- next = next ? 'nextSibling' : 'previousSibling';
-
- for (node = inc ? node : node[next]; node; node = node[next]) {
- if (node.nodeType == 1 || !isWhiteSpaceNode(node))
- return node;
- }
- }
- };
-
- function isBookmarkNode(node) {
- return node && node.nodeType == 1 && node.getAttribute('data-mce-type') == 'bookmark';
- };
-
- function mergeSiblings(prev, next) {
- var marker, sibling, tmpSibling;
-
- function compareElements(node1, node2) {
- // Not the same name
- if (node1.nodeName != node2.nodeName)
- return FALSE;
-
- function getAttribs(node) {
- var attribs = {};
-
- each(dom.getAttribs(node), function(attr) {
- var name = attr.nodeName.toLowerCase();
-
- // Don't compare internal attributes or style
- if (name.indexOf('_') !== 0 && name !== 'style')
- attribs[name] = dom.getAttrib(node, name);
- });
-
- return attribs;
- };
-
- function compareObjects(obj1, obj2) {
- var value, name;
-
- for (name in obj1) {
- // Obj1 has item obj2 doesn't have
- if (obj1.hasOwnProperty(name)) {
- value = obj2[name];
-
- // Obj2 doesn't have obj1 item
- if (value === undef)
- return FALSE;
-
- // Obj2 item has a different value
- if (obj1[name] != value)
- return FALSE;
-
- // Delete similar value
- delete obj2[name];
- }
- }
-
- // Check if obj 2 has something obj 1 doesn't have
- for (name in obj2) {
- // Obj2 has item obj1 doesn't have
- if (obj2.hasOwnProperty(name))
- return FALSE;
- }
-
- return TRUE;
- };
-
- // Attribs are not the same
- if (!compareObjects(getAttribs(node1), getAttribs(node2)))
- return FALSE;
-
- // Styles are not the same
- if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style'))))
- return FALSE;
-
- return TRUE;
- };
-
- function findElementSibling(node, sibling_name) {
- for (sibling = node; sibling; sibling = sibling[sibling_name]) {
- if (sibling.nodeType == 3 && sibling.nodeValue.length !== 0)
- return node;
-
- if (sibling.nodeType == 1 && !isBookmarkNode(sibling))
- return sibling;
- }
-
- return node;
- };
-
- // Check if next/prev exists and that they are elements
- if (prev && next) {
- // If previous sibling is empty then jump over it
- prev = findElementSibling(prev, 'previousSibling');
- next = findElementSibling(next, 'nextSibling');
-
- // Compare next and previous nodes
- if (compareElements(prev, next)) {
- // Append nodes between
- for (sibling = prev.nextSibling; sibling && sibling != next;) {
- tmpSibling = sibling;
- sibling = sibling.nextSibling;
- prev.appendChild(tmpSibling);
- }
-
- // Remove next node
- dom.remove(next);
-
- // Move children into prev node
- each(tinymce.grep(next.childNodes), function(node) {
- prev.appendChild(node);
- });
-
- return prev;
- }
- }
-
- return next;
- };
-
- function isTextBlock(name) {
- return /^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(name);
- };
-
- function getContainer(rng, start) {
- var container, offset, lastIdx, walker;
-
- container = rng[start ? 'startContainer' : 'endContainer'];
- offset = rng[start ? 'startOffset' : 'endOffset'];
-
- if (container.nodeType == 1) {
- lastIdx = container.childNodes.length - 1;
-
- if (!start && offset)
- offset--;
-
- container = container.childNodes[offset > lastIdx ? lastIdx : offset];
- }
-
- // If start text node is excluded then walk to the next node
- if (container.nodeType === 3 && start && offset >= container.nodeValue.length) {
- container = new TreeWalker(container, ed.getBody()).next() || container;
- }
-
- // If end text node is excluded then walk to the previous node
- if (container.nodeType === 3 && !start && offset === 0) {
- container = new TreeWalker(container, ed.getBody()).prev() || container;
- }
-
- return container;
- };
-
- function performCaretAction(type, name, vars) {
- var caretContainerId = '_mce_caret', debug = ed.settings.caret_debug;
-
- // Creates a caret container bogus element
- function createCaretContainer(fill) {
- var caretContainer = dom.create('span', {id: caretContainerId, 'data-mce-bogus': true, style: debug ? 'color:red' : ''});
-
- if (fill) {
- caretContainer.appendChild(ed.getDoc().createTextNode(INVISIBLE_CHAR));
- }
-
- return caretContainer;
- };
-
- function isCaretContainerEmpty(node, nodes) {
- while (node) {
- if ((node.nodeType === 3 && node.nodeValue !== INVISIBLE_CHAR) || node.childNodes.length > 1) {
- return false;
- }
-
- // Collect nodes
- if (nodes && node.nodeType === 1) {
- nodes.push(node);
- }
-
- node = node.firstChild;
- }
-
- return true;
- };
-
- // Returns any parent caret container element
- function getParentCaretContainer(node) {
- while (node) {
- if (node.id === caretContainerId) {
- return node;
- }
-
- node = node.parentNode;
- }
- };
-
- // Finds the first text node in the specified node
- function findFirstTextNode(node) {
- var walker;
-
- if (node) {
- walker = new TreeWalker(node, node);
-
- for (node = walker.current(); node; node = walker.next()) {
- if (node.nodeType === 3) {
- return node;
- }
- }
- }
- };
-
- // Removes the caret container for the specified node or all on the current document
- function removeCaretContainer(node, move_caret) {
- var child, rng;
-
- if (!node) {
- node = getParentCaretContainer(selection.getStart());
-
- if (!node) {
- while (node = dom.get(caretContainerId)) {
- removeCaretContainer(node, false);
- }
- }
- } else {
- rng = selection.getRng(true);
-
- if (isCaretContainerEmpty(node)) {
- if (move_caret !== false) {
- rng.setStartBefore(node);
- rng.setEndBefore(node);
- }
-
- dom.remove(node);
- } else {
- child = findFirstTextNode(node);
-
- if (child.nodeValue.charAt(0) === INVISIBLE_CHAR) {
- child = child.deleteData(0, 1);
- }
-
- dom.remove(node, 1);
- }
-
- selection.setRng(rng);
- }
- };
-
- // Applies formatting to the caret postion
- function applyCaretFormat() {
- var rng, caretContainer, textNode, offset, bookmark, container, text;
-
- rng = selection.getRng(true);
- offset = rng.startOffset;
- container = rng.startContainer;
- text = container.nodeValue;
-
- caretContainer = getParentCaretContainer(selection.getStart());
- if (caretContainer) {
- textNode = findFirstTextNode(caretContainer);
- }
-
- // Expand to word is caret is in the middle of a text node and the char before/after is a alpha numeric character
- if (text && offset > 0 && offset < text.length && /\w/.test(text.charAt(offset)) && /\w/.test(text.charAt(offset - 1))) {
- // Get bookmark of caret position
- bookmark = selection.getBookmark();
-
- // Collapse bookmark range (WebKit)
- rng.collapse(true);
-
- // Expand the range to the closest word and split it at those points
- rng = expandRng(rng, get(name));
- rng = rangeUtils.split(rng);
-
- // Apply the format to the range
- apply(name, vars, rng);
-
- // Move selection back to caret position
- selection.moveToBookmark(bookmark);
- } else {
- if (!caretContainer || textNode.nodeValue !== INVISIBLE_CHAR) {
- caretContainer = createCaretContainer(true);
- textNode = caretContainer.firstChild;
-
- rng.insertNode(caretContainer);
- offset = 1;
-
- apply(name, vars, caretContainer);
- } else {
- apply(name, vars, caretContainer);
- }
-
- // Move selection to text node
- selection.setCursorLocation(textNode, offset);
- }
- };
-
- function removeCaretFormat() {
- var rng = selection.getRng(true), container, offset, bookmark,
- hasContentAfter, node, formatNode, parents = [], i, caretContainer;
-
- container = rng.startContainer;
- offset = rng.startOffset;
- node = container;
-
- if (container.nodeType == 3) {
- if (offset != container.nodeValue.length || container.nodeValue === INVISIBLE_CHAR) {
- hasContentAfter = true;
- }
-
- node = node.parentNode;
- }
-
- while (node) {
- if (matchNode(node, name, vars)) {
- formatNode = node;
- break;
- }
-
- if (node.nextSibling) {
- hasContentAfter = true;
- }
-
- parents.push(node);
- node = node.parentNode;
- }
-
- // Node doesn't have the specified format
- if (!formatNode) {
- return;
- }
-
- // Is there contents after the caret then remove the format on the element
- if (hasContentAfter) {
- // Get bookmark of caret position
- bookmark = selection.getBookmark();
-
- // Collapse bookmark range (WebKit)
- rng.collapse(true);
-
- // Expand the range to the closest word and split it at those points
- rng = expandRng(rng, get(name), true);
- rng = rangeUtils.split(rng);
-
- // Remove the format from the range
- remove(name, vars, rng);
-
- // Move selection back to caret position
- selection.moveToBookmark(bookmark);
- } else {
- caretContainer = createCaretContainer();
-
- node = caretContainer;
- for (i = parents.length - 1; i >= 0; i--) {
- node.appendChild(dom.clone(parents[i], false));
- node = node.firstChild;
- }
-
- // Insert invisible character into inner most format element
- node.appendChild(dom.doc.createTextNode(INVISIBLE_CHAR));
- node = node.firstChild;
-
- // Insert caret container after the formated node
- dom.insertAfter(caretContainer, formatNode);
-
- // Move selection to text node
- selection.setCursorLocation(node, 1);
- }
- };
-
- // Only bind the caret events once
- if (!self._hasCaretEvents) {
- // Mark current caret container elements as bogus when getting the contents so we don't end up with empty elements
- ed.onBeforeGetContent.addToTop(function() {
- var nodes = [], i;
-
- if (isCaretContainerEmpty(getParentCaretContainer(selection.getStart()), nodes)) {
- // Mark children
- i = nodes.length;
- while (i--) {
- dom.setAttrib(nodes[i], 'data-mce-bogus', '1');
- }
- }
- });
-
- // Remove caret container on mouse up and on key up
- tinymce.each('onMouseUp onKeyUp'.split(' '), function(name) {
- ed[name].addToTop(function() {
- removeCaretContainer();
- });
- });
-
- // Remove caret container on keydown and it's a backspace, enter or left/right arrow keys
- ed.onKeyDown.addToTop(function(ed, e) {
- var keyCode = e.keyCode;
-
- if (keyCode == 8 || keyCode == 37 || keyCode == 39) {
- removeCaretContainer(getParentCaretContainer(selection.getStart()));
- }
- });
-
- // Remove bogus state if they got filled by contents using editor.selection.setContent
- selection.onSetContent.add(function() {
- dom.getParent(selection.getStart(), function(node) {
- if (node.id !== caretContainerId && dom.getAttrib(node, 'data-mce-bogus') && !dom.isEmpty(node)) {
- dom.setAttrib(node, 'data-mce-bogus', null);
- }
- });
- });
-
- self._hasCaretEvents = true;
- }
-
- // Do apply or remove caret format
- if (type == "apply") {
- applyCaretFormat();
- } else {
- removeCaretFormat();
- }
- };
-
- function moveStart(rng) {
- var container = rng.startContainer,
- offset = rng.startOffset, isAtEndOfText,
- walker, node, nodes, tmpNode;
-
- // Convert text node into index if possible
- if (container.nodeType == 3 && offset >= container.nodeValue.length) {
- // Get the parent container location and walk from there
- offset = nodeIndex(container);
- container = container.parentNode;
- isAtEndOfText = true;
- }
-
- // Move startContainer/startOffset in to a suitable node
- if (container.nodeType == 1) {
- nodes = container.childNodes;
- container = nodes[Math.min(offset, nodes.length - 1)];
- walker = new TreeWalker(container, dom.getParent(container, dom.isBlock));
-
- // If offset is at end of the parent node walk to the next one
- if (offset > nodes.length - 1 || isAtEndOfText)
- walker.next();
-
- for (node = walker.current(); node; node = walker.next()) {
- if (node.nodeType == 3 && !isWhiteSpaceNode(node)) {
- // IE has a "neat" feature where it moves the start node into the closest element
- // we can avoid this by inserting an element before it and then remove it after we set the selection
- tmpNode = dom.create('a', null, INVISIBLE_CHAR);
- node.parentNode.insertBefore(tmpNode, node);
-
- // Set selection and remove tmpNode
- rng.setStart(node, 0);
- selection.setRng(rng);
- dom.remove(tmpNode);
-
- return;
- }
- }
- }
- };
- };
-})(tinymce);
-
-tinymce.onAddEditor.add(function(tinymce, ed) {
- var filters, fontSizes, dom, settings = ed.settings;
-
- function replaceWithSpan(node, styles) {
- tinymce.each(styles, function(value, name) {
- if (value)
- dom.setStyle(node, name, value);
- });
-
- dom.rename(node, 'span');
- };
-
- function convert(editor, params) {
- dom = editor.dom;
-
- if (settings.convert_fonts_to_spans) {
- tinymce.each(dom.select('font,u,strike', params.node), function(node) {
- filters[node.nodeName.toLowerCase()](ed.dom, node);
- });
- }
- };
-
- if (settings.inline_styles) {
- fontSizes = tinymce.explode(settings.font_size_legacy_values);
-
- filters = {
- font : function(dom, node) {
- replaceWithSpan(node, {
- backgroundColor : node.style.backgroundColor,
- color : node.color,
- fontFamily : node.face,
- fontSize : fontSizes[parseInt(node.size, 10) - 1]
- });
- },
-
- u : function(dom, node) {
- replaceWithSpan(node, {
- textDecoration : 'underline'
- });
- },
-
- strike : function(dom, node) {
- replaceWithSpan(node, {
- textDecoration : 'line-through'
- });
- }
- };
-
- ed.onPreProcess.add(convert);
- ed.onSetContent.add(convert);
-
- ed.onInit.add(function() {
- ed.selection.onSetContent.add(convert);
- });
- }
-});
-
-(function(tinymce) {
- var TreeWalker = tinymce.dom.TreeWalker;
-
- tinymce.EnterKey = function(editor) {
- var dom = editor.dom, selection = editor.selection, settings = editor.settings, undoManager = editor.undoManager;
-
- function handleEnterKey(evt) {
- var rng = selection.getRng(true), tmpRng, editableRoot, container, offset, parentBlock, documentMode,
- newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName, isAfterLastNodeInContainer;
-
- // Returns true if the block can be split into two blocks or not
- function canSplitBlock(node) {
- return node &&
- dom.isBlock(node) &&
- !/^(TD|TH|CAPTION)$/.test(node.nodeName) &&
- !/^(fixed|absolute)/i.test(node.style.position) &&
- dom.getContentEditable(node) !== "true";
- };
-
- // Moves the caret to a suitable position within the root for example in the first non pure whitespace text node or before an image
- function moveToCaretPosition(root) {
- var walker, node, rng, y, viewPort, lastNode = root, tempElm;
-
- rng = dom.createRng();
-
- if (root.hasChildNodes()) {
- walker = new TreeWalker(root, root);
-
- while (node = walker.current()) {
- if (node.nodeType == 3) {
- rng.setStart(node, 0);
- rng.setEnd(node, 0);
- break;
- }
-
- if (/^(BR|IMG)$/.test(node.nodeName)) {
- rng.setStartBefore(node);
- rng.setEndBefore(node);
- break;
- }
-
- lastNode = node;
- node = walker.next();
- }
-
- if (!node) {
- rng.setStart(lastNode, 0);
- rng.setEnd(lastNode, 0);
- }
- } else {
- if (root.nodeName == 'BR') {
- if (root.nextSibling && dom.isBlock(root.nextSibling)) {
- // Trick on older IE versions to render the caret before the BR between two lists
- if (!documentMode || documentMode < 9) {
- tempElm = dom.create('br');
- root.parentNode.insertBefore(tempElm, root);
- }
-
- rng.setStartBefore(root);
- rng.setEndBefore(root);
- } else {
- rng.setStartAfter(root);
- rng.setEndAfter(root);
- }
- } else {
- rng.setStart(root, 0);
- rng.setEnd(root, 0);
- }
- }
-
- selection.setRng(rng);
-
- // Remove tempElm created for old IE:s
- dom.remove(tempElm);
-
- viewPort = dom.getViewPort(editor.getWin());
-
- // scrollIntoView seems to scroll the parent window in most browsers now including FF 3.0b4 so it's time to stop using it and do it our selfs
- y = dom.getPos(root).y;
- if (y < viewPort.y || y + 25 > viewPort.y + viewPort.h) {
- editor.getWin().scrollTo(0, y < viewPort.y ? y : y - viewPort.h + 25); // Needs to be hardcoded to roughly one line of text if a huge text block is broken into two blocks
- }
- };
-
- // Creates a new block element by cloning the current one or creating a new one if the name is specified
- // This function will also copy any text formatting from the parent block and add it to the new one
- function createNewBlock(name) {
- var node = container, block, clonedNode, caretNode;
-
- block = name || parentBlockName == "TABLE" ? dom.create(name || newBlockName) : parentBlock.cloneNode(false);
- caretNode = block;
-
- // Clone any parent styles
- if (settings.keep_styles !== false) {
- do {
- if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(node.nodeName)) {
- clonedNode = node.cloneNode(false);
- dom.setAttrib(clonedNode, 'id', ''); // Remove ID since it needs to be document unique
-
- if (block.hasChildNodes()) {
- clonedNode.appendChild(block.firstChild);
- block.appendChild(clonedNode);
- } else {
- caretNode = clonedNode;
- block.appendChild(clonedNode);
- }
- }
- } while (node = node.parentNode);
- }
-
- // BR is needed in empty blocks on non IE browsers
- if (!tinymce.isIE) {
- caretNode.innerHTML = '<br>';
- }
-
- return block;
- };
-
- // Returns true/false if the caret is at the start/end of the parent block element
- function isCaretAtStartOrEndOfBlock(start) {
- var walker, node, name;
-
- // Caret is in the middle of a text node like "a|b"
- if (container.nodeType == 3 && (start ? offset > 0 : offset < container.nodeValue.length)) {
- return false;
- }
-
- // If after the last element in block node edge case for #5091
- if (container.parentNode == parentBlock && isAfterLastNodeInContainer && !start) {
- return true;
- }
-
- // Caret can be before/after a table
- if (container.nodeName === "TABLE" || (container.previousSibling && container.previousSibling.nodeName == "TABLE")) {
- return (isAfterLastNodeInContainer && !start) || (!isAfterLastNodeInContainer && start);
- }
-
- // Walk the DOM and look for text nodes or non empty elements
- walker = new TreeWalker(container, parentBlock);
- while (node = (start ? walker.prev() : walker.next())) {
- if (node.nodeType === 1) {
- // Ignore bogus elements
- if (node.getAttribute('data-mce-bogus')) {
- continue;
- }
-
- // Keep empty elements like <img />
- name = node.nodeName.toLowerCase();
- if (name === 'IMG') {
- return false;
- }
- } else if (node.nodeType === 3 && !/^[ \t\r\n]*$/.test(node.nodeValue)) {
- return false;
- }
- }
-
- return true;
- };
-
- // Wraps any text nodes or inline elements in the specified forced root block name
- function wrapSelfAndSiblingsInDefaultBlock(container, offset) {
- var newBlock, parentBlock, startNode, node, next, blockName = newBlockName || 'P';
-
- // Not in a block element or in a table cell or caption
- parentBlock = dom.getParent(container, dom.isBlock);
- if (!parentBlock || !canSplitBlock(parentBlock)) {
- parentBlock = parentBlock || editableRoot;
-
- if (!parentBlock.hasChildNodes()) {
- newBlock = dom.create(blockName);
- parentBlock.appendChild(newBlock);
- rng.setStart(newBlock, 0);
- rng.setEnd(newBlock, 0);
- return newBlock;
- }
-
- // Find parent that is the first child of parentBlock
- node = container;
- while (node.parentNode != parentBlock) {
- node = node.parentNode;
- }
-
- // Loop left to find start node start wrapping at
- while (node && !dom.isBlock(node)) {
- startNode = node;
- node = node.previousSibling;
- }
-
- if (startNode) {
- newBlock = dom.create(blockName);
- startNode.parentNode.insertBefore(newBlock, startNode);
-
- // Start wrapping until we hit a block
- node = startNode;
- while (node && !dom.isBlock(node)) {
- next = node.nextSibling;
- newBlock.appendChild(node);
- node = next;
- }
-
- // Restore range to it's past location
- rng.setStart(container, offset);
- rng.setEnd(container, offset);
- }
- }
-
- return container;
- };
-
- // Inserts a block or br before/after or in the middle of a split list of the LI is empty
- function handleEmptyListItem() {
- function isFirstOrLastLi(first) {
- var node = containerBlock[first ? 'firstChild' : 'lastChild'];
-
- // Find first/last element since there might be whitespace there
- while (node) {
- if (node.nodeType == 1) {
- break;
- }
-
- node = node[first ? 'nextSibling' : 'previousSibling'];
- }
-
- return node === parentBlock;
- };
-
- newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR');
-
- if (isFirstOrLastLi(true) && isFirstOrLastLi()) {
- // Is first and last list item then replace the OL/UL with a text block
- dom.replace(newBlock, containerBlock);
- } else if (isFirstOrLastLi(true)) {
- // First LI in list then remove LI and add text block before list
- containerBlock.parentNode.insertBefore(newBlock, containerBlock);
- } else if (isFirstOrLastLi()) {
- // Last LI in list then temove LI and add text block after list
- dom.insertAfter(newBlock, containerBlock);
- } else {
- // Middle LI in list the split the list and insert a text block in the middle
- // Extract after fragment and insert it after the current block
- tmpRng = rng.cloneRange();
- tmpRng.setStartAfter(parentBlock);
- tmpRng.setEndAfter(containerBlock);
- fragment = tmpRng.extractContents();
- dom.insertAfter(fragment, containerBlock);
- dom.insertAfter(newBlock, containerBlock);
- }
-
- dom.remove(parentBlock);
- moveToCaretPosition(newBlock);
- undoManager.add();
- };
-
- // Walks the parent block to the right and look for BR elements
- function hasRightSideBr() {
- var walker = new TreeWalker(container, parentBlock), node;
-
- while (node = walker.current()) {
- if (node.nodeName == 'BR') {
- return true;
- }
-
- node = walker.next();
- }
- }
-
- // Inserts a BR element if the forced_root_block option is set to false or empty string
- function insertBr() {
- var brElm, extraBr;
-
- if (container && container.nodeType == 3 && offset >= container.nodeValue.length) {
- // Insert extra BR element at the end block elements
- if (!tinymce.isIE && !hasRightSideBr()) {
- brElm = dom.create('br')
- rng.insertNode(brElm);
- rng.setStartAfter(brElm);
- rng.setEndAfter(brElm);
- extraBr = true;
- }
- }
-
- brElm = dom.create('br');
- rng.insertNode(brElm);
-
- // Rendering modes below IE8 doesn't display BR elements in PRE unless we have a \n before it
- if (tinymce.isIE && parentBlockName == 'PRE' && (!documentMode || documentMode < 8)) {
- brElm.parentNode.insertBefore(dom.doc.createTextNode('\r'), brElm);
- }
-
- if (!extraBr) {
- rng.setStartAfter(brElm);
- rng.setEndAfter(brElm);
- } else {
- rng.setStartBefore(brElm);
- rng.setEndBefore(brElm);
- }
-
- selection.setRng(rng);
- undoManager.add();
- };
-
- // Trims any linebreaks at the beginning of node user for example when pressing enter in a PRE element
- function trimLeadingLineBreaks(node) {
- do {
- if (node.nodeType === 3) {
- node.nodeValue = node.nodeValue.replace(/^[\r\n]+/, '');
- }
-
- node = node.firstChild;
- } while (node);
- };
-
- function getEditableRoot(node) {
- var root = dom.getRoot(), parent, editableRoot;
-
- // Get all parents until we hit a non editable parent or the root
- parent = node;
- while (parent !== root && dom.getContentEditable(parent) !== "false") {
- if (dom.getContentEditable(parent) === "true") {
- editableRoot = parent;
- }
-
- parent = parent.parentNode;
- }
-
- return parent !== root ? editableRoot : root;
- };
-
- // Delete any selected contents
- if (!rng.collapsed) {
- editor.execCommand('Delete');
- return;
- }
-
- // Event is blocked by some other handler for example the lists plugin
- if (evt.isDefaultPrevented()) {
- return;
- }
-
- // Setup range items and newBlockName
- container = rng.startContainer;
- offset = rng.startOffset;
- newBlockName = settings.forced_root_block;
- newBlockName = newBlockName ? newBlockName.toUpperCase() : '';
- documentMode = dom.doc.documentMode;
-
- // Resolve node index
- if (container.nodeType == 1 && container.hasChildNodes()) {
- isAfterLastNodeInContainer = offset > container.childNodes.length - 1;
- container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;
- offset = 0;
- }
-
- // Get editable root node normaly the body element but sometimes a div or span
- editableRoot = getEditableRoot(container);
-
- // If there is no editable root then enter is done inside a contentEditable false element
- if (!editableRoot) {
- return;
- }
-
- undoManager.beforeChange();
-
- // If editable root isn't block nor the root of the editor
- if (!dom.isBlock(editableRoot) && editableRoot != dom.getRoot()) {
- if (!newBlockName || evt.shiftKey) {
- insertBr();
- }
-
- return;
- }
-
- // Wrap the current node and it's sibling in a default block if it's needed.
- // for example this <td>text|<b>text2</b></td> will become this <td><p>text|<b>text2</p></b></td>
- // This won't happen if root blocks are disabled or the shiftKey is pressed
- if ((newBlockName && !evt.shiftKey) || (!newBlockName && evt.shiftKey)) {
- container = wrapSelfAndSiblingsInDefaultBlock(container, offset);
- }
-
- // Find parent block and setup empty block paddings
- parentBlock = dom.getParent(container, dom.isBlock);
- containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;
-
- // Setup block names
- parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
- containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
-
- // Handle enter inside an empty list item
- if (parentBlockName == 'LI' && dom.isEmpty(parentBlock)) {
- // Let the list plugin or browser handle nested lists for now
- if (/^(UL|OL|LI)$/.test(containerBlock.parentNode.nodeName)) {
- return false;
- }
-
- handleEmptyListItem();
- return;
- }
-
- // Don't split PRE tags but insert a BR instead easier when writing code samples etc
- if (parentBlockName == 'PRE' && settings.br_in_pre !== false) {
- if (!evt.shiftKey) {
- insertBr();
- return;
- }
- } else {
- // If no root block is configured then insert a BR by default or if the shiftKey is pressed
- if ((!newBlockName && !evt.shiftKey && parentBlockName != 'LI') || (newBlockName && evt.shiftKey)) {
- insertBr();
- return;
- }
- }
-
- // Default block name if it's not configured
- newBlockName = newBlockName || 'P';
-
- // Insert new block before/after the parent block depending on caret location
- if (isCaretAtStartOrEndOfBlock()) {
- // If the caret is at the end of a header we produce a P tag after it similar to Word unless we are in a hgroup
- if (/^(H[1-6]|PRE)$/.test(parentBlockName) && containerBlockName != 'HGROUP') {
- newBlock = createNewBlock(newBlockName);
- } else {
- newBlock = createNewBlock();
- }
-
- // Split the current container block element if enter is pressed inside an empty inner block element
- if (settings.end_container_on_empty_block && canSplitBlock(containerBlock) && dom.isEmpty(parentBlock)) {
- // Split container block for example a BLOCKQUOTE at the current blockParent location for example a P
- newBlock = dom.split(containerBlock, parentBlock);
- } else {
- dom.insertAfter(newBlock, parentBlock);
- }
- } else if (isCaretAtStartOrEndOfBlock(true)) {
- // Insert new block before
- newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock);
- } else {
- // Extract after fragment and insert it after the current block
- tmpRng = rng.cloneRange();
- tmpRng.setEndAfter(parentBlock);
- fragment = tmpRng.extractContents();
- trimLeadingLineBreaks(fragment);
- newBlock = fragment.firstChild;
- dom.insertAfter(fragment, parentBlock);
- }
-
- dom.setAttrib(newBlock, 'id', ''); // Remove ID since it needs to be document unique
- moveToCaretPosition(newBlock);
- undoManager.add();
- }
-
- editor.onKeyDown.add(function(ed, evt) {
- if (evt.keyCode == 13) {
- if (handleEnterKey(evt) !== false) {
- evt.preventDefault();
- }
- }
- });
- };
-})(tinymce);
-
diff --git a/library/tinymce/jscripts/tiny_mce/utils/editable_selects.js b/library/tinymce/jscripts/tiny_mce/utils/editable_selects.js
deleted file mode 100644
index 4b920f3d1..000000000
--- a/library/tinymce/jscripts/tiny_mce/utils/editable_selects.js
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * editable_selects.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-var TinyMCE_EditableSelects = {
- editSelectElm : null,
-
- init : function() {
- var nl = document.getElementsByTagName("select"), i, d = document, o;
-
- for (i=0; i<nl.length; i++) {
- if (nl[i].className.indexOf('mceEditableSelect') != -1) {
- o = new Option(tinyMCEPopup.editor.translate('value'), '__mce_add_custom__');
-
- o.className = 'mceAddSelectValue';
-
- nl[i].options[nl[i].options.length] = o;
- nl[i].onchange = TinyMCE_EditableSelects.onChangeEditableSelect;
- }
- }
- },
-
- onChangeEditableSelect : function(e) {
- var d = document, ne, se = window.event ? window.event.srcElement : e.target;
-
- if (se.options[se.selectedIndex].value == '__mce_add_custom__') {
- ne = d.createElement("input");
- ne.id = se.id + "_custom";
- ne.name = se.name + "_custom";
- ne.type = "text";
-
- ne.style.width = se.offsetWidth + 'px';
- se.parentNode.insertBefore(ne, se);
- se.style.display = 'none';
- ne.focus();
- ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;
- ne.onkeydown = TinyMCE_EditableSelects.onKeyDown;
- TinyMCE_EditableSelects.editSelectElm = se;
- }
- },
-
- onBlurEditableSelectInput : function() {
- var se = TinyMCE_EditableSelects.editSelectElm;
-
- if (se) {
- if (se.previousSibling.value != '') {
- addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);
- selectByValue(document.forms[0], se.id, se.previousSibling.value);
- } else
- selectByValue(document.forms[0], se.id, '');
-
- se.style.display = 'inline';
- se.parentNode.removeChild(se.previousSibling);
- TinyMCE_EditableSelects.editSelectElm = null;
- }
- },
-
- onKeyDown : function(e) {
- e = e || window.event;
-
- if (e.keyCode == 13)
- TinyMCE_EditableSelects.onBlurEditableSelectInput();
- }
-};
diff --git a/library/tinymce/jscripts/tiny_mce/utils/form_utils.js b/library/tinymce/jscripts/tiny_mce/utils/form_utils.js
deleted file mode 100644
index 59da01399..000000000
--- a/library/tinymce/jscripts/tiny_mce/utils/form_utils.js
+++ /dev/null
@@ -1,210 +0,0 @@
-/**
- * form_utils.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-var themeBaseURL = tinyMCEPopup.editor.baseURI.toAbsolute('themes/' + tinyMCEPopup.getParam("theme"));
-
-function getColorPickerHTML(id, target_form_element) {
- var h = "", dom = tinyMCEPopup.dom;
-
- if (label = dom.select('label[for=' + target_form_element + ']')[0]) {
- label.id = label.id || dom.uniqueId();
- }
-
- h += '<a role="button" aria-labelledby="' + id + '_label" id="' + id + '_link" href="javascript:;" onclick="tinyMCEPopup.pickColor(event,\'' + target_form_element +'\');" onmousedown="return false;" class="pickcolor">';
- h += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '">&nbsp;<span id="' + id + '_label" class="mceVoiceLabel mceIconOnly" style="display:none;">' + tinyMCEPopup.getLang('browse') + '</span></span></a>';
-
- return h;
-}
-
-function updateColor(img_id, form_element_id) {
- document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value;
-}
-
-function setBrowserDisabled(id, state) {
- var img = document.getElementById(id);
- var lnk = document.getElementById(id + "_link");
-
- if (lnk) {
- if (state) {
- lnk.setAttribute("realhref", lnk.getAttribute("href"));
- lnk.removeAttribute("href");
- tinyMCEPopup.dom.addClass(img, 'disabled');
- } else {
- if (lnk.getAttribute("realhref"))
- lnk.setAttribute("href", lnk.getAttribute("realhref"));
-
- tinyMCEPopup.dom.removeClass(img, 'disabled');
- }
- }
-}
-
-function getBrowserHTML(id, target_form_element, type, prefix) {
- var option = prefix + "_" + type + "_browser_callback", cb, html;
-
- cb = tinyMCEPopup.getParam(option, tinyMCEPopup.getParam("file_browser_callback"));
-
- if (!cb)
- return "";
-
- html = "";
- html += '<a id="' + id + '_link" href="javascript:openBrowser(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;" class="browse">';
- html += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '">&nbsp;</span></a>';
-
- return html;
-}
-
-function openBrowser(img_id, target_form_element, type, option) {
- var img = document.getElementById(img_id);
-
- if (img.className != "mceButtonDisabled")
- tinyMCEPopup.openBrowser(target_form_element, type, option);
-}
-
-function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
- if (!form_obj || !form_obj.elements[field_name])
- return;
-
- if (!value)
- value = "";
-
- var sel = form_obj.elements[field_name];
-
- var found = false;
- for (var i=0; i<sel.options.length; i++) {
- var option = sel.options[i];
-
- if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
- option.selected = true;
- found = true;
- } else
- option.selected = false;
- }
-
- if (!found && add_custom && value != '') {
- var option = new Option(value, value);
- option.selected = true;
- sel.options[sel.options.length] = option;
- sel.selectedIndex = sel.options.length - 1;
- }
-
- return found;
-}
-
-function getSelectValue(form_obj, field_name) {
- var elm = form_obj.elements[field_name];
-
- if (elm == null || elm.options == null || elm.selectedIndex === -1)
- return "";
-
- return elm.options[elm.selectedIndex].value;
-}
-
-function addSelectValue(form_obj, field_name, name, value) {
- var s = form_obj.elements[field_name];
- var o = new Option(name, value);
- s.options[s.options.length] = o;
-}
-
-function addClassesToList(list_id, specific_option) {
- // Setup class droplist
- var styleSelectElm = document.getElementById(list_id);
- var styles = tinyMCEPopup.getParam('theme_advanced_styles', false);
- styles = tinyMCEPopup.getParam(specific_option, styles);
-
- if (styles) {
- var stylesAr = styles.split(';');
-
- for (var i=0; i<stylesAr.length; i++) {
- if (stylesAr != "") {
- var key, value;
-
- key = stylesAr[i].split('=')[0];
- value = stylesAr[i].split('=')[1];
-
- styleSelectElm.options[styleSelectElm.length] = new Option(key, value);
- }
- }
- } else {
- tinymce.each(tinyMCEPopup.editor.dom.getClasses(), function(o) {
- styleSelectElm.options[styleSelectElm.length] = new Option(o.title || o['class'], o['class']);
- });
- }
-}
-
-function isVisible(element_id) {
- var elm = document.getElementById(element_id);
-
- return elm && elm.style.display != "none";
-}
-
-function convertRGBToHex(col) {
- var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
-
- var rgb = col.replace(re, "$1,$2,$3").split(',');
- if (rgb.length == 3) {
- r = parseInt(rgb[0]).toString(16);
- g = parseInt(rgb[1]).toString(16);
- b = parseInt(rgb[2]).toString(16);
-
- r = r.length == 1 ? '0' + r : r;
- g = g.length == 1 ? '0' + g : g;
- b = b.length == 1 ? '0' + b : b;
-
- return "#" + r + g + b;
- }
-
- return col;
-}
-
-function convertHexToRGB(col) {
- if (col.indexOf('#') != -1) {
- col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
-
- r = parseInt(col.substring(0, 2), 16);
- g = parseInt(col.substring(2, 4), 16);
- b = parseInt(col.substring(4, 6), 16);
-
- return "rgb(" + r + "," + g + "," + b + ")";
- }
-
- return col;
-}
-
-function trimSize(size) {
- return size.replace(/([0-9\.]+)(px|%|in|cm|mm|em|ex|pt|pc)/i, '$1$2');
-}
-
-function getCSSSize(size) {
- size = trimSize(size);
-
- if (size == "")
- return "";
-
- // Add px
- if (/^[0-9]+$/.test(size))
- size += 'px';
- // Sanity check, IE doesn't like broken values
- else if (!(/^[0-9\.]+(px|%|in|cm|mm|em|ex|pt|pc)$/i.test(size)))
- return "";
-
- return size;
-}
-
-function getStyle(elm, attrib, style) {
- var val = tinyMCEPopup.dom.getAttrib(elm, attrib);
-
- if (val != '')
- return '' + val;
-
- if (typeof(style) == 'undefined')
- style = attrib;
-
- return tinyMCEPopup.dom.getStyle(elm, style);
-}
diff --git a/library/tinymce/jscripts/tiny_mce/utils/mctabs.js b/library/tinymce/jscripts/tiny_mce/utils/mctabs.js
deleted file mode 100644
index 458ec86da..000000000
--- a/library/tinymce/jscripts/tiny_mce/utils/mctabs.js
+++ /dev/null
@@ -1,162 +0,0 @@
-/**
- * mctabs.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-function MCTabs() {
- this.settings = [];
- this.onChange = tinyMCEPopup.editor.windowManager.createInstance('tinymce.util.Dispatcher');
-};
-
-MCTabs.prototype.init = function(settings) {
- this.settings = settings;
-};
-
-MCTabs.prototype.getParam = function(name, default_value) {
- var value = null;
-
- value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
-
- // Fix bool values
- if (value == "true" || value == "false")
- return (value == "true");
-
- return value;
-};
-
-MCTabs.prototype.showTab =function(tab){
- tab.className = 'current';
- tab.setAttribute("aria-selected", true);
- tab.setAttribute("aria-expanded", true);
- tab.tabIndex = 0;
-};
-
-MCTabs.prototype.hideTab =function(tab){
- var t=this;
-
- tab.className = '';
- tab.setAttribute("aria-selected", false);
- tab.setAttribute("aria-expanded", false);
- tab.tabIndex = -1;
-};
-
-MCTabs.prototype.showPanel = function(panel) {
- panel.className = 'current';
- panel.setAttribute("aria-hidden", false);
-};
-
-MCTabs.prototype.hidePanel = function(panel) {
- panel.className = 'panel';
- panel.setAttribute("aria-hidden", true);
-};
-
-MCTabs.prototype.getPanelForTab = function(tabElm) {
- return tinyMCEPopup.dom.getAttrib(tabElm, "aria-controls");
-};
-
-MCTabs.prototype.displayTab = function(tab_id, panel_id, avoid_focus) {
- var panelElm, panelContainerElm, tabElm, tabContainerElm, selectionClass, nodes, i, t = this;
-
- tabElm = document.getElementById(tab_id);
-
- if (panel_id === undefined) {
- panel_id = t.getPanelForTab(tabElm);
- }
-
- panelElm= document.getElementById(panel_id);
- panelContainerElm = panelElm ? panelElm.parentNode : null;
- tabContainerElm = tabElm ? tabElm.parentNode : null;
- selectionClass = t.getParam('selection_class', 'current');
-
- if (tabElm && tabContainerElm) {
- nodes = tabContainerElm.childNodes;
-
- // Hide all other tabs
- for (i = 0; i < nodes.length; i++) {
- if (nodes[i].nodeName == "LI") {
- t.hideTab(nodes[i]);
- }
- }
-
- // Show selected tab
- t.showTab(tabElm);
- }
-
- if (panelElm && panelContainerElm) {
- nodes = panelContainerElm.childNodes;
-
- // Hide all other panels
- for (i = 0; i < nodes.length; i++) {
- if (nodes[i].nodeName == "DIV")
- t.hidePanel(nodes[i]);
- }
-
- if (!avoid_focus) {
- tabElm.focus();
- }
-
- // Show selected panel
- t.showPanel(panelElm);
- }
-};
-
-MCTabs.prototype.getAnchor = function() {
- var pos, url = document.location.href;
-
- if ((pos = url.lastIndexOf('#')) != -1)
- return url.substring(pos + 1);
-
- return "";
-};
-
-
-//Global instance
-var mcTabs = new MCTabs();
-
-tinyMCEPopup.onInit.add(function() {
- var tinymce = tinyMCEPopup.getWin().tinymce, dom = tinyMCEPopup.dom, each = tinymce.each;
-
- each(dom.select('div.tabs'), function(tabContainerElm) {
- var keyNav;
-
- dom.setAttrib(tabContainerElm, "role", "tablist");
-
- var items = tinyMCEPopup.dom.select('li', tabContainerElm);
- var action = function(id) {
- mcTabs.displayTab(id, mcTabs.getPanelForTab(id));
- mcTabs.onChange.dispatch(id);
- };
-
- each(items, function(item) {
- dom.setAttrib(item, 'role', 'tab');
- dom.bind(item, 'click', function(evt) {
- action(item.id);
- });
- });
-
- dom.bind(dom.getRoot(), 'keydown', function(evt) {
- if (evt.keyCode === 9 && evt.ctrlKey && !evt.altKey) { // Tab
- keyNav.moveFocus(evt.shiftKey ? -1 : 1);
- tinymce.dom.Event.cancel(evt);
- }
- });
-
- each(dom.select('a', tabContainerElm), function(a) {
- dom.setAttrib(a, 'tabindex', '-1');
- });
-
- keyNav = tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', {
- root: tabContainerElm,
- items: items,
- onAction: action,
- actOnFocus: true,
- enableLeftRight: true,
- enableUpDown: true
- }, tinyMCEPopup.dom);
- });
-}); \ No newline at end of file
diff --git a/library/tinymce/jscripts/tiny_mce/utils/validate.js b/library/tinymce/jscripts/tiny_mce/utils/validate.js
deleted file mode 100644
index 27cbfab81..000000000
--- a/library/tinymce/jscripts/tiny_mce/utils/validate.js
+++ /dev/null
@@ -1,252 +0,0 @@
-/**
- * validate.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-/**
- // String validation:
-
- if (!Validator.isEmail('myemail'))
- alert('Invalid email.');
-
- // Form validation:
-
- var f = document.forms['myform'];
-
- if (!Validator.isEmail(f.myemail))
- alert('Invalid email.');
-*/
-
-var Validator = {
- isEmail : function(s) {
- return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');
- },
-
- isAbsUrl : function(s) {
- return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');
- },
-
- isSize : function(s) {
- return this.test(s, '^[0-9.]+(%|in|cm|mm|em|ex|pt|pc|px)?$');
- },
-
- isId : function(s) {
- return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$');
- },
-
- isEmpty : function(s) {
- var nl, i;
-
- if (s.nodeName == 'SELECT' && s.selectedIndex < 1)
- return true;
-
- if (s.type == 'checkbox' && !s.checked)
- return true;
-
- if (s.type == 'radio') {
- for (i=0, nl = s.form.elements; i<nl.length; i++) {
- if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)
- return false;
- }
-
- return true;
- }
-
- return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);
- },
-
- isNumber : function(s, d) {
- return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s, '^-?[0-9]*\\.[0-9]*$'));
- },
-
- test : function(s, p) {
- s = s.nodeType == 1 ? s.value : s;
-
- return s == '' || new RegExp(p).test(s);
- }
-};
-
-var AutoValidator = {
- settings : {
- id_cls : 'id',
- int_cls : 'int',
- url_cls : 'url',
- number_cls : 'number',
- email_cls : 'email',
- size_cls : 'size',
- required_cls : 'required',
- invalid_cls : 'invalid',
- min_cls : 'min',
- max_cls : 'max'
- },
-
- init : function(s) {
- var n;
-
- for (n in s)
- this.settings[n] = s[n];
- },
-
- validate : function(f) {
- var i, nl, s = this.settings, c = 0;
-
- nl = this.tags(f, 'label');
- for (i=0; i<nl.length; i++) {
- this.removeClass(nl[i], s.invalid_cls);
- nl[i].setAttribute('aria-invalid', false);
- }
-
- c += this.validateElms(f, 'input');
- c += this.validateElms(f, 'select');
- c += this.validateElms(f, 'textarea');
-
- return c == 3;
- },
-
- invalidate : function(n) {
- this.mark(n.form, n);
- },
-
- getErrorMessages : function(f) {
- var nl, i, s = this.settings, field, msg, values, messages = [], ed = tinyMCEPopup.editor;
- nl = this.tags(f, "label");
- for (i=0; i<nl.length; i++) {
- if (this.hasClass(nl[i], s.invalid_cls)) {
- field = document.getElementById(nl[i].getAttribute("for"));
- values = { field: nl[i].textContent };
- if (this.hasClass(field, s.min_cls, true)) {
- message = ed.getLang('invalid_data_min');
- values.min = this.getNum(field, s.min_cls);
- } else if (this.hasClass(field, s.number_cls)) {
- message = ed.getLang('invalid_data_number');
- } else if (this.hasClass(field, s.size_cls)) {
- message = ed.getLang('invalid_data_size');
- } else {
- message = ed.getLang('invalid_data');
- }
-
- message = message.replace(/{\#([^}]+)\}/g, function(a, b) {
- return values[b] || '{#' + b + '}';
- });
- messages.push(message);
- }
- }
- return messages;
- },
-
- reset : function(e) {
- var t = ['label', 'input', 'select', 'textarea'];
- var i, j, nl, s = this.settings;
-
- if (e == null)
- return;
-
- for (i=0; i<t.length; i++) {
- nl = this.tags(e.form ? e.form : e, t[i]);
- for (j=0; j<nl.length; j++) {
- this.removeClass(nl[j], s.invalid_cls);
- nl[j].setAttribute('aria-invalid', false);
- }
- }
- },
-
- validateElms : function(f, e) {
- var nl, i, n, s = this.settings, st = true, va = Validator, v;
-
- nl = this.tags(f, e);
- for (i=0; i<nl.length; i++) {
- n = nl[i];
-
- this.removeClass(n, s.invalid_cls);
-
- if (this.hasClass(n, s.required_cls) && va.isEmpty(n))
- st = this.mark(f, n);
-
- if (this.hasClass(n, s.number_cls) && !va.isNumber(n))
- st = this.mark(f, n);
-
- if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true))
- st = this.mark(f, n);
-
- if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n))
- st = this.mark(f, n);
-
- if (this.hasClass(n, s.email_cls) && !va.isEmail(n))
- st = this.mark(f, n);
-
- if (this.hasClass(n, s.size_cls) && !va.isSize(n))
- st = this.mark(f, n);
-
- if (this.hasClass(n, s.id_cls) && !va.isId(n))
- st = this.mark(f, n);
-
- if (this.hasClass(n, s.min_cls, true)) {
- v = this.getNum(n, s.min_cls);
-
- if (isNaN(v) || parseInt(n.value) < parseInt(v))
- st = this.mark(f, n);
- }
-
- if (this.hasClass(n, s.max_cls, true)) {
- v = this.getNum(n, s.max_cls);
-
- if (isNaN(v) || parseInt(n.value) > parseInt(v))
- st = this.mark(f, n);
- }
- }
-
- return st;
- },
-
- hasClass : function(n, c, d) {
- return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className);
- },
-
- getNum : function(n, c) {
- c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0];
- c = c.replace(/[^0-9]/g, '');
-
- return c;
- },
-
- addClass : function(n, c, b) {
- var o = this.removeClass(n, c);
- n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c;
- },
-
- removeClass : function(n, c) {
- c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');
- return n.className = c != ' ' ? c : '';
- },
-
- tags : function(f, s) {
- return f.getElementsByTagName(s);
- },
-
- mark : function(f, n) {
- var s = this.settings;
-
- this.addClass(n, s.invalid_cls);
- n.setAttribute('aria-invalid', 'true');
- this.markLabels(f, n, s.invalid_cls);
-
- return false;
- },
-
- markLabels : function(f, n, ic) {
- var nl, i;
-
- nl = this.tags(f, "label");
- for (i=0; i<nl.length; i++) {
- if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id)
- this.addClass(nl[i], ic);
- }
-
- return null;
- }
-};
diff --git a/util/addons b/util/addons
index 8fcd40cbc..150a7ca09 100755
--- a/util/addons
+++ b/util/addons
@@ -17,7 +17,6 @@ EOT;
require_once('include/cli_startup.php');
cli_startup();
-$a = get_app();
$plugs = get_config('system', 'addon');
$plugins_arr = array();
diff --git a/util/fresh b/util/fresh
index c70f1cac9..9d74ea584 100755
--- a/util/fresh
+++ b/util/fresh
@@ -68,9 +68,9 @@ function process_command($line) {
case 'finger':
if(argv(1)) {
- $x = zot_finger(argv(1),$channel);
+ $x = Zotlabs\Zot\Finger::run(argv(1),$channel);
if($x['success'])
- echo jindent($x['body']);
+ echo jindent($x);
}
break;
diff --git a/util/hmessages.po b/util/hmessages.po
index 8b3d88f07..2ec494c7c 100644
--- a/util/hmessages.po
+++ b/util/hmessages.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-06 00:01-0700\n"
+"POT-Creation-Date: 2016-06-10 00:02-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -21,7 +21,7 @@ msgstr ""
msgid "parent"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2635
+#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2620
msgid "Collection"
msgstr ""
@@ -45,16 +45,16 @@ msgstr ""
msgid "Schedule Outbox"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Module/Photos.php:797
-#: ../../Zotlabs/Module/Photos.php:1242 ../../include/apps.php:441
-#: ../../include/apps.php:516 ../../include/widgets.php:1506
-#: ../../include/conversation.php:1037
+#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Module/Photos.php:798
+#: ../../Zotlabs/Module/Photos.php:1243 ../../Zotlabs/Lib/Apps.php:486
+#: ../../Zotlabs/Lib/Apps.php:561 ../../include/widgets.php:1505
+#: ../../include/conversation.php:1032
msgid "Unknown"
msgstr ""
#: ../../Zotlabs/Storage/Browser.php:226 ../../Zotlabs/Module/Fbrowser.php:85
-#: ../../include/apps.php:167 ../../include/conversation.php:1649
-#: ../../include/nav.php:93
+#: ../../Zotlabs/Lib/Apps.php:216 ../../include/nav.php:93
+#: ../../include/conversation.php:1639
msgid "Files"
msgstr ""
@@ -66,23 +66,23 @@ msgstr ""
msgid "Shared"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:303
-#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:182
+#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:306
+#: ../../Zotlabs/Module/Blocks.php:156 ../../Zotlabs/Module/Layouts.php:182
#: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/New_channel.php:142
-#: ../../Zotlabs/Module/Webpages.php:188
+#: ../../Zotlabs/Module/Webpages.php:186
msgid "Create"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:305
+#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:308
#: ../../Zotlabs/Module/Cover_photo.php:357
-#: ../../Zotlabs/Module/Photos.php:824 ../../Zotlabs/Module/Photos.php:1366
-#: ../../Zotlabs/Module/Profile_photo.php:368 ../../include/widgets.php:1519
+#: ../../Zotlabs/Module/Photos.php:825 ../../Zotlabs/Module/Photos.php:1364
+#: ../../Zotlabs/Module/Profile_photo.php:368 ../../include/widgets.php:1518
msgid "Upload"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:235 ../../Zotlabs/Module/Admin.php:1180
-#: ../../Zotlabs/Module/Chat.php:245 ../../Zotlabs/Module/Settings.php:590
-#: ../../Zotlabs/Module/Settings.php:616
+#: ../../Zotlabs/Storage/Browser.php:235 ../../Zotlabs/Module/Chat.php:247
+#: ../../Zotlabs/Module/Admin.php:1223 ../../Zotlabs/Module/Settings.php:592
+#: ../../Zotlabs/Module/Settings.php:618
#: ../../Zotlabs/Module/Sharedwithme.php:99
msgid "Name"
msgstr ""
@@ -92,7 +92,7 @@ msgid "Type"
msgstr ""
#: ../../Zotlabs/Storage/Browser.php:237
-#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1322
+#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1344
msgid "Size"
msgstr ""
@@ -101,121 +101,127 @@ msgstr ""
msgid "Last Modified"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Admin.php:1796
-#: ../../Zotlabs/Module/Blocks.php:159
+#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Blocks.php:157
+#: ../../Zotlabs/Module/Editblock.php:109
#: ../../Zotlabs/Module/Connections.php:290
#: ../../Zotlabs/Module/Connections.php:310
-#: ../../Zotlabs/Module/Editblock.php:136
-#: ../../Zotlabs/Module/Editlayout.php:113
#: ../../Zotlabs/Module/Editpost.php:84
-#: ../../Zotlabs/Module/Editwebpage.php:181
+#: ../../Zotlabs/Module/Editlayout.php:113
+#: ../../Zotlabs/Module/Editwebpage.php:146
#: ../../Zotlabs/Module/Layouts.php:190 ../../Zotlabs/Module/Menu.php:112
-#: ../../Zotlabs/Module/Settings.php:650 ../../Zotlabs/Module/Thing.php:260
-#: ../../Zotlabs/Module/Webpages.php:189 ../../include/identity.php:937
-#: ../../include/identity.php:941 ../../include/apps.php:291
-#: ../../include/ItemObject.php:100 ../../include/menu.php:108
-#: ../../include/page_widgets.php:8 ../../include/page_widgets.php:36
+#: ../../Zotlabs/Module/Admin.php:2113 ../../Zotlabs/Module/Settings.php:652
+#: ../../Zotlabs/Module/Thing.php:260 ../../Zotlabs/Module/Webpages.php:187
+#: ../../Zotlabs/Lib/Apps.php:337 ../../Zotlabs/Lib/ThreadItem.php:106
+#: ../../include/channel.php:937 ../../include/channel.php:941
+#: ../../include/menu.php:108 ../../include/page_widgets.php:8
+#: ../../include/page_widgets.php:36
msgid "Edit"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:241 ../../Zotlabs/Module/Admin.php:1015
-#: ../../Zotlabs/Module/Admin.php:1174 ../../Zotlabs/Module/Admin.php:1797
-#: ../../Zotlabs/Module/Blocks.php:161
+#: ../../Zotlabs/Storage/Browser.php:241 ../../Zotlabs/Module/Blocks.php:159
+#: ../../Zotlabs/Module/Connedit.php:572
+#: ../../Zotlabs/Module/Editblock.php:134
#: ../../Zotlabs/Module/Connections.php:263
-#: ../../Zotlabs/Module/Connedit.php:573
-#: ../../Zotlabs/Module/Editblock.php:176
#: ../../Zotlabs/Module/Editlayout.php:136
-#: ../../Zotlabs/Module/Editwebpage.php:221 ../../Zotlabs/Module/Group.php:177
-#: ../../Zotlabs/Module/Photos.php:1172 ../../Zotlabs/Module/Settings.php:651
-#: ../../Zotlabs/Module/Thing.php:261 ../../Zotlabs/Module/Webpages.php:191
-#: ../../include/apps.php:292 ../../include/ItemObject.php:120
-#: ../../include/conversation.php:657
+#: ../../Zotlabs/Module/Editwebpage.php:170 ../../Zotlabs/Module/Group.php:177
+#: ../../Zotlabs/Module/Photos.php:1173 ../../Zotlabs/Module/Admin.php:1039
+#: ../../Zotlabs/Module/Admin.php:1213 ../../Zotlabs/Module/Admin.php:2114
+#: ../../Zotlabs/Module/Settings.php:653 ../../Zotlabs/Module/Thing.php:261
+#: ../../Zotlabs/Module/Webpages.php:189 ../../Zotlabs/Lib/Apps.php:338
+#: ../../Zotlabs/Lib/ThreadItem.php:126 ../../include/conversation.php:657
msgid "Delete"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:282
+#: ../../Zotlabs/Storage/Browser.php:285
#, php-format
msgid "You are using %1$s of your available file storage."
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:287
+#: ../../Zotlabs/Storage/Browser.php:290
#, php-format
msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:299
+#: ../../Zotlabs/Storage/Browser.php:302
msgid "WARNING:"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:302
+#: ../../Zotlabs/Storage/Browser.php:305
msgid "Create new folder"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:304
+#: ../../Zotlabs/Storage/Browser.php:307
msgid "Upload file"
msgstr ""
-#: ../../Zotlabs/Web/Router.php:65 ../../Zotlabs/Module/Achievements.php:34
-#: ../../Zotlabs/Module/Api.php:13 ../../Zotlabs/Module/Api.php:18
-#: ../../Zotlabs/Module/Appman.php:74 ../../Zotlabs/Module/Authtest.php:16
-#: ../../Zotlabs/Module/Block.php:26 ../../Zotlabs/Module/Block.php:76
-#: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80
-#: ../../Zotlabs/Module/Bookmarks.php:61 ../../Zotlabs/Module/Channel.php:104
-#: ../../Zotlabs/Module/Channel.php:224 ../../Zotlabs/Module/Channel.php:264
-#: ../../Zotlabs/Module/Chat.php:98 ../../Zotlabs/Module/Chat.php:103
+#: ../../Zotlabs/Web/WebServer.php:120 ../../Zotlabs/Module/Dreport.php:10
+#: ../../Zotlabs/Module/Dreport.php:49 ../../Zotlabs/Module/Group.php:72
+#: ../../Zotlabs/Module/Like.php:284 ../../Zotlabs/Module/Import_items.php:112
+#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:62
+#: ../../include/items.php:385
+msgid "Permission denied"
+msgstr ""
+
+#: ../../Zotlabs/Web/WebServer.php:121 ../../Zotlabs/Web/Router.php:65
+#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Blocks.php:73
+#: ../../Zotlabs/Module/Blocks.php:80 ../../Zotlabs/Module/Channel.php:105
+#: ../../Zotlabs/Module/Channel.php:226 ../../Zotlabs/Module/Channel.php:267
+#: ../../Zotlabs/Module/Chat.php:100 ../../Zotlabs/Module/Chat.php:105
+#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Block.php:26
+#: ../../Zotlabs/Module/Block.php:76 ../../Zotlabs/Module/Bookmarks.php:61
+#: ../../Zotlabs/Module/Connedit.php:366 ../../Zotlabs/Module/Editblock.php:67
#: ../../Zotlabs/Module/Common.php:39 ../../Zotlabs/Module/Connections.php:33
-#: ../../Zotlabs/Module/Connedit.php:366
#: ../../Zotlabs/Module/Cover_photo.php:277
#: ../../Zotlabs/Module/Cover_photo.php:290
-#: ../../Zotlabs/Module/Editblock.php:66
+#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Events.php:265
#: ../../Zotlabs/Module/Editlayout.php:67
-#: ../../Zotlabs/Module/Editlayout.php:90 ../../Zotlabs/Module/Editpost.php:17
-#: ../../Zotlabs/Module/Editwebpage.php:68
+#: ../../Zotlabs/Module/Editlayout.php:90
+#: ../../Zotlabs/Module/Editwebpage.php:69
#: ../../Zotlabs/Module/Editwebpage.php:90
#: ../../Zotlabs/Module/Editwebpage.php:105
-#: ../../Zotlabs/Module/Editwebpage.php:129
-#: ../../Zotlabs/Module/Events.php:264 ../../Zotlabs/Module/Filestorage.php:22
-#: ../../Zotlabs/Module/Filestorage.php:77
-#: ../../Zotlabs/Module/Filestorage.php:92
-#: ../../Zotlabs/Module/Filestorage.php:119
-#: ../../Zotlabs/Module/Fsuggest.php:82 ../../Zotlabs/Module/Group.php:13
-#: ../../Zotlabs/Module/Id.php:76 ../../Zotlabs/Module/Invite.php:17
-#: ../../Zotlabs/Module/Invite.php:91 ../../Zotlabs/Module/Item.php:210
+#: ../../Zotlabs/Module/Editwebpage.php:127 ../../Zotlabs/Module/Group.php:13
+#: ../../Zotlabs/Module/Api.php:13 ../../Zotlabs/Module/Api.php:18
+#: ../../Zotlabs/Module/Filestorage.php:24
+#: ../../Zotlabs/Module/Filestorage.php:79
+#: ../../Zotlabs/Module/Filestorage.php:94
+#: ../../Zotlabs/Module/Filestorage.php:121 ../../Zotlabs/Module/Item.php:210
#: ../../Zotlabs/Module/Item.php:218 ../../Zotlabs/Module/Item.php:1070
#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78
-#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Like.php:181
-#: ../../Zotlabs/Module/Locs.php:87 ../../Zotlabs/Module/Mail.php:130
-#: ../../Zotlabs/Module/Manage.php:10 ../../Zotlabs/Module/Menu.php:78
-#: ../../Zotlabs/Module/Message.php:20 ../../Zotlabs/Module/Mitem.php:115
-#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Network.php:16
-#: ../../Zotlabs/Module/New_channel.php:77
+#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Id.php:76
+#: ../../Zotlabs/Module/Like.php:181 ../../Zotlabs/Module/Invite.php:17
+#: ../../Zotlabs/Module/Invite.php:91 ../../Zotlabs/Module/Locs.php:87
+#: ../../Zotlabs/Module/Mail.php:129 ../../Zotlabs/Module/Manage.php:10
+#: ../../Zotlabs/Module/Menu.php:78 ../../Zotlabs/Module/Message.php:18
+#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Network.php:17
+#: ../../Zotlabs/Module/Mitem.php:115 ../../Zotlabs/Module/New_channel.php:77
#: ../../Zotlabs/Module/New_channel.php:104
-#: ../../Zotlabs/Module/Notifications.php:70 ../../Zotlabs/Module/Page.php:35
+#: ../../Zotlabs/Module/Notifications.php:70
+#: ../../Zotlabs/Module/Photos.php:75 ../../Zotlabs/Module/Page.php:35
#: ../../Zotlabs/Module/Page.php:90 ../../Zotlabs/Module/Pdledit.php:26
-#: ../../Zotlabs/Module/Photos.php:74 ../../Zotlabs/Module/Poke.php:137
-#: ../../Zotlabs/Module/Profile.php:68 ../../Zotlabs/Module/Profile.php:76
+#: ../../Zotlabs/Module/Poke.php:137 ../../Zotlabs/Module/Profile.php:68
+#: ../../Zotlabs/Module/Profile.php:76 ../../Zotlabs/Module/Profiles.php:203
+#: ../../Zotlabs/Module/Profiles.php:601
#: ../../Zotlabs/Module/Profile_photo.php:256
#: ../../Zotlabs/Module/Profile_photo.php:269
-#: ../../Zotlabs/Module/Profiles.php:202 ../../Zotlabs/Module/Profiles.php:600
-#: ../../Zotlabs/Module/Rate.php:115 ../../Zotlabs/Module/Register.php:77
-#: ../../Zotlabs/Module/Regmod.php:21
+#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Appman.php:75
+#: ../../Zotlabs/Module/Register.php:77 ../../Zotlabs/Module/Regmod.php:21
#: ../../Zotlabs/Module/Service_limits.php:11
-#: ../../Zotlabs/Module/Settings.php:570 ../../Zotlabs/Module/Setup.php:238
+#: ../../Zotlabs/Module/Settings.php:572 ../../Zotlabs/Module/Setup.php:215
#: ../../Zotlabs/Module/Sharedwithme.php:11
#: ../../Zotlabs/Module/Sources.php:74 ../../Zotlabs/Module/Suggest.php:30
#: ../../Zotlabs/Module/Thing.php:274 ../../Zotlabs/Module/Thing.php:294
#: ../../Zotlabs/Module/Thing.php:331
-#: ../../Zotlabs/Module/Viewconnections.php:26
-#: ../../Zotlabs/Module/Viewconnections.php:31
-#: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Webpages.php:73
-#: ../../include/photos.php:29 ../../include/chat.php:133
-#: ../../include/items.php:4705 ../../include/attach.php:141
-#: ../../include/attach.php:189 ../../include/attach.php:252
-#: ../../include/attach.php:266 ../../include/attach.php:273
-#: ../../include/attach.php:338 ../../include/attach.php:352
-#: ../../include/attach.php:359 ../../include/attach.php:437
-#: ../../include/attach.php:895 ../../include/attach.php:966
-#: ../../include/attach.php:1118 ../../index.php:174
+#: ../../Zotlabs/Module/Viewconnections.php:25
+#: ../../Zotlabs/Module/Viewconnections.php:30
+#: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Webpages.php:74
+#: ../../Zotlabs/Lib/Chatroom.php:137 ../../include/items.php:3438
+#: ../../include/attach.php:141 ../../include/attach.php:189
+#: ../../include/attach.php:252 ../../include/attach.php:266
+#: ../../include/attach.php:273 ../../include/attach.php:338
+#: ../../include/attach.php:352 ../../include/attach.php:359
+#: ../../include/attach.php:437 ../../include/attach.php:895
+#: ../../include/attach.php:966 ../../include/attach.php:1118
+#: ../../include/photos.php:27
msgid "Permission denied."
msgstr ""
@@ -224,30 +230,30 @@ msgid "Not Found"
msgstr ""
#: ../../Zotlabs/Web/Router.php:149 ../../Zotlabs/Module/Block.php:79
-#: ../../Zotlabs/Module/Display.php:121 ../../Zotlabs/Module/Help.php:97
+#: ../../Zotlabs/Module/Display.php:117 ../../Zotlabs/Module/Help.php:97
#: ../../Zotlabs/Module/Page.php:93
msgid "Page not found."
msgstr ""
-#: ../../Zotlabs/Zot/Auth.php:140
+#: ../../Zotlabs/Zot/Auth.php:138
msgid ""
"Remote authentication blocked. You are logged into this site locally. Please "
"logout and retry."
msgstr ""
-#: ../../Zotlabs/Zot/Auth.php:248 ../../Zotlabs/Module/Openid.php:76
+#: ../../Zotlabs/Zot/Auth.php:246 ../../Zotlabs/Module/Openid.php:76
#: ../../Zotlabs/Module/Openid.php:183
#, php-format
msgid "Welcome %s. Remote authentication successful."
msgstr ""
#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Blocks.php:33
-#: ../../Zotlabs/Module/Connect.php:17 ../../Zotlabs/Module/Editblock.php:30
+#: ../../Zotlabs/Module/Connect.php:17 ../../Zotlabs/Module/Editblock.php:31
#: ../../Zotlabs/Module/Editlayout.php:31
-#: ../../Zotlabs/Module/Editwebpage.php:32
-#: ../../Zotlabs/Module/Filestorage.php:58 ../../Zotlabs/Module/Hcard.php:12
+#: ../../Zotlabs/Module/Editwebpage.php:33
+#: ../../Zotlabs/Module/Filestorage.php:60 ../../Zotlabs/Module/Hcard.php:12
#: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Profile.php:20
-#: ../../Zotlabs/Module/Webpages.php:33 ../../include/identity.php:837
+#: ../../Zotlabs/Module/Webpages.php:34 ../../include/channel.php:837
msgid "Requested profile is not available."
msgstr ""
@@ -255,1380 +261,779 @@ msgstr ""
msgid "Some blurb about what to do when you're new here"
msgstr ""
-#: ../../Zotlabs/Module/Acl.php:225
-msgid "network"
-msgstr ""
-
-#: ../../Zotlabs/Module/Acl.php:235
-msgid "RSS"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:58
-msgid "Theme settings updated."
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:145 ../../Zotlabs/Module/Admin.php:1211
-#: ../../Zotlabs/Module/Admin.php:1463 ../../Zotlabs/Module/Display.php:44
-#: ../../Zotlabs/Module/Filestorage.php:31 ../../Zotlabs/Module/Thing.php:89
-#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:4626
-msgid "Item not found."
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:178
-msgid "# Accounts"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:179
-msgid "# blocked accounts"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:180
-msgid "# expired accounts"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:181
-msgid "# expiring accounts"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:192
-msgid "# Channels"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:193
-msgid "# primary"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:194
-msgid "# clones"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:200
-msgid "Message queues"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:216 ../../Zotlabs/Module/Admin.php:462
-#: ../../Zotlabs/Module/Admin.php:683 ../../Zotlabs/Module/Admin.php:727
-#: ../../Zotlabs/Module/Admin.php:1006 ../../Zotlabs/Module/Admin.php:1170
-#: ../../Zotlabs/Module/Admin.php:1285 ../../Zotlabs/Module/Admin.php:1348
-#: ../../Zotlabs/Module/Admin.php:1514 ../../Zotlabs/Module/Admin.php:1548
-#: ../../Zotlabs/Module/Admin.php:1633
-msgid "Administration"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:217
-msgid "Summary"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:220
-msgid "Registered accounts"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:221 ../../Zotlabs/Module/Admin.php:687
-msgid "Pending registrations"
+#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:152
+#: ../../Zotlabs/Module/Editblock.php:108
+msgid "Block Name"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:222
-msgid "Registered channels"
+#: ../../Zotlabs/Module/Blocks.php:151 ../../include/text.php:2265
+msgid "Blocks"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:223 ../../Zotlabs/Module/Admin.php:688
-msgid "Active plugins"
+#: ../../Zotlabs/Module/Blocks.php:153
+msgid "Block Title"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:224
-msgid "Version"
+#: ../../Zotlabs/Module/Blocks.php:154 ../../Zotlabs/Module/Layouts.php:188
+#: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Webpages.php:198
+#: ../../include/page_widgets.php:44
+msgid "Created"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:345
-msgid "Site settings updated."
+#: ../../Zotlabs/Module/Blocks.php:155 ../../Zotlabs/Module/Layouts.php:189
+#: ../../Zotlabs/Module/Menu.php:115 ../../Zotlabs/Module/Webpages.php:199
+#: ../../include/page_widgets.php:45
+msgid "Edited"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:372 ../../include/text.php:2856
-msgid "Default"
+#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:191
+#: ../../Zotlabs/Module/Photos.php:1072 ../../Zotlabs/Module/Webpages.php:188
+#: ../../include/conversation.php:1208
+msgid "Share"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:382 ../../Zotlabs/Module/Settings.php:796
-msgid "mobile"
+#: ../../Zotlabs/Module/Blocks.php:163 ../../Zotlabs/Module/Layouts.php:195
+#: ../../Zotlabs/Module/Pubsites.php:47 ../../Zotlabs/Module/Webpages.php:193
+#: ../../include/page_widgets.php:39
+msgid "View"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:384
-msgid "experimental"
+#: ../../Zotlabs/Module/Cal.php:62 ../../Zotlabs/Module/Block.php:43
+#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Wall_upload.php:33
+msgid "Channel not found."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:386
-msgid "unsupported"
+#: ../../Zotlabs/Module/Cal.php:69
+msgid "Permissions denied."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:431 ../../Zotlabs/Module/Api.php:89
-#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Connedit.php:657
-#: ../../Zotlabs/Module/Events.php:458 ../../Zotlabs/Module/Events.php:459
-#: ../../Zotlabs/Module/Events.php:468
-#: ../../Zotlabs/Module/Filestorage.php:155
-#: ../../Zotlabs/Module/Filestorage.php:163 ../../Zotlabs/Module/Menu.php:100
-#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
-#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
-#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:665
-#: ../../Zotlabs/Module/Profiles.php:651 ../../Zotlabs/Module/Removeme.php:64
-#: ../../Zotlabs/Module/Settings.php:579 ../../include/dir_fns.php:141
-#: ../../include/dir_fns.php:142 ../../include/dir_fns.php:143
-#: ../../view/theme/redbasic/php/config.php:105
-#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1619
-msgid "No"
+#: ../../Zotlabs/Module/Cal.php:259 ../../Zotlabs/Module/Events.php:588
+msgid "l, F j"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:432
-msgid "Yes - with approval"
+#: ../../Zotlabs/Module/Cal.php:308 ../../Zotlabs/Module/Events.php:637
+#: ../../include/text.php:1732
+msgid "Link to Source"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:433 ../../Zotlabs/Module/Api.php:88
-#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Events.php:458
-#: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:468
-#: ../../Zotlabs/Module/Filestorage.php:155
-#: ../../Zotlabs/Module/Filestorage.php:163 ../../Zotlabs/Module/Menu.php:100
-#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
-#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
-#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:665
-#: ../../Zotlabs/Module/Profiles.php:651 ../../Zotlabs/Module/Removeme.php:64
-#: ../../Zotlabs/Module/Settings.php:579 ../../include/dir_fns.php:141
-#: ../../include/dir_fns.php:142 ../../include/dir_fns.php:143
-#: ../../view/theme/redbasic/php/config.php:105
-#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1619
-msgid "Yes"
+#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:665
+msgid "Edit Event"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:438
-msgid "My site is not a public server"
+#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:665
+msgid "Create Event"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:439
-msgid "My site has paid access only"
+#: ../../Zotlabs/Module/Cal.php:332 ../../Zotlabs/Module/Cal.php:339
+#: ../../Zotlabs/Module/Events.php:666 ../../Zotlabs/Module/Events.php:673
+#: ../../Zotlabs/Module/Photos.php:949
+msgid "Previous"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:440
-msgid "My site has free access only"
+#: ../../Zotlabs/Module/Cal.php:333 ../../Zotlabs/Module/Cal.php:340
+#: ../../Zotlabs/Module/Events.php:667 ../../Zotlabs/Module/Events.php:674
+#: ../../Zotlabs/Module/Photos.php:958 ../../Zotlabs/Module/Setup.php:267
+msgid "Next"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:441
-msgid "My site offers free accounts with optional paid upgrades"
+#: ../../Zotlabs/Module/Cal.php:334 ../../Zotlabs/Module/Events.php:668
+#: ../../include/widgets.php:755
+msgid "Export"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:463 ../../include/widgets.php:1383
-msgid "Site"
+#: ../../Zotlabs/Module/Cal.php:337 ../../Zotlabs/Module/Events.php:671
+#: ../../include/widgets.php:756
+msgid "Import"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:464 ../../Zotlabs/Module/Admin.php:660
-#: ../../Zotlabs/Module/Admin.php:743 ../../Zotlabs/Module/Admin.php:1008
-#: ../../Zotlabs/Module/Admin.php:1172 ../../Zotlabs/Module/Admin.php:1350
-#: ../../Zotlabs/Module/Admin.php:1550 ../../Zotlabs/Module/Admin.php:1635
-#: ../../Zotlabs/Module/Admin.php:1799 ../../Zotlabs/Module/Appman.php:125
-#: ../../Zotlabs/Module/Cal.php:341 ../../Zotlabs/Module/Chat.php:194
-#: ../../Zotlabs/Module/Chat.php:236 ../../Zotlabs/Module/Connect.php:97
-#: ../../Zotlabs/Module/Connedit.php:734 ../../Zotlabs/Module/Events.php:472
-#: ../../Zotlabs/Module/Events.php:669
-#: ../../Zotlabs/Module/Filestorage.php:160
-#: ../../Zotlabs/Module/Fsuggest.php:112 ../../Zotlabs/Module/Group.php:85
-#: ../../Zotlabs/Module/Import.php:546
+#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Chat.php:196
+#: ../../Zotlabs/Module/Chat.php:238 ../../Zotlabs/Module/Connect.php:98
+#: ../../Zotlabs/Module/Connedit.php:731 ../../Zotlabs/Module/Events.php:475
+#: ../../Zotlabs/Module/Events.php:672 ../../Zotlabs/Module/Group.php:85
+#: ../../Zotlabs/Module/Filestorage.php:162
+#: ../../Zotlabs/Module/Import.php:550
#: ../../Zotlabs/Module/Import_items.php:120
#: ../../Zotlabs/Module/Invite.php:146 ../../Zotlabs/Module/Locs.php:121
-#: ../../Zotlabs/Module/Mail.php:384 ../../Zotlabs/Module/Mitem.php:235
-#: ../../Zotlabs/Module/Mood.php:139 ../../Zotlabs/Module/Pconfig.php:107
-#: ../../Zotlabs/Module/Pdledit.php:66 ../../Zotlabs/Module/Photos.php:676
-#: ../../Zotlabs/Module/Photos.php:1051 ../../Zotlabs/Module/Photos.php:1091
-#: ../../Zotlabs/Module/Photos.php:1209 ../../Zotlabs/Module/Poke.php:186
-#: ../../Zotlabs/Module/Profiles.php:691 ../../Zotlabs/Module/Rate.php:172
-#: ../../Zotlabs/Module/Settings.php:588 ../../Zotlabs/Module/Settings.php:701
-#: ../../Zotlabs/Module/Settings.php:729 ../../Zotlabs/Module/Settings.php:752
-#: ../../Zotlabs/Module/Settings.php:840
-#: ../../Zotlabs/Module/Settings.php:1032 ../../Zotlabs/Module/Setup.php:335
-#: ../../Zotlabs/Module/Setup.php:376 ../../Zotlabs/Module/Sources.php:114
+#: ../../Zotlabs/Module/Mail.php:378 ../../Zotlabs/Module/Mood.php:139
+#: ../../Zotlabs/Module/Mitem.php:235 ../../Zotlabs/Module/Photos.php:677
+#: ../../Zotlabs/Module/Photos.php:1052 ../../Zotlabs/Module/Photos.php:1092
+#: ../../Zotlabs/Module/Photos.php:1210 ../../Zotlabs/Module/Pconfig.php:107
+#: ../../Zotlabs/Module/Pdledit.php:66 ../../Zotlabs/Module/Poke.php:186
+#: ../../Zotlabs/Module/Profiles.php:687 ../../Zotlabs/Module/Rate.php:170
+#: ../../Zotlabs/Module/Admin.php:492 ../../Zotlabs/Module/Admin.php:688
+#: ../../Zotlabs/Module/Admin.php:771 ../../Zotlabs/Module/Admin.php:1032
+#: ../../Zotlabs/Module/Admin.php:1211 ../../Zotlabs/Module/Admin.php:1421
+#: ../../Zotlabs/Module/Admin.php:1648 ../../Zotlabs/Module/Admin.php:1733
+#: ../../Zotlabs/Module/Admin.php:2116 ../../Zotlabs/Module/Appman.php:126
+#: ../../Zotlabs/Module/Settings.php:590 ../../Zotlabs/Module/Settings.php:703
+#: ../../Zotlabs/Module/Settings.php:731 ../../Zotlabs/Module/Settings.php:754
+#: ../../Zotlabs/Module/Settings.php:842
+#: ../../Zotlabs/Module/Settings.php:1034 ../../Zotlabs/Module/Setup.php:312
+#: ../../Zotlabs/Module/Setup.php:353 ../../Zotlabs/Module/Sources.php:114
#: ../../Zotlabs/Module/Sources.php:149 ../../Zotlabs/Module/Thing.php:316
#: ../../Zotlabs/Module/Thing.php:362 ../../Zotlabs/Module/Xchan.php:15
-#: ../../include/widgets.php:757 ../../include/widgets.php:769
-#: ../../include/ItemObject.php:703 ../../include/js_strings.php:22
+#: ../../Zotlabs/Lib/ThreadItem.php:710 ../../include/widgets.php:757
+#: ../../include/widgets.php:769 ../../include/js_strings.php:22
#: ../../view/theme/redbasic/php/config.php:99
msgid "Submit"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:465 ../../Zotlabs/Module/Register.php:245
-msgid "Registration"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:466
-msgid "File upload"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:467
-msgid "Policies"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:468 ../../include/contact_widgets.php:19
-msgid "Advanced"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:472
-msgid "Site name"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:473
-msgid "Banner/Logo"
+#: ../../Zotlabs/Module/Cal.php:341 ../../Zotlabs/Module/Events.php:675
+msgid "Today"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:474
-msgid "Administrator Information"
+#: ../../Zotlabs/Module/Channel.php:29 ../../Zotlabs/Module/Chat.php:25
+msgid "You must be logged in to see this page."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:474
-msgid ""
-"Contact information for site administrators. Displayed on siteinfo page. "
-"BBCode can be used here"
+#: ../../Zotlabs/Module/Channel.php:41
+msgid "Posts and comments"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:475
-msgid "System language"
+#: ../../Zotlabs/Module/Channel.php:42
+msgid "Only posts"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:476
-msgid "System theme"
+#: ../../Zotlabs/Module/Channel.php:102
+msgid "Insufficient permissions. Request redirected to profile page."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:476
-msgid ""
-"Default system theme - may be over-ridden by user profiles - <a href='#' "
-"id='cnftheme'>change theme settings</a>"
+#: ../../Zotlabs/Module/Chat.php:181
+msgid "Room not found"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:477
-msgid "Mobile system theme"
+#: ../../Zotlabs/Module/Chat.php:197
+msgid "Leave Room"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:477
-msgid "Theme for mobile devices"
+#: ../../Zotlabs/Module/Chat.php:198
+msgid "Delete Room"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:479
-msgid "Allow Feeds as Connections"
+#: ../../Zotlabs/Module/Chat.php:199
+msgid "I am away right now"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:479
-msgid "(Heavy system resource usage)"
+#: ../../Zotlabs/Module/Chat.php:200
+msgid "I am online"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:480
-msgid "Maximum image size"
+#: ../../Zotlabs/Module/Chat.php:202
+msgid "Bookmark this room"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:480
-msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
+#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Mail.php:205
+#: ../../Zotlabs/Module/Mail.php:314 ../../include/conversation.php:1176
+msgid "Please enter a link URL:"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:481
-msgid "Does this site allow new member registration?"
+#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Module/Mail.php:258
+#: ../../Zotlabs/Module/Mail.php:383 ../../Zotlabs/Lib/ThreadItem.php:722
+#: ../../include/conversation.php:1256
+msgid "Encrypt text"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:482
-msgid "Invitation only"
+#: ../../Zotlabs/Module/Chat.php:207 ../../Zotlabs/Module/Editblock.php:111
+#: ../../Zotlabs/Module/Editwebpage.php:147 ../../Zotlabs/Module/Mail.php:252
+#: ../../Zotlabs/Module/Mail.php:377 ../../include/conversation.php:1143
+msgid "Insert web link"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:482
-msgid ""
-"Only allow new member registrations with an invitation code. Above register "
-"policy must be set to Yes."
+#: ../../Zotlabs/Module/Chat.php:218
+msgid "Feature disabled."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:483
-msgid "Which best describes the types of account offered by this hub?"
+#: ../../Zotlabs/Module/Chat.php:232
+msgid "New Chatroom"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:484
-msgid "Register text"
+#: ../../Zotlabs/Module/Chat.php:233
+msgid "Chatroom name"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:484
-msgid "Will be displayed prominently on the registration page."
+#: ../../Zotlabs/Module/Chat.php:234
+msgid "Expiration of chats (minutes)"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:485
-msgid "Site homepage to show visitors (default: login box)"
+#: ../../Zotlabs/Module/Chat.php:235 ../../Zotlabs/Module/Filestorage.php:153
+#: ../../Zotlabs/Module/Photos.php:671 ../../Zotlabs/Module/Photos.php:1045
+#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:359
+#: ../../include/acl_selectors.php:283
+msgid "Permissions"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:485
-msgid ""
-"example: 'public' to show public stream, 'page/sys/home' to show a system "
-"webpage called 'home' or 'include:home.html' to include a file."
+#: ../../Zotlabs/Module/Chat.php:246
+#, php-format
+msgid "%1$s's Chatrooms"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:486
-msgid "Preserve site homepage URL"
+#: ../../Zotlabs/Module/Chat.php:251
+msgid "No chatrooms available"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:486
-msgid ""
-"Present the site homepage in a frame at the original location instead of "
-"redirecting"
+#: ../../Zotlabs/Module/Chat.php:252 ../../Zotlabs/Module/Manage.php:143
+#: ../../Zotlabs/Module/Profiles.php:778
+msgid "Create New"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:487
-msgid "Accounts abandoned after x days"
+#: ../../Zotlabs/Module/Chat.php:255
+msgid "Expiration"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:487
-msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
+#: ../../Zotlabs/Module/Chat.php:256
+msgid "min"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:488
-msgid "Allowed friend domains"
+#: ../../Zotlabs/Module/Chatsvc.php:117
+msgid "Away"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:488
-msgid ""
-"Comma separated list of domains which are allowed to establish friendships "
-"with this site. Wildcards are accepted. Empty to allow any domains"
+#: ../../Zotlabs/Module/Chatsvc.php:122
+msgid "Online"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:489
-msgid "Allowed email domains"
+#: ../../Zotlabs/Module/Block.php:31 ../../Zotlabs/Module/Page.php:40
+msgid "Invalid item."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:489
-msgid ""
-"Comma separated list of domains which are allowed in email addresses for "
-"registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains"
+#: ../../Zotlabs/Module/Bookmarks.php:53
+msgid "Bookmark added"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:490
-msgid "Not allowed email domains"
+#: ../../Zotlabs/Module/Bookmarks.php:75
+msgid "My Bookmarks"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:490
-msgid ""
-"Comma separated list of domains which are not allowed in email addresses for "
-"registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains, unless allowed domains have been defined."
+#: ../../Zotlabs/Module/Bookmarks.php:86
+msgid "My Connections Bookmarks"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:491
-msgid "Verify Email Addresses"
+#: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109
+msgid "Continue"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:491
-msgid ""
-"Check to verify email addresses used in account registration (recommended)."
+#: ../../Zotlabs/Module/Connect.php:90
+msgid "Premium Channel Setup"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:492
-msgid "Force publish"
+#: ../../Zotlabs/Module/Connect.php:92
+msgid "Enable premium channel connection restrictions"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:492
+#: ../../Zotlabs/Module/Connect.php:93
msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:493
-msgid "Import Public Streams"
+"Please enter your restrictions or conditions, such as paypal receipt, usage "
+"guidelines, etc."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:493
+#: ../../Zotlabs/Module/Connect.php:95 ../../Zotlabs/Module/Connect.php:115
msgid ""
-"Import and allow access to public content pulled from other sites. Warning: "
-"this content is unmoderated."
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:494
-msgid "Login on Homepage"
+"This channel may require additional steps or acknowledgement of the "
+"following conditions prior to connecting:"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:494
+#: ../../Zotlabs/Module/Connect.php:96
msgid ""
-"Present a login box to visitors on the home page if no other content has "
-"been configured."
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:495
-msgid "Enable context help"
+"Potential connections will then see the following text before proceeding:"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:495
+#: ../../Zotlabs/Module/Connect.php:97 ../../Zotlabs/Module/Connect.php:118
msgid ""
-"Display contextual help for the current page when the help button is pressed."
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:497
-msgid "Directory Server URL"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:497
-msgid "Default directory server"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:499
-msgid "Proxy user"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:500
-msgid "Proxy URL"
+"By continuing, I certify that I have complied with any instructions provided "
+"on this page."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:501
-msgid "Network timeout"
+#: ../../Zotlabs/Module/Connect.php:106
+msgid "(No specific instructions have been provided by the channel owner.)"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:501
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+#: ../../Zotlabs/Module/Connect.php:114
+msgid "Restricted or Premium Channel"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:502
-msgid "Delivery interval"
+#: ../../Zotlabs/Module/Connedit.php:80
+msgid "Could not access contact record."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:502
-msgid ""
-"Delay background delivery processes by this many seconds to reduce system "
-"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
-"for large dedicated servers."
+#: ../../Zotlabs/Module/Connedit.php:104
+msgid "Could not locate selected profile."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:503
-msgid "Deliveries per process"
+#: ../../Zotlabs/Module/Connedit.php:227
+msgid "Connection updated."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:503
-msgid ""
-"Number of deliveries to attempt in a single operating system process. Adjust "
-"if necessary to tune system performance. Recommend: 1-5."
+#: ../../Zotlabs/Module/Connedit.php:229
+msgid "Failed to update connection record."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:504
-msgid "Poll interval"
+#: ../../Zotlabs/Module/Connedit.php:276
+msgid "is now connected to"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:504
-msgid ""
-"Delay background polling processes by this many seconds to reduce system "
-"load. If 0, use delivery interval."
+#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Connedit.php:654
+#: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:460
+#: ../../Zotlabs/Module/Events.php:469 ../../Zotlabs/Module/Api.php:89
+#: ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Menu.php:100
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
+#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Admin.php:459
+#: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707
+msgid "No"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:505
-msgid "Maximum Load Average"
+#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Events.php:459
+#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:469
+#: ../../Zotlabs/Module/Api.php:88 ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Menu.php:100
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
+#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Admin.php:461
+#: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707
+msgid "Yes"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:505
-msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
+#: ../../Zotlabs/Module/Connedit.php:411
+msgid "Could not access address book record."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:506
-msgid "Expiration period in days for imported (grid/network) content"
+#: ../../Zotlabs/Module/Connedit.php:425
+msgid "Refresh failed - channel is currently unavailable."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:506
-msgid "0 for no expiration of imported content"
+#: ../../Zotlabs/Module/Connedit.php:440 ../../Zotlabs/Module/Connedit.php:449
+#: ../../Zotlabs/Module/Connedit.php:458 ../../Zotlabs/Module/Connedit.php:467
+#: ../../Zotlabs/Module/Connedit.php:480
+msgid "Unable to set address book parameters."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:649 ../../Zotlabs/Module/Admin.php:650
-#: ../../Zotlabs/Module/Settings.php:720
-msgid "Off"
+#: ../../Zotlabs/Module/Connedit.php:503
+msgid "Connection has been removed."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:649 ../../Zotlabs/Module/Admin.php:650
-#: ../../Zotlabs/Module/Settings.php:720
-msgid "On"
+#: ../../Zotlabs/Module/Connedit.php:519 ../../Zotlabs/Lib/Apps.php:219
+#: ../../include/nav.php:86 ../../include/conversation.php:954
+msgid "View Profile"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:650
+#: ../../Zotlabs/Module/Connedit.php:522
#, php-format
-msgid "Lock feature %s"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:658
-msgid "Manage Additional Features"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:675
-msgid "No server found"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:682 ../../Zotlabs/Module/Admin.php:1020
-msgid "ID"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:682
-msgid "for channel"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:682
-msgid "on server"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:682 ../../Zotlabs/Module/Connections.php:270
-msgid "Status"
+msgid "View %s's profile"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:684
-msgid "Server"
+#: ../../Zotlabs/Module/Connedit.php:526
+msgid "Refresh Permissions"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:718
-msgid ""
-"By default, unfiltered HTML is allowed in embedded media. This is inherently "
-"insecure."
+#: ../../Zotlabs/Module/Connedit.php:529
+msgid "Fetch updated permissions"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:721
-msgid ""
-"The recommended setting is to only allow unfiltered HTML from the following "
-"sites:"
+#: ../../Zotlabs/Module/Connedit.php:533
+msgid "Recent Activity"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:722
-msgid ""
-"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/"
-"<br />https://vimeo.com/<br />https://soundcloud.com/<br />"
+#: ../../Zotlabs/Module/Connedit.php:536
+msgid "View recent posts and comments"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:723
-msgid ""
-"All other embedded content will be filtered, <strong>unless</strong> "
-"embedded content from that site is explicitly blocked."
+#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1041
+msgid "Unblock"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:728 ../../include/widgets.php:1386
-msgid "Security"
+#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1040
+msgid "Block"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:730
-msgid "Block public"
+#: ../../Zotlabs/Module/Connedit.php:543
+msgid "Block (or Unblock) all communications with this connection"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:730
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently authenticated."
+#: ../../Zotlabs/Module/Connedit.php:544
+msgid "This connection is blocked!"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:731
-msgid "Set \"Transport Security\" HTTP header"
+#: ../../Zotlabs/Module/Connedit.php:548
+msgid "Unignore"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:732
-msgid "Set \"Content Security Policy\" HTTP header"
+#: ../../Zotlabs/Module/Connedit.php:548
+#: ../../Zotlabs/Module/Connections.php:277
+#: ../../Zotlabs/Module/Notifications.php:55
+msgid "Ignore"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:733
-msgid "Allow communications only from these sites"
+#: ../../Zotlabs/Module/Connedit.php:551
+msgid "Ignore (or Unignore) all inbound communications from this connection"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:733
-msgid ""
-"One site per line. Leave empty to allow communication from anywhere by "
-"default"
+#: ../../Zotlabs/Module/Connedit.php:552
+msgid "This connection is ignored!"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:734
-msgid "Block communications from these sites"
+#: ../../Zotlabs/Module/Connedit.php:556
+msgid "Unarchive"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:735
-msgid "Allow communications only from these channels"
+#: ../../Zotlabs/Module/Connedit.php:556
+msgid "Archive"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:735
+#: ../../Zotlabs/Module/Connedit.php:559
msgid ""
-"One channel (hash) per line. Leave empty to allow from any channel by default"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:736
-msgid "Block communications from these channels"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:737
-msgid "Only allow embeds from secure (SSL) websites and links."
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:738
-msgid "Allow unfiltered embedded HTML content only from these domains"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:738
-msgid "One site per line. By default embedded content is filtered."
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:739
-msgid "Block embedded HTML from these domains"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:757
-msgid "Update has been marked successful"
+"Archive (or Unarchive) this connection - mark channel dead but keep content"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:767
-#, php-format
-msgid "Executing %s failed. Check system logs."
+#: ../../Zotlabs/Module/Connedit.php:560
+msgid "This connection is archived!"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:770
-#, php-format
-msgid "Update %s was successfully applied."
+#: ../../Zotlabs/Module/Connedit.php:564
+msgid "Unhide"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:774
-#, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
+#: ../../Zotlabs/Module/Connedit.php:564
+msgid "Hide"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:777
-#, php-format
-msgid "Update function %s could not be found."
+#: ../../Zotlabs/Module/Connedit.php:567
+msgid "Hide or Unhide this connection from your other connections"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:793
-msgid "No failed updates."
+#: ../../Zotlabs/Module/Connedit.php:568
+msgid "This connection is hidden!"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:797
-msgid "Failed Updates"
+#: ../../Zotlabs/Module/Connedit.php:575
+msgid "Delete this connection"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:799
-msgid "Mark success (if update was manually applied)"
+#: ../../Zotlabs/Module/Connedit.php:590 ../../include/widgets.php:493
+msgid "Me"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:800
-msgid "Attempt to execute this update step automatically"
+#: ../../Zotlabs/Module/Connedit.php:591 ../../include/widgets.php:494
+msgid "Family"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:831
-msgid "Queue Statistics"
+#: ../../Zotlabs/Module/Connedit.php:592 ../../Zotlabs/Module/Settings.php:342
+#: ../../Zotlabs/Module/Settings.php:346 ../../Zotlabs/Module/Settings.php:347
+#: ../../Zotlabs/Module/Settings.php:350 ../../Zotlabs/Module/Settings.php:361
+#: ../../include/widgets.php:495 ../../include/selectors.php:123
+#: ../../include/channel.php:389 ../../include/channel.php:390
+#: ../../include/channel.php:397
+msgid "Friends"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:832
-msgid "Total Entries"
+#: ../../Zotlabs/Module/Connedit.php:593 ../../include/widgets.php:496
+msgid "Acquaintances"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:833
-msgid "Priority"
+#: ../../Zotlabs/Module/Connedit.php:594
+#: ../../Zotlabs/Module/Connections.php:92
+#: ../../Zotlabs/Module/Connections.php:107 ../../include/widgets.php:497
+msgid "All"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:834
-msgid "Destination URL"
+#: ../../Zotlabs/Module/Connedit.php:654
+msgid "Approve this connection"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:835
-msgid "Mark hub permanently offline"
+#: ../../Zotlabs/Module/Connedit.php:654
+msgid "Accept connection to allow communication"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:836
-msgid "Empty queue for this hub"
+#: ../../Zotlabs/Module/Connedit.php:659
+msgid "Set Affinity"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:837
-msgid "Last known contact"
+#: ../../Zotlabs/Module/Connedit.php:662
+msgid "Set Profile"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:873
-#, php-format
-msgid "%s account blocked/unblocked"
-msgid_plural "%s account blocked/unblocked"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../../Zotlabs/Module/Admin.php:881
-#, php-format
-msgid "%s account deleted"
-msgid_plural "%s accounts deleted"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../../Zotlabs/Module/Admin.php:917
-msgid "Account not found"
+#: ../../Zotlabs/Module/Connedit.php:665
+msgid "Set Affinity & Profile"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:929
-#, php-format
-msgid "Account '%s' deleted"
+#: ../../Zotlabs/Module/Connedit.php:698
+msgid "none"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:937
-#, php-format
-msgid "Account '%s' blocked"
+#: ../../Zotlabs/Module/Connedit.php:702 ../../include/widgets.php:614
+msgid "Connection Default Permissions"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:945
+#: ../../Zotlabs/Module/Connedit.php:702 ../../include/items.php:3926
#, php-format
-msgid "Account '%s' unblocked"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1007 ../../Zotlabs/Module/Admin.php:1019
-msgid "Users"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1009 ../../Zotlabs/Module/Admin.php:1173
-msgid "select all"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1010
-msgid "User registrations waiting for confirm"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1011
-msgid "Request date"
+msgid "Connection: %s"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1011 ../../Zotlabs/Module/Admin.php:1020
-#: ../../Zotlabs/Module/Id.php:17 ../../Zotlabs/Module/Id.php:18
-#: ../../include/contact_selectors.php:81 ../../boot.php:1617
-msgid "Email"
+#: ../../Zotlabs/Module/Connedit.php:703
+msgid "Apply these permissions automatically"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1012
-msgid "No registrations."
+#: ../../Zotlabs/Module/Connedit.php:703
+msgid "Connection requests will be approved without your interaction"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1013
-#: ../../Zotlabs/Module/Connections.php:275
-msgid "Approve"
+#: ../../Zotlabs/Module/Connedit.php:705
+msgid "This connection's primary address is"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1014
-msgid "Deny"
+#: ../../Zotlabs/Module/Connedit.php:706
+msgid "Available locations:"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1016 ../../Zotlabs/Module/Connedit.php:541
-msgid "Block"
+#: ../../Zotlabs/Module/Connedit.php:710
+msgid ""
+"The permissions indicated on this page will be applied to all new "
+"connections."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1017 ../../Zotlabs/Module/Connedit.php:541
-msgid "Unblock"
+#: ../../Zotlabs/Module/Connedit.php:711
+msgid "Connection Tools"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1020 ../../include/group.php:267
-msgid "All Channels"
+#: ../../Zotlabs/Module/Connedit.php:713
+msgid "Slide to adjust your degree of friendship"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1020
-msgid "Register date"
+#: ../../Zotlabs/Module/Connedit.php:714 ../../Zotlabs/Module/Rate.php:159
+#: ../../include/js_strings.php:20
+msgid "Rating"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1020
-msgid "Last login"
+#: ../../Zotlabs/Module/Connedit.php:715
+msgid "Slide to adjust your rating"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1020
-msgid "Expires"
+#: ../../Zotlabs/Module/Connedit.php:716 ../../Zotlabs/Module/Connedit.php:721
+msgid "Optionally explain your rating"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1020
-msgid "Service Class"
+#: ../../Zotlabs/Module/Connedit.php:718
+msgid "Custom Filter"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1022
-msgid ""
-"Selected accounts will be deleted!\\n\\nEverything these accounts had posted "
-"on this site will be permanently deleted!\\n\\nAre you sure?"
+#: ../../Zotlabs/Module/Connedit.php:719
+msgid "Only import posts with this text"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1023
+#: ../../Zotlabs/Module/Connedit.php:719 ../../Zotlabs/Module/Connedit.php:720
msgid ""
-"The account {0} will be deleted!\\n\\nEverything this account has posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1059
-#, php-format
-msgid "%s channel censored/uncensored"
-msgid_plural "%s channels censored/uncensored"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../../Zotlabs/Module/Admin.php:1068
-#, php-format
-msgid "%s channel code allowed/disallowed"
-msgid_plural "%s channels code allowed/disallowed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../../Zotlabs/Module/Admin.php:1075
-#, php-format
-msgid "%s channel deleted"
-msgid_plural "%s channels deleted"
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../../Zotlabs/Module/Admin.php:1095
-msgid "Channel not found"
+"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
+"all posts"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1106
-#, php-format
-msgid "Channel '%s' deleted"
+#: ../../Zotlabs/Module/Connedit.php:720
+msgid "Do not import posts with this text"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1118
-#, php-format
-msgid "Channel '%s' censored"
+#: ../../Zotlabs/Module/Connedit.php:722
+msgid "This information is public!"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1118
-#, php-format
-msgid "Channel '%s' uncensored"
+#: ../../Zotlabs/Module/Connedit.php:727
+msgid "Connection Pending Approval"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1129
-#, php-format
-msgid "Channel '%s' code allowed"
+#: ../../Zotlabs/Module/Connedit.php:730
+msgid "inherited"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1129
+#: ../../Zotlabs/Module/Connedit.php:732
#, php-format
-msgid "Channel '%s' code disallowed"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1171 ../../include/widgets.php:1385
-msgid "Channels"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1175
-msgid "Censor"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1176
-msgid "Uncensor"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1177
-msgid "Allow Code"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1178
-msgid "Disallow Code"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1179 ../../include/conversation.php:1621
-msgid "Channel"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1180
-msgid "UID"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1180 ../../Zotlabs/Module/Locs.php:118
-#: ../../Zotlabs/Module/Profiles.php:469
-msgid "Address"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1182
msgid ""
-"Selected channels will be deleted!\\n\\nEverything that was posted in these "
-"channels on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1183
-msgid ""
-"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
-"channel on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1240
-#, php-format
-msgid "Plugin %s disabled."
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1244
-#, php-format
-msgid "Plugin %s enabled."
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1254 ../../Zotlabs/Module/Admin.php:1487
-msgid "Disable"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1257 ../../Zotlabs/Module/Admin.php:1489
-msgid "Enable"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1286 ../../Zotlabs/Module/Admin.php:1349
-#: ../../include/widgets.php:1388
-msgid "Plugins"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1287 ../../Zotlabs/Module/Admin.php:1516
-msgid "Toggle"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1288 ../../Zotlabs/Module/Admin.php:1517
-#: ../../include/apps.php:166 ../../include/widgets.php:638
-#: ../../include/nav.php:208
-msgid "Settings"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1295 ../../Zotlabs/Module/Admin.php:1526
-msgid "Author: "
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1296 ../../Zotlabs/Module/Admin.php:1527
-msgid "Maintainer: "
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1297
-msgid "Minimum project version: "
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1298
-msgid "Maximum project version: "
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1299
-msgid "Minimum PHP version: "
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1300
-msgid "Requires: "
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1301 ../../Zotlabs/Module/Admin.php:1354
-msgid "Disabled - version incompatibility"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1452
-msgid "No themes found."
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1508
-msgid "Screenshot"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1515 ../../Zotlabs/Module/Admin.php:1549
-#: ../../include/widgets.php:1389
-msgid "Themes"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1554
-msgid "[Experimental]"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1555
-msgid "[Unsupported]"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1579
-msgid "Log settings updated."
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1634 ../../include/widgets.php:1410
-#: ../../include/widgets.php:1420
-msgid "Logs"
+"Please choose the profile you would like to display to %s when viewing your "
+"profile securely."
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1636
-msgid "Clear"
+#: ../../Zotlabs/Module/Connedit.php:734
+msgid "Their Settings"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1642
-msgid "Debugging"
+#: ../../Zotlabs/Module/Connedit.php:735
+msgid "My Settings"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1643
-msgid "Log file"
+#: ../../Zotlabs/Module/Connedit.php:737
+msgid "Individual Permissions"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:1643
+#: ../../Zotlabs/Module/Connedit.php:738
msgid ""
-"Must be writable by web server. Relative to your Red top-level directory."
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1644
-msgid "Log level"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1711
-msgid "New Profile Field"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1712 ../../Zotlabs/Module/Admin.php:1732
-msgid "Field nickname"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1712 ../../Zotlabs/Module/Admin.php:1732
-msgid "System name of field"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1713 ../../Zotlabs/Module/Admin.php:1733
-msgid "Input type"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1714 ../../Zotlabs/Module/Admin.php:1734
-msgid "Field Name"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1714 ../../Zotlabs/Module/Admin.php:1734
-msgid "Label on profile pages"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1715 ../../Zotlabs/Module/Admin.php:1735
-msgid "Help text"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1715 ../../Zotlabs/Module/Admin.php:1735
-msgid "Additional info (optional)"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1716 ../../Zotlabs/Module/Admin.php:1736
-#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Rbmark.php:32
-#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/widgets.php:201
-#: ../../include/text.php:934 ../../include/text.php:946
-msgid "Save"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1725
-msgid "Field definition not found"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1731
-msgid "Edit Profile Field"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1789 ../../include/widgets.php:1391
-msgid "Profile Fields"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1790
-msgid "Basic Profile Fields"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1791
-msgid "Advanced Profile Fields"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1791
-msgid "(In addition to basic fields)"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1793
-msgid "All available fields"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1794
-msgid "Custom Fields"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:1798
-msgid "Create Custom Field"
-msgstr ""
-
-#: ../../Zotlabs/Module/Api.php:61 ../../Zotlabs/Module/Api.php:85
-msgid "Authorize application connection"
-msgstr ""
-
-#: ../../Zotlabs/Module/Api.php:62
-msgid "Return to your app and insert this Securty Code:"
-msgstr ""
-
-#: ../../Zotlabs/Module/Api.php:72
-msgid "Please login to continue."
+"Some permissions may be inherited from your channel's <a href=\"settings"
+"\"><strong>privacy settings</strong></a>, which have higher priority than "
+"individual settings. You can <strong>not</strong> change those settings here."
msgstr ""
-#: ../../Zotlabs/Module/Api.php:87
+#: ../../Zotlabs/Module/Connedit.php:739
msgid ""
-"Do you want to authorize this application to access your posts and contacts, "
-"and/or create new posts for you?"
-msgstr ""
-
-#: ../../Zotlabs/Module/Appman.php:36 ../../Zotlabs/Module/Appman.php:52
-msgid "App installed."
-msgstr ""
-
-#: ../../Zotlabs/Module/Appman.php:45
-msgid "Malformed app."
-msgstr ""
-
-#: ../../Zotlabs/Module/Appman.php:103
-msgid "Embed code"
-msgstr ""
-
-#: ../../Zotlabs/Module/Appman.php:109 ../../include/widgets.php:107
-msgid "Edit App"
-msgstr ""
-
-#: ../../Zotlabs/Module/Appman.php:109
-msgid "Create App"
-msgstr ""
-
-#: ../../Zotlabs/Module/Appman.php:114
-msgid "Name of app"
-msgstr ""
-
-#: ../../Zotlabs/Module/Appman.php:114 ../../Zotlabs/Module/Appman.php:115
-#: ../../Zotlabs/Module/Events.php:448 ../../Zotlabs/Module/Events.php:453
-#: ../../Zotlabs/Module/Profiles.php:713 ../../Zotlabs/Module/Profiles.php:717
-#: ../../include/datetime.php:246
-msgid "Required"
-msgstr ""
-
-#: ../../Zotlabs/Module/Appman.php:115
-msgid "Location (URL) of app"
-msgstr ""
-
-#: ../../Zotlabs/Module/Appman.php:116 ../../Zotlabs/Module/Events.php:461
-#: ../../Zotlabs/Module/Rbmark.php:101
-msgid "Description"
-msgstr ""
-
-#: ../../Zotlabs/Module/Appman.php:117
-msgid "Photo icon URL"
-msgstr ""
-
-#: ../../Zotlabs/Module/Appman.php:117
-msgid "80 x 80 pixels - optional"
-msgstr ""
-
-#: ../../Zotlabs/Module/Appman.php:118
-msgid "Categories (optional, comma separated list)"
-msgstr ""
-
-#: ../../Zotlabs/Module/Appman.php:119
-msgid "Version ID"
-msgstr ""
-
-#: ../../Zotlabs/Module/Appman.php:120
-msgid "Price of app"
-msgstr ""
-
-#: ../../Zotlabs/Module/Appman.php:121
-msgid "Location (URL) to purchase app"
-msgstr ""
-
-#: ../../Zotlabs/Module/Apps.php:46 ../../include/widgets.php:102
-#: ../../include/nav.php:163
-msgid "Apps"
-msgstr ""
-
-#: ../../Zotlabs/Module/Attach.php:13
-msgid "Item not available."
-msgstr ""
-
-#: ../../Zotlabs/Module/Block.php:31 ../../Zotlabs/Module/Page.php:40
-msgid "Invalid item."
-msgstr ""
-
-#: ../../Zotlabs/Module/Block.php:43 ../../Zotlabs/Module/Cal.php:65
-#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Wall_upload.php:33
-msgid "Channel not found."
-msgstr ""
-
-#: ../../Zotlabs/Module/Blocks.php:99 ../../Zotlabs/Module/Blocks.php:154
-msgid "Block Name"
-msgstr ""
-
-#: ../../Zotlabs/Module/Blocks.php:153 ../../include/text.php:2280
-msgid "Blocks"
-msgstr ""
-
-#: ../../Zotlabs/Module/Blocks.php:155
-msgid "Block Title"
-msgstr ""
-
-#: ../../Zotlabs/Module/Blocks.php:156 ../../Zotlabs/Module/Layouts.php:188
-#: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Webpages.php:200
-#: ../../include/page_widgets.php:44
-msgid "Created"
-msgstr ""
-
-#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/Layouts.php:189
-#: ../../Zotlabs/Module/Menu.php:115 ../../Zotlabs/Module/Webpages.php:201
-#: ../../include/page_widgets.php:45
-msgid "Edited"
-msgstr ""
-
-#: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Layouts.php:191
-#: ../../Zotlabs/Module/Photos.php:1071 ../../Zotlabs/Module/Webpages.php:190
-#: ../../include/conversation.php:1218
-msgid "Share"
-msgstr ""
-
-#: ../../Zotlabs/Module/Blocks.php:165 ../../Zotlabs/Module/Layouts.php:195
-#: ../../Zotlabs/Module/Pubsites.php:46 ../../Zotlabs/Module/Webpages.php:195
-#: ../../include/page_widgets.php:39
-msgid "View"
-msgstr ""
-
-#: ../../Zotlabs/Module/Bookmarks.php:53
-msgid "Bookmark added"
-msgstr ""
-
-#: ../../Zotlabs/Module/Bookmarks.php:75
-msgid "My Bookmarks"
-msgstr ""
-
-#: ../../Zotlabs/Module/Bookmarks.php:86
-msgid "My Connections Bookmarks"
-msgstr ""
-
-#: ../../Zotlabs/Module/Cal.php:72
-msgid "Permissions denied."
-msgstr ""
-
-#: ../../Zotlabs/Module/Cal.php:262 ../../Zotlabs/Module/Events.php:585
-msgid "l, F j"
-msgstr ""
-
-#: ../../Zotlabs/Module/Cal.php:311 ../../Zotlabs/Module/Events.php:634
-#: ../../include/text.php:1743
-msgid "Link to Source"
+"Some permissions may be inherited from your channel's <a href=\"settings"
+"\"><strong>privacy settings</strong></a>, which have higher priority than "
+"individual settings. You can change those settings here but they wont have "
+"any impact unless the inherited setting changes."
msgstr ""
-#: ../../Zotlabs/Module/Cal.php:334 ../../Zotlabs/Module/Events.php:662
-msgid "Edit Event"
+#: ../../Zotlabs/Module/Connedit.php:740
+msgid "Last update:"
msgstr ""
-#: ../../Zotlabs/Module/Cal.php:334 ../../Zotlabs/Module/Events.php:662
-msgid "Create Event"
+#: ../../Zotlabs/Module/Directory.php:63 ../../Zotlabs/Module/Display.php:17
+#: ../../Zotlabs/Module/Photos.php:522 ../../Zotlabs/Module/Ratings.php:86
+#: ../../Zotlabs/Module/Search.php:17
+#: ../../Zotlabs/Module/Viewconnections.php:20
+msgid "Public access denied."
msgstr ""
-#: ../../Zotlabs/Module/Cal.php:335 ../../Zotlabs/Module/Cal.php:342
-#: ../../Zotlabs/Module/Events.php:663 ../../Zotlabs/Module/Events.php:670
-#: ../../Zotlabs/Module/Photos.php:948
-msgid "Previous"
-msgstr ""
+#: ../../Zotlabs/Module/Directory.php:243
+#, php-format
+msgid "%d rating"
+msgid_plural "%d ratings"
+msgstr[0] ""
+msgstr[1] ""
-#: ../../Zotlabs/Module/Cal.php:336 ../../Zotlabs/Module/Cal.php:343
-#: ../../Zotlabs/Module/Events.php:664 ../../Zotlabs/Module/Events.php:671
-#: ../../Zotlabs/Module/Photos.php:957 ../../Zotlabs/Module/Setup.php:290
-msgid "Next"
+#: ../../Zotlabs/Module/Directory.php:254
+msgid "Gender: "
msgstr ""
-#: ../../Zotlabs/Module/Cal.php:337 ../../Zotlabs/Module/Events.php:665
-#: ../../include/widgets.php:755
-msgid "Export"
+#: ../../Zotlabs/Module/Directory.php:256
+msgid "Status: "
msgstr ""
-#: ../../Zotlabs/Module/Cal.php:340 ../../Zotlabs/Module/Events.php:668
-#: ../../include/widgets.php:756
-msgid "Import"
+#: ../../Zotlabs/Module/Directory.php:258
+msgid "Homepage: "
msgstr ""
-#: ../../Zotlabs/Module/Cal.php:344 ../../Zotlabs/Module/Events.php:672
-msgid "Today"
+#: ../../Zotlabs/Module/Directory.php:306 ../../include/channel.php:1183
+msgid "Age:"
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:28 ../../Zotlabs/Module/Chat.php:23
-msgid "You must be logged in to see this page."
+#: ../../Zotlabs/Module/Directory.php:311 ../../include/event.php:52
+#: ../../include/event.php:84 ../../include/channel.php:1027
+#: ../../include/bb2diaspora.php:507
+msgid "Location:"
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:40
-msgid "Posts and comments"
+#: ../../Zotlabs/Module/Directory.php:317
+msgid "Description:"
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:41
-msgid "Only posts"
+#: ../../Zotlabs/Module/Directory.php:322 ../../include/channel.php:1199
+msgid "Hometown:"
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:101
-msgid "Insufficient permissions. Request redirected to profile page."
+#: ../../Zotlabs/Module/Directory.php:324 ../../include/channel.php:1207
+msgid "About:"
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:135 ../../Zotlabs/Module/Network.php:173
-#: ../../Zotlabs/Module/Rpost.php:118
-msgid "Public"
+#: ../../Zotlabs/Module/Directory.php:325 ../../Zotlabs/Module/Match.php:68
+#: ../../Zotlabs/Module/Suggest.php:56 ../../include/widgets.php:147
+#: ../../include/widgets.php:184 ../../include/connections.php:78
+#: ../../include/conversation.php:956 ../../include/channel.php:1012
+msgid "Connect"
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:179
-msgid "Room not found"
+#: ../../Zotlabs/Module/Directory.php:326
+msgid "Public Forum:"
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:195
-msgid "Leave Room"
+#: ../../Zotlabs/Module/Directory.php:329
+msgid "Keywords: "
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:196
-msgid "Delete Room"
+#: ../../Zotlabs/Module/Directory.php:332
+msgid "Don't suggest"
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:197
-msgid "I am away right now"
+#: ../../Zotlabs/Module/Directory.php:334
+msgid "Common connections:"
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:198
-msgid "I am online"
+#: ../../Zotlabs/Module/Directory.php:383
+msgid "Global Directory"
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:200
-msgid "Bookmark this room"
+#: ../../Zotlabs/Module/Directory.php:383
+msgid "Local Directory"
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:203 ../../Zotlabs/Module/Mail.php:206
-#: ../../Zotlabs/Module/Mail.php:320 ../../include/conversation.php:1186
-msgid "Please enter a link URL:"
+#: ../../Zotlabs/Module/Directory.php:388
+#: ../../Zotlabs/Module/Directory.php:393
+#: ../../Zotlabs/Module/Connections.php:309
+#: ../../include/contact_widgets.php:23
+msgid "Find"
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:204 ../../Zotlabs/Module/Mail.php:259
-#: ../../Zotlabs/Module/Mail.php:389 ../../include/ItemObject.php:715
-#: ../../include/conversation.php:1266
-msgid "Encrypt text"
+#: ../../Zotlabs/Module/Directory.php:389
+msgid "Finding:"
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Editblock.php:144
-#: ../../Zotlabs/Module/Editwebpage.php:188 ../../Zotlabs/Module/Mail.php:253
-#: ../../Zotlabs/Module/Mail.php:383 ../../include/conversation.php:1141
-msgid "Insert web link"
+#: ../../Zotlabs/Module/Directory.php:392 ../../Zotlabs/Module/Suggest.php:64
+#: ../../include/contact_widgets.php:24
+msgid "Channel Suggestions"
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:216
-msgid "Feature disabled."
+#: ../../Zotlabs/Module/Directory.php:394
+msgid "next page"
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:230
-msgid "New Chatroom"
+#: ../../Zotlabs/Module/Directory.php:394
+msgid "previous page"
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:231
-msgid "Chatroom name"
+#: ../../Zotlabs/Module/Directory.php:395
+msgid "Sort options"
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:232
-msgid "Expiration of chats (minutes)"
+#: ../../Zotlabs/Module/Directory.php:396
+msgid "Alphabetic"
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:233 ../../Zotlabs/Module/Filestorage.php:151
-#: ../../Zotlabs/Module/Photos.php:670 ../../Zotlabs/Module/Photos.php:1044
-#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:359
-#: ../../include/acl_selectors.php:266
-msgid "Permissions"
+#: ../../Zotlabs/Module/Directory.php:397
+msgid "Reverse Alphabetic"
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:244
-#, php-format
-msgid "%1$s's Chatrooms"
+#: ../../Zotlabs/Module/Directory.php:398
+msgid "Newest to Oldest"
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:249
-msgid "No chatrooms available"
+#: ../../Zotlabs/Module/Directory.php:399
+msgid "Oldest to Newest"
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:250 ../../Zotlabs/Module/Manage.php:141
-#: ../../Zotlabs/Module/Profiles.php:782
-msgid "Create New"
+#: ../../Zotlabs/Module/Directory.php:416
+msgid "No entries (some entries may be hidden)."
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:253
-msgid "Expiration"
+#: ../../Zotlabs/Module/Display.php:40 ../../Zotlabs/Module/Filestorage.php:33
+#: ../../Zotlabs/Module/Admin.php:164 ../../Zotlabs/Module/Admin.php:1255
+#: ../../Zotlabs/Module/Admin.php:1561 ../../Zotlabs/Module/Thing.php:89
+#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:3359
+msgid "Item not found."
msgstr ""
-#: ../../Zotlabs/Module/Chat.php:254
-msgid "min"
+#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95
+#: ../../Zotlabs/Module/Editpost.php:24 ../../Zotlabs/Module/Editlayout.php:79
+#: ../../Zotlabs/Module/Editwebpage.php:81
+msgid "Item not found"
msgstr ""
-#: ../../Zotlabs/Module/Chatsvc.php:115
-msgid "Away"
+#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1228
+msgid "Title (optional)"
msgstr ""
-#: ../../Zotlabs/Module/Chatsvc.php:120
-msgid "Online"
+#: ../../Zotlabs/Module/Editblock.php:133
+msgid "Edit Block"
msgstr ""
#: ../../Zotlabs/Module/Common.php:14
@@ -1643,49 +1048,6 @@ msgstr ""
msgid "No connections in common."
msgstr ""
-#: ../../Zotlabs/Module/Connect.php:60 ../../Zotlabs/Module/Connect.php:108
-msgid "Continue"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connect.php:89
-msgid "Premium Channel Setup"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connect.php:91
-msgid "Enable premium channel connection restrictions"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connect.php:92
-msgid ""
-"Please enter your restrictions or conditions, such as paypal receipt, usage "
-"guidelines, etc."
-msgstr ""
-
-#: ../../Zotlabs/Module/Connect.php:94 ../../Zotlabs/Module/Connect.php:114
-msgid ""
-"This channel may require additional steps or acknowledgement of the "
-"following conditions prior to connecting:"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connect.php:95
-msgid ""
-"Potential connections will then see the following text before proceeding:"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connect.php:96 ../../Zotlabs/Module/Connect.php:117
-msgid ""
-"By continuing, I certify that I have complied with any instructions provided "
-"on this page."
-msgstr ""
-
-#: ../../Zotlabs/Module/Connect.php:105
-msgid "(No specific instructions have been provided by the channel owner.)"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connect.php:113
-msgid "Restricted or Premium Channel"
-msgstr ""
-
#: ../../Zotlabs/Module/Connections.php:56
#: ../../Zotlabs/Module/Connections.php:161
#: ../../Zotlabs/Module/Connections.php:242
@@ -1712,16 +1074,10 @@ msgstr ""
#: ../../Zotlabs/Module/Connections.php:76
#: ../../Zotlabs/Module/Connections.php:86 ../../Zotlabs/Module/Menu.php:116
-#: ../../include/conversation.php:1545
+#: ../../include/conversation.php:1535
msgid "New"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:92
-#: ../../Zotlabs/Module/Connections.php:107
-#: ../../Zotlabs/Module/Connedit.php:597 ../../include/widgets.php:497
-msgid "All"
-msgstr ""
-
#: ../../Zotlabs/Module/Connections.php:138
msgid "New Connections"
msgstr ""
@@ -1780,6 +1136,10 @@ msgstr ""
msgid "Network"
msgstr ""
+#: ../../Zotlabs/Module/Connections.php:270 ../../Zotlabs/Module/Admin.php:710
+msgid "Status"
+msgstr ""
+
#: ../../Zotlabs/Module/Connections.php:272
msgid "Connected"
msgstr ""
@@ -1788,29 +1148,28 @@ msgstr ""
msgid "Approve connection"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:276
-msgid "Ignore connection"
+#: ../../Zotlabs/Module/Connections.php:275
+#: ../../Zotlabs/Module/Admin.php:1037
+msgid "Approve"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:277
-#: ../../Zotlabs/Module/Connedit.php:549
-#: ../../Zotlabs/Module/Notifications.php:55
-msgid "Ignore"
+#: ../../Zotlabs/Module/Connections.php:276
+msgid "Ignore connection"
msgstr ""
#: ../../Zotlabs/Module/Connections.php:278
msgid "Recent activity"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:302 ../../include/apps.php:159
-#: ../../include/text.php:863 ../../include/nav.php:186
+#: ../../Zotlabs/Module/Connections.php:302 ../../Zotlabs/Lib/Apps.php:208
+#: ../../include/text.php:875 ../../include/nav.php:186
msgid "Connections"
msgstr ""
#: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44
-#: ../../include/acl_selectors.php:259 ../../include/apps.php:179
-#: ../../include/text.php:933 ../../include/text.php:945
-#: ../../include/nav.php:165
+#: ../../Zotlabs/Lib/Apps.php:228 ../../include/text.php:945
+#: ../../include/text.php:957 ../../include/nav.php:165
+#: ../../include/acl_selectors.php:276
msgid "Search"
msgstr ""
@@ -1822,298 +1181,6 @@ msgstr ""
msgid "Connections search"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:309
-#: ../../Zotlabs/Module/Directory.php:388
-#: ../../Zotlabs/Module/Directory.php:393 ../../include/contact_widgets.php:26
-msgid "Find"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:80
-msgid "Could not access contact record."
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:104
-msgid "Could not locate selected profile."
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:227
-msgid "Connection updated."
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:229
-msgid "Failed to update connection record."
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:276
-msgid "is now connected to"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:411
-msgid "Could not access address book record."
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:425
-msgid "Refresh failed - channel is currently unavailable."
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:440 ../../Zotlabs/Module/Connedit.php:449
-#: ../../Zotlabs/Module/Connedit.php:458 ../../Zotlabs/Module/Connedit.php:467
-#: ../../Zotlabs/Module/Connedit.php:480
-msgid "Unable to set address book parameters."
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:504
-msgid "Connection has been removed."
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:520 ../../include/apps.php:170
-#: ../../include/conversation.php:959 ../../include/nav.php:86
-msgid "View Profile"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:523
-#, php-format
-msgid "View %s's profile"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:527
-msgid "Refresh Permissions"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:530
-msgid "Fetch updated permissions"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:534
-msgid "Recent Activity"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:537
-msgid "View recent posts and comments"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:544
-msgid "Block (or Unblock) all communications with this connection"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:545
-msgid "This connection is blocked!"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:549
-msgid "Unignore"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:552
-msgid "Ignore (or Unignore) all inbound communications from this connection"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:553
-msgid "This connection is ignored!"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:557
-msgid "Unarchive"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:557
-msgid "Archive"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:560
-msgid ""
-"Archive (or Unarchive) this connection - mark channel dead but keep content"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:561
-msgid "This connection is archived!"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:565
-msgid "Unhide"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:565
-msgid "Hide"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:568
-msgid "Hide or Unhide this connection from your other connections"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:569
-msgid "This connection is hidden!"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:576
-msgid "Delete this connection"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:593 ../../include/widgets.php:493
-msgid "Me"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:594 ../../include/widgets.php:494
-msgid "Family"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:595 ../../Zotlabs/Module/Settings.php:340
-#: ../../Zotlabs/Module/Settings.php:344 ../../Zotlabs/Module/Settings.php:345
-#: ../../Zotlabs/Module/Settings.php:348 ../../Zotlabs/Module/Settings.php:359
-#: ../../include/identity.php:389 ../../include/identity.php:390
-#: ../../include/identity.php:397 ../../include/profile_selectors.php:80
-#: ../../include/widgets.php:495
-msgid "Friends"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:596 ../../include/widgets.php:496
-msgid "Acquaintances"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:657
-msgid "Approve this connection"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:657
-msgid "Accept connection to allow communication"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:662
-msgid "Set Affinity"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:665
-msgid "Set Profile"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:668
-msgid "Set Affinity & Profile"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:701
-msgid "none"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:705 ../../include/widgets.php:614
-msgid "Connection Default Permissions"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:705 ../../include/items.php:5193
-#, php-format
-msgid "Connection: %s"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:706
-msgid "Apply these permissions automatically"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:706
-msgid "Connection requests will be approved without your interaction"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:708
-msgid "This connection's primary address is"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:709
-msgid "Available locations:"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:713
-msgid ""
-"The permissions indicated on this page will be applied to all new "
-"connections."
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:714
-msgid "Connection Tools"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:716
-msgid "Slide to adjust your degree of friendship"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:717 ../../Zotlabs/Module/Rate.php:161
-#: ../../include/js_strings.php:20
-msgid "Rating"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:718
-msgid "Slide to adjust your rating"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:719 ../../Zotlabs/Module/Connedit.php:724
-msgid "Optionally explain your rating"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:721
-msgid "Custom Filter"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:722
-msgid "Only import posts with this text"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:722 ../../Zotlabs/Module/Connedit.php:723
-msgid ""
-"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
-"all posts"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:723
-msgid "Do not import posts with this text"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:725
-msgid "This information is public!"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:730
-msgid "Connection Pending Approval"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:733
-msgid "inherited"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:735
-#, php-format
-msgid ""
-"Please choose the profile you would like to display to %s when viewing your "
-"profile securely."
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:737
-msgid "Their Settings"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:738
-msgid "My Settings"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:740
-msgid "Individual Permissions"
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:741
-msgid ""
-"Some permissions may be inherited from your channel's <a href=\"settings"
-"\"><strong>privacy settings</strong></a>, which have higher priority than "
-"individual settings. You can <strong>not</strong> change those settings here."
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:742
-msgid ""
-"Some permissions may be inherited from your channel's <a href=\"settings"
-"\"><strong>privacy settings</strong></a>, which have higher priority than "
-"individual settings. You can change those settings here but they wont have "
-"any impact unless the inherited setting changes."
-msgstr ""
-
-#: ../../Zotlabs/Module/Connedit.php:743
-msgid "Last update:"
-msgstr ""
-
#: ../../Zotlabs/Module/Cover_photo.php:58
#: ../../Zotlabs/Module/Profile_photo.php:79
msgid "Image uploaded but image cropping failed."
@@ -2130,7 +1197,7 @@ msgid "Image resize failed."
msgstr ""
#: ../../Zotlabs/Module/Cover_photo.php:168
-#: ../../Zotlabs/Module/Profile_photo.php:192 ../../include/photos.php:146
+#: ../../Zotlabs/Module/Profile_photo.php:192 ../../include/photos.php:144
msgid "Unable to process image"
msgstr ""
@@ -2144,30 +1211,30 @@ msgstr ""
msgid "Unable to process image."
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:5621
+#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4270
msgid "female"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:5622
+#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4271
#, php-format
msgid "%1$s updated her %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:5623
+#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4272
msgid "male"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:5624
+#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4273
#, php-format
msgid "%1$s updated his %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:5626
+#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4275
#, php-format
msgid "%1$s updated their %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/identity.php:1807
+#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1661
msgid "cover photo"
msgstr ""
@@ -2194,7 +1261,7 @@ msgstr ""
#: ../../Zotlabs/Module/Cover_photo.php:361
#: ../../Zotlabs/Module/Profile_photo.php:374
-#: ../../Zotlabs/Module/Settings.php:983
+#: ../../Zotlabs/Module/Settings.php:985
msgid "or"
msgstr ""
@@ -2223,128 +1290,169 @@ msgstr ""
msgid "Done Editing"
msgstr ""
-#: ../../Zotlabs/Module/Dav.php:127
-msgid "$Projectname channel"
+#: ../../Zotlabs/Module/Editpost.php:35
+msgid "Item is not editable"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:63 ../../Zotlabs/Module/Display.php:21
-#: ../../Zotlabs/Module/Photos.php:521 ../../Zotlabs/Module/Ratings.php:86
-#: ../../Zotlabs/Module/Search.php:17
-#: ../../Zotlabs/Module/Viewconnections.php:21
-msgid "Public access denied."
+#: ../../Zotlabs/Module/Editpost.php:106 ../../Zotlabs/Module/Rpost.php:135
+msgid "Edit post"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:243
-#, php-format
-msgid "%d rating"
-msgid_plural "%d ratings"
-msgstr[0] ""
-msgstr[1] ""
+#: ../../Zotlabs/Module/Events.php:26
+msgid "Calendar entries imported."
+msgstr ""
-#: ../../Zotlabs/Module/Directory.php:254
-msgid "Gender: "
+#: ../../Zotlabs/Module/Events.php:28
+msgid "No calendar entries found."
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:256
-msgid "Status: "
+#: ../../Zotlabs/Module/Events.php:105
+msgid "Event can not end before it has started."
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:258
-msgid "Homepage: "
+#: ../../Zotlabs/Module/Events.php:107 ../../Zotlabs/Module/Events.php:116
+#: ../../Zotlabs/Module/Events.php:136
+msgid "Unable to generate preview."
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:306 ../../include/identity.php:1329
-msgid "Age:"
+#: ../../Zotlabs/Module/Events.php:114
+msgid "Event title and start time are required."
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:311 ../../include/identity.php:1029
-#: ../../include/bb2diaspora.php:509 ../../include/event.php:52
-#: ../../include/text.php:1481
-msgid "Location:"
+#: ../../Zotlabs/Module/Events.php:134 ../../Zotlabs/Module/Events.php:259
+msgid "Event not found."
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:317
-msgid "Description:"
+#: ../../Zotlabs/Module/Events.php:254 ../../Zotlabs/Module/Like.php:373
+#: ../../Zotlabs/Module/Tagger.php:51 ../../include/event.php:949
+#: ../../include/text.php:1943 ../../include/conversation.php:123
+msgid "event"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:322 ../../include/identity.php:1345
-msgid "Hometown:"
+#: ../../Zotlabs/Module/Events.php:449
+msgid "Edit event title"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:324 ../../include/identity.php:1353
-msgid "About:"
+#: ../../Zotlabs/Module/Events.php:449
+msgid "Event title"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:325 ../../Zotlabs/Module/Match.php:68
-#: ../../Zotlabs/Module/Suggest.php:56 ../../include/identity.php:1014
-#: ../../include/widgets.php:147 ../../include/widgets.php:184
-#: ../../include/Contact.php:101 ../../include/conversation.php:961
-msgid "Connect"
+#: ../../Zotlabs/Module/Events.php:449 ../../Zotlabs/Module/Events.php:454
+#: ../../Zotlabs/Module/Profiles.php:709 ../../Zotlabs/Module/Profiles.php:713
+#: ../../Zotlabs/Module/Appman.php:115 ../../Zotlabs/Module/Appman.php:116
+#: ../../include/datetime.php:245
+msgid "Required"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:326
-msgid "Public Forum:"
+#: ../../Zotlabs/Module/Events.php:451
+msgid "Categories (comma-separated list)"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:329
-msgid "Keywords: "
+#: ../../Zotlabs/Module/Events.php:452
+msgid "Edit Category"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:332
-msgid "Don't suggest"
+#: ../../Zotlabs/Module/Events.php:452
+msgid "Category"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:334
-msgid "Common connections:"
+#: ../../Zotlabs/Module/Events.php:455
+msgid "Edit start date and time"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:383
-msgid "Global Directory"
+#: ../../Zotlabs/Module/Events.php:455
+msgid "Start date and time"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:383
-msgid "Local Directory"
+#: ../../Zotlabs/Module/Events.php:456 ../../Zotlabs/Module/Events.php:459
+msgid "Finish date and time are not known or not relevant"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:389
-msgid "Finding:"
+#: ../../Zotlabs/Module/Events.php:458
+msgid "Edit finish date and time"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:392 ../../Zotlabs/Module/Suggest.php:64
-#: ../../include/contact_widgets.php:27
-msgid "Channel Suggestions"
+#: ../../Zotlabs/Module/Events.php:458
+msgid "Finish date and time"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:394
-msgid "next page"
+#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:461
+msgid "Adjust for viewer timezone"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:394
-msgid "previous page"
+#: ../../Zotlabs/Module/Events.php:460
+msgid ""
+"Important for events that happen in a particular place. Not practical for "
+"global holidays."
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:395
-msgid "Sort options"
+#: ../../Zotlabs/Module/Events.php:462
+msgid "Edit Description"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:396
-msgid "Alphabetic"
+#: ../../Zotlabs/Module/Events.php:462 ../../Zotlabs/Module/Appman.php:117
+#: ../../Zotlabs/Module/Rbmark.php:101
+msgid "Description"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:397
-msgid "Reverse Alphabetic"
+#: ../../Zotlabs/Module/Events.php:464
+msgid "Edit Location"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:398
-msgid "Newest to Oldest"
+#: ../../Zotlabs/Module/Events.php:464 ../../Zotlabs/Module/Locs.php:117
+#: ../../Zotlabs/Module/Profiles.php:477 ../../Zotlabs/Module/Profiles.php:698
+#: ../../Zotlabs/Module/Pubsites.php:41 ../../include/js_strings.php:25
+msgid "Location"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:399
-msgid "Oldest to Newest"
+#: ../../Zotlabs/Module/Events.php:467 ../../Zotlabs/Module/Events.php:469
+msgid "Share this event"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:416
-msgid "No entries (some entries may be hidden)."
+#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Photos.php:1093
+#: ../../Zotlabs/Module/Webpages.php:194 ../../Zotlabs/Lib/ThreadItem.php:719
+#: ../../include/conversation.php:1187 ../../include/page_widgets.php:40
+msgid "Preview"
+msgstr ""
+
+#: ../../Zotlabs/Module/Events.php:471 ../../include/conversation.php:1232
+msgid "Permission settings"
+msgstr ""
+
+#: ../../Zotlabs/Module/Events.php:476
+msgid "Advanced Options"
+msgstr ""
+
+#: ../../Zotlabs/Module/Events.php:610
+msgid "Edit event"
+msgstr ""
+
+#: ../../Zotlabs/Module/Events.php:612
+msgid "Delete event"
+msgstr ""
+
+#: ../../Zotlabs/Module/Events.php:646
+msgid "calendar"
+msgstr ""
+
+#: ../../Zotlabs/Module/Events.php:706
+msgid "Event removed"
+msgstr ""
+
+#: ../../Zotlabs/Module/Events.php:709
+msgid "Failed to remove event"
+msgstr ""
+
+#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:220
+#: ../../include/nav.php:92 ../../include/conversation.php:1632
+msgid "Photos"
+msgstr ""
+
+#: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88
+#: ../../Zotlabs/Module/Admin.php:1406 ../../Zotlabs/Module/Settings.php:591
+#: ../../Zotlabs/Module/Settings.php:617 ../../Zotlabs/Module/Tagrm.php:15
+#: ../../Zotlabs/Module/Tagrm.php:138 ../../include/conversation.php:1259
+msgid "Cancel"
msgstr ""
#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49
@@ -2355,12 +1463,19 @@ msgstr ""
msgid "This directory server requires an access token"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:49
-#: ../../Zotlabs/Module/Group.php:72 ../../Zotlabs/Module/Import_items.php:112
-#: ../../Zotlabs/Module/Like.php:284 ../../Zotlabs/Module/Profperm.php:28
-#: ../../Zotlabs/Module/Subthread.php:62 ../../include/items.php:423
-#: ../../index.php:173
-msgid "Permission denied"
+#: ../../Zotlabs/Module/Filer.php:52
+msgid "Save to Folder:"
+msgstr ""
+
+#: ../../Zotlabs/Module/Filer.php:52
+msgid "- select -"
+msgstr ""
+
+#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Admin.php:2033
+#: ../../Zotlabs/Module/Admin.php:2053 ../../Zotlabs/Module/Rbmark.php:32
+#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/text.php:946
+#: ../../include/text.php:958 ../../include/widgets.php:201
+msgid "Save"
msgstr ""
#: ../../Zotlabs/Module/Dreport.php:27
@@ -2420,92 +1535,6 @@ msgstr ""
msgid "mail delivered"
msgstr ""
-#: ../../Zotlabs/Module/Editblock.php:78 ../../Zotlabs/Module/Editblock.php:94
-#: ../../Zotlabs/Module/Editlayout.php:79 ../../Zotlabs/Module/Editpost.php:24
-#: ../../Zotlabs/Module/Editwebpage.php:81
-msgid "Item not found"
-msgstr ""
-
-#: ../../Zotlabs/Module/Editblock.php:118
-msgid "Delete block?"
-msgstr ""
-
-#: ../../Zotlabs/Module/Editblock.php:137
-#: ../../Zotlabs/Module/Editwebpage.php:182 ../../include/ItemObject.php:704
-#: ../../include/conversation.php:1225
-msgid "Bold"
-msgstr ""
-
-#: ../../Zotlabs/Module/Editblock.php:138
-#: ../../Zotlabs/Module/Editwebpage.php:183 ../../include/ItemObject.php:705
-#: ../../include/conversation.php:1226
-msgid "Italic"
-msgstr ""
-
-#: ../../Zotlabs/Module/Editblock.php:139
-#: ../../Zotlabs/Module/Editwebpage.php:184 ../../include/ItemObject.php:706
-#: ../../include/conversation.php:1227
-msgid "Underline"
-msgstr ""
-
-#: ../../Zotlabs/Module/Editblock.php:140
-#: ../../Zotlabs/Module/Editwebpage.php:185 ../../include/ItemObject.php:707
-#: ../../include/conversation.php:1228
-msgid "Quote"
-msgstr ""
-
-#: ../../Zotlabs/Module/Editblock.php:141
-#: ../../Zotlabs/Module/Editwebpage.php:186 ../../include/ItemObject.php:708
-#: ../../include/conversation.php:1229
-msgid "Code"
-msgstr ""
-
-#: ../../Zotlabs/Module/Editblock.php:143
-#: ../../Zotlabs/Module/Editwebpage.php:187 ../../Zotlabs/Module/Mail.php:252
-#: ../../Zotlabs/Module/Mail.php:382 ../../include/conversation.php:1230
-msgid "Attach file"
-msgstr ""
-
-#: ../../Zotlabs/Module/Editblock.php:147
-#: ../../Zotlabs/Module/Editwebpage.php:191
-#: ../../Zotlabs/Module/Events.php:470 ../../include/conversation.php:1242
-msgid "Permission settings"
-msgstr ""
-
-#: ../../Zotlabs/Module/Editblock.php:155
-#: ../../Zotlabs/Module/Editwebpage.php:200
-msgid "Public post"
-msgstr ""
-
-#: ../../Zotlabs/Module/Editblock.php:158
-#: ../../Zotlabs/Module/Editwebpage.php:205
-#: ../../include/conversation.php:1238
-msgid "Title (optional)"
-msgstr ""
-
-#: ../../Zotlabs/Module/Editblock.php:161
-#: ../../Zotlabs/Module/Editwebpage.php:207
-#: ../../include/conversation.php:1241
-msgid "Categories (optional, comma-separated list)"
-msgstr ""
-
-#: ../../Zotlabs/Module/Editblock.php:162
-#: ../../Zotlabs/Module/Editwebpage.php:208
-msgid "Example: bob@example.com, mary@example.com"
-msgstr ""
-
-#: ../../Zotlabs/Module/Editblock.php:167
-#: ../../Zotlabs/Module/Editwebpage.php:212
-#: ../../Zotlabs/Module/Events.php:469 ../../Zotlabs/Module/Photos.php:1092
-#: ../../Zotlabs/Module/Webpages.php:196 ../../include/ItemObject.php:712
-#: ../../include/conversation.php:1197 ../../include/page_widgets.php:40
-msgid "Preview"
-msgstr ""
-
-#: ../../Zotlabs/Module/Editblock.php:175
-msgid "Edit Block"
-msgstr ""
-
#: ../../Zotlabs/Module/Editlayout.php:126
#: ../../Zotlabs/Module/Layouts.php:127 ../../Zotlabs/Module/Layouts.php:186
msgid "Layout Name"
@@ -2520,312 +1549,321 @@ msgstr ""
msgid "Edit Layout"
msgstr ""
-#: ../../Zotlabs/Module/Editpost.php:35
-msgid "Item is not editable"
+#: ../../Zotlabs/Module/Editwebpage.php:143
+msgid "Page link"
msgstr ""
-#: ../../Zotlabs/Module/Editpost.php:105 ../../Zotlabs/Module/Rpost.php:134
-msgid "Edit post"
+#: ../../Zotlabs/Module/Editwebpage.php:169
+msgid "Edit Webpage"
msgstr ""
-#: ../../Zotlabs/Module/Editwebpage.php:157
-msgid "Delete webpage?"
+#: ../../Zotlabs/Module/Follow.php:34
+msgid "Channel added."
msgstr ""
-#: ../../Zotlabs/Module/Editwebpage.php:177
-msgid "Page link title"
+#: ../../Zotlabs/Module/Acl.php:227
+msgid "network"
msgstr ""
-#: ../../Zotlabs/Module/Editwebpage.php:220
-msgid "Edit Webpage"
+#: ../../Zotlabs/Module/Acl.php:237
+msgid "RSS"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:25
-msgid "Calendar entries imported."
+#: ../../Zotlabs/Module/Group.php:24
+msgid "Privacy group created."
msgstr ""
-#: ../../Zotlabs/Module/Events.php:27
-msgid "No calendar entries found."
+#: ../../Zotlabs/Module/Group.php:30
+msgid "Could not create privacy group."
msgstr ""
-#: ../../Zotlabs/Module/Events.php:104
-msgid "Event can not end before it has started."
+#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141
+#: ../../include/items.php:3893
+msgid "Privacy group not found."
msgstr ""
-#: ../../Zotlabs/Module/Events.php:106 ../../Zotlabs/Module/Events.php:115
-#: ../../Zotlabs/Module/Events.php:135
-msgid "Unable to generate preview."
+#: ../../Zotlabs/Module/Group.php:58
+msgid "Privacy group updated."
msgstr ""
-#: ../../Zotlabs/Module/Events.php:113
-msgid "Event title and start time are required."
+#: ../../Zotlabs/Module/Group.php:90
+msgid "Create a group of channels."
msgstr ""
-#: ../../Zotlabs/Module/Events.php:133 ../../Zotlabs/Module/Events.php:258
-msgid "Event not found."
+#: ../../Zotlabs/Module/Group.php:91 ../../Zotlabs/Module/Group.php:184
+msgid "Privacy group name: "
msgstr ""
-#: ../../Zotlabs/Module/Events.php:253 ../../Zotlabs/Module/Like.php:373
-#: ../../Zotlabs/Module/Tagger.php:51 ../../include/event.php:915
-#: ../../include/text.php:1972 ../../include/conversation.php:123
-msgid "event"
+#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Group.php:187
+msgid "Members are visible to other channels"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:448
-msgid "Edit event title"
+#: ../../Zotlabs/Module/Group.php:111
+msgid "Privacy group removed."
msgstr ""
-#: ../../Zotlabs/Module/Events.php:448
-msgid "Event title"
+#: ../../Zotlabs/Module/Group.php:113
+msgid "Unable to remove privacy group."
msgstr ""
-#: ../../Zotlabs/Module/Events.php:450
-msgid "Categories (comma-separated list)"
+#: ../../Zotlabs/Module/Group.php:183
+msgid "Privacy group editor"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:451
-msgid "Edit Category"
+#: ../../Zotlabs/Module/Group.php:197
+msgid "Members"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:451
-msgid "Category"
+#: ../../Zotlabs/Module/Group.php:199
+msgid "All Connected Channels"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:454
-msgid "Edit start date and time"
+#: ../../Zotlabs/Module/Group.php:231
+msgid "Click on a channel to add or remove."
msgstr ""
-#: ../../Zotlabs/Module/Events.php:454
-msgid "Start date and time"
+#: ../../Zotlabs/Module/Ffsapi.php:12
+msgid "Share content from Firefox to $Projectname"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:455 ../../Zotlabs/Module/Events.php:458
-msgid "Finish date and time are not known or not relevant"
+#: ../../Zotlabs/Module/Ffsapi.php:15
+msgid "Activate the Firefox $Projectname provider"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:457
-msgid "Edit finish date and time"
+#: ../../Zotlabs/Module/Api.php:61 ../../Zotlabs/Module/Api.php:85
+msgid "Authorize application connection"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:457
-msgid "Finish date and time"
+#: ../../Zotlabs/Module/Api.php:62
+msgid "Return to your app and insert this Securty Code:"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:460
-msgid "Adjust for viewer timezone"
+#: ../../Zotlabs/Module/Api.php:72
+msgid "Please login to continue."
msgstr ""
-#: ../../Zotlabs/Module/Events.php:459
+#: ../../Zotlabs/Module/Api.php:87
msgid ""
-"Important for events that happen in a particular place. Not practical for "
-"global holidays."
+"Do you want to authorize this application to access your posts and contacts, "
+"and/or create new posts for you?"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:461
-msgid "Edit Description"
+#: ../../Zotlabs/Module/Help.php:26
+msgid "Documentation Search"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:463
-msgid "Edit Location"
+#: ../../Zotlabs/Module/Help.php:67 ../../Zotlabs/Module/Help.php:73
+#: ../../Zotlabs/Module/Help.php:79
+msgid "Help:"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:463 ../../Zotlabs/Module/Locs.php:117
-#: ../../Zotlabs/Module/Profiles.php:476 ../../Zotlabs/Module/Profiles.php:702
-#: ../../Zotlabs/Module/Pubsites.php:40 ../../include/js_strings.php:25
-msgid "Location"
+#: ../../Zotlabs/Module/Help.php:85 ../../Zotlabs/Module/Help.php:90
+#: ../../Zotlabs/Module/Layouts.php:183 ../../Zotlabs/Lib/Apps.php:223
+#: ../../include/nav.php:159
+msgid "Help"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:466 ../../Zotlabs/Module/Events.php:468
-msgid "Share this event"
+#: ../../Zotlabs/Module/Help.php:120
+msgid "$Projectname Documentation"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:473
-msgid "Advanced Options"
+#: ../../Zotlabs/Module/Filestorage.php:88
+msgid "Permission Denied."
msgstr ""
-#: ../../Zotlabs/Module/Events.php:607
-msgid "Edit event"
+#: ../../Zotlabs/Module/Filestorage.php:104
+msgid "File not found."
msgstr ""
-#: ../../Zotlabs/Module/Events.php:609
-msgid "Delete event"
+#: ../../Zotlabs/Module/Filestorage.php:147
+msgid "Edit file permissions"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:643
-msgid "calendar"
+#: ../../Zotlabs/Module/Filestorage.php:156
+msgid "Set/edit permissions"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:703
-msgid "Event removed"
+#: ../../Zotlabs/Module/Filestorage.php:157
+msgid "Include all files and sub folders"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:706
-msgid "Failed to remove event"
+#: ../../Zotlabs/Module/Filestorage.php:158
+msgid "Return to file list"
msgstr ""
-#: ../../Zotlabs/Module/Fbrowser.php:29 ../../include/apps.php:171
-#: ../../include/conversation.php:1642 ../../include/nav.php:92
-msgid "Photos"
+#: ../../Zotlabs/Module/Filestorage.php:160
+msgid "Copy/paste this code to attach file to a post"
msgstr ""
-#: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88
-#: ../../Zotlabs/Module/Settings.php:589 ../../Zotlabs/Module/Settings.php:615
-#: ../../Zotlabs/Module/Tagrm.php:15 ../../Zotlabs/Module/Tagrm.php:138
-#: ../../include/conversation.php:1269
-msgid "Cancel"
+#: ../../Zotlabs/Module/Filestorage.php:161
+msgid "Copy/paste this URL to link file from a web page"
msgstr ""
-#: ../../Zotlabs/Module/Ffsapi.php:12
-msgid "Share content from Firefox to $Projectname"
+#: ../../Zotlabs/Module/Filestorage.php:163
+msgid "Share this file"
msgstr ""
-#: ../../Zotlabs/Module/Ffsapi.php:15
-msgid "Activate the Firefox $Projectname provider"
+#: ../../Zotlabs/Module/Filestorage.php:164
+msgid "Show URL to this file"
msgstr ""
-#: ../../Zotlabs/Module/Filer.php:52
-msgid "Save to Folder:"
+#: ../../Zotlabs/Module/Filestorage.php:165
+msgid "Notify your contacts about this file"
msgstr ""
-#: ../../Zotlabs/Module/Filer.php:52
-msgid "- select -"
+#: ../../Zotlabs/Module/Apps.php:47 ../../include/widgets.php:102
+#: ../../include/nav.php:163
+msgid "Apps"
msgstr ""
-#: ../../Zotlabs/Module/Filestorage.php:86
-msgid "Permission Denied."
+#: ../../Zotlabs/Module/Attach.php:13
+msgid "Item not available."
msgstr ""
-#: ../../Zotlabs/Module/Filestorage.php:102
-msgid "File not found."
+#: ../../Zotlabs/Module/Import.php:32
+#, php-format
+msgid "Your service plan only allows %d channels."
msgstr ""
-#: ../../Zotlabs/Module/Filestorage.php:145
-msgid "Edit file permissions"
+#: ../../Zotlabs/Module/Import.php:70 ../../Zotlabs/Module/Import_items.php:42
+msgid "Nothing to import."
msgstr ""
-#: ../../Zotlabs/Module/Filestorage.php:154
-msgid "Set/edit permissions"
+#: ../../Zotlabs/Module/Import.php:94 ../../Zotlabs/Module/Import_items.php:66
+msgid "Unable to download data from old server"
msgstr ""
-#: ../../Zotlabs/Module/Filestorage.php:155
-msgid "Include all files and sub folders"
+#: ../../Zotlabs/Module/Import.php:100
+#: ../../Zotlabs/Module/Import_items.php:72
+msgid "Imported file is empty."
msgstr ""
-#: ../../Zotlabs/Module/Filestorage.php:156
-msgid "Return to file list"
+#: ../../Zotlabs/Module/Import.php:122
+#: ../../Zotlabs/Module/Import_items.php:86
+#, php-format
+msgid "Warning: Database versions differ by %1$d updates."
msgstr ""
-#: ../../Zotlabs/Module/Filestorage.php:158
-msgid "Copy/paste this code to attach file to a post"
+#: ../../Zotlabs/Module/Import.php:150 ../../include/import.php:86
+msgid "Cloned channel not found. Import failed."
msgstr ""
-#: ../../Zotlabs/Module/Filestorage.php:159
-msgid "Copy/paste this URL to link file from a web page"
+#: ../../Zotlabs/Module/Import.php:160
+msgid "No channel. Import failed."
msgstr ""
-#: ../../Zotlabs/Module/Filestorage.php:161
-msgid "Share this file"
+#: ../../Zotlabs/Module/Import.php:510
+#: ../../include/Import/import_diaspora.php:142
+msgid "Import completed."
msgstr ""
-#: ../../Zotlabs/Module/Filestorage.php:162
-msgid "Show URL to this file"
+#: ../../Zotlabs/Module/Import.php:532
+msgid "You must be logged in to use this feature."
msgstr ""
-#: ../../Zotlabs/Module/Filestorage.php:163
-msgid "Notify your contacts about this file"
+#: ../../Zotlabs/Module/Import.php:537
+msgid "Import Channel"
msgstr ""
-#: ../../Zotlabs/Module/Follow.php:34
-msgid "Channel added."
+#: ../../Zotlabs/Module/Import.php:538
+msgid ""
+"Use this form to import an existing channel from a different server/hub. You "
+"may retrieve the channel identity from the old server/hub via the network or "
+"provide an export file."
msgstr ""
-#: ../../Zotlabs/Module/Fsuggest.php:24 ../../Zotlabs/Module/Fsuggest.php:96
-msgid "Contact not found."
+#: ../../Zotlabs/Module/Import.php:539
+#: ../../Zotlabs/Module/Import_items.php:119
+msgid "File to Upload"
msgstr ""
-#: ../../Zotlabs/Module/Fsuggest.php:67
-msgid "Friend suggestion sent."
+#: ../../Zotlabs/Module/Import.php:540
+msgid "Or provide the old server/hub details"
msgstr ""
-#: ../../Zotlabs/Module/Fsuggest.php:101
-msgid "Suggest Friends"
+#: ../../Zotlabs/Module/Import.php:541
+msgid "Your old identity address (xyz@example.com)"
msgstr ""
-#: ../../Zotlabs/Module/Fsuggest.php:103
-#, php-format
-msgid "Suggest a friend for %s"
+#: ../../Zotlabs/Module/Import.php:542
+msgid "Your old login email address"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:24
-msgid "Privacy group created."
+#: ../../Zotlabs/Module/Import.php:543
+msgid "Your old login password"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:30
-msgid "Could not create privacy group."
+#: ../../Zotlabs/Module/Import.php:544
+msgid ""
+"For either option, please choose whether to make this hub your new primary "
+"address, or whether your old location should continue this role. You will be "
+"able to post from either location, but only one can be marked as the primary "
+"location for files, photos, and media."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141
-#: ../../include/items.php:5160
-msgid "Privacy group not found."
+#: ../../Zotlabs/Module/Import.php:545
+msgid "Make this hub my primary location"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:58
-msgid "Privacy group updated."
+#: ../../Zotlabs/Module/Import.php:546
+msgid ""
+"Import existing posts if possible (experimental - limited by available memory"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:90
-msgid "Create a group of channels."
+#: ../../Zotlabs/Module/Import.php:547
+msgid ""
+"This process may take several minutes to complete. Please submit the form "
+"only once and leave this page open until finished."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:91 ../../Zotlabs/Module/Group.php:184
-msgid "Privacy group name: "
+#: ../../Zotlabs/Module/Item.php:178
+msgid "Unable to locate original post."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Group.php:187
-msgid "Members are visible to other channels"
+#: ../../Zotlabs/Module/Item.php:427
+msgid "Empty post discarded."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:111
-msgid "Privacy group removed."
+#: ../../Zotlabs/Module/Item.php:467
+msgid "Executable content type not permitted to this channel."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:113
-msgid "Unable to remove privacy group."
+#: ../../Zotlabs/Module/Item.php:847
+msgid "Duplicate post suppressed."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:183
-msgid "Privacy group editor"
+#: ../../Zotlabs/Module/Item.php:977
+msgid "System error. Post not saved."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:197
-msgid "Members"
+#: ../../Zotlabs/Module/Item.php:1241
+msgid "Unable to obtain post information from database."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:199
-msgid "All Connected Channels"
+#: ../../Zotlabs/Module/Item.php:1248
+#, php-format
+msgid "You have reached your limit of %1$.0f top level posts."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:231
-msgid "Click on a channel to add or remove."
+#: ../../Zotlabs/Module/Item.php:1255
+#, php-format
+msgid "You have reached your limit of %1$.0f webpages."
msgstr ""
-#: ../../Zotlabs/Module/Help.php:26
-msgid "Documentation Search"
+#: ../../Zotlabs/Module/Layouts.php:181 ../../include/text.php:2267
+msgid "Layouts"
msgstr ""
-#: ../../Zotlabs/Module/Help.php:67 ../../Zotlabs/Module/Help.php:73
-#: ../../Zotlabs/Module/Help.php:79
-msgid "Help:"
+#: ../../Zotlabs/Module/Layouts.php:183
+msgid "Comanche page description language help"
msgstr ""
-#: ../../Zotlabs/Module/Help.php:85 ../../Zotlabs/Module/Help.php:90
-#: ../../Zotlabs/Module/Layouts.php:183 ../../include/apps.php:174
-#: ../../include/nav.php:159
-msgid "Help"
+#: ../../Zotlabs/Module/Layouts.php:187
+msgid "Layout Description"
msgstr ""
-#: ../../Zotlabs/Module/Help.php:120
-msgid "$Projectname Documentation"
+#: ../../Zotlabs/Module/Layouts.php:192
+msgid "Download PDL file"
msgstr ""
#: ../../Zotlabs/Module/Home.php:61 ../../Zotlabs/Module/Home.php:69
@@ -2854,8 +1892,14 @@ msgstr ""
msgid "Full Name"
msgstr ""
+#: ../../Zotlabs/Module/Id.php:17 ../../Zotlabs/Module/Id.php:18
+#: ../../Zotlabs/Module/Admin.php:1035 ../../Zotlabs/Module/Admin.php:1047
+#: ../../include/network.php:2151 ../../boot.php:1705
+msgid "Email"
+msgstr ""
+
#: ../../Zotlabs/Module/Id.php:19 ../../Zotlabs/Module/Id.php:20
-#: ../../Zotlabs/Module/Id.php:21 ../../include/apps.php:187
+#: ../../Zotlabs/Module/Id.php:21 ../../Zotlabs/Lib/Apps.php:236
msgid "Profile Photo"
msgstr ""
@@ -2887,11 +1931,11 @@ msgstr ""
msgid "Timezone"
msgstr ""
-#: ../../Zotlabs/Module/Id.php:29 ../../Zotlabs/Module/Profiles.php:735
+#: ../../Zotlabs/Module/Id.php:29 ../../Zotlabs/Module/Profiles.php:731
msgid "Homepage URL"
msgstr ""
-#: ../../Zotlabs/Module/Id.php:30 ../../include/apps.php:185
+#: ../../Zotlabs/Module/Id.php:30 ../../Zotlabs/Lib/Apps.php:234
msgid "Language"
msgstr ""
@@ -2911,33 +1955,33 @@ msgstr ""
msgid "Birthdate"
msgstr ""
-#: ../../Zotlabs/Module/Id.php:35 ../../Zotlabs/Module/Profiles.php:453
+#: ../../Zotlabs/Module/Id.php:35 ../../Zotlabs/Module/Profiles.php:454
msgid "Gender"
msgstr ""
-#: ../../Zotlabs/Module/Id.php:108 ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
+#: ../../Zotlabs/Module/Id.php:108 ../../include/selectors.php:49
+#: ../../include/selectors.php:66
msgid "Male"
msgstr ""
-#: ../../Zotlabs/Module/Id.php:110 ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
+#: ../../Zotlabs/Module/Id.php:110 ../../include/selectors.php:49
+#: ../../include/selectors.php:66
msgid "Female"
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:193
+#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:192
msgid "webpage"
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:199
+#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:198
msgid "block"
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:196
+#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:195
msgid "layout"
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:202
+#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:201
msgid "menu"
msgstr ""
@@ -2951,100 +1995,98 @@ msgstr ""
msgid "%s element installation failed"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:32
-#, php-format
-msgid "Your service plan only allows %d channels."
+#: ../../Zotlabs/Module/Like.php:19
+msgid "Like/Dislike"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:70 ../../Zotlabs/Module/Import_items.php:42
-msgid "Nothing to import."
+#: ../../Zotlabs/Module/Like.php:24
+msgid "This action is restricted to members."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:94 ../../Zotlabs/Module/Import_items.php:66
-msgid "Unable to download data from old server"
+#: ../../Zotlabs/Module/Like.php:25
+msgid ""
+"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a href="
+"\"register\">register as a new $Projectname member</a> to continue."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:100
-#: ../../Zotlabs/Module/Import_items.php:72
-msgid "Imported file is empty."
+#: ../../Zotlabs/Module/Like.php:105 ../../Zotlabs/Module/Like.php:131
+#: ../../Zotlabs/Module/Like.php:169
+msgid "Invalid request."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:122
-#: ../../Zotlabs/Module/Import_items.php:86
-#, php-format
-msgid "Warning: Database versions differ by %1$d updates."
+#: ../../Zotlabs/Module/Like.php:117 ../../include/conversation.php:126
+msgid "channel"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:150 ../../include/import.php:80
-msgid "Cloned channel not found. Import failed."
+#: ../../Zotlabs/Module/Like.php:146
+msgid "thing"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:160
-msgid "No channel. Import failed."
+#: ../../Zotlabs/Module/Like.php:192
+msgid "Channel unavailable."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:506
-#: ../../include/Import/import_diaspora.php:143
-msgid "Import completed."
+#: ../../Zotlabs/Module/Like.php:240
+msgid "Previous action reversed."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:528
-msgid "You must be logged in to use this feature."
+#: ../../Zotlabs/Module/Like.php:371 ../../Zotlabs/Module/Subthread.php:87
+#: ../../Zotlabs/Module/Tagger.php:47 ../../include/text.php:1940
+#: ../../include/conversation.php:120
+msgid "photo"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:533
-msgid "Import Channel"
+#: ../../Zotlabs/Module/Like.php:371 ../../Zotlabs/Module/Subthread.php:87
+#: ../../include/text.php:1946 ../../include/conversation.php:148
+msgid "status"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:534
-msgid ""
-"Use this form to import an existing channel from a different server/hub. You "
-"may retrieve the channel identity from the old server/hub via the network or "
-"provide an export file."
+#: ../../Zotlabs/Module/Like.php:420 ../../include/conversation.php:164
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:535
-#: ../../Zotlabs/Module/Import_items.php:119
-msgid "File to Upload"
+#: ../../Zotlabs/Module/Like.php:422 ../../include/conversation.php:167
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:536
-msgid "Or provide the old server/hub details"
+#: ../../Zotlabs/Module/Like.php:424
+#, php-format
+msgid "%1$s agrees with %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:537
-msgid "Your old identity address (xyz@example.com)"
+#: ../../Zotlabs/Module/Like.php:426
+#, php-format
+msgid "%1$s doesn't agree with %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:538
-msgid "Your old login email address"
+#: ../../Zotlabs/Module/Like.php:428
+#, php-format
+msgid "%1$s abstains from a decision on %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:539
-msgid "Your old login password"
+#: ../../Zotlabs/Module/Like.php:430
+#, php-format
+msgid "%1$s is attending %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:540
-msgid ""
-"For either option, please choose whether to make this hub your new primary "
-"address, or whether your old location should continue this role. You will be "
-"able to post from either location, but only one can be marked as the primary "
-"location for files, photos, and media."
+#: ../../Zotlabs/Module/Like.php:432
+#, php-format
+msgid "%1$s is not attending %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:541
-msgid "Make this hub my primary location"
+#: ../../Zotlabs/Module/Like.php:434
+#, php-format
+msgid "%1$s may attend %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:542
-msgid ""
-"Import existing posts if possible (experimental - limited by available memory"
+#: ../../Zotlabs/Module/Like.php:537
+msgid "Action completed."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:543
-msgid ""
-"This process may take several minutes to complete. Please submit the form "
-"only once and leave this page open until finished."
+#: ../../Zotlabs/Module/Like.php:538
+msgid "Thank you."
msgstr ""
#: ../../Zotlabs/Module/Import_items.php:102
@@ -3100,7 +2142,7 @@ msgstr ""
msgid "Enter email addresses, one per line:"
msgstr ""
-#: ../../Zotlabs/Module/Invite.php:135 ../../Zotlabs/Module/Mail.php:250
+#: ../../Zotlabs/Module/Invite.php:135 ../../Zotlabs/Module/Mail.php:249
msgid "Your message:"
msgstr ""
@@ -3128,150 +2170,6 @@ msgstr ""
msgid "3. Click [Connect]"
msgstr ""
-#: ../../Zotlabs/Module/Item.php:178
-msgid "Unable to locate original post."
-msgstr ""
-
-#: ../../Zotlabs/Module/Item.php:427
-msgid "Empty post discarded."
-msgstr ""
-
-#: ../../Zotlabs/Module/Item.php:467
-msgid "Executable content type not permitted to this channel."
-msgstr ""
-
-#: ../../Zotlabs/Module/Item.php:847
-msgid "Duplicate post suppressed."
-msgstr ""
-
-#: ../../Zotlabs/Module/Item.php:977
-msgid "System error. Post not saved."
-msgstr ""
-
-#: ../../Zotlabs/Module/Item.php:1241
-msgid "Unable to obtain post information from database."
-msgstr ""
-
-#: ../../Zotlabs/Module/Item.php:1248
-#, php-format
-msgid "You have reached your limit of %1$.0f top level posts."
-msgstr ""
-
-#: ../../Zotlabs/Module/Item.php:1255
-#, php-format
-msgid "You have reached your limit of %1$.0f webpages."
-msgstr ""
-
-#: ../../Zotlabs/Module/Layouts.php:181 ../../include/text.php:2282
-msgid "Layouts"
-msgstr ""
-
-#: ../../Zotlabs/Module/Layouts.php:183
-msgid "Comanche page description language help"
-msgstr ""
-
-#: ../../Zotlabs/Module/Layouts.php:187
-msgid "Layout Description"
-msgstr ""
-
-#: ../../Zotlabs/Module/Layouts.php:192
-msgid "Download PDL file"
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:19
-msgid "Like/Dislike"
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:24
-msgid "This action is restricted to members."
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:25
-msgid ""
-"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a href="
-"\"register\">register as a new $Projectname member</a> to continue."
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:105 ../../Zotlabs/Module/Like.php:131
-#: ../../Zotlabs/Module/Like.php:169
-msgid "Invalid request."
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:117 ../../include/conversation.php:126
-msgid "channel"
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:146
-msgid "thing"
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:192
-msgid "Channel unavailable."
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:240
-msgid "Previous action reversed."
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:371 ../../Zotlabs/Module/Subthread.php:87
-#: ../../Zotlabs/Module/Tagger.php:47 ../../include/text.php:1969
-#: ../../include/conversation.php:120
-msgid "photo"
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:371 ../../Zotlabs/Module/Subthread.php:87
-#: ../../include/text.php:1975 ../../include/conversation.php:148
-msgid "status"
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:420 ../../include/conversation.php:164
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:422 ../../include/conversation.php:167
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:424
-#, php-format
-msgid "%1$s agrees with %2$s's %3$s"
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:426
-#, php-format
-msgid "%1$s doesn't agree with %2$s's %3$s"
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:428
-#, php-format
-msgid "%1$s abstains from a decision on %2$s's %3$s"
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:430
-#, php-format
-msgid "%1$s is attending %2$s's %3$s"
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:432
-#, php-format
-msgid "%1$s is not attending %2$s's %3$s"
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:434
-#, php-format
-msgid "%1$s may attend %2$s's %3$s"
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:537
-msgid "Action completed."
-msgstr ""
-
-#: ../../Zotlabs/Module/Like.php:538
-msgid "Thank you."
-msgstr ""
-
#: ../../Zotlabs/Module/Lockview.php:61
msgid "Remote privacy information not available."
msgstr ""
@@ -3306,6 +2204,11 @@ msgstr ""
msgid "Manage Channel Locations"
msgstr ""
+#: ../../Zotlabs/Module/Locs.php:118 ../../Zotlabs/Module/Profiles.php:470
+#: ../../Zotlabs/Module/Admin.php:1224
+msgid "Address"
+msgstr ""
+
#: ../../Zotlabs/Module/Locs.php:119
msgid "Primary"
msgstr ""
@@ -3332,80 +2235,7 @@ msgstr ""
msgid "Use this form to drop the location if the hub is no longer operating."
msgstr ""
-#: ../../Zotlabs/Module/Lostpass.php:19
-msgid "No valid account found."
-msgstr ""
-
-#: ../../Zotlabs/Module/Lostpass.php:33
-msgid "Password reset request issued. Check your email."
-msgstr ""
-
-#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:107
-#, php-format
-msgid "Site Member (%s)"
-msgstr ""
-
-#: ../../Zotlabs/Module/Lostpass.php:44
-#, php-format
-msgid "Password reset requested at %s"
-msgstr ""
-
-#: ../../Zotlabs/Module/Lostpass.php:67
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr ""
-
-#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1623
-msgid "Password Reset"
-msgstr ""
-
-#: ../../Zotlabs/Module/Lostpass.php:91
-msgid "Your password has been reset as requested."
-msgstr ""
-
-#: ../../Zotlabs/Module/Lostpass.php:92
-msgid "Your new password is"
-msgstr ""
-
-#: ../../Zotlabs/Module/Lostpass.php:93
-msgid "Save or copy your new password - and then"
-msgstr ""
-
-#: ../../Zotlabs/Module/Lostpass.php:94
-msgid "click here to login"
-msgstr ""
-
-#: ../../Zotlabs/Module/Lostpass.php:95
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr ""
-
-#: ../../Zotlabs/Module/Lostpass.php:112
-#, php-format
-msgid "Your password has changed at %s"
-msgstr ""
-
-#: ../../Zotlabs/Module/Lostpass.php:127
-msgid "Forgot your Password?"
-msgstr ""
-
-#: ../../Zotlabs/Module/Lostpass.php:128
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr ""
-
-#: ../../Zotlabs/Module/Lostpass.php:129
-msgid "Email Address"
-msgstr ""
-
-#: ../../Zotlabs/Module/Lostpass.php:130
-msgid "Reset"
-msgstr ""
-
-#: ../../Zotlabs/Module/Magic.php:73
+#: ../../Zotlabs/Module/Magic.php:71
msgid "Hub not found."
msgstr ""
@@ -3413,153 +2243,215 @@ msgstr ""
msgid "Unable to lookup recipient."
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:46
+#: ../../Zotlabs/Module/Mail.php:45
msgid "Unable to communicate with requested channel."
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:53
+#: ../../Zotlabs/Module/Mail.php:52
msgid "Cannot verify requested channel."
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:79
+#: ../../Zotlabs/Module/Mail.php:78
msgid "Selected channel has private message restrictions. Send failed."
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:144
+#: ../../Zotlabs/Module/Mail.php:143
msgid "Messages"
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:179
+#: ../../Zotlabs/Module/Mail.php:178
msgid "Message recalled."
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:192
+#: ../../Zotlabs/Module/Mail.php:191
msgid "Conversation removed."
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:207 ../../Zotlabs/Module/Mail.php:321
+#: ../../Zotlabs/Module/Mail.php:206 ../../Zotlabs/Module/Mail.php:315
msgid "Expires YYYY-MM-DD HH:MM"
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:235
+#: ../../Zotlabs/Module/Mail.php:234
msgid "Requested channel is not in this network"
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:243
+#: ../../Zotlabs/Module/Mail.php:242
msgid "Send Private Message"
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:244 ../../Zotlabs/Module/Mail.php:374
+#: ../../Zotlabs/Module/Mail.php:243 ../../Zotlabs/Module/Mail.php:368
msgid "To:"
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:247 ../../Zotlabs/Module/Mail.php:376
+#: ../../Zotlabs/Module/Mail.php:246 ../../Zotlabs/Module/Mail.php:370
msgid "Subject:"
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:254
+#: ../../Zotlabs/Module/Mail.php:251 ../../Zotlabs/Module/Mail.php:376
+#: ../../include/conversation.php:1220
+msgid "Attach file"
+msgstr ""
+
+#: ../../Zotlabs/Module/Mail.php:253
msgid "Send"
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:257 ../../Zotlabs/Module/Mail.php:387
-#: ../../include/conversation.php:1261
+#: ../../Zotlabs/Module/Mail.php:256 ../../Zotlabs/Module/Mail.php:381
+#: ../../include/conversation.php:1251
msgid "Set expiration date"
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:346
+#: ../../Zotlabs/Module/Mail.php:340
msgid "Delete message"
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:347
+#: ../../Zotlabs/Module/Mail.php:341
msgid "Delivery report"
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:348
+#: ../../Zotlabs/Module/Mail.php:342
msgid "Recall message"
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:350
+#: ../../Zotlabs/Module/Mail.php:344
msgid "Message has been recalled."
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:367
+#: ../../Zotlabs/Module/Mail.php:361
msgid "Delete Conversation"
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:369
+#: ../../Zotlabs/Module/Mail.php:363
msgid ""
"No secure communications available. You <strong>may</strong> be able to "
"respond from the sender's profile page."
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:373
+#: ../../Zotlabs/Module/Mail.php:367
msgid "Send Reply"
msgstr ""
-#: ../../Zotlabs/Module/Mail.php:378
+#: ../../Zotlabs/Module/Mail.php:372
#, php-format
msgid "Your message for %s (%s):"
msgstr ""
-#: ../../Zotlabs/Module/Manage.php:134
+#: ../../Zotlabs/Module/Manage.php:136
#: ../../Zotlabs/Module/New_channel.php:121
#, php-format
msgid "You have created %1$.0f of %2$.0f allowed channels."
msgstr ""
-#: ../../Zotlabs/Module/Manage.php:141
+#: ../../Zotlabs/Module/Manage.php:143
msgid "Create a new channel"
msgstr ""
-#: ../../Zotlabs/Module/Manage.php:162 ../../include/apps.php:164
+#: ../../Zotlabs/Module/Manage.php:164 ../../Zotlabs/Lib/Apps.php:213
#: ../../include/nav.php:206
msgid "Channel Manager"
msgstr ""
-#: ../../Zotlabs/Module/Manage.php:163
+#: ../../Zotlabs/Module/Manage.php:165
msgid "Current Channel"
msgstr ""
-#: ../../Zotlabs/Module/Manage.php:165
+#: ../../Zotlabs/Module/Manage.php:167
msgid "Switch to one of your channels by selecting it."
msgstr ""
-#: ../../Zotlabs/Module/Manage.php:166
+#: ../../Zotlabs/Module/Manage.php:168
msgid "Default Channel"
msgstr ""
-#: ../../Zotlabs/Module/Manage.php:167
+#: ../../Zotlabs/Module/Manage.php:169
msgid "Make Default"
msgstr ""
-#: ../../Zotlabs/Module/Manage.php:170
+#: ../../Zotlabs/Module/Manage.php:172
#, php-format
msgid "%d new messages"
msgstr ""
-#: ../../Zotlabs/Module/Manage.php:171
+#: ../../Zotlabs/Module/Manage.php:173
#, php-format
msgid "%d new introductions"
msgstr ""
-#: ../../Zotlabs/Module/Manage.php:173
+#: ../../Zotlabs/Module/Manage.php:175
msgid "Delegated Channel"
msgstr ""
-#: ../../Zotlabs/Module/Match.php:26
-msgid "Profile Match"
+#: ../../Zotlabs/Module/Lostpass.php:19
+msgid "No valid account found."
msgstr ""
-#: ../../Zotlabs/Module/Match.php:35
-msgid "No keywords to match. Please add keywords to your default profile."
+#: ../../Zotlabs/Module/Lostpass.php:33
+msgid "Password reset request issued. Check your email."
msgstr ""
-#: ../../Zotlabs/Module/Match.php:67
-msgid "is interested in:"
+#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:107
+#, php-format
+msgid "Site Member (%s)"
msgstr ""
-#: ../../Zotlabs/Module/Match.php:74
-msgid "No matches"
+#: ../../Zotlabs/Module/Lostpass.php:44
+#, php-format
+msgid "Password reset requested at %s"
+msgstr ""
+
+#: ../../Zotlabs/Module/Lostpass.php:67
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr ""
+
+#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1711
+msgid "Password Reset"
+msgstr ""
+
+#: ../../Zotlabs/Module/Lostpass.php:91
+msgid "Your password has been reset as requested."
+msgstr ""
+
+#: ../../Zotlabs/Module/Lostpass.php:92
+msgid "Your new password is"
+msgstr ""
+
+#: ../../Zotlabs/Module/Lostpass.php:93
+msgid "Save or copy your new password - and then"
+msgstr ""
+
+#: ../../Zotlabs/Module/Lostpass.php:94
+msgid "click here to login"
+msgstr ""
+
+#: ../../Zotlabs/Module/Lostpass.php:95
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr ""
+
+#: ../../Zotlabs/Module/Lostpass.php:112
+#, php-format
+msgid "Your password has changed at %s"
+msgstr ""
+
+#: ../../Zotlabs/Module/Lostpass.php:127
+msgid "Forgot your Password?"
+msgstr ""
+
+#: ../../Zotlabs/Module/Lostpass.php:128
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr ""
+
+#: ../../Zotlabs/Module/Lostpass.php:129
+msgid "Email Address"
+msgstr ""
+
+#: ../../Zotlabs/Module/Lostpass.php:130
+msgid "Reset"
msgstr ""
#: ../../Zotlabs/Module/Menu.php:49
@@ -3598,7 +2490,7 @@ msgstr ""
msgid "Submit and proceed"
msgstr ""
-#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2281
+#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2266
msgid "Menus"
msgstr ""
@@ -3659,6 +2551,74 @@ msgstr ""
msgid "Not found."
msgstr ""
+#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:260
+#, php-format
+msgctxt "mood"
+msgid "%1$s is %2$s"
+msgstr ""
+
+#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:225
+msgid "Mood"
+msgstr ""
+
+#: ../../Zotlabs/Module/Mood.php:136
+msgid "Set your current mood and tell your friends"
+msgstr ""
+
+#: ../../Zotlabs/Module/Match.php:26
+msgid "Profile Match"
+msgstr ""
+
+#: ../../Zotlabs/Module/Match.php:35
+msgid "No keywords to match. Please add keywords to your default profile."
+msgstr ""
+
+#: ../../Zotlabs/Module/Match.php:67
+msgid "is interested in:"
+msgstr ""
+
+#: ../../Zotlabs/Module/Match.php:74
+msgid "No matches"
+msgstr ""
+
+#: ../../Zotlabs/Module/Network.php:96
+msgid "No such group"
+msgstr ""
+
+#: ../../Zotlabs/Module/Network.php:136
+msgid "No such channel"
+msgstr ""
+
+#: ../../Zotlabs/Module/Network.php:141
+msgid "forum"
+msgstr ""
+
+#: ../../Zotlabs/Module/Network.php:153
+msgid "Search Results For:"
+msgstr ""
+
+#: ../../Zotlabs/Module/Network.php:217
+msgid "Privacy group is empty"
+msgstr ""
+
+#: ../../Zotlabs/Module/Network.php:226
+msgid "Privacy group: "
+msgstr ""
+
+#: ../../Zotlabs/Module/Network.php:252
+msgid "Invalid connection."
+msgstr ""
+
+#: ../../Zotlabs/Module/Notify.php:57
+#: ../../Zotlabs/Module/Notifications.php:98
+msgid "No more system notifications."
+msgstr ""
+
+#: ../../Zotlabs/Module/Notify.php:61
+#: ../../Zotlabs/Module/Notifications.php:102
+msgid "System Notifications"
+msgstr ""
+
#: ../../Zotlabs/Module/Mitem.php:52
msgid "Unable to create element."
msgstr ""
@@ -3676,7 +2636,7 @@ msgid "Menu Item Permissions"
msgstr ""
#: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:227
-#: ../../Zotlabs/Module/Settings.php:1066
+#: ../../Zotlabs/Module/Settings.php:1068
msgid "(click to open/close)"
msgstr ""
@@ -3776,48 +2736,6 @@ msgstr ""
msgid "Link text"
msgstr ""
-#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:260
-#, php-format
-msgctxt "mood"
-msgid "%1$s is %2$s"
-msgstr ""
-
-#: ../../Zotlabs/Module/Mood.php:135 ../../include/apps.php:176
-msgid "Mood"
-msgstr ""
-
-#: ../../Zotlabs/Module/Mood.php:136
-msgid "Set your current mood and tell your friends"
-msgstr ""
-
-#: ../../Zotlabs/Module/Network.php:95
-msgid "No such group"
-msgstr ""
-
-#: ../../Zotlabs/Module/Network.php:135
-msgid "No such channel"
-msgstr ""
-
-#: ../../Zotlabs/Module/Network.php:140
-msgid "forum"
-msgstr ""
-
-#: ../../Zotlabs/Module/Network.php:152
-msgid "Search Results For:"
-msgstr ""
-
-#: ../../Zotlabs/Module/Network.php:216
-msgid "Privacy group is empty"
-msgstr ""
-
-#: ../../Zotlabs/Module/Network.php:225
-msgid "Privacy group: "
-msgstr ""
-
-#: ../../Zotlabs/Module/Network.php:251
-msgid "Invalid connection."
-msgstr ""
-
#: ../../Zotlabs/Module/New_channel.php:128
#: ../../Zotlabs/Module/Register.php:231
msgid "Name or caption"
@@ -3882,390 +2800,378 @@ msgstr ""
msgid "Discard"
msgstr ""
-#: ../../Zotlabs/Module/Notifications.php:98
-#: ../../Zotlabs/Module/Notify.php:57
-msgid "No more system notifications."
-msgstr ""
-
-#: ../../Zotlabs/Module/Notifications.php:102
-#: ../../Zotlabs/Module/Notify.php:61
-msgid "System Notifications"
-msgstr ""
-
#: ../../Zotlabs/Module/Notifications.php:103 ../../include/nav.php:191
msgid "Mark all system notifications seen"
msgstr ""
-#: ../../Zotlabs/Module/Oexchange.php:27
-msgid "Unable to find your hub."
-msgstr ""
-
-#: ../../Zotlabs/Module/Oexchange.php:41
-msgid "Post successful."
-msgstr ""
-
-#: ../../Zotlabs/Module/Openid.php:30
-msgid "OpenID protocol error. No ID returned."
-msgstr ""
-
-#: ../../Zotlabs/Module/Openid.php:193 ../../include/auth.php:226
-msgid "Login failed."
-msgstr ""
-
-#: ../../Zotlabs/Module/Page.php:133
-msgid ""
-"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
-"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, "
-"quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
-"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
-"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
-"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-msgstr ""
-
-#: ../../Zotlabs/Module/Pconfig.php:26 ../../Zotlabs/Module/Pconfig.php:59
-msgid "This setting requires special processing and editing has been blocked."
-msgstr ""
-
-#: ../../Zotlabs/Module/Pconfig.php:48
-msgid "Configuration Editor"
-msgstr ""
-
-#: ../../Zotlabs/Module/Pconfig.php:49
-msgid ""
-"Warning: Changing some settings could render your channel inoperable. Please "
-"leave this page unless you are comfortable with and knowledgeable about how "
-"to correctly use this feature."
-msgstr ""
-
-#: ../../Zotlabs/Module/Pdledit.php:18
-msgid "Layout updated."
-msgstr ""
-
-#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Pdledit.php:61
-msgid "Edit System Page Description"
-msgstr ""
-
-#: ../../Zotlabs/Module/Pdledit.php:56
-msgid "Layout not found."
-msgstr ""
-
-#: ../../Zotlabs/Module/Pdledit.php:62
-msgid "Module Name:"
-msgstr ""
-
-#: ../../Zotlabs/Module/Pdledit.php:63
-msgid "Layout Help"
-msgstr ""
-
-#: ../../Zotlabs/Module/Photos.php:83
+#: ../../Zotlabs/Module/Photos.php:84
msgid "Page owner information could not be retrieved."
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:98 ../../Zotlabs/Module/Photos.php:742
+#: ../../Zotlabs/Module/Photos.php:99 ../../Zotlabs/Module/Photos.php:743
#: ../../Zotlabs/Module/Profile_photo.php:114
#: ../../Zotlabs/Module/Profile_photo.php:206
#: ../../Zotlabs/Module/Profile_photo.php:294
-#: ../../include/photo/photo_driver.php:722
+#: ../../include/photo/photo_driver.php:718
msgid "Profile Photos"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:104 ../../Zotlabs/Module/Photos.php:148
+#: ../../Zotlabs/Module/Photos.php:105 ../../Zotlabs/Module/Photos.php:149
msgid "Album not found."
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:131
+#: ../../Zotlabs/Module/Photos.php:132
msgid "Delete Album"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:152
+#: ../../Zotlabs/Module/Photos.php:153
msgid ""
"Multiple storage folders exist with this album name, but within different "
"directories. Please remove the desired folder or folders using the Files "
"manager"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:209 ../../Zotlabs/Module/Photos.php:1052
+#: ../../Zotlabs/Module/Photos.php:210 ../../Zotlabs/Module/Photos.php:1053
msgid "Delete Photo"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:532
+#: ../../Zotlabs/Module/Photos.php:533
msgid "No photos selected"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:581
+#: ../../Zotlabs/Module/Photos.php:582
msgid "Access to this item is restricted."
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:620
+#: ../../Zotlabs/Module/Photos.php:621
#, php-format
msgid "%1$.2f MB of %2$.2f MB photo storage used."
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:623
+#: ../../Zotlabs/Module/Photos.php:624
#, php-format
msgid "%1$.2f MB photo storage used."
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:659
+#: ../../Zotlabs/Module/Photos.php:660
msgid "Upload Photos"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:663
+#: ../../Zotlabs/Module/Photos.php:664
msgid "Enter an album name"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:664
+#: ../../Zotlabs/Module/Photos.php:665
msgid "or select an existing album (doubleclick)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:665
+#: ../../Zotlabs/Module/Photos.php:666
msgid "Create a status post for this upload"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Photos.php:667
msgid "Caption (optional):"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:667
+#: ../../Zotlabs/Module/Photos.php:668
msgid "Description (optional):"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:694
+#: ../../Zotlabs/Module/Photos.php:695
msgid "Album name could not be decoded"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:742 ../../Zotlabs/Module/Photos.php:1283
-#: ../../Zotlabs/Module/Photos.php:1300
+#: ../../Zotlabs/Module/Photos.php:743
msgid "Contact Photos"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:765
+#: ../../Zotlabs/Module/Photos.php:766
msgid "Show Newest First"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:767
+#: ../../Zotlabs/Module/Photos.php:768
msgid "Show Oldest First"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:791 ../../Zotlabs/Module/Photos.php:1333
-#: ../../include/widgets.php:1500
+#: ../../Zotlabs/Module/Photos.php:792 ../../Zotlabs/Module/Photos.php:1331
+#: ../../include/widgets.php:1499
msgid "View Photo"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:822 ../../include/widgets.php:1517
+#: ../../Zotlabs/Module/Photos.php:823 ../../include/widgets.php:1516
msgid "Edit Album"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:869
+#: ../../Zotlabs/Module/Photos.php:870
msgid "Permission denied. Access to this item may be restricted."
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:871
+#: ../../Zotlabs/Module/Photos.php:872
msgid "Photo not available"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:929
+#: ../../Zotlabs/Module/Photos.php:930
msgid "Use as profile photo"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:930
+#: ../../Zotlabs/Module/Photos.php:931
msgid "Use as cover photo"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:937
+#: ../../Zotlabs/Module/Photos.php:938
msgid "Private Photo"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:952
+#: ../../Zotlabs/Module/Photos.php:953
msgid "View Full Size"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:997 ../../Zotlabs/Module/Tagrm.php:137
+#: ../../Zotlabs/Module/Photos.php:998 ../../Zotlabs/Module/Admin.php:1437
+#: ../../Zotlabs/Module/Tagrm.php:137
msgid "Remove"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1031
+#: ../../Zotlabs/Module/Photos.php:1032
msgid "Edit photo"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1033
+#: ../../Zotlabs/Module/Photos.php:1034
msgid "Rotate CW (right)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1034
+#: ../../Zotlabs/Module/Photos.php:1035
msgid "Rotate CCW (left)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1037
+#: ../../Zotlabs/Module/Photos.php:1038
msgid "Enter a new album name"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1038
+#: ../../Zotlabs/Module/Photos.php:1039
msgid "or select an existing one (doubleclick)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1041
+#: ../../Zotlabs/Module/Photos.php:1042
msgid "Caption"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1043
+#: ../../Zotlabs/Module/Photos.php:1044
msgid "Add a Tag"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1047
+#: ../../Zotlabs/Module/Photos.php:1048
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1050
+#: ../../Zotlabs/Module/Photos.php:1051
msgid "Flag as adult in album view"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1069 ../../include/ItemObject.php:254
+#: ../../Zotlabs/Module/Photos.php:1070 ../../Zotlabs/Lib/ThreadItem.php:261
msgid "I like this (toggle)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1070 ../../include/ItemObject.php:255
+#: ../../Zotlabs/Module/Photos.php:1071 ../../Zotlabs/Lib/ThreadItem.php:262
msgid "I don't like this (toggle)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1072 ../../include/ItemObject.php:389
+#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:397
#: ../../include/conversation.php:740
msgid "Please wait"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1088 ../../Zotlabs/Module/Photos.php:1206
-#: ../../include/ItemObject.php:700
+#: ../../Zotlabs/Module/Photos.php:1089 ../../Zotlabs/Module/Photos.php:1207
+#: ../../Zotlabs/Lib/ThreadItem.php:707
msgid "This is you"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1090 ../../Zotlabs/Module/Photos.php:1208
-#: ../../include/ItemObject.php:702 ../../include/js_strings.php:6
+#: ../../Zotlabs/Module/Photos.php:1091 ../../Zotlabs/Module/Photos.php:1209
+#: ../../Zotlabs/Lib/ThreadItem.php:709 ../../include/js_strings.php:6
msgid "Comment"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1106 ../../include/conversation.php:574
+#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574
msgctxt "title"
msgid "Likes"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1106 ../../include/conversation.php:574
+#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574
msgctxt "title"
msgid "Dislikes"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:575
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
msgctxt "title"
msgid "Agree"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:575
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
msgctxt "title"
msgid "Disagree"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:575
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
msgctxt "title"
msgid "Abstain"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:576
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
msgctxt "title"
msgid "Attending"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:576
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
msgctxt "title"
msgid "Not attending"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:576
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
msgctxt "title"
msgid "Might attend"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1125 ../../Zotlabs/Module/Photos.php:1137
-#: ../../include/ItemObject.php:175 ../../include/ItemObject.php:187
-#: ../../include/conversation.php:1728
+#: ../../Zotlabs/Module/Photos.php:1126 ../../Zotlabs/Module/Photos.php:1138
+#: ../../Zotlabs/Lib/ThreadItem.php:181 ../../Zotlabs/Lib/ThreadItem.php:193
+#: ../../include/conversation.php:1717
msgid "View all"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1129 ../../include/identity.php:1304
-#: ../../include/ItemObject.php:179 ../../include/conversation.php:1752
-#: ../../include/taxonomy.php:403
+#: ../../Zotlabs/Module/Photos.php:1130 ../../Zotlabs/Lib/ThreadItem.php:185
+#: ../../include/taxonomy.php:403 ../../include/conversation.php:1741
+#: ../../include/channel.php:1158
msgctxt "noun"
msgid "Like"
msgid_plural "Likes"
msgstr[0] ""
msgstr[1] ""
-#: ../../Zotlabs/Module/Photos.php:1134 ../../include/ItemObject.php:184
-#: ../../include/conversation.php:1755
+#: ../../Zotlabs/Module/Photos.php:1135 ../../Zotlabs/Lib/ThreadItem.php:190
+#: ../../include/conversation.php:1744
msgctxt "noun"
msgid "Dislike"
msgid_plural "Dislikes"
msgstr[0] ""
msgstr[1] ""
-#: ../../Zotlabs/Module/Photos.php:1234
+#: ../../Zotlabs/Module/Photos.php:1235
msgid "Photo Tools"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1243
+#: ../../Zotlabs/Module/Photos.php:1244
msgid "In This Photo:"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1248
+#: ../../Zotlabs/Module/Photos.php:1249
msgid "Map"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1256 ../../include/ItemObject.php:378
+#: ../../Zotlabs/Module/Photos.php:1257 ../../Zotlabs/Lib/ThreadItem.php:386
msgctxt "noun"
msgid "Likes"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1257 ../../include/ItemObject.php:379
+#: ../../Zotlabs/Module/Photos.php:1258 ../../Zotlabs/Lib/ThreadItem.php:387
msgctxt "noun"
msgid "Dislikes"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1262 ../../include/acl_selectors.php:268
-#: ../../include/ItemObject.php:384
+#: ../../Zotlabs/Module/Photos.php:1263 ../../Zotlabs/Lib/ThreadItem.php:392
+#: ../../include/acl_selectors.php:285
msgid "Close"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1339
+#: ../../Zotlabs/Module/Photos.php:1337
msgid "View Album"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1350 ../../Zotlabs/Module/Photos.php:1363
-#: ../../Zotlabs/Module/Photos.php:1364
+#: ../../Zotlabs/Module/Photos.php:1348 ../../Zotlabs/Module/Photos.php:1361
+#: ../../Zotlabs/Module/Photos.php:1362
msgid "Recent Photos"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:264
+#: ../../Zotlabs/Module/Ping.php:265
msgid "sent you a private message"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:312
+#: ../../Zotlabs/Module/Ping.php:313
msgid "added your channel"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:322 ../../include/identity.php:1123
-#: ../../include/identity.php:1199
+#: ../../Zotlabs/Module/Ping.php:323
msgid "g A l F d"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:345 ../../include/identity.php:1169
-#: ../../include/identity.php:1239
+#: ../../Zotlabs/Module/Ping.php:346
msgid "[today]"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:354
+#: ../../Zotlabs/Module/Ping.php:355
msgid "posted an event"
msgstr ""
-#: ../../Zotlabs/Module/Poke.php:168 ../../include/apps.php:177
-#: ../../include/conversation.php:965
+#: ../../Zotlabs/Module/Oexchange.php:27
+msgid "Unable to find your hub."
+msgstr ""
+
+#: ../../Zotlabs/Module/Oexchange.php:41
+msgid "Post successful."
+msgstr ""
+
+#: ../../Zotlabs/Module/Openid.php:30
+msgid "OpenID protocol error. No ID returned."
+msgstr ""
+
+#: ../../Zotlabs/Module/Openid.php:193 ../../include/auth.php:226
+msgid "Login failed."
+msgstr ""
+
+#: ../../Zotlabs/Module/Page.php:133
+msgid ""
+"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
+"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, "
+"quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
+"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
+"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
+"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+msgstr ""
+
+#: ../../Zotlabs/Module/Pconfig.php:26 ../../Zotlabs/Module/Pconfig.php:59
+msgid "This setting requires special processing and editing has been blocked."
+msgstr ""
+
+#: ../../Zotlabs/Module/Pconfig.php:48
+msgid "Configuration Editor"
+msgstr ""
+
+#: ../../Zotlabs/Module/Pconfig.php:49
+msgid ""
+"Warning: Changing some settings could render your channel inoperable. Please "
+"leave this page unless you are comfortable with and knowledgeable about how "
+"to correctly use this feature."
+msgstr ""
+
+#: ../../Zotlabs/Module/Pdledit.php:18
+msgid "Layout updated."
+msgstr ""
+
+#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Pdledit.php:61
+msgid "Edit System Page Description"
+msgstr ""
+
+#: ../../Zotlabs/Module/Pdledit.php:56
+msgid "Layout not found."
+msgstr ""
+
+#: ../../Zotlabs/Module/Pdledit.php:62
+msgid "Module Name:"
+msgstr ""
+
+#: ../../Zotlabs/Module/Pdledit.php:63
+msgid "Layout Help"
+msgstr ""
+
+#: ../../Zotlabs/Module/Poke.php:168 ../../Zotlabs/Lib/Apps.php:226
+#: ../../include/conversation.php:960
msgid "Poke"
msgstr ""
@@ -4293,289 +3199,289 @@ msgstr ""
msgid "Make this post private"
msgstr ""
-#: ../../Zotlabs/Module/Probe.php:28 ../../Zotlabs/Module/Probe.php:34
+#: ../../Zotlabs/Module/Probe.php:30 ../../Zotlabs/Module/Probe.php:34
#, php-format
msgid "Fetching URL returns error: %1$s"
msgstr ""
-#: ../../Zotlabs/Module/Profile_photo.php:179
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr ""
-
-#: ../../Zotlabs/Module/Profile_photo.php:367
-msgid "Upload Profile Photo"
-msgstr ""
-
-#: ../../Zotlabs/Module/Profiles.php:23 ../../Zotlabs/Module/Profiles.php:188
-#: ../../Zotlabs/Module/Profiles.php:245 ../../Zotlabs/Module/Profiles.php:624
+#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:189
+#: ../../Zotlabs/Module/Profiles.php:246 ../../Zotlabs/Module/Profiles.php:625
msgid "Profile not found."
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:43
+#: ../../Zotlabs/Module/Profiles.php:44
msgid "Profile deleted."
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:67 ../../Zotlabs/Module/Profiles.php:103
+#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:104
msgid "Profile-"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:88 ../../Zotlabs/Module/Profiles.php:131
+#: ../../Zotlabs/Module/Profiles.php:89 ../../Zotlabs/Module/Profiles.php:132
msgid "New profile created."
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:109
+#: ../../Zotlabs/Module/Profiles.php:110
msgid "Profile unavailable to clone."
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:150
+#: ../../Zotlabs/Module/Profiles.php:151
msgid "Profile unavailable to export."
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:255
+#: ../../Zotlabs/Module/Profiles.php:256
msgid "Profile Name is required."
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:426
+#: ../../Zotlabs/Module/Profiles.php:427
msgid "Marital Status"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:430
+#: ../../Zotlabs/Module/Profiles.php:431
msgid "Romantic Partner"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:434 ../../Zotlabs/Module/Profiles.php:740
+#: ../../Zotlabs/Module/Profiles.php:435 ../../Zotlabs/Module/Profiles.php:736
msgid "Likes"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:438 ../../Zotlabs/Module/Profiles.php:741
+#: ../../Zotlabs/Module/Profiles.php:439 ../../Zotlabs/Module/Profiles.php:737
msgid "Dislikes"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:442 ../../Zotlabs/Module/Profiles.php:748
+#: ../../Zotlabs/Module/Profiles.php:443 ../../Zotlabs/Module/Profiles.php:744
msgid "Work/Employment"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:445
+#: ../../Zotlabs/Module/Profiles.php:446
msgid "Religion"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:449
+#: ../../Zotlabs/Module/Profiles.php:450
msgid "Political Views"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:457
+#: ../../Zotlabs/Module/Profiles.php:458
msgid "Sexual Preference"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:461
+#: ../../Zotlabs/Module/Profiles.php:462
msgid "Homepage"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:465
+#: ../../Zotlabs/Module/Profiles.php:466
msgid "Interests"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:559
+#: ../../Zotlabs/Module/Profiles.php:560
msgid "Profile updated."
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:648
+#: ../../Zotlabs/Module/Profiles.php:644
msgid "Hide your connections list from viewers of this profile"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:690
+#: ../../Zotlabs/Module/Profiles.php:686
msgid "Edit Profile Details"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:692
+#: ../../Zotlabs/Module/Profiles.php:688
msgid "View this profile"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:693 ../../Zotlabs/Module/Profiles.php:775
-#: ../../include/identity.php:959
+#: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:771
+#: ../../include/channel.php:959
msgid "Edit visibility"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:694
+#: ../../Zotlabs/Module/Profiles.php:690
msgid "Profile Tools"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:695
+#: ../../Zotlabs/Module/Profiles.php:691
msgid "Change cover photo"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:696 ../../include/identity.php:930
+#: ../../Zotlabs/Module/Profiles.php:692 ../../include/channel.php:930
msgid "Change profile photo"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:697
+#: ../../Zotlabs/Module/Profiles.php:693
msgid "Create a new profile using these settings"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:698
+#: ../../Zotlabs/Module/Profiles.php:694
msgid "Clone this profile"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:699
+#: ../../Zotlabs/Module/Profiles.php:695
msgid "Delete this profile"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:700
+#: ../../Zotlabs/Module/Profiles.php:696
msgid "Add profile things"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:701 ../../include/widgets.php:105
-#: ../../include/conversation.php:1536
+#: ../../Zotlabs/Module/Profiles.php:697 ../../include/widgets.php:105
+#: ../../include/conversation.php:1526
msgid "Personal"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:703
+#: ../../Zotlabs/Module/Profiles.php:699
msgid "Relation"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:704 ../../include/datetime.php:48
+#: ../../Zotlabs/Module/Profiles.php:700 ../../include/datetime.php:48
msgid "Miscellaneous"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:706
+#: ../../Zotlabs/Module/Profiles.php:702
msgid "Import profile from file"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:707
+#: ../../Zotlabs/Module/Profiles.php:703
msgid "Export profile to file"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:708
+#: ../../Zotlabs/Module/Profiles.php:704
msgid "Your gender"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:709
+#: ../../Zotlabs/Module/Profiles.php:705
msgid "Marital status"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:710
+#: ../../Zotlabs/Module/Profiles.php:706
msgid "Sexual preference"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:713
+#: ../../Zotlabs/Module/Profiles.php:709
msgid "Profile name"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:715
+#: ../../Zotlabs/Module/Profiles.php:711
msgid "This is your default profile."
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:717
+#: ../../Zotlabs/Module/Profiles.php:713
msgid "Your full name"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:718
+#: ../../Zotlabs/Module/Profiles.php:714
msgid "Title/Description"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:721
+#: ../../Zotlabs/Module/Profiles.php:717
msgid "Street address"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:722
+#: ../../Zotlabs/Module/Profiles.php:718
msgid "Locality/City"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:723
+#: ../../Zotlabs/Module/Profiles.php:719
msgid "Region/State"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:724
+#: ../../Zotlabs/Module/Profiles.php:720
msgid "Postal/Zip code"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:725
+#: ../../Zotlabs/Module/Profiles.php:721
msgid "Country"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:730
+#: ../../Zotlabs/Module/Profiles.php:726
msgid "Who (if applicable)"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:730
+#: ../../Zotlabs/Module/Profiles.php:726
msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:731
+#: ../../Zotlabs/Module/Profiles.php:727
msgid "Since (date)"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:734
+#: ../../Zotlabs/Module/Profiles.php:730
msgid "Tell us about yourself"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:736
+#: ../../Zotlabs/Module/Profiles.php:732
msgid "Hometown"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:737
+#: ../../Zotlabs/Module/Profiles.php:733
msgid "Political views"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:738
+#: ../../Zotlabs/Module/Profiles.php:734
msgid "Religious views"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:739
+#: ../../Zotlabs/Module/Profiles.php:735
msgid "Keywords used in directory listings"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:739
+#: ../../Zotlabs/Module/Profiles.php:735
msgid "Example: fishing photography software"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:742
+#: ../../Zotlabs/Module/Profiles.php:738
msgid "Musical interests"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:743
+#: ../../Zotlabs/Module/Profiles.php:739
msgid "Books, literature"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:744
+#: ../../Zotlabs/Module/Profiles.php:740
msgid "Television"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:745
+#: ../../Zotlabs/Module/Profiles.php:741
msgid "Film/Dance/Culture/Entertainment"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:746
+#: ../../Zotlabs/Module/Profiles.php:742
msgid "Hobbies/Interests"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:747
+#: ../../Zotlabs/Module/Profiles.php:743
msgid "Love/Romance"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:749
+#: ../../Zotlabs/Module/Profiles.php:745
msgid "School/Education"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:750
+#: ../../Zotlabs/Module/Profiles.php:746
msgid "Contact information and social networks"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:751
+#: ../../Zotlabs/Module/Profiles.php:747
msgid "My other channels"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:771 ../../include/identity.php:955
+#: ../../Zotlabs/Module/Profiles.php:767 ../../include/channel.php:955
msgid "Profile Image"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:781 ../../include/identity.php:937
-#: ../../include/nav.php:88
+#: ../../Zotlabs/Module/Profiles.php:777 ../../include/nav.php:88
+#: ../../include/channel.php:937
msgid "Edit Profiles"
msgstr ""
+#: ../../Zotlabs/Module/Profile_photo.php:179
+msgid ""
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr ""
+
+#: ../../Zotlabs/Module/Profile_photo.php:367
+msgid "Upload Profile Photo"
+msgstr ""
+
#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63
msgid "Invalid profile identifier."
msgstr ""
@@ -4584,7 +3490,7 @@ msgstr ""
msgid "Profile Visibility Editor"
msgstr ""
-#: ../../Zotlabs/Module/Profperm.php:117 ../../include/identity.php:1395
+#: ../../Zotlabs/Module/Profperm.php:117 ../../include/channel.php:1249
msgid "Profile"
msgstr ""
@@ -4596,7 +3502,7 @@ msgstr ""
msgid "Visible To"
msgstr ""
-#: ../../Zotlabs/Module/Pubsites.php:22 ../../include/widgets.php:1271
+#: ../../Zotlabs/Module/Pubsites.php:22 ../../include/widgets.php:1270
msgid "Public Hubs"
msgstr ""
@@ -4621,29 +3527,37 @@ msgstr ""
msgid "Registration Policy"
msgstr ""
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Stats"
+msgstr ""
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Software"
+msgstr ""
+
#: ../../Zotlabs/Module/Pubsites.php:31 ../../Zotlabs/Module/Ratings.php:103
-#: ../../include/conversation.php:964
+#: ../../include/conversation.php:959
msgid "Ratings"
msgstr ""
-#: ../../Zotlabs/Module/Pubsites.php:37
+#: ../../Zotlabs/Module/Pubsites.php:38
msgid "Rate"
msgstr ""
-#: ../../Zotlabs/Module/Rate.php:162
+#: ../../Zotlabs/Module/Rate.php:160
msgid "Website:"
msgstr ""
-#: ../../Zotlabs/Module/Rate.php:165
+#: ../../Zotlabs/Module/Rate.php:163
#, php-format
msgid "Remote Channel [%s] (not yet known on this site)"
msgstr ""
-#: ../../Zotlabs/Module/Rate.php:166
+#: ../../Zotlabs/Module/Rate.php:164
msgid "Rating (this information is public)"
msgstr ""
-#: ../../Zotlabs/Module/Rate.php:167
+#: ../../Zotlabs/Module/Rate.php:165
msgid "Optionally explain your rating (this information is public)"
msgstr ""
@@ -4663,6 +3577,1071 @@ msgstr ""
msgid "Description: "
msgstr ""
+#: ../../Zotlabs/Module/Admin.php:77
+msgid "Theme settings updated."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:197
+msgid "# Accounts"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:198
+msgid "# blocked accounts"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:199
+msgid "# expired accounts"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:200
+msgid "# expiring accounts"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:211
+msgid "# Channels"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:212
+msgid "# primary"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:213
+msgid "# clones"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:219
+msgid "Message queues"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:236
+msgid "Your software should be updated"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:241 ../../Zotlabs/Module/Admin.php:490
+#: ../../Zotlabs/Module/Admin.php:711 ../../Zotlabs/Module/Admin.php:755
+#: ../../Zotlabs/Module/Admin.php:1030 ../../Zotlabs/Module/Admin.php:1209
+#: ../../Zotlabs/Module/Admin.php:1329 ../../Zotlabs/Module/Admin.php:1419
+#: ../../Zotlabs/Module/Admin.php:1612 ../../Zotlabs/Module/Admin.php:1646
+#: ../../Zotlabs/Module/Admin.php:1731
+msgid "Administration"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:242
+msgid "Summary"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:245
+msgid "Registered accounts"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:246 ../../Zotlabs/Module/Admin.php:715
+msgid "Pending registrations"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:247
+msgid "Registered channels"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:248 ../../Zotlabs/Module/Admin.php:716
+msgid "Active plugins"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:249
+msgid "Version"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:250
+msgid "Repository version (master)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:251
+msgid "Repository version (dev)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:373
+msgid "Site settings updated."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:400 ../../include/text.php:2841
+msgid "Default"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:410 ../../Zotlabs/Module/Settings.php:798
+msgid "mobile"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:412
+msgid "experimental"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:414
+msgid "unsupported"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:460
+msgid "Yes - with approval"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:466
+msgid "My site is not a public server"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:467
+msgid "My site has paid access only"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:468
+msgid "My site has free access only"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:469
+msgid "My site offers free accounts with optional paid upgrades"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:491 ../../include/widgets.php:1382
+msgid "Site"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:493 ../../Zotlabs/Module/Register.php:245
+msgid "Registration"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:494
+msgid "File upload"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:495
+msgid "Policies"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:496 ../../include/contact_widgets.php:16
+msgid "Advanced"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:500
+msgid "Site name"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:501
+msgid "Banner/Logo"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:502
+msgid "Administrator Information"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:502
+msgid ""
+"Contact information for site administrators. Displayed on siteinfo page. "
+"BBCode can be used here"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:503
+msgid "System language"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:504
+msgid "System theme"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:504
+msgid ""
+"Default system theme - may be over-ridden by user profiles - <a href='#' "
+"id='cnftheme'>change theme settings</a>"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:505
+msgid "Mobile system theme"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:505
+msgid "Theme for mobile devices"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:507
+msgid "Allow Feeds as Connections"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:507
+msgid "(Heavy system resource usage)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:508
+msgid "Maximum image size"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:508
+msgid ""
+"Maximum size in bytes of uploaded images. Default is 0, which means no "
+"limits."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:509
+msgid "Does this site allow new member registration?"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:510
+msgid "Invitation only"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:510
+msgid ""
+"Only allow new member registrations with an invitation code. Above register "
+"policy must be set to Yes."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:511
+msgid "Which best describes the types of account offered by this hub?"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:512
+msgid "Register text"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:512
+msgid "Will be displayed prominently on the registration page."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:513
+msgid "Site homepage to show visitors (default: login box)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:513
+msgid ""
+"example: 'public' to show public stream, 'page/sys/home' to show a system "
+"webpage called 'home' or 'include:home.html' to include a file."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:514
+msgid "Preserve site homepage URL"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:514
+msgid ""
+"Present the site homepage in a frame at the original location instead of "
+"redirecting"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:515
+msgid "Accounts abandoned after x days"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:515
+msgid ""
+"Will not waste system resources polling external sites for abandonded "
+"accounts. Enter 0 for no time limit."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:516
+msgid "Allowed friend domains"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:516
+msgid ""
+"Comma separated list of domains which are allowed to establish friendships "
+"with this site. Wildcards are accepted. Empty to allow any domains"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:517
+msgid "Allowed email domains"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:517
+msgid ""
+"Comma separated list of domains which are allowed in email addresses for "
+"registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:518
+msgid "Not allowed email domains"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:518
+msgid ""
+"Comma separated list of domains which are not allowed in email addresses for "
+"registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains, unless allowed domains have been defined."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:519
+msgid "Verify Email Addresses"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:519
+msgid ""
+"Check to verify email addresses used in account registration (recommended)."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:520
+msgid "Force publish"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:520
+msgid ""
+"Check to force all profiles on this site to be listed in the site directory."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:521
+msgid "Import Public Streams"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:521
+msgid ""
+"Import and allow access to public content pulled from other sites. Warning: "
+"this content is unmoderated."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:522
+msgid "Login on Homepage"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:522
+msgid ""
+"Present a login box to visitors on the home page if no other content has "
+"been configured."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:523
+msgid "Enable context help"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:523
+msgid ""
+"Display contextual help for the current page when the help button is pressed."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:525
+msgid "Directory Server URL"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:525
+msgid "Default directory server"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:527
+msgid "Proxy user"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:528
+msgid "Proxy URL"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:529
+msgid "Network timeout"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:529
+msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:530
+msgid "Delivery interval"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:530
+msgid ""
+"Delay background delivery processes by this many seconds to reduce system "
+"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
+"for large dedicated servers."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:531
+msgid "Deliveries per process"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:531
+msgid ""
+"Number of deliveries to attempt in a single operating system process. Adjust "
+"if necessary to tune system performance. Recommend: 1-5."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:532
+msgid "Poll interval"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:532
+msgid ""
+"Delay background polling processes by this many seconds to reduce system "
+"load. If 0, use delivery interval."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:533
+msgid "Maximum Load Average"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:533
+msgid ""
+"Maximum system load before delivery and poll processes are deferred - "
+"default 50."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:534
+msgid "Expiration period in days for imported (grid/network) content"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:534
+msgid "0 for no expiration of imported content"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:678
+#: ../../Zotlabs/Module/Settings.php:722
+msgid "Off"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:678
+#: ../../Zotlabs/Module/Settings.php:722
+msgid "On"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:678
+#, php-format
+msgid "Lock feature %s"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:686
+msgid "Manage Additional Features"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:703
+msgid "No server found"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:710 ../../Zotlabs/Module/Admin.php:1046
+msgid "ID"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:710
+msgid "for channel"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:710
+msgid "on server"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:712
+msgid "Server"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:746
+msgid ""
+"By default, unfiltered HTML is allowed in embedded media. This is inherently "
+"insecure."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:749
+msgid ""
+"The recommended setting is to only allow unfiltered HTML from the following "
+"sites:"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:750
+msgid ""
+"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/"
+"<br />https://vimeo.com/<br />https://soundcloud.com/<br />"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:751
+msgid ""
+"All other embedded content will be filtered, <strong>unless</strong> "
+"embedded content from that site is explicitly blocked."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:756 ../../include/widgets.php:1385
+msgid "Security"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:758
+msgid "Block public"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:758
+msgid ""
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently authenticated."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:759
+msgid "Set \"Transport Security\" HTTP header"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:760
+msgid "Set \"Content Security Policy\" HTTP header"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:761
+msgid "Allow communications only from these sites"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:761
+msgid ""
+"One site per line. Leave empty to allow communication from anywhere by "
+"default"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:762
+msgid "Block communications from these sites"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:763
+msgid "Allow communications only from these channels"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:763
+msgid ""
+"One channel (hash) per line. Leave empty to allow from any channel by default"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:764
+msgid "Block communications from these channels"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:765
+msgid "Only allow embeds from secure (SSL) websites and links."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:766
+msgid "Allow unfiltered embedded HTML content only from these domains"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:766
+msgid "One site per line. By default embedded content is filtered."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:767
+msgid "Block embedded HTML from these domains"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:785
+msgid "Update has been marked successful"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:795
+#, php-format
+msgid "Executing %s failed. Check system logs."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:798
+#, php-format
+msgid "Update %s was successfully applied."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:802
+#, php-format
+msgid "Update %s did not return a status. Unknown if it succeeded."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:805
+#, php-format
+msgid "Update function %s could not be found."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:821
+msgid "No failed updates."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:825
+msgid "Failed Updates"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:827
+msgid "Mark success (if update was manually applied)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:828
+msgid "Attempt to execute this update step automatically"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:859
+msgid "Queue Statistics"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:860
+msgid "Total Entries"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:861
+msgid "Priority"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:862
+msgid "Destination URL"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:863
+msgid "Mark hub permanently offline"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:864
+msgid "Empty queue for this hub"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:865
+msgid "Last known contact"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:901
+#, php-format
+msgid "%s account blocked/unblocked"
+msgid_plural "%s account blocked/unblocked"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../Zotlabs/Module/Admin.php:908
+#, php-format
+msgid "%s account deleted"
+msgid_plural "%s accounts deleted"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../Zotlabs/Module/Admin.php:944
+msgid "Account not found"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:955
+#, php-format
+msgid "Account '%s' deleted"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:963
+#, php-format
+msgid "Account '%s' blocked"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:971
+#, php-format
+msgid "Account '%s' unblocked"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1031 ../../Zotlabs/Module/Admin.php:1044
+#: ../../include/widgets.php:1383
+msgid "Accounts"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1033 ../../Zotlabs/Module/Admin.php:1212
+msgid "select all"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1034
+msgid "Registrations waiting for confirm"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1035
+msgid "Request date"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1036
+msgid "No registrations."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1038
+msgid "Deny"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1048 ../../include/group.php:267
+msgid "All Channels"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1049
+msgid "Register date"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1050
+msgid "Last login"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1051
+msgid "Expires"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1052
+msgid "Service Class"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1054
+msgid ""
+"Selected accounts will be deleted!\\n\\nEverything these accounts had posted "
+"on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1055
+msgid ""
+"The account {0} will be deleted!\\n\\nEverything this account has posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1091
+#, php-format
+msgid "%s channel censored/uncensored"
+msgid_plural "%s channels censored/uncensored"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../Zotlabs/Module/Admin.php:1100
+#, php-format
+msgid "%s channel code allowed/disallowed"
+msgid_plural "%s channels code allowed/disallowed"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../Zotlabs/Module/Admin.php:1106
+#, php-format
+msgid "%s channel deleted"
+msgid_plural "%s channels deleted"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../Zotlabs/Module/Admin.php:1126
+msgid "Channel not found"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1136
+#, php-format
+msgid "Channel '%s' deleted"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1148
+#, php-format
+msgid "Channel '%s' censored"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1148
+#, php-format
+msgid "Channel '%s' uncensored"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1159
+#, php-format
+msgid "Channel '%s' code allowed"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1159
+#, php-format
+msgid "Channel '%s' code disallowed"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1210 ../../include/widgets.php:1384
+msgid "Channels"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1214
+msgid "Censor"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1215
+msgid "Uncensor"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1216
+msgid "Allow Code"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1217
+msgid "Disallow Code"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1218 ../../include/conversation.php:1611
+msgid "Channel"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1222
+msgid "UID"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1226
+msgid ""
+"Selected channels will be deleted!\\n\\nEverything that was posted in these "
+"channels on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1227
+msgid ""
+"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
+"channel on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1284
+#, php-format
+msgid "Plugin %s disabled."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1288
+#, php-format
+msgid "Plugin %s enabled."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1298 ../../Zotlabs/Module/Admin.php:1585
+msgid "Disable"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1301 ../../Zotlabs/Module/Admin.php:1587
+msgid "Enable"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1330 ../../Zotlabs/Module/Admin.php:1420
+#: ../../include/widgets.php:1387
+msgid "Plugins"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1331 ../../Zotlabs/Module/Admin.php:1614
+msgid "Toggle"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1332 ../../Zotlabs/Module/Admin.php:1615
+#: ../../Zotlabs/Lib/Apps.php:215 ../../include/widgets.php:638
+#: ../../include/nav.php:208
+msgid "Settings"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1339 ../../Zotlabs/Module/Admin.php:1624
+msgid "Author: "
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1340 ../../Zotlabs/Module/Admin.php:1625
+msgid "Maintainer: "
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1341
+msgid "Minimum project version: "
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1342
+msgid "Maximum project version: "
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1343
+msgid "Minimum PHP version: "
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1344
+msgid "Requires: "
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1345 ../../Zotlabs/Module/Admin.php:1425
+msgid "Disabled - version incompatibility"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1394
+msgid "Enter the public git repository URL of the plugin repo."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1395
+msgid "Plugin repo git URL"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1396
+msgid "Custom repo name"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1396
+msgid "(optional)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1397
+msgid "Download Plugin Repo"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1404
+msgid "Install new repo"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1405 ../../Zotlabs/Lib/Apps.php:330
+msgid "Install"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1427
+msgid "Manage Repos"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1428
+msgid "Installed Plugin Repositories"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1429
+msgid "Install a New Plugin Repository"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1435 ../../Zotlabs/Module/Settings.php:77
+#: ../../Zotlabs/Module/Settings.php:616 ../../Zotlabs/Lib/Apps.php:330
+msgid "Update"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1436
+msgid "Switch branch"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1550
+msgid "No themes found."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1606
+msgid "Screenshot"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1613 ../../Zotlabs/Module/Admin.php:1647
+#: ../../include/widgets.php:1388
+msgid "Themes"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1652
+msgid "[Experimental]"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1653
+msgid "[Unsupported]"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1677
+msgid "Log settings updated."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1732 ../../include/widgets.php:1409
+#: ../../include/widgets.php:1419
+msgid "Logs"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1734
+msgid "Clear"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1740
+msgid "Debugging"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1741
+msgid "Log file"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1741
+msgid ""
+"Must be writable by web server. Relative to your top-level webserver "
+"directory."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1742
+msgid "Log level"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:2028
+msgid "New Profile Field"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:2029 ../../Zotlabs/Module/Admin.php:2049
+msgid "Field nickname"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:2029 ../../Zotlabs/Module/Admin.php:2049
+msgid "System name of field"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:2030 ../../Zotlabs/Module/Admin.php:2050
+msgid "Input type"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:2031 ../../Zotlabs/Module/Admin.php:2051
+msgid "Field Name"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:2031 ../../Zotlabs/Module/Admin.php:2051
+msgid "Label on profile pages"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:2032 ../../Zotlabs/Module/Admin.php:2052
+msgid "Help text"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:2032 ../../Zotlabs/Module/Admin.php:2052
+msgid "Additional info (optional)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:2042
+msgid "Field definition not found"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:2048
+msgid "Edit Profile Field"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:2106 ../../include/widgets.php:1390
+msgid "Profile Fields"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:2107
+msgid "Basic Profile Fields"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:2108
+msgid "Advanced Profile Fields"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:2108
+msgid "(In addition to basic fields)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:2110
+msgid "All available fields"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:2111
+msgid "Custom Fields"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:2115
+msgid "Create Custom Field"
+msgstr ""
+
+#: ../../Zotlabs/Module/Appman.php:37 ../../Zotlabs/Module/Appman.php:53
+msgid "App installed."
+msgstr ""
+
+#: ../../Zotlabs/Module/Appman.php:46
+msgid "Malformed app."
+msgstr ""
+
+#: ../../Zotlabs/Module/Appman.php:104
+msgid "Embed code"
+msgstr ""
+
+#: ../../Zotlabs/Module/Appman.php:110 ../../include/widgets.php:107
+msgid "Edit App"
+msgstr ""
+
+#: ../../Zotlabs/Module/Appman.php:110
+msgid "Create App"
+msgstr ""
+
+#: ../../Zotlabs/Module/Appman.php:115
+msgid "Name of app"
+msgstr ""
+
+#: ../../Zotlabs/Module/Appman.php:116
+msgid "Location (URL) of app"
+msgstr ""
+
+#: ../../Zotlabs/Module/Appman.php:118
+msgid "Photo icon URL"
+msgstr ""
+
+#: ../../Zotlabs/Module/Appman.php:118
+msgid "80 x 80 pixels - optional"
+msgstr ""
+
+#: ../../Zotlabs/Module/Appman.php:119
+msgid "Categories (optional, comma separated list)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Appman.php:120
+msgid "Version ID"
+msgstr ""
+
+#: ../../Zotlabs/Module/Appman.php:121
+msgid "Price of app"
+msgstr ""
+
+#: ../../Zotlabs/Module/Appman.php:122
+msgid "Location (URL) to purchase app"
+msgstr ""
+
#: ../../Zotlabs/Module/Rbmark.php:94
msgid "Select a bookmark folder"
msgstr ""
@@ -4766,7 +4745,7 @@ msgid "Membership on this site is by invitation only."
msgstr ""
#: ../../Zotlabs/Module/Register.php:262 ../../include/nav.php:147
-#: ../../boot.php:1597
+#: ../../boot.php:1685
msgid "Register"
msgstr ""
@@ -4784,45 +4763,45 @@ msgid ""
"password."
msgstr ""
-#: ../../Zotlabs/Module/Removeaccount.php:61
+#: ../../Zotlabs/Module/Removeaccount.php:56
msgid "Remove This Account"
msgstr ""
-#: ../../Zotlabs/Module/Removeaccount.php:62
-#: ../../Zotlabs/Module/Removeme.php:62
+#: ../../Zotlabs/Module/Removeaccount.php:57
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "WARNING: "
msgstr ""
-#: ../../Zotlabs/Module/Removeaccount.php:62
+#: ../../Zotlabs/Module/Removeaccount.php:57
msgid ""
"This account and all its channels will be completely removed from the "
"network. "
msgstr ""
-#: ../../Zotlabs/Module/Removeaccount.php:62
-#: ../../Zotlabs/Module/Removeme.php:62
+#: ../../Zotlabs/Module/Removeaccount.php:57
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "This action is permanent and can not be undone!"
msgstr ""
-#: ../../Zotlabs/Module/Removeaccount.php:63
-#: ../../Zotlabs/Module/Removeme.php:63
+#: ../../Zotlabs/Module/Removeaccount.php:58
+#: ../../Zotlabs/Module/Removeme.php:60
msgid "Please enter your password for verification:"
msgstr ""
-#: ../../Zotlabs/Module/Removeaccount.php:64
+#: ../../Zotlabs/Module/Removeaccount.php:59
msgid ""
"Remove this account, all its channels and all its channel clones from the "
"network"
msgstr ""
-#: ../../Zotlabs/Module/Removeaccount.php:64
+#: ../../Zotlabs/Module/Removeaccount.php:59
msgid ""
"By default only the instances of the channels located on this hub will be "
"removed from the network"
msgstr ""
-#: ../../Zotlabs/Module/Removeaccount.php:65
-#: ../../Zotlabs/Module/Settings.php:703
+#: ../../Zotlabs/Module/Removeaccount.php:60
+#: ../../Zotlabs/Module/Settings.php:705
msgid "Remove Account"
msgstr ""
@@ -4832,25 +4811,25 @@ msgid ""
"password."
msgstr ""
-#: ../../Zotlabs/Module/Removeme.php:61
+#: ../../Zotlabs/Module/Removeme.php:58
msgid "Remove This Channel"
msgstr ""
-#: ../../Zotlabs/Module/Removeme.php:62
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "This channel will be completely removed from the network. "
msgstr ""
-#: ../../Zotlabs/Module/Removeme.php:64
+#: ../../Zotlabs/Module/Removeme.php:61
msgid "Remove this channel and all its clones from the network"
msgstr ""
-#: ../../Zotlabs/Module/Removeme.php:64
+#: ../../Zotlabs/Module/Removeme.php:61
msgid ""
"By default only the instance of the channel located on this hub will be "
"removed from the network"
msgstr ""
-#: ../../Zotlabs/Module/Removeme.php:65 ../../Zotlabs/Module/Settings.php:1122
+#: ../../Zotlabs/Module/Removeme.php:62 ../../Zotlabs/Module/Settings.php:1124
msgid "Remove Channel"
msgstr ""
@@ -4894,1021 +4873,1032 @@ msgstr ""
msgid "No service class restrictions found."
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:67
+#: ../../Zotlabs/Module/Settings.php:69
msgid "Name is required"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:71
+#: ../../Zotlabs/Module/Settings.php:73
msgid "Key and Secret are required"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:75 ../../Zotlabs/Module/Settings.php:614
-#: ../../include/apps.php:284
-msgid "Update"
-msgstr ""
-
-#: ../../Zotlabs/Module/Settings.php:223
+#: ../../Zotlabs/Module/Settings.php:225
msgid "Not valid email."
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:226
+#: ../../Zotlabs/Module/Settings.php:228
msgid "Protected email address. Cannot change to that email."
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:235
+#: ../../Zotlabs/Module/Settings.php:237
msgid "System failure storing new email. Please try again."
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:252
+#: ../../Zotlabs/Module/Settings.php:254
msgid "Password verification failed."
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:259
+#: ../../Zotlabs/Module/Settings.php:261
msgid "Passwords do not match. Password unchanged."
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:263
+#: ../../Zotlabs/Module/Settings.php:265
msgid "Empty passwords are not allowed. Password unchanged."
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:277
+#: ../../Zotlabs/Module/Settings.php:279
msgid "Password changed."
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:279
+#: ../../Zotlabs/Module/Settings.php:281
msgid "Password update failed. Please try again."
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:523
+#: ../../Zotlabs/Module/Settings.php:525
msgid "Settings updated."
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:587 ../../Zotlabs/Module/Settings.php:613
-#: ../../Zotlabs/Module/Settings.php:649
+#: ../../Zotlabs/Module/Settings.php:589 ../../Zotlabs/Module/Settings.php:615
+#: ../../Zotlabs/Module/Settings.php:651
msgid "Add application"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:590
+#: ../../Zotlabs/Module/Settings.php:592
msgid "Name of application"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:591 ../../Zotlabs/Module/Settings.php:617
+#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:619
msgid "Consumer Key"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:591 ../../Zotlabs/Module/Settings.php:592
+#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:594
msgid "Automatically generated - change if desired. Max length 20"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:592 ../../Zotlabs/Module/Settings.php:618
+#: ../../Zotlabs/Module/Settings.php:594 ../../Zotlabs/Module/Settings.php:620
msgid "Consumer Secret"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:619
+#: ../../Zotlabs/Module/Settings.php:595 ../../Zotlabs/Module/Settings.php:621
msgid "Redirect"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:593
+#: ../../Zotlabs/Module/Settings.php:595
msgid ""
"Redirect URI - leave blank unless your application specifically requires this"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:594 ../../Zotlabs/Module/Settings.php:620
+#: ../../Zotlabs/Module/Settings.php:596 ../../Zotlabs/Module/Settings.php:622
msgid "Icon url"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:594 ../../Zotlabs/Module/Sources.php:112
+#: ../../Zotlabs/Module/Settings.php:596 ../../Zotlabs/Module/Sources.php:112
#: ../../Zotlabs/Module/Sources.php:147
msgid "Optional"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:605
+#: ../../Zotlabs/Module/Settings.php:607
msgid "Application not found."
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:648
+#: ../../Zotlabs/Module/Settings.php:650
msgid "Connected Apps"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:652
+#: ../../Zotlabs/Module/Settings.php:654
msgid "Client key starts with"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:653
+#: ../../Zotlabs/Module/Settings.php:655
msgid "No name"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:654
+#: ../../Zotlabs/Module/Settings.php:656
msgid "Remove authorization"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:667
+#: ../../Zotlabs/Module/Settings.php:669
msgid "No feature settings configured"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:674
+#: ../../Zotlabs/Module/Settings.php:676
msgid "Feature/Addon Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:697
+#: ../../Zotlabs/Module/Settings.php:699
msgid "Account Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:698
+#: ../../Zotlabs/Module/Settings.php:700
msgid "Current Password"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:699
+#: ../../Zotlabs/Module/Settings.php:701
msgid "Enter New Password"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:700
+#: ../../Zotlabs/Module/Settings.php:702
msgid "Confirm New Password"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:700
+#: ../../Zotlabs/Module/Settings.php:702
msgid "Leave password fields blank unless changing"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:702
-#: ../../Zotlabs/Module/Settings.php:1039
+#: ../../Zotlabs/Module/Settings.php:704
+#: ../../Zotlabs/Module/Settings.php:1041
msgid "Email Address:"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:704
+#: ../../Zotlabs/Module/Settings.php:706
msgid "Remove this account including all its channels"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:727
+#: ../../Zotlabs/Module/Settings.php:729
msgid "Additional Features"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:751
+#: ../../Zotlabs/Module/Settings.php:753
msgid "Connector Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:790
+#: ../../Zotlabs/Module/Settings.php:792
msgid "No special theme for mobile devices"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:793
+#: ../../Zotlabs/Module/Settings.php:795
#, php-format
msgid "%s - (Experimental)"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:835
+#: ../../Zotlabs/Module/Settings.php:837
msgid "Display Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:836
+#: ../../Zotlabs/Module/Settings.php:838
msgid "Theme Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:837
+#: ../../Zotlabs/Module/Settings.php:839
msgid "Custom Theme Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:838
+#: ../../Zotlabs/Module/Settings.php:840
msgid "Content Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:844
+#: ../../Zotlabs/Module/Settings.php:846
msgid "Display Theme:"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:845
+#: ../../Zotlabs/Module/Settings.php:847
msgid "Mobile Theme:"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:846
+#: ../../Zotlabs/Module/Settings.php:848
msgid "Preload images before rendering the page"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:846
+#: ../../Zotlabs/Module/Settings.php:848
msgid ""
"The subjective page load time will be longer but the page will be ready when "
"displayed"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:847
+#: ../../Zotlabs/Module/Settings.php:849
msgid "Enable user zoom on mobile devices"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:848
+#: ../../Zotlabs/Module/Settings.php:850
msgid "Update browser every xx seconds"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:848
+#: ../../Zotlabs/Module/Settings.php:850
msgid "Minimum of 10 seconds, no maximum"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:849
+#: ../../Zotlabs/Module/Settings.php:851
msgid "Maximum number of conversations to load at any time:"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:849
+#: ../../Zotlabs/Module/Settings.php:851
msgid "Maximum of 100 items"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:850
+#: ../../Zotlabs/Module/Settings.php:852
msgid "Show emoticons (smilies) as images"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:851
+#: ../../Zotlabs/Module/Settings.php:853
msgid "Link post titles to source"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:852
+#: ../../Zotlabs/Module/Settings.php:854
msgid "System Page Layout Editor - (advanced)"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:855
+#: ../../Zotlabs/Module/Settings.php:857
msgid "Use blog/list mode on channel page"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:855 ../../Zotlabs/Module/Settings.php:856
+#: ../../Zotlabs/Module/Settings.php:857 ../../Zotlabs/Module/Settings.php:858
msgid "(comments displayed separately)"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:856
+#: ../../Zotlabs/Module/Settings.php:858
msgid "Use blog/list mode on grid page"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:857
+#: ../../Zotlabs/Module/Settings.php:859
msgid "Channel page max height of content (in pixels)"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:857 ../../Zotlabs/Module/Settings.php:858
+#: ../../Zotlabs/Module/Settings.php:859 ../../Zotlabs/Module/Settings.php:860
msgid "click to expand content exceeding this height"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:858
+#: ../../Zotlabs/Module/Settings.php:860
msgid "Grid page max height of content (in pixels)"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:892
+#: ../../Zotlabs/Module/Settings.php:894
msgid "Nobody except yourself"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:893
+#: ../../Zotlabs/Module/Settings.php:895
msgid "Only those you specifically allow"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:894
+#: ../../Zotlabs/Module/Settings.php:896
msgid "Approved connections"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:895
+#: ../../Zotlabs/Module/Settings.php:897
msgid "Any connections"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:896
+#: ../../Zotlabs/Module/Settings.php:898
msgid "Anybody on this website"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:897
+#: ../../Zotlabs/Module/Settings.php:899
msgid "Anybody in this network"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:898
+#: ../../Zotlabs/Module/Settings.php:900
msgid "Anybody authenticated"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:899
+#: ../../Zotlabs/Module/Settings.php:901
msgid "Anybody on the internet"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:974
+#: ../../Zotlabs/Module/Settings.php:976
msgid "Publish your default profile in the network directory"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:979
+#: ../../Zotlabs/Module/Settings.php:981
msgid "Allow us to suggest you as a potential friend to new members?"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:988
+#: ../../Zotlabs/Module/Settings.php:990
msgid "Your channel address is"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1030
+#: ../../Zotlabs/Module/Settings.php:1032
msgid "Channel Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1037
+#: ../../Zotlabs/Module/Settings.php:1039
msgid "Basic Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1038 ../../include/identity.php:1286
+#: ../../Zotlabs/Module/Settings.php:1040 ../../include/channel.php:1140
msgid "Full Name:"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1040
+#: ../../Zotlabs/Module/Settings.php:1042
msgid "Your Timezone:"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1041
+#: ../../Zotlabs/Module/Settings.php:1043
msgid "Default Post Location:"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1041
+#: ../../Zotlabs/Module/Settings.php:1043
msgid "Geographical location to display on your posts"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1042
+#: ../../Zotlabs/Module/Settings.php:1044
msgid "Use Browser Location:"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1044
+#: ../../Zotlabs/Module/Settings.php:1046
msgid "Adult Content"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1044
+#: ../../Zotlabs/Module/Settings.php:1046
msgid ""
"This channel frequently or regularly publishes adult content. (Please tag "
"any adult material and/or nudity with #NSFW)"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1046
+#: ../../Zotlabs/Module/Settings.php:1048
msgid "Security and Privacy Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1049
+#: ../../Zotlabs/Module/Settings.php:1051
msgid "Your permissions are already configured. Click to view/adjust"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1051
+#: ../../Zotlabs/Module/Settings.php:1053
msgid "Hide my online presence"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1051
+#: ../../Zotlabs/Module/Settings.php:1053
msgid "Prevents displaying in your profile that you are online"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1053
+#: ../../Zotlabs/Module/Settings.php:1055
msgid "Simple Privacy Settings:"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1054
+#: ../../Zotlabs/Module/Settings.php:1056
msgid ""
"Very Public - <em>extremely permissive (should be used with caution)</em>"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1055
+#: ../../Zotlabs/Module/Settings.php:1057
msgid ""
"Typical - <em>default public, privacy when desired (similar to social "
"network permissions but with improved privacy)</em>"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1056
+#: ../../Zotlabs/Module/Settings.php:1058
msgid "Private - <em>default private, never open or public</em>"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1057
+#: ../../Zotlabs/Module/Settings.php:1059
msgid "Blocked - <em>default blocked to/from everybody</em>"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1059
+#: ../../Zotlabs/Module/Settings.php:1061
msgid "Allow others to tag your posts"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1059
+#: ../../Zotlabs/Module/Settings.php:1061
msgid ""
"Often used by the community to retro-actively flag inappropriate content"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1061
+#: ../../Zotlabs/Module/Settings.php:1063
msgid "Advanced Privacy Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1063
+#: ../../Zotlabs/Module/Settings.php:1065
msgid "Expire other channel content after this many days"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1063
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "0 or blank to use the website limit."
+msgstr ""
+
+#: ../../Zotlabs/Module/Settings.php:1065
#, php-format
-msgid "0 or blank to use the website limit. The website expires after %d days."
+msgid "This website expires after %d days."
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1064
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "This website does not expire imported content."
+msgstr ""
+
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "The website limit takes precedence if lower than your limit."
+msgstr ""
+
+#: ../../Zotlabs/Module/Settings.php:1066
msgid "Maximum Friend Requests/Day:"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1064
+#: ../../Zotlabs/Module/Settings.php:1066
msgid "May reduce spam activity"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1065
-msgid "Default Post Permissions"
+#: ../../Zotlabs/Module/Settings.php:1067
+msgid "Default Post and Publish Permissions"
+msgstr ""
+
+#: ../../Zotlabs/Module/Settings.php:1069
+msgid "Use my default audience setting for the type of object published"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1070
+#: ../../Zotlabs/Module/Settings.php:1072
msgid "Channel permissions category:"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1076
+#: ../../Zotlabs/Module/Settings.php:1078
msgid "Maximum private messages per day from unknown people:"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1076
+#: ../../Zotlabs/Module/Settings.php:1078
msgid "Useful to reduce spamming"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1079
+#: ../../Zotlabs/Module/Settings.php:1081
msgid "Notification Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1080
+#: ../../Zotlabs/Module/Settings.php:1082
msgid "By default post a status message when:"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1081
+#: ../../Zotlabs/Module/Settings.php:1083
msgid "accepting a friend request"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1082
+#: ../../Zotlabs/Module/Settings.php:1084
msgid "joining a forum/community"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1083
+#: ../../Zotlabs/Module/Settings.php:1085
msgid "making an <em>interesting</em> profile change"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1084
+#: ../../Zotlabs/Module/Settings.php:1086
msgid "Send a notification email when:"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1085
+#: ../../Zotlabs/Module/Settings.php:1087
msgid "You receive a connection request"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1086
+#: ../../Zotlabs/Module/Settings.php:1088
msgid "Your connections are confirmed"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1087
+#: ../../Zotlabs/Module/Settings.php:1089
msgid "Someone writes on your profile wall"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1088
+#: ../../Zotlabs/Module/Settings.php:1090
msgid "Someone writes a followup comment"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1089
+#: ../../Zotlabs/Module/Settings.php:1091
msgid "You receive a private message"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1090
+#: ../../Zotlabs/Module/Settings.php:1092
msgid "You receive a friend suggestion"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1091
+#: ../../Zotlabs/Module/Settings.php:1093
msgid "You are tagged in a post"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1092
+#: ../../Zotlabs/Module/Settings.php:1094
msgid "You are poked/prodded/etc. in a post"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1095
+#: ../../Zotlabs/Module/Settings.php:1097
msgid "Show visual notifications including:"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1097
+#: ../../Zotlabs/Module/Settings.php:1099
msgid "Unseen grid activity"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1098
+#: ../../Zotlabs/Module/Settings.php:1100
msgid "Unseen channel activity"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1099
+#: ../../Zotlabs/Module/Settings.php:1101
msgid "Unseen private messages"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1099
-#: ../../Zotlabs/Module/Settings.php:1104
-#: ../../Zotlabs/Module/Settings.php:1105
+#: ../../Zotlabs/Module/Settings.php:1101
#: ../../Zotlabs/Module/Settings.php:1106
+#: ../../Zotlabs/Module/Settings.php:1107
+#: ../../Zotlabs/Module/Settings.php:1108
msgid "Recommended"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1100
+#: ../../Zotlabs/Module/Settings.php:1102
msgid "Upcoming events"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1101
+#: ../../Zotlabs/Module/Settings.php:1103
msgid "Events today"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1102
+#: ../../Zotlabs/Module/Settings.php:1104
msgid "Upcoming birthdays"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1102
+#: ../../Zotlabs/Module/Settings.php:1104
msgid "Not available in all themes"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1103
+#: ../../Zotlabs/Module/Settings.php:1105
msgid "System (personal) notifications"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1104
+#: ../../Zotlabs/Module/Settings.php:1106
msgid "System info messages"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1105
+#: ../../Zotlabs/Module/Settings.php:1107
msgid "System critical alerts"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1106
+#: ../../Zotlabs/Module/Settings.php:1108
msgid "New connections"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1107
+#: ../../Zotlabs/Module/Settings.php:1109
msgid "System Registrations"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1108
+#: ../../Zotlabs/Module/Settings.php:1110
msgid ""
"Also show new wall posts, private messages and connections under Notices"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1110
+#: ../../Zotlabs/Module/Settings.php:1112
msgid "Notify me of events this many days in advance"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1110
+#: ../../Zotlabs/Module/Settings.php:1112
msgid "Must be greater than 0"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1112
+#: ../../Zotlabs/Module/Settings.php:1114
msgid "Advanced Account/Page Type Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1113
+#: ../../Zotlabs/Module/Settings.php:1115
msgid "Change the behaviour of this account for special situations"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1116
+#: ../../Zotlabs/Module/Settings.php:1118
msgid ""
"Please enable expert mode (in <a href=\"settings/features\">Settings > "
"Additional features</a>) to adjust!"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1117
+#: ../../Zotlabs/Module/Settings.php:1119
msgid "Miscellaneous Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1118
+#: ../../Zotlabs/Module/Settings.php:1120
msgid "Default photo upload folder"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1118
-#: ../../Zotlabs/Module/Settings.php:1119
+#: ../../Zotlabs/Module/Settings.php:1120
+#: ../../Zotlabs/Module/Settings.php:1121
msgid "%Y - current year, %m - current month"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1119
+#: ../../Zotlabs/Module/Settings.php:1121
msgid "Default file upload folder"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1121
+#: ../../Zotlabs/Module/Settings.php:1123
msgid "Personal menu to display in your channel pages"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1123
+#: ../../Zotlabs/Module/Settings.php:1125
msgid "Remove this channel."
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1124
+#: ../../Zotlabs/Module/Settings.php:1126
msgid "Firefox Share $Projectname provider"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1125
+#: ../../Zotlabs/Module/Settings.php:1127
msgid "Start calendar week on monday"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:202
+#: ../../Zotlabs/Module/Setup.php:179
msgid "$Projectname Server - Setup"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:206
+#: ../../Zotlabs/Module/Setup.php:183
msgid "Could not connect to database."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:210
+#: ../../Zotlabs/Module/Setup.php:187
msgid ""
"Could not connect to specified site URL. Possible SSL certificate or DNS "
"issue."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:217
+#: ../../Zotlabs/Module/Setup.php:194
msgid "Could not create table."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:222
+#: ../../Zotlabs/Module/Setup.php:199
msgid "Your site database has been installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:226
+#: ../../Zotlabs/Module/Setup.php:203
msgid ""
"You may need to import the file \"install/schema_xxx.sql\" manually using a "
"database client."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:227 ../../Zotlabs/Module/Setup.php:289
-#: ../../Zotlabs/Module/Setup.php:744
+#: ../../Zotlabs/Module/Setup.php:204 ../../Zotlabs/Module/Setup.php:266
+#: ../../Zotlabs/Module/Setup.php:721
msgid "Please see the file \"install/INSTALL.txt\"."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:286
+#: ../../Zotlabs/Module/Setup.php:263
msgid "System check"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:291
+#: ../../Zotlabs/Module/Setup.php:268
msgid "Check again"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:313
+#: ../../Zotlabs/Module/Setup.php:290
msgid "Database connection"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:314
+#: ../../Zotlabs/Module/Setup.php:291
msgid ""
"In order to install $Projectname we need to know how to connect to your "
"database."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:315
+#: ../../Zotlabs/Module/Setup.php:292
msgid ""
"Please contact your hosting provider or site administrator if you have "
"questions about these settings."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:316
+#: ../../Zotlabs/Module/Setup.php:293
msgid ""
"The database you specify below should already exist. If it does not, please "
"create it before continuing."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:320
+#: ../../Zotlabs/Module/Setup.php:297
msgid "Database Server Name"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:320
+#: ../../Zotlabs/Module/Setup.php:297
msgid "Default is 127.0.0.1"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:321
+#: ../../Zotlabs/Module/Setup.php:298
msgid "Database Port"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:321
+#: ../../Zotlabs/Module/Setup.php:298
msgid "Communication port number - use 0 for default"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:322
+#: ../../Zotlabs/Module/Setup.php:299
msgid "Database Login Name"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:323
+#: ../../Zotlabs/Module/Setup.php:300
msgid "Database Login Password"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:324
+#: ../../Zotlabs/Module/Setup.php:301
msgid "Database Name"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:325
+#: ../../Zotlabs/Module/Setup.php:302
msgid "Database Type"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:327 ../../Zotlabs/Module/Setup.php:367
+#: ../../Zotlabs/Module/Setup.php:304 ../../Zotlabs/Module/Setup.php:344
msgid "Site administrator email address"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:327 ../../Zotlabs/Module/Setup.php:367
+#: ../../Zotlabs/Module/Setup.php:304 ../../Zotlabs/Module/Setup.php:344
msgid ""
"Your account email address must match this in order to use the web admin "
"panel."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:328 ../../Zotlabs/Module/Setup.php:369
+#: ../../Zotlabs/Module/Setup.php:305 ../../Zotlabs/Module/Setup.php:346
msgid "Website URL"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:328 ../../Zotlabs/Module/Setup.php:369
+#: ../../Zotlabs/Module/Setup.php:305 ../../Zotlabs/Module/Setup.php:346
msgid "Please use SSL (https) URL if available."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:329 ../../Zotlabs/Module/Setup.php:372
+#: ../../Zotlabs/Module/Setup.php:306 ../../Zotlabs/Module/Setup.php:349
msgid "Please select a default timezone for your website"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:356
+#: ../../Zotlabs/Module/Setup.php:333
msgid "Site settings"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:370
+#: ../../Zotlabs/Module/Setup.php:347
msgid "Enable $Projectname <strong>advanced</strong> features?"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:370
+#: ../../Zotlabs/Module/Setup.php:347
msgid ""
"Some advanced features, while useful - may be best suited for technically "
"proficient audiences"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:411
-msgid "PHP version 5.4 or greater is required."
+#: ../../Zotlabs/Module/Setup.php:388
+msgid "PHP version 5.5 or greater is required."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:412
+#: ../../Zotlabs/Module/Setup.php:389
msgid "PHP version"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:427
+#: ../../Zotlabs/Module/Setup.php:404
msgid "Could not find a command line version of PHP in the web server PATH."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:428
+#: ../../Zotlabs/Module/Setup.php:405
msgid ""
"If you don't have a command line version of PHP installed on server, you "
"will not be able to run background polling via cron."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:432
+#: ../../Zotlabs/Module/Setup.php:409
msgid "PHP executable path"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:432
+#: ../../Zotlabs/Module/Setup.php:409
msgid ""
"Enter full path to php executable. You can leave this blank to continue the "
"installation."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:437
+#: ../../Zotlabs/Module/Setup.php:414
msgid "Command line PHP"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:446
+#: ../../Zotlabs/Module/Setup.php:423
msgid ""
"The command line version of PHP on your system does not have "
"\"register_argc_argv\" enabled."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:447
+#: ../../Zotlabs/Module/Setup.php:424
msgid "This is required for message delivery to work."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:450
+#: ../../Zotlabs/Module/Setup.php:427
msgid "PHP register_argc_argv"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:468
+#: ../../Zotlabs/Module/Setup.php:445
#, php-format
msgid ""
"Your max allowed total upload size is set to %s. Maximum size of one file to "
"upload is set to %s. You are allowed to upload up to %d files at once."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:473
+#: ../../Zotlabs/Module/Setup.php:450
msgid "You can adjust these settings in the servers php.ini."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:475
+#: ../../Zotlabs/Module/Setup.php:452
msgid "PHP upload limits"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:498
+#: ../../Zotlabs/Module/Setup.php:475
msgid ""
"Error: the \"openssl_pkey_new\" function on this system is not able to "
"generate encryption keys"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:499
+#: ../../Zotlabs/Module/Setup.php:476
msgid ""
"If running under Windows, please see \"http://www.php.net/manual/en/openssl."
"installation.php\"."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:502
+#: ../../Zotlabs/Module/Setup.php:479
msgid "Generate encryption keys"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:514
+#: ../../Zotlabs/Module/Setup.php:491
msgid "libCurl PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:515
+#: ../../Zotlabs/Module/Setup.php:492
msgid "GD graphics PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:516
+#: ../../Zotlabs/Module/Setup.php:493
msgid "OpenSSL PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:517
+#: ../../Zotlabs/Module/Setup.php:494
msgid "mysqli or postgres PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:518
+#: ../../Zotlabs/Module/Setup.php:495
msgid "mb_string PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:519
+#: ../../Zotlabs/Module/Setup.php:496
msgid "mcrypt PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:520
+#: ../../Zotlabs/Module/Setup.php:497
msgid "xml PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:524 ../../Zotlabs/Module/Setup.php:526
+#: ../../Zotlabs/Module/Setup.php:501 ../../Zotlabs/Module/Setup.php:503
msgid "Apache mod_rewrite module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:524
+#: ../../Zotlabs/Module/Setup.php:501
msgid ""
"Error: Apache webserver mod-rewrite module is required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:530 ../../Zotlabs/Module/Setup.php:533
+#: ../../Zotlabs/Module/Setup.php:507 ../../Zotlabs/Module/Setup.php:510
msgid "proc_open"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:530
+#: ../../Zotlabs/Module/Setup.php:507
msgid ""
"Error: proc_open is required but is either not installed or has been "
"disabled in php.ini"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:538
+#: ../../Zotlabs/Module/Setup.php:515
msgid "Error: libCURL PHP module required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:542
+#: ../../Zotlabs/Module/Setup.php:519
msgid ""
"Error: GD graphics PHP module with JPEG support required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:546
+#: ../../Zotlabs/Module/Setup.php:523
msgid "Error: openssl PHP module required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:550
+#: ../../Zotlabs/Module/Setup.php:527
msgid ""
"Error: mysqli or postgres PHP module required but neither are installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:554
+#: ../../Zotlabs/Module/Setup.php:531
msgid "Error: mb_string PHP module required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:558
+#: ../../Zotlabs/Module/Setup.php:535
msgid "Error: mcrypt PHP module required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:562
+#: ../../Zotlabs/Module/Setup.php:539
msgid "Error: xml PHP module required for DAV but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:580
+#: ../../Zotlabs/Module/Setup.php:557
msgid ""
"The web installer needs to be able to create a file called \".htconfig.php\" "
"in the top folder of your web server and it is unable to do so."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:581
+#: ../../Zotlabs/Module/Setup.php:558
msgid ""
"This is most often a permission setting, as the web server may not be able "
"to write files in your folder - even if you can."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:582
+#: ../../Zotlabs/Module/Setup.php:559
msgid ""
"At the end of this procedure, we will give you a text to save in a file "
"named .htconfig.php in your Red top folder."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:583
+#: ../../Zotlabs/Module/Setup.php:560
msgid ""
"You can alternatively skip this procedure and perform a manual installation. "
"Please see the file \"install/INSTALL.txt\" for instructions."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:586
+#: ../../Zotlabs/Module/Setup.php:563
msgid ".htconfig.php is writable"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:600
+#: ../../Zotlabs/Module/Setup.php:577
msgid ""
"Red uses the Smarty3 template engine to render its web views. Smarty3 "
"compiles templates to PHP to speed up rendering."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:601
+#: ../../Zotlabs/Module/Setup.php:578
#, php-format
msgid ""
"In order to store these compiled templates, the web server needs to have "
-"write access to the directory %s under the Red top level folder."
+"write access to the directory %s under the top level web folder."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:602 ../../Zotlabs/Module/Setup.php:623
+#: ../../Zotlabs/Module/Setup.php:579 ../../Zotlabs/Module/Setup.php:600
msgid ""
"Please ensure that the user that your web server runs as (e.g. www-data) has "
"write access to this folder."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:603
+#: ../../Zotlabs/Module/Setup.php:580
#, php-format
msgid ""
"Note: as a security measure, you should give the web server write access to "
"%s only--not the template files (.tpl) that it contains."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:606
+#: ../../Zotlabs/Module/Setup.php:583
#, php-format
msgid "%s is writable"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:622
+#: ../../Zotlabs/Module/Setup.php:599
msgid ""
"Red uses the store directory to save uploaded files. The web server needs to "
"have write access to the store directory under the Red top level folder"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:626
+#: ../../Zotlabs/Module/Setup.php:603
msgid "store is writable"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:659
+#: ../../Zotlabs/Module/Setup.php:636
msgid ""
"SSL certificate cannot be validated. Fix certificate or disable https access "
"to this site."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:660
+#: ../../Zotlabs/Module/Setup.php:637
msgid ""
"If you have https access to your website or allow connections to TCP port "
"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
"NOT use self-signed certificates!"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:661
+#: ../../Zotlabs/Module/Setup.php:638
msgid ""
"This restriction is incorporated because public posts from you may for "
"example contain references to images on your own hub."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:662
+#: ../../Zotlabs/Module/Setup.php:639
msgid ""
"If your certificate is not recognized, members of other sites (who may "
"themselves have valid certificates) will get a warning message on their own "
"site complaining about security issues."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:663
+#: ../../Zotlabs/Module/Setup.php:640
msgid ""
"This can cause usability issues elsewhere (not just on your own site) so we "
"must insist on this requirement."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:664
+#: ../../Zotlabs/Module/Setup.php:641
msgid ""
"Providers are available that issue free certificates which are browser-valid."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:666
+#: ../../Zotlabs/Module/Setup.php:643
msgid "SSL certificate validation"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:672
+#: ../../Zotlabs/Module/Setup.php:649
msgid ""
"Url rewrite in .htaccess is not working. Check your server configuration."
"Test: "
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:675
+#: ../../Zotlabs/Module/Setup.php:652
msgid "Url rewrite is working"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:684
+#: ../../Zotlabs/Module/Setup.php:661
msgid ""
"The database configuration file \".htconfig.php\" could not be written. "
"Please use the enclosed text to create a configuration file in your web "
"server root."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:708
+#: ../../Zotlabs/Module/Setup.php:685
msgid "Errors encountered creating database tables."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:742
+#: ../../Zotlabs/Module/Setup.php:719
msgid "<h1>What next</h1>"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:743
+#: ../../Zotlabs/Module/Setup.php:720
msgid ""
"IMPORTANT: You will need to [manually] setup a scheduled task for the poller."
msgstr ""
@@ -6080,11 +6070,11 @@ msgstr ""
msgid "Ignore/Hide"
msgstr ""
-#: ../../Zotlabs/Module/Tagger.php:55 ../../include/bbcode.php:257
+#: ../../Zotlabs/Module/Tagger.php:55 ../../include/bbcode.php:256
msgid "post"
msgstr ""
-#: ../../Zotlabs/Module/Tagger.php:57 ../../include/text.php:1977
+#: ../../Zotlabs/Module/Tagger.php:57 ../../include/text.php:1948
#: ../../include/conversation.php:150
msgid "comment"
msgstr ""
@@ -6221,16 +6211,16 @@ msgid ""
"or restore these in date order (oldest first)."
msgstr ""
-#: ../../Zotlabs/Module/Viewconnections.php:63
+#: ../../Zotlabs/Module/Viewconnections.php:62
msgid "No connections."
msgstr ""
-#: ../../Zotlabs/Module/Viewconnections.php:76
+#: ../../Zotlabs/Module/Viewconnections.php:75
#, php-format
msgid "Visit %s's profile [%s]"
msgstr ""
-#: ../../Zotlabs/Module/Viewconnections.php:105
+#: ../../Zotlabs/Module/Viewconnections.php:104
msgid "View Connections"
msgstr ""
@@ -6238,20 +6228,20 @@ msgstr ""
msgid "Source of Item"
msgstr ""
-#: ../../Zotlabs/Module/Webpages.php:186 ../../include/apps.php:168
-#: ../../include/conversation.php:1696 ../../include/nav.php:106
+#: ../../Zotlabs/Module/Webpages.php:184 ../../Zotlabs/Lib/Apps.php:217
+#: ../../include/nav.php:106 ../../include/conversation.php:1685
msgid "Webpages"
msgstr ""
-#: ../../Zotlabs/Module/Webpages.php:197 ../../include/page_widgets.php:41
+#: ../../Zotlabs/Module/Webpages.php:195 ../../include/page_widgets.php:41
msgid "Actions"
msgstr ""
-#: ../../Zotlabs/Module/Webpages.php:198 ../../include/page_widgets.php:42
+#: ../../Zotlabs/Module/Webpages.php:196 ../../include/page_widgets.php:42
msgid "Page Link"
msgstr ""
-#: ../../Zotlabs/Module/Webpages.php:199
+#: ../../Zotlabs/Module/Webpages.php:197
msgid "Page Title"
msgstr ""
@@ -6263,670 +6253,948 @@ msgstr ""
msgid "Lookup xchan beginning with (or webbie): "
msgstr ""
-#: ../../include/Import/import_diaspora.php:17
-msgid "No username found in import file."
+#: ../../Zotlabs/Lib/Apps.php:204
+msgid "Site Admin"
msgstr ""
-#: ../../include/Import/import_diaspora.php:42 ../../include/import.php:44
-msgid "Unable to create a unique channel address. Import failed."
+#: ../../Zotlabs/Lib/Apps.php:205
+msgid "Bug Report"
msgstr ""
-#: ../../include/dba/dba_driver.php:141
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
+#: ../../Zotlabs/Lib/Apps.php:206
+msgid "View Bookmarks"
msgstr ""
-#: ../../include/identity.php:32
-msgid "Unable to obtain identity information from database"
+#: ../../Zotlabs/Lib/Apps.php:207
+msgid "My Chatrooms"
msgstr ""
-#: ../../include/identity.php:66
-msgid "Empty name"
+#: ../../Zotlabs/Lib/Apps.php:209
+msgid "Firefox Share"
msgstr ""
-#: ../../include/identity.php:69
-msgid "Name too long"
+#: ../../Zotlabs/Lib/Apps.php:210
+msgid "Remote Diagnostics"
msgstr ""
-#: ../../include/identity.php:180
-msgid "No account identifier"
+#: ../../Zotlabs/Lib/Apps.php:211 ../../include/features.php:89
+msgid "Suggest Channels"
msgstr ""
-#: ../../include/identity.php:192
-msgid "Nickname is required."
+#: ../../Zotlabs/Lib/Apps.php:212 ../../include/nav.php:110
+#: ../../boot.php:1703
+msgid "Login"
msgstr ""
-#: ../../include/identity.php:206
-msgid "Reserved nickname. Please choose another."
+#: ../../Zotlabs/Lib/Apps.php:214 ../../include/nav.php:179
+msgid "Grid"
msgstr ""
-#: ../../include/identity.php:211
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
+#: ../../Zotlabs/Lib/Apps.php:218 ../../include/nav.php:182
+msgid "Channel Home"
msgstr ""
-#: ../../include/identity.php:287
-msgid "Unable to retrieve created identity"
+#: ../../Zotlabs/Lib/Apps.php:221 ../../include/nav.php:201
+#: ../../include/conversation.php:1649 ../../include/conversation.php:1652
+msgid "Events"
msgstr ""
-#: ../../include/identity.php:345
-msgid "Default Profile"
+#: ../../Zotlabs/Lib/Apps.php:222 ../../include/nav.php:167
+msgid "Directory"
msgstr ""
-#: ../../include/identity.php:791
-msgid "Requested channel is not available."
+#: ../../Zotlabs/Lib/Apps.php:224 ../../include/nav.php:193
+msgid "Mail"
msgstr ""
-#: ../../include/identity.php:938
-msgid "Create New Profile"
+#: ../../Zotlabs/Lib/Apps.php:227 ../../include/nav.php:96
+msgid "Chat"
msgstr ""
-#: ../../include/identity.php:941 ../../include/nav.php:90
-msgid "Edit Profile"
+#: ../../Zotlabs/Lib/Apps.php:229
+msgid "Probe"
msgstr ""
-#: ../../include/identity.php:958
-msgid "Visible to everybody"
+#: ../../Zotlabs/Lib/Apps.php:230
+msgid "Suggest"
msgstr ""
-#: ../../include/identity.php:1033 ../../include/identity.php:1288
-msgid "Gender:"
+#: ../../Zotlabs/Lib/Apps.php:231
+msgid "Random Channel"
msgstr ""
-#: ../../include/identity.php:1034 ../../include/identity.php:1332
-msgid "Status:"
+#: ../../Zotlabs/Lib/Apps.php:232
+msgid "Invite"
msgstr ""
-#: ../../include/identity.php:1035 ../../include/identity.php:1343
-msgid "Homepage:"
+#: ../../Zotlabs/Lib/Apps.php:233 ../../include/widgets.php:1386
+msgid "Features"
msgstr ""
-#: ../../include/identity.php:1036
-msgid "Online Now"
+#: ../../Zotlabs/Lib/Apps.php:235
+msgid "Post"
msgstr ""
-#: ../../include/identity.php:1124 ../../include/identity.php:1200
-msgid "F d"
+#: ../../Zotlabs/Lib/Apps.php:335
+msgid "Purchase"
msgstr ""
-#: ../../include/identity.php:1180
-msgid "Birthday Reminders"
+#: ../../Zotlabs/Lib/Chatroom.php:27
+msgid "Missing room name"
msgstr ""
-#: ../../include/identity.php:1181
-msgid "Birthdays this week:"
+#: ../../Zotlabs/Lib/Chatroom.php:36
+msgid "Duplicate room name"
msgstr ""
-#: ../../include/identity.php:1232
-msgid "[No description]"
+#: ../../Zotlabs/Lib/Chatroom.php:86 ../../Zotlabs/Lib/Chatroom.php:94
+msgid "Invalid room specifier."
msgstr ""
-#: ../../include/identity.php:1250
-msgid "Event Reminders"
+#: ../../Zotlabs/Lib/Chatroom.php:126
+msgid "Room not found."
msgstr ""
-#: ../../include/identity.php:1251
-msgid "Events this week:"
+#: ../../Zotlabs/Lib/Chatroom.php:147
+msgid "Room is full"
msgstr ""
-#: ../../include/identity.php:1293
-msgid "Like this channel"
+#: ../../Zotlabs/Lib/Enotify.php:60 ../../include/network.php:1823
+msgid "$Projectname Notification"
msgstr ""
-#: ../../include/identity.php:1317
-msgid "j F, Y"
+#: ../../Zotlabs/Lib/Enotify.php:61 ../../include/network.php:1824
+msgid "$projectname"
msgstr ""
-#: ../../include/identity.php:1318
-msgid "j F"
+#: ../../Zotlabs/Lib/Enotify.php:63 ../../include/network.php:1826
+msgid "Thank You,"
msgstr ""
-#: ../../include/identity.php:1325
-msgid "Birthday:"
+#: ../../Zotlabs/Lib/Enotify.php:65 ../../include/network.php:1828
+#, php-format
+msgid "%s Administrator"
msgstr ""
-#: ../../include/identity.php:1338
+#: ../../Zotlabs/Lib/Enotify.php:100
#, php-format
-msgid "for %1$d %2$s"
+msgid "%s <!item_type!>"
msgstr ""
-#: ../../include/identity.php:1341
-msgid "Sexual Preference:"
+#: ../../Zotlabs/Lib/Enotify.php:104
+#, php-format
+msgid "[Hubzilla:Notify] New mail received at %s"
msgstr ""
-#: ../../include/identity.php:1347
-msgid "Tags:"
+#: ../../Zotlabs/Lib/Enotify.php:106
+#, php-format
+msgid "%1$s, %2$s sent you a new private message at %3$s."
msgstr ""
-#: ../../include/identity.php:1349
-msgid "Political Views:"
+#: ../../Zotlabs/Lib/Enotify.php:107
+#, php-format
+msgid "%1$s sent you %2$s."
msgstr ""
-#: ../../include/identity.php:1351
-msgid "Religion:"
+#: ../../Zotlabs/Lib/Enotify.php:107
+msgid "a private message"
msgstr ""
-#: ../../include/identity.php:1355
-msgid "Hobbies/Interests:"
+#: ../../Zotlabs/Lib/Enotify.php:108
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
msgstr ""
-#: ../../include/identity.php:1357
-msgid "Likes:"
+#: ../../Zotlabs/Lib/Enotify.php:164
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
msgstr ""
-#: ../../include/identity.php:1359
-msgid "Dislikes:"
+#: ../../Zotlabs/Lib/Enotify.php:172
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
msgstr ""
-#: ../../include/identity.php:1361
-msgid "Contact information and Social Networks:"
+#: ../../Zotlabs/Lib/Enotify.php:181
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
msgstr ""
-#: ../../include/identity.php:1363
-msgid "My other channels:"
+#: ../../Zotlabs/Lib/Enotify.php:192
+#, php-format
+msgid "[Hubzilla:Notify] Comment to conversation #%1$d by %2$s"
msgstr ""
-#: ../../include/identity.php:1365
-msgid "Musical interests:"
+#: ../../Zotlabs/Lib/Enotify.php:193
+#, php-format
+msgid "%1$s, %2$s commented on an item/conversation you have been following."
msgstr ""
-#: ../../include/identity.php:1367
-msgid "Books, literature:"
+#: ../../Zotlabs/Lib/Enotify.php:196 ../../Zotlabs/Lib/Enotify.php:211
+#: ../../Zotlabs/Lib/Enotify.php:237 ../../Zotlabs/Lib/Enotify.php:255
+#: ../../Zotlabs/Lib/Enotify.php:269
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
msgstr ""
-#: ../../include/identity.php:1369
-msgid "Television:"
+#: ../../Zotlabs/Lib/Enotify.php:202
+#, php-format
+msgid "[Hubzilla:Notify] %s posted to your profile wall"
msgstr ""
-#: ../../include/identity.php:1371
-msgid "Film/dance/culture/entertainment:"
+#: ../../Zotlabs/Lib/Enotify.php:204
+#, php-format
+msgid "%1$s, %2$s posted to your profile wall at %3$s"
msgstr ""
-#: ../../include/identity.php:1373
-msgid "Love/Romance:"
+#: ../../Zotlabs/Lib/Enotify.php:206
+#, php-format
+msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
msgstr ""
-#: ../../include/identity.php:1375
-msgid "Work/employment:"
+#: ../../Zotlabs/Lib/Enotify.php:230
+#, php-format
+msgid "[Hubzilla:Notify] %s tagged you"
msgstr ""
-#: ../../include/identity.php:1377
-msgid "School/education:"
+#: ../../Zotlabs/Lib/Enotify.php:231
+#, php-format
+msgid "%1$s, %2$s tagged you at %3$s"
msgstr ""
-#: ../../include/identity.php:1397
-msgid "Like this thing"
+#: ../../Zotlabs/Lib/Enotify.php:232
+#, php-format
+msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
msgstr ""
-#: ../../include/notify.php:20
-msgid "created a new post"
+#: ../../Zotlabs/Lib/Enotify.php:244
+#, php-format
+msgid "[Hubzilla:Notify] %1$s poked you"
msgstr ""
-#: ../../include/notify.php:21
+#: ../../Zotlabs/Lib/Enotify.php:245
#, php-format
-msgid "commented on %s's post"
+msgid "%1$s, %2$s poked you at %3$s"
msgstr ""
-#: ../../include/acl_selectors.php:230
-msgid "Visible to your default audience"
+#: ../../Zotlabs/Lib/Enotify.php:246
+#, php-format
+msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
msgstr ""
-#: ../../include/acl_selectors.php:255
-msgid "Limit access:"
+#: ../../Zotlabs/Lib/Enotify.php:262
+#, php-format
+msgid "[Hubzilla:Notify] %s tagged your post"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Enotify.php:263
+#, php-format
+msgid "%1$s, %2$s tagged your post at %3$s"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Enotify.php:264
+#, php-format
+msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Enotify.php:276
+msgid "[Hubzilla:Notify] Introduction received"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Enotify.php:277
+#, php-format
+msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
msgstr ""
-#: ../../include/acl_selectors.php:256
+#: ../../Zotlabs/Lib/Enotify.php:278
+#, php-format
msgid ""
-"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit "
-"the scope of \"Show\"."
+"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
msgstr ""
-#: ../../include/acl_selectors.php:257
-msgid "Show"
+#: ../../Zotlabs/Lib/Enotify.php:282 ../../Zotlabs/Lib/Enotify.php:301
+#, php-format
+msgid "You may visit their profile at %s"
msgstr ""
-#: ../../include/acl_selectors.php:258
-msgid "Don't show"
+#: ../../Zotlabs/Lib/Enotify.php:284
+#, php-format
+msgid "Please visit %s to approve or reject the connection request."
msgstr ""
-#: ../../include/acl_selectors.php:264
-msgid "Other networks and post services"
+#: ../../Zotlabs/Lib/Enotify.php:291
+msgid "[Hubzilla:Notify] Friend suggestion received"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Enotify.php:292
+#, php-format
+msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
msgstr ""
-#: ../../include/acl_selectors.php:294
+#: ../../Zotlabs/Lib/Enotify.php:293
#, php-format
msgid ""
-"Post permissions %s cannot be changed %s after a post is shared.</br />These "
-"permissions set who is allowed to view the post."
+"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from %4$s."
msgstr ""
-#: ../../include/profile_selectors.php:6
-msgid "Currently Male"
+#: ../../Zotlabs/Lib/Enotify.php:299
+msgid "Name:"
msgstr ""
-#: ../../include/profile_selectors.php:6
-msgid "Currently Female"
+#: ../../Zotlabs/Lib/Enotify.php:300
+msgid "Photo:"
msgstr ""
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Male"
+#: ../../Zotlabs/Lib/Enotify.php:303
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
msgstr ""
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Female"
+#: ../../Zotlabs/Lib/Enotify.php:518
+msgid "[Hubzilla:Notify]"
msgstr ""
-#: ../../include/profile_selectors.php:6
-msgid "Transgender"
+#: ../../Zotlabs/Lib/Enotify.php:667
+msgid "created a new post"
msgstr ""
-#: ../../include/profile_selectors.php:6
-msgid "Intersex"
+#: ../../Zotlabs/Lib/Enotify.php:668
+#, php-format
+msgid "commented on %s's post"
msgstr ""
-#: ../../include/profile_selectors.php:6
-msgid "Transsexual"
+#: ../../Zotlabs/Lib/ThreadItem.php:95 ../../include/conversation.php:664
+msgid "Private Message"
msgstr ""
-#: ../../include/profile_selectors.php:6
-msgid "Hermaphrodite"
+#: ../../Zotlabs/Lib/ThreadItem.php:132 ../../include/conversation.php:656
+msgid "Select"
msgstr ""
-#: ../../include/profile_selectors.php:6
-msgid "Neuter"
+#: ../../Zotlabs/Lib/ThreadItem.php:136
+msgid "Save to Folder"
msgstr ""
-#: ../../include/profile_selectors.php:6
-msgid "Non-specific"
+#: ../../Zotlabs/Lib/ThreadItem.php:157
+msgid "I will attend"
msgstr ""
-#: ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
-#: ../../include/profile_selectors.php:61
-#: ../../include/profile_selectors.php:97 ../../include/permissions.php:881
-msgid "Other"
+#: ../../Zotlabs/Lib/ThreadItem.php:157
+msgid "I will not attend"
msgstr ""
-#: ../../include/profile_selectors.php:6
-msgid "Undecided"
+#: ../../Zotlabs/Lib/ThreadItem.php:157
+msgid "I might attend"
msgstr ""
-#: ../../include/profile_selectors.php:42
-#: ../../include/profile_selectors.php:61
-msgid "Males"
+#: ../../Zotlabs/Lib/ThreadItem.php:167
+msgid "I agree"
msgstr ""
-#: ../../include/profile_selectors.php:42
-#: ../../include/profile_selectors.php:61
-msgid "Females"
+#: ../../Zotlabs/Lib/ThreadItem.php:167
+msgid "I disagree"
msgstr ""
-#: ../../include/profile_selectors.php:42
-msgid "Gay"
+#: ../../Zotlabs/Lib/ThreadItem.php:167
+msgid "I abstain"
msgstr ""
-#: ../../include/profile_selectors.php:42
-msgid "Lesbian"
+#: ../../Zotlabs/Lib/ThreadItem.php:218
+msgid "Add Star"
msgstr ""
-#: ../../include/profile_selectors.php:42
-msgid "No Preference"
+#: ../../Zotlabs/Lib/ThreadItem.php:219
+msgid "Remove Star"
msgstr ""
-#: ../../include/profile_selectors.php:42
-msgid "Bisexual"
+#: ../../Zotlabs/Lib/ThreadItem.php:220
+msgid "Toggle Star Status"
msgstr ""
-#: ../../include/profile_selectors.php:42
-msgid "Autosexual"
+#: ../../Zotlabs/Lib/ThreadItem.php:224
+msgid "starred"
msgstr ""
-#: ../../include/profile_selectors.php:42
-msgid "Abstinent"
+#: ../../Zotlabs/Lib/ThreadItem.php:234 ../../include/conversation.php:671
+msgid "Message signature validated"
msgstr ""
-#: ../../include/profile_selectors.php:42
-msgid "Virgin"
+#: ../../Zotlabs/Lib/ThreadItem.php:235 ../../include/conversation.php:672
+msgid "Message signature incorrect"
msgstr ""
-#: ../../include/profile_selectors.php:42
-msgid "Deviant"
+#: ../../Zotlabs/Lib/ThreadItem.php:243
+msgid "Add Tag"
msgstr ""
-#: ../../include/profile_selectors.php:42
-msgid "Fetish"
+#: ../../Zotlabs/Lib/ThreadItem.php:261 ../../include/taxonomy.php:316
+msgid "like"
msgstr ""
-#: ../../include/profile_selectors.php:42
-msgid "Oodles"
+#: ../../Zotlabs/Lib/ThreadItem.php:262 ../../include/taxonomy.php:317
+msgid "dislike"
msgstr ""
-#: ../../include/profile_selectors.php:42
-msgid "Nonsexual"
+#: ../../Zotlabs/Lib/ThreadItem.php:266
+msgid "Share This"
msgstr ""
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Single"
+#: ../../Zotlabs/Lib/ThreadItem.php:266
+msgid "share"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Lonely"
+#: ../../Zotlabs/Lib/ThreadItem.php:275
+msgid "Delivery Report"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Available"
+#: ../../Zotlabs/Lib/ThreadItem.php:293
+#, php-format
+msgid "%d comment"
+msgid_plural "%d comments"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../Zotlabs/Lib/ThreadItem.php:322 ../../Zotlabs/Lib/ThreadItem.php:323
+#, php-format
+msgid "View %s's profile - %s"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Unavailable"
+#: ../../Zotlabs/Lib/ThreadItem.php:326
+msgid "to"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Has crush"
+#: ../../Zotlabs/Lib/ThreadItem.php:327
+msgid "via"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Infatuated"
+#: ../../Zotlabs/Lib/ThreadItem.php:328
+msgid "Wall-to-Wall"
msgstr ""
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Dating"
+#: ../../Zotlabs/Lib/ThreadItem.php:329
+msgid "via Wall-To-Wall:"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Unfaithful"
+#: ../../Zotlabs/Lib/ThreadItem.php:341 ../../include/conversation.php:719
+#, php-format
+msgid "from %s"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Sex Addict"
+#: ../../Zotlabs/Lib/ThreadItem.php:344 ../../include/conversation.php:722
+#, php-format
+msgid "last edited: %s"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Friends/Benefits"
+#: ../../Zotlabs/Lib/ThreadItem.php:345 ../../include/conversation.php:723
+#, php-format
+msgid "Expires: %s"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Casual"
+#: ../../Zotlabs/Lib/ThreadItem.php:370
+msgid "Save Bookmarks"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Engaged"
+#: ../../Zotlabs/Lib/ThreadItem.php:371
+msgid "Add to Calendar"
msgstr ""
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Married"
+#: ../../Zotlabs/Lib/ThreadItem.php:380
+msgid "Mark all seen"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Imaginarily married"
+#: ../../Zotlabs/Lib/ThreadItem.php:421 ../../include/js_strings.php:7
+msgid "[+] show all"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Partners"
+#: ../../Zotlabs/Lib/ThreadItem.php:711 ../../include/conversation.php:1215
+msgid "Bold"
msgstr ""
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Cohabiting"
+#: ../../Zotlabs/Lib/ThreadItem.php:712 ../../include/conversation.php:1216
+msgid "Italic"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Common law"
+#: ../../Zotlabs/Lib/ThreadItem.php:713 ../../include/conversation.php:1217
+msgid "Underline"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Happy"
+#: ../../Zotlabs/Lib/ThreadItem.php:714 ../../include/conversation.php:1218
+msgid "Quote"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Not looking"
+#: ../../Zotlabs/Lib/ThreadItem.php:715 ../../include/conversation.php:1219
+msgid "Code"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Swinger"
+#: ../../Zotlabs/Lib/ThreadItem.php:716
+msgid "Image"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Betrayed"
+#: ../../Zotlabs/Lib/ThreadItem.php:717
+msgid "Insert Link"
msgstr ""
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Separated"
+#: ../../Zotlabs/Lib/ThreadItem.php:718
+msgid "Video"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Unstable"
+#: ../../include/Import/import_diaspora.php:16
+msgid "No username found in import file."
msgstr ""
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Divorced"
+#: ../../include/Import/import_diaspora.php:41 ../../include/import.php:50
+msgid "Unable to create a unique channel address. Import failed."
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Imaginarily divorced"
+#: ../../include/dba/dba_driver.php:171
+#, php-format
+msgid "Cannot locate DNS info for database server '%s'"
msgstr ""
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Widowed"
+#: ../../include/taxonomy.php:188 ../../include/taxonomy.php:270
+#: ../../include/widgets.php:46 ../../include/widgets.php:429
+#: ../../include/contact_widgets.php:91
+msgid "Categories"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Uncertain"
+#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249
+msgid "Tags"
msgstr ""
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "It's complicated"
+#: ../../include/taxonomy.php:293
+msgid "Keywords"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Don't care"
+#: ../../include/taxonomy.php:314
+msgid "have"
msgstr ""
-#: ../../include/profile_selectors.php:80
-msgid "Ask me"
+#: ../../include/taxonomy.php:314
+msgid "has"
msgstr ""
-#: ../../include/activities.php:42
-msgid " and "
+#: ../../include/taxonomy.php:315
+msgid "want"
msgstr ""
-#: ../../include/activities.php:50
-msgid "public profile"
+#: ../../include/taxonomy.php:315
+msgid "wants"
msgstr ""
-#: ../../include/activities.php:59
+#: ../../include/taxonomy.php:316
+msgid "likes"
+msgstr ""
+
+#: ../../include/taxonomy.php:317
+msgid "dislikes"
+msgstr ""
+
+#: ../../include/event.php:22 ../../include/event.php:69
+#: ../../include/bb2diaspora.php:485
+msgid "l F d, Y \\@ g:i A"
+msgstr ""
+
+#: ../../include/event.php:30 ../../include/event.php:73
+#: ../../include/bb2diaspora.php:491
+msgid "Starts:"
+msgstr ""
+
+#: ../../include/event.php:40 ../../include/event.php:77
+#: ../../include/bb2diaspora.php:499
+msgid "Finishes:"
+msgstr ""
+
+#: ../../include/event.php:812
+msgid "This event has been added to your calendar."
+msgstr ""
+
+#: ../../include/event.php:1012
+msgid "Not specified"
+msgstr ""
+
+#: ../../include/event.php:1013
+msgid "Needs Action"
+msgstr ""
+
+#: ../../include/event.php:1014
+msgid "Completed"
+msgstr ""
+
+#: ../../include/event.php:1015
+msgid "In Process"
+msgstr ""
+
+#: ../../include/event.php:1016
+msgid "Cancelled"
+msgstr ""
+
+#: ../../include/import.php:29
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr ""
+
+#: ../../include/import.php:76
+msgid "Channel clone failed. Import failed."
+msgstr ""
+
+#: ../../include/items.php:892 ../../include/items.php:937
+msgid "(Unknown)"
+msgstr ""
+
+#: ../../include/items.php:1136
+msgid "Visible to anybody on the internet."
+msgstr ""
+
+#: ../../include/items.php:1138
+msgid "Visible to you only."
+msgstr ""
+
+#: ../../include/items.php:1140
+msgid "Visible to anybody in this network."
+msgstr ""
+
+#: ../../include/items.php:1142
+msgid "Visible to anybody authenticated."
+msgstr ""
+
+#: ../../include/items.php:1144
#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgid "Visible to anybody on %s."
msgstr ""
-#: ../../include/activities.php:60
+#: ../../include/items.php:1146
+msgid "Visible to all connections."
+msgstr ""
+
+#: ../../include/items.php:1148
+msgid "Visible to approved connections."
+msgstr ""
+
+#: ../../include/items.php:1150
+msgid "Visible to specific connections."
+msgstr ""
+
+#: ../../include/items.php:3909
+msgid "Privacy group is empty."
+msgstr ""
+
+#: ../../include/items.php:3916
#, php-format
-msgid "Visit %1$s's %2$s"
+msgid "Privacy group: %s"
+msgstr ""
+
+#: ../../include/items.php:3928
+msgid "Connection not found."
+msgstr ""
+
+#: ../../include/items.php:4277
+msgid "profile photo"
+msgstr ""
+
+#: ../../include/message.php:20
+msgid "No recipient provided."
+msgstr ""
+
+#: ../../include/message.php:25
+msgid "[no subject]"
+msgstr ""
+
+#: ../../include/message.php:45
+msgid "Unable to determine sender."
+msgstr ""
+
+#: ../../include/message.php:222
+msgid "Stored post could not be verified."
+msgstr ""
+
+#: ../../include/text.php:428
+msgid "prev"
+msgstr ""
+
+#: ../../include/text.php:430
+msgid "first"
msgstr ""
-#: ../../include/activities.php:63
+#: ../../include/text.php:459
+msgid "last"
+msgstr ""
+
+#: ../../include/text.php:462
+msgid "next"
+msgstr ""
+
+#: ../../include/text.php:472
+msgid "older"
+msgstr ""
+
+#: ../../include/text.php:474
+msgid "newer"
+msgstr ""
+
+#: ../../include/text.php:863
+msgid "No connections"
+msgstr ""
+
+#: ../../include/text.php:888
#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
+msgid "View all %s connections"
msgstr ""
-#: ../../include/apps.php:155
-msgid "Site Admin"
+#: ../../include/text.php:1033 ../../include/text.php:1038
+msgid "poke"
msgstr ""
-#: ../../include/apps.php:156
-msgid "Bug Report"
+#: ../../include/text.php:1033 ../../include/text.php:1038
+#: ../../include/conversation.php:243
+msgid "poked"
msgstr ""
-#: ../../include/apps.php:157
-msgid "View Bookmarks"
+#: ../../include/text.php:1039
+msgid "ping"
msgstr ""
-#: ../../include/apps.php:158
-msgid "My Chatrooms"
+#: ../../include/text.php:1039
+msgid "pinged"
msgstr ""
-#: ../../include/apps.php:160
-msgid "Firefox Share"
+#: ../../include/text.php:1040
+msgid "prod"
msgstr ""
-#: ../../include/apps.php:161
-msgid "Remote Diagnostics"
+#: ../../include/text.php:1040
+msgid "prodded"
msgstr ""
-#: ../../include/apps.php:162 ../../include/features.php:89
-msgid "Suggest Channels"
+#: ../../include/text.php:1041
+msgid "slap"
msgstr ""
-#: ../../include/apps.php:163 ../../include/nav.php:110 ../../boot.php:1615
-msgid "Login"
+#: ../../include/text.php:1041
+msgid "slapped"
msgstr ""
-#: ../../include/apps.php:165 ../../include/nav.php:179
-msgid "Grid"
+#: ../../include/text.php:1042
+msgid "finger"
msgstr ""
-#: ../../include/apps.php:169 ../../include/nav.php:182
-msgid "Channel Home"
+#: ../../include/text.php:1042
+msgid "fingered"
msgstr ""
-#: ../../include/apps.php:172 ../../include/conversation.php:1659
-#: ../../include/conversation.php:1662 ../../include/nav.php:201
-msgid "Events"
+#: ../../include/text.php:1043
+msgid "rebuff"
msgstr ""
-#: ../../include/apps.php:173 ../../include/nav.php:167
-msgid "Directory"
+#: ../../include/text.php:1043
+msgid "rebuffed"
msgstr ""
-#: ../../include/apps.php:175 ../../include/nav.php:193
-msgid "Mail"
+#: ../../include/text.php:1055
+msgid "happy"
msgstr ""
-#: ../../include/apps.php:178 ../../include/nav.php:96
-msgid "Chat"
+#: ../../include/text.php:1056
+msgid "sad"
msgstr ""
-#: ../../include/apps.php:180
-msgid "Probe"
+#: ../../include/text.php:1057
+msgid "mellow"
msgstr ""
-#: ../../include/apps.php:181
-msgid "Suggest"
+#: ../../include/text.php:1058
+msgid "tired"
msgstr ""
-#: ../../include/apps.php:182
-msgid "Random Channel"
+#: ../../include/text.php:1059
+msgid "perky"
msgstr ""
-#: ../../include/apps.php:183
-msgid "Invite"
+#: ../../include/text.php:1060
+msgid "angry"
msgstr ""
-#: ../../include/apps.php:184 ../../include/widgets.php:1387
-msgid "Features"
+#: ../../include/text.php:1061
+msgid "stupefied"
msgstr ""
-#: ../../include/apps.php:186
-msgid "Post"
+#: ../../include/text.php:1062
+msgid "puzzled"
msgstr ""
-#: ../../include/apps.php:284
-msgid "Install"
+#: ../../include/text.php:1063
+msgid "interested"
msgstr ""
-#: ../../include/apps.php:289
-msgid "Purchase"
+#: ../../include/text.php:1064
+msgid "bitter"
msgstr ""
-#: ../../include/photos.php:112
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
+#: ../../include/text.php:1065
+msgid "cheerful"
msgstr ""
-#: ../../include/photos.php:119
-msgid "Image file is empty."
+#: ../../include/text.php:1066
+msgid "alive"
msgstr ""
-#: ../../include/photos.php:257
-msgid "Photo storage failed."
+#: ../../include/text.php:1067
+msgid "annoyed"
msgstr ""
-#: ../../include/photos.php:297
-msgid "a new photo"
+#: ../../include/text.php:1068
+msgid "anxious"
msgstr ""
-#: ../../include/photos.php:301
-#, php-format
-msgctxt "photo_upload"
-msgid "%1$s posted %2$s to %3$s"
+#: ../../include/text.php:1069
+msgid "cranky"
msgstr ""
-#: ../../include/photos.php:506 ../../include/conversation.php:1645
-msgid "Photo Albums"
+#: ../../include/text.php:1070
+msgid "disturbed"
msgstr ""
-#: ../../include/photos.php:510
-msgid "Upload New Photos"
+#: ../../include/text.php:1071
+msgid "frustrated"
msgstr ""
-#: ../../include/bb2diaspora.php:398
-msgid "Attachments:"
+#: ../../include/text.php:1072
+msgid "depressed"
msgstr ""
-#: ../../include/bb2diaspora.php:487 ../../include/event.php:22
-#: ../../include/text.php:1466
-msgid "l F d, Y \\@ g:i A"
+#: ../../include/text.php:1073
+msgid "motivated"
msgstr ""
-#: ../../include/bb2diaspora.php:489
-msgid "$Projectname event notification:"
+#: ../../include/text.php:1074
+msgid "relaxed"
msgstr ""
-#: ../../include/bb2diaspora.php:493 ../../include/event.php:30
-#: ../../include/text.php:1470
-msgid "Starts:"
+#: ../../include/text.php:1075
+msgid "surprised"
msgstr ""
-#: ../../include/bb2diaspora.php:501 ../../include/event.php:40
-#: ../../include/text.php:1474
-msgid "Finishes:"
+#: ../../include/text.php:1257 ../../include/js_strings.php:70
+msgid "Monday"
msgstr ""
-#: ../../include/event.php:779
-msgid "This event has been added to your calendar."
+#: ../../include/text.php:1257 ../../include/js_strings.php:71
+msgid "Tuesday"
msgstr ""
-#: ../../include/event.php:978
-msgid "Not specified"
+#: ../../include/text.php:1257 ../../include/js_strings.php:72
+msgid "Wednesday"
msgstr ""
-#: ../../include/event.php:979
-msgid "Needs Action"
+#: ../../include/text.php:1257 ../../include/js_strings.php:73
+msgid "Thursday"
msgstr ""
-#: ../../include/event.php:980
-msgid "Completed"
+#: ../../include/text.php:1257 ../../include/js_strings.php:74
+msgid "Friday"
msgstr ""
-#: ../../include/event.php:981
-msgid "In Process"
+#: ../../include/text.php:1257 ../../include/js_strings.php:75
+msgid "Saturday"
msgstr ""
-#: ../../include/event.php:982
-msgid "Cancelled"
+#: ../../include/text.php:1257 ../../include/js_strings.php:69
+msgid "Sunday"
msgstr ""
-#: ../../include/widgets.php:46 ../../include/widgets.php:429
-#: ../../include/contact_widgets.php:97 ../../include/taxonomy.php:188
-#: ../../include/taxonomy.php:270
-msgid "Categories"
+#: ../../include/text.php:1261 ../../include/js_strings.php:45
+msgid "January"
+msgstr ""
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:46
+msgid "February"
+msgstr ""
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:47
+msgid "March"
+msgstr ""
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:48
+msgid "April"
+msgstr ""
+
+#: ../../include/text.php:1261
+msgid "May"
+msgstr ""
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:50
+msgid "June"
+msgstr ""
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:51
+msgid "July"
+msgstr ""
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:52
+msgid "August"
+msgstr ""
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:53
+msgid "September"
+msgstr ""
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:54
+msgid "October"
+msgstr ""
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:55
+msgid "November"
+msgstr ""
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:56
+msgid "December"
+msgstr ""
+
+#: ../../include/text.php:1338 ../../include/text.php:1342
+msgid "Unknown Attachment"
+msgstr ""
+
+#: ../../include/text.php:1344
+msgid "unknown"
+msgstr ""
+
+#: ../../include/text.php:1380
+msgid "remove category"
+msgstr ""
+
+#: ../../include/text.php:1457
+msgid "remove from file"
+msgstr ""
+
+#: ../../include/text.php:1753 ../../include/text.php:1824
+msgid "default"
+msgstr ""
+
+#: ../../include/text.php:1761
+msgid "Page layout"
+msgstr ""
+
+#: ../../include/text.php:1761
+msgid "You can create your own with the layouts tool"
+msgstr ""
+
+#: ../../include/text.php:1803
+msgid "Page content type"
+msgstr ""
+
+#: ../../include/text.php:1836
+msgid "Select an alternate language"
+msgstr ""
+
+#: ../../include/text.php:1953
+msgid "activity"
+msgstr ""
+
+#: ../../include/text.php:2262
+msgid "Design Tools"
+msgstr ""
+
+#: ../../include/text.php:2268
+msgid "Pages"
msgstr ""
#: ../../include/widgets.php:103
@@ -6978,13 +7246,13 @@ msgstr ""
msgid "add"
msgstr ""
-#: ../../include/widgets.php:310 ../../include/contact_widgets.php:57
-#: ../../include/features.php:97
+#: ../../include/widgets.php:310 ../../include/contact_widgets.php:53
+#: ../../include/features.php:98
msgid "Saved Folders"
msgstr ""
#: ../../include/widgets.php:313 ../../include/widgets.php:432
-#: ../../include/contact_widgets.php:60 ../../include/contact_widgets.php:100
+#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94
msgid "Everything"
msgstr ""
@@ -7100,143 +7368,193 @@ msgstr ""
msgid "Import Calendar"
msgstr ""
-#: ../../include/widgets.php:843 ../../include/conversation.php:1673
-#: ../../include/conversation.php:1676
+#: ../../include/widgets.php:842 ../../include/conversation.php:1662
+#: ../../include/conversation.php:1665
msgid "Chatrooms"
msgstr ""
-#: ../../include/widgets.php:847
+#: ../../include/widgets.php:846
msgid "Overview"
msgstr ""
-#: ../../include/widgets.php:854
+#: ../../include/widgets.php:853
msgid "Chat Members"
msgstr ""
-#: ../../include/widgets.php:877
+#: ../../include/widgets.php:876
msgid "Bookmarked Chatrooms"
msgstr ""
-#: ../../include/widgets.php:900
+#: ../../include/widgets.php:899
msgid "Suggested Chatrooms"
msgstr ""
-#: ../../include/widgets.php:1045 ../../include/widgets.php:1157
+#: ../../include/widgets.php:1044 ../../include/widgets.php:1156
msgid "photo/image"
msgstr ""
-#: ../../include/widgets.php:1100
+#: ../../include/widgets.php:1099
msgid "Click to show more"
msgstr ""
-#: ../../include/widgets.php:1251
+#: ../../include/widgets.php:1250
msgid "Rating Tools"
msgstr ""
-#: ../../include/widgets.php:1255 ../../include/widgets.php:1257
+#: ../../include/widgets.php:1254 ../../include/widgets.php:1256
msgid "Rate Me"
msgstr ""
-#: ../../include/widgets.php:1260
+#: ../../include/widgets.php:1259
msgid "View Ratings"
msgstr ""
-#: ../../include/widgets.php:1317
+#: ../../include/widgets.php:1316
msgid "Forums"
msgstr ""
-#: ../../include/widgets.php:1346
+#: ../../include/widgets.php:1345
msgid "Tasks"
msgstr ""
-#: ../../include/widgets.php:1355
+#: ../../include/widgets.php:1354
msgid "Documentation"
msgstr ""
-#: ../../include/widgets.php:1357
+#: ../../include/widgets.php:1356
msgid "Project/Site Information"
msgstr ""
-#: ../../include/widgets.php:1358
+#: ../../include/widgets.php:1357
msgid "For Members"
msgstr ""
-#: ../../include/widgets.php:1359
+#: ../../include/widgets.php:1358
msgid "For Administrators"
msgstr ""
-#: ../../include/widgets.php:1360
+#: ../../include/widgets.php:1359
msgid "For Developers"
msgstr ""
-#: ../../include/widgets.php:1384
-msgid "Accounts"
-msgstr ""
-
-#: ../../include/widgets.php:1384 ../../include/widgets.php:1422
+#: ../../include/widgets.php:1383 ../../include/widgets.php:1421
msgid "Member registrations waiting for confirmation"
msgstr ""
-#: ../../include/widgets.php:1390
+#: ../../include/widgets.php:1389
msgid "Inspect queue"
msgstr ""
-#: ../../include/widgets.php:1392
+#: ../../include/widgets.php:1391
msgid "DB updates"
msgstr ""
-#: ../../include/widgets.php:1417 ../../include/nav.php:216
+#: ../../include/widgets.php:1416 ../../include/nav.php:216
msgid "Admin"
msgstr ""
-#: ../../include/widgets.php:1418
+#: ../../include/widgets.php:1417
msgid "Plugin Features"
msgstr ""
+#: ../../include/follow.php:27
+msgid "Channel is blocked on this site."
+msgstr ""
+
+#: ../../include/follow.php:32
+msgid "Channel location missing."
+msgstr ""
+
+#: ../../include/follow.php:81
+msgid "Response from remote channel was incomplete."
+msgstr ""
+
+#: ../../include/follow.php:98
+msgid "Channel was deleted and no longer exists."
+msgstr ""
+
+#: ../../include/follow.php:154 ../../include/follow.php:190
+msgid "Protocol disabled."
+msgstr ""
+
+#: ../../include/follow.php:178
+msgid "Channel discovery failed."
+msgstr ""
+
+#: ../../include/follow.php:216
+msgid "Cannot connect to yourself."
+msgstr ""
+
#: ../../include/bookmarks.php:35
#, php-format
msgid "%1$s's bookmarks"
msgstr ""
-#: ../../include/chat.php:23
-msgid "Missing room name"
+#: ../../include/api.php:1336
+msgid "Public Timeline"
msgstr ""
-#: ../../include/chat.php:32
-msgid "Duplicate room name"
+#: ../../include/bbcode.php:123 ../../include/bbcode.php:844
+#: ../../include/bbcode.php:847 ../../include/bbcode.php:852
+#: ../../include/bbcode.php:855 ../../include/bbcode.php:858
+#: ../../include/bbcode.php:861 ../../include/bbcode.php:866
+#: ../../include/bbcode.php:869 ../../include/bbcode.php:874
+#: ../../include/bbcode.php:877 ../../include/bbcode.php:880
+#: ../../include/bbcode.php:883
+msgid "Image/photo"
msgstr ""
-#: ../../include/chat.php:82 ../../include/chat.php:90
-msgid "Invalid room specifier."
+#: ../../include/bbcode.php:162 ../../include/bbcode.php:894
+msgid "Encrypted content"
msgstr ""
-#: ../../include/chat.php:122
-msgid "Room not found."
+#: ../../include/bbcode.php:178
+#, php-format
+msgid "Install %s element: "
msgstr ""
-#: ../../include/chat.php:143
-msgid "Room is full"
+#: ../../include/bbcode.php:182
+#, php-format
+msgid ""
+"This post contains an installable %s element, however you lack permissions "
+"to install it on this site."
msgstr ""
-#: ../../include/Contact.php:118
-msgid "New window"
+#: ../../include/bbcode.php:254
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
msgstr ""
-#: ../../include/Contact.php:119
-msgid "Open the selected location in a different window or browser tab"
+#: ../../include/bbcode.php:331 ../../include/bbcode.php:339
+msgid "Click to open/close"
msgstr ""
-#: ../../include/Contact.php:237
-#, php-format
-msgid "User '%s' deleted"
+#: ../../include/bbcode.php:339
+msgid "spoiler"
msgstr ""
-#: ../../include/auth.php:105
-msgid "Logged out."
+#: ../../include/bbcode.php:585
+msgid "Different viewers will see this text differently"
msgstr ""
-#: ../../include/auth.php:212
-msgid "Failed authentication"
+#: ../../include/bbcode.php:832
+msgid "$1 wrote:"
+msgstr ""
+
+#: ../../include/dir_fns.php:141
+msgid "Directory Options"
+msgstr ""
+
+#: ../../include/dir_fns.php:143
+msgid "Safe Mode"
+msgstr ""
+
+#: ../../include/dir_fns.php:144
+msgid "Public Forums Only"
+msgstr ""
+
+#: ../../include/dir_fns.php:145
+msgid "This Website Only"
msgstr ""
#: ../../include/security.php:383
@@ -7245,981 +7563,1100 @@ msgid ""
"form has been opened for too long (>3 hours) before submitting it."
msgstr ""
-#: ../../include/import.php:23
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
+#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1702
+msgid "Logout"
msgstr ""
-#: ../../include/import.php:70
-msgid "Channel clone failed. Import failed."
+#: ../../include/nav.php:82 ../../include/nav.php:113
+msgid "End this session"
msgstr ""
-#: ../../include/items.php:1138 ../../include/items.php:1183
-msgid "(Unknown)"
+#: ../../include/nav.php:85 ../../include/nav.php:144
+msgid "Home"
msgstr ""
-#: ../../include/items.php:1382
-msgid "Visible to anybody on the internet."
+#: ../../include/nav.php:85
+msgid "Your posts and conversations"
msgstr ""
-#: ../../include/items.php:1384
-msgid "Visible to you only."
+#: ../../include/nav.php:86
+msgid "Your profile page"
msgstr ""
-#: ../../include/items.php:1386
-msgid "Visible to anybody in this network."
+#: ../../include/nav.php:88
+msgid "Manage/Edit profiles"
msgstr ""
-#: ../../include/items.php:1388
-msgid "Visible to anybody authenticated."
+#: ../../include/nav.php:90 ../../include/channel.php:941
+msgid "Edit Profile"
msgstr ""
-#: ../../include/items.php:1390
-#, php-format
-msgid "Visible to anybody on %s."
+#: ../../include/nav.php:90
+msgid "Edit your profile"
msgstr ""
-#: ../../include/items.php:1392
-msgid "Visible to all connections."
+#: ../../include/nav.php:92
+msgid "Your photos"
msgstr ""
-#: ../../include/items.php:1394
-msgid "Visible to approved connections."
+#: ../../include/nav.php:93
+msgid "Your files"
msgstr ""
-#: ../../include/items.php:1396
-msgid "Visible to specific connections."
+#: ../../include/nav.php:96
+msgid "Your chatrooms"
msgstr ""
-#: ../../include/items.php:5176
-msgid "Privacy group is empty."
+#: ../../include/nav.php:102 ../../include/conversation.php:1675
+msgid "Bookmarks"
+msgstr ""
+
+#: ../../include/nav.php:102
+msgid "Your bookmarks"
+msgstr ""
+
+#: ../../include/nav.php:106
+msgid "Your webpages"
msgstr ""
-#: ../../include/items.php:5183
+#: ../../include/nav.php:110
+msgid "Sign in"
+msgstr ""
+
+#: ../../include/nav.php:127
#, php-format
-msgid "Privacy group: %s"
+msgid "%s - click to logout"
msgstr ""
-#: ../../include/items.php:5195
-msgid "Connection not found."
+#: ../../include/nav.php:130
+msgid "Remote authentication"
msgstr ""
-#: ../../include/items.php:5628
-msgid "profile photo"
+#: ../../include/nav.php:130
+msgid "Click to authenticate to your home hub"
msgstr ""
-#: ../../include/contact_selectors.php:56
-msgid "Frequently"
+#: ../../include/nav.php:144
+msgid "Home Page"
msgstr ""
-#: ../../include/contact_selectors.php:57
-msgid "Hourly"
+#: ../../include/nav.php:147
+msgid "Create an account"
msgstr ""
-#: ../../include/contact_selectors.php:58
-msgid "Twice daily"
+#: ../../include/nav.php:159
+msgid "Help and documentation"
msgstr ""
-#: ../../include/contact_selectors.php:59
-msgid "Daily"
+#: ../../include/nav.php:163
+msgid "Applications, utilities, links, games"
msgstr ""
-#: ../../include/contact_selectors.php:60
-msgid "Weekly"
+#: ../../include/nav.php:165
+msgid "Search site @name, #tag, ?docs, content"
msgstr ""
-#: ../../include/contact_selectors.php:61
-msgid "Monthly"
+#: ../../include/nav.php:167
+msgid "Channel Directory"
msgstr ""
-#: ../../include/contact_selectors.php:76
-#: ../../include/contact_selectors.php:77
-msgid "Friendica"
+#: ../../include/nav.php:179
+msgid "Your grid"
msgstr ""
-#: ../../include/contact_selectors.php:78
-msgid "OStatus"
+#: ../../include/nav.php:180
+msgid "Mark all grid notifications seen"
msgstr ""
-#: ../../include/contact_selectors.php:79
-msgid "GNU-Social"
+#: ../../include/nav.php:182
+msgid "Channel home"
msgstr ""
-#: ../../include/contact_selectors.php:80
-msgid "RSS/Atom"
+#: ../../include/nav.php:183
+msgid "Mark all channel notifications seen"
msgstr ""
-#: ../../include/contact_selectors.php:82
-msgid "Diaspora"
+#: ../../include/nav.php:189
+msgid "Notices"
msgstr ""
-#: ../../include/contact_selectors.php:83
-msgid "Facebook"
+#: ../../include/nav.php:189
+msgid "Notifications"
msgstr ""
-#: ../../include/contact_selectors.php:84
-msgid "Zot"
+#: ../../include/nav.php:190
+msgid "See all notifications"
msgstr ""
-#: ../../include/contact_selectors.php:85
-msgid "LinkedIn"
+#: ../../include/nav.php:193
+msgid "Private mail"
msgstr ""
-#: ../../include/contact_selectors.php:86
-msgid "XMPP/IM"
+#: ../../include/nav.php:194
+msgid "See all private messages"
msgstr ""
-#: ../../include/contact_selectors.php:87
-msgid "MySpace"
+#: ../../include/nav.php:195
+msgid "Mark all private messages seen"
+msgstr ""
+
+#: ../../include/nav.php:201
+msgid "Event Calendar"
+msgstr ""
+
+#: ../../include/nav.php:202
+msgid "See all events"
+msgstr ""
+
+#: ../../include/nav.php:203
+msgid "Mark all events seen"
+msgstr ""
+
+#: ../../include/nav.php:206
+msgid "Manage Your Channels"
+msgstr ""
+
+#: ../../include/nav.php:208
+msgid "Account/Channel Settings"
msgstr ""
-#: ../../include/contact_widgets.php:14
+#: ../../include/nav.php:216
+msgid "Site Setup and Configuration"
+msgstr ""
+
+#: ../../include/nav.php:247 ../../include/conversation.php:851
+msgid "Loading..."
+msgstr ""
+
+#: ../../include/nav.php:252
+msgid "@name, #tag, ?doc, content"
+msgstr ""
+
+#: ../../include/nav.php:253
+msgid "Please wait..."
+msgstr ""
+
+#: ../../include/connections.php:95
+msgid "New window"
+msgstr ""
+
+#: ../../include/connections.php:96
+msgid "Open the selected location in a different window or browser tab"
+msgstr ""
+
+#: ../../include/connections.php:214
+#, php-format
+msgid "User '%s' deleted"
+msgstr ""
+
+#: ../../include/contact_widgets.php:11
#, php-format
msgid "%d invitation available"
msgid_plural "%d invitations available"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/contact_widgets.php:22
+#: ../../include/contact_widgets.php:19
msgid "Find Channels"
msgstr ""
-#: ../../include/contact_widgets.php:23
+#: ../../include/contact_widgets.php:20
msgid "Enter name or interest"
msgstr ""
-#: ../../include/contact_widgets.php:24
+#: ../../include/contact_widgets.php:21
msgid "Connect/Follow"
msgstr ""
-#: ../../include/contact_widgets.php:25
+#: ../../include/contact_widgets.php:22
msgid "Examples: Robert Morgenstein, Fishing"
msgstr ""
-#: ../../include/contact_widgets.php:29
+#: ../../include/contact_widgets.php:26
msgid "Random Profile"
msgstr ""
-#: ../../include/contact_widgets.php:30
+#: ../../include/contact_widgets.php:27
msgid "Invite Friends"
msgstr ""
-#: ../../include/contact_widgets.php:32
+#: ../../include/contact_widgets.php:29
msgid "Advanced example: name=fred and country=iceland"
msgstr ""
-#: ../../include/contact_widgets.php:130
+#: ../../include/contact_widgets.php:122
#, php-format
msgid "%d connection in common"
msgid_plural "%d connections in common"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/contact_widgets.php:135
+#: ../../include/contact_widgets.php:127
msgid "show more"
msgstr ""
-#: ../../include/attach.php:247 ../../include/attach.php:333
-msgid "Item was not found."
+#: ../../include/conversation.php:204
+#, php-format
+msgid "%1$s is now connected with %2$s"
msgstr ""
-#: ../../include/attach.php:497
-msgid "No source file."
+#: ../../include/conversation.php:239
+#, php-format
+msgid "%1$s poked %2$s"
msgstr ""
-#: ../../include/attach.php:519
-msgid "Cannot locate file to replace"
+#: ../../include/conversation.php:691
+#, php-format
+msgid "View %s's profile @ %s"
msgstr ""
-#: ../../include/attach.php:537
-msgid "Cannot locate file to revise/update"
+#: ../../include/conversation.php:710
+msgid "Categories:"
msgstr ""
-#: ../../include/attach.php:672
+#: ../../include/conversation.php:711
+msgid "Filed under:"
+msgstr ""
+
+#: ../../include/conversation.php:738
+msgid "View in context"
+msgstr ""
+
+#: ../../include/conversation.php:847
+msgid "remove"
+msgstr ""
+
+#: ../../include/conversation.php:852
+msgid "Delete Selected Items"
+msgstr ""
+
+#: ../../include/conversation.php:948
+msgid "View Source"
+msgstr ""
+
+#: ../../include/conversation.php:949
+msgid "Follow Thread"
+msgstr ""
+
+#: ../../include/conversation.php:950
+msgid "Unfollow Thread"
+msgstr ""
+
+#: ../../include/conversation.php:955
+msgid "Activity/Posts"
+msgstr ""
+
+#: ../../include/conversation.php:957
+msgid "Edit Connection"
+msgstr ""
+
+#: ../../include/conversation.php:958
+msgid "Message"
+msgstr ""
+
+#: ../../include/conversation.php:1075
#, php-format
-msgid "File exceeds size limit of %d"
+msgid "%s likes this."
msgstr ""
-#: ../../include/attach.php:686
+#: ../../include/conversation.php:1075
#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+msgid "%s doesn't like this."
msgstr ""
-#: ../../include/attach.php:842
-msgid "File upload failed. Possible system limit or action terminated."
+#: ../../include/conversation.php:1079
+#, php-format
+msgid "<span %1$s>%2$d people</span> like this."
+msgid_plural "<span %1$s>%2$d people</span> like this."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../include/conversation.php:1081
+#, php-format
+msgid "<span %1$s>%2$d people</span> don't like this."
+msgid_plural "<span %1$s>%2$d people</span> don't like this."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../include/conversation.php:1087
+msgid "and"
msgstr ""
-#: ../../include/attach.php:855
-msgid "Stored file could not be verified. Upload failed."
+#: ../../include/conversation.php:1090
+#, php-format
+msgid ", and %d other people"
+msgid_plural ", and %d other people"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../include/conversation.php:1091
+#, php-format
+msgid "%s like this."
msgstr ""
-#: ../../include/attach.php:909 ../../include/attach.php:925
-msgid "Path not available."
+#: ../../include/conversation.php:1091
+#, php-format
+msgid "%s don't like this."
msgstr ""
-#: ../../include/attach.php:971 ../../include/attach.php:1123
-msgid "Empty pathname"
+#: ../../include/conversation.php:1130
+msgid "Set your location"
msgstr ""
-#: ../../include/attach.php:997
-msgid "duplicate filename or path"
+#: ../../include/conversation.php:1131
+msgid "Clear browser location"
msgstr ""
-#: ../../include/attach.php:1019
-msgid "Path not found."
+#: ../../include/conversation.php:1177
+msgid "Tag term:"
msgstr ""
-#: ../../include/attach.php:1077
-msgid "mkdir failed."
+#: ../../include/conversation.php:1178
+msgid "Where are you right now?"
msgstr ""
-#: ../../include/attach.php:1081
-msgid "database storage failed."
+#: ../../include/conversation.php:1210
+msgid "Page link name"
msgstr ""
-#: ../../include/attach.php:1129
-msgid "Empty path"
+#: ../../include/conversation.php:1213
+msgid "Post as"
msgstr ""
-#: ../../include/datetime.php:136
-msgid "Birthday"
+#: ../../include/conversation.php:1223
+msgid "Toggle voting"
msgstr ""
-#: ../../include/datetime.php:138
-msgid "Age: "
+#: ../../include/conversation.php:1231
+msgid "Categories (optional, comma-separated list)"
msgstr ""
-#: ../../include/datetime.php:140
-msgid "YYYY-MM-DD or MM-DD"
+#: ../../include/conversation.php:1254
+msgid "Set publish date"
msgstr ""
-#: ../../include/datetime.php:273 ../../boot.php:2448
-msgid "never"
+#: ../../include/conversation.php:1258
+msgid "OK"
msgstr ""
-#: ../../include/datetime.php:279
-msgid "less than a second ago"
+#: ../../include/conversation.php:1503
+msgid "Discover"
msgstr ""
-#: ../../include/datetime.php:297
-#, php-format
-msgctxt "e.g. 22 hours ago, 1 minute ago"
-msgid "%1$d %2$s ago"
+#: ../../include/conversation.php:1506
+msgid "Imported public streams"
msgstr ""
-#: ../../include/datetime.php:308
-msgctxt "relative_date"
-msgid "year"
-msgid_plural "years"
-msgstr[0] ""
-msgstr[1] ""
+#: ../../include/conversation.php:1511
+msgid "Commented Order"
+msgstr ""
-#: ../../include/datetime.php:311
-msgctxt "relative_date"
-msgid "month"
-msgid_plural "months"
-msgstr[0] ""
-msgstr[1] ""
+#: ../../include/conversation.php:1514
+msgid "Sort by Comment Date"
+msgstr ""
-#: ../../include/datetime.php:314
-msgctxt "relative_date"
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] ""
-msgstr[1] ""
+#: ../../include/conversation.php:1518
+msgid "Posted Order"
+msgstr ""
-#: ../../include/datetime.php:317
-msgctxt "relative_date"
-msgid "day"
-msgid_plural "days"
-msgstr[0] ""
-msgstr[1] ""
+#: ../../include/conversation.php:1521
+msgid "Sort by Post Date"
+msgstr ""
-#: ../../include/datetime.php:320
-msgctxt "relative_date"
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] ""
-msgstr[1] ""
+#: ../../include/conversation.php:1529
+msgid "Posts that mention or involve you"
+msgstr ""
-#: ../../include/datetime.php:323
-msgctxt "relative_date"
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] ""
-msgstr[1] ""
+#: ../../include/conversation.php:1538
+msgid "Activity Stream - by date"
+msgstr ""
-#: ../../include/datetime.php:326
-msgctxt "relative_date"
-msgid "second"
-msgid_plural "seconds"
-msgstr[0] ""
-msgstr[1] ""
+#: ../../include/conversation.php:1544
+msgid "Starred"
+msgstr ""
-#: ../../include/datetime.php:563
-#, php-format
-msgid "%1$s's birthday"
+#: ../../include/conversation.php:1547
+msgid "Favourite Posts"
msgstr ""
-#: ../../include/datetime.php:564
-#, php-format
-msgid "Happy Birthday %1$s"
+#: ../../include/conversation.php:1554
+msgid "Spam"
msgstr ""
-#: ../../include/dir_fns.php:139
-msgid "Directory Options"
+#: ../../include/conversation.php:1557
+msgid "Posts flagged as SPAM"
msgstr ""
-#: ../../include/dir_fns.php:141
-msgid "Safe Mode"
+#: ../../include/conversation.php:1614
+msgid "Status Messages and Posts"
msgstr ""
-#: ../../include/dir_fns.php:142
-msgid "Public Forums Only"
+#: ../../include/conversation.php:1623
+msgid "About"
msgstr ""
-#: ../../include/dir_fns.php:143
-msgid "This Website Only"
+#: ../../include/conversation.php:1626
+msgid "Profile Details"
msgstr ""
-#: ../../include/enotify.php:57 ../../include/network.php:1827
-msgid "$Projectname Notification"
+#: ../../include/conversation.php:1635 ../../include/photos.php:502
+msgid "Photo Albums"
msgstr ""
-#: ../../include/enotify.php:58 ../../include/network.php:1828
-msgid "$projectname"
+#: ../../include/conversation.php:1642
+msgid "Files and Storage"
msgstr ""
-#: ../../include/enotify.php:60 ../../include/network.php:1830
-msgid "Thank You,"
+#: ../../include/conversation.php:1678
+msgid "Saved Bookmarks"
msgstr ""
-#: ../../include/enotify.php:62 ../../include/network.php:1832
-#, php-format
-msgid "%s Administrator"
+#: ../../include/conversation.php:1688
+msgid "Manage Webpages"
msgstr ""
-#: ../../include/enotify.php:96
-#, php-format
-msgid "%s <!item_type!>"
+#: ../../include/conversation.php:1747
+msgctxt "noun"
+msgid "Attending"
+msgid_plural "Attending"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../include/conversation.php:1750
+msgctxt "noun"
+msgid "Not Attending"
+msgid_plural "Not Attending"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../include/conversation.php:1753
+msgctxt "noun"
+msgid "Undecided"
+msgid_plural "Undecided"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../include/conversation.php:1756
+msgctxt "noun"
+msgid "Agree"
+msgid_plural "Agrees"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../include/conversation.php:1759
+msgctxt "noun"
+msgid "Disagree"
+msgid_plural "Disagrees"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../include/conversation.php:1762
+msgctxt "noun"
+msgid "Abstain"
+msgid_plural "Abstains"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../include/selectors.php:30
+msgid "Frequently"
msgstr ""
-#: ../../include/enotify.php:100
-#, php-format
-msgid "[Hubzilla:Notify] New mail received at %s"
+#: ../../include/selectors.php:31
+msgid "Hourly"
msgstr ""
-#: ../../include/enotify.php:102
-#, php-format
-msgid "%1$s, %2$s sent you a new private message at %3$s."
+#: ../../include/selectors.php:32
+msgid "Twice daily"
msgstr ""
-#: ../../include/enotify.php:103
-#, php-format
-msgid "%1$s sent you %2$s."
+#: ../../include/selectors.php:33
+msgid "Daily"
msgstr ""
-#: ../../include/enotify.php:103
-msgid "a private message"
+#: ../../include/selectors.php:34
+msgid "Weekly"
msgstr ""
-#: ../../include/enotify.php:104
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
+#: ../../include/selectors.php:35
+msgid "Monthly"
msgstr ""
-#: ../../include/enotify.php:160
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
+#: ../../include/selectors.php:49
+msgid "Currently Male"
msgstr ""
-#: ../../include/enotify.php:168
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
+#: ../../include/selectors.php:49
+msgid "Currently Female"
msgstr ""
-#: ../../include/enotify.php:177
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
+#: ../../include/selectors.php:49
+msgid "Mostly Male"
msgstr ""
-#: ../../include/enotify.php:188
-#, php-format
-msgid "[Hubzilla:Notify] Comment to conversation #%1$d by %2$s"
+#: ../../include/selectors.php:49
+msgid "Mostly Female"
msgstr ""
-#: ../../include/enotify.php:189
-#, php-format
-msgid "%1$s, %2$s commented on an item/conversation you have been following."
+#: ../../include/selectors.php:49
+msgid "Transgender"
msgstr ""
-#: ../../include/enotify.php:192 ../../include/enotify.php:207
-#: ../../include/enotify.php:233 ../../include/enotify.php:251
-#: ../../include/enotify.php:265
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
+#: ../../include/selectors.php:49
+msgid "Intersex"
msgstr ""
-#: ../../include/enotify.php:198
-#, php-format
-msgid "[Hubzilla:Notify] %s posted to your profile wall"
+#: ../../include/selectors.php:49
+msgid "Transsexual"
msgstr ""
-#: ../../include/enotify.php:200
-#, php-format
-msgid "%1$s, %2$s posted to your profile wall at %3$s"
+#: ../../include/selectors.php:49
+msgid "Hermaphrodite"
msgstr ""
-#: ../../include/enotify.php:202
-#, php-format
-msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
+#: ../../include/selectors.php:49
+msgid "Neuter"
msgstr ""
-#: ../../include/enotify.php:226
-#, php-format
-msgid "[Hubzilla:Notify] %s tagged you"
+#: ../../include/selectors.php:49
+msgid "Non-specific"
msgstr ""
-#: ../../include/enotify.php:227
-#, php-format
-msgid "%1$s, %2$s tagged you at %3$s"
+#: ../../include/selectors.php:49 ../../include/selectors.php:66
+#: ../../include/selectors.php:104 ../../include/selectors.php:140
+#: ../../include/permissions.php:881
+msgid "Other"
msgstr ""
-#: ../../include/enotify.php:228
-#, php-format
-msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
+#: ../../include/selectors.php:49
+msgid "Undecided"
msgstr ""
-#: ../../include/enotify.php:240
-#, php-format
-msgid "[Hubzilla:Notify] %1$s poked you"
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Males"
msgstr ""
-#: ../../include/enotify.php:241
-#, php-format
-msgid "%1$s, %2$s poked you at %3$s"
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Females"
msgstr ""
-#: ../../include/enotify.php:242
-#, php-format
-msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+#: ../../include/selectors.php:85
+msgid "Gay"
msgstr ""
-#: ../../include/enotify.php:258
-#, php-format
-msgid "[Hubzilla:Notify] %s tagged your post"
+#: ../../include/selectors.php:85
+msgid "Lesbian"
msgstr ""
-#: ../../include/enotify.php:259
-#, php-format
-msgid "%1$s, %2$s tagged your post at %3$s"
+#: ../../include/selectors.php:85
+msgid "No Preference"
msgstr ""
-#: ../../include/enotify.php:260
-#, php-format
-msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+#: ../../include/selectors.php:85
+msgid "Bisexual"
msgstr ""
-#: ../../include/enotify.php:272
-msgid "[Hubzilla:Notify] Introduction received"
+#: ../../include/selectors.php:85
+msgid "Autosexual"
msgstr ""
-#: ../../include/enotify.php:273
-#, php-format
-msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
+#: ../../include/selectors.php:85
+msgid "Abstinent"
msgstr ""
-#: ../../include/enotify.php:274
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
+#: ../../include/selectors.php:85
+msgid "Virgin"
msgstr ""
-#: ../../include/enotify.php:278 ../../include/enotify.php:297
-#, php-format
-msgid "You may visit their profile at %s"
+#: ../../include/selectors.php:85
+msgid "Deviant"
msgstr ""
-#: ../../include/enotify.php:280
-#, php-format
-msgid "Please visit %s to approve or reject the connection request."
+#: ../../include/selectors.php:85
+msgid "Fetish"
msgstr ""
-#: ../../include/enotify.php:287
-msgid "[Hubzilla:Notify] Friend suggestion received"
+#: ../../include/selectors.php:85
+msgid "Oodles"
msgstr ""
-#: ../../include/enotify.php:288
-#, php-format
-msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
+#: ../../include/selectors.php:85
+msgid "Nonsexual"
msgstr ""
-#: ../../include/enotify.php:289
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from %4$s."
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Single"
msgstr ""
-#: ../../include/enotify.php:295
-msgid "Name:"
+#: ../../include/selectors.php:123
+msgid "Lonely"
msgstr ""
-#: ../../include/enotify.php:296
-msgid "Photo:"
+#: ../../include/selectors.php:123
+msgid "Available"
msgstr ""
-#: ../../include/enotify.php:299
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
+#: ../../include/selectors.php:123
+msgid "Unavailable"
msgstr ""
-#: ../../include/enotify.php:514
-msgid "[Hubzilla:Notify]"
+#: ../../include/selectors.php:123
+msgid "Has crush"
msgstr ""
-#: ../../include/ItemObject.php:89 ../../include/conversation.php:664
-msgid "Private Message"
+#: ../../include/selectors.php:123
+msgid "Infatuated"
msgstr ""
-#: ../../include/ItemObject.php:126 ../../include/conversation.php:656
-msgid "Select"
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Dating"
msgstr ""
-#: ../../include/ItemObject.php:130
-msgid "Save to Folder"
+#: ../../include/selectors.php:123
+msgid "Unfaithful"
msgstr ""
-#: ../../include/ItemObject.php:151
-msgid "I will attend"
+#: ../../include/selectors.php:123
+msgid "Sex Addict"
msgstr ""
-#: ../../include/ItemObject.php:151
-msgid "I will not attend"
+#: ../../include/selectors.php:123
+msgid "Friends/Benefits"
msgstr ""
-#: ../../include/ItemObject.php:151
-msgid "I might attend"
+#: ../../include/selectors.php:123
+msgid "Casual"
msgstr ""
-#: ../../include/ItemObject.php:161
-msgid "I agree"
+#: ../../include/selectors.php:123
+msgid "Engaged"
msgstr ""
-#: ../../include/ItemObject.php:161
-msgid "I disagree"
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Married"
msgstr ""
-#: ../../include/ItemObject.php:161
-msgid "I abstain"
+#: ../../include/selectors.php:123
+msgid "Imaginarily married"
msgstr ""
-#: ../../include/ItemObject.php:212
-msgid "Add Star"
+#: ../../include/selectors.php:123
+msgid "Partners"
msgstr ""
-#: ../../include/ItemObject.php:213
-msgid "Remove Star"
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Cohabiting"
msgstr ""
-#: ../../include/ItemObject.php:214
-msgid "Toggle Star Status"
+#: ../../include/selectors.php:123
+msgid "Common law"
msgstr ""
-#: ../../include/ItemObject.php:218
-msgid "starred"
+#: ../../include/selectors.php:123
+msgid "Happy"
msgstr ""
-#: ../../include/ItemObject.php:227 ../../include/conversation.php:671
-msgid "Message signature validated"
+#: ../../include/selectors.php:123
+msgid "Not looking"
msgstr ""
-#: ../../include/ItemObject.php:228 ../../include/conversation.php:672
-msgid "Message signature incorrect"
+#: ../../include/selectors.php:123
+msgid "Swinger"
msgstr ""
-#: ../../include/ItemObject.php:236
-msgid "Add Tag"
+#: ../../include/selectors.php:123
+msgid "Betrayed"
msgstr ""
-#: ../../include/ItemObject.php:254 ../../include/taxonomy.php:316
-msgid "like"
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Separated"
msgstr ""
-#: ../../include/ItemObject.php:255 ../../include/taxonomy.php:317
-msgid "dislike"
+#: ../../include/selectors.php:123
+msgid "Unstable"
msgstr ""
-#: ../../include/ItemObject.php:259
-msgid "Share This"
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Divorced"
msgstr ""
-#: ../../include/ItemObject.php:259
-msgid "share"
+#: ../../include/selectors.php:123
+msgid "Imaginarily divorced"
msgstr ""
-#: ../../include/ItemObject.php:268
-msgid "Delivery Report"
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Widowed"
msgstr ""
-#: ../../include/ItemObject.php:286
-#, php-format
-msgid "%d comment"
-msgid_plural "%d comments"
-msgstr[0] ""
-msgstr[1] ""
+#: ../../include/selectors.php:123
+msgid "Uncertain"
+msgstr ""
-#: ../../include/ItemObject.php:315 ../../include/ItemObject.php:316
-#, php-format
-msgid "View %s's profile - %s"
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "It's complicated"
msgstr ""
-#: ../../include/ItemObject.php:319
-msgid "to"
+#: ../../include/selectors.php:123
+msgid "Don't care"
msgstr ""
-#: ../../include/ItemObject.php:320
-msgid "via"
+#: ../../include/selectors.php:123
+msgid "Ask me"
msgstr ""
-#: ../../include/ItemObject.php:321
-msgid "Wall-to-Wall"
+#: ../../include/PermissionDescription.php:31
+#: ../../include/acl_selectors.php:232
+msgid "Visible to your default audience"
msgstr ""
-#: ../../include/ItemObject.php:322
-msgid "via Wall-To-Wall:"
+#: ../../include/PermissionDescription.php:115
+#: ../../include/acl_selectors.php:268
+msgid "Only me"
msgstr ""
-#: ../../include/ItemObject.php:334 ../../include/conversation.php:719
-#, php-format
-msgid "from %s"
+#: ../../include/PermissionDescription.php:116
+msgid "Public"
msgstr ""
-#: ../../include/ItemObject.php:337 ../../include/conversation.php:722
-#, php-format
-msgid "last edited: %s"
+#: ../../include/PermissionDescription.php:117
+msgid "Anybody in the $Projectname network"
msgstr ""
-#: ../../include/ItemObject.php:338 ../../include/conversation.php:723
+#: ../../include/PermissionDescription.php:118
#, php-format
-msgid "Expires: %s"
+msgid "Any account on %s"
msgstr ""
-#: ../../include/ItemObject.php:362 ../../bookmarker/bookmarker.php:45
-msgid "Save Bookmarks"
+#: ../../include/PermissionDescription.php:119
+msgid "Any of my connections"
msgstr ""
-#: ../../include/ItemObject.php:363
-msgid "Add to Calendar"
+#: ../../include/PermissionDescription.php:120
+msgid "Only connections I specifically allow"
msgstr ""
-#: ../../include/ItemObject.php:372
-msgid "Mark all seen"
+#: ../../include/PermissionDescription.php:121
+msgid "Anybody authenticated (could include visitors from other networks)"
msgstr ""
-#: ../../include/ItemObject.php:413 ../../include/js_strings.php:7
-msgid "[+] show all"
+#: ../../include/PermissionDescription.php:122
+msgid "Any connections including those who haven't yet been approved"
msgstr ""
-#: ../../include/ItemObject.php:709
-msgid "Image"
+#: ../../include/PermissionDescription.php:161
+msgid ""
+"This is your default setting for the audience of your normal stream, and "
+"posts."
msgstr ""
-#: ../../include/ItemObject.php:710
-msgid "Insert Link"
+#: ../../include/PermissionDescription.php:162
+msgid ""
+"This is your default setting for who can view your default channel profile"
msgstr ""
-#: ../../include/ItemObject.php:711
-msgid "Video"
+#: ../../include/PermissionDescription.php:163
+msgid "This is your default setting for who can view your connections"
msgstr ""
-#: ../../include/text.php:423
-msgid "prev"
+#: ../../include/PermissionDescription.php:164
+msgid ""
+"This is your default setting for who can view your file storage and photos"
msgstr ""
-#: ../../include/text.php:425
-msgid "first"
+#: ../../include/PermissionDescription.php:165
+msgid "This is your default setting for the audience of your webpages"
msgstr ""
-#: ../../include/text.php:454
-msgid "last"
+#: ../../include/account.php:28
+msgid "Not a valid email address"
msgstr ""
-#: ../../include/text.php:457
-msgid "next"
+#: ../../include/account.php:30
+msgid "Your email domain is not among those allowed on this site"
msgstr ""
-#: ../../include/text.php:467
-msgid "older"
+#: ../../include/account.php:36
+msgid "Your email address is already registered at this site."
msgstr ""
-#: ../../include/text.php:469
-msgid "newer"
+#: ../../include/account.php:68
+msgid "An invitation is required."
msgstr ""
-#: ../../include/text.php:851
-msgid "No connections"
+#: ../../include/account.php:72
+msgid "Invitation could not be verified."
msgstr ""
-#: ../../include/text.php:876
-#, php-format
-msgid "View all %s connections"
+#: ../../include/account.php:122
+msgid "Please enter the required information."
msgstr ""
-#: ../../include/text.php:1021 ../../include/text.php:1026
-msgid "poke"
+#: ../../include/account.php:189
+msgid "Failed to store account information."
msgstr ""
-#: ../../include/text.php:1021 ../../include/text.php:1026
-#: ../../include/conversation.php:243
-msgid "poked"
+#: ../../include/account.php:249
+#, php-format
+msgid "Registration confirmation for %s"
msgstr ""
-#: ../../include/text.php:1027
-msgid "ping"
+#: ../../include/account.php:315
+#, php-format
+msgid "Registration request at %s"
msgstr ""
-#: ../../include/text.php:1027
-msgid "pinged"
+#: ../../include/account.php:317 ../../include/account.php:344
+#: ../../include/account.php:404 ../../include/network.php:1871
+msgid "Administrator"
msgstr ""
-#: ../../include/text.php:1028
-msgid "prod"
+#: ../../include/account.php:339
+msgid "your registration password"
msgstr ""
-#: ../../include/text.php:1028
-msgid "prodded"
+#: ../../include/account.php:342 ../../include/account.php:402
+#, php-format
+msgid "Registration details for %s"
msgstr ""
-#: ../../include/text.php:1029
-msgid "slap"
+#: ../../include/account.php:414
+msgid "Account approved."
msgstr ""
-#: ../../include/text.php:1029
-msgid "slapped"
+#: ../../include/account.php:454
+#, php-format
+msgid "Registration revoked for %s"
msgstr ""
-#: ../../include/text.php:1030
-msgid "finger"
+#: ../../include/account.php:506
+msgid "Account verified. Please login."
msgstr ""
-#: ../../include/text.php:1030
-msgid "fingered"
+#: ../../include/account.php:723 ../../include/account.php:725
+msgid "Click here to upgrade."
msgstr ""
-#: ../../include/text.php:1031
-msgid "rebuff"
+#: ../../include/account.php:731
+msgid "This action exceeds the limits set by your subscription plan."
msgstr ""
-#: ../../include/text.php:1031
-msgid "rebuffed"
+#: ../../include/account.php:736
+msgid "This action is not available under your subscription plan."
msgstr ""
-#: ../../include/text.php:1043
-msgid "happy"
+#: ../../include/attach.php:247 ../../include/attach.php:333
+msgid "Item was not found."
msgstr ""
-#: ../../include/text.php:1044
-msgid "sad"
+#: ../../include/attach.php:497
+msgid "No source file."
msgstr ""
-#: ../../include/text.php:1045
-msgid "mellow"
+#: ../../include/attach.php:519
+msgid "Cannot locate file to replace"
msgstr ""
-#: ../../include/text.php:1046
-msgid "tired"
+#: ../../include/attach.php:537
+msgid "Cannot locate file to revise/update"
msgstr ""
-#: ../../include/text.php:1047
-msgid "perky"
+#: ../../include/attach.php:672
+#, php-format
+msgid "File exceeds size limit of %d"
msgstr ""
-#: ../../include/text.php:1048
-msgid "angry"
+#: ../../include/attach.php:686
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
msgstr ""
-#: ../../include/text.php:1049
-msgid "stupefied"
+#: ../../include/attach.php:842
+msgid "File upload failed. Possible system limit or action terminated."
msgstr ""
-#: ../../include/text.php:1050
-msgid "puzzled"
+#: ../../include/attach.php:855
+msgid "Stored file could not be verified. Upload failed."
msgstr ""
-#: ../../include/text.php:1051
-msgid "interested"
+#: ../../include/attach.php:909 ../../include/attach.php:925
+msgid "Path not available."
msgstr ""
-#: ../../include/text.php:1052
-msgid "bitter"
+#: ../../include/attach.php:971 ../../include/attach.php:1123
+msgid "Empty pathname"
msgstr ""
-#: ../../include/text.php:1053
-msgid "cheerful"
+#: ../../include/attach.php:997
+msgid "duplicate filename or path"
msgstr ""
-#: ../../include/text.php:1054
-msgid "alive"
+#: ../../include/attach.php:1019
+msgid "Path not found."
msgstr ""
-#: ../../include/text.php:1055
-msgid "annoyed"
+#: ../../include/attach.php:1077
+msgid "mkdir failed."
msgstr ""
-#: ../../include/text.php:1056
-msgid "anxious"
+#: ../../include/attach.php:1081
+msgid "database storage failed."
msgstr ""
-#: ../../include/text.php:1057
-msgid "cranky"
+#: ../../include/attach.php:1129
+msgid "Empty path"
msgstr ""
-#: ../../include/text.php:1058
-msgid "disturbed"
+#: ../../include/channel.php:32
+msgid "Unable to obtain identity information from database"
msgstr ""
-#: ../../include/text.php:1059
-msgid "frustrated"
+#: ../../include/channel.php:66
+msgid "Empty name"
msgstr ""
-#: ../../include/text.php:1060
-msgid "depressed"
+#: ../../include/channel.php:69
+msgid "Name too long"
msgstr ""
-#: ../../include/text.php:1061
-msgid "motivated"
+#: ../../include/channel.php:180
+msgid "No account identifier"
msgstr ""
-#: ../../include/text.php:1062
-msgid "relaxed"
+#: ../../include/channel.php:192
+msgid "Nickname is required."
msgstr ""
-#: ../../include/text.php:1063
-msgid "surprised"
+#: ../../include/channel.php:206
+msgid "Reserved nickname. Please choose another."
msgstr ""
-#: ../../include/text.php:1235 ../../include/js_strings.php:70
-msgid "Monday"
+#: ../../include/channel.php:211
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
msgstr ""
-#: ../../include/text.php:1235 ../../include/js_strings.php:71
-msgid "Tuesday"
+#: ../../include/channel.php:287
+msgid "Unable to retrieve created identity"
msgstr ""
-#: ../../include/text.php:1235 ../../include/js_strings.php:72
-msgid "Wednesday"
+#: ../../include/channel.php:345
+msgid "Default Profile"
msgstr ""
-#: ../../include/text.php:1235 ../../include/js_strings.php:73
-msgid "Thursday"
+#: ../../include/channel.php:791
+msgid "Requested channel is not available."
msgstr ""
-#: ../../include/text.php:1235 ../../include/js_strings.php:74
-msgid "Friday"
+#: ../../include/channel.php:938
+msgid "Create New Profile"
msgstr ""
-#: ../../include/text.php:1235 ../../include/js_strings.php:75
-msgid "Saturday"
+#: ../../include/channel.php:958
+msgid "Visible to everybody"
msgstr ""
-#: ../../include/text.php:1235 ../../include/js_strings.php:69
-msgid "Sunday"
+#: ../../include/channel.php:1031 ../../include/channel.php:1142
+msgid "Gender:"
msgstr ""
-#: ../../include/text.php:1239 ../../include/js_strings.php:45
-msgid "January"
+#: ../../include/channel.php:1032 ../../include/channel.php:1186
+msgid "Status:"
msgstr ""
-#: ../../include/text.php:1239 ../../include/js_strings.php:46
-msgid "February"
+#: ../../include/channel.php:1033 ../../include/channel.php:1197
+msgid "Homepage:"
msgstr ""
-#: ../../include/text.php:1239 ../../include/js_strings.php:47
-msgid "March"
+#: ../../include/channel.php:1034
+msgid "Online Now"
msgstr ""
-#: ../../include/text.php:1239 ../../include/js_strings.php:48
-msgid "April"
+#: ../../include/channel.php:1147
+msgid "Like this channel"
msgstr ""
-#: ../../include/text.php:1239
-msgid "May"
+#: ../../include/channel.php:1171
+msgid "j F, Y"
msgstr ""
-#: ../../include/text.php:1239 ../../include/js_strings.php:50
-msgid "June"
+#: ../../include/channel.php:1172
+msgid "j F"
msgstr ""
-#: ../../include/text.php:1239 ../../include/js_strings.php:51
-msgid "July"
+#: ../../include/channel.php:1179
+msgid "Birthday:"
msgstr ""
-#: ../../include/text.php:1239 ../../include/js_strings.php:52
-msgid "August"
+#: ../../include/channel.php:1192
+#, php-format
+msgid "for %1$d %2$s"
msgstr ""
-#: ../../include/text.php:1239 ../../include/js_strings.php:53
-msgid "September"
+#: ../../include/channel.php:1195
+msgid "Sexual Preference:"
msgstr ""
-#: ../../include/text.php:1239 ../../include/js_strings.php:54
-msgid "October"
+#: ../../include/channel.php:1201
+msgid "Tags:"
msgstr ""
-#: ../../include/text.php:1239 ../../include/js_strings.php:55
-msgid "November"
+#: ../../include/channel.php:1203
+msgid "Political Views:"
msgstr ""
-#: ../../include/text.php:1239 ../../include/js_strings.php:56
-msgid "December"
+#: ../../include/channel.php:1205
+msgid "Religion:"
msgstr ""
-#: ../../include/text.php:1316 ../../include/text.php:1320
-msgid "Unknown Attachment"
+#: ../../include/channel.php:1209
+msgid "Hobbies/Interests:"
msgstr ""
-#: ../../include/text.php:1322
-msgid "unknown"
+#: ../../include/channel.php:1211
+msgid "Likes:"
msgstr ""
-#: ../../include/text.php:1358
-msgid "remove category"
+#: ../../include/channel.php:1213
+msgid "Dislikes:"
msgstr ""
-#: ../../include/text.php:1435
-msgid "remove from file"
+#: ../../include/channel.php:1215
+msgid "Contact information and Social Networks:"
msgstr ""
-#: ../../include/text.php:1764 ../../include/text.php:1836
-msgid "default"
+#: ../../include/channel.php:1217
+msgid "My other channels:"
msgstr ""
-#: ../../include/text.php:1772
-msgid "Page layout"
+#: ../../include/channel.php:1219
+msgid "Musical interests:"
msgstr ""
-#: ../../include/text.php:1772
-msgid "You can create your own with the layouts tool"
+#: ../../include/channel.php:1221
+msgid "Books, literature:"
msgstr ""
-#: ../../include/text.php:1814
-msgid "Page content type"
+#: ../../include/channel.php:1223
+msgid "Television:"
msgstr ""
-#: ../../include/text.php:1848
-msgid "Select an alternate language"
+#: ../../include/channel.php:1225
+msgid "Film/dance/culture/entertainment:"
msgstr ""
-#: ../../include/text.php:1982
-msgid "activity"
+#: ../../include/channel.php:1227
+msgid "Love/Romance:"
msgstr ""
-#: ../../include/text.php:2277
-msgid "Design Tools"
+#: ../../include/channel.php:1229
+msgid "Work/employment:"
msgstr ""
-#: ../../include/text.php:2283
-msgid "Pages"
+#: ../../include/channel.php:1231
+msgid "School/education:"
+msgstr ""
+
+#: ../../include/channel.php:1251
+msgid "Like this thing"
msgstr ""
#: ../../include/features.php:48
@@ -8470,512 +8907,200 @@ msgid "Add categories to your posts"
msgstr ""
#: ../../include/features.php:97
-msgid "Ability to file posts under folders"
+msgid "Emoji Reactions"
msgstr ""
-#: ../../include/features.php:98
-msgid "Dislike Posts"
+#: ../../include/features.php:97
+msgid "Add emoji reaction ability to posts"
msgstr ""
#: ../../include/features.php:98
-msgid "Ability to dislike posts/comments"
+msgid "Ability to file posts under folders"
msgstr ""
#: ../../include/features.php:99
-msgid "Star Posts"
+msgid "Dislike Posts"
msgstr ""
#: ../../include/features.php:99
-msgid "Ability to mark special posts with a star indicator"
+msgid "Ability to dislike posts/comments"
msgstr ""
#: ../../include/features.php:100
-msgid "Tag Cloud"
+msgid "Star Posts"
msgstr ""
#: ../../include/features.php:100
-msgid "Provide a personal tag cloud on your channel page"
-msgstr ""
-
-#: ../../include/follow.php:28
-msgid "Channel is blocked on this site."
+msgid "Ability to mark special posts with a star indicator"
msgstr ""
-#: ../../include/follow.php:33
-msgid "Channel location missing."
+#: ../../include/features.php:101
+msgid "Tag Cloud"
msgstr ""
-#: ../../include/follow.php:82
-msgid "Response from remote channel was incomplete."
+#: ../../include/features.php:101
+msgid "Provide a personal tag cloud on your channel page"
msgstr ""
-#: ../../include/follow.php:99
-msgid "Channel was deleted and no longer exists."
+#: ../../include/oembed.php:324
+msgid "Embedded content"
msgstr ""
-#: ../../include/follow.php:155 ../../include/follow.php:191
-msgid "Protocol disabled."
+#: ../../include/oembed.php:333
+msgid "Embedding disabled"
msgstr ""
-#: ../../include/follow.php:179
-msgid "Channel discovery failed."
+#: ../../include/acl_selectors.php:271
+msgid "Who can see this?"
msgstr ""
-#: ../../include/follow.php:217
-msgid "Cannot connect to yourself."
+#: ../../include/acl_selectors.php:272
+msgid "Custom selection"
msgstr ""
-#: ../../include/group.php:26
+#: ../../include/acl_selectors.php:273
msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr ""
-
-#: ../../include/group.php:248
-msgid "Add new connections to this privacy group"
-msgstr ""
-
-#: ../../include/group.php:289
-msgid "edit"
-msgstr ""
-
-#: ../../include/group.php:312
-msgid "Edit group"
-msgstr ""
-
-#: ../../include/group.php:313
-msgid "Add privacy group"
-msgstr ""
-
-#: ../../include/group.php:314
-msgid "Channels not in any privacy group"
-msgstr ""
-
-#: ../../include/network.php:659
-msgid "view full size"
-msgstr ""
-
-#: ../../include/network.php:1875 ../../include/account.php:317
-#: ../../include/account.php:344 ../../include/account.php:404
-msgid "Administrator"
-msgstr ""
-
-#: ../../include/network.php:1889
-msgid "No Subject"
-msgstr ""
-
-#: ../../include/account.php:28
-msgid "Not a valid email address"
-msgstr ""
-
-#: ../../include/account.php:30
-msgid "Your email domain is not among those allowed on this site"
-msgstr ""
-
-#: ../../include/account.php:36
-msgid "Your email address is already registered at this site."
-msgstr ""
-
-#: ../../include/account.php:68
-msgid "An invitation is required."
-msgstr ""
-
-#: ../../include/account.php:72
-msgid "Invitation could not be verified."
-msgstr ""
-
-#: ../../include/account.php:122
-msgid "Please enter the required information."
-msgstr ""
-
-#: ../../include/account.php:189
-msgid "Failed to store account information."
-msgstr ""
-
-#: ../../include/account.php:249
-#, php-format
-msgid "Registration confirmation for %s"
-msgstr ""
-
-#: ../../include/account.php:315
-#, php-format
-msgid "Registration request at %s"
-msgstr ""
-
-#: ../../include/account.php:339
-msgid "your registration password"
-msgstr ""
-
-#: ../../include/account.php:342 ../../include/account.php:402
-#, php-format
-msgid "Registration details for %s"
-msgstr ""
-
-#: ../../include/account.php:414
-msgid "Account approved."
-msgstr ""
-
-#: ../../include/account.php:454
-#, php-format
-msgid "Registration revoked for %s"
-msgstr ""
-
-#: ../../include/account.php:506
-msgid "Account verified. Please login."
-msgstr ""
-
-#: ../../include/account.php:722 ../../include/account.php:724
-msgid "Click here to upgrade."
-msgstr ""
-
-#: ../../include/account.php:730
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr ""
-
-#: ../../include/account.php:735
-msgid "This action is not available under your subscription plan."
+"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit "
+"the scope of \"Show\"."
msgstr ""
-#: ../../include/bbcode.php:123 ../../include/bbcode.php:863
-#: ../../include/bbcode.php:866 ../../include/bbcode.php:871
-#: ../../include/bbcode.php:874 ../../include/bbcode.php:877
-#: ../../include/bbcode.php:880 ../../include/bbcode.php:885
-#: ../../include/bbcode.php:888 ../../include/bbcode.php:893
-#: ../../include/bbcode.php:896 ../../include/bbcode.php:899
-#: ../../include/bbcode.php:902
-msgid "Image/photo"
+#: ../../include/acl_selectors.php:274
+msgid "Show"
msgstr ""
-#: ../../include/bbcode.php:162 ../../include/bbcode.php:913
-msgid "Encrypted content"
+#: ../../include/acl_selectors.php:275
+msgid "Don't show"
msgstr ""
-#: ../../include/bbcode.php:179
-#, php-format
-msgid "Install %s element: "
+#: ../../include/acl_selectors.php:281
+msgid "Other networks and post services"
msgstr ""
-#: ../../include/bbcode.php:183
+#: ../../include/acl_selectors.php:311
#, php-format
msgid ""
-"This post contains an installable %s element, however you lack permissions "
-"to install it on this site."
-msgstr ""
-
-#: ../../include/bbcode.php:255
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr ""
-
-#: ../../include/bbcode.php:333 ../../include/bbcode.php:341
-msgid "Click to open/close"
-msgstr ""
-
-#: ../../include/bbcode.php:341
-msgid "spoiler"
-msgstr ""
-
-#: ../../include/bbcode.php:598
-msgid "Different viewers will see this text differently"
-msgstr ""
-
-#: ../../include/bbcode.php:851
-msgid "$1 wrote:"
-msgstr ""
-
-#: ../../include/conversation.php:204
-#, php-format
-msgid "%1$s is now connected with %2$s"
-msgstr ""
-
-#: ../../include/conversation.php:239
-#, php-format
-msgid "%1$s poked %2$s"
-msgstr ""
-
-#: ../../include/conversation.php:691
-#, php-format
-msgid "View %s's profile @ %s"
-msgstr ""
-
-#: ../../include/conversation.php:710
-msgid "Categories:"
-msgstr ""
-
-#: ../../include/conversation.php:711
-msgid "Filed under:"
-msgstr ""
-
-#: ../../include/conversation.php:738
-msgid "View in context"
-msgstr ""
-
-#: ../../include/conversation.php:850
-msgid "remove"
-msgstr ""
-
-#: ../../include/conversation.php:854 ../../include/nav.php:247
-msgid "Loading..."
-msgstr ""
-
-#: ../../include/conversation.php:855
-msgid "Delete Selected Items"
-msgstr ""
-
-#: ../../include/conversation.php:953
-msgid "View Source"
+"Post permissions %s cannot be changed %s after a post is shared.</br />These "
+"permissions set who is allowed to view the post."
msgstr ""
-#: ../../include/conversation.php:954
-msgid "Follow Thread"
+#: ../../include/auth.php:105
+msgid "Logged out."
msgstr ""
-#: ../../include/conversation.php:955
-msgid "Unfollow Thread"
+#: ../../include/auth.php:212
+msgid "Failed authentication"
msgstr ""
-#: ../../include/conversation.php:960
-msgid "Activity/Posts"
+#: ../../include/datetime.php:135
+msgid "Birthday"
msgstr ""
-#: ../../include/conversation.php:962
-msgid "Edit Connection"
+#: ../../include/datetime.php:137
+msgid "Age: "
msgstr ""
-#: ../../include/conversation.php:963
-msgid "Message"
+#: ../../include/datetime.php:139
+msgid "YYYY-MM-DD or MM-DD"
msgstr ""
-#: ../../include/conversation.php:1080
-#, php-format
-msgid "%s likes this."
+#: ../../include/datetime.php:272 ../../boot.php:2470
+msgid "never"
msgstr ""
-#: ../../include/conversation.php:1080
-#, php-format
-msgid "%s doesn't like this."
+#: ../../include/datetime.php:278
+msgid "less than a second ago"
msgstr ""
-#: ../../include/conversation.php:1084
+#: ../../include/datetime.php:296
#, php-format
-msgid "<span %1$s>%2$d people</span> like this."
-msgid_plural "<span %1$s>%2$d people</span> like this."
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../../include/conversation.php:1086
-#, php-format
-msgid "<span %1$s>%2$d people</span> don't like this."
-msgid_plural "<span %1$s>%2$d people</span> don't like this."
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../../include/conversation.php:1092
-msgid "and"
+msgctxt "e.g. 22 hours ago, 1 minute ago"
+msgid "%1$d %2$s ago"
msgstr ""
-#: ../../include/conversation.php:1095
-#, php-format
-msgid ", and %d other people"
-msgid_plural ", and %d other people"
+#: ../../include/datetime.php:307
+msgctxt "relative_date"
+msgid "year"
+msgid_plural "years"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:1096
-#, php-format
-msgid "%s like this."
-msgstr ""
-
-#: ../../include/conversation.php:1096
-#, php-format
-msgid "%s don't like this."
-msgstr ""
-
-#: ../../include/conversation.php:1136
-msgid "Set your location"
-msgstr ""
-
-#: ../../include/conversation.php:1137
-msgid "Clear browser location"
-msgstr ""
-
-#: ../../include/conversation.php:1187
-msgid "Tag term:"
-msgstr ""
-
-#: ../../include/conversation.php:1188
-msgid "Where are you right now?"
-msgstr ""
-
-#: ../../include/conversation.php:1220
-msgid "Page link name"
-msgstr ""
-
-#: ../../include/conversation.php:1223
-msgid "Post as"
-msgstr ""
-
-#: ../../include/conversation.php:1233
-msgid "Toggle voting"
-msgstr ""
-
-#: ../../include/conversation.php:1264
-msgid "Set publish date"
-msgstr ""
-
-#: ../../include/conversation.php:1268
-msgid "OK"
-msgstr ""
-
-#: ../../include/conversation.php:1513
-msgid "Discover"
-msgstr ""
-
-#: ../../include/conversation.php:1516
-msgid "Imported public streams"
-msgstr ""
-
-#: ../../include/conversation.php:1521
-msgid "Commented Order"
-msgstr ""
-
-#: ../../include/conversation.php:1524
-msgid "Sort by Comment Date"
-msgstr ""
-
-#: ../../include/conversation.php:1528
-msgid "Posted Order"
-msgstr ""
-
-#: ../../include/conversation.php:1531
-msgid "Sort by Post Date"
-msgstr ""
-
-#: ../../include/conversation.php:1539
-msgid "Posts that mention or involve you"
-msgstr ""
-
-#: ../../include/conversation.php:1548
-msgid "Activity Stream - by date"
-msgstr ""
-
-#: ../../include/conversation.php:1554
-msgid "Starred"
-msgstr ""
-
-#: ../../include/conversation.php:1557
-msgid "Favourite Posts"
-msgstr ""
-
-#: ../../include/conversation.php:1564
-msgid "Spam"
-msgstr ""
-
-#: ../../include/conversation.php:1567
-msgid "Posts flagged as SPAM"
-msgstr ""
-
-#: ../../include/conversation.php:1624
-msgid "Status Messages and Posts"
-msgstr ""
-
-#: ../../include/conversation.php:1633
-msgid "About"
-msgstr ""
-
-#: ../../include/conversation.php:1636
-msgid "Profile Details"
-msgstr ""
-
-#: ../../include/conversation.php:1652
-msgid "Files and Storage"
-msgstr ""
-
-#: ../../include/conversation.php:1686 ../../include/nav.php:102
-msgid "Bookmarks"
-msgstr ""
-
-#: ../../include/conversation.php:1689
-msgid "Saved Bookmarks"
-msgstr ""
-
-#: ../../include/conversation.php:1699
-msgid "Manage Webpages"
-msgstr ""
-
-#: ../../include/conversation.php:1758
-msgctxt "noun"
-msgid "Attending"
-msgid_plural "Attending"
+#: ../../include/datetime.php:310
+msgctxt "relative_date"
+msgid "month"
+msgid_plural "months"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:1761
-msgctxt "noun"
-msgid "Not Attending"
-msgid_plural "Not Attending"
+#: ../../include/datetime.php:313
+msgctxt "relative_date"
+msgid "week"
+msgid_plural "weeks"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:1764
-msgctxt "noun"
-msgid "Undecided"
-msgid_plural "Undecided"
+#: ../../include/datetime.php:316
+msgctxt "relative_date"
+msgid "day"
+msgid_plural "days"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:1767
-msgctxt "noun"
-msgid "Agree"
-msgid_plural "Agrees"
+#: ../../include/datetime.php:319
+msgctxt "relative_date"
+msgid "hour"
+msgid_plural "hours"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:1770
-msgctxt "noun"
-msgid "Disagree"
-msgid_plural "Disagrees"
+#: ../../include/datetime.php:322
+msgctxt "relative_date"
+msgid "minute"
+msgid_plural "minutes"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:1773
-msgctxt "noun"
-msgid "Abstain"
-msgid_plural "Abstains"
+#: ../../include/datetime.php:325
+msgctxt "relative_date"
+msgid "second"
+msgid_plural "seconds"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249
-msgid "Tags"
+#: ../../include/datetime.php:562
+#, php-format
+msgid "%1$s's birthday"
msgstr ""
-#: ../../include/taxonomy.php:293
-msgid "Keywords"
+#: ../../include/datetime.php:563
+#, php-format
+msgid "Happy Birthday %1$s"
msgstr ""
-#: ../../include/taxonomy.php:314
-msgid "have"
+#: ../../include/group.php:26
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
msgstr ""
-#: ../../include/taxonomy.php:314
-msgid "has"
+#: ../../include/group.php:248
+msgid "Add new connections to this privacy group"
msgstr ""
-#: ../../include/taxonomy.php:315
-msgid "want"
+#: ../../include/group.php:289
+msgid "edit"
msgstr ""
-#: ../../include/taxonomy.php:315
-msgid "wants"
+#: ../../include/group.php:312
+msgid "Edit group"
msgstr ""
-#: ../../include/taxonomy.php:316
-msgid "likes"
+#: ../../include/group.php:313
+msgid "Add privacy group"
msgstr ""
-#: ../../include/taxonomy.php:317
-msgid "dislikes"
+#: ../../include/group.php:314
+msgid "Channels not in any privacy group"
msgstr ""
#: ../../include/js_strings.php:5
@@ -9222,189 +9347,96 @@ msgctxt "calendar"
msgid "All day"
msgstr ""
-#: ../../include/message.php:20
-msgid "No recipient provided."
-msgstr ""
-
-#: ../../include/message.php:25
-msgid "[no subject]"
-msgstr ""
-
-#: ../../include/message.php:45
-msgid "Unable to determine sender."
-msgstr ""
-
-#: ../../include/message.php:222
-msgid "Stored post could not be verified."
-msgstr ""
-
-#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1614
-msgid "Logout"
-msgstr ""
-
-#: ../../include/nav.php:82 ../../include/nav.php:113
-msgid "End this session"
+#: ../../include/network.php:657
+msgid "view full size"
msgstr ""
-#: ../../include/nav.php:85 ../../include/nav.php:144
-msgid "Home"
+#: ../../include/network.php:1885
+msgid "No Subject"
msgstr ""
-#: ../../include/nav.php:85
-msgid "Your posts and conversations"
+#: ../../include/network.php:2146 ../../include/network.php:2147
+msgid "Friendica"
msgstr ""
-#: ../../include/nav.php:86
-msgid "Your profile page"
+#: ../../include/network.php:2148
+msgid "OStatus"
msgstr ""
-#: ../../include/nav.php:88
-msgid "Manage/Edit profiles"
+#: ../../include/network.php:2149
+msgid "GNU-Social"
msgstr ""
-#: ../../include/nav.php:90
-msgid "Edit your profile"
+#: ../../include/network.php:2150
+msgid "RSS/Atom"
msgstr ""
-#: ../../include/nav.php:92
-msgid "Your photos"
+#: ../../include/network.php:2152
+msgid "Diaspora"
msgstr ""
-#: ../../include/nav.php:93
-msgid "Your files"
+#: ../../include/network.php:2153
+msgid "Facebook"
msgstr ""
-#: ../../include/nav.php:96
-msgid "Your chatrooms"
+#: ../../include/network.php:2154
+msgid "Zot"
msgstr ""
-#: ../../include/nav.php:102
-msgid "Your bookmarks"
+#: ../../include/network.php:2155
+msgid "LinkedIn"
msgstr ""
-#: ../../include/nav.php:106
-msgid "Your webpages"
+#: ../../include/network.php:2156
+msgid "XMPP/IM"
msgstr ""
-#: ../../include/nav.php:110
-msgid "Sign in"
+#: ../../include/network.php:2157
+msgid "MySpace"
msgstr ""
-#: ../../include/nav.php:127
+#: ../../include/photos.php:110
#, php-format
-msgid "%s - click to logout"
-msgstr ""
-
-#: ../../include/nav.php:130
-msgid "Remote authentication"
-msgstr ""
-
-#: ../../include/nav.php:130
-msgid "Click to authenticate to your home hub"
-msgstr ""
-
-#: ../../include/nav.php:144
-msgid "Home Page"
-msgstr ""
-
-#: ../../include/nav.php:147
-msgid "Create an account"
-msgstr ""
-
-#: ../../include/nav.php:159
-msgid "Help and documentation"
-msgstr ""
-
-#: ../../include/nav.php:163
-msgid "Applications, utilities, links, games"
-msgstr ""
-
-#: ../../include/nav.php:165
-msgid "Search site @name, #tag, ?docs, content"
-msgstr ""
-
-#: ../../include/nav.php:167
-msgid "Channel Directory"
-msgstr ""
-
-#: ../../include/nav.php:179
-msgid "Your grid"
-msgstr ""
-
-#: ../../include/nav.php:180
-msgid "Mark all grid notifications seen"
-msgstr ""
-
-#: ../../include/nav.php:182
-msgid "Channel home"
-msgstr ""
-
-#: ../../include/nav.php:183
-msgid "Mark all channel notifications seen"
-msgstr ""
-
-#: ../../include/nav.php:189
-msgid "Notices"
-msgstr ""
-
-#: ../../include/nav.php:189
-msgid "Notifications"
-msgstr ""
-
-#: ../../include/nav.php:190
-msgid "See all notifications"
-msgstr ""
-
-#: ../../include/nav.php:193
-msgid "Private mail"
-msgstr ""
-
-#: ../../include/nav.php:194
-msgid "See all private messages"
-msgstr ""
-
-#: ../../include/nav.php:195
-msgid "Mark all private messages seen"
-msgstr ""
-
-#: ../../include/nav.php:201
-msgid "Event Calendar"
+msgid "Image exceeds website size limit of %lu bytes"
msgstr ""
-#: ../../include/nav.php:202
-msgid "See all events"
+#: ../../include/photos.php:117
+msgid "Image file is empty."
msgstr ""
-#: ../../include/nav.php:203
-msgid "Mark all events seen"
+#: ../../include/photos.php:255
+msgid "Photo storage failed."
msgstr ""
-#: ../../include/nav.php:206
-msgid "Manage Your Channels"
+#: ../../include/photos.php:295
+msgid "a new photo"
msgstr ""
-#: ../../include/nav.php:208
-msgid "Account/Channel Settings"
+#: ../../include/photos.php:299
+#, php-format
+msgctxt "photo_upload"
+msgid "%1$s posted %2$s to %3$s"
msgstr ""
-#: ../../include/nav.php:216
-msgid "Site Setup and Configuration"
+#: ../../include/photos.php:506
+msgid "Upload New Photos"
msgstr ""
-#: ../../include/nav.php:252
-msgid "@name, #tag, ?doc, content"
+#: ../../include/zot.php:699
+msgid "Invalid data packet"
msgstr ""
-#: ../../include/nav.php:253
-msgid "Please wait..."
+#: ../../include/zot.php:715
+msgid "Unable to verify channel signature"
msgstr ""
-#: ../../include/oembed.php:324
-msgid "Embedded content"
+#: ../../include/zot.php:2363
+#, php-format
+msgid "Unable to verify site signature for %s"
msgstr ""
-#: ../../include/oembed.php:333
-msgid "Embedding disabled"
+#: ../../include/zot.php:3712
+msgid "invalid target signature"
msgstr ""
#: ../../include/page_widgets.php:6
@@ -9555,25 +9587,35 @@ msgstr ""
msgid "Custom/Expert Mode"
msgstr ""
-#: ../../include/zot.php:680
-msgid "Invalid data packet"
+#: ../../include/activities.php:41
+msgid " and "
msgstr ""
-#: ../../include/zot.php:696
-msgid "Unable to verify channel signature"
+#: ../../include/activities.php:49
+msgid "public profile"
msgstr ""
-#: ../../include/zot.php:2332
+#: ../../include/activities.php:58
#, php-format
-msgid "Unable to verify site signature for %s"
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
msgstr ""
-#: ../../include/zot.php:3670
-msgid "invalid target signature"
+#: ../../include/activities.php:59
+#, php-format
+msgid "Visit %1$s's %2$s"
msgstr ""
-#: ../../include/api.php:1338
-msgid "Public Timeline"
+#: ../../include/activities.php:62
+#, php-format
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr ""
+
+#: ../../include/bb2diaspora.php:398
+msgid "Attachments:"
+msgstr ""
+
+#: ../../include/bb2diaspora.php:487
+msgid "$Projectname event notification:"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:82
@@ -9712,62 +9754,62 @@ msgstr ""
msgid "Set size of followup author photos"
msgstr ""
-#: ../../boot.php:1075
+#: ../../boot.php:1162
#, php-format
msgctxt "opensearch"
msgid "Search %1$s (%2$s)"
msgstr ""
-#: ../../boot.php:1075
+#: ../../boot.php:1162
msgctxt "opensearch"
msgid "$Projectname"
msgstr ""
-#: ../../boot.php:1392
+#: ../../boot.php:1480
#, php-format
msgid "Update %s failed. See error logs."
msgstr ""
-#: ../../boot.php:1395
+#: ../../boot.php:1483
#, php-format
msgid "Update Error at %s"
msgstr ""
-#: ../../boot.php:1596
+#: ../../boot.php:1684
msgid ""
"Create an account to access services and applications within the Hubzilla"
msgstr ""
-#: ../../boot.php:1618
+#: ../../boot.php:1706
msgid "Password"
msgstr ""
-#: ../../boot.php:1619
+#: ../../boot.php:1707
msgid "Remember me"
msgstr ""
-#: ../../boot.php:1622
+#: ../../boot.php:1710
msgid "Forgot your password?"
msgstr ""
-#: ../../boot.php:2254
+#: ../../boot.php:2276
msgid "toggle mobile"
msgstr ""
-#: ../../boot.php:2407
+#: ../../boot.php:2425
msgid "Website SSL certificate is not valid. Please correct."
msgstr ""
-#: ../../boot.php:2410
+#: ../../boot.php:2428
#, php-format
msgid "[hubzilla] Website SSL error for %s"
msgstr ""
-#: ../../boot.php:2447
+#: ../../boot.php:2469
msgid "Cron/Scheduled tasks not running."
msgstr ""
-#: ../../boot.php:2451
+#: ../../boot.php:2473
#, php-format
msgid "[hubzilla] Cron tasks not running on %s"
msgstr ""
diff --git a/util/messages.po b/util/messages.po
index f3c9782f3..dd847e9e0 100644
--- a/util/messages.po
+++ b/util/messages.po
@@ -1023,7 +1023,7 @@ msgstr ""
#: ../../include/widgets.php:136 ../../include/widgets.php:175
#: ../../include/Contact.php:107 ../../include/conversation.php:956
-#: ../../include/identity.php:956 ../../mod/directory.php:316
+#: ../../include/channel.php:956 ../../mod/directory.php:316
#: ../../mod/match.php:64 ../../mod/suggest.php:52
msgid "Connect"
msgstr ""
@@ -1088,8 +1088,8 @@ msgstr ""
msgid "Family"
msgstr ""
-#: ../../include/widgets.php:431 ../../include/identity.php:394
-#: ../../include/identity.php:395 ../../include/identity.php:402
+#: ../../include/widgets.php:431 ../../include/channel.php:394
+#: ../../include/channel.php:395 ../../include/channel.php:402
#: ../../include/profile_selectors.php:80 ../../mod/settings.php:345
#: ../../mod/settings.php:349 ../../mod/settings.php:350
#: ../../mod/settings.php:353 ../../mod/settings.php:364
@@ -1206,7 +1206,7 @@ msgid "Finishes:"
msgstr ""
#: ../../include/event.php:50 ../../include/bb2diaspora.php:481
-#: ../../include/identity.php:1007 ../../mod/directory.php:302
+#: ../../include/channel.php:1007 ../../mod/directory.php:302
#: ../../mod/events.php:684
msgid "Location:"
msgstr ""
@@ -1523,7 +1523,7 @@ msgid "View all"
msgstr ""
#: ../../include/ItemObject.php:179 ../../include/taxonomy.php:396
-#: ../../include/conversation.php:1712 ../../include/identity.php:1266
+#: ../../include/conversation.php:1712 ../../include/channel.php:1266
#: ../../mod/photos.php:1019
msgctxt "noun"
msgid "Like"
@@ -1775,7 +1775,7 @@ msgstr ""
msgid "Manage/Edit profiles"
msgstr ""
-#: ../../include/nav.php:95 ../../include/identity.php:979
+#: ../../include/nav.php:95 ../../include/channel.php:979
msgid "Edit Profile"
msgstr ""
@@ -3279,48 +3279,48 @@ msgstr ""
msgid "database storage failed."
msgstr ""
-#: ../../include/identity.php:33
+#: ../../include/channel.php:33
msgid "Unable to obtain identity information from database"
msgstr ""
-#: ../../include/identity.php:67
+#: ../../include/channel.php:67
msgid "Empty name"
msgstr ""
-#: ../../include/identity.php:70
+#: ../../include/channel.php:70
msgid "Name too long"
msgstr ""
-#: ../../include/identity.php:186
+#: ../../include/channel.php:186
msgid "No account identifier"
msgstr ""
-#: ../../include/identity.php:198
+#: ../../include/channel.php:198
msgid "Nickname is required."
msgstr ""
-#: ../../include/identity.php:212
+#: ../../include/channel.php:212
msgid "Reserved nickname. Please choose another."
msgstr ""
-#: ../../include/identity.php:217 ../../include/dimport.php:34
+#: ../../include/channel.php:217 ../../include/dimport.php:34
msgid ""
"Nickname has unsupported characters or is already being used on this site."
msgstr ""
-#: ../../include/identity.php:292
+#: ../../include/channel.php:292
msgid "Unable to retrieve created identity"
msgstr ""
-#: ../../include/identity.php:350
+#: ../../include/channel.php:350
msgid "Default Profile"
msgstr ""
-#: ../../include/identity.php:759
+#: ../../include/channel.php:759
msgid "Requested channel is not available."
msgstr ""
-#: ../../include/identity.php:806 ../../mod/profile.php:16
+#: ../../include/channel.php:806 ../../mod/profile.php:16
#: ../../mod/achievements.php:11 ../../mod/webpages.php:29
#: ../../mod/connect.php:13 ../../mod/hcard.php:8 ../../mod/blocks.php:29
#: ../../mod/editlayout.php:27 ../../mod/editwebpage.php:28
@@ -3329,193 +3329,193 @@ msgstr ""
msgid "Requested profile is not available."
msgstr ""
-#: ../../include/identity.php:969 ../../mod/profiles.php:774
+#: ../../include/channel.php:969 ../../mod/profiles.php:774
msgid "Change profile photo"
msgstr ""
-#: ../../include/identity.php:975
+#: ../../include/channel.php:975
msgid "Profiles"
msgstr ""
-#: ../../include/identity.php:975
+#: ../../include/channel.php:975
msgid "Manage/edit profiles"
msgstr ""
-#: ../../include/identity.php:976 ../../mod/profiles.php:775
+#: ../../include/channel.php:976 ../../mod/profiles.php:775
msgid "Create New Profile"
msgstr ""
-#: ../../include/identity.php:991 ../../mod/profiles.php:786
+#: ../../include/channel.php:991 ../../mod/profiles.php:786
msgid "Profile Image"
msgstr ""
-#: ../../include/identity.php:994
+#: ../../include/channel.php:994
msgid "visible to everybody"
msgstr ""
-#: ../../include/identity.php:995 ../../mod/profiles.php:669
+#: ../../include/channel.php:995 ../../mod/profiles.php:669
#: ../../mod/profiles.php:790
msgid "Edit visibility"
msgstr ""
-#: ../../include/identity.php:1011 ../../include/identity.php:1250
+#: ../../include/channel.php:1011 ../../include/channel.php:1250
msgid "Gender:"
msgstr ""
-#: ../../include/identity.php:1012 ../../include/identity.php:1294
+#: ../../include/channel.php:1012 ../../include/channel.php:1294
msgid "Status:"
msgstr ""
-#: ../../include/identity.php:1013 ../../include/identity.php:1305
+#: ../../include/channel.php:1013 ../../include/channel.php:1305
msgid "Homepage:"
msgstr ""
-#: ../../include/identity.php:1014
+#: ../../include/channel.php:1014
msgid "Online Now"
msgstr ""
-#: ../../include/identity.php:1097 ../../include/identity.php:1175
+#: ../../include/channel.php:1097 ../../include/channel.php:1175
#: ../../mod/ping.php:324
msgid "g A l F d"
msgstr ""
-#: ../../include/identity.php:1098 ../../include/identity.php:1176
+#: ../../include/channel.php:1098 ../../include/channel.php:1176
msgid "F d"
msgstr ""
-#: ../../include/identity.php:1143 ../../include/identity.php:1215
+#: ../../include/channel.php:1143 ../../include/channel.php:1215
#: ../../mod/ping.php:346
msgid "[today]"
msgstr ""
-#: ../../include/identity.php:1154
+#: ../../include/channel.php:1154
msgid "Birthday Reminders"
msgstr ""
-#: ../../include/identity.php:1155
+#: ../../include/channel.php:1155
msgid "Birthdays this week:"
msgstr ""
-#: ../../include/identity.php:1208
+#: ../../include/channel.php:1208
msgid "[No description]"
msgstr ""
-#: ../../include/identity.php:1226
+#: ../../include/channel.php:1226
msgid "Event Reminders"
msgstr ""
-#: ../../include/identity.php:1227
+#: ../../include/channel.php:1227
msgid "Events this week:"
msgstr ""
-#: ../../include/identity.php:1240 ../../include/identity.php:1357
+#: ../../include/channel.php:1240 ../../include/channel.php:1357
#: ../../include/apps.php:138 ../../mod/profperm.php:112
msgid "Profile"
msgstr ""
-#: ../../include/identity.php:1248 ../../mod/settings.php:1056
+#: ../../include/channel.php:1248 ../../mod/settings.php:1056
msgid "Full Name:"
msgstr ""
-#: ../../include/identity.php:1255
+#: ../../include/channel.php:1255
msgid "Like this channel"
msgstr ""
-#: ../../include/identity.php:1279
+#: ../../include/channel.php:1279
msgid "j F, Y"
msgstr ""
-#: ../../include/identity.php:1280
+#: ../../include/channel.php:1280
msgid "j F"
msgstr ""
-#: ../../include/identity.php:1287
+#: ../../include/channel.php:1287
msgid "Birthday:"
msgstr ""
-#: ../../include/identity.php:1291 ../../mod/directory.php:297
+#: ../../include/channel.php:1291 ../../mod/directory.php:297
msgid "Age:"
msgstr ""
-#: ../../include/identity.php:1300
+#: ../../include/channel.php:1300
#, php-format
msgid "for %1$d %2$s"
msgstr ""
-#: ../../include/identity.php:1303 ../../mod/profiles.php:691
+#: ../../include/channel.php:1303 ../../mod/profiles.php:691
msgid "Sexual Preference:"
msgstr ""
-#: ../../include/identity.php:1307 ../../mod/directory.php:313
+#: ../../include/channel.php:1307 ../../mod/directory.php:313
#: ../../mod/profiles.php:693
msgid "Hometown:"
msgstr ""
-#: ../../include/identity.php:1309
+#: ../../include/channel.php:1309
msgid "Tags:"
msgstr ""
-#: ../../include/identity.php:1311 ../../mod/profiles.php:694
+#: ../../include/channel.php:1311 ../../mod/profiles.php:694
msgid "Political Views:"
msgstr ""
-#: ../../include/identity.php:1313
+#: ../../include/channel.php:1313
msgid "Religion:"
msgstr ""
-#: ../../include/identity.php:1315 ../../mod/directory.php:315
+#: ../../include/channel.php:1315 ../../mod/directory.php:315
msgid "About:"
msgstr ""
-#: ../../include/identity.php:1317
+#: ../../include/channel.php:1317
msgid "Hobbies/Interests:"
msgstr ""
-#: ../../include/identity.php:1319 ../../mod/profiles.php:697
+#: ../../include/channel.php:1319 ../../mod/profiles.php:697
msgid "Likes:"
msgstr ""
-#: ../../include/identity.php:1321 ../../mod/profiles.php:698
+#: ../../include/channel.php:1321 ../../mod/profiles.php:698
msgid "Dislikes:"
msgstr ""
-#: ../../include/identity.php:1323
+#: ../../include/channel.php:1323
msgid "Contact information and Social Networks:"
msgstr ""
-#: ../../include/identity.php:1325
+#: ../../include/channel.php:1325
msgid "My other channels:"
msgstr ""
-#: ../../include/identity.php:1327
+#: ../../include/channel.php:1327
msgid "Musical interests:"
msgstr ""
-#: ../../include/identity.php:1329
+#: ../../include/channel.php:1329
msgid "Books, literature:"
msgstr ""
-#: ../../include/identity.php:1331
+#: ../../include/channel.php:1331
msgid "Television:"
msgstr ""
-#: ../../include/identity.php:1333
+#: ../../include/channel.php:1333
msgid "Film/dance/culture/entertainment:"
msgstr ""
-#: ../../include/identity.php:1335
+#: ../../include/channel.php:1335
msgid "Love/Romance:"
msgstr ""
-#: ../../include/identity.php:1337
+#: ../../include/channel.php:1337
msgid "Work/employment:"
msgstr ""
-#: ../../include/identity.php:1339
+#: ../../include/channel.php:1339
msgid "School/education:"
msgstr ""
-#: ../../include/identity.php:1359
+#: ../../include/channel.php:1359
msgid "Like this thing"
msgstr ""
diff --git a/util/po2php.php b/util/po2php.php
index 66807083b..ab8c495f9 100644
--- a/util/po2php.php
+++ b/util/po2php.php
@@ -1,7 +1,7 @@
<?php
-function po2php_run($argv, $argc) {
+function po2php_run($argc,$argv) {
if ($argc!=2) {
print "Usage: ".$argv[0]." <file.po>\n\n";
@@ -140,5 +140,5 @@ function trim_message($str) {
}
if (array_search(__file__,get_included_files())===0){
- po2php_run($argv,$argc);
+ po2php_run($argc,$argv);
}
diff --git a/util/safemode b/util/safemode
new file mode 100755
index 000000000..05ddbeafe
--- /dev/null
+++ b/util/safemode
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+
+if [ $# == 0 ] ; then
+ echo Usage: $0 on '|' $0 off
+ echo on saves current addons to addons-safemode and uninstalls all of them
+ echo off installs all addons in addons-safemode
+ exit
+fi
+
+
+if [ $1 == 'on' ] ; then
+ util/addons list > addons-safemode
+ for a in `cat addons-safemode` ; do
+ util/addons uninstall $a
+ done
+ exit
+fi
+
+if [ $1 == 'off' ] ; then
+ for a in `cat addons-safemode` ; do
+ util/addons install $a
+ done
+ exit
+fi
+
+
+
diff --git a/view/ca/hmessages.po b/view/ca/hmessages.po
index 7684159cf..ecb96b8f8 100644
--- a/view/ca/hmessages.po
+++ b/view/ca/hmessages.po
@@ -1,19 +1,19 @@
-# Red Matrix Project
-# Copyright (C) 2012-2014 the Red Matrix Project
+# Hubzilla Project
+# Copyright (C) 2012-2014 the Hubzilla Project
# This file is distributed under the same license as the Red package.
#
# Translators:
# Espart <ranker72@gmail.com>, 2015
-# Rafael, 2013-2015
-# Rafael, 2015
# Rafael, 2015
+# Rafael Garau, 2016
+# Rafael Garau, 2015
msgid ""
msgstr ""
"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-08-07 00:03-0700\n"
-"PO-Revision-Date: 2015-08-11 22:02+0000\n"
-"Last-Translator: Rafael\n"
+"POT-Creation-Date: 2016-06-10 00:02-0700\n"
+"PO-Revision-Date: 2016-06-10 09:14+0000\n"
+"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
"Language-Team: Catalan (Spain) (http://www.transifex.com/Friendica/red-matrix/language/ca_ES/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -21,9054 +21,9810 @@ msgstr ""
"Language: ca_ES\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../../include/dba/dba_driver.php:141
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "No s'ha trobat informació de DNS pel servidor de base de dades '%s'"
-
-#: ../../include/photo/photo_driver.php:687 ../../mod/profile_photo.php:143
-#: ../../mod/profile_photo.php:302 ../../mod/profile_photo.php:424
-#: ../../mod/photos.php:92 ../../mod/photos.php:637
-msgid "Profile Photos"
-msgstr "Fotos del Perfil"
-
-#: ../../include/menu.php:107 ../../include/page_widgets.php:8
-#: ../../include/page_widgets.php:36 ../../include/RedDAV/RedBrowser.php:266
-#: ../../include/ItemObject.php:100 ../../include/apps.php:254
-#: ../../mod/webpages.php:181 ../../mod/thing.php:227
-#: ../../mod/connections.php:382 ../../mod/connections.php:395
-#: ../../mod/connections.php:414 ../../mod/blocks.php:153
-#: ../../mod/editpost.php:106 ../../mod/editlayout.php:133
-#: ../../mod/editwebpage.php:178 ../../mod/editblock.php:134
-#: ../../mod/menu.php:103 ../../mod/settings.php:650 ../../mod/layouts.php:183
-msgid "Edit"
-msgstr "Edita"
-
-#: ../../include/contact_selectors.php:56
-msgid "Frequently"
-msgstr "Freqüentment"
-
-#: ../../include/contact_selectors.php:57
-msgid "Hourly"
-msgstr "Horariament"
-
-#: ../../include/contact_selectors.php:58
-msgid "Twice daily"
-msgstr "Dos vegades al dia"
-
-#: ../../include/contact_selectors.php:59
-msgid "Daily"
-msgstr "Diariament"
-
-#: ../../include/contact_selectors.php:60
-msgid "Weekly"
-msgstr "Setmanalment"
-
-#: ../../include/contact_selectors.php:61
-msgid "Monthly"
-msgstr "Mensualment"
-
-#: ../../include/contact_selectors.php:76
-msgid "Friendica"
-msgstr "Friendica"
-
-#: ../../include/contact_selectors.php:77
-msgid "OStatus"
-msgstr "OStatus"
-
-#: ../../include/contact_selectors.php:78
-msgid "RSS/Atom"
-msgstr "RSS/Atom"
-
-#: ../../include/contact_selectors.php:79 ../../mod/admin.php:822
-#: ../../mod/admin.php:831 ../../mod/id.php:15 ../../mod/id.php:16
-#: ../../boot.php:1553
-msgid "Email"
-msgstr "Correu electrónic"
-
-#: ../../include/contact_selectors.php:80
-msgid "Diaspora"
-msgstr "Diaspora"
-
-#: ../../include/contact_selectors.php:81
-msgid "Facebook"
-msgstr "Facebook"
-
-#: ../../include/contact_selectors.php:82
-msgid "Zot!"
-msgstr "Zot!"
-
-#: ../../include/contact_selectors.php:83
-msgid "LinkedIn"
-msgstr "LinkedIn"
-
-#: ../../include/contact_selectors.php:84
-msgid "XMPP/IM"
-msgstr "XMPP/IM"
-
-#: ../../include/contact_selectors.php:85
-msgid "MySpace"
-msgstr "MySpace"
-
-#: ../../include/notify.php:23
-msgid "created a new post"
-msgstr "Creada una nova entrada"
-
-#: ../../include/notify.php:24
-#, php-format
-msgid "commented on %s's post"
-msgstr "comentat a l'entrada de %s"
-
-#: ../../include/Import/import_diaspora.php:17
-msgid "No username found in import file."
-msgstr "No s'ha trobat nom d'usuari a l'arxiu d'importació."
-
-#: ../../include/Import/import_diaspora.php:42 ../../mod/import.php:156
-msgid "Unable to create a unique channel address. Import failed."
-msgstr "No s'ha pogut importar el canal perquè l'adreça única de canal no s'ha pogut crear."
-
-#: ../../include/Import/import_diaspora.php:140 ../../mod/import.php:504
-msgid "Import completed."
-msgstr "S'ha completat la importació."
-
-#: ../../include/group.php:26
-msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "Un grup esborrat amb aquest nom fou reviscolat. Els permisos dels items existents <strong>poden</strong> aplicar-se a aquest grup i qualsevol membre futur. Si no es això el que vols, si et plau, crea un altre grup amb un nom diferent."
-
-#: ../../include/group.php:235
-msgid "Default privacy group for new contacts"
-msgstr "Privacitat de grup predeterminada per a contactes nous"
-
-#: ../../include/group.php:254 ../../mod/admin.php:831
-msgid "All Channels"
-msgstr "Tots els Canals"
-
-#: ../../include/group.php:276
-msgid "edit"
-msgstr "edita"
-
-#: ../../include/group.php:298
-msgid "Collections"
-msgstr "Col·leccions"
-
-#: ../../include/group.php:299
-msgid "Edit collection"
-msgstr "Edita col·leccions"
-
-#: ../../include/group.php:300
-msgid "Add new collection"
-msgstr "Afegeix una nova col·lecció"
-
-#: ../../include/group.php:301
-msgid "Channels not in any collection"
-msgstr "Canals a cap col·lecció"
-
-#: ../../include/group.php:303 ../../include/widgets.php:275
-msgid "add"
-msgstr "afegeix"
-
-#: ../../include/account.php:27
-msgid "Not a valid email address"
-msgstr "Adreça de correu electrònic no vàlida"
-
-#: ../../include/account.php:29
-msgid "Your email domain is not among those allowed on this site"
-msgstr "El seu domini de correu electrònic no es troba entre els permesos en aquest lloc"
-
-#: ../../include/account.php:35
-msgid "Your email address is already registered at this site."
-msgstr "La teva adreça de correu electrònic ja esta registrada en aquest lloc"
-
-#: ../../include/account.php:67
-msgid "An invitation is required."
-msgstr "Es requereix Invitació"
-
-#: ../../include/account.php:71
-msgid "Invitation could not be verified."
-msgstr "L'invitació no ha pogut ser verificada"
-
-#: ../../include/account.php:121
-msgid "Please enter the required information."
-msgstr "Entra la informació sol·licitada"
-
-#: ../../include/account.php:188
-msgid "Failed to store account information."
-msgstr "Ha fallat guardar la informació del compte"
-
-#: ../../include/account.php:246
-#, php-format
-msgid "Registration confirmation for %s"
-msgstr "Registre confirmat per %s"
-
-#: ../../include/account.php:312
-#, php-format
-msgid "Registration request at %s"
-msgstr "Sol·licitud de registre a %s"
-
-#: ../../include/account.php:314 ../../include/account.php:341
-#: ../../include/account.php:401 ../../include/network.php:1632
-msgid "Administrator"
-msgstr "Administrador"
-
-#: ../../include/account.php:336
-msgid "your registration password"
-msgstr "la teva contrasenya registrada"
-
-#: ../../include/account.php:339 ../../include/account.php:399
-#, php-format
-msgid "Registration details for %s"
-msgstr "Detalls del registre per %s"
-
-#: ../../include/account.php:408
-msgid "Account approved."
-msgstr "Compte aprovat."
-
-#: ../../include/account.php:447
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registre revocat per %s"
-
-#: ../../include/account.php:492
-msgid "Account verified. Please login."
-msgstr "Compte verificat. Si us plau, inicia sessió."
-
-#: ../../include/account.php:705 ../../include/account.php:707
-msgid "Click here to upgrade."
-msgstr "Feu clic aquí per actualitzar."
-
-#: ../../include/account.php:713
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Aquesta acció és superior als límits establerts pel seu pla de subscripció."
-
-#: ../../include/account.php:718
-msgid "This action is not available under your subscription plan."
-msgstr "Aquesta acció no està disponible en el seu pla de subscripció."
-
-#: ../../include/datetime.php:48
-msgid "Miscellaneous"
-msgstr "Miscelania"
-
-#: ../../include/datetime.php:132
-msgid "YYYY-MM-DD or MM-DD"
-msgstr "YYYY-MM-DD o MM-DD"
-
-#: ../../include/datetime.php:235 ../../mod/events.php:649
-#: ../../mod/appman.php:91 ../../mod/appman.php:92
-msgid "Required"
-msgstr "Requerit"
-
-#: ../../include/datetime.php:262 ../../boot.php:2354
-msgid "never"
-msgstr "mai"
-
-#: ../../include/datetime.php:268
-msgid "less than a second ago"
-msgstr "fa menys d'un segon"
-
-#: ../../include/datetime.php:271
-msgid "year"
-msgstr "any"
-
-#: ../../include/datetime.php:271
-msgid "years"
-msgstr "anys"
-
-#: ../../include/datetime.php:272
-msgid "month"
-msgstr "mes"
-
-#: ../../include/datetime.php:272
-msgid "months"
-msgstr "mesos"
-
-#: ../../include/datetime.php:273
-msgid "week"
-msgstr "setmana"
-
-#: ../../include/datetime.php:273
-msgid "weeks"
-msgstr "setmanes"
-
-#: ../../include/datetime.php:274
-msgid "day"
-msgstr "dia"
-
-#: ../../include/datetime.php:274
-msgid "days"
-msgstr "dies"
-
-#: ../../include/datetime.php:275
-msgid "hour"
-msgstr "hora"
-
-#: ../../include/datetime.php:275
-msgid "hours"
-msgstr "hores"
-
-#: ../../include/datetime.php:276
-msgid "minute"
-msgstr "minut"
-
-#: ../../include/datetime.php:276
-msgid "minutes"
-msgstr "minuts"
-
-#: ../../include/datetime.php:277
-msgid "second"
-msgstr "segon"
-
-#: ../../include/datetime.php:277
-msgid "seconds"
-msgstr "segons"
-
-#: ../../include/datetime.php:285
-#, php-format
-msgctxt "e.g. 22 hours ago, 1 minute ago"
-msgid "%1$d %2$s ago"
-msgstr "Fa %1$d i %2$s"
-
-#: ../../include/datetime.php:519
-#, php-format
-msgid "%1$s's birthday"
-msgstr "Aniversari de %1$s"
-
-#: ../../include/datetime.php:520
-#, php-format
-msgid "Happy Birthday %1$s"
-msgstr "Feliç Aniversari %1$s"
-
-#: ../../include/dir_fns.php:126
-msgid "Directory Options"
-msgstr "Opcions de Directori"
-
-#: ../../include/dir_fns.php:128
-msgid "Safe Mode"
-msgstr "Mode Segur"
-
-#: ../../include/dir_fns.php:128 ../../include/dir_fns.php:129
-#: ../../include/dir_fns.php:130 ../../mod/api.php:106
-#: ../../mod/photos.php:568 ../../mod/mitem.php:157 ../../mod/mitem.php:158
-#: ../../mod/mitem.php:229 ../../mod/mitem.php:230 ../../mod/menu.php:91
-#: ../../mod/menu.php:147 ../../mod/filestorage.php:151
-#: ../../mod/filestorage.php:159 ../../mod/admin.php:428
-#: ../../mod/settings.php:579 ../../mod/removeme.php:60
-#: ../../mod/connedit.php:635 ../../mod/connedit.php:663
-#: ../../view/theme/redbasic/php/config.php:104
-#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1555
-msgid "No"
-msgstr "No"
-
-#: ../../include/dir_fns.php:128 ../../include/dir_fns.php:129
-#: ../../include/dir_fns.php:130 ../../mod/api.php:105
-#: ../../mod/photos.php:568 ../../mod/mitem.php:157 ../../mod/mitem.php:158
-#: ../../mod/mitem.php:229 ../../mod/mitem.php:230 ../../mod/menu.php:91
-#: ../../mod/menu.php:147 ../../mod/filestorage.php:151
-#: ../../mod/filestorage.php:159 ../../mod/admin.php:430
-#: ../../mod/settings.php:579 ../../mod/removeme.php:60
-#: ../../view/theme/redbasic/php/config.php:104
-#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1555
-msgid "Yes"
-msgstr "Sí"
-
-#: ../../include/dir_fns.php:129
-msgid "Public Forums Only"
-msgstr "Només Fòrums Públics"
-
-#: ../../include/dir_fns.php:130
-msgid "This Website Only"
-msgstr "Només Aquest Lloc Web"
-
-#: ../../include/page_widgets.php:6
-msgid "New Page"
-msgstr "Pàgina Nova"
-
-#: ../../include/page_widgets.php:39 ../../mod/webpages.php:187
-#: ../../mod/blocks.php:159 ../../mod/layouts.php:188
-msgid "View"
-msgstr "Mostra"
-
-#: ../../include/page_widgets.php:40 ../../include/ItemObject.php:677
-#: ../../include/conversation.php:1155 ../../mod/webpages.php:188
-#: ../../mod/events.php:667 ../../mod/editpost.php:143
-#: ../../mod/photos.php:982 ../../mod/editwebpage.php:214
-#: ../../mod/editblock.php:170
-msgid "Preview"
-msgstr "Avanç"
-
-#: ../../include/page_widgets.php:41 ../../mod/webpages.php:189
-msgid "Actions"
-msgstr "Accions"
-
-#: ../../include/page_widgets.php:42 ../../mod/webpages.php:190
-msgid "Page Link"
-msgstr "Enllaç a Pàgina"
-
-#: ../../include/page_widgets.php:43
-msgid "Title"
-msgstr "Títol"
-
-#: ../../include/page_widgets.php:44 ../../mod/webpages.php:192
-#: ../../mod/blocks.php:150 ../../mod/menu.php:105 ../../mod/layouts.php:181
-msgid "Created"
-msgstr "Creat"
-
-#: ../../include/page_widgets.php:45 ../../mod/webpages.php:193
-#: ../../mod/blocks.php:151 ../../mod/menu.php:106 ../../mod/layouts.php:182
-msgid "Edited"
-msgstr "Editat"
-
-#: ../../include/api.php:1193
-msgid "Public Timeline"
-msgstr "Línia de Temps Pública"
-
-#: ../../include/comanche.php:34 ../../mod/admin.php:390
-#: ../../view/theme/apw/php/config.php:185
-msgid "Default"
-msgstr "Predeterminat"
-
-#: ../../include/js_strings.php:5
-msgid "Delete this item?"
-msgstr "Esborrar aquest item?"
-
-#: ../../include/js_strings.php:6 ../../include/ItemObject.php:667
-#: ../../mod/photos.php:980 ../../mod/photos.php:1098
-msgid "Comment"
-msgstr "Comentari"
-
-#: ../../include/js_strings.php:7 ../../include/ItemObject.php:384
-msgid "[+] show all"
-msgstr "[+] mostra tot"
-
-#: ../../include/js_strings.php:8
-msgid "[-] show less"
-msgstr "[-] mostra menys"
-
-#: ../../include/js_strings.php:9
-msgid "[+] expand"
-msgstr "[+] expandeix"
-
-#: ../../include/js_strings.php:10
-msgid "[-] collapse"
-msgstr "[-] colapsa"
-
-#: ../../include/js_strings.php:11
-msgid "Password too short"
-msgstr "Contrasenya massa curta"
-
-#: ../../include/js_strings.php:12
-msgid "Passwords do not match"
-msgstr "Les paraules de pas no coincideixen"
-
-#: ../../include/js_strings.php:13 ../../mod/photos.php:40
-msgid "everybody"
-msgstr "tothom"
-
-#: ../../include/js_strings.php:14
-msgid "Secret Passphrase"
-msgstr "Contrasenya Secreta"
-
-#: ../../include/js_strings.php:15
-msgid "Passphrase hint"
-msgstr "Pista per la Contrasenya"
-
-#: ../../include/js_strings.php:16
-msgid "Notice: Permissions have changed but have not yet been submitted."
-msgstr "Avis: Els permisos han canviat però encara no han estat enviats."
-
-#: ../../include/js_strings.php:17
-msgid "close all"
-msgstr "tanca tot"
-
-#: ../../include/js_strings.php:18
-msgid "Nothing new here"
-msgstr "Res de nou per aquí"
-
-#: ../../include/js_strings.php:19
-msgid "Rate This Channel (this is public)"
-msgstr "Valora Aquest Canal (això es farà públic)"
-
-#: ../../include/js_strings.php:20 ../../mod/rate.php:156
-#: ../../mod/connedit.php:671
-msgid "Rating"
-msgstr "Valora"
-
-#: ../../include/js_strings.php:21
-msgid "Describe (optional)"
-msgstr "Descriu (opcional)"
-
-#: ../../include/js_strings.php:22 ../../include/ItemObject.php:668
-#: ../../mod/xchan.php:11 ../../mod/connect.php:93 ../../mod/thing.php:275
-#: ../../mod/thing.php:318 ../../mod/events.php:494 ../../mod/events.php:670
-#: ../../mod/group.php:81 ../../mod/photos.php:577 ../../mod/photos.php:654
-#: ../../mod/photos.php:941 ../../mod/photos.php:981 ../../mod/photos.php:1099
-#: ../../mod/pdledit.php:58 ../../mod/import.php:534 ../../mod/chat.php:177
-#: ../../mod/chat.php:211 ../../mod/mitem.php:232 ../../mod/rate.php:167
-#: ../../mod/invite.php:142 ../../mod/locs.php:105 ../../mod/sources.php:104
-#: ../../mod/sources.php:138 ../../mod/filestorage.php:156
-#: ../../mod/fsuggest.php:108 ../../mod/poke.php:166
-#: ../../mod/profiles.php:667 ../../mod/setup.php:327 ../../mod/setup.php:367
-#: ../../mod/admin.php:453 ../../mod/admin.php:819 ../../mod/admin.php:986
-#: ../../mod/admin.php:1118 ../../mod/admin.php:1312 ../../mod/admin.php:1397
-#: ../../mod/settings.php:588 ../../mod/settings.php:692
-#: ../../mod/settings.php:718 ../../mod/settings.php:746
-#: ../../mod/settings.php:769 ../../mod/settings.php:854
-#: ../../mod/settings.php:1050 ../../mod/mood.php:134
-#: ../../mod/connedit.php:692 ../../mod/mail.php:355 ../../mod/appman.php:99
-#: ../../mod/pconfig.php:108 ../../mod/poll.php:68
-#: ../../mod/bulksetclose.php:24 ../../view/theme/apw/php/config.php:256
-#: ../../view/theme/redbasic/php/config.php:99
-msgid "Submit"
-msgstr "Presenta"
-
-#: ../../include/js_strings.php:23
-msgid "Please enter a link URL"
-msgstr "Si us plau, entra l'enllaç URL"
-
-#: ../../include/js_strings.php:24
-msgid "Unsaved changes. Are you sure you wish to leave this page?"
-msgstr "Hi ha canvis sense desar, estàs segur que vols abandonar la pàgina?"
-
-#: ../../include/js_strings.php:26
-msgid "timeago.prefixAgo"
-msgstr "horapasada.prefixFa"
-
-#: ../../include/js_strings.php:27
-msgid "timeago.prefixFromNow"
-msgstr "timeago.prefixFromNow"
-
-#: ../../include/js_strings.php:28
-msgid "ago"
-msgstr "fa"
-
-#: ../../include/js_strings.php:29
-msgid "from now"
-msgstr "des d'ara"
-
-#: ../../include/js_strings.php:30
-msgid "less than a minute"
-msgstr "menys d'un minut"
-
-#: ../../include/js_strings.php:31
-msgid "about a minute"
-msgstr "prop d'un minut"
-
-#: ../../include/js_strings.php:32
-#, php-format
-msgid "%d minutes"
-msgstr "%d minuts"
-
-#: ../../include/js_strings.php:33
-msgid "about an hour"
-msgstr "prop d'una hora"
-
-#: ../../include/js_strings.php:34
-#, php-format
-msgid "about %d hours"
-msgstr "al voltant de %d hores"
-
-#: ../../include/js_strings.php:35
-msgid "a day"
-msgstr "un dia"
-
-#: ../../include/js_strings.php:36
-#, php-format
-msgid "%d days"
-msgstr "%d dies"
-
-#: ../../include/js_strings.php:37
-msgid "about a month"
-msgstr "prop d'un mes"
-
-#: ../../include/js_strings.php:38
-#, php-format
-msgid "%d months"
-msgstr "%d mesos"
-
-#: ../../include/js_strings.php:39
-msgid "about a year"
-msgstr "prop d'un any"
-
-#: ../../include/js_strings.php:40
-#, php-format
-msgid "%d years"
-msgstr "%d anys"
-
-#: ../../include/js_strings.php:41
-msgid " "
-msgstr " "
-
-#: ../../include/js_strings.php:42
-msgid "timeago.numbers"
-msgstr "timeago.numbers"
-
-#: ../../include/text.php:395
-msgid "prev"
-msgstr "prev"
-
-#: ../../include/text.php:397
-msgid "first"
-msgstr "primer"
-
-#: ../../include/text.php:426
-msgid "last"
-msgstr "últim"
-
-#: ../../include/text.php:429
-msgid "next"
-msgstr "pròxim"
-
-#: ../../include/text.php:439
-msgid "older"
-msgstr "el més antic"
-
-#: ../../include/text.php:441
-msgid "newer"
-msgstr "El més nou"
-
-#: ../../include/text.php:834
-msgid "No connections"
-msgstr "Sense Connexions"
-
-#: ../../include/text.php:848
-#, php-format
-msgid "%d Connection"
-msgid_plural "%d Connections"
-msgstr[0] "%d Connexió"
-msgstr[1] "%d Connexions"
-
-#: ../../include/text.php:861 ../../mod/viewconnections.php:104
-msgid "View Connections"
-msgstr "Veure Connexions"
-
-#: ../../include/text.php:918 ../../include/text.php:930
-#: ../../include/nav.php:165 ../../include/apps.php:147
-#: ../../mod/search.php:38
-msgid "Search"
-msgstr "Cerca"
-
-#: ../../include/text.php:919 ../../include/text.php:931
-#: ../../include/widgets.php:192 ../../mod/rbmark.php:28
-#: ../../mod/rbmark.php:98 ../../mod/filer.php:50 ../../mod/admin.php:1457
-#: ../../mod/admin.php:1477
-msgid "Save"
-msgstr "Guardar"
-
-#: ../../include/text.php:994
-msgid "poke"
-msgstr "emprenya"
-
-#: ../../include/text.php:994 ../../include/conversation.php:243
-msgid "poked"
-msgstr "emprenyat"
-
-#: ../../include/text.php:995
-msgid "ping"
-msgstr "coloca"
-
-#: ../../include/text.php:995
-msgid "pinged"
-msgstr "colocat"
-
-#: ../../include/text.php:996
-msgid "prod"
-msgstr "picar"
-
-#: ../../include/text.php:996
-msgid "prodded"
-msgstr "picat"
-
-#: ../../include/text.php:997
-msgid "slap"
-msgstr "bufetada"
-
-#: ../../include/text.php:997
-msgid "slapped"
-msgstr "bufetejat"
-
-#: ../../include/text.php:998
-msgid "finger"
-msgstr "senyal"
-
-#: ../../include/text.php:998
-msgid "fingered"
-msgstr "senyalat"
-
-#: ../../include/text.php:999
-msgid "rebuff"
-msgstr "menyspreu"
-
-#: ../../include/text.php:999
-msgid "rebuffed"
-msgstr "menyspreuat"
-
-#: ../../include/text.php:1009
-msgid "happy"
-msgstr "feliç"
-
-#: ../../include/text.php:1010
-msgid "sad"
-msgstr "trist"
-
-#: ../../include/text.php:1011
-msgid "mellow"
-msgstr "melós"
-
-#: ../../include/text.php:1012
-msgid "tired"
-msgstr "cansat"
-
-#: ../../include/text.php:1013
-msgid "perky"
-msgstr "turgent"
-
-#: ../../include/text.php:1014
-msgid "angry"
-msgstr "enfadat"
-
-#: ../../include/text.php:1015
-msgid "stupified"
-msgstr "encantat"
-
-#: ../../include/text.php:1016
-msgid "puzzled"
-msgstr "perplexe"
-
-#: ../../include/text.php:1017
-msgid "interested"
-msgstr "Interessat"
-
-#: ../../include/text.php:1018
-msgid "bitter"
-msgstr "amargat"
-
-#: ../../include/text.php:1019
-msgid "cheerful"
-msgstr "feliç"
-
-#: ../../include/text.php:1020
-msgid "alive"
-msgstr "viu"
-
-#: ../../include/text.php:1021
-msgid "annoyed"
-msgstr "molest"
-
-#: ../../include/text.php:1022
-msgid "anxious"
-msgstr "ansiós"
-
-#: ../../include/text.php:1023
-msgid "cranky"
-msgstr "malagaitós"
-
-#: ../../include/text.php:1024
-msgid "disturbed"
-msgstr "transtornat"
-
-#: ../../include/text.php:1025
-msgid "frustrated"
-msgstr "frustrat"
-
-#: ../../include/text.php:1026
-msgid "depressed"
-msgstr "deprimit"
-
-#: ../../include/text.php:1027
-msgid "motivated"
-msgstr "motivat"
-
-#: ../../include/text.php:1028
-msgid "relaxed"
-msgstr "relaxat"
-
-#: ../../include/text.php:1029
-msgid "surprised"
-msgstr "sorprès"
-
-#: ../../include/text.php:1201
-msgid "Monday"
-msgstr "Dilluns"
-
-#: ../../include/text.php:1201
-msgid "Tuesday"
-msgstr "Dimarts"
-
-#: ../../include/text.php:1201
-msgid "Wednesday"
-msgstr "Dimecres"
-
-#: ../../include/text.php:1201
-msgid "Thursday"
-msgstr "Dijous"
-
-#: ../../include/text.php:1201
-msgid "Friday"
-msgstr "Divendres"
-
-#: ../../include/text.php:1201
-msgid "Saturday"
-msgstr "Dissabte"
-
-#: ../../include/text.php:1201
-msgid "Sunday"
-msgstr "Diumenge"
-
-#: ../../include/text.php:1205
-msgid "January"
-msgstr "Gener"
-
-#: ../../include/text.php:1205
-msgid "February"
-msgstr "Febrer"
-
-#: ../../include/text.php:1205
-msgid "March"
-msgstr "Març"
-
-#: ../../include/text.php:1205
-msgid "April"
-msgstr "Abril"
-
-#: ../../include/text.php:1205
-msgid "May"
-msgstr "Maig"
-
-#: ../../include/text.php:1205
-msgid "June"
-msgstr "Juny"
-
-#: ../../include/text.php:1205
-msgid "July"
-msgstr "Juliol"
-
-#: ../../include/text.php:1205
-msgid "August"
-msgstr "Agost"
-
-#: ../../include/text.php:1205
-msgid "September"
-msgstr "Setembre"
-
-#: ../../include/text.php:1205
-msgid "October"
-msgstr "Octubre"
-
-#: ../../include/text.php:1205
-msgid "November"
-msgstr "Novembre"
-
-#: ../../include/text.php:1205
-msgid "December"
-msgstr "Desembre"
-
-#: ../../include/text.php:1310
-msgid "unknown.???"
-msgstr "desconegut.???"
-
-#: ../../include/text.php:1311
-msgid "bytes"
-msgstr "bytes"
-
-#: ../../include/text.php:1347
-msgid "remove category"
-msgstr "elimina categoria"
-
-#: ../../include/text.php:1422
-msgid "remove from file"
-msgstr "elimina del arxiu"
-
-#: ../../include/text.php:1498 ../../include/text.php:1509
-msgid "Click to open/close"
-msgstr "Clic per obrir/tancar"
-
-#: ../../include/text.php:1665 ../../mod/events.php:457
-msgid "Link to Source"
-msgstr "Enllaç a la Font"
-
-#: ../../include/text.php:1686 ../../include/text.php:1757
-msgid "default"
-msgstr "per defecte"
-
-#: ../../include/text.php:1694
-msgid "Page layout"
-msgstr "Format de la pàgina"
-
-#: ../../include/text.php:1694
-msgid "You can create your own with the layouts tool"
-msgstr "Pots crear el teu propi amb l'editor de format de pàgina."
-
-#: ../../include/text.php:1735
-msgid "Page content type"
-msgstr "Tipus de contingut de la pàgina"
-
-#: ../../include/text.php:1769
-msgid "Select an alternate language"
-msgstr "Tria un idioma alternatiu"
-
-#: ../../include/text.php:1888 ../../include/diaspora.php:2119
-#: ../../include/conversation.php:120 ../../mod/like.php:346
-#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
-#: ../../mod/tagger.php:43
-msgid "photo"
-msgstr "foto"
-
-#: ../../include/text.php:1891 ../../include/conversation.php:123
-#: ../../mod/like.php:348 ../../mod/tagger.php:47
-msgid "event"
-msgstr "succés"
-
-#: ../../include/text.php:1894 ../../include/diaspora.php:2119
-#: ../../include/conversation.php:148 ../../mod/like.php:346
-#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
-msgid "status"
-msgstr "estat"
-
-#: ../../include/text.php:1896 ../../include/conversation.php:150
-#: ../../mod/tagger.php:53
-msgid "comment"
-msgstr "comentari"
-
-#: ../../include/text.php:1901
-msgid "activity"
-msgstr "activitat"
-
-#: ../../include/text.php:2196
-msgid "Design Tools"
-msgstr "Eines de disseny"
-
-#: ../../include/text.php:2199 ../../mod/blocks.php:147
-msgid "Blocks"
-msgstr "Bloc"
-
-#: ../../include/text.php:2200 ../../mod/menu.php:98
-msgid "Menus"
-msgstr "Menús"
-
-#: ../../include/text.php:2201 ../../mod/layouts.php:174
-msgid "Layouts"
-msgstr "Format Gràfic"
-
-#: ../../include/text.php:2202
-msgid "Pages"
-msgstr "Pàgines"
+#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:239
+msgid "parent"
+msgstr "pare"
-#: ../../include/text.php:2553 ../../include/RedDAV/RedBrowser.php:131
+#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2620
msgid "Collection"
msgstr "Col·lecció"
-#: ../../include/RedDAV/RedBrowser.php:107
-#: ../../include/RedDAV/RedBrowser.php:265
-msgid "parent"
-msgstr "pare"
-
-#: ../../include/RedDAV/RedBrowser.php:134
+#: ../../Zotlabs/Storage/Browser.php:134
msgid "Principal"
msgstr "Principal"
-#: ../../include/RedDAV/RedBrowser.php:137
+#: ../../Zotlabs/Storage/Browser.php:137
msgid "Addressbook"
msgstr "Llista d'Adreçes"
-#: ../../include/RedDAV/RedBrowser.php:140
+#: ../../Zotlabs/Storage/Browser.php:140
msgid "Calendar"
msgstr "Calendari"
-#: ../../include/RedDAV/RedBrowser.php:143
+#: ../../Zotlabs/Storage/Browser.php:143
msgid "Schedule Inbox"
msgstr "Programació de la bústia d'entrada"
-#: ../../include/RedDAV/RedBrowser.php:146
+#: ../../Zotlabs/Storage/Browser.php:146
msgid "Schedule Outbox"
msgstr "Programació de la bústia de sortida"
-#: ../../include/RedDAV/RedBrowser.php:164 ../../include/conversation.php:1019
-#: ../../include/apps.php:336 ../../include/apps.php:387
-#: ../../mod/photos.php:693 ../../mod/photos.php:1131
+#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Module/Photos.php:798
+#: ../../Zotlabs/Module/Photos.php:1243 ../../Zotlabs/Lib/Apps.php:486
+#: ../../Zotlabs/Lib/Apps.php:561 ../../include/widgets.php:1505
+#: ../../include/conversation.php:1032
msgid "Unknown"
msgstr "Desconegut"
-#: ../../include/RedDAV/RedBrowser.php:227
-#, php-format
-msgid "%1$s used"
-msgstr "%1$s emprat"
-
-#: ../../include/RedDAV/RedBrowser.php:232
-#, php-format
-msgid "%1$s used of %2$s (%3$s&#37;)"
-msgstr "%1$s emprat de %2$s (%3$s&#37;)"
-
-#: ../../include/RedDAV/RedBrowser.php:251 ../../include/nav.php:98
-#: ../../include/conversation.php:1609 ../../include/apps.php:135
-#: ../../mod/fbrowser.php:114
+#: ../../Zotlabs/Storage/Browser.php:226 ../../Zotlabs/Module/Fbrowser.php:85
+#: ../../Zotlabs/Lib/Apps.php:216 ../../include/nav.php:93
+#: ../../include/conversation.php:1639
msgid "Files"
msgstr "Arxius"
-#: ../../include/RedDAV/RedBrowser.php:253
+#: ../../Zotlabs/Storage/Browser.php:227
msgid "Total"
msgstr "Total"
-#: ../../include/RedDAV/RedBrowser.php:255
+#: ../../Zotlabs/Storage/Browser.php:229
msgid "Shared"
msgstr "Compartit"
-#: ../../include/RedDAV/RedBrowser.php:256
-#: ../../include/RedDAV/RedBrowser.php:303 ../../mod/webpages.php:180
-#: ../../mod/blocks.php:152 ../../mod/menu.php:109
-#: ../../mod/new_channel.php:121 ../../mod/layouts.php:175
+#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:306
+#: ../../Zotlabs/Module/Blocks.php:156 ../../Zotlabs/Module/Layouts.php:182
+#: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/New_channel.php:142
+#: ../../Zotlabs/Module/Webpages.php:186
msgid "Create"
-msgstr "Creada"
+msgstr "Crear"
-#: ../../include/RedDAV/RedBrowser.php:257
-#: ../../include/RedDAV/RedBrowser.php:305 ../../mod/profile_photo.php:362
-#: ../../mod/photos.php:718 ../../mod/photos.php:1248
+#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:308
+#: ../../Zotlabs/Module/Cover_photo.php:357
+#: ../../Zotlabs/Module/Photos.php:825 ../../Zotlabs/Module/Photos.php:1364
+#: ../../Zotlabs/Module/Profile_photo.php:368 ../../include/widgets.php:1518
msgid "Upload"
msgstr "Pujar"
-#: ../../include/RedDAV/RedBrowser.php:261 ../../mod/admin.php:994
-#: ../../mod/settings.php:590 ../../mod/settings.php:616
-#: ../../mod/sharedwithme.php:95
+#: ../../Zotlabs/Storage/Browser.php:235 ../../Zotlabs/Module/Chat.php:247
+#: ../../Zotlabs/Module/Admin.php:1223 ../../Zotlabs/Module/Settings.php:592
+#: ../../Zotlabs/Module/Settings.php:618
+#: ../../Zotlabs/Module/Sharedwithme.php:99
msgid "Name"
msgstr "Nom"
-#: ../../include/RedDAV/RedBrowser.php:262
+#: ../../Zotlabs/Storage/Browser.php:236
msgid "Type"
msgstr "Tipus"
-#: ../../include/RedDAV/RedBrowser.php:263 ../../mod/sharedwithme.php:97
+#: ../../Zotlabs/Storage/Browser.php:237
+#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1344
msgid "Size"
msgstr "Mida"
-#: ../../include/RedDAV/RedBrowser.php:264 ../../mod/sharedwithme.php:98
+#: ../../Zotlabs/Storage/Browser.php:238
+#: ../../Zotlabs/Module/Sharedwithme.php:102
msgid "Last Modified"
msgstr "Últim Modificat"
-#: ../../include/RedDAV/RedBrowser.php:267 ../../include/ItemObject.php:120
-#: ../../include/conversation.php:660 ../../include/apps.php:255
-#: ../../mod/webpages.php:183 ../../mod/thing.php:228 ../../mod/group.php:176
-#: ../../mod/blocks.php:155 ../../mod/photos.php:1062
-#: ../../mod/editlayout.php:178 ../../mod/editwebpage.php:225
-#: ../../mod/editblock.php:180 ../../mod/admin.php:826 ../../mod/admin.php:988
-#: ../../mod/settings.php:651 ../../mod/connedit.php:551
+#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Blocks.php:157
+#: ../../Zotlabs/Module/Editblock.php:109
+#: ../../Zotlabs/Module/Connections.php:290
+#: ../../Zotlabs/Module/Connections.php:310
+#: ../../Zotlabs/Module/Editpost.php:84
+#: ../../Zotlabs/Module/Editlayout.php:113
+#: ../../Zotlabs/Module/Editwebpage.php:146
+#: ../../Zotlabs/Module/Layouts.php:190 ../../Zotlabs/Module/Menu.php:112
+#: ../../Zotlabs/Module/Admin.php:2113 ../../Zotlabs/Module/Settings.php:652
+#: ../../Zotlabs/Module/Thing.php:260 ../../Zotlabs/Module/Webpages.php:187
+#: ../../Zotlabs/Lib/Apps.php:337 ../../Zotlabs/Lib/ThreadItem.php:106
+#: ../../include/channel.php:937 ../../include/channel.php:941
+#: ../../include/menu.php:108 ../../include/page_widgets.php:8
+#: ../../include/page_widgets.php:36
+msgid "Edit"
+msgstr "Edita"
+
+#: ../../Zotlabs/Storage/Browser.php:241 ../../Zotlabs/Module/Blocks.php:159
+#: ../../Zotlabs/Module/Connedit.php:572
+#: ../../Zotlabs/Module/Editblock.php:134
+#: ../../Zotlabs/Module/Connections.php:263
+#: ../../Zotlabs/Module/Editlayout.php:136
+#: ../../Zotlabs/Module/Editwebpage.php:170 ../../Zotlabs/Module/Group.php:177
+#: ../../Zotlabs/Module/Photos.php:1173 ../../Zotlabs/Module/Admin.php:1039
+#: ../../Zotlabs/Module/Admin.php:1213 ../../Zotlabs/Module/Admin.php:2114
+#: ../../Zotlabs/Module/Settings.php:653 ../../Zotlabs/Module/Thing.php:261
+#: ../../Zotlabs/Module/Webpages.php:189 ../../Zotlabs/Lib/Apps.php:338
+#: ../../Zotlabs/Lib/ThreadItem.php:126 ../../include/conversation.php:657
msgid "Delete"
msgstr "Esborra"
-#: ../../include/RedDAV/RedBrowser.php:302
-msgid "Create new folder"
-msgstr "Crea una nova carpeta"
-
-#: ../../include/RedDAV/RedBrowser.php:304
-msgid "Upload file"
-msgstr "Puja arxiu"
-
-#: ../../include/bookmarks.php:35
+#: ../../Zotlabs/Storage/Browser.php:285
#, php-format
-msgid "%1$s's bookmarks"
-msgstr "%1$s de marcadors"
-
-#: ../../include/network.php:635
-msgid "view full size"
-msgstr "Veure a mida competa"
-
-#: ../../include/network.php:1585 ../../include/enotify.php:58
-msgid "$Projectname Notification"
-msgstr "Notificació de $Projectname"
-
-#: ../../include/network.php:1586 ../../include/enotify.php:59
-#: ../../include/diaspora.php:2522 ../../include/diaspora.php:2533
-#: ../../mod/p.php:46
-msgid "$projectname"
-msgstr "$projectname"
+msgid "You are using %1$s of your available file storage."
+msgstr "Estàs emprant el %1$s de l'espai d'emmagatzematge disponible"
-#: ../../include/network.php:1588 ../../include/enotify.php:61
-msgid "Thank You,"
-msgstr "Gràcies,"
-
-#: ../../include/network.php:1590 ../../include/enotify.php:63
+#: ../../Zotlabs/Storage/Browser.php:290
#, php-format
-msgid "%s Administrator"
-msgstr "%s Administrador"
-
-#: ../../include/network.php:1646
-msgid "No Subject"
-msgstr "Sense Assumpte"
-
-#: ../../include/features.php:38
-msgid "General Features"
-msgstr "Característiques Generals"
-
-#: ../../include/features.php:40
-msgid "Content Expiration"
-msgstr "Expiració del Contingut"
-
-#: ../../include/features.php:40
-msgid "Remove posts/comments and/or private messages at a future time"
-msgstr "elimina entrades/comentaris i/o missatges privats de aquí en endevant."
-
-#: ../../include/features.php:41
-msgid "Multiple Profiles"
-msgstr "Multiples Perfils"
-
-#: ../../include/features.php:41
-msgid "Ability to create multiple profiles"
-msgstr "Capacitat per crear multiples perfils"
-
-#: ../../include/features.php:42
-msgid "Advanced Profiles"
-msgstr "Perfils Avançats"
-
-#: ../../include/features.php:42
-msgid "Additional profile sections and selections"
-msgstr "Seccions i seleccions addicionals de perfils "
-
-#: ../../include/features.php:43
-msgid "Profile Import/Export"
-msgstr "Importar/Exportar Perfil"
-
-#: ../../include/features.php:43
-msgid "Save and load profile details across sites/channels"
-msgstr "Guarda i carrega els detalls del perfil al llarg dels llocs/canals"
-
-#: ../../include/features.php:44
-msgid "Web Pages"
-msgstr "Pàgines Web"
-
-#: ../../include/features.php:44
-msgid "Provide managed web pages on your channel"
-msgstr "Proporcionar pàgines web gestionades al seu canal"
-
-#: ../../include/features.php:45
-msgid "Private Notes"
-msgstr "Notes Privades"
-
-#: ../../include/features.php:45
-msgid "Enables a tool to store notes and reminders"
-msgstr "Activa l'eina per guardar notes i recordatoris"
-
-#: ../../include/features.php:46
-msgid "Navigation Channel Select"
-msgstr "Navegació pel Selector de Canals"
-
-#: ../../include/features.php:46
-msgid "Change channels directly from within the navigation dropdown menu"
-msgstr "Canvieu els canals directament des del menú desplegable de navegació"
-
-#: ../../include/features.php:47
-msgid "Photo Location"
-msgstr "Ubicació de la Photo"
-
-#: ../../include/features.php:47
-msgid "If location data is available on uploaded photos, link this to a map."
-msgstr "Si los datos de ubicación están disponibles en las fotos subidas, vincular a un mapa."
-
-#: ../../include/features.php:49
-msgid "Expert Mode"
-msgstr "Mode Expert"
-
-#: ../../include/features.php:49
-msgid "Enable Expert Mode to provide advanced configuration options"
-msgstr "Activar Mode Expert per a proporcionar opcions avançades de configuració"
-
-#: ../../include/features.php:50
-msgid "Premium Channel"
-msgstr "Canal Superior"
+msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
+msgstr "Estàs emprant %1$s de %2$s d'emmagatzematge d'arxius disponible.\n(%3$s&#37;)"
-#: ../../include/features.php:50
-msgid ""
-"Allows you to set restrictions and terms on those that connect with your "
-"channel"
-msgstr "Li permet establir restriccions i els termes en els quals es connecten amb el seu canal"
-
-#: ../../include/features.php:55
-msgid "Post Composition Features"
-msgstr "Característiques de Composició d'Entrades"
-
-#: ../../include/features.php:57
-msgid "Use Markdown"
-msgstr "Us d'Abreviatures"
+#: ../../Zotlabs/Storage/Browser.php:302
+msgid "WARNING:"
+msgstr "ALERTA:"
-#: ../../include/features.php:57
-msgid "Allow use of \"Markdown\" to format posts"
-msgstr "Permet emprat \"Abreviatures\" per formatar entrades"
+#: ../../Zotlabs/Storage/Browser.php:305
+msgid "Create new folder"
+msgstr "Crea una nova carpeta"
-#: ../../include/features.php:58
-msgid "Large Photos"
-msgstr "Grans Fotos"
+#: ../../Zotlabs/Storage/Browser.php:307
+msgid "Upload file"
+msgstr "Puja arxiu"
-#: ../../include/features.php:58
-msgid ""
-"Include large (640px) photo thumbnails in posts. If not enabled, use small "
-"(320px) photo thumbnails"
-msgstr "Inclou gran (640px) foto de miniatura a les entrades. Si no està activat, empra petita (320px) foto de miniatura."
+#: ../../Zotlabs/Web/WebServer.php:120 ../../Zotlabs/Module/Dreport.php:10
+#: ../../Zotlabs/Module/Dreport.php:49 ../../Zotlabs/Module/Group.php:72
+#: ../../Zotlabs/Module/Like.php:284 ../../Zotlabs/Module/Import_items.php:112
+#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:62
+#: ../../include/items.php:385
+msgid "Permission denied"
+msgstr "Permís denegat"
-#: ../../include/features.php:59 ../../include/widgets.php:548
-#: ../../mod/sources.php:88
-msgid "Channel Sources"
-msgstr "Canal Origen"
+#: ../../Zotlabs/Web/WebServer.php:121 ../../Zotlabs/Web/Router.php:65
+#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Blocks.php:73
+#: ../../Zotlabs/Module/Blocks.php:80 ../../Zotlabs/Module/Channel.php:105
+#: ../../Zotlabs/Module/Channel.php:226 ../../Zotlabs/Module/Channel.php:267
+#: ../../Zotlabs/Module/Chat.php:100 ../../Zotlabs/Module/Chat.php:105
+#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Block.php:26
+#: ../../Zotlabs/Module/Block.php:76 ../../Zotlabs/Module/Bookmarks.php:61
+#: ../../Zotlabs/Module/Connedit.php:366 ../../Zotlabs/Module/Editblock.php:67
+#: ../../Zotlabs/Module/Common.php:39 ../../Zotlabs/Module/Connections.php:33
+#: ../../Zotlabs/Module/Cover_photo.php:277
+#: ../../Zotlabs/Module/Cover_photo.php:290
+#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Events.php:265
+#: ../../Zotlabs/Module/Editlayout.php:67
+#: ../../Zotlabs/Module/Editlayout.php:90
+#: ../../Zotlabs/Module/Editwebpage.php:69
+#: ../../Zotlabs/Module/Editwebpage.php:90
+#: ../../Zotlabs/Module/Editwebpage.php:105
+#: ../../Zotlabs/Module/Editwebpage.php:127 ../../Zotlabs/Module/Group.php:13
+#: ../../Zotlabs/Module/Api.php:13 ../../Zotlabs/Module/Api.php:18
+#: ../../Zotlabs/Module/Filestorage.php:24
+#: ../../Zotlabs/Module/Filestorage.php:79
+#: ../../Zotlabs/Module/Filestorage.php:94
+#: ../../Zotlabs/Module/Filestorage.php:121 ../../Zotlabs/Module/Item.php:210
+#: ../../Zotlabs/Module/Item.php:218 ../../Zotlabs/Module/Item.php:1070
+#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78
+#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Id.php:76
+#: ../../Zotlabs/Module/Like.php:181 ../../Zotlabs/Module/Invite.php:17
+#: ../../Zotlabs/Module/Invite.php:91 ../../Zotlabs/Module/Locs.php:87
+#: ../../Zotlabs/Module/Mail.php:129 ../../Zotlabs/Module/Manage.php:10
+#: ../../Zotlabs/Module/Menu.php:78 ../../Zotlabs/Module/Message.php:18
+#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Network.php:17
+#: ../../Zotlabs/Module/Mitem.php:115 ../../Zotlabs/Module/New_channel.php:77
+#: ../../Zotlabs/Module/New_channel.php:104
+#: ../../Zotlabs/Module/Notifications.php:70
+#: ../../Zotlabs/Module/Photos.php:75 ../../Zotlabs/Module/Page.php:35
+#: ../../Zotlabs/Module/Page.php:90 ../../Zotlabs/Module/Pdledit.php:26
+#: ../../Zotlabs/Module/Poke.php:137 ../../Zotlabs/Module/Profile.php:68
+#: ../../Zotlabs/Module/Profile.php:76 ../../Zotlabs/Module/Profiles.php:203
+#: ../../Zotlabs/Module/Profiles.php:601
+#: ../../Zotlabs/Module/Profile_photo.php:256
+#: ../../Zotlabs/Module/Profile_photo.php:269
+#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Appman.php:75
+#: ../../Zotlabs/Module/Register.php:77 ../../Zotlabs/Module/Regmod.php:21
+#: ../../Zotlabs/Module/Service_limits.php:11
+#: ../../Zotlabs/Module/Settings.php:572 ../../Zotlabs/Module/Setup.php:215
+#: ../../Zotlabs/Module/Sharedwithme.php:11
+#: ../../Zotlabs/Module/Sources.php:74 ../../Zotlabs/Module/Suggest.php:30
+#: ../../Zotlabs/Module/Thing.php:274 ../../Zotlabs/Module/Thing.php:294
+#: ../../Zotlabs/Module/Thing.php:331
+#: ../../Zotlabs/Module/Viewconnections.php:25
+#: ../../Zotlabs/Module/Viewconnections.php:30
+#: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Webpages.php:74
+#: ../../Zotlabs/Lib/Chatroom.php:137 ../../include/items.php:3438
+#: ../../include/attach.php:141 ../../include/attach.php:189
+#: ../../include/attach.php:252 ../../include/attach.php:266
+#: ../../include/attach.php:273 ../../include/attach.php:338
+#: ../../include/attach.php:352 ../../include/attach.php:359
+#: ../../include/attach.php:437 ../../include/attach.php:895
+#: ../../include/attach.php:966 ../../include/attach.php:1118
+#: ../../include/photos.php:27
+msgid "Permission denied."
+msgstr "Permís denegat."
-#: ../../include/features.php:59
-msgid "Automatically import channel content from other channels or feeds"
-msgstr "Importa automàticament el contingut del canal des de altres canals o feeds"
+#: ../../Zotlabs/Web/Router.php:146 ../../Zotlabs/Module/Help.php:94
+msgid "Not Found"
+msgstr "No s'ha pogut trobar la pàgina"
-#: ../../include/features.php:60
-msgid "Even More Encryption"
-msgstr "Encara Més Encriptació"
+#: ../../Zotlabs/Web/Router.php:149 ../../Zotlabs/Module/Block.php:79
+#: ../../Zotlabs/Module/Display.php:117 ../../Zotlabs/Module/Help.php:97
+#: ../../Zotlabs/Module/Page.php:93
+msgid "Page not found."
+msgstr "Pàgina no trobada."
-#: ../../include/features.php:60
+#: ../../Zotlabs/Zot/Auth.php:138
msgid ""
-"Allow optional encryption of content end-to-end with a shared secret key"
-msgstr "Permet l'encripció opcional del contingut extrem-a-extrem amb clau secreta compartida"
-
-#: ../../include/features.php:61
-msgid "Enable voting tools"
-msgstr "Habilitar eines de vot"
-
-#: ../../include/features.php:61
-msgid "Provide a class of post which others can vote on"
-msgstr "Proporcionar una classe d'entrada que altres puguin votar"
-
-#: ../../include/features.php:67
-msgid "Network and Stream Filtering"
-msgstr "Filtrat de Xarxa i Flux"
-
-#: ../../include/features.php:68
-msgid "Search by Date"
-msgstr "Cerca per Data"
-
-#: ../../include/features.php:68
-msgid "Ability to select posts by date ranges"
-msgstr "Capacitat per seleccionar entrades per rang de dates"
-
-#: ../../include/features.php:69
-msgid "Collections Filter"
-msgstr "Filtre de Col·leccions"
-
-#: ../../include/features.php:69
-msgid "Enable widget to display Network posts only from selected collections"
-msgstr "Habilitar giny per mostrar les entrades de xarxa únicament de les col·leccions seleccionades"
-
-#: ../../include/features.php:70 ../../include/widgets.php:274
-msgid "Saved Searches"
-msgstr "Cerques Guardades"
-
-#: ../../include/features.php:70
-msgid "Save search terms for re-use"
-msgstr "Guardar els termin de la cerca per a re-usar"
-
-#: ../../include/features.php:71
-msgid "Network Personal Tab"
-msgstr "Pestanya Personal de Xarxa"
-
-#: ../../include/features.php:71
-msgid "Enable tab to display only Network posts that you've interacted on"
-msgstr "Activa pestanya per mostrar només les entrades de xarxa en els que has intervingut"
-
-#: ../../include/features.php:72
-msgid "Network New Tab"
-msgstr "Nova Pestanya de Xarxa"
-
-#: ../../include/features.php:72
-msgid "Enable tab to display all new Network activity"
-msgstr "Activa pestanya per mostrar tota l'activitat nova de la Xarxa"
-
-#: ../../include/features.php:73
-msgid "Affinity Tool"
-msgstr "Eina d'Afinitat"
-
-#: ../../include/features.php:73
-msgid "Filter stream activity by depth of relationships"
-msgstr "Filtre d'activitat del flux per importància de la relació"
-
-#: ../../include/features.php:74
-msgid "Connection Filtering"
-msgstr "Filtre de Connexió"
-
-#: ../../include/features.php:74
-msgid "Filter incoming posts from connections based on keywords/content"
-msgstr "Filtre de missatges d'entrada de conexions, basat en paraules clau/contingut "
-
-#: ../../include/features.php:75
-msgid "Suggest Channels"
-msgstr "Suggerir Canals"
-
-#: ../../include/features.php:75
-msgid "Show channel suggestions"
-msgstr "Mostra suggerencies de canals"
-
-#: ../../include/features.php:80
-msgid "Post/Comment Tools"
-msgstr "Eina d'Entrades/Comentaris"
-
-#: ../../include/features.php:81
-msgid "Tagging"
-msgstr "Etiquetant"
-
-#: ../../include/features.php:81
-msgid "Ability to tag existing posts"
-msgstr "Capacitat d'etiquetar entrades existents"
-
-#: ../../include/features.php:82
-msgid "Post Categories"
-msgstr "Categories d'Entrades"
-
-#: ../../include/features.php:82
-msgid "Add categories to your posts"
-msgstr "Afegeix categoria a la teva entrada"
-
-#: ../../include/features.php:83 ../../include/widgets.php:304
-#: ../../include/contact_widgets.php:57
-msgid "Saved Folders"
-msgstr "Carpetes Guardades"
-
-#: ../../include/features.php:83
-msgid "Ability to file posts under folders"
-msgstr "Capacitat de arxivar entrades en les carpetes"
-
-#: ../../include/features.php:84
-msgid "Dislike Posts"
-msgstr "No Agrada l'Entrada"
-
-#: ../../include/features.php:84
-msgid "Ability to dislike posts/comments"
-msgstr "Capacitat per marcar amb \"No Agrada\" les entrades/comentaris"
-
-#: ../../include/features.php:85
-msgid "Star Posts"
-msgstr "Entrades Excel·lents"
-
-#: ../../include/features.php:85
-msgid "Ability to mark special posts with a star indicator"
-msgstr "Capacitat per marcar entrades especials amb l'indicador d'excel·lencia"
-
-#: ../../include/features.php:86
-msgid "Tag Cloud"
-msgstr "Núvol d'Etiquetes."
-
-#: ../../include/features.php:86
-msgid "Provide a personal tag cloud on your channel page"
-msgstr "Proporcionar un núvol d'etiquetes personals a la teva pàgina de canal"
-
-#: ../../include/widgets.php:35 ../../include/taxonomy.php:264
-#: ../../include/contact_widgets.php:92
-msgid "Categories"
-msgstr "Categories"
-
-#: ../../include/widgets.php:91 ../../include/nav.php:163
-#: ../../mod/apps.php:36
-msgid "Apps"
-msgstr "Aplicatius"
-
-#: ../../include/widgets.php:92
-msgid "System"
-msgstr "Sistema"
-
-#: ../../include/widgets.php:94 ../../include/conversation.php:1504
-msgid "Personal"
-msgstr "Personal"
-
-#: ../../include/widgets.php:95
-msgid "Create Personal App"
-msgstr "Crear Personal App"
-
-#: ../../include/widgets.php:96
-msgid "Edit Personal App"
-msgstr "Editar Personal App"
-
-#: ../../include/widgets.php:136 ../../include/widgets.php:175
-#: ../../include/Contact.php:107 ../../include/conversation.php:945
-#: ../../include/identity.php:857 ../../mod/directory.php:316
-#: ../../mod/match.php:64 ../../mod/suggest.php:52
-msgid "Connect"
-msgstr "Connecta "
-
-#: ../../include/widgets.php:138 ../../mod/suggest.php:54
-msgid "Ignore/Hide"
-msgstr "Ignora/Amaga"
-
-#: ../../include/widgets.php:143 ../../mod/connections.php:268
-msgid "Suggestions"
-msgstr "Suggerencies"
-
-#: ../../include/widgets.php:144
-msgid "See more..."
-msgstr "Veure més....."
+"Remote authentication blocked. You are logged into this site locally. Please"
+" logout and retry."
+msgstr "Autenticació remota bloquejada. Ha iniciat sessió en aquest lloc a nivell local. Si us plau, tanca la sessió i torna-ho a intentar."
-#: ../../include/widgets.php:166
+#: ../../Zotlabs/Zot/Auth.php:246 ../../Zotlabs/Module/Openid.php:76
+#: ../../Zotlabs/Module/Openid.php:183
#, php-format
-msgid "You have %1$.0f of %2$.0f allowed connections."
-msgstr "Tens %1$.0f de %2$.0f connexions permeses."
-
-#: ../../include/widgets.php:172
-msgid "Add New Connection"
-msgstr "Afegeix una Nova Connexió"
-
-#: ../../include/widgets.php:173
-msgid "Enter the channel address"
-msgstr "Introdueix la adreça del canal"
-
-#: ../../include/widgets.php:174
-msgid "Example: bob@example.com, http://example.com/barbara"
-msgstr "Exemple: pep@exemple.com, http://exemple.com/vinyet"
-
-#: ../../include/widgets.php:190
-msgid "Notes"
-msgstr "Notes"
-
-#: ../../include/widgets.php:266
-msgid "Remove term"
-msgstr "Plaç de remoció"
-
-#: ../../include/widgets.php:307 ../../include/contact_widgets.php:60
-#: ../../include/contact_widgets.php:95
-msgid "Everything"
-msgstr "Tot"
-
-#: ../../include/widgets.php:349
-msgid "Archives"
-msgstr "Arxius"
-
-#: ../../include/widgets.php:429 ../../mod/connedit.php:571
-msgid "Me"
-msgstr "Jo"
-
-#: ../../include/widgets.php:430 ../../mod/connedit.php:572
-msgid "Family"
-msgstr "Família"
-
-#: ../../include/widgets.php:431 ../../include/identity.php:394
-#: ../../include/identity.php:395 ../../include/identity.php:402
-#: ../../include/profile_selectors.php:80 ../../mod/settings.php:345
-#: ../../mod/settings.php:349 ../../mod/settings.php:350
-#: ../../mod/settings.php:353 ../../mod/settings.php:364
-#: ../../mod/connedit.php:573
-msgid "Friends"
-msgstr "Amics"
-
-#: ../../include/widgets.php:432 ../../mod/connedit.php:574
-msgid "Acquaintances"
-msgstr "Coneguts"
+msgid "Welcome %s. Remote authentication successful."
+msgstr "Benvingut %s. Autenticació remota reeixida."
-#: ../../include/widgets.php:433 ../../mod/connections.php:231
-#: ../../mod/connections.php:246 ../../mod/connedit.php:575
-msgid "All"
-msgstr "Tots"
+#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Blocks.php:33
+#: ../../Zotlabs/Module/Connect.php:17 ../../Zotlabs/Module/Editblock.php:31
+#: ../../Zotlabs/Module/Editlayout.php:31
+#: ../../Zotlabs/Module/Editwebpage.php:33
+#: ../../Zotlabs/Module/Filestorage.php:60 ../../Zotlabs/Module/Hcard.php:12
+#: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Profile.php:20
+#: ../../Zotlabs/Module/Webpages.php:34 ../../include/channel.php:837
+msgid "Requested profile is not available."
+msgstr "El perfil demanat no està disponible."
-#: ../../include/widgets.php:452
-msgid "Refresh"
-msgstr "Refresc"
+#: ../../Zotlabs/Module/Achievements.php:38
+msgid "Some blurb about what to do when you're new here"
+msgstr "Algunes propostes sobre el que cal fer quan ets nou aquí"
-#: ../../include/widgets.php:487
-msgid "Account settings"
-msgstr "Ajustos de Compte"
+#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:152
+#: ../../Zotlabs/Module/Editblock.php:108
+msgid "Block Name"
+msgstr "Nom del Bloc"
-#: ../../include/widgets.php:493
-msgid "Channel settings"
-msgstr "Ajustos de Canal"
+#: ../../Zotlabs/Module/Blocks.php:151 ../../include/text.php:2265
+msgid "Blocks"
+msgstr "Bloc"
-#: ../../include/widgets.php:499
-msgid "Additional features"
-msgstr "Característiques addicionals"
+#: ../../Zotlabs/Module/Blocks.php:153
+msgid "Block Title"
+msgstr "Títol del bloc"
-#: ../../include/widgets.php:505
-msgid "Feature/Addon settings"
-msgstr "Ajustos de Característica/Afegit"
+#: ../../Zotlabs/Module/Blocks.php:154 ../../Zotlabs/Module/Layouts.php:188
+#: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Webpages.php:198
+#: ../../include/page_widgets.php:44
+msgid "Created"
+msgstr "Creat"
-#: ../../include/widgets.php:511
-msgid "Display settings"
-msgstr "Ajustos de pantalla"
+#: ../../Zotlabs/Module/Blocks.php:155 ../../Zotlabs/Module/Layouts.php:189
+#: ../../Zotlabs/Module/Menu.php:115 ../../Zotlabs/Module/Webpages.php:199
+#: ../../include/page_widgets.php:45
+msgid "Edited"
+msgstr "Editat"
-#: ../../include/widgets.php:517
-msgid "Connected apps"
-msgstr "Apps connectades"
+#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:191
+#: ../../Zotlabs/Module/Photos.php:1072 ../../Zotlabs/Module/Webpages.php:188
+#: ../../include/conversation.php:1208
+msgid "Share"
+msgstr "Compartir"
-#: ../../include/widgets.php:523
-msgid "Export channel"
-msgstr "Exportat canal"
+#: ../../Zotlabs/Module/Blocks.php:163 ../../Zotlabs/Module/Layouts.php:195
+#: ../../Zotlabs/Module/Pubsites.php:47 ../../Zotlabs/Module/Webpages.php:193
+#: ../../include/page_widgets.php:39
+msgid "View"
+msgstr "Mostra"
-#: ../../include/widgets.php:532 ../../mod/connedit.php:662
-msgid "Connection Default Permissions"
-msgstr "Permisos per Defecte de la Connexió"
+#: ../../Zotlabs/Module/Cal.php:62 ../../Zotlabs/Module/Block.php:43
+#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Wall_upload.php:33
+msgid "Channel not found."
+msgstr "Canal no trobat."
-#: ../../include/widgets.php:540
-msgid "Premium Channel Settings"
-msgstr "Ajustos Premium de Canal"
+#: ../../Zotlabs/Module/Cal.php:69
+msgid "Permissions denied."
+msgstr "Permís denegat."
-#: ../../include/widgets.php:556 ../../include/nav.php:208
-#: ../../include/apps.php:134 ../../mod/admin.php:1079
-#: ../../mod/admin.php:1279
-msgid "Settings"
-msgstr "Ajustos"
+#: ../../Zotlabs/Module/Cal.php:259 ../../Zotlabs/Module/Events.php:588
+msgid "l, F j"
+msgstr "l, F j"
-#: ../../include/widgets.php:569 ../../mod/message.php:31
-#: ../../mod/mail.php:128
-msgid "Messages"
-msgstr "Missatges"
+#: ../../Zotlabs/Module/Cal.php:308 ../../Zotlabs/Module/Events.php:637
+#: ../../include/text.php:1732
+msgid "Link to Source"
+msgstr "Enllaç a la Font"
-#: ../../include/widgets.php:572
-msgid "Check Mail"
-msgstr "Comprovar Correu"
+#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:665
+msgid "Edit Event"
+msgstr "Editar l'Esdeveniment"
-#: ../../include/widgets.php:577 ../../include/nav.php:199
-msgid "New Message"
-msgstr "Nou Missatge"
+#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:665
+msgid "Create Event"
+msgstr "Crear Esdeveniment"
-#: ../../include/widgets.php:652
-msgid "Chat Rooms"
-msgstr "Sales de Xat"
+#: ../../Zotlabs/Module/Cal.php:332 ../../Zotlabs/Module/Cal.php:339
+#: ../../Zotlabs/Module/Events.php:666 ../../Zotlabs/Module/Events.php:673
+#: ../../Zotlabs/Module/Photos.php:949
+msgid "Previous"
+msgstr "Anterior"
-#: ../../include/widgets.php:672
-msgid "Bookmarked Chatrooms"
-msgstr "Sales de Xat Favorites"
+#: ../../Zotlabs/Module/Cal.php:333 ../../Zotlabs/Module/Cal.php:340
+#: ../../Zotlabs/Module/Events.php:667 ../../Zotlabs/Module/Events.php:674
+#: ../../Zotlabs/Module/Photos.php:958 ../../Zotlabs/Module/Setup.php:267
+msgid "Next"
+msgstr "Pròxim"
-#: ../../include/widgets.php:692
-msgid "Suggested Chatrooms"
-msgstr "Sales de Xat Suggerides"
+#: ../../Zotlabs/Module/Cal.php:334 ../../Zotlabs/Module/Events.php:668
+#: ../../include/widgets.php:755
+msgid "Export"
+msgstr "Exporta"
-#: ../../include/widgets.php:819 ../../include/widgets.php:877
-msgid "photo/image"
-msgstr "foto/imatge"
+#: ../../Zotlabs/Module/Cal.php:337 ../../Zotlabs/Module/Events.php:671
+#: ../../include/widgets.php:756
+msgid "Import"
+msgstr "Importar"
-#: ../../include/widgets.php:972 ../../include/widgets.php:974
-msgid "Rate Me"
-msgstr "Valora'm"
+#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Chat.php:196
+#: ../../Zotlabs/Module/Chat.php:238 ../../Zotlabs/Module/Connect.php:98
+#: ../../Zotlabs/Module/Connedit.php:731 ../../Zotlabs/Module/Events.php:475
+#: ../../Zotlabs/Module/Events.php:672 ../../Zotlabs/Module/Group.php:85
+#: ../../Zotlabs/Module/Filestorage.php:162
+#: ../../Zotlabs/Module/Import.php:550
+#: ../../Zotlabs/Module/Import_items.php:120
+#: ../../Zotlabs/Module/Invite.php:146 ../../Zotlabs/Module/Locs.php:121
+#: ../../Zotlabs/Module/Mail.php:378 ../../Zotlabs/Module/Mood.php:139
+#: ../../Zotlabs/Module/Mitem.php:235 ../../Zotlabs/Module/Photos.php:677
+#: ../../Zotlabs/Module/Photos.php:1052 ../../Zotlabs/Module/Photos.php:1092
+#: ../../Zotlabs/Module/Photos.php:1210 ../../Zotlabs/Module/Pconfig.php:107
+#: ../../Zotlabs/Module/Pdledit.php:66 ../../Zotlabs/Module/Poke.php:186
+#: ../../Zotlabs/Module/Profiles.php:687 ../../Zotlabs/Module/Rate.php:170
+#: ../../Zotlabs/Module/Admin.php:492 ../../Zotlabs/Module/Admin.php:688
+#: ../../Zotlabs/Module/Admin.php:771 ../../Zotlabs/Module/Admin.php:1032
+#: ../../Zotlabs/Module/Admin.php:1211 ../../Zotlabs/Module/Admin.php:1421
+#: ../../Zotlabs/Module/Admin.php:1648 ../../Zotlabs/Module/Admin.php:1733
+#: ../../Zotlabs/Module/Admin.php:2116 ../../Zotlabs/Module/Appman.php:126
+#: ../../Zotlabs/Module/Settings.php:590 ../../Zotlabs/Module/Settings.php:703
+#: ../../Zotlabs/Module/Settings.php:731 ../../Zotlabs/Module/Settings.php:754
+#: ../../Zotlabs/Module/Settings.php:842
+#: ../../Zotlabs/Module/Settings.php:1034 ../../Zotlabs/Module/Setup.php:312
+#: ../../Zotlabs/Module/Setup.php:353 ../../Zotlabs/Module/Sources.php:114
+#: ../../Zotlabs/Module/Sources.php:149 ../../Zotlabs/Module/Thing.php:316
+#: ../../Zotlabs/Module/Thing.php:362 ../../Zotlabs/Module/Xchan.php:15
+#: ../../Zotlabs/Lib/ThreadItem.php:710 ../../include/widgets.php:757
+#: ../../include/widgets.php:769 ../../include/js_strings.php:22
+#: ../../view/theme/redbasic/php/config.php:99
+msgid "Submit"
+msgstr "Enviar"
-#: ../../include/widgets.php:978
-msgid "View Ratings"
-msgstr "Veure Valoracions"
+#: ../../Zotlabs/Module/Cal.php:341 ../../Zotlabs/Module/Events.php:675
+msgid "Today"
+msgstr "Avui"
-#: ../../include/widgets.php:989
-msgid "Public Hubs"
-msgstr "Concentradors Públics"
+#: ../../Zotlabs/Module/Channel.php:29 ../../Zotlabs/Module/Chat.php:25
+msgid "You must be logged in to see this page."
+msgstr "Has d'estar identificat per a veure aquesta pàgina."
-#: ../../include/event.php:22 ../../include/bb2diaspora.php:459
-msgid "l F d, Y \\@ g:i A"
-msgstr "l F d, Y \\@ g:i A"
+#: ../../Zotlabs/Module/Channel.php:41
+msgid "Posts and comments"
+msgstr "Entrades i comentaris"
-#: ../../include/event.php:30 ../../include/bb2diaspora.php:465
-msgid "Starts:"
-msgstr "Inicia:"
+#: ../../Zotlabs/Module/Channel.php:42
+msgid "Only posts"
+msgstr "Només entrades"
-#: ../../include/event.php:40 ../../include/bb2diaspora.php:473
-msgid "Finishes:"
-msgstr "Acaba:"
+#: ../../Zotlabs/Module/Channel.php:102
+msgid "Insufficient permissions. Request redirected to profile page."
+msgstr "Permisos insuficients. Petició redirigida a la pàgina del perfil."
-#: ../../include/event.php:50 ../../include/bb2diaspora.php:481
-#: ../../include/identity.php:908 ../../mod/directory.php:302
-#: ../../mod/events.php:661
-msgid "Location:"
-msgstr "Localització:"
+#: ../../Zotlabs/Module/Chat.php:181
+msgid "Room not found"
+msgstr "No s'ha trobat la sala"
-#: ../../include/event.php:535
-msgid "This event has been added to your calendar."
-msgstr "Aquest succés ha estat afegit al teu calendari."
+#: ../../Zotlabs/Module/Chat.php:197
+msgid "Leave Room"
+msgstr "Abandona la sala"
-#: ../../include/enotify.php:96
-#, php-format
-msgid "%s <!item_type!>"
-msgstr "%s <!item_type!>"
+#: ../../Zotlabs/Module/Chat.php:198
+msgid "Delete Room"
+msgstr "Esborra Sala"
-#: ../../include/enotify.php:100
-#, php-format
-msgid "[Red:Notify] New mail received at %s"
-msgstr "[Red:Notificació] Un nou missatge s'ha rebut a %s"
+#: ../../Zotlabs/Module/Chat.php:199
+msgid "I am away right now"
+msgstr "Absent"
-#: ../../include/enotify.php:102
-#, php-format
-msgid "%1$s, %2$s sent you a new private message at %3$s."
-msgstr "%1$s, %2$s t'ha enviat un nou missatge privat a %3$s."
+#: ../../Zotlabs/Module/Chat.php:200
+msgid "I am online"
+msgstr "Estic connectat/da"
-#: ../../include/enotify.php:103
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s t'ha enviat %2$s."
+#: ../../Zotlabs/Module/Chat.php:202
+msgid "Bookmark this room"
+msgstr "Fes favorit aquest xat"
-#: ../../include/enotify.php:103
-msgid "a private message"
-msgstr "un missatge privat"
+#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Mail.php:205
+#: ../../Zotlabs/Module/Mail.php:314 ../../include/conversation.php:1176
+msgid "Please enter a link URL:"
+msgstr "Si us plau entra l'enllaç URL:"
-#: ../../include/enotify.php:104
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Per favor, visita %s per a veure i/o respondre els teus missatges privats."
+#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Module/Mail.php:258
+#: ../../Zotlabs/Module/Mail.php:383 ../../Zotlabs/Lib/ThreadItem.php:722
+#: ../../include/conversation.php:1256
+msgid "Encrypt text"
+msgstr "Text encriptat"
-#: ../../include/enotify.php:158
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
-msgstr "%1$s, %2$s comentat en [zrl=%3$s]a %4$s[/zrl]"
+#: ../../Zotlabs/Module/Chat.php:207 ../../Zotlabs/Module/Editblock.php:111
+#: ../../Zotlabs/Module/Editwebpage.php:147 ../../Zotlabs/Module/Mail.php:252
+#: ../../Zotlabs/Module/Mail.php:377 ../../include/conversation.php:1143
+msgid "Insert web link"
+msgstr "Insereix enllaç web"
-#: ../../include/enotify.php:166
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
-msgstr "%1$s, %2$s comentat en [zrl=%3$s]%4$s de %5$s[/zrl]"
+#: ../../Zotlabs/Module/Chat.php:218
+msgid "Feature disabled."
+msgstr "Funcionalitat desactivada."
-#: ../../include/enotify.php:175
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s comentat en [zrl=%3$s]el teu %4$s[/zrl]"
+#: ../../Zotlabs/Module/Chat.php:232
+msgid "New Chatroom"
+msgstr "Nova sala per a Xerrar"
-#: ../../include/enotify.php:186
-#, php-format
-msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Red:Notify] Comentari a la conversa #%1$d per %2$s"
+#: ../../Zotlabs/Module/Chat.php:233
+msgid "Chatroom name"
+msgstr "Nom de la sala de xat"
-#: ../../include/enotify.php:187
-#, php-format
-msgid "%1$s, %2$s commented on an item/conversation you have been following."
-msgstr "%1$s, %2$s comentat en un article/conversa que havies estat seguint."
+#: ../../Zotlabs/Module/Chat.php:234
+msgid "Expiration of chats (minutes)"
+msgstr "Expiració dels chats (minuts)"
-#: ../../include/enotify.php:190 ../../include/enotify.php:205
-#: ../../include/enotify.php:231 ../../include/enotify.php:249
-#: ../../include/enotify.php:263
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Si us plau visita %s per veure i/o contestar a la conversa"
+#: ../../Zotlabs/Module/Chat.php:235 ../../Zotlabs/Module/Filestorage.php:153
+#: ../../Zotlabs/Module/Photos.php:671 ../../Zotlabs/Module/Photos.php:1045
+#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:359
+#: ../../include/acl_selectors.php:283
+msgid "Permissions"
+msgstr "Permisos "
-#: ../../include/enotify.php:196
+#: ../../Zotlabs/Module/Chat.php:246
#, php-format
-msgid "[Red:Notify] %s posted to your profile wall"
-msgstr "[Red:Avís] %s ha escrit una entrada al teu mur"
+msgid "%1$s's Chatrooms"
+msgstr "%1$s de Xats"
-#: ../../include/enotify.php:198
-#, php-format
-msgid "%1$s, %2$s posted to your profile wall at %3$s"
-msgstr "%1$s, %2$s ha escrit una entrada al teu mur en %3$s"
+#: ../../Zotlabs/Module/Chat.php:251
+msgid "No chatrooms available"
+msgstr "No hi ha sales de xat disponibles"
-#: ../../include/enotify.php:200
-#, php-format
-msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
-msgstr "%1$s, %2$s enviat correu a [zrl=%3$s]el teu mur[/zrl]"
+#: ../../Zotlabs/Module/Chat.php:252 ../../Zotlabs/Module/Manage.php:143
+#: ../../Zotlabs/Module/Profiles.php:778
+msgid "Create New"
+msgstr "Crear Nou"
-#: ../../include/enotify.php:224
-#, php-format
-msgid "[Red:Notify] %s tagged you"
-msgstr "[Red:Notificació] %s t'ha etiquetat"
+#: ../../Zotlabs/Module/Chat.php:255
+msgid "Expiration"
+msgstr "Expiració"
-#: ../../include/enotify.php:225
-#, php-format
-msgid "%1$s, %2$s tagged you at %3$s"
-msgstr "%1$s, %2$s t'ha etiquetat a %3$s"
+#: ../../Zotlabs/Module/Chat.php:256
+msgid "min"
+msgstr "min"
-#: ../../include/enotify.php:226
-#, php-format
-msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%3$s]t'ha etiquetat[/zrl]."
+#: ../../Zotlabs/Module/Chatsvc.php:117
+msgid "Away"
+msgstr "Absent"
-#: ../../include/enotify.php:238
-#, php-format
-msgid "[Red:Notify] %1$s poked you"
-msgstr "[Red:Avís] %1$s s'en fot de tu"
+#: ../../Zotlabs/Module/Chatsvc.php:122
+msgid "Online"
+msgstr "En connexió"
-#: ../../include/enotify.php:239
-#, php-format
-msgid "%1$s, %2$s poked you at %3$s"
-msgstr "%1$s, %2$s s'en fot de tú a %3$s"
+#: ../../Zotlabs/Module/Block.php:31 ../../Zotlabs/Module/Page.php:40
+msgid "Invalid item."
+msgstr "Article invàlid."
-#: ../../include/enotify.php:240
-#, php-format
-msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%2$s]s'en fot de tú[/zrl]."
+#: ../../Zotlabs/Module/Bookmarks.php:53
+msgid "Bookmark added"
+msgstr "Favorit afegit"
-#: ../../include/enotify.php:256
-#, php-format
-msgid "[Red:Notify] %s tagged your post"
-msgstr "[Red:Avís] %s ha etiquetat la teva entrada"
+#: ../../Zotlabs/Module/Bookmarks.php:75
+msgid "My Bookmarks"
+msgstr "Els Meus Favorits"
-#: ../../include/enotify.php:257
-#, php-format
-msgid "%1$s, %2$s tagged your post at %3$s"
-msgstr "%1$s, %2$s ha etiquetat la teva entrada a %3$s"
+#: ../../Zotlabs/Module/Bookmarks.php:86
+msgid "My Connections Bookmarks"
+msgstr "Les connexions dels meus Favorits"
-#: ../../include/enotify.php:258
-#, php-format
-msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
-msgstr "%1$s, %2$s etiquetat [zrl=%3$s]la teva entrada[/zrl]"
+#: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109
+msgid "Continue"
+msgstr "Continua"
-#: ../../include/enotify.php:270
-msgid "[Red:Notify] Introduction received"
-msgstr "[Red:Avís] Presentació rebuda"
+#: ../../Zotlabs/Module/Connect.php:90
+msgid "Premium Channel Setup"
+msgstr "Configuració de Canals Premium"
-#: ../../include/enotify.php:271
-#, php-format
-msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
-msgstr "%1$s, has rebut una nova petició de connexió de '%2$s' a %3$s"
+#: ../../Zotlabs/Module/Connect.php:92
+msgid "Enable premium channel connection restrictions"
+msgstr "Habilita les restriccions de connexió del canal premium"
-#: ../../include/enotify.php:272
-#, php-format
+#: ../../Zotlabs/Module/Connect.php:93
msgid ""
-"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
-msgstr "%1$s, has rebut [zrl=%2$s]una nova petició de connexió[/zrl] de %3$s."
-
-#: ../../include/enotify.php:276 ../../include/enotify.php:295
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "Pots visitar el seu perfil a %s"
-
-#: ../../include/enotify.php:278
-#, php-format
-msgid "Please visit %s to approve or reject the connection request."
-msgstr "Si us plau, visita %s per aprovar o rebutjar la petició de connexió."
-
-#: ../../include/enotify.php:285
-msgid "[Red:Notify] Friend suggestion received"
-msgstr "[Red:Notificació] Rebuda suggerencia d'amistat"
-
-#: ../../include/enotify.php:286
-#, php-format
-msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
-msgstr "%1$s, has rebut una suggerència d'amistat de '%2$s' a %3$s"
+"Please enter your restrictions or conditions, such as paypal receipt, usage "
+"guidelines, etc."
+msgstr "Si us plau, introdueixi les restriccions o condicions, com ara el rebut de PayPal, les pautes d'ús, etc."
-#: ../../include/enotify.php:287
-#, php-format
+#: ../../Zotlabs/Module/Connect.php:95 ../../Zotlabs/Module/Connect.php:115
msgid ""
-"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
-"%4$s."
-msgstr "%1$s, has rebut [zrl=%2$s]una suggerència d'amistat[/zrl] per %3$s de %4$s."
-
-#: ../../include/enotify.php:293
-msgid "Name:"
-msgstr "Nom:"
-
-#: ../../include/enotify.php:294
-msgid "Photo:"
-msgstr "Foto:"
-
-#: ../../include/enotify.php:297
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Per favor, visita %s per a aprovar o rebutjar la suggerencia."
-
-#: ../../include/enotify.php:508
-msgid "[Red:Notify]"
-msgstr "[Red:Notificació]"
-
-#: ../../include/message.php:18
-msgid "No recipient provided."
-msgstr "No s'ha proporcionat bústia."
+"This channel may require additional steps or acknowledgement of the "
+"following conditions prior to connecting:"
+msgstr "Aquest canal pot requerir passos addicionals o reconeixement de les següents condicions abans de connectar:"
-#: ../../include/message.php:23
-msgid "[no subject]"
-msgstr "[no subject]"
+#: ../../Zotlabs/Module/Connect.php:96
+msgid ""
+"Potential connections will then see the following text before proceeding:"
+msgstr "Connexions potencials veuran el següent text abans de continuar:"
-#: ../../include/message.php:45
-msgid "Unable to determine sender."
-msgstr "incapaç de determinar el remitent"
+#: ../../Zotlabs/Module/Connect.php:97 ../../Zotlabs/Module/Connect.php:118
+msgid ""
+"By continuing, I certify that I have complied with any instructions provided"
+" on this page."
+msgstr "En continuar, certifico que he complert amb totes les instruccions proporcionades en aquesta pàgina."
-#: ../../include/message.php:200
-msgid "Stored post could not be verified."
-msgstr "L'entrada guardada no pot ser verificada"
+#: ../../Zotlabs/Module/Connect.php:106
+msgid "(No specific instructions have been provided by the channel owner.)"
+msgstr "(No s'han proporcionat instruccions específiques pel propietari del canal.)"
-#: ../../include/diaspora.php:2148 ../../include/conversation.php:164
-#: ../../mod/like.php:394
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s agrada %2$s de %3$s"
+#: ../../Zotlabs/Module/Connect.php:114
+msgid "Restricted or Premium Channel"
+msgstr "Canal Restringit o Premium"
-#: ../../include/diaspora.php:2494
-msgid "Please choose"
-msgstr "Escull"
+#: ../../Zotlabs/Module/Connedit.php:80
+msgid "Could not access contact record."
+msgstr "No s'ha pogut accedir al llibre de contactes."
-#: ../../include/diaspora.php:2496
-msgid "Agree"
-msgstr "A favor"
+#: ../../Zotlabs/Module/Connedit.php:104
+msgid "Could not locate selected profile."
+msgstr "No s'ha trobat el perfil indicat."
-#: ../../include/diaspora.php:2498
-msgid "Disagree"
-msgstr "En contra"
+#: ../../Zotlabs/Module/Connedit.php:227
+msgid "Connection updated."
+msgstr "S'ha actualitzat la connexió."
-#: ../../include/diaspora.php:2500
-msgid "Abstain"
-msgstr "Abstenció"
+#: ../../Zotlabs/Module/Connedit.php:229
+msgid "Failed to update connection record."
+msgstr "No s'ha pogut actualitzar el registre de connexió."
-#: ../../include/follow.php:28
-msgid "Channel is blocked on this site."
-msgstr "El canal està bloquejat en aquest lloc."
+#: ../../Zotlabs/Module/Connedit.php:276
+msgid "is now connected to"
+msgstr "Ara està conectat amb"
-#: ../../include/follow.php:33
-msgid "Channel location missing."
-msgstr "Ubicació del canal perduda."
+#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Connedit.php:654
+#: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:460
+#: ../../Zotlabs/Module/Events.php:469 ../../Zotlabs/Module/Api.php:89
+#: ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Menu.php:100
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
+#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Admin.php:459
+#: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707
+msgid "No"
+msgstr "No"
-#: ../../include/follow.php:83
-msgid "Response from remote channel was incomplete."
-msgstr "La resposta del canal remot fou incompleta."
+#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Events.php:459
+#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:469
+#: ../../Zotlabs/Module/Api.php:88 ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Menu.php:100
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
+#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Admin.php:461
+#: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707
+msgid "Yes"
+msgstr "Sí"
-#: ../../include/follow.php:100
-msgid "Channel was deleted and no longer exists."
-msgstr "El canal fou esborrat i actualment no existeix."
+#: ../../Zotlabs/Module/Connedit.php:411
+msgid "Could not access address book record."
+msgstr "No puc accedir al registre del contacte"
-#: ../../include/follow.php:135 ../../include/follow.php:206
-msgid "Protocol disabled."
-msgstr "Protocol desactivat."
+#: ../../Zotlabs/Module/Connedit.php:425
+msgid "Refresh failed - channel is currently unavailable."
+msgstr "Ha fallat la recàrrega - el canal es actualment inaccesible."
-#: ../../include/follow.php:144
-msgid "Protocol blocked for this channel."
-msgstr "El protocol està bloquejat per a aquest canal."
+#: ../../Zotlabs/Module/Connedit.php:440 ../../Zotlabs/Module/Connedit.php:449
+#: ../../Zotlabs/Module/Connedit.php:458 ../../Zotlabs/Module/Connedit.php:467
+#: ../../Zotlabs/Module/Connedit.php:480
+msgid "Unable to set address book parameters."
+msgstr "No es poden ajustar els paràmetres dels contactes."
-#: ../../include/follow.php:179
-msgid "Channel discovery failed."
-msgstr "Descobriment de canal fallit."
+#: ../../Zotlabs/Module/Connedit.php:503
+msgid "Connection has been removed."
+msgstr "S'han eliminat les conexions."
-#: ../../include/follow.php:195
-msgid "local account not found."
-msgstr "compte local no trobat."
+#: ../../Zotlabs/Module/Connedit.php:519 ../../Zotlabs/Lib/Apps.php:219
+#: ../../include/nav.php:86 ../../include/conversation.php:954
+msgid "View Profile"
+msgstr "Veure Perfil"
-#: ../../include/follow.php:224
-msgid "Cannot connect to yourself."
-msgstr "No pots connectar amb tu mateix."
+#: ../../Zotlabs/Module/Connedit.php:522
+#, php-format
+msgid "View %s's profile"
+msgstr "Mostra el perfil de %s"
-#: ../../include/ItemObject.php:89 ../../include/conversation.php:667
-msgid "Private Message"
-msgstr "Missatge Privat"
+#: ../../Zotlabs/Module/Connedit.php:526
+msgid "Refresh Permissions"
+msgstr "Recarrega els Permissos"
-#: ../../include/ItemObject.php:126 ../../include/conversation.php:659
-msgid "Select"
-msgstr "Selecciona"
+#: ../../Zotlabs/Module/Connedit.php:529
+msgid "Fetch updated permissions"
+msgstr "Obté els permisos actualitzats"
-#: ../../include/ItemObject.php:130
-msgid "Save to Folder"
-msgstr "Guardar en la Carpeta"
+#: ../../Zotlabs/Module/Connedit.php:533
+msgid "Recent Activity"
+msgstr "Activitat Recent"
-#: ../../include/ItemObject.php:151
-msgid "I will attend"
-msgstr "Assistiré"
+#: ../../Zotlabs/Module/Connedit.php:536
+msgid "View recent posts and comments"
+msgstr "Mostra les entrades i comentaris recents"
-#: ../../include/ItemObject.php:151
-msgid "I will not attend"
-msgstr "No assistiré"
+#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1041
+msgid "Unblock"
+msgstr "Desbloquejat"
-#: ../../include/ItemObject.php:151
-msgid "I might attend"
-msgstr "Podria assistir"
+#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1040
+msgid "Block"
+msgstr "Bloquejat"
-#: ../../include/ItemObject.php:161
-msgid "I agree"
-msgstr "D'acord"
+#: ../../Zotlabs/Module/Connedit.php:543
+msgid "Block (or Unblock) all communications with this connection"
+msgstr "Boqueja (o Desbloqueja) les comunicacions amb aquesta connexió"
-#: ../../include/ItemObject.php:161
-msgid "I disagree"
-msgstr "En desacord"
+#: ../../Zotlabs/Module/Connedit.php:544
+msgid "This connection is blocked!"
+msgstr "Aquesta connexió està bloquejada!"
-#: ../../include/ItemObject.php:161
-msgid "I abstain"
-msgstr "M'abstinc"
+#: ../../Zotlabs/Module/Connedit.php:548
+msgid "Unignore"
+msgstr "Inhabilita"
-#: ../../include/ItemObject.php:175 ../../include/ItemObject.php:187
-#: ../../include/conversation.php:1677 ../../mod/photos.php:1015
-#: ../../mod/photos.php:1027
-msgid "View all"
-msgstr "Veure tot"
+#: ../../Zotlabs/Module/Connedit.php:548
+#: ../../Zotlabs/Module/Connections.php:277
+#: ../../Zotlabs/Module/Notifications.php:55
+msgid "Ignore"
+msgstr "Ignora"
-#: ../../include/ItemObject.php:179 ../../include/taxonomy.php:396
-#: ../../include/conversation.php:1701 ../../include/identity.php:1167
-#: ../../mod/photos.php:1019
-msgctxt "noun"
-msgid "Like"
-msgid_plural "Likes"
-msgstr[0] "Agrada"
-msgstr[1] "Agraden"
+#: ../../Zotlabs/Module/Connedit.php:551
+msgid "Ignore (or Unignore) all inbound communications from this connection"
+msgstr "Ignora (o Considera) les communicacions entrants d'aquesta connexió"
-#: ../../include/ItemObject.php:184 ../../include/conversation.php:1704
-#: ../../mod/photos.php:1024
-msgctxt "noun"
-msgid "Dislike"
-msgid_plural "Dislikes"
-msgstr[0] "Desagrada"
-msgstr[1] "Desagrada"
+#: ../../Zotlabs/Module/Connedit.php:552
+msgid "This connection is ignored!"
+msgstr "Aquesta connexió es ignorada!"
-#: ../../include/ItemObject.php:212
-msgid "Add Star"
-msgstr "Fes-lo Preferit"
+#: ../../Zotlabs/Module/Connedit.php:556
+msgid "Unarchive"
+msgstr "Desarxiva"
-#: ../../include/ItemObject.php:213
-msgid "Remove Star"
-msgstr "Treu-lo de Preferits"
+#: ../../Zotlabs/Module/Connedit.php:556
+msgid "Archive"
+msgstr "Arxiva"
-#: ../../include/ItemObject.php:214
-msgid "Toggle Star Status"
-msgstr "Canvia el Estat de la Preferència"
+#: ../../Zotlabs/Module/Connedit.php:559
+msgid ""
+"Archive (or Unarchive) this connection - mark channel dead but keep content"
+msgstr "Arxiva (o Desarxiva) aquesta connexió - Marca el canal com a mort pero manté el contingut "
-#: ../../include/ItemObject.php:218
-msgid "starred"
-msgstr "preferit"
+#: ../../Zotlabs/Module/Connedit.php:560
+msgid "This connection is archived!"
+msgstr "Aquesta connexió està arxivada!"
-#: ../../include/ItemObject.php:227 ../../include/conversation.php:674
-msgid "Message signature validated"
-msgstr "Validada la signatura del missatge"
+#: ../../Zotlabs/Module/Connedit.php:564
+msgid "Unhide"
+msgstr "Mostra"
-#: ../../include/ItemObject.php:228 ../../include/conversation.php:675
-msgid "Message signature incorrect"
-msgstr "Signatura del missatge incorrecta"
+#: ../../Zotlabs/Module/Connedit.php:564
+msgid "Hide"
+msgstr "Amaga"
-#: ../../include/ItemObject.php:236
-msgid "Add Tag"
-msgstr "Afegeix Etiqueta"
+#: ../../Zotlabs/Module/Connedit.php:567
+msgid "Hide or Unhide this connection from your other connections"
+msgstr "Amaga (o Mostra) aquesta connexió de les altres connexions teves"
-#: ../../include/ItemObject.php:254 ../../mod/photos.php:959
-msgid "I like this (toggle)"
-msgstr "M'agrada això (canvia)"
+#: ../../Zotlabs/Module/Connedit.php:568
+msgid "This connection is hidden!"
+msgstr "Aquesta connexió està amagada!"
-#: ../../include/ItemObject.php:254 ../../include/taxonomy.php:310
-msgid "like"
-msgstr "agrada"
+#: ../../Zotlabs/Module/Connedit.php:575
+msgid "Delete this connection"
+msgstr "Elimina aquesta connexió"
-#: ../../include/ItemObject.php:255 ../../mod/photos.php:960
-msgid "I don't like this (toggle)"
-msgstr "No m'agrada això (canvia)"
+#: ../../Zotlabs/Module/Connedit.php:590 ../../include/widgets.php:493
+msgid "Me"
+msgstr "Jo"
-#: ../../include/ItemObject.php:255 ../../include/taxonomy.php:311
-msgid "dislike"
-msgstr "desagrada"
+#: ../../Zotlabs/Module/Connedit.php:591 ../../include/widgets.php:494
+msgid "Family"
+msgstr "Família"
-#: ../../include/ItemObject.php:259
-msgid "Share This"
-msgstr "Comparteix Això"
+#: ../../Zotlabs/Module/Connedit.php:592 ../../Zotlabs/Module/Settings.php:342
+#: ../../Zotlabs/Module/Settings.php:346 ../../Zotlabs/Module/Settings.php:347
+#: ../../Zotlabs/Module/Settings.php:350 ../../Zotlabs/Module/Settings.php:361
+#: ../../include/widgets.php:495 ../../include/selectors.php:123
+#: ../../include/channel.php:389 ../../include/channel.php:390
+#: ../../include/channel.php:397
+msgid "Friends"
+msgstr "Amics"
-#: ../../include/ItemObject.php:259
-msgid "share"
-msgstr "comparteix"
+#: ../../Zotlabs/Module/Connedit.php:593 ../../include/widgets.php:496
+msgid "Acquaintances"
+msgstr "Coneguts"
-#: ../../include/ItemObject.php:276
-#, php-format
-msgid "%d comment"
-msgid_plural "%d comments"
-msgstr[0] "%d commentari"
-msgstr[1] "%d commentaris"
+#: ../../Zotlabs/Module/Connedit.php:594
+#: ../../Zotlabs/Module/Connections.php:92
+#: ../../Zotlabs/Module/Connections.php:107 ../../include/widgets.php:497
+msgid "All"
+msgstr "Tots"
-#: ../../include/ItemObject.php:294 ../../include/ItemObject.php:295
-#, php-format
-msgid "View %s's profile - %s"
-msgstr "Veure %s de perfil - %s"
+#: ../../Zotlabs/Module/Connedit.php:654
+msgid "Approve this connection"
+msgstr "Apccepta aquesta connexió"
-#: ../../include/ItemObject.php:298
-msgid "to"
-msgstr "a"
+#: ../../Zotlabs/Module/Connedit.php:654
+msgid "Accept connection to allow communication"
+msgstr "Accepta la connexió per permetre la comunicació"
-#: ../../include/ItemObject.php:299
-msgid "via"
-msgstr "via"
+#: ../../Zotlabs/Module/Connedit.php:659
+msgid "Set Affinity"
+msgstr "Ajusta l'Afinitat"
-#: ../../include/ItemObject.php:300
-msgid "Wall-to-Wall"
-msgstr "Mur-a-Mur"
+#: ../../Zotlabs/Module/Connedit.php:662
+msgid "Set Profile"
+msgstr "Ajusta el Perfil"
-#: ../../include/ItemObject.php:301
-msgid "via Wall-To-Wall:"
-msgstr "via Mur-a-Mur:"
+#: ../../Zotlabs/Module/Connedit.php:665
+msgid "Set Affinity & Profile"
+msgstr "Ajusta Afinitat i Perfil"
-#: ../../include/ItemObject.php:312 ../../include/conversation.php:716
-#, php-format
-msgid "from %s"
-msgstr "De %s"
+#: ../../Zotlabs/Module/Connedit.php:698
+msgid "none"
+msgstr "res"
-#: ../../include/ItemObject.php:315 ../../include/conversation.php:719
-#, php-format
-msgid "last edited: %s"
-msgstr "últim editat: %s"
+#: ../../Zotlabs/Module/Connedit.php:702 ../../include/widgets.php:614
+msgid "Connection Default Permissions"
+msgstr "Permisos per Defecte de la Connexió"
-#: ../../include/ItemObject.php:316 ../../include/conversation.php:720
+#: ../../Zotlabs/Module/Connedit.php:702 ../../include/items.php:3926
#, php-format
-msgid "Expires: %s"
-msgstr "Expira: %s"
-
-#: ../../include/ItemObject.php:337
-msgid "Save Bookmarks"
-msgstr "Guarda Favorits"
-
-#: ../../include/ItemObject.php:338
-msgid "Add to Calendar"
-msgstr "Afegeix al Calendari"
+msgid "Connection: %s"
+msgstr "Connexió: %s"
-#: ../../include/ItemObject.php:347
-msgid "Mark all seen"
-msgstr "Marca tot com ja vist"
+#: ../../Zotlabs/Module/Connedit.php:703
+msgid "Apply these permissions automatically"
+msgstr "Aplica aquests permissos automaticament"
-#: ../../include/ItemObject.php:353 ../../mod/photos.php:1145
-msgctxt "noun"
-msgid "Likes"
-msgstr "Agrada"
+#: ../../Zotlabs/Module/Connedit.php:703
+msgid "Connection requests will be approved without your interaction"
+msgstr "Les peticions de connexió seran aprovades sense la teva interacció"
-#: ../../include/ItemObject.php:354 ../../mod/photos.php:1146
-msgctxt "noun"
-msgid "Dislikes"
-msgstr "Desagrada"
+#: ../../Zotlabs/Module/Connedit.php:705
+msgid "This connection's primary address is"
+msgstr "La primera adreça d'aqueste connexió es"
-#: ../../include/ItemObject.php:359 ../../include/acl_selectors.php:249
-#: ../../mod/photos.php:1151
-msgid "Close"
-msgstr "Tanca"
+#: ../../Zotlabs/Module/Connedit.php:706
+msgid "Available locations:"
+msgstr "Localització disponible:"
-#: ../../include/ItemObject.php:364 ../../include/conversation.php:737
-#: ../../include/conversation.php:1209 ../../mod/editpost.php:123
-#: ../../mod/photos.php:962 ../../mod/editlayout.php:147
-#: ../../mod/editwebpage.php:192 ../../mod/editblock.php:149
-#: ../../mod/mail.php:241 ../../mod/mail.php:356
-msgid "Please wait"
-msgstr "Si us plau, espera"
+#: ../../Zotlabs/Module/Connedit.php:710
+msgid ""
+"The permissions indicated on this page will be applied to all new "
+"connections."
+msgstr "Els permisos indicats en aquesta pàgina seran aplicats a totes les noves connexions."
-#: ../../include/ItemObject.php:665 ../../mod/photos.php:978
-#: ../../mod/photos.php:1096
-msgid "This is you"
-msgstr "Ets tú"
+#: ../../Zotlabs/Module/Connedit.php:711
+msgid "Connection Tools"
+msgstr "Eines de Connexió"
-#: ../../include/ItemObject.php:669 ../../include/conversation.php:1181
-#: ../../mod/editpost.php:107 ../../mod/editlayout.php:134
-#: ../../mod/editwebpage.php:179 ../../mod/editblock.php:135
-msgid "Bold"
-msgstr "Negreta"
+#: ../../Zotlabs/Module/Connedit.php:713
+msgid "Slide to adjust your degree of friendship"
+msgstr "Llisca per ajustar el nivell d'amistat"
-#: ../../include/ItemObject.php:670 ../../include/conversation.php:1182
-#: ../../mod/editpost.php:108 ../../mod/editlayout.php:135
-#: ../../mod/editwebpage.php:180 ../../mod/editblock.php:136
-msgid "Italic"
-msgstr "Italica"
+#: ../../Zotlabs/Module/Connedit.php:714 ../../Zotlabs/Module/Rate.php:159
+#: ../../include/js_strings.php:20
+msgid "Rating"
+msgstr "Valora"
-#: ../../include/ItemObject.php:671 ../../include/conversation.php:1183
-#: ../../mod/editpost.php:109 ../../mod/editlayout.php:136
-#: ../../mod/editwebpage.php:181 ../../mod/editblock.php:137
-msgid "Underline"
-msgstr "Subratllat"
+#: ../../Zotlabs/Module/Connedit.php:715
+msgid "Slide to adjust your rating"
+msgstr "Llisca per ajustar la valoració"
-#: ../../include/ItemObject.php:672 ../../include/conversation.php:1184
-#: ../../mod/editpost.php:110 ../../mod/editlayout.php:137
-#: ../../mod/editwebpage.php:182 ../../mod/editblock.php:138
-msgid "Quote"
-msgstr "Cometes"
+#: ../../Zotlabs/Module/Connedit.php:716 ../../Zotlabs/Module/Connedit.php:721
+msgid "Optionally explain your rating"
+msgstr "Opcionalment pots explicar la teva valoració"
-#: ../../include/ItemObject.php:673 ../../include/conversation.php:1185
-#: ../../mod/editpost.php:111 ../../mod/editlayout.php:138
-#: ../../mod/editwebpage.php:183 ../../mod/editblock.php:139
-msgid "Code"
-msgstr "Codi"
+#: ../../Zotlabs/Module/Connedit.php:718
+msgid "Custom Filter"
+msgstr "Filtre a mida"
-#: ../../include/ItemObject.php:674
-msgid "Image"
-msgstr "Imatge"
+#: ../../Zotlabs/Module/Connedit.php:719
+msgid "Only import posts with this text"
+msgstr "Importa exclusivament entrades amb aquest text"
-#: ../../include/ItemObject.php:675
-msgid "Insert Link"
-msgstr "Insereix Enllaç"
+#: ../../Zotlabs/Module/Connedit.php:719 ../../Zotlabs/Module/Connedit.php:720
+msgid ""
+"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
+"all posts"
+msgstr "paraules una per línia o #etiquetes o /patrons/ o idioma=xx, deixar en blanc per importar totes les entrades"
-#: ../../include/ItemObject.php:676
-msgid "Video"
-msgstr "Video"
+#: ../../Zotlabs/Module/Connedit.php:720
+msgid "Do not import posts with this text"
+msgstr "No importar entrades amb aquest text"
-#: ../../include/ItemObject.php:680 ../../include/conversation.php:1236
-#: ../../mod/editpost.php:151 ../../mod/mail.php:247 ../../mod/mail.php:361
-msgid "Encrypt text"
-msgstr "Text encriptat"
+#: ../../Zotlabs/Module/Connedit.php:722
+msgid "This information is public!"
+msgstr "Aquesta informació es pública!"
-#: ../../include/Contact.php:124
-msgid "New window"
-msgstr "Nova finestra"
+#: ../../Zotlabs/Module/Connedit.php:727
+msgid "Connection Pending Approval"
+msgstr "Connexió Pendent d'Aprovació"
-#: ../../include/Contact.php:125
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Obrir la localització seleccionada en un altre finestra o pestanya del navegador"
+#: ../../Zotlabs/Module/Connedit.php:730
+msgid "inherited"
+msgstr "heretat"
-#: ../../include/Contact.php:215 ../../mod/admin.php:739
+#: ../../Zotlabs/Module/Connedit.php:732
#, php-format
-msgid "User '%s' deleted"
-msgstr "usuari '%s' esborrat"
-
-#: ../../include/bb2diaspora.php:373
-msgid "Attachments:"
-msgstr "Adjuntat:"
-
-#: ../../include/bb2diaspora.php:461
-msgid "$Projectname event notification:"
-msgstr "Notificació d'esdeveniment de $Projectname"
-
-#: ../../include/nav.php:87 ../../include/nav.php:120 ../../boot.php:1550
-msgid "Logout"
-msgstr "Desconectar"
-
-#: ../../include/nav.php:87 ../../include/nav.php:120
-msgid "End this session"
-msgstr "Finalitza aquesta sessió"
-
-#: ../../include/nav.php:90 ../../include/nav.php:151
-msgid "Home"
-msgstr "Personal"
-
-#: ../../include/nav.php:90
-msgid "Your posts and conversations"
-msgstr "Les teves entrades i converses"
-
-#: ../../include/nav.php:91 ../../include/conversation.php:942
-#: ../../mod/connedit.php:498
-msgid "View Profile"
-msgstr "Veure Perfil"
-
-#: ../../include/nav.php:91
-msgid "Your profile page"
-msgstr "La teva pàgina de perfil"
-
-#: ../../include/nav.php:93
-msgid "Edit Profiles"
-msgstr "Editar Perfils"
-
-#: ../../include/nav.php:93
-msgid "Manage/Edit profiles"
-msgstr "Gestiona/Edita perfils"
-
-#: ../../include/nav.php:95 ../../include/identity.php:880
-msgid "Edit Profile"
-msgstr "Edita Perfil"
-
-#: ../../include/nav.php:95
-msgid "Edit your profile"
-msgstr "Edita el teu perfil"
-
-#: ../../include/nav.php:97 ../../include/conversation.php:1600
-#: ../../include/apps.php:139 ../../mod/fbrowser.php:25
-msgid "Photos"
-msgstr "Fotos"
-
-#: ../../include/nav.php:97
-msgid "Your photos"
-msgstr "Les Teves Fotos"
-
-#: ../../include/nav.php:98
-msgid "Your files"
-msgstr "Els teus arxius"
-
-#: ../../include/nav.php:103 ../../include/apps.php:146
-msgid "Chat"
-msgstr "Xerrar"
+msgid ""
+"Please choose the profile you would like to display to %s when viewing your "
+"profile securely."
+msgstr "Tria el perfil que vols mostrar a %s quan es vegi el perfil segur."
-#: ../../include/nav.php:103
-msgid "Your chatrooms"
-msgstr "Les teves sales de xerrar"
+#: ../../Zotlabs/Module/Connedit.php:734
+msgid "Their Settings"
+msgstr "Els seus Ajustos"
-#: ../../include/nav.php:109 ../../include/conversation.php:1635
-#: ../../include/apps.php:129
-msgid "Bookmarks"
-msgstr "Marcadors"
+#: ../../Zotlabs/Module/Connedit.php:735
+msgid "My Settings"
+msgstr "Els Meus Ajustos"
-#: ../../include/nav.php:109
-msgid "Your bookmarks"
-msgstr "Els teus marcadors"
+#: ../../Zotlabs/Module/Connedit.php:737
+msgid "Individual Permissions"
+msgstr "Permisos Individuals"
-#: ../../include/nav.php:113 ../../include/conversation.php:1645
-#: ../../include/apps.php:136 ../../mod/webpages.php:178
-msgid "Webpages"
-msgstr "Pàgines web"
+#: ../../Zotlabs/Module/Connedit.php:738
+msgid ""
+"Some permissions may be inherited from your channel's <a "
+"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
+"priority than individual settings. You can <strong>not</strong> change those"
+" settings here."
+msgstr "Alguns permisos poden ser heretats dels teus canals <a href=\"settings\"><strong>ajustos de privacitat</strong></a>, Els quals tenen més prioritat que els ajustos individuals. <strong>No</strong> pots canviar aquests ajustos aquí."
-#: ../../include/nav.php:113
-msgid "Your webpages"
-msgstr "Les teves pàgines web"
+#: ../../Zotlabs/Module/Connedit.php:739
+msgid ""
+"Some permissions may be inherited from your channel's <a "
+"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
+"priority than individual settings. You can change those settings here but "
+"they wont have any impact unless the inherited setting changes."
+msgstr "Alguns permisos poden ser heretats dels teus canals <a href=\"settings\"><strong>ajustos de privacitat</strong></a>, Els quals tenen més prioritat que els ajustos individuals. <strong>Pots</strong> canviar aquests ajustos aquí pero no tindran cap impacte fins que no canviis els ajustos heretats."
-#: ../../include/nav.php:117 ../../include/apps.php:131 ../../boot.php:1551
-msgid "Login"
-msgstr "Identifica't"
+#: ../../Zotlabs/Module/Connedit.php:740
+msgid "Last update:"
+msgstr "Darrera actualització:"
-#: ../../include/nav.php:117
-msgid "Sign in"
-msgstr "Signatura"
+#: ../../Zotlabs/Module/Directory.php:63 ../../Zotlabs/Module/Display.php:17
+#: ../../Zotlabs/Module/Photos.php:522 ../../Zotlabs/Module/Ratings.php:86
+#: ../../Zotlabs/Module/Search.php:17
+#: ../../Zotlabs/Module/Viewconnections.php:20
+msgid "Public access denied."
+msgstr "Accés públic denegat."
-#: ../../include/nav.php:134
+#: ../../Zotlabs/Module/Directory.php:243
#, php-format
-msgid "%s - click to logout"
-msgstr "%s - click per desconectar"
-
-#: ../../include/nav.php:137
-msgid "Remote authentication"
-msgstr "Autenticació remota"
-
-#: ../../include/nav.php:137
-msgid "Click to authenticate to your home hub"
-msgstr "Click per autentificar-te en el teu Lloc "
-
-#: ../../include/nav.php:151
-msgid "Home Page"
-msgstr "Pàgina Personal"
-
-#: ../../include/nav.php:155 ../../mod/register.php:224 ../../boot.php:1527
-msgid "Register"
-msgstr "Registre"
-
-#: ../../include/nav.php:155
-msgid "Create an account"
-msgstr "Crear un compte"
+msgid "%d rating"
+msgid_plural "%d ratings"
+msgstr[0] "%d valoració"
+msgstr[1] "%d valoracions"
-#: ../../include/nav.php:160 ../../include/apps.php:142 ../../mod/help.php:67
-#: ../../mod/help.php:72 ../../mod/layouts.php:176
-msgid "Help"
-msgstr "Ajuda"
+#: ../../Zotlabs/Module/Directory.php:254
+msgid "Gender: "
+msgstr "Gènere:"
-#: ../../include/nav.php:160
-msgid "Help and documentation"
-msgstr "Ajuda i documentació"
+#: ../../Zotlabs/Module/Directory.php:256
+msgid "Status: "
+msgstr "Estatus:"
-#: ../../include/nav.php:163
-msgid "Applications, utilities, links, games"
-msgstr "Aplicacions, utilitats, enllaços, jocs"
+#: ../../Zotlabs/Module/Directory.php:258
+msgid "Homepage: "
+msgstr "Pàgina Personal:"
-#: ../../include/nav.php:165
-msgid "Search site content"
-msgstr "Cerca en el contingut del lloc"
+#: ../../Zotlabs/Module/Directory.php:306 ../../include/channel.php:1183
+msgid "Age:"
+msgstr "Edat:"
-#: ../../include/nav.php:168 ../../include/apps.php:141
-msgid "Directory"
-msgstr "Directori"
+#: ../../Zotlabs/Module/Directory.php:311 ../../include/event.php:52
+#: ../../include/event.php:84 ../../include/channel.php:1027
+#: ../../include/bb2diaspora.php:507
+msgid "Location:"
+msgstr "Localització:"
-#: ../../include/nav.php:168
-msgid "Channel Directory"
-msgstr "Directori de Canals"
+#: ../../Zotlabs/Module/Directory.php:317
+msgid "Description:"
+msgstr "Descripció:"
-#: ../../include/nav.php:180 ../../include/apps.php:133
-msgid "Matrix"
-msgstr "Matriu/Matrix"
+#: ../../Zotlabs/Module/Directory.php:322 ../../include/channel.php:1199
+msgid "Hometown:"
+msgstr "Ciutat Natal:"
-#: ../../include/nav.php:180
-msgid "Your matrix"
-msgstr "El teu matrix"
+#: ../../Zotlabs/Module/Directory.php:324 ../../include/channel.php:1207
+msgid "About:"
+msgstr "Sobre:"
-#: ../../include/nav.php:181
-msgid "Mark all matrix notifications seen"
-msgstr "Marca totes les notificacions de matrix vistes"
+#: ../../Zotlabs/Module/Directory.php:325 ../../Zotlabs/Module/Match.php:68
+#: ../../Zotlabs/Module/Suggest.php:56 ../../include/widgets.php:147
+#: ../../include/widgets.php:184 ../../include/connections.php:78
+#: ../../include/conversation.php:956 ../../include/channel.php:1012
+msgid "Connect"
+msgstr "Connecta "
-#: ../../include/nav.php:183 ../../include/apps.php:137
-msgid "Channel Home"
-msgstr "Canal Personal"
+#: ../../Zotlabs/Module/Directory.php:326
+msgid "Public Forum:"
+msgstr "Forum Públic:"
-#: ../../include/nav.php:183
-msgid "Channel home"
-msgstr "Canal personal"
+#: ../../Zotlabs/Module/Directory.php:329
+msgid "Keywords: "
+msgstr "Paraules Clau:"
-#: ../../include/nav.php:184
-msgid "Mark all channel notifications seen"
-msgstr "Marca totes les notificacions de canal vistes"
+#: ../../Zotlabs/Module/Directory.php:332
+msgid "Don't suggest"
+msgstr "No suggerir"
-#: ../../include/nav.php:187 ../../mod/connections.php:407
-msgid "Connections"
-msgstr "Connexions"
+#: ../../Zotlabs/Module/Directory.php:334
+msgid "Common connections:"
+msgstr "Connexions en comú:"
-#: ../../include/nav.php:190
-msgid "Notices"
-msgstr "Noticies"
+#: ../../Zotlabs/Module/Directory.php:383
+msgid "Global Directory"
+msgstr "Directori Global"
-#: ../../include/nav.php:190
-msgid "Notifications"
-msgstr "Notificacions"
+#: ../../Zotlabs/Module/Directory.php:383
+msgid "Local Directory"
+msgstr "Directori Local"
-#: ../../include/nav.php:191
-msgid "See all notifications"
-msgstr "Veure totes les Notificacions"
+#: ../../Zotlabs/Module/Directory.php:388
+#: ../../Zotlabs/Module/Directory.php:393
+#: ../../Zotlabs/Module/Connections.php:309
+#: ../../include/contact_widgets.php:23
+msgid "Find"
+msgstr "Troba"
-#: ../../include/nav.php:192 ../../mod/notifications.php:99
-msgid "Mark all system notifications seen"
-msgstr "Marca totes les notificacions vistes"
+#: ../../Zotlabs/Module/Directory.php:389
+msgid "Finding:"
+msgstr "Cercant:"
-#: ../../include/nav.php:194 ../../include/apps.php:143
-msgid "Mail"
-msgstr "Correu"
+#: ../../Zotlabs/Module/Directory.php:392 ../../Zotlabs/Module/Suggest.php:64
+#: ../../include/contact_widgets.php:24
+msgid "Channel Suggestions"
+msgstr "Canals Suggerits"
-#: ../../include/nav.php:194
-msgid "Private mail"
-msgstr "Correu privat"
+#: ../../Zotlabs/Module/Directory.php:394
+msgid "next page"
+msgstr "pàgina següent"
-#: ../../include/nav.php:195
-msgid "See all private messages"
-msgstr "Veure tots els missatges privats"
+#: ../../Zotlabs/Module/Directory.php:394
+msgid "previous page"
+msgstr "pàgina anterior"
-#: ../../include/nav.php:196
-msgid "Mark all private messages seen"
-msgstr "Marcar tots els missatges privats vistos"
+#: ../../Zotlabs/Module/Directory.php:395
+msgid "Sort options"
+msgstr "Opcions per ordenar"
-#: ../../include/nav.php:197
-msgid "Inbox"
-msgstr "Safata d'entrada"
+#: ../../Zotlabs/Module/Directory.php:396
+msgid "Alphabetic"
+msgstr "Alfabètic"
-#: ../../include/nav.php:198
-msgid "Outbox"
-msgstr "Safata de sortida"
+#: ../../Zotlabs/Module/Directory.php:397
+msgid "Reverse Alphabetic"
+msgstr "Alfabètic Invers"
-#: ../../include/nav.php:202 ../../include/apps.php:140
-#: ../../mod/events.php:486
-msgid "Events"
-msgstr "Events"
+#: ../../Zotlabs/Module/Directory.php:398
+msgid "Newest to Oldest"
+msgstr "De més Nou a més Vell"
-#: ../../include/nav.php:202
-msgid "Event Calendar"
-msgstr "Calendari d'Events"
+#: ../../Zotlabs/Module/Directory.php:399
+msgid "Oldest to Newest"
+msgstr "De més Antic a més Nou"
-#: ../../include/nav.php:203
-msgid "See all events"
-msgstr "Veure tots els events"
+#: ../../Zotlabs/Module/Directory.php:416
+msgid "No entries (some entries may be hidden)."
+msgstr "Sense entrades (algunes podrien estar amagades)."
-#: ../../include/nav.php:204
-msgid "Mark all events seen"
-msgstr "Marcar tots els events vistos"
+#: ../../Zotlabs/Module/Display.php:40 ../../Zotlabs/Module/Filestorage.php:33
+#: ../../Zotlabs/Module/Admin.php:164 ../../Zotlabs/Module/Admin.php:1255
+#: ../../Zotlabs/Module/Admin.php:1561 ../../Zotlabs/Module/Thing.php:89
+#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:3359
+msgid "Item not found."
+msgstr "Element no trobat."
-#: ../../include/nav.php:206 ../../include/apps.php:132
-#: ../../mod/manage.php:166
-msgid "Channel Manager"
-msgstr "Gestor del Canal"
+#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95
+#: ../../Zotlabs/Module/Editpost.php:24 ../../Zotlabs/Module/Editlayout.php:79
+#: ../../Zotlabs/Module/Editwebpage.php:81
+msgid "Item not found"
+msgstr "No s'ha trobat l'element"
-#: ../../include/nav.php:206
-msgid "Manage Your Channels"
-msgstr "Gestiona els Teus Canals"
+#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1228
+msgid "Title (optional)"
+msgstr "Títol (opcional)"
-#: ../../include/nav.php:208
-msgid "Account/Channel Settings"
-msgstr "Ajustos de Compte/Canal"
+#: ../../Zotlabs/Module/Editblock.php:133
+msgid "Edit Block"
+msgstr "Editar Bloc"
-#: ../../include/nav.php:216 ../../mod/admin.php:120
-msgid "Admin"
-msgstr "Admin"
+#: ../../Zotlabs/Module/Common.php:14
+msgid "No channel."
+msgstr "No s'ha trobat el canal"
-#: ../../include/nav.php:216
-msgid "Site Setup and Configuration"
-msgstr "Ajustos i Configuració del Lloc"
+#: ../../Zotlabs/Module/Common.php:43
+msgid "Common connections"
+msgstr "Connexions en comú"
-#: ../../include/nav.php:247 ../../include/conversation.php:850
-msgid "Loading..."
-msgstr "Carregant..."
+#: ../../Zotlabs/Module/Common.php:48
+msgid "No connections in common."
+msgstr "No hi ha connexions en comú."
-#: ../../include/nav.php:252
-msgid "@name, #tag, content"
-msgstr "@name, #tag, content"
+#: ../../Zotlabs/Module/Connections.php:56
+#: ../../Zotlabs/Module/Connections.php:161
+#: ../../Zotlabs/Module/Connections.php:242
+msgid "Blocked"
+msgstr "Bloquejades"
-#: ../../include/nav.php:253
-msgid "Please wait..."
-msgstr "Si us plau, espera......."
+#: ../../Zotlabs/Module/Connections.php:61
+#: ../../Zotlabs/Module/Connections.php:168
+#: ../../Zotlabs/Module/Connections.php:241
+msgid "Ignored"
+msgstr "Ignorades"
-#: ../../include/taxonomy.php:222 ../../include/taxonomy.php:243
-msgid "Tags"
-msgstr "Etiquetes"
+#: ../../Zotlabs/Module/Connections.php:66
+#: ../../Zotlabs/Module/Connections.php:182
+#: ../../Zotlabs/Module/Connections.php:240
+msgid "Hidden"
+msgstr "Amagades"
-#: ../../include/taxonomy.php:287
-msgid "Keywords"
-msgstr "Paraules clau"
+#: ../../Zotlabs/Module/Connections.php:71
+#: ../../Zotlabs/Module/Connections.php:175
+#: ../../Zotlabs/Module/Connections.php:239
+msgid "Archived"
+msgstr "Arxivades"
-#: ../../include/taxonomy.php:308
-msgid "have"
-msgstr "tinc"
+#: ../../Zotlabs/Module/Connections.php:76
+#: ../../Zotlabs/Module/Connections.php:86 ../../Zotlabs/Module/Menu.php:116
+#: ../../include/conversation.php:1535
+msgid "New"
+msgstr "Nou"
-#: ../../include/taxonomy.php:308
-msgid "has"
-msgstr "tens"
+#: ../../Zotlabs/Module/Connections.php:138
+msgid "New Connections"
+msgstr "Noves Connexions"
-#: ../../include/taxonomy.php:309
-msgid "want"
-msgstr "vull"
+#: ../../Zotlabs/Module/Connections.php:141
+msgid "Show pending (new) connections"
+msgstr "Mostra les connexions pendents (noves)"
-#: ../../include/taxonomy.php:309
-msgid "wants"
-msgstr "vols"
+#: ../../Zotlabs/Module/Connections.php:145
+#: ../../Zotlabs/Module/Profperm.php:144
+msgid "All Connections"
+msgstr "Totes les Connexions"
-#: ../../include/taxonomy.php:310
-msgid "likes"
-msgstr "agrada"
+#: ../../Zotlabs/Module/Connections.php:148
+msgid "Show all connections"
+msgstr "Mostra totes les connexions"
-#: ../../include/taxonomy.php:311
-msgid "dislikes"
-msgstr "desagrada"
+#: ../../Zotlabs/Module/Connections.php:164
+msgid "Only show blocked connections"
+msgstr "Mostra només les connexions bloquejades"
-#: ../../include/activities.php:39
-msgid " and "
-msgstr "i"
+#: ../../Zotlabs/Module/Connections.php:171
+msgid "Only show ignored connections"
+msgstr "Mostra només les connexions ignorades"
-#: ../../include/activities.php:47
-msgid "public profile"
-msgstr "Perfil públic"
+#: ../../Zotlabs/Module/Connections.php:178
+msgid "Only show archived connections"
+msgstr "Mostra només les connexions arxivades"
-#: ../../include/activities.php:56
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s canviat %2$s a &ldquo;%3$s&rdquo;"
+#: ../../Zotlabs/Module/Connections.php:185
+msgid "Only show hidden connections"
+msgstr "Mostra només les connexions amagades"
-#: ../../include/activities.php:57
-#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Visita %1$s de %2$s"
+#: ../../Zotlabs/Module/Connections.php:238
+msgid "Pending approval"
+msgstr "Pendent d'aprovació"
-#: ../../include/activities.php:60
+#: ../../Zotlabs/Module/Connections.php:254
#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s Ha actualitzat %2$s, canviant %3$s."
-
-#: ../../include/security.php:349
-msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "El formulario de la cadena de seguridad no era correcto. Esto probablemente ocurrió porque el formulario se ha abierto durante demasiado tiempo (> 3 horas) antes de enviarlo."
-
-#: ../../include/permissions.php:26
-msgid "Can view my normal stream and posts"
-msgstr "Pot veure el flux i entrades normals"
-
-#: ../../include/permissions.php:27
-msgid "Can view my default channel profile"
-msgstr "Pot veure el meu perfil del canal per defecte"
-
-#: ../../include/permissions.php:28
-msgid "Can view my photo albums"
-msgstr "Pot veure el meus àlbums de fotos"
-
-#: ../../include/permissions.php:29
-msgid "Can view my connections"
-msgstr "Pot veure les meves connexions"
-
-#: ../../include/permissions.php:30
-msgid "Can view my file storage"
-msgstr "Pot veure al meu magatzem d'arxius"
-
-#: ../../include/permissions.php:31
-msgid "Can view my webpages"
-msgstr "Pot veure les meves pàgines web"
-
-#: ../../include/permissions.php:34
-msgid "Can send me their channel stream and posts"
-msgstr "Pot enviar-me el flux i entrades del seu canal"
-
-#: ../../include/permissions.php:35
-msgid "Can post on my channel page (\"wall\")"
-msgstr "Pot fer entrades a la meva pàgina de canal (\"mur\")"
-
-#: ../../include/permissions.php:36
-msgid "Can comment on or like my posts"
-msgstr "Pot fer comentaris o dir si agrada en les meves entrades"
-
-#: ../../include/permissions.php:37
-msgid "Can send me private mail messages"
-msgstr "Pot enviar-me un missatge de correu privat"
-
-#: ../../include/permissions.php:38
-msgid "Can post photos to my photo albums"
-msgstr "Pot enviar fotos al meus àlbums de fotos"
-
-#: ../../include/permissions.php:39
-msgid "Can like/dislike stuff"
-msgstr "Pot dir si agrada/desagrada "
-
-#: ../../include/permissions.php:39
-msgid "Profiles and things other than posts/comments"
-msgstr "Perfils i altres coses a més d'entrades/comentaris"
+msgid "%1$s [%2$s]"
+msgstr "%1$s [%2$s]"
-#: ../../include/permissions.php:41
-msgid "Can forward to all my channel contacts via post @mentions"
-msgstr "Ho pot enviar a tots els meus contactes del canal via entrades @mencions"
+#: ../../Zotlabs/Module/Connections.php:255
+msgid "Edit connection"
+msgstr "Modifica la connexió"
-#: ../../include/permissions.php:41
-msgid "Advanced - useful for creating group forum channels"
-msgstr "Avançat - capaç de crear canals de grups de foro"
+#: ../../Zotlabs/Module/Connections.php:256
+msgid "Delete connection"
+msgstr "Elimina la connexió"
-#: ../../include/permissions.php:42
-msgid "Can chat with me (when available)"
-msgstr "Pot xatejar amb mi (si estic disponible)"
+#: ../../Zotlabs/Module/Connections.php:265
+msgid "Channel address"
+msgstr "Adreça del canal"
-#: ../../include/permissions.php:43
-msgid "Can write to my file storage"
-msgstr "Pot escriure al meu magatzem d'arxius"
+#: ../../Zotlabs/Module/Connections.php:267
+msgid "Network"
+msgstr "Xarxa"
-#: ../../include/permissions.php:44
-msgid "Can edit my webpages"
-msgstr "Pot editar les meves pàgines web"
-
-#: ../../include/permissions.php:46
-msgid "Can source my public posts in derived channels"
-msgstr "Pot mostrar l'origen de les meves entrades públiques en altres canals"
+#: ../../Zotlabs/Module/Connections.php:270 ../../Zotlabs/Module/Admin.php:710
+msgid "Status"
+msgstr "Estat"
-#: ../../include/permissions.php:46
-msgid "Somewhat advanced - very useful in open communities"
-msgstr "Quelcom avançat - molt útil en comunitats obertes"
+#: ../../Zotlabs/Module/Connections.php:272
+msgid "Connected"
+msgstr "Connectat"
-#: ../../include/permissions.php:48
-msgid "Can administer my channel resources"
-msgstr "Pot administrar els meus recursos del canal"
+#: ../../Zotlabs/Module/Connections.php:274
+msgid "Approve connection"
+msgstr "Aprovar la Connexió "
-#: ../../include/permissions.php:48
-msgid ""
-"Extremely advanced. Leave this alone unless you know what you are doing"
-msgstr "Extremadament avançat. No toquis res si no saps que estàs fent"
+#: ../../Zotlabs/Module/Connections.php:275
+#: ../../Zotlabs/Module/Admin.php:1037
+msgid "Approve"
+msgstr "Aprovat"
-#: ../../include/permissions.php:893
-msgid "Social Networking"
-msgstr "Xarxes Socials"
+#: ../../Zotlabs/Module/Connections.php:276
+msgid "Ignore connection"
+msgstr "Ignorar connexió"
-#: ../../include/permissions.php:893 ../../include/permissions.php:894
-#: ../../include/permissions.php:895
-msgid "Mostly Public"
-msgstr "Més aviat Públic"
+#: ../../Zotlabs/Module/Connections.php:278
+msgid "Recent activity"
+msgstr "Activitat recent"
-#: ../../include/permissions.php:893 ../../include/permissions.php:894
-#: ../../include/permissions.php:895
-msgid "Restricted"
-msgstr "Restringit"
+#: ../../Zotlabs/Module/Connections.php:302 ../../Zotlabs/Lib/Apps.php:208
+#: ../../include/text.php:875 ../../include/nav.php:186
+msgid "Connections"
+msgstr "Connexions"
-#: ../../include/permissions.php:893 ../../include/permissions.php:894
-msgid "Private"
-msgstr "Privat"
+#: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44
+#: ../../Zotlabs/Lib/Apps.php:228 ../../include/text.php:945
+#: ../../include/text.php:957 ../../include/nav.php:165
+#: ../../include/acl_selectors.php:276
+msgid "Search"
+msgstr "Cerca"
-#: ../../include/permissions.php:894
-msgid "Community Forum"
-msgstr "Foro de Comunitat"
+#: ../../Zotlabs/Module/Connections.php:307
+msgid "Search your connections"
+msgstr "Cerca entre les teves connexions"
-#: ../../include/permissions.php:895
-msgid "Feed Republish"
-msgstr "Republicador"
+#: ../../Zotlabs/Module/Connections.php:308
+msgid "Connections search"
+msgstr "Cerca connexions"
-#: ../../include/permissions.php:896
-msgid "Special Purpose"
-msgstr "Objectiu Especial"
+#: ../../Zotlabs/Module/Cover_photo.php:58
+#: ../../Zotlabs/Module/Profile_photo.php:79
+msgid "Image uploaded but image cropping failed."
+msgstr "S'ha pujat la imatge però no s'ha pogut retallar."
-#: ../../include/permissions.php:896
-msgid "Celebrity/Soapbox"
-msgstr "Celebritat/Faristol"
+#: ../../Zotlabs/Module/Cover_photo.php:134
+#: ../../Zotlabs/Module/Cover_photo.php:181
+msgid "Cover Photos"
+msgstr "Fotos de Portada"
-#: ../../include/permissions.php:896
-msgid "Group Repository"
-msgstr "Repositori de Grup"
+#: ../../Zotlabs/Module/Cover_photo.php:154
+#: ../../Zotlabs/Module/Profile_photo.php:133
+msgid "Image resize failed."
+msgstr "No s'ha pogut escalar la imatge."
-#: ../../include/permissions.php:897 ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
-#: ../../include/profile_selectors.php:61
-#: ../../include/profile_selectors.php:97
-msgid "Other"
-msgstr "Altres"
+#: ../../Zotlabs/Module/Cover_photo.php:168
+#: ../../Zotlabs/Module/Profile_photo.php:192 ../../include/photos.php:144
+msgid "Unable to process image"
+msgstr "incapaç de processar la imatge"
-#: ../../include/permissions.php:897
-msgid "Custom/Expert Mode"
-msgstr "Personalitzat/Mode Expert"
+#: ../../Zotlabs/Module/Cover_photo.php:192
+#: ../../Zotlabs/Module/Profile_photo.php:217
+msgid "Image upload failed."
+msgstr "La pujada de la imatge va fracassar."
-#: ../../include/conversation.php:126 ../../mod/like.php:113
-msgid "channel"
-msgstr "canal"
+#: ../../Zotlabs/Module/Cover_photo.php:210
+#: ../../Zotlabs/Module/Profile_photo.php:236
+msgid "Unable to process image."
+msgstr "Incapaç de processar l'imatge."
-#: ../../include/conversation.php:167 ../../mod/like.php:396
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr "%1$s no agrada %2$s de %3$s"
+#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4270
+msgid "female"
+msgstr "femení"
-#: ../../include/conversation.php:204
+#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4271
#, php-format
-msgid "%1$s is now connected with %2$s"
-msgstr "%1$s esta ara connectat amb %2$s"
+msgid "%1$s updated her %2$s"
+msgstr "%1$s actualitzà el seu %2$s"
-#: ../../include/conversation.php:239
-#, php-format
-msgid "%1$s poked %2$s"
-msgstr "%1$s emprenyat %2$s"
+#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4272
+msgid "male"
+msgstr "masculí"
-#: ../../include/conversation.php:260 ../../mod/mood.php:63
+#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4273
#, php-format
-msgctxt "mood"
-msgid "%1$s is %2$s"
-msgstr "%1$s es %2$s"
-
-#: ../../include/conversation.php:572 ../../mod/photos.php:996
-msgctxt "title"
-msgid "Likes"
-msgstr "Agrada"
-
-#: ../../include/conversation.php:572 ../../mod/photos.php:996
-msgctxt "title"
-msgid "Dislikes"
-msgstr "Desagrada"
-
-#: ../../include/conversation.php:573 ../../mod/photos.php:997
-msgctxt "title"
-msgid "Agree"
-msgstr "Acord"
-
-#: ../../include/conversation.php:573 ../../mod/photos.php:997
-msgctxt "title"
-msgid "Disagree"
-msgstr "Desacord"
-
-#: ../../include/conversation.php:573 ../../mod/photos.php:997
-msgctxt "title"
-msgid "Abstain"
-msgstr "Abstenirse"
-
-#: ../../include/conversation.php:574 ../../mod/photos.php:998
-msgctxt "title"
-msgid "Attending"
-msgstr "Assistint"
-
-#: ../../include/conversation.php:574 ../../mod/photos.php:998
-msgctxt "title"
-msgid "Not attending"
-msgstr "Desassistint"
-
-#: ../../include/conversation.php:574 ../../mod/photos.php:998
-msgctxt "title"
-msgid "Might attend"
-msgstr "Podrien assistir"
+msgid "%1$s updated his %2$s"
+msgstr "%1$s actualitzà el seu %2$s"
-#: ../../include/conversation.php:692
+#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4275
#, php-format
-msgid "View %s's profile @ %s"
-msgstr "Vista %s del perfil @ %s"
-
-#: ../../include/conversation.php:707
-msgid "Categories:"
-msgstr "Categories:"
-
-#: ../../include/conversation.php:708
-msgid "Filed under:"
-msgstr "Arxivar a:"
-
-#: ../../include/conversation.php:735
-msgid "View in context"
-msgstr "Veure en context"
-
-#: ../../include/conversation.php:846
-msgid "remove"
-msgstr "treu"
-
-#: ../../include/conversation.php:851
-msgid "Delete Selected Items"
-msgstr "Esborra els Articles Seleccionats"
+msgid "%1$s updated their %2$s"
+msgstr "%1$s actualitzà els seus %2$s"
-#: ../../include/conversation.php:939
-msgid "View Source"
-msgstr "Veure l'Origen"
+#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1661
+msgid "cover photo"
+msgstr "Foto de la portada"
-#: ../../include/conversation.php:940
-msgid "Follow Thread"
-msgstr "Segueix el Fil"
+#: ../../Zotlabs/Module/Cover_photo.php:303
+#: ../../Zotlabs/Module/Cover_photo.php:318
+#: ../../Zotlabs/Module/Profile_photo.php:283
+#: ../../Zotlabs/Module/Profile_photo.php:324
+msgid "Photo not available."
+msgstr "Foto no disponible."
-#: ../../include/conversation.php:941
-msgid "View Status"
-msgstr "Veure Status"
+#: ../../Zotlabs/Module/Cover_photo.php:354
+#: ../../Zotlabs/Module/Profile_photo.php:365
+msgid "Upload File:"
+msgstr "Puja Arxiu:"
-#: ../../include/conversation.php:943
-msgid "View Photos"
-msgstr "Veure Fotos"
+#: ../../Zotlabs/Module/Cover_photo.php:355
+#: ../../Zotlabs/Module/Profile_photo.php:366
+msgid "Select a profile:"
+msgstr "Tria un perfil:"
-#: ../../include/conversation.php:944
-msgid "Matrix Activity"
-msgstr "Activitat de Matrix"
+#: ../../Zotlabs/Module/Cover_photo.php:356
+msgid "Upload Cover Photo"
+msgstr "Puja Foto de Portada"
-#: ../../include/conversation.php:946
-msgid "Edit Contact"
-msgstr "Editar Contacte"
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+#: ../../Zotlabs/Module/Settings.php:985
+msgid "or"
+msgstr "o"
-#: ../../include/conversation.php:947
-msgid "Send PM"
-msgstr "Enviar MP"
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+msgid "skip this step"
+msgstr "salta aquest pas"
-#: ../../include/conversation.php:948 ../../include/apps.php:145
-msgid "Poke"
-msgstr "Emprenya"
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+msgid "select a photo from your photo albums"
+msgstr "tria una foto del teu àlbum de fotos"
-#: ../../include/conversation.php:1062
-#, php-format
-msgid "%s likes this."
-msgstr "%s agrada això."
+#: ../../Zotlabs/Module/Cover_photo.php:377
+#: ../../Zotlabs/Module/Profile_photo.php:390
+msgid "Crop Image"
+msgstr "Retalla Imatge"
-#: ../../include/conversation.php:1062
-#, php-format
-msgid "%s doesn't like this."
-msgstr "%s no agrada això."
+#: ../../Zotlabs/Module/Cover_photo.php:378
+#: ../../Zotlabs/Module/Profile_photo.php:391
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Si us plau, retalla la imatge per a una optima visualització"
-#: ../../include/conversation.php:1066
-#, php-format
-msgid "<span %1$s>%2$d people</span> like this."
-msgid_plural "<span %1$s>%2$d people</span> like this."
-msgstr[0] "<span %1$s>%2$d gent</span> agrada això."
-msgstr[1] "<span %1$s>%2$d gent</span> agrada això."
+#: ../../Zotlabs/Module/Cover_photo.php:380
+#: ../../Zotlabs/Module/Profile_photo.php:393
+msgid "Done Editing"
+msgstr "Edició Feta"
-#: ../../include/conversation.php:1068
-#, php-format
-msgid "<span %1$s>%2$d people</span> don't like this."
-msgid_plural "<span %1$s>%2$d people</span> don't like this."
-msgstr[0] "<span %1$s>%2$d gent</span> no agrada això."
-msgstr[1] "<span %1$s>%2$d gent</span> no agrada això."
+#: ../../Zotlabs/Module/Editpost.php:35
+msgid "Item is not editable"
+msgstr "Article no editable"
-#: ../../include/conversation.php:1074
-msgid "and"
-msgstr "i"
+#: ../../Zotlabs/Module/Editpost.php:106 ../../Zotlabs/Module/Rpost.php:135
+msgid "Edit post"
+msgstr "Modifica l'entrada"
-#: ../../include/conversation.php:1077
-#, php-format
-msgid ", and %d other people"
-msgid_plural ", and %d other people"
-msgstr[0] ", i %d altra gent"
-msgstr[1] ", i %d altra gent"
+#: ../../Zotlabs/Module/Events.php:26
+msgid "Calendar entries imported."
+msgstr "Entrades de Calendari importades."
-#: ../../include/conversation.php:1078
-#, php-format
-msgid "%s like this."
-msgstr "%s agrada això."
+#: ../../Zotlabs/Module/Events.php:28
+msgid "No calendar entries found."
+msgstr "No es troben entrades decalendari."
-#: ../../include/conversation.php:1078
-#, php-format
-msgid "%s don't like this."
-msgstr "%s no agrada això."
+#: ../../Zotlabs/Module/Events.php:105
+msgid "Event can not end before it has started."
+msgstr "L'esdeveniment ha de començar abans d'acabar."
-#: ../../include/conversation.php:1140
-msgid "Visible to <strong>everybody</strong>"
-msgstr "Visible a <strong>tothom</strong>"
+#: ../../Zotlabs/Module/Events.php:107 ../../Zotlabs/Module/Events.php:116
+#: ../../Zotlabs/Module/Events.php:136
+msgid "Unable to generate preview."
+msgstr "No s'ha pogut generar la vista prèvia."
-#: ../../include/conversation.php:1141 ../../mod/mail.php:174
-#: ../../mod/mail.php:289
-msgid "Please enter a link URL:"
-msgstr "Si us plau entra l'enllaç URL:"
+#: ../../Zotlabs/Module/Events.php:114
+msgid "Event title and start time are required."
+msgstr "Cal indicar l'inici i el final de l'esdeveniment."
-#: ../../include/conversation.php:1142
-msgid "Please enter a video link/URL:"
-msgstr "Si us plau entra l'enllaç/URL a un video:"
+#: ../../Zotlabs/Module/Events.php:134 ../../Zotlabs/Module/Events.php:259
+msgid "Event not found."
+msgstr "No s'ha trobat l'esdeveniment."
-#: ../../include/conversation.php:1143
-msgid "Please enter an audio link/URL:"
-msgstr "Si us plau, entra l'enllaç/URL a un audio:"
+#: ../../Zotlabs/Module/Events.php:254 ../../Zotlabs/Module/Like.php:373
+#: ../../Zotlabs/Module/Tagger.php:51 ../../include/event.php:949
+#: ../../include/text.php:1943 ../../include/conversation.php:123
+msgid "event"
+msgstr "succés"
-#: ../../include/conversation.php:1144
-msgid "Tag term:"
-msgstr "Paraula de l'Etiqueta:"
+#: ../../Zotlabs/Module/Events.php:449
+msgid "Edit event title"
+msgstr "Edita el títol d'esdeveniment"
-#: ../../include/conversation.php:1145 ../../mod/filer.php:49
-msgid "Save to Folder:"
-msgstr "Guardar en la Carpeta"
+#: ../../Zotlabs/Module/Events.php:449
+msgid "Event title"
+msgstr "Títol esdeveniment"
-#: ../../include/conversation.php:1146
-msgid "Where are you right now?"
-msgstr "On ets ara?"
+#: ../../Zotlabs/Module/Events.php:449 ../../Zotlabs/Module/Events.php:454
+#: ../../Zotlabs/Module/Profiles.php:709 ../../Zotlabs/Module/Profiles.php:713
+#: ../../Zotlabs/Module/Appman.php:115 ../../Zotlabs/Module/Appman.php:116
+#: ../../include/datetime.php:245
+msgid "Required"
+msgstr "Requerit"
-#: ../../include/conversation.php:1147 ../../mod/editpost.php:47
-#: ../../mod/mail.php:175 ../../mod/mail.php:290
-msgid "Expires YYYY-MM-DD HH:MM"
-msgstr "Expira YYYY-MM-DD HH:MM"
+#: ../../Zotlabs/Module/Events.php:451
+msgid "Categories (comma-separated list)"
+msgstr "Categories (llista separada per comes)"
-#: ../../include/conversation.php:1174 ../../mod/webpages.php:182
-#: ../../mod/blocks.php:154 ../../mod/photos.php:961 ../../mod/layouts.php:184
-msgid "Share"
-msgstr "Compartir"
+#: ../../Zotlabs/Module/Events.php:452
+msgid "Edit Category"
+msgstr "Editar Categoria"
-#: ../../include/conversation.php:1176
-msgid "Page link name"
-msgstr "Nom de la pàgina enllaçada"
+#: ../../Zotlabs/Module/Events.php:452
+msgid "Category"
+msgstr "Categoria"
-#: ../../include/conversation.php:1179
-msgid "Post as"
-msgstr "Envia com"
+#: ../../Zotlabs/Module/Events.php:455
+msgid "Edit start date and time"
+msgstr "Editar data i hora d'inici"
-#: ../../include/conversation.php:1186 ../../mod/editpost.php:112
-#: ../../mod/editlayout.php:139 ../../mod/editwebpage.php:184
-#: ../../mod/editblock.php:141 ../../mod/mail.php:238 ../../mod/mail.php:352
-msgid "Upload photo"
-msgstr "Puja foto"
+#: ../../Zotlabs/Module/Events.php:455
+msgid "Start date and time"
+msgstr "Data i hora d'inici"
-#: ../../include/conversation.php:1187
-msgid "upload photo"
-msgstr "puja foto"
+#: ../../Zotlabs/Module/Events.php:456 ../../Zotlabs/Module/Events.php:459
+msgid "Finish date and time are not known or not relevant"
+msgstr "L'ora de finalització no es coneix o es irrelevant."
-#: ../../include/conversation.php:1188 ../../mod/editpost.php:113
-#: ../../mod/editlayout.php:140 ../../mod/editwebpage.php:185
-#: ../../mod/editblock.php:142 ../../mod/mail.php:239 ../../mod/mail.php:353
-msgid "Attach file"
-msgstr "Adjunta arxiu"
+#: ../../Zotlabs/Module/Events.php:458
+msgid "Edit finish date and time"
+msgstr "Editar la data i hora de finalització"
-#: ../../include/conversation.php:1189
-msgid "attach file"
-msgstr "adjunta arxiu"
+#: ../../Zotlabs/Module/Events.php:458
+msgid "Finish date and time"
+msgstr "Data i hora de finalització"
-#: ../../include/conversation.php:1190 ../../mod/editpost.php:114
-#: ../../mod/editlayout.php:141 ../../mod/editwebpage.php:186
-#: ../../mod/editblock.php:143 ../../mod/mail.php:240 ../../mod/mail.php:354
-msgid "Insert web link"
-msgstr "Insereix enllaç web"
+#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:461
+msgid "Adjust for viewer timezone"
+msgstr "Ajusta a la zona horària del visitant."
-#: ../../include/conversation.php:1191
-msgid "web link"
-msgstr "enllaç web"
+#: ../../Zotlabs/Module/Events.php:460
+msgid ""
+"Important for events that happen in a particular place. Not practical for "
+"global holidays."
+msgstr "És important per esdeveniments locals, però pels globals no és pràctic."
-#: ../../include/conversation.php:1192
-msgid "Insert video link"
-msgstr "Insereix enllaç video"
+#: ../../Zotlabs/Module/Events.php:462
+msgid "Edit Description"
+msgstr "Editar la Descripció"
-#: ../../include/conversation.php:1193
-msgid "video link"
-msgstr "enllaç video"
+#: ../../Zotlabs/Module/Events.php:462 ../../Zotlabs/Module/Appman.php:117
+#: ../../Zotlabs/Module/Rbmark.php:101
+msgid "Description"
+msgstr "Descripció"
-#: ../../include/conversation.php:1194
-msgid "Insert audio link"
-msgstr "Insereix enllaç d'audio"
+#: ../../Zotlabs/Module/Events.php:464
+msgid "Edit Location"
+msgstr "Editar la localització"
-#: ../../include/conversation.php:1195
-msgid "audio link"
-msgstr "enllaç d'audio"
+#: ../../Zotlabs/Module/Events.php:464 ../../Zotlabs/Module/Locs.php:117
+#: ../../Zotlabs/Module/Profiles.php:477 ../../Zotlabs/Module/Profiles.php:698
+#: ../../Zotlabs/Module/Pubsites.php:41 ../../include/js_strings.php:25
+msgid "Location"
+msgstr "Localització"
-#: ../../include/conversation.php:1196 ../../mod/editpost.php:118
-#: ../../mod/editlayout.php:145 ../../mod/editwebpage.php:190
-#: ../../mod/editblock.php:147
-msgid "Set your location"
-msgstr "Ajusta la teva ubicació"
+#: ../../Zotlabs/Module/Events.php:467 ../../Zotlabs/Module/Events.php:469
+msgid "Share this event"
+msgstr "Comparteix aquest esdeveniment"
-#: ../../include/conversation.php:1197
-msgid "set location"
-msgstr "ajusta localització"
+#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Photos.php:1093
+#: ../../Zotlabs/Module/Webpages.php:194 ../../Zotlabs/Lib/ThreadItem.php:719
+#: ../../include/conversation.php:1187 ../../include/page_widgets.php:40
+msgid "Preview"
+msgstr "Avanç"
-#: ../../include/conversation.php:1198 ../../mod/editpost.php:120
-msgid "Toggle voting"
-msgstr "Commutar votació"
+#: ../../Zotlabs/Module/Events.php:471 ../../include/conversation.php:1232
+msgid "Permission settings"
+msgstr "Ajustos de permisos"
-#: ../../include/conversation.php:1201 ../../mod/editpost.php:119
-#: ../../mod/editlayout.php:146 ../../mod/editwebpage.php:191
-#: ../../mod/editblock.php:148
-msgid "Clear browser location"
-msgstr "Treu la localització del navegador"
+#: ../../Zotlabs/Module/Events.php:476
+msgid "Advanced Options"
+msgstr "Opcions Avançades"
-#: ../../include/conversation.php:1202
-msgid "clear location"
-msgstr "treu localització"
+#: ../../Zotlabs/Module/Events.php:610
+msgid "Edit event"
+msgstr "Edita l'esdeveniment"
-#: ../../include/conversation.php:1204 ../../mod/editpost.php:135
-#: ../../mod/editwebpage.php:207 ../../mod/editblock.php:161
-msgid "Title (optional)"
-msgstr "Títol (opcional)"
+#: ../../Zotlabs/Module/Events.php:612
+msgid "Delete event"
+msgstr "Esborra l'esdeveniment"
-#: ../../include/conversation.php:1208 ../../mod/editpost.php:137
-#: ../../mod/editlayout.php:162 ../../mod/editwebpage.php:209
-#: ../../mod/editblock.php:164
-msgid "Categories (optional, comma-separated list)"
-msgstr "Categories (opcional, llista separada per comes)"
+#: ../../Zotlabs/Module/Events.php:646
+msgid "calendar"
+msgstr "calendari"
-#: ../../include/conversation.php:1210 ../../mod/editpost.php:124
-#: ../../mod/editlayout.php:148 ../../mod/editwebpage.php:193
-#: ../../mod/editblock.php:150
-msgid "Permission settings"
-msgstr "Ajustos de permisos"
+#: ../../Zotlabs/Module/Events.php:706
+msgid "Event removed"
+msgstr "S'ha eliminat l'esdeveniment"
-#: ../../include/conversation.php:1211
-msgid "permissions"
-msgstr "permisos "
-
-#: ../../include/conversation.php:1219 ../../mod/editpost.php:132
-#: ../../mod/editlayout.php:155 ../../mod/editwebpage.php:202
-#: ../../mod/editblock.php:158
-msgid "Public post"
-msgstr "Entrada pública"
-
-#: ../../include/conversation.php:1221 ../../mod/editpost.php:138
-#: ../../mod/editlayout.php:163 ../../mod/editwebpage.php:210
-#: ../../mod/editblock.php:165
-msgid "Example: bob@example.com, mary@example.com"
-msgstr "Exemple: bob@example.com, mary@example.com"
-
-#: ../../include/conversation.php:1234 ../../mod/editpost.php:149
-#: ../../mod/editlayout.php:172 ../../mod/editwebpage.php:219
-#: ../../mod/editblock.php:175 ../../mod/mail.php:245 ../../mod/mail.php:359
-msgid "Set expiration date"
-msgstr "Ajusta la data d'expiració"
+#: ../../Zotlabs/Module/Events.php:709
+msgid "Failed to remove event"
+msgstr "No s'ha pogut esborrar l'esdeveniment"
-#: ../../include/conversation.php:1238 ../../mod/events.php:651
-#: ../../mod/editpost.php:153
-msgid "OK"
-msgstr "OK"
+#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:220
+#: ../../include/nav.php:92 ../../include/conversation.php:1632
+msgid "Photos"
+msgstr "Fotos"
-#: ../../include/conversation.php:1239 ../../mod/tagrm.php:11
-#: ../../mod/tagrm.php:134 ../../mod/events.php:650 ../../mod/fbrowser.php:82
-#: ../../mod/fbrowser.php:117 ../../mod/editpost.php:154
-#: ../../mod/settings.php:589 ../../mod/settings.php:615
+#: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88
+#: ../../Zotlabs/Module/Admin.php:1406 ../../Zotlabs/Module/Settings.php:591
+#: ../../Zotlabs/Module/Settings.php:617 ../../Zotlabs/Module/Tagrm.php:15
+#: ../../Zotlabs/Module/Tagrm.php:138 ../../include/conversation.php:1259
msgid "Cancel"
msgstr "Cancel·la"
-#: ../../include/conversation.php:1481
-msgid "Discover"
-msgstr "Descobrir"
+#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49
+msgid "This site is not a directory server"
+msgstr "Aquest lloc web no és un servidor de directori"
-#: ../../include/conversation.php:1484
-msgid "Imported public streams"
-msgstr "Importar fluxos públics"
+#: ../../Zotlabs/Module/Dirsearch.php:33
+msgid "This directory server requires an access token"
+msgstr "Aquest servidor de directori requereix un token de accès"
-#: ../../include/conversation.php:1489
-msgid "Commented Order"
-msgstr "Ordre per Comentaris"
+#: ../../Zotlabs/Module/Filer.php:52
+msgid "Save to Folder:"
+msgstr "Guardar en la Carpeta"
-#: ../../include/conversation.php:1492
-msgid "Sort by Comment Date"
-msgstr "Ordenar per Data del Comentari"
+#: ../../Zotlabs/Module/Filer.php:52
+msgid "- select -"
+msgstr "- selecciona -"
-#: ../../include/conversation.php:1496
-msgid "Posted Order"
-msgstr "Ordenar per Entrades"
+#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Admin.php:2033
+#: ../../Zotlabs/Module/Admin.php:2053 ../../Zotlabs/Module/Rbmark.php:32
+#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/text.php:946
+#: ../../include/text.php:958 ../../include/widgets.php:201
+msgid "Save"
+msgstr "Guardar"
-#: ../../include/conversation.php:1499
-msgid "Sort by Post Date"
-msgstr "Ordenar per Data d' Entrada"
+#: ../../Zotlabs/Module/Dreport.php:27
+msgid "Invalid message"
+msgstr "Missatge invàlid."
-#: ../../include/conversation.php:1507
-msgid "Posts that mention or involve you"
-msgstr "Entrades que et mencionen o involucren"
+#: ../../Zotlabs/Module/Dreport.php:59
+msgid "no results"
+msgstr "sense resultats"
-#: ../../include/conversation.php:1513 ../../mod/connections.php:212
-#: ../../mod/connections.php:225 ../../mod/menu.php:107
-msgid "New"
-msgstr "Nou"
+#: ../../Zotlabs/Module/Dreport.php:64
+#, php-format
+msgid "Delivery report for %1$s"
+msgstr "Informe de lliurament per %1$s"
-#: ../../include/conversation.php:1516
-msgid "Activity Stream - by date"
-msgstr "Activitat del Flux - per data"
+#: ../../Zotlabs/Module/Dreport.php:78
+msgid "channel sync processed"
+msgstr "sincronització del canal processada"
-#: ../../include/conversation.php:1522
-msgid "Starred"
-msgstr "Preferit"
+#: ../../Zotlabs/Module/Dreport.php:82
+msgid "queued"
+msgstr "Posat en cua"
-#: ../../include/conversation.php:1525
-msgid "Favourite Posts"
-msgstr "Entrades Favorites"
+#: ../../Zotlabs/Module/Dreport.php:86
+msgid "posted"
+msgstr "enviat"
-#: ../../include/conversation.php:1532
-msgid "Spam"
-msgstr "Spam"
+#: ../../Zotlabs/Module/Dreport.php:90
+msgid "accepted for delivery"
+msgstr "acceptat per entregar"
-#: ../../include/conversation.php:1535
-msgid "Posts flagged as SPAM"
-msgstr "Entrades marcades com a SPAM"
+#: ../../Zotlabs/Module/Dreport.php:94
+msgid "updated"
+msgstr "actualitzat"
-#: ../../include/conversation.php:1579 ../../mod/admin.php:993
-msgid "Channel"
-msgstr "Canal"
+#: ../../Zotlabs/Module/Dreport.php:97
+msgid "update ignored"
+msgstr "actualització ignorada"
-#: ../../include/conversation.php:1582
-msgid "Status Messages and Posts"
-msgstr "Estat dels Missatges i Entrades"
+#: ../../Zotlabs/Module/Dreport.php:100
+msgid "permission denied"
+msgstr "permís denegat"
-#: ../../include/conversation.php:1591
-msgid "About"
-msgstr "Sobre això"
+#: ../../Zotlabs/Module/Dreport.php:104
+msgid "recipient not found"
+msgstr "Contenidor no trobat"
-#: ../../include/conversation.php:1594
-msgid "Profile Details"
-msgstr "Detalls del Perfil"
+#: ../../Zotlabs/Module/Dreport.php:107
+msgid "mail recalled"
+msgstr "Recupera el correu"
-#: ../../include/conversation.php:1603 ../../include/photos.php:359
-msgid "Photo Albums"
-msgstr "Albums de Fotos"
+#: ../../Zotlabs/Module/Dreport.php:110
+msgid "duplicate mail received"
+msgstr "rebut correu duplicat"
-#: ../../include/conversation.php:1612
-msgid "Files and Storage"
-msgstr "Arxius i Emmagatzegament"
+#: ../../Zotlabs/Module/Dreport.php:113
+msgid "mail delivered"
+msgstr "correu entregat"
-#: ../../include/conversation.php:1622 ../../include/conversation.php:1625
-msgid "Chatrooms"
-msgstr "Sala per Xerrar"
-
-#: ../../include/conversation.php:1638
-msgid "Saved Bookmarks"
-msgstr "Marcadors Guardats"
+#: ../../Zotlabs/Module/Editlayout.php:126
+#: ../../Zotlabs/Module/Layouts.php:127 ../../Zotlabs/Module/Layouts.php:186
+msgid "Layout Name"
+msgstr "Nom del Format Gràfic"
-#: ../../include/conversation.php:1648
-msgid "Manage Webpages"
-msgstr "Gestió de Pàgines Web"
+#: ../../Zotlabs/Module/Editlayout.php:127
+#: ../../Zotlabs/Module/Layouts.php:130
+msgid "Layout Description (Optional)"
+msgstr "Descripció del Format (Opcional)"
-#: ../../include/conversation.php:1707
-msgctxt "noun"
-msgid "Attending"
-msgid_plural "Attending"
-msgstr[0] "Assistint"
-msgstr[1] "Assistint"
+#: ../../Zotlabs/Module/Editlayout.php:135
+msgid "Edit Layout"
+msgstr "Edita Format Gràfic"
-#: ../../include/conversation.php:1710
-msgctxt "noun"
-msgid "Not Attending"
-msgid_plural "Not Attending"
-msgstr[0] "Desassistint"
-msgstr[1] "Desassistint"
+#: ../../Zotlabs/Module/Editwebpage.php:143
+msgid "Page link"
+msgstr "Enllaç de la pàgina"
-#: ../../include/conversation.php:1713
-msgctxt "noun"
-msgid "Undecided"
-msgid_plural "Undecided"
-msgstr[0] "Indecís"
-msgstr[1] "Indecisos"
+#: ../../Zotlabs/Module/Editwebpage.php:169
+msgid "Edit Webpage"
+msgstr "Edita la Pàgina Web"
-#: ../../include/conversation.php:1716
-msgctxt "noun"
-msgid "Agree"
-msgid_plural "Agrees"
-msgstr[0] "Acord"
-msgstr[1] "Acords"
+#: ../../Zotlabs/Module/Follow.php:34
+msgid "Channel added."
+msgstr "S'ha afegit el canal."
-#: ../../include/conversation.php:1719
-msgctxt "noun"
-msgid "Disagree"
-msgid_plural "Disagrees"
-msgstr[0] "Desacord"
-msgstr[1] "Desacords"
+#: ../../Zotlabs/Module/Acl.php:227
+msgid "network"
+msgstr "xarxa"
-#: ../../include/conversation.php:1722
-msgctxt "noun"
-msgid "Abstain"
-msgid_plural "Abstains"
-msgstr[0] "Abstenirse"
-msgstr[1] "Abstenirse"
+#: ../../Zotlabs/Module/Acl.php:237
+msgid "RSS"
+msgstr "RSS"
-#: ../../include/items.php:413 ../../mod/like.php:270
-#: ../../mod/subthread.php:49 ../../mod/group.php:68 ../../mod/profperm.php:23
-#: ../../mod/bulksetclose.php:11 ../../index.php:392
-msgid "Permission denied"
-msgstr "Permís denegat"
+#: ../../Zotlabs/Module/Group.php:24
+msgid "Privacy group created."
+msgstr "Creat grup privat."
-#: ../../include/items.php:1035 ../../include/items.php:1081
-msgid "(Unknown)"
-msgstr "(Desconegut)"
+#: ../../Zotlabs/Module/Group.php:30
+msgid "Could not create privacy group."
+msgstr "No es pot crear el grup privat."
-#: ../../include/items.php:1307
-msgid "Visible to anybody on the internet."
-msgstr "Visible per tothom a la Internet"
+#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141
+#: ../../include/items.php:3893
+msgid "Privacy group not found."
+msgstr "No es troben grups privats."
-#: ../../include/items.php:1309
-msgid "Visible to you only."
-msgstr "Visible només per tú."
+#: ../../Zotlabs/Module/Group.php:58
+msgid "Privacy group updated."
+msgstr "Grup privat actualitzat."
-#: ../../include/items.php:1311
-msgid "Visible to anybody in this network."
-msgstr "Visible per tothom en aquesta xarxa."
+#: ../../Zotlabs/Module/Group.php:90
+msgid "Create a group of channels."
+msgstr "Crear un grup de canals."
-#: ../../include/items.php:1313
-msgid "Visible to anybody authenticated."
-msgstr "Visible per tothom autenticat."
+#: ../../Zotlabs/Module/Group.php:91 ../../Zotlabs/Module/Group.php:184
+msgid "Privacy group name: "
+msgstr "Nom del grup privat:"
-#: ../../include/items.php:1315
-#, php-format
-msgid "Visible to anybody on %s."
-msgstr "Visible per a tothom a %s."
+#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Group.php:187
+msgid "Members are visible to other channels"
+msgstr "Els membres son visibles en altres canals"
-#: ../../include/items.php:1317
-msgid "Visible to all connections."
-msgstr "Visible per a totes les connexions."
+#: ../../Zotlabs/Module/Group.php:111
+msgid "Privacy group removed."
+msgstr "Grup privat eliminat."
-#: ../../include/items.php:1319
-msgid "Visible to approved connections."
-msgstr "Visible per a les connexions aprovades."
+#: ../../Zotlabs/Module/Group.php:113
+msgid "Unable to remove privacy group."
+msgstr "No puc eliminar el grup privat."
-#: ../../include/items.php:1321
-msgid "Visible to specific connections."
-msgstr "Visible per a específiques connexions."
+#: ../../Zotlabs/Module/Group.php:183
+msgid "Privacy group editor"
+msgstr "Editor del grup privat"
-#: ../../include/items.php:4215 ../../mod/thing.php:74
-#: ../../mod/filestorage.php:27 ../../mod/viewsrc.php:20
-#: ../../mod/admin.php:167 ../../mod/admin.php:1025 ../../mod/admin.php:1225
-#: ../../mod/display.php:36
-msgid "Item not found."
-msgstr "Element no trobat."
+#: ../../Zotlabs/Module/Group.php:197
+msgid "Members"
+msgstr "Membres"
-#: ../../include/items.php:4288 ../../include/attach.php:137
-#: ../../include/attach.php:184 ../../include/attach.php:247
-#: ../../include/attach.php:261 ../../include/attach.php:305
-#: ../../include/attach.php:319 ../../include/attach.php:350
-#: ../../include/attach.php:546 ../../include/attach.php:618
-#: ../../include/chat.php:131 ../../include/photos.php:26
-#: ../../mod/profile.php:64 ../../mod/profile.php:72
-#: ../../mod/achievements.php:30 ../../mod/manage.php:6 ../../mod/api.php:26
-#: ../../mod/api.php:31 ../../mod/webpages.php:69 ../../mod/thing.php:241
-#: ../../mod/thing.php:256 ../../mod/thing.php:290
-#: ../../mod/profile_photo.php:264 ../../mod/profile_photo.php:277
-#: ../../mod/block.php:22 ../../mod/block.php:72 ../../mod/like.php:178
-#: ../../mod/events.php:232 ../../mod/group.php:9 ../../mod/item.php:206
-#: ../../mod/item.php:214 ../../mod/item.php:978 ../../mod/network.php:12
-#: ../../mod/common.php:35 ../../mod/connections.php:169
-#: ../../mod/blocks.php:69 ../../mod/blocks.php:76 ../../mod/editpost.php:13
-#: ../../mod/photos.php:69 ../../mod/pdledit.php:21 ../../mod/authtest.php:13
-#: ../../mod/editlayout.php:63 ../../mod/editlayout.php:87
-#: ../../mod/chat.php:90 ../../mod/chat.php:95 ../../mod/mitem.php:109
-#: ../../mod/editwebpage.php:64 ../../mod/editwebpage.php:86
-#: ../../mod/editwebpage.php:101 ../../mod/editwebpage.php:125
-#: ../../mod/rate.php:110 ../../mod/editblock.php:65 ../../mod/invite.php:13
-#: ../../mod/invite.php:104 ../../mod/locs.php:77 ../../mod/sources.php:66
-#: ../../mod/menu.php:69 ../../mod/filestorage.php:18
-#: ../../mod/filestorage.php:73 ../../mod/filestorage.php:88
-#: ../../mod/filestorage.php:115 ../../mod/fsuggest.php:78
-#: ../../mod/poke.php:128 ../../mod/profiles.php:188
-#: ../../mod/profiles.php:576 ../../mod/viewsrc.php:14 ../../mod/setup.php:223
-#: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27
-#: ../../mod/register.php:72 ../../mod/settings.php:570 ../../mod/id.php:71
-#: ../../mod/message.php:16 ../../mod/mood.php:111 ../../mod/connedit.php:336
-#: ../../mod/mail.php:114 ../../mod/notifications.php:66
-#: ../../mod/regmod.php:17 ../../mod/new_channel.php:68
-#: ../../mod/new_channel.php:99 ../../mod/appman.php:66
-#: ../../mod/layouts.php:69 ../../mod/layouts.php:76 ../../mod/layouts.php:87
-#: ../../mod/page.php:31 ../../mod/page.php:86 ../../mod/bookmarks.php:46
-#: ../../mod/channel.php:100 ../../mod/channel.php:219
-#: ../../mod/channel.php:262 ../../mod/suggest.php:26
-#: ../../mod/service_limits.php:7 ../../mod/sharedwithme.php:7
-#: ../../index.php:182 ../../index.php:393
-msgid "Permission denied."
-msgstr "Permís denegat."
+#: ../../Zotlabs/Module/Group.php:199
+msgid "All Connected Channels"
+msgstr "Tots els Canals Connectats"
-#: ../../include/items.php:4690 ../../mod/group.php:38 ../../mod/group.php:140
-#: ../../mod/bulksetclose.php:51
-msgid "Collection not found."
-msgstr "Col·lecció no trobada."
+#: ../../Zotlabs/Module/Group.php:231
+msgid "Click on a channel to add or remove."
+msgstr "Clic sobre el canal per afegir o esborrar."
-#: ../../include/items.php:4706
-msgid "Collection is empty."
-msgstr "La col·lecció esta buida."
+#: ../../Zotlabs/Module/Ffsapi.php:12
+msgid "Share content from Firefox to $Projectname"
+msgstr "Compartir contingut des de Firefox a $Projectname"
-#: ../../include/items.php:4713
-#, php-format
-msgid "Collection: %s"
-msgstr "Col·lecció: %s"
+#: ../../Zotlabs/Module/Ffsapi.php:15
+msgid "Activate the Firefox $Projectname provider"
+msgstr "Activar el proveïdor de $Projectname a Firefox"
-#: ../../include/items.php:4723 ../../mod/connedit.php:662
-#, php-format
-msgid "Connection: %s"
-msgstr "Connexió: %s"
+#: ../../Zotlabs/Module/Api.php:61 ../../Zotlabs/Module/Api.php:85
+msgid "Authorize application connection"
+msgstr "Autoritza la connexió de l'aplicació"
-#: ../../include/items.php:4725
-msgid "Connection not found."
-msgstr "Connexió no trobada."
+#: ../../Zotlabs/Module/Api.php:62
+msgid "Return to your app and insert this Securty Code:"
+msgstr "Torna a la teva aplicació i insereix aquest Codi de Seguretat:"
-#: ../../include/zot.php:666
-msgid "Invalid data packet"
-msgstr "paquet de dades invàlid"
+#: ../../Zotlabs/Module/Api.php:72
+msgid "Please login to continue."
+msgstr "Si et plau, identifica't per continuar."
-#: ../../include/zot.php:682
-msgid "Unable to verify channel signature"
-msgstr "No es pot verificar la signatura del canal"
+#: ../../Zotlabs/Module/Api.php:87
+msgid ""
+"Do you want to authorize this application to access your posts and contacts,"
+" and/or create new posts for you?"
+msgstr "Vols autoritzar a aquesta aplicació l'accés a les teves entrades i contactes i/o a crear noves entrades com si fos tu mateix."
-#: ../../include/zot.php:2132
-#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "No es pot verificar la signatura del lloc per %s"
+#: ../../Zotlabs/Module/Help.php:26
+msgid "Documentation Search"
+msgstr "Cerca de Documentació"
-#: ../../include/oembed.php:183
-msgid "Embedded content"
-msgstr "Contingut embegut"
+#: ../../Zotlabs/Module/Help.php:67 ../../Zotlabs/Module/Help.php:73
+#: ../../Zotlabs/Module/Help.php:79
+msgid "Help:"
+msgstr "Ajuda:"
-#: ../../include/oembed.php:192
-msgid "Embedding disabled"
-msgstr "Incorporació desactivada"
+#: ../../Zotlabs/Module/Help.php:85 ../../Zotlabs/Module/Help.php:90
+#: ../../Zotlabs/Module/Layouts.php:183 ../../Zotlabs/Lib/Apps.php:223
+#: ../../include/nav.php:159
+msgid "Help"
+msgstr "Ajuda"
-#: ../../include/auth.php:131
-msgid "Logged out."
-msgstr "Sortir."
+#: ../../Zotlabs/Module/Help.php:120
+msgid "$Projectname Documentation"
+msgstr "$Projectname Documentació"
-#: ../../include/auth.php:272
-msgid "Failed authentication"
-msgstr "Autenticació fallida"
+#: ../../Zotlabs/Module/Filestorage.php:88
+msgid "Permission Denied."
+msgstr "Permisos Denegats."
-#: ../../include/auth.php:286 ../../mod/openid.php:190
-msgid "Login failed."
-msgstr "Identificació fallida."
+#: ../../Zotlabs/Module/Filestorage.php:104
+msgid "File not found."
+msgstr "Arxiu no torbat."
-#: ../../include/contact_widgets.php:14
-#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "%d invitació disponible"
-msgstr[1] "%d invitacions disponibles"
+#: ../../Zotlabs/Module/Filestorage.php:147
+msgid "Edit file permissions"
+msgstr "Edita els permisos d'arxiu"
-#: ../../include/contact_widgets.php:19 ../../mod/admin.php:457
-msgid "Advanced"
-msgstr "Avançat"
+#: ../../Zotlabs/Module/Filestorage.php:156
+msgid "Set/edit permissions"
+msgstr "Canvia/edita permisos"
-#: ../../include/contact_widgets.php:22
-msgid "Find Channels"
-msgstr "Troba Canals"
+#: ../../Zotlabs/Module/Filestorage.php:157
+msgid "Include all files and sub folders"
+msgstr "Inclou tots als arxius i subdirectoris"
-#: ../../include/contact_widgets.php:23
-msgid "Enter name or interest"
-msgstr "Entra un nom o interes"
+#: ../../Zotlabs/Module/Filestorage.php:158
+msgid "Return to file list"
+msgstr "Tornar al llistat d'arxius"
-#: ../../include/contact_widgets.php:24
-msgid "Connect/Follow"
-msgstr "Conecta/Segueix"
+#: ../../Zotlabs/Module/Filestorage.php:160
+msgid "Copy/paste this code to attach file to a post"
+msgstr "Copia/enganxa aquest codi per a adjuntar un arxiu a l'entrada"
-#: ../../include/contact_widgets.php:25
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Exemples: Lionel Messi, Futbolista"
+#: ../../Zotlabs/Module/Filestorage.php:161
+msgid "Copy/paste this URL to link file from a web page"
+msgstr "Copia/enganxa aquesta URL per a enllaçar l'arxiu d'una pàgina web"
-#: ../../include/contact_widgets.php:26 ../../mod/directory.php:379
-#: ../../mod/directory.php:384 ../../mod/connections.php:413
-msgid "Find"
-msgstr "Troba"
+#: ../../Zotlabs/Module/Filestorage.php:163
+msgid "Share this file"
+msgstr "Comparteix l'arxiu"
-#: ../../include/contact_widgets.php:27 ../../mod/directory.php:383
-#: ../../mod/suggest.php:60
-msgid "Channel Suggestions"
-msgstr "Canals Suggerits"
+#: ../../Zotlabs/Module/Filestorage.php:164
+msgid "Show URL to this file"
+msgstr "Mostra la URL d'aquest arxiu"
-#: ../../include/contact_widgets.php:29
-msgid "Random Profile"
-msgstr "Perfil Aleatori"
+#: ../../Zotlabs/Module/Filestorage.php:165
+msgid "Notify your contacts about this file"
+msgstr "Notifica als teus contactes aquest arxiu"
-#: ../../include/contact_widgets.php:30
-msgid "Invite Friends"
-msgstr "Convida Amics"
+#: ../../Zotlabs/Module/Apps.php:47 ../../include/widgets.php:102
+#: ../../include/nav.php:163
+msgid "Apps"
+msgstr "Aplicatius"
-#: ../../include/contact_widgets.php:32
-msgid "Advanced example: name=fred and country=iceland"
-msgstr "Exemple avançat: nom=pep i pais=eire"
+#: ../../Zotlabs/Module/Attach.php:13
+msgid "Item not available."
+msgstr "Article no disponible."
-#: ../../include/contact_widgets.php:125
+#: ../../Zotlabs/Module/Import.php:32
#, php-format
-msgid "%d connection in common"
-msgid_plural "%d connections in common"
-msgstr[0] "%d connexió en comú"
-msgstr[1] "%d connexions en comú"
-
-#: ../../include/contact_widgets.php:130
-msgid "show more"
-msgstr "mostrar més"
-
-#: ../../include/acl_selectors.php:240
-msgid "Visible to your default audience"
-msgstr "Visible per a la teva audiència "
-
-#: ../../include/acl_selectors.php:241
-msgid "Show"
-msgstr "Mostra"
-
-#: ../../include/acl_selectors.php:242
-msgid "Don't show"
-msgstr "No mostrar"
-
-#: ../../include/acl_selectors.php:248 ../../mod/events.php:668
-#: ../../mod/photos.php:571 ../../mod/photos.php:934 ../../mod/chat.php:209
-#: ../../mod/filestorage.php:147
-msgid "Permissions"
-msgstr "Permisos "
-
-#: ../../include/attach.php:242 ../../include/attach.php:300
-msgid "Item was not found."
-msgstr "Article no trobat."
-
-#: ../../include/attach.php:363
-msgid "No source file."
-msgstr "No hi ha arxiu d'origen."
+msgid "Your service plan only allows %d channels."
+msgstr "El teu paquet de serveis només admet %d canals."
-#: ../../include/attach.php:381
-msgid "Cannot locate file to replace"
-msgstr "No trobo l'arxiu a reemplaçar"
+#: ../../Zotlabs/Module/Import.php:70 ../../Zotlabs/Module/Import_items.php:42
+msgid "Nothing to import."
+msgstr "No hi ha res a importar."
-#: ../../include/attach.php:399
-msgid "Cannot locate file to revise/update"
-msgstr "No trobo l'arxiu a revisar/actualitzar"
+#: ../../Zotlabs/Module/Import.php:94 ../../Zotlabs/Module/Import_items.php:66
+msgid "Unable to download data from old server"
+msgstr "No s'han pogut descarregar les dades del servidor antic"
-#: ../../include/attach.php:410
-#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "L'arxiu excedeix la mida limit de %d"
+#: ../../Zotlabs/Module/Import.php:100
+#: ../../Zotlabs/Module/Import_items.php:72
+msgid "Imported file is empty."
+msgstr "El fitxer importat està buit."
-#: ../../include/attach.php:422
+#: ../../Zotlabs/Module/Import.php:122
+#: ../../Zotlabs/Module/Import_items.php:86
#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
-msgstr "Has arribat al teu límit de %1$.0f Mbytes de emagatzematge d'adjunts."
-
-#: ../../include/attach.php:505
-msgid "File upload failed. Possible system limit or action terminated."
-msgstr "Pujada del arxiu fallida. Possible límit del sistema o acció interrompuda."
-
-#: ../../include/attach.php:517
-msgid "Stored file could not be verified. Upload failed."
-msgstr "L'arxiu guardat no es pot verificar. Pujada fallida."
-
-#: ../../include/attach.php:561 ../../include/attach.php:578
-msgid "Path not available."
-msgstr "Trajectòria no disponible"
-
-#: ../../include/attach.php:623
-msgid "Empty pathname"
-msgstr "Trajèctoria vuida."
-
-#: ../../include/attach.php:639
-msgid "duplicate filename or path"
-msgstr "Nom o trajectòria duplicat"
-
-#: ../../include/attach.php:663
-msgid "Path not found."
-msgstr "Trajectòria no trobada."
-
-#: ../../include/attach.php:714
-msgid "mkdir failed."
-msgstr "mkdir va fracassar."
-
-#: ../../include/attach.php:718
-msgid "database storage failed."
-msgstr "Arxiu de base de dades va fallar."
-
-#: ../../include/identity.php:33
-msgid "Unable to obtain identity information from database"
-msgstr "Incapaç de trobar l'informació d'identitat a la base de dades"
+msgid "Warning: Database versions differ by %1$d updates."
+msgstr "Atenció: Les versions de la Base de Dades difereixen en %1$d actualitzacions."
-#: ../../include/identity.php:67
-msgid "Empty name"
-msgstr "Nom buit"
+#: ../../Zotlabs/Module/Import.php:150 ../../include/import.php:86
+msgid "Cloned channel not found. Import failed."
+msgstr "No s'ha pogut importar el canal perquè el canal clonat no s'ha trobat."
-#: ../../include/identity.php:70
-msgid "Name too long"
-msgstr "Nom massa llarg"
+#: ../../Zotlabs/Module/Import.php:160
+msgid "No channel. Import failed."
+msgstr "Sense canal. No s'ha pogut importar."
-#: ../../include/identity.php:186
-msgid "No account identifier"
-msgstr "Sense identificador de compte"
+#: ../../Zotlabs/Module/Import.php:510
+#: ../../include/Import/import_diaspora.php:142
+msgid "Import completed."
+msgstr "S'ha completat la importació."
-#: ../../include/identity.php:198
-msgid "Nickname is required."
-msgstr "Alies/malnom es requerit."
+#: ../../Zotlabs/Module/Import.php:532
+msgid "You must be logged in to use this feature."
+msgstr "Has d'estar registrat per fer servir aquesta funcionalitat."
-#: ../../include/identity.php:212
-msgid "Reserved nickname. Please choose another."
-msgstr "Àlies reservat. Tria un altre."
+#: ../../Zotlabs/Module/Import.php:537
+msgid "Import Channel"
+msgstr "Importa un canal"
-#: ../../include/identity.php:217 ../../include/dimport.php:34
+#: ../../Zotlabs/Module/Import.php:538
msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "L'álies te caracters no soportats o ja esta en ús en aquest lloc"
-
-#: ../../include/identity.php:292
-msgid "Unable to retrieve created identity"
-msgstr "No es pot recuperar la identitat creada"
-
-#: ../../include/identity.php:350
-msgid "Default Profile"
-msgstr "Perfil per Defecte"
-
-#: ../../include/identity.php:660
-msgid "Requested channel is not available."
-msgstr "El canal demanat no està disponible."
-
-#: ../../include/identity.php:707 ../../mod/profile.php:16
-#: ../../mod/achievements.php:11 ../../mod/webpages.php:29
-#: ../../mod/connect.php:13 ../../mod/hcard.php:8 ../../mod/blocks.php:29
-#: ../../mod/editlayout.php:27 ../../mod/editwebpage.php:28
-#: ../../mod/editblock.php:29 ../../mod/filestorage.php:54
-#: ../../mod/layouts.php:29
-msgid "Requested profile is not available."
-msgstr "El perfil demanat no està disponible."
-
-#: ../../include/identity.php:870 ../../mod/profiles.php:774
-msgid "Change profile photo"
-msgstr "Canviar la foto del perfil"
-
-#: ../../include/identity.php:876
-msgid "Profiles"
-msgstr "Perfils"
-
-#: ../../include/identity.php:876
-msgid "Manage/edit profiles"
-msgstr "Gestiona/edita perfils"
-
-#: ../../include/identity.php:877 ../../mod/profiles.php:775
-msgid "Create New Profile"
-msgstr "Crear un Perfil Nou"
+"Use this form to import an existing channel from a different server/hub. You"
+" may retrieve the channel identity from the old server/hub via the network "
+"or provide an export file."
+msgstr "Empra aquest formulari per importar un canal existent en un altre servidor/concentrador. Pots recuperar el canal des de l'antic servidor/concentrador via la xarxa o mitjançant un fitxer d'exportació"
-#: ../../include/identity.php:892 ../../mod/profiles.php:786
-msgid "Profile Image"
-msgstr "Imatge del Perfil"
+#: ../../Zotlabs/Module/Import.php:539
+#: ../../Zotlabs/Module/Import_items.php:119
+msgid "File to Upload"
+msgstr "Fitxer a pujar"
-#: ../../include/identity.php:895
-msgid "visible to everybody"
-msgstr "visible per tothom"
+#: ../../Zotlabs/Module/Import.php:540
+msgid "Or provide the old server/hub details"
+msgstr "O proveeix els detalls de l'antic servidor/node"
-#: ../../include/identity.php:896 ../../mod/profiles.php:669
-#: ../../mod/profiles.php:790
-msgid "Edit visibility"
-msgstr "Editar visibilitat"
+#: ../../Zotlabs/Module/Import.php:541
+msgid "Your old identity address (xyz@example.com)"
+msgstr "La teva adreça de canal antiga. El format és canal@exemple.org"
-#: ../../include/identity.php:912 ../../include/identity.php:1151
-msgid "Gender:"
-msgstr "Gènere:"
+#: ../../Zotlabs/Module/Import.php:542
+msgid "Your old login email address"
+msgstr "La teva adreça de correu electrònic antiga"
-#: ../../include/identity.php:913 ../../include/identity.php:1195
-msgid "Status:"
-msgstr "Estatus:"
+#: ../../Zotlabs/Module/Import.php:543
+msgid "Your old login password"
+msgstr "La teva contrasenya antiga"
-#: ../../include/identity.php:914 ../../include/identity.php:1206
-msgid "Homepage:"
-msgstr "Pàgina Personal:"
+#: ../../Zotlabs/Module/Import.php:544
+msgid ""
+"For either option, please choose whether to make this hub your new primary "
+"address, or whether your old location should continue this role. You will be"
+" able to post from either location, but only one can be marked as the "
+"primary location for files, photos, and media."
+msgstr "Per a qualsevol de les opcions, escull si vols fer primària l'adreça d'aquest node o mantenir l'anterior com a primària. Podràs penjar entrades des de totes dues adreces, però per als fitxers, imatges i altres en cal una de primària."
-#: ../../include/identity.php:915
-msgid "Online Now"
-msgstr "Ara en Linia"
+#: ../../Zotlabs/Module/Import.php:545
+msgid "Make this hub my primary location"
+msgstr "Fes d'aquest node la meva ubicació primària"
-#: ../../include/identity.php:998 ../../include/identity.php:1076
-#: ../../mod/ping.php:324
-msgid "g A l F d"
-msgstr "g A l F d"
+#: ../../Zotlabs/Module/Import.php:546
+msgid ""
+"Import existing posts if possible (experimental - limited by available "
+"memory"
+msgstr "Importa les entrades existents si es possible (experimental - limitat per la memòria disponible"
-#: ../../include/identity.php:999 ../../include/identity.php:1077
-msgid "F d"
-msgstr "F d"
+#: ../../Zotlabs/Module/Import.php:547
+msgid ""
+"This process may take several minutes to complete. Please submit the form "
+"only once and leave this page open until finished."
+msgstr "Aquest procès pot trigar minuts en completar. Si et plau envia el formulari només una vegada i manté aquesta pàgina oberta fins que finalitzi."
-#: ../../include/identity.php:1044 ../../include/identity.php:1116
-#: ../../mod/ping.php:346
-msgid "[today]"
-msgstr "[avui]"
+#: ../../Zotlabs/Module/Item.php:178
+msgid "Unable to locate original post."
+msgstr "No s'ha pogut trobar l'entrada original."
-#: ../../include/identity.php:1055
-msgid "Birthday Reminders"
-msgstr "Recordatori d'Aniversaris"
+#: ../../Zotlabs/Module/Item.php:427
+msgid "Empty post discarded."
+msgstr "S'ha descartat l'entrada perquè no té contingut."
-#: ../../include/identity.php:1056
-msgid "Birthdays this week:"
-msgstr "Aniversari aquesta setmana:"
+#: ../../Zotlabs/Module/Item.php:467
+msgid "Executable content type not permitted to this channel."
+msgstr "No està permès el contingut de tipus executable en aquest canal."
-#: ../../include/identity.php:1109
-msgid "[No description]"
-msgstr "[Sense descripció]"
+#: ../../Zotlabs/Module/Item.php:847
+msgid "Duplicate post suppressed."
+msgstr "Publicació duplicada s'ha suprimit."
-#: ../../include/identity.php:1127
-msgid "Event Reminders"
-msgstr "Recordatori d'Events"
+#: ../../Zotlabs/Module/Item.php:977
+msgid "System error. Post not saved."
+msgstr "Hi ha hagut un error del sistema. L'entrada no s'ha desat."
-#: ../../include/identity.php:1128
-msgid "Events this week:"
-msgstr "Event aquesta setmana:"
+#: ../../Zotlabs/Module/Item.php:1241
+msgid "Unable to obtain post information from database."
+msgstr "No s'ha pogut obtenir informació de l'entrada a la base de dades."
-#: ../../include/identity.php:1141 ../../include/identity.php:1258
-#: ../../include/apps.php:138 ../../mod/profperm.php:112
-msgid "Profile"
-msgstr "Perfil"
+#: ../../Zotlabs/Module/Item.php:1248
+#, php-format
+msgid "You have reached your limit of %1$.0f top level posts."
+msgstr "Has assolit el teu límit de %1$.0f entrades (descomptant comentaris)."
-#: ../../include/identity.php:1149 ../../mod/settings.php:1056
-msgid "Full Name:"
-msgstr "Nom Complet:"
+#: ../../Zotlabs/Module/Item.php:1255
+#, php-format
+msgid "You have reached your limit of %1$.0f webpages."
+msgstr "Has assolit el teu limit de %1$.0f pàgines web."
-#: ../../include/identity.php:1156
-msgid "Like this channel"
-msgstr "M'agrada aquest canal"
+#: ../../Zotlabs/Module/Layouts.php:181 ../../include/text.php:2267
+msgid "Layouts"
+msgstr "Format Gràfic"
-#: ../../include/identity.php:1180
-msgid "j F, Y"
-msgstr "j F, Y"
+#: ../../Zotlabs/Module/Layouts.php:183
+msgid "Comanche page description language help"
+msgstr "Pgina d'ajuda del llenguatge Comanche"
-#: ../../include/identity.php:1181
-msgid "j F"
-msgstr "j F"
+#: ../../Zotlabs/Module/Layouts.php:187
+msgid "Layout Description"
+msgstr "Descripció del Disseny de la Pàgina"
-#: ../../include/identity.php:1188
-msgid "Birthday:"
-msgstr "Aniversari:"
+#: ../../Zotlabs/Module/Layouts.php:192
+msgid "Download PDL file"
+msgstr "Descarrega l'arxiu PDL"
-#: ../../include/identity.php:1192 ../../mod/directory.php:297
-msgid "Age:"
-msgstr "Edat:"
+#: ../../Zotlabs/Module/Home.php:61 ../../Zotlabs/Module/Home.php:69
+#: ../../Zotlabs/Module/Siteinfo.php:65
+msgid "$Projectname"
+msgstr "$Projectname"
-#: ../../include/identity.php:1201
+#: ../../Zotlabs/Module/Home.php:79
#, php-format
-msgid "for %1$d %2$s"
-msgstr "per %1$d %2$s"
+msgid "Welcome to %s"
+msgstr "Benvingut a %s"
-#: ../../include/identity.php:1204 ../../mod/profiles.php:691
-msgid "Sexual Preference:"
-msgstr "Preferència Sexual:"
+#: ../../Zotlabs/Module/Id.php:13
+msgid "First Name"
+msgstr "Nom"
-#: ../../include/identity.php:1208 ../../mod/directory.php:313
-#: ../../mod/profiles.php:693
-msgid "Hometown:"
-msgstr "Ciutat Natal:"
+#: ../../Zotlabs/Module/Id.php:14
+msgid "Last Name"
+msgstr "Cognoms"
-#: ../../include/identity.php:1210
-msgid "Tags:"
-msgstr "Etiquetes:"
+#: ../../Zotlabs/Module/Id.php:15
+msgid "Nickname"
+msgstr "Àlies"
-#: ../../include/identity.php:1212 ../../mod/profiles.php:694
-msgid "Political Views:"
-msgstr "Idees Polítiques:"
+#: ../../Zotlabs/Module/Id.php:16
+msgid "Full Name"
+msgstr "Nom Sencer"
-#: ../../include/identity.php:1214
-msgid "Religion:"
-msgstr "Religió:"
+#: ../../Zotlabs/Module/Id.php:17 ../../Zotlabs/Module/Id.php:18
+#: ../../Zotlabs/Module/Admin.php:1035 ../../Zotlabs/Module/Admin.php:1047
+#: ../../include/network.php:2151 ../../boot.php:1705
+msgid "Email"
+msgstr "Correu electrónic"
-#: ../../include/identity.php:1216 ../../mod/directory.php:315
-msgid "About:"
-msgstr "Sobre:"
+#: ../../Zotlabs/Module/Id.php:19 ../../Zotlabs/Module/Id.php:20
+#: ../../Zotlabs/Module/Id.php:21 ../../Zotlabs/Lib/Apps.php:236
+msgid "Profile Photo"
+msgstr "Foto del Perfil"
-#: ../../include/identity.php:1218
-msgid "Hobbies/Interests:"
-msgstr "Aficions/Interessos:"
+#: ../../Zotlabs/Module/Id.php:22
+msgid "Profile Photo 16px"
+msgstr "Foto del Perfil 16px"
-#: ../../include/identity.php:1220 ../../mod/profiles.php:697
-msgid "Likes:"
-msgstr "Agrada:"
+#: ../../Zotlabs/Module/Id.php:23
+msgid "Profile Photo 32px"
+msgstr "Foto del Perfil 32px"
-#: ../../include/identity.php:1222 ../../mod/profiles.php:698
-msgid "Dislikes:"
-msgstr "Desagrada:"
+#: ../../Zotlabs/Module/Id.php:24
+msgid "Profile Photo 48px"
+msgstr "Foto del Perfil 48px"
-#: ../../include/identity.php:1224
-msgid "Contact information and Social Networks:"
-msgstr "Informació de contacte i Xarxes Socials:"
+#: ../../Zotlabs/Module/Id.php:25
+msgid "Profile Photo 64px"
+msgstr "Foto del Perfil 64px"
-#: ../../include/identity.php:1226
-msgid "My other channels:"
-msgstr "Els meus altres canals:"
+#: ../../Zotlabs/Module/Id.php:26
+msgid "Profile Photo 80px"
+msgstr "Foto del Perfil 80px"
-#: ../../include/identity.php:1228
-msgid "Musical interests:"
-msgstr "Interessos Musicals:"
+#: ../../Zotlabs/Module/Id.php:27
+msgid "Profile Photo 128px"
+msgstr "Foto del Perfil 128px"
-#: ../../include/identity.php:1230
-msgid "Books, literature:"
-msgstr "Llibres, literatura:"
+#: ../../Zotlabs/Module/Id.php:28
+msgid "Timezone"
+msgstr "Zona horària"
-#: ../../include/identity.php:1232
-msgid "Television:"
-msgstr "Televisió:"
+#: ../../Zotlabs/Module/Id.php:29 ../../Zotlabs/Module/Profiles.php:731
+msgid "Homepage URL"
+msgstr "URL de la pàgina d'inici"
-#: ../../include/identity.php:1234
-msgid "Film/dance/culture/entertainment:"
-msgstr "Películes/Dança/Cultura/Entreteniment:"
+#: ../../Zotlabs/Module/Id.php:30 ../../Zotlabs/Lib/Apps.php:234
+msgid "Language"
+msgstr "Idioma"
-#: ../../include/identity.php:1236
-msgid "Love/Romance:"
-msgstr "Amor/Romace:"
+#: ../../Zotlabs/Module/Id.php:31
+msgid "Birth Year"
+msgstr "Any de Naixement"
-#: ../../include/identity.php:1238
-msgid "Work/employment:"
-msgstr "Treball/feina:"
+#: ../../Zotlabs/Module/Id.php:32
+msgid "Birth Month"
+msgstr "Mes de Naixement"
-#: ../../include/identity.php:1240
-msgid "School/education:"
-msgstr "Escola/educació:"
+#: ../../Zotlabs/Module/Id.php:33
+msgid "Birth Day"
+msgstr "Dia de Naixement"
-#: ../../include/identity.php:1260
-msgid "Like this thing"
-msgstr "M'agrada això"
+#: ../../Zotlabs/Module/Id.php:34
+msgid "Birthdate"
+msgstr "Aniversari"
+
+#: ../../Zotlabs/Module/Id.php:35 ../../Zotlabs/Module/Profiles.php:454
+msgid "Gender"
+msgstr "Gènere"
-#: ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23 ../../mod/id.php:103
+#: ../../Zotlabs/Module/Id.php:108 ../../include/selectors.php:49
+#: ../../include/selectors.php:66
msgid "Male"
msgstr "Masculí"
-#: ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23 ../../mod/id.php:105
+#: ../../Zotlabs/Module/Id.php:110 ../../include/selectors.php:49
+#: ../../include/selectors.php:66
msgid "Female"
msgstr "Femení"
-#: ../../include/profile_selectors.php:6
-msgid "Currently Male"
-msgstr "Actualment Masculí"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Female"
-msgstr "Actualment Femení"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Male"
-msgstr "Més aviat Masculí"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Female"
-msgstr "Més Aviat Femení"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transgender"
-msgstr "Canvi de Sexe"
-
-#: ../../include/profile_selectors.php:6
-msgid "Intersex"
-msgstr "Intersexual"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transsexual"
-msgstr "Transsexual"
-
-#: ../../include/profile_selectors.php:6
-msgid "Hermaphrodite"
-msgstr "Hermafrodita"
-
-#: ../../include/profile_selectors.php:6
-msgid "Neuter"
-msgstr "Neutre"
-
-#: ../../include/profile_selectors.php:6
-msgid "Non-specific"
-msgstr "Indefinit"
-
-#: ../../include/profile_selectors.php:6
-msgid "Undecided"
-msgstr "Indecís"
-
-#: ../../include/profile_selectors.php:42
-#: ../../include/profile_selectors.php:61
-msgid "Males"
-msgstr "Homes"
-
-#: ../../include/profile_selectors.php:42
-#: ../../include/profile_selectors.php:61
-msgid "Females"
-msgstr "Dones"
-
-#: ../../include/profile_selectors.php:42
-msgid "Gay"
-msgstr "Gay"
-
-#: ../../include/profile_selectors.php:42
-msgid "Lesbian"
-msgstr "Lesbianes"
-
-#: ../../include/profile_selectors.php:42
-msgid "No Preference"
-msgstr "Sense Preferències"
-
-#: ../../include/profile_selectors.php:42
-msgid "Bisexual"
-msgstr "Bisexual"
-
-#: ../../include/profile_selectors.php:42
-msgid "Autosexual"
-msgstr "Autosexual"
-
-#: ../../include/profile_selectors.php:42
-msgid "Abstinent"
-msgstr "Abstinent"
-
-#: ../../include/profile_selectors.php:42
-msgid "Virgin"
-msgstr "Verge"
-
-#: ../../include/profile_selectors.php:42
-msgid "Deviant"
-msgstr "Desviat"
-
-#: ../../include/profile_selectors.php:42
-msgid "Fetish"
-msgstr "Fetixiste"
-
-#: ../../include/profile_selectors.php:42
-msgid "Oodles"
-msgstr "Orgies"
-
-#: ../../include/profile_selectors.php:42
-msgid "Nonsexual"
-msgstr "Asexual"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Single"
-msgstr "Solter"
-
-#: ../../include/profile_selectors.php:80
-msgid "Lonely"
-msgstr "Solitari"
-
-#: ../../include/profile_selectors.php:80
-msgid "Available"
-msgstr "Disponible"
-
-#: ../../include/profile_selectors.php:80
-msgid "Unavailable"
-msgstr "No Disponible"
-
-#: ../../include/profile_selectors.php:80
-msgid "Has crush"
-msgstr "Aplastat"
-
-#: ../../include/profile_selectors.php:80
-msgid "Infatuated"
-msgstr "Encapritxat"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Dating"
-msgstr "Promés"
-
-#: ../../include/profile_selectors.php:80
-msgid "Unfaithful"
-msgstr "Infidel"
-
-#: ../../include/profile_selectors.php:80
-msgid "Sex Addict"
-msgstr "Adicte al Sexe"
-
-#: ../../include/profile_selectors.php:80
-msgid "Friends/Benefits"
-msgstr "Amics amb Beneficis"
-
-#: ../../include/profile_selectors.php:80
-msgid "Casual"
-msgstr "Casual"
-
-#: ../../include/profile_selectors.php:80
-msgid "Engaged"
-msgstr "Ocupat"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Married"
-msgstr "Casat"
-
-#: ../../include/profile_selectors.php:80
-msgid "Imaginarily married"
-msgstr "Casat Imaginàriament"
-
-#: ../../include/profile_selectors.php:80
-msgid "Partners"
-msgstr "Parella"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Cohabiting"
-msgstr "Cohabitant"
-
-#: ../../include/profile_selectors.php:80
-msgid "Common law"
-msgstr "Tradició"
-
-#: ../../include/profile_selectors.php:80
-msgid "Happy"
-msgstr "Feliç"
-
-#: ../../include/profile_selectors.php:80
-msgid "Not looking"
-msgstr "No Cerco"
-
-#: ../../include/profile_selectors.php:80
-msgid "Swinger"
-msgstr "Llibertí"
-
-#: ../../include/profile_selectors.php:80
-msgid "Betrayed"
-msgstr "Traït"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Separated"
-msgstr "Separat"
-
-#: ../../include/profile_selectors.php:80
-msgid "Unstable"
-msgstr "Inestable"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Divorced"
-msgstr "Divorciat"
-
-#: ../../include/profile_selectors.php:80
-msgid "Imaginarily divorced"
-msgstr "Divorciat Imaginàriament"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Widowed"
-msgstr "Vidu/ua"
-
-#: ../../include/profile_selectors.php:80
-msgid "Uncertain"
-msgstr "Incert"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "It's complicated"
-msgstr "Es Complicat"
-
-#: ../../include/profile_selectors.php:80
-msgid "Don't care"
-msgstr "No Et Fa Res"
-
-#: ../../include/profile_selectors.php:80
-msgid "Ask me"
-msgstr "Pregunta"
-
-#: ../../include/apps.php:128
-msgid "Site Admin"
-msgstr "Administració"
-
-#: ../../include/apps.php:130
-msgid "Address Book"
-msgstr "Adreçes"
-
-#: ../../include/apps.php:144 ../../mod/mood.php:130
-msgid "Mood"
-msgstr "Ànim"
-
-#: ../../include/apps.php:148
-msgid "Probe"
-msgstr "Sondeig"
-
-#: ../../include/apps.php:149
-msgid "Suggest"
-msgstr "Suggeriment"
-
-#: ../../include/apps.php:150
-msgid "Random Channel"
-msgstr "Canal Aleatori"
-
-#: ../../include/apps.php:151
-msgid "Invite"
-msgstr "Convida"
-
-#: ../../include/apps.php:152
-msgid "Features"
-msgstr "Funcionalitats"
-
-#: ../../include/apps.php:153 ../../mod/id.php:28
-msgid "Language"
-msgstr "Idioma"
-
-#: ../../include/apps.php:154
-msgid "Post"
-msgstr "Entrada"
-
-#: ../../include/apps.php:155 ../../mod/id.php:17 ../../mod/id.php:18
-#: ../../mod/id.php:19
-msgid "Profile Photo"
-msgstr "Foto del Perfil"
-
-#: ../../include/apps.php:247 ../../mod/settings.php:84
-#: ../../mod/settings.php:614
-msgid "Update"
-msgstr "Actualització"
-
-#: ../../include/apps.php:247
-msgid "Install"
-msgstr "Instal·lar"
-
-#: ../../include/apps.php:252
-msgid "Purchase"
-msgstr "Compra"
-
-#: ../../include/bbcode.php:122 ../../include/bbcode.php:768
-#: ../../include/bbcode.php:771 ../../include/bbcode.php:776
-#: ../../include/bbcode.php:779 ../../include/bbcode.php:782
-#: ../../include/bbcode.php:785 ../../include/bbcode.php:790
-#: ../../include/bbcode.php:793 ../../include/bbcode.php:798
-#: ../../include/bbcode.php:801 ../../include/bbcode.php:804
-#: ../../include/bbcode.php:807
-msgid "Image/photo"
-msgstr "Imatge/foto"
-
-#: ../../include/bbcode.php:161 ../../include/bbcode.php:818
-msgid "Encrypted content"
-msgstr "Contingut encriptat"
-
-#: ../../include/bbcode.php:178
-#, php-format
-msgid "Install %s element: "
-msgstr "Instal·la l'element %s:"
-
-#: ../../include/bbcode.php:182
-#, php-format
-msgid ""
-"This post contains an installable %s element, however you lack permissions "
-"to install it on this site."
-msgstr "Aquesta entrada contè un element %s instal·lable, potser manques de permissos per instal·lar-lo en aquest lloc."
-
-#: ../../include/bbcode.php:192 ../../mod/impel.php:37
+#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:192
msgid "webpage"
msgstr "pàgina web"
-#: ../../include/bbcode.php:195 ../../mod/impel.php:47
-msgid "layout"
-msgstr "disposició"
-
-#: ../../include/bbcode.php:198 ../../mod/impel.php:42
+#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:198
msgid "block"
msgstr "bloc"
-#: ../../include/bbcode.php:201 ../../mod/impel.php:54
+#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:195
+msgid "layout"
+msgstr "disposició"
+
+#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:201
msgid "menu"
msgstr "menú"
-#: ../../include/bbcode.php:215
-msgid "QR code"
-msgstr "QR code"
-
-#: ../../include/bbcode.php:266
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s va escriure el següent %2$s %3$s"
-
-#: ../../include/bbcode.php:268 ../../mod/tagger.php:51
-msgid "post"
-msgstr "entrada"
-
-#: ../../include/bbcode.php:518
-msgid "Different viewers will see this text differently"
-msgstr "Diferents observadors veuran aquest text de diferents formes"
-
-#: ../../include/bbcode.php:729
-msgid "$1 spoiler"
-msgstr "$1 spoiler"
-
-#: ../../include/bbcode.php:756
-msgid "$1 wrote:"
-msgstr "$1 va escriure:"
-
-#: ../../include/chat.php:23
-msgid "Missing room name"
-msgstr "Perdut el nom de la sala"
-
-#: ../../include/chat.php:32
-msgid "Duplicate room name"
-msgstr "Nom de la sala duplicat"
-
-#: ../../include/chat.php:82 ../../include/chat.php:90
-msgid "Invalid room specifier."
-msgstr "Especificació de la sala invàlida."
-
-#: ../../include/chat.php:120
-msgid "Room not found."
-msgstr "Sala no trobada."
-
-#: ../../include/chat.php:141
-msgid "Room is full"
-msgstr "La sala es plena"
-
-#: ../../include/photos.php:94
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "La imatge excedeix la mida limit pel lloc web en %lu bytes"
-
-#: ../../include/photos.php:101
-msgid "Image file is empty."
-msgstr "El fitxer d'imatge esta buit."
-
-#: ../../include/photos.php:128 ../../mod/profile_photo.php:217
-msgid "Unable to process image"
-msgstr "incapaç de processar la imatge"
-
-#: ../../include/photos.php:199
-msgid "Photo storage failed."
-msgstr "Fracassà l'emmagatzematge de la Foto"
-
-#: ../../include/photos.php:363
-msgid "Upload New Photos"
-msgstr "Puja Noves Fotos"
-
-#: ../../mod/achievements.php:34
-msgid "Some blurb about what to do when you're new here"
-msgstr "Algunes propostes sobre el que cal fer quan ets nou aquí"
-
-#: ../../mod/manage.php:136
-#, php-format
-msgid "You have created %1$.0f of %2$.0f allowed channels."
-msgstr "Has creat %1$.0f de %2$.0f canals permesos."
-
-#: ../../mod/manage.php:144
-msgid "Create a new channel"
-msgstr "Crear un nou canal"
-
-#: ../../mod/manage.php:167
-msgid "Current Channel"
-msgstr "Canal Actual"
-
-#: ../../mod/manage.php:169
-msgid "Switch to one of your channels by selecting it."
-msgstr "Canviar a un altre dels teus canals seleccionant-ho."
-
-#: ../../mod/manage.php:170
-msgid "Default Channel"
-msgstr "Canal per Defecte"
-
-#: ../../mod/manage.php:171
-msgid "Make Default"
-msgstr "Estableix com a Predeterminat"
-
-#: ../../mod/manage.php:174
-#, php-format
-msgid "%d new messages"
-msgstr "%d missatges nous"
-
-#: ../../mod/manage.php:175
-#, php-format
-msgid "%d new introductions"
-msgstr "%d noves presentacions"
-
-#: ../../mod/manage.php:177
-msgid "Delegated Channels"
-msgstr "Canals Delegats"
-
-#: ../../mod/directory.php:59 ../../mod/photos.php:441 ../../mod/search.php:13
-#: ../../mod/ratings.php:82 ../../mod/viewconnections.php:17
-#: ../../mod/display.php:13
-msgid "Public access denied."
-msgstr "Accés públic denegat."
-
-#: ../../mod/directory.php:234
-#, php-format
-msgid "%d rating"
-msgid_plural "%d ratings"
-msgstr[0] "%d valoració"
-msgstr[1] "%d valoracions"
-
-#: ../../mod/directory.php:245
-msgid "Gender: "
-msgstr "Gènere:"
-
-#: ../../mod/directory.php:247
-msgid "Status: "
-msgstr "Estatus:"
-
-#: ../../mod/directory.php:249
-msgid "Homepage: "
-msgstr "Pàgina Personal:"
-
-#: ../../mod/directory.php:308 ../../mod/events.php:659
-msgid "Description:"
-msgstr "Descripció:"
-
-#: ../../mod/directory.php:317
-msgid "Public Forum:"
-msgstr "Forum Públic:"
-
-#: ../../mod/directory.php:320
-msgid "Keywords: "
-msgstr "Paraules Clau:"
-
-#: ../../mod/directory.php:323
-msgid "Don't suggest"
-msgstr "No suggerir"
-
-#: ../../mod/directory.php:325
-msgid "Common connections:"
-msgstr "Connexions en comú:"
-
-#: ../../mod/directory.php:374
-msgid "Global Directory"
-msgstr "Directori Global"
-
-#: ../../mod/directory.php:374
-msgid "Local Directory"
-msgstr "Directori Local"
-
-#: ../../mod/directory.php:380
-msgid "Finding:"
-msgstr "Cercant:"
-
-#: ../../mod/directory.php:385
-msgid "next page"
-msgstr "pàgina següent"
-
-#: ../../mod/directory.php:385
-msgid "previous page"
-msgstr "pàgina anterior"
-
-#: ../../mod/directory.php:386
-msgid "Sort options"
-msgstr "Opcions per ordenar"
-
-#: ../../mod/directory.php:387
-msgid "Alphabetic"
-msgstr "Alfabètic"
-
-#: ../../mod/directory.php:388
-msgid "Reverse Alphabetic"
-msgstr "Alfabètic Invers"
-
-#: ../../mod/directory.php:389
-msgid "Newest to Oldest"
-msgstr "De més Nou a més Vell"
-
-#: ../../mod/directory.php:390
-msgid "Oldest to Newest"
-msgstr "De més Antic a més Nou"
-
-#: ../../mod/directory.php:407
-msgid "No entries (some entries may be hidden)."
-msgstr "Sense entrades (algunes podrien estar amagades)."
-
-#: ../../mod/xchan.php:6
-msgid "Xchan Lookup"
-msgstr "Cerca a xchan"
-
-#: ../../mod/xchan.php:9
-msgid "Lookup xchan beginning with (or webbie): "
-msgstr "Cerca a xchan començant per (o webbie)"
-
-#: ../../mod/xchan.php:37 ../../mod/mitem.php:114 ../../mod/menu.php:156
-msgid "Not found."
-msgstr "No trobat."
-
-#: ../../mod/api.php:76 ../../mod/api.php:102
-msgid "Authorize application connection"
-msgstr "Autoritza la connexió de l'aplicació"
-
-#: ../../mod/api.php:77
-msgid "Return to your app and insert this Securty Code:"
-msgstr "Torna a la teva aplicació i insereix aquest Codi de Seguretat:"
-
-#: ../../mod/api.php:89
-msgid "Please login to continue."
-msgstr "Si et plau, identifica't per continuar."
-
-#: ../../mod/api.php:104
-msgid ""
-"Do you want to authorize this application to access your posts and contacts,"
-" and/or create new posts for you?"
-msgstr "Vols autoritzar a aquesta aplicació l'accés a les teves entrades i contactes i/o a crear noves entrades com si fos tu mateix."
-
-#: ../../mod/webpages.php:191
-msgid "Page Title"
-msgstr "Títol de la pàgina"
-
-#: ../../mod/follow.php:25
-msgid "Channel added."
-msgstr "S'ha afegit el canal."
-
-#: ../../mod/tagrm.php:44 ../../mod/tagrm.php:94
-msgid "Tag removed"
-msgstr "S'ha tret l'etiqueta"
-
-#: ../../mod/tagrm.php:119
-msgid "Remove Item Tag"
-msgstr "Elimina l'etiqueta d'element"
-
-#: ../../mod/tagrm.php:121
-msgid "Select a tag to remove: "
-msgstr "Tria l'etiqueta a eliminar:"
-
-#: ../../mod/tagrm.php:133 ../../mod/photos.php:887
-msgid "Remove"
-msgstr "Esborra"
-
-#: ../../mod/connect.php:56 ../../mod/connect.php:104
-msgid "Continue"
-msgstr "Continua"
-
-#: ../../mod/connect.php:85
-msgid "Premium Channel Setup"
-msgstr "Configuració de Canals Premium"
-
-#: ../../mod/connect.php:87
-msgid "Enable premium channel connection restrictions"
-msgstr "Habilita les restriccions de connexió del canal premium"
-
-#: ../../mod/connect.php:88
-msgid ""
-"Please enter your restrictions or conditions, such as paypal receipt, usage "
-"guidelines, etc."
-msgstr "Si us plau, introdueixi les restriccions o condicions, com ara el rebut de PayPal, les pautes d'ús, etc."
-
-#: ../../mod/connect.php:90 ../../mod/connect.php:110
-msgid ""
-"This channel may require additional steps or acknowledgement of the "
-"following conditions prior to connecting:"
-msgstr "Aquest canal pot requerir passos addicionals o reconeixement de les següents condicions abans de connectar:"
-
-#: ../../mod/connect.php:91
-msgid ""
-"Potential connections will then see the following text before proceeding:"
-msgstr "Connexions potencials veuran el següent text abans de continuar:"
-
-#: ../../mod/connect.php:92 ../../mod/connect.php:113
-msgid ""
-"By continuing, I certify that I have complied with any instructions provided"
-" on this page."
-msgstr "En continuar, certifico que he complert amb totes les instruccions proporcionades en aquesta pàgina."
-
-#: ../../mod/connect.php:101
-msgid "(No specific instructions have been provided by the channel owner.)"
-msgstr "(No s'han proporcionat instruccions específiques pel propietari del canal.)"
-
-#: ../../mod/connect.php:109
-msgid "Restricted or Premium Channel"
-msgstr "Canal Restringit o Premium"
-
-#: ../../mod/thing.php:94
-msgid "Thing updated"
-msgstr "S'ha actualitzat la cosa"
-
-#: ../../mod/thing.php:153
-msgid "Object store: failed"
-msgstr "No s'ha pogut emmagatzemar l'objecte"
-
-#: ../../mod/thing.php:157
-msgid "Thing added"
-msgstr "S'ha afegit la cosa"
-
-#: ../../mod/thing.php:175
+#: ../../Zotlabs/Module/Impel.php:196
#, php-format
-msgid "OBJ: %1$s %2$s %3$s"
-msgstr "OBJ: %1$s %2$s %3$s"
-
-#: ../../mod/thing.php:226
-msgid "Show Thing"
-msgstr "Mostra la cosa"
-
-#: ../../mod/thing.php:233
-msgid "item not found."
-msgstr "no s'ha trobat l'element."
-
-#: ../../mod/thing.php:261
-msgid "Edit Thing"
-msgstr "Edita la cosa"
-
-#: ../../mod/thing.php:263 ../../mod/thing.php:310
-msgid "Select a profile"
-msgstr "Tria un perfil"
-
-#: ../../mod/thing.php:267 ../../mod/thing.php:313
-msgid "Post an activity"
-msgstr "Publica una activitat"
-
-#: ../../mod/thing.php:267 ../../mod/thing.php:313
-msgid "Only sends to viewers of the applicable profile"
-msgstr "S'envia només a visitants del perfil corresponent"
-
-#: ../../mod/thing.php:269 ../../mod/thing.php:315
-msgid "Name of thing e.g. something"
-msgstr "Nom de la cosa. Exemple: patata"
-
-#: ../../mod/thing.php:271 ../../mod/thing.php:316
-msgid "URL of thing (optional)"
-msgstr "Adreça URL de la cosa (opcional)"
-
-#: ../../mod/thing.php:273 ../../mod/thing.php:317
-msgid "URL for photo of thing (optional)"
-msgstr "Adreça URL de la foto d'una cosa (opcional)"
-
-#: ../../mod/thing.php:308
-msgid "Add Thing to your Profile"
-msgstr "Afegeix una cosa al teu perfil"
-
-#: ../../mod/attach.php:9
-msgid "Item not available."
-msgstr "Article no disponible."
-
-#: ../../mod/probe.php:24 ../../mod/probe.php:30
-#, php-format
-msgid "Fetching URL returns error: %1$s"
-msgstr "URL sol·licitada retorna error: %1$s"
-
-#: ../../mod/profile_photo.php:108
-msgid "Image uploaded but image cropping failed."
-msgstr "S'ha pujat la imatge però no s'ha pogut retallar."
-
-#: ../../mod/profile_photo.php:162
-msgid "Image resize failed."
-msgstr "No s'ha pogut escalar la imatge."
-
-#: ../../mod/profile_photo.php:206
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Refresca la memòria cau del navegador si la foto no s'actualitza immediatament. Dreceres: «Ctrl+F5» i «Ctrl+Maj+R»"
-
-#: ../../mod/profile_photo.php:233
-#, php-format
-msgid "Image exceeds size limit of %d"
-msgstr "La imatge excedeix la mida límit de %d"
-
-#: ../../mod/profile_photo.php:242
-msgid "Unable to process image."
-msgstr "Incapaç de processar l'imatge."
-
-#: ../../mod/profile_photo.php:291 ../../mod/profile_photo.php:340
-msgid "Photo not available."
-msgstr "Foto no disponible."
-
-#: ../../mod/profile_photo.php:359
-msgid "Upload File:"
-msgstr "Puja Arxiu:"
-
-#: ../../mod/profile_photo.php:360
-msgid "Select a profile:"
-msgstr "Tria un perfil:"
-
-#: ../../mod/profile_photo.php:361
-msgid "Upload Profile Photo"
-msgstr "Puja una Foto pel Perfil"
-
-#: ../../mod/profile_photo.php:366 ../../mod/settings.php:995
-msgid "or"
-msgstr "o"
-
-#: ../../mod/profile_photo.php:366
-msgid "skip this step"
-msgstr "salta aquest pas"
-
-#: ../../mod/profile_photo.php:366
-msgid "select a photo from your photo albums"
-msgstr "tria una foto del teu àlbum de fotos"
-
-#: ../../mod/profile_photo.php:382
-msgid "Crop Image"
-msgstr "Retalla Imatge"
-
-#: ../../mod/profile_photo.php:383
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Si us plau, retalla la imatge per a una optima visualització"
-
-#: ../../mod/profile_photo.php:385
-msgid "Done Editing"
-msgstr "Edició Feta"
-
-#: ../../mod/profile_photo.php:428
-msgid "Image uploaded successfully."
-msgstr "Imatge pujada exitosament."
-
-#: ../../mod/profile_photo.php:430
-msgid "Image upload failed."
-msgstr "La pujada de la imatge va fracassar."
+msgid "%s element installed"
+msgstr "%s element instal·lat"
-#: ../../mod/profile_photo.php:439
+#: ../../Zotlabs/Module/Impel.php:199
#, php-format
-msgid "Image size reduction [%s] failed."
-msgstr "La reducció de mida de la imatge [%s] va fracassar."
-
-#: ../../mod/block.php:27 ../../mod/page.php:36
-msgid "Invalid item."
-msgstr "Article invàlid."
-
-#: ../../mod/block.php:39 ../../mod/wall_upload.php:29 ../../mod/page.php:52
-msgid "Channel not found."
-msgstr "Canal no trobat."
-
-#: ../../mod/block.php:75 ../../mod/display.php:110 ../../mod/help.php:79
-#: ../../mod/page.php:89 ../../index.php:241
-msgid "Page not found."
-msgstr "Pàgina no trobada."
+msgid "%s element installation failed"
+msgstr "%s instal·lació d'element va fallar"
-#: ../../mod/like.php:15
+#: ../../Zotlabs/Module/Like.php:19
msgid "Like/Dislike"
msgstr "M'agrada / No m'agrada"
-#: ../../mod/like.php:20
+#: ../../Zotlabs/Module/Like.php:24
msgid "This action is restricted to members."
msgstr "Aquesta acció està restringida als membres."
-#: ../../mod/like.php:21
+#: ../../Zotlabs/Module/Like.php:25
msgid ""
"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a "
"href=\"register\">register as a new $Projectname member</a> to continue."
msgstr "<a href=\"rmagic\">Entra amb la teva identitat $Projectname</a> o <a href=\"register\">registra't a $Projectname</a> per continuar."
-#: ../../mod/like.php:101 ../../mod/like.php:128 ../../mod/like.php:166
+#: ../../Zotlabs/Module/Like.php:105 ../../Zotlabs/Module/Like.php:131
+#: ../../Zotlabs/Module/Like.php:169
msgid "Invalid request."
msgstr "Sol·licitud invàlida."
-#: ../../mod/like.php:143
+#: ../../Zotlabs/Module/Like.php:117 ../../include/conversation.php:126
+msgid "channel"
+msgstr "canal"
+
+#: ../../Zotlabs/Module/Like.php:146
msgid "thing"
msgstr "cosa"
-#: ../../mod/like.php:189
+#: ../../Zotlabs/Module/Like.php:192
msgid "Channel unavailable."
msgstr "El canal està inactiu."
-#: ../../mod/like.php:228
+#: ../../Zotlabs/Module/Like.php:240
msgid "Previous action reversed."
msgstr "S'ha desfet l'acció anterior."
-#: ../../mod/like.php:398
+#: ../../Zotlabs/Module/Like.php:371 ../../Zotlabs/Module/Subthread.php:87
+#: ../../Zotlabs/Module/Tagger.php:47 ../../include/text.php:1940
+#: ../../include/conversation.php:120
+msgid "photo"
+msgstr "foto"
+
+#: ../../Zotlabs/Module/Like.php:371 ../../Zotlabs/Module/Subthread.php:87
+#: ../../include/text.php:1946 ../../include/conversation.php:148
+msgid "status"
+msgstr "estat"
+
+#: ../../Zotlabs/Module/Like.php:420 ../../include/conversation.php:164
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "%1$s agrada %2$s de %3$s"
+
+#: ../../Zotlabs/Module/Like.php:422 ../../include/conversation.php:167
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
+msgstr "%1$s no agrada %2$s de %3$s"
+
+#: ../../Zotlabs/Module/Like.php:424
#, php-format
msgid "%1$s agrees with %2$s's %3$s"
msgstr "%1$s està d'acord amb %3$s de %2$s"
-#: ../../mod/like.php:400
+#: ../../Zotlabs/Module/Like.php:426
#, php-format
msgid "%1$s doesn't agree with %2$s's %3$s"
msgstr "%1$s no està d'acord amb %3$s de %2$s"
-#: ../../mod/like.php:402
+#: ../../Zotlabs/Module/Like.php:428
#, php-format
msgid "%1$s abstains from a decision on %2$s's %3$s"
msgstr "%1$s s'abstén en %3$s de %2$s"
-#: ../../mod/like.php:404
+#: ../../Zotlabs/Module/Like.php:430
#, php-format
msgid "%1$s is attending %2$s's %3$s"
msgstr "%1$s assistirà a %3$s de %2$s"
-#: ../../mod/like.php:406
+#: ../../Zotlabs/Module/Like.php:432
#, php-format
msgid "%1$s is not attending %2$s's %3$s"
msgstr "%1$s no assistirà a %3$s de %2$s"
-#: ../../mod/like.php:408
+#: ../../Zotlabs/Module/Like.php:434
#, php-format
msgid "%1$s may attend %2$s's %3$s"
msgstr "%1$s potser assistirà a %3$s de %2$s"
-#: ../../mod/like.php:492
+#: ../../Zotlabs/Module/Like.php:537
msgid "Action completed."
msgstr "S'ha completat l'acció."
-#: ../../mod/like.php:493
+#: ../../Zotlabs/Module/Like.php:538
msgid "Thank you."
msgstr "Gràcies."
-#: ../../mod/events.php:21
-msgid "Calendar entries imported."
-msgstr "Entrades de Calendari importades."
-
-#: ../../mod/events.php:23
-msgid "No calendar entries found."
-msgstr "No es troben entrades decalendari."
-
-#: ../../mod/events.php:101
-msgid "Event can not end before it has started."
-msgstr "L'esdeveniment ha de començar abans d'acabar."
-
-#: ../../mod/events.php:103 ../../mod/events.php:112 ../../mod/events.php:130
-msgid "Unable to generate preview."
-msgstr "No s'ha pogut generar la vista prèvia."
+#: ../../Zotlabs/Module/Import_items.php:102
+msgid "Import completed"
+msgstr "S'ha completat la importació"
-#: ../../mod/events.php:110
-msgid "Event title and start time are required."
-msgstr "Cal indicar l'inici i el final de l'esdeveniment."
+#: ../../Zotlabs/Module/Import_items.php:117
+msgid "Import Items"
+msgstr "Importa Articles"
-#: ../../mod/events.php:128
-msgid "Event not found."
-msgstr "No s'ha trobat l'esdeveniment."
-
-#: ../../mod/events.php:409
-msgid "l, F j"
-msgstr "l, F j"
-
-#: ../../mod/events.php:431
-msgid "Edit event"
-msgstr "Edita l'esdeveniment"
-
-#: ../../mod/events.php:432
-msgid "Delete event"
-msgstr "Esborra l'esdeveniment"
+#: ../../Zotlabs/Module/Import_items.php:118
+msgid ""
+"Use this form to import existing posts and content from an export file."
+msgstr "Empra aquest formulari per importar entrades existents i contingut d'un arxiu d'exportació."
-#: ../../mod/events.php:466
-msgid "calendar"
-msgstr "calendari"
+#: ../../Zotlabs/Module/Invite.php:29
+msgid "Total invitation limit exceeded."
+msgstr "El límit total invitacions s'ha superat."
-#: ../../mod/events.php:487
-msgid "Create New Event"
-msgstr "Crea un esdeveniment nou"
+#: ../../Zotlabs/Module/Invite.php:53
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s: adreça de correu electrònic no vàlida."
-#: ../../mod/events.php:488 ../../mod/photos.php:839
-msgid "Previous"
-msgstr "Anterior"
+#: ../../Zotlabs/Module/Invite.php:63
+msgid "Please join us on $Projectname"
+msgstr "Si us plau uneix-te a nosaltres a $Projectname."
-#: ../../mod/events.php:489 ../../mod/photos.php:848 ../../mod/setup.php:281
-msgid "Next"
-msgstr "Pròxim"
+#: ../../Zotlabs/Module/Invite.php:74
+msgid "Invitation limit exceeded. Please contact your site administrator."
+msgstr "Límit d'invitacions excedit. Si us plau, poseu-vos en contacte amb l'administrador del lloc."
-#: ../../mod/events.php:490
-msgid "Export"
-msgstr "Exporta"
+#: ../../Zotlabs/Module/Invite.php:79
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s : Entrega del Missatge fallida."
-#: ../../mod/events.php:493
-msgid "Import"
-msgstr "Importar"
+#: ../../Zotlabs/Module/Invite.php:83
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d missatge enviat."
+msgstr[1] "%d missatges enviats."
-#: ../../mod/events.php:518
-msgid "Event removed"
-msgstr "S'ha eliminat l'esdeveniment"
+#: ../../Zotlabs/Module/Invite.php:102
+msgid "You have no more invitations available"
+msgstr "No té més invitacions disponibles"
-#: ../../mod/events.php:521
-msgid "Failed to remove event"
-msgstr "No s'ha pogut esborrar l'esdeveniment"
+#: ../../Zotlabs/Module/Invite.php:133
+msgid "Send invitations"
+msgstr "Enviar invitacions"
-#: ../../mod/events.php:641
-msgid "Event details"
-msgstr "Detalls de l'esdeveniment"
+#: ../../Zotlabs/Module/Invite.php:134
+msgid "Enter email addresses, one per line:"
+msgstr "Introduïu les adreces de correu electrònic, una per línia:"
-#: ../../mod/events.php:642
-msgid "Starting date and Title are required."
-msgstr "La data d'inici i el títol són obligatoris."
+#: ../../Zotlabs/Module/Invite.php:135 ../../Zotlabs/Module/Mail.php:249
+msgid "Your message:"
+msgstr "El teu missatge:"
-#: ../../mod/events.php:644
-msgid "Categories (comma-separated list)"
-msgstr "Categories (llista separada per comes)"
+#: ../../Zotlabs/Module/Invite.php:136
+msgid "Please join my community on $Projectname."
+msgstr "Si us plau uneix-te la meva comunitat en $Projectname."
-#: ../../mod/events.php:646
-msgid "Event Starts:"
-msgstr "Inici:"
+#: ../../Zotlabs/Module/Invite.php:138
+msgid "You will need to supply this invitation code:"
+msgstr "Hauràs de facilitar aquest codi d'invitació:"
-#: ../../mod/events.php:653
-msgid "Finish date/time is not known or not relevant"
-msgstr "La data i hora de final no és coneguda o irrellevant"
+#: ../../Zotlabs/Module/Invite.php:139
+msgid ""
+"1. Register at any $Projectname location (they are all inter-connected)"
+msgstr "1. Pots registrar-te a qualsevol node de $Projectname (estàn tots interconnectats)"
-#: ../../mod/events.php:655
-msgid "Event Finishes:"
-msgstr "Final:"
+#: ../../Zotlabs/Module/Invite.php:141
+msgid "2. Enter my $Projectname network address into the site searchbar."
+msgstr "2. Escriu la meva adreça de xarxa al $Projectname, a la barra de cerca del lloc."
-#: ../../mod/events.php:657 ../../mod/events.php:658
-msgid "Adjust for viewer timezone"
-msgstr "Ajusta a la zona horària del visitant."
+#: ../../Zotlabs/Module/Invite.php:142
+msgid "or visit"
+msgstr "o visitar"
-#: ../../mod/events.php:657
-msgid ""
-"Important for events that happen in a particular place. Not practical for "
-"global holidays."
-msgstr "És important per esdeveniments locals, però pels globals no és pràctic."
+#: ../../Zotlabs/Module/Invite.php:144
+msgid "3. Click [Connect]"
+msgstr "3. Clicar [Conectar]"
-#: ../../mod/events.php:663
-msgid "Title:"
-msgstr "Títol:"
+#: ../../Zotlabs/Module/Lockview.php:61
+msgid "Remote privacy information not available."
+msgstr "informació privada remota no disponible."
-#: ../../mod/events.php:665
-msgid "Share this event"
-msgstr "Comparteix aquest esdeveniment"
+#: ../../Zotlabs/Module/Lockview.php:82
+msgid "Visible to:"
+msgstr "Visible per:"
-#: ../../mod/subthread.php:103
-#, php-format
-msgid "%1$s is following %2$s's %3$s"
-msgstr "%1$s esta seguint %2$s de %3$s"
+#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54
+msgid "Location not found."
+msgstr "Situació que no es troba."
-#: ../../mod/pubsites.php:16
-msgid "Public Sites"
-msgstr "Llocs públics"
+#: ../../Zotlabs/Module/Locs.php:62
+msgid "Location lookup failed."
+msgstr "Ha fallat la cerca d'ubicació."
-#: ../../mod/pubsites.php:19
+#: ../../Zotlabs/Module/Locs.php:66
msgid ""
-"The listed sites allow public registration for the $Projectname network. All"
-" sites in the network are interlinked so membership on any of them conveys "
-"membership in the network as a whole. Some sites may require subscription or"
-" provide tiered service plans. The provider links <strong>may</strong> "
-"provide additional details."
-msgstr "Els llocs llistats permeten registrar usuaris de la xarxa $Projectname. Com que tots els llocs estan enllaçats entre ells, la identitat és vàlida a tota la xarxa. Alguns llocs poden demanar subscripció o oferir serveis addicional de pagament. Per a més detalls, proveu de seguir els enllaços dels proveïdors."
+"Please select another location to become primary before removing the primary"
+" location."
+msgstr "Seleccioneu una altra ubicació per esdevenir primària abans de retirar la ubicació principal."
-#: ../../mod/pubsites.php:25
-msgid "Rate this hub"
-msgstr "Valora aquest hub"
+#: ../../Zotlabs/Module/Locs.php:95
+msgid "Syncing locations"
+msgstr "Sincronitza ubicacions"
-#: ../../mod/pubsites.php:26
-msgid "Site URL"
-msgstr "Adreça URL del web"
-
-#: ../../mod/pubsites.php:26
-msgid "Access Type"
-msgstr "Tipus d'accés"
-
-#: ../../mod/pubsites.php:26
-msgid "Registration Policy"
-msgstr "Condicions de registre"
+#: ../../Zotlabs/Module/Locs.php:105
+msgid "No locations found."
+msgstr "No es troben els llocs."
-#: ../../mod/pubsites.php:26 ../../mod/profiles.php:454
-msgid "Location"
-msgstr "Localització"
+#: ../../Zotlabs/Module/Locs.php:116
+msgid "Manage Channel Locations"
+msgstr "Gestionar Ubicacions de Canal"
-#: ../../mod/pubsites.php:26
-msgid "View hub ratings"
-msgstr "Mostra la valoració del hub"
+#: ../../Zotlabs/Module/Locs.php:118 ../../Zotlabs/Module/Profiles.php:470
+#: ../../Zotlabs/Module/Admin.php:1224
+msgid "Address"
+msgstr "Adreça"
-#: ../../mod/pubsites.php:30
-msgid "Rate"
-msgstr "Puntua"
+#: ../../Zotlabs/Module/Locs.php:119
+msgid "Primary"
+msgstr "Primari"
-#: ../../mod/pubsites.php:31
-msgid "View ratings"
-msgstr "Mostra les valoracions"
+#: ../../Zotlabs/Module/Locs.php:120 ../../Zotlabs/Module/Menu.php:113
+msgid "Drop"
+msgstr "Menysprea"
-#: ../../mod/rpost.php:131 ../../mod/editpost.php:158
-msgid "Edit post"
-msgstr "Modifica l'entrada"
+#: ../../Zotlabs/Module/Locs.php:122
+msgid "Sync Now"
+msgstr "Sincronitza Ara"
-#: ../../mod/dav.php:121
-msgid "$Projectname channel"
-msgstr "Canal de $Projectname"
+#: ../../Zotlabs/Module/Locs.php:123
+msgid "Please wait several minutes between consecutive operations."
+msgstr "Si us plau espera diversos minuts entre operacions consecutives."
-#: ../../mod/group.php:20
-msgid "Collection created."
-msgstr "Creada una col·lecció"
+#: ../../Zotlabs/Module/Locs.php:124
+msgid ""
+"When possible, drop a location by logging into that website/hub and removing"
+" your channel."
+msgstr "Quan sigui possible, per desapareixer d'un lloc, accedeix a aquest lloc web/node i elimina el teu canal."
-#: ../../mod/group.php:26
-msgid "Could not create collection."
-msgstr "No puc crear la col·lecció."
+#: ../../Zotlabs/Module/Locs.php:125
+msgid "Use this form to drop the location if the hub is no longer operating."
+msgstr "Empra aquest formulari per desapareixer del lloc si el node ja no està operatiu."
-#: ../../mod/group.php:54
-msgid "Collection updated."
-msgstr "Col·lecció actualitzada."
+#: ../../Zotlabs/Module/Magic.php:71
+msgid "Hub not found."
+msgstr "Node no trobat."
-#: ../../mod/group.php:86
-msgid "Create a collection of channels."
-msgstr "Creada una col·lecció de canals."
+#: ../../Zotlabs/Module/Mail.php:38
+msgid "Unable to lookup recipient."
+msgstr "Incapaç de trobar el destinatari."
-#: ../../mod/group.php:87 ../../mod/group.php:183
-msgid "Collection Name: "
-msgstr "Nom de la Col·lecció:"
+#: ../../Zotlabs/Module/Mail.php:45
+msgid "Unable to communicate with requested channel."
+msgstr "Incapaç de comunicar amb el canal demanat."
-#: ../../mod/group.php:89 ../../mod/group.php:186
-msgid "Members are visible to other channels"
-msgstr "Els membres son visibles en altres canals"
+#: ../../Zotlabs/Module/Mail.php:52
+msgid "Cannot verify requested channel."
+msgstr "No puc verificar el canal demanat."
-#: ../../mod/group.php:107
-msgid "Collection removed."
-msgstr "Col·lecció esborrada."
+#: ../../Zotlabs/Module/Mail.php:78
+msgid "Selected channel has private message restrictions. Send failed."
+msgstr "El canal seleccionat te restriccions sobre els missatges privats. L'enviament ha fallat."
-#: ../../mod/group.php:109
-msgid "Unable to remove collection."
-msgstr "Incapaç d'esborrar la col·lecció."
+#: ../../Zotlabs/Module/Mail.php:143
+msgid "Messages"
+msgstr "Missatges"
-#: ../../mod/group.php:182
-msgid "Collection Editor"
-msgstr "Editor de Col·leccions"
+#: ../../Zotlabs/Module/Mail.php:178
+msgid "Message recalled."
+msgstr "Recupera el missatge."
-#: ../../mod/group.php:196 ../../mod/bulksetclose.php:89
-msgid "Members"
-msgstr "Membres"
+#: ../../Zotlabs/Module/Mail.php:191
+msgid "Conversation removed."
+msgstr "Conversació eliminada."
-#: ../../mod/group.php:198 ../../mod/bulksetclose.php:91
-msgid "All Connected Channels"
-msgstr "Tots els Canals Connectats"
+#: ../../Zotlabs/Module/Mail.php:206 ../../Zotlabs/Module/Mail.php:315
+msgid "Expires YYYY-MM-DD HH:MM"
+msgstr "Expira YYYY-MM-DD HH:MM"
-#: ../../mod/group.php:233 ../../mod/bulksetclose.php:126
-msgid "Click on a channel to add or remove."
-msgstr "Clic sobre el canal per afegir o esborrar."
+#: ../../Zotlabs/Module/Mail.php:234
+msgid "Requested channel is not in this network"
+msgstr "El canal demanat no hi es en questa xarxa"
-#: ../../mod/siteinfo.php:112
-#, php-format
-msgid "Version %s"
-msgstr "Versió %s"
+#: ../../Zotlabs/Module/Mail.php:242
+msgid "Send Private Message"
+msgstr "Envia Missatge Privat"
-#: ../../mod/siteinfo.php:133
-msgid "Installed plugins/addons/apps:"
-msgstr "Plugins/addons/apps Instal·lats:"
+#: ../../Zotlabs/Module/Mail.php:243 ../../Zotlabs/Module/Mail.php:368
+msgid "To:"
+msgstr "Per:"
-#: ../../mod/siteinfo.php:146
-msgid "No installed plugins/addons/apps"
-msgstr "Plugins/addons/apps no instal·lats"
+#: ../../Zotlabs/Module/Mail.php:246 ../../Zotlabs/Module/Mail.php:370
+msgid "Subject:"
+msgstr "Assumpte:"
-#: ../../mod/siteinfo.php:155 ../../mod/home.php:58 ../../mod/home.php:64
-msgid "$Projectname"
-msgstr "$Projectname"
+#: ../../Zotlabs/Module/Mail.php:251 ../../Zotlabs/Module/Mail.php:376
+#: ../../include/conversation.php:1220
+msgid "Attach file"
+msgstr "Adjunta arxiu"
-#: ../../mod/siteinfo.php:156
-msgid ""
-"This is a hub of $Projectname - a global cooperative network of "
-"decentralized privacy enhanced websites."
-msgstr "Aquest és un hub de $Projectname, una xarxa cooperativa mundial de llocs web descentralitzats amb gran control de la privacitat."
+#: ../../Zotlabs/Module/Mail.php:253
+msgid "Send"
+msgstr "Envia"
-#: ../../mod/siteinfo.php:158
-msgid "Tag: "
-msgstr "Etiqueta:"
+#: ../../Zotlabs/Module/Mail.php:256 ../../Zotlabs/Module/Mail.php:381
+#: ../../include/conversation.php:1251
+msgid "Set expiration date"
+msgstr "Ajusta la data d'expiració"
-#: ../../mod/siteinfo.php:160
-msgid "Last background fetch: "
-msgstr "Última actualització en rerefons:"
+#: ../../Zotlabs/Module/Mail.php:340
+msgid "Delete message"
+msgstr "Elimina el missatge"
-#: ../../mod/siteinfo.php:163
-msgid "Running at web location"
-msgstr "Correguent en el lloc web"
+#: ../../Zotlabs/Module/Mail.php:341
+msgid "Delivery report"
+msgstr "Informe d'entrega"
-#: ../../mod/siteinfo.php:164
-msgid ""
-"Please visit <a href=\"https://redmatrix.me\">redmatrix.me</a> to learn more"
-" about $Projectname."
-msgstr "Ves a <a href=\"https://redmatrix.me\">redmatrix.me</a> per saber-ne més sobre $Projectname."
+#: ../../Zotlabs/Module/Mail.php:342
+msgid "Recall message"
+msgstr "Recupera el missatge"
-#: ../../mod/siteinfo.php:165
-msgid "Bug reports and issues: please visit"
-msgstr "Per informar d'errors o problemes ves a"
+#: ../../Zotlabs/Module/Mail.php:344
+msgid "Message has been recalled."
+msgstr "El missatge s'ha recuperat."
-#: ../../mod/siteinfo.php:167
-msgid "$projectname issues"
-msgstr "$projectname emisions"
+#: ../../Zotlabs/Module/Mail.php:361
+msgid "Delete Conversation"
+msgstr "Conversació esborrada"
-#: ../../mod/siteinfo.php:168
+#: ../../Zotlabs/Module/Mail.php:363
msgid ""
-"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
-"com"
-msgstr "Per suggerències, felicitacions i altres, envia'ns un mail a «redmatrix» [arroba] librelist [punt] com"
-
-#: ../../mod/siteinfo.php:170
-msgid "Site Administrators"
-msgstr "Administradors del lloc"
-
-#: ../../mod/item.php:174
-msgid "Unable to locate original post."
-msgstr "No s'ha pogut trobar l'entrada original."
-
-#: ../../mod/item.php:440
-msgid "Empty post discarded."
-msgstr "S'ha descartat l'entrada perquè no té contingut."
-
-#: ../../mod/item.php:480
-msgid "Executable content type not permitted to this channel."
-msgstr "No està permès el contingut de tipus executable en aquest canal."
-
-#: ../../mod/item.php:901
-msgid "System error. Post not saved."
-msgstr "Hi ha hagut un error del sistema. L'entrada no s'ha desat."
+"No secure communications available. You <strong>may</strong> be able to "
+"respond from the sender's profile page."
+msgstr "Comunicació segura no disponible. Pots respondre des de la pàgina de perfil del remitent."
-#: ../../mod/item.php:1119
-msgid "Unable to obtain post information from database."
-msgstr "No s'ha pogut obtenir informació de l'entrada a la base de dades."
+#: ../../Zotlabs/Module/Mail.php:367
+msgid "Send Reply"
+msgstr "Envia Resposta"
-#: ../../mod/item.php:1126
+#: ../../Zotlabs/Module/Mail.php:372
#, php-format
-msgid "You have reached your limit of %1$.0f top level posts."
-msgstr "Has assolit el teu límit de %1$.0f entrades (descomptant comentaris)."
+msgid "Your message for %s (%s):"
+msgstr "El teu missatge per %s (%s):"
-#: ../../mod/item.php:1133
+#: ../../Zotlabs/Module/Manage.php:136
+#: ../../Zotlabs/Module/New_channel.php:121
#, php-format
-msgid "You have reached your limit of %1$.0f webpages."
-msgstr "Has assolit el teu limit de %1$.0f pàgines web."
-
-#: ../../mod/network.php:91
-msgid "No such group"
-msgstr "No existeix el grup"
-
-#: ../../mod/network.php:129
-msgid "No such channel"
-msgstr "No existeix el canal"
-
-#: ../../mod/network.php:143
-msgid "Search Results For:"
-msgstr "Cerca resultats per:"
-
-#: ../../mod/network.php:198
-msgid "Collection is empty"
-msgstr "La coŀlecció és buida"
-
-#: ../../mod/network.php:207
-msgid "Collection: "
-msgstr "Coŀlecció:"
-
-#: ../../mod/network.php:226
-msgid "Connection: "
-msgstr "Connexió:"
-
-#: ../../mod/network.php:233
-msgid "Invalid connection."
-msgstr "La connexió és invàlida."
-
-#: ../../mod/common.php:10
-msgid "No channel."
-msgstr "No s'ha trobat el canal"
-
-#: ../../mod/common.php:39
-msgid "Common connections"
-msgstr "Connexions en comú"
-
-#: ../../mod/common.php:44
-msgid "No connections in common."
-msgstr "No hi ha connexions en comú."
-
-#: ../../mod/regdir.php:45 ../../mod/dirsearch.php:21
-msgid "This site is not a directory server"
-msgstr "Aquest lloc web no és un servidor de directori"
-
-#: ../../mod/connections.php:37 ../../mod/connedit.php:75
-msgid "Could not access contact record."
-msgstr "No s'ha pogut accedir al llibre de contactes."
-
-#: ../../mod/connections.php:51 ../../mod/connedit.php:99
-msgid "Could not locate selected profile."
-msgstr "No s'ha trobat el perfil indicat."
-
-#: ../../mod/connections.php:94 ../../mod/connedit.php:219
-msgid "Connection updated."
-msgstr "S'ha actualitzat la connexió."
-
-#: ../../mod/connections.php:96 ../../mod/connedit.php:221
-msgid "Failed to update connection record."
-msgstr "No s'ha pogut actualitzar el registre de connexió."
-
-#: ../../mod/connections.php:192 ../../mod/connections.php:293
-msgid "Blocked"
-msgstr "Bloquejades"
-
-#: ../../mod/connections.php:197 ../../mod/connections.php:300
-msgid "Ignored"
-msgstr "Ignorades"
-
-#: ../../mod/connections.php:202 ../../mod/connections.php:314
-msgid "Hidden"
-msgstr "Amagades"
-
-#: ../../mod/connections.php:207 ../../mod/connections.php:307
-msgid "Archived"
-msgstr "Arxivades"
-
-#: ../../mod/connections.php:271
-msgid "Suggest new connections"
-msgstr "Suggereix noves connexions"
-
-#: ../../mod/connections.php:274
-msgid "New Connections"
-msgstr "Noves Connexions"
-
-#: ../../mod/connections.php:277
-msgid "Show pending (new) connections"
-msgstr "Mostra les connexions pendents (noves)"
-
-#: ../../mod/connections.php:280 ../../mod/profperm.php:139
-msgid "All Connections"
-msgstr "Totes les Connexions"
-
-#: ../../mod/connections.php:283
-msgid "Show all connections"
-msgstr "Mostra totes les connexions"
+msgid "You have created %1$.0f of %2$.0f allowed channels."
+msgstr "Has creat %1$.0f de %2$.0f canals permesos."
-#: ../../mod/connections.php:286
-msgid "Unblocked"
-msgstr "No bloquejades"
+#: ../../Zotlabs/Module/Manage.php:143
+msgid "Create a new channel"
+msgstr "Crear un nou canal"
-#: ../../mod/connections.php:289
-msgid "Only show unblocked connections"
-msgstr "Mostra només les connexions no bloquejades"
+#: ../../Zotlabs/Module/Manage.php:164 ../../Zotlabs/Lib/Apps.php:213
+#: ../../include/nav.php:206
+msgid "Channel Manager"
+msgstr "Gestor de Canals"
-#: ../../mod/connections.php:296
-msgid "Only show blocked connections"
-msgstr "Mostra només les connexions bloquejades"
+#: ../../Zotlabs/Module/Manage.php:165
+msgid "Current Channel"
+msgstr "Canal Actual"
-#: ../../mod/connections.php:303
-msgid "Only show ignored connections"
-msgstr "Mostra només les connexions ignorades"
+#: ../../Zotlabs/Module/Manage.php:167
+msgid "Switch to one of your channels by selecting it."
+msgstr "Canviar a un altre dels teus canals seleccionant-ho."
-#: ../../mod/connections.php:310
-msgid "Only show archived connections"
-msgstr "Mostra només les connexions arxivades"
+#: ../../Zotlabs/Module/Manage.php:168
+msgid "Default Channel"
+msgstr "Canal per Defecte"
-#: ../../mod/connections.php:317
-msgid "Only show hidden connections"
-msgstr "Mostra només les connexions amagades"
+#: ../../Zotlabs/Module/Manage.php:169
+msgid "Make Default"
+msgstr "Estableix com a Predeterminat"
-#: ../../mod/connections.php:372
+#: ../../Zotlabs/Module/Manage.php:172
#, php-format
-msgid "%1$s [%2$s]"
-msgstr "%1$s [%2$s]"
-
-#: ../../mod/connections.php:373
-msgid "Edit connection"
-msgstr "Modifica la connexió"
-
-#: ../../mod/connections.php:411
-msgid "Search your connections"
-msgstr "Cerca entre les teves connexions"
-
-#: ../../mod/connections.php:412
-msgid "Finding: "
-msgstr "Cercant:"
-
-#: ../../mod/blocks.php:95 ../../mod/blocks.php:148
-msgid "Block Name"
-msgstr "Nom del Bloc"
-
-#: ../../mod/blocks.php:149
-msgid "Block Title"
-msgstr "Títol del bloc"
+msgid "%d new messages"
+msgstr "%d missatges nous"
-#: ../../mod/editpost.php:20 ../../mod/editlayout.php:76
-#: ../../mod/editwebpage.php:77 ../../mod/editblock.php:78
-#: ../../mod/editblock.php:94
-msgid "Item not found"
-msgstr "No s'ha trobat l'element"
+#: ../../Zotlabs/Module/Manage.php:173
+#, php-format
+msgid "%d new introductions"
+msgstr "%d noves presentacions"
-#: ../../mod/editpost.php:31
-msgid "Item is not editable"
-msgstr "Article no editable"
+#: ../../Zotlabs/Module/Manage.php:175
+msgid "Delegated Channel"
+msgstr "Canal Delegat"
-#: ../../mod/editpost.php:48
-msgid "Delete item?"
-msgstr "Esborrar ítem"
+#: ../../Zotlabs/Module/Lostpass.php:19
+msgid "No valid account found."
+msgstr "No es troba un compte vàlid."
-#: ../../mod/editpost.php:115 ../../mod/editlayout.php:142
-#: ../../mod/editwebpage.php:187 ../../mod/editblock.php:144
-msgid "Insert YouTube video"
-msgstr "insereix video YouTube"
+#: ../../Zotlabs/Module/Lostpass.php:33
+msgid "Password reset request issued. Check your email."
+msgstr "Sol·licitud de restabliment de contrasenya emesa. Consulta el teu correu electrònic."
-#: ../../mod/editpost.php:116 ../../mod/editlayout.php:143
-#: ../../mod/editwebpage.php:188 ../../mod/editblock.php:145
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Insereix video Vorbis [.ogg]"
+#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:107
+#, php-format
+msgid "Site Member (%s)"
+msgstr "Lloc d'Usuari (%s)"
-#: ../../mod/editpost.php:117 ../../mod/editlayout.php:144
-#: ../../mod/editwebpage.php:189 ../../mod/editblock.php:146
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Insereix audio Vorbis [.ogg]"
+#: ../../Zotlabs/Module/Lostpass.php:44
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "S'ha soŀlicitat restablir la contrasenya al hub %s"
-#: ../../mod/cloud.php:120
-msgid "$Projectname - Guests: Username: {your email address}, Password: +++"
-msgstr "$Projectname - Convidats: Nom d'usuari: {el teu correu electrònic}, Contrasenya: +++"
+#: ../../Zotlabs/Module/Lostpass.php:67
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "Ha fallat el restabliment de contrasenya perquè la no s'ha pogut verificar soŀlicitud. Pot ser que ja ho hàgiu soŀlicitat abans."
-#: ../../mod/photos.php:78
-msgid "Page owner information could not be retrieved."
-msgstr "La informació del propietari de la pàgina no va poder ser recuperada"
+#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1711
+msgid "Password Reset"
+msgstr "Restabliment de contrasenya"
-#: ../../mod/photos.php:98
-msgid "Album not found."
-msgstr "Àlbum no trobat"
+#: ../../Zotlabs/Module/Lostpass.php:91
+msgid "Your password has been reset as requested."
+msgstr "S'ha restablert la vostra contrasenya."
-#: ../../mod/photos.php:120 ../../mod/photos.php:655
-msgid "Delete Album"
-msgstr "Esborra Àlbum"
+#: ../../Zotlabs/Module/Lostpass.php:92
+msgid "Your new password is"
+msgstr "La nova contrasenya és"
-#: ../../mod/photos.php:160 ../../mod/photos.php:942
-msgid "Delete Photo"
-msgstr "Esborra Foto"
+#: ../../Zotlabs/Module/Lostpass.php:93
+msgid "Save or copy your new password - and then"
+msgstr "Desa o copia la nova contrasenya, i després"
-#: ../../mod/photos.php:452
-msgid "No photos selected"
-msgstr "No has seleccionat fotos"
+#: ../../Zotlabs/Module/Lostpass.php:94
+msgid "click here to login"
+msgstr "fes clic aquí per iniciar sessió"
-#: ../../mod/photos.php:496
-msgid "Access to this item is restricted."
-msgstr "L'accés a aquest element esta restringit."
+#: ../../Zotlabs/Module/Lostpass.php:95
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Pots canviar la contrasenya a la pàgina <em>Paràmetres</em>, un cop iniciada la sessió."
-#: ../../mod/photos.php:535
+#: ../../Zotlabs/Module/Lostpass.php:112
#, php-format
-msgid "%1$.2f MB of %2$.2f MB photo storage used."
-msgstr "S'estan fent servir %1$.2f MB de %2$.2f MB de l'espai per a imatges."
+msgid "Your password has changed at %s"
+msgstr "La teva contrasenya a %s ha canviat"
-#: ../../mod/photos.php:538
-#, php-format
-msgid "%1$.2f MB photo storage used."
-msgstr "S'estan fent servir %1$.2f MB de l'espai per a imatges."
+#: ../../Zotlabs/Module/Lostpass.php:127
+msgid "Forgot your Password?"
+msgstr "No recordes la contrasenya?"
-#: ../../mod/photos.php:562
-msgid "Upload Photos"
-msgstr "Puja imatges"
+#: ../../Zotlabs/Module/Lostpass.php:128
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Escriu la teva adreça de correu electrònic i envia per restablir la contrasenya. Després revisa el seu correu electrònic per obtenir més instruccions."
-#: ../../mod/photos.php:566 ../../mod/photos.php:648 ../../mod/photos.php:927
-msgid "Enter a new album name"
-msgstr "Escriu el nom del nou àlbum"
+#: ../../Zotlabs/Module/Lostpass.php:129
+msgid "Email Address"
+msgstr "Adreça electrònica"
-#: ../../mod/photos.php:567 ../../mod/photos.php:649 ../../mod/photos.php:928
-msgid "or select an existing one (doubleclick)"
-msgstr "o bé fes doble clic a un d'existent"
+#: ../../Zotlabs/Module/Lostpass.php:130
+msgid "Reset"
+msgstr "Reajustar"
-#: ../../mod/photos.php:568
-msgid "Create a status post for this upload"
-msgstr "Genera una entrada a partir de la pujada"
+#: ../../Zotlabs/Module/Menu.php:49
+msgid "Unable to update menu."
+msgstr "No s'ha pogut actualitzar el menú."
-#: ../../mod/photos.php:596
-msgid "Album name could not be decoded"
-msgstr "No s'ha pogut descodificar el nom de l'àlbum"
+#: ../../Zotlabs/Module/Menu.php:60
+msgid "Unable to create menu."
+msgstr "No s'ha pogut crear el menú."
-#: ../../mod/photos.php:637 ../../mod/photos.php:1169
-#: ../../mod/photos.php:1185
-msgid "Contact Photos"
-msgstr "Imatges de contactes"
+#: ../../Zotlabs/Module/Menu.php:98 ../../Zotlabs/Module/Menu.php:110
+msgid "Menu Name"
+msgstr "Nom del menú"
-#: ../../mod/photos.php:661
-msgid "Show Newest First"
-msgstr "Ordena de més nou a més antic"
+#: ../../Zotlabs/Module/Menu.php:98
+msgid "Unique name (not visible on webpage) - required"
+msgstr "Nom únic (no visible a la pàgina web) - requerit"
-#: ../../mod/photos.php:663
-msgid "Show Oldest First"
-msgstr "Ordena de més antic a més nou"
+#: ../../Zotlabs/Module/Menu.php:99 ../../Zotlabs/Module/Menu.php:111
+msgid "Menu Title"
+msgstr "Títol del menú"
-#: ../../mod/photos.php:687 ../../mod/photos.php:1217
-msgid "View Photo"
-msgstr "Mostra la imatge"
+#: ../../Zotlabs/Module/Menu.php:99
+msgid "Visible on webpage - leave empty for no title"
+msgstr "Visible a la pàgina web - deixar buit per a no posar títol"
-#: ../../mod/photos.php:716
-msgid "Edit Album"
-msgstr "Modifica l'àlbum"
+#: ../../Zotlabs/Module/Menu.php:100
+msgid "Allow Bookmarks"
+msgstr "Permetre Marcadors"
-#: ../../mod/photos.php:761
-msgid "Permission denied. Access to this item may be restricted."
-msgstr "S'ha denegat el permís. Pot ser que l'accés estigui restringit."
+#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157
+msgid "Menu may be used to store saved bookmarks"
+msgstr "El menú es pot emprar per a guardar marcadors"
-#: ../../mod/photos.php:763
-msgid "Photo not available"
-msgstr "La imatge no està disponible"
+#: ../../Zotlabs/Module/Menu.php:101 ../../Zotlabs/Module/Menu.php:159
+msgid "Submit and proceed"
+msgstr "Envia i procedeix"
-#: ../../mod/photos.php:821
-msgid "Use as profile photo"
-msgstr "Fes-la imatge de perfil"
+#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2266
+msgid "Menus"
+msgstr "Menús"
-#: ../../mod/photos.php:828
-msgid "Private Photo"
-msgstr "Imatge privada"
+#: ../../Zotlabs/Module/Menu.php:117
+msgid "Bookmarks allowed"
+msgstr "Marcadors permesos"
-#: ../../mod/photos.php:843
-msgid "View Full Size"
-msgstr "Mostra a mida completa"
+#: ../../Zotlabs/Module/Menu.php:119
+msgid "Delete this menu"
+msgstr "Esborra el menú"
-#: ../../mod/photos.php:921
-msgid "Edit photo"
-msgstr "Modifica la imatge"
+#: ../../Zotlabs/Module/Menu.php:120 ../../Zotlabs/Module/Menu.php:154
+msgid "Edit menu contents"
+msgstr "Edita el contingut del menú"
-#: ../../mod/photos.php:923
-msgid "Rotate CW (right)"
-msgstr "Tomba cap a la dreta"
+#: ../../Zotlabs/Module/Menu.php:121
+msgid "Edit this menu"
+msgstr "Edita el menú"
-#: ../../mod/photos.php:924
-msgid "Rotate CCW (left)"
-msgstr "Tomba cap a l'esquerra"
+#: ../../Zotlabs/Module/Menu.php:136
+msgid "Menu could not be deleted."
+msgstr "El menu no es pot esborrar."
-#: ../../mod/photos.php:931
-msgid "Caption"
-msgstr "Llegenda"
+#: ../../Zotlabs/Module/Menu.php:144 ../../Zotlabs/Module/Mitem.php:28
+msgid "Menu not found."
+msgstr "Menú no trobat."
-#: ../../mod/photos.php:933
-msgid "Add a Tag"
-msgstr "Afegeix una etiqueta"
+#: ../../Zotlabs/Module/Menu.php:149
+msgid "Edit Menu"
+msgstr "Edita Menú"
-#: ../../mod/photos.php:937
-msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
-msgstr "Exemple: @joan, @Paula_Peris, @mar@exemple.org"
+#: ../../Zotlabs/Module/Menu.php:153
+msgid "Add or remove entries to this menu"
+msgstr "Afegeix o esborra entrades a aquest menú"
-#: ../../mod/photos.php:940
-msgid "Flag as adult in album view"
-msgstr "Marca com a contingut adult"
+#: ../../Zotlabs/Module/Menu.php:155
+msgid "Menu name"
+msgstr "Nom del Menú"
-#: ../../mod/photos.php:1132
-msgid "In This Photo:"
-msgstr "Hi apareixen:"
+#: ../../Zotlabs/Module/Menu.php:155
+msgid "Must be unique, only seen by you"
+msgstr "Ha de ser únic, nomes vist per tú"
-#: ../../mod/photos.php:1137
-msgid "Map"
-msgstr "Mapa"
+#: ../../Zotlabs/Module/Menu.php:156
+msgid "Menu title"
+msgstr "Títol del menú"
-#: ../../mod/photos.php:1223
-msgid "View Album"
-msgstr "Mostra'n l'àlbum"
+#: ../../Zotlabs/Module/Menu.php:156
+msgid "Menu title as seen by others"
+msgstr "Títol del menú vist pels altres"
-#: ../../mod/photos.php:1246
-msgid "Recent Photos"
-msgstr "Imatges recents"
+#: ../../Zotlabs/Module/Menu.php:157
+msgid "Allow bookmarks"
+msgstr "Marcadors permesos"
-#: ../../mod/search.php:206
-#, php-format
-msgid "Items tagged with: %s"
-msgstr "Elements etiquetats amb: %s"
+#: ../../Zotlabs/Module/Menu.php:166 ../../Zotlabs/Module/Mitem.php:120
+#: ../../Zotlabs/Module/Xchan.php:41
+msgid "Not found."
+msgstr "No trobat."
-#: ../../mod/search.php:208
+#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:260
#, php-format
-msgid "Search results for: %s"
-msgstr "Resultats de cerca per: %s"
+msgctxt "mood"
+msgid "%1$s is %2$s"
+msgstr "%1$s es %2$s"
+
+#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:225
+msgid "Mood"
+msgstr "Ànim"
-#: ../../mod/match.php:22
+#: ../../Zotlabs/Module/Mood.php:136
+msgid "Set your current mood and tell your friends"
+msgstr "Estableix el teu estat d'ànim actual i digues-li als teus amics"
+
+#: ../../Zotlabs/Module/Match.php:26
msgid "Profile Match"
msgstr "Perfils compatibles"
-#: ../../mod/match.php:31
+#: ../../Zotlabs/Module/Match.php:35
msgid "No keywords to match. Please add keywords to your default profile."
msgstr "No tens paraules clau al perfil principal per poder cercar perfils semblants."
-#: ../../mod/match.php:63
+#: ../../Zotlabs/Module/Match.php:67
msgid "is interested in:"
msgstr "té interès en:"
-#: ../../mod/match.php:70
+#: ../../Zotlabs/Module/Match.php:74
msgid "No matches"
msgstr "No s'han trobat perfils compatibles"
-#: ../../mod/chatsvc.php:111
-msgid "Away"
-msgstr "Absent"
+#: ../../Zotlabs/Module/Network.php:96
+msgid "No such group"
+msgstr "No existeix el grup"
-#: ../../mod/chatsvc.php:115
-msgid "Online"
-msgstr "En connexió"
+#: ../../Zotlabs/Module/Network.php:136
+msgid "No such channel"
+msgstr "No existeix el canal"
-#: ../../mod/rbmark.php:88
-msgid "Select a bookmark folder"
-msgstr "Tria una carpeta d'interès"
+#: ../../Zotlabs/Module/Network.php:141
+msgid "forum"
+msgstr "fòrum"
-#: ../../mod/rbmark.php:93
-msgid "Save Bookmark"
-msgstr "Guarda Favorits"
+#: ../../Zotlabs/Module/Network.php:153
+msgid "Search Results For:"
+msgstr "Cerca resultats per:"
-#: ../../mod/rbmark.php:94
-msgid "URL of bookmark"
-msgstr "URL de favorit"
+#: ../../Zotlabs/Module/Network.php:217
+msgid "Privacy group is empty"
+msgstr "el grup privat està vuit"
-#: ../../mod/rbmark.php:95 ../../mod/appman.php:93
-msgid "Description"
-msgstr "Descripció"
+#: ../../Zotlabs/Module/Network.php:226
+msgid "Privacy group: "
+msgstr "Grup privat:"
-#: ../../mod/rbmark.php:99
-msgid "Or enter new bookmark folder name"
-msgstr "O entra un nou nom de favorit"
+#: ../../Zotlabs/Module/Network.php:252
+msgid "Invalid connection."
+msgstr "La connexió és invàlida."
-#: ../../mod/notify.php:53 ../../mod/notifications.php:94
+#: ../../Zotlabs/Module/Notify.php:57
+#: ../../Zotlabs/Module/Notifications.php:98
msgid "No more system notifications."
-msgstr "No hi ha més notificacions de sistema."
+msgstr "No hi ha més notificacions del sistema."
-#: ../../mod/notify.php:57 ../../mod/notifications.php:98
+#: ../../Zotlabs/Module/Notify.php:61
+#: ../../Zotlabs/Module/Notifications.php:102
msgid "System Notifications"
-msgstr "Notificacions de sistema"
-
-#: ../../mod/acl.php:231
-msgid "network"
-msgstr "xarxa"
-
-#: ../../mod/acl.php:241
-msgid "RSS"
-msgstr "RSS"
-
-#: ../../mod/pdledit.php:13
-msgid "Layout updated."
-msgstr "S'ha actualitzat la disposició."
-
-#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
-msgid "Edit System Page Description"
-msgstr "Editor del Sistema de Descripció de Pàgines"
-
-#: ../../mod/pdledit.php:48
-msgid "Layout not found."
-msgstr "No s'ha trobat cap disposició de pàgina."
-
-#: ../../mod/pdledit.php:54
-msgid "Module Name:"
-msgstr "Nom del mòdul:"
-
-#: ../../mod/pdledit.php:55
-msgid "Layout Help"
-msgstr "Ajuda per la disposició de pàgina"
-
-#: ../../mod/filer.php:49
-msgid "- select -"
-msgstr "- selecciona -"
-
-#: ../../mod/import.php:25
-#, php-format
-msgid "Your service plan only allows %d channels."
-msgstr "El teu paquet de serveis només admet %d canals."
-
-#: ../../mod/import.php:60
-msgid "Nothing to import."
-msgstr "No hi ha res a importar."
-
-#: ../../mod/import.php:84
-msgid "Unable to download data from old server"
-msgstr "No s'han pogut descarregar les dades del servidor antic"
-
-#: ../../mod/import.php:90
-msgid "Imported file is empty."
-msgstr "El fitxer importat està buit."
-
-#: ../../mod/import.php:110
-msgid "The data provided is not compatible with this project."
-msgstr "Les dades subministrades no son compatibles amb aquest projecte."
-
-#: ../../mod/import.php:115
-#, php-format
-msgid "Warning: Database versions differ by %1$d updates."
-msgstr "Atenció: Les versions de la Base de Dades difereixen en %1$d actualitzacions."
-
-#: ../../mod/import.php:135
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "No s'ha pogut importar el canal perquè l'identificador del canal no s'ha pogut duplicar en aquest servidor."
-
-#: ../../mod/import.php:176
-msgid "Channel clone failed. Import failed."
-msgstr "No s'ha pogut importar el canal perquè el canal no s'ha pogut clonar."
-
-#: ../../mod/import.php:186
-msgid "Cloned channel not found. Import failed."
-msgstr "No s'ha pogut importar el canal perquè el canal clonat no s'ha trobat."
-
-#: ../../mod/import.php:516
-msgid "You must be logged in to use this feature."
-msgstr "Has d'estar registrat per fer servir aquesta funcionalitat."
-
-#: ../../mod/import.php:521
-msgid "Import Channel"
-msgstr "Importa un canal"
-
-#: ../../mod/import.php:522
-msgid ""
-"Use this form to import an existing channel from a different server/hub. You"
-" may retrieve the channel identity from the old server/hub via the network "
-"or provide an export file."
-msgstr "Empra aquest formulari per importar un canal existent en un altre servidor/concentrador. Pots recuperar el canal des de l'antic servidor/concentrador via la xarxa o mitjançant un fitxer d'exportació"
-
-#: ../../mod/import.php:523
-msgid "File to Upload"
-msgstr "Fitxer a pujar"
-
-#: ../../mod/import.php:524
-msgid "Or provide the old server/hub details"
-msgstr "O proveeix els detalls de l'antic servidor/concentrador"
-
-#: ../../mod/import.php:525
-msgid "Your old identity address (xyz@example.com)"
-msgstr "La teva adreça de canal antiga. El format és canal@exemple.org"
-
-#: ../../mod/import.php:526
-msgid "Your old login email address"
-msgstr "La teva adreça de correu electrònic antiga"
-
-#: ../../mod/import.php:527
-msgid "Your old login password"
-msgstr "La teva contrasenya antiga"
-
-#: ../../mod/import.php:528
-msgid ""
-"For either option, please choose whether to make this hub your new primary "
-"address, or whether your old location should continue this role. You will be"
-" able to post from either location, but only one can be marked as the "
-"primary location for files, photos, and media."
-msgstr "Per a qualsevol de les opcions, escull si vols fer primària l'adreça d'aquest hub o mantenir l'anterior com a primària. Podràs penjar entrades des de totes dues adreces, però per als fitxers, imatges i altres en cal una de primària."
-
-#: ../../mod/import.php:529
-msgid "Make this hub my primary location"
-msgstr "Fes d'aquest hub la meva ubicació primària"
-
-#: ../../mod/import.php:530
-msgid ""
-"Import existing posts if possible (experimental - limited by available "
-"memory"
-msgstr "Importa les entrades existents si es possible (experimental - limitat per la memòria disponible"
-
-#: ../../mod/import.php:531
-msgid ""
-"This process may take several minutes to complete. Please submit the form "
-"only once and leave this page open until finished."
-msgstr "Aquest procès pot trigar minuts en completar. Si et plau envia el formulari només una vegada i manté aquesta pàgina oberta fins que finalitzi."
-
-#: ../../mod/editlayout.php:111
-msgid "Delete layout?"
-msgstr "Esborra format?"
-
-#: ../../mod/editlayout.php:158 ../../mod/layouts.php:124
-msgid "Layout Description (Optional)"
-msgstr "Descripció del Format (Opcional)"
-
-#: ../../mod/editlayout.php:160 ../../mod/layouts.php:121
-#: ../../mod/layouts.php:179
-msgid "Layout Name"
-msgstr "Nom del Format Gràfic"
-
-#: ../../mod/editlayout.php:177
-msgid "Edit Layout"
-msgstr "Edita Format Gràfic"
-
-#: ../../mod/chat.php:19 ../../mod/channel.php:25
-msgid "You must be logged in to see this page."
-msgstr "Has d'estar identificat per a veure aquesta pàgina."
-
-#: ../../mod/chat.php:167
-msgid "Room not found"
-msgstr "No s'ha trobat la sala"
-
-#: ../../mod/chat.php:178
-msgid "Leave Room"
-msgstr "Abandona la sala"
+msgstr "Notificacions del sistema"
-#: ../../mod/chat.php:179
-msgid "Delete This Room"
-msgstr "Elimina la sala"
-
-#: ../../mod/chat.php:180
-msgid "I am away right now"
-msgstr "Absent"
-
-#: ../../mod/chat.php:181
-msgid "I am online"
-msgstr "Estic connectat/da"
-
-#: ../../mod/chat.php:183
-msgid "Bookmark this room"
-msgstr "Fes favorit aquest xat"
-
-#: ../../mod/chat.php:207 ../../mod/chat.php:229
-msgid "New Chatroom"
-msgstr "Nova sala per a Xerrar"
-
-#: ../../mod/chat.php:208
-msgid "Chatroom Name"
-msgstr "Nom del Xat"
-
-#: ../../mod/chat.php:225
-#, php-format
-msgid "%1$s's Chatrooms"
-msgstr "%1$s de Xats"
-
-#: ../../mod/mitem.php:24 ../../mod/menu.php:134
-msgid "Menu not found."
-msgstr "Menú no trobat."
-
-#: ../../mod/mitem.php:48
+#: ../../Zotlabs/Module/Mitem.php:52
msgid "Unable to create element."
msgstr "Incapaç de crear l'element."
-#: ../../mod/mitem.php:71
+#: ../../Zotlabs/Module/Mitem.php:76
msgid "Unable to update menu element."
msgstr "Incapaç d'actualitzar un element del menú."
-#: ../../mod/mitem.php:86
+#: ../../Zotlabs/Module/Mitem.php:92
msgid "Unable to add menu element."
msgstr "Incapaç d'afegir l'element del menú."
-#: ../../mod/mitem.php:152 ../../mod/mitem.php:223
+#: ../../Zotlabs/Module/Mitem.php:153 ../../Zotlabs/Module/Mitem.php:226
msgid "Menu Item Permissions"
msgstr "Permisos de l'Article del Menú"
-#: ../../mod/mitem.php:153 ../../mod/mitem.php:224 ../../mod/settings.php:1083
+#: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:227
+#: ../../Zotlabs/Module/Settings.php:1068
msgid "(click to open/close)"
msgstr "(clica per obrir/tancar)"
-#: ../../mod/mitem.php:155 ../../mod/mitem.php:171
+#: ../../Zotlabs/Module/Mitem.php:156 ../../Zotlabs/Module/Mitem.php:172
msgid "Link Name"
msgstr "Nom de l'Enllaç"
-#: ../../mod/mitem.php:156 ../../mod/mitem.php:228
+#: ../../Zotlabs/Module/Mitem.php:157 ../../Zotlabs/Module/Mitem.php:231
msgid "Link or Submenu Target"
msgstr "Enllaç o Submenú Objectiu"
-#: ../../mod/mitem.php:156
+#: ../../Zotlabs/Module/Mitem.php:157
msgid "Enter URL of the link or select a menu name to create a submenu"
msgstr "Entra la URL de l'enlla´o tria un nom de menú per crear un submenú"
-#: ../../mod/mitem.php:157 ../../mod/mitem.php:229
+#: ../../Zotlabs/Module/Mitem.php:158 ../../Zotlabs/Module/Mitem.php:232
msgid "Use magic-auth if available"
msgstr "Empra magic-auth si esta disponible"
-#: ../../mod/mitem.php:158 ../../mod/mitem.php:230
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:233
msgid "Open link in new window"
msgstr "Obrir l'enllaç en una nova finestra"
-#: ../../mod/mitem.php:159 ../../mod/mitem.php:231
+#: ../../Zotlabs/Module/Mitem.php:160 ../../Zotlabs/Module/Mitem.php:234
msgid "Order in list"
msgstr "Ordre per llista"
-#: ../../mod/mitem.php:159 ../../mod/mitem.php:231
+#: ../../Zotlabs/Module/Mitem.php:160 ../../Zotlabs/Module/Mitem.php:234
msgid "Higher numbers will sink to bottom of listing"
msgstr "Els números més alts aniràn al fons de la llista"
-#: ../../mod/mitem.php:160
+#: ../../Zotlabs/Module/Mitem.php:161
msgid "Submit and finish"
msgstr "Envia i termina"
-#: ../../mod/mitem.php:161
+#: ../../Zotlabs/Module/Mitem.php:162
msgid "Submit and continue"
msgstr "Envia i continua"
-#: ../../mod/mitem.php:169
+#: ../../Zotlabs/Module/Mitem.php:170
msgid "Menu:"
msgstr "Menú:"
-#: ../../mod/mitem.php:172
+#: ../../Zotlabs/Module/Mitem.php:173
msgid "Link Target"
msgstr "Enllaç Objectiu"
-#: ../../mod/mitem.php:175
+#: ../../Zotlabs/Module/Mitem.php:176
msgid "Edit menu"
msgstr "Edita menú"
-#: ../../mod/mitem.php:178
+#: ../../Zotlabs/Module/Mitem.php:179
msgid "Edit element"
msgstr "Edita element"
-#: ../../mod/mitem.php:179
+#: ../../Zotlabs/Module/Mitem.php:180
msgid "Drop element"
msgstr "Deixa anar element"
-#: ../../mod/mitem.php:180
+#: ../../Zotlabs/Module/Mitem.php:181
msgid "New element"
msgstr "Nou element"
-#: ../../mod/mitem.php:181
+#: ../../Zotlabs/Module/Mitem.php:182
msgid "Edit this menu container"
msgstr "Edita aquest contenidor de menú"
-#: ../../mod/mitem.php:182
+#: ../../Zotlabs/Module/Mitem.php:183
msgid "Add menu element"
msgstr "Afegeix element de menú"
-#: ../../mod/mitem.php:183
+#: ../../Zotlabs/Module/Mitem.php:184
msgid "Delete this menu item"
msgstr "Esborra aquest article del menú"
-#: ../../mod/mitem.php:184
+#: ../../Zotlabs/Module/Mitem.php:185
msgid "Edit this menu item"
msgstr "Edita aquest article del menú"
-#: ../../mod/mitem.php:201
+#: ../../Zotlabs/Module/Mitem.php:202
msgid "Menu item not found."
msgstr "Article del menú no trobat."
-#: ../../mod/mitem.php:212
+#: ../../Zotlabs/Module/Mitem.php:215
msgid "Menu item deleted."
msgstr "Article del menú eliminat."
-#: ../../mod/mitem.php:214
+#: ../../Zotlabs/Module/Mitem.php:217
msgid "Menu item could not be deleted."
msgstr "Article del menú no es pot eliminar."
-#: ../../mod/mitem.php:221
+#: ../../Zotlabs/Module/Mitem.php:224
msgid "Edit Menu Element"
msgstr "Editar Element del Menú"
-#: ../../mod/mitem.php:227
+#: ../../Zotlabs/Module/Mitem.php:230
msgid "Link text"
msgstr "Enllaç de text"
-#: ../../mod/editwebpage.php:152
-msgid "Delete webpage?"
-msgstr "Esborrar pàgina web?"
-
-#: ../../mod/editwebpage.php:173
-msgid "Page link title"
-msgstr "Títol de la pàgina enllaçada"
+#: ../../Zotlabs/Module/New_channel.php:128
+#: ../../Zotlabs/Module/Register.php:231
+msgid "Name or caption"
+msgstr "Nom o llegenda"
-#: ../../mod/editwebpage.php:224
-msgid "Edit Webpage"
-msgstr "Edita la Pàgina Web"
+#: ../../Zotlabs/Module/New_channel.php:128
+#: ../../Zotlabs/Module/Register.php:231
+msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""
+msgstr "Exemples: \"Pep Gomila\", \"Manel i els seus Cavalls\", \"Fútbol\", \"Grup d'Aviadors\""
-#: ../../mod/dirsearch.php:29
-msgid "This directory server requires an access token"
-msgstr "Aquest servidor de directori requereix un token de accès"
-
-#: ../../mod/lostpass.php:15
-msgid "No valid account found."
-msgstr "No es troba un compte vàlid."
-
-#: ../../mod/lostpass.php:29
-msgid "Password reset request issued. Check your email."
-msgstr "Sol·licitud de restabliment de contrasenya emesa. Consulta el teu correu electrònic."
-
-#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
-#, php-format
-msgid "Site Member (%s)"
-msgstr "Lloc d'Usuari (%s)"
+#: ../../Zotlabs/Module/New_channel.php:130
+#: ../../Zotlabs/Module/Register.php:233
+msgid "Choose a short nickname"
+msgstr "Tria un àlies curt"
-#: ../../mod/lostpass.php:40
+#: ../../Zotlabs/Module/New_channel.php:130
+#: ../../Zotlabs/Module/Register.php:233
#, php-format
-msgid "Password reset requested at %s"
-msgstr "S'ha soŀlicitat restablir la contrasenya al hub %s"
-
-#: ../../mod/lostpass.php:63
msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "Ha fallat el restabliment de contrasenya perquè la no s'ha pogut verificar soŀlicitud. Pot ser que ja ho hàgiu soŀlicitat abans."
-
-#: ../../mod/lostpass.php:85 ../../boot.php:1559
-msgid "Password Reset"
-msgstr "Restabliment de contrasenya"
-
-#: ../../mod/lostpass.php:86
-msgid "Your password has been reset as requested."
-msgstr "S'ha restablert la vostra contrasenya."
-
-#: ../../mod/lostpass.php:87
-msgid "Your new password is"
-msgstr "La nova contrasenya és"
-
-#: ../../mod/lostpass.php:88
-msgid "Save or copy your new password - and then"
-msgstr "Desa o copia la nova contrasenya, i després"
+"Your nickname will be used to create an easy to remember channel address "
+"e.g. nickname%s"
+msgstr "El teu àlies serà emprat per crear un nom fàcil per recordar l'adreça del canal p.e. àlies%s"
+
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:235
+msgid "Channel role and privacy"
+msgstr "Funció i privacitat del canal"
+
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:235
+msgid "Select a channel role with your privacy requirements."
+msgstr "Tria una funció pel canal amb els teus requisits de privacitat."
+
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:235
+msgid "Read more about roles"
+msgstr "Llegix més sobre els rols"
-#: ../../mod/lostpass.php:89
-msgid "click here to login"
-msgstr "fes clic aquí per iniciar sessió"
+#: ../../Zotlabs/Module/New_channel.php:135
+msgid "Create Channel"
+msgstr "Crea un Canal"
-#: ../../mod/lostpass.php:90
+#: ../../Zotlabs/Module/New_channel.php:136
msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Pots canviar la contrasenya a la pàgina <em>Paràmetres</em>, un cop iniciada la sessió."
-
-#: ../../mod/lostpass.php:107
-#, php-format
-msgid "Your password has changed at %s"
-msgstr "La teva contrasenya a %s ha canviat"
-
-#: ../../mod/lostpass.php:122
-msgid "Forgot your Password?"
-msgstr "No recordes la contrasenya?"
+"A channel is your identity on this network. It can represent a person, a "
+"blog, or a forum to name a few. Channels can make connections with other "
+"channels to share information with highly detailed permissions."
+msgstr "Un canal es la tva identitat en aquesta xarxa. Pot representar una persona, un bloc, o un fòrum per anomenar alguns. Els canals poden connectar-se amb altres canals per compartir informació amb permisos molt detallats."
-#: ../../mod/lostpass.php:123
+#: ../../Zotlabs/Module/New_channel.php:137
msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Escriu la teva adreça de correu electrònic i envia per restablir la contrasenya. Després revisa el seu correu electrònic per obtenir més instruccions."
-
-#: ../../mod/lostpass.php:124
-msgid "Email Address"
-msgstr "Adreça electrònica"
+"or <a href=\"import\">import an existing channel</a> from another location."
+msgstr "o <a href=\"import\">importa un canal existent</a> des d'un altre ubicació."
-#: ../../mod/lostpass.php:125
-msgid "Reset"
-msgstr "Reajustar"
+#: ../../Zotlabs/Module/Notifications.php:30
+msgid "Invalid request identifier."
+msgstr "Sol·licitud d'identificació invàlida."
-#: ../../mod/rate.php:157
-msgid "Website:"
-msgstr "Lloc web:"
+#: ../../Zotlabs/Module/Notifications.php:39
+msgid "Discard"
+msgstr "Descarta"
-#: ../../mod/rate.php:160
-#, php-format
-msgid "Remote Channel [%s] (not yet known on this site)"
-msgstr "Canal Remot [%s] (encara no es coneix en aquest lloc)"
+#: ../../Zotlabs/Module/Notifications.php:103 ../../include/nav.php:191
+msgid "Mark all system notifications seen"
+msgstr "Marca totes les notificacions vistes"
-#: ../../mod/rate.php:161
-msgid "Rating (this information is public)"
-msgstr "Valoració (aquesta informació és pública)"
+#: ../../Zotlabs/Module/Photos.php:84
+msgid "Page owner information could not be retrieved."
+msgstr "La informació del propietari de la pàgina no va poder ser recuperada"
-#: ../../mod/rate.php:162
-msgid "Optionally explain your rating (this information is public)"
-msgstr "Opcionalment pots explicar la teva qualificació (aquesta informació és pública)"
+#: ../../Zotlabs/Module/Photos.php:99 ../../Zotlabs/Module/Photos.php:743
+#: ../../Zotlabs/Module/Profile_photo.php:114
+#: ../../Zotlabs/Module/Profile_photo.php:206
+#: ../../Zotlabs/Module/Profile_photo.php:294
+#: ../../include/photo/photo_driver.php:718
+msgid "Profile Photos"
+msgstr "Fotos del Perfil"
-#: ../../mod/editblock.php:117
-msgid "Delete block?"
-msgstr "Eliminar bloc?"
+#: ../../Zotlabs/Module/Photos.php:105 ../../Zotlabs/Module/Photos.php:149
+msgid "Album not found."
+msgstr "Àlbum no trobat"
-#: ../../mod/editblock.php:179
-msgid "Edit Block"
-msgstr "Editar Bloc"
+#: ../../Zotlabs/Module/Photos.php:132
+msgid "Delete Album"
+msgstr "Esborra Àlbum"
-#: ../../mod/invite.php:25
-msgid "Total invitation limit exceeded."
-msgstr "El límit total invitacions s'ha superat."
+#: ../../Zotlabs/Module/Photos.php:153
+msgid ""
+"Multiple storage folders exist with this album name, but within different "
+"directories. Please remove the desired folder or folders using the Files "
+"manager"
+msgstr "Existeixen moltes carpetes de emmagatzemament amb aquest nom d'àlbum, però en diferents directoris. Si us plau esborra la carpeta o carpetes amb el gestor d'arxius."
-#: ../../mod/invite.php:49
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s: adreça de correu electrònic no vàlida."
+#: ../../Zotlabs/Module/Photos.php:210 ../../Zotlabs/Module/Photos.php:1053
+msgid "Delete Photo"
+msgstr "Esborra Foto"
-#: ../../mod/invite.php:76
-msgid "Please join us on Red"
-msgstr "Si us plau, uneix-te a Red"
+#: ../../Zotlabs/Module/Photos.php:533
+msgid "No photos selected"
+msgstr "No has seleccionat fotos"
-#: ../../mod/invite.php:87
-msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr "Límit d'invitacions excedit. Si us plau, poseu-vos en contacte amb l'administrador del lloc."
+#: ../../Zotlabs/Module/Photos.php:582
+msgid "Access to this item is restricted."
+msgstr "L'accés a aquest element esta restringit."
-#: ../../mod/invite.php:92
+#: ../../Zotlabs/Module/Photos.php:621
#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s : Entrega del Missatge fallida."
+msgid "%1$.2f MB of %2$.2f MB photo storage used."
+msgstr "S'estan fent servir %1$.2f MB de %2$.2f MB de l'espai per a imatges."
-#: ../../mod/invite.php:96
+#: ../../Zotlabs/Module/Photos.php:624
#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d missatge enviat."
-msgstr[1] "%d missatges enviats."
+msgid "%1$.2f MB photo storage used."
+msgstr "S'estan fent servir %1$.2f MB de l'espai per a imatges."
-#: ../../mod/invite.php:115
-msgid "You have no more invitations available"
-msgstr "No té més invitacions disponibles"
+#: ../../Zotlabs/Module/Photos.php:660
+msgid "Upload Photos"
+msgstr "Puja imatges"
-#: ../../mod/invite.php:129
-msgid "Send invitations"
-msgstr "Enviar invitacions"
+#: ../../Zotlabs/Module/Photos.php:664
+msgid "Enter an album name"
+msgstr "Escriu el nom del àlbum"
-#: ../../mod/invite.php:130
-msgid "Enter email addresses, one per line:"
-msgstr "Introduïu les adreces de correu electrònic, una per línia:"
+#: ../../Zotlabs/Module/Photos.php:665
+msgid "or select an existing album (doubleclick)"
+msgstr "o bé fes doble clic a un d'existent"
-#: ../../mod/invite.php:131 ../../mod/mail.php:235 ../../mod/mail.php:348
-msgid "Your message:"
-msgstr "El teu missatge:"
+#: ../../Zotlabs/Module/Photos.php:666
+msgid "Create a status post for this upload"
+msgstr "Genera una entrada a partir de la pujada"
-#: ../../mod/invite.php:132
-msgid "Please join my community on $Projectname."
-msgstr "Si us plau uneix-te la meva comunitat en $Projectname."
+#: ../../Zotlabs/Module/Photos.php:667
+msgid "Caption (optional):"
+msgstr "Subtítol (opcional):"
-#: ../../mod/invite.php:134
-msgid "You will need to supply this invitation code: "
-msgstr "Has de proporcionar aquest codi d'invitació:"
+#: ../../Zotlabs/Module/Photos.php:668
+msgid "Description (optional):"
+msgstr "Descripció (opcional):"
-#: ../../mod/invite.php:135
-msgid ""
-"1. Register at any $Projectname location (they are all inter-connected)"
-msgstr "1. Registre en qualsevol lloc del $Projectname (estàn tots interconnectats)"
+#: ../../Zotlabs/Module/Photos.php:695
+msgid "Album name could not be decoded"
+msgstr "No s'ha pogut descodificar el nom de l'àlbum"
-#: ../../mod/invite.php:137
-msgid "2. Enter my $Projectname network address into the site searchbar."
-msgstr "2. Entra a la meva adreça de xarxa al $Projectname, a la barra de cerca del lloc."
+#: ../../Zotlabs/Module/Photos.php:743
+msgid "Contact Photos"
+msgstr "Imatges de contactes"
-#: ../../mod/invite.php:138
-msgid "or visit "
-msgstr "o visita"
+#: ../../Zotlabs/Module/Photos.php:766
+msgid "Show Newest First"
+msgstr "Ordena de més nou a més antic"
-#: ../../mod/invite.php:140
-msgid "3. Click [Connect]"
-msgstr "3. Click [Conectar]"
+#: ../../Zotlabs/Module/Photos.php:768
+msgid "Show Oldest First"
+msgstr "Ordena de més antic a més nou"
-#: ../../mod/locs.php:21 ../../mod/locs.php:52
-msgid "Location not found."
-msgstr "Situació que no es troba."
+#: ../../Zotlabs/Module/Photos.php:792 ../../Zotlabs/Module/Photos.php:1331
+#: ../../include/widgets.php:1499
+msgid "View Photo"
+msgstr "Mostra la imatge"
-#: ../../mod/locs.php:56
-msgid "Primary location cannot be removed."
-msgstr "La ubicació primària no es pot treure."
+#: ../../Zotlabs/Module/Photos.php:823 ../../include/widgets.php:1516
+msgid "Edit Album"
+msgstr "Modifica l'àlbum"
-#: ../../mod/locs.php:88
-msgid "No locations found."
-msgstr "No es troben els llocs."
+#: ../../Zotlabs/Module/Photos.php:870
+msgid "Permission denied. Access to this item may be restricted."
+msgstr "S'ha denegat el permís. Pot ser que l'accés estigui restringit."
-#: ../../mod/locs.php:101
-msgid "Manage Channel Locations"
-msgstr "Gestionar Ubicacions de Canal"
+#: ../../Zotlabs/Module/Photos.php:872
+msgid "Photo not available"
+msgstr "La imatge no està disponible"
-#: ../../mod/locs.php:102
-msgid "Location (address)"
-msgstr "Ubicació (direcció)"
+#: ../../Zotlabs/Module/Photos.php:930
+msgid "Use as profile photo"
+msgstr "Fes-la imatge de perfil"
-#: ../../mod/locs.php:103
-msgid "Primary Location"
-msgstr "Ubicació Primària"
+#: ../../Zotlabs/Module/Photos.php:931
+msgid "Use as cover photo"
+msgstr "Emprar com a foto de portada"
-#: ../../mod/locs.php:104
-msgid "Drop location"
-msgstr "Treure la ubicació"
+#: ../../Zotlabs/Module/Photos.php:938
+msgid "Private Photo"
+msgstr "Imatge privada"
-#: ../../mod/sources.php:32
-msgid "Failed to create source. No channel selected."
-msgstr "Error en crear l'origen. Cap canal seleccionat."
+#: ../../Zotlabs/Module/Photos.php:953
+msgid "View Full Size"
+msgstr "Mostra a mida completa"
-#: ../../mod/sources.php:45
-msgid "Source created."
-msgstr "Origen creat."
+#: ../../Zotlabs/Module/Photos.php:998 ../../Zotlabs/Module/Admin.php:1437
+#: ../../Zotlabs/Module/Tagrm.php:137
+msgid "Remove"
+msgstr "Esborra"
-#: ../../mod/sources.php:57
-msgid "Source updated."
-msgstr "Origen actualitzat."
+#: ../../Zotlabs/Module/Photos.php:1032
+msgid "Edit photo"
+msgstr "Modifica la imatge"
-#: ../../mod/sources.php:82
-msgid "*"
-msgstr "*"
+#: ../../Zotlabs/Module/Photos.php:1034
+msgid "Rotate CW (right)"
+msgstr "Tomba cap a la dreta"
-#: ../../mod/sources.php:89
-msgid "Manage remote sources of content for your channel."
-msgstr "Gestiona contingut per al teu canal d'origens remots"
+#: ../../Zotlabs/Module/Photos.php:1035
+msgid "Rotate CCW (left)"
+msgstr "Tomba cap a l'esquerra"
-#: ../../mod/sources.php:90 ../../mod/sources.php:100
-msgid "New Source"
-msgstr "Nou Origen"
+#: ../../Zotlabs/Module/Photos.php:1038
+msgid "Enter a new album name"
+msgstr "Escriu el nom del nou àlbum"
-#: ../../mod/sources.php:101 ../../mod/sources.php:133
-msgid ""
-"Import all or selected content from the following channel into this channel "
-"and distribute it according to your channel settings."
-msgstr "Importar tot o sel·lecciona contingut dels següents canals, en aquest canal i distribueix-lo d'acord als teus ajustos de canals."
+#: ../../Zotlabs/Module/Photos.php:1039
+msgid "or select an existing one (doubleclick)"
+msgstr "o bé fes doble clic a un d'existent"
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Only import content with these words (one per line)"
-msgstr "Només importa contingut amb aquestes paraules (una per línia)"
+#: ../../Zotlabs/Module/Photos.php:1042
+msgid "Caption"
+msgstr "Llegenda"
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Leave blank to import all public content"
-msgstr "Deixar en blanc per importar tot el contingut públic"
+#: ../../Zotlabs/Module/Photos.php:1044
+msgid "Add a Tag"
+msgstr "Afegeix una etiqueta"
-#: ../../mod/sources.php:103 ../../mod/sources.php:137
-#: ../../mod/new_channel.php:112
-msgid "Channel Name"
-msgstr "Nom del canal"
+#: ../../Zotlabs/Module/Photos.php:1048
+msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
+msgstr "Exemple: @joan, @Paula_Peris, @mar@exemple.org"
-#: ../../mod/sources.php:123 ../../mod/sources.php:150
-msgid "Source not found."
-msgstr "No s'ha trobat la font."
+#: ../../Zotlabs/Module/Photos.php:1051
+msgid "Flag as adult in album view"
+msgstr "Marca com a contingut adult"
-#: ../../mod/sources.php:130
-msgid "Edit Source"
-msgstr "Edita la font"
+#: ../../Zotlabs/Module/Photos.php:1070 ../../Zotlabs/Lib/ThreadItem.php:261
+msgid "I like this (toggle)"
+msgstr "M'agrada això (canvia)"
-#: ../../mod/sources.php:131
-msgid "Delete Source"
-msgstr "Esborra la font"
+#: ../../Zotlabs/Module/Photos.php:1071 ../../Zotlabs/Lib/ThreadItem.php:262
+msgid "I don't like this (toggle)"
+msgstr "No m'agrada això (canvia)"
-#: ../../mod/sources.php:158
-msgid "Source removed"
-msgstr "S'ha esborrat la font"
+#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:397
+#: ../../include/conversation.php:740
+msgid "Please wait"
+msgstr "Si us plau, espera"
-#: ../../mod/sources.php:160
-msgid "Unable to remove source."
-msgstr "No s'ha pogut esborrar la font."
+#: ../../Zotlabs/Module/Photos.php:1089 ../../Zotlabs/Module/Photos.php:1207
+#: ../../Zotlabs/Lib/ThreadItem.php:707
+msgid "This is you"
+msgstr "Ets tú"
-#: ../../mod/menu.php:44
-msgid "Unable to update menu."
-msgstr "No s'ha pogut actualitzar el menú."
+#: ../../Zotlabs/Module/Photos.php:1091 ../../Zotlabs/Module/Photos.php:1209
+#: ../../Zotlabs/Lib/ThreadItem.php:709 ../../include/js_strings.php:6
+msgid "Comment"
+msgstr "Comentari"
-#: ../../mod/menu.php:53
-msgid "Unable to create menu."
-msgstr "No s'ha pogut crear el menú."
+#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574
+msgctxt "title"
+msgid "Likes"
+msgstr "Agrada"
-#: ../../mod/menu.php:89 ../../mod/menu.php:101
-msgid "Menu Name"
-msgstr "Nom del menú"
+#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574
+msgctxt "title"
+msgid "Dislikes"
+msgstr "Desagrada"
-#: ../../mod/menu.php:89
-msgid "Unique name (not visible on webpage) - required"
-msgstr "Nom únic (no visible a la pàgina web) - requerit"
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
+msgctxt "title"
+msgid "Agree"
+msgstr "Acord"
-#: ../../mod/menu.php:90 ../../mod/menu.php:102
-msgid "Menu Title"
-msgstr "Títol del menú"
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
+msgctxt "title"
+msgid "Disagree"
+msgstr "Desacord"
-#: ../../mod/menu.php:90
-msgid "Visible on webpage - leave empty for no title"
-msgstr "Visible a la pàgina web - deixar buit per a no posar títol"
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
+msgctxt "title"
+msgid "Abstain"
+msgstr "Abstenirse"
-#: ../../mod/menu.php:91
-msgid "Allow Bookmarks"
-msgstr "Permetre Marcadors"
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
+msgctxt "title"
+msgid "Attending"
+msgstr "Assistint"
-#: ../../mod/menu.php:91 ../../mod/menu.php:147
-msgid "Menu may be used to store saved bookmarks"
-msgstr "El menú es pot emprar per a guardar marcadors"
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
+msgctxt "title"
+msgid "Not attending"
+msgstr "Desassistint"
-#: ../../mod/menu.php:92 ../../mod/menu.php:149
-msgid "Submit and proceed"
-msgstr "Envia i procedeix"
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
+msgctxt "title"
+msgid "Might attend"
+msgstr "Podrien assistir"
-#: ../../mod/menu.php:104
-msgid "Drop"
-msgstr "Menysprea"
+#: ../../Zotlabs/Module/Photos.php:1126 ../../Zotlabs/Module/Photos.php:1138
+#: ../../Zotlabs/Lib/ThreadItem.php:181 ../../Zotlabs/Lib/ThreadItem.php:193
+#: ../../include/conversation.php:1717
+msgid "View all"
+msgstr "Veure tot"
-#: ../../mod/menu.php:108
-msgid "Bookmarks allowed"
-msgstr "Marcadors permesos"
+#: ../../Zotlabs/Module/Photos.php:1130 ../../Zotlabs/Lib/ThreadItem.php:185
+#: ../../include/taxonomy.php:403 ../../include/conversation.php:1741
+#: ../../include/channel.php:1158
+msgctxt "noun"
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] "Agrada"
+msgstr[1] "Agraden"
-#: ../../mod/menu.php:110
-msgid "Delete this menu"
-msgstr "Esborra el menú"
+#: ../../Zotlabs/Module/Photos.php:1135 ../../Zotlabs/Lib/ThreadItem.php:190
+#: ../../include/conversation.php:1744
+msgctxt "noun"
+msgid "Dislike"
+msgid_plural "Dislikes"
+msgstr[0] "Desagrada"
+msgstr[1] "Desagrada"
-#: ../../mod/menu.php:111 ../../mod/menu.php:144
-msgid "Edit menu contents"
-msgstr "Edita el contingut del menú"
+#: ../../Zotlabs/Module/Photos.php:1235
+msgid "Photo Tools"
+msgstr "Eines per Fotos"
-#: ../../mod/menu.php:112
-msgid "Edit this menu"
-msgstr "Edita el menú"
+#: ../../Zotlabs/Module/Photos.php:1244
+msgid "In This Photo:"
+msgstr "Hi apareixen:"
-#: ../../mod/menu.php:126
-msgid "Menu could not be deleted."
-msgstr "El menu no es pot esborrar."
+#: ../../Zotlabs/Module/Photos.php:1249
+msgid "Map"
+msgstr "Mapa"
-#: ../../mod/menu.php:139
-msgid "Edit Menu"
-msgstr "Edita Menú"
+#: ../../Zotlabs/Module/Photos.php:1257 ../../Zotlabs/Lib/ThreadItem.php:386
+msgctxt "noun"
+msgid "Likes"
+msgstr "Agrada"
-#: ../../mod/menu.php:143
-msgid "Add or remove entries to this menu"
-msgstr "Afegeix o esborra entrades a aquest menú"
+#: ../../Zotlabs/Module/Photos.php:1258 ../../Zotlabs/Lib/ThreadItem.php:387
+msgctxt "noun"
+msgid "Dislikes"
+msgstr "Desagrada"
-#: ../../mod/menu.php:145
-msgid "Menu name"
-msgstr "Nom del Menú"
+#: ../../Zotlabs/Module/Photos.php:1263 ../../Zotlabs/Lib/ThreadItem.php:392
+#: ../../include/acl_selectors.php:285
+msgid "Close"
+msgstr "Tanca"
-#: ../../mod/menu.php:145
-msgid "Must be unique, only seen by you"
-msgstr "Ha de ser únic, nomes vist per tú"
+#: ../../Zotlabs/Module/Photos.php:1337
+msgid "View Album"
+msgstr "Mostra'n l'àlbum"
-#: ../../mod/menu.php:146
-msgid "Menu title"
-msgstr "Títol del menú"
+#: ../../Zotlabs/Module/Photos.php:1348 ../../Zotlabs/Module/Photos.php:1361
+#: ../../Zotlabs/Module/Photos.php:1362
+msgid "Recent Photos"
+msgstr "Imatges recents"
-#: ../../mod/menu.php:146
-msgid "Menu title as seen by others"
-msgstr "Títol del menú vist pels altres"
+#: ../../Zotlabs/Module/Ping.php:265
+msgid "sent you a private message"
+msgstr "Se t'ha enviat un missatge privat"
-#: ../../mod/menu.php:147
-msgid "Allow bookmarks"
-msgstr "Marcadors permesos"
+#: ../../Zotlabs/Module/Ping.php:313
+msgid "added your channel"
+msgstr "el teu canal s'ha afegit"
-#: ../../mod/filestorage.php:82
-msgid "Permission Denied."
-msgstr "Permisos Denegats."
+#: ../../Zotlabs/Module/Ping.php:323
+msgid "g A l F d"
+msgstr "g A l F d"
-#: ../../mod/filestorage.php:98
-msgid "File not found."
-msgstr "Arxiu no torbat."
+#: ../../Zotlabs/Module/Ping.php:346
+msgid "[today]"
+msgstr "[avui]"
-#: ../../mod/filestorage.php:141
-msgid "Edit file permissions"
-msgstr "Edita els permisos d'arxiu"
+#: ../../Zotlabs/Module/Ping.php:355
+msgid "posted an event"
+msgstr "enviat un esdeveniment"
-#: ../../mod/filestorage.php:150
-msgid "Set/edit permissions"
-msgstr "Canvia/edita permisos"
+#: ../../Zotlabs/Module/Oexchange.php:27
+msgid "Unable to find your hub."
+msgstr "No es possible trobar el node"
-#: ../../mod/filestorage.php:151
-msgid "Include all files and sub folders"
-msgstr "Inclou tots als arxius i subdirectoris"
+#: ../../Zotlabs/Module/Oexchange.php:41
+msgid "Post successful."
+msgstr "Entrada realitzada amb èxit. "
-#: ../../mod/filestorage.php:152
-msgid "Return to file list"
-msgstr "Tornar al llistat d'arxius"
+#: ../../Zotlabs/Module/Openid.php:30
+msgid "OpenID protocol error. No ID returned."
+msgstr "Error del protocol OpenID. No ha retornat ID"
-#: ../../mod/filestorage.php:154
-msgid "Copy/paste this code to attach file to a post"
-msgstr "Copia/enganxa aquest codi per a adjuntar un arxiu a l'entrada"
+#: ../../Zotlabs/Module/Openid.php:193 ../../include/auth.php:226
+msgid "Login failed."
+msgstr "Identificació fallida."
-#: ../../mod/filestorage.php:155
-msgid "Copy/paste this URL to link file from a web page"
-msgstr "Copia/enganxa aquesta URL per a enllaçar l'arxiu d'una pàgina web"
+#: ../../Zotlabs/Module/Page.php:133
+msgid ""
+"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
+"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
+" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
+"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
+"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
+"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+
+#: ../../Zotlabs/Module/Pconfig.php:26 ../../Zotlabs/Module/Pconfig.php:59
+msgid "This setting requires special processing and editing has been blocked."
+msgstr "Aquest ajust requereix un procés espedial i l'edició esta bloquejada."
-#: ../../mod/filestorage.php:157
-msgid "Share this file"
-msgstr "Comparteix l'arxiu"
+#: ../../Zotlabs/Module/Pconfig.php:48
+msgid "Configuration Editor"
+msgstr "Editor de Configuració"
-#: ../../mod/filestorage.php:158
-msgid "Show URL to this file"
-msgstr "Mostra la URL d'aquest arxiu"
+#: ../../Zotlabs/Module/Pconfig.php:49
+msgid ""
+"Warning: Changing some settings could render your channel inoperable. Please"
+" leave this page unless you are comfortable with and knowledgeable about how"
+" to correctly use this feature."
+msgstr "atenció: Realitzar segons quins ajustos pot fer el canal inoperable. Deixa aquesta pàgina si no estas segur i tens suficients coneixements sobre l'ús correcte d'aquesta característica."
-#: ../../mod/filestorage.php:159
-msgid "Notify your contacts about this file"
-msgstr "Notifica als teus contactes aquest arxiu"
+#: ../../Zotlabs/Module/Pdledit.php:18
+msgid "Layout updated."
+msgstr "S'ha actualitzat la disposició."
-#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
-msgid "Contact not found."
-msgstr "Contacte no trobat."
+#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Pdledit.php:61
+msgid "Edit System Page Description"
+msgstr "Editor del Sistema de Descripció de Pàgines"
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
-msgstr "Suggeriment d'amistat enviada."
+#: ../../Zotlabs/Module/Pdledit.php:56
+msgid "Layout not found."
+msgstr "No s'ha trobat cap disposició de pàgina."
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
-msgstr "Amics Suggerits"
+#: ../../Zotlabs/Module/Pdledit.php:62
+msgid "Module Name:"
+msgstr "Nom del mòdul:"
-#: ../../mod/fsuggest.php:99
-#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Suggereix un amic per a %s"
+#: ../../Zotlabs/Module/Pdledit.php:63
+msgid "Layout Help"
+msgstr "Ajuda per la disposició de pàgina"
-#: ../../mod/magic.php:69
-msgid "Hub not found."
-msgstr "Concentrador no trobat."
+#: ../../Zotlabs/Module/Poke.php:168 ../../Zotlabs/Lib/Apps.php:226
+#: ../../include/conversation.php:960
+msgid "Poke"
+msgstr "Esperonar"
-#: ../../mod/poke.php:159
+#: ../../Zotlabs/Module/Poke.php:169
+msgid "Poke somebody"
+msgstr "Emprenyar algú"
+
+#: ../../Zotlabs/Module/Poke.php:172
msgid "Poke/Prod"
-msgstr "Emprenyat/Picat"
+msgstr "Esperonat/Picat"
-#: ../../mod/poke.php:160
-msgid "poke, prod or do other things to somebody"
+#: ../../Zotlabs/Module/Poke.php:173
+msgid "Poke, prod or do other things to somebody"
msgstr "emprenyar, picar o fer altres coses a algú"
-#: ../../mod/poke.php:161
+#: ../../Zotlabs/Module/Poke.php:180
msgid "Recipient"
msgstr "Destinatari"
-#: ../../mod/poke.php:162
+#: ../../Zotlabs/Module/Poke.php:181
msgid "Choose what you wish to do to recipient"
msgstr "Tria que vols fer amb el destinatari"
-#: ../../mod/poke.php:165
+#: ../../Zotlabs/Module/Poke.php:184 ../../Zotlabs/Module/Poke.php:185
msgid "Make this post private"
msgstr "Fer aquesta entrada privada"
-#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
-msgid "Invalid profile identifier."
-msgstr "Identificador invàlid de perfil."
-
-#: ../../mod/profperm.php:110
-msgid "Profile Visibility Editor"
-msgstr "Perfil del Editor de Visibilitat"
-
-#: ../../mod/profperm.php:114
-msgid "Click on a contact to add or remove."
-msgstr "Clica sobre el contacte per afegir o esborrar."
-
-#: ../../mod/profperm.php:123
-msgid "Visible To"
-msgstr "Visible per"
-
-#: ../../mod/impel.php:191
-#, php-format
-msgid "%s element installed"
-msgstr "%s element instal·lat"
-
-#: ../../mod/impel.php:194
+#: ../../Zotlabs/Module/Probe.php:30 ../../Zotlabs/Module/Probe.php:34
#, php-format
-msgid "%s element installation failed"
-msgstr "%s instal·lació d'element va fallar"
+msgid "Fetching URL returns error: %1$s"
+msgstr "URL sol·licitada retorna error: %1$s"
-#: ../../mod/profiles.php:18 ../../mod/profiles.php:174
-#: ../../mod/profiles.php:231 ../../mod/profiles.php:600
+#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:189
+#: ../../Zotlabs/Module/Profiles.php:246 ../../Zotlabs/Module/Profiles.php:625
msgid "Profile not found."
msgstr "Perfil no trobat."
-#: ../../mod/profiles.php:38
+#: ../../Zotlabs/Module/Profiles.php:44
msgid "Profile deleted."
msgstr "Perfil eliminat."
-#: ../../mod/profiles.php:56 ../../mod/profiles.php:92
+#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:104
msgid "Profile-"
msgstr "Perfil-"
-#: ../../mod/profiles.php:77 ../../mod/profiles.php:120
+#: ../../Zotlabs/Module/Profiles.php:89 ../../Zotlabs/Module/Profiles.php:132
msgid "New profile created."
msgstr "Nou perfil creat."
-#: ../../mod/profiles.php:98
+#: ../../Zotlabs/Module/Profiles.php:110
msgid "Profile unavailable to clone."
msgstr "Perfil que no es pot clonar."
-#: ../../mod/profiles.php:136
+#: ../../Zotlabs/Module/Profiles.php:151
msgid "Profile unavailable to export."
msgstr "Perfil que no es pot exportar."
-#: ../../mod/profiles.php:241
+#: ../../Zotlabs/Module/Profiles.php:256
msgid "Profile Name is required."
msgstr "Es requereix el Nom del Perfil."
-#: ../../mod/profiles.php:404
+#: ../../Zotlabs/Module/Profiles.php:427
msgid "Marital Status"
msgstr "Estat Marital"
-#: ../../mod/profiles.php:408
+#: ../../Zotlabs/Module/Profiles.php:431
msgid "Romantic Partner"
msgstr "Company/a Romàntic"
-#: ../../mod/profiles.php:412
+#: ../../Zotlabs/Module/Profiles.php:435 ../../Zotlabs/Module/Profiles.php:736
msgid "Likes"
msgstr "Agrada"
-#: ../../mod/profiles.php:416
+#: ../../Zotlabs/Module/Profiles.php:439 ../../Zotlabs/Module/Profiles.php:737
msgid "Dislikes"
msgstr "Desagrada"
-#: ../../mod/profiles.php:420
+#: ../../Zotlabs/Module/Profiles.php:443 ../../Zotlabs/Module/Profiles.php:744
msgid "Work/Employment"
msgstr "Treball/Feina"
-#: ../../mod/profiles.php:423
+#: ../../Zotlabs/Module/Profiles.php:446
msgid "Religion"
msgstr "Religió"
-#: ../../mod/profiles.php:427
+#: ../../Zotlabs/Module/Profiles.php:450
msgid "Political Views"
msgstr "Idees Polítiques"
-#: ../../mod/profiles.php:431 ../../mod/id.php:33
-msgid "Gender"
-msgstr "Gènere"
-
-#: ../../mod/profiles.php:435
+#: ../../Zotlabs/Module/Profiles.php:458
msgid "Sexual Preference"
msgstr "Preferència Sexual"
-#: ../../mod/profiles.php:439
+#: ../../Zotlabs/Module/Profiles.php:462
msgid "Homepage"
msgstr "Pàgina Personal"
-#: ../../mod/profiles.php:443
+#: ../../Zotlabs/Module/Profiles.php:466
msgid "Interests"
msgstr "Interessos"
-#: ../../mod/profiles.php:447 ../../mod/admin.php:994
-msgid "Address"
-msgstr "Adreça"
-
-#: ../../mod/profiles.php:537
+#: ../../Zotlabs/Module/Profiles.php:560
msgid "Profile updated."
msgstr "Perfil actualitzat."
-#: ../../mod/profiles.php:626
-msgid "Hide your contact/friend list from viewers of this profile?"
-msgstr "Amaga la teva llista de contactes/amics dels visitadors d'aquest perfil?"
+#: ../../Zotlabs/Module/Profiles.php:644
+msgid "Hide your connections list from viewers of this profile"
+msgstr "Amaga dels curiosos la teva llista de connexions d'aquest perfil"
-#: ../../mod/profiles.php:666
+#: ../../Zotlabs/Module/Profiles.php:686
msgid "Edit Profile Details"
msgstr "Edita els Detalls del Perfil"
-#: ../../mod/profiles.php:668
+#: ../../Zotlabs/Module/Profiles.php:688
msgid "View this profile"
msgstr "Veure aquest perfil"
-#: ../../mod/profiles.php:670
-msgid "Change Profile Photo"
-msgstr "Canviar Foto del Perfil"
+#: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:771
+#: ../../include/channel.php:959
+msgid "Edit visibility"
+msgstr "Editar visibilitat"
+
+#: ../../Zotlabs/Module/Profiles.php:690
+msgid "Profile Tools"
+msgstr "Eines per Perfils"
+
+#: ../../Zotlabs/Module/Profiles.php:691
+msgid "Change cover photo"
+msgstr "Canviar la foto de portada"
-#: ../../mod/profiles.php:671
+#: ../../Zotlabs/Module/Profiles.php:692 ../../include/channel.php:930
+msgid "Change profile photo"
+msgstr "Canviar la foto del perfil"
+
+#: ../../Zotlabs/Module/Profiles.php:693
msgid "Create a new profile using these settings"
msgstr "Crea un perfil nou amb aquests ajustos"
-#: ../../mod/profiles.php:672
+#: ../../Zotlabs/Module/Profiles.php:694
msgid "Clone this profile"
msgstr "Clonar aquest perfil"
-#: ../../mod/profiles.php:673
+#: ../../Zotlabs/Module/Profiles.php:695
msgid "Delete this profile"
msgstr "Elimina aquest perfil"
-#: ../../mod/profiles.php:675
+#: ../../Zotlabs/Module/Profiles.php:696
+msgid "Add profile things"
+msgstr "Afegeix coses al perfil"
+
+#: ../../Zotlabs/Module/Profiles.php:697 ../../include/widgets.php:105
+#: ../../include/conversation.php:1526
+msgid "Personal"
+msgstr "Personal"
+
+#: ../../Zotlabs/Module/Profiles.php:699
+msgid "Relation"
+msgstr "Relació"
+
+#: ../../Zotlabs/Module/Profiles.php:700 ../../include/datetime.php:48
+msgid "Miscellaneous"
+msgstr "Miscelania"
+
+#: ../../Zotlabs/Module/Profiles.php:702
msgid "Import profile from file"
msgstr "Importa perfil des d'un arxiu"
-#: ../../mod/profiles.php:676
+#: ../../Zotlabs/Module/Profiles.php:703
msgid "Export profile to file"
msgstr "Exporta perfil a un arxiu"
-#: ../../mod/profiles.php:677
-msgid "Profile Name:"
-msgstr "Nom del Perfil:"
+#: ../../Zotlabs/Module/Profiles.php:704
+msgid "Your gender"
+msgstr "El teu gènere"
-#: ../../mod/profiles.php:678
-msgid "Your Full Name:"
-msgstr "El Teu Nom Complet"
+#: ../../Zotlabs/Module/Profiles.php:705
+msgid "Marital status"
+msgstr "Estat marital"
-#: ../../mod/profiles.php:679
-msgid "Title/Description:"
-msgstr "Títol/Descripció:"
+#: ../../Zotlabs/Module/Profiles.php:706
+msgid "Sexual preference"
+msgstr "Preferència sexual"
-#: ../../mod/profiles.php:680
-msgid "Your Gender:"
-msgstr "El Teu Gènere:"
+#: ../../Zotlabs/Module/Profiles.php:709
+msgid "Profile name"
+msgstr "Nom del perfil"
-#: ../../mod/profiles.php:681
-msgid "Birthday :"
-msgstr "Aniversari:"
+#: ../../Zotlabs/Module/Profiles.php:711
+msgid "This is your default profile."
+msgstr "Aquest es el teu perfil per defecte"
+
+#: ../../Zotlabs/Module/Profiles.php:713
+msgid "Your full name"
+msgstr "El teu nom complet"
-#: ../../mod/profiles.php:682
-msgid "Street Address:"
-msgstr "Carrer:"
+#: ../../Zotlabs/Module/Profiles.php:714
+msgid "Title/Description"
+msgstr "Títol/Descripció"
-#: ../../mod/profiles.php:683
-msgid "Locality/City:"
-msgstr "Població/Ciutat:"
+#: ../../Zotlabs/Module/Profiles.php:717
+msgid "Street address"
+msgstr "Carrer"
-#: ../../mod/profiles.php:684
-msgid "Postal/Zip Code:"
-msgstr "Codi Postal:"
+#: ../../Zotlabs/Module/Profiles.php:718
+msgid "Locality/City"
+msgstr "Població/Ciutat"
-#: ../../mod/profiles.php:685
-msgid "Country:"
-msgstr "País:"
+#: ../../Zotlabs/Module/Profiles.php:719
+msgid "Region/State"
+msgstr "Regió/Estat"
-#: ../../mod/profiles.php:686
-msgid "Region/State:"
-msgstr "Regió/Estat:"
+#: ../../Zotlabs/Module/Profiles.php:720
+msgid "Postal/Zip code"
+msgstr "Codi Postal"
-#: ../../mod/profiles.php:687
-msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
-msgstr "<span class=\"heart\">&hearts;</span> Marital Estatus:"
+#: ../../Zotlabs/Module/Profiles.php:721
+msgid "Country"
+msgstr "País"
-#: ../../mod/profiles.php:688
-msgid "Who: (if applicable)"
-msgstr "Qui: (si es aplicable)"
+#: ../../Zotlabs/Module/Profiles.php:726
+msgid "Who (if applicable)"
+msgstr "Qui (si es aplicable)"
-#: ../../mod/profiles.php:689
+#: ../../Zotlabs/Module/Profiles.php:726
msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
msgstr "Examples: cathy123, Cathy Williams, cathy@example.com"
-#: ../../mod/profiles.php:690
-msgid "Since [date]:"
-msgstr "Des de [data]:"
-
-#: ../../mod/profiles.php:692
-msgid "Homepage URL:"
-msgstr "Pàgina Personal URL:"
-
-#: ../../mod/profiles.php:695
-msgid "Religious Views:"
-msgstr "Creences Religioses:"
+#: ../../Zotlabs/Module/Profiles.php:727
+msgid "Since (date)"
+msgstr "Des de (data)"
-#: ../../mod/profiles.php:696
-msgid "Keywords:"
-msgstr "Paraules Clau:"
-
-#: ../../mod/profiles.php:699
-msgid "Example: fishing photography software"
-msgstr "Exemple: software de fotografia submarina"
+#: ../../Zotlabs/Module/Profiles.php:730
+msgid "Tell us about yourself"
+msgstr "Quelcom sobre tu"
-#: ../../mod/profiles.php:700
-msgid "Used in directory listings"
-msgstr "Emprat en els llistats de directoris"
+#: ../../Zotlabs/Module/Profiles.php:732
+msgid "Hometown"
+msgstr "Ciutat Natal"
-#: ../../mod/profiles.php:701
-msgid "Tell us about yourself..."
-msgstr "Quelcom sobre tú:"
+#: ../../Zotlabs/Module/Profiles.php:733
+msgid "Political views"
+msgstr "Idees polítiques"
-#: ../../mod/profiles.php:702
-msgid "Hobbies/Interests"
-msgstr "Aficions/Interessos"
+#: ../../Zotlabs/Module/Profiles.php:734
+msgid "Religious views"
+msgstr "Creences religioses"
-#: ../../mod/profiles.php:703
-msgid "Contact information and Social Networks"
-msgstr "Informació de Contacte i Xarxes Socials"
+#: ../../Zotlabs/Module/Profiles.php:735
+msgid "Keywords used in directory listings"
+msgstr "Paraules clau emprades en els llistats de directoris"
-#: ../../mod/profiles.php:704
-msgid "My other channels"
-msgstr "Els meus altres canals"
+#: ../../Zotlabs/Module/Profiles.php:735
+msgid "Example: fishing photography software"
+msgstr "Exemple: software de fotografia submarina"
-#: ../../mod/profiles.php:705
+#: ../../Zotlabs/Module/Profiles.php:738
msgid "Musical interests"
msgstr "Interessos Musicals"
-#: ../../mod/profiles.php:706
+#: ../../Zotlabs/Module/Profiles.php:739
msgid "Books, literature"
msgstr "Llibres, literatura"
-#: ../../mod/profiles.php:707
+#: ../../Zotlabs/Module/Profiles.php:740
msgid "Television"
msgstr "Televisió"
-#: ../../mod/profiles.php:708
-msgid "Film/dance/culture/entertainment"
+#: ../../Zotlabs/Module/Profiles.php:741
+msgid "Film/Dance/Culture/Entertainment"
msgstr "Pel·lícules/Dansa/Cultura/Entreteniment"
-#: ../../mod/profiles.php:709
-msgid "Love/romance"
-msgstr "Amor/Romace"
-
-#: ../../mod/profiles.php:710
-msgid "Work/employment"
-msgstr "Treball/feina"
-
-#: ../../mod/profiles.php:711
-msgid "School/education"
-msgstr "Escola/educació"
-
-#: ../../mod/profiles.php:717
-msgid "This is your default profile."
-msgstr "Aquest es el teu perfil per defecte"
-
-#: ../../mod/profiles.php:728
-msgid "Age: "
-msgstr "Edat:"
-
-#: ../../mod/profiles.php:771
-msgid "Edit/Manage Profiles"
-msgstr "Edita/Gestiona Perfils"
-
-#: ../../mod/profiles.php:772
-msgid "Add profile things"
-msgstr "Afegeix coses al perfil"
-
-#: ../../mod/profiles.php:773
-msgid "Include desirable objects in your profile"
-msgstr "Inclou objectius desitjables al teu perfil"
-
-#: ../../mod/ratings.php:69
-msgid "No ratings"
-msgstr "No valorat"
-
-#: ../../mod/ratings.php:99
-msgid "Ratings"
-msgstr "Valoracions"
-
-#: ../../mod/ratings.php:100
-msgid "Rating: "
-msgstr "Valoració:"
-
-#: ../../mod/ratings.php:101
-msgid "Website: "
-msgstr "Lloc web:"
-
-#: ../../mod/ratings.php:103
-msgid "Description: "
-msgstr "Descripció:"
-
-#: ../../mod/viewsrc.php:38
-msgid "Source of Item"
-msgstr "Origen de l'article"
-
-#: ../../mod/setup.php:187
-msgid "$Projectname Server - Setup"
-msgstr "Servidor $Projectname - Configuració"
-
-#: ../../mod/setup.php:191
-msgid "Could not connect to database."
-msgstr "No puc connectar amb la base de dades"
-
-#: ../../mod/setup.php:195
-msgid ""
-"Could not connect to specified site URL. Possible SSL certificate or DNS "
-"issue."
-msgstr "No s'ha pogut connectar a l'URL del lloc especificat. Possible problema amb el certificat SSL o de DNS."
-
-#: ../../mod/setup.php:202
-msgid "Could not create table."
-msgstr "No puc crear la taula."
-
-#: ../../mod/setup.php:207
-msgid "Your site database has been installed."
-msgstr "La teva base de dades del lloc s'ha instal·lat."
-
-#: ../../mod/setup.php:211
-msgid ""
-"You may need to import the file \"install/schema_xxx.sql\" manually using a "
-"database client."
-msgstr "Podria ser necessari importar el fitxer \"install / schema_xxx.sql\" manualment utilitzant un client de base de dades."
-
-#: ../../mod/setup.php:212 ../../mod/setup.php:280 ../../mod/setup.php:730
-msgid "Please see the file \"install/INSTALL.txt\"."
-msgstr "Si us plau, consulteu el fitxer \"install / INSTALL.txt\"."
-
-#: ../../mod/setup.php:277
-msgid "System check"
-msgstr "Comprovació del sistema"
-
-#: ../../mod/setup.php:282
-msgid "Check again"
-msgstr "Comprova de nou"
-
-#: ../../mod/setup.php:304
-msgid "Database connection"
-msgstr "Connexió de base de dades"
-
-#: ../../mod/setup.php:305
-msgid ""
-"In order to install $Projectname we need to know how to connect to your "
-"database."
-msgstr "Per tal d'instaŀlar $Projectname cal configurar la connexió a la base de dades."
-
-#: ../../mod/setup.php:306
-msgid ""
-"Please contact your hosting provider or site administrator if you have "
-"questions about these settings."
-msgstr "Si us plau, poseu-vos en contacte amb el proveïdor de serveis o administrador del lloc si vostè té preguntes sobre aquests paràmetres."
-
-#: ../../mod/setup.php:307
-msgid ""
-"The database you specify below should already exist. If it does not, please "
-"create it before continuing."
-msgstr "La base de dades s'especifica a continuació ja ha d'existir. Si no és així, si us plau crear-la abans de continuar."
-
-#: ../../mod/setup.php:311
-msgid "Database Server Name"
-msgstr "Base de Dades Nom del Servidor"
-
-#: ../../mod/setup.php:311
-msgid "Default is localhost"
-msgstr "Per defecte es localhost"
-
-#: ../../mod/setup.php:312
-msgid "Database Port"
-msgstr "Port per a la Base de Dades"
-
-#: ../../mod/setup.php:312
-msgid "Communication port number - use 0 for default"
-msgstr "Numero del port de comunicacions - empra 0 per defecte"
-
-#: ../../mod/setup.php:313
-msgid "Database Login Name"
-msgstr "Base de Dades Nom d'Accès"
-
-#: ../../mod/setup.php:314
-msgid "Database Login Password"
-msgstr "Base de Dades Contrasenya d'Accès"
-
-#: ../../mod/setup.php:315
-msgid "Database Name"
-msgstr "Nom de la Base de Dades"
-
-#: ../../mod/setup.php:316
-msgid "Database Type"
-msgstr "Tipus de Base de Dades"
-
-#: ../../mod/setup.php:318 ../../mod/setup.php:359
-msgid "Site administrator email address"
-msgstr "Adreça de correu de l'administrador del lloc"
-
-#: ../../mod/setup.php:318 ../../mod/setup.php:359
-msgid ""
-"Your account email address must match this in order to use the web admin "
-"panel."
-msgstr "El teu compte de email ha de coincidir amb això per poder emprar el panel web d'administrador."
-
-#: ../../mod/setup.php:319 ../../mod/setup.php:361
-msgid "Website URL"
-msgstr "URL del lloc web"
-
-#: ../../mod/setup.php:319 ../../mod/setup.php:361
-msgid "Please use SSL (https) URL if available."
-msgstr "Si us plau, empra SSL (https) URL si està disponible."
-
-#: ../../mod/setup.php:321 ../../mod/setup.php:363
-msgid "Please select a default timezone for your website"
-msgstr "Si us plau, tria la zona horària del teu lloc web"
-
-#: ../../mod/setup.php:348
-msgid "Site settings"
-msgstr "Ajustos del lloc"
-
-#: ../../mod/setup.php:413
-msgid "Could not find a command line version of PHP in the web server PATH."
-msgstr "No s'ha pogut trobar una versió de línia d'ordres del PHP en el PATH del servidor web."
-
-#: ../../mod/setup.php:414
-msgid ""
-"If you don't have a command line version of PHP installed on server, you "
-"will not be able to run background polling via cron."
-msgstr "Si vostè no té una versió de línia d'ordres del PHP instal·lada al servidor, vostè no serà capaç d'executar sondejos en segon pla via cron."
-
-#: ../../mod/setup.php:418
-msgid "PHP executable path"
-msgstr "Camí cap l'executable de PHP"
-
-#: ../../mod/setup.php:418
-msgid ""
-"Enter full path to php executable. You can leave this blank to continue the "
-"installation."
-msgstr "Introdueix el camí cap l'executable de php. Pots deixa-ho en blanc i continuar l'instal·lació."
-
-#: ../../mod/setup.php:423
-msgid "Command line PHP"
-msgstr "Línia d'ordres de PHP"
-
-#: ../../mod/setup.php:432
-msgid ""
-"The command line version of PHP on your system does not have "
-"\"register_argc_argv\" enabled."
-msgstr "La versió de línia d'ordres de PHP al teu sistema no te el \"register_argc_argv\" activat."
-
-#: ../../mod/setup.php:433
-msgid "This is required for message delivery to work."
-msgstr "Això es requereix per que funcioni l'entrega de missatges."
-
-#: ../../mod/setup.php:436
-msgid "PHP register_argc_argv"
-msgstr "PHP register_argc_argv"
-
-#: ../../mod/setup.php:454
-#, php-format
-msgid ""
-"Your max allowed total upload size is set to %s. Maximum size of one file to"
-" upload is set to %s. You are allowed to upload up to %d files at once."
-msgstr "La mida màxima que se't permet pujar està establerta en %s. La mida màxima per arxiu pujat es de %s. Se't permet pujar fins a %d arxius d'una vegada."
-
-#: ../../mod/setup.php:459
-msgid "You can adjust these settings in the servers php.ini."
-msgstr "Pots ajustar aquests valors a l'arxiu php.ini del servidor"
-
-#: ../../mod/setup.php:461
-msgid "PHP upload limits"
-msgstr "Límits de pujada de PHP"
-
-#: ../../mod/setup.php:484
-msgid ""
-"Error: the \"openssl_pkey_new\" function on this system is not able to "
-"generate encryption keys"
-msgstr "Error: la funció \"openssl_pkey_new\" en aquest sistema no es capaç de generar claus d'encriptació"
-
-#: ../../mod/setup.php:485
-msgid ""
-"If running under Windows, please see "
-"\"http://www.php.net/manual/en/openssl.installation.php\"."
-msgstr "Si esta funcionant sota Windows, per favor, miri \"http://www.php.net/manual/en/openssl.installation.php\"."
-
-#: ../../mod/setup.php:488
-msgid "Generate encryption keys"
-msgstr "Generar claus de xifrat"
-
-#: ../../mod/setup.php:500
-msgid "libCurl PHP module"
-msgstr "mòdul PHP libCurl "
-
-#: ../../mod/setup.php:501
-msgid "GD graphics PHP module"
-msgstr "mòdul PHP GD gràfics"
-
-#: ../../mod/setup.php:502
-msgid "OpenSSL PHP module"
-msgstr "mòdul PHP OpenSSL"
-
-#: ../../mod/setup.php:503
-msgid "mysqli or postgres PHP module"
-msgstr "mòdul PHP mysqli o postgres"
-
-#: ../../mod/setup.php:504
-msgid "mb_string PHP module"
-msgstr "mòdul PHP mb_string"
-
-#: ../../mod/setup.php:505
-msgid "mcrypt PHP module"
-msgstr "mòdul PHP mcrypt"
-
-#: ../../mod/setup.php:506
-msgid "xml PHP module"
-msgstr "Mòdul xml de PHP"
-
-#: ../../mod/setup.php:510 ../../mod/setup.php:512
-msgid "Apache mod_rewrite module"
-msgstr "mòdul Apache mod_rewrite"
-
-#: ../../mod/setup.php:510
-msgid ""
-"Error: Apache webserver mod-rewrite module is required but not installed."
-msgstr "Error: el mòdul mod-rewrite del servidor web Apache es requereix i no està instal·lat."
-
-#: ../../mod/setup.php:516 ../../mod/setup.php:519
-msgid "proc_open"
-msgstr "proc_open"
-
-#: ../../mod/setup.php:516
-msgid ""
-"Error: proc_open is required but is either not installed or has been "
-"disabled in php.ini"
-msgstr "Error: es requereix proc_open però o no està instal·lat o ha estat desactivat a php.ini"
-
-#: ../../mod/setup.php:524
-msgid "Error: libCURL PHP module required but not installed."
-msgstr "Error: el mòdul PHP libCURL es requereix però no està instal·lat."
-
-#: ../../mod/setup.php:528
-msgid ""
-"Error: GD graphics PHP module with JPEG support required but not installed."
-msgstr "Error: el mòdul PHP GD graphics amb support JPEG es requereix però no està instal·lat."
-
-#: ../../mod/setup.php:532
-msgid "Error: openssl PHP module required but not installed."
-msgstr "Error: el mòdul PHP openssl es requereix però no està instal·lat."
-
-#: ../../mod/setup.php:536
-msgid ""
-"Error: mysqli or postgres PHP module required but neither are installed."
-msgstr "Error: el mòdul PHO mysqli o postgres es requereix però no està instal·lat."
-
-#: ../../mod/setup.php:540
-msgid "Error: mb_string PHP module required but not installed."
-msgstr "Error: el mòdul PHP mb_string es requereix però no està instal·lat."
-
-#: ../../mod/setup.php:544
-msgid "Error: mcrypt PHP module required but not installed."
-msgstr "Error: el mòdul PHP mcrypt es requereix però no està instal·lat."
-
-#: ../../mod/setup.php:548
-msgid "Error: xml PHP module required for DAV but not installed."
-msgstr "Error: el mòdul xml de PHP es requereix per DAV però no està instal·lat."
-
-#: ../../mod/setup.php:566
-msgid ""
-"The web installer needs to be able to create a file called \".htconfig.php\""
-" in the top folder of your web server and it is unable to do so."
-msgstr "L'instaŀlador ha de poder crear i modificar un fitxer anomenat «.htconfig.php» a la carpeta arrel del servidor, però sembla que no ho pot fer."
-
-#: ../../mod/setup.php:567
-msgid ""
-"This is most often a permission setting, as the web server may not be able "
-"to write files in your folder - even if you can."
-msgstr "Això sol ser un problema de permisos. Per molt que el teu usuari pugui modificar-lo, és el del servidor web qui necessita els poders de modificació."
-
-#: ../../mod/setup.php:568
-msgid ""
-"At the end of this procedure, we will give you a text to save in a file "
-"named .htconfig.php in your Red top folder."
-msgstr "Al final d'aquest procés hauràs de desar un text a l'arxiu «.htconfig.php», que es troba a la carpeta arrel del servidor."
-
-#: ../../mod/setup.php:569
-msgid ""
-"You can alternatively skip this procedure and perform a manual installation."
-" Please see the file \"install/INSTALL.txt\" for instructions."
-msgstr "Aquest procés és opcional. Per a fer una instaŀlació manual consulta les instruccions a «install/INSTALL.txt\"."
+#: ../../Zotlabs/Module/Profiles.php:742
+msgid "Hobbies/Interests"
+msgstr "Aficions/Interessos"
-#: ../../mod/setup.php:572
-msgid ".htconfig.php is writable"
-msgstr "L'arxiu «.htconfig.php» es pot modificar"
+#: ../../Zotlabs/Module/Profiles.php:743
+msgid "Love/Romance"
+msgstr "Amor/Romace"
-#: ../../mod/setup.php:586
-msgid ""
-"Red uses the Smarty3 template engine to render its web views. Smarty3 "
-"compiles templates to PHP to speed up rendering."
-msgstr "Red fa servir el motor de plantilles Smarty3 per a renderitzar les vistes més ràpidament."
+#: ../../Zotlabs/Module/Profiles.php:745
+msgid "School/Education"
+msgstr "Escola/Educació"
-#: ../../mod/setup.php:587
-#, php-format
-msgid ""
-"In order to store these compiled templates, the web server needs to have "
-"write access to the directory %s under the Red top level folder."
-msgstr "Per tal de guardar aquestes plantilles compilades, el servidor web necessita tenir premis d'escriptura en el directori %s sota la carpeta principal de Red."
+#: ../../Zotlabs/Module/Profiles.php:746
+msgid "Contact information and social networks"
+msgstr "Informació de contacte i xarxes socials"
-#: ../../mod/setup.php:588 ../../mod/setup.php:609
-msgid ""
-"Please ensure that the user that your web server runs as (e.g. www-data) has"
-" write access to this folder."
-msgstr "Comprova que l'usuari que executa el servidor (www-data en Apache) té permisos d'escriptura en aquesta carpeta."
+#: ../../Zotlabs/Module/Profiles.php:747
+msgid "My other channels"
+msgstr "Els meus altres canals"
-#: ../../mod/setup.php:589
-#, php-format
-msgid ""
-"Note: as a security measure, you should give the web server write access to "
-"%s only--not the template files (.tpl) that it contains."
-msgstr "Nota: com a mesura de seguretat l'usuari del servidor web ha de tenir accés d'escriptura només a %s, i no a les plantilles (.tpl) que conté."
+#: ../../Zotlabs/Module/Profiles.php:767 ../../include/channel.php:955
+msgid "Profile Image"
+msgstr "Imatge del Perfil"
-#: ../../mod/setup.php:592
-#, php-format
-msgid "%s is writable"
-msgstr "Es pot escriure a %s"
+#: ../../Zotlabs/Module/Profiles.php:777 ../../include/nav.php:88
+#: ../../include/channel.php:937
+msgid "Edit Profiles"
+msgstr "Editar Perfils"
-#: ../../mod/setup.php:608
+#: ../../Zotlabs/Module/Profile_photo.php:179
msgid ""
-"Red uses the store directory to save uploaded files. The web server needs to"
-" have write access to the store directory under the Red top level folder"
-msgstr "Red fa servir la carpeta «store» per a desar els fitxers pujats. Per tant, el servidor web necessita tenir permís d'escriptura en aquesta carpeta, que està a l'arrel del servidor web."
-
-#: ../../mod/setup.php:612
-msgid "store is writable"
-msgstr "Es pot escriure al magatzem (store)"
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Refresca la memòria cau del navegador si la foto no s'actualitza immediatament. Dreceres: «Ctrl+F5» i «Ctrl+Maj+R»"
-#: ../../mod/setup.php:645
-msgid ""
-"SSL certificate cannot be validated. Fix certificate or disable https access"
-" to this site."
-msgstr "El certificat SSL no s'ha pogut validar. Arregla-ho o deshabilita l'accés https a aquest lloc"
+#: ../../Zotlabs/Module/Profile_photo.php:367
+msgid "Upload Profile Photo"
+msgstr "Puja una Foto pel Perfil"
-#: ../../mod/setup.php:646
-msgid ""
-"If you have https access to your website or allow connections to TCP port "
-"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
-"NOT use self-signed certificates!"
-msgstr "Si tens accès pet https al teu lloc web o permets connexions pel port TCP 443 (port https), Has d'emprar un certificat VÀLID. NO es poden emprar certificats AUTO-SIGNATS!"
+#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63
+msgid "Invalid profile identifier."
+msgstr "Identificador invàlid de perfil."
-#: ../../mod/setup.php:647
-msgid ""
-"This restriction is incorporated because public posts from you may for "
-"example contain references to images on your own hub."
-msgstr "El motiu d'aquesta restricció és que les teves entrades públiques poden contenir referències a imatges del teu propi hub."
+#: ../../Zotlabs/Module/Profperm.php:115
+msgid "Profile Visibility Editor"
+msgstr "Perfil del Editor de Visibilitat"
-#: ../../mod/setup.php:648
-msgid ""
-"If your certificate is not recognized, members of other sites (who may "
-"themselves have valid certificates) will get a warning message on their own "
-"site complaining about security issues."
-msgstr "Si el teu certificat no és reconegut, llavors el membres d'altres hubs, encara que tinguin certificats vàlids, rebran una advertència de seguretat en carregar contingut teu."
+#: ../../Zotlabs/Module/Profperm.php:117 ../../include/channel.php:1249
+msgid "Profile"
+msgstr "Perfil"
-#: ../../mod/setup.php:649
-msgid ""
-"This can cause usability issues elsewhere (not just on your own site) so we "
-"must insist on this requirement."
-msgstr "Per tant, com que perjudica la usabilitat més enllà del teu lloc, la restricció de tenir un certificat reconegut és molt important."
+#: ../../Zotlabs/Module/Profperm.php:119
+msgid "Click on a contact to add or remove."
+msgstr "Clica sobre el contacte per afegir o esborrar."
-#: ../../mod/setup.php:650
-msgid ""
-"Providers are available that issue free certificates which are browser-"
-"valid."
-msgstr "Hi ha autoritats de certificació reconegudes que ofereixen certificats gratuïts."
+#: ../../Zotlabs/Module/Profperm.php:128
+msgid "Visible To"
+msgstr "Visible per"
-#: ../../mod/setup.php:652
-msgid "SSL certificate validation"
-msgstr "Validació del certificat SSL"
+#: ../../Zotlabs/Module/Pubsites.php:22 ../../include/widgets.php:1270
+msgid "Public Hubs"
+msgstr "Nodes Públics"
-#: ../../mod/setup.php:658
+#: ../../Zotlabs/Module/Pubsites.php:25
msgid ""
-"Url rewrite in .htaccess is not working. Check your server "
-"configuration.Test: "
-msgstr "No es poden reescriure les URL a «.htaccess». Comprova la configuració del servidor:"
-
-#: ../../mod/setup.php:661
-msgid "Url rewrite is working"
-msgstr "Es poden reescriure les URL a «.htaccess»"
+"The listed hubs allow public registration for the $Projectname network. All "
+"hubs in the network are interlinked so membership on any of them conveys "
+"membership in the network as a whole. Some hubs may require subscription or "
+"provide tiered service plans. The hub itself <strong>may</strong> provide "
+"additional details."
+msgstr "Els nodes llistats permeten registrar usuaris de la xarxa $Projectname. Com que tots els nodes estan enllaçats entre ells, la identitat és vàlida a tota la xarxa. Alguns nodes poden demanar subscripció o oferir serveis addicional de pagament. Per a més detalls, <strong>proveu</strong> de seguir els enllaços dels proveïdors."
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Hub URL"
+msgstr "URL del Node"
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Access Type"
+msgstr "Tipus d'accés"
-#: ../../mod/setup.php:670
-msgid ""
-"The database configuration file \".htconfig.php\" could not be written. "
-"Please use the enclosed text to create a configuration file in your web "
-"server root."
-msgstr "L'arxiu de configuracio de la base de dades «.htconfig.php» no s'ha pogut modificar. El pots crear tu a l'arrel del servidor web amb el text de la caixa com a contingut."
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Registration Policy"
+msgstr "Condicions de registre"
-#: ../../mod/setup.php:694
-msgid "Errors encountered creating database tables."
-msgstr "S'han produït errors mentre es creaven taules a la base de dades."
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Stats"
+msgstr "Estadístiques"
-#: ../../mod/setup.php:728
-msgid "<h1>What next</h1>"
-msgstr "<h1>I ara què?</h1>"
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Software"
+msgstr "Programari"
-#: ../../mod/setup.php:729
-msgid ""
-"IMPORTANT: You will need to [manually] setup a scheduled task for the "
-"poller."
-msgstr "IMPORTANT! Cal que configuris manualment una execució periòdica del \"poller\"."
+#: ../../Zotlabs/Module/Pubsites.php:31 ../../Zotlabs/Module/Ratings.php:103
+#: ../../include/conversation.php:959
+msgid "Ratings"
+msgstr "Valoracions"
-#: ../../mod/openid.php:26
-msgid "OpenID protocol error. No ID returned."
-msgstr "Error del protocol OpenID. No ha retornat ID"
+#: ../../Zotlabs/Module/Pubsites.php:38
+msgid "Rate"
+msgstr "Puntua"
-#: ../../mod/openid.php:72 ../../mod/openid.php:180 ../../mod/post.php:286
-#, php-format
-msgid "Welcome %s. Remote authentication successful."
-msgstr "Benvingut %s. Autenticació remota reeixida."
+#: ../../Zotlabs/Module/Rate.php:160
+msgid "Website:"
+msgstr "Lloc web:"
-#: ../../mod/tagger.php:96
+#: ../../Zotlabs/Module/Rate.php:163
#, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
-msgstr "%1$s ha etiquetat %3$s de %2$s amb %4$s"
-
-#: ../../mod/uexport.php:41 ../../mod/uexport.php:42
-msgid "Export Channel"
-msgstr "Exportar Canal"
+msgid "Remote Channel [%s] (not yet known on this site)"
+msgstr "Canal Remot [%s] (encara no es coneix en aquest lloc)"
-#: ../../mod/uexport.php:43
-msgid ""
-"Export your basic channel information to a small file. This acts as a "
-"backup of your connections, permissions, profile and basic data, which can "
-"be used to import your data to a new hub, but\tdoes not contain your "
-"content."
-msgstr "Exporta la informació bàsica del canal a un petit arxiu. Això actua com a còpia de recolzament de les teves connexions, permisos, perfil i dades bàsiques, les quals pots emprar per traslladar aquestes dades a una altre lloc/centre, però no conté el contingut del canal."
+#: ../../Zotlabs/Module/Rate.php:164
+msgid "Rating (this information is public)"
+msgstr "Valoració (aquesta informació és pública)"
-#: ../../mod/uexport.php:44
-msgid "Export Content"
-msgstr "Exportar el Contingut"
+#: ../../Zotlabs/Module/Rate.php:165
+msgid "Optionally explain your rating (this information is public)"
+msgstr "Opcionalment pots explicar la teva qualificació (aquesta informació és pública)"
-#: ../../mod/uexport.php:45
-msgid ""
-"Export your channel information and all the content to a JSON backup. This "
-"backs up all of your connections, permissions, profile data and all of your "
-"content, but is generally not suitable for importing a channel to a new hub "
-"as this file may be VERY large. Please be patient - it may take several "
-"minutes for this download to begin."
-msgstr "Exporta la informació del canal i tot el contingut a un arxiu de recolzament JSON. Això còpia totes les teves connexions, permisos, perfil i dades i tot el contingut, però normalment no es pot importar en un altre canal d'un nou lloc/centre donat que l'arxiu acostuma a ser MOLT gran. Si et plau, sigues pacient ja que pot trigar uns minuts a començar a baixar."
+#: ../../Zotlabs/Module/Ratings.php:73
+msgid "No ratings"
+msgstr "No valorat"
-#: ../../mod/viewconnections.php:62
-msgid "No connections."
-msgstr "Sense connexions."
+#: ../../Zotlabs/Module/Ratings.php:104
+msgid "Rating: "
+msgstr "Valoració:"
-#: ../../mod/viewconnections.php:75
-#, php-format
-msgid "Visit %s's profile [%s]"
-msgstr "Visita el perfil [%s] de %s"
+#: ../../Zotlabs/Module/Ratings.php:105
+msgid "Website: "
+msgstr "Lloc web:"
-#: ../../mod/zfinger.php:23
-msgid "invalid target signature"
-msgstr "Signatura objectiu invàlida"
+#: ../../Zotlabs/Module/Ratings.php:107
+msgid "Description: "
+msgstr "Descripció:"
-#: ../../mod/admin.php:52
+#: ../../Zotlabs/Module/Admin.php:77
msgid "Theme settings updated."
msgstr "Ajustos de tema actualitzats."
-#: ../../mod/admin.php:93 ../../mod/admin.php:452
-msgid "Site"
-msgstr "Lloc"
-
-#: ../../mod/admin.php:94
-msgid "Accounts"
-msgstr "Comptes"
-
-#: ../../mod/admin.php:95 ../../mod/admin.php:985
-msgid "Channels"
-msgstr "Canals"
-
-#: ../../mod/admin.php:96 ../../mod/admin.php:1077 ../../mod/admin.php:1117
-msgid "Plugins"
-msgstr "Plugins"
-
-#: ../../mod/admin.php:97 ../../mod/admin.php:1277 ../../mod/admin.php:1311
-msgid "Themes"
-msgstr "Temes"
-
-#: ../../mod/admin.php:98
-msgid "Inspect queue"
-msgstr "Revisa cua"
-
-#: ../../mod/admin.php:100
-msgid "Profile Config"
-msgstr "Configuració del Perfil"
-
-#: ../../mod/admin.php:101
-msgid "DB updates"
-msgstr "Actualitzacions de Base de Dades"
-
-#: ../../mod/admin.php:115 ../../mod/admin.php:122 ../../mod/admin.php:1396
-msgid "Logs"
-msgstr "Logs"
-
-#: ../../mod/admin.php:121
-msgid "Plugin Features"
-msgstr "Característiques del Plugin"
-
-#: ../../mod/admin.php:123
-msgid "User registrations waiting for confirmation"
-msgstr "Registre d'usuaris esperant confirmació"
-
-#: ../../mod/admin.php:200
+#: ../../Zotlabs/Module/Admin.php:197
msgid "# Accounts"
msgstr "# Comptes"
-#: ../../mod/admin.php:201
+#: ../../Zotlabs/Module/Admin.php:198
msgid "# blocked accounts"
msgstr "# comptes bloquejats"
-#: ../../mod/admin.php:202
+#: ../../Zotlabs/Module/Admin.php:199
msgid "# expired accounts"
msgstr "# comptes expirats"
-#: ../../mod/admin.php:203
+#: ../../Zotlabs/Module/Admin.php:200
msgid "# expiring accounts"
msgstr "# comptes expirant"
-#: ../../mod/admin.php:216
+#: ../../Zotlabs/Module/Admin.php:211
msgid "# Channels"
msgstr "# Canals"
-#: ../../mod/admin.php:217
+#: ../../Zotlabs/Module/Admin.php:212
msgid "# primary"
msgstr "# primari"
-#: ../../mod/admin.php:218
+#: ../../Zotlabs/Module/Admin.php:213
msgid "# clones"
msgstr "# clons"
-#: ../../mod/admin.php:224
+#: ../../Zotlabs/Module/Admin.php:219
msgid "Message queues"
msgstr "Cues de missatges"
-#: ../../mod/admin.php:240 ../../mod/admin.php:451 ../../mod/admin.php:548
-#: ../../mod/admin.php:817 ../../mod/admin.php:984 ../../mod/admin.php:1076
-#: ../../mod/admin.php:1116 ../../mod/admin.php:1276 ../../mod/admin.php:1310
-#: ../../mod/admin.php:1395
+#: ../../Zotlabs/Module/Admin.php:236
+msgid "Your software should be updated"
+msgstr "El teu programari cal que s'actualitzi"
+
+#: ../../Zotlabs/Module/Admin.php:241 ../../Zotlabs/Module/Admin.php:490
+#: ../../Zotlabs/Module/Admin.php:711 ../../Zotlabs/Module/Admin.php:755
+#: ../../Zotlabs/Module/Admin.php:1030 ../../Zotlabs/Module/Admin.php:1209
+#: ../../Zotlabs/Module/Admin.php:1329 ../../Zotlabs/Module/Admin.php:1419
+#: ../../Zotlabs/Module/Admin.php:1612 ../../Zotlabs/Module/Admin.php:1646
+#: ../../Zotlabs/Module/Admin.php:1731
msgid "Administration"
msgstr "Administració"
-#: ../../mod/admin.php:241
+#: ../../Zotlabs/Module/Admin.php:242
msgid "Summary"
msgstr "Sumari"
-#: ../../mod/admin.php:244
+#: ../../Zotlabs/Module/Admin.php:245
msgid "Registered accounts"
msgstr "Comptes registrades"
-#: ../../mod/admin.php:245 ../../mod/admin.php:552
+#: ../../Zotlabs/Module/Admin.php:246 ../../Zotlabs/Module/Admin.php:715
msgid "Pending registrations"
msgstr "Comptes pendents de registre"
-#: ../../mod/admin.php:246
+#: ../../Zotlabs/Module/Admin.php:247
msgid "Registered channels"
msgstr "Canals registrats"
-#: ../../mod/admin.php:247 ../../mod/admin.php:553
+#: ../../Zotlabs/Module/Admin.php:248 ../../Zotlabs/Module/Admin.php:716
msgid "Active plugins"
msgstr "Plugins actius"
-#: ../../mod/admin.php:248
+#: ../../Zotlabs/Module/Admin.php:249
msgid "Version"
msgstr "Versió"
-#: ../../mod/admin.php:363
+#: ../../Zotlabs/Module/Admin.php:250
+msgid "Repository version (master)"
+msgstr "Versió (master) del repositori"
+
+#: ../../Zotlabs/Module/Admin.php:251
+msgid "Repository version (dev)"
+msgstr "Versió (desenvolupament) del repositori"
+
+#: ../../Zotlabs/Module/Admin.php:373
msgid "Site settings updated."
msgstr "Ajustos del Lloc actualitzats"
-#: ../../mod/admin.php:400 ../../mod/settings.php:813
+#: ../../Zotlabs/Module/Admin.php:400 ../../include/text.php:2841
+msgid "Default"
+msgstr "Predeterminat"
+
+#: ../../Zotlabs/Module/Admin.php:410 ../../Zotlabs/Module/Settings.php:798
msgid "mobile"
msgstr "mòbil"
-#: ../../mod/admin.php:402
+#: ../../Zotlabs/Module/Admin.php:412
msgid "experimental"
msgstr "experimental"
-#: ../../mod/admin.php:404
+#: ../../Zotlabs/Module/Admin.php:414
msgid "unsupported"
msgstr "no soportat"
-#: ../../mod/admin.php:429
+#: ../../Zotlabs/Module/Admin.php:460
msgid "Yes - with approval"
msgstr "Sí - amb aprovació"
-#: ../../mod/admin.php:435
+#: ../../Zotlabs/Module/Admin.php:466
msgid "My site is not a public server"
msgstr "El meu lloc no es un servidor públic"
-#: ../../mod/admin.php:436
+#: ../../Zotlabs/Module/Admin.php:467
msgid "My site has paid access only"
msgstr "El meu lloc te accès per pagament"
-#: ../../mod/admin.php:437
+#: ../../Zotlabs/Module/Admin.php:468
msgid "My site has free access only"
msgstr "El meu lloc te lliure accés"
-#: ../../mod/admin.php:438
+#: ../../Zotlabs/Module/Admin.php:469
msgid "My site offers free accounts with optional paid upgrades"
msgstr "El meu lloc te comptes gratis amb opció de millores per pagament"
-#: ../../mod/admin.php:454 ../../mod/register.php:207
+#: ../../Zotlabs/Module/Admin.php:491 ../../include/widgets.php:1382
+msgid "Site"
+msgstr "Lloc"
+
+#: ../../Zotlabs/Module/Admin.php:493 ../../Zotlabs/Module/Register.php:245
msgid "Registration"
msgstr "Registre"
-#: ../../mod/admin.php:455
+#: ../../Zotlabs/Module/Admin.php:494
msgid "File upload"
msgstr "Pujar arxiu"
-#: ../../mod/admin.php:456
+#: ../../Zotlabs/Module/Admin.php:495
msgid "Policies"
msgstr "Polítiques"
-#: ../../mod/admin.php:461
+#: ../../Zotlabs/Module/Admin.php:496 ../../include/contact_widgets.php:16
+msgid "Advanced"
+msgstr "Avançat"
+
+#: ../../Zotlabs/Module/Admin.php:500
msgid "Site name"
msgstr "Nom del lloc"
-#: ../../mod/admin.php:462
+#: ../../Zotlabs/Module/Admin.php:501
msgid "Banner/Logo"
msgstr "Senyera/Logo"
-#: ../../mod/admin.php:463
+#: ../../Zotlabs/Module/Admin.php:502
msgid "Administrator Information"
msgstr "Informació de l'Administrador"
-#: ../../mod/admin.php:463
+#: ../../Zotlabs/Module/Admin.php:502
msgid ""
"Contact information for site administrators. Displayed on siteinfo page. "
"BBCode can be used here"
msgstr "Informació per contactar amb els administradors del lloc. Mostrada a la pàgina d'informació del lloc. Es pot emprar BBCode aquí"
-#: ../../mod/admin.php:464
+#: ../../Zotlabs/Module/Admin.php:503
msgid "System language"
msgstr "Idioma del sistema"
-#: ../../mod/admin.php:465
+#: ../../Zotlabs/Module/Admin.php:504
msgid "System theme"
msgstr "Tema del sistema"
-#: ../../mod/admin.php:465
+#: ../../Zotlabs/Module/Admin.php:504
msgid ""
"Default system theme - may be over-ridden by user profiles - <a href='#' "
"id='cnftheme'>change theme settings</a>"
msgstr "Tema del sistema per defecte - pot ser sobrescrit pel perfils dels usuaris - <a href='#' id='cnftheme'>Ajustos de canvi del tema</a>"
-#: ../../mod/admin.php:466
+#: ../../Zotlabs/Module/Admin.php:505
msgid "Mobile system theme"
msgstr "Tema del sistema per a mòbils"
-#: ../../mod/admin.php:466
+#: ../../Zotlabs/Module/Admin.php:505
msgid "Theme for mobile devices"
msgstr "Tema per a aparells mòbils"
-#: ../../mod/admin.php:468
-msgid "Enable Diaspora Protocol"
-msgstr "Activat el Protocol Diaspora"
-
-#: ../../mod/admin.php:468
-msgid "Communicate with Diaspora and Friendica - experimental"
-msgstr "Comunicar amb Diaspora i Friendica - experimental"
-
-#: ../../mod/admin.php:469
+#: ../../Zotlabs/Module/Admin.php:507
msgid "Allow Feeds as Connections"
msgstr "Permetre Retroalimentadors com Connexions"
-#: ../../mod/admin.php:469
+#: ../../Zotlabs/Module/Admin.php:507
msgid "(Heavy system resource usage)"
msgstr "(Demana molts recursos del sistema)"
-#: ../../mod/admin.php:470
+#: ../../Zotlabs/Module/Admin.php:508
msgid "Maximum image size"
msgstr "Mida màxima d'imatge"
-#: ../../mod/admin.php:470
+#: ../../Zotlabs/Module/Admin.php:508
msgid ""
"Maximum size in bytes of uploaded images. Default is 0, which means no "
"limits."
-msgstr "Mida màxima en bytes de imatges pujades. Per defecte es 0, el que vol dir sense límits."
+msgstr "Mida màxima en bytes d'imatges pujades. Per defecte es 0, el que vol dir sense límits."
-#: ../../mod/admin.php:471
+#: ../../Zotlabs/Module/Admin.php:509
msgid "Does this site allow new member registration?"
msgstr "Permet aquest lloc registre de nous membres?"
-#: ../../mod/admin.php:472
+#: ../../Zotlabs/Module/Admin.php:510
+msgid "Invitation only"
+msgstr "Només per invitació"
+
+#: ../../Zotlabs/Module/Admin.php:510
+msgid ""
+"Only allow new member registrations with an invitation code. Above register "
+"policy must be set to Yes."
+msgstr "Només permet registre de nos membres amb codi d'invitació. A més la política de registre s'ha d'establir a Sí."
+
+#: ../../Zotlabs/Module/Admin.php:511
msgid "Which best describes the types of account offered by this hub?"
msgstr "Que es es que millor descriu la mena de comptes oferits per aquest concentrador?"
-#: ../../mod/admin.php:473
+#: ../../Zotlabs/Module/Admin.php:512
msgid "Register text"
msgstr "text de registre"
-#: ../../mod/admin.php:473
+#: ../../Zotlabs/Module/Admin.php:512
msgid "Will be displayed prominently on the registration page."
msgstr "Es mostrarà preminentment a la pàgina de registre"
-#: ../../mod/admin.php:474
+#: ../../Zotlabs/Module/Admin.php:513
msgid "Site homepage to show visitors (default: login box)"
msgstr "Pàgina d'inici a mostrar als visitants (per defecte: la pàgina d'identificació)"
-#: ../../mod/admin.php:474
+#: ../../Zotlabs/Module/Admin.php:513
msgid ""
"example: 'public' to show public stream, 'page/sys/home' to show a system "
"webpage called 'home' or 'include:home.html' to include a file."
msgstr "exemple: 'públic' per a mostrar un flux públic, 'page/sys/home' per a mostrar una pàgina web dita 'home' o 'include:home.html' per a incloure un arxiu."
-#: ../../mod/admin.php:475
+#: ../../Zotlabs/Module/Admin.php:514
msgid "Preserve site homepage URL"
msgstr "Preservar URL de la pàgina web"
-#: ../../mod/admin.php:475
+#: ../../Zotlabs/Module/Admin.php:514
msgid ""
"Present the site homepage in a frame at the original location instead of "
"redirecting"
msgstr "Presenta la pàgina web del lloc en un marc en el lloc original enlloc de redirigir cap a ella"
-#: ../../mod/admin.php:476
+#: ../../Zotlabs/Module/Admin.php:515
msgid "Accounts abandoned after x days"
msgstr "Els copmte es consideren abandonats despres de x dies"
-#: ../../mod/admin.php:476
+#: ../../Zotlabs/Module/Admin.php:515
msgid ""
"Will not waste system resources polling external sites for abandonded "
"accounts. Enter 0 for no time limit."
msgstr "No malgastar recursos del sistema sondejant llocs externs per acomptes abandonats. Entrar 0 vol dir sense límit de temps."
-#: ../../mod/admin.php:477
+#: ../../Zotlabs/Module/Admin.php:516
msgid "Allowed friend domains"
msgstr "dominis amics permesos"
-#: ../../mod/admin.php:477
+#: ../../Zotlabs/Module/Admin.php:516
msgid ""
"Comma separated list of domains which are allowed to establish friendships "
"with this site. Wildcards are accepted. Empty to allow any domains"
msgstr "llista separada per comes de dominis en els que està permès establir relacions d'amistat amb aquest lloc. S'accepten comodins. Deixar buit per acceptar qualsevol domini"
-#: ../../mod/admin.php:478
+#: ../../Zotlabs/Module/Admin.php:517
msgid "Allowed email domains"
msgstr "Dominis de correu electonic acceptats"
-#: ../../mod/admin.php:478
+#: ../../Zotlabs/Module/Admin.php:517
msgid ""
"Comma separated list of domains which are allowed in email addresses for "
"registrations to this site. Wildcards are accepted. Empty to allow any "
"domains"
-msgstr "llista separada per comes de dominis de adreces de correu electrònic permeses en aquest lloc. S'accepten comodins. Deixar buit per acceptar qualsevol domini"
+msgstr "llista separada per comes de dominis d'adreces de correu electrònic permeses en aquest lloc. S'accepten comodins. Deixar buit per acceptar qualsevol domini"
-#: ../../mod/admin.php:479
+#: ../../Zotlabs/Module/Admin.php:518
msgid "Not allowed email domains"
msgstr "Dominis de correu electrònic no acceptats"
-#: ../../mod/admin.php:479
+#: ../../Zotlabs/Module/Admin.php:518
msgid ""
"Comma separated list of domains which are not allowed in email addresses for"
" registrations to this site. Wildcards are accepted. Empty to allow any "
"domains, unless allowed domains have been defined."
-msgstr "llista separada per comes de dominis de adreces de correu electrònic no permeses en aquest lloc. S'accepten comodins. Deixar buit per no acceptar cap domini, excepte els que s'hagin definits com acceptats."
-
-#: ../../mod/admin.php:480
-msgid "Block public"
-msgstr "Bloc públic"
-
-#: ../../mod/admin.php:480
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently logged in."
-msgstr "Activa per a bloquejar l'accés públic a totes les pàgines públiques personals excepte si estàs identificat en el sistema."
+msgstr "llista separada per comes de dominis d'adreces de correu electrònic no permeses en aquest lloc. S'accepten comodins. Deixar buit per no acceptar cap domini, excepte els que s'hagin definits com acceptats."
-#: ../../mod/admin.php:481
+#: ../../Zotlabs/Module/Admin.php:519
msgid "Verify Email Addresses"
msgstr "Verifica l'Adreça de Correu Electrònic"
-#: ../../mod/admin.php:481
+#: ../../Zotlabs/Module/Admin.php:519
msgid ""
"Check to verify email addresses used in account registration (recommended)."
msgstr "Activa per comprovar l'adreça de correu electrònic emprada durant el registre d'un nou compte (recomanat)"
-#: ../../mod/admin.php:482
+#: ../../Zotlabs/Module/Admin.php:520
msgid "Force publish"
msgstr "Forza la publicació"
-#: ../../mod/admin.php:482
+#: ../../Zotlabs/Module/Admin.php:520
msgid ""
"Check to force all profiles on this site to be listed in the site directory."
msgstr "Activa per forzar que tots el perfils en aquest lloc siguin llistats en el directori del lloc."
-#: ../../mod/admin.php:483
-msgid "Disable discovery tab"
-msgstr "Desactiva la pestañnya de descobrir"
+#: ../../Zotlabs/Module/Admin.php:521
+msgid "Import Public Streams"
+msgstr "Importar Fluxos Públics"
-#: ../../mod/admin.php:483
+#: ../../Zotlabs/Module/Admin.php:521
msgid ""
-"Remove the tab in the network view with public content pulled from sources "
-"chosen for this site."
-msgstr "Treu la pesranya per veure contingut públic de la xarxa extret d'origens triats per aquest lloc."
+"Import and allow access to public content pulled from other sites. Warning: "
+"this content is unmoderated."
+msgstr "Importa i permet l'accés a contingut públic sondejat d'altres llocs. Avís: aquest contingut no estarà moderat."
-#: ../../mod/admin.php:484
-msgid "login on Homepage"
+#: ../../Zotlabs/Module/Admin.php:522
+msgid "Login on Homepage"
msgstr "Accés a la Pàgina d'inici"
-#: ../../mod/admin.php:484
+#: ../../Zotlabs/Module/Admin.php:522
msgid ""
"Present a login box to visitors on the home page if no other content has "
"been configured."
msgstr "Presenta una casella d'identificació a la pàgina d'inici als visitants si no s'ha configurat altre contingut."
-#: ../../mod/admin.php:486
+#: ../../Zotlabs/Module/Admin.php:523
+msgid "Enable context help"
+msgstr "Activar l'ajuda contextual"
+
+#: ../../Zotlabs/Module/Admin.php:523
+msgid ""
+"Display contextual help for the current page when the help button is "
+"pressed."
+msgstr "Mostra l'ajuda contextual per la pàgina actual quan el botó d'ajuda es pressionat."
+
+#: ../../Zotlabs/Module/Admin.php:525
+msgid "Directory Server URL"
+msgstr "URL del Servidor de Directoris"
+
+#: ../../Zotlabs/Module/Admin.php:525
+msgid "Default directory server"
+msgstr "Servidor de directori per defecte"
+
+#: ../../Zotlabs/Module/Admin.php:527
msgid "Proxy user"
msgstr "Usuari Proxy"
-#: ../../mod/admin.php:487
+#: ../../Zotlabs/Module/Admin.php:528
msgid "Proxy URL"
msgstr "URL del Proxy"
-#: ../../mod/admin.php:488
+#: ../../Zotlabs/Module/Admin.php:529
msgid "Network timeout"
msgstr "Temps d'espera de la xarxa"
-#: ../../mod/admin.php:488
+#: ../../Zotlabs/Module/Admin.php:529
msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
msgstr "Valor en segons. Ajusta a 0 per a sense límits (no recomanat)"
-#: ../../mod/admin.php:489
+#: ../../Zotlabs/Module/Admin.php:530
msgid "Delivery interval"
msgstr "Interval de lliurament"
-#: ../../mod/admin.php:489
+#: ../../Zotlabs/Module/Admin.php:530
msgid ""
"Delay background delivery processes by this many seconds to reduce system "
"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
"for large dedicated servers."
msgstr "Retarda en segon plà l'interval de lliurament per aquests segons per reduir la càrrega del sistema. Recomanat: 4-5 per a hostes compartits, 2-3 per a servidors privats virtuals. 0-1 per a servidors dedicats."
-#: ../../mod/admin.php:490
+#: ../../Zotlabs/Module/Admin.php:531
+msgid "Deliveries per process"
+msgstr "Entregues per processar"
+
+#: ../../Zotlabs/Module/Admin.php:531
+msgid ""
+"Number of deliveries to attempt in a single operating system process. Adjust"
+" if necessary to tune system performance. Recommend: 1-5."
+msgstr "Nombre de entregues a intentar processar en un únic procèss del sistema operatiu. Ajustar si es necessari per millorar el rendiment. Es recomana: 1-5."
+
+#: ../../Zotlabs/Module/Admin.php:532
msgid "Poll interval"
msgstr "interval de sondeig"
-#: ../../mod/admin.php:490
+#: ../../Zotlabs/Module/Admin.php:532
msgid ""
"Delay background polling processes by this many seconds to reduce system "
"load. If 0, use delivery interval."
msgstr "Retarda en segon pla el sondeig en aquesta quantitat de segons per a reduir la càrrega dels sistema. Si es 0 , empra l'interval de lliurament."
-#: ../../mod/admin.php:491
+#: ../../Zotlabs/Module/Admin.php:533
msgid "Maximum Load Average"
msgstr "Càrrega Mitja Màxima"
-#: ../../mod/admin.php:491
+#: ../../Zotlabs/Module/Admin.php:533
msgid ""
"Maximum system load before delivery and poll processes are deferred - "
"default 50."
msgstr "Càrrega màxima del sistema, abans que els processos de lliurament i sondeig es difereixin - 50 per defecte."
-#: ../../mod/admin.php:492
-msgid "Expiration period in days for imported (matrix/network) content"
-msgstr "Periode d'expiració per a contingut importat (matrix/xarxa)"
+#: ../../Zotlabs/Module/Admin.php:534
+msgid "Expiration period in days for imported (grid/network) content"
+msgstr "Període d'expiració en dies per contingut importat (malla/xarxa)"
-#: ../../mod/admin.php:492
+#: ../../Zotlabs/Module/Admin.php:534
msgid "0 for no expiration of imported content"
msgstr "0 vol dir sense temps d'expiració pel contingut importat"
-#: ../../mod/admin.php:540
+#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:678
+#: ../../Zotlabs/Module/Settings.php:722
+msgid "Off"
+msgstr "Apagat"
+
+#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:678
+#: ../../Zotlabs/Module/Settings.php:722
+msgid "On"
+msgstr "Funcionant"
+
+#: ../../Zotlabs/Module/Admin.php:678
+#, php-format
+msgid "Lock feature %s"
+msgstr "Bloca característica %s"
+
+#: ../../Zotlabs/Module/Admin.php:686
+msgid "Manage Additional Features"
+msgstr "Gestiona Funcionalitats Addicionals"
+
+#: ../../Zotlabs/Module/Admin.php:703
msgid "No server found"
msgstr "No es troba servidor"
-#: ../../mod/admin.php:547 ../../mod/admin.php:831
+#: ../../Zotlabs/Module/Admin.php:710 ../../Zotlabs/Module/Admin.php:1046
msgid "ID"
msgstr "ID"
-#: ../../mod/admin.php:547
+#: ../../Zotlabs/Module/Admin.php:710
msgid "for channel"
msgstr "per a canal"
-#: ../../mod/admin.php:547
+#: ../../Zotlabs/Module/Admin.php:710
msgid "on server"
msgstr "al servidor"
-#: ../../mod/admin.php:547
-msgid "Status"
-msgstr "Estat"
-
-#: ../../mod/admin.php:549
+#: ../../Zotlabs/Module/Admin.php:712
msgid "Server"
msgstr "Servidor"
-#: ../../mod/admin.php:566
+#: ../../Zotlabs/Module/Admin.php:746
+msgid ""
+"By default, unfiltered HTML is allowed in embedded media. This is inherently"
+" insecure."
+msgstr "Per defecte, HTML no filtrat està permés als media embeguts. Això es inherentment no segur."
+
+#: ../../Zotlabs/Module/Admin.php:749
+msgid ""
+"The recommended setting is to only allow unfiltered HTML from the following "
+"sites:"
+msgstr "L'ajust recomanat és només permetre HTML sense filtrar dels següents llocs:"
+
+#: ../../Zotlabs/Module/Admin.php:750
+msgid ""
+"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br"
+" />https://vimeo.com/<br />https://soundcloud.com/<br />"
+msgstr "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"
+
+#: ../../Zotlabs/Module/Admin.php:751
+msgid ""
+"All other embedded content will be filtered, <strong>unless</strong> "
+"embedded content from that site is explicitly blocked."
+msgstr "Tota la resta de contingut embegut seà filtrat, <strong>excepte</strong> contingut embegut d'aquest lloc que està blocat explícitament."
+
+#: ../../Zotlabs/Module/Admin.php:756 ../../include/widgets.php:1385
+msgid "Security"
+msgstr "Seguretat"
+
+#: ../../Zotlabs/Module/Admin.php:758
+msgid "Block public"
+msgstr "Bloca que sigui públic"
+
+#: ../../Zotlabs/Module/Admin.php:758
+msgid ""
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently authenticated."
+msgstr "activa per blocar l'accés a les pàgines personals públiques a tothom excepte aquells/es que s'hagin autenticat en aquest node."
+
+#: ../../Zotlabs/Module/Admin.php:759
+msgid "Set \"Transport Security\" HTTP header"
+msgstr "Set \"Transport Security\" HTTP header"
+
+#: ../../Zotlabs/Module/Admin.php:760
+msgid "Set \"Content Security Policy\" HTTP header"
+msgstr "Set \"Content Security Policy\" HTTP header"
+
+#: ../../Zotlabs/Module/Admin.php:761
+msgid "Allow communications only from these sites"
+msgstr "Permetre comunicacions únicament des de aquests llocs"
+
+#: ../../Zotlabs/Module/Admin.php:761
+msgid ""
+"One site per line. Leave empty to allow communication from anywhere by "
+"default"
+msgstr "Un lloc per línia. Deixar en blanc per permetre, per defecte, la comunicació amb tothom."
+
+#: ../../Zotlabs/Module/Admin.php:762
+msgid "Block communications from these sites"
+msgstr "Bloca comunicacions que venen d'aquests llocs"
+
+#: ../../Zotlabs/Module/Admin.php:763
+msgid "Allow communications only from these channels"
+msgstr "Permet la comunicació només per aquests canals"
+
+#: ../../Zotlabs/Module/Admin.php:763
+msgid ""
+"One channel (hash) per line. Leave empty to allow from any channel by "
+"default"
+msgstr "Un canal (hash) per línia. Deixa en blanc per permetre, per defecte, la comunicació qualsevol canal."
+
+#: ../../Zotlabs/Module/Admin.php:764
+msgid "Block communications from these channels"
+msgstr "Bloca les comunicacions que venen d'aquests canals"
+
+#: ../../Zotlabs/Module/Admin.php:765
+msgid "Only allow embeds from secure (SSL) websites and links."
+msgstr "Permetre embeguts només de llocs web i enllaços segurs (SSL)."
+
+#: ../../Zotlabs/Module/Admin.php:766
+msgid "Allow unfiltered embedded HTML content only from these domains"
+msgstr "Permetre HTML embegut sense filtrar només d'aquests dominis."
+
+#: ../../Zotlabs/Module/Admin.php:766
+msgid "One site per line. By default embedded content is filtered."
+msgstr "Un lloc per línia. Per defecte el contingut embegut es filtrat."
+
+#: ../../Zotlabs/Module/Admin.php:767
+msgid "Block embedded HTML from these domains"
+msgstr "Bloca HTML embegut d'aquests dominis"
+
+#: ../../Zotlabs/Module/Admin.php:785
msgid "Update has been marked successful"
msgstr "Actualització marcada amb exit"
-#: ../../mod/admin.php:576
+#: ../../Zotlabs/Module/Admin.php:795
#, php-format
msgid "Executing %s failed. Check system logs."
msgstr "Executant %s ha fallat. Comprova els logs del sistema."
-#: ../../mod/admin.php:579
+#: ../../Zotlabs/Module/Admin.php:798
#, php-format
msgid "Update %s was successfully applied."
msgstr "Actualització %s es va realitzar correctament."
-#: ../../mod/admin.php:583
+#: ../../Zotlabs/Module/Admin.php:802
#, php-format
msgid "Update %s did not return a status. Unknown if it succeeded."
msgstr "Actualització %s no ha retornat l'estat. Es desconeix si ha finalitzat amb exit."
-#: ../../mod/admin.php:586
+#: ../../Zotlabs/Module/Admin.php:805
#, php-format
msgid "Update function %s could not be found."
msgstr "La funció d'actualitzacio %s no es pot trobar."
-#: ../../mod/admin.php:602
+#: ../../Zotlabs/Module/Admin.php:821
msgid "No failed updates."
msgstr "No hi ha actualitzacions fallides."
-#: ../../mod/admin.php:606
+#: ../../Zotlabs/Module/Admin.php:825
msgid "Failed Updates"
msgstr "Actualitzacions Fallides"
-#: ../../mod/admin.php:608
+#: ../../Zotlabs/Module/Admin.php:827
msgid "Mark success (if update was manually applied)"
msgstr "Marca èxit (si l'actualització s'ha aplicat de forma manual)"
-#: ../../mod/admin.php:609
+#: ../../Zotlabs/Module/Admin.php:828
msgid "Attempt to execute this update step automatically"
msgstr "Prova a fer automàticament aquesta actualització"
-#: ../../mod/admin.php:641
+#: ../../Zotlabs/Module/Admin.php:859
msgid "Queue Statistics"
msgstr "Cua d'Estadístiques"
-#: ../../mod/admin.php:642
+#: ../../Zotlabs/Module/Admin.php:860
msgid "Total Entries"
msgstr "Total d'Entrades"
-#: ../../mod/admin.php:643
+#: ../../Zotlabs/Module/Admin.php:861
msgid "Priority"
msgstr "Prioritat"
-#: ../../mod/admin.php:644
+#: ../../Zotlabs/Module/Admin.php:862
msgid "Destination URL"
msgstr "URL de Destí"
-#: ../../mod/admin.php:645
+#: ../../Zotlabs/Module/Admin.php:863
msgid "Mark hub permanently offline"
-msgstr "Marca el concentrador coma permanentment fora de línia"
+msgstr "Marca el node com a permanentment fora de línia"
-#: ../../mod/admin.php:646
+#: ../../Zotlabs/Module/Admin.php:864
msgid "Empty queue for this hub"
-msgstr "Cua buida per aquest concentrador"
+msgstr "Cua buida per aquest node"
-#: ../../mod/admin.php:647
+#: ../../Zotlabs/Module/Admin.php:865
msgid "Last known contact"
msgstr "Últim contacte conegut"
-#: ../../mod/admin.php:683
+#: ../../Zotlabs/Module/Admin.php:901
#, php-format
-msgid "%s user blocked/unblocked"
-msgid_plural "%s users blocked/unblocked"
-msgstr[0] "%s usuari bloquejat/desbloquejat"
-msgstr[1] "%s usuaris bloquejats/desbloquejats"
+msgid "%s account blocked/unblocked"
+msgid_plural "%s account blocked/unblocked"
+msgstr[0] "S'ha [des]bloquejat %s compte"
+msgstr[1] "S'han [des]bloquejat %s comptes"
-#: ../../mod/admin.php:691
+#: ../../Zotlabs/Module/Admin.php:908
#, php-format
-msgid "%s user deleted"
-msgid_plural "%s users deleted"
-msgstr[0] "%s usuari esborrat"
-msgstr[1] "%s usuaris esborrats"
+msgid "%s account deleted"
+msgid_plural "%s accounts deleted"
+msgstr[0] "S'ha esborrat el compte %s"
+msgstr[1] "S'han esborrat %s comptes"
-#: ../../mod/admin.php:727
+#: ../../Zotlabs/Module/Admin.php:944
msgid "Account not found"
msgstr "Compte no trobat"
-#: ../../mod/admin.php:747
+#: ../../Zotlabs/Module/Admin.php:955
+#, php-format
+msgid "Account '%s' deleted"
+msgstr "S'ha esborrat el compte '%s'"
+
+#: ../../Zotlabs/Module/Admin.php:963
#, php-format
-msgid "User '%s' blocked"
-msgstr "Usuari '%s' bloquejat"
+msgid "Account '%s' blocked"
+msgstr "S'ha bloquejat el compte '%s'"
-#: ../../mod/admin.php:755
+#: ../../Zotlabs/Module/Admin.php:971
#, php-format
-msgid "User '%s' unblocked"
-msgstr "Usuari '%s' desbloquejat"
+msgid "Account '%s' unblocked"
+msgstr "S'ha desbloquejat el compte '%s'"
-#: ../../mod/admin.php:818 ../../mod/admin.php:830
-msgid "Users"
-msgstr "Usuaris"
+#: ../../Zotlabs/Module/Admin.php:1031 ../../Zotlabs/Module/Admin.php:1044
+#: ../../include/widgets.php:1383
+msgid "Accounts"
+msgstr "Comptes"
-#: ../../mod/admin.php:820 ../../mod/admin.php:987
+#: ../../Zotlabs/Module/Admin.php:1033 ../../Zotlabs/Module/Admin.php:1212
msgid "select all"
msgstr "Sel·leciona-ho tot"
-#: ../../mod/admin.php:821
-msgid "User registrations waiting for confirm"
-msgstr "Registres d'usuaris pendents de confirmació"
+#: ../../Zotlabs/Module/Admin.php:1034
+msgid "Registrations waiting for confirm"
+msgstr ""
-#: ../../mod/admin.php:822
+#: ../../Zotlabs/Module/Admin.php:1035
msgid "Request date"
msgstr "Data de la petició"
-#: ../../mod/admin.php:823
+#: ../../Zotlabs/Module/Admin.php:1036
msgid "No registrations."
msgstr "Sense registracions."
-#: ../../mod/admin.php:824 ../../mod/connedit.php:687
-msgid "Approve"
-msgstr "Aprovat"
-
-#: ../../mod/admin.php:825
+#: ../../Zotlabs/Module/Admin.php:1038
msgid "Deny"
msgstr "Denegat"
-#: ../../mod/admin.php:827 ../../mod/connedit.php:519
-msgid "Block"
-msgstr "Bloquejat"
-
-#: ../../mod/admin.php:828 ../../mod/connedit.php:519
-msgid "Unblock"
-msgstr "Desbloquejat"
+#: ../../Zotlabs/Module/Admin.php:1048 ../../include/group.php:267
+msgid "All Channels"
+msgstr "Tots els Canals"
-#: ../../mod/admin.php:831
+#: ../../Zotlabs/Module/Admin.php:1049
msgid "Register date"
msgstr "Data de registre"
-#: ../../mod/admin.php:831
+#: ../../Zotlabs/Module/Admin.php:1050
msgid "Last login"
msgstr "Darrera identificació"
-#: ../../mod/admin.php:831
+#: ../../Zotlabs/Module/Admin.php:1051
msgid "Expires"
msgstr "Expira"
-#: ../../mod/admin.php:831
+#: ../../Zotlabs/Module/Admin.php:1052
msgid "Service Class"
msgstr "Classe de Servei"
-#: ../../mod/admin.php:833
+#: ../../Zotlabs/Module/Admin.php:1054
msgid ""
-"Selected users will be deleted!\\n\\nEverything these users had posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Tria els usuaris que s'esborraran!\\n\\nTotes les publicacions d'aquests usuaris en aquest lloc s'eliminaran de forma permanent!\\n\\nEstàs segur? "
+"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
+" on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Els comptes seleccionats seran eliminats!\\n\\nTot el que hagin publicat en aquest lloc serà esborrat permanentment!\\n\\nN'estàs segur de continuar?"
-#: ../../mod/admin.php:834
+#: ../../Zotlabs/Module/Admin.php:1055
msgid ""
-"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
-"site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "L'usuari {0} sera esborrat!\\n\\nTotes les publicacions d'aquest usuari en aquest lloc s'eliminarà de forma permanent!\\n\\nEstas segur?"
+"The account {0} will be deleted!\\n\\nEverything this account has posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "L'usuari {0} serà eliminat!\\n\\nTot el que hagi publicat l'usuari en aquest lloc serà esborrat de permanentment!\\n\\nN'estàs segur?"
-#: ../../mod/admin.php:870
+#: ../../Zotlabs/Module/Admin.php:1091
#, php-format
msgid "%s channel censored/uncensored"
msgid_plural "%s channels censored/uncensored"
msgstr[0] "%s canal censurat/no censurat"
msgstr[1] "%s canals censurats/no censurats"
-#: ../../mod/admin.php:879
+#: ../../Zotlabs/Module/Admin.php:1100
#, php-format
msgid "%s channel code allowed/disallowed"
msgid_plural "%s channels code allowed/disallowed"
msgstr[0] "%s codi permes/no permes al canal"
msgstr[1] "%s codi permesos/no permesos al canal"
-#: ../../mod/admin.php:886
+#: ../../Zotlabs/Module/Admin.php:1106
#, php-format
msgid "%s channel deleted"
msgid_plural "%s channels deleted"
msgstr[0] "%s canal esborrat"
msgstr[1] "%s canals esborrats"
-#: ../../mod/admin.php:906
+#: ../../Zotlabs/Module/Admin.php:1126
msgid "Channel not found"
msgstr "Canal no trobat"
-#: ../../mod/admin.php:917
+#: ../../Zotlabs/Module/Admin.php:1136
#, php-format
msgid "Channel '%s' deleted"
msgstr "Canal '%s' esborrat"
-#: ../../mod/admin.php:929
+#: ../../Zotlabs/Module/Admin.php:1148
#, php-format
msgid "Channel '%s' censored"
msgstr "Canal '%s' censurat"
-#: ../../mod/admin.php:929
+#: ../../Zotlabs/Module/Admin.php:1148
#, php-format
msgid "Channel '%s' uncensored"
msgstr "Canal '%s' no censurat"
-#: ../../mod/admin.php:940
+#: ../../Zotlabs/Module/Admin.php:1159
#, php-format
msgid "Channel '%s' code allowed"
msgstr "Canal '%s' permet codi"
-#: ../../mod/admin.php:940
+#: ../../Zotlabs/Module/Admin.php:1159
#, php-format
msgid "Channel '%s' code disallowed"
msgstr "Canal '%s' no permet codi"
-#: ../../mod/admin.php:989
+#: ../../Zotlabs/Module/Admin.php:1210 ../../include/widgets.php:1384
+msgid "Channels"
+msgstr "Canals"
+
+#: ../../Zotlabs/Module/Admin.php:1214
msgid "Censor"
msgstr "Censurat"
-#: ../../mod/admin.php:990
+#: ../../Zotlabs/Module/Admin.php:1215
msgid "Uncensor"
msgstr "No censurat"
-#: ../../mod/admin.php:991
+#: ../../Zotlabs/Module/Admin.php:1216
msgid "Allow Code"
msgstr "Permet Codi"
-#: ../../mod/admin.php:992
+#: ../../Zotlabs/Module/Admin.php:1217
msgid "Disallow Code"
msgstr "No Permet Codi"
-#: ../../mod/admin.php:994
+#: ../../Zotlabs/Module/Admin.php:1218 ../../include/conversation.php:1611
+msgid "Channel"
+msgstr "Canal"
+
+#: ../../Zotlabs/Module/Admin.php:1222
msgid "UID"
msgstr "UID"
-#: ../../mod/admin.php:996
+#: ../../Zotlabs/Module/Admin.php:1226
msgid ""
"Selected channels will be deleted!\\n\\nEverything that was posted in these "
"channels on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Els canals sel·leccionats s'esborraran!\\n\\nTotes les publicacions d'aquests canals en aquest lloc s'eliminaran de forma permanent!\\n\\nEstàs segur? "
-#: ../../mod/admin.php:997
+#: ../../Zotlabs/Module/Admin.php:1227
msgid ""
"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
"channel on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "El canal {0} serà esborrat!\\n\\nTotes les publicacions d'aquest canal en aquest lloc s'eliminaran de forma permanent!\\n\\nEstàs segur?"
-#: ../../mod/admin.php:1037
+#: ../../Zotlabs/Module/Admin.php:1284
#, php-format
msgid "Plugin %s disabled."
msgstr "Plugin %s desactivat."
-#: ../../mod/admin.php:1041
+#: ../../Zotlabs/Module/Admin.php:1288
#, php-format
msgid "Plugin %s enabled."
msgstr "Plugin %s activat."
-#: ../../mod/admin.php:1051 ../../mod/admin.php:1249
+#: ../../Zotlabs/Module/Admin.php:1298 ../../Zotlabs/Module/Admin.php:1585
msgid "Disable"
msgstr "Desactivat"
-#: ../../mod/admin.php:1054 ../../mod/admin.php:1251
+#: ../../Zotlabs/Module/Admin.php:1301 ../../Zotlabs/Module/Admin.php:1587
msgid "Enable"
msgstr "Activat"
-#: ../../mod/admin.php:1078 ../../mod/admin.php:1278
+#: ../../Zotlabs/Module/Admin.php:1330 ../../Zotlabs/Module/Admin.php:1420
+#: ../../include/widgets.php:1387
+msgid "Plugins"
+msgstr "Plugins"
+
+#: ../../Zotlabs/Module/Admin.php:1331 ../../Zotlabs/Module/Admin.php:1614
msgid "Toggle"
msgstr "Commutar"
-#: ../../mod/admin.php:1086 ../../mod/admin.php:1288
+#: ../../Zotlabs/Module/Admin.php:1332 ../../Zotlabs/Module/Admin.php:1615
+#: ../../Zotlabs/Lib/Apps.php:215 ../../include/widgets.php:638
+#: ../../include/nav.php:208
+msgid "Settings"
+msgstr "Ajustos"
+
+#: ../../Zotlabs/Module/Admin.php:1339 ../../Zotlabs/Module/Admin.php:1624
msgid "Author: "
msgstr "Autor: "
-#: ../../mod/admin.php:1087 ../../mod/admin.php:1289
+#: ../../Zotlabs/Module/Admin.php:1340 ../../Zotlabs/Module/Admin.php:1625
msgid "Maintainer: "
msgstr "Mantenedor:"
-#: ../../mod/admin.php:1214
+#: ../../Zotlabs/Module/Admin.php:1341
+msgid "Minimum project version: "
+msgstr "Versió mínima del projecte:"
+
+#: ../../Zotlabs/Module/Admin.php:1342
+msgid "Maximum project version: "
+msgstr "Versió màxima del projecte:"
+
+#: ../../Zotlabs/Module/Admin.php:1343
+msgid "Minimum PHP version: "
+msgstr "Versió mínima de PHP:"
+
+#: ../../Zotlabs/Module/Admin.php:1344
+msgid "Requires: "
+msgstr "Requereix:"
+
+#: ../../Zotlabs/Module/Admin.php:1345 ../../Zotlabs/Module/Admin.php:1425
+msgid "Disabled - version incompatibility"
+msgstr "Desactiva - incompatibilitat de versió"
+
+#: ../../Zotlabs/Module/Admin.php:1394
+msgid "Enter the public git repository URL of the plugin repo."
+msgstr "Introdueix la URL del repositori git públic del repositori de plugins."
+
+#: ../../Zotlabs/Module/Admin.php:1395
+msgid "Plugin repo git URL"
+msgstr "URL del repositori de plugins."
+
+#: ../../Zotlabs/Module/Admin.php:1396
+msgid "Custom repo name"
+msgstr "Nom del repositori personalitzat"
+
+#: ../../Zotlabs/Module/Admin.php:1396
+msgid "(optional)"
+msgstr "(opcional)"
+
+#: ../../Zotlabs/Module/Admin.php:1397
+msgid "Download Plugin Repo"
+msgstr "Descarrega el Repositori de Plugins"
+
+#: ../../Zotlabs/Module/Admin.php:1404
+msgid "Install new repo"
+msgstr "Instal·la un nou repositori "
+
+#: ../../Zotlabs/Module/Admin.php:1405 ../../Zotlabs/Lib/Apps.php:330
+msgid "Install"
+msgstr "Instal·lar"
+
+#: ../../Zotlabs/Module/Admin.php:1427
+msgid "Manage Repos"
+msgstr "Gestiona Repositoris"
+
+#: ../../Zotlabs/Module/Admin.php:1428
+msgid "Installed Plugin Repositories"
+msgstr "Repositori de Plugins Instal·lat"
+
+#: ../../Zotlabs/Module/Admin.php:1429
+msgid "Install a New Plugin Repository"
+msgstr "Instal·la un Nou Repositori de Plugins"
+
+#: ../../Zotlabs/Module/Admin.php:1435 ../../Zotlabs/Module/Settings.php:77
+#: ../../Zotlabs/Module/Settings.php:616 ../../Zotlabs/Lib/Apps.php:330
+msgid "Update"
+msgstr "Actualització"
+
+#: ../../Zotlabs/Module/Admin.php:1436
+msgid "Switch branch"
+msgstr "Canvia de branca"
+
+#: ../../Zotlabs/Module/Admin.php:1550
msgid "No themes found."
msgstr "No s'han trobat temes."
-#: ../../mod/admin.php:1270
+#: ../../Zotlabs/Module/Admin.php:1606
msgid "Screenshot"
msgstr "Copia de pantalla"
-#: ../../mod/admin.php:1316
+#: ../../Zotlabs/Module/Admin.php:1613 ../../Zotlabs/Module/Admin.php:1647
+#: ../../include/widgets.php:1388
+msgid "Themes"
+msgstr "Temes"
+
+#: ../../Zotlabs/Module/Admin.php:1652
msgid "[Experimental]"
msgstr "[Experimental]"
-#: ../../mod/admin.php:1317
+#: ../../Zotlabs/Module/Admin.php:1653
msgid "[Unsupported]"
msgstr "[No soportat]"
-#: ../../mod/admin.php:1341
+#: ../../Zotlabs/Module/Admin.php:1677
msgid "Log settings updated."
msgstr "Registre d'ajustos actualitzat."
-#: ../../mod/admin.php:1398
+#: ../../Zotlabs/Module/Admin.php:1732 ../../include/widgets.php:1409
+#: ../../include/widgets.php:1419
+msgid "Logs"
+msgstr "Logs"
+
+#: ../../Zotlabs/Module/Admin.php:1734
msgid "Clear"
msgstr "Neteja"
-#: ../../mod/admin.php:1404
+#: ../../Zotlabs/Module/Admin.php:1740
msgid "Debugging"
msgstr "Depurant"
-#: ../../mod/admin.php:1405
+#: ../../Zotlabs/Module/Admin.php:1741
msgid "Log file"
msgstr "Arxiu de registre"
-#: ../../mod/admin.php:1405
+#: ../../Zotlabs/Module/Admin.php:1741
msgid ""
-"Must be writable by web server. Relative to your Red top-level directory."
-msgstr "Ha de ser escribible pel servidor web. Relatiu al directori de nivell superior de Red"
+"Must be writable by web server. Relative to your top-level webserver "
+"directory."
+msgstr ""
-#: ../../mod/admin.php:1406
+#: ../../Zotlabs/Module/Admin.php:1742
msgid "Log level"
msgstr "Nivell de registre"
-#: ../../mod/admin.php:1452
+#: ../../Zotlabs/Module/Admin.php:2028
msgid "New Profile Field"
msgstr "Camp de Perfil Nou"
-#: ../../mod/admin.php:1453 ../../mod/admin.php:1473
+#: ../../Zotlabs/Module/Admin.php:2029 ../../Zotlabs/Module/Admin.php:2049
msgid "Field nickname"
msgstr "Àlies de Camp"
-#: ../../mod/admin.php:1453 ../../mod/admin.php:1473
+#: ../../Zotlabs/Module/Admin.php:2029 ../../Zotlabs/Module/Admin.php:2049
msgid "System name of field"
msgstr "nOM DEL SISTEMA DEL CAMP"
-#: ../../mod/admin.php:1454 ../../mod/admin.php:1474
+#: ../../Zotlabs/Module/Admin.php:2030 ../../Zotlabs/Module/Admin.php:2050
msgid "Input type"
msgstr "Tipus d'entrada"
-#: ../../mod/admin.php:1455 ../../mod/admin.php:1475
+#: ../../Zotlabs/Module/Admin.php:2031 ../../Zotlabs/Module/Admin.php:2051
msgid "Field Name"
msgstr "Nom de Camp"
-#: ../../mod/admin.php:1455 ../../mod/admin.php:1475
+#: ../../Zotlabs/Module/Admin.php:2031 ../../Zotlabs/Module/Admin.php:2051
msgid "Label on profile pages"
msgstr "Etiqueta a les pàgines de perfil"
-#: ../../mod/admin.php:1456 ../../mod/admin.php:1476
+#: ../../Zotlabs/Module/Admin.php:2032 ../../Zotlabs/Module/Admin.php:2052
msgid "Help text"
msgstr "Text d'ajuda"
-#: ../../mod/admin.php:1456 ../../mod/admin.php:1476
+#: ../../Zotlabs/Module/Admin.php:2032 ../../Zotlabs/Module/Admin.php:2052
msgid "Additional info (optional)"
msgstr "Informació adicional (opcional)"
-#: ../../mod/admin.php:1466
+#: ../../Zotlabs/Module/Admin.php:2042
msgid "Field definition not found"
msgstr "No es troba la definició del camp"
-#: ../../mod/admin.php:1472
+#: ../../Zotlabs/Module/Admin.php:2048
msgid "Edit Profile Field"
msgstr "Camp d'Edició del Perfil"
-#: ../../mod/oexchange.php:23
-msgid "Unable to find your hub."
-msgstr "No es possible trobar el concentrador"
+#: ../../Zotlabs/Module/Admin.php:2106 ../../include/widgets.php:1390
+msgid "Profile Fields"
+msgstr "Camps del Perfil"
-#: ../../mod/oexchange.php:37
-msgid "Post successful."
-msgstr "Entrada realitzada amb èxit. "
+#: ../../Zotlabs/Module/Admin.php:2107
+msgid "Basic Profile Fields"
+msgstr "Camps Bàsics del Perfil"
+
+#: ../../Zotlabs/Module/Admin.php:2108
+msgid "Advanced Profile Fields"
+msgstr "Camps Avançats del Perfil"
+
+#: ../../Zotlabs/Module/Admin.php:2108
+msgid "(In addition to basic fields)"
+msgstr "( addicionalment als camps bàsics)"
+
+#: ../../Zotlabs/Module/Admin.php:2110
+msgid "All available fields"
+msgstr "Tots els camps disponibles"
+
+#: ../../Zotlabs/Module/Admin.php:2111
+msgid "Custom Fields"
+msgstr "Camps Personalitzats"
+
+#: ../../Zotlabs/Module/Admin.php:2115
+msgid "Create Custom Field"
+msgstr "Crear un Camp Personalitzat"
+
+#: ../../Zotlabs/Module/Appman.php:37 ../../Zotlabs/Module/Appman.php:53
+msgid "App installed."
+msgstr "Aplicació instal·lada."
+
+#: ../../Zotlabs/Module/Appman.php:46
+msgid "Malformed app."
+msgstr "Aplicació amb errors"
+
+#: ../../Zotlabs/Module/Appman.php:104
+msgid "Embed code"
+msgstr "Codi embegut"
-#: ../../mod/register.php:44
+#: ../../Zotlabs/Module/Appman.php:110 ../../include/widgets.php:107
+msgid "Edit App"
+msgstr "Edita l'Aplicació"
+
+#: ../../Zotlabs/Module/Appman.php:110
+msgid "Create App"
+msgstr "Crea l'Aplicació"
+
+#: ../../Zotlabs/Module/Appman.php:115
+msgid "Name of app"
+msgstr "Nom de l'Aplicació"
+
+#: ../../Zotlabs/Module/Appman.php:116
+msgid "Location (URL) of app"
+msgstr "Ubicació (URL) de l'aplicació"
+
+#: ../../Zotlabs/Module/Appman.php:118
+msgid "Photo icon URL"
+msgstr "Foto icona URL"
+
+#: ../../Zotlabs/Module/Appman.php:118
+msgid "80 x 80 pixels - optional"
+msgstr "80 x 80 pixels - opcional"
+
+#: ../../Zotlabs/Module/Appman.php:119
+msgid "Categories (optional, comma separated list)"
+msgstr "Categories (opcional, lista separada per comes)"
+
+#: ../../Zotlabs/Module/Appman.php:120
+msgid "Version ID"
+msgstr "Versió ID"
+
+#: ../../Zotlabs/Module/Appman.php:121
+msgid "Price of app"
+msgstr "Preu de l'aplicació"
+
+#: ../../Zotlabs/Module/Appman.php:122
+msgid "Location (URL) to purchase app"
+msgstr "Ubicació (URL) per comprar l'aplicació"
+
+#: ../../Zotlabs/Module/Rbmark.php:94
+msgid "Select a bookmark folder"
+msgstr "Tria una carpeta d'interès"
+
+#: ../../Zotlabs/Module/Rbmark.php:99
+msgid "Save Bookmark"
+msgstr "Guarda Favorits"
+
+#: ../../Zotlabs/Module/Rbmark.php:100
+msgid "URL of bookmark"
+msgstr "URL de favorit"
+
+#: ../../Zotlabs/Module/Rbmark.php:105
+msgid "Or enter new bookmark folder name"
+msgstr "O entra un nou nom de favorit"
+
+#: ../../Zotlabs/Module/Register.php:49
msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
msgstr "Nombre màxim de registres diaris excedit. Si us plau, provau demà."
-#: ../../mod/register.php:50
+#: ../../Zotlabs/Module/Register.php:55
msgid ""
"Please indicate acceptance of the Terms of Service. Registration failed."
msgstr "El registre ha fallat. Si et plau, indica que acceptes les Condicions del Servei."
-#: ../../mod/register.php:84
+#: ../../Zotlabs/Module/Register.php:89
msgid "Passwords do not match."
msgstr "Les contrasenyes no coincideixen."
-#: ../../mod/register.php:117
+#: ../../Zotlabs/Module/Register.php:131
msgid ""
"Registration successful. Please check your email for validation "
"instructions."
-msgstr "registrat amb èxit. Si et plau revisa el teu e-correu per a instruccions de validació."
+msgstr "Registrat amb èxit. Si et plau revisa el teu correu electrònic per a les instruccions de validació."
-#: ../../mod/register.php:123
+#: ../../Zotlabs/Module/Register.php:137
msgid "Your registration is pending approval by the site owner."
msgstr "El teu registre esta pendent de validació pel propietari del lloc."
-#: ../../mod/register.php:126
+#: ../../Zotlabs/Module/Register.php:140
msgid "Your registration can not be processed."
msgstr "El teu registre no ha pogut ser processat. "
-#: ../../mod/register.php:163
-msgid "Registration on this site/hub is by approval only."
-msgstr "El registre en aquest lloc/centre es únicament per validació."
+#: ../../Zotlabs/Module/Register.php:184
+msgid "Registration on this hub is disabled."
+msgstr "El registre en aquest node està deshabilitat."
+
+#: ../../Zotlabs/Module/Register.php:193
+msgid "Registration on this hub is by approval only."
+msgstr "El registre en aquest node es únicament per validació."
-#: ../../mod/register.php:164
-msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
-msgstr "<a href=\"pubsites\">Registre en altre lloc/centre afiliat</a>"
+#: ../../Zotlabs/Module/Register.php:194
+msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>"
+msgstr "<a href=\"pubsites\">Registre en altre node afiliat</a>"
-#: ../../mod/register.php:174
+#: ../../Zotlabs/Module/Register.php:204
msgid ""
"This site has exceeded the number of allowed daily account registrations. "
"Please try again tomorrow."
msgstr "El lloc ha excedit el límit màxim diari de nous comptes/registres. Provau demà."
-#: ../../mod/register.php:185
+#: ../../Zotlabs/Module/Register.php:215
msgid "Terms of Service"
msgstr "Condicions del Servei"
-#: ../../mod/register.php:191
+#: ../../Zotlabs/Module/Register.php:221
#, php-format
msgid "I accept the %s for this website"
msgstr "Accepto el %s per a aquest lloc web"
-#: ../../mod/register.php:193
+#: ../../Zotlabs/Module/Register.php:223
#, php-format
msgid "I am over 13 years of age and accept the %s for this website"
msgstr "Tinc més de 13 anys i accepto les %s d'aquest lloc web"
-#: ../../mod/register.php:212
-msgid "Membership on this site is by invitation only."
-msgstr "La pertinença en aquest lloc es per invitació exclusivament."
-
-#: ../../mod/register.php:213
-msgid "Please enter your invitation code"
-msgstr "Si et plau, introdueix el teu codi d'invitació"
-
-#: ../../mod/register.php:216
+#: ../../Zotlabs/Module/Register.php:227
msgid "Your email address"
msgstr "La teva adreça de correu electrónic"
-#: ../../mod/register.php:217
+#: ../../Zotlabs/Module/Register.php:228
msgid "Choose a password"
msgstr "Tria una contrasenya"
-#: ../../mod/register.php:218
+#: ../../Zotlabs/Module/Register.php:229
msgid "Please re-enter your password"
msgstr "Si et plau, re-entra la contrasenya"
-#: ../../mod/removeaccount.php:30
+#: ../../Zotlabs/Module/Register.php:230
+msgid "Please enter your invitation code"
+msgstr "Si et plau, introdueix el teu codi d'invitació"
+
+#: ../../Zotlabs/Module/Register.php:236
+msgid "no"
+msgstr "no"
+
+#: ../../Zotlabs/Module/Register.php:236
+msgid "yes"
+msgstr "sí"
+
+#: ../../Zotlabs/Module/Register.php:250
+msgid "Membership on this site is by invitation only."
+msgstr "La pertinença en aquest lloc es per invitació exclusivament."
+
+#: ../../Zotlabs/Module/Register.php:262 ../../include/nav.php:147
+#: ../../boot.php:1685
+msgid "Register"
+msgstr "Registre"
+
+#: ../../Zotlabs/Module/Register.php:262
+msgid "Proceed to create your first channel"
+msgstr "Comença a crear el teu primer canal"
+
+#: ../../Zotlabs/Module/Regmod.php:15
+msgid "Please login."
+msgstr "Inicia Sessió."
+
+#: ../../Zotlabs/Module/Removeaccount.php:34
msgid ""
"Account removals are not allowed within 48 hours of changing the account "
"password."
msgstr "L'esborrat de comptes no està permès fins que transcorren 48 hores des de l'últim canvi de contrasenya."
-#: ../../mod/removeaccount.php:57
+#: ../../Zotlabs/Module/Removeaccount.php:56
msgid "Remove This Account"
msgstr "Esborra el compte"
-#: ../../mod/removeaccount.php:58 ../../mod/removeme.php:58
+#: ../../Zotlabs/Module/Removeaccount.php:57
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "WARNING: "
msgstr "ALERTA:"
-#: ../../mod/removeaccount.php:58
+#: ../../Zotlabs/Module/Removeaccount.php:57
msgid ""
"This account and all its channels will be completely removed from the "
"network. "
msgstr "Aquest compte i tots els seus canals s'estan apunt d'esborrar totalment de la xarxa."
-#: ../../mod/removeaccount.php:58 ../../mod/removeme.php:58
+#: ../../Zotlabs/Module/Removeaccount.php:57
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "This action is permanent and can not be undone!"
msgstr "Aquesta acció és irreversible!"
-#: ../../mod/removeaccount.php:59 ../../mod/removeme.php:59
+#: ../../Zotlabs/Module/Removeaccount.php:58
+#: ../../Zotlabs/Module/Removeme.php:60
msgid "Please enter your password for verification:"
msgstr "Aquesta acció requereix tornar a introduir la contrasenya:"
-#: ../../mod/removeaccount.php:60
+#: ../../Zotlabs/Module/Removeaccount.php:59
msgid ""
"Remove this account, all its channels and all its channel clones from the "
"network"
msgstr "Esborra de la xarxa aquest compte, tots els seus canals, i tots els seus canals clons."
-#: ../../mod/removeaccount.php:60
+#: ../../Zotlabs/Module/Removeaccount.php:59
msgid ""
"By default only the instances of the channels located on this hub will be "
"removed from the network"
-msgstr "Per defecte, només les instancies dels canal ubicats en aquest concentrador poden esser esborrades de la xarxa"
+msgstr "Per defecte, només les instancies dels canal ubicats en aquest node poden esser esborrades de la xarxa"
-#: ../../mod/removeaccount.php:61 ../../mod/settings.php:720
+#: ../../Zotlabs/Module/Removeaccount.php:60
+#: ../../Zotlabs/Module/Settings.php:705
msgid "Remove Account"
msgstr "Esborra el Compte"
-#: ../../mod/help.php:49 ../../mod/help.php:55 ../../mod/help.php:61
-msgid "Help:"
-msgstr "Ajuda:"
+#: ../../Zotlabs/Module/Removeme.php:33
+msgid ""
+"Channel removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "L'esborrat de canals no està permès fins que transcorren 48 hores des de l'últim canvi de contrasenya."
-#: ../../mod/help.php:76 ../../index.php:238
-msgid "Not Found"
-msgstr "No s'ha pogut trobar la pàgina"
+#: ../../Zotlabs/Module/Removeme.php:58
+msgid "Remove This Channel"
+msgstr "Elimina Aquest Canal"
-#: ../../mod/help.php:100
-msgid "$Projectname Documentation"
-msgstr "$Projectname Documentació"
+#: ../../Zotlabs/Module/Removeme.php:59
+msgid "This channel will be completely removed from the network. "
+msgstr "Aquest canal serà completament eliminat de la xarxa."
-#: ../../mod/update_channel.php:43 ../../mod/update_display.php:25
-#: ../../mod/update_network.php:23 ../../mod/update_search.php:46
-#: ../../mod/update_home.php:21 ../../mod/update_public.php:21
-msgid "[Embedded content - reload page to view]"
-msgstr "[Contingut embegut - recarrega la pàgina per veure-ho]"
+#: ../../Zotlabs/Module/Removeme.php:61
+msgid "Remove this channel and all its clones from the network"
+msgstr "Elimina aquest canal i els seus clons de la xarxa"
-#: ../../mod/lockview.php:37
-msgid "Remote privacy information not available."
-msgstr "informació privada remota no disponible."
+#: ../../Zotlabs/Module/Removeme.php:61
+msgid ""
+"By default only the instance of the channel located on this hub will be "
+"removed from the network"
+msgstr "Per defecte, només la instancia del canal ubicat en aquest node pot esser esborrat de la xarxa"
-#: ../../mod/lockview.php:58
-msgid "Visible to:"
-msgstr "Visible per:"
+#: ../../Zotlabs/Module/Removeme.php:62 ../../Zotlabs/Module/Settings.php:1124
+msgid "Remove Channel"
+msgstr "Elimina el canal"
+
+#: ../../Zotlabs/Module/Rmagic.php:44
+msgid ""
+"We encountered a problem while logging in with the OpenID you provided. "
+"Please check the correct spelling of the ID."
+msgstr "Em trobat un problema durant l'inici de sessió amb el OpenID que has facilitat. verifica l'ortografia correcta de la ID."
+
+#: ../../Zotlabs/Module/Rmagic.php:44
+msgid "The error message was:"
+msgstr "El missatge d'error fou:"
+
+#: ../../Zotlabs/Module/Rmagic.php:48
+msgid "Authentication failed."
+msgstr "Ha fallat l'autentificació."
+
+#: ../../Zotlabs/Module/Rmagic.php:88
+msgid "Remote Authentication"
+msgstr "Autentificació Remota"
-#: ../../mod/settings.php:76
+#: ../../Zotlabs/Module/Rmagic.php:89
+msgid "Enter your channel address (e.g. channel@example.com)"
+msgstr "Introdueix la teva adreça del canal (eg canal@exemple.com)"
+
+#: ../../Zotlabs/Module/Rmagic.php:90
+msgid "Authenticate"
+msgstr "Autentica't"
+
+#: ../../Zotlabs/Module/Search.php:216
+#, php-format
+msgid "Items tagged with: %s"
+msgstr "Elements etiquetats amb: %s"
+
+#: ../../Zotlabs/Module/Search.php:218
+#, php-format
+msgid "Search results for: %s"
+msgstr "Resultats de cerca per: %s"
+
+#: ../../Zotlabs/Module/Service_limits.php:23
+msgid "No service class restrictions found."
+msgstr "No s'han trobat restriccions de clase."
+
+#: ../../Zotlabs/Module/Settings.php:69
msgid "Name is required"
msgstr "Es requereix un Nom"
-#: ../../mod/settings.php:80
+#: ../../Zotlabs/Module/Settings.php:73
msgid "Key and Secret are required"
msgstr "Es requereix Clau (Key) i el Secret (Secret)"
-#: ../../mod/settings.php:130
-msgid "Diaspora Policy Settings updated."
-msgstr "Actualitzats els Ajustos de Política de Diaspora."
+#: ../../Zotlabs/Module/Settings.php:225
+msgid "Not valid email."
+msgstr "E-correu no vàlid."
+
+#: ../../Zotlabs/Module/Settings.php:228
+msgid "Protected email address. Cannot change to that email."
+msgstr "Adreça d'e-correu protegida. No es pot canviar a aquest e-correu."
+
+#: ../../Zotlabs/Module/Settings.php:237
+msgid "System failure storing new email. Please try again."
+msgstr "Fallada del sistema al guardar un nou correu. Si us plau, proba de nou."
-#: ../../mod/settings.php:238
+#: ../../Zotlabs/Module/Settings.php:254
+msgid "Password verification failed."
+msgstr "La verificació de la contrasenya ha fallat."
+
+#: ../../Zotlabs/Module/Settings.php:261
msgid "Passwords do not match. Password unchanged."
msgstr "Les contrasenyes no coincideixen. Contrasenya sense canvis."
-#: ../../mod/settings.php:242
+#: ../../Zotlabs/Module/Settings.php:265
msgid "Empty passwords are not allowed. Password unchanged."
msgstr "Les contrasenyes en blanc no estan permesas. Contrasenya sense canvis."
-#: ../../mod/settings.php:256
+#: ../../Zotlabs/Module/Settings.php:279
msgid "Password changed."
msgstr "Contrasenya canviada."
-#: ../../mod/settings.php:258
+#: ../../Zotlabs/Module/Settings.php:281
msgid "Password update failed. Please try again."
msgstr "L'actualització de la contrasenya va fallar. Si us plau, torneu a intentar-ho."
-#: ../../mod/settings.php:272
-msgid "Not valid email."
-msgstr "E-correu no vàlid."
-
-#: ../../mod/settings.php:275
-msgid "Protected email address. Cannot change to that email."
-msgstr "Adreça d'e-correu protegida. No es pot canviar a aquest e-correu."
-
-#: ../../mod/settings.php:284
-msgid "System failure storing new email. Please try again."
-msgstr "Fallada del sistema al guardar un nou correu. Si us plau, proba de nou."
-
-#: ../../mod/settings.php:523
+#: ../../Zotlabs/Module/Settings.php:525
msgid "Settings updated."
msgstr "Ajustes actualizados."
-#: ../../mod/settings.php:587 ../../mod/settings.php:613
-#: ../../mod/settings.php:649
+#: ../../Zotlabs/Module/Settings.php:589 ../../Zotlabs/Module/Settings.php:615
+#: ../../Zotlabs/Module/Settings.php:651
msgid "Add application"
msgstr "Afegir aplicatiu"
-#: ../../mod/settings.php:590
+#: ../../Zotlabs/Module/Settings.php:592
msgid "Name of application"
msgstr "Nom de l'aplicatiu"
-#: ../../mod/settings.php:591 ../../mod/settings.php:617
+#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:619
msgid "Consumer Key"
msgstr "Consumer Key"
-#: ../../mod/settings.php:591 ../../mod/settings.php:592
+#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:594
msgid "Automatically generated - change if desired. Max length 20"
msgstr "Generat automàticament- Canvia-ho si ho vols. Max. longitud 20"
-#: ../../mod/settings.php:592 ../../mod/settings.php:618
+#: ../../Zotlabs/Module/Settings.php:594 ../../Zotlabs/Module/Settings.php:620
msgid "Consumer Secret"
msgstr "Consumer Secret"
-#: ../../mod/settings.php:593 ../../mod/settings.php:619
+#: ../../Zotlabs/Module/Settings.php:595 ../../Zotlabs/Module/Settings.php:621
msgid "Redirect"
msgstr "Redirecciona"
-#: ../../mod/settings.php:593
+#: ../../Zotlabs/Module/Settings.php:595
msgid ""
"Redirect URI - leave blank unless your application specifically requires "
"this"
msgstr "URI redirigida - No canviar excepte perquè el teu aplicatiu ho requereixi."
-#: ../../mod/settings.php:594 ../../mod/settings.php:620
+#: ../../Zotlabs/Module/Settings.php:596 ../../Zotlabs/Module/Settings.php:622
msgid "Icon url"
msgstr "Icona de url"
-#: ../../mod/settings.php:594
+#: ../../Zotlabs/Module/Settings.php:596 ../../Zotlabs/Module/Sources.php:112
+#: ../../Zotlabs/Module/Sources.php:147
msgid "Optional"
msgstr "Opcional"
-#: ../../mod/settings.php:605
-msgid "You can't edit this application."
-msgstr "No pots editar aquest aplicatiu."
+#: ../../Zotlabs/Module/Settings.php:607
+msgid "Application not found."
+msgstr "Aplicatiu no trobat."
-#: ../../mod/settings.php:648
+#: ../../Zotlabs/Module/Settings.php:650
msgid "Connected Apps"
msgstr "Aplicatius Conectats"
-#: ../../mod/settings.php:652
+#: ../../Zotlabs/Module/Settings.php:654
msgid "Client key starts with"
msgstr "La clau del client comença amb"
-#: ../../mod/settings.php:653
+#: ../../Zotlabs/Module/Settings.php:655
msgid "No name"
msgstr "Sin nombre"
-#: ../../mod/settings.php:654
+#: ../../Zotlabs/Module/Settings.php:656
msgid "Remove authorization"
msgstr "Elimina autorització"
-#: ../../mod/settings.php:668
+#: ../../Zotlabs/Module/Settings.php:669
msgid "No feature settings configured"
msgstr "No hi ha opcions de les funcions configurades"
-#: ../../mod/settings.php:685
+#: ../../Zotlabs/Module/Settings.php:676
msgid "Feature/Addon Settings"
-msgstr "Ajustos de Característica/Afegit"
-
-#: ../../mod/settings.php:687
-msgid "Settings for the built-in Diaspora emulator"
-msgstr "Ajustos pel emulador de Diaspora incorporat"
-
-#: ../../mod/settings.php:688
-msgid "Allow any Diaspora member to comment on your public posts"
-msgstr "Permetre que cualsevol membre de Diaspora pugui comentar les teves entrades públiques"
-
-#: ../../mod/settings.php:689
-msgid "Enable the Diaspora protocol for this channel"
-msgstr "Activa el protocol Diaspora en aquest canal"
-
-#: ../../mod/settings.php:690
-msgid "Diaspora Policy Settings"
-msgstr "Política d'Ajustos de Diaspora"
+msgstr "Ajustos de Complements"
-#: ../../mod/settings.php:691
-msgid "Prevent your hashtags from being redirected to other sites"
-msgstr "Evita que els teus hashtags puguin ser redirigits a altres llocs"
-
-#: ../../mod/settings.php:715
+#: ../../Zotlabs/Module/Settings.php:699
msgid "Account Settings"
msgstr "Ajustos de Compte"
-#: ../../mod/settings.php:716
-msgid "Enter New Password:"
+#: ../../Zotlabs/Module/Settings.php:700
+msgid "Current Password"
+msgstr "Contrasenya Actual"
+
+#: ../../Zotlabs/Module/Settings.php:701
+msgid "Enter New Password"
msgstr "Entra la Nova Contrasenya"
-#: ../../mod/settings.php:717
-msgid "Confirm New Password:"
-msgstr "Confirma la Nova Contrasenya:"
+#: ../../Zotlabs/Module/Settings.php:702
+msgid "Confirm New Password"
+msgstr "Confirma la Nova Contrasenya"
-#: ../../mod/settings.php:717
+#: ../../Zotlabs/Module/Settings.php:702
msgid "Leave password fields blank unless changing"
-msgstr "Deixa els camps de contrasenya en blanc llevat que la volguis canviar"
+msgstr "Deixa els camps de contrasenya en blanc llevat que la vulguis canviar"
-#: ../../mod/settings.php:719 ../../mod/settings.php:1057
+#: ../../Zotlabs/Module/Settings.php:704
+#: ../../Zotlabs/Module/Settings.php:1041
msgid "Email Address:"
msgstr "Adreça de E-Correu:"
-#: ../../mod/settings.php:721
+#: ../../Zotlabs/Module/Settings.php:706
msgid "Remove this account including all its channels"
msgstr "Esborra aquest compte inclosos tots els seus canals"
-#: ../../mod/settings.php:737
-msgid "Off"
-msgstr "Apagat"
-
-#: ../../mod/settings.php:737
-msgid "On"
-msgstr "Funcionant"
-
-#: ../../mod/settings.php:744
+#: ../../Zotlabs/Module/Settings.php:729
msgid "Additional Features"
msgstr "Característiques Addicionals"
-#: ../../mod/settings.php:768
+#: ../../Zotlabs/Module/Settings.php:753
msgid "Connector Settings"
msgstr "Ajustos de Connector"
-#: ../../mod/settings.php:807
+#: ../../Zotlabs/Module/Settings.php:792
msgid "No special theme for mobile devices"
msgstr "No emprar tema especial per aparells mòbils"
-#: ../../mod/settings.php:810
+#: ../../Zotlabs/Module/Settings.php:795
#, php-format
msgid "%s - (Experimental)"
msgstr "%s - (Experimental)"
-#: ../../mod/settings.php:849
+#: ../../Zotlabs/Module/Settings.php:837
msgid "Display Settings"
msgstr "Ajustos de Pantalla"
-#: ../../mod/settings.php:850
+#: ../../Zotlabs/Module/Settings.php:838
msgid "Theme Settings"
msgstr "Ajustos de Tema"
-#: ../../mod/settings.php:851
+#: ../../Zotlabs/Module/Settings.php:839
msgid "Custom Theme Settings"
msgstr "Ajustos Personals de Tema"
-#: ../../mod/settings.php:852
+#: ../../Zotlabs/Module/Settings.php:840
msgid "Content Settings"
msgstr "Ajustos de Contingut"
-#: ../../mod/settings.php:858
+#: ../../Zotlabs/Module/Settings.php:846
msgid "Display Theme:"
msgstr "Ajustos de Tema:"
-#: ../../mod/settings.php:859
+#: ../../Zotlabs/Module/Settings.php:847
msgid "Mobile Theme:"
msgstr "Tema Mòbil:"
-#: ../../mod/settings.php:860
+#: ../../Zotlabs/Module/Settings.php:848
+msgid "Preload images before rendering the page"
+msgstr "Precarrega les imatges abans de dibuixar la pàgina"
+
+#: ../../Zotlabs/Module/Settings.php:848
+msgid ""
+"The subjective page load time will be longer but the page will be ready when"
+" displayed"
+msgstr "El temps subjectiu per carregar la pàgina pot ser llarg però la pàgina estarà preparada quan es mostri"
+
+#: ../../Zotlabs/Module/Settings.php:849
msgid "Enable user zoom on mobile devices"
msgstr "Zoom d'usuari en dispositius mòbils"
-#: ../../mod/settings.php:861
+#: ../../Zotlabs/Module/Settings.php:850
msgid "Update browser every xx seconds"
msgstr "Actualitza el navegador cada xx segons"
-#: ../../mod/settings.php:861
+#: ../../Zotlabs/Module/Settings.php:850
msgid "Minimum of 10 seconds, no maximum"
msgstr "Mínim de 10 segons, sense màxim"
-#: ../../mod/settings.php:862
+#: ../../Zotlabs/Module/Settings.php:851
msgid "Maximum number of conversations to load at any time:"
msgstr "Nombre màxim de conversacions a càrregar cada vegada"
-#: ../../mod/settings.php:862
+#: ../../Zotlabs/Module/Settings.php:851
msgid "Maximum of 100 items"
msgstr "Màxim de 100 elements"
-#: ../../mod/settings.php:863
+#: ../../Zotlabs/Module/Settings.php:852
msgid "Show emoticons (smilies) as images"
msgstr "Mostra emoticons (smilies) com a imatges"
-#: ../../mod/settings.php:864
+#: ../../Zotlabs/Module/Settings.php:853
msgid "Link post titles to source"
msgstr "Enllaça a l'origen els títols de l'entrada"
-#: ../../mod/settings.php:865
+#: ../../Zotlabs/Module/Settings.php:854
msgid "System Page Layout Editor - (advanced)"
msgstr "Editor de Disseny de la Pàgina del Sistema - (avançat)"
-#: ../../mod/settings.php:868
+#: ../../Zotlabs/Module/Settings.php:857
msgid "Use blog/list mode on channel page"
msgstr "Empra el mode blog/llista a la pàgina del canal"
-#: ../../mod/settings.php:868 ../../mod/settings.php:869
+#: ../../Zotlabs/Module/Settings.php:857 ../../Zotlabs/Module/Settings.php:858
msgid "(comments displayed separately)"
msgstr "(Observacions es mostren per separat)"
-#: ../../mod/settings.php:869
-msgid "Use blog/list mode on matrix page"
-msgstr "Empra mode blog/llista a la pàgina de matrix"
+#: ../../Zotlabs/Module/Settings.php:858
+msgid "Use blog/list mode on grid page"
+msgstr "Empra el mode de blog/llista a la pàgina de la malla"
-#: ../../mod/settings.php:870
+#: ../../Zotlabs/Module/Settings.php:859
msgid "Channel page max height of content (in pixels)"
msgstr "Alçada màxima de contingut (en píxels) de la pàgina de Canal"
-#: ../../mod/settings.php:870 ../../mod/settings.php:871
+#: ../../Zotlabs/Module/Settings.php:859 ../../Zotlabs/Module/Settings.php:860
msgid "click to expand content exceeding this height"
msgstr "Clic per expandir el contingut que excedeixi aquesta alçada"
-#: ../../mod/settings.php:871
-msgid "Matrix page max height of content (in pixels)"
-msgstr "Alçada màxima del contingut (en píxels) de la pàgina Matrix"
+#: ../../Zotlabs/Module/Settings.php:860
+msgid "Grid page max height of content (in pixels)"
+msgstr "Alçada màxima dels continguts (en píxels) de la Pàgina de Malla "
-#: ../../mod/settings.php:905
+#: ../../Zotlabs/Module/Settings.php:894
msgid "Nobody except yourself"
msgstr "Ningú excepte tú"
-#: ../../mod/settings.php:906
+#: ../../Zotlabs/Module/Settings.php:895
msgid "Only those you specifically allow"
msgstr "Només allò que específicament permetis"
-#: ../../mod/settings.php:907
+#: ../../Zotlabs/Module/Settings.php:896
msgid "Approved connections"
msgstr "Connexions aprovades"
-#: ../../mod/settings.php:908
+#: ../../Zotlabs/Module/Settings.php:897
msgid "Any connections"
msgstr "Qualsevol connexió"
-#: ../../mod/settings.php:909
+#: ../../Zotlabs/Module/Settings.php:898
msgid "Anybody on this website"
msgstr "Qualsevol en aquest lloc"
-#: ../../mod/settings.php:910
+#: ../../Zotlabs/Module/Settings.php:899
msgid "Anybody in this network"
msgstr "Qualsevol en aquesta xarxa"
-#: ../../mod/settings.php:911
+#: ../../Zotlabs/Module/Settings.php:900
msgid "Anybody authenticated"
msgstr "Qualsevol autenticat"
-#: ../../mod/settings.php:912
+#: ../../Zotlabs/Module/Settings.php:901
msgid "Anybody on the internet"
msgstr "Qualsevol a internet"
-#: ../../mod/settings.php:986
+#: ../../Zotlabs/Module/Settings.php:976
msgid "Publish your default profile in the network directory"
msgstr "Publica el teu perfil per defecte al directori de la xarxa"
-#: ../../mod/settings.php:991
+#: ../../Zotlabs/Module/Settings.php:981
msgid "Allow us to suggest you as a potential friend to new members?"
msgstr "Ens permets suggerir-te com a potencial amic als nous membres?"
-#: ../../mod/settings.php:1000
+#: ../../Zotlabs/Module/Settings.php:990
msgid "Your channel address is"
-msgstr "La teva direcció del canal es"
+msgstr "La teva adreça del canal es"
-#: ../../mod/settings.php:1048
+#: ../../Zotlabs/Module/Settings.php:1032
msgid "Channel Settings"
msgstr "Ajustos del Canal"
-#: ../../mod/settings.php:1055
+#: ../../Zotlabs/Module/Settings.php:1039
msgid "Basic Settings"
msgstr "Ajustos Bàsics"
-#: ../../mod/settings.php:1058
+#: ../../Zotlabs/Module/Settings.php:1040 ../../include/channel.php:1140
+msgid "Full Name:"
+msgstr "Nom Complet:"
+
+#: ../../Zotlabs/Module/Settings.php:1042
msgid "Your Timezone:"
msgstr "La teva Franja Horària"
-#: ../../mod/settings.php:1059
+#: ../../Zotlabs/Module/Settings.php:1043
msgid "Default Post Location:"
msgstr "Localització Predeterminada de les Entrades:"
-#: ../../mod/settings.php:1059
+#: ../../Zotlabs/Module/Settings.php:1043
msgid "Geographical location to display on your posts"
msgstr "Posició geogràfica a mostrar a les teves entrades"
-#: ../../mod/settings.php:1060
+#: ../../Zotlabs/Module/Settings.php:1044
msgid "Use Browser Location:"
msgstr "Empra la Localització del Navegador:"
-#: ../../mod/settings.php:1062
+#: ../../Zotlabs/Module/Settings.php:1046
msgid "Adult Content"
msgstr "Contingut per a Adults"
-#: ../../mod/settings.php:1062
+#: ../../Zotlabs/Module/Settings.php:1046
msgid ""
"This channel frequently or regularly publishes adult content. (Please tag "
"any adult material and/or nudity with #NSFW)"
msgstr "Aquest canal publica freqúentment o amb regularitat contingut per a adults. (Si us plau, etiqueti qualsevol material per a adults amb #NSFW)"
-#: ../../mod/settings.php:1064
+#: ../../Zotlabs/Module/Settings.php:1048
msgid "Security and Privacy Settings"
msgstr "Ajustos de Seguretat i Privacitat"
-#: ../../mod/settings.php:1066
+#: ../../Zotlabs/Module/Settings.php:1051
msgid "Your permissions are already configured. Click to view/adjust"
msgstr "Els teus permisos estan configurats. Clic per veure/ajustar"
-#: ../../mod/settings.php:1068
+#: ../../Zotlabs/Module/Settings.php:1053
msgid "Hide my online presence"
msgstr "Amaga la meva presencia en línia"
-#: ../../mod/settings.php:1068
+#: ../../Zotlabs/Module/Settings.php:1053
msgid "Prevents displaying in your profile that you are online"
msgstr "Evita mostrar en el teu perfil, que estàs en línia"
-#: ../../mod/settings.php:1070
+#: ../../Zotlabs/Module/Settings.php:1055
msgid "Simple Privacy Settings:"
msgstr "Ajustos simples de privacitat:"
-#: ../../mod/settings.php:1071
+#: ../../Zotlabs/Module/Settings.php:1056
msgid ""
"Very Public - <em>extremely permissive (should be used with caution)</em>"
msgstr "Molt públic - <em>extremadament permissiu (s'ha d'anar en compte)</em>"
-#: ../../mod/settings.php:1072
+#: ../../Zotlabs/Module/Settings.php:1057
msgid ""
"Typical - <em>default public, privacy when desired (similar to social "
"network permissions but with improved privacy)</em>"
msgstr "Normal - <em>públic per defecte, privat quan es desitgi (similar als permisos de xarxa social, però amb millor privacitat)"
-#: ../../mod/settings.php:1073
+#: ../../Zotlabs/Module/Settings.php:1058
msgid "Private - <em>default private, never open or public</em>"
msgstr "Privat - <em>privat per defecte, mai públic o obert</em>"
-#: ../../mod/settings.php:1074
+#: ../../Zotlabs/Module/Settings.php:1059
msgid "Blocked - <em>default blocked to/from everybody</em>"
msgstr "Bloquejat - <em>tothom bloquejat per defecte</em>"
-#: ../../mod/settings.php:1076
+#: ../../Zotlabs/Module/Settings.php:1061
msgid "Allow others to tag your posts"
msgstr "Permet a altres etiquetar les teves entrades"
-#: ../../mod/settings.php:1076
+#: ../../Zotlabs/Module/Settings.php:1061
msgid ""
"Often used by the community to retro-actively flag inappropriate content"
msgstr "Sovint emprat per la comunitat per marcar retroactivament contingut inapropiat"
-#: ../../mod/settings.php:1078
+#: ../../Zotlabs/Module/Settings.php:1063
msgid "Advanced Privacy Settings"
msgstr "Ajustos avançats de privacitat"
-#: ../../mod/settings.php:1080
+#: ../../Zotlabs/Module/Settings.php:1065
msgid "Expire other channel content after this many days"
msgstr "El contingut d'altes canals caduca després d'aquests dies"
-#: ../../mod/settings.php:1080
-msgid "0 or blank prevents expiration"
-msgstr "0 o vuit evita caducitat"
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "0 or blank to use the website limit."
+msgstr "0 o en blanc per emprar el limit del lloc web."
+
+#: ../../Zotlabs/Module/Settings.php:1065
+#, php-format
+msgid "This website expires after %d days."
+msgstr "Aquest lloc web expira després de %d dies."
+
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "This website does not expire imported content."
+msgstr "A aquest lloc web no expira el contingut importat"
-#: ../../mod/settings.php:1081
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "The website limit takes precedence if lower than your limit."
+msgstr "El límit del lloc web pren la preferència si es inferior al teu límit."
+
+#: ../../Zotlabs/Module/Settings.php:1066
msgid "Maximum Friend Requests/Day:"
msgstr "Nombre màxim de peticions d'amistat per dia"
-#: ../../mod/settings.php:1081
+#: ../../Zotlabs/Module/Settings.php:1066
msgid "May reduce spam activity"
msgstr "Pot reduir l'SPAM"
-#: ../../mod/settings.php:1082
-msgid "Default Post Permissions"
-msgstr "Permisos de publicació per defecte"
+#: ../../Zotlabs/Module/Settings.php:1067
+msgid "Default Post and Publish Permissions"
+msgstr "Permisos de Entrades i Publicació per defecte"
+
+#: ../../Zotlabs/Module/Settings.php:1069
+msgid "Use my default audience setting for the type of object published"
+msgstr "Empra els meus ajustos per defecte segons el tipus de entrada publicada"
-#: ../../mod/settings.php:1087
+#: ../../Zotlabs/Module/Settings.php:1072
msgid "Channel permissions category:"
msgstr "Categoria de permisos de canal:"
-#: ../../mod/settings.php:1093
+#: ../../Zotlabs/Module/Settings.php:1078
msgid "Maximum private messages per day from unknown people:"
msgstr "Nombre màxim de missatges privats de desconeguts al dia:"
-#: ../../mod/settings.php:1093
+#: ../../Zotlabs/Module/Settings.php:1078
msgid "Useful to reduce spamming"
msgstr "Útil per a reduir l'spam"
-#: ../../mod/settings.php:1096
+#: ../../Zotlabs/Module/Settings.php:1081
msgid "Notification Settings"
msgstr "Ajustos de notificacions"
-#: ../../mod/settings.php:1097
+#: ../../Zotlabs/Module/Settings.php:1082
msgid "By default post a status message when:"
msgstr "Per defecte envia un missatge d'estat quan:"
-#: ../../mod/settings.php:1098
+#: ../../Zotlabs/Module/Settings.php:1083
msgid "accepting a friend request"
-msgstr "Acceptar una sol·licitud d'amistat"
+msgstr "S'accepta una sol·licitud d'amistat"
-#: ../../mod/settings.php:1099
+#: ../../Zotlabs/Module/Settings.php:1084
msgid "joining a forum/community"
msgstr "Apuntar-se a un fòrum o comunitat"
-#: ../../mod/settings.php:1100
+#: ../../Zotlabs/Module/Settings.php:1085
msgid "making an <em>interesting</em> profile change"
-msgstr "faci un canvi <em>interesant</em> al perfil"
+msgstr "Faci un canvi <em>interesant</em> al perfil"
-#: ../../mod/settings.php:1101
+#: ../../Zotlabs/Module/Settings.php:1086
msgid "Send a notification email when:"
msgstr "Notifica per correu quan:"
-#: ../../mod/settings.php:1102
+#: ../../Zotlabs/Module/Settings.php:1087
msgid "You receive a connection request"
msgstr "Rebi una petició de connexió"
-#: ../../mod/settings.php:1103
+#: ../../Zotlabs/Module/Settings.php:1088
msgid "Your connections are confirmed"
msgstr "Es confirma una connexió"
-#: ../../mod/settings.php:1104
+#: ../../Zotlabs/Module/Settings.php:1089
msgid "Someone writes on your profile wall"
msgstr "Algú ha escrit al mur del teu perfil"
-#: ../../mod/settings.php:1105
+#: ../../Zotlabs/Module/Settings.php:1090
msgid "Someone writes a followup comment"
msgstr "Algú ha escrit un comentari de resposta"
-#: ../../mod/settings.php:1106
+#: ../../Zotlabs/Module/Settings.php:1091
msgid "You receive a private message"
msgstr "Rebi un missatge privat"
-#: ../../mod/settings.php:1107
+#: ../../Zotlabs/Module/Settings.php:1092
msgid "You receive a friend suggestion"
msgstr "Rebi una suggerència d'amistat"
-#: ../../mod/settings.php:1108
+#: ../../Zotlabs/Module/Settings.php:1093
msgid "You are tagged in a post"
msgstr "Estàs etiquetat a l'entrada"
-#: ../../mod/settings.php:1109
+#: ../../Zotlabs/Module/Settings.php:1094
msgid "You are poked/prodded/etc. in a post"
msgstr "S'enfoten/te piquen/etc. en una entrada"
-#: ../../mod/settings.php:1112
+#: ../../Zotlabs/Module/Settings.php:1097
msgid "Show visual notifications including:"
msgstr "Mostra notificacion visuals, com ara:"
-#: ../../mod/settings.php:1114
-msgid "Unseen matrix activity"
-msgstr "Activitat no vista a la xarxa"
+#: ../../Zotlabs/Module/Settings.php:1099
+msgid "Unseen grid activity"
+msgstr "Activitat de malla no vista"
-#: ../../mod/settings.php:1115
+#: ../../Zotlabs/Module/Settings.php:1100
msgid "Unseen channel activity"
msgstr "Activitat no vista del canal"
-#: ../../mod/settings.php:1116
+#: ../../Zotlabs/Module/Settings.php:1101
msgid "Unseen private messages"
msgstr "Missatges privats no llegits"
-#: ../../mod/settings.php:1116 ../../mod/settings.php:1121
-#: ../../mod/settings.php:1122 ../../mod/settings.php:1123
+#: ../../Zotlabs/Module/Settings.php:1101
+#: ../../Zotlabs/Module/Settings.php:1106
+#: ../../Zotlabs/Module/Settings.php:1107
+#: ../../Zotlabs/Module/Settings.php:1108
msgid "Recommended"
msgstr "Recomanat"
-#: ../../mod/settings.php:1117
+#: ../../Zotlabs/Module/Settings.php:1102
msgid "Upcoming events"
msgstr "Esdeveniments propers"
-#: ../../mod/settings.php:1118
+#: ../../Zotlabs/Module/Settings.php:1103
msgid "Events today"
msgstr "Esdeveniments d'avui"
-#: ../../mod/settings.php:1119
+#: ../../Zotlabs/Module/Settings.php:1104
msgid "Upcoming birthdays"
msgstr "Aniversaris propers"
-#: ../../mod/settings.php:1119
+#: ../../Zotlabs/Module/Settings.php:1104
msgid "Not available in all themes"
msgstr "No està disponible en tots els temes"
-#: ../../mod/settings.php:1120
+#: ../../Zotlabs/Module/Settings.php:1105
msgid "System (personal) notifications"
-msgstr "Notificacions (personals) de sistema"
+msgstr "Notificacions (personals) del sistema"
-#: ../../mod/settings.php:1121
+#: ../../Zotlabs/Module/Settings.php:1106
msgid "System info messages"
msgstr "Missatges d'informació del sistema"
-#: ../../mod/settings.php:1122
+#: ../../Zotlabs/Module/Settings.php:1107
msgid "System critical alerts"
msgstr "Alertes crítiques del sistema"
-#: ../../mod/settings.php:1123
+#: ../../Zotlabs/Module/Settings.php:1108
msgid "New connections"
msgstr "Noves connexions"
-#: ../../mod/settings.php:1124
+#: ../../Zotlabs/Module/Settings.php:1109
msgid "System Registrations"
msgstr "Registres del sistema"
-#: ../../mod/settings.php:1125
+#: ../../Zotlabs/Module/Settings.php:1110
msgid ""
"Also show new wall posts, private messages and connections under Notices"
msgstr "Mostra també les entrades de mur noves, les entrades privades i les connexions a \"Notícies\""
-#: ../../mod/settings.php:1127
+#: ../../Zotlabs/Module/Settings.php:1112
msgid "Notify me of events this many days in advance"
msgstr "Notifica'm dels esdeveniments amb aquests dies d'antelació"
-#: ../../mod/settings.php:1127
+#: ../../Zotlabs/Module/Settings.php:1112
msgid "Must be greater than 0"
msgstr "Ha de ser més gran que 0"
-#: ../../mod/settings.php:1129
+#: ../../Zotlabs/Module/Settings.php:1114
msgid "Advanced Account/Page Type Settings"
msgstr "Ajustos avançats de compte i tipus de pàgina"
-#: ../../mod/settings.php:1130
+#: ../../Zotlabs/Module/Settings.php:1115
msgid "Change the behaviour of this account for special situations"
msgstr "Modifica el comportament d'aquest compte en situacions especials"
-#: ../../mod/settings.php:1133
+#: ../../Zotlabs/Module/Settings.php:1118
msgid ""
"Please enable expert mode (in <a href=\"settings/features\">Settings > "
"Additional features</a>) to adjust!"
msgstr "Activa el mode d'expert (a <a href=\"settings/features\">Ajustos > Més funcions</a>)"
-#: ../../mod/settings.php:1134
+#: ../../Zotlabs/Module/Settings.php:1119
msgid "Miscellaneous Settings"
msgstr "Ajustos diversos"
-#: ../../mod/settings.php:1136
+#: ../../Zotlabs/Module/Settings.php:1120
+msgid "Default photo upload folder"
+msgstr "Carpeta per defecte de fotos pujades"
+
+#: ../../Zotlabs/Module/Settings.php:1120
+#: ../../Zotlabs/Module/Settings.php:1121
+msgid "%Y - current year, %m - current month"
+msgstr "%Y - any en curs, %m - mes corrent"
+
+#: ../../Zotlabs/Module/Settings.php:1121
+msgid "Default file upload folder"
+msgstr "Carpeta per defecte d'arxius pujats"
+
+#: ../../Zotlabs/Module/Settings.php:1123
msgid "Personal menu to display in your channel pages"
msgstr "Menú personal per mostrar en les teves pàgines de canal"
-#: ../../mod/settings.php:1137 ../../mod/removeme.php:61
-msgid "Remove Channel"
-msgstr "Elimina el canal"
-
-#: ../../mod/settings.php:1138
+#: ../../Zotlabs/Module/Settings.php:1125
msgid "Remove this channel."
msgstr "Elimina aquest canal."
-#: ../../mod/id.php:11
-msgid "First Name"
-msgstr "Nom"
+#: ../../Zotlabs/Module/Settings.php:1126
+msgid "Firefox Share $Projectname provider"
+msgstr "Firefox Share $Projectname provider"
-#: ../../mod/id.php:12
-msgid "Last Name"
-msgstr "Cognoms"
+#: ../../Zotlabs/Module/Settings.php:1127
+msgid "Start calendar week on monday"
+msgstr "Comença la setmana del calendari el dilluns"
-#: ../../mod/id.php:13
-msgid "Nickname"
-msgstr "Àlies"
+#: ../../Zotlabs/Module/Setup.php:179
+msgid "$Projectname Server - Setup"
+msgstr "Servidor $Projectname - Configuració"
-#: ../../mod/id.php:14
-msgid "Full Name"
-msgstr "Nom Sencer"
+#: ../../Zotlabs/Module/Setup.php:183
+msgid "Could not connect to database."
+msgstr "No puc connectar amb la base de dades"
-#: ../../mod/id.php:20
-msgid "Profile Photo 16px"
-msgstr "Foto del Perfil 16px"
+#: ../../Zotlabs/Module/Setup.php:187
+msgid ""
+"Could not connect to specified site URL. Possible SSL certificate or DNS "
+"issue."
+msgstr "No s'ha pogut connectar a l'URL del lloc especificat. Possible problema amb el certificat SSL o de DNS."
-#: ../../mod/id.php:21
-msgid "Profile Photo 32px"
-msgstr "Foto del Perfil 32px"
+#: ../../Zotlabs/Module/Setup.php:194
+msgid "Could not create table."
+msgstr "No puc crear la taula."
-#: ../../mod/id.php:22
-msgid "Profile Photo 48px"
-msgstr "Foto del Perfil 48px"
+#: ../../Zotlabs/Module/Setup.php:199
+msgid "Your site database has been installed."
+msgstr "La teva base de dades del lloc s'ha instal·lat."
-#: ../../mod/id.php:23
-msgid "Profile Photo 64px"
-msgstr "Foto del Perfil 64px"
+#: ../../Zotlabs/Module/Setup.php:203
+msgid ""
+"You may need to import the file \"install/schema_xxx.sql\" manually using a "
+"database client."
+msgstr "Podria ser necessari importar el fitxer \"install / schema_xxx.sql\" manualment utilitzant un client de base de dades."
-#: ../../mod/id.php:24
-msgid "Profile Photo 80px"
-msgstr "Foto del Perfil 80px"
+#: ../../Zotlabs/Module/Setup.php:204 ../../Zotlabs/Module/Setup.php:266
+#: ../../Zotlabs/Module/Setup.php:721
+msgid "Please see the file \"install/INSTALL.txt\"."
+msgstr "Si us plau, consulteu el fitxer \"install / INSTALL.txt\"."
-#: ../../mod/id.php:25
-msgid "Profile Photo 128px"
-msgstr "Foto del Perfil 128px"
+#: ../../Zotlabs/Module/Setup.php:263
+msgid "System check"
+msgstr "Comprovació del sistema"
-#: ../../mod/id.php:26
-msgid "Timezone"
-msgstr "Zona horària"
+#: ../../Zotlabs/Module/Setup.php:268
+msgid "Check again"
+msgstr "Comprova de nou"
-#: ../../mod/id.php:27
-msgid "Homepage URL"
-msgstr "URL de la pàgina d'inici"
+#: ../../Zotlabs/Module/Setup.php:290
+msgid "Database connection"
+msgstr "Connexió de base de dades"
-#: ../../mod/id.php:29
-msgid "Birth Year"
-msgstr "Any de Naixement"
+#: ../../Zotlabs/Module/Setup.php:291
+msgid ""
+"In order to install $Projectname we need to know how to connect to your "
+"database."
+msgstr "Per tal d'instaŀlar $Projectname cal configurar la connexió a la base de dades."
-#: ../../mod/id.php:30
-msgid "Birth Month"
-msgstr "Mes de Naixement"
+#: ../../Zotlabs/Module/Setup.php:292
+msgid ""
+"Please contact your hosting provider or site administrator if you have "
+"questions about these settings."
+msgstr "Si us plau, poseu-vos en contacte amb el proveïdor de serveis o administrador del lloc si vostè té preguntes sobre aquests paràmetres."
-#: ../../mod/id.php:31
-msgid "Birth Day"
-msgstr "Dia de Naixement"
+#: ../../Zotlabs/Module/Setup.php:293
+msgid ""
+"The database you specify below should already exist. If it does not, please "
+"create it before continuing."
+msgstr "La base de dades s'especifica a continuació ja ha d'existir. Si no és així, si us plau crear-la abans de continuar."
-#: ../../mod/id.php:32
-msgid "Birthdate"
-msgstr "Aniversari"
+#: ../../Zotlabs/Module/Setup.php:297
+msgid "Database Server Name"
+msgstr "Base de Dades Nom del Servidor"
-#: ../../mod/message.php:41
-msgid "Conversation removed."
-msgstr "Conversació eliminada."
+#: ../../Zotlabs/Module/Setup.php:297
+msgid "Default is 127.0.0.1"
+msgstr "Per defecte es 127.0.0.1"
-#: ../../mod/message.php:56
-msgid "No messages."
-msgstr "Sense missatges."
+#: ../../Zotlabs/Module/Setup.php:298
+msgid "Database Port"
+msgstr "Port per a la Base de Dades"
-#: ../../mod/message.php:72 ../../mod/mail.php:336
-msgid "Delete conversation"
-msgstr "Conversació esborrada"
+#: ../../Zotlabs/Module/Setup.php:298
+msgid "Communication port number - use 0 for default"
+msgstr "Numero del port de comunicacions - empra 0 per defecte"
-#: ../../mod/message.php:74
-msgid "D, d M Y - g:i A"
-msgstr "D, d M Y - g:i A"
+#: ../../Zotlabs/Module/Setup.php:299
+msgid "Database Login Name"
+msgstr "Base de Dades Nom d'Accès"
-#: ../../mod/mood.php:131
-msgid "Set your current mood and tell your friends"
-msgstr "Estableix el teu estat d'ànim actual i digues-li als teus amics"
+#: ../../Zotlabs/Module/Setup.php:300
+msgid "Database Login Password"
+msgstr "Base de Dades Contrasenya d'Accès"
+
+#: ../../Zotlabs/Module/Setup.php:301
+msgid "Database Name"
+msgstr "Nom de la Base de Dades"
-#: ../../mod/vote.php:97
-msgid "Total votes"
-msgstr "Total de vots"
+#: ../../Zotlabs/Module/Setup.php:302
+msgid "Database Type"
+msgstr "Tipus de Base de Dades"
-#: ../../mod/vote.php:98
-msgid "Average Rating"
-msgstr "Valoració Mitja"
+#: ../../Zotlabs/Module/Setup.php:304 ../../Zotlabs/Module/Setup.php:344
+msgid "Site administrator email address"
+msgstr "Adreça de correu de l'administrador del lloc"
-#: ../../mod/removeme.php:29
+#: ../../Zotlabs/Module/Setup.php:304 ../../Zotlabs/Module/Setup.php:344
msgid ""
-"Channel removals are not allowed within 48 hours of changing the account "
-"password."
-msgstr "L'esborrat de canals no està permès fins que transcorren 48 hores des de l'últim canvi de contrasenya."
+"Your account email address must match this in order to use the web admin "
+"panel."
+msgstr "El teu compte de email ha de coincidir amb això per poder emprar el panel web d'administrador."
-#: ../../mod/removeme.php:57
-msgid "Remove This Channel"
-msgstr "Elimina Aquest Canal"
+#: ../../Zotlabs/Module/Setup.php:305 ../../Zotlabs/Module/Setup.php:346
+msgid "Website URL"
+msgstr "URL del lloc web"
-#: ../../mod/removeme.php:58
-msgid "This channel will be completely removed from the network. "
-msgstr "Aquest canal serà completament eliminat de la xarxa."
+#: ../../Zotlabs/Module/Setup.php:305 ../../Zotlabs/Module/Setup.php:346
+msgid "Please use SSL (https) URL if available."
+msgstr "Si us plau, empra SSL (https) URL si està disponible."
-#: ../../mod/removeme.php:60
-msgid "Remove this channel and all its clones from the network"
-msgstr "Elimina aquest canal i els seus clons de la xarxa"
+#: ../../Zotlabs/Module/Setup.php:306 ../../Zotlabs/Module/Setup.php:349
+msgid "Please select a default timezone for your website"
+msgstr "Si us plau, tria la zona horària del teu lloc web"
+
+#: ../../Zotlabs/Module/Setup.php:333
+msgid "Site settings"
+msgstr "Ajustos del lloc"
+
+#: ../../Zotlabs/Module/Setup.php:347
+msgid "Enable $Projectname <strong>advanced</strong> features?"
+msgstr "Activar característiques <strong>advanced</strong> de $Projectname?"
-#: ../../mod/removeme.php:60
+#: ../../Zotlabs/Module/Setup.php:347
msgid ""
-"By default only the instance of the channel located on this hub will be "
-"removed from the network"
-msgstr "Per defecte, només la instancia del canal ubicat en aquest concentrador pot esser esborrat de la xarxa"
+"Some advanced features, while useful - may be best suited for technically "
+"proficient audiences"
+msgstr "Algunes característiques avançades, hauran de ser ajustades per persones tècnicament capaces, per poder emprar-les."
-#: ../../mod/connedit.php:267
-msgid "is now connected to"
-msgstr "Ara està conectat amb"
+#: ../../Zotlabs/Module/Setup.php:388
+msgid "PHP version 5.5 or greater is required."
+msgstr "PHP version 5.5 or greater is required."
-#: ../../mod/connedit.php:380
-msgid "Could not access address book record."
-msgstr "No puc accedir al registre del contacte"
+#: ../../Zotlabs/Module/Setup.php:389
+msgid "PHP version"
+msgstr "PHP version"
-#: ../../mod/connedit.php:394
-msgid "Refresh failed - channel is currently unavailable."
-msgstr "Ha fallat la recàrrega - el canal es actualment inaccesible."
+#: ../../Zotlabs/Module/Setup.php:404
+msgid "Could not find a command line version of PHP in the web server PATH."
+msgstr "No s'ha pogut trobar una versió de línia d'ordres del PHP en el PATH del servidor web."
-#: ../../mod/connedit.php:406 ../../mod/connedit.php:418
-#: ../../mod/connedit.php:430 ../../mod/connedit.php:442
-#: ../../mod/connedit.php:458
-msgid "Unable to set address book parameters."
-msgstr "No es poden ajustar els paràmetres dels contactes."
+#: ../../Zotlabs/Module/Setup.php:405
+msgid ""
+"If you don't have a command line version of PHP installed on server, you "
+"will not be able to run background polling via cron."
+msgstr "Si vostè no té una versió de línia d'ordres del PHP instal·lada al servidor, vostè no serà capaç d'executar sondejos en segon pla via cron."
-#: ../../mod/connedit.php:482
-msgid "Connection has been removed."
-msgstr "S'han eliminat les conexions."
+#: ../../Zotlabs/Module/Setup.php:409
+msgid "PHP executable path"
+msgstr "Camí cap l'executable de PHP"
-#: ../../mod/connedit.php:501
+#: ../../Zotlabs/Module/Setup.php:409
+msgid ""
+"Enter full path to php executable. You can leave this blank to continue the "
+"installation."
+msgstr "Introdueix el camí cap l'executable de php. Pots deixa-ho en blanc i continuar l'instal·lació."
+
+#: ../../Zotlabs/Module/Setup.php:414
+msgid "Command line PHP"
+msgstr "Línia d'ordres de PHP"
+
+#: ../../Zotlabs/Module/Setup.php:423
+msgid ""
+"The command line version of PHP on your system does not have "
+"\"register_argc_argv\" enabled."
+msgstr "La versió de línia d'ordres de PHP al teu sistema no te el \"register_argc_argv\" activat."
+
+#: ../../Zotlabs/Module/Setup.php:424
+msgid "This is required for message delivery to work."
+msgstr "Això es requereix per que funcioni l'entrega de missatges."
+
+#: ../../Zotlabs/Module/Setup.php:427
+msgid "PHP register_argc_argv"
+msgstr "PHP register_argc_argv"
+
+#: ../../Zotlabs/Module/Setup.php:445
#, php-format
-msgid "View %s's profile"
-msgstr "Mostra el perfil de %s"
+msgid ""
+"Your max allowed total upload size is set to %s. Maximum size of one file to"
+" upload is set to %s. You are allowed to upload up to %d files at once."
+msgstr "La mida màxima que se't permet pujar està establerta en %s. La mida màxima per arxiu pujat es de %s. Se't permet pujar fins a %d arxius d'una vegada."
-#: ../../mod/connedit.php:505
-msgid "Refresh Permissions"
-msgstr "Recarrega els Permissos"
+#: ../../Zotlabs/Module/Setup.php:450
+msgid "You can adjust these settings in the servers php.ini."
+msgstr "Pots ajustar aquests valors a l'arxiu php.ini del servidor"
-#: ../../mod/connedit.php:508
-msgid "Fetch updated permissions"
-msgstr "Obté els permisos actualitzats"
+#: ../../Zotlabs/Module/Setup.php:452
+msgid "PHP upload limits"
+msgstr "Límits de pujada de PHP"
-#: ../../mod/connedit.php:512
-msgid "Recent Activity"
-msgstr "Activitat Recent"
+#: ../../Zotlabs/Module/Setup.php:475
+msgid ""
+"Error: the \"openssl_pkey_new\" function on this system is not able to "
+"generate encryption keys"
+msgstr "Error: la funció \"openssl_pkey_new\" en aquest sistema no es capaç de generar claus d'encriptació"
-#: ../../mod/connedit.php:515
-msgid "View recent posts and comments"
-msgstr "Mostra les entrades i comentaris recents"
+#: ../../Zotlabs/Module/Setup.php:476
+msgid ""
+"If running under Windows, please see "
+"\"http://www.php.net/manual/en/openssl.installation.php\"."
+msgstr "Si esta funcionant sota Windows, per favor, miri \"http://www.php.net/manual/en/openssl.installation.php\"."
-#: ../../mod/connedit.php:522
-msgid "Block (or Unblock) all communications with this connection"
-msgstr "Boqueja (o Desbloqueja) les comunicacions amb aquesta connexió"
+#: ../../Zotlabs/Module/Setup.php:479
+msgid "Generate encryption keys"
+msgstr "Generar claus de xifrat"
-#: ../../mod/connedit.php:523
-msgid "This connection is blocked!"
-msgstr "Aquesta connexió està bloquejada!"
+#: ../../Zotlabs/Module/Setup.php:491
+msgid "libCurl PHP module"
+msgstr "mòdul PHP libCurl "
-#: ../../mod/connedit.php:527
-msgid "Unignore"
-msgstr "Inhabilita"
+#: ../../Zotlabs/Module/Setup.php:492
+msgid "GD graphics PHP module"
+msgstr "mòdul PHP GD gràfics"
-#: ../../mod/connedit.php:527 ../../mod/notifications.php:51
-msgid "Ignore"
-msgstr "Ignora"
+#: ../../Zotlabs/Module/Setup.php:493
+msgid "OpenSSL PHP module"
+msgstr "mòdul PHP OpenSSL"
-#: ../../mod/connedit.php:530
-msgid "Ignore (or Unignore) all inbound communications from this connection"
-msgstr "Ignora (o Considera) les communicacions entrants d'aquesta connexió"
+#: ../../Zotlabs/Module/Setup.php:494
+msgid "mysqli or postgres PHP module"
+msgstr "mòdul PHP mysqli o postgres"
-#: ../../mod/connedit.php:531
-msgid "This connection is ignored!"
-msgstr "Aquesta connexió es ignorada!"
+#: ../../Zotlabs/Module/Setup.php:495
+msgid "mb_string PHP module"
+msgstr "mòdul PHP mb_string"
-#: ../../mod/connedit.php:535
-msgid "Unarchive"
-msgstr "Desarxiva"
+#: ../../Zotlabs/Module/Setup.php:496
+msgid "mcrypt PHP module"
+msgstr "mòdul PHP mcrypt"
-#: ../../mod/connedit.php:535
-msgid "Archive"
-msgstr "Arxiva"
+#: ../../Zotlabs/Module/Setup.php:497
+msgid "xml PHP module"
+msgstr "Mòdul xml de PHP"
-#: ../../mod/connedit.php:538
+#: ../../Zotlabs/Module/Setup.php:501 ../../Zotlabs/Module/Setup.php:503
+msgid "Apache mod_rewrite module"
+msgstr "mòdul Apache mod_rewrite"
+
+#: ../../Zotlabs/Module/Setup.php:501
msgid ""
-"Archive (or Unarchive) this connection - mark channel dead but keep content"
-msgstr "Arxiva (o Desarxiva) aquesta connexió - Marca el canal com a mort pero manté el contingut "
+"Error: Apache webserver mod-rewrite module is required but not installed."
+msgstr "Error: el mòdul mod-rewrite del servidor web Apache es requereix i no està instal·lat."
-#: ../../mod/connedit.php:539
-msgid "This connection is archived!"
-msgstr "Aquesta connexió està arxivada!"
+#: ../../Zotlabs/Module/Setup.php:507 ../../Zotlabs/Module/Setup.php:510
+msgid "proc_open"
+msgstr "proc_open"
-#: ../../mod/connedit.php:543
-msgid "Unhide"
-msgstr "Mostra"
+#: ../../Zotlabs/Module/Setup.php:507
+msgid ""
+"Error: proc_open is required but is either not installed or has been "
+"disabled in php.ini"
+msgstr "Error: es requereix proc_open però o no està instal·lat o ha estat desactivat a php.ini"
-#: ../../mod/connedit.php:543
-msgid "Hide"
-msgstr "Amaga"
+#: ../../Zotlabs/Module/Setup.php:515
+msgid "Error: libCURL PHP module required but not installed."
+msgstr "Error: el mòdul PHP libCURL es requereix però no està instal·lat."
-#: ../../mod/connedit.php:546
-msgid "Hide or Unhide this connection from your other connections"
-msgstr "Amaga (o Mostra) aquesta connexió de les altres connexions teves"
+#: ../../Zotlabs/Module/Setup.php:519
+msgid ""
+"Error: GD graphics PHP module with JPEG support required but not installed."
+msgstr "Error: el mòdul PHP GD graphics amb support JPEG es requereix però no està instal·lat."
-#: ../../mod/connedit.php:547
-msgid "This connection is hidden!"
-msgstr "Aquesta connexió està amagada!"
+#: ../../Zotlabs/Module/Setup.php:523
+msgid "Error: openssl PHP module required but not installed."
+msgstr "Error: el mòdul PHP openssl es requereix però no està instal·lat."
-#: ../../mod/connedit.php:554
-msgid "Delete this connection"
-msgstr "Elimina aquesta connexió"
+#: ../../Zotlabs/Module/Setup.php:527
+msgid ""
+"Error: mysqli or postgres PHP module required but neither are installed."
+msgstr "Error: el mòdul PHO mysqli o postgres es requereix però no està instal·lat."
-#: ../../mod/connedit.php:635
-msgid "Approve this connection"
-msgstr "Apccepta aquesta connexió"
+#: ../../Zotlabs/Module/Setup.php:531
+msgid "Error: mb_string PHP module required but not installed."
+msgstr "Error: el mòdul PHP mb_string es requereix però no està instal·lat."
-#: ../../mod/connedit.php:635
-msgid "Accept connection to allow communication"
-msgstr "Accepta la connexió per permetre la comunicació"
+#: ../../Zotlabs/Module/Setup.php:535
+msgid "Error: mcrypt PHP module required but not installed."
+msgstr "Error: el mòdul PHP mcrypt es requereix però no està instal·lat."
-#: ../../mod/connedit.php:640
-msgid "Set Affinity"
-msgstr "Ajusta l'Afinitat"
+#: ../../Zotlabs/Module/Setup.php:539
+msgid "Error: xml PHP module required for DAV but not installed."
+msgstr "Error: el mòdul xml de PHP es requereix per DAV però no està instal·lat."
-#: ../../mod/connedit.php:643
-msgid "Set Profile"
-msgstr "Ajusta el Perfil"
+#: ../../Zotlabs/Module/Setup.php:557
+msgid ""
+"The web installer needs to be able to create a file called \".htconfig.php\""
+" in the top folder of your web server and it is unable to do so."
+msgstr "L'instaŀlador ha de poder crear i modificar un fitxer anomenat «.htconfig.php» a la carpeta arrel del servidor, però sembla que no ho pot fer."
-#: ../../mod/connedit.php:646
-msgid "Set Affinity & Profile"
-msgstr "Ajusta Afinitat i Perfil"
+#: ../../Zotlabs/Module/Setup.php:558
+msgid ""
+"This is most often a permission setting, as the web server may not be able "
+"to write files in your folder - even if you can."
+msgstr "Això sol ser un problema de permisos. Per molt que el teu usuari pugui modificar-lo, és el del servidor web qui necessita els poders de modificació."
-#: ../../mod/connedit.php:663
-msgid "Apply these permissions automatically"
-msgstr "Aplica aquests permissos automaticament"
+#: ../../Zotlabs/Module/Setup.php:559
+msgid ""
+"At the end of this procedure, we will give you a text to save in a file "
+"named .htconfig.php in your Red top folder."
+msgstr "Al final d'aquest procés hauràs de desar un text a l'arxiu «.htconfig.php», que es troba a la carpeta arrel del servidor."
+
+#: ../../Zotlabs/Module/Setup.php:560
+msgid ""
+"You can alternatively skip this procedure and perform a manual installation."
+" Please see the file \"install/INSTALL.txt\" for instructions."
+msgstr "Aquest procés és opcional. Per a fer una instaŀlació manual consulta les instruccions a «install/INSTALL.txt\"."
-#: ../../mod/connedit.php:665
-msgid "This connection's address is"
-msgstr "La direcció d'aquesta connexió es"
+#: ../../Zotlabs/Module/Setup.php:563
+msgid ".htconfig.php is writable"
+msgstr "L'arxiu «.htconfig.php» es pot modificar"
-#: ../../mod/connedit.php:668
+#: ../../Zotlabs/Module/Setup.php:577
msgid ""
-"The permissions indicated on this page will be applied to all new "
-"connections."
-msgstr "Els permisos indicats en aquesta pàgina seran aplicats a totes les noves connexions."
+"Red uses the Smarty3 template engine to render its web views. Smarty3 "
+"compiles templates to PHP to speed up rendering."
+msgstr "Red fa servir el motor de plantilles Smarty3 per a renderitzar les vistes més ràpidament."
-#: ../../mod/connedit.php:670
-msgid "Slide to adjust your degree of friendship"
-msgstr "Llisca per ajustar el nivell d'amistat"
+#: ../../Zotlabs/Module/Setup.php:578
+#, php-format
+msgid ""
+"In order to store these compiled templates, the web server needs to have "
+"write access to the directory %s under the top level web folder."
+msgstr "Per tal de guardar aquestes plantilles compilades, el servidor web necessita tenir premis d'escriptura en el directori %s sota la carpeta principal."
-#: ../../mod/connedit.php:672
-msgid "Slide to adjust your rating"
-msgstr "Llisca per ajustar la valoració"
+#: ../../Zotlabs/Module/Setup.php:579 ../../Zotlabs/Module/Setup.php:600
+msgid ""
+"Please ensure that the user that your web server runs as (e.g. www-data) has"
+" write access to this folder."
+msgstr "Comprova que l'usuari que executa el servidor (www-data en Apache) té permisos d'escriptura en aquesta carpeta."
-#: ../../mod/connedit.php:673 ../../mod/connedit.php:678
-msgid "Optionally explain your rating"
-msgstr "Opcionalment pots explicar la teva valoració"
+#: ../../Zotlabs/Module/Setup.php:580
+#, php-format
+msgid ""
+"Note: as a security measure, you should give the web server write access to "
+"%s only--not the template files (.tpl) that it contains."
+msgstr "Nota: com a mesura de seguretat l'usuari del servidor web ha de tenir accés d'escriptura només a %s, i no a les plantilles (.tpl) que conté."
-#: ../../mod/connedit.php:675
-msgid "Custom Filter"
-msgstr "Filtre a mida"
+#: ../../Zotlabs/Module/Setup.php:583
+#, php-format
+msgid "%s is writable"
+msgstr "Es pot escriure a %s"
-#: ../../mod/connedit.php:676
-msgid "Only import posts with this text"
-msgstr "Importa exclusivament entrades amb aquest text"
+#: ../../Zotlabs/Module/Setup.php:599
+msgid ""
+"Red uses the store directory to save uploaded files. The web server needs to"
+" have write access to the store directory under the Red top level folder"
+msgstr "Red fa servir la carpeta «store» per a desar els fitxers pujats. Per tant, el servidor web necessita tenir permís d'escriptura en aquesta carpeta, que està a l'arrel del servidor web."
+
+#: ../../Zotlabs/Module/Setup.php:603
+msgid "store is writable"
+msgstr "Es pot escriure al magatzem (store)"
-#: ../../mod/connedit.php:676 ../../mod/connedit.php:677
+#: ../../Zotlabs/Module/Setup.php:636
msgid ""
-"words one per line or #tags or /patterns/, leave blank to import all posts"
-msgstr "paraules una per línia o #etiquetes o /patrons/, deixar en blanc per importar totes les entrades"
+"SSL certificate cannot be validated. Fix certificate or disable https access"
+" to this site."
+msgstr "El certificat SSL no s'ha pogut validar. Arregla-ho o deshabilita l'accés https a aquest lloc"
-#: ../../mod/connedit.php:677
-msgid "Do not import posts with this text"
-msgstr "No importar entrades amb aquest text"
+#: ../../Zotlabs/Module/Setup.php:637
+msgid ""
+"If you have https access to your website or allow connections to TCP port "
+"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
+"NOT use self-signed certificates!"
+msgstr "Si tens accès pet https al teu lloc web o permets connexions pel port TCP 443 (port https), Has d'emprar un certificat VÀLID. NO es poden emprar certificats AUTO-SIGNATS!"
-#: ../../mod/connedit.php:679
-msgid "This information is public!"
-msgstr "Aquesta informació es pública!"
+#: ../../Zotlabs/Module/Setup.php:638
+msgid ""
+"This restriction is incorporated because public posts from you may for "
+"example contain references to images on your own hub."
+msgstr "El motiu d'aquesta restricció és que les teves entrades públiques poden contenir referències a imatges del teu propi node."
-#: ../../mod/connedit.php:684
-msgid "Connection Pending Approval"
-msgstr "Connexió Pendent d'Aprovació"
+#: ../../Zotlabs/Module/Setup.php:639
+msgid ""
+"If your certificate is not recognized, members of other sites (who may "
+"themselves have valid certificates) will get a warning message on their own "
+"site complaining about security issues."
+msgstr "Si el teu certificat no és reconegut, llavors el membres d'altres hubs, encara que tinguin certificats vàlids, rebran una advertència de seguretat en carregar contingut teu."
+
+#: ../../Zotlabs/Module/Setup.php:640
+msgid ""
+"This can cause usability issues elsewhere (not just on your own site) so we "
+"must insist on this requirement."
+msgstr "Per tant, com que perjudica la usabilitat més enllà del teu lloc, la restricció de tenir un certificat reconegut és molt important."
+
+#: ../../Zotlabs/Module/Setup.php:641
+msgid ""
+"Providers are available that issue free certificates which are browser-"
+"valid."
+msgstr "Hi ha autoritats de certificació reconegudes que ofereixen certificats gratuïts."
+
+#: ../../Zotlabs/Module/Setup.php:643
+msgid "SSL certificate validation"
+msgstr "Validació del certificat SSL"
+
+#: ../../Zotlabs/Module/Setup.php:649
+msgid ""
+"Url rewrite in .htaccess is not working. Check your server "
+"configuration.Test: "
+msgstr "No es poden reescriure les URL a «.htaccess». Comprova la configuració del servidor:"
+
+#: ../../Zotlabs/Module/Setup.php:652
+msgid "Url rewrite is working"
+msgstr "Es poden reescriure les URL a «.htaccess»"
+
+#: ../../Zotlabs/Module/Setup.php:661
+msgid ""
+"The database configuration file \".htconfig.php\" could not be written. "
+"Please use the enclosed text to create a configuration file in your web "
+"server root."
+msgstr "L'arxiu de configuracio de la base de dades «.htconfig.php» no s'ha pogut modificar. El pots crear tu a l'arrel del servidor web amb el text de la caixa com a contingut."
+
+#: ../../Zotlabs/Module/Setup.php:685
+msgid "Errors encountered creating database tables."
+msgstr "S'han produït errors mentre es creaven taules a la base de dades."
-#: ../../mod/connedit.php:685
-msgid "Connection Request"
-msgstr "Petició de Connexió"
+#: ../../Zotlabs/Module/Setup.php:719
+msgid "<h1>What next</h1>"
+msgstr "<h1>I ara què?</h1>"
-#: ../../mod/connedit.php:686
+#: ../../Zotlabs/Module/Setup.php:720
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the "
+"poller."
+msgstr "IMPORTANT! Cal que configuris manualment una execució periòdica del \"poller\"."
+
+#: ../../Zotlabs/Module/Sharedwithme.php:98
+msgid "Files: shared with me"
+msgstr "Arxius: compartits amb jo"
+
+#: ../../Zotlabs/Module/Sharedwithme.php:100
+msgid "NEW"
+msgstr "NOU"
+
+#: ../../Zotlabs/Module/Sharedwithme.php:103
+msgid "Remove all files"
+msgstr "Esborra tots els arxius"
+
+#: ../../Zotlabs/Module/Sharedwithme.php:104
+msgid "Remove this file"
+msgstr "Esborra l'arxiu"
+
+#: ../../Zotlabs/Module/Siteinfo.php:19
#, php-format
+msgid "Version %s"
+msgstr "Versió %s"
+
+#: ../../Zotlabs/Module/Siteinfo.php:40
+msgid "Installed plugins/addons/apps:"
+msgstr "Plugins/addons/apps Instal·lats:"
+
+#: ../../Zotlabs/Module/Siteinfo.php:53
+msgid "No installed plugins/addons/apps"
+msgstr "Plugins/addons/apps no instal·lats"
+
+#: ../../Zotlabs/Module/Siteinfo.php:66
msgid ""
-"(%s) would like to connect with you. Please approve this connection to allow"
-" communication."
-msgstr "(%s) voldria conectar amb tu. Aprova aquesta connexió per permetre la connexió."
+"This is a hub of $Projectname - a global cooperative network of "
+"decentralized privacy enhanced websites."
+msgstr "Aquest és un node de $Projectname, una xarxa cooperativa mundial de llocs web descentralitzats amb gran control de la privacitat."
-#: ../../mod/connedit.php:688
-msgid "Approve Later"
-msgstr "Aprovar més tard"
+#: ../../Zotlabs/Module/Siteinfo.php:68
+msgid "Tag: "
+msgstr "Etiqueta:"
-#: ../../mod/connedit.php:691
-msgid "inherited"
-msgstr "heretat"
+#: ../../Zotlabs/Module/Siteinfo.php:70
+msgid "Last background fetch: "
+msgstr "Última actualització en rerefons:"
+
+#: ../../Zotlabs/Module/Siteinfo.php:72
+msgid "Current load average: "
+msgstr "Càrrega actual mitja:"
+
+#: ../../Zotlabs/Module/Siteinfo.php:75
+msgid "Running at web location"
+msgstr "Correguent en el lloc web"
+
+#: ../../Zotlabs/Module/Siteinfo.php:76
+msgid ""
+"Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more "
+"about $Projectname."
+msgstr "Visita <a href=\"http://hubzilla.org\">hubzilla.org</a> per saber-ne més de $Projectname."
+
+#: ../../Zotlabs/Module/Siteinfo.php:77
+msgid "Bug reports and issues: please visit"
+msgstr "Per informar d'errors o problemes ves a"
+
+#: ../../Zotlabs/Module/Siteinfo.php:79
+msgid "$projectname issues"
+msgstr "$projectname qüestions"
+
+#: ../../Zotlabs/Module/Siteinfo.php:80
+msgid ""
+"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
+"com"
+msgstr "Per suggerències, felicitacions i altres, envia'ns un mail a «redmatrix» [arroba] librelist [punt] com"
+
+#: ../../Zotlabs/Module/Siteinfo.php:82
+msgid "Site Administrators"
+msgstr "Administradors del lloc"
+
+#: ../../Zotlabs/Module/Sources.php:37
+msgid "Failed to create source. No channel selected."
+msgstr "Error en crear l'origen. Cap canal seleccionat."
+
+#: ../../Zotlabs/Module/Sources.php:51
+msgid "Source created."
+msgstr "Origen creat."
+
+#: ../../Zotlabs/Module/Sources.php:64
+msgid "Source updated."
+msgstr "Origen actualitzat."
+
+#: ../../Zotlabs/Module/Sources.php:90
+msgid "*"
+msgstr "*"
+
+#: ../../Zotlabs/Module/Sources.php:96 ../../include/widgets.php:630
+#: ../../include/features.php:71
+msgid "Channel Sources"
+msgstr "Canal Origen"
+
+#: ../../Zotlabs/Module/Sources.php:97
+msgid "Manage remote sources of content for your channel."
+msgstr "Gestiona contingut per al teu canal d'origens remots"
+
+#: ../../Zotlabs/Module/Sources.php:98 ../../Zotlabs/Module/Sources.php:108
+msgid "New Source"
+msgstr "Nou Origen"
+
+#: ../../Zotlabs/Module/Sources.php:109 ../../Zotlabs/Module/Sources.php:143
+msgid ""
+"Import all or selected content from the following channel into this channel "
+"and distribute it according to your channel settings."
+msgstr "Importar tot o sel·lecciona contingut dels següents canals, en aquest canal i distribueix-lo d'acord als teus ajustos de canals."
+
+#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
+msgid "Only import content with these words (one per line)"
+msgstr "Només importa contingut amb aquestes paraules (una per línia)"
+
+#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
+msgid "Leave blank to import all public content"
+msgstr "Deixar en blanc per importar tot el contingut públic"
+
+#: ../../Zotlabs/Module/Sources.php:111 ../../Zotlabs/Module/Sources.php:148
+msgid "Channel Name"
+msgstr "Nom del canal"
+
+#: ../../Zotlabs/Module/Sources.php:112 ../../Zotlabs/Module/Sources.php:147
+msgid ""
+"Add the following categories to posts imported from this source (comma "
+"separated)"
+msgstr "Afegeix les següents categories d'entrades importades des d'aquest origen (separat per comes)"
+
+#: ../../Zotlabs/Module/Sources.php:133 ../../Zotlabs/Module/Sources.php:161
+msgid "Source not found."
+msgstr "No s'ha trobat la font."
+
+#: ../../Zotlabs/Module/Sources.php:140
+msgid "Edit Source"
+msgstr "Edita la font"
-#: ../../mod/connedit.php:693
+#: ../../Zotlabs/Module/Sources.php:141
+msgid "Delete Source"
+msgstr "Esborra la font"
+
+#: ../../Zotlabs/Module/Sources.php:169
+msgid "Source removed"
+msgstr "S'ha esborrat la font"
+
+#: ../../Zotlabs/Module/Sources.php:171
+msgid "Unable to remove source."
+msgstr "No s'ha pogut esborrar la font."
+
+#: ../../Zotlabs/Module/Subthread.php:118
#, php-format
+msgid "%1$s is following %2$s's %3$s"
+msgstr "%1$s esta seguint %2$s de %3$s"
+
+#: ../../Zotlabs/Module/Subthread.php:120
+#, php-format
+msgid "%1$s stopped following %2$s's %3$s"
+msgstr "%1$s abandona el seguiment %2$s de %3$s"
+
+#: ../../Zotlabs/Module/Suggest.php:39
msgid ""
-"Please choose the profile you would like to display to %s when viewing your "
-"profile securely."
-msgstr "Tria el perfil que vols mostrar a %s quan es vegi el perfil segur."
+"No suggestions available. If this is a new site, please try again in 24 "
+"hours."
+msgstr "No hi ha suggerencies. Si es un lloc nou, espera 24 hores i proba de nou."
-#: ../../mod/connedit.php:695
-msgid "Their Settings"
-msgstr "Els seus Ajustos"
+#: ../../Zotlabs/Module/Suggest.php:58 ../../include/widgets.php:149
+msgid "Ignore/Hide"
+msgstr "Ignora/Amaga"
-#: ../../mod/connedit.php:696
-msgid "My Settings"
-msgstr "Els Meus Ajustos"
+#: ../../Zotlabs/Module/Tagger.php:55 ../../include/bbcode.php:256
+msgid "post"
+msgstr "entrada"
-#: ../../mod/connedit.php:698
-msgid "Individual Permissions"
-msgstr "Permisos Individuals"
+#: ../../Zotlabs/Module/Tagger.php:57 ../../include/text.php:1948
+#: ../../include/conversation.php:150
+msgid "comment"
+msgstr "comentari"
+
+#: ../../Zotlabs/Module/Tagger.php:100
+#, php-format
+msgid "%1$s tagged %2$s's %3$s with %4$s"
+msgstr "%1$s ha etiquetat %3$s de %2$s amb %4$s"
+
+#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98
+msgid "Tag removed"
+msgstr "S'ha tret l'etiqueta"
+
+#: ../../Zotlabs/Module/Tagrm.php:123
+msgid "Remove Item Tag"
+msgstr "Elimina l'etiqueta d'element"
+
+#: ../../Zotlabs/Module/Tagrm.php:125
+msgid "Select a tag to remove: "
+msgstr "Tria l'etiqueta a eliminar:"
+
+#: ../../Zotlabs/Module/Thing.php:114
+msgid "Thing updated"
+msgstr "S'ha actualitzat la cosa"
+
+#: ../../Zotlabs/Module/Thing.php:166
+msgid "Object store: failed"
+msgstr "No s'ha pogut emmagatzemar l'objecte"
+
+#: ../../Zotlabs/Module/Thing.php:170
+msgid "Thing added"
+msgstr "S'ha afegit la cosa"
+
+#: ../../Zotlabs/Module/Thing.php:196
+#, php-format
+msgid "OBJ: %1$s %2$s %3$s"
+msgstr "OBJ: %1$s %2$s %3$s"
+
+#: ../../Zotlabs/Module/Thing.php:259
+msgid "Show Thing"
+msgstr "Mostra la cosa"
+
+#: ../../Zotlabs/Module/Thing.php:266
+msgid "item not found."
+msgstr "no s'ha trobat l'element."
+
+#: ../../Zotlabs/Module/Thing.php:299
+msgid "Edit Thing"
+msgstr "Edita la cosa"
+
+#: ../../Zotlabs/Module/Thing.php:301 ../../Zotlabs/Module/Thing.php:351
+msgid "Select a profile"
+msgstr "Tria un perfil"
-#: ../../mod/connedit.php:699
+#: ../../Zotlabs/Module/Thing.php:305 ../../Zotlabs/Module/Thing.php:354
+msgid "Post an activity"
+msgstr "Publica una activitat"
+
+#: ../../Zotlabs/Module/Thing.php:305 ../../Zotlabs/Module/Thing.php:354
+msgid "Only sends to viewers of the applicable profile"
+msgstr "S'envia només a visitants del perfil corresponent"
+
+#: ../../Zotlabs/Module/Thing.php:307 ../../Zotlabs/Module/Thing.php:356
+msgid "Name of thing e.g. something"
+msgstr "Nom de la cosa. Exemple: patata"
+
+#: ../../Zotlabs/Module/Thing.php:309 ../../Zotlabs/Module/Thing.php:357
+msgid "URL of thing (optional)"
+msgstr "Adreça URL de la cosa (opcional)"
+
+#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:358
+msgid "URL for photo of thing (optional)"
+msgstr "Adreça URL de la foto d'una cosa (opcional)"
+
+#: ../../Zotlabs/Module/Thing.php:349
+msgid "Add Thing to your Profile"
+msgstr "Afegeix una cosa al teu perfil"
+
+#: ../../Zotlabs/Module/Uexport.php:55 ../../Zotlabs/Module/Uexport.php:56
+msgid "Export Channel"
+msgstr "Exportar Canal"
+
+#: ../../Zotlabs/Module/Uexport.php:57
msgid ""
-"Some permissions may be inherited from your channel's <a "
-"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
-"priority than individual settings. You can <strong>not</strong> change those"
-" settings here."
-msgstr "Alguns permisos poden ser heretats dels teus canals <a href=\"settings\"><strong>ajustos de privacitat</strong></a>, Els quals tenen més prioritat que els ajustos individuals. <strong>No</strong> pots canviar aquests ajustos aquí."
+"Export your basic channel information to a file. This acts as a backup of "
+"your connections, permissions, profile and basic data, which can be used to "
+"import your data to a new server hub, but does not contain your content."
+msgstr "Exporta la informació bàsica del canal a un arxiu. Això actua com a còpia de recolzament de les teves connexions, permisos, perfil i dades bàsiques, les quals pots emprar per traslladar aquestes dades a una altre lloc/node, però no conté el contingut del canal."
+
+#: ../../Zotlabs/Module/Uexport.php:58
+msgid "Export Content"
+msgstr "Exportar el Contingut"
-#: ../../mod/connedit.php:700
+#: ../../Zotlabs/Module/Uexport.php:59
msgid ""
-"Some permissions may be inherited from your channel's <a "
-"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
-"priority than individual settings. You can change those settings here but "
-"they wont have any impact unless the inherited setting changes."
-msgstr "Alguns permisos poden ser heretats dels teus canals <a href=\"settings\"><strong>ajustos de privacitat</strong></a>, Els quals tenen més prioritat que els ajustos individuals. <strong>Pots</strong> canviar aquests ajustos aquí pero no tindran cap impacte fins que no canviis els ajustos heretats."
+"Export your channel information and recent content to a JSON backup that can"
+" be restored or imported to another server hub. This backs up all of your "
+"connections, permissions, profile data and several months of posts. This "
+"file may be VERY large. Please be patient - it may take several minutes for"
+" this download to begin."
+msgstr "Exporta la informació del canal i tot el contingut recent a un arxiu de recolzament JSON que por ser restaurat o importat en altre lloc/node. Això còpia totes les teves connexions, permisos, perfil i dades i mesos de entrades. L'arxiu pot ser MOLT gran. Si et plau, sigues pacient ja que pot trigar uns minuts a començar a baixar."
+
+#: ../../Zotlabs/Module/Uexport.php:60
+msgid "Export your posts from a given year."
+msgstr "Exporta les teves entrades d'un any donat."
+
+#: ../../Zotlabs/Module/Uexport.php:62
+msgid ""
+"You may also export your posts and conversations for a particular year or "
+"month. Adjust the date in your browser location bar to select other dates. "
+"If the export fails (possibly due to memory exhaustion on your server hub), "
+"please try again selecting a more limited date range."
+msgstr "Pots també exportar les teves entrades i conversacions d'un any o un mes en particular. Ajusta la data a la barra de direccions del navegador per seleccionar altres dates. Si la exportació falla (possiblement degut al esgotament de la memòria del node servidor), si et plau, intenta de nou la selecció d'un rang de dates més limitat."
-#: ../../mod/connedit.php:701
-msgid "Last update:"
-msgstr "Darrera actualització:"
+#: ../../Zotlabs/Module/Uexport.php:63
+#, php-format
+msgid ""
+"To select all posts for a given year, such as this year, visit <a "
+"href=\"%1$s\">%2$s</a>"
+msgstr "Per seleccionar tots els missatges per a un any determinat, com aquest any, visiteu <a href=\"%1$s\">%2$s</a>"
-#: ../../mod/rmagic.php:40
+#: ../../Zotlabs/Module/Uexport.php:64
+#, php-format
msgid ""
-"We encountered a problem while logging in with the OpenID you provided. "
-"Please check the correct spelling of the ID."
-msgstr "Em trobat un problema durant l'inici de sessió amb el OpenID que has facilitat. verifica l'ortografia correcta de la ID."
+"To select all posts for a given month, such as January of this year, visit "
+"<a href=\"%1$s\">%2$s</a>"
+msgstr "Per seleccionar tots els missatges per a un mes determinat, com el de gener d'aquest any, visiteu <a href=\"%1$s\">%2$s</a>"
-#: ../../mod/rmagic.php:40
-msgid "The error message was:"
-msgstr "El missatge d'error fou:"
+#: ../../Zotlabs/Module/Uexport.php:65
+#, php-format
+msgid ""
+"These content files may be imported or restored by visiting <a "
+"href=\"%1$s\">%2$s</a> on any site containing your channel. For best results"
+" please import or restore these in date order (oldest first)."
+msgstr "Aquests arxius de contingut poden ser importats o restaurats per visitar <a href=\"%1$s\">%2$s</a> en qualsevol lloc que conté el teu canal. Per obtenir els millors resultats si us plau, importar o restaurar aquests en ordre de data (la més antiga primer)."
-#: ../../mod/rmagic.php:44
-msgid "Authentication failed."
-msgstr "Ha fallat l'autentificació."
+#: ../../Zotlabs/Module/Viewconnections.php:62
+msgid "No connections."
+msgstr "Sense connexions."
-#: ../../mod/rmagic.php:84
-msgid "Remote Authentication"
-msgstr "Autentificació Remota"
+#: ../../Zotlabs/Module/Viewconnections.php:75
+#, php-format
+msgid "Visit %s's profile [%s]"
+msgstr "Visita el perfil [%s] de %s"
-#: ../../mod/rmagic.php:85
-msgid "Enter your channel address (e.g. channel@example.com)"
-msgstr "Introdueix la teva adreça del canal (eg canal@exemple.com)"
+#: ../../Zotlabs/Module/Viewconnections.php:104
+msgid "View Connections"
+msgstr "Veure Connexions"
-#: ../../mod/rmagic.php:86
-msgid "Authenticate"
-msgstr "Autentica't"
+#: ../../Zotlabs/Module/Viewsrc.php:44
+msgid "Source of Item"
+msgstr "Origen de l'article"
-#: ../../mod/mail.php:33
-msgid "Unable to lookup recipient."
-msgstr "Incapaç de trobar el destinatari."
+#: ../../Zotlabs/Module/Webpages.php:184 ../../Zotlabs/Lib/Apps.php:217
+#: ../../include/nav.php:106 ../../include/conversation.php:1685
+msgid "Webpages"
+msgstr "Pàgines web"
-#: ../../mod/mail.php:41
-msgid "Unable to communicate with requested channel."
-msgstr "Incapaç de comunicar amb el canal demanat."
+#: ../../Zotlabs/Module/Webpages.php:195 ../../include/page_widgets.php:41
+msgid "Actions"
+msgstr "Accions"
-#: ../../mod/mail.php:48
-msgid "Cannot verify requested channel."
-msgstr "No puc verificar el canal demanat."
+#: ../../Zotlabs/Module/Webpages.php:196 ../../include/page_widgets.php:42
+msgid "Page Link"
+msgstr "Enllaç a Pàgina"
-#: ../../mod/mail.php:74
-msgid "Selected channel has private message restrictions. Send failed."
-msgstr "El canal seleccionat te restriccions sobre els missatges privats. L'enviament ha fallat."
+#: ../../Zotlabs/Module/Webpages.php:197
+msgid "Page Title"
+msgstr "Títol de la pàgina"
-#: ../../mod/mail.php:139
-msgid "Message deleted."
-msgstr "Missatge eliminat."
+#: ../../Zotlabs/Module/Xchan.php:10
+msgid "Xchan Lookup"
+msgstr "Cerca a xchan"
-#: ../../mod/mail.php:156
-msgid "Message recalled."
-msgstr "Recupera el missatge."
+#: ../../Zotlabs/Module/Xchan.php:13
+msgid "Lookup xchan beginning with (or webbie): "
+msgstr "Cerca a xchan començant per (o webbie)"
-#: ../../mod/mail.php:225
-msgid "Send Private Message"
-msgstr "Envia Missatge Privat"
+#: ../../Zotlabs/Lib/Apps.php:204
+msgid "Site Admin"
+msgstr "Administració"
-#: ../../mod/mail.php:226 ../../mod/mail.php:343
-msgid "To:"
-msgstr "Per:"
+#: ../../Zotlabs/Lib/Apps.php:205
+msgid "Bug Report"
+msgstr "Informe d'Errors"
-#: ../../mod/mail.php:231 ../../mod/mail.php:345
-msgid "Subject:"
-msgstr "Assumpte:"
+#: ../../Zotlabs/Lib/Apps.php:206
+msgid "View Bookmarks"
+msgstr "Veure Marcadors"
-#: ../../mod/mail.php:242
-msgid "Send"
-msgstr "Envia"
+#: ../../Zotlabs/Lib/Apps.php:207
+msgid "My Chatrooms"
+msgstr "Les meves Sales de Xat"
-#: ../../mod/mail.php:269
-msgid "Message not found."
-msgstr "Missatge no trobat."
+#: ../../Zotlabs/Lib/Apps.php:209
+msgid "Firefox Share"
+msgstr "Compartir amb Firefox"
-#: ../../mod/mail.php:312
-msgid "Delete message"
-msgstr "Elimina el missatge"
+#: ../../Zotlabs/Lib/Apps.php:210
+msgid "Remote Diagnostics"
+msgstr "Diagnòstics Remots"
-#: ../../mod/mail.php:313
-msgid "Recall message"
-msgstr "Recupera el missatge"
+#: ../../Zotlabs/Lib/Apps.php:211 ../../include/features.php:89
+msgid "Suggest Channels"
+msgstr "Suggerir Canals"
-#: ../../mod/mail.php:315
-msgid "Message has been recalled."
-msgstr "El missatge s'ha recuperat."
+#: ../../Zotlabs/Lib/Apps.php:212 ../../include/nav.php:110
+#: ../../boot.php:1703
+msgid "Login"
+msgstr "Identifica't"
+
+#: ../../Zotlabs/Lib/Apps.php:214 ../../include/nav.php:179
+msgid "Grid"
+msgstr "Malla"
+
+#: ../../Zotlabs/Lib/Apps.php:218 ../../include/nav.php:182
+msgid "Channel Home"
+msgstr "Canal Personal"
+
+#: ../../Zotlabs/Lib/Apps.php:221 ../../include/nav.php:201
+#: ../../include/conversation.php:1649 ../../include/conversation.php:1652
+msgid "Events"
+msgstr "Esdeveniments"
+
+#: ../../Zotlabs/Lib/Apps.php:222 ../../include/nav.php:167
+msgid "Directory"
+msgstr "Directori"
+
+#: ../../Zotlabs/Lib/Apps.php:224 ../../include/nav.php:193
+msgid "Mail"
+msgstr "Correu"
+
+#: ../../Zotlabs/Lib/Apps.php:227 ../../include/nav.php:96
+msgid "Chat"
+msgstr "Xerrar"
+
+#: ../../Zotlabs/Lib/Apps.php:229
+msgid "Probe"
+msgstr "Sondeig"
+
+#: ../../Zotlabs/Lib/Apps.php:230
+msgid "Suggest"
+msgstr "Suggeriment"
+
+#: ../../Zotlabs/Lib/Apps.php:231
+msgid "Random Channel"
+msgstr "Canal Aleatori"
+
+#: ../../Zotlabs/Lib/Apps.php:232
+msgid "Invite"
+msgstr "Convida"
+
+#: ../../Zotlabs/Lib/Apps.php:233 ../../include/widgets.php:1386
+msgid "Features"
+msgstr "Funcionalitats"
+
+#: ../../Zotlabs/Lib/Apps.php:235
+msgid "Post"
+msgstr "Entrada"
+
+#: ../../Zotlabs/Lib/Apps.php:335
+msgid "Purchase"
+msgstr "Compra"
+
+#: ../../Zotlabs/Lib/Chatroom.php:27
+msgid "Missing room name"
+msgstr "Perdut el nom de la sala"
+
+#: ../../Zotlabs/Lib/Chatroom.php:36
+msgid "Duplicate room name"
+msgstr "Nom de la sala duplicat"
+
+#: ../../Zotlabs/Lib/Chatroom.php:86 ../../Zotlabs/Lib/Chatroom.php:94
+msgid "Invalid room specifier."
+msgstr "Especificació de la sala invàlida."
+
+#: ../../Zotlabs/Lib/Chatroom.php:126
+msgid "Room not found."
+msgstr "Sala no trobada."
+
+#: ../../Zotlabs/Lib/Chatroom.php:147
+msgid "Room is full"
+msgstr "La sala es plena"
+
+#: ../../Zotlabs/Lib/Enotify.php:60 ../../include/network.php:1823
+msgid "$Projectname Notification"
+msgstr "Notificació de $Projectname"
+
+#: ../../Zotlabs/Lib/Enotify.php:61 ../../include/network.php:1824
+msgid "$projectname"
+msgstr "$projectname"
+
+#: ../../Zotlabs/Lib/Enotify.php:63 ../../include/network.php:1826
+msgid "Thank You,"
+msgstr "Gràcies,"
+
+#: ../../Zotlabs/Lib/Enotify.php:65 ../../include/network.php:1828
+#, php-format
+msgid "%s Administrator"
+msgstr "%s Administrador"
+
+#: ../../Zotlabs/Lib/Enotify.php:100
+#, php-format
+msgid "%s <!item_type!>"
+msgstr "%s <!item_type!>"
+
+#: ../../Zotlabs/Lib/Enotify.php:104
+#, php-format
+msgid "[Hubzilla:Notify] New mail received at %s"
+msgstr "[Hubzilla:Notify] Nou corrreu rebut en %s"
+
+#: ../../Zotlabs/Lib/Enotify.php:106
+#, php-format
+msgid "%1$s, %2$s sent you a new private message at %3$s."
+msgstr "%1$s, %2$s t'ha enviat un nou missatge privat a %3$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:107
+#, php-format
+msgid "%1$s sent you %2$s."
+msgstr "%1$s t'ha enviat %2$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:107
+msgid "a private message"
+msgstr "un missatge privat"
+
+#: ../../Zotlabs/Lib/Enotify.php:108
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
+msgstr "Per favor, visita %s per a veure i/o respondre els teus missatges privats."
+
+#: ../../Zotlabs/Lib/Enotify.php:164
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
+msgstr "%1$s, %2$s comentat en [zrl=%3$s]a %4$s[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:172
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
+msgstr "%1$s, %2$s comentat en [zrl=%3$s]%4$s de %5$s[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:181
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
+msgstr "%1$s, %2$s comentat en [zrl=%3$s]el teu %4$s[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:192
+#, php-format
+msgid "[Hubzilla:Notify] Comment to conversation #%1$d by %2$s"
+msgstr "[Hubzilla:Notify] Comentari sobre una conversació #%1$d per %2$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:193
+#, php-format
+msgid "%1$s, %2$s commented on an item/conversation you have been following."
+msgstr "%1$s, %2$s comentat en un article/conversa que havies estat seguint."
+
+#: ../../Zotlabs/Lib/Enotify.php:196 ../../Zotlabs/Lib/Enotify.php:211
+#: ../../Zotlabs/Lib/Enotify.php:237 ../../Zotlabs/Lib/Enotify.php:255
+#: ../../Zotlabs/Lib/Enotify.php:269
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
+msgstr "Si us plau visita %s per veure i/o contestar a la conversa"
+
+#: ../../Zotlabs/Lib/Enotify.php:202
+#, php-format
+msgid "[Hubzilla:Notify] %s posted to your profile wall"
+msgstr "[Hubzilla:Avís] %s ha escrit una entrada al teu mur"
+
+#: ../../Zotlabs/Lib/Enotify.php:204
+#, php-format
+msgid "%1$s, %2$s posted to your profile wall at %3$s"
+msgstr "%1$s, %2$s ha escrit una entrada al teu mur en %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:206
+#, php-format
+msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
+msgstr "%1$s, %2$s enviat correu a [zrl=%3$s]el teu mur[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:230
+#, php-format
+msgid "[Hubzilla:Notify] %s tagged you"
+msgstr "[Hubzilla:Notificació] %s t'ha etiquetat"
-#: ../../mod/mail.php:332
-msgid "Private Conversation"
-msgstr "Conversació Privada"
+#: ../../Zotlabs/Lib/Enotify.php:231
+#, php-format
+msgid "%1$s, %2$s tagged you at %3$s"
+msgstr "%1$s, %2$s t'ha etiquetat a %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:232
+#, php-format
+msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%3$s]t'ha etiquetat[/zrl]."
+
+#: ../../Zotlabs/Lib/Enotify.php:244
+#, php-format
+msgid "[Hubzilla:Notify] %1$s poked you"
+msgstr "[Hubzilla:Avís] %1$s s'en fot de tu"
+
+#: ../../Zotlabs/Lib/Enotify.php:245
+#, php-format
+msgid "%1$s, %2$s poked you at %3$s"
+msgstr "%1$s, %2$s s'en fot de tú a %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:246
+#, php-format
+msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%2$s]s'en fot de tú[/zrl]."
+
+#: ../../Zotlabs/Lib/Enotify.php:262
+#, php-format
+msgid "[Hubzilla:Notify] %s tagged your post"
+msgstr "[Hubzilla:Avís] %s ha etiquetat la teva entrada"
+
+#: ../../Zotlabs/Lib/Enotify.php:263
+#, php-format
+msgid "%1$s, %2$s tagged your post at %3$s"
+msgstr "%1$s, %2$s ha etiquetat la teva entrada a %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:264
+#, php-format
+msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+msgstr "%1$s, %2$s etiquetat [zrl=%3$s]la teva entrada[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:276
+msgid "[Hubzilla:Notify] Introduction received"
+msgstr "[Hubzilla:Avís] Presentació rebuda"
+
+#: ../../Zotlabs/Lib/Enotify.php:277
+#, php-format
+msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
+msgstr "%1$s, has rebut una nova petició de connexió de '%2$s' a %3$s"
-#: ../../mod/mail.php:338
+#: ../../Zotlabs/Lib/Enotify.php:278
+#, php-format
msgid ""
-"No secure communications available. You <strong>may</strong> be able to "
-"respond from the sender's profile page."
-msgstr "Comunicació segura no disponible. Pots respondre des de la pàgina de perfil del remitent."
+"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
+msgstr "%1$s, has rebut [zrl=%2$s]una nova petició de connexió[/zrl] de %3$s."
-#: ../../mod/mail.php:342
-msgid "Send Reply"
-msgstr "Envia Resposta"
+#: ../../Zotlabs/Lib/Enotify.php:282 ../../Zotlabs/Lib/Enotify.php:301
+#, php-format
+msgid "You may visit their profile at %s"
+msgstr "Pots visitar el seu perfil a %s"
-#: ../../mod/notifications.php:26
-msgid "Invalid request identifier."
-msgstr "Sol·licitud d'identificació invàlida."
+#: ../../Zotlabs/Lib/Enotify.php:284
+#, php-format
+msgid "Please visit %s to approve or reject the connection request."
+msgstr "Si us plau, visita %s per aprovar o rebutjar la petició de connexió."
-#: ../../mod/notifications.php:35
-msgid "Discard"
-msgstr "Descarta"
+#: ../../Zotlabs/Lib/Enotify.php:291
+msgid "[Hubzilla:Notify] Friend suggestion received"
+msgstr "[Hubzilla:Notificació] Rebuda suggerencia d'amistat"
-#: ../../mod/regmod.php:11
-msgid "Please login."
-msgstr "Inicia Sessió."
+#: ../../Zotlabs/Lib/Enotify.php:292
+#, php-format
+msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
+msgstr "%1$s, has rebut una suggerència d'amistat de '%2$s' a %3$s"
-#: ../../mod/post.php:235
+#: ../../Zotlabs/Lib/Enotify.php:293
+#, php-format
msgid ""
-"Remote authentication blocked. You are logged into this site locally. Please"
-" logout and retry."
-msgstr "Autenticació remota bloquejada. Ha iniciat sessió en aquest lloc a nivell local. Si us plau, tanca la sessió i torna-ho a intentar."
+"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
+"%4$s."
+msgstr "%1$s, has rebut [zrl=%2$s]una suggerència d'amistat[/zrl] per %3$s de %4$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:299
+msgid "Name:"
+msgstr "Nom:"
+
+#: ../../Zotlabs/Lib/Enotify.php:300
+msgid "Photo:"
+msgstr "Foto:"
+
+#: ../../Zotlabs/Lib/Enotify.php:303
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
+msgstr "Per favor, visita %s per a aprovar o rebutjar la suggerencia."
+
+#: ../../Zotlabs/Lib/Enotify.php:518
+msgid "[Hubzilla:Notify]"
+msgstr "[Hubzilla:Notificació]"
+
+#: ../../Zotlabs/Lib/Enotify.php:667
+msgid "created a new post"
+msgstr "Creada una nova entrada"
+
+#: ../../Zotlabs/Lib/Enotify.php:668
+#, php-format
+msgid "commented on %s's post"
+msgstr "comentat a l'entrada de %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:95 ../../include/conversation.php:664
+msgid "Private Message"
+msgstr "Missatge Privat"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:132 ../../include/conversation.php:656
+msgid "Select"
+msgstr "Selecciona"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:136
+msgid "Save to Folder"
+msgstr "Guardar en la Carpeta"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:157
+msgid "I will attend"
+msgstr "Assistiré"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:157
+msgid "I will not attend"
+msgstr "No assistiré"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:157
+msgid "I might attend"
+msgstr "Podria assistir"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:167
+msgid "I agree"
+msgstr "D'acord"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:167
+msgid "I disagree"
+msgstr "En desacord"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:167
+msgid "I abstain"
+msgstr "M'abstinc"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:218
+msgid "Add Star"
+msgstr "Fes-lo Preferit"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:219
+msgid "Remove Star"
+msgstr "Treu-lo de Preferits"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:220
+msgid "Toggle Star Status"
+msgstr "Canvia el Estat de la Preferència"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:224
+msgid "starred"
+msgstr "preferit"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:234 ../../include/conversation.php:671
+msgid "Message signature validated"
+msgstr "Validada la signatura del missatge"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:235 ../../include/conversation.php:672
+msgid "Message signature incorrect"
+msgstr "Signatura del missatge incorrecta"
-#: ../../mod/new_channel.php:109
-msgid "Add a Channel"
-msgstr "Afegeix un Canal"
+#: ../../Zotlabs/Lib/ThreadItem.php:243
+msgid "Add Tag"
+msgstr "Afegeix Etiqueta"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:261 ../../include/taxonomy.php:316
+msgid "like"
+msgstr "agrada"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:262 ../../include/taxonomy.php:317
+msgid "dislike"
+msgstr "desagrada"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:266
+msgid "Share This"
+msgstr "Comparteix Això"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:266
+msgid "share"
+msgstr "comparteix"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:275
+msgid "Delivery Report"
+msgstr "Informe de Lliurament"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:293
+#, php-format
+msgid "%d comment"
+msgid_plural "%d comments"
+msgstr[0] "%d commentari"
+msgstr[1] "%d commentaris"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:322 ../../Zotlabs/Lib/ThreadItem.php:323
+#, php-format
+msgid "View %s's profile - %s"
+msgstr "Veure perfil de %s - %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:326
+msgid "to"
+msgstr "a"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:327
+msgid "via"
+msgstr "via"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:328
+msgid "Wall-to-Wall"
+msgstr "Mur-a-Mur"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:329
+msgid "via Wall-To-Wall:"
+msgstr "via Mur-a-Mur:"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:341 ../../include/conversation.php:719
+#, php-format
+msgid "from %s"
+msgstr "De %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:344 ../../include/conversation.php:722
+#, php-format
+msgid "last edited: %s"
+msgstr "últim editat: %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:345 ../../include/conversation.php:723
+#, php-format
+msgid "Expires: %s"
+msgstr "Expira: %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:370
+msgid "Save Bookmarks"
+msgstr "Guarda Favorits"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:371
+msgid "Add to Calendar"
+msgstr "Afegeix al Calendari"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:380
+msgid "Mark all seen"
+msgstr "Marca tot com ja vist"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:421 ../../include/js_strings.php:7
+msgid "[+] show all"
+msgstr "[+] mostra tot"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:711 ../../include/conversation.php:1215
+msgid "Bold"
+msgstr "Negreta"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:712 ../../include/conversation.php:1216
+msgid "Italic"
+msgstr "Italica"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:713 ../../include/conversation.php:1217
+msgid "Underline"
+msgstr "Subratllat"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:714 ../../include/conversation.php:1218
+msgid "Quote"
+msgstr "Cometes"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:715 ../../include/conversation.php:1219
+msgid "Code"
+msgstr "Codi"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:716
+msgid "Image"
+msgstr "Imatge"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:717
+msgid "Insert Link"
+msgstr "Insereix Enllaç"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:718
+msgid "Video"
+msgstr "Video"
+
+#: ../../include/Import/import_diaspora.php:16
+msgid "No username found in import file."
+msgstr "No s'ha trobat nom d'usuari a l'arxiu d'importació."
+
+#: ../../include/Import/import_diaspora.php:41 ../../include/import.php:50
+msgid "Unable to create a unique channel address. Import failed."
+msgstr "No s'ha pogut importar el canal perquè l'adreça única de canal no s'ha pogut crear."
+
+#: ../../include/dba/dba_driver.php:171
+#, php-format
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr "No s'ha trobat informació de DNS pel servidor de base de dades '%s'"
+
+#: ../../include/taxonomy.php:188 ../../include/taxonomy.php:270
+#: ../../include/widgets.php:46 ../../include/widgets.php:429
+#: ../../include/contact_widgets.php:91
+msgid "Categories"
+msgstr "Categories"
+
+#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249
+msgid "Tags"
+msgstr "Etiquetes"
+
+#: ../../include/taxonomy.php:293
+msgid "Keywords"
+msgstr "Paraules clau"
+
+#: ../../include/taxonomy.php:314
+msgid "have"
+msgstr "tinc"
+
+#: ../../include/taxonomy.php:314
+msgid "has"
+msgstr "tens"
+
+#: ../../include/taxonomy.php:315
+msgid "want"
+msgstr "vull"
+
+#: ../../include/taxonomy.php:315
+msgid "wants"
+msgstr "vols"
+
+#: ../../include/taxonomy.php:316
+msgid "likes"
+msgstr "agrada"
+
+#: ../../include/taxonomy.php:317
+msgid "dislikes"
+msgstr "desagrada"
+
+#: ../../include/event.php:22 ../../include/event.php:69
+#: ../../include/bb2diaspora.php:485
+msgid "l F d, Y \\@ g:i A"
+msgstr "l F d, Y \\@ g:i A"
-#: ../../mod/new_channel.php:110
+#: ../../include/event.php:30 ../../include/event.php:73
+#: ../../include/bb2diaspora.php:491
+msgid "Starts:"
+msgstr "Inicia:"
+
+#: ../../include/event.php:40 ../../include/event.php:77
+#: ../../include/bb2diaspora.php:499
+msgid "Finishes:"
+msgstr "Acaba:"
+
+#: ../../include/event.php:812
+msgid "This event has been added to your calendar."
+msgstr "Aquest succés ha estat afegit al teu calendari."
+
+#: ../../include/event.php:1012
+msgid "Not specified"
+msgstr "Sense especificar"
+
+#: ../../include/event.php:1013
+msgid "Needs Action"
+msgstr "Necessita una Acció"
+
+#: ../../include/event.php:1014
+msgid "Completed"
+msgstr "Completat"
+
+#: ../../include/event.php:1015
+msgid "In Process"
+msgstr "En Procès"
+
+#: ../../include/event.php:1016
+msgid "Cancelled"
+msgstr "Cancel·lat"
+
+#: ../../include/import.php:29
msgid ""
-"A channel is your own collection of related web pages. A channel can be used"
-" to hold social network profiles, blogs, conversation groups and forums, "
-"celebrity pages, and much more. You may create as many channels as your "
-"service provider allows."
-msgstr "Un canal es la teva pròpia col·lecció de pàgines web. Un canal pot emprat per mantenir perfils a una xarxa social, blocs, grups de conversació, fòrums, pàgines de famosos, i molt més. Pots crear tants canals com el teu servei d'internet et permeti."
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "No s'ha pogut importar el canal perquè l'identificador del canal no s'ha pogut duplicar en aquest servidor."
-#: ../../mod/new_channel.php:113
-msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "
-msgstr "Exemples: \"Joan Tou\", \"Manel i els seus esquirols\", \"Fútbol\", \"Grup de Gegants\""
+#: ../../include/import.php:76
+msgid "Channel clone failed. Import failed."
+msgstr "No s'ha pogut importar el canal perquè el canal no s'ha pogut clonar."
-#: ../../mod/new_channel.php:114
-msgid "Choose a short nickname"
-msgstr "Tria un àlies curt"
+#: ../../include/items.php:892 ../../include/items.php:937
+msgid "(Unknown)"
+msgstr "(Desconegut)"
+
+#: ../../include/items.php:1136
+msgid "Visible to anybody on the internet."
+msgstr "Visible per tothom a la Internet"
+
+#: ../../include/items.php:1138
+msgid "Visible to you only."
+msgstr "Visible només per tú."
+
+#: ../../include/items.php:1140
+msgid "Visible to anybody in this network."
+msgstr "Visible per tothom en aquesta xarxa."
+
+#: ../../include/items.php:1142
+msgid "Visible to anybody authenticated."
+msgstr "Visible per tothom autenticat."
+
+#: ../../include/items.php:1144
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Visible per a tothom a %s."
+
+#: ../../include/items.php:1146
+msgid "Visible to all connections."
+msgstr "Visible per a totes les connexions."
+
+#: ../../include/items.php:1148
+msgid "Visible to approved connections."
+msgstr "Visible per a les connexions aprovades."
+
+#: ../../include/items.php:1150
+msgid "Visible to specific connections."
+msgstr "Visible per a específiques connexions."
+
+#: ../../include/items.php:3909
+msgid "Privacy group is empty."
+msgstr "El grup privat està vuit."
+
+#: ../../include/items.php:3916
+#, php-format
+msgid "Privacy group: %s"
+msgstr "Grup privat: %s"
+
+#: ../../include/items.php:3928
+msgid "Connection not found."
+msgstr "Connexió no trobada."
+
+#: ../../include/items.php:4277
+msgid "profile photo"
+msgstr "foto del perfil"
+
+#: ../../include/message.php:20
+msgid "No recipient provided."
+msgstr "No s'ha proporcionat bústia."
+
+#: ../../include/message.php:25
+msgid "[no subject]"
+msgstr "[no subject]"
+
+#: ../../include/message.php:45
+msgid "Unable to determine sender."
+msgstr "incapaç de determinar el remitent"
+
+#: ../../include/message.php:222
+msgid "Stored post could not be verified."
+msgstr "L'entrada guardada no pot ser verificada"
+
+#: ../../include/text.php:428
+msgid "prev"
+msgstr "prev"
+
+#: ../../include/text.php:430
+msgid "first"
+msgstr "primer"
+
+#: ../../include/text.php:459
+msgid "last"
+msgstr "últim"
+
+#: ../../include/text.php:462
+msgid "next"
+msgstr "pròxim"
+
+#: ../../include/text.php:472
+msgid "older"
+msgstr "el més antic"
+
+#: ../../include/text.php:474
+msgid "newer"
+msgstr "El més nou"
+
+#: ../../include/text.php:863
+msgid "No connections"
+msgstr "Sense Connexions"
+
+#: ../../include/text.php:888
+#, php-format
+msgid "View all %s connections"
+msgstr "Veure totes les connexions de %s"
+
+#: ../../include/text.php:1033 ../../include/text.php:1038
+msgid "poke"
+msgstr "esperona"
+
+#: ../../include/text.php:1033 ../../include/text.php:1038
+#: ../../include/conversation.php:243
+msgid "poked"
+msgstr "esperonat"
+
+#: ../../include/text.php:1039
+msgid "ping"
+msgstr "coloca"
+
+#: ../../include/text.php:1039
+msgid "pinged"
+msgstr "colocat"
+
+#: ../../include/text.php:1040
+msgid "prod"
+msgstr "picar"
+
+#: ../../include/text.php:1040
+msgid "prodded"
+msgstr "picat"
+
+#: ../../include/text.php:1041
+msgid "slap"
+msgstr "bufetada"
+
+#: ../../include/text.php:1041
+msgid "slapped"
+msgstr "bufetejat"
+
+#: ../../include/text.php:1042
+msgid "finger"
+msgstr "senyal"
+
+#: ../../include/text.php:1042
+msgid "fingered"
+msgstr "senyalat"
+
+#: ../../include/text.php:1043
+msgid "rebuff"
+msgstr "menyspreu"
+
+#: ../../include/text.php:1043
+msgid "rebuffed"
+msgstr "menyspreuat"
+
+#: ../../include/text.php:1055
+msgid "happy"
+msgstr "feliç"
+
+#: ../../include/text.php:1056
+msgid "sad"
+msgstr "trist"
+
+#: ../../include/text.php:1057
+msgid "mellow"
+msgstr "melós"
+
+#: ../../include/text.php:1058
+msgid "tired"
+msgstr "cansat"
+
+#: ../../include/text.php:1059
+msgid "perky"
+msgstr "turgent"
+
+#: ../../include/text.php:1060
+msgid "angry"
+msgstr "enfadat"
+
+#: ../../include/text.php:1061
+msgid "stupefied"
+msgstr "estupefacte"
+
+#: ../../include/text.php:1062
+msgid "puzzled"
+msgstr "perplexe"
+
+#: ../../include/text.php:1063
+msgid "interested"
+msgstr "Interessat"
+
+#: ../../include/text.php:1064
+msgid "bitter"
+msgstr "amargat"
+
+#: ../../include/text.php:1065
+msgid "cheerful"
+msgstr "feliç"
+
+#: ../../include/text.php:1066
+msgid "alive"
+msgstr "viu"
+
+#: ../../include/text.php:1067
+msgid "annoyed"
+msgstr "molest"
+
+#: ../../include/text.php:1068
+msgid "anxious"
+msgstr "ansiós"
+
+#: ../../include/text.php:1069
+msgid "cranky"
+msgstr "malagaitós"
+
+#: ../../include/text.php:1070
+msgid "disturbed"
+msgstr "transtornat"
+
+#: ../../include/text.php:1071
+msgid "frustrated"
+msgstr "frustrat"
+
+#: ../../include/text.php:1072
+msgid "depressed"
+msgstr "deprimit"
+
+#: ../../include/text.php:1073
+msgid "motivated"
+msgstr "motivat"
+
+#: ../../include/text.php:1074
+msgid "relaxed"
+msgstr "relaxat"
+
+#: ../../include/text.php:1075
+msgid "surprised"
+msgstr "sorprès"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:70
+msgid "Monday"
+msgstr "Dilluns"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:71
+msgid "Tuesday"
+msgstr "Dimarts"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:72
+msgid "Wednesday"
+msgstr "Dimecres"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:73
+msgid "Thursday"
+msgstr "Dijous"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:74
+msgid "Friday"
+msgstr "Divendres"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:75
+msgid "Saturday"
+msgstr "Dissabte"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:69
+msgid "Sunday"
+msgstr "Diumenge"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:45
+msgid "January"
+msgstr "Gener"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:46
+msgid "February"
+msgstr "Febrer"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:47
+msgid "March"
+msgstr "Març"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:48
+msgid "April"
+msgstr "Abril"
+
+#: ../../include/text.php:1261
+msgid "May"
+msgstr "Maig"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:50
+msgid "June"
+msgstr "Juny"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:51
+msgid "July"
+msgstr "Juliol"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:52
+msgid "August"
+msgstr "Agost"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:53
+msgid "September"
+msgstr "Setembre"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:54
+msgid "October"
+msgstr "Octubre"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:55
+msgid "November"
+msgstr "Novembre"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:56
+msgid "December"
+msgstr "Desembre"
+
+#: ../../include/text.php:1338 ../../include/text.php:1342
+msgid "Unknown Attachment"
+msgstr "Adjunt Desconegut"
+
+#: ../../include/text.php:1344
+msgid "unknown"
+msgstr "desconegut"
+
+#: ../../include/text.php:1380
+msgid "remove category"
+msgstr "elimina categoria"
+
+#: ../../include/text.php:1457
+msgid "remove from file"
+msgstr "elimina del arxiu"
+
+#: ../../include/text.php:1753 ../../include/text.php:1824
+msgid "default"
+msgstr "per defecte"
+
+#: ../../include/text.php:1761
+msgid "Page layout"
+msgstr "Format de la pàgina"
+
+#: ../../include/text.php:1761
+msgid "You can create your own with the layouts tool"
+msgstr "Pots crear el teu propi amb l'editor de format de pàgina."
+
+#: ../../include/text.php:1803
+msgid "Page content type"
+msgstr "Tipus de contingut de la pàgina"
+
+#: ../../include/text.php:1836
+msgid "Select an alternate language"
+msgstr "Tria un idioma alternatiu"
+
+#: ../../include/text.php:1953
+msgid "activity"
+msgstr "activitat"
+
+#: ../../include/text.php:2262
+msgid "Design Tools"
+msgstr "Eines de disseny"
+
+#: ../../include/text.php:2268
+msgid "Pages"
+msgstr "Pàgines"
+
+#: ../../include/widgets.php:103
+msgid "System"
+msgstr "Sistema"
+
+#: ../../include/widgets.php:106
+msgid "New App"
+msgstr "Nova App"
+
+#: ../../include/widgets.php:154
+msgid "Suggestions"
+msgstr "Suggerencies"
-#: ../../mod/new_channel.php:115
+#: ../../include/widgets.php:155
+msgid "See more..."
+msgstr "Veure més....."
+
+#: ../../include/widgets.php:175
+#, php-format
+msgid "You have %1$.0f of %2$.0f allowed connections."
+msgstr "Tens %1$.0f de %2$.0f connexions permeses."
+
+#: ../../include/widgets.php:181
+msgid "Add New Connection"
+msgstr "Afegeix una Nova Connexió"
+
+#: ../../include/widgets.php:182
+msgid "Enter channel address"
+msgstr "Introdueix l'adreça del canal"
+
+#: ../../include/widgets.php:183
+msgid "Examples: bob@example.com, https://example.com/barbara"
+msgstr "Exemples: bob@example.com, https://exemple.com/barbara"
+
+#: ../../include/widgets.php:199
+msgid "Notes"
+msgstr "Notes"
+
+#: ../../include/widgets.php:273
+msgid "Remove term"
+msgstr "Plaç de remoció"
+
+#: ../../include/widgets.php:281 ../../include/features.php:84
+msgid "Saved Searches"
+msgstr "Cerques Guardades"
+
+#: ../../include/widgets.php:282 ../../include/group.php:316
+msgid "add"
+msgstr "afegeix"
+
+#: ../../include/widgets.php:310 ../../include/contact_widgets.php:53
+#: ../../include/features.php:98
+msgid "Saved Folders"
+msgstr "Carpetes Guardades"
+
+#: ../../include/widgets.php:313 ../../include/widgets.php:432
+#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94
+msgid "Everything"
+msgstr "Tot"
+
+#: ../../include/widgets.php:354
+msgid "Archives"
+msgstr "Arxius"
+
+#: ../../include/widgets.php:516
+msgid "Refresh"
+msgstr "Refresc"
+
+#: ../../include/widgets.php:556
+msgid "Account settings"
+msgstr "Ajustos de Compte"
+
+#: ../../include/widgets.php:562
+msgid "Channel settings"
+msgstr "Ajustos de Canal"
+
+#: ../../include/widgets.php:571
+msgid "Additional features"
+msgstr "Característiques addicionals"
+
+#: ../../include/widgets.php:578
+msgid "Feature/Addon settings"
+msgstr "Ajustos de Complements"
+
+#: ../../include/widgets.php:584
+msgid "Display settings"
+msgstr "Ajustos de pantalla"
+
+#: ../../include/widgets.php:591
+msgid "Manage locations"
+msgstr "Gestiona ubicacions"
+
+#: ../../include/widgets.php:600
+msgid "Export channel"
+msgstr "Exportat canal"
+
+#: ../../include/widgets.php:607
+msgid "Connected apps"
+msgstr "Apps connectades"
+
+#: ../../include/widgets.php:622
+msgid "Premium Channel Settings"
+msgstr "Ajustos Premium de Canal"
+
+#: ../../include/widgets.php:651
+msgid "Private Mail Menu"
+msgstr "Menú de Correu Privat"
+
+#: ../../include/widgets.php:653
+msgid "Combined View"
+msgstr "Vista Combinada"
+
+#: ../../include/widgets.php:658 ../../include/nav.php:196
+msgid "Inbox"
+msgstr "Safata d'entrada"
+
+#: ../../include/widgets.php:663 ../../include/nav.php:197
+msgid "Outbox"
+msgstr "Safata de sortida"
+
+#: ../../include/widgets.php:668 ../../include/nav.php:198
+msgid "New Message"
+msgstr "Nou Missatge"
+
+#: ../../include/widgets.php:685 ../../include/widgets.php:697
+msgid "Conversations"
+msgstr "Conversacions"
+
+#: ../../include/widgets.php:689
+msgid "Received Messages"
+msgstr "Missatges Rebuts"
+
+#: ../../include/widgets.php:693
+msgid "Sent Messages"
+msgstr "Missatges Enviats"
+
+#: ../../include/widgets.php:707
+msgid "No messages."
+msgstr "Sense missatges."
+
+#: ../../include/widgets.php:725
+msgid "Delete conversation"
+msgstr "Conversació esborrada"
+
+#: ../../include/widgets.php:751
+msgid "Events Menu"
+msgstr "Menú d'Esdeveniments"
+
+#: ../../include/widgets.php:752
+msgid "Day View"
+msgstr "Vista de Dia"
+
+#: ../../include/widgets.php:753
+msgid "Week View"
+msgstr "Vista de Setmana"
+
+#: ../../include/widgets.php:754
+msgid "Month View"
+msgstr "Vista de Mes"
+
+#: ../../include/widgets.php:766
+msgid "Events Tools"
+msgstr "Eina d'Esdeveniments"
+
+#: ../../include/widgets.php:767
+msgid "Export Calendar"
+msgstr "Exportar Calendari"
+
+#: ../../include/widgets.php:768
+msgid "Import Calendar"
+msgstr "Importar Calendari"
+
+#: ../../include/widgets.php:842 ../../include/conversation.php:1662
+#: ../../include/conversation.php:1665
+msgid "Chatrooms"
+msgstr "Sala per Xerrar"
+
+#: ../../include/widgets.php:846
+msgid "Overview"
+msgstr "Visió General"
+
+#: ../../include/widgets.php:853
+msgid "Chat Members"
+msgstr "Membres de la Sala de Xat"
+
+#: ../../include/widgets.php:876
+msgid "Bookmarked Chatrooms"
+msgstr "Sales de Xat Favorites"
+
+#: ../../include/widgets.php:899
+msgid "Suggested Chatrooms"
+msgstr "Sales de Xat Suggerides"
+
+#: ../../include/widgets.php:1044 ../../include/widgets.php:1156
+msgid "photo/image"
+msgstr "foto/imatge"
+
+#: ../../include/widgets.php:1099
+msgid "Click to show more"
+msgstr "Fes clic per veure més"
+
+#: ../../include/widgets.php:1250
+msgid "Rating Tools"
+msgstr "Eines de Valoració"
+
+#: ../../include/widgets.php:1254 ../../include/widgets.php:1256
+msgid "Rate Me"
+msgstr "Valora'm"
+
+#: ../../include/widgets.php:1259
+msgid "View Ratings"
+msgstr "Veure Valoracions"
+
+#: ../../include/widgets.php:1316
+msgid "Forums"
+msgstr "Forums"
+
+#: ../../include/widgets.php:1345
+msgid "Tasks"
+msgstr "Tasques"
+
+#: ../../include/widgets.php:1354
+msgid "Documentation"
+msgstr "Documentació"
+
+#: ../../include/widgets.php:1356
+msgid "Project/Site Information"
+msgstr "Informació del Projecte/Lloc"
+
+#: ../../include/widgets.php:1357
+msgid "For Members"
+msgstr "Per Membres"
+
+#: ../../include/widgets.php:1358
+msgid "For Administrators"
+msgstr "Per Administradors"
+
+#: ../../include/widgets.php:1359
+msgid "For Developers"
+msgstr "Per Desenvolupadors"
+
+#: ../../include/widgets.php:1383 ../../include/widgets.php:1421
+msgid "Member registrations waiting for confirmation"
+msgstr "Una inscripció per a ser membre està esperant confirmació"
+
+#: ../../include/widgets.php:1389
+msgid "Inspect queue"
+msgstr "Revisa cua"
+
+#: ../../include/widgets.php:1391
+msgid "DB updates"
+msgstr "Actualitzacions de Base de Dades"
+
+#: ../../include/widgets.php:1416 ../../include/nav.php:216
+msgid "Admin"
+msgstr "Admin"
+
+#: ../../include/widgets.php:1417
+msgid "Plugin Features"
+msgstr "Característiques del Plugin"
+
+#: ../../include/follow.php:27
+msgid "Channel is blocked on this site."
+msgstr "El canal està bloquejat en aquest lloc."
+
+#: ../../include/follow.php:32
+msgid "Channel location missing."
+msgstr "Ubicació del canal perduda."
+
+#: ../../include/follow.php:81
+msgid "Response from remote channel was incomplete."
+msgstr "La resposta del canal remot fou incompleta."
+
+#: ../../include/follow.php:98
+msgid "Channel was deleted and no longer exists."
+msgstr "El canal fou esborrat i actualment no existeix."
+
+#: ../../include/follow.php:154 ../../include/follow.php:190
+msgid "Protocol disabled."
+msgstr "Protocol desactivat."
+
+#: ../../include/follow.php:178
+msgid "Channel discovery failed."
+msgstr "Descobriment de canal fallit."
+
+#: ../../include/follow.php:216
+msgid "Cannot connect to yourself."
+msgstr "No pots connectar amb tu mateix."
+
+#: ../../include/bookmarks.php:35
+#, php-format
+msgid "%1$s's bookmarks"
+msgstr "%1$s de marcadors"
+
+#: ../../include/api.php:1336
+msgid "Public Timeline"
+msgstr "Línia de Temps Pública"
+
+#: ../../include/bbcode.php:123 ../../include/bbcode.php:844
+#: ../../include/bbcode.php:847 ../../include/bbcode.php:852
+#: ../../include/bbcode.php:855 ../../include/bbcode.php:858
+#: ../../include/bbcode.php:861 ../../include/bbcode.php:866
+#: ../../include/bbcode.php:869 ../../include/bbcode.php:874
+#: ../../include/bbcode.php:877 ../../include/bbcode.php:880
+#: ../../include/bbcode.php:883
+msgid "Image/photo"
+msgstr "Imatge/foto"
+
+#: ../../include/bbcode.php:162 ../../include/bbcode.php:894
+msgid "Encrypted content"
+msgstr "Contingut encriptat"
+
+#: ../../include/bbcode.php:178
+#, php-format
+msgid "Install %s element: "
+msgstr "Instal·la l'element %s:"
+
+#: ../../include/bbcode.php:182
+#, php-format
msgid ""
-"Your nickname will be used to create an easily remembered channel address "
-"(like an email address) which you can share with others."
-msgstr "El teu àlies es pot emprar per crear un canal fàcilment memoritzatble (com una adreça de correu electrònic) que pot ser compartit amb altres."
+"This post contains an installable %s element, however you lack permissions "
+"to install it on this site."
+msgstr "Aquesta entrada contè un element %s instal·lable, potser manques de permissos per instal·lar-lo en aquest lloc."
+
+#: ../../include/bbcode.php:254
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s va escriure el següent %2$s %3$s"
+
+#: ../../include/bbcode.php:331 ../../include/bbcode.php:339
+msgid "Click to open/close"
+msgstr "Clic per obrir/tancar"
+
+#: ../../include/bbcode.php:339
+msgid "spoiler"
+msgstr "xafa guitarres"
+
+#: ../../include/bbcode.php:585
+msgid "Different viewers will see this text differently"
+msgstr "Diferents observadors veuran aquest text de diferents formes"
+
+#: ../../include/bbcode.php:832
+msgid "$1 wrote:"
+msgstr "$1 va escriure:"
+
+#: ../../include/dir_fns.php:141
+msgid "Directory Options"
+msgstr "Opcions de Directori"
+
+#: ../../include/dir_fns.php:143
+msgid "Safe Mode"
+msgstr "Manera Segura"
+
+#: ../../include/dir_fns.php:144
+msgid "Public Forums Only"
+msgstr "Només Fòrums Públics"
-#: ../../mod/new_channel.php:116
-msgid "Or <a href=\"import\">import an existing channel</a> from another location"
-msgstr "O <a href=\"import\">importa un canal existent</a> d'un altre lloc"
+#: ../../include/dir_fns.php:145
+msgid "This Website Only"
+msgstr "Només Aquest Lloc Web"
-#: ../../mod/new_channel.php:118
+#: ../../include/security.php:383
msgid ""
-"Please choose a channel type (such as social networking or community forum) "
-"and privacy requirements so we can select the best permissions for you"
-msgstr "Tria un tipus de canal (com a xarxa social o fòrum comunitari) i els requisits de privacitat, així podem proposar el que te el permisos més adients."
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "El formulario de la cadena de seguridad no era correcto. Esto probablemente ocurrió porque el formulario se ha abierto durante demasiado tiempo (> 3 horas) antes de enviarlo."
-#: ../../mod/new_channel.php:119
-msgid "Channel Type"
-msgstr "tipus de Canal"
+#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1702
+msgid "Logout"
+msgstr "Desconectar"
-#: ../../mod/new_channel.php:119
-msgid "Read more about roles"
-msgstr "Llegix més sobre els rols"
+#: ../../include/nav.php:82 ../../include/nav.php:113
+msgid "End this session"
+msgstr "Finalitza aquesta sessió"
-#: ../../mod/appman.php:28 ../../mod/appman.php:44
-msgid "App installed."
-msgstr "Aplicació instal·lada."
+#: ../../include/nav.php:85 ../../include/nav.php:144
+msgid "Home"
+msgstr "Inici"
-#: ../../mod/appman.php:37
-msgid "Malformed app."
-msgstr "Aplicació amb errors"
+#: ../../include/nav.php:85
+msgid "Your posts and conversations"
+msgstr "Les teves entrades i converses"
-#: ../../mod/appman.php:80
-msgid "Embed code"
-msgstr "Codi embegut"
+#: ../../include/nav.php:86
+msgid "Your profile page"
+msgstr "La teva pàgina de perfil"
-#: ../../mod/appman.php:86
-msgid "Edit App"
-msgstr "Edita l'Aplicació"
+#: ../../include/nav.php:88
+msgid "Manage/Edit profiles"
+msgstr "Gestiona/Edita perfils"
-#: ../../mod/appman.php:86
-msgid "Create App"
-msgstr "Crea l'Aplicació"
+#: ../../include/nav.php:90 ../../include/channel.php:941
+msgid "Edit Profile"
+msgstr "Edita Perfil"
-#: ../../mod/appman.php:91
-msgid "Name of app"
-msgstr "Nom de l'Aplicació"
+#: ../../include/nav.php:90
+msgid "Edit your profile"
+msgstr "Edita el teu perfil"
-#: ../../mod/appman.php:92
-msgid "Location (URL) of app"
-msgstr "Ubicació (URL) de l'aplicació"
+#: ../../include/nav.php:92
+msgid "Your photos"
+msgstr "Les Teves Fotos"
-#: ../../mod/appman.php:94
-msgid "Photo icon URL"
-msgstr "Foto icona URL"
+#: ../../include/nav.php:93
+msgid "Your files"
+msgstr "Els teus arxius"
-#: ../../mod/appman.php:94
-msgid "80 x 80 pixels - optional"
-msgstr "80 x 80 pixels - opcional"
+#: ../../include/nav.php:96
+msgid "Your chatrooms"
+msgstr "Les teves sales de xerrar"
-#: ../../mod/appman.php:95
-msgid "Version ID"
-msgstr "Versió ID"
+#: ../../include/nav.php:102 ../../include/conversation.php:1675
+msgid "Bookmarks"
+msgstr "Marcadors"
-#: ../../mod/appman.php:96
-msgid "Price of app"
-msgstr "Preu de l'aplicació"
+#: ../../include/nav.php:102
+msgid "Your bookmarks"
+msgstr "Els teus marcadors"
-#: ../../mod/appman.php:97
-msgid "Location (URL) to purchase app"
-msgstr "Ubicació (URL) per comprar l'aplicació"
+#: ../../include/nav.php:106
+msgid "Your webpages"
+msgstr "Les teves pàgines web"
-#: ../../mod/ping.php:263
-msgid "sent you a private message"
-msgstr "Se t'ha enviat un missatge privat"
+#: ../../include/nav.php:110
+msgid "Sign in"
+msgstr "Signatura"
-#: ../../mod/ping.php:314
-msgid "added your channel"
-msgstr "el teu canal s'ha afegit"
+#: ../../include/nav.php:127
+#, php-format
+msgid "%s - click to logout"
+msgstr "%s - click per desconectar"
-#: ../../mod/ping.php:355
-msgid "posted an event"
-msgstr "enviat un event"
+#: ../../include/nav.php:130
+msgid "Remote authentication"
+msgstr "Autenticació remota"
-#: ../../mod/layouts.php:176
-msgid "Comanche page description language help"
-msgstr "Pgina d'ajuda del llenguatge Comanche"
+#: ../../include/nav.php:130
+msgid "Click to authenticate to your home hub"
+msgstr "Clica per autentificar-te en el teu node"
-#: ../../mod/layouts.php:180
-msgid "Layout Description"
-msgstr "Descripció del Disseny de la Pàgina"
+#: ../../include/nav.php:144
+msgid "Home Page"
+msgstr "Pàgina Personal"
-#: ../../mod/layouts.php:185
-msgid "Download PDL file"
-msgstr "Descarrega l'arxiu PDL"
+#: ../../include/nav.php:147
+msgid "Create an account"
+msgstr "Crear un compte"
-#: ../../mod/home.php:73
+#: ../../include/nav.php:159
+msgid "Help and documentation"
+msgstr "Ajuda i documentació"
+
+#: ../../include/nav.php:163
+msgid "Applications, utilities, links, games"
+msgstr "Aplicacions, utilitats, enllaços, jocs"
+
+#: ../../include/nav.php:165
+msgid "Search site @name, #tag, ?docs, content"
+msgstr "Cerca pel lloc @name, #tag, ?docs, contingut"
+
+#: ../../include/nav.php:167
+msgid "Channel Directory"
+msgstr "Directori de Canals"
+
+#: ../../include/nav.php:179
+msgid "Your grid"
+msgstr "La teva malla"
+
+#: ../../include/nav.php:180
+msgid "Mark all grid notifications seen"
+msgstr "Marca totes les notificacions de la malla vistes"
+
+#: ../../include/nav.php:182
+msgid "Channel home"
+msgstr "Canal personal"
+
+#: ../../include/nav.php:183
+msgid "Mark all channel notifications seen"
+msgstr "Marca totes les notificacions de canal vistes"
+
+#: ../../include/nav.php:189
+msgid "Notices"
+msgstr "Noticies"
+
+#: ../../include/nav.php:189
+msgid "Notifications"
+msgstr "Notificacions"
+
+#: ../../include/nav.php:190
+msgid "See all notifications"
+msgstr "Veure totes les Notificacions"
+
+#: ../../include/nav.php:193
+msgid "Private mail"
+msgstr "Correu privat"
+
+#: ../../include/nav.php:194
+msgid "See all private messages"
+msgstr "Veure tots els missatges privats"
+
+#: ../../include/nav.php:195
+msgid "Mark all private messages seen"
+msgstr "Marcar tots els missatges privats vistos"
+
+#: ../../include/nav.php:201
+msgid "Event Calendar"
+msgstr "Calendari d'Events"
+
+#: ../../include/nav.php:202
+msgid "See all events"
+msgstr "Veure tots els esdeveniments"
+
+#: ../../include/nav.php:203
+msgid "Mark all events seen"
+msgstr "Marcar tots els esdeveniments vistos"
+
+#: ../../include/nav.php:206
+msgid "Manage Your Channels"
+msgstr "Gestiona els Teus Canals"
+
+#: ../../include/nav.php:208
+msgid "Account/Channel Settings"
+msgstr "Ajustos de Compte/Canal"
+
+#: ../../include/nav.php:216
+msgid "Site Setup and Configuration"
+msgstr "Ajustos i Configuració del Lloc"
+
+#: ../../include/nav.php:247 ../../include/conversation.php:851
+msgid "Loading..."
+msgstr "Carregant..."
+
+#: ../../include/nav.php:252
+msgid "@name, #tag, ?doc, content"
+msgstr "@nom, #etiqueta, ?doc, contingut"
+
+#: ../../include/nav.php:253
+msgid "Please wait..."
+msgstr "Si us plau, espera......."
+
+#: ../../include/connections.php:95
+msgid "New window"
+msgstr "Nova finestra"
+
+#: ../../include/connections.php:96
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Obrir la localització seleccionada en un altre finestra o pestanya del navegador"
+
+#: ../../include/connections.php:214
#, php-format
-msgid "Welcome to %s"
-msgstr "Benvingut a %s"
+msgid "User '%s' deleted"
+msgstr "usuari '%s' esborrat"
-#: ../../mod/page.php:126
-msgid "Lorem Ipsum"
-msgstr "Lorem Ipsum"
+#: ../../include/contact_widgets.php:11
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "%d invitació disponible"
+msgstr[1] "%d invitacions disponibles"
-#: ../../mod/bookmarks.php:38
-msgid "Bookmark added"
-msgstr "Favorit afegit"
+#: ../../include/contact_widgets.php:19
+msgid "Find Channels"
+msgstr "Troba Canals"
-#: ../../mod/bookmarks.php:60
-msgid "My Bookmarks"
-msgstr "Els Meus Favorits"
+#: ../../include/contact_widgets.php:20
+msgid "Enter name or interest"
+msgstr "Entra un nom o interes"
-#: ../../mod/bookmarks.php:71
-msgid "My Connections Bookmarks"
-msgstr "Les connexions dels meus Favorits"
+#: ../../include/contact_widgets.php:21
+msgid "Connect/Follow"
+msgstr "Conecta/Segueix"
-#: ../../mod/channel.php:97
-msgid "Insufficient permissions. Request redirected to profile page."
-msgstr "Permisos insuficients. Petició redirigida a la pàgina del perfil."
+#: ../../include/contact_widgets.php:22
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "Exemples: Lionel Messi, Futbolista"
-#: ../../mod/pconfig.php:27 ../../mod/pconfig.php:60
-msgid "This setting requires special processing and editing has been blocked."
-msgstr "Aquest ajust requereix un procés espedial i l'edició esta bloquejada."
+#: ../../include/contact_widgets.php:26
+msgid "Random Profile"
+msgstr "Perfil Aleatori"
-#: ../../mod/pconfig.php:49
-msgid "Configuration Editor"
-msgstr "Editor de Configuració"
+#: ../../include/contact_widgets.php:27
+msgid "Invite Friends"
+msgstr "Convida Amics"
+
+#: ../../include/contact_widgets.php:29
+msgid "Advanced example: name=fred and country=iceland"
+msgstr "Exemple avançat: nom=pep i pais=eire"
+
+#: ../../include/contact_widgets.php:122
+#, php-format
+msgid "%d connection in common"
+msgid_plural "%d connections in common"
+msgstr[0] "%d connexió en comú"
+msgstr[1] "%d connexions en comú"
+
+#: ../../include/contact_widgets.php:127
+msgid "show more"
+msgstr "mostrar més"
+
+#: ../../include/conversation.php:204
+#, php-format
+msgid "%1$s is now connected with %2$s"
+msgstr "%1$s esta ara connectat amb %2$s"
+
+#: ../../include/conversation.php:239
+#, php-format
+msgid "%1$s poked %2$s"
+msgstr "%1$s a esperonat %2$s"
+
+#: ../../include/conversation.php:691
+#, php-format
+msgid "View %s's profile @ %s"
+msgstr "Vista %s del perfil @ %s"
+
+#: ../../include/conversation.php:710
+msgid "Categories:"
+msgstr "Categories:"
+
+#: ../../include/conversation.php:711
+msgid "Filed under:"
+msgstr "Arxivar a:"
+
+#: ../../include/conversation.php:738
+msgid "View in context"
+msgstr "Veure en context"
+
+#: ../../include/conversation.php:847
+msgid "remove"
+msgstr "treu"
+
+#: ../../include/conversation.php:852
+msgid "Delete Selected Items"
+msgstr "Esborra els Articles Seleccionats"
+
+#: ../../include/conversation.php:948
+msgid "View Source"
+msgstr "Veure l'Origen"
+
+#: ../../include/conversation.php:949
+msgid "Follow Thread"
+msgstr "Segueix el Fil"
+
+#: ../../include/conversation.php:950
+msgid "Unfollow Thread"
+msgstr "Fil Abandonat"
+
+#: ../../include/conversation.php:955
+msgid "Activity/Posts"
+msgstr "Activitat/Entrades"
+
+#: ../../include/conversation.php:957
+msgid "Edit Connection"
+msgstr "Modifica la Connexió"
+
+#: ../../include/conversation.php:958
+msgid "Message"
+msgstr "Missatge"
+
+#: ../../include/conversation.php:1075
+#, php-format
+msgid "%s likes this."
+msgstr "%s agrada això."
+
+#: ../../include/conversation.php:1075
+#, php-format
+msgid "%s doesn't like this."
+msgstr "%s no agrada això."
+
+#: ../../include/conversation.php:1079
+#, php-format
+msgid "<span %1$s>%2$d people</span> like this."
+msgid_plural "<span %1$s>%2$d people</span> like this."
+msgstr[0] "<span %1$s>%2$d gent</span> agrada això."
+msgstr[1] "<span %1$s>%2$d gent</span> agrada això."
+
+#: ../../include/conversation.php:1081
+#, php-format
+msgid "<span %1$s>%2$d people</span> don't like this."
+msgid_plural "<span %1$s>%2$d people</span> don't like this."
+msgstr[0] "<span %1$s>%2$d gent</span> no agrada això."
+msgstr[1] "<span %1$s>%2$d gent</span> no agrada això."
+
+#: ../../include/conversation.php:1087
+msgid "and"
+msgstr "i"
-#: ../../mod/pconfig.php:50
+#: ../../include/conversation.php:1090
+#, php-format
+msgid ", and %d other people"
+msgid_plural ", and %d other people"
+msgstr[0] ", i %d altra gent"
+msgstr[1] ", i %d altra gent"
+
+#: ../../include/conversation.php:1091
+#, php-format
+msgid "%s like this."
+msgstr "%s agrada això."
+
+#: ../../include/conversation.php:1091
+#, php-format
+msgid "%s don't like this."
+msgstr "%s no agrada això."
+
+#: ../../include/conversation.php:1130
+msgid "Set your location"
+msgstr "Ajusta la teva ubicació"
+
+#: ../../include/conversation.php:1131
+msgid "Clear browser location"
+msgstr "Treu la localització del navegador"
+
+#: ../../include/conversation.php:1177
+msgid "Tag term:"
+msgstr "Paraula de l'Etiqueta:"
+
+#: ../../include/conversation.php:1178
+msgid "Where are you right now?"
+msgstr "On ets ara?"
+
+#: ../../include/conversation.php:1210
+msgid "Page link name"
+msgstr "Nom de la pàgina enllaçada"
+
+#: ../../include/conversation.php:1213
+msgid "Post as"
+msgstr "Envia com"
+
+#: ../../include/conversation.php:1223
+msgid "Toggle voting"
+msgstr "Commutar votació"
+
+#: ../../include/conversation.php:1231
+msgid "Categories (optional, comma-separated list)"
+msgstr "Categories (opcional, llista separada per comes)"
+
+#: ../../include/conversation.php:1254
+msgid "Set publish date"
+msgstr "Ajusta la data de publicació"
+
+#: ../../include/conversation.php:1258
+msgid "OK"
+msgstr "OK"
+
+#: ../../include/conversation.php:1503
+msgid "Discover"
+msgstr "Descobrir"
+
+#: ../../include/conversation.php:1506
+msgid "Imported public streams"
+msgstr "Importar fluxos públics"
+
+#: ../../include/conversation.php:1511
+msgid "Commented Order"
+msgstr "Ordenar per Comentaris"
+
+#: ../../include/conversation.php:1514
+msgid "Sort by Comment Date"
+msgstr "Ordenar per Data del Comentari"
+
+#: ../../include/conversation.php:1518
+msgid "Posted Order"
+msgstr "Ordenar per Entrades"
+
+#: ../../include/conversation.php:1521
+msgid "Sort by Post Date"
+msgstr "Ordenar per Data d' Entrada"
+
+#: ../../include/conversation.php:1529
+msgid "Posts that mention or involve you"
+msgstr "Entrades que et mencionen o involucren"
+
+#: ../../include/conversation.php:1538
+msgid "Activity Stream - by date"
+msgstr "Activitat del Flux - per data"
+
+#: ../../include/conversation.php:1544
+msgid "Starred"
+msgstr "Preferit"
+
+#: ../../include/conversation.php:1547
+msgid "Favourite Posts"
+msgstr "Entrades Favorites"
+
+#: ../../include/conversation.php:1554
+msgid "Spam"
+msgstr "Spam"
+
+#: ../../include/conversation.php:1557
+msgid "Posts flagged as SPAM"
+msgstr "Entrades marcades com a SPAM"
+
+#: ../../include/conversation.php:1614
+msgid "Status Messages and Posts"
+msgstr "Estat dels Missatges i Entrades"
+
+#: ../../include/conversation.php:1623
+msgid "About"
+msgstr "El Meu Perfil"
+
+#: ../../include/conversation.php:1626
+msgid "Profile Details"
+msgstr "Detalls del Perfil"
+
+#: ../../include/conversation.php:1635 ../../include/photos.php:502
+msgid "Photo Albums"
+msgstr "Albums de Fotos"
+
+#: ../../include/conversation.php:1642
+msgid "Files and Storage"
+msgstr "Arxius i Emmagatzegament"
+
+#: ../../include/conversation.php:1678
+msgid "Saved Bookmarks"
+msgstr "Marcadors Guardats"
+
+#: ../../include/conversation.php:1688
+msgid "Manage Webpages"
+msgstr "Gestió de Pàgines Web"
+
+#: ../../include/conversation.php:1747
+msgctxt "noun"
+msgid "Attending"
+msgid_plural "Attending"
+msgstr[0] "Assistint"
+msgstr[1] "Assistint"
+
+#: ../../include/conversation.php:1750
+msgctxt "noun"
+msgid "Not Attending"
+msgid_plural "Not Attending"
+msgstr[0] "Desassistint"
+msgstr[1] "Desassistint"
+
+#: ../../include/conversation.php:1753
+msgctxt "noun"
+msgid "Undecided"
+msgid_plural "Undecided"
+msgstr[0] "Indecís"
+msgstr[1] "Indecisos"
+
+#: ../../include/conversation.php:1756
+msgctxt "noun"
+msgid "Agree"
+msgid_plural "Agrees"
+msgstr[0] "Acord"
+msgstr[1] "Acords"
+
+#: ../../include/conversation.php:1759
+msgctxt "noun"
+msgid "Disagree"
+msgid_plural "Disagrees"
+msgstr[0] "Desacord"
+msgstr[1] "Desacords"
+
+#: ../../include/conversation.php:1762
+msgctxt "noun"
+msgid "Abstain"
+msgid_plural "Abstains"
+msgstr[0] "Abstenirse"
+msgstr[1] "Abstenirse"
+
+#: ../../include/selectors.php:30
+msgid "Frequently"
+msgstr "Freqüentment"
+
+#: ../../include/selectors.php:31
+msgid "Hourly"
+msgstr "Horariament"
+
+#: ../../include/selectors.php:32
+msgid "Twice daily"
+msgstr "Dos vegades al dia"
+
+#: ../../include/selectors.php:33
+msgid "Daily"
+msgstr "Diariament"
+
+#: ../../include/selectors.php:34
+msgid "Weekly"
+msgstr "Setmanalment"
+
+#: ../../include/selectors.php:35
+msgid "Monthly"
+msgstr "Mensualment"
+
+#: ../../include/selectors.php:49
+msgid "Currently Male"
+msgstr "Actualment Masculí"
+
+#: ../../include/selectors.php:49
+msgid "Currently Female"
+msgstr "Actualment Femení"
+
+#: ../../include/selectors.php:49
+msgid "Mostly Male"
+msgstr "Més aviat Masculí"
+
+#: ../../include/selectors.php:49
+msgid "Mostly Female"
+msgstr "Més Aviat Femení"
+
+#: ../../include/selectors.php:49
+msgid "Transgender"
+msgstr "Canvi de Sexe"
+
+#: ../../include/selectors.php:49
+msgid "Intersex"
+msgstr "Intersexual"
+
+#: ../../include/selectors.php:49
+msgid "Transsexual"
+msgstr "Transsexual"
+
+#: ../../include/selectors.php:49
+msgid "Hermaphrodite"
+msgstr "Hermafrodita"
+
+#: ../../include/selectors.php:49
+msgid "Neuter"
+msgstr "Neutre"
+
+#: ../../include/selectors.php:49
+msgid "Non-specific"
+msgstr "Indefinit"
+
+#: ../../include/selectors.php:49 ../../include/selectors.php:66
+#: ../../include/selectors.php:104 ../../include/selectors.php:140
+#: ../../include/permissions.php:881
+msgid "Other"
+msgstr "Altres"
+
+#: ../../include/selectors.php:49
+msgid "Undecided"
+msgstr "Indecís"
+
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Males"
+msgstr "Homes"
+
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Females"
+msgstr "Dones"
+
+#: ../../include/selectors.php:85
+msgid "Gay"
+msgstr "Gay"
+
+#: ../../include/selectors.php:85
+msgid "Lesbian"
+msgstr "Lesbianes"
+
+#: ../../include/selectors.php:85
+msgid "No Preference"
+msgstr "Sense Preferències"
+
+#: ../../include/selectors.php:85
+msgid "Bisexual"
+msgstr "Bisexual"
+
+#: ../../include/selectors.php:85
+msgid "Autosexual"
+msgstr "Autosexual"
+
+#: ../../include/selectors.php:85
+msgid "Abstinent"
+msgstr "Abstinent"
+
+#: ../../include/selectors.php:85
+msgid "Virgin"
+msgstr "Verge"
+
+#: ../../include/selectors.php:85
+msgid "Deviant"
+msgstr "Desviat"
+
+#: ../../include/selectors.php:85
+msgid "Fetish"
+msgstr "Fetixiste"
+
+#: ../../include/selectors.php:85
+msgid "Oodles"
+msgstr "Orgies"
+
+#: ../../include/selectors.php:85
+msgid "Nonsexual"
+msgstr "Asexual"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Single"
+msgstr "Solter"
+
+#: ../../include/selectors.php:123
+msgid "Lonely"
+msgstr "Solitari"
+
+#: ../../include/selectors.php:123
+msgid "Available"
+msgstr "Disponible"
+
+#: ../../include/selectors.php:123
+msgid "Unavailable"
+msgstr "No Disponible"
+
+#: ../../include/selectors.php:123
+msgid "Has crush"
+msgstr "Aplastat"
+
+#: ../../include/selectors.php:123
+msgid "Infatuated"
+msgstr "Encapritxat"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Dating"
+msgstr "Promés"
+
+#: ../../include/selectors.php:123
+msgid "Unfaithful"
+msgstr "Infidel"
+
+#: ../../include/selectors.php:123
+msgid "Sex Addict"
+msgstr "Adicte al Sexe"
+
+#: ../../include/selectors.php:123
+msgid "Friends/Benefits"
+msgstr "Amics amb Beneficis"
+
+#: ../../include/selectors.php:123
+msgid "Casual"
+msgstr "Casual"
+
+#: ../../include/selectors.php:123
+msgid "Engaged"
+msgstr "Ocupat"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Married"
+msgstr "Casat"
+
+#: ../../include/selectors.php:123
+msgid "Imaginarily married"
+msgstr "Casat Imaginàriament"
+
+#: ../../include/selectors.php:123
+msgid "Partners"
+msgstr "Parella"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Cohabiting"
+msgstr "Cohabitant"
+
+#: ../../include/selectors.php:123
+msgid "Common law"
+msgstr "Tradició"
+
+#: ../../include/selectors.php:123
+msgid "Happy"
+msgstr "Feliç"
+
+#: ../../include/selectors.php:123
+msgid "Not looking"
+msgstr "No Cerco"
+
+#: ../../include/selectors.php:123
+msgid "Swinger"
+msgstr "Llibertí"
+
+#: ../../include/selectors.php:123
+msgid "Betrayed"
+msgstr "Traït"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Separated"
+msgstr "Separat"
+
+#: ../../include/selectors.php:123
+msgid "Unstable"
+msgstr "Inestable"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Divorced"
+msgstr "Divorciat"
+
+#: ../../include/selectors.php:123
+msgid "Imaginarily divorced"
+msgstr "Divorciat Imaginàriament"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Widowed"
+msgstr "Vidu/ua"
+
+#: ../../include/selectors.php:123
+msgid "Uncertain"
+msgstr "Incert"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "It's complicated"
+msgstr "Es Complicat"
+
+#: ../../include/selectors.php:123
+msgid "Don't care"
+msgstr "No Et Fa Res"
+
+#: ../../include/selectors.php:123
+msgid "Ask me"
+msgstr "Pregunta"
+
+#: ../../include/PermissionDescription.php:31
+#: ../../include/acl_selectors.php:232
+msgid "Visible to your default audience"
+msgstr "Visible per a la teva audiència "
+
+#: ../../include/PermissionDescription.php:115
+#: ../../include/acl_selectors.php:268
+msgid "Only me"
+msgstr "Només jo"
+
+#: ../../include/PermissionDescription.php:116
+msgid "Public"
+msgstr "Públic"
+
+#: ../../include/PermissionDescription.php:117
+msgid "Anybody in the $Projectname network"
+msgstr "Ningú a la xarxa $Projectname"
+
+#: ../../include/PermissionDescription.php:118
+#, php-format
+msgid "Any account on %s"
+msgstr "Qualsevol compte a %s"
+
+#: ../../include/PermissionDescription.php:119
+msgid "Any of my connections"
+msgstr "Qualsevol de les meves connexions"
+
+#: ../../include/PermissionDescription.php:120
+msgid "Only connections I specifically allow"
+msgstr "Només les connexions que permeto específicament"
+
+#: ../../include/PermissionDescription.php:121
+msgid "Anybody authenticated (could include visitors from other networks)"
+msgstr "Qualsevol persona autenticada (podria incloure als usuaris d'altres xarxes)"
+
+#: ../../include/PermissionDescription.php:122
+msgid "Any connections including those who haven't yet been approved"
+msgstr "Qualsevol connexió incloent aquells que encara no han estat aprovats"
+
+#: ../../include/PermissionDescription.php:161
msgid ""
-"Warning: Changing some settings could render your channel inoperable. Please"
-" leave this page unless you are comfortable with and knowledgeable about how"
-" to correctly use this feature."
-msgstr "atenció: Realitzar segons quins ajustos pot fer el canal inoperable. Deixa aquesta pàgina si no estas segur i tens suficients coneixements sobre l'ús correcte d'aquesta característica."
+"This is your default setting for the audience of your normal stream, and "
+"posts."
+msgstr "Aquest és l'ajust per defecte per al públic del seu flux normal i entrades."
-#: ../../mod/suggest.php:35
+#: ../../include/PermissionDescription.php:162
msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
-msgstr "No hi ha suggerencies. Si es un lloc nou, espera 24 hores i proba de nou."
+"This is your default setting for who can view your default channel profile"
+msgstr "Aquesta és la configuració per defecte per a qui pugui veure el teu perfil per defecte del canal"
-#: ../../mod/poll.php:64
-msgid "Poll"
-msgstr "Sondeija"
+#: ../../include/PermissionDescription.php:163
+msgid "This is your default setting for who can view your connections"
+msgstr "Aquesta és la configuració per defecte per a qui pugui veure les teves connexions"
-#: ../../mod/poll.php:69
-msgid "View Results"
-msgstr "Mostra els Resultats"
+#: ../../include/PermissionDescription.php:164
+msgid ""
+"This is your default setting for who can view your file storage and photos"
+msgstr "Aquesta és la configuració per defecte per a qui pugui veure els teus arxius i fotos"
-#: ../../mod/service_limits.php:19
-msgid "No service class restrictions found."
-msgstr "No s'han trobat restriccions de clase."
+#: ../../include/PermissionDescription.php:165
+msgid "This is your default setting for the audience of your webpages"
+msgstr "Aquests son els ajustos per defecte de l'audiència de les teves pàgines web"
-#: ../../mod/sharedwithme.php:94
-msgid "Files: shared with me"
-msgstr "Arxius: compartits amb jo"
+#: ../../include/account.php:28
+msgid "Not a valid email address"
+msgstr "Adreça de correu electrònic no vàlida"
-#: ../../mod/sharedwithme.php:96
-msgid "NEW"
-msgstr "NOU"
+#: ../../include/account.php:30
+msgid "Your email domain is not among those allowed on this site"
+msgstr "El seu domini de correu electrònic no es troba entre els permesos en aquest lloc"
-#: ../../mod/sharedwithme.php:99
-msgid "Remove all files"
-msgstr "Esborra tots els arxius"
+#: ../../include/account.php:36
+msgid "Your email address is already registered at this site."
+msgstr "La teva adreça de correu electrònic ja esta registrada en aquest lloc"
-#: ../../mod/sharedwithme.php:100
-msgid "Remove this file"
-msgstr "Esborra l'arxiu"
+#: ../../include/account.php:68
+msgid "An invitation is required."
+msgstr "Es requereix Invitació"
-#: ../../view/theme/apw/php/config.php:202
-#: ../../view/theme/apw/php/config.php:236
-msgid "Schema Default"
-msgstr "Esquema Predeterminat"
+#: ../../include/account.php:72
+msgid "Invitation could not be verified."
+msgstr "L'invitació no ha pogut ser verificada"
-#: ../../view/theme/apw/php/config.php:203
-msgid "Sans-Serif"
-msgstr "Sans-Serif"
+#: ../../include/account.php:122
+msgid "Please enter the required information."
+msgstr "Entra la informació sol·licitada"
-#: ../../view/theme/apw/php/config.php:204
-msgid "Monospace"
-msgstr "Monospace"
+#: ../../include/account.php:189
+msgid "Failed to store account information."
+msgstr "Ha fallat guardar la informació del compte"
-#: ../../view/theme/apw/php/config.php:259
-#: ../../view/theme/redbasic/php/config.php:102
-msgid "Theme settings"
-msgstr "Ajustos de tema"
+#: ../../include/account.php:249
+#, php-format
+msgid "Registration confirmation for %s"
+msgstr "Registre confirmat per %s"
-#: ../../view/theme/apw/php/config.php:260
-msgid "Set scheme"
-msgstr "Ajustos d'esquema"
+#: ../../include/account.php:315
+#, php-format
+msgid "Registration request at %s"
+msgstr "Sol·licitud de registre a %s"
-#: ../../view/theme/apw/php/config.php:261
-#: ../../view/theme/redbasic/php/config.php:124
-msgid "Set font-size for posts and comments"
-msgstr "Ajusta la mida del tipus de lletra per a entrades i comentaris"
+#: ../../include/account.php:317 ../../include/account.php:344
+#: ../../include/account.php:404 ../../include/network.php:1871
+msgid "Administrator"
+msgstr "Administrador"
-#: ../../view/theme/apw/php/config.php:262
-msgid "Set font face"
-msgstr "Ajusta el tipus de lletra"
+#: ../../include/account.php:339
+msgid "your registration password"
+msgstr "la teva contrasenya registrada"
-#: ../../view/theme/apw/php/config.php:263
-msgid "Set iconset"
-msgstr "Ajusta el conjunt d'icones"
+#: ../../include/account.php:342 ../../include/account.php:402
+#, php-format
+msgid "Registration details for %s"
+msgstr "Detalls del registre per %s"
-#: ../../view/theme/apw/php/config.php:264
-msgid "Set big shadow size, default 15px 15px 15px"
-msgstr "Ajusta la mida gran de l'ombra, predeterminat a 15px 15px 15px"
+#: ../../include/account.php:414
+msgid "Account approved."
+msgstr "Compte aprovat."
-#: ../../view/theme/apw/php/config.php:265
-msgid "Set small shadow size, default 5px 5px 5px"
-msgstr "Ajusta la mida petita de l'ombra, predeterminat a 5px 5px 5px"
+#: ../../include/account.php:454
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Registre revocat per %s"
-#: ../../view/theme/apw/php/config.php:266
-msgid "Set shadow color, default #000"
-msgstr "Ajusta el color de l'ombra, predeterminat a #000"
+#: ../../include/account.php:506
+msgid "Account verified. Please login."
+msgstr "Compte verificat. Si us plau, inicia sessió."
-#: ../../view/theme/apw/php/config.php:267
-msgid "Set radius size, default 5px"
-msgstr "Ajusta la mida del radi, predeterminat a 5px"
+#: ../../include/account.php:723 ../../include/account.php:725
+msgid "Click here to upgrade."
+msgstr "Feu clic aquí per actualitzar."
-#: ../../view/theme/apw/php/config.php:268
-msgid "Set line-height for posts and comments"
-msgstr "Ajusta el gruix de línia per entrades i comentaris"
+#: ../../include/account.php:731
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Aquesta acció és superior als límits establerts pel seu pla de subscripció."
-#: ../../view/theme/apw/php/config.php:269
-msgid "Set background image"
-msgstr "Ajusta l'imatge de fons"
+#: ../../include/account.php:736
+msgid "This action is not available under your subscription plan."
+msgstr "Aquesta acció no està disponible en el seu pla de subscripció."
+
+#: ../../include/attach.php:247 ../../include/attach.php:333
+msgid "Item was not found."
+msgstr "Article no trobat."
+
+#: ../../include/attach.php:497
+msgid "No source file."
+msgstr "No hi ha arxiu d'origen."
+
+#: ../../include/attach.php:519
+msgid "Cannot locate file to replace"
+msgstr "No trobo l'arxiu a reemplaçar"
+
+#: ../../include/attach.php:537
+msgid "Cannot locate file to revise/update"
+msgstr "No trobo l'arxiu a revisar/actualitzar"
+
+#: ../../include/attach.php:672
+#, php-format
+msgid "File exceeds size limit of %d"
+msgstr "L'arxiu excedeix la mida limit de %d"
-#: ../../view/theme/apw/php/config.php:270
-msgid "Set background attachment"
-msgstr "Ajusta els adjunts en segon pla"
+#: ../../include/attach.php:686
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+msgstr "Has arribat al teu límit de %1$.0f Mbytes de emagatzematge d'adjunts."
-#: ../../view/theme/apw/php/config.php:271
-msgid "Set background color"
-msgstr "Ajusta el color en segon pla"
+#: ../../include/attach.php:842
+msgid "File upload failed. Possible system limit or action terminated."
+msgstr "Pujada del arxiu fallida. Possible límit del sistema o acció interrompuda."
-#: ../../view/theme/apw/php/config.php:272
-msgid "Set section background image"
-msgstr "Ajusta la secció d'imatge en segon pla"
+#: ../../include/attach.php:855
+msgid "Stored file could not be verified. Upload failed."
+msgstr "L'arxiu guardat no es pot verificar. Pujada fallida."
-#: ../../view/theme/apw/php/config.php:273
-msgid "Set section background color"
-msgstr "Ajusta el color de la secció en segon pla"
+#: ../../include/attach.php:909 ../../include/attach.php:925
+msgid "Path not available."
+msgstr "Trajectòria no disponible"
-#: ../../view/theme/apw/php/config.php:274
-msgid "Set color of items - use hex"
-msgstr "Ajuste el color dels articles - empra codi hexadecimal"
+#: ../../include/attach.php:971 ../../include/attach.php:1123
+msgid "Empty pathname"
+msgstr "Trajèctoria vuida."
-#: ../../view/theme/apw/php/config.php:275
-msgid "Set color of links - use hex"
-msgstr "ajusta el color dels enlaços - empra codi hexadecimal"
+#: ../../include/attach.php:997
+msgid "duplicate filename or path"
+msgstr "Nom o trajectòria duplicat"
-#: ../../view/theme/apw/php/config.php:276
-msgid "Set max-width for items. Default 400px"
-msgstr "Ajusta l'amplada màxima dels articles. Predeterminat a 400px"
+#: ../../include/attach.php:1019
+msgid "Path not found."
+msgstr "Trajectòria no trobada."
-#: ../../view/theme/apw/php/config.php:277
-msgid "Set min-width for items. Default 240px"
-msgstr "Ajusta l'amplada minima dels articles. Predeterminat a 240px"
+#: ../../include/attach.php:1077
+msgid "mkdir failed."
+msgstr "mkdir va fracassar."
-#: ../../view/theme/apw/php/config.php:278
-msgid "Set the generic content wrapper width. Default 48%"
-msgstr "Ajusta l'amplada de l'embolcall del contingut genèric. Predeterminat a 48%"
+#: ../../include/attach.php:1081
+msgid "database storage failed."
+msgstr "Arxiu de base de dades va fallar."
-#: ../../view/theme/apw/php/config.php:279
-msgid "Set color of fonts - use hex"
-msgstr "Ajusta el color del tipus de lletra - empra codi hexadecimal"
+#: ../../include/attach.php:1129
+msgid "Empty path"
+msgstr "Trajèctoria vuida"
-#: ../../view/theme/apw/php/config.php:280
-msgid "Set background-size element"
-msgstr "Ajusta la mida de l'element en segon pla"
+#: ../../include/channel.php:32
+msgid "Unable to obtain identity information from database"
+msgstr "Incapaç de trobar l'informació d'identitat a la base de dades"
-#: ../../view/theme/apw/php/config.php:281
-msgid "Item opacity"
-msgstr "Opacitat de l'article"
+#: ../../include/channel.php:66
+msgid "Empty name"
+msgstr "Nom buit"
-#: ../../view/theme/apw/php/config.php:282
-msgid "Display post previews only"
-msgstr "Mostra tan sols les previsualitzacions de les entrades"
+#: ../../include/channel.php:69
+msgid "Name too long"
+msgstr "Nom massa llarg"
-#: ../../view/theme/apw/php/config.php:283
-msgid "Display side bar on channel page"
-msgstr "Mostra la barra lateral a la pàgina del canal"
+#: ../../include/channel.php:180
+msgid "No account identifier"
+msgstr "Sense identificador de compte"
-#: ../../view/theme/apw/php/config.php:284
-msgid "Colour of the navigation bar"
-msgstr "Color de la barra de navegació"
+#: ../../include/channel.php:192
+msgid "Nickname is required."
+msgstr "Alies/malnom es requerit."
+
+#: ../../include/channel.php:206
+msgid "Reserved nickname. Please choose another."
+msgstr "Àlies reservat. Tria un altre."
+
+#: ../../include/channel.php:211
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "L'álies te caracters no soportats o ja esta en ús en aquest lloc"
+
+#: ../../include/channel.php:287
+msgid "Unable to retrieve created identity"
+msgstr "No es pot recuperar la identitat creada"
+
+#: ../../include/channel.php:345
+msgid "Default Profile"
+msgstr "Perfil per Defecte"
+
+#: ../../include/channel.php:791
+msgid "Requested channel is not available."
+msgstr "El canal demanat no està disponible."
+
+#: ../../include/channel.php:938
+msgid "Create New Profile"
+msgstr "Crear un Perfil Nou"
+
+#: ../../include/channel.php:958
+msgid "Visible to everybody"
+msgstr "Visible per tothom"
+
+#: ../../include/channel.php:1031 ../../include/channel.php:1142
+msgid "Gender:"
+msgstr "Gènere:"
+
+#: ../../include/channel.php:1032 ../../include/channel.php:1186
+msgid "Status:"
+msgstr "Estatus:"
+
+#: ../../include/channel.php:1033 ../../include/channel.php:1197
+msgid "Homepage:"
+msgstr "Pàgina Personal:"
+
+#: ../../include/channel.php:1034
+msgid "Online Now"
+msgstr "Ara en Linia"
+
+#: ../../include/channel.php:1147
+msgid "Like this channel"
+msgstr "M'agrada aquest canal"
+
+#: ../../include/channel.php:1171
+msgid "j F, Y"
+msgstr "j F, Y"
+
+#: ../../include/channel.php:1172
+msgid "j F"
+msgstr "j F"
+
+#: ../../include/channel.php:1179
+msgid "Birthday:"
+msgstr "Aniversari:"
+
+#: ../../include/channel.php:1192
+#, php-format
+msgid "for %1$d %2$s"
+msgstr "per %1$d %2$s"
+
+#: ../../include/channel.php:1195
+msgid "Sexual Preference:"
+msgstr "Preferència Sexual:"
+
+#: ../../include/channel.php:1201
+msgid "Tags:"
+msgstr "Etiquetes:"
+
+#: ../../include/channel.php:1203
+msgid "Political Views:"
+msgstr "Idees Polítiques:"
+
+#: ../../include/channel.php:1205
+msgid "Religion:"
+msgstr "Religió:"
+
+#: ../../include/channel.php:1209
+msgid "Hobbies/Interests:"
+msgstr "Aficions/Interessos:"
+
+#: ../../include/channel.php:1211
+msgid "Likes:"
+msgstr "Agrada:"
+
+#: ../../include/channel.php:1213
+msgid "Dislikes:"
+msgstr "Desagrada:"
+
+#: ../../include/channel.php:1215
+msgid "Contact information and Social Networks:"
+msgstr "Informació de contacte i Xarxes Socials:"
+
+#: ../../include/channel.php:1217
+msgid "My other channels:"
+msgstr "Els meus altres canals:"
+
+#: ../../include/channel.php:1219
+msgid "Musical interests:"
+msgstr "Interessos Musicals:"
+
+#: ../../include/channel.php:1221
+msgid "Books, literature:"
+msgstr "Llibres, literatura:"
-#: ../../view/theme/apw/php/config.php:285
-msgid "Item float"
-msgstr "Article flotant"
+#: ../../include/channel.php:1223
+msgid "Television:"
+msgstr "Televisió:"
-#: ../../view/theme/apw/php/config.php:286
-msgid "Left offset of the section element"
-msgstr "Desplaçament esquerra de l'element de secció"
+#: ../../include/channel.php:1225
+msgid "Film/dance/culture/entertainment:"
+msgstr "Películes/Dança/Cultura/Entreteniment:"
-#: ../../view/theme/apw/php/config.php:287
-msgid "Right offset of the section element"
-msgstr "Desplaçament dret de l'element de secció"
+#: ../../include/channel.php:1227
+msgid "Love/Romance:"
+msgstr "Amor/Romace:"
-#: ../../view/theme/apw/php/config.php:288
-msgid "Section width"
-msgstr "Amplada de la secció"
+#: ../../include/channel.php:1229
+msgid "Work/employment:"
+msgstr "Treball/feina:"
-#: ../../view/theme/apw/php/config.php:289
-msgid "Left offset of the aside"
-msgstr "Desplaçament esquerra del costat"
+#: ../../include/channel.php:1231
+msgid "School/education:"
+msgstr "Escola/educació:"
-#: ../../view/theme/apw/php/config.php:290
-msgid "Right offset of the aside element"
-msgstr "Desplaçament dret de l'element del costat"
+#: ../../include/channel.php:1251
+msgid "Like this thing"
+msgstr "M'agrada això"
+
+#: ../../include/features.php:48
+msgid "General Features"
+msgstr "Característiques Generals"
+
+#: ../../include/features.php:50
+msgid "Content Expiration"
+msgstr "Expiració del Contingut"
+
+#: ../../include/features.php:50
+msgid "Remove posts/comments and/or private messages at a future time"
+msgstr "eliminarà entrades/comentaris i/o missatges privats en un període determinat de temps."
+
+#: ../../include/features.php:51
+msgid "Multiple Profiles"
+msgstr "Multiples Perfils"
+
+#: ../../include/features.php:51
+msgid "Ability to create multiple profiles"
+msgstr "Capacitat per crear multiples perfils"
+
+#: ../../include/features.php:52
+msgid "Advanced Profiles"
+msgstr "Perfils Avançats"
+
+#: ../../include/features.php:52
+msgid "Additional profile sections and selections"
+msgstr "Seccions i seleccions addicionals de perfils "
+
+#: ../../include/features.php:53
+msgid "Profile Import/Export"
+msgstr "Importar/Exportar Perfil"
+
+#: ../../include/features.php:53
+msgid "Save and load profile details across sites/channels"
+msgstr "Guarda i carrega els detalls del perfil al llarg dels llocs/canals"
+
+#: ../../include/features.php:54
+msgid "Web Pages"
+msgstr "Pàgines Web"
+
+#: ../../include/features.php:54
+msgid "Provide managed web pages on your channel"
+msgstr "Proporcionar pàgines web gestionades al seu canal"
+
+#: ../../include/features.php:55
+msgid "Hide Rating"
+msgstr "Amaga la Valoració"
+
+#: ../../include/features.php:55
+msgid ""
+"Hide the rating buttons on your channel and profile pages. Note: People can "
+"still rate you somewhere else."
+msgstr "Amaga el botó de valoracions al teu canal i pàgines del perfil. Nota: Et poden continuar valorant en altres llocs."
+
+#: ../../include/features.php:56
+msgid "Private Notes"
+msgstr "Notes Privades"
+
+#: ../../include/features.php:56
+msgid "Enables a tool to store notes and reminders (note: not encrypted)"
+msgstr "Activa l'eina per guardar notes i recordatoris (nota:no està encriptat)"
+
+#: ../../include/features.php:57
+msgid "Navigation Channel Select"
+msgstr "Navegació pel Selector de Canals"
+
+#: ../../include/features.php:57
+msgid "Change channels directly from within the navigation dropdown menu"
+msgstr "Canvieu els canals directament des del menú desplegable de navegació"
+
+#: ../../include/features.php:58
+msgid "Photo Location"
+msgstr "Ubicació de la Foto"
+
+#: ../../include/features.php:58
+msgid "If location data is available on uploaded photos, link this to a map."
+msgstr "Si les dades d'ubicació estàn disponibles a les fotos pujades, vincular a un mapa."
+
+#: ../../include/features.php:59
+msgid "Access Controlled Chatrooms"
+msgstr "Accés Controlat a les Sales de Xat"
+
+#: ../../include/features.php:59
+msgid "Provide chatrooms and chat services with access control."
+msgstr "Proveeix sales de Xat i serveis de Xat amb control d'accés."
+
+#: ../../include/features.php:60
+msgid "Smart Birthdays"
+msgstr "Aniversaris Intel·ligents"
+
+#: ../../include/features.php:60
+msgid ""
+"Make birthday events timezone aware in case your friends are scattered "
+"across the planet."
+msgstr "Fes, conscients de la zona horària, els esdeveniments d'aniversari, en cas que els teus amics estiguin dispersos per tot el planeta."
+
+#: ../../include/features.php:61
+msgid "Expert Mode"
+msgstr "Manera Experta"
+
+#: ../../include/features.php:61
+msgid "Enable Expert Mode to provide advanced configuration options"
+msgstr "Activar Mode Expert per a proporcionar opcions avançades de configuració"
+
+#: ../../include/features.php:62
+msgid "Premium Channel"
+msgstr "Privilegis del Canal"
+
+#: ../../include/features.php:62
+msgid ""
+"Allows you to set restrictions and terms on those that connect with your "
+"channel"
+msgstr "Li permet establir restriccions i els termes en els quals es connecten amb el seu canal"
+
+#: ../../include/features.php:67
+msgid "Post Composition Features"
+msgstr "Característiques de Composició d'Entrades"
+
+#: ../../include/features.php:70
+msgid "Large Photos"
+msgstr "Grans Fotos"
+
+#: ../../include/features.php:70
+msgid ""
+"Include large (1024px) photo thumbnails in posts. If not enabled, use small "
+"(640px) photo thumbnails"
+msgstr "Inclou gran (1024px) foto de miniatura a les entrades. Si no està activat, empra petita (640px) foto de miniatura."
+
+#: ../../include/features.php:71
+msgid "Automatically import channel content from other channels or feeds"
+msgstr "Importa automàticament el contingut del canal des de altres canals o feeds"
+
+#: ../../include/features.php:72
+msgid "Even More Encryption"
+msgstr "Encara Més Encriptació"
+
+#: ../../include/features.php:72
+msgid ""
+"Allow optional encryption of content end-to-end with a shared secret key"
+msgstr "Permet l'encripció opcional del contingut extrem-a-extrem amb clau secreta compartida"
+
+#: ../../include/features.php:73
+msgid "Enable Voting Tools"
+msgstr "Habilitar Eines de Votació"
+
+#: ../../include/features.php:73
+msgid "Provide a class of post which others can vote on"
+msgstr "Proporcionar una classe d'entrada que altres puguin votar"
+
+#: ../../include/features.php:74
+msgid "Delayed Posting"
+msgstr "Retarda Publicació"
+
+#: ../../include/features.php:74
+msgid "Allow posts to be published at a later date"
+msgstr "Permet que les publicacions es publiquin en data posterior"
+
+#: ../../include/features.php:75
+msgid "Suppress Duplicate Posts/Comments"
+msgstr "Suprimeix Duplicats de Publicacions/Comentaris"
+
+#: ../../include/features.php:75
+msgid ""
+"Prevent posts with identical content to be published with less than two "
+"minutes in between submissions."
+msgstr "Evita que publicacions amb identic contingut siguin publicades amb menys de dos minuts entre entregues."
+
+#: ../../include/features.php:81
+msgid "Network and Stream Filtering"
+msgstr "Filtrat de Xarxa i Flux"
+
+#: ../../include/features.php:82
+msgid "Search by Date"
+msgstr "Cerca per Data"
+
+#: ../../include/features.php:82
+msgid "Ability to select posts by date ranges"
+msgstr "Capacitat per seleccionar entrades per rang de dates"
+
+#: ../../include/features.php:83 ../../include/group.php:311
+msgid "Privacy Groups"
+msgstr "Grup Privat"
+
+#: ../../include/features.php:83
+msgid "Enable management and selection of privacy groups"
+msgstr "Habilita gestió i selecció de grups privats"
+
+#: ../../include/features.php:84
+msgid "Save search terms for re-use"
+msgstr "Guardar els termin de la cerca per a re-usar"
+
+#: ../../include/features.php:85
+msgid "Network Personal Tab"
+msgstr "Pestanya Personal de Xarxa"
+
+#: ../../include/features.php:85
+msgid "Enable tab to display only Network posts that you've interacted on"
+msgstr "Activa la pestanya per mostrar només les entrades de xarxa en les que has intervingut"
+
+#: ../../include/features.php:86
+msgid "Network New Tab"
+msgstr "Pestanya Nou a la Xarxa"
+
+#: ../../include/features.php:86
+msgid "Enable tab to display all new Network activity"
+msgstr "Activa pestanya per mostrar tota l'activitat nova de la Xarxa"
+
+#: ../../include/features.php:87
+msgid "Affinity Tool"
+msgstr "Eina d'Afinitat"
+
+#: ../../include/features.php:87
+msgid "Filter stream activity by depth of relationships"
+msgstr "Filtre d'activitat del flux per importància de la relació"
+
+#: ../../include/features.php:88
+msgid "Connection Filtering"
+msgstr "Filtre de Connexió"
+
+#: ../../include/features.php:88
+msgid "Filter incoming posts from connections based on keywords/content"
+msgstr "Filtre de missatges d'entrada de conexions, basat en paraules clau/contingut "
+
+#: ../../include/features.php:89
+msgid "Show channel suggestions"
+msgstr "Mostra suggerencies de canals"
+
+#: ../../include/features.php:94
+msgid "Post/Comment Tools"
+msgstr "Eina d'Entrades/Comentaris"
+
+#: ../../include/features.php:95
+msgid "Community Tagging"
+msgstr "Etiquetat per la Comunitat"
+
+#: ../../include/features.php:95
+msgid "Ability to tag existing posts"
+msgstr "Capacitat d'etiquetar entrades existents"
+
+#: ../../include/features.php:96
+msgid "Post Categories"
+msgstr "Categories d'Entrades"
+
+#: ../../include/features.php:96
+msgid "Add categories to your posts"
+msgstr "Afegeix categoria a la teva entrada"
+
+#: ../../include/features.php:97
+msgid "Emoji Reactions"
+msgstr ""
+
+#: ../../include/features.php:97
+msgid "Add emoji reaction ability to posts"
+msgstr ""
+
+#: ../../include/features.php:98
+msgid "Ability to file posts under folders"
+msgstr "Capacitat de arxivar entrades en les carpetes"
+
+#: ../../include/features.php:99
+msgid "Dislike Posts"
+msgstr "No Agrada l'Entrada"
+
+#: ../../include/features.php:99
+msgid "Ability to dislike posts/comments"
+msgstr "Capacitat per marcar amb \"No Agrada\" les entrades/comentaris"
+
+#: ../../include/features.php:100
+msgid "Star Posts"
+msgstr "Entrades Excel·lents"
+
+#: ../../include/features.php:100
+msgid "Ability to mark special posts with a star indicator"
+msgstr "Capacitat per marcar entrades especials amb l'indicador d'excel·lencia"
+
+#: ../../include/features.php:101
+msgid "Tag Cloud"
+msgstr "Núvol d'Etiquetes."
+
+#: ../../include/features.php:101
+msgid "Provide a personal tag cloud on your channel page"
+msgstr "Proporcionar un núvol d'etiquetes personals a la teva pàgina de canal"
+
+#: ../../include/oembed.php:324
+msgid "Embedded content"
+msgstr "Contingut embegut"
+
+#: ../../include/oembed.php:333
+msgid "Embedding disabled"
+msgstr "Incorporació desactivada"
+
+#: ../../include/acl_selectors.php:271
+msgid "Who can see this?"
+msgstr "Qui pot veure això?"
+
+#: ../../include/acl_selectors.php:272
+msgid "Custom selection"
+msgstr "Selecció a mida"
+
+#: ../../include/acl_selectors.php:273
+msgid ""
+"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit"
+" the scope of \"Show\"."
+msgstr "Selecciona \"Mostrar\" per permetre la visualització. \"No Mostrar\" et permet obviar i limitar l'abast de \"Mostrar\"."
+
+#: ../../include/acl_selectors.php:274
+msgid "Show"
+msgstr "Mostra"
+
+#: ../../include/acl_selectors.php:275
+msgid "Don't show"
+msgstr "No mostrar"
+
+#: ../../include/acl_selectors.php:281
+msgid "Other networks and post services"
+msgstr "Altres xarxes i serveis de correu"
+
+#: ../../include/acl_selectors.php:311
+#, php-format
+msgid ""
+"Post permissions %s cannot be changed %s after a post is shared.</br />These"
+" permissions set who is allowed to view the post."
+msgstr "Els permisos d'entrada %s no poden esser canviats %s posteriorment a que una entrada ja està compartida. </br />Aquest ajust dels permisos indica qui pot veure l'entrada."
+
+#: ../../include/auth.php:105
+msgid "Logged out."
+msgstr "Sortir."
+
+#: ../../include/auth.php:212
+msgid "Failed authentication"
+msgstr "Autenticació fallida"
+
+#: ../../include/datetime.php:135
+msgid "Birthday"
+msgstr "Aniversari"
+
+#: ../../include/datetime.php:137
+msgid "Age: "
+msgstr "Edat:"
+
+#: ../../include/datetime.php:139
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "YYYY-MM-DD o MM-DD"
+
+#: ../../include/datetime.php:272 ../../boot.php:2470
+msgid "never"
+msgstr "mai"
+
+#: ../../include/datetime.php:278
+msgid "less than a second ago"
+msgstr "fa menys d'un segon"
+
+#: ../../include/datetime.php:296
+#, php-format
+msgctxt "e.g. 22 hours ago, 1 minute ago"
+msgid "%1$d %2$s ago"
+msgstr "Fa %1$d %2$s"
+
+#: ../../include/datetime.php:307
+msgctxt "relative_date"
+msgid "year"
+msgid_plural "years"
+msgstr[0] "any"
+msgstr[1] "anys"
+
+#: ../../include/datetime.php:310
+msgctxt "relative_date"
+msgid "month"
+msgid_plural "months"
+msgstr[0] "mes"
+msgstr[1] "mesos "
+
+#: ../../include/datetime.php:313
+msgctxt "relative_date"
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "setmana"
+msgstr[1] "setmanes"
+
+#: ../../include/datetime.php:316
+msgctxt "relative_date"
+msgid "day"
+msgid_plural "days"
+msgstr[0] "dia"
+msgstr[1] "dies"
+
+#: ../../include/datetime.php:319
+msgctxt "relative_date"
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "hora"
+msgstr[1] "hores"
+
+#: ../../include/datetime.php:322
+msgctxt "relative_date"
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minut"
+msgstr[1] "minuts"
+
+#: ../../include/datetime.php:325
+msgctxt "relative_date"
+msgid "second"
+msgid_plural "seconds"
+msgstr[0] "segon"
+msgstr[1] "segons"
+
+#: ../../include/datetime.php:562
+#, php-format
+msgid "%1$s's birthday"
+msgstr "Aniversari de %1$s"
+
+#: ../../include/datetime.php:563
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Feliç Aniversari %1$s"
+
+#: ../../include/group.php:26
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
+msgstr "Un grup esborrat amb aquest nom fou reviscolat. Els permisos dels items existents <strong>poden</strong> aplicar-se a aquest grup i qualsevol membre futur. Si no es això el que vols, si et plau, crea un altre grup amb un nom diferent."
+
+#: ../../include/group.php:248
+msgid "Add new connections to this privacy group"
+msgstr "Afegir noves connexions a aquest grup privat"
+
+#: ../../include/group.php:289
+msgid "edit"
+msgstr "edita"
+
+#: ../../include/group.php:312
+msgid "Edit group"
+msgstr "Editar grup"
+
+#: ../../include/group.php:313
+msgid "Add privacy group"
+msgstr "Afegir grup privat"
+
+#: ../../include/group.php:314
+msgid "Channels not in any privacy group"
+msgstr "Sense canals en grups privats"
+
+#: ../../include/js_strings.php:5
+msgid "Delete this item?"
+msgstr "Esborrar aquest item?"
+
+#: ../../include/js_strings.php:8
+msgid "[-] show less"
+msgstr "[-] mostra menys"
+
+#: ../../include/js_strings.php:9
+msgid "[+] expand"
+msgstr "[+] expandeix"
+
+#: ../../include/js_strings.php:10
+msgid "[-] collapse"
+msgstr "[-] colapsa"
+
+#: ../../include/js_strings.php:11
+msgid "Password too short"
+msgstr "Contrasenya massa curta"
+
+#: ../../include/js_strings.php:12
+msgid "Passwords do not match"
+msgstr "Les paraules de pas no coincideixen"
+
+#: ../../include/js_strings.php:13
+msgid "everybody"
+msgstr "tothom"
+
+#: ../../include/js_strings.php:14
+msgid "Secret Passphrase"
+msgstr "Contrasenya Secreta"
+
+#: ../../include/js_strings.php:15
+msgid "Passphrase hint"
+msgstr "Pista per la Contrasenya"
+
+#: ../../include/js_strings.php:16
+msgid "Notice: Permissions have changed but have not yet been submitted."
+msgstr "Avis: Els permisos han canviat però encara no han estat enviats."
+
+#: ../../include/js_strings.php:17
+msgid "close all"
+msgstr "tanca tot"
+
+#: ../../include/js_strings.php:18
+msgid "Nothing new here"
+msgstr "Res de nou per aquí"
+
+#: ../../include/js_strings.php:19
+msgid "Rate This Channel (this is public)"
+msgstr "Valora Aquest Canal (això es farà públic)"
+
+#: ../../include/js_strings.php:21
+msgid "Describe (optional)"
+msgstr "Descriu (opcional)"
+
+#: ../../include/js_strings.php:23
+msgid "Please enter a link URL"
+msgstr "Si us plau, entra l'enllaç URL"
+
+#: ../../include/js_strings.php:24
+msgid "Unsaved changes. Are you sure you wish to leave this page?"
+msgstr "Hi ha canvis sense desar, estàs segur que vols abandonar la pàgina?"
+
+#: ../../include/js_strings.php:27
+msgid "timeago.prefixAgo"
+msgstr "timeago.prefixAgo"
+
+#: ../../include/js_strings.php:28
+msgid "timeago.prefixFromNow"
+msgstr "timeago.prefixFromNow"
+
+#: ../../include/js_strings.php:29
+msgid "ago"
+msgstr "abans"
+
+#: ../../include/js_strings.php:30
+msgid "from now"
+msgstr "des d'ara"
+
+#: ../../include/js_strings.php:31
+msgid "less than a minute"
+msgstr "menys d'un minut"
+
+#: ../../include/js_strings.php:32
+msgid "about a minute"
+msgstr "prop d'un minut"
+
+#: ../../include/js_strings.php:33
+#, php-format
+msgid "%d minutes"
+msgstr "%d minuts"
+
+#: ../../include/js_strings.php:34
+msgid "about an hour"
+msgstr "prop d'una hora"
+
+#: ../../include/js_strings.php:35
+#, php-format
+msgid "about %d hours"
+msgstr "al voltant de %d hores"
+
+#: ../../include/js_strings.php:36
+msgid "a day"
+msgstr "un dia"
+
+#: ../../include/js_strings.php:37
+#, php-format
+msgid "%d days"
+msgstr "%d dies"
+
+#: ../../include/js_strings.php:38
+msgid "about a month"
+msgstr "prop d'un mes"
+
+#: ../../include/js_strings.php:39
+#, php-format
+msgid "%d months"
+msgstr "%d mesos"
+
+#: ../../include/js_strings.php:40
+msgid "about a year"
+msgstr "prop d'un any"
+
+#: ../../include/js_strings.php:41
+#, php-format
+msgid "%d years"
+msgstr "%d anys"
+
+#: ../../include/js_strings.php:42
+msgid " "
+msgstr " "
+
+#: ../../include/js_strings.php:43
+msgid "timeago.numbers"
+msgstr "timeago.numbers"
+
+#: ../../include/js_strings.php:49
+msgctxt "long"
+msgid "May"
+msgstr "Maig"
+
+#: ../../include/js_strings.php:57
+msgid "Jan"
+msgstr "Gen"
+
+#: ../../include/js_strings.php:58
+msgid "Feb"
+msgstr "Feb"
+
+#: ../../include/js_strings.php:59
+msgid "Mar"
+msgstr "Mar"
+
+#: ../../include/js_strings.php:60
+msgid "Apr"
+msgstr "Apr"
+
+#: ../../include/js_strings.php:61
+msgctxt "short"
+msgid "May"
+msgstr "Maig"
+
+#: ../../include/js_strings.php:62
+msgid "Jun"
+msgstr "Jun"
+
+#: ../../include/js_strings.php:63
+msgid "Jul"
+msgstr "Jul"
+
+#: ../../include/js_strings.php:64
+msgid "Aug"
+msgstr "Ago"
+
+#: ../../include/js_strings.php:65
+msgid "Sep"
+msgstr "Set"
+
+#: ../../include/js_strings.php:66
+msgid "Oct"
+msgstr "Oct"
+
+#: ../../include/js_strings.php:67
+msgid "Nov"
+msgstr "Nov"
+
+#: ../../include/js_strings.php:68
+msgid "Dec"
+msgstr "Des"
+
+#: ../../include/js_strings.php:76
+msgid "Sun"
+msgstr "Dg."
+
+#: ../../include/js_strings.php:77
+msgid "Mon"
+msgstr "Dl."
+
+#: ../../include/js_strings.php:78
+msgid "Tue"
+msgstr "Dm."
+
+#: ../../include/js_strings.php:79
+msgid "Wed"
+msgstr "Dc."
+
+#: ../../include/js_strings.php:80
+msgid "Thu"
+msgstr "Dj."
+
+#: ../../include/js_strings.php:81
+msgid "Fri"
+msgstr "Dv."
+
+#: ../../include/js_strings.php:82
+msgid "Sat"
+msgstr "Ds."
+
+#: ../../include/js_strings.php:83
+msgctxt "calendar"
+msgid "today"
+msgstr "avui"
+
+#: ../../include/js_strings.php:84
+msgctxt "calendar"
+msgid "month"
+msgstr "mes"
+
+#: ../../include/js_strings.php:85
+msgctxt "calendar"
+msgid "week"
+msgstr "setmana"
+
+#: ../../include/js_strings.php:86
+msgctxt "calendar"
+msgid "day"
+msgstr "dia"
+
+#: ../../include/js_strings.php:87
+msgctxt "calendar"
+msgid "All day"
+msgstr "Tot el dia"
+
+#: ../../include/network.php:657
+msgid "view full size"
+msgstr "Veure a mida competa"
+
+#: ../../include/network.php:1885
+msgid "No Subject"
+msgstr "Sense Assumpte"
+
+#: ../../include/network.php:2146 ../../include/network.php:2147
+msgid "Friendica"
+msgstr "Friendica"
+
+#: ../../include/network.php:2148
+msgid "OStatus"
+msgstr "OStatus"
+
+#: ../../include/network.php:2149
+msgid "GNU-Social"
+msgstr "GNU-Social"
+
+#: ../../include/network.php:2150
+msgid "RSS/Atom"
+msgstr "RSS/Atom"
+
+#: ../../include/network.php:2152
+msgid "Diaspora"
+msgstr "Diaspora"
+
+#: ../../include/network.php:2153
+msgid "Facebook"
+msgstr "Facebook"
+
+#: ../../include/network.php:2154
+msgid "Zot"
+msgstr "Zot"
+
+#: ../../include/network.php:2155
+msgid "LinkedIn"
+msgstr "LinkedIn"
+
+#: ../../include/network.php:2156
+msgid "XMPP/IM"
+msgstr "XMPP/IM"
+
+#: ../../include/network.php:2157
+msgid "MySpace"
+msgstr "MySpace"
+
+#: ../../include/photos.php:110
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "La imatge excedeix la mida limit pel lloc web en %lu bytes"
+
+#: ../../include/photos.php:117
+msgid "Image file is empty."
+msgstr "El fitxer d'imatge esta buit."
+
+#: ../../include/photos.php:255
+msgid "Photo storage failed."
+msgstr "Fracassà l'emmagatzematge de la Foto"
+
+#: ../../include/photos.php:295
+msgid "a new photo"
+msgstr "Una foto nova"
+
+#: ../../include/photos.php:299
+#, php-format
+msgctxt "photo_upload"
+msgid "%1$s posted %2$s to %3$s"
+msgstr "%1$s enviat %2$s a %3$s"
+
+#: ../../include/photos.php:506
+msgid "Upload New Photos"
+msgstr "Puja Noves Fotos"
+
+#: ../../include/zot.php:699
+msgid "Invalid data packet"
+msgstr "paquet de dades invàlid"
+
+#: ../../include/zot.php:715
+msgid "Unable to verify channel signature"
+msgstr "No es pot verificar la signatura del canal"
+
+#: ../../include/zot.php:2363
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr "No es pot verificar la signatura del lloc per %s"
+
+#: ../../include/zot.php:3712
+msgid "invalid target signature"
+msgstr "Signatura objectiu invàlida"
+
+#: ../../include/page_widgets.php:6
+msgid "New Page"
+msgstr "Pàgina Nova"
+
+#: ../../include/page_widgets.php:43
+msgid "Title"
+msgstr "Títol"
+
+#: ../../include/permissions.php:26
+msgid "Can view my normal stream and posts"
+msgstr "Pot veure el flux i entrades normals"
+
+#: ../../include/permissions.php:27
+msgid "Can view my default channel profile"
+msgstr "Pot veure el meu perfil del canal per defecte"
+
+#: ../../include/permissions.php:28
+msgid "Can view my connections"
+msgstr "Pot veure les meves connexions"
+
+#: ../../include/permissions.php:29
+msgid "Can view my file storage and photos"
+msgstr "Pot veure al meu magatzem d'arxius i fotos"
+
+#: ../../include/permissions.php:30
+msgid "Can view my webpages"
+msgstr "Pot veure les meves pàgines web"
+
+#: ../../include/permissions.php:33
+msgid "Can send me their channel stream and posts"
+msgstr "Pot enviar-me el flux i entrades del seu canal"
+
+#: ../../include/permissions.php:34
+msgid "Can post on my channel page (\"wall\")"
+msgstr "Pot fer entrades a la meva pàgina de canal (\"mur\")"
+
+#: ../../include/permissions.php:35
+msgid "Can comment on or like my posts"
+msgstr "Pot fer comentaris o dir si agrada en les meves entrades"
+
+#: ../../include/permissions.php:36
+msgid "Can send me private mail messages"
+msgstr "Pot enviar-me un missatge de correu privat"
+
+#: ../../include/permissions.php:37
+msgid "Can like/dislike stuff"
+msgstr "Pot dir si agrada/desagrada "
+
+#: ../../include/permissions.php:37
+msgid "Profiles and things other than posts/comments"
+msgstr "Perfils i altres coses a més d'entrades/comentaris"
+
+#: ../../include/permissions.php:39
+msgid "Can forward to all my channel contacts via post @mentions"
+msgstr "Ho pot enviar a tots els meus contactes del canal via entrades @mencions"
+
+#: ../../include/permissions.php:39
+msgid "Advanced - useful for creating group forum channels"
+msgstr "Avançat - capaç de crear canals de grups de foro"
+
+#: ../../include/permissions.php:40
+msgid "Can chat with me (when available)"
+msgstr "Pot xatejar amb mi (si estic disponible)"
+
+#: ../../include/permissions.php:41
+msgid "Can write to my file storage and photos"
+msgstr "Pot escriure al meu magatzem d'arxius i fotos"
+
+#: ../../include/permissions.php:42
+msgid "Can edit my webpages"
+msgstr "Pot editar les meves pàgines web"
+
+#: ../../include/permissions.php:44
+msgid "Can source my public posts in derived channels"
+msgstr "Pot mostrar l'origen de les meves entrades públiques en altres canals"
+
+#: ../../include/permissions.php:44
+msgid "Somewhat advanced - very useful in open communities"
+msgstr "Quelcom avançat - molt útil en comunitats obertes"
+
+#: ../../include/permissions.php:46
+msgid "Can administer my channel resources"
+msgstr "Pot administrar els meus recursos del canal"
+
+#: ../../include/permissions.php:46
+msgid ""
+"Extremely advanced. Leave this alone unless you know what you are doing"
+msgstr "Extremadament avançat. No toquis res si no saps que estàs fent"
+
+#: ../../include/permissions.php:877
+msgid "Social Networking"
+msgstr "Xarxes Socials"
+
+#: ../../include/permissions.php:877
+msgid "Social - Mostly Public"
+msgstr "Social - Principalment Públic"
+
+#: ../../include/permissions.php:877
+msgid "Social - Restricted"
+msgstr "Social - Restingit"
+
+#: ../../include/permissions.php:877
+msgid "Social - Private"
+msgstr "Social - Privat"
+
+#: ../../include/permissions.php:878
+msgid "Community Forum"
+msgstr "Foro de Comunitat"
+
+#: ../../include/permissions.php:878
+msgid "Forum - Mostly Public"
+msgstr "Fòrum - Principalment Públic"
+
+#: ../../include/permissions.php:878
+msgid "Forum - Restricted"
+msgstr "Fòrum - Restringit"
+
+#: ../../include/permissions.php:878
+msgid "Forum - Private"
+msgstr "Fòrum - Privat"
+
+#: ../../include/permissions.php:879
+msgid "Feed Republish"
+msgstr "Republicador"
+
+#: ../../include/permissions.php:879
+msgid "Feed - Mostly Public"
+msgstr "Realimentador - Públic Principalment"
+
+#: ../../include/permissions.php:879
+msgid "Feed - Restricted"
+msgstr "Retroalimentador - Restringit"
+
+#: ../../include/permissions.php:880
+msgid "Special Purpose"
+msgstr "Objectiu Especial"
+
+#: ../../include/permissions.php:880
+msgid "Special - Celebrity/Soapbox"
+msgstr "Espacial - Celebritat/Plataforma"
+
+#: ../../include/permissions.php:880
+msgid "Special - Group Repository"
+msgstr "Especial - Repositori d'un Grup"
+
+#: ../../include/permissions.php:881
+msgid "Custom/Expert Mode"
+msgstr "Personalitzat/Manera Experta"
+
+#: ../../include/activities.php:41
+msgid " and "
+msgstr "i"
+
+#: ../../include/activities.php:49
+msgid "public profile"
+msgstr "Perfil públic"
+
+#: ../../include/activities.php:58
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s canviat %2$s a &ldquo;%3$s&rdquo;"
+
+#: ../../include/activities.php:59
+#, php-format
+msgid "Visit %1$s's %2$s"
+msgstr "Visita %1$s en %2$s"
+
+#: ../../include/activities.php:62
+#, php-format
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s Ha actualitzat %2$s, canviant %3$s."
+
+#: ../../include/bb2diaspora.php:398
+msgid "Attachments:"
+msgstr "Adjuntat:"
+
+#: ../../include/bb2diaspora.php:487
+msgid "$Projectname event notification:"
+msgstr "Notificació d'esdeveniment de $Projectname"
#: ../../view/theme/redbasic/php/config.php:82
-msgid "Light (Red Matrix default)"
-msgstr "Clar (predeterminat)"
+msgid "Focus (Hubzilla default)"
+msgstr "Focus (Hubzilla per defecte)"
#: ../../view/theme/redbasic/php/config.php:103
+msgid "Theme settings"
+msgstr "Ajustos de tema"
+
+#: ../../view/theme/redbasic/php/config.php:104
msgid "Select scheme"
msgstr "Tria esquema"
-#: ../../view/theme/redbasic/php/config.php:104
+#: ../../view/theme/redbasic/php/config.php:105
msgid "Narrow navbar"
msgstr "Barra de navegació estreta"
-#: ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:106
msgid "Navigation bar background color"
msgstr "Color de fons de la barra de navegació"
-#: ../../view/theme/redbasic/php/config.php:106
+#: ../../view/theme/redbasic/php/config.php:107
msgid "Navigation bar gradient top color"
msgstr "Gradient de color de la part superior de la barra de navegació"
-#: ../../view/theme/redbasic/php/config.php:107
+#: ../../view/theme/redbasic/php/config.php:108
msgid "Navigation bar gradient bottom color"
msgstr "Gradient de color de la part inferior de la barra de navegació"
-#: ../../view/theme/redbasic/php/config.php:108
+#: ../../view/theme/redbasic/php/config.php:109
msgid "Navigation active button gradient top color"
msgstr "Gradient de color de la part superior del botó actiu de la barra de navegació"
-#: ../../view/theme/redbasic/php/config.php:109
+#: ../../view/theme/redbasic/php/config.php:110
msgid "Navigation active button gradient bottom color"
msgstr "Gradient de color de la part inferior del botó actiu de la barra de navegació"
-#: ../../view/theme/redbasic/php/config.php:110
+#: ../../view/theme/redbasic/php/config.php:111
msgid "Navigation bar border color "
msgstr "Color de la barra de navegació"
-#: ../../view/theme/redbasic/php/config.php:111
+#: ../../view/theme/redbasic/php/config.php:112
msgid "Navigation bar icon color "
msgstr "Color de la icona de la barra de navegació"
-#: ../../view/theme/redbasic/php/config.php:112
+#: ../../view/theme/redbasic/php/config.php:113
msgid "Navigation bar active icon color "
msgstr "Color de la icona de la barra de navegació activa"
-#: ../../view/theme/redbasic/php/config.php:113
+#: ../../view/theme/redbasic/php/config.php:114
msgid "link color"
msgstr "Color d'enllaç"
-#: ../../view/theme/redbasic/php/config.php:114
+#: ../../view/theme/redbasic/php/config.php:115
msgid "Set font-color for banner"
msgstr "Ajusta el color del tipus de lletra per la senyera"
-#: ../../view/theme/redbasic/php/config.php:115
+#: ../../view/theme/redbasic/php/config.php:116
msgid "Set the background color"
msgstr "Ajusta el color de fons"
-#: ../../view/theme/redbasic/php/config.php:116
+#: ../../view/theme/redbasic/php/config.php:117
msgid "Set the background image"
msgstr "Ajusta la imatge de fons"
-#: ../../view/theme/redbasic/php/config.php:117
+#: ../../view/theme/redbasic/php/config.php:118
msgid "Set the background color of items"
msgstr "ajusta el color dels articles de fons"
-#: ../../view/theme/redbasic/php/config.php:118
+#: ../../view/theme/redbasic/php/config.php:119
msgid "Set the background color of comments"
msgstr "Ajusta el color dels comentaris en segon pla"
-#: ../../view/theme/redbasic/php/config.php:119
+#: ../../view/theme/redbasic/php/config.php:120
msgid "Set the border color of comments"
msgstr "Canviar el color del marge dels comentaris"
-#: ../../view/theme/redbasic/php/config.php:120
+#: ../../view/theme/redbasic/php/config.php:121
msgid "Set the indent for comments"
msgstr "ajusta l'indentació dels comentaris"
-#: ../../view/theme/redbasic/php/config.php:121
+#: ../../view/theme/redbasic/php/config.php:122
msgid "Set the basic color for item icons"
msgstr "ajusta el color basic per les icones dels articles"
-#: ../../view/theme/redbasic/php/config.php:122
+#: ../../view/theme/redbasic/php/config.php:123
msgid "Set the hover color for item icons"
msgstr "Ajusta el color de la libració de les icones dels articles"
-#: ../../view/theme/redbasic/php/config.php:123
+#: ../../view/theme/redbasic/php/config.php:124
msgid "Set font-size for the entire application"
msgstr "Ajusta la mida del tipus de lletra per tota l'aplicació"
-#: ../../view/theme/redbasic/php/config.php:123
+#: ../../view/theme/redbasic/php/config.php:124
msgid "Example: 14px"
msgstr "Exemple: 14px"
#: ../../view/theme/redbasic/php/config.php:125
+msgid "Set font-size for posts and comments"
+msgstr "Ajusta la mida del tipus de lletra per a entrades i comentaris"
+
+#: ../../view/theme/redbasic/php/config.php:126
msgid "Set font-color for posts and comments"
msgstr "Ajusta el color del tipus de lletra per entrades i comentaris"
-#: ../../view/theme/redbasic/php/config.php:126
+#: ../../view/theme/redbasic/php/config.php:127
msgid "Set radius of corners"
msgstr "Ajusta el radi de les cantonades"
-#: ../../view/theme/redbasic/php/config.php:127
+#: ../../view/theme/redbasic/php/config.php:128
msgid "Set shadow depth of photos"
msgstr "Ajusta la profunditat d'ombres de les fotos"
-#: ../../view/theme/redbasic/php/config.php:128
+#: ../../view/theme/redbasic/php/config.php:129
msgid "Set maximum width of content region in pixel"
msgstr "Ajusta l'amplada màxima de la zona de contingut en pixels"
-#: ../../view/theme/redbasic/php/config.php:128
+#: ../../view/theme/redbasic/php/config.php:129
msgid "Leave empty for default width"
msgstr "Deixa en blanc per l'amplada predeterminada"
-#: ../../view/theme/redbasic/php/config.php:129
-msgid "Center page content"
-msgstr "Contingut del centre de la pàgina"
-
#: ../../view/theme/redbasic/php/config.php:130
+msgid "Left align page content"
+msgstr "Alineació esquerra del contingut de la pàgina"
+
+#: ../../view/theme/redbasic/php/config.php:131
msgid "Set minimum opacity of nav bar - to hide it"
msgstr "Ajusta la opacitat mínima de la harra de navegació - per amagar-la"
-#: ../../view/theme/redbasic/php/config.php:131
+#: ../../view/theme/redbasic/php/config.php:132
msgid "Set size of conversation author photo"
msgstr "Ajusta la mida de la foto del autor a la conversa"
-#: ../../view/theme/redbasic/php/config.php:132
+#: ../../view/theme/redbasic/php/config.php:133
msgid "Set size of followup author photos"
msgstr "Ajusta la mida del seguidor de les fotos de l'autor"
-#: ../../boot.php:1356
+#: ../../boot.php:1162
+#, php-format
+msgctxt "opensearch"
+msgid "Search %1$s (%2$s)"
+msgstr "Cerca %1$s(%2$s)"
+
+#: ../../boot.php:1162
+msgctxt "opensearch"
+msgid "$Projectname"
+msgstr "$Projectname"
+
+#: ../../boot.php:1480
#, php-format
msgid "Update %s failed. See error logs."
msgstr "L'actualització %s ha fallat. Mira el registre d'errors."
-#: ../../boot.php:1359
+#: ../../boot.php:1483
#, php-format
msgid "Update Error at %s"
msgstr "Error d'Actualització a %s"
-#: ../../boot.php:1526
+#: ../../boot.php:1684
msgid ""
-"Create an account to access services and applications within the Red Matrix"
-msgstr "Crea un compte per accedir als serveis i aplicacions dins de RedMatrix"
+"Create an account to access services and applications within the Hubzilla"
+msgstr "Crea un compte per accedir als serveis i aplicacions dins de Hubzilla"
-#: ../../boot.php:1554
+#: ../../boot.php:1706
msgid "Password"
msgstr "Contrasenya"
-#: ../../boot.php:1555
+#: ../../boot.php:1707
msgid "Remember me"
msgstr "Recorda'm"
-#: ../../boot.php:1558
+#: ../../boot.php:1710
msgid "Forgot your password?"
msgstr "Has perdut la Contrasenya?"
-#: ../../boot.php:2178
+#: ../../boot.php:2276
msgid "toggle mobile"
msgstr "canvia a format per a mòbils"
-#: ../../boot.php:2313
+#: ../../boot.php:2425
msgid "Website SSL certificate is not valid. Please correct."
msgstr "El certificat SSL és invalid, soluciona-ho, si us plau."
-#: ../../boot.php:2316
+#: ../../boot.php:2428
#, php-format
-msgid "[red] Website SSL error for %s"
-msgstr "[red] Error de SSL per la web %s"
+msgid "[hubzilla] Website SSL error for %s"
+msgstr "[hubzilla] Error de SSL per la web %s"
-#: ../../boot.php:2353
+#: ../../boot.php:2469
msgid "Cron/Scheduled tasks not running."
-msgstr "No s'estan executan les tasques programades al cron."
+msgstr "No s'estan executant les tasques programades al cron."
-#: ../../boot.php:2357
+#: ../../boot.php:2473
#, php-format
-msgid "[red] Cron tasks not running on %s"
-msgstr "[red] No s'estan executan les tasques programades del cron a %s"
+msgid "[hubzilla] Cron tasks not running on %s"
+msgstr "[hubzilla] Les tasques de Cron no rulen a %s"
diff --git a/view/ca/hstrings.php b/view/ca/hstrings.php
index c263bafba..7470f8c84 100644
--- a/view/ca/hstrings.php
+++ b/view/ca/hstrings.php
@@ -5,935 +5,166 @@ function string_plural_select_ca($n){
return ($n != 1);;
}}
;
-App::$strings["Cannot locate DNS info for database server '%s'"] = "No s'ha trobat informació de DNS pel servidor de base de dades '%s'";
-App::$strings["Profile Photos"] = "Fotos del Perfil";
-App::$strings["Edit"] = "Edita";
-App::$strings["Frequently"] = "Freqüentment";
-App::$strings["Hourly"] = "Horariament";
-App::$strings["Twice daily"] = "Dos vegades al dia";
-App::$strings["Daily"] = "Diariament";
-App::$strings["Weekly"] = "Setmanalment";
-App::$strings["Monthly"] = "Mensualment";
-App::$strings["Friendica"] = "Friendica";
-App::$strings["OStatus"] = "OStatus";
-App::$strings["RSS/Atom"] = "RSS/Atom";
-App::$strings["Email"] = "Correu electrónic";
-App::$strings["Diaspora"] = "Diaspora";
-App::$strings["Facebook"] = "Facebook";
-App::$strings["Zot!"] = "Zot!";
-App::$strings["LinkedIn"] = "LinkedIn";
-App::$strings["XMPP/IM"] = "XMPP/IM";
-App::$strings["MySpace"] = "MySpace";
-App::$strings["created a new post"] = "Creada una nova entrada";
-App::$strings["commented on %s's post"] = "comentat a l'entrada de %s";
-App::$strings["No username found in import file."] = "No s'ha trobat nom d'usuari a l'arxiu d'importació.";
-App::$strings["Unable to create a unique channel address. Import failed."] = "No s'ha pogut importar el canal perquè l'adreça única de canal no s'ha pogut crear.";
-App::$strings["Import completed."] = "S'ha completat la importació.";
-App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un grup esborrat amb aquest nom fou reviscolat. Els permisos dels items existents <strong>poden</strong> aplicar-se a aquest grup i qualsevol membre futur. Si no es això el que vols, si et plau, crea un altre grup amb un nom diferent.";
-App::$strings["Default privacy group for new contacts"] = "Privacitat de grup predeterminada per a contactes nous";
-App::$strings["All Channels"] = "Tots els Canals";
-App::$strings["edit"] = "edita";
-App::$strings["Collections"] = "Col·leccions";
-App::$strings["Edit collection"] = "Edita col·leccions";
-App::$strings["Add new collection"] = "Afegeix una nova col·lecció";
-App::$strings["Channels not in any collection"] = "Canals a cap col·lecció";
-App::$strings["add"] = "afegeix";
-App::$strings["Not a valid email address"] = "Adreça de correu electrònic no vàlida";
-App::$strings["Your email domain is not among those allowed on this site"] = "El seu domini de correu electrònic no es troba entre els permesos en aquest lloc";
-App::$strings["Your email address is already registered at this site."] = "La teva adreça de correu electrònic ja esta registrada en aquest lloc";
-App::$strings["An invitation is required."] = "Es requereix Invitació";
-App::$strings["Invitation could not be verified."] = "L'invitació no ha pogut ser verificada";
-App::$strings["Please enter the required information."] = "Entra la informació sol·licitada";
-App::$strings["Failed to store account information."] = "Ha fallat guardar la informació del compte";
-App::$strings["Registration confirmation for %s"] = "Registre confirmat per %s";
-App::$strings["Registration request at %s"] = "Sol·licitud de registre a %s";
-App::$strings["Administrator"] = "Administrador";
-App::$strings["your registration password"] = "la teva contrasenya registrada";
-App::$strings["Registration details for %s"] = "Detalls del registre per %s";
-App::$strings["Account approved."] = "Compte aprovat.";
-App::$strings["Registration revoked for %s"] = "Registre revocat per %s";
-App::$strings["Account verified. Please login."] = "Compte verificat. Si us plau, inicia sessió.";
-App::$strings["Click here to upgrade."] = "Feu clic aquí per actualitzar.";
-App::$strings["This action exceeds the limits set by your subscription plan."] = "Aquesta acció és superior als límits establerts pel seu pla de subscripció.";
-App::$strings["This action is not available under your subscription plan."] = "Aquesta acció no està disponible en el seu pla de subscripció.";
-App::$strings["Miscellaneous"] = "Miscelania";
-App::$strings["YYYY-MM-DD or MM-DD"] = "YYYY-MM-DD o MM-DD";
-App::$strings["Required"] = "Requerit";
-App::$strings["never"] = "mai";
-App::$strings["less than a second ago"] = "fa menys d'un segon";
-App::$strings["year"] = "any";
-App::$strings["years"] = "anys";
-App::$strings["month"] = "mes";
-App::$strings["months"] = "mesos";
-App::$strings["week"] = "setmana";
-App::$strings["weeks"] = "setmanes";
-App::$strings["day"] = "dia";
-App::$strings["days"] = "dies";
-App::$strings["hour"] = "hora";
-App::$strings["hours"] = "hores";
-App::$strings["minute"] = "minut";
-App::$strings["minutes"] = "minuts";
-App::$strings["second"] = "segon";
-App::$strings["seconds"] = "segons";
-App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "Fa %1\$d i %2\$s";
-App::$strings["%1\$s's birthday"] = "Aniversari de %1\$s";
-App::$strings["Happy Birthday %1\$s"] = "Feliç Aniversari %1\$s";
-App::$strings["Directory Options"] = "Opcions de Directori";
-App::$strings["Safe Mode"] = "Mode Segur";
-App::$strings["No"] = "No";
-App::$strings["Yes"] = "Sí";
-App::$strings["Public Forums Only"] = "Només Fòrums Públics";
-App::$strings["This Website Only"] = "Només Aquest Lloc Web";
-App::$strings["New Page"] = "Pàgina Nova";
-App::$strings["View"] = "Mostra";
-App::$strings["Preview"] = "Avanç";
-App::$strings["Actions"] = "Accions";
-App::$strings["Page Link"] = "Enllaç a Pàgina";
-App::$strings["Title"] = "Títol";
-App::$strings["Created"] = "Creat";
-App::$strings["Edited"] = "Editat";
-App::$strings["Public Timeline"] = "Línia de Temps Pública";
-App::$strings["Default"] = "Predeterminat";
-App::$strings["Delete this item?"] = "Esborrar aquest item?";
-App::$strings["Comment"] = "Comentari";
-App::$strings["[+] show all"] = "[+] mostra tot";
-App::$strings["[-] show less"] = "[-] mostra menys";
-App::$strings["[+] expand"] = "[+] expandeix";
-App::$strings["[-] collapse"] = "[-] colapsa";
-App::$strings["Password too short"] = "Contrasenya massa curta";
-App::$strings["Passwords do not match"] = "Les paraules de pas no coincideixen";
-App::$strings["everybody"] = "tothom";
-App::$strings["Secret Passphrase"] = "Contrasenya Secreta";
-App::$strings["Passphrase hint"] = "Pista per la Contrasenya";
-App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Avis: Els permisos han canviat però encara no han estat enviats.";
-App::$strings["close all"] = "tanca tot";
-App::$strings["Nothing new here"] = "Res de nou per aquí";
-App::$strings["Rate This Channel (this is public)"] = "Valora Aquest Canal (això es farà públic)";
-App::$strings["Rating"] = "Valora";
-App::$strings["Describe (optional)"] = "Descriu (opcional)";
-App::$strings["Submit"] = "Presenta";
-App::$strings["Please enter a link URL"] = "Si us plau, entra l'enllaç URL";
-App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Hi ha canvis sense desar, estàs segur que vols abandonar la pàgina?";
-App::$strings["timeago.prefixAgo"] = "horapasada.prefixFa";
-App::$strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
-App::$strings["ago"] = "fa";
-App::$strings["from now"] = "des d'ara";
-App::$strings["less than a minute"] = "menys d'un minut";
-App::$strings["about a minute"] = "prop d'un minut";
-App::$strings["%d minutes"] = "%d minuts";
-App::$strings["about an hour"] = "prop d'una hora";
-App::$strings["about %d hours"] = "al voltant de %d hores";
-App::$strings["a day"] = "un dia";
-App::$strings["%d days"] = "%d dies";
-App::$strings["about a month"] = "prop d'un mes";
-App::$strings["%d months"] = "%d mesos";
-App::$strings["about a year"] = "prop d'un any";
-App::$strings["%d years"] = "%d anys";
-App::$strings[" "] = " ";
-App::$strings["timeago.numbers"] = "timeago.numbers";
-App::$strings["prev"] = "prev";
-App::$strings["first"] = "primer";
-App::$strings["last"] = "últim";
-App::$strings["next"] = "pròxim";
-App::$strings["older"] = "el més antic";
-App::$strings["newer"] = "El més nou";
-App::$strings["No connections"] = "Sense Connexions";
-App::$strings["%d Connection"] = array(
- 0 => "%d Connexió",
- 1 => "%d Connexions",
-);
-App::$strings["View Connections"] = "Veure Connexions";
-App::$strings["Search"] = "Cerca";
-App::$strings["Save"] = "Guardar";
-App::$strings["poke"] = "emprenya";
-App::$strings["poked"] = "emprenyat";
-App::$strings["ping"] = "coloca";
-App::$strings["pinged"] = "colocat";
-App::$strings["prod"] = "picar";
-App::$strings["prodded"] = "picat";
-App::$strings["slap"] = "bufetada";
-App::$strings["slapped"] = "bufetejat";
-App::$strings["finger"] = "senyal";
-App::$strings["fingered"] = "senyalat";
-App::$strings["rebuff"] = "menyspreu";
-App::$strings["rebuffed"] = "menyspreuat";
-App::$strings["happy"] = "feliç";
-App::$strings["sad"] = "trist";
-App::$strings["mellow"] = "melós";
-App::$strings["tired"] = "cansat";
-App::$strings["perky"] = "turgent";
-App::$strings["angry"] = "enfadat";
-App::$strings["stupified"] = "encantat";
-App::$strings["puzzled"] = "perplexe";
-App::$strings["interested"] = "Interessat";
-App::$strings["bitter"] = "amargat";
-App::$strings["cheerful"] = "feliç";
-App::$strings["alive"] = "viu";
-App::$strings["annoyed"] = "molest";
-App::$strings["anxious"] = "ansiós";
-App::$strings["cranky"] = "malagaitós";
-App::$strings["disturbed"] = "transtornat";
-App::$strings["frustrated"] = "frustrat";
-App::$strings["depressed"] = "deprimit";
-App::$strings["motivated"] = "motivat";
-App::$strings["relaxed"] = "relaxat";
-App::$strings["surprised"] = "sorprès";
-App::$strings["Monday"] = "Dilluns";
-App::$strings["Tuesday"] = "Dimarts";
-App::$strings["Wednesday"] = "Dimecres";
-App::$strings["Thursday"] = "Dijous";
-App::$strings["Friday"] = "Divendres";
-App::$strings["Saturday"] = "Dissabte";
-App::$strings["Sunday"] = "Diumenge";
-App::$strings["January"] = "Gener";
-App::$strings["February"] = "Febrer";
-App::$strings["March"] = "Març";
-App::$strings["April"] = "Abril";
-App::$strings["May"] = "Maig";
-App::$strings["June"] = "Juny";
-App::$strings["July"] = "Juliol";
-App::$strings["August"] = "Agost";
-App::$strings["September"] = "Setembre";
-App::$strings["October"] = "Octubre";
-App::$strings["November"] = "Novembre";
-App::$strings["December"] = "Desembre";
-App::$strings["unknown.???"] = "desconegut.???";
-App::$strings["bytes"] = "bytes";
-App::$strings["remove category"] = "elimina categoria";
-App::$strings["remove from file"] = "elimina del arxiu";
-App::$strings["Click to open/close"] = "Clic per obrir/tancar";
-App::$strings["Link to Source"] = "Enllaç a la Font";
-App::$strings["default"] = "per defecte";
-App::$strings["Page layout"] = "Format de la pàgina";
-App::$strings["You can create your own with the layouts tool"] = "Pots crear el teu propi amb l'editor de format de pàgina.";
-App::$strings["Page content type"] = "Tipus de contingut de la pàgina";
-App::$strings["Select an alternate language"] = "Tria un idioma alternatiu";
-App::$strings["photo"] = "foto";
-App::$strings["event"] = "succés";
-App::$strings["status"] = "estat";
-App::$strings["comment"] = "comentari";
-App::$strings["activity"] = "activitat";
-App::$strings["Design Tools"] = "Eines de disseny";
-App::$strings["Blocks"] = "Bloc";
-App::$strings["Menus"] = "Menús";
-App::$strings["Layouts"] = "Format Gràfic";
-App::$strings["Pages"] = "Pàgines";
-App::$strings["Collection"] = "Col·lecció";
App::$strings["parent"] = "pare";
+App::$strings["Collection"] = "Col·lecció";
App::$strings["Principal"] = "Principal";
App::$strings["Addressbook"] = "Llista d'Adreçes";
App::$strings["Calendar"] = "Calendari";
App::$strings["Schedule Inbox"] = "Programació de la bústia d'entrada";
App::$strings["Schedule Outbox"] = "Programació de la bústia de sortida";
App::$strings["Unknown"] = "Desconegut";
-App::$strings["%1\$s used"] = "%1\$s emprat";
-App::$strings["%1\$s used of %2\$s (%3\$s&#37;)"] = "%1\$s emprat de %2\$s (%3\$s&#37;)";
App::$strings["Files"] = "Arxius";
App::$strings["Total"] = "Total";
App::$strings["Shared"] = "Compartit";
-App::$strings["Create"] = "Creada";
+App::$strings["Create"] = "Crear";
App::$strings["Upload"] = "Pujar";
App::$strings["Name"] = "Nom";
App::$strings["Type"] = "Tipus";
App::$strings["Size"] = "Mida";
App::$strings["Last Modified"] = "Últim Modificat";
+App::$strings["Edit"] = "Edita";
App::$strings["Delete"] = "Esborra";
+App::$strings["You are using %1\$s of your available file storage."] = "Estàs emprant el %1\$s de l'espai d'emmagatzematge disponible";
+App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s&#37;)"] = "Estàs emprant %1\$s de %2\$s d'emmagatzematge d'arxius disponible.\n(%3\$s&#37;)";
+App::$strings["WARNING:"] = "ALERTA:";
App::$strings["Create new folder"] = "Crea una nova carpeta";
App::$strings["Upload file"] = "Puja arxiu";
-App::$strings["%1\$s's bookmarks"] = "%1\$s de marcadors";
-App::$strings["view full size"] = "Veure a mida competa";
-App::$strings["\$Projectname Notification"] = "Notificació de \$Projectname";
-App::$strings["\$projectname"] = "\$projectname";
-App::$strings["Thank You,"] = "Gràcies,";
-App::$strings["%s Administrator"] = "%s Administrador";
-App::$strings["No Subject"] = "Sense Assumpte";
-App::$strings["General Features"] = "Característiques Generals";
-App::$strings["Content Expiration"] = "Expiració del Contingut";
-App::$strings["Remove posts/comments and/or private messages at a future time"] = "elimina entrades/comentaris i/o missatges privats de aquí en endevant.";
-App::$strings["Multiple Profiles"] = "Multiples Perfils";
-App::$strings["Ability to create multiple profiles"] = "Capacitat per crear multiples perfils";
-App::$strings["Advanced Profiles"] = "Perfils Avançats";
-App::$strings["Additional profile sections and selections"] = "Seccions i seleccions addicionals de perfils ";
-App::$strings["Profile Import/Export"] = "Importar/Exportar Perfil";
-App::$strings["Save and load profile details across sites/channels"] = "Guarda i carrega els detalls del perfil al llarg dels llocs/canals";
-App::$strings["Web Pages"] = "Pàgines Web";
-App::$strings["Provide managed web pages on your channel"] = "Proporcionar pàgines web gestionades al seu canal";
-App::$strings["Private Notes"] = "Notes Privades";
-App::$strings["Enables a tool to store notes and reminders"] = "Activa l'eina per guardar notes i recordatoris";
-App::$strings["Navigation Channel Select"] = "Navegació pel Selector de Canals";
-App::$strings["Change channels directly from within the navigation dropdown menu"] = "Canvieu els canals directament des del menú desplegable de navegació";
-App::$strings["Photo Location"] = "Ubicació de la Photo";
-App::$strings["If location data is available on uploaded photos, link this to a map."] = "Si los datos de ubicación están disponibles en las fotos subidas, vincular a un mapa.";
-App::$strings["Expert Mode"] = "Mode Expert";
-App::$strings["Enable Expert Mode to provide advanced configuration options"] = "Activar Mode Expert per a proporcionar opcions avançades de configuració";
-App::$strings["Premium Channel"] = "Canal Superior";
-App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Li permet establir restriccions i els termes en els quals es connecten amb el seu canal";
-App::$strings["Post Composition Features"] = "Característiques de Composició d'Entrades";
-App::$strings["Use Markdown"] = "Us d'Abreviatures";
-App::$strings["Allow use of \"Markdown\" to format posts"] = "Permet emprat \"Abreviatures\" per formatar entrades";
-App::$strings["Large Photos"] = "Grans Fotos";
-App::$strings["Include large (640px) photo thumbnails in posts. If not enabled, use small (320px) photo thumbnails"] = "Inclou gran (640px) foto de miniatura a les entrades. Si no està activat, empra petita (320px) foto de miniatura.";
-App::$strings["Channel Sources"] = "Canal Origen";
-App::$strings["Automatically import channel content from other channels or feeds"] = "Importa automàticament el contingut del canal des de altres canals o feeds";
-App::$strings["Even More Encryption"] = "Encara Més Encriptació";
-App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Permet l'encripció opcional del contingut extrem-a-extrem amb clau secreta compartida";
-App::$strings["Enable voting tools"] = "Habilitar eines de vot";
-App::$strings["Provide a class of post which others can vote on"] = "Proporcionar una classe d'entrada que altres puguin votar";
-App::$strings["Network and Stream Filtering"] = "Filtrat de Xarxa i Flux";
-App::$strings["Search by Date"] = "Cerca per Data";
-App::$strings["Ability to select posts by date ranges"] = "Capacitat per seleccionar entrades per rang de dates";
-App::$strings["Collections Filter"] = "Filtre de Col·leccions";
-App::$strings["Enable widget to display Network posts only from selected collections"] = "Habilitar giny per mostrar les entrades de xarxa únicament de les col·leccions seleccionades";
-App::$strings["Saved Searches"] = "Cerques Guardades";
-App::$strings["Save search terms for re-use"] = "Guardar els termin de la cerca per a re-usar";
-App::$strings["Network Personal Tab"] = "Pestanya Personal de Xarxa";
-App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Activa pestanya per mostrar només les entrades de xarxa en els que has intervingut";
-App::$strings["Network New Tab"] = "Nova Pestanya de Xarxa";
-App::$strings["Enable tab to display all new Network activity"] = "Activa pestanya per mostrar tota l'activitat nova de la Xarxa";
-App::$strings["Affinity Tool"] = "Eina d'Afinitat";
-App::$strings["Filter stream activity by depth of relationships"] = "Filtre d'activitat del flux per importància de la relació";
-App::$strings["Connection Filtering"] = "Filtre de Connexió";
-App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filtre de missatges d'entrada de conexions, basat en paraules clau/contingut ";
-App::$strings["Suggest Channels"] = "Suggerir Canals";
-App::$strings["Show channel suggestions"] = "Mostra suggerencies de canals";
-App::$strings["Post/Comment Tools"] = "Eina d'Entrades/Comentaris";
-App::$strings["Tagging"] = "Etiquetant";
-App::$strings["Ability to tag existing posts"] = "Capacitat d'etiquetar entrades existents";
-App::$strings["Post Categories"] = "Categories d'Entrades";
-App::$strings["Add categories to your posts"] = "Afegeix categoria a la teva entrada";
-App::$strings["Saved Folders"] = "Carpetes Guardades";
-App::$strings["Ability to file posts under folders"] = "Capacitat de arxivar entrades en les carpetes";
-App::$strings["Dislike Posts"] = "No Agrada l'Entrada";
-App::$strings["Ability to dislike posts/comments"] = "Capacitat per marcar amb \"No Agrada\" les entrades/comentaris";
-App::$strings["Star Posts"] = "Entrades Excel·lents";
-App::$strings["Ability to mark special posts with a star indicator"] = "Capacitat per marcar entrades especials amb l'indicador d'excel·lencia";
-App::$strings["Tag Cloud"] = "Núvol d'Etiquetes.";
-App::$strings["Provide a personal tag cloud on your channel page"] = "Proporcionar un núvol d'etiquetes personals a la teva pàgina de canal";
-App::$strings["Categories"] = "Categories";
-App::$strings["Apps"] = "Aplicatius";
-App::$strings["System"] = "Sistema";
-App::$strings["Personal"] = "Personal";
-App::$strings["Create Personal App"] = "Crear Personal App";
-App::$strings["Edit Personal App"] = "Editar Personal App";
-App::$strings["Connect"] = "Connecta ";
-App::$strings["Ignore/Hide"] = "Ignora/Amaga";
-App::$strings["Suggestions"] = "Suggerencies";
-App::$strings["See more..."] = "Veure més.....";
-App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Tens %1$.0f de %2$.0f connexions permeses.";
-App::$strings["Add New Connection"] = "Afegeix una Nova Connexió";
-App::$strings["Enter the channel address"] = "Introdueix la adreça del canal";
-App::$strings["Example: bob@example.com, http://example.com/barbara"] = "Exemple: pep@exemple.com, http://exemple.com/vinyet";
-App::$strings["Notes"] = "Notes";
-App::$strings["Remove term"] = "Plaç de remoció";
-App::$strings["Everything"] = "Tot";
-App::$strings["Archives"] = "Arxius";
+App::$strings["Permission denied"] = "Permís denegat";
+App::$strings["Permission denied."] = "Permís denegat.";
+App::$strings["Not Found"] = "No s'ha pogut trobar la pàgina";
+App::$strings["Page not found."] = "Pàgina no trobada.";
+App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Autenticació remota bloquejada. Ha iniciat sessió en aquest lloc a nivell local. Si us plau, tanca la sessió i torna-ho a intentar.";
+App::$strings["Welcome %s. Remote authentication successful."] = "Benvingut %s. Autenticació remota reeixida.";
+App::$strings["Requested profile is not available."] = "El perfil demanat no està disponible.";
+App::$strings["Some blurb about what to do when you're new here"] = "Algunes propostes sobre el que cal fer quan ets nou aquí";
+App::$strings["Block Name"] = "Nom del Bloc";
+App::$strings["Blocks"] = "Bloc";
+App::$strings["Block Title"] = "Títol del bloc";
+App::$strings["Created"] = "Creat";
+App::$strings["Edited"] = "Editat";
+App::$strings["Share"] = "Compartir";
+App::$strings["View"] = "Mostra";
+App::$strings["Channel not found."] = "Canal no trobat.";
+App::$strings["Permissions denied."] = "Permís denegat.";
+App::$strings["l, F j"] = "l, F j";
+App::$strings["Link to Source"] = "Enllaç a la Font";
+App::$strings["Edit Event"] = "Editar l'Esdeveniment";
+App::$strings["Create Event"] = "Crear Esdeveniment";
+App::$strings["Previous"] = "Anterior";
+App::$strings["Next"] = "Pròxim";
+App::$strings["Export"] = "Exporta";
+App::$strings["Import"] = "Importar";
+App::$strings["Submit"] = "Enviar";
+App::$strings["Today"] = "Avui";
+App::$strings["You must be logged in to see this page."] = "Has d'estar identificat per a veure aquesta pàgina.";
+App::$strings["Posts and comments"] = "Entrades i comentaris";
+App::$strings["Only posts"] = "Només entrades";
+App::$strings["Insufficient permissions. Request redirected to profile page."] = "Permisos insuficients. Petició redirigida a la pàgina del perfil.";
+App::$strings["Room not found"] = "No s'ha trobat la sala";
+App::$strings["Leave Room"] = "Abandona la sala";
+App::$strings["Delete Room"] = "Esborra Sala";
+App::$strings["I am away right now"] = "Absent";
+App::$strings["I am online"] = "Estic connectat/da";
+App::$strings["Bookmark this room"] = "Fes favorit aquest xat";
+App::$strings["Please enter a link URL:"] = "Si us plau entra l'enllaç URL:";
+App::$strings["Encrypt text"] = "Text encriptat";
+App::$strings["Insert web link"] = "Insereix enllaç web";
+App::$strings["Feature disabled."] = "Funcionalitat desactivada.";
+App::$strings["New Chatroom"] = "Nova sala per a Xerrar";
+App::$strings["Chatroom name"] = "Nom de la sala de xat";
+App::$strings["Expiration of chats (minutes)"] = "Expiració dels chats (minuts)";
+App::$strings["Permissions"] = "Permisos ";
+App::$strings["%1\$s's Chatrooms"] = "%1\$s de Xats";
+App::$strings["No chatrooms available"] = "No hi ha sales de xat disponibles";
+App::$strings["Create New"] = "Crear Nou";
+App::$strings["Expiration"] = "Expiració";
+App::$strings["min"] = "min";
+App::$strings["Away"] = "Absent";
+App::$strings["Online"] = "En connexió";
+App::$strings["Invalid item."] = "Article invàlid.";
+App::$strings["Bookmark added"] = "Favorit afegit";
+App::$strings["My Bookmarks"] = "Els Meus Favorits";
+App::$strings["My Connections Bookmarks"] = "Les connexions dels meus Favorits";
+App::$strings["Continue"] = "Continua";
+App::$strings["Premium Channel Setup"] = "Configuració de Canals Premium";
+App::$strings["Enable premium channel connection restrictions"] = "Habilita les restriccions de connexió del canal premium";
+App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Si us plau, introdueixi les restriccions o condicions, com ara el rebut de PayPal, les pautes d'ús, etc.";
+App::$strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Aquest canal pot requerir passos addicionals o reconeixement de les següents condicions abans de connectar:";
+App::$strings["Potential connections will then see the following text before proceeding:"] = "Connexions potencials veuran el següent text abans de continuar:";
+App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "En continuar, certifico que he complert amb totes les instruccions proporcionades en aquesta pàgina.";
+App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(No s'han proporcionat instruccions específiques pel propietari del canal.)";
+App::$strings["Restricted or Premium Channel"] = "Canal Restringit o Premium";
+App::$strings["Could not access contact record."] = "No s'ha pogut accedir al llibre de contactes.";
+App::$strings["Could not locate selected profile."] = "No s'ha trobat el perfil indicat.";
+App::$strings["Connection updated."] = "S'ha actualitzat la connexió.";
+App::$strings["Failed to update connection record."] = "No s'ha pogut actualitzar el registre de connexió.";
+App::$strings["is now connected to"] = "Ara està conectat amb";
+App::$strings["No"] = "No";
+App::$strings["Yes"] = "Sí";
+App::$strings["Could not access address book record."] = "No puc accedir al registre del contacte";
+App::$strings["Refresh failed - channel is currently unavailable."] = "Ha fallat la recàrrega - el canal es actualment inaccesible.";
+App::$strings["Unable to set address book parameters."] = "No es poden ajustar els paràmetres dels contactes.";
+App::$strings["Connection has been removed."] = "S'han eliminat les conexions.";
+App::$strings["View Profile"] = "Veure Perfil";
+App::$strings["View %s's profile"] = "Mostra el perfil de %s";
+App::$strings["Refresh Permissions"] = "Recarrega els Permissos";
+App::$strings["Fetch updated permissions"] = "Obté els permisos actualitzats";
+App::$strings["Recent Activity"] = "Activitat Recent";
+App::$strings["View recent posts and comments"] = "Mostra les entrades i comentaris recents";
+App::$strings["Unblock"] = "Desbloquejat";
+App::$strings["Block"] = "Bloquejat";
+App::$strings["Block (or Unblock) all communications with this connection"] = "Boqueja (o Desbloqueja) les comunicacions amb aquesta connexió";
+App::$strings["This connection is blocked!"] = "Aquesta connexió està bloquejada!";
+App::$strings["Unignore"] = "Inhabilita";
+App::$strings["Ignore"] = "Ignora";
+App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Ignora (o Considera) les communicacions entrants d'aquesta connexió";
+App::$strings["This connection is ignored!"] = "Aquesta connexió es ignorada!";
+App::$strings["Unarchive"] = "Desarxiva";
+App::$strings["Archive"] = "Arxiva";
+App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Arxiva (o Desarxiva) aquesta connexió - Marca el canal com a mort pero manté el contingut ";
+App::$strings["This connection is archived!"] = "Aquesta connexió està arxivada!";
+App::$strings["Unhide"] = "Mostra";
+App::$strings["Hide"] = "Amaga";
+App::$strings["Hide or Unhide this connection from your other connections"] = "Amaga (o Mostra) aquesta connexió de les altres connexions teves";
+App::$strings["This connection is hidden!"] = "Aquesta connexió està amagada!";
+App::$strings["Delete this connection"] = "Elimina aquesta connexió";
App::$strings["Me"] = "Jo";
App::$strings["Family"] = "Família";
App::$strings["Friends"] = "Amics";
App::$strings["Acquaintances"] = "Coneguts";
App::$strings["All"] = "Tots";
-App::$strings["Refresh"] = "Refresc";
-App::$strings["Account settings"] = "Ajustos de Compte";
-App::$strings["Channel settings"] = "Ajustos de Canal";
-App::$strings["Additional features"] = "Característiques addicionals";
-App::$strings["Feature/Addon settings"] = "Ajustos de Característica/Afegit";
-App::$strings["Display settings"] = "Ajustos de pantalla";
-App::$strings["Connected apps"] = "Apps connectades";
-App::$strings["Export channel"] = "Exportat canal";
+App::$strings["Approve this connection"] = "Apccepta aquesta connexió";
+App::$strings["Accept connection to allow communication"] = "Accepta la connexió per permetre la comunicació";
+App::$strings["Set Affinity"] = "Ajusta l'Afinitat";
+App::$strings["Set Profile"] = "Ajusta el Perfil";
+App::$strings["Set Affinity & Profile"] = "Ajusta Afinitat i Perfil";
+App::$strings["none"] = "res";
App::$strings["Connection Default Permissions"] = "Permisos per Defecte de la Connexió";
-App::$strings["Premium Channel Settings"] = "Ajustos Premium de Canal";
-App::$strings["Settings"] = "Ajustos";
-App::$strings["Messages"] = "Missatges";
-App::$strings["Check Mail"] = "Comprovar Correu";
-App::$strings["New Message"] = "Nou Missatge";
-App::$strings["Chat Rooms"] = "Sales de Xat";
-App::$strings["Bookmarked Chatrooms"] = "Sales de Xat Favorites";
-App::$strings["Suggested Chatrooms"] = "Sales de Xat Suggerides";
-App::$strings["photo/image"] = "foto/imatge";
-App::$strings["Rate Me"] = "Valora'm";
-App::$strings["View Ratings"] = "Veure Valoracions";
-App::$strings["Public Hubs"] = "Concentradors Públics";
-App::$strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
-App::$strings["Starts:"] = "Inicia:";
-App::$strings["Finishes:"] = "Acaba:";
-App::$strings["Location:"] = "Localització:";
-App::$strings["This event has been added to your calendar."] = "Aquest succés ha estat afegit al teu calendari.";
-App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
-App::$strings["[Red:Notify] New mail received at %s"] = "[Red:Notificació] Un nou missatge s'ha rebut a %s";
-App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s t'ha enviat un nou missatge privat a %3\$s.";
-App::$strings["%1\$s sent you %2\$s."] = "%1\$s t'ha enviat %2\$s.";
-App::$strings["a private message"] = "un missatge privat";
-App::$strings["Please visit %s to view and/or reply to your private messages."] = "Per favor, visita %s per a veure i/o respondre els teus missatges privats.";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s comentat en [zrl=%3\$s]a %4\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s comentat en [zrl=%3\$s]%4\$s de %5\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s comentat en [zrl=%3\$s]el teu %4\$s[/zrl]";
-App::$strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red:Notify] Comentari a la conversa #%1\$d per %2\$s";
-App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s comentat en un article/conversa que havies estat seguint.";
-App::$strings["Please visit %s to view and/or reply to the conversation."] = "Si us plau visita %s per veure i/o contestar a la conversa";
-App::$strings["[Red:Notify] %s posted to your profile wall"] = "[Red:Avís] %s ha escrit una entrada al teu mur";
-App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s ha escrit una entrada al teu mur en %3\$s";
-App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s enviat correu a [zrl=%3\$s]el teu mur[/zrl]";
-App::$strings["[Red:Notify] %s tagged you"] = "[Red:Notificació] %s t'ha etiquetat";
-App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s t'ha etiquetat a %3\$s";
-App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]t'ha etiquetat[/zrl].";
-App::$strings["[Red:Notify] %1\$s poked you"] = "[Red:Avís] %1\$s s'en fot de tu";
-App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s s'en fot de tú a %3\$s";
-App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]s'en fot de tú[/zrl].";
-App::$strings["[Red:Notify] %s tagged your post"] = "[Red:Avís] %s ha etiquetat la teva entrada";
-App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s ha etiquetat la teva entrada a %3\$s";
-App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s etiquetat [zrl=%3\$s]la teva entrada[/zrl]";
-App::$strings["[Red:Notify] Introduction received"] = "[Red:Avís] Presentació rebuda";
-App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, has rebut una nova petició de connexió de '%2\$s' a %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, has rebut [zrl=%2\$s]una nova petició de connexió[/zrl] de %3\$s.";
-App::$strings["You may visit their profile at %s"] = "Pots visitar el seu perfil a %s";
-App::$strings["Please visit %s to approve or reject the connection request."] = "Si us plau, visita %s per aprovar o rebutjar la petició de connexió.";
-App::$strings["[Red:Notify] Friend suggestion received"] = "[Red:Notificació] Rebuda suggerencia d'amistat";
-App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, has rebut una suggerència d'amistat de '%2\$s' a %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, has rebut [zrl=%2\$s]una suggerència d'amistat[/zrl] per %3\$s de %4\$s.";
-App::$strings["Name:"] = "Nom:";
-App::$strings["Photo:"] = "Foto:";
-App::$strings["Please visit %s to approve or reject the suggestion."] = "Per favor, visita %s per a aprovar o rebutjar la suggerencia.";
-App::$strings["[Red:Notify]"] = "[Red:Notificació]";
-App::$strings["No recipient provided."] = "No s'ha proporcionat bústia.";
-App::$strings["[no subject]"] = "[no subject]";
-App::$strings["Unable to determine sender."] = "incapaç de determinar el remitent";
-App::$strings["Stored post could not be verified."] = "L'entrada guardada no pot ser verificada";
-App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s agrada %2\$s de %3\$s";
-App::$strings["Please choose"] = "Escull";
-App::$strings["Agree"] = "A favor";
-App::$strings["Disagree"] = "En contra";
-App::$strings["Abstain"] = "Abstenció";
-App::$strings["Channel is blocked on this site."] = "El canal està bloquejat en aquest lloc.";
-App::$strings["Channel location missing."] = "Ubicació del canal perduda.";
-App::$strings["Response from remote channel was incomplete."] = "La resposta del canal remot fou incompleta.";
-App::$strings["Channel was deleted and no longer exists."] = "El canal fou esborrat i actualment no existeix.";
-App::$strings["Protocol disabled."] = "Protocol desactivat.";
-App::$strings["Protocol blocked for this channel."] = "El protocol està bloquejat per a aquest canal.";
-App::$strings["Channel discovery failed."] = "Descobriment de canal fallit.";
-App::$strings["local account not found."] = "compte local no trobat.";
-App::$strings["Cannot connect to yourself."] = "No pots connectar amb tu mateix.";
-App::$strings["Private Message"] = "Missatge Privat";
-App::$strings["Select"] = "Selecciona";
-App::$strings["Save to Folder"] = "Guardar en la Carpeta";
-App::$strings["I will attend"] = "Assistiré";
-App::$strings["I will not attend"] = "No assistiré";
-App::$strings["I might attend"] = "Podria assistir";
-App::$strings["I agree"] = "D'acord";
-App::$strings["I disagree"] = "En desacord";
-App::$strings["I abstain"] = "M'abstinc";
-App::$strings["View all"] = "Veure tot";
-App::$strings["__ctx:noun__ Like"] = array(
- 0 => "Agrada",
- 1 => "Agraden",
-);
-App::$strings["__ctx:noun__ Dislike"] = array(
- 0 => "Desagrada",
- 1 => "Desagrada",
-);
-App::$strings["Add Star"] = "Fes-lo Preferit";
-App::$strings["Remove Star"] = "Treu-lo de Preferits";
-App::$strings["Toggle Star Status"] = "Canvia el Estat de la Preferència";
-App::$strings["starred"] = "preferit";
-App::$strings["Message signature validated"] = "Validada la signatura del missatge";
-App::$strings["Message signature incorrect"] = "Signatura del missatge incorrecta";
-App::$strings["Add Tag"] = "Afegeix Etiqueta";
-App::$strings["I like this (toggle)"] = "M'agrada això (canvia)";
-App::$strings["like"] = "agrada";
-App::$strings["I don't like this (toggle)"] = "No m'agrada això (canvia)";
-App::$strings["dislike"] = "desagrada";
-App::$strings["Share This"] = "Comparteix Això";
-App::$strings["share"] = "comparteix";
-App::$strings["%d comment"] = array(
- 0 => "%d commentari",
- 1 => "%d commentaris",
-);
-App::$strings["View %s's profile - %s"] = "Veure %s de perfil - %s";
-App::$strings["to"] = "a";
-App::$strings["via"] = "via";
-App::$strings["Wall-to-Wall"] = "Mur-a-Mur";
-App::$strings["via Wall-To-Wall:"] = "via Mur-a-Mur:";
-App::$strings["from %s"] = "De %s";
-App::$strings["last edited: %s"] = "últim editat: %s";
-App::$strings["Expires: %s"] = "Expira: %s";
-App::$strings["Save Bookmarks"] = "Guarda Favorits";
-App::$strings["Add to Calendar"] = "Afegeix al Calendari";
-App::$strings["Mark all seen"] = "Marca tot com ja vist";
-App::$strings["__ctx:noun__ Likes"] = "Agrada";
-App::$strings["__ctx:noun__ Dislikes"] = "Desagrada";
-App::$strings["Close"] = "Tanca";
-App::$strings["Please wait"] = "Si us plau, espera";
-App::$strings["This is you"] = "Ets tú";
-App::$strings["Bold"] = "Negreta";
-App::$strings["Italic"] = "Italica";
-App::$strings["Underline"] = "Subratllat";
-App::$strings["Quote"] = "Cometes";
-App::$strings["Code"] = "Codi";
-App::$strings["Image"] = "Imatge";
-App::$strings["Insert Link"] = "Insereix Enllaç";
-App::$strings["Video"] = "Video";
-App::$strings["Encrypt text"] = "Text encriptat";
-App::$strings["New window"] = "Nova finestra";
-App::$strings["Open the selected location in a different window or browser tab"] = "Obrir la localització seleccionada en un altre finestra o pestanya del navegador";
-App::$strings["User '%s' deleted"] = "usuari '%s' esborrat";
-App::$strings["Attachments:"] = "Adjuntat:";
-App::$strings["\$Projectname event notification:"] = "Notificació d'esdeveniment de \$Projectname";
-App::$strings["Logout"] = "Desconectar";
-App::$strings["End this session"] = "Finalitza aquesta sessió";
-App::$strings["Home"] = "Personal";
-App::$strings["Your posts and conversations"] = "Les teves entrades i converses";
-App::$strings["View Profile"] = "Veure Perfil";
-App::$strings["Your profile page"] = "La teva pàgina de perfil";
-App::$strings["Edit Profiles"] = "Editar Perfils";
-App::$strings["Manage/Edit profiles"] = "Gestiona/Edita perfils";
-App::$strings["Edit Profile"] = "Edita Perfil";
-App::$strings["Edit your profile"] = "Edita el teu perfil";
-App::$strings["Photos"] = "Fotos";
-App::$strings["Your photos"] = "Les Teves Fotos";
-App::$strings["Your files"] = "Els teus arxius";
-App::$strings["Chat"] = "Xerrar";
-App::$strings["Your chatrooms"] = "Les teves sales de xerrar";
-App::$strings["Bookmarks"] = "Marcadors";
-App::$strings["Your bookmarks"] = "Els teus marcadors";
-App::$strings["Webpages"] = "Pàgines web";
-App::$strings["Your webpages"] = "Les teves pàgines web";
-App::$strings["Login"] = "Identifica't";
-App::$strings["Sign in"] = "Signatura";
-App::$strings["%s - click to logout"] = "%s - click per desconectar";
-App::$strings["Remote authentication"] = "Autenticació remota";
-App::$strings["Click to authenticate to your home hub"] = "Click per autentificar-te en el teu Lloc ";
-App::$strings["Home Page"] = "Pàgina Personal";
-App::$strings["Register"] = "Registre";
-App::$strings["Create an account"] = "Crear un compte";
-App::$strings["Help"] = "Ajuda";
-App::$strings["Help and documentation"] = "Ajuda i documentació";
-App::$strings["Applications, utilities, links, games"] = "Aplicacions, utilitats, enllaços, jocs";
-App::$strings["Search site content"] = "Cerca en el contingut del lloc";
-App::$strings["Directory"] = "Directori";
-App::$strings["Channel Directory"] = "Directori de Canals";
-App::$strings["Matrix"] = "Matriu/Matrix";
-App::$strings["Your matrix"] = "El teu matrix";
-App::$strings["Mark all matrix notifications seen"] = "Marca totes les notificacions de matrix vistes";
-App::$strings["Channel Home"] = "Canal Personal";
-App::$strings["Channel home"] = "Canal personal";
-App::$strings["Mark all channel notifications seen"] = "Marca totes les notificacions de canal vistes";
-App::$strings["Connections"] = "Connexions";
-App::$strings["Notices"] = "Noticies";
-App::$strings["Notifications"] = "Notificacions";
-App::$strings["See all notifications"] = "Veure totes les Notificacions";
-App::$strings["Mark all system notifications seen"] = "Marca totes les notificacions vistes";
-App::$strings["Mail"] = "Correu";
-App::$strings["Private mail"] = "Correu privat";
-App::$strings["See all private messages"] = "Veure tots els missatges privats";
-App::$strings["Mark all private messages seen"] = "Marcar tots els missatges privats vistos";
-App::$strings["Inbox"] = "Safata d'entrada";
-App::$strings["Outbox"] = "Safata de sortida";
-App::$strings["Events"] = "Events";
-App::$strings["Event Calendar"] = "Calendari d'Events";
-App::$strings["See all events"] = "Veure tots els events";
-App::$strings["Mark all events seen"] = "Marcar tots els events vistos";
-App::$strings["Channel Manager"] = "Gestor del Canal";
-App::$strings["Manage Your Channels"] = "Gestiona els Teus Canals";
-App::$strings["Account/Channel Settings"] = "Ajustos de Compte/Canal";
-App::$strings["Admin"] = "Admin";
-App::$strings["Site Setup and Configuration"] = "Ajustos i Configuració del Lloc";
-App::$strings["Loading..."] = "Carregant...";
-App::$strings["@name, #tag, content"] = "@name, #tag, content";
-App::$strings["Please wait..."] = "Si us plau, espera.......";
-App::$strings["Tags"] = "Etiquetes";
-App::$strings["Keywords"] = "Paraules clau";
-App::$strings["have"] = "tinc";
-App::$strings["has"] = "tens";
-App::$strings["want"] = "vull";
-App::$strings["wants"] = "vols";
-App::$strings["likes"] = "agrada";
-App::$strings["dislikes"] = "desagrada";
-App::$strings[" and "] = "i";
-App::$strings["public profile"] = "Perfil públic";
-App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s canviat %2\$s a &ldquo;%3\$s&rdquo;";
-App::$strings["Visit %1\$s's %2\$s"] = "Visita %1\$s de %2\$s";
-App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s Ha actualitzat %2\$s, canviant %3\$s.";
-App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "El formulario de la cadena de seguridad no era correcto. Esto probablemente ocurrió porque el formulario se ha abierto durante demasiado tiempo (> 3 horas) antes de enviarlo.";
-App::$strings["Can view my normal stream and posts"] = "Pot veure el flux i entrades normals";
-App::$strings["Can view my default channel profile"] = "Pot veure el meu perfil del canal per defecte";
-App::$strings["Can view my photo albums"] = "Pot veure el meus àlbums de fotos";
-App::$strings["Can view my connections"] = "Pot veure les meves connexions";
-App::$strings["Can view my file storage"] = "Pot veure al meu magatzem d'arxius";
-App::$strings["Can view my webpages"] = "Pot veure les meves pàgines web";
-App::$strings["Can send me their channel stream and posts"] = "Pot enviar-me el flux i entrades del seu canal";
-App::$strings["Can post on my channel page (\"wall\")"] = "Pot fer entrades a la meva pàgina de canal (\"mur\")";
-App::$strings["Can comment on or like my posts"] = "Pot fer comentaris o dir si agrada en les meves entrades";
-App::$strings["Can send me private mail messages"] = "Pot enviar-me un missatge de correu privat";
-App::$strings["Can post photos to my photo albums"] = "Pot enviar fotos al meus àlbums de fotos";
-App::$strings["Can like/dislike stuff"] = "Pot dir si agrada/desagrada ";
-App::$strings["Profiles and things other than posts/comments"] = "Perfils i altres coses a més d'entrades/comentaris";
-App::$strings["Can forward to all my channel contacts via post @mentions"] = "Ho pot enviar a tots els meus contactes del canal via entrades @mencions";
-App::$strings["Advanced - useful for creating group forum channels"] = "Avançat - capaç de crear canals de grups de foro";
-App::$strings["Can chat with me (when available)"] = "Pot xatejar amb mi (si estic disponible)";
-App::$strings["Can write to my file storage"] = "Pot escriure al meu magatzem d'arxius";
-App::$strings["Can edit my webpages"] = "Pot editar les meves pàgines web";
-App::$strings["Can source my public posts in derived channels"] = "Pot mostrar l'origen de les meves entrades públiques en altres canals";
-App::$strings["Somewhat advanced - very useful in open communities"] = "Quelcom avançat - molt útil en comunitats obertes";
-App::$strings["Can administer my channel resources"] = "Pot administrar els meus recursos del canal";
-App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Extremadament avançat. No toquis res si no saps que estàs fent";
-App::$strings["Social Networking"] = "Xarxes Socials";
-App::$strings["Mostly Public"] = "Més aviat Públic";
-App::$strings["Restricted"] = "Restringit";
-App::$strings["Private"] = "Privat";
-App::$strings["Community Forum"] = "Foro de Comunitat";
-App::$strings["Feed Republish"] = "Republicador";
-App::$strings["Special Purpose"] = "Objectiu Especial";
-App::$strings["Celebrity/Soapbox"] = "Celebritat/Faristol";
-App::$strings["Group Repository"] = "Repositori de Grup";
-App::$strings["Other"] = "Altres";
-App::$strings["Custom/Expert Mode"] = "Personalitzat/Mode Expert";
-App::$strings["channel"] = "canal";
-App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s no agrada %2\$s de %3\$s";
-App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s esta ara connectat amb %2\$s";
-App::$strings["%1\$s poked %2\$s"] = "%1\$s emprenyat %2\$s";
-App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s es %2\$s";
-App::$strings["__ctx:title__ Likes"] = "Agrada";
-App::$strings["__ctx:title__ Dislikes"] = "Desagrada";
-App::$strings["__ctx:title__ Agree"] = "Acord";
-App::$strings["__ctx:title__ Disagree"] = "Desacord";
-App::$strings["__ctx:title__ Abstain"] = "Abstenirse";
-App::$strings["__ctx:title__ Attending"] = "Assistint";
-App::$strings["__ctx:title__ Not attending"] = "Desassistint";
-App::$strings["__ctx:title__ Might attend"] = "Podrien assistir";
-App::$strings["View %s's profile @ %s"] = "Vista %s del perfil @ %s";
-App::$strings["Categories:"] = "Categories:";
-App::$strings["Filed under:"] = "Arxivar a:";
-App::$strings["View in context"] = "Veure en context";
-App::$strings["remove"] = "treu";
-App::$strings["Delete Selected Items"] = "Esborra els Articles Seleccionats";
-App::$strings["View Source"] = "Veure l'Origen";
-App::$strings["Follow Thread"] = "Segueix el Fil";
-App::$strings["View Status"] = "Veure Status";
-App::$strings["View Photos"] = "Veure Fotos";
-App::$strings["Matrix Activity"] = "Activitat de Matrix";
-App::$strings["Edit Contact"] = "Editar Contacte";
-App::$strings["Send PM"] = "Enviar MP";
-App::$strings["Poke"] = "Emprenya";
-App::$strings["%s likes this."] = "%s agrada això.";
-App::$strings["%s doesn't like this."] = "%s no agrada això.";
-App::$strings["<span %1\$s>%2\$d people</span> like this."] = array(
- 0 => "<span %1\$s>%2\$d gent</span> agrada això.",
- 1 => "<span %1\$s>%2\$d gent</span> agrada això.",
-);
-App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
- 0 => "<span %1\$s>%2\$d gent</span> no agrada això.",
- 1 => "<span %1\$s>%2\$d gent</span> no agrada això.",
-);
-App::$strings["and"] = "i";
-App::$strings[", and %d other people"] = array(
- 0 => ", i %d altra gent",
- 1 => ", i %d altra gent",
-);
-App::$strings["%s like this."] = "%s agrada això.";
-App::$strings["%s don't like this."] = "%s no agrada això.";
-App::$strings["Visible to <strong>everybody</strong>"] = "Visible a <strong>tothom</strong>";
-App::$strings["Please enter a link URL:"] = "Si us plau entra l'enllaç URL:";
-App::$strings["Please enter a video link/URL:"] = "Si us plau entra l'enllaç/URL a un video:";
-App::$strings["Please enter an audio link/URL:"] = "Si us plau, entra l'enllaç/URL a un audio:";
-App::$strings["Tag term:"] = "Paraula de l'Etiqueta:";
-App::$strings["Save to Folder:"] = "Guardar en la Carpeta";
-App::$strings["Where are you right now?"] = "On ets ara?";
-App::$strings["Expires YYYY-MM-DD HH:MM"] = "Expira YYYY-MM-DD HH:MM";
-App::$strings["Share"] = "Compartir";
-App::$strings["Page link name"] = "Nom de la pàgina enllaçada";
-App::$strings["Post as"] = "Envia com";
-App::$strings["Upload photo"] = "Puja foto";
-App::$strings["upload photo"] = "puja foto";
-App::$strings["Attach file"] = "Adjunta arxiu";
-App::$strings["attach file"] = "adjunta arxiu";
-App::$strings["Insert web link"] = "Insereix enllaç web";
-App::$strings["web link"] = "enllaç web";
-App::$strings["Insert video link"] = "Insereix enllaç video";
-App::$strings["video link"] = "enllaç video";
-App::$strings["Insert audio link"] = "Insereix enllaç d'audio";
-App::$strings["audio link"] = "enllaç d'audio";
-App::$strings["Set your location"] = "Ajusta la teva ubicació";
-App::$strings["set location"] = "ajusta localització";
-App::$strings["Toggle voting"] = "Commutar votació";
-App::$strings["Clear browser location"] = "Treu la localització del navegador";
-App::$strings["clear location"] = "treu localització";
-App::$strings["Title (optional)"] = "Títol (opcional)";
-App::$strings["Categories (optional, comma-separated list)"] = "Categories (opcional, llista separada per comes)";
-App::$strings["Permission settings"] = "Ajustos de permisos";
-App::$strings["permissions"] = "permisos ";
-App::$strings["Public post"] = "Entrada pública";
-App::$strings["Example: bob@example.com, mary@example.com"] = "Exemple: bob@example.com, mary@example.com";
-App::$strings["Set expiration date"] = "Ajusta la data d'expiració";
-App::$strings["OK"] = "OK";
-App::$strings["Cancel"] = "Cancel·la";
-App::$strings["Discover"] = "Descobrir";
-App::$strings["Imported public streams"] = "Importar fluxos públics";
-App::$strings["Commented Order"] = "Ordre per Comentaris";
-App::$strings["Sort by Comment Date"] = "Ordenar per Data del Comentari";
-App::$strings["Posted Order"] = "Ordenar per Entrades";
-App::$strings["Sort by Post Date"] = "Ordenar per Data d' Entrada";
-App::$strings["Posts that mention or involve you"] = "Entrades que et mencionen o involucren";
-App::$strings["New"] = "Nou";
-App::$strings["Activity Stream - by date"] = "Activitat del Flux - per data";
-App::$strings["Starred"] = "Preferit";
-App::$strings["Favourite Posts"] = "Entrades Favorites";
-App::$strings["Spam"] = "Spam";
-App::$strings["Posts flagged as SPAM"] = "Entrades marcades com a SPAM";
-App::$strings["Channel"] = "Canal";
-App::$strings["Status Messages and Posts"] = "Estat dels Missatges i Entrades";
-App::$strings["About"] = "Sobre això";
-App::$strings["Profile Details"] = "Detalls del Perfil";
-App::$strings["Photo Albums"] = "Albums de Fotos";
-App::$strings["Files and Storage"] = "Arxius i Emmagatzegament";
-App::$strings["Chatrooms"] = "Sala per Xerrar";
-App::$strings["Saved Bookmarks"] = "Marcadors Guardats";
-App::$strings["Manage Webpages"] = "Gestió de Pàgines Web";
-App::$strings["__ctx:noun__ Attending"] = array(
- 0 => "Assistint",
- 1 => "Assistint",
-);
-App::$strings["__ctx:noun__ Not Attending"] = array(
- 0 => "Desassistint",
- 1 => "Desassistint",
-);
-App::$strings["__ctx:noun__ Undecided"] = array(
- 0 => "Indecís",
- 1 => "Indecisos",
-);
-App::$strings["__ctx:noun__ Agree"] = array(
- 0 => "Acord",
- 1 => "Acords",
-);
-App::$strings["__ctx:noun__ Disagree"] = array(
- 0 => "Desacord",
- 1 => "Desacords",
-);
-App::$strings["__ctx:noun__ Abstain"] = array(
- 0 => "Abstenirse",
- 1 => "Abstenirse",
-);
-App::$strings["Permission denied"] = "Permís denegat";
-App::$strings["(Unknown)"] = "(Desconegut)";
-App::$strings["Visible to anybody on the internet."] = "Visible per tothom a la Internet";
-App::$strings["Visible to you only."] = "Visible només per tú.";
-App::$strings["Visible to anybody in this network."] = "Visible per tothom en aquesta xarxa.";
-App::$strings["Visible to anybody authenticated."] = "Visible per tothom autenticat.";
-App::$strings["Visible to anybody on %s."] = "Visible per a tothom a %s.";
-App::$strings["Visible to all connections."] = "Visible per a totes les connexions.";
-App::$strings["Visible to approved connections."] = "Visible per a les connexions aprovades.";
-App::$strings["Visible to specific connections."] = "Visible per a específiques connexions.";
-App::$strings["Item not found."] = "Element no trobat.";
-App::$strings["Permission denied."] = "Permís denegat.";
-App::$strings["Collection not found."] = "Col·lecció no trobada.";
-App::$strings["Collection is empty."] = "La col·lecció esta buida.";
-App::$strings["Collection: %s"] = "Col·lecció: %s";
App::$strings["Connection: %s"] = "Connexió: %s";
-App::$strings["Connection not found."] = "Connexió no trobada.";
-App::$strings["Invalid data packet"] = "paquet de dades invàlid";
-App::$strings["Unable to verify channel signature"] = "No es pot verificar la signatura del canal";
-App::$strings["Unable to verify site signature for %s"] = "No es pot verificar la signatura del lloc per %s";
-App::$strings["Embedded content"] = "Contingut embegut";
-App::$strings["Embedding disabled"] = "Incorporació desactivada";
-App::$strings["Logged out."] = "Sortir.";
-App::$strings["Failed authentication"] = "Autenticació fallida";
-App::$strings["Login failed."] = "Identificació fallida.";
-App::$strings["%d invitation available"] = array(
- 0 => "%d invitació disponible",
- 1 => "%d invitacions disponibles",
-);
-App::$strings["Advanced"] = "Avançat";
-App::$strings["Find Channels"] = "Troba Canals";
-App::$strings["Enter name or interest"] = "Entra un nom o interes";
-App::$strings["Connect/Follow"] = "Conecta/Segueix";
-App::$strings["Examples: Robert Morgenstein, Fishing"] = "Exemples: Lionel Messi, Futbolista";
-App::$strings["Find"] = "Troba";
-App::$strings["Channel Suggestions"] = "Canals Suggerits";
-App::$strings["Random Profile"] = "Perfil Aleatori";
-App::$strings["Invite Friends"] = "Convida Amics";
-App::$strings["Advanced example: name=fred and country=iceland"] = "Exemple avançat: nom=pep i pais=eire";
-App::$strings["%d connection in common"] = array(
- 0 => "%d connexió en comú",
- 1 => "%d connexions en comú",
-);
-App::$strings["show more"] = "mostrar més";
-App::$strings["Visible to your default audience"] = "Visible per a la teva audiència ";
-App::$strings["Show"] = "Mostra";
-App::$strings["Don't show"] = "No mostrar";
-App::$strings["Permissions"] = "Permisos ";
-App::$strings["Item was not found."] = "Article no trobat.";
-App::$strings["No source file."] = "No hi ha arxiu d'origen.";
-App::$strings["Cannot locate file to replace"] = "No trobo l'arxiu a reemplaçar";
-App::$strings["Cannot locate file to revise/update"] = "No trobo l'arxiu a revisar/actualitzar";
-App::$strings["File exceeds size limit of %d"] = "L'arxiu excedeix la mida limit de %d";
-App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Has arribat al teu límit de %1$.0f Mbytes de emagatzematge d'adjunts.";
-App::$strings["File upload failed. Possible system limit or action terminated."] = "Pujada del arxiu fallida. Possible límit del sistema o acció interrompuda.";
-App::$strings["Stored file could not be verified. Upload failed."] = "L'arxiu guardat no es pot verificar. Pujada fallida.";
-App::$strings["Path not available."] = "Trajectòria no disponible";
-App::$strings["Empty pathname"] = "Trajèctoria vuida.";
-App::$strings["duplicate filename or path"] = "Nom o trajectòria duplicat";
-App::$strings["Path not found."] = "Trajectòria no trobada.";
-App::$strings["mkdir failed."] = "mkdir va fracassar.";
-App::$strings["database storage failed."] = "Arxiu de base de dades va fallar.";
-App::$strings["Unable to obtain identity information from database"] = "Incapaç de trobar l'informació d'identitat a la base de dades";
-App::$strings["Empty name"] = "Nom buit";
-App::$strings["Name too long"] = "Nom massa llarg";
-App::$strings["No account identifier"] = "Sense identificador de compte";
-App::$strings["Nickname is required."] = "Alies/malnom es requerit.";
-App::$strings["Reserved nickname. Please choose another."] = "Àlies reservat. Tria un altre.";
-App::$strings["Nickname has unsupported characters or is already being used on this site."] = "L'álies te caracters no soportats o ja esta en ús en aquest lloc";
-App::$strings["Unable to retrieve created identity"] = "No es pot recuperar la identitat creada";
-App::$strings["Default Profile"] = "Perfil per Defecte";
-App::$strings["Requested channel is not available."] = "El canal demanat no està disponible.";
-App::$strings["Requested profile is not available."] = "El perfil demanat no està disponible.";
-App::$strings["Change profile photo"] = "Canviar la foto del perfil";
-App::$strings["Profiles"] = "Perfils";
-App::$strings["Manage/edit profiles"] = "Gestiona/edita perfils";
-App::$strings["Create New Profile"] = "Crear un Perfil Nou";
-App::$strings["Profile Image"] = "Imatge del Perfil";
-App::$strings["visible to everybody"] = "visible per tothom";
-App::$strings["Edit visibility"] = "Editar visibilitat";
-App::$strings["Gender:"] = "Gènere:";
-App::$strings["Status:"] = "Estatus:";
-App::$strings["Homepage:"] = "Pàgina Personal:";
-App::$strings["Online Now"] = "Ara en Linia";
-App::$strings["g A l F d"] = "g A l F d";
-App::$strings["F d"] = "F d";
-App::$strings["[today]"] = "[avui]";
-App::$strings["Birthday Reminders"] = "Recordatori d'Aniversaris";
-App::$strings["Birthdays this week:"] = "Aniversari aquesta setmana:";
-App::$strings["[No description]"] = "[Sense descripció]";
-App::$strings["Event Reminders"] = "Recordatori d'Events";
-App::$strings["Events this week:"] = "Event aquesta setmana:";
-App::$strings["Profile"] = "Perfil";
-App::$strings["Full Name:"] = "Nom Complet:";
-App::$strings["Like this channel"] = "M'agrada aquest canal";
-App::$strings["j F, Y"] = "j F, Y";
-App::$strings["j F"] = "j F";
-App::$strings["Birthday:"] = "Aniversari:";
-App::$strings["Age:"] = "Edat:";
-App::$strings["for %1\$d %2\$s"] = "per %1\$d %2\$s";
-App::$strings["Sexual Preference:"] = "Preferència Sexual:";
-App::$strings["Hometown:"] = "Ciutat Natal:";
-App::$strings["Tags:"] = "Etiquetes:";
-App::$strings["Political Views:"] = "Idees Polítiques:";
-App::$strings["Religion:"] = "Religió:";
-App::$strings["About:"] = "Sobre:";
-App::$strings["Hobbies/Interests:"] = "Aficions/Interessos:";
-App::$strings["Likes:"] = "Agrada:";
-App::$strings["Dislikes:"] = "Desagrada:";
-App::$strings["Contact information and Social Networks:"] = "Informació de contacte i Xarxes Socials:";
-App::$strings["My other channels:"] = "Els meus altres canals:";
-App::$strings["Musical interests:"] = "Interessos Musicals:";
-App::$strings["Books, literature:"] = "Llibres, literatura:";
-App::$strings["Television:"] = "Televisió:";
-App::$strings["Film/dance/culture/entertainment:"] = "Películes/Dança/Cultura/Entreteniment:";
-App::$strings["Love/Romance:"] = "Amor/Romace:";
-App::$strings["Work/employment:"] = "Treball/feina:";
-App::$strings["School/education:"] = "Escola/educació:";
-App::$strings["Like this thing"] = "M'agrada això";
-App::$strings["Male"] = "Masculí";
-App::$strings["Female"] = "Femení";
-App::$strings["Currently Male"] = "Actualment Masculí";
-App::$strings["Currently Female"] = "Actualment Femení";
-App::$strings["Mostly Male"] = "Més aviat Masculí";
-App::$strings["Mostly Female"] = "Més Aviat Femení";
-App::$strings["Transgender"] = "Canvi de Sexe";
-App::$strings["Intersex"] = "Intersexual";
-App::$strings["Transsexual"] = "Transsexual";
-App::$strings["Hermaphrodite"] = "Hermafrodita";
-App::$strings["Neuter"] = "Neutre";
-App::$strings["Non-specific"] = "Indefinit";
-App::$strings["Undecided"] = "Indecís";
-App::$strings["Males"] = "Homes";
-App::$strings["Females"] = "Dones";
-App::$strings["Gay"] = "Gay";
-App::$strings["Lesbian"] = "Lesbianes";
-App::$strings["No Preference"] = "Sense Preferències";
-App::$strings["Bisexual"] = "Bisexual";
-App::$strings["Autosexual"] = "Autosexual";
-App::$strings["Abstinent"] = "Abstinent";
-App::$strings["Virgin"] = "Verge";
-App::$strings["Deviant"] = "Desviat";
-App::$strings["Fetish"] = "Fetixiste";
-App::$strings["Oodles"] = "Orgies";
-App::$strings["Nonsexual"] = "Asexual";
-App::$strings["Single"] = "Solter";
-App::$strings["Lonely"] = "Solitari";
-App::$strings["Available"] = "Disponible";
-App::$strings["Unavailable"] = "No Disponible";
-App::$strings["Has crush"] = "Aplastat";
-App::$strings["Infatuated"] = "Encapritxat";
-App::$strings["Dating"] = "Promés";
-App::$strings["Unfaithful"] = "Infidel";
-App::$strings["Sex Addict"] = "Adicte al Sexe";
-App::$strings["Friends/Benefits"] = "Amics amb Beneficis";
-App::$strings["Casual"] = "Casual";
-App::$strings["Engaged"] = "Ocupat";
-App::$strings["Married"] = "Casat";
-App::$strings["Imaginarily married"] = "Casat Imaginàriament";
-App::$strings["Partners"] = "Parella";
-App::$strings["Cohabiting"] = "Cohabitant";
-App::$strings["Common law"] = "Tradició";
-App::$strings["Happy"] = "Feliç";
-App::$strings["Not looking"] = "No Cerco";
-App::$strings["Swinger"] = "Llibertí";
-App::$strings["Betrayed"] = "Traït";
-App::$strings["Separated"] = "Separat";
-App::$strings["Unstable"] = "Inestable";
-App::$strings["Divorced"] = "Divorciat";
-App::$strings["Imaginarily divorced"] = "Divorciat Imaginàriament";
-App::$strings["Widowed"] = "Vidu/ua";
-App::$strings["Uncertain"] = "Incert";
-App::$strings["It's complicated"] = "Es Complicat";
-App::$strings["Don't care"] = "No Et Fa Res";
-App::$strings["Ask me"] = "Pregunta";
-App::$strings["Site Admin"] = "Administració";
-App::$strings["Address Book"] = "Adreçes";
-App::$strings["Mood"] = "Ànim";
-App::$strings["Probe"] = "Sondeig";
-App::$strings["Suggest"] = "Suggeriment";
-App::$strings["Random Channel"] = "Canal Aleatori";
-App::$strings["Invite"] = "Convida";
-App::$strings["Features"] = "Funcionalitats";
-App::$strings["Language"] = "Idioma";
-App::$strings["Post"] = "Entrada";
-App::$strings["Profile Photo"] = "Foto del Perfil";
-App::$strings["Update"] = "Actualització";
-App::$strings["Install"] = "Instal·lar";
-App::$strings["Purchase"] = "Compra";
-App::$strings["Image/photo"] = "Imatge/foto";
-App::$strings["Encrypted content"] = "Contingut encriptat";
-App::$strings["Install %s element: "] = "Instal·la l'element %s:";
-App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Aquesta entrada contè un element %s instal·lable, potser manques de permissos per instal·lar-lo en aquest lloc.";
-App::$strings["webpage"] = "pàgina web";
-App::$strings["layout"] = "disposició";
-App::$strings["block"] = "bloc";
-App::$strings["menu"] = "menú";
-App::$strings["QR code"] = "QR code";
-App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s va escriure el següent %2\$s %3\$s";
-App::$strings["post"] = "entrada";
-App::$strings["Different viewers will see this text differently"] = "Diferents observadors veuran aquest text de diferents formes";
-App::$strings["$1 spoiler"] = "$1 spoiler";
-App::$strings["$1 wrote:"] = "$1 va escriure:";
-App::$strings["Missing room name"] = "Perdut el nom de la sala";
-App::$strings["Duplicate room name"] = "Nom de la sala duplicat";
-App::$strings["Invalid room specifier."] = "Especificació de la sala invàlida.";
-App::$strings["Room not found."] = "Sala no trobada.";
-App::$strings["Room is full"] = "La sala es plena";
-App::$strings["Image exceeds website size limit of %lu bytes"] = "La imatge excedeix la mida limit pel lloc web en %lu bytes";
-App::$strings["Image file is empty."] = "El fitxer d'imatge esta buit.";
-App::$strings["Unable to process image"] = "incapaç de processar la imatge";
-App::$strings["Photo storage failed."] = "Fracassà l'emmagatzematge de la Foto";
-App::$strings["Upload New Photos"] = "Puja Noves Fotos";
-App::$strings["Some blurb about what to do when you're new here"] = "Algunes propostes sobre el que cal fer quan ets nou aquí";
-App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Has creat %1$.0f de %2$.0f canals permesos.";
-App::$strings["Create a new channel"] = "Crear un nou canal";
-App::$strings["Current Channel"] = "Canal Actual";
-App::$strings["Switch to one of your channels by selecting it."] = "Canviar a un altre dels teus canals seleccionant-ho.";
-App::$strings["Default Channel"] = "Canal per Defecte";
-App::$strings["Make Default"] = "Estableix com a Predeterminat";
-App::$strings["%d new messages"] = "%d missatges nous";
-App::$strings["%d new introductions"] = "%d noves presentacions";
-App::$strings["Delegated Channels"] = "Canals Delegats";
+App::$strings["Apply these permissions automatically"] = "Aplica aquests permissos automaticament";
+App::$strings["Connection requests will be approved without your interaction"] = "Les peticions de connexió seran aprovades sense la teva interacció";
+App::$strings["This connection's primary address is"] = "La primera adreça d'aqueste connexió es";
+App::$strings["Available locations:"] = "Localització disponible:";
+App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Els permisos indicats en aquesta pàgina seran aplicats a totes les noves connexions.";
+App::$strings["Connection Tools"] = "Eines de Connexió";
+App::$strings["Slide to adjust your degree of friendship"] = "Llisca per ajustar el nivell d'amistat";
+App::$strings["Rating"] = "Valora";
+App::$strings["Slide to adjust your rating"] = "Llisca per ajustar la valoració";
+App::$strings["Optionally explain your rating"] = "Opcionalment pots explicar la teva valoració";
+App::$strings["Custom Filter"] = "Filtre a mida";
+App::$strings["Only import posts with this text"] = "Importa exclusivament entrades amb aquest text";
+App::$strings["words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts"] = "paraules una per línia o #etiquetes o /patrons/ o idioma=xx, deixar en blanc per importar totes les entrades";
+App::$strings["Do not import posts with this text"] = "No importar entrades amb aquest text";
+App::$strings["This information is public!"] = "Aquesta informació es pública!";
+App::$strings["Connection Pending Approval"] = "Connexió Pendent d'Aprovació";
+App::$strings["inherited"] = "heretat";
+App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Tria el perfil que vols mostrar a %s quan es vegi el perfil segur.";
+App::$strings["Their Settings"] = "Els seus Ajustos";
+App::$strings["My Settings"] = "Els Meus Ajustos";
+App::$strings["Individual Permissions"] = "Permisos Individuals";
+App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Alguns permisos poden ser heretats dels teus canals <a href=\"settings\"><strong>ajustos de privacitat</strong></a>, Els quals tenen més prioritat que els ajustos individuals. <strong>No</strong> pots canviar aquests ajustos aquí.";
+App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Alguns permisos poden ser heretats dels teus canals <a href=\"settings\"><strong>ajustos de privacitat</strong></a>, Els quals tenen més prioritat que els ajustos individuals. <strong>Pots</strong> canviar aquests ajustos aquí pero no tindran cap impacte fins que no canviis els ajustos heretats.";
+App::$strings["Last update:"] = "Darrera actualització:";
App::$strings["Public access denied."] = "Accés públic denegat.";
App::$strings["%d rating"] = array(
0 => "%d valoració",
@@ -942,14 +173,21 @@ App::$strings["%d rating"] = array(
App::$strings["Gender: "] = "Gènere:";
App::$strings["Status: "] = "Estatus:";
App::$strings["Homepage: "] = "Pàgina Personal:";
+App::$strings["Age:"] = "Edat:";
+App::$strings["Location:"] = "Localització:";
App::$strings["Description:"] = "Descripció:";
+App::$strings["Hometown:"] = "Ciutat Natal:";
+App::$strings["About:"] = "Sobre:";
+App::$strings["Connect"] = "Connecta ";
App::$strings["Public Forum:"] = "Forum Públic:";
App::$strings["Keywords: "] = "Paraules Clau:";
App::$strings["Don't suggest"] = "No suggerir";
App::$strings["Common connections:"] = "Connexions en comú:";
App::$strings["Global Directory"] = "Directori Global";
App::$strings["Local Directory"] = "Directori Local";
+App::$strings["Find"] = "Troba";
App::$strings["Finding:"] = "Cercant:";
+App::$strings["Channel Suggestions"] = "Canals Suggerits";
App::$strings["next page"] = "pàgina següent";
App::$strings["previous page"] = "pàgina anterior";
App::$strings["Sort options"] = "Opcions per ordenar";
@@ -958,346 +196,252 @@ App::$strings["Reverse Alphabetic"] = "Alfabètic Invers";
App::$strings["Newest to Oldest"] = "De més Nou a més Vell";
App::$strings["Oldest to Newest"] = "De més Antic a més Nou";
App::$strings["No entries (some entries may be hidden)."] = "Sense entrades (algunes podrien estar amagades).";
-App::$strings["Xchan Lookup"] = "Cerca a xchan";
-App::$strings["Lookup xchan beginning with (or webbie): "] = "Cerca a xchan començant per (o webbie)";
-App::$strings["Not found."] = "No trobat.";
-App::$strings["Authorize application connection"] = "Autoritza la connexió de l'aplicació";
-App::$strings["Return to your app and insert this Securty Code:"] = "Torna a la teva aplicació i insereix aquest Codi de Seguretat:";
-App::$strings["Please login to continue."] = "Si et plau, identifica't per continuar.";
-App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Vols autoritzar a aquesta aplicació l'accés a les teves entrades i contactes i/o a crear noves entrades com si fos tu mateix.";
-App::$strings["Page Title"] = "Títol de la pàgina";
-App::$strings["Channel added."] = "S'ha afegit el canal.";
-App::$strings["Tag removed"] = "S'ha tret l'etiqueta";
-App::$strings["Remove Item Tag"] = "Elimina l'etiqueta d'element";
-App::$strings["Select a tag to remove: "] = "Tria l'etiqueta a eliminar:";
-App::$strings["Remove"] = "Esborra";
-App::$strings["Continue"] = "Continua";
-App::$strings["Premium Channel Setup"] = "Configuració de Canals Premium";
-App::$strings["Enable premium channel connection restrictions"] = "Habilita les restriccions de connexió del canal premium";
-App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Si us plau, introdueixi les restriccions o condicions, com ara el rebut de PayPal, les pautes d'ús, etc.";
-App::$strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Aquest canal pot requerir passos addicionals o reconeixement de les següents condicions abans de connectar:";
-App::$strings["Potential connections will then see the following text before proceeding:"] = "Connexions potencials veuran el següent text abans de continuar:";
-App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "En continuar, certifico que he complert amb totes les instruccions proporcionades en aquesta pàgina.";
-App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(No s'han proporcionat instruccions específiques pel propietari del canal.)";
-App::$strings["Restricted or Premium Channel"] = "Canal Restringit o Premium";
-App::$strings["Thing updated"] = "S'ha actualitzat la cosa";
-App::$strings["Object store: failed"] = "No s'ha pogut emmagatzemar l'objecte";
-App::$strings["Thing added"] = "S'ha afegit la cosa";
-App::$strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
-App::$strings["Show Thing"] = "Mostra la cosa";
-App::$strings["item not found."] = "no s'ha trobat l'element.";
-App::$strings["Edit Thing"] = "Edita la cosa";
-App::$strings["Select a profile"] = "Tria un perfil";
-App::$strings["Post an activity"] = "Publica una activitat";
-App::$strings["Only sends to viewers of the applicable profile"] = "S'envia només a visitants del perfil corresponent";
-App::$strings["Name of thing e.g. something"] = "Nom de la cosa. Exemple: patata";
-App::$strings["URL of thing (optional)"] = "Adreça URL de la cosa (opcional)";
-App::$strings["URL for photo of thing (optional)"] = "Adreça URL de la foto d'una cosa (opcional)";
-App::$strings["Add Thing to your Profile"] = "Afegeix una cosa al teu perfil";
-App::$strings["Item not available."] = "Article no disponible.";
-App::$strings["Fetching URL returns error: %1\$s"] = "URL sol·licitada retorna error: %1\$s";
+App::$strings["Item not found."] = "Element no trobat.";
+App::$strings["Item not found"] = "No s'ha trobat l'element";
+App::$strings["Title (optional)"] = "Títol (opcional)";
+App::$strings["Edit Block"] = "Editar Bloc";
+App::$strings["No channel."] = "No s'ha trobat el canal";
+App::$strings["Common connections"] = "Connexions en comú";
+App::$strings["No connections in common."] = "No hi ha connexions en comú.";
+App::$strings["Blocked"] = "Bloquejades";
+App::$strings["Ignored"] = "Ignorades";
+App::$strings["Hidden"] = "Amagades";
+App::$strings["Archived"] = "Arxivades";
+App::$strings["New"] = "Nou";
+App::$strings["New Connections"] = "Noves Connexions";
+App::$strings["Show pending (new) connections"] = "Mostra les connexions pendents (noves)";
+App::$strings["All Connections"] = "Totes les Connexions";
+App::$strings["Show all connections"] = "Mostra totes les connexions";
+App::$strings["Only show blocked connections"] = "Mostra només les connexions bloquejades";
+App::$strings["Only show ignored connections"] = "Mostra només les connexions ignorades";
+App::$strings["Only show archived connections"] = "Mostra només les connexions arxivades";
+App::$strings["Only show hidden connections"] = "Mostra només les connexions amagades";
+App::$strings["Pending approval"] = "Pendent d'aprovació";
+App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
+App::$strings["Edit connection"] = "Modifica la connexió";
+App::$strings["Delete connection"] = "Elimina la connexió";
+App::$strings["Channel address"] = "Adreça del canal";
+App::$strings["Network"] = "Xarxa";
+App::$strings["Status"] = "Estat";
+App::$strings["Connected"] = "Connectat";
+App::$strings["Approve connection"] = "Aprovar la Connexió ";
+App::$strings["Approve"] = "Aprovat";
+App::$strings["Ignore connection"] = "Ignorar connexió";
+App::$strings["Recent activity"] = "Activitat recent";
+App::$strings["Connections"] = "Connexions";
+App::$strings["Search"] = "Cerca";
+App::$strings["Search your connections"] = "Cerca entre les teves connexions";
+App::$strings["Connections search"] = "Cerca connexions";
App::$strings["Image uploaded but image cropping failed."] = "S'ha pujat la imatge però no s'ha pogut retallar.";
+App::$strings["Cover Photos"] = "Fotos de Portada";
App::$strings["Image resize failed."] = "No s'ha pogut escalar la imatge.";
-App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Refresca la memòria cau del navegador si la foto no s'actualitza immediatament. Dreceres: «Ctrl+F5» i «Ctrl+Maj+R»";
-App::$strings["Image exceeds size limit of %d"] = "La imatge excedeix la mida límit de %d";
+App::$strings["Unable to process image"] = "incapaç de processar la imatge";
+App::$strings["Image upload failed."] = "La pujada de la imatge va fracassar.";
App::$strings["Unable to process image."] = "Incapaç de processar l'imatge.";
+App::$strings["female"] = "femení";
+App::$strings["%1\$s updated her %2\$s"] = "%1\$s actualitzà el seu %2\$s";
+App::$strings["male"] = "masculí";
+App::$strings["%1\$s updated his %2\$s"] = "%1\$s actualitzà el seu %2\$s";
+App::$strings["%1\$s updated their %2\$s"] = "%1\$s actualitzà els seus %2\$s";
+App::$strings["cover photo"] = "Foto de la portada";
App::$strings["Photo not available."] = "Foto no disponible.";
App::$strings["Upload File:"] = "Puja Arxiu:";
App::$strings["Select a profile:"] = "Tria un perfil:";
-App::$strings["Upload Profile Photo"] = "Puja una Foto pel Perfil";
+App::$strings["Upload Cover Photo"] = "Puja Foto de Portada";
App::$strings["or"] = "o";
App::$strings["skip this step"] = "salta aquest pas";
App::$strings["select a photo from your photo albums"] = "tria una foto del teu àlbum de fotos";
App::$strings["Crop Image"] = "Retalla Imatge";
App::$strings["Please adjust the image cropping for optimum viewing."] = "Si us plau, retalla la imatge per a una optima visualització";
App::$strings["Done Editing"] = "Edició Feta";
-App::$strings["Image uploaded successfully."] = "Imatge pujada exitosament.";
-App::$strings["Image upload failed."] = "La pujada de la imatge va fracassar.";
-App::$strings["Image size reduction [%s] failed."] = "La reducció de mida de la imatge [%s] va fracassar.";
-App::$strings["Invalid item."] = "Article invàlid.";
-App::$strings["Channel not found."] = "Canal no trobat.";
-App::$strings["Page not found."] = "Pàgina no trobada.";
-App::$strings["Like/Dislike"] = "M'agrada / No m'agrada";
-App::$strings["This action is restricted to members."] = "Aquesta acció està restringida als membres.";
-App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "<a href=\"rmagic\">Entra amb la teva identitat \$Projectname</a> o <a href=\"register\">registra't a \$Projectname</a> per continuar.";
-App::$strings["Invalid request."] = "Sol·licitud invàlida.";
-App::$strings["thing"] = "cosa";
-App::$strings["Channel unavailable."] = "El canal està inactiu.";
-App::$strings["Previous action reversed."] = "S'ha desfet l'acció anterior.";
-App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s està d'acord amb %3\$s de %2\$s";
-App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s no està d'acord amb %3\$s de %2\$s";
-App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s s'abstén en %3\$s de %2\$s";
-App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s assistirà a %3\$s de %2\$s";
-App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s no assistirà a %3\$s de %2\$s";
-App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s potser assistirà a %3\$s de %2\$s";
-App::$strings["Action completed."] = "S'ha completat l'acció.";
-App::$strings["Thank you."] = "Gràcies.";
+App::$strings["Item is not editable"] = "Article no editable";
+App::$strings["Edit post"] = "Modifica l'entrada";
App::$strings["Calendar entries imported."] = "Entrades de Calendari importades.";
App::$strings["No calendar entries found."] = "No es troben entrades decalendari.";
App::$strings["Event can not end before it has started."] = "L'esdeveniment ha de començar abans d'acabar.";
App::$strings["Unable to generate preview."] = "No s'ha pogut generar la vista prèvia.";
App::$strings["Event title and start time are required."] = "Cal indicar l'inici i el final de l'esdeveniment.";
App::$strings["Event not found."] = "No s'ha trobat l'esdeveniment.";
-App::$strings["l, F j"] = "l, F j";
+App::$strings["event"] = "succés";
+App::$strings["Edit event title"] = "Edita el títol d'esdeveniment";
+App::$strings["Event title"] = "Títol esdeveniment";
+App::$strings["Required"] = "Requerit";
+App::$strings["Categories (comma-separated list)"] = "Categories (llista separada per comes)";
+App::$strings["Edit Category"] = "Editar Categoria";
+App::$strings["Category"] = "Categoria";
+App::$strings["Edit start date and time"] = "Editar data i hora d'inici";
+App::$strings["Start date and time"] = "Data i hora d'inici";
+App::$strings["Finish date and time are not known or not relevant"] = "L'ora de finalització no es coneix o es irrelevant.";
+App::$strings["Edit finish date and time"] = "Editar la data i hora de finalització";
+App::$strings["Finish date and time"] = "Data i hora de finalització";
+App::$strings["Adjust for viewer timezone"] = "Ajusta a la zona horària del visitant.";
+App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "És important per esdeveniments locals, però pels globals no és pràctic.";
+App::$strings["Edit Description"] = "Editar la Descripció";
+App::$strings["Description"] = "Descripció";
+App::$strings["Edit Location"] = "Editar la localització";
+App::$strings["Location"] = "Localització";
+App::$strings["Share this event"] = "Comparteix aquest esdeveniment";
+App::$strings["Preview"] = "Avanç";
+App::$strings["Permission settings"] = "Ajustos de permisos";
+App::$strings["Advanced Options"] = "Opcions Avançades";
App::$strings["Edit event"] = "Edita l'esdeveniment";
App::$strings["Delete event"] = "Esborra l'esdeveniment";
App::$strings["calendar"] = "calendari";
-App::$strings["Create New Event"] = "Crea un esdeveniment nou";
-App::$strings["Previous"] = "Anterior";
-App::$strings["Next"] = "Pròxim";
-App::$strings["Export"] = "Exporta";
-App::$strings["Import"] = "Importar";
App::$strings["Event removed"] = "S'ha eliminat l'esdeveniment";
App::$strings["Failed to remove event"] = "No s'ha pogut esborrar l'esdeveniment";
-App::$strings["Event details"] = "Detalls de l'esdeveniment";
-App::$strings["Starting date and Title are required."] = "La data d'inici i el títol són obligatoris.";
-App::$strings["Categories (comma-separated list)"] = "Categories (llista separada per comes)";
-App::$strings["Event Starts:"] = "Inici:";
-App::$strings["Finish date/time is not known or not relevant"] = "La data i hora de final no és coneguda o irrellevant";
-App::$strings["Event Finishes:"] = "Final:";
-App::$strings["Adjust for viewer timezone"] = "Ajusta a la zona horària del visitant.";
-App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "És important per esdeveniments locals, però pels globals no és pràctic.";
-App::$strings["Title:"] = "Títol:";
-App::$strings["Share this event"] = "Comparteix aquest esdeveniment";
-App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s esta seguint %2\$s de %3\$s";
-App::$strings["Public Sites"] = "Llocs públics";
-App::$strings["The listed sites allow public registration for the \$Projectname network. All sites in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Els llocs llistats permeten registrar usuaris de la xarxa \$Projectname. Com que tots els llocs estan enllaçats entre ells, la identitat és vàlida a tota la xarxa. Alguns llocs poden demanar subscripció o oferir serveis addicional de pagament. Per a més detalls, proveu de seguir els enllaços dels proveïdors.";
-App::$strings["Rate this hub"] = "Valora aquest hub";
-App::$strings["Site URL"] = "Adreça URL del web";
-App::$strings["Access Type"] = "Tipus d'accés";
-App::$strings["Registration Policy"] = "Condicions de registre";
-App::$strings["Location"] = "Localització";
-App::$strings["View hub ratings"] = "Mostra la valoració del hub";
-App::$strings["Rate"] = "Puntua";
-App::$strings["View ratings"] = "Mostra les valoracions";
-App::$strings["Edit post"] = "Modifica l'entrada";
-App::$strings["\$Projectname channel"] = "Canal de \$Projectname";
-App::$strings["Collection created."] = "Creada una col·lecció";
-App::$strings["Could not create collection."] = "No puc crear la col·lecció.";
-App::$strings["Collection updated."] = "Col·lecció actualitzada.";
-App::$strings["Create a collection of channels."] = "Creada una col·lecció de canals.";
-App::$strings["Collection Name: "] = "Nom de la Col·lecció:";
+App::$strings["Photos"] = "Fotos";
+App::$strings["Cancel"] = "Cancel·la";
+App::$strings["This site is not a directory server"] = "Aquest lloc web no és un servidor de directori";
+App::$strings["This directory server requires an access token"] = "Aquest servidor de directori requereix un token de accès";
+App::$strings["Save to Folder:"] = "Guardar en la Carpeta";
+App::$strings["- select -"] = "- selecciona -";
+App::$strings["Save"] = "Guardar";
+App::$strings["Invalid message"] = "Missatge invàlid.";
+App::$strings["no results"] = "sense resultats";
+App::$strings["Delivery report for %1\$s"] = "Informe de lliurament per %1\$s";
+App::$strings["channel sync processed"] = "sincronització del canal processada";
+App::$strings["queued"] = "Posat en cua";
+App::$strings["posted"] = "enviat";
+App::$strings["accepted for delivery"] = "acceptat per entregar";
+App::$strings["updated"] = "actualitzat";
+App::$strings["update ignored"] = "actualització ignorada";
+App::$strings["permission denied"] = "permís denegat";
+App::$strings["recipient not found"] = "Contenidor no trobat";
+App::$strings["mail recalled"] = "Recupera el correu";
+App::$strings["duplicate mail received"] = "rebut correu duplicat";
+App::$strings["mail delivered"] = "correu entregat";
+App::$strings["Layout Name"] = "Nom del Format Gràfic";
+App::$strings["Layout Description (Optional)"] = "Descripció del Format (Opcional)";
+App::$strings["Edit Layout"] = "Edita Format Gràfic";
+App::$strings["Page link"] = "Enllaç de la pàgina";
+App::$strings["Edit Webpage"] = "Edita la Pàgina Web";
+App::$strings["Channel added."] = "S'ha afegit el canal.";
+App::$strings["network"] = "xarxa";
+App::$strings["RSS"] = "RSS";
+App::$strings["Privacy group created."] = "Creat grup privat.";
+App::$strings["Could not create privacy group."] = "No es pot crear el grup privat.";
+App::$strings["Privacy group not found."] = "No es troben grups privats.";
+App::$strings["Privacy group updated."] = "Grup privat actualitzat.";
+App::$strings["Create a group of channels."] = "Crear un grup de canals.";
+App::$strings["Privacy group name: "] = "Nom del grup privat:";
App::$strings["Members are visible to other channels"] = "Els membres son visibles en altres canals";
-App::$strings["Collection removed."] = "Col·lecció esborrada.";
-App::$strings["Unable to remove collection."] = "Incapaç d'esborrar la col·lecció.";
-App::$strings["Collection Editor"] = "Editor de Col·leccions";
+App::$strings["Privacy group removed."] = "Grup privat eliminat.";
+App::$strings["Unable to remove privacy group."] = "No puc eliminar el grup privat.";
+App::$strings["Privacy group editor"] = "Editor del grup privat";
App::$strings["Members"] = "Membres";
App::$strings["All Connected Channels"] = "Tots els Canals Connectats";
App::$strings["Click on a channel to add or remove."] = "Clic sobre el canal per afegir o esborrar.";
-App::$strings["Version %s"] = "Versió %s";
-App::$strings["Installed plugins/addons/apps:"] = "Plugins/addons/apps Instal·lats:";
-App::$strings["No installed plugins/addons/apps"] = "Plugins/addons/apps no instal·lats";
-App::$strings["\$Projectname"] = "\$Projectname";
-App::$strings["This is a hub of \$Projectname - a global cooperative network of decentralized privacy enhanced websites."] = "Aquest és un hub de \$Projectname, una xarxa cooperativa mundial de llocs web descentralitzats amb gran control de la privacitat.";
-App::$strings["Tag: "] = "Etiqueta:";
-App::$strings["Last background fetch: "] = "Última actualització en rerefons:";
-App::$strings["Running at web location"] = "Correguent en el lloc web";
-App::$strings["Please visit <a href=\"https://redmatrix.me\">redmatrix.me</a> to learn more about \$Projectname."] = "Ves a <a href=\"https://redmatrix.me\">redmatrix.me</a> per saber-ne més sobre \$Projectname.";
-App::$strings["Bug reports and issues: please visit"] = "Per informar d'errors o problemes ves a";
-App::$strings["\$projectname issues"] = "\$projectname emisions";
-App::$strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Per suggerències, felicitacions i altres, envia'ns un mail a «redmatrix» [arroba] librelist [punt] com";
-App::$strings["Site Administrators"] = "Administradors del lloc";
-App::$strings["Unable to locate original post."] = "No s'ha pogut trobar l'entrada original.";
-App::$strings["Empty post discarded."] = "S'ha descartat l'entrada perquè no té contingut.";
-App::$strings["Executable content type not permitted to this channel."] = "No està permès el contingut de tipus executable en aquest canal.";
-App::$strings["System error. Post not saved."] = "Hi ha hagut un error del sistema. L'entrada no s'ha desat.";
-App::$strings["Unable to obtain post information from database."] = "No s'ha pogut obtenir informació de l'entrada a la base de dades.";
-App::$strings["You have reached your limit of %1$.0f top level posts."] = "Has assolit el teu límit de %1$.0f entrades (descomptant comentaris).";
-App::$strings["You have reached your limit of %1$.0f webpages."] = "Has assolit el teu limit de %1$.0f pàgines web.";
-App::$strings["No such group"] = "No existeix el grup";
-App::$strings["No such channel"] = "No existeix el canal";
-App::$strings["Search Results For:"] = "Cerca resultats per:";
-App::$strings["Collection is empty"] = "La coŀlecció és buida";
-App::$strings["Collection: "] = "Coŀlecció:";
-App::$strings["Connection: "] = "Connexió:";
-App::$strings["Invalid connection."] = "La connexió és invàlida.";
-App::$strings["No channel."] = "No s'ha trobat el canal";
-App::$strings["Common connections"] = "Connexions en comú";
-App::$strings["No connections in common."] = "No hi ha connexions en comú.";
-App::$strings["This site is not a directory server"] = "Aquest lloc web no és un servidor de directori";
-App::$strings["Could not access contact record."] = "No s'ha pogut accedir al llibre de contactes.";
-App::$strings["Could not locate selected profile."] = "No s'ha trobat el perfil indicat.";
-App::$strings["Connection updated."] = "S'ha actualitzat la connexió.";
-App::$strings["Failed to update connection record."] = "No s'ha pogut actualitzar el registre de connexió.";
-App::$strings["Blocked"] = "Bloquejades";
-App::$strings["Ignored"] = "Ignorades";
-App::$strings["Hidden"] = "Amagades";
-App::$strings["Archived"] = "Arxivades";
-App::$strings["Suggest new connections"] = "Suggereix noves connexions";
-App::$strings["New Connections"] = "Noves Connexions";
-App::$strings["Show pending (new) connections"] = "Mostra les connexions pendents (noves)";
-App::$strings["All Connections"] = "Totes les Connexions";
-App::$strings["Show all connections"] = "Mostra totes les connexions";
-App::$strings["Unblocked"] = "No bloquejades";
-App::$strings["Only show unblocked connections"] = "Mostra només les connexions no bloquejades";
-App::$strings["Only show blocked connections"] = "Mostra només les connexions bloquejades";
-App::$strings["Only show ignored connections"] = "Mostra només les connexions ignorades";
-App::$strings["Only show archived connections"] = "Mostra només les connexions arxivades";
-App::$strings["Only show hidden connections"] = "Mostra només les connexions amagades";
-App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-App::$strings["Edit connection"] = "Modifica la connexió";
-App::$strings["Search your connections"] = "Cerca entre les teves connexions";
-App::$strings["Finding: "] = "Cercant:";
-App::$strings["Block Name"] = "Nom del Bloc";
-App::$strings["Block Title"] = "Títol del bloc";
-App::$strings["Item not found"] = "No s'ha trobat l'element";
-App::$strings["Item is not editable"] = "Article no editable";
-App::$strings["Delete item?"] = "Esborrar ítem";
-App::$strings["Insert YouTube video"] = "insereix video YouTube";
-App::$strings["Insert Vorbis [.ogg] video"] = "Insereix video Vorbis [.ogg]";
-App::$strings["Insert Vorbis [.ogg] audio"] = "Insereix audio Vorbis [.ogg]";
-App::$strings["\$Projectname - Guests: Username: {your email address}, Password: +++"] = "\$Projectname - Convidats: Nom d'usuari: {el teu correu electrònic}, Contrasenya: +++";
-App::$strings["Page owner information could not be retrieved."] = "La informació del propietari de la pàgina no va poder ser recuperada";
-App::$strings["Album not found."] = "Àlbum no trobat";
-App::$strings["Delete Album"] = "Esborra Àlbum";
-App::$strings["Delete Photo"] = "Esborra Foto";
-App::$strings["No photos selected"] = "No has seleccionat fotos";
-App::$strings["Access to this item is restricted."] = "L'accés a aquest element esta restringit.";
-App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "S'estan fent servir %1$.2f MB de %2$.2f MB de l'espai per a imatges.";
-App::$strings["%1$.2f MB photo storage used."] = "S'estan fent servir %1$.2f MB de l'espai per a imatges.";
-App::$strings["Upload Photos"] = "Puja imatges";
-App::$strings["Enter a new album name"] = "Escriu el nom del nou àlbum";
-App::$strings["or select an existing one (doubleclick)"] = "o bé fes doble clic a un d'existent";
-App::$strings["Create a status post for this upload"] = "Genera una entrada a partir de la pujada";
-App::$strings["Album name could not be decoded"] = "No s'ha pogut descodificar el nom de l'àlbum";
-App::$strings["Contact Photos"] = "Imatges de contactes";
-App::$strings["Show Newest First"] = "Ordena de més nou a més antic";
-App::$strings["Show Oldest First"] = "Ordena de més antic a més nou";
-App::$strings["View Photo"] = "Mostra la imatge";
-App::$strings["Edit Album"] = "Modifica l'àlbum";
-App::$strings["Permission denied. Access to this item may be restricted."] = "S'ha denegat el permís. Pot ser que l'accés estigui restringit.";
-App::$strings["Photo not available"] = "La imatge no està disponible";
-App::$strings["Use as profile photo"] = "Fes-la imatge de perfil";
-App::$strings["Private Photo"] = "Imatge privada";
-App::$strings["View Full Size"] = "Mostra a mida completa";
-App::$strings["Edit photo"] = "Modifica la imatge";
-App::$strings["Rotate CW (right)"] = "Tomba cap a la dreta";
-App::$strings["Rotate CCW (left)"] = "Tomba cap a l'esquerra";
-App::$strings["Caption"] = "Llegenda";
-App::$strings["Add a Tag"] = "Afegeix una etiqueta";
-App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Exemple: @joan, @Paula_Peris, @mar@exemple.org";
-App::$strings["Flag as adult in album view"] = "Marca com a contingut adult";
-App::$strings["In This Photo:"] = "Hi apareixen:";
-App::$strings["Map"] = "Mapa";
-App::$strings["View Album"] = "Mostra'n l'àlbum";
-App::$strings["Recent Photos"] = "Imatges recents";
-App::$strings["Items tagged with: %s"] = "Elements etiquetats amb: %s";
-App::$strings["Search results for: %s"] = "Resultats de cerca per: %s";
-App::$strings["Profile Match"] = "Perfils compatibles";
-App::$strings["No keywords to match. Please add keywords to your default profile."] = "No tens paraules clau al perfil principal per poder cercar perfils semblants.";
-App::$strings["is interested in:"] = "té interès en:";
-App::$strings["No matches"] = "No s'han trobat perfils compatibles";
-App::$strings["Away"] = "Absent";
-App::$strings["Online"] = "En connexió";
-App::$strings["Select a bookmark folder"] = "Tria una carpeta d'interès";
-App::$strings["Save Bookmark"] = "Guarda Favorits";
-App::$strings["URL of bookmark"] = "URL de favorit";
-App::$strings["Description"] = "Descripció";
-App::$strings["Or enter new bookmark folder name"] = "O entra un nou nom de favorit";
-App::$strings["No more system notifications."] = "No hi ha més notificacions de sistema.";
-App::$strings["System Notifications"] = "Notificacions de sistema";
-App::$strings["network"] = "xarxa";
-App::$strings["RSS"] = "RSS";
-App::$strings["Layout updated."] = "S'ha actualitzat la disposició.";
-App::$strings["Edit System Page Description"] = "Editor del Sistema de Descripció de Pàgines";
-App::$strings["Layout not found."] = "No s'ha trobat cap disposició de pàgina.";
-App::$strings["Module Name:"] = "Nom del mòdul:";
-App::$strings["Layout Help"] = "Ajuda per la disposició de pàgina";
-App::$strings["- select -"] = "- selecciona -";
+App::$strings["Share content from Firefox to \$Projectname"] = "Compartir contingut des de Firefox a \$Projectname";
+App::$strings["Activate the Firefox \$Projectname provider"] = "Activar el proveïdor de \$Projectname a Firefox";
+App::$strings["Authorize application connection"] = "Autoritza la connexió de l'aplicació";
+App::$strings["Return to your app and insert this Securty Code:"] = "Torna a la teva aplicació i insereix aquest Codi de Seguretat:";
+App::$strings["Please login to continue."] = "Si et plau, identifica't per continuar.";
+App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Vols autoritzar a aquesta aplicació l'accés a les teves entrades i contactes i/o a crear noves entrades com si fos tu mateix.";
+App::$strings["Documentation Search"] = "Cerca de Documentació";
+App::$strings["Help:"] = "Ajuda:";
+App::$strings["Help"] = "Ajuda";
+App::$strings["\$Projectname Documentation"] = "\$Projectname Documentació";
+App::$strings["Permission Denied."] = "Permisos Denegats.";
+App::$strings["File not found."] = "Arxiu no torbat.";
+App::$strings["Edit file permissions"] = "Edita els permisos d'arxiu";
+App::$strings["Set/edit permissions"] = "Canvia/edita permisos";
+App::$strings["Include all files and sub folders"] = "Inclou tots als arxius i subdirectoris";
+App::$strings["Return to file list"] = "Tornar al llistat d'arxius";
+App::$strings["Copy/paste this code to attach file to a post"] = "Copia/enganxa aquest codi per a adjuntar un arxiu a l'entrada";
+App::$strings["Copy/paste this URL to link file from a web page"] = "Copia/enganxa aquesta URL per a enllaçar l'arxiu d'una pàgina web";
+App::$strings["Share this file"] = "Comparteix l'arxiu";
+App::$strings["Show URL to this file"] = "Mostra la URL d'aquest arxiu";
+App::$strings["Notify your contacts about this file"] = "Notifica als teus contactes aquest arxiu";
+App::$strings["Apps"] = "Aplicatius";
+App::$strings["Item not available."] = "Article no disponible.";
App::$strings["Your service plan only allows %d channels."] = "El teu paquet de serveis només admet %d canals.";
App::$strings["Nothing to import."] = "No hi ha res a importar.";
App::$strings["Unable to download data from old server"] = "No s'han pogut descarregar les dades del servidor antic";
App::$strings["Imported file is empty."] = "El fitxer importat està buit.";
-App::$strings["The data provided is not compatible with this project."] = "Les dades subministrades no son compatibles amb aquest projecte.";
App::$strings["Warning: Database versions differ by %1\$d updates."] = "Atenció: Les versions de la Base de Dades difereixen en %1\$d actualitzacions.";
-App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "No s'ha pogut importar el canal perquè l'identificador del canal no s'ha pogut duplicar en aquest servidor.";
-App::$strings["Channel clone failed. Import failed."] = "No s'ha pogut importar el canal perquè el canal no s'ha pogut clonar.";
App::$strings["Cloned channel not found. Import failed."] = "No s'ha pogut importar el canal perquè el canal clonat no s'ha trobat.";
+App::$strings["No channel. Import failed."] = "Sense canal. No s'ha pogut importar.";
+App::$strings["Import completed."] = "S'ha completat la importació.";
App::$strings["You must be logged in to use this feature."] = "Has d'estar registrat per fer servir aquesta funcionalitat.";
App::$strings["Import Channel"] = "Importa un canal";
App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "Empra aquest formulari per importar un canal existent en un altre servidor/concentrador. Pots recuperar el canal des de l'antic servidor/concentrador via la xarxa o mitjançant un fitxer d'exportació";
App::$strings["File to Upload"] = "Fitxer a pujar";
-App::$strings["Or provide the old server/hub details"] = "O proveeix els detalls de l'antic servidor/concentrador";
+App::$strings["Or provide the old server/hub details"] = "O proveeix els detalls de l'antic servidor/node";
App::$strings["Your old identity address (xyz@example.com)"] = "La teva adreça de canal antiga. El format és canal@exemple.org";
App::$strings["Your old login email address"] = "La teva adreça de correu electrònic antiga";
App::$strings["Your old login password"] = "La teva contrasenya antiga";
-App::$strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Per a qualsevol de les opcions, escull si vols fer primària l'adreça d'aquest hub o mantenir l'anterior com a primària. Podràs penjar entrades des de totes dues adreces, però per als fitxers, imatges i altres en cal una de primària.";
-App::$strings["Make this hub my primary location"] = "Fes d'aquest hub la meva ubicació primària";
+App::$strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Per a qualsevol de les opcions, escull si vols fer primària l'adreça d'aquest node o mantenir l'anterior com a primària. Podràs penjar entrades des de totes dues adreces, però per als fitxers, imatges i altres en cal una de primària.";
+App::$strings["Make this hub my primary location"] = "Fes d'aquest node la meva ubicació primària";
App::$strings["Import existing posts if possible (experimental - limited by available memory"] = "Importa les entrades existents si es possible (experimental - limitat per la memòria disponible";
App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Aquest procès pot trigar minuts en completar. Si et plau envia el formulari només una vegada i manté aquesta pàgina oberta fins que finalitzi.";
-App::$strings["Delete layout?"] = "Esborra format?";
-App::$strings["Layout Description (Optional)"] = "Descripció del Format (Opcional)";
-App::$strings["Layout Name"] = "Nom del Format Gràfic";
-App::$strings["Edit Layout"] = "Edita Format Gràfic";
-App::$strings["You must be logged in to see this page."] = "Has d'estar identificat per a veure aquesta pàgina.";
-App::$strings["Room not found"] = "No s'ha trobat la sala";
-App::$strings["Leave Room"] = "Abandona la sala";
-App::$strings["Delete This Room"] = "Elimina la sala";
-App::$strings["I am away right now"] = "Absent";
-App::$strings["I am online"] = "Estic connectat/da";
-App::$strings["Bookmark this room"] = "Fes favorit aquest xat";
-App::$strings["New Chatroom"] = "Nova sala per a Xerrar";
-App::$strings["Chatroom Name"] = "Nom del Xat";
-App::$strings["%1\$s's Chatrooms"] = "%1\$s de Xats";
-App::$strings["Menu not found."] = "Menú no trobat.";
-App::$strings["Unable to create element."] = "Incapaç de crear l'element.";
-App::$strings["Unable to update menu element."] = "Incapaç d'actualitzar un element del menú.";
-App::$strings["Unable to add menu element."] = "Incapaç d'afegir l'element del menú.";
-App::$strings["Menu Item Permissions"] = "Permisos de l'Article del Menú";
-App::$strings["(click to open/close)"] = "(clica per obrir/tancar)";
-App::$strings["Link Name"] = "Nom de l'Enllaç";
-App::$strings["Link or Submenu Target"] = "Enllaç o Submenú Objectiu";
-App::$strings["Enter URL of the link or select a menu name to create a submenu"] = "Entra la URL de l'enlla´o tria un nom de menú per crear un submenú";
-App::$strings["Use magic-auth if available"] = "Empra magic-auth si esta disponible";
-App::$strings["Open link in new window"] = "Obrir l'enllaç en una nova finestra";
-App::$strings["Order in list"] = "Ordre per llista";
-App::$strings["Higher numbers will sink to bottom of listing"] = "Els números més alts aniràn al fons de la llista";
-App::$strings["Submit and finish"] = "Envia i termina";
-App::$strings["Submit and continue"] = "Envia i continua";
-App::$strings["Menu:"] = "Menú:";
-App::$strings["Link Target"] = "Enllaç Objectiu";
-App::$strings["Edit menu"] = "Edita menú";
-App::$strings["Edit element"] = "Edita element";
-App::$strings["Drop element"] = "Deixa anar element";
-App::$strings["New element"] = "Nou element";
-App::$strings["Edit this menu container"] = "Edita aquest contenidor de menú";
-App::$strings["Add menu element"] = "Afegeix element de menú";
-App::$strings["Delete this menu item"] = "Esborra aquest article del menú";
-App::$strings["Edit this menu item"] = "Edita aquest article del menú";
-App::$strings["Menu item not found."] = "Article del menú no trobat.";
-App::$strings["Menu item deleted."] = "Article del menú eliminat.";
-App::$strings["Menu item could not be deleted."] = "Article del menú no es pot eliminar.";
-App::$strings["Edit Menu Element"] = "Editar Element del Menú";
-App::$strings["Link text"] = "Enllaç de text";
-App::$strings["Delete webpage?"] = "Esborrar pàgina web?";
-App::$strings["Page link title"] = "Títol de la pàgina enllaçada";
-App::$strings["Edit Webpage"] = "Edita la Pàgina Web";
-App::$strings["This directory server requires an access token"] = "Aquest servidor de directori requereix un token de accès";
-App::$strings["No valid account found."] = "No es troba un compte vàlid.";
-App::$strings["Password reset request issued. Check your email."] = "Sol·licitud de restabliment de contrasenya emesa. Consulta el teu correu electrònic.";
-App::$strings["Site Member (%s)"] = "Lloc d'Usuari (%s)";
-App::$strings["Password reset requested at %s"] = "S'ha soŀlicitat restablir la contrasenya al hub %s";
-App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Ha fallat el restabliment de contrasenya perquè la no s'ha pogut verificar soŀlicitud. Pot ser que ja ho hàgiu soŀlicitat abans.";
-App::$strings["Password Reset"] = "Restabliment de contrasenya";
-App::$strings["Your password has been reset as requested."] = "S'ha restablert la vostra contrasenya.";
-App::$strings["Your new password is"] = "La nova contrasenya és";
-App::$strings["Save or copy your new password - and then"] = "Desa o copia la nova contrasenya, i després";
-App::$strings["click here to login"] = "fes clic aquí per iniciar sessió";
-App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Pots canviar la contrasenya a la pàgina <em>Paràmetres</em>, un cop iniciada la sessió.";
-App::$strings["Your password has changed at %s"] = "La teva contrasenya a %s ha canviat";
-App::$strings["Forgot your Password?"] = "No recordes la contrasenya?";
-App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Escriu la teva adreça de correu electrònic i envia per restablir la contrasenya. Després revisa el seu correu electrònic per obtenir més instruccions.";
-App::$strings["Email Address"] = "Adreça electrònica";
-App::$strings["Reset"] = "Reajustar";
-App::$strings["Website:"] = "Lloc web:";
-App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Canal Remot [%s] (encara no es coneix en aquest lloc)";
-App::$strings["Rating (this information is public)"] = "Valoració (aquesta informació és pública)";
-App::$strings["Optionally explain your rating (this information is public)"] = "Opcionalment pots explicar la teva qualificació (aquesta informació és pública)";
-App::$strings["Delete block?"] = "Eliminar bloc?";
-App::$strings["Edit Block"] = "Editar Bloc";
+App::$strings["Unable to locate original post."] = "No s'ha pogut trobar l'entrada original.";
+App::$strings["Empty post discarded."] = "S'ha descartat l'entrada perquè no té contingut.";
+App::$strings["Executable content type not permitted to this channel."] = "No està permès el contingut de tipus executable en aquest canal.";
+App::$strings["Duplicate post suppressed."] = "Publicació duplicada s'ha suprimit.";
+App::$strings["System error. Post not saved."] = "Hi ha hagut un error del sistema. L'entrada no s'ha desat.";
+App::$strings["Unable to obtain post information from database."] = "No s'ha pogut obtenir informació de l'entrada a la base de dades.";
+App::$strings["You have reached your limit of %1$.0f top level posts."] = "Has assolit el teu límit de %1$.0f entrades (descomptant comentaris).";
+App::$strings["You have reached your limit of %1$.0f webpages."] = "Has assolit el teu limit de %1$.0f pàgines web.";
+App::$strings["Layouts"] = "Format Gràfic";
+App::$strings["Comanche page description language help"] = "Pgina d'ajuda del llenguatge Comanche";
+App::$strings["Layout Description"] = "Descripció del Disseny de la Pàgina";
+App::$strings["Download PDL file"] = "Descarrega l'arxiu PDL";
+App::$strings["\$Projectname"] = "\$Projectname";
+App::$strings["Welcome to %s"] = "Benvingut a %s";
+App::$strings["First Name"] = "Nom";
+App::$strings["Last Name"] = "Cognoms";
+App::$strings["Nickname"] = "Àlies";
+App::$strings["Full Name"] = "Nom Sencer";
+App::$strings["Email"] = "Correu electrónic";
+App::$strings["Profile Photo"] = "Foto del Perfil";
+App::$strings["Profile Photo 16px"] = "Foto del Perfil 16px";
+App::$strings["Profile Photo 32px"] = "Foto del Perfil 32px";
+App::$strings["Profile Photo 48px"] = "Foto del Perfil 48px";
+App::$strings["Profile Photo 64px"] = "Foto del Perfil 64px";
+App::$strings["Profile Photo 80px"] = "Foto del Perfil 80px";
+App::$strings["Profile Photo 128px"] = "Foto del Perfil 128px";
+App::$strings["Timezone"] = "Zona horària";
+App::$strings["Homepage URL"] = "URL de la pàgina d'inici";
+App::$strings["Language"] = "Idioma";
+App::$strings["Birth Year"] = "Any de Naixement";
+App::$strings["Birth Month"] = "Mes de Naixement";
+App::$strings["Birth Day"] = "Dia de Naixement";
+App::$strings["Birthdate"] = "Aniversari";
+App::$strings["Gender"] = "Gènere";
+App::$strings["Male"] = "Masculí";
+App::$strings["Female"] = "Femení";
+App::$strings["webpage"] = "pàgina web";
+App::$strings["block"] = "bloc";
+App::$strings["layout"] = "disposició";
+App::$strings["menu"] = "menú";
+App::$strings["%s element installed"] = "%s element instal·lat";
+App::$strings["%s element installation failed"] = "%s instal·lació d'element va fallar";
+App::$strings["Like/Dislike"] = "M'agrada / No m'agrada";
+App::$strings["This action is restricted to members."] = "Aquesta acció està restringida als membres.";
+App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "<a href=\"rmagic\">Entra amb la teva identitat \$Projectname</a> o <a href=\"register\">registra't a \$Projectname</a> per continuar.";
+App::$strings["Invalid request."] = "Sol·licitud invàlida.";
+App::$strings["channel"] = "canal";
+App::$strings["thing"] = "cosa";
+App::$strings["Channel unavailable."] = "El canal està inactiu.";
+App::$strings["Previous action reversed."] = "S'ha desfet l'acció anterior.";
+App::$strings["photo"] = "foto";
+App::$strings["status"] = "estat";
+App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s agrada %2\$s de %3\$s";
+App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s no agrada %2\$s de %3\$s";
+App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s està d'acord amb %3\$s de %2\$s";
+App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s no està d'acord amb %3\$s de %2\$s";
+App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s s'abstén en %3\$s de %2\$s";
+App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s assistirà a %3\$s de %2\$s";
+App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s no assistirà a %3\$s de %2\$s";
+App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s potser assistirà a %3\$s de %2\$s";
+App::$strings["Action completed."] = "S'ha completat l'acció.";
+App::$strings["Thank you."] = "Gràcies.";
+App::$strings["Import completed"] = "S'ha completat la importació";
+App::$strings["Import Items"] = "Importa Articles";
+App::$strings["Use this form to import existing posts and content from an export file."] = "Empra aquest formulari per importar entrades existents i contingut d'un arxiu d'exportació.";
App::$strings["Total invitation limit exceeded."] = "El límit total invitacions s'ha superat.";
App::$strings["%s : Not a valid email address."] = "%s: adreça de correu electrònic no vàlida.";
-App::$strings["Please join us on Red"] = "Si us plau, uneix-te a Red";
+App::$strings["Please join us on \$Projectname"] = "Si us plau uneix-te a nosaltres a \$Projectname.";
App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Límit d'invitacions excedit. Si us plau, poseu-vos en contacte amb l'administrador del lloc.";
App::$strings["%s : Message delivery failed."] = "%s : Entrega del Missatge fallida.";
App::$strings["%d message sent."] = array(
@@ -1309,33 +453,76 @@ App::$strings["Send invitations"] = "Enviar invitacions";
App::$strings["Enter email addresses, one per line:"] = "Introduïu les adreces de correu electrònic, una per línia:";
App::$strings["Your message:"] = "El teu missatge:";
App::$strings["Please join my community on \$Projectname."] = "Si us plau uneix-te la meva comunitat en \$Projectname.";
-App::$strings["You will need to supply this invitation code: "] = "Has de proporcionar aquest codi d'invitació:";
-App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Registre en qualsevol lloc del \$Projectname (estàn tots interconnectats)";
-App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Entra a la meva adreça de xarxa al \$Projectname, a la barra de cerca del lloc.";
-App::$strings["or visit "] = "o visita";
-App::$strings["3. Click [Connect]"] = "3. Click [Conectar]";
+App::$strings["You will need to supply this invitation code:"] = "Hauràs de facilitar aquest codi d'invitació:";
+App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Pots registrar-te a qualsevol node de \$Projectname (estàn tots interconnectats)";
+App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Escriu la meva adreça de xarxa al \$Projectname, a la barra de cerca del lloc.";
+App::$strings["or visit"] = "o visitar";
+App::$strings["3. Click [Connect]"] = "3. Clicar [Conectar]";
+App::$strings["Remote privacy information not available."] = "informació privada remota no disponible.";
+App::$strings["Visible to:"] = "Visible per:";
App::$strings["Location not found."] = "Situació que no es troba.";
-App::$strings["Primary location cannot be removed."] = "La ubicació primària no es pot treure.";
+App::$strings["Location lookup failed."] = "Ha fallat la cerca d'ubicació.";
+App::$strings["Please select another location to become primary before removing the primary location."] = "Seleccioneu una altra ubicació per esdevenir primària abans de retirar la ubicació principal.";
+App::$strings["Syncing locations"] = "Sincronitza ubicacions";
App::$strings["No locations found."] = "No es troben els llocs.";
App::$strings["Manage Channel Locations"] = "Gestionar Ubicacions de Canal";
-App::$strings["Location (address)"] = "Ubicació (direcció)";
-App::$strings["Primary Location"] = "Ubicació Primària";
-App::$strings["Drop location"] = "Treure la ubicació";
-App::$strings["Failed to create source. No channel selected."] = "Error en crear l'origen. Cap canal seleccionat.";
-App::$strings["Source created."] = "Origen creat.";
-App::$strings["Source updated."] = "Origen actualitzat.";
-App::$strings["*"] = "*";
-App::$strings["Manage remote sources of content for your channel."] = "Gestiona contingut per al teu canal d'origens remots";
-App::$strings["New Source"] = "Nou Origen";
-App::$strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importar tot o sel·lecciona contingut dels següents canals, en aquest canal i distribueix-lo d'acord als teus ajustos de canals.";
-App::$strings["Only import content with these words (one per line)"] = "Només importa contingut amb aquestes paraules (una per línia)";
-App::$strings["Leave blank to import all public content"] = "Deixar en blanc per importar tot el contingut públic";
-App::$strings["Channel Name"] = "Nom del canal";
-App::$strings["Source not found."] = "No s'ha trobat la font.";
-App::$strings["Edit Source"] = "Edita la font";
-App::$strings["Delete Source"] = "Esborra la font";
-App::$strings["Source removed"] = "S'ha esborrat la font";
-App::$strings["Unable to remove source."] = "No s'ha pogut esborrar la font.";
+App::$strings["Address"] = "Adreça";
+App::$strings["Primary"] = "Primari";
+App::$strings["Drop"] = "Menysprea";
+App::$strings["Sync Now"] = "Sincronitza Ara";
+App::$strings["Please wait several minutes between consecutive operations."] = "Si us plau espera diversos minuts entre operacions consecutives.";
+App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Quan sigui possible, per desapareixer d'un lloc, accedeix a aquest lloc web/node i elimina el teu canal.";
+App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Empra aquest formulari per desapareixer del lloc si el node ja no està operatiu.";
+App::$strings["Hub not found."] = "Node no trobat.";
+App::$strings["Unable to lookup recipient."] = "Incapaç de trobar el destinatari.";
+App::$strings["Unable to communicate with requested channel."] = "Incapaç de comunicar amb el canal demanat.";
+App::$strings["Cannot verify requested channel."] = "No puc verificar el canal demanat.";
+App::$strings["Selected channel has private message restrictions. Send failed."] = "El canal seleccionat te restriccions sobre els missatges privats. L'enviament ha fallat.";
+App::$strings["Messages"] = "Missatges";
+App::$strings["Message recalled."] = "Recupera el missatge.";
+App::$strings["Conversation removed."] = "Conversació eliminada.";
+App::$strings["Expires YYYY-MM-DD HH:MM"] = "Expira YYYY-MM-DD HH:MM";
+App::$strings["Requested channel is not in this network"] = "El canal demanat no hi es en questa xarxa";
+App::$strings["Send Private Message"] = "Envia Missatge Privat";
+App::$strings["To:"] = "Per:";
+App::$strings["Subject:"] = "Assumpte:";
+App::$strings["Attach file"] = "Adjunta arxiu";
+App::$strings["Send"] = "Envia";
+App::$strings["Set expiration date"] = "Ajusta la data d'expiració";
+App::$strings["Delete message"] = "Elimina el missatge";
+App::$strings["Delivery report"] = "Informe d'entrega";
+App::$strings["Recall message"] = "Recupera el missatge";
+App::$strings["Message has been recalled."] = "El missatge s'ha recuperat.";
+App::$strings["Delete Conversation"] = "Conversació esborrada";
+App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Comunicació segura no disponible. Pots respondre des de la pàgina de perfil del remitent.";
+App::$strings["Send Reply"] = "Envia Resposta";
+App::$strings["Your message for %s (%s):"] = "El teu missatge per %s (%s):";
+App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Has creat %1$.0f de %2$.0f canals permesos.";
+App::$strings["Create a new channel"] = "Crear un nou canal";
+App::$strings["Channel Manager"] = "Gestor de Canals";
+App::$strings["Current Channel"] = "Canal Actual";
+App::$strings["Switch to one of your channels by selecting it."] = "Canviar a un altre dels teus canals seleccionant-ho.";
+App::$strings["Default Channel"] = "Canal per Defecte";
+App::$strings["Make Default"] = "Estableix com a Predeterminat";
+App::$strings["%d new messages"] = "%d missatges nous";
+App::$strings["%d new introductions"] = "%d noves presentacions";
+App::$strings["Delegated Channel"] = "Canal Delegat";
+App::$strings["No valid account found."] = "No es troba un compte vàlid.";
+App::$strings["Password reset request issued. Check your email."] = "Sol·licitud de restabliment de contrasenya emesa. Consulta el teu correu electrònic.";
+App::$strings["Site Member (%s)"] = "Lloc d'Usuari (%s)";
+App::$strings["Password reset requested at %s"] = "S'ha soŀlicitat restablir la contrasenya al hub %s";
+App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Ha fallat el restabliment de contrasenya perquè la no s'ha pogut verificar soŀlicitud. Pot ser que ja ho hàgiu soŀlicitat abans.";
+App::$strings["Password Reset"] = "Restabliment de contrasenya";
+App::$strings["Your password has been reset as requested."] = "S'ha restablert la vostra contrasenya.";
+App::$strings["Your new password is"] = "La nova contrasenya és";
+App::$strings["Save or copy your new password - and then"] = "Desa o copia la nova contrasenya, i després";
+App::$strings["click here to login"] = "fes clic aquí per iniciar sessió";
+App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Pots canviar la contrasenya a la pàgina <em>Paràmetres</em>, un cop iniciada la sessió.";
+App::$strings["Your password has changed at %s"] = "La teva contrasenya a %s ha canviat";
+App::$strings["Forgot your Password?"] = "No recordes la contrasenya?";
+App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Escriu la teva adreça de correu electrònic i envia per restablir la contrasenya. Després revisa el seu correu electrònic per obtenir més instruccions.";
+App::$strings["Email Address"] = "Adreça electrònica";
+App::$strings["Reset"] = "Reajustar";
App::$strings["Unable to update menu."] = "No s'ha pogut actualitzar el menú.";
App::$strings["Unable to create menu."] = "No s'ha pogut crear el menú.";
App::$strings["Menu Name"] = "Nom del menú";
@@ -1345,12 +532,13 @@ App::$strings["Visible on webpage - leave empty for no title"] = "Visible a la p
App::$strings["Allow Bookmarks"] = "Permetre Marcadors";
App::$strings["Menu may be used to store saved bookmarks"] = "El menú es pot emprar per a guardar marcadors";
App::$strings["Submit and proceed"] = "Envia i procedeix";
-App::$strings["Drop"] = "Menysprea";
+App::$strings["Menus"] = "Menús";
App::$strings["Bookmarks allowed"] = "Marcadors permesos";
App::$strings["Delete this menu"] = "Esborra el menú";
App::$strings["Edit menu contents"] = "Edita el contingut del menú";
App::$strings["Edit this menu"] = "Edita el menú";
App::$strings["Menu could not be deleted."] = "El menu no es pot esborrar.";
+App::$strings["Menu not found."] = "Menú no trobat.";
App::$strings["Edit Menu"] = "Edita Menú";
App::$strings["Add or remove entries to this menu"] = "Afegeix o esborra entrades a aquest menú";
App::$strings["Menu name"] = "Nom del Menú";
@@ -1358,33 +546,159 @@ App::$strings["Must be unique, only seen by you"] = "Ha de ser únic, nomes vist
App::$strings["Menu title"] = "Títol del menú";
App::$strings["Menu title as seen by others"] = "Títol del menú vist pels altres";
App::$strings["Allow bookmarks"] = "Marcadors permesos";
-App::$strings["Permission Denied."] = "Permisos Denegats.";
-App::$strings["File not found."] = "Arxiu no torbat.";
-App::$strings["Edit file permissions"] = "Edita els permisos d'arxiu";
-App::$strings["Set/edit permissions"] = "Canvia/edita permisos";
-App::$strings["Include all files and sub folders"] = "Inclou tots als arxius i subdirectoris";
-App::$strings["Return to file list"] = "Tornar al llistat d'arxius";
-App::$strings["Copy/paste this code to attach file to a post"] = "Copia/enganxa aquest codi per a adjuntar un arxiu a l'entrada";
-App::$strings["Copy/paste this URL to link file from a web page"] = "Copia/enganxa aquesta URL per a enllaçar l'arxiu d'una pàgina web";
-App::$strings["Share this file"] = "Comparteix l'arxiu";
-App::$strings["Show URL to this file"] = "Mostra la URL d'aquest arxiu";
-App::$strings["Notify your contacts about this file"] = "Notifica als teus contactes aquest arxiu";
-App::$strings["Contact not found."] = "Contacte no trobat.";
-App::$strings["Friend suggestion sent."] = "Suggeriment d'amistat enviada.";
-App::$strings["Suggest Friends"] = "Amics Suggerits";
-App::$strings["Suggest a friend for %s"] = "Suggereix un amic per a %s";
-App::$strings["Hub not found."] = "Concentrador no trobat.";
-App::$strings["Poke/Prod"] = "Emprenyat/Picat";
-App::$strings["poke, prod or do other things to somebody"] = "emprenyar, picar o fer altres coses a algú";
+App::$strings["Not found."] = "No trobat.";
+App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s es %2\$s";
+App::$strings["Mood"] = "Ànim";
+App::$strings["Set your current mood and tell your friends"] = "Estableix el teu estat d'ànim actual i digues-li als teus amics";
+App::$strings["Profile Match"] = "Perfils compatibles";
+App::$strings["No keywords to match. Please add keywords to your default profile."] = "No tens paraules clau al perfil principal per poder cercar perfils semblants.";
+App::$strings["is interested in:"] = "té interès en:";
+App::$strings["No matches"] = "No s'han trobat perfils compatibles";
+App::$strings["No such group"] = "No existeix el grup";
+App::$strings["No such channel"] = "No existeix el canal";
+App::$strings["forum"] = "fòrum";
+App::$strings["Search Results For:"] = "Cerca resultats per:";
+App::$strings["Privacy group is empty"] = "el grup privat està vuit";
+App::$strings["Privacy group: "] = "Grup privat:";
+App::$strings["Invalid connection."] = "La connexió és invàlida.";
+App::$strings["No more system notifications."] = "No hi ha més notificacions del sistema.";
+App::$strings["System Notifications"] = "Notificacions del sistema";
+App::$strings["Unable to create element."] = "Incapaç de crear l'element.";
+App::$strings["Unable to update menu element."] = "Incapaç d'actualitzar un element del menú.";
+App::$strings["Unable to add menu element."] = "Incapaç d'afegir l'element del menú.";
+App::$strings["Menu Item Permissions"] = "Permisos de l'Article del Menú";
+App::$strings["(click to open/close)"] = "(clica per obrir/tancar)";
+App::$strings["Link Name"] = "Nom de l'Enllaç";
+App::$strings["Link or Submenu Target"] = "Enllaç o Submenú Objectiu";
+App::$strings["Enter URL of the link or select a menu name to create a submenu"] = "Entra la URL de l'enlla´o tria un nom de menú per crear un submenú";
+App::$strings["Use magic-auth if available"] = "Empra magic-auth si esta disponible";
+App::$strings["Open link in new window"] = "Obrir l'enllaç en una nova finestra";
+App::$strings["Order in list"] = "Ordre per llista";
+App::$strings["Higher numbers will sink to bottom of listing"] = "Els números més alts aniràn al fons de la llista";
+App::$strings["Submit and finish"] = "Envia i termina";
+App::$strings["Submit and continue"] = "Envia i continua";
+App::$strings["Menu:"] = "Menú:";
+App::$strings["Link Target"] = "Enllaç Objectiu";
+App::$strings["Edit menu"] = "Edita menú";
+App::$strings["Edit element"] = "Edita element";
+App::$strings["Drop element"] = "Deixa anar element";
+App::$strings["New element"] = "Nou element";
+App::$strings["Edit this menu container"] = "Edita aquest contenidor de menú";
+App::$strings["Add menu element"] = "Afegeix element de menú";
+App::$strings["Delete this menu item"] = "Esborra aquest article del menú";
+App::$strings["Edit this menu item"] = "Edita aquest article del menú";
+App::$strings["Menu item not found."] = "Article del menú no trobat.";
+App::$strings["Menu item deleted."] = "Article del menú eliminat.";
+App::$strings["Menu item could not be deleted."] = "Article del menú no es pot eliminar.";
+App::$strings["Edit Menu Element"] = "Editar Element del Menú";
+App::$strings["Link text"] = "Enllaç de text";
+App::$strings["Name or caption"] = "Nom o llegenda";
+App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""] = "Exemples: \"Pep Gomila\", \"Manel i els seus Cavalls\", \"Fútbol\", \"Grup d'Aviadors\"";
+App::$strings["Choose a short nickname"] = "Tria un àlies curt";
+App::$strings["Your nickname will be used to create an easy to remember channel address e.g. nickname%s"] = "El teu àlies serà emprat per crear un nom fàcil per recordar l'adreça del canal p.e. àlies%s";
+App::$strings["Channel role and privacy"] = "Funció i privacitat del canal";
+App::$strings["Select a channel role with your privacy requirements."] = "Tria una funció pel canal amb els teus requisits de privacitat.";
+App::$strings["Read more about roles"] = "Llegix més sobre els rols";
+App::$strings["Create Channel"] = "Crea un Canal";
+App::$strings["A channel is your identity on this network. It can represent a person, a blog, or a forum to name a few. Channels can make connections with other channels to share information with highly detailed permissions."] = "Un canal es la tva identitat en aquesta xarxa. Pot representar una persona, un bloc, o un fòrum per anomenar alguns. Els canals poden connectar-se amb altres canals per compartir informació amb permisos molt detallats.";
+App::$strings["or <a href=\"import\">import an existing channel</a> from another location."] = "o <a href=\"import\">importa un canal existent</a> des d'un altre ubicació.";
+App::$strings["Invalid request identifier."] = "Sol·licitud d'identificació invàlida.";
+App::$strings["Discard"] = "Descarta";
+App::$strings["Mark all system notifications seen"] = "Marca totes les notificacions vistes";
+App::$strings["Page owner information could not be retrieved."] = "La informació del propietari de la pàgina no va poder ser recuperada";
+App::$strings["Profile Photos"] = "Fotos del Perfil";
+App::$strings["Album not found."] = "Àlbum no trobat";
+App::$strings["Delete Album"] = "Esborra Àlbum";
+App::$strings["Multiple storage folders exist with this album name, but within different directories. Please remove the desired folder or folders using the Files manager"] = "Existeixen moltes carpetes de emmagatzemament amb aquest nom d'àlbum, però en diferents directoris. Si us plau esborra la carpeta o carpetes amb el gestor d'arxius.";
+App::$strings["Delete Photo"] = "Esborra Foto";
+App::$strings["No photos selected"] = "No has seleccionat fotos";
+App::$strings["Access to this item is restricted."] = "L'accés a aquest element esta restringit.";
+App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "S'estan fent servir %1$.2f MB de %2$.2f MB de l'espai per a imatges.";
+App::$strings["%1$.2f MB photo storage used."] = "S'estan fent servir %1$.2f MB de l'espai per a imatges.";
+App::$strings["Upload Photos"] = "Puja imatges";
+App::$strings["Enter an album name"] = "Escriu el nom del àlbum";
+App::$strings["or select an existing album (doubleclick)"] = "o bé fes doble clic a un d'existent";
+App::$strings["Create a status post for this upload"] = "Genera una entrada a partir de la pujada";
+App::$strings["Caption (optional):"] = "Subtítol (opcional):";
+App::$strings["Description (optional):"] = "Descripció (opcional):";
+App::$strings["Album name could not be decoded"] = "No s'ha pogut descodificar el nom de l'àlbum";
+App::$strings["Contact Photos"] = "Imatges de contactes";
+App::$strings["Show Newest First"] = "Ordena de més nou a més antic";
+App::$strings["Show Oldest First"] = "Ordena de més antic a més nou";
+App::$strings["View Photo"] = "Mostra la imatge";
+App::$strings["Edit Album"] = "Modifica l'àlbum";
+App::$strings["Permission denied. Access to this item may be restricted."] = "S'ha denegat el permís. Pot ser que l'accés estigui restringit.";
+App::$strings["Photo not available"] = "La imatge no està disponible";
+App::$strings["Use as profile photo"] = "Fes-la imatge de perfil";
+App::$strings["Use as cover photo"] = "Emprar com a foto de portada";
+App::$strings["Private Photo"] = "Imatge privada";
+App::$strings["View Full Size"] = "Mostra a mida completa";
+App::$strings["Remove"] = "Esborra";
+App::$strings["Edit photo"] = "Modifica la imatge";
+App::$strings["Rotate CW (right)"] = "Tomba cap a la dreta";
+App::$strings["Rotate CCW (left)"] = "Tomba cap a l'esquerra";
+App::$strings["Enter a new album name"] = "Escriu el nom del nou àlbum";
+App::$strings["or select an existing one (doubleclick)"] = "o bé fes doble clic a un d'existent";
+App::$strings["Caption"] = "Llegenda";
+App::$strings["Add a Tag"] = "Afegeix una etiqueta";
+App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Exemple: @joan, @Paula_Peris, @mar@exemple.org";
+App::$strings["Flag as adult in album view"] = "Marca com a contingut adult";
+App::$strings["I like this (toggle)"] = "M'agrada això (canvia)";
+App::$strings["I don't like this (toggle)"] = "No m'agrada això (canvia)";
+App::$strings["Please wait"] = "Si us plau, espera";
+App::$strings["This is you"] = "Ets tú";
+App::$strings["Comment"] = "Comentari";
+App::$strings["__ctx:title__ Likes"] = "Agrada";
+App::$strings["__ctx:title__ Dislikes"] = "Desagrada";
+App::$strings["__ctx:title__ Agree"] = "Acord";
+App::$strings["__ctx:title__ Disagree"] = "Desacord";
+App::$strings["__ctx:title__ Abstain"] = "Abstenirse";
+App::$strings["__ctx:title__ Attending"] = "Assistint";
+App::$strings["__ctx:title__ Not attending"] = "Desassistint";
+App::$strings["__ctx:title__ Might attend"] = "Podrien assistir";
+App::$strings["View all"] = "Veure tot";
+App::$strings["__ctx:noun__ Like"] = array(
+ 0 => "Agrada",
+ 1 => "Agraden",
+);
+App::$strings["__ctx:noun__ Dislike"] = array(
+ 0 => "Desagrada",
+ 1 => "Desagrada",
+);
+App::$strings["Photo Tools"] = "Eines per Fotos";
+App::$strings["In This Photo:"] = "Hi apareixen:";
+App::$strings["Map"] = "Mapa";
+App::$strings["__ctx:noun__ Likes"] = "Agrada";
+App::$strings["__ctx:noun__ Dislikes"] = "Desagrada";
+App::$strings["Close"] = "Tanca";
+App::$strings["View Album"] = "Mostra'n l'àlbum";
+App::$strings["Recent Photos"] = "Imatges recents";
+App::$strings["sent you a private message"] = "Se t'ha enviat un missatge privat";
+App::$strings["added your channel"] = "el teu canal s'ha afegit";
+App::$strings["g A l F d"] = "g A l F d";
+App::$strings["[today]"] = "[avui]";
+App::$strings["posted an event"] = "enviat un esdeveniment";
+App::$strings["Unable to find your hub."] = "No es possible trobar el node";
+App::$strings["Post successful."] = "Entrada realitzada amb èxit. ";
+App::$strings["OpenID protocol error. No ID returned."] = "Error del protocol OpenID. No ha retornat ID";
+App::$strings["Login failed."] = "Identificació fallida.";
+App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
+App::$strings["This setting requires special processing and editing has been blocked."] = "Aquest ajust requereix un procés espedial i l'edició esta bloquejada.";
+App::$strings["Configuration Editor"] = "Editor de Configuració";
+App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "atenció: Realitzar segons quins ajustos pot fer el canal inoperable. Deixa aquesta pàgina si no estas segur i tens suficients coneixements sobre l'ús correcte d'aquesta característica.";
+App::$strings["Layout updated."] = "S'ha actualitzat la disposició.";
+App::$strings["Edit System Page Description"] = "Editor del Sistema de Descripció de Pàgines";
+App::$strings["Layout not found."] = "No s'ha trobat cap disposició de pàgina.";
+App::$strings["Module Name:"] = "Nom del mòdul:";
+App::$strings["Layout Help"] = "Ajuda per la disposició de pàgina";
+App::$strings["Poke"] = "Esperonar";
+App::$strings["Poke somebody"] = "Emprenyar algú";
+App::$strings["Poke/Prod"] = "Esperonat/Picat";
+App::$strings["Poke, prod or do other things to somebody"] = "emprenyar, picar o fer altres coses a algú";
App::$strings["Recipient"] = "Destinatari";
App::$strings["Choose what you wish to do to recipient"] = "Tria que vols fer amb el destinatari";
App::$strings["Make this post private"] = "Fer aquesta entrada privada";
-App::$strings["Invalid profile identifier."] = "Identificador invàlid de perfil.";
-App::$strings["Profile Visibility Editor"] = "Perfil del Editor de Visibilitat";
-App::$strings["Click on a contact to add or remove."] = "Clica sobre el contacte per afegir o esborrar.";
-App::$strings["Visible To"] = "Visible per";
-App::$strings["%s element installed"] = "%s element instal·lat";
-App::$strings["%s element installation failed"] = "%s instal·lació d'element va fallar";
+App::$strings["Fetching URL returns error: %1\$s"] = "URL sol·licitada retorna error: %1\$s";
App::$strings["Profile not found."] = "Perfil no trobat.";
App::$strings["Profile deleted."] = "Perfil eliminat.";
App::$strings["Profile-"] = "Perfil-";
@@ -1399,168 +713,83 @@ App::$strings["Dislikes"] = "Desagrada";
App::$strings["Work/Employment"] = "Treball/Feina";
App::$strings["Religion"] = "Religió";
App::$strings["Political Views"] = "Idees Polítiques";
-App::$strings["Gender"] = "Gènere";
App::$strings["Sexual Preference"] = "Preferència Sexual";
App::$strings["Homepage"] = "Pàgina Personal";
App::$strings["Interests"] = "Interessos";
-App::$strings["Address"] = "Adreça";
App::$strings["Profile updated."] = "Perfil actualitzat.";
-App::$strings["Hide your contact/friend list from viewers of this profile?"] = "Amaga la teva llista de contactes/amics dels visitadors d'aquest perfil?";
+App::$strings["Hide your connections list from viewers of this profile"] = "Amaga dels curiosos la teva llista de connexions d'aquest perfil";
App::$strings["Edit Profile Details"] = "Edita els Detalls del Perfil";
App::$strings["View this profile"] = "Veure aquest perfil";
-App::$strings["Change Profile Photo"] = "Canviar Foto del Perfil";
+App::$strings["Edit visibility"] = "Editar visibilitat";
+App::$strings["Profile Tools"] = "Eines per Perfils";
+App::$strings["Change cover photo"] = "Canviar la foto de portada";
+App::$strings["Change profile photo"] = "Canviar la foto del perfil";
App::$strings["Create a new profile using these settings"] = "Crea un perfil nou amb aquests ajustos";
App::$strings["Clone this profile"] = "Clonar aquest perfil";
App::$strings["Delete this profile"] = "Elimina aquest perfil";
+App::$strings["Add profile things"] = "Afegeix coses al perfil";
+App::$strings["Personal"] = "Personal";
+App::$strings["Relation"] = "Relació";
+App::$strings["Miscellaneous"] = "Miscelania";
App::$strings["Import profile from file"] = "Importa perfil des d'un arxiu";
App::$strings["Export profile to file"] = "Exporta perfil a un arxiu";
-App::$strings["Profile Name:"] = "Nom del Perfil:";
-App::$strings["Your Full Name:"] = "El Teu Nom Complet";
-App::$strings["Title/Description:"] = "Títol/Descripció:";
-App::$strings["Your Gender:"] = "El Teu Gènere:";
-App::$strings["Birthday :"] = "Aniversari:";
-App::$strings["Street Address:"] = "Carrer:";
-App::$strings["Locality/City:"] = "Població/Ciutat:";
-App::$strings["Postal/Zip Code:"] = "Codi Postal:";
-App::$strings["Country:"] = "País:";
-App::$strings["Region/State:"] = "Regió/Estat:";
-App::$strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Marital Estatus:";
-App::$strings["Who: (if applicable)"] = "Qui: (si es aplicable)";
+App::$strings["Your gender"] = "El teu gènere";
+App::$strings["Marital status"] = "Estat marital";
+App::$strings["Sexual preference"] = "Preferència sexual";
+App::$strings["Profile name"] = "Nom del perfil";
+App::$strings["This is your default profile."] = "Aquest es el teu perfil per defecte";
+App::$strings["Your full name"] = "El teu nom complet";
+App::$strings["Title/Description"] = "Títol/Descripció";
+App::$strings["Street address"] = "Carrer";
+App::$strings["Locality/City"] = "Població/Ciutat";
+App::$strings["Region/State"] = "Regió/Estat";
+App::$strings["Postal/Zip code"] = "Codi Postal";
+App::$strings["Country"] = "País";
+App::$strings["Who (if applicable)"] = "Qui (si es aplicable)";
App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Examples: cathy123, Cathy Williams, cathy@example.com";
-App::$strings["Since [date]:"] = "Des de [data]:";
-App::$strings["Homepage URL:"] = "Pàgina Personal URL:";
-App::$strings["Religious Views:"] = "Creences Religioses:";
-App::$strings["Keywords:"] = "Paraules Clau:";
+App::$strings["Since (date)"] = "Des de (data)";
+App::$strings["Tell us about yourself"] = "Quelcom sobre tu";
+App::$strings["Hometown"] = "Ciutat Natal";
+App::$strings["Political views"] = "Idees polítiques";
+App::$strings["Religious views"] = "Creences religioses";
+App::$strings["Keywords used in directory listings"] = "Paraules clau emprades en els llistats de directoris";
App::$strings["Example: fishing photography software"] = "Exemple: software de fotografia submarina";
-App::$strings["Used in directory listings"] = "Emprat en els llistats de directoris";
-App::$strings["Tell us about yourself..."] = "Quelcom sobre tú:";
-App::$strings["Hobbies/Interests"] = "Aficions/Interessos";
-App::$strings["Contact information and Social Networks"] = "Informació de Contacte i Xarxes Socials";
-App::$strings["My other channels"] = "Els meus altres canals";
App::$strings["Musical interests"] = "Interessos Musicals";
App::$strings["Books, literature"] = "Llibres, literatura";
App::$strings["Television"] = "Televisió";
-App::$strings["Film/dance/culture/entertainment"] = "Pel·lícules/Dansa/Cultura/Entreteniment";
-App::$strings["Love/romance"] = "Amor/Romace";
-App::$strings["Work/employment"] = "Treball/feina";
-App::$strings["School/education"] = "Escola/educació";
-App::$strings["This is your default profile."] = "Aquest es el teu perfil per defecte";
-App::$strings["Age: "] = "Edat:";
-App::$strings["Edit/Manage Profiles"] = "Edita/Gestiona Perfils";
-App::$strings["Add profile things"] = "Afegeix coses al perfil";
-App::$strings["Include desirable objects in your profile"] = "Inclou objectius desitjables al teu perfil";
-App::$strings["No ratings"] = "No valorat";
+App::$strings["Film/Dance/Culture/Entertainment"] = "Pel·lícules/Dansa/Cultura/Entreteniment";
+App::$strings["Hobbies/Interests"] = "Aficions/Interessos";
+App::$strings["Love/Romance"] = "Amor/Romace";
+App::$strings["School/Education"] = "Escola/Educació";
+App::$strings["Contact information and social networks"] = "Informació de contacte i xarxes socials";
+App::$strings["My other channels"] = "Els meus altres canals";
+App::$strings["Profile Image"] = "Imatge del Perfil";
+App::$strings["Edit Profiles"] = "Editar Perfils";
+App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Refresca la memòria cau del navegador si la foto no s'actualitza immediatament. Dreceres: «Ctrl+F5» i «Ctrl+Maj+R»";
+App::$strings["Upload Profile Photo"] = "Puja una Foto pel Perfil";
+App::$strings["Invalid profile identifier."] = "Identificador invàlid de perfil.";
+App::$strings["Profile Visibility Editor"] = "Perfil del Editor de Visibilitat";
+App::$strings["Profile"] = "Perfil";
+App::$strings["Click on a contact to add or remove."] = "Clica sobre el contacte per afegir o esborrar.";
+App::$strings["Visible To"] = "Visible per";
+App::$strings["Public Hubs"] = "Nodes Públics";
+App::$strings["The listed hubs allow public registration for the \$Projectname network. All hubs in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some hubs may require subscription or provide tiered service plans. The hub itself <strong>may</strong> provide additional details."] = "Els nodes llistats permeten registrar usuaris de la xarxa \$Projectname. Com que tots els nodes estan enllaçats entre ells, la identitat és vàlida a tota la xarxa. Alguns nodes poden demanar subscripció o oferir serveis addicional de pagament. Per a més detalls, <strong>proveu</strong> de seguir els enllaços dels proveïdors.";
+App::$strings["Hub URL"] = "URL del Node";
+App::$strings["Access Type"] = "Tipus d'accés";
+App::$strings["Registration Policy"] = "Condicions de registre";
+App::$strings["Stats"] = "Estadístiques";
+App::$strings["Software"] = "Programari";
App::$strings["Ratings"] = "Valoracions";
+App::$strings["Rate"] = "Puntua";
+App::$strings["Website:"] = "Lloc web:";
+App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Canal Remot [%s] (encara no es coneix en aquest lloc)";
+App::$strings["Rating (this information is public)"] = "Valoració (aquesta informació és pública)";
+App::$strings["Optionally explain your rating (this information is public)"] = "Opcionalment pots explicar la teva qualificació (aquesta informació és pública)";
+App::$strings["No ratings"] = "No valorat";
App::$strings["Rating: "] = "Valoració:";
App::$strings["Website: "] = "Lloc web:";
App::$strings["Description: "] = "Descripció:";
-App::$strings["Source of Item"] = "Origen de l'article";
-App::$strings["\$Projectname Server - Setup"] = "Servidor \$Projectname - Configuració";
-App::$strings["Could not connect to database."] = "No puc connectar amb la base de dades";
-App::$strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "No s'ha pogut connectar a l'URL del lloc especificat. Possible problema amb el certificat SSL o de DNS.";
-App::$strings["Could not create table."] = "No puc crear la taula.";
-App::$strings["Your site database has been installed."] = "La teva base de dades del lloc s'ha instal·lat.";
-App::$strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "Podria ser necessari importar el fitxer \"install / schema_xxx.sql\" manualment utilitzant un client de base de dades.";
-App::$strings["Please see the file \"install/INSTALL.txt\"."] = "Si us plau, consulteu el fitxer \"install / INSTALL.txt\".";
-App::$strings["System check"] = "Comprovació del sistema";
-App::$strings["Check again"] = "Comprova de nou";
-App::$strings["Database connection"] = "Connexió de base de dades";
-App::$strings["In order to install \$Projectname we need to know how to connect to your database."] = "Per tal d'instaŀlar \$Projectname cal configurar la connexió a la base de dades.";
-App::$strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Si us plau, poseu-vos en contacte amb el proveïdor de serveis o administrador del lloc si vostè té preguntes sobre aquests paràmetres.";
-App::$strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "La base de dades s'especifica a continuació ja ha d'existir. Si no és així, si us plau crear-la abans de continuar.";
-App::$strings["Database Server Name"] = "Base de Dades Nom del Servidor";
-App::$strings["Default is localhost"] = "Per defecte es localhost";
-App::$strings["Database Port"] = "Port per a la Base de Dades";
-App::$strings["Communication port number - use 0 for default"] = "Numero del port de comunicacions - empra 0 per defecte";
-App::$strings["Database Login Name"] = "Base de Dades Nom d'Accès";
-App::$strings["Database Login Password"] = "Base de Dades Contrasenya d'Accès";
-App::$strings["Database Name"] = "Nom de la Base de Dades";
-App::$strings["Database Type"] = "Tipus de Base de Dades";
-App::$strings["Site administrator email address"] = "Adreça de correu de l'administrador del lloc";
-App::$strings["Your account email address must match this in order to use the web admin panel."] = "El teu compte de email ha de coincidir amb això per poder emprar el panel web d'administrador.";
-App::$strings["Website URL"] = "URL del lloc web";
-App::$strings["Please use SSL (https) URL if available."] = "Si us plau, empra SSL (https) URL si està disponible.";
-App::$strings["Please select a default timezone for your website"] = "Si us plau, tria la zona horària del teu lloc web";
-App::$strings["Site settings"] = "Ajustos del lloc";
-App::$strings["Could not find a command line version of PHP in the web server PATH."] = "No s'ha pogut trobar una versió de línia d'ordres del PHP en el PATH del servidor web.";
-App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Si vostè no té una versió de línia d'ordres del PHP instal·lada al servidor, vostè no serà capaç d'executar sondejos en segon pla via cron.";
-App::$strings["PHP executable path"] = "Camí cap l'executable de PHP";
-App::$strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Introdueix el camí cap l'executable de php. Pots deixa-ho en blanc i continuar l'instal·lació.";
-App::$strings["Command line PHP"] = "Línia d'ordres de PHP";
-App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "La versió de línia d'ordres de PHP al teu sistema no te el \"register_argc_argv\" activat.";
-App::$strings["This is required for message delivery to work."] = "Això es requereix per que funcioni l'entrega de missatges.";
-App::$strings["PHP register_argc_argv"] = "PHP register_argc_argv";
-App::$strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "La mida màxima que se't permet pujar està establerta en %s. La mida màxima per arxiu pujat es de %s. Se't permet pujar fins a %d arxius d'una vegada.";
-App::$strings["You can adjust these settings in the servers php.ini."] = "Pots ajustar aquests valors a l'arxiu php.ini del servidor";
-App::$strings["PHP upload limits"] = "Límits de pujada de PHP";
-App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Error: la funció \"openssl_pkey_new\" en aquest sistema no es capaç de generar claus d'encriptació";
-App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Si esta funcionant sota Windows, per favor, miri \"http://www.php.net/manual/en/openssl.installation.php\".";
-App::$strings["Generate encryption keys"] = "Generar claus de xifrat";
-App::$strings["libCurl PHP module"] = "mòdul PHP libCurl ";
-App::$strings["GD graphics PHP module"] = "mòdul PHP GD gràfics";
-App::$strings["OpenSSL PHP module"] = "mòdul PHP OpenSSL";
-App::$strings["mysqli or postgres PHP module"] = "mòdul PHP mysqli o postgres";
-App::$strings["mb_string PHP module"] = "mòdul PHP mb_string";
-App::$strings["mcrypt PHP module"] = "mòdul PHP mcrypt";
-App::$strings["xml PHP module"] = "Mòdul xml de PHP";
-App::$strings["Apache mod_rewrite module"] = "mòdul Apache mod_rewrite";
-App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Error: el mòdul mod-rewrite del servidor web Apache es requereix i no està instal·lat.";
-App::$strings["proc_open"] = "proc_open";
-App::$strings["Error: proc_open is required but is either not installed or has been disabled in php.ini"] = "Error: es requereix proc_open però o no està instal·lat o ha estat desactivat a php.ini";
-App::$strings["Error: libCURL PHP module required but not installed."] = "Error: el mòdul PHP libCURL es requereix però no està instal·lat.";
-App::$strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Error: el mòdul PHP GD graphics amb support JPEG es requereix però no està instal·lat.";
-App::$strings["Error: openssl PHP module required but not installed."] = "Error: el mòdul PHP openssl es requereix però no està instal·lat.";
-App::$strings["Error: mysqli or postgres PHP module required but neither are installed."] = "Error: el mòdul PHO mysqli o postgres es requereix però no està instal·lat.";
-App::$strings["Error: mb_string PHP module required but not installed."] = "Error: el mòdul PHP mb_string es requereix però no està instal·lat.";
-App::$strings["Error: mcrypt PHP module required but not installed."] = "Error: el mòdul PHP mcrypt es requereix però no està instal·lat.";
-App::$strings["Error: xml PHP module required for DAV but not installed."] = "Error: el mòdul xml de PHP es requereix per DAV però no està instal·lat.";
-App::$strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "L'instaŀlador ha de poder crear i modificar un fitxer anomenat «.htconfig.php» a la carpeta arrel del servidor, però sembla que no ho pot fer.";
-App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Això sol ser un problema de permisos. Per molt que el teu usuari pugui modificar-lo, és el del servidor web qui necessita els poders de modificació.";
-App::$strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Al final d'aquest procés hauràs de desar un text a l'arxiu «.htconfig.php», que es troba a la carpeta arrel del servidor.";
-App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Aquest procés és opcional. Per a fer una instaŀlació manual consulta les instruccions a «install/INSTALL.txt\".";
-App::$strings[".htconfig.php is writable"] = "L'arxiu «.htconfig.php» es pot modificar";
-App::$strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red fa servir el motor de plantilles Smarty3 per a renderitzar les vistes més ràpidament.";
-App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "Per tal de guardar aquestes plantilles compilades, el servidor web necessita tenir premis d'escriptura en el directori %s sota la carpeta principal de Red.";
-App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Comprova que l'usuari que executa el servidor (www-data en Apache) té permisos d'escriptura en aquesta carpeta.";
-App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Nota: com a mesura de seguretat l'usuari del servidor web ha de tenir accés d'escriptura només a %s, i no a les plantilles (.tpl) que conté.";
-App::$strings["%s is writable"] = "Es pot escriure a %s";
-App::$strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "Red fa servir la carpeta «store» per a desar els fitxers pujats. Per tant, el servidor web necessita tenir permís d'escriptura en aquesta carpeta, que està a l'arrel del servidor web.";
-App::$strings["store is writable"] = "Es pot escriure al magatzem (store)";
-App::$strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "El certificat SSL no s'ha pogut validar. Arregla-ho o deshabilita l'accés https a aquest lloc";
-App::$strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Si tens accès pet https al teu lloc web o permets connexions pel port TCP 443 (port https), Has d'emprar un certificat VÀLID. NO es poden emprar certificats AUTO-SIGNATS!";
-App::$strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "El motiu d'aquesta restricció és que les teves entrades públiques poden contenir referències a imatges del teu propi hub.";
-App::$strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Si el teu certificat no és reconegut, llavors el membres d'altres hubs, encara que tinguin certificats vàlids, rebran una advertència de seguretat en carregar contingut teu.";
-App::$strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Per tant, com que perjudica la usabilitat més enllà del teu lloc, la restricció de tenir un certificat reconegut és molt important.";
-App::$strings["Providers are available that issue free certificates which are browser-valid."] = "Hi ha autoritats de certificació reconegudes que ofereixen certificats gratuïts.";
-App::$strings["SSL certificate validation"] = "Validació del certificat SSL";
-App::$strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "No es poden reescriure les URL a «.htaccess». Comprova la configuració del servidor:";
-App::$strings["Url rewrite is working"] = "Es poden reescriure les URL a «.htaccess»";
-App::$strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "L'arxiu de configuracio de la base de dades «.htconfig.php» no s'ha pogut modificar. El pots crear tu a l'arrel del servidor web amb el text de la caixa com a contingut.";
-App::$strings["Errors encountered creating database tables."] = "S'han produït errors mentre es creaven taules a la base de dades.";
-App::$strings["<h1>What next</h1>"] = "<h1>I ara què?</h1>";
-App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANT! Cal que configuris manualment una execució periòdica del \"poller\".";
-App::$strings["OpenID protocol error. No ID returned."] = "Error del protocol OpenID. No ha retornat ID";
-App::$strings["Welcome %s. Remote authentication successful."] = "Benvingut %s. Autenticació remota reeixida.";
-App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha etiquetat %3\$s de %2\$s amb %4\$s";
-App::$strings["Export Channel"] = "Exportar Canal";
-App::$strings["Export your basic channel information to a small file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new hub, but\tdoes not contain your content."] = "Exporta la informació bàsica del canal a un petit arxiu. Això actua com a còpia de recolzament de les teves connexions, permisos, perfil i dades bàsiques, les quals pots emprar per traslladar aquestes dades a una altre lloc/centre, però no conté el contingut del canal.";
-App::$strings["Export Content"] = "Exportar el Contingut";
-App::$strings["Export your channel information and all the content to a JSON backup. This backs up all of your connections, permissions, profile data and all of your content, but is generally not suitable for importing a channel to a new hub as this file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Exporta la informació del canal i tot el contingut a un arxiu de recolzament JSON. Això còpia totes les teves connexions, permisos, perfil i dades i tot el contingut, però normalment no es pot importar en un altre canal d'un nou lloc/centre donat que l'arxiu acostuma a ser MOLT gran. Si et plau, sigues pacient ja que pot trigar uns minuts a començar a baixar.";
-App::$strings["No connections."] = "Sense connexions.";
-App::$strings["Visit %s's profile [%s]"] = "Visita el perfil [%s] de %s";
-App::$strings["invalid target signature"] = "Signatura objectiu invàlida";
App::$strings["Theme settings updated."] = "Ajustos de tema actualitzats.";
-App::$strings["Site"] = "Lloc";
-App::$strings["Accounts"] = "Comptes";
-App::$strings["Channels"] = "Canals";
-App::$strings["Plugins"] = "Plugins";
-App::$strings["Themes"] = "Temes";
-App::$strings["Inspect queue"] = "Revisa cua";
-App::$strings["Profile Config"] = "Configuració del Perfil";
-App::$strings["DB updates"] = "Actualitzacions de Base de Dades";
-App::$strings["Logs"] = "Logs";
-App::$strings["Plugin Features"] = "Característiques del Plugin";
-App::$strings["User registrations waiting for confirmation"] = "Registre d'usuaris esperant confirmació";
App::$strings["# Accounts"] = "# Comptes";
App::$strings["# blocked accounts"] = "# comptes bloquejats";
App::$strings["# expired accounts"] = "# comptes expirats";
@@ -1569,6 +798,7 @@ App::$strings["# Channels"] = "# Canals";
App::$strings["# primary"] = "# primari";
App::$strings["# clones"] = "# clons";
App::$strings["Message queues"] = "Cues de missatges";
+App::$strings["Your software should be updated"] = "El teu programari cal que s'actualitzi";
App::$strings["Administration"] = "Administració";
App::$strings["Summary"] = "Sumari";
App::$strings["Registered accounts"] = "Comptes registrades";
@@ -1576,7 +806,10 @@ App::$strings["Pending registrations"] = "Comptes pendents de registre";
App::$strings["Registered channels"] = "Canals registrats";
App::$strings["Active plugins"] = "Plugins actius";
App::$strings["Version"] = "Versió";
+App::$strings["Repository version (master)"] = "Versió (master) del repositori";
+App::$strings["Repository version (dev)"] = "Versió (desenvolupament) del repositori";
App::$strings["Site settings updated."] = "Ajustos del Lloc actualitzats";
+App::$strings["Default"] = "Predeterminat";
App::$strings["mobile"] = "mòbil";
App::$strings["experimental"] = "experimental";
App::$strings["unsupported"] = "no soportat";
@@ -1585,9 +818,11 @@ App::$strings["My site is not a public server"] = "El meu lloc no es un servidor
App::$strings["My site has paid access only"] = "El meu lloc te accès per pagament";
App::$strings["My site has free access only"] = "El meu lloc te lliure accés";
App::$strings["My site offers free accounts with optional paid upgrades"] = "El meu lloc te comptes gratis amb opció de millores per pagament";
+App::$strings["Site"] = "Lloc";
App::$strings["Registration"] = "Registre";
App::$strings["File upload"] = "Pujar arxiu";
App::$strings["Policies"] = "Polítiques";
+App::$strings["Advanced"] = "Avançat";
App::$strings["Site name"] = "Nom del lloc";
App::$strings["Banner/Logo"] = "Senyera/Logo";
App::$strings["Administrator Information"] = "Informació de l'Administrador";
@@ -1597,13 +832,13 @@ App::$strings["System theme"] = "Tema del sistema";
App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Tema del sistema per defecte - pot ser sobrescrit pel perfils dels usuaris - <a href='#' id='cnftheme'>Ajustos de canvi del tema</a>";
App::$strings["Mobile system theme"] = "Tema del sistema per a mòbils";
App::$strings["Theme for mobile devices"] = "Tema per a aparells mòbils";
-App::$strings["Enable Diaspora Protocol"] = "Activat el Protocol Diaspora";
-App::$strings["Communicate with Diaspora and Friendica - experimental"] = "Comunicar amb Diaspora i Friendica - experimental";
App::$strings["Allow Feeds as Connections"] = "Permetre Retroalimentadors com Connexions";
App::$strings["(Heavy system resource usage)"] = "(Demana molts recursos del sistema)";
App::$strings["Maximum image size"] = "Mida màxima d'imatge";
-App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Mida màxima en bytes de imatges pujades. Per defecte es 0, el que vol dir sense límits.";
+App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Mida màxima en bytes d'imatges pujades. Per defecte es 0, el que vol dir sense límits.";
App::$strings["Does this site allow new member registration?"] = "Permet aquest lloc registre de nous membres?";
+App::$strings["Invitation only"] = "Només per invitació";
+App::$strings["Only allow new member registrations with an invitation code. Above register policy must be set to Yes."] = "Només permet registre de nos membres amb codi d'invitació. A més la política de registre s'ha d'establir a Sí.";
App::$strings["Which best describes the types of account offered by this hub?"] = "Que es es que millor descriu la mena de comptes oferits per aquest concentrador?";
App::$strings["Register text"] = "text de registre";
App::$strings["Will be displayed prominently on the registration page."] = "Es mostrarà preminentment a la pàgina de registre";
@@ -1616,37 +851,63 @@ App::$strings["Will not waste system resources polling external sites for abando
App::$strings["Allowed friend domains"] = "dominis amics permesos";
App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "llista separada per comes de dominis en els que està permès establir relacions d'amistat amb aquest lloc. S'accepten comodins. Deixar buit per acceptar qualsevol domini";
App::$strings["Allowed email domains"] = "Dominis de correu electonic acceptats";
-App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "llista separada per comes de dominis de adreces de correu electrònic permeses en aquest lloc. S'accepten comodins. Deixar buit per acceptar qualsevol domini";
+App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "llista separada per comes de dominis d'adreces de correu electrònic permeses en aquest lloc. S'accepten comodins. Deixar buit per acceptar qualsevol domini";
App::$strings["Not allowed email domains"] = "Dominis de correu electrònic no acceptats";
-App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "llista separada per comes de dominis de adreces de correu electrònic no permeses en aquest lloc. S'accepten comodins. Deixar buit per no acceptar cap domini, excepte els que s'hagin definits com acceptats.";
-App::$strings["Block public"] = "Bloc públic";
-App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Activa per a bloquejar l'accés públic a totes les pàgines públiques personals excepte si estàs identificat en el sistema.";
+App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "llista separada per comes de dominis d'adreces de correu electrònic no permeses en aquest lloc. S'accepten comodins. Deixar buit per no acceptar cap domini, excepte els que s'hagin definits com acceptats.";
App::$strings["Verify Email Addresses"] = "Verifica l'Adreça de Correu Electrònic";
App::$strings["Check to verify email addresses used in account registration (recommended)."] = "Activa per comprovar l'adreça de correu electrònic emprada durant el registre d'un nou compte (recomanat)";
App::$strings["Force publish"] = "Forza la publicació";
App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Activa per forzar que tots el perfils en aquest lloc siguin llistats en el directori del lloc.";
-App::$strings["Disable discovery tab"] = "Desactiva la pestañnya de descobrir";
-App::$strings["Remove the tab in the network view with public content pulled from sources chosen for this site."] = "Treu la pesranya per veure contingut públic de la xarxa extret d'origens triats per aquest lloc.";
-App::$strings["login on Homepage"] = "Accés a la Pàgina d'inici";
+App::$strings["Import Public Streams"] = "Importar Fluxos Públics";
+App::$strings["Import and allow access to public content pulled from other sites. Warning: this content is unmoderated."] = "Importa i permet l'accés a contingut públic sondejat d'altres llocs. Avís: aquest contingut no estarà moderat.";
+App::$strings["Login on Homepage"] = "Accés a la Pàgina d'inici";
App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Presenta una casella d'identificació a la pàgina d'inici als visitants si no s'ha configurat altre contingut.";
+App::$strings["Enable context help"] = "Activar l'ajuda contextual";
+App::$strings["Display contextual help for the current page when the help button is pressed."] = "Mostra l'ajuda contextual per la pàgina actual quan el botó d'ajuda es pressionat.";
+App::$strings["Directory Server URL"] = "URL del Servidor de Directoris";
+App::$strings["Default directory server"] = "Servidor de directori per defecte";
App::$strings["Proxy user"] = "Usuari Proxy";
App::$strings["Proxy URL"] = "URL del Proxy";
App::$strings["Network timeout"] = "Temps d'espera de la xarxa";
App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valor en segons. Ajusta a 0 per a sense límits (no recomanat)";
App::$strings["Delivery interval"] = "Interval de lliurament";
App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Retarda en segon plà l'interval de lliurament per aquests segons per reduir la càrrega del sistema. Recomanat: 4-5 per a hostes compartits, 2-3 per a servidors privats virtuals. 0-1 per a servidors dedicats.";
+App::$strings["Deliveries per process"] = "Entregues per processar";
+App::$strings["Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5."] = "Nombre de entregues a intentar processar en un únic procèss del sistema operatiu. Ajustar si es necessari per millorar el rendiment. Es recomana: 1-5.";
App::$strings["Poll interval"] = "interval de sondeig";
App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Retarda en segon pla el sondeig en aquesta quantitat de segons per a reduir la càrrega dels sistema. Si es 0 , empra l'interval de lliurament.";
App::$strings["Maximum Load Average"] = "Càrrega Mitja Màxima";
App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Càrrega màxima del sistema, abans que els processos de lliurament i sondeig es difereixin - 50 per defecte.";
-App::$strings["Expiration period in days for imported (matrix/network) content"] = "Periode d'expiració per a contingut importat (matrix/xarxa)";
+App::$strings["Expiration period in days for imported (grid/network) content"] = "Període d'expiració en dies per contingut importat (malla/xarxa)";
App::$strings["0 for no expiration of imported content"] = "0 vol dir sense temps d'expiració pel contingut importat";
+App::$strings["Off"] = "Apagat";
+App::$strings["On"] = "Funcionant";
+App::$strings["Lock feature %s"] = "Bloca característica %s";
+App::$strings["Manage Additional Features"] = "Gestiona Funcionalitats Addicionals";
App::$strings["No server found"] = "No es troba servidor";
App::$strings["ID"] = "ID";
App::$strings["for channel"] = "per a canal";
App::$strings["on server"] = "al servidor";
-App::$strings["Status"] = "Estat";
App::$strings["Server"] = "Servidor";
+App::$strings["By default, unfiltered HTML is allowed in embedded media. This is inherently insecure."] = "Per defecte, HTML no filtrat està permés als media embeguts. Això es inherentment no segur.";
+App::$strings["The recommended setting is to only allow unfiltered HTML from the following sites:"] = "L'ajust recomanat és només permetre HTML sense filtrar dels següents llocs:";
+App::$strings["https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"] = "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />";
+App::$strings["All other embedded content will be filtered, <strong>unless</strong> embedded content from that site is explicitly blocked."] = "Tota la resta de contingut embegut seà filtrat, <strong>excepte</strong> contingut embegut d'aquest lloc que està blocat explícitament.";
+App::$strings["Security"] = "Seguretat";
+App::$strings["Block public"] = "Bloca que sigui públic";
+App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "activa per blocar l'accés a les pàgines personals públiques a tothom excepte aquells/es que s'hagin autenticat en aquest node.";
+App::$strings["Set \"Transport Security\" HTTP header"] = "Set \"Transport Security\" HTTP header";
+App::$strings["Set \"Content Security Policy\" HTTP header"] = "Set \"Content Security Policy\" HTTP header";
+App::$strings["Allow communications only from these sites"] = "Permetre comunicacions únicament des de aquests llocs";
+App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Un lloc per línia. Deixar en blanc per permetre, per defecte, la comunicació amb tothom.";
+App::$strings["Block communications from these sites"] = "Bloca comunicacions que venen d'aquests llocs";
+App::$strings["Allow communications only from these channels"] = "Permet la comunicació només per aquests canals";
+App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "Un canal (hash) per línia. Deixa en blanc per permetre, per defecte, la comunicació qualsevol canal.";
+App::$strings["Block communications from these channels"] = "Bloca les comunicacions que venen d'aquests canals";
+App::$strings["Only allow embeds from secure (SSL) websites and links."] = "Permetre embeguts només de llocs web i enllaços segurs (SSL).";
+App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "Permetre HTML embegut sense filtrar només d'aquests dominis.";
+App::$strings["One site per line. By default embedded content is filtered."] = "Un lloc per línia. Per defecte el contingut embegut es filtrat.";
+App::$strings["Block embedded HTML from these domains"] = "Bloca HTML embegut d'aquests dominis";
App::$strings["Update has been marked successful"] = "Actualització marcada amb exit";
App::$strings["Executing %s failed. Check system logs."] = "Executant %s ha fallat. Comprova els logs del sistema.";
App::$strings["Update %s was successfully applied."] = "Actualització %s es va realitzar correctament.";
@@ -1660,35 +921,34 @@ App::$strings["Queue Statistics"] = "Cua d'Estadístiques";
App::$strings["Total Entries"] = "Total d'Entrades";
App::$strings["Priority"] = "Prioritat";
App::$strings["Destination URL"] = "URL de Destí";
-App::$strings["Mark hub permanently offline"] = "Marca el concentrador coma permanentment fora de línia";
-App::$strings["Empty queue for this hub"] = "Cua buida per aquest concentrador";
+App::$strings["Mark hub permanently offline"] = "Marca el node com a permanentment fora de línia";
+App::$strings["Empty queue for this hub"] = "Cua buida per aquest node";
App::$strings["Last known contact"] = "Últim contacte conegut";
-App::$strings["%s user blocked/unblocked"] = array(
- 0 => "%s usuari bloquejat/desbloquejat",
- 1 => "%s usuaris bloquejats/desbloquejats",
+App::$strings["%s account blocked/unblocked"] = array(
+ 0 => "S'ha [des]bloquejat %s compte",
+ 1 => "S'han [des]bloquejat %s comptes",
);
-App::$strings["%s user deleted"] = array(
- 0 => "%s usuari esborrat",
- 1 => "%s usuaris esborrats",
+App::$strings["%s account deleted"] = array(
+ 0 => "S'ha esborrat el compte %s",
+ 1 => "S'han esborrat %s comptes",
);
App::$strings["Account not found"] = "Compte no trobat";
-App::$strings["User '%s' blocked"] = "Usuari '%s' bloquejat";
-App::$strings["User '%s' unblocked"] = "Usuari '%s' desbloquejat";
-App::$strings["Users"] = "Usuaris";
+App::$strings["Account '%s' deleted"] = "S'ha esborrat el compte '%s'";
+App::$strings["Account '%s' blocked"] = "S'ha bloquejat el compte '%s'";
+App::$strings["Account '%s' unblocked"] = "S'ha desbloquejat el compte '%s'";
+App::$strings["Accounts"] = "Comptes";
App::$strings["select all"] = "Sel·leciona-ho tot";
-App::$strings["User registrations waiting for confirm"] = "Registres d'usuaris pendents de confirmació";
+App::$strings["Registrations waiting for confirm"] = "";
App::$strings["Request date"] = "Data de la petició";
App::$strings["No registrations."] = "Sense registracions.";
-App::$strings["Approve"] = "Aprovat";
App::$strings["Deny"] = "Denegat";
-App::$strings["Block"] = "Bloquejat";
-App::$strings["Unblock"] = "Desbloquejat";
+App::$strings["All Channels"] = "Tots els Canals";
App::$strings["Register date"] = "Data de registre";
App::$strings["Last login"] = "Darrera identificació";
App::$strings["Expires"] = "Expira";
App::$strings["Service Class"] = "Classe de Servei";
-App::$strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Tria els usuaris que s'esborraran!\\n\\nTotes les publicacions d'aquests usuaris en aquest lloc s'eliminaran de forma permanent!\\n\\nEstàs segur? ";
-App::$strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "L'usuari {0} sera esborrat!\\n\\nTotes les publicacions d'aquest usuari en aquest lloc s'eliminarà de forma permanent!\\n\\nEstas segur?";
+App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Els comptes seleccionats seran eliminats!\\n\\nTot el que hagin publicat en aquest lloc serà esborrat permanentment!\\n\\nN'estàs segur de continuar?";
+App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "L'usuari {0} serà eliminat!\\n\\nTot el que hagi publicat l'usuari en aquest lloc serà esborrat de permanentment!\\n\\nN'estàs segur?";
App::$strings["%s channel censored/uncensored"] = array(
0 => "%s canal censurat/no censurat",
1 => "%s canals censurats/no censurats",
@@ -1707,10 +967,12 @@ App::$strings["Channel '%s' censored"] = "Canal '%s' censurat";
App::$strings["Channel '%s' uncensored"] = "Canal '%s' no censurat";
App::$strings["Channel '%s' code allowed"] = "Canal '%s' permet codi";
App::$strings["Channel '%s' code disallowed"] = "Canal '%s' no permet codi";
+App::$strings["Channels"] = "Canals";
App::$strings["Censor"] = "Censurat";
App::$strings["Uncensor"] = "No censurat";
App::$strings["Allow Code"] = "Permet Codi";
App::$strings["Disallow Code"] = "No Permet Codi";
+App::$strings["Channel"] = "Canal";
App::$strings["UID"] = "UID";
App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Els canals sel·leccionats s'esborraran!\\n\\nTotes les publicacions d'aquests canals en aquest lloc s'eliminaran de forma permanent!\\n\\nEstàs segur? ";
App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "El canal {0} serà esborrat!\\n\\nTotes les publicacions d'aquest canal en aquest lloc s'eliminaran de forma permanent!\\n\\nEstàs segur?";
@@ -1718,18 +980,39 @@ App::$strings["Plugin %s disabled."] = "Plugin %s desactivat.";
App::$strings["Plugin %s enabled."] = "Plugin %s activat.";
App::$strings["Disable"] = "Desactivat";
App::$strings["Enable"] = "Activat";
+App::$strings["Plugins"] = "Plugins";
App::$strings["Toggle"] = "Commutar";
+App::$strings["Settings"] = "Ajustos";
App::$strings["Author: "] = "Autor: ";
App::$strings["Maintainer: "] = "Mantenedor:";
+App::$strings["Minimum project version: "] = "Versió mínima del projecte:";
+App::$strings["Maximum project version: "] = "Versió màxima del projecte:";
+App::$strings["Minimum PHP version: "] = "Versió mínima de PHP:";
+App::$strings["Requires: "] = "Requereix:";
+App::$strings["Disabled - version incompatibility"] = "Desactiva - incompatibilitat de versió";
+App::$strings["Enter the public git repository URL of the plugin repo."] = "Introdueix la URL del repositori git públic del repositori de plugins.";
+App::$strings["Plugin repo git URL"] = "URL del repositori de plugins.";
+App::$strings["Custom repo name"] = "Nom del repositori personalitzat";
+App::$strings["(optional)"] = "(opcional)";
+App::$strings["Download Plugin Repo"] = "Descarrega el Repositori de Plugins";
+App::$strings["Install new repo"] = "Instal·la un nou repositori ";
+App::$strings["Install"] = "Instal·lar";
+App::$strings["Manage Repos"] = "Gestiona Repositoris";
+App::$strings["Installed Plugin Repositories"] = "Repositori de Plugins Instal·lat";
+App::$strings["Install a New Plugin Repository"] = "Instal·la un Nou Repositori de Plugins";
+App::$strings["Update"] = "Actualització";
+App::$strings["Switch branch"] = "Canvia de branca";
App::$strings["No themes found."] = "No s'han trobat temes.";
App::$strings["Screenshot"] = "Copia de pantalla";
+App::$strings["Themes"] = "Temes";
App::$strings["[Experimental]"] = "[Experimental]";
App::$strings["[Unsupported]"] = "[No soportat]";
App::$strings["Log settings updated."] = "Registre d'ajustos actualitzat.";
+App::$strings["Logs"] = "Logs";
App::$strings["Clear"] = "Neteja";
App::$strings["Debugging"] = "Depurant";
App::$strings["Log file"] = "Arxiu de registre";
-App::$strings["Must be writable by web server. Relative to your Red top-level directory."] = "Ha de ser escribible pel servidor web. Relatiu al directori de nivell superior de Red";
+App::$strings["Must be writable by web server. Relative to your top-level webserver directory."] = "";
App::$strings["Log level"] = "Nivell de registre";
App::$strings["New Profile Field"] = "Camp de Perfil Nou";
App::$strings["Field nickname"] = "Àlies de Camp";
@@ -1741,25 +1024,53 @@ App::$strings["Help text"] = "Text d'ajuda";
App::$strings["Additional info (optional)"] = "Informació adicional (opcional)";
App::$strings["Field definition not found"] = "No es troba la definició del camp";
App::$strings["Edit Profile Field"] = "Camp d'Edició del Perfil";
-App::$strings["Unable to find your hub."] = "No es possible trobar el concentrador";
-App::$strings["Post successful."] = "Entrada realitzada amb èxit. ";
+App::$strings["Profile Fields"] = "Camps del Perfil";
+App::$strings["Basic Profile Fields"] = "Camps Bàsics del Perfil";
+App::$strings["Advanced Profile Fields"] = "Camps Avançats del Perfil";
+App::$strings["(In addition to basic fields)"] = "( addicionalment als camps bàsics)";
+App::$strings["All available fields"] = "Tots els camps disponibles";
+App::$strings["Custom Fields"] = "Camps Personalitzats";
+App::$strings["Create Custom Field"] = "Crear un Camp Personalitzat";
+App::$strings["App installed."] = "Aplicació instal·lada.";
+App::$strings["Malformed app."] = "Aplicació amb errors";
+App::$strings["Embed code"] = "Codi embegut";
+App::$strings["Edit App"] = "Edita l'Aplicació";
+App::$strings["Create App"] = "Crea l'Aplicació";
+App::$strings["Name of app"] = "Nom de l'Aplicació";
+App::$strings["Location (URL) of app"] = "Ubicació (URL) de l'aplicació";
+App::$strings["Photo icon URL"] = "Foto icona URL";
+App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixels - opcional";
+App::$strings["Categories (optional, comma separated list)"] = "Categories (opcional, lista separada per comes)";
+App::$strings["Version ID"] = "Versió ID";
+App::$strings["Price of app"] = "Preu de l'aplicació";
+App::$strings["Location (URL) to purchase app"] = "Ubicació (URL) per comprar l'aplicació";
+App::$strings["Select a bookmark folder"] = "Tria una carpeta d'interès";
+App::$strings["Save Bookmark"] = "Guarda Favorits";
+App::$strings["URL of bookmark"] = "URL de favorit";
+App::$strings["Or enter new bookmark folder name"] = "O entra un nou nom de favorit";
App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Nombre màxim de registres diaris excedit. Si us plau, provau demà.";
App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "El registre ha fallat. Si et plau, indica que acceptes les Condicions del Servei.";
App::$strings["Passwords do not match."] = "Les contrasenyes no coincideixen.";
-App::$strings["Registration successful. Please check your email for validation instructions."] = "registrat amb èxit. Si et plau revisa el teu e-correu per a instruccions de validació.";
+App::$strings["Registration successful. Please check your email for validation instructions."] = "Registrat amb èxit. Si et plau revisa el teu correu electrònic per a les instruccions de validació.";
App::$strings["Your registration is pending approval by the site owner."] = "El teu registre esta pendent de validació pel propietari del lloc.";
App::$strings["Your registration can not be processed."] = "El teu registre no ha pogut ser processat. ";
-App::$strings["Registration on this site/hub is by approval only."] = "El registre en aquest lloc/centre es únicament per validació.";
-App::$strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">Registre en altre lloc/centre afiliat</a>";
+App::$strings["Registration on this hub is disabled."] = "El registre en aquest node està deshabilitat.";
+App::$strings["Registration on this hub is by approval only."] = "El registre en aquest node es únicament per validació.";
+App::$strings["<a href=\"pubsites\">Register at another affiliated hub.</a>"] = "<a href=\"pubsites\">Registre en altre node afiliat</a>";
App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "El lloc ha excedit el límit màxim diari de nous comptes/registres. Provau demà.";
App::$strings["Terms of Service"] = "Condicions del Servei";
App::$strings["I accept the %s for this website"] = "Accepto el %s per a aquest lloc web";
App::$strings["I am over 13 years of age and accept the %s for this website"] = "Tinc més de 13 anys i accepto les %s d'aquest lloc web";
-App::$strings["Membership on this site is by invitation only."] = "La pertinença en aquest lloc es per invitació exclusivament.";
-App::$strings["Please enter your invitation code"] = "Si et plau, introdueix el teu codi d'invitació";
App::$strings["Your email address"] = "La teva adreça de correu electrónic";
App::$strings["Choose a password"] = "Tria una contrasenya";
App::$strings["Please re-enter your password"] = "Si et plau, re-entra la contrasenya";
+App::$strings["Please enter your invitation code"] = "Si et plau, introdueix el teu codi d'invitació";
+App::$strings["no"] = "no";
+App::$strings["yes"] = "sí";
+App::$strings["Membership on this site is by invitation only."] = "La pertinença en aquest lloc es per invitació exclusivament.";
+App::$strings["Register"] = "Registre";
+App::$strings["Proceed to create your first channel"] = "Comença a crear el teu primer canal";
+App::$strings["Please login."] = "Inicia Sessió.";
App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "L'esborrat de comptes no està permès fins que transcorren 48 hores des de l'últim canvi de contrasenya.";
App::$strings["Remove This Account"] = "Esborra el compte";
App::$strings["WARNING: "] = "ALERTA:";
@@ -1767,24 +1078,33 @@ App::$strings["This account and all its channels will be completely removed from
App::$strings["This action is permanent and can not be undone!"] = "Aquesta acció és irreversible!";
App::$strings["Please enter your password for verification:"] = "Aquesta acció requereix tornar a introduir la contrasenya:";
App::$strings["Remove this account, all its channels and all its channel clones from the network"] = "Esborra de la xarxa aquest compte, tots els seus canals, i tots els seus canals clons.";
-App::$strings["By default only the instances of the channels located on this hub will be removed from the network"] = "Per defecte, només les instancies dels canal ubicats en aquest concentrador poden esser esborrades de la xarxa";
+App::$strings["By default only the instances of the channels located on this hub will be removed from the network"] = "Per defecte, només les instancies dels canal ubicats en aquest node poden esser esborrades de la xarxa";
App::$strings["Remove Account"] = "Esborra el Compte";
-App::$strings["Help:"] = "Ajuda:";
-App::$strings["Not Found"] = "No s'ha pogut trobar la pàgina";
-App::$strings["\$Projectname Documentation"] = "\$Projectname Documentació";
-App::$strings["[Embedded content - reload page to view]"] = "[Contingut embegut - recarrega la pàgina per veure-ho]";
-App::$strings["Remote privacy information not available."] = "informació privada remota no disponible.";
-App::$strings["Visible to:"] = "Visible per:";
+App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "L'esborrat de canals no està permès fins que transcorren 48 hores des de l'últim canvi de contrasenya.";
+App::$strings["Remove This Channel"] = "Elimina Aquest Canal";
+App::$strings["This channel will be completely removed from the network. "] = "Aquest canal serà completament eliminat de la xarxa.";
+App::$strings["Remove this channel and all its clones from the network"] = "Elimina aquest canal i els seus clons de la xarxa";
+App::$strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Per defecte, només la instancia del canal ubicat en aquest node pot esser esborrat de la xarxa";
+App::$strings["Remove Channel"] = "Elimina el canal";
+App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Em trobat un problema durant l'inici de sessió amb el OpenID que has facilitat. verifica l'ortografia correcta de la ID.";
+App::$strings["The error message was:"] = "El missatge d'error fou:";
+App::$strings["Authentication failed."] = "Ha fallat l'autentificació.";
+App::$strings["Remote Authentication"] = "Autentificació Remota";
+App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Introdueix la teva adreça del canal (eg canal@exemple.com)";
+App::$strings["Authenticate"] = "Autentica't";
+App::$strings["Items tagged with: %s"] = "Elements etiquetats amb: %s";
+App::$strings["Search results for: %s"] = "Resultats de cerca per: %s";
+App::$strings["No service class restrictions found."] = "No s'han trobat restriccions de clase.";
App::$strings["Name is required"] = "Es requereix un Nom";
App::$strings["Key and Secret are required"] = "Es requereix Clau (Key) i el Secret (Secret)";
-App::$strings["Diaspora Policy Settings updated."] = "Actualitzats els Ajustos de Política de Diaspora.";
+App::$strings["Not valid email."] = "E-correu no vàlid.";
+App::$strings["Protected email address. Cannot change to that email."] = "Adreça d'e-correu protegida. No es pot canviar a aquest e-correu.";
+App::$strings["System failure storing new email. Please try again."] = "Fallada del sistema al guardar un nou correu. Si us plau, proba de nou.";
+App::$strings["Password verification failed."] = "La verificació de la contrasenya ha fallat.";
App::$strings["Passwords do not match. Password unchanged."] = "Les contrasenyes no coincideixen. Contrasenya sense canvis.";
App::$strings["Empty passwords are not allowed. Password unchanged."] = "Les contrasenyes en blanc no estan permesas. Contrasenya sense canvis.";
App::$strings["Password changed."] = "Contrasenya canviada.";
App::$strings["Password update failed. Please try again."] = "L'actualització de la contrasenya va fallar. Si us plau, torneu a intentar-ho.";
-App::$strings["Not valid email."] = "E-correu no vàlid.";
-App::$strings["Protected email address. Cannot change to that email."] = "Adreça d'e-correu protegida. No es pot canviar a aquest e-correu.";
-App::$strings["System failure storing new email. Please try again."] = "Fallada del sistema al guardar un nou correu. Si us plau, proba de nou.";
App::$strings["Settings updated."] = "Ajustes actualizados.";
App::$strings["Add application"] = "Afegir aplicatiu";
App::$strings["Name of application"] = "Nom de l'aplicatiu";
@@ -1795,26 +1115,20 @@ App::$strings["Redirect"] = "Redirecciona";
App::$strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI redirigida - No canviar excepte perquè el teu aplicatiu ho requereixi.";
App::$strings["Icon url"] = "Icona de url";
App::$strings["Optional"] = "Opcional";
-App::$strings["You can't edit this application."] = "No pots editar aquest aplicatiu.";
+App::$strings["Application not found."] = "Aplicatiu no trobat.";
App::$strings["Connected Apps"] = "Aplicatius Conectats";
App::$strings["Client key starts with"] = "La clau del client comença amb";
App::$strings["No name"] = "Sin nombre";
App::$strings["Remove authorization"] = "Elimina autorització";
App::$strings["No feature settings configured"] = "No hi ha opcions de les funcions configurades";
-App::$strings["Feature/Addon Settings"] = "Ajustos de Característica/Afegit";
-App::$strings["Settings for the built-in Diaspora emulator"] = "Ajustos pel emulador de Diaspora incorporat";
-App::$strings["Allow any Diaspora member to comment on your public posts"] = "Permetre que cualsevol membre de Diaspora pugui comentar les teves entrades públiques";
-App::$strings["Enable the Diaspora protocol for this channel"] = "Activa el protocol Diaspora en aquest canal";
-App::$strings["Diaspora Policy Settings"] = "Política d'Ajustos de Diaspora";
-App::$strings["Prevent your hashtags from being redirected to other sites"] = "Evita que els teus hashtags puguin ser redirigits a altres llocs";
+App::$strings["Feature/Addon Settings"] = "Ajustos de Complements";
App::$strings["Account Settings"] = "Ajustos de Compte";
-App::$strings["Enter New Password:"] = "Entra la Nova Contrasenya";
-App::$strings["Confirm New Password:"] = "Confirma la Nova Contrasenya:";
-App::$strings["Leave password fields blank unless changing"] = "Deixa els camps de contrasenya en blanc llevat que la volguis canviar";
+App::$strings["Current Password"] = "Contrasenya Actual";
+App::$strings["Enter New Password"] = "Entra la Nova Contrasenya";
+App::$strings["Confirm New Password"] = "Confirma la Nova Contrasenya";
+App::$strings["Leave password fields blank unless changing"] = "Deixa els camps de contrasenya en blanc llevat que la vulguis canviar";
App::$strings["Email Address:"] = "Adreça de E-Correu:";
App::$strings["Remove this account including all its channels"] = "Esborra aquest compte inclosos tots els seus canals";
-App::$strings["Off"] = "Apagat";
-App::$strings["On"] = "Funcionant";
App::$strings["Additional Features"] = "Característiques Addicionals";
App::$strings["Connector Settings"] = "Ajustos de Connector";
App::$strings["No special theme for mobile devices"] = "No emprar tema especial per aparells mòbils";
@@ -1825,6 +1139,8 @@ App::$strings["Custom Theme Settings"] = "Ajustos Personals de Tema";
App::$strings["Content Settings"] = "Ajustos de Contingut";
App::$strings["Display Theme:"] = "Ajustos de Tema:";
App::$strings["Mobile Theme:"] = "Tema Mòbil:";
+App::$strings["Preload images before rendering the page"] = "Precarrega les imatges abans de dibuixar la pàgina";
+App::$strings["The subjective page load time will be longer but the page will be ready when displayed"] = "El temps subjectiu per carregar la pàgina pot ser llarg però la pàgina estarà preparada quan es mostri";
App::$strings["Enable user zoom on mobile devices"] = "Zoom d'usuari en dispositius mòbils";
App::$strings["Update browser every xx seconds"] = "Actualitza el navegador cada xx segons";
App::$strings["Minimum of 10 seconds, no maximum"] = "Mínim de 10 segons, sense màxim";
@@ -1835,10 +1151,10 @@ App::$strings["Link post titles to source"] = "Enllaça a l'origen els títols d
App::$strings["System Page Layout Editor - (advanced)"] = "Editor de Disseny de la Pàgina del Sistema - (avançat)";
App::$strings["Use blog/list mode on channel page"] = "Empra el mode blog/llista a la pàgina del canal";
App::$strings["(comments displayed separately)"] = "(Observacions es mostren per separat)";
-App::$strings["Use blog/list mode on matrix page"] = "Empra mode blog/llista a la pàgina de matrix";
+App::$strings["Use blog/list mode on grid page"] = "Empra el mode de blog/llista a la pàgina de la malla";
App::$strings["Channel page max height of content (in pixels)"] = "Alçada màxima de contingut (en píxels) de la pàgina de Canal";
App::$strings["click to expand content exceeding this height"] = "Clic per expandir el contingut que excedeixi aquesta alçada";
-App::$strings["Matrix page max height of content (in pixels)"] = "Alçada màxima del contingut (en píxels) de la pàgina Matrix";
+App::$strings["Grid page max height of content (in pixels)"] = "Alçada màxima dels continguts (en píxels) de la Pàgina de Malla ";
App::$strings["Nobody except yourself"] = "Ningú excepte tú";
App::$strings["Only those you specifically allow"] = "Només allò que específicament permetis";
App::$strings["Approved connections"] = "Connexions aprovades";
@@ -1849,9 +1165,10 @@ App::$strings["Anybody authenticated"] = "Qualsevol autenticat";
App::$strings["Anybody on the internet"] = "Qualsevol a internet";
App::$strings["Publish your default profile in the network directory"] = "Publica el teu perfil per defecte al directori de la xarxa";
App::$strings["Allow us to suggest you as a potential friend to new members?"] = "Ens permets suggerir-te com a potencial amic als nous membres?";
-App::$strings["Your channel address is"] = "La teva direcció del canal es";
+App::$strings["Your channel address is"] = "La teva adreça del canal es";
App::$strings["Channel Settings"] = "Ajustos del Canal";
App::$strings["Basic Settings"] = "Ajustos Bàsics";
+App::$strings["Full Name:"] = "Nom Complet:";
App::$strings["Your Timezone:"] = "La teva Franja Horària";
App::$strings["Default Post Location:"] = "Localització Predeterminada de les Entrades:";
App::$strings["Geographical location to display on your posts"] = "Posició geogràfica a mostrar a les teves entrades";
@@ -1871,18 +1188,22 @@ App::$strings["Allow others to tag your posts"] = "Permet a altres etiquetar les
App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "Sovint emprat per la comunitat per marcar retroactivament contingut inapropiat";
App::$strings["Advanced Privacy Settings"] = "Ajustos avançats de privacitat";
App::$strings["Expire other channel content after this many days"] = "El contingut d'altes canals caduca després d'aquests dies";
-App::$strings["0 or blank prevents expiration"] = "0 o vuit evita caducitat";
+App::$strings["0 or blank to use the website limit."] = "0 o en blanc per emprar el limit del lloc web.";
+App::$strings["This website expires after %d days."] = "Aquest lloc web expira després de %d dies.";
+App::$strings["This website does not expire imported content."] = "A aquest lloc web no expira el contingut importat";
+App::$strings["The website limit takes precedence if lower than your limit."] = "El límit del lloc web pren la preferència si es inferior al teu límit.";
App::$strings["Maximum Friend Requests/Day:"] = "Nombre màxim de peticions d'amistat per dia";
App::$strings["May reduce spam activity"] = "Pot reduir l'SPAM";
-App::$strings["Default Post Permissions"] = "Permisos de publicació per defecte";
+App::$strings["Default Post and Publish Permissions"] = "Permisos de Entrades i Publicació per defecte";
+App::$strings["Use my default audience setting for the type of object published"] = "Empra els meus ajustos per defecte segons el tipus de entrada publicada";
App::$strings["Channel permissions category:"] = "Categoria de permisos de canal:";
App::$strings["Maximum private messages per day from unknown people:"] = "Nombre màxim de missatges privats de desconeguts al dia:";
App::$strings["Useful to reduce spamming"] = "Útil per a reduir l'spam";
App::$strings["Notification Settings"] = "Ajustos de notificacions";
App::$strings["By default post a status message when:"] = "Per defecte envia un missatge d'estat quan:";
-App::$strings["accepting a friend request"] = "Acceptar una sol·licitud d'amistat";
+App::$strings["accepting a friend request"] = "S'accepta una sol·licitud d'amistat";
App::$strings["joining a forum/community"] = "Apuntar-se a un fòrum o comunitat";
-App::$strings["making an <em>interesting</em> profile change"] = "faci un canvi <em>interesant</em> al perfil";
+App::$strings["making an <em>interesting</em> profile change"] = "Faci un canvi <em>interesant</em> al perfil";
App::$strings["Send a notification email when:"] = "Notifica per correu quan:";
App::$strings["You receive a connection request"] = "Rebi una petició de connexió";
App::$strings["Your connections are confirmed"] = "Es confirma una connexió";
@@ -1893,7 +1214,7 @@ App::$strings["You receive a friend suggestion"] = "Rebi una suggerència d'amis
App::$strings["You are tagged in a post"] = "Estàs etiquetat a l'entrada";
App::$strings["You are poked/prodded/etc. in a post"] = "S'enfoten/te piquen/etc. en una entrada";
App::$strings["Show visual notifications including:"] = "Mostra notificacion visuals, com ara:";
-App::$strings["Unseen matrix activity"] = "Activitat no vista a la xarxa";
+App::$strings["Unseen grid activity"] = "Activitat de malla no vista";
App::$strings["Unseen channel activity"] = "Activitat no vista del canal";
App::$strings["Unseen private messages"] = "Missatges privats no llegits";
App::$strings["Recommended"] = "Recomanat";
@@ -1901,7 +1222,7 @@ App::$strings["Upcoming events"] = "Esdeveniments propers";
App::$strings["Events today"] = "Esdeveniments d'avui";
App::$strings["Upcoming birthdays"] = "Aniversaris propers";
App::$strings["Not available in all themes"] = "No està disponible en tots els temes";
-App::$strings["System (personal) notifications"] = "Notificacions (personals) de sistema";
+App::$strings["System (personal) notifications"] = "Notificacions (personals) del sistema";
App::$strings["System info messages"] = "Missatges d'informació del sistema";
App::$strings["System critical alerts"] = "Alertes crítiques del sistema";
App::$strings["New connections"] = "Noves connexions";
@@ -1913,197 +1234,1029 @@ App::$strings["Advanced Account/Page Type Settings"] = "Ajustos avançats de com
App::$strings["Change the behaviour of this account for special situations"] = "Modifica el comportament d'aquest compte en situacions especials";
App::$strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "Activa el mode d'expert (a <a href=\"settings/features\">Ajustos > Més funcions</a>)";
App::$strings["Miscellaneous Settings"] = "Ajustos diversos";
+App::$strings["Default photo upload folder"] = "Carpeta per defecte de fotos pujades";
+App::$strings["%Y - current year, %m - current month"] = "%Y - any en curs, %m - mes corrent";
+App::$strings["Default file upload folder"] = "Carpeta per defecte d'arxius pujats";
App::$strings["Personal menu to display in your channel pages"] = "Menú personal per mostrar en les teves pàgines de canal";
-App::$strings["Remove Channel"] = "Elimina el canal";
App::$strings["Remove this channel."] = "Elimina aquest canal.";
-App::$strings["First Name"] = "Nom";
-App::$strings["Last Name"] = "Cognoms";
-App::$strings["Nickname"] = "Àlies";
-App::$strings["Full Name"] = "Nom Sencer";
-App::$strings["Profile Photo 16px"] = "Foto del Perfil 16px";
-App::$strings["Profile Photo 32px"] = "Foto del Perfil 32px";
-App::$strings["Profile Photo 48px"] = "Foto del Perfil 48px";
-App::$strings["Profile Photo 64px"] = "Foto del Perfil 64px";
-App::$strings["Profile Photo 80px"] = "Foto del Perfil 80px";
-App::$strings["Profile Photo 128px"] = "Foto del Perfil 128px";
-App::$strings["Timezone"] = "Zona horària";
-App::$strings["Homepage URL"] = "URL de la pàgina d'inici";
-App::$strings["Birth Year"] = "Any de Naixement";
-App::$strings["Birth Month"] = "Mes de Naixement";
-App::$strings["Birth Day"] = "Dia de Naixement";
-App::$strings["Birthdate"] = "Aniversari";
-App::$strings["Conversation removed."] = "Conversació eliminada.";
-App::$strings["No messages."] = "Sense missatges.";
-App::$strings["Delete conversation"] = "Conversació esborrada";
-App::$strings["D, d M Y - g:i A"] = "D, d M Y - g:i A";
-App::$strings["Set your current mood and tell your friends"] = "Estableix el teu estat d'ànim actual i digues-li als teus amics";
-App::$strings["Total votes"] = "Total de vots";
-App::$strings["Average Rating"] = "Valoració Mitja";
-App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "L'esborrat de canals no està permès fins que transcorren 48 hores des de l'últim canvi de contrasenya.";
-App::$strings["Remove This Channel"] = "Elimina Aquest Canal";
-App::$strings["This channel will be completely removed from the network. "] = "Aquest canal serà completament eliminat de la xarxa.";
-App::$strings["Remove this channel and all its clones from the network"] = "Elimina aquest canal i els seus clons de la xarxa";
-App::$strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Per defecte, només la instancia del canal ubicat en aquest concentrador pot esser esborrat de la xarxa";
-App::$strings["is now connected to"] = "Ara està conectat amb";
-App::$strings["Could not access address book record."] = "No puc accedir al registre del contacte";
-App::$strings["Refresh failed - channel is currently unavailable."] = "Ha fallat la recàrrega - el canal es actualment inaccesible.";
-App::$strings["Unable to set address book parameters."] = "No es poden ajustar els paràmetres dels contactes.";
-App::$strings["Connection has been removed."] = "S'han eliminat les conexions.";
-App::$strings["View %s's profile"] = "Mostra el perfil de %s";
-App::$strings["Refresh Permissions"] = "Recarrega els Permissos";
-App::$strings["Fetch updated permissions"] = "Obté els permisos actualitzats";
-App::$strings["Recent Activity"] = "Activitat Recent";
-App::$strings["View recent posts and comments"] = "Mostra les entrades i comentaris recents";
-App::$strings["Block (or Unblock) all communications with this connection"] = "Boqueja (o Desbloqueja) les comunicacions amb aquesta connexió";
-App::$strings["This connection is blocked!"] = "Aquesta connexió està bloquejada!";
-App::$strings["Unignore"] = "Inhabilita";
-App::$strings["Ignore"] = "Ignora";
-App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Ignora (o Considera) les communicacions entrants d'aquesta connexió";
-App::$strings["This connection is ignored!"] = "Aquesta connexió es ignorada!";
-App::$strings["Unarchive"] = "Desarxiva";
-App::$strings["Archive"] = "Arxiva";
-App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Arxiva (o Desarxiva) aquesta connexió - Marca el canal com a mort pero manté el contingut ";
-App::$strings["This connection is archived!"] = "Aquesta connexió està arxivada!";
-App::$strings["Unhide"] = "Mostra";
-App::$strings["Hide"] = "Amaga";
-App::$strings["Hide or Unhide this connection from your other connections"] = "Amaga (o Mostra) aquesta connexió de les altres connexions teves";
-App::$strings["This connection is hidden!"] = "Aquesta connexió està amagada!";
-App::$strings["Delete this connection"] = "Elimina aquesta connexió";
-App::$strings["Approve this connection"] = "Apccepta aquesta connexió";
-App::$strings["Accept connection to allow communication"] = "Accepta la connexió per permetre la comunicació";
-App::$strings["Set Affinity"] = "Ajusta l'Afinitat";
-App::$strings["Set Profile"] = "Ajusta el Perfil";
-App::$strings["Set Affinity & Profile"] = "Ajusta Afinitat i Perfil";
-App::$strings["Apply these permissions automatically"] = "Aplica aquests permissos automaticament";
-App::$strings["This connection's address is"] = "La direcció d'aquesta connexió es";
-App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Els permisos indicats en aquesta pàgina seran aplicats a totes les noves connexions.";
-App::$strings["Slide to adjust your degree of friendship"] = "Llisca per ajustar el nivell d'amistat";
-App::$strings["Slide to adjust your rating"] = "Llisca per ajustar la valoració";
-App::$strings["Optionally explain your rating"] = "Opcionalment pots explicar la teva valoració";
-App::$strings["Custom Filter"] = "Filtre a mida";
-App::$strings["Only import posts with this text"] = "Importa exclusivament entrades amb aquest text";
-App::$strings["words one per line or #tags or /patterns/, leave blank to import all posts"] = "paraules una per línia o #etiquetes o /patrons/, deixar en blanc per importar totes les entrades";
-App::$strings["Do not import posts with this text"] = "No importar entrades amb aquest text";
-App::$strings["This information is public!"] = "Aquesta informació es pública!";
-App::$strings["Connection Pending Approval"] = "Connexió Pendent d'Aprovació";
-App::$strings["Connection Request"] = "Petició de Connexió";
-App::$strings["(%s) would like to connect with you. Please approve this connection to allow communication."] = "(%s) voldria conectar amb tu. Aprova aquesta connexió per permetre la connexió.";
-App::$strings["Approve Later"] = "Aprovar més tard";
-App::$strings["inherited"] = "heretat";
-App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Tria el perfil que vols mostrar a %s quan es vegi el perfil segur.";
-App::$strings["Their Settings"] = "Els seus Ajustos";
-App::$strings["My Settings"] = "Els Meus Ajustos";
-App::$strings["Individual Permissions"] = "Permisos Individuals";
-App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Alguns permisos poden ser heretats dels teus canals <a href=\"settings\"><strong>ajustos de privacitat</strong></a>, Els quals tenen més prioritat que els ajustos individuals. <strong>No</strong> pots canviar aquests ajustos aquí.";
-App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Alguns permisos poden ser heretats dels teus canals <a href=\"settings\"><strong>ajustos de privacitat</strong></a>, Els quals tenen més prioritat que els ajustos individuals. <strong>Pots</strong> canviar aquests ajustos aquí pero no tindran cap impacte fins que no canviis els ajustos heretats.";
-App::$strings["Last update:"] = "Darrera actualització:";
-App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Em trobat un problema durant l'inici de sessió amb el OpenID que has facilitat. verifica l'ortografia correcta de la ID.";
-App::$strings["The error message was:"] = "El missatge d'error fou:";
-App::$strings["Authentication failed."] = "Ha fallat l'autentificació.";
-App::$strings["Remote Authentication"] = "Autentificació Remota";
-App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Introdueix la teva adreça del canal (eg canal@exemple.com)";
-App::$strings["Authenticate"] = "Autentica't";
-App::$strings["Unable to lookup recipient."] = "Incapaç de trobar el destinatari.";
-App::$strings["Unable to communicate with requested channel."] = "Incapaç de comunicar amb el canal demanat.";
-App::$strings["Cannot verify requested channel."] = "No puc verificar el canal demanat.";
-App::$strings["Selected channel has private message restrictions. Send failed."] = "El canal seleccionat te restriccions sobre els missatges privats. L'enviament ha fallat.";
-App::$strings["Message deleted."] = "Missatge eliminat.";
-App::$strings["Message recalled."] = "Recupera el missatge.";
-App::$strings["Send Private Message"] = "Envia Missatge Privat";
-App::$strings["To:"] = "Per:";
-App::$strings["Subject:"] = "Assumpte:";
-App::$strings["Send"] = "Envia";
-App::$strings["Message not found."] = "Missatge no trobat.";
-App::$strings["Delete message"] = "Elimina el missatge";
-App::$strings["Recall message"] = "Recupera el missatge";
-App::$strings["Message has been recalled."] = "El missatge s'ha recuperat.";
-App::$strings["Private Conversation"] = "Conversació Privada";
-App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Comunicació segura no disponible. Pots respondre des de la pàgina de perfil del remitent.";
-App::$strings["Send Reply"] = "Envia Resposta";
-App::$strings["Invalid request identifier."] = "Sol·licitud d'identificació invàlida.";
-App::$strings["Discard"] = "Descarta";
-App::$strings["Please login."] = "Inicia Sessió.";
-App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Autenticació remota bloquejada. Ha iniciat sessió en aquest lloc a nivell local. Si us plau, tanca la sessió i torna-ho a intentar.";
-App::$strings["Add a Channel"] = "Afegeix un Canal";
-App::$strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "Un canal es la teva pròpia col·lecció de pàgines web. Un canal pot emprat per mantenir perfils a una xarxa social, blocs, grups de conversació, fòrums, pàgines de famosos, i molt més. Pots crear tants canals com el teu servei d'internet et permeti.";
-App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Exemples: \"Joan Tou\", \"Manel i els seus esquirols\", \"Fútbol\", \"Grup de Gegants\"";
-App::$strings["Choose a short nickname"] = "Tria un àlies curt";
-App::$strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "El teu àlies es pot emprar per crear un canal fàcilment memoritzatble (com una adreça de correu electrònic) que pot ser compartit amb altres.";
-App::$strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "O <a href=\"import\">importa un canal existent</a> d'un altre lloc";
-App::$strings["Please choose a channel type (such as social networking or community forum) and privacy requirements so we can select the best permissions for you"] = "Tria un tipus de canal (com a xarxa social o fòrum comunitari) i els requisits de privacitat, així podem proposar el que te el permisos més adients.";
-App::$strings["Channel Type"] = "tipus de Canal";
-App::$strings["Read more about roles"] = "Llegix més sobre els rols";
-App::$strings["App installed."] = "Aplicació instal·lada.";
-App::$strings["Malformed app."] = "Aplicació amb errors";
-App::$strings["Embed code"] = "Codi embegut";
-App::$strings["Edit App"] = "Edita l'Aplicació";
-App::$strings["Create App"] = "Crea l'Aplicació";
-App::$strings["Name of app"] = "Nom de l'Aplicació";
-App::$strings["Location (URL) of app"] = "Ubicació (URL) de l'aplicació";
-App::$strings["Photo icon URL"] = "Foto icona URL";
-App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixels - opcional";
-App::$strings["Version ID"] = "Versió ID";
-App::$strings["Price of app"] = "Preu de l'aplicació";
-App::$strings["Location (URL) to purchase app"] = "Ubicació (URL) per comprar l'aplicació";
-App::$strings["sent you a private message"] = "Se t'ha enviat un missatge privat";
-App::$strings["added your channel"] = "el teu canal s'ha afegit";
-App::$strings["posted an event"] = "enviat un event";
-App::$strings["Comanche page description language help"] = "Pgina d'ajuda del llenguatge Comanche";
-App::$strings["Layout Description"] = "Descripció del Disseny de la Pàgina";
-App::$strings["Download PDL file"] = "Descarrega l'arxiu PDL";
-App::$strings["Welcome to %s"] = "Benvingut a %s";
-App::$strings["Lorem Ipsum"] = "Lorem Ipsum";
-App::$strings["Bookmark added"] = "Favorit afegit";
-App::$strings["My Bookmarks"] = "Els Meus Favorits";
-App::$strings["My Connections Bookmarks"] = "Les connexions dels meus Favorits";
-App::$strings["Insufficient permissions. Request redirected to profile page."] = "Permisos insuficients. Petició redirigida a la pàgina del perfil.";
-App::$strings["This setting requires special processing and editing has been blocked."] = "Aquest ajust requereix un procés espedial i l'edició esta bloquejada.";
-App::$strings["Configuration Editor"] = "Editor de Configuració";
-App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "atenció: Realitzar segons quins ajustos pot fer el canal inoperable. Deixa aquesta pàgina si no estas segur i tens suficients coneixements sobre l'ús correcte d'aquesta característica.";
-App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "No hi ha suggerencies. Si es un lloc nou, espera 24 hores i proba de nou.";
-App::$strings["Poll"] = "Sondeija";
-App::$strings["View Results"] = "Mostra els Resultats";
-App::$strings["No service class restrictions found."] = "No s'han trobat restriccions de clase.";
+App::$strings["Firefox Share \$Projectname provider"] = "Firefox Share \$Projectname provider";
+App::$strings["Start calendar week on monday"] = "Comença la setmana del calendari el dilluns";
+App::$strings["\$Projectname Server - Setup"] = "Servidor \$Projectname - Configuració";
+App::$strings["Could not connect to database."] = "No puc connectar amb la base de dades";
+App::$strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "No s'ha pogut connectar a l'URL del lloc especificat. Possible problema amb el certificat SSL o de DNS.";
+App::$strings["Could not create table."] = "No puc crear la taula.";
+App::$strings["Your site database has been installed."] = "La teva base de dades del lloc s'ha instal·lat.";
+App::$strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "Podria ser necessari importar el fitxer \"install / schema_xxx.sql\" manualment utilitzant un client de base de dades.";
+App::$strings["Please see the file \"install/INSTALL.txt\"."] = "Si us plau, consulteu el fitxer \"install / INSTALL.txt\".";
+App::$strings["System check"] = "Comprovació del sistema";
+App::$strings["Check again"] = "Comprova de nou";
+App::$strings["Database connection"] = "Connexió de base de dades";
+App::$strings["In order to install \$Projectname we need to know how to connect to your database."] = "Per tal d'instaŀlar \$Projectname cal configurar la connexió a la base de dades.";
+App::$strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Si us plau, poseu-vos en contacte amb el proveïdor de serveis o administrador del lloc si vostè té preguntes sobre aquests paràmetres.";
+App::$strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "La base de dades s'especifica a continuació ja ha d'existir. Si no és així, si us plau crear-la abans de continuar.";
+App::$strings["Database Server Name"] = "Base de Dades Nom del Servidor";
+App::$strings["Default is 127.0.0.1"] = "Per defecte es 127.0.0.1";
+App::$strings["Database Port"] = "Port per a la Base de Dades";
+App::$strings["Communication port number - use 0 for default"] = "Numero del port de comunicacions - empra 0 per defecte";
+App::$strings["Database Login Name"] = "Base de Dades Nom d'Accès";
+App::$strings["Database Login Password"] = "Base de Dades Contrasenya d'Accès";
+App::$strings["Database Name"] = "Nom de la Base de Dades";
+App::$strings["Database Type"] = "Tipus de Base de Dades";
+App::$strings["Site administrator email address"] = "Adreça de correu de l'administrador del lloc";
+App::$strings["Your account email address must match this in order to use the web admin panel."] = "El teu compte de email ha de coincidir amb això per poder emprar el panel web d'administrador.";
+App::$strings["Website URL"] = "URL del lloc web";
+App::$strings["Please use SSL (https) URL if available."] = "Si us plau, empra SSL (https) URL si està disponible.";
+App::$strings["Please select a default timezone for your website"] = "Si us plau, tria la zona horària del teu lloc web";
+App::$strings["Site settings"] = "Ajustos del lloc";
+App::$strings["Enable \$Projectname <strong>advanced</strong> features?"] = "Activar característiques <strong>advanced</strong> de \$Projectname?";
+App::$strings["Some advanced features, while useful - may be best suited for technically proficient audiences"] = "Algunes característiques avançades, hauran de ser ajustades per persones tècnicament capaces, per poder emprar-les.";
+App::$strings["PHP version 5.5 or greater is required."] = "PHP version 5.5 or greater is required.";
+App::$strings["PHP version"] = "PHP version";
+App::$strings["Could not find a command line version of PHP in the web server PATH."] = "No s'ha pogut trobar una versió de línia d'ordres del PHP en el PATH del servidor web.";
+App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Si vostè no té una versió de línia d'ordres del PHP instal·lada al servidor, vostè no serà capaç d'executar sondejos en segon pla via cron.";
+App::$strings["PHP executable path"] = "Camí cap l'executable de PHP";
+App::$strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Introdueix el camí cap l'executable de php. Pots deixa-ho en blanc i continuar l'instal·lació.";
+App::$strings["Command line PHP"] = "Línia d'ordres de PHP";
+App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "La versió de línia d'ordres de PHP al teu sistema no te el \"register_argc_argv\" activat.";
+App::$strings["This is required for message delivery to work."] = "Això es requereix per que funcioni l'entrega de missatges.";
+App::$strings["PHP register_argc_argv"] = "PHP register_argc_argv";
+App::$strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "La mida màxima que se't permet pujar està establerta en %s. La mida màxima per arxiu pujat es de %s. Se't permet pujar fins a %d arxius d'una vegada.";
+App::$strings["You can adjust these settings in the servers php.ini."] = "Pots ajustar aquests valors a l'arxiu php.ini del servidor";
+App::$strings["PHP upload limits"] = "Límits de pujada de PHP";
+App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Error: la funció \"openssl_pkey_new\" en aquest sistema no es capaç de generar claus d'encriptació";
+App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Si esta funcionant sota Windows, per favor, miri \"http://www.php.net/manual/en/openssl.installation.php\".";
+App::$strings["Generate encryption keys"] = "Generar claus de xifrat";
+App::$strings["libCurl PHP module"] = "mòdul PHP libCurl ";
+App::$strings["GD graphics PHP module"] = "mòdul PHP GD gràfics";
+App::$strings["OpenSSL PHP module"] = "mòdul PHP OpenSSL";
+App::$strings["mysqli or postgres PHP module"] = "mòdul PHP mysqli o postgres";
+App::$strings["mb_string PHP module"] = "mòdul PHP mb_string";
+App::$strings["mcrypt PHP module"] = "mòdul PHP mcrypt";
+App::$strings["xml PHP module"] = "Mòdul xml de PHP";
+App::$strings["Apache mod_rewrite module"] = "mòdul Apache mod_rewrite";
+App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Error: el mòdul mod-rewrite del servidor web Apache es requereix i no està instal·lat.";
+App::$strings["proc_open"] = "proc_open";
+App::$strings["Error: proc_open is required but is either not installed or has been disabled in php.ini"] = "Error: es requereix proc_open però o no està instal·lat o ha estat desactivat a php.ini";
+App::$strings["Error: libCURL PHP module required but not installed."] = "Error: el mòdul PHP libCURL es requereix però no està instal·lat.";
+App::$strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Error: el mòdul PHP GD graphics amb support JPEG es requereix però no està instal·lat.";
+App::$strings["Error: openssl PHP module required but not installed."] = "Error: el mòdul PHP openssl es requereix però no està instal·lat.";
+App::$strings["Error: mysqli or postgres PHP module required but neither are installed."] = "Error: el mòdul PHO mysqli o postgres es requereix però no està instal·lat.";
+App::$strings["Error: mb_string PHP module required but not installed."] = "Error: el mòdul PHP mb_string es requereix però no està instal·lat.";
+App::$strings["Error: mcrypt PHP module required but not installed."] = "Error: el mòdul PHP mcrypt es requereix però no està instal·lat.";
+App::$strings["Error: xml PHP module required for DAV but not installed."] = "Error: el mòdul xml de PHP es requereix per DAV però no està instal·lat.";
+App::$strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "L'instaŀlador ha de poder crear i modificar un fitxer anomenat «.htconfig.php» a la carpeta arrel del servidor, però sembla que no ho pot fer.";
+App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Això sol ser un problema de permisos. Per molt que el teu usuari pugui modificar-lo, és el del servidor web qui necessita els poders de modificació.";
+App::$strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Al final d'aquest procés hauràs de desar un text a l'arxiu «.htconfig.php», que es troba a la carpeta arrel del servidor.";
+App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Aquest procés és opcional. Per a fer una instaŀlació manual consulta les instruccions a «install/INSTALL.txt\".";
+App::$strings[".htconfig.php is writable"] = "L'arxiu «.htconfig.php» es pot modificar";
+App::$strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red fa servir el motor de plantilles Smarty3 per a renderitzar les vistes més ràpidament.";
+App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder."] = "Per tal de guardar aquestes plantilles compilades, el servidor web necessita tenir premis d'escriptura en el directori %s sota la carpeta principal.";
+App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Comprova que l'usuari que executa el servidor (www-data en Apache) té permisos d'escriptura en aquesta carpeta.";
+App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Nota: com a mesura de seguretat l'usuari del servidor web ha de tenir accés d'escriptura només a %s, i no a les plantilles (.tpl) que conté.";
+App::$strings["%s is writable"] = "Es pot escriure a %s";
+App::$strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "Red fa servir la carpeta «store» per a desar els fitxers pujats. Per tant, el servidor web necessita tenir permís d'escriptura en aquesta carpeta, que està a l'arrel del servidor web.";
+App::$strings["store is writable"] = "Es pot escriure al magatzem (store)";
+App::$strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "El certificat SSL no s'ha pogut validar. Arregla-ho o deshabilita l'accés https a aquest lloc";
+App::$strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Si tens accès pet https al teu lloc web o permets connexions pel port TCP 443 (port https), Has d'emprar un certificat VÀLID. NO es poden emprar certificats AUTO-SIGNATS!";
+App::$strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "El motiu d'aquesta restricció és que les teves entrades públiques poden contenir referències a imatges del teu propi node.";
+App::$strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Si el teu certificat no és reconegut, llavors el membres d'altres hubs, encara que tinguin certificats vàlids, rebran una advertència de seguretat en carregar contingut teu.";
+App::$strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Per tant, com que perjudica la usabilitat més enllà del teu lloc, la restricció de tenir un certificat reconegut és molt important.";
+App::$strings["Providers are available that issue free certificates which are browser-valid."] = "Hi ha autoritats de certificació reconegudes que ofereixen certificats gratuïts.";
+App::$strings["SSL certificate validation"] = "Validació del certificat SSL";
+App::$strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "No es poden reescriure les URL a «.htaccess». Comprova la configuració del servidor:";
+App::$strings["Url rewrite is working"] = "Es poden reescriure les URL a «.htaccess»";
+App::$strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "L'arxiu de configuracio de la base de dades «.htconfig.php» no s'ha pogut modificar. El pots crear tu a l'arrel del servidor web amb el text de la caixa com a contingut.";
+App::$strings["Errors encountered creating database tables."] = "S'han produït errors mentre es creaven taules a la base de dades.";
+App::$strings["<h1>What next</h1>"] = "<h1>I ara què?</h1>";
+App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANT! Cal que configuris manualment una execució periòdica del \"poller\".";
App::$strings["Files: shared with me"] = "Arxius: compartits amb jo";
App::$strings["NEW"] = "NOU";
App::$strings["Remove all files"] = "Esborra tots els arxius";
App::$strings["Remove this file"] = "Esborra l'arxiu";
-App::$strings["Schema Default"] = "Esquema Predeterminat";
-App::$strings["Sans-Serif"] = "Sans-Serif";
-App::$strings["Monospace"] = "Monospace";
+App::$strings["Version %s"] = "Versió %s";
+App::$strings["Installed plugins/addons/apps:"] = "Plugins/addons/apps Instal·lats:";
+App::$strings["No installed plugins/addons/apps"] = "Plugins/addons/apps no instal·lats";
+App::$strings["This is a hub of \$Projectname - a global cooperative network of decentralized privacy enhanced websites."] = "Aquest és un node de \$Projectname, una xarxa cooperativa mundial de llocs web descentralitzats amb gran control de la privacitat.";
+App::$strings["Tag: "] = "Etiqueta:";
+App::$strings["Last background fetch: "] = "Última actualització en rerefons:";
+App::$strings["Current load average: "] = "Càrrega actual mitja:";
+App::$strings["Running at web location"] = "Correguent en el lloc web";
+App::$strings["Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more about \$Projectname."] = "Visita <a href=\"http://hubzilla.org\">hubzilla.org</a> per saber-ne més de \$Projectname.";
+App::$strings["Bug reports and issues: please visit"] = "Per informar d'errors o problemes ves a";
+App::$strings["\$projectname issues"] = "\$projectname qüestions";
+App::$strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Per suggerències, felicitacions i altres, envia'ns un mail a «redmatrix» [arroba] librelist [punt] com";
+App::$strings["Site Administrators"] = "Administradors del lloc";
+App::$strings["Failed to create source. No channel selected."] = "Error en crear l'origen. Cap canal seleccionat.";
+App::$strings["Source created."] = "Origen creat.";
+App::$strings["Source updated."] = "Origen actualitzat.";
+App::$strings["*"] = "*";
+App::$strings["Channel Sources"] = "Canal Origen";
+App::$strings["Manage remote sources of content for your channel."] = "Gestiona contingut per al teu canal d'origens remots";
+App::$strings["New Source"] = "Nou Origen";
+App::$strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importar tot o sel·lecciona contingut dels següents canals, en aquest canal i distribueix-lo d'acord als teus ajustos de canals.";
+App::$strings["Only import content with these words (one per line)"] = "Només importa contingut amb aquestes paraules (una per línia)";
+App::$strings["Leave blank to import all public content"] = "Deixar en blanc per importar tot el contingut públic";
+App::$strings["Channel Name"] = "Nom del canal";
+App::$strings["Add the following categories to posts imported from this source (comma separated)"] = "Afegeix les següents categories d'entrades importades des d'aquest origen (separat per comes)";
+App::$strings["Source not found."] = "No s'ha trobat la font.";
+App::$strings["Edit Source"] = "Edita la font";
+App::$strings["Delete Source"] = "Esborra la font";
+App::$strings["Source removed"] = "S'ha esborrat la font";
+App::$strings["Unable to remove source."] = "No s'ha pogut esborrar la font.";
+App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s esta seguint %2\$s de %3\$s";
+App::$strings["%1\$s stopped following %2\$s's %3\$s"] = "%1\$s abandona el seguiment %2\$s de %3\$s";
+App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "No hi ha suggerencies. Si es un lloc nou, espera 24 hores i proba de nou.";
+App::$strings["Ignore/Hide"] = "Ignora/Amaga";
+App::$strings["post"] = "entrada";
+App::$strings["comment"] = "comentari";
+App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha etiquetat %3\$s de %2\$s amb %4\$s";
+App::$strings["Tag removed"] = "S'ha tret l'etiqueta";
+App::$strings["Remove Item Tag"] = "Elimina l'etiqueta d'element";
+App::$strings["Select a tag to remove: "] = "Tria l'etiqueta a eliminar:";
+App::$strings["Thing updated"] = "S'ha actualitzat la cosa";
+App::$strings["Object store: failed"] = "No s'ha pogut emmagatzemar l'objecte";
+App::$strings["Thing added"] = "S'ha afegit la cosa";
+App::$strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
+App::$strings["Show Thing"] = "Mostra la cosa";
+App::$strings["item not found."] = "no s'ha trobat l'element.";
+App::$strings["Edit Thing"] = "Edita la cosa";
+App::$strings["Select a profile"] = "Tria un perfil";
+App::$strings["Post an activity"] = "Publica una activitat";
+App::$strings["Only sends to viewers of the applicable profile"] = "S'envia només a visitants del perfil corresponent";
+App::$strings["Name of thing e.g. something"] = "Nom de la cosa. Exemple: patata";
+App::$strings["URL of thing (optional)"] = "Adreça URL de la cosa (opcional)";
+App::$strings["URL for photo of thing (optional)"] = "Adreça URL de la foto d'una cosa (opcional)";
+App::$strings["Add Thing to your Profile"] = "Afegeix una cosa al teu perfil";
+App::$strings["Export Channel"] = "Exportar Canal";
+App::$strings["Export your basic channel information to a file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new server hub, but does not contain your content."] = "Exporta la informació bàsica del canal a un arxiu. Això actua com a còpia de recolzament de les teves connexions, permisos, perfil i dades bàsiques, les quals pots emprar per traslladar aquestes dades a una altre lloc/node, però no conté el contingut del canal.";
+App::$strings["Export Content"] = "Exportar el Contingut";
+App::$strings["Export your channel information and recent content to a JSON backup that can be restored or imported to another server hub. This backs up all of your connections, permissions, profile data and several months of posts. This file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Exporta la informació del canal i tot el contingut recent a un arxiu de recolzament JSON que por ser restaurat o importat en altre lloc/node. Això còpia totes les teves connexions, permisos, perfil i dades i mesos de entrades. L'arxiu pot ser MOLT gran. Si et plau, sigues pacient ja que pot trigar uns minuts a començar a baixar.";
+App::$strings["Export your posts from a given year."] = "Exporta les teves entrades d'un any donat.";
+App::$strings["You may also export your posts and conversations for a particular year or month. Adjust the date in your browser location bar to select other dates. If the export fails (possibly due to memory exhaustion on your server hub), please try again selecting a more limited date range."] = "Pots també exportar les teves entrades i conversacions d'un any o un mes en particular. Ajusta la data a la barra de direccions del navegador per seleccionar altres dates. Si la exportació falla (possiblement degut al esgotament de la memòria del node servidor), si et plau, intenta de nou la selecció d'un rang de dates més limitat.";
+App::$strings["To select all posts for a given year, such as this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Per seleccionar tots els missatges per a un any determinat, com aquest any, visiteu <a href=\"%1\$s\">%2\$s</a>";
+App::$strings["To select all posts for a given month, such as January of this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Per seleccionar tots els missatges per a un mes determinat, com el de gener d'aquest any, visiteu <a href=\"%1\$s\">%2\$s</a>";
+App::$strings["These content files may be imported or restored by visiting <a href=\"%1\$s\">%2\$s</a> on any site containing your channel. For best results please import or restore these in date order (oldest first)."] = "Aquests arxius de contingut poden ser importats o restaurats per visitar <a href=\"%1\$s\">%2\$s</a> en qualsevol lloc que conté el teu canal. Per obtenir els millors resultats si us plau, importar o restaurar aquests en ordre de data (la més antiga primer).";
+App::$strings["No connections."] = "Sense connexions.";
+App::$strings["Visit %s's profile [%s]"] = "Visita el perfil [%s] de %s";
+App::$strings["View Connections"] = "Veure Connexions";
+App::$strings["Source of Item"] = "Origen de l'article";
+App::$strings["Webpages"] = "Pàgines web";
+App::$strings["Actions"] = "Accions";
+App::$strings["Page Link"] = "Enllaç a Pàgina";
+App::$strings["Page Title"] = "Títol de la pàgina";
+App::$strings["Xchan Lookup"] = "Cerca a xchan";
+App::$strings["Lookup xchan beginning with (or webbie): "] = "Cerca a xchan començant per (o webbie)";
+App::$strings["Site Admin"] = "Administració";
+App::$strings["Bug Report"] = "Informe d'Errors";
+App::$strings["View Bookmarks"] = "Veure Marcadors";
+App::$strings["My Chatrooms"] = "Les meves Sales de Xat";
+App::$strings["Firefox Share"] = "Compartir amb Firefox";
+App::$strings["Remote Diagnostics"] = "Diagnòstics Remots";
+App::$strings["Suggest Channels"] = "Suggerir Canals";
+App::$strings["Login"] = "Identifica't";
+App::$strings["Grid"] = "Malla";
+App::$strings["Channel Home"] = "Canal Personal";
+App::$strings["Events"] = "Esdeveniments";
+App::$strings["Directory"] = "Directori";
+App::$strings["Mail"] = "Correu";
+App::$strings["Chat"] = "Xerrar";
+App::$strings["Probe"] = "Sondeig";
+App::$strings["Suggest"] = "Suggeriment";
+App::$strings["Random Channel"] = "Canal Aleatori";
+App::$strings["Invite"] = "Convida";
+App::$strings["Features"] = "Funcionalitats";
+App::$strings["Post"] = "Entrada";
+App::$strings["Purchase"] = "Compra";
+App::$strings["Missing room name"] = "Perdut el nom de la sala";
+App::$strings["Duplicate room name"] = "Nom de la sala duplicat";
+App::$strings["Invalid room specifier."] = "Especificació de la sala invàlida.";
+App::$strings["Room not found."] = "Sala no trobada.";
+App::$strings["Room is full"] = "La sala es plena";
+App::$strings["\$Projectname Notification"] = "Notificació de \$Projectname";
+App::$strings["\$projectname"] = "\$projectname";
+App::$strings["Thank You,"] = "Gràcies,";
+App::$strings["%s Administrator"] = "%s Administrador";
+App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
+App::$strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla:Notify] Nou corrreu rebut en %s";
+App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s t'ha enviat un nou missatge privat a %3\$s.";
+App::$strings["%1\$s sent you %2\$s."] = "%1\$s t'ha enviat %2\$s.";
+App::$strings["a private message"] = "un missatge privat";
+App::$strings["Please visit %s to view and/or reply to your private messages."] = "Per favor, visita %s per a veure i/o respondre els teus missatges privats.";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s comentat en [zrl=%3\$s]a %4\$s[/zrl]";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s comentat en [zrl=%3\$s]%4\$s de %5\$s[/zrl]";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s comentat en [zrl=%3\$s]el teu %4\$s[/zrl]";
+App::$strings["[Hubzilla:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Hubzilla:Notify] Comentari sobre una conversació #%1\$d per %2\$s";
+App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s comentat en un article/conversa que havies estat seguint.";
+App::$strings["Please visit %s to view and/or reply to the conversation."] = "Si us plau visita %s per veure i/o contestar a la conversa";
+App::$strings["[Hubzilla:Notify] %s posted to your profile wall"] = "[Hubzilla:Avís] %s ha escrit una entrada al teu mur";
+App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s ha escrit una entrada al teu mur en %3\$s";
+App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s enviat correu a [zrl=%3\$s]el teu mur[/zrl]";
+App::$strings["[Hubzilla:Notify] %s tagged you"] = "[Hubzilla:Notificació] %s t'ha etiquetat";
+App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s t'ha etiquetat a %3\$s";
+App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]t'ha etiquetat[/zrl].";
+App::$strings["[Hubzilla:Notify] %1\$s poked you"] = "[Hubzilla:Avís] %1\$s s'en fot de tu";
+App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s s'en fot de tú a %3\$s";
+App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]s'en fot de tú[/zrl].";
+App::$strings["[Hubzilla:Notify] %s tagged your post"] = "[Hubzilla:Avís] %s ha etiquetat la teva entrada";
+App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s ha etiquetat la teva entrada a %3\$s";
+App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s etiquetat [zrl=%3\$s]la teva entrada[/zrl]";
+App::$strings["[Hubzilla:Notify] Introduction received"] = "[Hubzilla:Avís] Presentació rebuda";
+App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, has rebut una nova petició de connexió de '%2\$s' a %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, has rebut [zrl=%2\$s]una nova petició de connexió[/zrl] de %3\$s.";
+App::$strings["You may visit their profile at %s"] = "Pots visitar el seu perfil a %s";
+App::$strings["Please visit %s to approve or reject the connection request."] = "Si us plau, visita %s per aprovar o rebutjar la petició de connexió.";
+App::$strings["[Hubzilla:Notify] Friend suggestion received"] = "[Hubzilla:Notificació] Rebuda suggerencia d'amistat";
+App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, has rebut una suggerència d'amistat de '%2\$s' a %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, has rebut [zrl=%2\$s]una suggerència d'amistat[/zrl] per %3\$s de %4\$s.";
+App::$strings["Name:"] = "Nom:";
+App::$strings["Photo:"] = "Foto:";
+App::$strings["Please visit %s to approve or reject the suggestion."] = "Per favor, visita %s per a aprovar o rebutjar la suggerencia.";
+App::$strings["[Hubzilla:Notify]"] = "[Hubzilla:Notificació]";
+App::$strings["created a new post"] = "Creada una nova entrada";
+App::$strings["commented on %s's post"] = "comentat a l'entrada de %s";
+App::$strings["Private Message"] = "Missatge Privat";
+App::$strings["Select"] = "Selecciona";
+App::$strings["Save to Folder"] = "Guardar en la Carpeta";
+App::$strings["I will attend"] = "Assistiré";
+App::$strings["I will not attend"] = "No assistiré";
+App::$strings["I might attend"] = "Podria assistir";
+App::$strings["I agree"] = "D'acord";
+App::$strings["I disagree"] = "En desacord";
+App::$strings["I abstain"] = "M'abstinc";
+App::$strings["Add Star"] = "Fes-lo Preferit";
+App::$strings["Remove Star"] = "Treu-lo de Preferits";
+App::$strings["Toggle Star Status"] = "Canvia el Estat de la Preferència";
+App::$strings["starred"] = "preferit";
+App::$strings["Message signature validated"] = "Validada la signatura del missatge";
+App::$strings["Message signature incorrect"] = "Signatura del missatge incorrecta";
+App::$strings["Add Tag"] = "Afegeix Etiqueta";
+App::$strings["like"] = "agrada";
+App::$strings["dislike"] = "desagrada";
+App::$strings["Share This"] = "Comparteix Això";
+App::$strings["share"] = "comparteix";
+App::$strings["Delivery Report"] = "Informe de Lliurament";
+App::$strings["%d comment"] = array(
+ 0 => "%d commentari",
+ 1 => "%d commentaris",
+);
+App::$strings["View %s's profile - %s"] = "Veure perfil de %s - %s";
+App::$strings["to"] = "a";
+App::$strings["via"] = "via";
+App::$strings["Wall-to-Wall"] = "Mur-a-Mur";
+App::$strings["via Wall-To-Wall:"] = "via Mur-a-Mur:";
+App::$strings["from %s"] = "De %s";
+App::$strings["last edited: %s"] = "últim editat: %s";
+App::$strings["Expires: %s"] = "Expira: %s";
+App::$strings["Save Bookmarks"] = "Guarda Favorits";
+App::$strings["Add to Calendar"] = "Afegeix al Calendari";
+App::$strings["Mark all seen"] = "Marca tot com ja vist";
+App::$strings["[+] show all"] = "[+] mostra tot";
+App::$strings["Bold"] = "Negreta";
+App::$strings["Italic"] = "Italica";
+App::$strings["Underline"] = "Subratllat";
+App::$strings["Quote"] = "Cometes";
+App::$strings["Code"] = "Codi";
+App::$strings["Image"] = "Imatge";
+App::$strings["Insert Link"] = "Insereix Enllaç";
+App::$strings["Video"] = "Video";
+App::$strings["No username found in import file."] = "No s'ha trobat nom d'usuari a l'arxiu d'importació.";
+App::$strings["Unable to create a unique channel address. Import failed."] = "No s'ha pogut importar el canal perquè l'adreça única de canal no s'ha pogut crear.";
+App::$strings["Cannot locate DNS info for database server '%s'"] = "No s'ha trobat informació de DNS pel servidor de base de dades '%s'";
+App::$strings["Categories"] = "Categories";
+App::$strings["Tags"] = "Etiquetes";
+App::$strings["Keywords"] = "Paraules clau";
+App::$strings["have"] = "tinc";
+App::$strings["has"] = "tens";
+App::$strings["want"] = "vull";
+App::$strings["wants"] = "vols";
+App::$strings["likes"] = "agrada";
+App::$strings["dislikes"] = "desagrada";
+App::$strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
+App::$strings["Starts:"] = "Inicia:";
+App::$strings["Finishes:"] = "Acaba:";
+App::$strings["This event has been added to your calendar."] = "Aquest succés ha estat afegit al teu calendari.";
+App::$strings["Not specified"] = "Sense especificar";
+App::$strings["Needs Action"] = "Necessita una Acció";
+App::$strings["Completed"] = "Completat";
+App::$strings["In Process"] = "En Procès";
+App::$strings["Cancelled"] = "Cancel·lat";
+App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "No s'ha pogut importar el canal perquè l'identificador del canal no s'ha pogut duplicar en aquest servidor.";
+App::$strings["Channel clone failed. Import failed."] = "No s'ha pogut importar el canal perquè el canal no s'ha pogut clonar.";
+App::$strings["(Unknown)"] = "(Desconegut)";
+App::$strings["Visible to anybody on the internet."] = "Visible per tothom a la Internet";
+App::$strings["Visible to you only."] = "Visible només per tú.";
+App::$strings["Visible to anybody in this network."] = "Visible per tothom en aquesta xarxa.";
+App::$strings["Visible to anybody authenticated."] = "Visible per tothom autenticat.";
+App::$strings["Visible to anybody on %s."] = "Visible per a tothom a %s.";
+App::$strings["Visible to all connections."] = "Visible per a totes les connexions.";
+App::$strings["Visible to approved connections."] = "Visible per a les connexions aprovades.";
+App::$strings["Visible to specific connections."] = "Visible per a específiques connexions.";
+App::$strings["Privacy group is empty."] = "El grup privat està vuit.";
+App::$strings["Privacy group: %s"] = "Grup privat: %s";
+App::$strings["Connection not found."] = "Connexió no trobada.";
+App::$strings["profile photo"] = "foto del perfil";
+App::$strings["No recipient provided."] = "No s'ha proporcionat bústia.";
+App::$strings["[no subject]"] = "[no subject]";
+App::$strings["Unable to determine sender."] = "incapaç de determinar el remitent";
+App::$strings["Stored post could not be verified."] = "L'entrada guardada no pot ser verificada";
+App::$strings["prev"] = "prev";
+App::$strings["first"] = "primer";
+App::$strings["last"] = "últim";
+App::$strings["next"] = "pròxim";
+App::$strings["older"] = "el més antic";
+App::$strings["newer"] = "El més nou";
+App::$strings["No connections"] = "Sense Connexions";
+App::$strings["View all %s connections"] = "Veure totes les connexions de %s";
+App::$strings["poke"] = "esperona";
+App::$strings["poked"] = "esperonat";
+App::$strings["ping"] = "coloca";
+App::$strings["pinged"] = "colocat";
+App::$strings["prod"] = "picar";
+App::$strings["prodded"] = "picat";
+App::$strings["slap"] = "bufetada";
+App::$strings["slapped"] = "bufetejat";
+App::$strings["finger"] = "senyal";
+App::$strings["fingered"] = "senyalat";
+App::$strings["rebuff"] = "menyspreu";
+App::$strings["rebuffed"] = "menyspreuat";
+App::$strings["happy"] = "feliç";
+App::$strings["sad"] = "trist";
+App::$strings["mellow"] = "melós";
+App::$strings["tired"] = "cansat";
+App::$strings["perky"] = "turgent";
+App::$strings["angry"] = "enfadat";
+App::$strings["stupefied"] = "estupefacte";
+App::$strings["puzzled"] = "perplexe";
+App::$strings["interested"] = "Interessat";
+App::$strings["bitter"] = "amargat";
+App::$strings["cheerful"] = "feliç";
+App::$strings["alive"] = "viu";
+App::$strings["annoyed"] = "molest";
+App::$strings["anxious"] = "ansiós";
+App::$strings["cranky"] = "malagaitós";
+App::$strings["disturbed"] = "transtornat";
+App::$strings["frustrated"] = "frustrat";
+App::$strings["depressed"] = "deprimit";
+App::$strings["motivated"] = "motivat";
+App::$strings["relaxed"] = "relaxat";
+App::$strings["surprised"] = "sorprès";
+App::$strings["Monday"] = "Dilluns";
+App::$strings["Tuesday"] = "Dimarts";
+App::$strings["Wednesday"] = "Dimecres";
+App::$strings["Thursday"] = "Dijous";
+App::$strings["Friday"] = "Divendres";
+App::$strings["Saturday"] = "Dissabte";
+App::$strings["Sunday"] = "Diumenge";
+App::$strings["January"] = "Gener";
+App::$strings["February"] = "Febrer";
+App::$strings["March"] = "Març";
+App::$strings["April"] = "Abril";
+App::$strings["May"] = "Maig";
+App::$strings["June"] = "Juny";
+App::$strings["July"] = "Juliol";
+App::$strings["August"] = "Agost";
+App::$strings["September"] = "Setembre";
+App::$strings["October"] = "Octubre";
+App::$strings["November"] = "Novembre";
+App::$strings["December"] = "Desembre";
+App::$strings["Unknown Attachment"] = "Adjunt Desconegut";
+App::$strings["unknown"] = "desconegut";
+App::$strings["remove category"] = "elimina categoria";
+App::$strings["remove from file"] = "elimina del arxiu";
+App::$strings["default"] = "per defecte";
+App::$strings["Page layout"] = "Format de la pàgina";
+App::$strings["You can create your own with the layouts tool"] = "Pots crear el teu propi amb l'editor de format de pàgina.";
+App::$strings["Page content type"] = "Tipus de contingut de la pàgina";
+App::$strings["Select an alternate language"] = "Tria un idioma alternatiu";
+App::$strings["activity"] = "activitat";
+App::$strings["Design Tools"] = "Eines de disseny";
+App::$strings["Pages"] = "Pàgines";
+App::$strings["System"] = "Sistema";
+App::$strings["New App"] = "Nova App";
+App::$strings["Suggestions"] = "Suggerencies";
+App::$strings["See more..."] = "Veure més.....";
+App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Tens %1$.0f de %2$.0f connexions permeses.";
+App::$strings["Add New Connection"] = "Afegeix una Nova Connexió";
+App::$strings["Enter channel address"] = "Introdueix l'adreça del canal";
+App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Exemples: bob@example.com, https://exemple.com/barbara";
+App::$strings["Notes"] = "Notes";
+App::$strings["Remove term"] = "Plaç de remoció";
+App::$strings["Saved Searches"] = "Cerques Guardades";
+App::$strings["add"] = "afegeix";
+App::$strings["Saved Folders"] = "Carpetes Guardades";
+App::$strings["Everything"] = "Tot";
+App::$strings["Archives"] = "Arxius";
+App::$strings["Refresh"] = "Refresc";
+App::$strings["Account settings"] = "Ajustos de Compte";
+App::$strings["Channel settings"] = "Ajustos de Canal";
+App::$strings["Additional features"] = "Característiques addicionals";
+App::$strings["Feature/Addon settings"] = "Ajustos de Complements";
+App::$strings["Display settings"] = "Ajustos de pantalla";
+App::$strings["Manage locations"] = "Gestiona ubicacions";
+App::$strings["Export channel"] = "Exportat canal";
+App::$strings["Connected apps"] = "Apps connectades";
+App::$strings["Premium Channel Settings"] = "Ajustos Premium de Canal";
+App::$strings["Private Mail Menu"] = "Menú de Correu Privat";
+App::$strings["Combined View"] = "Vista Combinada";
+App::$strings["Inbox"] = "Safata d'entrada";
+App::$strings["Outbox"] = "Safata de sortida";
+App::$strings["New Message"] = "Nou Missatge";
+App::$strings["Conversations"] = "Conversacions";
+App::$strings["Received Messages"] = "Missatges Rebuts";
+App::$strings["Sent Messages"] = "Missatges Enviats";
+App::$strings["No messages."] = "Sense missatges.";
+App::$strings["Delete conversation"] = "Conversació esborrada";
+App::$strings["Events Menu"] = "Menú d'Esdeveniments";
+App::$strings["Day View"] = "Vista de Dia";
+App::$strings["Week View"] = "Vista de Setmana";
+App::$strings["Month View"] = "Vista de Mes";
+App::$strings["Events Tools"] = "Eina d'Esdeveniments";
+App::$strings["Export Calendar"] = "Exportar Calendari";
+App::$strings["Import Calendar"] = "Importar Calendari";
+App::$strings["Chatrooms"] = "Sala per Xerrar";
+App::$strings["Overview"] = "Visió General";
+App::$strings["Chat Members"] = "Membres de la Sala de Xat";
+App::$strings["Bookmarked Chatrooms"] = "Sales de Xat Favorites";
+App::$strings["Suggested Chatrooms"] = "Sales de Xat Suggerides";
+App::$strings["photo/image"] = "foto/imatge";
+App::$strings["Click to show more"] = "Fes clic per veure més";
+App::$strings["Rating Tools"] = "Eines de Valoració";
+App::$strings["Rate Me"] = "Valora'm";
+App::$strings["View Ratings"] = "Veure Valoracions";
+App::$strings["Forums"] = "Forums";
+App::$strings["Tasks"] = "Tasques";
+App::$strings["Documentation"] = "Documentació";
+App::$strings["Project/Site Information"] = "Informació del Projecte/Lloc";
+App::$strings["For Members"] = "Per Membres";
+App::$strings["For Administrators"] = "Per Administradors";
+App::$strings["For Developers"] = "Per Desenvolupadors";
+App::$strings["Member registrations waiting for confirmation"] = "Una inscripció per a ser membre està esperant confirmació";
+App::$strings["Inspect queue"] = "Revisa cua";
+App::$strings["DB updates"] = "Actualitzacions de Base de Dades";
+App::$strings["Admin"] = "Admin";
+App::$strings["Plugin Features"] = "Característiques del Plugin";
+App::$strings["Channel is blocked on this site."] = "El canal està bloquejat en aquest lloc.";
+App::$strings["Channel location missing."] = "Ubicació del canal perduda.";
+App::$strings["Response from remote channel was incomplete."] = "La resposta del canal remot fou incompleta.";
+App::$strings["Channel was deleted and no longer exists."] = "El canal fou esborrat i actualment no existeix.";
+App::$strings["Protocol disabled."] = "Protocol desactivat.";
+App::$strings["Channel discovery failed."] = "Descobriment de canal fallit.";
+App::$strings["Cannot connect to yourself."] = "No pots connectar amb tu mateix.";
+App::$strings["%1\$s's bookmarks"] = "%1\$s de marcadors";
+App::$strings["Public Timeline"] = "Línia de Temps Pública";
+App::$strings["Image/photo"] = "Imatge/foto";
+App::$strings["Encrypted content"] = "Contingut encriptat";
+App::$strings["Install %s element: "] = "Instal·la l'element %s:";
+App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Aquesta entrada contè un element %s instal·lable, potser manques de permissos per instal·lar-lo en aquest lloc.";
+App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s va escriure el següent %2\$s %3\$s";
+App::$strings["Click to open/close"] = "Clic per obrir/tancar";
+App::$strings["spoiler"] = "xafa guitarres";
+App::$strings["Different viewers will see this text differently"] = "Diferents observadors veuran aquest text de diferents formes";
+App::$strings["$1 wrote:"] = "$1 va escriure:";
+App::$strings["Directory Options"] = "Opcions de Directori";
+App::$strings["Safe Mode"] = "Manera Segura";
+App::$strings["Public Forums Only"] = "Només Fòrums Públics";
+App::$strings["This Website Only"] = "Només Aquest Lloc Web";
+App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "El formulario de la cadena de seguridad no era correcto. Esto probablemente ocurrió porque el formulario se ha abierto durante demasiado tiempo (> 3 horas) antes de enviarlo.";
+App::$strings["Logout"] = "Desconectar";
+App::$strings["End this session"] = "Finalitza aquesta sessió";
+App::$strings["Home"] = "Inici";
+App::$strings["Your posts and conversations"] = "Les teves entrades i converses";
+App::$strings["Your profile page"] = "La teva pàgina de perfil";
+App::$strings["Manage/Edit profiles"] = "Gestiona/Edita perfils";
+App::$strings["Edit Profile"] = "Edita Perfil";
+App::$strings["Edit your profile"] = "Edita el teu perfil";
+App::$strings["Your photos"] = "Les Teves Fotos";
+App::$strings["Your files"] = "Els teus arxius";
+App::$strings["Your chatrooms"] = "Les teves sales de xerrar";
+App::$strings["Bookmarks"] = "Marcadors";
+App::$strings["Your bookmarks"] = "Els teus marcadors";
+App::$strings["Your webpages"] = "Les teves pàgines web";
+App::$strings["Sign in"] = "Signatura";
+App::$strings["%s - click to logout"] = "%s - click per desconectar";
+App::$strings["Remote authentication"] = "Autenticació remota";
+App::$strings["Click to authenticate to your home hub"] = "Clica per autentificar-te en el teu node";
+App::$strings["Home Page"] = "Pàgina Personal";
+App::$strings["Create an account"] = "Crear un compte";
+App::$strings["Help and documentation"] = "Ajuda i documentació";
+App::$strings["Applications, utilities, links, games"] = "Aplicacions, utilitats, enllaços, jocs";
+App::$strings["Search site @name, #tag, ?docs, content"] = "Cerca pel lloc @name, #tag, ?docs, contingut";
+App::$strings["Channel Directory"] = "Directori de Canals";
+App::$strings["Your grid"] = "La teva malla";
+App::$strings["Mark all grid notifications seen"] = "Marca totes les notificacions de la malla vistes";
+App::$strings["Channel home"] = "Canal personal";
+App::$strings["Mark all channel notifications seen"] = "Marca totes les notificacions de canal vistes";
+App::$strings["Notices"] = "Noticies";
+App::$strings["Notifications"] = "Notificacions";
+App::$strings["See all notifications"] = "Veure totes les Notificacions";
+App::$strings["Private mail"] = "Correu privat";
+App::$strings["See all private messages"] = "Veure tots els missatges privats";
+App::$strings["Mark all private messages seen"] = "Marcar tots els missatges privats vistos";
+App::$strings["Event Calendar"] = "Calendari d'Events";
+App::$strings["See all events"] = "Veure tots els esdeveniments";
+App::$strings["Mark all events seen"] = "Marcar tots els esdeveniments vistos";
+App::$strings["Manage Your Channels"] = "Gestiona els Teus Canals";
+App::$strings["Account/Channel Settings"] = "Ajustos de Compte/Canal";
+App::$strings["Site Setup and Configuration"] = "Ajustos i Configuració del Lloc";
+App::$strings["Loading..."] = "Carregant...";
+App::$strings["@name, #tag, ?doc, content"] = "@nom, #etiqueta, ?doc, contingut";
+App::$strings["Please wait..."] = "Si us plau, espera.......";
+App::$strings["New window"] = "Nova finestra";
+App::$strings["Open the selected location in a different window or browser tab"] = "Obrir la localització seleccionada en un altre finestra o pestanya del navegador";
+App::$strings["User '%s' deleted"] = "usuari '%s' esborrat";
+App::$strings["%d invitation available"] = array(
+ 0 => "%d invitació disponible",
+ 1 => "%d invitacions disponibles",
+);
+App::$strings["Find Channels"] = "Troba Canals";
+App::$strings["Enter name or interest"] = "Entra un nom o interes";
+App::$strings["Connect/Follow"] = "Conecta/Segueix";
+App::$strings["Examples: Robert Morgenstein, Fishing"] = "Exemples: Lionel Messi, Futbolista";
+App::$strings["Random Profile"] = "Perfil Aleatori";
+App::$strings["Invite Friends"] = "Convida Amics";
+App::$strings["Advanced example: name=fred and country=iceland"] = "Exemple avançat: nom=pep i pais=eire";
+App::$strings["%d connection in common"] = array(
+ 0 => "%d connexió en comú",
+ 1 => "%d connexions en comú",
+);
+App::$strings["show more"] = "mostrar més";
+App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s esta ara connectat amb %2\$s";
+App::$strings["%1\$s poked %2\$s"] = "%1\$s a esperonat %2\$s";
+App::$strings["View %s's profile @ %s"] = "Vista %s del perfil @ %s";
+App::$strings["Categories:"] = "Categories:";
+App::$strings["Filed under:"] = "Arxivar a:";
+App::$strings["View in context"] = "Veure en context";
+App::$strings["remove"] = "treu";
+App::$strings["Delete Selected Items"] = "Esborra els Articles Seleccionats";
+App::$strings["View Source"] = "Veure l'Origen";
+App::$strings["Follow Thread"] = "Segueix el Fil";
+App::$strings["Unfollow Thread"] = "Fil Abandonat";
+App::$strings["Activity/Posts"] = "Activitat/Entrades";
+App::$strings["Edit Connection"] = "Modifica la Connexió";
+App::$strings["Message"] = "Missatge";
+App::$strings["%s likes this."] = "%s agrada això.";
+App::$strings["%s doesn't like this."] = "%s no agrada això.";
+App::$strings["<span %1\$s>%2\$d people</span> like this."] = array(
+ 0 => "<span %1\$s>%2\$d gent</span> agrada això.",
+ 1 => "<span %1\$s>%2\$d gent</span> agrada això.",
+);
+App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
+ 0 => "<span %1\$s>%2\$d gent</span> no agrada això.",
+ 1 => "<span %1\$s>%2\$d gent</span> no agrada això.",
+);
+App::$strings["and"] = "i";
+App::$strings[", and %d other people"] = array(
+ 0 => ", i %d altra gent",
+ 1 => ", i %d altra gent",
+);
+App::$strings["%s like this."] = "%s agrada això.";
+App::$strings["%s don't like this."] = "%s no agrada això.";
+App::$strings["Set your location"] = "Ajusta la teva ubicació";
+App::$strings["Clear browser location"] = "Treu la localització del navegador";
+App::$strings["Tag term:"] = "Paraula de l'Etiqueta:";
+App::$strings["Where are you right now?"] = "On ets ara?";
+App::$strings["Page link name"] = "Nom de la pàgina enllaçada";
+App::$strings["Post as"] = "Envia com";
+App::$strings["Toggle voting"] = "Commutar votació";
+App::$strings["Categories (optional, comma-separated list)"] = "Categories (opcional, llista separada per comes)";
+App::$strings["Set publish date"] = "Ajusta la data de publicació";
+App::$strings["OK"] = "OK";
+App::$strings["Discover"] = "Descobrir";
+App::$strings["Imported public streams"] = "Importar fluxos públics";
+App::$strings["Commented Order"] = "Ordenar per Comentaris";
+App::$strings["Sort by Comment Date"] = "Ordenar per Data del Comentari";
+App::$strings["Posted Order"] = "Ordenar per Entrades";
+App::$strings["Sort by Post Date"] = "Ordenar per Data d' Entrada";
+App::$strings["Posts that mention or involve you"] = "Entrades que et mencionen o involucren";
+App::$strings["Activity Stream - by date"] = "Activitat del Flux - per data";
+App::$strings["Starred"] = "Preferit";
+App::$strings["Favourite Posts"] = "Entrades Favorites";
+App::$strings["Spam"] = "Spam";
+App::$strings["Posts flagged as SPAM"] = "Entrades marcades com a SPAM";
+App::$strings["Status Messages and Posts"] = "Estat dels Missatges i Entrades";
+App::$strings["About"] = "El Meu Perfil";
+App::$strings["Profile Details"] = "Detalls del Perfil";
+App::$strings["Photo Albums"] = "Albums de Fotos";
+App::$strings["Files and Storage"] = "Arxius i Emmagatzegament";
+App::$strings["Saved Bookmarks"] = "Marcadors Guardats";
+App::$strings["Manage Webpages"] = "Gestió de Pàgines Web";
+App::$strings["__ctx:noun__ Attending"] = array(
+ 0 => "Assistint",
+ 1 => "Assistint",
+);
+App::$strings["__ctx:noun__ Not Attending"] = array(
+ 0 => "Desassistint",
+ 1 => "Desassistint",
+);
+App::$strings["__ctx:noun__ Undecided"] = array(
+ 0 => "Indecís",
+ 1 => "Indecisos",
+);
+App::$strings["__ctx:noun__ Agree"] = array(
+ 0 => "Acord",
+ 1 => "Acords",
+);
+App::$strings["__ctx:noun__ Disagree"] = array(
+ 0 => "Desacord",
+ 1 => "Desacords",
+);
+App::$strings["__ctx:noun__ Abstain"] = array(
+ 0 => "Abstenirse",
+ 1 => "Abstenirse",
+);
+App::$strings["Frequently"] = "Freqüentment";
+App::$strings["Hourly"] = "Horariament";
+App::$strings["Twice daily"] = "Dos vegades al dia";
+App::$strings["Daily"] = "Diariament";
+App::$strings["Weekly"] = "Setmanalment";
+App::$strings["Monthly"] = "Mensualment";
+App::$strings["Currently Male"] = "Actualment Masculí";
+App::$strings["Currently Female"] = "Actualment Femení";
+App::$strings["Mostly Male"] = "Més aviat Masculí";
+App::$strings["Mostly Female"] = "Més Aviat Femení";
+App::$strings["Transgender"] = "Canvi de Sexe";
+App::$strings["Intersex"] = "Intersexual";
+App::$strings["Transsexual"] = "Transsexual";
+App::$strings["Hermaphrodite"] = "Hermafrodita";
+App::$strings["Neuter"] = "Neutre";
+App::$strings["Non-specific"] = "Indefinit";
+App::$strings["Other"] = "Altres";
+App::$strings["Undecided"] = "Indecís";
+App::$strings["Males"] = "Homes";
+App::$strings["Females"] = "Dones";
+App::$strings["Gay"] = "Gay";
+App::$strings["Lesbian"] = "Lesbianes";
+App::$strings["No Preference"] = "Sense Preferències";
+App::$strings["Bisexual"] = "Bisexual";
+App::$strings["Autosexual"] = "Autosexual";
+App::$strings["Abstinent"] = "Abstinent";
+App::$strings["Virgin"] = "Verge";
+App::$strings["Deviant"] = "Desviat";
+App::$strings["Fetish"] = "Fetixiste";
+App::$strings["Oodles"] = "Orgies";
+App::$strings["Nonsexual"] = "Asexual";
+App::$strings["Single"] = "Solter";
+App::$strings["Lonely"] = "Solitari";
+App::$strings["Available"] = "Disponible";
+App::$strings["Unavailable"] = "No Disponible";
+App::$strings["Has crush"] = "Aplastat";
+App::$strings["Infatuated"] = "Encapritxat";
+App::$strings["Dating"] = "Promés";
+App::$strings["Unfaithful"] = "Infidel";
+App::$strings["Sex Addict"] = "Adicte al Sexe";
+App::$strings["Friends/Benefits"] = "Amics amb Beneficis";
+App::$strings["Casual"] = "Casual";
+App::$strings["Engaged"] = "Ocupat";
+App::$strings["Married"] = "Casat";
+App::$strings["Imaginarily married"] = "Casat Imaginàriament";
+App::$strings["Partners"] = "Parella";
+App::$strings["Cohabiting"] = "Cohabitant";
+App::$strings["Common law"] = "Tradició";
+App::$strings["Happy"] = "Feliç";
+App::$strings["Not looking"] = "No Cerco";
+App::$strings["Swinger"] = "Llibertí";
+App::$strings["Betrayed"] = "Traït";
+App::$strings["Separated"] = "Separat";
+App::$strings["Unstable"] = "Inestable";
+App::$strings["Divorced"] = "Divorciat";
+App::$strings["Imaginarily divorced"] = "Divorciat Imaginàriament";
+App::$strings["Widowed"] = "Vidu/ua";
+App::$strings["Uncertain"] = "Incert";
+App::$strings["It's complicated"] = "Es Complicat";
+App::$strings["Don't care"] = "No Et Fa Res";
+App::$strings["Ask me"] = "Pregunta";
+App::$strings["Visible to your default audience"] = "Visible per a la teva audiència ";
+App::$strings["Only me"] = "Només jo";
+App::$strings["Public"] = "Públic";
+App::$strings["Anybody in the \$Projectname network"] = "Ningú a la xarxa \$Projectname";
+App::$strings["Any account on %s"] = "Qualsevol compte a %s";
+App::$strings["Any of my connections"] = "Qualsevol de les meves connexions";
+App::$strings["Only connections I specifically allow"] = "Només les connexions que permeto específicament";
+App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Qualsevol persona autenticada (podria incloure als usuaris d'altres xarxes)";
+App::$strings["Any connections including those who haven't yet been approved"] = "Qualsevol connexió incloent aquells que encara no han estat aprovats";
+App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Aquest és l'ajust per defecte per al públic del seu flux normal i entrades.";
+App::$strings["This is your default setting for who can view your default channel profile"] = "Aquesta és la configuració per defecte per a qui pugui veure el teu perfil per defecte del canal";
+App::$strings["This is your default setting for who can view your connections"] = "Aquesta és la configuració per defecte per a qui pugui veure les teves connexions";
+App::$strings["This is your default setting for who can view your file storage and photos"] = "Aquesta és la configuració per defecte per a qui pugui veure els teus arxius i fotos";
+App::$strings["This is your default setting for the audience of your webpages"] = "Aquests son els ajustos per defecte de l'audiència de les teves pàgines web";
+App::$strings["Not a valid email address"] = "Adreça de correu electrònic no vàlida";
+App::$strings["Your email domain is not among those allowed on this site"] = "El seu domini de correu electrònic no es troba entre els permesos en aquest lloc";
+App::$strings["Your email address is already registered at this site."] = "La teva adreça de correu electrònic ja esta registrada en aquest lloc";
+App::$strings["An invitation is required."] = "Es requereix Invitació";
+App::$strings["Invitation could not be verified."] = "L'invitació no ha pogut ser verificada";
+App::$strings["Please enter the required information."] = "Entra la informació sol·licitada";
+App::$strings["Failed to store account information."] = "Ha fallat guardar la informació del compte";
+App::$strings["Registration confirmation for %s"] = "Registre confirmat per %s";
+App::$strings["Registration request at %s"] = "Sol·licitud de registre a %s";
+App::$strings["Administrator"] = "Administrador";
+App::$strings["your registration password"] = "la teva contrasenya registrada";
+App::$strings["Registration details for %s"] = "Detalls del registre per %s";
+App::$strings["Account approved."] = "Compte aprovat.";
+App::$strings["Registration revoked for %s"] = "Registre revocat per %s";
+App::$strings["Account verified. Please login."] = "Compte verificat. Si us plau, inicia sessió.";
+App::$strings["Click here to upgrade."] = "Feu clic aquí per actualitzar.";
+App::$strings["This action exceeds the limits set by your subscription plan."] = "Aquesta acció és superior als límits establerts pel seu pla de subscripció.";
+App::$strings["This action is not available under your subscription plan."] = "Aquesta acció no està disponible en el seu pla de subscripció.";
+App::$strings["Item was not found."] = "Article no trobat.";
+App::$strings["No source file."] = "No hi ha arxiu d'origen.";
+App::$strings["Cannot locate file to replace"] = "No trobo l'arxiu a reemplaçar";
+App::$strings["Cannot locate file to revise/update"] = "No trobo l'arxiu a revisar/actualitzar";
+App::$strings["File exceeds size limit of %d"] = "L'arxiu excedeix la mida limit de %d";
+App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Has arribat al teu límit de %1$.0f Mbytes de emagatzematge d'adjunts.";
+App::$strings["File upload failed. Possible system limit or action terminated."] = "Pujada del arxiu fallida. Possible límit del sistema o acció interrompuda.";
+App::$strings["Stored file could not be verified. Upload failed."] = "L'arxiu guardat no es pot verificar. Pujada fallida.";
+App::$strings["Path not available."] = "Trajectòria no disponible";
+App::$strings["Empty pathname"] = "Trajèctoria vuida.";
+App::$strings["duplicate filename or path"] = "Nom o trajectòria duplicat";
+App::$strings["Path not found."] = "Trajectòria no trobada.";
+App::$strings["mkdir failed."] = "mkdir va fracassar.";
+App::$strings["database storage failed."] = "Arxiu de base de dades va fallar.";
+App::$strings["Empty path"] = "Trajèctoria vuida";
+App::$strings["Unable to obtain identity information from database"] = "Incapaç de trobar l'informació d'identitat a la base de dades";
+App::$strings["Empty name"] = "Nom buit";
+App::$strings["Name too long"] = "Nom massa llarg";
+App::$strings["No account identifier"] = "Sense identificador de compte";
+App::$strings["Nickname is required."] = "Alies/malnom es requerit.";
+App::$strings["Reserved nickname. Please choose another."] = "Àlies reservat. Tria un altre.";
+App::$strings["Nickname has unsupported characters or is already being used on this site."] = "L'álies te caracters no soportats o ja esta en ús en aquest lloc";
+App::$strings["Unable to retrieve created identity"] = "No es pot recuperar la identitat creada";
+App::$strings["Default Profile"] = "Perfil per Defecte";
+App::$strings["Requested channel is not available."] = "El canal demanat no està disponible.";
+App::$strings["Create New Profile"] = "Crear un Perfil Nou";
+App::$strings["Visible to everybody"] = "Visible per tothom";
+App::$strings["Gender:"] = "Gènere:";
+App::$strings["Status:"] = "Estatus:";
+App::$strings["Homepage:"] = "Pàgina Personal:";
+App::$strings["Online Now"] = "Ara en Linia";
+App::$strings["Like this channel"] = "M'agrada aquest canal";
+App::$strings["j F, Y"] = "j F, Y";
+App::$strings["j F"] = "j F";
+App::$strings["Birthday:"] = "Aniversari:";
+App::$strings["for %1\$d %2\$s"] = "per %1\$d %2\$s";
+App::$strings["Sexual Preference:"] = "Preferència Sexual:";
+App::$strings["Tags:"] = "Etiquetes:";
+App::$strings["Political Views:"] = "Idees Polítiques:";
+App::$strings["Religion:"] = "Religió:";
+App::$strings["Hobbies/Interests:"] = "Aficions/Interessos:";
+App::$strings["Likes:"] = "Agrada:";
+App::$strings["Dislikes:"] = "Desagrada:";
+App::$strings["Contact information and Social Networks:"] = "Informació de contacte i Xarxes Socials:";
+App::$strings["My other channels:"] = "Els meus altres canals:";
+App::$strings["Musical interests:"] = "Interessos Musicals:";
+App::$strings["Books, literature:"] = "Llibres, literatura:";
+App::$strings["Television:"] = "Televisió:";
+App::$strings["Film/dance/culture/entertainment:"] = "Películes/Dança/Cultura/Entreteniment:";
+App::$strings["Love/Romance:"] = "Amor/Romace:";
+App::$strings["Work/employment:"] = "Treball/feina:";
+App::$strings["School/education:"] = "Escola/educació:";
+App::$strings["Like this thing"] = "M'agrada això";
+App::$strings["General Features"] = "Característiques Generals";
+App::$strings["Content Expiration"] = "Expiració del Contingut";
+App::$strings["Remove posts/comments and/or private messages at a future time"] = "eliminarà entrades/comentaris i/o missatges privats en un període determinat de temps.";
+App::$strings["Multiple Profiles"] = "Multiples Perfils";
+App::$strings["Ability to create multiple profiles"] = "Capacitat per crear multiples perfils";
+App::$strings["Advanced Profiles"] = "Perfils Avançats";
+App::$strings["Additional profile sections and selections"] = "Seccions i seleccions addicionals de perfils ";
+App::$strings["Profile Import/Export"] = "Importar/Exportar Perfil";
+App::$strings["Save and load profile details across sites/channels"] = "Guarda i carrega els detalls del perfil al llarg dels llocs/canals";
+App::$strings["Web Pages"] = "Pàgines Web";
+App::$strings["Provide managed web pages on your channel"] = "Proporcionar pàgines web gestionades al seu canal";
+App::$strings["Hide Rating"] = "Amaga la Valoració";
+App::$strings["Hide the rating buttons on your channel and profile pages. Note: People can still rate you somewhere else."] = "Amaga el botó de valoracions al teu canal i pàgines del perfil. Nota: Et poden continuar valorant en altres llocs.";
+App::$strings["Private Notes"] = "Notes Privades";
+App::$strings["Enables a tool to store notes and reminders (note: not encrypted)"] = "Activa l'eina per guardar notes i recordatoris (nota:no està encriptat)";
+App::$strings["Navigation Channel Select"] = "Navegació pel Selector de Canals";
+App::$strings["Change channels directly from within the navigation dropdown menu"] = "Canvieu els canals directament des del menú desplegable de navegació";
+App::$strings["Photo Location"] = "Ubicació de la Foto";
+App::$strings["If location data is available on uploaded photos, link this to a map."] = "Si les dades d'ubicació estàn disponibles a les fotos pujades, vincular a un mapa.";
+App::$strings["Access Controlled Chatrooms"] = "Accés Controlat a les Sales de Xat";
+App::$strings["Provide chatrooms and chat services with access control."] = "Proveeix sales de Xat i serveis de Xat amb control d'accés.";
+App::$strings["Smart Birthdays"] = "Aniversaris Intel·ligents";
+App::$strings["Make birthday events timezone aware in case your friends are scattered across the planet."] = "Fes, conscients de la zona horària, els esdeveniments d'aniversari, en cas que els teus amics estiguin dispersos per tot el planeta.";
+App::$strings["Expert Mode"] = "Manera Experta";
+App::$strings["Enable Expert Mode to provide advanced configuration options"] = "Activar Mode Expert per a proporcionar opcions avançades de configuració";
+App::$strings["Premium Channel"] = "Privilegis del Canal";
+App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Li permet establir restriccions i els termes en els quals es connecten amb el seu canal";
+App::$strings["Post Composition Features"] = "Característiques de Composició d'Entrades";
+App::$strings["Large Photos"] = "Grans Fotos";
+App::$strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Inclou gran (1024px) foto de miniatura a les entrades. Si no està activat, empra petita (640px) foto de miniatura.";
+App::$strings["Automatically import channel content from other channels or feeds"] = "Importa automàticament el contingut del canal des de altres canals o feeds";
+App::$strings["Even More Encryption"] = "Encara Més Encriptació";
+App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Permet l'encripció opcional del contingut extrem-a-extrem amb clau secreta compartida";
+App::$strings["Enable Voting Tools"] = "Habilitar Eines de Votació";
+App::$strings["Provide a class of post which others can vote on"] = "Proporcionar una classe d'entrada que altres puguin votar";
+App::$strings["Delayed Posting"] = "Retarda Publicació";
+App::$strings["Allow posts to be published at a later date"] = "Permet que les publicacions es publiquin en data posterior";
+App::$strings["Suppress Duplicate Posts/Comments"] = "Suprimeix Duplicats de Publicacions/Comentaris";
+App::$strings["Prevent posts with identical content to be published with less than two minutes in between submissions."] = "Evita que publicacions amb identic contingut siguin publicades amb menys de dos minuts entre entregues.";
+App::$strings["Network and Stream Filtering"] = "Filtrat de Xarxa i Flux";
+App::$strings["Search by Date"] = "Cerca per Data";
+App::$strings["Ability to select posts by date ranges"] = "Capacitat per seleccionar entrades per rang de dates";
+App::$strings["Privacy Groups"] = "Grup Privat";
+App::$strings["Enable management and selection of privacy groups"] = "Habilita gestió i selecció de grups privats";
+App::$strings["Save search terms for re-use"] = "Guardar els termin de la cerca per a re-usar";
+App::$strings["Network Personal Tab"] = "Pestanya Personal de Xarxa";
+App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Activa la pestanya per mostrar només les entrades de xarxa en les que has intervingut";
+App::$strings["Network New Tab"] = "Pestanya Nou a la Xarxa";
+App::$strings["Enable tab to display all new Network activity"] = "Activa pestanya per mostrar tota l'activitat nova de la Xarxa";
+App::$strings["Affinity Tool"] = "Eina d'Afinitat";
+App::$strings["Filter stream activity by depth of relationships"] = "Filtre d'activitat del flux per importància de la relació";
+App::$strings["Connection Filtering"] = "Filtre de Connexió";
+App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filtre de missatges d'entrada de conexions, basat en paraules clau/contingut ";
+App::$strings["Show channel suggestions"] = "Mostra suggerencies de canals";
+App::$strings["Post/Comment Tools"] = "Eina d'Entrades/Comentaris";
+App::$strings["Community Tagging"] = "Etiquetat per la Comunitat";
+App::$strings["Ability to tag existing posts"] = "Capacitat d'etiquetar entrades existents";
+App::$strings["Post Categories"] = "Categories d'Entrades";
+App::$strings["Add categories to your posts"] = "Afegeix categoria a la teva entrada";
+App::$strings["Emoji Reactions"] = "";
+App::$strings["Add emoji reaction ability to posts"] = "";
+App::$strings["Ability to file posts under folders"] = "Capacitat de arxivar entrades en les carpetes";
+App::$strings["Dislike Posts"] = "No Agrada l'Entrada";
+App::$strings["Ability to dislike posts/comments"] = "Capacitat per marcar amb \"No Agrada\" les entrades/comentaris";
+App::$strings["Star Posts"] = "Entrades Excel·lents";
+App::$strings["Ability to mark special posts with a star indicator"] = "Capacitat per marcar entrades especials amb l'indicador d'excel·lencia";
+App::$strings["Tag Cloud"] = "Núvol d'Etiquetes.";
+App::$strings["Provide a personal tag cloud on your channel page"] = "Proporcionar un núvol d'etiquetes personals a la teva pàgina de canal";
+App::$strings["Embedded content"] = "Contingut embegut";
+App::$strings["Embedding disabled"] = "Incorporació desactivada";
+App::$strings["Who can see this?"] = "Qui pot veure això?";
+App::$strings["Custom selection"] = "Selecció a mida";
+App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Selecciona \"Mostrar\" per permetre la visualització. \"No Mostrar\" et permet obviar i limitar l'abast de \"Mostrar\".";
+App::$strings["Show"] = "Mostra";
+App::$strings["Don't show"] = "No mostrar";
+App::$strings["Other networks and post services"] = "Altres xarxes i serveis de correu";
+App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Els permisos d'entrada %s no poden esser canviats %s posteriorment a que una entrada ja està compartida. </br />Aquest ajust dels permisos indica qui pot veure l'entrada.";
+App::$strings["Logged out."] = "Sortir.";
+App::$strings["Failed authentication"] = "Autenticació fallida";
+App::$strings["Birthday"] = "Aniversari";
+App::$strings["Age: "] = "Edat:";
+App::$strings["YYYY-MM-DD or MM-DD"] = "YYYY-MM-DD o MM-DD";
+App::$strings["never"] = "mai";
+App::$strings["less than a second ago"] = "fa menys d'un segon";
+App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "Fa %1\$d %2\$s";
+App::$strings["__ctx:relative_date__ year"] = array(
+ 0 => "any",
+ 1 => "anys",
+);
+App::$strings["__ctx:relative_date__ month"] = array(
+ 0 => "mes",
+ 1 => "mesos ",
+);
+App::$strings["__ctx:relative_date__ week"] = array(
+ 0 => "setmana",
+ 1 => "setmanes",
+);
+App::$strings["__ctx:relative_date__ day"] = array(
+ 0 => "dia",
+ 1 => "dies",
+);
+App::$strings["__ctx:relative_date__ hour"] = array(
+ 0 => "hora",
+ 1 => "hores",
+);
+App::$strings["__ctx:relative_date__ minute"] = array(
+ 0 => "minut",
+ 1 => "minuts",
+);
+App::$strings["__ctx:relative_date__ second"] = array(
+ 0 => "segon",
+ 1 => "segons",
+);
+App::$strings["%1\$s's birthday"] = "Aniversari de %1\$s";
+App::$strings["Happy Birthday %1\$s"] = "Feliç Aniversari %1\$s";
+App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un grup esborrat amb aquest nom fou reviscolat. Els permisos dels items existents <strong>poden</strong> aplicar-se a aquest grup i qualsevol membre futur. Si no es això el que vols, si et plau, crea un altre grup amb un nom diferent.";
+App::$strings["Add new connections to this privacy group"] = "Afegir noves connexions a aquest grup privat";
+App::$strings["edit"] = "edita";
+App::$strings["Edit group"] = "Editar grup";
+App::$strings["Add privacy group"] = "Afegir grup privat";
+App::$strings["Channels not in any privacy group"] = "Sense canals en grups privats";
+App::$strings["Delete this item?"] = "Esborrar aquest item?";
+App::$strings["[-] show less"] = "[-] mostra menys";
+App::$strings["[+] expand"] = "[+] expandeix";
+App::$strings["[-] collapse"] = "[-] colapsa";
+App::$strings["Password too short"] = "Contrasenya massa curta";
+App::$strings["Passwords do not match"] = "Les paraules de pas no coincideixen";
+App::$strings["everybody"] = "tothom";
+App::$strings["Secret Passphrase"] = "Contrasenya Secreta";
+App::$strings["Passphrase hint"] = "Pista per la Contrasenya";
+App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Avis: Els permisos han canviat però encara no han estat enviats.";
+App::$strings["close all"] = "tanca tot";
+App::$strings["Nothing new here"] = "Res de nou per aquí";
+App::$strings["Rate This Channel (this is public)"] = "Valora Aquest Canal (això es farà públic)";
+App::$strings["Describe (optional)"] = "Descriu (opcional)";
+App::$strings["Please enter a link URL"] = "Si us plau, entra l'enllaç URL";
+App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Hi ha canvis sense desar, estàs segur que vols abandonar la pàgina?";
+App::$strings["timeago.prefixAgo"] = "timeago.prefixAgo";
+App::$strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
+App::$strings["ago"] = "abans";
+App::$strings["from now"] = "des d'ara";
+App::$strings["less than a minute"] = "menys d'un minut";
+App::$strings["about a minute"] = "prop d'un minut";
+App::$strings["%d minutes"] = "%d minuts";
+App::$strings["about an hour"] = "prop d'una hora";
+App::$strings["about %d hours"] = "al voltant de %d hores";
+App::$strings["a day"] = "un dia";
+App::$strings["%d days"] = "%d dies";
+App::$strings["about a month"] = "prop d'un mes";
+App::$strings["%d months"] = "%d mesos";
+App::$strings["about a year"] = "prop d'un any";
+App::$strings["%d years"] = "%d anys";
+App::$strings[" "] = " ";
+App::$strings["timeago.numbers"] = "timeago.numbers";
+App::$strings["__ctx:long__ May"] = "Maig";
+App::$strings["Jan"] = "Gen";
+App::$strings["Feb"] = "Feb";
+App::$strings["Mar"] = "Mar";
+App::$strings["Apr"] = "Apr";
+App::$strings["__ctx:short__ May"] = "Maig";
+App::$strings["Jun"] = "Jun";
+App::$strings["Jul"] = "Jul";
+App::$strings["Aug"] = "Ago";
+App::$strings["Sep"] = "Set";
+App::$strings["Oct"] = "Oct";
+App::$strings["Nov"] = "Nov";
+App::$strings["Dec"] = "Des";
+App::$strings["Sun"] = "Dg.";
+App::$strings["Mon"] = "Dl.";
+App::$strings["Tue"] = "Dm.";
+App::$strings["Wed"] = "Dc.";
+App::$strings["Thu"] = "Dj.";
+App::$strings["Fri"] = "Dv.";
+App::$strings["Sat"] = "Ds.";
+App::$strings["__ctx:calendar__ today"] = "avui";
+App::$strings["__ctx:calendar__ month"] = "mes";
+App::$strings["__ctx:calendar__ week"] = "setmana";
+App::$strings["__ctx:calendar__ day"] = "dia";
+App::$strings["__ctx:calendar__ All day"] = "Tot el dia";
+App::$strings["view full size"] = "Veure a mida competa";
+App::$strings["No Subject"] = "Sense Assumpte";
+App::$strings["Friendica"] = "Friendica";
+App::$strings["OStatus"] = "OStatus";
+App::$strings["GNU-Social"] = "GNU-Social";
+App::$strings["RSS/Atom"] = "RSS/Atom";
+App::$strings["Diaspora"] = "Diaspora";
+App::$strings["Facebook"] = "Facebook";
+App::$strings["Zot"] = "Zot";
+App::$strings["LinkedIn"] = "LinkedIn";
+App::$strings["XMPP/IM"] = "XMPP/IM";
+App::$strings["MySpace"] = "MySpace";
+App::$strings["Image exceeds website size limit of %lu bytes"] = "La imatge excedeix la mida limit pel lloc web en %lu bytes";
+App::$strings["Image file is empty."] = "El fitxer d'imatge esta buit.";
+App::$strings["Photo storage failed."] = "Fracassà l'emmagatzematge de la Foto";
+App::$strings["a new photo"] = "Una foto nova";
+App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s enviat %2\$s a %3\$s";
+App::$strings["Upload New Photos"] = "Puja Noves Fotos";
+App::$strings["Invalid data packet"] = "paquet de dades invàlid";
+App::$strings["Unable to verify channel signature"] = "No es pot verificar la signatura del canal";
+App::$strings["Unable to verify site signature for %s"] = "No es pot verificar la signatura del lloc per %s";
+App::$strings["invalid target signature"] = "Signatura objectiu invàlida";
+App::$strings["New Page"] = "Pàgina Nova";
+App::$strings["Title"] = "Títol";
+App::$strings["Can view my normal stream and posts"] = "Pot veure el flux i entrades normals";
+App::$strings["Can view my default channel profile"] = "Pot veure el meu perfil del canal per defecte";
+App::$strings["Can view my connections"] = "Pot veure les meves connexions";
+App::$strings["Can view my file storage and photos"] = "Pot veure al meu magatzem d'arxius i fotos";
+App::$strings["Can view my webpages"] = "Pot veure les meves pàgines web";
+App::$strings["Can send me their channel stream and posts"] = "Pot enviar-me el flux i entrades del seu canal";
+App::$strings["Can post on my channel page (\"wall\")"] = "Pot fer entrades a la meva pàgina de canal (\"mur\")";
+App::$strings["Can comment on or like my posts"] = "Pot fer comentaris o dir si agrada en les meves entrades";
+App::$strings["Can send me private mail messages"] = "Pot enviar-me un missatge de correu privat";
+App::$strings["Can like/dislike stuff"] = "Pot dir si agrada/desagrada ";
+App::$strings["Profiles and things other than posts/comments"] = "Perfils i altres coses a més d'entrades/comentaris";
+App::$strings["Can forward to all my channel contacts via post @mentions"] = "Ho pot enviar a tots els meus contactes del canal via entrades @mencions";
+App::$strings["Advanced - useful for creating group forum channels"] = "Avançat - capaç de crear canals de grups de foro";
+App::$strings["Can chat with me (when available)"] = "Pot xatejar amb mi (si estic disponible)";
+App::$strings["Can write to my file storage and photos"] = "Pot escriure al meu magatzem d'arxius i fotos";
+App::$strings["Can edit my webpages"] = "Pot editar les meves pàgines web";
+App::$strings["Can source my public posts in derived channels"] = "Pot mostrar l'origen de les meves entrades públiques en altres canals";
+App::$strings["Somewhat advanced - very useful in open communities"] = "Quelcom avançat - molt útil en comunitats obertes";
+App::$strings["Can administer my channel resources"] = "Pot administrar els meus recursos del canal";
+App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Extremadament avançat. No toquis res si no saps que estàs fent";
+App::$strings["Social Networking"] = "Xarxes Socials";
+App::$strings["Social - Mostly Public"] = "Social - Principalment Públic";
+App::$strings["Social - Restricted"] = "Social - Restingit";
+App::$strings["Social - Private"] = "Social - Privat";
+App::$strings["Community Forum"] = "Foro de Comunitat";
+App::$strings["Forum - Mostly Public"] = "Fòrum - Principalment Públic";
+App::$strings["Forum - Restricted"] = "Fòrum - Restringit";
+App::$strings["Forum - Private"] = "Fòrum - Privat";
+App::$strings["Feed Republish"] = "Republicador";
+App::$strings["Feed - Mostly Public"] = "Realimentador - Públic Principalment";
+App::$strings["Feed - Restricted"] = "Retroalimentador - Restringit";
+App::$strings["Special Purpose"] = "Objectiu Especial";
+App::$strings["Special - Celebrity/Soapbox"] = "Espacial - Celebritat/Plataforma";
+App::$strings["Special - Group Repository"] = "Especial - Repositori d'un Grup";
+App::$strings["Custom/Expert Mode"] = "Personalitzat/Manera Experta";
+App::$strings[" and "] = "i";
+App::$strings["public profile"] = "Perfil públic";
+App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s canviat %2\$s a &ldquo;%3\$s&rdquo;";
+App::$strings["Visit %1\$s's %2\$s"] = "Visita %1\$s en %2\$s";
+App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s Ha actualitzat %2\$s, canviant %3\$s.";
+App::$strings["Attachments:"] = "Adjuntat:";
+App::$strings["\$Projectname event notification:"] = "Notificació d'esdeveniment de \$Projectname";
+App::$strings["Focus (Hubzilla default)"] = "Focus (Hubzilla per defecte)";
App::$strings["Theme settings"] = "Ajustos de tema";
-App::$strings["Set scheme"] = "Ajustos d'esquema";
-App::$strings["Set font-size for posts and comments"] = "Ajusta la mida del tipus de lletra per a entrades i comentaris";
-App::$strings["Set font face"] = "Ajusta el tipus de lletra";
-App::$strings["Set iconset"] = "Ajusta el conjunt d'icones";
-App::$strings["Set big shadow size, default 15px 15px 15px"] = "Ajusta la mida gran de l'ombra, predeterminat a 15px 15px 15px";
-App::$strings["Set small shadow size, default 5px 5px 5px"] = "Ajusta la mida petita de l'ombra, predeterminat a 5px 5px 5px";
-App::$strings["Set shadow color, default #000"] = "Ajusta el color de l'ombra, predeterminat a #000";
-App::$strings["Set radius size, default 5px"] = "Ajusta la mida del radi, predeterminat a 5px";
-App::$strings["Set line-height for posts and comments"] = "Ajusta el gruix de línia per entrades i comentaris";
-App::$strings["Set background image"] = "Ajusta l'imatge de fons";
-App::$strings["Set background attachment"] = "Ajusta els adjunts en segon pla";
-App::$strings["Set background color"] = "Ajusta el color en segon pla";
-App::$strings["Set section background image"] = "Ajusta la secció d'imatge en segon pla";
-App::$strings["Set section background color"] = "Ajusta el color de la secció en segon pla";
-App::$strings["Set color of items - use hex"] = "Ajuste el color dels articles - empra codi hexadecimal";
-App::$strings["Set color of links - use hex"] = "ajusta el color dels enlaços - empra codi hexadecimal";
-App::$strings["Set max-width for items. Default 400px"] = "Ajusta l'amplada màxima dels articles. Predeterminat a 400px";
-App::$strings["Set min-width for items. Default 240px"] = "Ajusta l'amplada minima dels articles. Predeterminat a 240px";
-App::$strings["Set the generic content wrapper width. Default 48%"] = "Ajusta l'amplada de l'embolcall del contingut genèric. Predeterminat a 48%";
-App::$strings["Set color of fonts - use hex"] = "Ajusta el color del tipus de lletra - empra codi hexadecimal";
-App::$strings["Set background-size element"] = "Ajusta la mida de l'element en segon pla";
-App::$strings["Item opacity"] = "Opacitat de l'article";
-App::$strings["Display post previews only"] = "Mostra tan sols les previsualitzacions de les entrades";
-App::$strings["Display side bar on channel page"] = "Mostra la barra lateral a la pàgina del canal";
-App::$strings["Colour of the navigation bar"] = "Color de la barra de navegació";
-App::$strings["Item float"] = "Article flotant";
-App::$strings["Left offset of the section element"] = "Desplaçament esquerra de l'element de secció";
-App::$strings["Right offset of the section element"] = "Desplaçament dret de l'element de secció";
-App::$strings["Section width"] = "Amplada de la secció";
-App::$strings["Left offset of the aside"] = "Desplaçament esquerra del costat";
-App::$strings["Right offset of the aside element"] = "Desplaçament dret de l'element del costat";
-App::$strings["Light (Red Matrix default)"] = "Clar (predeterminat)";
App::$strings["Select scheme"] = "Tria esquema";
App::$strings["Narrow navbar"] = "Barra de navegació estreta";
App::$strings["Navigation bar background color"] = "Color de fons de la barra de navegació";
@@ -2126,23 +2279,26 @@ App::$strings["Set the basic color for item icons"] = "ajusta el color basic per
App::$strings["Set the hover color for item icons"] = "Ajusta el color de la libració de les icones dels articles";
App::$strings["Set font-size for the entire application"] = "Ajusta la mida del tipus de lletra per tota l'aplicació";
App::$strings["Example: 14px"] = "Exemple: 14px";
+App::$strings["Set font-size for posts and comments"] = "Ajusta la mida del tipus de lletra per a entrades i comentaris";
App::$strings["Set font-color for posts and comments"] = "Ajusta el color del tipus de lletra per entrades i comentaris";
App::$strings["Set radius of corners"] = "Ajusta el radi de les cantonades";
App::$strings["Set shadow depth of photos"] = "Ajusta la profunditat d'ombres de les fotos";
App::$strings["Set maximum width of content region in pixel"] = "Ajusta l'amplada màxima de la zona de contingut en pixels";
App::$strings["Leave empty for default width"] = "Deixa en blanc per l'amplada predeterminada";
-App::$strings["Center page content"] = "Contingut del centre de la pàgina";
+App::$strings["Left align page content"] = "Alineació esquerra del contingut de la pàgina";
App::$strings["Set minimum opacity of nav bar - to hide it"] = "Ajusta la opacitat mínima de la harra de navegació - per amagar-la";
App::$strings["Set size of conversation author photo"] = "Ajusta la mida de la foto del autor a la conversa";
App::$strings["Set size of followup author photos"] = "Ajusta la mida del seguidor de les fotos de l'autor";
+App::$strings["__ctx:opensearch__ Search %1\$s (%2\$s)"] = "Cerca %1\$s(%2\$s)";
+App::$strings["__ctx:opensearch__ \$Projectname"] = "\$Projectname";
App::$strings["Update %s failed. See error logs."] = "L'actualització %s ha fallat. Mira el registre d'errors.";
App::$strings["Update Error at %s"] = "Error d'Actualització a %s";
-App::$strings["Create an account to access services and applications within the Red Matrix"] = "Crea un compte per accedir als serveis i aplicacions dins de RedMatrix";
+App::$strings["Create an account to access services and applications within the Hubzilla"] = "Crea un compte per accedir als serveis i aplicacions dins de Hubzilla";
App::$strings["Password"] = "Contrasenya";
App::$strings["Remember me"] = "Recorda'm";
App::$strings["Forgot your password?"] = "Has perdut la Contrasenya?";
App::$strings["toggle mobile"] = "canvia a format per a mòbils";
App::$strings["Website SSL certificate is not valid. Please correct."] = "El certificat SSL és invalid, soluciona-ho, si us plau.";
-App::$strings["[red] Website SSL error for %s"] = "[red] Error de SSL per la web %s";
-App::$strings["Cron/Scheduled tasks not running."] = "No s'estan executan les tasques programades al cron.";
-App::$strings["[red] Cron tasks not running on %s"] = "[red] No s'estan executan les tasques programades del cron a %s";
+App::$strings["[hubzilla] Website SSL error for %s"] = "[hubzilla] Error de SSL per la web %s";
+App::$strings["Cron/Scheduled tasks not running."] = "No s'estan executant les tasques programades al cron.";
+App::$strings["[hubzilla] Cron tasks not running on %s"] = "[hubzilla] Les tasques de Cron no rulen a %s";
diff --git a/view/ca/messages.po b/view/ca/messages.po
index 7684159cf..7273015bc 100644
--- a/view/ca/messages.po
+++ b/view/ca/messages.po
@@ -4,16 +4,17 @@
#
# Translators:
# Espart <ranker72@gmail.com>, 2015
-# Rafael, 2013-2015
-# Rafael, 2015
-# Rafael, 2015
+# Rafael Garau, 2016
+# Rafael Garau, 2013-2015
+# Rafael Garau, 2015
+# Rafael Garau, 2015
msgid ""
msgstr ""
"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-08-07 00:03-0700\n"
-"PO-Revision-Date: 2015-08-11 22:02+0000\n"
-"Last-Translator: Rafael\n"
+"POT-Creation-Date: 2016-05-20 00:01-0700\n"
+"PO-Revision-Date: 2016-02-19 11:17+0000\n"
+"Last-Translator: Rafael Garau\n"
"Language-Team: Catalan (Spain) (http://www.transifex.com/Friendica/red-matrix/language/ca_ES/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -21,1350 +22,815 @@ msgstr ""
"Language: ca_ES\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../../include/dba/dba_driver.php:141
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "No s'ha trobat informació de DNS pel servidor de base de dades '%s'"
-
-#: ../../include/photo/photo_driver.php:687 ../../mod/profile_photo.php:143
-#: ../../mod/profile_photo.php:302 ../../mod/profile_photo.php:424
-#: ../../mod/photos.php:92 ../../mod/photos.php:637
-msgid "Profile Photos"
-msgstr "Fotos del Perfil"
-
-#: ../../include/menu.php:107 ../../include/page_widgets.php:8
-#: ../../include/page_widgets.php:36 ../../include/RedDAV/RedBrowser.php:266
-#: ../../include/ItemObject.php:100 ../../include/apps.php:254
-#: ../../mod/webpages.php:181 ../../mod/thing.php:227
-#: ../../mod/connections.php:382 ../../mod/connections.php:395
-#: ../../mod/connections.php:414 ../../mod/blocks.php:153
-#: ../../mod/editpost.php:106 ../../mod/editlayout.php:133
-#: ../../mod/editwebpage.php:178 ../../mod/editblock.php:134
-#: ../../mod/menu.php:103 ../../mod/settings.php:650 ../../mod/layouts.php:183
-msgid "Edit"
-msgstr "Edita"
-
-#: ../../include/contact_selectors.php:56
-msgid "Frequently"
-msgstr "Freqüentment"
-
-#: ../../include/contact_selectors.php:57
-msgid "Hourly"
-msgstr "Horariament"
-
-#: ../../include/contact_selectors.php:58
-msgid "Twice daily"
-msgstr "Dos vegades al dia"
-
-#: ../../include/contact_selectors.php:59
-msgid "Daily"
-msgstr "Diariament"
-
-#: ../../include/contact_selectors.php:60
-msgid "Weekly"
-msgstr "Setmanalment"
-
-#: ../../include/contact_selectors.php:61
-msgid "Monthly"
-msgstr "Mensualment"
-
-#: ../../include/contact_selectors.php:76
-msgid "Friendica"
-msgstr "Friendica"
-
-#: ../../include/contact_selectors.php:77
-msgid "OStatus"
-msgstr "OStatus"
-
-#: ../../include/contact_selectors.php:78
-msgid "RSS/Atom"
-msgstr "RSS/Atom"
-
-#: ../../include/contact_selectors.php:79 ../../mod/admin.php:822
-#: ../../mod/admin.php:831 ../../mod/id.php:15 ../../mod/id.php:16
-#: ../../boot.php:1553
-msgid "Email"
-msgstr "Correu electrónic"
-
-#: ../../include/contact_selectors.php:80
-msgid "Diaspora"
-msgstr "Diaspora"
-
-#: ../../include/contact_selectors.php:81
-msgid "Facebook"
-msgstr "Facebook"
-
-#: ../../include/contact_selectors.php:82
-msgid "Zot!"
-msgstr "Zot!"
-
-#: ../../include/contact_selectors.php:83
-msgid "LinkedIn"
-msgstr "LinkedIn"
-
-#: ../../include/contact_selectors.php:84
-msgid "XMPP/IM"
-msgstr "XMPP/IM"
-
-#: ../../include/contact_selectors.php:85
-msgid "MySpace"
-msgstr "MySpace"
-
-#: ../../include/notify.php:23
-msgid "created a new post"
-msgstr "Creada una nova entrada"
-
-#: ../../include/notify.php:24
-#, php-format
-msgid "commented on %s's post"
-msgstr "comentat a l'entrada de %s"
-
#: ../../include/Import/import_diaspora.php:17
msgid "No username found in import file."
-msgstr "No s'ha trobat nom d'usuari a l'arxiu d'importació."
+msgstr "No s'ha trobat cap nom d'usuari a l'arxiu d'importació."
#: ../../include/Import/import_diaspora.php:42 ../../mod/import.php:156
msgid "Unable to create a unique channel address. Import failed."
msgstr "No s'ha pogut importar el canal perquè l'adreça única de canal no s'ha pogut crear."
-#: ../../include/Import/import_diaspora.php:140 ../../mod/import.php:504
+#: ../../include/Import/import_diaspora.php:140 ../../mod/import.php:562
msgid "Import completed."
msgstr "S'ha completat la importació."
-#: ../../include/group.php:26
-msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "Un grup esborrat amb aquest nom fou reviscolat. Els permisos dels items existents <strong>poden</strong> aplicar-se a aquest grup i qualsevol membre futur. Si no es això el que vols, si et plau, crea un altre grup amb un nom diferent."
+#: ../../include/RedDAV/RedBrowser.php:107
+#: ../../include/RedDAV/RedBrowser.php:265
+msgid "parent"
+msgstr "amunt"
-#: ../../include/group.php:235
-msgid "Default privacy group for new contacts"
-msgstr "Privacitat de grup predeterminada per a contactes nous"
+#: ../../include/RedDAV/RedBrowser.php:131 ../../include/text.php:2561
+msgid "Collection"
+msgstr "Col·lecció"
-#: ../../include/group.php:254 ../../mod/admin.php:831
-msgid "All Channels"
-msgstr "Tots els Canals"
+#: ../../include/RedDAV/RedBrowser.php:134
+msgid "Principal"
+msgstr "Principal"
-#: ../../include/group.php:276
-msgid "edit"
-msgstr "edita"
+#: ../../include/RedDAV/RedBrowser.php:137
+msgid "Addressbook"
+msgstr "Llista d'adreces"
-#: ../../include/group.php:298
-msgid "Collections"
-msgstr "Col·leccions"
+#: ../../include/RedDAV/RedBrowser.php:140
+msgid "Calendar"
+msgstr "Calendari"
-#: ../../include/group.php:299
-msgid "Edit collection"
-msgstr "Edita col·leccions"
+#: ../../include/RedDAV/RedBrowser.php:143
+msgid "Schedule Inbox"
+msgstr "Programa la bústia d'entrada"
-#: ../../include/group.php:300
-msgid "Add new collection"
-msgstr "Afegeix una nova col·lecció"
+#: ../../include/RedDAV/RedBrowser.php:146
+msgid "Schedule Outbox"
+msgstr "Programa la bústia de sortida"
-#: ../../include/group.php:301
-msgid "Channels not in any collection"
-msgstr "Canals a cap col·lecció"
+#: ../../include/RedDAV/RedBrowser.php:164 ../../include/apps.php:336
+#: ../../include/apps.php:387 ../../include/conversation.php:1030
+#: ../../mod/photos.php:693 ../../mod/photos.php:1131
+msgid "Unknown"
+msgstr "Desconegut"
-#: ../../include/group.php:303 ../../include/widgets.php:275
-msgid "add"
-msgstr "afegeix"
+#: ../../include/RedDAV/RedBrowser.php:227
+#, php-format
+msgid "%1$s used"
+msgstr "Hi ha %1$s en ús"
-#: ../../include/account.php:27
-msgid "Not a valid email address"
-msgstr "Adreça de correu electrònic no vàlida"
+#: ../../include/RedDAV/RedBrowser.php:232
+#, php-format
+msgid "%1$s used of %2$s (%3$s&#37;)"
+msgstr "Hi ha en ús %1$s de %2$s (%3$s&#37;)"
-#: ../../include/account.php:29
-msgid "Your email domain is not among those allowed on this site"
-msgstr "El seu domini de correu electrònic no es troba entre els permesos en aquest lloc"
+#: ../../include/RedDAV/RedBrowser.php:251 ../../include/nav.php:98
+#: ../../include/apps.php:135 ../../include/conversation.php:1620
+#: ../../mod/fbrowser.php:114
+msgid "Files"
+msgstr "Arxius"
-#: ../../include/account.php:35
-msgid "Your email address is already registered at this site."
-msgstr "La teva adreça de correu electrònic ja esta registrada en aquest lloc"
+#: ../../include/RedDAV/RedBrowser.php:253
+msgid "Total"
+msgstr "Total"
-#: ../../include/account.php:67
-msgid "An invitation is required."
-msgstr "Es requereix Invitació"
+#: ../../include/RedDAV/RedBrowser.php:255
+msgid "Shared"
+msgstr "Compartit"
-#: ../../include/account.php:71
-msgid "Invitation could not be verified."
-msgstr "L'invitació no ha pogut ser verificada"
+#: ../../include/RedDAV/RedBrowser.php:256
+#: ../../include/RedDAV/RedBrowser.php:303 ../../mod/blocks.php:152
+#: ../../mod/layouts.php:175 ../../mod/menu.php:112
+#: ../../mod/new_channel.php:121 ../../mod/webpages.php:180
+msgid "Create"
+msgstr "Crea"
-#: ../../include/account.php:121
-msgid "Please enter the required information."
-msgstr "Entra la informació sol·licitada"
+#: ../../include/RedDAV/RedBrowser.php:257
+#: ../../include/RedDAV/RedBrowser.php:305 ../../mod/photos.php:718
+#: ../../mod/photos.php:1248 ../../mod/profile_photo.php:362
+msgid "Upload"
+msgstr "Puja"
-#: ../../include/account.php:188
-msgid "Failed to store account information."
-msgstr "Ha fallat guardar la informació del compte"
+#: ../../include/RedDAV/RedBrowser.php:261 ../../mod/admin.php:994
+#: ../../mod/settings.php:590 ../../mod/settings.php:616
+#: ../../mod/sharedwithme.php:95
+msgid "Name"
+msgstr "Nom"
-#: ../../include/account.php:246
-#, php-format
-msgid "Registration confirmation for %s"
-msgstr "Registre confirmat per %s"
+#: ../../include/RedDAV/RedBrowser.php:262
+msgid "Type"
+msgstr "Tipus"
-#: ../../include/account.php:312
-#, php-format
-msgid "Registration request at %s"
-msgstr "Sol·licitud de registre a %s"
+#: ../../include/RedDAV/RedBrowser.php:263 ../../mod/sharedwithme.php:97
+msgid "Size"
+msgstr "Mida"
-#: ../../include/account.php:314 ../../include/account.php:341
-#: ../../include/account.php:401 ../../include/network.php:1632
-msgid "Administrator"
-msgstr "Administrador"
+#: ../../include/RedDAV/RedBrowser.php:264 ../../mod/sharedwithme.php:98
+msgid "Last Modified"
+msgstr "Darrera modificació"
+
+#: ../../include/RedDAV/RedBrowser.php:266 ../../include/ItemObject.php:100
+#: ../../include/apps.php:254 ../../include/menu.php:108
+#: ../../include/page_widgets.php:8 ../../include/page_widgets.php:36
+#: ../../mod/blocks.php:153 ../../mod/connections.php:242
+#: ../../mod/connections.php:255 ../../mod/connections.php:274
+#: ../../mod/editblock.php:134 ../../mod/editlayout.php:133
+#: ../../mod/editpost.php:106 ../../mod/editwebpage.php:178
+#: ../../mod/settings.php:650 ../../mod/layouts.php:183 ../../mod/menu.php:106
+#: ../../mod/thing.php:255 ../../mod/webpages.php:181
+msgid "Edit"
+msgstr "Edita"
-#: ../../include/account.php:336
-msgid "your registration password"
-msgstr "la teva contrasenya registrada"
+#: ../../include/RedDAV/RedBrowser.php:267 ../../include/ItemObject.php:120
+#: ../../include/apps.php:255 ../../include/conversation.php:671
+#: ../../mod/admin.php:826 ../../mod/admin.php:988 ../../mod/photos.php:1062
+#: ../../mod/blocks.php:155 ../../mod/connedit.php:563
+#: ../../mod/editblock.php:180 ../../mod/editlayout.php:178
+#: ../../mod/editwebpage.php:225 ../../mod/group.php:176
+#: ../../mod/settings.php:651 ../../mod/thing.php:256
+#: ../../mod/webpages.php:183
+msgid "Delete"
+msgstr "Esborra"
-#: ../../include/account.php:339 ../../include/account.php:399
-#, php-format
-msgid "Registration details for %s"
-msgstr "Detalls del registre per %s"
+#: ../../include/RedDAV/RedBrowser.php:302
+msgid "Create new folder"
+msgstr "Crea una carpeta nova"
-#: ../../include/account.php:408
-msgid "Account approved."
-msgstr "Compte aprovat."
+#: ../../include/RedDAV/RedBrowser.php:304
+msgid "Upload file"
+msgstr "Puja arxiu"
-#: ../../include/account.php:447
+#: ../../include/dba/dba_driver.php:141
#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registre revocat per %s"
-
-#: ../../include/account.php:492
-msgid "Account verified. Please login."
-msgstr "Compte verificat. Si us plau, inicia sessió."
-
-#: ../../include/account.php:705 ../../include/account.php:707
-msgid "Click here to upgrade."
-msgstr "Feu clic aquí per actualitzar."
-
-#: ../../include/account.php:713
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Aquesta acció és superior als límits establerts pel seu pla de subscripció."
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr "No s'ha trobat informació de DNS pel servidor de base de dades '%s'"
-#: ../../include/account.php:718
-msgid "This action is not available under your subscription plan."
-msgstr "Aquesta acció no està disponible en el seu pla de subscripció."
+#: ../../include/photo/photo_driver.php:703 ../../mod/photos.php:92
+#: ../../mod/photos.php:637 ../../mod/profile_photo.php:143
+#: ../../mod/profile_photo.php:302 ../../mod/profile_photo.php:424
+msgid "Profile Photos"
+msgstr "Fotos del Perfil"
-#: ../../include/datetime.php:48
-msgid "Miscellaneous"
-msgstr "Miscelania"
+#: ../../include/nav.php:87 ../../include/nav.php:120 ../../boot.php:1550
+msgid "Logout"
+msgstr "Desconectar"
-#: ../../include/datetime.php:132
-msgid "YYYY-MM-DD or MM-DD"
-msgstr "YYYY-MM-DD o MM-DD"
+#: ../../include/nav.php:87 ../../include/nav.php:120
+msgid "End this session"
+msgstr "Finalitza aquesta sessió"
-#: ../../include/datetime.php:235 ../../mod/events.php:649
-#: ../../mod/appman.php:91 ../../mod/appman.php:92
-msgid "Required"
-msgstr "Requerit"
+#: ../../include/nav.php:90 ../../include/nav.php:151
+msgid "Home"
+msgstr "Personal"
-#: ../../include/datetime.php:262 ../../boot.php:2354
-msgid "never"
-msgstr "mai"
+#: ../../include/nav.php:90
+msgid "Your posts and conversations"
+msgstr "Les teves entrades i converses"
-#: ../../include/datetime.php:268
-msgid "less than a second ago"
-msgstr "fa menys d'un segon"
+#: ../../include/nav.php:91 ../../include/conversation.php:953
+#: ../../mod/connedit.php:510
+msgid "View Profile"
+msgstr "Veure Perfil"
-#: ../../include/datetime.php:271
-msgid "year"
-msgstr "any"
+#: ../../include/nav.php:91
+msgid "Your profile page"
+msgstr "La teva pàgina de perfil"
-#: ../../include/datetime.php:271
-msgid "years"
-msgstr "anys"
+#: ../../include/nav.php:93
+msgid "Edit Profiles"
+msgstr "Editar Perfils"
-#: ../../include/datetime.php:272
-msgid "month"
-msgstr "mes"
+#: ../../include/nav.php:93
+msgid "Manage/Edit profiles"
+msgstr "Gestiona/Edita perfils"
-#: ../../include/datetime.php:272
-msgid "months"
-msgstr "mesos"
+#: ../../include/nav.php:95 ../../include/identity.php:979
+msgid "Edit Profile"
+msgstr "Edita Perfil"
-#: ../../include/datetime.php:273
-msgid "week"
-msgstr "setmana"
+#: ../../include/nav.php:95
+msgid "Edit your profile"
+msgstr "Edita el teu perfil"
-#: ../../include/datetime.php:273
-msgid "weeks"
-msgstr "setmanes"
+#: ../../include/nav.php:97 ../../include/apps.php:139
+#: ../../include/conversation.php:1611 ../../mod/fbrowser.php:25
+msgid "Photos"
+msgstr "Fotos"
-#: ../../include/datetime.php:274
-msgid "day"
-msgstr "dia"
+#: ../../include/nav.php:97
+msgid "Your photos"
+msgstr "Les Teves Fotos"
-#: ../../include/datetime.php:274
-msgid "days"
-msgstr "dies"
+#: ../../include/nav.php:98
+msgid "Your files"
+msgstr "Els teus arxius"
-#: ../../include/datetime.php:275
-msgid "hour"
-msgstr "hora"
+#: ../../include/nav.php:103 ../../include/apps.php:146
+msgid "Chat"
+msgstr "Xerrar"
-#: ../../include/datetime.php:275
-msgid "hours"
-msgstr "hores"
+#: ../../include/nav.php:103
+msgid "Your chatrooms"
+msgstr "Les teves sales de xerrar"
-#: ../../include/datetime.php:276
-msgid "minute"
-msgstr "minut"
+#: ../../include/nav.php:109 ../../include/apps.php:129
+#: ../../include/conversation.php:1646
+msgid "Bookmarks"
+msgstr "Marcadors"
-#: ../../include/datetime.php:276
-msgid "minutes"
-msgstr "minuts"
+#: ../../include/nav.php:109
+msgid "Your bookmarks"
+msgstr "Els teus marcadors"
-#: ../../include/datetime.php:277
-msgid "second"
-msgstr "segon"
+#: ../../include/nav.php:113 ../../include/apps.php:136
+#: ../../include/conversation.php:1656 ../../mod/webpages.php:178
+msgid "Webpages"
+msgstr "Pàgines web"
-#: ../../include/datetime.php:277
-msgid "seconds"
-msgstr "segons"
+#: ../../include/nav.php:113
+msgid "Your webpages"
+msgstr "Les teves pàgines web"
-#: ../../include/datetime.php:285
-#, php-format
-msgctxt "e.g. 22 hours ago, 1 minute ago"
-msgid "%1$d %2$s ago"
-msgstr "Fa %1$d i %2$s"
+#: ../../include/nav.php:117 ../../include/apps.php:131 ../../boot.php:1551
+msgid "Login"
+msgstr "Identifica't"
-#: ../../include/datetime.php:519
-#, php-format
-msgid "%1$s's birthday"
-msgstr "Aniversari de %1$s"
+#: ../../include/nav.php:117
+msgid "Sign in"
+msgstr "Signatura"
-#: ../../include/datetime.php:520
+#: ../../include/nav.php:134
#, php-format
-msgid "Happy Birthday %1$s"
-msgstr "Feliç Aniversari %1$s"
-
-#: ../../include/dir_fns.php:126
-msgid "Directory Options"
-msgstr "Opcions de Directori"
-
-#: ../../include/dir_fns.php:128
-msgid "Safe Mode"
-msgstr "Mode Segur"
+msgid "%s - click to logout"
+msgstr "%s - click per desconectar"
-#: ../../include/dir_fns.php:128 ../../include/dir_fns.php:129
-#: ../../include/dir_fns.php:130 ../../mod/api.php:106
-#: ../../mod/photos.php:568 ../../mod/mitem.php:157 ../../mod/mitem.php:158
-#: ../../mod/mitem.php:229 ../../mod/mitem.php:230 ../../mod/menu.php:91
-#: ../../mod/menu.php:147 ../../mod/filestorage.php:151
-#: ../../mod/filestorage.php:159 ../../mod/admin.php:428
-#: ../../mod/settings.php:579 ../../mod/removeme.php:60
-#: ../../mod/connedit.php:635 ../../mod/connedit.php:663
-#: ../../view/theme/redbasic/php/config.php:104
-#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1555
-msgid "No"
-msgstr "No"
+#: ../../include/nav.php:137
+msgid "Remote authentication"
+msgstr "Autenticació remota"
-#: ../../include/dir_fns.php:128 ../../include/dir_fns.php:129
-#: ../../include/dir_fns.php:130 ../../mod/api.php:105
-#: ../../mod/photos.php:568 ../../mod/mitem.php:157 ../../mod/mitem.php:158
-#: ../../mod/mitem.php:229 ../../mod/mitem.php:230 ../../mod/menu.php:91
-#: ../../mod/menu.php:147 ../../mod/filestorage.php:151
-#: ../../mod/filestorage.php:159 ../../mod/admin.php:430
-#: ../../mod/settings.php:579 ../../mod/removeme.php:60
-#: ../../view/theme/redbasic/php/config.php:104
-#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1555
-msgid "Yes"
-msgstr "Sí"
+#: ../../include/nav.php:137
+msgid "Click to authenticate to your home hub"
+msgstr "Click per autentificar-te en el teu Lloc "
-#: ../../include/dir_fns.php:129
-msgid "Public Forums Only"
-msgstr "Només Fòrums Públics"
+#: ../../include/nav.php:151
+msgid "Home Page"
+msgstr "Pàgina Personal"
-#: ../../include/dir_fns.php:130
-msgid "This Website Only"
-msgstr "Només Aquest Lloc Web"
+#: ../../include/nav.php:155 ../../mod/register.php:224 ../../boot.php:1527
+msgid "Register"
+msgstr "Registre"
-#: ../../include/page_widgets.php:6
-msgid "New Page"
-msgstr "Pàgina Nova"
+#: ../../include/nav.php:155
+msgid "Create an account"
+msgstr "Crear un compte"
-#: ../../include/page_widgets.php:39 ../../mod/webpages.php:187
-#: ../../mod/blocks.php:159 ../../mod/layouts.php:188
-msgid "View"
-msgstr "Mostra"
+#: ../../include/nav.php:160 ../../include/apps.php:142 ../../mod/help.php:67
+#: ../../mod/help.php:72 ../../mod/layouts.php:176
+msgid "Help"
+msgstr "Ajuda"
-#: ../../include/page_widgets.php:40 ../../include/ItemObject.php:677
-#: ../../include/conversation.php:1155 ../../mod/webpages.php:188
-#: ../../mod/events.php:667 ../../mod/editpost.php:143
-#: ../../mod/photos.php:982 ../../mod/editwebpage.php:214
-#: ../../mod/editblock.php:170
-msgid "Preview"
-msgstr "Avanç"
+#: ../../include/nav.php:160
+msgid "Help and documentation"
+msgstr "Ajuda i documentació"
-#: ../../include/page_widgets.php:41 ../../mod/webpages.php:189
-msgid "Actions"
-msgstr "Accions"
+#: ../../include/nav.php:163 ../../include/widgets.php:91
+#: ../../mod/apps.php:36
+msgid "Apps"
+msgstr "Aplicatius"
-#: ../../include/page_widgets.php:42 ../../mod/webpages.php:190
-msgid "Page Link"
-msgstr "Enllaç a Pàgina"
+#: ../../include/nav.php:163
+msgid "Applications, utilities, links, games"
+msgstr "Aplicacions, utilitats, enllaços, jocs"
-#: ../../include/page_widgets.php:43
-msgid "Title"
-msgstr "Títol"
+#: ../../include/nav.php:165 ../../include/text.php:914
+#: ../../include/text.php:926 ../../include/apps.php:147
+#: ../../mod/search.php:38
+msgid "Search"
+msgstr "Cerca"
-#: ../../include/page_widgets.php:44 ../../mod/webpages.php:192
-#: ../../mod/blocks.php:150 ../../mod/menu.php:105 ../../mod/layouts.php:181
-msgid "Created"
-msgstr "Creat"
+#: ../../include/nav.php:165
+msgid "Search site content"
+msgstr "Cerca en el contingut del lloc"
-#: ../../include/page_widgets.php:45 ../../mod/webpages.php:193
-#: ../../mod/blocks.php:151 ../../mod/menu.php:106 ../../mod/layouts.php:182
-msgid "Edited"
-msgstr "Editat"
+#: ../../include/nav.php:168 ../../include/apps.php:141
+msgid "Directory"
+msgstr "Directori"
-#: ../../include/api.php:1193
-msgid "Public Timeline"
-msgstr "Línia de Temps Pública"
+#: ../../include/nav.php:168
+msgid "Channel Directory"
+msgstr "Directori de Canals"
-#: ../../include/comanche.php:34 ../../mod/admin.php:390
-#: ../../view/theme/apw/php/config.php:185
-msgid "Default"
-msgstr "Predeterminat"
+#: ../../include/nav.php:180 ../../include/apps.php:133
+msgid "Matrix"
+msgstr "Matriu/Matrix"
-#: ../../include/js_strings.php:5
-msgid "Delete this item?"
-msgstr "Esborrar aquest item?"
+#: ../../include/nav.php:180
+msgid "Your matrix"
+msgstr "El teu matrix"
-#: ../../include/js_strings.php:6 ../../include/ItemObject.php:667
-#: ../../mod/photos.php:980 ../../mod/photos.php:1098
-msgid "Comment"
-msgstr "Comentari"
+#: ../../include/nav.php:181
+msgid "Mark all matrix notifications seen"
+msgstr "Marca totes les notificacions de matrix vistes"
-#: ../../include/js_strings.php:7 ../../include/ItemObject.php:384
-msgid "[+] show all"
-msgstr "[+] mostra tot"
+#: ../../include/nav.php:183 ../../include/apps.php:137
+msgid "Channel Home"
+msgstr "Canal Personal"
-#: ../../include/js_strings.php:8
-msgid "[-] show less"
-msgstr "[-] mostra menys"
+#: ../../include/nav.php:183
+msgid "Channel home"
+msgstr "Canal personal"
-#: ../../include/js_strings.php:9
-msgid "[+] expand"
-msgstr "[+] expandeix"
+#: ../../include/nav.php:184
+msgid "Mark all channel notifications seen"
+msgstr "Marca totes les notificacions de canal vistes"
-#: ../../include/js_strings.php:10
-msgid "[-] collapse"
-msgstr "[-] colapsa"
+#: ../../include/nav.php:187 ../../mod/connections.php:267
+msgid "Connections"
+msgstr "Connexions"
-#: ../../include/js_strings.php:11
-msgid "Password too short"
-msgstr "Contrasenya massa curta"
+#: ../../include/nav.php:190
+msgid "Notices"
+msgstr "Noticies"
-#: ../../include/js_strings.php:12
-msgid "Passwords do not match"
-msgstr "Les paraules de pas no coincideixen"
+#: ../../include/nav.php:190
+msgid "Notifications"
+msgstr "Notificacions"
-#: ../../include/js_strings.php:13 ../../mod/photos.php:40
-msgid "everybody"
-msgstr "tothom"
+#: ../../include/nav.php:191
+msgid "See all notifications"
+msgstr "Veure totes les Notificacions"
-#: ../../include/js_strings.php:14
-msgid "Secret Passphrase"
-msgstr "Contrasenya Secreta"
+#: ../../include/nav.php:192 ../../mod/notifications.php:99
+msgid "Mark all system notifications seen"
+msgstr "Marca totes les notificacions vistes"
-#: ../../include/js_strings.php:15
-msgid "Passphrase hint"
-msgstr "Pista per la Contrasenya"
+#: ../../include/nav.php:194 ../../include/apps.php:143
+msgid "Mail"
+msgstr "Correu"
-#: ../../include/js_strings.php:16
-msgid "Notice: Permissions have changed but have not yet been submitted."
-msgstr "Avis: Els permisos han canviat però encara no han estat enviats."
+#: ../../include/nav.php:194
+msgid "Private mail"
+msgstr "Correu privat"
-#: ../../include/js_strings.php:17
-msgid "close all"
-msgstr "tanca tot"
+#: ../../include/nav.php:195
+msgid "See all private messages"
+msgstr "Veure tots els missatges privats"
-#: ../../include/js_strings.php:18
-msgid "Nothing new here"
-msgstr "Res de nou per aquí"
+#: ../../include/nav.php:196
+msgid "Mark all private messages seen"
+msgstr "Marcar tots els missatges privats vistos"
-#: ../../include/js_strings.php:19
-msgid "Rate This Channel (this is public)"
-msgstr "Valora Aquest Canal (això es farà públic)"
+#: ../../include/nav.php:197
+msgid "Inbox"
+msgstr "Safata d'entrada"
-#: ../../include/js_strings.php:20 ../../mod/rate.php:156
-#: ../../mod/connedit.php:671
-msgid "Rating"
-msgstr "Valora"
+#: ../../include/nav.php:198
+msgid "Outbox"
+msgstr "Safata de sortida"
-#: ../../include/js_strings.php:21
-msgid "Describe (optional)"
-msgstr "Descriu (opcional)"
+#: ../../include/nav.php:199 ../../include/widgets.php:577
+msgid "New Message"
+msgstr "Escriu un missatge"
-#: ../../include/js_strings.php:22 ../../include/ItemObject.php:668
-#: ../../mod/xchan.php:11 ../../mod/connect.php:93 ../../mod/thing.php:275
-#: ../../mod/thing.php:318 ../../mod/events.php:494 ../../mod/events.php:670
-#: ../../mod/group.php:81 ../../mod/photos.php:577 ../../mod/photos.php:654
-#: ../../mod/photos.php:941 ../../mod/photos.php:981 ../../mod/photos.php:1099
-#: ../../mod/pdledit.php:58 ../../mod/import.php:534 ../../mod/chat.php:177
-#: ../../mod/chat.php:211 ../../mod/mitem.php:232 ../../mod/rate.php:167
-#: ../../mod/invite.php:142 ../../mod/locs.php:105 ../../mod/sources.php:104
-#: ../../mod/sources.php:138 ../../mod/filestorage.php:156
-#: ../../mod/fsuggest.php:108 ../../mod/poke.php:166
-#: ../../mod/profiles.php:667 ../../mod/setup.php:327 ../../mod/setup.php:367
-#: ../../mod/admin.php:453 ../../mod/admin.php:819 ../../mod/admin.php:986
-#: ../../mod/admin.php:1118 ../../mod/admin.php:1312 ../../mod/admin.php:1397
-#: ../../mod/settings.php:588 ../../mod/settings.php:692
-#: ../../mod/settings.php:718 ../../mod/settings.php:746
-#: ../../mod/settings.php:769 ../../mod/settings.php:854
-#: ../../mod/settings.php:1050 ../../mod/mood.php:134
-#: ../../mod/connedit.php:692 ../../mod/mail.php:355 ../../mod/appman.php:99
-#: ../../mod/pconfig.php:108 ../../mod/poll.php:68
-#: ../../mod/bulksetclose.php:24 ../../view/theme/apw/php/config.php:256
-#: ../../view/theme/redbasic/php/config.php:99
-msgid "Submit"
-msgstr "Presenta"
+#: ../../include/nav.php:202 ../../include/apps.php:140
+#: ../../mod/events.php:503
+msgid "Events"
+msgstr "Events"
-#: ../../include/js_strings.php:23
-msgid "Please enter a link URL"
-msgstr "Si us plau, entra l'enllaç URL"
+#: ../../include/nav.php:202
+msgid "Event Calendar"
+msgstr "Calendari d'Events"
-#: ../../include/js_strings.php:24
-msgid "Unsaved changes. Are you sure you wish to leave this page?"
-msgstr "Hi ha canvis sense desar, estàs segur que vols abandonar la pàgina?"
+#: ../../include/nav.php:203
+msgid "See all events"
+msgstr "Veure tots els events"
-#: ../../include/js_strings.php:26
-msgid "timeago.prefixAgo"
-msgstr "horapasada.prefixFa"
+#: ../../include/nav.php:204
+msgid "Mark all events seen"
+msgstr "Marcar tots els events vistos"
-#: ../../include/js_strings.php:27
-msgid "timeago.prefixFromNow"
-msgstr "timeago.prefixFromNow"
+#: ../../include/nav.php:206 ../../include/apps.php:132
+#: ../../mod/manage.php:166
+msgid "Channel Manager"
+msgstr "Gestor del Canal"
-#: ../../include/js_strings.php:28
-msgid "ago"
-msgstr "fa"
+#: ../../include/nav.php:206
+msgid "Manage Your Channels"
+msgstr "Gestiona els Teus Canals"
-#: ../../include/js_strings.php:29
-msgid "from now"
-msgstr "des d'ara"
+#: ../../include/nav.php:208 ../../include/widgets.php:556
+#: ../../include/apps.php:134 ../../mod/admin.php:1079
+#: ../../mod/admin.php:1279
+msgid "Settings"
+msgstr "Configuració"
-#: ../../include/js_strings.php:30
-msgid "less than a minute"
-msgstr "menys d'un minut"
+#: ../../include/nav.php:208
+msgid "Account/Channel Settings"
+msgstr "Ajustos de Compte/Canal"
-#: ../../include/js_strings.php:31
-msgid "about a minute"
-msgstr "prop d'un minut"
+#: ../../include/nav.php:216 ../../mod/admin.php:120
+msgid "Admin"
+msgstr "Admin"
-#: ../../include/js_strings.php:32
-#, php-format
-msgid "%d minutes"
-msgstr "%d minuts"
+#: ../../include/nav.php:216
+msgid "Site Setup and Configuration"
+msgstr "Ajustos i Configuració del Lloc"
-#: ../../include/js_strings.php:33
-msgid "about an hour"
-msgstr "prop d'una hora"
+#: ../../include/nav.php:247 ../../include/conversation.php:861
+msgid "Loading..."
+msgstr "Carregant..."
-#: ../../include/js_strings.php:34
-#, php-format
-msgid "about %d hours"
-msgstr "al voltant de %d hores"
+#: ../../include/nav.php:252
+msgid "@name, #tag, content"
+msgstr "@name, #tag, content"
-#: ../../include/js_strings.php:35
-msgid "a day"
-msgstr "un dia"
+#: ../../include/nav.php:253
+msgid "Please wait..."
+msgstr "Si us plau, espera......."
-#: ../../include/js_strings.php:36
-#, php-format
-msgid "%d days"
-msgstr "%d dies"
+#: ../../include/network.php:650
+msgid "view full size"
+msgstr "Mostra a mida competa"
-#: ../../include/js_strings.php:37
-msgid "about a month"
-msgstr "prop d'un mes"
+#: ../../include/network.php:1600 ../../include/enotify.php:58
+msgid "$Projectname Notification"
+msgstr "Notificació de $Projectname"
-#: ../../include/js_strings.php:38
-#, php-format
-msgid "%d months"
-msgstr "%d mesos"
+#: ../../include/network.php:1601 ../../include/diaspora.php:2526
+#: ../../include/diaspora.php:2537 ../../include/enotify.php:59
+#: ../../mod/p.php:46
+msgid "$projectname"
+msgstr "$projectname"
-#: ../../include/js_strings.php:39
-msgid "about a year"
-msgstr "prop d'un any"
+#: ../../include/network.php:1603 ../../include/enotify.php:61
+msgid "Thank You,"
+msgstr "Gràcies,"
-#: ../../include/js_strings.php:40
+#: ../../include/network.php:1605 ../../include/enotify.php:63
#, php-format
-msgid "%d years"
-msgstr "%d anys"
+msgid "%s Administrator"
+msgstr "Administrador de %s"
-#: ../../include/js_strings.php:41
-msgid " "
-msgstr " "
+#: ../../include/network.php:1647 ../../include/account.php:314
+#: ../../include/account.php:341 ../../include/account.php:401
+msgid "Administrator"
+msgstr "Administrador"
-#: ../../include/js_strings.php:42
-msgid "timeago.numbers"
-msgstr "timeago.numbers"
+#: ../../include/network.php:1661
+msgid "No Subject"
+msgstr "Sense assumpte"
-#: ../../include/text.php:395
+#: ../../include/text.php:391
msgid "prev"
-msgstr "prev"
+msgstr "anterior"
-#: ../../include/text.php:397
+#: ../../include/text.php:393
msgid "first"
msgstr "primer"
-#: ../../include/text.php:426
+#: ../../include/text.php:422
msgid "last"
msgstr "últim"
-#: ../../include/text.php:429
+#: ../../include/text.php:425
msgid "next"
-msgstr "pròxim"
+msgstr "següent"
-#: ../../include/text.php:439
+#: ../../include/text.php:435
msgid "older"
-msgstr "el més antic"
+msgstr "més antic"
-#: ../../include/text.php:441
+#: ../../include/text.php:437
msgid "newer"
-msgstr "El més nou"
+msgstr "més nou"
-#: ../../include/text.php:834
+#: ../../include/text.php:830
msgid "No connections"
-msgstr "Sense Connexions"
+msgstr "No hi ha connexions"
-#: ../../include/text.php:848
+#: ../../include/text.php:844
#, php-format
msgid "%d Connection"
msgid_plural "%d Connections"
-msgstr[0] "%d Connexió"
-msgstr[1] "%d Connexions"
+msgstr[0] "Hi ha %d connexió"
+msgstr[1] "Hi ha %d connexions"
-#: ../../include/text.php:861 ../../mod/viewconnections.php:104
+#: ../../include/text.php:857 ../../mod/viewconnections.php:104
msgid "View Connections"
-msgstr "Veure Connexions"
-
-#: ../../include/text.php:918 ../../include/text.php:930
-#: ../../include/nav.php:165 ../../include/apps.php:147
-#: ../../mod/search.php:38
-msgid "Search"
-msgstr "Cerca"
+msgstr "Mostra les connexions"
-#: ../../include/text.php:919 ../../include/text.php:931
-#: ../../include/widgets.php:192 ../../mod/rbmark.php:28
-#: ../../mod/rbmark.php:98 ../../mod/filer.php:50 ../../mod/admin.php:1457
-#: ../../mod/admin.php:1477
+#: ../../include/text.php:915 ../../include/text.php:927
+#: ../../include/widgets.php:192 ../../mod/admin.php:1457
+#: ../../mod/admin.php:1477 ../../mod/rbmark.php:28 ../../mod/rbmark.php:98
+#: ../../mod/filer.php:50
msgid "Save"
-msgstr "Guardar"
+msgstr "Desa"
-#: ../../include/text.php:994
+#: ../../include/text.php:990
msgid "poke"
-msgstr "emprenya"
+msgstr "fes-li un toc"
-#: ../../include/text.php:994 ../../include/conversation.php:243
+#: ../../include/text.php:990 ../../include/conversation.php:243
msgid "poked"
-msgstr "emprenyat"
+msgstr "ha fet un toc a"
-#: ../../include/text.php:995
+#: ../../include/text.php:991
msgid "ping"
-msgstr "coloca"
+msgstr "fes-li ping"
-#: ../../include/text.php:995
+#: ../../include/text.php:991
msgid "pinged"
-msgstr "colocat"
+msgstr "ha fet ping a"
-#: ../../include/text.php:996
+#: ../../include/text.php:992
msgid "prod"
-msgstr "picar"
+msgstr "pica"
-#: ../../include/text.php:996
+#: ../../include/text.php:992
msgid "prodded"
-msgstr "picat"
+msgstr "ha picat"
-#: ../../include/text.php:997
+#: ../../include/text.php:993
msgid "slap"
-msgstr "bufetada"
+msgstr "fes-li un cop de palmell"
-#: ../../include/text.php:997
+#: ../../include/text.php:993
msgid "slapped"
-msgstr "bufetejat"
+msgstr "ha fet un cop de palmell a"
-#: ../../include/text.php:998
+#: ../../include/text.php:994
msgid "finger"
-msgstr "senyal"
+msgstr "acaricia"
-#: ../../include/text.php:998
+#: ../../include/text.php:994
msgid "fingered"
-msgstr "senyalat"
+msgstr "ha acariciat"
-#: ../../include/text.php:999
+#: ../../include/text.php:995
msgid "rebuff"
-msgstr "menyspreu"
+msgstr "aparta"
-#: ../../include/text.php:999
+#: ../../include/text.php:995
msgid "rebuffed"
-msgstr "menyspreuat"
+msgstr "ha apartat"
-#: ../../include/text.php:1009
+#: ../../include/text.php:1005
msgid "happy"
msgstr "feliç"
-#: ../../include/text.php:1010
+#: ../../include/text.php:1006
msgid "sad"
msgstr "trist"
-#: ../../include/text.php:1011
+#: ../../include/text.php:1007
msgid "mellow"
-msgstr "melós"
+msgstr "tendre"
-#: ../../include/text.php:1012
+#: ../../include/text.php:1008
msgid "tired"
msgstr "cansat"
-#: ../../include/text.php:1013
+#: ../../include/text.php:1009
msgid "perky"
-msgstr "turgent"
+msgstr "animat"
-#: ../../include/text.php:1014
+#: ../../include/text.php:1010
msgid "angry"
msgstr "enfadat"
-#: ../../include/text.php:1015
+#: ../../include/text.php:1011
msgid "stupified"
msgstr "encantat"
-#: ../../include/text.php:1016
+#: ../../include/text.php:1012
msgid "puzzled"
-msgstr "perplexe"
+msgstr "perplex"
-#: ../../include/text.php:1017
+#: ../../include/text.php:1013
msgid "interested"
msgstr "Interessat"
-#: ../../include/text.php:1018
+#: ../../include/text.php:1014
msgid "bitter"
msgstr "amargat"
-#: ../../include/text.php:1019
+#: ../../include/text.php:1015
msgid "cheerful"
-msgstr "feliç"
+msgstr "alegre"
-#: ../../include/text.php:1020
+#: ../../include/text.php:1016
msgid "alive"
msgstr "viu"
-#: ../../include/text.php:1021
+#: ../../include/text.php:1017
msgid "annoyed"
msgstr "molest"
-#: ../../include/text.php:1022
+#: ../../include/text.php:1018
msgid "anxious"
msgstr "ansiós"
-#: ../../include/text.php:1023
+#: ../../include/text.php:1019
msgid "cranky"
-msgstr "malagaitós"
+msgstr "de mala bava"
-#: ../../include/text.php:1024
+#: ../../include/text.php:1020
msgid "disturbed"
msgstr "transtornat"
-#: ../../include/text.php:1025
+#: ../../include/text.php:1021
msgid "frustrated"
msgstr "frustrat"
-#: ../../include/text.php:1026
+#: ../../include/text.php:1022
msgid "depressed"
msgstr "deprimit"
-#: ../../include/text.php:1027
+#: ../../include/text.php:1023
msgid "motivated"
msgstr "motivat"
-#: ../../include/text.php:1028
+#: ../../include/text.php:1024
msgid "relaxed"
msgstr "relaxat"
-#: ../../include/text.php:1029
+#: ../../include/text.php:1025
msgid "surprised"
msgstr "sorprès"
-#: ../../include/text.php:1201
+#: ../../include/text.php:1197
msgid "Monday"
-msgstr "Dilluns"
+msgstr "dilluns"
-#: ../../include/text.php:1201
+#: ../../include/text.php:1197
msgid "Tuesday"
-msgstr "Dimarts"
+msgstr "dimarts"
-#: ../../include/text.php:1201
+#: ../../include/text.php:1197
msgid "Wednesday"
-msgstr "Dimecres"
+msgstr "dimecres"
-#: ../../include/text.php:1201
+#: ../../include/text.php:1197
msgid "Thursday"
-msgstr "Dijous"
+msgstr "dijous"
-#: ../../include/text.php:1201
+#: ../../include/text.php:1197
msgid "Friday"
-msgstr "Divendres"
+msgstr "divendres"
-#: ../../include/text.php:1201
+#: ../../include/text.php:1197
msgid "Saturday"
-msgstr "Dissabte"
+msgstr "dissabte"
-#: ../../include/text.php:1201
+#: ../../include/text.php:1197
msgid "Sunday"
-msgstr "Diumenge"
+msgstr "diumenge"
-#: ../../include/text.php:1205
+#: ../../include/text.php:1201
msgid "January"
-msgstr "Gener"
+msgstr "gener"
-#: ../../include/text.php:1205
+#: ../../include/text.php:1201
msgid "February"
-msgstr "Febrer"
+msgstr "febrer"
-#: ../../include/text.php:1205
+#: ../../include/text.php:1201
msgid "March"
-msgstr "Març"
+msgstr "març"
-#: ../../include/text.php:1205
+#: ../../include/text.php:1201
msgid "April"
-msgstr "Abril"
+msgstr "abril"
-#: ../../include/text.php:1205
+#: ../../include/text.php:1201 ../../mod/uexport.php:58
+#: ../../mod/uexport.php:59
msgid "May"
-msgstr "Maig"
+msgstr "maig"
-#: ../../include/text.php:1205
+#: ../../include/text.php:1201
msgid "June"
-msgstr "Juny"
+msgstr "juny"
-#: ../../include/text.php:1205
+#: ../../include/text.php:1201
msgid "July"
-msgstr "Juliol"
+msgstr "juliol"
-#: ../../include/text.php:1205
+#: ../../include/text.php:1201
msgid "August"
-msgstr "Agost"
+msgstr "agost"
-#: ../../include/text.php:1205
+#: ../../include/text.php:1201
msgid "September"
-msgstr "Setembre"
+msgstr "setembre"
-#: ../../include/text.php:1205
+#: ../../include/text.php:1201
msgid "October"
-msgstr "Octubre"
+msgstr "octubre"
-#: ../../include/text.php:1205
+#: ../../include/text.php:1201
msgid "November"
-msgstr "Novembre"
+msgstr "novembre"
-#: ../../include/text.php:1205
+#: ../../include/text.php:1201
msgid "December"
-msgstr "Desembre"
+msgstr "desembre"
-#: ../../include/text.php:1310
+#: ../../include/text.php:1306
msgid "unknown.???"
msgstr "desconegut.???"
-#: ../../include/text.php:1311
+#: ../../include/text.php:1307
msgid "bytes"
msgstr "bytes"
-#: ../../include/text.php:1347
+#: ../../include/text.php:1343
msgid "remove category"
-msgstr "elimina categoria"
+msgstr "elimina la categoria"
-#: ../../include/text.php:1422
+#: ../../include/text.php:1418
msgid "remove from file"
-msgstr "elimina del arxiu"
+msgstr "elimina de l'arxiu"
-#: ../../include/text.php:1498 ../../include/text.php:1509
+#: ../../include/text.php:1506 ../../include/text.php:1517
msgid "Click to open/close"
-msgstr "Clic per obrir/tancar"
+msgstr "Fes clic per obrir/tancar"
-#: ../../include/text.php:1665 ../../mod/events.php:457
+#: ../../include/text.php:1673 ../../mod/events.php:474
msgid "Link to Source"
-msgstr "Enllaç a la Font"
+msgstr "Enllaç a la font"
-#: ../../include/text.php:1686 ../../include/text.php:1757
+#: ../../include/text.php:1694 ../../include/text.php:1765
msgid "default"
msgstr "per defecte"
-#: ../../include/text.php:1694
+#: ../../include/text.php:1702
msgid "Page layout"
-msgstr "Format de la pàgina"
+msgstr "Disseny de la pàgina"
-#: ../../include/text.php:1694
+#: ../../include/text.php:1702
msgid "You can create your own with the layouts tool"
-msgstr "Pots crear el teu propi amb l'editor de format de pàgina."
+msgstr "Pots crear el teu propi disseny de pàgina amb l'editor"
-#: ../../include/text.php:1735
+#: ../../include/text.php:1743
msgid "Page content type"
msgstr "Tipus de contingut de la pàgina"
-#: ../../include/text.php:1769
+#: ../../include/text.php:1777
msgid "Select an alternate language"
msgstr "Tria un idioma alternatiu"
-#: ../../include/text.php:1888 ../../include/diaspora.php:2119
-#: ../../include/conversation.php:120 ../../mod/like.php:346
+#: ../../include/text.php:1896 ../../include/conversation.php:120
+#: ../../include/diaspora.php:2123 ../../mod/like.php:349
#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
#: ../../mod/tagger.php:43
msgid "photo"
msgstr "foto"
-#: ../../include/text.php:1891 ../../include/conversation.php:123
-#: ../../mod/like.php:348 ../../mod/tagger.php:47
+#: ../../include/text.php:1899 ../../include/conversation.php:123
+#: ../../mod/like.php:351 ../../mod/tagger.php:47
msgid "event"
-msgstr "succés"
+msgstr "esdeveniment"
-#: ../../include/text.php:1894 ../../include/diaspora.php:2119
-#: ../../include/conversation.php:148 ../../mod/like.php:346
+#: ../../include/text.php:1902 ../../include/conversation.php:148
+#: ../../include/diaspora.php:2123 ../../mod/like.php:349
#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
msgid "status"
msgstr "estat"
-#: ../../include/text.php:1896 ../../include/conversation.php:150
+#: ../../include/text.php:1904 ../../include/conversation.php:150
#: ../../mod/tagger.php:53
msgid "comment"
msgstr "comentari"
-#: ../../include/text.php:1901
+#: ../../include/text.php:1909
msgid "activity"
msgstr "activitat"
-#: ../../include/text.php:2196
+#: ../../include/text.php:2204
msgid "Design Tools"
msgstr "Eines de disseny"
-#: ../../include/text.php:2199 ../../mod/blocks.php:147
+#: ../../include/text.php:2207 ../../mod/blocks.php:147
msgid "Blocks"
-msgstr "Bloc"
+msgstr "Blocs"
-#: ../../include/text.php:2200 ../../mod/menu.php:98
+#: ../../include/text.php:2208 ../../mod/menu.php:101
msgid "Menus"
msgstr "Menús"
-#: ../../include/text.php:2201 ../../mod/layouts.php:174
+#: ../../include/text.php:2209 ../../mod/layouts.php:174
msgid "Layouts"
-msgstr "Format Gràfic"
+msgstr "Dissenys"
-#: ../../include/text.php:2202
+#: ../../include/text.php:2210
msgid "Pages"
msgstr "Pàgines"
-#: ../../include/text.php:2553 ../../include/RedDAV/RedBrowser.php:131
-msgid "Collection"
-msgstr "Col·lecció"
-
-#: ../../include/RedDAV/RedBrowser.php:107
-#: ../../include/RedDAV/RedBrowser.php:265
-msgid "parent"
-msgstr "pare"
-
-#: ../../include/RedDAV/RedBrowser.php:134
-msgid "Principal"
-msgstr "Principal"
-
-#: ../../include/RedDAV/RedBrowser.php:137
-msgid "Addressbook"
-msgstr "Llista d'Adreçes"
-
-#: ../../include/RedDAV/RedBrowser.php:140
-msgid "Calendar"
-msgstr "Calendari"
-
-#: ../../include/RedDAV/RedBrowser.php:143
-msgid "Schedule Inbox"
-msgstr "Programació de la bústia d'entrada"
-
-#: ../../include/RedDAV/RedBrowser.php:146
-msgid "Schedule Outbox"
-msgstr "Programació de la bústia de sortida"
-
-#: ../../include/RedDAV/RedBrowser.php:164 ../../include/conversation.php:1019
-#: ../../include/apps.php:336 ../../include/apps.php:387
-#: ../../mod/photos.php:693 ../../mod/photos.php:1131
-msgid "Unknown"
-msgstr "Desconegut"
-
-#: ../../include/RedDAV/RedBrowser.php:227
-#, php-format
-msgid "%1$s used"
-msgstr "%1$s emprat"
-
-#: ../../include/RedDAV/RedBrowser.php:232
-#, php-format
-msgid "%1$s used of %2$s (%3$s&#37;)"
-msgstr "%1$s emprat de %2$s (%3$s&#37;)"
-
-#: ../../include/RedDAV/RedBrowser.php:251 ../../include/nav.php:98
-#: ../../include/conversation.php:1609 ../../include/apps.php:135
-#: ../../mod/fbrowser.php:114
-msgid "Files"
-msgstr "Arxius"
-
-#: ../../include/RedDAV/RedBrowser.php:253
-msgid "Total"
-msgstr "Total"
-
-#: ../../include/RedDAV/RedBrowser.php:255
-msgid "Shared"
-msgstr "Compartit"
-
-#: ../../include/RedDAV/RedBrowser.php:256
-#: ../../include/RedDAV/RedBrowser.php:303 ../../mod/webpages.php:180
-#: ../../mod/blocks.php:152 ../../mod/menu.php:109
-#: ../../mod/new_channel.php:121 ../../mod/layouts.php:175
-msgid "Create"
-msgstr "Creada"
-
-#: ../../include/RedDAV/RedBrowser.php:257
-#: ../../include/RedDAV/RedBrowser.php:305 ../../mod/profile_photo.php:362
-#: ../../mod/photos.php:718 ../../mod/photos.php:1248
-msgid "Upload"
-msgstr "Pujar"
-
-#: ../../include/RedDAV/RedBrowser.php:261 ../../mod/admin.php:994
-#: ../../mod/settings.php:590 ../../mod/settings.php:616
-#: ../../mod/sharedwithme.php:95
-msgid "Name"
-msgstr "Nom"
-
-#: ../../include/RedDAV/RedBrowser.php:262
-msgid "Type"
-msgstr "Tipus"
-
-#: ../../include/RedDAV/RedBrowser.php:263 ../../mod/sharedwithme.php:97
-msgid "Size"
-msgstr "Mida"
-
-#: ../../include/RedDAV/RedBrowser.php:264 ../../mod/sharedwithme.php:98
-msgid "Last Modified"
-msgstr "Últim Modificat"
-
-#: ../../include/RedDAV/RedBrowser.php:267 ../../include/ItemObject.php:120
-#: ../../include/conversation.php:660 ../../include/apps.php:255
-#: ../../mod/webpages.php:183 ../../mod/thing.php:228 ../../mod/group.php:176
-#: ../../mod/blocks.php:155 ../../mod/photos.php:1062
-#: ../../mod/editlayout.php:178 ../../mod/editwebpage.php:225
-#: ../../mod/editblock.php:180 ../../mod/admin.php:826 ../../mod/admin.php:988
-#: ../../mod/settings.php:651 ../../mod/connedit.php:551
-msgid "Delete"
-msgstr "Esborra"
-
-#: ../../include/RedDAV/RedBrowser.php:302
-msgid "Create new folder"
-msgstr "Crea una nova carpeta"
-
-#: ../../include/RedDAV/RedBrowser.php:304
-msgid "Upload file"
-msgstr "Puja arxiu"
-
-#: ../../include/bookmarks.php:35
-#, php-format
-msgid "%1$s's bookmarks"
-msgstr "%1$s de marcadors"
-
-#: ../../include/network.php:635
-msgid "view full size"
-msgstr "Veure a mida competa"
-
-#: ../../include/network.php:1585 ../../include/enotify.php:58
-msgid "$Projectname Notification"
-msgstr "Notificació de $Projectname"
-
-#: ../../include/network.php:1586 ../../include/enotify.php:59
-#: ../../include/diaspora.php:2522 ../../include/diaspora.php:2533
-#: ../../mod/p.php:46
-msgid "$projectname"
-msgstr "$projectname"
-
-#: ../../include/network.php:1588 ../../include/enotify.php:61
-msgid "Thank You,"
-msgstr "Gràcies,"
-
-#: ../../include/network.php:1590 ../../include/enotify.php:63
-#, php-format
-msgid "%s Administrator"
-msgstr "%s Administrador"
-
-#: ../../include/network.php:1646
-msgid "No Subject"
-msgstr "Sense Assumpte"
-
-#: ../../include/features.php:38
-msgid "General Features"
-msgstr "Característiques Generals"
-
-#: ../../include/features.php:40
-msgid "Content Expiration"
-msgstr "Expiració del Contingut"
-
-#: ../../include/features.php:40
-msgid "Remove posts/comments and/or private messages at a future time"
-msgstr "elimina entrades/comentaris i/o missatges privats de aquí en endevant."
-
-#: ../../include/features.php:41
-msgid "Multiple Profiles"
-msgstr "Multiples Perfils"
-
-#: ../../include/features.php:41
-msgid "Ability to create multiple profiles"
-msgstr "Capacitat per crear multiples perfils"
-
-#: ../../include/features.php:42
-msgid "Advanced Profiles"
-msgstr "Perfils Avançats"
-
-#: ../../include/features.php:42
-msgid "Additional profile sections and selections"
-msgstr "Seccions i seleccions addicionals de perfils "
-
-#: ../../include/features.php:43
-msgid "Profile Import/Export"
-msgstr "Importar/Exportar Perfil"
-
-#: ../../include/features.php:43
-msgid "Save and load profile details across sites/channels"
-msgstr "Guarda i carrega els detalls del perfil al llarg dels llocs/canals"
-
-#: ../../include/features.php:44
-msgid "Web Pages"
-msgstr "Pàgines Web"
-
-#: ../../include/features.php:44
-msgid "Provide managed web pages on your channel"
-msgstr "Proporcionar pàgines web gestionades al seu canal"
-
-#: ../../include/features.php:45
-msgid "Private Notes"
-msgstr "Notes Privades"
-
-#: ../../include/features.php:45
-msgid "Enables a tool to store notes and reminders"
-msgstr "Activa l'eina per guardar notes i recordatoris"
-
-#: ../../include/features.php:46
-msgid "Navigation Channel Select"
-msgstr "Navegació pel Selector de Canals"
-
-#: ../../include/features.php:46
-msgid "Change channels directly from within the navigation dropdown menu"
-msgstr "Canvieu els canals directament des del menú desplegable de navegació"
-
-#: ../../include/features.php:47
-msgid "Photo Location"
-msgstr "Ubicació de la Photo"
-
-#: ../../include/features.php:47
-msgid "If location data is available on uploaded photos, link this to a map."
-msgstr "Si los datos de ubicación están disponibles en las fotos subidas, vincular a un mapa."
-
-#: ../../include/features.php:49
-msgid "Expert Mode"
-msgstr "Mode Expert"
-
-#: ../../include/features.php:49
-msgid "Enable Expert Mode to provide advanced configuration options"
-msgstr "Activar Mode Expert per a proporcionar opcions avançades de configuració"
-
-#: ../../include/features.php:50
-msgid "Premium Channel"
-msgstr "Canal Superior"
-
-#: ../../include/features.php:50
-msgid ""
-"Allows you to set restrictions and terms on those that connect with your "
-"channel"
-msgstr "Li permet establir restriccions i els termes en els quals es connecten amb el seu canal"
-
-#: ../../include/features.php:55
-msgid "Post Composition Features"
-msgstr "Característiques de Composició d'Entrades"
-
-#: ../../include/features.php:57
-msgid "Use Markdown"
-msgstr "Us d'Abreviatures"
-
-#: ../../include/features.php:57
-msgid "Allow use of \"Markdown\" to format posts"
-msgstr "Permet emprat \"Abreviatures\" per formatar entrades"
-
-#: ../../include/features.php:58
-msgid "Large Photos"
-msgstr "Grans Fotos"
-
-#: ../../include/features.php:58
-msgid ""
-"Include large (640px) photo thumbnails in posts. If not enabled, use small "
-"(320px) photo thumbnails"
-msgstr "Inclou gran (640px) foto de miniatura a les entrades. Si no està activat, empra petita (320px) foto de miniatura."
-
-#: ../../include/features.php:59 ../../include/widgets.php:548
-#: ../../mod/sources.php:88
-msgid "Channel Sources"
-msgstr "Canal Origen"
-
-#: ../../include/features.php:59
-msgid "Automatically import channel content from other channels or feeds"
-msgstr "Importa automàticament el contingut del canal des de altres canals o feeds"
-
-#: ../../include/features.php:60
-msgid "Even More Encryption"
-msgstr "Encara Més Encriptació"
-
-#: ../../include/features.php:60
-msgid ""
-"Allow optional encryption of content end-to-end with a shared secret key"
-msgstr "Permet l'encripció opcional del contingut extrem-a-extrem amb clau secreta compartida"
-
-#: ../../include/features.php:61
-msgid "Enable voting tools"
-msgstr "Habilitar eines de vot"
-
-#: ../../include/features.php:61
-msgid "Provide a class of post which others can vote on"
-msgstr "Proporcionar una classe d'entrada que altres puguin votar"
-
-#: ../../include/features.php:67
-msgid "Network and Stream Filtering"
-msgstr "Filtrat de Xarxa i Flux"
-
-#: ../../include/features.php:68
-msgid "Search by Date"
-msgstr "Cerca per Data"
-
-#: ../../include/features.php:68
-msgid "Ability to select posts by date ranges"
-msgstr "Capacitat per seleccionar entrades per rang de dates"
-
-#: ../../include/features.php:69
-msgid "Collections Filter"
-msgstr "Filtre de Col·leccions"
-
-#: ../../include/features.php:69
-msgid "Enable widget to display Network posts only from selected collections"
-msgstr "Habilitar giny per mostrar les entrades de xarxa únicament de les col·leccions seleccionades"
-
-#: ../../include/features.php:70 ../../include/widgets.php:274
-msgid "Saved Searches"
-msgstr "Cerques Guardades"
-
-#: ../../include/features.php:70
-msgid "Save search terms for re-use"
-msgstr "Guardar els termin de la cerca per a re-usar"
-
-#: ../../include/features.php:71
-msgid "Network Personal Tab"
-msgstr "Pestanya Personal de Xarxa"
-
-#: ../../include/features.php:71
-msgid "Enable tab to display only Network posts that you've interacted on"
-msgstr "Activa pestanya per mostrar només les entrades de xarxa en els que has intervingut"
-
-#: ../../include/features.php:72
-msgid "Network New Tab"
-msgstr "Nova Pestanya de Xarxa"
-
-#: ../../include/features.php:72
-msgid "Enable tab to display all new Network activity"
-msgstr "Activa pestanya per mostrar tota l'activitat nova de la Xarxa"
-
-#: ../../include/features.php:73
-msgid "Affinity Tool"
-msgstr "Eina d'Afinitat"
-
-#: ../../include/features.php:73
-msgid "Filter stream activity by depth of relationships"
-msgstr "Filtre d'activitat del flux per importància de la relació"
-
-#: ../../include/features.php:74
-msgid "Connection Filtering"
-msgstr "Filtre de Connexió"
-
-#: ../../include/features.php:74
-msgid "Filter incoming posts from connections based on keywords/content"
-msgstr "Filtre de missatges d'entrada de conexions, basat en paraules clau/contingut "
-
-#: ../../include/features.php:75
-msgid "Suggest Channels"
-msgstr "Suggerir Canals"
-
-#: ../../include/features.php:75
-msgid "Show channel suggestions"
-msgstr "Mostra suggerencies de canals"
-
-#: ../../include/features.php:80
-msgid "Post/Comment Tools"
-msgstr "Eina d'Entrades/Comentaris"
-
-#: ../../include/features.php:81
-msgid "Tagging"
-msgstr "Etiquetant"
-
-#: ../../include/features.php:81
-msgid "Ability to tag existing posts"
-msgstr "Capacitat d'etiquetar entrades existents"
-
-#: ../../include/features.php:82
-msgid "Post Categories"
-msgstr "Categories d'Entrades"
-
-#: ../../include/features.php:82
-msgid "Add categories to your posts"
-msgstr "Afegeix categoria a la teva entrada"
-
-#: ../../include/features.php:83 ../../include/widgets.php:304
-#: ../../include/contact_widgets.php:57
-msgid "Saved Folders"
-msgstr "Carpetes Guardades"
-
-#: ../../include/features.php:83
-msgid "Ability to file posts under folders"
-msgstr "Capacitat de arxivar entrades en les carpetes"
-
-#: ../../include/features.php:84
-msgid "Dislike Posts"
-msgstr "No Agrada l'Entrada"
-
-#: ../../include/features.php:84
-msgid "Ability to dislike posts/comments"
-msgstr "Capacitat per marcar amb \"No Agrada\" les entrades/comentaris"
-
-#: ../../include/features.php:85
-msgid "Star Posts"
-msgstr "Entrades Excel·lents"
-
-#: ../../include/features.php:85
-msgid "Ability to mark special posts with a star indicator"
-msgstr "Capacitat per marcar entrades especials amb l'indicador d'excel·lencia"
-
-#: ../../include/features.php:86
-msgid "Tag Cloud"
-msgstr "Núvol d'Etiquetes."
-
-#: ../../include/features.php:86
-msgid "Provide a personal tag cloud on your channel page"
-msgstr "Proporcionar un núvol d'etiquetes personals a la teva pàgina de canal"
-
-#: ../../include/widgets.php:35 ../../include/taxonomy.php:264
-#: ../../include/contact_widgets.php:92
+#: ../../include/widgets.php:35 ../../include/contact_widgets.php:92
+#: ../../include/taxonomy.php:264
msgid "Categories"
msgstr "Categories"
-#: ../../include/widgets.php:91 ../../include/nav.php:163
-#: ../../mod/apps.php:36
-msgid "Apps"
-msgstr "Aplicatius"
-
#: ../../include/widgets.php:92
msgid "System"
msgstr "Sistema"
-#: ../../include/widgets.php:94 ../../include/conversation.php:1504
+#: ../../include/widgets.php:94 ../../include/conversation.php:1515
msgid "Personal"
msgstr "Personal"
@@ -1377,9 +843,9 @@ msgid "Edit Personal App"
msgstr "Editar Personal App"
#: ../../include/widgets.php:136 ../../include/widgets.php:175
-#: ../../include/Contact.php:107 ../../include/conversation.php:945
-#: ../../include/identity.php:857 ../../mod/directory.php:316
-#: ../../mod/match.php:64 ../../mod/suggest.php:52
+#: ../../include/Contact.php:107 ../../include/conversation.php:956
+#: ../../include/identity.php:956 ../../mod/match.php:64
+#: ../../mod/directory.php:316 ../../mod/suggest.php:52
msgid "Connect"
msgstr "Connecta "
@@ -1387,7 +853,7 @@ msgstr "Connecta "
msgid "Ignore/Hide"
msgstr "Ignora/Amaga"
-#: ../../include/widgets.php:143 ../../mod/connections.php:268
+#: ../../include/widgets.php:143 ../../mod/connections.php:128
msgid "Suggestions"
msgstr "Suggerencies"
@@ -1420,6 +886,19 @@ msgstr "Notes"
msgid "Remove term"
msgstr "Plaç de remoció"
+#: ../../include/widgets.php:274 ../../include/features.php:70
+msgid "Saved Searches"
+msgstr "Cerques desades"
+
+#: ../../include/widgets.php:275 ../../include/group.php:303
+msgid "add"
+msgstr "afegeix"
+
+#: ../../include/widgets.php:304 ../../include/contact_widgets.php:57
+#: ../../include/features.php:83
+msgid "Saved Folders"
+msgstr "Carpetes Guardades"
+
#: ../../include/widgets.php:307 ../../include/contact_widgets.php:60
#: ../../include/contact_widgets.php:95
msgid "Everything"
@@ -1429,29 +908,29 @@ msgstr "Tot"
msgid "Archives"
msgstr "Arxius"
-#: ../../include/widgets.php:429 ../../mod/connedit.php:571
+#: ../../include/widgets.php:429 ../../mod/connedit.php:583
msgid "Me"
msgstr "Jo"
-#: ../../include/widgets.php:430 ../../mod/connedit.php:572
+#: ../../include/widgets.php:430 ../../mod/connedit.php:584
msgid "Family"
msgstr "Família"
#: ../../include/widgets.php:431 ../../include/identity.php:394
#: ../../include/identity.php:395 ../../include/identity.php:402
-#: ../../include/profile_selectors.php:80 ../../mod/settings.php:345
-#: ../../mod/settings.php:349 ../../mod/settings.php:350
-#: ../../mod/settings.php:353 ../../mod/settings.php:364
-#: ../../mod/connedit.php:573
+#: ../../include/profile_selectors.php:80 ../../mod/connedit.php:585
+#: ../../mod/settings.php:345 ../../mod/settings.php:349
+#: ../../mod/settings.php:350 ../../mod/settings.php:353
+#: ../../mod/settings.php:364
msgid "Friends"
msgstr "Amics"
-#: ../../include/widgets.php:432 ../../mod/connedit.php:574
+#: ../../include/widgets.php:432 ../../mod/connedit.php:586
msgid "Acquaintances"
msgstr "Coneguts"
-#: ../../include/widgets.php:433 ../../mod/connections.php:231
-#: ../../mod/connections.php:246 ../../mod/connedit.php:575
+#: ../../include/widgets.php:433 ../../mod/connections.php:91
+#: ../../mod/connections.php:106 ../../mod/connedit.php:587
msgid "All"
msgstr "Tots"
@@ -1487,7 +966,7 @@ msgstr "Apps connectades"
msgid "Export channel"
msgstr "Exportat canal"
-#: ../../include/widgets.php:532 ../../mod/connedit.php:662
+#: ../../include/widgets.php:532 ../../mod/connedit.php:674
msgid "Connection Default Permissions"
msgstr "Permisos per Defecte de la Connexió"
@@ -1495,32 +974,27 @@ msgstr "Permisos per Defecte de la Connexió"
msgid "Premium Channel Settings"
msgstr "Ajustos Premium de Canal"
-#: ../../include/widgets.php:556 ../../include/nav.php:208
-#: ../../include/apps.php:134 ../../mod/admin.php:1079
-#: ../../mod/admin.php:1279
-msgid "Settings"
-msgstr "Ajustos"
+#: ../../include/widgets.php:548 ../../include/features.php:59
+#: ../../mod/sources.php:88
+msgid "Channel Sources"
+msgstr "Fonts del canal"
-#: ../../include/widgets.php:569 ../../mod/message.php:31
-#: ../../mod/mail.php:128
+#: ../../include/widgets.php:569 ../../mod/mail.php:128
+#: ../../mod/message.php:31
msgid "Messages"
msgstr "Missatges"
#: ../../include/widgets.php:572
msgid "Check Mail"
-msgstr "Comprovar Correu"
-
-#: ../../include/widgets.php:577 ../../include/nav.php:199
-msgid "New Message"
-msgstr "Nou Missatge"
+msgstr "Comprova el correu"
#: ../../include/widgets.php:652
msgid "Chat Rooms"
-msgstr "Sales de Xat"
+msgstr "Sales de xat"
#: ../../include/widgets.php:672
msgid "Bookmarked Chatrooms"
-msgstr "Sales de Xat Favorites"
+msgstr "Sales de xat preferides"
#: ../../include/widgets.php:692
msgid "Suggested Chatrooms"
@@ -1536,212 +1010,24 @@ msgstr "Valora'm"
#: ../../include/widgets.php:978
msgid "View Ratings"
-msgstr "Veure Valoracions"
+msgstr "Mostra les valoracions"
#: ../../include/widgets.php:989
msgid "Public Hubs"
msgstr "Concentradors Públics"
-#: ../../include/event.php:22 ../../include/bb2diaspora.php:459
-msgid "l F d, Y \\@ g:i A"
-msgstr "l F d, Y \\@ g:i A"
-
-#: ../../include/event.php:30 ../../include/bb2diaspora.php:465
-msgid "Starts:"
-msgstr "Inicia:"
-
-#: ../../include/event.php:40 ../../include/bb2diaspora.php:473
-msgid "Finishes:"
-msgstr "Acaba:"
-
-#: ../../include/event.php:50 ../../include/bb2diaspora.php:481
-#: ../../include/identity.php:908 ../../mod/directory.php:302
-#: ../../mod/events.php:661
-msgid "Location:"
-msgstr "Localització:"
-
-#: ../../include/event.php:535
-msgid "This event has been added to your calendar."
-msgstr "Aquest succés ha estat afegit al teu calendari."
-
-#: ../../include/enotify.php:96
-#, php-format
-msgid "%s <!item_type!>"
-msgstr "%s <!item_type!>"
-
-#: ../../include/enotify.php:100
-#, php-format
-msgid "[Red:Notify] New mail received at %s"
-msgstr "[Red:Notificació] Un nou missatge s'ha rebut a %s"
-
-#: ../../include/enotify.php:102
-#, php-format
-msgid "%1$s, %2$s sent you a new private message at %3$s."
-msgstr "%1$s, %2$s t'ha enviat un nou missatge privat a %3$s."
-
-#: ../../include/enotify.php:103
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s t'ha enviat %2$s."
-
-#: ../../include/enotify.php:103
-msgid "a private message"
-msgstr "un missatge privat"
-
-#: ../../include/enotify.php:104
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Per favor, visita %s per a veure i/o respondre els teus missatges privats."
-
-#: ../../include/enotify.php:158
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
-msgstr "%1$s, %2$s comentat en [zrl=%3$s]a %4$s[/zrl]"
-
-#: ../../include/enotify.php:166
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
-msgstr "%1$s, %2$s comentat en [zrl=%3$s]%4$s de %5$s[/zrl]"
-
-#: ../../include/enotify.php:175
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s comentat en [zrl=%3$s]el teu %4$s[/zrl]"
-
-#: ../../include/enotify.php:186
-#, php-format
-msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Red:Notify] Comentari a la conversa #%1$d per %2$s"
-
-#: ../../include/enotify.php:187
-#, php-format
-msgid "%1$s, %2$s commented on an item/conversation you have been following."
-msgstr "%1$s, %2$s comentat en un article/conversa que havies estat seguint."
-
-#: ../../include/enotify.php:190 ../../include/enotify.php:205
-#: ../../include/enotify.php:231 ../../include/enotify.php:249
-#: ../../include/enotify.php:263
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Si us plau visita %s per veure i/o contestar a la conversa"
-
-#: ../../include/enotify.php:196
-#, php-format
-msgid "[Red:Notify] %s posted to your profile wall"
-msgstr "[Red:Avís] %s ha escrit una entrada al teu mur"
-
-#: ../../include/enotify.php:198
-#, php-format
-msgid "%1$s, %2$s posted to your profile wall at %3$s"
-msgstr "%1$s, %2$s ha escrit una entrada al teu mur en %3$s"
-
-#: ../../include/enotify.php:200
-#, php-format
-msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
-msgstr "%1$s, %2$s enviat correu a [zrl=%3$s]el teu mur[/zrl]"
-
-#: ../../include/enotify.php:224
-#, php-format
-msgid "[Red:Notify] %s tagged you"
-msgstr "[Red:Notificació] %s t'ha etiquetat"
-
-#: ../../include/enotify.php:225
-#, php-format
-msgid "%1$s, %2$s tagged you at %3$s"
-msgstr "%1$s, %2$s t'ha etiquetat a %3$s"
-
-#: ../../include/enotify.php:226
-#, php-format
-msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%3$s]t'ha etiquetat[/zrl]."
-
-#: ../../include/enotify.php:238
-#, php-format
-msgid "[Red:Notify] %1$s poked you"
-msgstr "[Red:Avís] %1$s s'en fot de tu"
-
-#: ../../include/enotify.php:239
-#, php-format
-msgid "%1$s, %2$s poked you at %3$s"
-msgstr "%1$s, %2$s s'en fot de tú a %3$s"
-
-#: ../../include/enotify.php:240
-#, php-format
-msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%2$s]s'en fot de tú[/zrl]."
-
-#: ../../include/enotify.php:256
-#, php-format
-msgid "[Red:Notify] %s tagged your post"
-msgstr "[Red:Avís] %s ha etiquetat la teva entrada"
-
-#: ../../include/enotify.php:257
-#, php-format
-msgid "%1$s, %2$s tagged your post at %3$s"
-msgstr "%1$s, %2$s ha etiquetat la teva entrada a %3$s"
-
-#: ../../include/enotify.php:258
-#, php-format
-msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
-msgstr "%1$s, %2$s etiquetat [zrl=%3$s]la teva entrada[/zrl]"
-
-#: ../../include/enotify.php:270
-msgid "[Red:Notify] Introduction received"
-msgstr "[Red:Avís] Presentació rebuda"
-
-#: ../../include/enotify.php:271
-#, php-format
-msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
-msgstr "%1$s, has rebut una nova petició de connexió de '%2$s' a %3$s"
-
-#: ../../include/enotify.php:272
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
-msgstr "%1$s, has rebut [zrl=%2$s]una nova petició de connexió[/zrl] de %3$s."
-
-#: ../../include/enotify.php:276 ../../include/enotify.php:295
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "Pots visitar el seu perfil a %s"
-
-#: ../../include/enotify.php:278
-#, php-format
-msgid "Please visit %s to approve or reject the connection request."
-msgstr "Si us plau, visita %s per aprovar o rebutjar la petició de connexió."
-
-#: ../../include/enotify.php:285
-msgid "[Red:Notify] Friend suggestion received"
-msgstr "[Red:Notificació] Rebuda suggerencia d'amistat"
-
-#: ../../include/enotify.php:286
-#, php-format
-msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
-msgstr "%1$s, has rebut una suggerència d'amistat de '%2$s' a %3$s"
-
-#: ../../include/enotify.php:287
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
-"%4$s."
-msgstr "%1$s, has rebut [zrl=%2$s]una suggerència d'amistat[/zrl] per %3$s de %4$s."
-
-#: ../../include/enotify.php:293
-msgid "Name:"
-msgstr "Nom:"
+#: ../../include/Contact.php:124
+msgid "New window"
+msgstr "Nova finestra"
-#: ../../include/enotify.php:294
-msgid "Photo:"
-msgstr "Foto:"
+#: ../../include/Contact.php:125
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Obrir la localització seleccionada en un altre finestra o pestanya del navegador"
-#: ../../include/enotify.php:297
+#: ../../include/Contact.php:212
#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Per favor, visita %s per a aprovar o rebutjar la suggerencia."
-
-#: ../../include/enotify.php:508
-msgid "[Red:Notify]"
-msgstr "[Red:Notificació]"
+msgid "User '%s' deleted"
+msgstr "usuari '%s' esborrat"
#: ../../include/message.php:18
msgid "No recipient provided."
@@ -1759,69 +1045,33 @@ msgstr "incapaç de determinar el remitent"
msgid "Stored post could not be verified."
msgstr "L'entrada guardada no pot ser verificada"
-#: ../../include/diaspora.php:2148 ../../include/conversation.php:164
-#: ../../mod/like.php:394
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s agrada %2$s de %3$s"
-
-#: ../../include/diaspora.php:2494
-msgid "Please choose"
-msgstr "Escull"
-
-#: ../../include/diaspora.php:2496
-msgid "Agree"
-msgstr "A favor"
-
-#: ../../include/diaspora.php:2498
-msgid "Disagree"
-msgstr "En contra"
-
-#: ../../include/diaspora.php:2500
-msgid "Abstain"
-msgstr "Abstenció"
-
-#: ../../include/follow.php:28
-msgid "Channel is blocked on this site."
-msgstr "El canal està bloquejat en aquest lloc."
-
-#: ../../include/follow.php:33
-msgid "Channel location missing."
-msgstr "Ubicació del canal perduda."
-
-#: ../../include/follow.php:83
-msgid "Response from remote channel was incomplete."
-msgstr "La resposta del canal remot fou incompleta."
-
-#: ../../include/follow.php:100
-msgid "Channel was deleted and no longer exists."
-msgstr "El canal fou esborrat i actualment no existeix."
-
-#: ../../include/follow.php:135 ../../include/follow.php:206
-msgid "Protocol disabled."
-msgstr "Protocol desactivat."
+#: ../../include/zot.php:685
+msgid "Invalid data packet"
+msgstr "paquet de dades invàlid"
-#: ../../include/follow.php:144
-msgid "Protocol blocked for this channel."
-msgstr "El protocol està bloquejat per a aquest canal."
+#: ../../include/zot.php:701
+msgid "Unable to verify channel signature"
+msgstr "No es pot verificar la signatura del canal"
-#: ../../include/follow.php:179
-msgid "Channel discovery failed."
-msgstr "Descobriment de canal fallit."
+#: ../../include/zot.php:2209
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr "No es pot verificar la signatura del lloc per %s"
-#: ../../include/follow.php:195
-msgid "local account not found."
-msgstr "compte local no trobat."
+#: ../../include/notify.php:23
+msgid "created a new post"
+msgstr "ha creat una nova entrada"
-#: ../../include/follow.php:224
-msgid "Cannot connect to yourself."
-msgstr "No pots connectar amb tu mateix."
+#: ../../include/notify.php:24
+#, php-format
+msgid "commented on %s's post"
+msgstr "ha comentat l'entrada de %s"
-#: ../../include/ItemObject.php:89 ../../include/conversation.php:667
+#: ../../include/ItemObject.php:89 ../../include/conversation.php:678
msgid "Private Message"
msgstr "Missatge Privat"
-#: ../../include/ItemObject.php:126 ../../include/conversation.php:659
+#: ../../include/ItemObject.php:126 ../../include/conversation.php:670
msgid "Select"
msgstr "Selecciona"
@@ -1831,58 +1081,58 @@ msgstr "Guardar en la Carpeta"
#: ../../include/ItemObject.php:151
msgid "I will attend"
-msgstr "Assistiré"
+msgstr "Hi seré"
#: ../../include/ItemObject.php:151
msgid "I will not attend"
-msgstr "No assistiré"
+msgstr "No hi seré"
#: ../../include/ItemObject.php:151
msgid "I might attend"
-msgstr "Podria assistir"
+msgstr "Potser hi sóc"
#: ../../include/ItemObject.php:161
msgid "I agree"
-msgstr "D'acord"
+msgstr "Hi estic a favor"
#: ../../include/ItemObject.php:161
msgid "I disagree"
-msgstr "En desacord"
+msgstr "Hi estic en contra"
#: ../../include/ItemObject.php:161
msgid "I abstain"
-msgstr "M'abstinc"
+msgstr "Voto en blanc"
#: ../../include/ItemObject.php:175 ../../include/ItemObject.php:187
-#: ../../include/conversation.php:1677 ../../mod/photos.php:1015
+#: ../../include/conversation.php:1688 ../../mod/photos.php:1015
#: ../../mod/photos.php:1027
msgid "View all"
-msgstr "Veure tot"
+msgstr "Mostra-ho tot"
-#: ../../include/ItemObject.php:179 ../../include/taxonomy.php:396
-#: ../../include/conversation.php:1701 ../../include/identity.php:1167
+#: ../../include/ItemObject.php:179 ../../include/conversation.php:1712
+#: ../../include/identity.php:1266 ../../include/taxonomy.php:396
#: ../../mod/photos.php:1019
msgctxt "noun"
msgid "Like"
msgid_plural "Likes"
-msgstr[0] "Agrada"
-msgstr[1] "Agraden"
+msgstr[0] "M'agrada"
+msgstr[1] "M'agrada"
-#: ../../include/ItemObject.php:184 ../../include/conversation.php:1704
+#: ../../include/ItemObject.php:184 ../../include/conversation.php:1715
#: ../../mod/photos.php:1024
msgctxt "noun"
msgid "Dislike"
msgid_plural "Dislikes"
-msgstr[0] "Desagrada"
-msgstr[1] "Desagrada"
+msgstr[0] "No m'agrada"
+msgstr[1] "No m'agrada"
#: ../../include/ItemObject.php:212
msgid "Add Star"
-msgstr "Fes-lo Preferit"
+msgstr "Marca'l com a preferit"
#: ../../include/ItemObject.php:213
msgid "Remove Star"
-msgstr "Treu-lo de Preferits"
+msgstr "Treu-lo de preferits"
#: ../../include/ItemObject.php:214
msgid "Toggle Star Status"
@@ -1892,11 +1142,11 @@ msgstr "Canvia el Estat de la Preferència"
msgid "starred"
msgstr "preferit"
-#: ../../include/ItemObject.php:227 ../../include/conversation.php:674
+#: ../../include/ItemObject.php:227 ../../include/conversation.php:685
msgid "Message signature validated"
msgstr "Validada la signatura del missatge"
-#: ../../include/ItemObject.php:228 ../../include/conversation.php:675
+#: ../../include/ItemObject.php:228 ../../include/conversation.php:686
msgid "Message signature incorrect"
msgstr "Signatura del missatge incorrecta"
@@ -1928,467 +1178,603 @@ msgstr "Comparteix Això"
msgid "share"
msgstr "comparteix"
-#: ../../include/ItemObject.php:276
+#: ../../include/ItemObject.php:277
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
msgstr[0] "%d commentari"
msgstr[1] "%d commentaris"
-#: ../../include/ItemObject.php:294 ../../include/ItemObject.php:295
+#: ../../include/ItemObject.php:295 ../../include/ItemObject.php:296
#, php-format
msgid "View %s's profile - %s"
msgstr "Veure %s de perfil - %s"
-#: ../../include/ItemObject.php:298
+#: ../../include/ItemObject.php:299
msgid "to"
msgstr "a"
-#: ../../include/ItemObject.php:299
+#: ../../include/ItemObject.php:300
msgid "via"
msgstr "via"
-#: ../../include/ItemObject.php:300
+#: ../../include/ItemObject.php:301
msgid "Wall-to-Wall"
msgstr "Mur-a-Mur"
-#: ../../include/ItemObject.php:301
+#: ../../include/ItemObject.php:302
msgid "via Wall-To-Wall:"
msgstr "via Mur-a-Mur:"
-#: ../../include/ItemObject.php:312 ../../include/conversation.php:716
+#: ../../include/ItemObject.php:313 ../../include/conversation.php:727
#, php-format
msgid "from %s"
msgstr "De %s"
-#: ../../include/ItemObject.php:315 ../../include/conversation.php:719
+#: ../../include/ItemObject.php:316 ../../include/conversation.php:730
#, php-format
msgid "last edited: %s"
msgstr "últim editat: %s"
-#: ../../include/ItemObject.php:316 ../../include/conversation.php:720
+#: ../../include/ItemObject.php:317 ../../include/conversation.php:731
#, php-format
msgid "Expires: %s"
msgstr "Expira: %s"
-#: ../../include/ItemObject.php:337
+#: ../../include/ItemObject.php:338
msgid "Save Bookmarks"
msgstr "Guarda Favorits"
-#: ../../include/ItemObject.php:338
+#: ../../include/ItemObject.php:339
msgid "Add to Calendar"
msgstr "Afegeix al Calendari"
-#: ../../include/ItemObject.php:347
+#: ../../include/ItemObject.php:348
msgid "Mark all seen"
msgstr "Marca tot com ja vist"
-#: ../../include/ItemObject.php:353 ../../mod/photos.php:1145
+#: ../../include/ItemObject.php:354 ../../mod/photos.php:1145
msgctxt "noun"
msgid "Likes"
-msgstr "Agrada"
+msgstr "M'agrada"
-#: ../../include/ItemObject.php:354 ../../mod/photos.php:1146
+#: ../../include/ItemObject.php:355 ../../mod/photos.php:1146
msgctxt "noun"
msgid "Dislikes"
-msgstr "Desagrada"
+msgstr "No m'agrada"
-#: ../../include/ItemObject.php:359 ../../include/acl_selectors.php:249
+#: ../../include/ItemObject.php:360 ../../include/acl_selectors.php:249
#: ../../mod/photos.php:1151
msgid "Close"
msgstr "Tanca"
-#: ../../include/ItemObject.php:364 ../../include/conversation.php:737
-#: ../../include/conversation.php:1209 ../../mod/editpost.php:123
-#: ../../mod/photos.php:962 ../../mod/editlayout.php:147
-#: ../../mod/editwebpage.php:192 ../../mod/editblock.php:149
-#: ../../mod/mail.php:241 ../../mod/mail.php:356
+#: ../../include/ItemObject.php:365 ../../include/conversation.php:748
+#: ../../include/conversation.php:1220 ../../mod/mail.php:241
+#: ../../mod/mail.php:356 ../../mod/photos.php:962 ../../mod/editblock.php:149
+#: ../../mod/editlayout.php:147 ../../mod/editpost.php:123
+#: ../../mod/editwebpage.php:192
msgid "Please wait"
msgstr "Si us plau, espera"
-#: ../../include/ItemObject.php:665 ../../mod/photos.php:978
+#: ../../include/ItemObject.php:385 ../../include/js_strings.php:7
+msgid "[+] show all"
+msgstr "[+] mostra-ho tot"
+
+#: ../../include/ItemObject.php:666 ../../mod/photos.php:978
#: ../../mod/photos.php:1096
msgid "This is you"
msgstr "Ets tú"
-#: ../../include/ItemObject.php:669 ../../include/conversation.php:1181
-#: ../../mod/editpost.php:107 ../../mod/editlayout.php:134
-#: ../../mod/editwebpage.php:179 ../../mod/editblock.php:135
+#: ../../include/ItemObject.php:668 ../../include/js_strings.php:6
+#: ../../mod/photos.php:980 ../../mod/photos.php:1098
+msgid "Comment"
+msgstr "Comentari"
+
+#: ../../include/ItemObject.php:669 ../../include/js_strings.php:22
+#: ../../mod/mail.php:355 ../../mod/admin.php:453 ../../mod/admin.php:819
+#: ../../mod/admin.php:986 ../../mod/admin.php:1118 ../../mod/admin.php:1312
+#: ../../mod/admin.php:1397 ../../mod/pconfig.php:108 ../../mod/pdledit.php:58
+#: ../../mod/appman.php:99 ../../mod/photos.php:577 ../../mod/photos.php:654
+#: ../../mod/photos.php:941 ../../mod/photos.php:981 ../../mod/photos.php:1099
+#: ../../mod/poke.php:166 ../../mod/bulksetclose.php:24 ../../mod/poll.php:68
+#: ../../mod/chat.php:177 ../../mod/chat.php:211 ../../mod/connect.php:93
+#: ../../mod/profiles.php:667 ../../mod/connedit.php:704
+#: ../../mod/rate.php:167 ../../mod/events.php:511 ../../mod/events.php:693
+#: ../../mod/filestorage.php:156 ../../mod/fsuggest.php:108
+#: ../../mod/group.php:81 ../../mod/import.php:592 ../../mod/invite.php:142
+#: ../../mod/settings.php:588 ../../mod/settings.php:692
+#: ../../mod/settings.php:718 ../../mod/settings.php:746
+#: ../../mod/settings.php:769 ../../mod/settings.php:854
+#: ../../mod/settings.php:1050 ../../mod/setup.php:327 ../../mod/setup.php:367
+#: ../../mod/locs.php:105 ../../mod/sources.php:104 ../../mod/sources.php:138
+#: ../../mod/mitem.php:235 ../../mod/mood.php:134 ../../mod/thing.php:303
+#: ../../mod/thing.php:346 ../../mod/xchan.php:11
+#: ../../view/theme/apw/php/config.php:256
+#: ../../view/theme/redbasic/php/config.php:99
+msgid "Submit"
+msgstr "Desa"
+
+#: ../../include/ItemObject.php:670 ../../include/conversation.php:1192
+#: ../../mod/editblock.php:135 ../../mod/editlayout.php:134
+#: ../../mod/editpost.php:107 ../../mod/editwebpage.php:179
msgid "Bold"
msgstr "Negreta"
-#: ../../include/ItemObject.php:670 ../../include/conversation.php:1182
-#: ../../mod/editpost.php:108 ../../mod/editlayout.php:135
-#: ../../mod/editwebpage.php:180 ../../mod/editblock.php:136
+#: ../../include/ItemObject.php:671 ../../include/conversation.php:1193
+#: ../../mod/editblock.php:136 ../../mod/editlayout.php:135
+#: ../../mod/editpost.php:108 ../../mod/editwebpage.php:180
msgid "Italic"
msgstr "Italica"
-#: ../../include/ItemObject.php:671 ../../include/conversation.php:1183
-#: ../../mod/editpost.php:109 ../../mod/editlayout.php:136
-#: ../../mod/editwebpage.php:181 ../../mod/editblock.php:137
+#: ../../include/ItemObject.php:672 ../../include/conversation.php:1194
+#: ../../mod/editblock.php:137 ../../mod/editlayout.php:136
+#: ../../mod/editpost.php:109 ../../mod/editwebpage.php:181
msgid "Underline"
msgstr "Subratllat"
-#: ../../include/ItemObject.php:672 ../../include/conversation.php:1184
-#: ../../mod/editpost.php:110 ../../mod/editlayout.php:137
-#: ../../mod/editwebpage.php:182 ../../mod/editblock.php:138
+#: ../../include/ItemObject.php:673 ../../include/conversation.php:1195
+#: ../../mod/editblock.php:138 ../../mod/editlayout.php:137
+#: ../../mod/editpost.php:110 ../../mod/editwebpage.php:182
msgid "Quote"
msgstr "Cometes"
-#: ../../include/ItemObject.php:673 ../../include/conversation.php:1185
-#: ../../mod/editpost.php:111 ../../mod/editlayout.php:138
-#: ../../mod/editwebpage.php:183 ../../mod/editblock.php:139
+#: ../../include/ItemObject.php:674 ../../include/conversation.php:1196
+#: ../../mod/editblock.php:139 ../../mod/editlayout.php:138
+#: ../../mod/editpost.php:111 ../../mod/editwebpage.php:183
msgid "Code"
msgstr "Codi"
-#: ../../include/ItemObject.php:674
+#: ../../include/ItemObject.php:675
msgid "Image"
msgstr "Imatge"
-#: ../../include/ItemObject.php:675
+#: ../../include/ItemObject.php:676
msgid "Insert Link"
msgstr "Insereix Enllaç"
-#: ../../include/ItemObject.php:676
+#: ../../include/ItemObject.php:677
msgid "Video"
msgstr "Video"
-#: ../../include/ItemObject.php:680 ../../include/conversation.php:1236
-#: ../../mod/editpost.php:151 ../../mod/mail.php:247 ../../mod/mail.php:361
+#: ../../include/ItemObject.php:678 ../../include/conversation.php:1166
+#: ../../include/page_widgets.php:40 ../../mod/photos.php:982
+#: ../../mod/editblock.php:170 ../../mod/editpost.php:143
+#: ../../mod/editwebpage.php:214 ../../mod/events.php:690
+#: ../../mod/webpages.php:188
+msgid "Preview"
+msgstr "Previsualitza"
+
+#: ../../include/ItemObject.php:681 ../../include/conversation.php:1247
+#: ../../mod/mail.php:247 ../../mod/mail.php:361 ../../mod/editpost.php:151
msgid "Encrypt text"
msgstr "Text encriptat"
-#: ../../include/Contact.php:124
-msgid "New window"
-msgstr "Nova finestra"
+#: ../../include/account.php:27
+msgid "Not a valid email address"
+msgstr "Adreça de correu electrònic no vàlida"
-#: ../../include/Contact.php:125
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Obrir la localització seleccionada en un altre finestra o pestanya del navegador"
+#: ../../include/account.php:29
+msgid "Your email domain is not among those allowed on this site"
+msgstr "El seu domini de correu electrònic no es troba entre els permesos en aquest lloc"
-#: ../../include/Contact.php:215 ../../mod/admin.php:739
-#, php-format
-msgid "User '%s' deleted"
-msgstr "usuari '%s' esborrat"
+#: ../../include/account.php:35
+msgid "Your email address is already registered at this site."
+msgstr "La teva adreça de correu electrònic ja esta registrada en aquest lloc"
-#: ../../include/bb2diaspora.php:373
-msgid "Attachments:"
-msgstr "Adjuntat:"
+#: ../../include/account.php:67
+msgid "An invitation is required."
+msgstr "Es requereix Invitació"
-#: ../../include/bb2diaspora.php:461
-msgid "$Projectname event notification:"
-msgstr "Notificació d'esdeveniment de $Projectname"
+#: ../../include/account.php:71
+msgid "Invitation could not be verified."
+msgstr "La invitació no ha pogut ser verificada"
-#: ../../include/nav.php:87 ../../include/nav.php:120 ../../boot.php:1550
-msgid "Logout"
-msgstr "Desconectar"
+#: ../../include/account.php:121
+msgid "Please enter the required information."
+msgstr "Entra la informació sol·licitada"
-#: ../../include/nav.php:87 ../../include/nav.php:120
-msgid "End this session"
-msgstr "Finalitza aquesta sessió"
+#: ../../include/account.php:188
+msgid "Failed to store account information."
+msgstr "No s'ha pogut desar la informació del compte"
-#: ../../include/nav.php:90 ../../include/nav.php:151
-msgid "Home"
-msgstr "Personal"
+#: ../../include/account.php:246
+#, php-format
+msgid "Registration confirmation for %s"
+msgstr "Confirmació del registre de %s"
-#: ../../include/nav.php:90
-msgid "Your posts and conversations"
-msgstr "Les teves entrades i converses"
+#: ../../include/account.php:312
+#, php-format
+msgid "Registration request at %s"
+msgstr "Sol·licitud de registre a %s"
-#: ../../include/nav.php:91 ../../include/conversation.php:942
-#: ../../mod/connedit.php:498
-msgid "View Profile"
-msgstr "Veure Perfil"
+#: ../../include/account.php:336
+msgid "your registration password"
+msgstr "la teva contrasenya registrada"
-#: ../../include/nav.php:91
-msgid "Your profile page"
-msgstr "La teva pàgina de perfil"
+#: ../../include/account.php:339 ../../include/account.php:399
+#, php-format
+msgid "Registration details for %s"
+msgstr "Detalls del registre per %s"
-#: ../../include/nav.php:93
-msgid "Edit Profiles"
-msgstr "Editar Perfils"
+#: ../../include/account.php:408
+msgid "Account approved."
+msgstr "Compte aprovat."
-#: ../../include/nav.php:93
-msgid "Manage/Edit profiles"
-msgstr "Gestiona/Edita perfils"
+#: ../../include/account.php:447
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "S'ha revocat el registre de %s"
-#: ../../include/nav.php:95 ../../include/identity.php:880
-msgid "Edit Profile"
-msgstr "Edita Perfil"
+#: ../../include/account.php:492
+msgid "Account verified. Please login."
+msgstr "S'ha verificat el compte. Inicia la sessió per continuar."
-#: ../../include/nav.php:95
-msgid "Edit your profile"
-msgstr "Edita el teu perfil"
+#: ../../include/account.php:705 ../../include/account.php:707
+msgid "Click here to upgrade."
+msgstr "Feu clic aquí per actualitzar."
-#: ../../include/nav.php:97 ../../include/conversation.php:1600
-#: ../../include/apps.php:139 ../../mod/fbrowser.php:25
-msgid "Photos"
-msgstr "Fotos"
+#: ../../include/account.php:713
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Aquesta acció sobrepassa els límits establerts pel seu pla de subscripció."
-#: ../../include/nav.php:97
-msgid "Your photos"
-msgstr "Les Teves Fotos"
+#: ../../include/account.php:718
+msgid "This action is not available under your subscription plan."
+msgstr "Aquesta acció no està disponible en el seu pla de subscripció."
-#: ../../include/nav.php:98
-msgid "Your files"
-msgstr "Els teus arxius"
+#: ../../include/oembed.php:183
+msgid "Embedded content"
+msgstr "Contingut embegut"
-#: ../../include/nav.php:103 ../../include/apps.php:146
-msgid "Chat"
-msgstr "Xerrar"
+#: ../../include/oembed.php:192
+msgid "Embedding disabled"
+msgstr "Incorporació desactivada"
-#: ../../include/nav.php:103
-msgid "Your chatrooms"
-msgstr "Les teves sales de xerrar"
+#: ../../include/acl_selectors.php:240
+msgid "Visible to your default audience"
+msgstr "Visible per a la teva audiència "
-#: ../../include/nav.php:109 ../../include/conversation.php:1635
-#: ../../include/apps.php:129
-msgid "Bookmarks"
-msgstr "Marcadors"
+#: ../../include/acl_selectors.php:241
+msgid "Show"
+msgstr "Mostra"
-#: ../../include/nav.php:109
-msgid "Your bookmarks"
-msgstr "Els teus marcadors"
+#: ../../include/acl_selectors.php:242
+msgid "Don't show"
+msgstr "No mostrar"
-#: ../../include/nav.php:113 ../../include/conversation.php:1645
-#: ../../include/apps.php:136 ../../mod/webpages.php:178
-msgid "Webpages"
-msgstr "Pàgines web"
+#: ../../include/acl_selectors.php:248 ../../mod/photos.php:571
+#: ../../mod/photos.php:934 ../../mod/chat.php:209 ../../mod/events.php:691
+#: ../../mod/filestorage.php:147
+msgid "Permissions"
+msgstr "Permisos "
-#: ../../include/nav.php:113
-msgid "Your webpages"
-msgstr "Les teves pàgines web"
+#: ../../include/activities.php:39
+msgid " and "
+msgstr "i"
-#: ../../include/nav.php:117 ../../include/apps.php:131 ../../boot.php:1551
-msgid "Login"
-msgstr "Identifica't"
+#: ../../include/activities.php:47
+msgid "public profile"
+msgstr "Perfil públic"
-#: ../../include/nav.php:117
-msgid "Sign in"
-msgstr "Signatura"
+#: ../../include/activities.php:56
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s canviat %2$s a &ldquo;%3$s&rdquo;"
-#: ../../include/nav.php:134
+#: ../../include/activities.php:57
#, php-format
-msgid "%s - click to logout"
-msgstr "%s - click per desconectar"
+msgid "Visit %1$s's %2$s"
+msgstr "Visita %1$s de %2$s"
-#: ../../include/nav.php:137
-msgid "Remote authentication"
-msgstr "Autenticació remota"
+#: ../../include/activities.php:60
+#, php-format
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s Ha actualitzat %2$s, canviant %3$s."
-#: ../../include/nav.php:137
-msgid "Click to authenticate to your home hub"
-msgstr "Click per autentificar-te en el teu Lloc "
+#: ../../include/api.php:1178
+msgid "Public Timeline"
+msgstr "Cronologia pública"
-#: ../../include/nav.php:151
-msgid "Home Page"
-msgstr "Pàgina Personal"
+#: ../../include/apps.php:128
+msgid "Site Admin"
+msgstr "Administració"
-#: ../../include/nav.php:155 ../../mod/register.php:224 ../../boot.php:1527
-msgid "Register"
-msgstr "Registre"
+#: ../../include/apps.php:130
+msgid "Address Book"
+msgstr "Adreçes"
-#: ../../include/nav.php:155
-msgid "Create an account"
-msgstr "Crear un compte"
+#: ../../include/apps.php:138 ../../include/identity.php:1240
+#: ../../include/identity.php:1357 ../../mod/profperm.php:112
+msgid "Profile"
+msgstr "Perfil"
-#: ../../include/nav.php:160 ../../include/apps.php:142 ../../mod/help.php:67
-#: ../../mod/help.php:72 ../../mod/layouts.php:176
-msgid "Help"
-msgstr "Ajuda"
+#: ../../include/apps.php:144 ../../mod/mood.php:130
+msgid "Mood"
+msgstr "Ànim"
-#: ../../include/nav.php:160
-msgid "Help and documentation"
-msgstr "Ajuda i documentació"
+#: ../../include/apps.php:145 ../../include/conversation.php:959
+msgid "Poke"
+msgstr "Emprenya"
-#: ../../include/nav.php:163
-msgid "Applications, utilities, links, games"
-msgstr "Aplicacions, utilitats, enllaços, jocs"
+#: ../../include/apps.php:148
+msgid "Probe"
+msgstr "Sondeig"
-#: ../../include/nav.php:165
-msgid "Search site content"
-msgstr "Cerca en el contingut del lloc"
+#: ../../include/apps.php:149
+msgid "Suggest"
+msgstr "Suggeriment"
-#: ../../include/nav.php:168 ../../include/apps.php:141
-msgid "Directory"
-msgstr "Directori"
+#: ../../include/apps.php:150
+msgid "Random Channel"
+msgstr "Canal Aleatori"
-#: ../../include/nav.php:168
-msgid "Channel Directory"
-msgstr "Directori de Canals"
+#: ../../include/apps.php:151
+msgid "Invite"
+msgstr "Convida"
-#: ../../include/nav.php:180 ../../include/apps.php:133
-msgid "Matrix"
-msgstr "Matriu/Matrix"
+#: ../../include/apps.php:152
+msgid "Features"
+msgstr "Funcionalitats"
-#: ../../include/nav.php:180
-msgid "Your matrix"
-msgstr "El teu matrix"
+#: ../../include/apps.php:153 ../../mod/id.php:28
+msgid "Language"
+msgstr "Idioma"
-#: ../../include/nav.php:181
-msgid "Mark all matrix notifications seen"
-msgstr "Marca totes les notificacions de matrix vistes"
+#: ../../include/apps.php:154
+msgid "Post"
+msgstr "Entrada"
-#: ../../include/nav.php:183 ../../include/apps.php:137
-msgid "Channel Home"
-msgstr "Canal Personal"
+#: ../../include/apps.php:155 ../../mod/id.php:17 ../../mod/id.php:18
+#: ../../mod/id.php:19
+msgid "Profile Photo"
+msgstr "Foto del Perfil"
-#: ../../include/nav.php:183
-msgid "Channel home"
-msgstr "Canal personal"
+#: ../../include/apps.php:247 ../../mod/settings.php:84
+#: ../../mod/settings.php:614
+msgid "Update"
+msgstr "Actualització"
-#: ../../include/nav.php:184
-msgid "Mark all channel notifications seen"
-msgstr "Marca totes les notificacions de canal vistes"
+#: ../../include/apps.php:247
+msgid "Install"
+msgstr "Instal·lar"
-#: ../../include/nav.php:187 ../../mod/connections.php:407
-msgid "Connections"
-msgstr "Connexions"
+#: ../../include/apps.php:252
+msgid "Purchase"
+msgstr "Compra"
-#: ../../include/nav.php:190
-msgid "Notices"
-msgstr "Noticies"
+#: ../../include/attach.php:137 ../../include/attach.php:184
+#: ../../include/attach.php:247 ../../include/attach.php:261
+#: ../../include/attach.php:305 ../../include/attach.php:319
+#: ../../include/attach.php:350 ../../include/attach.php:546
+#: ../../include/attach.php:618 ../../include/chat.php:131
+#: ../../include/items.php:4383 ../../include/photos.php:26
+#: ../../mod/mail.php:114 ../../mod/achievements.php:30 ../../mod/page.php:31
+#: ../../mod/page.php:86 ../../mod/api.php:26 ../../mod/api.php:31
+#: ../../mod/pdledit.php:21 ../../mod/appman.php:66 ../../mod/photos.php:69
+#: ../../mod/authtest.php:13 ../../mod/block.php:22 ../../mod/block.php:72
+#: ../../mod/blocks.php:69 ../../mod/blocks.php:76 ../../mod/poke.php:128
+#: ../../mod/bookmarks.php:46 ../../mod/manage.php:6 ../../mod/channel.php:100
+#: ../../mod/channel.php:219 ../../mod/channel.php:262 ../../mod/chat.php:90
+#: ../../mod/chat.php:95 ../../mod/profile.php:64 ../../mod/profile.php:72
+#: ../../mod/common.php:35 ../../mod/profile_photo.php:264
+#: ../../mod/profile_photo.php:277 ../../mod/notifications.php:66
+#: ../../mod/connections.php:29 ../../mod/profiles.php:188
+#: ../../mod/profiles.php:576 ../../mod/connedit.php:348
+#: ../../mod/editblock.php:65 ../../mod/editlayout.php:63
+#: ../../mod/editlayout.php:87 ../../mod/editpost.php:13
+#: ../../mod/editwebpage.php:64 ../../mod/editwebpage.php:86
+#: ../../mod/editwebpage.php:101 ../../mod/editwebpage.php:125
+#: ../../mod/rate.php:110 ../../mod/events.php:249
+#: ../../mod/filestorage.php:18 ../../mod/filestorage.php:73
+#: ../../mod/filestorage.php:88 ../../mod/filestorage.php:115
+#: ../../mod/register.php:72 ../../mod/fsuggest.php:78 ../../mod/regmod.php:17
+#: ../../mod/group.php:9 ../../mod/id.php:71 ../../mod/service_limits.php:7
+#: ../../mod/invite.php:13 ../../mod/invite.php:104 ../../mod/settings.php:570
+#: ../../mod/item.php:206 ../../mod/item.php:214 ../../mod/item.php:1005
+#: ../../mod/setup.php:223 ../../mod/layouts.php:69 ../../mod/layouts.php:76
+#: ../../mod/layouts.php:87 ../../mod/sharedwithme.php:7
+#: ../../mod/like.php:178 ../../mod/locs.php:77 ../../mod/sources.php:66
+#: ../../mod/menu.php:72 ../../mod/message.php:16 ../../mod/mitem.php:111
+#: ../../mod/mood.php:111 ../../mod/suggest.php:26 ../../mod/network.php:12
+#: ../../mod/new_channel.php:68 ../../mod/new_channel.php:99
+#: ../../mod/thing.php:269 ../../mod/thing.php:284 ../../mod/thing.php:318
+#: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27
+#: ../../mod/viewsrc.php:14 ../../mod/webpages.php:69 ../../index.php:186
+#: ../../index.php:397
+msgid "Permission denied."
+msgstr "Permís denegat."
-#: ../../include/nav.php:190
-msgid "Notifications"
-msgstr "Notificacions"
+#: ../../include/attach.php:242 ../../include/attach.php:300
+msgid "Item was not found."
+msgstr "Article no trobat."
-#: ../../include/nav.php:191
-msgid "See all notifications"
-msgstr "Veure totes les Notificacions"
+#: ../../include/attach.php:363
+msgid "No source file."
+msgstr "No hi ha arxiu d'origen."
-#: ../../include/nav.php:192 ../../mod/notifications.php:99
-msgid "Mark all system notifications seen"
-msgstr "Marca totes les notificacions vistes"
+#: ../../include/attach.php:381
+msgid "Cannot locate file to replace"
+msgstr "No trobo l'arxiu a reemplaçar"
-#: ../../include/nav.php:194 ../../include/apps.php:143
-msgid "Mail"
-msgstr "Correu"
+#: ../../include/attach.php:399
+msgid "Cannot locate file to revise/update"
+msgstr "No trobo l'arxiu a revisar/actualitzar"
-#: ../../include/nav.php:194
-msgid "Private mail"
-msgstr "Correu privat"
+#: ../../include/attach.php:410
+#, php-format
+msgid "File exceeds size limit of %d"
+msgstr "L'arxiu excedeix la mida limit de %d"
-#: ../../include/nav.php:195
-msgid "See all private messages"
-msgstr "Veure tots els missatges privats"
+#: ../../include/attach.php:422
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+msgstr "Has arribat al teu límit de %1$.0f Mbytes de emagatzematge d'adjunts."
-#: ../../include/nav.php:196
-msgid "Mark all private messages seen"
-msgstr "Marcar tots els missatges privats vistos"
+#: ../../include/attach.php:505
+msgid "File upload failed. Possible system limit or action terminated."
+msgstr "Pujada del arxiu fallida. Possible límit del sistema o acció interrompuda."
-#: ../../include/nav.php:197
-msgid "Inbox"
-msgstr "Safata d'entrada"
+#: ../../include/attach.php:517
+msgid "Stored file could not be verified. Upload failed."
+msgstr "L'arxiu guardat no es pot verificar. Pujada fallida."
-#: ../../include/nav.php:198
-msgid "Outbox"
-msgstr "Safata de sortida"
+#: ../../include/attach.php:561 ../../include/attach.php:578
+msgid "Path not available."
+msgstr "Trajectòria no disponible"
-#: ../../include/nav.php:202 ../../include/apps.php:140
-#: ../../mod/events.php:486
-msgid "Events"
-msgstr "Events"
+#: ../../include/attach.php:623
+msgid "Empty pathname"
+msgstr "Trajèctoria vuida."
-#: ../../include/nav.php:202
-msgid "Event Calendar"
-msgstr "Calendari d'Events"
+#: ../../include/attach.php:639
+msgid "duplicate filename or path"
+msgstr "Nom o trajectòria duplicat"
-#: ../../include/nav.php:203
-msgid "See all events"
-msgstr "Veure tots els events"
+#: ../../include/attach.php:663
+msgid "Path not found."
+msgstr "Trajectòria no trobada."
-#: ../../include/nav.php:204
-msgid "Mark all events seen"
-msgstr "Marcar tots els events vistos"
+#: ../../include/attach.php:714
+msgid "mkdir failed."
+msgstr "mkdir va fracassar."
-#: ../../include/nav.php:206 ../../include/apps.php:132
-#: ../../mod/manage.php:166
-msgid "Channel Manager"
-msgstr "Gestor del Canal"
+#: ../../include/attach.php:718
+msgid "database storage failed."
+msgstr "Arxiu de base de dades va fallar."
-#: ../../include/nav.php:206
-msgid "Manage Your Channels"
-msgstr "Gestiona els Teus Canals"
+#: ../../include/auth.php:131
+msgid "Logged out."
+msgstr "Sortir."
-#: ../../include/nav.php:208
-msgid "Account/Channel Settings"
-msgstr "Ajustos de Compte/Canal"
+#: ../../include/auth.php:272
+msgid "Failed authentication"
+msgstr "Autenticació fallida"
-#: ../../include/nav.php:216 ../../mod/admin.php:120
-msgid "Admin"
-msgstr "Admin"
+#: ../../include/auth.php:286 ../../mod/openid.php:190
+msgid "Login failed."
+msgstr "Identificació fallida."
-#: ../../include/nav.php:216
-msgid "Site Setup and Configuration"
-msgstr "Ajustos i Configuració del Lloc"
+#: ../../include/bb2diaspora.php:373
+msgid "Attachments:"
+msgstr "Adjuntat:"
-#: ../../include/nav.php:247 ../../include/conversation.php:850
-msgid "Loading..."
-msgstr "Carregant..."
+#: ../../include/bb2diaspora.php:459 ../../include/event.php:22
+msgid "l F d, Y \\@ g:i A"
+msgstr "l F d, Y \\@ g:i A"
-#: ../../include/nav.php:252
-msgid "@name, #tag, content"
-msgstr "@name, #tag, content"
+#: ../../include/bb2diaspora.php:461
+msgid "$Projectname event notification:"
+msgstr "Notificació d'esdeveniment de $Projectname"
-#: ../../include/nav.php:253
-msgid "Please wait..."
-msgstr "Si us plau, espera......."
+#: ../../include/bb2diaspora.php:465 ../../include/event.php:30
+msgid "Starts:"
+msgstr "Comença:"
-#: ../../include/taxonomy.php:222 ../../include/taxonomy.php:243
-msgid "Tags"
-msgstr "Etiquetes"
+#: ../../include/bb2diaspora.php:473 ../../include/event.php:40
+msgid "Finishes:"
+msgstr "Acaba:"
-#: ../../include/taxonomy.php:287
-msgid "Keywords"
-msgstr "Paraules clau"
+#: ../../include/bb2diaspora.php:481 ../../include/event.php:50
+#: ../../include/identity.php:1007 ../../mod/directory.php:302
+#: ../../mod/events.php:684
+msgid "Location:"
+msgstr "Lloc:"
-#: ../../include/taxonomy.php:308
-msgid "have"
-msgstr "tinc"
+#: ../../include/bbcode.php:122 ../../include/bbcode.php:768
+#: ../../include/bbcode.php:771 ../../include/bbcode.php:776
+#: ../../include/bbcode.php:779 ../../include/bbcode.php:782
+#: ../../include/bbcode.php:785 ../../include/bbcode.php:790
+#: ../../include/bbcode.php:793 ../../include/bbcode.php:798
+#: ../../include/bbcode.php:801 ../../include/bbcode.php:804
+#: ../../include/bbcode.php:807
+msgid "Image/photo"
+msgstr "Imatge/foto"
-#: ../../include/taxonomy.php:308
-msgid "has"
-msgstr "tens"
+#: ../../include/bbcode.php:161 ../../include/bbcode.php:818
+msgid "Encrypted content"
+msgstr "Contingut encriptat"
-#: ../../include/taxonomy.php:309
-msgid "want"
-msgstr "vull"
+#: ../../include/bbcode.php:178
+#, php-format
+msgid "Install %s element: "
+msgstr "Instal·la l'element %s:"
-#: ../../include/taxonomy.php:309
-msgid "wants"
-msgstr "vols"
+#: ../../include/bbcode.php:182
+#, php-format
+msgid ""
+"This post contains an installable %s element, however you lack permissions "
+"to install it on this site."
+msgstr "Aquesta entrada contè un element %s instal·lable, potser manques de permissos per instal·lar-lo en aquest lloc."
-#: ../../include/taxonomy.php:310
-msgid "likes"
-msgstr "agrada"
+#: ../../include/bbcode.php:192 ../../mod/impel.php:37
+msgid "webpage"
+msgstr "pàgina web"
-#: ../../include/taxonomy.php:311
-msgid "dislikes"
-msgstr "desagrada"
+#: ../../include/bbcode.php:195 ../../mod/impel.php:47
+msgid "layout"
+msgstr "disseny"
-#: ../../include/activities.php:39
-msgid " and "
-msgstr "i"
+#: ../../include/bbcode.php:198 ../../mod/impel.php:42
+msgid "block"
+msgstr "bloc"
-#: ../../include/activities.php:47
-msgid "public profile"
-msgstr "Perfil públic"
+#: ../../include/bbcode.php:201 ../../mod/impel.php:54
+msgid "menu"
+msgstr "menú"
-#: ../../include/activities.php:56
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s canviat %2$s a &ldquo;%3$s&rdquo;"
+#: ../../include/bbcode.php:215
+msgid "QR code"
+msgstr "QR code"
-#: ../../include/activities.php:57
+#: ../../include/bbcode.php:266
#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Visita %1$s de %2$s"
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s va escriure la següent %2$s %3$s"
-#: ../../include/activities.php:60
+#: ../../include/bbcode.php:268 ../../mod/tagger.php:51
+msgid "post"
+msgstr "entrada"
+
+#: ../../include/bbcode.php:518
+msgid "Different viewers will see this text differently"
+msgstr "Diferents observadors veuran aquest text de diferents formes"
+
+#: ../../include/bbcode.php:729
+msgid "$1 spoiler"
+msgstr "$1 spoiler"
+
+#: ../../include/bbcode.php:756
+msgid "$1 wrote:"
+msgstr "$1 va escriure:"
+
+#: ../../include/bookmarks.php:35
#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s Ha actualitzat %2$s, canviant %3$s."
+msgid "%1$s's bookmarks"
+msgstr "Marcadors de %1$s"
+
+#: ../../include/chat.php:23
+msgid "Missing room name"
+msgstr "Perdut el nom de la sala"
+
+#: ../../include/chat.php:32
+msgid "Duplicate room name"
+msgstr "Nom de la sala duplicat"
+
+#: ../../include/chat.php:82 ../../include/chat.php:90
+msgid "Invalid room specifier."
+msgstr "Especificació de la sala invàlida."
+
+#: ../../include/chat.php:120
+msgid "Room not found."
+msgstr "Sala no trobada."
+
+#: ../../include/chat.php:141
+msgid "Room is full"
+msgstr "La sala es plena"
+
+#: ../../include/comanche.php:34 ../../mod/admin.php:390
+#: ../../view/theme/apw/php/config.php:185
+msgid "Default"
+msgstr "Predeterminat"
#: ../../include/security.php:349
msgid ""
@@ -2396,149 +1782,143 @@ msgid ""
"form has been opened for too long (>3 hours) before submitting it."
msgstr "El formulario de la cadena de seguridad no era correcto. Esto probablemente ocurrió porque el formulario se ha abierto durante demasiado tiempo (> 3 horas) antes de enviarlo."
-#: ../../include/permissions.php:26
-msgid "Can view my normal stream and posts"
-msgstr "Pot veure el flux i entrades normals"
-
-#: ../../include/permissions.php:27
-msgid "Can view my default channel profile"
-msgstr "Pot veure el meu perfil del canal per defecte"
-
-#: ../../include/permissions.php:28
-msgid "Can view my photo albums"
-msgstr "Pot veure el meus àlbums de fotos"
-
-#: ../../include/permissions.php:29
-msgid "Can view my connections"
-msgstr "Pot veure les meves connexions"
-
-#: ../../include/permissions.php:30
-msgid "Can view my file storage"
-msgstr "Pot veure al meu magatzem d'arxius"
+#: ../../include/contact_selectors.php:56
+msgid "Frequently"
+msgstr "Sovint"
-#: ../../include/permissions.php:31
-msgid "Can view my webpages"
-msgstr "Pot veure les meves pàgines web"
+#: ../../include/contact_selectors.php:57
+msgid "Hourly"
+msgstr "Cada hora"
-#: ../../include/permissions.php:34
-msgid "Can send me their channel stream and posts"
-msgstr "Pot enviar-me el flux i entrades del seu canal"
+#: ../../include/contact_selectors.php:58
+msgid "Twice daily"
+msgstr "Dos cops al dia"
-#: ../../include/permissions.php:35
-msgid "Can post on my channel page (\"wall\")"
-msgstr "Pot fer entrades a la meva pàgina de canal (\"mur\")"
+#: ../../include/contact_selectors.php:59
+msgid "Daily"
+msgstr "Diàriament"
-#: ../../include/permissions.php:36
-msgid "Can comment on or like my posts"
-msgstr "Pot fer comentaris o dir si agrada en les meves entrades"
+#: ../../include/contact_selectors.php:60
+msgid "Weekly"
+msgstr "Setmanalment"
-#: ../../include/permissions.php:37
-msgid "Can send me private mail messages"
-msgstr "Pot enviar-me un missatge de correu privat"
+#: ../../include/contact_selectors.php:61
+msgid "Monthly"
+msgstr "Mensualment"
-#: ../../include/permissions.php:38
-msgid "Can post photos to my photo albums"
-msgstr "Pot enviar fotos al meus àlbums de fotos"
+#: ../../include/contact_selectors.php:76
+msgid "Friendica"
+msgstr "Friendica"
-#: ../../include/permissions.php:39
-msgid "Can like/dislike stuff"
-msgstr "Pot dir si agrada/desagrada "
+#: ../../include/contact_selectors.php:77
+msgid "OStatus"
+msgstr "OStatus"
-#: ../../include/permissions.php:39
-msgid "Profiles and things other than posts/comments"
-msgstr "Perfils i altres coses a més d'entrades/comentaris"
+#: ../../include/contact_selectors.php:78
+msgid "RSS/Atom"
+msgstr "RSS/Atom"
-#: ../../include/permissions.php:41
-msgid "Can forward to all my channel contacts via post @mentions"
-msgstr "Ho pot enviar a tots els meus contactes del canal via entrades @mencions"
+#: ../../include/contact_selectors.php:79 ../../mod/admin.php:822
+#: ../../mod/admin.php:831 ../../mod/id.php:15 ../../mod/id.php:16
+#: ../../boot.php:1553
+msgid "Email"
+msgstr "Correu electrònic"
-#: ../../include/permissions.php:41
-msgid "Advanced - useful for creating group forum channels"
-msgstr "Avançat - capaç de crear canals de grups de foro"
+#: ../../include/contact_selectors.php:80
+msgid "Diaspora"
+msgstr "Diaspora"
-#: ../../include/permissions.php:42
-msgid "Can chat with me (when available)"
-msgstr "Pot xatejar amb mi (si estic disponible)"
+#: ../../include/contact_selectors.php:81
+msgid "Facebook"
+msgstr "Facebook"
-#: ../../include/permissions.php:43
-msgid "Can write to my file storage"
-msgstr "Pot escriure al meu magatzem d'arxius"
+#: ../../include/contact_selectors.php:82
+msgid "Zot!"
+msgstr "Zot!"
-#: ../../include/permissions.php:44
-msgid "Can edit my webpages"
-msgstr "Pot editar les meves pàgines web"
+#: ../../include/contact_selectors.php:83
+msgid "LinkedIn"
+msgstr "LinkedIn"
-#: ../../include/permissions.php:46
-msgid "Can source my public posts in derived channels"
-msgstr "Pot mostrar l'origen de les meves entrades públiques en altres canals"
+#: ../../include/contact_selectors.php:84
+msgid "XMPP/IM"
+msgstr "XMPP/IM"
-#: ../../include/permissions.php:46
-msgid "Somewhat advanced - very useful in open communities"
-msgstr "Quelcom avançat - molt útil en comunitats obertes"
+#: ../../include/contact_selectors.php:85
+msgid "MySpace"
+msgstr "MySpace"
-#: ../../include/permissions.php:48
-msgid "Can administer my channel resources"
-msgstr "Pot administrar els meus recursos del canal"
+#: ../../include/contact_widgets.php:14
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "%d invitació disponible"
+msgstr[1] "%d invitacions disponibles"
-#: ../../include/permissions.php:48
-msgid ""
-"Extremely advanced. Leave this alone unless you know what you are doing"
-msgstr "Extremadament avançat. No toquis res si no saps que estàs fent"
+#: ../../include/contact_widgets.php:19 ../../mod/admin.php:457
+msgid "Advanced"
+msgstr "Avançat"
-#: ../../include/permissions.php:893
-msgid "Social Networking"
-msgstr "Xarxes Socials"
+#: ../../include/contact_widgets.php:22
+msgid "Find Channels"
+msgstr "Troba Canals"
-#: ../../include/permissions.php:893 ../../include/permissions.php:894
-#: ../../include/permissions.php:895
-msgid "Mostly Public"
-msgstr "Més aviat Públic"
+#: ../../include/contact_widgets.php:23
+msgid "Enter name or interest"
+msgstr "Entra un nom o interes"
-#: ../../include/permissions.php:893 ../../include/permissions.php:894
-#: ../../include/permissions.php:895
-msgid "Restricted"
-msgstr "Restringit"
+#: ../../include/contact_widgets.php:24
+msgid "Connect/Follow"
+msgstr "Conecta/Segueix"
-#: ../../include/permissions.php:893 ../../include/permissions.php:894
-msgid "Private"
-msgstr "Privat"
+#: ../../include/contact_widgets.php:25
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "Exemples: Lionel Messi, Futbolista"
-#: ../../include/permissions.php:894
-msgid "Community Forum"
-msgstr "Foro de Comunitat"
+#: ../../include/contact_widgets.php:26 ../../mod/connections.php:273
+#: ../../mod/directory.php:379 ../../mod/directory.php:384
+msgid "Find"
+msgstr "Troba"
-#: ../../include/permissions.php:895
-msgid "Feed Republish"
-msgstr "Republicador"
+#: ../../include/contact_widgets.php:27 ../../mod/directory.php:383
+#: ../../mod/suggest.php:60
+msgid "Channel Suggestions"
+msgstr "Canals Suggerits"
-#: ../../include/permissions.php:896
-msgid "Special Purpose"
-msgstr "Objectiu Especial"
+#: ../../include/contact_widgets.php:29
+msgid "Random Profile"
+msgstr "Perfil Aleatori"
-#: ../../include/permissions.php:896
-msgid "Celebrity/Soapbox"
-msgstr "Celebritat/Faristol"
+#: ../../include/contact_widgets.php:30
+msgid "Invite Friends"
+msgstr "Convida Amics"
-#: ../../include/permissions.php:896
-msgid "Group Repository"
-msgstr "Repositori de Grup"
+#: ../../include/contact_widgets.php:32
+msgid "Advanced example: name=fred and country=iceland"
+msgstr "Exemple avançat: nom=pep i pais=eire"
-#: ../../include/permissions.php:897 ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
-#: ../../include/profile_selectors.php:61
-#: ../../include/profile_selectors.php:97
-msgid "Other"
-msgstr "Altres"
+#: ../../include/contact_widgets.php:125
+#, php-format
+msgid "%d connection in common"
+msgid_plural "%d connections in common"
+msgstr[0] "%d connexió en comú"
+msgstr[1] "%d connexions en comú"
-#: ../../include/permissions.php:897
-msgid "Custom/Expert Mode"
-msgstr "Personalitzat/Mode Expert"
+#: ../../include/contact_widgets.php:130
+msgid "show more"
+msgstr "mostrar més"
#: ../../include/conversation.php:126 ../../mod/like.php:113
msgid "channel"
msgstr "canal"
-#: ../../include/conversation.php:167 ../../mod/like.php:396
+#: ../../include/conversation.php:164 ../../include/diaspora.php:2152
+#: ../../mod/like.php:397
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "A %1$s li agrada %3$s de %2$s"
+
+#: ../../include/conversation.php:167 ../../mod/like.php:399
#, php-format
msgid "%1$s doesn't like %2$s's %3$s"
msgstr "%1$s no agrada %2$s de %3$s"
@@ -2559,731 +1939,1095 @@ msgctxt "mood"
msgid "%1$s is %2$s"
msgstr "%1$s es %2$s"
-#: ../../include/conversation.php:572 ../../mod/photos.php:996
+#: ../../include/conversation.php:583 ../../mod/photos.php:996
msgctxt "title"
msgid "Likes"
-msgstr "Agrada"
+msgstr "M'agrada"
-#: ../../include/conversation.php:572 ../../mod/photos.php:996
+#: ../../include/conversation.php:583 ../../mod/photos.php:996
msgctxt "title"
msgid "Dislikes"
-msgstr "Desagrada"
+msgstr "No m'agrada"
-#: ../../include/conversation.php:573 ../../mod/photos.php:997
+#: ../../include/conversation.php:584 ../../mod/photos.php:997
msgctxt "title"
msgid "Agree"
-msgstr "Acord"
+msgstr "A favor"
-#: ../../include/conversation.php:573 ../../mod/photos.php:997
+#: ../../include/conversation.php:584 ../../mod/photos.php:997
msgctxt "title"
msgid "Disagree"
-msgstr "Desacord"
+msgstr "En contra"
-#: ../../include/conversation.php:573 ../../mod/photos.php:997
+#: ../../include/conversation.php:584 ../../mod/photos.php:997
msgctxt "title"
msgid "Abstain"
-msgstr "Abstenirse"
+msgstr "En blanc"
-#: ../../include/conversation.php:574 ../../mod/photos.php:998
+#: ../../include/conversation.php:585 ../../mod/photos.php:998
msgctxt "title"
msgid "Attending"
msgstr "Assistint"
-#: ../../include/conversation.php:574 ../../mod/photos.php:998
+#: ../../include/conversation.php:585 ../../mod/photos.php:998
msgctxt "title"
msgid "Not attending"
msgstr "Desassistint"
-#: ../../include/conversation.php:574 ../../mod/photos.php:998
+#: ../../include/conversation.php:585 ../../mod/photos.php:998
msgctxt "title"
msgid "Might attend"
msgstr "Podrien assistir"
-#: ../../include/conversation.php:692
+#: ../../include/conversation.php:703
#, php-format
msgid "View %s's profile @ %s"
msgstr "Vista %s del perfil @ %s"
-#: ../../include/conversation.php:707
+#: ../../include/conversation.php:718
msgid "Categories:"
msgstr "Categories:"
-#: ../../include/conversation.php:708
+#: ../../include/conversation.php:719
msgid "Filed under:"
msgstr "Arxivar a:"
-#: ../../include/conversation.php:735
+#: ../../include/conversation.php:746
msgid "View in context"
msgstr "Veure en context"
-#: ../../include/conversation.php:846
+#: ../../include/conversation.php:857
msgid "remove"
msgstr "treu"
-#: ../../include/conversation.php:851
+#: ../../include/conversation.php:862
msgid "Delete Selected Items"
msgstr "Esborra els Articles Seleccionats"
-#: ../../include/conversation.php:939
+#: ../../include/conversation.php:950
msgid "View Source"
msgstr "Veure l'Origen"
-#: ../../include/conversation.php:940
+#: ../../include/conversation.php:951
msgid "Follow Thread"
msgstr "Segueix el Fil"
-#: ../../include/conversation.php:941
+#: ../../include/conversation.php:952
msgid "View Status"
msgstr "Veure Status"
-#: ../../include/conversation.php:943
+#: ../../include/conversation.php:954
msgid "View Photos"
msgstr "Veure Fotos"
-#: ../../include/conversation.php:944
+#: ../../include/conversation.php:955
msgid "Matrix Activity"
msgstr "Activitat de Matrix"
-#: ../../include/conversation.php:946
+#: ../../include/conversation.php:957
msgid "Edit Contact"
msgstr "Editar Contacte"
-#: ../../include/conversation.php:947
+#: ../../include/conversation.php:958
msgid "Send PM"
msgstr "Enviar MP"
-#: ../../include/conversation.php:948 ../../include/apps.php:145
-msgid "Poke"
-msgstr "Emprenya"
-
-#: ../../include/conversation.php:1062
+#: ../../include/conversation.php:1073
#, php-format
msgid "%s likes this."
-msgstr "%s agrada això."
+msgstr "A %s li agrada això."
-#: ../../include/conversation.php:1062
+#: ../../include/conversation.php:1073
#, php-format
msgid "%s doesn't like this."
msgstr "%s no agrada això."
-#: ../../include/conversation.php:1066
+#: ../../include/conversation.php:1077
#, php-format
msgid "<span %1$s>%2$d people</span> like this."
msgid_plural "<span %1$s>%2$d people</span> like this."
msgstr[0] "<span %1$s>%2$d gent</span> agrada això."
msgstr[1] "<span %1$s>%2$d gent</span> agrada això."
-#: ../../include/conversation.php:1068
+#: ../../include/conversation.php:1079
#, php-format
msgid "<span %1$s>%2$d people</span> don't like this."
msgid_plural "<span %1$s>%2$d people</span> don't like this."
msgstr[0] "<span %1$s>%2$d gent</span> no agrada això."
msgstr[1] "<span %1$s>%2$d gent</span> no agrada això."
-#: ../../include/conversation.php:1074
+#: ../../include/conversation.php:1085
msgid "and"
msgstr "i"
-#: ../../include/conversation.php:1077
+#: ../../include/conversation.php:1088
#, php-format
msgid ", and %d other people"
msgid_plural ", and %d other people"
msgstr[0] ", i %d altra gent"
msgstr[1] ", i %d altra gent"
-#: ../../include/conversation.php:1078
+#: ../../include/conversation.php:1089
#, php-format
msgid "%s like this."
msgstr "%s agrada això."
-#: ../../include/conversation.php:1078
+#: ../../include/conversation.php:1089
#, php-format
msgid "%s don't like this."
msgstr "%s no agrada això."
-#: ../../include/conversation.php:1140
+#: ../../include/conversation.php:1151
msgid "Visible to <strong>everybody</strong>"
msgstr "Visible a <strong>tothom</strong>"
-#: ../../include/conversation.php:1141 ../../mod/mail.php:174
+#: ../../include/conversation.php:1152 ../../mod/mail.php:174
#: ../../mod/mail.php:289
msgid "Please enter a link URL:"
msgstr "Si us plau entra l'enllaç URL:"
-#: ../../include/conversation.php:1142
+#: ../../include/conversation.php:1153
msgid "Please enter a video link/URL:"
msgstr "Si us plau entra l'enllaç/URL a un video:"
-#: ../../include/conversation.php:1143
+#: ../../include/conversation.php:1154
msgid "Please enter an audio link/URL:"
msgstr "Si us plau, entra l'enllaç/URL a un audio:"
-#: ../../include/conversation.php:1144
+#: ../../include/conversation.php:1155
msgid "Tag term:"
msgstr "Paraula de l'Etiqueta:"
-#: ../../include/conversation.php:1145 ../../mod/filer.php:49
+#: ../../include/conversation.php:1156 ../../mod/filer.php:49
msgid "Save to Folder:"
msgstr "Guardar en la Carpeta"
-#: ../../include/conversation.php:1146
+#: ../../include/conversation.php:1157
msgid "Where are you right now?"
msgstr "On ets ara?"
-#: ../../include/conversation.php:1147 ../../mod/editpost.php:47
-#: ../../mod/mail.php:175 ../../mod/mail.php:290
+#: ../../include/conversation.php:1158 ../../mod/mail.php:175
+#: ../../mod/mail.php:290 ../../mod/editpost.php:47
msgid "Expires YYYY-MM-DD HH:MM"
msgstr "Expira YYYY-MM-DD HH:MM"
-#: ../../include/conversation.php:1174 ../../mod/webpages.php:182
-#: ../../mod/blocks.php:154 ../../mod/photos.php:961 ../../mod/layouts.php:184
+#: ../../include/conversation.php:1185 ../../mod/photos.php:961
+#: ../../mod/blocks.php:154 ../../mod/layouts.php:184
+#: ../../mod/webpages.php:182
msgid "Share"
msgstr "Compartir"
-#: ../../include/conversation.php:1176
+#: ../../include/conversation.php:1187
msgid "Page link name"
msgstr "Nom de la pàgina enllaçada"
-#: ../../include/conversation.php:1179
+#: ../../include/conversation.php:1190
msgid "Post as"
msgstr "Envia com"
-#: ../../include/conversation.php:1186 ../../mod/editpost.php:112
-#: ../../mod/editlayout.php:139 ../../mod/editwebpage.php:184
-#: ../../mod/editblock.php:141 ../../mod/mail.php:238 ../../mod/mail.php:352
+#: ../../include/conversation.php:1197 ../../mod/mail.php:238
+#: ../../mod/mail.php:352 ../../mod/editblock.php:141
+#: ../../mod/editlayout.php:139 ../../mod/editpost.php:112
+#: ../../mod/editwebpage.php:184
msgid "Upload photo"
msgstr "Puja foto"
-#: ../../include/conversation.php:1187
+#: ../../include/conversation.php:1198
msgid "upload photo"
msgstr "puja foto"
-#: ../../include/conversation.php:1188 ../../mod/editpost.php:113
-#: ../../mod/editlayout.php:140 ../../mod/editwebpage.php:185
-#: ../../mod/editblock.php:142 ../../mod/mail.php:239 ../../mod/mail.php:353
+#: ../../include/conversation.php:1199 ../../mod/mail.php:239
+#: ../../mod/mail.php:353 ../../mod/editblock.php:142
+#: ../../mod/editlayout.php:140 ../../mod/editpost.php:113
+#: ../../mod/editwebpage.php:185
msgid "Attach file"
msgstr "Adjunta arxiu"
-#: ../../include/conversation.php:1189
+#: ../../include/conversation.php:1200
msgid "attach file"
msgstr "adjunta arxiu"
-#: ../../include/conversation.php:1190 ../../mod/editpost.php:114
-#: ../../mod/editlayout.php:141 ../../mod/editwebpage.php:186
-#: ../../mod/editblock.php:143 ../../mod/mail.php:240 ../../mod/mail.php:354
+#: ../../include/conversation.php:1201 ../../mod/mail.php:240
+#: ../../mod/mail.php:354 ../../mod/editblock.php:143
+#: ../../mod/editlayout.php:141 ../../mod/editpost.php:114
+#: ../../mod/editwebpage.php:186
msgid "Insert web link"
msgstr "Insereix enllaç web"
-#: ../../include/conversation.php:1191
+#: ../../include/conversation.php:1202
msgid "web link"
msgstr "enllaç web"
-#: ../../include/conversation.php:1192
+#: ../../include/conversation.php:1203
msgid "Insert video link"
msgstr "Insereix enllaç video"
-#: ../../include/conversation.php:1193
+#: ../../include/conversation.php:1204
msgid "video link"
msgstr "enllaç video"
-#: ../../include/conversation.php:1194
+#: ../../include/conversation.php:1205
msgid "Insert audio link"
msgstr "Insereix enllaç d'audio"
-#: ../../include/conversation.php:1195
+#: ../../include/conversation.php:1206
msgid "audio link"
msgstr "enllaç d'audio"
-#: ../../include/conversation.php:1196 ../../mod/editpost.php:118
-#: ../../mod/editlayout.php:145 ../../mod/editwebpage.php:190
-#: ../../mod/editblock.php:147
+#: ../../include/conversation.php:1207 ../../mod/editblock.php:147
+#: ../../mod/editlayout.php:145 ../../mod/editpost.php:118
+#: ../../mod/editwebpage.php:190
msgid "Set your location"
msgstr "Ajusta la teva ubicació"
-#: ../../include/conversation.php:1197
+#: ../../include/conversation.php:1208
msgid "set location"
msgstr "ajusta localització"
-#: ../../include/conversation.php:1198 ../../mod/editpost.php:120
+#: ../../include/conversation.php:1209 ../../mod/editpost.php:120
msgid "Toggle voting"
msgstr "Commutar votació"
-#: ../../include/conversation.php:1201 ../../mod/editpost.php:119
-#: ../../mod/editlayout.php:146 ../../mod/editwebpage.php:191
-#: ../../mod/editblock.php:148
+#: ../../include/conversation.php:1212 ../../mod/editblock.php:148
+#: ../../mod/editlayout.php:146 ../../mod/editpost.php:119
+#: ../../mod/editwebpage.php:191
msgid "Clear browser location"
msgstr "Treu la localització del navegador"
-#: ../../include/conversation.php:1202
+#: ../../include/conversation.php:1213
msgid "clear location"
msgstr "treu localització"
-#: ../../include/conversation.php:1204 ../../mod/editpost.php:135
-#: ../../mod/editwebpage.php:207 ../../mod/editblock.php:161
+#: ../../include/conversation.php:1215 ../../mod/editblock.php:161
+#: ../../mod/editpost.php:135 ../../mod/editwebpage.php:207
msgid "Title (optional)"
msgstr "Títol (opcional)"
-#: ../../include/conversation.php:1208 ../../mod/editpost.php:137
-#: ../../mod/editlayout.php:162 ../../mod/editwebpage.php:209
-#: ../../mod/editblock.php:164
+#: ../../include/conversation.php:1219 ../../mod/editblock.php:164
+#: ../../mod/editlayout.php:162 ../../mod/editpost.php:137
+#: ../../mod/editwebpage.php:209
msgid "Categories (optional, comma-separated list)"
msgstr "Categories (opcional, llista separada per comes)"
-#: ../../include/conversation.php:1210 ../../mod/editpost.php:124
-#: ../../mod/editlayout.php:148 ../../mod/editwebpage.php:193
-#: ../../mod/editblock.php:150
+#: ../../include/conversation.php:1221 ../../mod/editblock.php:150
+#: ../../mod/editlayout.php:148 ../../mod/editpost.php:124
+#: ../../mod/editwebpage.php:193
msgid "Permission settings"
msgstr "Ajustos de permisos"
-#: ../../include/conversation.php:1211
+#: ../../include/conversation.php:1222
msgid "permissions"
msgstr "permisos "
-#: ../../include/conversation.php:1219 ../../mod/editpost.php:132
-#: ../../mod/editlayout.php:155 ../../mod/editwebpage.php:202
-#: ../../mod/editblock.php:158
+#: ../../include/conversation.php:1230 ../../mod/editblock.php:158
+#: ../../mod/editlayout.php:155 ../../mod/editpost.php:132
+#: ../../mod/editwebpage.php:202
msgid "Public post"
msgstr "Entrada pública"
-#: ../../include/conversation.php:1221 ../../mod/editpost.php:138
-#: ../../mod/editlayout.php:163 ../../mod/editwebpage.php:210
-#: ../../mod/editblock.php:165
+#: ../../include/conversation.php:1232 ../../mod/editblock.php:165
+#: ../../mod/editlayout.php:163 ../../mod/editpost.php:138
+#: ../../mod/editwebpage.php:210
msgid "Example: bob@example.com, mary@example.com"
msgstr "Exemple: bob@example.com, mary@example.com"
-#: ../../include/conversation.php:1234 ../../mod/editpost.php:149
-#: ../../mod/editlayout.php:172 ../../mod/editwebpage.php:219
-#: ../../mod/editblock.php:175 ../../mod/mail.php:245 ../../mod/mail.php:359
+#: ../../include/conversation.php:1245 ../../mod/mail.php:245
+#: ../../mod/mail.php:359 ../../mod/editblock.php:175
+#: ../../mod/editlayout.php:172 ../../mod/editpost.php:149
+#: ../../mod/editwebpage.php:219
msgid "Set expiration date"
msgstr "Ajusta la data d'expiració"
-#: ../../include/conversation.php:1238 ../../mod/events.php:651
-#: ../../mod/editpost.php:153
+#: ../../include/conversation.php:1249 ../../mod/editpost.php:153
+#: ../../mod/events.php:674
msgid "OK"
msgstr "OK"
-#: ../../include/conversation.php:1239 ../../mod/tagrm.php:11
-#: ../../mod/tagrm.php:134 ../../mod/events.php:650 ../../mod/fbrowser.php:82
-#: ../../mod/fbrowser.php:117 ../../mod/editpost.php:154
-#: ../../mod/settings.php:589 ../../mod/settings.php:615
+#: ../../include/conversation.php:1250 ../../mod/editpost.php:154
+#: ../../mod/events.php:673 ../../mod/fbrowser.php:82
+#: ../../mod/fbrowser.php:117 ../../mod/settings.php:589
+#: ../../mod/settings.php:615 ../../mod/tagrm.php:11 ../../mod/tagrm.php:134
msgid "Cancel"
msgstr "Cancel·la"
-#: ../../include/conversation.php:1481
+#: ../../include/conversation.php:1492
msgid "Discover"
msgstr "Descobrir"
-#: ../../include/conversation.php:1484
+#: ../../include/conversation.php:1495
msgid "Imported public streams"
msgstr "Importar fluxos públics"
-#: ../../include/conversation.php:1489
+#: ../../include/conversation.php:1500
msgid "Commented Order"
msgstr "Ordre per Comentaris"
-#: ../../include/conversation.php:1492
+#: ../../include/conversation.php:1503
msgid "Sort by Comment Date"
msgstr "Ordenar per Data del Comentari"
-#: ../../include/conversation.php:1496
+#: ../../include/conversation.php:1507
msgid "Posted Order"
msgstr "Ordenar per Entrades"
-#: ../../include/conversation.php:1499
+#: ../../include/conversation.php:1510
msgid "Sort by Post Date"
msgstr "Ordenar per Data d' Entrada"
-#: ../../include/conversation.php:1507
+#: ../../include/conversation.php:1518
msgid "Posts that mention or involve you"
msgstr "Entrades que et mencionen o involucren"
-#: ../../include/conversation.php:1513 ../../mod/connections.php:212
-#: ../../mod/connections.php:225 ../../mod/menu.php:107
+#: ../../include/conversation.php:1524 ../../mod/connections.php:72
+#: ../../mod/connections.php:85 ../../mod/menu.php:110
msgid "New"
msgstr "Nou"
-#: ../../include/conversation.php:1516
+#: ../../include/conversation.php:1527
msgid "Activity Stream - by date"
-msgstr "Activitat del Flux - per data"
+msgstr "Flux d'activitat - per data"
-#: ../../include/conversation.php:1522
+#: ../../include/conversation.php:1533
msgid "Starred"
msgstr "Preferit"
-#: ../../include/conversation.php:1525
+#: ../../include/conversation.php:1536
msgid "Favourite Posts"
msgstr "Entrades Favorites"
-#: ../../include/conversation.php:1532
+#: ../../include/conversation.php:1543
msgid "Spam"
msgstr "Spam"
-#: ../../include/conversation.php:1535
+#: ../../include/conversation.php:1546
msgid "Posts flagged as SPAM"
msgstr "Entrades marcades com a SPAM"
-#: ../../include/conversation.php:1579 ../../mod/admin.php:993
+#: ../../include/conversation.php:1590 ../../mod/admin.php:993
msgid "Channel"
msgstr "Canal"
-#: ../../include/conversation.php:1582
+#: ../../include/conversation.php:1593
msgid "Status Messages and Posts"
msgstr "Estat dels Missatges i Entrades"
-#: ../../include/conversation.php:1591
+#: ../../include/conversation.php:1602
msgid "About"
-msgstr "Sobre això"
+msgstr "Sobre mi"
-#: ../../include/conversation.php:1594
+#: ../../include/conversation.php:1605
msgid "Profile Details"
msgstr "Detalls del Perfil"
-#: ../../include/conversation.php:1603 ../../include/photos.php:359
+#: ../../include/conversation.php:1614 ../../include/photos.php:359
msgid "Photo Albums"
msgstr "Albums de Fotos"
-#: ../../include/conversation.php:1612
+#: ../../include/conversation.php:1623
msgid "Files and Storage"
msgstr "Arxius i Emmagatzegament"
-#: ../../include/conversation.php:1622 ../../include/conversation.php:1625
+#: ../../include/conversation.php:1633 ../../include/conversation.php:1636
msgid "Chatrooms"
msgstr "Sala per Xerrar"
-#: ../../include/conversation.php:1638
+#: ../../include/conversation.php:1649
msgid "Saved Bookmarks"
msgstr "Marcadors Guardats"
-#: ../../include/conversation.php:1648
+#: ../../include/conversation.php:1659
msgid "Manage Webpages"
msgstr "Gestió de Pàgines Web"
-#: ../../include/conversation.php:1707
+#: ../../include/conversation.php:1718
msgctxt "noun"
msgid "Attending"
msgid_plural "Attending"
msgstr[0] "Assistint"
msgstr[1] "Assistint"
-#: ../../include/conversation.php:1710
+#: ../../include/conversation.php:1721
msgctxt "noun"
msgid "Not Attending"
msgid_plural "Not Attending"
msgstr[0] "Desassistint"
msgstr[1] "Desassistint"
-#: ../../include/conversation.php:1713
+#: ../../include/conversation.php:1724
msgctxt "noun"
msgid "Undecided"
msgid_plural "Undecided"
msgstr[0] "Indecís"
msgstr[1] "Indecisos"
-#: ../../include/conversation.php:1716
+#: ../../include/conversation.php:1727
msgctxt "noun"
msgid "Agree"
msgid_plural "Agrees"
-msgstr[0] "Acord"
-msgstr[1] "Acords"
+msgstr[0] "A favor"
+msgstr[1] "A favor"
-#: ../../include/conversation.php:1719
+#: ../../include/conversation.php:1730
msgctxt "noun"
msgid "Disagree"
msgid_plural "Disagrees"
-msgstr[0] "Desacord"
-msgstr[1] "Desacords"
+msgstr[0] "En contra"
+msgstr[1] "En contra"
-#: ../../include/conversation.php:1722
+#: ../../include/conversation.php:1733
msgctxt "noun"
msgid "Abstain"
msgid_plural "Abstains"
-msgstr[0] "Abstenirse"
-msgstr[1] "Abstenirse"
+msgstr[0] "En blanc"
+msgstr[1] "En blanc"
-#: ../../include/items.php:413 ../../mod/like.php:270
-#: ../../mod/subthread.php:49 ../../mod/group.php:68 ../../mod/profperm.php:23
-#: ../../mod/bulksetclose.php:11 ../../index.php:392
-msgid "Permission denied"
-msgstr "Permís denegat"
+#: ../../include/datetime.php:48
+msgid "Miscellaneous"
+msgstr "Miscelania"
-#: ../../include/items.php:1035 ../../include/items.php:1081
-msgid "(Unknown)"
-msgstr "(Desconegut)"
+#: ../../include/datetime.php:132
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "YYYY-MM-DD o MM-DD"
-#: ../../include/items.php:1307
-msgid "Visible to anybody on the internet."
-msgstr "Visible per tothom a la Internet"
+#: ../../include/datetime.php:235 ../../mod/appman.php:91
+#: ../../mod/appman.php:92 ../../mod/events.php:672
+msgid "Required"
+msgstr "Requerit"
-#: ../../include/items.php:1309
-msgid "Visible to you only."
-msgstr "Visible només per tú."
+#: ../../include/datetime.php:262 ../../boot.php:2358
+msgid "never"
+msgstr "mai"
-#: ../../include/items.php:1311
-msgid "Visible to anybody in this network."
-msgstr "Visible per tothom en aquesta xarxa."
+#: ../../include/datetime.php:268
+msgid "less than a second ago"
+msgstr "fa menys d'un segon"
-#: ../../include/items.php:1313
-msgid "Visible to anybody authenticated."
-msgstr "Visible per tothom autenticat."
+#: ../../include/datetime.php:271
+msgid "year"
+msgstr "any"
-#: ../../include/items.php:1315
-#, php-format
-msgid "Visible to anybody on %s."
-msgstr "Visible per a tothom a %s."
+#: ../../include/datetime.php:271
+msgid "years"
+msgstr "anys"
-#: ../../include/items.php:1317
-msgid "Visible to all connections."
-msgstr "Visible per a totes les connexions."
+#: ../../include/datetime.php:272
+msgid "month"
+msgstr "mes"
-#: ../../include/items.php:1319
-msgid "Visible to approved connections."
-msgstr "Visible per a les connexions aprovades."
+#: ../../include/datetime.php:272
+msgid "months"
+msgstr "mesos"
-#: ../../include/items.php:1321
-msgid "Visible to specific connections."
-msgstr "Visible per a específiques connexions."
+#: ../../include/datetime.php:273
+msgid "week"
+msgstr "setmana"
-#: ../../include/items.php:4215 ../../mod/thing.php:74
-#: ../../mod/filestorage.php:27 ../../mod/viewsrc.php:20
-#: ../../mod/admin.php:167 ../../mod/admin.php:1025 ../../mod/admin.php:1225
-#: ../../mod/display.php:36
-msgid "Item not found."
-msgstr "Element no trobat."
+#: ../../include/datetime.php:273
+msgid "weeks"
+msgstr "setmanes"
-#: ../../include/items.php:4288 ../../include/attach.php:137
-#: ../../include/attach.php:184 ../../include/attach.php:247
-#: ../../include/attach.php:261 ../../include/attach.php:305
-#: ../../include/attach.php:319 ../../include/attach.php:350
-#: ../../include/attach.php:546 ../../include/attach.php:618
-#: ../../include/chat.php:131 ../../include/photos.php:26
-#: ../../mod/profile.php:64 ../../mod/profile.php:72
-#: ../../mod/achievements.php:30 ../../mod/manage.php:6 ../../mod/api.php:26
-#: ../../mod/api.php:31 ../../mod/webpages.php:69 ../../mod/thing.php:241
-#: ../../mod/thing.php:256 ../../mod/thing.php:290
-#: ../../mod/profile_photo.php:264 ../../mod/profile_photo.php:277
-#: ../../mod/block.php:22 ../../mod/block.php:72 ../../mod/like.php:178
-#: ../../mod/events.php:232 ../../mod/group.php:9 ../../mod/item.php:206
-#: ../../mod/item.php:214 ../../mod/item.php:978 ../../mod/network.php:12
-#: ../../mod/common.php:35 ../../mod/connections.php:169
-#: ../../mod/blocks.php:69 ../../mod/blocks.php:76 ../../mod/editpost.php:13
-#: ../../mod/photos.php:69 ../../mod/pdledit.php:21 ../../mod/authtest.php:13
-#: ../../mod/editlayout.php:63 ../../mod/editlayout.php:87
-#: ../../mod/chat.php:90 ../../mod/chat.php:95 ../../mod/mitem.php:109
-#: ../../mod/editwebpage.php:64 ../../mod/editwebpage.php:86
-#: ../../mod/editwebpage.php:101 ../../mod/editwebpage.php:125
-#: ../../mod/rate.php:110 ../../mod/editblock.php:65 ../../mod/invite.php:13
-#: ../../mod/invite.php:104 ../../mod/locs.php:77 ../../mod/sources.php:66
-#: ../../mod/menu.php:69 ../../mod/filestorage.php:18
-#: ../../mod/filestorage.php:73 ../../mod/filestorage.php:88
-#: ../../mod/filestorage.php:115 ../../mod/fsuggest.php:78
-#: ../../mod/poke.php:128 ../../mod/profiles.php:188
-#: ../../mod/profiles.php:576 ../../mod/viewsrc.php:14 ../../mod/setup.php:223
-#: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27
-#: ../../mod/register.php:72 ../../mod/settings.php:570 ../../mod/id.php:71
-#: ../../mod/message.php:16 ../../mod/mood.php:111 ../../mod/connedit.php:336
-#: ../../mod/mail.php:114 ../../mod/notifications.php:66
-#: ../../mod/regmod.php:17 ../../mod/new_channel.php:68
-#: ../../mod/new_channel.php:99 ../../mod/appman.php:66
-#: ../../mod/layouts.php:69 ../../mod/layouts.php:76 ../../mod/layouts.php:87
-#: ../../mod/page.php:31 ../../mod/page.php:86 ../../mod/bookmarks.php:46
-#: ../../mod/channel.php:100 ../../mod/channel.php:219
-#: ../../mod/channel.php:262 ../../mod/suggest.php:26
-#: ../../mod/service_limits.php:7 ../../mod/sharedwithme.php:7
-#: ../../index.php:182 ../../index.php:393
-msgid "Permission denied."
-msgstr "Permís denegat."
+#: ../../include/datetime.php:274
+msgid "day"
+msgstr "dia"
-#: ../../include/items.php:4690 ../../mod/group.php:38 ../../mod/group.php:140
-#: ../../mod/bulksetclose.php:51
-msgid "Collection not found."
-msgstr "Col·lecció no trobada."
+#: ../../include/datetime.php:274
+msgid "days"
+msgstr "dies"
-#: ../../include/items.php:4706
-msgid "Collection is empty."
-msgstr "La col·lecció esta buida."
+#: ../../include/datetime.php:275
+msgid "hour"
+msgstr "hora"
+
+#: ../../include/datetime.php:275
+msgid "hours"
+msgstr "hores"
+
+#: ../../include/datetime.php:276
+msgid "minute"
+msgstr "minut"
+
+#: ../../include/datetime.php:276
+msgid "minutes"
+msgstr "minuts"
+
+#: ../../include/datetime.php:277
+msgid "second"
+msgstr "segon"
+
+#: ../../include/datetime.php:277
+msgid "seconds"
+msgstr "segons"
-#: ../../include/items.php:4713
+#: ../../include/datetime.php:285
#, php-format
-msgid "Collection: %s"
-msgstr "Col·lecció: %s"
+msgctxt "e.g. 22 hours ago, 1 minute ago"
+msgid "%1$d %2$s ago"
+msgstr "Fa %1$d i %2$s"
-#: ../../include/items.php:4723 ../../mod/connedit.php:662
+#: ../../include/datetime.php:519
#, php-format
-msgid "Connection: %s"
-msgstr "Connexió: %s"
+msgid "%1$s's birthday"
+msgstr "Aniversari de %1$s"
-#: ../../include/items.php:4725
-msgid "Connection not found."
-msgstr "Connexió no trobada."
+#: ../../include/datetime.php:520
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Feliç Aniversari %1$s"
-#: ../../include/zot.php:666
-msgid "Invalid data packet"
-msgstr "paquet de dades invàlid"
+#: ../../include/diaspora.php:2498
+msgid "Please choose"
+msgstr "Escull"
-#: ../../include/zot.php:682
-msgid "Unable to verify channel signature"
-msgstr "No es pot verificar la signatura del canal"
+#: ../../include/diaspora.php:2500
+msgid "Agree"
+msgstr "A favor"
+
+#: ../../include/diaspora.php:2502
+msgid "Disagree"
+msgstr "En contra"
+
+#: ../../include/diaspora.php:2504
+msgid "Abstain"
+msgstr "En blanc"
-#: ../../include/zot.php:2132
+#: ../../include/dimport.php:34 ../../include/identity.php:217
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "L'àlies té caràcters no suportats o ja està agafat en aquest lloc."
+
+#: ../../include/dir_fns.php:126
+msgid "Directory Options"
+msgstr "Opcions de carpeta"
+
+#: ../../include/dir_fns.php:128
+msgid "Safe Mode"
+msgstr "Mode Segur"
+
+#: ../../include/dir_fns.php:128 ../../include/dir_fns.php:129
+#: ../../include/dir_fns.php:130 ../../mod/admin.php:428 ../../mod/api.php:106
+#: ../../mod/photos.php:568 ../../mod/connedit.php:647
+#: ../../mod/connedit.php:675 ../../mod/filestorage.php:151
+#: ../../mod/filestorage.php:159 ../../mod/removeme.php:60
+#: ../../mod/settings.php:579 ../../mod/menu.php:94 ../../mod/menu.php:151
+#: ../../mod/mitem.php:159 ../../mod/mitem.php:160 ../../mod/mitem.php:232
+#: ../../mod/mitem.php:233 ../../view/theme/redbasic/php/config.php:104
+#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1555
+msgid "No"
+msgstr "No"
+
+#: ../../include/dir_fns.php:128 ../../include/dir_fns.php:129
+#: ../../include/dir_fns.php:130 ../../mod/admin.php:430 ../../mod/api.php:105
+#: ../../mod/photos.php:568 ../../mod/filestorage.php:151
+#: ../../mod/filestorage.php:159 ../../mod/removeme.php:60
+#: ../../mod/settings.php:579 ../../mod/menu.php:94 ../../mod/menu.php:151
+#: ../../mod/mitem.php:159 ../../mod/mitem.php:160 ../../mod/mitem.php:232
+#: ../../mod/mitem.php:233 ../../view/theme/redbasic/php/config.php:104
+#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1555
+msgid "Yes"
+msgstr "Sí"
+
+#: ../../include/dir_fns.php:129
+msgid "Public Forums Only"
+msgstr "Només fòrums públics"
+
+#: ../../include/dir_fns.php:130
+msgid "This Website Only"
+msgstr "Només aquest lloc web"
+
+#: ../../include/enotify.php:96
#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "No es pot verificar la signatura del lloc per %s"
+msgid "%s <!item_type!>"
+msgstr "%s <!item_type!>"
-#: ../../include/oembed.php:183
-msgid "Embedded content"
-msgstr "Contingut embegut"
+#: ../../include/enotify.php:100
+#, php-format
+msgid "[Red:Notify] New mail received at %s"
+msgstr "[Red:Notificació] Un nou missatge s'ha rebut a %s"
-#: ../../include/oembed.php:192
-msgid "Embedding disabled"
-msgstr "Incorporació desactivada"
+#: ../../include/enotify.php:102
+#, php-format
+msgid "%1$s, %2$s sent you a new private message at %3$s."
+msgstr "%1$s, %2$s t'ha enviat un nou missatge privat a %3$s."
-#: ../../include/auth.php:131
-msgid "Logged out."
-msgstr "Sortir."
+#: ../../include/enotify.php:103
+#, php-format
+msgid "%1$s sent you %2$s."
+msgstr "%1$s t'ha enviat %2$s."
-#: ../../include/auth.php:272
-msgid "Failed authentication"
-msgstr "Autenticació fallida"
+#: ../../include/enotify.php:103
+msgid "a private message"
+msgstr "un missatge privat"
-#: ../../include/auth.php:286 ../../mod/openid.php:190
-msgid "Login failed."
-msgstr "Identificació fallida."
+#: ../../include/enotify.php:104
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
+msgstr "Per favor, visita %s per a veure i/o respondre els teus missatges privats."
-#: ../../include/contact_widgets.php:14
+#: ../../include/enotify.php:158
#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "%d invitació disponible"
-msgstr[1] "%d invitacions disponibles"
+msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
+msgstr "%1$s, %2$s comentat en [zrl=%3$s]a %4$s[/zrl]"
-#: ../../include/contact_widgets.php:19 ../../mod/admin.php:457
-msgid "Advanced"
-msgstr "Avançat"
+#: ../../include/enotify.php:166
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
+msgstr "%1$s, %2$s comentat en [zrl=%3$s]%4$s de %5$s[/zrl]"
-#: ../../include/contact_widgets.php:22
-msgid "Find Channels"
-msgstr "Troba Canals"
+#: ../../include/enotify.php:175
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
+msgstr "%1$s, %2$s comentat en [zrl=%3$s]el teu %4$s[/zrl]"
-#: ../../include/contact_widgets.php:23
-msgid "Enter name or interest"
-msgstr "Entra un nom o interes"
+#: ../../include/enotify.php:186
+#, php-format
+msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
+msgstr "[Red:Notify] Comentari a la conversa #%1$d per %2$s"
-#: ../../include/contact_widgets.php:24
-msgid "Connect/Follow"
-msgstr "Conecta/Segueix"
+#: ../../include/enotify.php:187
+#, php-format
+msgid "%1$s, %2$s commented on an item/conversation you have been following."
+msgstr "%1$s, %2$s comentat en un article/conversa que havies estat seguint."
-#: ../../include/contact_widgets.php:25
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Exemples: Lionel Messi, Futbolista"
+#: ../../include/enotify.php:190 ../../include/enotify.php:205
+#: ../../include/enotify.php:231 ../../include/enotify.php:249
+#: ../../include/enotify.php:263
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
+msgstr "Si us plau visita %s per veure i/o contestar a la conversa"
-#: ../../include/contact_widgets.php:26 ../../mod/directory.php:379
-#: ../../mod/directory.php:384 ../../mod/connections.php:413
-msgid "Find"
-msgstr "Troba"
+#: ../../include/enotify.php:196
+#, php-format
+msgid "[Red:Notify] %s posted to your profile wall"
+msgstr "[Red:Avís] %s ha escrit una entrada al teu mur"
-#: ../../include/contact_widgets.php:27 ../../mod/directory.php:383
-#: ../../mod/suggest.php:60
-msgid "Channel Suggestions"
-msgstr "Canals Suggerits"
+#: ../../include/enotify.php:198
+#, php-format
+msgid "%1$s, %2$s posted to your profile wall at %3$s"
+msgstr "%1$s, %2$s ha escrit una entrada al teu mur en %3$s"
-#: ../../include/contact_widgets.php:29
-msgid "Random Profile"
-msgstr "Perfil Aleatori"
+#: ../../include/enotify.php:200
+#, php-format
+msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
+msgstr "%1$s, %2$s enviat correu a [zrl=%3$s]el teu mur[/zrl]"
-#: ../../include/contact_widgets.php:30
-msgid "Invite Friends"
-msgstr "Convida Amics"
+#: ../../include/enotify.php:224
+#, php-format
+msgid "[Red:Notify] %s tagged you"
+msgstr "[Red:Notificació] %s t'ha etiquetat"
-#: ../../include/contact_widgets.php:32
-msgid "Advanced example: name=fred and country=iceland"
-msgstr "Exemple avançat: nom=pep i pais=eire"
+#: ../../include/enotify.php:225
+#, php-format
+msgid "%1$s, %2$s tagged you at %3$s"
+msgstr "%1$s, %2$s t'ha etiquetat a %3$s"
-#: ../../include/contact_widgets.php:125
+#: ../../include/enotify.php:226
#, php-format
-msgid "%d connection in common"
-msgid_plural "%d connections in common"
-msgstr[0] "%d connexió en comú"
-msgstr[1] "%d connexions en comú"
+msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%3$s]t'ha etiquetat[/zrl]."
-#: ../../include/contact_widgets.php:130
-msgid "show more"
-msgstr "mostrar més"
+#: ../../include/enotify.php:238
+#, php-format
+msgid "[Red:Notify] %1$s poked you"
+msgstr "[Red:Avís] %1$s s'en fot de tu"
-#: ../../include/acl_selectors.php:240
-msgid "Visible to your default audience"
-msgstr "Visible per a la teva audiència "
+#: ../../include/enotify.php:239
+#, php-format
+msgid "%1$s, %2$s poked you at %3$s"
+msgstr "%1$s, %2$s s'en fot de tú a %3$s"
-#: ../../include/acl_selectors.php:241
-msgid "Show"
-msgstr "Mostra"
+#: ../../include/enotify.php:240
+#, php-format
+msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%2$s]s'en fot de tú[/zrl]."
-#: ../../include/acl_selectors.php:242
-msgid "Don't show"
-msgstr "No mostrar"
+#: ../../include/enotify.php:256
+#, php-format
+msgid "[Red:Notify] %s tagged your post"
+msgstr "[Red:Avís] %s ha etiquetat la teva entrada"
-#: ../../include/acl_selectors.php:248 ../../mod/events.php:668
-#: ../../mod/photos.php:571 ../../mod/photos.php:934 ../../mod/chat.php:209
-#: ../../mod/filestorage.php:147
-msgid "Permissions"
-msgstr "Permisos "
+#: ../../include/enotify.php:257
+#, php-format
+msgid "%1$s, %2$s tagged your post at %3$s"
+msgstr "%1$s, %2$s ha etiquetat la teva entrada a %3$s"
-#: ../../include/attach.php:242 ../../include/attach.php:300
-msgid "Item was not found."
-msgstr "Article no trobat."
+#: ../../include/enotify.php:258
+#, php-format
+msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+msgstr "%1$s, %2$s etiquetat [zrl=%3$s]la teva entrada[/zrl]"
-#: ../../include/attach.php:363
-msgid "No source file."
-msgstr "No hi ha arxiu d'origen."
+#: ../../include/enotify.php:270
+msgid "[Red:Notify] Introduction received"
+msgstr "[Red:Avís] Presentació rebuda"
-#: ../../include/attach.php:381
-msgid "Cannot locate file to replace"
-msgstr "No trobo l'arxiu a reemplaçar"
+#: ../../include/enotify.php:271
+#, php-format
+msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
+msgstr "%1$s, has rebut una nova petició de connexió de '%2$s' a %3$s"
-#: ../../include/attach.php:399
-msgid "Cannot locate file to revise/update"
-msgstr "No trobo l'arxiu a revisar/actualitzar"
+#: ../../include/enotify.php:272
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
+msgstr "%1$s, has rebut [zrl=%2$s]una nova petició de connexió[/zrl] de %3$s."
-#: ../../include/attach.php:410
+#: ../../include/enotify.php:276 ../../include/enotify.php:295
#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "L'arxiu excedeix la mida limit de %d"
+msgid "You may visit their profile at %s"
+msgstr "Pots visitar el seu perfil a %s"
-#: ../../include/attach.php:422
+#: ../../include/enotify.php:278
#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
-msgstr "Has arribat al teu límit de %1$.0f Mbytes de emagatzematge d'adjunts."
+msgid "Please visit %s to approve or reject the connection request."
+msgstr "Si us plau, visita %s per aprovar o rebutjar la petició de connexió."
-#: ../../include/attach.php:505
-msgid "File upload failed. Possible system limit or action terminated."
-msgstr "Pujada del arxiu fallida. Possible límit del sistema o acció interrompuda."
+#: ../../include/enotify.php:285
+msgid "[Red:Notify] Friend suggestion received"
+msgstr "[Red:Notificació] Rebuda suggerencia d'amistat"
-#: ../../include/attach.php:517
-msgid "Stored file could not be verified. Upload failed."
-msgstr "L'arxiu guardat no es pot verificar. Pujada fallida."
+#: ../../include/enotify.php:286
+#, php-format
+msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
+msgstr "%1$s, has rebut una suggerència d'amistat de '%2$s' a %3$s"
-#: ../../include/attach.php:561 ../../include/attach.php:578
-msgid "Path not available."
-msgstr "Trajectòria no disponible"
+#: ../../include/enotify.php:287
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
+"%4$s."
+msgstr "%1$s, has rebut [zrl=%2$s]una suggerència d'amistat[/zrl] per %3$s de %4$s."
-#: ../../include/attach.php:623
-msgid "Empty pathname"
-msgstr "Trajèctoria vuida."
+#: ../../include/enotify.php:293
+msgid "Name:"
+msgstr "Nom:"
-#: ../../include/attach.php:639
-msgid "duplicate filename or path"
-msgstr "Nom o trajectòria duplicat"
+#: ../../include/enotify.php:294
+msgid "Photo:"
+msgstr "Foto:"
-#: ../../include/attach.php:663
-msgid "Path not found."
-msgstr "Trajectòria no trobada."
+#: ../../include/enotify.php:297
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
+msgstr "Per favor, visita %s per a aprovar o rebutjar la suggerencia."
-#: ../../include/attach.php:714
-msgid "mkdir failed."
-msgstr "mkdir va fracassar."
+#: ../../include/enotify.php:508
+msgid "[Red:Notify]"
+msgstr "[Red:Notificació]"
-#: ../../include/attach.php:718
-msgid "database storage failed."
-msgstr "Arxiu de base de dades va fallar."
+#: ../../include/event.php:549
+msgid "This event has been added to your calendar."
+msgstr "S'ha afegit l'activitat al teu calendari."
+
+#: ../../include/features.php:38
+msgid "General Features"
+msgstr "Característiques generals"
+
+#: ../../include/features.php:40
+msgid "Content Expiration"
+msgstr "Caducitat del contingut"
+
+#: ../../include/features.php:40
+msgid "Remove posts/comments and/or private messages at a future time"
+msgstr "Elimina entrades, comentaris i/o missatges privats al cap d'un cert temps"
+
+#: ../../include/features.php:41
+msgid "Multiple Profiles"
+msgstr "Múltiples perfils"
+
+#: ../../include/features.php:41
+msgid "Ability to create multiple profiles"
+msgstr "Capacitat de crear diversos perfils"
+
+#: ../../include/features.php:42
+msgid "Advanced Profiles"
+msgstr "Perfils avançats"
+
+#: ../../include/features.php:42
+msgid "Additional profile sections and selections"
+msgstr "Seccions i seleccions addicionals de perfils"
+
+#: ../../include/features.php:43
+msgid "Profile Import/Export"
+msgstr "Importació i exportació de perfil"
+
+#: ../../include/features.php:43
+msgid "Save and load profile details across sites/channels"
+msgstr "Desa i carrega els detalls del perfil a través de llocs i canals"
+
+#: ../../include/features.php:44
+msgid "Web Pages"
+msgstr "Pàgines web"
+
+#: ../../include/features.php:44
+msgid "Provide managed web pages on your channel"
+msgstr "Proporcionar pàgines web gestionades al seu canal"
+
+#: ../../include/features.php:45
+msgid "Private Notes"
+msgstr "Notes privades"
+
+#: ../../include/features.php:45
+msgid "Enables a tool to store notes and reminders"
+msgstr "Activa una eina per a crear notes i recordatoris"
+
+#: ../../include/features.php:46
+msgid "Navigation Channel Select"
+msgstr "Navegació pel selector de canals"
+
+#: ../../include/features.php:46
+msgid "Change channels directly from within the navigation dropdown menu"
+msgstr "Canvieu els canals directament des del menú desplegable de navegació"
+
+#: ../../include/features.php:47
+msgid "Photo Location"
+msgstr "Ubicació de les fotos"
+
+#: ../../include/features.php:47
+msgid "If location data is available on uploaded photos, link this to a map."
+msgstr "Quan una imatge pujada porti incrustada la seva localització, enllaça-la a un mapa automàticament."
+
+#: ../../include/features.php:49
+msgid "Expert Mode"
+msgstr "Mode expert"
+
+#: ../../include/features.php:49
+msgid "Enable Expert Mode to provide advanced configuration options"
+msgstr "Activa el mode expert per a mostrar opcions avançades de configuració"
+
+#: ../../include/features.php:50
+msgid "Premium Channel"
+msgstr "Canal prèmium"
+
+#: ../../include/features.php:50
+msgid ""
+"Allows you to set restrictions and terms on those that connect with your "
+"channel"
+msgstr "Permet establir restriccions i condicions a qui es connecti al teu canal"
+
+#: ../../include/features.php:55
+msgid "Post Composition Features"
+msgstr "Més funcionalitats de redacció d'entrades"
+
+#: ../../include/features.php:57
+msgid "Use Markdown"
+msgstr "Habilita el Markdown"
+
+#: ../../include/features.php:57
+msgid "Allow use of \"Markdown\" to format posts"
+msgstr "Permet emprar \"Markdown\" per donar format a les entrades"
+
+#: ../../include/features.php:58
+msgid "Large Photos"
+msgstr "Fotos grans"
+
+#: ../../include/features.php:58
+msgid ""
+"Include large (640px) photo thumbnails in posts. If not enabled, use small "
+"(320px) photo thumbnails"
+msgstr "Inclou miniatures d'imatge grans (640px) en les entrades. Si no està activat, petites (320px)."
+
+#: ../../include/features.php:59
+msgid "Automatically import channel content from other channels or feeds"
+msgstr "Importa automàticament el contingut del canal des d'altres canals o feeds"
+
+#: ../../include/features.php:60
+msgid "Even More Encryption"
+msgstr "Encara més xifratge"
+
+#: ../../include/features.php:60
+msgid ""
+"Allow optional encryption of content end-to-end with a shared secret key"
+msgstr "Permet el xifratge opcional de contingut extrem-a-extrem amb clau simètrica"
+
+#: ../../include/features.php:61
+msgid "Enable voting tools"
+msgstr "Habilita eines de vot"
+
+#: ../../include/features.php:61
+msgid "Provide a class of post which others can vote on"
+msgstr "Proporcionar una classe d'entrada que altres puguin votar"
+
+#: ../../include/features.php:67
+msgid "Network and Stream Filtering"
+msgstr "Filtres de xarxa de contactes i de flux d'activitat"
+
+#: ../../include/features.php:68
+msgid "Search by Date"
+msgstr "Cerca per data"
+
+#: ../../include/features.php:68
+msgid "Ability to select posts by date ranges"
+msgstr "Capacitat per seleccionar entrades per rang de dates"
+
+#: ../../include/features.php:69
+msgid "Collections Filter"
+msgstr "Filtre de col·leccions"
+
+#: ../../include/features.php:69
+msgid "Enable widget to display Network posts only from selected collections"
+msgstr "Habilita un giny per mostrar només les entrades de les col·leccions seleccionades"
+
+#: ../../include/features.php:70
+msgid "Save search terms for re-use"
+msgstr "Conserva les paraules de cerca per reutilitzar-les"
+
+#: ../../include/features.php:71
+msgid "Network Personal Tab"
+msgstr "Pestanya de participació en la xarxa"
+
+#: ../../include/features.php:71
+msgid "Enable tab to display only Network posts that you've interacted on"
+msgstr "Afegeix una pestanya que mostri només les entrades de xarxa on hi hagis intervingut"
+
+#: ../../include/features.php:72
+msgid "Network New Tab"
+msgstr "Pestanya de novetats a la xarxa"
+
+#: ../../include/features.php:72
+msgid "Enable tab to display all new Network activity"
+msgstr "Afegeix una pestanya que mostri tota l'activitat nova de la Xarxa"
+
+#: ../../include/features.php:73
+msgid "Affinity Tool"
+msgstr "Filtre d'activitat per afinitat"
+
+#: ../../include/features.php:73
+msgid "Filter stream activity by depth of relationships"
+msgstr "Filtra el flux d'activitat segons el tipus de relació amb l'actor de l'activitat"
+
+#: ../../include/features.php:74
+msgid "Connection Filtering"
+msgstr "Filtre d'entrades per paraules clau"
+
+#: ../../include/features.php:74
+msgid "Filter incoming posts from connections based on keywords/content"
+msgstr "Filtra les entrades de les teves connexions segons paraules clau i contingut"
+
+#: ../../include/features.php:75
+msgid "Suggest Channels"
+msgstr "Suggeix-me canals"
+
+#: ../../include/features.php:75
+msgid "Show channel suggestions"
+msgstr "Mostra suggerències de canals"
+
+#: ../../include/features.php:80
+msgid "Post/Comment Tools"
+msgstr "Eines d'entrades i comentaris"
+
+#: ../../include/features.php:81
+msgid "Tagging"
+msgstr "Etiquetes"
+
+#: ../../include/features.php:81
+msgid "Ability to tag existing posts"
+msgstr "Capacitat d'etiquetar entrades existents"
+
+#: ../../include/features.php:82
+msgid "Post Categories"
+msgstr "Categories d'Entrades"
+
+#: ../../include/features.php:82
+msgid "Add categories to your posts"
+msgstr "Afegeix categoria a la teva entrada"
+
+#: ../../include/features.php:83
+msgid "Ability to file posts under folders"
+msgstr "Capacitat de arxivar entrades en les carpetes"
+
+#: ../../include/features.php:84
+msgid "Dislike Posts"
+msgstr "\"No m'agrada\""
+
+#: ../../include/features.php:84
+msgid "Ability to dislike posts/comments"
+msgstr "Capacitat per marcar amb un \"no m'agrada\" les entrades i els comentaris"
+
+#: ../../include/features.php:85
+msgid "Star Posts"
+msgstr "Entrades Excel·lents"
+
+#: ../../include/features.php:85
+msgid "Ability to mark special posts with a star indicator"
+msgstr "Capacitat per marcar entrades especials amb l'indicador d'excel·lencia"
+
+#: ../../include/features.php:86
+msgid "Tag Cloud"
+msgstr "Núvol d'Etiquetes."
+
+#: ../../include/features.php:86
+msgid "Provide a personal tag cloud on your channel page"
+msgstr "Proporcionar un núvol d'etiquetes personals a la teva pàgina de canal"
+
+#: ../../include/follow.php:28
+msgid "Channel is blocked on this site."
+msgstr "El canal està bloquejat en aquest lloc."
+
+#: ../../include/follow.php:33
+msgid "Channel location missing."
+msgstr "Falta la ubicació del canal."
+
+#: ../../include/follow.php:83
+msgid "Response from remote channel was incomplete."
+msgstr "La resposta del canal remot fou incompleta."
+
+#: ../../include/follow.php:100
+msgid "Channel was deleted and no longer exists."
+msgstr "El canal fou esborrat i actualment no existeix."
+
+#: ../../include/follow.php:135 ../../include/follow.php:206
+msgid "Protocol disabled."
+msgstr "Protocol desactivat."
+
+#: ../../include/follow.php:144
+msgid "Protocol blocked for this channel."
+msgstr "El protocol està bloquejat per a aquest canal."
+
+#: ../../include/follow.php:179
+msgid "Channel discovery failed."
+msgstr "Descobriment de canal fallit."
+
+#: ../../include/follow.php:195
+msgid "local account not found."
+msgstr "compte local no trobat."
+
+#: ../../include/follow.php:224
+msgid "Cannot connect to yourself."
+msgstr "No pots connectar amb tu mateix."
+
+#: ../../include/group.php:26
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
+msgstr "Un grup esborrat amb aquest nom fou reviscolat. Els permisos dels items existents <strong>poden</strong> aplicar-se a aquest grup i qualsevol membre futur. Si no es això el que vols, si et plau, crea un altre grup amb un nom diferent."
+
+#: ../../include/group.php:235
+msgid "Default privacy group for new contacts"
+msgstr "Privacitat de grup predeterminada per a contactes nous"
+
+#: ../../include/group.php:254 ../../mod/admin.php:831
+msgid "All Channels"
+msgstr "Tots els canals"
+
+#: ../../include/group.php:276
+msgid "edit"
+msgstr "edita"
+
+#: ../../include/group.php:298
+msgid "Collections"
+msgstr "Col·leccions"
+
+#: ../../include/group.php:299
+msgid "Edit collection"
+msgstr "Edita col·leccions"
+
+#: ../../include/group.php:300
+msgid "Add new collection"
+msgstr "Afegeix una nova col·lecció"
+
+#: ../../include/group.php:301
+msgid "Channels not in any collection"
+msgstr "Canals a cap col·lecció"
#: ../../include/identity.php:33
msgid "Unable to obtain identity information from database"
@@ -3309,11 +3053,6 @@ msgstr "Alies/malnom es requerit."
msgid "Reserved nickname. Please choose another."
msgstr "Àlies reservat. Tria un altre."
-#: ../../include/identity.php:217 ../../include/dimport.php:34
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "L'álies te caracters no soportats o ja esta en ús en aquest lloc"
-
#: ../../include/identity.php:292
msgid "Unable to retrieve created identity"
msgstr "No es pot recuperar la identitat creada"
@@ -3322,209 +3061,640 @@ msgstr "No es pot recuperar la identitat creada"
msgid "Default Profile"
msgstr "Perfil per Defecte"
-#: ../../include/identity.php:660
+#: ../../include/identity.php:759
msgid "Requested channel is not available."
msgstr "El canal demanat no està disponible."
-#: ../../include/identity.php:707 ../../mod/profile.php:16
-#: ../../mod/achievements.php:11 ../../mod/webpages.php:29
-#: ../../mod/connect.php:13 ../../mod/hcard.php:8 ../../mod/blocks.php:29
-#: ../../mod/editlayout.php:27 ../../mod/editwebpage.php:28
-#: ../../mod/editblock.php:29 ../../mod/filestorage.php:54
-#: ../../mod/layouts.php:29
+#: ../../include/identity.php:806 ../../mod/achievements.php:11
+#: ../../mod/blocks.php:29 ../../mod/profile.php:16 ../../mod/connect.php:13
+#: ../../mod/editblock.php:29 ../../mod/editlayout.php:27
+#: ../../mod/editwebpage.php:28 ../../mod/filestorage.php:54
+#: ../../mod/hcard.php:8 ../../mod/layouts.php:29 ../../mod/webpages.php:29
msgid "Requested profile is not available."
msgstr "El perfil demanat no està disponible."
-#: ../../include/identity.php:870 ../../mod/profiles.php:774
+#: ../../include/identity.php:969 ../../mod/profiles.php:774
msgid "Change profile photo"
msgstr "Canviar la foto del perfil"
-#: ../../include/identity.php:876
+#: ../../include/identity.php:975
msgid "Profiles"
msgstr "Perfils"
-#: ../../include/identity.php:876
+#: ../../include/identity.php:975
msgid "Manage/edit profiles"
msgstr "Gestiona/edita perfils"
-#: ../../include/identity.php:877 ../../mod/profiles.php:775
+#: ../../include/identity.php:976 ../../mod/profiles.php:775
msgid "Create New Profile"
msgstr "Crear un Perfil Nou"
-#: ../../include/identity.php:892 ../../mod/profiles.php:786
+#: ../../include/identity.php:991 ../../mod/profiles.php:786
msgid "Profile Image"
msgstr "Imatge del Perfil"
-#: ../../include/identity.php:895
+#: ../../include/identity.php:994
msgid "visible to everybody"
msgstr "visible per tothom"
-#: ../../include/identity.php:896 ../../mod/profiles.php:669
+#: ../../include/identity.php:995 ../../mod/profiles.php:669
#: ../../mod/profiles.php:790
msgid "Edit visibility"
msgstr "Editar visibilitat"
-#: ../../include/identity.php:912 ../../include/identity.php:1151
+#: ../../include/identity.php:1011 ../../include/identity.php:1250
msgid "Gender:"
msgstr "Gènere:"
-#: ../../include/identity.php:913 ../../include/identity.php:1195
+#: ../../include/identity.php:1012 ../../include/identity.php:1294
msgid "Status:"
msgstr "Estatus:"
-#: ../../include/identity.php:914 ../../include/identity.php:1206
+#: ../../include/identity.php:1013 ../../include/identity.php:1305
msgid "Homepage:"
msgstr "Pàgina Personal:"
-#: ../../include/identity.php:915
+#: ../../include/identity.php:1014
msgid "Online Now"
msgstr "Ara en Linia"
-#: ../../include/identity.php:998 ../../include/identity.php:1076
+#: ../../include/identity.php:1097 ../../include/identity.php:1175
#: ../../mod/ping.php:324
msgid "g A l F d"
msgstr "g A l F d"
-#: ../../include/identity.php:999 ../../include/identity.php:1077
+#: ../../include/identity.php:1098 ../../include/identity.php:1176
msgid "F d"
msgstr "F d"
-#: ../../include/identity.php:1044 ../../include/identity.php:1116
+#: ../../include/identity.php:1143 ../../include/identity.php:1215
#: ../../mod/ping.php:346
msgid "[today]"
msgstr "[avui]"
-#: ../../include/identity.php:1055
+#: ../../include/identity.php:1154
msgid "Birthday Reminders"
msgstr "Recordatori d'Aniversaris"
-#: ../../include/identity.php:1056
+#: ../../include/identity.php:1155
msgid "Birthdays this week:"
msgstr "Aniversari aquesta setmana:"
-#: ../../include/identity.php:1109
+#: ../../include/identity.php:1208
msgid "[No description]"
msgstr "[Sense descripció]"
-#: ../../include/identity.php:1127
+#: ../../include/identity.php:1226
msgid "Event Reminders"
msgstr "Recordatori d'Events"
-#: ../../include/identity.php:1128
+#: ../../include/identity.php:1227
msgid "Events this week:"
msgstr "Event aquesta setmana:"
-#: ../../include/identity.php:1141 ../../include/identity.php:1258
-#: ../../include/apps.php:138 ../../mod/profperm.php:112
-msgid "Profile"
-msgstr "Perfil"
-
-#: ../../include/identity.php:1149 ../../mod/settings.php:1056
+#: ../../include/identity.php:1248 ../../mod/settings.php:1056
msgid "Full Name:"
msgstr "Nom Complet:"
-#: ../../include/identity.php:1156
+#: ../../include/identity.php:1255
msgid "Like this channel"
msgstr "M'agrada aquest canal"
-#: ../../include/identity.php:1180
+#: ../../include/identity.php:1279
msgid "j F, Y"
msgstr "j F, Y"
-#: ../../include/identity.php:1181
+#: ../../include/identity.php:1280
msgid "j F"
msgstr "j F"
-#: ../../include/identity.php:1188
+#: ../../include/identity.php:1287
msgid "Birthday:"
msgstr "Aniversari:"
-#: ../../include/identity.php:1192 ../../mod/directory.php:297
+#: ../../include/identity.php:1291 ../../mod/directory.php:297
msgid "Age:"
msgstr "Edat:"
-#: ../../include/identity.php:1201
+#: ../../include/identity.php:1300
#, php-format
msgid "for %1$d %2$s"
msgstr "per %1$d %2$s"
-#: ../../include/identity.php:1204 ../../mod/profiles.php:691
+#: ../../include/identity.php:1303 ../../mod/profiles.php:691
msgid "Sexual Preference:"
msgstr "Preferència Sexual:"
-#: ../../include/identity.php:1208 ../../mod/directory.php:313
-#: ../../mod/profiles.php:693
+#: ../../include/identity.php:1307 ../../mod/profiles.php:693
+#: ../../mod/directory.php:313
msgid "Hometown:"
msgstr "Ciutat Natal:"
-#: ../../include/identity.php:1210
+#: ../../include/identity.php:1309
msgid "Tags:"
msgstr "Etiquetes:"
-#: ../../include/identity.php:1212 ../../mod/profiles.php:694
+#: ../../include/identity.php:1311 ../../mod/profiles.php:694
msgid "Political Views:"
msgstr "Idees Polítiques:"
-#: ../../include/identity.php:1214
+#: ../../include/identity.php:1313
msgid "Religion:"
msgstr "Religió:"
-#: ../../include/identity.php:1216 ../../mod/directory.php:315
+#: ../../include/identity.php:1315 ../../mod/directory.php:315
msgid "About:"
-msgstr "Sobre:"
+msgstr "Sobre mi:"
-#: ../../include/identity.php:1218
+#: ../../include/identity.php:1317
msgid "Hobbies/Interests:"
msgstr "Aficions/Interessos:"
-#: ../../include/identity.php:1220 ../../mod/profiles.php:697
+#: ../../include/identity.php:1319 ../../mod/profiles.php:697
msgid "Likes:"
-msgstr "Agrada:"
+msgstr "M'agrada:"
-#: ../../include/identity.php:1222 ../../mod/profiles.php:698
+#: ../../include/identity.php:1321 ../../mod/profiles.php:698
msgid "Dislikes:"
-msgstr "Desagrada:"
+msgstr "No li agrada:"
-#: ../../include/identity.php:1224
+#: ../../include/identity.php:1323
msgid "Contact information and Social Networks:"
msgstr "Informació de contacte i Xarxes Socials:"
-#: ../../include/identity.php:1226
+#: ../../include/identity.php:1325
msgid "My other channels:"
msgstr "Els meus altres canals:"
-#: ../../include/identity.php:1228
+#: ../../include/identity.php:1327
msgid "Musical interests:"
msgstr "Interessos Musicals:"
-#: ../../include/identity.php:1230
+#: ../../include/identity.php:1329
msgid "Books, literature:"
msgstr "Llibres, literatura:"
-#: ../../include/identity.php:1232
+#: ../../include/identity.php:1331
msgid "Television:"
msgstr "Televisió:"
-#: ../../include/identity.php:1234
+#: ../../include/identity.php:1333
msgid "Film/dance/culture/entertainment:"
msgstr "Películes/Dança/Cultura/Entreteniment:"
-#: ../../include/identity.php:1236
+#: ../../include/identity.php:1335
msgid "Love/Romance:"
msgstr "Amor/Romace:"
-#: ../../include/identity.php:1238
+#: ../../include/identity.php:1337
msgid "Work/employment:"
msgstr "Treball/feina:"
-#: ../../include/identity.php:1240
+#: ../../include/identity.php:1339
msgid "School/education:"
msgstr "Escola/educació:"
-#: ../../include/identity.php:1260
+#: ../../include/identity.php:1359
msgid "Like this thing"
msgstr "M'agrada això"
+#: ../../include/items.php:413 ../../mod/bulksetclose.php:11
+#: ../../mod/profperm.php:23 ../../mod/group.php:68 ../../mod/like.php:273
+#: ../../mod/subthread.php:49 ../../index.php:396
+msgid "Permission denied"
+msgstr "Permís denegat"
+
+#: ../../include/items.php:1101 ../../include/items.php:1147
+msgid "(Unknown)"
+msgstr "(Desconegut)"
+
+#: ../../include/items.php:1373
+msgid "Visible to anybody on the internet."
+msgstr "Visible per tothom a la Internet"
+
+#: ../../include/items.php:1375
+msgid "Visible to you only."
+msgstr "Visible només per tú."
+
+#: ../../include/items.php:1377
+msgid "Visible to anybody in this network."
+msgstr "Visible per tothom en aquesta xarxa."
+
+#: ../../include/items.php:1379
+msgid "Visible to anybody authenticated."
+msgstr "Visible per tothom autenticat."
+
+#: ../../include/items.php:1381
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Visible per a tothom a %s."
+
+#: ../../include/items.php:1383
+msgid "Visible to all connections."
+msgstr "Visible per a totes les connexions."
+
+#: ../../include/items.php:1385
+msgid "Visible to approved connections."
+msgstr "Visible per a les connexions aprovades."
+
+#: ../../include/items.php:1387
+msgid "Visible to specific connections."
+msgstr "Visible per a específiques connexions."
+
+#: ../../include/items.php:4310 ../../mod/admin.php:167
+#: ../../mod/admin.php:1025 ../../mod/admin.php:1225 ../../mod/display.php:36
+#: ../../mod/filestorage.php:27 ../../mod/thing.php:74
+#: ../../mod/viewsrc.php:20
+msgid "Item not found."
+msgstr "Element no trobat."
+
+#: ../../include/items.php:4787 ../../mod/bulksetclose.php:51
+#: ../../mod/group.php:38 ../../mod/group.php:140
+msgid "Collection not found."
+msgstr "Col·lecció no trobada."
+
+#: ../../include/items.php:4803
+msgid "Collection is empty."
+msgstr "La col·lecció esta buida."
+
+#: ../../include/items.php:4810
+#, php-format
+msgid "Collection: %s"
+msgstr "Col·lecció: %s"
+
+#: ../../include/items.php:4820 ../../mod/connedit.php:674
+#, php-format
+msgid "Connection: %s"
+msgstr "Connexió: %s"
+
+#: ../../include/items.php:4822
+msgid "Connection not found."
+msgstr "Connexió no trobada."
+
+#: ../../include/js_strings.php:5
+msgid "Delete this item?"
+msgstr "Vols esborrar aquest element?"
+
+#: ../../include/js_strings.php:8
+msgid "[-] show less"
+msgstr "[-] mostra'n menys"
+
+#: ../../include/js_strings.php:9
+msgid "[+] expand"
+msgstr "[+] expandeix"
+
+#: ../../include/js_strings.php:10
+msgid "[-] collapse"
+msgstr "[-] colapsa"
+
+#: ../../include/js_strings.php:11
+msgid "Password too short"
+msgstr "Contrasenya massa curta"
+
+#: ../../include/js_strings.php:12
+msgid "Passwords do not match"
+msgstr "Les contrasenyes no coincideixen"
+
+#: ../../include/js_strings.php:13 ../../mod/photos.php:40
+msgid "everybody"
+msgstr "tothom"
+
+#: ../../include/js_strings.php:14
+msgid "Secret Passphrase"
+msgstr "Contrasenya secreta"
+
+#: ../../include/js_strings.php:15
+msgid "Passphrase hint"
+msgstr "Pista per la contrasenya"
+
+#: ../../include/js_strings.php:16
+msgid "Notice: Permissions have changed but have not yet been submitted."
+msgstr "Avís: Els permisos han canviat però encara no han estat enviats."
+
+#: ../../include/js_strings.php:17
+msgid "close all"
+msgstr "tanca-ho tot"
+
+#: ../../include/js_strings.php:18
+msgid "Nothing new here"
+msgstr "Res de nou per aquí"
+
+#: ../../include/js_strings.php:19
+msgid "Rate This Channel (this is public)"
+msgstr "Valora aquest Canal (això es farà públic)"
+
+#: ../../include/js_strings.php:20 ../../mod/connedit.php:683
+#: ../../mod/rate.php:156
+msgid "Rating"
+msgstr "Valoració"
+
+#: ../../include/js_strings.php:21
+msgid "Describe (optional)"
+msgstr "Descriu (opcional)"
+
+#: ../../include/js_strings.php:23
+msgid "Please enter a link URL"
+msgstr "Si us plau, introdueix una adreça URL"
+
+#: ../../include/js_strings.php:24
+msgid "Unsaved changes. Are you sure you wish to leave this page?"
+msgstr "Hi ha canvis sense desar, estàs segur que vols abandonar la pàgina?"
+
+#: ../../include/js_strings.php:26
+msgid "timeago.prefixAgo"
+msgstr "timeago.prefixAgo"
+
+#: ../../include/js_strings.php:27
+msgid "timeago.prefixFromNow"
+msgstr "timeago.prefixFromNow"
+
+#: ../../include/js_strings.php:28
+msgid "ago"
+msgstr "enrere"
+
+#: ../../include/js_strings.php:29
+msgid "from now"
+msgstr "des d'ara"
+
+#: ../../include/js_strings.php:30
+msgid "less than a minute"
+msgstr "menys d'un minut"
+
+#: ../../include/js_strings.php:31
+msgid "about a minute"
+msgstr "prop d'un minut"
+
+#: ../../include/js_strings.php:32
+#, php-format
+msgid "%d minutes"
+msgstr "%d minuts"
+
+#: ../../include/js_strings.php:33
+msgid "about an hour"
+msgstr "prop d'una hora"
+
+#: ../../include/js_strings.php:34
+#, php-format
+msgid "about %d hours"
+msgstr "al voltant de %d hores"
+
+#: ../../include/js_strings.php:35
+msgid "a day"
+msgstr "un dia"
+
+#: ../../include/js_strings.php:36
+#, php-format
+msgid "%d days"
+msgstr "%d dies"
+
+#: ../../include/js_strings.php:37
+msgid "about a month"
+msgstr "prop d'un mes"
+
+#: ../../include/js_strings.php:38
+#, php-format
+msgid "%d months"
+msgstr "%d mesos"
+
+#: ../../include/js_strings.php:39
+msgid "about a year"
+msgstr "prop d'un any"
+
+#: ../../include/js_strings.php:40
+#, php-format
+msgid "%d years"
+msgstr "%d anys"
+
+#: ../../include/js_strings.php:41
+msgid " "
+msgstr " "
+
+#: ../../include/js_strings.php:42
+msgid "timeago.numbers"
+msgstr "timeago.numbers"
+
+#: ../../include/page_widgets.php:6
+msgid "New Page"
+msgstr "Pàgina Nova"
+
+#: ../../include/page_widgets.php:39 ../../mod/blocks.php:159
+#: ../../mod/layouts.php:188 ../../mod/webpages.php:187
+msgid "View"
+msgstr "Mostra"
+
+#: ../../include/page_widgets.php:41 ../../mod/webpages.php:189
+msgid "Actions"
+msgstr "Accions"
+
+#: ../../include/page_widgets.php:42 ../../mod/webpages.php:190
+msgid "Page Link"
+msgstr "Enllaç de la pàgina"
+
+#: ../../include/page_widgets.php:43
+msgid "Title"
+msgstr "Títol"
+
+#: ../../include/page_widgets.php:44 ../../mod/blocks.php:150
+#: ../../mod/layouts.php:181 ../../mod/menu.php:108 ../../mod/webpages.php:192
+msgid "Created"
+msgstr "Creat"
+
+#: ../../include/page_widgets.php:45 ../../mod/blocks.php:151
+#: ../../mod/layouts.php:182 ../../mod/menu.php:109 ../../mod/webpages.php:193
+msgid "Edited"
+msgstr "Editat"
+
+#: ../../include/permissions.php:26
+msgid "Can view my normal stream and posts"
+msgstr "Pot veure el flux i entrades normals"
+
+#: ../../include/permissions.php:27
+msgid "Can view my default channel profile"
+msgstr "Pot veure el meu perfil del canal per defecte"
+
+#: ../../include/permissions.php:28
+msgid "Can view my photo albums"
+msgstr "Pot veure el meus àlbums de fotos"
+
+#: ../../include/permissions.php:29
+msgid "Can view my connections"
+msgstr "Pot veure les meves connexions"
+
+#: ../../include/permissions.php:30
+msgid "Can view my file storage"
+msgstr "Pot veure al meu magatzem d'arxius"
+
+#: ../../include/permissions.php:31
+msgid "Can view my webpages"
+msgstr "Pot veure les meves pàgines web"
+
+#: ../../include/permissions.php:34
+msgid "Can send me their channel stream and posts"
+msgstr "Pot enviar-me el flux i entrades del seu canal"
+
+#: ../../include/permissions.php:35
+msgid "Can post on my channel page (\"wall\")"
+msgstr "Pot fer entrades a la meva pàgina de canal (\"mur\")"
+
+#: ../../include/permissions.php:36
+msgid "Can comment on or like my posts"
+msgstr "Pot fer comentaris o dir si agrada en les meves entrades"
+
+#: ../../include/permissions.php:37
+msgid "Can send me private mail messages"
+msgstr "Pot enviar-me un missatge de correu privat"
+
+#: ../../include/permissions.php:38
+msgid "Can post photos to my photo albums"
+msgstr "Pot enviar fotos al meus àlbums de fotos"
+
+#: ../../include/permissions.php:39
+msgid "Can like/dislike stuff"
+msgstr "Pot dir si agrada/desagrada "
+
+#: ../../include/permissions.php:39
+msgid "Profiles and things other than posts/comments"
+msgstr "Perfils i altres coses a més d'entrades/comentaris"
+
+#: ../../include/permissions.php:41
+msgid "Can forward to all my channel contacts via post @mentions"
+msgstr "Ho pot enviar a tots els meus contactes del canal via entrades @mencions"
+
+#: ../../include/permissions.php:41
+msgid "Advanced - useful for creating group forum channels"
+msgstr "Avançat - capaç de crear canals de grups de foro"
+
+#: ../../include/permissions.php:42
+msgid "Can chat with me (when available)"
+msgstr "Pot xatejar amb mi (si estic disponible)"
+
+#: ../../include/permissions.php:43
+msgid "Can write to my file storage"
+msgstr "Pot escriure al meu magatzem d'arxius"
+
+#: ../../include/permissions.php:44
+msgid "Can edit my webpages"
+msgstr "Pot editar les meves pàgines web"
+
+#: ../../include/permissions.php:46
+msgid "Can source my public posts in derived channels"
+msgstr "Pot mostrar l'origen de les meves entrades públiques en altres canals"
+
+#: ../../include/permissions.php:46
+msgid "Somewhat advanced - very useful in open communities"
+msgstr "Quelcom avançat - molt útil en comunitats obertes"
+
+#: ../../include/permissions.php:48
+msgid "Can administer my channel resources"
+msgstr "Pot administrar els meus recursos del canal"
+
+#: ../../include/permissions.php:48
+msgid ""
+"Extremely advanced. Leave this alone unless you know what you are doing"
+msgstr "Extremadament avançat. No toquis res si no saps que estàs fent"
+
+#: ../../include/permissions.php:893
+msgid "Social Networking"
+msgstr "Xarxes Socials"
+
+#: ../../include/permissions.php:893 ../../include/permissions.php:894
+#: ../../include/permissions.php:895
+msgid "Mostly Public"
+msgstr "Més aviat Públic"
+
+#: ../../include/permissions.php:893 ../../include/permissions.php:894
+#: ../../include/permissions.php:895
+msgid "Restricted"
+msgstr "Restringit"
+
+#: ../../include/permissions.php:893 ../../include/permissions.php:894
+msgid "Private"
+msgstr "Privat"
+
+#: ../../include/permissions.php:894
+msgid "Community Forum"
+msgstr "Foro de Comunitat"
+
+#: ../../include/permissions.php:895
+msgid "Feed Republish"
+msgstr "Republicador"
+
+#: ../../include/permissions.php:896
+msgid "Special Purpose"
+msgstr "Objectiu Especial"
+
+#: ../../include/permissions.php:896
+msgid "Celebrity/Soapbox"
+msgstr "Celebritat/Faristol"
+
+#: ../../include/permissions.php:896
+msgid "Group Repository"
+msgstr "Repositori de Grup"
+
+#: ../../include/permissions.php:897 ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:61
+#: ../../include/profile_selectors.php:97
+msgid "Other"
+msgstr "Altres"
+
+#: ../../include/permissions.php:897
+msgid "Custom/Expert Mode"
+msgstr "Personalitzat/Mode Expert"
+
+#: ../../include/photos.php:94
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "La imatge excedeix la mida limit pel lloc web en %lu bytes"
+
+#: ../../include/photos.php:101
+msgid "Image file is empty."
+msgstr "El fitxer d'imatge esta buit."
+
+#: ../../include/photos.php:128 ../../mod/profile_photo.php:217
+msgid "Unable to process image"
+msgstr "incapaç de processar la imatge"
+
+#: ../../include/photos.php:199
+msgid "Photo storage failed."
+msgstr "Fracassà l'emmagatzematge de la Foto"
+
+#: ../../include/photos.php:363
+msgid "Upload New Photos"
+msgstr "Puja Noves Fotos"
+
+#: ../../include/taxonomy.php:222 ../../include/taxonomy.php:243
+msgid "Tags"
+msgstr "Etiquetes"
+
+#: ../../include/taxonomy.php:287
+msgid "Keywords"
+msgstr "Paraules clau"
+
+#: ../../include/taxonomy.php:308
+msgid "have"
+msgstr "tinc"
+
+#: ../../include/taxonomy.php:308
+msgid "has"
+msgstr "tens"
+
+#: ../../include/taxonomy.php:309
+msgid "want"
+msgstr "vull"
+
+#: ../../include/taxonomy.php:309
+msgid "wants"
+msgstr "vols"
+
+#: ../../include/taxonomy.php:310
+msgid "likes"
+msgstr "li agrada"
+
+#: ../../include/taxonomy.php:311
+msgid "dislikes"
+msgstr "no li agrada"
+
#: ../../include/profile_selectors.php:6
#: ../../include/profile_selectors.php:23 ../../mod/id.php:103
msgid "Male"
@@ -3761,1106 +3931,1013 @@ msgstr "No Et Fa Res"
msgid "Ask me"
msgstr "Pregunta"
-#: ../../include/apps.php:128
-msgid "Site Admin"
-msgstr "Administració"
+#: ../../mod/mail.php:33
+msgid "Unable to lookup recipient."
+msgstr "Incapaç de trobar el destinatari."
-#: ../../include/apps.php:130
-msgid "Address Book"
-msgstr "Adreçes"
+#: ../../mod/mail.php:41
+msgid "Unable to communicate with requested channel."
+msgstr "Incapaç de comunicar amb el canal demanat."
-#: ../../include/apps.php:144 ../../mod/mood.php:130
-msgid "Mood"
-msgstr "Ànim"
+#: ../../mod/mail.php:48
+msgid "Cannot verify requested channel."
+msgstr "No puc verificar el canal demanat."
-#: ../../include/apps.php:148
-msgid "Probe"
-msgstr "Sondeig"
+#: ../../mod/mail.php:74
+msgid "Selected channel has private message restrictions. Send failed."
+msgstr "El canal seleccionat te restriccions sobre els missatges privats. L'enviament ha fallat."
-#: ../../include/apps.php:149
-msgid "Suggest"
-msgstr "Suggeriment"
+#: ../../mod/mail.php:139
+msgid "Message deleted."
+msgstr "Missatge eliminat."
-#: ../../include/apps.php:150
-msgid "Random Channel"
-msgstr "Canal Aleatori"
+#: ../../mod/mail.php:156
+msgid "Message recalled."
+msgstr "Recupera el missatge."
-#: ../../include/apps.php:151
-msgid "Invite"
-msgstr "Convida"
+#: ../../mod/mail.php:225
+msgid "Send Private Message"
+msgstr "Envia Missatge Privat"
-#: ../../include/apps.php:152
-msgid "Features"
-msgstr "Funcionalitats"
+#: ../../mod/mail.php:226 ../../mod/mail.php:343
+msgid "To:"
+msgstr "Per:"
-#: ../../include/apps.php:153 ../../mod/id.php:28
-msgid "Language"
-msgstr "Idioma"
+#: ../../mod/mail.php:231 ../../mod/mail.php:345
+msgid "Subject:"
+msgstr "Assumpte:"
-#: ../../include/apps.php:154
-msgid "Post"
-msgstr "Entrada"
+#: ../../mod/mail.php:235 ../../mod/mail.php:348 ../../mod/invite.php:131
+msgid "Your message:"
+msgstr "El teu missatge:"
-#: ../../include/apps.php:155 ../../mod/id.php:17 ../../mod/id.php:18
-#: ../../mod/id.php:19
-msgid "Profile Photo"
-msgstr "Foto del Perfil"
+#: ../../mod/mail.php:242
+msgid "Send"
+msgstr "Envia"
-#: ../../include/apps.php:247 ../../mod/settings.php:84
-#: ../../mod/settings.php:614
-msgid "Update"
-msgstr "Actualització"
+#: ../../mod/mail.php:269
+msgid "Message not found."
+msgstr "Missatge no trobat."
-#: ../../include/apps.php:247
-msgid "Install"
-msgstr "Instal·lar"
+#: ../../mod/mail.php:312
+msgid "Delete message"
+msgstr "Elimina el missatge"
-#: ../../include/apps.php:252
-msgid "Purchase"
-msgstr "Compra"
+#: ../../mod/mail.php:313
+msgid "Recall message"
+msgstr "Recupera el missatge"
-#: ../../include/bbcode.php:122 ../../include/bbcode.php:768
-#: ../../include/bbcode.php:771 ../../include/bbcode.php:776
-#: ../../include/bbcode.php:779 ../../include/bbcode.php:782
-#: ../../include/bbcode.php:785 ../../include/bbcode.php:790
-#: ../../include/bbcode.php:793 ../../include/bbcode.php:798
-#: ../../include/bbcode.php:801 ../../include/bbcode.php:804
-#: ../../include/bbcode.php:807
-msgid "Image/photo"
-msgstr "Imatge/foto"
+#: ../../mod/mail.php:315
+msgid "Message has been recalled."
+msgstr "El missatge s'ha recuperat."
-#: ../../include/bbcode.php:161 ../../include/bbcode.php:818
-msgid "Encrypted content"
-msgstr "Contingut encriptat"
+#: ../../mod/mail.php:332
+msgid "Private Conversation"
+msgstr "Conversació Privada"
-#: ../../include/bbcode.php:178
-#, php-format
-msgid "Install %s element: "
-msgstr "Instal·la l'element %s:"
+#: ../../mod/mail.php:336 ../../mod/message.php:72
+msgid "Delete conversation"
+msgstr "Conversació esborrada"
-#: ../../include/bbcode.php:182
-#, php-format
+#: ../../mod/mail.php:338
msgid ""
-"This post contains an installable %s element, however you lack permissions "
-"to install it on this site."
-msgstr "Aquesta entrada contè un element %s instal·lable, potser manques de permissos per instal·lar-lo en aquest lloc."
-
-#: ../../include/bbcode.php:192 ../../mod/impel.php:37
-msgid "webpage"
-msgstr "pàgina web"
-
-#: ../../include/bbcode.php:195 ../../mod/impel.php:47
-msgid "layout"
-msgstr "disposició"
-
-#: ../../include/bbcode.php:198 ../../mod/impel.php:42
-msgid "block"
-msgstr "bloc"
-
-#: ../../include/bbcode.php:201 ../../mod/impel.php:54
-msgid "menu"
-msgstr "menú"
-
-#: ../../include/bbcode.php:215
-msgid "QR code"
-msgstr "QR code"
-
-#: ../../include/bbcode.php:266
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s va escriure el següent %2$s %3$s"
+"No secure communications available. You <strong>may</strong> be able to "
+"respond from the sender's profile page."
+msgstr "Comunicació segura no disponible. Pots respondre des de la pàgina de perfil del remitent."
-#: ../../include/bbcode.php:268 ../../mod/tagger.php:51
-msgid "post"
-msgstr "entrada"
+#: ../../mod/mail.php:342
+msgid "Send Reply"
+msgstr "Envia Resposta"
-#: ../../include/bbcode.php:518
-msgid "Different viewers will see this text differently"
-msgstr "Diferents observadors veuran aquest text de diferents formes"
+#: ../../mod/magic.php:69
+msgid "Hub not found."
+msgstr "Concentrador no trobat."
-#: ../../include/bbcode.php:729
-msgid "$1 spoiler"
-msgstr "$1 spoiler"
+#: ../../mod/achievements.php:34
+msgid "Some blurb about what to do when you're new here"
+msgstr "Algunes propostes sobre què pots fer quan ets nou per aquí"
-#: ../../include/bbcode.php:756
-msgid "$1 wrote:"
-msgstr "$1 va escriure:"
+#: ../../mod/page.php:36 ../../mod/block.php:27
+msgid "Invalid item."
+msgstr "Article invàlid."
-#: ../../include/chat.php:23
-msgid "Missing room name"
-msgstr "Perdut el nom de la sala"
+#: ../../mod/page.php:52 ../../mod/block.php:39 ../../mod/wall_upload.php:29
+msgid "Channel not found."
+msgstr "Canal no trobat."
-#: ../../include/chat.php:32
-msgid "Duplicate room name"
-msgstr "Nom de la sala duplicat"
+#: ../../mod/page.php:89 ../../mod/block.php:75 ../../mod/display.php:110
+#: ../../mod/help.php:79 ../../index.php:245
+msgid "Page not found."
+msgstr "Pàgina no trobada."
-#: ../../include/chat.php:82 ../../include/chat.php:90
-msgid "Invalid room specifier."
-msgstr "Especificació de la sala invàlida."
+#: ../../mod/page.php:126
+msgid "Lorem Ipsum"
+msgstr "Lorem Ipsum"
-#: ../../include/chat.php:120
-msgid "Room not found."
-msgstr "Sala no trobada."
+#: ../../mod/acl.php:231
+msgid "network"
+msgstr "xarxa"
-#: ../../include/chat.php:141
-msgid "Room is full"
-msgstr "La sala es plena"
+#: ../../mod/acl.php:241
+msgid "RSS"
+msgstr "RSS"
-#: ../../include/photos.php:94
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "La imatge excedeix la mida limit pel lloc web en %lu bytes"
+#: ../../mod/admin.php:52
+msgid "Theme settings updated."
+msgstr "Ajustos de tema actualitzats."
-#: ../../include/photos.php:101
-msgid "Image file is empty."
-msgstr "El fitxer d'imatge esta buit."
+#: ../../mod/admin.php:93 ../../mod/admin.php:452
+msgid "Site"
+msgstr "Lloc"
-#: ../../include/photos.php:128 ../../mod/profile_photo.php:217
-msgid "Unable to process image"
-msgstr "incapaç de processar la imatge"
+#: ../../mod/admin.php:94
+msgid "Accounts"
+msgstr "Comptes"
-#: ../../include/photos.php:199
-msgid "Photo storage failed."
-msgstr "Fracassà l'emmagatzematge de la Foto"
+#: ../../mod/admin.php:95 ../../mod/admin.php:985
+msgid "Channels"
+msgstr "Canals"
-#: ../../include/photos.php:363
-msgid "Upload New Photos"
-msgstr "Puja Noves Fotos"
+#: ../../mod/admin.php:96 ../../mod/admin.php:1077 ../../mod/admin.php:1117
+msgid "Plugins"
+msgstr "Plugins"
-#: ../../mod/achievements.php:34
-msgid "Some blurb about what to do when you're new here"
-msgstr "Algunes propostes sobre el que cal fer quan ets nou aquí"
+#: ../../mod/admin.php:97 ../../mod/admin.php:1277 ../../mod/admin.php:1311
+msgid "Themes"
+msgstr "Temes"
-#: ../../mod/manage.php:136
-#, php-format
-msgid "You have created %1$.0f of %2$.0f allowed channels."
-msgstr "Has creat %1$.0f de %2$.0f canals permesos."
+#: ../../mod/admin.php:98
+msgid "Inspect queue"
+msgstr "Revisa cua"
-#: ../../mod/manage.php:144
-msgid "Create a new channel"
-msgstr "Crear un nou canal"
+#: ../../mod/admin.php:100
+msgid "Profile Config"
+msgstr "Configuració del Perfil"
-#: ../../mod/manage.php:167
-msgid "Current Channel"
-msgstr "Canal Actual"
+#: ../../mod/admin.php:101
+msgid "DB updates"
+msgstr "Actualitzacions de Base de Dades"
-#: ../../mod/manage.php:169
-msgid "Switch to one of your channels by selecting it."
-msgstr "Canviar a un altre dels teus canals seleccionant-ho."
+#: ../../mod/admin.php:115 ../../mod/admin.php:122 ../../mod/admin.php:1396
+msgid "Logs"
+msgstr "Logs"
-#: ../../mod/manage.php:170
-msgid "Default Channel"
-msgstr "Canal per Defecte"
+#: ../../mod/admin.php:121
+msgid "Plugin Features"
+msgstr "Característiques del Plugin"
-#: ../../mod/manage.php:171
-msgid "Make Default"
-msgstr "Estableix com a Predeterminat"
+#: ../../mod/admin.php:123
+msgid "User registrations waiting for confirmation"
+msgstr "Registre d'usuaris esperant confirmació"
-#: ../../mod/manage.php:174
-#, php-format
-msgid "%d new messages"
-msgstr "%d missatges nous"
+#: ../../mod/admin.php:200
+msgid "# Accounts"
+msgstr "# Comptes"
-#: ../../mod/manage.php:175
-#, php-format
-msgid "%d new introductions"
-msgstr "%d noves presentacions"
+#: ../../mod/admin.php:201
+msgid "# blocked accounts"
+msgstr "# comptes bloquejats"
-#: ../../mod/manage.php:177
-msgid "Delegated Channels"
-msgstr "Canals Delegats"
+#: ../../mod/admin.php:202
+msgid "# expired accounts"
+msgstr "# comptes expirats"
-#: ../../mod/directory.php:59 ../../mod/photos.php:441 ../../mod/search.php:13
-#: ../../mod/ratings.php:82 ../../mod/viewconnections.php:17
-#: ../../mod/display.php:13
-msgid "Public access denied."
-msgstr "Accés públic denegat."
+#: ../../mod/admin.php:203
+msgid "# expiring accounts"
+msgstr "# comptes expirant"
-#: ../../mod/directory.php:234
-#, php-format
-msgid "%d rating"
-msgid_plural "%d ratings"
-msgstr[0] "%d valoració"
-msgstr[1] "%d valoracions"
+#: ../../mod/admin.php:216
+msgid "# Channels"
+msgstr "# Canals"
-#: ../../mod/directory.php:245
-msgid "Gender: "
-msgstr "Gènere:"
+#: ../../mod/admin.php:217
+msgid "# primary"
+msgstr "# primari"
-#: ../../mod/directory.php:247
-msgid "Status: "
-msgstr "Estatus:"
+#: ../../mod/admin.php:218
+msgid "# clones"
+msgstr "# clons"
-#: ../../mod/directory.php:249
-msgid "Homepage: "
-msgstr "Pàgina Personal:"
+#: ../../mod/admin.php:224
+msgid "Message queues"
+msgstr "Cues de missatges"
-#: ../../mod/directory.php:308 ../../mod/events.php:659
-msgid "Description:"
-msgstr "Descripció:"
+#: ../../mod/admin.php:240 ../../mod/admin.php:451 ../../mod/admin.php:548
+#: ../../mod/admin.php:817 ../../mod/admin.php:984 ../../mod/admin.php:1076
+#: ../../mod/admin.php:1116 ../../mod/admin.php:1276 ../../mod/admin.php:1310
+#: ../../mod/admin.php:1395
+msgid "Administration"
+msgstr "Administració"
-#: ../../mod/directory.php:317
-msgid "Public Forum:"
-msgstr "Forum Públic:"
+#: ../../mod/admin.php:241
+msgid "Summary"
+msgstr "Sumari"
-#: ../../mod/directory.php:320
-msgid "Keywords: "
-msgstr "Paraules Clau:"
+#: ../../mod/admin.php:244
+msgid "Registered accounts"
+msgstr "Comptes registrades"
-#: ../../mod/directory.php:323
-msgid "Don't suggest"
-msgstr "No suggerir"
+#: ../../mod/admin.php:245 ../../mod/admin.php:552
+msgid "Pending registrations"
+msgstr "Comptes pendents de registre"
-#: ../../mod/directory.php:325
-msgid "Common connections:"
-msgstr "Connexions en comú:"
+#: ../../mod/admin.php:246
+msgid "Registered channels"
+msgstr "Canals registrats"
-#: ../../mod/directory.php:374
-msgid "Global Directory"
-msgstr "Directori Global"
+#: ../../mod/admin.php:247 ../../mod/admin.php:553
+msgid "Active plugins"
+msgstr "Plugins actius"
-#: ../../mod/directory.php:374
-msgid "Local Directory"
-msgstr "Directori Local"
+#: ../../mod/admin.php:248
+msgid "Version"
+msgstr "Versió"
-#: ../../mod/directory.php:380
-msgid "Finding:"
-msgstr "Cercant:"
+#: ../../mod/admin.php:363
+msgid "Site settings updated."
+msgstr "Ajustos del Lloc actualitzats"
-#: ../../mod/directory.php:385
-msgid "next page"
-msgstr "pàgina següent"
+#: ../../mod/admin.php:400 ../../mod/settings.php:813
+msgid "mobile"
+msgstr "mòbil"
-#: ../../mod/directory.php:385
-msgid "previous page"
-msgstr "pàgina anterior"
+#: ../../mod/admin.php:402
+msgid "experimental"
+msgstr "experimental"
-#: ../../mod/directory.php:386
-msgid "Sort options"
-msgstr "Opcions per ordenar"
+#: ../../mod/admin.php:404
+msgid "unsupported"
+msgstr "no soportat"
-#: ../../mod/directory.php:387
-msgid "Alphabetic"
-msgstr "Alfabètic"
+#: ../../mod/admin.php:429
+msgid "Yes - with approval"
+msgstr "Sí - amb aprovació"
-#: ../../mod/directory.php:388
-msgid "Reverse Alphabetic"
-msgstr "Alfabètic Invers"
+#: ../../mod/admin.php:435
+msgid "My site is not a public server"
+msgstr "El meu lloc no es un servidor públic"
-#: ../../mod/directory.php:389
-msgid "Newest to Oldest"
-msgstr "De més Nou a més Vell"
+#: ../../mod/admin.php:436
+msgid "My site has paid access only"
+msgstr "El meu lloc te accès per pagament"
-#: ../../mod/directory.php:390
-msgid "Oldest to Newest"
-msgstr "De més Antic a més Nou"
+#: ../../mod/admin.php:437
+msgid "My site has free access only"
+msgstr "El meu lloc te lliure accés"
-#: ../../mod/directory.php:407
-msgid "No entries (some entries may be hidden)."
-msgstr "Sense entrades (algunes podrien estar amagades)."
+#: ../../mod/admin.php:438
+msgid "My site offers free accounts with optional paid upgrades"
+msgstr "El meu lloc te comptes gratis amb opció de millores per pagament"
-#: ../../mod/xchan.php:6
-msgid "Xchan Lookup"
-msgstr "Cerca a xchan"
+#: ../../mod/admin.php:454 ../../mod/register.php:207
+msgid "Registration"
+msgstr "Registre"
-#: ../../mod/xchan.php:9
-msgid "Lookup xchan beginning with (or webbie): "
-msgstr "Cerca a xchan començant per (o webbie)"
+#: ../../mod/admin.php:455
+msgid "File upload"
+msgstr "Pujar arxiu"
-#: ../../mod/xchan.php:37 ../../mod/mitem.php:114 ../../mod/menu.php:156
-msgid "Not found."
-msgstr "No trobat."
+#: ../../mod/admin.php:456
+msgid "Policies"
+msgstr "Polítiques"
-#: ../../mod/api.php:76 ../../mod/api.php:102
-msgid "Authorize application connection"
-msgstr "Autoritza la connexió de l'aplicació"
+#: ../../mod/admin.php:461
+msgid "Site name"
+msgstr "Nom del lloc"
-#: ../../mod/api.php:77
-msgid "Return to your app and insert this Securty Code:"
-msgstr "Torna a la teva aplicació i insereix aquest Codi de Seguretat:"
+#: ../../mod/admin.php:462
+msgid "Banner/Logo"
+msgstr "Senyera/Logo"
-#: ../../mod/api.php:89
-msgid "Please login to continue."
-msgstr "Si et plau, identifica't per continuar."
+#: ../../mod/admin.php:463
+msgid "Administrator Information"
+msgstr "Informació de l'Administrador"
-#: ../../mod/api.php:104
+#: ../../mod/admin.php:463
msgid ""
-"Do you want to authorize this application to access your posts and contacts,"
-" and/or create new posts for you?"
-msgstr "Vols autoritzar a aquesta aplicació l'accés a les teves entrades i contactes i/o a crear noves entrades com si fos tu mateix."
-
-#: ../../mod/webpages.php:191
-msgid "Page Title"
-msgstr "Títol de la pàgina"
-
-#: ../../mod/follow.php:25
-msgid "Channel added."
-msgstr "S'ha afegit el canal."
+"Contact information for site administrators. Displayed on siteinfo page. "
+"BBCode can be used here"
+msgstr "Informació per contactar amb els administradors del lloc. Mostrada a la pàgina d'informació del lloc. Es pot emprar BBCode aquí"
-#: ../../mod/tagrm.php:44 ../../mod/tagrm.php:94
-msgid "Tag removed"
-msgstr "S'ha tret l'etiqueta"
+#: ../../mod/admin.php:464
+msgid "System language"
+msgstr "Idioma del sistema"
-#: ../../mod/tagrm.php:119
-msgid "Remove Item Tag"
-msgstr "Elimina l'etiqueta d'element"
+#: ../../mod/admin.php:465
+msgid "System theme"
+msgstr "Tema del sistema"
-#: ../../mod/tagrm.php:121
-msgid "Select a tag to remove: "
-msgstr "Tria l'etiqueta a eliminar:"
+#: ../../mod/admin.php:465
+msgid ""
+"Default system theme - may be over-ridden by user profiles - <a href='#' "
+"id='cnftheme'>change theme settings</a>"
+msgstr "Tema del sistema per defecte - pot ser sobrescrit pel perfils dels usuaris - <a href='#' id='cnftheme'>Ajustos de canvi del tema</a>"
-#: ../../mod/tagrm.php:133 ../../mod/photos.php:887
-msgid "Remove"
-msgstr "Esborra"
+#: ../../mod/admin.php:466
+msgid "Mobile system theme"
+msgstr "Tema del sistema per a mòbils"
-#: ../../mod/connect.php:56 ../../mod/connect.php:104
-msgid "Continue"
-msgstr "Continua"
+#: ../../mod/admin.php:466
+msgid "Theme for mobile devices"
+msgstr "Tema per a aparells mòbils"
-#: ../../mod/connect.php:85
-msgid "Premium Channel Setup"
-msgstr "Configuració de Canals Premium"
+#: ../../mod/admin.php:468
+msgid "Enable Diaspora Protocol"
+msgstr "Activat el Protocol Diaspora"
-#: ../../mod/connect.php:87
-msgid "Enable premium channel connection restrictions"
-msgstr "Habilita les restriccions de connexió del canal premium"
+#: ../../mod/admin.php:468
+msgid "Communicate with Diaspora and Friendica - experimental"
+msgstr "Comunicar amb Diaspora i Friendica - experimental"
-#: ../../mod/connect.php:88
-msgid ""
-"Please enter your restrictions or conditions, such as paypal receipt, usage "
-"guidelines, etc."
-msgstr "Si us plau, introdueixi les restriccions o condicions, com ara el rebut de PayPal, les pautes d'ús, etc."
+#: ../../mod/admin.php:469
+msgid "Allow Feeds as Connections"
+msgstr "Permetre Retroalimentadors com Connexions"
-#: ../../mod/connect.php:90 ../../mod/connect.php:110
-msgid ""
-"This channel may require additional steps or acknowledgement of the "
-"following conditions prior to connecting:"
-msgstr "Aquest canal pot requerir passos addicionals o reconeixement de les següents condicions abans de connectar:"
+#: ../../mod/admin.php:469
+msgid "(Heavy system resource usage)"
+msgstr "(Demana molts recursos del sistema)"
-#: ../../mod/connect.php:91
-msgid ""
-"Potential connections will then see the following text before proceeding:"
-msgstr "Connexions potencials veuran el següent text abans de continuar:"
+#: ../../mod/admin.php:470
+msgid "Maximum image size"
+msgstr "Mida màxima d'imatge"
-#: ../../mod/connect.php:92 ../../mod/connect.php:113
+#: ../../mod/admin.php:470
msgid ""
-"By continuing, I certify that I have complied with any instructions provided"
-" on this page."
-msgstr "En continuar, certifico que he complert amb totes les instruccions proporcionades en aquesta pàgina."
-
-#: ../../mod/connect.php:101
-msgid "(No specific instructions have been provided by the channel owner.)"
-msgstr "(No s'han proporcionat instruccions específiques pel propietari del canal.)"
-
-#: ../../mod/connect.php:109
-msgid "Restricted or Premium Channel"
-msgstr "Canal Restringit o Premium"
-
-#: ../../mod/thing.php:94
-msgid "Thing updated"
-msgstr "S'ha actualitzat la cosa"
+"Maximum size in bytes of uploaded images. Default is 0, which means no "
+"limits."
+msgstr "Mida màxima en bytes de imatges pujades. Per defecte es 0, el que vol dir sense límits."
-#: ../../mod/thing.php:153
-msgid "Object store: failed"
-msgstr "No s'ha pogut emmagatzemar l'objecte"
+#: ../../mod/admin.php:471
+msgid "Does this site allow new member registration?"
+msgstr "Permet aquest lloc registre de nous membres?"
-#: ../../mod/thing.php:157
-msgid "Thing added"
-msgstr "S'ha afegit la cosa"
+#: ../../mod/admin.php:472
+msgid "Which best describes the types of account offered by this hub?"
+msgstr "Que es es que millor descriu la mena de comptes oferits per aquest concentrador?"
-#: ../../mod/thing.php:175
-#, php-format
-msgid "OBJ: %1$s %2$s %3$s"
-msgstr "OBJ: %1$s %2$s %3$s"
+#: ../../mod/admin.php:473
+msgid "Register text"
+msgstr "text de registre"
-#: ../../mod/thing.php:226
-msgid "Show Thing"
-msgstr "Mostra la cosa"
+#: ../../mod/admin.php:473
+msgid "Will be displayed prominently on the registration page."
+msgstr "Es mostrarà preminentment a la pàgina de registre"
-#: ../../mod/thing.php:233
-msgid "item not found."
-msgstr "no s'ha trobat l'element."
+#: ../../mod/admin.php:474
+msgid "Site homepage to show visitors (default: login box)"
+msgstr "Pàgina d'inici a mostrar als visitants (per defecte: la pàgina d'identificació)"
-#: ../../mod/thing.php:261
-msgid "Edit Thing"
-msgstr "Edita la cosa"
+#: ../../mod/admin.php:474
+msgid ""
+"example: 'public' to show public stream, 'page/sys/home' to show a system "
+"webpage called 'home' or 'include:home.html' to include a file."
+msgstr "exemple: 'públic' per a mostrar un flux públic, 'page/sys/home' per a mostrar una pàgina web dita 'home' o 'include:home.html' per a incloure un arxiu."
-#: ../../mod/thing.php:263 ../../mod/thing.php:310
-msgid "Select a profile"
-msgstr "Tria un perfil"
+#: ../../mod/admin.php:475
+msgid "Preserve site homepage URL"
+msgstr "Preservar URL de la pàgina web"
-#: ../../mod/thing.php:267 ../../mod/thing.php:313
-msgid "Post an activity"
-msgstr "Publica una activitat"
+#: ../../mod/admin.php:475
+msgid ""
+"Present the site homepage in a frame at the original location instead of "
+"redirecting"
+msgstr "Presenta la pàgina web del lloc en un marc en el lloc original enlloc de redirigir cap a ella"
-#: ../../mod/thing.php:267 ../../mod/thing.php:313
-msgid "Only sends to viewers of the applicable profile"
-msgstr "S'envia només a visitants del perfil corresponent"
+#: ../../mod/admin.php:476
+msgid "Accounts abandoned after x days"
+msgstr "Els copmte es consideren abandonats despres de x dies"
-#: ../../mod/thing.php:269 ../../mod/thing.php:315
-msgid "Name of thing e.g. something"
-msgstr "Nom de la cosa. Exemple: patata"
+#: ../../mod/admin.php:476
+msgid ""
+"Will not waste system resources polling external sites for abandonded "
+"accounts. Enter 0 for no time limit."
+msgstr "No malgastar recursos del sistema sondejant llocs externs per acomptes abandonats. Entrar 0 vol dir sense límit de temps."
-#: ../../mod/thing.php:271 ../../mod/thing.php:316
-msgid "URL of thing (optional)"
-msgstr "Adreça URL de la cosa (opcional)"
+#: ../../mod/admin.php:477
+msgid "Allowed friend domains"
+msgstr "dominis amics permesos"
-#: ../../mod/thing.php:273 ../../mod/thing.php:317
-msgid "URL for photo of thing (optional)"
-msgstr "Adreça URL de la foto d'una cosa (opcional)"
+#: ../../mod/admin.php:477
+msgid ""
+"Comma separated list of domains which are allowed to establish friendships "
+"with this site. Wildcards are accepted. Empty to allow any domains"
+msgstr "llista separada per comes de dominis en els que està permès establir relacions d'amistat amb aquest lloc. S'accepten comodins. Deixar buit per acceptar qualsevol domini"
-#: ../../mod/thing.php:308
-msgid "Add Thing to your Profile"
-msgstr "Afegeix una cosa al teu perfil"
+#: ../../mod/admin.php:478
+msgid "Allowed email domains"
+msgstr "Dominis de correu electonic acceptats"
-#: ../../mod/attach.php:9
-msgid "Item not available."
-msgstr "Article no disponible."
+#: ../../mod/admin.php:478
+msgid ""
+"Comma separated list of domains which are allowed in email addresses for "
+"registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains"
+msgstr "llista separada per comes de dominis de adreces de correu electrònic permeses en aquest lloc. S'accepten comodins. Deixar buit per acceptar qualsevol domini"
-#: ../../mod/probe.php:24 ../../mod/probe.php:30
-#, php-format
-msgid "Fetching URL returns error: %1$s"
-msgstr "URL sol·licitada retorna error: %1$s"
+#: ../../mod/admin.php:479
+msgid "Not allowed email domains"
+msgstr "Dominis de correu electrònic no acceptats"
-#: ../../mod/profile_photo.php:108
-msgid "Image uploaded but image cropping failed."
-msgstr "S'ha pujat la imatge però no s'ha pogut retallar."
+#: ../../mod/admin.php:479
+msgid ""
+"Comma separated list of domains which are not allowed in email addresses for"
+" registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains, unless allowed domains have been defined."
+msgstr "llista separada per comes de dominis de adreces de correu electrònic no permeses en aquest lloc. S'accepten comodins. Deixar buit per no acceptar cap domini, excepte els que s'hagin definits com acceptats."
-#: ../../mod/profile_photo.php:162
-msgid "Image resize failed."
-msgstr "No s'ha pogut escalar la imatge."
+#: ../../mod/admin.php:480
+msgid "Block public"
+msgstr "Bloc públic"
-#: ../../mod/profile_photo.php:206
+#: ../../mod/admin.php:480
msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Refresca la memòria cau del navegador si la foto no s'actualitza immediatament. Dreceres: «Ctrl+F5» i «Ctrl+Maj+R»"
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently logged in."
+msgstr "Activa per a bloquejar l'accés públic a totes les pàgines públiques personals excepte si estàs identificat en el sistema."
-#: ../../mod/profile_photo.php:233
-#, php-format
-msgid "Image exceeds size limit of %d"
-msgstr "La imatge excedeix la mida límit de %d"
+#: ../../mod/admin.php:481
+msgid "Verify Email Addresses"
+msgstr "Verifica l'Adreça de Correu Electrònic"
-#: ../../mod/profile_photo.php:242
-msgid "Unable to process image."
-msgstr "Incapaç de processar l'imatge."
+#: ../../mod/admin.php:481
+msgid ""
+"Check to verify email addresses used in account registration (recommended)."
+msgstr "Activa per comprovar l'adreça de correu electrònic emprada durant el registre d'un nou compte (recomanat)"
-#: ../../mod/profile_photo.php:291 ../../mod/profile_photo.php:340
-msgid "Photo not available."
-msgstr "Foto no disponible."
+#: ../../mod/admin.php:482
+msgid "Force publish"
+msgstr "Forza la publicació"
-#: ../../mod/profile_photo.php:359
-msgid "Upload File:"
-msgstr "Puja Arxiu:"
+#: ../../mod/admin.php:482
+msgid ""
+"Check to force all profiles on this site to be listed in the site directory."
+msgstr "Activa per forzar que tots el perfils en aquest lloc siguin llistats en el directori del lloc."
-#: ../../mod/profile_photo.php:360
-msgid "Select a profile:"
-msgstr "Tria un perfil:"
+#: ../../mod/admin.php:483
+msgid "Disable discovery tab"
+msgstr "Desactiva la pestañnya de descobrir"
-#: ../../mod/profile_photo.php:361
-msgid "Upload Profile Photo"
-msgstr "Puja una Foto pel Perfil"
+#: ../../mod/admin.php:483
+msgid ""
+"Remove the tab in the network view with public content pulled from sources "
+"chosen for this site."
+msgstr "Treu la pesranya per veure contingut públic de la xarxa extret d'origens triats per aquest lloc."
-#: ../../mod/profile_photo.php:366 ../../mod/settings.php:995
-msgid "or"
-msgstr "o"
+#: ../../mod/admin.php:484
+msgid "login on Homepage"
+msgstr "Accés a la Pàgina d'inici"
-#: ../../mod/profile_photo.php:366
-msgid "skip this step"
-msgstr "salta aquest pas"
+#: ../../mod/admin.php:484
+msgid ""
+"Present a login box to visitors on the home page if no other content has "
+"been configured."
+msgstr "Presenta una casella d'identificació a la pàgina d'inici als visitants si no s'ha configurat altre contingut."
-#: ../../mod/profile_photo.php:366
-msgid "select a photo from your photo albums"
-msgstr "tria una foto del teu àlbum de fotos"
+#: ../../mod/admin.php:486
+msgid "Proxy user"
+msgstr "Usuari Proxy"
-#: ../../mod/profile_photo.php:382
-msgid "Crop Image"
-msgstr "Retalla Imatge"
+#: ../../mod/admin.php:487
+msgid "Proxy URL"
+msgstr "URL del Proxy"
-#: ../../mod/profile_photo.php:383
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Si us plau, retalla la imatge per a una optima visualització"
+#: ../../mod/admin.php:488
+msgid "Network timeout"
+msgstr "Temps d'espera de la xarxa"
-#: ../../mod/profile_photo.php:385
-msgid "Done Editing"
-msgstr "Edició Feta"
+#: ../../mod/admin.php:488
+msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+msgstr "Valor en segons. Ajusta a 0 per a sense límits (no recomanat)"
-#: ../../mod/profile_photo.php:428
-msgid "Image uploaded successfully."
-msgstr "Imatge pujada exitosament."
+#: ../../mod/admin.php:489
+msgid "Delivery interval"
+msgstr "Interval de lliurament"
-#: ../../mod/profile_photo.php:430
-msgid "Image upload failed."
-msgstr "La pujada de la imatge va fracassar."
+#: ../../mod/admin.php:489
+msgid ""
+"Delay background delivery processes by this many seconds to reduce system "
+"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
+"for large dedicated servers."
+msgstr "Retarda en segon plà l'interval de lliurament per aquests segons per reduir la càrrega del sistema. Recomanat: 4-5 per a hostes compartits, 2-3 per a servidors privats virtuals. 0-1 per a servidors dedicats."
-#: ../../mod/profile_photo.php:439
-#, php-format
-msgid "Image size reduction [%s] failed."
-msgstr "La reducció de mida de la imatge [%s] va fracassar."
+#: ../../mod/admin.php:490
+msgid "Poll interval"
+msgstr "interval de sondeig"
-#: ../../mod/block.php:27 ../../mod/page.php:36
-msgid "Invalid item."
-msgstr "Article invàlid."
+#: ../../mod/admin.php:490
+msgid ""
+"Delay background polling processes by this many seconds to reduce system "
+"load. If 0, use delivery interval."
+msgstr "Retarda en segon pla el sondeig en aquesta quantitat de segons per a reduir la càrrega dels sistema. Si es 0 , empra l'interval de lliurament."
-#: ../../mod/block.php:39 ../../mod/wall_upload.php:29 ../../mod/page.php:52
-msgid "Channel not found."
-msgstr "Canal no trobat."
+#: ../../mod/admin.php:491
+msgid "Maximum Load Average"
+msgstr "Càrrega Mitja Màxima"
-#: ../../mod/block.php:75 ../../mod/display.php:110 ../../mod/help.php:79
-#: ../../mod/page.php:89 ../../index.php:241
-msgid "Page not found."
-msgstr "Pàgina no trobada."
+#: ../../mod/admin.php:491
+msgid ""
+"Maximum system load before delivery and poll processes are deferred - "
+"default 50."
+msgstr "Càrrega màxima del sistema, abans que els processos de lliurament i sondeig es difereixin - 50 per defecte."
-#: ../../mod/like.php:15
-msgid "Like/Dislike"
-msgstr "M'agrada / No m'agrada"
+#: ../../mod/admin.php:492
+msgid "Expiration period in days for imported (matrix/network) content"
+msgstr "Periode d'expiració per a contingut importat (matrix/xarxa)"
-#: ../../mod/like.php:20
-msgid "This action is restricted to members."
-msgstr "Aquesta acció està restringida als membres."
+#: ../../mod/admin.php:492
+msgid "0 for no expiration of imported content"
+msgstr "0 vol dir sense temps d'expiració pel contingut importat"
-#: ../../mod/like.php:21
-msgid ""
-"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a "
-"href=\"register\">register as a new $Projectname member</a> to continue."
-msgstr "<a href=\"rmagic\">Entra amb la teva identitat $Projectname</a> o <a href=\"register\">registra't a $Projectname</a> per continuar."
+#: ../../mod/admin.php:540
+msgid "No server found"
+msgstr "No es troba servidor"
-#: ../../mod/like.php:101 ../../mod/like.php:128 ../../mod/like.php:166
-msgid "Invalid request."
-msgstr "Sol·licitud invàlida."
+#: ../../mod/admin.php:547 ../../mod/admin.php:831
+msgid "ID"
+msgstr "ID"
-#: ../../mod/like.php:143
-msgid "thing"
-msgstr "cosa"
+#: ../../mod/admin.php:547
+msgid "for channel"
+msgstr "per a canal"
-#: ../../mod/like.php:189
-msgid "Channel unavailable."
-msgstr "El canal està inactiu."
+#: ../../mod/admin.php:547
+msgid "on server"
+msgstr "al servidor"
-#: ../../mod/like.php:228
-msgid "Previous action reversed."
-msgstr "S'ha desfet l'acció anterior."
+#: ../../mod/admin.php:547
+msgid "Status"
+msgstr "Estat"
-#: ../../mod/like.php:398
-#, php-format
-msgid "%1$s agrees with %2$s's %3$s"
-msgstr "%1$s està d'acord amb %3$s de %2$s"
+#: ../../mod/admin.php:549
+msgid "Server"
+msgstr "Servidor"
-#: ../../mod/like.php:400
-#, php-format
-msgid "%1$s doesn't agree with %2$s's %3$s"
-msgstr "%1$s no està d'acord amb %3$s de %2$s"
+#: ../../mod/admin.php:566
+msgid "Update has been marked successful"
+msgstr "Actualització marcada amb exit"
-#: ../../mod/like.php:402
+#: ../../mod/admin.php:576
#, php-format
-msgid "%1$s abstains from a decision on %2$s's %3$s"
-msgstr "%1$s s'abstén en %3$s de %2$s"
+msgid "Executing %s failed. Check system logs."
+msgstr "Executant %s ha fallat. Comprova els logs del sistema."
-#: ../../mod/like.php:404
+#: ../../mod/admin.php:579
#, php-format
-msgid "%1$s is attending %2$s's %3$s"
-msgstr "%1$s assistirà a %3$s de %2$s"
+msgid "Update %s was successfully applied."
+msgstr "Actualització %s es va realitzar correctament."
-#: ../../mod/like.php:406
+#: ../../mod/admin.php:583
#, php-format
-msgid "%1$s is not attending %2$s's %3$s"
-msgstr "%1$s no assistirà a %3$s de %2$s"
+msgid "Update %s did not return a status. Unknown if it succeeded."
+msgstr "Actualització %s no ha retornat l'estat. Es desconeix si ha finalitzat amb exit."
-#: ../../mod/like.php:408
+#: ../../mod/admin.php:586
#, php-format
-msgid "%1$s may attend %2$s's %3$s"
-msgstr "%1$s potser assistirà a %3$s de %2$s"
-
-#: ../../mod/like.php:492
-msgid "Action completed."
-msgstr "S'ha completat l'acció."
-
-#: ../../mod/like.php:493
-msgid "Thank you."
-msgstr "Gràcies."
-
-#: ../../mod/events.php:21
-msgid "Calendar entries imported."
-msgstr "Entrades de Calendari importades."
-
-#: ../../mod/events.php:23
-msgid "No calendar entries found."
-msgstr "No es troben entrades decalendari."
-
-#: ../../mod/events.php:101
-msgid "Event can not end before it has started."
-msgstr "L'esdeveniment ha de començar abans d'acabar."
-
-#: ../../mod/events.php:103 ../../mod/events.php:112 ../../mod/events.php:130
-msgid "Unable to generate preview."
-msgstr "No s'ha pogut generar la vista prèvia."
-
-#: ../../mod/events.php:110
-msgid "Event title and start time are required."
-msgstr "Cal indicar l'inici i el final de l'esdeveniment."
-
-#: ../../mod/events.php:128
-msgid "Event not found."
-msgstr "No s'ha trobat l'esdeveniment."
-
-#: ../../mod/events.php:409
-msgid "l, F j"
-msgstr "l, F j"
-
-#: ../../mod/events.php:431
-msgid "Edit event"
-msgstr "Edita l'esdeveniment"
-
-#: ../../mod/events.php:432
-msgid "Delete event"
-msgstr "Esborra l'esdeveniment"
-
-#: ../../mod/events.php:466
-msgid "calendar"
-msgstr "calendari"
-
-#: ../../mod/events.php:487
-msgid "Create New Event"
-msgstr "Crea un esdeveniment nou"
-
-#: ../../mod/events.php:488 ../../mod/photos.php:839
-msgid "Previous"
-msgstr "Anterior"
-
-#: ../../mod/events.php:489 ../../mod/photos.php:848 ../../mod/setup.php:281
-msgid "Next"
-msgstr "Pròxim"
+msgid "Update function %s could not be found."
+msgstr "La funció d'actualitzacio %s no es pot trobar."
-#: ../../mod/events.php:490
-msgid "Export"
-msgstr "Exporta"
+#: ../../mod/admin.php:602
+msgid "No failed updates."
+msgstr "No hi ha actualitzacions fallides."
-#: ../../mod/events.php:493
-msgid "Import"
-msgstr "Importar"
+#: ../../mod/admin.php:606
+msgid "Failed Updates"
+msgstr "Actualitzacions Fallides"
-#: ../../mod/events.php:518
-msgid "Event removed"
-msgstr "S'ha eliminat l'esdeveniment"
+#: ../../mod/admin.php:608
+msgid "Mark success (if update was manually applied)"
+msgstr "Marca èxit (si l'actualització s'ha aplicat de forma manual)"
-#: ../../mod/events.php:521
-msgid "Failed to remove event"
-msgstr "No s'ha pogut esborrar l'esdeveniment"
+#: ../../mod/admin.php:609
+msgid "Attempt to execute this update step automatically"
+msgstr "Prova a fer automàticament aquesta actualització"
-#: ../../mod/events.php:641
-msgid "Event details"
-msgstr "Detalls de l'esdeveniment"
+#: ../../mod/admin.php:641
+msgid "Queue Statistics"
+msgstr "Cua d'Estadístiques"
-#: ../../mod/events.php:642
-msgid "Starting date and Title are required."
-msgstr "La data d'inici i el títol són obligatoris."
+#: ../../mod/admin.php:642
+msgid "Total Entries"
+msgstr "Total d'Entrades"
-#: ../../mod/events.php:644
-msgid "Categories (comma-separated list)"
-msgstr "Categories (llista separada per comes)"
+#: ../../mod/admin.php:643
+msgid "Priority"
+msgstr "Prioritat"
-#: ../../mod/events.php:646
-msgid "Event Starts:"
-msgstr "Inici:"
+#: ../../mod/admin.php:644
+msgid "Destination URL"
+msgstr "URL de Destí"
-#: ../../mod/events.php:653
-msgid "Finish date/time is not known or not relevant"
-msgstr "La data i hora de final no és coneguda o irrellevant"
+#: ../../mod/admin.php:645
+msgid "Mark hub permanently offline"
+msgstr "Marca el concentrador coma permanentment fora de línia"
-#: ../../mod/events.php:655
-msgid "Event Finishes:"
-msgstr "Final:"
+#: ../../mod/admin.php:646
+msgid "Empty queue for this hub"
+msgstr "Cua buida per aquest concentrador"
-#: ../../mod/events.php:657 ../../mod/events.php:658
-msgid "Adjust for viewer timezone"
-msgstr "Ajusta a la zona horària del visitant."
+#: ../../mod/admin.php:647
+msgid "Last known contact"
+msgstr "Últim contacte conegut"
-#: ../../mod/events.php:657
-msgid ""
-"Important for events that happen in a particular place. Not practical for "
-"global holidays."
-msgstr "És important per esdeveniments locals, però pels globals no és pràctic."
+#: ../../mod/admin.php:683
+#, php-format
+msgid "%s account blocked/unblocked"
+msgid_plural "%s account blocked/unblocked"
+msgstr[0] "S'ha [des]bloquejat %s usuari"
+msgstr[1] "S'han [des]bloquejat %s comptes"
-#: ../../mod/events.php:663
-msgid "Title:"
-msgstr "Títol:"
+#: ../../mod/admin.php:691
+#, php-format
+msgid "%s account deleted"
+msgid_plural "%s accounts deleted"
+msgstr[0] "S'ha esborrat %s compte"
+msgstr[1] "S'han esborrat %s comptes"
-#: ../../mod/events.php:665
-msgid "Share this event"
-msgstr "Comparteix aquest esdeveniment"
+#: ../../mod/admin.php:727
+msgid "Account not found"
+msgstr "Compte no trobat"
-#: ../../mod/subthread.php:103
+#: ../../mod/admin.php:739
#, php-format
-msgid "%1$s is following %2$s's %3$s"
-msgstr "%1$s esta seguint %2$s de %3$s"
+msgid "Account '%s' deleted"
+msgstr "S'ha esborrat el compte '%s'"
-#: ../../mod/pubsites.php:16
-msgid "Public Sites"
-msgstr "Llocs públics"
+#: ../../mod/admin.php:747
+#, php-format
+msgid "Account '%s' blocked"
+msgstr "S'ha bloquejat el compte '%s'"
-#: ../../mod/pubsites.php:19
-msgid ""
-"The listed sites allow public registration for the $Projectname network. All"
-" sites in the network are interlinked so membership on any of them conveys "
-"membership in the network as a whole. Some sites may require subscription or"
-" provide tiered service plans. The provider links <strong>may</strong> "
-"provide additional details."
-msgstr "Els llocs llistats permeten registrar usuaris de la xarxa $Projectname. Com que tots els llocs estan enllaçats entre ells, la identitat és vàlida a tota la xarxa. Alguns llocs poden demanar subscripció o oferir serveis addicional de pagament. Per a més detalls, proveu de seguir els enllaços dels proveïdors."
+#: ../../mod/admin.php:755
+#, php-format
+msgid "Account '%s' unblocked"
+msgstr "S'ha desbloquejat el compte '%s'"
-#: ../../mod/pubsites.php:25
-msgid "Rate this hub"
-msgstr "Valora aquest hub"
+#: ../../mod/admin.php:818 ../../mod/admin.php:830
+msgid "Users"
+msgstr "Usuaris"
-#: ../../mod/pubsites.php:26
-msgid "Site URL"
-msgstr "Adreça URL del web"
+#: ../../mod/admin.php:820 ../../mod/admin.php:987
+msgid "select all"
+msgstr "Sel·leciona-ho tot"
-#: ../../mod/pubsites.php:26
-msgid "Access Type"
-msgstr "Tipus d'accés"
+#: ../../mod/admin.php:821
+msgid "User registrations waiting for confirm"
+msgstr "Registres d'usuaris pendents de confirmació"
-#: ../../mod/pubsites.php:26
-msgid "Registration Policy"
-msgstr "Condicions de registre"
+#: ../../mod/admin.php:822
+msgid "Request date"
+msgstr "Data de la petició"
-#: ../../mod/pubsites.php:26 ../../mod/profiles.php:454
-msgid "Location"
-msgstr "Localització"
+#: ../../mod/admin.php:823
+msgid "No registrations."
+msgstr "Sense registracions."
-#: ../../mod/pubsites.php:26
-msgid "View hub ratings"
-msgstr "Mostra la valoració del hub"
+#: ../../mod/admin.php:824 ../../mod/connedit.php:699
+msgid "Approve"
+msgstr "Aprovat"
-#: ../../mod/pubsites.php:30
-msgid "Rate"
-msgstr "Puntua"
+#: ../../mod/admin.php:825
+msgid "Deny"
+msgstr "Denegat"
-#: ../../mod/pubsites.php:31
-msgid "View ratings"
-msgstr "Mostra les valoracions"
+#: ../../mod/admin.php:827 ../../mod/connedit.php:531
+msgid "Block"
+msgstr "Bloquejat"
-#: ../../mod/rpost.php:131 ../../mod/editpost.php:158
-msgid "Edit post"
-msgstr "Modifica l'entrada"
+#: ../../mod/admin.php:828 ../../mod/connedit.php:531
+msgid "Unblock"
+msgstr "Desbloquejat"
-#: ../../mod/dav.php:121
-msgid "$Projectname channel"
-msgstr "Canal de $Projectname"
+#: ../../mod/admin.php:831
+msgid "Register date"
+msgstr "Data de registre"
-#: ../../mod/group.php:20
-msgid "Collection created."
-msgstr "Creada una col·lecció"
+#: ../../mod/admin.php:831
+msgid "Last login"
+msgstr "Darrera identificació"
-#: ../../mod/group.php:26
-msgid "Could not create collection."
-msgstr "No puc crear la col·lecció."
+#: ../../mod/admin.php:831
+msgid "Expires"
+msgstr "Expira"
-#: ../../mod/group.php:54
-msgid "Collection updated."
-msgstr "Col·lecció actualitzada."
+#: ../../mod/admin.php:831
+msgid "Service Class"
+msgstr "Classe de Servei"
-#: ../../mod/group.php:86
-msgid "Create a collection of channels."
-msgstr "Creada una col·lecció de canals."
+#: ../../mod/admin.php:833
+msgid ""
+"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
+" on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Els comptes seleccionats seran eliminats!\\n\\nTot el que hagin publicat en aquest lloc serà esborrat permanentment!\\n\\nN'estàs segur de continuar?"
-#: ../../mod/group.php:87 ../../mod/group.php:183
-msgid "Collection Name: "
-msgstr "Nom de la Col·lecció:"
+#: ../../mod/admin.php:834
+msgid ""
+"The account {0} will be deleted!\\n\\nEverything this account has posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "L'usuari {0} serà eliminat!\\n\\nTot el que hagi publicat l'usuari en aquest lloc serà esborrat de permanentment!\\n\\nN'estàs segur?"
-#: ../../mod/group.php:89 ../../mod/group.php:186
-msgid "Members are visible to other channels"
-msgstr "Els membres son visibles en altres canals"
+#: ../../mod/admin.php:870
+#, php-format
+msgid "%s channel censored/uncensored"
+msgid_plural "%s channels censored/uncensored"
+msgstr[0] "%s canal censurat/no censurat"
+msgstr[1] "%s canals censurats/no censurats"
-#: ../../mod/group.php:107
-msgid "Collection removed."
-msgstr "Col·lecció esborrada."
+#: ../../mod/admin.php:879
+#, php-format
+msgid "%s channel code allowed/disallowed"
+msgid_plural "%s channels code allowed/disallowed"
+msgstr[0] "%s codi permes/no permes al canal"
+msgstr[1] "%s codi permesos/no permesos al canal"
-#: ../../mod/group.php:109
-msgid "Unable to remove collection."
-msgstr "Incapaç d'esborrar la col·lecció."
+#: ../../mod/admin.php:886
+#, php-format
+msgid "%s channel deleted"
+msgid_plural "%s channels deleted"
+msgstr[0] "%s canal esborrat"
+msgstr[1] "%s canals esborrats"
-#: ../../mod/group.php:182
-msgid "Collection Editor"
-msgstr "Editor de Col·leccions"
+#: ../../mod/admin.php:906
+msgid "Channel not found"
+msgstr "Canal no trobat"
-#: ../../mod/group.php:196 ../../mod/bulksetclose.php:89
-msgid "Members"
-msgstr "Membres"
+#: ../../mod/admin.php:917
+#, php-format
+msgid "Channel '%s' deleted"
+msgstr "Canal '%s' esborrat"
-#: ../../mod/group.php:198 ../../mod/bulksetclose.php:91
-msgid "All Connected Channels"
-msgstr "Tots els Canals Connectats"
+#: ../../mod/admin.php:929
+#, php-format
+msgid "Channel '%s' censored"
+msgstr "Canal '%s' censurat"
-#: ../../mod/group.php:233 ../../mod/bulksetclose.php:126
-msgid "Click on a channel to add or remove."
-msgstr "Clic sobre el canal per afegir o esborrar."
+#: ../../mod/admin.php:929
+#, php-format
+msgid "Channel '%s' uncensored"
+msgstr "Canal '%s' no censurat"
-#: ../../mod/siteinfo.php:112
+#: ../../mod/admin.php:940
#, php-format
-msgid "Version %s"
-msgstr "Versió %s"
+msgid "Channel '%s' code allowed"
+msgstr "Canal '%s' permet codi"
-#: ../../mod/siteinfo.php:133
-msgid "Installed plugins/addons/apps:"
-msgstr "Plugins/addons/apps Instal·lats:"
+#: ../../mod/admin.php:940
+#, php-format
+msgid "Channel '%s' code disallowed"
+msgstr "Canal '%s' no permet codi"
-#: ../../mod/siteinfo.php:146
-msgid "No installed plugins/addons/apps"
-msgstr "Plugins/addons/apps no instal·lats"
+#: ../../mod/admin.php:989
+msgid "Censor"
+msgstr "Censurat"
-#: ../../mod/siteinfo.php:155 ../../mod/home.php:58 ../../mod/home.php:64
-msgid "$Projectname"
-msgstr "$Projectname"
+#: ../../mod/admin.php:990
+msgid "Uncensor"
+msgstr "No censurat"
-#: ../../mod/siteinfo.php:156
-msgid ""
-"This is a hub of $Projectname - a global cooperative network of "
-"decentralized privacy enhanced websites."
-msgstr "Aquest és un hub de $Projectname, una xarxa cooperativa mundial de llocs web descentralitzats amb gran control de la privacitat."
+#: ../../mod/admin.php:991
+msgid "Allow Code"
+msgstr "Permet Codi"
-#: ../../mod/siteinfo.php:158
-msgid "Tag: "
-msgstr "Etiqueta:"
+#: ../../mod/admin.php:992
+msgid "Disallow Code"
+msgstr "No Permet Codi"
-#: ../../mod/siteinfo.php:160
-msgid "Last background fetch: "
-msgstr "Última actualització en rerefons:"
+#: ../../mod/admin.php:994
+msgid "UID"
+msgstr "UID"
-#: ../../mod/siteinfo.php:163
-msgid "Running at web location"
-msgstr "Correguent en el lloc web"
+#: ../../mod/admin.php:994 ../../mod/profiles.php:447
+msgid "Address"
+msgstr "Adreça"
-#: ../../mod/siteinfo.php:164
+#: ../../mod/admin.php:996
msgid ""
-"Please visit <a href=\"https://redmatrix.me\">redmatrix.me</a> to learn more"
-" about $Projectname."
-msgstr "Ves a <a href=\"https://redmatrix.me\">redmatrix.me</a> per saber-ne més sobre $Projectname."
-
-#: ../../mod/siteinfo.php:165
-msgid "Bug reports and issues: please visit"
-msgstr "Per informar d'errors o problemes ves a"
-
-#: ../../mod/siteinfo.php:167
-msgid "$projectname issues"
-msgstr "$projectname emisions"
+"Selected channels will be deleted!\\n\\nEverything that was posted in these "
+"channels on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Els canals sel·leccionats s'esborraran!\\n\\nTotes les publicacions d'aquests canals en aquest lloc s'eliminaran de forma permanent!\\n\\nEstàs segur? "
-#: ../../mod/siteinfo.php:168
+#: ../../mod/admin.php:997
msgid ""
-"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
-"com"
-msgstr "Per suggerències, felicitacions i altres, envia'ns un mail a «redmatrix» [arroba] librelist [punt] com"
+"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
+"channel on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "El canal {0} serà esborrat!\\n\\nTotes les publicacions d'aquest canal en aquest lloc s'eliminaran de forma permanent!\\n\\nEstàs segur?"
-#: ../../mod/siteinfo.php:170
-msgid "Site Administrators"
-msgstr "Administradors del lloc"
+#: ../../mod/admin.php:1037
+#, php-format
+msgid "Plugin %s disabled."
+msgstr "Plugin %s desactivat."
-#: ../../mod/item.php:174
-msgid "Unable to locate original post."
-msgstr "No s'ha pogut trobar l'entrada original."
+#: ../../mod/admin.php:1041
+#, php-format
+msgid "Plugin %s enabled."
+msgstr "Plugin %s activat."
-#: ../../mod/item.php:440
-msgid "Empty post discarded."
-msgstr "S'ha descartat l'entrada perquè no té contingut."
+#: ../../mod/admin.php:1051 ../../mod/admin.php:1249
+msgid "Disable"
+msgstr "Desactivat"
-#: ../../mod/item.php:480
-msgid "Executable content type not permitted to this channel."
-msgstr "No està permès el contingut de tipus executable en aquest canal."
+#: ../../mod/admin.php:1054 ../../mod/admin.php:1251
+msgid "Enable"
+msgstr "Activat"
-#: ../../mod/item.php:901
-msgid "System error. Post not saved."
-msgstr "Hi ha hagut un error del sistema. L'entrada no s'ha desat."
+#: ../../mod/admin.php:1078 ../../mod/admin.php:1278
+msgid "Toggle"
+msgstr "Commutar"
-#: ../../mod/item.php:1119
-msgid "Unable to obtain post information from database."
-msgstr "No s'ha pogut obtenir informació de l'entrada a la base de dades."
+#: ../../mod/admin.php:1086 ../../mod/admin.php:1288
+msgid "Author: "
+msgstr "Autor: "
-#: ../../mod/item.php:1126
-#, php-format
-msgid "You have reached your limit of %1$.0f top level posts."
-msgstr "Has assolit el teu límit de %1$.0f entrades (descomptant comentaris)."
+#: ../../mod/admin.php:1087 ../../mod/admin.php:1289
+msgid "Maintainer: "
+msgstr "Mantenedor:"
-#: ../../mod/item.php:1133
-#, php-format
-msgid "You have reached your limit of %1$.0f webpages."
-msgstr "Has assolit el teu limit de %1$.0f pàgines web."
+#: ../../mod/admin.php:1214
+msgid "No themes found."
+msgstr "No s'han trobat temes."
-#: ../../mod/network.php:91
-msgid "No such group"
-msgstr "No existeix el grup"
+#: ../../mod/admin.php:1270
+msgid "Screenshot"
+msgstr "Copia de pantalla"
-#: ../../mod/network.php:129
-msgid "No such channel"
-msgstr "No existeix el canal"
+#: ../../mod/admin.php:1316
+msgid "[Experimental]"
+msgstr "[Experimental]"
-#: ../../mod/network.php:143
-msgid "Search Results For:"
-msgstr "Cerca resultats per:"
+#: ../../mod/admin.php:1317
+msgid "[Unsupported]"
+msgstr "[No soportat]"
-#: ../../mod/network.php:198
-msgid "Collection is empty"
-msgstr "La coŀlecció és buida"
+#: ../../mod/admin.php:1341
+msgid "Log settings updated."
+msgstr "Registre d'ajustos actualitzat."
-#: ../../mod/network.php:207
-msgid "Collection: "
-msgstr "Coŀlecció:"
+#: ../../mod/admin.php:1398
+msgid "Clear"
+msgstr "Neteja"
-#: ../../mod/network.php:226
-msgid "Connection: "
-msgstr "Connexió:"
+#: ../../mod/admin.php:1404
+msgid "Debugging"
+msgstr "Depurant"
-#: ../../mod/network.php:233
-msgid "Invalid connection."
-msgstr "La connexió és invàlida."
+#: ../../mod/admin.php:1405
+msgid "Log file"
+msgstr "Arxiu de registre"
-#: ../../mod/common.php:10
-msgid "No channel."
-msgstr "No s'ha trobat el canal"
+#: ../../mod/admin.php:1405
+msgid ""
+"Must be writable by web server. Relative to your Red top-level directory."
+msgstr "Ha de ser escribible pel servidor web. Relatiu al directori de nivell superior de Red"
-#: ../../mod/common.php:39
-msgid "Common connections"
-msgstr "Connexions en comú"
+#: ../../mod/admin.php:1406
+msgid "Log level"
+msgstr "Nivell de registre"
-#: ../../mod/common.php:44
-msgid "No connections in common."
-msgstr "No hi ha connexions en comú."
+#: ../../mod/admin.php:1452
+msgid "New Profile Field"
+msgstr "Camp de Perfil Nou"
-#: ../../mod/regdir.php:45 ../../mod/dirsearch.php:21
-msgid "This site is not a directory server"
-msgstr "Aquest lloc web no és un servidor de directori"
+#: ../../mod/admin.php:1453 ../../mod/admin.php:1473
+msgid "Field nickname"
+msgstr "Àlies de Camp"
-#: ../../mod/connections.php:37 ../../mod/connedit.php:75
-msgid "Could not access contact record."
-msgstr "No s'ha pogut accedir al llibre de contactes."
+#: ../../mod/admin.php:1453 ../../mod/admin.php:1473
+msgid "System name of field"
+msgstr "nOM DEL SISTEMA DEL CAMP"
-#: ../../mod/connections.php:51 ../../mod/connedit.php:99
-msgid "Could not locate selected profile."
-msgstr "No s'ha trobat el perfil indicat."
+#: ../../mod/admin.php:1454 ../../mod/admin.php:1474
+msgid "Input type"
+msgstr "Tipus d'entrada"
-#: ../../mod/connections.php:94 ../../mod/connedit.php:219
-msgid "Connection updated."
-msgstr "S'ha actualitzat la connexió."
+#: ../../mod/admin.php:1455 ../../mod/admin.php:1475
+msgid "Field Name"
+msgstr "Nom de Camp"
-#: ../../mod/connections.php:96 ../../mod/connedit.php:221
-msgid "Failed to update connection record."
-msgstr "No s'ha pogut actualitzar el registre de connexió."
+#: ../../mod/admin.php:1455 ../../mod/admin.php:1475
+msgid "Label on profile pages"
+msgstr "Etiqueta a les pàgines de perfil"
-#: ../../mod/connections.php:192 ../../mod/connections.php:293
-msgid "Blocked"
-msgstr "Bloquejades"
+#: ../../mod/admin.php:1456 ../../mod/admin.php:1476
+msgid "Help text"
+msgstr "Text d'ajuda"
-#: ../../mod/connections.php:197 ../../mod/connections.php:300
-msgid "Ignored"
-msgstr "Ignorades"
+#: ../../mod/admin.php:1456 ../../mod/admin.php:1476
+msgid "Additional info (optional)"
+msgstr "Informació adicional (opcional)"
-#: ../../mod/connections.php:202 ../../mod/connections.php:314
-msgid "Hidden"
-msgstr "Amagades"
+#: ../../mod/admin.php:1466
+msgid "Field definition not found"
+msgstr "No es troba la definició del camp"
-#: ../../mod/connections.php:207 ../../mod/connections.php:307
-msgid "Archived"
-msgstr "Arxivades"
+#: ../../mod/admin.php:1472
+msgid "Edit Profile Field"
+msgstr "Camp d'Edició del Perfil"
-#: ../../mod/connections.php:271
-msgid "Suggest new connections"
-msgstr "Suggereix noves connexions"
+#: ../../mod/pconfig.php:27 ../../mod/pconfig.php:60
+msgid "This setting requires special processing and editing has been blocked."
+msgstr "Aquest ajust requereix un procés espedial i l'edició esta bloquejada."
-#: ../../mod/connections.php:274
-msgid "New Connections"
-msgstr "Noves Connexions"
+#: ../../mod/pconfig.php:49
+msgid "Configuration Editor"
+msgstr "Editor de Configuració"
-#: ../../mod/connections.php:277
-msgid "Show pending (new) connections"
-msgstr "Mostra les connexions pendents (noves)"
+#: ../../mod/pconfig.php:50
+msgid ""
+"Warning: Changing some settings could render your channel inoperable. Please"
+" leave this page unless you are comfortable with and knowledgeable about how"
+" to correctly use this feature."
+msgstr "atenció: Realitzar segons quins ajustos pot fer el canal inoperable. Deixa aquesta pàgina si no estas segur i tens suficients coneixements sobre l'ús correcte d'aquesta característica."
-#: ../../mod/connections.php:280 ../../mod/profperm.php:139
-msgid "All Connections"
-msgstr "Totes les Connexions"
+#: ../../mod/api.php:76 ../../mod/api.php:102
+msgid "Authorize application connection"
+msgstr "Autoritza la connexió de l'aplicació"
-#: ../../mod/connections.php:283
-msgid "Show all connections"
-msgstr "Mostra totes les connexions"
+#: ../../mod/api.php:77
+msgid "Return to your app and insert this Securty Code:"
+msgstr "Torna a la teva aplicació i insereix aquest Codi de Seguretat:"
-#: ../../mod/connections.php:286
-msgid "Unblocked"
-msgstr "No bloquejades"
+#: ../../mod/api.php:89
+msgid "Please login to continue."
+msgstr "Si et plau, identifica't per continuar."
-#: ../../mod/connections.php:289
-msgid "Only show unblocked connections"
-msgstr "Mostra només les connexions no bloquejades"
+#: ../../mod/api.php:104
+msgid ""
+"Do you want to authorize this application to access your posts and contacts,"
+" and/or create new posts for you?"
+msgstr "Vols autoritzar a aquesta aplicació l'accés a les teves entrades i contactes i/o a crear noves entrades com si fos tu mateix."
-#: ../../mod/connections.php:296
-msgid "Only show blocked connections"
-msgstr "Mostra només les connexions bloquejades"
+#: ../../mod/pdledit.php:13
+msgid "Layout updated."
+msgstr "S'ha actualitzat el disseny"
-#: ../../mod/connections.php:303
-msgid "Only show ignored connections"
-msgstr "Mostra només les connexions ignorades"
+#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
+msgid "Edit System Page Description"
+msgstr "Editor del Sistema de Descripció de Pàgines"
-#: ../../mod/connections.php:310
-msgid "Only show archived connections"
-msgstr "Mostra només les connexions arxivades"
+#: ../../mod/pdledit.php:48
+msgid "Layout not found."
+msgstr "No s'ha trobat el disseny de pàgina."
-#: ../../mod/connections.php:317
-msgid "Only show hidden connections"
-msgstr "Mostra només les connexions amagades"
+#: ../../mod/pdledit.php:54
+msgid "Module Name:"
+msgstr "Nom del mòdul:"
-#: ../../mod/connections.php:372
-#, php-format
-msgid "%1$s [%2$s]"
-msgstr "%1$s [%2$s]"
+#: ../../mod/pdledit.php:55
+msgid "Layout Help"
+msgstr "Ajuda sobre el disseny de pàgina"
-#: ../../mod/connections.php:373
-msgid "Edit connection"
-msgstr "Modifica la connexió"
+#: ../../mod/appman.php:28 ../../mod/appman.php:44
+msgid "App installed."
+msgstr "Aplicació instal·lada."
-#: ../../mod/connections.php:411
-msgid "Search your connections"
-msgstr "Cerca entre les teves connexions"
+#: ../../mod/appman.php:37
+msgid "Malformed app."
+msgstr "Aplicació amb errors"
-#: ../../mod/connections.php:412
-msgid "Finding: "
-msgstr "Cercant:"
+#: ../../mod/appman.php:80
+msgid "Embed code"
+msgstr "Codi embegut"
-#: ../../mod/blocks.php:95 ../../mod/blocks.php:148
-msgid "Block Name"
-msgstr "Nom del Bloc"
+#: ../../mod/appman.php:86
+msgid "Edit App"
+msgstr "Edita l'Aplicació"
-#: ../../mod/blocks.php:149
-msgid "Block Title"
-msgstr "Títol del bloc"
+#: ../../mod/appman.php:86
+msgid "Create App"
+msgstr "Crea l'Aplicació"
-#: ../../mod/editpost.php:20 ../../mod/editlayout.php:76
-#: ../../mod/editwebpage.php:77 ../../mod/editblock.php:78
-#: ../../mod/editblock.php:94
-msgid "Item not found"
-msgstr "No s'ha trobat l'element"
+#: ../../mod/appman.php:91
+msgid "Name of app"
+msgstr "Nom de l'Aplicació"
-#: ../../mod/editpost.php:31
-msgid "Item is not editable"
-msgstr "Article no editable"
+#: ../../mod/appman.php:92
+msgid "Location (URL) of app"
+msgstr "Ubicació (URL) de l'aplicació"
-#: ../../mod/editpost.php:48
-msgid "Delete item?"
-msgstr "Esborrar ítem"
+#: ../../mod/appman.php:93 ../../mod/rbmark.php:95
+msgid "Description"
+msgstr "Descripció"
-#: ../../mod/editpost.php:115 ../../mod/editlayout.php:142
-#: ../../mod/editwebpage.php:187 ../../mod/editblock.php:144
-msgid "Insert YouTube video"
-msgstr "insereix video YouTube"
+#: ../../mod/appman.php:94
+msgid "Photo icon URL"
+msgstr "Foto icona URL"
-#: ../../mod/editpost.php:116 ../../mod/editlayout.php:143
-#: ../../mod/editwebpage.php:188 ../../mod/editblock.php:145
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Insereix video Vorbis [.ogg]"
+#: ../../mod/appman.php:94
+msgid "80 x 80 pixels - optional"
+msgstr "80 x 80 pixels - opcional"
-#: ../../mod/editpost.php:117 ../../mod/editlayout.php:144
-#: ../../mod/editwebpage.php:189 ../../mod/editblock.php:146
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Insereix audio Vorbis [.ogg]"
+#: ../../mod/appman.php:95
+msgid "Version ID"
+msgstr "Versió ID"
-#: ../../mod/cloud.php:120
-msgid "$Projectname - Guests: Username: {your email address}, Password: +++"
-msgstr "$Projectname - Convidats: Nom d'usuari: {el teu correu electrònic}, Contrasenya: +++"
+#: ../../mod/appman.php:96
+msgid "Price of app"
+msgstr "Preu de l'aplicació"
+
+#: ../../mod/appman.php:97
+msgid "Location (URL) to purchase app"
+msgstr "Ubicació (URL) per comprar l'aplicació"
#: ../../mod/photos.php:78
msgid "Page owner information could not be retrieved."
@@ -4878,6 +4955,12 @@ msgstr "Esborra Àlbum"
msgid "Delete Photo"
msgstr "Esborra Foto"
+#: ../../mod/photos.php:441 ../../mod/directory.php:59
+#: ../../mod/display.php:13 ../../mod/ratings.php:82 ../../mod/search.php:13
+#: ../../mod/viewconnections.php:17
+msgid "Public access denied."
+msgstr "Accés públic denegat."
+
#: ../../mod/photos.php:452
msgid "No photos selected"
msgstr "No has seleccionat fotos"
@@ -4889,12 +4972,12 @@ msgstr "L'accés a aquest element esta restringit."
#: ../../mod/photos.php:535
#, php-format
msgid "%1$.2f MB of %2$.2f MB photo storage used."
-msgstr "S'estan fent servir %1$.2f MB de %2$.2f MB de l'espai per a imatges."
+msgstr "Hi ha en ús %1$.2f MB de %2$.2f MB de l'espai d'imatges."
#: ../../mod/photos.php:538
#, php-format
msgid "%1$.2f MB photo storage used."
-msgstr "S'estan fent servir %1$.2f MB de l'espai per a imatges."
+msgstr "Hi ha en ús %1$.2f MB de l'espai d'imatges."
#: ../../mod/photos.php:562
msgid "Upload Photos"
@@ -4953,10 +5036,22 @@ msgstr "Fes-la imatge de perfil"
msgid "Private Photo"
msgstr "Imatge privada"
+#: ../../mod/photos.php:839 ../../mod/events.php:505
+msgid "Previous"
+msgstr "Anterior"
+
#: ../../mod/photos.php:843
msgid "View Full Size"
msgstr "Mostra a mida completa"
+#: ../../mod/photos.php:848 ../../mod/events.php:506 ../../mod/setup.php:281
+msgid "Next"
+msgstr "Pròxim"
+
+#: ../../mod/photos.php:887 ../../mod/tagrm.php:133
+msgid "Remove"
+msgstr "Esborra"
+
#: ../../mod/photos.php:921
msgid "Edit photo"
msgstr "Modifica la imatge"
@@ -5001,218 +5096,155 @@ msgstr "Mostra'n l'àlbum"
msgid "Recent Photos"
msgstr "Imatges recents"
-#: ../../mod/search.php:206
-#, php-format
-msgid "Items tagged with: %s"
-msgstr "Elements etiquetats amb: %s"
-
-#: ../../mod/search.php:208
-#, php-format
-msgid "Search results for: %s"
-msgstr "Resultats de cerca per: %s"
-
-#: ../../mod/match.php:22
-msgid "Profile Match"
-msgstr "Perfils compatibles"
-
-#: ../../mod/match.php:31
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr "No tens paraules clau al perfil principal per poder cercar perfils semblants."
+#: ../../mod/attach.php:9
+msgid "Item not available."
+msgstr "Article no disponible."
-#: ../../mod/match.php:63
-msgid "is interested in:"
-msgstr "té interès en:"
+#: ../../mod/ping.php:263
+msgid "sent you a private message"
+msgstr "Se t'ha enviat un missatge privat"
-#: ../../mod/match.php:70
-msgid "No matches"
-msgstr "No s'han trobat perfils compatibles"
+#: ../../mod/ping.php:314
+msgid "added your channel"
+msgstr "el teu canal s'ha afegit"
-#: ../../mod/chatsvc.php:111
-msgid "Away"
-msgstr "Absent"
+#: ../../mod/ping.php:355
+msgid "posted an event"
+msgstr "enviat un event"
-#: ../../mod/chatsvc.php:115
-msgid "Online"
-msgstr "En connexió"
+#: ../../mod/blocks.php:95 ../../mod/blocks.php:148
+msgid "Block Name"
+msgstr "Nom del Bloc"
-#: ../../mod/rbmark.php:88
-msgid "Select a bookmark folder"
-msgstr "Tria una carpeta d'interès"
+#: ../../mod/blocks.php:149
+msgid "Block Title"
+msgstr "Títol del bloc"
-#: ../../mod/rbmark.php:93
-msgid "Save Bookmark"
-msgstr "Guarda Favorits"
+#: ../../mod/poke.php:159
+msgid "Poke/Prod"
+msgstr "Emprenyat/Picat"
-#: ../../mod/rbmark.php:94
-msgid "URL of bookmark"
-msgstr "URL de favorit"
+#: ../../mod/poke.php:160
+msgid "poke, prod or do other things to somebody"
+msgstr "emprenyar, picar o fer altres coses a algú"
-#: ../../mod/rbmark.php:95 ../../mod/appman.php:93
-msgid "Description"
-msgstr "Descripció"
+#: ../../mod/poke.php:161
+msgid "Recipient"
+msgstr "Destinatari"
-#: ../../mod/rbmark.php:99
-msgid "Or enter new bookmark folder name"
-msgstr "O entra un nou nom de favorit"
+#: ../../mod/poke.php:162
+msgid "Choose what you wish to do to recipient"
+msgstr "Tria que vols fer amb el destinatari"
-#: ../../mod/notify.php:53 ../../mod/notifications.php:94
-msgid "No more system notifications."
-msgstr "No hi ha més notificacions de sistema."
+#: ../../mod/poke.php:165
+msgid "Make this post private"
+msgstr "Fer aquesta entrada privada"
-#: ../../mod/notify.php:57 ../../mod/notifications.php:98
-msgid "System Notifications"
-msgstr "Notificacions de sistema"
+#: ../../mod/bookmarks.php:38
+msgid "Bookmark added"
+msgstr "Favorit afegit"
-#: ../../mod/acl.php:231
-msgid "network"
-msgstr "xarxa"
+#: ../../mod/bookmarks.php:60
+msgid "My Bookmarks"
+msgstr "Els Meus Favorits"
-#: ../../mod/acl.php:241
-msgid "RSS"
-msgstr "RSS"
+#: ../../mod/bookmarks.php:71
+msgid "My Connections Bookmarks"
+msgstr "Les connexions dels meus Favorits"
-#: ../../mod/pdledit.php:13
-msgid "Layout updated."
-msgstr "S'ha actualitzat la disposició."
+#: ../../mod/manage.php:136
+#, php-format
+msgid "You have created %1$.0f of %2$.0f allowed channels."
+msgstr "Has creat %1$.0f de %2$.0f canals permesos."
-#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
-msgid "Edit System Page Description"
-msgstr "Editor del Sistema de Descripció de Pàgines"
+#: ../../mod/manage.php:144
+msgid "Create a new channel"
+msgstr "Crear un nou canal"
-#: ../../mod/pdledit.php:48
-msgid "Layout not found."
-msgstr "No s'ha trobat cap disposició de pàgina."
+#: ../../mod/manage.php:167
+msgid "Current Channel"
+msgstr "Canal Actual"
-#: ../../mod/pdledit.php:54
-msgid "Module Name:"
-msgstr "Nom del mòdul:"
+#: ../../mod/manage.php:169
+msgid "Switch to one of your channels by selecting it."
+msgstr "Canviar a un altre dels teus canals seleccionant-ho."
-#: ../../mod/pdledit.php:55
-msgid "Layout Help"
-msgstr "Ajuda per la disposició de pàgina"
+#: ../../mod/manage.php:170
+msgid "Default Channel"
+msgstr "Canal per Defecte"
-#: ../../mod/filer.php:49
-msgid "- select -"
-msgstr "- selecciona -"
+#: ../../mod/manage.php:171
+msgid "Make Default"
+msgstr "Estableix com a Predeterminat"
-#: ../../mod/import.php:25
+#: ../../mod/manage.php:174
#, php-format
-msgid "Your service plan only allows %d channels."
-msgstr "El teu paquet de serveis només admet %d canals."
-
-#: ../../mod/import.php:60
-msgid "Nothing to import."
-msgstr "No hi ha res a importar."
-
-#: ../../mod/import.php:84
-msgid "Unable to download data from old server"
-msgstr "No s'han pogut descarregar les dades del servidor antic"
-
-#: ../../mod/import.php:90
-msgid "Imported file is empty."
-msgstr "El fitxer importat està buit."
-
-#: ../../mod/import.php:110
-msgid "The data provided is not compatible with this project."
-msgstr "Les dades subministrades no son compatibles amb aquest projecte."
+msgid "%d new messages"
+msgstr "%d missatges nous"
-#: ../../mod/import.php:115
+#: ../../mod/manage.php:175
#, php-format
-msgid "Warning: Database versions differ by %1$d updates."
-msgstr "Atenció: Les versions de la Base de Dades difereixen en %1$d actualitzacions."
-
-#: ../../mod/import.php:135
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "No s'ha pogut importar el canal perquè l'identificador del canal no s'ha pogut duplicar en aquest servidor."
-
-#: ../../mod/import.php:176
-msgid "Channel clone failed. Import failed."
-msgstr "No s'ha pogut importar el canal perquè el canal no s'ha pogut clonar."
+msgid "%d new introductions"
+msgstr "%d noves presentacions"
-#: ../../mod/import.php:186
-msgid "Cloned channel not found. Import failed."
-msgstr "No s'ha pogut importar el canal perquè el canal clonat no s'ha trobat."
+#: ../../mod/manage.php:177
+msgid "Delegated Channels"
+msgstr "Canals Delegats"
-#: ../../mod/import.php:516
-msgid "You must be logged in to use this feature."
-msgstr "Has d'estar registrat per fer servir aquesta funcionalitat."
+#: ../../mod/match.php:22
+msgid "Profile Match"
+msgstr "Perfils compatibles"
-#: ../../mod/import.php:521
-msgid "Import Channel"
-msgstr "Importa un canal"
+#: ../../mod/match.php:31
+msgid "No keywords to match. Please add keywords to your default profile."
+msgstr "No tens paraules clau al perfil principal per poder cercar perfils semblants."
-#: ../../mod/import.php:522
-msgid ""
-"Use this form to import an existing channel from a different server/hub. You"
-" may retrieve the channel identity from the old server/hub via the network "
-"or provide an export file."
-msgstr "Empra aquest formulari per importar un canal existent en un altre servidor/concentrador. Pots recuperar el canal des de l'antic servidor/concentrador via la xarxa o mitjançant un fitxer d'exportació"
+#: ../../mod/match.php:63
+msgid "is interested in:"
+msgstr "té interès en:"
-#: ../../mod/import.php:523
-msgid "File to Upload"
-msgstr "Fitxer a pujar"
+#: ../../mod/match.php:70
+msgid "No matches"
+msgstr "No s'han trobat perfils compatibles"
-#: ../../mod/import.php:524
-msgid "Or provide the old server/hub details"
-msgstr "O proveeix els detalls de l'antic servidor/concentrador"
+#: ../../mod/bulksetclose.php:89 ../../mod/group.php:196
+msgid "Members"
+msgstr "Membres"
-#: ../../mod/import.php:525
-msgid "Your old identity address (xyz@example.com)"
-msgstr "La teva adreça de canal antiga. El format és canal@exemple.org"
+#: ../../mod/bulksetclose.php:91 ../../mod/group.php:198
+msgid "All Connected Channels"
+msgstr "Tots els Canals Connectats"
-#: ../../mod/import.php:526
-msgid "Your old login email address"
-msgstr "La teva adreça de correu electrònic antiga"
+#: ../../mod/bulksetclose.php:126 ../../mod/group.php:233
+msgid "Click on a channel to add or remove."
+msgstr "Clic sobre el canal per afegir o esborrar."
-#: ../../mod/import.php:527
-msgid "Your old login password"
-msgstr "La teva contrasenya antiga"
+#: ../../mod/poll.php:64
+msgid "Poll"
+msgstr "Enquesta"
-#: ../../mod/import.php:528
-msgid ""
-"For either option, please choose whether to make this hub your new primary "
-"address, or whether your old location should continue this role. You will be"
-" able to post from either location, but only one can be marked as the "
-"primary location for files, photos, and media."
-msgstr "Per a qualsevol de les opcions, escull si vols fer primària l'adreça d'aquest hub o mantenir l'anterior com a primària. Podràs penjar entrades des de totes dues adreces, però per als fitxers, imatges i altres en cal una de primària."
+#: ../../mod/poll.php:69
+msgid "View Results"
+msgstr "Mostra els resultats"
-#: ../../mod/import.php:529
-msgid "Make this hub my primary location"
-msgstr "Fes d'aquest hub la meva ubicació primària"
+#: ../../mod/channel.php:25 ../../mod/chat.php:19
+msgid "You must be logged in to see this page."
+msgstr "Has d'estar identificat per a veure aquesta pàgina."
-#: ../../mod/import.php:530
-msgid ""
-"Import existing posts if possible (experimental - limited by available "
-"memory"
-msgstr "Importa les entrades existents si es possible (experimental - limitat per la memòria disponible"
+#: ../../mod/channel.php:97
+msgid "Insufficient permissions. Request redirected to profile page."
+msgstr "Permisos insuficients. Petició redirigida a la pàgina del perfil."
-#: ../../mod/import.php:531
+#: ../../mod/post.php:236
msgid ""
-"This process may take several minutes to complete. Please submit the form "
-"only once and leave this page open until finished."
-msgstr "Aquest procès pot trigar minuts en completar. Si et plau envia el formulari només una vegada i manté aquesta pàgina oberta fins que finalitzi."
-
-#: ../../mod/editlayout.php:111
-msgid "Delete layout?"
-msgstr "Esborra format?"
-
-#: ../../mod/editlayout.php:158 ../../mod/layouts.php:124
-msgid "Layout Description (Optional)"
-msgstr "Descripció del Format (Opcional)"
-
-#: ../../mod/editlayout.php:160 ../../mod/layouts.php:121
-#: ../../mod/layouts.php:179
-msgid "Layout Name"
-msgstr "Nom del Format Gràfic"
-
-#: ../../mod/editlayout.php:177
-msgid "Edit Layout"
-msgstr "Edita Format Gràfic"
+"Remote authentication blocked. You are logged into this site locally. Please"
+" logout and retry."
+msgstr "Autenticació remota bloquejada. Ha iniciat sessió en aquest lloc a nivell local. Si us plau, tanca la sessió i torna-ho a intentar."
-#: ../../mod/chat.php:19 ../../mod/channel.php:25
-msgid "You must be logged in to see this page."
-msgstr "Has d'estar identificat per a veure aquesta pàgina."
+#: ../../mod/post.php:287 ../../mod/openid.php:72 ../../mod/openid.php:180
+#, php-format
+msgid "Welcome %s. Remote authentication successful."
+msgstr "Benvingut %s. Autenticació remota reeixida."
#: ../../mod/chat.php:167
msgid "Room not found"
@@ -5251,599 +5283,250 @@ msgstr "Nom del Xat"
msgid "%1$s's Chatrooms"
msgstr "%1$s de Xats"
-#: ../../mod/mitem.php:24 ../../mod/menu.php:134
-msgid "Menu not found."
-msgstr "Menú no trobat."
-
-#: ../../mod/mitem.php:48
-msgid "Unable to create element."
-msgstr "Incapaç de crear l'element."
-
-#: ../../mod/mitem.php:71
-msgid "Unable to update menu element."
-msgstr "Incapaç d'actualitzar un element del menú."
-
-#: ../../mod/mitem.php:86
-msgid "Unable to add menu element."
-msgstr "Incapaç d'afegir l'element del menú."
-
-#: ../../mod/mitem.php:152 ../../mod/mitem.php:223
-msgid "Menu Item Permissions"
-msgstr "Permisos de l'Article del Menú"
-
-#: ../../mod/mitem.php:153 ../../mod/mitem.php:224 ../../mod/settings.php:1083
-msgid "(click to open/close)"
-msgstr "(clica per obrir/tancar)"
-
-#: ../../mod/mitem.php:155 ../../mod/mitem.php:171
-msgid "Link Name"
-msgstr "Nom de l'Enllaç"
-
-#: ../../mod/mitem.php:156 ../../mod/mitem.php:228
-msgid "Link or Submenu Target"
-msgstr "Enllaç o Submenú Objectiu"
-
-#: ../../mod/mitem.php:156
-msgid "Enter URL of the link or select a menu name to create a submenu"
-msgstr "Entra la URL de l'enlla´o tria un nom de menú per crear un submenú"
-
-#: ../../mod/mitem.php:157 ../../mod/mitem.php:229
-msgid "Use magic-auth if available"
-msgstr "Empra magic-auth si esta disponible"
-
-#: ../../mod/mitem.php:158 ../../mod/mitem.php:230
-msgid "Open link in new window"
-msgstr "Obrir l'enllaç en una nova finestra"
-
-#: ../../mod/mitem.php:159 ../../mod/mitem.php:231
-msgid "Order in list"
-msgstr "Ordre per llista"
-
-#: ../../mod/mitem.php:159 ../../mod/mitem.php:231
-msgid "Higher numbers will sink to bottom of listing"
-msgstr "Els números més alts aniràn al fons de la llista"
-
-#: ../../mod/mitem.php:160
-msgid "Submit and finish"
-msgstr "Envia i termina"
-
-#: ../../mod/mitem.php:161
-msgid "Submit and continue"
-msgstr "Envia i continua"
-
-#: ../../mod/mitem.php:169
-msgid "Menu:"
-msgstr "Menú:"
-
-#: ../../mod/mitem.php:172
-msgid "Link Target"
-msgstr "Enllaç Objectiu"
-
-#: ../../mod/mitem.php:175
-msgid "Edit menu"
-msgstr "Edita menú"
-
-#: ../../mod/mitem.php:178
-msgid "Edit element"
-msgstr "Edita element"
-
-#: ../../mod/mitem.php:179
-msgid "Drop element"
-msgstr "Deixa anar element"
-
-#: ../../mod/mitem.php:180
-msgid "New element"
-msgstr "Nou element"
-
-#: ../../mod/mitem.php:181
-msgid "Edit this menu container"
-msgstr "Edita aquest contenidor de menú"
-
-#: ../../mod/mitem.php:182
-msgid "Add menu element"
-msgstr "Afegeix element de menú"
-
-#: ../../mod/mitem.php:183
-msgid "Delete this menu item"
-msgstr "Esborra aquest article del menú"
-
-#: ../../mod/mitem.php:184
-msgid "Edit this menu item"
-msgstr "Edita aquest article del menú"
-
-#: ../../mod/mitem.php:201
-msgid "Menu item not found."
-msgstr "Article del menú no trobat."
-
-#: ../../mod/mitem.php:212
-msgid "Menu item deleted."
-msgstr "Article del menú eliminat."
-
-#: ../../mod/mitem.php:214
-msgid "Menu item could not be deleted."
-msgstr "Article del menú no es pot eliminar."
-
-#: ../../mod/mitem.php:221
-msgid "Edit Menu Element"
-msgstr "Editar Element del Menú"
-
-#: ../../mod/mitem.php:227
-msgid "Link text"
-msgstr "Enllaç de text"
-
-#: ../../mod/editwebpage.php:152
-msgid "Delete webpage?"
-msgstr "Esborrar pàgina web?"
-
-#: ../../mod/editwebpage.php:173
-msgid "Page link title"
-msgstr "Títol de la pàgina enllaçada"
-
-#: ../../mod/editwebpage.php:224
-msgid "Edit Webpage"
-msgstr "Edita la Pàgina Web"
-
-#: ../../mod/dirsearch.php:29
-msgid "This directory server requires an access token"
-msgstr "Aquest servidor de directori requereix un token de accès"
-
-#: ../../mod/lostpass.php:15
-msgid "No valid account found."
-msgstr "No es troba un compte vàlid."
-
-#: ../../mod/lostpass.php:29
-msgid "Password reset request issued. Check your email."
-msgstr "Sol·licitud de restabliment de contrasenya emesa. Consulta el teu correu electrònic."
+#: ../../mod/chatsvc.php:111
+msgid "Away"
+msgstr "Absent"
-#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
-#, php-format
-msgid "Site Member (%s)"
-msgstr "Lloc d'Usuari (%s)"
+#: ../../mod/chatsvc.php:115
+msgid "Online"
+msgstr "En connexió"
-#: ../../mod/lostpass.php:40
+#: ../../mod/probe.php:24 ../../mod/probe.php:30
#, php-format
-msgid "Password reset requested at %s"
-msgstr "S'ha soŀlicitat restablir la contrasenya al hub %s"
+msgid "Fetching URL returns error: %1$s"
+msgstr "URL sol·licitada retorna error: %1$s"
-#: ../../mod/lostpass.php:63
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "Ha fallat el restabliment de contrasenya perquè la no s'ha pogut verificar soŀlicitud. Pot ser que ja ho hàgiu soŀlicitat abans."
+#: ../../mod/cloud.php:120
+msgid "$Projectname - Guests: Username: {your email address}, Password: +++"
+msgstr "$Projectname - Convidats: Nom d'usuari: {el teu correu electrònic}, Contrasenya: +++"
-#: ../../mod/lostpass.php:85 ../../boot.php:1559
-msgid "Password Reset"
-msgstr "Restabliment de contrasenya"
+#: ../../mod/common.php:10
+msgid "No channel."
+msgstr "No s'ha trobat el canal"
-#: ../../mod/lostpass.php:86
-msgid "Your password has been reset as requested."
-msgstr "S'ha restablert la vostra contrasenya."
+#: ../../mod/common.php:39
+msgid "Common connections"
+msgstr "Connexions en comú"
-#: ../../mod/lostpass.php:87
-msgid "Your new password is"
-msgstr "La nova contrasenya és"
+#: ../../mod/common.php:44
+msgid "No connections in common."
+msgstr "No hi ha connexions en comú."
-#: ../../mod/lostpass.php:88
-msgid "Save or copy your new password - and then"
-msgstr "Desa o copia la nova contrasenya, i després"
+#: ../../mod/profile_photo.php:108
+msgid "Image uploaded but image cropping failed."
+msgstr "S'ha pujat la imatge però no s'ha pogut retallar."
-#: ../../mod/lostpass.php:89
-msgid "click here to login"
-msgstr "fes clic aquí per iniciar sessió"
+#: ../../mod/profile_photo.php:162
+msgid "Image resize failed."
+msgstr "No s'ha pogut escalar la imatge."
-#: ../../mod/lostpass.php:90
+#: ../../mod/profile_photo.php:206
msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Pots canviar la contrasenya a la pàgina <em>Paràmetres</em>, un cop iniciada la sessió."
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Refresca la memòria cau del navegador si la foto no s'actualitza immediatament. Dreceres: «Ctrl+F5» i «Ctrl+Maj+R»"
-#: ../../mod/lostpass.php:107
+#: ../../mod/profile_photo.php:233
#, php-format
-msgid "Your password has changed at %s"
-msgstr "La teva contrasenya a %s ha canviat"
-
-#: ../../mod/lostpass.php:122
-msgid "Forgot your Password?"
-msgstr "No recordes la contrasenya?"
-
-#: ../../mod/lostpass.php:123
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Escriu la teva adreça de correu electrònic i envia per restablir la contrasenya. Després revisa el seu correu electrònic per obtenir més instruccions."
+msgid "Image exceeds size limit of %d"
+msgstr "La imatge excedeix la mida límit de %d"
-#: ../../mod/lostpass.php:124
-msgid "Email Address"
-msgstr "Adreça electrònica"
+#: ../../mod/profile_photo.php:242
+msgid "Unable to process image."
+msgstr "Incapaç de processar l'imatge."
-#: ../../mod/lostpass.php:125
-msgid "Reset"
-msgstr "Reajustar"
+#: ../../mod/profile_photo.php:291 ../../mod/profile_photo.php:340
+msgid "Photo not available."
+msgstr "Foto no disponible."
-#: ../../mod/rate.php:157
-msgid "Website:"
-msgstr "Lloc web:"
+#: ../../mod/profile_photo.php:359
+msgid "Upload File:"
+msgstr "Puja Arxiu:"
-#: ../../mod/rate.php:160
-#, php-format
-msgid "Remote Channel [%s] (not yet known on this site)"
-msgstr "Canal Remot [%s] (encara no es coneix en aquest lloc)"
+#: ../../mod/profile_photo.php:360
+msgid "Select a profile:"
+msgstr "Tria un perfil:"
-#: ../../mod/rate.php:161
-msgid "Rating (this information is public)"
-msgstr "Valoració (aquesta informació és pública)"
+#: ../../mod/profile_photo.php:361
+msgid "Upload Profile Photo"
+msgstr "Puja una Foto pel Perfil"
-#: ../../mod/rate.php:162
-msgid "Optionally explain your rating (this information is public)"
-msgstr "Opcionalment pots explicar la teva qualificació (aquesta informació és pública)"
+#: ../../mod/profile_photo.php:366 ../../mod/settings.php:995
+msgid "or"
+msgstr "o"
-#: ../../mod/editblock.php:117
-msgid "Delete block?"
-msgstr "Eliminar bloc?"
+#: ../../mod/profile_photo.php:366
+msgid "skip this step"
+msgstr "salta aquest pas"
-#: ../../mod/editblock.php:179
-msgid "Edit Block"
-msgstr "Editar Bloc"
+#: ../../mod/profile_photo.php:366
+msgid "select a photo from your photo albums"
+msgstr "tria una foto del teu àlbum de fotos"
-#: ../../mod/invite.php:25
-msgid "Total invitation limit exceeded."
-msgstr "El límit total invitacions s'ha superat."
+#: ../../mod/profile_photo.php:382
+msgid "Crop Image"
+msgstr "Retalla Imatge"
-#: ../../mod/invite.php:49
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s: adreça de correu electrònic no vàlida."
+#: ../../mod/profile_photo.php:383
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Si us plau, retalla la imatge per a una optima visualització"
-#: ../../mod/invite.php:76
-msgid "Please join us on Red"
-msgstr "Si us plau, uneix-te a Red"
+#: ../../mod/profile_photo.php:385
+msgid "Done Editing"
+msgstr "Edició Feta"
-#: ../../mod/invite.php:87
-msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr "Límit d'invitacions excedit. Si us plau, poseu-vos en contacte amb l'administrador del lloc."
+#: ../../mod/profile_photo.php:428
+msgid "Image uploaded successfully."
+msgstr "Imatge pujada exitosament."
-#: ../../mod/invite.php:92
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s : Entrega del Missatge fallida."
+#: ../../mod/profile_photo.php:430
+msgid "Image upload failed."
+msgstr "La pujada de la imatge va fracassar."
-#: ../../mod/invite.php:96
+#: ../../mod/profile_photo.php:439
#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d missatge enviat."
-msgstr[1] "%d missatges enviats."
-
-#: ../../mod/invite.php:115
-msgid "You have no more invitations available"
-msgstr "No té més invitacions disponibles"
-
-#: ../../mod/invite.php:129
-msgid "Send invitations"
-msgstr "Enviar invitacions"
-
-#: ../../mod/invite.php:130
-msgid "Enter email addresses, one per line:"
-msgstr "Introduïu les adreces de correu electrònic, una per línia:"
+msgid "Image size reduction [%s] failed."
+msgstr "La reducció de mida de la imatge [%s] va fracassar."
-#: ../../mod/invite.php:131 ../../mod/mail.php:235 ../../mod/mail.php:348
-msgid "Your message:"
-msgstr "El teu missatge:"
+#: ../../mod/connect.php:56 ../../mod/connect.php:104
+msgid "Continue"
+msgstr "Continua"
-#: ../../mod/invite.php:132
-msgid "Please join my community on $Projectname."
-msgstr "Si us plau uneix-te la meva comunitat en $Projectname."
+#: ../../mod/connect.php:85
+msgid "Premium Channel Setup"
+msgstr "Configuració de Canals Premium"
-#: ../../mod/invite.php:134
-msgid "You will need to supply this invitation code: "
-msgstr "Has de proporcionar aquest codi d'invitació:"
+#: ../../mod/connect.php:87
+msgid "Enable premium channel connection restrictions"
+msgstr "Habilita les restriccions de connexió del canal premium"
-#: ../../mod/invite.php:135
+#: ../../mod/connect.php:88
msgid ""
-"1. Register at any $Projectname location (they are all inter-connected)"
-msgstr "1. Registre en qualsevol lloc del $Projectname (estàn tots interconnectats)"
-
-#: ../../mod/invite.php:137
-msgid "2. Enter my $Projectname network address into the site searchbar."
-msgstr "2. Entra a la meva adreça de xarxa al $Projectname, a la barra de cerca del lloc."
-
-#: ../../mod/invite.php:138
-msgid "or visit "
-msgstr "o visita"
-
-#: ../../mod/invite.php:140
-msgid "3. Click [Connect]"
-msgstr "3. Click [Conectar]"
-
-#: ../../mod/locs.php:21 ../../mod/locs.php:52
-msgid "Location not found."
-msgstr "Situació que no es troba."
-
-#: ../../mod/locs.php:56
-msgid "Primary location cannot be removed."
-msgstr "La ubicació primària no es pot treure."
-
-#: ../../mod/locs.php:88
-msgid "No locations found."
-msgstr "No es troben els llocs."
-
-#: ../../mod/locs.php:101
-msgid "Manage Channel Locations"
-msgstr "Gestionar Ubicacions de Canal"
-
-#: ../../mod/locs.php:102
-msgid "Location (address)"
-msgstr "Ubicació (direcció)"
-
-#: ../../mod/locs.php:103
-msgid "Primary Location"
-msgstr "Ubicació Primària"
-
-#: ../../mod/locs.php:104
-msgid "Drop location"
-msgstr "Treure la ubicació"
-
-#: ../../mod/sources.php:32
-msgid "Failed to create source. No channel selected."
-msgstr "Error en crear l'origen. Cap canal seleccionat."
-
-#: ../../mod/sources.php:45
-msgid "Source created."
-msgstr "Origen creat."
-
-#: ../../mod/sources.php:57
-msgid "Source updated."
-msgstr "Origen actualitzat."
-
-#: ../../mod/sources.php:82
-msgid "*"
-msgstr "*"
-
-#: ../../mod/sources.php:89
-msgid "Manage remote sources of content for your channel."
-msgstr "Gestiona contingut per al teu canal d'origens remots"
-
-#: ../../mod/sources.php:90 ../../mod/sources.php:100
-msgid "New Source"
-msgstr "Nou Origen"
+"Please enter your restrictions or conditions, such as paypal receipt, usage "
+"guidelines, etc."
+msgstr "Si us plau, introdueixi les restriccions o condicions, com ara el rebut de PayPal, les pautes d'ús, etc."
-#: ../../mod/sources.php:101 ../../mod/sources.php:133
+#: ../../mod/connect.php:90 ../../mod/connect.php:110
msgid ""
-"Import all or selected content from the following channel into this channel "
-"and distribute it according to your channel settings."
-msgstr "Importar tot o sel·lecciona contingut dels següents canals, en aquest canal i distribueix-lo d'acord als teus ajustos de canals."
-
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Only import content with these words (one per line)"
-msgstr "Només importa contingut amb aquestes paraules (una per línia)"
-
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Leave blank to import all public content"
-msgstr "Deixar en blanc per importar tot el contingut públic"
-
-#: ../../mod/sources.php:103 ../../mod/sources.php:137
-#: ../../mod/new_channel.php:112
-msgid "Channel Name"
-msgstr "Nom del canal"
-
-#: ../../mod/sources.php:123 ../../mod/sources.php:150
-msgid "Source not found."
-msgstr "No s'ha trobat la font."
-
-#: ../../mod/sources.php:130
-msgid "Edit Source"
-msgstr "Edita la font"
-
-#: ../../mod/sources.php:131
-msgid "Delete Source"
-msgstr "Esborra la font"
-
-#: ../../mod/sources.php:158
-msgid "Source removed"
-msgstr "S'ha esborrat la font"
-
-#: ../../mod/sources.php:160
-msgid "Unable to remove source."
-msgstr "No s'ha pogut esborrar la font."
-
-#: ../../mod/menu.php:44
-msgid "Unable to update menu."
-msgstr "No s'ha pogut actualitzar el menú."
-
-#: ../../mod/menu.php:53
-msgid "Unable to create menu."
-msgstr "No s'ha pogut crear el menú."
-
-#: ../../mod/menu.php:89 ../../mod/menu.php:101
-msgid "Menu Name"
-msgstr "Nom del menú"
-
-#: ../../mod/menu.php:89
-msgid "Unique name (not visible on webpage) - required"
-msgstr "Nom únic (no visible a la pàgina web) - requerit"
-
-#: ../../mod/menu.php:90 ../../mod/menu.php:102
-msgid "Menu Title"
-msgstr "Títol del menú"
-
-#: ../../mod/menu.php:90
-msgid "Visible on webpage - leave empty for no title"
-msgstr "Visible a la pàgina web - deixar buit per a no posar títol"
-
-#: ../../mod/menu.php:91
-msgid "Allow Bookmarks"
-msgstr "Permetre Marcadors"
-
-#: ../../mod/menu.php:91 ../../mod/menu.php:147
-msgid "Menu may be used to store saved bookmarks"
-msgstr "El menú es pot emprar per a guardar marcadors"
-
-#: ../../mod/menu.php:92 ../../mod/menu.php:149
-msgid "Submit and proceed"
-msgstr "Envia i procedeix"
-
-#: ../../mod/menu.php:104
-msgid "Drop"
-msgstr "Menysprea"
-
-#: ../../mod/menu.php:108
-msgid "Bookmarks allowed"
-msgstr "Marcadors permesos"
-
-#: ../../mod/menu.php:110
-msgid "Delete this menu"
-msgstr "Esborra el menú"
+"This channel may require additional steps or acknowledgement of the "
+"following conditions prior to connecting:"
+msgstr "Aquest canal pot requerir passos addicionals o reconeixement de les següents condicions abans de connectar:"
-#: ../../mod/menu.php:111 ../../mod/menu.php:144
-msgid "Edit menu contents"
-msgstr "Edita el contingut del menú"
+#: ../../mod/connect.php:91
+msgid ""
+"Potential connections will then see the following text before proceeding:"
+msgstr "Connexions potencials veuran el següent text abans de continuar:"
-#: ../../mod/menu.php:112
-msgid "Edit this menu"
-msgstr "Edita el menú"
+#: ../../mod/connect.php:92 ../../mod/connect.php:113
+msgid ""
+"By continuing, I certify that I have complied with any instructions provided"
+" on this page."
+msgstr "En continuar, certifico que he complert amb totes les instruccions proporcionades en aquesta pàgina."
-#: ../../mod/menu.php:126
-msgid "Menu could not be deleted."
-msgstr "El menu no es pot esborrar."
+#: ../../mod/connect.php:101
+msgid "(No specific instructions have been provided by the channel owner.)"
+msgstr "(No s'han proporcionat instruccions específiques pel propietari del canal.)"
-#: ../../mod/menu.php:139
-msgid "Edit Menu"
-msgstr "Edita Menú"
+#: ../../mod/connect.php:109
+msgid "Restricted or Premium Channel"
+msgstr "Canal Restringit o Premium"
-#: ../../mod/menu.php:143
-msgid "Add or remove entries to this menu"
-msgstr "Afegeix o esborra entrades a aquest menú"
+#: ../../mod/notifications.php:26
+msgid "Invalid request identifier."
+msgstr "Sol·licitud d'identificació invàlida."
-#: ../../mod/menu.php:145
-msgid "Menu name"
-msgstr "Nom del Menú"
+#: ../../mod/notifications.php:35
+msgid "Discard"
+msgstr "Descarta"
-#: ../../mod/menu.php:145
-msgid "Must be unique, only seen by you"
-msgstr "Ha de ser únic, nomes vist per tú"
+#: ../../mod/notifications.php:51 ../../mod/connedit.php:539
+msgid "Ignore"
+msgstr "Ignora"
-#: ../../mod/menu.php:146
-msgid "Menu title"
-msgstr "Títol del menú"
+#: ../../mod/notifications.php:94 ../../mod/notify.php:53
+msgid "No more system notifications."
+msgstr "No hi ha més notificacions de sistema."
-#: ../../mod/menu.php:146
-msgid "Menu title as seen by others"
-msgstr "Títol del menú vist pels altres"
+#: ../../mod/notifications.php:98 ../../mod/notify.php:57
+msgid "System Notifications"
+msgstr "Notificacions de sistema"
-#: ../../mod/menu.php:147
-msgid "Allow bookmarks"
-msgstr "Marcadors permesos"
+#: ../../mod/connections.php:52 ../../mod/connections.php:153
+msgid "Blocked"
+msgstr "Bloquejades"
-#: ../../mod/filestorage.php:82
-msgid "Permission Denied."
-msgstr "Permisos Denegats."
+#: ../../mod/connections.php:57 ../../mod/connections.php:160
+msgid "Ignored"
+msgstr "Ignorades"
-#: ../../mod/filestorage.php:98
-msgid "File not found."
-msgstr "Arxiu no torbat."
+#: ../../mod/connections.php:62 ../../mod/connections.php:174
+msgid "Hidden"
+msgstr "Amagades"
-#: ../../mod/filestorage.php:141
-msgid "Edit file permissions"
-msgstr "Edita els permisos d'arxiu"
+#: ../../mod/connections.php:67 ../../mod/connections.php:167
+msgid "Archived"
+msgstr "Arxivades"
-#: ../../mod/filestorage.php:150
-msgid "Set/edit permissions"
-msgstr "Canvia/edita permisos"
+#: ../../mod/connections.php:131
+msgid "Suggest new connections"
+msgstr "Suggereix noves connexions"
-#: ../../mod/filestorage.php:151
-msgid "Include all files and sub folders"
-msgstr "Inclou tots als arxius i subdirectoris"
+#: ../../mod/connections.php:134
+msgid "New Connections"
+msgstr "Noves Connexions"
-#: ../../mod/filestorage.php:152
-msgid "Return to file list"
-msgstr "Tornar al llistat d'arxius"
+#: ../../mod/connections.php:137
+msgid "Show pending (new) connections"
+msgstr "Mostra les connexions pendents (noves)"
-#: ../../mod/filestorage.php:154
-msgid "Copy/paste this code to attach file to a post"
-msgstr "Copia/enganxa aquest codi per a adjuntar un arxiu a l'entrada"
+#: ../../mod/connections.php:140 ../../mod/profperm.php:139
+msgid "All Connections"
+msgstr "Totes les Connexions"
-#: ../../mod/filestorage.php:155
-msgid "Copy/paste this URL to link file from a web page"
-msgstr "Copia/enganxa aquesta URL per a enllaçar l'arxiu d'una pàgina web"
+#: ../../mod/connections.php:143
+msgid "Show all connections"
+msgstr "Mostra totes les connexions"
-#: ../../mod/filestorage.php:157
-msgid "Share this file"
-msgstr "Comparteix l'arxiu"
+#: ../../mod/connections.php:146
+msgid "Unblocked"
+msgstr "No bloquejades"
-#: ../../mod/filestorage.php:158
-msgid "Show URL to this file"
-msgstr "Mostra la URL d'aquest arxiu"
+#: ../../mod/connections.php:149
+msgid "Only show unblocked connections"
+msgstr "Mostra només les connexions no bloquejades"
-#: ../../mod/filestorage.php:159
-msgid "Notify your contacts about this file"
-msgstr "Notifica als teus contactes aquest arxiu"
+#: ../../mod/connections.php:156
+msgid "Only show blocked connections"
+msgstr "Mostra només les connexions bloquejades"
-#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
-msgid "Contact not found."
-msgstr "Contacte no trobat."
+#: ../../mod/connections.php:163
+msgid "Only show ignored connections"
+msgstr "Mostra només les connexions ignorades"
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
-msgstr "Suggeriment d'amistat enviada."
+#: ../../mod/connections.php:170
+msgid "Only show archived connections"
+msgstr "Mostra només les connexions arxivades"
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
-msgstr "Amics Suggerits"
+#: ../../mod/connections.php:177
+msgid "Only show hidden connections"
+msgstr "Mostra només les connexions amagades"
-#: ../../mod/fsuggest.php:99
+#: ../../mod/connections.php:232
#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Suggereix un amic per a %s"
-
-#: ../../mod/magic.php:69
-msgid "Hub not found."
-msgstr "Concentrador no trobat."
-
-#: ../../mod/poke.php:159
-msgid "Poke/Prod"
-msgstr "Emprenyat/Picat"
-
-#: ../../mod/poke.php:160
-msgid "poke, prod or do other things to somebody"
-msgstr "emprenyar, picar o fer altres coses a algú"
-
-#: ../../mod/poke.php:161
-msgid "Recipient"
-msgstr "Destinatari"
-
-#: ../../mod/poke.php:162
-msgid "Choose what you wish to do to recipient"
-msgstr "Tria que vols fer amb el destinatari"
-
-#: ../../mod/poke.php:165
-msgid "Make this post private"
-msgstr "Fer aquesta entrada privada"
-
-#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
-msgid "Invalid profile identifier."
-msgstr "Identificador invàlid de perfil."
-
-#: ../../mod/profperm.php:110
-msgid "Profile Visibility Editor"
-msgstr "Perfil del Editor de Visibilitat"
-
-#: ../../mod/profperm.php:114
-msgid "Click on a contact to add or remove."
-msgstr "Clica sobre el contacte per afegir o esborrar."
+msgid "%1$s [%2$s]"
+msgstr "%1$s [%2$s]"
-#: ../../mod/profperm.php:123
-msgid "Visible To"
-msgstr "Visible per"
+#: ../../mod/connections.php:233
+msgid "Edit connection"
+msgstr "Modifica la connexió"
-#: ../../mod/impel.php:191
-#, php-format
-msgid "%s element installed"
-msgstr "%s element instal·lat"
+#: ../../mod/connections.php:271
+msgid "Search your connections"
+msgstr "Cerca entre les teves connexions"
-#: ../../mod/impel.php:194
-#, php-format
-msgid "%s element installation failed"
-msgstr "%s instal·lació d'element va fallar"
+#: ../../mod/connections.php:272
+msgid "Finding: "
+msgstr "Cercant:"
#: ../../mod/profiles.php:18 ../../mod/profiles.php:174
#: ../../mod/profiles.php:231 ../../mod/profiles.php:600
@@ -5884,11 +5567,11 @@ msgstr "Company/a Romàntic"
#: ../../mod/profiles.php:412
msgid "Likes"
-msgstr "Agrada"
+msgstr "M'agrada"
#: ../../mod/profiles.php:416
msgid "Dislikes"
-msgstr "Desagrada"
+msgstr "No m'agrada"
#: ../../mod/profiles.php:420
msgid "Work/Employment"
@@ -5918,9 +5601,9 @@ msgstr "Pàgina Personal"
msgid "Interests"
msgstr "Interessos"
-#: ../../mod/profiles.php:447 ../../mod/admin.php:994
-msgid "Address"
-msgstr "Adreça"
+#: ../../mod/profiles.php:454 ../../mod/pubsites.php:26
+msgid "Location"
+msgstr "Localització"
#: ../../mod/profiles.php:537
msgid "Profile updated."
@@ -6040,7 +5723,7 @@ msgstr "Emprat en els llistats de directoris"
#: ../../mod/profiles.php:701
msgid "Tell us about yourself..."
-msgstr "Quelcom sobre tú:"
+msgstr "Escriu unes línies sobre tu:"
#: ../../mod/profiles.php:702
msgid "Hobbies/Interests"
@@ -6102,1280 +5785,691 @@ msgstr "Afegeix coses al perfil"
msgid "Include desirable objects in your profile"
msgstr "Inclou objectius desitjables al teu perfil"
-#: ../../mod/ratings.php:69
-msgid "No ratings"
-msgstr "No valorat"
-
-#: ../../mod/ratings.php:99
-msgid "Ratings"
-msgstr "Valoracions"
-
-#: ../../mod/ratings.php:100
-msgid "Rating: "
-msgstr "Valoració:"
-
-#: ../../mod/ratings.php:101
-msgid "Website: "
-msgstr "Lloc web:"
-
-#: ../../mod/ratings.php:103
-msgid "Description: "
-msgstr "Descripció:"
-
-#: ../../mod/viewsrc.php:38
-msgid "Source of Item"
-msgstr "Origen de l'article"
-
-#: ../../mod/setup.php:187
-msgid "$Projectname Server - Setup"
-msgstr "Servidor $Projectname - Configuració"
-
-#: ../../mod/setup.php:191
-msgid "Could not connect to database."
-msgstr "No puc connectar amb la base de dades"
-
-#: ../../mod/setup.php:195
-msgid ""
-"Could not connect to specified site URL. Possible SSL certificate or DNS "
-"issue."
-msgstr "No s'ha pogut connectar a l'URL del lloc especificat. Possible problema amb el certificat SSL o de DNS."
-
-#: ../../mod/setup.php:202
-msgid "Could not create table."
-msgstr "No puc crear la taula."
-
-#: ../../mod/setup.php:207
-msgid "Your site database has been installed."
-msgstr "La teva base de dades del lloc s'ha instal·lat."
-
-#: ../../mod/setup.php:211
-msgid ""
-"You may need to import the file \"install/schema_xxx.sql\" manually using a "
-"database client."
-msgstr "Podria ser necessari importar el fitxer \"install / schema_xxx.sql\" manualment utilitzant un client de base de dades."
-
-#: ../../mod/setup.php:212 ../../mod/setup.php:280 ../../mod/setup.php:730
-msgid "Please see the file \"install/INSTALL.txt\"."
-msgstr "Si us plau, consulteu el fitxer \"install / INSTALL.txt\"."
-
-#: ../../mod/setup.php:277
-msgid "System check"
-msgstr "Comprovació del sistema"
-
-#: ../../mod/setup.php:282
-msgid "Check again"
-msgstr "Comprova de nou"
-
-#: ../../mod/setup.php:304
-msgid "Database connection"
-msgstr "Connexió de base de dades"
-
-#: ../../mod/setup.php:305
-msgid ""
-"In order to install $Projectname we need to know how to connect to your "
-"database."
-msgstr "Per tal d'instaŀlar $Projectname cal configurar la connexió a la base de dades."
-
-#: ../../mod/setup.php:306
-msgid ""
-"Please contact your hosting provider or site administrator if you have "
-"questions about these settings."
-msgstr "Si us plau, poseu-vos en contacte amb el proveïdor de serveis o administrador del lloc si vostè té preguntes sobre aquests paràmetres."
-
-#: ../../mod/setup.php:307
-msgid ""
-"The database you specify below should already exist. If it does not, please "
-"create it before continuing."
-msgstr "La base de dades s'especifica a continuació ja ha d'existir. Si no és així, si us plau crear-la abans de continuar."
-
-#: ../../mod/setup.php:311
-msgid "Database Server Name"
-msgstr "Base de Dades Nom del Servidor"
-
-#: ../../mod/setup.php:311
-msgid "Default is localhost"
-msgstr "Per defecte es localhost"
-
-#: ../../mod/setup.php:312
-msgid "Database Port"
-msgstr "Port per a la Base de Dades"
-
-#: ../../mod/setup.php:312
-msgid "Communication port number - use 0 for default"
-msgstr "Numero del port de comunicacions - empra 0 per defecte"
-
-#: ../../mod/setup.php:313
-msgid "Database Login Name"
-msgstr "Base de Dades Nom d'Accès"
-
-#: ../../mod/setup.php:314
-msgid "Database Login Password"
-msgstr "Base de Dades Contrasenya d'Accès"
-
-#: ../../mod/setup.php:315
-msgid "Database Name"
-msgstr "Nom de la Base de Dades"
-
-#: ../../mod/setup.php:316
-msgid "Database Type"
-msgstr "Tipus de Base de Dades"
-
-#: ../../mod/setup.php:318 ../../mod/setup.php:359
-msgid "Site administrator email address"
-msgstr "Adreça de correu de l'administrador del lloc"
-
-#: ../../mod/setup.php:318 ../../mod/setup.php:359
-msgid ""
-"Your account email address must match this in order to use the web admin "
-"panel."
-msgstr "El teu compte de email ha de coincidir amb això per poder emprar el panel web d'administrador."
-
-#: ../../mod/setup.php:319 ../../mod/setup.php:361
-msgid "Website URL"
-msgstr "URL del lloc web"
-
-#: ../../mod/setup.php:319 ../../mod/setup.php:361
-msgid "Please use SSL (https) URL if available."
-msgstr "Si us plau, empra SSL (https) URL si està disponible."
-
-#: ../../mod/setup.php:321 ../../mod/setup.php:363
-msgid "Please select a default timezone for your website"
-msgstr "Si us plau, tria la zona horària del teu lloc web"
-
-#: ../../mod/setup.php:348
-msgid "Site settings"
-msgstr "Ajustos del lloc"
+#: ../../mod/connedit.php:75
+msgid "Could not access contact record."
+msgstr "No s'ha pogut accedir al llibre de contactes."
-#: ../../mod/setup.php:413
-msgid "Could not find a command line version of PHP in the web server PATH."
-msgstr "No s'ha pogut trobar una versió de línia d'ordres del PHP en el PATH del servidor web."
+#: ../../mod/connedit.php:99
+msgid "Could not locate selected profile."
+msgstr "No s'ha trobat el perfil indicat."
-#: ../../mod/setup.php:414
-msgid ""
-"If you don't have a command line version of PHP installed on server, you "
-"will not be able to run background polling via cron."
-msgstr "Si vostè no té una versió de línia d'ordres del PHP instal·lada al servidor, vostè no serà capaç d'executar sondejos en segon pla via cron."
+#: ../../mod/connedit.php:219
+msgid "Connection updated."
+msgstr "S'ha actualitzat la connexió."
-#: ../../mod/setup.php:418
-msgid "PHP executable path"
-msgstr "Camí cap l'executable de PHP"
+#: ../../mod/connedit.php:221
+msgid "Failed to update connection record."
+msgstr "No s'ha pogut actualitzar el registre de connexió."
-#: ../../mod/setup.php:418
-msgid ""
-"Enter full path to php executable. You can leave this blank to continue the "
-"installation."
-msgstr "Introdueix el camí cap l'executable de php. Pots deixa-ho en blanc i continuar l'instal·lació."
+#: ../../mod/connedit.php:267
+msgid "is now connected to"
+msgstr "Ara està conectat amb"
-#: ../../mod/setup.php:423
-msgid "Command line PHP"
-msgstr "Línia d'ordres de PHP"
+#: ../../mod/connedit.php:392
+msgid "Could not access address book record."
+msgstr "No puc accedir al registre del contacte"
-#: ../../mod/setup.php:432
-msgid ""
-"The command line version of PHP on your system does not have "
-"\"register_argc_argv\" enabled."
-msgstr "La versió de línia d'ordres de PHP al teu sistema no te el \"register_argc_argv\" activat."
+#: ../../mod/connedit.php:406
+msgid "Refresh failed - channel is currently unavailable."
+msgstr "Ha fallat la recàrrega - el canal es actualment inaccesible."
-#: ../../mod/setup.php:433
-msgid "This is required for message delivery to work."
-msgstr "Això es requereix per que funcioni l'entrega de missatges."
+#: ../../mod/connedit.php:418 ../../mod/connedit.php:430
+#: ../../mod/connedit.php:442 ../../mod/connedit.php:454
+#: ../../mod/connedit.php:470
+msgid "Unable to set address book parameters."
+msgstr "No es poden ajustar els paràmetres dels contactes."
-#: ../../mod/setup.php:436
-msgid "PHP register_argc_argv"
-msgstr "PHP register_argc_argv"
+#: ../../mod/connedit.php:494
+msgid "Connection has been removed."
+msgstr "S'han eliminat les conexions."
-#: ../../mod/setup.php:454
+#: ../../mod/connedit.php:513
#, php-format
-msgid ""
-"Your max allowed total upload size is set to %s. Maximum size of one file to"
-" upload is set to %s. You are allowed to upload up to %d files at once."
-msgstr "La mida màxima que se't permet pujar està establerta en %s. La mida màxima per arxiu pujat es de %s. Se't permet pujar fins a %d arxius d'una vegada."
-
-#: ../../mod/setup.php:459
-msgid "You can adjust these settings in the servers php.ini."
-msgstr "Pots ajustar aquests valors a l'arxiu php.ini del servidor"
-
-#: ../../mod/setup.php:461
-msgid "PHP upload limits"
-msgstr "Límits de pujada de PHP"
-
-#: ../../mod/setup.php:484
-msgid ""
-"Error: the \"openssl_pkey_new\" function on this system is not able to "
-"generate encryption keys"
-msgstr "Error: la funció \"openssl_pkey_new\" en aquest sistema no es capaç de generar claus d'encriptació"
-
-#: ../../mod/setup.php:485
-msgid ""
-"If running under Windows, please see "
-"\"http://www.php.net/manual/en/openssl.installation.php\"."
-msgstr "Si esta funcionant sota Windows, per favor, miri \"http://www.php.net/manual/en/openssl.installation.php\"."
-
-#: ../../mod/setup.php:488
-msgid "Generate encryption keys"
-msgstr "Generar claus de xifrat"
-
-#: ../../mod/setup.php:500
-msgid "libCurl PHP module"
-msgstr "mòdul PHP libCurl "
-
-#: ../../mod/setup.php:501
-msgid "GD graphics PHP module"
-msgstr "mòdul PHP GD gràfics"
-
-#: ../../mod/setup.php:502
-msgid "OpenSSL PHP module"
-msgstr "mòdul PHP OpenSSL"
-
-#: ../../mod/setup.php:503
-msgid "mysqli or postgres PHP module"
-msgstr "mòdul PHP mysqli o postgres"
-
-#: ../../mod/setup.php:504
-msgid "mb_string PHP module"
-msgstr "mòdul PHP mb_string"
-
-#: ../../mod/setup.php:505
-msgid "mcrypt PHP module"
-msgstr "mòdul PHP mcrypt"
-
-#: ../../mod/setup.php:506
-msgid "xml PHP module"
-msgstr "Mòdul xml de PHP"
-
-#: ../../mod/setup.php:510 ../../mod/setup.php:512
-msgid "Apache mod_rewrite module"
-msgstr "mòdul Apache mod_rewrite"
+msgid "View %s's profile"
+msgstr "Mostra el perfil de %s"
-#: ../../mod/setup.php:510
-msgid ""
-"Error: Apache webserver mod-rewrite module is required but not installed."
-msgstr "Error: el mòdul mod-rewrite del servidor web Apache es requereix i no està instal·lat."
+#: ../../mod/connedit.php:517
+msgid "Refresh Permissions"
+msgstr "Recarrega els Permissos"
-#: ../../mod/setup.php:516 ../../mod/setup.php:519
-msgid "proc_open"
-msgstr "proc_open"
+#: ../../mod/connedit.php:520
+msgid "Fetch updated permissions"
+msgstr "Obté els permisos actualitzats"
-#: ../../mod/setup.php:516
-msgid ""
-"Error: proc_open is required but is either not installed or has been "
-"disabled in php.ini"
-msgstr "Error: es requereix proc_open però o no està instal·lat o ha estat desactivat a php.ini"
+#: ../../mod/connedit.php:524
+msgid "Recent Activity"
+msgstr "Activitat Recent"
-#: ../../mod/setup.php:524
-msgid "Error: libCURL PHP module required but not installed."
-msgstr "Error: el mòdul PHP libCURL es requereix però no està instal·lat."
+#: ../../mod/connedit.php:527
+msgid "View recent posts and comments"
+msgstr "Mostra les entrades i comentaris recents"
-#: ../../mod/setup.php:528
-msgid ""
-"Error: GD graphics PHP module with JPEG support required but not installed."
-msgstr "Error: el mòdul PHP GD graphics amb support JPEG es requereix però no està instal·lat."
+#: ../../mod/connedit.php:534
+msgid "Block (or Unblock) all communications with this connection"
+msgstr "Boqueja (o Desbloqueja) les comunicacions amb aquesta connexió"
-#: ../../mod/setup.php:532
-msgid "Error: openssl PHP module required but not installed."
-msgstr "Error: el mòdul PHP openssl es requereix però no està instal·lat."
+#: ../../mod/connedit.php:535
+msgid "This connection is blocked!"
+msgstr "Aquesta connexió està bloquejada!"
-#: ../../mod/setup.php:536
-msgid ""
-"Error: mysqli or postgres PHP module required but neither are installed."
-msgstr "Error: el mòdul PHO mysqli o postgres es requereix però no està instal·lat."
+#: ../../mod/connedit.php:539
+msgid "Unignore"
+msgstr "Inhabilita"
-#: ../../mod/setup.php:540
-msgid "Error: mb_string PHP module required but not installed."
-msgstr "Error: el mòdul PHP mb_string es requereix però no està instal·lat."
+#: ../../mod/connedit.php:542
+msgid "Ignore (or Unignore) all inbound communications from this connection"
+msgstr "Ignora (o Considera) les communicacions entrants d'aquesta connexió"
-#: ../../mod/setup.php:544
-msgid "Error: mcrypt PHP module required but not installed."
-msgstr "Error: el mòdul PHP mcrypt es requereix però no està instal·lat."
+#: ../../mod/connedit.php:543
+msgid "This connection is ignored!"
+msgstr "Aquesta connexió es ignorada!"
-#: ../../mod/setup.php:548
-msgid "Error: xml PHP module required for DAV but not installed."
-msgstr "Error: el mòdul xml de PHP es requereix per DAV però no està instal·lat."
+#: ../../mod/connedit.php:547
+msgid "Unarchive"
+msgstr "Desarxiva"
-#: ../../mod/setup.php:566
-msgid ""
-"The web installer needs to be able to create a file called \".htconfig.php\""
-" in the top folder of your web server and it is unable to do so."
-msgstr "L'instaŀlador ha de poder crear i modificar un fitxer anomenat «.htconfig.php» a la carpeta arrel del servidor, però sembla que no ho pot fer."
+#: ../../mod/connedit.php:547
+msgid "Archive"
+msgstr "Arxiva"
-#: ../../mod/setup.php:567
+#: ../../mod/connedit.php:550
msgid ""
-"This is most often a permission setting, as the web server may not be able "
-"to write files in your folder - even if you can."
-msgstr "Això sol ser un problema de permisos. Per molt que el teu usuari pugui modificar-lo, és el del servidor web qui necessita els poders de modificació."
+"Archive (or Unarchive) this connection - mark channel dead but keep content"
+msgstr "Arxiva (o Desarxiva) aquesta connexió - Marca el canal com a mort pero manté el contingut "
-#: ../../mod/setup.php:568
-msgid ""
-"At the end of this procedure, we will give you a text to save in a file "
-"named .htconfig.php in your Red top folder."
-msgstr "Al final d'aquest procés hauràs de desar un text a l'arxiu «.htconfig.php», que es troba a la carpeta arrel del servidor."
+#: ../../mod/connedit.php:551
+msgid "This connection is archived!"
+msgstr "Aquesta connexió està arxivada!"
-#: ../../mod/setup.php:569
-msgid ""
-"You can alternatively skip this procedure and perform a manual installation."
-" Please see the file \"install/INSTALL.txt\" for instructions."
-msgstr "Aquest procés és opcional. Per a fer una instaŀlació manual consulta les instruccions a «install/INSTALL.txt\"."
+#: ../../mod/connedit.php:555
+msgid "Unhide"
+msgstr "Mostra"
-#: ../../mod/setup.php:572
-msgid ".htconfig.php is writable"
-msgstr "L'arxiu «.htconfig.php» es pot modificar"
+#: ../../mod/connedit.php:555
+msgid "Hide"
+msgstr "Amaga"
-#: ../../mod/setup.php:586
-msgid ""
-"Red uses the Smarty3 template engine to render its web views. Smarty3 "
-"compiles templates to PHP to speed up rendering."
-msgstr "Red fa servir el motor de plantilles Smarty3 per a renderitzar les vistes més ràpidament."
+#: ../../mod/connedit.php:558
+msgid "Hide or Unhide this connection from your other connections"
+msgstr "Amaga (o Mostra) aquesta connexió de les altres connexions teves"
-#: ../../mod/setup.php:587
-#, php-format
-msgid ""
-"In order to store these compiled templates, the web server needs to have "
-"write access to the directory %s under the Red top level folder."
-msgstr "Per tal de guardar aquestes plantilles compilades, el servidor web necessita tenir premis d'escriptura en el directori %s sota la carpeta principal de Red."
+#: ../../mod/connedit.php:559
+msgid "This connection is hidden!"
+msgstr "Aquesta connexió està amagada!"
-#: ../../mod/setup.php:588 ../../mod/setup.php:609
-msgid ""
-"Please ensure that the user that your web server runs as (e.g. www-data) has"
-" write access to this folder."
-msgstr "Comprova que l'usuari que executa el servidor (www-data en Apache) té permisos d'escriptura en aquesta carpeta."
+#: ../../mod/connedit.php:566
+msgid "Delete this connection"
+msgstr "Elimina aquesta connexió"
-#: ../../mod/setup.php:589
-#, php-format
-msgid ""
-"Note: as a security measure, you should give the web server write access to "
-"%s only--not the template files (.tpl) that it contains."
-msgstr "Nota: com a mesura de seguretat l'usuari del servidor web ha de tenir accés d'escriptura només a %s, i no a les plantilles (.tpl) que conté."
+#: ../../mod/connedit.php:647
+msgid "Approve this connection"
+msgstr "Apccepta aquesta connexió"
-#: ../../mod/setup.php:592
-#, php-format
-msgid "%s is writable"
-msgstr "Es pot escriure a %s"
+#: ../../mod/connedit.php:647
+msgid "Accept connection to allow communication"
+msgstr "Accepta la connexió per permetre la comunicació"
-#: ../../mod/setup.php:608
-msgid ""
-"Red uses the store directory to save uploaded files. The web server needs to"
-" have write access to the store directory under the Red top level folder"
-msgstr "Red fa servir la carpeta «store» per a desar els fitxers pujats. Per tant, el servidor web necessita tenir permís d'escriptura en aquesta carpeta, que està a l'arrel del servidor web."
+#: ../../mod/connedit.php:652
+msgid "Set Affinity"
+msgstr "Ajusta l'Afinitat"
-#: ../../mod/setup.php:612
-msgid "store is writable"
-msgstr "Es pot escriure al magatzem (store)"
+#: ../../mod/connedit.php:655
+msgid "Set Profile"
+msgstr "Ajusta el Perfil"
-#: ../../mod/setup.php:645
-msgid ""
-"SSL certificate cannot be validated. Fix certificate or disable https access"
-" to this site."
-msgstr "El certificat SSL no s'ha pogut validar. Arregla-ho o deshabilita l'accés https a aquest lloc"
+#: ../../mod/connedit.php:658
+msgid "Set Affinity & Profile"
+msgstr "Ajusta Afinitat i Perfil"
-#: ../../mod/setup.php:646
-msgid ""
-"If you have https access to your website or allow connections to TCP port "
-"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
-"NOT use self-signed certificates!"
-msgstr "Si tens accès pet https al teu lloc web o permets connexions pel port TCP 443 (port https), Has d'emprar un certificat VÀLID. NO es poden emprar certificats AUTO-SIGNATS!"
+#: ../../mod/connedit.php:675
+msgid "Apply these permissions automatically"
+msgstr "Aplica aquests permissos automaticament"
-#: ../../mod/setup.php:647
-msgid ""
-"This restriction is incorporated because public posts from you may for "
-"example contain references to images on your own hub."
-msgstr "El motiu d'aquesta restricció és que les teves entrades públiques poden contenir referències a imatges del teu propi hub."
+#: ../../mod/connedit.php:677
+msgid "This connection's address is"
+msgstr "La direcció d'aquesta connexió es"
-#: ../../mod/setup.php:648
+#: ../../mod/connedit.php:680
msgid ""
-"If your certificate is not recognized, members of other sites (who may "
-"themselves have valid certificates) will get a warning message on their own "
-"site complaining about security issues."
-msgstr "Si el teu certificat no és reconegut, llavors el membres d'altres hubs, encara que tinguin certificats vàlids, rebran una advertència de seguretat en carregar contingut teu."
+"The permissions indicated on this page will be applied to all new "
+"connections."
+msgstr "Els permisos indicats en aquesta pàgina seran aplicats a totes les noves connexions."
-#: ../../mod/setup.php:649
-msgid ""
-"This can cause usability issues elsewhere (not just on your own site) so we "
-"must insist on this requirement."
-msgstr "Per tant, com que perjudica la usabilitat més enllà del teu lloc, la restricció de tenir un certificat reconegut és molt important."
+#: ../../mod/connedit.php:682
+msgid "Slide to adjust your degree of friendship"
+msgstr "Llisca per ajustar el nivell d'amistat"
-#: ../../mod/setup.php:650
-msgid ""
-"Providers are available that issue free certificates which are browser-"
-"valid."
-msgstr "Hi ha autoritats de certificació reconegudes que ofereixen certificats gratuïts."
+#: ../../mod/connedit.php:684
+msgid "Slide to adjust your rating"
+msgstr "Llisca per ajustar la valoració"
-#: ../../mod/setup.php:652
-msgid "SSL certificate validation"
-msgstr "Validació del certificat SSL"
+#: ../../mod/connedit.php:685 ../../mod/connedit.php:690
+msgid "Optionally explain your rating"
+msgstr "Opcionalment pots explicar la teva valoració"
-#: ../../mod/setup.php:658
-msgid ""
-"Url rewrite in .htaccess is not working. Check your server "
-"configuration.Test: "
-msgstr "No es poden reescriure les URL a «.htaccess». Comprova la configuració del servidor:"
+#: ../../mod/connedit.php:687
+msgid "Custom Filter"
+msgstr "Filtre a mida"
-#: ../../mod/setup.php:661
-msgid "Url rewrite is working"
-msgstr "Es poden reescriure les URL a «.htaccess»"
+#: ../../mod/connedit.php:688
+msgid "Only import posts with this text"
+msgstr "Importa exclusivament entrades amb aquest text"
-#: ../../mod/setup.php:670
+#: ../../mod/connedit.php:688 ../../mod/connedit.php:689
msgid ""
-"The database configuration file \".htconfig.php\" could not be written. "
-"Please use the enclosed text to create a configuration file in your web "
-"server root."
-msgstr "L'arxiu de configuracio de la base de dades «.htconfig.php» no s'ha pogut modificar. El pots crear tu a l'arrel del servidor web amb el text de la caixa com a contingut."
-
-#: ../../mod/setup.php:694
-msgid "Errors encountered creating database tables."
-msgstr "S'han produït errors mentre es creaven taules a la base de dades."
+"words one per line or #tags or /patterns/, leave blank to import all posts"
+msgstr "paraules una per línia o #etiquetes o /patrons/, deixar en blanc per importar totes les entrades"
-#: ../../mod/setup.php:728
-msgid "<h1>What next</h1>"
-msgstr "<h1>I ara què?</h1>"
+#: ../../mod/connedit.php:689
+msgid "Do not import posts with this text"
+msgstr "No importar entrades amb aquest text"
-#: ../../mod/setup.php:729
-msgid ""
-"IMPORTANT: You will need to [manually] setup a scheduled task for the "
-"poller."
-msgstr "IMPORTANT! Cal que configuris manualment una execució periòdica del \"poller\"."
+#: ../../mod/connedit.php:691
+msgid "This information is public!"
+msgstr "Aquesta informació es pública!"
-#: ../../mod/openid.php:26
-msgid "OpenID protocol error. No ID returned."
-msgstr "Error del protocol OpenID. No ha retornat ID"
+#: ../../mod/connedit.php:696
+msgid "Connection Pending Approval"
+msgstr "Connexió Pendent d'Aprovació"
-#: ../../mod/openid.php:72 ../../mod/openid.php:180 ../../mod/post.php:286
-#, php-format
-msgid "Welcome %s. Remote authentication successful."
-msgstr "Benvingut %s. Autenticació remota reeixida."
+#: ../../mod/connedit.php:697
+msgid "Connection Request"
+msgstr "Petició de Connexió"
-#: ../../mod/tagger.php:96
+#: ../../mod/connedit.php:698
#, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
-msgstr "%1$s ha etiquetat %3$s de %2$s amb %4$s"
-
-#: ../../mod/uexport.php:41 ../../mod/uexport.php:42
-msgid "Export Channel"
-msgstr "Exportar Canal"
-
-#: ../../mod/uexport.php:43
msgid ""
-"Export your basic channel information to a small file. This acts as a "
-"backup of your connections, permissions, profile and basic data, which can "
-"be used to import your data to a new hub, but\tdoes not contain your "
-"content."
-msgstr "Exporta la informació bàsica del canal a un petit arxiu. Això actua com a còpia de recolzament de les teves connexions, permisos, perfil i dades bàsiques, les quals pots emprar per traslladar aquestes dades a una altre lloc/centre, però no conté el contingut del canal."
-
-#: ../../mod/uexport.php:44
-msgid "Export Content"
-msgstr "Exportar el Contingut"
+"(%s) would like to connect with you. Please approve this connection to allow"
+" communication."
+msgstr "(%s) voldria conectar amb tu. Aprova aquesta connexió per permetre la connexió."
-#: ../../mod/uexport.php:45
-msgid ""
-"Export your channel information and all the content to a JSON backup. This "
-"backs up all of your connections, permissions, profile data and all of your "
-"content, but is generally not suitable for importing a channel to a new hub "
-"as this file may be VERY large. Please be patient - it may take several "
-"minutes for this download to begin."
-msgstr "Exporta la informació del canal i tot el contingut a un arxiu de recolzament JSON. Això còpia totes les teves connexions, permisos, perfil i dades i tot el contingut, però normalment no es pot importar en un altre canal d'un nou lloc/centre donat que l'arxiu acostuma a ser MOLT gran. Si et plau, sigues pacient ja que pot trigar uns minuts a començar a baixar."
+#: ../../mod/connedit.php:700
+msgid "Approve Later"
+msgstr "Aprovar més tard"
-#: ../../mod/viewconnections.php:62
-msgid "No connections."
-msgstr "Sense connexions."
+#: ../../mod/connedit.php:703
+msgid "inherited"
+msgstr "heretat"
-#: ../../mod/viewconnections.php:75
+#: ../../mod/connedit.php:705
#, php-format
-msgid "Visit %s's profile [%s]"
-msgstr "Visita el perfil [%s] de %s"
-
-#: ../../mod/zfinger.php:23
-msgid "invalid target signature"
-msgstr "Signatura objectiu invàlida"
-
-#: ../../mod/admin.php:52
-msgid "Theme settings updated."
-msgstr "Ajustos de tema actualitzats."
-
-#: ../../mod/admin.php:93 ../../mod/admin.php:452
-msgid "Site"
-msgstr "Lloc"
-
-#: ../../mod/admin.php:94
-msgid "Accounts"
-msgstr "Comptes"
-
-#: ../../mod/admin.php:95 ../../mod/admin.php:985
-msgid "Channels"
-msgstr "Canals"
-
-#: ../../mod/admin.php:96 ../../mod/admin.php:1077 ../../mod/admin.php:1117
-msgid "Plugins"
-msgstr "Plugins"
-
-#: ../../mod/admin.php:97 ../../mod/admin.php:1277 ../../mod/admin.php:1311
-msgid "Themes"
-msgstr "Temes"
-
-#: ../../mod/admin.php:98
-msgid "Inspect queue"
-msgstr "Revisa cua"
-
-#: ../../mod/admin.php:100
-msgid "Profile Config"
-msgstr "Configuració del Perfil"
-
-#: ../../mod/admin.php:101
-msgid "DB updates"
-msgstr "Actualitzacions de Base de Dades"
-
-#: ../../mod/admin.php:115 ../../mod/admin.php:122 ../../mod/admin.php:1396
-msgid "Logs"
-msgstr "Logs"
-
-#: ../../mod/admin.php:121
-msgid "Plugin Features"
-msgstr "Característiques del Plugin"
-
-#: ../../mod/admin.php:123
-msgid "User registrations waiting for confirmation"
-msgstr "Registre d'usuaris esperant confirmació"
-
-#: ../../mod/admin.php:200
-msgid "# Accounts"
-msgstr "# Comptes"
-
-#: ../../mod/admin.php:201
-msgid "# blocked accounts"
-msgstr "# comptes bloquejats"
-
-#: ../../mod/admin.php:202
-msgid "# expired accounts"
-msgstr "# comptes expirats"
-
-#: ../../mod/admin.php:203
-msgid "# expiring accounts"
-msgstr "# comptes expirant"
-
-#: ../../mod/admin.php:216
-msgid "# Channels"
-msgstr "# Canals"
-
-#: ../../mod/admin.php:217
-msgid "# primary"
-msgstr "# primari"
-
-#: ../../mod/admin.php:218
-msgid "# clones"
-msgstr "# clons"
-
-#: ../../mod/admin.php:224
-msgid "Message queues"
-msgstr "Cues de missatges"
-
-#: ../../mod/admin.php:240 ../../mod/admin.php:451 ../../mod/admin.php:548
-#: ../../mod/admin.php:817 ../../mod/admin.php:984 ../../mod/admin.php:1076
-#: ../../mod/admin.php:1116 ../../mod/admin.php:1276 ../../mod/admin.php:1310
-#: ../../mod/admin.php:1395
-msgid "Administration"
-msgstr "Administració"
-
-#: ../../mod/admin.php:241
-msgid "Summary"
-msgstr "Sumari"
-
-#: ../../mod/admin.php:244
-msgid "Registered accounts"
-msgstr "Comptes registrades"
-
-#: ../../mod/admin.php:245 ../../mod/admin.php:552
-msgid "Pending registrations"
-msgstr "Comptes pendents de registre"
-
-#: ../../mod/admin.php:246
-msgid "Registered channels"
-msgstr "Canals registrats"
-
-#: ../../mod/admin.php:247 ../../mod/admin.php:553
-msgid "Active plugins"
-msgstr "Plugins actius"
-
-#: ../../mod/admin.php:248
-msgid "Version"
-msgstr "Versió"
-
-#: ../../mod/admin.php:363
-msgid "Site settings updated."
-msgstr "Ajustos del Lloc actualitzats"
-
-#: ../../mod/admin.php:400 ../../mod/settings.php:813
-msgid "mobile"
-msgstr "mòbil"
-
-#: ../../mod/admin.php:402
-msgid "experimental"
-msgstr "experimental"
-
-#: ../../mod/admin.php:404
-msgid "unsupported"
-msgstr "no soportat"
-
-#: ../../mod/admin.php:429
-msgid "Yes - with approval"
-msgstr "Sí - amb aprovació"
-
-#: ../../mod/admin.php:435
-msgid "My site is not a public server"
-msgstr "El meu lloc no es un servidor públic"
-
-#: ../../mod/admin.php:436
-msgid "My site has paid access only"
-msgstr "El meu lloc te accès per pagament"
-
-#: ../../mod/admin.php:437
-msgid "My site has free access only"
-msgstr "El meu lloc te lliure accés"
-
-#: ../../mod/admin.php:438
-msgid "My site offers free accounts with optional paid upgrades"
-msgstr "El meu lloc te comptes gratis amb opció de millores per pagament"
-
-#: ../../mod/admin.php:454 ../../mod/register.php:207
-msgid "Registration"
-msgstr "Registre"
-
-#: ../../mod/admin.php:455
-msgid "File upload"
-msgstr "Pujar arxiu"
-
-#: ../../mod/admin.php:456
-msgid "Policies"
-msgstr "Polítiques"
-
-#: ../../mod/admin.php:461
-msgid "Site name"
-msgstr "Nom del lloc"
-
-#: ../../mod/admin.php:462
-msgid "Banner/Logo"
-msgstr "Senyera/Logo"
-
-#: ../../mod/admin.php:463
-msgid "Administrator Information"
-msgstr "Informació de l'Administrador"
-
-#: ../../mod/admin.php:463
msgid ""
-"Contact information for site administrators. Displayed on siteinfo page. "
-"BBCode can be used here"
-msgstr "Informació per contactar amb els administradors del lloc. Mostrada a la pàgina d'informació del lloc. Es pot emprar BBCode aquí"
-
-#: ../../mod/admin.php:464
-msgid "System language"
-msgstr "Idioma del sistema"
-
-#: ../../mod/admin.php:465
-msgid "System theme"
-msgstr "Tema del sistema"
-
-#: ../../mod/admin.php:465
-msgid ""
-"Default system theme - may be over-ridden by user profiles - <a href='#' "
-"id='cnftheme'>change theme settings</a>"
-msgstr "Tema del sistema per defecte - pot ser sobrescrit pel perfils dels usuaris - <a href='#' id='cnftheme'>Ajustos de canvi del tema</a>"
-
-#: ../../mod/admin.php:466
-msgid "Mobile system theme"
-msgstr "Tema del sistema per a mòbils"
-
-#: ../../mod/admin.php:466
-msgid "Theme for mobile devices"
-msgstr "Tema per a aparells mòbils"
-
-#: ../../mod/admin.php:468
-msgid "Enable Diaspora Protocol"
-msgstr "Activat el Protocol Diaspora"
-
-#: ../../mod/admin.php:468
-msgid "Communicate with Diaspora and Friendica - experimental"
-msgstr "Comunicar amb Diaspora i Friendica - experimental"
+"Please choose the profile you would like to display to %s when viewing your "
+"profile securely."
+msgstr "Tria el perfil que vols mostrar a %s quan es vegi el perfil segur."
-#: ../../mod/admin.php:469
-msgid "Allow Feeds as Connections"
-msgstr "Permetre Retroalimentadors com Connexions"
+#: ../../mod/connedit.php:707
+msgid "Their Settings"
+msgstr "Els seus Ajustos"
-#: ../../mod/admin.php:469
-msgid "(Heavy system resource usage)"
-msgstr "(Demana molts recursos del sistema)"
+#: ../../mod/connedit.php:708
+msgid "My Settings"
+msgstr "Els Meus Ajustos"
-#: ../../mod/admin.php:470
-msgid "Maximum image size"
-msgstr "Mida màxima d'imatge"
+#: ../../mod/connedit.php:710
+msgid "Individual Permissions"
+msgstr "Permisos Individuals"
-#: ../../mod/admin.php:470
+#: ../../mod/connedit.php:711
msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
-msgstr "Mida màxima en bytes de imatges pujades. Per defecte es 0, el que vol dir sense límits."
-
-#: ../../mod/admin.php:471
-msgid "Does this site allow new member registration?"
-msgstr "Permet aquest lloc registre de nous membres?"
-
-#: ../../mod/admin.php:472
-msgid "Which best describes the types of account offered by this hub?"
-msgstr "Que es es que millor descriu la mena de comptes oferits per aquest concentrador?"
-
-#: ../../mod/admin.php:473
-msgid "Register text"
-msgstr "text de registre"
-
-#: ../../mod/admin.php:473
-msgid "Will be displayed prominently on the registration page."
-msgstr "Es mostrarà preminentment a la pàgina de registre"
-
-#: ../../mod/admin.php:474
-msgid "Site homepage to show visitors (default: login box)"
-msgstr "Pàgina d'inici a mostrar als visitants (per defecte: la pàgina d'identificació)"
+"Some permissions may be inherited from your channel's <a "
+"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
+"priority than individual settings. You can <strong>not</strong> change those"
+" settings here."
+msgstr "Alguns permisos poden ser heretats dels teus canals <a href=\"settings\"><strong>ajustos de privacitat</strong></a>, Els quals tenen més prioritat que els ajustos individuals. <strong>No</strong> pots canviar aquests ajustos aquí."
-#: ../../mod/admin.php:474
+#: ../../mod/connedit.php:712
msgid ""
-"example: 'public' to show public stream, 'page/sys/home' to show a system "
-"webpage called 'home' or 'include:home.html' to include a file."
-msgstr "exemple: 'públic' per a mostrar un flux públic, 'page/sys/home' per a mostrar una pàgina web dita 'home' o 'include:home.html' per a incloure un arxiu."
+"Some permissions may be inherited from your channel's <a "
+"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
+"priority than individual settings. You can change those settings here but "
+"they wont have any impact unless the inherited setting changes."
+msgstr "Alguns permisos poden ser heretats dels teus canals <a href=\"settings\"><strong>ajustos de privacitat</strong></a>, Els quals tenen més prioritat que els ajustos individuals. <strong>Pots</strong> canviar aquests ajustos aquí pero no tindran cap impacte fins que no canviis els ajustos heretats."
-#: ../../mod/admin.php:475
-msgid "Preserve site homepage URL"
-msgstr "Preservar URL de la pàgina web"
+#: ../../mod/connedit.php:713
+msgid "Last update:"
+msgstr "Darrera actualització:"
-#: ../../mod/admin.php:475
-msgid ""
-"Present the site homepage in a frame at the original location instead of "
-"redirecting"
-msgstr "Presenta la pàgina web del lloc en un marc en el lloc original enlloc de redirigir cap a ella"
+#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
+msgid "Invalid profile identifier."
+msgstr "Identificador invàlid de perfil."
-#: ../../mod/admin.php:476
-msgid "Accounts abandoned after x days"
-msgstr "Els copmte es consideren abandonats despres de x dies"
+#: ../../mod/profperm.php:110
+msgid "Profile Visibility Editor"
+msgstr "Perfil del Editor de Visibilitat"
-#: ../../mod/admin.php:476
-msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
-msgstr "No malgastar recursos del sistema sondejant llocs externs per acomptes abandonats. Entrar 0 vol dir sense límit de temps."
+#: ../../mod/profperm.php:114
+msgid "Click on a contact to add or remove."
+msgstr "Clica sobre el contacte per afegir o esborrar."
-#: ../../mod/admin.php:477
-msgid "Allowed friend domains"
-msgstr "dominis amics permesos"
+#: ../../mod/profperm.php:123
+msgid "Visible To"
+msgstr "Visible per"
-#: ../../mod/admin.php:477
-msgid ""
-"Comma separated list of domains which are allowed to establish friendships "
-"with this site. Wildcards are accepted. Empty to allow any domains"
-msgstr "llista separada per comes de dominis en els que està permès establir relacions d'amistat amb aquest lloc. S'accepten comodins. Deixar buit per acceptar qualsevol domini"
+#: ../../mod/dav.php:121
+msgid "$Projectname channel"
+msgstr "Canal de $Projectname"
-#: ../../mod/admin.php:478
-msgid "Allowed email domains"
-msgstr "Dominis de correu electonic acceptats"
+#: ../../mod/directory.php:234
+#, php-format
+msgid "%d rating"
+msgid_plural "%d ratings"
+msgstr[0] "%d valoració"
+msgstr[1] "%d valoracions"
-#: ../../mod/admin.php:478
-msgid ""
-"Comma separated list of domains which are allowed in email addresses for "
-"registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains"
-msgstr "llista separada per comes de dominis de adreces de correu electrònic permeses en aquest lloc. S'accepten comodins. Deixar buit per acceptar qualsevol domini"
+#: ../../mod/directory.php:245
+msgid "Gender: "
+msgstr "Gènere:"
-#: ../../mod/admin.php:479
-msgid "Not allowed email domains"
-msgstr "Dominis de correu electrònic no acceptats"
+#: ../../mod/directory.php:247
+msgid "Status: "
+msgstr "Estatus:"
-#: ../../mod/admin.php:479
-msgid ""
-"Comma separated list of domains which are not allowed in email addresses for"
-" registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains, unless allowed domains have been defined."
-msgstr "llista separada per comes de dominis de adreces de correu electrònic no permeses en aquest lloc. S'accepten comodins. Deixar buit per no acceptar cap domini, excepte els que s'hagin definits com acceptats."
+#: ../../mod/directory.php:249
+msgid "Homepage: "
+msgstr "Pàgina Personal:"
-#: ../../mod/admin.php:480
-msgid "Block public"
-msgstr "Bloc públic"
+#: ../../mod/directory.php:308 ../../mod/events.php:682
+msgid "Description:"
+msgstr "Descripció:"
-#: ../../mod/admin.php:480
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently logged in."
-msgstr "Activa per a bloquejar l'accés públic a totes les pàgines públiques personals excepte si estàs identificat en el sistema."
+#: ../../mod/directory.php:317
+msgid "Public Forum:"
+msgstr "Forum Públic:"
-#: ../../mod/admin.php:481
-msgid "Verify Email Addresses"
-msgstr "Verifica l'Adreça de Correu Electrònic"
+#: ../../mod/directory.php:320
+msgid "Keywords: "
+msgstr "Paraules Clau:"
-#: ../../mod/admin.php:481
-msgid ""
-"Check to verify email addresses used in account registration (recommended)."
-msgstr "Activa per comprovar l'adreça de correu electrònic emprada durant el registre d'un nou compte (recomanat)"
+#: ../../mod/directory.php:323
+msgid "Don't suggest"
+msgstr "No suggerir"
-#: ../../mod/admin.php:482
-msgid "Force publish"
-msgstr "Forza la publicació"
+#: ../../mod/directory.php:325
+msgid "Common connections:"
+msgstr "Connexions en comú:"
-#: ../../mod/admin.php:482
-msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
-msgstr "Activa per forzar que tots el perfils en aquest lloc siguin llistats en el directori del lloc."
+#: ../../mod/directory.php:374
+msgid "Global Directory"
+msgstr "Directori Global"
-#: ../../mod/admin.php:483
-msgid "Disable discovery tab"
-msgstr "Desactiva la pestañnya de descobrir"
+#: ../../mod/directory.php:374
+msgid "Local Directory"
+msgstr "Directori Local"
-#: ../../mod/admin.php:483
-msgid ""
-"Remove the tab in the network view with public content pulled from sources "
-"chosen for this site."
-msgstr "Treu la pesranya per veure contingut públic de la xarxa extret d'origens triats per aquest lloc."
+#: ../../mod/directory.php:380
+msgid "Finding:"
+msgstr "Cercant:"
-#: ../../mod/admin.php:484
-msgid "login on Homepage"
-msgstr "Accés a la Pàgina d'inici"
+#: ../../mod/directory.php:385
+msgid "next page"
+msgstr "pàgina següent"
-#: ../../mod/admin.php:484
-msgid ""
-"Present a login box to visitors on the home page if no other content has "
-"been configured."
-msgstr "Presenta una casella d'identificació a la pàgina d'inici als visitants si no s'ha configurat altre contingut."
+#: ../../mod/directory.php:385
+msgid "previous page"
+msgstr "pàgina anterior"
-#: ../../mod/admin.php:486
-msgid "Proxy user"
-msgstr "Usuari Proxy"
+#: ../../mod/directory.php:386
+msgid "Sort options"
+msgstr "Opcions per ordenar"
-#: ../../mod/admin.php:487
-msgid "Proxy URL"
-msgstr "URL del Proxy"
+#: ../../mod/directory.php:387
+msgid "Alphabetic"
+msgstr "Alfabètic"
-#: ../../mod/admin.php:488
-msgid "Network timeout"
-msgstr "Temps d'espera de la xarxa"
+#: ../../mod/directory.php:388
+msgid "Reverse Alphabetic"
+msgstr "Alfabètic Invers"
-#: ../../mod/admin.php:488
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
-msgstr "Valor en segons. Ajusta a 0 per a sense límits (no recomanat)"
+#: ../../mod/directory.php:389
+msgid "Newest to Oldest"
+msgstr "De més Nou a més Vell"
-#: ../../mod/admin.php:489
-msgid "Delivery interval"
-msgstr "Interval de lliurament"
+#: ../../mod/directory.php:390
+msgid "Oldest to Newest"
+msgstr "De més Antic a més Nou"
-#: ../../mod/admin.php:489
-msgid ""
-"Delay background delivery processes by this many seconds to reduce system "
-"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
-"for large dedicated servers."
-msgstr "Retarda en segon plà l'interval de lliurament per aquests segons per reduir la càrrega del sistema. Recomanat: 4-5 per a hostes compartits, 2-3 per a servidors privats virtuals. 0-1 per a servidors dedicats."
+#: ../../mod/directory.php:407
+msgid "No entries (some entries may be hidden)."
+msgstr "Sense entrades (algunes podrien estar amagades)."
-#: ../../mod/admin.php:490
-msgid "Poll interval"
-msgstr "interval de sondeig"
+#: ../../mod/pubsites.php:16
+msgid "Public Sites"
+msgstr "Llocs públics"
-#: ../../mod/admin.php:490
+#: ../../mod/pubsites.php:19
msgid ""
-"Delay background polling processes by this many seconds to reduce system "
-"load. If 0, use delivery interval."
-msgstr "Retarda en segon pla el sondeig en aquesta quantitat de segons per a reduir la càrrega dels sistema. Si es 0 , empra l'interval de lliurament."
-
-#: ../../mod/admin.php:491
-msgid "Maximum Load Average"
-msgstr "Càrrega Mitja Màxima"
+"The listed sites allow public registration for the $Projectname network. All"
+" sites in the network are interlinked so membership on any of them conveys "
+"membership in the network as a whole. Some sites may require subscription or"
+" provide tiered service plans. The provider links <strong>may</strong> "
+"provide additional details."
+msgstr "Els llocs llistats permeten registrar usuaris de la xarxa $Projectname. Com que tots els llocs estan enllaçats entre ells, la identitat és vàlida a tota la xarxa. Alguns llocs poden demanar subscripció o oferir serveis addicional de pagament. Per a més detalls, proveu de seguir els enllaços dels proveïdors."
-#: ../../mod/admin.php:491
-msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
-msgstr "Càrrega màxima del sistema, abans que els processos de lliurament i sondeig es difereixin - 50 per defecte."
+#: ../../mod/pubsites.php:25
+msgid "Rate this hub"
+msgstr "Valora aquest hub"
-#: ../../mod/admin.php:492
-msgid "Expiration period in days for imported (matrix/network) content"
-msgstr "Periode d'expiració per a contingut importat (matrix/xarxa)"
+#: ../../mod/pubsites.php:26
+msgid "Site URL"
+msgstr "Adreça URL del web"
-#: ../../mod/admin.php:492
-msgid "0 for no expiration of imported content"
-msgstr "0 vol dir sense temps d'expiració pel contingut importat"
+#: ../../mod/pubsites.php:26
+msgid "Access Type"
+msgstr "Tipus d'accés"
-#: ../../mod/admin.php:540
-msgid "No server found"
-msgstr "No es troba servidor"
+#: ../../mod/pubsites.php:26
+msgid "Registration Policy"
+msgstr "Condicions de registre"
-#: ../../mod/admin.php:547 ../../mod/admin.php:831
-msgid "ID"
-msgstr "ID"
+#: ../../mod/pubsites.php:26
+msgid "Project"
+msgstr "Projecte"
-#: ../../mod/admin.php:547
-msgid "for channel"
-msgstr "per a canal"
+#: ../../mod/pubsites.php:26
+msgid "View hub ratings"
+msgstr "Mostra la valoració del hub"
-#: ../../mod/admin.php:547
-msgid "on server"
-msgstr "al servidor"
+#: ../../mod/pubsites.php:30
+msgid "Rate"
+msgstr "Puntua"
-#: ../../mod/admin.php:547
-msgid "Status"
-msgstr "Estat"
+#: ../../mod/pubsites.php:31
+msgid "View ratings"
+msgstr "Mostra les valoracions"
-#: ../../mod/admin.php:549
-msgid "Server"
-msgstr "Servidor"
+#: ../../mod/dirsearch.php:21 ../../mod/regdir.php:45
+msgid "This site is not a directory server"
+msgstr "Aquest lloc web no és un servidor de directori"
-#: ../../mod/admin.php:566
-msgid "Update has been marked successful"
-msgstr "Actualització marcada amb exit"
+#: ../../mod/dirsearch.php:29
+msgid "This directory server requires an access token"
+msgstr "Aquest servidor de directori requereix un token de accès"
-#: ../../mod/admin.php:576
-#, php-format
-msgid "Executing %s failed. Check system logs."
-msgstr "Executant %s ha fallat. Comprova els logs del sistema."
+#: ../../mod/editblock.php:78 ../../mod/editblock.php:94
+#: ../../mod/editlayout.php:76 ../../mod/editpost.php:20
+#: ../../mod/editwebpage.php:77
+msgid "Item not found"
+msgstr "No s'ha trobat l'element"
-#: ../../mod/admin.php:579
-#, php-format
-msgid "Update %s was successfully applied."
-msgstr "Actualització %s es va realitzar correctament."
+#: ../../mod/editblock.php:117
+msgid "Delete block?"
+msgstr "Eliminar bloc?"
-#: ../../mod/admin.php:583
-#, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
-msgstr "Actualització %s no ha retornat l'estat. Es desconeix si ha finalitzat amb exit."
+#: ../../mod/editblock.php:144 ../../mod/editlayout.php:142
+#: ../../mod/editpost.php:115 ../../mod/editwebpage.php:187
+msgid "Insert YouTube video"
+msgstr "insereix video YouTube"
-#: ../../mod/admin.php:586
-#, php-format
-msgid "Update function %s could not be found."
-msgstr "La funció d'actualitzacio %s no es pot trobar."
+#: ../../mod/editblock.php:145 ../../mod/editlayout.php:143
+#: ../../mod/editpost.php:116 ../../mod/editwebpage.php:188
+msgid "Insert Vorbis [.ogg] video"
+msgstr "Insereix video Vorbis [.ogg]"
-#: ../../mod/admin.php:602
-msgid "No failed updates."
-msgstr "No hi ha actualitzacions fallides."
+#: ../../mod/editblock.php:146 ../../mod/editlayout.php:144
+#: ../../mod/editpost.php:117 ../../mod/editwebpage.php:189
+msgid "Insert Vorbis [.ogg] audio"
+msgstr "Insereix audio Vorbis [.ogg]"
-#: ../../mod/admin.php:606
-msgid "Failed Updates"
-msgstr "Actualitzacions Fallides"
+#: ../../mod/editblock.php:179
+msgid "Edit Block"
+msgstr "Editar Bloc"
-#: ../../mod/admin.php:608
-msgid "Mark success (if update was manually applied)"
-msgstr "Marca èxit (si l'actualització s'ha aplicat de forma manual)"
+#: ../../mod/editlayout.php:111
+msgid "Delete layout?"
+msgstr "Esborrar el disseny?"
-#: ../../mod/admin.php:609
-msgid "Attempt to execute this update step automatically"
-msgstr "Prova a fer automàticament aquesta actualització"
+#: ../../mod/editlayout.php:158 ../../mod/layouts.php:124
+msgid "Layout Description (Optional)"
+msgstr "Descripció del disseny (opcional)"
-#: ../../mod/admin.php:641
-msgid "Queue Statistics"
-msgstr "Cua d'Estadístiques"
+#: ../../mod/editlayout.php:160 ../../mod/layouts.php:121
+#: ../../mod/layouts.php:179
+msgid "Layout Name"
+msgstr "Nom del disseny"
-#: ../../mod/admin.php:642
-msgid "Total Entries"
-msgstr "Total d'Entrades"
+#: ../../mod/editlayout.php:177
+msgid "Edit Layout"
+msgstr "Edita el disseny"
-#: ../../mod/admin.php:643
-msgid "Priority"
-msgstr "Prioritat"
+#: ../../mod/editpost.php:31
+msgid "Item is not editable"
+msgstr "Article no editable"
-#: ../../mod/admin.php:644
-msgid "Destination URL"
-msgstr "URL de Destí"
+#: ../../mod/editpost.php:48
+msgid "Delete item?"
+msgstr "Esborrar ítem"
-#: ../../mod/admin.php:645
-msgid "Mark hub permanently offline"
-msgstr "Marca el concentrador coma permanentment fora de línia"
+#: ../../mod/editpost.php:158 ../../mod/rpost.php:131
+msgid "Edit post"
+msgstr "Modifica l'entrada"
-#: ../../mod/admin.php:646
-msgid "Empty queue for this hub"
-msgstr "Cua buida per aquest concentrador"
+#: ../../mod/oexchange.php:23
+msgid "Unable to find your hub."
+msgstr "No es possible trobar el concentrador"
-#: ../../mod/admin.php:647
-msgid "Last known contact"
-msgstr "Últim contacte conegut"
+#: ../../mod/oexchange.php:37
+msgid "Post successful."
+msgstr "Entrada realitzada amb èxit. "
-#: ../../mod/admin.php:683
-#, php-format
-msgid "%s user blocked/unblocked"
-msgid_plural "%s users blocked/unblocked"
-msgstr[0] "%s usuari bloquejat/desbloquejat"
-msgstr[1] "%s usuaris bloquejats/desbloquejats"
+#: ../../mod/editwebpage.php:152
+msgid "Delete webpage?"
+msgstr "Esborrar pàgina web?"
-#: ../../mod/admin.php:691
-#, php-format
-msgid "%s user deleted"
-msgid_plural "%s users deleted"
-msgstr[0] "%s usuari esborrat"
-msgstr[1] "%s usuaris esborrats"
+#: ../../mod/editwebpage.php:173
+msgid "Page link title"
+msgstr "Títol de la pàgina enllaçada"
-#: ../../mod/admin.php:727
-msgid "Account not found"
-msgstr "Compte no trobat"
+#: ../../mod/editwebpage.php:224
+msgid "Edit Webpage"
+msgstr "Edita la Pàgina Web"
-#: ../../mod/admin.php:747
-#, php-format
-msgid "User '%s' blocked"
-msgstr "Usuari '%s' bloquejat"
+#: ../../mod/rate.php:157
+msgid "Website:"
+msgstr "Lloc web:"
-#: ../../mod/admin.php:755
+#: ../../mod/rate.php:160
#, php-format
-msgid "User '%s' unblocked"
-msgstr "Usuari '%s' desbloquejat"
-
-#: ../../mod/admin.php:818 ../../mod/admin.php:830
-msgid "Users"
-msgstr "Usuaris"
-
-#: ../../mod/admin.php:820 ../../mod/admin.php:987
-msgid "select all"
-msgstr "Sel·leciona-ho tot"
-
-#: ../../mod/admin.php:821
-msgid "User registrations waiting for confirm"
-msgstr "Registres d'usuaris pendents de confirmació"
-
-#: ../../mod/admin.php:822
-msgid "Request date"
-msgstr "Data de la petició"
-
-#: ../../mod/admin.php:823
-msgid "No registrations."
-msgstr "Sense registracions."
-
-#: ../../mod/admin.php:824 ../../mod/connedit.php:687
-msgid "Approve"
-msgstr "Aprovat"
+msgid "Remote Channel [%s] (not yet known on this site)"
+msgstr "Canal Remot [%s] (encara no es coneix en aquest lloc)"
-#: ../../mod/admin.php:825
-msgid "Deny"
-msgstr "Denegat"
+#: ../../mod/rate.php:161
+msgid "Rating (this information is public)"
+msgstr "Valoració (aquesta informació és pública)"
-#: ../../mod/admin.php:827 ../../mod/connedit.php:519
-msgid "Block"
-msgstr "Bloquejat"
+#: ../../mod/rate.php:162
+msgid "Optionally explain your rating (this information is public)"
+msgstr "Opcionalment pots explicar la teva qualificació (aquesta informació és pública)"
-#: ../../mod/admin.php:828 ../../mod/connedit.php:519
-msgid "Unblock"
-msgstr "Desbloquejat"
+#: ../../mod/events.php:21
+msgid "Calendar entries imported."
+msgstr "Entrades de Calendari importades."
-#: ../../mod/admin.php:831
-msgid "Register date"
-msgstr "Data de registre"
+#: ../../mod/events.php:23
+msgid "No calendar entries found."
+msgstr "No es troben entrades decalendari."
-#: ../../mod/admin.php:831
-msgid "Last login"
-msgstr "Darrera identificació"
+#: ../../mod/events.php:101
+msgid "Event can not end before it has started."
+msgstr "L'esdeveniment ha de començar abans d'acabar."
-#: ../../mod/admin.php:831
-msgid "Expires"
-msgstr "Expira"
+#: ../../mod/events.php:103 ../../mod/events.php:112 ../../mod/events.php:130
+msgid "Unable to generate preview."
+msgstr "No s'ha pogut generar la vista prèvia."
-#: ../../mod/admin.php:831
-msgid "Service Class"
-msgstr "Classe de Servei"
+#: ../../mod/events.php:110
+msgid "Event title and start time are required."
+msgstr "Cal indicar l'inici i el final de l'esdeveniment."
-#: ../../mod/admin.php:833
-msgid ""
-"Selected users will be deleted!\\n\\nEverything these users had posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Tria els usuaris que s'esborraran!\\n\\nTotes les publicacions d'aquests usuaris en aquest lloc s'eliminaran de forma permanent!\\n\\nEstàs segur? "
+#: ../../mod/events.php:128
+msgid "Event not found."
+msgstr "No s'ha trobat l'esdeveniment."
-#: ../../mod/admin.php:834
-msgid ""
-"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
-"site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "L'usuari {0} sera esborrat!\\n\\nTotes les publicacions d'aquest usuari en aquest lloc s'eliminarà de forma permanent!\\n\\nEstas segur?"
+#: ../../mod/events.php:426
+msgid "l, F j"
+msgstr "I dia j, F"
-#: ../../mod/admin.php:870
-#, php-format
-msgid "%s channel censored/uncensored"
-msgid_plural "%s channels censored/uncensored"
-msgstr[0] "%s canal censurat/no censurat"
-msgstr[1] "%s canals censurats/no censurats"
+#: ../../mod/events.php:448
+msgid "Edit event"
+msgstr "Edita l'esdeveniment"
-#: ../../mod/admin.php:879
-#, php-format
-msgid "%s channel code allowed/disallowed"
-msgid_plural "%s channels code allowed/disallowed"
-msgstr[0] "%s codi permes/no permes al canal"
-msgstr[1] "%s codi permesos/no permesos al canal"
+#: ../../mod/events.php:449
+msgid "Delete event"
+msgstr "Esborra l'esdeveniment"
-#: ../../mod/admin.php:886
-#, php-format
-msgid "%s channel deleted"
-msgid_plural "%s channels deleted"
-msgstr[0] "%s canal esborrat"
-msgstr[1] "%s canals esborrats"
+#: ../../mod/events.php:483
+msgid "calendar"
+msgstr "calendari"
-#: ../../mod/admin.php:906
-msgid "Channel not found"
-msgstr "Canal no trobat"
+#: ../../mod/events.php:504
+msgid "Create New Event"
+msgstr "Crea un esdeveniment nou"
-#: ../../mod/admin.php:917
-#, php-format
-msgid "Channel '%s' deleted"
-msgstr "Canal '%s' esborrat"
+#: ../../mod/events.php:507
+msgid "Export"
+msgstr "Exporta"
-#: ../../mod/admin.php:929
-#, php-format
-msgid "Channel '%s' censored"
-msgstr "Canal '%s' censurat"
+#: ../../mod/events.php:510
+msgid "Import"
+msgstr "Importar"
-#: ../../mod/admin.php:929
-#, php-format
-msgid "Channel '%s' uncensored"
-msgstr "Canal '%s' no censurat"
+#: ../../mod/events.php:541
+msgid "Event removed"
+msgstr "S'ha eliminat l'esdeveniment"
-#: ../../mod/admin.php:940
-#, php-format
-msgid "Channel '%s' code allowed"
-msgstr "Canal '%s' permet codi"
+#: ../../mod/events.php:544
+msgid "Failed to remove event"
+msgstr "No s'ha pogut esborrar l'esdeveniment"
-#: ../../mod/admin.php:940
-#, php-format
-msgid "Channel '%s' code disallowed"
-msgstr "Canal '%s' no permet codi"
+#: ../../mod/events.php:664
+msgid "Event details"
+msgstr "Detalls de l'esdeveniment"
-#: ../../mod/admin.php:989
-msgid "Censor"
-msgstr "Censurat"
+#: ../../mod/events.php:665
+msgid "Starting date and Title are required."
+msgstr "La data d'inici i el títol són obligatoris."
-#: ../../mod/admin.php:990
-msgid "Uncensor"
-msgstr "No censurat"
+#: ../../mod/events.php:667
+msgid "Categories (comma-separated list)"
+msgstr "Categories (llista separada per comes)"
-#: ../../mod/admin.php:991
-msgid "Allow Code"
-msgstr "Permet Codi"
+#: ../../mod/events.php:669
+msgid "Event Starts:"
+msgstr "Inici:"
-#: ../../mod/admin.php:992
-msgid "Disallow Code"
-msgstr "No Permet Codi"
+#: ../../mod/events.php:676
+msgid "Finish date/time is not known or not relevant"
+msgstr "La data i hora de final no és coneguda o irrellevant"
-#: ../../mod/admin.php:994
-msgid "UID"
-msgstr "UID"
+#: ../../mod/events.php:678
+msgid "Event Finishes:"
+msgstr "Final:"
-#: ../../mod/admin.php:996
-msgid ""
-"Selected channels will be deleted!\\n\\nEverything that was posted in these "
-"channels on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Els canals sel·leccionats s'esborraran!\\n\\nTotes les publicacions d'aquests canals en aquest lloc s'eliminaran de forma permanent!\\n\\nEstàs segur? "
+#: ../../mod/events.php:680 ../../mod/events.php:681
+msgid "Adjust for viewer timezone"
+msgstr "Ajusta a la zona horària del visitant."
-#: ../../mod/admin.php:997
+#: ../../mod/events.php:680
msgid ""
-"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
-"channel on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "El canal {0} serà esborrat!\\n\\nTotes les publicacions d'aquest canal en aquest lloc s'eliminaran de forma permanent!\\n\\nEstàs segur?"
-
-#: ../../mod/admin.php:1037
-#, php-format
-msgid "Plugin %s disabled."
-msgstr "Plugin %s desactivat."
-
-#: ../../mod/admin.php:1041
-#, php-format
-msgid "Plugin %s enabled."
-msgstr "Plugin %s activat."
-
-#: ../../mod/admin.php:1051 ../../mod/admin.php:1249
-msgid "Disable"
-msgstr "Desactivat"
-
-#: ../../mod/admin.php:1054 ../../mod/admin.php:1251
-msgid "Enable"
-msgstr "Activat"
-
-#: ../../mod/admin.php:1078 ../../mod/admin.php:1278
-msgid "Toggle"
-msgstr "Commutar"
+"Important for events that happen in a particular place. Not practical for "
+"global holidays."
+msgstr "És important per esdeveniments locals, però pels globals no és pràctic."
-#: ../../mod/admin.php:1086 ../../mod/admin.php:1288
-msgid "Author: "
-msgstr "Autor: "
+#: ../../mod/events.php:686
+msgid "Title:"
+msgstr "Títol:"
-#: ../../mod/admin.php:1087 ../../mod/admin.php:1289
-msgid "Maintainer: "
-msgstr "Mantenedor:"
+#: ../../mod/events.php:688
+msgid "Share this event"
+msgstr "Comparteix aquest esdeveniment"
-#: ../../mod/admin.php:1214
-msgid "No themes found."
-msgstr "No s'han trobat temes."
+#: ../../mod/ratings.php:69
+msgid "No ratings"
+msgstr "No valorat"
-#: ../../mod/admin.php:1270
-msgid "Screenshot"
-msgstr "Copia de pantalla"
+#: ../../mod/ratings.php:99
+msgid "Ratings"
+msgstr "Valoracions"
-#: ../../mod/admin.php:1316
-msgid "[Experimental]"
-msgstr "[Experimental]"
+#: ../../mod/ratings.php:100
+msgid "Rating: "
+msgstr "Valoració:"
-#: ../../mod/admin.php:1317
-msgid "[Unsupported]"
-msgstr "[No soportat]"
+#: ../../mod/ratings.php:101
+msgid "Website: "
+msgstr "Lloc web:"
-#: ../../mod/admin.php:1341
-msgid "Log settings updated."
-msgstr "Registre d'ajustos actualitzat."
+#: ../../mod/ratings.php:103
+msgid "Description: "
+msgstr "Descripció:"
-#: ../../mod/admin.php:1398
-msgid "Clear"
-msgstr "Neteja"
+#: ../../mod/rbmark.php:88
+msgid "Select a bookmark folder"
+msgstr "Tria una carpeta d'interès"
-#: ../../mod/admin.php:1404
-msgid "Debugging"
-msgstr "Depurant"
+#: ../../mod/rbmark.php:93
+msgid "Save Bookmark"
+msgstr "Guarda Favorits"
-#: ../../mod/admin.php:1405
-msgid "Log file"
-msgstr "Arxiu de registre"
+#: ../../mod/rbmark.php:94
+msgid "URL of bookmark"
+msgstr "URL de favorit"
-#: ../../mod/admin.php:1405
-msgid ""
-"Must be writable by web server. Relative to your Red top-level directory."
-msgstr "Ha de ser escribible pel servidor web. Relatiu al directori de nivell superior de Red"
+#: ../../mod/rbmark.php:99
+msgid "Or enter new bookmark folder name"
+msgstr "O entra un nou nom de favorit"
-#: ../../mod/admin.php:1406
-msgid "Log level"
-msgstr "Nivell de registre"
+#: ../../mod/filer.php:49
+msgid "- select -"
+msgstr "- selecciona -"
-#: ../../mod/admin.php:1452
-msgid "New Profile Field"
-msgstr "Camp de Perfil Nou"
+#: ../../mod/filestorage.php:82
+msgid "Permission Denied."
+msgstr "Permisos Denegats."
-#: ../../mod/admin.php:1453 ../../mod/admin.php:1473
-msgid "Field nickname"
-msgstr "Àlies de Camp"
+#: ../../mod/filestorage.php:98
+msgid "File not found."
+msgstr "Arxiu no torbat."
-#: ../../mod/admin.php:1453 ../../mod/admin.php:1473
-msgid "System name of field"
-msgstr "nOM DEL SISTEMA DEL CAMP"
+#: ../../mod/filestorage.php:141
+msgid "Edit file permissions"
+msgstr "Edita els permisos d'arxiu"
-#: ../../mod/admin.php:1454 ../../mod/admin.php:1474
-msgid "Input type"
-msgstr "Tipus d'entrada"
+#: ../../mod/filestorage.php:150
+msgid "Set/edit permissions"
+msgstr "Canvia/edita permisos"
-#: ../../mod/admin.php:1455 ../../mod/admin.php:1475
-msgid "Field Name"
-msgstr "Nom de Camp"
+#: ../../mod/filestorage.php:151
+msgid "Include all files and sub folders"
+msgstr "Inclou tots als arxius i subdirectoris"
-#: ../../mod/admin.php:1455 ../../mod/admin.php:1475
-msgid "Label on profile pages"
-msgstr "Etiqueta a les pàgines de perfil"
+#: ../../mod/filestorage.php:152
+msgid "Return to file list"
+msgstr "Tornar al llistat d'arxius"
-#: ../../mod/admin.php:1456 ../../mod/admin.php:1476
-msgid "Help text"
-msgstr "Text d'ajuda"
+#: ../../mod/filestorage.php:154
+msgid "Copy/paste this code to attach file to a post"
+msgstr "Copia/enganxa aquest codi per a adjuntar un arxiu a l'entrada"
-#: ../../mod/admin.php:1456 ../../mod/admin.php:1476
-msgid "Additional info (optional)"
-msgstr "Informació adicional (opcional)"
+#: ../../mod/filestorage.php:155
+msgid "Copy/paste this URL to link file from a web page"
+msgstr "Copia/enganxa aquesta URL per a enllaçar l'arxiu d'una pàgina web"
-#: ../../mod/admin.php:1466
-msgid "Field definition not found"
-msgstr "No es troba la definició del camp"
+#: ../../mod/filestorage.php:157
+msgid "Share this file"
+msgstr "Comparteix l'arxiu"
-#: ../../mod/admin.php:1472
-msgid "Edit Profile Field"
-msgstr "Camp d'Edició del Perfil"
+#: ../../mod/filestorage.php:158
+msgid "Show URL to this file"
+msgstr "Mostra la URL d'aquest arxiu"
-#: ../../mod/oexchange.php:23
-msgid "Unable to find your hub."
-msgstr "No es possible trobar el concentrador"
+#: ../../mod/filestorage.php:159
+msgid "Notify your contacts about this file"
+msgstr "Avisa els teus contactes d'aquest arxiu"
-#: ../../mod/oexchange.php:37
-msgid "Post successful."
-msgstr "Entrada realitzada amb èxit. "
+#: ../../mod/follow.php:25
+msgid "Channel added."
+msgstr "S'ha afegit el canal."
#: ../../mod/register.php:44
msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
@@ -7452,6 +6546,63 @@ msgstr "Tria una contrasenya"
msgid "Please re-enter your password"
msgstr "Si et plau, re-entra la contrasenya"
+#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
+msgid "Contact not found."
+msgstr "Contacte no trobat."
+
+#: ../../mod/fsuggest.php:63
+msgid "Friend suggestion sent."
+msgstr "Suggeriment d'amistat enviada."
+
+#: ../../mod/fsuggest.php:97
+msgid "Suggest Friends"
+msgstr "Amics Suggerits"
+
+#: ../../mod/fsuggest.php:99
+#, php-format
+msgid "Suggest a friend for %s"
+msgstr "Suggereix un amic per a %s"
+
+#: ../../mod/regmod.php:11
+msgid "Please login."
+msgstr "Inicia Sessió."
+
+#: ../../mod/group.php:20
+msgid "Collection created."
+msgstr "Creada una col·lecció"
+
+#: ../../mod/group.php:26
+msgid "Could not create collection."
+msgstr "No puc crear la col·lecció."
+
+#: ../../mod/group.php:54
+msgid "Collection updated."
+msgstr "Col·lecció actualitzada."
+
+#: ../../mod/group.php:86
+msgid "Create a collection of channels."
+msgstr "Creada una col·lecció de canals."
+
+#: ../../mod/group.php:87 ../../mod/group.php:183
+msgid "Collection Name: "
+msgstr "Nom de la Col·lecció:"
+
+#: ../../mod/group.php:89 ../../mod/group.php:186
+msgid "Members are visible to other channels"
+msgstr "Els membres son visibles en altres canals"
+
+#: ../../mod/group.php:107
+msgid "Collection removed."
+msgstr "Col·lecció esborrada."
+
+#: ../../mod/group.php:109
+msgid "Unable to remove collection."
+msgstr "Incapaç d'esborrar la col·lecció."
+
+#: ../../mod/group.php:182
+msgid "Collection Editor"
+msgstr "Editor de Col·leccions"
+
#: ../../mod/removeaccount.php:30
msgid ""
"Account removals are not allowed within 48 hours of changing the account "
@@ -7500,27 +6651,328 @@ msgstr "Esborra el Compte"
msgid "Help:"
msgstr "Ajuda:"
-#: ../../mod/help.php:76 ../../index.php:238
+#: ../../mod/help.php:76 ../../index.php:242
msgid "Not Found"
msgstr "No s'ha pogut trobar la pàgina"
#: ../../mod/help.php:100
msgid "$Projectname Documentation"
-msgstr "$Projectname Documentació"
+msgstr "Documentació de $Projectname"
-#: ../../mod/update_channel.php:43 ../../mod/update_display.php:25
-#: ../../mod/update_network.php:23 ../../mod/update_search.php:46
-#: ../../mod/update_home.php:21 ../../mod/update_public.php:21
-msgid "[Embedded content - reload page to view]"
-msgstr "[Contingut embegut - recarrega la pàgina per veure-ho]"
+#: ../../mod/removeme.php:29
+msgid ""
+"Channel removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "L'esborrat de canals no està permès fins que transcorren 48 hores des de l'últim canvi de contrasenya."
-#: ../../mod/lockview.php:37
-msgid "Remote privacy information not available."
-msgstr "informació privada remota no disponible."
+#: ../../mod/removeme.php:57
+msgid "Remove This Channel"
+msgstr "Elimina Aquest Canal"
-#: ../../mod/lockview.php:58
-msgid "Visible to:"
-msgstr "Visible per:"
+#: ../../mod/removeme.php:58
+msgid "This channel will be completely removed from the network. "
+msgstr "Aquest canal serà completament eliminat de la xarxa."
+
+#: ../../mod/removeme.php:60
+msgid "Remove this channel and all its clones from the network"
+msgstr "Elimina aquest canal i els seus clons de la xarxa"
+
+#: ../../mod/removeme.php:60
+msgid ""
+"By default only the instance of the channel located on this hub will be "
+"removed from the network"
+msgstr "Per defecte, només la instancia del canal ubicat en aquest concentrador pot esser esborrat de la xarxa"
+
+#: ../../mod/removeme.php:61 ../../mod/settings.php:1137
+msgid "Remove Channel"
+msgstr "Elimina el canal"
+
+#: ../../mod/home.php:58 ../../mod/home.php:66 ../../mod/siteinfo.php:155
+msgid "$Projectname"
+msgstr "$Projectname"
+
+#: ../../mod/home.php:75
+#, php-format
+msgid "Welcome to %s"
+msgstr "Benvingut a %s"
+
+#: ../../mod/rmagic.php:40
+msgid ""
+"We encountered a problem while logging in with the OpenID you provided. "
+"Please check the correct spelling of the ID."
+msgstr "Em trobat un problema durant l'inici de sessió amb el OpenID que has facilitat. verifica l'ortografia correcta de la ID."
+
+#: ../../mod/rmagic.php:40
+msgid "The error message was:"
+msgstr "El missatge d'error fou:"
+
+#: ../../mod/rmagic.php:44
+msgid "Authentication failed."
+msgstr "Ha fallat l'autentificació."
+
+#: ../../mod/rmagic.php:84
+msgid "Remote Authentication"
+msgstr "Autentificació Remota"
+
+#: ../../mod/rmagic.php:85
+msgid "Enter your channel address (e.g. channel@example.com)"
+msgstr "Introdueix la teva adreça del canal (eg canal@exemple.com)"
+
+#: ../../mod/rmagic.php:86
+msgid "Authenticate"
+msgstr "Autentica't"
+
+#: ../../mod/id.php:11
+msgid "First Name"
+msgstr "Nom"
+
+#: ../../mod/id.php:12
+msgid "Last Name"
+msgstr "Cognoms"
+
+#: ../../mod/id.php:13
+msgid "Nickname"
+msgstr "Àlies"
+
+#: ../../mod/id.php:14
+msgid "Full Name"
+msgstr "Nom Sencer"
+
+#: ../../mod/id.php:20
+msgid "Profile Photo 16px"
+msgstr "Foto del Perfil 16px"
+
+#: ../../mod/id.php:21
+msgid "Profile Photo 32px"
+msgstr "Foto del Perfil 32px"
+
+#: ../../mod/id.php:22
+msgid "Profile Photo 48px"
+msgstr "Foto del Perfil 48px"
+
+#: ../../mod/id.php:23
+msgid "Profile Photo 64px"
+msgstr "Foto del Perfil 64px"
+
+#: ../../mod/id.php:24
+msgid "Profile Photo 80px"
+msgstr "Foto del Perfil 80px"
+
+#: ../../mod/id.php:25
+msgid "Profile Photo 128px"
+msgstr "Foto del Perfil 128px"
+
+#: ../../mod/id.php:26
+msgid "Timezone"
+msgstr "Zona horària"
+
+#: ../../mod/id.php:27
+msgid "Homepage URL"
+msgstr "URL de la pàgina d'inici"
+
+#: ../../mod/id.php:29
+msgid "Birth Year"
+msgstr "Any de Naixement"
+
+#: ../../mod/id.php:30
+msgid "Birth Month"
+msgstr "Mes de Naixement"
+
+#: ../../mod/id.php:31
+msgid "Birth Day"
+msgstr "Dia de Naixement"
+
+#: ../../mod/id.php:32
+msgid "Birthdate"
+msgstr "Aniversari"
+
+#: ../../mod/impel.php:191
+#, php-format
+msgid "%s element installed"
+msgstr "%s element instal·lat"
+
+#: ../../mod/impel.php:194
+#, php-format
+msgid "%s element installation failed"
+msgstr "%s instal·lació d'element va fallar"
+
+#: ../../mod/search.php:206
+#, php-format
+msgid "Items tagged with: %s"
+msgstr "Elements etiquetats amb: %s"
+
+#: ../../mod/search.php:208
+#, php-format
+msgid "Search results for: %s"
+msgstr "Resultats de cerca per: %s"
+
+#: ../../mod/import.php:25
+#, php-format
+msgid "Your service plan only allows %d channels."
+msgstr "El teu paquet de serveis només admet %d canals."
+
+#: ../../mod/import.php:60
+msgid "Nothing to import."
+msgstr "No hi ha res a importar."
+
+#: ../../mod/import.php:84
+msgid "Unable to download data from old server"
+msgstr "No s'han pogut descarregar les dades del servidor antic"
+
+#: ../../mod/import.php:90
+msgid "Imported file is empty."
+msgstr "El fitxer importat està buit."
+
+#: ../../mod/import.php:110
+msgid "The data provided is not compatible with this project."
+msgstr "Les dades subministrades no son compatibles amb aquest projecte."
+
+#: ../../mod/import.php:115
+#, php-format
+msgid "Warning: Database versions differ by %1$d updates."
+msgstr "Atenció: Les versions de la Base de Dades difereixen en %1$d actualitzacions."
+
+#: ../../mod/import.php:135
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "No s'ha pogut importar el canal perquè l'identificador del canal no s'ha pogut duplicar en aquest servidor."
+
+#: ../../mod/import.php:176
+msgid "Channel clone failed. Import failed."
+msgstr "No s'ha pogut importar el canal perquè el canal no s'ha pogut clonar."
+
+#: ../../mod/import.php:186
+msgid "Cloned channel not found. Import failed."
+msgstr "No s'ha pogut importar el canal perquè el canal clonat no s'ha trobat."
+
+#: ../../mod/import.php:574
+msgid "You must be logged in to use this feature."
+msgstr "Has d'estar registrat per fer servir aquesta funcionalitat."
+
+#: ../../mod/import.php:579
+msgid "Import Channel"
+msgstr "Importa un canal"
+
+#: ../../mod/import.php:580
+msgid ""
+"Use this form to import an existing channel from a different server/hub. You"
+" may retrieve the channel identity from the old server/hub via the network "
+"or provide an export file."
+msgstr "Empra aquest formulari per importar un canal existent en un altre servidor/concentrador. Pots recuperar el canal des de l'antic servidor/concentrador via la xarxa o mitjançant un fitxer d'exportació"
+
+#: ../../mod/import.php:581
+msgid "File to Upload"
+msgstr "Fitxer a pujar"
+
+#: ../../mod/import.php:582
+msgid "Or provide the old server/hub details"
+msgstr "O proveeix els detalls de l'antic servidor/concentrador"
+
+#: ../../mod/import.php:583
+msgid "Your old identity address (xyz@example.com)"
+msgstr "La teva adreça de canal antiga. El format és canal@exemple.org"
+
+#: ../../mod/import.php:584
+msgid "Your old login email address"
+msgstr "La teva adreça de correu electrònic antiga"
+
+#: ../../mod/import.php:585
+msgid "Your old login password"
+msgstr "La teva contrasenya antiga"
+
+#: ../../mod/import.php:586
+msgid ""
+"For either option, please choose whether to make this hub your new primary "
+"address, or whether your old location should continue this role. You will be"
+" able to post from either location, but only one can be marked as the "
+"primary location for files, photos, and media."
+msgstr "Per a qualsevol de les opcions, escull si vols fer primària l'adreça d'aquest hub o mantenir l'anterior com a primària. Podràs penjar entrades des de totes dues adreces, però per als fitxers, imatges i altres en cal una de primària."
+
+#: ../../mod/import.php:587
+msgid "Make this hub my primary location"
+msgstr "Fes d'aquest hub la meva ubicació primària"
+
+#: ../../mod/import.php:588
+msgid ""
+"Import existing posts if possible (experimental - limited by available "
+"memory"
+msgstr "Importa les entrades existents si es possible (experimental - limitat per la memòria disponible"
+
+#: ../../mod/import.php:589
+msgid ""
+"This process may take several minutes to complete. Please submit the form "
+"only once and leave this page open until finished."
+msgstr "Aquest procès pot trigar minuts en completar. Si et plau envia el formulari només una vegada i manté aquesta pàgina oberta fins que finalitzi."
+
+#: ../../mod/service_limits.php:19
+msgid "No service class restrictions found."
+msgstr "No s'han trobat restriccions de clase."
+
+#: ../../mod/invite.php:25
+msgid "Total invitation limit exceeded."
+msgstr "El límit total invitacions s'ha superat."
+
+#: ../../mod/invite.php:49
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s: adreça de correu electrònic no vàlida."
+
+#: ../../mod/invite.php:76
+msgid "Please join us on Red"
+msgstr "Si us plau, uneix-te a Red"
+
+#: ../../mod/invite.php:87
+msgid "Invitation limit exceeded. Please contact your site administrator."
+msgstr "Límit d'invitacions excedit. Si us plau, poseu-vos en contacte amb l'administrador del lloc."
+
+#: ../../mod/invite.php:92
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s : Entrega del Missatge fallida."
+
+#: ../../mod/invite.php:96
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d missatge enviat."
+msgstr[1] "%d missatges enviats."
+
+#: ../../mod/invite.php:115
+msgid "You have no more invitations available"
+msgstr "No té més invitacions disponibles"
+
+#: ../../mod/invite.php:129
+msgid "Send invitations"
+msgstr "Enviar invitacions"
+
+#: ../../mod/invite.php:130
+msgid "Enter email addresses, one per line:"
+msgstr "Introduïu les adreces de correu electrònic, una per línia:"
+
+#: ../../mod/invite.php:132
+msgid "Please join my community on $Projectname."
+msgstr "Si us plau uneix-te la meva comunitat en $Projectname."
+
+#: ../../mod/invite.php:134
+msgid "You will need to supply this invitation code: "
+msgstr "Has de proporcionar aquest codi d'invitació:"
+
+#: ../../mod/invite.php:135
+msgid ""
+"1. Register at any $Projectname location (they are all inter-connected)"
+msgstr "1. Registre en qualsevol lloc del $Projectname (estàn tots interconnectats)"
+
+#: ../../mod/invite.php:137
+msgid "2. Enter my $Projectname network address into the site searchbar."
+msgstr "2. Entra a la meva adreça de xarxa al $Projectname, a la barra de cerca del lloc."
+
+#: ../../mod/invite.php:138
+msgid "or visit "
+msgstr "o visita"
+
+#: ../../mod/invite.php:140
+msgid "3. Click [Connect]"
+msgstr "3. Click [Conectar]"
#: ../../mod/settings.php:76
msgid "Name is required"
@@ -7756,7 +7208,7 @@ msgstr "Enllaça a l'origen els títols de l'entrada"
#: ../../mod/settings.php:865
msgid "System Page Layout Editor - (advanced)"
-msgstr "Editor de Disseny de la Pàgina del Sistema - (avançat)"
+msgstr "Editor de disseny de pàgina - (avançat)"
#: ../../mod/settings.php:868
msgid "Use blog/list mode on channel page"
@@ -7932,6 +7384,10 @@ msgstr "Pot reduir l'SPAM"
msgid "Default Post Permissions"
msgstr "Permisos de publicació per defecte"
+#: ../../mod/settings.php:1083 ../../mod/mitem.php:155 ../../mod/mitem.php:227
+msgid "(click to open/close)"
+msgstr "(clica per obrir/tancar)"
+
#: ../../mod/settings.php:1087
msgid "Channel permissions category:"
msgstr "Categoria de permisos de canal:"
@@ -8092,476 +7548,1054 @@ msgstr "Ajustos diversos"
msgid "Personal menu to display in your channel pages"
msgstr "Menú personal per mostrar en les teves pàgines de canal"
-#: ../../mod/settings.php:1137 ../../mod/removeme.php:61
-msgid "Remove Channel"
-msgstr "Elimina el canal"
-
#: ../../mod/settings.php:1138
msgid "Remove this channel."
msgstr "Elimina aquest canal."
-#: ../../mod/id.php:11
-msgid "First Name"
-msgstr "Nom"
+#: ../../mod/item.php:174
+msgid "Unable to locate original post."
+msgstr "No s'ha pogut trobar l'entrada original."
-#: ../../mod/id.php:12
-msgid "Last Name"
-msgstr "Cognoms"
+#: ../../mod/item.php:440
+msgid "Empty post discarded."
+msgstr "S'ha descartat l'entrada perquè no té contingut."
-#: ../../mod/id.php:13
-msgid "Nickname"
-msgstr "Àlies"
+#: ../../mod/item.php:480
+msgid "Executable content type not permitted to this channel."
+msgstr "No està permès el contingut de tipus executable en aquest canal."
-#: ../../mod/id.php:14
-msgid "Full Name"
-msgstr "Nom Sencer"
+#: ../../mod/item.php:914
+msgid "System error. Post not saved."
+msgstr "Hi ha hagut un error del sistema. L'entrada no s'ha desat."
-#: ../../mod/id.php:20
-msgid "Profile Photo 16px"
-msgstr "Foto del Perfil 16px"
+#: ../../mod/item.php:1146
+msgid "Unable to obtain post information from database."
+msgstr "No s'ha pogut obtenir informació de l'entrada a la base de dades."
-#: ../../mod/id.php:21
-msgid "Profile Photo 32px"
-msgstr "Foto del Perfil 32px"
+#: ../../mod/item.php:1153
+#, php-format
+msgid "You have reached your limit of %1$.0f top level posts."
+msgstr "Has assolit el teu límit de %1$.0f entrades (descomptant comentaris)."
-#: ../../mod/id.php:22
-msgid "Profile Photo 48px"
-msgstr "Foto del Perfil 48px"
+#: ../../mod/item.php:1160
+#, php-format
+msgid "You have reached your limit of %1$.0f webpages."
+msgstr "Has assolit el teu limit de %1$.0f pàgines web."
-#: ../../mod/id.php:23
-msgid "Profile Photo 64px"
-msgstr "Foto del Perfil 64px"
+#: ../../mod/setup.php:187
+msgid "$Projectname Server - Setup"
+msgstr "Servidor $Projectname - Configuració"
-#: ../../mod/id.php:24
-msgid "Profile Photo 80px"
-msgstr "Foto del Perfil 80px"
+#: ../../mod/setup.php:191
+msgid "Could not connect to database."
+msgstr "No puc connectar amb la base de dades"
-#: ../../mod/id.php:25
-msgid "Profile Photo 128px"
-msgstr "Foto del Perfil 128px"
+#: ../../mod/setup.php:195
+msgid ""
+"Could not connect to specified site URL. Possible SSL certificate or DNS "
+"issue."
+msgstr "No s'ha pogut connectar a l'URL del lloc especificat. Possible problema amb el certificat SSL o de DNS."
-#: ../../mod/id.php:26
-msgid "Timezone"
-msgstr "Zona horària"
+#: ../../mod/setup.php:202
+msgid "Could not create table."
+msgstr "No puc crear la taula."
-#: ../../mod/id.php:27
-msgid "Homepage URL"
-msgstr "URL de la pàgina d'inici"
+#: ../../mod/setup.php:207
+msgid "Your site database has been installed."
+msgstr "La teva base de dades del lloc s'ha instal·lat."
-#: ../../mod/id.php:29
-msgid "Birth Year"
-msgstr "Any de Naixement"
+#: ../../mod/setup.php:211
+msgid ""
+"You may need to import the file \"install/schema_xxx.sql\" manually using a "
+"database client."
+msgstr "Podria ser necessari importar el fitxer \"install / schema_xxx.sql\" manualment utilitzant un client de base de dades."
-#: ../../mod/id.php:30
-msgid "Birth Month"
-msgstr "Mes de Naixement"
+#: ../../mod/setup.php:212 ../../mod/setup.php:280 ../../mod/setup.php:730
+msgid "Please see the file \"install/INSTALL.txt\"."
+msgstr "Si us plau, consulteu el fitxer \"install / INSTALL.txt\"."
-#: ../../mod/id.php:31
-msgid "Birth Day"
-msgstr "Dia de Naixement"
+#: ../../mod/setup.php:277
+msgid "System check"
+msgstr "Comprovació del sistema"
-#: ../../mod/id.php:32
-msgid "Birthdate"
-msgstr "Aniversari"
+#: ../../mod/setup.php:282
+msgid "Check again"
+msgstr "Comprova de nou"
-#: ../../mod/message.php:41
-msgid "Conversation removed."
-msgstr "Conversació eliminada."
+#: ../../mod/setup.php:304
+msgid "Database connection"
+msgstr "Connexió de base de dades"
-#: ../../mod/message.php:56
-msgid "No messages."
-msgstr "Sense missatges."
+#: ../../mod/setup.php:305
+msgid ""
+"In order to install $Projectname we need to know how to connect to your "
+"database."
+msgstr "Per tal d'instaŀlar $Projectname cal configurar la connexió a la base de dades."
-#: ../../mod/message.php:72 ../../mod/mail.php:336
-msgid "Delete conversation"
-msgstr "Conversació esborrada"
+#: ../../mod/setup.php:306
+msgid ""
+"Please contact your hosting provider or site administrator if you have "
+"questions about these settings."
+msgstr "Si us plau, poseu-vos en contacte amb el proveïdor de serveis o administrador del lloc si vostè té preguntes sobre aquests paràmetres."
-#: ../../mod/message.php:74
-msgid "D, d M Y - g:i A"
-msgstr "D, d M Y - g:i A"
+#: ../../mod/setup.php:307
+msgid ""
+"The database you specify below should already exist. If it does not, please "
+"create it before continuing."
+msgstr "La base de dades s'especifica a continuació ja ha d'existir. Si no és així, si us plau crear-la abans de continuar."
-#: ../../mod/mood.php:131
-msgid "Set your current mood and tell your friends"
-msgstr "Estableix el teu estat d'ànim actual i digues-li als teus amics"
+#: ../../mod/setup.php:311
+msgid "Database Server Name"
+msgstr "Base de Dades Nom del Servidor"
-#: ../../mod/vote.php:97
-msgid "Total votes"
-msgstr "Total de vots"
+#: ../../mod/setup.php:311
+msgid "Default is localhost"
+msgstr "Per defecte es localhost"
-#: ../../mod/vote.php:98
-msgid "Average Rating"
-msgstr "Valoració Mitja"
+#: ../../mod/setup.php:312
+msgid "Database Port"
+msgstr "Port per a la Base de Dades"
-#: ../../mod/removeme.php:29
+#: ../../mod/setup.php:312
+msgid "Communication port number - use 0 for default"
+msgstr "Numero del port de comunicacions - empra 0 per defecte"
+
+#: ../../mod/setup.php:313
+msgid "Database Login Name"
+msgstr "Base de Dades Nom d'Accès"
+
+#: ../../mod/setup.php:314
+msgid "Database Login Password"
+msgstr "Base de Dades Contrasenya d'Accès"
+
+#: ../../mod/setup.php:315
+msgid "Database Name"
+msgstr "Nom de la Base de Dades"
+
+#: ../../mod/setup.php:316
+msgid "Database Type"
+msgstr "Tipus de Base de Dades"
+
+#: ../../mod/setup.php:318 ../../mod/setup.php:359
+msgid "Site administrator email address"
+msgstr "Adreça de correu de l'administrador del lloc"
+
+#: ../../mod/setup.php:318 ../../mod/setup.php:359
msgid ""
-"Channel removals are not allowed within 48 hours of changing the account "
-"password."
-msgstr "L'esborrat de canals no està permès fins que transcorren 48 hores des de l'últim canvi de contrasenya."
+"Your account email address must match this in order to use the web admin "
+"panel."
+msgstr "El teu compte de email ha de coincidir amb això per poder emprar el panel web d'administrador."
-#: ../../mod/removeme.php:57
-msgid "Remove This Channel"
-msgstr "Elimina Aquest Canal"
+#: ../../mod/setup.php:319 ../../mod/setup.php:361
+msgid "Website URL"
+msgstr "URL del lloc web"
-#: ../../mod/removeme.php:58
-msgid "This channel will be completely removed from the network. "
-msgstr "Aquest canal serà completament eliminat de la xarxa."
+#: ../../mod/setup.php:319 ../../mod/setup.php:361
+msgid "Please use SSL (https) URL if available."
+msgstr "Si us plau, empra SSL (https) URL si està disponible."
-#: ../../mod/removeme.php:60
-msgid "Remove this channel and all its clones from the network"
-msgstr "Elimina aquest canal i els seus clons de la xarxa"
+#: ../../mod/setup.php:321 ../../mod/setup.php:363
+msgid "Please select a default timezone for your website"
+msgstr "Si us plau, tria la zona horària del teu lloc web"
-#: ../../mod/removeme.php:60
+#: ../../mod/setup.php:348
+msgid "Site settings"
+msgstr "Ajustos del lloc"
+
+#: ../../mod/setup.php:413
+msgid "Could not find a command line version of PHP in the web server PATH."
+msgstr "No s'ha pogut trobar una versió de línia d'ordres del PHP en el PATH del servidor web."
+
+#: ../../mod/setup.php:414
msgid ""
-"By default only the instance of the channel located on this hub will be "
-"removed from the network"
-msgstr "Per defecte, només la instancia del canal ubicat en aquest concentrador pot esser esborrat de la xarxa"
+"If you don't have a command line version of PHP installed on server, you "
+"will not be able to run background polling via cron."
+msgstr "Si vostè no té una versió de línia d'ordres del PHP instal·lada al servidor, vostè no serà capaç d'executar sondejos en segon pla via cron."
-#: ../../mod/connedit.php:267
-msgid "is now connected to"
-msgstr "Ara està conectat amb"
+#: ../../mod/setup.php:418
+msgid "PHP executable path"
+msgstr "Camí cap l'executable de PHP"
-#: ../../mod/connedit.php:380
-msgid "Could not access address book record."
-msgstr "No puc accedir al registre del contacte"
+#: ../../mod/setup.php:418
+msgid ""
+"Enter full path to php executable. You can leave this blank to continue the "
+"installation."
+msgstr "Introdueix el camí cap l'executable de php. Pots deixa-ho en blanc i continuar l'instal·lació."
-#: ../../mod/connedit.php:394
-msgid "Refresh failed - channel is currently unavailable."
-msgstr "Ha fallat la recàrrega - el canal es actualment inaccesible."
+#: ../../mod/setup.php:423
+msgid "Command line PHP"
+msgstr "Línia d'ordres de PHP"
-#: ../../mod/connedit.php:406 ../../mod/connedit.php:418
-#: ../../mod/connedit.php:430 ../../mod/connedit.php:442
-#: ../../mod/connedit.php:458
-msgid "Unable to set address book parameters."
-msgstr "No es poden ajustar els paràmetres dels contactes."
+#: ../../mod/setup.php:432
+msgid ""
+"The command line version of PHP on your system does not have "
+"\"register_argc_argv\" enabled."
+msgstr "La versió de línia d'ordres de PHP al teu sistema no te el \"register_argc_argv\" activat."
-#: ../../mod/connedit.php:482
-msgid "Connection has been removed."
-msgstr "S'han eliminat les conexions."
+#: ../../mod/setup.php:433
+msgid "This is required for message delivery to work."
+msgstr "Això es requereix per que funcioni l'entrega de missatges."
-#: ../../mod/connedit.php:501
+#: ../../mod/setup.php:436
+msgid "PHP register_argc_argv"
+msgstr "PHP register_argc_argv"
+
+#: ../../mod/setup.php:454
#, php-format
-msgid "View %s's profile"
-msgstr "Mostra el perfil de %s"
+msgid ""
+"Your max allowed total upload size is set to %s. Maximum size of one file to"
+" upload is set to %s. You are allowed to upload up to %d files at once."
+msgstr "La mida màxima que se't permet pujar està establerta en %s. La mida màxima per arxiu pujat es de %s. Se't permet pujar fins a %d arxius d'una vegada."
-#: ../../mod/connedit.php:505
-msgid "Refresh Permissions"
-msgstr "Recarrega els Permissos"
+#: ../../mod/setup.php:459
+msgid "You can adjust these settings in the servers php.ini."
+msgstr "Pots ajustar aquests valors a l'arxiu php.ini del servidor"
-#: ../../mod/connedit.php:508
-msgid "Fetch updated permissions"
-msgstr "Obté els permisos actualitzats"
+#: ../../mod/setup.php:461
+msgid "PHP upload limits"
+msgstr "Límits de pujada de PHP"
-#: ../../mod/connedit.php:512
-msgid "Recent Activity"
-msgstr "Activitat Recent"
+#: ../../mod/setup.php:484
+msgid ""
+"Error: the \"openssl_pkey_new\" function on this system is not able to "
+"generate encryption keys"
+msgstr "Error: la funció \"openssl_pkey_new\" en aquest sistema no es capaç de generar claus d'encriptació"
-#: ../../mod/connedit.php:515
-msgid "View recent posts and comments"
-msgstr "Mostra les entrades i comentaris recents"
+#: ../../mod/setup.php:485
+msgid ""
+"If running under Windows, please see "
+"\"http://www.php.net/manual/en/openssl.installation.php\"."
+msgstr "Si esta funcionant sota Windows, per favor, miri \"http://www.php.net/manual/en/openssl.installation.php\"."
-#: ../../mod/connedit.php:522
-msgid "Block (or Unblock) all communications with this connection"
-msgstr "Boqueja (o Desbloqueja) les comunicacions amb aquesta connexió"
+#: ../../mod/setup.php:488
+msgid "Generate encryption keys"
+msgstr "Generar claus de xifrat"
-#: ../../mod/connedit.php:523
-msgid "This connection is blocked!"
-msgstr "Aquesta connexió està bloquejada!"
+#: ../../mod/setup.php:500
+msgid "libCurl PHP module"
+msgstr "mòdul PHP libCurl "
-#: ../../mod/connedit.php:527
-msgid "Unignore"
-msgstr "Inhabilita"
+#: ../../mod/setup.php:501
+msgid "GD graphics PHP module"
+msgstr "mòdul PHP GD gràfics"
-#: ../../mod/connedit.php:527 ../../mod/notifications.php:51
-msgid "Ignore"
-msgstr "Ignora"
+#: ../../mod/setup.php:502
+msgid "OpenSSL PHP module"
+msgstr "mòdul PHP OpenSSL"
-#: ../../mod/connedit.php:530
-msgid "Ignore (or Unignore) all inbound communications from this connection"
-msgstr "Ignora (o Considera) les communicacions entrants d'aquesta connexió"
+#: ../../mod/setup.php:503
+msgid "mysqli or postgres PHP module"
+msgstr "mòdul PHP mysqli o postgres"
-#: ../../mod/connedit.php:531
-msgid "This connection is ignored!"
-msgstr "Aquesta connexió es ignorada!"
+#: ../../mod/setup.php:504
+msgid "mb_string PHP module"
+msgstr "mòdul PHP mb_string"
-#: ../../mod/connedit.php:535
-msgid "Unarchive"
-msgstr "Desarxiva"
+#: ../../mod/setup.php:505
+msgid "mcrypt PHP module"
+msgstr "mòdul PHP mcrypt"
-#: ../../mod/connedit.php:535
-msgid "Archive"
-msgstr "Arxiva"
+#: ../../mod/setup.php:506
+msgid "xml PHP module"
+msgstr "Mòdul xml de PHP"
-#: ../../mod/connedit.php:538
+#: ../../mod/setup.php:510 ../../mod/setup.php:512
+msgid "Apache mod_rewrite module"
+msgstr "mòdul Apache mod_rewrite"
+
+#: ../../mod/setup.php:510
msgid ""
-"Archive (or Unarchive) this connection - mark channel dead but keep content"
-msgstr "Arxiva (o Desarxiva) aquesta connexió - Marca el canal com a mort pero manté el contingut "
+"Error: Apache webserver mod-rewrite module is required but not installed."
+msgstr "Error: el mòdul mod-rewrite del servidor web Apache es requereix i no està instal·lat."
-#: ../../mod/connedit.php:539
-msgid "This connection is archived!"
-msgstr "Aquesta connexió està arxivada!"
+#: ../../mod/setup.php:516 ../../mod/setup.php:519
+msgid "proc_open"
+msgstr "proc_open"
-#: ../../mod/connedit.php:543
-msgid "Unhide"
-msgstr "Mostra"
+#: ../../mod/setup.php:516
+msgid ""
+"Error: proc_open is required but is either not installed or has been "
+"disabled in php.ini"
+msgstr "Error: es requereix proc_open però o no està instal·lat o ha estat desactivat a php.ini"
-#: ../../mod/connedit.php:543
-msgid "Hide"
-msgstr "Amaga"
+#: ../../mod/setup.php:524
+msgid "Error: libCURL PHP module required but not installed."
+msgstr "Error: el mòdul PHP libCURL es requereix però no està instal·lat."
-#: ../../mod/connedit.php:546
-msgid "Hide or Unhide this connection from your other connections"
-msgstr "Amaga (o Mostra) aquesta connexió de les altres connexions teves"
+#: ../../mod/setup.php:528
+msgid ""
+"Error: GD graphics PHP module with JPEG support required but not installed."
+msgstr "Error: el mòdul PHP GD graphics amb support JPEG es requereix però no està instal·lat."
-#: ../../mod/connedit.php:547
-msgid "This connection is hidden!"
-msgstr "Aquesta connexió està amagada!"
+#: ../../mod/setup.php:532
+msgid "Error: openssl PHP module required but not installed."
+msgstr "Error: el mòdul PHP openssl es requereix però no està instal·lat."
-#: ../../mod/connedit.php:554
-msgid "Delete this connection"
-msgstr "Elimina aquesta connexió"
+#: ../../mod/setup.php:536
+msgid ""
+"Error: mysqli or postgres PHP module required but neither are installed."
+msgstr "Error: el mòdul PHO mysqli o postgres es requereix però no està instal·lat."
-#: ../../mod/connedit.php:635
-msgid "Approve this connection"
-msgstr "Apccepta aquesta connexió"
+#: ../../mod/setup.php:540
+msgid "Error: mb_string PHP module required but not installed."
+msgstr "Error: el mòdul PHP mb_string es requereix però no està instal·lat."
-#: ../../mod/connedit.php:635
-msgid "Accept connection to allow communication"
-msgstr "Accepta la connexió per permetre la comunicació"
+#: ../../mod/setup.php:544
+msgid "Error: mcrypt PHP module required but not installed."
+msgstr "Error: el mòdul PHP mcrypt es requereix però no està instal·lat."
-#: ../../mod/connedit.php:640
-msgid "Set Affinity"
-msgstr "Ajusta l'Afinitat"
+#: ../../mod/setup.php:548
+msgid "Error: xml PHP module required for DAV but not installed."
+msgstr "Error: el mòdul xml de PHP es requereix per DAV però no està instal·lat."
-#: ../../mod/connedit.php:643
-msgid "Set Profile"
-msgstr "Ajusta el Perfil"
+#: ../../mod/setup.php:566
+msgid ""
+"The web installer needs to be able to create a file called \".htconfig.php\""
+" in the top folder of your web server and it is unable to do so."
+msgstr "L'instaŀlador ha de poder crear i modificar un fitxer anomenat «.htconfig.php» a la carpeta arrel del servidor, però sembla que no ho pot fer."
-#: ../../mod/connedit.php:646
-msgid "Set Affinity & Profile"
-msgstr "Ajusta Afinitat i Perfil"
+#: ../../mod/setup.php:567
+msgid ""
+"This is most often a permission setting, as the web server may not be able "
+"to write files in your folder - even if you can."
+msgstr "Això sol ser un problema de permisos. Per molt que el teu usuari pugui modificar-lo, és el del servidor web qui necessita els poders de modificació."
-#: ../../mod/connedit.php:663
-msgid "Apply these permissions automatically"
-msgstr "Aplica aquests permissos automaticament"
+#: ../../mod/setup.php:568
+msgid ""
+"At the end of this procedure, we will give you a text to save in a file "
+"named .htconfig.php in your Red top folder."
+msgstr "Al final d'aquest procés hauràs de desar un text a l'arxiu «.htconfig.php», que es troba a la carpeta arrel del servidor."
-#: ../../mod/connedit.php:665
-msgid "This connection's address is"
-msgstr "La direcció d'aquesta connexió es"
+#: ../../mod/setup.php:569
+msgid ""
+"You can alternatively skip this procedure and perform a manual installation."
+" Please see the file \"install/INSTALL.txt\" for instructions."
+msgstr "Aquest procés és opcional. Per a fer una instaŀlació manual consulta les instruccions a «install/INSTALL.txt\"."
-#: ../../mod/connedit.php:668
+#: ../../mod/setup.php:572
+msgid ".htconfig.php is writable"
+msgstr "L'arxiu «.htconfig.php» es pot modificar"
+
+#: ../../mod/setup.php:586
msgid ""
-"The permissions indicated on this page will be applied to all new "
-"connections."
-msgstr "Els permisos indicats en aquesta pàgina seran aplicats a totes les noves connexions."
+"Red uses the Smarty3 template engine to render its web views. Smarty3 "
+"compiles templates to PHP to speed up rendering."
+msgstr "Red fa servir el motor de plantilles Smarty3 per a renderitzar les vistes més ràpidament."
-#: ../../mod/connedit.php:670
-msgid "Slide to adjust your degree of friendship"
-msgstr "Llisca per ajustar el nivell d'amistat"
+#: ../../mod/setup.php:587
+#, php-format
+msgid ""
+"In order to store these compiled templates, the web server needs to have "
+"write access to the directory %s under the Red top level folder."
+msgstr "Per tal de guardar aquestes plantilles compilades, el servidor web necessita tenir premis d'escriptura en el directori %s sota la carpeta principal de Red."
-#: ../../mod/connedit.php:672
-msgid "Slide to adjust your rating"
-msgstr "Llisca per ajustar la valoració"
+#: ../../mod/setup.php:588 ../../mod/setup.php:609
+msgid ""
+"Please ensure that the user that your web server runs as (e.g. www-data) has"
+" write access to this folder."
+msgstr "Comprova que l'usuari que executa el servidor (www-data en Apache) té permisos d'escriptura en aquesta carpeta."
-#: ../../mod/connedit.php:673 ../../mod/connedit.php:678
-msgid "Optionally explain your rating"
-msgstr "Opcionalment pots explicar la teva valoració"
+#: ../../mod/setup.php:589
+#, php-format
+msgid ""
+"Note: as a security measure, you should give the web server write access to "
+"%s only--not the template files (.tpl) that it contains."
+msgstr "Nota: com a mesura de seguretat l'usuari del servidor web ha de tenir accés d'escriptura només a %s, i no a les plantilles (.tpl) que conté."
-#: ../../mod/connedit.php:675
-msgid "Custom Filter"
-msgstr "Filtre a mida"
+#: ../../mod/setup.php:592
+#, php-format
+msgid "%s is writable"
+msgstr "Es pot escriure a %s"
-#: ../../mod/connedit.php:676
-msgid "Only import posts with this text"
-msgstr "Importa exclusivament entrades amb aquest text"
+#: ../../mod/setup.php:608
+msgid ""
+"Red uses the store directory to save uploaded files. The web server needs to"
+" have write access to the store directory under the Red top level folder"
+msgstr "Red fa servir la carpeta «store» per a desar els fitxers pujats. Per tant, el servidor web necessita tenir permís d'escriptura en aquesta carpeta, que està a l'arrel del servidor web."
+
+#: ../../mod/setup.php:612
+msgid "store is writable"
+msgstr "Es pot escriure al magatzem (store)"
-#: ../../mod/connedit.php:676 ../../mod/connedit.php:677
+#: ../../mod/setup.php:645
msgid ""
-"words one per line or #tags or /patterns/, leave blank to import all posts"
-msgstr "paraules una per línia o #etiquetes o /patrons/, deixar en blanc per importar totes les entrades"
+"SSL certificate cannot be validated. Fix certificate or disable https access"
+" to this site."
+msgstr "El certificat SSL no s'ha pogut validar. Arregla-ho o deshabilita l'accés https a aquest lloc"
-#: ../../mod/connedit.php:677
-msgid "Do not import posts with this text"
-msgstr "No importar entrades amb aquest text"
+#: ../../mod/setup.php:646
+msgid ""
+"If you have https access to your website or allow connections to TCP port "
+"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
+"NOT use self-signed certificates!"
+msgstr "Si tens accès pet https al teu lloc web o permets connexions pel port TCP 443 (port https), Has d'emprar un certificat VÀLID. NO es poden emprar certificats AUTO-SIGNATS!"
-#: ../../mod/connedit.php:679
-msgid "This information is public!"
-msgstr "Aquesta informació es pública!"
+#: ../../mod/setup.php:647
+msgid ""
+"This restriction is incorporated because public posts from you may for "
+"example contain references to images on your own hub."
+msgstr "El motiu d'aquesta restricció és que les teves entrades públiques poden contenir referències a imatges del teu propi hub."
-#: ../../mod/connedit.php:684
-msgid "Connection Pending Approval"
-msgstr "Connexió Pendent d'Aprovació"
+#: ../../mod/setup.php:648
+msgid ""
+"If your certificate is not recognized, members of other sites (who may "
+"themselves have valid certificates) will get a warning message on their own "
+"site complaining about security issues."
+msgstr "Si el teu certificat no és reconegut, llavors el membres d'altres hubs, encara que tinguin certificats vàlids, rebran una advertència de seguretat en carregar contingut teu."
-#: ../../mod/connedit.php:685
-msgid "Connection Request"
-msgstr "Petició de Connexió"
+#: ../../mod/setup.php:649
+msgid ""
+"This can cause usability issues elsewhere (not just on your own site) so we "
+"must insist on this requirement."
+msgstr "Per tant, com que perjudica la usabilitat més enllà del teu lloc, la restricció de tenir un certificat reconegut és molt important."
-#: ../../mod/connedit.php:686
-#, php-format
+#: ../../mod/setup.php:650
msgid ""
-"(%s) would like to connect with you. Please approve this connection to allow"
-" communication."
-msgstr "(%s) voldria conectar amb tu. Aprova aquesta connexió per permetre la connexió."
+"Providers are available that issue free certificates which are browser-"
+"valid."
+msgstr "Hi ha autoritats de certificació reconegudes que ofereixen certificats gratuïts."
-#: ../../mod/connedit.php:688
-msgid "Approve Later"
-msgstr "Aprovar més tard"
+#: ../../mod/setup.php:652
+msgid "SSL certificate validation"
+msgstr "Validació del certificat SSL"
-#: ../../mod/connedit.php:691
-msgid "inherited"
-msgstr "heretat"
+#: ../../mod/setup.php:658
+msgid ""
+"Url rewrite in .htaccess is not working. Check your server "
+"configuration.Test: "
+msgstr "No es poden reescriure les URL a «.htaccess». Comprova la configuració del servidor:"
-#: ../../mod/connedit.php:693
+#: ../../mod/setup.php:661
+msgid "Url rewrite is working"
+msgstr "Es poden reescriure les URL a «.htaccess»"
+
+#: ../../mod/setup.php:670
+msgid ""
+"The database configuration file \".htconfig.php\" could not be written. "
+"Please use the enclosed text to create a configuration file in your web "
+"server root."
+msgstr "L'arxiu de configuracio de la base de dades «.htconfig.php» no s'ha pogut modificar. El pots crear tu a l'arrel del servidor web amb el text de la caixa com a contingut."
+
+#: ../../mod/setup.php:694
+msgid "Errors encountered creating database tables."
+msgstr "S'han produït errors mentre es creaven taules a la base de dades."
+
+#: ../../mod/setup.php:728
+msgid "<h1>What next</h1>"
+msgstr "<h1>I ara què?</h1>"
+
+#: ../../mod/setup.php:729
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the "
+"poller."
+msgstr "IMPORTANT! Cal que configuris manualment una execució periòdica del \"poller\"."
+
+#: ../../mod/layouts.php:176
+msgid "Comanche page description language help"
+msgstr "Pgina d'ajuda del llenguatge Comanche"
+
+#: ../../mod/layouts.php:180
+msgid "Layout Description"
+msgstr "Descripció del disseny"
+
+#: ../../mod/layouts.php:185
+msgid "Download PDL file"
+msgstr "Descarrega l'arxiu PDL"
+
+#: ../../mod/sharedwithme.php:94
+msgid "Files: shared with me"
+msgstr "Arxius: compartits amb jo"
+
+#: ../../mod/sharedwithme.php:96
+msgid "NEW"
+msgstr "NOU"
+
+#: ../../mod/sharedwithme.php:99
+msgid "Remove all files"
+msgstr "Esborra tots els arxius"
+
+#: ../../mod/sharedwithme.php:100
+msgid "Remove this file"
+msgstr "Esborra l'arxiu"
+
+#: ../../mod/like.php:15
+msgid "Like/Dislike"
+msgstr "M'agrada / No m'agrada"
+
+#: ../../mod/like.php:20
+msgid "This action is restricted to members."
+msgstr "Aquesta acció està restringida als membres."
+
+#: ../../mod/like.php:21
+msgid ""
+"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a "
+"href=\"register\">register as a new $Projectname member</a> to continue."
+msgstr "<a href=\"rmagic\">Entra amb la teva identitat $Projectname</a> o <a href=\"register\">registra't a $Projectname</a> per continuar."
+
+#: ../../mod/like.php:101 ../../mod/like.php:128 ../../mod/like.php:166
+msgid "Invalid request."
+msgstr "Sol·licitud invàlida."
+
+#: ../../mod/like.php:143
+msgid "thing"
+msgstr "cosa"
+
+#: ../../mod/like.php:189
+msgid "Channel unavailable."
+msgstr "El canal està inactiu."
+
+#: ../../mod/like.php:231
+msgid "Previous action reversed."
+msgstr "S'ha desfet l'acció anterior."
+
+#: ../../mod/like.php:401
+#, php-format
+msgid "%1$s agrees with %2$s's %3$s"
+msgstr "%1$s està a favor de %3$s de %2$s"
+
+#: ../../mod/like.php:403
+#, php-format
+msgid "%1$s doesn't agree with %2$s's %3$s"
+msgstr "%1$s està en contra de %3$s de %2$s"
+
+#: ../../mod/like.php:405
+#, php-format
+msgid "%1$s abstains from a decision on %2$s's %3$s"
+msgstr "%1$s ha votat en blanc en %3$s de %2$s"
+
+#: ../../mod/like.php:407
+#, php-format
+msgid "%1$s is attending %2$s's %3$s"
+msgstr "%1$s assistirà a %3$s de %2$s"
+
+#: ../../mod/like.php:409
+#, php-format
+msgid "%1$s is not attending %2$s's %3$s"
+msgstr "%1$s no assistirà a %3$s de %2$s"
+
+#: ../../mod/like.php:411
+#, php-format
+msgid "%1$s may attend %2$s's %3$s"
+msgstr "%1$s potser assistirà a %3$s de %2$s"
+
+#: ../../mod/like.php:507
+msgid "Action completed."
+msgstr "S'ha completat l'acció."
+
+#: ../../mod/like.php:508
+msgid "Thank you."
+msgstr "Gràcies."
+
+#: ../../mod/siteinfo.php:112
#, php-format
+msgid "Version %s"
+msgstr "Versió %s"
+
+#: ../../mod/siteinfo.php:133
+msgid "Installed plugins/addons/apps:"
+msgstr "Plugins/addons/apps Instal·lats:"
+
+#: ../../mod/siteinfo.php:146
+msgid "No installed plugins/addons/apps"
+msgstr "Plugins/addons/apps no instal·lats"
+
+#: ../../mod/siteinfo.php:156
msgid ""
-"Please choose the profile you would like to display to %s when viewing your "
-"profile securely."
-msgstr "Tria el perfil que vols mostrar a %s quan es vegi el perfil segur."
+"This is a hub of $Projectname - a global cooperative network of "
+"decentralized privacy enhanced websites."
+msgstr "Aquest és un hub de $Projectname, una xarxa cooperativa mundial de llocs web descentralitzats amb gran control de la privacitat."
-#: ../../mod/connedit.php:695
-msgid "Their Settings"
-msgstr "Els seus Ajustos"
+#: ../../mod/siteinfo.php:158
+msgid "Tag: "
+msgstr "Etiqueta:"
-#: ../../mod/connedit.php:696
-msgid "My Settings"
-msgstr "Els Meus Ajustos"
+#: ../../mod/siteinfo.php:160
+msgid "Last background fetch: "
+msgstr "Última actualització en rerefons:"
-#: ../../mod/connedit.php:698
-msgid "Individual Permissions"
-msgstr "Permisos Individuals"
+#: ../../mod/siteinfo.php:163
+msgid "Running at web location"
+msgstr "Correguent en el lloc web"
-#: ../../mod/connedit.php:699
+#: ../../mod/siteinfo.php:164
msgid ""
-"Some permissions may be inherited from your channel's <a "
-"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
-"priority than individual settings. You can <strong>not</strong> change those"
-" settings here."
-msgstr "Alguns permisos poden ser heretats dels teus canals <a href=\"settings\"><strong>ajustos de privacitat</strong></a>, Els quals tenen més prioritat que els ajustos individuals. <strong>No</strong> pots canviar aquests ajustos aquí."
+"Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more "
+"about $Projectname."
+msgstr "Visita <a href=\"http://hubzilla.org\">hubzilla.org</a> per saber-ne més de $Projectname."
-#: ../../mod/connedit.php:700
+#: ../../mod/siteinfo.php:165
+msgid "Bug reports and issues: please visit"
+msgstr "Per informar d'errors o problemes ves a"
+
+#: ../../mod/siteinfo.php:167
+msgid "$projectname issues"
+msgstr "$projectname emisions"
+
+#: ../../mod/siteinfo.php:168
msgid ""
-"Some permissions may be inherited from your channel's <a "
-"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
-"priority than individual settings. You can change those settings here but "
-"they wont have any impact unless the inherited setting changes."
-msgstr "Alguns permisos poden ser heretats dels teus canals <a href=\"settings\"><strong>ajustos de privacitat</strong></a>, Els quals tenen més prioritat que els ajustos individuals. <strong>Pots</strong> canviar aquests ajustos aquí pero no tindran cap impacte fins que no canviis els ajustos heretats."
+"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
+"com"
+msgstr "Per suggerències, felicitacions i altres, envia'ns un mail a «redmatrix» [arroba] librelist [punt] com"
-#: ../../mod/connedit.php:701
-msgid "Last update:"
-msgstr "Darrera actualització:"
+#: ../../mod/siteinfo.php:170
+msgid "Site Administrators"
+msgstr "Administradors del lloc"
-#: ../../mod/rmagic.php:40
+#: ../../mod/lockview.php:37
+msgid "Remote privacy information not available."
+msgstr "informació privada remota no disponible."
+
+#: ../../mod/lockview.php:58
+msgid "Visible to:"
+msgstr "Visible per:"
+
+#: ../../mod/locs.php:21 ../../mod/locs.php:52
+msgid "Location not found."
+msgstr "Situació que no es troba."
+
+#: ../../mod/locs.php:56
+msgid "Primary location cannot be removed."
+msgstr "La ubicació primària no es pot treure."
+
+#: ../../mod/locs.php:88
+msgid "No locations found."
+msgstr "No es troben els llocs."
+
+#: ../../mod/locs.php:101
+msgid "Manage Channel Locations"
+msgstr "Gestionar Ubicacions de Canal"
+
+#: ../../mod/locs.php:102
+msgid "Location (address)"
+msgstr "Ubicació (direcció)"
+
+#: ../../mod/locs.php:103
+msgid "Primary Location"
+msgstr "Ubicació Primària"
+
+#: ../../mod/locs.php:104
+msgid "Drop location"
+msgstr "Treure la ubicació"
+
+#: ../../mod/sources.php:32
+msgid "Failed to create source. No channel selected."
+msgstr "Error en crear l'origen. Cap canal seleccionat."
+
+#: ../../mod/sources.php:45
+msgid "Source created."
+msgstr "Origen creat."
+
+#: ../../mod/sources.php:57
+msgid "Source updated."
+msgstr "Origen actualitzat."
+
+#: ../../mod/sources.php:82
+msgid "*"
+msgstr "*"
+
+#: ../../mod/sources.php:89
+msgid "Manage remote sources of content for your channel."
+msgstr "Gestiona contingut per al teu canal d'origens remots"
+
+#: ../../mod/sources.php:90 ../../mod/sources.php:100
+msgid "New Source"
+msgstr "Nou Origen"
+
+#: ../../mod/sources.php:101 ../../mod/sources.php:133
msgid ""
-"We encountered a problem while logging in with the OpenID you provided. "
-"Please check the correct spelling of the ID."
-msgstr "Em trobat un problema durant l'inici de sessió amb el OpenID que has facilitat. verifica l'ortografia correcta de la ID."
+"Import all or selected content from the following channel into this channel "
+"and distribute it according to your channel settings."
+msgstr "Importar tot o sel·lecciona contingut dels següents canals, en aquest canal i distribueix-lo d'acord als teus ajustos de canals."
-#: ../../mod/rmagic.php:40
-msgid "The error message was:"
-msgstr "El missatge d'error fou:"
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Only import content with these words (one per line)"
+msgstr "Només importa contingut amb aquestes paraules (una per línia)"
-#: ../../mod/rmagic.php:44
-msgid "Authentication failed."
-msgstr "Ha fallat l'autentificació."
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Leave blank to import all public content"
+msgstr "Deixar en blanc per importar tot el contingut públic"
-#: ../../mod/rmagic.php:84
-msgid "Remote Authentication"
-msgstr "Autentificació Remota"
+#: ../../mod/sources.php:103 ../../mod/sources.php:137
+#: ../../mod/new_channel.php:112
+msgid "Channel Name"
+msgstr "Nom del canal"
-#: ../../mod/rmagic.php:85
-msgid "Enter your channel address (e.g. channel@example.com)"
-msgstr "Introdueix la teva adreça del canal (eg canal@exemple.com)"
+#: ../../mod/sources.php:123 ../../mod/sources.php:150
+msgid "Source not found."
+msgstr "No s'ha trobat la font."
-#: ../../mod/rmagic.php:86
-msgid "Authenticate"
-msgstr "Autentica't"
+#: ../../mod/sources.php:130
+msgid "Edit Source"
+msgstr "Edita la font"
-#: ../../mod/mail.php:33
-msgid "Unable to lookup recipient."
-msgstr "Incapaç de trobar el destinatari."
+#: ../../mod/sources.php:131
+msgid "Delete Source"
+msgstr "Esborra la font"
-#: ../../mod/mail.php:41
-msgid "Unable to communicate with requested channel."
-msgstr "Incapaç de comunicar amb el canal demanat."
+#: ../../mod/sources.php:158
+msgid "Source removed"
+msgstr "S'ha esborrat la font"
-#: ../../mod/mail.php:48
-msgid "Cannot verify requested channel."
-msgstr "No puc verificar el canal demanat."
+#: ../../mod/sources.php:160
+msgid "Unable to remove source."
+msgstr "No s'ha pogut esborrar la font."
-#: ../../mod/mail.php:74
-msgid "Selected channel has private message restrictions. Send failed."
-msgstr "El canal seleccionat te restriccions sobre els missatges privats. L'enviament ha fallat."
+#: ../../mod/lostpass.php:15
+msgid "No valid account found."
+msgstr "No es troba un compte vàlid."
-#: ../../mod/mail.php:139
-msgid "Message deleted."
-msgstr "Missatge eliminat."
+#: ../../mod/lostpass.php:29
+msgid "Password reset request issued. Check your email."
+msgstr "Sol·licitud de restabliment de contrasenya emesa. Consulta el teu correu electrònic."
-#: ../../mod/mail.php:156
-msgid "Message recalled."
-msgstr "Recupera el missatge."
+#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:103
+#, php-format
+msgid "Site Member (%s)"
+msgstr "Lloc d'Usuari (%s)"
-#: ../../mod/mail.php:225
-msgid "Send Private Message"
-msgstr "Envia Missatge Privat"
+#: ../../mod/lostpass.php:40
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "S'ha soŀlicitat restablir la contrasenya al hub %s"
-#: ../../mod/mail.php:226 ../../mod/mail.php:343
-msgid "To:"
-msgstr "Per:"
+#: ../../mod/lostpass.php:63
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "Ha fallat el restabliment de contrasenya perquè la no s'ha pogut verificar soŀlicitud. Pot ser que ja ho hàgiu soŀlicitat abans."
-#: ../../mod/mail.php:231 ../../mod/mail.php:345
-msgid "Subject:"
-msgstr "Assumpte:"
+#: ../../mod/lostpass.php:86 ../../boot.php:1559
+msgid "Password Reset"
+msgstr "Restabliment de contrasenya"
-#: ../../mod/mail.php:242
-msgid "Send"
-msgstr "Envia"
+#: ../../mod/lostpass.php:87
+msgid "Your password has been reset as requested."
+msgstr "S'ha restablert la vostra contrasenya."
-#: ../../mod/mail.php:269
-msgid "Message not found."
-msgstr "Missatge no trobat."
+#: ../../mod/lostpass.php:88
+msgid "Your new password is"
+msgstr "La nova contrasenya és"
-#: ../../mod/mail.php:312
-msgid "Delete message"
-msgstr "Elimina el missatge"
+#: ../../mod/lostpass.php:89
+msgid "Save or copy your new password - and then"
+msgstr "Desa o copia la nova contrasenya, i després"
-#: ../../mod/mail.php:313
-msgid "Recall message"
-msgstr "Recupera el missatge"
+#: ../../mod/lostpass.php:90
+msgid "click here to login"
+msgstr "fes clic aquí per iniciar sessió"
-#: ../../mod/mail.php:315
-msgid "Message has been recalled."
-msgstr "El missatge s'ha recuperat."
+#: ../../mod/lostpass.php:91
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Pots canviar la contrasenya a la pàgina <em>Paràmetres</em>, un cop iniciada la sessió."
-#: ../../mod/mail.php:332
-msgid "Private Conversation"
-msgstr "Conversació Privada"
+#: ../../mod/lostpass.php:108
+#, php-format
+msgid "Your password has changed at %s"
+msgstr "La teva contrasenya a %s ha canviat"
-#: ../../mod/mail.php:338
+#: ../../mod/lostpass.php:123
+msgid "Forgot your Password?"
+msgstr "No recordes la contrasenya?"
+
+#: ../../mod/lostpass.php:124
msgid ""
-"No secure communications available. You <strong>may</strong> be able to "
-"respond from the sender's profile page."
-msgstr "Comunicació segura no disponible. Pots respondre des de la pàgina de perfil del remitent."
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Escriu la teva adreça de correu electrònic i envia per restablir la contrasenya. Després revisa el seu correu electrònic per obtenir més instruccions."
-#: ../../mod/mail.php:342
-msgid "Send Reply"
-msgstr "Envia Resposta"
+#: ../../mod/lostpass.php:125
+msgid "Email Address"
+msgstr "Adreça electrònica"
-#: ../../mod/notifications.php:26
-msgid "Invalid request identifier."
-msgstr "Sol·licitud d'identificació invàlida."
+#: ../../mod/lostpass.php:126
+msgid "Reset"
+msgstr "Reajustar"
-#: ../../mod/notifications.php:35
-msgid "Discard"
-msgstr "Descarta"
+#: ../../mod/menu.php:45
+msgid "Unable to update menu."
+msgstr "No s'ha pogut actualitzar el menú."
-#: ../../mod/regmod.php:11
-msgid "Please login."
-msgstr "Inicia Sessió."
+#: ../../mod/menu.php:56
+msgid "Unable to create menu."
+msgstr "No s'ha pogut crear el menú."
+
+#: ../../mod/menu.php:92 ../../mod/menu.php:104
+msgid "Menu Name"
+msgstr "Nom del menú"
+
+#: ../../mod/menu.php:92
+msgid "Unique name (not visible on webpage) - required"
+msgstr "Nom únic (no visible a la pàgina web) - requerit"
+
+#: ../../mod/menu.php:93 ../../mod/menu.php:105
+msgid "Menu Title"
+msgstr "Títol del menú"
+
+#: ../../mod/menu.php:93
+msgid "Visible on webpage - leave empty for no title"
+msgstr "Visible a la pàgina web - deixar buit per a no posar títol"
+
+#: ../../mod/menu.php:94
+msgid "Allow Bookmarks"
+msgstr "Permetre Marcadors"
+
+#: ../../mod/menu.php:94 ../../mod/menu.php:151
+msgid "Menu may be used to store saved bookmarks"
+msgstr "El menú es pot emprar per a guardar marcadors"
+
+#: ../../mod/menu.php:95 ../../mod/menu.php:153
+msgid "Submit and proceed"
+msgstr "Envia i procedeix"
+
+#: ../../mod/menu.php:107
+msgid "Drop"
+msgstr "Menysprea"
+
+#: ../../mod/menu.php:111
+msgid "Bookmarks allowed"
+msgstr "Marcadors permesos"
+
+#: ../../mod/menu.php:113
+msgid "Delete this menu"
+msgstr "Esborra el menú"
+
+#: ../../mod/menu.php:114 ../../mod/menu.php:148
+msgid "Edit menu contents"
+msgstr "Edita el contingut del menú"
+
+#: ../../mod/menu.php:115
+msgid "Edit this menu"
+msgstr "Edita el menú"
+
+#: ../../mod/menu.php:130
+msgid "Menu could not be deleted."
+msgstr "El menu no es pot esborrar."
+
+#: ../../mod/menu.php:138 ../../mod/mitem.php:24
+msgid "Menu not found."
+msgstr "Menú no trobat."
+
+#: ../../mod/menu.php:143
+msgid "Edit Menu"
+msgstr "Edita Menú"
+
+#: ../../mod/menu.php:147
+msgid "Add or remove entries to this menu"
+msgstr "Afegeix o esborra entrades a aquest menú"
+
+#: ../../mod/menu.php:149
+msgid "Menu name"
+msgstr "Nom del Menú"
+
+#: ../../mod/menu.php:149
+msgid "Must be unique, only seen by you"
+msgstr "Ha de ser únic, nomes vist per tú"
+
+#: ../../mod/menu.php:150
+msgid "Menu title"
+msgstr "Títol del menú"
+
+#: ../../mod/menu.php:150
+msgid "Menu title as seen by others"
+msgstr "Títol del menú vist pels altres"
+
+#: ../../mod/menu.php:151
+msgid "Allow bookmarks"
+msgstr "Marcadors permesos"
+
+#: ../../mod/menu.php:160 ../../mod/mitem.php:116 ../../mod/xchan.php:37
+msgid "Not found."
+msgstr "No trobat."
+
+#: ../../mod/message.php:41
+msgid "Conversation removed."
+msgstr "Conversació eliminada."
+
+#: ../../mod/message.php:56
+msgid "No messages."
+msgstr "Sense missatges."
+
+#: ../../mod/message.php:74
+msgid "D, d M Y - g:i A"
+msgstr "D, d M Y - g:i A"
+
+#: ../../mod/mitem.php:48
+msgid "Unable to create element."
+msgstr "Incapaç de crear l'element."
+
+#: ../../mod/mitem.php:72
+msgid "Unable to update menu element."
+msgstr "Incapaç d'actualitzar un element del menú."
+
+#: ../../mod/mitem.php:88
+msgid "Unable to add menu element."
+msgstr "Incapaç d'afegir l'element del menú."
+
+#: ../../mod/mitem.php:154 ../../mod/mitem.php:226
+msgid "Menu Item Permissions"
+msgstr "Permisos de l'Article del Menú"
+
+#: ../../mod/mitem.php:157 ../../mod/mitem.php:173
+msgid "Link Name"
+msgstr "Nom de l'Enllaç"
+
+#: ../../mod/mitem.php:158 ../../mod/mitem.php:231
+msgid "Link or Submenu Target"
+msgstr "Enllaç o Submenú Objectiu"
+
+#: ../../mod/mitem.php:158
+msgid "Enter URL of the link or select a menu name to create a submenu"
+msgstr "Entra la URL de l'enlla´o tria un nom de menú per crear un submenú"
+
+#: ../../mod/mitem.php:159 ../../mod/mitem.php:232
+msgid "Use magic-auth if available"
+msgstr "Empra magic-auth si esta disponible"
+
+#: ../../mod/mitem.php:160 ../../mod/mitem.php:233
+msgid "Open link in new window"
+msgstr "Obrir l'enllaç en una nova finestra"
+
+#: ../../mod/mitem.php:161 ../../mod/mitem.php:234
+msgid "Order in list"
+msgstr "Ordre per llista"
+
+#: ../../mod/mitem.php:161 ../../mod/mitem.php:234
+msgid "Higher numbers will sink to bottom of listing"
+msgstr "Els números més alts aniràn al fons de la llista"
+
+#: ../../mod/mitem.php:162
+msgid "Submit and finish"
+msgstr "Envia i termina"
+
+#: ../../mod/mitem.php:163
+msgid "Submit and continue"
+msgstr "Envia i continua"
+
+#: ../../mod/mitem.php:171
+msgid "Menu:"
+msgstr "Menú:"
+
+#: ../../mod/mitem.php:174
+msgid "Link Target"
+msgstr "Enllaç Objectiu"
+
+#: ../../mod/mitem.php:177
+msgid "Edit menu"
+msgstr "Edita menú"
+
+#: ../../mod/mitem.php:180
+msgid "Edit element"
+msgstr "Edita element"
+
+#: ../../mod/mitem.php:181
+msgid "Drop element"
+msgstr "Deixa anar element"
+
+#: ../../mod/mitem.php:182
+msgid "New element"
+msgstr "Nou element"
+
+#: ../../mod/mitem.php:183
+msgid "Edit this menu container"
+msgstr "Edita aquest contenidor de menú"
+
+#: ../../mod/mitem.php:184
+msgid "Add menu element"
+msgstr "Afegeix element de menú"
-#: ../../mod/post.php:235
+#: ../../mod/mitem.php:185
+msgid "Delete this menu item"
+msgstr "Esborra aquest article del menú"
+
+#: ../../mod/mitem.php:186
+msgid "Edit this menu item"
+msgstr "Edita aquest article del menú"
+
+#: ../../mod/mitem.php:203
+msgid "Menu item not found."
+msgstr "Article del menú no trobat."
+
+#: ../../mod/mitem.php:215
+msgid "Menu item deleted."
+msgstr "Article del menú eliminat."
+
+#: ../../mod/mitem.php:217
+msgid "Menu item could not be deleted."
+msgstr "Article del menú no es pot eliminar."
+
+#: ../../mod/mitem.php:224
+msgid "Edit Menu Element"
+msgstr "Editar Element del Menú"
+
+#: ../../mod/mitem.php:230
+msgid "Link text"
+msgstr "Enllaç de text"
+
+#: ../../mod/subthread.php:103
+#, php-format
+msgid "%1$s is following %2$s's %3$s"
+msgstr "%1$s esta seguint %2$s de %3$s"
+
+#: ../../mod/mood.php:131
+msgid "Set your current mood and tell your friends"
+msgstr "Estableix el teu estat d'ànim actual i digues-li als teus amics"
+
+#: ../../mod/suggest.php:35
msgid ""
-"Remote authentication blocked. You are logged into this site locally. Please"
-" logout and retry."
-msgstr "Autenticació remota bloquejada. Ha iniciat sessió en aquest lloc a nivell local. Si us plau, tanca la sessió i torna-ho a intentar."
+"No suggestions available. If this is a new site, please try again in 24 "
+"hours."
+msgstr "No hi ha suggerencies. Si es un lloc nou, espera 24 hores i proba de nou."
+
+#: ../../mod/tagger.php:96
+#, php-format
+msgid "%1$s tagged %2$s's %3$s with %4$s"
+msgstr "%1$s ha etiquetat %3$s de %2$s amb %4$s"
+
+#: ../../mod/tagrm.php:44 ../../mod/tagrm.php:94
+msgid "Tag removed"
+msgstr "S'ha tret l'etiqueta"
+
+#: ../../mod/tagrm.php:119
+msgid "Remove Item Tag"
+msgstr "Elimina l'etiqueta d'element"
+
+#: ../../mod/tagrm.php:121
+msgid "Select a tag to remove: "
+msgstr "Tria l'etiqueta a eliminar:"
+
+#: ../../mod/network.php:91
+msgid "No such group"
+msgstr "No existeix el grup"
+
+#: ../../mod/network.php:129
+msgid "No such channel"
+msgstr "No existeix el canal"
+
+#: ../../mod/network.php:143
+msgid "Search Results For:"
+msgstr "Cerca resultats per:"
+
+#: ../../mod/network.php:198
+msgid "Collection is empty"
+msgstr "La coŀlecció és buida"
+
+#: ../../mod/network.php:207
+msgid "Collection: "
+msgstr "Coŀlecció:"
+
+#: ../../mod/network.php:226
+msgid "Connection: "
+msgstr "Connexió:"
+
+#: ../../mod/network.php:233
+msgid "Invalid connection."
+msgstr "La connexió és invàlida."
+
+#: ../../mod/openid.php:26
+msgid "OpenID protocol error. No ID returned."
+msgstr "Error del protocol OpenID. No ha retornat ID"
#: ../../mod/new_channel.php:109
msgid "Add a Channel"
@@ -8605,158 +8639,220 @@ msgstr "tipus de Canal"
#: ../../mod/new_channel.php:119
msgid "Read more about roles"
-msgstr "Llegix més sobre els rols"
+msgstr "Llegeix més sobre els rols"
-#: ../../mod/appman.php:28 ../../mod/appman.php:44
-msgid "App installed."
-msgstr "Aplicació instal·lada."
+#: ../../mod/thing.php:94
+msgid "Thing updated"
+msgstr "S'ha actualitzat la cosa"
-#: ../../mod/appman.php:37
-msgid "Malformed app."
-msgstr "Aplicació amb errors"
+#: ../../mod/thing.php:167
+msgid "Object store: failed"
+msgstr "No s'ha pogut emmagatzemar l'objecte"
-#: ../../mod/appman.php:80
-msgid "Embed code"
-msgstr "Codi embegut"
+#: ../../mod/thing.php:171
+msgid "Thing added"
+msgstr "S'ha afegit la cosa"
-#: ../../mod/appman.php:86
-msgid "Edit App"
-msgstr "Edita l'Aplicació"
+#: ../../mod/thing.php:203
+#, php-format
+msgid "OBJ: %1$s %2$s %3$s"
+msgstr "OBJ: %1$s %2$s %3$s"
-#: ../../mod/appman.php:86
-msgid "Create App"
-msgstr "Crea l'Aplicació"
+#: ../../mod/thing.php:254
+msgid "Show Thing"
+msgstr "Mostra la cosa"
-#: ../../mod/appman.php:91
-msgid "Name of app"
-msgstr "Nom de l'Aplicació"
+#: ../../mod/thing.php:261
+msgid "item not found."
+msgstr "no s'ha trobat l'element."
-#: ../../mod/appman.php:92
-msgid "Location (URL) of app"
-msgstr "Ubicació (URL) de l'aplicació"
+#: ../../mod/thing.php:289
+msgid "Edit Thing"
+msgstr "Edita la cosa"
-#: ../../mod/appman.php:94
-msgid "Photo icon URL"
-msgstr "Foto icona URL"
+#: ../../mod/thing.php:291 ../../mod/thing.php:338
+msgid "Select a profile"
+msgstr "Tria un perfil"
-#: ../../mod/appman.php:94
-msgid "80 x 80 pixels - optional"
-msgstr "80 x 80 pixels - opcional"
+#: ../../mod/thing.php:295 ../../mod/thing.php:341
+msgid "Post an activity"
+msgstr "Publica una activitat"
-#: ../../mod/appman.php:95
-msgid "Version ID"
-msgstr "Versió ID"
+#: ../../mod/thing.php:295 ../../mod/thing.php:341
+msgid "Only sends to viewers of the applicable profile"
+msgstr "S'envia només a visitants del perfil corresponent"
-#: ../../mod/appman.php:96
-msgid "Price of app"
-msgstr "Preu de l'aplicació"
+#: ../../mod/thing.php:297 ../../mod/thing.php:343
+msgid "Name of thing e.g. something"
+msgstr "Nom de la cosa. Exemple: patata"
-#: ../../mod/appman.php:97
-msgid "Location (URL) to purchase app"
-msgstr "Ubicació (URL) per comprar l'aplicació"
+#: ../../mod/thing.php:299 ../../mod/thing.php:344
+msgid "URL of thing (optional)"
+msgstr "Adreça URL de la cosa (opcional)"
-#: ../../mod/ping.php:263
-msgid "sent you a private message"
-msgstr "Se t'ha enviat un missatge privat"
+#: ../../mod/thing.php:301 ../../mod/thing.php:345
+msgid "URL for photo of thing (optional)"
+msgstr "Adreça URL de la foto d'una cosa (opcional)"
-#: ../../mod/ping.php:314
-msgid "added your channel"
-msgstr "el teu canal s'ha afegit"
+#: ../../mod/thing.php:336
+msgid "Add Thing to your Profile"
+msgstr "Afegeix una cosa al teu perfil"
-#: ../../mod/ping.php:355
-msgid "posted an event"
-msgstr "enviat un event"
+#: ../../mod/uexport.php:50 ../../mod/uexport.php:51
+msgid "Export Channel"
+msgstr "Exportar Canal"
-#: ../../mod/layouts.php:176
-msgid "Comanche page description language help"
-msgstr "Pgina d'ajuda del llenguatge Comanche"
+#: ../../mod/uexport.php:52
+msgid ""
+"Export your basic channel information to a file. This acts as a backup of "
+"your connections, permissions, profile and basic data, which can be used to "
+"import your data to a new server hub, but does not contain your content."
+msgstr "Exporta a un fitxer dades bàsiques del canal. Serveix com a còpia de seguretat de les teves connexions, permisos, perfil però no de contingut, i es pot usar per importar-ho a un nou servidor. "
-#: ../../mod/layouts.php:180
-msgid "Layout Description"
-msgstr "Descripció del Disseny de la Pàgina"
+#: ../../mod/uexport.php:53
+msgid "Export Content"
+msgstr "Exportar el Contingut"
-#: ../../mod/layouts.php:185
-msgid "Download PDL file"
-msgstr "Descarrega l'arxiu PDL"
+#: ../../mod/uexport.php:54
+msgid ""
+"Export your channel information and recent content to a JSON backup that can"
+" be restored or imported to another server hub. This backs up all of your "
+"connections, permissions, profile data and several months of posts. This "
+"file may be VERY large. Please be patient - it may take several minutes for"
+" this download to begin."
+msgstr "Exporta la informació i contingut recent del teu canal a un fitxer JSON. Aquesta còpia de seguretat pot ser restablerta a un altre hub o a aquest mateix. Conté totes les teves connexions, permisos, dades de perfil i diversos mesos d'entrades, així que pot resultar molt gran. Per això, poden passar uns quants minuts fins que la descàrrega s'iniciï."
+
+#: ../../mod/uexport.php:55
+msgid "Export your posts from a given year or month:"
+msgstr "Exporta les teves entrades d'un any o mes determinats:"
+
+#: ../../mod/uexport.php:57
+msgid ""
+"You may also export your posts and conversations for a particular year or "
+"month. Click on one of the recent years or months below."
+msgstr "També pots exportar les teves entrades i converses dins d'un any o mes en particualr. Fes clic a un mes o any d'aquí sota."
-#: ../../mod/home.php:73
-#, php-format
-msgid "Welcome to %s"
-msgstr "Benvingut a %s"
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Jan"
+msgstr "gen."
-#: ../../mod/page.php:126
-msgid "Lorem Ipsum"
-msgstr "Lorem Ipsum"
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Feb"
+msgstr "febr."
-#: ../../mod/bookmarks.php:38
-msgid "Bookmark added"
-msgstr "Favorit afegit"
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Mar"
+msgstr "març"
-#: ../../mod/bookmarks.php:60
-msgid "My Bookmarks"
-msgstr "Els Meus Favorits"
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Apr"
+msgstr "abr."
-#: ../../mod/bookmarks.php:71
-msgid "My Connections Bookmarks"
-msgstr "Les connexions dels meus Favorits"
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Jun"
+msgstr "juny"
-#: ../../mod/channel.php:97
-msgid "Insufficient permissions. Request redirected to profile page."
-msgstr "Permisos insuficients. Petició redirigida a la pàgina del perfil."
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Jul"
+msgstr "jul."
-#: ../../mod/pconfig.php:27 ../../mod/pconfig.php:60
-msgid "This setting requires special processing and editing has been blocked."
-msgstr "Aquest ajust requereix un procés espedial i l'edició esta bloquejada."
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Aug"
+msgstr "ag."
-#: ../../mod/pconfig.php:49
-msgid "Configuration Editor"
-msgstr "Editor de Configuració"
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Sep"
+msgstr "set."
-#: ../../mod/pconfig.php:50
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Oct"
+msgstr "oct."
+
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Nov"
+msgstr "nov."
+
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Dec"
+msgstr "des."
+
+#: ../../mod/uexport.php:60
msgid ""
-"Warning: Changing some settings could render your channel inoperable. Please"
-" leave this page unless you are comfortable with and knowledgeable about how"
-" to correctly use this feature."
-msgstr "atenció: Realitzar segons quins ajustos pot fer el canal inoperable. Deixa aquesta pàgina si no estas segur i tens suficients coneixements sobre l'ús correcte d'aquesta característica."
+"If the export fails (possibly due to memory exhaustion on your server hub), "
+"please try again selecting a more limited date range."
+msgstr "En cas que falli l'exportació, prova-ho de nou demanant un interval de dates més curt. El servidor del hub podria haver fet curt de memòria RAM."
-#: ../../mod/suggest.php:35
+#: ../../mod/uexport.php:61
+#, php-format
msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
-msgstr "No hi ha suggerencies. Si es un lloc nou, espera 24 hores i proba de nou."
+"Or adjust the date in your browser location bar to select other dates. For "
+"example the year 2013; <a href=\"%1$s/2013\">%1$s/2013</a> or the month "
+"September 2013; <a href=\"%1$s/2013/9\">%1$s/2013/9</a>"
+msgstr "O bé ajusta la data de la barra de localització per escollir unes altres dates. Per exemple, l'any 2013; <a href=\"%1$s/2013\">%1$s/2013</a> o el setembre de 2013; <a href=\"%1$s/2013/9\">%1$s/2013/9</a>"
-#: ../../mod/poll.php:64
-msgid "Poll"
-msgstr "Sondeija"
+#: ../../mod/uexport.php:62
+msgid "Please visit"
+msgstr "Visita"
-#: ../../mod/poll.php:69
-msgid "View Results"
-msgstr "Mostra els Resultats"
+#: ../../mod/uexport.php:62
+msgid "on another hub to import the backup files(s)."
+msgstr "en un altre hub per tal de restablir la/es còpia/es de seguretat."
-#: ../../mod/service_limits.php:19
-msgid "No service class restrictions found."
-msgstr "No s'han trobat restriccions de clase."
+#: ../../mod/uexport.php:63
+msgid ""
+"We advise you to clone the channel on the new hub first and than to import "
+"the backup file(s) (from the same channel) in chronological order. Importing"
+" the backup files into another channel will certainly give permission "
+"issues."
+msgstr "És recomanable clonar el canal en el hub nou abans d'importar la/es còpia/es de seguretat del mateix canal. Importar una còpia de seguretat d'un canal des d'un altre canal donarà problemes de permisos. Si n'hi ha més d'una, també cal importar les còpies en ordre cronològic, de més antic a més nou."
-#: ../../mod/sharedwithme.php:94
-msgid "Files: shared with me"
-msgstr "Arxius: compartits amb jo"
+#: ../../mod/update_channel.php:43 ../../mod/update_display.php:25
+#: ../../mod/update_home.php:21 ../../mod/update_network.php:23
+#: ../../mod/update_public.php:21 ../../mod/update_search.php:46
+msgid "[Embedded content - reload page to view]"
+msgstr "[Contingut embegut - recarrega la pàgina per veure-ho]"
-#: ../../mod/sharedwithme.php:96
-msgid "NEW"
-msgstr "NOU"
+#: ../../mod/viewconnections.php:62
+msgid "No connections."
+msgstr "Sense connexions."
-#: ../../mod/sharedwithme.php:99
-msgid "Remove all files"
-msgstr "Esborra tots els arxius"
+#: ../../mod/viewconnections.php:75
+#, php-format
+msgid "Visit %s's profile [%s]"
+msgstr "Visita el perfil [%s] de %s"
-#: ../../mod/sharedwithme.php:100
-msgid "Remove this file"
-msgstr "Esborra l'arxiu"
+#: ../../mod/viewsrc.php:38
+msgid "Source of Item"
+msgstr "Origen de l'article"
+
+#: ../../mod/vote.php:97
+msgid "Total votes"
+msgstr "Vots totals"
+
+#: ../../mod/vote.php:98
+msgid "Average Rating"
+msgstr "Valoració mitjana"
+
+#: ../../mod/webpages.php:191
+msgid "Page Title"
+msgstr "Títol de la pàgina"
+
+#: ../../mod/xchan.php:6
+msgid "Xchan Lookup"
+msgstr "Cerca a xchan"
+
+#: ../../mod/xchan.php:9
+msgid "Lookup xchan beginning with (or webbie): "
+msgstr "Cerca a xchan començant per (o webbie)"
+
+#: ../../mod/zfinger.php:23
+msgid "invalid target signature"
+msgstr "Signatura objectiu invàlida"
#: ../../view/theme/apw/php/config.php:202
#: ../../view/theme/apw/php/config.php:236
msgid "Schema Default"
-msgstr "Esquema Predeterminat"
+msgstr "Esquema per defecte"
#: ../../view/theme/apw/php/config.php:203
msgid "Sans-Serif"
@@ -8773,7 +8869,7 @@ msgstr "Ajustos de tema"
#: ../../view/theme/apw/php/config.php:260
msgid "Set scheme"
-msgstr "Ajustos d'esquema"
+msgstr "Estableix l'esquema"
#: ../../view/theme/apw/php/config.php:261
#: ../../view/theme/redbasic/php/config.php:124
@@ -8782,87 +8878,87 @@ msgstr "Ajusta la mida del tipus de lletra per a entrades i comentaris"
#: ../../view/theme/apw/php/config.php:262
msgid "Set font face"
-msgstr "Ajusta el tipus de lletra"
+msgstr "Estableix el tipus de lletra"
#: ../../view/theme/apw/php/config.php:263
msgid "Set iconset"
-msgstr "Ajusta el conjunt d'icones"
+msgstr "Estableix el conjunt d'icones"
#: ../../view/theme/apw/php/config.php:264
msgid "Set big shadow size, default 15px 15px 15px"
-msgstr "Ajusta la mida gran de l'ombra, predeterminat a 15px 15px 15px"
+msgstr "Estableix una mida petita per l'ombrejat, per defecte 15px 15px 15px"
#: ../../view/theme/apw/php/config.php:265
msgid "Set small shadow size, default 5px 5px 5px"
-msgstr "Ajusta la mida petita de l'ombra, predeterminat a 5px 5px 5px"
+msgstr "Estableix una mida petita per l'ombrejat, per defecte 15px 15px 15px"
#: ../../view/theme/apw/php/config.php:266
msgid "Set shadow color, default #000"
-msgstr "Ajusta el color de l'ombra, predeterminat a #000"
+msgstr "Estableix el color de l'ombra, per defecte #000"
#: ../../view/theme/apw/php/config.php:267
msgid "Set radius size, default 5px"
-msgstr "Ajusta la mida del radi, predeterminat a 5px"
+msgstr "Estableix el radi, per defecte 5px"
#: ../../view/theme/apw/php/config.php:268
msgid "Set line-height for posts and comments"
-msgstr "Ajusta el gruix de línia per entrades i comentaris"
+msgstr "Estableix l'alçada de línia per a entrades i comentaris"
#: ../../view/theme/apw/php/config.php:269
msgid "Set background image"
-msgstr "Ajusta l'imatge de fons"
+msgstr "Estableix la imatge de fons"
#: ../../view/theme/apw/php/config.php:270
msgid "Set background attachment"
-msgstr "Ajusta els adjunts en segon pla"
+msgstr "Estableix els adjunts en segon pla"
#: ../../view/theme/apw/php/config.php:271
msgid "Set background color"
-msgstr "Ajusta el color en segon pla"
+msgstr "Estableix del color de fons"
#: ../../view/theme/apw/php/config.php:272
msgid "Set section background image"
-msgstr "Ajusta la secció d'imatge en segon pla"
+msgstr "Estableix la imatge de fons de secció"
#: ../../view/theme/apw/php/config.php:273
msgid "Set section background color"
-msgstr "Ajusta el color de la secció en segon pla"
+msgstr "Estableix el color de fons de secció"
#: ../../view/theme/apw/php/config.php:274
msgid "Set color of items - use hex"
-msgstr "Ajuste el color dels articles - empra codi hexadecimal"
+msgstr "Estableix el color dels elements (en notació hexadecimal)"
#: ../../view/theme/apw/php/config.php:275
msgid "Set color of links - use hex"
-msgstr "ajusta el color dels enlaços - empra codi hexadecimal"
+msgstr "Estableix el color dels enllaços (en notació hexadecimal)"
#: ../../view/theme/apw/php/config.php:276
msgid "Set max-width for items. Default 400px"
-msgstr "Ajusta l'amplada màxima dels articles. Predeterminat a 400px"
+msgstr "Estableix el l'amplada màxima dels elements. Per defecte, 400px"
#: ../../view/theme/apw/php/config.php:277
msgid "Set min-width for items. Default 240px"
-msgstr "Ajusta l'amplada minima dels articles. Predeterminat a 240px"
+msgstr "Estableix l'amplada mínima dels elements. Per defecte, 240px"
#: ../../view/theme/apw/php/config.php:278
msgid "Set the generic content wrapper width. Default 48%"
-msgstr "Ajusta l'amplada de l'embolcall del contingut genèric. Predeterminat a 48%"
+msgstr "Estableix l'amplada per defecte del contingut. Per defecte, 48%"
#: ../../view/theme/apw/php/config.php:279
msgid "Set color of fonts - use hex"
-msgstr "Ajusta el color del tipus de lletra - empra codi hexadecimal"
+msgstr "Estableix el color del text (en notació hexadecimal)"
#: ../../view/theme/apw/php/config.php:280
msgid "Set background-size element"
-msgstr "Ajusta la mida de l'element en segon pla"
+msgstr "Estableix la mida de la imatge de fons (background-size)"
#: ../../view/theme/apw/php/config.php:281
msgid "Item opacity"
-msgstr "Opacitat de l'article"
+msgstr "Opacitat dels elements"
#: ../../view/theme/apw/php/config.php:282
msgid "Display post previews only"
-msgstr "Mostra tan sols les previsualitzacions de les entrades"
+msgstr "Mostra només previsualitzacions d'entrades"
#: ../../view/theme/apw/php/config.php:283
msgid "Display side bar on channel page"
@@ -8874,7 +8970,7 @@ msgstr "Color de la barra de navegació"
#: ../../view/theme/apw/php/config.php:285
msgid "Item float"
-msgstr "Article flotant"
+msgstr "Paràmetre \"float\" dels elements"
#: ../../view/theme/apw/php/config.php:286
msgid "Left offset of the section element"
@@ -8930,11 +9026,11 @@ msgstr "Gradient de color de la part inferior del botó actiu de la barra de nav
#: ../../view/theme/redbasic/php/config.php:110
msgid "Navigation bar border color "
-msgstr "Color de la barra de navegació"
+msgstr "Color de la vora de la barra de navegació"
#: ../../view/theme/redbasic/php/config.php:111
msgid "Navigation bar icon color "
-msgstr "Color de la icona de la barra de navegació"
+msgstr "Color bàsic de la icona de la barra de navegació"
#: ../../view/theme/redbasic/php/config.php:112
msgid "Navigation bar active icon color "
@@ -8942,47 +9038,47 @@ msgstr "Color de la icona de la barra de navegació activa"
#: ../../view/theme/redbasic/php/config.php:113
msgid "link color"
-msgstr "Color d'enllaç"
+msgstr "color dels enllaços"
#: ../../view/theme/redbasic/php/config.php:114
msgid "Set font-color for banner"
-msgstr "Ajusta el color del tipus de lletra per la senyera"
+msgstr "Estableix el color de lletra del rètol"
#: ../../view/theme/redbasic/php/config.php:115
msgid "Set the background color"
-msgstr "Ajusta el color de fons"
+msgstr "Estableix el color de fons"
#: ../../view/theme/redbasic/php/config.php:116
msgid "Set the background image"
-msgstr "Ajusta la imatge de fons"
+msgstr "Estableix la imatge de fons"
#: ../../view/theme/redbasic/php/config.php:117
msgid "Set the background color of items"
-msgstr "ajusta el color dels articles de fons"
+msgstr "Estableix el color de fons dels elements"
#: ../../view/theme/redbasic/php/config.php:118
msgid "Set the background color of comments"
-msgstr "Ajusta el color dels comentaris en segon pla"
+msgstr "Estableix el color de fons dels comentaris"
#: ../../view/theme/redbasic/php/config.php:119
msgid "Set the border color of comments"
-msgstr "Canviar el color del marge dels comentaris"
+msgstr "Estableix el color de la vora dels comentaris"
#: ../../view/theme/redbasic/php/config.php:120
msgid "Set the indent for comments"
-msgstr "ajusta l'indentació dels comentaris"
+msgstr "Estableix el sagnat dels comentaris"
#: ../../view/theme/redbasic/php/config.php:121
msgid "Set the basic color for item icons"
-msgstr "ajusta el color basic per les icones dels articles"
+msgstr "Estableix el color bàsic de les icones dels elements"
#: ../../view/theme/redbasic/php/config.php:122
msgid "Set the hover color for item icons"
-msgstr "Ajusta el color de la libració de les icones dels articles"
+msgstr "Estableix el color de les icones dels elements en passar-hi per damunt"
#: ../../view/theme/redbasic/php/config.php:123
msgid "Set font-size for the entire application"
-msgstr "Ajusta la mida del tipus de lletra per tota l'aplicació"
+msgstr "Estableix la mida de lletra per tota l'aplicació"
#: ../../view/theme/redbasic/php/config.php:123
msgid "Example: 14px"
@@ -8990,49 +9086,49 @@ msgstr "Exemple: 14px"
#: ../../view/theme/redbasic/php/config.php:125
msgid "Set font-color for posts and comments"
-msgstr "Ajusta el color del tipus de lletra per entrades i comentaris"
+msgstr "Estableix el color del text d'entrades i comentaris"
#: ../../view/theme/redbasic/php/config.php:126
msgid "Set radius of corners"
-msgstr "Ajusta el radi de les cantonades"
+msgstr "Estableix el radi de les cantonades"
#: ../../view/theme/redbasic/php/config.php:127
msgid "Set shadow depth of photos"
-msgstr "Ajusta la profunditat d'ombres de les fotos"
+msgstr "Estableix la profunditat d'ombres de les fotos"
#: ../../view/theme/redbasic/php/config.php:128
msgid "Set maximum width of content region in pixel"
-msgstr "Ajusta l'amplada màxima de la zona de contingut en pixels"
+msgstr "Estableix l'amplada màxima de la zona de contingut en píxels"
#: ../../view/theme/redbasic/php/config.php:128
msgid "Leave empty for default width"
-msgstr "Deixa en blanc per l'amplada predeterminada"
+msgstr "Deixa-ho en blanc per fixar a l'amplada per defecte."
#: ../../view/theme/redbasic/php/config.php:129
msgid "Center page content"
-msgstr "Contingut del centre de la pàgina"
+msgstr "Centra el contingut de la pàgina"
#: ../../view/theme/redbasic/php/config.php:130
msgid "Set minimum opacity of nav bar - to hide it"
-msgstr "Ajusta la opacitat mínima de la harra de navegació - per amagar-la"
+msgstr "Estableix la opacitat mínima de la barra de navegació per ser amagada"
#: ../../view/theme/redbasic/php/config.php:131
msgid "Set size of conversation author photo"
-msgstr "Ajusta la mida de la foto del autor a la conversa"
+msgstr "Estableix la mida de la foto de conversa de l'autor"
#: ../../view/theme/redbasic/php/config.php:132
msgid "Set size of followup author photos"
-msgstr "Ajusta la mida del seguidor de les fotos de l'autor"
+msgstr "Estableix la mida de les fotos de seguiment de l'autor"
#: ../../boot.php:1356
#, php-format
msgid "Update %s failed. See error logs."
-msgstr "L'actualització %s ha fallat. Mira el registre d'errors."
+msgstr "L'actualització %s ha fallat. Consulta el registre d'errors."
#: ../../boot.php:1359
#, php-format
msgid "Update Error at %s"
-msgstr "Error d'Actualització a %s"
+msgstr "Error d'actualització a %s"
#: ../../boot.php:1526
msgid ""
@@ -9049,26 +9145,26 @@ msgstr "Recorda'm"
#: ../../boot.php:1558
msgid "Forgot your password?"
-msgstr "Has perdut la Contrasenya?"
+msgstr "Has perdut la contrasenya?"
-#: ../../boot.php:2178
+#: ../../boot.php:2182
msgid "toggle mobile"
-msgstr "canvia a format per a mòbils"
+msgstr "commuta format mòbil/escriptori"
-#: ../../boot.php:2313
+#: ../../boot.php:2317
msgid "Website SSL certificate is not valid. Please correct."
-msgstr "El certificat SSL és invalid, soluciona-ho, si us plau."
+msgstr "El certificat SSL és invàlid. Cal arreglar-ho."
-#: ../../boot.php:2316
+#: ../../boot.php:2320
#, php-format
msgid "[red] Website SSL error for %s"
msgstr "[red] Error de SSL per la web %s"
-#: ../../boot.php:2353
+#: ../../boot.php:2357
msgid "Cron/Scheduled tasks not running."
msgstr "No s'estan executan les tasques programades al cron."
-#: ../../boot.php:2357
+#: ../../boot.php:2361
#, php-format
msgid "[red] Cron tasks not running on %s"
msgstr "[red] No s'estan executan les tasques programades del cron a %s"
diff --git a/view/ca/strings.php b/view/ca/strings.php
index c263bafba..87753bdb2 100644
--- a/view/ca/strings.php
+++ b/view/ca/strings.php
@@ -5,312 +5,194 @@ function string_plural_select_ca($n){
return ($n != 1);;
}}
;
-App::$strings["Cannot locate DNS info for database server '%s'"] = "No s'ha trobat informació de DNS pel servidor de base de dades '%s'";
-App::$strings["Profile Photos"] = "Fotos del Perfil";
-App::$strings["Edit"] = "Edita";
-App::$strings["Frequently"] = "Freqüentment";
-App::$strings["Hourly"] = "Horariament";
-App::$strings["Twice daily"] = "Dos vegades al dia";
-App::$strings["Daily"] = "Diariament";
-App::$strings["Weekly"] = "Setmanalment";
-App::$strings["Monthly"] = "Mensualment";
-App::$strings["Friendica"] = "Friendica";
-App::$strings["OStatus"] = "OStatus";
-App::$strings["RSS/Atom"] = "RSS/Atom";
-App::$strings["Email"] = "Correu electrónic";
-App::$strings["Diaspora"] = "Diaspora";
-App::$strings["Facebook"] = "Facebook";
-App::$strings["Zot!"] = "Zot!";
-App::$strings["LinkedIn"] = "LinkedIn";
-App::$strings["XMPP/IM"] = "XMPP/IM";
-App::$strings["MySpace"] = "MySpace";
-App::$strings["created a new post"] = "Creada una nova entrada";
-App::$strings["commented on %s's post"] = "comentat a l'entrada de %s";
-App::$strings["No username found in import file."] = "No s'ha trobat nom d'usuari a l'arxiu d'importació.";
+App::$strings["No username found in import file."] = "No s'ha trobat cap nom d'usuari a l'arxiu d'importació.";
App::$strings["Unable to create a unique channel address. Import failed."] = "No s'ha pogut importar el canal perquè l'adreça única de canal no s'ha pogut crear.";
App::$strings["Import completed."] = "S'ha completat la importació.";
-App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un grup esborrat amb aquest nom fou reviscolat. Els permisos dels items existents <strong>poden</strong> aplicar-se a aquest grup i qualsevol membre futur. Si no es això el que vols, si et plau, crea un altre grup amb un nom diferent.";
-App::$strings["Default privacy group for new contacts"] = "Privacitat de grup predeterminada per a contactes nous";
-App::$strings["All Channels"] = "Tots els Canals";
-App::$strings["edit"] = "edita";
-App::$strings["Collections"] = "Col·leccions";
-App::$strings["Edit collection"] = "Edita col·leccions";
-App::$strings["Add new collection"] = "Afegeix una nova col·lecció";
-App::$strings["Channels not in any collection"] = "Canals a cap col·lecció";
-App::$strings["add"] = "afegeix";
-App::$strings["Not a valid email address"] = "Adreça de correu electrònic no vàlida";
-App::$strings["Your email domain is not among those allowed on this site"] = "El seu domini de correu electrònic no es troba entre els permesos en aquest lloc";
-App::$strings["Your email address is already registered at this site."] = "La teva adreça de correu electrònic ja esta registrada en aquest lloc";
-App::$strings["An invitation is required."] = "Es requereix Invitació";
-App::$strings["Invitation could not be verified."] = "L'invitació no ha pogut ser verificada";
-App::$strings["Please enter the required information."] = "Entra la informació sol·licitada";
-App::$strings["Failed to store account information."] = "Ha fallat guardar la informació del compte";
-App::$strings["Registration confirmation for %s"] = "Registre confirmat per %s";
-App::$strings["Registration request at %s"] = "Sol·licitud de registre a %s";
+App::$strings["parent"] = "amunt";
+App::$strings["Collection"] = "Col·lecció";
+App::$strings["Principal"] = "Principal";
+App::$strings["Addressbook"] = "Llista d'adreces";
+App::$strings["Calendar"] = "Calendari";
+App::$strings["Schedule Inbox"] = "Programa la bústia d'entrada";
+App::$strings["Schedule Outbox"] = "Programa la bústia de sortida";
+App::$strings["Unknown"] = "Desconegut";
+App::$strings["%1\$s used"] = "Hi ha %1\$s en ús";
+App::$strings["%1\$s used of %2\$s (%3\$s&#37;)"] = "Hi ha en ús %1\$s de %2\$s (%3\$s&#37;)";
+App::$strings["Files"] = "Arxius";
+App::$strings["Total"] = "Total";
+App::$strings["Shared"] = "Compartit";
+App::$strings["Create"] = "Crea";
+App::$strings["Upload"] = "Puja";
+App::$strings["Name"] = "Nom";
+App::$strings["Type"] = "Tipus";
+App::$strings["Size"] = "Mida";
+App::$strings["Last Modified"] = "Darrera modificació";
+App::$strings["Edit"] = "Edita";
+App::$strings["Delete"] = "Esborra";
+App::$strings["Create new folder"] = "Crea una carpeta nova";
+App::$strings["Upload file"] = "Puja arxiu";
+App::$strings["Cannot locate DNS info for database server '%s'"] = "No s'ha trobat informació de DNS pel servidor de base de dades '%s'";
+App::$strings["Profile Photos"] = "Fotos del Perfil";
+App::$strings["Logout"] = "Desconectar";
+App::$strings["End this session"] = "Finalitza aquesta sessió";
+App::$strings["Home"] = "Personal";
+App::$strings["Your posts and conversations"] = "Les teves entrades i converses";
+App::$strings["View Profile"] = "Veure Perfil";
+App::$strings["Your profile page"] = "La teva pàgina de perfil";
+App::$strings["Edit Profiles"] = "Editar Perfils";
+App::$strings["Manage/Edit profiles"] = "Gestiona/Edita perfils";
+App::$strings["Edit Profile"] = "Edita Perfil";
+App::$strings["Edit your profile"] = "Edita el teu perfil";
+App::$strings["Photos"] = "Fotos";
+App::$strings["Your photos"] = "Les Teves Fotos";
+App::$strings["Your files"] = "Els teus arxius";
+App::$strings["Chat"] = "Xerrar";
+App::$strings["Your chatrooms"] = "Les teves sales de xerrar";
+App::$strings["Bookmarks"] = "Marcadors";
+App::$strings["Your bookmarks"] = "Els teus marcadors";
+App::$strings["Webpages"] = "Pàgines web";
+App::$strings["Your webpages"] = "Les teves pàgines web";
+App::$strings["Login"] = "Identifica't";
+App::$strings["Sign in"] = "Signatura";
+App::$strings["%s - click to logout"] = "%s - click per desconectar";
+App::$strings["Remote authentication"] = "Autenticació remota";
+App::$strings["Click to authenticate to your home hub"] = "Click per autentificar-te en el teu Lloc ";
+App::$strings["Home Page"] = "Pàgina Personal";
+App::$strings["Register"] = "Registre";
+App::$strings["Create an account"] = "Crear un compte";
+App::$strings["Help"] = "Ajuda";
+App::$strings["Help and documentation"] = "Ajuda i documentació";
+App::$strings["Apps"] = "Aplicatius";
+App::$strings["Applications, utilities, links, games"] = "Aplicacions, utilitats, enllaços, jocs";
+App::$strings["Search"] = "Cerca";
+App::$strings["Search site content"] = "Cerca en el contingut del lloc";
+App::$strings["Directory"] = "Directori";
+App::$strings["Channel Directory"] = "Directori de Canals";
+App::$strings["Matrix"] = "Matriu/Matrix";
+App::$strings["Your matrix"] = "El teu matrix";
+App::$strings["Mark all matrix notifications seen"] = "Marca totes les notificacions de matrix vistes";
+App::$strings["Channel Home"] = "Canal Personal";
+App::$strings["Channel home"] = "Canal personal";
+App::$strings["Mark all channel notifications seen"] = "Marca totes les notificacions de canal vistes";
+App::$strings["Connections"] = "Connexions";
+App::$strings["Notices"] = "Noticies";
+App::$strings["Notifications"] = "Notificacions";
+App::$strings["See all notifications"] = "Veure totes les Notificacions";
+App::$strings["Mark all system notifications seen"] = "Marca totes les notificacions vistes";
+App::$strings["Mail"] = "Correu";
+App::$strings["Private mail"] = "Correu privat";
+App::$strings["See all private messages"] = "Veure tots els missatges privats";
+App::$strings["Mark all private messages seen"] = "Marcar tots els missatges privats vistos";
+App::$strings["Inbox"] = "Safata d'entrada";
+App::$strings["Outbox"] = "Safata de sortida";
+App::$strings["New Message"] = "Escriu un missatge";
+App::$strings["Events"] = "Events";
+App::$strings["Event Calendar"] = "Calendari d'Events";
+App::$strings["See all events"] = "Veure tots els events";
+App::$strings["Mark all events seen"] = "Marcar tots els events vistos";
+App::$strings["Channel Manager"] = "Gestor del Canal";
+App::$strings["Manage Your Channels"] = "Gestiona els Teus Canals";
+App::$strings["Settings"] = "Configuració";
+App::$strings["Account/Channel Settings"] = "Ajustos de Compte/Canal";
+App::$strings["Admin"] = "Admin";
+App::$strings["Site Setup and Configuration"] = "Ajustos i Configuració del Lloc";
+App::$strings["Loading..."] = "Carregant...";
+App::$strings["@name, #tag, content"] = "@name, #tag, content";
+App::$strings["Please wait..."] = "Si us plau, espera.......";
+App::$strings["view full size"] = "Mostra a mida competa";
+App::$strings["\$Projectname Notification"] = "Notificació de \$Projectname";
+App::$strings["\$projectname"] = "\$projectname";
+App::$strings["Thank You,"] = "Gràcies,";
+App::$strings["%s Administrator"] = "Administrador de %s";
App::$strings["Administrator"] = "Administrador";
-App::$strings["your registration password"] = "la teva contrasenya registrada";
-App::$strings["Registration details for %s"] = "Detalls del registre per %s";
-App::$strings["Account approved."] = "Compte aprovat.";
-App::$strings["Registration revoked for %s"] = "Registre revocat per %s";
-App::$strings["Account verified. Please login."] = "Compte verificat. Si us plau, inicia sessió.";
-App::$strings["Click here to upgrade."] = "Feu clic aquí per actualitzar.";
-App::$strings["This action exceeds the limits set by your subscription plan."] = "Aquesta acció és superior als límits establerts pel seu pla de subscripció.";
-App::$strings["This action is not available under your subscription plan."] = "Aquesta acció no està disponible en el seu pla de subscripció.";
-App::$strings["Miscellaneous"] = "Miscelania";
-App::$strings["YYYY-MM-DD or MM-DD"] = "YYYY-MM-DD o MM-DD";
-App::$strings["Required"] = "Requerit";
-App::$strings["never"] = "mai";
-App::$strings["less than a second ago"] = "fa menys d'un segon";
-App::$strings["year"] = "any";
-App::$strings["years"] = "anys";
-App::$strings["month"] = "mes";
-App::$strings["months"] = "mesos";
-App::$strings["week"] = "setmana";
-App::$strings["weeks"] = "setmanes";
-App::$strings["day"] = "dia";
-App::$strings["days"] = "dies";
-App::$strings["hour"] = "hora";
-App::$strings["hours"] = "hores";
-App::$strings["minute"] = "minut";
-App::$strings["minutes"] = "minuts";
-App::$strings["second"] = "segon";
-App::$strings["seconds"] = "segons";
-App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "Fa %1\$d i %2\$s";
-App::$strings["%1\$s's birthday"] = "Aniversari de %1\$s";
-App::$strings["Happy Birthday %1\$s"] = "Feliç Aniversari %1\$s";
-App::$strings["Directory Options"] = "Opcions de Directori";
-App::$strings["Safe Mode"] = "Mode Segur";
-App::$strings["No"] = "No";
-App::$strings["Yes"] = "Sí";
-App::$strings["Public Forums Only"] = "Només Fòrums Públics";
-App::$strings["This Website Only"] = "Només Aquest Lloc Web";
-App::$strings["New Page"] = "Pàgina Nova";
-App::$strings["View"] = "Mostra";
-App::$strings["Preview"] = "Avanç";
-App::$strings["Actions"] = "Accions";
-App::$strings["Page Link"] = "Enllaç a Pàgina";
-App::$strings["Title"] = "Títol";
-App::$strings["Created"] = "Creat";
-App::$strings["Edited"] = "Editat";
-App::$strings["Public Timeline"] = "Línia de Temps Pública";
-App::$strings["Default"] = "Predeterminat";
-App::$strings["Delete this item?"] = "Esborrar aquest item?";
-App::$strings["Comment"] = "Comentari";
-App::$strings["[+] show all"] = "[+] mostra tot";
-App::$strings["[-] show less"] = "[-] mostra menys";
-App::$strings["[+] expand"] = "[+] expandeix";
-App::$strings["[-] collapse"] = "[-] colapsa";
-App::$strings["Password too short"] = "Contrasenya massa curta";
-App::$strings["Passwords do not match"] = "Les paraules de pas no coincideixen";
-App::$strings["everybody"] = "tothom";
-App::$strings["Secret Passphrase"] = "Contrasenya Secreta";
-App::$strings["Passphrase hint"] = "Pista per la Contrasenya";
-App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Avis: Els permisos han canviat però encara no han estat enviats.";
-App::$strings["close all"] = "tanca tot";
-App::$strings["Nothing new here"] = "Res de nou per aquí";
-App::$strings["Rate This Channel (this is public)"] = "Valora Aquest Canal (això es farà públic)";
-App::$strings["Rating"] = "Valora";
-App::$strings["Describe (optional)"] = "Descriu (opcional)";
-App::$strings["Submit"] = "Presenta";
-App::$strings["Please enter a link URL"] = "Si us plau, entra l'enllaç URL";
-App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Hi ha canvis sense desar, estàs segur que vols abandonar la pàgina?";
-App::$strings["timeago.prefixAgo"] = "horapasada.prefixFa";
-App::$strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
-App::$strings["ago"] = "fa";
-App::$strings["from now"] = "des d'ara";
-App::$strings["less than a minute"] = "menys d'un minut";
-App::$strings["about a minute"] = "prop d'un minut";
-App::$strings["%d minutes"] = "%d minuts";
-App::$strings["about an hour"] = "prop d'una hora";
-App::$strings["about %d hours"] = "al voltant de %d hores";
-App::$strings["a day"] = "un dia";
-App::$strings["%d days"] = "%d dies";
-App::$strings["about a month"] = "prop d'un mes";
-App::$strings["%d months"] = "%d mesos";
-App::$strings["about a year"] = "prop d'un any";
-App::$strings["%d years"] = "%d anys";
-App::$strings[" "] = " ";
-App::$strings["timeago.numbers"] = "timeago.numbers";
-App::$strings["prev"] = "prev";
+App::$strings["No Subject"] = "Sense assumpte";
+App::$strings["prev"] = "anterior";
App::$strings["first"] = "primer";
App::$strings["last"] = "últim";
-App::$strings["next"] = "pròxim";
-App::$strings["older"] = "el més antic";
-App::$strings["newer"] = "El més nou";
-App::$strings["No connections"] = "Sense Connexions";
+App::$strings["next"] = "següent";
+App::$strings["older"] = "més antic";
+App::$strings["newer"] = "més nou";
+App::$strings["No connections"] = "No hi ha connexions";
App::$strings["%d Connection"] = array(
- 0 => "%d Connexió",
- 1 => "%d Connexions",
+ 0 => "Hi ha %d connexió",
+ 1 => "Hi ha %d connexions",
);
-App::$strings["View Connections"] = "Veure Connexions";
-App::$strings["Search"] = "Cerca";
-App::$strings["Save"] = "Guardar";
-App::$strings["poke"] = "emprenya";
-App::$strings["poked"] = "emprenyat";
-App::$strings["ping"] = "coloca";
-App::$strings["pinged"] = "colocat";
-App::$strings["prod"] = "picar";
-App::$strings["prodded"] = "picat";
-App::$strings["slap"] = "bufetada";
-App::$strings["slapped"] = "bufetejat";
-App::$strings["finger"] = "senyal";
-App::$strings["fingered"] = "senyalat";
-App::$strings["rebuff"] = "menyspreu";
-App::$strings["rebuffed"] = "menyspreuat";
+App::$strings["View Connections"] = "Mostra les connexions";
+App::$strings["Save"] = "Desa";
+App::$strings["poke"] = "fes-li un toc";
+App::$strings["poked"] = "ha fet un toc a";
+App::$strings["ping"] = "fes-li ping";
+App::$strings["pinged"] = "ha fet ping a";
+App::$strings["prod"] = "pica";
+App::$strings["prodded"] = "ha picat";
+App::$strings["slap"] = "fes-li un cop de palmell";
+App::$strings["slapped"] = "ha fet un cop de palmell a";
+App::$strings["finger"] = "acaricia";
+App::$strings["fingered"] = "ha acariciat";
+App::$strings["rebuff"] = "aparta";
+App::$strings["rebuffed"] = "ha apartat";
App::$strings["happy"] = "feliç";
App::$strings["sad"] = "trist";
-App::$strings["mellow"] = "melós";
+App::$strings["mellow"] = "tendre";
App::$strings["tired"] = "cansat";
-App::$strings["perky"] = "turgent";
+App::$strings["perky"] = "animat";
App::$strings["angry"] = "enfadat";
App::$strings["stupified"] = "encantat";
-App::$strings["puzzled"] = "perplexe";
+App::$strings["puzzled"] = "perplex";
App::$strings["interested"] = "Interessat";
App::$strings["bitter"] = "amargat";
-App::$strings["cheerful"] = "feliç";
+App::$strings["cheerful"] = "alegre";
App::$strings["alive"] = "viu";
App::$strings["annoyed"] = "molest";
App::$strings["anxious"] = "ansiós";
-App::$strings["cranky"] = "malagaitós";
+App::$strings["cranky"] = "de mala bava";
App::$strings["disturbed"] = "transtornat";
App::$strings["frustrated"] = "frustrat";
App::$strings["depressed"] = "deprimit";
App::$strings["motivated"] = "motivat";
App::$strings["relaxed"] = "relaxat";
App::$strings["surprised"] = "sorprès";
-App::$strings["Monday"] = "Dilluns";
-App::$strings["Tuesday"] = "Dimarts";
-App::$strings["Wednesday"] = "Dimecres";
-App::$strings["Thursday"] = "Dijous";
-App::$strings["Friday"] = "Divendres";
-App::$strings["Saturday"] = "Dissabte";
-App::$strings["Sunday"] = "Diumenge";
-App::$strings["January"] = "Gener";
-App::$strings["February"] = "Febrer";
-App::$strings["March"] = "Març";
-App::$strings["April"] = "Abril";
-App::$strings["May"] = "Maig";
-App::$strings["June"] = "Juny";
-App::$strings["July"] = "Juliol";
-App::$strings["August"] = "Agost";
-App::$strings["September"] = "Setembre";
-App::$strings["October"] = "Octubre";
-App::$strings["November"] = "Novembre";
-App::$strings["December"] = "Desembre";
+App::$strings["Monday"] = "dilluns";
+App::$strings["Tuesday"] = "dimarts";
+App::$strings["Wednesday"] = "dimecres";
+App::$strings["Thursday"] = "dijous";
+App::$strings["Friday"] = "divendres";
+App::$strings["Saturday"] = "dissabte";
+App::$strings["Sunday"] = "diumenge";
+App::$strings["January"] = "gener";
+App::$strings["February"] = "febrer";
+App::$strings["March"] = "març";
+App::$strings["April"] = "abril";
+App::$strings["May"] = "maig";
+App::$strings["June"] = "juny";
+App::$strings["July"] = "juliol";
+App::$strings["August"] = "agost";
+App::$strings["September"] = "setembre";
+App::$strings["October"] = "octubre";
+App::$strings["November"] = "novembre";
+App::$strings["December"] = "desembre";
App::$strings["unknown.???"] = "desconegut.???";
App::$strings["bytes"] = "bytes";
-App::$strings["remove category"] = "elimina categoria";
-App::$strings["remove from file"] = "elimina del arxiu";
-App::$strings["Click to open/close"] = "Clic per obrir/tancar";
-App::$strings["Link to Source"] = "Enllaç a la Font";
+App::$strings["remove category"] = "elimina la categoria";
+App::$strings["remove from file"] = "elimina de l'arxiu";
+App::$strings["Click to open/close"] = "Fes clic per obrir/tancar";
+App::$strings["Link to Source"] = "Enllaç a la font";
App::$strings["default"] = "per defecte";
-App::$strings["Page layout"] = "Format de la pàgina";
-App::$strings["You can create your own with the layouts tool"] = "Pots crear el teu propi amb l'editor de format de pàgina.";
+App::$strings["Page layout"] = "Disseny de la pàgina";
+App::$strings["You can create your own with the layouts tool"] = "Pots crear el teu propi disseny de pàgina amb l'editor";
App::$strings["Page content type"] = "Tipus de contingut de la pàgina";
App::$strings["Select an alternate language"] = "Tria un idioma alternatiu";
App::$strings["photo"] = "foto";
-App::$strings["event"] = "succés";
+App::$strings["event"] = "esdeveniment";
App::$strings["status"] = "estat";
App::$strings["comment"] = "comentari";
App::$strings["activity"] = "activitat";
App::$strings["Design Tools"] = "Eines de disseny";
-App::$strings["Blocks"] = "Bloc";
+App::$strings["Blocks"] = "Blocs";
App::$strings["Menus"] = "Menús";
-App::$strings["Layouts"] = "Format Gràfic";
+App::$strings["Layouts"] = "Dissenys";
App::$strings["Pages"] = "Pàgines";
-App::$strings["Collection"] = "Col·lecció";
-App::$strings["parent"] = "pare";
-App::$strings["Principal"] = "Principal";
-App::$strings["Addressbook"] = "Llista d'Adreçes";
-App::$strings["Calendar"] = "Calendari";
-App::$strings["Schedule Inbox"] = "Programació de la bústia d'entrada";
-App::$strings["Schedule Outbox"] = "Programació de la bústia de sortida";
-App::$strings["Unknown"] = "Desconegut";
-App::$strings["%1\$s used"] = "%1\$s emprat";
-App::$strings["%1\$s used of %2\$s (%3\$s&#37;)"] = "%1\$s emprat de %2\$s (%3\$s&#37;)";
-App::$strings["Files"] = "Arxius";
-App::$strings["Total"] = "Total";
-App::$strings["Shared"] = "Compartit";
-App::$strings["Create"] = "Creada";
-App::$strings["Upload"] = "Pujar";
-App::$strings["Name"] = "Nom";
-App::$strings["Type"] = "Tipus";
-App::$strings["Size"] = "Mida";
-App::$strings["Last Modified"] = "Últim Modificat";
-App::$strings["Delete"] = "Esborra";
-App::$strings["Create new folder"] = "Crea una nova carpeta";
-App::$strings["Upload file"] = "Puja arxiu";
-App::$strings["%1\$s's bookmarks"] = "%1\$s de marcadors";
-App::$strings["view full size"] = "Veure a mida competa";
-App::$strings["\$Projectname Notification"] = "Notificació de \$Projectname";
-App::$strings["\$projectname"] = "\$projectname";
-App::$strings["Thank You,"] = "Gràcies,";
-App::$strings["%s Administrator"] = "%s Administrador";
-App::$strings["No Subject"] = "Sense Assumpte";
-App::$strings["General Features"] = "Característiques Generals";
-App::$strings["Content Expiration"] = "Expiració del Contingut";
-App::$strings["Remove posts/comments and/or private messages at a future time"] = "elimina entrades/comentaris i/o missatges privats de aquí en endevant.";
-App::$strings["Multiple Profiles"] = "Multiples Perfils";
-App::$strings["Ability to create multiple profiles"] = "Capacitat per crear multiples perfils";
-App::$strings["Advanced Profiles"] = "Perfils Avançats";
-App::$strings["Additional profile sections and selections"] = "Seccions i seleccions addicionals de perfils ";
-App::$strings["Profile Import/Export"] = "Importar/Exportar Perfil";
-App::$strings["Save and load profile details across sites/channels"] = "Guarda i carrega els detalls del perfil al llarg dels llocs/canals";
-App::$strings["Web Pages"] = "Pàgines Web";
-App::$strings["Provide managed web pages on your channel"] = "Proporcionar pàgines web gestionades al seu canal";
-App::$strings["Private Notes"] = "Notes Privades";
-App::$strings["Enables a tool to store notes and reminders"] = "Activa l'eina per guardar notes i recordatoris";
-App::$strings["Navigation Channel Select"] = "Navegació pel Selector de Canals";
-App::$strings["Change channels directly from within the navigation dropdown menu"] = "Canvieu els canals directament des del menú desplegable de navegació";
-App::$strings["Photo Location"] = "Ubicació de la Photo";
-App::$strings["If location data is available on uploaded photos, link this to a map."] = "Si los datos de ubicación están disponibles en las fotos subidas, vincular a un mapa.";
-App::$strings["Expert Mode"] = "Mode Expert";
-App::$strings["Enable Expert Mode to provide advanced configuration options"] = "Activar Mode Expert per a proporcionar opcions avançades de configuració";
-App::$strings["Premium Channel"] = "Canal Superior";
-App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Li permet establir restriccions i els termes en els quals es connecten amb el seu canal";
-App::$strings["Post Composition Features"] = "Característiques de Composició d'Entrades";
-App::$strings["Use Markdown"] = "Us d'Abreviatures";
-App::$strings["Allow use of \"Markdown\" to format posts"] = "Permet emprat \"Abreviatures\" per formatar entrades";
-App::$strings["Large Photos"] = "Grans Fotos";
-App::$strings["Include large (640px) photo thumbnails in posts. If not enabled, use small (320px) photo thumbnails"] = "Inclou gran (640px) foto de miniatura a les entrades. Si no està activat, empra petita (320px) foto de miniatura.";
-App::$strings["Channel Sources"] = "Canal Origen";
-App::$strings["Automatically import channel content from other channels or feeds"] = "Importa automàticament el contingut del canal des de altres canals o feeds";
-App::$strings["Even More Encryption"] = "Encara Més Encriptació";
-App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Permet l'encripció opcional del contingut extrem-a-extrem amb clau secreta compartida";
-App::$strings["Enable voting tools"] = "Habilitar eines de vot";
-App::$strings["Provide a class of post which others can vote on"] = "Proporcionar una classe d'entrada que altres puguin votar";
-App::$strings["Network and Stream Filtering"] = "Filtrat de Xarxa i Flux";
-App::$strings["Search by Date"] = "Cerca per Data";
-App::$strings["Ability to select posts by date ranges"] = "Capacitat per seleccionar entrades per rang de dates";
-App::$strings["Collections Filter"] = "Filtre de Col·leccions";
-App::$strings["Enable widget to display Network posts only from selected collections"] = "Habilitar giny per mostrar les entrades de xarxa únicament de les col·leccions seleccionades";
-App::$strings["Saved Searches"] = "Cerques Guardades";
-App::$strings["Save search terms for re-use"] = "Guardar els termin de la cerca per a re-usar";
-App::$strings["Network Personal Tab"] = "Pestanya Personal de Xarxa";
-App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Activa pestanya per mostrar només les entrades de xarxa en els que has intervingut";
-App::$strings["Network New Tab"] = "Nova Pestanya de Xarxa";
-App::$strings["Enable tab to display all new Network activity"] = "Activa pestanya per mostrar tota l'activitat nova de la Xarxa";
-App::$strings["Affinity Tool"] = "Eina d'Afinitat";
-App::$strings["Filter stream activity by depth of relationships"] = "Filtre d'activitat del flux per importància de la relació";
-App::$strings["Connection Filtering"] = "Filtre de Connexió";
-App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filtre de missatges d'entrada de conexions, basat en paraules clau/contingut ";
-App::$strings["Suggest Channels"] = "Suggerir Canals";
-App::$strings["Show channel suggestions"] = "Mostra suggerencies de canals";
-App::$strings["Post/Comment Tools"] = "Eina d'Entrades/Comentaris";
-App::$strings["Tagging"] = "Etiquetant";
-App::$strings["Ability to tag existing posts"] = "Capacitat d'etiquetar entrades existents";
-App::$strings["Post Categories"] = "Categories d'Entrades";
-App::$strings["Add categories to your posts"] = "Afegeix categoria a la teva entrada";
-App::$strings["Saved Folders"] = "Carpetes Guardades";
-App::$strings["Ability to file posts under folders"] = "Capacitat de arxivar entrades en les carpetes";
-App::$strings["Dislike Posts"] = "No Agrada l'Entrada";
-App::$strings["Ability to dislike posts/comments"] = "Capacitat per marcar amb \"No Agrada\" les entrades/comentaris";
-App::$strings["Star Posts"] = "Entrades Excel·lents";
-App::$strings["Ability to mark special posts with a star indicator"] = "Capacitat per marcar entrades especials amb l'indicador d'excel·lencia";
-App::$strings["Tag Cloud"] = "Núvol d'Etiquetes.";
-App::$strings["Provide a personal tag cloud on your channel page"] = "Proporcionar un núvol d'etiquetes personals a la teva pàgina de canal";
App::$strings["Categories"] = "Categories";
-App::$strings["Apps"] = "Aplicatius";
App::$strings["System"] = "Sistema";
App::$strings["Personal"] = "Personal";
App::$strings["Create Personal App"] = "Crear Personal App";
@@ -325,6 +207,9 @@ App::$strings["Enter the channel address"] = "Introdueix la adreça del canal";
App::$strings["Example: bob@example.com, http://example.com/barbara"] = "Exemple: pep@exemple.com, http://exemple.com/vinyet";
App::$strings["Notes"] = "Notes";
App::$strings["Remove term"] = "Plaç de remoció";
+App::$strings["Saved Searches"] = "Cerques desades";
+App::$strings["add"] = "afegeix";
+App::$strings["Saved Folders"] = "Carpetes Guardades";
App::$strings["Everything"] = "Tot";
App::$strings["Archives"] = "Arxius";
App::$strings["Me"] = "Jo";
@@ -342,96 +227,48 @@ App::$strings["Connected apps"] = "Apps connectades";
App::$strings["Export channel"] = "Exportat canal";
App::$strings["Connection Default Permissions"] = "Permisos per Defecte de la Connexió";
App::$strings["Premium Channel Settings"] = "Ajustos Premium de Canal";
-App::$strings["Settings"] = "Ajustos";
+App::$strings["Channel Sources"] = "Fonts del canal";
App::$strings["Messages"] = "Missatges";
-App::$strings["Check Mail"] = "Comprovar Correu";
-App::$strings["New Message"] = "Nou Missatge";
-App::$strings["Chat Rooms"] = "Sales de Xat";
-App::$strings["Bookmarked Chatrooms"] = "Sales de Xat Favorites";
+App::$strings["Check Mail"] = "Comprova el correu";
+App::$strings["Chat Rooms"] = "Sales de xat";
+App::$strings["Bookmarked Chatrooms"] = "Sales de xat preferides";
App::$strings["Suggested Chatrooms"] = "Sales de Xat Suggerides";
App::$strings["photo/image"] = "foto/imatge";
App::$strings["Rate Me"] = "Valora'm";
-App::$strings["View Ratings"] = "Veure Valoracions";
+App::$strings["View Ratings"] = "Mostra les valoracions";
App::$strings["Public Hubs"] = "Concentradors Públics";
-App::$strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
-App::$strings["Starts:"] = "Inicia:";
-App::$strings["Finishes:"] = "Acaba:";
-App::$strings["Location:"] = "Localització:";
-App::$strings["This event has been added to your calendar."] = "Aquest succés ha estat afegit al teu calendari.";
-App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
-App::$strings["[Red:Notify] New mail received at %s"] = "[Red:Notificació] Un nou missatge s'ha rebut a %s";
-App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s t'ha enviat un nou missatge privat a %3\$s.";
-App::$strings["%1\$s sent you %2\$s."] = "%1\$s t'ha enviat %2\$s.";
-App::$strings["a private message"] = "un missatge privat";
-App::$strings["Please visit %s to view and/or reply to your private messages."] = "Per favor, visita %s per a veure i/o respondre els teus missatges privats.";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s comentat en [zrl=%3\$s]a %4\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s comentat en [zrl=%3\$s]%4\$s de %5\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s comentat en [zrl=%3\$s]el teu %4\$s[/zrl]";
-App::$strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red:Notify] Comentari a la conversa #%1\$d per %2\$s";
-App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s comentat en un article/conversa que havies estat seguint.";
-App::$strings["Please visit %s to view and/or reply to the conversation."] = "Si us plau visita %s per veure i/o contestar a la conversa";
-App::$strings["[Red:Notify] %s posted to your profile wall"] = "[Red:Avís] %s ha escrit una entrada al teu mur";
-App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s ha escrit una entrada al teu mur en %3\$s";
-App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s enviat correu a [zrl=%3\$s]el teu mur[/zrl]";
-App::$strings["[Red:Notify] %s tagged you"] = "[Red:Notificació] %s t'ha etiquetat";
-App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s t'ha etiquetat a %3\$s";
-App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]t'ha etiquetat[/zrl].";
-App::$strings["[Red:Notify] %1\$s poked you"] = "[Red:Avís] %1\$s s'en fot de tu";
-App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s s'en fot de tú a %3\$s";
-App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]s'en fot de tú[/zrl].";
-App::$strings["[Red:Notify] %s tagged your post"] = "[Red:Avís] %s ha etiquetat la teva entrada";
-App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s ha etiquetat la teva entrada a %3\$s";
-App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s etiquetat [zrl=%3\$s]la teva entrada[/zrl]";
-App::$strings["[Red:Notify] Introduction received"] = "[Red:Avís] Presentació rebuda";
-App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, has rebut una nova petició de connexió de '%2\$s' a %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, has rebut [zrl=%2\$s]una nova petició de connexió[/zrl] de %3\$s.";
-App::$strings["You may visit their profile at %s"] = "Pots visitar el seu perfil a %s";
-App::$strings["Please visit %s to approve or reject the connection request."] = "Si us plau, visita %s per aprovar o rebutjar la petició de connexió.";
-App::$strings["[Red:Notify] Friend suggestion received"] = "[Red:Notificació] Rebuda suggerencia d'amistat";
-App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, has rebut una suggerència d'amistat de '%2\$s' a %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, has rebut [zrl=%2\$s]una suggerència d'amistat[/zrl] per %3\$s de %4\$s.";
-App::$strings["Name:"] = "Nom:";
-App::$strings["Photo:"] = "Foto:";
-App::$strings["Please visit %s to approve or reject the suggestion."] = "Per favor, visita %s per a aprovar o rebutjar la suggerencia.";
-App::$strings["[Red:Notify]"] = "[Red:Notificació]";
+App::$strings["New window"] = "Nova finestra";
+App::$strings["Open the selected location in a different window or browser tab"] = "Obrir la localització seleccionada en un altre finestra o pestanya del navegador";
+App::$strings["User '%s' deleted"] = "usuari '%s' esborrat";
App::$strings["No recipient provided."] = "No s'ha proporcionat bústia.";
App::$strings["[no subject]"] = "[no subject]";
App::$strings["Unable to determine sender."] = "incapaç de determinar el remitent";
App::$strings["Stored post could not be verified."] = "L'entrada guardada no pot ser verificada";
-App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s agrada %2\$s de %3\$s";
-App::$strings["Please choose"] = "Escull";
-App::$strings["Agree"] = "A favor";
-App::$strings["Disagree"] = "En contra";
-App::$strings["Abstain"] = "Abstenció";
-App::$strings["Channel is blocked on this site."] = "El canal està bloquejat en aquest lloc.";
-App::$strings["Channel location missing."] = "Ubicació del canal perduda.";
-App::$strings["Response from remote channel was incomplete."] = "La resposta del canal remot fou incompleta.";
-App::$strings["Channel was deleted and no longer exists."] = "El canal fou esborrat i actualment no existeix.";
-App::$strings["Protocol disabled."] = "Protocol desactivat.";
-App::$strings["Protocol blocked for this channel."] = "El protocol està bloquejat per a aquest canal.";
-App::$strings["Channel discovery failed."] = "Descobriment de canal fallit.";
-App::$strings["local account not found."] = "compte local no trobat.";
-App::$strings["Cannot connect to yourself."] = "No pots connectar amb tu mateix.";
+App::$strings["Invalid data packet"] = "paquet de dades invàlid";
+App::$strings["Unable to verify channel signature"] = "No es pot verificar la signatura del canal";
+App::$strings["Unable to verify site signature for %s"] = "No es pot verificar la signatura del lloc per %s";
+App::$strings["created a new post"] = "ha creat una nova entrada";
+App::$strings["commented on %s's post"] = "ha comentat l'entrada de %s";
App::$strings["Private Message"] = "Missatge Privat";
App::$strings["Select"] = "Selecciona";
App::$strings["Save to Folder"] = "Guardar en la Carpeta";
-App::$strings["I will attend"] = "Assistiré";
-App::$strings["I will not attend"] = "No assistiré";
-App::$strings["I might attend"] = "Podria assistir";
-App::$strings["I agree"] = "D'acord";
-App::$strings["I disagree"] = "En desacord";
-App::$strings["I abstain"] = "M'abstinc";
-App::$strings["View all"] = "Veure tot";
+App::$strings["I will attend"] = "Hi seré";
+App::$strings["I will not attend"] = "No hi seré";
+App::$strings["I might attend"] = "Potser hi sóc";
+App::$strings["I agree"] = "Hi estic a favor";
+App::$strings["I disagree"] = "Hi estic en contra";
+App::$strings["I abstain"] = "Voto en blanc";
+App::$strings["View all"] = "Mostra-ho tot";
App::$strings["__ctx:noun__ Like"] = array(
- 0 => "Agrada",
- 1 => "Agraden",
+ 0 => "M'agrada",
+ 1 => "M'agrada",
);
App::$strings["__ctx:noun__ Dislike"] = array(
- 0 => "Desagrada",
- 1 => "Desagrada",
+ 0 => "No m'agrada",
+ 1 => "No m'agrada",
);
-App::$strings["Add Star"] = "Fes-lo Preferit";
-App::$strings["Remove Star"] = "Treu-lo de Preferits";
+App::$strings["Add Star"] = "Marca'l com a preferit";
+App::$strings["Remove Star"] = "Treu-lo de preferits";
App::$strings["Toggle Star Status"] = "Canvia el Estat de la Preferència";
App::$strings["starred"] = "preferit";
App::$strings["Message signature validated"] = "Validada la signatura del missatge";
@@ -458,11 +295,14 @@ App::$strings["Expires: %s"] = "Expira: %s";
App::$strings["Save Bookmarks"] = "Guarda Favorits";
App::$strings["Add to Calendar"] = "Afegeix al Calendari";
App::$strings["Mark all seen"] = "Marca tot com ja vist";
-App::$strings["__ctx:noun__ Likes"] = "Agrada";
-App::$strings["__ctx:noun__ Dislikes"] = "Desagrada";
+App::$strings["__ctx:noun__ Likes"] = "M'agrada";
+App::$strings["__ctx:noun__ Dislikes"] = "No m'agrada";
App::$strings["Close"] = "Tanca";
App::$strings["Please wait"] = "Si us plau, espera";
+App::$strings["[+] show all"] = "[+] mostra-ho tot";
App::$strings["This is you"] = "Ets tú";
+App::$strings["Comment"] = "Comentari";
+App::$strings["Submit"] = "Desa";
App::$strings["Bold"] = "Negreta";
App::$strings["Italic"] = "Italica";
App::$strings["Underline"] = "Subratllat";
@@ -471,131 +311,145 @@ App::$strings["Code"] = "Codi";
App::$strings["Image"] = "Imatge";
App::$strings["Insert Link"] = "Insereix Enllaç";
App::$strings["Video"] = "Video";
+App::$strings["Preview"] = "Previsualitza";
App::$strings["Encrypt text"] = "Text encriptat";
-App::$strings["New window"] = "Nova finestra";
-App::$strings["Open the selected location in a different window or browser tab"] = "Obrir la localització seleccionada en un altre finestra o pestanya del navegador";
-App::$strings["User '%s' deleted"] = "usuari '%s' esborrat";
-App::$strings["Attachments:"] = "Adjuntat:";
-App::$strings["\$Projectname event notification:"] = "Notificació d'esdeveniment de \$Projectname";
-App::$strings["Logout"] = "Desconectar";
-App::$strings["End this session"] = "Finalitza aquesta sessió";
-App::$strings["Home"] = "Personal";
-App::$strings["Your posts and conversations"] = "Les teves entrades i converses";
-App::$strings["View Profile"] = "Veure Perfil";
-App::$strings["Your profile page"] = "La teva pàgina de perfil";
-App::$strings["Edit Profiles"] = "Editar Perfils";
-App::$strings["Manage/Edit profiles"] = "Gestiona/Edita perfils";
-App::$strings["Edit Profile"] = "Edita Perfil";
-App::$strings["Edit your profile"] = "Edita el teu perfil";
-App::$strings["Photos"] = "Fotos";
-App::$strings["Your photos"] = "Les Teves Fotos";
-App::$strings["Your files"] = "Els teus arxius";
-App::$strings["Chat"] = "Xerrar";
-App::$strings["Your chatrooms"] = "Les teves sales de xerrar";
-App::$strings["Bookmarks"] = "Marcadors";
-App::$strings["Your bookmarks"] = "Els teus marcadors";
-App::$strings["Webpages"] = "Pàgines web";
-App::$strings["Your webpages"] = "Les teves pàgines web";
-App::$strings["Login"] = "Identifica't";
-App::$strings["Sign in"] = "Signatura";
-App::$strings["%s - click to logout"] = "%s - click per desconectar";
-App::$strings["Remote authentication"] = "Autenticació remota";
-App::$strings["Click to authenticate to your home hub"] = "Click per autentificar-te en el teu Lloc ";
-App::$strings["Home Page"] = "Pàgina Personal";
-App::$strings["Register"] = "Registre";
-App::$strings["Create an account"] = "Crear un compte";
-App::$strings["Help"] = "Ajuda";
-App::$strings["Help and documentation"] = "Ajuda i documentació";
-App::$strings["Applications, utilities, links, games"] = "Aplicacions, utilitats, enllaços, jocs";
-App::$strings["Search site content"] = "Cerca en el contingut del lloc";
-App::$strings["Directory"] = "Directori";
-App::$strings["Channel Directory"] = "Directori de Canals";
-App::$strings["Matrix"] = "Matriu/Matrix";
-App::$strings["Your matrix"] = "El teu matrix";
-App::$strings["Mark all matrix notifications seen"] = "Marca totes les notificacions de matrix vistes";
-App::$strings["Channel Home"] = "Canal Personal";
-App::$strings["Channel home"] = "Canal personal";
-App::$strings["Mark all channel notifications seen"] = "Marca totes les notificacions de canal vistes";
-App::$strings["Connections"] = "Connexions";
-App::$strings["Notices"] = "Noticies";
-App::$strings["Notifications"] = "Notificacions";
-App::$strings["See all notifications"] = "Veure totes les Notificacions";
-App::$strings["Mark all system notifications seen"] = "Marca totes les notificacions vistes";
-App::$strings["Mail"] = "Correu";
-App::$strings["Private mail"] = "Correu privat";
-App::$strings["See all private messages"] = "Veure tots els missatges privats";
-App::$strings["Mark all private messages seen"] = "Marcar tots els missatges privats vistos";
-App::$strings["Inbox"] = "Safata d'entrada";
-App::$strings["Outbox"] = "Safata de sortida";
-App::$strings["Events"] = "Events";
-App::$strings["Event Calendar"] = "Calendari d'Events";
-App::$strings["See all events"] = "Veure tots els events";
-App::$strings["Mark all events seen"] = "Marcar tots els events vistos";
-App::$strings["Channel Manager"] = "Gestor del Canal";
-App::$strings["Manage Your Channels"] = "Gestiona els Teus Canals";
-App::$strings["Account/Channel Settings"] = "Ajustos de Compte/Canal";
-App::$strings["Admin"] = "Admin";
-App::$strings["Site Setup and Configuration"] = "Ajustos i Configuració del Lloc";
-App::$strings["Loading..."] = "Carregant...";
-App::$strings["@name, #tag, content"] = "@name, #tag, content";
-App::$strings["Please wait..."] = "Si us plau, espera.......";
-App::$strings["Tags"] = "Etiquetes";
-App::$strings["Keywords"] = "Paraules clau";
-App::$strings["have"] = "tinc";
-App::$strings["has"] = "tens";
-App::$strings["want"] = "vull";
-App::$strings["wants"] = "vols";
-App::$strings["likes"] = "agrada";
-App::$strings["dislikes"] = "desagrada";
+App::$strings["Not a valid email address"] = "Adreça de correu electrònic no vàlida";
+App::$strings["Your email domain is not among those allowed on this site"] = "El seu domini de correu electrònic no es troba entre els permesos en aquest lloc";
+App::$strings["Your email address is already registered at this site."] = "La teva adreça de correu electrònic ja esta registrada en aquest lloc";
+App::$strings["An invitation is required."] = "Es requereix Invitació";
+App::$strings["Invitation could not be verified."] = "La invitació no ha pogut ser verificada";
+App::$strings["Please enter the required information."] = "Entra la informació sol·licitada";
+App::$strings["Failed to store account information."] = "No s'ha pogut desar la informació del compte";
+App::$strings["Registration confirmation for %s"] = "Confirmació del registre de %s";
+App::$strings["Registration request at %s"] = "Sol·licitud de registre a %s";
+App::$strings["your registration password"] = "la teva contrasenya registrada";
+App::$strings["Registration details for %s"] = "Detalls del registre per %s";
+App::$strings["Account approved."] = "Compte aprovat.";
+App::$strings["Registration revoked for %s"] = "S'ha revocat el registre de %s";
+App::$strings["Account verified. Please login."] = "S'ha verificat el compte. Inicia la sessió per continuar.";
+App::$strings["Click here to upgrade."] = "Feu clic aquí per actualitzar.";
+App::$strings["This action exceeds the limits set by your subscription plan."] = "Aquesta acció sobrepassa els límits establerts pel seu pla de subscripció.";
+App::$strings["This action is not available under your subscription plan."] = "Aquesta acció no està disponible en el seu pla de subscripció.";
+App::$strings["Embedded content"] = "Contingut embegut";
+App::$strings["Embedding disabled"] = "Incorporació desactivada";
+App::$strings["Visible to your default audience"] = "Visible per a la teva audiència ";
+App::$strings["Show"] = "Mostra";
+App::$strings["Don't show"] = "No mostrar";
+App::$strings["Permissions"] = "Permisos ";
App::$strings[" and "] = "i";
App::$strings["public profile"] = "Perfil públic";
App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s canviat %2\$s a &ldquo;%3\$s&rdquo;";
App::$strings["Visit %1\$s's %2\$s"] = "Visita %1\$s de %2\$s";
App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s Ha actualitzat %2\$s, canviant %3\$s.";
+App::$strings["Public Timeline"] = "Cronologia pública";
+App::$strings["Site Admin"] = "Administració";
+App::$strings["Address Book"] = "Adreçes";
+App::$strings["Profile"] = "Perfil";
+App::$strings["Mood"] = "Ànim";
+App::$strings["Poke"] = "Emprenya";
+App::$strings["Probe"] = "Sondeig";
+App::$strings["Suggest"] = "Suggeriment";
+App::$strings["Random Channel"] = "Canal Aleatori";
+App::$strings["Invite"] = "Convida";
+App::$strings["Features"] = "Funcionalitats";
+App::$strings["Language"] = "Idioma";
+App::$strings["Post"] = "Entrada";
+App::$strings["Profile Photo"] = "Foto del Perfil";
+App::$strings["Update"] = "Actualització";
+App::$strings["Install"] = "Instal·lar";
+App::$strings["Purchase"] = "Compra";
+App::$strings["Permission denied."] = "Permís denegat.";
+App::$strings["Item was not found."] = "Article no trobat.";
+App::$strings["No source file."] = "No hi ha arxiu d'origen.";
+App::$strings["Cannot locate file to replace"] = "No trobo l'arxiu a reemplaçar";
+App::$strings["Cannot locate file to revise/update"] = "No trobo l'arxiu a revisar/actualitzar";
+App::$strings["File exceeds size limit of %d"] = "L'arxiu excedeix la mida limit de %d";
+App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Has arribat al teu límit de %1$.0f Mbytes de emagatzematge d'adjunts.";
+App::$strings["File upload failed. Possible system limit or action terminated."] = "Pujada del arxiu fallida. Possible límit del sistema o acció interrompuda.";
+App::$strings["Stored file could not be verified. Upload failed."] = "L'arxiu guardat no es pot verificar. Pujada fallida.";
+App::$strings["Path not available."] = "Trajectòria no disponible";
+App::$strings["Empty pathname"] = "Trajèctoria vuida.";
+App::$strings["duplicate filename or path"] = "Nom o trajectòria duplicat";
+App::$strings["Path not found."] = "Trajectòria no trobada.";
+App::$strings["mkdir failed."] = "mkdir va fracassar.";
+App::$strings["database storage failed."] = "Arxiu de base de dades va fallar.";
+App::$strings["Logged out."] = "Sortir.";
+App::$strings["Failed authentication"] = "Autenticació fallida";
+App::$strings["Login failed."] = "Identificació fallida.";
+App::$strings["Attachments:"] = "Adjuntat:";
+App::$strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
+App::$strings["\$Projectname event notification:"] = "Notificació d'esdeveniment de \$Projectname";
+App::$strings["Starts:"] = "Comença:";
+App::$strings["Finishes:"] = "Acaba:";
+App::$strings["Location:"] = "Lloc:";
+App::$strings["Image/photo"] = "Imatge/foto";
+App::$strings["Encrypted content"] = "Contingut encriptat";
+App::$strings["Install %s element: "] = "Instal·la l'element %s:";
+App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Aquesta entrada contè un element %s instal·lable, potser manques de permissos per instal·lar-lo en aquest lloc.";
+App::$strings["webpage"] = "pàgina web";
+App::$strings["layout"] = "disseny";
+App::$strings["block"] = "bloc";
+App::$strings["menu"] = "menú";
+App::$strings["QR code"] = "QR code";
+App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s va escriure la següent %2\$s %3\$s";
+App::$strings["post"] = "entrada";
+App::$strings["Different viewers will see this text differently"] = "Diferents observadors veuran aquest text de diferents formes";
+App::$strings["$1 spoiler"] = "$1 spoiler";
+App::$strings["$1 wrote:"] = "$1 va escriure:";
+App::$strings["%1\$s's bookmarks"] = "Marcadors de %1\$s";
+App::$strings["Missing room name"] = "Perdut el nom de la sala";
+App::$strings["Duplicate room name"] = "Nom de la sala duplicat";
+App::$strings["Invalid room specifier."] = "Especificació de la sala invàlida.";
+App::$strings["Room not found."] = "Sala no trobada.";
+App::$strings["Room is full"] = "La sala es plena";
+App::$strings["Default"] = "Predeterminat";
App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "El formulario de la cadena de seguridad no era correcto. Esto probablemente ocurrió porque el formulario se ha abierto durante demasiado tiempo (> 3 horas) antes de enviarlo.";
-App::$strings["Can view my normal stream and posts"] = "Pot veure el flux i entrades normals";
-App::$strings["Can view my default channel profile"] = "Pot veure el meu perfil del canal per defecte";
-App::$strings["Can view my photo albums"] = "Pot veure el meus àlbums de fotos";
-App::$strings["Can view my connections"] = "Pot veure les meves connexions";
-App::$strings["Can view my file storage"] = "Pot veure al meu magatzem d'arxius";
-App::$strings["Can view my webpages"] = "Pot veure les meves pàgines web";
-App::$strings["Can send me their channel stream and posts"] = "Pot enviar-me el flux i entrades del seu canal";
-App::$strings["Can post on my channel page (\"wall\")"] = "Pot fer entrades a la meva pàgina de canal (\"mur\")";
-App::$strings["Can comment on or like my posts"] = "Pot fer comentaris o dir si agrada en les meves entrades";
-App::$strings["Can send me private mail messages"] = "Pot enviar-me un missatge de correu privat";
-App::$strings["Can post photos to my photo albums"] = "Pot enviar fotos al meus àlbums de fotos";
-App::$strings["Can like/dislike stuff"] = "Pot dir si agrada/desagrada ";
-App::$strings["Profiles and things other than posts/comments"] = "Perfils i altres coses a més d'entrades/comentaris";
-App::$strings["Can forward to all my channel contacts via post @mentions"] = "Ho pot enviar a tots els meus contactes del canal via entrades @mencions";
-App::$strings["Advanced - useful for creating group forum channels"] = "Avançat - capaç de crear canals de grups de foro";
-App::$strings["Can chat with me (when available)"] = "Pot xatejar amb mi (si estic disponible)";
-App::$strings["Can write to my file storage"] = "Pot escriure al meu magatzem d'arxius";
-App::$strings["Can edit my webpages"] = "Pot editar les meves pàgines web";
-App::$strings["Can source my public posts in derived channels"] = "Pot mostrar l'origen de les meves entrades públiques en altres canals";
-App::$strings["Somewhat advanced - very useful in open communities"] = "Quelcom avançat - molt útil en comunitats obertes";
-App::$strings["Can administer my channel resources"] = "Pot administrar els meus recursos del canal";
-App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Extremadament avançat. No toquis res si no saps que estàs fent";
-App::$strings["Social Networking"] = "Xarxes Socials";
-App::$strings["Mostly Public"] = "Més aviat Públic";
-App::$strings["Restricted"] = "Restringit";
-App::$strings["Private"] = "Privat";
-App::$strings["Community Forum"] = "Foro de Comunitat";
-App::$strings["Feed Republish"] = "Republicador";
-App::$strings["Special Purpose"] = "Objectiu Especial";
-App::$strings["Celebrity/Soapbox"] = "Celebritat/Faristol";
-App::$strings["Group Repository"] = "Repositori de Grup";
-App::$strings["Other"] = "Altres";
-App::$strings["Custom/Expert Mode"] = "Personalitzat/Mode Expert";
+App::$strings["Frequently"] = "Sovint";
+App::$strings["Hourly"] = "Cada hora";
+App::$strings["Twice daily"] = "Dos cops al dia";
+App::$strings["Daily"] = "Diàriament";
+App::$strings["Weekly"] = "Setmanalment";
+App::$strings["Monthly"] = "Mensualment";
+App::$strings["Friendica"] = "Friendica";
+App::$strings["OStatus"] = "OStatus";
+App::$strings["RSS/Atom"] = "RSS/Atom";
+App::$strings["Email"] = "Correu electrònic";
+App::$strings["Diaspora"] = "Diaspora";
+App::$strings["Facebook"] = "Facebook";
+App::$strings["Zot!"] = "Zot!";
+App::$strings["LinkedIn"] = "LinkedIn";
+App::$strings["XMPP/IM"] = "XMPP/IM";
+App::$strings["MySpace"] = "MySpace";
+App::$strings["%d invitation available"] = array(
+ 0 => "%d invitació disponible",
+ 1 => "%d invitacions disponibles",
+);
+App::$strings["Advanced"] = "Avançat";
+App::$strings["Find Channels"] = "Troba Canals";
+App::$strings["Enter name or interest"] = "Entra un nom o interes";
+App::$strings["Connect/Follow"] = "Conecta/Segueix";
+App::$strings["Examples: Robert Morgenstein, Fishing"] = "Exemples: Lionel Messi, Futbolista";
+App::$strings["Find"] = "Troba";
+App::$strings["Channel Suggestions"] = "Canals Suggerits";
+App::$strings["Random Profile"] = "Perfil Aleatori";
+App::$strings["Invite Friends"] = "Convida Amics";
+App::$strings["Advanced example: name=fred and country=iceland"] = "Exemple avançat: nom=pep i pais=eire";
+App::$strings["%d connection in common"] = array(
+ 0 => "%d connexió en comú",
+ 1 => "%d connexions en comú",
+);
+App::$strings["show more"] = "mostrar més";
App::$strings["channel"] = "canal";
+App::$strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s li agrada %3\$s de %2\$s";
App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s no agrada %2\$s de %3\$s";
App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s esta ara connectat amb %2\$s";
App::$strings["%1\$s poked %2\$s"] = "%1\$s emprenyat %2\$s";
App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s es %2\$s";
-App::$strings["__ctx:title__ Likes"] = "Agrada";
-App::$strings["__ctx:title__ Dislikes"] = "Desagrada";
-App::$strings["__ctx:title__ Agree"] = "Acord";
-App::$strings["__ctx:title__ Disagree"] = "Desacord";
-App::$strings["__ctx:title__ Abstain"] = "Abstenirse";
+App::$strings["__ctx:title__ Likes"] = "M'agrada";
+App::$strings["__ctx:title__ Dislikes"] = "No m'agrada";
+App::$strings["__ctx:title__ Agree"] = "A favor";
+App::$strings["__ctx:title__ Disagree"] = "En contra";
+App::$strings["__ctx:title__ Abstain"] = "En blanc";
App::$strings["__ctx:title__ Attending"] = "Assistint";
App::$strings["__ctx:title__ Not attending"] = "Desassistint";
App::$strings["__ctx:title__ Might attend"] = "Podrien assistir";
@@ -612,8 +466,7 @@ App::$strings["View Photos"] = "Veure Fotos";
App::$strings["Matrix Activity"] = "Activitat de Matrix";
App::$strings["Edit Contact"] = "Editar Contacte";
App::$strings["Send PM"] = "Enviar MP";
-App::$strings["Poke"] = "Emprenya";
-App::$strings["%s likes this."] = "%s agrada això.";
+App::$strings["%s likes this."] = "A %s li agrada això.";
App::$strings["%s doesn't like this."] = "%s no agrada això.";
App::$strings["<span %1\$s>%2\$d people</span> like this."] = array(
0 => "<span %1\$s>%2\$d gent</span> agrada això.",
@@ -673,14 +526,14 @@ App::$strings["Posted Order"] = "Ordenar per Entrades";
App::$strings["Sort by Post Date"] = "Ordenar per Data d' Entrada";
App::$strings["Posts that mention or involve you"] = "Entrades que et mencionen o involucren";
App::$strings["New"] = "Nou";
-App::$strings["Activity Stream - by date"] = "Activitat del Flux - per data";
+App::$strings["Activity Stream - by date"] = "Flux d'activitat - per data";
App::$strings["Starred"] = "Preferit";
App::$strings["Favourite Posts"] = "Entrades Favorites";
App::$strings["Spam"] = "Spam";
App::$strings["Posts flagged as SPAM"] = "Entrades marcades com a SPAM";
App::$strings["Channel"] = "Canal";
App::$strings["Status Messages and Posts"] = "Estat dels Missatges i Entrades";
-App::$strings["About"] = "Sobre això";
+App::$strings["About"] = "Sobre mi";
App::$strings["Profile Details"] = "Detalls del Perfil";
App::$strings["Photo Albums"] = "Albums de Fotos";
App::$strings["Files and Storage"] = "Arxius i Emmagatzegament";
@@ -700,86 +553,169 @@ App::$strings["__ctx:noun__ Undecided"] = array(
1 => "Indecisos",
);
App::$strings["__ctx:noun__ Agree"] = array(
- 0 => "Acord",
- 1 => "Acords",
+ 0 => "A favor",
+ 1 => "A favor",
);
App::$strings["__ctx:noun__ Disagree"] = array(
- 0 => "Desacord",
- 1 => "Desacords",
+ 0 => "En contra",
+ 1 => "En contra",
);
App::$strings["__ctx:noun__ Abstain"] = array(
- 0 => "Abstenirse",
- 1 => "Abstenirse",
-);
-App::$strings["Permission denied"] = "Permís denegat";
-App::$strings["(Unknown)"] = "(Desconegut)";
-App::$strings["Visible to anybody on the internet."] = "Visible per tothom a la Internet";
-App::$strings["Visible to you only."] = "Visible només per tú.";
-App::$strings["Visible to anybody in this network."] = "Visible per tothom en aquesta xarxa.";
-App::$strings["Visible to anybody authenticated."] = "Visible per tothom autenticat.";
-App::$strings["Visible to anybody on %s."] = "Visible per a tothom a %s.";
-App::$strings["Visible to all connections."] = "Visible per a totes les connexions.";
-App::$strings["Visible to approved connections."] = "Visible per a les connexions aprovades.";
-App::$strings["Visible to specific connections."] = "Visible per a específiques connexions.";
-App::$strings["Item not found."] = "Element no trobat.";
-App::$strings["Permission denied."] = "Permís denegat.";
-App::$strings["Collection not found."] = "Col·lecció no trobada.";
-App::$strings["Collection is empty."] = "La col·lecció esta buida.";
-App::$strings["Collection: %s"] = "Col·lecció: %s";
-App::$strings["Connection: %s"] = "Connexió: %s";
-App::$strings["Connection not found."] = "Connexió no trobada.";
-App::$strings["Invalid data packet"] = "paquet de dades invàlid";
-App::$strings["Unable to verify channel signature"] = "No es pot verificar la signatura del canal";
-App::$strings["Unable to verify site signature for %s"] = "No es pot verificar la signatura del lloc per %s";
-App::$strings["Embedded content"] = "Contingut embegut";
-App::$strings["Embedding disabled"] = "Incorporació desactivada";
-App::$strings["Logged out."] = "Sortir.";
-App::$strings["Failed authentication"] = "Autenticació fallida";
-App::$strings["Login failed."] = "Identificació fallida.";
-App::$strings["%d invitation available"] = array(
- 0 => "%d invitació disponible",
- 1 => "%d invitacions disponibles",
+ 0 => "En blanc",
+ 1 => "En blanc",
);
-App::$strings["Advanced"] = "Avançat";
-App::$strings["Find Channels"] = "Troba Canals";
-App::$strings["Enter name or interest"] = "Entra un nom o interes";
-App::$strings["Connect/Follow"] = "Conecta/Segueix";
-App::$strings["Examples: Robert Morgenstein, Fishing"] = "Exemples: Lionel Messi, Futbolista";
-App::$strings["Find"] = "Troba";
-App::$strings["Channel Suggestions"] = "Canals Suggerits";
-App::$strings["Random Profile"] = "Perfil Aleatori";
-App::$strings["Invite Friends"] = "Convida Amics";
-App::$strings["Advanced example: name=fred and country=iceland"] = "Exemple avançat: nom=pep i pais=eire";
-App::$strings["%d connection in common"] = array(
- 0 => "%d connexió en comú",
- 1 => "%d connexions en comú",
-);
-App::$strings["show more"] = "mostrar més";
-App::$strings["Visible to your default audience"] = "Visible per a la teva audiència ";
-App::$strings["Show"] = "Mostra";
-App::$strings["Don't show"] = "No mostrar";
-App::$strings["Permissions"] = "Permisos ";
-App::$strings["Item was not found."] = "Article no trobat.";
-App::$strings["No source file."] = "No hi ha arxiu d'origen.";
-App::$strings["Cannot locate file to replace"] = "No trobo l'arxiu a reemplaçar";
-App::$strings["Cannot locate file to revise/update"] = "No trobo l'arxiu a revisar/actualitzar";
-App::$strings["File exceeds size limit of %d"] = "L'arxiu excedeix la mida limit de %d";
-App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Has arribat al teu límit de %1$.0f Mbytes de emagatzematge d'adjunts.";
-App::$strings["File upload failed. Possible system limit or action terminated."] = "Pujada del arxiu fallida. Possible límit del sistema o acció interrompuda.";
-App::$strings["Stored file could not be verified. Upload failed."] = "L'arxiu guardat no es pot verificar. Pujada fallida.";
-App::$strings["Path not available."] = "Trajectòria no disponible";
-App::$strings["Empty pathname"] = "Trajèctoria vuida.";
-App::$strings["duplicate filename or path"] = "Nom o trajectòria duplicat";
-App::$strings["Path not found."] = "Trajectòria no trobada.";
-App::$strings["mkdir failed."] = "mkdir va fracassar.";
-App::$strings["database storage failed."] = "Arxiu de base de dades va fallar.";
+App::$strings["Miscellaneous"] = "Miscelania";
+App::$strings["YYYY-MM-DD or MM-DD"] = "YYYY-MM-DD o MM-DD";
+App::$strings["Required"] = "Requerit";
+App::$strings["never"] = "mai";
+App::$strings["less than a second ago"] = "fa menys d'un segon";
+App::$strings["year"] = "any";
+App::$strings["years"] = "anys";
+App::$strings["month"] = "mes";
+App::$strings["months"] = "mesos";
+App::$strings["week"] = "setmana";
+App::$strings["weeks"] = "setmanes";
+App::$strings["day"] = "dia";
+App::$strings["days"] = "dies";
+App::$strings["hour"] = "hora";
+App::$strings["hours"] = "hores";
+App::$strings["minute"] = "minut";
+App::$strings["minutes"] = "minuts";
+App::$strings["second"] = "segon";
+App::$strings["seconds"] = "segons";
+App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "Fa %1\$d i %2\$s";
+App::$strings["%1\$s's birthday"] = "Aniversari de %1\$s";
+App::$strings["Happy Birthday %1\$s"] = "Feliç Aniversari %1\$s";
+App::$strings["Please choose"] = "Escull";
+App::$strings["Agree"] = "A favor";
+App::$strings["Disagree"] = "En contra";
+App::$strings["Abstain"] = "En blanc";
+App::$strings["Nickname has unsupported characters or is already being used on this site."] = "L'àlies té caràcters no suportats o ja està agafat en aquest lloc.";
+App::$strings["Directory Options"] = "Opcions de carpeta";
+App::$strings["Safe Mode"] = "Mode Segur";
+App::$strings["No"] = "No";
+App::$strings["Yes"] = "Sí";
+App::$strings["Public Forums Only"] = "Només fòrums públics";
+App::$strings["This Website Only"] = "Només aquest lloc web";
+App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
+App::$strings["[Red:Notify] New mail received at %s"] = "[Red:Notificació] Un nou missatge s'ha rebut a %s";
+App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s t'ha enviat un nou missatge privat a %3\$s.";
+App::$strings["%1\$s sent you %2\$s."] = "%1\$s t'ha enviat %2\$s.";
+App::$strings["a private message"] = "un missatge privat";
+App::$strings["Please visit %s to view and/or reply to your private messages."] = "Per favor, visita %s per a veure i/o respondre els teus missatges privats.";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s comentat en [zrl=%3\$s]a %4\$s[/zrl]";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s comentat en [zrl=%3\$s]%4\$s de %5\$s[/zrl]";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s comentat en [zrl=%3\$s]el teu %4\$s[/zrl]";
+App::$strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red:Notify] Comentari a la conversa #%1\$d per %2\$s";
+App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s comentat en un article/conversa que havies estat seguint.";
+App::$strings["Please visit %s to view and/or reply to the conversation."] = "Si us plau visita %s per veure i/o contestar a la conversa";
+App::$strings["[Red:Notify] %s posted to your profile wall"] = "[Red:Avís] %s ha escrit una entrada al teu mur";
+App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s ha escrit una entrada al teu mur en %3\$s";
+App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s enviat correu a [zrl=%3\$s]el teu mur[/zrl]";
+App::$strings["[Red:Notify] %s tagged you"] = "[Red:Notificació] %s t'ha etiquetat";
+App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s t'ha etiquetat a %3\$s";
+App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]t'ha etiquetat[/zrl].";
+App::$strings["[Red:Notify] %1\$s poked you"] = "[Red:Avís] %1\$s s'en fot de tu";
+App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s s'en fot de tú a %3\$s";
+App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]s'en fot de tú[/zrl].";
+App::$strings["[Red:Notify] %s tagged your post"] = "[Red:Avís] %s ha etiquetat la teva entrada";
+App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s ha etiquetat la teva entrada a %3\$s";
+App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s etiquetat [zrl=%3\$s]la teva entrada[/zrl]";
+App::$strings["[Red:Notify] Introduction received"] = "[Red:Avís] Presentació rebuda";
+App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, has rebut una nova petició de connexió de '%2\$s' a %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, has rebut [zrl=%2\$s]una nova petició de connexió[/zrl] de %3\$s.";
+App::$strings["You may visit their profile at %s"] = "Pots visitar el seu perfil a %s";
+App::$strings["Please visit %s to approve or reject the connection request."] = "Si us plau, visita %s per aprovar o rebutjar la petició de connexió.";
+App::$strings["[Red:Notify] Friend suggestion received"] = "[Red:Notificació] Rebuda suggerencia d'amistat";
+App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, has rebut una suggerència d'amistat de '%2\$s' a %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, has rebut [zrl=%2\$s]una suggerència d'amistat[/zrl] per %3\$s de %4\$s.";
+App::$strings["Name:"] = "Nom:";
+App::$strings["Photo:"] = "Foto:";
+App::$strings["Please visit %s to approve or reject the suggestion."] = "Per favor, visita %s per a aprovar o rebutjar la suggerencia.";
+App::$strings["[Red:Notify]"] = "[Red:Notificació]";
+App::$strings["This event has been added to your calendar."] = "S'ha afegit l'activitat al teu calendari.";
+App::$strings["General Features"] = "Característiques generals";
+App::$strings["Content Expiration"] = "Caducitat del contingut";
+App::$strings["Remove posts/comments and/or private messages at a future time"] = "Elimina entrades, comentaris i/o missatges privats al cap d'un cert temps";
+App::$strings["Multiple Profiles"] = "Múltiples perfils";
+App::$strings["Ability to create multiple profiles"] = "Capacitat de crear diversos perfils";
+App::$strings["Advanced Profiles"] = "Perfils avançats";
+App::$strings["Additional profile sections and selections"] = "Seccions i seleccions addicionals de perfils";
+App::$strings["Profile Import/Export"] = "Importació i exportació de perfil";
+App::$strings["Save and load profile details across sites/channels"] = "Desa i carrega els detalls del perfil a través de llocs i canals";
+App::$strings["Web Pages"] = "Pàgines web";
+App::$strings["Provide managed web pages on your channel"] = "Proporcionar pàgines web gestionades al seu canal";
+App::$strings["Private Notes"] = "Notes privades";
+App::$strings["Enables a tool to store notes and reminders"] = "Activa una eina per a crear notes i recordatoris";
+App::$strings["Navigation Channel Select"] = "Navegació pel selector de canals";
+App::$strings["Change channels directly from within the navigation dropdown menu"] = "Canvieu els canals directament des del menú desplegable de navegació";
+App::$strings["Photo Location"] = "Ubicació de les fotos";
+App::$strings["If location data is available on uploaded photos, link this to a map."] = "Quan una imatge pujada porti incrustada la seva localització, enllaça-la a un mapa automàticament.";
+App::$strings["Expert Mode"] = "Mode expert";
+App::$strings["Enable Expert Mode to provide advanced configuration options"] = "Activa el mode expert per a mostrar opcions avançades de configuració";
+App::$strings["Premium Channel"] = "Canal prèmium";
+App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Permet establir restriccions i condicions a qui es connecti al teu canal";
+App::$strings["Post Composition Features"] = "Més funcionalitats de redacció d'entrades";
+App::$strings["Use Markdown"] = "Habilita el Markdown";
+App::$strings["Allow use of \"Markdown\" to format posts"] = "Permet emprar \"Markdown\" per donar format a les entrades";
+App::$strings["Large Photos"] = "Fotos grans";
+App::$strings["Include large (640px) photo thumbnails in posts. If not enabled, use small (320px) photo thumbnails"] = "Inclou miniatures d'imatge grans (640px) en les entrades. Si no està activat, petites (320px).";
+App::$strings["Automatically import channel content from other channels or feeds"] = "Importa automàticament el contingut del canal des d'altres canals o feeds";
+App::$strings["Even More Encryption"] = "Encara més xifratge";
+App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Permet el xifratge opcional de contingut extrem-a-extrem amb clau simètrica";
+App::$strings["Enable voting tools"] = "Habilita eines de vot";
+App::$strings["Provide a class of post which others can vote on"] = "Proporcionar una classe d'entrada que altres puguin votar";
+App::$strings["Network and Stream Filtering"] = "Filtres de xarxa de contactes i de flux d'activitat";
+App::$strings["Search by Date"] = "Cerca per data";
+App::$strings["Ability to select posts by date ranges"] = "Capacitat per seleccionar entrades per rang de dates";
+App::$strings["Collections Filter"] = "Filtre de col·leccions";
+App::$strings["Enable widget to display Network posts only from selected collections"] = "Habilita un giny per mostrar només les entrades de les col·leccions seleccionades";
+App::$strings["Save search terms for re-use"] = "Conserva les paraules de cerca per reutilitzar-les";
+App::$strings["Network Personal Tab"] = "Pestanya de participació en la xarxa";
+App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Afegeix una pestanya que mostri només les entrades de xarxa on hi hagis intervingut";
+App::$strings["Network New Tab"] = "Pestanya de novetats a la xarxa";
+App::$strings["Enable tab to display all new Network activity"] = "Afegeix una pestanya que mostri tota l'activitat nova de la Xarxa";
+App::$strings["Affinity Tool"] = "Filtre d'activitat per afinitat";
+App::$strings["Filter stream activity by depth of relationships"] = "Filtra el flux d'activitat segons el tipus de relació amb l'actor de l'activitat";
+App::$strings["Connection Filtering"] = "Filtre d'entrades per paraules clau";
+App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filtra les entrades de les teves connexions segons paraules clau i contingut";
+App::$strings["Suggest Channels"] = "Suggeix-me canals";
+App::$strings["Show channel suggestions"] = "Mostra suggerències de canals";
+App::$strings["Post/Comment Tools"] = "Eines d'entrades i comentaris";
+App::$strings["Tagging"] = "Etiquetes";
+App::$strings["Ability to tag existing posts"] = "Capacitat d'etiquetar entrades existents";
+App::$strings["Post Categories"] = "Categories d'Entrades";
+App::$strings["Add categories to your posts"] = "Afegeix categoria a la teva entrada";
+App::$strings["Ability to file posts under folders"] = "Capacitat de arxivar entrades en les carpetes";
+App::$strings["Dislike Posts"] = "\"No m'agrada\"";
+App::$strings["Ability to dislike posts/comments"] = "Capacitat per marcar amb un \"no m'agrada\" les entrades i els comentaris";
+App::$strings["Star Posts"] = "Entrades Excel·lents";
+App::$strings["Ability to mark special posts with a star indicator"] = "Capacitat per marcar entrades especials amb l'indicador d'excel·lencia";
+App::$strings["Tag Cloud"] = "Núvol d'Etiquetes.";
+App::$strings["Provide a personal tag cloud on your channel page"] = "Proporcionar un núvol d'etiquetes personals a la teva pàgina de canal";
+App::$strings["Channel is blocked on this site."] = "El canal està bloquejat en aquest lloc.";
+App::$strings["Channel location missing."] = "Falta la ubicació del canal.";
+App::$strings["Response from remote channel was incomplete."] = "La resposta del canal remot fou incompleta.";
+App::$strings["Channel was deleted and no longer exists."] = "El canal fou esborrat i actualment no existeix.";
+App::$strings["Protocol disabled."] = "Protocol desactivat.";
+App::$strings["Protocol blocked for this channel."] = "El protocol està bloquejat per a aquest canal.";
+App::$strings["Channel discovery failed."] = "Descobriment de canal fallit.";
+App::$strings["local account not found."] = "compte local no trobat.";
+App::$strings["Cannot connect to yourself."] = "No pots connectar amb tu mateix.";
+App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un grup esborrat amb aquest nom fou reviscolat. Els permisos dels items existents <strong>poden</strong> aplicar-se a aquest grup i qualsevol membre futur. Si no es això el que vols, si et plau, crea un altre grup amb un nom diferent.";
+App::$strings["Default privacy group for new contacts"] = "Privacitat de grup predeterminada per a contactes nous";
+App::$strings["All Channels"] = "Tots els canals";
+App::$strings["edit"] = "edita";
+App::$strings["Collections"] = "Col·leccions";
+App::$strings["Edit collection"] = "Edita col·leccions";
+App::$strings["Add new collection"] = "Afegeix una nova col·lecció";
+App::$strings["Channels not in any collection"] = "Canals a cap col·lecció";
App::$strings["Unable to obtain identity information from database"] = "Incapaç de trobar l'informació d'identitat a la base de dades";
App::$strings["Empty name"] = "Nom buit";
App::$strings["Name too long"] = "Nom massa llarg";
App::$strings["No account identifier"] = "Sense identificador de compte";
App::$strings["Nickname is required."] = "Alies/malnom es requerit.";
App::$strings["Reserved nickname. Please choose another."] = "Àlies reservat. Tria un altre.";
-App::$strings["Nickname has unsupported characters or is already being used on this site."] = "L'álies te caracters no soportats o ja esta en ús en aquest lloc";
App::$strings["Unable to retrieve created identity"] = "No es pot recuperar la identitat creada";
App::$strings["Default Profile"] = "Perfil per Defecte";
App::$strings["Requested channel is not available."] = "El canal demanat no està disponible.";
@@ -803,7 +739,6 @@ App::$strings["Birthdays this week:"] = "Aniversari aquesta setmana:";
App::$strings["[No description]"] = "[Sense descripció]";
App::$strings["Event Reminders"] = "Recordatori d'Events";
App::$strings["Events this week:"] = "Event aquesta setmana:";
-App::$strings["Profile"] = "Perfil";
App::$strings["Full Name:"] = "Nom Complet:";
App::$strings["Like this channel"] = "M'agrada aquest canal";
App::$strings["j F, Y"] = "j F, Y";
@@ -816,10 +751,10 @@ App::$strings["Hometown:"] = "Ciutat Natal:";
App::$strings["Tags:"] = "Etiquetes:";
App::$strings["Political Views:"] = "Idees Polítiques:";
App::$strings["Religion:"] = "Religió:";
-App::$strings["About:"] = "Sobre:";
+App::$strings["About:"] = "Sobre mi:";
App::$strings["Hobbies/Interests:"] = "Aficions/Interessos:";
-App::$strings["Likes:"] = "Agrada:";
-App::$strings["Dislikes:"] = "Desagrada:";
+App::$strings["Likes:"] = "M'agrada:";
+App::$strings["Dislikes:"] = "No li agrada:";
App::$strings["Contact information and Social Networks:"] = "Informació de contacte i Xarxes Socials:";
App::$strings["My other channels:"] = "Els meus altres canals:";
App::$strings["Musical interests:"] = "Interessos Musicals:";
@@ -830,6 +765,109 @@ App::$strings["Love/Romance:"] = "Amor/Romace:";
App::$strings["Work/employment:"] = "Treball/feina:";
App::$strings["School/education:"] = "Escola/educació:";
App::$strings["Like this thing"] = "M'agrada això";
+App::$strings["Permission denied"] = "Permís denegat";
+App::$strings["(Unknown)"] = "(Desconegut)";
+App::$strings["Visible to anybody on the internet."] = "Visible per tothom a la Internet";
+App::$strings["Visible to you only."] = "Visible només per tú.";
+App::$strings["Visible to anybody in this network."] = "Visible per tothom en aquesta xarxa.";
+App::$strings["Visible to anybody authenticated."] = "Visible per tothom autenticat.";
+App::$strings["Visible to anybody on %s."] = "Visible per a tothom a %s.";
+App::$strings["Visible to all connections."] = "Visible per a totes les connexions.";
+App::$strings["Visible to approved connections."] = "Visible per a les connexions aprovades.";
+App::$strings["Visible to specific connections."] = "Visible per a específiques connexions.";
+App::$strings["Item not found."] = "Element no trobat.";
+App::$strings["Collection not found."] = "Col·lecció no trobada.";
+App::$strings["Collection is empty."] = "La col·lecció esta buida.";
+App::$strings["Collection: %s"] = "Col·lecció: %s";
+App::$strings["Connection: %s"] = "Connexió: %s";
+App::$strings["Connection not found."] = "Connexió no trobada.";
+App::$strings["Delete this item?"] = "Vols esborrar aquest element?";
+App::$strings["[-] show less"] = "[-] mostra'n menys";
+App::$strings["[+] expand"] = "[+] expandeix";
+App::$strings["[-] collapse"] = "[-] colapsa";
+App::$strings["Password too short"] = "Contrasenya massa curta";
+App::$strings["Passwords do not match"] = "Les contrasenyes no coincideixen";
+App::$strings["everybody"] = "tothom";
+App::$strings["Secret Passphrase"] = "Contrasenya secreta";
+App::$strings["Passphrase hint"] = "Pista per la contrasenya";
+App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Avís: Els permisos han canviat però encara no han estat enviats.";
+App::$strings["close all"] = "tanca-ho tot";
+App::$strings["Nothing new here"] = "Res de nou per aquí";
+App::$strings["Rate This Channel (this is public)"] = "Valora aquest Canal (això es farà públic)";
+App::$strings["Rating"] = "Valoració";
+App::$strings["Describe (optional)"] = "Descriu (opcional)";
+App::$strings["Please enter a link URL"] = "Si us plau, introdueix una adreça URL";
+App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Hi ha canvis sense desar, estàs segur que vols abandonar la pàgina?";
+App::$strings["timeago.prefixAgo"] = "timeago.prefixAgo";
+App::$strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
+App::$strings["ago"] = "enrere";
+App::$strings["from now"] = "des d'ara";
+App::$strings["less than a minute"] = "menys d'un minut";
+App::$strings["about a minute"] = "prop d'un minut";
+App::$strings["%d minutes"] = "%d minuts";
+App::$strings["about an hour"] = "prop d'una hora";
+App::$strings["about %d hours"] = "al voltant de %d hores";
+App::$strings["a day"] = "un dia";
+App::$strings["%d days"] = "%d dies";
+App::$strings["about a month"] = "prop d'un mes";
+App::$strings["%d months"] = "%d mesos";
+App::$strings["about a year"] = "prop d'un any";
+App::$strings["%d years"] = "%d anys";
+App::$strings[" "] = " ";
+App::$strings["timeago.numbers"] = "timeago.numbers";
+App::$strings["New Page"] = "Pàgina Nova";
+App::$strings["View"] = "Mostra";
+App::$strings["Actions"] = "Accions";
+App::$strings["Page Link"] = "Enllaç de la pàgina";
+App::$strings["Title"] = "Títol";
+App::$strings["Created"] = "Creat";
+App::$strings["Edited"] = "Editat";
+App::$strings["Can view my normal stream and posts"] = "Pot veure el flux i entrades normals";
+App::$strings["Can view my default channel profile"] = "Pot veure el meu perfil del canal per defecte";
+App::$strings["Can view my photo albums"] = "Pot veure el meus àlbums de fotos";
+App::$strings["Can view my connections"] = "Pot veure les meves connexions";
+App::$strings["Can view my file storage"] = "Pot veure al meu magatzem d'arxius";
+App::$strings["Can view my webpages"] = "Pot veure les meves pàgines web";
+App::$strings["Can send me their channel stream and posts"] = "Pot enviar-me el flux i entrades del seu canal";
+App::$strings["Can post on my channel page (\"wall\")"] = "Pot fer entrades a la meva pàgina de canal (\"mur\")";
+App::$strings["Can comment on or like my posts"] = "Pot fer comentaris o dir si agrada en les meves entrades";
+App::$strings["Can send me private mail messages"] = "Pot enviar-me un missatge de correu privat";
+App::$strings["Can post photos to my photo albums"] = "Pot enviar fotos al meus àlbums de fotos";
+App::$strings["Can like/dislike stuff"] = "Pot dir si agrada/desagrada ";
+App::$strings["Profiles and things other than posts/comments"] = "Perfils i altres coses a més d'entrades/comentaris";
+App::$strings["Can forward to all my channel contacts via post @mentions"] = "Ho pot enviar a tots els meus contactes del canal via entrades @mencions";
+App::$strings["Advanced - useful for creating group forum channels"] = "Avançat - capaç de crear canals de grups de foro";
+App::$strings["Can chat with me (when available)"] = "Pot xatejar amb mi (si estic disponible)";
+App::$strings["Can write to my file storage"] = "Pot escriure al meu magatzem d'arxius";
+App::$strings["Can edit my webpages"] = "Pot editar les meves pàgines web";
+App::$strings["Can source my public posts in derived channels"] = "Pot mostrar l'origen de les meves entrades públiques en altres canals";
+App::$strings["Somewhat advanced - very useful in open communities"] = "Quelcom avançat - molt útil en comunitats obertes";
+App::$strings["Can administer my channel resources"] = "Pot administrar els meus recursos del canal";
+App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Extremadament avançat. No toquis res si no saps que estàs fent";
+App::$strings["Social Networking"] = "Xarxes Socials";
+App::$strings["Mostly Public"] = "Més aviat Públic";
+App::$strings["Restricted"] = "Restringit";
+App::$strings["Private"] = "Privat";
+App::$strings["Community Forum"] = "Foro de Comunitat";
+App::$strings["Feed Republish"] = "Republicador";
+App::$strings["Special Purpose"] = "Objectiu Especial";
+App::$strings["Celebrity/Soapbox"] = "Celebritat/Faristol";
+App::$strings["Group Repository"] = "Repositori de Grup";
+App::$strings["Other"] = "Altres";
+App::$strings["Custom/Expert Mode"] = "Personalitzat/Mode Expert";
+App::$strings["Image exceeds website size limit of %lu bytes"] = "La imatge excedeix la mida limit pel lloc web en %lu bytes";
+App::$strings["Image file is empty."] = "El fitxer d'imatge esta buit.";
+App::$strings["Unable to process image"] = "incapaç de processar la imatge";
+App::$strings["Photo storage failed."] = "Fracassà l'emmagatzematge de la Foto";
+App::$strings["Upload New Photos"] = "Puja Noves Fotos";
+App::$strings["Tags"] = "Etiquetes";
+App::$strings["Keywords"] = "Paraules clau";
+App::$strings["have"] = "tinc";
+App::$strings["has"] = "tens";
+App::$strings["want"] = "vull";
+App::$strings["wants"] = "vols";
+App::$strings["likes"] = "li agrada";
+App::$strings["dislikes"] = "no li agrada";
App::$strings["Male"] = "Masculí";
App::$strings["Female"] = "Femení";
App::$strings["Currently Male"] = "Actualment Masculí";
@@ -886,669 +924,33 @@ App::$strings["Uncertain"] = "Incert";
App::$strings["It's complicated"] = "Es Complicat";
App::$strings["Don't care"] = "No Et Fa Res";
App::$strings["Ask me"] = "Pregunta";
-App::$strings["Site Admin"] = "Administració";
-App::$strings["Address Book"] = "Adreçes";
-App::$strings["Mood"] = "Ànim";
-App::$strings["Probe"] = "Sondeig";
-App::$strings["Suggest"] = "Suggeriment";
-App::$strings["Random Channel"] = "Canal Aleatori";
-App::$strings["Invite"] = "Convida";
-App::$strings["Features"] = "Funcionalitats";
-App::$strings["Language"] = "Idioma";
-App::$strings["Post"] = "Entrada";
-App::$strings["Profile Photo"] = "Foto del Perfil";
-App::$strings["Update"] = "Actualització";
-App::$strings["Install"] = "Instal·lar";
-App::$strings["Purchase"] = "Compra";
-App::$strings["Image/photo"] = "Imatge/foto";
-App::$strings["Encrypted content"] = "Contingut encriptat";
-App::$strings["Install %s element: "] = "Instal·la l'element %s:";
-App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Aquesta entrada contè un element %s instal·lable, potser manques de permissos per instal·lar-lo en aquest lloc.";
-App::$strings["webpage"] = "pàgina web";
-App::$strings["layout"] = "disposició";
-App::$strings["block"] = "bloc";
-App::$strings["menu"] = "menú";
-App::$strings["QR code"] = "QR code";
-App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s va escriure el següent %2\$s %3\$s";
-App::$strings["post"] = "entrada";
-App::$strings["Different viewers will see this text differently"] = "Diferents observadors veuran aquest text de diferents formes";
-App::$strings["$1 spoiler"] = "$1 spoiler";
-App::$strings["$1 wrote:"] = "$1 va escriure:";
-App::$strings["Missing room name"] = "Perdut el nom de la sala";
-App::$strings["Duplicate room name"] = "Nom de la sala duplicat";
-App::$strings["Invalid room specifier."] = "Especificació de la sala invàlida.";
-App::$strings["Room not found."] = "Sala no trobada.";
-App::$strings["Room is full"] = "La sala es plena";
-App::$strings["Image exceeds website size limit of %lu bytes"] = "La imatge excedeix la mida limit pel lloc web en %lu bytes";
-App::$strings["Image file is empty."] = "El fitxer d'imatge esta buit.";
-App::$strings["Unable to process image"] = "incapaç de processar la imatge";
-App::$strings["Photo storage failed."] = "Fracassà l'emmagatzematge de la Foto";
-App::$strings["Upload New Photos"] = "Puja Noves Fotos";
-App::$strings["Some blurb about what to do when you're new here"] = "Algunes propostes sobre el que cal fer quan ets nou aquí";
-App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Has creat %1$.0f de %2$.0f canals permesos.";
-App::$strings["Create a new channel"] = "Crear un nou canal";
-App::$strings["Current Channel"] = "Canal Actual";
-App::$strings["Switch to one of your channels by selecting it."] = "Canviar a un altre dels teus canals seleccionant-ho.";
-App::$strings["Default Channel"] = "Canal per Defecte";
-App::$strings["Make Default"] = "Estableix com a Predeterminat";
-App::$strings["%d new messages"] = "%d missatges nous";
-App::$strings["%d new introductions"] = "%d noves presentacions";
-App::$strings["Delegated Channels"] = "Canals Delegats";
-App::$strings["Public access denied."] = "Accés públic denegat.";
-App::$strings["%d rating"] = array(
- 0 => "%d valoració",
- 1 => "%d valoracions",
-);
-App::$strings["Gender: "] = "Gènere:";
-App::$strings["Status: "] = "Estatus:";
-App::$strings["Homepage: "] = "Pàgina Personal:";
-App::$strings["Description:"] = "Descripció:";
-App::$strings["Public Forum:"] = "Forum Públic:";
-App::$strings["Keywords: "] = "Paraules Clau:";
-App::$strings["Don't suggest"] = "No suggerir";
-App::$strings["Common connections:"] = "Connexions en comú:";
-App::$strings["Global Directory"] = "Directori Global";
-App::$strings["Local Directory"] = "Directori Local";
-App::$strings["Finding:"] = "Cercant:";
-App::$strings["next page"] = "pàgina següent";
-App::$strings["previous page"] = "pàgina anterior";
-App::$strings["Sort options"] = "Opcions per ordenar";
-App::$strings["Alphabetic"] = "Alfabètic";
-App::$strings["Reverse Alphabetic"] = "Alfabètic Invers";
-App::$strings["Newest to Oldest"] = "De més Nou a més Vell";
-App::$strings["Oldest to Newest"] = "De més Antic a més Nou";
-App::$strings["No entries (some entries may be hidden)."] = "Sense entrades (algunes podrien estar amagades).";
-App::$strings["Xchan Lookup"] = "Cerca a xchan";
-App::$strings["Lookup xchan beginning with (or webbie): "] = "Cerca a xchan començant per (o webbie)";
-App::$strings["Not found."] = "No trobat.";
-App::$strings["Authorize application connection"] = "Autoritza la connexió de l'aplicació";
-App::$strings["Return to your app and insert this Securty Code:"] = "Torna a la teva aplicació i insereix aquest Codi de Seguretat:";
-App::$strings["Please login to continue."] = "Si et plau, identifica't per continuar.";
-App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Vols autoritzar a aquesta aplicació l'accés a les teves entrades i contactes i/o a crear noves entrades com si fos tu mateix.";
-App::$strings["Page Title"] = "Títol de la pàgina";
-App::$strings["Channel added."] = "S'ha afegit el canal.";
-App::$strings["Tag removed"] = "S'ha tret l'etiqueta";
-App::$strings["Remove Item Tag"] = "Elimina l'etiqueta d'element";
-App::$strings["Select a tag to remove: "] = "Tria l'etiqueta a eliminar:";
-App::$strings["Remove"] = "Esborra";
-App::$strings["Continue"] = "Continua";
-App::$strings["Premium Channel Setup"] = "Configuració de Canals Premium";
-App::$strings["Enable premium channel connection restrictions"] = "Habilita les restriccions de connexió del canal premium";
-App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Si us plau, introdueixi les restriccions o condicions, com ara el rebut de PayPal, les pautes d'ús, etc.";
-App::$strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Aquest canal pot requerir passos addicionals o reconeixement de les següents condicions abans de connectar:";
-App::$strings["Potential connections will then see the following text before proceeding:"] = "Connexions potencials veuran el següent text abans de continuar:";
-App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "En continuar, certifico que he complert amb totes les instruccions proporcionades en aquesta pàgina.";
-App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(No s'han proporcionat instruccions específiques pel propietari del canal.)";
-App::$strings["Restricted or Premium Channel"] = "Canal Restringit o Premium";
-App::$strings["Thing updated"] = "S'ha actualitzat la cosa";
-App::$strings["Object store: failed"] = "No s'ha pogut emmagatzemar l'objecte";
-App::$strings["Thing added"] = "S'ha afegit la cosa";
-App::$strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
-App::$strings["Show Thing"] = "Mostra la cosa";
-App::$strings["item not found."] = "no s'ha trobat l'element.";
-App::$strings["Edit Thing"] = "Edita la cosa";
-App::$strings["Select a profile"] = "Tria un perfil";
-App::$strings["Post an activity"] = "Publica una activitat";
-App::$strings["Only sends to viewers of the applicable profile"] = "S'envia només a visitants del perfil corresponent";
-App::$strings["Name of thing e.g. something"] = "Nom de la cosa. Exemple: patata";
-App::$strings["URL of thing (optional)"] = "Adreça URL de la cosa (opcional)";
-App::$strings["URL for photo of thing (optional)"] = "Adreça URL de la foto d'una cosa (opcional)";
-App::$strings["Add Thing to your Profile"] = "Afegeix una cosa al teu perfil";
-App::$strings["Item not available."] = "Article no disponible.";
-App::$strings["Fetching URL returns error: %1\$s"] = "URL sol·licitada retorna error: %1\$s";
-App::$strings["Image uploaded but image cropping failed."] = "S'ha pujat la imatge però no s'ha pogut retallar.";
-App::$strings["Image resize failed."] = "No s'ha pogut escalar la imatge.";
-App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Refresca la memòria cau del navegador si la foto no s'actualitza immediatament. Dreceres: «Ctrl+F5» i «Ctrl+Maj+R»";
-App::$strings["Image exceeds size limit of %d"] = "La imatge excedeix la mida límit de %d";
-App::$strings["Unable to process image."] = "Incapaç de processar l'imatge.";
-App::$strings["Photo not available."] = "Foto no disponible.";
-App::$strings["Upload File:"] = "Puja Arxiu:";
-App::$strings["Select a profile:"] = "Tria un perfil:";
-App::$strings["Upload Profile Photo"] = "Puja una Foto pel Perfil";
-App::$strings["or"] = "o";
-App::$strings["skip this step"] = "salta aquest pas";
-App::$strings["select a photo from your photo albums"] = "tria una foto del teu àlbum de fotos";
-App::$strings["Crop Image"] = "Retalla Imatge";
-App::$strings["Please adjust the image cropping for optimum viewing."] = "Si us plau, retalla la imatge per a una optima visualització";
-App::$strings["Done Editing"] = "Edició Feta";
-App::$strings["Image uploaded successfully."] = "Imatge pujada exitosament.";
-App::$strings["Image upload failed."] = "La pujada de la imatge va fracassar.";
-App::$strings["Image size reduction [%s] failed."] = "La reducció de mida de la imatge [%s] va fracassar.";
+App::$strings["Unable to lookup recipient."] = "Incapaç de trobar el destinatari.";
+App::$strings["Unable to communicate with requested channel."] = "Incapaç de comunicar amb el canal demanat.";
+App::$strings["Cannot verify requested channel."] = "No puc verificar el canal demanat.";
+App::$strings["Selected channel has private message restrictions. Send failed."] = "El canal seleccionat te restriccions sobre els missatges privats. L'enviament ha fallat.";
+App::$strings["Message deleted."] = "Missatge eliminat.";
+App::$strings["Message recalled."] = "Recupera el missatge.";
+App::$strings["Send Private Message"] = "Envia Missatge Privat";
+App::$strings["To:"] = "Per:";
+App::$strings["Subject:"] = "Assumpte:";
+App::$strings["Your message:"] = "El teu missatge:";
+App::$strings["Send"] = "Envia";
+App::$strings["Message not found."] = "Missatge no trobat.";
+App::$strings["Delete message"] = "Elimina el missatge";
+App::$strings["Recall message"] = "Recupera el missatge";
+App::$strings["Message has been recalled."] = "El missatge s'ha recuperat.";
+App::$strings["Private Conversation"] = "Conversació Privada";
+App::$strings["Delete conversation"] = "Conversació esborrada";
+App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Comunicació segura no disponible. Pots respondre des de la pàgina de perfil del remitent.";
+App::$strings["Send Reply"] = "Envia Resposta";
+App::$strings["Hub not found."] = "Concentrador no trobat.";
+App::$strings["Some blurb about what to do when you're new here"] = "Algunes propostes sobre què pots fer quan ets nou per aquí";
App::$strings["Invalid item."] = "Article invàlid.";
App::$strings["Channel not found."] = "Canal no trobat.";
App::$strings["Page not found."] = "Pàgina no trobada.";
-App::$strings["Like/Dislike"] = "M'agrada / No m'agrada";
-App::$strings["This action is restricted to members."] = "Aquesta acció està restringida als membres.";
-App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "<a href=\"rmagic\">Entra amb la teva identitat \$Projectname</a> o <a href=\"register\">registra't a \$Projectname</a> per continuar.";
-App::$strings["Invalid request."] = "Sol·licitud invàlida.";
-App::$strings["thing"] = "cosa";
-App::$strings["Channel unavailable."] = "El canal està inactiu.";
-App::$strings["Previous action reversed."] = "S'ha desfet l'acció anterior.";
-App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s està d'acord amb %3\$s de %2\$s";
-App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s no està d'acord amb %3\$s de %2\$s";
-App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s s'abstén en %3\$s de %2\$s";
-App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s assistirà a %3\$s de %2\$s";
-App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s no assistirà a %3\$s de %2\$s";
-App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s potser assistirà a %3\$s de %2\$s";
-App::$strings["Action completed."] = "S'ha completat l'acció.";
-App::$strings["Thank you."] = "Gràcies.";
-App::$strings["Calendar entries imported."] = "Entrades de Calendari importades.";
-App::$strings["No calendar entries found."] = "No es troben entrades decalendari.";
-App::$strings["Event can not end before it has started."] = "L'esdeveniment ha de començar abans d'acabar.";
-App::$strings["Unable to generate preview."] = "No s'ha pogut generar la vista prèvia.";
-App::$strings["Event title and start time are required."] = "Cal indicar l'inici i el final de l'esdeveniment.";
-App::$strings["Event not found."] = "No s'ha trobat l'esdeveniment.";
-App::$strings["l, F j"] = "l, F j";
-App::$strings["Edit event"] = "Edita l'esdeveniment";
-App::$strings["Delete event"] = "Esborra l'esdeveniment";
-App::$strings["calendar"] = "calendari";
-App::$strings["Create New Event"] = "Crea un esdeveniment nou";
-App::$strings["Previous"] = "Anterior";
-App::$strings["Next"] = "Pròxim";
-App::$strings["Export"] = "Exporta";
-App::$strings["Import"] = "Importar";
-App::$strings["Event removed"] = "S'ha eliminat l'esdeveniment";
-App::$strings["Failed to remove event"] = "No s'ha pogut esborrar l'esdeveniment";
-App::$strings["Event details"] = "Detalls de l'esdeveniment";
-App::$strings["Starting date and Title are required."] = "La data d'inici i el títol són obligatoris.";
-App::$strings["Categories (comma-separated list)"] = "Categories (llista separada per comes)";
-App::$strings["Event Starts:"] = "Inici:";
-App::$strings["Finish date/time is not known or not relevant"] = "La data i hora de final no és coneguda o irrellevant";
-App::$strings["Event Finishes:"] = "Final:";
-App::$strings["Adjust for viewer timezone"] = "Ajusta a la zona horària del visitant.";
-App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "És important per esdeveniments locals, però pels globals no és pràctic.";
-App::$strings["Title:"] = "Títol:";
-App::$strings["Share this event"] = "Comparteix aquest esdeveniment";
-App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s esta seguint %2\$s de %3\$s";
-App::$strings["Public Sites"] = "Llocs públics";
-App::$strings["The listed sites allow public registration for the \$Projectname network. All sites in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Els llocs llistats permeten registrar usuaris de la xarxa \$Projectname. Com que tots els llocs estan enllaçats entre ells, la identitat és vàlida a tota la xarxa. Alguns llocs poden demanar subscripció o oferir serveis addicional de pagament. Per a més detalls, proveu de seguir els enllaços dels proveïdors.";
-App::$strings["Rate this hub"] = "Valora aquest hub";
-App::$strings["Site URL"] = "Adreça URL del web";
-App::$strings["Access Type"] = "Tipus d'accés";
-App::$strings["Registration Policy"] = "Condicions de registre";
-App::$strings["Location"] = "Localització";
-App::$strings["View hub ratings"] = "Mostra la valoració del hub";
-App::$strings["Rate"] = "Puntua";
-App::$strings["View ratings"] = "Mostra les valoracions";
-App::$strings["Edit post"] = "Modifica l'entrada";
-App::$strings["\$Projectname channel"] = "Canal de \$Projectname";
-App::$strings["Collection created."] = "Creada una col·lecció";
-App::$strings["Could not create collection."] = "No puc crear la col·lecció.";
-App::$strings["Collection updated."] = "Col·lecció actualitzada.";
-App::$strings["Create a collection of channels."] = "Creada una col·lecció de canals.";
-App::$strings["Collection Name: "] = "Nom de la Col·lecció:";
-App::$strings["Members are visible to other channels"] = "Els membres son visibles en altres canals";
-App::$strings["Collection removed."] = "Col·lecció esborrada.";
-App::$strings["Unable to remove collection."] = "Incapaç d'esborrar la col·lecció.";
-App::$strings["Collection Editor"] = "Editor de Col·leccions";
-App::$strings["Members"] = "Membres";
-App::$strings["All Connected Channels"] = "Tots els Canals Connectats";
-App::$strings["Click on a channel to add or remove."] = "Clic sobre el canal per afegir o esborrar.";
-App::$strings["Version %s"] = "Versió %s";
-App::$strings["Installed plugins/addons/apps:"] = "Plugins/addons/apps Instal·lats:";
-App::$strings["No installed plugins/addons/apps"] = "Plugins/addons/apps no instal·lats";
-App::$strings["\$Projectname"] = "\$Projectname";
-App::$strings["This is a hub of \$Projectname - a global cooperative network of decentralized privacy enhanced websites."] = "Aquest és un hub de \$Projectname, una xarxa cooperativa mundial de llocs web descentralitzats amb gran control de la privacitat.";
-App::$strings["Tag: "] = "Etiqueta:";
-App::$strings["Last background fetch: "] = "Última actualització en rerefons:";
-App::$strings["Running at web location"] = "Correguent en el lloc web";
-App::$strings["Please visit <a href=\"https://redmatrix.me\">redmatrix.me</a> to learn more about \$Projectname."] = "Ves a <a href=\"https://redmatrix.me\">redmatrix.me</a> per saber-ne més sobre \$Projectname.";
-App::$strings["Bug reports and issues: please visit"] = "Per informar d'errors o problemes ves a";
-App::$strings["\$projectname issues"] = "\$projectname emisions";
-App::$strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Per suggerències, felicitacions i altres, envia'ns un mail a «redmatrix» [arroba] librelist [punt] com";
-App::$strings["Site Administrators"] = "Administradors del lloc";
-App::$strings["Unable to locate original post."] = "No s'ha pogut trobar l'entrada original.";
-App::$strings["Empty post discarded."] = "S'ha descartat l'entrada perquè no té contingut.";
-App::$strings["Executable content type not permitted to this channel."] = "No està permès el contingut de tipus executable en aquest canal.";
-App::$strings["System error. Post not saved."] = "Hi ha hagut un error del sistema. L'entrada no s'ha desat.";
-App::$strings["Unable to obtain post information from database."] = "No s'ha pogut obtenir informació de l'entrada a la base de dades.";
-App::$strings["You have reached your limit of %1$.0f top level posts."] = "Has assolit el teu límit de %1$.0f entrades (descomptant comentaris).";
-App::$strings["You have reached your limit of %1$.0f webpages."] = "Has assolit el teu limit de %1$.0f pàgines web.";
-App::$strings["No such group"] = "No existeix el grup";
-App::$strings["No such channel"] = "No existeix el canal";
-App::$strings["Search Results For:"] = "Cerca resultats per:";
-App::$strings["Collection is empty"] = "La coŀlecció és buida";
-App::$strings["Collection: "] = "Coŀlecció:";
-App::$strings["Connection: "] = "Connexió:";
-App::$strings["Invalid connection."] = "La connexió és invàlida.";
-App::$strings["No channel."] = "No s'ha trobat el canal";
-App::$strings["Common connections"] = "Connexions en comú";
-App::$strings["No connections in common."] = "No hi ha connexions en comú.";
-App::$strings["This site is not a directory server"] = "Aquest lloc web no és un servidor de directori";
-App::$strings["Could not access contact record."] = "No s'ha pogut accedir al llibre de contactes.";
-App::$strings["Could not locate selected profile."] = "No s'ha trobat el perfil indicat.";
-App::$strings["Connection updated."] = "S'ha actualitzat la connexió.";
-App::$strings["Failed to update connection record."] = "No s'ha pogut actualitzar el registre de connexió.";
-App::$strings["Blocked"] = "Bloquejades";
-App::$strings["Ignored"] = "Ignorades";
-App::$strings["Hidden"] = "Amagades";
-App::$strings["Archived"] = "Arxivades";
-App::$strings["Suggest new connections"] = "Suggereix noves connexions";
-App::$strings["New Connections"] = "Noves Connexions";
-App::$strings["Show pending (new) connections"] = "Mostra les connexions pendents (noves)";
-App::$strings["All Connections"] = "Totes les Connexions";
-App::$strings["Show all connections"] = "Mostra totes les connexions";
-App::$strings["Unblocked"] = "No bloquejades";
-App::$strings["Only show unblocked connections"] = "Mostra només les connexions no bloquejades";
-App::$strings["Only show blocked connections"] = "Mostra només les connexions bloquejades";
-App::$strings["Only show ignored connections"] = "Mostra només les connexions ignorades";
-App::$strings["Only show archived connections"] = "Mostra només les connexions arxivades";
-App::$strings["Only show hidden connections"] = "Mostra només les connexions amagades";
-App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-App::$strings["Edit connection"] = "Modifica la connexió";
-App::$strings["Search your connections"] = "Cerca entre les teves connexions";
-App::$strings["Finding: "] = "Cercant:";
-App::$strings["Block Name"] = "Nom del Bloc";
-App::$strings["Block Title"] = "Títol del bloc";
-App::$strings["Item not found"] = "No s'ha trobat l'element";
-App::$strings["Item is not editable"] = "Article no editable";
-App::$strings["Delete item?"] = "Esborrar ítem";
-App::$strings["Insert YouTube video"] = "insereix video YouTube";
-App::$strings["Insert Vorbis [.ogg] video"] = "Insereix video Vorbis [.ogg]";
-App::$strings["Insert Vorbis [.ogg] audio"] = "Insereix audio Vorbis [.ogg]";
-App::$strings["\$Projectname - Guests: Username: {your email address}, Password: +++"] = "\$Projectname - Convidats: Nom d'usuari: {el teu correu electrònic}, Contrasenya: +++";
-App::$strings["Page owner information could not be retrieved."] = "La informació del propietari de la pàgina no va poder ser recuperada";
-App::$strings["Album not found."] = "Àlbum no trobat";
-App::$strings["Delete Album"] = "Esborra Àlbum";
-App::$strings["Delete Photo"] = "Esborra Foto";
-App::$strings["No photos selected"] = "No has seleccionat fotos";
-App::$strings["Access to this item is restricted."] = "L'accés a aquest element esta restringit.";
-App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "S'estan fent servir %1$.2f MB de %2$.2f MB de l'espai per a imatges.";
-App::$strings["%1$.2f MB photo storage used."] = "S'estan fent servir %1$.2f MB de l'espai per a imatges.";
-App::$strings["Upload Photos"] = "Puja imatges";
-App::$strings["Enter a new album name"] = "Escriu el nom del nou àlbum";
-App::$strings["or select an existing one (doubleclick)"] = "o bé fes doble clic a un d'existent";
-App::$strings["Create a status post for this upload"] = "Genera una entrada a partir de la pujada";
-App::$strings["Album name could not be decoded"] = "No s'ha pogut descodificar el nom de l'àlbum";
-App::$strings["Contact Photos"] = "Imatges de contactes";
-App::$strings["Show Newest First"] = "Ordena de més nou a més antic";
-App::$strings["Show Oldest First"] = "Ordena de més antic a més nou";
-App::$strings["View Photo"] = "Mostra la imatge";
-App::$strings["Edit Album"] = "Modifica l'àlbum";
-App::$strings["Permission denied. Access to this item may be restricted."] = "S'ha denegat el permís. Pot ser que l'accés estigui restringit.";
-App::$strings["Photo not available"] = "La imatge no està disponible";
-App::$strings["Use as profile photo"] = "Fes-la imatge de perfil";
-App::$strings["Private Photo"] = "Imatge privada";
-App::$strings["View Full Size"] = "Mostra a mida completa";
-App::$strings["Edit photo"] = "Modifica la imatge";
-App::$strings["Rotate CW (right)"] = "Tomba cap a la dreta";
-App::$strings["Rotate CCW (left)"] = "Tomba cap a l'esquerra";
-App::$strings["Caption"] = "Llegenda";
-App::$strings["Add a Tag"] = "Afegeix una etiqueta";
-App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Exemple: @joan, @Paula_Peris, @mar@exemple.org";
-App::$strings["Flag as adult in album view"] = "Marca com a contingut adult";
-App::$strings["In This Photo:"] = "Hi apareixen:";
-App::$strings["Map"] = "Mapa";
-App::$strings["View Album"] = "Mostra'n l'àlbum";
-App::$strings["Recent Photos"] = "Imatges recents";
-App::$strings["Items tagged with: %s"] = "Elements etiquetats amb: %s";
-App::$strings["Search results for: %s"] = "Resultats de cerca per: %s";
-App::$strings["Profile Match"] = "Perfils compatibles";
-App::$strings["No keywords to match. Please add keywords to your default profile."] = "No tens paraules clau al perfil principal per poder cercar perfils semblants.";
-App::$strings["is interested in:"] = "té interès en:";
-App::$strings["No matches"] = "No s'han trobat perfils compatibles";
-App::$strings["Away"] = "Absent";
-App::$strings["Online"] = "En connexió";
-App::$strings["Select a bookmark folder"] = "Tria una carpeta d'interès";
-App::$strings["Save Bookmark"] = "Guarda Favorits";
-App::$strings["URL of bookmark"] = "URL de favorit";
-App::$strings["Description"] = "Descripció";
-App::$strings["Or enter new bookmark folder name"] = "O entra un nou nom de favorit";
-App::$strings["No more system notifications."] = "No hi ha més notificacions de sistema.";
-App::$strings["System Notifications"] = "Notificacions de sistema";
+App::$strings["Lorem Ipsum"] = "Lorem Ipsum";
App::$strings["network"] = "xarxa";
App::$strings["RSS"] = "RSS";
-App::$strings["Layout updated."] = "S'ha actualitzat la disposició.";
-App::$strings["Edit System Page Description"] = "Editor del Sistema de Descripció de Pàgines";
-App::$strings["Layout not found."] = "No s'ha trobat cap disposició de pàgina.";
-App::$strings["Module Name:"] = "Nom del mòdul:";
-App::$strings["Layout Help"] = "Ajuda per la disposició de pàgina";
-App::$strings["- select -"] = "- selecciona -";
-App::$strings["Your service plan only allows %d channels."] = "El teu paquet de serveis només admet %d canals.";
-App::$strings["Nothing to import."] = "No hi ha res a importar.";
-App::$strings["Unable to download data from old server"] = "No s'han pogut descarregar les dades del servidor antic";
-App::$strings["Imported file is empty."] = "El fitxer importat està buit.";
-App::$strings["The data provided is not compatible with this project."] = "Les dades subministrades no son compatibles amb aquest projecte.";
-App::$strings["Warning: Database versions differ by %1\$d updates."] = "Atenció: Les versions de la Base de Dades difereixen en %1\$d actualitzacions.";
-App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "No s'ha pogut importar el canal perquè l'identificador del canal no s'ha pogut duplicar en aquest servidor.";
-App::$strings["Channel clone failed. Import failed."] = "No s'ha pogut importar el canal perquè el canal no s'ha pogut clonar.";
-App::$strings["Cloned channel not found. Import failed."] = "No s'ha pogut importar el canal perquè el canal clonat no s'ha trobat.";
-App::$strings["You must be logged in to use this feature."] = "Has d'estar registrat per fer servir aquesta funcionalitat.";
-App::$strings["Import Channel"] = "Importa un canal";
-App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "Empra aquest formulari per importar un canal existent en un altre servidor/concentrador. Pots recuperar el canal des de l'antic servidor/concentrador via la xarxa o mitjançant un fitxer d'exportació";
-App::$strings["File to Upload"] = "Fitxer a pujar";
-App::$strings["Or provide the old server/hub details"] = "O proveeix els detalls de l'antic servidor/concentrador";
-App::$strings["Your old identity address (xyz@example.com)"] = "La teva adreça de canal antiga. El format és canal@exemple.org";
-App::$strings["Your old login email address"] = "La teva adreça de correu electrònic antiga";
-App::$strings["Your old login password"] = "La teva contrasenya antiga";
-App::$strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Per a qualsevol de les opcions, escull si vols fer primària l'adreça d'aquest hub o mantenir l'anterior com a primària. Podràs penjar entrades des de totes dues adreces, però per als fitxers, imatges i altres en cal una de primària.";
-App::$strings["Make this hub my primary location"] = "Fes d'aquest hub la meva ubicació primària";
-App::$strings["Import existing posts if possible (experimental - limited by available memory"] = "Importa les entrades existents si es possible (experimental - limitat per la memòria disponible";
-App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Aquest procès pot trigar minuts en completar. Si et plau envia el formulari només una vegada i manté aquesta pàgina oberta fins que finalitzi.";
-App::$strings["Delete layout?"] = "Esborra format?";
-App::$strings["Layout Description (Optional)"] = "Descripció del Format (Opcional)";
-App::$strings["Layout Name"] = "Nom del Format Gràfic";
-App::$strings["Edit Layout"] = "Edita Format Gràfic";
-App::$strings["You must be logged in to see this page."] = "Has d'estar identificat per a veure aquesta pàgina.";
-App::$strings["Room not found"] = "No s'ha trobat la sala";
-App::$strings["Leave Room"] = "Abandona la sala";
-App::$strings["Delete This Room"] = "Elimina la sala";
-App::$strings["I am away right now"] = "Absent";
-App::$strings["I am online"] = "Estic connectat/da";
-App::$strings["Bookmark this room"] = "Fes favorit aquest xat";
-App::$strings["New Chatroom"] = "Nova sala per a Xerrar";
-App::$strings["Chatroom Name"] = "Nom del Xat";
-App::$strings["%1\$s's Chatrooms"] = "%1\$s de Xats";
-App::$strings["Menu not found."] = "Menú no trobat.";
-App::$strings["Unable to create element."] = "Incapaç de crear l'element.";
-App::$strings["Unable to update menu element."] = "Incapaç d'actualitzar un element del menú.";
-App::$strings["Unable to add menu element."] = "Incapaç d'afegir l'element del menú.";
-App::$strings["Menu Item Permissions"] = "Permisos de l'Article del Menú";
-App::$strings["(click to open/close)"] = "(clica per obrir/tancar)";
-App::$strings["Link Name"] = "Nom de l'Enllaç";
-App::$strings["Link or Submenu Target"] = "Enllaç o Submenú Objectiu";
-App::$strings["Enter URL of the link or select a menu name to create a submenu"] = "Entra la URL de l'enlla´o tria un nom de menú per crear un submenú";
-App::$strings["Use magic-auth if available"] = "Empra magic-auth si esta disponible";
-App::$strings["Open link in new window"] = "Obrir l'enllaç en una nova finestra";
-App::$strings["Order in list"] = "Ordre per llista";
-App::$strings["Higher numbers will sink to bottom of listing"] = "Els números més alts aniràn al fons de la llista";
-App::$strings["Submit and finish"] = "Envia i termina";
-App::$strings["Submit and continue"] = "Envia i continua";
-App::$strings["Menu:"] = "Menú:";
-App::$strings["Link Target"] = "Enllaç Objectiu";
-App::$strings["Edit menu"] = "Edita menú";
-App::$strings["Edit element"] = "Edita element";
-App::$strings["Drop element"] = "Deixa anar element";
-App::$strings["New element"] = "Nou element";
-App::$strings["Edit this menu container"] = "Edita aquest contenidor de menú";
-App::$strings["Add menu element"] = "Afegeix element de menú";
-App::$strings["Delete this menu item"] = "Esborra aquest article del menú";
-App::$strings["Edit this menu item"] = "Edita aquest article del menú";
-App::$strings["Menu item not found."] = "Article del menú no trobat.";
-App::$strings["Menu item deleted."] = "Article del menú eliminat.";
-App::$strings["Menu item could not be deleted."] = "Article del menú no es pot eliminar.";
-App::$strings["Edit Menu Element"] = "Editar Element del Menú";
-App::$strings["Link text"] = "Enllaç de text";
-App::$strings["Delete webpage?"] = "Esborrar pàgina web?";
-App::$strings["Page link title"] = "Títol de la pàgina enllaçada";
-App::$strings["Edit Webpage"] = "Edita la Pàgina Web";
-App::$strings["This directory server requires an access token"] = "Aquest servidor de directori requereix un token de accès";
-App::$strings["No valid account found."] = "No es troba un compte vàlid.";
-App::$strings["Password reset request issued. Check your email."] = "Sol·licitud de restabliment de contrasenya emesa. Consulta el teu correu electrònic.";
-App::$strings["Site Member (%s)"] = "Lloc d'Usuari (%s)";
-App::$strings["Password reset requested at %s"] = "S'ha soŀlicitat restablir la contrasenya al hub %s";
-App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Ha fallat el restabliment de contrasenya perquè la no s'ha pogut verificar soŀlicitud. Pot ser que ja ho hàgiu soŀlicitat abans.";
-App::$strings["Password Reset"] = "Restabliment de contrasenya";
-App::$strings["Your password has been reset as requested."] = "S'ha restablert la vostra contrasenya.";
-App::$strings["Your new password is"] = "La nova contrasenya és";
-App::$strings["Save or copy your new password - and then"] = "Desa o copia la nova contrasenya, i després";
-App::$strings["click here to login"] = "fes clic aquí per iniciar sessió";
-App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Pots canviar la contrasenya a la pàgina <em>Paràmetres</em>, un cop iniciada la sessió.";
-App::$strings["Your password has changed at %s"] = "La teva contrasenya a %s ha canviat";
-App::$strings["Forgot your Password?"] = "No recordes la contrasenya?";
-App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Escriu la teva adreça de correu electrònic i envia per restablir la contrasenya. Després revisa el seu correu electrònic per obtenir més instruccions.";
-App::$strings["Email Address"] = "Adreça electrònica";
-App::$strings["Reset"] = "Reajustar";
-App::$strings["Website:"] = "Lloc web:";
-App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Canal Remot [%s] (encara no es coneix en aquest lloc)";
-App::$strings["Rating (this information is public)"] = "Valoració (aquesta informació és pública)";
-App::$strings["Optionally explain your rating (this information is public)"] = "Opcionalment pots explicar la teva qualificació (aquesta informació és pública)";
-App::$strings["Delete block?"] = "Eliminar bloc?";
-App::$strings["Edit Block"] = "Editar Bloc";
-App::$strings["Total invitation limit exceeded."] = "El límit total invitacions s'ha superat.";
-App::$strings["%s : Not a valid email address."] = "%s: adreça de correu electrònic no vàlida.";
-App::$strings["Please join us on Red"] = "Si us plau, uneix-te a Red";
-App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Límit d'invitacions excedit. Si us plau, poseu-vos en contacte amb l'administrador del lloc.";
-App::$strings["%s : Message delivery failed."] = "%s : Entrega del Missatge fallida.";
-App::$strings["%d message sent."] = array(
- 0 => "%d missatge enviat.",
- 1 => "%d missatges enviats.",
-);
-App::$strings["You have no more invitations available"] = "No té més invitacions disponibles";
-App::$strings["Send invitations"] = "Enviar invitacions";
-App::$strings["Enter email addresses, one per line:"] = "Introduïu les adreces de correu electrònic, una per línia:";
-App::$strings["Your message:"] = "El teu missatge:";
-App::$strings["Please join my community on \$Projectname."] = "Si us plau uneix-te la meva comunitat en \$Projectname.";
-App::$strings["You will need to supply this invitation code: "] = "Has de proporcionar aquest codi d'invitació:";
-App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Registre en qualsevol lloc del \$Projectname (estàn tots interconnectats)";
-App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Entra a la meva adreça de xarxa al \$Projectname, a la barra de cerca del lloc.";
-App::$strings["or visit "] = "o visita";
-App::$strings["3. Click [Connect]"] = "3. Click [Conectar]";
-App::$strings["Location not found."] = "Situació que no es troba.";
-App::$strings["Primary location cannot be removed."] = "La ubicació primària no es pot treure.";
-App::$strings["No locations found."] = "No es troben els llocs.";
-App::$strings["Manage Channel Locations"] = "Gestionar Ubicacions de Canal";
-App::$strings["Location (address)"] = "Ubicació (direcció)";
-App::$strings["Primary Location"] = "Ubicació Primària";
-App::$strings["Drop location"] = "Treure la ubicació";
-App::$strings["Failed to create source. No channel selected."] = "Error en crear l'origen. Cap canal seleccionat.";
-App::$strings["Source created."] = "Origen creat.";
-App::$strings["Source updated."] = "Origen actualitzat.";
-App::$strings["*"] = "*";
-App::$strings["Manage remote sources of content for your channel."] = "Gestiona contingut per al teu canal d'origens remots";
-App::$strings["New Source"] = "Nou Origen";
-App::$strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importar tot o sel·lecciona contingut dels següents canals, en aquest canal i distribueix-lo d'acord als teus ajustos de canals.";
-App::$strings["Only import content with these words (one per line)"] = "Només importa contingut amb aquestes paraules (una per línia)";
-App::$strings["Leave blank to import all public content"] = "Deixar en blanc per importar tot el contingut públic";
-App::$strings["Channel Name"] = "Nom del canal";
-App::$strings["Source not found."] = "No s'ha trobat la font.";
-App::$strings["Edit Source"] = "Edita la font";
-App::$strings["Delete Source"] = "Esborra la font";
-App::$strings["Source removed"] = "S'ha esborrat la font";
-App::$strings["Unable to remove source."] = "No s'ha pogut esborrar la font.";
-App::$strings["Unable to update menu."] = "No s'ha pogut actualitzar el menú.";
-App::$strings["Unable to create menu."] = "No s'ha pogut crear el menú.";
-App::$strings["Menu Name"] = "Nom del menú";
-App::$strings["Unique name (not visible on webpage) - required"] = "Nom únic (no visible a la pàgina web) - requerit";
-App::$strings["Menu Title"] = "Títol del menú";
-App::$strings["Visible on webpage - leave empty for no title"] = "Visible a la pàgina web - deixar buit per a no posar títol";
-App::$strings["Allow Bookmarks"] = "Permetre Marcadors";
-App::$strings["Menu may be used to store saved bookmarks"] = "El menú es pot emprar per a guardar marcadors";
-App::$strings["Submit and proceed"] = "Envia i procedeix";
-App::$strings["Drop"] = "Menysprea";
-App::$strings["Bookmarks allowed"] = "Marcadors permesos";
-App::$strings["Delete this menu"] = "Esborra el menú";
-App::$strings["Edit menu contents"] = "Edita el contingut del menú";
-App::$strings["Edit this menu"] = "Edita el menú";
-App::$strings["Menu could not be deleted."] = "El menu no es pot esborrar.";
-App::$strings["Edit Menu"] = "Edita Menú";
-App::$strings["Add or remove entries to this menu"] = "Afegeix o esborra entrades a aquest menú";
-App::$strings["Menu name"] = "Nom del Menú";
-App::$strings["Must be unique, only seen by you"] = "Ha de ser únic, nomes vist per tú";
-App::$strings["Menu title"] = "Títol del menú";
-App::$strings["Menu title as seen by others"] = "Títol del menú vist pels altres";
-App::$strings["Allow bookmarks"] = "Marcadors permesos";
-App::$strings["Permission Denied."] = "Permisos Denegats.";
-App::$strings["File not found."] = "Arxiu no torbat.";
-App::$strings["Edit file permissions"] = "Edita els permisos d'arxiu";
-App::$strings["Set/edit permissions"] = "Canvia/edita permisos";
-App::$strings["Include all files and sub folders"] = "Inclou tots als arxius i subdirectoris";
-App::$strings["Return to file list"] = "Tornar al llistat d'arxius";
-App::$strings["Copy/paste this code to attach file to a post"] = "Copia/enganxa aquest codi per a adjuntar un arxiu a l'entrada";
-App::$strings["Copy/paste this URL to link file from a web page"] = "Copia/enganxa aquesta URL per a enllaçar l'arxiu d'una pàgina web";
-App::$strings["Share this file"] = "Comparteix l'arxiu";
-App::$strings["Show URL to this file"] = "Mostra la URL d'aquest arxiu";
-App::$strings["Notify your contacts about this file"] = "Notifica als teus contactes aquest arxiu";
-App::$strings["Contact not found."] = "Contacte no trobat.";
-App::$strings["Friend suggestion sent."] = "Suggeriment d'amistat enviada.";
-App::$strings["Suggest Friends"] = "Amics Suggerits";
-App::$strings["Suggest a friend for %s"] = "Suggereix un amic per a %s";
-App::$strings["Hub not found."] = "Concentrador no trobat.";
-App::$strings["Poke/Prod"] = "Emprenyat/Picat";
-App::$strings["poke, prod or do other things to somebody"] = "emprenyar, picar o fer altres coses a algú";
-App::$strings["Recipient"] = "Destinatari";
-App::$strings["Choose what you wish to do to recipient"] = "Tria que vols fer amb el destinatari";
-App::$strings["Make this post private"] = "Fer aquesta entrada privada";
-App::$strings["Invalid profile identifier."] = "Identificador invàlid de perfil.";
-App::$strings["Profile Visibility Editor"] = "Perfil del Editor de Visibilitat";
-App::$strings["Click on a contact to add or remove."] = "Clica sobre el contacte per afegir o esborrar.";
-App::$strings["Visible To"] = "Visible per";
-App::$strings["%s element installed"] = "%s element instal·lat";
-App::$strings["%s element installation failed"] = "%s instal·lació d'element va fallar";
-App::$strings["Profile not found."] = "Perfil no trobat.";
-App::$strings["Profile deleted."] = "Perfil eliminat.";
-App::$strings["Profile-"] = "Perfil-";
-App::$strings["New profile created."] = "Nou perfil creat.";
-App::$strings["Profile unavailable to clone."] = "Perfil que no es pot clonar.";
-App::$strings["Profile unavailable to export."] = "Perfil que no es pot exportar.";
-App::$strings["Profile Name is required."] = "Es requereix el Nom del Perfil.";
-App::$strings["Marital Status"] = "Estat Marital";
-App::$strings["Romantic Partner"] = "Company/a Romàntic";
-App::$strings["Likes"] = "Agrada";
-App::$strings["Dislikes"] = "Desagrada";
-App::$strings["Work/Employment"] = "Treball/Feina";
-App::$strings["Religion"] = "Religió";
-App::$strings["Political Views"] = "Idees Polítiques";
-App::$strings["Gender"] = "Gènere";
-App::$strings["Sexual Preference"] = "Preferència Sexual";
-App::$strings["Homepage"] = "Pàgina Personal";
-App::$strings["Interests"] = "Interessos";
-App::$strings["Address"] = "Adreça";
-App::$strings["Profile updated."] = "Perfil actualitzat.";
-App::$strings["Hide your contact/friend list from viewers of this profile?"] = "Amaga la teva llista de contactes/amics dels visitadors d'aquest perfil?";
-App::$strings["Edit Profile Details"] = "Edita els Detalls del Perfil";
-App::$strings["View this profile"] = "Veure aquest perfil";
-App::$strings["Change Profile Photo"] = "Canviar Foto del Perfil";
-App::$strings["Create a new profile using these settings"] = "Crea un perfil nou amb aquests ajustos";
-App::$strings["Clone this profile"] = "Clonar aquest perfil";
-App::$strings["Delete this profile"] = "Elimina aquest perfil";
-App::$strings["Import profile from file"] = "Importa perfil des d'un arxiu";
-App::$strings["Export profile to file"] = "Exporta perfil a un arxiu";
-App::$strings["Profile Name:"] = "Nom del Perfil:";
-App::$strings["Your Full Name:"] = "El Teu Nom Complet";
-App::$strings["Title/Description:"] = "Títol/Descripció:";
-App::$strings["Your Gender:"] = "El Teu Gènere:";
-App::$strings["Birthday :"] = "Aniversari:";
-App::$strings["Street Address:"] = "Carrer:";
-App::$strings["Locality/City:"] = "Població/Ciutat:";
-App::$strings["Postal/Zip Code:"] = "Codi Postal:";
-App::$strings["Country:"] = "País:";
-App::$strings["Region/State:"] = "Regió/Estat:";
-App::$strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Marital Estatus:";
-App::$strings["Who: (if applicable)"] = "Qui: (si es aplicable)";
-App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Examples: cathy123, Cathy Williams, cathy@example.com";
-App::$strings["Since [date]:"] = "Des de [data]:";
-App::$strings["Homepage URL:"] = "Pàgina Personal URL:";
-App::$strings["Religious Views:"] = "Creences Religioses:";
-App::$strings["Keywords:"] = "Paraules Clau:";
-App::$strings["Example: fishing photography software"] = "Exemple: software de fotografia submarina";
-App::$strings["Used in directory listings"] = "Emprat en els llistats de directoris";
-App::$strings["Tell us about yourself..."] = "Quelcom sobre tú:";
-App::$strings["Hobbies/Interests"] = "Aficions/Interessos";
-App::$strings["Contact information and Social Networks"] = "Informació de Contacte i Xarxes Socials";
-App::$strings["My other channels"] = "Els meus altres canals";
-App::$strings["Musical interests"] = "Interessos Musicals";
-App::$strings["Books, literature"] = "Llibres, literatura";
-App::$strings["Television"] = "Televisió";
-App::$strings["Film/dance/culture/entertainment"] = "Pel·lícules/Dansa/Cultura/Entreteniment";
-App::$strings["Love/romance"] = "Amor/Romace";
-App::$strings["Work/employment"] = "Treball/feina";
-App::$strings["School/education"] = "Escola/educació";
-App::$strings["This is your default profile."] = "Aquest es el teu perfil per defecte";
-App::$strings["Age: "] = "Edat:";
-App::$strings["Edit/Manage Profiles"] = "Edita/Gestiona Perfils";
-App::$strings["Add profile things"] = "Afegeix coses al perfil";
-App::$strings["Include desirable objects in your profile"] = "Inclou objectius desitjables al teu perfil";
-App::$strings["No ratings"] = "No valorat";
-App::$strings["Ratings"] = "Valoracions";
-App::$strings["Rating: "] = "Valoració:";
-App::$strings["Website: "] = "Lloc web:";
-App::$strings["Description: "] = "Descripció:";
-App::$strings["Source of Item"] = "Origen de l'article";
-App::$strings["\$Projectname Server - Setup"] = "Servidor \$Projectname - Configuració";
-App::$strings["Could not connect to database."] = "No puc connectar amb la base de dades";
-App::$strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "No s'ha pogut connectar a l'URL del lloc especificat. Possible problema amb el certificat SSL o de DNS.";
-App::$strings["Could not create table."] = "No puc crear la taula.";
-App::$strings["Your site database has been installed."] = "La teva base de dades del lloc s'ha instal·lat.";
-App::$strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "Podria ser necessari importar el fitxer \"install / schema_xxx.sql\" manualment utilitzant un client de base de dades.";
-App::$strings["Please see the file \"install/INSTALL.txt\"."] = "Si us plau, consulteu el fitxer \"install / INSTALL.txt\".";
-App::$strings["System check"] = "Comprovació del sistema";
-App::$strings["Check again"] = "Comprova de nou";
-App::$strings["Database connection"] = "Connexió de base de dades";
-App::$strings["In order to install \$Projectname we need to know how to connect to your database."] = "Per tal d'instaŀlar \$Projectname cal configurar la connexió a la base de dades.";
-App::$strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Si us plau, poseu-vos en contacte amb el proveïdor de serveis o administrador del lloc si vostè té preguntes sobre aquests paràmetres.";
-App::$strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "La base de dades s'especifica a continuació ja ha d'existir. Si no és així, si us plau crear-la abans de continuar.";
-App::$strings["Database Server Name"] = "Base de Dades Nom del Servidor";
-App::$strings["Default is localhost"] = "Per defecte es localhost";
-App::$strings["Database Port"] = "Port per a la Base de Dades";
-App::$strings["Communication port number - use 0 for default"] = "Numero del port de comunicacions - empra 0 per defecte";
-App::$strings["Database Login Name"] = "Base de Dades Nom d'Accès";
-App::$strings["Database Login Password"] = "Base de Dades Contrasenya d'Accès";
-App::$strings["Database Name"] = "Nom de la Base de Dades";
-App::$strings["Database Type"] = "Tipus de Base de Dades";
-App::$strings["Site administrator email address"] = "Adreça de correu de l'administrador del lloc";
-App::$strings["Your account email address must match this in order to use the web admin panel."] = "El teu compte de email ha de coincidir amb això per poder emprar el panel web d'administrador.";
-App::$strings["Website URL"] = "URL del lloc web";
-App::$strings["Please use SSL (https) URL if available."] = "Si us plau, empra SSL (https) URL si està disponible.";
-App::$strings["Please select a default timezone for your website"] = "Si us plau, tria la zona horària del teu lloc web";
-App::$strings["Site settings"] = "Ajustos del lloc";
-App::$strings["Could not find a command line version of PHP in the web server PATH."] = "No s'ha pogut trobar una versió de línia d'ordres del PHP en el PATH del servidor web.";
-App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Si vostè no té una versió de línia d'ordres del PHP instal·lada al servidor, vostè no serà capaç d'executar sondejos en segon pla via cron.";
-App::$strings["PHP executable path"] = "Camí cap l'executable de PHP";
-App::$strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Introdueix el camí cap l'executable de php. Pots deixa-ho en blanc i continuar l'instal·lació.";
-App::$strings["Command line PHP"] = "Línia d'ordres de PHP";
-App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "La versió de línia d'ordres de PHP al teu sistema no te el \"register_argc_argv\" activat.";
-App::$strings["This is required for message delivery to work."] = "Això es requereix per que funcioni l'entrega de missatges.";
-App::$strings["PHP register_argc_argv"] = "PHP register_argc_argv";
-App::$strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "La mida màxima que se't permet pujar està establerta en %s. La mida màxima per arxiu pujat es de %s. Se't permet pujar fins a %d arxius d'una vegada.";
-App::$strings["You can adjust these settings in the servers php.ini."] = "Pots ajustar aquests valors a l'arxiu php.ini del servidor";
-App::$strings["PHP upload limits"] = "Límits de pujada de PHP";
-App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Error: la funció \"openssl_pkey_new\" en aquest sistema no es capaç de generar claus d'encriptació";
-App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Si esta funcionant sota Windows, per favor, miri \"http://www.php.net/manual/en/openssl.installation.php\".";
-App::$strings["Generate encryption keys"] = "Generar claus de xifrat";
-App::$strings["libCurl PHP module"] = "mòdul PHP libCurl ";
-App::$strings["GD graphics PHP module"] = "mòdul PHP GD gràfics";
-App::$strings["OpenSSL PHP module"] = "mòdul PHP OpenSSL";
-App::$strings["mysqli or postgres PHP module"] = "mòdul PHP mysqli o postgres";
-App::$strings["mb_string PHP module"] = "mòdul PHP mb_string";
-App::$strings["mcrypt PHP module"] = "mòdul PHP mcrypt";
-App::$strings["xml PHP module"] = "Mòdul xml de PHP";
-App::$strings["Apache mod_rewrite module"] = "mòdul Apache mod_rewrite";
-App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Error: el mòdul mod-rewrite del servidor web Apache es requereix i no està instal·lat.";
-App::$strings["proc_open"] = "proc_open";
-App::$strings["Error: proc_open is required but is either not installed or has been disabled in php.ini"] = "Error: es requereix proc_open però o no està instal·lat o ha estat desactivat a php.ini";
-App::$strings["Error: libCURL PHP module required but not installed."] = "Error: el mòdul PHP libCURL es requereix però no està instal·lat.";
-App::$strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Error: el mòdul PHP GD graphics amb support JPEG es requereix però no està instal·lat.";
-App::$strings["Error: openssl PHP module required but not installed."] = "Error: el mòdul PHP openssl es requereix però no està instal·lat.";
-App::$strings["Error: mysqli or postgres PHP module required but neither are installed."] = "Error: el mòdul PHO mysqli o postgres es requereix però no està instal·lat.";
-App::$strings["Error: mb_string PHP module required but not installed."] = "Error: el mòdul PHP mb_string es requereix però no està instal·lat.";
-App::$strings["Error: mcrypt PHP module required but not installed."] = "Error: el mòdul PHP mcrypt es requereix però no està instal·lat.";
-App::$strings["Error: xml PHP module required for DAV but not installed."] = "Error: el mòdul xml de PHP es requereix per DAV però no està instal·lat.";
-App::$strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "L'instaŀlador ha de poder crear i modificar un fitxer anomenat «.htconfig.php» a la carpeta arrel del servidor, però sembla que no ho pot fer.";
-App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Això sol ser un problema de permisos. Per molt que el teu usuari pugui modificar-lo, és el del servidor web qui necessita els poders de modificació.";
-App::$strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Al final d'aquest procés hauràs de desar un text a l'arxiu «.htconfig.php», que es troba a la carpeta arrel del servidor.";
-App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Aquest procés és opcional. Per a fer una instaŀlació manual consulta les instruccions a «install/INSTALL.txt\".";
-App::$strings[".htconfig.php is writable"] = "L'arxiu «.htconfig.php» es pot modificar";
-App::$strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red fa servir el motor de plantilles Smarty3 per a renderitzar les vistes més ràpidament.";
-App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "Per tal de guardar aquestes plantilles compilades, el servidor web necessita tenir premis d'escriptura en el directori %s sota la carpeta principal de Red.";
-App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Comprova que l'usuari que executa el servidor (www-data en Apache) té permisos d'escriptura en aquesta carpeta.";
-App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Nota: com a mesura de seguretat l'usuari del servidor web ha de tenir accés d'escriptura només a %s, i no a les plantilles (.tpl) que conté.";
-App::$strings["%s is writable"] = "Es pot escriure a %s";
-App::$strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "Red fa servir la carpeta «store» per a desar els fitxers pujats. Per tant, el servidor web necessita tenir permís d'escriptura en aquesta carpeta, que està a l'arrel del servidor web.";
-App::$strings["store is writable"] = "Es pot escriure al magatzem (store)";
-App::$strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "El certificat SSL no s'ha pogut validar. Arregla-ho o deshabilita l'accés https a aquest lloc";
-App::$strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Si tens accès pet https al teu lloc web o permets connexions pel port TCP 443 (port https), Has d'emprar un certificat VÀLID. NO es poden emprar certificats AUTO-SIGNATS!";
-App::$strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "El motiu d'aquesta restricció és que les teves entrades públiques poden contenir referències a imatges del teu propi hub.";
-App::$strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Si el teu certificat no és reconegut, llavors el membres d'altres hubs, encara que tinguin certificats vàlids, rebran una advertència de seguretat en carregar contingut teu.";
-App::$strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Per tant, com que perjudica la usabilitat més enllà del teu lloc, la restricció de tenir un certificat reconegut és molt important.";
-App::$strings["Providers are available that issue free certificates which are browser-valid."] = "Hi ha autoritats de certificació reconegudes que ofereixen certificats gratuïts.";
-App::$strings["SSL certificate validation"] = "Validació del certificat SSL";
-App::$strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "No es poden reescriure les URL a «.htaccess». Comprova la configuració del servidor:";
-App::$strings["Url rewrite is working"] = "Es poden reescriure les URL a «.htaccess»";
-App::$strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "L'arxiu de configuracio de la base de dades «.htconfig.php» no s'ha pogut modificar. El pots crear tu a l'arrel del servidor web amb el text de la caixa com a contingut.";
-App::$strings["Errors encountered creating database tables."] = "S'han produït errors mentre es creaven taules a la base de dades.";
-App::$strings["<h1>What next</h1>"] = "<h1>I ara què?</h1>";
-App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANT! Cal que configuris manualment una execució periòdica del \"poller\".";
-App::$strings["OpenID protocol error. No ID returned."] = "Error del protocol OpenID. No ha retornat ID";
-App::$strings["Welcome %s. Remote authentication successful."] = "Benvingut %s. Autenticació remota reeixida.";
-App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha etiquetat %3\$s de %2\$s amb %4\$s";
-App::$strings["Export Channel"] = "Exportar Canal";
-App::$strings["Export your basic channel information to a small file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new hub, but\tdoes not contain your content."] = "Exporta la informació bàsica del canal a un petit arxiu. Això actua com a còpia de recolzament de les teves connexions, permisos, perfil i dades bàsiques, les quals pots emprar per traslladar aquestes dades a una altre lloc/centre, però no conté el contingut del canal.";
-App::$strings["Export Content"] = "Exportar el Contingut";
-App::$strings["Export your channel information and all the content to a JSON backup. This backs up all of your connections, permissions, profile data and all of your content, but is generally not suitable for importing a channel to a new hub as this file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Exporta la informació del canal i tot el contingut a un arxiu de recolzament JSON. Això còpia totes les teves connexions, permisos, perfil i dades i tot el contingut, però normalment no es pot importar en un altre canal d'un nou lloc/centre donat que l'arxiu acostuma a ser MOLT gran. Si et plau, sigues pacient ja que pot trigar uns minuts a començar a baixar.";
-App::$strings["No connections."] = "Sense connexions.";
-App::$strings["Visit %s's profile [%s]"] = "Visita el perfil [%s] de %s";
-App::$strings["invalid target signature"] = "Signatura objectiu invàlida";
App::$strings["Theme settings updated."] = "Ajustos de tema actualitzats.";
App::$strings["Site"] = "Lloc";
App::$strings["Accounts"] = "Comptes";
@@ -1663,17 +1065,18 @@ App::$strings["Destination URL"] = "URL de Destí";
App::$strings["Mark hub permanently offline"] = "Marca el concentrador coma permanentment fora de línia";
App::$strings["Empty queue for this hub"] = "Cua buida per aquest concentrador";
App::$strings["Last known contact"] = "Últim contacte conegut";
-App::$strings["%s user blocked/unblocked"] = array(
- 0 => "%s usuari bloquejat/desbloquejat",
- 1 => "%s usuaris bloquejats/desbloquejats",
+App::$strings["%s account blocked/unblocked"] = array(
+ 0 => "S'ha [des]bloquejat %s usuari",
+ 1 => "S'han [des]bloquejat %s comptes",
);
-App::$strings["%s user deleted"] = array(
- 0 => "%s usuari esborrat",
- 1 => "%s usuaris esborrats",
+App::$strings["%s account deleted"] = array(
+ 0 => "S'ha esborrat %s compte",
+ 1 => "S'han esborrat %s comptes",
);
App::$strings["Account not found"] = "Compte no trobat";
-App::$strings["User '%s' blocked"] = "Usuari '%s' bloquejat";
-App::$strings["User '%s' unblocked"] = "Usuari '%s' desbloquejat";
+App::$strings["Account '%s' deleted"] = "S'ha esborrat el compte '%s'";
+App::$strings["Account '%s' blocked"] = "S'ha bloquejat el compte '%s'";
+App::$strings["Account '%s' unblocked"] = "S'ha desbloquejat el compte '%s'";
App::$strings["Users"] = "Usuaris";
App::$strings["select all"] = "Sel·leciona-ho tot";
App::$strings["User registrations waiting for confirm"] = "Registres d'usuaris pendents de confirmació";
@@ -1687,8 +1090,8 @@ App::$strings["Register date"] = "Data de registre";
App::$strings["Last login"] = "Darrera identificació";
App::$strings["Expires"] = "Expira";
App::$strings["Service Class"] = "Classe de Servei";
-App::$strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Tria els usuaris que s'esborraran!\\n\\nTotes les publicacions d'aquests usuaris en aquest lloc s'eliminaran de forma permanent!\\n\\nEstàs segur? ";
-App::$strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "L'usuari {0} sera esborrat!\\n\\nTotes les publicacions d'aquest usuari en aquest lloc s'eliminarà de forma permanent!\\n\\nEstas segur?";
+App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Els comptes seleccionats seran eliminats!\\n\\nTot el que hagin publicat en aquest lloc serà esborrat permanentment!\\n\\nN'estàs segur de continuar?";
+App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "L'usuari {0} serà eliminat!\\n\\nTot el que hagi publicat l'usuari en aquest lloc serà esborrat de permanentment!\\n\\nN'estàs segur?";
App::$strings["%s channel censored/uncensored"] = array(
0 => "%s canal censurat/no censurat",
1 => "%s canals censurats/no censurats",
@@ -1712,6 +1115,7 @@ App::$strings["Uncensor"] = "No censurat";
App::$strings["Allow Code"] = "Permet Codi";
App::$strings["Disallow Code"] = "No Permet Codi";
App::$strings["UID"] = "UID";
+App::$strings["Address"] = "Adreça";
App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Els canals sel·leccionats s'esborraran!\\n\\nTotes les publicacions d'aquests canals en aquest lloc s'eliminaran de forma permanent!\\n\\nEstàs segur? ";
App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "El canal {0} serà esborrat!\\n\\nTotes les publicacions d'aquest canal en aquest lloc s'eliminaran de forma permanent!\\n\\nEstàs segur?";
App::$strings["Plugin %s disabled."] = "Plugin %s desactivat.";
@@ -1741,8 +1145,401 @@ App::$strings["Help text"] = "Text d'ajuda";
App::$strings["Additional info (optional)"] = "Informació adicional (opcional)";
App::$strings["Field definition not found"] = "No es troba la definició del camp";
App::$strings["Edit Profile Field"] = "Camp d'Edició del Perfil";
+App::$strings["This setting requires special processing and editing has been blocked."] = "Aquest ajust requereix un procés espedial i l'edició esta bloquejada.";
+App::$strings["Configuration Editor"] = "Editor de Configuració";
+App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "atenció: Realitzar segons quins ajustos pot fer el canal inoperable. Deixa aquesta pàgina si no estas segur i tens suficients coneixements sobre l'ús correcte d'aquesta característica.";
+App::$strings["Authorize application connection"] = "Autoritza la connexió de l'aplicació";
+App::$strings["Return to your app and insert this Securty Code:"] = "Torna a la teva aplicació i insereix aquest Codi de Seguretat:";
+App::$strings["Please login to continue."] = "Si et plau, identifica't per continuar.";
+App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Vols autoritzar a aquesta aplicació l'accés a les teves entrades i contactes i/o a crear noves entrades com si fos tu mateix.";
+App::$strings["Layout updated."] = "S'ha actualitzat el disseny";
+App::$strings["Edit System Page Description"] = "Editor del Sistema de Descripció de Pàgines";
+App::$strings["Layout not found."] = "No s'ha trobat el disseny de pàgina.";
+App::$strings["Module Name:"] = "Nom del mòdul:";
+App::$strings["Layout Help"] = "Ajuda sobre el disseny de pàgina";
+App::$strings["App installed."] = "Aplicació instal·lada.";
+App::$strings["Malformed app."] = "Aplicació amb errors";
+App::$strings["Embed code"] = "Codi embegut";
+App::$strings["Edit App"] = "Edita l'Aplicació";
+App::$strings["Create App"] = "Crea l'Aplicació";
+App::$strings["Name of app"] = "Nom de l'Aplicació";
+App::$strings["Location (URL) of app"] = "Ubicació (URL) de l'aplicació";
+App::$strings["Description"] = "Descripció";
+App::$strings["Photo icon URL"] = "Foto icona URL";
+App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixels - opcional";
+App::$strings["Version ID"] = "Versió ID";
+App::$strings["Price of app"] = "Preu de l'aplicació";
+App::$strings["Location (URL) to purchase app"] = "Ubicació (URL) per comprar l'aplicació";
+App::$strings["Page owner information could not be retrieved."] = "La informació del propietari de la pàgina no va poder ser recuperada";
+App::$strings["Album not found."] = "Àlbum no trobat";
+App::$strings["Delete Album"] = "Esborra Àlbum";
+App::$strings["Delete Photo"] = "Esborra Foto";
+App::$strings["Public access denied."] = "Accés públic denegat.";
+App::$strings["No photos selected"] = "No has seleccionat fotos";
+App::$strings["Access to this item is restricted."] = "L'accés a aquest element esta restringit.";
+App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "Hi ha en ús %1$.2f MB de %2$.2f MB de l'espai d'imatges.";
+App::$strings["%1$.2f MB photo storage used."] = "Hi ha en ús %1$.2f MB de l'espai d'imatges.";
+App::$strings["Upload Photos"] = "Puja imatges";
+App::$strings["Enter a new album name"] = "Escriu el nom del nou àlbum";
+App::$strings["or select an existing one (doubleclick)"] = "o bé fes doble clic a un d'existent";
+App::$strings["Create a status post for this upload"] = "Genera una entrada a partir de la pujada";
+App::$strings["Album name could not be decoded"] = "No s'ha pogut descodificar el nom de l'àlbum";
+App::$strings["Contact Photos"] = "Imatges de contactes";
+App::$strings["Show Newest First"] = "Ordena de més nou a més antic";
+App::$strings["Show Oldest First"] = "Ordena de més antic a més nou";
+App::$strings["View Photo"] = "Mostra la imatge";
+App::$strings["Edit Album"] = "Modifica l'àlbum";
+App::$strings["Permission denied. Access to this item may be restricted."] = "S'ha denegat el permís. Pot ser que l'accés estigui restringit.";
+App::$strings["Photo not available"] = "La imatge no està disponible";
+App::$strings["Use as profile photo"] = "Fes-la imatge de perfil";
+App::$strings["Private Photo"] = "Imatge privada";
+App::$strings["Previous"] = "Anterior";
+App::$strings["View Full Size"] = "Mostra a mida completa";
+App::$strings["Next"] = "Pròxim";
+App::$strings["Remove"] = "Esborra";
+App::$strings["Edit photo"] = "Modifica la imatge";
+App::$strings["Rotate CW (right)"] = "Tomba cap a la dreta";
+App::$strings["Rotate CCW (left)"] = "Tomba cap a l'esquerra";
+App::$strings["Caption"] = "Llegenda";
+App::$strings["Add a Tag"] = "Afegeix una etiqueta";
+App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Exemple: @joan, @Paula_Peris, @mar@exemple.org";
+App::$strings["Flag as adult in album view"] = "Marca com a contingut adult";
+App::$strings["In This Photo:"] = "Hi apareixen:";
+App::$strings["Map"] = "Mapa";
+App::$strings["View Album"] = "Mostra'n l'àlbum";
+App::$strings["Recent Photos"] = "Imatges recents";
+App::$strings["Item not available."] = "Article no disponible.";
+App::$strings["sent you a private message"] = "Se t'ha enviat un missatge privat";
+App::$strings["added your channel"] = "el teu canal s'ha afegit";
+App::$strings["posted an event"] = "enviat un event";
+App::$strings["Block Name"] = "Nom del Bloc";
+App::$strings["Block Title"] = "Títol del bloc";
+App::$strings["Poke/Prod"] = "Emprenyat/Picat";
+App::$strings["poke, prod or do other things to somebody"] = "emprenyar, picar o fer altres coses a algú";
+App::$strings["Recipient"] = "Destinatari";
+App::$strings["Choose what you wish to do to recipient"] = "Tria que vols fer amb el destinatari";
+App::$strings["Make this post private"] = "Fer aquesta entrada privada";
+App::$strings["Bookmark added"] = "Favorit afegit";
+App::$strings["My Bookmarks"] = "Els Meus Favorits";
+App::$strings["My Connections Bookmarks"] = "Les connexions dels meus Favorits";
+App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Has creat %1$.0f de %2$.0f canals permesos.";
+App::$strings["Create a new channel"] = "Crear un nou canal";
+App::$strings["Current Channel"] = "Canal Actual";
+App::$strings["Switch to one of your channels by selecting it."] = "Canviar a un altre dels teus canals seleccionant-ho.";
+App::$strings["Default Channel"] = "Canal per Defecte";
+App::$strings["Make Default"] = "Estableix com a Predeterminat";
+App::$strings["%d new messages"] = "%d missatges nous";
+App::$strings["%d new introductions"] = "%d noves presentacions";
+App::$strings["Delegated Channels"] = "Canals Delegats";
+App::$strings["Profile Match"] = "Perfils compatibles";
+App::$strings["No keywords to match. Please add keywords to your default profile."] = "No tens paraules clau al perfil principal per poder cercar perfils semblants.";
+App::$strings["is interested in:"] = "té interès en:";
+App::$strings["No matches"] = "No s'han trobat perfils compatibles";
+App::$strings["Members"] = "Membres";
+App::$strings["All Connected Channels"] = "Tots els Canals Connectats";
+App::$strings["Click on a channel to add or remove."] = "Clic sobre el canal per afegir o esborrar.";
+App::$strings["Poll"] = "Enquesta";
+App::$strings["View Results"] = "Mostra els resultats";
+App::$strings["You must be logged in to see this page."] = "Has d'estar identificat per a veure aquesta pàgina.";
+App::$strings["Insufficient permissions. Request redirected to profile page."] = "Permisos insuficients. Petició redirigida a la pàgina del perfil.";
+App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Autenticació remota bloquejada. Ha iniciat sessió en aquest lloc a nivell local. Si us plau, tanca la sessió i torna-ho a intentar.";
+App::$strings["Welcome %s. Remote authentication successful."] = "Benvingut %s. Autenticació remota reeixida.";
+App::$strings["Room not found"] = "No s'ha trobat la sala";
+App::$strings["Leave Room"] = "Abandona la sala";
+App::$strings["Delete This Room"] = "Elimina la sala";
+App::$strings["I am away right now"] = "Absent";
+App::$strings["I am online"] = "Estic connectat/da";
+App::$strings["Bookmark this room"] = "Fes favorit aquest xat";
+App::$strings["New Chatroom"] = "Nova sala per a Xerrar";
+App::$strings["Chatroom Name"] = "Nom del Xat";
+App::$strings["%1\$s's Chatrooms"] = "%1\$s de Xats";
+App::$strings["Away"] = "Absent";
+App::$strings["Online"] = "En connexió";
+App::$strings["Fetching URL returns error: %1\$s"] = "URL sol·licitada retorna error: %1\$s";
+App::$strings["\$Projectname - Guests: Username: {your email address}, Password: +++"] = "\$Projectname - Convidats: Nom d'usuari: {el teu correu electrònic}, Contrasenya: +++";
+App::$strings["No channel."] = "No s'ha trobat el canal";
+App::$strings["Common connections"] = "Connexions en comú";
+App::$strings["No connections in common."] = "No hi ha connexions en comú.";
+App::$strings["Image uploaded but image cropping failed."] = "S'ha pujat la imatge però no s'ha pogut retallar.";
+App::$strings["Image resize failed."] = "No s'ha pogut escalar la imatge.";
+App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Refresca la memòria cau del navegador si la foto no s'actualitza immediatament. Dreceres: «Ctrl+F5» i «Ctrl+Maj+R»";
+App::$strings["Image exceeds size limit of %d"] = "La imatge excedeix la mida límit de %d";
+App::$strings["Unable to process image."] = "Incapaç de processar l'imatge.";
+App::$strings["Photo not available."] = "Foto no disponible.";
+App::$strings["Upload File:"] = "Puja Arxiu:";
+App::$strings["Select a profile:"] = "Tria un perfil:";
+App::$strings["Upload Profile Photo"] = "Puja una Foto pel Perfil";
+App::$strings["or"] = "o";
+App::$strings["skip this step"] = "salta aquest pas";
+App::$strings["select a photo from your photo albums"] = "tria una foto del teu àlbum de fotos";
+App::$strings["Crop Image"] = "Retalla Imatge";
+App::$strings["Please adjust the image cropping for optimum viewing."] = "Si us plau, retalla la imatge per a una optima visualització";
+App::$strings["Done Editing"] = "Edició Feta";
+App::$strings["Image uploaded successfully."] = "Imatge pujada exitosament.";
+App::$strings["Image upload failed."] = "La pujada de la imatge va fracassar.";
+App::$strings["Image size reduction [%s] failed."] = "La reducció de mida de la imatge [%s] va fracassar.";
+App::$strings["Continue"] = "Continua";
+App::$strings["Premium Channel Setup"] = "Configuració de Canals Premium";
+App::$strings["Enable premium channel connection restrictions"] = "Habilita les restriccions de connexió del canal premium";
+App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Si us plau, introdueixi les restriccions o condicions, com ara el rebut de PayPal, les pautes d'ús, etc.";
+App::$strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Aquest canal pot requerir passos addicionals o reconeixement de les següents condicions abans de connectar:";
+App::$strings["Potential connections will then see the following text before proceeding:"] = "Connexions potencials veuran el següent text abans de continuar:";
+App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "En continuar, certifico que he complert amb totes les instruccions proporcionades en aquesta pàgina.";
+App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(No s'han proporcionat instruccions específiques pel propietari del canal.)";
+App::$strings["Restricted or Premium Channel"] = "Canal Restringit o Premium";
+App::$strings["Invalid request identifier."] = "Sol·licitud d'identificació invàlida.";
+App::$strings["Discard"] = "Descarta";
+App::$strings["Ignore"] = "Ignora";
+App::$strings["No more system notifications."] = "No hi ha més notificacions de sistema.";
+App::$strings["System Notifications"] = "Notificacions de sistema";
+App::$strings["Blocked"] = "Bloquejades";
+App::$strings["Ignored"] = "Ignorades";
+App::$strings["Hidden"] = "Amagades";
+App::$strings["Archived"] = "Arxivades";
+App::$strings["Suggest new connections"] = "Suggereix noves connexions";
+App::$strings["New Connections"] = "Noves Connexions";
+App::$strings["Show pending (new) connections"] = "Mostra les connexions pendents (noves)";
+App::$strings["All Connections"] = "Totes les Connexions";
+App::$strings["Show all connections"] = "Mostra totes les connexions";
+App::$strings["Unblocked"] = "No bloquejades";
+App::$strings["Only show unblocked connections"] = "Mostra només les connexions no bloquejades";
+App::$strings["Only show blocked connections"] = "Mostra només les connexions bloquejades";
+App::$strings["Only show ignored connections"] = "Mostra només les connexions ignorades";
+App::$strings["Only show archived connections"] = "Mostra només les connexions arxivades";
+App::$strings["Only show hidden connections"] = "Mostra només les connexions amagades";
+App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
+App::$strings["Edit connection"] = "Modifica la connexió";
+App::$strings["Search your connections"] = "Cerca entre les teves connexions";
+App::$strings["Finding: "] = "Cercant:";
+App::$strings["Profile not found."] = "Perfil no trobat.";
+App::$strings["Profile deleted."] = "Perfil eliminat.";
+App::$strings["Profile-"] = "Perfil-";
+App::$strings["New profile created."] = "Nou perfil creat.";
+App::$strings["Profile unavailable to clone."] = "Perfil que no es pot clonar.";
+App::$strings["Profile unavailable to export."] = "Perfil que no es pot exportar.";
+App::$strings["Profile Name is required."] = "Es requereix el Nom del Perfil.";
+App::$strings["Marital Status"] = "Estat Marital";
+App::$strings["Romantic Partner"] = "Company/a Romàntic";
+App::$strings["Likes"] = "M'agrada";
+App::$strings["Dislikes"] = "No m'agrada";
+App::$strings["Work/Employment"] = "Treball/Feina";
+App::$strings["Religion"] = "Religió";
+App::$strings["Political Views"] = "Idees Polítiques";
+App::$strings["Gender"] = "Gènere";
+App::$strings["Sexual Preference"] = "Preferència Sexual";
+App::$strings["Homepage"] = "Pàgina Personal";
+App::$strings["Interests"] = "Interessos";
+App::$strings["Location"] = "Localització";
+App::$strings["Profile updated."] = "Perfil actualitzat.";
+App::$strings["Hide your contact/friend list from viewers of this profile?"] = "Amaga la teva llista de contactes/amics dels visitadors d'aquest perfil?";
+App::$strings["Edit Profile Details"] = "Edita els Detalls del Perfil";
+App::$strings["View this profile"] = "Veure aquest perfil";
+App::$strings["Change Profile Photo"] = "Canviar Foto del Perfil";
+App::$strings["Create a new profile using these settings"] = "Crea un perfil nou amb aquests ajustos";
+App::$strings["Clone this profile"] = "Clonar aquest perfil";
+App::$strings["Delete this profile"] = "Elimina aquest perfil";
+App::$strings["Import profile from file"] = "Importa perfil des d'un arxiu";
+App::$strings["Export profile to file"] = "Exporta perfil a un arxiu";
+App::$strings["Profile Name:"] = "Nom del Perfil:";
+App::$strings["Your Full Name:"] = "El Teu Nom Complet";
+App::$strings["Title/Description:"] = "Títol/Descripció:";
+App::$strings["Your Gender:"] = "El Teu Gènere:";
+App::$strings["Birthday :"] = "Aniversari:";
+App::$strings["Street Address:"] = "Carrer:";
+App::$strings["Locality/City:"] = "Població/Ciutat:";
+App::$strings["Postal/Zip Code:"] = "Codi Postal:";
+App::$strings["Country:"] = "País:";
+App::$strings["Region/State:"] = "Regió/Estat:";
+App::$strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Marital Estatus:";
+App::$strings["Who: (if applicable)"] = "Qui: (si es aplicable)";
+App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Examples: cathy123, Cathy Williams, cathy@example.com";
+App::$strings["Since [date]:"] = "Des de [data]:";
+App::$strings["Homepage URL:"] = "Pàgina Personal URL:";
+App::$strings["Religious Views:"] = "Creences Religioses:";
+App::$strings["Keywords:"] = "Paraules Clau:";
+App::$strings["Example: fishing photography software"] = "Exemple: software de fotografia submarina";
+App::$strings["Used in directory listings"] = "Emprat en els llistats de directoris";
+App::$strings["Tell us about yourself..."] = "Escriu unes línies sobre tu:";
+App::$strings["Hobbies/Interests"] = "Aficions/Interessos";
+App::$strings["Contact information and Social Networks"] = "Informació de Contacte i Xarxes Socials";
+App::$strings["My other channels"] = "Els meus altres canals";
+App::$strings["Musical interests"] = "Interessos Musicals";
+App::$strings["Books, literature"] = "Llibres, literatura";
+App::$strings["Television"] = "Televisió";
+App::$strings["Film/dance/culture/entertainment"] = "Pel·lícules/Dansa/Cultura/Entreteniment";
+App::$strings["Love/romance"] = "Amor/Romace";
+App::$strings["Work/employment"] = "Treball/feina";
+App::$strings["School/education"] = "Escola/educació";
+App::$strings["This is your default profile."] = "Aquest es el teu perfil per defecte";
+App::$strings["Age: "] = "Edat:";
+App::$strings["Edit/Manage Profiles"] = "Edita/Gestiona Perfils";
+App::$strings["Add profile things"] = "Afegeix coses al perfil";
+App::$strings["Include desirable objects in your profile"] = "Inclou objectius desitjables al teu perfil";
+App::$strings["Could not access contact record."] = "No s'ha pogut accedir al llibre de contactes.";
+App::$strings["Could not locate selected profile."] = "No s'ha trobat el perfil indicat.";
+App::$strings["Connection updated."] = "S'ha actualitzat la connexió.";
+App::$strings["Failed to update connection record."] = "No s'ha pogut actualitzar el registre de connexió.";
+App::$strings["is now connected to"] = "Ara està conectat amb";
+App::$strings["Could not access address book record."] = "No puc accedir al registre del contacte";
+App::$strings["Refresh failed - channel is currently unavailable."] = "Ha fallat la recàrrega - el canal es actualment inaccesible.";
+App::$strings["Unable to set address book parameters."] = "No es poden ajustar els paràmetres dels contactes.";
+App::$strings["Connection has been removed."] = "S'han eliminat les conexions.";
+App::$strings["View %s's profile"] = "Mostra el perfil de %s";
+App::$strings["Refresh Permissions"] = "Recarrega els Permissos";
+App::$strings["Fetch updated permissions"] = "Obté els permisos actualitzats";
+App::$strings["Recent Activity"] = "Activitat Recent";
+App::$strings["View recent posts and comments"] = "Mostra les entrades i comentaris recents";
+App::$strings["Block (or Unblock) all communications with this connection"] = "Boqueja (o Desbloqueja) les comunicacions amb aquesta connexió";
+App::$strings["This connection is blocked!"] = "Aquesta connexió està bloquejada!";
+App::$strings["Unignore"] = "Inhabilita";
+App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Ignora (o Considera) les communicacions entrants d'aquesta connexió";
+App::$strings["This connection is ignored!"] = "Aquesta connexió es ignorada!";
+App::$strings["Unarchive"] = "Desarxiva";
+App::$strings["Archive"] = "Arxiva";
+App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Arxiva (o Desarxiva) aquesta connexió - Marca el canal com a mort pero manté el contingut ";
+App::$strings["This connection is archived!"] = "Aquesta connexió està arxivada!";
+App::$strings["Unhide"] = "Mostra";
+App::$strings["Hide"] = "Amaga";
+App::$strings["Hide or Unhide this connection from your other connections"] = "Amaga (o Mostra) aquesta connexió de les altres connexions teves";
+App::$strings["This connection is hidden!"] = "Aquesta connexió està amagada!";
+App::$strings["Delete this connection"] = "Elimina aquesta connexió";
+App::$strings["Approve this connection"] = "Apccepta aquesta connexió";
+App::$strings["Accept connection to allow communication"] = "Accepta la connexió per permetre la comunicació";
+App::$strings["Set Affinity"] = "Ajusta l'Afinitat";
+App::$strings["Set Profile"] = "Ajusta el Perfil";
+App::$strings["Set Affinity & Profile"] = "Ajusta Afinitat i Perfil";
+App::$strings["Apply these permissions automatically"] = "Aplica aquests permissos automaticament";
+App::$strings["This connection's address is"] = "La direcció d'aquesta connexió es";
+App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Els permisos indicats en aquesta pàgina seran aplicats a totes les noves connexions.";
+App::$strings["Slide to adjust your degree of friendship"] = "Llisca per ajustar el nivell d'amistat";
+App::$strings["Slide to adjust your rating"] = "Llisca per ajustar la valoració";
+App::$strings["Optionally explain your rating"] = "Opcionalment pots explicar la teva valoració";
+App::$strings["Custom Filter"] = "Filtre a mida";
+App::$strings["Only import posts with this text"] = "Importa exclusivament entrades amb aquest text";
+App::$strings["words one per line or #tags or /patterns/, leave blank to import all posts"] = "paraules una per línia o #etiquetes o /patrons/, deixar en blanc per importar totes les entrades";
+App::$strings["Do not import posts with this text"] = "No importar entrades amb aquest text";
+App::$strings["This information is public!"] = "Aquesta informació es pública!";
+App::$strings["Connection Pending Approval"] = "Connexió Pendent d'Aprovació";
+App::$strings["Connection Request"] = "Petició de Connexió";
+App::$strings["(%s) would like to connect with you. Please approve this connection to allow communication."] = "(%s) voldria conectar amb tu. Aprova aquesta connexió per permetre la connexió.";
+App::$strings["Approve Later"] = "Aprovar més tard";
+App::$strings["inherited"] = "heretat";
+App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Tria el perfil que vols mostrar a %s quan es vegi el perfil segur.";
+App::$strings["Their Settings"] = "Els seus Ajustos";
+App::$strings["My Settings"] = "Els Meus Ajustos";
+App::$strings["Individual Permissions"] = "Permisos Individuals";
+App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Alguns permisos poden ser heretats dels teus canals <a href=\"settings\"><strong>ajustos de privacitat</strong></a>, Els quals tenen més prioritat que els ajustos individuals. <strong>No</strong> pots canviar aquests ajustos aquí.";
+App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Alguns permisos poden ser heretats dels teus canals <a href=\"settings\"><strong>ajustos de privacitat</strong></a>, Els quals tenen més prioritat que els ajustos individuals. <strong>Pots</strong> canviar aquests ajustos aquí pero no tindran cap impacte fins que no canviis els ajustos heretats.";
+App::$strings["Last update:"] = "Darrera actualització:";
+App::$strings["Invalid profile identifier."] = "Identificador invàlid de perfil.";
+App::$strings["Profile Visibility Editor"] = "Perfil del Editor de Visibilitat";
+App::$strings["Click on a contact to add or remove."] = "Clica sobre el contacte per afegir o esborrar.";
+App::$strings["Visible To"] = "Visible per";
+App::$strings["\$Projectname channel"] = "Canal de \$Projectname";
+App::$strings["%d rating"] = array(
+ 0 => "%d valoració",
+ 1 => "%d valoracions",
+);
+App::$strings["Gender: "] = "Gènere:";
+App::$strings["Status: "] = "Estatus:";
+App::$strings["Homepage: "] = "Pàgina Personal:";
+App::$strings["Description:"] = "Descripció:";
+App::$strings["Public Forum:"] = "Forum Públic:";
+App::$strings["Keywords: "] = "Paraules Clau:";
+App::$strings["Don't suggest"] = "No suggerir";
+App::$strings["Common connections:"] = "Connexions en comú:";
+App::$strings["Global Directory"] = "Directori Global";
+App::$strings["Local Directory"] = "Directori Local";
+App::$strings["Finding:"] = "Cercant:";
+App::$strings["next page"] = "pàgina següent";
+App::$strings["previous page"] = "pàgina anterior";
+App::$strings["Sort options"] = "Opcions per ordenar";
+App::$strings["Alphabetic"] = "Alfabètic";
+App::$strings["Reverse Alphabetic"] = "Alfabètic Invers";
+App::$strings["Newest to Oldest"] = "De més Nou a més Vell";
+App::$strings["Oldest to Newest"] = "De més Antic a més Nou";
+App::$strings["No entries (some entries may be hidden)."] = "Sense entrades (algunes podrien estar amagades).";
+App::$strings["Public Sites"] = "Llocs públics";
+App::$strings["The listed sites allow public registration for the \$Projectname network. All sites in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Els llocs llistats permeten registrar usuaris de la xarxa \$Projectname. Com que tots els llocs estan enllaçats entre ells, la identitat és vàlida a tota la xarxa. Alguns llocs poden demanar subscripció o oferir serveis addicional de pagament. Per a més detalls, proveu de seguir els enllaços dels proveïdors.";
+App::$strings["Rate this hub"] = "Valora aquest hub";
+App::$strings["Site URL"] = "Adreça URL del web";
+App::$strings["Access Type"] = "Tipus d'accés";
+App::$strings["Registration Policy"] = "Condicions de registre";
+App::$strings["Project"] = "Projecte";
+App::$strings["View hub ratings"] = "Mostra la valoració del hub";
+App::$strings["Rate"] = "Puntua";
+App::$strings["View ratings"] = "Mostra les valoracions";
+App::$strings["This site is not a directory server"] = "Aquest lloc web no és un servidor de directori";
+App::$strings["This directory server requires an access token"] = "Aquest servidor de directori requereix un token de accès";
+App::$strings["Item not found"] = "No s'ha trobat l'element";
+App::$strings["Delete block?"] = "Eliminar bloc?";
+App::$strings["Insert YouTube video"] = "insereix video YouTube";
+App::$strings["Insert Vorbis [.ogg] video"] = "Insereix video Vorbis [.ogg]";
+App::$strings["Insert Vorbis [.ogg] audio"] = "Insereix audio Vorbis [.ogg]";
+App::$strings["Edit Block"] = "Editar Bloc";
+App::$strings["Delete layout?"] = "Esborrar el disseny?";
+App::$strings["Layout Description (Optional)"] = "Descripció del disseny (opcional)";
+App::$strings["Layout Name"] = "Nom del disseny";
+App::$strings["Edit Layout"] = "Edita el disseny";
+App::$strings["Item is not editable"] = "Article no editable";
+App::$strings["Delete item?"] = "Esborrar ítem";
+App::$strings["Edit post"] = "Modifica l'entrada";
App::$strings["Unable to find your hub."] = "No es possible trobar el concentrador";
App::$strings["Post successful."] = "Entrada realitzada amb èxit. ";
+App::$strings["Delete webpage?"] = "Esborrar pàgina web?";
+App::$strings["Page link title"] = "Títol de la pàgina enllaçada";
+App::$strings["Edit Webpage"] = "Edita la Pàgina Web";
+App::$strings["Website:"] = "Lloc web:";
+App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Canal Remot [%s] (encara no es coneix en aquest lloc)";
+App::$strings["Rating (this information is public)"] = "Valoració (aquesta informació és pública)";
+App::$strings["Optionally explain your rating (this information is public)"] = "Opcionalment pots explicar la teva qualificació (aquesta informació és pública)";
+App::$strings["Calendar entries imported."] = "Entrades de Calendari importades.";
+App::$strings["No calendar entries found."] = "No es troben entrades decalendari.";
+App::$strings["Event can not end before it has started."] = "L'esdeveniment ha de començar abans d'acabar.";
+App::$strings["Unable to generate preview."] = "No s'ha pogut generar la vista prèvia.";
+App::$strings["Event title and start time are required."] = "Cal indicar l'inici i el final de l'esdeveniment.";
+App::$strings["Event not found."] = "No s'ha trobat l'esdeveniment.";
+App::$strings["l, F j"] = "I dia j, F";
+App::$strings["Edit event"] = "Edita l'esdeveniment";
+App::$strings["Delete event"] = "Esborra l'esdeveniment";
+App::$strings["calendar"] = "calendari";
+App::$strings["Create New Event"] = "Crea un esdeveniment nou";
+App::$strings["Export"] = "Exporta";
+App::$strings["Import"] = "Importar";
+App::$strings["Event removed"] = "S'ha eliminat l'esdeveniment";
+App::$strings["Failed to remove event"] = "No s'ha pogut esborrar l'esdeveniment";
+App::$strings["Event details"] = "Detalls de l'esdeveniment";
+App::$strings["Starting date and Title are required."] = "La data d'inici i el títol són obligatoris.";
+App::$strings["Categories (comma-separated list)"] = "Categories (llista separada per comes)";
+App::$strings["Event Starts:"] = "Inici:";
+App::$strings["Finish date/time is not known or not relevant"] = "La data i hora de final no és coneguda o irrellevant";
+App::$strings["Event Finishes:"] = "Final:";
+App::$strings["Adjust for viewer timezone"] = "Ajusta a la zona horària del visitant.";
+App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "És important per esdeveniments locals, però pels globals no és pràctic.";
+App::$strings["Title:"] = "Títol:";
+App::$strings["Share this event"] = "Comparteix aquest esdeveniment";
+App::$strings["No ratings"] = "No valorat";
+App::$strings["Ratings"] = "Valoracions";
+App::$strings["Rating: "] = "Valoració:";
+App::$strings["Website: "] = "Lloc web:";
+App::$strings["Description: "] = "Descripció:";
+App::$strings["Select a bookmark folder"] = "Tria una carpeta d'interès";
+App::$strings["Save Bookmark"] = "Guarda Favorits";
+App::$strings["URL of bookmark"] = "URL de favorit";
+App::$strings["Or enter new bookmark folder name"] = "O entra un nou nom de favorit";
+App::$strings["- select -"] = "- selecciona -";
+App::$strings["Permission Denied."] = "Permisos Denegats.";
+App::$strings["File not found."] = "Arxiu no torbat.";
+App::$strings["Edit file permissions"] = "Edita els permisos d'arxiu";
+App::$strings["Set/edit permissions"] = "Canvia/edita permisos";
+App::$strings["Include all files and sub folders"] = "Inclou tots als arxius i subdirectoris";
+App::$strings["Return to file list"] = "Tornar al llistat d'arxius";
+App::$strings["Copy/paste this code to attach file to a post"] = "Copia/enganxa aquest codi per a adjuntar un arxiu a l'entrada";
+App::$strings["Copy/paste this URL to link file from a web page"] = "Copia/enganxa aquesta URL per a enllaçar l'arxiu d'una pàgina web";
+App::$strings["Share this file"] = "Comparteix l'arxiu";
+App::$strings["Show URL to this file"] = "Mostra la URL d'aquest arxiu";
+App::$strings["Notify your contacts about this file"] = "Avisa els teus contactes d'aquest arxiu";
+App::$strings["Channel added."] = "S'ha afegit el canal.";
App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Nombre màxim de registres diaris excedit. Si us plau, provau demà.";
App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "El registre ha fallat. Si et plau, indica que acceptes les Condicions del Servei.";
App::$strings["Passwords do not match."] = "Les contrasenyes no coincideixen.";
@@ -1760,6 +1557,20 @@ App::$strings["Please enter your invitation code"] = "Si et plau, introdueix el
App::$strings["Your email address"] = "La teva adreça de correu electrónic";
App::$strings["Choose a password"] = "Tria una contrasenya";
App::$strings["Please re-enter your password"] = "Si et plau, re-entra la contrasenya";
+App::$strings["Contact not found."] = "Contacte no trobat.";
+App::$strings["Friend suggestion sent."] = "Suggeriment d'amistat enviada.";
+App::$strings["Suggest Friends"] = "Amics Suggerits";
+App::$strings["Suggest a friend for %s"] = "Suggereix un amic per a %s";
+App::$strings["Please login."] = "Inicia Sessió.";
+App::$strings["Collection created."] = "Creada una col·lecció";
+App::$strings["Could not create collection."] = "No puc crear la col·lecció.";
+App::$strings["Collection updated."] = "Col·lecció actualitzada.";
+App::$strings["Create a collection of channels."] = "Creada una col·lecció de canals.";
+App::$strings["Collection Name: "] = "Nom de la Col·lecció:";
+App::$strings["Members are visible to other channels"] = "Els membres son visibles en altres canals";
+App::$strings["Collection removed."] = "Col·lecció esborrada.";
+App::$strings["Unable to remove collection."] = "Incapaç d'esborrar la col·lecció.";
+App::$strings["Collection Editor"] = "Editor de Col·leccions";
App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "L'esborrat de comptes no està permès fins que transcorren 48 hores des de l'últim canvi de contrasenya.";
App::$strings["Remove This Account"] = "Esborra el compte";
App::$strings["WARNING: "] = "ALERTA:";
@@ -1771,10 +1582,81 @@ App::$strings["By default only the instances of the channels located on this hub
App::$strings["Remove Account"] = "Esborra el Compte";
App::$strings["Help:"] = "Ajuda:";
App::$strings["Not Found"] = "No s'ha pogut trobar la pàgina";
-App::$strings["\$Projectname Documentation"] = "\$Projectname Documentació";
-App::$strings["[Embedded content - reload page to view]"] = "[Contingut embegut - recarrega la pàgina per veure-ho]";
-App::$strings["Remote privacy information not available."] = "informació privada remota no disponible.";
-App::$strings["Visible to:"] = "Visible per:";
+App::$strings["\$Projectname Documentation"] = "Documentació de \$Projectname";
+App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "L'esborrat de canals no està permès fins que transcorren 48 hores des de l'últim canvi de contrasenya.";
+App::$strings["Remove This Channel"] = "Elimina Aquest Canal";
+App::$strings["This channel will be completely removed from the network. "] = "Aquest canal serà completament eliminat de la xarxa.";
+App::$strings["Remove this channel and all its clones from the network"] = "Elimina aquest canal i els seus clons de la xarxa";
+App::$strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Per defecte, només la instancia del canal ubicat en aquest concentrador pot esser esborrat de la xarxa";
+App::$strings["Remove Channel"] = "Elimina el canal";
+App::$strings["\$Projectname"] = "\$Projectname";
+App::$strings["Welcome to %s"] = "Benvingut a %s";
+App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Em trobat un problema durant l'inici de sessió amb el OpenID que has facilitat. verifica l'ortografia correcta de la ID.";
+App::$strings["The error message was:"] = "El missatge d'error fou:";
+App::$strings["Authentication failed."] = "Ha fallat l'autentificació.";
+App::$strings["Remote Authentication"] = "Autentificació Remota";
+App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Introdueix la teva adreça del canal (eg canal@exemple.com)";
+App::$strings["Authenticate"] = "Autentica't";
+App::$strings["First Name"] = "Nom";
+App::$strings["Last Name"] = "Cognoms";
+App::$strings["Nickname"] = "Àlies";
+App::$strings["Full Name"] = "Nom Sencer";
+App::$strings["Profile Photo 16px"] = "Foto del Perfil 16px";
+App::$strings["Profile Photo 32px"] = "Foto del Perfil 32px";
+App::$strings["Profile Photo 48px"] = "Foto del Perfil 48px";
+App::$strings["Profile Photo 64px"] = "Foto del Perfil 64px";
+App::$strings["Profile Photo 80px"] = "Foto del Perfil 80px";
+App::$strings["Profile Photo 128px"] = "Foto del Perfil 128px";
+App::$strings["Timezone"] = "Zona horària";
+App::$strings["Homepage URL"] = "URL de la pàgina d'inici";
+App::$strings["Birth Year"] = "Any de Naixement";
+App::$strings["Birth Month"] = "Mes de Naixement";
+App::$strings["Birth Day"] = "Dia de Naixement";
+App::$strings["Birthdate"] = "Aniversari";
+App::$strings["%s element installed"] = "%s element instal·lat";
+App::$strings["%s element installation failed"] = "%s instal·lació d'element va fallar";
+App::$strings["Items tagged with: %s"] = "Elements etiquetats amb: %s";
+App::$strings["Search results for: %s"] = "Resultats de cerca per: %s";
+App::$strings["Your service plan only allows %d channels."] = "El teu paquet de serveis només admet %d canals.";
+App::$strings["Nothing to import."] = "No hi ha res a importar.";
+App::$strings["Unable to download data from old server"] = "No s'han pogut descarregar les dades del servidor antic";
+App::$strings["Imported file is empty."] = "El fitxer importat està buit.";
+App::$strings["The data provided is not compatible with this project."] = "Les dades subministrades no son compatibles amb aquest projecte.";
+App::$strings["Warning: Database versions differ by %1\$d updates."] = "Atenció: Les versions de la Base de Dades difereixen en %1\$d actualitzacions.";
+App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "No s'ha pogut importar el canal perquè l'identificador del canal no s'ha pogut duplicar en aquest servidor.";
+App::$strings["Channel clone failed. Import failed."] = "No s'ha pogut importar el canal perquè el canal no s'ha pogut clonar.";
+App::$strings["Cloned channel not found. Import failed."] = "No s'ha pogut importar el canal perquè el canal clonat no s'ha trobat.";
+App::$strings["You must be logged in to use this feature."] = "Has d'estar registrat per fer servir aquesta funcionalitat.";
+App::$strings["Import Channel"] = "Importa un canal";
+App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "Empra aquest formulari per importar un canal existent en un altre servidor/concentrador. Pots recuperar el canal des de l'antic servidor/concentrador via la xarxa o mitjançant un fitxer d'exportació";
+App::$strings["File to Upload"] = "Fitxer a pujar";
+App::$strings["Or provide the old server/hub details"] = "O proveeix els detalls de l'antic servidor/concentrador";
+App::$strings["Your old identity address (xyz@example.com)"] = "La teva adreça de canal antiga. El format és canal@exemple.org";
+App::$strings["Your old login email address"] = "La teva adreça de correu electrònic antiga";
+App::$strings["Your old login password"] = "La teva contrasenya antiga";
+App::$strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Per a qualsevol de les opcions, escull si vols fer primària l'adreça d'aquest hub o mantenir l'anterior com a primària. Podràs penjar entrades des de totes dues adreces, però per als fitxers, imatges i altres en cal una de primària.";
+App::$strings["Make this hub my primary location"] = "Fes d'aquest hub la meva ubicació primària";
+App::$strings["Import existing posts if possible (experimental - limited by available memory"] = "Importa les entrades existents si es possible (experimental - limitat per la memòria disponible";
+App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Aquest procès pot trigar minuts en completar. Si et plau envia el formulari només una vegada i manté aquesta pàgina oberta fins que finalitzi.";
+App::$strings["No service class restrictions found."] = "No s'han trobat restriccions de clase.";
+App::$strings["Total invitation limit exceeded."] = "El límit total invitacions s'ha superat.";
+App::$strings["%s : Not a valid email address."] = "%s: adreça de correu electrònic no vàlida.";
+App::$strings["Please join us on Red"] = "Si us plau, uneix-te a Red";
+App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Límit d'invitacions excedit. Si us plau, poseu-vos en contacte amb l'administrador del lloc.";
+App::$strings["%s : Message delivery failed."] = "%s : Entrega del Missatge fallida.";
+App::$strings["%d message sent."] = array(
+ 0 => "%d missatge enviat.",
+ 1 => "%d missatges enviats.",
+);
+App::$strings["You have no more invitations available"] = "No té més invitacions disponibles";
+App::$strings["Send invitations"] = "Enviar invitacions";
+App::$strings["Enter email addresses, one per line:"] = "Introduïu les adreces de correu electrònic, una per línia:";
+App::$strings["Please join my community on \$Projectname."] = "Si us plau uneix-te la meva comunitat en \$Projectname.";
+App::$strings["You will need to supply this invitation code: "] = "Has de proporcionar aquest codi d'invitació:";
+App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Registre en qualsevol lloc del \$Projectname (estàn tots interconnectats)";
+App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Entra a la meva adreça de xarxa al \$Projectname, a la barra de cerca del lloc.";
+App::$strings["or visit "] = "o visita";
+App::$strings["3. Click [Connect]"] = "3. Click [Conectar]";
App::$strings["Name is required"] = "Es requereix un Nom";
App::$strings["Key and Secret are required"] = "Es requereix Clau (Key) i el Secret (Secret)";
App::$strings["Diaspora Policy Settings updated."] = "Actualitzats els Ajustos de Política de Diaspora.";
@@ -1832,7 +1714,7 @@ App::$strings["Maximum number of conversations to load at any time:"] = "Nombre
App::$strings["Maximum of 100 items"] = "Màxim de 100 elements";
App::$strings["Show emoticons (smilies) as images"] = "Mostra emoticons (smilies) com a imatges";
App::$strings["Link post titles to source"] = "Enllaça a l'origen els títols de l'entrada";
-App::$strings["System Page Layout Editor - (advanced)"] = "Editor de Disseny de la Pàgina del Sistema - (avançat)";
+App::$strings["System Page Layout Editor - (advanced)"] = "Editor de disseny de pàgina - (avançat)";
App::$strings["Use blog/list mode on channel page"] = "Empra el mode blog/llista a la pàgina del canal";
App::$strings["(comments displayed separately)"] = "(Observacions es mostren per separat)";
App::$strings["Use blog/list mode on matrix page"] = "Empra mode blog/llista a la pàgina de matrix";
@@ -1875,6 +1757,7 @@ App::$strings["0 or blank prevents expiration"] = "0 o vuit evita caducitat";
App::$strings["Maximum Friend Requests/Day:"] = "Nombre màxim de peticions d'amistat per dia";
App::$strings["May reduce spam activity"] = "Pot reduir l'SPAM";
App::$strings["Default Post Permissions"] = "Permisos de publicació per defecte";
+App::$strings["(click to open/close)"] = "(clica per obrir/tancar)";
App::$strings["Channel permissions category:"] = "Categoria de permisos de canal:";
App::$strings["Maximum private messages per day from unknown people:"] = "Nombre màxim de missatges privats de desconeguts al dia:";
App::$strings["Useful to reduce spamming"] = "Útil per a reduir l'spam";
@@ -1914,116 +1797,242 @@ App::$strings["Change the behaviour of this account for special situations"] = "
App::$strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "Activa el mode d'expert (a <a href=\"settings/features\">Ajustos > Més funcions</a>)";
App::$strings["Miscellaneous Settings"] = "Ajustos diversos";
App::$strings["Personal menu to display in your channel pages"] = "Menú personal per mostrar en les teves pàgines de canal";
-App::$strings["Remove Channel"] = "Elimina el canal";
App::$strings["Remove this channel."] = "Elimina aquest canal.";
-App::$strings["First Name"] = "Nom";
-App::$strings["Last Name"] = "Cognoms";
-App::$strings["Nickname"] = "Àlies";
-App::$strings["Full Name"] = "Nom Sencer";
-App::$strings["Profile Photo 16px"] = "Foto del Perfil 16px";
-App::$strings["Profile Photo 32px"] = "Foto del Perfil 32px";
-App::$strings["Profile Photo 48px"] = "Foto del Perfil 48px";
-App::$strings["Profile Photo 64px"] = "Foto del Perfil 64px";
-App::$strings["Profile Photo 80px"] = "Foto del Perfil 80px";
-App::$strings["Profile Photo 128px"] = "Foto del Perfil 128px";
-App::$strings["Timezone"] = "Zona horària";
-App::$strings["Homepage URL"] = "URL de la pàgina d'inici";
-App::$strings["Birth Year"] = "Any de Naixement";
-App::$strings["Birth Month"] = "Mes de Naixement";
-App::$strings["Birth Day"] = "Dia de Naixement";
-App::$strings["Birthdate"] = "Aniversari";
+App::$strings["Unable to locate original post."] = "No s'ha pogut trobar l'entrada original.";
+App::$strings["Empty post discarded."] = "S'ha descartat l'entrada perquè no té contingut.";
+App::$strings["Executable content type not permitted to this channel."] = "No està permès el contingut de tipus executable en aquest canal.";
+App::$strings["System error. Post not saved."] = "Hi ha hagut un error del sistema. L'entrada no s'ha desat.";
+App::$strings["Unable to obtain post information from database."] = "No s'ha pogut obtenir informació de l'entrada a la base de dades.";
+App::$strings["You have reached your limit of %1$.0f top level posts."] = "Has assolit el teu límit de %1$.0f entrades (descomptant comentaris).";
+App::$strings["You have reached your limit of %1$.0f webpages."] = "Has assolit el teu limit de %1$.0f pàgines web.";
+App::$strings["\$Projectname Server - Setup"] = "Servidor \$Projectname - Configuració";
+App::$strings["Could not connect to database."] = "No puc connectar amb la base de dades";
+App::$strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "No s'ha pogut connectar a l'URL del lloc especificat. Possible problema amb el certificat SSL o de DNS.";
+App::$strings["Could not create table."] = "No puc crear la taula.";
+App::$strings["Your site database has been installed."] = "La teva base de dades del lloc s'ha instal·lat.";
+App::$strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "Podria ser necessari importar el fitxer \"install / schema_xxx.sql\" manualment utilitzant un client de base de dades.";
+App::$strings["Please see the file \"install/INSTALL.txt\"."] = "Si us plau, consulteu el fitxer \"install / INSTALL.txt\".";
+App::$strings["System check"] = "Comprovació del sistema";
+App::$strings["Check again"] = "Comprova de nou";
+App::$strings["Database connection"] = "Connexió de base de dades";
+App::$strings["In order to install \$Projectname we need to know how to connect to your database."] = "Per tal d'instaŀlar \$Projectname cal configurar la connexió a la base de dades.";
+App::$strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Si us plau, poseu-vos en contacte amb el proveïdor de serveis o administrador del lloc si vostè té preguntes sobre aquests paràmetres.";
+App::$strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "La base de dades s'especifica a continuació ja ha d'existir. Si no és així, si us plau crear-la abans de continuar.";
+App::$strings["Database Server Name"] = "Base de Dades Nom del Servidor";
+App::$strings["Default is localhost"] = "Per defecte es localhost";
+App::$strings["Database Port"] = "Port per a la Base de Dades";
+App::$strings["Communication port number - use 0 for default"] = "Numero del port de comunicacions - empra 0 per defecte";
+App::$strings["Database Login Name"] = "Base de Dades Nom d'Accès";
+App::$strings["Database Login Password"] = "Base de Dades Contrasenya d'Accès";
+App::$strings["Database Name"] = "Nom de la Base de Dades";
+App::$strings["Database Type"] = "Tipus de Base de Dades";
+App::$strings["Site administrator email address"] = "Adreça de correu de l'administrador del lloc";
+App::$strings["Your account email address must match this in order to use the web admin panel."] = "El teu compte de email ha de coincidir amb això per poder emprar el panel web d'administrador.";
+App::$strings["Website URL"] = "URL del lloc web";
+App::$strings["Please use SSL (https) URL if available."] = "Si us plau, empra SSL (https) URL si està disponible.";
+App::$strings["Please select a default timezone for your website"] = "Si us plau, tria la zona horària del teu lloc web";
+App::$strings["Site settings"] = "Ajustos del lloc";
+App::$strings["Could not find a command line version of PHP in the web server PATH."] = "No s'ha pogut trobar una versió de línia d'ordres del PHP en el PATH del servidor web.";
+App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Si vostè no té una versió de línia d'ordres del PHP instal·lada al servidor, vostè no serà capaç d'executar sondejos en segon pla via cron.";
+App::$strings["PHP executable path"] = "Camí cap l'executable de PHP";
+App::$strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Introdueix el camí cap l'executable de php. Pots deixa-ho en blanc i continuar l'instal·lació.";
+App::$strings["Command line PHP"] = "Línia d'ordres de PHP";
+App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "La versió de línia d'ordres de PHP al teu sistema no te el \"register_argc_argv\" activat.";
+App::$strings["This is required for message delivery to work."] = "Això es requereix per que funcioni l'entrega de missatges.";
+App::$strings["PHP register_argc_argv"] = "PHP register_argc_argv";
+App::$strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "La mida màxima que se't permet pujar està establerta en %s. La mida màxima per arxiu pujat es de %s. Se't permet pujar fins a %d arxius d'una vegada.";
+App::$strings["You can adjust these settings in the servers php.ini."] = "Pots ajustar aquests valors a l'arxiu php.ini del servidor";
+App::$strings["PHP upload limits"] = "Límits de pujada de PHP";
+App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Error: la funció \"openssl_pkey_new\" en aquest sistema no es capaç de generar claus d'encriptació";
+App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Si esta funcionant sota Windows, per favor, miri \"http://www.php.net/manual/en/openssl.installation.php\".";
+App::$strings["Generate encryption keys"] = "Generar claus de xifrat";
+App::$strings["libCurl PHP module"] = "mòdul PHP libCurl ";
+App::$strings["GD graphics PHP module"] = "mòdul PHP GD gràfics";
+App::$strings["OpenSSL PHP module"] = "mòdul PHP OpenSSL";
+App::$strings["mysqli or postgres PHP module"] = "mòdul PHP mysqli o postgres";
+App::$strings["mb_string PHP module"] = "mòdul PHP mb_string";
+App::$strings["mcrypt PHP module"] = "mòdul PHP mcrypt";
+App::$strings["xml PHP module"] = "Mòdul xml de PHP";
+App::$strings["Apache mod_rewrite module"] = "mòdul Apache mod_rewrite";
+App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Error: el mòdul mod-rewrite del servidor web Apache es requereix i no està instal·lat.";
+App::$strings["proc_open"] = "proc_open";
+App::$strings["Error: proc_open is required but is either not installed or has been disabled in php.ini"] = "Error: es requereix proc_open però o no està instal·lat o ha estat desactivat a php.ini";
+App::$strings["Error: libCURL PHP module required but not installed."] = "Error: el mòdul PHP libCURL es requereix però no està instal·lat.";
+App::$strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Error: el mòdul PHP GD graphics amb support JPEG es requereix però no està instal·lat.";
+App::$strings["Error: openssl PHP module required but not installed."] = "Error: el mòdul PHP openssl es requereix però no està instal·lat.";
+App::$strings["Error: mysqli or postgres PHP module required but neither are installed."] = "Error: el mòdul PHO mysqli o postgres es requereix però no està instal·lat.";
+App::$strings["Error: mb_string PHP module required but not installed."] = "Error: el mòdul PHP mb_string es requereix però no està instal·lat.";
+App::$strings["Error: mcrypt PHP module required but not installed."] = "Error: el mòdul PHP mcrypt es requereix però no està instal·lat.";
+App::$strings["Error: xml PHP module required for DAV but not installed."] = "Error: el mòdul xml de PHP es requereix per DAV però no està instal·lat.";
+App::$strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "L'instaŀlador ha de poder crear i modificar un fitxer anomenat «.htconfig.php» a la carpeta arrel del servidor, però sembla que no ho pot fer.";
+App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Això sol ser un problema de permisos. Per molt que el teu usuari pugui modificar-lo, és el del servidor web qui necessita els poders de modificació.";
+App::$strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Al final d'aquest procés hauràs de desar un text a l'arxiu «.htconfig.php», que es troba a la carpeta arrel del servidor.";
+App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Aquest procés és opcional. Per a fer una instaŀlació manual consulta les instruccions a «install/INSTALL.txt\".";
+App::$strings[".htconfig.php is writable"] = "L'arxiu «.htconfig.php» es pot modificar";
+App::$strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red fa servir el motor de plantilles Smarty3 per a renderitzar les vistes més ràpidament.";
+App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "Per tal de guardar aquestes plantilles compilades, el servidor web necessita tenir premis d'escriptura en el directori %s sota la carpeta principal de Red.";
+App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Comprova que l'usuari que executa el servidor (www-data en Apache) té permisos d'escriptura en aquesta carpeta.";
+App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Nota: com a mesura de seguretat l'usuari del servidor web ha de tenir accés d'escriptura només a %s, i no a les plantilles (.tpl) que conté.";
+App::$strings["%s is writable"] = "Es pot escriure a %s";
+App::$strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "Red fa servir la carpeta «store» per a desar els fitxers pujats. Per tant, el servidor web necessita tenir permís d'escriptura en aquesta carpeta, que està a l'arrel del servidor web.";
+App::$strings["store is writable"] = "Es pot escriure al magatzem (store)";
+App::$strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "El certificat SSL no s'ha pogut validar. Arregla-ho o deshabilita l'accés https a aquest lloc";
+App::$strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Si tens accès pet https al teu lloc web o permets connexions pel port TCP 443 (port https), Has d'emprar un certificat VÀLID. NO es poden emprar certificats AUTO-SIGNATS!";
+App::$strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "El motiu d'aquesta restricció és que les teves entrades públiques poden contenir referències a imatges del teu propi hub.";
+App::$strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Si el teu certificat no és reconegut, llavors el membres d'altres hubs, encara que tinguin certificats vàlids, rebran una advertència de seguretat en carregar contingut teu.";
+App::$strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Per tant, com que perjudica la usabilitat més enllà del teu lloc, la restricció de tenir un certificat reconegut és molt important.";
+App::$strings["Providers are available that issue free certificates which are browser-valid."] = "Hi ha autoritats de certificació reconegudes que ofereixen certificats gratuïts.";
+App::$strings["SSL certificate validation"] = "Validació del certificat SSL";
+App::$strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "No es poden reescriure les URL a «.htaccess». Comprova la configuració del servidor:";
+App::$strings["Url rewrite is working"] = "Es poden reescriure les URL a «.htaccess»";
+App::$strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "L'arxiu de configuracio de la base de dades «.htconfig.php» no s'ha pogut modificar. El pots crear tu a l'arrel del servidor web amb el text de la caixa com a contingut.";
+App::$strings["Errors encountered creating database tables."] = "S'han produït errors mentre es creaven taules a la base de dades.";
+App::$strings["<h1>What next</h1>"] = "<h1>I ara què?</h1>";
+App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANT! Cal que configuris manualment una execució periòdica del \"poller\".";
+App::$strings["Comanche page description language help"] = "Pgina d'ajuda del llenguatge Comanche";
+App::$strings["Layout Description"] = "Descripció del disseny";
+App::$strings["Download PDL file"] = "Descarrega l'arxiu PDL";
+App::$strings["Files: shared with me"] = "Arxius: compartits amb jo";
+App::$strings["NEW"] = "NOU";
+App::$strings["Remove all files"] = "Esborra tots els arxius";
+App::$strings["Remove this file"] = "Esborra l'arxiu";
+App::$strings["Like/Dislike"] = "M'agrada / No m'agrada";
+App::$strings["This action is restricted to members."] = "Aquesta acció està restringida als membres.";
+App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "<a href=\"rmagic\">Entra amb la teva identitat \$Projectname</a> o <a href=\"register\">registra't a \$Projectname</a> per continuar.";
+App::$strings["Invalid request."] = "Sol·licitud invàlida.";
+App::$strings["thing"] = "cosa";
+App::$strings["Channel unavailable."] = "El canal està inactiu.";
+App::$strings["Previous action reversed."] = "S'ha desfet l'acció anterior.";
+App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s està a favor de %3\$s de %2\$s";
+App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s està en contra de %3\$s de %2\$s";
+App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s ha votat en blanc en %3\$s de %2\$s";
+App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s assistirà a %3\$s de %2\$s";
+App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s no assistirà a %3\$s de %2\$s";
+App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s potser assistirà a %3\$s de %2\$s";
+App::$strings["Action completed."] = "S'ha completat l'acció.";
+App::$strings["Thank you."] = "Gràcies.";
+App::$strings["Version %s"] = "Versió %s";
+App::$strings["Installed plugins/addons/apps:"] = "Plugins/addons/apps Instal·lats:";
+App::$strings["No installed plugins/addons/apps"] = "Plugins/addons/apps no instal·lats";
+App::$strings["This is a hub of \$Projectname - a global cooperative network of decentralized privacy enhanced websites."] = "Aquest és un hub de \$Projectname, una xarxa cooperativa mundial de llocs web descentralitzats amb gran control de la privacitat.";
+App::$strings["Tag: "] = "Etiqueta:";
+App::$strings["Last background fetch: "] = "Última actualització en rerefons:";
+App::$strings["Running at web location"] = "Correguent en el lloc web";
+App::$strings["Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more about \$Projectname."] = "Visita <a href=\"http://hubzilla.org\">hubzilla.org</a> per saber-ne més de \$Projectname.";
+App::$strings["Bug reports and issues: please visit"] = "Per informar d'errors o problemes ves a";
+App::$strings["\$projectname issues"] = "\$projectname emisions";
+App::$strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Per suggerències, felicitacions i altres, envia'ns un mail a «redmatrix» [arroba] librelist [punt] com";
+App::$strings["Site Administrators"] = "Administradors del lloc";
+App::$strings["Remote privacy information not available."] = "informació privada remota no disponible.";
+App::$strings["Visible to:"] = "Visible per:";
+App::$strings["Location not found."] = "Situació que no es troba.";
+App::$strings["Primary location cannot be removed."] = "La ubicació primària no es pot treure.";
+App::$strings["No locations found."] = "No es troben els llocs.";
+App::$strings["Manage Channel Locations"] = "Gestionar Ubicacions de Canal";
+App::$strings["Location (address)"] = "Ubicació (direcció)";
+App::$strings["Primary Location"] = "Ubicació Primària";
+App::$strings["Drop location"] = "Treure la ubicació";
+App::$strings["Failed to create source. No channel selected."] = "Error en crear l'origen. Cap canal seleccionat.";
+App::$strings["Source created."] = "Origen creat.";
+App::$strings["Source updated."] = "Origen actualitzat.";
+App::$strings["*"] = "*";
+App::$strings["Manage remote sources of content for your channel."] = "Gestiona contingut per al teu canal d'origens remots";
+App::$strings["New Source"] = "Nou Origen";
+App::$strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importar tot o sel·lecciona contingut dels següents canals, en aquest canal i distribueix-lo d'acord als teus ajustos de canals.";
+App::$strings["Only import content with these words (one per line)"] = "Només importa contingut amb aquestes paraules (una per línia)";
+App::$strings["Leave blank to import all public content"] = "Deixar en blanc per importar tot el contingut públic";
+App::$strings["Channel Name"] = "Nom del canal";
+App::$strings["Source not found."] = "No s'ha trobat la font.";
+App::$strings["Edit Source"] = "Edita la font";
+App::$strings["Delete Source"] = "Esborra la font";
+App::$strings["Source removed"] = "S'ha esborrat la font";
+App::$strings["Unable to remove source."] = "No s'ha pogut esborrar la font.";
+App::$strings["No valid account found."] = "No es troba un compte vàlid.";
+App::$strings["Password reset request issued. Check your email."] = "Sol·licitud de restabliment de contrasenya emesa. Consulta el teu correu electrònic.";
+App::$strings["Site Member (%s)"] = "Lloc d'Usuari (%s)";
+App::$strings["Password reset requested at %s"] = "S'ha soŀlicitat restablir la contrasenya al hub %s";
+App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Ha fallat el restabliment de contrasenya perquè la no s'ha pogut verificar soŀlicitud. Pot ser que ja ho hàgiu soŀlicitat abans.";
+App::$strings["Password Reset"] = "Restabliment de contrasenya";
+App::$strings["Your password has been reset as requested."] = "S'ha restablert la vostra contrasenya.";
+App::$strings["Your new password is"] = "La nova contrasenya és";
+App::$strings["Save or copy your new password - and then"] = "Desa o copia la nova contrasenya, i després";
+App::$strings["click here to login"] = "fes clic aquí per iniciar sessió";
+App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Pots canviar la contrasenya a la pàgina <em>Paràmetres</em>, un cop iniciada la sessió.";
+App::$strings["Your password has changed at %s"] = "La teva contrasenya a %s ha canviat";
+App::$strings["Forgot your Password?"] = "No recordes la contrasenya?";
+App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Escriu la teva adreça de correu electrònic i envia per restablir la contrasenya. Després revisa el seu correu electrònic per obtenir més instruccions.";
+App::$strings["Email Address"] = "Adreça electrònica";
+App::$strings["Reset"] = "Reajustar";
+App::$strings["Unable to update menu."] = "No s'ha pogut actualitzar el menú.";
+App::$strings["Unable to create menu."] = "No s'ha pogut crear el menú.";
+App::$strings["Menu Name"] = "Nom del menú";
+App::$strings["Unique name (not visible on webpage) - required"] = "Nom únic (no visible a la pàgina web) - requerit";
+App::$strings["Menu Title"] = "Títol del menú";
+App::$strings["Visible on webpage - leave empty for no title"] = "Visible a la pàgina web - deixar buit per a no posar títol";
+App::$strings["Allow Bookmarks"] = "Permetre Marcadors";
+App::$strings["Menu may be used to store saved bookmarks"] = "El menú es pot emprar per a guardar marcadors";
+App::$strings["Submit and proceed"] = "Envia i procedeix";
+App::$strings["Drop"] = "Menysprea";
+App::$strings["Bookmarks allowed"] = "Marcadors permesos";
+App::$strings["Delete this menu"] = "Esborra el menú";
+App::$strings["Edit menu contents"] = "Edita el contingut del menú";
+App::$strings["Edit this menu"] = "Edita el menú";
+App::$strings["Menu could not be deleted."] = "El menu no es pot esborrar.";
+App::$strings["Menu not found."] = "Menú no trobat.";
+App::$strings["Edit Menu"] = "Edita Menú";
+App::$strings["Add or remove entries to this menu"] = "Afegeix o esborra entrades a aquest menú";
+App::$strings["Menu name"] = "Nom del Menú";
+App::$strings["Must be unique, only seen by you"] = "Ha de ser únic, nomes vist per tú";
+App::$strings["Menu title"] = "Títol del menú";
+App::$strings["Menu title as seen by others"] = "Títol del menú vist pels altres";
+App::$strings["Allow bookmarks"] = "Marcadors permesos";
+App::$strings["Not found."] = "No trobat.";
App::$strings["Conversation removed."] = "Conversació eliminada.";
App::$strings["No messages."] = "Sense missatges.";
-App::$strings["Delete conversation"] = "Conversació esborrada";
App::$strings["D, d M Y - g:i A"] = "D, d M Y - g:i A";
+App::$strings["Unable to create element."] = "Incapaç de crear l'element.";
+App::$strings["Unable to update menu element."] = "Incapaç d'actualitzar un element del menú.";
+App::$strings["Unable to add menu element."] = "Incapaç d'afegir l'element del menú.";
+App::$strings["Menu Item Permissions"] = "Permisos de l'Article del Menú";
+App::$strings["Link Name"] = "Nom de l'Enllaç";
+App::$strings["Link or Submenu Target"] = "Enllaç o Submenú Objectiu";
+App::$strings["Enter URL of the link or select a menu name to create a submenu"] = "Entra la URL de l'enlla´o tria un nom de menú per crear un submenú";
+App::$strings["Use magic-auth if available"] = "Empra magic-auth si esta disponible";
+App::$strings["Open link in new window"] = "Obrir l'enllaç en una nova finestra";
+App::$strings["Order in list"] = "Ordre per llista";
+App::$strings["Higher numbers will sink to bottom of listing"] = "Els números més alts aniràn al fons de la llista";
+App::$strings["Submit and finish"] = "Envia i termina";
+App::$strings["Submit and continue"] = "Envia i continua";
+App::$strings["Menu:"] = "Menú:";
+App::$strings["Link Target"] = "Enllaç Objectiu";
+App::$strings["Edit menu"] = "Edita menú";
+App::$strings["Edit element"] = "Edita element";
+App::$strings["Drop element"] = "Deixa anar element";
+App::$strings["New element"] = "Nou element";
+App::$strings["Edit this menu container"] = "Edita aquest contenidor de menú";
+App::$strings["Add menu element"] = "Afegeix element de menú";
+App::$strings["Delete this menu item"] = "Esborra aquest article del menú";
+App::$strings["Edit this menu item"] = "Edita aquest article del menú";
+App::$strings["Menu item not found."] = "Article del menú no trobat.";
+App::$strings["Menu item deleted."] = "Article del menú eliminat.";
+App::$strings["Menu item could not be deleted."] = "Article del menú no es pot eliminar.";
+App::$strings["Edit Menu Element"] = "Editar Element del Menú";
+App::$strings["Link text"] = "Enllaç de text";
+App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s esta seguint %2\$s de %3\$s";
App::$strings["Set your current mood and tell your friends"] = "Estableix el teu estat d'ànim actual i digues-li als teus amics";
-App::$strings["Total votes"] = "Total de vots";
-App::$strings["Average Rating"] = "Valoració Mitja";
-App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "L'esborrat de canals no està permès fins que transcorren 48 hores des de l'últim canvi de contrasenya.";
-App::$strings["Remove This Channel"] = "Elimina Aquest Canal";
-App::$strings["This channel will be completely removed from the network. "] = "Aquest canal serà completament eliminat de la xarxa.";
-App::$strings["Remove this channel and all its clones from the network"] = "Elimina aquest canal i els seus clons de la xarxa";
-App::$strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Per defecte, només la instancia del canal ubicat en aquest concentrador pot esser esborrat de la xarxa";
-App::$strings["is now connected to"] = "Ara està conectat amb";
-App::$strings["Could not access address book record."] = "No puc accedir al registre del contacte";
-App::$strings["Refresh failed - channel is currently unavailable."] = "Ha fallat la recàrrega - el canal es actualment inaccesible.";
-App::$strings["Unable to set address book parameters."] = "No es poden ajustar els paràmetres dels contactes.";
-App::$strings["Connection has been removed."] = "S'han eliminat les conexions.";
-App::$strings["View %s's profile"] = "Mostra el perfil de %s";
-App::$strings["Refresh Permissions"] = "Recarrega els Permissos";
-App::$strings["Fetch updated permissions"] = "Obté els permisos actualitzats";
-App::$strings["Recent Activity"] = "Activitat Recent";
-App::$strings["View recent posts and comments"] = "Mostra les entrades i comentaris recents";
-App::$strings["Block (or Unblock) all communications with this connection"] = "Boqueja (o Desbloqueja) les comunicacions amb aquesta connexió";
-App::$strings["This connection is blocked!"] = "Aquesta connexió està bloquejada!";
-App::$strings["Unignore"] = "Inhabilita";
-App::$strings["Ignore"] = "Ignora";
-App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Ignora (o Considera) les communicacions entrants d'aquesta connexió";
-App::$strings["This connection is ignored!"] = "Aquesta connexió es ignorada!";
-App::$strings["Unarchive"] = "Desarxiva";
-App::$strings["Archive"] = "Arxiva";
-App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Arxiva (o Desarxiva) aquesta connexió - Marca el canal com a mort pero manté el contingut ";
-App::$strings["This connection is archived!"] = "Aquesta connexió està arxivada!";
-App::$strings["Unhide"] = "Mostra";
-App::$strings["Hide"] = "Amaga";
-App::$strings["Hide or Unhide this connection from your other connections"] = "Amaga (o Mostra) aquesta connexió de les altres connexions teves";
-App::$strings["This connection is hidden!"] = "Aquesta connexió està amagada!";
-App::$strings["Delete this connection"] = "Elimina aquesta connexió";
-App::$strings["Approve this connection"] = "Apccepta aquesta connexió";
-App::$strings["Accept connection to allow communication"] = "Accepta la connexió per permetre la comunicació";
-App::$strings["Set Affinity"] = "Ajusta l'Afinitat";
-App::$strings["Set Profile"] = "Ajusta el Perfil";
-App::$strings["Set Affinity & Profile"] = "Ajusta Afinitat i Perfil";
-App::$strings["Apply these permissions automatically"] = "Aplica aquests permissos automaticament";
-App::$strings["This connection's address is"] = "La direcció d'aquesta connexió es";
-App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Els permisos indicats en aquesta pàgina seran aplicats a totes les noves connexions.";
-App::$strings["Slide to adjust your degree of friendship"] = "Llisca per ajustar el nivell d'amistat";
-App::$strings["Slide to adjust your rating"] = "Llisca per ajustar la valoració";
-App::$strings["Optionally explain your rating"] = "Opcionalment pots explicar la teva valoració";
-App::$strings["Custom Filter"] = "Filtre a mida";
-App::$strings["Only import posts with this text"] = "Importa exclusivament entrades amb aquest text";
-App::$strings["words one per line or #tags or /patterns/, leave blank to import all posts"] = "paraules una per línia o #etiquetes o /patrons/, deixar en blanc per importar totes les entrades";
-App::$strings["Do not import posts with this text"] = "No importar entrades amb aquest text";
-App::$strings["This information is public!"] = "Aquesta informació es pública!";
-App::$strings["Connection Pending Approval"] = "Connexió Pendent d'Aprovació";
-App::$strings["Connection Request"] = "Petició de Connexió";
-App::$strings["(%s) would like to connect with you. Please approve this connection to allow communication."] = "(%s) voldria conectar amb tu. Aprova aquesta connexió per permetre la connexió.";
-App::$strings["Approve Later"] = "Aprovar més tard";
-App::$strings["inherited"] = "heretat";
-App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Tria el perfil que vols mostrar a %s quan es vegi el perfil segur.";
-App::$strings["Their Settings"] = "Els seus Ajustos";
-App::$strings["My Settings"] = "Els Meus Ajustos";
-App::$strings["Individual Permissions"] = "Permisos Individuals";
-App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Alguns permisos poden ser heretats dels teus canals <a href=\"settings\"><strong>ajustos de privacitat</strong></a>, Els quals tenen més prioritat que els ajustos individuals. <strong>No</strong> pots canviar aquests ajustos aquí.";
-App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Alguns permisos poden ser heretats dels teus canals <a href=\"settings\"><strong>ajustos de privacitat</strong></a>, Els quals tenen més prioritat que els ajustos individuals. <strong>Pots</strong> canviar aquests ajustos aquí pero no tindran cap impacte fins que no canviis els ajustos heretats.";
-App::$strings["Last update:"] = "Darrera actualització:";
-App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Em trobat un problema durant l'inici de sessió amb el OpenID que has facilitat. verifica l'ortografia correcta de la ID.";
-App::$strings["The error message was:"] = "El missatge d'error fou:";
-App::$strings["Authentication failed."] = "Ha fallat l'autentificació.";
-App::$strings["Remote Authentication"] = "Autentificació Remota";
-App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Introdueix la teva adreça del canal (eg canal@exemple.com)";
-App::$strings["Authenticate"] = "Autentica't";
-App::$strings["Unable to lookup recipient."] = "Incapaç de trobar el destinatari.";
-App::$strings["Unable to communicate with requested channel."] = "Incapaç de comunicar amb el canal demanat.";
-App::$strings["Cannot verify requested channel."] = "No puc verificar el canal demanat.";
-App::$strings["Selected channel has private message restrictions. Send failed."] = "El canal seleccionat te restriccions sobre els missatges privats. L'enviament ha fallat.";
-App::$strings["Message deleted."] = "Missatge eliminat.";
-App::$strings["Message recalled."] = "Recupera el missatge.";
-App::$strings["Send Private Message"] = "Envia Missatge Privat";
-App::$strings["To:"] = "Per:";
-App::$strings["Subject:"] = "Assumpte:";
-App::$strings["Send"] = "Envia";
-App::$strings["Message not found."] = "Missatge no trobat.";
-App::$strings["Delete message"] = "Elimina el missatge";
-App::$strings["Recall message"] = "Recupera el missatge";
-App::$strings["Message has been recalled."] = "El missatge s'ha recuperat.";
-App::$strings["Private Conversation"] = "Conversació Privada";
-App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Comunicació segura no disponible. Pots respondre des de la pàgina de perfil del remitent.";
-App::$strings["Send Reply"] = "Envia Resposta";
-App::$strings["Invalid request identifier."] = "Sol·licitud d'identificació invàlida.";
-App::$strings["Discard"] = "Descarta";
-App::$strings["Please login."] = "Inicia Sessió.";
-App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Autenticació remota bloquejada. Ha iniciat sessió en aquest lloc a nivell local. Si us plau, tanca la sessió i torna-ho a intentar.";
+App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "No hi ha suggerencies. Si es un lloc nou, espera 24 hores i proba de nou.";
+App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha etiquetat %3\$s de %2\$s amb %4\$s";
+App::$strings["Tag removed"] = "S'ha tret l'etiqueta";
+App::$strings["Remove Item Tag"] = "Elimina l'etiqueta d'element";
+App::$strings["Select a tag to remove: "] = "Tria l'etiqueta a eliminar:";
+App::$strings["No such group"] = "No existeix el grup";
+App::$strings["No such channel"] = "No existeix el canal";
+App::$strings["Search Results For:"] = "Cerca resultats per:";
+App::$strings["Collection is empty"] = "La coŀlecció és buida";
+App::$strings["Collection: "] = "Coŀlecció:";
+App::$strings["Connection: "] = "Connexió:";
+App::$strings["Invalid connection."] = "La connexió és invàlida.";
+App::$strings["OpenID protocol error. No ID returned."] = "Error del protocol OpenID. No ha retornat ID";
App::$strings["Add a Channel"] = "Afegeix un Canal";
App::$strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "Un canal es la teva pròpia col·lecció de pàgines web. Un canal pot emprat per mantenir perfils a una xarxa social, blocs, grups de conversació, fòrums, pàgines de famosos, i molt més. Pots crear tants canals com el teu servei d'internet et permeti.";
App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Exemples: \"Joan Tou\", \"Manel i els seus esquirols\", \"Fútbol\", \"Grup de Gegants\"";
@@ -2032,72 +2041,83 @@ App::$strings["Your nickname will be used to create an easily remembered channel
App::$strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "O <a href=\"import\">importa un canal existent</a> d'un altre lloc";
App::$strings["Please choose a channel type (such as social networking or community forum) and privacy requirements so we can select the best permissions for you"] = "Tria un tipus de canal (com a xarxa social o fòrum comunitari) i els requisits de privacitat, així podem proposar el que te el permisos més adients.";
App::$strings["Channel Type"] = "tipus de Canal";
-App::$strings["Read more about roles"] = "Llegix més sobre els rols";
-App::$strings["App installed."] = "Aplicació instal·lada.";
-App::$strings["Malformed app."] = "Aplicació amb errors";
-App::$strings["Embed code"] = "Codi embegut";
-App::$strings["Edit App"] = "Edita l'Aplicació";
-App::$strings["Create App"] = "Crea l'Aplicació";
-App::$strings["Name of app"] = "Nom de l'Aplicació";
-App::$strings["Location (URL) of app"] = "Ubicació (URL) de l'aplicació";
-App::$strings["Photo icon URL"] = "Foto icona URL";
-App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixels - opcional";
-App::$strings["Version ID"] = "Versió ID";
-App::$strings["Price of app"] = "Preu de l'aplicació";
-App::$strings["Location (URL) to purchase app"] = "Ubicació (URL) per comprar l'aplicació";
-App::$strings["sent you a private message"] = "Se t'ha enviat un missatge privat";
-App::$strings["added your channel"] = "el teu canal s'ha afegit";
-App::$strings["posted an event"] = "enviat un event";
-App::$strings["Comanche page description language help"] = "Pgina d'ajuda del llenguatge Comanche";
-App::$strings["Layout Description"] = "Descripció del Disseny de la Pàgina";
-App::$strings["Download PDL file"] = "Descarrega l'arxiu PDL";
-App::$strings["Welcome to %s"] = "Benvingut a %s";
-App::$strings["Lorem Ipsum"] = "Lorem Ipsum";
-App::$strings["Bookmark added"] = "Favorit afegit";
-App::$strings["My Bookmarks"] = "Els Meus Favorits";
-App::$strings["My Connections Bookmarks"] = "Les connexions dels meus Favorits";
-App::$strings["Insufficient permissions. Request redirected to profile page."] = "Permisos insuficients. Petició redirigida a la pàgina del perfil.";
-App::$strings["This setting requires special processing and editing has been blocked."] = "Aquest ajust requereix un procés espedial i l'edició esta bloquejada.";
-App::$strings["Configuration Editor"] = "Editor de Configuració";
-App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "atenció: Realitzar segons quins ajustos pot fer el canal inoperable. Deixa aquesta pàgina si no estas segur i tens suficients coneixements sobre l'ús correcte d'aquesta característica.";
-App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "No hi ha suggerencies. Si es un lloc nou, espera 24 hores i proba de nou.";
-App::$strings["Poll"] = "Sondeija";
-App::$strings["View Results"] = "Mostra els Resultats";
-App::$strings["No service class restrictions found."] = "No s'han trobat restriccions de clase.";
-App::$strings["Files: shared with me"] = "Arxius: compartits amb jo";
-App::$strings["NEW"] = "NOU";
-App::$strings["Remove all files"] = "Esborra tots els arxius";
-App::$strings["Remove this file"] = "Esborra l'arxiu";
-App::$strings["Schema Default"] = "Esquema Predeterminat";
+App::$strings["Read more about roles"] = "Llegeix més sobre els rols";
+App::$strings["Thing updated"] = "S'ha actualitzat la cosa";
+App::$strings["Object store: failed"] = "No s'ha pogut emmagatzemar l'objecte";
+App::$strings["Thing added"] = "S'ha afegit la cosa";
+App::$strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
+App::$strings["Show Thing"] = "Mostra la cosa";
+App::$strings["item not found."] = "no s'ha trobat l'element.";
+App::$strings["Edit Thing"] = "Edita la cosa";
+App::$strings["Select a profile"] = "Tria un perfil";
+App::$strings["Post an activity"] = "Publica una activitat";
+App::$strings["Only sends to viewers of the applicable profile"] = "S'envia només a visitants del perfil corresponent";
+App::$strings["Name of thing e.g. something"] = "Nom de la cosa. Exemple: patata";
+App::$strings["URL of thing (optional)"] = "Adreça URL de la cosa (opcional)";
+App::$strings["URL for photo of thing (optional)"] = "Adreça URL de la foto d'una cosa (opcional)";
+App::$strings["Add Thing to your Profile"] = "Afegeix una cosa al teu perfil";
+App::$strings["Export Channel"] = "Exportar Canal";
+App::$strings["Export your basic channel information to a file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new server hub, but does not contain your content."] = "Exporta a un fitxer dades bàsiques del canal. Serveix com a còpia de seguretat de les teves connexions, permisos, perfil però no de contingut, i es pot usar per importar-ho a un nou servidor. ";
+App::$strings["Export Content"] = "Exportar el Contingut";
+App::$strings["Export your channel information and recent content to a JSON backup that can be restored or imported to another server hub. This backs up all of your connections, permissions, profile data and several months of posts. This file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Exporta la informació i contingut recent del teu canal a un fitxer JSON. Aquesta còpia de seguretat pot ser restablerta a un altre hub o a aquest mateix. Conté totes les teves connexions, permisos, dades de perfil i diversos mesos d'entrades, així que pot resultar molt gran. Per això, poden passar uns quants minuts fins que la descàrrega s'iniciï.";
+App::$strings["Export your posts from a given year or month:"] = "Exporta les teves entrades d'un any o mes determinats:";
+App::$strings["You may also export your posts and conversations for a particular year or month. Click on one of the recent years or months below."] = "També pots exportar les teves entrades i converses dins d'un any o mes en particualr. Fes clic a un mes o any d'aquí sota.";
+App::$strings["Jan"] = "gen.";
+App::$strings["Feb"] = "febr.";
+App::$strings["Mar"] = "març";
+App::$strings["Apr"] = "abr.";
+App::$strings["Jun"] = "juny";
+App::$strings["Jul"] = "jul.";
+App::$strings["Aug"] = "ag.";
+App::$strings["Sep"] = "set.";
+App::$strings["Oct"] = "oct.";
+App::$strings["Nov"] = "nov.";
+App::$strings["Dec"] = "des.";
+App::$strings["If the export fails (possibly due to memory exhaustion on your server hub), please try again selecting a more limited date range."] = "En cas que falli l'exportació, prova-ho de nou demanant un interval de dates més curt. El servidor del hub podria haver fet curt de memòria RAM.";
+App::$strings["Or adjust the date in your browser location bar to select other dates. For example the year 2013; <a href=\"%1\$s/2013\">%1\$s/2013</a> or the month September 2013; <a href=\"%1\$s/2013/9\">%1\$s/2013/9</a>"] = "O bé ajusta la data de la barra de localització per escollir unes altres dates. Per exemple, l'any 2013; <a href=\"%1\$s/2013\">%1\$s/2013</a> o el setembre de 2013; <a href=\"%1\$s/2013/9\">%1\$s/2013/9</a>";
+App::$strings["Please visit"] = "Visita";
+App::$strings["on another hub to import the backup files(s)."] = "en un altre hub per tal de restablir la/es còpia/es de seguretat.";
+App::$strings["We advise you to clone the channel on the new hub first and than to import the backup file(s) (from the same channel) in chronological order. Importing the backup files into another channel will certainly give permission issues."] = "És recomanable clonar el canal en el hub nou abans d'importar la/es còpia/es de seguretat del mateix canal. Importar una còpia de seguretat d'un canal des d'un altre canal donarà problemes de permisos. Si n'hi ha més d'una, també cal importar les còpies en ordre cronològic, de més antic a més nou.";
+App::$strings["[Embedded content - reload page to view]"] = "[Contingut embegut - recarrega la pàgina per veure-ho]";
+App::$strings["No connections."] = "Sense connexions.";
+App::$strings["Visit %s's profile [%s]"] = "Visita el perfil [%s] de %s";
+App::$strings["Source of Item"] = "Origen de l'article";
+App::$strings["Total votes"] = "Vots totals";
+App::$strings["Average Rating"] = "Valoració mitjana";
+App::$strings["Page Title"] = "Títol de la pàgina";
+App::$strings["Xchan Lookup"] = "Cerca a xchan";
+App::$strings["Lookup xchan beginning with (or webbie): "] = "Cerca a xchan començant per (o webbie)";
+App::$strings["invalid target signature"] = "Signatura objectiu invàlida";
+App::$strings["Schema Default"] = "Esquema per defecte";
App::$strings["Sans-Serif"] = "Sans-Serif";
App::$strings["Monospace"] = "Monospace";
App::$strings["Theme settings"] = "Ajustos de tema";
-App::$strings["Set scheme"] = "Ajustos d'esquema";
+App::$strings["Set scheme"] = "Estableix l'esquema";
App::$strings["Set font-size for posts and comments"] = "Ajusta la mida del tipus de lletra per a entrades i comentaris";
-App::$strings["Set font face"] = "Ajusta el tipus de lletra";
-App::$strings["Set iconset"] = "Ajusta el conjunt d'icones";
-App::$strings["Set big shadow size, default 15px 15px 15px"] = "Ajusta la mida gran de l'ombra, predeterminat a 15px 15px 15px";
-App::$strings["Set small shadow size, default 5px 5px 5px"] = "Ajusta la mida petita de l'ombra, predeterminat a 5px 5px 5px";
-App::$strings["Set shadow color, default #000"] = "Ajusta el color de l'ombra, predeterminat a #000";
-App::$strings["Set radius size, default 5px"] = "Ajusta la mida del radi, predeterminat a 5px";
-App::$strings["Set line-height for posts and comments"] = "Ajusta el gruix de línia per entrades i comentaris";
-App::$strings["Set background image"] = "Ajusta l'imatge de fons";
-App::$strings["Set background attachment"] = "Ajusta els adjunts en segon pla";
-App::$strings["Set background color"] = "Ajusta el color en segon pla";
-App::$strings["Set section background image"] = "Ajusta la secció d'imatge en segon pla";
-App::$strings["Set section background color"] = "Ajusta el color de la secció en segon pla";
-App::$strings["Set color of items - use hex"] = "Ajuste el color dels articles - empra codi hexadecimal";
-App::$strings["Set color of links - use hex"] = "ajusta el color dels enlaços - empra codi hexadecimal";
-App::$strings["Set max-width for items. Default 400px"] = "Ajusta l'amplada màxima dels articles. Predeterminat a 400px";
-App::$strings["Set min-width for items. Default 240px"] = "Ajusta l'amplada minima dels articles. Predeterminat a 240px";
-App::$strings["Set the generic content wrapper width. Default 48%"] = "Ajusta l'amplada de l'embolcall del contingut genèric. Predeterminat a 48%";
-App::$strings["Set color of fonts - use hex"] = "Ajusta el color del tipus de lletra - empra codi hexadecimal";
-App::$strings["Set background-size element"] = "Ajusta la mida de l'element en segon pla";
-App::$strings["Item opacity"] = "Opacitat de l'article";
-App::$strings["Display post previews only"] = "Mostra tan sols les previsualitzacions de les entrades";
+App::$strings["Set font face"] = "Estableix el tipus de lletra";
+App::$strings["Set iconset"] = "Estableix el conjunt d'icones";
+App::$strings["Set big shadow size, default 15px 15px 15px"] = "Estableix una mida petita per l'ombrejat, per defecte 15px 15px 15px";
+App::$strings["Set small shadow size, default 5px 5px 5px"] = "Estableix una mida petita per l'ombrejat, per defecte 15px 15px 15px";
+App::$strings["Set shadow color, default #000"] = "Estableix el color de l'ombra, per defecte #000";
+App::$strings["Set radius size, default 5px"] = "Estableix el radi, per defecte 5px";
+App::$strings["Set line-height for posts and comments"] = "Estableix l'alçada de línia per a entrades i comentaris";
+App::$strings["Set background image"] = "Estableix la imatge de fons";
+App::$strings["Set background attachment"] = "Estableix els adjunts en segon pla";
+App::$strings["Set background color"] = "Estableix del color de fons";
+App::$strings["Set section background image"] = "Estableix la imatge de fons de secció";
+App::$strings["Set section background color"] = "Estableix el color de fons de secció";
+App::$strings["Set color of items - use hex"] = "Estableix el color dels elements (en notació hexadecimal)";
+App::$strings["Set color of links - use hex"] = "Estableix el color dels enllaços (en notació hexadecimal)";
+App::$strings["Set max-width for items. Default 400px"] = "Estableix el l'amplada màxima dels elements. Per defecte, 400px";
+App::$strings["Set min-width for items. Default 240px"] = "Estableix l'amplada mínima dels elements. Per defecte, 240px";
+App::$strings["Set the generic content wrapper width. Default 48%"] = "Estableix l'amplada per defecte del contingut. Per defecte, 48%";
+App::$strings["Set color of fonts - use hex"] = "Estableix el color del text (en notació hexadecimal)";
+App::$strings["Set background-size element"] = "Estableix la mida de la imatge de fons (background-size)";
+App::$strings["Item opacity"] = "Opacitat dels elements";
+App::$strings["Display post previews only"] = "Mostra només previsualitzacions d'entrades";
App::$strings["Display side bar on channel page"] = "Mostra la barra lateral a la pàgina del canal";
App::$strings["Colour of the navigation bar"] = "Color de la barra de navegació";
-App::$strings["Item float"] = "Article flotant";
+App::$strings["Item float"] = "Paràmetre \"float\" dels elements";
App::$strings["Left offset of the section element"] = "Desplaçament esquerra de l'element de secció";
App::$strings["Right offset of the section element"] = "Desplaçament dret de l'element de secció";
App::$strings["Section width"] = "Amplada de la secció";
@@ -2111,38 +2131,38 @@ App::$strings["Navigation bar gradient top color"] = "Gradient de color de la pa
App::$strings["Navigation bar gradient bottom color"] = "Gradient de color de la part inferior de la barra de navegació";
App::$strings["Navigation active button gradient top color"] = "Gradient de color de la part superior del botó actiu de la barra de navegació";
App::$strings["Navigation active button gradient bottom color"] = "Gradient de color de la part inferior del botó actiu de la barra de navegació";
-App::$strings["Navigation bar border color "] = "Color de la barra de navegació";
-App::$strings["Navigation bar icon color "] = "Color de la icona de la barra de navegació";
+App::$strings["Navigation bar border color "] = "Color de la vora de la barra de navegació";
+App::$strings["Navigation bar icon color "] = "Color bàsic de la icona de la barra de navegació";
App::$strings["Navigation bar active icon color "] = "Color de la icona de la barra de navegació activa";
-App::$strings["link color"] = "Color d'enllaç";
-App::$strings["Set font-color for banner"] = "Ajusta el color del tipus de lletra per la senyera";
-App::$strings["Set the background color"] = "Ajusta el color de fons";
-App::$strings["Set the background image"] = "Ajusta la imatge de fons";
-App::$strings["Set the background color of items"] = "ajusta el color dels articles de fons";
-App::$strings["Set the background color of comments"] = "Ajusta el color dels comentaris en segon pla";
-App::$strings["Set the border color of comments"] = "Canviar el color del marge dels comentaris";
-App::$strings["Set the indent for comments"] = "ajusta l'indentació dels comentaris";
-App::$strings["Set the basic color for item icons"] = "ajusta el color basic per les icones dels articles";
-App::$strings["Set the hover color for item icons"] = "Ajusta el color de la libració de les icones dels articles";
-App::$strings["Set font-size for the entire application"] = "Ajusta la mida del tipus de lletra per tota l'aplicació";
+App::$strings["link color"] = "color dels enllaços";
+App::$strings["Set font-color for banner"] = "Estableix el color de lletra del rètol";
+App::$strings["Set the background color"] = "Estableix el color de fons";
+App::$strings["Set the background image"] = "Estableix la imatge de fons";
+App::$strings["Set the background color of items"] = "Estableix el color de fons dels elements";
+App::$strings["Set the background color of comments"] = "Estableix el color de fons dels comentaris";
+App::$strings["Set the border color of comments"] = "Estableix el color de la vora dels comentaris";
+App::$strings["Set the indent for comments"] = "Estableix el sagnat dels comentaris";
+App::$strings["Set the basic color for item icons"] = "Estableix el color bàsic de les icones dels elements";
+App::$strings["Set the hover color for item icons"] = "Estableix el color de les icones dels elements en passar-hi per damunt";
+App::$strings["Set font-size for the entire application"] = "Estableix la mida de lletra per tota l'aplicació";
App::$strings["Example: 14px"] = "Exemple: 14px";
-App::$strings["Set font-color for posts and comments"] = "Ajusta el color del tipus de lletra per entrades i comentaris";
-App::$strings["Set radius of corners"] = "Ajusta el radi de les cantonades";
-App::$strings["Set shadow depth of photos"] = "Ajusta la profunditat d'ombres de les fotos";
-App::$strings["Set maximum width of content region in pixel"] = "Ajusta l'amplada màxima de la zona de contingut en pixels";
-App::$strings["Leave empty for default width"] = "Deixa en blanc per l'amplada predeterminada";
-App::$strings["Center page content"] = "Contingut del centre de la pàgina";
-App::$strings["Set minimum opacity of nav bar - to hide it"] = "Ajusta la opacitat mínima de la harra de navegació - per amagar-la";
-App::$strings["Set size of conversation author photo"] = "Ajusta la mida de la foto del autor a la conversa";
-App::$strings["Set size of followup author photos"] = "Ajusta la mida del seguidor de les fotos de l'autor";
-App::$strings["Update %s failed. See error logs."] = "L'actualització %s ha fallat. Mira el registre d'errors.";
-App::$strings["Update Error at %s"] = "Error d'Actualització a %s";
+App::$strings["Set font-color for posts and comments"] = "Estableix el color del text d'entrades i comentaris";
+App::$strings["Set radius of corners"] = "Estableix el radi de les cantonades";
+App::$strings["Set shadow depth of photos"] = "Estableix la profunditat d'ombres de les fotos";
+App::$strings["Set maximum width of content region in pixel"] = "Estableix l'amplada màxima de la zona de contingut en píxels";
+App::$strings["Leave empty for default width"] = "Deixa-ho en blanc per fixar a l'amplada per defecte.";
+App::$strings["Center page content"] = "Centra el contingut de la pàgina";
+App::$strings["Set minimum opacity of nav bar - to hide it"] = "Estableix la opacitat mínima de la barra de navegació per ser amagada";
+App::$strings["Set size of conversation author photo"] = "Estableix la mida de la foto de conversa de l'autor";
+App::$strings["Set size of followup author photos"] = "Estableix la mida de les fotos de seguiment de l'autor";
+App::$strings["Update %s failed. See error logs."] = "L'actualització %s ha fallat. Consulta el registre d'errors.";
+App::$strings["Update Error at %s"] = "Error d'actualització a %s";
App::$strings["Create an account to access services and applications within the Red Matrix"] = "Crea un compte per accedir als serveis i aplicacions dins de RedMatrix";
App::$strings["Password"] = "Contrasenya";
App::$strings["Remember me"] = "Recorda'm";
-App::$strings["Forgot your password?"] = "Has perdut la Contrasenya?";
-App::$strings["toggle mobile"] = "canvia a format per a mòbils";
-App::$strings["Website SSL certificate is not valid. Please correct."] = "El certificat SSL és invalid, soluciona-ho, si us plau.";
+App::$strings["Forgot your password?"] = "Has perdut la contrasenya?";
+App::$strings["toggle mobile"] = "commuta format mòbil/escriptori";
+App::$strings["Website SSL certificate is not valid. Please correct."] = "El certificat SSL és invàlid. Cal arreglar-ho.";
App::$strings["[red] Website SSL error for %s"] = "[red] Error de SSL per la web %s";
App::$strings["Cron/Scheduled tasks not running."] = "No s'estan executan les tasques programades al cron.";
App::$strings["[red] Cron tasks not running on %s"] = "[red] No s'estan executan les tasques programades del cron a %s";
diff --git a/view/cs/hmessages.po b/view/cs/hmessages.po
deleted file mode 100644
index 8e5b54d3a..000000000
--- a/view/cs/hmessages.po
+++ /dev/null
@@ -1,4618 +0,0 @@
-# FRIENDICA Distributed Social Network
-# Copyright (C) 2010, 2011 Mike Macgirvin
-# This file is distributed under the same license as the Friendika package.
-#
-# Michal Å upler <msupler@gmail.com>, 2011.
-msgid ""
-msgstr ""
-"Project-Id-Version: friendika\n"
-"Report-Msgid-Bugs-To: http://bugs.friendika.com/\n"
-"POT-Creation-Date: 2011-08-14 21:17-0700\n"
-"PO-Revision-Date: 2011-09-03 04:29+0000\n"
-"Last-Translator: michal_s <msupler@gmail.com>\n"
-"Language-Team: Czech (http://www.transifex.net/projects/p/friendika/team/cs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cs\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n"
-
-#: ../../mod/oexchange.php:27
-msgid "Post successful."
-msgstr "Příspěvek úspěšně odeslán"
-
-#: ../../mod/crepair.php:42
-msgid "Contact settings applied."
-msgstr "Nastavení kontaktu změněno"
-
-#: ../../mod/crepair.php:44
-msgid "Contact update failed."
-msgstr "Aktualizace kontaktu selhala."
-
-#: ../../mod/crepair.php:54 ../../mod/wall_attach.php:43
-#: ../../mod/fsuggest.php:78 ../../mod/events.php:102 ../../mod/photos.php:122
-#: ../../mod/photos.php:849 ../../mod/editpost.php:10 ../../mod/install.php:96
-#: ../../mod/notifications.php:62 ../../mod/contacts.php:132
-#: ../../mod/settings.php:41 ../../mod/settings.php:46
-#: ../../mod/settings.php:305 ../../mod/manage.php:75 ../../mod/network.php:6
-#: ../../mod/notes.php:20 ../../mod/attach.php:33 ../../mod/group.php:19
-#: ../../mod/viewconnections.php:21 ../../mod/register.php:27
-#: ../../mod/regmod.php:111 ../../mod/item.php:110
-#: ../../mod/profile_photo.php:19 ../../mod/profile_photo.php:133
-#: ../../mod/profile_photo.php:144 ../../mod/profile_photo.php:155
-#: ../../mod/message.php:8 ../../mod/message.php:116 ../../mod/admin.php:10
-#: ../../mod/wall_upload.php:42 ../../mod/follow.php:8
-#: ../../mod/display.php:108 ../../mod/profiles.php:7
-#: ../../mod/profiles.php:226 ../../mod/invite.php:13 ../../mod/invite.php:81
-#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:308
-#: ../../include/items.php:1930 ../../index.php:266
-msgid "Permission denied."
-msgstr "Přístup odmítnut."
-
-#: ../../mod/crepair.php:68 ../../mod/fsuggest.php:20
-#: ../../mod/fsuggest.php:92 ../../mod/contacts.php:240
-#: ../../mod/dfrn_confirm.php:114
-msgid "Contact not found."
-msgstr "Kontakt nenalezen."
-
-#: ../../mod/crepair.php:74
-msgid "Repair Contact Settings"
-msgstr "Opravit nastavení kontaktu"
-
-#: ../../mod/crepair.php:76
-msgid ""
-"<strong>WARNING: This is highly advanced</strong> and if you enter incorrect"
-" information your communications with this contact will stop working."
-msgstr ""
-"<strong>VAROVÃNÃ: Toto je velmi pokroÄilé nastavení,</strong> pokud zadáte "
-"nesprávné informace, komunikace s tímto kontaktem přestane fungovat."
-
-#: ../../mod/crepair.php:77
-msgid ""
-"Please use your browser 'Back' button <strong>now</strong> if you are "
-"uncertain what to do on this page."
-msgstr ""
-"Prosím použijte <strong>ihned</strong> v prohlížeÄi tlaÄítko \"zpÄ›t\" pokud "
-"si nejste jistí co dělat na této stránce."
-
-#: ../../mod/crepair.php:85 ../../mod/admin.php:464 ../../mod/admin.php:473
-msgid "Name"
-msgstr "Jméno"
-
-#: ../../mod/crepair.php:86
-msgid "Account Nickname"
-msgstr "PÅ™ezdívka úÄtu"
-
-#: ../../mod/crepair.php:87
-msgid "Account URL"
-msgstr "URL adresa úÄtu"
-
-#: ../../mod/crepair.php:88
-msgid "Friend Request URL"
-msgstr "Žádost o přátelství URL"
-
-#: ../../mod/crepair.php:89
-msgid "Friend Confirm URL"
-msgstr "URL adresa potvrzení přátelství"
-
-#: ../../mod/crepair.php:90
-msgid "Notification Endpoint URL"
-msgstr "NotifikaÄní URL adresa"
-
-#: ../../mod/crepair.php:91
-msgid "Poll/Feed URL"
-msgstr "Poll/Feed URL adresa"
-
-#: ../../mod/crepair.php:100 ../../mod/fsuggest.php:107
-#: ../../mod/events.php:333 ../../mod/photos.php:877 ../../mod/photos.php:934
-#: ../../mod/photos.php:1144 ../../mod/photos.php:1184
-#: ../../mod/photos.php:1223 ../../mod/photos.php:1254
-#: ../../mod/install.php:137 ../../mod/contacts.php:296
-#: ../../mod/settings.php:482 ../../mod/manage.php:106 ../../mod/group.php:84
-#: ../../mod/group.php:167 ../../mod/admin.php:298 ../../mod/admin.php:461
-#: ../../mod/admin.php:587 ../../mod/admin.php:652 ../../mod/profiles.php:372
-#: ../../mod/invite.php:106 ../../addon/facebook/facebook.php:366
-#: ../../addon/randplace/randplace.php:178
-#: ../../addon/impressum/impressum.php:69 ../../addon/oembed/oembed.php:41
-#: ../../addon/statusnet/statusnet.php:274
-#: ../../addon/statusnet/statusnet.php:288
-#: ../../addon/statusnet/statusnet.php:314
-#: ../../addon/statusnet/statusnet.php:321
-#: ../../addon/statusnet/statusnet.php:343
-#: ../../addon/statusnet/statusnet.php:468 ../../addon/piwik/piwik.php:76
-#: ../../addon/twitter/twitter.php:171 ../../addon/twitter/twitter.php:194
-#: ../../addon/twitter/twitter.php:280 ../../include/conversation.php:409
-msgid "Submit"
-msgstr "Odeslat"
-
-#: ../../mod/help.php:27
-msgid "Help:"
-msgstr "Nápověda:"
-
-#: ../../mod/help.php:31 ../../include/nav.php:64
-msgid "Help"
-msgstr "Nápověda"
-
-#: ../../mod/wall_attach.php:57
-#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "Velikost souboru přesáhla limit %d"
-
-#: ../../mod/wall_attach.php:87 ../../mod/wall_attach.php:98
-msgid "File upload failed."
-msgstr "Nahrání souboru se nezdařilo."
-
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
-msgstr "Návrhy přátelství odeslány "
-
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
-msgstr "Navrhněte přátelé"
-
-#: ../../mod/fsuggest.php:99
-#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Navrhněte přátelé pro uživatele %s"
-
-#: ../../mod/events.php:112 ../../mod/photos.php:834 ../../mod/notes.php:46
-#: ../../mod/profile.php:116
-msgid "Status"
-msgstr "Stav"
-
-#: ../../mod/events.php:113 ../../mod/photos.php:835 ../../mod/notes.php:47
-#: ../../mod/profperm.php:103 ../../mod/profile.php:117
-#: ../../include/profile_advanced.php:7
-msgid "Profile"
-msgstr "Profil"
-
-#: ../../mod/events.php:114 ../../mod/photos.php:836 ../../mod/notes.php:48
-#: ../../mod/profile.php:118
-msgid "Photos"
-msgstr "Fotografie"
-
-#: ../../mod/events.php:115 ../../mod/events.php:120 ../../mod/photos.php:837
-#: ../../mod/notes.php:49 ../../mod/profile.php:119
-msgid "Events"
-msgstr "Události"
-
-#: ../../mod/events.php:116 ../../mod/photos.php:838 ../../mod/notes.php:50
-#: ../../mod/notes.php:55 ../../mod/profile.php:120
-msgid "Personal Notes"
-msgstr "Osobní poznámky"
-
-#: ../../mod/events.php:210
-msgid "Create New Event"
-msgstr "Vytvořit novou událost"
-
-#: ../../mod/events.php:213
-msgid "Previous"
-msgstr "Předchozí"
-
-#: ../../mod/events.php:216
-msgid "Next"
-msgstr "Následující"
-
-#: ../../mod/events.php:223
-msgid "l, F j"
-msgstr "l, F j"
-
-#: ../../mod/events.php:235
-msgid "Edit event"
-msgstr "Editovat událost"
-
-#: ../../mod/events.php:237 ../../include/text.php:846
-msgid "link to source"
-msgstr "odkaz na zdroj"
-
-#: ../../mod/events.php:305
-msgid "hour:minute"
-msgstr "hodina:minuta"
-
-#: ../../mod/events.php:314
-msgid "Event details"
-msgstr "Detaily události"
-
-#: ../../mod/events.php:315
-#, php-format
-msgid "Format is %s %s. Starting date and Description are required."
-msgstr "Formát je %s %s. Datum zahájení a popis jsou povinné."
-
-#: ../../mod/events.php:316
-msgid "Event Starts:"
-msgstr "Událost zaÄíná:"
-
-#: ../../mod/events.php:319
-msgid "Finish date/time is not known or not relevant"
-msgstr "Datum/Äas konce není zadán nebo není relevantní"
-
-#: ../../mod/events.php:321
-msgid "Event Finishes:"
-msgstr "Akce konÄí:"
-
-#: ../../mod/events.php:324
-msgid "Adjust for viewer timezone"
-msgstr "Nastavit Äasové pásmo pro uživatele s právem pro Ätení"
-
-#: ../../mod/events.php:326
-msgid "Description:"
-msgstr "Popis:"
-
-#: ../../mod/events.php:328 ../../include/event.php:37 ../../boot.php:868
-msgid "Location:"
-msgstr "Místo:"
-
-#: ../../mod/events.php:330
-msgid "Share this event"
-msgstr "Sdílet tuto událost"
-
-#: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94
-#: ../../mod/dfrn_request.php:644 ../../addon/js_upload/js_upload.php:45
-msgid "Cancel"
-msgstr "Zrušit"
-
-#: ../../mod/tagrm.php:41
-msgid "Tag removed"
-msgstr "Štítek odstraněn"
-
-#: ../../mod/tagrm.php:79
-msgid "Remove Item Tag"
-msgstr "Odebrat štítek položky"
-
-#: ../../mod/tagrm.php:81
-msgid "Select a tag to remove: "
-msgstr "Vyberte štítek k odebrání:"
-
-#: ../../mod/tagrm.php:93
-msgid "Remove"
-msgstr "Odstranit"
-
-#: ../../mod/dfrn_poll.php:90 ../../mod/dfrn_poll.php:516
-#, php-format
-msgid "%s welcomes %s"
-msgstr "%s vítá %s "
-
-#: ../../mod/photos.php:37
-msgid "Photo Albums"
-msgstr "Fotoalba"
-
-#: ../../mod/photos.php:45 ../../mod/photos.php:143 ../../mod/photos.php:857
-#: ../../mod/photos.php:926 ../../mod/photos.php:941 ../../mod/photos.php:1332
-#: ../../mod/photos.php:1344
-msgid "Contact Photos"
-msgstr "Fotogalerie kontaktu"
-
-#: ../../mod/photos.php:57 ../../mod/settings.php:9
-msgid "everybody"
-msgstr "Žádost o připojení selhala nebo byla zrušena."
-
-#: ../../mod/photos.php:132
-msgid "Contact information unavailable"
-msgstr "Kontakt byl zablokován"
-
-#: ../../mod/photos.php:143 ../../mod/photos.php:577 ../../mod/photos.php:926
-#: ../../mod/photos.php:941 ../../mod/register.php:316
-#: ../../mod/register.php:323 ../../mod/register.php:330
-#: ../../mod/profile_photo.php:58 ../../mod/profile_photo.php:65
-#: ../../mod/profile_photo.php:72 ../../mod/profile_photo.php:160
-#: ../../mod/profile_photo.php:236 ../../mod/profile_photo.php:245
-msgid "Profile Photos"
-msgstr "Profilové fotografie"
-
-#: ../../mod/photos.php:153
-msgid "Album not found."
-msgstr "Album nenalezeno."
-
-#: ../../mod/photos.php:171 ../../mod/photos.php:935
-msgid "Delete Album"
-msgstr "Smazat album"
-
-#: ../../mod/photos.php:234 ../../mod/photos.php:1145
-msgid "Delete Photo"
-msgstr "Smazat fotografii"
-
-#: ../../mod/photos.php:508
-msgid "was tagged in a"
-msgstr "štítek byl přidán v"
-
-#: ../../mod/photos.php:508 ../../mod/like.php:110
-#: ../../include/diaspora.php:446 ../../include/conversation.php:31
-msgid "photo"
-msgstr "fotografie"
-
-#: ../../mod/photos.php:508
-msgid "by"
-msgstr "od"
-
-#: ../../mod/photos.php:608 ../../addon/js_upload/js_upload.php:310
-msgid "Image exceeds size limit of "
-msgstr "Velikost obrázku pÅ™ekraÄuje limit velikosti"
-
-#: ../../mod/photos.php:616
-msgid "Image file is empty."
-msgstr "Soubor obrázku je prázdný."
-
-#: ../../mod/photos.php:630 ../../mod/profile_photo.php:118
-#: ../../mod/wall_upload.php:65
-msgid "Unable to process image."
-msgstr "Obrázek není možné zprocesovat"
-
-#: ../../mod/photos.php:650 ../../mod/profile_photo.php:241
-#: ../../mod/wall_upload.php:84
-msgid "Image upload failed."
-msgstr "Nahrání obrázku selhalo."
-
-#: ../../mod/photos.php:733 ../../mod/community.php:9
-#: ../../mod/dfrn_request.php:591 ../../mod/viewconnections.php:16
-#: ../../mod/display.php:7 ../../mod/search.php:13 ../../mod/directory.php:20
-msgid "Public access denied."
-msgstr "Veřejný přístup odepřen."
-
-#: ../../mod/photos.php:743
-msgid "No photos selected"
-msgstr "Není vybrána žádná fotografie"
-
-#: ../../mod/photos.php:820
-msgid "Access to this item is restricted."
-msgstr "Přístup k této položce je omezen."
-
-#: ../../mod/photos.php:884
-msgid "Upload Photos"
-msgstr "Nahrání fotografií "
-
-#: ../../mod/photos.php:887 ../../mod/photos.php:930
-msgid "New album name: "
-msgstr "Název nového alba:"
-
-#: ../../mod/photos.php:888
-msgid "or existing album name: "
-msgstr "nebo stávající název alba:"
-
-#: ../../mod/photos.php:890 ../../mod/photos.php:1140
-msgid "Permissions"
-msgstr "Oprávnění:"
-
-#: ../../mod/photos.php:945
-msgid "Edit Album"
-msgstr "Edituj album"
-
-#: ../../mod/photos.php:955 ../../mod/photos.php:1362
-msgid "View Photo"
-msgstr "Zobraz fotografii"
-
-#: ../../mod/photos.php:984
-msgid "Photo not available"
-msgstr "Fotografie není k dispozici"
-
-#: ../../mod/photos.php:1033
-msgid "Edit photo"
-msgstr "Editovat fotografii"
-
-#: ../../mod/photos.php:1034
-msgid "Use as profile photo"
-msgstr "Použít jako profilovou fotografii"
-
-#: ../../mod/photos.php:1040 ../../include/conversation.php:342
-msgid "Private Message"
-msgstr "Soukromá zpráva"
-
-#: ../../mod/photos.php:1051
-msgid "View Full Size"
-msgstr "Zobrazit v plné velikosti"
-
-#: ../../mod/photos.php:1119
-msgid "Tags: "
-msgstr "Štítky:"
-
-#: ../../mod/photos.php:1122
-msgid "[Remove any tag]"
-msgstr "[Odstranit všechny štítky]"
-
-#: ../../mod/photos.php:1133
-msgid "New album name"
-msgstr "Nové jméno alba"
-
-#: ../../mod/photos.php:1136
-msgid "Caption"
-msgstr "Titulek"
-
-#: ../../mod/photos.php:1138
-msgid "Add a Tag"
-msgstr "Přidat štítek"
-
-#: ../../mod/photos.php:1142
-msgid ""
-"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-msgstr ""
-"Příklad: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-
-#: ../../mod/photos.php:1162 ../../include/conversation.php:390
-msgid "I like this (toggle)"
-msgstr "Líbí se mi to (pÅ™epínaÄ)"
-
-#: ../../mod/photos.php:1163 ../../include/conversation.php:391
-msgid "I don't like this (toggle)"
-msgstr "Nelíbí se mi to (pÅ™epínaÄ)"
-
-#: ../../mod/photos.php:1164 ../../include/conversation.php:392
-#: ../../include/conversation.php:746
-msgid "Share"
-msgstr "Sdílet"
-
-#: ../../mod/photos.php:1165 ../../mod/editpost.php:99
-#: ../../mod/message.php:190 ../../mod/message.php:324
-#: ../../include/conversation.php:393 ../../include/conversation.php:756
-msgid "Please wait"
-msgstr "Čekejte prosím"
-
-#: ../../mod/photos.php:1181 ../../mod/photos.php:1220
-#: ../../mod/photos.php:1251 ../../include/conversation.php:406
-msgid "This is you"
-msgstr "To je Vy"
-
-#: ../../mod/photos.php:1183 ../../mod/photos.php:1222
-#: ../../mod/photos.php:1253 ../../include/conversation.php:408
-#: ../../boot.php:411
-msgid "Comment"
-msgstr "Okomentovat"
-
-#: ../../mod/photos.php:1281 ../../mod/group.php:154 ../../mod/admin.php:468
-#: ../../include/conversation.php:427
-msgid "Delete"
-msgstr "Odstranit"
-
-#: ../../mod/photos.php:1349
-msgid "Recent Photos"
-msgstr "Aktuální fotografie"
-
-#: ../../mod/photos.php:1353
-msgid "Upload New Photos"
-msgstr "Nahrát nové fotografie"
-
-#: ../../mod/photos.php:1366
-msgid "View Album"
-msgstr "Zobrazit album"
-
-#: ../../mod/community.php:14
-msgid "Not available."
-msgstr "Není k dispozici."
-
-#: ../../mod/community.php:26 ../../include/nav.php:79
-msgid "Community"
-msgstr "Komunita"
-
-#: ../../mod/community.php:56 ../../mod/search.php:65
-msgid "No results."
-msgstr "Žádné výsledky."
-
-#: ../../mod/community.php:83 ../../mod/network.php:302
-#: ../../mod/register.php:504 ../../mod/profile.php:241
-#: ../../mod/display.php:117
-msgid ""
-"Shared content is covered by the <a "
-"href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons "
-"Attribution 3.0</a> license."
-msgstr ""
-"Sdílený obsah je v souladu s <a "
-"href=\"http://creativecommons.org/licenses/by/3.0/\">Commons Creative "
-"3.0</a> licencí."
-
-#: ../../mod/editpost.php:17 ../../mod/editpost.php:27
-msgid "Item not found"
-msgstr "Položka nenalezena"
-
-#: ../../mod/editpost.php:32
-msgid "Edit post"
-msgstr "Upravit příspěvek"
-
-#: ../../mod/editpost.php:75 ../../include/conversation.php:732
-msgid "Post to Email"
-msgstr "Poslat příspěvek na e-mail"
-
-#: ../../mod/editpost.php:90 ../../include/group.php:171
-#: ../../include/group.php:172 ../../include/conversation.php:417
-msgid "Edit"
-msgstr "Upravit"
-
-#: ../../mod/editpost.php:91 ../../mod/message.php:188
-#: ../../mod/message.php:322 ../../include/conversation.php:747
-msgid "Upload photo"
-msgstr "Nahrát fotografii"
-
-#: ../../mod/editpost.php:92 ../../include/conversation.php:748
-msgid "Attach file"
-msgstr "Přiložit soubor"
-
-#: ../../mod/editpost.php:93 ../../mod/message.php:189
-#: ../../mod/message.php:323 ../../include/conversation.php:749
-msgid "Insert web link"
-msgstr "Vložit webový odkaz"
-
-#: ../../mod/editpost.php:94 ../../include/conversation.php:750
-msgid "Insert YouTube video"
-msgstr "Vložit YouTube video"
-
-#: ../../mod/editpost.php:95 ../../include/conversation.php:751
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Vložit Vorbis [.ogg] video"
-
-#: ../../mod/editpost.php:96 ../../include/conversation.php:752
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Vložit Vorbis [.ogg] audio"
-
-#: ../../mod/editpost.php:97 ../../include/conversation.php:753
-msgid "Set your location"
-msgstr "Nastavte vaši polohu"
-
-#: ../../mod/editpost.php:98 ../../include/conversation.php:754
-msgid "Clear browser location"
-msgstr "Odstranit adresu v prohlížeÄi"
-
-#: ../../mod/editpost.php:100 ../../include/conversation.php:757
-msgid "Permission settings"
-msgstr "Nastavení oprávnění"
-
-#: ../../mod/editpost.php:108 ../../include/conversation.php:765
-msgid "CC: email addresses"
-msgstr "skrytá kopie: e-mailové adresy"
-
-#: ../../mod/editpost.php:109 ../../include/conversation.php:766
-msgid "Public post"
-msgstr "Veřejný příspěvek"
-
-#: ../../mod/editpost.php:111 ../../include/conversation.php:768
-msgid "Example: bob@example.com, mary@example.com"
-msgstr "Příklad: bob@example.com, mary@example.com"
-
-#: ../../mod/dfrn_request.php:96
-msgid "This introduction has already been accepted."
-msgstr "Toto pozvání již bylo přijato"
-
-#: ../../mod/dfrn_request.php:120 ../../mod/dfrn_request.php:351
-msgid "Profile location is not valid or does not contain profile information."
-msgstr "Adresa profilu není platná nebo neobsahuje profilové informace"
-
-#: ../../mod/dfrn_request.php:125 ../../mod/dfrn_request.php:356
-msgid "Warning: profile location has no identifiable owner name."
-msgstr ""
-"Varování: umístění profilu nemá žádné identifikovatelné jméno vlastníka"
-
-#: ../../mod/dfrn_request.php:127 ../../mod/dfrn_request.php:358
-msgid "Warning: profile location has no profile photo."
-msgstr "Varování: umístění profilu nemá žádnou profilovou fotografii."
-
-#: ../../mod/dfrn_request.php:130 ../../mod/dfrn_request.php:361
-#, php-format
-msgid "%d required parameter was not found at the given location"
-msgid_plural "%d required parameters were not found at the given location"
-msgstr[0] "%d požadovaný parametr nebyl nalezen na daném místě"
-msgstr[1] "%d požadované parametry nebyly nalezeny na daném místě"
-msgstr[2] "%d požadované parametry nebyly nalezeny na daném místě"
-
-#: ../../mod/dfrn_request.php:168
-msgid "Introduction complete."
-msgstr "PÅ™edstavení dokonÄeno."
-
-#: ../../mod/dfrn_request.php:192
-msgid "Unrecoverable protocol error."
-msgstr "Neopravitelná chyba protokolu"
-
-#: ../../mod/dfrn_request.php:220
-msgid "Profile unavailable."
-msgstr "Profil není k dispozici."
-
-#: ../../mod/dfrn_request.php:245
-#, php-format
-msgid "%s has received too many connection requests today."
-msgstr "%s dnes obdržel příliš mnoho požadavků na připojení."
-
-#: ../../mod/dfrn_request.php:246
-msgid "Spam protection measures have been invoked."
-msgstr "Ochrana proti spamu byla aktivována"
-
-#: ../../mod/dfrn_request.php:247
-msgid "Friends are advised to please try again in 24 hours."
-msgstr "Přátelům se doporuÄuje to zkusit znovu za 24 hodin."
-
-#: ../../mod/dfrn_request.php:277
-msgid "Invalid locator"
-msgstr "Neplatný odkaz"
-
-#: ../../mod/dfrn_request.php:296
-msgid "Unable to resolve your name at the provided location."
-msgstr "Nepodařilo se zjistit Vaše jméno na zadané adrese."
-
-#: ../../mod/dfrn_request.php:309
-msgid "You have already introduced yourself here."
-msgstr "Již jste se zde zavedli."
-
-#: ../../mod/dfrn_request.php:313
-#, php-format
-msgid "Apparently you are already friends with %s."
-msgstr "Zřejmě jste již přátelé se %s."
-
-#: ../../mod/dfrn_request.php:334
-msgid "Invalid profile URL."
-msgstr "Neplatné URL profilu."
-
-#: ../../mod/dfrn_request.php:340 ../../mod/follow.php:20
-msgid "Disallowed profile URL."
-msgstr "Nepovolené URL profilu."
-
-#: ../../mod/dfrn_request.php:406 ../../mod/contacts.php:116
-msgid "Failed to update contact record."
-msgstr "Nepodařilo se aktualizovat kontakt."
-
-#: ../../mod/dfrn_request.php:427
-msgid "Your introduction has been sent."
-msgstr "Vaše žádost o propojení byla odeslána."
-
-#: ../../mod/dfrn_request.php:481
-msgid "Please login to confirm introduction."
-msgstr "Prosím přihlašte se k potvrzení žádosti o propojení."
-
-#: ../../mod/dfrn_request.php:495
-msgid ""
-"Incorrect identity currently logged in. Please login to "
-"<strong>this</strong> profile."
-msgstr ""
-"Jste přihlášeni pod nesprávnou identitou Prosím, přihlaste se do "
-"<strong>tohoto</strong> profilu."
-
-#: ../../mod/dfrn_request.php:507
-#, php-format
-msgid "Welcome home %s."
-msgstr "Vítejte doma %s."
-
-#: ../../mod/dfrn_request.php:508
-#, php-format
-msgid "Please confirm your introduction/connection request to %s."
-msgstr "Prosím potvrÄte VaÅ¡i žádost o pÅ™edstavení/spojení %s."
-
-#: ../../mod/dfrn_request.php:509
-msgid "Confirm"
-msgstr "Potvrdit"
-
-#: ../../mod/dfrn_request.php:542 ../../include/items.php:1519
-msgid "[Name Withheld]"
-msgstr "[Jméno odepřeno]"
-
-#: ../../mod/dfrn_request.php:549
-msgid "Introduction received at "
-msgstr "Pozvánka přijata v"
-
-#: ../../mod/dfrn_request.php:551 ../../mod/lostpass.php:44
-#: ../../mod/lostpass.php:106 ../../mod/register.php:369
-#: ../../mod/register.php:423 ../../mod/regmod.php:54
-#: ../../mod/dfrn_notify.php:291 ../../mod/dfrn_notify.php:547
-#: ../../mod/dfrn_confirm.php:674 ../../include/items.php:1528
-msgid "Administrator"
-msgstr "Administrátor"
-
-#: ../../mod/dfrn_request.php:630
-msgid "Friend/Connection Request"
-msgstr "Požadavek o přátelství / propojení"
-
-#: ../../mod/dfrn_request.php:631
-msgid ""
-"Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, "
-"testuser@identi.ca"
-msgstr ""
-"Příklady: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, "
-"testuser@identi.ca"
-
-#: ../../mod/dfrn_request.php:632
-msgid "Please answer the following:"
-msgstr "Odpovězte, prosím, následující:"
-
-#: ../../mod/dfrn_request.php:633
-#, php-format
-msgid "Does %s know you?"
-msgstr "Zná Vás uživatel %s ?"
-
-#: ../../mod/dfrn_request.php:634 ../../mod/settings.php:415
-#: ../../mod/settings.php:421 ../../mod/settings.php:429
-#: ../../mod/settings.php:433 ../../mod/register.php:498
-#: ../../mod/profiles.php:354
-msgid "Yes"
-msgstr "Ano"
-
-#: ../../mod/dfrn_request.php:635 ../../mod/settings.php:415
-#: ../../mod/settings.php:421 ../../mod/settings.php:429
-#: ../../mod/settings.php:433 ../../mod/register.php:499
-#: ../../mod/profiles.php:355
-msgid "No"
-msgstr "Ne"
-
-#: ../../mod/dfrn_request.php:636
-msgid "Add a personal note:"
-msgstr "Přidat osobní poznámku:"
-
-#: ../../mod/dfrn_request.php:637
-msgid ""
-"Please enter your 'Identity Address' from one of the following supported "
-"social networks:"
-msgstr ""
-"Prosím, zadejte adresu své 'identity' jedné z následujících podporovaných "
-"sociálních sítí:"
-
-#: ../../mod/dfrn_request.php:638
-msgid "Friendika"
-msgstr "Friendika"
-
-#: ../../mod/dfrn_request.php:639
-msgid "StatusNet/Federated Social Web"
-msgstr "StatusNet / Federativní Sociální Web"
-
-#: ../../mod/dfrn_request.php:640
-msgid "Private (secure) network"
-msgstr "Soukromá (zabezpeÄená) síť"
-
-#: ../../mod/dfrn_request.php:641
-msgid "Public (insecure) network"
-msgstr "VeÅ™ejná (nezabezpeÄená) síť"
-
-#: ../../mod/dfrn_request.php:642
-msgid "Your Identity Address:"
-msgstr "Adresa Vaší identity :"
-
-#: ../../mod/dfrn_request.php:643
-msgid "Submit Request"
-msgstr "Odeslat žádost"
-
-#: ../../mod/install.php:34
-msgid "Could not create/connect to database."
-msgstr "Nelze vytvořit / připojit se k databázi."
-
-#: ../../mod/install.php:39
-msgid "Connected to database."
-msgstr "Připojeno k databázi."
-
-#: ../../mod/install.php:75
-msgid "Proceed with Installation"
-msgstr "PokraÄovat v instalaci"
-
-#: ../../mod/install.php:77
-msgid "Your Friendika site database has been installed."
-msgstr "Vaše databáze Friendiky byla nainstalována."
-
-#: ../../mod/install.php:78
-msgid ""
-"IMPORTANT: You will need to [manually] setup a scheduled task for the "
-"poller."
-msgstr "Důležité: Budete si muset [ruÄnÄ›] plánovat úlohu pro poller."
-
-#: ../../mod/install.php:79 ../../mod/install.php:89 ../../mod/install.php:207
-msgid "Please see the file \"INSTALL.txt\"."
-msgstr "PÅ™eÄtÄ›te si prosím informace v souboru \"INSTALL.txt\"."
-
-#: ../../mod/install.php:81
-msgid "Proceed to registration"
-msgstr "PokraÄovat k registraci"
-
-#: ../../mod/install.php:87
-msgid "Database import failed."
-msgstr "Import databáze se nezdařil."
-
-#: ../../mod/install.php:88
-msgid ""
-"You may need to import the file \"database.sql\" manually using phpmyadmin "
-"or mysql."
-msgstr ""
-"Možná budete muset importovat soubor \"database.sql\" ruÄnÄ› pomocí "
-"phpMyAdmin Äi MySQL."
-
-#: ../../mod/install.php:101
-msgid "Welcome to Friendika."
-msgstr "Vítejte na Friendice."
-
-#: ../../mod/install.php:124
-msgid "Friendika Social Network"
-msgstr "Sociální síť Friendika "
-
-#: ../../mod/install.php:125
-msgid "Installation"
-msgstr "Instalace"
-
-#: ../../mod/install.php:126
-msgid ""
-"In order to install Friendika we need to know how to connect to your "
-"database."
-msgstr "Pro instalaci Friendika musíme vědět, jak se připojit k databázi."
-
-#: ../../mod/install.php:127
-msgid ""
-"Please contact your hosting provider or site administrator if you have "
-"questions about these settings."
-msgstr ""
-"Obraťte se na svého poskytovatele hostingu nebo administrátora serveru , "
-"pokud máte dotazy týkající se těchto nastavení."
-
-#: ../../mod/install.php:128
-msgid ""
-"The database you specify below should already exist. If it does not, please "
-"create it before continuing."
-msgstr ""
-"Databázi, kterou uvedete níže by již měla existovat. Pokud tak není, "
-"prosíme, vytvoÅ™te ji pÅ™ed pokraÄováním."
-
-#: ../../mod/install.php:129
-msgid "Database Server Name"
-msgstr "Jméno databázového serveru"
-
-#: ../../mod/install.php:130
-msgid "Database Login Name"
-msgstr "Přihlašovací jméno k databázi"
-
-#: ../../mod/install.php:131
-msgid "Database Login Password"
-msgstr "Heslo k databázovému úÄtu "
-
-#: ../../mod/install.php:132
-msgid "Database Name"
-msgstr "Jméno databáze"
-
-#: ../../mod/install.php:133
-msgid "Please select a default timezone for your website"
-msgstr "Prosím, vyberte výchozí Äasové pásmo pro vaÅ¡e webové stránky"
-
-#: ../../mod/install.php:134
-msgid ""
-"Site administrator email address. Your account email address must match this"
-" in order to use the web admin panel."
-msgstr ""
-"e-mailová adresa administrárota webu. E-mailová adresa vaÅ¡eho úÄtu se musí "
-"shodovat, aby bylo možné využívat panel webové administrace."
-
-#: ../../mod/install.php:153
-msgid "Could not find a command line version of PHP in the web server PATH."
-msgstr "Nelze najít verzi PHP pro příkazový řádek v PATH webového serveru."
-
-#: ../../mod/install.php:154
-msgid ""
-"This is required. Please adjust the configuration file .htconfig.php "
-"accordingly."
-msgstr ""
-"Tento krok je nutný. Upravte přísluÅ¡ným způsobem konfiguraÄní soubor "
-".htconfig.php."
-
-#: ../../mod/install.php:161
-msgid ""
-"The command line version of PHP on your system does not have "
-"\"register_argc_argv\" enabled."
-msgstr ""
-"Verze PHP pro příkazový řádek na vašem systému nemá povolen "
-"\"register_argc_argv\"."
-
-#: ../../mod/install.php:162
-msgid "This is required for message delivery to work."
-msgstr "Toto je nutné pro fungování doruÄování zpráv."
-
-#: ../../mod/install.php:184
-msgid ""
-"Error: the \"openssl_pkey_new\" function on this system is not able to "
-"generate encryption keys"
-msgstr ""
-"Chyba: funkce \"openssl_pkey_new\" na tomto systému není schopna generovat "
-"Å¡ifrovací klíÄe"
-
-#: ../../mod/install.php:185
-msgid ""
-"If running under Windows, please see "
-"\"http://www.php.net/manual/en/openssl.installation.php\"."
-msgstr ""
-"Pokud systém běží na Windows, seznamte se s "
-"\"http://www.php.net/manual/en/openssl.installation.php\"."
-
-#: ../../mod/install.php:194
-msgid ""
-"Error: Apache webserver mod-rewrite module is required but not installed."
-msgstr ""
-"Chyba: Požadovaný Apache webserver mod-rewrite modul není nainstalován."
-
-#: ../../mod/install.php:196
-msgid "Error: libCURL PHP module required but not installed."
-msgstr "Chyba: požadovaný libcurl PHP modul není nainstalován."
-
-#: ../../mod/install.php:198
-msgid ""
-"Error: GD graphics PHP module with JPEG support required but not installed."
-msgstr "Chyba: požadovaný GD graphics PHP modul není nainstalován."
-
-#: ../../mod/install.php:200
-msgid "Error: openssl PHP module required but not installed."
-msgstr "Chyba: požadovaný openssl PHP modul není nainstalován."
-
-#: ../../mod/install.php:202
-msgid "Error: mysqli PHP module required but not installed."
-msgstr "Chyba: požadovaný mysqli PHP modul není nainstalován."
-
-#: ../../mod/install.php:204
-msgid "Error: mb_string PHP module required but not installed."
-msgstr "Chyba: PHP modul mb_string je vyžadován, ale není nainstalován."
-
-#: ../../mod/install.php:216
-msgid ""
-"The web installer needs to be able to create a file called \".htconfig.php\""
-" in the top folder of your web server and it is unable to do so."
-msgstr ""
-"Webový instalátor musí být schopen vytvořit soubor s názvem "
-"\".htconfig.php\" v hlavním adresáři vašeho webového serveru ale nyní mu to "
-"není umožněno."
-
-#: ../../mod/install.php:217
-msgid ""
-"This is most often a permission setting, as the web server may not be able "
-"to write files in your folder - even if you can."
-msgstr ""
-"Toto je nejÄastÄ›ji nastavením oprávnÄ›ní, kdy webový server nemusí být "
-"schopen zapisovat soubory do vašeho adresáře - i když Vy můžete."
-
-#: ../../mod/install.php:218
-msgid ""
-"Please check with your site documentation or support people to see if this "
-"situation can be corrected."
-msgstr ""
-"Prosím, poraÄte se s dokumentací k VaÅ¡emu hostingu nebo s technickou "
-"podporou, zda-li lze tuto situaci napravit."
-
-#: ../../mod/install.php:219
-msgid ""
-"If not, you may be required to perform a manual installation. Please see the"
-" file \"INSTALL.txt\" for instructions."
-msgstr ""
-"Pokud ne, může být vyžadováno provedení ruÄní instalace. Prosím, seznamte se"
-" s návodem popsaným v souboru \"INSTALL.txt\"."
-
-#: ../../mod/install.php:228
-msgid ""
-"The database configuration file \".htconfig.php\" could not be written. "
-"Please use the enclosed text to create a configuration file in your web "
-"server root."
-msgstr ""
-"Databázový konfiguraÄní soubor \".htconfig.php\" nemohl být uložen. Prosím, "
-"použijte pÅ™iložený text k vytvoÅ™ení konfiguraÄního souboru ve vaÅ¡em "
-"kořenovém adresáři webového serveru."
-
-#: ../../mod/install.php:243
-msgid "Errors encountered creating database tables."
-msgstr "Při vytváření databázových tabulek došlo k chybám."
-
-#: ../../mod/update_community.php:18 ../../mod/update_network.php:22
-#: ../../mod/update_profile.php:41
-msgid "[Embedded content - reload page to view]"
-msgstr "[Vložený obsah - obnovení stránky pro zobrazení]"
-
-#: ../../mod/match.php:10
-msgid "Profile Match"
-msgstr "Shoda profilu"
-
-#: ../../mod/match.php:18
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr ""
-"Žádná klíÄová slova k porovnání. Prosím, pÅ™idejte klíÄová slova do VaÅ¡eho "
-"výchozího profilu."
-
-#: ../../mod/match.php:54
-msgid "No matches"
-msgstr "Žádné shody"
-
-#: ../../mod/lockview.php:39
-msgid "Remote privacy information not available."
-msgstr "Vzdálené soukromé informace nejsou k dispozici."
-
-#: ../../mod/lockview.php:43
-msgid "Visible to:"
-msgstr "Viditelné pro:"
-
-#: ../../mod/home.php:23
-#, php-format
-msgid "Welcome to %s"
-msgstr "Vítá Vás %s"
-
-#: ../../mod/notifications.php:26
-msgid "Invalid request identifier."
-msgstr "Neplatný identifikátor požadavku."
-
-#: ../../mod/notifications.php:35 ../../mod/notifications.php:118
-#: ../../mod/notifications.php:162
-msgid "Discard"
-msgstr "Odstranit"
-
-#: ../../mod/notifications.php:47 ../../mod/notifications.php:117
-#: ../../mod/notifications.php:161
-msgid "Ignore"
-msgstr "Ignorovat"
-
-#: ../../mod/notifications.php:74
-msgid "Pending Friend/Connect Notifications"
-msgstr "Čekající požadavky na Přátelství / Připojení "
-
-#: ../../mod/notifications.php:78
-msgid "Show Ignored Requests"
-msgstr "Zobrazit ignorované žádosti"
-
-#: ../../mod/notifications.php:78
-msgid "Hide Ignored Requests"
-msgstr "Skrýt ignorované žádosti"
-
-#: ../../mod/notifications.php:105 ../../mod/notifications.php:148
-msgid "Notification type: "
-msgstr "Typ oznámení:"
-
-#: ../../mod/notifications.php:106
-msgid "Friend Suggestion"
-msgstr "Návrh přátelství"
-
-#: ../../mod/notifications.php:108
-#, php-format
-msgid "suggested by %s"
-msgstr "navrhl %s"
-
-#: ../../mod/notifications.php:114 ../../mod/notifications.php:159
-#: ../../mod/admin.php:466
-msgid "Approve"
-msgstr "Schválit"
-
-#: ../../mod/notifications.php:133
-msgid "Claims to be known to you: "
-msgstr "Vaši údajní známí:"
-
-#: ../../mod/notifications.php:133
-msgid "yes"
-msgstr "ano"
-
-#: ../../mod/notifications.php:133
-msgid "no"
-msgstr "ne"
-
-#: ../../mod/notifications.php:139
-msgid "Approve as: "
-msgstr "Schválit jako:"
-
-#: ../../mod/notifications.php:140
-msgid "Friend"
-msgstr "Přítel"
-
-#: ../../mod/notifications.php:141
-msgid "Fan/Admirer"
-msgstr "Fanoušek / obdivovatel"
-
-#: ../../mod/notifications.php:149
-msgid "Friend/Connect Request"
-msgstr "Přítel / žádost o připojení"
-
-#: ../../mod/notifications.php:149
-msgid "New Follower"
-msgstr "Nový následovník"
-
-#: ../../mod/notifications.php:168
-msgid "No notifications."
-msgstr "Žádné oznámení."
-
-#: ../../mod/contacts.php:26
-msgid "Invite Friends"
-msgstr "Pozvat přátele"
-
-#: ../../mod/contacts.php:32
-#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "Pozvánka %d k dispozici"
-msgstr[1] "Pozvánky %d k dispozici"
-msgstr[2] "Pozvánky %d k dispozici"
-
-#: ../../mod/contacts.php:41
-msgid "Find People With Shared Interests"
-msgstr "Najít lidi se spoleÄnými zájmy"
-
-#: ../../mod/contacts.php:45
-msgid "Connect/Follow"
-msgstr "Připojit / Následovat"
-
-#: ../../mod/contacts.php:46
-msgid "Example: bob@example.com, http://example.com/barbara"
-msgstr "Příklad: jan@příklad.cz, http://příklad.cz/jana"
-
-#: ../../mod/contacts.php:47
-msgid "Follow"
-msgstr "Následovat"
-
-#: ../../mod/contacts.php:69 ../../mod/contacts.php:150
-msgid "Could not access contact record."
-msgstr "Nelze získat přístup k záznamu kontaktu."
-
-#: ../../mod/contacts.php:83
-msgid "Could not locate selected profile."
-msgstr "Nelze nalézt vybraný profil."
-
-#: ../../mod/contacts.php:114
-msgid "Contact updated."
-msgstr "Kontakt aktualizován."
-
-#: ../../mod/contacts.php:172
-msgid "Contact has been blocked"
-msgstr "Kontakt byl zablokován"
-
-#: ../../mod/contacts.php:172
-msgid "Contact has been unblocked"
-msgstr "Kontakt byl odblokován"
-
-#: ../../mod/contacts.php:186
-msgid "Contact has been ignored"
-msgstr "Kontakt bude ignorován"
-
-#: ../../mod/contacts.php:186
-msgid "Contact has been unignored"
-msgstr "Kontakt přestal být ignorován"
-
-#: ../../mod/contacts.php:207
-msgid "stopped following"
-msgstr "následování zastaveno"
-
-#: ../../mod/contacts.php:226
-msgid "Contact has been removed."
-msgstr "Kontakt byl odstraněn."
-
-#: ../../mod/contacts.php:254 ../../mod/contacts.php:397
-msgid "Mutual Friendship"
-msgstr "Vzájemné přátelství"
-
-#: ../../mod/contacts.php:258 ../../mod/contacts.php:401
-msgid "is a fan of yours"
-msgstr "je Váš fanoušek"
-
-#: ../../mod/contacts.php:263 ../../mod/contacts.php:405
-msgid "you are a fan of"
-msgstr "jste fanouškem"
-
-#: ../../mod/contacts.php:280
-msgid "Privacy Unavailable"
-msgstr "Ochrana soukromí není k dispozici"
-
-#: ../../mod/contacts.php:281
-msgid "Private communications are not available for this contact."
-msgstr "Soukromá komunikace není dostupná pro tento kontakt."
-
-#: ../../mod/contacts.php:284
-msgid "Never"
-msgstr "Nikdy"
-
-#: ../../mod/contacts.php:288
-msgid "(Update was successful)"
-msgstr "(Aktualizace byla úspěšná)"
-
-#: ../../mod/contacts.php:288
-msgid "(Update was not successful)"
-msgstr "(Aktualizace nebyla úspěšná)"
-
-#: ../../mod/contacts.php:291
-msgid "Suggest friends"
-msgstr "Navrhněte přátelé"
-
-#: ../../mod/contacts.php:295
-msgid "Contact Editor"
-msgstr "Editor kontaktu"
-
-#: ../../mod/contacts.php:297
-msgid "Profile Visibility"
-msgstr "Viditelnost profilu"
-
-#: ../../mod/contacts.php:298
-#, php-format
-msgid ""
-"Please choose the profile you would like to display to %s when viewing your "
-"profile securely."
-msgstr ""
-"Vyberte prosím profil, který chcete zobrazit %s pÅ™i zabezpeÄeném prohlížení "
-"vašeho profilu."
-
-#: ../../mod/contacts.php:299
-msgid "Contact Information / Notes"
-msgstr "Kontaktní informace / poznámky"
-
-#: ../../mod/contacts.php:300
-msgid "Online Reputation"
-msgstr "Online pověst"
-
-#: ../../mod/contacts.php:301
-msgid ""
-"Occasionally your friends may wish to inquire about this person's online "
-"legitimacy."
-msgstr ""
-"ObÄas mohou vaÅ¡i přátelé chtít informovat o online legitimitÄ› této osoby."
-
-#: ../../mod/contacts.php:302
-msgid ""
-"You may help them choose whether or not to interact with this person by "
-"providing a <em>reputation</em> to guide them."
-msgstr ""
-"Poskytnutím <em>pověsti</em> jim můžete pomoci se rozhodnout, zda-li s touto"
-" osobou komunikovat Äi nikoliv."
-
-#: ../../mod/contacts.php:303
-msgid ""
-"Please take a moment to elaborate on this selection if you feel it could be "
-"helpful to others."
-msgstr ""
-"Věnujte prosím chvilku vyplnění této volby, pokud máte pocit, že by mohlo "
-"být užiteÄné pro ostatní."
-
-#: ../../mod/contacts.php:304 ../../mod/contacts.php:421
-#: ../../mod/viewconnections.php:61
-#, php-format
-msgid "Visit %s's profile [%s]"
-msgstr "Navštivte profil uživatele %s [%s]"
-
-#: ../../mod/contacts.php:305
-msgid "Block/Unblock contact"
-msgstr "Blokovat / Odblokovat kontakt"
-
-#: ../../mod/contacts.php:306
-msgid "Ignore contact"
-msgstr "Ignorovat kontakt"
-
-#: ../../mod/contacts.php:307
-msgid "Repair contact URL settings"
-msgstr "Opravit nastavení URL kontaktu"
-
-#: ../../mod/contacts.php:308
-msgid "Repair contact URL settings (WARNING: Advanced)"
-msgstr "Opravit nastavení URL kontaktu (Varování: PokroÄilé)"
-
-#: ../../mod/contacts.php:309
-msgid "View conversations"
-msgstr "Zobrazit konverzace"
-
-#: ../../mod/contacts.php:312
-msgid "Delete contact"
-msgstr "Odstranit kontakt"
-
-#: ../../mod/contacts.php:314
-msgid "Last updated: "
-msgstr "Poslední aktualizace:"
-
-#: ../../mod/contacts.php:315
-msgid "Update public posts: "
-msgstr "Aktualizace veřejných příspěvků:"
-
-#: ../../mod/contacts.php:317 ../../mod/admin.php:701
-msgid "Update now"
-msgstr "Aktualizovat"
-
-#: ../../mod/contacts.php:320
-msgid "Unblock this contact"
-msgstr "Odblokovat tento kontakt"
-
-#: ../../mod/contacts.php:320
-msgid "Block this contact"
-msgstr "Blokovat tento kontakt"
-
-#: ../../mod/contacts.php:321
-msgid "Unignore this contact"
-msgstr "Přestat ignorovat tento kontakt"
-
-#: ../../mod/contacts.php:321
-msgid "Ignore this contact"
-msgstr "Ignorovat tento kontakt"
-
-#: ../../mod/contacts.php:324
-msgid "Currently blocked"
-msgstr "V souÄasnosti zablokováno"
-
-#: ../../mod/contacts.php:325
-msgid "Currently ignored"
-msgstr "V souÄasnosti ignorováno"
-
-#: ../../mod/contacts.php:356 ../../include/nav.php:110
-msgid "Contacts"
-msgstr "Kontakty"
-
-#: ../../mod/contacts.php:358
-msgid "Show Blocked Connections"
-msgstr "Zobrazit blokované spojení"
-
-#: ../../mod/contacts.php:358
-msgid "Hide Blocked Connections"
-msgstr "Skrýt blokované spojení"
-
-#: ../../mod/contacts.php:360 ../../mod/directory.php:55
-msgid "Finding: "
-msgstr "Zjištění: "
-
-#: ../../mod/contacts.php:361 ../../mod/directory.php:57
-msgid "Find"
-msgstr "Najít"
-
-#: ../../mod/contacts.php:422 ../../include/conversation.php:612
-msgid "Edit contact"
-msgstr "Editovat kontakt"
-
-#: ../../mod/lostpass.php:16
-msgid "No valid account found."
-msgstr "Nenalezen žádný platný úÄet."
-
-#: ../../mod/lostpass.php:31
-msgid "Password reset request issued. Check your email."
-msgstr ""
-"Žádost o obnovení hesla vyřízena. Zkontrolujte Vaši e-mailovou schránku."
-
-#: ../../mod/lostpass.php:42
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "Na %s bylo zažádáno o resetování hesla"
-
-#: ../../mod/lostpass.php:64
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr ""
-"Žádost nemohla být ověřena. (Možná jste ji odeslali již dříve.) Obnovení "
-"hesla se nezdařilo."
-
-#: ../../mod/lostpass.php:82 ../../boot.php:654
-msgid "Password Reset"
-msgstr "Obnovení hesla"
-
-#: ../../mod/lostpass.php:83
-msgid "Your password has been reset as requested."
-msgstr "Vaše heslo bylo na Vaše přání resetováno."
-
-#: ../../mod/lostpass.php:84
-msgid "Your new password is"
-msgstr "Vaše nové heslo je"
-
-#: ../../mod/lostpass.php:85
-msgid "Save or copy your new password - and then"
-msgstr "Uložte si nebo zkopírujte nové heslo - a pak"
-
-#: ../../mod/lostpass.php:86
-msgid "click here to login"
-msgstr "klikněte zde pro přihlášení"
-
-#: ../../mod/lostpass.php:87
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr ""
-"Vaše heslo může být změněno na stránce <em>nastavení</em> po úspěšném "
-"přihlášení."
-
-#: ../../mod/lostpass.php:118
-msgid "Forgot your Password?"
-msgstr "Zapomněli jste heslo?"
-
-#: ../../mod/lostpass.php:119
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr ""
-"Zadejte svůj e-mailovou adresu a odešlete žádost o zaslání Vašeho nového "
-"hesla. Poté zkontrolujte svůj e-mail pro další instrukce."
-
-#: ../../mod/lostpass.php:120
-msgid "Nickname or Email: "
-msgstr "Přezdívka nebo e-mail:"
-
-#: ../../mod/lostpass.php:121
-msgid "Reset"
-msgstr "Reset"
-
-#: ../../mod/settings.php:64
-msgid "Passwords do not match. Password unchanged."
-msgstr "Hesla se neshodují. Heslo nebylo změněno."
-
-#: ../../mod/settings.php:69
-msgid "Empty passwords are not allowed. Password unchanged."
-msgstr "Prázdné hesla nejsou povolena. Heslo nebylo změněno."
-
-#: ../../mod/settings.php:80
-msgid "Password changed."
-msgstr "Heslo bylo změněno."
-
-#: ../../mod/settings.php:82
-msgid "Password update failed. Please try again."
-msgstr "Aktualizace hesla se nezdařila. Zkuste to prosím znovu."
-
-#: ../../mod/settings.php:161
-msgid "Failed to connect with email account using the settings provided."
-msgstr "NepodaÅ™ilo se pÅ™ipojit k e-mailovému úÄtu pomocí dodaného nastavení."
-
-#: ../../mod/settings.php:188
-msgid " Please use a shorter name."
-msgstr "Prosím použijte kratší jméno."
-
-#: ../../mod/settings.php:190
-msgid " Name too short."
-msgstr "Jméno je příliš krátké."
-
-#: ../../mod/settings.php:196
-msgid " Not valid email."
-msgstr "Neplatný e-mail."
-
-#: ../../mod/settings.php:198
-msgid " Cannot change to that email."
-msgstr "Nelze provést změnu na tento e-mail."
-
-#: ../../mod/settings.php:257 ../../addon/facebook/facebook.php:297
-#: ../../addon/impressum/impressum.php:64 ../../addon/piwik/piwik.php:89
-#: ../../addon/twitter/twitter.php:275
-msgid "Settings updated."
-msgstr "Nastavení aktualizováno."
-
-#: ../../mod/settings.php:311 ../../include/nav.php:108
-msgid "Account settings"
-msgstr "Nastavení úÄtu"
-
-#: ../../mod/settings.php:312
-msgid "Plugin settings"
-msgstr "Nastavení pluginu"
-
-#: ../../mod/settings.php:322
-msgid "No Plugin settings configured"
-msgstr "Žádný doplněk není nastaven"
-
-#: ../../mod/settings.php:329 ../../addon/widgets/widgets.php:122
-msgid "Plugin Settings"
-msgstr "Nastavení doplňku"
-
-#: ../../mod/settings.php:382 ../../mod/admin.php:133 ../../mod/admin.php:443
-msgid "Normal Account"
-msgstr "Normální úÄet"
-
-#: ../../mod/settings.php:383
-msgid "This account is a normal personal profile"
-msgstr "Tento úÄet je běžný osobní profil"
-
-#: ../../mod/settings.php:386 ../../mod/admin.php:134 ../../mod/admin.php:444
-msgid "Soapbox Account"
-msgstr "Soapbox úÄet"
-
-#: ../../mod/settings.php:387
-msgid "Automatically approve all connection/friend requests as read-only fans"
-msgstr ""
-"Automaticky schválit všechna spojení / přátelství jako fanoušky s právem "
-"pouze ke Ätení"
-
-#: ../../mod/settings.php:390 ../../mod/admin.php:135 ../../mod/admin.php:445
-msgid "Community/Celebrity Account"
-msgstr "Komunitní úÄet / ÚÄet celebrity"
-
-#: ../../mod/settings.php:391
-msgid ""
-"Automatically approve all connection/friend requests as read-write fans"
-msgstr ""
-"Automaticky schvalovat všechny žádosti o spojení / přátelství, jako fanoušky"
-" s právem ke Ätení."
-
-#: ../../mod/settings.php:394 ../../mod/admin.php:136 ../../mod/admin.php:446
-msgid "Automatic Friend Account"
-msgstr "ÚÄet s automatickým schvalováním přátel"
-
-#: ../../mod/settings.php:395
-msgid "Automatically approve all connection/friend requests as friends"
-msgstr ""
-"Automaticky schvalovat všechny žádosti o spojení / přátelství jako přátele"
-
-#: ../../mod/settings.php:405
-msgid "OpenID:"
-msgstr "OpenID:"
-
-#: ../../mod/settings.php:405
-msgid "(Optional) Allow this OpenID to login to this account."
-msgstr "(Volitelné) Povolit OpenID pro pÅ™ihlášení k tomuto úÄtu."
-
-#: ../../mod/settings.php:415
-msgid "Publish your default profile in your local site directory?"
-msgstr "Publikovat Váš výchozí profil v místním adresáři webu?"
-
-#: ../../mod/settings.php:421
-msgid "Publish your default profile in the global social directory?"
-msgstr "Publikovat Váš výchozí profil v globální sociálním adresáři?"
-
-#: ../../mod/settings.php:429
-msgid "Hide your contact/friend list from viewers of your default profile?"
-msgstr ""
-"Skrýt Vaše kontaktní údaje a seznam přátel před návštěvníky ve Vašem "
-"výchozím profilu?"
-
-#: ../../mod/settings.php:433
-msgid "Hide profile details and all your messages from unknown viewers?"
-msgstr "Skrýt detaily profilu a všechny zprávy před neznámými uživateli?"
-
-#: ../../mod/settings.php:442
-msgid "Profile is <strong>not published</strong>."
-msgstr "Profil <strong>není zveřejněn</strong>."
-
-#: ../../mod/settings.php:461 ../../mod/profile_photo.php:196
-msgid "or"
-msgstr "nebo"
-
-#: ../../mod/settings.php:466
-msgid "Your Identity Address is"
-msgstr "Vaše adresa identity je"
-
-#: ../../mod/settings.php:480
-msgid "Account Settings"
-msgstr "Nastavení úÄtu"
-
-#: ../../mod/settings.php:487
-msgid "Export Personal Data"
-msgstr "Export osobních údajů"
-
-#: ../../mod/settings.php:490
-msgid "Password Settings"
-msgstr "Nastavení hesla"
-
-#: ../../mod/settings.php:491
-msgid "New Password:"
-msgstr "Nové heslo:"
-
-#: ../../mod/settings.php:492
-msgid "Confirm:"
-msgstr "PotvrÄte:"
-
-#: ../../mod/settings.php:492
-msgid "Leave password fields blank unless changing"
-msgstr "Pokud nechcete změnit heslo, položku hesla nevyplňujte"
-
-#: ../../mod/settings.php:496
-msgid "Basic Settings"
-msgstr "Základní nastavení"
-
-#: ../../mod/settings.php:497 ../../include/profile_advanced.php:10
-msgid "Full Name:"
-msgstr "Celé jméno:"
-
-#: ../../mod/settings.php:498
-msgid "Email Address:"
-msgstr "E-mailová adresa:"
-
-#: ../../mod/settings.php:499
-msgid "Your Timezone:"
-msgstr "VaÅ¡e Äasové pásmo:"
-
-#: ../../mod/settings.php:500
-msgid "Default Post Location:"
-msgstr "Výchozí umístění příspěvků:"
-
-#: ../../mod/settings.php:501
-msgid "Use Browser Location:"
-msgstr "Používat umístÄ›ní dle prohlížeÄe:"
-
-#: ../../mod/settings.php:502
-msgid "Display Theme:"
-msgstr "Vybrat grafickou Å¡ablonu:"
-
-#: ../../mod/settings.php:506
-msgid "Security and Privacy Settings"
-msgstr "Nastavení zabezpeÄení a soukromí"
-
-#: ../../mod/settings.php:508
-msgid "Maximum Friend Requests/Day:"
-msgstr "Maximální poÄet žádostí o přátelství za den:"
-
-#: ../../mod/settings.php:508
-msgid "(to prevent spam abuse)"
-msgstr "(Aby se zabránilo spamu)"
-
-#: ../../mod/settings.php:509
-msgid "Default Post Permissions"
-msgstr "Výchozí oprávnění pro příspěvek"
-
-#: ../../mod/settings.php:510
-msgid "(click to open/close)"
-msgstr "(Klikněte pro otevření/zavření)"
-
-#: ../../mod/settings.php:514
-msgid "Allow friends to post to your profile page:"
-msgstr "Povolit přátelům příspěvky na Vaši profilovou stránku:"
-
-#: ../../mod/settings.php:515
-msgid "Automatically expire posts after days:"
-msgstr "Po kolika dnech automaticky expirovat příspěvky:"
-
-#: ../../mod/settings.php:515
-msgid "If empty, posts will not expire. Expired posts will be deleted"
-msgstr ""
-"Pokud je prázdné, příspěvky nebudou nikdy expirovat. Expirované příspěvky "
-"budou vymazány"
-
-#: ../../mod/settings.php:524
-msgid "Notification Settings"
-msgstr "Nastavení notifikací"
-
-#: ../../mod/settings.php:525
-msgid "Send a notification email when:"
-msgstr "Poslat notifikaci e-mailem, když"
-
-#: ../../mod/settings.php:526
-msgid "You receive an introduction"
-msgstr "obdržíte žádost o propojení"
-
-#: ../../mod/settings.php:527
-msgid "Your introductions are confirmed"
-msgstr "Vaše žádosti jsou potvrzeny"
-
-#: ../../mod/settings.php:528
-msgid "Someone writes on your profile wall"
-msgstr "někdo Vám napíše na Vaši profilovou stránku"
-
-#: ../../mod/settings.php:529
-msgid "Someone writes a followup comment"
-msgstr "někdo Vám napíše následný komentář"
-
-#: ../../mod/settings.php:530
-msgid "You receive a private message"
-msgstr "obdržíte soukromou zprávu"
-
-#: ../../mod/settings.php:534
-msgid "Email/Mailbox Setup"
-msgstr "Nastavení e-mailu"
-
-#: ../../mod/settings.php:535
-msgid ""
-"If you wish to communicate with email contacts using this service "
-"(optional), please specify how to connect to your mailbox."
-msgstr ""
-"Pokud chcete komunikovat pomocí této služby s Vašimi kontakty z e-mailu "
-"(volitelné), uveÄte, jak se pÅ™ipojit k Vaší e-mailové schránce."
-
-#: ../../mod/settings.php:536
-msgid "Last successful email check:"
-msgstr "Poslední úspěšná kontrola e-mailu:"
-
-#: ../../mod/settings.php:537
-msgid "Email access is disabled on this site."
-msgstr "Přístup k elektronické poště je na tomto serveru zakázán."
-
-#: ../../mod/settings.php:538
-msgid "IMAP server name:"
-msgstr "jméno IMAP serveru:"
-
-#: ../../mod/settings.php:539
-msgid "IMAP port:"
-msgstr "IMAP port:"
-
-#: ../../mod/settings.php:540
-msgid "Security:"
-msgstr "ZabezpeÄení:"
-
-#: ../../mod/settings.php:540
-msgid "None"
-msgstr "Žádný"
-
-#: ../../mod/settings.php:541
-msgid "Email login name:"
-msgstr "přihlašovací jméno k e-mailu:"
-
-#: ../../mod/settings.php:542
-msgid "Email password:"
-msgstr "heslo k Vašemu e-mailu:"
-
-#: ../../mod/settings.php:543
-msgid "Reply-to address:"
-msgstr "Odpovědět na adresu:"
-
-#: ../../mod/settings.php:544
-msgid "Send public posts to all email contacts:"
-msgstr "Poslat veřejné příspěvky na všechny e-mailové kontakty:"
-
-#: ../../mod/settings.php:549
-msgid "Advanced Page Settings"
-msgstr "PokroÄilé nastavení stránky"
-
-#: ../../mod/manage.php:37
-#, php-format
-msgid "Welcome back %s"
-msgstr "Vítejte zpět %s"
-
-#: ../../mod/manage.php:87
-msgid "Manage Identities and/or Pages"
-msgstr "Správa identit a / nebo stránek"
-
-#: ../../mod/manage.php:90
-msgid ""
-"(Toggle between different identities or community/group pages which share "
-"your account details.)"
-msgstr ""
-"(Přepínání mezi různými identitami nebo komunitními / skupinovými stránkami,"
-" které sdílejí VaÅ¡e detaily úÄtu.)"
-
-#: ../../mod/manage.php:92
-msgid "Select an identity to manage: "
-msgstr "Vyberte identitu pro správu:"
-
-#: ../../mod/network.php:27
-msgid "View Conversations"
-msgstr "Zobrazit konverzace"
-
-#: ../../mod/network.php:29
-msgid "View New Items"
-msgstr "Zobrazit nové položky"
-
-#: ../../mod/network.php:35
-msgid "View Any Items"
-msgstr "Zobrazit všechny položky"
-
-#: ../../mod/network.php:43
-msgid "View Starred Items"
-msgstr "Zobrazit položky oznaÄené hvÄ›zdu"
-
-#: ../../mod/network.php:94
-#, php-format
-msgid "Warning: This group contains %s member from an insecure network."
-msgid_plural ""
-"Warning: This group contains %s members from an insecure network."
-msgstr[0] "UpozornÄ›ní: Tato skupina obsahuje %s Älena z nezabezpeÄené sítÄ›."
-msgstr[1] "UpozornÄ›ní: Tato skupina obsahuje %s Äleny z nezabezpeÄené sítÄ›."
-msgstr[2] "UpozornÄ›ní: Tato skupina obsahuje %s Äleny z nezabezpeÄené sítÄ›."
-
-#: ../../mod/network.php:97
-msgid "Private messages to this group are at risk of public disclosure."
-msgstr "Soukromé zprávy této skupině jsou vystaveny riziku prozrazení."
-
-#: ../../mod/network.php:164
-msgid "No such group"
-msgstr "Žádná taková skupina"
-
-#: ../../mod/network.php:175
-msgid "Group is empty"
-msgstr "Skupina je prázdná"
-
-#: ../../mod/network.php:180
-msgid "Group: "
-msgstr "Skupina:"
-
-#: ../../mod/network.php:190
-msgid "Contact: "
-msgstr "Kontakt:"
-
-#: ../../mod/network.php:192
-msgid "Private messages to this person are at risk of public disclosure."
-msgstr "Soukromé zprávy této osobě jsou vystaveny riziku prozrazení."
-
-#: ../../mod/network.php:197
-msgid "Invalid contact."
-msgstr "Neplatný kontakt."
-
-#: ../../mod/notes.php:74
-msgid "Save"
-msgstr "Uložit"
-
-#: ../../mod/newmember.php:6
-msgid "Welcome to Friendika"
-msgstr "Vítejte na Friendika"
-
-#: ../../mod/newmember.php:8
-msgid "New Member Checklist"
-msgstr "Seznam doporuÄení pro nového Älena"
-
-#: ../../mod/newmember.php:12
-msgid ""
-"We would like to offer some tips and links to help make your experience "
-"enjoyable. Click any item to visit the relevant page."
-msgstr ""
-"Dovolujeme si Vám nabídnout některé tipy a odkazy, abychom Vám zpříjemnili "
-"práci se systémem Friendika. Kliknutím na libovolnou položku navštívit "
-"příslušnou stránku."
-
-#: ../../mod/newmember.php:16
-msgid ""
-"On your <em>Settings</em> page - change your initial password. Also make a "
-"note of your Identity Address. This will be useful in making friends."
-msgstr ""
-"Na stránce <em>Nastavení</em> - změnit výchozí heslo. Poznamenejte si také "
-"adresu své identity. To může být užiteÄné pÅ™i navazování přátelství."
-
-#: ../../mod/newmember.php:18
-msgid ""
-"Review the other settings, particularly the privacy settings. An unpublished"
-" directory listing is like having an unlisted phone number. In general, you "
-"should probably publish your listing - unless all of your friends and "
-"potential friends know exactly how to find you."
-msgstr ""
-"Prohlédněte si další nastavení, a to zejména nastavení soukromí. "
-"NezveÅ™ejnÄ›ní svého úÄtu v adresáři je jako mít nezveÅ™ejnÄ›né telefonní Äíslo."
-" ObecnÄ› platí, že je lepší mít svůj úÄet zveÅ™ejnÄ›ný, leda by vÅ¡ichni vaÅ¡i "
-"potenciální přátelé věděli, jak vás přesně najít."
-
-#: ../../mod/newmember.php:20
-msgid ""
-"Upload a profile photo if you have not done so already. Studies have shown "
-"that people with real photos of themselves are ten times more likely to make"
-" friends than people who do not."
-msgstr ""
-"Nahrajte si svou profilovou fotku, pokud jste tak již neuÄinili. Studie "
-"ukázaly, že lidé se skuteÄnými fotografiemi mají desetkrát ÄastÄ›ji přátele "
-"než lidé, kteří nemají."
-
-#: ../../mod/newmember.php:23
-msgid ""
-"Authorise the Facebook Connector if you currently have a Facebook account "
-"and we will (optionally) import all your Facebook friends and conversations."
-msgstr ""
-"Jestliže máte úÄet na Facebooku, povolte konektor na Facebook a bude možné "
-"(na přání) importovat všechny Vaš přátele na Facebooku a všechny Vaše "
-"konverzace."
-
-#: ../../mod/newmember.php:28
-msgid ""
-"Enter your email access information on your Settings page if you wish to "
-"import and interact with friends or mailing lists from your email INBOX"
-msgstr ""
-"na stránce Nastavení zadejte informace pro přístup k Vaší e-mailové stránce,"
-" pokud si pÅ™ejete importovat a komunikovat s přáteli nebo distribuÄními "
-"skupinami z Vaší e-mailové schránky"
-
-#: ../../mod/newmember.php:30
-msgid ""
-"Edit your <strong>default</strong> profile to your liking. Review the "
-"settings for hiding your list of friends and hiding the profile from unknown"
-" visitors."
-msgstr ""
-"Upravit <strong>výchozí</strong> profil podle vašich představ. Prověřte "
-"nastavení pro skrytí Vašeho seznamu přátel a skrytí profilu před neznámými "
-"návštěvníky."
-
-#: ../../mod/newmember.php:32
-msgid ""
-"Set some public keywords for your default profile which describe your "
-"interests. We may be able to find other people with similar interests and "
-"suggest friendships."
-msgstr ""
-"Nastavte si nÄ›jaká veÅ™ejné klíÄová slova pro výchozí profil, která popisují "
-"vaše zájmy. Friendika Vám může nalézt další lidi s podobnými zájmy a "
-"navrhnout přátelství."
-
-#: ../../mod/newmember.php:34
-msgid ""
-"Your Contacts page is your gateway to managing friendships and connecting "
-"with friends on other networks. Typically you enter their address or site "
-"URL in the <em>Connect</em> dialog."
-msgstr ""
-"Stránka Kontakty je Vaším odrazovým můstkem k řízení přátelství a spojení s "
-"kamarády v jiných sítích. Obvykle zadáte jejich adresu nebo adresu URL do "
-"dialogu <em>Připojit</em>."
-
-#: ../../mod/newmember.php:36
-msgid ""
-"The Directory page lets you find other people in this network or other "
-"federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on "
-"their profile page. Provide your own Identity Address if requested."
-msgstr ""
-"Stránka Adresář Vám pomůže najít další lidi na tomto serveru nebo v jiných "
-"propojených serverech. Prostřednictvím odkazů <em>Připojení</em> nebo "
-"<em>Následovat</em> si prohlédnÄ›te jejich profilovou stránku. UveÄte svou "
-"vlastní adresu identity, je-li požadována."
-
-#: ../../mod/newmember.php:38
-msgid ""
-"Once you have made some friends, organize them into private conversation "
-"groups from the sidebar of your Contacts page and then you can interact with"
-" each group privately on your Network page."
-msgstr ""
-"Jakmile získáte nějaké přátele, uspořádejte si je do soukromých "
-"konverzaÄních skupin na postranním panelu vaší stránky Kontakty a pak můžete"
-" komunikovat s každou touto skupinu soukromě prostřednictvím stránky Síť."
-
-#: ../../mod/newmember.php:40
-msgid ""
-"Our <strong>help</strong> pages may be consulted for detail on other program"
-" features and resources."
-msgstr ""
-"Na stránkách <strong>Nápověda</strong> naleznete nejen další podrobnosti o "
-"všech funkcích Friendika ale také další zdroje informací."
-
-#: ../../mod/attach.php:8
-msgid "Item not available."
-msgstr "Položka není k dispozici."
-
-#: ../../mod/attach.php:20
-msgid "Item was not found."
-msgstr "Položka nebyla nalezena."
-
-#: ../../mod/group.php:27
-msgid "Group created."
-msgstr "Skupina vytvořena."
-
-#: ../../mod/group.php:33
-msgid "Could not create group."
-msgstr "Nelze vytvořit skupinu."
-
-#: ../../mod/group.php:43 ../../mod/group.php:123
-msgid "Group not found."
-msgstr "Skupina nenalezena."
-
-#: ../../mod/group.php:56
-msgid "Group name changed."
-msgstr "Název skupiny byl změněn."
-
-#: ../../mod/group.php:67 ../../mod/profperm.php:19 ../../index.php:265
-msgid "Permission denied"
-msgstr "NedostateÄné oprávnÄ›ní"
-
-#: ../../mod/group.php:82
-msgid "Create a group of contacts/friends."
-msgstr "Vytvořit skupinu kontaktů / přátel."
-
-#: ../../mod/group.php:83 ../../mod/group.php:166
-msgid "Group Name: "
-msgstr "Název skupiny:"
-
-#: ../../mod/group.php:98
-msgid "Group removed."
-msgstr "Skupina odstraněna. "
-
-#: ../../mod/group.php:100
-msgid "Unable to remove group."
-msgstr "Nelze odstranit skupinu."
-
-#: ../../mod/group.php:164 ../../mod/profperm.php:105
-msgid "Click on a contact to add or remove."
-msgstr "Klikněte na kontakt pro přidání nebo odebrání"
-
-#: ../../mod/group.php:165
-msgid "Group Editor"
-msgstr "Editor skupin"
-
-#: ../../mod/group.php:180
-msgid "Members"
-msgstr "Členové"
-
-#: ../../mod/group.php:195
-msgid "All Contacts"
-msgstr "VÅ¡echny kontakty"
-
-#: ../../mod/profperm.php:25 ../../mod/profperm.php:55
-msgid "Invalid profile identifier."
-msgstr "Neplatný identifikátor profilu."
-
-#: ../../mod/profperm.php:101
-msgid "Profile Visibility Editor"
-msgstr "Editor viditelnosti profilu "
-
-#: ../../mod/profperm.php:114
-msgid "Visible To"
-msgstr "Viditelný pro"
-
-#: ../../mod/profperm.php:128
-msgid "All Contacts (with secure profile access)"
-msgstr "VÅ¡echny kontakty (se zabezpeÄeným přístupovým profilem )"
-
-#: ../../mod/viewconnections.php:25 ../../include/text.php:555
-msgid "View Contacts"
-msgstr "Zobrazit kontakty"
-
-#: ../../mod/viewconnections.php:40
-msgid "No contacts."
-msgstr "Žádné kontakty."
-
-#: ../../mod/register.php:53
-msgid "An invitation is required."
-msgstr "Pozvánka je vyžadována."
-
-#: ../../mod/register.php:58
-msgid "Invitation could not be verified."
-msgstr "Pozvánka nemohla být ověřena."
-
-#: ../../mod/register.php:66
-msgid "Invalid OpenID url"
-msgstr "Neplatný odkaz OpenID"
-
-#: ../../mod/register.php:81
-msgid "Please enter the required information."
-msgstr "Zadejte prosím požadované informace."
-
-#: ../../mod/register.php:95
-msgid "Please use a shorter name."
-msgstr "Použijte prosím kratší jméno."
-
-#: ../../mod/register.php:97
-msgid "Name too short."
-msgstr "Jméno je příliš krátké."
-
-#: ../../mod/register.php:112
-msgid "That doesn't appear to be your full (First Last) name."
-msgstr "Nezdá se, že by to bylo vaše celé jméno (křestní jméno a příjmení)."
-
-#: ../../mod/register.php:117
-msgid "Your email domain is not among those allowed on this site."
-msgstr "Váš e-mailová doména není na tomto serveru mezi povolenými."
-
-#: ../../mod/register.php:120
-msgid "Not a valid email address."
-msgstr "Neplatná e-mailová adresa."
-
-#: ../../mod/register.php:130
-msgid "Cannot use that email."
-msgstr "Tento e-mail nelze použít."
-
-#: ../../mod/register.php:136
-msgid ""
-"Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and "
-"must also begin with a letter."
-msgstr ""
-"Vaše \"přezdívka\" může obsahovat pouze \"a-z\", \"0-9\", \"-\", a \"_\", a "
-"musí zaÄínat písmenem."
-
-#: ../../mod/register.php:142 ../../mod/register.php:243
-msgid "Nickname is already registered. Please choose another."
-msgstr "Přezdívka je již registrována. Prosím vyberte jinou."
-
-#: ../../mod/register.php:161
-msgid "SERIOUS ERROR: Generation of security keys failed."
-msgstr "Závažná chyba: Generování bezpeÄnostních klíÄů se nezdaÅ™ilo."
-
-#: ../../mod/register.php:229
-msgid "An error occurred during registration. Please try again."
-msgstr "Došlo k chybě při registraci. Zkuste to prosím znovu."
-
-#: ../../mod/register.php:265
-msgid "An error occurred creating your default profile. Please try again."
-msgstr ""
-"Došlo k chybě při vytváření Vašeho výchozího profilu. Zkuste to prosím "
-"znovu."
-
-#: ../../mod/register.php:367 ../../mod/regmod.php:52
-#, php-format
-msgid "Registration details for %s"
-msgstr "RegistraÄní údaje pro %s"
-
-#: ../../mod/register.php:375
-msgid ""
-"Registration successful. Please check your email for further instructions."
-msgstr ""
-"Registrace úspěšná. Zkontrolujte prosím svůj e-mail pro další instrukce."
-
-#: ../../mod/register.php:379
-msgid "Failed to send email message. Here is the message that failed."
-msgstr ""
-"Nepodařilo se odeslat zprávu na e-mail. Zde je zpráva, která nebyla "
-"odeslána."
-
-#: ../../mod/register.php:384
-msgid "Your registration can not be processed."
-msgstr "Vaši registraci nelze zpracovat."
-
-#: ../../mod/register.php:421
-#, php-format
-msgid "Registration request at %s"
-msgstr "Žádost o registraci na %s"
-
-#: ../../mod/register.php:430
-msgid "Your registration is pending approval by the site owner."
-msgstr "VaÅ¡e registrace Äeká na schválení vlastníkem serveru."
-
-#: ../../mod/register.php:479
-msgid ""
-"You may (optionally) fill in this form via OpenID by supplying your OpenID "
-"and clicking 'Register'."
-msgstr ""
-"Tento formulář můžete (volitelně) vyplnit s pomocí OpenID tím, že vyplníte "
-"své OpenID a kliknutete na tlaÄítko 'Zaregistrovat'."
-
-#: ../../mod/register.php:480
-msgid ""
-"If you are not familiar with OpenID, please leave that field blank and fill "
-"in the rest of the items."
-msgstr ""
-"Pokud nepoužíváte OpenID, nechte prosím toto pole prázdné a vyplňte zbylé "
-"položky."
-
-#: ../../mod/register.php:481
-msgid "Your OpenID (optional): "
-msgstr "Vaše OpenID (nepovinné):"
-
-#: ../../mod/register.php:495
-msgid "Include your profile in member directory?"
-msgstr "Uvést Váš profil v adresáři Älenů?"
-
-#: ../../mod/register.php:511
-msgid "Membership on this site is by invitation only."
-msgstr "Členství na tomto webu je pouze na pozvání."
-
-#: ../../mod/register.php:512
-msgid "Your invitation ID: "
-msgstr "Vaše pozvání ID:"
-
-#: ../../mod/register.php:515 ../../mod/admin.php:299
-msgid "Registration"
-msgstr "Registrace"
-
-#: ../../mod/register.php:523
-msgid "Your Full Name (e.g. Joe Smith): "
-msgstr "Vaše celé jméno (např. Jan Novák):"
-
-#: ../../mod/register.php:524
-msgid "Your Email Address: "
-msgstr "Vaše e-mailová adresa:"
-
-#: ../../mod/register.php:525
-msgid ""
-"Choose a profile nickname. This must begin with a text character. Your "
-"profile address on this site will then be "
-"'<strong>nickname@$sitename</strong>'."
-msgstr ""
-"Vyberte pÅ™ezdívku k profilu. Ta musí zaÄít s textovým znakem. VaÅ¡e profilová"
-" adresa na tomto webu pak bude \"<strong>přezdívka@$sitename</strong>\"."
-
-#: ../../mod/register.php:526
-msgid "Choose a nickname: "
-msgstr "Vyberte přezdívku:"
-
-#: ../../mod/register.php:529 ../../include/nav.php:59 ../../boot.php:637
-msgid "Register"
-msgstr "Registrovat"
-
-#: ../../mod/like.php:110 ../../addon/facebook/facebook.php:954
-#: ../../include/diaspora.php:446 ../../include/conversation.php:26
-#: ../../include/conversation.php:35
-msgid "status"
-msgstr "Stav"
-
-#: ../../mod/like.php:127 ../../addon/facebook/facebook.php:958
-#: ../../include/diaspora.php:463 ../../include/conversation.php:43
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s má rád %2$s' na %3$s"
-
-#: ../../mod/like.php:129 ../../include/diaspora.php:465
-#: ../../include/conversation.php:46
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr "%1$s nemá rád %2$s na %3$s"
-
-#: ../../mod/friendika.php:42
-msgid "This is Friendika version"
-msgstr "Toto je Friendika verze"
-
-#: ../../mod/friendika.php:43
-msgid "running at web location"
-msgstr "běžící na webu"
-
-#: ../../mod/friendika.php:45
-msgid ""
-"Shared content within the Friendika network is provided under the <a "
-"href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons "
-"Attribution 3.0 license</a>"
-msgstr ""
-"Sdílený obsah v síti Friendika je poskytována pod <a "
-"href=\"http://creativecommons.org/licenses/by/3.0/cz/\">licencí Creative "
-"Commons Attribution 3.0</a>"
-
-#: ../../mod/friendika.php:47
-msgid ""
-"Please visit <a "
-"href=\"http://project.friendika.com\">Project.Friendika.com</a> to learn "
-"more about the Friendika project."
-msgstr ""
-"Pokud se chcete dozvědět více o projektu Friendika, navštivte, prosím, <a "
-"href=\"http://project.friendika.com\">Project.Friendika.com</a>"
-
-#: ../../mod/friendika.php:49
-msgid "Bug reports and issues: please visit"
-msgstr "Pro hlášení chyb a námětů na změny navštivte:"
-
-#: ../../mod/friendika.php:50
-msgid ""
-"Suggestions, praise, donations, etc. - please email \"Info\" at Friendika - "
-"dot com"
-msgstr ""
-"Návrhy, chválu, dary, atd. - prosím pošlete na e-mail \"Info\" na Friendika "
-"teÄka com"
-
-#: ../../mod/friendika.php:55
-msgid "Installed plugins/addons/apps"
-msgstr "Nainstalované doplňky/aplikace"
-
-#: ../../mod/friendika.php:63
-msgid "No installed plugins/addons/apps"
-msgstr "Nejsou žádné nainstalované doplňky/aplikace"
-
-#: ../../mod/regmod.php:61
-msgid "Account approved."
-msgstr "ÚÄet schválen."
-
-#: ../../mod/regmod.php:93
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registrace zrušena pro %s"
-
-#: ../../mod/regmod.php:105
-msgid "Please login."
-msgstr "Přihlaste se, prosím."
-
-#: ../../mod/item.php:81
-msgid "Unable to locate original post."
-msgstr "Nelze nalézt původní příspěvek."
-
-#: ../../mod/item.php:196
-msgid "Empty post discarded."
-msgstr "Prázdný příspěvek odstraněn."
-
-#: ../../mod/item.php:296 ../../mod/message.php:93
-#: ../../mod/wall_upload.php:81 ../../mod/wall_upload.php:90
-#: ../../mod/wall_upload.php:97
-msgid "Wall Photos"
-msgstr "Fotografie na zdi"
-
-#: ../../mod/item.php:623 ../../mod/item.php:668 ../../mod/item.php:691
-#: ../../mod/item.php:734 ../../mod/dfrn_notify.php:293
-#: ../../mod/dfrn_notify.php:503 ../../mod/dfrn_notify.php:548
-#: ../../mod/dfrn_notify.php:634 ../../mod/dfrn_notify.php:677
-msgid "noreply"
-msgstr "bez odpovědi"
-
-#: ../../mod/item.php:667 ../../mod/item.php:733 ../../mod/dfrn_notify.php:676
-msgid "Administrator@"
-msgstr "Administrator@"
-
-#: ../../mod/item.php:670 ../../mod/dfrn_notify.php:550
-#: ../../mod/dfrn_notify.php:679
-#, php-format
-msgid "%s commented on an item at %s"
-msgstr "%s okomentoval položku v %s"
-
-#: ../../mod/item.php:736
-#, php-format
-msgid "%s posted to your profile wall at %s"
-msgstr "%s pÅ™idal příspÄ›vek na vaší profilovou zeÄ v %s"
-
-#: ../../mod/item.php:765
-msgid "System error. Post not saved."
-msgstr "Chyba systému. Příspěvek nebyl uložen."
-
-#: ../../mod/item.php:784
-#, php-format
-msgid ""
-"This message was sent to you by %s, a member of the Friendika social "
-"network."
-msgstr "Tuto zprávu Vám zaslal %s, Älen sociální sítÄ› Friendika."
-
-#: ../../mod/item.php:786
-#, php-format
-msgid "You may visit them online at %s"
-msgstr "Můžete je navštívit online na adrese %s"
-
-#: ../../mod/item.php:787
-msgid ""
-"Please contact the sender by replying to this post if you do not wish to "
-"receive these messages."
-msgstr ""
-"Pokud nechcete dostávat tyto zprávy, kontaktujte prosím odesilatele odpovědí"
-" na tento záznam."
-
-#: ../../mod/item.php:789
-#, php-format
-msgid "%s posted an update."
-msgstr "%s poslal aktualizaci."
-
-#: ../../mod/profile_photo.php:28
-msgid "Image uploaded but image cropping failed."
-msgstr "Obrázek byl odeslán, ale jeho oříznutí se nesdařilo."
-
-#: ../../mod/profile_photo.php:61 ../../mod/profile_photo.php:68
-#: ../../mod/profile_photo.php:75 ../../mod/profile_photo.php:248
-#, php-format
-msgid "Image size reduction [%s] failed."
-msgstr "Nepodařilo se snížit velikost obrázku [%s]."
-
-#: ../../mod/profile_photo.php:95
-msgid "Unable to process image"
-msgstr "Obrázek nelze zpracovat "
-
-#: ../../mod/profile_photo.php:109 ../../mod/wall_upload.php:56
-#, php-format
-msgid "Image exceeds size limit of %d"
-msgstr "Obrázek pÅ™ekroÄil limit velikosti %d"
-
-#: ../../mod/profile_photo.php:193
-msgid "Upload File:"
-msgstr "Nahrát soubor:"
-
-#: ../../mod/profile_photo.php:194
-msgid "Upload Profile Photo"
-msgstr "Nahrát profilovou fotografii"
-
-#: ../../mod/profile_photo.php:195
-msgid "Upload"
-msgstr "Nahrát"
-
-#: ../../mod/profile_photo.php:196
-msgid "skip this step"
-msgstr "pÅ™eskoÄit tento krok "
-
-#: ../../mod/profile_photo.php:196
-msgid "select a photo from your photo albums"
-msgstr "Vybrat fotografii z Vašich fotoalb"
-
-#: ../../mod/profile_photo.php:209
-msgid "Crop Image"
-msgstr "Oříznout obrázek"
-
-#: ../../mod/profile_photo.php:210
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Prosím, ořízněte tento obrázek pro optimální zobrazení."
-
-#: ../../mod/profile_photo.php:211
-msgid "Done Editing"
-msgstr "Editace dokonÄena"
-
-#: ../../mod/profile_photo.php:239
-msgid "Image uploaded successfully."
-msgstr "Obrázek byl úspěšně nahrán."
-
-#: ../../mod/hcard.php:11 ../../mod/profile.php:11 ../../boot.php:792
-msgid "No profile"
-msgstr "Žádný profil"
-
-#: ../../mod/removeme.php:42 ../../mod/removeme.php:45
-msgid "Remove My Account"
-msgstr "Odstranit můj úÄet"
-
-#: ../../mod/removeme.php:43
-msgid ""
-"This will completely remove your account. Once this has been done it is not "
-"recoverable."
-msgstr ""
-"Tímto bude kompletnÄ› odstranÄ›n váš úÄet. Jakmile bude úÄet odstranÄ›n, nebude"
-" už možné ho obnovit."
-
-#: ../../mod/removeme.php:44
-msgid "Please enter your password for verification:"
-msgstr "Prosím, zadejte své heslo pro ověření:"
-
-#: ../../mod/message.php:18
-msgid "No recipient selected."
-msgstr "Nevybrán příjemce."
-
-#: ../../mod/message.php:23
-msgid "[no subject]"
-msgstr "[bez předmětu]"
-
-#: ../../mod/message.php:34
-msgid "Unable to locate contact information."
-msgstr "Nepodařilo se najít kontaktní informace."
-
-#: ../../mod/message.php:102
-msgid "Message sent."
-msgstr "Zpráva odeslána."
-
-#: ../../mod/message.php:105
-msgid "Message could not be sent."
-msgstr "Zprávu se nepodařilo odeslat."
-
-#: ../../mod/message.php:125 ../../include/nav.php:102
-msgid "Messages"
-msgstr "Zprávy"
-
-#: ../../mod/message.php:126
-msgid "Inbox"
-msgstr "DoruÄená poÅ¡ta"
-
-#: ../../mod/message.php:127
-msgid "Outbox"
-msgstr "Odeslaná pošta"
-
-#: ../../mod/message.php:128
-msgid "New Message"
-msgstr "Nová zpráva"
-
-#: ../../mod/message.php:142
-msgid "Message deleted."
-msgstr "Zpráva odstraněna."
-
-#: ../../mod/message.php:158
-msgid "Conversation removed."
-msgstr "Konverzace odstraněna."
-
-#: ../../mod/message.php:172 ../../include/conversation.php:699
-msgid "Please enter a link URL:"
-msgstr "Zadejte prosím URL odkaz:"
-
-#: ../../mod/message.php:180
-msgid "Send Private Message"
-msgstr "Odeslat soukromou zprávu"
-
-#: ../../mod/message.php:181 ../../mod/message.php:315
-msgid "To:"
-msgstr "Adresát:"
-
-#: ../../mod/message.php:182 ../../mod/message.php:316
-msgid "Subject:"
-msgstr "Předmět:"
-
-#: ../../mod/message.php:185 ../../mod/message.php:319
-#: ../../mod/invite.php:101
-msgid "Your message:"
-msgstr "Vaše zpráva:"
-
-#: ../../mod/message.php:224
-msgid "No messages."
-msgstr "Žádné zprávy."
-
-#: ../../mod/message.php:237
-msgid "Delete conversation"
-msgstr "Odstranit konverzaci"
-
-#: ../../mod/message.php:240
-msgid "D, d M Y - g:i A"
-msgstr "D M R - g:i A"
-
-#: ../../mod/message.php:267
-msgid "Message not available."
-msgstr "Zpráva není k dispozici."
-
-#: ../../mod/message.php:304
-msgid "Delete message"
-msgstr "Smazat zprávu"
-
-#: ../../mod/message.php:314
-msgid "Send Reply"
-msgstr "Poslat odpovÄ›Ä"
-
-#: ../../mod/admin.php:66 ../../mod/admin.php:297
-msgid "Site"
-msgstr "Web"
-
-#: ../../mod/admin.php:67 ../../mod/admin.php:460 ../../mod/admin.php:472
-msgid "Users"
-msgstr "Uživatelé"
-
-#: ../../mod/admin.php:68 ../../mod/admin.php:549 ../../mod/admin.php:586
-msgid "Plugins"
-msgstr "Pluginy"
-
-#: ../../mod/admin.php:69
-msgid "Update"
-msgstr "Aktualizace"
-
-#: ../../mod/admin.php:83 ../../mod/admin.php:651
-msgid "Logs"
-msgstr "Logy"
-
-#: ../../mod/admin.php:88
-msgid "User registrations waiting for confirmation"
-msgstr "Registrace uživatele Äeká na potvrzení"
-
-#: ../../mod/admin.php:118 ../../mod/admin.php:502 ../../mod/display.php:25
-#: ../../mod/display.php:112 ../../include/items.php:1842
-msgid "Item not found."
-msgstr "Položka nenalezena."
-
-#: ../../mod/admin.php:151 ../../mod/admin.php:296 ../../mod/admin.php:459
-#: ../../mod/admin.php:548 ../../mod/admin.php:585 ../../mod/admin.php:650
-msgid "Administration"
-msgstr "Administrace"
-
-#: ../../mod/admin.php:152
-msgid "Summary"
-msgstr "Shrnutí"
-
-#: ../../mod/admin.php:153
-msgid "Registered users"
-msgstr "Registrovaní uživatelé"
-
-#: ../../mod/admin.php:155
-msgid "Pending registrations"
-msgstr "Čekající registrace"
-
-#: ../../mod/admin.php:156
-msgid "Version"
-msgstr "Verze"
-
-#: ../../mod/admin.php:158
-msgid "Active plugins"
-msgstr "Aktivní pluginy"
-
-#: ../../mod/admin.php:245
-msgid "Site settings updated."
-msgstr "Nastavení webu aktualizováno."
-
-#: ../../mod/admin.php:289
-msgid "Closed"
-msgstr "Uzavřít"
-
-#: ../../mod/admin.php:290
-msgid "Requires approval"
-msgstr "Vyžaduje schválení"
-
-#: ../../mod/admin.php:291
-msgid "Open"
-msgstr "Otevřená"
-
-#: ../../mod/admin.php:300
-msgid "File upload"
-msgstr "Nahrání souborů"
-
-#: ../../mod/admin.php:301
-msgid "Policies"
-msgstr "Politiky"
-
-#: ../../mod/admin.php:302
-msgid "Advanced"
-msgstr "PokroÄilé"
-
-#: ../../mod/admin.php:306 ../../addon/statusnet/statusnet.php:459
-msgid "Site name"
-msgstr "Název webu"
-
-#: ../../mod/admin.php:307
-msgid "Banner/Logo"
-msgstr "Banner/logo"
-
-#: ../../mod/admin.php:308
-msgid "System language"
-msgstr "Systémový jazyk"
-
-#: ../../mod/admin.php:309
-msgid "System theme"
-msgstr "Grafická šablona systému "
-
-#: ../../mod/admin.php:311
-msgid "Maximum image size"
-msgstr "Maximální velikost obrazu"
-
-#: ../../mod/admin.php:313
-msgid "Register policy"
-msgstr "Politika registrace"
-
-#: ../../mod/admin.php:314
-msgid "Register text"
-msgstr "Registrace textu"
-
-#: ../../mod/admin.php:315
-msgid "Allowed friend domains"
-msgstr "Povolené domény přátel"
-
-#: ../../mod/admin.php:316
-msgid "Allowed email domains"
-msgstr "Povolené e-mailové domény"
-
-#: ../../mod/admin.php:317
-msgid "Block public"
-msgstr "Blokovat veřejnost"
-
-#: ../../mod/admin.php:318
-msgid "Force publish"
-msgstr "Publikovat"
-
-#: ../../mod/admin.php:319
-msgid "Global directory update URL"
-msgstr "aktualizace URL adresy Globálního adresáře "
-
-#: ../../mod/admin.php:321
-msgid "Block multiple registrations"
-msgstr "Blokovat více registrací"
-
-#: ../../mod/admin.php:322
-msgid "OpenID support"
-msgstr "podpora OpenID"
-
-#: ../../mod/admin.php:323
-msgid "Gravatar support"
-msgstr "podpora Gravatar"
-
-#: ../../mod/admin.php:324
-msgid "Fullname check"
-msgstr "kontrola úplného jména"
-
-#: ../../mod/admin.php:325
-msgid "UTF-8 Regular expressions"
-msgstr "UTF-8 Regulární výrazy"
-
-#: ../../mod/admin.php:326
-msgid "Show Community Page"
-msgstr "Zobrazit stránku komunity"
-
-#: ../../mod/admin.php:327
-msgid "Enable OStatus support"
-msgstr "Zapnout podporu OStatus"
-
-#: ../../mod/admin.php:328
-msgid "Only allow Friendika contacts"
-msgstr "Povolit pouze Friendika kontakty "
-
-#: ../../mod/admin.php:329
-msgid "Verify SSL"
-msgstr "Ověřit SSL"
-
-#: ../../mod/admin.php:330
-msgid "Proxy user"
-msgstr "Proxy uživatel"
-
-#: ../../mod/admin.php:331
-msgid "Proxy URL"
-msgstr "Proxy URL adresa"
-
-#: ../../mod/admin.php:332
-msgid "Network timeout"
-msgstr "Äas síťového spojení vyprÅ¡elo (timeout)"
-
-#: ../../mod/admin.php:353
-#, php-format
-msgid "%s user blocked"
-msgid_plural "%s users blocked/unblocked"
-msgstr[0] "%s uživatel zablokován"
-msgstr[1] "%s uživatelů zablokováno / odblokováno"
-msgstr[2] "%s uživatelů zablokováno / odblokováno"
-
-#: ../../mod/admin.php:360
-#, php-format
-msgid "%s user deleted"
-msgid_plural "%s users deleted"
-msgstr[0] "%s uživatel smazán"
-msgstr[1] "%s uživatelů smazáno"
-msgstr[2] "%s uživatelů smazáno"
-
-#: ../../mod/admin.php:394
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Uživatel '%s' smazán"
-
-#: ../../mod/admin.php:401
-#, php-format
-msgid "User '%s' unblocked"
-msgstr "Uživatel '%s' odblokován"
-
-#: ../../mod/admin.php:401
-#, php-format
-msgid "User '%s' blocked"
-msgstr "Uživatel '%s' blokován"
-
-#: ../../mod/admin.php:462
-msgid "select all"
-msgstr "Vybrat vše"
-
-#: ../../mod/admin.php:463
-msgid "User registrations waiting for confirm"
-msgstr "Registrace uživatele Äeká na potvrzení"
-
-#: ../../mod/admin.php:464
-msgid "Request date"
-msgstr "Datum žádosti"
-
-#: ../../mod/admin.php:464 ../../mod/admin.php:473
-msgid "Email"
-msgstr "E-mail"
-
-#: ../../mod/admin.php:465
-msgid "No registrations."
-msgstr "Žádné registrace."
-
-#: ../../mod/admin.php:467
-msgid "Deny"
-msgstr "Odmítnout"
-
-#: ../../mod/admin.php:469
-msgid "Block"
-msgstr "Blokovat"
-
-#: ../../mod/admin.php:470
-msgid "Unblock"
-msgstr "Odblokovat"
-
-#: ../../mod/admin.php:473
-msgid "Register date"
-msgstr "Datum registrace"
-
-#: ../../mod/admin.php:473
-msgid "Last login"
-msgstr "Datum posledního přihlášení"
-
-#: ../../mod/admin.php:473
-msgid "Last item"
-msgstr "Poslední položka"
-
-#: ../../mod/admin.php:473
-msgid "Account"
-msgstr "ÚÄet"
-
-#: ../../mod/admin.php:475
-msgid ""
-"Selected users will be deleted!\\n\\nEverything these users had posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr ""
-"Vybraní uživatelé budou smazáni!\\n\\n Vše, co tito uživatelé na těchto "
-"stránkách vytvoÅ™ili, bude trvale odstranÄ›no!\\n\\n Opravdu pokraÄovat?"
-
-#: ../../mod/admin.php:476
-msgid ""
-"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
-"site will be permanently deleted!\\n\\nAre you sure?"
-msgstr ""
-"Uživatel {0} bude smazán!\\n\\n Vše, co tento uživatel na těchto stránkách "
-"vytvoÅ™il, bude trvale odstranÄ›no!\\n\\n Opravdu pokraÄovat?"
-
-#: ../../mod/admin.php:512
-#, php-format
-msgid "Plugin %s disabled."
-msgstr "Plugin %s zakázán."
-
-#: ../../mod/admin.php:516
-#, php-format
-msgid "Plugin %s enabled."
-msgstr "Plugin %s povolen."
-
-#: ../../mod/admin.php:526
-msgid "Disable"
-msgstr "Zakázat"
-
-#: ../../mod/admin.php:528
-msgid "Enable"
-msgstr "Povolit"
-
-#: ../../mod/admin.php:550
-msgid "Toggle"
-msgstr "Přepnout"
-
-#: ../../mod/admin.php:551 ../../include/nav.php:108
-msgid "Settings"
-msgstr "Nastavení"
-
-#: ../../mod/admin.php:613
-msgid "Log settings updated."
-msgstr "Nastavení protokolu aktualizováno."
-
-#: ../../mod/admin.php:653
-msgid "Clear"
-msgstr "VyÄistit"
-
-#: ../../mod/admin.php:659
-msgid "Debugging"
-msgstr "Ladění"
-
-#: ../../mod/admin.php:660
-msgid "Log file"
-msgstr "Soubor s logem"
-
-#: ../../mod/admin.php:660
-msgid "Must be writable by web server. Relative to your Friendika index.php."
-msgstr ""
-"Webový server musí mít práva zápisu . Relativní k index.php Friendika."
-
-#: ../../mod/admin.php:661
-msgid "Log level"
-msgstr "Úroveň auditu"
-
-#: ../../mod/admin.php:702
-msgid "Close"
-msgstr "Uzavřená"
-
-#: ../../mod/admin.php:708
-msgid "FTP Host"
-msgstr "Hostitel FTP"
-
-#: ../../mod/admin.php:709
-msgid "FTP Path"
-msgstr "Cesta FTP"
-
-#: ../../mod/admin.php:710
-msgid "FTP User"
-msgstr "FTP uživatel"
-
-#: ../../mod/admin.php:711
-msgid "FTP Password"
-msgstr "FTP heslo"
-
-#: ../../mod/profile.php:102 ../../mod/display.php:63
-msgid "Access to this profile has been restricted."
-msgstr "Přístup na tento profil byl omezen."
-
-#: ../../mod/profile.php:133
-msgid "Tips for New Members"
-msgstr "Tipy pro nové Äleny"
-
-#: ../../mod/openid.php:62 ../../mod/openid.php:122 ../../include/auth.php:120
-#: ../../include/auth.php:145 ../../include/auth.php:198
-msgid "Login failed."
-msgstr "Přihlášení se nezdařilo."
-
-#: ../../mod/openid.php:78 ../../include/auth.php:214
-msgid "Welcome "
-msgstr "Vítejte "
-
-#: ../../mod/openid.php:79 ../../include/auth.php:215
-msgid "Please upload a profile photo."
-msgstr "Prosím nahrejte profilovou fotografii"
-
-#: ../../mod/openid.php:82 ../../include/auth.php:218
-msgid "Welcome back "
-msgstr "Vítejte zpět "
-
-#: ../../mod/follow.php:39
-msgid ""
-"This site is not configured to allow communications with other networks."
-msgstr ""
-"Tento web není nakonfigurován tak, aby umožňoval komunikaci s ostatními "
-"sítěmi."
-
-#: ../../mod/follow.php:40 ../../mod/follow.php:50
-msgid "No compatible communication protocols or feeds were discovered."
-msgstr "Nenalezen žádný kompatibilní komunikaÄní protokol nebo kanál."
-
-#: ../../mod/follow.php:48
-msgid "The profile address specified does not provide adequate information."
-msgstr "Uvedená adresa profilu neposkytuje dostateÄné informace."
-
-#: ../../mod/follow.php:52
-msgid "An author or name was not found."
-msgstr "Autor nebo jméno nenalezeno"
-
-#: ../../mod/follow.php:54
-msgid "No browser URL could be matched to this address."
-msgstr "Této adrese neodpovídá žádné URL prohlížeÄe."
-
-#: ../../mod/follow.php:61
-msgid ""
-"The profile address specified belongs to a network which has been disabled "
-"on this site."
-msgstr ""
-"Zadaná adresa profilu patří do sítě, která byla na tomto serveru zakázána."
-
-#: ../../mod/follow.php:66
-msgid ""
-"Limited profile. This person will be unable to receive direct/personal "
-"notifications from you."
-msgstr ""
-"Omezený profil. Tato osoba nebude schopna od Vás přijímat přímé / osobní "
-"sdělení."
-
-#: ../../mod/follow.php:122
-msgid "Unable to retrieve contact information."
-msgstr "Nepodařilo se získat kontaktní informace."
-
-#: ../../mod/follow.php:168
-msgid "following"
-msgstr "následující"
-
-#: ../../mod/display.php:105
-msgid "Item has been removed."
-msgstr "Položka byla odstraněna."
-
-#: ../../mod/dfrn_notify.php:353
-msgid "New mail received at "
-msgstr "Přišel nový e-mail v"
-
-#: ../../mod/apps.php:6
-msgid "Applications"
-msgstr "Aplikace"
-
-#: ../../mod/apps.php:11
-msgid "No installed applications."
-msgstr "Žádné nainstalované aplikace."
-
-#: ../../mod/search.php:26 ../../include/text.php:610 ../../include/nav.php:69
-msgid "Search"
-msgstr "Vyhledávání"
-
-#: ../../mod/profiles.php:21 ../../mod/profiles.php:236
-#: ../../mod/profiles.php:341 ../../mod/dfrn_confirm.php:62
-msgid "Profile not found."
-msgstr "Profil nenalezen"
-
-#: ../../mod/profiles.php:28
-msgid "Profile Name is required."
-msgstr "Jméno profilu je povinné."
-
-#: ../../mod/profiles.php:198
-msgid "Profile updated."
-msgstr "Profil aktualizován."
-
-#: ../../mod/profiles.php:253
-msgid "Profile deleted."
-msgstr "Profil smazán."
-
-#: ../../mod/profiles.php:269 ../../mod/profiles.php:300
-msgid "Profile-"
-msgstr "Profil-"
-
-#: ../../mod/profiles.php:288 ../../mod/profiles.php:327
-msgid "New profile created."
-msgstr "Nový profil vytvořen."
-
-#: ../../mod/profiles.php:306
-msgid "Profile unavailable to clone."
-msgstr "Profil není možné naklonovat."
-
-#: ../../mod/profiles.php:353
-msgid "Hide your contact/friend list from viewers of this profile?"
-msgstr ""
-"Skrýt u tohoto profilu vaše kontakty / seznam přátel před před dalšími "
-"uživateli zobrazující si tento profil?"
-
-#: ../../mod/profiles.php:371
-msgid "Edit Profile Details"
-msgstr "Upravit podrobnosti profilu "
-
-#: ../../mod/profiles.php:373
-msgid "View this profile"
-msgstr "Zobrazit tento profil"
-
-#: ../../mod/profiles.php:374
-msgid "Create a new profile using these settings"
-msgstr "Vytvořit nový profil pomocí tohoto nastavení"
-
-#: ../../mod/profiles.php:375
-msgid "Clone this profile"
-msgstr "Klonovat tento profil"
-
-#: ../../mod/profiles.php:376
-msgid "Delete this profile"
-msgstr "Smazat tento profil"
-
-#: ../../mod/profiles.php:377
-msgid "Profile Name:"
-msgstr "Jméno profilu:"
-
-#: ../../mod/profiles.php:378
-msgid "Your Full Name:"
-msgstr "Vaše celé jméno:"
-
-#: ../../mod/profiles.php:379
-msgid "Title/Description:"
-msgstr "Název / Popis:"
-
-#: ../../mod/profiles.php:380
-msgid "Your Gender:"
-msgstr "Vaše pohlaví:"
-
-#: ../../mod/profiles.php:381
-#, php-format
-msgid "Birthday (%s):"
-msgstr "Narozeniny uživatele (%s):"
-
-#: ../../mod/profiles.php:382
-msgid "Street Address:"
-msgstr "Ulice:"
-
-#: ../../mod/profiles.php:383
-msgid "Locality/City:"
-msgstr "Město:"
-
-#: ../../mod/profiles.php:384
-msgid "Postal/Zip Code:"
-msgstr "PSČ:"
-
-#: ../../mod/profiles.php:385
-msgid "Country:"
-msgstr "ZemÄ›:"
-
-#: ../../mod/profiles.php:386
-msgid "Region/State:"
-msgstr "Region / stát:"
-
-#: ../../mod/profiles.php:387
-msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
-msgstr "<span class=\"heart\">&hearts;</span> Rodinný stav:"
-
-#: ../../mod/profiles.php:388
-msgid "Who: (if applicable)"
-msgstr "Kdo: (pokud je možné)"
-
-#: ../../mod/profiles.php:389
-msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
-msgstr "Příklady: jan123, Jan Novák, jan@seznam.cz"
-
-#: ../../mod/profiles.php:390 ../../include/profile_advanced.php:90
-msgid "Sexual Preference:"
-msgstr "Sexuální preference:"
-
-#: ../../mod/profiles.php:391
-msgid "Homepage URL:"
-msgstr "Odkaz na domovskou stránku:"
-
-#: ../../mod/profiles.php:392 ../../include/profile_advanced.php:115
-msgid "Political Views:"
-msgstr "Politické pÅ™esvÄ›dÄení:"
-
-#: ../../mod/profiles.php:393
-msgid "Religious Views:"
-msgstr "Náboženské pÅ™esvÄ›dÄení:"
-
-#: ../../mod/profiles.php:394
-msgid "Public Keywords:"
-msgstr "VeÅ™ejná klíÄová slova:"
-
-#: ../../mod/profiles.php:395
-msgid "Private Keywords:"
-msgstr "Soukromá klíÄová slova:"
-
-#: ../../mod/profiles.php:396
-msgid "Example: fishing photography software"
-msgstr "Příklad: fishing photography software"
-
-#: ../../mod/profiles.php:397
-msgid "(Used for suggesting potential friends, can be seen by others)"
-msgstr ""
-"(Používá se pro doporuÄování potenciálních přátel, může být vidÄ›no "
-"ostatními)"
-
-#: ../../mod/profiles.php:398
-msgid "(Used for searching profiles, never shown to others)"
-msgstr "(Používá se pro vyhledávání profilů, není nikdy zobrazeno ostatním)"
-
-#: ../../mod/profiles.php:399
-msgid "Tell us about yourself..."
-msgstr "Řekněte nám něco o sobě ..."
-
-#: ../../mod/profiles.php:400
-msgid "Hobbies/Interests"
-msgstr "KoníÄky/zájmy"
-
-#: ../../mod/profiles.php:401
-msgid "Contact information and Social Networks"
-msgstr "Kontaktní informace a sociální sítě"
-
-#: ../../mod/profiles.php:402
-msgid "Musical interests"
-msgstr "Hudební vkus"
-
-#: ../../mod/profiles.php:403
-msgid "Books, literature"
-msgstr "Knihy, literatura"
-
-#: ../../mod/profiles.php:404
-msgid "Television"
-msgstr "Televize"
-
-#: ../../mod/profiles.php:405
-msgid "Film/dance/culture/entertainment"
-msgstr "Film/tanec/kultura/zábava"
-
-#: ../../mod/profiles.php:406
-msgid "Love/romance"
-msgstr "Láska/romantika"
-
-#: ../../mod/profiles.php:407
-msgid "Work/employment"
-msgstr "Práce/zaměstnání"
-
-#: ../../mod/profiles.php:408
-msgid "School/education"
-msgstr "Škola/vzdělání"
-
-#: ../../mod/profiles.php:413
-msgid ""
-"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
-"be visible to anybody using the internet."
-msgstr ""
-"Toto je váš <strong>veřejný</strong> profil.<br />Ten <strong>může</strong> "
-"být viditelný kýmkoliv na internetu."
-
-#: ../../mod/profiles.php:423 ../../mod/directory.php:112
-msgid "Age: "
-msgstr "Věk: "
-
-#: ../../mod/profiles.php:458 ../../include/nav.php:109
-msgid "Profiles"
-msgstr "Profily"
-
-#: ../../mod/profiles.php:459
-msgid "Change profile photo"
-msgstr "Změnit profilovou fotografii"
-
-#: ../../mod/profiles.php:460
-msgid "Create New Profile"
-msgstr "Vytvořit nový profil"
-
-#: ../../mod/profiles.php:470
-msgid "Profile Image"
-msgstr "Profilový obrázek"
-
-#: ../../mod/profiles.php:472
-msgid "visible to everybody"
-msgstr "viditelné pro všechny"
-
-#: ../../mod/profiles.php:473
-msgid "Edit visibility"
-msgstr "Upravit viditelnost"
-
-#: ../../mod/directory.php:40
-msgid "Global Directory"
-msgstr "Globální adresář"
-
-#: ../../mod/directory.php:46
-msgid "Normal site view"
-msgstr "Normální zobrazení stránky"
-
-#: ../../mod/directory.php:48
-msgid "View all site entries"
-msgstr "Zobrazit všechny položky stránky"
-
-#: ../../mod/directory.php:56
-msgid "Site Directory"
-msgstr "Adresář serveru"
-
-#: ../../mod/directory.php:115
-msgid "Gender: "
-msgstr "Pohlaví: "
-
-#: ../../mod/directory.php:141
-msgid "No entries (some entries may be hidden)."
-msgstr "Žádné záznamy (některé položky mohou být skryty)."
-
-#: ../../mod/invite.php:35
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s : není platná e-mailová adresa."
-
-#: ../../mod/invite.php:59
-#, php-format
-msgid "Please join my network on %s"
-msgstr "Prosím, připojte se do mé sítě na %s"
-
-#: ../../mod/invite.php:69
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s : DoruÄení zprávy se nezdaÅ™ilo."
-
-#: ../../mod/invite.php:73
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d zpráva odeslána."
-msgstr[1] "%d zprávy odeslány."
-msgstr[2] "%d zprávy odeslány."
-
-#: ../../mod/invite.php:92
-msgid "You have no more invitations available"
-msgstr "Nemáte k dispozici žádné další pozvánky"
-
-#: ../../mod/invite.php:99
-msgid "Send invitations"
-msgstr "Poslat pozvánky"
-
-#: ../../mod/invite.php:100
-msgid "Enter email addresses, one per line:"
-msgstr "Zadejte e-mailové adresy, jednu na řádek:"
-
-#: ../../mod/invite.php:102
-#, php-format
-msgid "Please join my social network on %s"
-msgstr "Prosím, připojte se do mé sociální sítě na %s"
-
-#: ../../mod/invite.php:103
-msgid "To accept this invitation, please visit:"
-msgstr "Chcete-li toto pozvání přijmout, navštivte prosím:"
-
-#: ../../mod/invite.php:104
-msgid "You will need to supply this invitation code: $invite_code"
-msgstr "Budete muset zadat kód této pozvánky: $invite_code"
-
-#: ../../mod/invite.php:104
-msgid ""
-"Once you have registered, please connect with me via my profile page at:"
-msgstr ""
-"Jakmile se zaregistrujete, prosím spojte se se mnou přes mou profilovu "
-"stránku na:"
-
-#: ../../mod/dfrn_confirm.php:233
-msgid "Response from remote site was not understood."
-msgstr "OdpovÄ›Ä ze vzdáleného serveru nebyla srozumitelná."
-
-#: ../../mod/dfrn_confirm.php:242
-msgid "Unexpected response from remote site: "
-msgstr "NeoÄekávaná odpovÄ›Ä od vzdáleného serveru:"
-
-#: ../../mod/dfrn_confirm.php:250
-msgid "Confirmation completed successfully."
-msgstr "Potvrzení úspěšnÄ› dokonÄena."
-
-#: ../../mod/dfrn_confirm.php:252 ../../mod/dfrn_confirm.php:266
-#: ../../mod/dfrn_confirm.php:273
-msgid "Remote site reported: "
-msgstr "Vzdálený server oznámil:"
-
-#: ../../mod/dfrn_confirm.php:264
-msgid "Temporary failure. Please wait and try again."
-msgstr "DoÄasné selhání. Prosím, vyÄkejte a zkuste to znovu."
-
-#: ../../mod/dfrn_confirm.php:271
-msgid "Introduction failed or was revoked."
-msgstr "Žádost o propojení selhala nebo byla zrušena."
-
-#: ../../mod/dfrn_confirm.php:393
-msgid "Unable to set contact photo."
-msgstr "Nelze nastavit fotografii kontaktu."
-
-#: ../../mod/dfrn_confirm.php:436 ../../include/conversation.php:79
-#, php-format
-msgid "%1$s is now friends with %2$s"
-msgstr "%1$s je nyní přítel s %2$s"
-
-#: ../../mod/dfrn_confirm.php:507
-#, php-format
-msgid "No user record found for '%s' "
-msgstr "Pro '%s' nenalezen žádný uživatelský záznam "
-
-#: ../../mod/dfrn_confirm.php:517
-msgid "Our site encryption key is apparently messed up."
-msgstr "Náš Å¡ifrovací klÃ­Ä zÅ™ejmÄ› pÅ™estal správnÄ› fungovat."
-
-#: ../../mod/dfrn_confirm.php:528
-msgid "Empty site URL was provided or URL could not be decrypted by us."
-msgstr ""
-"Byla poskytnuta prázdná URL adresa nebo se nepodařilo URL adresu dešifrovat."
-
-#: ../../mod/dfrn_confirm.php:549
-msgid "Contact record was not found for you on our site."
-msgstr "Kontakt záznam nebyl nalezen pro vás na našich stránkách."
-
-#: ../../mod/dfrn_confirm.php:578
-msgid ""
-"The ID provided by your system is a duplicate on our system. It should work "
-"if you try again."
-msgstr ""
-"Váš systém poskytl duplicitní ID vůÄi naÅ¡emu systému. Pokuste se akci "
-"zopakovat."
-
-#: ../../mod/dfrn_confirm.php:589
-msgid "Unable to set your contact credentials on our system."
-msgstr "Nelze nastavit Vaše přihlašovací údaje v našem systému."
-
-#: ../../mod/dfrn_confirm.php:642
-msgid "Unable to update your contact profile details on our system"
-msgstr "Nelze aktualizovat Váš profil v našem systému"
-
-#: ../../mod/dfrn_confirm.php:672
-#, php-format
-msgid "Connection accepted at %s"
-msgstr "Připojení přijato na %s"
-
-#: ../../addon/facebook/facebook.php:314
-msgid "Facebook disabled"
-msgstr "Facebook zakázán"
-
-#: ../../addon/facebook/facebook.php:319
-msgid "Updating contacts"
-msgstr "Aktualizace kontaktů"
-
-#: ../../addon/facebook/facebook.php:328
-msgid "Facebook API key is missing."
-msgstr "Chybí Facebook API klíÄ."
-
-#: ../../addon/facebook/facebook.php:335
-msgid "Facebook Connect"
-msgstr "Facebook připojen"
-
-#: ../../addon/facebook/facebook.php:341
-msgid "Install Facebook connector for this account."
-msgstr "Nainstalovat pro tento úÄet Facebook konektor."
-
-#: ../../addon/facebook/facebook.php:348
-msgid "Remove Facebook connector"
-msgstr "Odstranit konektor na Facebook"
-
-#: ../../addon/facebook/facebook.php:354
-msgid "Post to Facebook by default"
-msgstr "Standardně posílat příspěvky na Facebook"
-
-#: ../../addon/facebook/facebook.php:358
-msgid "Link all your Facebook friends and conversations"
-msgstr "Připojit všechny své přátele na Facebooku a konverzace"
-
-#: ../../addon/facebook/facebook.php:363
-msgid "Warning: Your Facebook privacy settings can not be imported."
-msgstr ""
-"Upozornění: nastavení ochrany osobních údajů na Facebooku nelze importovat."
-
-#: ../../addon/facebook/facebook.php:364
-msgid ""
-"Linked Facebook items <strong>may</strong> be publicly visible, depending on"
-" your privacy settings for this website/account."
-msgstr ""
-"Propojené položky z Facebook <strong>mohou</strong> být veřejně viditelné, v"
-" závislosti na nastavení ochrany osobních údajů pro tuto webovou "
-"stránku/úÄet."
-
-#: ../../addon/facebook/facebook.php:419
-msgid "Facebook"
-msgstr "Facebook"
-
-#: ../../addon/facebook/facebook.php:420
-msgid "Facebook Connector Settings"
-msgstr "Nastavení Facebook konektoru "
-
-#: ../../addon/facebook/facebook.php:434
-msgid "Post to Facebook"
-msgstr "Přidat příspěvek na Facebook"
-
-#: ../../addon/facebook/facebook.php:507
-msgid ""
-"Post to Facebook cancelled because of multi-network access permission "
-"conflict."
-msgstr ""
-"Příspěvek na Facebook zrušen kvůli konfliktu přístupových práv mezi sítěmi."
-
-#: ../../addon/facebook/facebook.php:580
-msgid "Image: "
-msgstr "Obrázek: "
-
-#: ../../addon/facebook/facebook.php:656
-msgid "View on Friendika"
-msgstr "Pohled na Friendiku"
-
-#: ../../addon/facebook/facebook.php:687
-msgid "Facebook post failed. Queued for retry."
-msgstr ""
-"Zaslání příspěvku na Facebook selhalo. Příspěvek byl zařazen do fronty pro "
-"opakované odeslání."
-
-#: ../../addon/widgets/widgets.php:53
-msgid "Generate new key"
-msgstr "Generovat nové klíÄe"
-
-#: ../../addon/widgets/widgets.php:56
-msgid "Widgets key"
-msgstr "Widgety klíÄ"
-
-#: ../../addon/widgets/widgets.php:58
-msgid "Widgets available"
-msgstr "Widgety k dispozici"
-
-#: ../../addon/widgets/widget_friends.php:30
-msgid "Connect on Friendika!"
-msgstr "Spojit se na Friendice!"
-
-#: ../../addon/tictac/tictac.php:20
-msgid "Three Dimensional Tic-Tac-Toe"
-msgstr "Trojrozměrné Tic-Tac-Toe"
-
-#: ../../addon/tictac/tictac.php:53
-msgid "3D Tic-Tac-Toe"
-msgstr "3D Tic-Tac-Toe"
-
-#: ../../addon/tictac/tictac.php:58
-msgid "New game"
-msgstr "Nová hra"
-
-#: ../../addon/tictac/tictac.php:59
-msgid "New game with handicap"
-msgstr "Nová hra s handicapem"
-
-#: ../../addon/tictac/tictac.php:60
-msgid ""
-"Three dimensional tic-tac-toe is just like the traditional game except that "
-"it is played on multiple levels simultaneously. "
-msgstr ""
-"TrojrozmÄ›rné tic-tac-toe je podobná této tradiÄní hÅ™e kromÄ› toho, že se "
-"hraje na více úrovních souÄasnÄ›."
-
-#: ../../addon/tictac/tictac.php:61
-msgid ""
-"In this case there are three levels. You win by getting three in a row on "
-"any level, as well as up, down, and diagonally across the different levels."
-msgstr ""
-"V tomto případě existují tři úrovně. Vyhrajete tím, že dostane tři v řadě na"
-" jakékoli úrovni, stejně jako nahoru, dolů a šikmo na různých úrovních."
-
-#: ../../addon/tictac/tictac.php:63
-msgid ""
-"The handicap game disables the center position on the middle level because "
-"the player claiming this square often has an unfair advantage."
-msgstr ""
-"Hra s handicapem zakáže centrální pozici na stÅ™ední úrovni, protože hrÃ¡Ä "
-"zaujímající tuto polohu má Äasto nespravedlivou výhodu."
-
-#: ../../addon/tictac/tictac.php:182
-msgid "You go first..."
-msgstr "Vy zaÄnÄ›te ..."
-
-#: ../../addon/tictac/tictac.php:187
-msgid "I'm going first this time..."
-msgstr "Tentokrát zaÄnu já..."
-
-#: ../../addon/tictac/tictac.php:193
-msgid "You won!"
-msgstr "Vyhrál jste!"
-
-#: ../../addon/tictac/tictac.php:199 ../../addon/tictac/tictac.php:224
-msgid "\"Cat\" game!"
-msgstr "\"KoÄiÄí\" hra!"
-
-#: ../../addon/tictac/tictac.php:222
-msgid "I won!"
-msgstr "Vyhrál jsem!"
-
-#: ../../addon/randplace/randplace.php:170
-msgid "Randplace Settings"
-msgstr "Randplace Nastavení"
-
-#: ../../addon/randplace/randplace.php:172
-msgid "Enable Randplace Plugin"
-msgstr "Povolit Randplace Plugin"
-
-#: ../../addon/js_upload/js_upload.php:43
-msgid "Upload a file"
-msgstr "Nahrát soubor"
-
-#: ../../addon/js_upload/js_upload.php:44
-msgid "Drop files here to upload"
-msgstr "Přeneste sem soubory k nahrání"
-
-#: ../../addon/js_upload/js_upload.php:46
-msgid "Failed"
-msgstr "Neúspěch"
-
-#: ../../addon/js_upload/js_upload.php:292
-msgid "No files were uploaded."
-msgstr "Žádné soubory nebyly nahrány."
-
-#: ../../addon/js_upload/js_upload.php:298
-msgid "Uploaded file is empty"
-msgstr "Nahraný soubor je prázdný"
-
-#: ../../addon/js_upload/js_upload.php:321
-msgid "File has an invalid extension, it should be one of "
-msgstr "Soubor má neplatnou příponu, ta by měla být jednou z"
-
-#: ../../addon/js_upload/js_upload.php:332
-msgid "Upload was cancelled, or server error encountered"
-msgstr "Nahrávání bylo zrušeno nebo došlo k chybě na serveru"
-
-#: ../../addon/impressum/impressum.php:25
-msgid "Impressum"
-msgstr "Impressum"
-
-#: ../../addon/impressum/impressum.php:38
-#: ../../addon/impressum/impressum.php:40
-#: ../../addon/impressum/impressum.php:70
-msgid "Site Owner"
-msgstr "Vlastník webu"
-
-#: ../../addon/impressum/impressum.php:38
-#: ../../addon/impressum/impressum.php:74
-msgid "Email Address"
-msgstr "E-mailová adresa"
-
-#: ../../addon/impressum/impressum.php:43
-#: ../../addon/impressum/impressum.php:72
-msgid "Postal Address"
-msgstr "Poštovní adresa"
-
-#: ../../addon/impressum/impressum.php:49
-msgid ""
-"The impressum addon needs to be configured!<br />Please add at least the "
-"<tt>owner</tt> variable to your config file. For other variables please "
-"refer to the README file of the addon."
-msgstr ""
-"Doplněk Impressum musí být nakonfigurován!<br/>Prosím, přidejte alespoň "
-"promÄ›nnou <tt>owner</tt> do konfiguraÄního souboru. Pro nastavení ostatních "
-"proměnných se seznamte s nápovědou v souboru README tohoto doplňku."
-
-#: ../../addon/impressum/impressum.php:71
-msgid "Site Owners Profile"
-msgstr "Profil majitele webu"
-
-#: ../../addon/impressum/impressum.php:73
-msgid "Notes"
-msgstr "Poznámky"
-
-#: ../../addon/oembed/oembed.php:30
-msgid "OEmbed settings updated"
-msgstr "OEmbed nastavení aktualizováno"
-
-#: ../../addon/oembed/oembed.php:43
-msgid "Use OEmbed for YouTube videos"
-msgstr "Použití OEmbed pro videa na YouTube"
-
-#: ../../addon/oembed/oembed.php:71
-msgid "URL to embed:"
-msgstr "URL adresa k vložení:"
-
-#: ../../addon/statusnet/statusnet.php:133
-msgid "Post to StatusNet"
-msgstr "Poslat příspěvek na StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:175
-msgid ""
-"Please contact your site administrator.<br />The provided API URL is not "
-"valid."
-msgstr ""
-"Obraťte se na administratora webu.<br />Poskytnutý odkaz na API není platný."
-
-#: ../../addon/statusnet/statusnet.php:203
-msgid "We could not contact the StatusNet API with the Path you entered."
-msgstr ""
-"S cestou, kterou jste zadali, se nebylo možné spojit s API StatusNetu."
-
-#: ../../addon/statusnet/statusnet.php:230
-msgid "StatusNet settings updated."
-msgstr "Nastavení StatusNetu aktualizováno."
-
-#: ../../addon/statusnet/statusnet.php:253
-msgid "StatusNet Posting Settings"
-msgstr "Nastavení zasílání příspěvků na StatusNet "
-
-#: ../../addon/statusnet/statusnet.php:267
-msgid "Globally Available StatusNet OAuthKeys"
-msgstr "GlobálnÄ› dostupné StatusNet OAuth klíÄe"
-
-#: ../../addon/statusnet/statusnet.php:268
-msgid ""
-"There are preconfigured OAuth key pairs for some StatusNet servers "
-"available. If you are useing one of them, please use these credentials. If "
-"not feel free to connect to any other StatusNet instance (see below)."
-msgstr ""
-"Jsou dostupné pÅ™ednastavené OAuth páry klíÄů pro nÄ›které servery StatusNetu."
-" Pokud používáte některý z nich, použijte toto přihlášení. Pokud ne, "
-"neváhejte se připojit k jiné instanci StatusNet (viz níže)."
-
-#: ../../addon/statusnet/statusnet.php:276
-msgid "Provide your own OAuth Credentials"
-msgstr "UveÄte své vlastní OAuth pÅ™ihlaÅ¡ovací údaje"
-
-#: ../../addon/statusnet/statusnet.php:277
-msgid ""
-"No consumer key pair for StatusNet found. Register your Friendika Account as"
-" an desktop client on your StatusNet account, copy the consumer key pair "
-"here and enter the API base root.<br />Before you register your own OAuth "
-"key pair ask the administrator if there is already a key pair for this "
-"Friendika installation at your favorited StatusNet installation."
-msgstr ""
-"Nenalezen žádný consumer pár klíÄů pro StatusNet. Zaregistrujte svůj "
-"Friendika úÄet jako desktopový klient na svém úÄtu StatusNetu, zkopírujte "
-"níže consumer pár klíÄů a zadejte API base root.<br />Než si zaregistrujete "
-"svůj vlastní pár klíÄů OAuth, zjistÄ›te si od administrátora, zda-li už "
-"náhodou na tento Friendika server nepÅ™idal pár klíÄů pro vámi požadovanou "
-"instalaci StatusNetu."
-
-#: ../../addon/statusnet/statusnet.php:279
-msgid "OAuth Consumer Key"
-msgstr "OAuth Consumer Key"
-
-#: ../../addon/statusnet/statusnet.php:282
-msgid "OAuth Consumer Secret"
-msgstr "OAuth Consumer Secret"
-
-#: ../../addon/statusnet/statusnet.php:285
-msgid "Base API Path (remember the trailing /)"
-msgstr "Cesta k Base API (nezapomeňte na koncový /)"
-
-#: ../../addon/statusnet/statusnet.php:306
-msgid ""
-"To connect to your StatusNet account click the button below to get a "
-"security code from StatusNet which you have to copy into the input box below"
-" and submit the form. Only your <strong>public</strong> posts will be posted"
-" to StatusNet."
-msgstr ""
-"Chcete-li pÅ™ipojit k vaÅ¡emu úÄtu StatusNet kliknÄ›te na tlaÄítko níže, abyste"
-" dostati bezpeÄnostní kód ze StatusNetu, který musíte zkopírovat do "
-"vstupního pole níže a odelat formulář. Pouze Vaše <strong>veřejné</strong> "
-"příspěvky budou zveřejněny na StatusNetu."
-
-#: ../../addon/statusnet/statusnet.php:307
-msgid "Log in with StatusNet"
-msgstr "Přihlásit se s StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:309
-msgid "Copy the security code from StatusNet here"
-msgstr "Zkopírujte sem bezpeÄnostní kód ze StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:315
-msgid "Cancel Connection Process"
-msgstr "Zrušit připojování"
-
-#: ../../addon/statusnet/statusnet.php:317
-msgid "Current StatusNet API is"
-msgstr "Aktuální StatusNet API je"
-
-#: ../../addon/statusnet/statusnet.php:318
-msgid "Cancel StatusNet Connection"
-msgstr "Zrušit StatusNet připojení"
-
-#: ../../addon/statusnet/statusnet.php:329 ../../addon/twitter/twitter.php:180
-msgid "Currently connected to: "
-msgstr "V souÄasné dobÄ› pÅ™ipojen k:"
-
-#: ../../addon/statusnet/statusnet.php:330
-msgid ""
-"If enabled all your <strong>public</strong> postings can be posted to the "
-"associated StatusNet account. You can choose to do so by default (here) or "
-"for every posting separately in the posting options when writing the entry."
-msgstr ""
-"Je-li povoleno, všechny Vaše <strong>veřejné</strong> příspěvky mohou být "
-"zaslány na související StatusNet úÄet. Můžete si vybrat, zda-li toto bude "
-"výchozí nastavení (zde), nebo budete mít možnost si vybrat požadované "
-"chování při psaní každého příspěvku."
-
-#: ../../addon/statusnet/statusnet.php:332
-msgid "Allow posting to StatusNet"
-msgstr "Povolit zasílání příspěvků na StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:335
-msgid "Send public postings to StatusNet by default"
-msgstr "Standardně poslílat veřejné příspěvky na StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:340 ../../addon/twitter/twitter.php:191
-msgid "Clear OAuth configuration"
-msgstr "Vymazat konfiguraci OAuth"
-
-#: ../../addon/statusnet/statusnet.php:460
-msgid "API URL"
-msgstr "API URL"
-
-#: ../../addon/statusnet/statusnet.php:461
-msgid "Consumer Secret"
-msgstr "Consumer Secret"
-
-#: ../../addon/statusnet/statusnet.php:462
-msgid "Consumer Key"
-msgstr "Consumer Key"
-
-#: ../../addon/piwik/piwik.php:77
-msgid "Piwik Base URL"
-msgstr "Piwik Base adresa URL"
-
-#: ../../addon/piwik/piwik.php:78
-msgid "Site ID"
-msgstr "ID webu"
-
-#: ../../addon/piwik/piwik.php:79
-msgid "Show opt-out cookie link?"
-msgstr "Zobrazit odkaz opt-out cookie?"
-
-#: ../../addon/twitter/twitter.php:70
-msgid "Post to Twitter"
-msgstr "Poslat příspěvek na Twitter"
-
-#: ../../addon/twitter/twitter.php:115
-msgid "Twitter settings updated."
-msgstr "Nastavení Twitteru aktualizováno."
-
-#: ../../addon/twitter/twitter.php:137
-msgid "Twitter Posting Settings"
-msgstr "Nastavení zasílání příspěvků na Twitter "
-
-#: ../../addon/twitter/twitter.php:144
-msgid ""
-"No consumer key pair for Twitter found. Please contact your site "
-"administrator."
-msgstr ""
-"Nenalezen žádný spotÅ™ebitelský páru klíÄů pro Twitter. ObraÅ¥te se na "
-"administrátora webu."
-
-#: ../../addon/twitter/twitter.php:163
-msgid ""
-"At this Friendika instance the Twitter plugin was enabled but you have not "
-"yet connected your account to your Twitter account. To do so click the "
-"button below to get a PIN from Twitter which you have to copy into the input"
-" box below and submit the form. Only your <strong>public</strong> posts will"
-" be posted to Twitter."
-msgstr ""
-"Na tomto Friendika serveru je Twitter plugin povolen, ale ještě nemáte svůj "
-"úÄet pÅ™ipojen ke svému Twitter úÄtu. Chcete-li tak uÄinit, klepnutím na "
-"tlaÄítko níže získejte PIN z Twitteru, který musíte zkopírovat do vstupního "
-"pole níže a odešlete formulář. Pouze Vaše <strong>veřejné</strong> příspěvky"
-" budou zveřejněny na Twitteru."
-
-#: ../../addon/twitter/twitter.php:164
-msgid "Log in with Twitter"
-msgstr "Přihlásit se s Twitter"
-
-#: ../../addon/twitter/twitter.php:166
-msgid "Copy the PIN from Twitter here"
-msgstr "Zkopírujte sem PIN z Twitteru"
-
-#: ../../addon/twitter/twitter.php:181
-msgid ""
-"If enabled all your <strong>public</strong> postings can be posted to the "
-"associated Twitter account. You can choose to do so by default (here) or for"
-" every posting separately in the posting options when writing the entry."
-msgstr ""
-"Je-li povoleno, všechny Vaše <strong>veřejné</strong> příspěvky mohou být "
-"zaslány na související Twitter úÄet. Můžete si vybrat, zda-li toto bude "
-"výchozí nastavení (zde), nebo budete mít možnost si vybrat požadované "
-"chování při psaní každého příspěvku."
-
-#: ../../addon/twitter/twitter.php:183
-msgid "Allow posting to Twitter"
-msgstr "Povolit odesílání na Twitter"
-
-#: ../../addon/twitter/twitter.php:186
-msgid "Send public postings to Twitter by default"
-msgstr "Defaultně zasílat veřejné komentáře na Twitter"
-
-#: ../../addon/twitter/twitter.php:282
-msgid "Consumer key"
-msgstr "Consumer key"
-
-#: ../../addon/twitter/twitter.php:283
-msgid "Consumer secret"
-msgstr "Consumer secret"
-
-#: ../../include/profile_advanced.php:23 ../../boot.php:880
-msgid "Gender:"
-msgstr "Pohlaví:"
-
-#: ../../include/profile_advanced.php:36 ../../include/items.php:1137
-msgid "Birthday:"
-msgstr "Narozeniny:"
-
-#: ../../include/profile_advanced.php:45
-msgid "j F, Y"
-msgstr "j F, Y"
-
-#: ../../include/profile_advanced.php:46
-msgid "j F"
-msgstr "j F"
-
-#: ../../include/profile_advanced.php:59
-msgid "Age:"
-msgstr "Věk:"
-
-#: ../../include/profile_advanced.php:70
-msgid "<span class=\"heart\">&hearts;</span> Status:"
-msgstr "<span class=\"heart\">&hearts;</span> Status:"
-
-#: ../../include/profile_advanced.php:103 ../../boot.php:886
-msgid "Homepage:"
-msgstr "Domácí stránka:"
-
-#: ../../include/profile_advanced.php:127
-msgid "Religion:"
-msgstr "Náboženství:"
-
-#: ../../include/profile_advanced.php:138
-msgid "About:"
-msgstr "O mÄ›:"
-
-#: ../../include/profile_advanced.php:150
-msgid "Hobbies/Interests:"
-msgstr "KoníÄky/zájmy:"
-
-#: ../../include/profile_advanced.php:162
-msgid "Contact information and Social Networks:"
-msgstr "Kontaktní informace a sociální sítě:"
-
-#: ../../include/profile_advanced.php:174
-msgid "Musical interests:"
-msgstr "Hudební vkus:"
-
-#: ../../include/profile_advanced.php:186
-msgid "Books, literature:"
-msgstr "Knihy, literatura:"
-
-#: ../../include/profile_advanced.php:198
-msgid "Television:"
-msgstr "Televize:"
-
-#: ../../include/profile_advanced.php:210
-msgid "Film/dance/culture/entertainment:"
-msgstr "Film/tanec/kultura/zábava:"
-
-#: ../../include/profile_advanced.php:222
-msgid "Love/Romance:"
-msgstr "Láska/romance"
-
-#: ../../include/profile_advanced.php:234
-msgid "Work/employment:"
-msgstr "Práce/zaměstnání:"
-
-#: ../../include/profile_advanced.php:246
-msgid "School/education:"
-msgstr "Škola/vzdělávání:"
-
-#: ../../include/contact_selectors.php:32
-msgid "Unknown | Not categorised"
-msgstr "Neznámé | Nezařazeno"
-
-#: ../../include/contact_selectors.php:33
-msgid "Block immediately"
-msgstr "Okamžitě blokovat "
-
-#: ../../include/contact_selectors.php:34
-msgid "Shady, spammer, self-marketer"
-msgstr "pochybný, spammer, self-makerter"
-
-#: ../../include/contact_selectors.php:35
-msgid "Known to me, but no opinion"
-msgstr "Znám ho ale, ale bez rozhodnutí"
-
-#: ../../include/contact_selectors.php:36
-msgid "OK, probably harmless"
-msgstr "OK, pravděpodobně neškodný"
-
-#: ../../include/contact_selectors.php:37
-msgid "Reputable, has my trust"
-msgstr "Renomovaný, má mou důvěru"
-
-#: ../../include/contact_selectors.php:55
-msgid "Frequently"
-msgstr "ÄŒasto"
-
-#: ../../include/contact_selectors.php:56
-msgid "Hourly"
-msgstr "každou hodinu"
-
-#: ../../include/contact_selectors.php:57
-msgid "Twice daily"
-msgstr "Dvakrát denně"
-
-#: ../../include/contact_selectors.php:58
-msgid "Daily"
-msgstr "dennÄ›"
-
-#: ../../include/contact_selectors.php:59
-msgid "Weekly"
-msgstr "Týdenně"
-
-#: ../../include/contact_selectors.php:60
-msgid "Monthly"
-msgstr "MÄ›síÄnÄ›"
-
-#: ../../include/profile_selectors.php:6
-msgid "Male"
-msgstr "Muž"
-
-#: ../../include/profile_selectors.php:6
-msgid "Female"
-msgstr "Žena"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Male"
-msgstr "V souÄasné dobÄ› muž"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Female"
-msgstr "V souÄasné dobÄ› žena"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Male"
-msgstr "Většinou muž"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Female"
-msgstr "Většinou žena"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transgender"
-msgstr "Transgender"
-
-#: ../../include/profile_selectors.php:6
-msgid "Intersex"
-msgstr "Intersex"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transsexual"
-msgstr "Transexuál"
-
-#: ../../include/profile_selectors.php:6
-msgid "Hermaphrodite"
-msgstr "Hermafrodit"
-
-#: ../../include/profile_selectors.php:6
-msgid "Neuter"
-msgstr "Neutrál"
-
-#: ../../include/profile_selectors.php:6
-msgid "Non-specific"
-msgstr "Nespecifikováno"
-
-#: ../../include/profile_selectors.php:6
-msgid "Other"
-msgstr "Jiné"
-
-#: ../../include/profile_selectors.php:6
-msgid "Undecided"
-msgstr "Nerozhodnuto"
-
-#: ../../include/profile_selectors.php:19
-msgid "Males"
-msgstr "Muži"
-
-#: ../../include/profile_selectors.php:19
-msgid "Females"
-msgstr "Ženy"
-
-#: ../../include/profile_selectors.php:19
-msgid "Gay"
-msgstr "Gay"
-
-#: ../../include/profile_selectors.php:19
-msgid "Lesbian"
-msgstr "LesbiÄka"
-
-#: ../../include/profile_selectors.php:19
-msgid "No Preference"
-msgstr "Bez preferencí"
-
-#: ../../include/profile_selectors.php:19
-msgid "Bisexual"
-msgstr "Bisexuál"
-
-#: ../../include/profile_selectors.php:19
-msgid "Autosexual"
-msgstr "Autosexuál"
-
-#: ../../include/profile_selectors.php:19
-msgid "Abstinent"
-msgstr "Abstinent"
-
-#: ../../include/profile_selectors.php:19
-msgid "Virgin"
-msgstr "panic/panna"
-
-#: ../../include/profile_selectors.php:19
-msgid "Deviant"
-msgstr "Deviant"
-
-#: ../../include/profile_selectors.php:19
-msgid "Fetish"
-msgstr "Fetišista"
-
-#: ../../include/profile_selectors.php:19
-msgid "Oodles"
-msgstr "HodnÄ›"
-
-#: ../../include/profile_selectors.php:19
-msgid "Nonsexual"
-msgstr "Nesexuální"
-
-#: ../../include/profile_selectors.php:33
-msgid "Single"
-msgstr "Svobodný"
-
-#: ../../include/profile_selectors.php:33
-msgid "Lonely"
-msgstr "Osamnělý"
-
-#: ../../include/profile_selectors.php:33
-msgid "Available"
-msgstr "Dostupný"
-
-#: ../../include/profile_selectors.php:33
-msgid "Unavailable"
-msgstr "Nedostupný"
-
-#: ../../include/profile_selectors.php:33
-msgid "Dating"
-msgstr "Seznamující se"
-
-#: ../../include/profile_selectors.php:33
-msgid "Unfaithful"
-msgstr "Nevěrný"
-
-#: ../../include/profile_selectors.php:33
-msgid "Sex Addict"
-msgstr "Závislý na sexu"
-
-#: ../../include/profile_selectors.php:33
-msgid "Friends"
-msgstr "Přátelé"
-
-#: ../../include/profile_selectors.php:33
-msgid "Friends/Benefits"
-msgstr "Přátelé / výhody"
-
-#: ../../include/profile_selectors.php:33
-msgid "Casual"
-msgstr "Ležérní"
-
-#: ../../include/profile_selectors.php:33
-msgid "Engaged"
-msgstr "Zadaný"
-
-#: ../../include/profile_selectors.php:33
-msgid "Married"
-msgstr "Ženatý/vdaná"
-
-#: ../../include/profile_selectors.php:33
-msgid "Partners"
-msgstr "Partneři"
-
-#: ../../include/profile_selectors.php:33
-msgid "Cohabiting"
-msgstr "Žijící ve spoleÄné domácnosti"
-
-#: ../../include/profile_selectors.php:33
-msgid "Happy"
-msgstr "Šťastný"
-
-#: ../../include/profile_selectors.php:33
-msgid "Not Looking"
-msgstr "Nehledající"
-
-#: ../../include/profile_selectors.php:33
-msgid "Swinger"
-msgstr "Swinger"
-
-#: ../../include/profile_selectors.php:33
-msgid "Betrayed"
-msgstr "Zrazen"
-
-#: ../../include/profile_selectors.php:33
-msgid "Separated"
-msgstr "OdlouÄený"
-
-#: ../../include/profile_selectors.php:33
-msgid "Unstable"
-msgstr "Nestálý"
-
-#: ../../include/profile_selectors.php:33
-msgid "Divorced"
-msgstr "Rozvedený(á)"
-
-#: ../../include/profile_selectors.php:33
-msgid "Widowed"
-msgstr "Ovdovělý(á)"
-
-#: ../../include/profile_selectors.php:33
-msgid "Uncertain"
-msgstr "Nejistý"
-
-#: ../../include/profile_selectors.php:33
-msgid "Complicated"
-msgstr "Komplikovaný"
-
-#: ../../include/profile_selectors.php:33
-msgid "Don't care"
-msgstr "Nezajímá"
-
-#: ../../include/profile_selectors.php:33
-msgid "Ask me"
-msgstr "Zeptej se mÄ›"
-
-#: ../../include/event.php:11
-msgid "l F d, Y \\@ g:i A"
-msgstr "l F d, Y \\@ g:i A"
-
-#: ../../include/event.php:17
-msgid "Starts:"
-msgstr "ZaÄíná:"
-
-#: ../../include/event.php:27
-msgid "Finishes:"
-msgstr "KonÄí:"
-
-#: ../../include/text.php:229
-msgid "prev"
-msgstr "předchozí"
-
-#: ../../include/text.php:231
-msgid "first"
-msgstr "první"
-
-#: ../../include/text.php:260
-msgid "last"
-msgstr "poslední"
-
-#: ../../include/text.php:263
-msgid "next"
-msgstr "další"
-
-#: ../../include/text.php:542
-msgid "No contacts"
-msgstr "Žádné kontakty"
-
-#: ../../include/text.php:550
-#, php-format
-msgid "%d Contact"
-msgid_plural "%d Contacts"
-msgstr[0] "%d kontakt"
-msgstr[1] "%d kontaktů"
-msgstr[2] "%d kontaktů"
-
-#: ../../include/text.php:711
-msgid "Monday"
-msgstr "Pondělí"
-
-#: ../../include/text.php:711
-msgid "Tuesday"
-msgstr "Úterý"
-
-#: ../../include/text.php:711
-msgid "Wednesday"
-msgstr "Středa"
-
-#: ../../include/text.php:711
-msgid "Thursday"
-msgstr "ÄŒtvrtek"
-
-#: ../../include/text.php:711
-msgid "Friday"
-msgstr "Pátek"
-
-#: ../../include/text.php:711
-msgid "Saturday"
-msgstr "Sobota"
-
-#: ../../include/text.php:711
-msgid "Sunday"
-msgstr "Neděle"
-
-#: ../../include/text.php:715
-msgid "January"
-msgstr "Ledna"
-
-#: ../../include/text.php:715
-msgid "February"
-msgstr "Února"
-
-#: ../../include/text.php:715
-msgid "March"
-msgstr "Března"
-
-#: ../../include/text.php:715
-msgid "April"
-msgstr "Dubna"
-
-#: ../../include/text.php:715
-msgid "May"
-msgstr "Května"
-
-#: ../../include/text.php:715
-msgid "June"
-msgstr "ÄŒervna"
-
-#: ../../include/text.php:715
-msgid "July"
-msgstr "ÄŒervence"
-
-#: ../../include/text.php:715
-msgid "August"
-msgstr "Srpna"
-
-#: ../../include/text.php:715
-msgid "September"
-msgstr "Září"
-
-#: ../../include/text.php:715
-msgid "October"
-msgstr "Října"
-
-#: ../../include/text.php:715
-msgid "November"
-msgstr "Listopadu"
-
-#: ../../include/text.php:715
-msgid "December"
-msgstr "Prosince"
-
-#: ../../include/text.php:778
-msgid "bytes"
-msgstr "bytů"
-
-#: ../../include/text.php:861
-msgid "Select an alternate language"
-msgstr "Vyběr alternativního jazyka"
-
-#: ../../include/diaspora.php:309
-msgid "Sharing notification from Diaspora network"
-msgstr "Sdílení oznámení ze sítě Diaspora"
-
-#: ../../include/oembed.php:95
-msgid "Embedding disabled"
-msgstr "Vkládání zakázáno"
-
-#: ../../include/group.php:146
-msgid "Create a new group"
-msgstr "Vytvořit novou skupinu"
-
-#: ../../include/group.php:147
-msgid "Everybody"
-msgstr "VÅ¡ichni"
-
-#: ../../include/nav.php:41 ../../boot.php:667
-msgid "Logout"
-msgstr "Odhlásit se"
-
-#: ../../include/nav.php:41
-msgid "End this session"
-msgstr "Konec této relace"
-
-#: ../../include/nav.php:44 ../../boot.php:645 ../../boot.php:651
-msgid "Login"
-msgstr "Přihlásit se"
-
-#: ../../include/nav.php:44
-msgid "Sign in"
-msgstr "Přihlásit se"
-
-#: ../../include/nav.php:55 ../../include/nav.php:93
-msgid "Home"
-msgstr "Domů"
-
-#: ../../include/nav.php:55
-msgid "Home Page"
-msgstr "Domácí stránka"
-
-#: ../../include/nav.php:59
-msgid "Create an account"
-msgstr "VytvoÅ™it úÄet"
-
-#: ../../include/nav.php:64
-msgid "Help and documentation"
-msgstr "Nápověda a dokumentace"
-
-#: ../../include/nav.php:67
-msgid "Apps"
-msgstr "Aplikace"
-
-#: ../../include/nav.php:67
-msgid "Addon applications, utilities, games"
-msgstr "Doplňkové aplikace, nástroje, hry"
-
-#: ../../include/nav.php:69
-msgid "Search site content"
-msgstr "Hledání na stránkách tohoto webu"
-
-#: ../../include/nav.php:79
-msgid "Conversations on this site"
-msgstr "Konverzace na tomto webu"
-
-#: ../../include/nav.php:81
-msgid "Directory"
-msgstr "Adresář"
-
-#: ../../include/nav.php:81
-msgid "People directory"
-msgstr "Adresář"
-
-#: ../../include/nav.php:91
-msgid "Network"
-msgstr "Síť"
-
-#: ../../include/nav.php:91
-msgid "Conversations from your friends"
-msgstr "Konverzace od Vašich přátel"
-
-#: ../../include/nav.php:93
-msgid "Your posts and conversations"
-msgstr "Vaše příspěvky a konverzace"
-
-#: ../../include/nav.php:99
-msgid "Notifications"
-msgstr "Upozornění"
-
-#: ../../include/nav.php:99
-msgid "Friend requests"
-msgstr "Požadavky přátelství"
-
-#: ../../include/nav.php:102
-msgid "Private mail"
-msgstr "Soukromá pošta"
-
-#: ../../include/nav.php:105
-msgid "Manage"
-msgstr "Spravovat"
-
-#: ../../include/nav.php:105
-msgid "Manage other pages"
-msgstr "Spravovat jiné stránky"
-
-#: ../../include/nav.php:109
-msgid "Manage/edit profiles"
-msgstr "Spravovat/upravit profily"
-
-#: ../../include/nav.php:110
-msgid "Manage/edit friends and contacts"
-msgstr "Spravovat/upravit přátelé a kontakty"
-
-#: ../../include/nav.php:117
-msgid "Admin"
-msgstr "Administrace"
-
-#: ../../include/nav.php:117
-msgid "Site setup and configuration"
-msgstr "Nastavení webu a konfigurace"
-
-#: ../../include/auth.php:27
-msgid "Logged out."
-msgstr "Odhlášen."
-
-#: ../../include/datetime.php:44 ../../include/datetime.php:46
-msgid "Miscellaneous"
-msgstr "Různé"
-
-#: ../../include/datetime.php:105 ../../include/datetime.php:237
-msgid "year"
-msgstr "rok"
-
-#: ../../include/datetime.php:110 ../../include/datetime.php:238
-msgid "month"
-msgstr "měsíc"
-
-#: ../../include/datetime.php:115 ../../include/datetime.php:240
-msgid "day"
-msgstr "den"
-
-#: ../../include/datetime.php:228
-msgid "never"
-msgstr "nikdy"
-
-#: ../../include/datetime.php:234
-msgid "less than a second ago"
-msgstr "méně než před sekundou"
-
-#: ../../include/datetime.php:237
-msgid "years"
-msgstr "let"
-
-#: ../../include/datetime.php:238
-msgid "months"
-msgstr "měsíců"
-
-#: ../../include/datetime.php:239
-msgid "week"
-msgstr "týden"
-
-#: ../../include/datetime.php:239
-msgid "weeks"
-msgstr "týdny"
-
-#: ../../include/datetime.php:240
-msgid "days"
-msgstr "dnů"
-
-#: ../../include/datetime.php:241
-msgid "hour"
-msgstr "hodina"
-
-#: ../../include/datetime.php:241
-msgid "hours"
-msgstr "hodin"
-
-#: ../../include/datetime.php:242
-msgid "minute"
-msgstr "minuta"
-
-#: ../../include/datetime.php:242
-msgid "minutes"
-msgstr "minut"
-
-#: ../../include/datetime.php:243
-msgid "second"
-msgstr "sekunda"
-
-#: ../../include/datetime.php:243
-msgid "seconds"
-msgstr "sekund"
-
-#: ../../include/datetime.php:250
-msgid " ago"
-msgstr " nazpět"
-
-#: ../../include/poller.php:418
-msgid "From: "
-msgstr "Od:"
-
-#: ../../include/bbcode.php:116
-msgid "Image/photo"
-msgstr "Obrázek/fotografie"
-
-#: ../../include/dba.php:31
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "Nelze nalézt záznam v DNS pro databázový server '%s'"
-
-#: ../../include/acl_selectors.php:279
-msgid "Visible to everybody"
-msgstr "Viditelné pro všechny"
-
-#: ../../include/acl_selectors.php:280
-msgid "show"
-msgstr "zobrazit"
-
-#: ../../include/acl_selectors.php:281
-msgid "don't show"
-msgstr "nikdy nezobrazit"
-
-#: ../../include/notifier.php:465
-msgid "(no subject)"
-msgstr "(Bez předmětu)"
-
-#: ../../include/items.php:1526
-msgid "You have a new follower at "
-msgstr "Máte nového následovníka na"
-
-#: ../../include/conversation.php:23
-msgid "event"
-msgstr "událost"
-
-#: ../../include/conversation.php:213 ../../include/conversation.php:488
-#: ../../include/conversation.php:489
-#, php-format
-msgid "View %s's profile"
-msgstr "Zobrazit %s profilu"
-
-#: ../../include/conversation.php:222 ../../include/conversation.php:501
-#, php-format
-msgid "%s from %s"
-msgstr "%s od %s"
-
-#: ../../include/conversation.php:230
-msgid "View in context"
-msgstr "Pohled v kontextu"
-
-#: ../../include/conversation.php:301
-msgid "See more posts like this"
-msgstr "Zobrazit více podobných příspěvků"
-
-#: ../../include/conversation.php:329
-#, php-format
-msgid "See all %d comments"
-msgstr "Zobrazit všechny komentáře %d"
-
-#: ../../include/conversation.php:427
-msgid "Select"
-msgstr "Vybrat"
-
-#: ../../include/conversation.php:429
-msgid "toggle star status"
-msgstr "přepnout hvězdu"
-
-#: ../../include/conversation.php:490
-msgid "to"
-msgstr "pro"
-
-#: ../../include/conversation.php:491
-msgid "Wall-to-Wall"
-msgstr "ZeÄ-na-ZeÄ"
-
-#: ../../include/conversation.php:492
-msgid "via Wall-To-Wall:"
-msgstr "pÅ™es ZeÄ-na-ZeÄ "
-
-#: ../../include/conversation.php:534
-msgid "Delete Selected Items"
-msgstr "Smazat vybrané položky"
-
-#: ../../include/conversation.php:608
-msgid "View status"
-msgstr "Zobrazit stav"
-
-#: ../../include/conversation.php:609
-msgid "View profile"
-msgstr "Zobrazit profil"
-
-#: ../../include/conversation.php:610
-msgid "View photos"
-msgstr "Zobrazit fotografie"
-
-#: ../../include/conversation.php:611
-msgid "View recent"
-msgstr "Zobrazit poslední"
-
-#: ../../include/conversation.php:613
-msgid "Send PM"
-msgstr "Poslat soukromou zprávu"
-
-#: ../../include/conversation.php:663
-#, php-format
-msgid "%s likes this."
-msgstr "%s se to líbí."
-
-#: ../../include/conversation.php:663
-#, php-format
-msgid "%s doesn't like this."
-msgstr "%s se to nelíbí."
-
-#: ../../include/conversation.php:667
-#, php-format
-msgid "<span %1$s>%2$d people</span> like this."
-msgstr "<span %1$s>%2$d lidem</span> se to líbí."
-
-#: ../../include/conversation.php:669
-#, php-format
-msgid "<span %1$s>%2$d people</span> don't like this."
-msgstr "<span %1$s>%2$d lidem</span> se to nelíbí."
-
-#: ../../include/conversation.php:675
-msgid "and"
-msgstr "a"
-
-#: ../../include/conversation.php:678
-#, php-format
-msgid ", and %d other people"
-msgstr ", a %d dalších lidí"
-
-#: ../../include/conversation.php:679
-#, php-format
-msgid "%s like this."
-msgstr "%s se to líbí."
-
-#: ../../include/conversation.php:679
-#, php-format
-msgid "%s don't like this."
-msgstr "%s se to nelíbí."
-
-#: ../../include/conversation.php:698
-msgid "Visible to <strong>everybody</strong>"
-msgstr "Viditelné pro <strong>všechny</strong>"
-
-#: ../../include/conversation.php:700
-msgid "Please enter a YouTube link:"
-msgstr "Prosím zadejte odkaz na YouTube:"
-
-#: ../../include/conversation.php:701
-msgid "Please enter a video(.ogg) link/URL:"
-msgstr "Prosím, zadejte odkaz na video (ogg.):"
-
-#: ../../include/conversation.php:702
-msgid "Please enter an audio(.ogg) link/URL:"
-msgstr "Prosím, zadejte odkaz na audio (ogg.):"
-
-#: ../../include/conversation.php:703
-msgid "Where are you right now?"
-msgstr "Kde právě jste?"
-
-#: ../../include/conversation.php:704
-msgid "Enter a title for this item"
-msgstr "Zadejte titulek pro tuto položku"
-
-#: ../../include/conversation.php:755
-msgid "Set title"
-msgstr "Nastavit titulek"
-
-#: ../../boot.php:410
-msgid "Delete this item?"
-msgstr "Odstranit tuto položku?"
-
-#: ../../boot.php:636
-msgid "Create a New Account"
-msgstr "VytvoÅ™it nový úÄet"
-
-#: ../../boot.php:643
-msgid "Nickname or Email address: "
-msgstr "Přezdívka nebo e-mailová adresa:"
-
-#: ../../boot.php:644
-msgid "Password: "
-msgstr "Heslo: "
-
-#: ../../boot.php:649
-msgid "Nickname/Email/OpenID: "
-msgstr "Přezdívka/E-mail/OpenID: "
-
-#: ../../boot.php:650
-msgid "Password (if not OpenID): "
-msgstr "Heslo (pokud se nepoužívá OpenID):"
-
-#: ../../boot.php:653
-msgid "Forgot your password?"
-msgstr "Zapomněli jste své heslo?"
-
-#: ../../boot.php:853
-msgid "Connect"
-msgstr "Spojit"
-
-#: ../../boot.php:872
-msgid ", "
-msgstr ", "
-
-#: ../../boot.php:884
-msgid "Status:"
-msgstr "Status:"
-
-#: ../../boot.php:975
-msgid "g A l F d"
-msgstr "g A l F d"
-
-#: ../../boot.php:993
-msgid "Birthday Reminders"
-msgstr "Připomínka narozenin"
-
-#: ../../boot.php:994
-msgid "Birthdays this week:"
-msgstr "Narozeniny tento týden:"
-
-#: ../../boot.php:995
-msgid "(Adjusted for local time)"
-msgstr "(Upraveno pro místní Äas)"
-
-#: ../../boot.php:1006
-msgid "[today]"
-msgstr "[Dnes]"
-
-#: ../../index.php:209
-msgid "Not Found"
-msgstr "Nenalezen"
-
-#: ../../index.php:210
-msgid "Page not found."
-msgstr "Stránka nenalezena"
-
-
diff --git a/view/cs/hstrings.php b/view/cs/hstrings.php
deleted file mode 100644
index f43d0491b..000000000
--- a/view/cs/hstrings.php
+++ /dev/null
@@ -1,1044 +0,0 @@
-<?php
-
-if(! function_exists("string_plural_select_cs")) {
-function string_plural_select_cs($n){
- return ($n==1) ? 0 : ($n>=2 && $n<=4) ? 1 : 2;
-}}
-;
-App::$strings["Post successful."] = "Příspěvek úspěšně odeslán";
-App::$strings["Contact settings applied."] = "Nastavení kontaktu změněno";
-App::$strings["Contact update failed."] = "Aktualizace kontaktu selhala.";
-App::$strings["Permission denied."] = "Přístup odmítnut.";
-App::$strings["Contact not found."] = "Kontakt nenalezen.";
-App::$strings["Repair Contact Settings"] = "Opravit nastavení kontaktu";
-App::$strings["<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact will stop working."] = "<strong>VAROVÃNÃ: Toto je velmi pokroÄilé nastavení,</strong> pokud zadáte nesprávné informace, komunikace s tímto kontaktem pÅ™estane fungovat.";
-App::$strings["Please use your browser 'Back' button <strong>now</strong> if you are uncertain what to do on this page."] = "Prosím použijte <strong>ihned</strong> v prohlížeÄi tlaÄítko \"zpÄ›t\" pokud si nejste jistí co dÄ›lat na této stránce.";
-App::$strings["Name"] = "Jméno";
-App::$strings["Account Nickname"] = "PÅ™ezdívka úÄtu";
-App::$strings["Account URL"] = "URL adresa úÄtu";
-App::$strings["Friend Request URL"] = "Žádost o přátelství URL";
-App::$strings["Friend Confirm URL"] = "URL adresa potvrzení přátelství";
-App::$strings["Notification Endpoint URL"] = "NotifikaÄní URL adresa";
-App::$strings["Poll/Feed URL"] = "Poll/Feed URL adresa";
-App::$strings["Submit"] = "Odeslat";
-App::$strings["Help:"] = "Nápověda:";
-App::$strings["Help"] = "Nápověda";
-App::$strings["File exceeds size limit of %d"] = "Velikost souboru přesáhla limit %d";
-App::$strings["File upload failed."] = "Nahrání souboru se nezdařilo.";
-App::$strings["Friend suggestion sent."] = "Návrhy přátelství odeslány ";
-App::$strings["Suggest Friends"] = "Navrhněte přátelé";
-App::$strings["Suggest a friend for %s"] = "Navrhněte přátelé pro uživatele %s";
-App::$strings["Status"] = "Stav";
-App::$strings["Profile"] = "Profil";
-App::$strings["Photos"] = "Fotografie";
-App::$strings["Events"] = "Události";
-App::$strings["Personal Notes"] = "Osobní poznámky";
-App::$strings["Create New Event"] = "Vytvořit novou událost";
-App::$strings["Previous"] = "Předchozí";
-App::$strings["Next"] = "Následující";
-App::$strings["l, F j"] = "l, F j";
-App::$strings["Edit event"] = "Editovat událost";
-App::$strings["link to source"] = "odkaz na zdroj";
-App::$strings["hour:minute"] = "hodina:minuta";
-App::$strings["Event details"] = "Detaily události";
-App::$strings["Format is %s %s. Starting date and Description are required."] = "Formát je %s %s. Datum zahájení a popis jsou povinné.";
-App::$strings["Event Starts:"] = "Událost zaÄíná:";
-App::$strings["Finish date/time is not known or not relevant"] = "Datum/Äas konce není zadán nebo není relevantní";
-App::$strings["Event Finishes:"] = "Akce konÄí:";
-App::$strings["Adjust for viewer timezone"] = "Nastavit Äasové pásmo pro uživatele s právem pro Ätení";
-App::$strings["Description:"] = "Popis:";
-App::$strings["Location:"] = "Místo:";
-App::$strings["Share this event"] = "Sdílet tuto událost";
-App::$strings["Cancel"] = "Zrušit";
-App::$strings["Tag removed"] = "Štítek odstraněn";
-App::$strings["Remove Item Tag"] = "Odebrat štítek položky";
-App::$strings["Select a tag to remove: "] = "Vyberte štítek k odebrání:";
-App::$strings["Remove"] = "Odstranit";
-App::$strings["%s welcomes %s"] = "%s vítá %s ";
-App::$strings["Photo Albums"] = "Fotoalba";
-App::$strings["Contact Photos"] = "Fotogalerie kontaktu";
-App::$strings["everybody"] = "Žádost o připojení selhala nebo byla zrušena.";
-App::$strings["Contact information unavailable"] = "Kontakt byl zablokován";
-App::$strings["Profile Photos"] = "Profilové fotografie";
-App::$strings["Album not found."] = "Album nenalezeno.";
-App::$strings["Delete Album"] = "Smazat album";
-App::$strings["Delete Photo"] = "Smazat fotografii";
-App::$strings["was tagged in a"] = "štítek byl přidán v";
-App::$strings["photo"] = "fotografie";
-App::$strings["by"] = "od";
-App::$strings["Image exceeds size limit of "] = "Velikost obrázku pÅ™ekraÄuje limit velikosti";
-App::$strings["Image file is empty."] = "Soubor obrázku je prázdný.";
-App::$strings["Unable to process image."] = "Obrázek není možné zprocesovat";
-App::$strings["Image upload failed."] = "Nahrání obrázku selhalo.";
-App::$strings["Public access denied."] = "Veřejný přístup odepřen.";
-App::$strings["No photos selected"] = "Není vybrána žádná fotografie";
-App::$strings["Access to this item is restricted."] = "Přístup k této položce je omezen.";
-App::$strings["Upload Photos"] = "Nahrání fotografií ";
-App::$strings["New album name: "] = "Název nového alba:";
-App::$strings["or existing album name: "] = "nebo stávající název alba:";
-App::$strings["Permissions"] = "Oprávnění:";
-App::$strings["Edit Album"] = "Edituj album";
-App::$strings["View Photo"] = "Zobraz fotografii";
-App::$strings["Photo not available"] = "Fotografie není k dispozici";
-App::$strings["Edit photo"] = "Editovat fotografii";
-App::$strings["Use as profile photo"] = "Použít jako profilovou fotografii";
-App::$strings["Private Message"] = "Soukromá zpráva";
-App::$strings["View Full Size"] = "Zobrazit v plné velikosti";
-App::$strings["Tags: "] = "Štítky:";
-App::$strings["[Remove any tag]"] = "[Odstranit všechny štítky]";
-App::$strings["New album name"] = "Nové jméno alba";
-App::$strings["Caption"] = "Titulek";
-App::$strings["Add a Tag"] = "Přidat štítek";
-App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Příklad: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping";
-App::$strings["I like this (toggle)"] = "Líbí se mi to (pÅ™epínaÄ)";
-App::$strings["I don't like this (toggle)"] = "Nelíbí se mi to (pÅ™epínaÄ)";
-App::$strings["Share"] = "Sdílet";
-App::$strings["Please wait"] = "Čekejte prosím";
-App::$strings["This is you"] = "To je Vy";
-App::$strings["Comment"] = "Okomentovat";
-App::$strings["Delete"] = "Odstranit";
-App::$strings["Recent Photos"] = "Aktuální fotografie";
-App::$strings["Upload New Photos"] = "Nahrát nové fotografie";
-App::$strings["View Album"] = "Zobrazit album";
-App::$strings["Not available."] = "Není k dispozici.";
-App::$strings["Community"] = "Komunita";
-App::$strings["No results."] = "Žádné výsledky.";
-App::$strings["Shared content is covered by the <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0</a> license."] = "Sdílený obsah je v souladu s <a href=\"http://creativecommons.org/licenses/by/3.0/\">Commons Creative 3.0</a> licencí.";
-App::$strings["Item not found"] = "Položka nenalezena";
-App::$strings["Edit post"] = "Upravit příspěvek";
-App::$strings["Post to Email"] = "Poslat příspěvek na e-mail";
-App::$strings["Edit"] = "Upravit";
-App::$strings["Upload photo"] = "Nahrát fotografii";
-App::$strings["Attach file"] = "Přiložit soubor";
-App::$strings["Insert web link"] = "Vložit webový odkaz";
-App::$strings["Insert YouTube video"] = "Vložit YouTube video";
-App::$strings["Insert Vorbis [.ogg] video"] = "Vložit Vorbis [.ogg] video";
-App::$strings["Insert Vorbis [.ogg] audio"] = "Vložit Vorbis [.ogg] audio";
-App::$strings["Set your location"] = "Nastavte vaši polohu";
-App::$strings["Clear browser location"] = "Odstranit adresu v prohlížeÄi";
-App::$strings["Permission settings"] = "Nastavení oprávnění";
-App::$strings["CC: email addresses"] = "skrytá kopie: e-mailové adresy";
-App::$strings["Public post"] = "Veřejný příspěvek";
-App::$strings["Example: bob@example.com, mary@example.com"] = "Příklad: bob@example.com, mary@example.com";
-App::$strings["This introduction has already been accepted."] = "Toto pozvání již bylo přijato";
-App::$strings["Profile location is not valid or does not contain profile information."] = "Adresa profilu není platná nebo neobsahuje profilové informace";
-App::$strings["Warning: profile location has no identifiable owner name."] = "Varování: umístění profilu nemá žádné identifikovatelné jméno vlastníka";
-App::$strings["Warning: profile location has no profile photo."] = "Varování: umístění profilu nemá žádnou profilovou fotografii.";
-App::$strings["%d required parameter was not found at the given location"] = array(
- 0 => "%d požadovaný parametr nebyl nalezen na daném místě",
- 1 => "%d požadované parametry nebyly nalezeny na daném místě",
- 2 => "%d požadované parametry nebyly nalezeny na daném místě",
-);
-App::$strings["Introduction complete."] = "PÅ™edstavení dokonÄeno.";
-App::$strings["Unrecoverable protocol error."] = "Neopravitelná chyba protokolu";
-App::$strings["Profile unavailable."] = "Profil není k dispozici.";
-App::$strings["%s has received too many connection requests today."] = "%s dnes obdržel příliš mnoho požadavků na připojení.";
-App::$strings["Spam protection measures have been invoked."] = "Ochrana proti spamu byla aktivována";
-App::$strings["Friends are advised to please try again in 24 hours."] = "Přátelům se doporuÄuje to zkusit znovu za 24 hodin.";
-App::$strings["Invalid locator"] = "Neplatný odkaz";
-App::$strings["Unable to resolve your name at the provided location."] = "Nepodařilo se zjistit Vaše jméno na zadané adrese.";
-App::$strings["You have already introduced yourself here."] = "Již jste se zde zavedli.";
-App::$strings["Apparently you are already friends with %s."] = "Zřejmě jste již přátelé se %s.";
-App::$strings["Invalid profile URL."] = "Neplatné URL profilu.";
-App::$strings["Disallowed profile URL."] = "Nepovolené URL profilu.";
-App::$strings["Failed to update contact record."] = "Nepodařilo se aktualizovat kontakt.";
-App::$strings["Your introduction has been sent."] = "Vaše žádost o propojení byla odeslána.";
-App::$strings["Please login to confirm introduction."] = "Prosím přihlašte se k potvrzení žádosti o propojení.";
-App::$strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "Jste přihlášeni pod nesprávnou identitou Prosím, přihlaste se do <strong>tohoto</strong> profilu.";
-App::$strings["Welcome home %s."] = "Vítejte doma %s.";
-App::$strings["Please confirm your introduction/connection request to %s."] = "Prosím potvrÄte VaÅ¡i žádost o pÅ™edstavení/spojení %s.";
-App::$strings["Confirm"] = "Potvrdit";
-App::$strings["[Name Withheld]"] = "[Jméno odepřeno]";
-App::$strings["Introduction received at "] = "Pozvánka přijata v";
-App::$strings["Administrator"] = "Administrátor";
-App::$strings["Friend/Connection Request"] = "Požadavek o přátelství / propojení";
-App::$strings["Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca"] = "Příklady: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca";
-App::$strings["Please answer the following:"] = "Odpovězte, prosím, následující:";
-App::$strings["Does %s know you?"] = "Zná Vás uživatel %s ?";
-App::$strings["Yes"] = "Ano";
-App::$strings["No"] = "Ne";
-App::$strings["Add a personal note:"] = "Přidat osobní poznámku:";
-App::$strings["Please enter your 'Identity Address' from one of the following supported social networks:"] = "Prosím, zadejte adresu své 'identity' jedné z následujících podporovaných sociálních sítí:";
-App::$strings["Friendika"] = "Friendika";
-App::$strings["StatusNet/Federated Social Web"] = "StatusNet / Federativní Sociální Web";
-App::$strings["Private (secure) network"] = "Soukromá (zabezpeÄená) síť";
-App::$strings["Public (insecure) network"] = "VeÅ™ejná (nezabezpeÄená) síť";
-App::$strings["Your Identity Address:"] = "Adresa Vaší identity :";
-App::$strings["Submit Request"] = "Odeslat žádost";
-App::$strings["Could not create/connect to database."] = "Nelze vytvořit / připojit se k databázi.";
-App::$strings["Connected to database."] = "Připojeno k databázi.";
-App::$strings["Proceed with Installation"] = "PokraÄovat v instalaci";
-App::$strings["Your Friendika site database has been installed."] = "Vaše databáze Friendiky byla nainstalována.";
-App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "Důležité: Budete si muset [ruÄnÄ›] plánovat úlohu pro poller.";
-App::$strings["Please see the file \"INSTALL.txt\"."] = "PÅ™eÄtÄ›te si prosím informace v souboru \"INSTALL.txt\".";
-App::$strings["Proceed to registration"] = "PokraÄovat k registraci";
-App::$strings["Database import failed."] = "Import databáze se nezdařil.";
-App::$strings["You may need to import the file \"database.sql\" manually using phpmyadmin or mysql."] = "Možná budete muset importovat soubor \"database.sql\" ruÄnÄ› pomocí phpMyAdmin Äi MySQL.";
-App::$strings["Welcome to Friendika."] = "Vítejte na Friendice.";
-App::$strings["Friendika Social Network"] = "Sociální síť Friendika ";
-App::$strings["Installation"] = "Instalace";
-App::$strings["In order to install Friendika we need to know how to connect to your database."] = "Pro instalaci Friendika musíme vědět, jak se připojit k databázi.";
-App::$strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Obraťte se na svého poskytovatele hostingu nebo administrátora serveru , pokud máte dotazy týkající se těchto nastavení.";
-App::$strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "Databázi, kterou uvedete níže by již mÄ›la existovat. Pokud tak není, prosíme, vytvoÅ™te ji pÅ™ed pokraÄováním.";
-App::$strings["Database Server Name"] = "Jméno databázového serveru";
-App::$strings["Database Login Name"] = "Přihlašovací jméno k databázi";
-App::$strings["Database Login Password"] = "Heslo k databázovému úÄtu ";
-App::$strings["Database Name"] = "Jméno databáze";
-App::$strings["Please select a default timezone for your website"] = "Prosím, vyberte výchozí Äasové pásmo pro vaÅ¡e webové stránky";
-App::$strings["Site administrator email address. Your account email address must match this in order to use the web admin panel."] = "e-mailová adresa administrárota webu. E-mailová adresa vaÅ¡eho úÄtu se musí shodovat, aby bylo možné využívat panel webové administrace.";
-App::$strings["Could not find a command line version of PHP in the web server PATH."] = "Nelze najít verzi PHP pro příkazový řádek v PATH webového serveru.";
-App::$strings["This is required. Please adjust the configuration file .htconfig.php accordingly."] = "Tento krok je nutný. Upravte přísluÅ¡ným způsobem konfiguraÄní soubor .htconfig.php.";
-App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "Verze PHP pro příkazový řádek na vašem systému nemá povolen \"register_argc_argv\".";
-App::$strings["This is required for message delivery to work."] = "Toto je nutné pro fungování doruÄování zpráv.";
-App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Chyba: funkce \"openssl_pkey_new\" na tomto systému není schopna generovat Å¡ifrovací klíÄe";
-App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Pokud systém běží na Windows, seznamte se s \"http://www.php.net/manual/en/openssl.installation.php\".";
-App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Chyba: Požadovaný Apache webserver mod-rewrite modul není nainstalován.";
-App::$strings["Error: libCURL PHP module required but not installed."] = "Chyba: požadovaný libcurl PHP modul není nainstalován.";
-App::$strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Chyba: požadovaný GD graphics PHP modul není nainstalován.";
-App::$strings["Error: openssl PHP module required but not installed."] = "Chyba: požadovaný openssl PHP modul není nainstalován.";
-App::$strings["Error: mysqli PHP module required but not installed."] = "Chyba: požadovaný mysqli PHP modul není nainstalován.";
-App::$strings["Error: mb_string PHP module required but not installed."] = "Chyba: PHP modul mb_string je vyžadován, ale není nainstalován.";
-App::$strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "Webový instalátor musí být schopen vytvořit soubor s názvem \".htconfig.php\" v hlavním adresáři vašeho webového serveru ale nyní mu to není umožněno.";
-App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Toto je nejÄastÄ›ji nastavením oprávnÄ›ní, kdy webový server nemusí být schopen zapisovat soubory do vaÅ¡eho adresáře - i když Vy můžete.";
-App::$strings["Please check with your site documentation or support people to see if this situation can be corrected."] = "Prosím, poraÄte se s dokumentací k VaÅ¡emu hostingu nebo s technickou podporou, zda-li lze tuto situaci napravit.";
-App::$strings["If not, you may be required to perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = "Pokud ne, může být vyžadováno provedení ruÄní instalace. Prosím, seznamte se s návodem popsaným v souboru \"INSTALL.txt\".";
-App::$strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Databázový konfiguraÄní soubor \".htconfig.php\" nemohl být uložen. Prosím, použijte pÅ™iložený text k vytvoÅ™ení konfiguraÄního souboru ve vaÅ¡em koÅ™enovém adresáři webového serveru.";
-App::$strings["Errors encountered creating database tables."] = "Při vytváření databázových tabulek došlo k chybám.";
-App::$strings["[Embedded content - reload page to view]"] = "[Vložený obsah - obnovení stránky pro zobrazení]";
-App::$strings["Profile Match"] = "Shoda profilu";
-App::$strings["No keywords to match. Please add keywords to your default profile."] = "Žádná klíÄová slova k porovnání. Prosím, pÅ™idejte klíÄová slova do VaÅ¡eho výchozího profilu.";
-App::$strings["No matches"] = "Žádné shody";
-App::$strings["Remote privacy information not available."] = "Vzdálené soukromé informace nejsou k dispozici.";
-App::$strings["Visible to:"] = "Viditelné pro:";
-App::$strings["Welcome to %s"] = "Vítá Vás %s";
-App::$strings["Invalid request identifier."] = "Neplatný identifikátor požadavku.";
-App::$strings["Discard"] = "Odstranit";
-App::$strings["Ignore"] = "Ignorovat";
-App::$strings["Pending Friend/Connect Notifications"] = "Čekající požadavky na Přátelství / Připojení ";
-App::$strings["Show Ignored Requests"] = "Zobrazit ignorované žádosti";
-App::$strings["Hide Ignored Requests"] = "Skrýt ignorované žádosti";
-App::$strings["Notification type: "] = "Typ oznámení:";
-App::$strings["Friend Suggestion"] = "Návrh přátelství";
-App::$strings["suggested by %s"] = "navrhl %s";
-App::$strings["Approve"] = "Schválit";
-App::$strings["Claims to be known to you: "] = "Vaši údajní známí:";
-App::$strings["yes"] = "ano";
-App::$strings["no"] = "ne";
-App::$strings["Approve as: "] = "Schválit jako:";
-App::$strings["Friend"] = "Přítel";
-App::$strings["Fan/Admirer"] = "Fanoušek / obdivovatel";
-App::$strings["Friend/Connect Request"] = "Přítel / žádost o připojení";
-App::$strings["New Follower"] = "Nový následovník";
-App::$strings["No notifications."] = "Žádné oznámení.";
-App::$strings["Invite Friends"] = "Pozvat přátele";
-App::$strings["%d invitation available"] = array(
- 0 => "Pozvánka %d k dispozici",
- 1 => "Pozvánky %d k dispozici",
- 2 => "Pozvánky %d k dispozici",
-);
-App::$strings["Find People With Shared Interests"] = "Najít lidi se spoleÄnými zájmy";
-App::$strings["Connect/Follow"] = "Připojit / Následovat";
-App::$strings["Example: bob@example.com, http://example.com/barbara"] = "Příklad: jan@příklad.cz, http://příklad.cz/jana";
-App::$strings["Follow"] = "Následovat";
-App::$strings["Could not access contact record."] = "Nelze získat přístup k záznamu kontaktu.";
-App::$strings["Could not locate selected profile."] = "Nelze nalézt vybraný profil.";
-App::$strings["Contact updated."] = "Kontakt aktualizován.";
-App::$strings["Contact has been blocked"] = "Kontakt byl zablokován";
-App::$strings["Contact has been unblocked"] = "Kontakt byl odblokován";
-App::$strings["Contact has been ignored"] = "Kontakt bude ignorován";
-App::$strings["Contact has been unignored"] = "Kontakt přestal být ignorován";
-App::$strings["stopped following"] = "následování zastaveno";
-App::$strings["Contact has been removed."] = "Kontakt byl odstraněn.";
-App::$strings["Mutual Friendship"] = "Vzájemné přátelství";
-App::$strings["is a fan of yours"] = "je Váš fanoušek";
-App::$strings["you are a fan of"] = "jste fanouškem";
-App::$strings["Privacy Unavailable"] = "Ochrana soukromí není k dispozici";
-App::$strings["Private communications are not available for this contact."] = "Soukromá komunikace není dostupná pro tento kontakt.";
-App::$strings["Never"] = "Nikdy";
-App::$strings["(Update was successful)"] = "(Aktualizace byla úspěšná)";
-App::$strings["(Update was not successful)"] = "(Aktualizace nebyla úspěšná)";
-App::$strings["Suggest friends"] = "Navrhněte přátelé";
-App::$strings["Contact Editor"] = "Editor kontaktu";
-App::$strings["Profile Visibility"] = "Viditelnost profilu";
-App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Vyberte prosím profil, který chcete zobrazit %s pÅ™i zabezpeÄeném prohlížení vaÅ¡eho profilu.";
-App::$strings["Contact Information / Notes"] = "Kontaktní informace / poznámky";
-App::$strings["Online Reputation"] = "Online pověst";
-App::$strings["Occasionally your friends may wish to inquire about this person's online legitimacy."] = "ObÄas mohou vaÅ¡i přátelé chtít informovat o online legitimitÄ› této osoby.";
-App::$strings["You may help them choose whether or not to interact with this person by providing a <em>reputation</em> to guide them."] = "Poskytnutím <em>povÄ›sti</em> jim můžete pomoci se rozhodnout, zda-li s touto osobou komunikovat Äi nikoliv.";
-App::$strings["Please take a moment to elaborate on this selection if you feel it could be helpful to others."] = "VÄ›nujte prosím chvilku vyplnÄ›ní této volby, pokud máte pocit, že by mohlo být užiteÄné pro ostatní.";
-App::$strings["Visit %s's profile [%s]"] = "Navštivte profil uživatele %s [%s]";
-App::$strings["Block/Unblock contact"] = "Blokovat / Odblokovat kontakt";
-App::$strings["Ignore contact"] = "Ignorovat kontakt";
-App::$strings["Repair contact URL settings"] = "Opravit nastavení URL kontaktu";
-App::$strings["Repair contact URL settings (WARNING: Advanced)"] = "Opravit nastavení URL kontaktu (Varování: PokroÄilé)";
-App::$strings["View conversations"] = "Zobrazit konverzace";
-App::$strings["Delete contact"] = "Odstranit kontakt";
-App::$strings["Last updated: "] = "Poslední aktualizace:";
-App::$strings["Update public posts: "] = "Aktualizace veřejných příspěvků:";
-App::$strings["Update now"] = "Aktualizovat";
-App::$strings["Unblock this contact"] = "Odblokovat tento kontakt";
-App::$strings["Block this contact"] = "Blokovat tento kontakt";
-App::$strings["Unignore this contact"] = "Přestat ignorovat tento kontakt";
-App::$strings["Ignore this contact"] = "Ignorovat tento kontakt";
-App::$strings["Currently blocked"] = "V souÄasnosti zablokováno";
-App::$strings["Currently ignored"] = "V souÄasnosti ignorováno";
-App::$strings["Contacts"] = "Kontakty";
-App::$strings["Show Blocked Connections"] = "Zobrazit blokované spojení";
-App::$strings["Hide Blocked Connections"] = "Skrýt blokované spojení";
-App::$strings["Finding: "] = "Zjištění: ";
-App::$strings["Find"] = "Najít";
-App::$strings["Edit contact"] = "Editovat kontakt";
-App::$strings["No valid account found."] = "Nenalezen žádný platný úÄet.";
-App::$strings["Password reset request issued. Check your email."] = "Žádost o obnovení hesla vyřízena. Zkontrolujte Vaši e-mailovou schránku.";
-App::$strings["Password reset requested at %s"] = "Na %s bylo zažádáno o resetování hesla";
-App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Žádost nemohla být ověřena. (Možná jste ji odeslali již dříve.) Obnovení hesla se nezdařilo.";
-App::$strings["Password Reset"] = "Obnovení hesla";
-App::$strings["Your password has been reset as requested."] = "Vaše heslo bylo na Vaše přání resetováno.";
-App::$strings["Your new password is"] = "Vaše nové heslo je";
-App::$strings["Save or copy your new password - and then"] = "Uložte si nebo zkopírujte nové heslo - a pak";
-App::$strings["click here to login"] = "klikněte zde pro přihlášení";
-App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Vaše heslo může být změněno na stránce <em>nastavení</em> po úspěšném přihlášení.";
-App::$strings["Forgot your Password?"] = "Zapomněli jste heslo?";
-App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Zadejte svůj e-mailovou adresu a odešlete žádost o zaslání Vašeho nového hesla. Poté zkontrolujte svůj e-mail pro další instrukce.";
-App::$strings["Nickname or Email: "] = "Přezdívka nebo e-mail:";
-App::$strings["Reset"] = "Reset";
-App::$strings["Passwords do not match. Password unchanged."] = "Hesla se neshodují. Heslo nebylo změněno.";
-App::$strings["Empty passwords are not allowed. Password unchanged."] = "Prázdné hesla nejsou povolena. Heslo nebylo změněno.";
-App::$strings["Password changed."] = "Heslo bylo změněno.";
-App::$strings["Password update failed. Please try again."] = "Aktualizace hesla se nezdařila. Zkuste to prosím znovu.";
-App::$strings["Failed to connect with email account using the settings provided."] = "NepodaÅ™ilo se pÅ™ipojit k e-mailovému úÄtu pomocí dodaného nastavení.";
-App::$strings[" Please use a shorter name."] = "Prosím použijte kratší jméno.";
-App::$strings[" Name too short."] = "Jméno je příliš krátké.";
-App::$strings[" Not valid email."] = "Neplatný e-mail.";
-App::$strings[" Cannot change to that email."] = "Nelze provést změnu na tento e-mail.";
-App::$strings["Settings updated."] = "Nastavení aktualizováno.";
-App::$strings["Account settings"] = "Nastavení úÄtu";
-App::$strings["Plugin settings"] = "Nastavení pluginu";
-App::$strings["No Plugin settings configured"] = "Žádný doplněk není nastaven";
-App::$strings["Plugin Settings"] = "Nastavení doplňku";
-App::$strings["Normal Account"] = "Normální úÄet";
-App::$strings["This account is a normal personal profile"] = "Tento úÄet je běžný osobní profil";
-App::$strings["Soapbox Account"] = "Soapbox úÄet";
-App::$strings["Automatically approve all connection/friend requests as read-only fans"] = "Automaticky schválit vÅ¡echna spojení / přátelství jako fanouÅ¡ky s právem pouze ke Ätení";
-App::$strings["Community/Celebrity Account"] = "Komunitní úÄet / ÚÄet celebrity";
-App::$strings["Automatically approve all connection/friend requests as read-write fans"] = "Automaticky schvalovat vÅ¡echny žádosti o spojení / přátelství, jako fanouÅ¡ky s právem ke Ätení.";
-App::$strings["Automatic Friend Account"] = "ÚÄet s automatickým schvalováním přátel";
-App::$strings["Automatically approve all connection/friend requests as friends"] = "Automaticky schvalovat všechny žádosti o spojení / přátelství jako přátele";
-App::$strings["OpenID:"] = "OpenID:";
-App::$strings["(Optional) Allow this OpenID to login to this account."] = "(Volitelné) Povolit OpenID pro pÅ™ihlášení k tomuto úÄtu.";
-App::$strings["Publish your default profile in your local site directory?"] = "Publikovat Váš výchozí profil v místním adresáři webu?";
-App::$strings["Publish your default profile in the global social directory?"] = "Publikovat Váš výchozí profil v globální sociálním adresáři?";
-App::$strings["Hide your contact/friend list from viewers of your default profile?"] = "Skrýt Vaše kontaktní údaje a seznam přátel před návštěvníky ve Vašem výchozím profilu?";
-App::$strings["Hide profile details and all your messages from unknown viewers?"] = "Skrýt detaily profilu a všechny zprávy před neznámými uživateli?";
-App::$strings["Profile is <strong>not published</strong>."] = "Profil <strong>není zveřejněn</strong>.";
-App::$strings["or"] = "nebo";
-App::$strings["Your Identity Address is"] = "Vaše adresa identity je";
-App::$strings["Account Settings"] = "Nastavení úÄtu";
-App::$strings["Export Personal Data"] = "Export osobních údajů";
-App::$strings["Password Settings"] = "Nastavení hesla";
-App::$strings["New Password:"] = "Nové heslo:";
-App::$strings["Confirm:"] = "PotvrÄte:";
-App::$strings["Leave password fields blank unless changing"] = "Pokud nechcete změnit heslo, položku hesla nevyplňujte";
-App::$strings["Basic Settings"] = "Základní nastavení";
-App::$strings["Full Name:"] = "Celé jméno:";
-App::$strings["Email Address:"] = "E-mailová adresa:";
-App::$strings["Your Timezone:"] = "VaÅ¡e Äasové pásmo:";
-App::$strings["Default Post Location:"] = "Výchozí umístění příspěvků:";
-App::$strings["Use Browser Location:"] = "Používat umístÄ›ní dle prohlížeÄe:";
-App::$strings["Display Theme:"] = "Vybrat grafickou Å¡ablonu:";
-App::$strings["Security and Privacy Settings"] = "Nastavení zabezpeÄení a soukromí";
-App::$strings["Maximum Friend Requests/Day:"] = "Maximální poÄet žádostí o přátelství za den:";
-App::$strings["(to prevent spam abuse)"] = "(Aby se zabránilo spamu)";
-App::$strings["Default Post Permissions"] = "Výchozí oprávnění pro příspěvek";
-App::$strings["(click to open/close)"] = "(Klikněte pro otevření/zavření)";
-App::$strings["Allow friends to post to your profile page:"] = "Povolit přátelům příspěvky na Vaši profilovou stránku:";
-App::$strings["Automatically expire posts after days:"] = "Po kolika dnech automaticky expirovat příspěvky:";
-App::$strings["If empty, posts will not expire. Expired posts will be deleted"] = "Pokud je prázdné, příspěvky nebudou nikdy expirovat. Expirované příspěvky budou vymazány";
-App::$strings["Notification Settings"] = "Nastavení notifikací";
-App::$strings["Send a notification email when:"] = "Poslat notifikaci e-mailem, když";
-App::$strings["You receive an introduction"] = "obdržíte žádost o propojení";
-App::$strings["Your introductions are confirmed"] = "Vaše žádosti jsou potvrzeny";
-App::$strings["Someone writes on your profile wall"] = "někdo Vám napíše na Vaši profilovou stránku";
-App::$strings["Someone writes a followup comment"] = "někdo Vám napíše následný komentář";
-App::$strings["You receive a private message"] = "obdržíte soukromou zprávu";
-App::$strings["Email/Mailbox Setup"] = "Nastavení e-mailu";
-App::$strings["If you wish to communicate with email contacts using this service (optional), please specify how to connect to your mailbox."] = "Pokud chcete komunikovat pomocí této služby s VaÅ¡imi kontakty z e-mailu (volitelné), uveÄte, jak se pÅ™ipojit k Vaší e-mailové schránce.";
-App::$strings["Last successful email check:"] = "Poslední úspěšná kontrola e-mailu:";
-App::$strings["Email access is disabled on this site."] = "Přístup k elektronické poště je na tomto serveru zakázán.";
-App::$strings["IMAP server name:"] = "jméno IMAP serveru:";
-App::$strings["IMAP port:"] = "IMAP port:";
-App::$strings["Security:"] = "ZabezpeÄení:";
-App::$strings["None"] = "Žádný";
-App::$strings["Email login name:"] = "přihlašovací jméno k e-mailu:";
-App::$strings["Email password:"] = "heslo k Vašemu e-mailu:";
-App::$strings["Reply-to address:"] = "Odpovědět na adresu:";
-App::$strings["Send public posts to all email contacts:"] = "Poslat veřejné příspěvky na všechny e-mailové kontakty:";
-App::$strings["Advanced Page Settings"] = "PokroÄilé nastavení stránky";
-App::$strings["Welcome back %s"] = "Vítejte zpět %s";
-App::$strings["Manage Identities and/or Pages"] = "Správa identit a / nebo stránek";
-App::$strings["(Toggle between different identities or community/group pages which share your account details.)"] = "(PÅ™epínání mezi různými identitami nebo komunitními / skupinovými stránkami, které sdílejí VaÅ¡e detaily úÄtu.)";
-App::$strings["Select an identity to manage: "] = "Vyberte identitu pro správu:";
-App::$strings["View Conversations"] = "Zobrazit konverzace";
-App::$strings["View New Items"] = "Zobrazit nové položky";
-App::$strings["View Any Items"] = "Zobrazit všechny položky";
-App::$strings["View Starred Items"] = "Zobrazit položky oznaÄené hvÄ›zdu";
-App::$strings["Warning: This group contains %s member from an insecure network."] = array(
- 0 => "UpozornÄ›ní: Tato skupina obsahuje %s Älena z nezabezpeÄené sítÄ›.",
- 1 => "UpozornÄ›ní: Tato skupina obsahuje %s Äleny z nezabezpeÄené sítÄ›.",
- 2 => "UpozornÄ›ní: Tato skupina obsahuje %s Äleny z nezabezpeÄené sítÄ›.",
-);
-App::$strings["Private messages to this group are at risk of public disclosure."] = "Soukromé zprávy této skupině jsou vystaveny riziku prozrazení.";
-App::$strings["No such group"] = "Žádná taková skupina";
-App::$strings["Group is empty"] = "Skupina je prázdná";
-App::$strings["Group: "] = "Skupina:";
-App::$strings["Contact: "] = "Kontakt:";
-App::$strings["Private messages to this person are at risk of public disclosure."] = "Soukromé zprávy této osobě jsou vystaveny riziku prozrazení.";
-App::$strings["Invalid contact."] = "Neplatný kontakt.";
-App::$strings["Save"] = "Uložit";
-App::$strings["Welcome to Friendika"] = "Vítejte na Friendika";
-App::$strings["New Member Checklist"] = "Seznam doporuÄení pro nového Älena";
-App::$strings["We would like to offer some tips and links to help make your experience enjoyable. Click any item to visit the relevant page."] = "Dovolujeme si Vám nabídnout některé tipy a odkazy, abychom Vám zpříjemnili práci se systémem Friendika. Kliknutím na libovolnou položku navštívit příslušnou stránku.";
-App::$strings["On your <em>Settings</em> page - change your initial password. Also make a note of your Identity Address. This will be useful in making friends."] = "Na stránce <em>Nastavení</em> - zmÄ›nit výchozí heslo. Poznamenejte si také adresu své identity. To může být užiteÄné pÅ™i navazování přátelství.";
-App::$strings["Review the other settings, particularly the privacy settings. An unpublished directory listing is like having an unlisted phone number. In general, you should probably publish your listing - unless all of your friends and potential friends know exactly how to find you."] = "ProhlédnÄ›te si další nastavení, a to zejména nastavení soukromí. NezveÅ™ejnÄ›ní svého úÄtu v adresáři je jako mít nezveÅ™ejnÄ›né telefonní Äíslo. ObecnÄ› platí, že je lepší mít svůj úÄet zveÅ™ejnÄ›ný, leda by vÅ¡ichni vaÅ¡i potenciální přátelé vÄ›dÄ›li, jak vás pÅ™esnÄ› najít.";
-App::$strings["Upload a profile photo if you have not done so already. Studies have shown that people with real photos of themselves are ten times more likely to make friends than people who do not."] = "Nahrajte si svou profilovou fotku, pokud jste tak již neuÄinili. Studie ukázaly, že lidé se skuteÄnými fotografiemi mají desetkrát ÄastÄ›ji přátele než lidé, kteří nemají.";
-App::$strings["Authorise the Facebook Connector if you currently have a Facebook account and we will (optionally) import all your Facebook friends and conversations."] = "Jestliže máte úÄet na Facebooku, povolte konektor na Facebook a bude možné (na přání) importovat vÅ¡echny VaÅ¡ přátele na Facebooku a vÅ¡echny VaÅ¡e konverzace.";
-App::$strings["Enter your email access information on your Settings page if you wish to import and interact with friends or mailing lists from your email INBOX"] = "na stránce Nastavení zadejte informace pro přístup k Vaší e-mailové stránce, pokud si pÅ™ejete importovat a komunikovat s přáteli nebo distribuÄními skupinami z Vaší e-mailové schránky";
-App::$strings["Edit your <strong>default</strong> profile to your liking. Review the settings for hiding your list of friends and hiding the profile from unknown visitors."] = "Upravit <strong>výchozí</strong> profil podle vašich představ. Prověřte nastavení pro skrytí Vašeho seznamu přátel a skrytí profilu před neznámými návštěvníky.";
-App::$strings["Set some public keywords for your default profile which describe your interests. We may be able to find other people with similar interests and suggest friendships."] = "Nastavte si nÄ›jaká veÅ™ejné klíÄová slova pro výchozí profil, která popisují vaÅ¡e zájmy. Friendika Vám může nalézt další lidi s podobnými zájmy a navrhnout přátelství.";
-App::$strings["Your Contacts page is your gateway to managing friendships and connecting with friends on other networks. Typically you enter their address or site URL in the <em>Connect</em> dialog."] = "Stránka Kontakty je Vaším odrazovým můstkem k řízení přátelství a spojení s kamarády v jiných sítích. Obvykle zadáte jejich adresu nebo adresu URL do dialogu <em>Připojit</em>.";
-App::$strings["The Directory page lets you find other people in this network or other federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on their profile page. Provide your own Identity Address if requested."] = "Stránka Adresář Vám pomůže najít další lidi na tomto serveru nebo v jiných propojených serverech. ProstÅ™ednictvím odkazů <em>PÅ™ipojení</em> nebo <em>Následovat</em> si prohlédnÄ›te jejich profilovou stránku. UveÄte svou vlastní adresu identity, je-li požadována.";
-App::$strings["Once you have made some friends, organize them into private conversation groups from the sidebar of your Contacts page and then you can interact with each group privately on your Network page."] = "Jakmile získáte nÄ›jaké přátele, uspořádejte si je do soukromých konverzaÄních skupin na postranním panelu vaší stránky Kontakty a pak můžete komunikovat s každou touto skupinu soukromÄ› prostÅ™ednictvím stránky Síť.";
-App::$strings["Our <strong>help</strong> pages may be consulted for detail on other program features and resources."] = "Na stránkách <strong>Nápověda</strong> naleznete nejen další podrobnosti o všech funkcích Friendika ale také další zdroje informací.";
-App::$strings["Item not available."] = "Položka není k dispozici.";
-App::$strings["Item was not found."] = "Položka nebyla nalezena.";
-App::$strings["Group created."] = "Skupina vytvořena.";
-App::$strings["Could not create group."] = "Nelze vytvořit skupinu.";
-App::$strings["Group not found."] = "Skupina nenalezena.";
-App::$strings["Group name changed."] = "Název skupiny byl změněn.";
-App::$strings["Permission denied"] = "NedostateÄné oprávnÄ›ní";
-App::$strings["Create a group of contacts/friends."] = "Vytvořit skupinu kontaktů / přátel.";
-App::$strings["Group Name: "] = "Název skupiny:";
-App::$strings["Group removed."] = "Skupina odstraněna. ";
-App::$strings["Unable to remove group."] = "Nelze odstranit skupinu.";
-App::$strings["Click on a contact to add or remove."] = "Klikněte na kontakt pro přidání nebo odebrání";
-App::$strings["Group Editor"] = "Editor skupin";
-App::$strings["Members"] = "Členové";
-App::$strings["All Contacts"] = "VÅ¡echny kontakty";
-App::$strings["Invalid profile identifier."] = "Neplatný identifikátor profilu.";
-App::$strings["Profile Visibility Editor"] = "Editor viditelnosti profilu ";
-App::$strings["Visible To"] = "Viditelný pro";
-App::$strings["All Contacts (with secure profile access)"] = "VÅ¡echny kontakty (se zabezpeÄeným přístupovým profilem )";
-App::$strings["View Contacts"] = "Zobrazit kontakty";
-App::$strings["No contacts."] = "Žádné kontakty.";
-App::$strings["An invitation is required."] = "Pozvánka je vyžadována.";
-App::$strings["Invitation could not be verified."] = "Pozvánka nemohla být ověřena.";
-App::$strings["Invalid OpenID url"] = "Neplatný odkaz OpenID";
-App::$strings["Please enter the required information."] = "Zadejte prosím požadované informace.";
-App::$strings["Please use a shorter name."] = "Použijte prosím kratší jméno.";
-App::$strings["Name too short."] = "Jméno je příliš krátké.";
-App::$strings["That doesn't appear to be your full (First Last) name."] = "Nezdá se, že by to bylo vaše celé jméno (křestní jméno a příjmení).";
-App::$strings["Your email domain is not among those allowed on this site."] = "Váš e-mailová doména není na tomto serveru mezi povolenými.";
-App::$strings["Not a valid email address."] = "Neplatná e-mailová adresa.";
-App::$strings["Cannot use that email."] = "Tento e-mail nelze použít.";
-App::$strings["Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and must also begin with a letter."] = "VaÅ¡e \"pÅ™ezdívka\" může obsahovat pouze \"a-z\", \"0-9\", \"-\", a \"_\", a musí zaÄínat písmenem.";
-App::$strings["Nickname is already registered. Please choose another."] = "Přezdívka je již registrována. Prosím vyberte jinou.";
-App::$strings["SERIOUS ERROR: Generation of security keys failed."] = "Závažná chyba: Generování bezpeÄnostních klíÄů se nezdaÅ™ilo.";
-App::$strings["An error occurred during registration. Please try again."] = "Došlo k chybě při registraci. Zkuste to prosím znovu.";
-App::$strings["An error occurred creating your default profile. Please try again."] = "Došlo k chybě při vytváření Vašeho výchozího profilu. Zkuste to prosím znovu.";
-App::$strings["Registration details for %s"] = "RegistraÄní údaje pro %s";
-App::$strings["Registration successful. Please check your email for further instructions."] = "Registrace úspěšná. Zkontrolujte prosím svůj e-mail pro další instrukce.";
-App::$strings["Failed to send email message. Here is the message that failed."] = "Nepodařilo se odeslat zprávu na e-mail. Zde je zpráva, která nebyla odeslána.";
-App::$strings["Your registration can not be processed."] = "Vaši registraci nelze zpracovat.";
-App::$strings["Registration request at %s"] = "Žádost o registraci na %s";
-App::$strings["Your registration is pending approval by the site owner."] = "VaÅ¡e registrace Äeká na schválení vlastníkem serveru.";
-App::$strings["You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "Tento formulář můžete (volitelnÄ›) vyplnit s pomocí OpenID tím, že vyplníte své OpenID a kliknutete na tlaÄítko 'Zaregistrovat'.";
-App::$strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "Pokud nepoužíváte OpenID, nechte prosím toto pole prázdné a vyplňte zbylé položky.";
-App::$strings["Your OpenID (optional): "] = "Vaše OpenID (nepovinné):";
-App::$strings["Include your profile in member directory?"] = "Uvést Váš profil v adresáři Älenů?";
-App::$strings["Membership on this site is by invitation only."] = "Členství na tomto webu je pouze na pozvání.";
-App::$strings["Your invitation ID: "] = "Vaše pozvání ID:";
-App::$strings["Registration"] = "Registrace";
-App::$strings["Your Full Name (e.g. Joe Smith): "] = "Vaše celé jméno (např. Jan Novák):";
-App::$strings["Your Email Address: "] = "Vaše e-mailová adresa:";
-App::$strings["Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be '<strong>nickname@\$sitename</strong>'."] = "Vyberte pÅ™ezdívku k profilu. Ta musí zaÄít s textovým znakem. VaÅ¡e profilová adresa na tomto webu pak bude \"<strong>pÅ™ezdívka@\$sitename</strong>\".";
-App::$strings["Choose a nickname: "] = "Vyberte přezdívku:";
-App::$strings["Register"] = "Registrovat";
-App::$strings["status"] = "Stav";
-App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s má rád %2\$s' na %3\$s";
-App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s nemá rád %2\$s na %3\$s";
-App::$strings["This is Friendika version"] = "Toto je Friendika verze";
-App::$strings["running at web location"] = "běžící na webu";
-App::$strings["Shared content within the Friendika network is provided under the <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0 license</a>"] = "Sdílený obsah v síti Friendika je poskytována pod <a href=\"http://creativecommons.org/licenses/by/3.0/cz/\">licencí Creative Commons Attribution 3.0</a>";
-App::$strings["Please visit <a href=\"http://project.friendika.com\">Project.Friendika.com</a> to learn more about the Friendika project."] = "Pokud se chcete dozvědět více o projektu Friendika, navštivte, prosím, <a href=\"http://project.friendika.com\">Project.Friendika.com</a>";
-App::$strings["Bug reports and issues: please visit"] = "Pro hlášení chyb a námětů na změny navštivte:";
-App::$strings["Suggestions, praise, donations, etc. - please email \"Info\" at Friendika - dot com"] = "Návrhy, chválu, dary, atd. - prosím poÅ¡lete na e-mail \"Info\" na Friendika teÄka com";
-App::$strings["Installed plugins/addons/apps"] = "Nainstalované doplňky/aplikace";
-App::$strings["No installed plugins/addons/apps"] = "Nejsou žádné nainstalované doplňky/aplikace";
-App::$strings["Account approved."] = "ÚÄet schválen.";
-App::$strings["Registration revoked for %s"] = "Registrace zrušena pro %s";
-App::$strings["Please login."] = "Přihlaste se, prosím.";
-App::$strings["Unable to locate original post."] = "Nelze nalézt původní příspěvek.";
-App::$strings["Empty post discarded."] = "Prázdný příspěvek odstraněn.";
-App::$strings["Wall Photos"] = "Fotografie na zdi";
-App::$strings["noreply"] = "bez odpovědi";
-App::$strings["Administrator@"] = "Administrator@";
-App::$strings["%s commented on an item at %s"] = "%s okomentoval položku v %s";
-App::$strings["%s posted to your profile wall at %s"] = "%s pÅ™idal příspÄ›vek na vaší profilovou zeÄ v %s";
-App::$strings["System error. Post not saved."] = "Chyba systému. Příspěvek nebyl uložen.";
-App::$strings["This message was sent to you by %s, a member of the Friendika social network."] = "Tuto zprávu Vám zaslal %s, Älen sociální sítÄ› Friendika.";
-App::$strings["You may visit them online at %s"] = "Můžete je navštívit online na adrese %s";
-App::$strings["Please contact the sender by replying to this post if you do not wish to receive these messages."] = "Pokud nechcete dostávat tyto zprávy, kontaktujte prosím odesilatele odpovědí na tento záznam.";
-App::$strings["%s posted an update."] = "%s poslal aktualizaci.";
-App::$strings["Image uploaded but image cropping failed."] = "Obrázek byl odeslán, ale jeho oříznutí se nesdařilo.";
-App::$strings["Image size reduction [%s] failed."] = "Nepodařilo se snížit velikost obrázku [%s].";
-App::$strings["Unable to process image"] = "Obrázek nelze zpracovat ";
-App::$strings["Image exceeds size limit of %d"] = "Obrázek pÅ™ekroÄil limit velikosti %d";
-App::$strings["Upload File:"] = "Nahrát soubor:";
-App::$strings["Upload Profile Photo"] = "Nahrát profilovou fotografii";
-App::$strings["Upload"] = "Nahrát";
-App::$strings["skip this step"] = "pÅ™eskoÄit tento krok ";
-App::$strings["select a photo from your photo albums"] = "Vybrat fotografii z Vašich fotoalb";
-App::$strings["Crop Image"] = "Oříznout obrázek";
-App::$strings["Please adjust the image cropping for optimum viewing."] = "Prosím, ořízněte tento obrázek pro optimální zobrazení.";
-App::$strings["Done Editing"] = "Editace dokonÄena";
-App::$strings["Image uploaded successfully."] = "Obrázek byl úspěšně nahrán.";
-App::$strings["No profile"] = "Žádný profil";
-App::$strings["Remove My Account"] = "Odstranit můj úÄet";
-App::$strings["This will completely remove your account. Once this has been done it is not recoverable."] = "Tímto bude kompletnÄ› odstranÄ›n váš úÄet. Jakmile bude úÄet odstranÄ›n, nebude už možné ho obnovit.";
-App::$strings["Please enter your password for verification:"] = "Prosím, zadejte své heslo pro ověření:";
-App::$strings["No recipient selected."] = "Nevybrán příjemce.";
-App::$strings["[no subject]"] = "[bez předmětu]";
-App::$strings["Unable to locate contact information."] = "Nepodařilo se najít kontaktní informace.";
-App::$strings["Message sent."] = "Zpráva odeslána.";
-App::$strings["Message could not be sent."] = "Zprávu se nepodařilo odeslat.";
-App::$strings["Messages"] = "Zprávy";
-App::$strings["Inbox"] = "DoruÄená poÅ¡ta";
-App::$strings["Outbox"] = "Odeslaná pošta";
-App::$strings["New Message"] = "Nová zpráva";
-App::$strings["Message deleted."] = "Zpráva odstraněna.";
-App::$strings["Conversation removed."] = "Konverzace odstraněna.";
-App::$strings["Please enter a link URL:"] = "Zadejte prosím URL odkaz:";
-App::$strings["Send Private Message"] = "Odeslat soukromou zprávu";
-App::$strings["To:"] = "Adresát:";
-App::$strings["Subject:"] = "Předmět:";
-App::$strings["Your message:"] = "Vaše zpráva:";
-App::$strings["No messages."] = "Žádné zprávy.";
-App::$strings["Delete conversation"] = "Odstranit konverzaci";
-App::$strings["D, d M Y - g:i A"] = "D M R - g:i A";
-App::$strings["Message not available."] = "Zpráva není k dispozici.";
-App::$strings["Delete message"] = "Smazat zprávu";
-App::$strings["Send Reply"] = "Poslat odpovÄ›Ä";
-App::$strings["Site"] = "Web";
-App::$strings["Users"] = "Uživatelé";
-App::$strings["Plugins"] = "Pluginy";
-App::$strings["Update"] = "Aktualizace";
-App::$strings["Logs"] = "Logy";
-App::$strings["User registrations waiting for confirmation"] = "Registrace uživatele Äeká na potvrzení";
-App::$strings["Item not found."] = "Položka nenalezena.";
-App::$strings["Administration"] = "Administrace";
-App::$strings["Summary"] = "Shrnutí";
-App::$strings["Registered users"] = "Registrovaní uživatelé";
-App::$strings["Pending registrations"] = "Čekající registrace";
-App::$strings["Version"] = "Verze";
-App::$strings["Active plugins"] = "Aktivní pluginy";
-App::$strings["Site settings updated."] = "Nastavení webu aktualizováno.";
-App::$strings["Closed"] = "Uzavřít";
-App::$strings["Requires approval"] = "Vyžaduje schválení";
-App::$strings["Open"] = "Otevřená";
-App::$strings["File upload"] = "Nahrání souborů";
-App::$strings["Policies"] = "Politiky";
-App::$strings["Advanced"] = "PokroÄilé";
-App::$strings["Site name"] = "Název webu";
-App::$strings["Banner/Logo"] = "Banner/logo";
-App::$strings["System language"] = "Systémový jazyk";
-App::$strings["System theme"] = "Grafická šablona systému ";
-App::$strings["Maximum image size"] = "Maximální velikost obrazu";
-App::$strings["Register policy"] = "Politika registrace";
-App::$strings["Register text"] = "Registrace textu";
-App::$strings["Allowed friend domains"] = "Povolené domény přátel";
-App::$strings["Allowed email domains"] = "Povolené e-mailové domény";
-App::$strings["Block public"] = "Blokovat veřejnost";
-App::$strings["Force publish"] = "Publikovat";
-App::$strings["Global directory update URL"] = "aktualizace URL adresy Globálního adresáře ";
-App::$strings["Block multiple registrations"] = "Blokovat více registrací";
-App::$strings["OpenID support"] = "podpora OpenID";
-App::$strings["Gravatar support"] = "podpora Gravatar";
-App::$strings["Fullname check"] = "kontrola úplného jména";
-App::$strings["UTF-8 Regular expressions"] = "UTF-8 Regulární výrazy";
-App::$strings["Show Community Page"] = "Zobrazit stránku komunity";
-App::$strings["Enable OStatus support"] = "Zapnout podporu OStatus";
-App::$strings["Only allow Friendika contacts"] = "Povolit pouze Friendika kontakty ";
-App::$strings["Verify SSL"] = "Ověřit SSL";
-App::$strings["Proxy user"] = "Proxy uživatel";
-App::$strings["Proxy URL"] = "Proxy URL adresa";
-App::$strings["Network timeout"] = "Äas síťového spojení vyprÅ¡elo (timeout)";
-App::$strings["%s user blocked"] = array(
- 0 => "%s uživatel zablokován",
- 1 => "%s uživatelů zablokováno / odblokováno",
- 2 => "%s uživatelů zablokováno / odblokováno",
-);
-App::$strings["%s user deleted"] = array(
- 0 => "%s uživatel smazán",
- 1 => "%s uživatelů smazáno",
- 2 => "%s uživatelů smazáno",
-);
-App::$strings["User '%s' deleted"] = "Uživatel '%s' smazán";
-App::$strings["User '%s' unblocked"] = "Uživatel '%s' odblokován";
-App::$strings["User '%s' blocked"] = "Uživatel '%s' blokován";
-App::$strings["select all"] = "Vybrat vše";
-App::$strings["User registrations waiting for confirm"] = "Registrace uživatele Äeká na potvrzení";
-App::$strings["Request date"] = "Datum žádosti";
-App::$strings["Email"] = "E-mail";
-App::$strings["No registrations."] = "Žádné registrace.";
-App::$strings["Deny"] = "Odmítnout";
-App::$strings["Block"] = "Blokovat";
-App::$strings["Unblock"] = "Odblokovat";
-App::$strings["Register date"] = "Datum registrace";
-App::$strings["Last login"] = "Datum posledního přihlášení";
-App::$strings["Last item"] = "Poslední položka";
-App::$strings["Account"] = "ÚÄet";
-App::$strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Vybraní uživatelé budou smazáni!\\n\\n VÅ¡e, co tito uživatelé na tÄ›chto stránkách vytvoÅ™ili, bude trvale odstranÄ›no!\\n\\n Opravdu pokraÄovat?";
-App::$strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Uživatel {0} bude smazán!\\n\\n VÅ¡e, co tento uživatel na tÄ›chto stránkách vytvoÅ™il, bude trvale odstranÄ›no!\\n\\n Opravdu pokraÄovat?";
-App::$strings["Plugin %s disabled."] = "Plugin %s zakázán.";
-App::$strings["Plugin %s enabled."] = "Plugin %s povolen.";
-App::$strings["Disable"] = "Zakázat";
-App::$strings["Enable"] = "Povolit";
-App::$strings["Toggle"] = "Přepnout";
-App::$strings["Settings"] = "Nastavení";
-App::$strings["Log settings updated."] = "Nastavení protokolu aktualizováno.";
-App::$strings["Clear"] = "VyÄistit";
-App::$strings["Debugging"] = "Ladění";
-App::$strings["Log file"] = "Soubor s logem";
-App::$strings["Must be writable by web server. Relative to your Friendika index.php."] = "Webový server musí mít práva zápisu . Relativní k index.php Friendika.";
-App::$strings["Log level"] = "Úroveň auditu";
-App::$strings["Close"] = "Uzavřená";
-App::$strings["FTP Host"] = "Hostitel FTP";
-App::$strings["FTP Path"] = "Cesta FTP";
-App::$strings["FTP User"] = "FTP uživatel";
-App::$strings["FTP Password"] = "FTP heslo";
-App::$strings["Access to this profile has been restricted."] = "Přístup na tento profil byl omezen.";
-App::$strings["Tips for New Members"] = "Tipy pro nové Äleny";
-App::$strings["Login failed."] = "Přihlášení se nezdařilo.";
-App::$strings["Welcome "] = "Vítejte ";
-App::$strings["Please upload a profile photo."] = "Prosím nahrejte profilovou fotografii";
-App::$strings["Welcome back "] = "Vítejte zpět ";
-App::$strings["This site is not configured to allow communications with other networks."] = "Tento web není nakonfigurován tak, aby umožňoval komunikaci s ostatními sítěmi.";
-App::$strings["No compatible communication protocols or feeds were discovered."] = "Nenalezen žádný kompatibilní komunikaÄní protokol nebo kanál.";
-App::$strings["The profile address specified does not provide adequate information."] = "Uvedená adresa profilu neposkytuje dostateÄné informace.";
-App::$strings["An author or name was not found."] = "Autor nebo jméno nenalezeno";
-App::$strings["No browser URL could be matched to this address."] = "Této adrese neodpovídá žádné URL prohlížeÄe.";
-App::$strings["The profile address specified belongs to a network which has been disabled on this site."] = "Zadaná adresa profilu patří do sítě, která byla na tomto serveru zakázána.";
-App::$strings["Limited profile. This person will be unable to receive direct/personal notifications from you."] = "Omezený profil. Tato osoba nebude schopna od Vás přijímat přímé / osobní sdělení.";
-App::$strings["Unable to retrieve contact information."] = "Nepodařilo se získat kontaktní informace.";
-App::$strings["following"] = "následující";
-App::$strings["Item has been removed."] = "Položka byla odstraněna.";
-App::$strings["New mail received at "] = "Přišel nový e-mail v";
-App::$strings["Applications"] = "Aplikace";
-App::$strings["No installed applications."] = "Žádné nainstalované aplikace.";
-App::$strings["Search"] = "Vyhledávání";
-App::$strings["Profile not found."] = "Profil nenalezen";
-App::$strings["Profile Name is required."] = "Jméno profilu je povinné.";
-App::$strings["Profile updated."] = "Profil aktualizován.";
-App::$strings["Profile deleted."] = "Profil smazán.";
-App::$strings["Profile-"] = "Profil-";
-App::$strings["New profile created."] = "Nový profil vytvořen.";
-App::$strings["Profile unavailable to clone."] = "Profil není možné naklonovat.";
-App::$strings["Hide your contact/friend list from viewers of this profile?"] = "Skrýt u tohoto profilu vaše kontakty / seznam přátel před před dalšími uživateli zobrazující si tento profil?";
-App::$strings["Edit Profile Details"] = "Upravit podrobnosti profilu ";
-App::$strings["View this profile"] = "Zobrazit tento profil";
-App::$strings["Create a new profile using these settings"] = "Vytvořit nový profil pomocí tohoto nastavení";
-App::$strings["Clone this profile"] = "Klonovat tento profil";
-App::$strings["Delete this profile"] = "Smazat tento profil";
-App::$strings["Profile Name:"] = "Jméno profilu:";
-App::$strings["Your Full Name:"] = "Vaše celé jméno:";
-App::$strings["Title/Description:"] = "Název / Popis:";
-App::$strings["Your Gender:"] = "Vaše pohlaví:";
-App::$strings["Birthday (%s):"] = "Narozeniny uživatele (%s):";
-App::$strings["Street Address:"] = "Ulice:";
-App::$strings["Locality/City:"] = "Město:";
-App::$strings["Postal/Zip Code:"] = "PSČ:";
-App::$strings["Country:"] = "ZemÄ›:";
-App::$strings["Region/State:"] = "Region / stát:";
-App::$strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Rodinný stav:";
-App::$strings["Who: (if applicable)"] = "Kdo: (pokud je možné)";
-App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Příklady: jan123, Jan Novák, jan@seznam.cz";
-App::$strings["Sexual Preference:"] = "Sexuální preference:";
-App::$strings["Homepage URL:"] = "Odkaz na domovskou stránku:";
-App::$strings["Political Views:"] = "Politické pÅ™esvÄ›dÄení:";
-App::$strings["Religious Views:"] = "Náboženské pÅ™esvÄ›dÄení:";
-App::$strings["Public Keywords:"] = "VeÅ™ejná klíÄová slova:";
-App::$strings["Private Keywords:"] = "Soukromá klíÄová slova:";
-App::$strings["Example: fishing photography software"] = "Příklad: fishing photography software";
-App::$strings["(Used for suggesting potential friends, can be seen by others)"] = "(Používá se pro doporuÄování potenciálních přátel, může být vidÄ›no ostatními)";
-App::$strings["(Used for searching profiles, never shown to others)"] = "(Používá se pro vyhledávání profilů, není nikdy zobrazeno ostatním)";
-App::$strings["Tell us about yourself..."] = "Řekněte nám něco o sobě ...";
-App::$strings["Hobbies/Interests"] = "KoníÄky/zájmy";
-App::$strings["Contact information and Social Networks"] = "Kontaktní informace a sociální sítě";
-App::$strings["Musical interests"] = "Hudební vkus";
-App::$strings["Books, literature"] = "Knihy, literatura";
-App::$strings["Television"] = "Televize";
-App::$strings["Film/dance/culture/entertainment"] = "Film/tanec/kultura/zábava";
-App::$strings["Love/romance"] = "Láska/romantika";
-App::$strings["Work/employment"] = "Práce/zaměstnání";
-App::$strings["School/education"] = "Škola/vzdělání";
-App::$strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "Toto je váš <strong>veřejný</strong> profil.<br />Ten <strong>může</strong> být viditelný kýmkoliv na internetu.";
-App::$strings["Age: "] = "Věk: ";
-App::$strings["Profiles"] = "Profily";
-App::$strings["Change profile photo"] = "Změnit profilovou fotografii";
-App::$strings["Create New Profile"] = "Vytvořit nový profil";
-App::$strings["Profile Image"] = "Profilový obrázek";
-App::$strings["visible to everybody"] = "viditelné pro všechny";
-App::$strings["Edit visibility"] = "Upravit viditelnost";
-App::$strings["Global Directory"] = "Globální adresář";
-App::$strings["Normal site view"] = "Normální zobrazení stránky";
-App::$strings["View all site entries"] = "Zobrazit všechny položky stránky";
-App::$strings["Site Directory"] = "Adresář serveru";
-App::$strings["Gender: "] = "Pohlaví: ";
-App::$strings["No entries (some entries may be hidden)."] = "Žádné záznamy (některé položky mohou být skryty).";
-App::$strings["%s : Not a valid email address."] = "%s : není platná e-mailová adresa.";
-App::$strings["Please join my network on %s"] = "Prosím, připojte se do mé sítě na %s";
-App::$strings["%s : Message delivery failed."] = "%s : DoruÄení zprávy se nezdaÅ™ilo.";
-App::$strings["%d message sent."] = array(
- 0 => "%d zpráva odeslána.",
- 1 => "%d zprávy odeslány.",
- 2 => "%d zprávy odeslány.",
-);
-App::$strings["You have no more invitations available"] = "Nemáte k dispozici žádné další pozvánky";
-App::$strings["Send invitations"] = "Poslat pozvánky";
-App::$strings["Enter email addresses, one per line:"] = "Zadejte e-mailové adresy, jednu na řádek:";
-App::$strings["Please join my social network on %s"] = "Prosím, připojte se do mé sociální sítě na %s";
-App::$strings["To accept this invitation, please visit:"] = "Chcete-li toto pozvání přijmout, navštivte prosím:";
-App::$strings["You will need to supply this invitation code: \$invite_code"] = "Budete muset zadat kód této pozvánky: \$invite_code";
-App::$strings["Once you have registered, please connect with me via my profile page at:"] = "Jakmile se zaregistrujete, prosím spojte se se mnou přes mou profilovu stránku na:";
-App::$strings["Response from remote site was not understood."] = "OdpovÄ›Ä ze vzdáleného serveru nebyla srozumitelná.";
-App::$strings["Unexpected response from remote site: "] = "NeoÄekávaná odpovÄ›Ä od vzdáleného serveru:";
-App::$strings["Confirmation completed successfully."] = "Potvrzení úspěšnÄ› dokonÄena.";
-App::$strings["Remote site reported: "] = "Vzdálený server oznámil:";
-App::$strings["Temporary failure. Please wait and try again."] = "DoÄasné selhání. Prosím, vyÄkejte a zkuste to znovu.";
-App::$strings["Introduction failed or was revoked."] = "Žádost o propojení selhala nebo byla zrušena.";
-App::$strings["Unable to set contact photo."] = "Nelze nastavit fotografii kontaktu.";
-App::$strings["%1\$s is now friends with %2\$s"] = "%1\$s je nyní přítel s %2\$s";
-App::$strings["No user record found for '%s' "] = "Pro '%s' nenalezen žádný uživatelský záznam ";
-App::$strings["Our site encryption key is apparently messed up."] = "Náš Å¡ifrovací klÃ­Ä zÅ™ejmÄ› pÅ™estal správnÄ› fungovat.";
-App::$strings["Empty site URL was provided or URL could not be decrypted by us."] = "Byla poskytnuta prázdná URL adresa nebo se nepodařilo URL adresu dešifrovat.";
-App::$strings["Contact record was not found for you on our site."] = "Kontakt záznam nebyl nalezen pro vás na našich stránkách.";
-App::$strings["The ID provided by your system is a duplicate on our system. It should work if you try again."] = "Váš systém poskytl duplicitní ID vůÄi naÅ¡emu systému. Pokuste se akci zopakovat.";
-App::$strings["Unable to set your contact credentials on our system."] = "Nelze nastavit Vaše přihlašovací údaje v našem systému.";
-App::$strings["Unable to update your contact profile details on our system"] = "Nelze aktualizovat Váš profil v našem systému";
-App::$strings["Connection accepted at %s"] = "Připojení přijato na %s";
-App::$strings["Facebook disabled"] = "Facebook zakázán";
-App::$strings["Updating contacts"] = "Aktualizace kontaktů";
-App::$strings["Facebook API key is missing."] = "Chybí Facebook API klíÄ.";
-App::$strings["Facebook Connect"] = "Facebook připojen";
-App::$strings["Install Facebook connector for this account."] = "Nainstalovat pro tento úÄet Facebook konektor.";
-App::$strings["Remove Facebook connector"] = "Odstranit konektor na Facebook";
-App::$strings["Post to Facebook by default"] = "Standardně posílat příspěvky na Facebook";
-App::$strings["Link all your Facebook friends and conversations"] = "Připojit všechny své přátele na Facebooku a konverzace";
-App::$strings["Warning: Your Facebook privacy settings can not be imported."] = "Upozornění: nastavení ochrany osobních údajů na Facebooku nelze importovat.";
-App::$strings["Linked Facebook items <strong>may</strong> be publicly visible, depending on your privacy settings for this website/account."] = "Propojené položky z Facebook <strong>mohou</strong> být veÅ™ejnÄ› viditelné, v závislosti na nastavení ochrany osobních údajů pro tuto webovou stránku/úÄet.";
-App::$strings["Facebook"] = "Facebook";
-App::$strings["Facebook Connector Settings"] = "Nastavení Facebook konektoru ";
-App::$strings["Post to Facebook"] = "Přidat příspěvek na Facebook";
-App::$strings["Post to Facebook cancelled because of multi-network access permission conflict."] = "Příspěvek na Facebook zrušen kvůli konfliktu přístupových práv mezi sítěmi.";
-App::$strings["Image: "] = "Obrázek: ";
-App::$strings["View on Friendika"] = "Pohled na Friendiku";
-App::$strings["Facebook post failed. Queued for retry."] = "Zaslání příspěvku na Facebook selhalo. Příspěvek byl zařazen do fronty pro opakované odeslání.";
-App::$strings["Generate new key"] = "Generovat nové klíÄe";
-App::$strings["Widgets key"] = "Widgety klíÄ";
-App::$strings["Widgets available"] = "Widgety k dispozici";
-App::$strings["Connect on Friendika!"] = "Spojit se na Friendice!";
-App::$strings["Three Dimensional Tic-Tac-Toe"] = "Trojrozměrné Tic-Tac-Toe";
-App::$strings["3D Tic-Tac-Toe"] = "3D Tic-Tac-Toe";
-App::$strings["New game"] = "Nová hra";
-App::$strings["New game with handicap"] = "Nová hra s handicapem";
-App::$strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = "TrojrozmÄ›rné tic-tac-toe je podobná této tradiÄní hÅ™e kromÄ› toho, že se hraje na více úrovních souÄasnÄ›.";
-App::$strings["In this case there are three levels. You win by getting three in a row on any level, as well as up, down, and diagonally across the different levels."] = "V tomto případě existují tři úrovně. Vyhrajete tím, že dostane tři v řadě na jakékoli úrovni, stejně jako nahoru, dolů a šikmo na různých úrovních.";
-App::$strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = "Hra s handicapem zakáže centrální pozici na stÅ™ední úrovni, protože hrÃ¡Ä zaujímající tuto polohu má Äasto nespravedlivou výhodu.";
-App::$strings["You go first..."] = "Vy zaÄnÄ›te ...";
-App::$strings["I'm going first this time..."] = "Tentokrát zaÄnu já...";
-App::$strings["You won!"] = "Vyhrál jste!";
-App::$strings["\"Cat\" game!"] = "\"KoÄiÄí\" hra!";
-App::$strings["I won!"] = "Vyhrál jsem!";
-App::$strings["Randplace Settings"] = "Randplace Nastavení";
-App::$strings["Enable Randplace Plugin"] = "Povolit Randplace Plugin";
-App::$strings["Upload a file"] = "Nahrát soubor";
-App::$strings["Drop files here to upload"] = "Přeneste sem soubory k nahrání";
-App::$strings["Failed"] = "Neúspěch";
-App::$strings["No files were uploaded."] = "Žádné soubory nebyly nahrány.";
-App::$strings["Uploaded file is empty"] = "Nahraný soubor je prázdný";
-App::$strings["File has an invalid extension, it should be one of "] = "Soubor má neplatnou příponu, ta by měla být jednou z";
-App::$strings["Upload was cancelled, or server error encountered"] = "Nahrávání bylo zrušeno nebo došlo k chybě na serveru";
-App::$strings["Impressum"] = "Impressum";
-App::$strings["Site Owner"] = "Vlastník webu";
-App::$strings["Email Address"] = "E-mailová adresa";
-App::$strings["Postal Address"] = "Poštovní adresa";
-App::$strings["The impressum addon needs to be configured!<br />Please add at least the <tt>owner</tt> variable to your config file. For other variables please refer to the README file of the addon."] = "DoplnÄ›k Impressum musí být nakonfigurován!<br/>Prosím, pÅ™idejte alespoň promÄ›nnou <tt>owner</tt> do konfiguraÄního souboru. Pro nastavení ostatních promÄ›nných se seznamte s nápovÄ›dou v souboru README tohoto doplňku.";
-App::$strings["Site Owners Profile"] = "Profil majitele webu";
-App::$strings["Notes"] = "Poznámky";
-App::$strings["OEmbed settings updated"] = "OEmbed nastavení aktualizováno";
-App::$strings["Use OEmbed for YouTube videos"] = "Použití OEmbed pro videa na YouTube";
-App::$strings["URL to embed:"] = "URL adresa k vložení:";
-App::$strings["Post to StatusNet"] = "Poslat příspěvek na StatusNet";
-App::$strings["Please contact your site administrator.<br />The provided API URL is not valid."] = "Obraťte se na administratora webu.<br />Poskytnutý odkaz na API není platný.";
-App::$strings["We could not contact the StatusNet API with the Path you entered."] = "S cestou, kterou jste zadali, se nebylo možné spojit s API StatusNetu.";
-App::$strings["StatusNet settings updated."] = "Nastavení StatusNetu aktualizováno.";
-App::$strings["StatusNet Posting Settings"] = "Nastavení zasílání příspěvků na StatusNet ";
-App::$strings["Globally Available StatusNet OAuthKeys"] = "GlobálnÄ› dostupné StatusNet OAuth klíÄe";
-App::$strings["There are preconfigured OAuth key pairs for some StatusNet servers available. If you are useing one of them, please use these credentials. If not feel free to connect to any other StatusNet instance (see below)."] = "Jsou dostupné pÅ™ednastavené OAuth páry klíÄů pro nÄ›které servery StatusNetu. Pokud používáte nÄ›který z nich, použijte toto pÅ™ihlášení. Pokud ne, neváhejte se pÅ™ipojit k jiné instanci StatusNet (viz níže).";
-App::$strings["Provide your own OAuth Credentials"] = "UveÄte své vlastní OAuth pÅ™ihlaÅ¡ovací údaje";
-App::$strings["No consumer key pair for StatusNet found. Register your Friendika Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendika installation at your favorited StatusNet installation."] = "Nenalezen žádný consumer pár klíÄů pro StatusNet. Zaregistrujte svůj Friendika úÄet jako desktopový klient na svém úÄtu StatusNetu, zkopírujte níže consumer pár klíÄů a zadejte API base root.<br />Než si zaregistrujete svůj vlastní pár klíÄů OAuth, zjistÄ›te si od administrátora, zda-li už náhodou na tento Friendika server nepÅ™idal pár klíÄů pro vámi požadovanou instalaci StatusNetu.";
-App::$strings["OAuth Consumer Key"] = "OAuth Consumer Key";
-App::$strings["OAuth Consumer Secret"] = "OAuth Consumer Secret";
-App::$strings["Base API Path (remember the trailing /)"] = "Cesta k Base API (nezapomeňte na koncový /)";
-App::$strings["To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet."] = "Chcete-li pÅ™ipojit k vaÅ¡emu úÄtu StatusNet kliknÄ›te na tlaÄítko níže, abyste dostati bezpeÄnostní kód ze StatusNetu, který musíte zkopírovat do vstupního pole níže a odelat formulář. Pouze VaÅ¡e <strong>veÅ™ejné</strong> příspÄ›vky budou zveÅ™ejnÄ›ny na StatusNetu.";
-App::$strings["Log in with StatusNet"] = "Přihlásit se s StatusNet";
-App::$strings["Copy the security code from StatusNet here"] = "Zkopírujte sem bezpeÄnostní kód ze StatusNet";
-App::$strings["Cancel Connection Process"] = "Zrušit připojování";
-App::$strings["Current StatusNet API is"] = "Aktuální StatusNet API je";
-App::$strings["Cancel StatusNet Connection"] = "Zrušit StatusNet připojení";
-App::$strings["Currently connected to: "] = "V souÄasné dobÄ› pÅ™ipojen k:";
-App::$strings["If enabled all your <strong>public</strong> postings can be posted to the associated StatusNet account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Je-li povoleno, vÅ¡echny VaÅ¡e <strong>veÅ™ejné</strong> příspÄ›vky mohou být zaslány na související StatusNet úÄet. Můžete si vybrat, zda-li toto bude výchozí nastavení (zde), nebo budete mít možnost si vybrat požadované chování pÅ™i psaní každého příspÄ›vku.";
-App::$strings["Allow posting to StatusNet"] = "Povolit zasílání příspěvků na StatusNet";
-App::$strings["Send public postings to StatusNet by default"] = "Standardně poslílat veřejné příspěvky na StatusNet";
-App::$strings["Clear OAuth configuration"] = "Vymazat konfiguraci OAuth";
-App::$strings["API URL"] = "API URL";
-App::$strings["Consumer Secret"] = "Consumer Secret";
-App::$strings["Consumer Key"] = "Consumer Key";
-App::$strings["Piwik Base URL"] = "Piwik Base adresa URL";
-App::$strings["Site ID"] = "ID webu";
-App::$strings["Show opt-out cookie link?"] = "Zobrazit odkaz opt-out cookie?";
-App::$strings["Post to Twitter"] = "Poslat příspěvek na Twitter";
-App::$strings["Twitter settings updated."] = "Nastavení Twitteru aktualizováno.";
-App::$strings["Twitter Posting Settings"] = "Nastavení zasílání příspěvků na Twitter ";
-App::$strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "Nenalezen žádný spotÅ™ebitelský páru klíÄů pro Twitter. ObraÅ¥te se na administrátora webu.";
-App::$strings["At this Friendika instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "Na tomto Friendika serveru je Twitter plugin povolen, ale jeÅ¡tÄ› nemáte svůj úÄet pÅ™ipojen ke svému Twitter úÄtu. Chcete-li tak uÄinit, klepnutím na tlaÄítko níže získejte PIN z Twitteru, který musíte zkopírovat do vstupního pole níže a odeÅ¡lete formulář. Pouze VaÅ¡e <strong>veÅ™ejné</strong> příspÄ›vky budou zveÅ™ejnÄ›ny na Twitteru.";
-App::$strings["Log in with Twitter"] = "Přihlásit se s Twitter";
-App::$strings["Copy the PIN from Twitter here"] = "Zkopírujte sem PIN z Twitteru";
-App::$strings["If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Je-li povoleno, vÅ¡echny VaÅ¡e <strong>veÅ™ejné</strong> příspÄ›vky mohou být zaslány na související Twitter úÄet. Můžete si vybrat, zda-li toto bude výchozí nastavení (zde), nebo budete mít možnost si vybrat požadované chování pÅ™i psaní každého příspÄ›vku.";
-App::$strings["Allow posting to Twitter"] = "Povolit odesílání na Twitter";
-App::$strings["Send public postings to Twitter by default"] = "Defaultně zasílat veřejné komentáře na Twitter";
-App::$strings["Consumer key"] = "Consumer key";
-App::$strings["Consumer secret"] = "Consumer secret";
-App::$strings["Gender:"] = "Pohlaví:";
-App::$strings["Birthday:"] = "Narozeniny:";
-App::$strings["j F, Y"] = "j F, Y";
-App::$strings["j F"] = "j F";
-App::$strings["Age:"] = "Věk:";
-App::$strings["<span class=\"heart\">&hearts;</span> Status:"] = "<span class=\"heart\">&hearts;</span> Status:";
-App::$strings["Homepage:"] = "Domácí stránka:";
-App::$strings["Religion:"] = "Náboženství:";
-App::$strings["About:"] = "O mÄ›:";
-App::$strings["Hobbies/Interests:"] = "KoníÄky/zájmy:";
-App::$strings["Contact information and Social Networks:"] = "Kontaktní informace a sociální sítě:";
-App::$strings["Musical interests:"] = "Hudební vkus:";
-App::$strings["Books, literature:"] = "Knihy, literatura:";
-App::$strings["Television:"] = "Televize:";
-App::$strings["Film/dance/culture/entertainment:"] = "Film/tanec/kultura/zábava:";
-App::$strings["Love/Romance:"] = "Láska/romance";
-App::$strings["Work/employment:"] = "Práce/zaměstnání:";
-App::$strings["School/education:"] = "Škola/vzdělávání:";
-App::$strings["Unknown | Not categorised"] = "Neznámé | Nezařazeno";
-App::$strings["Block immediately"] = "Okamžitě blokovat ";
-App::$strings["Shady, spammer, self-marketer"] = "pochybný, spammer, self-makerter";
-App::$strings["Known to me, but no opinion"] = "Znám ho ale, ale bez rozhodnutí";
-App::$strings["OK, probably harmless"] = "OK, pravděpodobně neškodný";
-App::$strings["Reputable, has my trust"] = "Renomovaný, má mou důvěru";
-App::$strings["Frequently"] = "ÄŒasto";
-App::$strings["Hourly"] = "každou hodinu";
-App::$strings["Twice daily"] = "Dvakrát denně";
-App::$strings["Daily"] = "dennÄ›";
-App::$strings["Weekly"] = "Týdenně";
-App::$strings["Monthly"] = "MÄ›síÄnÄ›";
-App::$strings["Male"] = "Muž";
-App::$strings["Female"] = "Žena";
-App::$strings["Currently Male"] = "V souÄasné dobÄ› muž";
-App::$strings["Currently Female"] = "V souÄasné dobÄ› žena";
-App::$strings["Mostly Male"] = "Většinou muž";
-App::$strings["Mostly Female"] = "Většinou žena";
-App::$strings["Transgender"] = "Transgender";
-App::$strings["Intersex"] = "Intersex";
-App::$strings["Transsexual"] = "Transexuál";
-App::$strings["Hermaphrodite"] = "Hermafrodit";
-App::$strings["Neuter"] = "Neutrál";
-App::$strings["Non-specific"] = "Nespecifikováno";
-App::$strings["Other"] = "Jiné";
-App::$strings["Undecided"] = "Nerozhodnuto";
-App::$strings["Males"] = "Muži";
-App::$strings["Females"] = "Ženy";
-App::$strings["Gay"] = "Gay";
-App::$strings["Lesbian"] = "LesbiÄka";
-App::$strings["No Preference"] = "Bez preferencí";
-App::$strings["Bisexual"] = "Bisexuál";
-App::$strings["Autosexual"] = "Autosexuál";
-App::$strings["Abstinent"] = "Abstinent";
-App::$strings["Virgin"] = "panic/panna";
-App::$strings["Deviant"] = "Deviant";
-App::$strings["Fetish"] = "Fetišista";
-App::$strings["Oodles"] = "HodnÄ›";
-App::$strings["Nonsexual"] = "Nesexuální";
-App::$strings["Single"] = "Svobodný";
-App::$strings["Lonely"] = "Osamnělý";
-App::$strings["Available"] = "Dostupný";
-App::$strings["Unavailable"] = "Nedostupný";
-App::$strings["Dating"] = "Seznamující se";
-App::$strings["Unfaithful"] = "Nevěrný";
-App::$strings["Sex Addict"] = "Závislý na sexu";
-App::$strings["Friends"] = "Přátelé";
-App::$strings["Friends/Benefits"] = "Přátelé / výhody";
-App::$strings["Casual"] = "Ležérní";
-App::$strings["Engaged"] = "Zadaný";
-App::$strings["Married"] = "Ženatý/vdaná";
-App::$strings["Partners"] = "Partneři";
-App::$strings["Cohabiting"] = "Žijící ve spoleÄné domácnosti";
-App::$strings["Happy"] = "Šťastný";
-App::$strings["Not Looking"] = "Nehledající";
-App::$strings["Swinger"] = "Swinger";
-App::$strings["Betrayed"] = "Zrazen";
-App::$strings["Separated"] = "OdlouÄený";
-App::$strings["Unstable"] = "Nestálý";
-App::$strings["Divorced"] = "Rozvedený(á)";
-App::$strings["Widowed"] = "Ovdovělý(á)";
-App::$strings["Uncertain"] = "Nejistý";
-App::$strings["Complicated"] = "Komplikovaný";
-App::$strings["Don't care"] = "Nezajímá";
-App::$strings["Ask me"] = "Zeptej se mÄ›";
-App::$strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
-App::$strings["Starts:"] = "ZaÄíná:";
-App::$strings["Finishes:"] = "KonÄí:";
-App::$strings["prev"] = "předchozí";
-App::$strings["first"] = "první";
-App::$strings["last"] = "poslední";
-App::$strings["next"] = "další";
-App::$strings["No contacts"] = "Žádné kontakty";
-App::$strings["%d Contact"] = array(
- 0 => "%d kontakt",
- 1 => "%d kontaktů",
- 2 => "%d kontaktů",
-);
-App::$strings["Monday"] = "Pondělí";
-App::$strings["Tuesday"] = "Úterý";
-App::$strings["Wednesday"] = "Středa";
-App::$strings["Thursday"] = "ÄŒtvrtek";
-App::$strings["Friday"] = "Pátek";
-App::$strings["Saturday"] = "Sobota";
-App::$strings["Sunday"] = "Neděle";
-App::$strings["January"] = "Ledna";
-App::$strings["February"] = "Února";
-App::$strings["March"] = "Března";
-App::$strings["April"] = "Dubna";
-App::$strings["May"] = "Května";
-App::$strings["June"] = "ÄŒervna";
-App::$strings["July"] = "ÄŒervence";
-App::$strings["August"] = "Srpna";
-App::$strings["September"] = "Září";
-App::$strings["October"] = "Října";
-App::$strings["November"] = "Listopadu";
-App::$strings["December"] = "Prosince";
-App::$strings["bytes"] = "bytů";
-App::$strings["Select an alternate language"] = "Vyběr alternativního jazyka";
-App::$strings["Sharing notification from Diaspora network"] = "Sdílení oznámení ze sítě Diaspora";
-App::$strings["Embedding disabled"] = "Vkládání zakázáno";
-App::$strings["Create a new group"] = "Vytvořit novou skupinu";
-App::$strings["Everybody"] = "VÅ¡ichni";
-App::$strings["Logout"] = "Odhlásit se";
-App::$strings["End this session"] = "Konec této relace";
-App::$strings["Login"] = "Přihlásit se";
-App::$strings["Sign in"] = "Přihlásit se";
-App::$strings["Home"] = "Domů";
-App::$strings["Home Page"] = "Domácí stránka";
-App::$strings["Create an account"] = "VytvoÅ™it úÄet";
-App::$strings["Help and documentation"] = "Nápověda a dokumentace";
-App::$strings["Apps"] = "Aplikace";
-App::$strings["Addon applications, utilities, games"] = "Doplňkové aplikace, nástroje, hry";
-App::$strings["Search site content"] = "Hledání na stránkách tohoto webu";
-App::$strings["Conversations on this site"] = "Konverzace na tomto webu";
-App::$strings["Directory"] = "Adresář";
-App::$strings["People directory"] = "Adresář";
-App::$strings["Network"] = "Síť";
-App::$strings["Conversations from your friends"] = "Konverzace od Vašich přátel";
-App::$strings["Your posts and conversations"] = "Vaše příspěvky a konverzace";
-App::$strings["Notifications"] = "Upozornění";
-App::$strings["Friend requests"] = "Požadavky přátelství";
-App::$strings["Private mail"] = "Soukromá pošta";
-App::$strings["Manage"] = "Spravovat";
-App::$strings["Manage other pages"] = "Spravovat jiné stránky";
-App::$strings["Manage/edit profiles"] = "Spravovat/upravit profily";
-App::$strings["Manage/edit friends and contacts"] = "Spravovat/upravit přátelé a kontakty";
-App::$strings["Admin"] = "Administrace";
-App::$strings["Site setup and configuration"] = "Nastavení webu a konfigurace";
-App::$strings["Logged out."] = "Odhlášen.";
-App::$strings["Miscellaneous"] = "Různé";
-App::$strings["year"] = "rok";
-App::$strings["month"] = "měsíc";
-App::$strings["day"] = "den";
-App::$strings["never"] = "nikdy";
-App::$strings["less than a second ago"] = "méně než před sekundou";
-App::$strings["years"] = "let";
-App::$strings["months"] = "měsíců";
-App::$strings["week"] = "týden";
-App::$strings["weeks"] = "týdny";
-App::$strings["days"] = "dnů";
-App::$strings["hour"] = "hodina";
-App::$strings["hours"] = "hodin";
-App::$strings["minute"] = "minuta";
-App::$strings["minutes"] = "minut";
-App::$strings["second"] = "sekunda";
-App::$strings["seconds"] = "sekund";
-App::$strings[" ago"] = " nazpět";
-App::$strings["From: "] = "Od:";
-App::$strings["Image/photo"] = "Obrázek/fotografie";
-App::$strings["Cannot locate DNS info for database server '%s'"] = "Nelze nalézt záznam v DNS pro databázový server '%s'";
-App::$strings["Visible to everybody"] = "Viditelné pro všechny";
-App::$strings["show"] = "zobrazit";
-App::$strings["don't show"] = "nikdy nezobrazit";
-App::$strings["(no subject)"] = "(Bez předmětu)";
-App::$strings["You have a new follower at "] = "Máte nového následovníka na";
-App::$strings["event"] = "událost";
-App::$strings["View %s's profile"] = "Zobrazit %s profilu";
-App::$strings["%s from %s"] = "%s od %s";
-App::$strings["View in context"] = "Pohled v kontextu";
-App::$strings["See more posts like this"] = "Zobrazit více podobných příspěvků";
-App::$strings["See all %d comments"] = "Zobrazit všechny komentáře %d";
-App::$strings["Select"] = "Vybrat";
-App::$strings["toggle star status"] = "přepnout hvězdu";
-App::$strings["to"] = "pro";
-App::$strings["Wall-to-Wall"] = "ZeÄ-na-ZeÄ";
-App::$strings["via Wall-To-Wall:"] = "pÅ™es ZeÄ-na-ZeÄ ";
-App::$strings["Delete Selected Items"] = "Smazat vybrané položky";
-App::$strings["View status"] = "Zobrazit stav";
-App::$strings["View profile"] = "Zobrazit profil";
-App::$strings["View photos"] = "Zobrazit fotografie";
-App::$strings["View recent"] = "Zobrazit poslední";
-App::$strings["Send PM"] = "Poslat soukromou zprávu";
-App::$strings["%s likes this."] = "%s se to líbí.";
-App::$strings["%s doesn't like this."] = "%s se to nelíbí.";
-App::$strings["<span %1\$s>%2\$d people</span> like this."] = "<span %1\$s>%2\$d lidem</span> se to líbí.";
-App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = "<span %1\$s>%2\$d lidem</span> se to nelíbí.";
-App::$strings["and"] = "a";
-App::$strings[", and %d other people"] = ", a %d dalších lidí";
-App::$strings["%s like this."] = "%s se to líbí.";
-App::$strings["%s don't like this."] = "%s se to nelíbí.";
-App::$strings["Visible to <strong>everybody</strong>"] = "Viditelné pro <strong>všechny</strong>";
-App::$strings["Please enter a YouTube link:"] = "Prosím zadejte odkaz na YouTube:";
-App::$strings["Please enter a video(.ogg) link/URL:"] = "Prosím, zadejte odkaz na video (ogg.):";
-App::$strings["Please enter an audio(.ogg) link/URL:"] = "Prosím, zadejte odkaz na audio (ogg.):";
-App::$strings["Where are you right now?"] = "Kde právě jste?";
-App::$strings["Enter a title for this item"] = "Zadejte titulek pro tuto položku";
-App::$strings["Set title"] = "Nastavit titulek";
-App::$strings["Delete this item?"] = "Odstranit tuto položku?";
-App::$strings["Create a New Account"] = "VytvoÅ™it nový úÄet";
-App::$strings["Nickname or Email address: "] = "Přezdívka nebo e-mailová adresa:";
-App::$strings["Password: "] = "Heslo: ";
-App::$strings["Nickname/Email/OpenID: "] = "Přezdívka/E-mail/OpenID: ";
-App::$strings["Password (if not OpenID): "] = "Heslo (pokud se nepoužívá OpenID):";
-App::$strings["Forgot your password?"] = "Zapomněli jste své heslo?";
-App::$strings["Connect"] = "Spojit";
-App::$strings[", "] = ", ";
-App::$strings["Status:"] = "Status:";
-App::$strings["g A l F d"] = "g A l F d";
-App::$strings["Birthday Reminders"] = "Připomínka narozenin";
-App::$strings["Birthdays this week:"] = "Narozeniny tento týden:";
-App::$strings["(Adjusted for local time)"] = "(Upraveno pro místní Äas)";
-App::$strings["[today]"] = "[Dnes]";
-App::$strings["Not Found"] = "Nenalezen";
-App::$strings["Page not found."] = "Stránka nenalezena";
diff --git a/view/cs/htconfig.tpl b/view/cs/htconfig.tpl
deleted file mode 100644
index d0a799cf6..000000000
--- a/view/cs/htconfig.tpl
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-
-// Set the following for your MySQL installation
-// Copy or rename this file to .htconfig.php
-
-$db_host = '{{$dbhost}}';
-$db_port = '{{$dbport}}';
-$db_user = '{{$dbuser}}';
-$db_pass = '{{$dbpass}}';
-$db_data = '{{$dbdata}}';
-$db_type = '{{$dbtype}}'; // an integer. 0 or unset for mysql, 1 for postgres
-
-define( 'UNO', {{$uno}} );
-
-/*
- * Notice: Many of the following settings will be available in the admin panel
- * after a successful site install. Once they are set in the admin panel, they
- * are stored in the DB - and the DB setting will over-ride any corresponding
- * setting in this file
- *
- * The command-line tool util/config is able to query and set the DB items
- * directly if for some reason the admin panel is not available and a system
- * setting requires modification.
- *
- */
-
-
-// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
-// It can be changed later and only applies to timestamps for anonymous viewers.
-
-$default_timezone = '{{$timezone}}';
-
-// What is your site name?
-
-App::$config['system']['baseurl'] = '{{$siteurl}}';
-App::$config['system']['sitename'] = "Hubzilla";
-App::$config['system']['location_hash'] = '{{$site_id}}';
-
-// These lines set additional security headers to be sent with all responses
-// You may wish to set transport_security_header to 0 if your server already sends
-// this header. content_security_policy may need to be disabled if you wish to
-// run the piwik analytics plugin or include other offsite resources on a page
-
-App::$config['system']['transport_security_header'] = 1;
-App::$config['system']['content_security_policy'] = 1;
-
-
-// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
-// Be certain to create your own personal account before setting
-// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on
-// the registration page. REGISTER_APPROVE requires you set 'admin_email'
-// to the email address of an already registered person who can authorise
-// and/or approve/deny the request.
-
-App::$config['system']['register_policy'] = REGISTER_OPEN;
-App::$config['system']['register_text'] = '';
-App::$config['system']['admin_email'] = '{{$adminmail}}';
-
-// Maximum size of an imported message, 0 is unlimited
-
-App::$config['system']['max_import_size'] = 200000;
-
-// maximum size of uploaded photos
-
-App::$config['system']['maximagesize'] = 8000000;
-
-// Location of PHP command line processor
-
-App::$config['system']['php_path'] = '{{$phpath}}';
-
-// Configure how we communicate with directory servers.
-// DIRECTORY_MODE_NORMAL = directory client, we will find a directory
-// DIRECTORY_MODE_SECONDARY = caching directory or mirror
-// DIRECTORY_MODE_PRIMARY = main directory server
-// DIRECTORY_MODE_STANDALONE = "off the grid" or private directory services
-
-App::$config['system']['directory_mode'] = DIRECTORY_MODE_NORMAL;
-
-// default system theme
-
-App::$config['system']['theme'] = 'redbasic';
-
diff --git a/view/cs/lostpass_eml.tpl b/view/cs/lostpass_eml.tpl
deleted file mode 100644
index 3b79d2791..000000000
--- a/view/cs/lostpass_eml.tpl
+++ /dev/null
@@ -1,32 +0,0 @@
-
-Dear {{$username}},
- A request was recently received at {{$sitename}} to reset your account
-password. In order to confirm this request, please select the verification link
-below or paste it into your web browser address bar.
-
-If you did NOT request this change, please DO NOT follow the link
-provided and ignore and/or delete this email.
-
-Your password will not be changed unless we can verify that you
-issued this request.
-
-Follow this link to verify your identity:
-
-{{$reset_link}}
-
-You will then receive a follow-up message containing the new password.
-
-You may change that password from your account settings page after logging in.
-
-The login details are as follows:
-
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
-
-
-
-
-Sincerely,
- {{$sitename}} Administrator
-
-
diff --git a/view/cs/messages.po b/view/cs/messages.po
deleted file mode 100644
index 8e5b54d3a..000000000
--- a/view/cs/messages.po
+++ /dev/null
@@ -1,4618 +0,0 @@
-# FRIENDICA Distributed Social Network
-# Copyright (C) 2010, 2011 Mike Macgirvin
-# This file is distributed under the same license as the Friendika package.
-#
-# Michal Å upler <msupler@gmail.com>, 2011.
-msgid ""
-msgstr ""
-"Project-Id-Version: friendika\n"
-"Report-Msgid-Bugs-To: http://bugs.friendika.com/\n"
-"POT-Creation-Date: 2011-08-14 21:17-0700\n"
-"PO-Revision-Date: 2011-09-03 04:29+0000\n"
-"Last-Translator: michal_s <msupler@gmail.com>\n"
-"Language-Team: Czech (http://www.transifex.net/projects/p/friendika/team/cs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cs\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n"
-
-#: ../../mod/oexchange.php:27
-msgid "Post successful."
-msgstr "Příspěvek úspěšně odeslán"
-
-#: ../../mod/crepair.php:42
-msgid "Contact settings applied."
-msgstr "Nastavení kontaktu změněno"
-
-#: ../../mod/crepair.php:44
-msgid "Contact update failed."
-msgstr "Aktualizace kontaktu selhala."
-
-#: ../../mod/crepair.php:54 ../../mod/wall_attach.php:43
-#: ../../mod/fsuggest.php:78 ../../mod/events.php:102 ../../mod/photos.php:122
-#: ../../mod/photos.php:849 ../../mod/editpost.php:10 ../../mod/install.php:96
-#: ../../mod/notifications.php:62 ../../mod/contacts.php:132
-#: ../../mod/settings.php:41 ../../mod/settings.php:46
-#: ../../mod/settings.php:305 ../../mod/manage.php:75 ../../mod/network.php:6
-#: ../../mod/notes.php:20 ../../mod/attach.php:33 ../../mod/group.php:19
-#: ../../mod/viewconnections.php:21 ../../mod/register.php:27
-#: ../../mod/regmod.php:111 ../../mod/item.php:110
-#: ../../mod/profile_photo.php:19 ../../mod/profile_photo.php:133
-#: ../../mod/profile_photo.php:144 ../../mod/profile_photo.php:155
-#: ../../mod/message.php:8 ../../mod/message.php:116 ../../mod/admin.php:10
-#: ../../mod/wall_upload.php:42 ../../mod/follow.php:8
-#: ../../mod/display.php:108 ../../mod/profiles.php:7
-#: ../../mod/profiles.php:226 ../../mod/invite.php:13 ../../mod/invite.php:81
-#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:308
-#: ../../include/items.php:1930 ../../index.php:266
-msgid "Permission denied."
-msgstr "Přístup odmítnut."
-
-#: ../../mod/crepair.php:68 ../../mod/fsuggest.php:20
-#: ../../mod/fsuggest.php:92 ../../mod/contacts.php:240
-#: ../../mod/dfrn_confirm.php:114
-msgid "Contact not found."
-msgstr "Kontakt nenalezen."
-
-#: ../../mod/crepair.php:74
-msgid "Repair Contact Settings"
-msgstr "Opravit nastavení kontaktu"
-
-#: ../../mod/crepair.php:76
-msgid ""
-"<strong>WARNING: This is highly advanced</strong> and if you enter incorrect"
-" information your communications with this contact will stop working."
-msgstr ""
-"<strong>VAROVÃNÃ: Toto je velmi pokroÄilé nastavení,</strong> pokud zadáte "
-"nesprávné informace, komunikace s tímto kontaktem přestane fungovat."
-
-#: ../../mod/crepair.php:77
-msgid ""
-"Please use your browser 'Back' button <strong>now</strong> if you are "
-"uncertain what to do on this page."
-msgstr ""
-"Prosím použijte <strong>ihned</strong> v prohlížeÄi tlaÄítko \"zpÄ›t\" pokud "
-"si nejste jistí co dělat na této stránce."
-
-#: ../../mod/crepair.php:85 ../../mod/admin.php:464 ../../mod/admin.php:473
-msgid "Name"
-msgstr "Jméno"
-
-#: ../../mod/crepair.php:86
-msgid "Account Nickname"
-msgstr "PÅ™ezdívka úÄtu"
-
-#: ../../mod/crepair.php:87
-msgid "Account URL"
-msgstr "URL adresa úÄtu"
-
-#: ../../mod/crepair.php:88
-msgid "Friend Request URL"
-msgstr "Žádost o přátelství URL"
-
-#: ../../mod/crepair.php:89
-msgid "Friend Confirm URL"
-msgstr "URL adresa potvrzení přátelství"
-
-#: ../../mod/crepair.php:90
-msgid "Notification Endpoint URL"
-msgstr "NotifikaÄní URL adresa"
-
-#: ../../mod/crepair.php:91
-msgid "Poll/Feed URL"
-msgstr "Poll/Feed URL adresa"
-
-#: ../../mod/crepair.php:100 ../../mod/fsuggest.php:107
-#: ../../mod/events.php:333 ../../mod/photos.php:877 ../../mod/photos.php:934
-#: ../../mod/photos.php:1144 ../../mod/photos.php:1184
-#: ../../mod/photos.php:1223 ../../mod/photos.php:1254
-#: ../../mod/install.php:137 ../../mod/contacts.php:296
-#: ../../mod/settings.php:482 ../../mod/manage.php:106 ../../mod/group.php:84
-#: ../../mod/group.php:167 ../../mod/admin.php:298 ../../mod/admin.php:461
-#: ../../mod/admin.php:587 ../../mod/admin.php:652 ../../mod/profiles.php:372
-#: ../../mod/invite.php:106 ../../addon/facebook/facebook.php:366
-#: ../../addon/randplace/randplace.php:178
-#: ../../addon/impressum/impressum.php:69 ../../addon/oembed/oembed.php:41
-#: ../../addon/statusnet/statusnet.php:274
-#: ../../addon/statusnet/statusnet.php:288
-#: ../../addon/statusnet/statusnet.php:314
-#: ../../addon/statusnet/statusnet.php:321
-#: ../../addon/statusnet/statusnet.php:343
-#: ../../addon/statusnet/statusnet.php:468 ../../addon/piwik/piwik.php:76
-#: ../../addon/twitter/twitter.php:171 ../../addon/twitter/twitter.php:194
-#: ../../addon/twitter/twitter.php:280 ../../include/conversation.php:409
-msgid "Submit"
-msgstr "Odeslat"
-
-#: ../../mod/help.php:27
-msgid "Help:"
-msgstr "Nápověda:"
-
-#: ../../mod/help.php:31 ../../include/nav.php:64
-msgid "Help"
-msgstr "Nápověda"
-
-#: ../../mod/wall_attach.php:57
-#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "Velikost souboru přesáhla limit %d"
-
-#: ../../mod/wall_attach.php:87 ../../mod/wall_attach.php:98
-msgid "File upload failed."
-msgstr "Nahrání souboru se nezdařilo."
-
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
-msgstr "Návrhy přátelství odeslány "
-
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
-msgstr "Navrhněte přátelé"
-
-#: ../../mod/fsuggest.php:99
-#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Navrhněte přátelé pro uživatele %s"
-
-#: ../../mod/events.php:112 ../../mod/photos.php:834 ../../mod/notes.php:46
-#: ../../mod/profile.php:116
-msgid "Status"
-msgstr "Stav"
-
-#: ../../mod/events.php:113 ../../mod/photos.php:835 ../../mod/notes.php:47
-#: ../../mod/profperm.php:103 ../../mod/profile.php:117
-#: ../../include/profile_advanced.php:7
-msgid "Profile"
-msgstr "Profil"
-
-#: ../../mod/events.php:114 ../../mod/photos.php:836 ../../mod/notes.php:48
-#: ../../mod/profile.php:118
-msgid "Photos"
-msgstr "Fotografie"
-
-#: ../../mod/events.php:115 ../../mod/events.php:120 ../../mod/photos.php:837
-#: ../../mod/notes.php:49 ../../mod/profile.php:119
-msgid "Events"
-msgstr "Události"
-
-#: ../../mod/events.php:116 ../../mod/photos.php:838 ../../mod/notes.php:50
-#: ../../mod/notes.php:55 ../../mod/profile.php:120
-msgid "Personal Notes"
-msgstr "Osobní poznámky"
-
-#: ../../mod/events.php:210
-msgid "Create New Event"
-msgstr "Vytvořit novou událost"
-
-#: ../../mod/events.php:213
-msgid "Previous"
-msgstr "Předchozí"
-
-#: ../../mod/events.php:216
-msgid "Next"
-msgstr "Následující"
-
-#: ../../mod/events.php:223
-msgid "l, F j"
-msgstr "l, F j"
-
-#: ../../mod/events.php:235
-msgid "Edit event"
-msgstr "Editovat událost"
-
-#: ../../mod/events.php:237 ../../include/text.php:846
-msgid "link to source"
-msgstr "odkaz na zdroj"
-
-#: ../../mod/events.php:305
-msgid "hour:minute"
-msgstr "hodina:minuta"
-
-#: ../../mod/events.php:314
-msgid "Event details"
-msgstr "Detaily události"
-
-#: ../../mod/events.php:315
-#, php-format
-msgid "Format is %s %s. Starting date and Description are required."
-msgstr "Formát je %s %s. Datum zahájení a popis jsou povinné."
-
-#: ../../mod/events.php:316
-msgid "Event Starts:"
-msgstr "Událost zaÄíná:"
-
-#: ../../mod/events.php:319
-msgid "Finish date/time is not known or not relevant"
-msgstr "Datum/Äas konce není zadán nebo není relevantní"
-
-#: ../../mod/events.php:321
-msgid "Event Finishes:"
-msgstr "Akce konÄí:"
-
-#: ../../mod/events.php:324
-msgid "Adjust for viewer timezone"
-msgstr "Nastavit Äasové pásmo pro uživatele s právem pro Ätení"
-
-#: ../../mod/events.php:326
-msgid "Description:"
-msgstr "Popis:"
-
-#: ../../mod/events.php:328 ../../include/event.php:37 ../../boot.php:868
-msgid "Location:"
-msgstr "Místo:"
-
-#: ../../mod/events.php:330
-msgid "Share this event"
-msgstr "Sdílet tuto událost"
-
-#: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94
-#: ../../mod/dfrn_request.php:644 ../../addon/js_upload/js_upload.php:45
-msgid "Cancel"
-msgstr "Zrušit"
-
-#: ../../mod/tagrm.php:41
-msgid "Tag removed"
-msgstr "Štítek odstraněn"
-
-#: ../../mod/tagrm.php:79
-msgid "Remove Item Tag"
-msgstr "Odebrat štítek položky"
-
-#: ../../mod/tagrm.php:81
-msgid "Select a tag to remove: "
-msgstr "Vyberte štítek k odebrání:"
-
-#: ../../mod/tagrm.php:93
-msgid "Remove"
-msgstr "Odstranit"
-
-#: ../../mod/dfrn_poll.php:90 ../../mod/dfrn_poll.php:516
-#, php-format
-msgid "%s welcomes %s"
-msgstr "%s vítá %s "
-
-#: ../../mod/photos.php:37
-msgid "Photo Albums"
-msgstr "Fotoalba"
-
-#: ../../mod/photos.php:45 ../../mod/photos.php:143 ../../mod/photos.php:857
-#: ../../mod/photos.php:926 ../../mod/photos.php:941 ../../mod/photos.php:1332
-#: ../../mod/photos.php:1344
-msgid "Contact Photos"
-msgstr "Fotogalerie kontaktu"
-
-#: ../../mod/photos.php:57 ../../mod/settings.php:9
-msgid "everybody"
-msgstr "Žádost o připojení selhala nebo byla zrušena."
-
-#: ../../mod/photos.php:132
-msgid "Contact information unavailable"
-msgstr "Kontakt byl zablokován"
-
-#: ../../mod/photos.php:143 ../../mod/photos.php:577 ../../mod/photos.php:926
-#: ../../mod/photos.php:941 ../../mod/register.php:316
-#: ../../mod/register.php:323 ../../mod/register.php:330
-#: ../../mod/profile_photo.php:58 ../../mod/profile_photo.php:65
-#: ../../mod/profile_photo.php:72 ../../mod/profile_photo.php:160
-#: ../../mod/profile_photo.php:236 ../../mod/profile_photo.php:245
-msgid "Profile Photos"
-msgstr "Profilové fotografie"
-
-#: ../../mod/photos.php:153
-msgid "Album not found."
-msgstr "Album nenalezeno."
-
-#: ../../mod/photos.php:171 ../../mod/photos.php:935
-msgid "Delete Album"
-msgstr "Smazat album"
-
-#: ../../mod/photos.php:234 ../../mod/photos.php:1145
-msgid "Delete Photo"
-msgstr "Smazat fotografii"
-
-#: ../../mod/photos.php:508
-msgid "was tagged in a"
-msgstr "štítek byl přidán v"
-
-#: ../../mod/photos.php:508 ../../mod/like.php:110
-#: ../../include/diaspora.php:446 ../../include/conversation.php:31
-msgid "photo"
-msgstr "fotografie"
-
-#: ../../mod/photos.php:508
-msgid "by"
-msgstr "od"
-
-#: ../../mod/photos.php:608 ../../addon/js_upload/js_upload.php:310
-msgid "Image exceeds size limit of "
-msgstr "Velikost obrázku pÅ™ekraÄuje limit velikosti"
-
-#: ../../mod/photos.php:616
-msgid "Image file is empty."
-msgstr "Soubor obrázku je prázdný."
-
-#: ../../mod/photos.php:630 ../../mod/profile_photo.php:118
-#: ../../mod/wall_upload.php:65
-msgid "Unable to process image."
-msgstr "Obrázek není možné zprocesovat"
-
-#: ../../mod/photos.php:650 ../../mod/profile_photo.php:241
-#: ../../mod/wall_upload.php:84
-msgid "Image upload failed."
-msgstr "Nahrání obrázku selhalo."
-
-#: ../../mod/photos.php:733 ../../mod/community.php:9
-#: ../../mod/dfrn_request.php:591 ../../mod/viewconnections.php:16
-#: ../../mod/display.php:7 ../../mod/search.php:13 ../../mod/directory.php:20
-msgid "Public access denied."
-msgstr "Veřejný přístup odepřen."
-
-#: ../../mod/photos.php:743
-msgid "No photos selected"
-msgstr "Není vybrána žádná fotografie"
-
-#: ../../mod/photos.php:820
-msgid "Access to this item is restricted."
-msgstr "Přístup k této položce je omezen."
-
-#: ../../mod/photos.php:884
-msgid "Upload Photos"
-msgstr "Nahrání fotografií "
-
-#: ../../mod/photos.php:887 ../../mod/photos.php:930
-msgid "New album name: "
-msgstr "Název nového alba:"
-
-#: ../../mod/photos.php:888
-msgid "or existing album name: "
-msgstr "nebo stávající název alba:"
-
-#: ../../mod/photos.php:890 ../../mod/photos.php:1140
-msgid "Permissions"
-msgstr "Oprávnění:"
-
-#: ../../mod/photos.php:945
-msgid "Edit Album"
-msgstr "Edituj album"
-
-#: ../../mod/photos.php:955 ../../mod/photos.php:1362
-msgid "View Photo"
-msgstr "Zobraz fotografii"
-
-#: ../../mod/photos.php:984
-msgid "Photo not available"
-msgstr "Fotografie není k dispozici"
-
-#: ../../mod/photos.php:1033
-msgid "Edit photo"
-msgstr "Editovat fotografii"
-
-#: ../../mod/photos.php:1034
-msgid "Use as profile photo"
-msgstr "Použít jako profilovou fotografii"
-
-#: ../../mod/photos.php:1040 ../../include/conversation.php:342
-msgid "Private Message"
-msgstr "Soukromá zpráva"
-
-#: ../../mod/photos.php:1051
-msgid "View Full Size"
-msgstr "Zobrazit v plné velikosti"
-
-#: ../../mod/photos.php:1119
-msgid "Tags: "
-msgstr "Štítky:"
-
-#: ../../mod/photos.php:1122
-msgid "[Remove any tag]"
-msgstr "[Odstranit všechny štítky]"
-
-#: ../../mod/photos.php:1133
-msgid "New album name"
-msgstr "Nové jméno alba"
-
-#: ../../mod/photos.php:1136
-msgid "Caption"
-msgstr "Titulek"
-
-#: ../../mod/photos.php:1138
-msgid "Add a Tag"
-msgstr "Přidat štítek"
-
-#: ../../mod/photos.php:1142
-msgid ""
-"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-msgstr ""
-"Příklad: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-
-#: ../../mod/photos.php:1162 ../../include/conversation.php:390
-msgid "I like this (toggle)"
-msgstr "Líbí se mi to (pÅ™epínaÄ)"
-
-#: ../../mod/photos.php:1163 ../../include/conversation.php:391
-msgid "I don't like this (toggle)"
-msgstr "Nelíbí se mi to (pÅ™epínaÄ)"
-
-#: ../../mod/photos.php:1164 ../../include/conversation.php:392
-#: ../../include/conversation.php:746
-msgid "Share"
-msgstr "Sdílet"
-
-#: ../../mod/photos.php:1165 ../../mod/editpost.php:99
-#: ../../mod/message.php:190 ../../mod/message.php:324
-#: ../../include/conversation.php:393 ../../include/conversation.php:756
-msgid "Please wait"
-msgstr "Čekejte prosím"
-
-#: ../../mod/photos.php:1181 ../../mod/photos.php:1220
-#: ../../mod/photos.php:1251 ../../include/conversation.php:406
-msgid "This is you"
-msgstr "To je Vy"
-
-#: ../../mod/photos.php:1183 ../../mod/photos.php:1222
-#: ../../mod/photos.php:1253 ../../include/conversation.php:408
-#: ../../boot.php:411
-msgid "Comment"
-msgstr "Okomentovat"
-
-#: ../../mod/photos.php:1281 ../../mod/group.php:154 ../../mod/admin.php:468
-#: ../../include/conversation.php:427
-msgid "Delete"
-msgstr "Odstranit"
-
-#: ../../mod/photos.php:1349
-msgid "Recent Photos"
-msgstr "Aktuální fotografie"
-
-#: ../../mod/photos.php:1353
-msgid "Upload New Photos"
-msgstr "Nahrát nové fotografie"
-
-#: ../../mod/photos.php:1366
-msgid "View Album"
-msgstr "Zobrazit album"
-
-#: ../../mod/community.php:14
-msgid "Not available."
-msgstr "Není k dispozici."
-
-#: ../../mod/community.php:26 ../../include/nav.php:79
-msgid "Community"
-msgstr "Komunita"
-
-#: ../../mod/community.php:56 ../../mod/search.php:65
-msgid "No results."
-msgstr "Žádné výsledky."
-
-#: ../../mod/community.php:83 ../../mod/network.php:302
-#: ../../mod/register.php:504 ../../mod/profile.php:241
-#: ../../mod/display.php:117
-msgid ""
-"Shared content is covered by the <a "
-"href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons "
-"Attribution 3.0</a> license."
-msgstr ""
-"Sdílený obsah je v souladu s <a "
-"href=\"http://creativecommons.org/licenses/by/3.0/\">Commons Creative "
-"3.0</a> licencí."
-
-#: ../../mod/editpost.php:17 ../../mod/editpost.php:27
-msgid "Item not found"
-msgstr "Položka nenalezena"
-
-#: ../../mod/editpost.php:32
-msgid "Edit post"
-msgstr "Upravit příspěvek"
-
-#: ../../mod/editpost.php:75 ../../include/conversation.php:732
-msgid "Post to Email"
-msgstr "Poslat příspěvek na e-mail"
-
-#: ../../mod/editpost.php:90 ../../include/group.php:171
-#: ../../include/group.php:172 ../../include/conversation.php:417
-msgid "Edit"
-msgstr "Upravit"
-
-#: ../../mod/editpost.php:91 ../../mod/message.php:188
-#: ../../mod/message.php:322 ../../include/conversation.php:747
-msgid "Upload photo"
-msgstr "Nahrát fotografii"
-
-#: ../../mod/editpost.php:92 ../../include/conversation.php:748
-msgid "Attach file"
-msgstr "Přiložit soubor"
-
-#: ../../mod/editpost.php:93 ../../mod/message.php:189
-#: ../../mod/message.php:323 ../../include/conversation.php:749
-msgid "Insert web link"
-msgstr "Vložit webový odkaz"
-
-#: ../../mod/editpost.php:94 ../../include/conversation.php:750
-msgid "Insert YouTube video"
-msgstr "Vložit YouTube video"
-
-#: ../../mod/editpost.php:95 ../../include/conversation.php:751
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Vložit Vorbis [.ogg] video"
-
-#: ../../mod/editpost.php:96 ../../include/conversation.php:752
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Vložit Vorbis [.ogg] audio"
-
-#: ../../mod/editpost.php:97 ../../include/conversation.php:753
-msgid "Set your location"
-msgstr "Nastavte vaši polohu"
-
-#: ../../mod/editpost.php:98 ../../include/conversation.php:754
-msgid "Clear browser location"
-msgstr "Odstranit adresu v prohlížeÄi"
-
-#: ../../mod/editpost.php:100 ../../include/conversation.php:757
-msgid "Permission settings"
-msgstr "Nastavení oprávnění"
-
-#: ../../mod/editpost.php:108 ../../include/conversation.php:765
-msgid "CC: email addresses"
-msgstr "skrytá kopie: e-mailové adresy"
-
-#: ../../mod/editpost.php:109 ../../include/conversation.php:766
-msgid "Public post"
-msgstr "Veřejný příspěvek"
-
-#: ../../mod/editpost.php:111 ../../include/conversation.php:768
-msgid "Example: bob@example.com, mary@example.com"
-msgstr "Příklad: bob@example.com, mary@example.com"
-
-#: ../../mod/dfrn_request.php:96
-msgid "This introduction has already been accepted."
-msgstr "Toto pozvání již bylo přijato"
-
-#: ../../mod/dfrn_request.php:120 ../../mod/dfrn_request.php:351
-msgid "Profile location is not valid or does not contain profile information."
-msgstr "Adresa profilu není platná nebo neobsahuje profilové informace"
-
-#: ../../mod/dfrn_request.php:125 ../../mod/dfrn_request.php:356
-msgid "Warning: profile location has no identifiable owner name."
-msgstr ""
-"Varování: umístění profilu nemá žádné identifikovatelné jméno vlastníka"
-
-#: ../../mod/dfrn_request.php:127 ../../mod/dfrn_request.php:358
-msgid "Warning: profile location has no profile photo."
-msgstr "Varování: umístění profilu nemá žádnou profilovou fotografii."
-
-#: ../../mod/dfrn_request.php:130 ../../mod/dfrn_request.php:361
-#, php-format
-msgid "%d required parameter was not found at the given location"
-msgid_plural "%d required parameters were not found at the given location"
-msgstr[0] "%d požadovaný parametr nebyl nalezen na daném místě"
-msgstr[1] "%d požadované parametry nebyly nalezeny na daném místě"
-msgstr[2] "%d požadované parametry nebyly nalezeny na daném místě"
-
-#: ../../mod/dfrn_request.php:168
-msgid "Introduction complete."
-msgstr "PÅ™edstavení dokonÄeno."
-
-#: ../../mod/dfrn_request.php:192
-msgid "Unrecoverable protocol error."
-msgstr "Neopravitelná chyba protokolu"
-
-#: ../../mod/dfrn_request.php:220
-msgid "Profile unavailable."
-msgstr "Profil není k dispozici."
-
-#: ../../mod/dfrn_request.php:245
-#, php-format
-msgid "%s has received too many connection requests today."
-msgstr "%s dnes obdržel příliš mnoho požadavků na připojení."
-
-#: ../../mod/dfrn_request.php:246
-msgid "Spam protection measures have been invoked."
-msgstr "Ochrana proti spamu byla aktivována"
-
-#: ../../mod/dfrn_request.php:247
-msgid "Friends are advised to please try again in 24 hours."
-msgstr "Přátelům se doporuÄuje to zkusit znovu za 24 hodin."
-
-#: ../../mod/dfrn_request.php:277
-msgid "Invalid locator"
-msgstr "Neplatný odkaz"
-
-#: ../../mod/dfrn_request.php:296
-msgid "Unable to resolve your name at the provided location."
-msgstr "Nepodařilo se zjistit Vaše jméno na zadané adrese."
-
-#: ../../mod/dfrn_request.php:309
-msgid "You have already introduced yourself here."
-msgstr "Již jste se zde zavedli."
-
-#: ../../mod/dfrn_request.php:313
-#, php-format
-msgid "Apparently you are already friends with %s."
-msgstr "Zřejmě jste již přátelé se %s."
-
-#: ../../mod/dfrn_request.php:334
-msgid "Invalid profile URL."
-msgstr "Neplatné URL profilu."
-
-#: ../../mod/dfrn_request.php:340 ../../mod/follow.php:20
-msgid "Disallowed profile URL."
-msgstr "Nepovolené URL profilu."
-
-#: ../../mod/dfrn_request.php:406 ../../mod/contacts.php:116
-msgid "Failed to update contact record."
-msgstr "Nepodařilo se aktualizovat kontakt."
-
-#: ../../mod/dfrn_request.php:427
-msgid "Your introduction has been sent."
-msgstr "Vaše žádost o propojení byla odeslána."
-
-#: ../../mod/dfrn_request.php:481
-msgid "Please login to confirm introduction."
-msgstr "Prosím přihlašte se k potvrzení žádosti o propojení."
-
-#: ../../mod/dfrn_request.php:495
-msgid ""
-"Incorrect identity currently logged in. Please login to "
-"<strong>this</strong> profile."
-msgstr ""
-"Jste přihlášeni pod nesprávnou identitou Prosím, přihlaste se do "
-"<strong>tohoto</strong> profilu."
-
-#: ../../mod/dfrn_request.php:507
-#, php-format
-msgid "Welcome home %s."
-msgstr "Vítejte doma %s."
-
-#: ../../mod/dfrn_request.php:508
-#, php-format
-msgid "Please confirm your introduction/connection request to %s."
-msgstr "Prosím potvrÄte VaÅ¡i žádost o pÅ™edstavení/spojení %s."
-
-#: ../../mod/dfrn_request.php:509
-msgid "Confirm"
-msgstr "Potvrdit"
-
-#: ../../mod/dfrn_request.php:542 ../../include/items.php:1519
-msgid "[Name Withheld]"
-msgstr "[Jméno odepřeno]"
-
-#: ../../mod/dfrn_request.php:549
-msgid "Introduction received at "
-msgstr "Pozvánka přijata v"
-
-#: ../../mod/dfrn_request.php:551 ../../mod/lostpass.php:44
-#: ../../mod/lostpass.php:106 ../../mod/register.php:369
-#: ../../mod/register.php:423 ../../mod/regmod.php:54
-#: ../../mod/dfrn_notify.php:291 ../../mod/dfrn_notify.php:547
-#: ../../mod/dfrn_confirm.php:674 ../../include/items.php:1528
-msgid "Administrator"
-msgstr "Administrátor"
-
-#: ../../mod/dfrn_request.php:630
-msgid "Friend/Connection Request"
-msgstr "Požadavek o přátelství / propojení"
-
-#: ../../mod/dfrn_request.php:631
-msgid ""
-"Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, "
-"testuser@identi.ca"
-msgstr ""
-"Příklady: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, "
-"testuser@identi.ca"
-
-#: ../../mod/dfrn_request.php:632
-msgid "Please answer the following:"
-msgstr "Odpovězte, prosím, následující:"
-
-#: ../../mod/dfrn_request.php:633
-#, php-format
-msgid "Does %s know you?"
-msgstr "Zná Vás uživatel %s ?"
-
-#: ../../mod/dfrn_request.php:634 ../../mod/settings.php:415
-#: ../../mod/settings.php:421 ../../mod/settings.php:429
-#: ../../mod/settings.php:433 ../../mod/register.php:498
-#: ../../mod/profiles.php:354
-msgid "Yes"
-msgstr "Ano"
-
-#: ../../mod/dfrn_request.php:635 ../../mod/settings.php:415
-#: ../../mod/settings.php:421 ../../mod/settings.php:429
-#: ../../mod/settings.php:433 ../../mod/register.php:499
-#: ../../mod/profiles.php:355
-msgid "No"
-msgstr "Ne"
-
-#: ../../mod/dfrn_request.php:636
-msgid "Add a personal note:"
-msgstr "Přidat osobní poznámku:"
-
-#: ../../mod/dfrn_request.php:637
-msgid ""
-"Please enter your 'Identity Address' from one of the following supported "
-"social networks:"
-msgstr ""
-"Prosím, zadejte adresu své 'identity' jedné z následujících podporovaných "
-"sociálních sítí:"
-
-#: ../../mod/dfrn_request.php:638
-msgid "Friendika"
-msgstr "Friendika"
-
-#: ../../mod/dfrn_request.php:639
-msgid "StatusNet/Federated Social Web"
-msgstr "StatusNet / Federativní Sociální Web"
-
-#: ../../mod/dfrn_request.php:640
-msgid "Private (secure) network"
-msgstr "Soukromá (zabezpeÄená) síť"
-
-#: ../../mod/dfrn_request.php:641
-msgid "Public (insecure) network"
-msgstr "VeÅ™ejná (nezabezpeÄená) síť"
-
-#: ../../mod/dfrn_request.php:642
-msgid "Your Identity Address:"
-msgstr "Adresa Vaší identity :"
-
-#: ../../mod/dfrn_request.php:643
-msgid "Submit Request"
-msgstr "Odeslat žádost"
-
-#: ../../mod/install.php:34
-msgid "Could not create/connect to database."
-msgstr "Nelze vytvořit / připojit se k databázi."
-
-#: ../../mod/install.php:39
-msgid "Connected to database."
-msgstr "Připojeno k databázi."
-
-#: ../../mod/install.php:75
-msgid "Proceed with Installation"
-msgstr "PokraÄovat v instalaci"
-
-#: ../../mod/install.php:77
-msgid "Your Friendika site database has been installed."
-msgstr "Vaše databáze Friendiky byla nainstalována."
-
-#: ../../mod/install.php:78
-msgid ""
-"IMPORTANT: You will need to [manually] setup a scheduled task for the "
-"poller."
-msgstr "Důležité: Budete si muset [ruÄnÄ›] plánovat úlohu pro poller."
-
-#: ../../mod/install.php:79 ../../mod/install.php:89 ../../mod/install.php:207
-msgid "Please see the file \"INSTALL.txt\"."
-msgstr "PÅ™eÄtÄ›te si prosím informace v souboru \"INSTALL.txt\"."
-
-#: ../../mod/install.php:81
-msgid "Proceed to registration"
-msgstr "PokraÄovat k registraci"
-
-#: ../../mod/install.php:87
-msgid "Database import failed."
-msgstr "Import databáze se nezdařil."
-
-#: ../../mod/install.php:88
-msgid ""
-"You may need to import the file \"database.sql\" manually using phpmyadmin "
-"or mysql."
-msgstr ""
-"Možná budete muset importovat soubor \"database.sql\" ruÄnÄ› pomocí "
-"phpMyAdmin Äi MySQL."
-
-#: ../../mod/install.php:101
-msgid "Welcome to Friendika."
-msgstr "Vítejte na Friendice."
-
-#: ../../mod/install.php:124
-msgid "Friendika Social Network"
-msgstr "Sociální síť Friendika "
-
-#: ../../mod/install.php:125
-msgid "Installation"
-msgstr "Instalace"
-
-#: ../../mod/install.php:126
-msgid ""
-"In order to install Friendika we need to know how to connect to your "
-"database."
-msgstr "Pro instalaci Friendika musíme vědět, jak se připojit k databázi."
-
-#: ../../mod/install.php:127
-msgid ""
-"Please contact your hosting provider or site administrator if you have "
-"questions about these settings."
-msgstr ""
-"Obraťte se na svého poskytovatele hostingu nebo administrátora serveru , "
-"pokud máte dotazy týkající se těchto nastavení."
-
-#: ../../mod/install.php:128
-msgid ""
-"The database you specify below should already exist. If it does not, please "
-"create it before continuing."
-msgstr ""
-"Databázi, kterou uvedete níže by již měla existovat. Pokud tak není, "
-"prosíme, vytvoÅ™te ji pÅ™ed pokraÄováním."
-
-#: ../../mod/install.php:129
-msgid "Database Server Name"
-msgstr "Jméno databázového serveru"
-
-#: ../../mod/install.php:130
-msgid "Database Login Name"
-msgstr "Přihlašovací jméno k databázi"
-
-#: ../../mod/install.php:131
-msgid "Database Login Password"
-msgstr "Heslo k databázovému úÄtu "
-
-#: ../../mod/install.php:132
-msgid "Database Name"
-msgstr "Jméno databáze"
-
-#: ../../mod/install.php:133
-msgid "Please select a default timezone for your website"
-msgstr "Prosím, vyberte výchozí Äasové pásmo pro vaÅ¡e webové stránky"
-
-#: ../../mod/install.php:134
-msgid ""
-"Site administrator email address. Your account email address must match this"
-" in order to use the web admin panel."
-msgstr ""
-"e-mailová adresa administrárota webu. E-mailová adresa vaÅ¡eho úÄtu se musí "
-"shodovat, aby bylo možné využívat panel webové administrace."
-
-#: ../../mod/install.php:153
-msgid "Could not find a command line version of PHP in the web server PATH."
-msgstr "Nelze najít verzi PHP pro příkazový řádek v PATH webového serveru."
-
-#: ../../mod/install.php:154
-msgid ""
-"This is required. Please adjust the configuration file .htconfig.php "
-"accordingly."
-msgstr ""
-"Tento krok je nutný. Upravte přísluÅ¡ným způsobem konfiguraÄní soubor "
-".htconfig.php."
-
-#: ../../mod/install.php:161
-msgid ""
-"The command line version of PHP on your system does not have "
-"\"register_argc_argv\" enabled."
-msgstr ""
-"Verze PHP pro příkazový řádek na vašem systému nemá povolen "
-"\"register_argc_argv\"."
-
-#: ../../mod/install.php:162
-msgid "This is required for message delivery to work."
-msgstr "Toto je nutné pro fungování doruÄování zpráv."
-
-#: ../../mod/install.php:184
-msgid ""
-"Error: the \"openssl_pkey_new\" function on this system is not able to "
-"generate encryption keys"
-msgstr ""
-"Chyba: funkce \"openssl_pkey_new\" na tomto systému není schopna generovat "
-"Å¡ifrovací klíÄe"
-
-#: ../../mod/install.php:185
-msgid ""
-"If running under Windows, please see "
-"\"http://www.php.net/manual/en/openssl.installation.php\"."
-msgstr ""
-"Pokud systém běží na Windows, seznamte se s "
-"\"http://www.php.net/manual/en/openssl.installation.php\"."
-
-#: ../../mod/install.php:194
-msgid ""
-"Error: Apache webserver mod-rewrite module is required but not installed."
-msgstr ""
-"Chyba: Požadovaný Apache webserver mod-rewrite modul není nainstalován."
-
-#: ../../mod/install.php:196
-msgid "Error: libCURL PHP module required but not installed."
-msgstr "Chyba: požadovaný libcurl PHP modul není nainstalován."
-
-#: ../../mod/install.php:198
-msgid ""
-"Error: GD graphics PHP module with JPEG support required but not installed."
-msgstr "Chyba: požadovaný GD graphics PHP modul není nainstalován."
-
-#: ../../mod/install.php:200
-msgid "Error: openssl PHP module required but not installed."
-msgstr "Chyba: požadovaný openssl PHP modul není nainstalován."
-
-#: ../../mod/install.php:202
-msgid "Error: mysqli PHP module required but not installed."
-msgstr "Chyba: požadovaný mysqli PHP modul není nainstalován."
-
-#: ../../mod/install.php:204
-msgid "Error: mb_string PHP module required but not installed."
-msgstr "Chyba: PHP modul mb_string je vyžadován, ale není nainstalován."
-
-#: ../../mod/install.php:216
-msgid ""
-"The web installer needs to be able to create a file called \".htconfig.php\""
-" in the top folder of your web server and it is unable to do so."
-msgstr ""
-"Webový instalátor musí být schopen vytvořit soubor s názvem "
-"\".htconfig.php\" v hlavním adresáři vašeho webového serveru ale nyní mu to "
-"není umožněno."
-
-#: ../../mod/install.php:217
-msgid ""
-"This is most often a permission setting, as the web server may not be able "
-"to write files in your folder - even if you can."
-msgstr ""
-"Toto je nejÄastÄ›ji nastavením oprávnÄ›ní, kdy webový server nemusí být "
-"schopen zapisovat soubory do vašeho adresáře - i když Vy můžete."
-
-#: ../../mod/install.php:218
-msgid ""
-"Please check with your site documentation or support people to see if this "
-"situation can be corrected."
-msgstr ""
-"Prosím, poraÄte se s dokumentací k VaÅ¡emu hostingu nebo s technickou "
-"podporou, zda-li lze tuto situaci napravit."
-
-#: ../../mod/install.php:219
-msgid ""
-"If not, you may be required to perform a manual installation. Please see the"
-" file \"INSTALL.txt\" for instructions."
-msgstr ""
-"Pokud ne, může být vyžadováno provedení ruÄní instalace. Prosím, seznamte se"
-" s návodem popsaným v souboru \"INSTALL.txt\"."
-
-#: ../../mod/install.php:228
-msgid ""
-"The database configuration file \".htconfig.php\" could not be written. "
-"Please use the enclosed text to create a configuration file in your web "
-"server root."
-msgstr ""
-"Databázový konfiguraÄní soubor \".htconfig.php\" nemohl být uložen. Prosím, "
-"použijte pÅ™iložený text k vytvoÅ™ení konfiguraÄního souboru ve vaÅ¡em "
-"kořenovém adresáři webového serveru."
-
-#: ../../mod/install.php:243
-msgid "Errors encountered creating database tables."
-msgstr "Při vytváření databázových tabulek došlo k chybám."
-
-#: ../../mod/update_community.php:18 ../../mod/update_network.php:22
-#: ../../mod/update_profile.php:41
-msgid "[Embedded content - reload page to view]"
-msgstr "[Vložený obsah - obnovení stránky pro zobrazení]"
-
-#: ../../mod/match.php:10
-msgid "Profile Match"
-msgstr "Shoda profilu"
-
-#: ../../mod/match.php:18
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr ""
-"Žádná klíÄová slova k porovnání. Prosím, pÅ™idejte klíÄová slova do VaÅ¡eho "
-"výchozího profilu."
-
-#: ../../mod/match.php:54
-msgid "No matches"
-msgstr "Žádné shody"
-
-#: ../../mod/lockview.php:39
-msgid "Remote privacy information not available."
-msgstr "Vzdálené soukromé informace nejsou k dispozici."
-
-#: ../../mod/lockview.php:43
-msgid "Visible to:"
-msgstr "Viditelné pro:"
-
-#: ../../mod/home.php:23
-#, php-format
-msgid "Welcome to %s"
-msgstr "Vítá Vás %s"
-
-#: ../../mod/notifications.php:26
-msgid "Invalid request identifier."
-msgstr "Neplatný identifikátor požadavku."
-
-#: ../../mod/notifications.php:35 ../../mod/notifications.php:118
-#: ../../mod/notifications.php:162
-msgid "Discard"
-msgstr "Odstranit"
-
-#: ../../mod/notifications.php:47 ../../mod/notifications.php:117
-#: ../../mod/notifications.php:161
-msgid "Ignore"
-msgstr "Ignorovat"
-
-#: ../../mod/notifications.php:74
-msgid "Pending Friend/Connect Notifications"
-msgstr "Čekající požadavky na Přátelství / Připojení "
-
-#: ../../mod/notifications.php:78
-msgid "Show Ignored Requests"
-msgstr "Zobrazit ignorované žádosti"
-
-#: ../../mod/notifications.php:78
-msgid "Hide Ignored Requests"
-msgstr "Skrýt ignorované žádosti"
-
-#: ../../mod/notifications.php:105 ../../mod/notifications.php:148
-msgid "Notification type: "
-msgstr "Typ oznámení:"
-
-#: ../../mod/notifications.php:106
-msgid "Friend Suggestion"
-msgstr "Návrh přátelství"
-
-#: ../../mod/notifications.php:108
-#, php-format
-msgid "suggested by %s"
-msgstr "navrhl %s"
-
-#: ../../mod/notifications.php:114 ../../mod/notifications.php:159
-#: ../../mod/admin.php:466
-msgid "Approve"
-msgstr "Schválit"
-
-#: ../../mod/notifications.php:133
-msgid "Claims to be known to you: "
-msgstr "Vaši údajní známí:"
-
-#: ../../mod/notifications.php:133
-msgid "yes"
-msgstr "ano"
-
-#: ../../mod/notifications.php:133
-msgid "no"
-msgstr "ne"
-
-#: ../../mod/notifications.php:139
-msgid "Approve as: "
-msgstr "Schválit jako:"
-
-#: ../../mod/notifications.php:140
-msgid "Friend"
-msgstr "Přítel"
-
-#: ../../mod/notifications.php:141
-msgid "Fan/Admirer"
-msgstr "Fanoušek / obdivovatel"
-
-#: ../../mod/notifications.php:149
-msgid "Friend/Connect Request"
-msgstr "Přítel / žádost o připojení"
-
-#: ../../mod/notifications.php:149
-msgid "New Follower"
-msgstr "Nový následovník"
-
-#: ../../mod/notifications.php:168
-msgid "No notifications."
-msgstr "Žádné oznámení."
-
-#: ../../mod/contacts.php:26
-msgid "Invite Friends"
-msgstr "Pozvat přátele"
-
-#: ../../mod/contacts.php:32
-#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "Pozvánka %d k dispozici"
-msgstr[1] "Pozvánky %d k dispozici"
-msgstr[2] "Pozvánky %d k dispozici"
-
-#: ../../mod/contacts.php:41
-msgid "Find People With Shared Interests"
-msgstr "Najít lidi se spoleÄnými zájmy"
-
-#: ../../mod/contacts.php:45
-msgid "Connect/Follow"
-msgstr "Připojit / Následovat"
-
-#: ../../mod/contacts.php:46
-msgid "Example: bob@example.com, http://example.com/barbara"
-msgstr "Příklad: jan@příklad.cz, http://příklad.cz/jana"
-
-#: ../../mod/contacts.php:47
-msgid "Follow"
-msgstr "Následovat"
-
-#: ../../mod/contacts.php:69 ../../mod/contacts.php:150
-msgid "Could not access contact record."
-msgstr "Nelze získat přístup k záznamu kontaktu."
-
-#: ../../mod/contacts.php:83
-msgid "Could not locate selected profile."
-msgstr "Nelze nalézt vybraný profil."
-
-#: ../../mod/contacts.php:114
-msgid "Contact updated."
-msgstr "Kontakt aktualizován."
-
-#: ../../mod/contacts.php:172
-msgid "Contact has been blocked"
-msgstr "Kontakt byl zablokován"
-
-#: ../../mod/contacts.php:172
-msgid "Contact has been unblocked"
-msgstr "Kontakt byl odblokován"
-
-#: ../../mod/contacts.php:186
-msgid "Contact has been ignored"
-msgstr "Kontakt bude ignorován"
-
-#: ../../mod/contacts.php:186
-msgid "Contact has been unignored"
-msgstr "Kontakt přestal být ignorován"
-
-#: ../../mod/contacts.php:207
-msgid "stopped following"
-msgstr "následování zastaveno"
-
-#: ../../mod/contacts.php:226
-msgid "Contact has been removed."
-msgstr "Kontakt byl odstraněn."
-
-#: ../../mod/contacts.php:254 ../../mod/contacts.php:397
-msgid "Mutual Friendship"
-msgstr "Vzájemné přátelství"
-
-#: ../../mod/contacts.php:258 ../../mod/contacts.php:401
-msgid "is a fan of yours"
-msgstr "je Váš fanoušek"
-
-#: ../../mod/contacts.php:263 ../../mod/contacts.php:405
-msgid "you are a fan of"
-msgstr "jste fanouškem"
-
-#: ../../mod/contacts.php:280
-msgid "Privacy Unavailable"
-msgstr "Ochrana soukromí není k dispozici"
-
-#: ../../mod/contacts.php:281
-msgid "Private communications are not available for this contact."
-msgstr "Soukromá komunikace není dostupná pro tento kontakt."
-
-#: ../../mod/contacts.php:284
-msgid "Never"
-msgstr "Nikdy"
-
-#: ../../mod/contacts.php:288
-msgid "(Update was successful)"
-msgstr "(Aktualizace byla úspěšná)"
-
-#: ../../mod/contacts.php:288
-msgid "(Update was not successful)"
-msgstr "(Aktualizace nebyla úspěšná)"
-
-#: ../../mod/contacts.php:291
-msgid "Suggest friends"
-msgstr "Navrhněte přátelé"
-
-#: ../../mod/contacts.php:295
-msgid "Contact Editor"
-msgstr "Editor kontaktu"
-
-#: ../../mod/contacts.php:297
-msgid "Profile Visibility"
-msgstr "Viditelnost profilu"
-
-#: ../../mod/contacts.php:298
-#, php-format
-msgid ""
-"Please choose the profile you would like to display to %s when viewing your "
-"profile securely."
-msgstr ""
-"Vyberte prosím profil, který chcete zobrazit %s pÅ™i zabezpeÄeném prohlížení "
-"vašeho profilu."
-
-#: ../../mod/contacts.php:299
-msgid "Contact Information / Notes"
-msgstr "Kontaktní informace / poznámky"
-
-#: ../../mod/contacts.php:300
-msgid "Online Reputation"
-msgstr "Online pověst"
-
-#: ../../mod/contacts.php:301
-msgid ""
-"Occasionally your friends may wish to inquire about this person's online "
-"legitimacy."
-msgstr ""
-"ObÄas mohou vaÅ¡i přátelé chtít informovat o online legitimitÄ› této osoby."
-
-#: ../../mod/contacts.php:302
-msgid ""
-"You may help them choose whether or not to interact with this person by "
-"providing a <em>reputation</em> to guide them."
-msgstr ""
-"Poskytnutím <em>pověsti</em> jim můžete pomoci se rozhodnout, zda-li s touto"
-" osobou komunikovat Äi nikoliv."
-
-#: ../../mod/contacts.php:303
-msgid ""
-"Please take a moment to elaborate on this selection if you feel it could be "
-"helpful to others."
-msgstr ""
-"Věnujte prosím chvilku vyplnění této volby, pokud máte pocit, že by mohlo "
-"být užiteÄné pro ostatní."
-
-#: ../../mod/contacts.php:304 ../../mod/contacts.php:421
-#: ../../mod/viewconnections.php:61
-#, php-format
-msgid "Visit %s's profile [%s]"
-msgstr "Navštivte profil uživatele %s [%s]"
-
-#: ../../mod/contacts.php:305
-msgid "Block/Unblock contact"
-msgstr "Blokovat / Odblokovat kontakt"
-
-#: ../../mod/contacts.php:306
-msgid "Ignore contact"
-msgstr "Ignorovat kontakt"
-
-#: ../../mod/contacts.php:307
-msgid "Repair contact URL settings"
-msgstr "Opravit nastavení URL kontaktu"
-
-#: ../../mod/contacts.php:308
-msgid "Repair contact URL settings (WARNING: Advanced)"
-msgstr "Opravit nastavení URL kontaktu (Varování: PokroÄilé)"
-
-#: ../../mod/contacts.php:309
-msgid "View conversations"
-msgstr "Zobrazit konverzace"
-
-#: ../../mod/contacts.php:312
-msgid "Delete contact"
-msgstr "Odstranit kontakt"
-
-#: ../../mod/contacts.php:314
-msgid "Last updated: "
-msgstr "Poslední aktualizace:"
-
-#: ../../mod/contacts.php:315
-msgid "Update public posts: "
-msgstr "Aktualizace veřejných příspěvků:"
-
-#: ../../mod/contacts.php:317 ../../mod/admin.php:701
-msgid "Update now"
-msgstr "Aktualizovat"
-
-#: ../../mod/contacts.php:320
-msgid "Unblock this contact"
-msgstr "Odblokovat tento kontakt"
-
-#: ../../mod/contacts.php:320
-msgid "Block this contact"
-msgstr "Blokovat tento kontakt"
-
-#: ../../mod/contacts.php:321
-msgid "Unignore this contact"
-msgstr "Přestat ignorovat tento kontakt"
-
-#: ../../mod/contacts.php:321
-msgid "Ignore this contact"
-msgstr "Ignorovat tento kontakt"
-
-#: ../../mod/contacts.php:324
-msgid "Currently blocked"
-msgstr "V souÄasnosti zablokováno"
-
-#: ../../mod/contacts.php:325
-msgid "Currently ignored"
-msgstr "V souÄasnosti ignorováno"
-
-#: ../../mod/contacts.php:356 ../../include/nav.php:110
-msgid "Contacts"
-msgstr "Kontakty"
-
-#: ../../mod/contacts.php:358
-msgid "Show Blocked Connections"
-msgstr "Zobrazit blokované spojení"
-
-#: ../../mod/contacts.php:358
-msgid "Hide Blocked Connections"
-msgstr "Skrýt blokované spojení"
-
-#: ../../mod/contacts.php:360 ../../mod/directory.php:55
-msgid "Finding: "
-msgstr "Zjištění: "
-
-#: ../../mod/contacts.php:361 ../../mod/directory.php:57
-msgid "Find"
-msgstr "Najít"
-
-#: ../../mod/contacts.php:422 ../../include/conversation.php:612
-msgid "Edit contact"
-msgstr "Editovat kontakt"
-
-#: ../../mod/lostpass.php:16
-msgid "No valid account found."
-msgstr "Nenalezen žádný platný úÄet."
-
-#: ../../mod/lostpass.php:31
-msgid "Password reset request issued. Check your email."
-msgstr ""
-"Žádost o obnovení hesla vyřízena. Zkontrolujte Vaši e-mailovou schránku."
-
-#: ../../mod/lostpass.php:42
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "Na %s bylo zažádáno o resetování hesla"
-
-#: ../../mod/lostpass.php:64
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr ""
-"Žádost nemohla být ověřena. (Možná jste ji odeslali již dříve.) Obnovení "
-"hesla se nezdařilo."
-
-#: ../../mod/lostpass.php:82 ../../boot.php:654
-msgid "Password Reset"
-msgstr "Obnovení hesla"
-
-#: ../../mod/lostpass.php:83
-msgid "Your password has been reset as requested."
-msgstr "Vaše heslo bylo na Vaše přání resetováno."
-
-#: ../../mod/lostpass.php:84
-msgid "Your new password is"
-msgstr "Vaše nové heslo je"
-
-#: ../../mod/lostpass.php:85
-msgid "Save or copy your new password - and then"
-msgstr "Uložte si nebo zkopírujte nové heslo - a pak"
-
-#: ../../mod/lostpass.php:86
-msgid "click here to login"
-msgstr "klikněte zde pro přihlášení"
-
-#: ../../mod/lostpass.php:87
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr ""
-"Vaše heslo může být změněno na stránce <em>nastavení</em> po úspěšném "
-"přihlášení."
-
-#: ../../mod/lostpass.php:118
-msgid "Forgot your Password?"
-msgstr "Zapomněli jste heslo?"
-
-#: ../../mod/lostpass.php:119
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr ""
-"Zadejte svůj e-mailovou adresu a odešlete žádost o zaslání Vašeho nového "
-"hesla. Poté zkontrolujte svůj e-mail pro další instrukce."
-
-#: ../../mod/lostpass.php:120
-msgid "Nickname or Email: "
-msgstr "Přezdívka nebo e-mail:"
-
-#: ../../mod/lostpass.php:121
-msgid "Reset"
-msgstr "Reset"
-
-#: ../../mod/settings.php:64
-msgid "Passwords do not match. Password unchanged."
-msgstr "Hesla se neshodují. Heslo nebylo změněno."
-
-#: ../../mod/settings.php:69
-msgid "Empty passwords are not allowed. Password unchanged."
-msgstr "Prázdné hesla nejsou povolena. Heslo nebylo změněno."
-
-#: ../../mod/settings.php:80
-msgid "Password changed."
-msgstr "Heslo bylo změněno."
-
-#: ../../mod/settings.php:82
-msgid "Password update failed. Please try again."
-msgstr "Aktualizace hesla se nezdařila. Zkuste to prosím znovu."
-
-#: ../../mod/settings.php:161
-msgid "Failed to connect with email account using the settings provided."
-msgstr "NepodaÅ™ilo se pÅ™ipojit k e-mailovému úÄtu pomocí dodaného nastavení."
-
-#: ../../mod/settings.php:188
-msgid " Please use a shorter name."
-msgstr "Prosím použijte kratší jméno."
-
-#: ../../mod/settings.php:190
-msgid " Name too short."
-msgstr "Jméno je příliš krátké."
-
-#: ../../mod/settings.php:196
-msgid " Not valid email."
-msgstr "Neplatný e-mail."
-
-#: ../../mod/settings.php:198
-msgid " Cannot change to that email."
-msgstr "Nelze provést změnu na tento e-mail."
-
-#: ../../mod/settings.php:257 ../../addon/facebook/facebook.php:297
-#: ../../addon/impressum/impressum.php:64 ../../addon/piwik/piwik.php:89
-#: ../../addon/twitter/twitter.php:275
-msgid "Settings updated."
-msgstr "Nastavení aktualizováno."
-
-#: ../../mod/settings.php:311 ../../include/nav.php:108
-msgid "Account settings"
-msgstr "Nastavení úÄtu"
-
-#: ../../mod/settings.php:312
-msgid "Plugin settings"
-msgstr "Nastavení pluginu"
-
-#: ../../mod/settings.php:322
-msgid "No Plugin settings configured"
-msgstr "Žádný doplněk není nastaven"
-
-#: ../../mod/settings.php:329 ../../addon/widgets/widgets.php:122
-msgid "Plugin Settings"
-msgstr "Nastavení doplňku"
-
-#: ../../mod/settings.php:382 ../../mod/admin.php:133 ../../mod/admin.php:443
-msgid "Normal Account"
-msgstr "Normální úÄet"
-
-#: ../../mod/settings.php:383
-msgid "This account is a normal personal profile"
-msgstr "Tento úÄet je běžný osobní profil"
-
-#: ../../mod/settings.php:386 ../../mod/admin.php:134 ../../mod/admin.php:444
-msgid "Soapbox Account"
-msgstr "Soapbox úÄet"
-
-#: ../../mod/settings.php:387
-msgid "Automatically approve all connection/friend requests as read-only fans"
-msgstr ""
-"Automaticky schválit všechna spojení / přátelství jako fanoušky s právem "
-"pouze ke Ätení"
-
-#: ../../mod/settings.php:390 ../../mod/admin.php:135 ../../mod/admin.php:445
-msgid "Community/Celebrity Account"
-msgstr "Komunitní úÄet / ÚÄet celebrity"
-
-#: ../../mod/settings.php:391
-msgid ""
-"Automatically approve all connection/friend requests as read-write fans"
-msgstr ""
-"Automaticky schvalovat všechny žádosti o spojení / přátelství, jako fanoušky"
-" s právem ke Ätení."
-
-#: ../../mod/settings.php:394 ../../mod/admin.php:136 ../../mod/admin.php:446
-msgid "Automatic Friend Account"
-msgstr "ÚÄet s automatickým schvalováním přátel"
-
-#: ../../mod/settings.php:395
-msgid "Automatically approve all connection/friend requests as friends"
-msgstr ""
-"Automaticky schvalovat všechny žádosti o spojení / přátelství jako přátele"
-
-#: ../../mod/settings.php:405
-msgid "OpenID:"
-msgstr "OpenID:"
-
-#: ../../mod/settings.php:405
-msgid "(Optional) Allow this OpenID to login to this account."
-msgstr "(Volitelné) Povolit OpenID pro pÅ™ihlášení k tomuto úÄtu."
-
-#: ../../mod/settings.php:415
-msgid "Publish your default profile in your local site directory?"
-msgstr "Publikovat Váš výchozí profil v místním adresáři webu?"
-
-#: ../../mod/settings.php:421
-msgid "Publish your default profile in the global social directory?"
-msgstr "Publikovat Váš výchozí profil v globální sociálním adresáři?"
-
-#: ../../mod/settings.php:429
-msgid "Hide your contact/friend list from viewers of your default profile?"
-msgstr ""
-"Skrýt Vaše kontaktní údaje a seznam přátel před návštěvníky ve Vašem "
-"výchozím profilu?"
-
-#: ../../mod/settings.php:433
-msgid "Hide profile details and all your messages from unknown viewers?"
-msgstr "Skrýt detaily profilu a všechny zprávy před neznámými uživateli?"
-
-#: ../../mod/settings.php:442
-msgid "Profile is <strong>not published</strong>."
-msgstr "Profil <strong>není zveřejněn</strong>."
-
-#: ../../mod/settings.php:461 ../../mod/profile_photo.php:196
-msgid "or"
-msgstr "nebo"
-
-#: ../../mod/settings.php:466
-msgid "Your Identity Address is"
-msgstr "Vaše adresa identity je"
-
-#: ../../mod/settings.php:480
-msgid "Account Settings"
-msgstr "Nastavení úÄtu"
-
-#: ../../mod/settings.php:487
-msgid "Export Personal Data"
-msgstr "Export osobních údajů"
-
-#: ../../mod/settings.php:490
-msgid "Password Settings"
-msgstr "Nastavení hesla"
-
-#: ../../mod/settings.php:491
-msgid "New Password:"
-msgstr "Nové heslo:"
-
-#: ../../mod/settings.php:492
-msgid "Confirm:"
-msgstr "PotvrÄte:"
-
-#: ../../mod/settings.php:492
-msgid "Leave password fields blank unless changing"
-msgstr "Pokud nechcete změnit heslo, položku hesla nevyplňujte"
-
-#: ../../mod/settings.php:496
-msgid "Basic Settings"
-msgstr "Základní nastavení"
-
-#: ../../mod/settings.php:497 ../../include/profile_advanced.php:10
-msgid "Full Name:"
-msgstr "Celé jméno:"
-
-#: ../../mod/settings.php:498
-msgid "Email Address:"
-msgstr "E-mailová adresa:"
-
-#: ../../mod/settings.php:499
-msgid "Your Timezone:"
-msgstr "VaÅ¡e Äasové pásmo:"
-
-#: ../../mod/settings.php:500
-msgid "Default Post Location:"
-msgstr "Výchozí umístění příspěvků:"
-
-#: ../../mod/settings.php:501
-msgid "Use Browser Location:"
-msgstr "Používat umístÄ›ní dle prohlížeÄe:"
-
-#: ../../mod/settings.php:502
-msgid "Display Theme:"
-msgstr "Vybrat grafickou Å¡ablonu:"
-
-#: ../../mod/settings.php:506
-msgid "Security and Privacy Settings"
-msgstr "Nastavení zabezpeÄení a soukromí"
-
-#: ../../mod/settings.php:508
-msgid "Maximum Friend Requests/Day:"
-msgstr "Maximální poÄet žádostí o přátelství za den:"
-
-#: ../../mod/settings.php:508
-msgid "(to prevent spam abuse)"
-msgstr "(Aby se zabránilo spamu)"
-
-#: ../../mod/settings.php:509
-msgid "Default Post Permissions"
-msgstr "Výchozí oprávnění pro příspěvek"
-
-#: ../../mod/settings.php:510
-msgid "(click to open/close)"
-msgstr "(Klikněte pro otevření/zavření)"
-
-#: ../../mod/settings.php:514
-msgid "Allow friends to post to your profile page:"
-msgstr "Povolit přátelům příspěvky na Vaši profilovou stránku:"
-
-#: ../../mod/settings.php:515
-msgid "Automatically expire posts after days:"
-msgstr "Po kolika dnech automaticky expirovat příspěvky:"
-
-#: ../../mod/settings.php:515
-msgid "If empty, posts will not expire. Expired posts will be deleted"
-msgstr ""
-"Pokud je prázdné, příspěvky nebudou nikdy expirovat. Expirované příspěvky "
-"budou vymazány"
-
-#: ../../mod/settings.php:524
-msgid "Notification Settings"
-msgstr "Nastavení notifikací"
-
-#: ../../mod/settings.php:525
-msgid "Send a notification email when:"
-msgstr "Poslat notifikaci e-mailem, když"
-
-#: ../../mod/settings.php:526
-msgid "You receive an introduction"
-msgstr "obdržíte žádost o propojení"
-
-#: ../../mod/settings.php:527
-msgid "Your introductions are confirmed"
-msgstr "Vaše žádosti jsou potvrzeny"
-
-#: ../../mod/settings.php:528
-msgid "Someone writes on your profile wall"
-msgstr "někdo Vám napíše na Vaši profilovou stránku"
-
-#: ../../mod/settings.php:529
-msgid "Someone writes a followup comment"
-msgstr "někdo Vám napíše následný komentář"
-
-#: ../../mod/settings.php:530
-msgid "You receive a private message"
-msgstr "obdržíte soukromou zprávu"
-
-#: ../../mod/settings.php:534
-msgid "Email/Mailbox Setup"
-msgstr "Nastavení e-mailu"
-
-#: ../../mod/settings.php:535
-msgid ""
-"If you wish to communicate with email contacts using this service "
-"(optional), please specify how to connect to your mailbox."
-msgstr ""
-"Pokud chcete komunikovat pomocí této služby s Vašimi kontakty z e-mailu "
-"(volitelné), uveÄte, jak se pÅ™ipojit k Vaší e-mailové schránce."
-
-#: ../../mod/settings.php:536
-msgid "Last successful email check:"
-msgstr "Poslední úspěšná kontrola e-mailu:"
-
-#: ../../mod/settings.php:537
-msgid "Email access is disabled on this site."
-msgstr "Přístup k elektronické poště je na tomto serveru zakázán."
-
-#: ../../mod/settings.php:538
-msgid "IMAP server name:"
-msgstr "jméno IMAP serveru:"
-
-#: ../../mod/settings.php:539
-msgid "IMAP port:"
-msgstr "IMAP port:"
-
-#: ../../mod/settings.php:540
-msgid "Security:"
-msgstr "ZabezpeÄení:"
-
-#: ../../mod/settings.php:540
-msgid "None"
-msgstr "Žádný"
-
-#: ../../mod/settings.php:541
-msgid "Email login name:"
-msgstr "přihlašovací jméno k e-mailu:"
-
-#: ../../mod/settings.php:542
-msgid "Email password:"
-msgstr "heslo k Vašemu e-mailu:"
-
-#: ../../mod/settings.php:543
-msgid "Reply-to address:"
-msgstr "Odpovědět na adresu:"
-
-#: ../../mod/settings.php:544
-msgid "Send public posts to all email contacts:"
-msgstr "Poslat veřejné příspěvky na všechny e-mailové kontakty:"
-
-#: ../../mod/settings.php:549
-msgid "Advanced Page Settings"
-msgstr "PokroÄilé nastavení stránky"
-
-#: ../../mod/manage.php:37
-#, php-format
-msgid "Welcome back %s"
-msgstr "Vítejte zpět %s"
-
-#: ../../mod/manage.php:87
-msgid "Manage Identities and/or Pages"
-msgstr "Správa identit a / nebo stránek"
-
-#: ../../mod/manage.php:90
-msgid ""
-"(Toggle between different identities or community/group pages which share "
-"your account details.)"
-msgstr ""
-"(Přepínání mezi různými identitami nebo komunitními / skupinovými stránkami,"
-" které sdílejí VaÅ¡e detaily úÄtu.)"
-
-#: ../../mod/manage.php:92
-msgid "Select an identity to manage: "
-msgstr "Vyberte identitu pro správu:"
-
-#: ../../mod/network.php:27
-msgid "View Conversations"
-msgstr "Zobrazit konverzace"
-
-#: ../../mod/network.php:29
-msgid "View New Items"
-msgstr "Zobrazit nové položky"
-
-#: ../../mod/network.php:35
-msgid "View Any Items"
-msgstr "Zobrazit všechny položky"
-
-#: ../../mod/network.php:43
-msgid "View Starred Items"
-msgstr "Zobrazit položky oznaÄené hvÄ›zdu"
-
-#: ../../mod/network.php:94
-#, php-format
-msgid "Warning: This group contains %s member from an insecure network."
-msgid_plural ""
-"Warning: This group contains %s members from an insecure network."
-msgstr[0] "UpozornÄ›ní: Tato skupina obsahuje %s Älena z nezabezpeÄené sítÄ›."
-msgstr[1] "UpozornÄ›ní: Tato skupina obsahuje %s Äleny z nezabezpeÄené sítÄ›."
-msgstr[2] "UpozornÄ›ní: Tato skupina obsahuje %s Äleny z nezabezpeÄené sítÄ›."
-
-#: ../../mod/network.php:97
-msgid "Private messages to this group are at risk of public disclosure."
-msgstr "Soukromé zprávy této skupině jsou vystaveny riziku prozrazení."
-
-#: ../../mod/network.php:164
-msgid "No such group"
-msgstr "Žádná taková skupina"
-
-#: ../../mod/network.php:175
-msgid "Group is empty"
-msgstr "Skupina je prázdná"
-
-#: ../../mod/network.php:180
-msgid "Group: "
-msgstr "Skupina:"
-
-#: ../../mod/network.php:190
-msgid "Contact: "
-msgstr "Kontakt:"
-
-#: ../../mod/network.php:192
-msgid "Private messages to this person are at risk of public disclosure."
-msgstr "Soukromé zprávy této osobě jsou vystaveny riziku prozrazení."
-
-#: ../../mod/network.php:197
-msgid "Invalid contact."
-msgstr "Neplatný kontakt."
-
-#: ../../mod/notes.php:74
-msgid "Save"
-msgstr "Uložit"
-
-#: ../../mod/newmember.php:6
-msgid "Welcome to Friendika"
-msgstr "Vítejte na Friendika"
-
-#: ../../mod/newmember.php:8
-msgid "New Member Checklist"
-msgstr "Seznam doporuÄení pro nového Älena"
-
-#: ../../mod/newmember.php:12
-msgid ""
-"We would like to offer some tips and links to help make your experience "
-"enjoyable. Click any item to visit the relevant page."
-msgstr ""
-"Dovolujeme si Vám nabídnout některé tipy a odkazy, abychom Vám zpříjemnili "
-"práci se systémem Friendika. Kliknutím na libovolnou položku navštívit "
-"příslušnou stránku."
-
-#: ../../mod/newmember.php:16
-msgid ""
-"On your <em>Settings</em> page - change your initial password. Also make a "
-"note of your Identity Address. This will be useful in making friends."
-msgstr ""
-"Na stránce <em>Nastavení</em> - změnit výchozí heslo. Poznamenejte si také "
-"adresu své identity. To může být užiteÄné pÅ™i navazování přátelství."
-
-#: ../../mod/newmember.php:18
-msgid ""
-"Review the other settings, particularly the privacy settings. An unpublished"
-" directory listing is like having an unlisted phone number. In general, you "
-"should probably publish your listing - unless all of your friends and "
-"potential friends know exactly how to find you."
-msgstr ""
-"Prohlédněte si další nastavení, a to zejména nastavení soukromí. "
-"NezveÅ™ejnÄ›ní svého úÄtu v adresáři je jako mít nezveÅ™ejnÄ›né telefonní Äíslo."
-" ObecnÄ› platí, že je lepší mít svůj úÄet zveÅ™ejnÄ›ný, leda by vÅ¡ichni vaÅ¡i "
-"potenciální přátelé věděli, jak vás přesně najít."
-
-#: ../../mod/newmember.php:20
-msgid ""
-"Upload a profile photo if you have not done so already. Studies have shown "
-"that people with real photos of themselves are ten times more likely to make"
-" friends than people who do not."
-msgstr ""
-"Nahrajte si svou profilovou fotku, pokud jste tak již neuÄinili. Studie "
-"ukázaly, že lidé se skuteÄnými fotografiemi mají desetkrát ÄastÄ›ji přátele "
-"než lidé, kteří nemají."
-
-#: ../../mod/newmember.php:23
-msgid ""
-"Authorise the Facebook Connector if you currently have a Facebook account "
-"and we will (optionally) import all your Facebook friends and conversations."
-msgstr ""
-"Jestliže máte úÄet na Facebooku, povolte konektor na Facebook a bude možné "
-"(na přání) importovat všechny Vaš přátele na Facebooku a všechny Vaše "
-"konverzace."
-
-#: ../../mod/newmember.php:28
-msgid ""
-"Enter your email access information on your Settings page if you wish to "
-"import and interact with friends or mailing lists from your email INBOX"
-msgstr ""
-"na stránce Nastavení zadejte informace pro přístup k Vaší e-mailové stránce,"
-" pokud si pÅ™ejete importovat a komunikovat s přáteli nebo distribuÄními "
-"skupinami z Vaší e-mailové schránky"
-
-#: ../../mod/newmember.php:30
-msgid ""
-"Edit your <strong>default</strong> profile to your liking. Review the "
-"settings for hiding your list of friends and hiding the profile from unknown"
-" visitors."
-msgstr ""
-"Upravit <strong>výchozí</strong> profil podle vašich představ. Prověřte "
-"nastavení pro skrytí Vašeho seznamu přátel a skrytí profilu před neznámými "
-"návštěvníky."
-
-#: ../../mod/newmember.php:32
-msgid ""
-"Set some public keywords for your default profile which describe your "
-"interests. We may be able to find other people with similar interests and "
-"suggest friendships."
-msgstr ""
-"Nastavte si nÄ›jaká veÅ™ejné klíÄová slova pro výchozí profil, která popisují "
-"vaše zájmy. Friendika Vám může nalézt další lidi s podobnými zájmy a "
-"navrhnout přátelství."
-
-#: ../../mod/newmember.php:34
-msgid ""
-"Your Contacts page is your gateway to managing friendships and connecting "
-"with friends on other networks. Typically you enter their address or site "
-"URL in the <em>Connect</em> dialog."
-msgstr ""
-"Stránka Kontakty je Vaším odrazovým můstkem k řízení přátelství a spojení s "
-"kamarády v jiných sítích. Obvykle zadáte jejich adresu nebo adresu URL do "
-"dialogu <em>Připojit</em>."
-
-#: ../../mod/newmember.php:36
-msgid ""
-"The Directory page lets you find other people in this network or other "
-"federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on "
-"their profile page. Provide your own Identity Address if requested."
-msgstr ""
-"Stránka Adresář Vám pomůže najít další lidi na tomto serveru nebo v jiných "
-"propojených serverech. Prostřednictvím odkazů <em>Připojení</em> nebo "
-"<em>Následovat</em> si prohlédnÄ›te jejich profilovou stránku. UveÄte svou "
-"vlastní adresu identity, je-li požadována."
-
-#: ../../mod/newmember.php:38
-msgid ""
-"Once you have made some friends, organize them into private conversation "
-"groups from the sidebar of your Contacts page and then you can interact with"
-" each group privately on your Network page."
-msgstr ""
-"Jakmile získáte nějaké přátele, uspořádejte si je do soukromých "
-"konverzaÄních skupin na postranním panelu vaší stránky Kontakty a pak můžete"
-" komunikovat s každou touto skupinu soukromě prostřednictvím stránky Síť."
-
-#: ../../mod/newmember.php:40
-msgid ""
-"Our <strong>help</strong> pages may be consulted for detail on other program"
-" features and resources."
-msgstr ""
-"Na stránkách <strong>Nápověda</strong> naleznete nejen další podrobnosti o "
-"všech funkcích Friendika ale také další zdroje informací."
-
-#: ../../mod/attach.php:8
-msgid "Item not available."
-msgstr "Položka není k dispozici."
-
-#: ../../mod/attach.php:20
-msgid "Item was not found."
-msgstr "Položka nebyla nalezena."
-
-#: ../../mod/group.php:27
-msgid "Group created."
-msgstr "Skupina vytvořena."
-
-#: ../../mod/group.php:33
-msgid "Could not create group."
-msgstr "Nelze vytvořit skupinu."
-
-#: ../../mod/group.php:43 ../../mod/group.php:123
-msgid "Group not found."
-msgstr "Skupina nenalezena."
-
-#: ../../mod/group.php:56
-msgid "Group name changed."
-msgstr "Název skupiny byl změněn."
-
-#: ../../mod/group.php:67 ../../mod/profperm.php:19 ../../index.php:265
-msgid "Permission denied"
-msgstr "NedostateÄné oprávnÄ›ní"
-
-#: ../../mod/group.php:82
-msgid "Create a group of contacts/friends."
-msgstr "Vytvořit skupinu kontaktů / přátel."
-
-#: ../../mod/group.php:83 ../../mod/group.php:166
-msgid "Group Name: "
-msgstr "Název skupiny:"
-
-#: ../../mod/group.php:98
-msgid "Group removed."
-msgstr "Skupina odstraněna. "
-
-#: ../../mod/group.php:100
-msgid "Unable to remove group."
-msgstr "Nelze odstranit skupinu."
-
-#: ../../mod/group.php:164 ../../mod/profperm.php:105
-msgid "Click on a contact to add or remove."
-msgstr "Klikněte na kontakt pro přidání nebo odebrání"
-
-#: ../../mod/group.php:165
-msgid "Group Editor"
-msgstr "Editor skupin"
-
-#: ../../mod/group.php:180
-msgid "Members"
-msgstr "Členové"
-
-#: ../../mod/group.php:195
-msgid "All Contacts"
-msgstr "VÅ¡echny kontakty"
-
-#: ../../mod/profperm.php:25 ../../mod/profperm.php:55
-msgid "Invalid profile identifier."
-msgstr "Neplatný identifikátor profilu."
-
-#: ../../mod/profperm.php:101
-msgid "Profile Visibility Editor"
-msgstr "Editor viditelnosti profilu "
-
-#: ../../mod/profperm.php:114
-msgid "Visible To"
-msgstr "Viditelný pro"
-
-#: ../../mod/profperm.php:128
-msgid "All Contacts (with secure profile access)"
-msgstr "VÅ¡echny kontakty (se zabezpeÄeným přístupovým profilem )"
-
-#: ../../mod/viewconnections.php:25 ../../include/text.php:555
-msgid "View Contacts"
-msgstr "Zobrazit kontakty"
-
-#: ../../mod/viewconnections.php:40
-msgid "No contacts."
-msgstr "Žádné kontakty."
-
-#: ../../mod/register.php:53
-msgid "An invitation is required."
-msgstr "Pozvánka je vyžadována."
-
-#: ../../mod/register.php:58
-msgid "Invitation could not be verified."
-msgstr "Pozvánka nemohla být ověřena."
-
-#: ../../mod/register.php:66
-msgid "Invalid OpenID url"
-msgstr "Neplatný odkaz OpenID"
-
-#: ../../mod/register.php:81
-msgid "Please enter the required information."
-msgstr "Zadejte prosím požadované informace."
-
-#: ../../mod/register.php:95
-msgid "Please use a shorter name."
-msgstr "Použijte prosím kratší jméno."
-
-#: ../../mod/register.php:97
-msgid "Name too short."
-msgstr "Jméno je příliš krátké."
-
-#: ../../mod/register.php:112
-msgid "That doesn't appear to be your full (First Last) name."
-msgstr "Nezdá se, že by to bylo vaše celé jméno (křestní jméno a příjmení)."
-
-#: ../../mod/register.php:117
-msgid "Your email domain is not among those allowed on this site."
-msgstr "Váš e-mailová doména není na tomto serveru mezi povolenými."
-
-#: ../../mod/register.php:120
-msgid "Not a valid email address."
-msgstr "Neplatná e-mailová adresa."
-
-#: ../../mod/register.php:130
-msgid "Cannot use that email."
-msgstr "Tento e-mail nelze použít."
-
-#: ../../mod/register.php:136
-msgid ""
-"Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and "
-"must also begin with a letter."
-msgstr ""
-"Vaše \"přezdívka\" může obsahovat pouze \"a-z\", \"0-9\", \"-\", a \"_\", a "
-"musí zaÄínat písmenem."
-
-#: ../../mod/register.php:142 ../../mod/register.php:243
-msgid "Nickname is already registered. Please choose another."
-msgstr "Přezdívka je již registrována. Prosím vyberte jinou."
-
-#: ../../mod/register.php:161
-msgid "SERIOUS ERROR: Generation of security keys failed."
-msgstr "Závažná chyba: Generování bezpeÄnostních klíÄů se nezdaÅ™ilo."
-
-#: ../../mod/register.php:229
-msgid "An error occurred during registration. Please try again."
-msgstr "Došlo k chybě při registraci. Zkuste to prosím znovu."
-
-#: ../../mod/register.php:265
-msgid "An error occurred creating your default profile. Please try again."
-msgstr ""
-"Došlo k chybě při vytváření Vašeho výchozího profilu. Zkuste to prosím "
-"znovu."
-
-#: ../../mod/register.php:367 ../../mod/regmod.php:52
-#, php-format
-msgid "Registration details for %s"
-msgstr "RegistraÄní údaje pro %s"
-
-#: ../../mod/register.php:375
-msgid ""
-"Registration successful. Please check your email for further instructions."
-msgstr ""
-"Registrace úspěšná. Zkontrolujte prosím svůj e-mail pro další instrukce."
-
-#: ../../mod/register.php:379
-msgid "Failed to send email message. Here is the message that failed."
-msgstr ""
-"Nepodařilo se odeslat zprávu na e-mail. Zde je zpráva, která nebyla "
-"odeslána."
-
-#: ../../mod/register.php:384
-msgid "Your registration can not be processed."
-msgstr "Vaši registraci nelze zpracovat."
-
-#: ../../mod/register.php:421
-#, php-format
-msgid "Registration request at %s"
-msgstr "Žádost o registraci na %s"
-
-#: ../../mod/register.php:430
-msgid "Your registration is pending approval by the site owner."
-msgstr "VaÅ¡e registrace Äeká na schválení vlastníkem serveru."
-
-#: ../../mod/register.php:479
-msgid ""
-"You may (optionally) fill in this form via OpenID by supplying your OpenID "
-"and clicking 'Register'."
-msgstr ""
-"Tento formulář můžete (volitelně) vyplnit s pomocí OpenID tím, že vyplníte "
-"své OpenID a kliknutete na tlaÄítko 'Zaregistrovat'."
-
-#: ../../mod/register.php:480
-msgid ""
-"If you are not familiar with OpenID, please leave that field blank and fill "
-"in the rest of the items."
-msgstr ""
-"Pokud nepoužíváte OpenID, nechte prosím toto pole prázdné a vyplňte zbylé "
-"položky."
-
-#: ../../mod/register.php:481
-msgid "Your OpenID (optional): "
-msgstr "Vaše OpenID (nepovinné):"
-
-#: ../../mod/register.php:495
-msgid "Include your profile in member directory?"
-msgstr "Uvést Váš profil v adresáři Älenů?"
-
-#: ../../mod/register.php:511
-msgid "Membership on this site is by invitation only."
-msgstr "Členství na tomto webu je pouze na pozvání."
-
-#: ../../mod/register.php:512
-msgid "Your invitation ID: "
-msgstr "Vaše pozvání ID:"
-
-#: ../../mod/register.php:515 ../../mod/admin.php:299
-msgid "Registration"
-msgstr "Registrace"
-
-#: ../../mod/register.php:523
-msgid "Your Full Name (e.g. Joe Smith): "
-msgstr "Vaše celé jméno (např. Jan Novák):"
-
-#: ../../mod/register.php:524
-msgid "Your Email Address: "
-msgstr "Vaše e-mailová adresa:"
-
-#: ../../mod/register.php:525
-msgid ""
-"Choose a profile nickname. This must begin with a text character. Your "
-"profile address on this site will then be "
-"'<strong>nickname@$sitename</strong>'."
-msgstr ""
-"Vyberte pÅ™ezdívku k profilu. Ta musí zaÄít s textovým znakem. VaÅ¡e profilová"
-" adresa na tomto webu pak bude \"<strong>přezdívka@$sitename</strong>\"."
-
-#: ../../mod/register.php:526
-msgid "Choose a nickname: "
-msgstr "Vyberte přezdívku:"
-
-#: ../../mod/register.php:529 ../../include/nav.php:59 ../../boot.php:637
-msgid "Register"
-msgstr "Registrovat"
-
-#: ../../mod/like.php:110 ../../addon/facebook/facebook.php:954
-#: ../../include/diaspora.php:446 ../../include/conversation.php:26
-#: ../../include/conversation.php:35
-msgid "status"
-msgstr "Stav"
-
-#: ../../mod/like.php:127 ../../addon/facebook/facebook.php:958
-#: ../../include/diaspora.php:463 ../../include/conversation.php:43
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s má rád %2$s' na %3$s"
-
-#: ../../mod/like.php:129 ../../include/diaspora.php:465
-#: ../../include/conversation.php:46
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr "%1$s nemá rád %2$s na %3$s"
-
-#: ../../mod/friendika.php:42
-msgid "This is Friendika version"
-msgstr "Toto je Friendika verze"
-
-#: ../../mod/friendika.php:43
-msgid "running at web location"
-msgstr "běžící na webu"
-
-#: ../../mod/friendika.php:45
-msgid ""
-"Shared content within the Friendika network is provided under the <a "
-"href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons "
-"Attribution 3.0 license</a>"
-msgstr ""
-"Sdílený obsah v síti Friendika je poskytována pod <a "
-"href=\"http://creativecommons.org/licenses/by/3.0/cz/\">licencí Creative "
-"Commons Attribution 3.0</a>"
-
-#: ../../mod/friendika.php:47
-msgid ""
-"Please visit <a "
-"href=\"http://project.friendika.com\">Project.Friendika.com</a> to learn "
-"more about the Friendika project."
-msgstr ""
-"Pokud se chcete dozvědět více o projektu Friendika, navštivte, prosím, <a "
-"href=\"http://project.friendika.com\">Project.Friendika.com</a>"
-
-#: ../../mod/friendika.php:49
-msgid "Bug reports and issues: please visit"
-msgstr "Pro hlášení chyb a námětů na změny navštivte:"
-
-#: ../../mod/friendika.php:50
-msgid ""
-"Suggestions, praise, donations, etc. - please email \"Info\" at Friendika - "
-"dot com"
-msgstr ""
-"Návrhy, chválu, dary, atd. - prosím pošlete na e-mail \"Info\" na Friendika "
-"teÄka com"
-
-#: ../../mod/friendika.php:55
-msgid "Installed plugins/addons/apps"
-msgstr "Nainstalované doplňky/aplikace"
-
-#: ../../mod/friendika.php:63
-msgid "No installed plugins/addons/apps"
-msgstr "Nejsou žádné nainstalované doplňky/aplikace"
-
-#: ../../mod/regmod.php:61
-msgid "Account approved."
-msgstr "ÚÄet schválen."
-
-#: ../../mod/regmod.php:93
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registrace zrušena pro %s"
-
-#: ../../mod/regmod.php:105
-msgid "Please login."
-msgstr "Přihlaste se, prosím."
-
-#: ../../mod/item.php:81
-msgid "Unable to locate original post."
-msgstr "Nelze nalézt původní příspěvek."
-
-#: ../../mod/item.php:196
-msgid "Empty post discarded."
-msgstr "Prázdný příspěvek odstraněn."
-
-#: ../../mod/item.php:296 ../../mod/message.php:93
-#: ../../mod/wall_upload.php:81 ../../mod/wall_upload.php:90
-#: ../../mod/wall_upload.php:97
-msgid "Wall Photos"
-msgstr "Fotografie na zdi"
-
-#: ../../mod/item.php:623 ../../mod/item.php:668 ../../mod/item.php:691
-#: ../../mod/item.php:734 ../../mod/dfrn_notify.php:293
-#: ../../mod/dfrn_notify.php:503 ../../mod/dfrn_notify.php:548
-#: ../../mod/dfrn_notify.php:634 ../../mod/dfrn_notify.php:677
-msgid "noreply"
-msgstr "bez odpovědi"
-
-#: ../../mod/item.php:667 ../../mod/item.php:733 ../../mod/dfrn_notify.php:676
-msgid "Administrator@"
-msgstr "Administrator@"
-
-#: ../../mod/item.php:670 ../../mod/dfrn_notify.php:550
-#: ../../mod/dfrn_notify.php:679
-#, php-format
-msgid "%s commented on an item at %s"
-msgstr "%s okomentoval položku v %s"
-
-#: ../../mod/item.php:736
-#, php-format
-msgid "%s posted to your profile wall at %s"
-msgstr "%s pÅ™idal příspÄ›vek na vaší profilovou zeÄ v %s"
-
-#: ../../mod/item.php:765
-msgid "System error. Post not saved."
-msgstr "Chyba systému. Příspěvek nebyl uložen."
-
-#: ../../mod/item.php:784
-#, php-format
-msgid ""
-"This message was sent to you by %s, a member of the Friendika social "
-"network."
-msgstr "Tuto zprávu Vám zaslal %s, Älen sociální sítÄ› Friendika."
-
-#: ../../mod/item.php:786
-#, php-format
-msgid "You may visit them online at %s"
-msgstr "Můžete je navštívit online na adrese %s"
-
-#: ../../mod/item.php:787
-msgid ""
-"Please contact the sender by replying to this post if you do not wish to "
-"receive these messages."
-msgstr ""
-"Pokud nechcete dostávat tyto zprávy, kontaktujte prosím odesilatele odpovědí"
-" na tento záznam."
-
-#: ../../mod/item.php:789
-#, php-format
-msgid "%s posted an update."
-msgstr "%s poslal aktualizaci."
-
-#: ../../mod/profile_photo.php:28
-msgid "Image uploaded but image cropping failed."
-msgstr "Obrázek byl odeslán, ale jeho oříznutí se nesdařilo."
-
-#: ../../mod/profile_photo.php:61 ../../mod/profile_photo.php:68
-#: ../../mod/profile_photo.php:75 ../../mod/profile_photo.php:248
-#, php-format
-msgid "Image size reduction [%s] failed."
-msgstr "Nepodařilo se snížit velikost obrázku [%s]."
-
-#: ../../mod/profile_photo.php:95
-msgid "Unable to process image"
-msgstr "Obrázek nelze zpracovat "
-
-#: ../../mod/profile_photo.php:109 ../../mod/wall_upload.php:56
-#, php-format
-msgid "Image exceeds size limit of %d"
-msgstr "Obrázek pÅ™ekroÄil limit velikosti %d"
-
-#: ../../mod/profile_photo.php:193
-msgid "Upload File:"
-msgstr "Nahrát soubor:"
-
-#: ../../mod/profile_photo.php:194
-msgid "Upload Profile Photo"
-msgstr "Nahrát profilovou fotografii"
-
-#: ../../mod/profile_photo.php:195
-msgid "Upload"
-msgstr "Nahrát"
-
-#: ../../mod/profile_photo.php:196
-msgid "skip this step"
-msgstr "pÅ™eskoÄit tento krok "
-
-#: ../../mod/profile_photo.php:196
-msgid "select a photo from your photo albums"
-msgstr "Vybrat fotografii z Vašich fotoalb"
-
-#: ../../mod/profile_photo.php:209
-msgid "Crop Image"
-msgstr "Oříznout obrázek"
-
-#: ../../mod/profile_photo.php:210
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Prosím, ořízněte tento obrázek pro optimální zobrazení."
-
-#: ../../mod/profile_photo.php:211
-msgid "Done Editing"
-msgstr "Editace dokonÄena"
-
-#: ../../mod/profile_photo.php:239
-msgid "Image uploaded successfully."
-msgstr "Obrázek byl úspěšně nahrán."
-
-#: ../../mod/hcard.php:11 ../../mod/profile.php:11 ../../boot.php:792
-msgid "No profile"
-msgstr "Žádný profil"
-
-#: ../../mod/removeme.php:42 ../../mod/removeme.php:45
-msgid "Remove My Account"
-msgstr "Odstranit můj úÄet"
-
-#: ../../mod/removeme.php:43
-msgid ""
-"This will completely remove your account. Once this has been done it is not "
-"recoverable."
-msgstr ""
-"Tímto bude kompletnÄ› odstranÄ›n váš úÄet. Jakmile bude úÄet odstranÄ›n, nebude"
-" už možné ho obnovit."
-
-#: ../../mod/removeme.php:44
-msgid "Please enter your password for verification:"
-msgstr "Prosím, zadejte své heslo pro ověření:"
-
-#: ../../mod/message.php:18
-msgid "No recipient selected."
-msgstr "Nevybrán příjemce."
-
-#: ../../mod/message.php:23
-msgid "[no subject]"
-msgstr "[bez předmětu]"
-
-#: ../../mod/message.php:34
-msgid "Unable to locate contact information."
-msgstr "Nepodařilo se najít kontaktní informace."
-
-#: ../../mod/message.php:102
-msgid "Message sent."
-msgstr "Zpráva odeslána."
-
-#: ../../mod/message.php:105
-msgid "Message could not be sent."
-msgstr "Zprávu se nepodařilo odeslat."
-
-#: ../../mod/message.php:125 ../../include/nav.php:102
-msgid "Messages"
-msgstr "Zprávy"
-
-#: ../../mod/message.php:126
-msgid "Inbox"
-msgstr "DoruÄená poÅ¡ta"
-
-#: ../../mod/message.php:127
-msgid "Outbox"
-msgstr "Odeslaná pošta"
-
-#: ../../mod/message.php:128
-msgid "New Message"
-msgstr "Nová zpráva"
-
-#: ../../mod/message.php:142
-msgid "Message deleted."
-msgstr "Zpráva odstraněna."
-
-#: ../../mod/message.php:158
-msgid "Conversation removed."
-msgstr "Konverzace odstraněna."
-
-#: ../../mod/message.php:172 ../../include/conversation.php:699
-msgid "Please enter a link URL:"
-msgstr "Zadejte prosím URL odkaz:"
-
-#: ../../mod/message.php:180
-msgid "Send Private Message"
-msgstr "Odeslat soukromou zprávu"
-
-#: ../../mod/message.php:181 ../../mod/message.php:315
-msgid "To:"
-msgstr "Adresát:"
-
-#: ../../mod/message.php:182 ../../mod/message.php:316
-msgid "Subject:"
-msgstr "Předmět:"
-
-#: ../../mod/message.php:185 ../../mod/message.php:319
-#: ../../mod/invite.php:101
-msgid "Your message:"
-msgstr "Vaše zpráva:"
-
-#: ../../mod/message.php:224
-msgid "No messages."
-msgstr "Žádné zprávy."
-
-#: ../../mod/message.php:237
-msgid "Delete conversation"
-msgstr "Odstranit konverzaci"
-
-#: ../../mod/message.php:240
-msgid "D, d M Y - g:i A"
-msgstr "D M R - g:i A"
-
-#: ../../mod/message.php:267
-msgid "Message not available."
-msgstr "Zpráva není k dispozici."
-
-#: ../../mod/message.php:304
-msgid "Delete message"
-msgstr "Smazat zprávu"
-
-#: ../../mod/message.php:314
-msgid "Send Reply"
-msgstr "Poslat odpovÄ›Ä"
-
-#: ../../mod/admin.php:66 ../../mod/admin.php:297
-msgid "Site"
-msgstr "Web"
-
-#: ../../mod/admin.php:67 ../../mod/admin.php:460 ../../mod/admin.php:472
-msgid "Users"
-msgstr "Uživatelé"
-
-#: ../../mod/admin.php:68 ../../mod/admin.php:549 ../../mod/admin.php:586
-msgid "Plugins"
-msgstr "Pluginy"
-
-#: ../../mod/admin.php:69
-msgid "Update"
-msgstr "Aktualizace"
-
-#: ../../mod/admin.php:83 ../../mod/admin.php:651
-msgid "Logs"
-msgstr "Logy"
-
-#: ../../mod/admin.php:88
-msgid "User registrations waiting for confirmation"
-msgstr "Registrace uživatele Äeká na potvrzení"
-
-#: ../../mod/admin.php:118 ../../mod/admin.php:502 ../../mod/display.php:25
-#: ../../mod/display.php:112 ../../include/items.php:1842
-msgid "Item not found."
-msgstr "Položka nenalezena."
-
-#: ../../mod/admin.php:151 ../../mod/admin.php:296 ../../mod/admin.php:459
-#: ../../mod/admin.php:548 ../../mod/admin.php:585 ../../mod/admin.php:650
-msgid "Administration"
-msgstr "Administrace"
-
-#: ../../mod/admin.php:152
-msgid "Summary"
-msgstr "Shrnutí"
-
-#: ../../mod/admin.php:153
-msgid "Registered users"
-msgstr "Registrovaní uživatelé"
-
-#: ../../mod/admin.php:155
-msgid "Pending registrations"
-msgstr "Čekající registrace"
-
-#: ../../mod/admin.php:156
-msgid "Version"
-msgstr "Verze"
-
-#: ../../mod/admin.php:158
-msgid "Active plugins"
-msgstr "Aktivní pluginy"
-
-#: ../../mod/admin.php:245
-msgid "Site settings updated."
-msgstr "Nastavení webu aktualizováno."
-
-#: ../../mod/admin.php:289
-msgid "Closed"
-msgstr "Uzavřít"
-
-#: ../../mod/admin.php:290
-msgid "Requires approval"
-msgstr "Vyžaduje schválení"
-
-#: ../../mod/admin.php:291
-msgid "Open"
-msgstr "Otevřená"
-
-#: ../../mod/admin.php:300
-msgid "File upload"
-msgstr "Nahrání souborů"
-
-#: ../../mod/admin.php:301
-msgid "Policies"
-msgstr "Politiky"
-
-#: ../../mod/admin.php:302
-msgid "Advanced"
-msgstr "PokroÄilé"
-
-#: ../../mod/admin.php:306 ../../addon/statusnet/statusnet.php:459
-msgid "Site name"
-msgstr "Název webu"
-
-#: ../../mod/admin.php:307
-msgid "Banner/Logo"
-msgstr "Banner/logo"
-
-#: ../../mod/admin.php:308
-msgid "System language"
-msgstr "Systémový jazyk"
-
-#: ../../mod/admin.php:309
-msgid "System theme"
-msgstr "Grafická šablona systému "
-
-#: ../../mod/admin.php:311
-msgid "Maximum image size"
-msgstr "Maximální velikost obrazu"
-
-#: ../../mod/admin.php:313
-msgid "Register policy"
-msgstr "Politika registrace"
-
-#: ../../mod/admin.php:314
-msgid "Register text"
-msgstr "Registrace textu"
-
-#: ../../mod/admin.php:315
-msgid "Allowed friend domains"
-msgstr "Povolené domény přátel"
-
-#: ../../mod/admin.php:316
-msgid "Allowed email domains"
-msgstr "Povolené e-mailové domény"
-
-#: ../../mod/admin.php:317
-msgid "Block public"
-msgstr "Blokovat veřejnost"
-
-#: ../../mod/admin.php:318
-msgid "Force publish"
-msgstr "Publikovat"
-
-#: ../../mod/admin.php:319
-msgid "Global directory update URL"
-msgstr "aktualizace URL adresy Globálního adresáře "
-
-#: ../../mod/admin.php:321
-msgid "Block multiple registrations"
-msgstr "Blokovat více registrací"
-
-#: ../../mod/admin.php:322
-msgid "OpenID support"
-msgstr "podpora OpenID"
-
-#: ../../mod/admin.php:323
-msgid "Gravatar support"
-msgstr "podpora Gravatar"
-
-#: ../../mod/admin.php:324
-msgid "Fullname check"
-msgstr "kontrola úplného jména"
-
-#: ../../mod/admin.php:325
-msgid "UTF-8 Regular expressions"
-msgstr "UTF-8 Regulární výrazy"
-
-#: ../../mod/admin.php:326
-msgid "Show Community Page"
-msgstr "Zobrazit stránku komunity"
-
-#: ../../mod/admin.php:327
-msgid "Enable OStatus support"
-msgstr "Zapnout podporu OStatus"
-
-#: ../../mod/admin.php:328
-msgid "Only allow Friendika contacts"
-msgstr "Povolit pouze Friendika kontakty "
-
-#: ../../mod/admin.php:329
-msgid "Verify SSL"
-msgstr "Ověřit SSL"
-
-#: ../../mod/admin.php:330
-msgid "Proxy user"
-msgstr "Proxy uživatel"
-
-#: ../../mod/admin.php:331
-msgid "Proxy URL"
-msgstr "Proxy URL adresa"
-
-#: ../../mod/admin.php:332
-msgid "Network timeout"
-msgstr "Äas síťového spojení vyprÅ¡elo (timeout)"
-
-#: ../../mod/admin.php:353
-#, php-format
-msgid "%s user blocked"
-msgid_plural "%s users blocked/unblocked"
-msgstr[0] "%s uživatel zablokován"
-msgstr[1] "%s uživatelů zablokováno / odblokováno"
-msgstr[2] "%s uživatelů zablokováno / odblokováno"
-
-#: ../../mod/admin.php:360
-#, php-format
-msgid "%s user deleted"
-msgid_plural "%s users deleted"
-msgstr[0] "%s uživatel smazán"
-msgstr[1] "%s uživatelů smazáno"
-msgstr[2] "%s uživatelů smazáno"
-
-#: ../../mod/admin.php:394
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Uživatel '%s' smazán"
-
-#: ../../mod/admin.php:401
-#, php-format
-msgid "User '%s' unblocked"
-msgstr "Uživatel '%s' odblokován"
-
-#: ../../mod/admin.php:401
-#, php-format
-msgid "User '%s' blocked"
-msgstr "Uživatel '%s' blokován"
-
-#: ../../mod/admin.php:462
-msgid "select all"
-msgstr "Vybrat vše"
-
-#: ../../mod/admin.php:463
-msgid "User registrations waiting for confirm"
-msgstr "Registrace uživatele Äeká na potvrzení"
-
-#: ../../mod/admin.php:464
-msgid "Request date"
-msgstr "Datum žádosti"
-
-#: ../../mod/admin.php:464 ../../mod/admin.php:473
-msgid "Email"
-msgstr "E-mail"
-
-#: ../../mod/admin.php:465
-msgid "No registrations."
-msgstr "Žádné registrace."
-
-#: ../../mod/admin.php:467
-msgid "Deny"
-msgstr "Odmítnout"
-
-#: ../../mod/admin.php:469
-msgid "Block"
-msgstr "Blokovat"
-
-#: ../../mod/admin.php:470
-msgid "Unblock"
-msgstr "Odblokovat"
-
-#: ../../mod/admin.php:473
-msgid "Register date"
-msgstr "Datum registrace"
-
-#: ../../mod/admin.php:473
-msgid "Last login"
-msgstr "Datum posledního přihlášení"
-
-#: ../../mod/admin.php:473
-msgid "Last item"
-msgstr "Poslední položka"
-
-#: ../../mod/admin.php:473
-msgid "Account"
-msgstr "ÚÄet"
-
-#: ../../mod/admin.php:475
-msgid ""
-"Selected users will be deleted!\\n\\nEverything these users had posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr ""
-"Vybraní uživatelé budou smazáni!\\n\\n Vše, co tito uživatelé na těchto "
-"stránkách vytvoÅ™ili, bude trvale odstranÄ›no!\\n\\n Opravdu pokraÄovat?"
-
-#: ../../mod/admin.php:476
-msgid ""
-"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
-"site will be permanently deleted!\\n\\nAre you sure?"
-msgstr ""
-"Uživatel {0} bude smazán!\\n\\n Vše, co tento uživatel na těchto stránkách "
-"vytvoÅ™il, bude trvale odstranÄ›no!\\n\\n Opravdu pokraÄovat?"
-
-#: ../../mod/admin.php:512
-#, php-format
-msgid "Plugin %s disabled."
-msgstr "Plugin %s zakázán."
-
-#: ../../mod/admin.php:516
-#, php-format
-msgid "Plugin %s enabled."
-msgstr "Plugin %s povolen."
-
-#: ../../mod/admin.php:526
-msgid "Disable"
-msgstr "Zakázat"
-
-#: ../../mod/admin.php:528
-msgid "Enable"
-msgstr "Povolit"
-
-#: ../../mod/admin.php:550
-msgid "Toggle"
-msgstr "Přepnout"
-
-#: ../../mod/admin.php:551 ../../include/nav.php:108
-msgid "Settings"
-msgstr "Nastavení"
-
-#: ../../mod/admin.php:613
-msgid "Log settings updated."
-msgstr "Nastavení protokolu aktualizováno."
-
-#: ../../mod/admin.php:653
-msgid "Clear"
-msgstr "VyÄistit"
-
-#: ../../mod/admin.php:659
-msgid "Debugging"
-msgstr "Ladění"
-
-#: ../../mod/admin.php:660
-msgid "Log file"
-msgstr "Soubor s logem"
-
-#: ../../mod/admin.php:660
-msgid "Must be writable by web server. Relative to your Friendika index.php."
-msgstr ""
-"Webový server musí mít práva zápisu . Relativní k index.php Friendika."
-
-#: ../../mod/admin.php:661
-msgid "Log level"
-msgstr "Úroveň auditu"
-
-#: ../../mod/admin.php:702
-msgid "Close"
-msgstr "Uzavřená"
-
-#: ../../mod/admin.php:708
-msgid "FTP Host"
-msgstr "Hostitel FTP"
-
-#: ../../mod/admin.php:709
-msgid "FTP Path"
-msgstr "Cesta FTP"
-
-#: ../../mod/admin.php:710
-msgid "FTP User"
-msgstr "FTP uživatel"
-
-#: ../../mod/admin.php:711
-msgid "FTP Password"
-msgstr "FTP heslo"
-
-#: ../../mod/profile.php:102 ../../mod/display.php:63
-msgid "Access to this profile has been restricted."
-msgstr "Přístup na tento profil byl omezen."
-
-#: ../../mod/profile.php:133
-msgid "Tips for New Members"
-msgstr "Tipy pro nové Äleny"
-
-#: ../../mod/openid.php:62 ../../mod/openid.php:122 ../../include/auth.php:120
-#: ../../include/auth.php:145 ../../include/auth.php:198
-msgid "Login failed."
-msgstr "Přihlášení se nezdařilo."
-
-#: ../../mod/openid.php:78 ../../include/auth.php:214
-msgid "Welcome "
-msgstr "Vítejte "
-
-#: ../../mod/openid.php:79 ../../include/auth.php:215
-msgid "Please upload a profile photo."
-msgstr "Prosím nahrejte profilovou fotografii"
-
-#: ../../mod/openid.php:82 ../../include/auth.php:218
-msgid "Welcome back "
-msgstr "Vítejte zpět "
-
-#: ../../mod/follow.php:39
-msgid ""
-"This site is not configured to allow communications with other networks."
-msgstr ""
-"Tento web není nakonfigurován tak, aby umožňoval komunikaci s ostatními "
-"sítěmi."
-
-#: ../../mod/follow.php:40 ../../mod/follow.php:50
-msgid "No compatible communication protocols or feeds were discovered."
-msgstr "Nenalezen žádný kompatibilní komunikaÄní protokol nebo kanál."
-
-#: ../../mod/follow.php:48
-msgid "The profile address specified does not provide adequate information."
-msgstr "Uvedená adresa profilu neposkytuje dostateÄné informace."
-
-#: ../../mod/follow.php:52
-msgid "An author or name was not found."
-msgstr "Autor nebo jméno nenalezeno"
-
-#: ../../mod/follow.php:54
-msgid "No browser URL could be matched to this address."
-msgstr "Této adrese neodpovídá žádné URL prohlížeÄe."
-
-#: ../../mod/follow.php:61
-msgid ""
-"The profile address specified belongs to a network which has been disabled "
-"on this site."
-msgstr ""
-"Zadaná adresa profilu patří do sítě, která byla na tomto serveru zakázána."
-
-#: ../../mod/follow.php:66
-msgid ""
-"Limited profile. This person will be unable to receive direct/personal "
-"notifications from you."
-msgstr ""
-"Omezený profil. Tato osoba nebude schopna od Vás přijímat přímé / osobní "
-"sdělení."
-
-#: ../../mod/follow.php:122
-msgid "Unable to retrieve contact information."
-msgstr "Nepodařilo se získat kontaktní informace."
-
-#: ../../mod/follow.php:168
-msgid "following"
-msgstr "následující"
-
-#: ../../mod/display.php:105
-msgid "Item has been removed."
-msgstr "Položka byla odstraněna."
-
-#: ../../mod/dfrn_notify.php:353
-msgid "New mail received at "
-msgstr "Přišel nový e-mail v"
-
-#: ../../mod/apps.php:6
-msgid "Applications"
-msgstr "Aplikace"
-
-#: ../../mod/apps.php:11
-msgid "No installed applications."
-msgstr "Žádné nainstalované aplikace."
-
-#: ../../mod/search.php:26 ../../include/text.php:610 ../../include/nav.php:69
-msgid "Search"
-msgstr "Vyhledávání"
-
-#: ../../mod/profiles.php:21 ../../mod/profiles.php:236
-#: ../../mod/profiles.php:341 ../../mod/dfrn_confirm.php:62
-msgid "Profile not found."
-msgstr "Profil nenalezen"
-
-#: ../../mod/profiles.php:28
-msgid "Profile Name is required."
-msgstr "Jméno profilu je povinné."
-
-#: ../../mod/profiles.php:198
-msgid "Profile updated."
-msgstr "Profil aktualizován."
-
-#: ../../mod/profiles.php:253
-msgid "Profile deleted."
-msgstr "Profil smazán."
-
-#: ../../mod/profiles.php:269 ../../mod/profiles.php:300
-msgid "Profile-"
-msgstr "Profil-"
-
-#: ../../mod/profiles.php:288 ../../mod/profiles.php:327
-msgid "New profile created."
-msgstr "Nový profil vytvořen."
-
-#: ../../mod/profiles.php:306
-msgid "Profile unavailable to clone."
-msgstr "Profil není možné naklonovat."
-
-#: ../../mod/profiles.php:353
-msgid "Hide your contact/friend list from viewers of this profile?"
-msgstr ""
-"Skrýt u tohoto profilu vaše kontakty / seznam přátel před před dalšími "
-"uživateli zobrazující si tento profil?"
-
-#: ../../mod/profiles.php:371
-msgid "Edit Profile Details"
-msgstr "Upravit podrobnosti profilu "
-
-#: ../../mod/profiles.php:373
-msgid "View this profile"
-msgstr "Zobrazit tento profil"
-
-#: ../../mod/profiles.php:374
-msgid "Create a new profile using these settings"
-msgstr "Vytvořit nový profil pomocí tohoto nastavení"
-
-#: ../../mod/profiles.php:375
-msgid "Clone this profile"
-msgstr "Klonovat tento profil"
-
-#: ../../mod/profiles.php:376
-msgid "Delete this profile"
-msgstr "Smazat tento profil"
-
-#: ../../mod/profiles.php:377
-msgid "Profile Name:"
-msgstr "Jméno profilu:"
-
-#: ../../mod/profiles.php:378
-msgid "Your Full Name:"
-msgstr "Vaše celé jméno:"
-
-#: ../../mod/profiles.php:379
-msgid "Title/Description:"
-msgstr "Název / Popis:"
-
-#: ../../mod/profiles.php:380
-msgid "Your Gender:"
-msgstr "Vaše pohlaví:"
-
-#: ../../mod/profiles.php:381
-#, php-format
-msgid "Birthday (%s):"
-msgstr "Narozeniny uživatele (%s):"
-
-#: ../../mod/profiles.php:382
-msgid "Street Address:"
-msgstr "Ulice:"
-
-#: ../../mod/profiles.php:383
-msgid "Locality/City:"
-msgstr "Město:"
-
-#: ../../mod/profiles.php:384
-msgid "Postal/Zip Code:"
-msgstr "PSČ:"
-
-#: ../../mod/profiles.php:385
-msgid "Country:"
-msgstr "ZemÄ›:"
-
-#: ../../mod/profiles.php:386
-msgid "Region/State:"
-msgstr "Region / stát:"
-
-#: ../../mod/profiles.php:387
-msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
-msgstr "<span class=\"heart\">&hearts;</span> Rodinný stav:"
-
-#: ../../mod/profiles.php:388
-msgid "Who: (if applicable)"
-msgstr "Kdo: (pokud je možné)"
-
-#: ../../mod/profiles.php:389
-msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
-msgstr "Příklady: jan123, Jan Novák, jan@seznam.cz"
-
-#: ../../mod/profiles.php:390 ../../include/profile_advanced.php:90
-msgid "Sexual Preference:"
-msgstr "Sexuální preference:"
-
-#: ../../mod/profiles.php:391
-msgid "Homepage URL:"
-msgstr "Odkaz na domovskou stránku:"
-
-#: ../../mod/profiles.php:392 ../../include/profile_advanced.php:115
-msgid "Political Views:"
-msgstr "Politické pÅ™esvÄ›dÄení:"
-
-#: ../../mod/profiles.php:393
-msgid "Religious Views:"
-msgstr "Náboženské pÅ™esvÄ›dÄení:"
-
-#: ../../mod/profiles.php:394
-msgid "Public Keywords:"
-msgstr "VeÅ™ejná klíÄová slova:"
-
-#: ../../mod/profiles.php:395
-msgid "Private Keywords:"
-msgstr "Soukromá klíÄová slova:"
-
-#: ../../mod/profiles.php:396
-msgid "Example: fishing photography software"
-msgstr "Příklad: fishing photography software"
-
-#: ../../mod/profiles.php:397
-msgid "(Used for suggesting potential friends, can be seen by others)"
-msgstr ""
-"(Používá se pro doporuÄování potenciálních přátel, může být vidÄ›no "
-"ostatními)"
-
-#: ../../mod/profiles.php:398
-msgid "(Used for searching profiles, never shown to others)"
-msgstr "(Používá se pro vyhledávání profilů, není nikdy zobrazeno ostatním)"
-
-#: ../../mod/profiles.php:399
-msgid "Tell us about yourself..."
-msgstr "Řekněte nám něco o sobě ..."
-
-#: ../../mod/profiles.php:400
-msgid "Hobbies/Interests"
-msgstr "KoníÄky/zájmy"
-
-#: ../../mod/profiles.php:401
-msgid "Contact information and Social Networks"
-msgstr "Kontaktní informace a sociální sítě"
-
-#: ../../mod/profiles.php:402
-msgid "Musical interests"
-msgstr "Hudební vkus"
-
-#: ../../mod/profiles.php:403
-msgid "Books, literature"
-msgstr "Knihy, literatura"
-
-#: ../../mod/profiles.php:404
-msgid "Television"
-msgstr "Televize"
-
-#: ../../mod/profiles.php:405
-msgid "Film/dance/culture/entertainment"
-msgstr "Film/tanec/kultura/zábava"
-
-#: ../../mod/profiles.php:406
-msgid "Love/romance"
-msgstr "Láska/romantika"
-
-#: ../../mod/profiles.php:407
-msgid "Work/employment"
-msgstr "Práce/zaměstnání"
-
-#: ../../mod/profiles.php:408
-msgid "School/education"
-msgstr "Škola/vzdělání"
-
-#: ../../mod/profiles.php:413
-msgid ""
-"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
-"be visible to anybody using the internet."
-msgstr ""
-"Toto je váš <strong>veřejný</strong> profil.<br />Ten <strong>může</strong> "
-"být viditelný kýmkoliv na internetu."
-
-#: ../../mod/profiles.php:423 ../../mod/directory.php:112
-msgid "Age: "
-msgstr "Věk: "
-
-#: ../../mod/profiles.php:458 ../../include/nav.php:109
-msgid "Profiles"
-msgstr "Profily"
-
-#: ../../mod/profiles.php:459
-msgid "Change profile photo"
-msgstr "Změnit profilovou fotografii"
-
-#: ../../mod/profiles.php:460
-msgid "Create New Profile"
-msgstr "Vytvořit nový profil"
-
-#: ../../mod/profiles.php:470
-msgid "Profile Image"
-msgstr "Profilový obrázek"
-
-#: ../../mod/profiles.php:472
-msgid "visible to everybody"
-msgstr "viditelné pro všechny"
-
-#: ../../mod/profiles.php:473
-msgid "Edit visibility"
-msgstr "Upravit viditelnost"
-
-#: ../../mod/directory.php:40
-msgid "Global Directory"
-msgstr "Globální adresář"
-
-#: ../../mod/directory.php:46
-msgid "Normal site view"
-msgstr "Normální zobrazení stránky"
-
-#: ../../mod/directory.php:48
-msgid "View all site entries"
-msgstr "Zobrazit všechny položky stránky"
-
-#: ../../mod/directory.php:56
-msgid "Site Directory"
-msgstr "Adresář serveru"
-
-#: ../../mod/directory.php:115
-msgid "Gender: "
-msgstr "Pohlaví: "
-
-#: ../../mod/directory.php:141
-msgid "No entries (some entries may be hidden)."
-msgstr "Žádné záznamy (některé položky mohou být skryty)."
-
-#: ../../mod/invite.php:35
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s : není platná e-mailová adresa."
-
-#: ../../mod/invite.php:59
-#, php-format
-msgid "Please join my network on %s"
-msgstr "Prosím, připojte se do mé sítě na %s"
-
-#: ../../mod/invite.php:69
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s : DoruÄení zprávy se nezdaÅ™ilo."
-
-#: ../../mod/invite.php:73
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d zpráva odeslána."
-msgstr[1] "%d zprávy odeslány."
-msgstr[2] "%d zprávy odeslány."
-
-#: ../../mod/invite.php:92
-msgid "You have no more invitations available"
-msgstr "Nemáte k dispozici žádné další pozvánky"
-
-#: ../../mod/invite.php:99
-msgid "Send invitations"
-msgstr "Poslat pozvánky"
-
-#: ../../mod/invite.php:100
-msgid "Enter email addresses, one per line:"
-msgstr "Zadejte e-mailové adresy, jednu na řádek:"
-
-#: ../../mod/invite.php:102
-#, php-format
-msgid "Please join my social network on %s"
-msgstr "Prosím, připojte se do mé sociální sítě na %s"
-
-#: ../../mod/invite.php:103
-msgid "To accept this invitation, please visit:"
-msgstr "Chcete-li toto pozvání přijmout, navštivte prosím:"
-
-#: ../../mod/invite.php:104
-msgid "You will need to supply this invitation code: $invite_code"
-msgstr "Budete muset zadat kód této pozvánky: $invite_code"
-
-#: ../../mod/invite.php:104
-msgid ""
-"Once you have registered, please connect with me via my profile page at:"
-msgstr ""
-"Jakmile se zaregistrujete, prosím spojte se se mnou přes mou profilovu "
-"stránku na:"
-
-#: ../../mod/dfrn_confirm.php:233
-msgid "Response from remote site was not understood."
-msgstr "OdpovÄ›Ä ze vzdáleného serveru nebyla srozumitelná."
-
-#: ../../mod/dfrn_confirm.php:242
-msgid "Unexpected response from remote site: "
-msgstr "NeoÄekávaná odpovÄ›Ä od vzdáleného serveru:"
-
-#: ../../mod/dfrn_confirm.php:250
-msgid "Confirmation completed successfully."
-msgstr "Potvrzení úspěšnÄ› dokonÄena."
-
-#: ../../mod/dfrn_confirm.php:252 ../../mod/dfrn_confirm.php:266
-#: ../../mod/dfrn_confirm.php:273
-msgid "Remote site reported: "
-msgstr "Vzdálený server oznámil:"
-
-#: ../../mod/dfrn_confirm.php:264
-msgid "Temporary failure. Please wait and try again."
-msgstr "DoÄasné selhání. Prosím, vyÄkejte a zkuste to znovu."
-
-#: ../../mod/dfrn_confirm.php:271
-msgid "Introduction failed or was revoked."
-msgstr "Žádost o propojení selhala nebo byla zrušena."
-
-#: ../../mod/dfrn_confirm.php:393
-msgid "Unable to set contact photo."
-msgstr "Nelze nastavit fotografii kontaktu."
-
-#: ../../mod/dfrn_confirm.php:436 ../../include/conversation.php:79
-#, php-format
-msgid "%1$s is now friends with %2$s"
-msgstr "%1$s je nyní přítel s %2$s"
-
-#: ../../mod/dfrn_confirm.php:507
-#, php-format
-msgid "No user record found for '%s' "
-msgstr "Pro '%s' nenalezen žádný uživatelský záznam "
-
-#: ../../mod/dfrn_confirm.php:517
-msgid "Our site encryption key is apparently messed up."
-msgstr "Náš Å¡ifrovací klÃ­Ä zÅ™ejmÄ› pÅ™estal správnÄ› fungovat."
-
-#: ../../mod/dfrn_confirm.php:528
-msgid "Empty site URL was provided or URL could not be decrypted by us."
-msgstr ""
-"Byla poskytnuta prázdná URL adresa nebo se nepodařilo URL adresu dešifrovat."
-
-#: ../../mod/dfrn_confirm.php:549
-msgid "Contact record was not found for you on our site."
-msgstr "Kontakt záznam nebyl nalezen pro vás na našich stránkách."
-
-#: ../../mod/dfrn_confirm.php:578
-msgid ""
-"The ID provided by your system is a duplicate on our system. It should work "
-"if you try again."
-msgstr ""
-"Váš systém poskytl duplicitní ID vůÄi naÅ¡emu systému. Pokuste se akci "
-"zopakovat."
-
-#: ../../mod/dfrn_confirm.php:589
-msgid "Unable to set your contact credentials on our system."
-msgstr "Nelze nastavit Vaše přihlašovací údaje v našem systému."
-
-#: ../../mod/dfrn_confirm.php:642
-msgid "Unable to update your contact profile details on our system"
-msgstr "Nelze aktualizovat Váš profil v našem systému"
-
-#: ../../mod/dfrn_confirm.php:672
-#, php-format
-msgid "Connection accepted at %s"
-msgstr "Připojení přijato na %s"
-
-#: ../../addon/facebook/facebook.php:314
-msgid "Facebook disabled"
-msgstr "Facebook zakázán"
-
-#: ../../addon/facebook/facebook.php:319
-msgid "Updating contacts"
-msgstr "Aktualizace kontaktů"
-
-#: ../../addon/facebook/facebook.php:328
-msgid "Facebook API key is missing."
-msgstr "Chybí Facebook API klíÄ."
-
-#: ../../addon/facebook/facebook.php:335
-msgid "Facebook Connect"
-msgstr "Facebook připojen"
-
-#: ../../addon/facebook/facebook.php:341
-msgid "Install Facebook connector for this account."
-msgstr "Nainstalovat pro tento úÄet Facebook konektor."
-
-#: ../../addon/facebook/facebook.php:348
-msgid "Remove Facebook connector"
-msgstr "Odstranit konektor na Facebook"
-
-#: ../../addon/facebook/facebook.php:354
-msgid "Post to Facebook by default"
-msgstr "Standardně posílat příspěvky na Facebook"
-
-#: ../../addon/facebook/facebook.php:358
-msgid "Link all your Facebook friends and conversations"
-msgstr "Připojit všechny své přátele na Facebooku a konverzace"
-
-#: ../../addon/facebook/facebook.php:363
-msgid "Warning: Your Facebook privacy settings can not be imported."
-msgstr ""
-"Upozornění: nastavení ochrany osobních údajů na Facebooku nelze importovat."
-
-#: ../../addon/facebook/facebook.php:364
-msgid ""
-"Linked Facebook items <strong>may</strong> be publicly visible, depending on"
-" your privacy settings for this website/account."
-msgstr ""
-"Propojené položky z Facebook <strong>mohou</strong> být veřejně viditelné, v"
-" závislosti na nastavení ochrany osobních údajů pro tuto webovou "
-"stránku/úÄet."
-
-#: ../../addon/facebook/facebook.php:419
-msgid "Facebook"
-msgstr "Facebook"
-
-#: ../../addon/facebook/facebook.php:420
-msgid "Facebook Connector Settings"
-msgstr "Nastavení Facebook konektoru "
-
-#: ../../addon/facebook/facebook.php:434
-msgid "Post to Facebook"
-msgstr "Přidat příspěvek na Facebook"
-
-#: ../../addon/facebook/facebook.php:507
-msgid ""
-"Post to Facebook cancelled because of multi-network access permission "
-"conflict."
-msgstr ""
-"Příspěvek na Facebook zrušen kvůli konfliktu přístupových práv mezi sítěmi."
-
-#: ../../addon/facebook/facebook.php:580
-msgid "Image: "
-msgstr "Obrázek: "
-
-#: ../../addon/facebook/facebook.php:656
-msgid "View on Friendika"
-msgstr "Pohled na Friendiku"
-
-#: ../../addon/facebook/facebook.php:687
-msgid "Facebook post failed. Queued for retry."
-msgstr ""
-"Zaslání příspěvku na Facebook selhalo. Příspěvek byl zařazen do fronty pro "
-"opakované odeslání."
-
-#: ../../addon/widgets/widgets.php:53
-msgid "Generate new key"
-msgstr "Generovat nové klíÄe"
-
-#: ../../addon/widgets/widgets.php:56
-msgid "Widgets key"
-msgstr "Widgety klíÄ"
-
-#: ../../addon/widgets/widgets.php:58
-msgid "Widgets available"
-msgstr "Widgety k dispozici"
-
-#: ../../addon/widgets/widget_friends.php:30
-msgid "Connect on Friendika!"
-msgstr "Spojit se na Friendice!"
-
-#: ../../addon/tictac/tictac.php:20
-msgid "Three Dimensional Tic-Tac-Toe"
-msgstr "Trojrozměrné Tic-Tac-Toe"
-
-#: ../../addon/tictac/tictac.php:53
-msgid "3D Tic-Tac-Toe"
-msgstr "3D Tic-Tac-Toe"
-
-#: ../../addon/tictac/tictac.php:58
-msgid "New game"
-msgstr "Nová hra"
-
-#: ../../addon/tictac/tictac.php:59
-msgid "New game with handicap"
-msgstr "Nová hra s handicapem"
-
-#: ../../addon/tictac/tictac.php:60
-msgid ""
-"Three dimensional tic-tac-toe is just like the traditional game except that "
-"it is played on multiple levels simultaneously. "
-msgstr ""
-"TrojrozmÄ›rné tic-tac-toe je podobná této tradiÄní hÅ™e kromÄ› toho, že se "
-"hraje na více úrovních souÄasnÄ›."
-
-#: ../../addon/tictac/tictac.php:61
-msgid ""
-"In this case there are three levels. You win by getting three in a row on "
-"any level, as well as up, down, and diagonally across the different levels."
-msgstr ""
-"V tomto případě existují tři úrovně. Vyhrajete tím, že dostane tři v řadě na"
-" jakékoli úrovni, stejně jako nahoru, dolů a šikmo na různých úrovních."
-
-#: ../../addon/tictac/tictac.php:63
-msgid ""
-"The handicap game disables the center position on the middle level because "
-"the player claiming this square often has an unfair advantage."
-msgstr ""
-"Hra s handicapem zakáže centrální pozici na stÅ™ední úrovni, protože hrÃ¡Ä "
-"zaujímající tuto polohu má Äasto nespravedlivou výhodu."
-
-#: ../../addon/tictac/tictac.php:182
-msgid "You go first..."
-msgstr "Vy zaÄnÄ›te ..."
-
-#: ../../addon/tictac/tictac.php:187
-msgid "I'm going first this time..."
-msgstr "Tentokrát zaÄnu já..."
-
-#: ../../addon/tictac/tictac.php:193
-msgid "You won!"
-msgstr "Vyhrál jste!"
-
-#: ../../addon/tictac/tictac.php:199 ../../addon/tictac/tictac.php:224
-msgid "\"Cat\" game!"
-msgstr "\"KoÄiÄí\" hra!"
-
-#: ../../addon/tictac/tictac.php:222
-msgid "I won!"
-msgstr "Vyhrál jsem!"
-
-#: ../../addon/randplace/randplace.php:170
-msgid "Randplace Settings"
-msgstr "Randplace Nastavení"
-
-#: ../../addon/randplace/randplace.php:172
-msgid "Enable Randplace Plugin"
-msgstr "Povolit Randplace Plugin"
-
-#: ../../addon/js_upload/js_upload.php:43
-msgid "Upload a file"
-msgstr "Nahrát soubor"
-
-#: ../../addon/js_upload/js_upload.php:44
-msgid "Drop files here to upload"
-msgstr "Přeneste sem soubory k nahrání"
-
-#: ../../addon/js_upload/js_upload.php:46
-msgid "Failed"
-msgstr "Neúspěch"
-
-#: ../../addon/js_upload/js_upload.php:292
-msgid "No files were uploaded."
-msgstr "Žádné soubory nebyly nahrány."
-
-#: ../../addon/js_upload/js_upload.php:298
-msgid "Uploaded file is empty"
-msgstr "Nahraný soubor je prázdný"
-
-#: ../../addon/js_upload/js_upload.php:321
-msgid "File has an invalid extension, it should be one of "
-msgstr "Soubor má neplatnou příponu, ta by měla být jednou z"
-
-#: ../../addon/js_upload/js_upload.php:332
-msgid "Upload was cancelled, or server error encountered"
-msgstr "Nahrávání bylo zrušeno nebo došlo k chybě na serveru"
-
-#: ../../addon/impressum/impressum.php:25
-msgid "Impressum"
-msgstr "Impressum"
-
-#: ../../addon/impressum/impressum.php:38
-#: ../../addon/impressum/impressum.php:40
-#: ../../addon/impressum/impressum.php:70
-msgid "Site Owner"
-msgstr "Vlastník webu"
-
-#: ../../addon/impressum/impressum.php:38
-#: ../../addon/impressum/impressum.php:74
-msgid "Email Address"
-msgstr "E-mailová adresa"
-
-#: ../../addon/impressum/impressum.php:43
-#: ../../addon/impressum/impressum.php:72
-msgid "Postal Address"
-msgstr "Poštovní adresa"
-
-#: ../../addon/impressum/impressum.php:49
-msgid ""
-"The impressum addon needs to be configured!<br />Please add at least the "
-"<tt>owner</tt> variable to your config file. For other variables please "
-"refer to the README file of the addon."
-msgstr ""
-"Doplněk Impressum musí být nakonfigurován!<br/>Prosím, přidejte alespoň "
-"promÄ›nnou <tt>owner</tt> do konfiguraÄního souboru. Pro nastavení ostatních "
-"proměnných se seznamte s nápovědou v souboru README tohoto doplňku."
-
-#: ../../addon/impressum/impressum.php:71
-msgid "Site Owners Profile"
-msgstr "Profil majitele webu"
-
-#: ../../addon/impressum/impressum.php:73
-msgid "Notes"
-msgstr "Poznámky"
-
-#: ../../addon/oembed/oembed.php:30
-msgid "OEmbed settings updated"
-msgstr "OEmbed nastavení aktualizováno"
-
-#: ../../addon/oembed/oembed.php:43
-msgid "Use OEmbed for YouTube videos"
-msgstr "Použití OEmbed pro videa na YouTube"
-
-#: ../../addon/oembed/oembed.php:71
-msgid "URL to embed:"
-msgstr "URL adresa k vložení:"
-
-#: ../../addon/statusnet/statusnet.php:133
-msgid "Post to StatusNet"
-msgstr "Poslat příspěvek na StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:175
-msgid ""
-"Please contact your site administrator.<br />The provided API URL is not "
-"valid."
-msgstr ""
-"Obraťte se na administratora webu.<br />Poskytnutý odkaz na API není platný."
-
-#: ../../addon/statusnet/statusnet.php:203
-msgid "We could not contact the StatusNet API with the Path you entered."
-msgstr ""
-"S cestou, kterou jste zadali, se nebylo možné spojit s API StatusNetu."
-
-#: ../../addon/statusnet/statusnet.php:230
-msgid "StatusNet settings updated."
-msgstr "Nastavení StatusNetu aktualizováno."
-
-#: ../../addon/statusnet/statusnet.php:253
-msgid "StatusNet Posting Settings"
-msgstr "Nastavení zasílání příspěvků na StatusNet "
-
-#: ../../addon/statusnet/statusnet.php:267
-msgid "Globally Available StatusNet OAuthKeys"
-msgstr "GlobálnÄ› dostupné StatusNet OAuth klíÄe"
-
-#: ../../addon/statusnet/statusnet.php:268
-msgid ""
-"There are preconfigured OAuth key pairs for some StatusNet servers "
-"available. If you are useing one of them, please use these credentials. If "
-"not feel free to connect to any other StatusNet instance (see below)."
-msgstr ""
-"Jsou dostupné pÅ™ednastavené OAuth páry klíÄů pro nÄ›které servery StatusNetu."
-" Pokud používáte některý z nich, použijte toto přihlášení. Pokud ne, "
-"neváhejte se připojit k jiné instanci StatusNet (viz níže)."
-
-#: ../../addon/statusnet/statusnet.php:276
-msgid "Provide your own OAuth Credentials"
-msgstr "UveÄte své vlastní OAuth pÅ™ihlaÅ¡ovací údaje"
-
-#: ../../addon/statusnet/statusnet.php:277
-msgid ""
-"No consumer key pair for StatusNet found. Register your Friendika Account as"
-" an desktop client on your StatusNet account, copy the consumer key pair "
-"here and enter the API base root.<br />Before you register your own OAuth "
-"key pair ask the administrator if there is already a key pair for this "
-"Friendika installation at your favorited StatusNet installation."
-msgstr ""
-"Nenalezen žádný consumer pár klíÄů pro StatusNet. Zaregistrujte svůj "
-"Friendika úÄet jako desktopový klient na svém úÄtu StatusNetu, zkopírujte "
-"níže consumer pár klíÄů a zadejte API base root.<br />Než si zaregistrujete "
-"svůj vlastní pár klíÄů OAuth, zjistÄ›te si od administrátora, zda-li už "
-"náhodou na tento Friendika server nepÅ™idal pár klíÄů pro vámi požadovanou "
-"instalaci StatusNetu."
-
-#: ../../addon/statusnet/statusnet.php:279
-msgid "OAuth Consumer Key"
-msgstr "OAuth Consumer Key"
-
-#: ../../addon/statusnet/statusnet.php:282
-msgid "OAuth Consumer Secret"
-msgstr "OAuth Consumer Secret"
-
-#: ../../addon/statusnet/statusnet.php:285
-msgid "Base API Path (remember the trailing /)"
-msgstr "Cesta k Base API (nezapomeňte na koncový /)"
-
-#: ../../addon/statusnet/statusnet.php:306
-msgid ""
-"To connect to your StatusNet account click the button below to get a "
-"security code from StatusNet which you have to copy into the input box below"
-" and submit the form. Only your <strong>public</strong> posts will be posted"
-" to StatusNet."
-msgstr ""
-"Chcete-li pÅ™ipojit k vaÅ¡emu úÄtu StatusNet kliknÄ›te na tlaÄítko níže, abyste"
-" dostati bezpeÄnostní kód ze StatusNetu, který musíte zkopírovat do "
-"vstupního pole níže a odelat formulář. Pouze Vaše <strong>veřejné</strong> "
-"příspěvky budou zveřejněny na StatusNetu."
-
-#: ../../addon/statusnet/statusnet.php:307
-msgid "Log in with StatusNet"
-msgstr "Přihlásit se s StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:309
-msgid "Copy the security code from StatusNet here"
-msgstr "Zkopírujte sem bezpeÄnostní kód ze StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:315
-msgid "Cancel Connection Process"
-msgstr "Zrušit připojování"
-
-#: ../../addon/statusnet/statusnet.php:317
-msgid "Current StatusNet API is"
-msgstr "Aktuální StatusNet API je"
-
-#: ../../addon/statusnet/statusnet.php:318
-msgid "Cancel StatusNet Connection"
-msgstr "Zrušit StatusNet připojení"
-
-#: ../../addon/statusnet/statusnet.php:329 ../../addon/twitter/twitter.php:180
-msgid "Currently connected to: "
-msgstr "V souÄasné dobÄ› pÅ™ipojen k:"
-
-#: ../../addon/statusnet/statusnet.php:330
-msgid ""
-"If enabled all your <strong>public</strong> postings can be posted to the "
-"associated StatusNet account. You can choose to do so by default (here) or "
-"for every posting separately in the posting options when writing the entry."
-msgstr ""
-"Je-li povoleno, všechny Vaše <strong>veřejné</strong> příspěvky mohou být "
-"zaslány na související StatusNet úÄet. Můžete si vybrat, zda-li toto bude "
-"výchozí nastavení (zde), nebo budete mít možnost si vybrat požadované "
-"chování při psaní každého příspěvku."
-
-#: ../../addon/statusnet/statusnet.php:332
-msgid "Allow posting to StatusNet"
-msgstr "Povolit zasílání příspěvků na StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:335
-msgid "Send public postings to StatusNet by default"
-msgstr "Standardně poslílat veřejné příspěvky na StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:340 ../../addon/twitter/twitter.php:191
-msgid "Clear OAuth configuration"
-msgstr "Vymazat konfiguraci OAuth"
-
-#: ../../addon/statusnet/statusnet.php:460
-msgid "API URL"
-msgstr "API URL"
-
-#: ../../addon/statusnet/statusnet.php:461
-msgid "Consumer Secret"
-msgstr "Consumer Secret"
-
-#: ../../addon/statusnet/statusnet.php:462
-msgid "Consumer Key"
-msgstr "Consumer Key"
-
-#: ../../addon/piwik/piwik.php:77
-msgid "Piwik Base URL"
-msgstr "Piwik Base adresa URL"
-
-#: ../../addon/piwik/piwik.php:78
-msgid "Site ID"
-msgstr "ID webu"
-
-#: ../../addon/piwik/piwik.php:79
-msgid "Show opt-out cookie link?"
-msgstr "Zobrazit odkaz opt-out cookie?"
-
-#: ../../addon/twitter/twitter.php:70
-msgid "Post to Twitter"
-msgstr "Poslat příspěvek na Twitter"
-
-#: ../../addon/twitter/twitter.php:115
-msgid "Twitter settings updated."
-msgstr "Nastavení Twitteru aktualizováno."
-
-#: ../../addon/twitter/twitter.php:137
-msgid "Twitter Posting Settings"
-msgstr "Nastavení zasílání příspěvků na Twitter "
-
-#: ../../addon/twitter/twitter.php:144
-msgid ""
-"No consumer key pair for Twitter found. Please contact your site "
-"administrator."
-msgstr ""
-"Nenalezen žádný spotÅ™ebitelský páru klíÄů pro Twitter. ObraÅ¥te se na "
-"administrátora webu."
-
-#: ../../addon/twitter/twitter.php:163
-msgid ""
-"At this Friendika instance the Twitter plugin was enabled but you have not "
-"yet connected your account to your Twitter account. To do so click the "
-"button below to get a PIN from Twitter which you have to copy into the input"
-" box below and submit the form. Only your <strong>public</strong> posts will"
-" be posted to Twitter."
-msgstr ""
-"Na tomto Friendika serveru je Twitter plugin povolen, ale ještě nemáte svůj "
-"úÄet pÅ™ipojen ke svému Twitter úÄtu. Chcete-li tak uÄinit, klepnutím na "
-"tlaÄítko níže získejte PIN z Twitteru, který musíte zkopírovat do vstupního "
-"pole níže a odešlete formulář. Pouze Vaše <strong>veřejné</strong> příspěvky"
-" budou zveřejněny na Twitteru."
-
-#: ../../addon/twitter/twitter.php:164
-msgid "Log in with Twitter"
-msgstr "Přihlásit se s Twitter"
-
-#: ../../addon/twitter/twitter.php:166
-msgid "Copy the PIN from Twitter here"
-msgstr "Zkopírujte sem PIN z Twitteru"
-
-#: ../../addon/twitter/twitter.php:181
-msgid ""
-"If enabled all your <strong>public</strong> postings can be posted to the "
-"associated Twitter account. You can choose to do so by default (here) or for"
-" every posting separately in the posting options when writing the entry."
-msgstr ""
-"Je-li povoleno, všechny Vaše <strong>veřejné</strong> příspěvky mohou být "
-"zaslány na související Twitter úÄet. Můžete si vybrat, zda-li toto bude "
-"výchozí nastavení (zde), nebo budete mít možnost si vybrat požadované "
-"chování při psaní každého příspěvku."
-
-#: ../../addon/twitter/twitter.php:183
-msgid "Allow posting to Twitter"
-msgstr "Povolit odesílání na Twitter"
-
-#: ../../addon/twitter/twitter.php:186
-msgid "Send public postings to Twitter by default"
-msgstr "Defaultně zasílat veřejné komentáře na Twitter"
-
-#: ../../addon/twitter/twitter.php:282
-msgid "Consumer key"
-msgstr "Consumer key"
-
-#: ../../addon/twitter/twitter.php:283
-msgid "Consumer secret"
-msgstr "Consumer secret"
-
-#: ../../include/profile_advanced.php:23 ../../boot.php:880
-msgid "Gender:"
-msgstr "Pohlaví:"
-
-#: ../../include/profile_advanced.php:36 ../../include/items.php:1137
-msgid "Birthday:"
-msgstr "Narozeniny:"
-
-#: ../../include/profile_advanced.php:45
-msgid "j F, Y"
-msgstr "j F, Y"
-
-#: ../../include/profile_advanced.php:46
-msgid "j F"
-msgstr "j F"
-
-#: ../../include/profile_advanced.php:59
-msgid "Age:"
-msgstr "Věk:"
-
-#: ../../include/profile_advanced.php:70
-msgid "<span class=\"heart\">&hearts;</span> Status:"
-msgstr "<span class=\"heart\">&hearts;</span> Status:"
-
-#: ../../include/profile_advanced.php:103 ../../boot.php:886
-msgid "Homepage:"
-msgstr "Domácí stránka:"
-
-#: ../../include/profile_advanced.php:127
-msgid "Religion:"
-msgstr "Náboženství:"
-
-#: ../../include/profile_advanced.php:138
-msgid "About:"
-msgstr "O mÄ›:"
-
-#: ../../include/profile_advanced.php:150
-msgid "Hobbies/Interests:"
-msgstr "KoníÄky/zájmy:"
-
-#: ../../include/profile_advanced.php:162
-msgid "Contact information and Social Networks:"
-msgstr "Kontaktní informace a sociální sítě:"
-
-#: ../../include/profile_advanced.php:174
-msgid "Musical interests:"
-msgstr "Hudební vkus:"
-
-#: ../../include/profile_advanced.php:186
-msgid "Books, literature:"
-msgstr "Knihy, literatura:"
-
-#: ../../include/profile_advanced.php:198
-msgid "Television:"
-msgstr "Televize:"
-
-#: ../../include/profile_advanced.php:210
-msgid "Film/dance/culture/entertainment:"
-msgstr "Film/tanec/kultura/zábava:"
-
-#: ../../include/profile_advanced.php:222
-msgid "Love/Romance:"
-msgstr "Láska/romance"
-
-#: ../../include/profile_advanced.php:234
-msgid "Work/employment:"
-msgstr "Práce/zaměstnání:"
-
-#: ../../include/profile_advanced.php:246
-msgid "School/education:"
-msgstr "Škola/vzdělávání:"
-
-#: ../../include/contact_selectors.php:32
-msgid "Unknown | Not categorised"
-msgstr "Neznámé | Nezařazeno"
-
-#: ../../include/contact_selectors.php:33
-msgid "Block immediately"
-msgstr "Okamžitě blokovat "
-
-#: ../../include/contact_selectors.php:34
-msgid "Shady, spammer, self-marketer"
-msgstr "pochybný, spammer, self-makerter"
-
-#: ../../include/contact_selectors.php:35
-msgid "Known to me, but no opinion"
-msgstr "Znám ho ale, ale bez rozhodnutí"
-
-#: ../../include/contact_selectors.php:36
-msgid "OK, probably harmless"
-msgstr "OK, pravděpodobně neškodný"
-
-#: ../../include/contact_selectors.php:37
-msgid "Reputable, has my trust"
-msgstr "Renomovaný, má mou důvěru"
-
-#: ../../include/contact_selectors.php:55
-msgid "Frequently"
-msgstr "ÄŒasto"
-
-#: ../../include/contact_selectors.php:56
-msgid "Hourly"
-msgstr "každou hodinu"
-
-#: ../../include/contact_selectors.php:57
-msgid "Twice daily"
-msgstr "Dvakrát denně"
-
-#: ../../include/contact_selectors.php:58
-msgid "Daily"
-msgstr "dennÄ›"
-
-#: ../../include/contact_selectors.php:59
-msgid "Weekly"
-msgstr "Týdenně"
-
-#: ../../include/contact_selectors.php:60
-msgid "Monthly"
-msgstr "MÄ›síÄnÄ›"
-
-#: ../../include/profile_selectors.php:6
-msgid "Male"
-msgstr "Muž"
-
-#: ../../include/profile_selectors.php:6
-msgid "Female"
-msgstr "Žena"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Male"
-msgstr "V souÄasné dobÄ› muž"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Female"
-msgstr "V souÄasné dobÄ› žena"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Male"
-msgstr "Většinou muž"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Female"
-msgstr "Většinou žena"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transgender"
-msgstr "Transgender"
-
-#: ../../include/profile_selectors.php:6
-msgid "Intersex"
-msgstr "Intersex"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transsexual"
-msgstr "Transexuál"
-
-#: ../../include/profile_selectors.php:6
-msgid "Hermaphrodite"
-msgstr "Hermafrodit"
-
-#: ../../include/profile_selectors.php:6
-msgid "Neuter"
-msgstr "Neutrál"
-
-#: ../../include/profile_selectors.php:6
-msgid "Non-specific"
-msgstr "Nespecifikováno"
-
-#: ../../include/profile_selectors.php:6
-msgid "Other"
-msgstr "Jiné"
-
-#: ../../include/profile_selectors.php:6
-msgid "Undecided"
-msgstr "Nerozhodnuto"
-
-#: ../../include/profile_selectors.php:19
-msgid "Males"
-msgstr "Muži"
-
-#: ../../include/profile_selectors.php:19
-msgid "Females"
-msgstr "Ženy"
-
-#: ../../include/profile_selectors.php:19
-msgid "Gay"
-msgstr "Gay"
-
-#: ../../include/profile_selectors.php:19
-msgid "Lesbian"
-msgstr "LesbiÄka"
-
-#: ../../include/profile_selectors.php:19
-msgid "No Preference"
-msgstr "Bez preferencí"
-
-#: ../../include/profile_selectors.php:19
-msgid "Bisexual"
-msgstr "Bisexuál"
-
-#: ../../include/profile_selectors.php:19
-msgid "Autosexual"
-msgstr "Autosexuál"
-
-#: ../../include/profile_selectors.php:19
-msgid "Abstinent"
-msgstr "Abstinent"
-
-#: ../../include/profile_selectors.php:19
-msgid "Virgin"
-msgstr "panic/panna"
-
-#: ../../include/profile_selectors.php:19
-msgid "Deviant"
-msgstr "Deviant"
-
-#: ../../include/profile_selectors.php:19
-msgid "Fetish"
-msgstr "Fetišista"
-
-#: ../../include/profile_selectors.php:19
-msgid "Oodles"
-msgstr "HodnÄ›"
-
-#: ../../include/profile_selectors.php:19
-msgid "Nonsexual"
-msgstr "Nesexuální"
-
-#: ../../include/profile_selectors.php:33
-msgid "Single"
-msgstr "Svobodný"
-
-#: ../../include/profile_selectors.php:33
-msgid "Lonely"
-msgstr "Osamnělý"
-
-#: ../../include/profile_selectors.php:33
-msgid "Available"
-msgstr "Dostupný"
-
-#: ../../include/profile_selectors.php:33
-msgid "Unavailable"
-msgstr "Nedostupný"
-
-#: ../../include/profile_selectors.php:33
-msgid "Dating"
-msgstr "Seznamující se"
-
-#: ../../include/profile_selectors.php:33
-msgid "Unfaithful"
-msgstr "Nevěrný"
-
-#: ../../include/profile_selectors.php:33
-msgid "Sex Addict"
-msgstr "Závislý na sexu"
-
-#: ../../include/profile_selectors.php:33
-msgid "Friends"
-msgstr "Přátelé"
-
-#: ../../include/profile_selectors.php:33
-msgid "Friends/Benefits"
-msgstr "Přátelé / výhody"
-
-#: ../../include/profile_selectors.php:33
-msgid "Casual"
-msgstr "Ležérní"
-
-#: ../../include/profile_selectors.php:33
-msgid "Engaged"
-msgstr "Zadaný"
-
-#: ../../include/profile_selectors.php:33
-msgid "Married"
-msgstr "Ženatý/vdaná"
-
-#: ../../include/profile_selectors.php:33
-msgid "Partners"
-msgstr "Partneři"
-
-#: ../../include/profile_selectors.php:33
-msgid "Cohabiting"
-msgstr "Žijící ve spoleÄné domácnosti"
-
-#: ../../include/profile_selectors.php:33
-msgid "Happy"
-msgstr "Šťastný"
-
-#: ../../include/profile_selectors.php:33
-msgid "Not Looking"
-msgstr "Nehledající"
-
-#: ../../include/profile_selectors.php:33
-msgid "Swinger"
-msgstr "Swinger"
-
-#: ../../include/profile_selectors.php:33
-msgid "Betrayed"
-msgstr "Zrazen"
-
-#: ../../include/profile_selectors.php:33
-msgid "Separated"
-msgstr "OdlouÄený"
-
-#: ../../include/profile_selectors.php:33
-msgid "Unstable"
-msgstr "Nestálý"
-
-#: ../../include/profile_selectors.php:33
-msgid "Divorced"
-msgstr "Rozvedený(á)"
-
-#: ../../include/profile_selectors.php:33
-msgid "Widowed"
-msgstr "Ovdovělý(á)"
-
-#: ../../include/profile_selectors.php:33
-msgid "Uncertain"
-msgstr "Nejistý"
-
-#: ../../include/profile_selectors.php:33
-msgid "Complicated"
-msgstr "Komplikovaný"
-
-#: ../../include/profile_selectors.php:33
-msgid "Don't care"
-msgstr "Nezajímá"
-
-#: ../../include/profile_selectors.php:33
-msgid "Ask me"
-msgstr "Zeptej se mÄ›"
-
-#: ../../include/event.php:11
-msgid "l F d, Y \\@ g:i A"
-msgstr "l F d, Y \\@ g:i A"
-
-#: ../../include/event.php:17
-msgid "Starts:"
-msgstr "ZaÄíná:"
-
-#: ../../include/event.php:27
-msgid "Finishes:"
-msgstr "KonÄí:"
-
-#: ../../include/text.php:229
-msgid "prev"
-msgstr "předchozí"
-
-#: ../../include/text.php:231
-msgid "first"
-msgstr "první"
-
-#: ../../include/text.php:260
-msgid "last"
-msgstr "poslední"
-
-#: ../../include/text.php:263
-msgid "next"
-msgstr "další"
-
-#: ../../include/text.php:542
-msgid "No contacts"
-msgstr "Žádné kontakty"
-
-#: ../../include/text.php:550
-#, php-format
-msgid "%d Contact"
-msgid_plural "%d Contacts"
-msgstr[0] "%d kontakt"
-msgstr[1] "%d kontaktů"
-msgstr[2] "%d kontaktů"
-
-#: ../../include/text.php:711
-msgid "Monday"
-msgstr "Pondělí"
-
-#: ../../include/text.php:711
-msgid "Tuesday"
-msgstr "Úterý"
-
-#: ../../include/text.php:711
-msgid "Wednesday"
-msgstr "Středa"
-
-#: ../../include/text.php:711
-msgid "Thursday"
-msgstr "ÄŒtvrtek"
-
-#: ../../include/text.php:711
-msgid "Friday"
-msgstr "Pátek"
-
-#: ../../include/text.php:711
-msgid "Saturday"
-msgstr "Sobota"
-
-#: ../../include/text.php:711
-msgid "Sunday"
-msgstr "Neděle"
-
-#: ../../include/text.php:715
-msgid "January"
-msgstr "Ledna"
-
-#: ../../include/text.php:715
-msgid "February"
-msgstr "Února"
-
-#: ../../include/text.php:715
-msgid "March"
-msgstr "Března"
-
-#: ../../include/text.php:715
-msgid "April"
-msgstr "Dubna"
-
-#: ../../include/text.php:715
-msgid "May"
-msgstr "Května"
-
-#: ../../include/text.php:715
-msgid "June"
-msgstr "ÄŒervna"
-
-#: ../../include/text.php:715
-msgid "July"
-msgstr "ÄŒervence"
-
-#: ../../include/text.php:715
-msgid "August"
-msgstr "Srpna"
-
-#: ../../include/text.php:715
-msgid "September"
-msgstr "Září"
-
-#: ../../include/text.php:715
-msgid "October"
-msgstr "Října"
-
-#: ../../include/text.php:715
-msgid "November"
-msgstr "Listopadu"
-
-#: ../../include/text.php:715
-msgid "December"
-msgstr "Prosince"
-
-#: ../../include/text.php:778
-msgid "bytes"
-msgstr "bytů"
-
-#: ../../include/text.php:861
-msgid "Select an alternate language"
-msgstr "Vyběr alternativního jazyka"
-
-#: ../../include/diaspora.php:309
-msgid "Sharing notification from Diaspora network"
-msgstr "Sdílení oznámení ze sítě Diaspora"
-
-#: ../../include/oembed.php:95
-msgid "Embedding disabled"
-msgstr "Vkládání zakázáno"
-
-#: ../../include/group.php:146
-msgid "Create a new group"
-msgstr "Vytvořit novou skupinu"
-
-#: ../../include/group.php:147
-msgid "Everybody"
-msgstr "VÅ¡ichni"
-
-#: ../../include/nav.php:41 ../../boot.php:667
-msgid "Logout"
-msgstr "Odhlásit se"
-
-#: ../../include/nav.php:41
-msgid "End this session"
-msgstr "Konec této relace"
-
-#: ../../include/nav.php:44 ../../boot.php:645 ../../boot.php:651
-msgid "Login"
-msgstr "Přihlásit se"
-
-#: ../../include/nav.php:44
-msgid "Sign in"
-msgstr "Přihlásit se"
-
-#: ../../include/nav.php:55 ../../include/nav.php:93
-msgid "Home"
-msgstr "Domů"
-
-#: ../../include/nav.php:55
-msgid "Home Page"
-msgstr "Domácí stránka"
-
-#: ../../include/nav.php:59
-msgid "Create an account"
-msgstr "VytvoÅ™it úÄet"
-
-#: ../../include/nav.php:64
-msgid "Help and documentation"
-msgstr "Nápověda a dokumentace"
-
-#: ../../include/nav.php:67
-msgid "Apps"
-msgstr "Aplikace"
-
-#: ../../include/nav.php:67
-msgid "Addon applications, utilities, games"
-msgstr "Doplňkové aplikace, nástroje, hry"
-
-#: ../../include/nav.php:69
-msgid "Search site content"
-msgstr "Hledání na stránkách tohoto webu"
-
-#: ../../include/nav.php:79
-msgid "Conversations on this site"
-msgstr "Konverzace na tomto webu"
-
-#: ../../include/nav.php:81
-msgid "Directory"
-msgstr "Adresář"
-
-#: ../../include/nav.php:81
-msgid "People directory"
-msgstr "Adresář"
-
-#: ../../include/nav.php:91
-msgid "Network"
-msgstr "Síť"
-
-#: ../../include/nav.php:91
-msgid "Conversations from your friends"
-msgstr "Konverzace od Vašich přátel"
-
-#: ../../include/nav.php:93
-msgid "Your posts and conversations"
-msgstr "Vaše příspěvky a konverzace"
-
-#: ../../include/nav.php:99
-msgid "Notifications"
-msgstr "Upozornění"
-
-#: ../../include/nav.php:99
-msgid "Friend requests"
-msgstr "Požadavky přátelství"
-
-#: ../../include/nav.php:102
-msgid "Private mail"
-msgstr "Soukromá pošta"
-
-#: ../../include/nav.php:105
-msgid "Manage"
-msgstr "Spravovat"
-
-#: ../../include/nav.php:105
-msgid "Manage other pages"
-msgstr "Spravovat jiné stránky"
-
-#: ../../include/nav.php:109
-msgid "Manage/edit profiles"
-msgstr "Spravovat/upravit profily"
-
-#: ../../include/nav.php:110
-msgid "Manage/edit friends and contacts"
-msgstr "Spravovat/upravit přátelé a kontakty"
-
-#: ../../include/nav.php:117
-msgid "Admin"
-msgstr "Administrace"
-
-#: ../../include/nav.php:117
-msgid "Site setup and configuration"
-msgstr "Nastavení webu a konfigurace"
-
-#: ../../include/auth.php:27
-msgid "Logged out."
-msgstr "Odhlášen."
-
-#: ../../include/datetime.php:44 ../../include/datetime.php:46
-msgid "Miscellaneous"
-msgstr "Různé"
-
-#: ../../include/datetime.php:105 ../../include/datetime.php:237
-msgid "year"
-msgstr "rok"
-
-#: ../../include/datetime.php:110 ../../include/datetime.php:238
-msgid "month"
-msgstr "měsíc"
-
-#: ../../include/datetime.php:115 ../../include/datetime.php:240
-msgid "day"
-msgstr "den"
-
-#: ../../include/datetime.php:228
-msgid "never"
-msgstr "nikdy"
-
-#: ../../include/datetime.php:234
-msgid "less than a second ago"
-msgstr "méně než před sekundou"
-
-#: ../../include/datetime.php:237
-msgid "years"
-msgstr "let"
-
-#: ../../include/datetime.php:238
-msgid "months"
-msgstr "měsíců"
-
-#: ../../include/datetime.php:239
-msgid "week"
-msgstr "týden"
-
-#: ../../include/datetime.php:239
-msgid "weeks"
-msgstr "týdny"
-
-#: ../../include/datetime.php:240
-msgid "days"
-msgstr "dnů"
-
-#: ../../include/datetime.php:241
-msgid "hour"
-msgstr "hodina"
-
-#: ../../include/datetime.php:241
-msgid "hours"
-msgstr "hodin"
-
-#: ../../include/datetime.php:242
-msgid "minute"
-msgstr "minuta"
-
-#: ../../include/datetime.php:242
-msgid "minutes"
-msgstr "minut"
-
-#: ../../include/datetime.php:243
-msgid "second"
-msgstr "sekunda"
-
-#: ../../include/datetime.php:243
-msgid "seconds"
-msgstr "sekund"
-
-#: ../../include/datetime.php:250
-msgid " ago"
-msgstr " nazpět"
-
-#: ../../include/poller.php:418
-msgid "From: "
-msgstr "Od:"
-
-#: ../../include/bbcode.php:116
-msgid "Image/photo"
-msgstr "Obrázek/fotografie"
-
-#: ../../include/dba.php:31
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "Nelze nalézt záznam v DNS pro databázový server '%s'"
-
-#: ../../include/acl_selectors.php:279
-msgid "Visible to everybody"
-msgstr "Viditelné pro všechny"
-
-#: ../../include/acl_selectors.php:280
-msgid "show"
-msgstr "zobrazit"
-
-#: ../../include/acl_selectors.php:281
-msgid "don't show"
-msgstr "nikdy nezobrazit"
-
-#: ../../include/notifier.php:465
-msgid "(no subject)"
-msgstr "(Bez předmětu)"
-
-#: ../../include/items.php:1526
-msgid "You have a new follower at "
-msgstr "Máte nového následovníka na"
-
-#: ../../include/conversation.php:23
-msgid "event"
-msgstr "událost"
-
-#: ../../include/conversation.php:213 ../../include/conversation.php:488
-#: ../../include/conversation.php:489
-#, php-format
-msgid "View %s's profile"
-msgstr "Zobrazit %s profilu"
-
-#: ../../include/conversation.php:222 ../../include/conversation.php:501
-#, php-format
-msgid "%s from %s"
-msgstr "%s od %s"
-
-#: ../../include/conversation.php:230
-msgid "View in context"
-msgstr "Pohled v kontextu"
-
-#: ../../include/conversation.php:301
-msgid "See more posts like this"
-msgstr "Zobrazit více podobných příspěvků"
-
-#: ../../include/conversation.php:329
-#, php-format
-msgid "See all %d comments"
-msgstr "Zobrazit všechny komentáře %d"
-
-#: ../../include/conversation.php:427
-msgid "Select"
-msgstr "Vybrat"
-
-#: ../../include/conversation.php:429
-msgid "toggle star status"
-msgstr "přepnout hvězdu"
-
-#: ../../include/conversation.php:490
-msgid "to"
-msgstr "pro"
-
-#: ../../include/conversation.php:491
-msgid "Wall-to-Wall"
-msgstr "ZeÄ-na-ZeÄ"
-
-#: ../../include/conversation.php:492
-msgid "via Wall-To-Wall:"
-msgstr "pÅ™es ZeÄ-na-ZeÄ "
-
-#: ../../include/conversation.php:534
-msgid "Delete Selected Items"
-msgstr "Smazat vybrané položky"
-
-#: ../../include/conversation.php:608
-msgid "View status"
-msgstr "Zobrazit stav"
-
-#: ../../include/conversation.php:609
-msgid "View profile"
-msgstr "Zobrazit profil"
-
-#: ../../include/conversation.php:610
-msgid "View photos"
-msgstr "Zobrazit fotografie"
-
-#: ../../include/conversation.php:611
-msgid "View recent"
-msgstr "Zobrazit poslední"
-
-#: ../../include/conversation.php:613
-msgid "Send PM"
-msgstr "Poslat soukromou zprávu"
-
-#: ../../include/conversation.php:663
-#, php-format
-msgid "%s likes this."
-msgstr "%s se to líbí."
-
-#: ../../include/conversation.php:663
-#, php-format
-msgid "%s doesn't like this."
-msgstr "%s se to nelíbí."
-
-#: ../../include/conversation.php:667
-#, php-format
-msgid "<span %1$s>%2$d people</span> like this."
-msgstr "<span %1$s>%2$d lidem</span> se to líbí."
-
-#: ../../include/conversation.php:669
-#, php-format
-msgid "<span %1$s>%2$d people</span> don't like this."
-msgstr "<span %1$s>%2$d lidem</span> se to nelíbí."
-
-#: ../../include/conversation.php:675
-msgid "and"
-msgstr "a"
-
-#: ../../include/conversation.php:678
-#, php-format
-msgid ", and %d other people"
-msgstr ", a %d dalších lidí"
-
-#: ../../include/conversation.php:679
-#, php-format
-msgid "%s like this."
-msgstr "%s se to líbí."
-
-#: ../../include/conversation.php:679
-#, php-format
-msgid "%s don't like this."
-msgstr "%s se to nelíbí."
-
-#: ../../include/conversation.php:698
-msgid "Visible to <strong>everybody</strong>"
-msgstr "Viditelné pro <strong>všechny</strong>"
-
-#: ../../include/conversation.php:700
-msgid "Please enter a YouTube link:"
-msgstr "Prosím zadejte odkaz na YouTube:"
-
-#: ../../include/conversation.php:701
-msgid "Please enter a video(.ogg) link/URL:"
-msgstr "Prosím, zadejte odkaz na video (ogg.):"
-
-#: ../../include/conversation.php:702
-msgid "Please enter an audio(.ogg) link/URL:"
-msgstr "Prosím, zadejte odkaz na audio (ogg.):"
-
-#: ../../include/conversation.php:703
-msgid "Where are you right now?"
-msgstr "Kde právě jste?"
-
-#: ../../include/conversation.php:704
-msgid "Enter a title for this item"
-msgstr "Zadejte titulek pro tuto položku"
-
-#: ../../include/conversation.php:755
-msgid "Set title"
-msgstr "Nastavit titulek"
-
-#: ../../boot.php:410
-msgid "Delete this item?"
-msgstr "Odstranit tuto položku?"
-
-#: ../../boot.php:636
-msgid "Create a New Account"
-msgstr "VytvoÅ™it nový úÄet"
-
-#: ../../boot.php:643
-msgid "Nickname or Email address: "
-msgstr "Přezdívka nebo e-mailová adresa:"
-
-#: ../../boot.php:644
-msgid "Password: "
-msgstr "Heslo: "
-
-#: ../../boot.php:649
-msgid "Nickname/Email/OpenID: "
-msgstr "Přezdívka/E-mail/OpenID: "
-
-#: ../../boot.php:650
-msgid "Password (if not OpenID): "
-msgstr "Heslo (pokud se nepoužívá OpenID):"
-
-#: ../../boot.php:653
-msgid "Forgot your password?"
-msgstr "Zapomněli jste své heslo?"
-
-#: ../../boot.php:853
-msgid "Connect"
-msgstr "Spojit"
-
-#: ../../boot.php:872
-msgid ", "
-msgstr ", "
-
-#: ../../boot.php:884
-msgid "Status:"
-msgstr "Status:"
-
-#: ../../boot.php:975
-msgid "g A l F d"
-msgstr "g A l F d"
-
-#: ../../boot.php:993
-msgid "Birthday Reminders"
-msgstr "Připomínka narozenin"
-
-#: ../../boot.php:994
-msgid "Birthdays this week:"
-msgstr "Narozeniny tento týden:"
-
-#: ../../boot.php:995
-msgid "(Adjusted for local time)"
-msgstr "(Upraveno pro místní Äas)"
-
-#: ../../boot.php:1006
-msgid "[today]"
-msgstr "[Dnes]"
-
-#: ../../index.php:209
-msgid "Not Found"
-msgstr "Nenalezen"
-
-#: ../../index.php:210
-msgid "Page not found."
-msgstr "Stránka nenalezena"
-
-
diff --git a/view/cs/passchanged_eml.tpl b/view/cs/passchanged_eml.tpl
deleted file mode 100644
index 0d94be3c2..000000000
--- a/view/cs/passchanged_eml.tpl
+++ /dev/null
@@ -1,20 +0,0 @@
-
-Dear {{$username}},
- Your password has been changed as requested. Please retain this
-information for your records (or change your password immediately to
-something that you will remember).
-
-
-Your login details are as follows:
-
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
-Password: {{$new_password}}
-
-You may change that password from your account settings page after logging in.
-
-
-Sincerely,
- {{$sitename}} Administrator
-
-
diff --git a/view/cs/register_open_eml.tpl b/view/cs/register_open_eml.tpl
deleted file mode 100644
index 4b397201c..000000000
--- a/view/cs/register_open_eml.tpl
+++ /dev/null
@@ -1,19 +0,0 @@
-
-An account has been created at {{$sitename}} for this email address.
-The login details are as follows:
-
-Site Location: {{$siteurl}}
-Login: {{$email}}
-Password: (the password which was provided during registration)
-
-If this account was created without your knowledge and is not desired, you may
-visit this site and reset the password. This will allow you to remove the
-account from the links on the Settings page, and we
-apologise for any inconvenience.
-
-Thank you and welcome to {{$sitename}}.
-
-Sincerely,
- {{$sitename}} Administrator
-
-
diff --git a/view/cs/register_verify_eml.tpl b/view/cs/register_verify_eml.tpl
deleted file mode 100644
index 85d9a12d3..000000000
--- a/view/cs/register_verify_eml.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
-
-A new user registration request was received at {{$sitename}} which requires
-your approval.
-
-
-The login details are as follows:
-
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
-IP Address: {{$details}}
-
-To approve this request please visit the following link:
-
-
-{{$siteurl}}/regmod/allow/{{$hash}}
-
-
-To deny the request and remove the account, please visit:
-
-
-{{$siteurl}}/regmod/deny/{{$hash}}
-
-
-Thank you.
-
diff --git a/view/cs/strings.php b/view/cs/strings.php
deleted file mode 100644
index f43d0491b..000000000
--- a/view/cs/strings.php
+++ /dev/null
@@ -1,1044 +0,0 @@
-<?php
-
-if(! function_exists("string_plural_select_cs")) {
-function string_plural_select_cs($n){
- return ($n==1) ? 0 : ($n>=2 && $n<=4) ? 1 : 2;
-}}
-;
-App::$strings["Post successful."] = "Příspěvek úspěšně odeslán";
-App::$strings["Contact settings applied."] = "Nastavení kontaktu změněno";
-App::$strings["Contact update failed."] = "Aktualizace kontaktu selhala.";
-App::$strings["Permission denied."] = "Přístup odmítnut.";
-App::$strings["Contact not found."] = "Kontakt nenalezen.";
-App::$strings["Repair Contact Settings"] = "Opravit nastavení kontaktu";
-App::$strings["<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact will stop working."] = "<strong>VAROVÃNÃ: Toto je velmi pokroÄilé nastavení,</strong> pokud zadáte nesprávné informace, komunikace s tímto kontaktem pÅ™estane fungovat.";
-App::$strings["Please use your browser 'Back' button <strong>now</strong> if you are uncertain what to do on this page."] = "Prosím použijte <strong>ihned</strong> v prohlížeÄi tlaÄítko \"zpÄ›t\" pokud si nejste jistí co dÄ›lat na této stránce.";
-App::$strings["Name"] = "Jméno";
-App::$strings["Account Nickname"] = "PÅ™ezdívka úÄtu";
-App::$strings["Account URL"] = "URL adresa úÄtu";
-App::$strings["Friend Request URL"] = "Žádost o přátelství URL";
-App::$strings["Friend Confirm URL"] = "URL adresa potvrzení přátelství";
-App::$strings["Notification Endpoint URL"] = "NotifikaÄní URL adresa";
-App::$strings["Poll/Feed URL"] = "Poll/Feed URL adresa";
-App::$strings["Submit"] = "Odeslat";
-App::$strings["Help:"] = "Nápověda:";
-App::$strings["Help"] = "Nápověda";
-App::$strings["File exceeds size limit of %d"] = "Velikost souboru přesáhla limit %d";
-App::$strings["File upload failed."] = "Nahrání souboru se nezdařilo.";
-App::$strings["Friend suggestion sent."] = "Návrhy přátelství odeslány ";
-App::$strings["Suggest Friends"] = "Navrhněte přátelé";
-App::$strings["Suggest a friend for %s"] = "Navrhněte přátelé pro uživatele %s";
-App::$strings["Status"] = "Stav";
-App::$strings["Profile"] = "Profil";
-App::$strings["Photos"] = "Fotografie";
-App::$strings["Events"] = "Události";
-App::$strings["Personal Notes"] = "Osobní poznámky";
-App::$strings["Create New Event"] = "Vytvořit novou událost";
-App::$strings["Previous"] = "Předchozí";
-App::$strings["Next"] = "Následující";
-App::$strings["l, F j"] = "l, F j";
-App::$strings["Edit event"] = "Editovat událost";
-App::$strings["link to source"] = "odkaz na zdroj";
-App::$strings["hour:minute"] = "hodina:minuta";
-App::$strings["Event details"] = "Detaily události";
-App::$strings["Format is %s %s. Starting date and Description are required."] = "Formát je %s %s. Datum zahájení a popis jsou povinné.";
-App::$strings["Event Starts:"] = "Událost zaÄíná:";
-App::$strings["Finish date/time is not known or not relevant"] = "Datum/Äas konce není zadán nebo není relevantní";
-App::$strings["Event Finishes:"] = "Akce konÄí:";
-App::$strings["Adjust for viewer timezone"] = "Nastavit Äasové pásmo pro uživatele s právem pro Ätení";
-App::$strings["Description:"] = "Popis:";
-App::$strings["Location:"] = "Místo:";
-App::$strings["Share this event"] = "Sdílet tuto událost";
-App::$strings["Cancel"] = "Zrušit";
-App::$strings["Tag removed"] = "Štítek odstraněn";
-App::$strings["Remove Item Tag"] = "Odebrat štítek položky";
-App::$strings["Select a tag to remove: "] = "Vyberte štítek k odebrání:";
-App::$strings["Remove"] = "Odstranit";
-App::$strings["%s welcomes %s"] = "%s vítá %s ";
-App::$strings["Photo Albums"] = "Fotoalba";
-App::$strings["Contact Photos"] = "Fotogalerie kontaktu";
-App::$strings["everybody"] = "Žádost o připojení selhala nebo byla zrušena.";
-App::$strings["Contact information unavailable"] = "Kontakt byl zablokován";
-App::$strings["Profile Photos"] = "Profilové fotografie";
-App::$strings["Album not found."] = "Album nenalezeno.";
-App::$strings["Delete Album"] = "Smazat album";
-App::$strings["Delete Photo"] = "Smazat fotografii";
-App::$strings["was tagged in a"] = "štítek byl přidán v";
-App::$strings["photo"] = "fotografie";
-App::$strings["by"] = "od";
-App::$strings["Image exceeds size limit of "] = "Velikost obrázku pÅ™ekraÄuje limit velikosti";
-App::$strings["Image file is empty."] = "Soubor obrázku je prázdný.";
-App::$strings["Unable to process image."] = "Obrázek není možné zprocesovat";
-App::$strings["Image upload failed."] = "Nahrání obrázku selhalo.";
-App::$strings["Public access denied."] = "Veřejný přístup odepřen.";
-App::$strings["No photos selected"] = "Není vybrána žádná fotografie";
-App::$strings["Access to this item is restricted."] = "Přístup k této položce je omezen.";
-App::$strings["Upload Photos"] = "Nahrání fotografií ";
-App::$strings["New album name: "] = "Název nového alba:";
-App::$strings["or existing album name: "] = "nebo stávající název alba:";
-App::$strings["Permissions"] = "Oprávnění:";
-App::$strings["Edit Album"] = "Edituj album";
-App::$strings["View Photo"] = "Zobraz fotografii";
-App::$strings["Photo not available"] = "Fotografie není k dispozici";
-App::$strings["Edit photo"] = "Editovat fotografii";
-App::$strings["Use as profile photo"] = "Použít jako profilovou fotografii";
-App::$strings["Private Message"] = "Soukromá zpráva";
-App::$strings["View Full Size"] = "Zobrazit v plné velikosti";
-App::$strings["Tags: "] = "Štítky:";
-App::$strings["[Remove any tag]"] = "[Odstranit všechny štítky]";
-App::$strings["New album name"] = "Nové jméno alba";
-App::$strings["Caption"] = "Titulek";
-App::$strings["Add a Tag"] = "Přidat štítek";
-App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Příklad: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping";
-App::$strings["I like this (toggle)"] = "Líbí se mi to (pÅ™epínaÄ)";
-App::$strings["I don't like this (toggle)"] = "Nelíbí se mi to (pÅ™epínaÄ)";
-App::$strings["Share"] = "Sdílet";
-App::$strings["Please wait"] = "Čekejte prosím";
-App::$strings["This is you"] = "To je Vy";
-App::$strings["Comment"] = "Okomentovat";
-App::$strings["Delete"] = "Odstranit";
-App::$strings["Recent Photos"] = "Aktuální fotografie";
-App::$strings["Upload New Photos"] = "Nahrát nové fotografie";
-App::$strings["View Album"] = "Zobrazit album";
-App::$strings["Not available."] = "Není k dispozici.";
-App::$strings["Community"] = "Komunita";
-App::$strings["No results."] = "Žádné výsledky.";
-App::$strings["Shared content is covered by the <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0</a> license."] = "Sdílený obsah je v souladu s <a href=\"http://creativecommons.org/licenses/by/3.0/\">Commons Creative 3.0</a> licencí.";
-App::$strings["Item not found"] = "Položka nenalezena";
-App::$strings["Edit post"] = "Upravit příspěvek";
-App::$strings["Post to Email"] = "Poslat příspěvek na e-mail";
-App::$strings["Edit"] = "Upravit";
-App::$strings["Upload photo"] = "Nahrát fotografii";
-App::$strings["Attach file"] = "Přiložit soubor";
-App::$strings["Insert web link"] = "Vložit webový odkaz";
-App::$strings["Insert YouTube video"] = "Vložit YouTube video";
-App::$strings["Insert Vorbis [.ogg] video"] = "Vložit Vorbis [.ogg] video";
-App::$strings["Insert Vorbis [.ogg] audio"] = "Vložit Vorbis [.ogg] audio";
-App::$strings["Set your location"] = "Nastavte vaši polohu";
-App::$strings["Clear browser location"] = "Odstranit adresu v prohlížeÄi";
-App::$strings["Permission settings"] = "Nastavení oprávnění";
-App::$strings["CC: email addresses"] = "skrytá kopie: e-mailové adresy";
-App::$strings["Public post"] = "Veřejný příspěvek";
-App::$strings["Example: bob@example.com, mary@example.com"] = "Příklad: bob@example.com, mary@example.com";
-App::$strings["This introduction has already been accepted."] = "Toto pozvání již bylo přijato";
-App::$strings["Profile location is not valid or does not contain profile information."] = "Adresa profilu není platná nebo neobsahuje profilové informace";
-App::$strings["Warning: profile location has no identifiable owner name."] = "Varování: umístění profilu nemá žádné identifikovatelné jméno vlastníka";
-App::$strings["Warning: profile location has no profile photo."] = "Varování: umístění profilu nemá žádnou profilovou fotografii.";
-App::$strings["%d required parameter was not found at the given location"] = array(
- 0 => "%d požadovaný parametr nebyl nalezen na daném místě",
- 1 => "%d požadované parametry nebyly nalezeny na daném místě",
- 2 => "%d požadované parametry nebyly nalezeny na daném místě",
-);
-App::$strings["Introduction complete."] = "PÅ™edstavení dokonÄeno.";
-App::$strings["Unrecoverable protocol error."] = "Neopravitelná chyba protokolu";
-App::$strings["Profile unavailable."] = "Profil není k dispozici.";
-App::$strings["%s has received too many connection requests today."] = "%s dnes obdržel příliš mnoho požadavků na připojení.";
-App::$strings["Spam protection measures have been invoked."] = "Ochrana proti spamu byla aktivována";
-App::$strings["Friends are advised to please try again in 24 hours."] = "Přátelům se doporuÄuje to zkusit znovu za 24 hodin.";
-App::$strings["Invalid locator"] = "Neplatný odkaz";
-App::$strings["Unable to resolve your name at the provided location."] = "Nepodařilo se zjistit Vaše jméno na zadané adrese.";
-App::$strings["You have already introduced yourself here."] = "Již jste se zde zavedli.";
-App::$strings["Apparently you are already friends with %s."] = "Zřejmě jste již přátelé se %s.";
-App::$strings["Invalid profile URL."] = "Neplatné URL profilu.";
-App::$strings["Disallowed profile URL."] = "Nepovolené URL profilu.";
-App::$strings["Failed to update contact record."] = "Nepodařilo se aktualizovat kontakt.";
-App::$strings["Your introduction has been sent."] = "Vaše žádost o propojení byla odeslána.";
-App::$strings["Please login to confirm introduction."] = "Prosím přihlašte se k potvrzení žádosti o propojení.";
-App::$strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "Jste přihlášeni pod nesprávnou identitou Prosím, přihlaste se do <strong>tohoto</strong> profilu.";
-App::$strings["Welcome home %s."] = "Vítejte doma %s.";
-App::$strings["Please confirm your introduction/connection request to %s."] = "Prosím potvrÄte VaÅ¡i žádost o pÅ™edstavení/spojení %s.";
-App::$strings["Confirm"] = "Potvrdit";
-App::$strings["[Name Withheld]"] = "[Jméno odepřeno]";
-App::$strings["Introduction received at "] = "Pozvánka přijata v";
-App::$strings["Administrator"] = "Administrátor";
-App::$strings["Friend/Connection Request"] = "Požadavek o přátelství / propojení";
-App::$strings["Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca"] = "Příklady: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca";
-App::$strings["Please answer the following:"] = "Odpovězte, prosím, následující:";
-App::$strings["Does %s know you?"] = "Zná Vás uživatel %s ?";
-App::$strings["Yes"] = "Ano";
-App::$strings["No"] = "Ne";
-App::$strings["Add a personal note:"] = "Přidat osobní poznámku:";
-App::$strings["Please enter your 'Identity Address' from one of the following supported social networks:"] = "Prosím, zadejte adresu své 'identity' jedné z následujících podporovaných sociálních sítí:";
-App::$strings["Friendika"] = "Friendika";
-App::$strings["StatusNet/Federated Social Web"] = "StatusNet / Federativní Sociální Web";
-App::$strings["Private (secure) network"] = "Soukromá (zabezpeÄená) síť";
-App::$strings["Public (insecure) network"] = "VeÅ™ejná (nezabezpeÄená) síť";
-App::$strings["Your Identity Address:"] = "Adresa Vaší identity :";
-App::$strings["Submit Request"] = "Odeslat žádost";
-App::$strings["Could not create/connect to database."] = "Nelze vytvořit / připojit se k databázi.";
-App::$strings["Connected to database."] = "Připojeno k databázi.";
-App::$strings["Proceed with Installation"] = "PokraÄovat v instalaci";
-App::$strings["Your Friendika site database has been installed."] = "Vaše databáze Friendiky byla nainstalována.";
-App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "Důležité: Budete si muset [ruÄnÄ›] plánovat úlohu pro poller.";
-App::$strings["Please see the file \"INSTALL.txt\"."] = "PÅ™eÄtÄ›te si prosím informace v souboru \"INSTALL.txt\".";
-App::$strings["Proceed to registration"] = "PokraÄovat k registraci";
-App::$strings["Database import failed."] = "Import databáze se nezdařil.";
-App::$strings["You may need to import the file \"database.sql\" manually using phpmyadmin or mysql."] = "Možná budete muset importovat soubor \"database.sql\" ruÄnÄ› pomocí phpMyAdmin Äi MySQL.";
-App::$strings["Welcome to Friendika."] = "Vítejte na Friendice.";
-App::$strings["Friendika Social Network"] = "Sociální síť Friendika ";
-App::$strings["Installation"] = "Instalace";
-App::$strings["In order to install Friendika we need to know how to connect to your database."] = "Pro instalaci Friendika musíme vědět, jak se připojit k databázi.";
-App::$strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Obraťte se na svého poskytovatele hostingu nebo administrátora serveru , pokud máte dotazy týkající se těchto nastavení.";
-App::$strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "Databázi, kterou uvedete níže by již mÄ›la existovat. Pokud tak není, prosíme, vytvoÅ™te ji pÅ™ed pokraÄováním.";
-App::$strings["Database Server Name"] = "Jméno databázového serveru";
-App::$strings["Database Login Name"] = "Přihlašovací jméno k databázi";
-App::$strings["Database Login Password"] = "Heslo k databázovému úÄtu ";
-App::$strings["Database Name"] = "Jméno databáze";
-App::$strings["Please select a default timezone for your website"] = "Prosím, vyberte výchozí Äasové pásmo pro vaÅ¡e webové stránky";
-App::$strings["Site administrator email address. Your account email address must match this in order to use the web admin panel."] = "e-mailová adresa administrárota webu. E-mailová adresa vaÅ¡eho úÄtu se musí shodovat, aby bylo možné využívat panel webové administrace.";
-App::$strings["Could not find a command line version of PHP in the web server PATH."] = "Nelze najít verzi PHP pro příkazový řádek v PATH webového serveru.";
-App::$strings["This is required. Please adjust the configuration file .htconfig.php accordingly."] = "Tento krok je nutný. Upravte přísluÅ¡ným způsobem konfiguraÄní soubor .htconfig.php.";
-App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "Verze PHP pro příkazový řádek na vašem systému nemá povolen \"register_argc_argv\".";
-App::$strings["This is required for message delivery to work."] = "Toto je nutné pro fungování doruÄování zpráv.";
-App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Chyba: funkce \"openssl_pkey_new\" na tomto systému není schopna generovat Å¡ifrovací klíÄe";
-App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Pokud systém běží na Windows, seznamte se s \"http://www.php.net/manual/en/openssl.installation.php\".";
-App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Chyba: Požadovaný Apache webserver mod-rewrite modul není nainstalován.";
-App::$strings["Error: libCURL PHP module required but not installed."] = "Chyba: požadovaný libcurl PHP modul není nainstalován.";
-App::$strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Chyba: požadovaný GD graphics PHP modul není nainstalován.";
-App::$strings["Error: openssl PHP module required but not installed."] = "Chyba: požadovaný openssl PHP modul není nainstalován.";
-App::$strings["Error: mysqli PHP module required but not installed."] = "Chyba: požadovaný mysqli PHP modul není nainstalován.";
-App::$strings["Error: mb_string PHP module required but not installed."] = "Chyba: PHP modul mb_string je vyžadován, ale není nainstalován.";
-App::$strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "Webový instalátor musí být schopen vytvořit soubor s názvem \".htconfig.php\" v hlavním adresáři vašeho webového serveru ale nyní mu to není umožněno.";
-App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Toto je nejÄastÄ›ji nastavením oprávnÄ›ní, kdy webový server nemusí být schopen zapisovat soubory do vaÅ¡eho adresáře - i když Vy můžete.";
-App::$strings["Please check with your site documentation or support people to see if this situation can be corrected."] = "Prosím, poraÄte se s dokumentací k VaÅ¡emu hostingu nebo s technickou podporou, zda-li lze tuto situaci napravit.";
-App::$strings["If not, you may be required to perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = "Pokud ne, může být vyžadováno provedení ruÄní instalace. Prosím, seznamte se s návodem popsaným v souboru \"INSTALL.txt\".";
-App::$strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Databázový konfiguraÄní soubor \".htconfig.php\" nemohl být uložen. Prosím, použijte pÅ™iložený text k vytvoÅ™ení konfiguraÄního souboru ve vaÅ¡em koÅ™enovém adresáři webového serveru.";
-App::$strings["Errors encountered creating database tables."] = "Při vytváření databázových tabulek došlo k chybám.";
-App::$strings["[Embedded content - reload page to view]"] = "[Vložený obsah - obnovení stránky pro zobrazení]";
-App::$strings["Profile Match"] = "Shoda profilu";
-App::$strings["No keywords to match. Please add keywords to your default profile."] = "Žádná klíÄová slova k porovnání. Prosím, pÅ™idejte klíÄová slova do VaÅ¡eho výchozího profilu.";
-App::$strings["No matches"] = "Žádné shody";
-App::$strings["Remote privacy information not available."] = "Vzdálené soukromé informace nejsou k dispozici.";
-App::$strings["Visible to:"] = "Viditelné pro:";
-App::$strings["Welcome to %s"] = "Vítá Vás %s";
-App::$strings["Invalid request identifier."] = "Neplatný identifikátor požadavku.";
-App::$strings["Discard"] = "Odstranit";
-App::$strings["Ignore"] = "Ignorovat";
-App::$strings["Pending Friend/Connect Notifications"] = "Čekající požadavky na Přátelství / Připojení ";
-App::$strings["Show Ignored Requests"] = "Zobrazit ignorované žádosti";
-App::$strings["Hide Ignored Requests"] = "Skrýt ignorované žádosti";
-App::$strings["Notification type: "] = "Typ oznámení:";
-App::$strings["Friend Suggestion"] = "Návrh přátelství";
-App::$strings["suggested by %s"] = "navrhl %s";
-App::$strings["Approve"] = "Schválit";
-App::$strings["Claims to be known to you: "] = "Vaši údajní známí:";
-App::$strings["yes"] = "ano";
-App::$strings["no"] = "ne";
-App::$strings["Approve as: "] = "Schválit jako:";
-App::$strings["Friend"] = "Přítel";
-App::$strings["Fan/Admirer"] = "Fanoušek / obdivovatel";
-App::$strings["Friend/Connect Request"] = "Přítel / žádost o připojení";
-App::$strings["New Follower"] = "Nový následovník";
-App::$strings["No notifications."] = "Žádné oznámení.";
-App::$strings["Invite Friends"] = "Pozvat přátele";
-App::$strings["%d invitation available"] = array(
- 0 => "Pozvánka %d k dispozici",
- 1 => "Pozvánky %d k dispozici",
- 2 => "Pozvánky %d k dispozici",
-);
-App::$strings["Find People With Shared Interests"] = "Najít lidi se spoleÄnými zájmy";
-App::$strings["Connect/Follow"] = "Připojit / Následovat";
-App::$strings["Example: bob@example.com, http://example.com/barbara"] = "Příklad: jan@příklad.cz, http://příklad.cz/jana";
-App::$strings["Follow"] = "Následovat";
-App::$strings["Could not access contact record."] = "Nelze získat přístup k záznamu kontaktu.";
-App::$strings["Could not locate selected profile."] = "Nelze nalézt vybraný profil.";
-App::$strings["Contact updated."] = "Kontakt aktualizován.";
-App::$strings["Contact has been blocked"] = "Kontakt byl zablokován";
-App::$strings["Contact has been unblocked"] = "Kontakt byl odblokován";
-App::$strings["Contact has been ignored"] = "Kontakt bude ignorován";
-App::$strings["Contact has been unignored"] = "Kontakt přestal být ignorován";
-App::$strings["stopped following"] = "následování zastaveno";
-App::$strings["Contact has been removed."] = "Kontakt byl odstraněn.";
-App::$strings["Mutual Friendship"] = "Vzájemné přátelství";
-App::$strings["is a fan of yours"] = "je Váš fanoušek";
-App::$strings["you are a fan of"] = "jste fanouškem";
-App::$strings["Privacy Unavailable"] = "Ochrana soukromí není k dispozici";
-App::$strings["Private communications are not available for this contact."] = "Soukromá komunikace není dostupná pro tento kontakt.";
-App::$strings["Never"] = "Nikdy";
-App::$strings["(Update was successful)"] = "(Aktualizace byla úspěšná)";
-App::$strings["(Update was not successful)"] = "(Aktualizace nebyla úspěšná)";
-App::$strings["Suggest friends"] = "Navrhněte přátelé";
-App::$strings["Contact Editor"] = "Editor kontaktu";
-App::$strings["Profile Visibility"] = "Viditelnost profilu";
-App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Vyberte prosím profil, který chcete zobrazit %s pÅ™i zabezpeÄeném prohlížení vaÅ¡eho profilu.";
-App::$strings["Contact Information / Notes"] = "Kontaktní informace / poznámky";
-App::$strings["Online Reputation"] = "Online pověst";
-App::$strings["Occasionally your friends may wish to inquire about this person's online legitimacy."] = "ObÄas mohou vaÅ¡i přátelé chtít informovat o online legitimitÄ› této osoby.";
-App::$strings["You may help them choose whether or not to interact with this person by providing a <em>reputation</em> to guide them."] = "Poskytnutím <em>povÄ›sti</em> jim můžete pomoci se rozhodnout, zda-li s touto osobou komunikovat Äi nikoliv.";
-App::$strings["Please take a moment to elaborate on this selection if you feel it could be helpful to others."] = "VÄ›nujte prosím chvilku vyplnÄ›ní této volby, pokud máte pocit, že by mohlo být užiteÄné pro ostatní.";
-App::$strings["Visit %s's profile [%s]"] = "Navštivte profil uživatele %s [%s]";
-App::$strings["Block/Unblock contact"] = "Blokovat / Odblokovat kontakt";
-App::$strings["Ignore contact"] = "Ignorovat kontakt";
-App::$strings["Repair contact URL settings"] = "Opravit nastavení URL kontaktu";
-App::$strings["Repair contact URL settings (WARNING: Advanced)"] = "Opravit nastavení URL kontaktu (Varování: PokroÄilé)";
-App::$strings["View conversations"] = "Zobrazit konverzace";
-App::$strings["Delete contact"] = "Odstranit kontakt";
-App::$strings["Last updated: "] = "Poslední aktualizace:";
-App::$strings["Update public posts: "] = "Aktualizace veřejných příspěvků:";
-App::$strings["Update now"] = "Aktualizovat";
-App::$strings["Unblock this contact"] = "Odblokovat tento kontakt";
-App::$strings["Block this contact"] = "Blokovat tento kontakt";
-App::$strings["Unignore this contact"] = "Přestat ignorovat tento kontakt";
-App::$strings["Ignore this contact"] = "Ignorovat tento kontakt";
-App::$strings["Currently blocked"] = "V souÄasnosti zablokováno";
-App::$strings["Currently ignored"] = "V souÄasnosti ignorováno";
-App::$strings["Contacts"] = "Kontakty";
-App::$strings["Show Blocked Connections"] = "Zobrazit blokované spojení";
-App::$strings["Hide Blocked Connections"] = "Skrýt blokované spojení";
-App::$strings["Finding: "] = "Zjištění: ";
-App::$strings["Find"] = "Najít";
-App::$strings["Edit contact"] = "Editovat kontakt";
-App::$strings["No valid account found."] = "Nenalezen žádný platný úÄet.";
-App::$strings["Password reset request issued. Check your email."] = "Žádost o obnovení hesla vyřízena. Zkontrolujte Vaši e-mailovou schránku.";
-App::$strings["Password reset requested at %s"] = "Na %s bylo zažádáno o resetování hesla";
-App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Žádost nemohla být ověřena. (Možná jste ji odeslali již dříve.) Obnovení hesla se nezdařilo.";
-App::$strings["Password Reset"] = "Obnovení hesla";
-App::$strings["Your password has been reset as requested."] = "Vaše heslo bylo na Vaše přání resetováno.";
-App::$strings["Your new password is"] = "Vaše nové heslo je";
-App::$strings["Save or copy your new password - and then"] = "Uložte si nebo zkopírujte nové heslo - a pak";
-App::$strings["click here to login"] = "klikněte zde pro přihlášení";
-App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Vaše heslo může být změněno na stránce <em>nastavení</em> po úspěšném přihlášení.";
-App::$strings["Forgot your Password?"] = "Zapomněli jste heslo?";
-App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Zadejte svůj e-mailovou adresu a odešlete žádost o zaslání Vašeho nového hesla. Poté zkontrolujte svůj e-mail pro další instrukce.";
-App::$strings["Nickname or Email: "] = "Přezdívka nebo e-mail:";
-App::$strings["Reset"] = "Reset";
-App::$strings["Passwords do not match. Password unchanged."] = "Hesla se neshodují. Heslo nebylo změněno.";
-App::$strings["Empty passwords are not allowed. Password unchanged."] = "Prázdné hesla nejsou povolena. Heslo nebylo změněno.";
-App::$strings["Password changed."] = "Heslo bylo změněno.";
-App::$strings["Password update failed. Please try again."] = "Aktualizace hesla se nezdařila. Zkuste to prosím znovu.";
-App::$strings["Failed to connect with email account using the settings provided."] = "NepodaÅ™ilo se pÅ™ipojit k e-mailovému úÄtu pomocí dodaného nastavení.";
-App::$strings[" Please use a shorter name."] = "Prosím použijte kratší jméno.";
-App::$strings[" Name too short."] = "Jméno je příliš krátké.";
-App::$strings[" Not valid email."] = "Neplatný e-mail.";
-App::$strings[" Cannot change to that email."] = "Nelze provést změnu na tento e-mail.";
-App::$strings["Settings updated."] = "Nastavení aktualizováno.";
-App::$strings["Account settings"] = "Nastavení úÄtu";
-App::$strings["Plugin settings"] = "Nastavení pluginu";
-App::$strings["No Plugin settings configured"] = "Žádný doplněk není nastaven";
-App::$strings["Plugin Settings"] = "Nastavení doplňku";
-App::$strings["Normal Account"] = "Normální úÄet";
-App::$strings["This account is a normal personal profile"] = "Tento úÄet je běžný osobní profil";
-App::$strings["Soapbox Account"] = "Soapbox úÄet";
-App::$strings["Automatically approve all connection/friend requests as read-only fans"] = "Automaticky schválit vÅ¡echna spojení / přátelství jako fanouÅ¡ky s právem pouze ke Ätení";
-App::$strings["Community/Celebrity Account"] = "Komunitní úÄet / ÚÄet celebrity";
-App::$strings["Automatically approve all connection/friend requests as read-write fans"] = "Automaticky schvalovat vÅ¡echny žádosti o spojení / přátelství, jako fanouÅ¡ky s právem ke Ätení.";
-App::$strings["Automatic Friend Account"] = "ÚÄet s automatickým schvalováním přátel";
-App::$strings["Automatically approve all connection/friend requests as friends"] = "Automaticky schvalovat všechny žádosti o spojení / přátelství jako přátele";
-App::$strings["OpenID:"] = "OpenID:";
-App::$strings["(Optional) Allow this OpenID to login to this account."] = "(Volitelné) Povolit OpenID pro pÅ™ihlášení k tomuto úÄtu.";
-App::$strings["Publish your default profile in your local site directory?"] = "Publikovat Váš výchozí profil v místním adresáři webu?";
-App::$strings["Publish your default profile in the global social directory?"] = "Publikovat Váš výchozí profil v globální sociálním adresáři?";
-App::$strings["Hide your contact/friend list from viewers of your default profile?"] = "Skrýt Vaše kontaktní údaje a seznam přátel před návštěvníky ve Vašem výchozím profilu?";
-App::$strings["Hide profile details and all your messages from unknown viewers?"] = "Skrýt detaily profilu a všechny zprávy před neznámými uživateli?";
-App::$strings["Profile is <strong>not published</strong>."] = "Profil <strong>není zveřejněn</strong>.";
-App::$strings["or"] = "nebo";
-App::$strings["Your Identity Address is"] = "Vaše adresa identity je";
-App::$strings["Account Settings"] = "Nastavení úÄtu";
-App::$strings["Export Personal Data"] = "Export osobních údajů";
-App::$strings["Password Settings"] = "Nastavení hesla";
-App::$strings["New Password:"] = "Nové heslo:";
-App::$strings["Confirm:"] = "PotvrÄte:";
-App::$strings["Leave password fields blank unless changing"] = "Pokud nechcete změnit heslo, položku hesla nevyplňujte";
-App::$strings["Basic Settings"] = "Základní nastavení";
-App::$strings["Full Name:"] = "Celé jméno:";
-App::$strings["Email Address:"] = "E-mailová adresa:";
-App::$strings["Your Timezone:"] = "VaÅ¡e Äasové pásmo:";
-App::$strings["Default Post Location:"] = "Výchozí umístění příspěvků:";
-App::$strings["Use Browser Location:"] = "Používat umístÄ›ní dle prohlížeÄe:";
-App::$strings["Display Theme:"] = "Vybrat grafickou Å¡ablonu:";
-App::$strings["Security and Privacy Settings"] = "Nastavení zabezpeÄení a soukromí";
-App::$strings["Maximum Friend Requests/Day:"] = "Maximální poÄet žádostí o přátelství za den:";
-App::$strings["(to prevent spam abuse)"] = "(Aby se zabránilo spamu)";
-App::$strings["Default Post Permissions"] = "Výchozí oprávnění pro příspěvek";
-App::$strings["(click to open/close)"] = "(Klikněte pro otevření/zavření)";
-App::$strings["Allow friends to post to your profile page:"] = "Povolit přátelům příspěvky na Vaši profilovou stránku:";
-App::$strings["Automatically expire posts after days:"] = "Po kolika dnech automaticky expirovat příspěvky:";
-App::$strings["If empty, posts will not expire. Expired posts will be deleted"] = "Pokud je prázdné, příspěvky nebudou nikdy expirovat. Expirované příspěvky budou vymazány";
-App::$strings["Notification Settings"] = "Nastavení notifikací";
-App::$strings["Send a notification email when:"] = "Poslat notifikaci e-mailem, když";
-App::$strings["You receive an introduction"] = "obdržíte žádost o propojení";
-App::$strings["Your introductions are confirmed"] = "Vaše žádosti jsou potvrzeny";
-App::$strings["Someone writes on your profile wall"] = "někdo Vám napíše na Vaši profilovou stránku";
-App::$strings["Someone writes a followup comment"] = "někdo Vám napíše následný komentář";
-App::$strings["You receive a private message"] = "obdržíte soukromou zprávu";
-App::$strings["Email/Mailbox Setup"] = "Nastavení e-mailu";
-App::$strings["If you wish to communicate with email contacts using this service (optional), please specify how to connect to your mailbox."] = "Pokud chcete komunikovat pomocí této služby s VaÅ¡imi kontakty z e-mailu (volitelné), uveÄte, jak se pÅ™ipojit k Vaší e-mailové schránce.";
-App::$strings["Last successful email check:"] = "Poslední úspěšná kontrola e-mailu:";
-App::$strings["Email access is disabled on this site."] = "Přístup k elektronické poště je na tomto serveru zakázán.";
-App::$strings["IMAP server name:"] = "jméno IMAP serveru:";
-App::$strings["IMAP port:"] = "IMAP port:";
-App::$strings["Security:"] = "ZabezpeÄení:";
-App::$strings["None"] = "Žádný";
-App::$strings["Email login name:"] = "přihlašovací jméno k e-mailu:";
-App::$strings["Email password:"] = "heslo k Vašemu e-mailu:";
-App::$strings["Reply-to address:"] = "Odpovědět na adresu:";
-App::$strings["Send public posts to all email contacts:"] = "Poslat veřejné příspěvky na všechny e-mailové kontakty:";
-App::$strings["Advanced Page Settings"] = "PokroÄilé nastavení stránky";
-App::$strings["Welcome back %s"] = "Vítejte zpět %s";
-App::$strings["Manage Identities and/or Pages"] = "Správa identit a / nebo stránek";
-App::$strings["(Toggle between different identities or community/group pages which share your account details.)"] = "(PÅ™epínání mezi různými identitami nebo komunitními / skupinovými stránkami, které sdílejí VaÅ¡e detaily úÄtu.)";
-App::$strings["Select an identity to manage: "] = "Vyberte identitu pro správu:";
-App::$strings["View Conversations"] = "Zobrazit konverzace";
-App::$strings["View New Items"] = "Zobrazit nové položky";
-App::$strings["View Any Items"] = "Zobrazit všechny položky";
-App::$strings["View Starred Items"] = "Zobrazit položky oznaÄené hvÄ›zdu";
-App::$strings["Warning: This group contains %s member from an insecure network."] = array(
- 0 => "UpozornÄ›ní: Tato skupina obsahuje %s Älena z nezabezpeÄené sítÄ›.",
- 1 => "UpozornÄ›ní: Tato skupina obsahuje %s Äleny z nezabezpeÄené sítÄ›.",
- 2 => "UpozornÄ›ní: Tato skupina obsahuje %s Äleny z nezabezpeÄené sítÄ›.",
-);
-App::$strings["Private messages to this group are at risk of public disclosure."] = "Soukromé zprávy této skupině jsou vystaveny riziku prozrazení.";
-App::$strings["No such group"] = "Žádná taková skupina";
-App::$strings["Group is empty"] = "Skupina je prázdná";
-App::$strings["Group: "] = "Skupina:";
-App::$strings["Contact: "] = "Kontakt:";
-App::$strings["Private messages to this person are at risk of public disclosure."] = "Soukromé zprávy této osobě jsou vystaveny riziku prozrazení.";
-App::$strings["Invalid contact."] = "Neplatný kontakt.";
-App::$strings["Save"] = "Uložit";
-App::$strings["Welcome to Friendika"] = "Vítejte na Friendika";
-App::$strings["New Member Checklist"] = "Seznam doporuÄení pro nového Älena";
-App::$strings["We would like to offer some tips and links to help make your experience enjoyable. Click any item to visit the relevant page."] = "Dovolujeme si Vám nabídnout některé tipy a odkazy, abychom Vám zpříjemnili práci se systémem Friendika. Kliknutím na libovolnou položku navštívit příslušnou stránku.";
-App::$strings["On your <em>Settings</em> page - change your initial password. Also make a note of your Identity Address. This will be useful in making friends."] = "Na stránce <em>Nastavení</em> - zmÄ›nit výchozí heslo. Poznamenejte si také adresu své identity. To může být užiteÄné pÅ™i navazování přátelství.";
-App::$strings["Review the other settings, particularly the privacy settings. An unpublished directory listing is like having an unlisted phone number. In general, you should probably publish your listing - unless all of your friends and potential friends know exactly how to find you."] = "ProhlédnÄ›te si další nastavení, a to zejména nastavení soukromí. NezveÅ™ejnÄ›ní svého úÄtu v adresáři je jako mít nezveÅ™ejnÄ›né telefonní Äíslo. ObecnÄ› platí, že je lepší mít svůj úÄet zveÅ™ejnÄ›ný, leda by vÅ¡ichni vaÅ¡i potenciální přátelé vÄ›dÄ›li, jak vás pÅ™esnÄ› najít.";
-App::$strings["Upload a profile photo if you have not done so already. Studies have shown that people with real photos of themselves are ten times more likely to make friends than people who do not."] = "Nahrajte si svou profilovou fotku, pokud jste tak již neuÄinili. Studie ukázaly, že lidé se skuteÄnými fotografiemi mají desetkrát ÄastÄ›ji přátele než lidé, kteří nemají.";
-App::$strings["Authorise the Facebook Connector if you currently have a Facebook account and we will (optionally) import all your Facebook friends and conversations."] = "Jestliže máte úÄet na Facebooku, povolte konektor na Facebook a bude možné (na přání) importovat vÅ¡echny VaÅ¡ přátele na Facebooku a vÅ¡echny VaÅ¡e konverzace.";
-App::$strings["Enter your email access information on your Settings page if you wish to import and interact with friends or mailing lists from your email INBOX"] = "na stránce Nastavení zadejte informace pro přístup k Vaší e-mailové stránce, pokud si pÅ™ejete importovat a komunikovat s přáteli nebo distribuÄními skupinami z Vaší e-mailové schránky";
-App::$strings["Edit your <strong>default</strong> profile to your liking. Review the settings for hiding your list of friends and hiding the profile from unknown visitors."] = "Upravit <strong>výchozí</strong> profil podle vašich představ. Prověřte nastavení pro skrytí Vašeho seznamu přátel a skrytí profilu před neznámými návštěvníky.";
-App::$strings["Set some public keywords for your default profile which describe your interests. We may be able to find other people with similar interests and suggest friendships."] = "Nastavte si nÄ›jaká veÅ™ejné klíÄová slova pro výchozí profil, která popisují vaÅ¡e zájmy. Friendika Vám může nalézt další lidi s podobnými zájmy a navrhnout přátelství.";
-App::$strings["Your Contacts page is your gateway to managing friendships and connecting with friends on other networks. Typically you enter their address or site URL in the <em>Connect</em> dialog."] = "Stránka Kontakty je Vaším odrazovým můstkem k řízení přátelství a spojení s kamarády v jiných sítích. Obvykle zadáte jejich adresu nebo adresu URL do dialogu <em>Připojit</em>.";
-App::$strings["The Directory page lets you find other people in this network or other federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on their profile page. Provide your own Identity Address if requested."] = "Stránka Adresář Vám pomůže najít další lidi na tomto serveru nebo v jiných propojených serverech. ProstÅ™ednictvím odkazů <em>PÅ™ipojení</em> nebo <em>Následovat</em> si prohlédnÄ›te jejich profilovou stránku. UveÄte svou vlastní adresu identity, je-li požadována.";
-App::$strings["Once you have made some friends, organize them into private conversation groups from the sidebar of your Contacts page and then you can interact with each group privately on your Network page."] = "Jakmile získáte nÄ›jaké přátele, uspořádejte si je do soukromých konverzaÄních skupin na postranním panelu vaší stránky Kontakty a pak můžete komunikovat s každou touto skupinu soukromÄ› prostÅ™ednictvím stránky Síť.";
-App::$strings["Our <strong>help</strong> pages may be consulted for detail on other program features and resources."] = "Na stránkách <strong>Nápověda</strong> naleznete nejen další podrobnosti o všech funkcích Friendika ale také další zdroje informací.";
-App::$strings["Item not available."] = "Položka není k dispozici.";
-App::$strings["Item was not found."] = "Položka nebyla nalezena.";
-App::$strings["Group created."] = "Skupina vytvořena.";
-App::$strings["Could not create group."] = "Nelze vytvořit skupinu.";
-App::$strings["Group not found."] = "Skupina nenalezena.";
-App::$strings["Group name changed."] = "Název skupiny byl změněn.";
-App::$strings["Permission denied"] = "NedostateÄné oprávnÄ›ní";
-App::$strings["Create a group of contacts/friends."] = "Vytvořit skupinu kontaktů / přátel.";
-App::$strings["Group Name: "] = "Název skupiny:";
-App::$strings["Group removed."] = "Skupina odstraněna. ";
-App::$strings["Unable to remove group."] = "Nelze odstranit skupinu.";
-App::$strings["Click on a contact to add or remove."] = "Klikněte na kontakt pro přidání nebo odebrání";
-App::$strings["Group Editor"] = "Editor skupin";
-App::$strings["Members"] = "Členové";
-App::$strings["All Contacts"] = "VÅ¡echny kontakty";
-App::$strings["Invalid profile identifier."] = "Neplatný identifikátor profilu.";
-App::$strings["Profile Visibility Editor"] = "Editor viditelnosti profilu ";
-App::$strings["Visible To"] = "Viditelný pro";
-App::$strings["All Contacts (with secure profile access)"] = "VÅ¡echny kontakty (se zabezpeÄeným přístupovým profilem )";
-App::$strings["View Contacts"] = "Zobrazit kontakty";
-App::$strings["No contacts."] = "Žádné kontakty.";
-App::$strings["An invitation is required."] = "Pozvánka je vyžadována.";
-App::$strings["Invitation could not be verified."] = "Pozvánka nemohla být ověřena.";
-App::$strings["Invalid OpenID url"] = "Neplatný odkaz OpenID";
-App::$strings["Please enter the required information."] = "Zadejte prosím požadované informace.";
-App::$strings["Please use a shorter name."] = "Použijte prosím kratší jméno.";
-App::$strings["Name too short."] = "Jméno je příliš krátké.";
-App::$strings["That doesn't appear to be your full (First Last) name."] = "Nezdá se, že by to bylo vaše celé jméno (křestní jméno a příjmení).";
-App::$strings["Your email domain is not among those allowed on this site."] = "Váš e-mailová doména není na tomto serveru mezi povolenými.";
-App::$strings["Not a valid email address."] = "Neplatná e-mailová adresa.";
-App::$strings["Cannot use that email."] = "Tento e-mail nelze použít.";
-App::$strings["Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and must also begin with a letter."] = "VaÅ¡e \"pÅ™ezdívka\" může obsahovat pouze \"a-z\", \"0-9\", \"-\", a \"_\", a musí zaÄínat písmenem.";
-App::$strings["Nickname is already registered. Please choose another."] = "Přezdívka je již registrována. Prosím vyberte jinou.";
-App::$strings["SERIOUS ERROR: Generation of security keys failed."] = "Závažná chyba: Generování bezpeÄnostních klíÄů se nezdaÅ™ilo.";
-App::$strings["An error occurred during registration. Please try again."] = "Došlo k chybě při registraci. Zkuste to prosím znovu.";
-App::$strings["An error occurred creating your default profile. Please try again."] = "Došlo k chybě při vytváření Vašeho výchozího profilu. Zkuste to prosím znovu.";
-App::$strings["Registration details for %s"] = "RegistraÄní údaje pro %s";
-App::$strings["Registration successful. Please check your email for further instructions."] = "Registrace úspěšná. Zkontrolujte prosím svůj e-mail pro další instrukce.";
-App::$strings["Failed to send email message. Here is the message that failed."] = "Nepodařilo se odeslat zprávu na e-mail. Zde je zpráva, která nebyla odeslána.";
-App::$strings["Your registration can not be processed."] = "Vaši registraci nelze zpracovat.";
-App::$strings["Registration request at %s"] = "Žádost o registraci na %s";
-App::$strings["Your registration is pending approval by the site owner."] = "VaÅ¡e registrace Äeká na schválení vlastníkem serveru.";
-App::$strings["You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "Tento formulář můžete (volitelnÄ›) vyplnit s pomocí OpenID tím, že vyplníte své OpenID a kliknutete na tlaÄítko 'Zaregistrovat'.";
-App::$strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "Pokud nepoužíváte OpenID, nechte prosím toto pole prázdné a vyplňte zbylé položky.";
-App::$strings["Your OpenID (optional): "] = "Vaše OpenID (nepovinné):";
-App::$strings["Include your profile in member directory?"] = "Uvést Váš profil v adresáři Älenů?";
-App::$strings["Membership on this site is by invitation only."] = "Členství na tomto webu je pouze na pozvání.";
-App::$strings["Your invitation ID: "] = "Vaše pozvání ID:";
-App::$strings["Registration"] = "Registrace";
-App::$strings["Your Full Name (e.g. Joe Smith): "] = "Vaše celé jméno (např. Jan Novák):";
-App::$strings["Your Email Address: "] = "Vaše e-mailová adresa:";
-App::$strings["Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be '<strong>nickname@\$sitename</strong>'."] = "Vyberte pÅ™ezdívku k profilu. Ta musí zaÄít s textovým znakem. VaÅ¡e profilová adresa na tomto webu pak bude \"<strong>pÅ™ezdívka@\$sitename</strong>\".";
-App::$strings["Choose a nickname: "] = "Vyberte přezdívku:";
-App::$strings["Register"] = "Registrovat";
-App::$strings["status"] = "Stav";
-App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s má rád %2\$s' na %3\$s";
-App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s nemá rád %2\$s na %3\$s";
-App::$strings["This is Friendika version"] = "Toto je Friendika verze";
-App::$strings["running at web location"] = "běžící na webu";
-App::$strings["Shared content within the Friendika network is provided under the <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons Attribution 3.0 license</a>"] = "Sdílený obsah v síti Friendika je poskytována pod <a href=\"http://creativecommons.org/licenses/by/3.0/cz/\">licencí Creative Commons Attribution 3.0</a>";
-App::$strings["Please visit <a href=\"http://project.friendika.com\">Project.Friendika.com</a> to learn more about the Friendika project."] = "Pokud se chcete dozvědět více o projektu Friendika, navštivte, prosím, <a href=\"http://project.friendika.com\">Project.Friendika.com</a>";
-App::$strings["Bug reports and issues: please visit"] = "Pro hlášení chyb a námětů na změny navštivte:";
-App::$strings["Suggestions, praise, donations, etc. - please email \"Info\" at Friendika - dot com"] = "Návrhy, chválu, dary, atd. - prosím poÅ¡lete na e-mail \"Info\" na Friendika teÄka com";
-App::$strings["Installed plugins/addons/apps"] = "Nainstalované doplňky/aplikace";
-App::$strings["No installed plugins/addons/apps"] = "Nejsou žádné nainstalované doplňky/aplikace";
-App::$strings["Account approved."] = "ÚÄet schválen.";
-App::$strings["Registration revoked for %s"] = "Registrace zrušena pro %s";
-App::$strings["Please login."] = "Přihlaste se, prosím.";
-App::$strings["Unable to locate original post."] = "Nelze nalézt původní příspěvek.";
-App::$strings["Empty post discarded."] = "Prázdný příspěvek odstraněn.";
-App::$strings["Wall Photos"] = "Fotografie na zdi";
-App::$strings["noreply"] = "bez odpovědi";
-App::$strings["Administrator@"] = "Administrator@";
-App::$strings["%s commented on an item at %s"] = "%s okomentoval položku v %s";
-App::$strings["%s posted to your profile wall at %s"] = "%s pÅ™idal příspÄ›vek na vaší profilovou zeÄ v %s";
-App::$strings["System error. Post not saved."] = "Chyba systému. Příspěvek nebyl uložen.";
-App::$strings["This message was sent to you by %s, a member of the Friendika social network."] = "Tuto zprávu Vám zaslal %s, Älen sociální sítÄ› Friendika.";
-App::$strings["You may visit them online at %s"] = "Můžete je navštívit online na adrese %s";
-App::$strings["Please contact the sender by replying to this post if you do not wish to receive these messages."] = "Pokud nechcete dostávat tyto zprávy, kontaktujte prosím odesilatele odpovědí na tento záznam.";
-App::$strings["%s posted an update."] = "%s poslal aktualizaci.";
-App::$strings["Image uploaded but image cropping failed."] = "Obrázek byl odeslán, ale jeho oříznutí se nesdařilo.";
-App::$strings["Image size reduction [%s] failed."] = "Nepodařilo se snížit velikost obrázku [%s].";
-App::$strings["Unable to process image"] = "Obrázek nelze zpracovat ";
-App::$strings["Image exceeds size limit of %d"] = "Obrázek pÅ™ekroÄil limit velikosti %d";
-App::$strings["Upload File:"] = "Nahrát soubor:";
-App::$strings["Upload Profile Photo"] = "Nahrát profilovou fotografii";
-App::$strings["Upload"] = "Nahrát";
-App::$strings["skip this step"] = "pÅ™eskoÄit tento krok ";
-App::$strings["select a photo from your photo albums"] = "Vybrat fotografii z Vašich fotoalb";
-App::$strings["Crop Image"] = "Oříznout obrázek";
-App::$strings["Please adjust the image cropping for optimum viewing."] = "Prosím, ořízněte tento obrázek pro optimální zobrazení.";
-App::$strings["Done Editing"] = "Editace dokonÄena";
-App::$strings["Image uploaded successfully."] = "Obrázek byl úspěšně nahrán.";
-App::$strings["No profile"] = "Žádný profil";
-App::$strings["Remove My Account"] = "Odstranit můj úÄet";
-App::$strings["This will completely remove your account. Once this has been done it is not recoverable."] = "Tímto bude kompletnÄ› odstranÄ›n váš úÄet. Jakmile bude úÄet odstranÄ›n, nebude už možné ho obnovit.";
-App::$strings["Please enter your password for verification:"] = "Prosím, zadejte své heslo pro ověření:";
-App::$strings["No recipient selected."] = "Nevybrán příjemce.";
-App::$strings["[no subject]"] = "[bez předmětu]";
-App::$strings["Unable to locate contact information."] = "Nepodařilo se najít kontaktní informace.";
-App::$strings["Message sent."] = "Zpráva odeslána.";
-App::$strings["Message could not be sent."] = "Zprávu se nepodařilo odeslat.";
-App::$strings["Messages"] = "Zprávy";
-App::$strings["Inbox"] = "DoruÄená poÅ¡ta";
-App::$strings["Outbox"] = "Odeslaná pošta";
-App::$strings["New Message"] = "Nová zpráva";
-App::$strings["Message deleted."] = "Zpráva odstraněna.";
-App::$strings["Conversation removed."] = "Konverzace odstraněna.";
-App::$strings["Please enter a link URL:"] = "Zadejte prosím URL odkaz:";
-App::$strings["Send Private Message"] = "Odeslat soukromou zprávu";
-App::$strings["To:"] = "Adresát:";
-App::$strings["Subject:"] = "Předmět:";
-App::$strings["Your message:"] = "Vaše zpráva:";
-App::$strings["No messages."] = "Žádné zprávy.";
-App::$strings["Delete conversation"] = "Odstranit konverzaci";
-App::$strings["D, d M Y - g:i A"] = "D M R - g:i A";
-App::$strings["Message not available."] = "Zpráva není k dispozici.";
-App::$strings["Delete message"] = "Smazat zprávu";
-App::$strings["Send Reply"] = "Poslat odpovÄ›Ä";
-App::$strings["Site"] = "Web";
-App::$strings["Users"] = "Uživatelé";
-App::$strings["Plugins"] = "Pluginy";
-App::$strings["Update"] = "Aktualizace";
-App::$strings["Logs"] = "Logy";
-App::$strings["User registrations waiting for confirmation"] = "Registrace uživatele Äeká na potvrzení";
-App::$strings["Item not found."] = "Položka nenalezena.";
-App::$strings["Administration"] = "Administrace";
-App::$strings["Summary"] = "Shrnutí";
-App::$strings["Registered users"] = "Registrovaní uživatelé";
-App::$strings["Pending registrations"] = "Čekající registrace";
-App::$strings["Version"] = "Verze";
-App::$strings["Active plugins"] = "Aktivní pluginy";
-App::$strings["Site settings updated."] = "Nastavení webu aktualizováno.";
-App::$strings["Closed"] = "Uzavřít";
-App::$strings["Requires approval"] = "Vyžaduje schválení";
-App::$strings["Open"] = "Otevřená";
-App::$strings["File upload"] = "Nahrání souborů";
-App::$strings["Policies"] = "Politiky";
-App::$strings["Advanced"] = "PokroÄilé";
-App::$strings["Site name"] = "Název webu";
-App::$strings["Banner/Logo"] = "Banner/logo";
-App::$strings["System language"] = "Systémový jazyk";
-App::$strings["System theme"] = "Grafická šablona systému ";
-App::$strings["Maximum image size"] = "Maximální velikost obrazu";
-App::$strings["Register policy"] = "Politika registrace";
-App::$strings["Register text"] = "Registrace textu";
-App::$strings["Allowed friend domains"] = "Povolené domény přátel";
-App::$strings["Allowed email domains"] = "Povolené e-mailové domény";
-App::$strings["Block public"] = "Blokovat veřejnost";
-App::$strings["Force publish"] = "Publikovat";
-App::$strings["Global directory update URL"] = "aktualizace URL adresy Globálního adresáře ";
-App::$strings["Block multiple registrations"] = "Blokovat více registrací";
-App::$strings["OpenID support"] = "podpora OpenID";
-App::$strings["Gravatar support"] = "podpora Gravatar";
-App::$strings["Fullname check"] = "kontrola úplného jména";
-App::$strings["UTF-8 Regular expressions"] = "UTF-8 Regulární výrazy";
-App::$strings["Show Community Page"] = "Zobrazit stránku komunity";
-App::$strings["Enable OStatus support"] = "Zapnout podporu OStatus";
-App::$strings["Only allow Friendika contacts"] = "Povolit pouze Friendika kontakty ";
-App::$strings["Verify SSL"] = "Ověřit SSL";
-App::$strings["Proxy user"] = "Proxy uživatel";
-App::$strings["Proxy URL"] = "Proxy URL adresa";
-App::$strings["Network timeout"] = "Äas síťového spojení vyprÅ¡elo (timeout)";
-App::$strings["%s user blocked"] = array(
- 0 => "%s uživatel zablokován",
- 1 => "%s uživatelů zablokováno / odblokováno",
- 2 => "%s uživatelů zablokováno / odblokováno",
-);
-App::$strings["%s user deleted"] = array(
- 0 => "%s uživatel smazán",
- 1 => "%s uživatelů smazáno",
- 2 => "%s uživatelů smazáno",
-);
-App::$strings["User '%s' deleted"] = "Uživatel '%s' smazán";
-App::$strings["User '%s' unblocked"] = "Uživatel '%s' odblokován";
-App::$strings["User '%s' blocked"] = "Uživatel '%s' blokován";
-App::$strings["select all"] = "Vybrat vše";
-App::$strings["User registrations waiting for confirm"] = "Registrace uživatele Äeká na potvrzení";
-App::$strings["Request date"] = "Datum žádosti";
-App::$strings["Email"] = "E-mail";
-App::$strings["No registrations."] = "Žádné registrace.";
-App::$strings["Deny"] = "Odmítnout";
-App::$strings["Block"] = "Blokovat";
-App::$strings["Unblock"] = "Odblokovat";
-App::$strings["Register date"] = "Datum registrace";
-App::$strings["Last login"] = "Datum posledního přihlášení";
-App::$strings["Last item"] = "Poslední položka";
-App::$strings["Account"] = "ÚÄet";
-App::$strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Vybraní uživatelé budou smazáni!\\n\\n VÅ¡e, co tito uživatelé na tÄ›chto stránkách vytvoÅ™ili, bude trvale odstranÄ›no!\\n\\n Opravdu pokraÄovat?";
-App::$strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Uživatel {0} bude smazán!\\n\\n VÅ¡e, co tento uživatel na tÄ›chto stránkách vytvoÅ™il, bude trvale odstranÄ›no!\\n\\n Opravdu pokraÄovat?";
-App::$strings["Plugin %s disabled."] = "Plugin %s zakázán.";
-App::$strings["Plugin %s enabled."] = "Plugin %s povolen.";
-App::$strings["Disable"] = "Zakázat";
-App::$strings["Enable"] = "Povolit";
-App::$strings["Toggle"] = "Přepnout";
-App::$strings["Settings"] = "Nastavení";
-App::$strings["Log settings updated."] = "Nastavení protokolu aktualizováno.";
-App::$strings["Clear"] = "VyÄistit";
-App::$strings["Debugging"] = "Ladění";
-App::$strings["Log file"] = "Soubor s logem";
-App::$strings["Must be writable by web server. Relative to your Friendika index.php."] = "Webový server musí mít práva zápisu . Relativní k index.php Friendika.";
-App::$strings["Log level"] = "Úroveň auditu";
-App::$strings["Close"] = "Uzavřená";
-App::$strings["FTP Host"] = "Hostitel FTP";
-App::$strings["FTP Path"] = "Cesta FTP";
-App::$strings["FTP User"] = "FTP uživatel";
-App::$strings["FTP Password"] = "FTP heslo";
-App::$strings["Access to this profile has been restricted."] = "Přístup na tento profil byl omezen.";
-App::$strings["Tips for New Members"] = "Tipy pro nové Äleny";
-App::$strings["Login failed."] = "Přihlášení se nezdařilo.";
-App::$strings["Welcome "] = "Vítejte ";
-App::$strings["Please upload a profile photo."] = "Prosím nahrejte profilovou fotografii";
-App::$strings["Welcome back "] = "Vítejte zpět ";
-App::$strings["This site is not configured to allow communications with other networks."] = "Tento web není nakonfigurován tak, aby umožňoval komunikaci s ostatními sítěmi.";
-App::$strings["No compatible communication protocols or feeds were discovered."] = "Nenalezen žádný kompatibilní komunikaÄní protokol nebo kanál.";
-App::$strings["The profile address specified does not provide adequate information."] = "Uvedená adresa profilu neposkytuje dostateÄné informace.";
-App::$strings["An author or name was not found."] = "Autor nebo jméno nenalezeno";
-App::$strings["No browser URL could be matched to this address."] = "Této adrese neodpovídá žádné URL prohlížeÄe.";
-App::$strings["The profile address specified belongs to a network which has been disabled on this site."] = "Zadaná adresa profilu patří do sítě, která byla na tomto serveru zakázána.";
-App::$strings["Limited profile. This person will be unable to receive direct/personal notifications from you."] = "Omezený profil. Tato osoba nebude schopna od Vás přijímat přímé / osobní sdělení.";
-App::$strings["Unable to retrieve contact information."] = "Nepodařilo se získat kontaktní informace.";
-App::$strings["following"] = "následující";
-App::$strings["Item has been removed."] = "Položka byla odstraněna.";
-App::$strings["New mail received at "] = "Přišel nový e-mail v";
-App::$strings["Applications"] = "Aplikace";
-App::$strings["No installed applications."] = "Žádné nainstalované aplikace.";
-App::$strings["Search"] = "Vyhledávání";
-App::$strings["Profile not found."] = "Profil nenalezen";
-App::$strings["Profile Name is required."] = "Jméno profilu je povinné.";
-App::$strings["Profile updated."] = "Profil aktualizován.";
-App::$strings["Profile deleted."] = "Profil smazán.";
-App::$strings["Profile-"] = "Profil-";
-App::$strings["New profile created."] = "Nový profil vytvořen.";
-App::$strings["Profile unavailable to clone."] = "Profil není možné naklonovat.";
-App::$strings["Hide your contact/friend list from viewers of this profile?"] = "Skrýt u tohoto profilu vaše kontakty / seznam přátel před před dalšími uživateli zobrazující si tento profil?";
-App::$strings["Edit Profile Details"] = "Upravit podrobnosti profilu ";
-App::$strings["View this profile"] = "Zobrazit tento profil";
-App::$strings["Create a new profile using these settings"] = "Vytvořit nový profil pomocí tohoto nastavení";
-App::$strings["Clone this profile"] = "Klonovat tento profil";
-App::$strings["Delete this profile"] = "Smazat tento profil";
-App::$strings["Profile Name:"] = "Jméno profilu:";
-App::$strings["Your Full Name:"] = "Vaše celé jméno:";
-App::$strings["Title/Description:"] = "Název / Popis:";
-App::$strings["Your Gender:"] = "Vaše pohlaví:";
-App::$strings["Birthday (%s):"] = "Narozeniny uživatele (%s):";
-App::$strings["Street Address:"] = "Ulice:";
-App::$strings["Locality/City:"] = "Město:";
-App::$strings["Postal/Zip Code:"] = "PSČ:";
-App::$strings["Country:"] = "ZemÄ›:";
-App::$strings["Region/State:"] = "Region / stát:";
-App::$strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Rodinný stav:";
-App::$strings["Who: (if applicable)"] = "Kdo: (pokud je možné)";
-App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Příklady: jan123, Jan Novák, jan@seznam.cz";
-App::$strings["Sexual Preference:"] = "Sexuální preference:";
-App::$strings["Homepage URL:"] = "Odkaz na domovskou stránku:";
-App::$strings["Political Views:"] = "Politické pÅ™esvÄ›dÄení:";
-App::$strings["Religious Views:"] = "Náboženské pÅ™esvÄ›dÄení:";
-App::$strings["Public Keywords:"] = "VeÅ™ejná klíÄová slova:";
-App::$strings["Private Keywords:"] = "Soukromá klíÄová slova:";
-App::$strings["Example: fishing photography software"] = "Příklad: fishing photography software";
-App::$strings["(Used for suggesting potential friends, can be seen by others)"] = "(Používá se pro doporuÄování potenciálních přátel, může být vidÄ›no ostatními)";
-App::$strings["(Used for searching profiles, never shown to others)"] = "(Používá se pro vyhledávání profilů, není nikdy zobrazeno ostatním)";
-App::$strings["Tell us about yourself..."] = "Řekněte nám něco o sobě ...";
-App::$strings["Hobbies/Interests"] = "KoníÄky/zájmy";
-App::$strings["Contact information and Social Networks"] = "Kontaktní informace a sociální sítě";
-App::$strings["Musical interests"] = "Hudební vkus";
-App::$strings["Books, literature"] = "Knihy, literatura";
-App::$strings["Television"] = "Televize";
-App::$strings["Film/dance/culture/entertainment"] = "Film/tanec/kultura/zábava";
-App::$strings["Love/romance"] = "Láska/romantika";
-App::$strings["Work/employment"] = "Práce/zaměstnání";
-App::$strings["School/education"] = "Škola/vzdělání";
-App::$strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "Toto je váš <strong>veřejný</strong> profil.<br />Ten <strong>může</strong> být viditelný kýmkoliv na internetu.";
-App::$strings["Age: "] = "Věk: ";
-App::$strings["Profiles"] = "Profily";
-App::$strings["Change profile photo"] = "Změnit profilovou fotografii";
-App::$strings["Create New Profile"] = "Vytvořit nový profil";
-App::$strings["Profile Image"] = "Profilový obrázek";
-App::$strings["visible to everybody"] = "viditelné pro všechny";
-App::$strings["Edit visibility"] = "Upravit viditelnost";
-App::$strings["Global Directory"] = "Globální adresář";
-App::$strings["Normal site view"] = "Normální zobrazení stránky";
-App::$strings["View all site entries"] = "Zobrazit všechny položky stránky";
-App::$strings["Site Directory"] = "Adresář serveru";
-App::$strings["Gender: "] = "Pohlaví: ";
-App::$strings["No entries (some entries may be hidden)."] = "Žádné záznamy (některé položky mohou být skryty).";
-App::$strings["%s : Not a valid email address."] = "%s : není platná e-mailová adresa.";
-App::$strings["Please join my network on %s"] = "Prosím, připojte se do mé sítě na %s";
-App::$strings["%s : Message delivery failed."] = "%s : DoruÄení zprávy se nezdaÅ™ilo.";
-App::$strings["%d message sent."] = array(
- 0 => "%d zpráva odeslána.",
- 1 => "%d zprávy odeslány.",
- 2 => "%d zprávy odeslány.",
-);
-App::$strings["You have no more invitations available"] = "Nemáte k dispozici žádné další pozvánky";
-App::$strings["Send invitations"] = "Poslat pozvánky";
-App::$strings["Enter email addresses, one per line:"] = "Zadejte e-mailové adresy, jednu na řádek:";
-App::$strings["Please join my social network on %s"] = "Prosím, připojte se do mé sociální sítě na %s";
-App::$strings["To accept this invitation, please visit:"] = "Chcete-li toto pozvání přijmout, navštivte prosím:";
-App::$strings["You will need to supply this invitation code: \$invite_code"] = "Budete muset zadat kód této pozvánky: \$invite_code";
-App::$strings["Once you have registered, please connect with me via my profile page at:"] = "Jakmile se zaregistrujete, prosím spojte se se mnou přes mou profilovu stránku na:";
-App::$strings["Response from remote site was not understood."] = "OdpovÄ›Ä ze vzdáleného serveru nebyla srozumitelná.";
-App::$strings["Unexpected response from remote site: "] = "NeoÄekávaná odpovÄ›Ä od vzdáleného serveru:";
-App::$strings["Confirmation completed successfully."] = "Potvrzení úspěšnÄ› dokonÄena.";
-App::$strings["Remote site reported: "] = "Vzdálený server oznámil:";
-App::$strings["Temporary failure. Please wait and try again."] = "DoÄasné selhání. Prosím, vyÄkejte a zkuste to znovu.";
-App::$strings["Introduction failed or was revoked."] = "Žádost o propojení selhala nebo byla zrušena.";
-App::$strings["Unable to set contact photo."] = "Nelze nastavit fotografii kontaktu.";
-App::$strings["%1\$s is now friends with %2\$s"] = "%1\$s je nyní přítel s %2\$s";
-App::$strings["No user record found for '%s' "] = "Pro '%s' nenalezen žádný uživatelský záznam ";
-App::$strings["Our site encryption key is apparently messed up."] = "Náš Å¡ifrovací klÃ­Ä zÅ™ejmÄ› pÅ™estal správnÄ› fungovat.";
-App::$strings["Empty site URL was provided or URL could not be decrypted by us."] = "Byla poskytnuta prázdná URL adresa nebo se nepodařilo URL adresu dešifrovat.";
-App::$strings["Contact record was not found for you on our site."] = "Kontakt záznam nebyl nalezen pro vás na našich stránkách.";
-App::$strings["The ID provided by your system is a duplicate on our system. It should work if you try again."] = "Váš systém poskytl duplicitní ID vůÄi naÅ¡emu systému. Pokuste se akci zopakovat.";
-App::$strings["Unable to set your contact credentials on our system."] = "Nelze nastavit Vaše přihlašovací údaje v našem systému.";
-App::$strings["Unable to update your contact profile details on our system"] = "Nelze aktualizovat Váš profil v našem systému";
-App::$strings["Connection accepted at %s"] = "Připojení přijato na %s";
-App::$strings["Facebook disabled"] = "Facebook zakázán";
-App::$strings["Updating contacts"] = "Aktualizace kontaktů";
-App::$strings["Facebook API key is missing."] = "Chybí Facebook API klíÄ.";
-App::$strings["Facebook Connect"] = "Facebook připojen";
-App::$strings["Install Facebook connector for this account."] = "Nainstalovat pro tento úÄet Facebook konektor.";
-App::$strings["Remove Facebook connector"] = "Odstranit konektor na Facebook";
-App::$strings["Post to Facebook by default"] = "Standardně posílat příspěvky na Facebook";
-App::$strings["Link all your Facebook friends and conversations"] = "Připojit všechny své přátele na Facebooku a konverzace";
-App::$strings["Warning: Your Facebook privacy settings can not be imported."] = "Upozornění: nastavení ochrany osobních údajů na Facebooku nelze importovat.";
-App::$strings["Linked Facebook items <strong>may</strong> be publicly visible, depending on your privacy settings for this website/account."] = "Propojené položky z Facebook <strong>mohou</strong> být veÅ™ejnÄ› viditelné, v závislosti na nastavení ochrany osobních údajů pro tuto webovou stránku/úÄet.";
-App::$strings["Facebook"] = "Facebook";
-App::$strings["Facebook Connector Settings"] = "Nastavení Facebook konektoru ";
-App::$strings["Post to Facebook"] = "Přidat příspěvek na Facebook";
-App::$strings["Post to Facebook cancelled because of multi-network access permission conflict."] = "Příspěvek na Facebook zrušen kvůli konfliktu přístupových práv mezi sítěmi.";
-App::$strings["Image: "] = "Obrázek: ";
-App::$strings["View on Friendika"] = "Pohled na Friendiku";
-App::$strings["Facebook post failed. Queued for retry."] = "Zaslání příspěvku na Facebook selhalo. Příspěvek byl zařazen do fronty pro opakované odeslání.";
-App::$strings["Generate new key"] = "Generovat nové klíÄe";
-App::$strings["Widgets key"] = "Widgety klíÄ";
-App::$strings["Widgets available"] = "Widgety k dispozici";
-App::$strings["Connect on Friendika!"] = "Spojit se na Friendice!";
-App::$strings["Three Dimensional Tic-Tac-Toe"] = "Trojrozměrné Tic-Tac-Toe";
-App::$strings["3D Tic-Tac-Toe"] = "3D Tic-Tac-Toe";
-App::$strings["New game"] = "Nová hra";
-App::$strings["New game with handicap"] = "Nová hra s handicapem";
-App::$strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = "TrojrozmÄ›rné tic-tac-toe je podobná této tradiÄní hÅ™e kromÄ› toho, že se hraje na více úrovních souÄasnÄ›.";
-App::$strings["In this case there are three levels. You win by getting three in a row on any level, as well as up, down, and diagonally across the different levels."] = "V tomto případě existují tři úrovně. Vyhrajete tím, že dostane tři v řadě na jakékoli úrovni, stejně jako nahoru, dolů a šikmo na různých úrovních.";
-App::$strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = "Hra s handicapem zakáže centrální pozici na stÅ™ední úrovni, protože hrÃ¡Ä zaujímající tuto polohu má Äasto nespravedlivou výhodu.";
-App::$strings["You go first..."] = "Vy zaÄnÄ›te ...";
-App::$strings["I'm going first this time..."] = "Tentokrát zaÄnu já...";
-App::$strings["You won!"] = "Vyhrál jste!";
-App::$strings["\"Cat\" game!"] = "\"KoÄiÄí\" hra!";
-App::$strings["I won!"] = "Vyhrál jsem!";
-App::$strings["Randplace Settings"] = "Randplace Nastavení";
-App::$strings["Enable Randplace Plugin"] = "Povolit Randplace Plugin";
-App::$strings["Upload a file"] = "Nahrát soubor";
-App::$strings["Drop files here to upload"] = "Přeneste sem soubory k nahrání";
-App::$strings["Failed"] = "Neúspěch";
-App::$strings["No files were uploaded."] = "Žádné soubory nebyly nahrány.";
-App::$strings["Uploaded file is empty"] = "Nahraný soubor je prázdný";
-App::$strings["File has an invalid extension, it should be one of "] = "Soubor má neplatnou příponu, ta by měla být jednou z";
-App::$strings["Upload was cancelled, or server error encountered"] = "Nahrávání bylo zrušeno nebo došlo k chybě na serveru";
-App::$strings["Impressum"] = "Impressum";
-App::$strings["Site Owner"] = "Vlastník webu";
-App::$strings["Email Address"] = "E-mailová adresa";
-App::$strings["Postal Address"] = "Poštovní adresa";
-App::$strings["The impressum addon needs to be configured!<br />Please add at least the <tt>owner</tt> variable to your config file. For other variables please refer to the README file of the addon."] = "DoplnÄ›k Impressum musí být nakonfigurován!<br/>Prosím, pÅ™idejte alespoň promÄ›nnou <tt>owner</tt> do konfiguraÄního souboru. Pro nastavení ostatních promÄ›nných se seznamte s nápovÄ›dou v souboru README tohoto doplňku.";
-App::$strings["Site Owners Profile"] = "Profil majitele webu";
-App::$strings["Notes"] = "Poznámky";
-App::$strings["OEmbed settings updated"] = "OEmbed nastavení aktualizováno";
-App::$strings["Use OEmbed for YouTube videos"] = "Použití OEmbed pro videa na YouTube";
-App::$strings["URL to embed:"] = "URL adresa k vložení:";
-App::$strings["Post to StatusNet"] = "Poslat příspěvek na StatusNet";
-App::$strings["Please contact your site administrator.<br />The provided API URL is not valid."] = "Obraťte se na administratora webu.<br />Poskytnutý odkaz na API není platný.";
-App::$strings["We could not contact the StatusNet API with the Path you entered."] = "S cestou, kterou jste zadali, se nebylo možné spojit s API StatusNetu.";
-App::$strings["StatusNet settings updated."] = "Nastavení StatusNetu aktualizováno.";
-App::$strings["StatusNet Posting Settings"] = "Nastavení zasílání příspěvků na StatusNet ";
-App::$strings["Globally Available StatusNet OAuthKeys"] = "GlobálnÄ› dostupné StatusNet OAuth klíÄe";
-App::$strings["There are preconfigured OAuth key pairs for some StatusNet servers available. If you are useing one of them, please use these credentials. If not feel free to connect to any other StatusNet instance (see below)."] = "Jsou dostupné pÅ™ednastavené OAuth páry klíÄů pro nÄ›které servery StatusNetu. Pokud používáte nÄ›který z nich, použijte toto pÅ™ihlášení. Pokud ne, neváhejte se pÅ™ipojit k jiné instanci StatusNet (viz níže).";
-App::$strings["Provide your own OAuth Credentials"] = "UveÄte své vlastní OAuth pÅ™ihlaÅ¡ovací údaje";
-App::$strings["No consumer key pair for StatusNet found. Register your Friendika Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendika installation at your favorited StatusNet installation."] = "Nenalezen žádný consumer pár klíÄů pro StatusNet. Zaregistrujte svůj Friendika úÄet jako desktopový klient na svém úÄtu StatusNetu, zkopírujte níže consumer pár klíÄů a zadejte API base root.<br />Než si zaregistrujete svůj vlastní pár klíÄů OAuth, zjistÄ›te si od administrátora, zda-li už náhodou na tento Friendika server nepÅ™idal pár klíÄů pro vámi požadovanou instalaci StatusNetu.";
-App::$strings["OAuth Consumer Key"] = "OAuth Consumer Key";
-App::$strings["OAuth Consumer Secret"] = "OAuth Consumer Secret";
-App::$strings["Base API Path (remember the trailing /)"] = "Cesta k Base API (nezapomeňte na koncový /)";
-App::$strings["To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet."] = "Chcete-li pÅ™ipojit k vaÅ¡emu úÄtu StatusNet kliknÄ›te na tlaÄítko níže, abyste dostati bezpeÄnostní kód ze StatusNetu, který musíte zkopírovat do vstupního pole níže a odelat formulář. Pouze VaÅ¡e <strong>veÅ™ejné</strong> příspÄ›vky budou zveÅ™ejnÄ›ny na StatusNetu.";
-App::$strings["Log in with StatusNet"] = "Přihlásit se s StatusNet";
-App::$strings["Copy the security code from StatusNet here"] = "Zkopírujte sem bezpeÄnostní kód ze StatusNet";
-App::$strings["Cancel Connection Process"] = "Zrušit připojování";
-App::$strings["Current StatusNet API is"] = "Aktuální StatusNet API je";
-App::$strings["Cancel StatusNet Connection"] = "Zrušit StatusNet připojení";
-App::$strings["Currently connected to: "] = "V souÄasné dobÄ› pÅ™ipojen k:";
-App::$strings["If enabled all your <strong>public</strong> postings can be posted to the associated StatusNet account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Je-li povoleno, vÅ¡echny VaÅ¡e <strong>veÅ™ejné</strong> příspÄ›vky mohou být zaslány na související StatusNet úÄet. Můžete si vybrat, zda-li toto bude výchozí nastavení (zde), nebo budete mít možnost si vybrat požadované chování pÅ™i psaní každého příspÄ›vku.";
-App::$strings["Allow posting to StatusNet"] = "Povolit zasílání příspěvků na StatusNet";
-App::$strings["Send public postings to StatusNet by default"] = "Standardně poslílat veřejné příspěvky na StatusNet";
-App::$strings["Clear OAuth configuration"] = "Vymazat konfiguraci OAuth";
-App::$strings["API URL"] = "API URL";
-App::$strings["Consumer Secret"] = "Consumer Secret";
-App::$strings["Consumer Key"] = "Consumer Key";
-App::$strings["Piwik Base URL"] = "Piwik Base adresa URL";
-App::$strings["Site ID"] = "ID webu";
-App::$strings["Show opt-out cookie link?"] = "Zobrazit odkaz opt-out cookie?";
-App::$strings["Post to Twitter"] = "Poslat příspěvek na Twitter";
-App::$strings["Twitter settings updated."] = "Nastavení Twitteru aktualizováno.";
-App::$strings["Twitter Posting Settings"] = "Nastavení zasílání příspěvků na Twitter ";
-App::$strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "Nenalezen žádný spotÅ™ebitelský páru klíÄů pro Twitter. ObraÅ¥te se na administrátora webu.";
-App::$strings["At this Friendika instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "Na tomto Friendika serveru je Twitter plugin povolen, ale jeÅ¡tÄ› nemáte svůj úÄet pÅ™ipojen ke svému Twitter úÄtu. Chcete-li tak uÄinit, klepnutím na tlaÄítko níže získejte PIN z Twitteru, který musíte zkopírovat do vstupního pole níže a odeÅ¡lete formulář. Pouze VaÅ¡e <strong>veÅ™ejné</strong> příspÄ›vky budou zveÅ™ejnÄ›ny na Twitteru.";
-App::$strings["Log in with Twitter"] = "Přihlásit se s Twitter";
-App::$strings["Copy the PIN from Twitter here"] = "Zkopírujte sem PIN z Twitteru";
-App::$strings["If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Je-li povoleno, vÅ¡echny VaÅ¡e <strong>veÅ™ejné</strong> příspÄ›vky mohou být zaslány na související Twitter úÄet. Můžete si vybrat, zda-li toto bude výchozí nastavení (zde), nebo budete mít možnost si vybrat požadované chování pÅ™i psaní každého příspÄ›vku.";
-App::$strings["Allow posting to Twitter"] = "Povolit odesílání na Twitter";
-App::$strings["Send public postings to Twitter by default"] = "Defaultně zasílat veřejné komentáře na Twitter";
-App::$strings["Consumer key"] = "Consumer key";
-App::$strings["Consumer secret"] = "Consumer secret";
-App::$strings["Gender:"] = "Pohlaví:";
-App::$strings["Birthday:"] = "Narozeniny:";
-App::$strings["j F, Y"] = "j F, Y";
-App::$strings["j F"] = "j F";
-App::$strings["Age:"] = "Věk:";
-App::$strings["<span class=\"heart\">&hearts;</span> Status:"] = "<span class=\"heart\">&hearts;</span> Status:";
-App::$strings["Homepage:"] = "Domácí stránka:";
-App::$strings["Religion:"] = "Náboženství:";
-App::$strings["About:"] = "O mÄ›:";
-App::$strings["Hobbies/Interests:"] = "KoníÄky/zájmy:";
-App::$strings["Contact information and Social Networks:"] = "Kontaktní informace a sociální sítě:";
-App::$strings["Musical interests:"] = "Hudební vkus:";
-App::$strings["Books, literature:"] = "Knihy, literatura:";
-App::$strings["Television:"] = "Televize:";
-App::$strings["Film/dance/culture/entertainment:"] = "Film/tanec/kultura/zábava:";
-App::$strings["Love/Romance:"] = "Láska/romance";
-App::$strings["Work/employment:"] = "Práce/zaměstnání:";
-App::$strings["School/education:"] = "Škola/vzdělávání:";
-App::$strings["Unknown | Not categorised"] = "Neznámé | Nezařazeno";
-App::$strings["Block immediately"] = "Okamžitě blokovat ";
-App::$strings["Shady, spammer, self-marketer"] = "pochybný, spammer, self-makerter";
-App::$strings["Known to me, but no opinion"] = "Znám ho ale, ale bez rozhodnutí";
-App::$strings["OK, probably harmless"] = "OK, pravděpodobně neškodný";
-App::$strings["Reputable, has my trust"] = "Renomovaný, má mou důvěru";
-App::$strings["Frequently"] = "ÄŒasto";
-App::$strings["Hourly"] = "každou hodinu";
-App::$strings["Twice daily"] = "Dvakrát denně";
-App::$strings["Daily"] = "dennÄ›";
-App::$strings["Weekly"] = "Týdenně";
-App::$strings["Monthly"] = "MÄ›síÄnÄ›";
-App::$strings["Male"] = "Muž";
-App::$strings["Female"] = "Žena";
-App::$strings["Currently Male"] = "V souÄasné dobÄ› muž";
-App::$strings["Currently Female"] = "V souÄasné dobÄ› žena";
-App::$strings["Mostly Male"] = "Většinou muž";
-App::$strings["Mostly Female"] = "Většinou žena";
-App::$strings["Transgender"] = "Transgender";
-App::$strings["Intersex"] = "Intersex";
-App::$strings["Transsexual"] = "Transexuál";
-App::$strings["Hermaphrodite"] = "Hermafrodit";
-App::$strings["Neuter"] = "Neutrál";
-App::$strings["Non-specific"] = "Nespecifikováno";
-App::$strings["Other"] = "Jiné";
-App::$strings["Undecided"] = "Nerozhodnuto";
-App::$strings["Males"] = "Muži";
-App::$strings["Females"] = "Ženy";
-App::$strings["Gay"] = "Gay";
-App::$strings["Lesbian"] = "LesbiÄka";
-App::$strings["No Preference"] = "Bez preferencí";
-App::$strings["Bisexual"] = "Bisexuál";
-App::$strings["Autosexual"] = "Autosexuál";
-App::$strings["Abstinent"] = "Abstinent";
-App::$strings["Virgin"] = "panic/panna";
-App::$strings["Deviant"] = "Deviant";
-App::$strings["Fetish"] = "Fetišista";
-App::$strings["Oodles"] = "HodnÄ›";
-App::$strings["Nonsexual"] = "Nesexuální";
-App::$strings["Single"] = "Svobodný";
-App::$strings["Lonely"] = "Osamnělý";
-App::$strings["Available"] = "Dostupný";
-App::$strings["Unavailable"] = "Nedostupný";
-App::$strings["Dating"] = "Seznamující se";
-App::$strings["Unfaithful"] = "Nevěrný";
-App::$strings["Sex Addict"] = "Závislý na sexu";
-App::$strings["Friends"] = "Přátelé";
-App::$strings["Friends/Benefits"] = "Přátelé / výhody";
-App::$strings["Casual"] = "Ležérní";
-App::$strings["Engaged"] = "Zadaný";
-App::$strings["Married"] = "Ženatý/vdaná";
-App::$strings["Partners"] = "Partneři";
-App::$strings["Cohabiting"] = "Žijící ve spoleÄné domácnosti";
-App::$strings["Happy"] = "Šťastný";
-App::$strings["Not Looking"] = "Nehledající";
-App::$strings["Swinger"] = "Swinger";
-App::$strings["Betrayed"] = "Zrazen";
-App::$strings["Separated"] = "OdlouÄený";
-App::$strings["Unstable"] = "Nestálý";
-App::$strings["Divorced"] = "Rozvedený(á)";
-App::$strings["Widowed"] = "Ovdovělý(á)";
-App::$strings["Uncertain"] = "Nejistý";
-App::$strings["Complicated"] = "Komplikovaný";
-App::$strings["Don't care"] = "Nezajímá";
-App::$strings["Ask me"] = "Zeptej se mÄ›";
-App::$strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
-App::$strings["Starts:"] = "ZaÄíná:";
-App::$strings["Finishes:"] = "KonÄí:";
-App::$strings["prev"] = "předchozí";
-App::$strings["first"] = "první";
-App::$strings["last"] = "poslední";
-App::$strings["next"] = "další";
-App::$strings["No contacts"] = "Žádné kontakty";
-App::$strings["%d Contact"] = array(
- 0 => "%d kontakt",
- 1 => "%d kontaktů",
- 2 => "%d kontaktů",
-);
-App::$strings["Monday"] = "Pondělí";
-App::$strings["Tuesday"] = "Úterý";
-App::$strings["Wednesday"] = "Středa";
-App::$strings["Thursday"] = "ÄŒtvrtek";
-App::$strings["Friday"] = "Pátek";
-App::$strings["Saturday"] = "Sobota";
-App::$strings["Sunday"] = "Neděle";
-App::$strings["January"] = "Ledna";
-App::$strings["February"] = "Února";
-App::$strings["March"] = "Března";
-App::$strings["April"] = "Dubna";
-App::$strings["May"] = "Května";
-App::$strings["June"] = "ÄŒervna";
-App::$strings["July"] = "ÄŒervence";
-App::$strings["August"] = "Srpna";
-App::$strings["September"] = "Září";
-App::$strings["October"] = "Října";
-App::$strings["November"] = "Listopadu";
-App::$strings["December"] = "Prosince";
-App::$strings["bytes"] = "bytů";
-App::$strings["Select an alternate language"] = "Vyběr alternativního jazyka";
-App::$strings["Sharing notification from Diaspora network"] = "Sdílení oznámení ze sítě Diaspora";
-App::$strings["Embedding disabled"] = "Vkládání zakázáno";
-App::$strings["Create a new group"] = "Vytvořit novou skupinu";
-App::$strings["Everybody"] = "VÅ¡ichni";
-App::$strings["Logout"] = "Odhlásit se";
-App::$strings["End this session"] = "Konec této relace";
-App::$strings["Login"] = "Přihlásit se";
-App::$strings["Sign in"] = "Přihlásit se";
-App::$strings["Home"] = "Domů";
-App::$strings["Home Page"] = "Domácí stránka";
-App::$strings["Create an account"] = "VytvoÅ™it úÄet";
-App::$strings["Help and documentation"] = "Nápověda a dokumentace";
-App::$strings["Apps"] = "Aplikace";
-App::$strings["Addon applications, utilities, games"] = "Doplňkové aplikace, nástroje, hry";
-App::$strings["Search site content"] = "Hledání na stránkách tohoto webu";
-App::$strings["Conversations on this site"] = "Konverzace na tomto webu";
-App::$strings["Directory"] = "Adresář";
-App::$strings["People directory"] = "Adresář";
-App::$strings["Network"] = "Síť";
-App::$strings["Conversations from your friends"] = "Konverzace od Vašich přátel";
-App::$strings["Your posts and conversations"] = "Vaše příspěvky a konverzace";
-App::$strings["Notifications"] = "Upozornění";
-App::$strings["Friend requests"] = "Požadavky přátelství";
-App::$strings["Private mail"] = "Soukromá pošta";
-App::$strings["Manage"] = "Spravovat";
-App::$strings["Manage other pages"] = "Spravovat jiné stránky";
-App::$strings["Manage/edit profiles"] = "Spravovat/upravit profily";
-App::$strings["Manage/edit friends and contacts"] = "Spravovat/upravit přátelé a kontakty";
-App::$strings["Admin"] = "Administrace";
-App::$strings["Site setup and configuration"] = "Nastavení webu a konfigurace";
-App::$strings["Logged out."] = "Odhlášen.";
-App::$strings["Miscellaneous"] = "Různé";
-App::$strings["year"] = "rok";
-App::$strings["month"] = "měsíc";
-App::$strings["day"] = "den";
-App::$strings["never"] = "nikdy";
-App::$strings["less than a second ago"] = "méně než před sekundou";
-App::$strings["years"] = "let";
-App::$strings["months"] = "měsíců";
-App::$strings["week"] = "týden";
-App::$strings["weeks"] = "týdny";
-App::$strings["days"] = "dnů";
-App::$strings["hour"] = "hodina";
-App::$strings["hours"] = "hodin";
-App::$strings["minute"] = "minuta";
-App::$strings["minutes"] = "minut";
-App::$strings["second"] = "sekunda";
-App::$strings["seconds"] = "sekund";
-App::$strings[" ago"] = " nazpět";
-App::$strings["From: "] = "Od:";
-App::$strings["Image/photo"] = "Obrázek/fotografie";
-App::$strings["Cannot locate DNS info for database server '%s'"] = "Nelze nalézt záznam v DNS pro databázový server '%s'";
-App::$strings["Visible to everybody"] = "Viditelné pro všechny";
-App::$strings["show"] = "zobrazit";
-App::$strings["don't show"] = "nikdy nezobrazit";
-App::$strings["(no subject)"] = "(Bez předmětu)";
-App::$strings["You have a new follower at "] = "Máte nového následovníka na";
-App::$strings["event"] = "událost";
-App::$strings["View %s's profile"] = "Zobrazit %s profilu";
-App::$strings["%s from %s"] = "%s od %s";
-App::$strings["View in context"] = "Pohled v kontextu";
-App::$strings["See more posts like this"] = "Zobrazit více podobných příspěvků";
-App::$strings["See all %d comments"] = "Zobrazit všechny komentáře %d";
-App::$strings["Select"] = "Vybrat";
-App::$strings["toggle star status"] = "přepnout hvězdu";
-App::$strings["to"] = "pro";
-App::$strings["Wall-to-Wall"] = "ZeÄ-na-ZeÄ";
-App::$strings["via Wall-To-Wall:"] = "pÅ™es ZeÄ-na-ZeÄ ";
-App::$strings["Delete Selected Items"] = "Smazat vybrané položky";
-App::$strings["View status"] = "Zobrazit stav";
-App::$strings["View profile"] = "Zobrazit profil";
-App::$strings["View photos"] = "Zobrazit fotografie";
-App::$strings["View recent"] = "Zobrazit poslední";
-App::$strings["Send PM"] = "Poslat soukromou zprávu";
-App::$strings["%s likes this."] = "%s se to líbí.";
-App::$strings["%s doesn't like this."] = "%s se to nelíbí.";
-App::$strings["<span %1\$s>%2\$d people</span> like this."] = "<span %1\$s>%2\$d lidem</span> se to líbí.";
-App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = "<span %1\$s>%2\$d lidem</span> se to nelíbí.";
-App::$strings["and"] = "a";
-App::$strings[", and %d other people"] = ", a %d dalších lidí";
-App::$strings["%s like this."] = "%s se to líbí.";
-App::$strings["%s don't like this."] = "%s se to nelíbí.";
-App::$strings["Visible to <strong>everybody</strong>"] = "Viditelné pro <strong>všechny</strong>";
-App::$strings["Please enter a YouTube link:"] = "Prosím zadejte odkaz na YouTube:";
-App::$strings["Please enter a video(.ogg) link/URL:"] = "Prosím, zadejte odkaz na video (ogg.):";
-App::$strings["Please enter an audio(.ogg) link/URL:"] = "Prosím, zadejte odkaz na audio (ogg.):";
-App::$strings["Where are you right now?"] = "Kde právě jste?";
-App::$strings["Enter a title for this item"] = "Zadejte titulek pro tuto položku";
-App::$strings["Set title"] = "Nastavit titulek";
-App::$strings["Delete this item?"] = "Odstranit tuto položku?";
-App::$strings["Create a New Account"] = "VytvoÅ™it nový úÄet";
-App::$strings["Nickname or Email address: "] = "Přezdívka nebo e-mailová adresa:";
-App::$strings["Password: "] = "Heslo: ";
-App::$strings["Nickname/Email/OpenID: "] = "Přezdívka/E-mail/OpenID: ";
-App::$strings["Password (if not OpenID): "] = "Heslo (pokud se nepoužívá OpenID):";
-App::$strings["Forgot your password?"] = "Zapomněli jste své heslo?";
-App::$strings["Connect"] = "Spojit";
-App::$strings[", "] = ", ";
-App::$strings["Status:"] = "Status:";
-App::$strings["g A l F d"] = "g A l F d";
-App::$strings["Birthday Reminders"] = "Připomínka narozenin";
-App::$strings["Birthdays this week:"] = "Narozeniny tento týden:";
-App::$strings["(Adjusted for local time)"] = "(Upraveno pro místní Äas)";
-App::$strings["[today]"] = "[Dnes]";
-App::$strings["Not Found"] = "Nenalezen";
-App::$strings["Page not found."] = "Stránka nenalezena";
diff --git a/view/cs/update_fail_eml.tpl b/view/cs/update_fail_eml.tpl
deleted file mode 100644
index 61f44b1e6..000000000
--- a/view/cs/update_fail_eml.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
-Hey,
-I'm the web server at {{$sitename}};
-
-The Hubzilla developers released update {{$update}} recently,
-but when I tried to install it, something went terribly wrong.
-This needs to be fixed soon and it requires human intervention.
-Please contact a Red developer if you can not figure out how to
-fix it on your own. My database might be invalid.
-
-The error message is '{{$error}}'.
-
-Apologies for the inconvenience,
- your web server at {{$siteurl}} \ No newline at end of file
diff --git a/view/css/bootstrap-red.css b/view/css/bootstrap-red.css
index 73d77bb93..26321ab3c 100644
--- a/view/css/bootstrap-red.css
+++ b/view/css/bootstrap-red.css
@@ -59,6 +59,10 @@ aside .nav-pills > li > a,
padding: 6px 10px;
}
+.wall-item-tools .dropdown-menu {
+ min-width: auto;
+}
+
.dropdown-menu li a {
overflow: hidden;
text-overflow: ellipsis;
diff --git a/view/css/conversation.css b/view/css/conversation.css
index 9b99efba4..b6e316121 100644
--- a/view/css/conversation.css
+++ b/view/css/conversation.css
@@ -1,11 +1,3 @@
-/* common */
-
-code {
- font-family: Courier, monospace;
- display: block;
- overflow: auto;
-}
-
/* jot */
.jothidden input {
@@ -305,6 +297,23 @@ a.wall-item-name-link {
/* bb-code */
+code {
+ font-family: Courier, monospace;
+ font-size: 1em;
+ padding: 1em 1.5em;
+ display: block;
+}
+
+code.inline-code {
+ padding: 0px 4px;
+ display: inline;
+}
+
.overline {
text-decoration: overline;
}
+
+img.smiley.emoji:hover {
+ width: 32px;
+ height: 32px;
+} \ No newline at end of file
diff --git a/view/de/hmessages.po b/view/de/hmessages.po
index b91a54d6b..5c3b981ad 100644
--- a/view/de/hmessages.po
+++ b/view/de/hmessages.po
@@ -23,8 +23,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-04-22 00:01-0700\n"
-"PO-Revision-Date: 2016-04-22 17:48+0000\n"
+"POT-Creation-Date: 2016-06-10 00:02-0700\n"
+"PO-Revision-Date: 2016-06-15 09:43+0000\n"
"Last-Translator: Phellmes <forum@suschka.de>\n"
"Language-Team: German (http://www.transifex.com/Friendica/red-matrix/language/de/)\n"
"MIME-Version: 1.0\n"
@@ -37,7 +37,7 @@ msgstr ""
msgid "parent"
msgstr "Ãœbergeordnetes Verzeichnis"
-#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2633
+#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2620
msgid "Collection"
msgstr "Sammlung"
@@ -61,16 +61,16 @@ msgstr "Posteingang für überwachte Kalender"
msgid "Schedule Outbox"
msgstr "Postausgang für überwachte Kalender"
-#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Module/Photos.php:797
-#: ../../Zotlabs/Module/Photos.php:1241 ../../include/apps.php:360
-#: ../../include/apps.php:415 ../../include/conversation.php:1037
-#: ../../include/widgets.php:1457
+#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Module/Photos.php:798
+#: ../../Zotlabs/Module/Photos.php:1243 ../../Zotlabs/Lib/Apps.php:486
+#: ../../Zotlabs/Lib/Apps.php:561 ../../include/widgets.php:1505
+#: ../../include/conversation.php:1032
msgid "Unknown"
msgstr "Unbekannt"
#: ../../Zotlabs/Storage/Browser.php:226 ../../Zotlabs/Module/Fbrowser.php:85
-#: ../../include/apps.php:135 ../../include/conversation.php:1657
-#: ../../include/nav.php:93
+#: ../../Zotlabs/Lib/Apps.php:216 ../../include/nav.php:93
+#: ../../include/conversation.php:1639
msgid "Files"
msgstr "Dateien"
@@ -82,23 +82,23 @@ msgstr "Summe"
msgid "Shared"
msgstr "Geteilt"
-#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:303
-#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:180
+#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:306
+#: ../../Zotlabs/Module/Blocks.php:156 ../../Zotlabs/Module/Layouts.php:182
#: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/New_channel.php:142
-#: ../../Zotlabs/Module/Webpages.php:188
+#: ../../Zotlabs/Module/Webpages.php:186
msgid "Create"
msgstr "Erstelle"
-#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:305
+#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:308
#: ../../Zotlabs/Module/Cover_photo.php:357
-#: ../../Zotlabs/Module/Photos.php:824 ../../Zotlabs/Module/Photos.php:1365
-#: ../../Zotlabs/Module/Profile_photo.php:368 ../../include/widgets.php:1470
+#: ../../Zotlabs/Module/Photos.php:825 ../../Zotlabs/Module/Photos.php:1364
+#: ../../Zotlabs/Module/Profile_photo.php:368 ../../include/widgets.php:1518
msgid "Upload"
msgstr "Hochladen"
-#: ../../Zotlabs/Storage/Browser.php:235 ../../Zotlabs/Module/Admin.php:1166
-#: ../../Zotlabs/Module/Chat.php:245 ../../Zotlabs/Module/Settings.php:590
-#: ../../Zotlabs/Module/Settings.php:616
+#: ../../Zotlabs/Storage/Browser.php:235 ../../Zotlabs/Module/Chat.php:247
+#: ../../Zotlabs/Module/Admin.php:1223 ../../Zotlabs/Module/Settings.php:592
+#: ../../Zotlabs/Module/Settings.php:618
#: ../../Zotlabs/Module/Sharedwithme.php:99
msgid "Name"
msgstr "Name"
@@ -108,7 +108,7 @@ msgid "Type"
msgstr "Typ"
#: ../../Zotlabs/Storage/Browser.php:237
-#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1293
+#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1344
msgid "Size"
msgstr "Größe"
@@ -117,121 +117,127 @@ msgstr "Größe"
msgid "Last Modified"
msgstr "Zuletzt geändert"
-#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Admin.php:1775
-#: ../../Zotlabs/Module/Blocks.php:159
+#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Blocks.php:157
+#: ../../Zotlabs/Module/Editblock.php:109
#: ../../Zotlabs/Module/Connections.php:290
#: ../../Zotlabs/Module/Connections.php:310
-#: ../../Zotlabs/Module/Editblock.php:140
-#: ../../Zotlabs/Module/Editlayout.php:139
-#: ../../Zotlabs/Module/Editpost.php:118
-#: ../../Zotlabs/Module/Editwebpage.php:181
-#: ../../Zotlabs/Module/Layouts.php:188 ../../Zotlabs/Module/Menu.php:112
-#: ../../Zotlabs/Module/Settings.php:650 ../../Zotlabs/Module/Thing.php:260
-#: ../../Zotlabs/Module/Webpages.php:189 ../../include/identity.php:930
-#: ../../include/identity.php:934 ../../include/ItemObject.php:100
-#: ../../include/apps.php:259 ../../include/menu.php:108
-#: ../../include/page_widgets.php:8 ../../include/page_widgets.php:36
+#: ../../Zotlabs/Module/Editpost.php:84
+#: ../../Zotlabs/Module/Editlayout.php:113
+#: ../../Zotlabs/Module/Editwebpage.php:146
+#: ../../Zotlabs/Module/Layouts.php:190 ../../Zotlabs/Module/Menu.php:112
+#: ../../Zotlabs/Module/Admin.php:2113 ../../Zotlabs/Module/Settings.php:652
+#: ../../Zotlabs/Module/Thing.php:260 ../../Zotlabs/Module/Webpages.php:187
+#: ../../Zotlabs/Lib/Apps.php:337 ../../Zotlabs/Lib/ThreadItem.php:106
+#: ../../include/channel.php:937 ../../include/channel.php:941
+#: ../../include/menu.php:108 ../../include/page_widgets.php:8
+#: ../../include/page_widgets.php:36
msgid "Edit"
msgstr "Bearbeiten"
-#: ../../Zotlabs/Storage/Browser.php:241 ../../Zotlabs/Module/Admin.php:1001
-#: ../../Zotlabs/Module/Admin.php:1160 ../../Zotlabs/Module/Admin.php:1776
-#: ../../Zotlabs/Module/Blocks.php:161
+#: ../../Zotlabs/Storage/Browser.php:241 ../../Zotlabs/Module/Blocks.php:159
+#: ../../Zotlabs/Module/Connedit.php:572
+#: ../../Zotlabs/Module/Editblock.php:134
#: ../../Zotlabs/Module/Connections.php:263
-#: ../../Zotlabs/Module/Connedit.php:573
-#: ../../Zotlabs/Module/Editblock.php:187
-#: ../../Zotlabs/Module/Editlayout.php:184
-#: ../../Zotlabs/Module/Editwebpage.php:228 ../../Zotlabs/Module/Group.php:177
-#: ../../Zotlabs/Module/Photos.php:1172 ../../Zotlabs/Module/Settings.php:651
-#: ../../Zotlabs/Module/Thing.php:261 ../../Zotlabs/Module/Webpages.php:191
-#: ../../include/ItemObject.php:120 ../../include/apps.php:260
-#: ../../include/conversation.php:657
+#: ../../Zotlabs/Module/Editlayout.php:136
+#: ../../Zotlabs/Module/Editwebpage.php:170 ../../Zotlabs/Module/Group.php:177
+#: ../../Zotlabs/Module/Photos.php:1173 ../../Zotlabs/Module/Admin.php:1039
+#: ../../Zotlabs/Module/Admin.php:1213 ../../Zotlabs/Module/Admin.php:2114
+#: ../../Zotlabs/Module/Settings.php:653 ../../Zotlabs/Module/Thing.php:261
+#: ../../Zotlabs/Module/Webpages.php:189 ../../Zotlabs/Lib/Apps.php:338
+#: ../../Zotlabs/Lib/ThreadItem.php:126 ../../include/conversation.php:657
msgid "Delete"
msgstr "Löschen"
-#: ../../Zotlabs/Storage/Browser.php:282
+#: ../../Zotlabs/Storage/Browser.php:285
#, php-format
msgid "You are using %1$s of your available file storage."
msgstr "Sie verwenden %1$s von Ihrem verfügbaren Dateispeicher."
-#: ../../Zotlabs/Storage/Browser.php:287
+#: ../../Zotlabs/Storage/Browser.php:290
#, php-format
msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
msgstr "Sie verwenden %1$s von %2$s verfügbarem Dateispeicher. (%3$s&#37;)"
-#: ../../Zotlabs/Storage/Browser.php:299
+#: ../../Zotlabs/Storage/Browser.php:302
msgid "WARNING:"
msgstr "WARNUNG:"
-#: ../../Zotlabs/Storage/Browser.php:302
+#: ../../Zotlabs/Storage/Browser.php:305
msgid "Create new folder"
msgstr "Neuen Ordner anlegen"
-#: ../../Zotlabs/Storage/Browser.php:304
+#: ../../Zotlabs/Storage/Browser.php:307
msgid "Upload file"
msgstr "Datei hochladen"
-#: ../../Zotlabs/Web/Router.php:65 ../../Zotlabs/Module/Achievements.php:34
-#: ../../Zotlabs/Module/Api.php:13 ../../Zotlabs/Module/Api.php:18
-#: ../../Zotlabs/Module/Appman.php:70 ../../Zotlabs/Module/Authtest.php:16
-#: ../../Zotlabs/Module/Block.php:26 ../../Zotlabs/Module/Block.php:76
-#: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80
-#: ../../Zotlabs/Module/Bookmarks.php:61 ../../Zotlabs/Module/Channel.php:104
-#: ../../Zotlabs/Module/Channel.php:224 ../../Zotlabs/Module/Channel.php:264
-#: ../../Zotlabs/Module/Chat.php:98 ../../Zotlabs/Module/Chat.php:103
+#: ../../Zotlabs/Web/WebServer.php:120 ../../Zotlabs/Module/Dreport.php:10
+#: ../../Zotlabs/Module/Dreport.php:49 ../../Zotlabs/Module/Group.php:72
+#: ../../Zotlabs/Module/Like.php:284 ../../Zotlabs/Module/Import_items.php:112
+#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:62
+#: ../../include/items.php:385
+msgid "Permission denied"
+msgstr "Keine Berechtigung"
+
+#: ../../Zotlabs/Web/WebServer.php:121 ../../Zotlabs/Web/Router.php:65
+#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Blocks.php:73
+#: ../../Zotlabs/Module/Blocks.php:80 ../../Zotlabs/Module/Channel.php:105
+#: ../../Zotlabs/Module/Channel.php:226 ../../Zotlabs/Module/Channel.php:267
+#: ../../Zotlabs/Module/Chat.php:100 ../../Zotlabs/Module/Chat.php:105
+#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Block.php:26
+#: ../../Zotlabs/Module/Block.php:76 ../../Zotlabs/Module/Bookmarks.php:61
+#: ../../Zotlabs/Module/Connedit.php:366 ../../Zotlabs/Module/Editblock.php:67
#: ../../Zotlabs/Module/Common.php:39 ../../Zotlabs/Module/Connections.php:33
-#: ../../Zotlabs/Module/Connedit.php:366
#: ../../Zotlabs/Module/Cover_photo.php:277
#: ../../Zotlabs/Module/Cover_photo.php:290
-#: ../../Zotlabs/Module/Editblock.php:69
+#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Events.php:265
#: ../../Zotlabs/Module/Editlayout.php:67
-#: ../../Zotlabs/Module/Editlayout.php:91 ../../Zotlabs/Module/Editpost.php:17
-#: ../../Zotlabs/Module/Editwebpage.php:68
+#: ../../Zotlabs/Module/Editlayout.php:90
+#: ../../Zotlabs/Module/Editwebpage.php:69
#: ../../Zotlabs/Module/Editwebpage.php:90
#: ../../Zotlabs/Module/Editwebpage.php:105
-#: ../../Zotlabs/Module/Editwebpage.php:129
-#: ../../Zotlabs/Module/Events.php:264 ../../Zotlabs/Module/Filestorage.php:22
-#: ../../Zotlabs/Module/Filestorage.php:77
-#: ../../Zotlabs/Module/Filestorage.php:92
-#: ../../Zotlabs/Module/Filestorage.php:119
-#: ../../Zotlabs/Module/Fsuggest.php:82 ../../Zotlabs/Module/Group.php:13
-#: ../../Zotlabs/Module/Id.php:76 ../../Zotlabs/Module/Invite.php:17
-#: ../../Zotlabs/Module/Invite.php:91 ../../Zotlabs/Module/Item.php:210
+#: ../../Zotlabs/Module/Editwebpage.php:127 ../../Zotlabs/Module/Group.php:13
+#: ../../Zotlabs/Module/Api.php:13 ../../Zotlabs/Module/Api.php:18
+#: ../../Zotlabs/Module/Filestorage.php:24
+#: ../../Zotlabs/Module/Filestorage.php:79
+#: ../../Zotlabs/Module/Filestorage.php:94
+#: ../../Zotlabs/Module/Filestorage.php:121 ../../Zotlabs/Module/Item.php:210
#: ../../Zotlabs/Module/Item.php:218 ../../Zotlabs/Module/Item.php:1070
-#: ../../Zotlabs/Module/Layouts.php:73 ../../Zotlabs/Module/Layouts.php:80
-#: ../../Zotlabs/Module/Layouts.php:91 ../../Zotlabs/Module/Like.php:181
-#: ../../Zotlabs/Module/Locs.php:87 ../../Zotlabs/Module/Mail.php:130
-#: ../../Zotlabs/Module/Manage.php:10 ../../Zotlabs/Module/Menu.php:78
-#: ../../Zotlabs/Module/Message.php:20 ../../Zotlabs/Module/Mitem.php:115
-#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Network.php:16
-#: ../../Zotlabs/Module/New_channel.php:77
+#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78
+#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Id.php:76
+#: ../../Zotlabs/Module/Like.php:181 ../../Zotlabs/Module/Invite.php:17
+#: ../../Zotlabs/Module/Invite.php:91 ../../Zotlabs/Module/Locs.php:87
+#: ../../Zotlabs/Module/Mail.php:129 ../../Zotlabs/Module/Manage.php:10
+#: ../../Zotlabs/Module/Menu.php:78 ../../Zotlabs/Module/Message.php:18
+#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Network.php:17
+#: ../../Zotlabs/Module/Mitem.php:115 ../../Zotlabs/Module/New_channel.php:77
#: ../../Zotlabs/Module/New_channel.php:104
-#: ../../Zotlabs/Module/Notifications.php:70 ../../Zotlabs/Module/Page.php:35
+#: ../../Zotlabs/Module/Notifications.php:70
+#: ../../Zotlabs/Module/Photos.php:75 ../../Zotlabs/Module/Page.php:35
#: ../../Zotlabs/Module/Page.php:90 ../../Zotlabs/Module/Pdledit.php:26
-#: ../../Zotlabs/Module/Photos.php:74 ../../Zotlabs/Module/Poke.php:137
-#: ../../Zotlabs/Module/Profile.php:68 ../../Zotlabs/Module/Profile.php:76
+#: ../../Zotlabs/Module/Poke.php:137 ../../Zotlabs/Module/Profile.php:68
+#: ../../Zotlabs/Module/Profile.php:76 ../../Zotlabs/Module/Profiles.php:203
+#: ../../Zotlabs/Module/Profiles.php:601
#: ../../Zotlabs/Module/Profile_photo.php:256
#: ../../Zotlabs/Module/Profile_photo.php:269
-#: ../../Zotlabs/Module/Profiles.php:202 ../../Zotlabs/Module/Profiles.php:600
-#: ../../Zotlabs/Module/Rate.php:115 ../../Zotlabs/Module/Register.php:77
-#: ../../Zotlabs/Module/Regmod.php:21
+#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Appman.php:75
+#: ../../Zotlabs/Module/Register.php:77 ../../Zotlabs/Module/Regmod.php:21
#: ../../Zotlabs/Module/Service_limits.php:11
-#: ../../Zotlabs/Module/Settings.php:570 ../../Zotlabs/Module/Setup.php:238
+#: ../../Zotlabs/Module/Settings.php:572 ../../Zotlabs/Module/Setup.php:215
#: ../../Zotlabs/Module/Sharedwithme.php:11
-#: ../../Zotlabs/Module/Sources.php:70 ../../Zotlabs/Module/Suggest.php:30
+#: ../../Zotlabs/Module/Sources.php:74 ../../Zotlabs/Module/Suggest.php:30
#: ../../Zotlabs/Module/Thing.php:274 ../../Zotlabs/Module/Thing.php:294
#: ../../Zotlabs/Module/Thing.php:331
-#: ../../Zotlabs/Module/Viewconnections.php:26
-#: ../../Zotlabs/Module/Viewconnections.php:31
-#: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Webpages.php:73
-#: ../../include/chat.php:133 ../../include/attach.php:141
-#: ../../include/attach.php:189 ../../include/attach.php:252
-#: ../../include/attach.php:266 ../../include/attach.php:273
-#: ../../include/attach.php:338 ../../include/attach.php:352
-#: ../../include/attach.php:359 ../../include/attach.php:437
-#: ../../include/attach.php:895 ../../include/attach.php:966
-#: ../../include/attach.php:1118 ../../include/items.php:4671
-#: ../../include/photos.php:29 ../../index.php:174
+#: ../../Zotlabs/Module/Viewconnections.php:25
+#: ../../Zotlabs/Module/Viewconnections.php:30
+#: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Webpages.php:74
+#: ../../Zotlabs/Lib/Chatroom.php:137 ../../include/items.php:3438
+#: ../../include/attach.php:141 ../../include/attach.php:189
+#: ../../include/attach.php:252 ../../include/attach.php:266
+#: ../../include/attach.php:273 ../../include/attach.php:338
+#: ../../include/attach.php:352 ../../include/attach.php:359
+#: ../../include/attach.php:437 ../../include/attach.php:895
+#: ../../include/attach.php:966 ../../include/attach.php:1118
+#: ../../include/photos.php:27
msgid "Permission denied."
msgstr "Berechtigung verweigert."
@@ -240,30 +246,30 @@ msgid "Not Found"
msgstr "Nicht gefunden"
#: ../../Zotlabs/Web/Router.php:149 ../../Zotlabs/Module/Block.php:79
-#: ../../Zotlabs/Module/Display.php:121 ../../Zotlabs/Module/Help.php:97
+#: ../../Zotlabs/Module/Display.php:117 ../../Zotlabs/Module/Help.php:97
#: ../../Zotlabs/Module/Page.php:93
msgid "Page not found."
msgstr "Seite nicht gefunden."
-#: ../../Zotlabs/Zot/Auth.php:140
+#: ../../Zotlabs/Zot/Auth.php:138
msgid ""
"Remote authentication blocked. You are logged into this site locally. Please"
" logout and retry."
msgstr "Fern-Authentifizierung blockiert. Du bist lokal auf diesem Server angemeldet. Bitte melde Dich ab und versuche es erneut."
-#: ../../Zotlabs/Zot/Auth.php:248 ../../Zotlabs/Module/Openid.php:76
+#: ../../Zotlabs/Zot/Auth.php:246 ../../Zotlabs/Module/Openid.php:76
#: ../../Zotlabs/Module/Openid.php:183
#, php-format
msgid "Welcome %s. Remote authentication successful."
msgstr "Willkommen %s. Entfernte Authentifizierung erfolgreich."
#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Blocks.php:33
-#: ../../Zotlabs/Module/Connect.php:17 ../../Zotlabs/Module/Editblock.php:33
+#: ../../Zotlabs/Module/Connect.php:17 ../../Zotlabs/Module/Editblock.php:31
#: ../../Zotlabs/Module/Editlayout.php:31
-#: ../../Zotlabs/Module/Editwebpage.php:32
-#: ../../Zotlabs/Module/Filestorage.php:58 ../../Zotlabs/Module/Hcard.php:12
-#: ../../Zotlabs/Module/Layouts.php:33 ../../Zotlabs/Module/Profile.php:20
-#: ../../Zotlabs/Module/Webpages.php:33 ../../include/identity.php:830
+#: ../../Zotlabs/Module/Editwebpage.php:33
+#: ../../Zotlabs/Module/Filestorage.php:60 ../../Zotlabs/Module/Hcard.php:12
+#: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Profile.php:20
+#: ../../Zotlabs/Module/Webpages.php:34 ../../include/channel.php:837
msgid "Requested profile is not available."
msgstr "Erwünschte Profil ist nicht verfügbar."
@@ -271,1554 +277,296 @@ msgstr "Erwünschte Profil ist nicht verfügbar."
msgid "Some blurb about what to do when you're new here"
msgstr "Ein Hinweis, was man tun kann, wenn man neu hier ist"
-#: ../../Zotlabs/Module/Acl.php:225
-msgid "network"
-msgstr "Netzwerk"
-
-#: ../../Zotlabs/Module/Acl.php:235
-msgid "RSS"
-msgstr "RSS"
-
-#: ../../Zotlabs/Module/Admin.php:58
-msgid "Theme settings updated."
-msgstr "Theme-Einstellungen aktualisiert."
-
-#: ../../Zotlabs/Module/Admin.php:145 ../../Zotlabs/Module/Admin.php:1197
-#: ../../Zotlabs/Module/Admin.php:1442 ../../Zotlabs/Module/Display.php:44
-#: ../../Zotlabs/Module/Filestorage.php:31 ../../Zotlabs/Module/Thing.php:89
-#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:4592
-msgid "Item not found."
-msgstr "Element nicht gefunden."
-
-#: ../../Zotlabs/Module/Admin.php:178
-msgid "# Accounts"
-msgstr "Anzahl der Konten"
-
-#: ../../Zotlabs/Module/Admin.php:179
-msgid "# blocked accounts"
-msgstr "Anzahl der blockierten Konten"
-
-#: ../../Zotlabs/Module/Admin.php:180
-msgid "# expired accounts"
-msgstr "Anzahl der abgelaufenen Konten"
-
-#: ../../Zotlabs/Module/Admin.php:181
-msgid "# expiring accounts"
-msgstr "Anzahl der ablaufenden Konten"
-
-#: ../../Zotlabs/Module/Admin.php:192
-msgid "# Channels"
-msgstr "Anzahl der Kanäle"
-
-#: ../../Zotlabs/Module/Admin.php:193
-msgid "# primary"
-msgstr "Anzahl der primären Kanäle"
-
-#: ../../Zotlabs/Module/Admin.php:194
-msgid "# clones"
-msgstr "Anzahl der Klone"
-
-#: ../../Zotlabs/Module/Admin.php:200
-msgid "Message queues"
-msgstr "Nachrichten-Warteschlangen"
-
-#: ../../Zotlabs/Module/Admin.php:216 ../../Zotlabs/Module/Admin.php:462
-#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:717
-#: ../../Zotlabs/Module/Admin.php:992 ../../Zotlabs/Module/Admin.php:1156
-#: ../../Zotlabs/Module/Admin.php:1271 ../../Zotlabs/Module/Admin.php:1332
-#: ../../Zotlabs/Module/Admin.php:1493 ../../Zotlabs/Module/Admin.php:1527
-#: ../../Zotlabs/Module/Admin.php:1612
-msgid "Administration"
-msgstr "Administration"
-
-#: ../../Zotlabs/Module/Admin.php:217
-msgid "Summary"
-msgstr "Zusammenfassung"
-
-#: ../../Zotlabs/Module/Admin.php:220
-msgid "Registered accounts"
-msgstr "Registrierte Konten"
-
-#: ../../Zotlabs/Module/Admin.php:221 ../../Zotlabs/Module/Admin.php:681
-msgid "Pending registrations"
-msgstr "Ausstehende Registrierungen"
-
-#: ../../Zotlabs/Module/Admin.php:222
-msgid "Registered channels"
-msgstr "Registrierte Kanäle"
-
-#: ../../Zotlabs/Module/Admin.php:223 ../../Zotlabs/Module/Admin.php:682
-msgid "Active plugins"
-msgstr "Aktive Plug-Ins"
-
-#: ../../Zotlabs/Module/Admin.php:224
-msgid "Version"
-msgstr "Version"
-
-#: ../../Zotlabs/Module/Admin.php:345
-msgid "Site settings updated."
-msgstr "Site-Einstellungen aktualisiert."
-
-#: ../../Zotlabs/Module/Admin.php:372 ../../include/comanche.php:34
-msgid "Default"
-msgstr "Standard"
-
-#: ../../Zotlabs/Module/Admin.php:382 ../../Zotlabs/Module/Settings.php:796
-msgid "mobile"
-msgstr "mobil"
-
-#: ../../Zotlabs/Module/Admin.php:384
-msgid "experimental"
-msgstr "experimentell"
-
-#: ../../Zotlabs/Module/Admin.php:386
-msgid "unsupported"
-msgstr "nicht unterstützt"
-
-#: ../../Zotlabs/Module/Admin.php:431 ../../Zotlabs/Module/Api.php:89
-#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Connedit.php:657
-#: ../../Zotlabs/Module/Events.php:458 ../../Zotlabs/Module/Events.php:459
-#: ../../Zotlabs/Module/Events.php:468
-#: ../../Zotlabs/Module/Filestorage.php:155
-#: ../../Zotlabs/Module/Filestorage.php:163 ../../Zotlabs/Module/Menu.php:100
-#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
-#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
-#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:665
-#: ../../Zotlabs/Module/Profiles.php:651 ../../Zotlabs/Module/Removeme.php:64
-#: ../../Zotlabs/Module/Settings.php:579 ../../include/dir_fns.php:141
-#: ../../include/dir_fns.php:142 ../../include/dir_fns.php:143
-#: ../../view/theme/redbasic/php/config.php:105
-#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1606
-msgid "No"
-msgstr "Nein"
-
-#: ../../Zotlabs/Module/Admin.php:432
-msgid "Yes - with approval"
-msgstr "Ja - mit Zustimmung"
-
-#: ../../Zotlabs/Module/Admin.php:433 ../../Zotlabs/Module/Api.php:88
-#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Events.php:458
-#: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:468
-#: ../../Zotlabs/Module/Filestorage.php:155
-#: ../../Zotlabs/Module/Filestorage.php:163 ../../Zotlabs/Module/Menu.php:100
-#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
-#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
-#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:665
-#: ../../Zotlabs/Module/Profiles.php:651 ../../Zotlabs/Module/Removeme.php:64
-#: ../../Zotlabs/Module/Settings.php:579 ../../include/dir_fns.php:141
-#: ../../include/dir_fns.php:142 ../../include/dir_fns.php:143
-#: ../../view/theme/redbasic/php/config.php:105
-#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1606
-msgid "Yes"
-msgstr "Ja"
-
-#: ../../Zotlabs/Module/Admin.php:438
-msgid "My site is not a public server"
-msgstr "Mein Server ist kein öffentlicher Server"
-
-#: ../../Zotlabs/Module/Admin.php:439
-msgid "My site has paid access only"
-msgstr "Meine Seite hat nur bezahlten Zugriff"
-
-#: ../../Zotlabs/Module/Admin.php:440
-msgid "My site has free access only"
-msgstr "Meine Seite hat nur freien Zugriff"
-
-#: ../../Zotlabs/Module/Admin.php:441
-msgid "My site offers free accounts with optional paid upgrades"
-msgstr "Mein Server bietet kostenlose Konten mit der Möglichkeit zu bezahlten Upgrades"
-
-#: ../../Zotlabs/Module/Admin.php:463 ../../include/widgets.php:1334
-msgid "Site"
-msgstr "Seite"
-
-#: ../../Zotlabs/Module/Admin.php:464 ../../Zotlabs/Module/Admin.php:654
-#: ../../Zotlabs/Module/Admin.php:729 ../../Zotlabs/Module/Admin.php:994
-#: ../../Zotlabs/Module/Admin.php:1158 ../../Zotlabs/Module/Admin.php:1334
-#: ../../Zotlabs/Module/Admin.php:1529 ../../Zotlabs/Module/Admin.php:1614
-#: ../../Zotlabs/Module/Admin.php:1778 ../../Zotlabs/Module/Appman.php:103
-#: ../../Zotlabs/Module/Cal.php:341 ../../Zotlabs/Module/Chat.php:194
-#: ../../Zotlabs/Module/Chat.php:236 ../../Zotlabs/Module/Connect.php:97
-#: ../../Zotlabs/Module/Connedit.php:733 ../../Zotlabs/Module/Events.php:472
-#: ../../Zotlabs/Module/Events.php:669
-#: ../../Zotlabs/Module/Filestorage.php:160
-#: ../../Zotlabs/Module/Fsuggest.php:112 ../../Zotlabs/Module/Group.php:85
-#: ../../Zotlabs/Module/Import.php:546
-#: ../../Zotlabs/Module/Import_items.php:120
-#: ../../Zotlabs/Module/Invite.php:146 ../../Zotlabs/Module/Locs.php:121
-#: ../../Zotlabs/Module/Mail.php:384 ../../Zotlabs/Module/Mitem.php:235
-#: ../../Zotlabs/Module/Mood.php:139 ../../Zotlabs/Module/Pconfig.php:107
-#: ../../Zotlabs/Module/Pdledit.php:66 ../../Zotlabs/Module/Photos.php:676
-#: ../../Zotlabs/Module/Photos.php:1051 ../../Zotlabs/Module/Photos.php:1091
-#: ../../Zotlabs/Module/Photos.php:1209 ../../Zotlabs/Module/Poke.php:186
-#: ../../Zotlabs/Module/Profiles.php:691 ../../Zotlabs/Module/Rate.php:172
-#: ../../Zotlabs/Module/Settings.php:588 ../../Zotlabs/Module/Settings.php:701
-#: ../../Zotlabs/Module/Settings.php:729 ../../Zotlabs/Module/Settings.php:752
-#: ../../Zotlabs/Module/Settings.php:840
-#: ../../Zotlabs/Module/Settings.php:1032 ../../Zotlabs/Module/Setup.php:335
-#: ../../Zotlabs/Module/Setup.php:376 ../../Zotlabs/Module/Sources.php:108
-#: ../../Zotlabs/Module/Sources.php:142 ../../Zotlabs/Module/Thing.php:316
-#: ../../Zotlabs/Module/Thing.php:362 ../../Zotlabs/Module/Xchan.php:15
-#: ../../include/ItemObject.php:703 ../../include/widgets.php:708
-#: ../../include/widgets.php:720 ../../include/js_strings.php:22
-#: ../../view/theme/redbasic/php/config.php:99
-msgid "Submit"
-msgstr "Bestätigen"
-
-#: ../../Zotlabs/Module/Admin.php:465 ../../Zotlabs/Module/Register.php:245
-msgid "Registration"
-msgstr "Registrierung"
-
-#: ../../Zotlabs/Module/Admin.php:466
-msgid "File upload"
-msgstr "Dateiupload"
-
-#: ../../Zotlabs/Module/Admin.php:467
-msgid "Policies"
-msgstr "Richtlinien"
-
-#: ../../Zotlabs/Module/Admin.php:468 ../../include/contact_widgets.php:19
-msgid "Advanced"
-msgstr "Fortgeschritten"
-
-#: ../../Zotlabs/Module/Admin.php:472
-msgid "Site name"
-msgstr "Seitenname"
-
-#: ../../Zotlabs/Module/Admin.php:473
-msgid "Banner/Logo"
-msgstr "Banner/Logo"
-
-#: ../../Zotlabs/Module/Admin.php:474
-msgid "Administrator Information"
-msgstr "Administrator-Informationen"
-
-#: ../../Zotlabs/Module/Admin.php:474
-msgid ""
-"Contact information for site administrators. Displayed on siteinfo page. "
-"BBCode can be used here"
-msgstr "Kontaktinformationen für Administratoren des Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann verwendet werden."
-
-#: ../../Zotlabs/Module/Admin.php:475
-msgid "System language"
-msgstr "System-Sprache"
-
-#: ../../Zotlabs/Module/Admin.php:476
-msgid "System theme"
-msgstr "System-Theme"
-
-#: ../../Zotlabs/Module/Admin.php:476
-msgid ""
-"Default system theme - may be over-ridden by user profiles - <a href='#' "
-"id='cnftheme'>change theme settings</a>"
-msgstr "Standard-System-Theme – kann durch Nutzerprofile überschieben werden – <a href='#' id='cnftheme'>Theme-Einstellungen ändern</a>"
-
-#: ../../Zotlabs/Module/Admin.php:477
-msgid "Mobile system theme"
-msgstr "Mobile System-Theme:"
-
-#: ../../Zotlabs/Module/Admin.php:477
-msgid "Theme for mobile devices"
-msgstr "Theme für mobile Geräte"
-
-#: ../../Zotlabs/Module/Admin.php:479
-msgid "Allow Feeds as Connections"
-msgstr "Feeds als Verbindungen erlauben"
-
-#: ../../Zotlabs/Module/Admin.php:479
-msgid "(Heavy system resource usage)"
-msgstr "(führt zu hoher Systemlast)"
-
-#: ../../Zotlabs/Module/Admin.php:480
-msgid "Maximum image size"
-msgstr "Maximale Bildgröße"
-
-#: ../../Zotlabs/Module/Admin.php:480
-msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
-msgstr "Maximale Größe hochgeladener Bilder in Bytes. Standard ist 0 (keine Einschränkung)."
-
-#: ../../Zotlabs/Module/Admin.php:481
-msgid "Does this site allow new member registration?"
-msgstr "Erlaubt dieser Server die Registrierung neuer Nutzer?"
-
-#: ../../Zotlabs/Module/Admin.php:482
-msgid "Invitation only"
-msgstr "Nur mit Einladung"
-
-#: ../../Zotlabs/Module/Admin.php:482
-msgid ""
-"Only allow new member registrations with an invitation code. Above register "
-"policy must be set to Yes."
-msgstr "Erlaube die Neuregistrierung von Mitglieder nur mit einem Einladungscode. Die Registrierungs-Politik muss oben auf Ja gesetzt werden."
-
-#: ../../Zotlabs/Module/Admin.php:483
-msgid "Which best describes the types of account offered by this hub?"
-msgstr "Was ist die passendste Beschreibung der Konten auf diesem Hub?"
-
-#: ../../Zotlabs/Module/Admin.php:484
-msgid "Register text"
-msgstr "Registrierungstext"
-
-#: ../../Zotlabs/Module/Admin.php:484
-msgid "Will be displayed prominently on the registration page."
-msgstr "Wird gut sichtbar auf der Registrierungs-Seite angezeigt."
-
-#: ../../Zotlabs/Module/Admin.php:485
-msgid "Site homepage to show visitors (default: login box)"
-msgstr "Homepage des Hubs, die Besuchern angezeigt wird (Voreinstellung: Anmeldemaske)"
-
-#: ../../Zotlabs/Module/Admin.php:485
-msgid ""
-"example: 'public' to show public stream, 'page/sys/home' to show a system "
-"webpage called 'home' or 'include:home.html' to include a file."
-msgstr "Beispiele: 'public', um den Stream aller öffentlichen Beiträge anzuzeigen, 'page/sys/home', um eine System-Webseite namens 'home' anzuzeigen, 'include:home.html', um eine Datei einzufügen."
-
-#: ../../Zotlabs/Module/Admin.php:486
-msgid "Preserve site homepage URL"
-msgstr "Homepage-URL schützen"
-
-#: ../../Zotlabs/Module/Admin.php:486
-msgid ""
-"Present the site homepage in a frame at the original location instead of "
-"redirecting"
-msgstr "Zeigt die Homepage an der Original-URL in einem Frame an, statt auf die eigentliche Adresse der Seite umzuleiten."
-
-#: ../../Zotlabs/Module/Admin.php:487
-msgid "Accounts abandoned after x days"
-msgstr "Konten gelten nach X Tagen als unbenutzt"
-
-#: ../../Zotlabs/Module/Admin.php:487
-msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
-msgstr "Verschwende keine Systemressourcen auf das Pollen von externen Seiten, wenn das Konto nicht mehr benutzt wird. Trage hier 0 für kein zeitliches Limit."
-
-#: ../../Zotlabs/Module/Admin.php:488
-msgid "Allowed friend domains"
-msgstr "Erlaubte Domains für Kontakte"
-
-#: ../../Zotlabs/Module/Admin.php:488
-msgid ""
-"Comma separated list of domains which are allowed to establish friendships "
-"with this site. Wildcards are accepted. Empty to allow any domains"
-msgstr "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."
-
-#: ../../Zotlabs/Module/Admin.php:489
-msgid "Allowed email domains"
-msgstr "Erlaubte Domains für E-Mails"
-
-#: ../../Zotlabs/Module/Admin.php:489
-msgid ""
-"Comma separated list of domains which are allowed in email addresses for "
-"registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains"
-msgstr "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."
-
-#: ../../Zotlabs/Module/Admin.php:490
-msgid "Not allowed email domains"
-msgstr "Nicht erlaubte Domains für E-Mails"
-
-#: ../../Zotlabs/Module/Admin.php:490
-msgid ""
-"Comma separated list of domains which are not allowed in email addresses for"
-" registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains, unless allowed domains have been defined."
-msgstr "Domains in E-Mail-Adressen, die keine Erlaubnis erhalten, sich auf Deinem Hub zu registrieren. Mehrere Domains können durch Kommas getrennt werden. Platzhalter (*/?) sind möglich. Keine Eingabe bedeutet keine Einschränkung, unabhängig davon, ob unter erlaubte Domains etwas eingegeben wurde."
-
-#: ../../Zotlabs/Module/Admin.php:491
-msgid "Verify Email Addresses"
-msgstr "E-Mail-Adressen überprüfen"
-
-#: ../../Zotlabs/Module/Admin.php:491
-msgid ""
-"Check to verify email addresses used in account registration (recommended)."
-msgstr "Aktivieren, um die Überprüfung von E-Mail-Adressen bei der Registrierung von Benutzerkonten zu aktivieren (empfohlen)."
-
-#: ../../Zotlabs/Module/Admin.php:492
-msgid "Force publish"
-msgstr "Veröffentlichung erzwingen"
-
-#: ../../Zotlabs/Module/Admin.php:492
-msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
-msgstr "Die Veröffentlichung aller Profile dieses Servers im Verzeichnis erzwingen."
-
-#: ../../Zotlabs/Module/Admin.php:493
-msgid "Import Public Streams"
-msgstr "Öffentliche Beiträge importieren"
-
-#: ../../Zotlabs/Module/Admin.php:493
-msgid ""
-"Import and allow access to public content pulled from other sites. Warning: "
-"this content is unmoderated."
-msgstr "Öffentliche Beiträge von anderen Servern importieren und zur Verfügung stellen. Warnung: Diese Inhalte sind nicht moderiert."
-
-#: ../../Zotlabs/Module/Admin.php:494
-msgid "Login on Homepage"
-msgstr "Log-in auf der Startseite"
-
-#: ../../Zotlabs/Module/Admin.php:494
-msgid ""
-"Present a login box to visitors on the home page if no other content has "
-"been configured."
-msgstr "Zeigt Besuchern der Homepage eine Anmeldemaske, falls keine anderen Inhalte konfiguriert wurden."
-
-#: ../../Zotlabs/Module/Admin.php:495
-msgid "Enable context help"
-msgstr "Kontext-Hilfe aktivieren"
-
-#: ../../Zotlabs/Module/Admin.php:495
-msgid ""
-"Display contextual help for the current page when the help button is "
-"pressed."
-msgstr "Zeigt Kontext-sensitive Hilfe für die aktuelle Seite an, wenn der Hilfe-Knopf geklickt wird."
-
-#: ../../Zotlabs/Module/Admin.php:497
-msgid "Directory Server URL"
-msgstr "Verzeichnisserver-URL"
-
-#: ../../Zotlabs/Module/Admin.php:497
-msgid "Default directory server"
-msgstr "Standard-Verzeichnisserver"
-
-#: ../../Zotlabs/Module/Admin.php:499
-msgid "Proxy user"
-msgstr "Proxy Benutzer"
-
-#: ../../Zotlabs/Module/Admin.php:500
-msgid "Proxy URL"
-msgstr "Proxy URL"
-
-#: ../../Zotlabs/Module/Admin.php:501
-msgid "Network timeout"
-msgstr "Netzwerk-Timeout"
-
-#: ../../Zotlabs/Module/Admin.php:501
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
-msgstr "Wert in Sekunden. 0 für unbegrenzt (nicht empfohlen)."
-
-#: ../../Zotlabs/Module/Admin.php:502
-msgid "Delivery interval"
-msgstr "Auslieferung Intervall"
-
-#: ../../Zotlabs/Module/Admin.php:502
-msgid ""
-"Delay background delivery processes by this many seconds to reduce system "
-"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
-"for large dedicated servers."
-msgstr "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl Sekunden, um die Systemlast zu verringern. Empfehlungen: 4-5 für Shared Hosts, 2-3 für VPS, 0-1 für große dedizierte Server."
-
-#: ../../Zotlabs/Module/Admin.php:503
-msgid "Deliveries per process"
-msgstr "Zustellungen pro Prozess"
-
-#: ../../Zotlabs/Module/Admin.php:503
-msgid ""
-"Number of deliveries to attempt in a single operating system process. Adjust"
-" if necessary to tune system performance. Recommend: 1-5."
-msgstr "Anzahl der Zustellungen, die innerhalb eines einzelnen Betriebssystemprozesses versucht werden. Anpassen, falls nötig, um die System-Performance zu verbessern. Empfehlung: 1-5."
-
-#: ../../Zotlabs/Module/Admin.php:504
-msgid "Poll interval"
-msgstr "Abfrageintervall"
-
-#: ../../Zotlabs/Module/Admin.php:504
-msgid ""
-"Delay background polling processes by this many seconds to reduce system "
-"load. If 0, use delivery interval."
-msgstr "Verzögere Hintergrundprozesse um diese Anzahl Sekunden, um die Systemlast zu reduzieren. Bei 0 wird das Auslieferungsintervall verwendet."
-
-#: ../../Zotlabs/Module/Admin.php:505
-msgid "Maximum Load Average"
-msgstr "Maximales Load Average"
-
-#: ../../Zotlabs/Module/Admin.php:505
-msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
-msgstr "Maximale Systemlast, bevor Verteil- und Empfangsprozesse verschoben werden – Standard 50"
-
-#: ../../Zotlabs/Module/Admin.php:506
-msgid "Expiration period in days for imported (grid/network) content"
-msgstr "Setze den Zeitraum (in Tagen), ab wann importierte (aus dem Netzwerk) Inhalte ablaufen sollen"
-
-#: ../../Zotlabs/Module/Admin.php:506
-msgid "0 for no expiration of imported content"
-msgstr "0 = keine Löschung importierter Inhalte"
-
-#: ../../Zotlabs/Module/Admin.php:643 ../../Zotlabs/Module/Admin.php:644
-#: ../../Zotlabs/Module/Settings.php:720
-msgid "Off"
-msgstr "Aus"
-
-#: ../../Zotlabs/Module/Admin.php:643 ../../Zotlabs/Module/Admin.php:644
-#: ../../Zotlabs/Module/Settings.php:720
-msgid "On"
-msgstr "An"
-
-#: ../../Zotlabs/Module/Admin.php:644
-#, php-format
-msgid "Lock feature %s"
-msgstr "Blockiere die Funktion %s"
-
-#: ../../Zotlabs/Module/Admin.php:652
-msgid "Manage Additional Features"
-msgstr "Zusätzliche Funktionen verwalten"
-
-#: ../../Zotlabs/Module/Admin.php:669
-msgid "No server found"
-msgstr "Kein Server gefunden"
-
-#: ../../Zotlabs/Module/Admin.php:676 ../../Zotlabs/Module/Admin.php:1006
-msgid "ID"
-msgstr "ID"
-
-#: ../../Zotlabs/Module/Admin.php:676
-msgid "for channel"
-msgstr "für Kanal"
-
-#: ../../Zotlabs/Module/Admin.php:676
-msgid "on server"
-msgstr "auf Server"
-
-#: ../../Zotlabs/Module/Admin.php:676 ../../Zotlabs/Module/Connections.php:270
-msgid "Status"
-msgstr "Status"
-
-#: ../../Zotlabs/Module/Admin.php:678
-msgid "Server"
-msgstr "Server"
-
-#: ../../Zotlabs/Module/Admin.php:718 ../../include/widgets.php:1337
-msgid "Security"
-msgstr "Sicherheit"
-
-#: ../../Zotlabs/Module/Admin.php:720
-msgid "Block public"
-msgstr "Öffentlichen Zugriff blockieren"
-
-#: ../../Zotlabs/Module/Admin.php:720
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently authenticated."
-msgstr "Blockiere den öffentlichen Zugriff auf alle ansonsten öffentlichen persönlichen Seiten dieser Website, sofern ein Besucher nicht angemeldet ist."
-
-#: ../../Zotlabs/Module/Admin.php:721
-msgid "Allow communications only from these sites"
-msgstr "Kommunikation nur von diesen Seiten erlauben"
-
-#: ../../Zotlabs/Module/Admin.php:721
-msgid ""
-"One site per line. Leave empty to allow communication from anywhere by "
-"default"
-msgstr "Ein Eintrag pro Zeile. Lasse das Feld leer, um Kommunikation grundlegend von überall her zu erlauben."
-
-#: ../../Zotlabs/Module/Admin.php:722
-msgid "Block communications from these sites"
-msgstr "Kommunikation von diesen Seiten blockieren"
-
-#: ../../Zotlabs/Module/Admin.php:723
-msgid "Allow communications only from these channels"
-msgstr "Kommunikation nur von diesen Kanälen erlauben"
-
-#: ../../Zotlabs/Module/Admin.php:723
-msgid ""
-"One channel (hash) per line. Leave empty to allow from any channel by "
-"default"
-msgstr "Ein Kanal (hash) pro Zeile. Leerlassen um jeden Kanal zuzulassen. "
-
-#: ../../Zotlabs/Module/Admin.php:724
-msgid "Block communications from these channels"
-msgstr "Kommunikation von folgenden Kanälen blockieren"
-
-#: ../../Zotlabs/Module/Admin.php:725
-msgid "Allow embedded HTML content only from these domains"
-msgstr "Eingebetteten HTML Inhalt von folgenden Domains erlauben"
-
-#: ../../Zotlabs/Module/Admin.php:725
-msgid "One site per line. Leave empty to allow from any site by default"
-msgstr "Eine Seite pro Zeile. Leerlassen um von jeder Seite zuzulassen. "
-
-#: ../../Zotlabs/Module/Admin.php:726
-msgid "Block embedded HTML from these domains"
-msgstr "Eingebettete HTML Inhalte von diesen Seiten blockieren"
-
-#: ../../Zotlabs/Module/Admin.php:728
-msgid "Cooperative embed security"
-msgstr "Kooperative Einbettungssicherheit"
-
-#: ../../Zotlabs/Module/Admin.php:728
-msgid "Enable to share embed security with other compatible sites/hubs"
-msgstr "Teile die Einbettungssicherheit mit anderen kompatiblen Websites/Hubs."
-
-#: ../../Zotlabs/Module/Admin.php:743
-msgid "Update has been marked successful"
-msgstr "Update wurde als erfolgreich markiert"
-
-#: ../../Zotlabs/Module/Admin.php:753
-#, php-format
-msgid "Executing %s failed. Check system logs."
-msgstr "Ausführen von %s fehlgeschlagen. Überprüfe die Systemprotokolle."
-
-#: ../../Zotlabs/Module/Admin.php:756
-#, php-format
-msgid "Update %s was successfully applied."
-msgstr "Update %s wurde erfolgreich ausgeführt."
-
-#: ../../Zotlabs/Module/Admin.php:760
-#, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
-msgstr "Update %s lieferte keinen Rückgabewert. Erfolg unbekannt."
-
-#: ../../Zotlabs/Module/Admin.php:763
-#, php-format
-msgid "Update function %s could not be found."
-msgstr "Update-Funktion %s konnte nicht gefunden werden."
-
-#: ../../Zotlabs/Module/Admin.php:779
-msgid "No failed updates."
-msgstr "Keine fehlgeschlagenen Aktualisierungen."
-
-#: ../../Zotlabs/Module/Admin.php:783
-msgid "Failed Updates"
-msgstr "Fehlgeschlagene Aktualisierungen"
-
-#: ../../Zotlabs/Module/Admin.php:785
-msgid "Mark success (if update was manually applied)"
-msgstr "Als erfolgreich markieren (wenn das Update manuell ausgeführt wurde)"
-
-#: ../../Zotlabs/Module/Admin.php:786
-msgid "Attempt to execute this update step automatically"
-msgstr "Versuche, diesen Updateschritt automatisch auszuführen"
-
-#: ../../Zotlabs/Module/Admin.php:817
-msgid "Queue Statistics"
-msgstr "Warteschlangenstatistiken"
-
-#: ../../Zotlabs/Module/Admin.php:818
-msgid "Total Entries"
-msgstr "Einträge insgesamt"
-
-#: ../../Zotlabs/Module/Admin.php:819
-msgid "Priority"
-msgstr "Priorität"
-
-#: ../../Zotlabs/Module/Admin.php:820
-msgid "Destination URL"
-msgstr "Ziel-URL"
-
-#: ../../Zotlabs/Module/Admin.php:821
-msgid "Mark hub permanently offline"
-msgstr "Hub als permanent offline markieren"
-
-#: ../../Zotlabs/Module/Admin.php:822
-msgid "Empty queue for this hub"
-msgstr "Warteschlange für diesen Hub leeren"
-
-#: ../../Zotlabs/Module/Admin.php:823
-msgid "Last known contact"
-msgstr "Letzter Kontakt"
-
-#: ../../Zotlabs/Module/Admin.php:859
-#, php-format
-msgid "%s account blocked/unblocked"
-msgid_plural "%s account blocked/unblocked"
-msgstr[0] "%s Konto blockiert/freigegeben"
-msgstr[1] "%s Konten blockiert/freigegeben"
-
-#: ../../Zotlabs/Module/Admin.php:867
-#, php-format
-msgid "%s account deleted"
-msgid_plural "%s accounts deleted"
-msgstr[0] "%s Konto gelöscht"
-msgstr[1] "%s Konten gelöscht"
-
-#: ../../Zotlabs/Module/Admin.php:903
-msgid "Account not found"
-msgstr "Konto nicht gefunden"
-
-#: ../../Zotlabs/Module/Admin.php:915
-#, php-format
-msgid "Account '%s' deleted"
-msgstr "Konto '%s' gelöscht"
-
-#: ../../Zotlabs/Module/Admin.php:923
-#, php-format
-msgid "Account '%s' blocked"
-msgstr "Konto '%s' blockiert"
-
-#: ../../Zotlabs/Module/Admin.php:931
-#, php-format
-msgid "Account '%s' unblocked"
-msgstr "Konto '%s' freigegeben"
-
-#: ../../Zotlabs/Module/Admin.php:993 ../../Zotlabs/Module/Admin.php:1005
-msgid "Users"
-msgstr "Benutzer"
-
-#: ../../Zotlabs/Module/Admin.php:995 ../../Zotlabs/Module/Admin.php:1159
-msgid "select all"
-msgstr "Alle auswählen"
-
-#: ../../Zotlabs/Module/Admin.php:996
-msgid "User registrations waiting for confirm"
-msgstr "Neuanmeldungen, die auf Deine Bestätigung warten"
-
-#: ../../Zotlabs/Module/Admin.php:997
-msgid "Request date"
-msgstr "Antragsdatum"
-
-#: ../../Zotlabs/Module/Admin.php:997 ../../Zotlabs/Module/Admin.php:1006
-#: ../../Zotlabs/Module/Id.php:17 ../../Zotlabs/Module/Id.php:18
-#: ../../include/contact_selectors.php:81 ../../boot.php:1604
-msgid "Email"
-msgstr "E-Mail"
-
-#: ../../Zotlabs/Module/Admin.php:998
-msgid "No registrations."
-msgstr "Keine Registrierungen."
-
-#: ../../Zotlabs/Module/Admin.php:999 ../../Zotlabs/Module/Connections.php:275
-msgid "Approve"
-msgstr "Genehmigen"
-
-#: ../../Zotlabs/Module/Admin.php:1000
-msgid "Deny"
-msgstr "Verweigern"
-
-#: ../../Zotlabs/Module/Admin.php:1002 ../../Zotlabs/Module/Connedit.php:541
-msgid "Block"
-msgstr "Blockieren"
-
-#: ../../Zotlabs/Module/Admin.php:1003 ../../Zotlabs/Module/Connedit.php:541
-msgid "Unblock"
-msgstr "Freigeben"
-
-#: ../../Zotlabs/Module/Admin.php:1006 ../../include/group.php:267
-msgid "All Channels"
-msgstr "Alle Kanäle"
-
-#: ../../Zotlabs/Module/Admin.php:1006
-msgid "Register date"
-msgstr "Registrierungs-Datum"
-
-#: ../../Zotlabs/Module/Admin.php:1006
-msgid "Last login"
-msgstr "Letzte Anmeldung"
-
-#: ../../Zotlabs/Module/Admin.php:1006
-msgid "Expires"
-msgstr "Verfällt"
-
-#: ../../Zotlabs/Module/Admin.php:1006
-msgid "Service Class"
-msgstr "Service-Klasse"
-
-#: ../../Zotlabs/Module/Admin.php:1008
-msgid ""
-"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
-" on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Die ausgewählten Konten werden gelöscht!\\n\\nAlles, was diese Konten auf diesem Hub veröffentlicht haben, wird endgültig gelöscht werden!\\n\\nBist du dir sicher?"
-
-#: ../../Zotlabs/Module/Admin.php:1009
-msgid ""
-"The account {0} will be deleted!\\n\\nEverything this account has posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Das Konto {0} wird gelöscht!\\n\\nAlles, was dieses Konto auf diesem Hub veröffentlicht hat, wird endgültig gelöscht werden!\\n\\nBist Du sicher?"
-
-#: ../../Zotlabs/Module/Admin.php:1045
-#, php-format
-msgid "%s channel censored/uncensored"
-msgid_plural "%s channels censored/uncensored"
-msgstr[0] "%s Kanal gesperrt/freigegeben"
-msgstr[1] "%s Kanäle gesperrt/freigegeben"
-
-#: ../../Zotlabs/Module/Admin.php:1054
-#, php-format
-msgid "%s channel code allowed/disallowed"
-msgid_plural "%s channels code allowed/disallowed"
-msgstr[0] "Code für %s Kanal gesperrt/freigegeben"
-msgstr[1] "Code für %s Kanäle gesperrt/freigegeben"
-
-#: ../../Zotlabs/Module/Admin.php:1061
-#, php-format
-msgid "%s channel deleted"
-msgid_plural "%s channels deleted"
-msgstr[0] "%s Kanal gelöscht"
-msgstr[1] "%s Kanäle gelöscht"
-
-#: ../../Zotlabs/Module/Admin.php:1081
-msgid "Channel not found"
-msgstr "Kanal nicht gefunden"
-
-#: ../../Zotlabs/Module/Admin.php:1092
-#, php-format
-msgid "Channel '%s' deleted"
-msgstr "Kanal '%s' gelöscht"
-
-#: ../../Zotlabs/Module/Admin.php:1104
-#, php-format
-msgid "Channel '%s' censored"
-msgstr "Kanal '%s' gesperrt"
-
-#: ../../Zotlabs/Module/Admin.php:1104
-#, php-format
-msgid "Channel '%s' uncensored"
-msgstr "Kanal '%s' freigegeben"
-
-#: ../../Zotlabs/Module/Admin.php:1115
-#, php-format
-msgid "Channel '%s' code allowed"
-msgstr "Code für Kanal '%s' freigegeben"
-
-#: ../../Zotlabs/Module/Admin.php:1115
-#, php-format
-msgid "Channel '%s' code disallowed"
-msgstr "Code für Kanal '%s' gesperrt"
-
-#: ../../Zotlabs/Module/Admin.php:1157 ../../include/widgets.php:1336
-msgid "Channels"
-msgstr "Kanäle"
-
-#: ../../Zotlabs/Module/Admin.php:1161
-msgid "Censor"
-msgstr "Sperren"
-
-#: ../../Zotlabs/Module/Admin.php:1162
-msgid "Uncensor"
-msgstr "Freigeben"
-
-#: ../../Zotlabs/Module/Admin.php:1163
-msgid "Allow Code"
-msgstr "Code erlauben"
-
-#: ../../Zotlabs/Module/Admin.php:1164
-msgid "Disallow Code"
-msgstr "Code sperren"
-
-#: ../../Zotlabs/Module/Admin.php:1165 ../../include/conversation.php:1629
-msgid "Channel"
-msgstr "Kanal"
-
-#: ../../Zotlabs/Module/Admin.php:1166
-msgid "UID"
-msgstr "UID"
-
-#: ../../Zotlabs/Module/Admin.php:1166 ../../Zotlabs/Module/Locs.php:118
-#: ../../Zotlabs/Module/Profiles.php:469
-msgid "Address"
-msgstr "Adresse"
-
-#: ../../Zotlabs/Module/Admin.php:1168
-msgid ""
-"Selected channels will be deleted!\\n\\nEverything that was posted in these "
-"channels on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Alle ausgewählten Kanäle werden gelöscht!\\n\\nAlles was von diesen Kanälen auf diesem Server geschrieben wurde, wird dauerhaft gelöscht!\\n\\nBist Du sicher?"
-
-#: ../../Zotlabs/Module/Admin.php:1169
-msgid ""
-"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
-"channel on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Der Kanal {0} wird gelöscht!\\n\\nAlles was von diesem Kanal auf diesem Server geschrieben wurde, wird gelöscht!\\n\\nBist Du sicher?"
-
-#: ../../Zotlabs/Module/Admin.php:1226
-#, php-format
-msgid "Plugin %s disabled."
-msgstr "Plug-In %s deaktiviert."
-
-#: ../../Zotlabs/Module/Admin.php:1230
-#, php-format
-msgid "Plugin %s enabled."
-msgstr "Plug-In %s aktiviert."
-
-#: ../../Zotlabs/Module/Admin.php:1240 ../../Zotlabs/Module/Admin.php:1466
-msgid "Disable"
-msgstr "Deaktivieren"
-
-#: ../../Zotlabs/Module/Admin.php:1243 ../../Zotlabs/Module/Admin.php:1468
-msgid "Enable"
-msgstr "Aktivieren"
-
-#: ../../Zotlabs/Module/Admin.php:1272 ../../Zotlabs/Module/Admin.php:1333
-#: ../../include/widgets.php:1339
-msgid "Plugins"
-msgstr "Plug-Ins"
-
-#: ../../Zotlabs/Module/Admin.php:1273 ../../Zotlabs/Module/Admin.php:1495
-msgid "Toggle"
-msgstr "Umschalten"
-
-#: ../../Zotlabs/Module/Admin.php:1274 ../../Zotlabs/Module/Admin.php:1496
-#: ../../include/apps.php:134 ../../include/widgets.php:589
-#: ../../include/nav.php:211
-msgid "Settings"
-msgstr "Einstellungen"
-
-#: ../../Zotlabs/Module/Admin.php:1281 ../../Zotlabs/Module/Admin.php:1505
-msgid "Author: "
-msgstr "Autor: "
-
-#: ../../Zotlabs/Module/Admin.php:1282 ../../Zotlabs/Module/Admin.php:1506
-msgid "Maintainer: "
-msgstr "Betreuer:"
-
-#: ../../Zotlabs/Module/Admin.php:1283
-msgid "Minimum project version: "
-msgstr "Minimale Version des Projekts:"
-
-#: ../../Zotlabs/Module/Admin.php:1284
-msgid "Maximum project version: "
-msgstr "Maximale Version des Projekts:"
-
-#: ../../Zotlabs/Module/Admin.php:1285
-msgid "Minimum PHP version: "
-msgstr "Minimale PHP Version:"
-
-#: ../../Zotlabs/Module/Admin.php:1286
-msgid "Requires: "
-msgstr "Benötigt:"
-
-#: ../../Zotlabs/Module/Admin.php:1287 ../../Zotlabs/Module/Admin.php:1338
-msgid "Disabled - version incompatibility"
-msgstr "Abgeschaltet - Versionsinkompatibilität"
-
-#: ../../Zotlabs/Module/Admin.php:1431
-msgid "No themes found."
-msgstr "Keine Theme gefunden."
-
-#: ../../Zotlabs/Module/Admin.php:1487
-msgid "Screenshot"
-msgstr "Bildschirmfoto"
-
-#: ../../Zotlabs/Module/Admin.php:1494 ../../Zotlabs/Module/Admin.php:1528
-#: ../../include/widgets.php:1340
-msgid "Themes"
-msgstr "Themes"
-
-#: ../../Zotlabs/Module/Admin.php:1533
-msgid "[Experimental]"
-msgstr "[Experimentell]"
-
-#: ../../Zotlabs/Module/Admin.php:1534
-msgid "[Unsupported]"
-msgstr "[Nicht unterstützt]"
-
-#: ../../Zotlabs/Module/Admin.php:1558
-msgid "Log settings updated."
-msgstr "Protokoll-Einstellungen aktualisiert."
-
-#: ../../Zotlabs/Module/Admin.php:1613 ../../include/widgets.php:1361
-#: ../../include/widgets.php:1371
-msgid "Logs"
-msgstr "Protokolle"
-
-#: ../../Zotlabs/Module/Admin.php:1615
-msgid "Clear"
-msgstr "Leeren"
-
-#: ../../Zotlabs/Module/Admin.php:1621
-msgid "Debugging"
-msgstr "Debugging"
-
-#: ../../Zotlabs/Module/Admin.php:1622
-msgid "Log file"
-msgstr "Protokolldatei"
-
-#: ../../Zotlabs/Module/Admin.php:1622
-msgid ""
-"Must be writable by web server. Relative to your Red top-level directory."
-msgstr "Muss für den Webserver schreibbar sein. Relativ zum $Projectname-Stammverzeichnis."
-
-#: ../../Zotlabs/Module/Admin.php:1623
-msgid "Log level"
-msgstr "Protokollstufe"
-
-#: ../../Zotlabs/Module/Admin.php:1690
-msgid "New Profile Field"
-msgstr "Neues Profilfeld"
-
-#: ../../Zotlabs/Module/Admin.php:1691 ../../Zotlabs/Module/Admin.php:1711
-msgid "Field nickname"
-msgstr "Kurzname für das Feld"
-
-#: ../../Zotlabs/Module/Admin.php:1691 ../../Zotlabs/Module/Admin.php:1711
-msgid "System name of field"
-msgstr "Systemname des Feldes"
-
-#: ../../Zotlabs/Module/Admin.php:1692 ../../Zotlabs/Module/Admin.php:1712
-msgid "Input type"
-msgstr "Art des Inhalts"
-
-#: ../../Zotlabs/Module/Admin.php:1693 ../../Zotlabs/Module/Admin.php:1713
-msgid "Field Name"
-msgstr "Feldname"
-
-#: ../../Zotlabs/Module/Admin.php:1693 ../../Zotlabs/Module/Admin.php:1713
-msgid "Label on profile pages"
-msgstr "Bezeichnung auf Profilseiten"
-
-#: ../../Zotlabs/Module/Admin.php:1694 ../../Zotlabs/Module/Admin.php:1714
-msgid "Help text"
-msgstr "Hilfetext"
-
-#: ../../Zotlabs/Module/Admin.php:1694 ../../Zotlabs/Module/Admin.php:1714
-msgid "Additional info (optional)"
-msgstr "Zusätzliche Informationen (optional)"
-
-#: ../../Zotlabs/Module/Admin.php:1695 ../../Zotlabs/Module/Admin.php:1715
-#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Rbmark.php:32
-#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/widgets.php:201
-#: ../../include/text.php:905 ../../include/text.php:917
-msgid "Save"
-msgstr "Speichern"
-
-#: ../../Zotlabs/Module/Admin.php:1704
-msgid "Field definition not found"
-msgstr "Feld-Definition nicht gefunden"
-
-#: ../../Zotlabs/Module/Admin.php:1710
-msgid "Edit Profile Field"
-msgstr "Profilfeld bearbeiten"
-
-#: ../../Zotlabs/Module/Admin.php:1768 ../../include/widgets.php:1342
-msgid "Profile Fields"
-msgstr "Profil Felder"
-
-#: ../../Zotlabs/Module/Admin.php:1769
-msgid "Basic Profile Fields"
-msgstr "Notwendige Profil Felder"
-
-#: ../../Zotlabs/Module/Admin.php:1770
-msgid "Advanced Profile Fields"
-msgstr "Erweiterte Profil Felder"
-
-#: ../../Zotlabs/Module/Admin.php:1770
-msgid "(In addition to basic fields)"
-msgstr "(zusätzlich zu notwendige Felder)"
-
-#: ../../Zotlabs/Module/Admin.php:1772
-msgid "All available fields"
-msgstr "Alle verfügbaren Felder"
-
-#: ../../Zotlabs/Module/Admin.php:1773
-msgid "Custom Fields"
-msgstr "Benutzerdefinierte Felder"
-
-#: ../../Zotlabs/Module/Admin.php:1777
-msgid "Create Custom Field"
-msgstr "Erstelle benutzerdefiniertes Feld"
-
-#: ../../Zotlabs/Module/Api.php:61 ../../Zotlabs/Module/Api.php:85
-msgid "Authorize application connection"
-msgstr "Zugriff für die Anwendung autorisieren"
-
-#: ../../Zotlabs/Module/Api.php:62
-msgid "Return to your app and insert this Securty Code:"
-msgstr "Trage folgenden Sicherheitscode in der Anwendung ein:"
-
-#: ../../Zotlabs/Module/Api.php:72
-msgid "Please login to continue."
-msgstr "Zum Weitermachen, bitte einloggen."
-
-#: ../../Zotlabs/Module/Api.php:87
-msgid ""
-"Do you want to authorize this application to access your posts and contacts,"
-" and/or create new posts for you?"
-msgstr "Möchtest Du dieser Anwendung erlauben, Deine Nachrichten und Kontakte abzurufen und/oder neue Nachrichten für Dich zu erstellen?"
-
-#: ../../Zotlabs/Module/Appman.php:32 ../../Zotlabs/Module/Appman.php:48
-msgid "App installed."
-msgstr "App installiert."
-
-#: ../../Zotlabs/Module/Appman.php:41
-msgid "Malformed app."
-msgstr "Fehlerhafte App."
-
-#: ../../Zotlabs/Module/Appman.php:84
-msgid "Embed code"
-msgstr "Code einbetten"
-
-#: ../../Zotlabs/Module/Appman.php:90
-msgid "Edit App"
-msgstr "App bearbeiten"
-
-#: ../../Zotlabs/Module/Appman.php:90
-msgid "Create App"
-msgstr "App erstellen"
-
-#: ../../Zotlabs/Module/Appman.php:95
-msgid "Name of app"
-msgstr "Name der App"
-
-#: ../../Zotlabs/Module/Appman.php:95 ../../Zotlabs/Module/Appman.php:96
-#: ../../Zotlabs/Module/Events.php:448 ../../Zotlabs/Module/Events.php:453
-#: ../../Zotlabs/Module/Profiles.php:712 ../../Zotlabs/Module/Profiles.php:716
-#: ../../include/datetime.php:246
-msgid "Required"
-msgstr "Benötigt"
-
-#: ../../Zotlabs/Module/Appman.php:96
-msgid "Location (URL) of app"
-msgstr "Ort (URL) der App"
-
-#: ../../Zotlabs/Module/Appman.php:97 ../../Zotlabs/Module/Events.php:461
-#: ../../Zotlabs/Module/Rbmark.php:101
-msgid "Description"
-msgstr "Beschreibung"
-
-#: ../../Zotlabs/Module/Appman.php:98
-msgid "Photo icon URL"
-msgstr "URL zum Icon"
-
-#: ../../Zotlabs/Module/Appman.php:98
-msgid "80 x 80 pixels - optional"
-msgstr "80 x 80 Pixel – optional"
-
-#: ../../Zotlabs/Module/Appman.php:99
-msgid "Version ID"
-msgstr "Versions-ID"
-
-#: ../../Zotlabs/Module/Appman.php:100
-msgid "Price of app"
-msgstr "Preis der App"
-
-#: ../../Zotlabs/Module/Appman.php:101
-msgid "Location (URL) to purchase app"
-msgstr "Ort (URL), um die App zu kaufen"
-
-#: ../../Zotlabs/Module/Apps.php:40 ../../include/widgets.php:102
-#: ../../include/nav.php:165
-msgid "Apps"
-msgstr "Apps"
-
-#: ../../Zotlabs/Module/Attach.php:13
-msgid "Item not available."
-msgstr "Element nicht verfügbar."
-
-#: ../../Zotlabs/Module/Block.php:31 ../../Zotlabs/Module/Page.php:40
-msgid "Invalid item."
-msgstr "Ungültiges Element."
-
-#: ../../Zotlabs/Module/Block.php:43 ../../Zotlabs/Module/Cal.php:65
-#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Wall_upload.php:33
-msgid "Channel not found."
-msgstr "Kanal nicht gefunden."
-
-#: ../../Zotlabs/Module/Blocks.php:99 ../../Zotlabs/Module/Blocks.php:154
+#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:152
+#: ../../Zotlabs/Module/Editblock.php:108
msgid "Block Name"
msgstr "Block-Name"
-#: ../../Zotlabs/Module/Blocks.php:153 ../../include/text.php:2278
+#: ../../Zotlabs/Module/Blocks.php:151 ../../include/text.php:2265
msgid "Blocks"
msgstr "Blöcke"
-#: ../../Zotlabs/Module/Blocks.php:155
+#: ../../Zotlabs/Module/Blocks.php:153
msgid "Block Title"
msgstr "Titel des Blocks"
-#: ../../Zotlabs/Module/Blocks.php:156 ../../Zotlabs/Module/Layouts.php:186
-#: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Webpages.php:200
+#: ../../Zotlabs/Module/Blocks.php:154 ../../Zotlabs/Module/Layouts.php:188
+#: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Webpages.php:198
#: ../../include/page_widgets.php:44
msgid "Created"
msgstr "Erstellt"
-#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/Layouts.php:187
-#: ../../Zotlabs/Module/Menu.php:115 ../../Zotlabs/Module/Webpages.php:201
+#: ../../Zotlabs/Module/Blocks.php:155 ../../Zotlabs/Module/Layouts.php:189
+#: ../../Zotlabs/Module/Menu.php:115 ../../Zotlabs/Module/Webpages.php:199
#: ../../include/page_widgets.php:45
msgid "Edited"
msgstr "Geändert"
-#: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Layouts.php:189
-#: ../../Zotlabs/Module/Photos.php:1071 ../../Zotlabs/Module/Webpages.php:190
-#: ../../include/conversation.php:1209
+#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:191
+#: ../../Zotlabs/Module/Photos.php:1072 ../../Zotlabs/Module/Webpages.php:188
+#: ../../include/conversation.php:1208
msgid "Share"
msgstr "Teilen"
-#: ../../Zotlabs/Module/Blocks.php:165 ../../Zotlabs/Module/Layouts.php:193
-#: ../../Zotlabs/Module/Pubsites.php:46 ../../Zotlabs/Module/Webpages.php:195
+#: ../../Zotlabs/Module/Blocks.php:163 ../../Zotlabs/Module/Layouts.php:195
+#: ../../Zotlabs/Module/Pubsites.php:47 ../../Zotlabs/Module/Webpages.php:193
#: ../../include/page_widgets.php:39
msgid "View"
msgstr "Ansicht"
-#: ../../Zotlabs/Module/Bookmarks.php:53
-msgid "Bookmark added"
-msgstr "Lesezeichen hinzugefügt"
-
-#: ../../Zotlabs/Module/Bookmarks.php:75
-msgid "My Bookmarks"
-msgstr "Meine Lesezeichen"
-
-#: ../../Zotlabs/Module/Bookmarks.php:86
-msgid "My Connections Bookmarks"
-msgstr "Lesezeichen meiner Kontakte"
-
-#: ../../Zotlabs/Module/Cal.php:41 ../../Zotlabs/Module/Photos.php:45
-#: ../../include/js_strings.php:13
-msgid "everybody"
-msgstr "alle"
+#: ../../Zotlabs/Module/Cal.php:62 ../../Zotlabs/Module/Block.php:43
+#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Wall_upload.php:33
+msgid "Channel not found."
+msgstr "Kanal nicht gefunden."
-#: ../../Zotlabs/Module/Cal.php:72
+#: ../../Zotlabs/Module/Cal.php:69
msgid "Permissions denied."
msgstr "Berechtigung verweigert."
-#: ../../Zotlabs/Module/Cal.php:262 ../../Zotlabs/Module/Events.php:585
+#: ../../Zotlabs/Module/Cal.php:259 ../../Zotlabs/Module/Events.php:588
msgid "l, F j"
msgstr "l, j. F"
-#: ../../Zotlabs/Module/Cal.php:311 ../../Zotlabs/Module/Events.php:634
-#: ../../include/text.php:1743
+#: ../../Zotlabs/Module/Cal.php:308 ../../Zotlabs/Module/Events.php:637
+#: ../../include/text.php:1732
msgid "Link to Source"
msgstr "Link zur Quelle"
-#: ../../Zotlabs/Module/Cal.php:334 ../../Zotlabs/Module/Events.php:662
+#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:665
msgid "Edit Event"
msgstr "Termin bearbeiten"
-#: ../../Zotlabs/Module/Cal.php:334 ../../Zotlabs/Module/Events.php:662
+#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:665
msgid "Create Event"
msgstr "Termin anlegen"
-#: ../../Zotlabs/Module/Cal.php:335 ../../Zotlabs/Module/Cal.php:342
-#: ../../Zotlabs/Module/Events.php:663 ../../Zotlabs/Module/Events.php:670
-#: ../../Zotlabs/Module/Photos.php:948
+#: ../../Zotlabs/Module/Cal.php:332 ../../Zotlabs/Module/Cal.php:339
+#: ../../Zotlabs/Module/Events.php:666 ../../Zotlabs/Module/Events.php:673
+#: ../../Zotlabs/Module/Photos.php:949
msgid "Previous"
msgstr "Voriges"
-#: ../../Zotlabs/Module/Cal.php:336 ../../Zotlabs/Module/Cal.php:343
-#: ../../Zotlabs/Module/Events.php:664 ../../Zotlabs/Module/Events.php:671
-#: ../../Zotlabs/Module/Photos.php:957 ../../Zotlabs/Module/Setup.php:290
+#: ../../Zotlabs/Module/Cal.php:333 ../../Zotlabs/Module/Cal.php:340
+#: ../../Zotlabs/Module/Events.php:667 ../../Zotlabs/Module/Events.php:674
+#: ../../Zotlabs/Module/Photos.php:958 ../../Zotlabs/Module/Setup.php:267
msgid "Next"
msgstr "Nächste"
-#: ../../Zotlabs/Module/Cal.php:337 ../../Zotlabs/Module/Events.php:665
-#: ../../include/widgets.php:706
+#: ../../Zotlabs/Module/Cal.php:334 ../../Zotlabs/Module/Events.php:668
+#: ../../include/widgets.php:755
msgid "Export"
msgstr "Exportieren"
-#: ../../Zotlabs/Module/Cal.php:340 ../../Zotlabs/Module/Events.php:668
-#: ../../include/widgets.php:707
+#: ../../Zotlabs/Module/Cal.php:337 ../../Zotlabs/Module/Events.php:671
+#: ../../include/widgets.php:756
msgid "Import"
msgstr "Import"
-#: ../../Zotlabs/Module/Cal.php:344 ../../Zotlabs/Module/Events.php:672
+#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Chat.php:196
+#: ../../Zotlabs/Module/Chat.php:238 ../../Zotlabs/Module/Connect.php:98
+#: ../../Zotlabs/Module/Connedit.php:731 ../../Zotlabs/Module/Events.php:475
+#: ../../Zotlabs/Module/Events.php:672 ../../Zotlabs/Module/Group.php:85
+#: ../../Zotlabs/Module/Filestorage.php:162
+#: ../../Zotlabs/Module/Import.php:550
+#: ../../Zotlabs/Module/Import_items.php:120
+#: ../../Zotlabs/Module/Invite.php:146 ../../Zotlabs/Module/Locs.php:121
+#: ../../Zotlabs/Module/Mail.php:378 ../../Zotlabs/Module/Mood.php:139
+#: ../../Zotlabs/Module/Mitem.php:235 ../../Zotlabs/Module/Photos.php:677
+#: ../../Zotlabs/Module/Photos.php:1052 ../../Zotlabs/Module/Photos.php:1092
+#: ../../Zotlabs/Module/Photos.php:1210 ../../Zotlabs/Module/Pconfig.php:107
+#: ../../Zotlabs/Module/Pdledit.php:66 ../../Zotlabs/Module/Poke.php:186
+#: ../../Zotlabs/Module/Profiles.php:687 ../../Zotlabs/Module/Rate.php:170
+#: ../../Zotlabs/Module/Admin.php:492 ../../Zotlabs/Module/Admin.php:688
+#: ../../Zotlabs/Module/Admin.php:771 ../../Zotlabs/Module/Admin.php:1032
+#: ../../Zotlabs/Module/Admin.php:1211 ../../Zotlabs/Module/Admin.php:1421
+#: ../../Zotlabs/Module/Admin.php:1648 ../../Zotlabs/Module/Admin.php:1733
+#: ../../Zotlabs/Module/Admin.php:2116 ../../Zotlabs/Module/Appman.php:126
+#: ../../Zotlabs/Module/Settings.php:590 ../../Zotlabs/Module/Settings.php:703
+#: ../../Zotlabs/Module/Settings.php:731 ../../Zotlabs/Module/Settings.php:754
+#: ../../Zotlabs/Module/Settings.php:842
+#: ../../Zotlabs/Module/Settings.php:1034 ../../Zotlabs/Module/Setup.php:312
+#: ../../Zotlabs/Module/Setup.php:353 ../../Zotlabs/Module/Sources.php:114
+#: ../../Zotlabs/Module/Sources.php:149 ../../Zotlabs/Module/Thing.php:316
+#: ../../Zotlabs/Module/Thing.php:362 ../../Zotlabs/Module/Xchan.php:15
+#: ../../Zotlabs/Lib/ThreadItem.php:710 ../../include/widgets.php:757
+#: ../../include/widgets.php:769 ../../include/js_strings.php:22
+#: ../../view/theme/redbasic/php/config.php:99
+msgid "Submit"
+msgstr "Bestätigen"
+
+#: ../../Zotlabs/Module/Cal.php:341 ../../Zotlabs/Module/Events.php:675
msgid "Today"
msgstr "Heute"
-#: ../../Zotlabs/Module/Channel.php:28 ../../Zotlabs/Module/Chat.php:23
+#: ../../Zotlabs/Module/Channel.php:29 ../../Zotlabs/Module/Chat.php:25
msgid "You must be logged in to see this page."
msgstr "Du musst angemeldet sein, um diese Seite betrachten zu können."
-#: ../../Zotlabs/Module/Channel.php:40
+#: ../../Zotlabs/Module/Channel.php:41
msgid "Posts and comments"
msgstr "Beiträge und Kommentare"
-#: ../../Zotlabs/Module/Channel.php:41
+#: ../../Zotlabs/Module/Channel.php:42
msgid "Only posts"
msgstr "Nur Beiträge"
-#: ../../Zotlabs/Module/Channel.php:101
+#: ../../Zotlabs/Module/Channel.php:102
msgid "Insufficient permissions. Request redirected to profile page."
msgstr "Unzureichende Zugriffsrechte. Die Anfrage wurde zur Profil-Seite umgeleitet."
-#: ../../Zotlabs/Module/Channel.php:135 ../../Zotlabs/Module/Network.php:173
-#: ../../Zotlabs/Module/Rpost.php:118
-msgid "Public"
-msgstr "Öffentlich"
-
-#: ../../Zotlabs/Module/Chat.php:179
+#: ../../Zotlabs/Module/Chat.php:181
msgid "Room not found"
msgstr "Chatraum nicht gefunden"
-#: ../../Zotlabs/Module/Chat.php:195
+#: ../../Zotlabs/Module/Chat.php:197
msgid "Leave Room"
msgstr "Raum verlassen"
-#: ../../Zotlabs/Module/Chat.php:196
+#: ../../Zotlabs/Module/Chat.php:198
msgid "Delete Room"
msgstr "Raum löschen"
-#: ../../Zotlabs/Module/Chat.php:197
+#: ../../Zotlabs/Module/Chat.php:199
msgid "I am away right now"
msgstr "Ich bin gerade nicht da"
-#: ../../Zotlabs/Module/Chat.php:198
+#: ../../Zotlabs/Module/Chat.php:200
msgid "I am online"
msgstr "Ich bin online"
-#: ../../Zotlabs/Module/Chat.php:200
+#: ../../Zotlabs/Module/Chat.php:202
msgid "Bookmark this room"
msgstr "Lesezeichen für diesen Raum setzen"
-#: ../../Zotlabs/Module/Chat.php:203 ../../Zotlabs/Module/Mail.php:206
-#: ../../Zotlabs/Module/Mail.php:320 ../../include/conversation.php:1170
+#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Mail.php:205
+#: ../../Zotlabs/Module/Mail.php:314 ../../include/conversation.php:1176
msgid "Please enter a link URL:"
msgstr "Gib eine URL ein:"
-#: ../../Zotlabs/Module/Chat.php:204 ../../Zotlabs/Module/Editpost.php:163
-#: ../../Zotlabs/Module/Mail.php:259 ../../Zotlabs/Module/Mail.php:389
-#: ../../include/ItemObject.php:715 ../../include/conversation.php:1274
+#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Module/Mail.php:258
+#: ../../Zotlabs/Module/Mail.php:383 ../../Zotlabs/Lib/ThreadItem.php:722
+#: ../../include/conversation.php:1256
msgid "Encrypt text"
msgstr "Text verschlüsseln"
-#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Editblock.php:149
-#: ../../Zotlabs/Module/Editlayout.php:147
-#: ../../Zotlabs/Module/Editpost.php:126
-#: ../../Zotlabs/Module/Editwebpage.php:189 ../../Zotlabs/Module/Mail.php:253
-#: ../../Zotlabs/Module/Mail.php:383 ../../include/conversation.php:1225
+#: ../../Zotlabs/Module/Chat.php:207 ../../Zotlabs/Module/Editblock.php:111
+#: ../../Zotlabs/Module/Editwebpage.php:147 ../../Zotlabs/Module/Mail.php:252
+#: ../../Zotlabs/Module/Mail.php:377 ../../include/conversation.php:1143
msgid "Insert web link"
msgstr "Link einfügen"
-#: ../../Zotlabs/Module/Chat.php:216
+#: ../../Zotlabs/Module/Chat.php:218
msgid "Feature disabled."
msgstr "Funktion deaktiviert."
-#: ../../Zotlabs/Module/Chat.php:230
+#: ../../Zotlabs/Module/Chat.php:232
msgid "New Chatroom"
msgstr "Neuer Chatraum"
-#: ../../Zotlabs/Module/Chat.php:231
+#: ../../Zotlabs/Module/Chat.php:233
msgid "Chatroom name"
msgstr "Chatraumname"
-#: ../../Zotlabs/Module/Chat.php:232
+#: ../../Zotlabs/Module/Chat.php:234
msgid "Expiration of chats (minutes)"
msgstr "Verfall von Chats (Minuten)"
-#: ../../Zotlabs/Module/Chat.php:233 ../../Zotlabs/Module/Filestorage.php:151
-#: ../../Zotlabs/Module/Photos.php:670 ../../Zotlabs/Module/Photos.php:1044
+#: ../../Zotlabs/Module/Chat.php:235 ../../Zotlabs/Module/Filestorage.php:153
+#: ../../Zotlabs/Module/Photos.php:671 ../../Zotlabs/Module/Photos.php:1045
#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:359
-#: ../../include/acl_selectors.php:251
+#: ../../include/acl_selectors.php:283
msgid "Permissions"
msgstr "Berechtigungen"
-#: ../../Zotlabs/Module/Chat.php:244
+#: ../../Zotlabs/Module/Chat.php:246
#, php-format
msgid "%1$s's Chatrooms"
msgstr "%1$ss Chaträume"
-#: ../../Zotlabs/Module/Chat.php:249
+#: ../../Zotlabs/Module/Chat.php:251
msgid "No chatrooms available"
msgstr "Keine Chaträume verfügbar"
-#: ../../Zotlabs/Module/Chat.php:250 ../../Zotlabs/Module/Manage.php:141
-#: ../../Zotlabs/Module/Profiles.php:781
+#: ../../Zotlabs/Module/Chat.php:252 ../../Zotlabs/Module/Manage.php:143
+#: ../../Zotlabs/Module/Profiles.php:778
msgid "Create New"
msgstr "Neu anlegen"
-#: ../../Zotlabs/Module/Chat.php:253
+#: ../../Zotlabs/Module/Chat.php:255
msgid "Expiration"
msgstr "Verfall"
-#: ../../Zotlabs/Module/Chat.php:254
+#: ../../Zotlabs/Module/Chat.php:256
msgid "min"
msgstr "min"
-#: ../../Zotlabs/Module/Chatsvc.php:115
+#: ../../Zotlabs/Module/Chatsvc.php:117
msgid "Away"
msgstr "Abwesend"
-#: ../../Zotlabs/Module/Chatsvc.php:120
+#: ../../Zotlabs/Module/Chatsvc.php:122
msgid "Online"
msgstr "Online"
-#: ../../Zotlabs/Module/Common.php:14
-msgid "No channel."
-msgstr "Kein Kanal."
+#: ../../Zotlabs/Module/Block.php:31 ../../Zotlabs/Module/Page.php:40
+msgid "Invalid item."
+msgstr "Ungültiges Element."
-#: ../../Zotlabs/Module/Common.php:43
-msgid "Common connections"
-msgstr "Gemeinsame Verbindungen"
+#: ../../Zotlabs/Module/Bookmarks.php:53
+msgid "Bookmark added"
+msgstr "Lesezeichen hinzugefügt"
-#: ../../Zotlabs/Module/Common.php:48
-msgid "No connections in common."
-msgstr "Keine gemeinsamen Verbindungen."
+#: ../../Zotlabs/Module/Bookmarks.php:75
+msgid "My Bookmarks"
+msgstr "Meine Lesezeichen"
+
+#: ../../Zotlabs/Module/Bookmarks.php:86
+msgid "My Connections Bookmarks"
+msgstr "Lesezeichen meiner Kontakte"
-#: ../../Zotlabs/Module/Connect.php:60 ../../Zotlabs/Module/Connect.php:108
+#: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109
msgid "Continue"
msgstr "Fortfahren"
-#: ../../Zotlabs/Module/Connect.php:89
+#: ../../Zotlabs/Module/Connect.php:90
msgid "Premium Channel Setup"
msgstr "Premium-Kanal-Einrichtung"
-#: ../../Zotlabs/Module/Connect.php:91
+#: ../../Zotlabs/Module/Connect.php:92
msgid "Enable premium channel connection restrictions"
msgstr "Einschränkungen für einen Premium-Kanal aktivieren"
-#: ../../Zotlabs/Module/Connect.php:92
+#: ../../Zotlabs/Module/Connect.php:93
msgid ""
"Please enter your restrictions or conditions, such as paypal receipt, usage "
"guidelines, etc."
msgstr "Bitte gib Deine Nutzungsbedingungen ein, z.B. Paypal-Quittung, Richtlinien etc."
-#: ../../Zotlabs/Module/Connect.php:94 ../../Zotlabs/Module/Connect.php:114
+#: ../../Zotlabs/Module/Connect.php:95 ../../Zotlabs/Module/Connect.php:115
msgid ""
"This channel may require additional steps or acknowledgement of the "
"following conditions prior to connecting:"
msgstr "Unter Umständen sind weitere Schritte oder die Bestätigung der folgenden Bedingungen vor dem Verbinden mit diesem Kanal nötig."
-#: ../../Zotlabs/Module/Connect.php:95
+#: ../../Zotlabs/Module/Connect.php:96
msgid ""
"Potential connections will then see the following text before proceeding:"
msgstr "Potentielle Kontakte werden den folgenden Text sehen, bevor fortgefahren wird:"
-#: ../../Zotlabs/Module/Connect.php:96 ../../Zotlabs/Module/Connect.php:117
+#: ../../Zotlabs/Module/Connect.php:97 ../../Zotlabs/Module/Connect.php:118
msgid ""
"By continuing, I certify that I have complied with any instructions provided"
" on this page."
msgstr "Indem ich fortfahre, bestätige ich die Erfüllung aller Anweisungen auf dieser Seite."
-#: ../../Zotlabs/Module/Connect.php:105
+#: ../../Zotlabs/Module/Connect.php:106
msgid "(No specific instructions have been provided by the channel owner.)"
msgstr "(Der Kanal-Besitzer hat keine speziellen Anweisungen hinterlegt.)"
-#: ../../Zotlabs/Module/Connect.php:113
+#: ../../Zotlabs/Module/Connect.php:114
msgid "Restricted or Premium Channel"
msgstr "Eingeschränkter oder Premium-Kanal"
-#: ../../Zotlabs/Module/Connections.php:56
-#: ../../Zotlabs/Module/Connections.php:161
-#: ../../Zotlabs/Module/Connections.php:242
-msgid "Blocked"
-msgstr "Blockiert"
-
-#: ../../Zotlabs/Module/Connections.php:61
-#: ../../Zotlabs/Module/Connections.php:168
-#: ../../Zotlabs/Module/Connections.php:241
-msgid "Ignored"
-msgstr "Ignoriert"
-
-#: ../../Zotlabs/Module/Connections.php:66
-#: ../../Zotlabs/Module/Connections.php:182
-#: ../../Zotlabs/Module/Connections.php:240
-msgid "Hidden"
-msgstr "Versteckt"
-
-#: ../../Zotlabs/Module/Connections.php:71
-#: ../../Zotlabs/Module/Connections.php:175
-#: ../../Zotlabs/Module/Connections.php:239
-msgid "Archived"
-msgstr "Archiviert"
-
-#: ../../Zotlabs/Module/Connections.php:76
-#: ../../Zotlabs/Module/Connections.php:86 ../../Zotlabs/Module/Menu.php:116
-#: ../../include/conversation.php:1553
-msgid "New"
-msgstr "Neu"
-
-#: ../../Zotlabs/Module/Connections.php:92
-#: ../../Zotlabs/Module/Connections.php:107
-#: ../../Zotlabs/Module/Connedit.php:597 ../../include/widgets.php:448
-msgid "All"
-msgstr "Alle"
-
-#: ../../Zotlabs/Module/Connections.php:138
-msgid "New Connections"
-msgstr "Neue Verbindungen"
-
-#: ../../Zotlabs/Module/Connections.php:141
-msgid "Show pending (new) connections"
-msgstr "Ausstehende (neue) Verbindungsanfragen anzeigen"
-
-#: ../../Zotlabs/Module/Connections.php:145
-#: ../../Zotlabs/Module/Profperm.php:144
-msgid "All Connections"
-msgstr "Alle Verbindungen"
-
-#: ../../Zotlabs/Module/Connections.php:148
-msgid "Show all connections"
-msgstr "Alle Verbindungen anzeigen"
-
-#: ../../Zotlabs/Module/Connections.php:164
-msgid "Only show blocked connections"
-msgstr "Nur blockierte Verbindungen anzeigen"
-
-#: ../../Zotlabs/Module/Connections.php:171
-msgid "Only show ignored connections"
-msgstr "Nur ignorierte Verbindungen anzeigen"
-
-#: ../../Zotlabs/Module/Connections.php:178
-msgid "Only show archived connections"
-msgstr "Nur archivierte Verbindungen anzeigen"
-
-#: ../../Zotlabs/Module/Connections.php:185
-msgid "Only show hidden connections"
-msgstr "Nur versteckte Verbindungen anzeigen"
-
-#: ../../Zotlabs/Module/Connections.php:238
-msgid "Pending approval"
-msgstr "Wartet auf Genehmigung"
-
-#: ../../Zotlabs/Module/Connections.php:254
-#, php-format
-msgid "%1$s [%2$s]"
-msgstr "%1$s [%2$s]"
-
-#: ../../Zotlabs/Module/Connections.php:255
-msgid "Edit connection"
-msgstr "Verbindung bearbeiten"
-
-#: ../../Zotlabs/Module/Connections.php:256
-msgid "Delete connection"
-msgstr "Verbindung löschen"
-
-#: ../../Zotlabs/Module/Connections.php:265
-msgid "Channel address"
-msgstr "Kanaladresse"
-
-#: ../../Zotlabs/Module/Connections.php:267
-msgid "Network"
-msgstr "Netzwerk"
-
-#: ../../Zotlabs/Module/Connections.php:272
-msgid "Connected"
-msgstr "Verbunden"
-
-#: ../../Zotlabs/Module/Connections.php:274
-msgid "Approve connection"
-msgstr "Verbindung genehmigen"
-
-#: ../../Zotlabs/Module/Connections.php:276
-msgid "Ignore connection"
-msgstr "Verbindung ignorieren"
-
-#: ../../Zotlabs/Module/Connections.php:277
-#: ../../Zotlabs/Module/Connedit.php:549
-#: ../../Zotlabs/Module/Notifications.php:55
-msgid "Ignore"
-msgstr "Ignorieren"
-
-#: ../../Zotlabs/Module/Connections.php:278
-msgid "Recent activity"
-msgstr "Kürzliche Aktivitäten"
-
-#: ../../Zotlabs/Module/Connections.php:302 ../../include/text.php:834
-#: ../../include/nav.php:189
-msgid "Connections"
-msgstr "Verbindungen"
-
-#: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44
-#: ../../include/apps.php:147 ../../include/text.php:904
-#: ../../include/text.php:916 ../../include/nav.php:167
-msgid "Search"
-msgstr "Suche"
-
-#: ../../Zotlabs/Module/Connections.php:307
-msgid "Search your connections"
-msgstr "Verbindungen durchsuchen"
-
-#: ../../Zotlabs/Module/Connections.php:308
-msgid "Connections search"
-msgstr "Verbindung suchen"
-
-#: ../../Zotlabs/Module/Connections.php:309
-#: ../../Zotlabs/Module/Directory.php:388
-#: ../../Zotlabs/Module/Directory.php:393 ../../include/contact_widgets.php:26
-msgid "Find"
-msgstr "Finde"
-
#: ../../Zotlabs/Module/Connedit.php:80
msgid "Could not access contact record."
msgstr "Konnte nicht auf den Kontakteintrag zugreifen."
@@ -1839,6 +587,37 @@ msgstr "Konnte den Verbindungseintrag nicht aktualisieren."
msgid "is now connected to"
msgstr "ist jetzt verbunden mit"
+#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Connedit.php:654
+#: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:460
+#: ../../Zotlabs/Module/Events.php:469 ../../Zotlabs/Module/Api.php:89
+#: ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Menu.php:100
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
+#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Admin.php:459
+#: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707
+msgid "No"
+msgstr "Nein"
+
+#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Events.php:459
+#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:469
+#: ../../Zotlabs/Module/Api.php:88 ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Menu.php:100
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
+#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Admin.php:461
+#: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707
+msgid "Yes"
+msgstr "Ja"
+
#: ../../Zotlabs/Module/Connedit.php:411
msgid "Could not access address book record."
msgstr "Konnte nicht auf den Adressbuch-Eintrag zugreifen."
@@ -1853,236 +632,260 @@ msgstr "Aktualisierung fehlgeschlagen – der Kanal ist im Moment nicht erreichb
msgid "Unable to set address book parameters."
msgstr "Konnte die Adressbuch-Parameter nicht setzen."
-#: ../../Zotlabs/Module/Connedit.php:504
+#: ../../Zotlabs/Module/Connedit.php:503
msgid "Connection has been removed."
msgstr "Verbindung wurde gelöscht."
-#: ../../Zotlabs/Module/Connedit.php:520 ../../include/conversation.php:959
-#: ../../include/nav.php:86
+#: ../../Zotlabs/Module/Connedit.php:519 ../../Zotlabs/Lib/Apps.php:219
+#: ../../include/nav.php:86 ../../include/conversation.php:954
msgid "View Profile"
msgstr "Profil ansehen"
-#: ../../Zotlabs/Module/Connedit.php:523
+#: ../../Zotlabs/Module/Connedit.php:522
#, php-format
msgid "View %s's profile"
msgstr "%ss Profil ansehen"
-#: ../../Zotlabs/Module/Connedit.php:527
+#: ../../Zotlabs/Module/Connedit.php:526
msgid "Refresh Permissions"
msgstr "Zugriffsrechte neu laden"
-#: ../../Zotlabs/Module/Connedit.php:530
+#: ../../Zotlabs/Module/Connedit.php:529
msgid "Fetch updated permissions"
msgstr "Aktualisierte Zugriffsrechte abfragen"
-#: ../../Zotlabs/Module/Connedit.php:534
+#: ../../Zotlabs/Module/Connedit.php:533
msgid "Recent Activity"
msgstr "Kürzliche Aktivitäten"
-#: ../../Zotlabs/Module/Connedit.php:537
+#: ../../Zotlabs/Module/Connedit.php:536
msgid "View recent posts and comments"
msgstr "Betrachte die neuesten Beiträge und Kommentare"
-#: ../../Zotlabs/Module/Connedit.php:544
+#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1041
+msgid "Unblock"
+msgstr "Freigeben"
+
+#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1040
+msgid "Block"
+msgstr "Blockieren"
+
+#: ../../Zotlabs/Module/Connedit.php:543
msgid "Block (or Unblock) all communications with this connection"
msgstr "Jegliche Kommunikation mit dieser Verbindung blockieren/zulassen"
-#: ../../Zotlabs/Module/Connedit.php:545
+#: ../../Zotlabs/Module/Connedit.php:544
msgid "This connection is blocked!"
msgstr "Die Verbindung ist geblockt!"
-#: ../../Zotlabs/Module/Connedit.php:549
+#: ../../Zotlabs/Module/Connedit.php:548
msgid "Unignore"
msgstr "Nicht ignorieren"
-#: ../../Zotlabs/Module/Connedit.php:552
+#: ../../Zotlabs/Module/Connedit.php:548
+#: ../../Zotlabs/Module/Connections.php:277
+#: ../../Zotlabs/Module/Notifications.php:55
+msgid "Ignore"
+msgstr "Ignorieren"
+
+#: ../../Zotlabs/Module/Connedit.php:551
msgid "Ignore (or Unignore) all inbound communications from this connection"
msgstr "Jegliche eingehende Kommunikation von dieser Verbindung ignorieren/zulassen"
-#: ../../Zotlabs/Module/Connedit.php:553
+#: ../../Zotlabs/Module/Connedit.php:552
msgid "This connection is ignored!"
msgstr "Die Verbindung wird ignoriert!"
-#: ../../Zotlabs/Module/Connedit.php:557
+#: ../../Zotlabs/Module/Connedit.php:556
msgid "Unarchive"
msgstr "Aus Archiv zurückholen"
-#: ../../Zotlabs/Module/Connedit.php:557
+#: ../../Zotlabs/Module/Connedit.php:556
msgid "Archive"
msgstr "Archivieren"
-#: ../../Zotlabs/Module/Connedit.php:560
+#: ../../Zotlabs/Module/Connedit.php:559
msgid ""
"Archive (or Unarchive) this connection - mark channel dead but keep content"
msgstr "Verbindung archivieren/aus dem Archiv zurückholen (Archiv = Kanal als erloschen markieren, aber die Beiträge behalten)"
-#: ../../Zotlabs/Module/Connedit.php:561
+#: ../../Zotlabs/Module/Connedit.php:560
msgid "This connection is archived!"
msgstr "Die Verbindung ist archiviert!"
-#: ../../Zotlabs/Module/Connedit.php:565
+#: ../../Zotlabs/Module/Connedit.php:564
msgid "Unhide"
msgstr "Wieder sichtbar machen"
-#: ../../Zotlabs/Module/Connedit.php:565
+#: ../../Zotlabs/Module/Connedit.php:564
msgid "Hide"
msgstr "Verstecken"
-#: ../../Zotlabs/Module/Connedit.php:568
+#: ../../Zotlabs/Module/Connedit.php:567
msgid "Hide or Unhide this connection from your other connections"
msgstr "Diese Verbindung vor anderen Verbindungen verstecken/zeigen"
-#: ../../Zotlabs/Module/Connedit.php:569
+#: ../../Zotlabs/Module/Connedit.php:568
msgid "This connection is hidden!"
msgstr "Die Verbindung ist versteckt!"
-#: ../../Zotlabs/Module/Connedit.php:576
+#: ../../Zotlabs/Module/Connedit.php:575
msgid "Delete this connection"
msgstr "Verbindung löschen"
-#: ../../Zotlabs/Module/Connedit.php:593 ../../include/widgets.php:444
+#: ../../Zotlabs/Module/Connedit.php:590 ../../include/widgets.php:493
msgid "Me"
msgstr "Ich"
-#: ../../Zotlabs/Module/Connedit.php:594 ../../include/widgets.php:445
+#: ../../Zotlabs/Module/Connedit.php:591 ../../include/widgets.php:494
msgid "Family"
msgstr "Familie"
-#: ../../Zotlabs/Module/Connedit.php:595 ../../Zotlabs/Module/Settings.php:340
-#: ../../Zotlabs/Module/Settings.php:344 ../../Zotlabs/Module/Settings.php:345
-#: ../../Zotlabs/Module/Settings.php:348 ../../Zotlabs/Module/Settings.php:359
-#: ../../include/identity.php:389 ../../include/identity.php:390
-#: ../../include/identity.php:397 ../../include/profile_selectors.php:80
-#: ../../include/widgets.php:446
+#: ../../Zotlabs/Module/Connedit.php:592 ../../Zotlabs/Module/Settings.php:342
+#: ../../Zotlabs/Module/Settings.php:346 ../../Zotlabs/Module/Settings.php:347
+#: ../../Zotlabs/Module/Settings.php:350 ../../Zotlabs/Module/Settings.php:361
+#: ../../include/widgets.php:495 ../../include/selectors.php:123
+#: ../../include/channel.php:389 ../../include/channel.php:390
+#: ../../include/channel.php:397
msgid "Friends"
msgstr "Freunde"
-#: ../../Zotlabs/Module/Connedit.php:596 ../../include/widgets.php:447
+#: ../../Zotlabs/Module/Connedit.php:593 ../../include/widgets.php:496
msgid "Acquaintances"
msgstr "Bekannte"
-#: ../../Zotlabs/Module/Connedit.php:657
+#: ../../Zotlabs/Module/Connedit.php:594
+#: ../../Zotlabs/Module/Connections.php:92
+#: ../../Zotlabs/Module/Connections.php:107 ../../include/widgets.php:497
+msgid "All"
+msgstr "Alle"
+
+#: ../../Zotlabs/Module/Connedit.php:654
msgid "Approve this connection"
msgstr "Verbindung genehmigen"
-#: ../../Zotlabs/Module/Connedit.php:657
+#: ../../Zotlabs/Module/Connedit.php:654
msgid "Accept connection to allow communication"
msgstr "Akzeptiere die Verbindung, um Kommunikation zu ermöglichen"
-#: ../../Zotlabs/Module/Connedit.php:662
+#: ../../Zotlabs/Module/Connedit.php:659
msgid "Set Affinity"
msgstr "Beziehung festlegen"
-#: ../../Zotlabs/Module/Connedit.php:665
+#: ../../Zotlabs/Module/Connedit.php:662
msgid "Set Profile"
msgstr "Profil festlegen"
-#: ../../Zotlabs/Module/Connedit.php:668
+#: ../../Zotlabs/Module/Connedit.php:665
msgid "Set Affinity & Profile"
msgstr "Beziehung und Profile festlegen"
-#: ../../Zotlabs/Module/Connedit.php:701
+#: ../../Zotlabs/Module/Connedit.php:698
msgid "none"
msgstr "Keine"
-#: ../../Zotlabs/Module/Connedit.php:705 ../../include/widgets.php:565
+#: ../../Zotlabs/Module/Connedit.php:702 ../../include/widgets.php:614
msgid "Connection Default Permissions"
msgstr "Standardzugriffsrechte für neue Verbindungen:"
-#: ../../Zotlabs/Module/Connedit.php:705 ../../include/items.php:5159
+#: ../../Zotlabs/Module/Connedit.php:702 ../../include/items.php:3926
#, php-format
msgid "Connection: %s"
msgstr "Verbindung: %s"
-#: ../../Zotlabs/Module/Connedit.php:706
+#: ../../Zotlabs/Module/Connedit.php:703
msgid "Apply these permissions automatically"
msgstr "Diese Berechtigungen automatisch anwenden"
-#: ../../Zotlabs/Module/Connedit.php:706
+#: ../../Zotlabs/Module/Connedit.php:703
msgid "Connection requests will be approved without your interaction"
msgstr "Verbindungsanfragen werden sofort bestätigt, ohne dass Deine aktive Zustimmung erforderlich ist."
-#: ../../Zotlabs/Module/Connedit.php:708
+#: ../../Zotlabs/Module/Connedit.php:705
msgid "This connection's primary address is"
msgstr "Die Hauptadresse der Verbindung ist"
-#: ../../Zotlabs/Module/Connedit.php:709
+#: ../../Zotlabs/Module/Connedit.php:706
msgid "Available locations:"
msgstr "Verfügbare Klone:"
-#: ../../Zotlabs/Module/Connedit.php:713
+#: ../../Zotlabs/Module/Connedit.php:710
msgid ""
"The permissions indicated on this page will be applied to all new "
"connections."
msgstr "Die auf dieser Seite angegebenen Berechtigungen werden auf alle neuen Verbindungen angewendet."
-#: ../../Zotlabs/Module/Connedit.php:715
+#: ../../Zotlabs/Module/Connedit.php:711
+msgid "Connection Tools"
+msgstr "Verbindungswerkzeuge"
+
+#: ../../Zotlabs/Module/Connedit.php:713
msgid "Slide to adjust your degree of friendship"
msgstr "Verschieben, um den Grad der Freundschaft zu einzustellen"
-#: ../../Zotlabs/Module/Connedit.php:716 ../../Zotlabs/Module/Rate.php:161
+#: ../../Zotlabs/Module/Connedit.php:714 ../../Zotlabs/Module/Rate.php:159
#: ../../include/js_strings.php:20
msgid "Rating"
msgstr "Bewertung"
-#: ../../Zotlabs/Module/Connedit.php:717
+#: ../../Zotlabs/Module/Connedit.php:715
msgid "Slide to adjust your rating"
msgstr "Verschieben, um Deine Bewertung einzustellen"
-#: ../../Zotlabs/Module/Connedit.php:718 ../../Zotlabs/Module/Connedit.php:723
+#: ../../Zotlabs/Module/Connedit.php:716 ../../Zotlabs/Module/Connedit.php:721
msgid "Optionally explain your rating"
msgstr "Optional kannst Du Deine Bewertung begründen"
-#: ../../Zotlabs/Module/Connedit.php:720
+#: ../../Zotlabs/Module/Connedit.php:718
msgid "Custom Filter"
msgstr "Benutzerdefinierter Filter"
-#: ../../Zotlabs/Module/Connedit.php:721
+#: ../../Zotlabs/Module/Connedit.php:719
msgid "Only import posts with this text"
msgstr "Nur Beiträge mit diesem Text importieren"
-#: ../../Zotlabs/Module/Connedit.php:721 ../../Zotlabs/Module/Connedit.php:722
+#: ../../Zotlabs/Module/Connedit.php:719 ../../Zotlabs/Module/Connedit.php:720
msgid ""
"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
"all posts"
msgstr "Einzelne Wörter pro Zeile, #Tags oder /Reguläre Ausdrücke/. lang=xx (z.B. lang=de) ermöglicht Filterung nach Sprache. Leer lassen, um alle Beiträge zu importieren."
-#: ../../Zotlabs/Module/Connedit.php:722
+#: ../../Zotlabs/Module/Connedit.php:720
msgid "Do not import posts with this text"
msgstr "Beiträge mit diesem Text nicht importieren"
-#: ../../Zotlabs/Module/Connedit.php:724
+#: ../../Zotlabs/Module/Connedit.php:722
msgid "This information is public!"
msgstr "Diese Information ist öffentlich!"
-#: ../../Zotlabs/Module/Connedit.php:729
+#: ../../Zotlabs/Module/Connedit.php:727
msgid "Connection Pending Approval"
msgstr "Verbindung wartet auf Bestätigung"
-#: ../../Zotlabs/Module/Connedit.php:732
+#: ../../Zotlabs/Module/Connedit.php:730
msgid "inherited"
msgstr "geerbt"
-#: ../../Zotlabs/Module/Connedit.php:734
+#: ../../Zotlabs/Module/Connedit.php:732
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr "Bitte wähle ein Profil, das wir %s zeigen sollen, wenn Deine Profilseite über eine verifizierte Verbindung aufgerufen wird."
-#: ../../Zotlabs/Module/Connedit.php:736
+#: ../../Zotlabs/Module/Connedit.php:734
msgid "Their Settings"
msgstr "Deren Einstellungen"
-#: ../../Zotlabs/Module/Connedit.php:737
+#: ../../Zotlabs/Module/Connedit.php:735
msgid "My Settings"
msgstr "Meine Einstellungen"
-#: ../../Zotlabs/Module/Connedit.php:739
+#: ../../Zotlabs/Module/Connedit.php:737
msgid "Individual Permissions"
msgstr "Individuelle Zugriffsrechte"
-#: ../../Zotlabs/Module/Connedit.php:740
+#: ../../Zotlabs/Module/Connedit.php:738
msgid ""
"Some permissions may be inherited from your channel's <a "
"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
@@ -2090,7 +893,7 @@ msgid ""
" settings here."
msgstr "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals vererbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung und können hier nicht verändert werden."
-#: ../../Zotlabs/Module/Connedit.php:741
+#: ../../Zotlabs/Module/Connedit.php:739
msgid ""
"Some permissions may be inherited from your channel's <a "
"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
@@ -2098,127 +901,14 @@ msgid ""
"they wont have any impact unless the inherited setting changes."
msgstr "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals geerbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung. Werden geerbte Einstellungen hier geändert, hat dies keine Auswirkungen."
-#: ../../Zotlabs/Module/Connedit.php:742
+#: ../../Zotlabs/Module/Connedit.php:740
msgid "Last update:"
msgstr "Letzte Aktualisierung:"
-#: ../../Zotlabs/Module/Cover_photo.php:58
-#: ../../Zotlabs/Module/Profile_photo.php:79
-msgid "Image uploaded but image cropping failed."
-msgstr "Bild hochgeladen, aber das Zurechtschneiden schlug fehl."
-
-#: ../../Zotlabs/Module/Cover_photo.php:134
-#: ../../Zotlabs/Module/Cover_photo.php:181
-msgid "Cover Photos"
-msgstr "Cover Foto"
-
-#: ../../Zotlabs/Module/Cover_photo.php:154
-#: ../../Zotlabs/Module/Profile_photo.php:133
-msgid "Image resize failed."
-msgstr "Bild-Anpassung fehlgeschlagen."
-
-#: ../../Zotlabs/Module/Cover_photo.php:168
-#: ../../Zotlabs/Module/Profile_photo.php:192 ../../include/photos.php:146
-msgid "Unable to process image"
-msgstr "Kann Bild nicht verarbeiten"
-
-#: ../../Zotlabs/Module/Cover_photo.php:192
-#: ../../Zotlabs/Module/Profile_photo.php:217
-msgid "Image upload failed."
-msgstr "Hochladen des Bilds fehlgeschlagen."
-
-#: ../../Zotlabs/Module/Cover_photo.php:210
-#: ../../Zotlabs/Module/Profile_photo.php:236
-msgid "Unable to process image."
-msgstr "Kann Bild nicht verarbeiten."
-
-#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:5587
-msgid "female"
-msgstr "weiblich"
-
-#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:5588
-#, php-format
-msgid "%1$s updated her %2$s"
-msgstr "%1$s hat ihr %2$s aktualisiert"
-
-#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:5589
-msgid "male"
-msgstr "männlich"
-
-#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:5590
-#, php-format
-msgid "%1$s updated his %2$s"
-msgstr "%1$s hat sein %2$s aktualisiert"
-
-#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:5592
-#, php-format
-msgid "%1$s updated their %2$s"
-msgstr "%1$s hat sein/ihr %2$s aktualisiert"
-
-#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/identity.php:1800
-msgid "cover photo"
-msgstr "Cover Foto"
-
-#: ../../Zotlabs/Module/Cover_photo.php:303
-#: ../../Zotlabs/Module/Cover_photo.php:318
-#: ../../Zotlabs/Module/Profile_photo.php:283
-#: ../../Zotlabs/Module/Profile_photo.php:324
-msgid "Photo not available."
-msgstr "Foto nicht verfügbar."
-
-#: ../../Zotlabs/Module/Cover_photo.php:354
-#: ../../Zotlabs/Module/Profile_photo.php:365
-msgid "Upload File:"
-msgstr "Datei hochladen:"
-
-#: ../../Zotlabs/Module/Cover_photo.php:355
-#: ../../Zotlabs/Module/Profile_photo.php:366
-msgid "Select a profile:"
-msgstr "Wähle ein Profil:"
-
-#: ../../Zotlabs/Module/Cover_photo.php:356
-msgid "Upload Cover Photo"
-msgstr "Cover Foto hochladen"
-
-#: ../../Zotlabs/Module/Cover_photo.php:361
-#: ../../Zotlabs/Module/Profile_photo.php:374
-#: ../../Zotlabs/Module/Settings.php:983
-msgid "or"
-msgstr "oder"
-
-#: ../../Zotlabs/Module/Cover_photo.php:361
-#: ../../Zotlabs/Module/Profile_photo.php:374
-msgid "skip this step"
-msgstr "diesen Schritt überspringen"
-
-#: ../../Zotlabs/Module/Cover_photo.php:361
-#: ../../Zotlabs/Module/Profile_photo.php:374
-msgid "select a photo from your photo albums"
-msgstr "ein Foto aus meinen Fotoalben"
-
-#: ../../Zotlabs/Module/Cover_photo.php:377
-#: ../../Zotlabs/Module/Profile_photo.php:390
-msgid "Crop Image"
-msgstr "Bild zuschneiden"
-
-#: ../../Zotlabs/Module/Cover_photo.php:378
-#: ../../Zotlabs/Module/Profile_photo.php:391
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Bitte schneide das Bild für eine optimale Anzeige passend zu."
-
-#: ../../Zotlabs/Module/Cover_photo.php:380
-#: ../../Zotlabs/Module/Profile_photo.php:393
-msgid "Done Editing"
-msgstr "Bearbeitung fertigstellen"
-
-#: ../../Zotlabs/Module/Dav.php:127
-msgid "$Projectname channel"
-msgstr "$Projectname-Kanal"
-
-#: ../../Zotlabs/Module/Directory.php:63 ../../Zotlabs/Module/Display.php:21
-#: ../../Zotlabs/Module/Photos.php:521 ../../Zotlabs/Module/Ratings.php:86
+#: ../../Zotlabs/Module/Directory.php:63 ../../Zotlabs/Module/Display.php:17
+#: ../../Zotlabs/Module/Photos.php:522 ../../Zotlabs/Module/Ratings.php:86
#: ../../Zotlabs/Module/Search.php:17
-#: ../../Zotlabs/Module/Viewconnections.php:21
+#: ../../Zotlabs/Module/Viewconnections.php:20
msgid "Public access denied."
msgstr "Öffentlichen Zugriff verweigert."
@@ -2241,13 +931,13 @@ msgstr "Status:"
msgid "Homepage: "
msgstr "Webseite:"
-#: ../../Zotlabs/Module/Directory.php:306 ../../include/identity.php:1322
+#: ../../Zotlabs/Module/Directory.php:306 ../../include/channel.php:1183
msgid "Age:"
msgstr "Alter:"
-#: ../../Zotlabs/Module/Directory.php:311 ../../include/identity.php:1022
-#: ../../include/bb2diaspora.php:509 ../../include/event.php:52
-#: ../../include/text.php:1452
+#: ../../Zotlabs/Module/Directory.php:311 ../../include/event.php:52
+#: ../../include/event.php:84 ../../include/channel.php:1027
+#: ../../include/bb2diaspora.php:507
msgid "Location:"
msgstr "Ort:"
@@ -2255,18 +945,18 @@ msgstr "Ort:"
msgid "Description:"
msgstr "Beschreibung:"
-#: ../../Zotlabs/Module/Directory.php:322 ../../include/identity.php:1338
+#: ../../Zotlabs/Module/Directory.php:322 ../../include/channel.php:1199
msgid "Hometown:"
msgstr "Heimatstadt:"
-#: ../../Zotlabs/Module/Directory.php:324 ../../include/identity.php:1346
+#: ../../Zotlabs/Module/Directory.php:324 ../../include/channel.php:1207
msgid "About:"
msgstr "Ãœber:"
#: ../../Zotlabs/Module/Directory.php:325 ../../Zotlabs/Module/Match.php:68
-#: ../../Zotlabs/Module/Suggest.php:56 ../../include/identity.php:1007
-#: ../../include/conversation.php:961 ../../include/Contact.php:101
-#: ../../include/widgets.php:147 ../../include/widgets.php:184
+#: ../../Zotlabs/Module/Suggest.php:56 ../../include/widgets.php:147
+#: ../../include/widgets.php:184 ../../include/connections.php:78
+#: ../../include/conversation.php:956 ../../include/channel.php:1012
msgid "Connect"
msgstr "Verbinden"
@@ -2294,12 +984,19 @@ msgstr "Globales Verzeichnis"
msgid "Local Directory"
msgstr "Lokales Verzeichnis"
+#: ../../Zotlabs/Module/Directory.php:388
+#: ../../Zotlabs/Module/Directory.php:393
+#: ../../Zotlabs/Module/Connections.php:309
+#: ../../include/contact_widgets.php:23
+msgid "Find"
+msgstr "Finde"
+
#: ../../Zotlabs/Module/Directory.php:389
msgid "Finding:"
msgstr "Ergebnisse:"
#: ../../Zotlabs/Module/Directory.php:392 ../../Zotlabs/Module/Suggest.php:64
-#: ../../include/contact_widgets.php:27
+#: ../../include/contact_widgets.php:24
msgid "Channel Suggestions"
msgstr "Kanal-Vorschläge"
@@ -2335,450 +1032,455 @@ msgstr "Älteste zuerst"
msgid "No entries (some entries may be hidden)."
msgstr "Keine Einträge gefunden (einige könnten versteckt sein)."
-#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49
-msgid "This site is not a directory server"
-msgstr "Diese Webseite ist kein Verzeichnisserver"
+#: ../../Zotlabs/Module/Display.php:40 ../../Zotlabs/Module/Filestorage.php:33
+#: ../../Zotlabs/Module/Admin.php:164 ../../Zotlabs/Module/Admin.php:1255
+#: ../../Zotlabs/Module/Admin.php:1561 ../../Zotlabs/Module/Thing.php:89
+#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:3359
+msgid "Item not found."
+msgstr "Element nicht gefunden."
-#: ../../Zotlabs/Module/Dirsearch.php:33
-msgid "This directory server requires an access token"
-msgstr "Dieser Verzeichnisserver benötigt einen Zugriffstoken"
+#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95
+#: ../../Zotlabs/Module/Editpost.php:24 ../../Zotlabs/Module/Editlayout.php:79
+#: ../../Zotlabs/Module/Editwebpage.php:81
+msgid "Item not found"
+msgstr "Element nicht gefunden"
-#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:49
-#: ../../Zotlabs/Module/Group.php:72 ../../Zotlabs/Module/Import_items.php:112
-#: ../../Zotlabs/Module/Like.php:284 ../../Zotlabs/Module/Profperm.php:28
-#: ../../Zotlabs/Module/Subthread.php:62 ../../include/items.php:423
-#: ../../index.php:173
-msgid "Permission denied"
-msgstr "Keine Berechtigung"
+#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1228
+msgid "Title (optional)"
+msgstr "Titel (optional)"
-#: ../../Zotlabs/Module/Dreport.php:27
-msgid "Invalid message"
-msgstr "Ungültige Beitrags-ID (mid)"
+#: ../../Zotlabs/Module/Editblock.php:133
+msgid "Edit Block"
+msgstr "Block bearbeiten"
-#: ../../Zotlabs/Module/Dreport.php:59
-msgid "no results"
-msgstr "keine Ergebnisse"
+#: ../../Zotlabs/Module/Common.php:14
+msgid "No channel."
+msgstr "Kein Kanal."
-#: ../../Zotlabs/Module/Dreport.php:64
-#, php-format
-msgid "Delivery report for %1$s"
-msgstr "Zustellungsbericht für %1$s"
+#: ../../Zotlabs/Module/Common.php:43
+msgid "Common connections"
+msgstr "Gemeinsame Verbindungen"
-#: ../../Zotlabs/Module/Dreport.php:78
-msgid "channel sync processed"
-msgstr "Kanal-Sync verarbeitet"
+#: ../../Zotlabs/Module/Common.php:48
+msgid "No connections in common."
+msgstr "Keine gemeinsamen Verbindungen."
-#: ../../Zotlabs/Module/Dreport.php:82
-msgid "queued"
-msgstr "zur Warteschlange hinzugefügt"
+#: ../../Zotlabs/Module/Connections.php:56
+#: ../../Zotlabs/Module/Connections.php:161
+#: ../../Zotlabs/Module/Connections.php:242
+msgid "Blocked"
+msgstr "Blockiert"
-#: ../../Zotlabs/Module/Dreport.php:86
-msgid "posted"
-msgstr "zugestellt"
+#: ../../Zotlabs/Module/Connections.php:61
+#: ../../Zotlabs/Module/Connections.php:168
+#: ../../Zotlabs/Module/Connections.php:241
+msgid "Ignored"
+msgstr "Ignoriert"
-#: ../../Zotlabs/Module/Dreport.php:90
-msgid "accepted for delivery"
-msgstr "für Zustellung akzeptiert"
+#: ../../Zotlabs/Module/Connections.php:66
+#: ../../Zotlabs/Module/Connections.php:182
+#: ../../Zotlabs/Module/Connections.php:240
+msgid "Hidden"
+msgstr "Versteckt"
-#: ../../Zotlabs/Module/Dreport.php:94
-msgid "updated"
-msgstr "aktualisiert"
+#: ../../Zotlabs/Module/Connections.php:71
+#: ../../Zotlabs/Module/Connections.php:175
+#: ../../Zotlabs/Module/Connections.php:239
+msgid "Archived"
+msgstr "Archiviert"
-#: ../../Zotlabs/Module/Dreport.php:97
-msgid "update ignored"
-msgstr "Aktualisierung ignoriert"
+#: ../../Zotlabs/Module/Connections.php:76
+#: ../../Zotlabs/Module/Connections.php:86 ../../Zotlabs/Module/Menu.php:116
+#: ../../include/conversation.php:1535
+msgid "New"
+msgstr "Neu"
-#: ../../Zotlabs/Module/Dreport.php:100
-msgid "permission denied"
-msgstr "Zugriff verweigert"
+#: ../../Zotlabs/Module/Connections.php:138
+msgid "New Connections"
+msgstr "Neue Verbindungen"
-#: ../../Zotlabs/Module/Dreport.php:104
-msgid "recipient not found"
-msgstr "Empfänger nicht gefunden."
+#: ../../Zotlabs/Module/Connections.php:141
+msgid "Show pending (new) connections"
+msgstr "Ausstehende (neue) Verbindungsanfragen anzeigen"
-#: ../../Zotlabs/Module/Dreport.php:107
-msgid "mail recalled"
-msgstr "Mail widerrufen"
+#: ../../Zotlabs/Module/Connections.php:145
+#: ../../Zotlabs/Module/Profperm.php:144
+msgid "All Connections"
+msgstr "Alle Verbindungen"
-#: ../../Zotlabs/Module/Dreport.php:110
-msgid "duplicate mail received"
-msgstr "Doppelte Mail erhalten"
+#: ../../Zotlabs/Module/Connections.php:148
+msgid "Show all connections"
+msgstr "Alle Verbindungen anzeigen"
-#: ../../Zotlabs/Module/Dreport.php:113
-msgid "mail delivered"
-msgstr "Mail zugestellt"
+#: ../../Zotlabs/Module/Connections.php:164
+msgid "Only show blocked connections"
+msgstr "Nur blockierte Verbindungen anzeigen"
-#: ../../Zotlabs/Module/Editblock.php:82 ../../Zotlabs/Module/Editblock.php:98
-#: ../../Zotlabs/Module/Editlayout.php:80 ../../Zotlabs/Module/Editpost.php:24
-#: ../../Zotlabs/Module/Editwebpage.php:81
-msgid "Item not found"
-msgstr "Element nicht gefunden"
+#: ../../Zotlabs/Module/Connections.php:171
+msgid "Only show ignored connections"
+msgstr "Nur ignorierte Verbindungen anzeigen"
-#: ../../Zotlabs/Module/Editblock.php:122
-msgid "Delete block?"
-msgstr "Block löschen?"
+#: ../../Zotlabs/Module/Connections.php:178
+msgid "Only show archived connections"
+msgstr "Nur archivierte Verbindungen anzeigen"
-#: ../../Zotlabs/Module/Editblock.php:141
-#: ../../Zotlabs/Module/Editlayout.php:140
-#: ../../Zotlabs/Module/Editpost.php:119
-#: ../../Zotlabs/Module/Editwebpage.php:182 ../../include/ItemObject.php:704
-#: ../../include/conversation.php:1216
-msgid "Bold"
-msgstr "Fett"
+#: ../../Zotlabs/Module/Connections.php:185
+msgid "Only show hidden connections"
+msgstr "Nur versteckte Verbindungen anzeigen"
-#: ../../Zotlabs/Module/Editblock.php:142
-#: ../../Zotlabs/Module/Editlayout.php:141
-#: ../../Zotlabs/Module/Editpost.php:120
-#: ../../Zotlabs/Module/Editwebpage.php:183 ../../include/ItemObject.php:705
-#: ../../include/conversation.php:1217
-msgid "Italic"
-msgstr "Kursiv"
+#: ../../Zotlabs/Module/Connections.php:238
+msgid "Pending approval"
+msgstr "Wartet auf Genehmigung"
-#: ../../Zotlabs/Module/Editblock.php:143
-#: ../../Zotlabs/Module/Editlayout.php:142
-#: ../../Zotlabs/Module/Editpost.php:121
-#: ../../Zotlabs/Module/Editwebpage.php:184 ../../include/ItemObject.php:706
-#: ../../include/conversation.php:1218
-msgid "Underline"
-msgstr "Unterstrichen"
+#: ../../Zotlabs/Module/Connections.php:254
+#, php-format
+msgid "%1$s [%2$s]"
+msgstr "%1$s [%2$s]"
-#: ../../Zotlabs/Module/Editblock.php:144
-#: ../../Zotlabs/Module/Editlayout.php:143
-#: ../../Zotlabs/Module/Editpost.php:122
-#: ../../Zotlabs/Module/Editwebpage.php:185 ../../include/ItemObject.php:707
-#: ../../include/conversation.php:1219
-msgid "Quote"
-msgstr "Zitat"
+#: ../../Zotlabs/Module/Connections.php:255
+msgid "Edit connection"
+msgstr "Verbindung bearbeiten"
-#: ../../Zotlabs/Module/Editblock.php:145
-#: ../../Zotlabs/Module/Editlayout.php:144
-#: ../../Zotlabs/Module/Editpost.php:123
-#: ../../Zotlabs/Module/Editwebpage.php:186 ../../include/ItemObject.php:708
-#: ../../include/conversation.php:1220
-msgid "Code"
-msgstr "Code"
+#: ../../Zotlabs/Module/Connections.php:256
+msgid "Delete connection"
+msgstr "Verbindung löschen"
-#: ../../Zotlabs/Module/Editblock.php:147
-#: ../../Zotlabs/Module/Editlayout.php:145
-#: ../../Zotlabs/Module/Editpost.php:124
-#: ../../Zotlabs/Module/Editwebpage.php:187
-#: ../../include/conversation.php:1221
-msgid "Upload photo"
-msgstr "Foto hochladen"
-
-#: ../../Zotlabs/Module/Editblock.php:148
-#: ../../Zotlabs/Module/Editlayout.php:146
-#: ../../Zotlabs/Module/Editpost.php:125
-#: ../../Zotlabs/Module/Editwebpage.php:188 ../../Zotlabs/Module/Mail.php:252
-#: ../../Zotlabs/Module/Mail.php:382 ../../include/conversation.php:1223
-msgid "Attach file"
-msgstr "Datei anhängen"
+#: ../../Zotlabs/Module/Connections.php:265
+msgid "Channel address"
+msgstr "Kanaladresse"
-#: ../../Zotlabs/Module/Editblock.php:150
-#: ../../Zotlabs/Module/Editlayout.php:148
-#: ../../Zotlabs/Module/Editpost.php:127
-#: ../../Zotlabs/Module/Editwebpage.php:190
-msgid "Insert YouTube video"
-msgstr "YouTube-Video einfügen"
-
-#: ../../Zotlabs/Module/Editblock.php:151
-#: ../../Zotlabs/Module/Editlayout.php:149
-#: ../../Zotlabs/Module/Editpost.php:128
-#: ../../Zotlabs/Module/Editwebpage.php:191
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Vorbis [.ogg]-Video einfügen"
-
-#: ../../Zotlabs/Module/Editblock.php:152
-#: ../../Zotlabs/Module/Editlayout.php:150
-#: ../../Zotlabs/Module/Editpost.php:129
-#: ../../Zotlabs/Module/Editwebpage.php:192
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Vorbis [.ogg]-Audio einfügen"
-
-#: ../../Zotlabs/Module/Editblock.php:153
-#: ../../Zotlabs/Module/Editlayout.php:151
-#: ../../Zotlabs/Module/Editpost.php:130
-#: ../../Zotlabs/Module/Editwebpage.php:193
-#: ../../include/conversation.php:1231
-msgid "Set your location"
-msgstr "Standort"
+#: ../../Zotlabs/Module/Connections.php:267
+msgid "Network"
+msgstr "Netzwerk"
-#: ../../Zotlabs/Module/Editblock.php:154
-#: ../../Zotlabs/Module/Editlayout.php:152
-#: ../../Zotlabs/Module/Editpost.php:131
-#: ../../Zotlabs/Module/Editwebpage.php:194
-#: ../../include/conversation.php:1236
-msgid "Clear browser location"
-msgstr "Browser-Standort löschen"
+#: ../../Zotlabs/Module/Connections.php:270 ../../Zotlabs/Module/Admin.php:710
+msgid "Status"
+msgstr "Status"
-#: ../../Zotlabs/Module/Editblock.php:155
-#: ../../Zotlabs/Module/Editlayout.php:153
-#: ../../Zotlabs/Module/Editpost.php:135
-#: ../../Zotlabs/Module/Editwebpage.php:195
-#: ../../Zotlabs/Module/Photos.php:1072 ../../include/ItemObject.php:389
-#: ../../include/conversation.php:740 ../../include/conversation.php:1244
-msgid "Please wait"
-msgstr "Bitte warten"
+#: ../../Zotlabs/Module/Connections.php:272
+msgid "Connected"
+msgstr "Verbunden"
-#: ../../Zotlabs/Module/Editblock.php:156
-#: ../../Zotlabs/Module/Editlayout.php:154
-#: ../../Zotlabs/Module/Editpost.php:136
-#: ../../Zotlabs/Module/Editwebpage.php:196
-#: ../../Zotlabs/Module/Events.php:470 ../../include/conversation.php:1245
-msgid "Permission settings"
-msgstr "Berechtigungs-Einstellungen"
+#: ../../Zotlabs/Module/Connections.php:274
+msgid "Approve connection"
+msgstr "Verbindung genehmigen"
-#: ../../Zotlabs/Module/Editblock.php:164
-#: ../../Zotlabs/Module/Editlayout.php:161
-#: ../../Zotlabs/Module/Editpost.php:144
-#: ../../Zotlabs/Module/Editwebpage.php:205
-#: ../../include/conversation.php:1254
-msgid "Public post"
-msgstr "Öffentlicher Beitrag"
+#: ../../Zotlabs/Module/Connections.php:275
+#: ../../Zotlabs/Module/Admin.php:1037
+msgid "Approve"
+msgstr "Genehmigen"
-#: ../../Zotlabs/Module/Editblock.php:167
-#: ../../Zotlabs/Module/Editpost.php:147
-#: ../../Zotlabs/Module/Editwebpage.php:210
-#: ../../include/conversation.php:1239
-msgid "Title (optional)"
-msgstr "Titel (optional)"
+#: ../../Zotlabs/Module/Connections.php:276
+msgid "Ignore connection"
+msgstr "Verbindung ignorieren"
-#: ../../Zotlabs/Module/Editblock.php:170
-#: ../../Zotlabs/Module/Editlayout.php:168
-#: ../../Zotlabs/Module/Editpost.php:149
-#: ../../Zotlabs/Module/Editwebpage.php:212
-#: ../../include/conversation.php:1243
-msgid "Categories (optional, comma-separated list)"
-msgstr "Kategorien (optional, kommagetrennte Liste)"
+#: ../../Zotlabs/Module/Connections.php:278
+msgid "Recent activity"
+msgstr "Kürzliche Aktivitäten"
-#: ../../Zotlabs/Module/Editblock.php:171
-#: ../../Zotlabs/Module/Editlayout.php:169
-#: ../../Zotlabs/Module/Editpost.php:150
-#: ../../Zotlabs/Module/Editwebpage.php:213
-#: ../../include/conversation.php:1256
-msgid "Example: bob@example.com, mary@example.com"
-msgstr "Beispiel: bob@example.com, mary@example.com"
-
-#: ../../Zotlabs/Module/Editblock.php:176
-#: ../../Zotlabs/Module/Editpost.php:155
-#: ../../Zotlabs/Module/Editwebpage.php:217
-#: ../../Zotlabs/Module/Events.php:469 ../../Zotlabs/Module/Photos.php:1092
-#: ../../Zotlabs/Module/Webpages.php:196 ../../include/ItemObject.php:712
-#: ../../include/conversation.php:1186 ../../include/page_widgets.php:40
-msgid "Preview"
-msgstr "Vorschau"
+#: ../../Zotlabs/Module/Connections.php:302 ../../Zotlabs/Lib/Apps.php:208
+#: ../../include/text.php:875 ../../include/nav.php:186
+msgid "Connections"
+msgstr "Verbindungen"
-#: ../../Zotlabs/Module/Editblock.php:181
-#: ../../Zotlabs/Module/Editlayout.php:178
-#: ../../Zotlabs/Module/Editpost.php:161
-#: ../../Zotlabs/Module/Editwebpage.php:222 ../../Zotlabs/Module/Mail.php:257
-#: ../../Zotlabs/Module/Mail.php:387 ../../include/conversation.php:1269
-msgid "Set expiration date"
-msgstr "Verfallsdatum"
+#: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44
+#: ../../Zotlabs/Lib/Apps.php:228 ../../include/text.php:945
+#: ../../include/text.php:957 ../../include/nav.php:165
+#: ../../include/acl_selectors.php:276
+msgid "Search"
+msgstr "Suche"
-#: ../../Zotlabs/Module/Editblock.php:186
-msgid "Edit Block"
-msgstr "Block bearbeiten"
+#: ../../Zotlabs/Module/Connections.php:307
+msgid "Search your connections"
+msgstr "Verbindungen durchsuchen"
-#: ../../Zotlabs/Module/Editlayout.php:116
-msgid "Delete layout?"
-msgstr "Layout löschen?"
+#: ../../Zotlabs/Module/Connections.php:308
+msgid "Connections search"
+msgstr "Verbindung suchen"
-#: ../../Zotlabs/Module/Editlayout.php:164
-#: ../../Zotlabs/Module/Layouts.php:128
-msgid "Layout Description (Optional)"
-msgstr "Layout-Beschreibung (optional)"
+#: ../../Zotlabs/Module/Cover_photo.php:58
+#: ../../Zotlabs/Module/Profile_photo.php:79
+msgid "Image uploaded but image cropping failed."
+msgstr "Bild hochgeladen, aber das Zurechtschneiden schlug fehl."
-#: ../../Zotlabs/Module/Editlayout.php:166
-#: ../../Zotlabs/Module/Layouts.php:125 ../../Zotlabs/Module/Layouts.php:184
-msgid "Layout Name"
-msgstr "Layout-Name"
+#: ../../Zotlabs/Module/Cover_photo.php:134
+#: ../../Zotlabs/Module/Cover_photo.php:181
+msgid "Cover Photos"
+msgstr "Cover Foto"
-#: ../../Zotlabs/Module/Editlayout.php:183
-msgid "Edit Layout"
-msgstr "Layout bearbeiten"
+#: ../../Zotlabs/Module/Cover_photo.php:154
+#: ../../Zotlabs/Module/Profile_photo.php:133
+msgid "Image resize failed."
+msgstr "Bild-Anpassung fehlgeschlagen."
-#: ../../Zotlabs/Module/Editpost.php:35
-msgid "Item is not editable"
-msgstr "Element kann nicht bearbeitet werden."
+#: ../../Zotlabs/Module/Cover_photo.php:168
+#: ../../Zotlabs/Module/Profile_photo.php:192 ../../include/photos.php:144
+msgid "Unable to process image"
+msgstr "Kann Bild nicht verarbeiten"
-#: ../../Zotlabs/Module/Editpost.php:60 ../../Zotlabs/Module/Mail.php:207
-#: ../../Zotlabs/Module/Mail.php:321 ../../include/conversation.php:1176
-msgid "Expires YYYY-MM-DD HH:MM"
-msgstr "Verfällt YYYY-MM-DD HH;MM"
+#: ../../Zotlabs/Module/Cover_photo.php:192
+#: ../../Zotlabs/Module/Profile_photo.php:217
+msgid "Image upload failed."
+msgstr "Hochladen des Bilds fehlgeschlagen."
-#: ../../Zotlabs/Module/Editpost.php:61
-msgid "Delete item?"
-msgstr "Eintrag löschen?"
+#: ../../Zotlabs/Module/Cover_photo.php:210
+#: ../../Zotlabs/Module/Profile_photo.php:236
+msgid "Unable to process image."
+msgstr "Kann Bild nicht verarbeiten."
-#: ../../Zotlabs/Module/Editpost.php:132 ../../include/conversation.php:1233
-msgid "Toggle voting"
-msgstr "Umfragewerkzeug aktivieren"
+#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4270
+msgid "female"
+msgstr "weiblich"
-#: ../../Zotlabs/Module/Editpost.php:165 ../../include/conversation.php:1276
-msgid "OK"
-msgstr "Ok"
+#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4271
+#, php-format
+msgid "%1$s updated her %2$s"
+msgstr "%1$s hat ihr %2$s aktualisiert"
-#: ../../Zotlabs/Module/Editpost.php:166 ../../Zotlabs/Module/Fbrowser.php:66
-#: ../../Zotlabs/Module/Fbrowser.php:88 ../../Zotlabs/Module/Settings.php:589
-#: ../../Zotlabs/Module/Settings.php:615 ../../Zotlabs/Module/Tagrm.php:15
-#: ../../Zotlabs/Module/Tagrm.php:138 ../../include/conversation.php:1277
-msgid "Cancel"
-msgstr "Abbrechen"
+#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4272
+msgid "male"
+msgstr "männlich"
-#: ../../Zotlabs/Module/Editpost.php:171 ../../Zotlabs/Module/Rpost.php:134
-msgid "Edit post"
-msgstr "Bearbeite Beitrag"
+#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4273
+#, php-format
+msgid "%1$s updated his %2$s"
+msgstr "%1$s hat sein %2$s aktualisiert"
-#: ../../Zotlabs/Module/Editwebpage.php:157
-msgid "Delete webpage?"
-msgstr "Webseite löschen?"
+#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4275
+#, php-format
+msgid "%1$s updated their %2$s"
+msgstr "%1$s hat sein/ihr %2$s aktualisiert"
-#: ../../Zotlabs/Module/Editwebpage.php:177
-msgid "Page link title"
-msgstr "Seitentitel-Link"
+#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1661
+msgid "cover photo"
+msgstr "Cover Foto"
-#: ../../Zotlabs/Module/Editwebpage.php:227
-msgid "Edit Webpage"
-msgstr "Webseite bearbeiten"
+#: ../../Zotlabs/Module/Cover_photo.php:303
+#: ../../Zotlabs/Module/Cover_photo.php:318
+#: ../../Zotlabs/Module/Profile_photo.php:283
+#: ../../Zotlabs/Module/Profile_photo.php:324
+msgid "Photo not available."
+msgstr "Foto nicht verfügbar."
-#: ../../Zotlabs/Module/Events.php:25
+#: ../../Zotlabs/Module/Cover_photo.php:354
+#: ../../Zotlabs/Module/Profile_photo.php:365
+msgid "Upload File:"
+msgstr "Datei hochladen:"
+
+#: ../../Zotlabs/Module/Cover_photo.php:355
+#: ../../Zotlabs/Module/Profile_photo.php:366
+msgid "Select a profile:"
+msgstr "Wähle ein Profil:"
+
+#: ../../Zotlabs/Module/Cover_photo.php:356
+msgid "Upload Cover Photo"
+msgstr "Cover Foto hochladen"
+
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+#: ../../Zotlabs/Module/Settings.php:985
+msgid "or"
+msgstr "oder"
+
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+msgid "skip this step"
+msgstr "diesen Schritt überspringen"
+
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+msgid "select a photo from your photo albums"
+msgstr "ein Foto aus meinen Fotoalben"
+
+#: ../../Zotlabs/Module/Cover_photo.php:377
+#: ../../Zotlabs/Module/Profile_photo.php:390
+msgid "Crop Image"
+msgstr "Bild zuschneiden"
+
+#: ../../Zotlabs/Module/Cover_photo.php:378
+#: ../../Zotlabs/Module/Profile_photo.php:391
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Bitte schneide das Bild für eine optimale Anzeige passend zu."
+
+#: ../../Zotlabs/Module/Cover_photo.php:380
+#: ../../Zotlabs/Module/Profile_photo.php:393
+msgid "Done Editing"
+msgstr "Bearbeitung fertigstellen"
+
+#: ../../Zotlabs/Module/Editpost.php:35
+msgid "Item is not editable"
+msgstr "Element kann nicht bearbeitet werden."
+
+#: ../../Zotlabs/Module/Editpost.php:106 ../../Zotlabs/Module/Rpost.php:135
+msgid "Edit post"
+msgstr "Bearbeite Beitrag"
+
+#: ../../Zotlabs/Module/Events.php:26
msgid "Calendar entries imported."
msgstr "Kalendereinträge wurden importiert."
-#: ../../Zotlabs/Module/Events.php:27
+#: ../../Zotlabs/Module/Events.php:28
msgid "No calendar entries found."
msgstr "Keine Kalendereinträge gefunden."
-#: ../../Zotlabs/Module/Events.php:104
+#: ../../Zotlabs/Module/Events.php:105
msgid "Event can not end before it has started."
msgstr "Termin-Ende liegt vor dem Beginn."
-#: ../../Zotlabs/Module/Events.php:106 ../../Zotlabs/Module/Events.php:115
-#: ../../Zotlabs/Module/Events.php:135
+#: ../../Zotlabs/Module/Events.php:107 ../../Zotlabs/Module/Events.php:116
+#: ../../Zotlabs/Module/Events.php:136
msgid "Unable to generate preview."
msgstr "Vorschau konnte nicht erzeugt werden."
-#: ../../Zotlabs/Module/Events.php:113
+#: ../../Zotlabs/Module/Events.php:114
msgid "Event title and start time are required."
msgstr "Titel und Startzeit des Termins sind erforderlich."
-#: ../../Zotlabs/Module/Events.php:133 ../../Zotlabs/Module/Events.php:258
+#: ../../Zotlabs/Module/Events.php:134 ../../Zotlabs/Module/Events.php:259
msgid "Event not found."
msgstr "Termin nicht gefunden."
-#: ../../Zotlabs/Module/Events.php:253 ../../Zotlabs/Module/Like.php:373
-#: ../../Zotlabs/Module/Tagger.php:51 ../../include/conversation.php:123
-#: ../../include/event.php:915 ../../include/text.php:1970
+#: ../../Zotlabs/Module/Events.php:254 ../../Zotlabs/Module/Like.php:373
+#: ../../Zotlabs/Module/Tagger.php:51 ../../include/event.php:949
+#: ../../include/text.php:1943 ../../include/conversation.php:123
msgid "event"
msgstr "Termin"
-#: ../../Zotlabs/Module/Events.php:448
+#: ../../Zotlabs/Module/Events.php:449
msgid "Edit event title"
msgstr "Termintitel bearbeiten"
-#: ../../Zotlabs/Module/Events.php:448
+#: ../../Zotlabs/Module/Events.php:449
msgid "Event title"
msgstr "Termintitel"
-#: ../../Zotlabs/Module/Events.php:450
+#: ../../Zotlabs/Module/Events.php:449 ../../Zotlabs/Module/Events.php:454
+#: ../../Zotlabs/Module/Profiles.php:709 ../../Zotlabs/Module/Profiles.php:713
+#: ../../Zotlabs/Module/Appman.php:115 ../../Zotlabs/Module/Appman.php:116
+#: ../../include/datetime.php:245
+msgid "Required"
+msgstr "Benötigt"
+
+#: ../../Zotlabs/Module/Events.php:451
msgid "Categories (comma-separated list)"
msgstr "Kategorien (Kommagetrennte Liste)"
-#: ../../Zotlabs/Module/Events.php:451
+#: ../../Zotlabs/Module/Events.php:452
msgid "Edit Category"
msgstr "Kategorie bearbeiten"
-#: ../../Zotlabs/Module/Events.php:451
+#: ../../Zotlabs/Module/Events.php:452
msgid "Category"
msgstr "Kategorie"
-#: ../../Zotlabs/Module/Events.php:454
+#: ../../Zotlabs/Module/Events.php:455
msgid "Edit start date and time"
msgstr "Startdatum und -zeit bearbeiten"
-#: ../../Zotlabs/Module/Events.php:454
+#: ../../Zotlabs/Module/Events.php:455
msgid "Start date and time"
msgstr "Startdatum und -zeit"
-#: ../../Zotlabs/Module/Events.php:455 ../../Zotlabs/Module/Events.php:458
+#: ../../Zotlabs/Module/Events.php:456 ../../Zotlabs/Module/Events.php:459
msgid "Finish date and time are not known or not relevant"
msgstr "Enddatum und -zeit sind unbekannt oder irrelevant"
-#: ../../Zotlabs/Module/Events.php:457
+#: ../../Zotlabs/Module/Events.php:458
msgid "Edit finish date and time"
msgstr "Enddatum und -zeit bearbeiten"
-#: ../../Zotlabs/Module/Events.php:457
+#: ../../Zotlabs/Module/Events.php:458
msgid "Finish date and time"
msgstr "Enddatum und -zeit"
-#: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:460
+#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:461
msgid "Adjust for viewer timezone"
msgstr "An die Zeitzone des Betrachters anpassen"
-#: ../../Zotlabs/Module/Events.php:459
+#: ../../Zotlabs/Module/Events.php:460
msgid ""
"Important for events that happen in a particular place. Not practical for "
"global holidays."
msgstr "Wichtig für Veranstaltungen die an bestimmten Orten stattfinden. Nicht sinnvoll für globale Feiertage / Ferien."
-#: ../../Zotlabs/Module/Events.php:461
+#: ../../Zotlabs/Module/Events.php:462
msgid "Edit Description"
msgstr "Beschreibung bearbeiten"
-#: ../../Zotlabs/Module/Events.php:463
+#: ../../Zotlabs/Module/Events.php:462 ../../Zotlabs/Module/Appman.php:117
+#: ../../Zotlabs/Module/Rbmark.php:101
+msgid "Description"
+msgstr "Beschreibung"
+
+#: ../../Zotlabs/Module/Events.php:464
msgid "Edit Location"
msgstr "Ort bearbeiten"
-#: ../../Zotlabs/Module/Events.php:463 ../../Zotlabs/Module/Locs.php:117
-#: ../../Zotlabs/Module/Profiles.php:476 ../../Zotlabs/Module/Profiles.php:701
-#: ../../Zotlabs/Module/Pubsites.php:40 ../../include/js_strings.php:25
+#: ../../Zotlabs/Module/Events.php:464 ../../Zotlabs/Module/Locs.php:117
+#: ../../Zotlabs/Module/Profiles.php:477 ../../Zotlabs/Module/Profiles.php:698
+#: ../../Zotlabs/Module/Pubsites.php:41 ../../include/js_strings.php:25
msgid "Location"
msgstr "Ort"
-#: ../../Zotlabs/Module/Events.php:466 ../../Zotlabs/Module/Events.php:468
+#: ../../Zotlabs/Module/Events.php:467 ../../Zotlabs/Module/Events.php:469
msgid "Share this event"
msgstr "Den Termin teilen"
-#: ../../Zotlabs/Module/Events.php:473
+#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Photos.php:1093
+#: ../../Zotlabs/Module/Webpages.php:194 ../../Zotlabs/Lib/ThreadItem.php:719
+#: ../../include/conversation.php:1187 ../../include/page_widgets.php:40
+msgid "Preview"
+msgstr "Vorschau"
+
+#: ../../Zotlabs/Module/Events.php:471 ../../include/conversation.php:1232
+msgid "Permission settings"
+msgstr "Berechtigungs-Einstellungen"
+
+#: ../../Zotlabs/Module/Events.php:476
msgid "Advanced Options"
msgstr "Weitere Optionen"
-#: ../../Zotlabs/Module/Events.php:607
+#: ../../Zotlabs/Module/Events.php:610
msgid "Edit event"
msgstr "Termin bearbeiten"
-#: ../../Zotlabs/Module/Events.php:609
+#: ../../Zotlabs/Module/Events.php:612
msgid "Delete event"
msgstr "Termin löschen"
-#: ../../Zotlabs/Module/Events.php:643
+#: ../../Zotlabs/Module/Events.php:646
msgid "calendar"
msgstr "Kalender"
-#: ../../Zotlabs/Module/Events.php:703
+#: ../../Zotlabs/Module/Events.php:706
msgid "Event removed"
msgstr "Termin gelöscht"
-#: ../../Zotlabs/Module/Events.php:706
+#: ../../Zotlabs/Module/Events.php:709
msgid "Failed to remove event"
msgstr "Termin konnte nicht gelöscht werden"
-#: ../../Zotlabs/Module/Fbrowser.php:29 ../../include/apps.php:139
-#: ../../include/conversation.php:1650 ../../include/nav.php:92
+#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:220
+#: ../../include/nav.php:92 ../../include/conversation.php:1632
msgid "Photos"
msgstr "Fotos"
-#: ../../Zotlabs/Module/Ffsapi.php:12
-msgid "Share content from Firefox to $Projectname"
-msgstr "Inhalte von Firefox nach $Projectname teilen"
+#: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88
+#: ../../Zotlabs/Module/Admin.php:1406 ../../Zotlabs/Module/Settings.php:591
+#: ../../Zotlabs/Module/Settings.php:617 ../../Zotlabs/Module/Tagrm.php:15
+#: ../../Zotlabs/Module/Tagrm.php:138 ../../include/conversation.php:1259
+msgid "Cancel"
+msgstr "Abbrechen"
-#: ../../Zotlabs/Module/Ffsapi.php:15
-msgid "Activate the Firefox $Projectname provider"
-msgstr "Aktiviert den $Projectname-Provider für firefox"
+#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49
+msgid "This site is not a directory server"
+msgstr "Diese Webseite ist kein Verzeichnisserver"
-#: ../../Zotlabs/Module/Filer.php:52 ../../include/conversation.php:1174
+#: ../../Zotlabs/Module/Dirsearch.php:33
+msgid "This directory server requires an access token"
+msgstr "Dieser Verzeichnisserver benötigt einen Zugriffstoken"
+
+#: ../../Zotlabs/Module/Filer.php:52
msgid "Save to Folder:"
msgstr "Speichern in Ordner:"
@@ -2786,70 +1488,103 @@ msgstr "Speichern in Ordner:"
msgid "- select -"
msgstr "– auswählen –"
-#: ../../Zotlabs/Module/Filestorage.php:86
-msgid "Permission Denied."
-msgstr "Zugriff verweigert."
+#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Admin.php:2033
+#: ../../Zotlabs/Module/Admin.php:2053 ../../Zotlabs/Module/Rbmark.php:32
+#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/text.php:946
+#: ../../include/text.php:958 ../../include/widgets.php:201
+msgid "Save"
+msgstr "Speichern"
-#: ../../Zotlabs/Module/Filestorage.php:102
-msgid "File not found."
-msgstr "Datei nicht gefunden."
+#: ../../Zotlabs/Module/Dreport.php:27
+msgid "Invalid message"
+msgstr "Ungültige Beitrags-ID (mid)"
-#: ../../Zotlabs/Module/Filestorage.php:145
-msgid "Edit file permissions"
-msgstr "Dateiberechtigungen bearbeiten"
+#: ../../Zotlabs/Module/Dreport.php:59
+msgid "no results"
+msgstr "keine Ergebnisse"
-#: ../../Zotlabs/Module/Filestorage.php:154
-msgid "Set/edit permissions"
-msgstr "Berechtigungen setzen/ändern"
+#: ../../Zotlabs/Module/Dreport.php:64
+#, php-format
+msgid "Delivery report for %1$s"
+msgstr "Zustellungsbericht für %1$s"
-#: ../../Zotlabs/Module/Filestorage.php:155
-msgid "Include all files and sub folders"
-msgstr "Alle Dateien und Unterverzeichnisse einbinden"
+#: ../../Zotlabs/Module/Dreport.php:78
+msgid "channel sync processed"
+msgstr "Kanal-Sync verarbeitet"
-#: ../../Zotlabs/Module/Filestorage.php:156
-msgid "Return to file list"
-msgstr "Zurück zur Dateiliste"
+#: ../../Zotlabs/Module/Dreport.php:82
+msgid "queued"
+msgstr "zur Warteschlange hinzugefügt"
-#: ../../Zotlabs/Module/Filestorage.php:158
-msgid "Copy/paste this code to attach file to a post"
-msgstr "Diesen Code kopieren und einfügen, um die Datei an einen Beitrag anzuhängen"
+#: ../../Zotlabs/Module/Dreport.php:86
+msgid "posted"
+msgstr "zugestellt"
-#: ../../Zotlabs/Module/Filestorage.php:159
-msgid "Copy/paste this URL to link file from a web page"
-msgstr "Diese URL verwenden, um von einer Webseite aus auf die Datei zu verlinken"
+#: ../../Zotlabs/Module/Dreport.php:90
+msgid "accepted for delivery"
+msgstr "für Zustellung akzeptiert"
-#: ../../Zotlabs/Module/Filestorage.php:161
-msgid "Share this file"
-msgstr "Diese Datei freigeben"
+#: ../../Zotlabs/Module/Dreport.php:94
+msgid "updated"
+msgstr "aktualisiert"
-#: ../../Zotlabs/Module/Filestorage.php:162
-msgid "Show URL to this file"
-msgstr "URL zu dieser Datei anzeigen"
+#: ../../Zotlabs/Module/Dreport.php:97
+msgid "update ignored"
+msgstr "Aktualisierung ignoriert"
-#: ../../Zotlabs/Module/Filestorage.php:163
-msgid "Notify your contacts about this file"
-msgstr "Meine Kontakte über diese Datei benachrichtigen"
+#: ../../Zotlabs/Module/Dreport.php:100
+msgid "permission denied"
+msgstr "Zugriff verweigert"
-#: ../../Zotlabs/Module/Follow.php:31
-msgid "Channel added."
-msgstr "Kanal hinzugefügt."
+#: ../../Zotlabs/Module/Dreport.php:104
+msgid "recipient not found"
+msgstr "Empfänger nicht gefunden."
-#: ../../Zotlabs/Module/Fsuggest.php:24 ../../Zotlabs/Module/Fsuggest.php:96
-msgid "Contact not found."
-msgstr "Kontakt nicht gefunden"
+#: ../../Zotlabs/Module/Dreport.php:107
+msgid "mail recalled"
+msgstr "Mail widerrufen"
-#: ../../Zotlabs/Module/Fsuggest.php:67
-msgid "Friend suggestion sent."
-msgstr "Freundschaftsempfehlung senden."
+#: ../../Zotlabs/Module/Dreport.php:110
+msgid "duplicate mail received"
+msgstr "Doppelte Mail erhalten"
-#: ../../Zotlabs/Module/Fsuggest.php:101
-msgid "Suggest Friends"
-msgstr "Kontakte vorschlagen"
+#: ../../Zotlabs/Module/Dreport.php:113
+msgid "mail delivered"
+msgstr "Mail zugestellt"
-#: ../../Zotlabs/Module/Fsuggest.php:103
-#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Schlage %s einen Kontakt vor"
+#: ../../Zotlabs/Module/Editlayout.php:126
+#: ../../Zotlabs/Module/Layouts.php:127 ../../Zotlabs/Module/Layouts.php:186
+msgid "Layout Name"
+msgstr "Layout-Name"
+
+#: ../../Zotlabs/Module/Editlayout.php:127
+#: ../../Zotlabs/Module/Layouts.php:130
+msgid "Layout Description (Optional)"
+msgstr "Layout-Beschreibung (optional)"
+
+#: ../../Zotlabs/Module/Editlayout.php:135
+msgid "Edit Layout"
+msgstr "Layout bearbeiten"
+
+#: ../../Zotlabs/Module/Editwebpage.php:143
+msgid "Page link"
+msgstr "Seiten-Link"
+
+#: ../../Zotlabs/Module/Editwebpage.php:169
+msgid "Edit Webpage"
+msgstr "Webseite bearbeiten"
+
+#: ../../Zotlabs/Module/Follow.php:34
+msgid "Channel added."
+msgstr "Kanal hinzugefügt."
+
+#: ../../Zotlabs/Module/Acl.php:227
+msgid "network"
+msgstr "Netzwerk"
+
+#: ../../Zotlabs/Module/Acl.php:237
+msgid "RSS"
+msgstr "RSS"
#: ../../Zotlabs/Module/Group.php:24
msgid "Privacy group created."
@@ -2860,7 +1595,7 @@ msgid "Could not create privacy group."
msgstr "Gruppe konnte nicht erstellt werden."
#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141
-#: ../../include/items.php:5126
+#: ../../include/items.php:3893
msgid "Privacy group not found."
msgstr "Gruppe nicht gefunden."
@@ -2904,6 +1639,32 @@ msgstr "Alle verbundenen Kanäle"
msgid "Click on a channel to add or remove."
msgstr "Wähle einen Kanal zum hinzufügen oder entfernen aus."
+#: ../../Zotlabs/Module/Ffsapi.php:12
+msgid "Share content from Firefox to $Projectname"
+msgstr "Inhalte von Firefox nach $Projectname teilen"
+
+#: ../../Zotlabs/Module/Ffsapi.php:15
+msgid "Activate the Firefox $Projectname provider"
+msgstr "Aktiviert den $Projectname-Provider für firefox"
+
+#: ../../Zotlabs/Module/Api.php:61 ../../Zotlabs/Module/Api.php:85
+msgid "Authorize application connection"
+msgstr "Zugriff für die Anwendung autorisieren"
+
+#: ../../Zotlabs/Module/Api.php:62
+msgid "Return to your app and insert this Securty Code:"
+msgstr "Trage folgenden Sicherheitscode in der Anwendung ein:"
+
+#: ../../Zotlabs/Module/Api.php:72
+msgid "Please login to continue."
+msgstr "Zum Weitermachen, bitte einloggen."
+
+#: ../../Zotlabs/Module/Api.php:87
+msgid ""
+"Do you want to authorize this application to access your posts and contacts,"
+" and/or create new posts for you?"
+msgstr "Möchtest Du dieser Anwendung erlauben, Deine Nachrichten und Kontakte abzurufen und/oder neue Nachrichten für Dich zu erstellen?"
+
#: ../../Zotlabs/Module/Help.php:26
msgid "Documentation Search"
msgstr "Suche in der Dokumentation"
@@ -2914,8 +1675,8 @@ msgid "Help:"
msgstr "Hilfe:"
#: ../../Zotlabs/Module/Help.php:85 ../../Zotlabs/Module/Help.php:90
-#: ../../Zotlabs/Module/Layouts.php:181 ../../include/apps.php:142
-#: ../../include/nav.php:161
+#: ../../Zotlabs/Module/Layouts.php:183 ../../Zotlabs/Lib/Apps.php:223
+#: ../../include/nav.php:159
msgid "Help"
msgstr "Hilfe"
@@ -2923,128 +1684,58 @@ msgstr "Hilfe"
msgid "$Projectname Documentation"
msgstr "$Projectname-Dokumentation"
-#: ../../Zotlabs/Module/Home.php:61 ../../Zotlabs/Module/Home.php:69
-#: ../../Zotlabs/Module/Siteinfo.php:65
-msgid "$Projectname"
-msgstr "$Projectname"
-
-#: ../../Zotlabs/Module/Home.php:79
-#, php-format
-msgid "Welcome to %s"
-msgstr "Willkommen auf %s"
-
-#: ../../Zotlabs/Module/Id.php:13
-msgid "First Name"
-msgstr "Vorname"
-
-#: ../../Zotlabs/Module/Id.php:14
-msgid "Last Name"
-msgstr "Nachname"
-
-#: ../../Zotlabs/Module/Id.php:15
-msgid "Nickname"
-msgstr "Spitzname"
-
-#: ../../Zotlabs/Module/Id.php:16
-msgid "Full Name"
-msgstr "Voller Name"
-
-#: ../../Zotlabs/Module/Id.php:19 ../../Zotlabs/Module/Id.php:20
-#: ../../Zotlabs/Module/Id.php:21 ../../include/apps.php:155
-msgid "Profile Photo"
-msgstr "Profilfoto"
-
-#: ../../Zotlabs/Module/Id.php:22
-msgid "Profile Photo 16px"
-msgstr "Profilfoto 16 px"
-
-#: ../../Zotlabs/Module/Id.php:23
-msgid "Profile Photo 32px"
-msgstr "Profilfoto 32 px"
-
-#: ../../Zotlabs/Module/Id.php:24
-msgid "Profile Photo 48px"
-msgstr "Profilfoto 48 px"
-
-#: ../../Zotlabs/Module/Id.php:25
-msgid "Profile Photo 64px"
-msgstr "Profilfoto 64 px"
-
-#: ../../Zotlabs/Module/Id.php:26
-msgid "Profile Photo 80px"
-msgstr "Profilfoto 80 px"
-
-#: ../../Zotlabs/Module/Id.php:27
-msgid "Profile Photo 128px"
-msgstr "Profilfoto 128 px"
-
-#: ../../Zotlabs/Module/Id.php:28
-msgid "Timezone"
-msgstr "Zeitzone"
-
-#: ../../Zotlabs/Module/Id.php:29 ../../Zotlabs/Module/Profiles.php:734
-msgid "Homepage URL"
-msgstr "Homepage-URL"
-
-#: ../../Zotlabs/Module/Id.php:30 ../../include/apps.php:153
-msgid "Language"
-msgstr "Sprache"
-
-#: ../../Zotlabs/Module/Id.php:31
-msgid "Birth Year"
-msgstr "Geburtsjahr"
+#: ../../Zotlabs/Module/Filestorage.php:88
+msgid "Permission Denied."
+msgstr "Zugriff verweigert."
-#: ../../Zotlabs/Module/Id.php:32
-msgid "Birth Month"
-msgstr "Geburtsmonat"
+#: ../../Zotlabs/Module/Filestorage.php:104
+msgid "File not found."
+msgstr "Datei nicht gefunden."
-#: ../../Zotlabs/Module/Id.php:33
-msgid "Birth Day"
-msgstr "Geburtstag"
+#: ../../Zotlabs/Module/Filestorage.php:147
+msgid "Edit file permissions"
+msgstr "Dateiberechtigungen bearbeiten"
-#: ../../Zotlabs/Module/Id.php:34
-msgid "Birthdate"
-msgstr "Geburtsdatum"
+#: ../../Zotlabs/Module/Filestorage.php:156
+msgid "Set/edit permissions"
+msgstr "Berechtigungen setzen/ändern"
-#: ../../Zotlabs/Module/Id.php:35 ../../Zotlabs/Module/Profiles.php:453
-msgid "Gender"
-msgstr "Geschlecht"
+#: ../../Zotlabs/Module/Filestorage.php:157
+msgid "Include all files and sub folders"
+msgstr "Alle Dateien und Unterverzeichnisse einbinden"
-#: ../../Zotlabs/Module/Id.php:108 ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
-msgid "Male"
-msgstr "Männlich"
+#: ../../Zotlabs/Module/Filestorage.php:158
+msgid "Return to file list"
+msgstr "Zurück zur Dateiliste"
-#: ../../Zotlabs/Module/Id.php:110 ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
-msgid "Female"
-msgstr "Weiblich"
+#: ../../Zotlabs/Module/Filestorage.php:160
+msgid "Copy/paste this code to attach file to a post"
+msgstr "Diesen Code kopieren und einfügen, um die Datei an einen Beitrag anzuhängen"
-#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:193
-msgid "webpage"
-msgstr "Webseite"
+#: ../../Zotlabs/Module/Filestorage.php:161
+msgid "Copy/paste this URL to link file from a web page"
+msgstr "Diese URL verwenden, um von einer Webseite aus auf die Datei zu verlinken"
-#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:199
-msgid "block"
-msgstr "Block"
+#: ../../Zotlabs/Module/Filestorage.php:163
+msgid "Share this file"
+msgstr "Diese Datei freigeben"
-#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:196
-msgid "layout"
-msgstr "Layout"
+#: ../../Zotlabs/Module/Filestorage.php:164
+msgid "Show URL to this file"
+msgstr "URL zu dieser Datei anzeigen"
-#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:202
-msgid "menu"
-msgstr "Menü"
+#: ../../Zotlabs/Module/Filestorage.php:165
+msgid "Notify your contacts about this file"
+msgstr "Meine Kontakte über diese Datei benachrichtigen"
-#: ../../Zotlabs/Module/Impel.php:196
-#, php-format
-msgid "%s element installed"
-msgstr "Element für %s installiert"
+#: ../../Zotlabs/Module/Apps.php:47 ../../include/widgets.php:102
+#: ../../include/nav.php:163
+msgid "Apps"
+msgstr "Apps"
-#: ../../Zotlabs/Module/Impel.php:199
-#, php-format
-msgid "%s element installation failed"
-msgstr "Installation des Elements %s fehlgeschlagen"
+#: ../../Zotlabs/Module/Attach.php:13
+msgid "Item not available."
+msgstr "Element nicht verfügbar."
#: ../../Zotlabs/Module/Import.php:32
#, php-format
@@ -3070,7 +1761,7 @@ msgstr "Die importierte Datei ist leer."
msgid "Warning: Database versions differ by %1$d updates."
msgstr "Achtung: Datenbankversionen unterscheiden sich um %1$d Aktualisierungen."
-#: ../../Zotlabs/Module/Import.php:150 ../../include/import.php:80
+#: ../../Zotlabs/Module/Import.php:150 ../../include/import.php:86
msgid "Cloned channel not found. Import failed."
msgstr "Geklonter Kanal nicht gefunden. Import fehlgeschlagen."
@@ -3078,48 +1769,48 @@ msgstr "Geklonter Kanal nicht gefunden. Import fehlgeschlagen."
msgid "No channel. Import failed."
msgstr "Kein Kanal. Import fehlgeschlagen."
-#: ../../Zotlabs/Module/Import.php:506
-#: ../../include/Import/import_diaspora.php:143
+#: ../../Zotlabs/Module/Import.php:510
+#: ../../include/Import/import_diaspora.php:142
msgid "Import completed."
msgstr "Import abgeschlossen."
-#: ../../Zotlabs/Module/Import.php:528
+#: ../../Zotlabs/Module/Import.php:532
msgid "You must be logged in to use this feature."
msgstr "Du musst angemeldet sein um diese Funktion zu nutzen."
-#: ../../Zotlabs/Module/Import.php:533
+#: ../../Zotlabs/Module/Import.php:537
msgid "Import Channel"
msgstr "Kanal importieren"
-#: ../../Zotlabs/Module/Import.php:534
+#: ../../Zotlabs/Module/Import.php:538
msgid ""
"Use this form to import an existing channel from a different server/hub. You"
" may retrieve the channel identity from the old server/hub via the network "
"or provide an export file."
msgstr "Verwende dieses Formular, um einen existierenden Kanal von einem anderen Hub zu importieren. Du kannst den Kanal direkt vom bisherigen Hub über das Netzwerk oder aus einer exportierten Sicherheitskopie importieren."
-#: ../../Zotlabs/Module/Import.php:535
+#: ../../Zotlabs/Module/Import.php:539
#: ../../Zotlabs/Module/Import_items.php:119
msgid "File to Upload"
msgstr "Hochzuladende Datei:"
-#: ../../Zotlabs/Module/Import.php:536
+#: ../../Zotlabs/Module/Import.php:540
msgid "Or provide the old server/hub details"
msgstr "Oder gib die Details Deines bisherigen $Projectname-Hubs ein"
-#: ../../Zotlabs/Module/Import.php:537
+#: ../../Zotlabs/Module/Import.php:541
msgid "Your old identity address (xyz@example.com)"
msgstr "Bisherige Kanal-Adresse (xyz@example.com)"
-#: ../../Zotlabs/Module/Import.php:538
+#: ../../Zotlabs/Module/Import.php:542
msgid "Your old login email address"
msgstr "Deine alte Login-E-Mail-Adresse"
-#: ../../Zotlabs/Module/Import.php:539
+#: ../../Zotlabs/Module/Import.php:543
msgid "Your old login password"
msgstr "Dein altes Passwort"
-#: ../../Zotlabs/Module/Import.php:540
+#: ../../Zotlabs/Module/Import.php:544
msgid ""
"For either option, please choose whether to make this hub your new primary "
"address, or whether your old location should continue this role. You will be"
@@ -3127,105 +1818,22 @@ msgid ""
"primary location for files, photos, and media."
msgstr "Egal, welche Option Du wählst – bitte lege fest, ob dieser Server die neue primäre Adresse dieses Kanals sein soll, oder ob der bisherige $Projectname-Hub diese Rolle weiterhin wahrnimmt. Du kannst von beiden Servern aus posten, aber nur einer kann der primäre Ort Deiner Dateien, Fotos und Medien sein."
-#: ../../Zotlabs/Module/Import.php:541
+#: ../../Zotlabs/Module/Import.php:545
msgid "Make this hub my primary location"
msgstr "Dieser $Pojectname-Hub ist mein primärer Hub."
-#: ../../Zotlabs/Module/Import.php:542
+#: ../../Zotlabs/Module/Import.php:546
msgid ""
"Import existing posts if possible (experimental - limited by available "
"memory"
msgstr "Importiere bestehende Beiträge falls möglich (experimentell - begrenzt durch zur Verfügung stehenden Speicher"
-#: ../../Zotlabs/Module/Import.php:543
+#: ../../Zotlabs/Module/Import.php:547
msgid ""
"This process may take several minutes to complete. Please submit the form "
"only once and leave this page open until finished."
msgstr "Dieser Vorgang kann einige Minuten dauern. Bitte sende das Formular nur einmal ab und lasse diese Seite bis zur Fertigstellung offen."
-#: ../../Zotlabs/Module/Import_items.php:102
-msgid "Import completed"
-msgstr "Import abgeschlossen"
-
-#: ../../Zotlabs/Module/Import_items.php:117
-msgid "Import Items"
-msgstr "Beiträge importieren"
-
-#: ../../Zotlabs/Module/Import_items.php:118
-msgid ""
-"Use this form to import existing posts and content from an export file."
-msgstr "Mit diesem Formular kannst Du existierende Beiträge und Inhalte aus einer Sicherungsdatei importieren."
-
-#: ../../Zotlabs/Module/Invite.php:29
-msgid "Total invitation limit exceeded."
-msgstr "Einladungslimit überschritten."
-
-#: ../../Zotlabs/Module/Invite.php:53
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s : Keine gültige Email Adresse."
-
-#: ../../Zotlabs/Module/Invite.php:63
-msgid "Please join us on $Projectname"
-msgstr "Schließe Dich uns auf $Projectname an!"
-
-#: ../../Zotlabs/Module/Invite.php:74
-msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr "Einladungslimit überschritten. Bitte kontaktiere den Administrator Deines $Projectname-Servers."
-
-#: ../../Zotlabs/Module/Invite.php:79
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s : Nachricht konnte nicht zugestellt werden."
-
-#: ../../Zotlabs/Module/Invite.php:83
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d Nachricht gesendet."
-msgstr[1] "%d Nachrichten gesendet."
-
-#: ../../Zotlabs/Module/Invite.php:102
-msgid "You have no more invitations available"
-msgstr "Du hast keine weiteren verfügbare Einladungen"
-
-#: ../../Zotlabs/Module/Invite.php:133
-msgid "Send invitations"
-msgstr "Einladungen senden"
-
-#: ../../Zotlabs/Module/Invite.php:134
-msgid "Enter email addresses, one per line:"
-msgstr "Email-Adressen eintragen, eine pro Zeile:"
-
-#: ../../Zotlabs/Module/Invite.php:135 ../../Zotlabs/Module/Mail.php:250
-msgid "Your message:"
-msgstr "Deine Nachricht:"
-
-#: ../../Zotlabs/Module/Invite.php:136
-msgid "Please join my community on $Projectname."
-msgstr "Schließe Dich uns auf $Projectname an!"
-
-#: ../../Zotlabs/Module/Invite.php:138
-msgid "You will need to supply this invitation code:"
-msgstr "Bitte verwende bei der Registrierung den folgenden Einladungscode:"
-
-#: ../../Zotlabs/Module/Invite.php:139
-msgid ""
-"1. Register at any $Projectname location (they are all inter-connected)"
-msgstr "1. Registriere Dich auf einem beliebigen $Projectname-Hub (sie sind alle miteinander verbunden)"
-
-#: ../../Zotlabs/Module/Invite.php:141
-msgid "2. Enter my $Projectname network address into the site searchbar."
-msgstr "2. Gib meine $Projectname-Adresse im Suchfeld ein."
-
-#: ../../Zotlabs/Module/Invite.php:142
-msgid "or visit"
-msgstr "oder besuche"
-
-#: ../../Zotlabs/Module/Invite.php:144
-msgid "3. Click [Connect]"
-msgstr "3. Klicke auf [Verbinden]"
-
#: ../../Zotlabs/Module/Item.php:178
msgid "Unable to locate original post."
msgstr "Originalbeitrag nicht gefunden."
@@ -3260,22 +1868,151 @@ msgstr "Du hast die maximale Anzahl von %1$.0f Beiträgen erreicht."
msgid "You have reached your limit of %1$.0f webpages."
msgstr "Du hast die maximale Anzahl von %1$.0f Webseiten erreicht."
-#: ../../Zotlabs/Module/Layouts.php:179 ../../include/text.php:2280
+#: ../../Zotlabs/Module/Layouts.php:181 ../../include/text.php:2267
msgid "Layouts"
msgstr "Layouts"
-#: ../../Zotlabs/Module/Layouts.php:181
+#: ../../Zotlabs/Module/Layouts.php:183
msgid "Comanche page description language help"
msgstr "Hilfe zur Comanche-Seitenbeschreibungssprache"
-#: ../../Zotlabs/Module/Layouts.php:185
+#: ../../Zotlabs/Module/Layouts.php:187
msgid "Layout Description"
msgstr "Layout-Beschreibung"
-#: ../../Zotlabs/Module/Layouts.php:190
+#: ../../Zotlabs/Module/Layouts.php:192
msgid "Download PDL file"
msgstr "PDL-Datei herunterladen"
+#: ../../Zotlabs/Module/Home.php:61 ../../Zotlabs/Module/Home.php:69
+#: ../../Zotlabs/Module/Siteinfo.php:65
+msgid "$Projectname"
+msgstr "$Projectname"
+
+#: ../../Zotlabs/Module/Home.php:79
+#, php-format
+msgid "Welcome to %s"
+msgstr "Willkommen auf %s"
+
+#: ../../Zotlabs/Module/Id.php:13
+msgid "First Name"
+msgstr "Vorname"
+
+#: ../../Zotlabs/Module/Id.php:14
+msgid "Last Name"
+msgstr "Nachname"
+
+#: ../../Zotlabs/Module/Id.php:15
+msgid "Nickname"
+msgstr "Spitzname"
+
+#: ../../Zotlabs/Module/Id.php:16
+msgid "Full Name"
+msgstr "Voller Name"
+
+#: ../../Zotlabs/Module/Id.php:17 ../../Zotlabs/Module/Id.php:18
+#: ../../Zotlabs/Module/Admin.php:1035 ../../Zotlabs/Module/Admin.php:1047
+#: ../../include/network.php:2151 ../../boot.php:1705
+msgid "Email"
+msgstr "E-Mail"
+
+#: ../../Zotlabs/Module/Id.php:19 ../../Zotlabs/Module/Id.php:20
+#: ../../Zotlabs/Module/Id.php:21 ../../Zotlabs/Lib/Apps.php:236
+msgid "Profile Photo"
+msgstr "Profilfoto"
+
+#: ../../Zotlabs/Module/Id.php:22
+msgid "Profile Photo 16px"
+msgstr "Profilfoto 16 px"
+
+#: ../../Zotlabs/Module/Id.php:23
+msgid "Profile Photo 32px"
+msgstr "Profilfoto 32 px"
+
+#: ../../Zotlabs/Module/Id.php:24
+msgid "Profile Photo 48px"
+msgstr "Profilfoto 48 px"
+
+#: ../../Zotlabs/Module/Id.php:25
+msgid "Profile Photo 64px"
+msgstr "Profilfoto 64 px"
+
+#: ../../Zotlabs/Module/Id.php:26
+msgid "Profile Photo 80px"
+msgstr "Profilfoto 80 px"
+
+#: ../../Zotlabs/Module/Id.php:27
+msgid "Profile Photo 128px"
+msgstr "Profilfoto 128 px"
+
+#: ../../Zotlabs/Module/Id.php:28
+msgid "Timezone"
+msgstr "Zeitzone"
+
+#: ../../Zotlabs/Module/Id.php:29 ../../Zotlabs/Module/Profiles.php:731
+msgid "Homepage URL"
+msgstr "Homepage-URL"
+
+#: ../../Zotlabs/Module/Id.php:30 ../../Zotlabs/Lib/Apps.php:234
+msgid "Language"
+msgstr "Sprache"
+
+#: ../../Zotlabs/Module/Id.php:31
+msgid "Birth Year"
+msgstr "Geburtsjahr"
+
+#: ../../Zotlabs/Module/Id.php:32
+msgid "Birth Month"
+msgstr "Geburtsmonat"
+
+#: ../../Zotlabs/Module/Id.php:33
+msgid "Birth Day"
+msgstr "Geburtstag"
+
+#: ../../Zotlabs/Module/Id.php:34
+msgid "Birthdate"
+msgstr "Geburtsdatum"
+
+#: ../../Zotlabs/Module/Id.php:35 ../../Zotlabs/Module/Profiles.php:454
+msgid "Gender"
+msgstr "Geschlecht"
+
+#: ../../Zotlabs/Module/Id.php:108 ../../include/selectors.php:49
+#: ../../include/selectors.php:66
+msgid "Male"
+msgstr "Männlich"
+
+#: ../../Zotlabs/Module/Id.php:110 ../../include/selectors.php:49
+#: ../../include/selectors.php:66
+msgid "Female"
+msgstr "Weiblich"
+
+#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:192
+msgid "webpage"
+msgstr "Webseite"
+
+#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:198
+msgid "block"
+msgstr "Block"
+
+#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:195
+msgid "layout"
+msgstr "Layout"
+
+#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:201
+msgid "menu"
+msgstr "Menü"
+
+#: ../../Zotlabs/Module/Impel.php:196
+#, php-format
+msgid "%s element installed"
+msgstr "Element für %s installiert"
+
+#: ../../Zotlabs/Module/Impel.php:199
+#, php-format
+msgid "%s element installation failed"
+msgstr "Installation des Elements %s fehlgeschlagen"
+
#: ../../Zotlabs/Module/Like.php:19
msgid "Like/Dislike"
msgstr "Mögen/Nicht mögen"
@@ -3312,13 +2049,13 @@ msgid "Previous action reversed."
msgstr "Die vorherige Aktion wurde rückgängig gemacht."
#: ../../Zotlabs/Module/Like.php:371 ../../Zotlabs/Module/Subthread.php:87
-#: ../../Zotlabs/Module/Tagger.php:47 ../../include/conversation.php:120
-#: ../../include/text.php:1967
+#: ../../Zotlabs/Module/Tagger.php:47 ../../include/text.php:1940
+#: ../../include/conversation.php:120
msgid "photo"
msgstr "Foto"
#: ../../Zotlabs/Module/Like.php:371 ../../Zotlabs/Module/Subthread.php:87
-#: ../../include/conversation.php:148 ../../include/text.php:1973
+#: ../../include/text.php:1946 ../../include/conversation.php:148
msgid "status"
msgstr "Status"
@@ -3370,6 +2107,89 @@ msgstr "Aktion durchgeführt."
msgid "Thank you."
msgstr "Vielen Dank."
+#: ../../Zotlabs/Module/Import_items.php:102
+msgid "Import completed"
+msgstr "Import abgeschlossen"
+
+#: ../../Zotlabs/Module/Import_items.php:117
+msgid "Import Items"
+msgstr "Beiträge importieren"
+
+#: ../../Zotlabs/Module/Import_items.php:118
+msgid ""
+"Use this form to import existing posts and content from an export file."
+msgstr "Mit diesem Formular kannst Du existierende Beiträge und Inhalte aus einer Sicherungsdatei importieren."
+
+#: ../../Zotlabs/Module/Invite.php:29
+msgid "Total invitation limit exceeded."
+msgstr "Einladungslimit überschritten."
+
+#: ../../Zotlabs/Module/Invite.php:53
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s : Keine gültige Email Adresse."
+
+#: ../../Zotlabs/Module/Invite.php:63
+msgid "Please join us on $Projectname"
+msgstr "Schließe Dich uns auf $Projectname an!"
+
+#: ../../Zotlabs/Module/Invite.php:74
+msgid "Invitation limit exceeded. Please contact your site administrator."
+msgstr "Einladungslimit überschritten. Bitte kontaktiere den Administrator Deines $Projectname-Servers."
+
+#: ../../Zotlabs/Module/Invite.php:79
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s : Nachricht konnte nicht zugestellt werden."
+
+#: ../../Zotlabs/Module/Invite.php:83
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d Nachricht gesendet."
+msgstr[1] "%d Nachrichten gesendet."
+
+#: ../../Zotlabs/Module/Invite.php:102
+msgid "You have no more invitations available"
+msgstr "Du hast keine weiteren verfügbare Einladungen"
+
+#: ../../Zotlabs/Module/Invite.php:133
+msgid "Send invitations"
+msgstr "Einladungen senden"
+
+#: ../../Zotlabs/Module/Invite.php:134
+msgid "Enter email addresses, one per line:"
+msgstr "Email-Adressen eintragen, eine pro Zeile:"
+
+#: ../../Zotlabs/Module/Invite.php:135 ../../Zotlabs/Module/Mail.php:249
+msgid "Your message:"
+msgstr "Deine Nachricht:"
+
+#: ../../Zotlabs/Module/Invite.php:136
+msgid "Please join my community on $Projectname."
+msgstr "Schließe Dich uns auf $Projectname an!"
+
+#: ../../Zotlabs/Module/Invite.php:138
+msgid "You will need to supply this invitation code:"
+msgstr "Bitte verwende bei der Registrierung den folgenden Einladungscode:"
+
+#: ../../Zotlabs/Module/Invite.php:139
+msgid ""
+"1. Register at any $Projectname location (they are all inter-connected)"
+msgstr "1. Registriere Dich auf einem beliebigen $Projectname-Hub (sie sind alle miteinander verbunden)"
+
+#: ../../Zotlabs/Module/Invite.php:141
+msgid "2. Enter my $Projectname network address into the site searchbar."
+msgstr "2. Gib meine $Projectname-Adresse im Suchfeld ein."
+
+#: ../../Zotlabs/Module/Invite.php:142
+msgid "or visit"
+msgstr "oder besuche"
+
+#: ../../Zotlabs/Module/Invite.php:144
+msgid "3. Click [Connect]"
+msgstr "3. Klicke auf [Verbinden]"
+
#: ../../Zotlabs/Module/Lockview.php:61
msgid "Remote privacy information not available."
msgstr "Privatsphäre-Einstellungen anderer Nutzer sind nicht verfügbar."
@@ -3404,6 +2224,11 @@ msgstr "Keine Klon-Adressen gefunden."
msgid "Manage Channel Locations"
msgstr "Klon-Adressen verwalten"
+#: ../../Zotlabs/Module/Locs.php:118 ../../Zotlabs/Module/Profiles.php:470
+#: ../../Zotlabs/Module/Admin.php:1224
+msgid "Address"
+msgstr "Adresse"
+
#: ../../Zotlabs/Module/Locs.php:119
msgid "Primary"
msgstr "Primär"
@@ -3430,80 +2255,7 @@ msgstr "Wenn möglich, lösche einen Klon, indem Du Dich auf dem jeweiligen Hub
msgid "Use this form to drop the location if the hub is no longer operating."
msgstr "Benutze dieses Formular zum Löschen eines Klons, wenn es den Hub nicht mehr gibt."
-#: ../../Zotlabs/Module/Lostpass.php:19
-msgid "No valid account found."
-msgstr "Kein gültiges Konto gefunden."
-
-#: ../../Zotlabs/Module/Lostpass.php:33
-msgid "Password reset request issued. Check your email."
-msgstr "Zurücksetzen des Passworts eingeleitet. Schau in Deine E-Mails."
-
-#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:107
-#, php-format
-msgid "Site Member (%s)"
-msgstr "Nutzer (%s)"
-
-#: ../../Zotlabs/Module/Lostpass.php:44
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "Passwort-Rücksetzung auf %s angefordert"
-
-#: ../../Zotlabs/Module/Lostpass.php:67
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "Die Anfrage konnte nicht verifiziert werden. (Vielleicht hast Du schon einmal auf den Link in der E-Mail geklickt?) Passwort-Rücksetzung fehlgeschlagen."
-
-#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1610
-msgid "Password Reset"
-msgstr "Zurücksetzen des Kennworts"
-
-#: ../../Zotlabs/Module/Lostpass.php:91
-msgid "Your password has been reset as requested."
-msgstr "Dein Passwort wurde wie angefordert neu erstellt."
-
-#: ../../Zotlabs/Module/Lostpass.php:92
-msgid "Your new password is"
-msgstr "Dein neues Passwort lautet"
-
-#: ../../Zotlabs/Module/Lostpass.php:93
-msgid "Save or copy your new password - and then"
-msgstr "Speichere oder kopiere Dein neues Passwort – und dann"
-
-#: ../../Zotlabs/Module/Lostpass.php:94
-msgid "click here to login"
-msgstr "Klicke hier, um dich anzumelden"
-
-#: ../../Zotlabs/Module/Lostpass.php:95
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Dein Passwort kann unter <em>Einstellungen</em> nach einer erfolgreichen Anmeldung geändert werden."
-
-#: ../../Zotlabs/Module/Lostpass.php:112
-#, php-format
-msgid "Your password has changed at %s"
-msgstr "Auf %s wurde Dein Passwort geändert"
-
-#: ../../Zotlabs/Module/Lostpass.php:127
-msgid "Forgot your Password?"
-msgstr "Kennwort vergessen?"
-
-#: ../../Zotlabs/Module/Lostpass.php:128
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Gib Deine E-Mail-Adresse ein, um Dein Passwort zurücksetzen zu lassen. Du erhältst dann weitere Anweisungen per E-Mail."
-
-#: ../../Zotlabs/Module/Lostpass.php:129
-msgid "Email Address"
-msgstr "E-Mail Adresse"
-
-#: ../../Zotlabs/Module/Lostpass.php:130
-msgid "Reset"
-msgstr "Zurücksetzen"
-
-#: ../../Zotlabs/Module/Magic.php:73
+#: ../../Zotlabs/Module/Magic.php:71
msgid "Hub not found."
msgstr "Server nicht gefunden."
@@ -3511,145 +2263,216 @@ msgstr "Server nicht gefunden."
msgid "Unable to lookup recipient."
msgstr "Konnte den Empfänger nicht finden."
-#: ../../Zotlabs/Module/Mail.php:46
+#: ../../Zotlabs/Module/Mail.php:45
msgid "Unable to communicate with requested channel."
msgstr "Die Kommunikation mit dem ausgewählten Kanal ist fehlgeschlagen."
-#: ../../Zotlabs/Module/Mail.php:53
+#: ../../Zotlabs/Module/Mail.php:52
msgid "Cannot verify requested channel."
msgstr "Verifizierung des angeforderten Kanals fehlgeschlagen."
-#: ../../Zotlabs/Module/Mail.php:79
+#: ../../Zotlabs/Module/Mail.php:78
msgid "Selected channel has private message restrictions. Send failed."
msgstr "Der ausgewählte Kanal hat Einschränkungen bzgl. privater Nachrichten. Senden fehlgeschlagen."
-#: ../../Zotlabs/Module/Mail.php:144
+#: ../../Zotlabs/Module/Mail.php:143
msgid "Messages"
msgstr "Nachrichten"
-#: ../../Zotlabs/Module/Mail.php:179
+#: ../../Zotlabs/Module/Mail.php:178
msgid "Message recalled."
msgstr "Nachricht widerrufen."
-#: ../../Zotlabs/Module/Mail.php:192
+#: ../../Zotlabs/Module/Mail.php:191
msgid "Conversation removed."
msgstr "Unterhaltung gelöscht."
-#: ../../Zotlabs/Module/Mail.php:235
+#: ../../Zotlabs/Module/Mail.php:206 ../../Zotlabs/Module/Mail.php:315
+msgid "Expires YYYY-MM-DD HH:MM"
+msgstr "Verfällt YYYY-MM-DD HH;MM"
+
+#: ../../Zotlabs/Module/Mail.php:234
msgid "Requested channel is not in this network"
msgstr "Angeforderter Kanal ist nicht in diesem Netzwerk."
-#: ../../Zotlabs/Module/Mail.php:243
+#: ../../Zotlabs/Module/Mail.php:242
msgid "Send Private Message"
msgstr "Private Nachricht senden"
-#: ../../Zotlabs/Module/Mail.php:244 ../../Zotlabs/Module/Mail.php:374
+#: ../../Zotlabs/Module/Mail.php:243 ../../Zotlabs/Module/Mail.php:368
msgid "To:"
msgstr "An:"
-#: ../../Zotlabs/Module/Mail.php:247 ../../Zotlabs/Module/Mail.php:376
+#: ../../Zotlabs/Module/Mail.php:246 ../../Zotlabs/Module/Mail.php:370
msgid "Subject:"
msgstr "Betreff:"
-#: ../../Zotlabs/Module/Mail.php:254
+#: ../../Zotlabs/Module/Mail.php:251 ../../Zotlabs/Module/Mail.php:376
+#: ../../include/conversation.php:1220
+msgid "Attach file"
+msgstr "Datei anhängen"
+
+#: ../../Zotlabs/Module/Mail.php:253
msgid "Send"
msgstr "Absenden"
-#: ../../Zotlabs/Module/Mail.php:346
+#: ../../Zotlabs/Module/Mail.php:256 ../../Zotlabs/Module/Mail.php:381
+#: ../../include/conversation.php:1251
+msgid "Set expiration date"
+msgstr "Verfallsdatum"
+
+#: ../../Zotlabs/Module/Mail.php:340
msgid "Delete message"
msgstr "Nachricht löschen"
-#: ../../Zotlabs/Module/Mail.php:347
+#: ../../Zotlabs/Module/Mail.php:341
msgid "Delivery report"
msgstr "Zustellungsbericht"
-#: ../../Zotlabs/Module/Mail.php:348
+#: ../../Zotlabs/Module/Mail.php:342
msgid "Recall message"
msgstr "Nachricht widerrufen"
-#: ../../Zotlabs/Module/Mail.php:350
+#: ../../Zotlabs/Module/Mail.php:344
msgid "Message has been recalled."
msgstr "Die Nachricht wurde widerrufen."
-#: ../../Zotlabs/Module/Mail.php:367
+#: ../../Zotlabs/Module/Mail.php:361
msgid "Delete Conversation"
msgstr "Unterhaltung löschen"
-#: ../../Zotlabs/Module/Mail.php:369
+#: ../../Zotlabs/Module/Mail.php:363
msgid ""
"No secure communications available. You <strong>may</strong> be able to "
"respond from the sender's profile page."
msgstr "Keine sichere Kommunikation verfügbar. <strong>Eventuell</strong> kannst Du auf der Profilseite des Absenders antworten."
-#: ../../Zotlabs/Module/Mail.php:373
+#: ../../Zotlabs/Module/Mail.php:367
msgid "Send Reply"
msgstr "Antwort senden"
-#: ../../Zotlabs/Module/Mail.php:378
+#: ../../Zotlabs/Module/Mail.php:372
#, php-format
msgid "Your message for %s (%s):"
msgstr "Deine Nachricht für %s (%s):"
-#: ../../Zotlabs/Module/Manage.php:134
+#: ../../Zotlabs/Module/Manage.php:136
#: ../../Zotlabs/Module/New_channel.php:121
#, php-format
msgid "You have created %1$.0f of %2$.0f allowed channels."
msgstr "Du hast %1$.0f von maximal %2$.0f erlaubten Kanälen eingerichtet."
-#: ../../Zotlabs/Module/Manage.php:141
+#: ../../Zotlabs/Module/Manage.php:143
msgid "Create a new channel"
msgstr "Neuen Kanal anlegen"
-#: ../../Zotlabs/Module/Manage.php:162 ../../include/apps.php:132
-#: ../../include/nav.php:209
+#: ../../Zotlabs/Module/Manage.php:164 ../../Zotlabs/Lib/Apps.php:213
+#: ../../include/nav.php:206
msgid "Channel Manager"
msgstr "Kanal-Manager"
-#: ../../Zotlabs/Module/Manage.php:163
+#: ../../Zotlabs/Module/Manage.php:165
msgid "Current Channel"
msgstr "Aktueller Kanal"
-#: ../../Zotlabs/Module/Manage.php:165
+#: ../../Zotlabs/Module/Manage.php:167
msgid "Switch to one of your channels by selecting it."
msgstr "Wechsle zu einem Deiner Kanäle, indem Du auf ihn klickst."
-#: ../../Zotlabs/Module/Manage.php:166
+#: ../../Zotlabs/Module/Manage.php:168
msgid "Default Channel"
msgstr "Standard Kanal"
-#: ../../Zotlabs/Module/Manage.php:167
+#: ../../Zotlabs/Module/Manage.php:169
msgid "Make Default"
msgstr "Zum Standard machen"
-#: ../../Zotlabs/Module/Manage.php:170
+#: ../../Zotlabs/Module/Manage.php:172
#, php-format
msgid "%d new messages"
msgstr "%d neue Nachrichten"
-#: ../../Zotlabs/Module/Manage.php:171
+#: ../../Zotlabs/Module/Manage.php:173
#, php-format
msgid "%d new introductions"
msgstr "%d neue Vorstellungen"
-#: ../../Zotlabs/Module/Manage.php:173
+#: ../../Zotlabs/Module/Manage.php:175
msgid "Delegated Channel"
msgstr "Delegierte Kanäle"
-#: ../../Zotlabs/Module/Match.php:26
-msgid "Profile Match"
-msgstr "Profil-Ãœbereinstimmungen"
+#: ../../Zotlabs/Module/Lostpass.php:19
+msgid "No valid account found."
+msgstr "Kein gültiges Konto gefunden."
-#: ../../Zotlabs/Module/Match.php:35
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr "Keine Schlüsselwörter für den Abgleich gefunden. Bitte füge Schlüsselwörter zu Deinem Standardprofil hinzu."
+#: ../../Zotlabs/Module/Lostpass.php:33
+msgid "Password reset request issued. Check your email."
+msgstr "Zurücksetzen des Passworts eingeleitet. Schau in Deine E-Mails."
-#: ../../Zotlabs/Module/Match.php:67
-msgid "is interested in:"
-msgstr "interessiert sich für:"
+#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:107
+#, php-format
+msgid "Site Member (%s)"
+msgstr "Nutzer (%s)"
-#: ../../Zotlabs/Module/Match.php:74
-msgid "No matches"
-msgstr "Keine Ãœbereinstimmungen"
+#: ../../Zotlabs/Module/Lostpass.php:44
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "Passwort-Rücksetzung auf %s angefordert"
+
+#: ../../Zotlabs/Module/Lostpass.php:67
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "Die Anfrage konnte nicht verifiziert werden. (Vielleicht hast Du schon einmal auf den Link in der E-Mail geklickt?) Passwort-Rücksetzung fehlgeschlagen."
+
+#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1711
+msgid "Password Reset"
+msgstr "Zurücksetzen des Kennworts"
+
+#: ../../Zotlabs/Module/Lostpass.php:91
+msgid "Your password has been reset as requested."
+msgstr "Dein Passwort wurde wie angefordert neu erstellt."
+
+#: ../../Zotlabs/Module/Lostpass.php:92
+msgid "Your new password is"
+msgstr "Dein neues Passwort lautet"
+
+#: ../../Zotlabs/Module/Lostpass.php:93
+msgid "Save or copy your new password - and then"
+msgstr "Speichere oder kopiere Dein neues Passwort – und dann"
+
+#: ../../Zotlabs/Module/Lostpass.php:94
+msgid "click here to login"
+msgstr "Klicke hier, um dich anzumelden"
+
+#: ../../Zotlabs/Module/Lostpass.php:95
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Dein Passwort kann unter <em>Einstellungen</em> nach einer erfolgreichen Anmeldung geändert werden."
+
+#: ../../Zotlabs/Module/Lostpass.php:112
+#, php-format
+msgid "Your password has changed at %s"
+msgstr "Auf %s wurde Dein Passwort geändert"
+
+#: ../../Zotlabs/Module/Lostpass.php:127
+msgid "Forgot your Password?"
+msgstr "Kennwort vergessen?"
+
+#: ../../Zotlabs/Module/Lostpass.php:128
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Gib Deine E-Mail-Adresse ein, um Dein Passwort zurücksetzen zu lassen. Du erhältst dann weitere Anweisungen per E-Mail."
+
+#: ../../Zotlabs/Module/Lostpass.php:129
+msgid "Email Address"
+msgstr "E-Mail Adresse"
+
+#: ../../Zotlabs/Module/Lostpass.php:130
+msgid "Reset"
+msgstr "Zurücksetzen"
#: ../../Zotlabs/Module/Menu.php:49
msgid "Unable to update menu."
@@ -3687,7 +2510,7 @@ msgstr "Im Menü können gespeicherte Lesezeichen abgelegt werden"
msgid "Submit and proceed"
msgstr "Absenden und fortfahren"
-#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2279
+#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2266
msgid "Menus"
msgstr "Menüs"
@@ -3748,6 +2571,74 @@ msgstr "Erlaube Lesezeichen"
msgid "Not found."
msgstr "Nicht gefunden."
+#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:260
+#, php-format
+msgctxt "mood"
+msgid "%1$s is %2$s"
+msgstr "%1$s ist %2$s"
+
+#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:225
+msgid "Mood"
+msgstr "Laune"
+
+#: ../../Zotlabs/Module/Mood.php:136
+msgid "Set your current mood and tell your friends"
+msgstr "Wähle Deine aktuelle Stimmung und teile sie mit Deinen Freunden"
+
+#: ../../Zotlabs/Module/Match.php:26
+msgid "Profile Match"
+msgstr "Profil-Ãœbereinstimmungen"
+
+#: ../../Zotlabs/Module/Match.php:35
+msgid "No keywords to match. Please add keywords to your default profile."
+msgstr "Keine Schlüsselwörter für den Abgleich gefunden. Bitte füge Schlüsselwörter zu Deinem Standardprofil hinzu."
+
+#: ../../Zotlabs/Module/Match.php:67
+msgid "is interested in:"
+msgstr "interessiert sich für:"
+
+#: ../../Zotlabs/Module/Match.php:74
+msgid "No matches"
+msgstr "Keine Ãœbereinstimmungen"
+
+#: ../../Zotlabs/Module/Network.php:96
+msgid "No such group"
+msgstr "Gruppe nicht gefunden"
+
+#: ../../Zotlabs/Module/Network.php:136
+msgid "No such channel"
+msgstr "Kanal nicht gefunden"
+
+#: ../../Zotlabs/Module/Network.php:141
+msgid "forum"
+msgstr "Forum"
+
+#: ../../Zotlabs/Module/Network.php:153
+msgid "Search Results For:"
+msgstr "Suchergebnisse für:"
+
+#: ../../Zotlabs/Module/Network.php:217
+msgid "Privacy group is empty"
+msgstr "Gruppe ist leer"
+
+#: ../../Zotlabs/Module/Network.php:226
+msgid "Privacy group: "
+msgstr "Gruppe:"
+
+#: ../../Zotlabs/Module/Network.php:252
+msgid "Invalid connection."
+msgstr "Ungültige Verbindung."
+
+#: ../../Zotlabs/Module/Notify.php:57
+#: ../../Zotlabs/Module/Notifications.php:98
+msgid "No more system notifications."
+msgstr "Keine System-Benachrichtigungen mehr."
+
+#: ../../Zotlabs/Module/Notify.php:61
+#: ../../Zotlabs/Module/Notifications.php:102
+msgid "System Notifications"
+msgstr "System-Benachrichtigungen"
+
#: ../../Zotlabs/Module/Mitem.php:52
msgid "Unable to create element."
msgstr "Element konnte nicht erstellt werden."
@@ -3765,7 +2656,7 @@ msgid "Menu Item Permissions"
msgstr "Zugriffsrechte des Menü-Elements"
#: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:227
-#: ../../Zotlabs/Module/Settings.php:1066
+#: ../../Zotlabs/Module/Settings.php:1068
msgid "(click to open/close)"
msgstr "(zum öffnen/schließen anklicken)"
@@ -3865,48 +2756,6 @@ msgstr "Bearbeite Menü-Bestandteil"
msgid "Link text"
msgstr "Link Text"
-#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:260
-#, php-format
-msgctxt "mood"
-msgid "%1$s is %2$s"
-msgstr "%1$s ist %2$s"
-
-#: ../../Zotlabs/Module/Mood.php:135 ../../include/apps.php:144
-msgid "Mood"
-msgstr "Laune"
-
-#: ../../Zotlabs/Module/Mood.php:136
-msgid "Set your current mood and tell your friends"
-msgstr "Wähle Deine aktuelle Stimmung und teile sie mit Deinen Freunden"
-
-#: ../../Zotlabs/Module/Network.php:95
-msgid "No such group"
-msgstr "Gruppe nicht gefunden"
-
-#: ../../Zotlabs/Module/Network.php:135
-msgid "No such channel"
-msgstr "Kanal nicht gefunden"
-
-#: ../../Zotlabs/Module/Network.php:140
-msgid "forum"
-msgstr "Forum"
-
-#: ../../Zotlabs/Module/Network.php:152
-msgid "Search Results For:"
-msgstr "Suchergebnisse für:"
-
-#: ../../Zotlabs/Module/Network.php:216
-msgid "Privacy group is empty"
-msgstr "Gruppe ist leer"
-
-#: ../../Zotlabs/Module/Network.php:225
-msgid "Privacy group: "
-msgstr "Gruppe:"
-
-#: ../../Zotlabs/Module/Network.php:251
-msgid "Invalid connection."
-msgstr "Ungültige Verbindung."
-
#: ../../Zotlabs/Module/New_channel.php:128
#: ../../Zotlabs/Module/Register.php:231
msgid "Name or caption"
@@ -3969,381 +2818,378 @@ msgstr "Ungültiger Anfrage-Identifikator."
msgid "Discard"
msgstr "Verwerfen"
-#: ../../Zotlabs/Module/Notifications.php:98
-#: ../../Zotlabs/Module/Notify.php:57
-msgid "No more system notifications."
-msgstr "Keine System-Benachrichtigungen mehr."
-
-#: ../../Zotlabs/Module/Notifications.php:102
-#: ../../Zotlabs/Module/Notify.php:61
-msgid "System Notifications"
-msgstr "System-Benachrichtigungen"
-
-#: ../../Zotlabs/Module/Notifications.php:103 ../../include/nav.php:194
+#: ../../Zotlabs/Module/Notifications.php:103 ../../include/nav.php:191
msgid "Mark all system notifications seen"
msgstr "Markiere alle System-Benachrichtigungen als gesehen"
-#: ../../Zotlabs/Module/Oexchange.php:27
-msgid "Unable to find your hub."
-msgstr "Konnte Deinen Server nicht finden."
-
-#: ../../Zotlabs/Module/Oexchange.php:41
-msgid "Post successful."
-msgstr "Veröffentlichung erfolgreich."
-
-#: ../../Zotlabs/Module/Openid.php:30
-msgid "OpenID protocol error. No ID returned."
-msgstr "OpenID Protokollfehler. Keine ID zurückgegeben."
-
-#: ../../Zotlabs/Module/Openid.php:193 ../../include/auth.php:226
-msgid "Login failed."
-msgstr "Login fehlgeschlagen."
-
-#: ../../Zotlabs/Module/Page.php:133
-msgid ""
-"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
-"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
-" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
-"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
-"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
-"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-
-#: ../../Zotlabs/Module/Pconfig.php:26 ../../Zotlabs/Module/Pconfig.php:59
-msgid "This setting requires special processing and editing has been blocked."
-msgstr "Diese Einstellung erfordert eine besondere Verarbeitung und ist blockiert."
-
-#: ../../Zotlabs/Module/Pconfig.php:48
-msgid "Configuration Editor"
-msgstr "Konfigurationseditor"
-
-#: ../../Zotlabs/Module/Pconfig.php:49
-msgid ""
-"Warning: Changing some settings could render your channel inoperable. Please"
-" leave this page unless you are comfortable with and knowledgeable about how"
-" to correctly use this feature."
-msgstr "Warnung: Einige Einstellungen können Deinen Kanal funktionsunfähig machen. Bitte verlasse diese Seite, es sei denn Du bist vertraut damit, wie dieses Feature korrekt verwendet wird."
-
-#: ../../Zotlabs/Module/Pdledit.php:18
-msgid "Layout updated."
-msgstr "Layout aktualisiert."
-
-#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Pdledit.php:61
-msgid "Edit System Page Description"
-msgstr "Systemseitenbeschreibung bearbeiten"
-
-#: ../../Zotlabs/Module/Pdledit.php:56
-msgid "Layout not found."
-msgstr "Layout nicht gefunden."
-
-#: ../../Zotlabs/Module/Pdledit.php:62
-msgid "Module Name:"
-msgstr "Modulname:"
-
-#: ../../Zotlabs/Module/Pdledit.php:63
-msgid "Layout Help"
-msgstr "Layout-Hilfe"
-
-#: ../../Zotlabs/Module/Photos.php:83
+#: ../../Zotlabs/Module/Photos.php:84
msgid "Page owner information could not be retrieved."
msgstr "Informationen über den Besitzer der Seite konnten nicht gefunden werden."
-#: ../../Zotlabs/Module/Photos.php:98 ../../Zotlabs/Module/Photos.php:742
+#: ../../Zotlabs/Module/Photos.php:99 ../../Zotlabs/Module/Photos.php:743
#: ../../Zotlabs/Module/Profile_photo.php:114
#: ../../Zotlabs/Module/Profile_photo.php:206
#: ../../Zotlabs/Module/Profile_photo.php:294
-#: ../../include/photo/photo_driver.php:722
+#: ../../include/photo/photo_driver.php:718
msgid "Profile Photos"
msgstr "Profilfotos"
-#: ../../Zotlabs/Module/Photos.php:104 ../../Zotlabs/Module/Photos.php:148
+#: ../../Zotlabs/Module/Photos.php:105 ../../Zotlabs/Module/Photos.php:149
msgid "Album not found."
msgstr "Album nicht gefunden."
-#: ../../Zotlabs/Module/Photos.php:131
+#: ../../Zotlabs/Module/Photos.php:132
msgid "Delete Album"
msgstr "Album löschen"
-#: ../../Zotlabs/Module/Photos.php:152
+#: ../../Zotlabs/Module/Photos.php:153
msgid ""
"Multiple storage folders exist with this album name, but within different "
"directories. Please remove the desired folder or folders using the Files "
"manager"
msgstr "Mehrere Speicherordner mit diesem Albumnamen sind bereits vorhanden, aber in verschiedenen Verzeichnissen. Bitte entfernen Sie den oder die gewünschten Ordner mit dem Dateimanager"
-#: ../../Zotlabs/Module/Photos.php:209 ../../Zotlabs/Module/Photos.php:1052
+#: ../../Zotlabs/Module/Photos.php:210 ../../Zotlabs/Module/Photos.php:1053
msgid "Delete Photo"
msgstr "Foto löschen"
-#: ../../Zotlabs/Module/Photos.php:532
+#: ../../Zotlabs/Module/Photos.php:533
msgid "No photos selected"
msgstr "Keine Fotos ausgewählt"
-#: ../../Zotlabs/Module/Photos.php:581
+#: ../../Zotlabs/Module/Photos.php:582
msgid "Access to this item is restricted."
msgstr "Der Zugriff auf dieses Foto ist eingeschränkt."
-#: ../../Zotlabs/Module/Photos.php:620
+#: ../../Zotlabs/Module/Photos.php:621
#, php-format
msgid "%1$.2f MB of %2$.2f MB photo storage used."
msgstr "%1$.2f MB von %2$.2f MB Foto-Speicher belegt."
-#: ../../Zotlabs/Module/Photos.php:623
+#: ../../Zotlabs/Module/Photos.php:624
#, php-format
msgid "%1$.2f MB photo storage used."
msgstr "%1$.2f MB Foto-Speicher belegt."
-#: ../../Zotlabs/Module/Photos.php:659
+#: ../../Zotlabs/Module/Photos.php:660
msgid "Upload Photos"
msgstr "Fotos hochladen"
-#: ../../Zotlabs/Module/Photos.php:663
+#: ../../Zotlabs/Module/Photos.php:664
msgid "Enter an album name"
msgstr "Namen für ein neues Album eingeben"
-#: ../../Zotlabs/Module/Photos.php:664
+#: ../../Zotlabs/Module/Photos.php:665
msgid "or select an existing album (doubleclick)"
msgstr "oder ein bereits vorhandenes auswählen (Doppelklick)"
-#: ../../Zotlabs/Module/Photos.php:665
+#: ../../Zotlabs/Module/Photos.php:666
msgid "Create a status post for this upload"
msgstr "Einen Statusbeitrag für diesen Upload erzeugen"
-#: ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Photos.php:667
msgid "Caption (optional):"
msgstr "Beschriftung (optional):"
-#: ../../Zotlabs/Module/Photos.php:667
+#: ../../Zotlabs/Module/Photos.php:668
msgid "Description (optional):"
msgstr "Beschreibung (optional):"
-#: ../../Zotlabs/Module/Photos.php:694
+#: ../../Zotlabs/Module/Photos.php:695
msgid "Album name could not be decoded"
msgstr "Albumname konnte nicht dekodiert werden"
-#: ../../Zotlabs/Module/Photos.php:742 ../../Zotlabs/Module/Photos.php:1282
-#: ../../Zotlabs/Module/Photos.php:1299
+#: ../../Zotlabs/Module/Photos.php:743
msgid "Contact Photos"
msgstr "Kontakt-Bilder"
-#: ../../Zotlabs/Module/Photos.php:765
+#: ../../Zotlabs/Module/Photos.php:766
msgid "Show Newest First"
msgstr "Neueste zuerst anzeigen"
-#: ../../Zotlabs/Module/Photos.php:767
+#: ../../Zotlabs/Module/Photos.php:768
msgid "Show Oldest First"
msgstr "Älteste zuerst anzeigen"
-#: ../../Zotlabs/Module/Photos.php:791 ../../Zotlabs/Module/Photos.php:1332
-#: ../../include/widgets.php:1451
+#: ../../Zotlabs/Module/Photos.php:792 ../../Zotlabs/Module/Photos.php:1331
+#: ../../include/widgets.php:1499
msgid "View Photo"
msgstr "Foto ansehen"
-#: ../../Zotlabs/Module/Photos.php:822 ../../include/widgets.php:1468
+#: ../../Zotlabs/Module/Photos.php:823 ../../include/widgets.php:1516
msgid "Edit Album"
msgstr "Album bearbeiten"
-#: ../../Zotlabs/Module/Photos.php:869
+#: ../../Zotlabs/Module/Photos.php:870
msgid "Permission denied. Access to this item may be restricted."
msgstr "Berechtigung verweigert. Der Zugriff ist wahrscheinlich eingeschränkt worden."
-#: ../../Zotlabs/Module/Photos.php:871
+#: ../../Zotlabs/Module/Photos.php:872
msgid "Photo not available"
msgstr "Foto nicht verfügbar"
-#: ../../Zotlabs/Module/Photos.php:929
+#: ../../Zotlabs/Module/Photos.php:930
msgid "Use as profile photo"
msgstr "Als Profilfoto verwenden"
-#: ../../Zotlabs/Module/Photos.php:930
+#: ../../Zotlabs/Module/Photos.php:931
msgid "Use as cover photo"
msgstr "Als Titelbild verwenden"
-#: ../../Zotlabs/Module/Photos.php:937
+#: ../../Zotlabs/Module/Photos.php:938
msgid "Private Photo"
msgstr "Privates Foto"
-#: ../../Zotlabs/Module/Photos.php:952
+#: ../../Zotlabs/Module/Photos.php:953
msgid "View Full Size"
msgstr "In voller Größe anzeigen"
-#: ../../Zotlabs/Module/Photos.php:997 ../../Zotlabs/Module/Tagrm.php:137
+#: ../../Zotlabs/Module/Photos.php:998 ../../Zotlabs/Module/Admin.php:1437
+#: ../../Zotlabs/Module/Tagrm.php:137
msgid "Remove"
-msgstr "Entferne"
+msgstr "Entfernen"
-#: ../../Zotlabs/Module/Photos.php:1031
+#: ../../Zotlabs/Module/Photos.php:1032
msgid "Edit photo"
msgstr "Foto bearbeiten"
-#: ../../Zotlabs/Module/Photos.php:1033
+#: ../../Zotlabs/Module/Photos.php:1034
msgid "Rotate CW (right)"
msgstr "Drehen im UZS (rechts)"
-#: ../../Zotlabs/Module/Photos.php:1034
+#: ../../Zotlabs/Module/Photos.php:1035
msgid "Rotate CCW (left)"
msgstr "Drehen gegen UZS (links)"
-#: ../../Zotlabs/Module/Photos.php:1037
+#: ../../Zotlabs/Module/Photos.php:1038
msgid "Enter a new album name"
msgstr "Gib einen Namen für ein neues Album ein"
-#: ../../Zotlabs/Module/Photos.php:1038
+#: ../../Zotlabs/Module/Photos.php:1039
msgid "or select an existing one (doubleclick)"
msgstr "oder wähle ein bereits vorhandenes aus (Doppelklick)"
-#: ../../Zotlabs/Module/Photos.php:1041
+#: ../../Zotlabs/Module/Photos.php:1042
msgid "Caption"
msgstr "Bildunterschrift"
-#: ../../Zotlabs/Module/Photos.php:1043
+#: ../../Zotlabs/Module/Photos.php:1044
msgid "Add a Tag"
msgstr "Schlagwort hinzufügen"
-#: ../../Zotlabs/Module/Photos.php:1047
+#: ../../Zotlabs/Module/Photos.php:1048
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
msgstr "Beispiele: @ben, @Karl_Prester, @lieschen@example.com"
-#: ../../Zotlabs/Module/Photos.php:1050
+#: ../../Zotlabs/Module/Photos.php:1051
msgid "Flag as adult in album view"
msgstr "In der Albumansicht als nicht jugendfrei markieren"
-#: ../../Zotlabs/Module/Photos.php:1069 ../../include/ItemObject.php:254
+#: ../../Zotlabs/Module/Photos.php:1070 ../../Zotlabs/Lib/ThreadItem.php:261
msgid "I like this (toggle)"
msgstr "Mir gefällt das (Umschalter)"
-#: ../../Zotlabs/Module/Photos.php:1070 ../../include/ItemObject.php:255
+#: ../../Zotlabs/Module/Photos.php:1071 ../../Zotlabs/Lib/ThreadItem.php:262
msgid "I don't like this (toggle)"
msgstr "Mir gefällt das nicht (Umschalter)"
-#: ../../Zotlabs/Module/Photos.php:1088 ../../Zotlabs/Module/Photos.php:1206
-#: ../../include/ItemObject.php:700
+#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:397
+#: ../../include/conversation.php:740
+msgid "Please wait"
+msgstr "Bitte warten"
+
+#: ../../Zotlabs/Module/Photos.php:1089 ../../Zotlabs/Module/Photos.php:1207
+#: ../../Zotlabs/Lib/ThreadItem.php:707
msgid "This is you"
msgstr "Das bist Du"
-#: ../../Zotlabs/Module/Photos.php:1090 ../../Zotlabs/Module/Photos.php:1208
-#: ../../include/ItemObject.php:702 ../../include/js_strings.php:6
+#: ../../Zotlabs/Module/Photos.php:1091 ../../Zotlabs/Module/Photos.php:1209
+#: ../../Zotlabs/Lib/ThreadItem.php:709 ../../include/js_strings.php:6
msgid "Comment"
msgstr "Kommentar"
-#: ../../Zotlabs/Module/Photos.php:1106 ../../include/conversation.php:574
+#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574
msgctxt "title"
msgid "Likes"
msgstr "Gefällt mir"
-#: ../../Zotlabs/Module/Photos.php:1106 ../../include/conversation.php:574
+#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574
msgctxt "title"
msgid "Dislikes"
msgstr "Gefällt mir nicht"
-#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:575
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
msgctxt "title"
msgid "Agree"
msgstr "Zustimmungen"
-#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:575
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
msgctxt "title"
msgid "Disagree"
msgstr "Ablehnungen"
-#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:575
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
msgctxt "title"
msgid "Abstain"
msgstr "Enthaltungen"
-#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:576
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
msgctxt "title"
msgid "Attending"
msgstr "Zusagen"
-#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:576
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
msgctxt "title"
msgid "Not attending"
msgstr "Absagen"
-#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:576
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
msgctxt "title"
msgid "Might attend"
msgstr "Vielleicht"
-#: ../../Zotlabs/Module/Photos.php:1125 ../../Zotlabs/Module/Photos.php:1137
-#: ../../include/ItemObject.php:175 ../../include/ItemObject.php:187
-#: ../../include/conversation.php:1736
+#: ../../Zotlabs/Module/Photos.php:1126 ../../Zotlabs/Module/Photos.php:1138
+#: ../../Zotlabs/Lib/ThreadItem.php:181 ../../Zotlabs/Lib/ThreadItem.php:193
+#: ../../include/conversation.php:1717
msgid "View all"
msgstr "Alles anzeigen"
-#: ../../Zotlabs/Module/Photos.php:1129 ../../include/identity.php:1297
-#: ../../include/ItemObject.php:179 ../../include/conversation.php:1760
-#: ../../include/taxonomy.php:415
+#: ../../Zotlabs/Module/Photos.php:1130 ../../Zotlabs/Lib/ThreadItem.php:185
+#: ../../include/taxonomy.php:403 ../../include/conversation.php:1741
+#: ../../include/channel.php:1158
msgctxt "noun"
msgid "Like"
msgid_plural "Likes"
msgstr[0] "Gefällt mir"
msgstr[1] "Gefällt mir"
-#: ../../Zotlabs/Module/Photos.php:1134 ../../include/ItemObject.php:184
-#: ../../include/conversation.php:1763
+#: ../../Zotlabs/Module/Photos.php:1135 ../../Zotlabs/Lib/ThreadItem.php:190
+#: ../../include/conversation.php:1744
msgctxt "noun"
msgid "Dislike"
msgid_plural "Dislikes"
msgstr[0] "Gefällt nicht"
msgstr[1] "Gefällt nicht"
-#: ../../Zotlabs/Module/Photos.php:1242
+#: ../../Zotlabs/Module/Photos.php:1235
+msgid "Photo Tools"
+msgstr "Fotowerkzeuge"
+
+#: ../../Zotlabs/Module/Photos.php:1244
msgid "In This Photo:"
msgstr "Auf diesem Foto:"
-#: ../../Zotlabs/Module/Photos.php:1247
+#: ../../Zotlabs/Module/Photos.php:1249
msgid "Map"
msgstr "Karte"
-#: ../../Zotlabs/Module/Photos.php:1255 ../../include/ItemObject.php:378
+#: ../../Zotlabs/Module/Photos.php:1257 ../../Zotlabs/Lib/ThreadItem.php:386
msgctxt "noun"
msgid "Likes"
msgstr "Gefällt mir"
-#: ../../Zotlabs/Module/Photos.php:1256 ../../include/ItemObject.php:379
+#: ../../Zotlabs/Module/Photos.php:1258 ../../Zotlabs/Lib/ThreadItem.php:387
msgctxt "noun"
msgid "Dislikes"
msgstr "Gefällt nicht"
-#: ../../Zotlabs/Module/Photos.php:1261 ../../include/ItemObject.php:384
-#: ../../include/acl_selectors.php:252
+#: ../../Zotlabs/Module/Photos.php:1263 ../../Zotlabs/Lib/ThreadItem.php:392
+#: ../../include/acl_selectors.php:285
msgid "Close"
msgstr "Schließen"
-#: ../../Zotlabs/Module/Photos.php:1338
+#: ../../Zotlabs/Module/Photos.php:1337
msgid "View Album"
msgstr "Album ansehen"
-#: ../../Zotlabs/Module/Photos.php:1349 ../../Zotlabs/Module/Photos.php:1362
-#: ../../Zotlabs/Module/Photos.php:1363
+#: ../../Zotlabs/Module/Photos.php:1348 ../../Zotlabs/Module/Photos.php:1361
+#: ../../Zotlabs/Module/Photos.php:1362
msgid "Recent Photos"
msgstr "Neueste Fotos"
-#: ../../Zotlabs/Module/Ping.php:264
+#: ../../Zotlabs/Module/Ping.php:265
msgid "sent you a private message"
msgstr "hat Dir eine private Nachricht geschickt"
-#: ../../Zotlabs/Module/Ping.php:312
+#: ../../Zotlabs/Module/Ping.php:313
msgid "added your channel"
msgstr "hat deinen Kanal hinzugefügt"
-#: ../../Zotlabs/Module/Ping.php:322 ../../include/identity.php:1116
-#: ../../include/identity.php:1192
+#: ../../Zotlabs/Module/Ping.php:323
msgid "g A l F d"
msgstr "l, d. F, G:i \\U\\h\\r"
-#: ../../Zotlabs/Module/Ping.php:345 ../../include/identity.php:1162
-#: ../../include/identity.php:1232
+#: ../../Zotlabs/Module/Ping.php:346
msgid "[today]"
msgstr "[Heute]"
-#: ../../Zotlabs/Module/Ping.php:354
+#: ../../Zotlabs/Module/Ping.php:355
msgid "posted an event"
msgstr "hat einen Termin veröffentlicht"
-#: ../../Zotlabs/Module/Poke.php:168 ../../include/apps.php:145
-#: ../../include/conversation.php:965
+#: ../../Zotlabs/Module/Oexchange.php:27
+msgid "Unable to find your hub."
+msgstr "Konnte Deinen Server nicht finden."
+
+#: ../../Zotlabs/Module/Oexchange.php:41
+msgid "Post successful."
+msgstr "Veröffentlichung erfolgreich."
+
+#: ../../Zotlabs/Module/Openid.php:30
+msgid "OpenID protocol error. No ID returned."
+msgstr "OpenID Protokollfehler. Keine ID zurückgegeben."
+
+#: ../../Zotlabs/Module/Openid.php:193 ../../include/auth.php:226
+msgid "Login failed."
+msgstr "Login fehlgeschlagen."
+
+#: ../../Zotlabs/Module/Page.php:133
+msgid ""
+"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
+"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
+" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
+"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
+"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
+"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+
+#: ../../Zotlabs/Module/Pconfig.php:26 ../../Zotlabs/Module/Pconfig.php:59
+msgid "This setting requires special processing and editing has been blocked."
+msgstr "Diese Einstellung erfordert eine besondere Verarbeitung und ist blockiert."
+
+#: ../../Zotlabs/Module/Pconfig.php:48
+msgid "Configuration Editor"
+msgstr "Konfigurationseditor"
+
+#: ../../Zotlabs/Module/Pconfig.php:49
+msgid ""
+"Warning: Changing some settings could render your channel inoperable. Please"
+" leave this page unless you are comfortable with and knowledgeable about how"
+" to correctly use this feature."
+msgstr "Warnung: Einige Einstellungen können Deinen Kanal funktionsunfähig machen. Bitte verlasse diese Seite, es sei denn Du bist vertraut damit, wie dieses Feature korrekt verwendet wird."
+
+#: ../../Zotlabs/Module/Pdledit.php:18
+msgid "Layout updated."
+msgstr "Layout aktualisiert."
+
+#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Pdledit.php:61
+msgid "Edit System Page Description"
+msgstr "Systemseitenbeschreibung bearbeiten"
+
+#: ../../Zotlabs/Module/Pdledit.php:56
+msgid "Layout not found."
+msgstr "Layout nicht gefunden."
+
+#: ../../Zotlabs/Module/Pdledit.php:62
+msgid "Module Name:"
+msgstr "Modulname:"
+
+#: ../../Zotlabs/Module/Pdledit.php:63
+msgid "Layout Help"
+msgstr "Layout-Hilfe"
+
+#: ../../Zotlabs/Module/Poke.php:168 ../../Zotlabs/Lib/Apps.php:226
+#: ../../include/conversation.php:960
msgid "Poke"
msgstr "Anstupsen"
@@ -4371,285 +3217,289 @@ msgstr "Wähle, was Du mit dem/r Empfänger/in tun willst"
msgid "Make this post private"
msgstr "Diesen Beitrag privat machen"
-#: ../../Zotlabs/Module/Probe.php:28 ../../Zotlabs/Module/Probe.php:34
+#: ../../Zotlabs/Module/Probe.php:30 ../../Zotlabs/Module/Probe.php:34
#, php-format
msgid "Fetching URL returns error: %1$s"
msgstr "Abrufen der URL gab einen Fehler zurück: %1$s"
-#: ../../Zotlabs/Module/Profile_photo.php:179
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Leere den Browser Cache oder nutze Umschalten-Neu Laden, falls das neue Foto nicht sofort angezeigt wird."
-
-#: ../../Zotlabs/Module/Profile_photo.php:367
-msgid "Upload Profile Photo"
-msgstr "Lade neues Profilfoto hoch"
-
-#: ../../Zotlabs/Module/Profiles.php:23 ../../Zotlabs/Module/Profiles.php:188
-#: ../../Zotlabs/Module/Profiles.php:245 ../../Zotlabs/Module/Profiles.php:624
+#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:189
+#: ../../Zotlabs/Module/Profiles.php:246 ../../Zotlabs/Module/Profiles.php:625
msgid "Profile not found."
msgstr "Profil nicht gefunden."
-#: ../../Zotlabs/Module/Profiles.php:43
+#: ../../Zotlabs/Module/Profiles.php:44
msgid "Profile deleted."
msgstr "Profil gelöscht."
-#: ../../Zotlabs/Module/Profiles.php:67 ../../Zotlabs/Module/Profiles.php:103
+#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:104
msgid "Profile-"
msgstr "Profil-"
-#: ../../Zotlabs/Module/Profiles.php:88 ../../Zotlabs/Module/Profiles.php:131
+#: ../../Zotlabs/Module/Profiles.php:89 ../../Zotlabs/Module/Profiles.php:132
msgid "New profile created."
msgstr "Neues Profil erstellt."
-#: ../../Zotlabs/Module/Profiles.php:109
+#: ../../Zotlabs/Module/Profiles.php:110
msgid "Profile unavailable to clone."
msgstr "Profil kann nicht geklont werden."
-#: ../../Zotlabs/Module/Profiles.php:150
+#: ../../Zotlabs/Module/Profiles.php:151
msgid "Profile unavailable to export."
msgstr "Dieses Profil kann nicht exportiert werden."
-#: ../../Zotlabs/Module/Profiles.php:255
+#: ../../Zotlabs/Module/Profiles.php:256
msgid "Profile Name is required."
msgstr "Profil-Name erforderlich."
-#: ../../Zotlabs/Module/Profiles.php:426
+#: ../../Zotlabs/Module/Profiles.php:427
msgid "Marital Status"
msgstr "Familienstand"
-#: ../../Zotlabs/Module/Profiles.php:430
+#: ../../Zotlabs/Module/Profiles.php:431
msgid "Romantic Partner"
msgstr "Romantische Partner"
-#: ../../Zotlabs/Module/Profiles.php:434 ../../Zotlabs/Module/Profiles.php:739
+#: ../../Zotlabs/Module/Profiles.php:435 ../../Zotlabs/Module/Profiles.php:736
msgid "Likes"
msgstr "Gefällt"
-#: ../../Zotlabs/Module/Profiles.php:438 ../../Zotlabs/Module/Profiles.php:740
+#: ../../Zotlabs/Module/Profiles.php:439 ../../Zotlabs/Module/Profiles.php:737
msgid "Dislikes"
msgstr "Gefällt nicht"
-#: ../../Zotlabs/Module/Profiles.php:442 ../../Zotlabs/Module/Profiles.php:747
+#: ../../Zotlabs/Module/Profiles.php:443 ../../Zotlabs/Module/Profiles.php:744
msgid "Work/Employment"
msgstr "Arbeit/Anstellung"
-#: ../../Zotlabs/Module/Profiles.php:445
+#: ../../Zotlabs/Module/Profiles.php:446
msgid "Religion"
msgstr "Religion"
-#: ../../Zotlabs/Module/Profiles.php:449
+#: ../../Zotlabs/Module/Profiles.php:450
msgid "Political Views"
msgstr "Politische Ansichten"
-#: ../../Zotlabs/Module/Profiles.php:457
+#: ../../Zotlabs/Module/Profiles.php:458
msgid "Sexual Preference"
msgstr "Sexuelle Orientierung"
-#: ../../Zotlabs/Module/Profiles.php:461
+#: ../../Zotlabs/Module/Profiles.php:462
msgid "Homepage"
msgstr "Webseite"
-#: ../../Zotlabs/Module/Profiles.php:465
+#: ../../Zotlabs/Module/Profiles.php:466
msgid "Interests"
msgstr "Hobbys/Interessen"
-#: ../../Zotlabs/Module/Profiles.php:559
+#: ../../Zotlabs/Module/Profiles.php:560
msgid "Profile updated."
msgstr "Profil aktualisiert."
-#: ../../Zotlabs/Module/Profiles.php:648
+#: ../../Zotlabs/Module/Profiles.php:644
msgid "Hide your connections list from viewers of this profile"
msgstr "Deine Verbindungen vor Betrachtern dieses Profils verbergen"
-#: ../../Zotlabs/Module/Profiles.php:690
+#: ../../Zotlabs/Module/Profiles.php:686
msgid "Edit Profile Details"
msgstr "Bearbeite Profil-Details"
-#: ../../Zotlabs/Module/Profiles.php:692
+#: ../../Zotlabs/Module/Profiles.php:688
msgid "View this profile"
msgstr "Dieses Profil ansehen"
-#: ../../Zotlabs/Module/Profiles.php:693 ../../Zotlabs/Module/Profiles.php:774
-#: ../../include/identity.php:952
+#: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:771
+#: ../../include/channel.php:959
msgid "Edit visibility"
msgstr "Sichtbarkeit bearbeiten"
-#: ../../Zotlabs/Module/Profiles.php:694
+#: ../../Zotlabs/Module/Profiles.php:690
+msgid "Profile Tools"
+msgstr "Profilwerkzeuge"
+
+#: ../../Zotlabs/Module/Profiles.php:691
msgid "Change cover photo"
msgstr "Titelbild ändern"
-#: ../../Zotlabs/Module/Profiles.php:695 ../../include/identity.php:923
+#: ../../Zotlabs/Module/Profiles.php:692 ../../include/channel.php:930
msgid "Change profile photo"
msgstr "Profilfoto ändern"
-#: ../../Zotlabs/Module/Profiles.php:696
+#: ../../Zotlabs/Module/Profiles.php:693
msgid "Create a new profile using these settings"
msgstr "Neues Profil anlegen und diese Einstellungen übernehmen"
-#: ../../Zotlabs/Module/Profiles.php:697
+#: ../../Zotlabs/Module/Profiles.php:694
msgid "Clone this profile"
msgstr "Dieses Profil klonen"
-#: ../../Zotlabs/Module/Profiles.php:698
+#: ../../Zotlabs/Module/Profiles.php:695
msgid "Delete this profile"
msgstr "Dieses Profil löschen"
-#: ../../Zotlabs/Module/Profiles.php:699
+#: ../../Zotlabs/Module/Profiles.php:696
msgid "Add profile things"
msgstr "Sachen zum Profil hinzufügen"
-#: ../../Zotlabs/Module/Profiles.php:700 ../../include/conversation.php:1544
-#: ../../include/widgets.php:105
+#: ../../Zotlabs/Module/Profiles.php:697 ../../include/widgets.php:105
+#: ../../include/conversation.php:1526
msgid "Personal"
msgstr "Persönlich"
-#: ../../Zotlabs/Module/Profiles.php:702
+#: ../../Zotlabs/Module/Profiles.php:699
msgid "Relation"
msgstr "Beziehung"
-#: ../../Zotlabs/Module/Profiles.php:703 ../../include/datetime.php:48
+#: ../../Zotlabs/Module/Profiles.php:700 ../../include/datetime.php:48
msgid "Miscellaneous"
msgstr "Verschiedenes"
-#: ../../Zotlabs/Module/Profiles.php:705
+#: ../../Zotlabs/Module/Profiles.php:702
msgid "Import profile from file"
msgstr "Profil aus einer Datei importieren"
-#: ../../Zotlabs/Module/Profiles.php:706
+#: ../../Zotlabs/Module/Profiles.php:703
msgid "Export profile to file"
msgstr "Profil in eine Datei exportieren"
-#: ../../Zotlabs/Module/Profiles.php:707
+#: ../../Zotlabs/Module/Profiles.php:704
msgid "Your gender"
msgstr "Dein Geschlecht"
-#: ../../Zotlabs/Module/Profiles.php:708
+#: ../../Zotlabs/Module/Profiles.php:705
msgid "Marital status"
msgstr "Familienstand"
-#: ../../Zotlabs/Module/Profiles.php:709
+#: ../../Zotlabs/Module/Profiles.php:706
msgid "Sexual preference"
msgstr "Sexuelle Orientierung"
-#: ../../Zotlabs/Module/Profiles.php:712
+#: ../../Zotlabs/Module/Profiles.php:709
msgid "Profile name"
msgstr "Profilname"
-#: ../../Zotlabs/Module/Profiles.php:714
+#: ../../Zotlabs/Module/Profiles.php:711
msgid "This is your default profile."
msgstr "Das ist Dein Standardprofil."
-#: ../../Zotlabs/Module/Profiles.php:716
+#: ../../Zotlabs/Module/Profiles.php:713
msgid "Your full name"
msgstr "Dein voller Name"
-#: ../../Zotlabs/Module/Profiles.php:717
+#: ../../Zotlabs/Module/Profiles.php:714
msgid "Title/Description"
msgstr "Titel/Beschreibung"
-#: ../../Zotlabs/Module/Profiles.php:720
+#: ../../Zotlabs/Module/Profiles.php:717
msgid "Street address"
msgstr "Straße und Hausnummer"
-#: ../../Zotlabs/Module/Profiles.php:721
+#: ../../Zotlabs/Module/Profiles.php:718
msgid "Locality/City"
msgstr "Wohnort"
-#: ../../Zotlabs/Module/Profiles.php:722
+#: ../../Zotlabs/Module/Profiles.php:719
msgid "Region/State"
msgstr "Region/Bundesstaat"
-#: ../../Zotlabs/Module/Profiles.php:723
+#: ../../Zotlabs/Module/Profiles.php:720
msgid "Postal/Zip code"
msgstr "Postleitzahl"
-#: ../../Zotlabs/Module/Profiles.php:724
+#: ../../Zotlabs/Module/Profiles.php:721
msgid "Country"
msgstr "Land"
-#: ../../Zotlabs/Module/Profiles.php:729
+#: ../../Zotlabs/Module/Profiles.php:726
msgid "Who (if applicable)"
msgstr "Wer (falls anwendbar)"
-#: ../../Zotlabs/Module/Profiles.php:729
+#: ../../Zotlabs/Module/Profiles.php:726
msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
msgstr "Beispiele: cathy123, Cathy Williams, cathy@example.com"
-#: ../../Zotlabs/Module/Profiles.php:730
+#: ../../Zotlabs/Module/Profiles.php:727
msgid "Since (date)"
msgstr "Seit (Datum)"
-#: ../../Zotlabs/Module/Profiles.php:733
+#: ../../Zotlabs/Module/Profiles.php:730
msgid "Tell us about yourself"
msgstr "Erzähle uns ein wenig von Dir"
-#: ../../Zotlabs/Module/Profiles.php:735
+#: ../../Zotlabs/Module/Profiles.php:732
msgid "Hometown"
msgstr "Heimatort"
-#: ../../Zotlabs/Module/Profiles.php:736
+#: ../../Zotlabs/Module/Profiles.php:733
msgid "Political views"
msgstr "Politische Ansichten"
-#: ../../Zotlabs/Module/Profiles.php:737
+#: ../../Zotlabs/Module/Profiles.php:734
msgid "Religious views"
msgstr "Religiöse Ansichten"
-#: ../../Zotlabs/Module/Profiles.php:738
+#: ../../Zotlabs/Module/Profiles.php:735
msgid "Keywords used in directory listings"
msgstr "Schlüsselwörter, die in Verzeichnis-Auflistungen verwendet werden"
-#: ../../Zotlabs/Module/Profiles.php:738
+#: ../../Zotlabs/Module/Profiles.php:735
msgid "Example: fishing photography software"
msgstr "Beispiel: Angeln Fotografie Software"
-#: ../../Zotlabs/Module/Profiles.php:741
+#: ../../Zotlabs/Module/Profiles.php:738
msgid "Musical interests"
msgstr "Musikalische Interessen"
-#: ../../Zotlabs/Module/Profiles.php:742
+#: ../../Zotlabs/Module/Profiles.php:739
msgid "Books, literature"
msgstr "Bücher, Literatur"
-#: ../../Zotlabs/Module/Profiles.php:743
+#: ../../Zotlabs/Module/Profiles.php:740
msgid "Television"
msgstr "Fernsehen"
-#: ../../Zotlabs/Module/Profiles.php:744
+#: ../../Zotlabs/Module/Profiles.php:741
msgid "Film/Dance/Culture/Entertainment"
msgstr "Film/Tanz/Kultur/Unterhaltung"
-#: ../../Zotlabs/Module/Profiles.php:745
+#: ../../Zotlabs/Module/Profiles.php:742
msgid "Hobbies/Interests"
msgstr "Hobbys/Interessen"
-#: ../../Zotlabs/Module/Profiles.php:746
+#: ../../Zotlabs/Module/Profiles.php:743
msgid "Love/Romance"
msgstr "Liebe/Romantik"
-#: ../../Zotlabs/Module/Profiles.php:748
+#: ../../Zotlabs/Module/Profiles.php:745
msgid "School/Education"
msgstr "Schule/Ausbildung"
-#: ../../Zotlabs/Module/Profiles.php:749
+#: ../../Zotlabs/Module/Profiles.php:746
msgid "Contact information and social networks"
msgstr "Kontaktinformation und soziale Netzwerke"
-#: ../../Zotlabs/Module/Profiles.php:750
+#: ../../Zotlabs/Module/Profiles.php:747
msgid "My other channels"
msgstr "Meine anderen Kanäle"
-#: ../../Zotlabs/Module/Profiles.php:770 ../../include/identity.php:948
+#: ../../Zotlabs/Module/Profiles.php:767 ../../include/channel.php:955
msgid "Profile Image"
msgstr "Profilfoto:"
-#: ../../Zotlabs/Module/Profiles.php:780 ../../include/identity.php:930
-#: ../../include/nav.php:88
+#: ../../Zotlabs/Module/Profiles.php:777 ../../include/nav.php:88
+#: ../../include/channel.php:937
msgid "Edit Profiles"
msgstr "Profile bearbeiten"
+#: ../../Zotlabs/Module/Profile_photo.php:179
+msgid ""
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Leere den Browser Cache oder nutze Umschalten-Neu Laden, falls das neue Foto nicht sofort angezeigt wird."
+
+#: ../../Zotlabs/Module/Profile_photo.php:367
+msgid "Upload Profile Photo"
+msgstr "Lade neues Profilfoto hoch"
+
#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63
msgid "Invalid profile identifier."
msgstr "Ungültiger Profil-Identifikator"
@@ -4658,8 +3508,7 @@ msgstr "Ungültiger Profil-Identifikator"
msgid "Profile Visibility Editor"
msgstr "Profil-Sichtbarkeits-Editor"
-#: ../../Zotlabs/Module/Profperm.php:117 ../../include/identity.php:1388
-#: ../../include/apps.php:138
+#: ../../Zotlabs/Module/Profperm.php:117 ../../include/channel.php:1249
msgid "Profile"
msgstr "Profil"
@@ -4671,7 +3520,7 @@ msgstr "Klicke auf einen Kontakt, um ihn hinzuzufügen oder zu entfernen."
msgid "Visible To"
msgstr "Sichtbar für"
-#: ../../Zotlabs/Module/Pubsites.php:22 ../../include/widgets.php:1222
+#: ../../Zotlabs/Module/Pubsites.php:22 ../../include/widgets.php:1270
msgid "Public Hubs"
msgstr "Öffentliche Hubs"
@@ -4696,29 +3545,37 @@ msgstr "Zugriffstyp"
msgid "Registration Policy"
msgstr "Registrierungsrichtlinien"
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Stats"
+msgstr "Statistiken"
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Software"
+msgstr "Software"
+
#: ../../Zotlabs/Module/Pubsites.php:31 ../../Zotlabs/Module/Ratings.php:103
-#: ../../include/conversation.php:964
+#: ../../include/conversation.php:959
msgid "Ratings"
msgstr "Bewertungen"
-#: ../../Zotlabs/Module/Pubsites.php:37
+#: ../../Zotlabs/Module/Pubsites.php:38
msgid "Rate"
msgstr "Bewerten"
-#: ../../Zotlabs/Module/Rate.php:162
+#: ../../Zotlabs/Module/Rate.php:160
msgid "Website:"
msgstr "Webseite:"
-#: ../../Zotlabs/Module/Rate.php:165
+#: ../../Zotlabs/Module/Rate.php:163
#, php-format
msgid "Remote Channel [%s] (not yet known on this site)"
msgstr "Kanal [%s] (auf diesem Server noch unbekannt)"
-#: ../../Zotlabs/Module/Rate.php:166
+#: ../../Zotlabs/Module/Rate.php:164
msgid "Rating (this information is public)"
msgstr "Bewertung (öffentlich sichtbar)"
-#: ../../Zotlabs/Module/Rate.php:167
+#: ../../Zotlabs/Module/Rate.php:165
msgid "Optionally explain your rating (this information is public)"
msgstr "Optional kannst du deine Bewertung erklären (öffentlich sichtbar)"
@@ -4738,6 +3595,1073 @@ msgstr "Webseite: "
msgid "Description: "
msgstr "Beschreibung: "
+#: ../../Zotlabs/Module/Admin.php:77
+msgid "Theme settings updated."
+msgstr "Theme-Einstellungen aktualisiert."
+
+#: ../../Zotlabs/Module/Admin.php:197
+msgid "# Accounts"
+msgstr "Anzahl der Konten"
+
+#: ../../Zotlabs/Module/Admin.php:198
+msgid "# blocked accounts"
+msgstr "Anzahl der blockierten Konten"
+
+#: ../../Zotlabs/Module/Admin.php:199
+msgid "# expired accounts"
+msgstr "Anzahl der abgelaufenen Konten"
+
+#: ../../Zotlabs/Module/Admin.php:200
+msgid "# expiring accounts"
+msgstr "Anzahl der ablaufenden Konten"
+
+#: ../../Zotlabs/Module/Admin.php:211
+msgid "# Channels"
+msgstr "Anzahl der Kanäle"
+
+#: ../../Zotlabs/Module/Admin.php:212
+msgid "# primary"
+msgstr "Anzahl der primären Kanäle"
+
+#: ../../Zotlabs/Module/Admin.php:213
+msgid "# clones"
+msgstr "Anzahl der Klone"
+
+#: ../../Zotlabs/Module/Admin.php:219
+msgid "Message queues"
+msgstr "Nachrichten-Warteschlangen"
+
+#: ../../Zotlabs/Module/Admin.php:236
+msgid "Your software should be updated"
+msgstr "Die installierte Software sollte aktualisiert werden"
+
+#: ../../Zotlabs/Module/Admin.php:241 ../../Zotlabs/Module/Admin.php:490
+#: ../../Zotlabs/Module/Admin.php:711 ../../Zotlabs/Module/Admin.php:755
+#: ../../Zotlabs/Module/Admin.php:1030 ../../Zotlabs/Module/Admin.php:1209
+#: ../../Zotlabs/Module/Admin.php:1329 ../../Zotlabs/Module/Admin.php:1419
+#: ../../Zotlabs/Module/Admin.php:1612 ../../Zotlabs/Module/Admin.php:1646
+#: ../../Zotlabs/Module/Admin.php:1731
+msgid "Administration"
+msgstr "Administration"
+
+#: ../../Zotlabs/Module/Admin.php:242
+msgid "Summary"
+msgstr "Zusammenfassung"
+
+#: ../../Zotlabs/Module/Admin.php:245
+msgid "Registered accounts"
+msgstr "Registrierte Konten"
+
+#: ../../Zotlabs/Module/Admin.php:246 ../../Zotlabs/Module/Admin.php:715
+msgid "Pending registrations"
+msgstr "Ausstehende Registrierungen"
+
+#: ../../Zotlabs/Module/Admin.php:247
+msgid "Registered channels"
+msgstr "Registrierte Kanäle"
+
+#: ../../Zotlabs/Module/Admin.php:248 ../../Zotlabs/Module/Admin.php:716
+msgid "Active plugins"
+msgstr "Aktive Plug-Ins"
+
+#: ../../Zotlabs/Module/Admin.php:249
+msgid "Version"
+msgstr "Version"
+
+#: ../../Zotlabs/Module/Admin.php:250
+msgid "Repository version (master)"
+msgstr "Repository-Version (master)"
+
+#: ../../Zotlabs/Module/Admin.php:251
+msgid "Repository version (dev)"
+msgstr "Repository-Version (dev)"
+
+#: ../../Zotlabs/Module/Admin.php:373
+msgid "Site settings updated."
+msgstr "Site-Einstellungen aktualisiert."
+
+#: ../../Zotlabs/Module/Admin.php:400 ../../include/text.php:2841
+msgid "Default"
+msgstr "Standard"
+
+#: ../../Zotlabs/Module/Admin.php:410 ../../Zotlabs/Module/Settings.php:798
+msgid "mobile"
+msgstr "mobil"
+
+#: ../../Zotlabs/Module/Admin.php:412
+msgid "experimental"
+msgstr "experimentell"
+
+#: ../../Zotlabs/Module/Admin.php:414
+msgid "unsupported"
+msgstr "nicht unterstützt"
+
+#: ../../Zotlabs/Module/Admin.php:460
+msgid "Yes - with approval"
+msgstr "Ja - mit Zustimmung"
+
+#: ../../Zotlabs/Module/Admin.php:466
+msgid "My site is not a public server"
+msgstr "Mein Server ist kein öffentlicher Server"
+
+#: ../../Zotlabs/Module/Admin.php:467
+msgid "My site has paid access only"
+msgstr "Meine Seite hat nur bezahlten Zugriff"
+
+#: ../../Zotlabs/Module/Admin.php:468
+msgid "My site has free access only"
+msgstr "Meine Seite hat nur freien Zugriff"
+
+#: ../../Zotlabs/Module/Admin.php:469
+msgid "My site offers free accounts with optional paid upgrades"
+msgstr "Mein Server bietet kostenlose Konten mit der Möglichkeit zu bezahlten Upgrades"
+
+#: ../../Zotlabs/Module/Admin.php:491 ../../include/widgets.php:1382
+msgid "Site"
+msgstr "Seite"
+
+#: ../../Zotlabs/Module/Admin.php:493 ../../Zotlabs/Module/Register.php:245
+msgid "Registration"
+msgstr "Registrierung"
+
+#: ../../Zotlabs/Module/Admin.php:494
+msgid "File upload"
+msgstr "Dateiupload"
+
+#: ../../Zotlabs/Module/Admin.php:495
+msgid "Policies"
+msgstr "Richtlinien"
+
+#: ../../Zotlabs/Module/Admin.php:496 ../../include/contact_widgets.php:16
+msgid "Advanced"
+msgstr "Fortgeschritten"
+
+#: ../../Zotlabs/Module/Admin.php:500
+msgid "Site name"
+msgstr "Seitenname"
+
+#: ../../Zotlabs/Module/Admin.php:501
+msgid "Banner/Logo"
+msgstr "Banner/Logo"
+
+#: ../../Zotlabs/Module/Admin.php:502
+msgid "Administrator Information"
+msgstr "Administrator-Informationen"
+
+#: ../../Zotlabs/Module/Admin.php:502
+msgid ""
+"Contact information for site administrators. Displayed on siteinfo page. "
+"BBCode can be used here"
+msgstr "Kontaktinformationen für Administratoren des Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann verwendet werden."
+
+#: ../../Zotlabs/Module/Admin.php:503
+msgid "System language"
+msgstr "System-Sprache"
+
+#: ../../Zotlabs/Module/Admin.php:504
+msgid "System theme"
+msgstr "System-Theme"
+
+#: ../../Zotlabs/Module/Admin.php:504
+msgid ""
+"Default system theme - may be over-ridden by user profiles - <a href='#' "
+"id='cnftheme'>change theme settings</a>"
+msgstr "Standard-System-Theme – kann durch Nutzerprofile überschieben werden – <a href='#' id='cnftheme'>Theme-Einstellungen ändern</a>"
+
+#: ../../Zotlabs/Module/Admin.php:505
+msgid "Mobile system theme"
+msgstr "Mobile System-Theme:"
+
+#: ../../Zotlabs/Module/Admin.php:505
+msgid "Theme for mobile devices"
+msgstr "Theme für mobile Geräte"
+
+#: ../../Zotlabs/Module/Admin.php:507
+msgid "Allow Feeds as Connections"
+msgstr "Feeds als Verbindungen erlauben"
+
+#: ../../Zotlabs/Module/Admin.php:507
+msgid "(Heavy system resource usage)"
+msgstr "(führt zu hoher Systemlast)"
+
+#: ../../Zotlabs/Module/Admin.php:508
+msgid "Maximum image size"
+msgstr "Maximale Bildgröße"
+
+#: ../../Zotlabs/Module/Admin.php:508
+msgid ""
+"Maximum size in bytes of uploaded images. Default is 0, which means no "
+"limits."
+msgstr "Maximale Größe hochgeladener Bilder in Bytes. Standard ist 0 (keine Einschränkung)."
+
+#: ../../Zotlabs/Module/Admin.php:509
+msgid "Does this site allow new member registration?"
+msgstr "Erlaubt dieser Server die Registrierung neuer Nutzer?"
+
+#: ../../Zotlabs/Module/Admin.php:510
+msgid "Invitation only"
+msgstr "Nur mit Einladung"
+
+#: ../../Zotlabs/Module/Admin.php:510
+msgid ""
+"Only allow new member registrations with an invitation code. Above register "
+"policy must be set to Yes."
+msgstr "Erlaube die Neuregistrierung von Mitglieder nur mit einem Einladungscode. Die Registrierungs-Politik muss oben auf Ja gesetzt werden."
+
+#: ../../Zotlabs/Module/Admin.php:511
+msgid "Which best describes the types of account offered by this hub?"
+msgstr "Was ist die passendste Beschreibung der Konten auf diesem Hub?"
+
+#: ../../Zotlabs/Module/Admin.php:512
+msgid "Register text"
+msgstr "Registrierungstext"
+
+#: ../../Zotlabs/Module/Admin.php:512
+msgid "Will be displayed prominently on the registration page."
+msgstr "Wird gut sichtbar auf der Registrierungs-Seite angezeigt."
+
+#: ../../Zotlabs/Module/Admin.php:513
+msgid "Site homepage to show visitors (default: login box)"
+msgstr "Homepage des Hubs, die Besuchern angezeigt wird (Voreinstellung: Anmeldemaske)"
+
+#: ../../Zotlabs/Module/Admin.php:513
+msgid ""
+"example: 'public' to show public stream, 'page/sys/home' to show a system "
+"webpage called 'home' or 'include:home.html' to include a file."
+msgstr "Beispiele: 'public', um den Stream aller öffentlichen Beiträge anzuzeigen, 'page/sys/home', um eine System-Webseite namens 'home' anzuzeigen, 'include:home.html', um eine Datei einzufügen."
+
+#: ../../Zotlabs/Module/Admin.php:514
+msgid "Preserve site homepage URL"
+msgstr "Homepage-URL schützen"
+
+#: ../../Zotlabs/Module/Admin.php:514
+msgid ""
+"Present the site homepage in a frame at the original location instead of "
+"redirecting"
+msgstr "Zeigt die Homepage an der Original-URL in einem Frame an, statt auf die eigentliche Adresse der Seite umzuleiten."
+
+#: ../../Zotlabs/Module/Admin.php:515
+msgid "Accounts abandoned after x days"
+msgstr "Konten gelten nach X Tagen als unbenutzt"
+
+#: ../../Zotlabs/Module/Admin.php:515
+msgid ""
+"Will not waste system resources polling external sites for abandonded "
+"accounts. Enter 0 for no time limit."
+msgstr "Verschwende keine Systemressourcen auf das Pollen von externen Seiten, wenn das Konto nicht mehr benutzt wird. Trage hier 0 für kein zeitliches Limit."
+
+#: ../../Zotlabs/Module/Admin.php:516
+msgid "Allowed friend domains"
+msgstr "Erlaubte Domains für Kontakte"
+
+#: ../../Zotlabs/Module/Admin.php:516
+msgid ""
+"Comma separated list of domains which are allowed to establish friendships "
+"with this site. Wildcards are accepted. Empty to allow any domains"
+msgstr "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."
+
+#: ../../Zotlabs/Module/Admin.php:517
+msgid "Allowed email domains"
+msgstr "Erlaubte Domains für E-Mails"
+
+#: ../../Zotlabs/Module/Admin.php:517
+msgid ""
+"Comma separated list of domains which are allowed in email addresses for "
+"registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains"
+msgstr "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."
+
+#: ../../Zotlabs/Module/Admin.php:518
+msgid "Not allowed email domains"
+msgstr "Nicht erlaubte Domains für E-Mails"
+
+#: ../../Zotlabs/Module/Admin.php:518
+msgid ""
+"Comma separated list of domains which are not allowed in email addresses for"
+" registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains, unless allowed domains have been defined."
+msgstr "Domains in E-Mail-Adressen, die keine Erlaubnis erhalten, sich auf Deinem Hub zu registrieren. Mehrere Domains können durch Kommas getrennt werden. Platzhalter (*/?) sind möglich. Keine Eingabe bedeutet keine Einschränkung, unabhängig davon, ob unter erlaubte Domains etwas eingegeben wurde."
+
+#: ../../Zotlabs/Module/Admin.php:519
+msgid "Verify Email Addresses"
+msgstr "E-Mail-Adressen überprüfen"
+
+#: ../../Zotlabs/Module/Admin.php:519
+msgid ""
+"Check to verify email addresses used in account registration (recommended)."
+msgstr "Aktivieren, um die Überprüfung von E-Mail-Adressen bei der Registrierung von Benutzerkonten zu aktivieren (empfohlen)."
+
+#: ../../Zotlabs/Module/Admin.php:520
+msgid "Force publish"
+msgstr "Veröffentlichung erzwingen"
+
+#: ../../Zotlabs/Module/Admin.php:520
+msgid ""
+"Check to force all profiles on this site to be listed in the site directory."
+msgstr "Die Veröffentlichung aller Profile dieses Servers im Verzeichnis erzwingen."
+
+#: ../../Zotlabs/Module/Admin.php:521
+msgid "Import Public Streams"
+msgstr "Öffentliche Beiträge importieren"
+
+#: ../../Zotlabs/Module/Admin.php:521
+msgid ""
+"Import and allow access to public content pulled from other sites. Warning: "
+"this content is unmoderated."
+msgstr "Öffentliche Beiträge von anderen Servern importieren und zur Verfügung stellen. Warnung: Diese Inhalte sind nicht moderiert."
+
+#: ../../Zotlabs/Module/Admin.php:522
+msgid "Login on Homepage"
+msgstr "Log-in auf der Startseite"
+
+#: ../../Zotlabs/Module/Admin.php:522
+msgid ""
+"Present a login box to visitors on the home page if no other content has "
+"been configured."
+msgstr "Zeigt Besuchern der Homepage eine Anmeldemaske, falls keine anderen Inhalte konfiguriert wurden."
+
+#: ../../Zotlabs/Module/Admin.php:523
+msgid "Enable context help"
+msgstr "Kontext-Hilfe aktivieren"
+
+#: ../../Zotlabs/Module/Admin.php:523
+msgid ""
+"Display contextual help for the current page when the help button is "
+"pressed."
+msgstr "Zeigt Kontext-sensitive Hilfe für die aktuelle Seite an, wenn der Hilfe-Knopf geklickt wird."
+
+#: ../../Zotlabs/Module/Admin.php:525
+msgid "Directory Server URL"
+msgstr "Verzeichnisserver-URL"
+
+#: ../../Zotlabs/Module/Admin.php:525
+msgid "Default directory server"
+msgstr "Standard-Verzeichnisserver"
+
+#: ../../Zotlabs/Module/Admin.php:527
+msgid "Proxy user"
+msgstr "Proxy Benutzer"
+
+#: ../../Zotlabs/Module/Admin.php:528
+msgid "Proxy URL"
+msgstr "Proxy URL"
+
+#: ../../Zotlabs/Module/Admin.php:529
+msgid "Network timeout"
+msgstr "Netzwerk-Timeout"
+
+#: ../../Zotlabs/Module/Admin.php:529
+msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+msgstr "Wert in Sekunden. 0 für unbegrenzt (nicht empfohlen)."
+
+#: ../../Zotlabs/Module/Admin.php:530
+msgid "Delivery interval"
+msgstr "Auslieferung Intervall"
+
+#: ../../Zotlabs/Module/Admin.php:530
+msgid ""
+"Delay background delivery processes by this many seconds to reduce system "
+"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
+"for large dedicated servers."
+msgstr "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl Sekunden, um die Systemlast zu verringern. Empfehlungen: 4-5 für Shared Hosts, 2-3 für VPS, 0-1 für große dedizierte Server."
+
+#: ../../Zotlabs/Module/Admin.php:531
+msgid "Deliveries per process"
+msgstr "Zustellungen pro Prozess"
+
+#: ../../Zotlabs/Module/Admin.php:531
+msgid ""
+"Number of deliveries to attempt in a single operating system process. Adjust"
+" if necessary to tune system performance. Recommend: 1-5."
+msgstr "Anzahl der Zustellungen, die innerhalb eines einzelnen Betriebssystemprozesses versucht werden. Anpassen, falls nötig, um die System-Performance zu verbessern. Empfehlung: 1-5."
+
+#: ../../Zotlabs/Module/Admin.php:532
+msgid "Poll interval"
+msgstr "Abfrageintervall"
+
+#: ../../Zotlabs/Module/Admin.php:532
+msgid ""
+"Delay background polling processes by this many seconds to reduce system "
+"load. If 0, use delivery interval."
+msgstr "Verzögere Hintergrundprozesse um diese Anzahl Sekunden, um die Systemlast zu reduzieren. Bei 0 wird das Auslieferungsintervall verwendet."
+
+#: ../../Zotlabs/Module/Admin.php:533
+msgid "Maximum Load Average"
+msgstr "Maximales Load Average"
+
+#: ../../Zotlabs/Module/Admin.php:533
+msgid ""
+"Maximum system load before delivery and poll processes are deferred - "
+"default 50."
+msgstr "Maximale Systemlast, bevor Verteil- und Empfangsprozesse verschoben werden – Standard 50"
+
+#: ../../Zotlabs/Module/Admin.php:534
+msgid "Expiration period in days for imported (grid/network) content"
+msgstr "Setze den Zeitraum (in Tagen), ab wann importierte (aus dem Netzwerk) Inhalte ablaufen sollen"
+
+#: ../../Zotlabs/Module/Admin.php:534
+msgid "0 for no expiration of imported content"
+msgstr "0 = keine Löschung importierter Inhalte"
+
+#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:678
+#: ../../Zotlabs/Module/Settings.php:722
+msgid "Off"
+msgstr "Aus"
+
+#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:678
+#: ../../Zotlabs/Module/Settings.php:722
+msgid "On"
+msgstr "An"
+
+#: ../../Zotlabs/Module/Admin.php:678
+#, php-format
+msgid "Lock feature %s"
+msgstr "Blockiere die Funktion %s"
+
+#: ../../Zotlabs/Module/Admin.php:686
+msgid "Manage Additional Features"
+msgstr "Zusätzliche Funktionen verwalten"
+
+#: ../../Zotlabs/Module/Admin.php:703
+msgid "No server found"
+msgstr "Kein Server gefunden"
+
+#: ../../Zotlabs/Module/Admin.php:710 ../../Zotlabs/Module/Admin.php:1046
+msgid "ID"
+msgstr "ID"
+
+#: ../../Zotlabs/Module/Admin.php:710
+msgid "for channel"
+msgstr "für Kanal"
+
+#: ../../Zotlabs/Module/Admin.php:710
+msgid "on server"
+msgstr "auf Server"
+
+#: ../../Zotlabs/Module/Admin.php:712
+msgid "Server"
+msgstr "Server"
+
+#: ../../Zotlabs/Module/Admin.php:746
+msgid ""
+"By default, unfiltered HTML is allowed in embedded media. This is inherently"
+" insecure."
+msgstr "Standardmäßig wird ungefiltertes HTML in eingebetteten Inhalten zugelassen. Das ist prinzipiell unsicher."
+
+#: ../../Zotlabs/Module/Admin.php:749
+msgid ""
+"The recommended setting is to only allow unfiltered HTML from the following "
+"sites:"
+msgstr "Die empfohlene Einstellung ist, ungefiltertes HTML nur von den nachfolgenden Webseiten zu erlauben:"
+
+#: ../../Zotlabs/Module/Admin.php:750
+msgid ""
+"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br"
+" />https://vimeo.com/<br />https://soundcloud.com/<br />"
+msgstr "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"
+
+#: ../../Zotlabs/Module/Admin.php:751
+msgid ""
+"All other embedded content will be filtered, <strong>unless</strong> "
+"embedded content from that site is explicitly blocked."
+msgstr "Alle anderen eingebetteten Inhalte werden gefiltert, <strong>es sei denn</strong>, eingebettete Inhalte von einer bestimmten Seite sind explizit blockiert."
+
+#: ../../Zotlabs/Module/Admin.php:756 ../../include/widgets.php:1385
+msgid "Security"
+msgstr "Sicherheit"
+
+#: ../../Zotlabs/Module/Admin.php:758
+msgid "Block public"
+msgstr "Öffentlichen Zugriff blockieren"
+
+#: ../../Zotlabs/Module/Admin.php:758
+msgid ""
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently authenticated."
+msgstr "Blockiere den öffentlichen Zugriff auf alle ansonsten öffentlichen persönlichen Seiten dieser Website, sofern ein Besucher nicht angemeldet ist."
+
+#: ../../Zotlabs/Module/Admin.php:759
+msgid "Set \"Transport Security\" HTTP header"
+msgstr "Setze den \"Transport Security\" HTTP Header"
+
+#: ../../Zotlabs/Module/Admin.php:760
+msgid "Set \"Content Security Policy\" HTTP header"
+msgstr "Setze den \"Content Security Policy\" HTTP Header"
+
+#: ../../Zotlabs/Module/Admin.php:761
+msgid "Allow communications only from these sites"
+msgstr "Kommunikation nur von diesen Seiten erlauben"
+
+#: ../../Zotlabs/Module/Admin.php:761
+msgid ""
+"One site per line. Leave empty to allow communication from anywhere by "
+"default"
+msgstr "Ein Eintrag pro Zeile. Lasse das Feld leer, um Kommunikation grundlegend von überall her zu erlauben."
+
+#: ../../Zotlabs/Module/Admin.php:762
+msgid "Block communications from these sites"
+msgstr "Kommunikation von diesen Seiten blockieren"
+
+#: ../../Zotlabs/Module/Admin.php:763
+msgid "Allow communications only from these channels"
+msgstr "Kommunikation nur von diesen Kanälen erlauben"
+
+#: ../../Zotlabs/Module/Admin.php:763
+msgid ""
+"One channel (hash) per line. Leave empty to allow from any channel by "
+"default"
+msgstr "Ein Kanal (hash) pro Zeile. Leerlassen um jeden Kanal zuzulassen. "
+
+#: ../../Zotlabs/Module/Admin.php:764
+msgid "Block communications from these channels"
+msgstr "Kommunikation von folgenden Kanälen blockieren"
+
+#: ../../Zotlabs/Module/Admin.php:765
+msgid "Only allow embeds from secure (SSL) websites and links."
+msgstr "Erlaube Einbettungen nur von sicheren (SSL) Webseiten und Links."
+
+#: ../../Zotlabs/Module/Admin.php:766
+msgid "Allow unfiltered embedded HTML content only from these domains"
+msgstr "Erlaube Einbettung von Inhalten mit ungefiltertem HTML nur von diesen Domains"
+
+#: ../../Zotlabs/Module/Admin.php:766
+msgid "One site per line. By default embedded content is filtered."
+msgstr "Eine Website/Domain pro Zeile. Standardmäßig wird eingebetteter Inhalt gefiltert."
+
+#: ../../Zotlabs/Module/Admin.php:767
+msgid "Block embedded HTML from these domains"
+msgstr "Eingebettete HTML Inhalte von diesen Seiten blockieren"
+
+#: ../../Zotlabs/Module/Admin.php:785
+msgid "Update has been marked successful"
+msgstr "Update wurde als erfolgreich markiert"
+
+#: ../../Zotlabs/Module/Admin.php:795
+#, php-format
+msgid "Executing %s failed. Check system logs."
+msgstr "Ausführen von %s fehlgeschlagen. Überprüfe die Systemprotokolle."
+
+#: ../../Zotlabs/Module/Admin.php:798
+#, php-format
+msgid "Update %s was successfully applied."
+msgstr "Update %s wurde erfolgreich ausgeführt."
+
+#: ../../Zotlabs/Module/Admin.php:802
+#, php-format
+msgid "Update %s did not return a status. Unknown if it succeeded."
+msgstr "Update %s lieferte keinen Rückgabewert. Erfolg unbekannt."
+
+#: ../../Zotlabs/Module/Admin.php:805
+#, php-format
+msgid "Update function %s could not be found."
+msgstr "Update-Funktion %s konnte nicht gefunden werden."
+
+#: ../../Zotlabs/Module/Admin.php:821
+msgid "No failed updates."
+msgstr "Keine fehlgeschlagenen Aktualisierungen."
+
+#: ../../Zotlabs/Module/Admin.php:825
+msgid "Failed Updates"
+msgstr "Fehlgeschlagene Aktualisierungen"
+
+#: ../../Zotlabs/Module/Admin.php:827
+msgid "Mark success (if update was manually applied)"
+msgstr "Als erfolgreich markieren (wenn das Update manuell ausgeführt wurde)"
+
+#: ../../Zotlabs/Module/Admin.php:828
+msgid "Attempt to execute this update step automatically"
+msgstr "Versuche, diesen Updateschritt automatisch auszuführen"
+
+#: ../../Zotlabs/Module/Admin.php:859
+msgid "Queue Statistics"
+msgstr "Warteschlangenstatistiken"
+
+#: ../../Zotlabs/Module/Admin.php:860
+msgid "Total Entries"
+msgstr "Einträge insgesamt"
+
+#: ../../Zotlabs/Module/Admin.php:861
+msgid "Priority"
+msgstr "Priorität"
+
+#: ../../Zotlabs/Module/Admin.php:862
+msgid "Destination URL"
+msgstr "Ziel-URL"
+
+#: ../../Zotlabs/Module/Admin.php:863
+msgid "Mark hub permanently offline"
+msgstr "Hub als permanent offline markieren"
+
+#: ../../Zotlabs/Module/Admin.php:864
+msgid "Empty queue for this hub"
+msgstr "Warteschlange für diesen Hub leeren"
+
+#: ../../Zotlabs/Module/Admin.php:865
+msgid "Last known contact"
+msgstr "Letzter Kontakt"
+
+#: ../../Zotlabs/Module/Admin.php:901
+#, php-format
+msgid "%s account blocked/unblocked"
+msgid_plural "%s account blocked/unblocked"
+msgstr[0] "%s Konto blockiert/freigegeben"
+msgstr[1] "%s Konten blockiert/freigegeben"
+
+#: ../../Zotlabs/Module/Admin.php:908
+#, php-format
+msgid "%s account deleted"
+msgid_plural "%s accounts deleted"
+msgstr[0] "%s Konto gelöscht"
+msgstr[1] "%s Konten gelöscht"
+
+#: ../../Zotlabs/Module/Admin.php:944
+msgid "Account not found"
+msgstr "Konto nicht gefunden"
+
+#: ../../Zotlabs/Module/Admin.php:955
+#, php-format
+msgid "Account '%s' deleted"
+msgstr "Konto '%s' gelöscht"
+
+#: ../../Zotlabs/Module/Admin.php:963
+#, php-format
+msgid "Account '%s' blocked"
+msgstr "Konto '%s' blockiert"
+
+#: ../../Zotlabs/Module/Admin.php:971
+#, php-format
+msgid "Account '%s' unblocked"
+msgstr "Konto '%s' freigegeben"
+
+#: ../../Zotlabs/Module/Admin.php:1031 ../../Zotlabs/Module/Admin.php:1044
+#: ../../include/widgets.php:1383
+msgid "Accounts"
+msgstr "Konten"
+
+#: ../../Zotlabs/Module/Admin.php:1033 ../../Zotlabs/Module/Admin.php:1212
+msgid "select all"
+msgstr "Alle auswählen"
+
+#: ../../Zotlabs/Module/Admin.php:1034
+msgid "Registrations waiting for confirm"
+msgstr "Registrierungen warten auf Bestätigung"
+
+#: ../../Zotlabs/Module/Admin.php:1035
+msgid "Request date"
+msgstr "Antragsdatum"
+
+#: ../../Zotlabs/Module/Admin.php:1036
+msgid "No registrations."
+msgstr "Keine Registrierungen."
+
+#: ../../Zotlabs/Module/Admin.php:1038
+msgid "Deny"
+msgstr "Verweigern"
+
+#: ../../Zotlabs/Module/Admin.php:1048 ../../include/group.php:267
+msgid "All Channels"
+msgstr "Alle Kanäle"
+
+#: ../../Zotlabs/Module/Admin.php:1049
+msgid "Register date"
+msgstr "Registrierungs-Datum"
+
+#: ../../Zotlabs/Module/Admin.php:1050
+msgid "Last login"
+msgstr "Letzte Anmeldung"
+
+#: ../../Zotlabs/Module/Admin.php:1051
+msgid "Expires"
+msgstr "Verfällt"
+
+#: ../../Zotlabs/Module/Admin.php:1052
+msgid "Service Class"
+msgstr "Service-Klasse"
+
+#: ../../Zotlabs/Module/Admin.php:1054
+msgid ""
+"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
+" on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Die ausgewählten Konten werden gelöscht!\\n\\nAlles, was diese Konten auf diesem Hub veröffentlicht haben, wird endgültig gelöscht werden!\\n\\nBist du dir sicher?"
+
+#: ../../Zotlabs/Module/Admin.php:1055
+msgid ""
+"The account {0} will be deleted!\\n\\nEverything this account has posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Das Konto {0} wird gelöscht!\\n\\nAlles, was dieses Konto auf diesem Hub veröffentlicht hat, wird endgültig gelöscht werden!\\n\\nBist Du sicher?"
+
+#: ../../Zotlabs/Module/Admin.php:1091
+#, php-format
+msgid "%s channel censored/uncensored"
+msgid_plural "%s channels censored/uncensored"
+msgstr[0] "%s Kanal gesperrt/freigegeben"
+msgstr[1] "%s Kanäle gesperrt/freigegeben"
+
+#: ../../Zotlabs/Module/Admin.php:1100
+#, php-format
+msgid "%s channel code allowed/disallowed"
+msgid_plural "%s channels code allowed/disallowed"
+msgstr[0] "Code für %s Kanal gesperrt/freigegeben"
+msgstr[1] "Code für %s Kanäle gesperrt/freigegeben"
+
+#: ../../Zotlabs/Module/Admin.php:1106
+#, php-format
+msgid "%s channel deleted"
+msgid_plural "%s channels deleted"
+msgstr[0] "%s Kanal gelöscht"
+msgstr[1] "%s Kanäle gelöscht"
+
+#: ../../Zotlabs/Module/Admin.php:1126
+msgid "Channel not found"
+msgstr "Kanal nicht gefunden"
+
+#: ../../Zotlabs/Module/Admin.php:1136
+#, php-format
+msgid "Channel '%s' deleted"
+msgstr "Kanal '%s' gelöscht"
+
+#: ../../Zotlabs/Module/Admin.php:1148
+#, php-format
+msgid "Channel '%s' censored"
+msgstr "Kanal '%s' gesperrt"
+
+#: ../../Zotlabs/Module/Admin.php:1148
+#, php-format
+msgid "Channel '%s' uncensored"
+msgstr "Kanal '%s' freigegeben"
+
+#: ../../Zotlabs/Module/Admin.php:1159
+#, php-format
+msgid "Channel '%s' code allowed"
+msgstr "Code für Kanal '%s' freigegeben"
+
+#: ../../Zotlabs/Module/Admin.php:1159
+#, php-format
+msgid "Channel '%s' code disallowed"
+msgstr "Code für Kanal '%s' gesperrt"
+
+#: ../../Zotlabs/Module/Admin.php:1210 ../../include/widgets.php:1384
+msgid "Channels"
+msgstr "Kanäle"
+
+#: ../../Zotlabs/Module/Admin.php:1214
+msgid "Censor"
+msgstr "Sperren"
+
+#: ../../Zotlabs/Module/Admin.php:1215
+msgid "Uncensor"
+msgstr "Freigeben"
+
+#: ../../Zotlabs/Module/Admin.php:1216
+msgid "Allow Code"
+msgstr "Code erlauben"
+
+#: ../../Zotlabs/Module/Admin.php:1217
+msgid "Disallow Code"
+msgstr "Code sperren"
+
+#: ../../Zotlabs/Module/Admin.php:1218 ../../include/conversation.php:1611
+msgid "Channel"
+msgstr "Kanal"
+
+#: ../../Zotlabs/Module/Admin.php:1222
+msgid "UID"
+msgstr "UID"
+
+#: ../../Zotlabs/Module/Admin.php:1226
+msgid ""
+"Selected channels will be deleted!\\n\\nEverything that was posted in these "
+"channels on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Alle ausgewählten Kanäle werden gelöscht!\\n\\nAlles was von diesen Kanälen auf diesem Server geschrieben wurde, wird dauerhaft gelöscht!\\n\\nBist Du sicher?"
+
+#: ../../Zotlabs/Module/Admin.php:1227
+msgid ""
+"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
+"channel on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Der Kanal {0} wird gelöscht!\\n\\nAlles was von diesem Kanal auf diesem Server geschrieben wurde, wird gelöscht!\\n\\nBist Du sicher?"
+
+#: ../../Zotlabs/Module/Admin.php:1284
+#, php-format
+msgid "Plugin %s disabled."
+msgstr "Plug-In %s deaktiviert."
+
+#: ../../Zotlabs/Module/Admin.php:1288
+#, php-format
+msgid "Plugin %s enabled."
+msgstr "Plug-In %s aktiviert."
+
+#: ../../Zotlabs/Module/Admin.php:1298 ../../Zotlabs/Module/Admin.php:1585
+msgid "Disable"
+msgstr "Deaktivieren"
+
+#: ../../Zotlabs/Module/Admin.php:1301 ../../Zotlabs/Module/Admin.php:1587
+msgid "Enable"
+msgstr "Aktivieren"
+
+#: ../../Zotlabs/Module/Admin.php:1330 ../../Zotlabs/Module/Admin.php:1420
+#: ../../include/widgets.php:1387
+msgid "Plugins"
+msgstr "Plug-Ins"
+
+#: ../../Zotlabs/Module/Admin.php:1331 ../../Zotlabs/Module/Admin.php:1614
+msgid "Toggle"
+msgstr "Umschalten"
+
+#: ../../Zotlabs/Module/Admin.php:1332 ../../Zotlabs/Module/Admin.php:1615
+#: ../../Zotlabs/Lib/Apps.php:215 ../../include/widgets.php:638
+#: ../../include/nav.php:208
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: ../../Zotlabs/Module/Admin.php:1339 ../../Zotlabs/Module/Admin.php:1624
+msgid "Author: "
+msgstr "Autor: "
+
+#: ../../Zotlabs/Module/Admin.php:1340 ../../Zotlabs/Module/Admin.php:1625
+msgid "Maintainer: "
+msgstr "Betreuer:"
+
+#: ../../Zotlabs/Module/Admin.php:1341
+msgid "Minimum project version: "
+msgstr "Minimale Version des Projekts:"
+
+#: ../../Zotlabs/Module/Admin.php:1342
+msgid "Maximum project version: "
+msgstr "Maximale Version des Projekts:"
+
+#: ../../Zotlabs/Module/Admin.php:1343
+msgid "Minimum PHP version: "
+msgstr "Minimale PHP Version:"
+
+#: ../../Zotlabs/Module/Admin.php:1344
+msgid "Requires: "
+msgstr "Benötigt:"
+
+#: ../../Zotlabs/Module/Admin.php:1345 ../../Zotlabs/Module/Admin.php:1425
+msgid "Disabled - version incompatibility"
+msgstr "Abgeschaltet - Versionsinkompatibilität"
+
+#: ../../Zotlabs/Module/Admin.php:1394
+msgid "Enter the public git repository URL of the plugin repo."
+msgstr "Gib die öffentliche Git-Repository-URL des Plugin-Repository an."
+
+#: ../../Zotlabs/Module/Admin.php:1395
+msgid "Plugin repo git URL"
+msgstr "Plugin-Repository Git URL"
+
+#: ../../Zotlabs/Module/Admin.php:1396
+msgid "Custom repo name"
+msgstr "Benutzerdefinierter Repository-Name"
+
+#: ../../Zotlabs/Module/Admin.php:1396
+msgid "(optional)"
+msgstr "(optional)"
+
+#: ../../Zotlabs/Module/Admin.php:1397
+msgid "Download Plugin Repo"
+msgstr "Plugin-Repository herunterladen"
+
+#: ../../Zotlabs/Module/Admin.php:1404
+msgid "Install new repo"
+msgstr "Neues Repository installieren"
+
+#: ../../Zotlabs/Module/Admin.php:1405 ../../Zotlabs/Lib/Apps.php:330
+msgid "Install"
+msgstr "Installieren"
+
+#: ../../Zotlabs/Module/Admin.php:1427
+msgid "Manage Repos"
+msgstr "Repositorien verwalten"
+
+#: ../../Zotlabs/Module/Admin.php:1428
+msgid "Installed Plugin Repositories"
+msgstr "Installierte Plugin-Repositorien"
+
+#: ../../Zotlabs/Module/Admin.php:1429
+msgid "Install a New Plugin Repository"
+msgstr "Ein neues Plugin-Repository installieren"
+
+#: ../../Zotlabs/Module/Admin.php:1435 ../../Zotlabs/Module/Settings.php:77
+#: ../../Zotlabs/Module/Settings.php:616 ../../Zotlabs/Lib/Apps.php:330
+msgid "Update"
+msgstr "Aktualisieren"
+
+#: ../../Zotlabs/Module/Admin.php:1436
+msgid "Switch branch"
+msgstr "Zweig/Branch wechseln"
+
+#: ../../Zotlabs/Module/Admin.php:1550
+msgid "No themes found."
+msgstr "Keine Theme gefunden."
+
+#: ../../Zotlabs/Module/Admin.php:1606
+msgid "Screenshot"
+msgstr "Bildschirmfoto"
+
+#: ../../Zotlabs/Module/Admin.php:1613 ../../Zotlabs/Module/Admin.php:1647
+#: ../../include/widgets.php:1388
+msgid "Themes"
+msgstr "Themes"
+
+#: ../../Zotlabs/Module/Admin.php:1652
+msgid "[Experimental]"
+msgstr "[Experimentell]"
+
+#: ../../Zotlabs/Module/Admin.php:1653
+msgid "[Unsupported]"
+msgstr "[Nicht unterstützt]"
+
+#: ../../Zotlabs/Module/Admin.php:1677
+msgid "Log settings updated."
+msgstr "Protokoll-Einstellungen aktualisiert."
+
+#: ../../Zotlabs/Module/Admin.php:1732 ../../include/widgets.php:1409
+#: ../../include/widgets.php:1419
+msgid "Logs"
+msgstr "Protokolle"
+
+#: ../../Zotlabs/Module/Admin.php:1734
+msgid "Clear"
+msgstr "Leeren"
+
+#: ../../Zotlabs/Module/Admin.php:1740
+msgid "Debugging"
+msgstr "Debugging"
+
+#: ../../Zotlabs/Module/Admin.php:1741
+msgid "Log file"
+msgstr "Protokolldatei"
+
+#: ../../Zotlabs/Module/Admin.php:1741
+msgid ""
+"Must be writable by web server. Relative to your top-level webserver "
+"directory."
+msgstr "Muss für den Web-Server schreibbar sein. Relativ zum Hubzilla-Stammverzeichnis."
+
+#: ../../Zotlabs/Module/Admin.php:1742
+msgid "Log level"
+msgstr "Protokollstufe"
+
+#: ../../Zotlabs/Module/Admin.php:2028
+msgid "New Profile Field"
+msgstr "Neues Profilfeld"
+
+#: ../../Zotlabs/Module/Admin.php:2029 ../../Zotlabs/Module/Admin.php:2049
+msgid "Field nickname"
+msgstr "Kurzname für das Feld"
+
+#: ../../Zotlabs/Module/Admin.php:2029 ../../Zotlabs/Module/Admin.php:2049
+msgid "System name of field"
+msgstr "Systemname des Feldes"
+
+#: ../../Zotlabs/Module/Admin.php:2030 ../../Zotlabs/Module/Admin.php:2050
+msgid "Input type"
+msgstr "Art des Inhalts"
+
+#: ../../Zotlabs/Module/Admin.php:2031 ../../Zotlabs/Module/Admin.php:2051
+msgid "Field Name"
+msgstr "Feldname"
+
+#: ../../Zotlabs/Module/Admin.php:2031 ../../Zotlabs/Module/Admin.php:2051
+msgid "Label on profile pages"
+msgstr "Bezeichnung auf Profilseiten"
+
+#: ../../Zotlabs/Module/Admin.php:2032 ../../Zotlabs/Module/Admin.php:2052
+msgid "Help text"
+msgstr "Hilfetext"
+
+#: ../../Zotlabs/Module/Admin.php:2032 ../../Zotlabs/Module/Admin.php:2052
+msgid "Additional info (optional)"
+msgstr "Zusätzliche Informationen (optional)"
+
+#: ../../Zotlabs/Module/Admin.php:2042
+msgid "Field definition not found"
+msgstr "Feld-Definition nicht gefunden"
+
+#: ../../Zotlabs/Module/Admin.php:2048
+msgid "Edit Profile Field"
+msgstr "Profilfeld bearbeiten"
+
+#: ../../Zotlabs/Module/Admin.php:2106 ../../include/widgets.php:1390
+msgid "Profile Fields"
+msgstr "Profil Felder"
+
+#: ../../Zotlabs/Module/Admin.php:2107
+msgid "Basic Profile Fields"
+msgstr "Notwendige Profil Felder"
+
+#: ../../Zotlabs/Module/Admin.php:2108
+msgid "Advanced Profile Fields"
+msgstr "Erweiterte Profil Felder"
+
+#: ../../Zotlabs/Module/Admin.php:2108
+msgid "(In addition to basic fields)"
+msgstr "(zusätzlich zu notwendige Felder)"
+
+#: ../../Zotlabs/Module/Admin.php:2110
+msgid "All available fields"
+msgstr "Alle verfügbaren Felder"
+
+#: ../../Zotlabs/Module/Admin.php:2111
+msgid "Custom Fields"
+msgstr "Benutzerdefinierte Felder"
+
+#: ../../Zotlabs/Module/Admin.php:2115
+msgid "Create Custom Field"
+msgstr "Erstelle benutzerdefiniertes Feld"
+
+#: ../../Zotlabs/Module/Appman.php:37 ../../Zotlabs/Module/Appman.php:53
+msgid "App installed."
+msgstr "App installiert."
+
+#: ../../Zotlabs/Module/Appman.php:46
+msgid "Malformed app."
+msgstr "Fehlerhafte App."
+
+#: ../../Zotlabs/Module/Appman.php:104
+msgid "Embed code"
+msgstr "Code einbetten"
+
+#: ../../Zotlabs/Module/Appman.php:110 ../../include/widgets.php:107
+msgid "Edit App"
+msgstr "App bearbeiten"
+
+#: ../../Zotlabs/Module/Appman.php:110
+msgid "Create App"
+msgstr "App erstellen"
+
+#: ../../Zotlabs/Module/Appman.php:115
+msgid "Name of app"
+msgstr "Name der App"
+
+#: ../../Zotlabs/Module/Appman.php:116
+msgid "Location (URL) of app"
+msgstr "Ort (URL) der App"
+
+#: ../../Zotlabs/Module/Appman.php:118
+msgid "Photo icon URL"
+msgstr "URL zum Icon"
+
+#: ../../Zotlabs/Module/Appman.php:118
+msgid "80 x 80 pixels - optional"
+msgstr "80 x 80 Pixel – optional"
+
+#: ../../Zotlabs/Module/Appman.php:119
+msgid "Categories (optional, comma separated list)"
+msgstr "Kategorien (optional, kommagetrennte Liste)"
+
+#: ../../Zotlabs/Module/Appman.php:120
+msgid "Version ID"
+msgstr "Versions-ID"
+
+#: ../../Zotlabs/Module/Appman.php:121
+msgid "Price of app"
+msgstr "Preis der App"
+
+#: ../../Zotlabs/Module/Appman.php:122
+msgid "Location (URL) to purchase app"
+msgstr "Ort (URL), um die App zu kaufen"
+
#: ../../Zotlabs/Module/Rbmark.php:94
msgid "Select a bookmark folder"
msgstr "Lesezeichenordner wählen"
@@ -4841,8 +4765,8 @@ msgstr "ja"
msgid "Membership on this site is by invitation only."
msgstr "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich."
-#: ../../Zotlabs/Module/Register.php:262 ../../include/nav.php:148
-#: ../../boot.php:1584
+#: ../../Zotlabs/Module/Register.php:262 ../../include/nav.php:147
+#: ../../boot.php:1685
msgid "Register"
msgstr "Registrieren"
@@ -4860,45 +4784,45 @@ msgid ""
"password."
msgstr "Das Löschen von Konten innerhalb 48 Stunden nachdem deren Passwort geändert wurde ist nicht erlaubt."
-#: ../../Zotlabs/Module/Removeaccount.php:61
+#: ../../Zotlabs/Module/Removeaccount.php:56
msgid "Remove This Account"
msgstr "Dieses Konto löschen"
-#: ../../Zotlabs/Module/Removeaccount.php:62
-#: ../../Zotlabs/Module/Removeme.php:62
+#: ../../Zotlabs/Module/Removeaccount.php:57
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "WARNING: "
msgstr "WARNUNG: "
-#: ../../Zotlabs/Module/Removeaccount.php:62
+#: ../../Zotlabs/Module/Removeaccount.php:57
msgid ""
"This account and all its channels will be completely removed from the "
"network. "
msgstr "Dieses Konto mit all seinen Kanälen wird vollständig aus dem Netzwerk gelöscht."
-#: ../../Zotlabs/Module/Removeaccount.php:62
-#: ../../Zotlabs/Module/Removeme.php:62
+#: ../../Zotlabs/Module/Removeaccount.php:57
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "This action is permanent and can not be undone!"
msgstr "Dieser Schritt ist endgültig und kann nicht rückgängig gemacht werden!"
-#: ../../Zotlabs/Module/Removeaccount.php:63
-#: ../../Zotlabs/Module/Removeme.php:63
+#: ../../Zotlabs/Module/Removeaccount.php:58
+#: ../../Zotlabs/Module/Removeme.php:60
msgid "Please enter your password for verification:"
msgstr "Bitte gib zur Bestätigung Dein Passwort ein:"
-#: ../../Zotlabs/Module/Removeaccount.php:64
+#: ../../Zotlabs/Module/Removeaccount.php:59
msgid ""
"Remove this account, all its channels and all its channel clones from the "
"network"
msgstr "Dieses Konto, all seine Kanäle sowie alle Kanal-Klone aus dem Netzwerk löschen"
-#: ../../Zotlabs/Module/Removeaccount.php:64
+#: ../../Zotlabs/Module/Removeaccount.php:59
msgid ""
"By default only the instances of the channels located on this hub will be "
"removed from the network"
msgstr "Standardmäßig werden nur die Kanalklone auf diesem $Projectname-Hub aus dem Netzwerk entfernt"
-#: ../../Zotlabs/Module/Removeaccount.php:65
-#: ../../Zotlabs/Module/Settings.php:703
+#: ../../Zotlabs/Module/Removeaccount.php:60
+#: ../../Zotlabs/Module/Settings.php:705
msgid "Remove Account"
msgstr "Konto entfernen"
@@ -4908,25 +4832,25 @@ msgid ""
"password."
msgstr "Innerhalb von 48 Stunden nach einer Änderung des Passworts können keine Kanäle gelöscht werden."
-#: ../../Zotlabs/Module/Removeme.php:61
+#: ../../Zotlabs/Module/Removeme.php:58
msgid "Remove This Channel"
msgstr "Diesen Kanal löschen"
-#: ../../Zotlabs/Module/Removeme.php:62
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "This channel will be completely removed from the network. "
msgstr "Dieser Kanal wird vollständig aus dem Netzwerk gelöscht."
-#: ../../Zotlabs/Module/Removeme.php:64
+#: ../../Zotlabs/Module/Removeme.php:61
msgid "Remove this channel and all its clones from the network"
msgstr "Lösche diesen Kanal und all seine Klone aus dem Netzwerk"
-#: ../../Zotlabs/Module/Removeme.php:64
+#: ../../Zotlabs/Module/Removeme.php:61
msgid ""
"By default only the instance of the channel located on this hub will be "
"removed from the network"
msgstr "Standardmäßig wird der Kanal nur auf diesem Server gelöscht, seine Klone verbleiben im Netzwerk"
-#: ../../Zotlabs/Module/Removeme.php:65 ../../Zotlabs/Module/Settings.php:1122
+#: ../../Zotlabs/Module/Removeme.php:62 ../../Zotlabs/Module/Settings.php:1124
msgid "Remove Channel"
msgstr "Kanal löschen"
@@ -4970,1015 +4894,1034 @@ msgstr "Suchergebnisse für: %s"
msgid "No service class restrictions found."
msgstr "Keine Dienstklassenbeschränkungen gefunden."
-#: ../../Zotlabs/Module/Settings.php:67
+#: ../../Zotlabs/Module/Settings.php:69
msgid "Name is required"
msgstr "Name ist erforderlich"
-#: ../../Zotlabs/Module/Settings.php:71
+#: ../../Zotlabs/Module/Settings.php:73
msgid "Key and Secret are required"
msgstr "Schlüssel und Geheimnis werden benötigt"
-#: ../../Zotlabs/Module/Settings.php:75 ../../Zotlabs/Module/Settings.php:614
-#: ../../include/apps.php:252
-msgid "Update"
-msgstr "Aktualisieren"
-
-#: ../../Zotlabs/Module/Settings.php:223
+#: ../../Zotlabs/Module/Settings.php:225
msgid "Not valid email."
msgstr "Keine gültige E-Mail Adresse."
-#: ../../Zotlabs/Module/Settings.php:226
+#: ../../Zotlabs/Module/Settings.php:228
msgid "Protected email address. Cannot change to that email."
msgstr "Geschützte E-Mail Adresse. Diese kann nicht verändert werden."
-#: ../../Zotlabs/Module/Settings.php:235
+#: ../../Zotlabs/Module/Settings.php:237
msgid "System failure storing new email. Please try again."
msgstr "Systemfehler während des Speicherns der neuen Mail. Bitte versuche es noch einmal."
-#: ../../Zotlabs/Module/Settings.php:252
+#: ../../Zotlabs/Module/Settings.php:254
msgid "Password verification failed."
msgstr "Passwortüberprüfung fehlgeschlagen."
-#: ../../Zotlabs/Module/Settings.php:259
+#: ../../Zotlabs/Module/Settings.php:261
msgid "Passwords do not match. Password unchanged."
msgstr "Kennwörter stimmen nicht überein. Kennwort nicht verändert."
-#: ../../Zotlabs/Module/Settings.php:263
+#: ../../Zotlabs/Module/Settings.php:265
msgid "Empty passwords are not allowed. Password unchanged."
msgstr "Leere Kennwörter sind nicht erlaubt. Kennwort nicht verändert."
-#: ../../Zotlabs/Module/Settings.php:277
+#: ../../Zotlabs/Module/Settings.php:279
msgid "Password changed."
msgstr "Kennwort geändert."
-#: ../../Zotlabs/Module/Settings.php:279
+#: ../../Zotlabs/Module/Settings.php:281
msgid "Password update failed. Please try again."
msgstr "Kennwortänderung fehlgeschlagen. Bitte versuche es noch einmal."
-#: ../../Zotlabs/Module/Settings.php:523
+#: ../../Zotlabs/Module/Settings.php:525
msgid "Settings updated."
msgstr "Einstellungen aktualisiert."
-#: ../../Zotlabs/Module/Settings.php:587 ../../Zotlabs/Module/Settings.php:613
-#: ../../Zotlabs/Module/Settings.php:649
+#: ../../Zotlabs/Module/Settings.php:589 ../../Zotlabs/Module/Settings.php:615
+#: ../../Zotlabs/Module/Settings.php:651
msgid "Add application"
msgstr "Anwendung hinzufügen"
-#: ../../Zotlabs/Module/Settings.php:590
+#: ../../Zotlabs/Module/Settings.php:592
msgid "Name of application"
msgstr "Name der Anwendung"
-#: ../../Zotlabs/Module/Settings.php:591 ../../Zotlabs/Module/Settings.php:617
+#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:619
msgid "Consumer Key"
msgstr "Consumer Key"
-#: ../../Zotlabs/Module/Settings.php:591 ../../Zotlabs/Module/Settings.php:592
+#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:594
msgid "Automatically generated - change if desired. Max length 20"
msgstr "Automatisch erzeugt – ändern, falls erwünscht. Maximale Länge 20"
-#: ../../Zotlabs/Module/Settings.php:592 ../../Zotlabs/Module/Settings.php:618
+#: ../../Zotlabs/Module/Settings.php:594 ../../Zotlabs/Module/Settings.php:620
msgid "Consumer Secret"
msgstr "Consumer Secret"
-#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:619
+#: ../../Zotlabs/Module/Settings.php:595 ../../Zotlabs/Module/Settings.php:621
msgid "Redirect"
msgstr "Umleitung"
-#: ../../Zotlabs/Module/Settings.php:593
+#: ../../Zotlabs/Module/Settings.php:595
msgid ""
"Redirect URI - leave blank unless your application specifically requires "
"this"
msgstr "Umleitungs-URl – lasse das leer, solange Deine Anwendung es nicht explizit erfordert"
-#: ../../Zotlabs/Module/Settings.php:594 ../../Zotlabs/Module/Settings.php:620
+#: ../../Zotlabs/Module/Settings.php:596 ../../Zotlabs/Module/Settings.php:622
msgid "Icon url"
msgstr "Symbol-URL"
-#: ../../Zotlabs/Module/Settings.php:594
+#: ../../Zotlabs/Module/Settings.php:596 ../../Zotlabs/Module/Sources.php:112
+#: ../../Zotlabs/Module/Sources.php:147
msgid "Optional"
msgstr "Optional"
-#: ../../Zotlabs/Module/Settings.php:605
+#: ../../Zotlabs/Module/Settings.php:607
msgid "Application not found."
msgstr "Die Anwendung wurde nicht gefunden."
-#: ../../Zotlabs/Module/Settings.php:648
+#: ../../Zotlabs/Module/Settings.php:650
msgid "Connected Apps"
msgstr "Verbundene Apps"
-#: ../../Zotlabs/Module/Settings.php:652
+#: ../../Zotlabs/Module/Settings.php:654
msgid "Client key starts with"
msgstr "Client Key beginnt mit"
-#: ../../Zotlabs/Module/Settings.php:653
+#: ../../Zotlabs/Module/Settings.php:655
msgid "No name"
msgstr "Kein Name"
-#: ../../Zotlabs/Module/Settings.php:654
+#: ../../Zotlabs/Module/Settings.php:656
msgid "Remove authorization"
msgstr "Authorisierung aufheben"
-#: ../../Zotlabs/Module/Settings.php:667
+#: ../../Zotlabs/Module/Settings.php:669
msgid "No feature settings configured"
msgstr "Keine Funktions-Einstellungen konfiguriert"
-#: ../../Zotlabs/Module/Settings.php:674
+#: ../../Zotlabs/Module/Settings.php:676
msgid "Feature/Addon Settings"
msgstr "Funktions-/Addon-Einstellungen"
-#: ../../Zotlabs/Module/Settings.php:697
+#: ../../Zotlabs/Module/Settings.php:699
msgid "Account Settings"
msgstr "Konto-Einstellungen"
-#: ../../Zotlabs/Module/Settings.php:698
+#: ../../Zotlabs/Module/Settings.php:700
msgid "Current Password"
msgstr "Aktuelles Passwort"
-#: ../../Zotlabs/Module/Settings.php:699
+#: ../../Zotlabs/Module/Settings.php:701
msgid "Enter New Password"
msgstr "Gib ein neues Passwort ein"
-#: ../../Zotlabs/Module/Settings.php:700
+#: ../../Zotlabs/Module/Settings.php:702
msgid "Confirm New Password"
msgstr "Bestätige das neue Passwort"
-#: ../../Zotlabs/Module/Settings.php:700
+#: ../../Zotlabs/Module/Settings.php:702
msgid "Leave password fields blank unless changing"
msgstr "Lasse die Passwort-Felder leer, außer Du möchtest das Passwort ändern"
-#: ../../Zotlabs/Module/Settings.php:702
-#: ../../Zotlabs/Module/Settings.php:1039
+#: ../../Zotlabs/Module/Settings.php:704
+#: ../../Zotlabs/Module/Settings.php:1041
msgid "Email Address:"
msgstr "Email Adresse:"
-#: ../../Zotlabs/Module/Settings.php:704
+#: ../../Zotlabs/Module/Settings.php:706
msgid "Remove this account including all its channels"
msgstr "Dieses Konto inklusive all seiner Kanäle löschen"
-#: ../../Zotlabs/Module/Settings.php:727
+#: ../../Zotlabs/Module/Settings.php:729
msgid "Additional Features"
msgstr "Zusätzliche Funktionen"
-#: ../../Zotlabs/Module/Settings.php:751
+#: ../../Zotlabs/Module/Settings.php:753
msgid "Connector Settings"
msgstr "Connector-Einstellungen"
-#: ../../Zotlabs/Module/Settings.php:790
+#: ../../Zotlabs/Module/Settings.php:792
msgid "No special theme for mobile devices"
msgstr "Keine spezielle Theme für mobile Geräte"
-#: ../../Zotlabs/Module/Settings.php:793
+#: ../../Zotlabs/Module/Settings.php:795
#, php-format
msgid "%s - (Experimental)"
msgstr "%s – (experimentell)"
-#: ../../Zotlabs/Module/Settings.php:835
+#: ../../Zotlabs/Module/Settings.php:837
msgid "Display Settings"
msgstr "Anzeige-Einstellungen"
-#: ../../Zotlabs/Module/Settings.php:836
+#: ../../Zotlabs/Module/Settings.php:838
msgid "Theme Settings"
msgstr "Theme-Einstellungen"
-#: ../../Zotlabs/Module/Settings.php:837
+#: ../../Zotlabs/Module/Settings.php:839
msgid "Custom Theme Settings"
msgstr "Benutzerdefinierte Theme-Einstellungen"
-#: ../../Zotlabs/Module/Settings.php:838
+#: ../../Zotlabs/Module/Settings.php:840
msgid "Content Settings"
msgstr "Inhaltseinstellungen"
-#: ../../Zotlabs/Module/Settings.php:844
+#: ../../Zotlabs/Module/Settings.php:846
msgid "Display Theme:"
msgstr "Anzeige-Theme:"
-#: ../../Zotlabs/Module/Settings.php:845
+#: ../../Zotlabs/Module/Settings.php:847
msgid "Mobile Theme:"
msgstr "Mobile Theme:"
-#: ../../Zotlabs/Module/Settings.php:846
+#: ../../Zotlabs/Module/Settings.php:848
msgid "Preload images before rendering the page"
msgstr "Bilder im voraus laden, bevor die Seite angezeigt wird"
-#: ../../Zotlabs/Module/Settings.php:846
+#: ../../Zotlabs/Module/Settings.php:848
msgid ""
"The subjective page load time will be longer but the page will be ready when"
" displayed"
msgstr "Die empfundene Ladezeit wird sich erhöhen, aber dafür ist das Layout stabil, sobald eine Seite angezeigt wird"
-#: ../../Zotlabs/Module/Settings.php:847
+#: ../../Zotlabs/Module/Settings.php:849
msgid "Enable user zoom on mobile devices"
msgstr "Zoom auf Mobilgeräten aktivieren"
-#: ../../Zotlabs/Module/Settings.php:848
+#: ../../Zotlabs/Module/Settings.php:850
msgid "Update browser every xx seconds"
msgstr "Browser alle xx Sekunden aktualisieren"
-#: ../../Zotlabs/Module/Settings.php:848
+#: ../../Zotlabs/Module/Settings.php:850
msgid "Minimum of 10 seconds, no maximum"
msgstr "Minimum 10 Sekunden, kein Maximum"
-#: ../../Zotlabs/Module/Settings.php:849
+#: ../../Zotlabs/Module/Settings.php:851
msgid "Maximum number of conversations to load at any time:"
msgstr "Maximale Anzahl von Unterhaltungen, die auf einmal geladen werden sollen:"
-#: ../../Zotlabs/Module/Settings.php:849
+#: ../../Zotlabs/Module/Settings.php:851
msgid "Maximum of 100 items"
msgstr "Maximum: 100 Beiträge"
-#: ../../Zotlabs/Module/Settings.php:850
+#: ../../Zotlabs/Module/Settings.php:852
msgid "Show emoticons (smilies) as images"
msgstr "Emoticons (Smilies) als Bilder anzeigen"
-#: ../../Zotlabs/Module/Settings.php:851
+#: ../../Zotlabs/Module/Settings.php:853
msgid "Link post titles to source"
msgstr "Beitragstitel zum Originalbeitrag verlinken"
-#: ../../Zotlabs/Module/Settings.php:852
+#: ../../Zotlabs/Module/Settings.php:854
msgid "System Page Layout Editor - (advanced)"
msgstr "System-Seitenlayout-Editor (für Experten)"
-#: ../../Zotlabs/Module/Settings.php:855
+#: ../../Zotlabs/Module/Settings.php:857
msgid "Use blog/list mode on channel page"
msgstr "Blog-/Listenmodus auf der Kanalseite verwenden"
-#: ../../Zotlabs/Module/Settings.php:855 ../../Zotlabs/Module/Settings.php:856
+#: ../../Zotlabs/Module/Settings.php:857 ../../Zotlabs/Module/Settings.php:858
msgid "(comments displayed separately)"
msgstr "(Kommentare werden separat angezeigt)"
-#: ../../Zotlabs/Module/Settings.php:856
+#: ../../Zotlabs/Module/Settings.php:858
msgid "Use blog/list mode on grid page"
msgstr "Blog-/Listenmodus auf der Netzwerkseite verwenden"
-#: ../../Zotlabs/Module/Settings.php:857
+#: ../../Zotlabs/Module/Settings.php:859
msgid "Channel page max height of content (in pixels)"
msgstr "Maximale Höhe von Beitragsblöcken auf der Kanalseite (in Pixeln)"
-#: ../../Zotlabs/Module/Settings.php:857 ../../Zotlabs/Module/Settings.php:858
+#: ../../Zotlabs/Module/Settings.php:859 ../../Zotlabs/Module/Settings.php:860
msgid "click to expand content exceeding this height"
msgstr "Blöcke, deren Inhalt diese Höhe überschreitet, können per Klick vergrößert werden."
-#: ../../Zotlabs/Module/Settings.php:858
+#: ../../Zotlabs/Module/Settings.php:860
msgid "Grid page max height of content (in pixels)"
msgstr "Maximale Höhe (in Pixel) des Inhalts der Netzwerkseite"
-#: ../../Zotlabs/Module/Settings.php:892
+#: ../../Zotlabs/Module/Settings.php:894
msgid "Nobody except yourself"
msgstr "Niemand außer Dir selbst"
-#: ../../Zotlabs/Module/Settings.php:893
+#: ../../Zotlabs/Module/Settings.php:895
msgid "Only those you specifically allow"
msgstr "Nur die, denen Du es explizit erlaubst"
-#: ../../Zotlabs/Module/Settings.php:894
+#: ../../Zotlabs/Module/Settings.php:896
msgid "Approved connections"
msgstr "Angenommene Verbindungen"
-#: ../../Zotlabs/Module/Settings.php:895
+#: ../../Zotlabs/Module/Settings.php:897
msgid "Any connections"
msgstr "Beliebige Verbindungen"
-#: ../../Zotlabs/Module/Settings.php:896
+#: ../../Zotlabs/Module/Settings.php:898
msgid "Anybody on this website"
msgstr "Jeder auf dieser Website"
-#: ../../Zotlabs/Module/Settings.php:897
+#: ../../Zotlabs/Module/Settings.php:899
msgid "Anybody in this network"
msgstr "Alle $Projectname-Mitglieder"
-#: ../../Zotlabs/Module/Settings.php:898
+#: ../../Zotlabs/Module/Settings.php:900
msgid "Anybody authenticated"
msgstr "Jeder authentifizierte"
-#: ../../Zotlabs/Module/Settings.php:899
+#: ../../Zotlabs/Module/Settings.php:901
msgid "Anybody on the internet"
msgstr "Jeder im Internet"
-#: ../../Zotlabs/Module/Settings.php:974
+#: ../../Zotlabs/Module/Settings.php:976
msgid "Publish your default profile in the network directory"
msgstr "Standard-Profil im Netzwerk-Verzeichnis veröffentlichen"
-#: ../../Zotlabs/Module/Settings.php:979
+#: ../../Zotlabs/Module/Settings.php:981
msgid "Allow us to suggest you as a potential friend to new members?"
msgstr "Dürfen wir Dich neuen Mitgliedern als potentiellen Kontakt vorschlagen?"
-#: ../../Zotlabs/Module/Settings.php:988
+#: ../../Zotlabs/Module/Settings.php:990
msgid "Your channel address is"
msgstr "Deine Kanal-Adresse lautet"
-#: ../../Zotlabs/Module/Settings.php:1030
+#: ../../Zotlabs/Module/Settings.php:1032
msgid "Channel Settings"
msgstr "Kanal-Einstellungen"
-#: ../../Zotlabs/Module/Settings.php:1037
+#: ../../Zotlabs/Module/Settings.php:1039
msgid "Basic Settings"
msgstr "Grundeinstellungen"
-#: ../../Zotlabs/Module/Settings.php:1038 ../../include/identity.php:1279
+#: ../../Zotlabs/Module/Settings.php:1040 ../../include/channel.php:1140
msgid "Full Name:"
msgstr "Voller Name:"
-#: ../../Zotlabs/Module/Settings.php:1040
+#: ../../Zotlabs/Module/Settings.php:1042
msgid "Your Timezone:"
msgstr "Ihre Zeitzone:"
-#: ../../Zotlabs/Module/Settings.php:1041
+#: ../../Zotlabs/Module/Settings.php:1043
msgid "Default Post Location:"
msgstr "Standardstandort:"
-#: ../../Zotlabs/Module/Settings.php:1041
+#: ../../Zotlabs/Module/Settings.php:1043
msgid "Geographical location to display on your posts"
msgstr "Geografischer Ort, der bei Deinen Beiträgen angezeigt werden soll"
-#: ../../Zotlabs/Module/Settings.php:1042
+#: ../../Zotlabs/Module/Settings.php:1044
msgid "Use Browser Location:"
msgstr "Standort des Browsers verwenden:"
-#: ../../Zotlabs/Module/Settings.php:1044
+#: ../../Zotlabs/Module/Settings.php:1046
msgid "Adult Content"
msgstr "Nicht jugendfreie Inhalte"
-#: ../../Zotlabs/Module/Settings.php:1044
+#: ../../Zotlabs/Module/Settings.php:1046
msgid ""
"This channel frequently or regularly publishes adult content. (Please tag "
"any adult material and/or nudity with #NSFW)"
msgstr "Dieser Kanal veröffentlicht regelmäßig Inhalte, die für Minderjährige ungeeignet sind. (Bitte markiere solche Inhalte mit dem Schlagwort #NSFW)"
-#: ../../Zotlabs/Module/Settings.php:1046
+#: ../../Zotlabs/Module/Settings.php:1048
msgid "Security and Privacy Settings"
msgstr "Sicherheits- und Datenschutz-Einstellungen"
-#: ../../Zotlabs/Module/Settings.php:1049
+#: ../../Zotlabs/Module/Settings.php:1051
msgid "Your permissions are already configured. Click to view/adjust"
msgstr "Deine Zugriffsrechte sind schon konfiguriert. Klicke hier, um sie zu betrachten oder zu ändern"
-#: ../../Zotlabs/Module/Settings.php:1051
+#: ../../Zotlabs/Module/Settings.php:1053
msgid "Hide my online presence"
msgstr "Meine Online-Präsenz verbergen"
-#: ../../Zotlabs/Module/Settings.php:1051
+#: ../../Zotlabs/Module/Settings.php:1053
msgid "Prevents displaying in your profile that you are online"
msgstr "Verhindert die Anzeige Deines Online-Status in deinem Profil"
-#: ../../Zotlabs/Module/Settings.php:1053
+#: ../../Zotlabs/Module/Settings.php:1055
msgid "Simple Privacy Settings:"
msgstr "Einfache Privatsphäre-Einstellungen"
-#: ../../Zotlabs/Module/Settings.php:1054
+#: ../../Zotlabs/Module/Settings.php:1056
msgid ""
"Very Public - <em>extremely permissive (should be used with caution)</em>"
msgstr "Komplett offen – <em>extrem ungeschützt (mit großer Vorsicht verwenden!)</em>"
-#: ../../Zotlabs/Module/Settings.php:1055
+#: ../../Zotlabs/Module/Settings.php:1057
msgid ""
"Typical - <em>default public, privacy when desired (similar to social "
"network permissions but with improved privacy)</em>"
msgstr "Typisch – <em>Standard öffentlich, Privatsphäre, wo sie erwünscht ist (ähnlich den Einstellungen in sozialen Netzwerken, aber mit besser geschützter Privatsphäre)</em>"
-#: ../../Zotlabs/Module/Settings.php:1056
+#: ../../Zotlabs/Module/Settings.php:1058
msgid "Private - <em>default private, never open or public</em>"
msgstr "Privat – <em>Standard privat, nie offen oder öffentlich</em>"
-#: ../../Zotlabs/Module/Settings.php:1057
+#: ../../Zotlabs/Module/Settings.php:1059
msgid "Blocked - <em>default blocked to/from everybody</em>"
msgstr "Blockiert – <em>Alle standardmäßig blockiert</em>"
-#: ../../Zotlabs/Module/Settings.php:1059
+#: ../../Zotlabs/Module/Settings.php:1061
msgid "Allow others to tag your posts"
msgstr "Erlaube anderen, Deine Beiträge zu verschlagworten"
-#: ../../Zotlabs/Module/Settings.php:1059
+#: ../../Zotlabs/Module/Settings.php:1061
msgid ""
"Often used by the community to retro-actively flag inappropriate content"
msgstr "Wird oft von der Community genutzt um rückwirkend anstößigen Inhalt zu markieren"
-#: ../../Zotlabs/Module/Settings.php:1061
+#: ../../Zotlabs/Module/Settings.php:1063
msgid "Advanced Privacy Settings"
msgstr "Fortgeschrittene Privatsphäre-Einstellungen"
-#: ../../Zotlabs/Module/Settings.php:1063
+#: ../../Zotlabs/Module/Settings.php:1065
msgid "Expire other channel content after this many days"
msgstr "Den Inhalt anderer Kanäle nach dieser Anzahl Tage verfallen lassen"
-#: ../../Zotlabs/Module/Settings.php:1063
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "0 or blank to use the website limit."
+msgstr "0 oder leer lassen, um den voreingestellten Wert der Webseite zu verwenden."
+
+#: ../../Zotlabs/Module/Settings.php:1065
#, php-format
-msgid ""
-"0 or blank to use the website limit. The website expires after %d days."
-msgstr "0 oder leer lassen um das Webseiten limit zu nutzen. Die Webseite läuft nach %d Tagen ab."
+msgid "This website expires after %d days."
+msgstr "Diese Webseite läuft nach %d Tagen ab."
+
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "This website does not expire imported content."
+msgstr "Diese Webseite lässt importierte Inhalte nicht verfallen."
-#: ../../Zotlabs/Module/Settings.php:1064
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "The website limit takes precedence if lower than your limit."
+msgstr "Das Verfallslimit der Webseite hat Vorrang, wenn es niedriger als Deines hier ist."
+
+#: ../../Zotlabs/Module/Settings.php:1066
msgid "Maximum Friend Requests/Day:"
msgstr "Maximale Kontaktanfragen pro Tag:"
-#: ../../Zotlabs/Module/Settings.php:1064
+#: ../../Zotlabs/Module/Settings.php:1066
msgid "May reduce spam activity"
msgstr "Kann die Spam-Aktivität verringern"
-#: ../../Zotlabs/Module/Settings.php:1065
-msgid "Default Post Permissions"
-msgstr "Standardeinstellungen für Beitrags-Zugriffsrechte"
+#: ../../Zotlabs/Module/Settings.php:1067
+msgid "Default Post and Publish Permissions"
+msgstr "Standard-Berechtigungen für Beiträge und andere Inhalte"
+
+#: ../../Zotlabs/Module/Settings.php:1069
+msgid "Use my default audience setting for the type of object published"
+msgstr "Verwende Deine eingestellte Standard-Zielgruppe des jeweiligen Inhaltstyps"
-#: ../../Zotlabs/Module/Settings.php:1070
+#: ../../Zotlabs/Module/Settings.php:1072
msgid "Channel permissions category:"
msgstr "Zugriffsrechte-Kategorie des Kanals:"
-#: ../../Zotlabs/Module/Settings.php:1076
+#: ../../Zotlabs/Module/Settings.php:1078
msgid "Maximum private messages per day from unknown people:"
msgstr "Maximale Anzahl privater Nachrichten pro Tag von unbekannten Leuten:"
-#: ../../Zotlabs/Module/Settings.php:1076
+#: ../../Zotlabs/Module/Settings.php:1078
msgid "Useful to reduce spamming"
msgstr "Nützlich, um Spam zu verringern"
-#: ../../Zotlabs/Module/Settings.php:1079
+#: ../../Zotlabs/Module/Settings.php:1081
msgid "Notification Settings"
msgstr "Benachrichtigungs-Einstellungen"
-#: ../../Zotlabs/Module/Settings.php:1080
+#: ../../Zotlabs/Module/Settings.php:1082
msgid "By default post a status message when:"
msgstr "Sende standardmäßig Status-Nachrichten, wenn:"
-#: ../../Zotlabs/Module/Settings.php:1081
+#: ../../Zotlabs/Module/Settings.php:1083
msgid "accepting a friend request"
msgstr "Du eine Verbindungsanfrage annimmst"
-#: ../../Zotlabs/Module/Settings.php:1082
+#: ../../Zotlabs/Module/Settings.php:1084
msgid "joining a forum/community"
msgstr "Du einem Forum beitrittst"
-#: ../../Zotlabs/Module/Settings.php:1083
+#: ../../Zotlabs/Module/Settings.php:1085
msgid "making an <em>interesting</em> profile change"
msgstr "Du eine <em>interessante</em> Änderung an Deinem Profil vornimmst"
-#: ../../Zotlabs/Module/Settings.php:1084
+#: ../../Zotlabs/Module/Settings.php:1086
msgid "Send a notification email when:"
msgstr "Eine E-Mail-Benachrichtigung senden, wenn:"
-#: ../../Zotlabs/Module/Settings.php:1085
+#: ../../Zotlabs/Module/Settings.php:1087
msgid "You receive a connection request"
msgstr "Du eine Verbindungsanfrage erhältst"
-#: ../../Zotlabs/Module/Settings.php:1086
+#: ../../Zotlabs/Module/Settings.php:1088
msgid "Your connections are confirmed"
msgstr "Eine Verbindung bestätigt wurde"
-#: ../../Zotlabs/Module/Settings.php:1087
+#: ../../Zotlabs/Module/Settings.php:1089
msgid "Someone writes on your profile wall"
msgstr "Jemand auf Deine Pinnwand schreibt"
-#: ../../Zotlabs/Module/Settings.php:1088
+#: ../../Zotlabs/Module/Settings.php:1090
msgid "Someone writes a followup comment"
msgstr "Jemand einen Beitrag kommentiert"
-#: ../../Zotlabs/Module/Settings.php:1089
+#: ../../Zotlabs/Module/Settings.php:1091
msgid "You receive a private message"
msgstr "Du eine private Nachricht erhältst"
-#: ../../Zotlabs/Module/Settings.php:1090
+#: ../../Zotlabs/Module/Settings.php:1092
msgid "You receive a friend suggestion"
msgstr "Du einen Kontaktvorschlag erhältst"
-#: ../../Zotlabs/Module/Settings.php:1091
+#: ../../Zotlabs/Module/Settings.php:1093
msgid "You are tagged in a post"
msgstr "Du in einem Beitrag erwähnt wurdest"
-#: ../../Zotlabs/Module/Settings.php:1092
+#: ../../Zotlabs/Module/Settings.php:1094
msgid "You are poked/prodded/etc. in a post"
msgstr "Du in einem Beitrag angestupst/geknufft/o.ä. wurdest"
-#: ../../Zotlabs/Module/Settings.php:1095
+#: ../../Zotlabs/Module/Settings.php:1097
msgid "Show visual notifications including:"
msgstr "Visuelle Benachrichtigungen anzeigen für:"
-#: ../../Zotlabs/Module/Settings.php:1097
+#: ../../Zotlabs/Module/Settings.php:1099
msgid "Unseen grid activity"
msgstr "Ungesehene Netzwerk-Aktivität"
-#: ../../Zotlabs/Module/Settings.php:1098
+#: ../../Zotlabs/Module/Settings.php:1100
msgid "Unseen channel activity"
msgstr "Ungesehene Kanal-Aktivität"
-#: ../../Zotlabs/Module/Settings.php:1099
+#: ../../Zotlabs/Module/Settings.php:1101
msgid "Unseen private messages"
msgstr "Ungelesene persönliche Nachrichten"
-#: ../../Zotlabs/Module/Settings.php:1099
-#: ../../Zotlabs/Module/Settings.php:1104
-#: ../../Zotlabs/Module/Settings.php:1105
+#: ../../Zotlabs/Module/Settings.php:1101
#: ../../Zotlabs/Module/Settings.php:1106
+#: ../../Zotlabs/Module/Settings.php:1107
+#: ../../Zotlabs/Module/Settings.php:1108
msgid "Recommended"
msgstr "Empfohlen"
-#: ../../Zotlabs/Module/Settings.php:1100
+#: ../../Zotlabs/Module/Settings.php:1102
msgid "Upcoming events"
msgstr "Baldige Termine"
-#: ../../Zotlabs/Module/Settings.php:1101
+#: ../../Zotlabs/Module/Settings.php:1103
msgid "Events today"
msgstr "Heutige Termine"
-#: ../../Zotlabs/Module/Settings.php:1102
+#: ../../Zotlabs/Module/Settings.php:1104
msgid "Upcoming birthdays"
msgstr "Baldige Geburtstage"
-#: ../../Zotlabs/Module/Settings.php:1102
+#: ../../Zotlabs/Module/Settings.php:1104
msgid "Not available in all themes"
msgstr "Nicht in allen Themes verfügbar"
-#: ../../Zotlabs/Module/Settings.php:1103
+#: ../../Zotlabs/Module/Settings.php:1105
msgid "System (personal) notifications"
msgstr "System – (persönliche) Benachrichtigungen"
-#: ../../Zotlabs/Module/Settings.php:1104
+#: ../../Zotlabs/Module/Settings.php:1106
msgid "System info messages"
msgstr "System – Info-Nachrichten"
-#: ../../Zotlabs/Module/Settings.php:1105
+#: ../../Zotlabs/Module/Settings.php:1107
msgid "System critical alerts"
msgstr "System – kritische Warnungen"
-#: ../../Zotlabs/Module/Settings.php:1106
+#: ../../Zotlabs/Module/Settings.php:1108
msgid "New connections"
msgstr "Neue Verbindungen"
-#: ../../Zotlabs/Module/Settings.php:1107
+#: ../../Zotlabs/Module/Settings.php:1109
msgid "System Registrations"
msgstr "System – Registrierungen"
-#: ../../Zotlabs/Module/Settings.php:1108
+#: ../../Zotlabs/Module/Settings.php:1110
msgid ""
"Also show new wall posts, private messages and connections under Notices"
msgstr "Neue Pinnwand-Nachrichten, private Nachrichten und Verbindungen unter Benachrichtigungen anzeigen"
-#: ../../Zotlabs/Module/Settings.php:1110
+#: ../../Zotlabs/Module/Settings.php:1112
msgid "Notify me of events this many days in advance"
msgstr "Benachrichtige mich zu Terminen so viele Tage im Voraus"
-#: ../../Zotlabs/Module/Settings.php:1110
+#: ../../Zotlabs/Module/Settings.php:1112
msgid "Must be greater than 0"
msgstr "Muss größer als 0 sein"
-#: ../../Zotlabs/Module/Settings.php:1112
+#: ../../Zotlabs/Module/Settings.php:1114
msgid "Advanced Account/Page Type Settings"
msgstr "Erweiterte Account- und Seitenart-Einstellungen"
-#: ../../Zotlabs/Module/Settings.php:1113
+#: ../../Zotlabs/Module/Settings.php:1115
msgid "Change the behaviour of this account for special situations"
msgstr "Ändere das Verhalten dieses Accounts unter speziellen Umständen"
-#: ../../Zotlabs/Module/Settings.php:1116
+#: ../../Zotlabs/Module/Settings.php:1118
msgid ""
"Please enable expert mode (in <a href=\"settings/features\">Settings > "
"Additional features</a>) to adjust!"
msgstr "Aktiviere den Expertenmodus (unter <a href=\"settings/features\">Settings > Zusätzliche Funktionen</a>), um hier Einstellungen vorzunehmen!"
-#: ../../Zotlabs/Module/Settings.php:1117
+#: ../../Zotlabs/Module/Settings.php:1119
msgid "Miscellaneous Settings"
msgstr "Sonstige Einstellungen"
-#: ../../Zotlabs/Module/Settings.php:1118
+#: ../../Zotlabs/Module/Settings.php:1120
msgid "Default photo upload folder"
msgstr "Voreingestellter Ordner für hochgeladene Fotos"
-#: ../../Zotlabs/Module/Settings.php:1118
-#: ../../Zotlabs/Module/Settings.php:1119
+#: ../../Zotlabs/Module/Settings.php:1120
+#: ../../Zotlabs/Module/Settings.php:1121
msgid "%Y - current year, %m - current month"
msgstr "%Y - aktuelles Jahr, %m - aktueller Monat"
-#: ../../Zotlabs/Module/Settings.php:1119
+#: ../../Zotlabs/Module/Settings.php:1121
msgid "Default file upload folder"
msgstr "Voreingestellter Ordner für hochgeladene Dateien"
-#: ../../Zotlabs/Module/Settings.php:1121
+#: ../../Zotlabs/Module/Settings.php:1123
msgid "Personal menu to display in your channel pages"
msgstr "Eigenes Menü zur Anzeige auf den Seiten deines Kanals"
-#: ../../Zotlabs/Module/Settings.php:1123
+#: ../../Zotlabs/Module/Settings.php:1125
msgid "Remove this channel."
msgstr "Diesen Kanal löschen"
-#: ../../Zotlabs/Module/Settings.php:1124
+#: ../../Zotlabs/Module/Settings.php:1126
msgid "Firefox Share $Projectname provider"
msgstr "$Projectname-Provider für Firefox Share"
-#: ../../Zotlabs/Module/Settings.php:1125
+#: ../../Zotlabs/Module/Settings.php:1127
msgid "Start calendar week on monday"
msgstr "Montag als erster Tag der Kalenderwoche"
-#: ../../Zotlabs/Module/Setup.php:202
+#: ../../Zotlabs/Module/Setup.php:179
msgid "$Projectname Server - Setup"
msgstr "$Projectname Server-Einrichtung"
-#: ../../Zotlabs/Module/Setup.php:206
+#: ../../Zotlabs/Module/Setup.php:183
msgid "Could not connect to database."
msgstr "Kann nicht mit der Datenbank verbinden."
-#: ../../Zotlabs/Module/Setup.php:210
+#: ../../Zotlabs/Module/Setup.php:187
msgid ""
"Could not connect to specified site URL. Possible SSL certificate or DNS "
"issue."
msgstr "Konnte die angegebene Webseiten-URL nicht erreichen. Möglicherweise ein Problem mit dem SSL-Zertifikat oder dem DNS."
-#: ../../Zotlabs/Module/Setup.php:217
+#: ../../Zotlabs/Module/Setup.php:194
msgid "Could not create table."
msgstr "Kann Tabelle nicht erstellen."
-#: ../../Zotlabs/Module/Setup.php:222
+#: ../../Zotlabs/Module/Setup.php:199
msgid "Your site database has been installed."
msgstr "Die Datenbank Deines Hubs wurde installiert."
-#: ../../Zotlabs/Module/Setup.php:226
+#: ../../Zotlabs/Module/Setup.php:203
msgid ""
"You may need to import the file \"install/schema_xxx.sql\" manually using a "
"database client."
msgstr "Möglicherweise musst Du die Datei install/schema_xxx.sql manuell mit Hilfe eines Datenkbank-Clients importieren."
-#: ../../Zotlabs/Module/Setup.php:227 ../../Zotlabs/Module/Setup.php:289
-#: ../../Zotlabs/Module/Setup.php:739
+#: ../../Zotlabs/Module/Setup.php:204 ../../Zotlabs/Module/Setup.php:266
+#: ../../Zotlabs/Module/Setup.php:721
msgid "Please see the file \"install/INSTALL.txt\"."
msgstr "Lies die Datei \"install/INSTALL.txt\"."
-#: ../../Zotlabs/Module/Setup.php:286
+#: ../../Zotlabs/Module/Setup.php:263
msgid "System check"
msgstr "Systemprüfung"
-#: ../../Zotlabs/Module/Setup.php:291
+#: ../../Zotlabs/Module/Setup.php:268
msgid "Check again"
msgstr "Bitte nochmal prüfen"
-#: ../../Zotlabs/Module/Setup.php:313
+#: ../../Zotlabs/Module/Setup.php:290
msgid "Database connection"
msgstr "Datenbank Verbindung"
-#: ../../Zotlabs/Module/Setup.php:314
+#: ../../Zotlabs/Module/Setup.php:291
msgid ""
"In order to install $Projectname we need to know how to connect to your "
"database."
msgstr "Um $Projectname zu installieren, müssen wir wissen, wie wir eine Verbindung zu Deiner Datenbank aufbauen können."
-#: ../../Zotlabs/Module/Setup.php:315
+#: ../../Zotlabs/Module/Setup.php:292
msgid ""
"Please contact your hosting provider or site administrator if you have "
"questions about these settings."
msgstr "Bitte kontaktiere Deinen Hosting-Provider oder Administrator, falls Du Fragen zu diesen Einstellungen hast."
-#: ../../Zotlabs/Module/Setup.php:316
+#: ../../Zotlabs/Module/Setup.php:293
msgid ""
"The database you specify below should already exist. If it does not, please "
"create it before continuing."
msgstr "Die Datenbank, die Du weiter unten angibst, sollte bereits existieren. Sollte das noch nicht der Fall sein, erzeuge sie bitte bevor Du fortfährst."
-#: ../../Zotlabs/Module/Setup.php:320
+#: ../../Zotlabs/Module/Setup.php:297
msgid "Database Server Name"
msgstr "Datenbank-Servername"
-#: ../../Zotlabs/Module/Setup.php:320
+#: ../../Zotlabs/Module/Setup.php:297
msgid "Default is 127.0.0.1"
msgstr "Standard ist 127.0.0.1"
-#: ../../Zotlabs/Module/Setup.php:321
+#: ../../Zotlabs/Module/Setup.php:298
msgid "Database Port"
msgstr "Datenbank-Port"
-#: ../../Zotlabs/Module/Setup.php:321
+#: ../../Zotlabs/Module/Setup.php:298
msgid "Communication port number - use 0 for default"
msgstr "Port-Nummer für die Kommunikation – verwende 0 für die Standardeinstellung"
-#: ../../Zotlabs/Module/Setup.php:322
+#: ../../Zotlabs/Module/Setup.php:299
msgid "Database Login Name"
msgstr "Datenbank-Benutzername"
-#: ../../Zotlabs/Module/Setup.php:323
+#: ../../Zotlabs/Module/Setup.php:300
msgid "Database Login Password"
msgstr "Datenbank-Kennwort"
-#: ../../Zotlabs/Module/Setup.php:324
+#: ../../Zotlabs/Module/Setup.php:301
msgid "Database Name"
msgstr "Datenbank-Name"
-#: ../../Zotlabs/Module/Setup.php:325
+#: ../../Zotlabs/Module/Setup.php:302
msgid "Database Type"
msgstr "Datenbanktyp"
-#: ../../Zotlabs/Module/Setup.php:327 ../../Zotlabs/Module/Setup.php:367
+#: ../../Zotlabs/Module/Setup.php:304 ../../Zotlabs/Module/Setup.php:344
msgid "Site administrator email address"
msgstr "E-Mail Adresse des Seiten-Administrators"
-#: ../../Zotlabs/Module/Setup.php:327 ../../Zotlabs/Module/Setup.php:367
+#: ../../Zotlabs/Module/Setup.php:304 ../../Zotlabs/Module/Setup.php:344
msgid ""
"Your account email address must match this in order to use the web admin "
"panel."
msgstr "Die E-Mail-Adresse Deines Accounts muss dieser Adresse entsprechen, damit Du Zugriff zur Administrations-Seite erhältst."
-#: ../../Zotlabs/Module/Setup.php:328 ../../Zotlabs/Module/Setup.php:369
+#: ../../Zotlabs/Module/Setup.php:305 ../../Zotlabs/Module/Setup.php:346
msgid "Website URL"
msgstr "Server-URL"
-#: ../../Zotlabs/Module/Setup.php:328 ../../Zotlabs/Module/Setup.php:369
+#: ../../Zotlabs/Module/Setup.php:305 ../../Zotlabs/Module/Setup.php:346
msgid "Please use SSL (https) URL if available."
msgstr "Nutze wenn möglich eine SSL-URL (https)."
-#: ../../Zotlabs/Module/Setup.php:329 ../../Zotlabs/Module/Setup.php:372
+#: ../../Zotlabs/Module/Setup.php:306 ../../Zotlabs/Module/Setup.php:349
msgid "Please select a default timezone for your website"
msgstr "Standard-Zeitzone für Deinen Server"
-#: ../../Zotlabs/Module/Setup.php:356
+#: ../../Zotlabs/Module/Setup.php:333
msgid "Site settings"
msgstr "Seiteneinstellungen"
-#: ../../Zotlabs/Module/Setup.php:370
+#: ../../Zotlabs/Module/Setup.php:347
msgid "Enable $Projectname <strong>advanced</strong> features?"
msgstr "<strong>Erweiterte</strong> Funktionen für $Projectname aktivieren?"
-#: ../../Zotlabs/Module/Setup.php:370
+#: ../../Zotlabs/Module/Setup.php:347
msgid ""
"Some advanced features, while useful - may be best suited for technically "
"proficient audiences"
msgstr "Einige erweiterte Funktionen können ungeachtet ihrer Nützlichkeit eher für eine technisch versierte Zielgruppe geeignet sein."
-#: ../../Zotlabs/Module/Setup.php:422
+#: ../../Zotlabs/Module/Setup.php:388
+msgid "PHP version 5.5 or greater is required."
+msgstr "PHP Version 5.5 oder höher wird benötigt."
+
+#: ../../Zotlabs/Module/Setup.php:389
+msgid "PHP version"
+msgstr "PHP-Version"
+
+#: ../../Zotlabs/Module/Setup.php:404
msgid "Could not find a command line version of PHP in the web server PATH."
msgstr "Konnte die Kommandozeilen-Version von PHP nicht im PATH des Web-Servers finden."
-#: ../../Zotlabs/Module/Setup.php:423
+#: ../../Zotlabs/Module/Setup.php:405
msgid ""
"If you don't have a command line version of PHP installed on server, you "
"will not be able to run background polling via cron."
msgstr "Ohne Kommandozeilen-Version von PHP auf dem Server wirst Du nicht in der Lage sein, Hintergrundprozesse via cron auszuführen."
-#: ../../Zotlabs/Module/Setup.php:427
+#: ../../Zotlabs/Module/Setup.php:409
msgid "PHP executable path"
msgstr "PHP Pfad zu ausführbarer Datei"
-#: ../../Zotlabs/Module/Setup.php:427
+#: ../../Zotlabs/Module/Setup.php:409
msgid ""
"Enter full path to php executable. You can leave this blank to continue the "
"installation."
msgstr "Gib den vollen Pfad zum PHP-Interpreter an. Du kannst dieses Feld frei lassen und mit der Installation fortfahren."
-#: ../../Zotlabs/Module/Setup.php:432
+#: ../../Zotlabs/Module/Setup.php:414
msgid "Command line PHP"
msgstr "PHP Befehlszeile"
-#: ../../Zotlabs/Module/Setup.php:441
+#: ../../Zotlabs/Module/Setup.php:423
msgid ""
"The command line version of PHP on your system does not have "
"\"register_argc_argv\" enabled."
msgstr "Bei der Kommandozeilen-Version von PHP auf Deinem System ist \"register_argc_argv\" nicht aktiviert."
-#: ../../Zotlabs/Module/Setup.php:442
+#: ../../Zotlabs/Module/Setup.php:424
msgid "This is required for message delivery to work."
msgstr "Das wird benötigt, damit die Auslieferung von Nachrichten funktioniert."
-#: ../../Zotlabs/Module/Setup.php:445
+#: ../../Zotlabs/Module/Setup.php:427
msgid "PHP register_argc_argv"
msgstr "PHP register_argc_argv"
-#: ../../Zotlabs/Module/Setup.php:463
+#: ../../Zotlabs/Module/Setup.php:445
#, php-format
msgid ""
"Your max allowed total upload size is set to %s. Maximum size of one file to"
" upload is set to %s. You are allowed to upload up to %d files at once."
msgstr "Die Maximalgröße für Uploads insgesamt liegt bei %s. Die Maximalgröße für eine Datei liegt bei %s. Es können maximal %d Dateien gleichzeitig hochgeladen werden."
-#: ../../Zotlabs/Module/Setup.php:468
+#: ../../Zotlabs/Module/Setup.php:450
msgid "You can adjust these settings in the servers php.ini."
msgstr "Du kannst diese Einstellungen in der php.ini des Servers ändern."
-#: ../../Zotlabs/Module/Setup.php:470
+#: ../../Zotlabs/Module/Setup.php:452
msgid "PHP upload limits"
msgstr "PHP-Hochladebeschränkungen"
-#: ../../Zotlabs/Module/Setup.php:493
+#: ../../Zotlabs/Module/Setup.php:475
msgid ""
"Error: the \"openssl_pkey_new\" function on this system is not able to "
"generate encryption keys"
msgstr "Fehler: Die „openssl_pkey_new“-Funktion auf diesem System ist nicht in der Lage, Schlüssel für die Verschlüsselung zu erzeugen."
-#: ../../Zotlabs/Module/Setup.php:494
+#: ../../Zotlabs/Module/Setup.php:476
msgid ""
"If running under Windows, please see "
"\"http://www.php.net/manual/en/openssl.installation.php\"."
msgstr "Wenn Du Windows verwendest, findest Du unter http://www.php.net/manual/en/openssl.installation.php eine Installationsanleitung."
-#: ../../Zotlabs/Module/Setup.php:497
+#: ../../Zotlabs/Module/Setup.php:479
msgid "Generate encryption keys"
msgstr "Verschlüsselungsschlüssel generieren"
-#: ../../Zotlabs/Module/Setup.php:509
+#: ../../Zotlabs/Module/Setup.php:491
msgid "libCurl PHP module"
msgstr "libCurl-PHP-Modul"
-#: ../../Zotlabs/Module/Setup.php:510
+#: ../../Zotlabs/Module/Setup.php:492
msgid "GD graphics PHP module"
msgstr "GD-Grafik-PHP-Modul"
-#: ../../Zotlabs/Module/Setup.php:511
+#: ../../Zotlabs/Module/Setup.php:493
msgid "OpenSSL PHP module"
msgstr "OpenSSL-PHP-Modul"
-#: ../../Zotlabs/Module/Setup.php:512
+#: ../../Zotlabs/Module/Setup.php:494
msgid "mysqli or postgres PHP module"
msgstr "mysqli oder postgres PHP-Modul"
-#: ../../Zotlabs/Module/Setup.php:513
+#: ../../Zotlabs/Module/Setup.php:495
msgid "mb_string PHP module"
msgstr "mb_string-PHP-Modul"
-#: ../../Zotlabs/Module/Setup.php:514
+#: ../../Zotlabs/Module/Setup.php:496
msgid "mcrypt PHP module"
msgstr "mcrypt-PHP-Modul"
-#: ../../Zotlabs/Module/Setup.php:515
+#: ../../Zotlabs/Module/Setup.php:497
msgid "xml PHP module"
msgstr "xml-PHP-Modul"
-#: ../../Zotlabs/Module/Setup.php:519 ../../Zotlabs/Module/Setup.php:521
+#: ../../Zotlabs/Module/Setup.php:501 ../../Zotlabs/Module/Setup.php:503
msgid "Apache mod_rewrite module"
msgstr "Apache-mod_rewrite-Modul"
-#: ../../Zotlabs/Module/Setup.php:519
+#: ../../Zotlabs/Module/Setup.php:501
msgid ""
"Error: Apache webserver mod-rewrite module is required but not installed."
msgstr "Fehler: Das Apache-Modul mod-rewrite wird benötigt, ist aber nicht installiert."
-#: ../../Zotlabs/Module/Setup.php:525 ../../Zotlabs/Module/Setup.php:528
+#: ../../Zotlabs/Module/Setup.php:507 ../../Zotlabs/Module/Setup.php:510
msgid "proc_open"
msgstr "proc_open"
-#: ../../Zotlabs/Module/Setup.php:525
+#: ../../Zotlabs/Module/Setup.php:507
msgid ""
"Error: proc_open is required but is either not installed or has been "
"disabled in php.ini"
msgstr "Fehler: proc_open wird benötigt, ist aber entweder nicht installiert oder wurde in der php.ini deaktiviert"
-#: ../../Zotlabs/Module/Setup.php:533
+#: ../../Zotlabs/Module/Setup.php:515
msgid "Error: libCURL PHP module required but not installed."
msgstr "Fehler: Das PHP-Modul libCURL wird benötigt, ist aber nicht installiert."
-#: ../../Zotlabs/Module/Setup.php:537
+#: ../../Zotlabs/Module/Setup.php:519
msgid ""
"Error: GD graphics PHP module with JPEG support required but not installed."
msgstr "Fehler: Das PHP-Modul GD-Grafik mit JPEG-Unterstützung wird benötigt, ist aber nicht installiert."
-#: ../../Zotlabs/Module/Setup.php:541
+#: ../../Zotlabs/Module/Setup.php:523
msgid "Error: openssl PHP module required but not installed."
msgstr "Fehler: Das PHP-Modul openssl wird benötigt, ist aber nicht installiert."
-#: ../../Zotlabs/Module/Setup.php:545
+#: ../../Zotlabs/Module/Setup.php:527
msgid ""
"Error: mysqli or postgres PHP module required but neither are installed."
msgstr "Fehler: Das mysqli oder postgres PHP-Modul ist erforderlich, aber keines von beiden ist installiert."
-#: ../../Zotlabs/Module/Setup.php:549
+#: ../../Zotlabs/Module/Setup.php:531
msgid "Error: mb_string PHP module required but not installed."
msgstr "Fehler: Das PHP-Modul mb_string wird benötigt, ist aber nicht installiert."
-#: ../../Zotlabs/Module/Setup.php:553
+#: ../../Zotlabs/Module/Setup.php:535
msgid "Error: mcrypt PHP module required but not installed."
msgstr "Fehler: Das PHP-Modul mcrypt wird benötigt, ist aber nicht installiert."
-#: ../../Zotlabs/Module/Setup.php:557
+#: ../../Zotlabs/Module/Setup.php:539
msgid "Error: xml PHP module required for DAV but not installed."
msgstr "Fehler: Das xml-PHP-Modul wird für DAV benötigt, ist aber nicht installiert."
-#: ../../Zotlabs/Module/Setup.php:575
+#: ../../Zotlabs/Module/Setup.php:557
msgid ""
"The web installer needs to be able to create a file called \".htconfig.php\""
" in the top folder of your web server and it is unable to do so."
msgstr "Der Installations-Assistent muss in der Lage sein, die Datei \".htconfig.php\" im Stammverzeichnis des Web-Servers anzulegen, ist er aber nicht."
-#: ../../Zotlabs/Module/Setup.php:576
+#: ../../Zotlabs/Module/Setup.php:558
msgid ""
"This is most often a permission setting, as the web server may not be able "
"to write files in your folder - even if you can."
msgstr "Meist liegt das daran, dass der Nutzer, unter dem der Web-Server läuft, keine Schreibrechte in dem Verzeichnis hat – selbst wenn Du selbst das darfst."
-#: ../../Zotlabs/Module/Setup.php:577
+#: ../../Zotlabs/Module/Setup.php:559
msgid ""
"At the end of this procedure, we will give you a text to save in a file "
"named .htconfig.php in your Red top folder."
msgstr "Am Schluss dieses Vorgangs wird ein Text generiert, den Du unter dem Dateinamen .htconfig.php im Stammverzeichnis Deiner Hubzilla-Installation speichern musst."
-#: ../../Zotlabs/Module/Setup.php:578
+#: ../../Zotlabs/Module/Setup.php:560
msgid ""
"You can alternatively skip this procedure and perform a manual installation."
" Please see the file \"install/INSTALL.txt\" for instructions."
msgstr "Alternativ kannst Du diesen Schritt überspringen und die Installation manuell vornehmen. Lies dazu die Datei install/INSTALL.txt."
-#: ../../Zotlabs/Module/Setup.php:581
+#: ../../Zotlabs/Module/Setup.php:563
msgid ".htconfig.php is writable"
msgstr ".htconfig.php ist beschreibbar"
-#: ../../Zotlabs/Module/Setup.php:595
+#: ../../Zotlabs/Module/Setup.php:577
msgid ""
"Red uses the Smarty3 template engine to render its web views. Smarty3 "
"compiles templates to PHP to speed up rendering."
msgstr "$Projectname verwendet Smarty3 um Vorlagen für die Webdarstellung zu übersetzen. Smarty3 übersetzt diese Vorlagen nach PHP, um die Darstellung zu beschleunigen."
-#: ../../Zotlabs/Module/Setup.php:596
+#: ../../Zotlabs/Module/Setup.php:578
#, php-format
msgid ""
"In order to store these compiled templates, the web server needs to have "
-"write access to the directory %s under the Red top level folder."
-msgstr "Um diese kompilierten Vorlagen speichern zu können, braucht der Webserver Schreibzugriff auf das Verzeichnis %s unterhalb des $Projectname-Installationsverzeichnisses."
+"write access to the directory %s under the top level web folder."
+msgstr "Um diese kompilierten Vorlagen speichern zu können, braucht der Web-Server Schreibzugriff auf das Verzeichnis %s unterhalb des Hubzilla-Stammverzeichnisses."
-#: ../../Zotlabs/Module/Setup.php:597 ../../Zotlabs/Module/Setup.php:618
+#: ../../Zotlabs/Module/Setup.php:579 ../../Zotlabs/Module/Setup.php:600
msgid ""
"Please ensure that the user that your web server runs as (e.g. www-data) has"
" write access to this folder."
msgstr "Bitte stelle sicher, dass der Nutzer, unter dem der Web-Server läuft (z.B. www-data), Schreibzugriff auf dieses Verzeichnis hat."
-#: ../../Zotlabs/Module/Setup.php:598
+#: ../../Zotlabs/Module/Setup.php:580
#, php-format
msgid ""
"Note: as a security measure, you should give the web server write access to "
"%s only--not the template files (.tpl) that it contains."
msgstr "Hinweis: Aus Sicherheitsgründen sollte der Web-Server nur auf %s Schreibrechte haben, nicht auf die Template-Dateien (.tpl), die das Verzeichnis enthält."
-#: ../../Zotlabs/Module/Setup.php:601
+#: ../../Zotlabs/Module/Setup.php:583
#, php-format
msgid "%s is writable"
msgstr "%s ist beschreibbar"
-#: ../../Zotlabs/Module/Setup.php:617
+#: ../../Zotlabs/Module/Setup.php:599
msgid ""
"Red uses the store directory to save uploaded files. The web server needs to"
" have write access to the store directory under the Red top level folder"
msgstr "$Projectname benutzt das Verzeichnis store, um hochgeladene Dateien zu speichern. Der Webserver benötigt Schreibrechte für dieses Verzeichnis direkt unterhalb des Red-Stammverzeichnisses"
-#: ../../Zotlabs/Module/Setup.php:621
+#: ../../Zotlabs/Module/Setup.php:603
msgid "store is writable"
msgstr "store ist schreibbar"
-#: ../../Zotlabs/Module/Setup.php:654
+#: ../../Zotlabs/Module/Setup.php:636
msgid ""
"SSL certificate cannot be validated. Fix certificate or disable https access"
" to this site."
msgstr "Das SSL-Zertifikat konnte nicht validiert werden. Korrigiere das Zertifikat oder deaktiviere den HTTPS-Zugriff auf diesen Server."
-#: ../../Zotlabs/Module/Setup.php:655
+#: ../../Zotlabs/Module/Setup.php:637
msgid ""
"If you have https access to your website or allow connections to TCP port "
"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
"NOT use self-signed certificates!"
msgstr "Wenn Du via HTTPS auf Deinen Server zugreifen möchtest, also Verbindungen über den Port 443 möglich sein sollen, ist ein SSL-Zertifikat einer Zertifizierungsstelle (CA) notwendig, das von den Browsern ohne Sicherheitsabfrage akzeptiert wird. Die Verwendung eines selbst signierten Zertifikates ist nicht möglich."
-#: ../../Zotlabs/Module/Setup.php:656
+#: ../../Zotlabs/Module/Setup.php:638
msgid ""
"This restriction is incorporated because public posts from you may for "
"example contain references to images on your own hub."
msgstr "Diese Einschränkung wurde eingebaut, weil Deine öffentlichen Beiträge zum Beispiel Verweise auf Bilder auf Deinem eigenen Hub enthalten können."
-#: ../../Zotlabs/Module/Setup.php:657
+#: ../../Zotlabs/Module/Setup.php:639
msgid ""
"If your certificate is not recognized, members of other sites (who may "
"themselves have valid certificates) will get a warning message on their own "
"site complaining about security issues."
msgstr "Wenn Dein Zertifikat nicht von jedem Browser akzeptiert wird, erhalten die Mitglieder anderer $Projectname-Hubs (die mit korrekten Zertifikaten ausgestattet sind) Sicherheits-Warnmeldungen, obwohl sie gar nicht direkt auf Deinem Server unterwegs sind (zum Beispiel, wenn ein Bild aus einem Deiner Beiträge angezeigt wird)."
-#: ../../Zotlabs/Module/Setup.php:658
+#: ../../Zotlabs/Module/Setup.php:640
msgid ""
"This can cause usability issues elsewhere (not just on your own site) so we "
"must insist on this requirement."
msgstr "Dies kann Probleme für andere Nutzer (nicht nur auf Deinem eigenen Server) verursachen, so dass wir auf dieser Forderung bestehen müssen."
-#: ../../Zotlabs/Module/Setup.php:659
+#: ../../Zotlabs/Module/Setup.php:641
msgid ""
"Providers are available that issue free certificates which are browser-"
"valid."
msgstr "Es gibt einige Zertifizierungsstellen (CAs), bei denen solche Zertifikate kostenlos zu haben sind."
-#: ../../Zotlabs/Module/Setup.php:661
+#: ../../Zotlabs/Module/Setup.php:643
msgid "SSL certificate validation"
msgstr "SSL Zertifikatverifizierung"
-#: ../../Zotlabs/Module/Setup.php:667
+#: ../../Zotlabs/Module/Setup.php:649
msgid ""
"Url rewrite in .htaccess is not working. Check your server "
"configuration.Test: "
msgstr "Das Umschreiben von URLs (rewrite) per .htaccess funktioniert nicht. Bitte prüfe die Server-Konfiguration. Test:"
-#: ../../Zotlabs/Module/Setup.php:670
+#: ../../Zotlabs/Module/Setup.php:652
msgid "Url rewrite is working"
msgstr "Url rewrite funktioniert"
-#: ../../Zotlabs/Module/Setup.php:679
+#: ../../Zotlabs/Module/Setup.php:661
msgid ""
"The database configuration file \".htconfig.php\" could not be written. "
"Please use the enclosed text to create a configuration file in your web "
"server root."
msgstr "Die Datenbank-Konfigurationsdatei „.htconfig.php“ konnte nicht geschrieben werden. Bitte verwende den unten angegebenen Text, um die Konfigurationsdatei im Stammverzeichnis des Webservers anzulegen."
-#: ../../Zotlabs/Module/Setup.php:703
+#: ../../Zotlabs/Module/Setup.php:685
msgid "Errors encountered creating database tables."
msgstr "Fehler beim Anlegen der Datenbank-Tabellen aufgetreten."
-#: ../../Zotlabs/Module/Setup.php:737
+#: ../../Zotlabs/Module/Setup.php:719
msgid "<h1>What next</h1>"
msgstr "<h1>Was als Nächstes</h1>"
-#: ../../Zotlabs/Module/Setup.php:738
+#: ../../Zotlabs/Module/Setup.php:720
msgid ""
"IMPORTANT: You will need to [manually] setup a scheduled task for the "
"poller."
@@ -6059,70 +6002,76 @@ msgstr "Vorschläge, Lob, usw.: E-Mail an 'redmatrix' at librelist - dot - com"
msgid "Site Administrators"
msgstr "Administratoren"
-#: ../../Zotlabs/Module/Sources.php:36
+#: ../../Zotlabs/Module/Sources.php:37
msgid "Failed to create source. No channel selected."
msgstr "Konnte die Quelle nicht anlegen. Kein Kanal ausgewählt."
-#: ../../Zotlabs/Module/Sources.php:49
+#: ../../Zotlabs/Module/Sources.php:51
msgid "Source created."
msgstr "Quelle erstellt."
-#: ../../Zotlabs/Module/Sources.php:61
+#: ../../Zotlabs/Module/Sources.php:64
msgid "Source updated."
msgstr "Quelle aktualisiert."
-#: ../../Zotlabs/Module/Sources.php:86
+#: ../../Zotlabs/Module/Sources.php:90
msgid "*"
msgstr "*"
-#: ../../Zotlabs/Module/Sources.php:92 ../../include/features.php:71
-#: ../../include/widgets.php:581
+#: ../../Zotlabs/Module/Sources.php:96 ../../include/widgets.php:630
+#: ../../include/features.php:71
msgid "Channel Sources"
msgstr "Kanal-Quellen"
-#: ../../Zotlabs/Module/Sources.php:93
+#: ../../Zotlabs/Module/Sources.php:97
msgid "Manage remote sources of content for your channel."
msgstr "Externe Inhaltsquellen für Deinen Kanal verwalten."
-#: ../../Zotlabs/Module/Sources.php:94 ../../Zotlabs/Module/Sources.php:104
+#: ../../Zotlabs/Module/Sources.php:98 ../../Zotlabs/Module/Sources.php:108
msgid "New Source"
msgstr "Neue Quelle"
-#: ../../Zotlabs/Module/Sources.php:105 ../../Zotlabs/Module/Sources.php:137
+#: ../../Zotlabs/Module/Sources.php:109 ../../Zotlabs/Module/Sources.php:143
msgid ""
"Import all or selected content from the following channel into this channel "
"and distribute it according to your channel settings."
msgstr "Importiere alle oder ausgewählte Inhalte des folgenden Kanals in diesen Kanal und verteile sie gemäß der Einstellungen dieses Kanals."
-#: ../../Zotlabs/Module/Sources.php:106 ../../Zotlabs/Module/Sources.php:138
+#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
msgid "Only import content with these words (one per line)"
msgstr "Importiere nur Beiträge, die folgende Wörter (eines pro Zeile) enthalten"
-#: ../../Zotlabs/Module/Sources.php:106 ../../Zotlabs/Module/Sources.php:138
+#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
msgid "Leave blank to import all public content"
msgstr "Leer lassen, um alle öffentlichen Beiträge zu importieren"
-#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Module/Sources.php:141
+#: ../../Zotlabs/Module/Sources.php:111 ../../Zotlabs/Module/Sources.php:148
msgid "Channel Name"
msgstr "Name des Kanals"
-#: ../../Zotlabs/Module/Sources.php:127 ../../Zotlabs/Module/Sources.php:154
+#: ../../Zotlabs/Module/Sources.php:112 ../../Zotlabs/Module/Sources.php:147
+msgid ""
+"Add the following categories to posts imported from this source (comma "
+"separated)"
+msgstr "Füge die folgenden Kategorien zu Beiträgen, die aus dieser Quelle importiert werden, hinzu (kommagetrennt)"
+
+#: ../../Zotlabs/Module/Sources.php:133 ../../Zotlabs/Module/Sources.php:161
msgid "Source not found."
msgstr "Quelle nicht gefunden."
-#: ../../Zotlabs/Module/Sources.php:134
+#: ../../Zotlabs/Module/Sources.php:140
msgid "Edit Source"
msgstr "Quelle bearbeiten"
-#: ../../Zotlabs/Module/Sources.php:135
+#: ../../Zotlabs/Module/Sources.php:141
msgid "Delete Source"
msgstr "Quelle löschen"
-#: ../../Zotlabs/Module/Sources.php:162
+#: ../../Zotlabs/Module/Sources.php:169
msgid "Source removed"
msgstr "Quelle gelöscht"
-#: ../../Zotlabs/Module/Sources.php:164
+#: ../../Zotlabs/Module/Sources.php:171
msgid "Unable to remove source."
msgstr "Konnte die Quelle nicht löschen."
@@ -6146,12 +6095,12 @@ msgstr "Keine Vorschläge vorhanden. Wenn das ein neuer Server ist, versuche es
msgid "Ignore/Hide"
msgstr "Ignorieren/Verstecken"
-#: ../../Zotlabs/Module/Tagger.php:55 ../../include/bbcode.php:257
+#: ../../Zotlabs/Module/Tagger.php:55 ../../include/bbcode.php:256
msgid "post"
msgstr "Beitrag"
-#: ../../Zotlabs/Module/Tagger.php:57 ../../include/conversation.php:150
-#: ../../include/text.php:1975
+#: ../../Zotlabs/Module/Tagger.php:57 ../../include/text.php:1948
+#: ../../include/conversation.php:150
msgid "comment"
msgstr "Kommentar"
@@ -6287,16 +6236,16 @@ msgid ""
" please import or restore these in date order (oldest first)."
msgstr "Diese Inhalts-Sicherungen können wiederhergestellt werden, indem Du <a href=\"%1$s\">%2$s</a> auf jeglichem Hub besuchst, der diesen Kanal enthält. Das funktioniert am besten, wenn Du dabei die zeitliche Reihenfolge einhältst, also die Sicherungen für den ältesten Zeitraum zuerst importierst."
-#: ../../Zotlabs/Module/Viewconnections.php:63
+#: ../../Zotlabs/Module/Viewconnections.php:62
msgid "No connections."
msgstr "Keine Verbindungen."
-#: ../../Zotlabs/Module/Viewconnections.php:76
+#: ../../Zotlabs/Module/Viewconnections.php:75
#, php-format
msgid "Visit %s's profile [%s]"
msgstr "%ss Profil [%s] besuchen"
-#: ../../Zotlabs/Module/Viewconnections.php:105
+#: ../../Zotlabs/Module/Viewconnections.php:104
msgid "View Connections"
msgstr "Verbindungen anzeigen"
@@ -6304,20 +6253,20 @@ msgstr "Verbindungen anzeigen"
msgid "Source of Item"
msgstr "Quelle des Elements"
-#: ../../Zotlabs/Module/Webpages.php:186 ../../include/apps.php:136
-#: ../../include/conversation.php:1704 ../../include/nav.php:106
+#: ../../Zotlabs/Module/Webpages.php:184 ../../Zotlabs/Lib/Apps.php:217
+#: ../../include/nav.php:106 ../../include/conversation.php:1685
msgid "Webpages"
msgstr "Webseiten"
-#: ../../Zotlabs/Module/Webpages.php:197 ../../include/page_widgets.php:41
+#: ../../Zotlabs/Module/Webpages.php:195 ../../include/page_widgets.php:41
msgid "Actions"
msgstr "Aktionen"
-#: ../../Zotlabs/Module/Webpages.php:198 ../../include/page_widgets.php:42
+#: ../../Zotlabs/Module/Webpages.php:196 ../../include/page_widgets.php:42
msgid "Page Link"
msgstr "Seiten-Link"
-#: ../../Zotlabs/Module/Webpages.php:199
+#: ../../Zotlabs/Module/Webpages.php:197
msgid "Page Title"
msgstr "Seitentitel"
@@ -6329,883 +6278,1549 @@ msgstr "Xchan-Suche"
msgid "Lookup xchan beginning with (or webbie): "
msgstr "Nach xchans oder Webbies (Kanal-Adressen) suchen, die wie folgt beginnen:"
-#: ../../include/Import/import_diaspora.php:17
-msgid "No username found in import file."
-msgstr "Kein Benutzername in der Importdatei gefunden."
+#: ../../Zotlabs/Lib/Apps.php:204
+msgid "Site Admin"
+msgstr "Hub-Administration"
-#: ../../include/Import/import_diaspora.php:42 ../../include/import.php:44
-msgid "Unable to create a unique channel address. Import failed."
-msgstr "Es war nicht möglich, eine eindeutige Kanal-Adresse zu erzeugen. Der Import ist fehlgeschlagen."
+#: ../../Zotlabs/Lib/Apps.php:205
+msgid "Bug Report"
+msgstr "Fehler-Rückmeldung"
-#: ../../include/dba/dba_driver.php:141
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden"
+#: ../../Zotlabs/Lib/Apps.php:206
+msgid "View Bookmarks"
+msgstr "Lesezeichen ansehen"
-#: ../../include/identity.php:32
-msgid "Unable to obtain identity information from database"
-msgstr "Kann keine Identitäts-Informationen aus Datenbank beziehen"
+#: ../../Zotlabs/Lib/Apps.php:207
+msgid "My Chatrooms"
+msgstr "Meine Chaträume"
-#: ../../include/identity.php:66
-msgid "Empty name"
-msgstr "Namensfeld leer"
+#: ../../Zotlabs/Lib/Apps.php:209
+msgid "Firefox Share"
+msgstr "Teilen-Knopf für Firefox"
-#: ../../include/identity.php:69
-msgid "Name too long"
-msgstr "Name ist zu lang"
+#: ../../Zotlabs/Lib/Apps.php:210
+msgid "Remote Diagnostics"
+msgstr "Ferndiagnose"
-#: ../../include/identity.php:180
-msgid "No account identifier"
-msgstr "Keine Account-Kennung"
+#: ../../Zotlabs/Lib/Apps.php:211 ../../include/features.php:89
+msgid "Suggest Channels"
+msgstr "Kanäle vorschlagen"
-#: ../../include/identity.php:192
-msgid "Nickname is required."
-msgstr "Spitzname ist erforderlich."
+#: ../../Zotlabs/Lib/Apps.php:212 ../../include/nav.php:110
+#: ../../boot.php:1703
+msgid "Login"
+msgstr "Anmelden"
-#: ../../include/identity.php:206
-msgid "Reserved nickname. Please choose another."
-msgstr "Reservierter Kurzname. Bitte wähle einen anderen."
+#: ../../Zotlabs/Lib/Apps.php:214 ../../include/nav.php:179
+msgid "Grid"
+msgstr "Grid"
-#: ../../include/identity.php:211
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt."
+#: ../../Zotlabs/Lib/Apps.php:218 ../../include/nav.php:182
+msgid "Channel Home"
+msgstr "Mein Kanal"
-#: ../../include/identity.php:287
-msgid "Unable to retrieve created identity"
-msgstr "Kann die erstellte Identität nicht empfangen"
+#: ../../Zotlabs/Lib/Apps.php:221 ../../include/nav.php:201
+#: ../../include/conversation.php:1649 ../../include/conversation.php:1652
+msgid "Events"
+msgstr "Termine"
-#: ../../include/identity.php:345
-msgid "Default Profile"
-msgstr "Standard-Profil"
+#: ../../Zotlabs/Lib/Apps.php:222 ../../include/nav.php:167
+msgid "Directory"
+msgstr "Verzeichnis"
-#: ../../include/identity.php:784
-msgid "Requested channel is not available."
-msgstr "Angeforderte Kanal nicht verfügbar."
+#: ../../Zotlabs/Lib/Apps.php:224 ../../include/nav.php:193
+msgid "Mail"
+msgstr "Mail"
-#: ../../include/identity.php:931
-msgid "Create New Profile"
-msgstr "Neues Profil erstellen"
+#: ../../Zotlabs/Lib/Apps.php:227 ../../include/nav.php:96
+msgid "Chat"
+msgstr "Chat"
-#: ../../include/identity.php:934 ../../include/nav.php:90
-msgid "Edit Profile"
-msgstr "Profile bearbeiten"
+#: ../../Zotlabs/Lib/Apps.php:229
+msgid "Probe"
+msgstr "Testen"
-#: ../../include/identity.php:951
-msgid "Visible to everybody"
-msgstr "Für jeden sichtbar"
+#: ../../Zotlabs/Lib/Apps.php:230
+msgid "Suggest"
+msgstr "Empfehlen"
-#: ../../include/identity.php:1026 ../../include/identity.php:1281
-msgid "Gender:"
-msgstr "Geschlecht:"
+#: ../../Zotlabs/Lib/Apps.php:231
+msgid "Random Channel"
+msgstr "Zufälliger Kanal"
-#: ../../include/identity.php:1027 ../../include/identity.php:1325
-msgid "Status:"
-msgstr "Status:"
+#: ../../Zotlabs/Lib/Apps.php:232
+msgid "Invite"
+msgstr "Einladen"
-#: ../../include/identity.php:1028 ../../include/identity.php:1336
-msgid "Homepage:"
-msgstr "Homepage:"
+#: ../../Zotlabs/Lib/Apps.php:233 ../../include/widgets.php:1386
+msgid "Features"
+msgstr "Funktionen"
-#: ../../include/identity.php:1029
-msgid "Online Now"
-msgstr "gerade online"
+#: ../../Zotlabs/Lib/Apps.php:235
+msgid "Post"
+msgstr "Beitrag schreiben"
-#: ../../include/identity.php:1117 ../../include/identity.php:1193
-msgid "F d"
-msgstr "d. F"
+#: ../../Zotlabs/Lib/Apps.php:335
+msgid "Purchase"
+msgstr "Kaufen"
-#: ../../include/identity.php:1173
-msgid "Birthday Reminders"
-msgstr "Geburtstags Erinnerungen"
+#: ../../Zotlabs/Lib/Chatroom.php:27
+msgid "Missing room name"
+msgstr "Der Chatraum hat keinen Namen"
-#: ../../include/identity.php:1174
-msgid "Birthdays this week:"
-msgstr "Geburtstage in dieser Woche:"
+#: ../../Zotlabs/Lib/Chatroom.php:36
+msgid "Duplicate room name"
+msgstr "Name des Chatraums bereits vergeben"
-#: ../../include/identity.php:1225
-msgid "[No description]"
-msgstr "[Keine Beschreibung]"
+#: ../../Zotlabs/Lib/Chatroom.php:86 ../../Zotlabs/Lib/Chatroom.php:94
+msgid "Invalid room specifier."
+msgstr "Ungültiger Raumbezeichner."
-#: ../../include/identity.php:1243
-msgid "Event Reminders"
-msgstr "Termin-Erinnerungen"
+#: ../../Zotlabs/Lib/Chatroom.php:126
+msgid "Room not found."
+msgstr "Chatraum konnte nicht gefunden werden."
-#: ../../include/identity.php:1244
-msgid "Events this week:"
-msgstr "Termine in dieser Woche:"
+#: ../../Zotlabs/Lib/Chatroom.php:147
+msgid "Room is full"
+msgstr "Der Chatraum ist voll"
-#: ../../include/identity.php:1286
-msgid "Like this channel"
-msgstr "Dieser Kanal gefällt mir"
+#: ../../Zotlabs/Lib/Enotify.php:60 ../../include/network.php:1823
+msgid "$Projectname Notification"
+msgstr "$Projectname-Benachrichtigung"
-#: ../../include/identity.php:1310
-msgid "j F, Y"
-msgstr "j. F Y"
+#: ../../Zotlabs/Lib/Enotify.php:61 ../../include/network.php:1824
+msgid "$projectname"
+msgstr "$projectname"
-#: ../../include/identity.php:1311
-msgid "j F"
-msgstr "j. F"
+#: ../../Zotlabs/Lib/Enotify.php:63 ../../include/network.php:1826
+msgid "Thank You,"
+msgstr "Danke."
-#: ../../include/identity.php:1318
-msgid "Birthday:"
-msgstr "Geburtstag:"
+#: ../../Zotlabs/Lib/Enotify.php:65 ../../include/network.php:1828
+#, php-format
+msgid "%s Administrator"
+msgstr "der Administrator von %s"
-#: ../../include/identity.php:1331
+#: ../../Zotlabs/Lib/Enotify.php:100
#, php-format
-msgid "for %1$d %2$s"
-msgstr "seit %1$d %2$s"
+msgid "%s <!item_type!>"
+msgstr "%s <!item_type!>"
-#: ../../include/identity.php:1334
-msgid "Sexual Preference:"
-msgstr "Sexuelle Orientierung:"
+#: ../../Zotlabs/Lib/Enotify.php:104
+#, php-format
+msgid "[Hubzilla:Notify] New mail received at %s"
+msgstr "[Hubzilla:Benachrichtigung] Neue Mail empfangen auf %s"
-#: ../../include/identity.php:1340
-msgid "Tags:"
-msgstr "Schlagworte:"
+#: ../../Zotlabs/Lib/Enotify.php:106
+#, php-format
+msgid "%1$s, %2$s sent you a new private message at %3$s."
+msgstr "%1$s, %2$s hat Dir eine private Nachricht auf %3$s gesendet."
-#: ../../include/identity.php:1342
-msgid "Political Views:"
-msgstr "Politische Ansichten:"
+#: ../../Zotlabs/Lib/Enotify.php:107
+#, php-format
+msgid "%1$s sent you %2$s."
+msgstr "%1$s hat Dir %2$s geschickt."
-#: ../../include/identity.php:1344
-msgid "Religion:"
-msgstr "Religion:"
+#: ../../Zotlabs/Lib/Enotify.php:107
+msgid "a private message"
+msgstr "eine private Nachricht"
-#: ../../include/identity.php:1348
-msgid "Hobbies/Interests:"
-msgstr "Hobbys/Interessen:"
+#: ../../Zotlabs/Lib/Enotify.php:108
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
+msgstr "Bitte besuche %s, um die private Nachricht anzusehen und/oder darauf zu antworten."
-#: ../../include/identity.php:1350
-msgid "Likes:"
-msgstr "Gefällt:"
+#: ../../Zotlabs/Lib/Enotify.php:164
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
+msgstr "%1$s, %2$s hat [zrl=%3$s]einen %4$s[/zrl] kommentiert"
-#: ../../include/identity.php:1352
-msgid "Dislikes:"
-msgstr "Gefällt nicht:"
+#: ../../Zotlabs/Lib/Enotify.php:172
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
+msgstr "%1$s, %2$s hat [zrl=%3$s]%4$ss %5$s[/zrl] kommentiert"
-#: ../../include/identity.php:1354
-msgid "Contact information and Social Networks:"
-msgstr "Kontaktinformation und soziale Netzwerke:"
+#: ../../Zotlabs/Lib/Enotify.php:181
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
+msgstr "%1$s, %2$s hat [zrl=%3$s]Deinen %4$s[/zrl] kommentiert"
-#: ../../include/identity.php:1356
-msgid "My other channels:"
-msgstr "Meine anderen Kanäle:"
+#: ../../Zotlabs/Lib/Enotify.php:192
+#, php-format
+msgid "[Hubzilla:Notify] Comment to conversation #%1$d by %2$s"
+msgstr "[Hubzilla:Benachrichtigung] Kommentar in Unterhaltung #%1$d von %2$s"
-#: ../../include/identity.php:1358
-msgid "Musical interests:"
-msgstr "Musikalische Interessen:"
+#: ../../Zotlabs/Lib/Enotify.php:193
+#, php-format
+msgid "%1$s, %2$s commented on an item/conversation you have been following."
+msgstr "%1$s, %2$s hat eine Unterhaltung kommentiert, der Du folgst."
-#: ../../include/identity.php:1360
-msgid "Books, literature:"
-msgstr "Bücher, Literatur:"
+#: ../../Zotlabs/Lib/Enotify.php:196 ../../Zotlabs/Lib/Enotify.php:211
+#: ../../Zotlabs/Lib/Enotify.php:237 ../../Zotlabs/Lib/Enotify.php:255
+#: ../../Zotlabs/Lib/Enotify.php:269
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
+msgstr "Bitte besuche %s, um die Unterhaltung anzusehen und/oder zu kommentieren."
-#: ../../include/identity.php:1362
-msgid "Television:"
-msgstr "Fernsehen:"
+#: ../../Zotlabs/Lib/Enotify.php:202
+#, php-format
+msgid "[Hubzilla:Notify] %s posted to your profile wall"
+msgstr "[Hubzilla:Benachrichtigung] %s schrieb auf Deine Pinnwand"
-#: ../../include/identity.php:1364
-msgid "Film/dance/culture/entertainment:"
-msgstr "Film/Tanz/Kultur/Unterhaltung:"
+#: ../../Zotlabs/Lib/Enotify.php:204
+#, php-format
+msgid "%1$s, %2$s posted to your profile wall at %3$s"
+msgstr "%1$s, %2$s hat auf Deine Pinnwand auf %3$s geschrieben"
-#: ../../include/identity.php:1366
-msgid "Love/Romance:"
-msgstr "Liebe/Romantik:"
+#: ../../Zotlabs/Lib/Enotify.php:206
+#, php-format
+msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
+msgstr "%1$s, %2$s hat auf [zrl=%3$s]Deine Pinnwand[/zrl] geschrieben"
-#: ../../include/identity.php:1368
-msgid "Work/employment:"
-msgstr "Arbeit/Anstellung:"
+#: ../../Zotlabs/Lib/Enotify.php:230
+#, php-format
+msgid "[Hubzilla:Notify] %s tagged you"
+msgstr "[Hubzilla:Benachrichtigung] %s hat Dich erwähnt"
-#: ../../include/identity.php:1370
-msgid "School/education:"
-msgstr "Schule/Ausbildung:"
+#: ../../Zotlabs/Lib/Enotify.php:231
+#, php-format
+msgid "%1$s, %2$s tagged you at %3$s"
+msgstr "%1$s, %2$s hat Dich auf %3$s erwähnt"
-#: ../../include/identity.php:1390
-msgid "Like this thing"
-msgstr "Gefällt mir"
+#: ../../Zotlabs/Lib/Enotify.php:232
+#, php-format
+msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%3$s]hat Dich erwähnt[/zrl]."
+
+#: ../../Zotlabs/Lib/Enotify.php:244
+#, php-format
+msgid "[Hubzilla:Notify] %1$s poked you"
+msgstr "[Hubzilla:Benachrichtigung] %1$s hat Dich angestupst"
+
+#: ../../Zotlabs/Lib/Enotify.php:245
+#, php-format
+msgid "%1$s, %2$s poked you at %3$s"
+msgstr "%1$s, %2$s hat Dich auf %3$s angestupst"
+
+#: ../../Zotlabs/Lib/Enotify.php:246
+#, php-format
+msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%2$s]hat Dich angestupst[/zrl]."
+
+#: ../../Zotlabs/Lib/Enotify.php:262
+#, php-format
+msgid "[Hubzilla:Notify] %s tagged your post"
+msgstr "[Hubzilla:Benachrichtigung] %s hat Deinen Beitrag verschlagwortet"
+
+#: ../../Zotlabs/Lib/Enotify.php:263
+#, php-format
+msgid "%1$s, %2$s tagged your post at %3$s"
+msgstr "%1$s, %2$s hat Deinen Beitrag auf %3$s verschlagwortet"
+
+#: ../../Zotlabs/Lib/Enotify.php:264
+#, php-format
+msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+msgstr "%1$s, %2$s hat [zrl=%3$s]Deinen Beitrag[/zrl] verschlagwortet"
+
+#: ../../Zotlabs/Lib/Enotify.php:276
+msgid "[Hubzilla:Notify] Introduction received"
+msgstr "[Hubzilla:Benachrichtigung] Vorstellung erhalten"
+
+#: ../../Zotlabs/Lib/Enotify.php:277
+#, php-format
+msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
+msgstr "%1$s, Du hast eine neue Verbindungsanfrage von '%2$s' auf %3$s erhalten"
+
+#: ../../Zotlabs/Lib/Enotify.php:278
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
+msgstr "%1$s, Du hast [zrl=%2$s]eine neue Verbindungsanfrage[/zrl] von %3$s erhalten."
+
+#: ../../Zotlabs/Lib/Enotify.php:282 ../../Zotlabs/Lib/Enotify.php:301
+#, php-format
+msgid "You may visit their profile at %s"
+msgstr "Du kannst Dir das Profil unter %s ansehen"
+
+#: ../../Zotlabs/Lib/Enotify.php:284
+#, php-format
+msgid "Please visit %s to approve or reject the connection request."
+msgstr "Bitte besuche %s , um die Verbindungsanfrage anzunehmen oder abzulehnen."
+
+#: ../../Zotlabs/Lib/Enotify.php:291
+msgid "[Hubzilla:Notify] Friend suggestion received"
+msgstr "[Hubzilla:Benachrichtigung] Freundschaftsvorschlag erhalten"
+
+#: ../../Zotlabs/Lib/Enotify.php:292
+#, php-format
+msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
+msgstr "%1$s, Du hast einen Kontaktvorschlag von „%2$s“ auf %3$s erhalten"
+
+#: ../../Zotlabs/Lib/Enotify.php:293
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
+"%4$s."
+msgstr "%1$s, Du hast [zrl=%2$s]einen Kontaktvorschlag[/zrl] für %3$s von %4$s erhalten."
+
+#: ../../Zotlabs/Lib/Enotify.php:299
+msgid "Name:"
+msgstr "Name:"
+
+#: ../../Zotlabs/Lib/Enotify.php:300
+msgid "Photo:"
+msgstr "Foto:"
+
+#: ../../Zotlabs/Lib/Enotify.php:303
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
+msgstr "Bitte besuche %s um den Vorschlag zu akzeptieren oder abzulehnen."
+
+#: ../../Zotlabs/Lib/Enotify.php:518
+msgid "[Hubzilla:Notify]"
+msgstr "[Hubzilla:Benachrichtigung]"
-#: ../../include/notify.php:20
+#: ../../Zotlabs/Lib/Enotify.php:667
msgid "created a new post"
msgstr "Neuer Beitrag wurde erzeugt"
-#: ../../include/notify.php:21
+#: ../../Zotlabs/Lib/Enotify.php:668
#, php-format
msgid "commented on %s's post"
msgstr "hat %s's Beitrag kommentiert"
-#: ../../include/ItemObject.php:89 ../../include/conversation.php:664
+#: ../../Zotlabs/Lib/ThreadItem.php:95 ../../include/conversation.php:664
msgid "Private Message"
msgstr "Private Nachricht"
-#: ../../include/ItemObject.php:126 ../../include/conversation.php:656
+#: ../../Zotlabs/Lib/ThreadItem.php:132 ../../include/conversation.php:656
msgid "Select"
msgstr "Auswählen"
-#: ../../include/ItemObject.php:130
+#: ../../Zotlabs/Lib/ThreadItem.php:136
msgid "Save to Folder"
msgstr "In Ordner speichern"
-#: ../../include/ItemObject.php:151
+#: ../../Zotlabs/Lib/ThreadItem.php:157
msgid "I will attend"
msgstr "Ich werde teilnehmen"
-#: ../../include/ItemObject.php:151
+#: ../../Zotlabs/Lib/ThreadItem.php:157
msgid "I will not attend"
msgstr "Ich werde nicht teilnehmen"
-#: ../../include/ItemObject.php:151
+#: ../../Zotlabs/Lib/ThreadItem.php:157
msgid "I might attend"
msgstr "Ich werde vielleicht teilnehmen"
-#: ../../include/ItemObject.php:161
+#: ../../Zotlabs/Lib/ThreadItem.php:167
msgid "I agree"
msgstr "Ich stimme zu"
-#: ../../include/ItemObject.php:161
+#: ../../Zotlabs/Lib/ThreadItem.php:167
msgid "I disagree"
msgstr "Ich lehne ab"
-#: ../../include/ItemObject.php:161
+#: ../../Zotlabs/Lib/ThreadItem.php:167
msgid "I abstain"
msgstr "Ich enthalte mich"
-#: ../../include/ItemObject.php:212
+#: ../../Zotlabs/Lib/ThreadItem.php:218
msgid "Add Star"
msgstr "Stern hinzufügen"
-#: ../../include/ItemObject.php:213
+#: ../../Zotlabs/Lib/ThreadItem.php:219
msgid "Remove Star"
msgstr "Stern entfernen"
-#: ../../include/ItemObject.php:214
+#: ../../Zotlabs/Lib/ThreadItem.php:220
msgid "Toggle Star Status"
msgstr "Markierungsstatus (Stern) umschalten"
-#: ../../include/ItemObject.php:218
+#: ../../Zotlabs/Lib/ThreadItem.php:224
msgid "starred"
msgstr "markiert"
-#: ../../include/ItemObject.php:227 ../../include/conversation.php:671
+#: ../../Zotlabs/Lib/ThreadItem.php:234 ../../include/conversation.php:671
msgid "Message signature validated"
msgstr "Signatur überprüft"
-#: ../../include/ItemObject.php:228 ../../include/conversation.php:672
+#: ../../Zotlabs/Lib/ThreadItem.php:235 ../../include/conversation.php:672
msgid "Message signature incorrect"
msgstr "Signatur nicht korrekt"
-#: ../../include/ItemObject.php:236
+#: ../../Zotlabs/Lib/ThreadItem.php:243
msgid "Add Tag"
msgstr "Tag hinzufügen"
-#: ../../include/ItemObject.php:254 ../../include/taxonomy.php:328
+#: ../../Zotlabs/Lib/ThreadItem.php:261 ../../include/taxonomy.php:316
msgid "like"
msgstr "mag"
-#: ../../include/ItemObject.php:255 ../../include/taxonomy.php:329
+#: ../../Zotlabs/Lib/ThreadItem.php:262 ../../include/taxonomy.php:317
msgid "dislike"
msgstr "verurteile"
-#: ../../include/ItemObject.php:259
+#: ../../Zotlabs/Lib/ThreadItem.php:266
msgid "Share This"
msgstr "Teilen"
-#: ../../include/ItemObject.php:259
+#: ../../Zotlabs/Lib/ThreadItem.php:266
msgid "share"
msgstr "Teilen"
-#: ../../include/ItemObject.php:268
+#: ../../Zotlabs/Lib/ThreadItem.php:275
msgid "Delivery Report"
msgstr "Zustellungsbericht"
-#: ../../include/ItemObject.php:286
+#: ../../Zotlabs/Lib/ThreadItem.php:293
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
msgstr[0] "%d Kommentar"
msgstr[1] "%d Kommentare"
-#: ../../include/ItemObject.php:315 ../../include/ItemObject.php:316
+#: ../../Zotlabs/Lib/ThreadItem.php:322 ../../Zotlabs/Lib/ThreadItem.php:323
#, php-format
msgid "View %s's profile - %s"
msgstr "Schaue Dir %ss Profil an – %s"
-#: ../../include/ItemObject.php:319
+#: ../../Zotlabs/Lib/ThreadItem.php:326
msgid "to"
msgstr "an"
-#: ../../include/ItemObject.php:320
+#: ../../Zotlabs/Lib/ThreadItem.php:327
msgid "via"
msgstr "via"
-#: ../../include/ItemObject.php:321
+#: ../../Zotlabs/Lib/ThreadItem.php:328
msgid "Wall-to-Wall"
msgstr "Wall-to-Wall"
-#: ../../include/ItemObject.php:322
+#: ../../Zotlabs/Lib/ThreadItem.php:329
msgid "via Wall-To-Wall:"
msgstr "via Wall-To-Wall:"
-#: ../../include/ItemObject.php:334 ../../include/conversation.php:719
+#: ../../Zotlabs/Lib/ThreadItem.php:341 ../../include/conversation.php:719
#, php-format
msgid "from %s"
msgstr "via %s"
-#: ../../include/ItemObject.php:337 ../../include/conversation.php:722
+#: ../../Zotlabs/Lib/ThreadItem.php:344 ../../include/conversation.php:722
#, php-format
msgid "last edited: %s"
msgstr "zuletzt bearbeitet: %s"
-#: ../../include/ItemObject.php:338 ../../include/conversation.php:723
+#: ../../Zotlabs/Lib/ThreadItem.php:345 ../../include/conversation.php:723
#, php-format
msgid "Expires: %s"
msgstr "Verfällt: %s"
-#: ../../include/ItemObject.php:362 ../../bookmarker/bookmarker.php:45
+#: ../../Zotlabs/Lib/ThreadItem.php:370
msgid "Save Bookmarks"
msgstr "Favoriten speichern"
-#: ../../include/ItemObject.php:363
+#: ../../Zotlabs/Lib/ThreadItem.php:371
msgid "Add to Calendar"
msgstr "Zum Kalender hinzufügen"
-#: ../../include/ItemObject.php:372
+#: ../../Zotlabs/Lib/ThreadItem.php:380
msgid "Mark all seen"
msgstr "Alle als gelesen markieren"
-#: ../../include/ItemObject.php:413 ../../include/js_strings.php:7
+#: ../../Zotlabs/Lib/ThreadItem.php:421 ../../include/js_strings.php:7
msgid "[+] show all"
msgstr "[+] Alle anzeigen"
-#: ../../include/ItemObject.php:709
+#: ../../Zotlabs/Lib/ThreadItem.php:711 ../../include/conversation.php:1215
+msgid "Bold"
+msgstr "Fett"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:712 ../../include/conversation.php:1216
+msgid "Italic"
+msgstr "Kursiv"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:713 ../../include/conversation.php:1217
+msgid "Underline"
+msgstr "Unterstrichen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:714 ../../include/conversation.php:1218
+msgid "Quote"
+msgstr "Zitat"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:715 ../../include/conversation.php:1219
+msgid "Code"
+msgstr "Code"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:716
msgid "Image"
msgstr "Bild"
-#: ../../include/ItemObject.php:710
+#: ../../Zotlabs/Lib/ThreadItem.php:717
msgid "Insert Link"
msgstr "Link einfügen"
-#: ../../include/ItemObject.php:711
+#: ../../Zotlabs/Lib/ThreadItem.php:718
msgid "Video"
msgstr "Video"
-#: ../../include/account.php:28
-msgid "Not a valid email address"
-msgstr "Ungültige E-Mail-Adresse"
+#: ../../include/Import/import_diaspora.php:16
+msgid "No username found in import file."
+msgstr "Kein Benutzername in der Importdatei gefunden."
-#: ../../include/account.php:30
-msgid "Your email domain is not among those allowed on this site"
-msgstr "Deine E-Mail-Adresse ist auf dieser Seite nicht erlaubt"
+#: ../../include/Import/import_diaspora.php:41 ../../include/import.php:50
+msgid "Unable to create a unique channel address. Import failed."
+msgstr "Es war nicht möglich, eine eindeutige Kanal-Adresse zu erzeugen. Der Import ist fehlgeschlagen."
-#: ../../include/account.php:36
-msgid "Your email address is already registered at this site."
-msgstr "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert."
+#: ../../include/dba/dba_driver.php:171
+#, php-format
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden"
-#: ../../include/account.php:68
-msgid "An invitation is required."
-msgstr "Eine Einladung wird benötigt."
+#: ../../include/taxonomy.php:188 ../../include/taxonomy.php:270
+#: ../../include/widgets.php:46 ../../include/widgets.php:429
+#: ../../include/contact_widgets.php:91
+msgid "Categories"
+msgstr "Kategorien"
-#: ../../include/account.php:72
-msgid "Invitation could not be verified."
-msgstr "Die Einladung konnte nicht bestätigt werden."
+#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249
+msgid "Tags"
+msgstr "Schlagwörter"
-#: ../../include/account.php:122
-msgid "Please enter the required information."
-msgstr "Bitte gib die benötigten Informationen ein."
+#: ../../include/taxonomy.php:293
+msgid "Keywords"
+msgstr "Schlüsselwörter"
-#: ../../include/account.php:189
-msgid "Failed to store account information."
-msgstr "Speichern der Nutzerkontodaten fehlgeschlagen."
+#: ../../include/taxonomy.php:314
+msgid "have"
+msgstr "habe"
-#: ../../include/account.php:249
-#, php-format
-msgid "Registration confirmation for %s"
-msgstr "Registrierungsbestätigung für %s"
+#: ../../include/taxonomy.php:314
+msgid "has"
+msgstr "hat"
-#: ../../include/account.php:315
+#: ../../include/taxonomy.php:315
+msgid "want"
+msgstr "will"
+
+#: ../../include/taxonomy.php:315
+msgid "wants"
+msgstr "will"
+
+#: ../../include/taxonomy.php:316
+msgid "likes"
+msgstr "gefällt"
+
+#: ../../include/taxonomy.php:317
+msgid "dislikes"
+msgstr "missfällt"
+
+#: ../../include/event.php:22 ../../include/event.php:69
+#: ../../include/bb2diaspora.php:485
+msgid "l F d, Y \\@ g:i A"
+msgstr "l, d. F Y, H:i"
+
+#: ../../include/event.php:30 ../../include/event.php:73
+#: ../../include/bb2diaspora.php:491
+msgid "Starts:"
+msgstr "Beginnt:"
+
+#: ../../include/event.php:40 ../../include/event.php:77
+#: ../../include/bb2diaspora.php:499
+msgid "Finishes:"
+msgstr "Endet:"
+
+#: ../../include/event.php:812
+msgid "This event has been added to your calendar."
+msgstr "Dieser Termin wurde zu Deinem Kalender hinzugefügt"
+
+#: ../../include/event.php:1012
+msgid "Not specified"
+msgstr "Keine Angabe"
+
+#: ../../include/event.php:1013
+msgid "Needs Action"
+msgstr "Aktion erforderlich"
+
+#: ../../include/event.php:1014
+msgid "Completed"
+msgstr "Abgeschlossen"
+
+#: ../../include/event.php:1015
+msgid "In Process"
+msgstr "In Bearbeitung"
+
+#: ../../include/event.php:1016
+msgid "Cancelled"
+msgstr "gestrichen"
+
+#: ../../include/import.php:29
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen."
+
+#: ../../include/import.php:76
+msgid "Channel clone failed. Import failed."
+msgstr "Klonen des Kanals fehlgeschlagen. Import fehlgeschlagen."
+
+#: ../../include/items.php:892 ../../include/items.php:937
+msgid "(Unknown)"
+msgstr "(Unbekannt)"
+
+#: ../../include/items.php:1136
+msgid "Visible to anybody on the internet."
+msgstr "Für jeden im Internet sichtbar."
+
+#: ../../include/items.php:1138
+msgid "Visible to you only."
+msgstr "Nur für Dich sichtbar."
+
+#: ../../include/items.php:1140
+msgid "Visible to anybody in this network."
+msgstr "Für jedes $Projectname-Mitglied sichtbar."
+
+#: ../../include/items.php:1142
+msgid "Visible to anybody authenticated."
+msgstr "Für jeden sichtbar, der angemeldet ist."
+
+#: ../../include/items.php:1144
#, php-format
-msgid "Registration request at %s"
-msgstr "Registrierungsanfrage auf %s"
+msgid "Visible to anybody on %s."
+msgstr "Für jeden auf %s sichtbar."
-#: ../../include/account.php:317 ../../include/account.php:344
-#: ../../include/account.php:404 ../../include/network.php:1875
-msgid "Administrator"
-msgstr "Administrator"
+#: ../../include/items.php:1146
+msgid "Visible to all connections."
+msgstr "Für alle Verbindungen sichtbar."
-#: ../../include/account.php:339
-msgid "your registration password"
-msgstr "Dein Registrierungspasswort"
+#: ../../include/items.php:1148
+msgid "Visible to approved connections."
+msgstr "Nur für akzeptierte Verbindungen sichtbar."
-#: ../../include/account.php:342 ../../include/account.php:402
+#: ../../include/items.php:1150
+msgid "Visible to specific connections."
+msgstr "Sichtbar für bestimmte Verbindungen."
+
+#: ../../include/items.php:3909
+msgid "Privacy group is empty."
+msgstr "Gruppe ist leer."
+
+#: ../../include/items.php:3916
#, php-format
-msgid "Registration details for %s"
-msgstr "Registrierungsdetails für %s"
+msgid "Privacy group: %s"
+msgstr "Gruppe: %s"
-#: ../../include/account.php:414
-msgid "Account approved."
-msgstr "Nutzerkonto bestätigt."
+#: ../../include/items.php:3928
+msgid "Connection not found."
+msgstr "Die Verbindung wurde nicht gefunden."
-#: ../../include/account.php:454
+#: ../../include/items.php:4277
+msgid "profile photo"
+msgstr "Profilfoto"
+
+#: ../../include/message.php:20
+msgid "No recipient provided."
+msgstr "Kein Empfänger angegeben"
+
+#: ../../include/message.php:25
+msgid "[no subject]"
+msgstr "[no subject]"
+
+#: ../../include/message.php:45
+msgid "Unable to determine sender."
+msgstr "Kann Absender nicht bestimmen."
+
+#: ../../include/message.php:222
+msgid "Stored post could not be verified."
+msgstr "Gespeicherter Beitrag konnten nicht überprüft werden."
+
+#: ../../include/text.php:428
+msgid "prev"
+msgstr "vorherige"
+
+#: ../../include/text.php:430
+msgid "first"
+msgstr "erste"
+
+#: ../../include/text.php:459
+msgid "last"
+msgstr "letzte"
+
+#: ../../include/text.php:462
+msgid "next"
+msgstr "nächste"
+
+#: ../../include/text.php:472
+msgid "older"
+msgstr "älter"
+
+#: ../../include/text.php:474
+msgid "newer"
+msgstr "neuer"
+
+#: ../../include/text.php:863
+msgid "No connections"
+msgstr "Keine Verbindungen"
+
+#: ../../include/text.php:888
#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registrierung für %s wurde widerrufen"
+msgid "View all %s connections"
+msgstr "Alle Verbindungen von %s anzeigen"
-#: ../../include/account.php:506
-msgid "Account verified. Please login."
-msgstr "Nutzerkonto wurde bestätigt. Bitte melde Dich an!"
+#: ../../include/text.php:1033 ../../include/text.php:1038
+msgid "poke"
+msgstr "anstupsen"
-#: ../../include/account.php:719 ../../include/account.php:721
-msgid "Click here to upgrade."
-msgstr "Klicke hier, um das Upgrade durchzuführen."
+#: ../../include/text.php:1033 ../../include/text.php:1038
+#: ../../include/conversation.php:243
+msgid "poked"
+msgstr "stupste"
-#: ../../include/account.php:727
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Diese Aktion überschreitet die Grenzen Ihres Abonnements."
+#: ../../include/text.php:1039
+msgid "ping"
+msgstr "anpingen"
-#: ../../include/account.php:732
-msgid "This action is not available under your subscription plan."
-msgstr "Diese Aktion ist in Ihrem Abonnement nicht verfügbar."
+#: ../../include/text.php:1039
+msgid "pinged"
+msgstr "pingte"
-#: ../../include/profile_selectors.php:6
-msgid "Currently Male"
-msgstr "Momentan männlich"
+#: ../../include/text.php:1040
+msgid "prod"
+msgstr "knuffen"
-#: ../../include/profile_selectors.php:6
-msgid "Currently Female"
-msgstr "Momentan weiblich"
+#: ../../include/text.php:1040
+msgid "prodded"
+msgstr "knuffte"
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Male"
-msgstr "Größtenteils männlich"
+#: ../../include/text.php:1041
+msgid "slap"
+msgstr "ohrfeigen"
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Female"
-msgstr "Größtenteils weiblich"
+#: ../../include/text.php:1041
+msgid "slapped"
+msgstr "ohrfeigte"
-#: ../../include/profile_selectors.php:6
-msgid "Transgender"
-msgstr "Transsexuell"
+#: ../../include/text.php:1042
+msgid "finger"
+msgstr "befummeln"
-#: ../../include/profile_selectors.php:6
-msgid "Intersex"
-msgstr "Zwischengeschlechtlich"
+#: ../../include/text.php:1042
+msgid "fingered"
+msgstr "befummelte"
-#: ../../include/profile_selectors.php:6
-msgid "Transsexual"
-msgstr "Transsexuell"
+#: ../../include/text.php:1043
+msgid "rebuff"
+msgstr "eine Abfuhr erteilen"
-#: ../../include/profile_selectors.php:6
-msgid "Hermaphrodite"
-msgstr "Zwitter"
+#: ../../include/text.php:1043
+msgid "rebuffed"
+msgstr "zurückgewiesen"
-#: ../../include/profile_selectors.php:6
-msgid "Neuter"
-msgstr "Geschlechtslos"
+#: ../../include/text.php:1055
+msgid "happy"
+msgstr "glücklich"
-#: ../../include/profile_selectors.php:6
-msgid "Non-specific"
-msgstr "unklar"
+#: ../../include/text.php:1056
+msgid "sad"
+msgstr "traurig"
-#: ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
-#: ../../include/profile_selectors.php:61
-#: ../../include/profile_selectors.php:97 ../../include/permissions.php:881
-msgid "Other"
-msgstr "Andere"
+#: ../../include/text.php:1057
+msgid "mellow"
+msgstr "sanft"
-#: ../../include/profile_selectors.php:6
-msgid "Undecided"
-msgstr "Unentschieden"
+#: ../../include/text.php:1058
+msgid "tired"
+msgstr "müde"
-#: ../../include/profile_selectors.php:42
-#: ../../include/profile_selectors.php:61
-msgid "Males"
-msgstr "Männer"
+#: ../../include/text.php:1059
+msgid "perky"
+msgstr "frech"
-#: ../../include/profile_selectors.php:42
-#: ../../include/profile_selectors.php:61
-msgid "Females"
-msgstr "Frauen"
+#: ../../include/text.php:1060
+msgid "angry"
+msgstr "sauer"
-#: ../../include/profile_selectors.php:42
-msgid "Gay"
-msgstr "Schwul"
+#: ../../include/text.php:1061
+msgid "stupefied"
+msgstr "verblüfft"
-#: ../../include/profile_selectors.php:42
-msgid "Lesbian"
-msgstr "Lesbisch"
+#: ../../include/text.php:1062
+msgid "puzzled"
+msgstr "verwirrt"
-#: ../../include/profile_selectors.php:42
-msgid "No Preference"
-msgstr "Keine Bevorzugung"
+#: ../../include/text.php:1063
+msgid "interested"
+msgstr "interessiert"
-#: ../../include/profile_selectors.php:42
-msgid "Bisexual"
-msgstr "Bisexuell"
+#: ../../include/text.php:1064
+msgid "bitter"
+msgstr "verbittert"
-#: ../../include/profile_selectors.php:42
-msgid "Autosexual"
-msgstr "Autosexuell"
+#: ../../include/text.php:1065
+msgid "cheerful"
+msgstr "fröhlich"
-#: ../../include/profile_selectors.php:42
-msgid "Abstinent"
-msgstr "Enthaltsam"
+#: ../../include/text.php:1066
+msgid "alive"
+msgstr "lebendig"
-#: ../../include/profile_selectors.php:42
-msgid "Virgin"
-msgstr "Jungfräulich"
+#: ../../include/text.php:1067
+msgid "annoyed"
+msgstr "verärgert"
-#: ../../include/profile_selectors.php:42
-msgid "Deviant"
-msgstr "Abweichend"
+#: ../../include/text.php:1068
+msgid "anxious"
+msgstr "unruhig"
-#: ../../include/profile_selectors.php:42
-msgid "Fetish"
-msgstr "Fetisch"
+#: ../../include/text.php:1069
+msgid "cranky"
+msgstr "schrullig"
-#: ../../include/profile_selectors.php:42
-msgid "Oodles"
-msgstr "Unmengen"
+#: ../../include/text.php:1070
+msgid "disturbed"
+msgstr "verstört"
-#: ../../include/profile_selectors.php:42
-msgid "Nonsexual"
-msgstr "Sexlos"
+#: ../../include/text.php:1071
+msgid "frustrated"
+msgstr "frustriert"
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Single"
-msgstr "Single"
+#: ../../include/text.php:1072
+msgid "depressed"
+msgstr "deprimiert"
-#: ../../include/profile_selectors.php:80
-msgid "Lonely"
-msgstr "Einsam"
+#: ../../include/text.php:1073
+msgid "motivated"
+msgstr "motiviert"
-#: ../../include/profile_selectors.php:80
-msgid "Available"
-msgstr "Verfügbar"
+#: ../../include/text.php:1074
+msgid "relaxed"
+msgstr "entspannt"
-#: ../../include/profile_selectors.php:80
-msgid "Unavailable"
-msgstr "Nicht verfügbar"
+#: ../../include/text.php:1075
+msgid "surprised"
+msgstr "überrascht"
-#: ../../include/profile_selectors.php:80
-msgid "Has crush"
-msgstr "Verguckt"
+#: ../../include/text.php:1257 ../../include/js_strings.php:70
+msgid "Monday"
+msgstr "Montag"
-#: ../../include/profile_selectors.php:80
-msgid "Infatuated"
-msgstr "Verknallt"
+#: ../../include/text.php:1257 ../../include/js_strings.php:71
+msgid "Tuesday"
+msgstr "Dienstag"
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Dating"
-msgstr "Lerne gerade jemanden kennen"
+#: ../../include/text.php:1257 ../../include/js_strings.php:72
+msgid "Wednesday"
+msgstr "Mittwoch"
-#: ../../include/profile_selectors.php:80
-msgid "Unfaithful"
-msgstr "Treulos"
+#: ../../include/text.php:1257 ../../include/js_strings.php:73
+msgid "Thursday"
+msgstr "Donnerstag"
-#: ../../include/profile_selectors.php:80
-msgid "Sex Addict"
-msgstr "Sexabhängig"
+#: ../../include/text.php:1257 ../../include/js_strings.php:74
+msgid "Friday"
+msgstr "Freitag"
-#: ../../include/profile_selectors.php:80
-msgid "Friends/Benefits"
-msgstr "Freunde/Begünstigte"
+#: ../../include/text.php:1257 ../../include/js_strings.php:75
+msgid "Saturday"
+msgstr "Samstag"
-#: ../../include/profile_selectors.php:80
-msgid "Casual"
-msgstr "Lose"
+#: ../../include/text.php:1257 ../../include/js_strings.php:69
+msgid "Sunday"
+msgstr "Sonntag"
-#: ../../include/profile_selectors.php:80
-msgid "Engaged"
-msgstr "Verlobt"
+#: ../../include/text.php:1261 ../../include/js_strings.php:45
+msgid "January"
+msgstr "Januar"
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Married"
-msgstr "Verheiratet"
+#: ../../include/text.php:1261 ../../include/js_strings.php:46
+msgid "February"
+msgstr "Februar"
-#: ../../include/profile_selectors.php:80
-msgid "Imaginarily married"
-msgstr "Gewissermaßen verheiratet"
+#: ../../include/text.php:1261 ../../include/js_strings.php:47
+msgid "March"
+msgstr "März"
-#: ../../include/profile_selectors.php:80
-msgid "Partners"
-msgstr "Partner"
+#: ../../include/text.php:1261 ../../include/js_strings.php:48
+msgid "April"
+msgstr "April"
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Cohabiting"
-msgstr "Lebensgemeinschaft"
+#: ../../include/text.php:1261
+msgid "May"
+msgstr "Mai"
-#: ../../include/profile_selectors.php:80
-msgid "Common law"
-msgstr "Informelle Ehe"
+#: ../../include/text.php:1261 ../../include/js_strings.php:50
+msgid "June"
+msgstr "Juni"
-#: ../../include/profile_selectors.php:80
-msgid "Happy"
-msgstr "Glücklich"
+#: ../../include/text.php:1261 ../../include/js_strings.php:51
+msgid "July"
+msgstr "Juli"
-#: ../../include/profile_selectors.php:80
-msgid "Not looking"
-msgstr "Nicht Ausschau haltend"
+#: ../../include/text.php:1261 ../../include/js_strings.php:52
+msgid "August"
+msgstr "August"
-#: ../../include/profile_selectors.php:80
-msgid "Swinger"
-msgstr "Swinger"
+#: ../../include/text.php:1261 ../../include/js_strings.php:53
+msgid "September"
+msgstr "September"
-#: ../../include/profile_selectors.php:80
-msgid "Betrayed"
-msgstr "Betrogen"
+#: ../../include/text.php:1261 ../../include/js_strings.php:54
+msgid "October"
+msgstr "Oktober"
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Separated"
-msgstr "Getrennt"
+#: ../../include/text.php:1261 ../../include/js_strings.php:55
+msgid "November"
+msgstr "November"
-#: ../../include/profile_selectors.php:80
-msgid "Unstable"
-msgstr "Labil"
+#: ../../include/text.php:1261 ../../include/js_strings.php:56
+msgid "December"
+msgstr "Dezember"
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Divorced"
-msgstr "Geschieden"
+#: ../../include/text.php:1338 ../../include/text.php:1342
+msgid "Unknown Attachment"
+msgstr "Unbekannter Anhang"
-#: ../../include/profile_selectors.php:80
-msgid "Imaginarily divorced"
-msgstr "Gewissermaßen geschieden"
+#: ../../include/text.php:1344
+msgid "unknown"
+msgstr "unbekannt"
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Widowed"
-msgstr "Verwitwet"
+#: ../../include/text.php:1380
+msgid "remove category"
+msgstr "Kategorie entfernen"
-#: ../../include/profile_selectors.php:80
-msgid "Uncertain"
-msgstr "Ungewiss"
+#: ../../include/text.php:1457
+msgid "remove from file"
+msgstr "aus der Datei entfernen"
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "It's complicated"
-msgstr "Es ist kompliziert"
+#: ../../include/text.php:1753 ../../include/text.php:1824
+msgid "default"
+msgstr "Standard"
-#: ../../include/profile_selectors.php:80
-msgid "Don't care"
-msgstr "Interessiert mich nicht"
+#: ../../include/text.php:1761
+msgid "Page layout"
+msgstr "Seiten-Layout"
-#: ../../include/profile_selectors.php:80
-msgid "Ask me"
-msgstr "Frag mich mal"
+#: ../../include/text.php:1761
+msgid "You can create your own with the layouts tool"
+msgstr "Mit dem Gestaltungswerkzeug kannst Du Deine eigenen Layouts erstellen"
-#: ../../include/acl_selectors.php:218
-msgid "Visible to your default audience"
-msgstr "Standard-Sichtbarkeit gemäß Kanaleinstellungen"
+#: ../../include/text.php:1803
+msgid "Page content type"
+msgstr "Art des Seiteninhalts"
-#: ../../include/acl_selectors.php:243
-msgid "Show"
-msgstr "Anzeigen"
+#: ../../include/text.php:1836
+msgid "Select an alternate language"
+msgstr "Wähle eine alternative Sprache"
-#: ../../include/acl_selectors.php:244
-msgid "Don't show"
-msgstr "Nicht anzeigen"
+#: ../../include/text.php:1953
+msgid "activity"
+msgstr "Aktivität"
-#: ../../include/acl_selectors.php:249
-msgid "Other networks and post services"
-msgstr "Andere Netzwerke und Platformen"
+#: ../../include/text.php:2262
+msgid "Design Tools"
+msgstr "Gestaltungswerkzeuge"
-#: ../../include/activities.php:42
-msgid " and "
-msgstr "und"
+#: ../../include/text.php:2268
+msgid "Pages"
+msgstr "Seiten"
-#: ../../include/activities.php:50
-msgid "public profile"
-msgstr "öffentliches Profil"
+#: ../../include/widgets.php:103
+msgid "System"
+msgstr "System"
-#: ../../include/activities.php:59
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s hat %2$s auf &ldquo;%3$s&rdquo; geändert"
+#: ../../include/widgets.php:106
+msgid "New App"
+msgstr "Neue App"
-#: ../../include/activities.php:60
-#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Besuche %1$s's %2$s"
+#: ../../include/widgets.php:154
+msgid "Suggestions"
+msgstr "Vorschläge"
+
+#: ../../include/widgets.php:155
+msgid "See more..."
+msgstr "Mehr anzeigen …"
-#: ../../include/activities.php:63
+#: ../../include/widgets.php:175
#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s hat ein aktualisiertes %2$s, %3$s wurde verändert."
+msgid "You have %1$.0f of %2$.0f allowed connections."
+msgstr "Du bist %1$.0f von maximal %2$.0f erlaubten Verbindungen eingegangen."
-#: ../../include/api.php:1338
-msgid "Public Timeline"
-msgstr "Öffentliche Zeitleiste"
+#: ../../include/widgets.php:181
+msgid "Add New Connection"
+msgstr "Neue Verbindung hinzufügen"
-#: ../../include/apps.php:128
-msgid "Site Admin"
-msgstr "Hub-Administration"
+#: ../../include/widgets.php:182
+msgid "Enter channel address"
+msgstr "Adresse des Kanals eingeben"
-#: ../../include/apps.php:129 ../../include/conversation.php:1694
-#: ../../include/nav.php:102
-msgid "Bookmarks"
-msgstr "Lesezeichen"
+#: ../../include/widgets.php:183
+msgid "Examples: bob@example.com, https://example.com/barbara"
+msgstr "Beispiele: bob@beispiel.com, http://beispiel.com/barbara"
-#: ../../include/apps.php:130
-msgid "Address Book"
-msgstr "Adressbuch"
+#: ../../include/widgets.php:199
+msgid "Notes"
+msgstr "Notizen"
-#: ../../include/apps.php:131 ../../include/nav.php:110 ../../boot.php:1602
-msgid "Login"
-msgstr "Anmelden"
+#: ../../include/widgets.php:273
+msgid "Remove term"
+msgstr "Eintrag löschen"
-#: ../../include/apps.php:133 ../../include/nav.php:182
-msgid "Grid"
-msgstr "Grid"
+#: ../../include/widgets.php:281 ../../include/features.php:84
+msgid "Saved Searches"
+msgstr "Gespeicherte Suchanfragen"
-#: ../../include/apps.php:137 ../../include/nav.php:185
-msgid "Channel Home"
-msgstr "Mein Kanal"
+#: ../../include/widgets.php:282 ../../include/group.php:316
+msgid "add"
+msgstr "hinzufügen"
-#: ../../include/apps.php:140 ../../include/conversation.php:1667
-#: ../../include/conversation.php:1670 ../../include/nav.php:204
-msgid "Events"
-msgstr "Termine"
+#: ../../include/widgets.php:310 ../../include/contact_widgets.php:53
+#: ../../include/features.php:98
+msgid "Saved Folders"
+msgstr "Gespeicherte Ordner"
-#: ../../include/apps.php:141 ../../include/nav.php:170
-msgid "Directory"
-msgstr "Verzeichnis"
+#: ../../include/widgets.php:313 ../../include/widgets.php:432
+#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94
+msgid "Everything"
+msgstr "Alles"
-#: ../../include/apps.php:143 ../../include/nav.php:196
-msgid "Mail"
-msgstr "Mail"
+#: ../../include/widgets.php:354
+msgid "Archives"
+msgstr "Archive"
-#: ../../include/apps.php:146 ../../include/nav.php:96
-msgid "Chat"
-msgstr "Chat"
+#: ../../include/widgets.php:516
+msgid "Refresh"
+msgstr "Aktualisieren"
-#: ../../include/apps.php:148
-msgid "Probe"
-msgstr "Testen"
+#: ../../include/widgets.php:556
+msgid "Account settings"
+msgstr "Konto-Einstellungen"
-#: ../../include/apps.php:149
-msgid "Suggest"
-msgstr "Empfehlen"
+#: ../../include/widgets.php:562
+msgid "Channel settings"
+msgstr "Kanal-Einstellungen"
-#: ../../include/apps.php:150
-msgid "Random Channel"
-msgstr "Zufälliger Kanal"
+#: ../../include/widgets.php:571
+msgid "Additional features"
+msgstr "Zusätzliche Funktionen"
-#: ../../include/apps.php:151
-msgid "Invite"
-msgstr "Einladen"
+#: ../../include/widgets.php:578
+msgid "Feature/Addon settings"
+msgstr "Plugin-Einstellungen"
-#: ../../include/apps.php:152 ../../include/widgets.php:1338
-msgid "Features"
-msgstr "Funktionen"
+#: ../../include/widgets.php:584
+msgid "Display settings"
+msgstr "Anzeige-Einstellungen"
-#: ../../include/apps.php:154
-msgid "Post"
-msgstr "Beitrag schreiben"
+#: ../../include/widgets.php:591
+msgid "Manage locations"
+msgstr "Klon-Adressen verwalten"
-#: ../../include/apps.php:252
-msgid "Install"
-msgstr "Installieren"
+#: ../../include/widgets.php:600
+msgid "Export channel"
+msgstr "Kanal exportieren"
-#: ../../include/apps.php:257
-msgid "Purchase"
-msgstr "Kaufen"
+#: ../../include/widgets.php:607
+msgid "Connected apps"
+msgstr "Verbundene Apps"
-#: ../../include/network.php:659
-msgid "view full size"
-msgstr "In Vollbildansicht anschauen"
+#: ../../include/widgets.php:622
+msgid "Premium Channel Settings"
+msgstr "Premium-Kanal-Einstellungen"
-#: ../../include/network.php:1827 ../../include/enotify.php:57
-msgid "$Projectname Notification"
-msgstr "$Projectname-Benachrichtigung"
+#: ../../include/widgets.php:651
+msgid "Private Mail Menu"
+msgstr "Private Nachrichten"
-#: ../../include/network.php:1828 ../../include/enotify.php:58
-msgid "$projectname"
-msgstr "$projectname"
+#: ../../include/widgets.php:653
+msgid "Combined View"
+msgstr "Kombinierte Anzeige"
-#: ../../include/network.php:1830 ../../include/enotify.php:60
-msgid "Thank You,"
-msgstr "Danke."
+#: ../../include/widgets.php:658 ../../include/nav.php:196
+msgid "Inbox"
+msgstr "Eingang"
-#: ../../include/network.php:1832 ../../include/enotify.php:62
-#, php-format
-msgid "%s Administrator"
-msgstr "der Administrator von %s"
+#: ../../include/widgets.php:663 ../../include/nav.php:197
+msgid "Outbox"
+msgstr "Ausgang"
-#: ../../include/network.php:1889
-msgid "No Subject"
-msgstr "Kein Betreff"
+#: ../../include/widgets.php:668 ../../include/nav.php:198
+msgid "New Message"
+msgstr "Neue Nachricht"
-#: ../../include/bb2diaspora.php:398
-msgid "Attachments:"
-msgstr "Anhänge:"
+#: ../../include/widgets.php:685 ../../include/widgets.php:697
+msgid "Conversations"
+msgstr "Konversationen"
-#: ../../include/bb2diaspora.php:487 ../../include/event.php:22
-#: ../../include/text.php:1437
-msgid "l F d, Y \\@ g:i A"
-msgstr "l, d. F Y, H:i"
+#: ../../include/widgets.php:689
+msgid "Received Messages"
+msgstr "Erhaltene Nachrichten"
-#: ../../include/bb2diaspora.php:489
-msgid "$Projectname event notification:"
-msgstr "$Projectname-Terminbenachrichtigung:"
+#: ../../include/widgets.php:693
+msgid "Sent Messages"
+msgstr "Gesendete Nachrichten"
-#: ../../include/bb2diaspora.php:493 ../../include/event.php:30
-#: ../../include/text.php:1441
-msgid "Starts:"
-msgstr "Beginnt:"
+#: ../../include/widgets.php:707
+msgid "No messages."
+msgstr "Keine Nachrichten."
-#: ../../include/bb2diaspora.php:501 ../../include/event.php:40
-#: ../../include/text.php:1445
-msgid "Finishes:"
-msgstr "Endet:"
+#: ../../include/widgets.php:725
+msgid "Delete conversation"
+msgstr "Unterhaltung löschen"
+
+#: ../../include/widgets.php:751
+msgid "Events Menu"
+msgstr "Kalendermenü"
+
+#: ../../include/widgets.php:752
+msgid "Day View"
+msgstr "Tagesansicht"
+
+#: ../../include/widgets.php:753
+msgid "Week View"
+msgstr "Wochenansicht"
+
+#: ../../include/widgets.php:754
+msgid "Month View"
+msgstr "Monatsansicht"
+
+#: ../../include/widgets.php:766
+msgid "Events Tools"
+msgstr "Kalenderwerkzeuge"
+
+#: ../../include/widgets.php:767
+msgid "Export Calendar"
+msgstr "Kalender exportieren"
+
+#: ../../include/widgets.php:768
+msgid "Import Calendar"
+msgstr "Kalender importieren"
+
+#: ../../include/widgets.php:842 ../../include/conversation.php:1662
+#: ../../include/conversation.php:1665
+msgid "Chatrooms"
+msgstr "Chaträume"
+
+#: ../../include/widgets.php:846
+msgid "Overview"
+msgstr "Ãœbersicht"
+
+#: ../../include/widgets.php:853
+msgid "Chat Members"
+msgstr "Chatmitglieder"
+
+#: ../../include/widgets.php:876
+msgid "Bookmarked Chatrooms"
+msgstr "Gespeicherte Chatrooms"
+
+#: ../../include/widgets.php:899
+msgid "Suggested Chatrooms"
+msgstr "Chatraum-Vorschläge"
+
+#: ../../include/widgets.php:1044 ../../include/widgets.php:1156
+msgid "photo/image"
+msgstr "Foto/Bild"
-#: ../../include/bbcode.php:123 ../../include/bbcode.php:801
-#: ../../include/bbcode.php:804 ../../include/bbcode.php:809
-#: ../../include/bbcode.php:812 ../../include/bbcode.php:815
-#: ../../include/bbcode.php:818 ../../include/bbcode.php:823
-#: ../../include/bbcode.php:826 ../../include/bbcode.php:831
-#: ../../include/bbcode.php:834 ../../include/bbcode.php:837
-#: ../../include/bbcode.php:840
+#: ../../include/widgets.php:1099
+msgid "Click to show more"
+msgstr "Klick, um mehr anzuzeigen"
+
+#: ../../include/widgets.php:1250
+msgid "Rating Tools"
+msgstr "Bewertungswerkzeuge"
+
+#: ../../include/widgets.php:1254 ../../include/widgets.php:1256
+msgid "Rate Me"
+msgstr "Bewerte mich"
+
+#: ../../include/widgets.php:1259
+msgid "View Ratings"
+msgstr "Bewertungen ansehen"
+
+#: ../../include/widgets.php:1316
+msgid "Forums"
+msgstr "Foren"
+
+#: ../../include/widgets.php:1345
+msgid "Tasks"
+msgstr "Aufgaben"
+
+#: ../../include/widgets.php:1354
+msgid "Documentation"
+msgstr "Dokumentation"
+
+#: ../../include/widgets.php:1356
+msgid "Project/Site Information"
+msgstr "Informationen über das Projekt und diesen Hub"
+
+#: ../../include/widgets.php:1357
+msgid "For Members"
+msgstr "Für Mitglieder"
+
+#: ../../include/widgets.php:1358
+msgid "For Administrators"
+msgstr "Für Administratoren"
+
+#: ../../include/widgets.php:1359
+msgid "For Developers"
+msgstr "Für Entwickler"
+
+#: ../../include/widgets.php:1383 ../../include/widgets.php:1421
+msgid "Member registrations waiting for confirmation"
+msgstr "Nutzer-Anmeldungen, die auf Bestätigung warten"
+
+#: ../../include/widgets.php:1389
+msgid "Inspect queue"
+msgstr "Warteschlange kontrollieren"
+
+#: ../../include/widgets.php:1391
+msgid "DB updates"
+msgstr "DB-Aktualisierungen"
+
+#: ../../include/widgets.php:1416 ../../include/nav.php:216
+msgid "Admin"
+msgstr "Administration"
+
+#: ../../include/widgets.php:1417
+msgid "Plugin Features"
+msgstr "Plug-In Funktionen"
+
+#: ../../include/follow.php:27
+msgid "Channel is blocked on this site."
+msgstr "Der Kanal ist auf dieser Seite blockiert "
+
+#: ../../include/follow.php:32
+msgid "Channel location missing."
+msgstr "Adresse des Kanals fehlt."
+
+#: ../../include/follow.php:81
+msgid "Response from remote channel was incomplete."
+msgstr "Antwort des entfernten Kanals war unvollständig."
+
+#: ../../include/follow.php:98
+msgid "Channel was deleted and no longer exists."
+msgstr "Kanal wurde gelöscht und existiert nicht mehr."
+
+#: ../../include/follow.php:154 ../../include/follow.php:190
+msgid "Protocol disabled."
+msgstr "Protokoll deaktiviert."
+
+#: ../../include/follow.php:178
+msgid "Channel discovery failed."
+msgstr "Kanalsuche fehlgeschlagen"
+
+#: ../../include/follow.php:216
+msgid "Cannot connect to yourself."
+msgstr "Du kannst Dich nicht mit Dir selbst verbinden."
+
+#: ../../include/bookmarks.php:35
+#, php-format
+msgid "%1$s's bookmarks"
+msgstr "%1$ss Lesezeichen"
+
+#: ../../include/api.php:1336
+msgid "Public Timeline"
+msgstr "Öffentliche Zeitleiste"
+
+#: ../../include/bbcode.php:123 ../../include/bbcode.php:844
+#: ../../include/bbcode.php:847 ../../include/bbcode.php:852
+#: ../../include/bbcode.php:855 ../../include/bbcode.php:858
+#: ../../include/bbcode.php:861 ../../include/bbcode.php:866
+#: ../../include/bbcode.php:869 ../../include/bbcode.php:874
+#: ../../include/bbcode.php:877 ../../include/bbcode.php:880
+#: ../../include/bbcode.php:883
msgid "Image/photo"
msgstr "Bild/Foto"
-#: ../../include/bbcode.php:162 ../../include/bbcode.php:851
+#: ../../include/bbcode.php:162 ../../include/bbcode.php:894
msgid "Encrypted content"
msgstr "Verschlüsselter Inhalt"
-#: ../../include/bbcode.php:179
+#: ../../include/bbcode.php:178
#, php-format
msgid "Install %s element: "
msgstr "Element %s installieren: "
-#: ../../include/bbcode.php:183
+#: ../../include/bbcode.php:182
#, php-format
msgid ""
"This post contains an installable %s element, however you lack permissions "
"to install it on this site."
msgstr "Dieser Beitrag beinhaltet ein installierbares %s Element, aber Du hast nicht die nötigen Rechte, um es auf diesem Hub zu installieren."
-#: ../../include/bbcode.php:255
+#: ../../include/bbcode.php:254
#, php-format
msgid "%1$s wrote the following %2$s %3$s"
msgstr "%1$s schrieb den folgenden %2$s %3$s"
-#: ../../include/bbcode.php:545
+#: ../../include/bbcode.php:331 ../../include/bbcode.php:339
+msgid "Click to open/close"
+msgstr "Klicke zum Öffnen/Schließen"
+
+#: ../../include/bbcode.php:339
+msgid "spoiler"
+msgstr "Spoiler"
+
+#: ../../include/bbcode.php:585
msgid "Different viewers will see this text differently"
msgstr "Verschiedene Betrachter werden diesen Text unterschiedlich sehen"
-#: ../../include/bbcode.php:762
-msgid "$1 spoiler"
-msgstr "$1 Spoiler"
-
-#: ../../include/bbcode.php:789
+#: ../../include/bbcode.php:832
msgid "$1 wrote:"
msgstr "$1 schrieb:"
+#: ../../include/dir_fns.php:141
+msgid "Directory Options"
+msgstr "Verzeichnisoptionen"
+
+#: ../../include/dir_fns.php:143
+msgid "Safe Mode"
+msgstr "Sicherer Modus"
+
+#: ../../include/dir_fns.php:144
+msgid "Public Forums Only"
+msgstr "Nur öffentliche Foren"
+
+#: ../../include/dir_fns.php:145
+msgid "This Website Only"
+msgstr "Nur dieser Hub"
+
+#: ../../include/security.php:383
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde."
+
+#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1702
+msgid "Logout"
+msgstr "Abmelden"
+
+#: ../../include/nav.php:82 ../../include/nav.php:113
+msgid "End this session"
+msgstr "Beende diese Sitzung"
+
+#: ../../include/nav.php:85 ../../include/nav.php:144
+msgid "Home"
+msgstr "Home"
+
+#: ../../include/nav.php:85
+msgid "Your posts and conversations"
+msgstr "Deine Beiträge und Unterhaltungen"
+
+#: ../../include/nav.php:86
+msgid "Your profile page"
+msgstr "Deine Profilseite"
+
+#: ../../include/nav.php:88
+msgid "Manage/Edit profiles"
+msgstr "Profile verwalten"
+
+#: ../../include/nav.php:90 ../../include/channel.php:941
+msgid "Edit Profile"
+msgstr "Profile bearbeiten"
+
+#: ../../include/nav.php:90
+msgid "Edit your profile"
+msgstr "Profil bearbeiten"
+
+#: ../../include/nav.php:92
+msgid "Your photos"
+msgstr "Deine Bilder"
+
+#: ../../include/nav.php:93
+msgid "Your files"
+msgstr "Deine Dateien"
+
+#: ../../include/nav.php:96
+msgid "Your chatrooms"
+msgstr "Deine Chaträume"
+
+#: ../../include/nav.php:102 ../../include/conversation.php:1675
+msgid "Bookmarks"
+msgstr "Lesezeichen"
+
+#: ../../include/nav.php:102
+msgid "Your bookmarks"
+msgstr "Deine Lesezeichen"
+
+#: ../../include/nav.php:106
+msgid "Your webpages"
+msgstr "Deine Webseiten"
+
+#: ../../include/nav.php:110
+msgid "Sign in"
+msgstr "Anmelden"
+
+#: ../../include/nav.php:127
+#, php-format
+msgid "%s - click to logout"
+msgstr "%s - Klick zum Abmelden"
+
+#: ../../include/nav.php:130
+msgid "Remote authentication"
+msgstr "Ãœber Konto auf anderem Server einloggen"
+
+#: ../../include/nav.php:130
+msgid "Click to authenticate to your home hub"
+msgstr "Klicke, um Dich über Deinen Heimat-Server zu authentifizieren"
+
+#: ../../include/nav.php:144
+msgid "Home Page"
+msgstr "Homepage"
+
+#: ../../include/nav.php:147
+msgid "Create an account"
+msgstr "Erzeuge ein Konto"
+
+#: ../../include/nav.php:159
+msgid "Help and documentation"
+msgstr "Hilfe und Dokumentation"
+
+#: ../../include/nav.php:163
+msgid "Applications, utilities, links, games"
+msgstr "Anwendungen (Apps), Zubehör, Links, Spiele"
+
+#: ../../include/nav.php:165
+msgid "Search site @name, #tag, ?docs, content"
+msgstr "Hub durchsuchen: @Name. #Schlagwort, ?Dokumentation, Inhalt"
+
+#: ../../include/nav.php:167
+msgid "Channel Directory"
+msgstr "Kanal-Verzeichnis"
+
+#: ../../include/nav.php:179
+msgid "Your grid"
+msgstr "Dein Grid"
+
+#: ../../include/nav.php:180
+msgid "Mark all grid notifications seen"
+msgstr "Alle Grid-Benachrichtigungen als angesehen markieren"
+
+#: ../../include/nav.php:182
+msgid "Channel home"
+msgstr "Mein Kanal"
+
+#: ../../include/nav.php:183
+msgid "Mark all channel notifications seen"
+msgstr "Markiere alle Kanal-Benachrichtigungen als angesehen"
+
+#: ../../include/nav.php:189
+msgid "Notices"
+msgstr "Benachrichtigungen"
+
+#: ../../include/nav.php:189
+msgid "Notifications"
+msgstr "Benachrichtigungen"
+
+#: ../../include/nav.php:190
+msgid "See all notifications"
+msgstr "Alle Benachrichtigungen ansehen"
+
+#: ../../include/nav.php:193
+msgid "Private mail"
+msgstr "Persönliche Mail"
+
+#: ../../include/nav.php:194
+msgid "See all private messages"
+msgstr "Alle persönlichen Nachrichten ansehen"
+
+#: ../../include/nav.php:195
+msgid "Mark all private messages seen"
+msgstr "Markiere alle persönlichen Nachrichten als gesehen"
+
+#: ../../include/nav.php:201
+msgid "Event Calendar"
+msgstr "Terminkalender"
+
+#: ../../include/nav.php:202
+msgid "See all events"
+msgstr "Alle Termine ansehen"
+
+#: ../../include/nav.php:203
+msgid "Mark all events seen"
+msgstr "Markiere alle Termine als gesehen"
+
+#: ../../include/nav.php:206
+msgid "Manage Your Channels"
+msgstr "Verwalte Deine Kanäle"
+
+#: ../../include/nav.php:208
+msgid "Account/Channel Settings"
+msgstr "Konto-/Kanal-Einstellungen"
+
+#: ../../include/nav.php:216
+msgid "Site Setup and Configuration"
+msgstr "Seiten-Einrichtung und -Konfiguration"
+
+#: ../../include/nav.php:247 ../../include/conversation.php:851
+msgid "Loading..."
+msgstr "Lädt ..."
+
+#: ../../include/nav.php:252
+msgid "@name, #tag, ?doc, content"
+msgstr "@Name, #Schlagwort, ?Dokumentation, Inhalt"
+
+#: ../../include/nav.php:253
+msgid "Please wait..."
+msgstr "Bitte warten..."
+
+#: ../../include/connections.php:95
+msgid "New window"
+msgstr "Neues Fenster"
+
+#: ../../include/connections.php:96
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Öffne die markierte Adresse in einem neuen Browserfenster oder Tab"
+
+#: ../../include/connections.php:214
+#, php-format
+msgid "User '%s' deleted"
+msgstr "Benutzer '%s' gelöscht"
+
+#: ../../include/contact_widgets.php:11
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "%d Einladung verfügbar"
+msgstr[1] "%d Einladungen verfügbar"
+
+#: ../../include/contact_widgets.php:19
+msgid "Find Channels"
+msgstr "Finde Kanäle"
+
+#: ../../include/contact_widgets.php:20
+msgid "Enter name or interest"
+msgstr "Name oder Interessen eingeben"
+
+#: ../../include/contact_widgets.php:21
+msgid "Connect/Follow"
+msgstr "Verbinden/Folgen"
+
+#: ../../include/contact_widgets.php:22
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "Beispiele: Robert Morgenstein, Angeln"
+
+#: ../../include/contact_widgets.php:26
+msgid "Random Profile"
+msgstr "Zufallsprofil"
+
+#: ../../include/contact_widgets.php:27
+msgid "Invite Friends"
+msgstr "Lade Freunde ein"
+
+#: ../../include/contact_widgets.php:29
+msgid "Advanced example: name=fred and country=iceland"
+msgstr "Fortgeschrittenes Beispiel: name=fred and country=iceland"
+
+#: ../../include/contact_widgets.php:122
+#, php-format
+msgid "%d connection in common"
+msgid_plural "%d connections in common"
+msgstr[0] "%d gemeinsame Verbindung"
+msgstr[1] "%d gemeinsame Verbindungen"
+
+#: ../../include/contact_widgets.php:127
+msgid "show more"
+msgstr "mehr zeigen"
+
#: ../../include/conversation.php:204
#, php-format
msgid "%1$s is now connected with %2$s"
@@ -7216,11 +7831,6 @@ msgstr "%1$s ist jetzt mit %2$s verbunden"
msgid "%1$s poked %2$s"
msgstr "%1$s stupste %2$s an"
-#: ../../include/conversation.php:243 ../../include/text.php:992
-#: ../../include/text.php:997
-msgid "poked"
-msgstr "stupste"
-
#: ../../include/conversation.php:691
#, php-format
msgid "View %s's profile @ %s"
@@ -7238,459 +7848,626 @@ msgstr "Gespeichert unter:"
msgid "View in context"
msgstr "Im Zusammenhang anschauen"
-#: ../../include/conversation.php:850
+#: ../../include/conversation.php:847
msgid "remove"
msgstr "lösche"
-#: ../../include/conversation.php:854 ../../include/nav.php:256
-msgid "Loading..."
-msgstr "Lädt ..."
-
-#: ../../include/conversation.php:855
+#: ../../include/conversation.php:852
msgid "Delete Selected Items"
msgstr "Lösche die ausgewählten Elemente"
-#: ../../include/conversation.php:953
+#: ../../include/conversation.php:948
msgid "View Source"
msgstr "Quelle anzeigen"
-#: ../../include/conversation.php:954
+#: ../../include/conversation.php:949
msgid "Follow Thread"
msgstr "Unterhaltung folgen"
-#: ../../include/conversation.php:955
+#: ../../include/conversation.php:950
msgid "Unfollow Thread"
msgstr "Unterhaltung nicht mehr folgen"
-#: ../../include/conversation.php:960
+#: ../../include/conversation.php:955
msgid "Activity/Posts"
msgstr "Aktivitäten/Beiträge"
-#: ../../include/conversation.php:962
+#: ../../include/conversation.php:957
msgid "Edit Connection"
msgstr "Verbindung bearbeiten"
-#: ../../include/conversation.php:963
+#: ../../include/conversation.php:958
msgid "Message"
msgstr "Nachricht"
-#: ../../include/conversation.php:1080
+#: ../../include/conversation.php:1075
#, php-format
msgid "%s likes this."
msgstr "%s gefällt das."
-#: ../../include/conversation.php:1080
+#: ../../include/conversation.php:1075
#, php-format
msgid "%s doesn't like this."
msgstr "%s gefällt das nicht."
-#: ../../include/conversation.php:1084
+#: ../../include/conversation.php:1079
#, php-format
msgid "<span %1$s>%2$d people</span> like this."
msgid_plural "<span %1$s>%2$d people</span> like this."
msgstr[0] "<span %1$s>%2$d Person</span> gefällt das."
msgstr[1] "<span %1$s>%2$d Leuten</span> gefällt das."
-#: ../../include/conversation.php:1086
+#: ../../include/conversation.php:1081
#, php-format
msgid "<span %1$s>%2$d people</span> don't like this."
msgid_plural "<span %1$s>%2$d people</span> don't like this."
msgstr[0] "<span %1$s>%2$d Person</span> gefällt das nicht."
msgstr[1] "<span %1$s>%2$d Leuten</span> gefällt das nicht."
-#: ../../include/conversation.php:1092
+#: ../../include/conversation.php:1087
msgid "and"
msgstr "und"
-#: ../../include/conversation.php:1095
+#: ../../include/conversation.php:1090
#, php-format
msgid ", and %d other people"
msgid_plural ", and %d other people"
msgstr[0] ""
msgstr[1] ", und %d andere"
-#: ../../include/conversation.php:1096
+#: ../../include/conversation.php:1091
#, php-format
msgid "%s like this."
msgstr "%s gefällt das."
-#: ../../include/conversation.php:1096
+#: ../../include/conversation.php:1091
#, php-format
msgid "%s don't like this."
msgstr "%s gefällt das nicht."
-#: ../../include/conversation.php:1169
-msgid "Visible to <strong>everybody</strong>"
-msgstr "Sichtbar für <strong>jeden</strong>"
-
-#: ../../include/conversation.php:1171
-msgid "Please enter a video link/URL:"
-msgstr "Gib einen Video-Link/URL ein:"
+#: ../../include/conversation.php:1130
+msgid "Set your location"
+msgstr "Standort"
-#: ../../include/conversation.php:1172
-msgid "Please enter an audio link/URL:"
-msgstr "Gib einen Audio-Link/URL ein:"
+#: ../../include/conversation.php:1131
+msgid "Clear browser location"
+msgstr "Browser-Standort löschen"
-#: ../../include/conversation.php:1173
+#: ../../include/conversation.php:1177
msgid "Tag term:"
msgstr "Schlagwort:"
-#: ../../include/conversation.php:1175
+#: ../../include/conversation.php:1178
msgid "Where are you right now?"
msgstr "Wo bist Du jetzt grade?"
-#: ../../include/conversation.php:1211
+#: ../../include/conversation.php:1210
msgid "Page link name"
msgstr "Link zur Seite"
-#: ../../include/conversation.php:1214
+#: ../../include/conversation.php:1213
msgid "Post as"
msgstr "Veröffentlichen als"
-#: ../../include/conversation.php:1222
-msgid "upload photo"
-msgstr "Foto hochladen"
-
-#: ../../include/conversation.php:1224
-msgid "attach file"
-msgstr "Datei anfügen"
-
-#: ../../include/conversation.php:1226
-msgid "web link"
-msgstr "Web-Link"
-
-#: ../../include/conversation.php:1227
-msgid "Insert video link"
-msgstr "Video-Link einfügen"
-
-#: ../../include/conversation.php:1228
-msgid "video link"
-msgstr "Video-Link"
-
-#: ../../include/conversation.php:1229
-msgid "Insert audio link"
-msgstr "Audio-Link einfügen"
-
-#: ../../include/conversation.php:1230
-msgid "audio link"
-msgstr "Audio-Link"
-
-#: ../../include/conversation.php:1232
-msgid "set location"
-msgstr "Standort"
-
-#: ../../include/conversation.php:1237
-msgid "clear location"
-msgstr "Standort löschen"
+#: ../../include/conversation.php:1223
+msgid "Toggle voting"
+msgstr "Umfragewerkzeug aktivieren"
-#: ../../include/conversation.php:1246
-msgid "permissions"
-msgstr "Berechtigungen"
+#: ../../include/conversation.php:1231
+msgid "Categories (optional, comma-separated list)"
+msgstr "Kategorien (optional, kommagetrennte Liste)"
-#: ../../include/conversation.php:1272
+#: ../../include/conversation.php:1254
msgid "Set publish date"
msgstr "Veröffentlichungsdatum festlegen"
-#: ../../include/conversation.php:1521
+#: ../../include/conversation.php:1258
+msgid "OK"
+msgstr "Ok"
+
+#: ../../include/conversation.php:1503
msgid "Discover"
msgstr "Entdecken"
-#: ../../include/conversation.php:1524
+#: ../../include/conversation.php:1506
msgid "Imported public streams"
msgstr "Importierte öffentliche Beiträge"
-#: ../../include/conversation.php:1529
+#: ../../include/conversation.php:1511
msgid "Commented Order"
msgstr "Neueste Kommentare"
-#: ../../include/conversation.php:1532
+#: ../../include/conversation.php:1514
msgid "Sort by Comment Date"
msgstr "Nach Kommentardatum sortiert"
-#: ../../include/conversation.php:1536
+#: ../../include/conversation.php:1518
msgid "Posted Order"
msgstr "Neueste Beiträge"
-#: ../../include/conversation.php:1539
+#: ../../include/conversation.php:1521
msgid "Sort by Post Date"
msgstr "Nach Beitragsdatum sortiert"
-#: ../../include/conversation.php:1547
+#: ../../include/conversation.php:1529
msgid "Posts that mention or involve you"
msgstr "Beiträge mit Beteiligung Deinerseits"
-#: ../../include/conversation.php:1556
+#: ../../include/conversation.php:1538
msgid "Activity Stream - by date"
msgstr "Activity Stream – nach Datum sortiert"
-#: ../../include/conversation.php:1562
+#: ../../include/conversation.php:1544
msgid "Starred"
msgstr "Markiert"
-#: ../../include/conversation.php:1565
+#: ../../include/conversation.php:1547
msgid "Favourite Posts"
msgstr "Markierte Beiträge"
-#: ../../include/conversation.php:1572
+#: ../../include/conversation.php:1554
msgid "Spam"
msgstr "Spam"
-#: ../../include/conversation.php:1575
+#: ../../include/conversation.php:1557
msgid "Posts flagged as SPAM"
msgstr "Nachrichten, die als SPAM markiert wurden"
-#: ../../include/conversation.php:1632
+#: ../../include/conversation.php:1614
msgid "Status Messages and Posts"
msgstr "Statusnachrichten und Beiträge"
-#: ../../include/conversation.php:1641
+#: ../../include/conversation.php:1623
msgid "About"
msgstr "Ãœber"
-#: ../../include/conversation.php:1644
+#: ../../include/conversation.php:1626
msgid "Profile Details"
msgstr "Profil-Details"
-#: ../../include/conversation.php:1653 ../../include/photos.php:506
+#: ../../include/conversation.php:1635 ../../include/photos.php:502
msgid "Photo Albums"
msgstr "Fotoalben"
-#: ../../include/conversation.php:1660
+#: ../../include/conversation.php:1642
msgid "Files and Storage"
msgstr "Dateien und Speicher"
-#: ../../include/conversation.php:1681 ../../include/conversation.php:1684
-#: ../../include/widgets.php:794
-msgid "Chatrooms"
-msgstr "Chaträume"
-
-#: ../../include/conversation.php:1697
+#: ../../include/conversation.php:1678
msgid "Saved Bookmarks"
msgstr "Gespeicherte Lesezeichen"
-#: ../../include/conversation.php:1707
+#: ../../include/conversation.php:1688
msgid "Manage Webpages"
msgstr "Webseiten verwalten"
-#: ../../include/conversation.php:1766
+#: ../../include/conversation.php:1747
msgctxt "noun"
msgid "Attending"
msgid_plural "Attending"
msgstr[0] "Zusage"
msgstr[1] "Zusagen"
-#: ../../include/conversation.php:1769
+#: ../../include/conversation.php:1750
msgctxt "noun"
msgid "Not Attending"
msgid_plural "Not Attending"
msgstr[0] "Absage"
msgstr[1] "Absagen"
-#: ../../include/conversation.php:1772
+#: ../../include/conversation.php:1753
msgctxt "noun"
msgid "Undecided"
msgid_plural "Undecided"
msgstr[0] " Unentschlossen"
msgstr[1] "Unentschlossene"
-#: ../../include/conversation.php:1775
+#: ../../include/conversation.php:1756
msgctxt "noun"
msgid "Agree"
msgid_plural "Agrees"
msgstr[0] "Zustimmung"
msgstr[1] "Zustimmungen"
-#: ../../include/conversation.php:1778
+#: ../../include/conversation.php:1759
msgctxt "noun"
msgid "Disagree"
msgid_plural "Disagrees"
msgstr[0] "Ablehnung"
msgstr[1] "Ablehnungen"
-#: ../../include/conversation.php:1781
+#: ../../include/conversation.php:1762
msgctxt "noun"
msgid "Abstain"
msgid_plural "Abstains"
msgstr[0] "Enthaltung"
msgstr[1] "Enthaltungen"
-#: ../../include/bookmarks.php:35
-#, php-format
-msgid "%1$s's bookmarks"
-msgstr "%1$ss Lesezeichen"
-
-#: ../../include/chat.php:23
-msgid "Missing room name"
-msgstr "Der Chatraum hat keinen Namen"
-
-#: ../../include/chat.php:32
-msgid "Duplicate room name"
-msgstr "Name des Chatraums bereits vergeben"
-
-#: ../../include/chat.php:82 ../../include/chat.php:90
-msgid "Invalid room specifier."
-msgstr "Ungültiger Raumbezeichner."
-
-#: ../../include/chat.php:122
-msgid "Room not found."
-msgstr "Chatraum konnte nicht gefunden werden."
-
-#: ../../include/chat.php:143
-msgid "Room is full"
-msgstr "Der Chatraum ist voll"
-
-#: ../../include/Contact.php:118
-msgid "New window"
-msgstr "Neues Fenster"
-
-#: ../../include/Contact.php:119
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Öffne die markierte Adresse in einem neuen Browserfenster oder Tab"
-
-#: ../../include/Contact.php:237
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Benutzer '%s' gelöscht"
-
-#: ../../include/auth.php:105
-msgid "Logged out."
-msgstr "Ausgeloggt."
-
-#: ../../include/auth.php:212
-msgid "Failed authentication"
-msgstr "Authentifizierung fehlgeschlagen"
-
-#: ../../include/security.php:383
-msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde."
-
-#: ../../include/contact_selectors.php:56
+#: ../../include/selectors.php:30
msgid "Frequently"
msgstr "Häufig"
-#: ../../include/contact_selectors.php:57
+#: ../../include/selectors.php:31
msgid "Hourly"
msgstr "Stündlich"
-#: ../../include/contact_selectors.php:58
+#: ../../include/selectors.php:32
msgid "Twice daily"
msgstr "Zwei Mal am Tag"
-#: ../../include/contact_selectors.php:59
+#: ../../include/selectors.php:33
msgid "Daily"
msgstr "Täglich"
-#: ../../include/contact_selectors.php:60
+#: ../../include/selectors.php:34
msgid "Weekly"
msgstr "Wöchentlich"
-#: ../../include/contact_selectors.php:61
+#: ../../include/selectors.php:35
msgid "Monthly"
msgstr "Monatlich"
-#: ../../include/contact_selectors.php:76
-#: ../../include/contact_selectors.php:77
-msgid "Friendica"
-msgstr "Friendica"
+#: ../../include/selectors.php:49
+msgid "Currently Male"
+msgstr "Momentan männlich"
-#: ../../include/contact_selectors.php:78
-msgid "OStatus"
-msgstr "OStatus"
+#: ../../include/selectors.php:49
+msgid "Currently Female"
+msgstr "Momentan weiblich"
-#: ../../include/contact_selectors.php:79
-msgid "GNU-Social"
-msgstr "GNU-Social"
+#: ../../include/selectors.php:49
+msgid "Mostly Male"
+msgstr "Größtenteils männlich"
-#: ../../include/contact_selectors.php:80
-msgid "RSS/Atom"
-msgstr "RSS/Atom"
+#: ../../include/selectors.php:49
+msgid "Mostly Female"
+msgstr "Größtenteils weiblich"
-#: ../../include/contact_selectors.php:82
-msgid "Diaspora"
-msgstr "Diaspora"
+#: ../../include/selectors.php:49
+msgid "Transgender"
+msgstr "Transsexuell"
-#: ../../include/contact_selectors.php:83
-msgid "Facebook"
-msgstr "Facebook"
+#: ../../include/selectors.php:49
+msgid "Intersex"
+msgstr "Zwischengeschlechtlich"
-#: ../../include/contact_selectors.php:84
-msgid "Zot"
-msgstr "Zot!"
+#: ../../include/selectors.php:49
+msgid "Transsexual"
+msgstr "Transsexuell"
-#: ../../include/contact_selectors.php:85
-msgid "LinkedIn"
-msgstr "LinkedIn"
+#: ../../include/selectors.php:49
+msgid "Hermaphrodite"
+msgstr "Zwitter"
-#: ../../include/contact_selectors.php:86
-msgid "XMPP/IM"
-msgstr "XMPP/IM"
+#: ../../include/selectors.php:49
+msgid "Neuter"
+msgstr "Geschlechtslos"
-#: ../../include/contact_selectors.php:87
-msgid "MySpace"
-msgstr "MySpace"
+#: ../../include/selectors.php:49
+msgid "Non-specific"
+msgstr "unklar"
+
+#: ../../include/selectors.php:49 ../../include/selectors.php:66
+#: ../../include/selectors.php:104 ../../include/selectors.php:140
+#: ../../include/permissions.php:881
+msgid "Other"
+msgstr "Andere"
+
+#: ../../include/selectors.php:49
+msgid "Undecided"
+msgstr "Unentschieden"
+
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Males"
+msgstr "Männer"
+
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Females"
+msgstr "Frauen"
+
+#: ../../include/selectors.php:85
+msgid "Gay"
+msgstr "Schwul"
+
+#: ../../include/selectors.php:85
+msgid "Lesbian"
+msgstr "Lesbisch"
+
+#: ../../include/selectors.php:85
+msgid "No Preference"
+msgstr "Keine Bevorzugung"
+
+#: ../../include/selectors.php:85
+msgid "Bisexual"
+msgstr "Bisexuell"
+
+#: ../../include/selectors.php:85
+msgid "Autosexual"
+msgstr "Autosexuell"
+
+#: ../../include/selectors.php:85
+msgid "Abstinent"
+msgstr "Enthaltsam"
+
+#: ../../include/selectors.php:85
+msgid "Virgin"
+msgstr "Jungfräulich"
+
+#: ../../include/selectors.php:85
+msgid "Deviant"
+msgstr "Abweichend"
+
+#: ../../include/selectors.php:85
+msgid "Fetish"
+msgstr "Fetisch"
+
+#: ../../include/selectors.php:85
+msgid "Oodles"
+msgstr "Unmengen"
+
+#: ../../include/selectors.php:85
+msgid "Nonsexual"
+msgstr "Sexlos"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Single"
+msgstr "Single"
+
+#: ../../include/selectors.php:123
+msgid "Lonely"
+msgstr "Einsam"
+
+#: ../../include/selectors.php:123
+msgid "Available"
+msgstr "Verfügbar"
+
+#: ../../include/selectors.php:123
+msgid "Unavailable"
+msgstr "Nicht verfügbar"
+
+#: ../../include/selectors.php:123
+msgid "Has crush"
+msgstr "Verguckt"
+
+#: ../../include/selectors.php:123
+msgid "Infatuated"
+msgstr "Verknallt"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Dating"
+msgstr "Lerne gerade jemanden kennen"
+
+#: ../../include/selectors.php:123
+msgid "Unfaithful"
+msgstr "Treulos"
+
+#: ../../include/selectors.php:123
+msgid "Sex Addict"
+msgstr "Sexabhängig"
+
+#: ../../include/selectors.php:123
+msgid "Friends/Benefits"
+msgstr "Freunde/Begünstigte"
+
+#: ../../include/selectors.php:123
+msgid "Casual"
+msgstr "Lose"
+
+#: ../../include/selectors.php:123
+msgid "Engaged"
+msgstr "Verlobt"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Married"
+msgstr "Verheiratet"
+
+#: ../../include/selectors.php:123
+msgid "Imaginarily married"
+msgstr "Gewissermaßen verheiratet"
+
+#: ../../include/selectors.php:123
+msgid "Partners"
+msgstr "Partner"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Cohabiting"
+msgstr "Lebensgemeinschaft"
+
+#: ../../include/selectors.php:123
+msgid "Common law"
+msgstr "Informelle Ehe"
+
+#: ../../include/selectors.php:123
+msgid "Happy"
+msgstr "Glücklich"
+
+#: ../../include/selectors.php:123
+msgid "Not looking"
+msgstr "Nicht Ausschau haltend"
+
+#: ../../include/selectors.php:123
+msgid "Swinger"
+msgstr "Swinger"
+
+#: ../../include/selectors.php:123
+msgid "Betrayed"
+msgstr "Betrogen"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Separated"
+msgstr "Getrennt"
+
+#: ../../include/selectors.php:123
+msgid "Unstable"
+msgstr "Labil"
-#: ../../include/contact_widgets.php:14
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Divorced"
+msgstr "Geschieden"
+
+#: ../../include/selectors.php:123
+msgid "Imaginarily divorced"
+msgstr "Gewissermaßen geschieden"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Widowed"
+msgstr "Verwitwet"
+
+#: ../../include/selectors.php:123
+msgid "Uncertain"
+msgstr "Ungewiss"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "It's complicated"
+msgstr "Es ist kompliziert"
+
+#: ../../include/selectors.php:123
+msgid "Don't care"
+msgstr "Interessiert mich nicht"
+
+#: ../../include/selectors.php:123
+msgid "Ask me"
+msgstr "Frag mich mal"
+
+#: ../../include/PermissionDescription.php:31
+#: ../../include/acl_selectors.php:232
+msgid "Visible to your default audience"
+msgstr "Standard-Sichtbarkeit gemäß Kanaleinstellungen"
+
+#: ../../include/PermissionDescription.php:115
+#: ../../include/acl_selectors.php:268
+msgid "Only me"
+msgstr "Nur ich"
+
+#: ../../include/PermissionDescription.php:116
+msgid "Public"
+msgstr "Öffentlich"
+
+#: ../../include/PermissionDescription.php:117
+msgid "Anybody in the $Projectname network"
+msgstr "Jeder innerhalb des $Projectname Netzwerks"
+
+#: ../../include/PermissionDescription.php:118
#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "%d Einladung verfügbar"
-msgstr[1] "%d Einladungen verfügbar"
+msgid "Any account on %s"
+msgstr "Jedes Nutzerkonto auf %s"
-#: ../../include/contact_widgets.php:22
-msgid "Find Channels"
-msgstr "Finde Kanäle"
+#: ../../include/PermissionDescription.php:119
+msgid "Any of my connections"
+msgstr "Alle meine Verbindungen"
-#: ../../include/contact_widgets.php:23
-msgid "Enter name or interest"
-msgstr "Name oder Interessen eingeben"
+#: ../../include/PermissionDescription.php:120
+msgid "Only connections I specifically allow"
+msgstr "Nur Verbindungen, denen ich es explizit erlaube"
-#: ../../include/contact_widgets.php:24
-msgid "Connect/Follow"
-msgstr "Verbinden/Folgen"
+#: ../../include/PermissionDescription.php:121
+msgid "Anybody authenticated (could include visitors from other networks)"
+msgstr "Jeder, der angemeldet ist (kann Besucher anderer Netzwerke beinhalten)"
-#: ../../include/contact_widgets.php:25
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Beispiele: Robert Morgenstein, Angeln"
+#: ../../include/PermissionDescription.php:122
+msgid "Any connections including those who haven't yet been approved"
+msgstr "Alle Verbindungen einschließlich der noch nicht bestätigten"
-#: ../../include/contact_widgets.php:29
-msgid "Random Profile"
-msgstr "Zufallsprofil"
+#: ../../include/PermissionDescription.php:161
+msgid ""
+"This is your default setting for the audience of your normal stream, and "
+"posts."
+msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner normalen Beiträge (Stream)."
-#: ../../include/contact_widgets.php:30
-msgid "Invite Friends"
-msgstr "Lade Freunde ein"
+#: ../../include/PermissionDescription.php:162
+msgid ""
+"This is your default setting for who can view your default channel profile"
+msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deines Standard-Kanalprofils."
-#: ../../include/contact_widgets.php:32
-msgid "Advanced example: name=fred and country=iceland"
-msgstr "Fortgeschrittenes Beispiel: name=fred and country=iceland"
+#: ../../include/PermissionDescription.php:163
+msgid "This is your default setting for who can view your connections"
+msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Verbindungen."
-#: ../../include/contact_widgets.php:57 ../../include/features.php:97
-#: ../../include/widgets.php:310
-msgid "Saved Folders"
-msgstr "Gespeicherte Ordner"
+#: ../../include/PermissionDescription.php:164
+msgid ""
+"This is your default setting for who can view your file storage and photos"
+msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Dateien und Fotos."
-#: ../../include/contact_widgets.php:60 ../../include/contact_widgets.php:98
-#: ../../include/widgets.php:313
-msgid "Everything"
-msgstr "Alles"
+#: ../../include/PermissionDescription.php:165
+msgid "This is your default setting for the audience of your webpages"
+msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Webseiten."
-#: ../../include/contact_widgets.php:95 ../../include/widgets.php:46
-#: ../../include/taxonomy.php:282
-msgid "Categories"
-msgstr "Kategorien"
+#: ../../include/account.php:28
+msgid "Not a valid email address"
+msgstr "Ungültige E-Mail-Adresse"
+
+#: ../../include/account.php:30
+msgid "Your email domain is not among those allowed on this site"
+msgstr "Deine E-Mail-Adresse ist auf dieser Seite nicht erlaubt"
+
+#: ../../include/account.php:36
+msgid "Your email address is already registered at this site."
+msgstr "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert."
+
+#: ../../include/account.php:68
+msgid "An invitation is required."
+msgstr "Eine Einladung wird benötigt."
-#: ../../include/contact_widgets.php:128
+#: ../../include/account.php:72
+msgid "Invitation could not be verified."
+msgstr "Die Einladung konnte nicht bestätigt werden."
+
+#: ../../include/account.php:122
+msgid "Please enter the required information."
+msgstr "Bitte gib die benötigten Informationen ein."
+
+#: ../../include/account.php:189
+msgid "Failed to store account information."
+msgstr "Speichern der Nutzerkontodaten fehlgeschlagen."
+
+#: ../../include/account.php:249
#, php-format
-msgid "%d connection in common"
-msgid_plural "%d connections in common"
-msgstr[0] "%d gemeinsame Verbindung"
-msgstr[1] "%d gemeinsame Verbindungen"
+msgid "Registration confirmation for %s"
+msgstr "Registrierungsbestätigung für %s"
-#: ../../include/contact_widgets.php:133
-msgid "show more"
-msgstr "mehr zeigen"
+#: ../../include/account.php:315
+#, php-format
+msgid "Registration request at %s"
+msgstr "Registrierungsanfrage auf %s"
+
+#: ../../include/account.php:317 ../../include/account.php:344
+#: ../../include/account.php:404 ../../include/network.php:1871
+msgid "Administrator"
+msgstr "Administrator"
+
+#: ../../include/account.php:339
+msgid "your registration password"
+msgstr "Dein Registrierungspasswort"
+
+#: ../../include/account.php:342 ../../include/account.php:402
+#, php-format
+msgid "Registration details for %s"
+msgstr "Registrierungsdetails für %s"
+
+#: ../../include/account.php:414
+msgid "Account approved."
+msgstr "Nutzerkonto bestätigt."
+
+#: ../../include/account.php:454
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Registrierung für %s wurde widerrufen"
+
+#: ../../include/account.php:506
+msgid "Account verified. Please login."
+msgstr "Nutzerkonto wurde bestätigt. Bitte melde Dich an!"
+
+#: ../../include/account.php:723 ../../include/account.php:725
+msgid "Click here to upgrade."
+msgstr "Klicke hier, um das Upgrade durchzuführen."
+
+#: ../../include/account.php:731
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Diese Aktion überschreitet die Grenzen Ihres Abonnements."
+
+#: ../../include/account.php:736
+msgid "This action is not available under your subscription plan."
+msgstr "Diese Aktion ist in Ihrem Abonnement nicht verfügbar."
#: ../../include/attach.php:247 ../../include/attach.php:333
msgid "Item was not found."
@@ -7754,309 +8531,159 @@ msgstr "Speichern in der Datenbank fehlgeschlagen."
msgid "Empty path"
msgstr "Leere Pfadangabe"
-#: ../../include/datetime.php:136
-msgid "Birthday"
-msgstr "Geburtstag"
-
-#: ../../include/datetime.php:138
-msgid "Age: "
-msgstr "Alter:"
-
-#: ../../include/datetime.php:140
-msgid "YYYY-MM-DD or MM-DD"
-msgstr "JJJJ-MM-TT oder MM-TT"
-
-#: ../../include/datetime.php:273 ../../boot.php:2432
-msgid "never"
-msgstr "Nie"
-
-#: ../../include/datetime.php:279
-msgid "less than a second ago"
-msgstr "Vor weniger als einer Sekunde"
-
-#: ../../include/datetime.php:297
-#, php-format
-msgctxt "e.g. 22 hours ago, 1 minute ago"
-msgid "%1$d %2$s ago"
-msgstr "vor %1$d %2$s"
-
-#: ../../include/datetime.php:308
-msgctxt "relative_date"
-msgid "year"
-msgid_plural "years"
-msgstr[0] "Jahr"
-msgstr[1] "Jahre"
-
-#: ../../include/datetime.php:311
-msgctxt "relative_date"
-msgid "month"
-msgid_plural "months"
-msgstr[0] "Monat"
-msgstr[1] "Monate"
-
-#: ../../include/datetime.php:314
-msgctxt "relative_date"
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "Woche"
-msgstr[1] "Wochen"
-
-#: ../../include/datetime.php:317
-msgctxt "relative_date"
-msgid "day"
-msgid_plural "days"
-msgstr[0] "Tag"
-msgstr[1] "Tage"
-
-#: ../../include/datetime.php:320
-msgctxt "relative_date"
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "Stunde"
-msgstr[1] "Stunden"
-
-#: ../../include/datetime.php:323
-msgctxt "relative_date"
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "Minute"
-msgstr[1] "Minuten"
-
-#: ../../include/datetime.php:326
-msgctxt "relative_date"
-msgid "second"
-msgid_plural "seconds"
-msgstr[0] "Sekunde"
-msgstr[1] "Sekunden"
-
-#: ../../include/datetime.php:563
-#, php-format
-msgid "%1$s's birthday"
-msgstr "%1$ss Geburtstag"
-
-#: ../../include/datetime.php:564
-#, php-format
-msgid "Happy Birthday %1$s"
-msgstr "Alles Gute zum Geburtstag, %1$s"
-
-#: ../../include/dir_fns.php:139
-msgid "Directory Options"
-msgstr "Verzeichnisoptionen"
-
-#: ../../include/dir_fns.php:141
-msgid "Safe Mode"
-msgstr "Sicherer Modus"
-
-#: ../../include/dir_fns.php:142
-msgid "Public Forums Only"
-msgstr "Nur öffentliche Foren"
-
-#: ../../include/dir_fns.php:143
-msgid "This Website Only"
-msgstr "Nur dieser Hub"
-
-#: ../../include/enotify.php:96
-#, php-format
-msgid "%s <!item_type!>"
-msgstr "%s <!item_type!>"
-
-#: ../../include/enotify.php:100
-#, php-format
-msgid "[Hubzilla:Notify] New mail received at %s"
-msgstr "[Hubzilla:Benachrichtigung] Neue Mail empfangen auf %s"
-
-#: ../../include/enotify.php:102
-#, php-format
-msgid "%1$s, %2$s sent you a new private message at %3$s."
-msgstr "%1$s, %2$s hat Dir eine private Nachricht auf %3$s gesendet."
-
-#: ../../include/enotify.php:103
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s hat Dir %2$s geschickt."
+#: ../../include/channel.php:32
+msgid "Unable to obtain identity information from database"
+msgstr "Kann keine Identitäts-Informationen aus Datenbank beziehen"
-#: ../../include/enotify.php:103
-msgid "a private message"
-msgstr "eine private Nachricht"
+#: ../../include/channel.php:66
+msgid "Empty name"
+msgstr "Namensfeld leer"
-#: ../../include/enotify.php:104
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Bitte besuche %s, um die private Nachricht anzusehen und/oder darauf zu antworten."
+#: ../../include/channel.php:69
+msgid "Name too long"
+msgstr "Name ist zu lang"
-#: ../../include/enotify.php:160
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
-msgstr "%1$s, %2$s hat [zrl=%3$s]einen %4$s[/zrl] kommentiert"
+#: ../../include/channel.php:180
+msgid "No account identifier"
+msgstr "Keine Account-Kennung"
-#: ../../include/enotify.php:168
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
-msgstr "%1$s, %2$s hat [zrl=%3$s]%4$ss %5$s[/zrl] kommentiert"
+#: ../../include/channel.php:192
+msgid "Nickname is required."
+msgstr "Spitzname ist erforderlich."
-#: ../../include/enotify.php:177
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s hat [zrl=%3$s]Deinen %4$s[/zrl] kommentiert"
+#: ../../include/channel.php:206
+msgid "Reserved nickname. Please choose another."
+msgstr "Reservierter Kurzname. Bitte wähle einen anderen."
-#: ../../include/enotify.php:188
-#, php-format
-msgid "[Hubzilla:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Hubzilla:Benachrichtigung] Kommentar in Unterhaltung #%1$d von %2$s"
+#: ../../include/channel.php:211
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt."
-#: ../../include/enotify.php:189
-#, php-format
-msgid "%1$s, %2$s commented on an item/conversation you have been following."
-msgstr "%1$s, %2$s hat eine Unterhaltung kommentiert, der Du folgst."
+#: ../../include/channel.php:287
+msgid "Unable to retrieve created identity"
+msgstr "Kann die erstellte Identität nicht empfangen"
-#: ../../include/enotify.php:192 ../../include/enotify.php:207
-#: ../../include/enotify.php:233 ../../include/enotify.php:251
-#: ../../include/enotify.php:265
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Bitte besuche %s, um die Unterhaltung anzusehen und/oder zu kommentieren."
+#: ../../include/channel.php:345
+msgid "Default Profile"
+msgstr "Standard-Profil"
-#: ../../include/enotify.php:198
-#, php-format
-msgid "[Hubzilla:Notify] %s posted to your profile wall"
-msgstr "[Hubzilla:Benachrichtigung] %s schrieb auf Deine Pinnwand"
+#: ../../include/channel.php:791
+msgid "Requested channel is not available."
+msgstr "Angeforderte Kanal nicht verfügbar."
-#: ../../include/enotify.php:200
-#, php-format
-msgid "%1$s, %2$s posted to your profile wall at %3$s"
-msgstr "%1$s, %2$s hat auf Deine Pinnwand auf %3$s geschrieben"
+#: ../../include/channel.php:938
+msgid "Create New Profile"
+msgstr "Neues Profil erstellen"
-#: ../../include/enotify.php:202
-#, php-format
-msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
-msgstr "%1$s, %2$s hat auf [zrl=%3$s]Deine Pinnwand[/zrl] geschrieben"
+#: ../../include/channel.php:958
+msgid "Visible to everybody"
+msgstr "Für jeden sichtbar"
-#: ../../include/enotify.php:226
-#, php-format
-msgid "[Hubzilla:Notify] %s tagged you"
-msgstr "[Hubzilla:Benachrichtigung] %s hat Dich erwähnt"
+#: ../../include/channel.php:1031 ../../include/channel.php:1142
+msgid "Gender:"
+msgstr "Geschlecht:"
-#: ../../include/enotify.php:227
-#, php-format
-msgid "%1$s, %2$s tagged you at %3$s"
-msgstr "%1$s, %2$s hat Dich auf %3$s erwähnt"
+#: ../../include/channel.php:1032 ../../include/channel.php:1186
+msgid "Status:"
+msgstr "Status:"
-#: ../../include/enotify.php:228
-#, php-format
-msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%3$s]hat Dich erwähnt[/zrl]."
+#: ../../include/channel.php:1033 ../../include/channel.php:1197
+msgid "Homepage:"
+msgstr "Homepage:"
-#: ../../include/enotify.php:240
-#, php-format
-msgid "[Hubzilla:Notify] %1$s poked you"
-msgstr "[Hubzilla:Benachrichtigung] %1$s hat Dich angestupst"
+#: ../../include/channel.php:1034
+msgid "Online Now"
+msgstr "gerade online"
-#: ../../include/enotify.php:241
-#, php-format
-msgid "%1$s, %2$s poked you at %3$s"
-msgstr "%1$s, %2$s hat Dich auf %3$s angestupst"
+#: ../../include/channel.php:1147
+msgid "Like this channel"
+msgstr "Dieser Kanal gefällt mir"
-#: ../../include/enotify.php:242
-#, php-format
-msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%2$s]hat Dich angestupst[/zrl]."
+#: ../../include/channel.php:1171
+msgid "j F, Y"
+msgstr "j. F Y"
-#: ../../include/enotify.php:258
-#, php-format
-msgid "[Hubzilla:Notify] %s tagged your post"
-msgstr "[Hubzilla:Benachrichtigung] %s hat Deinen Beitrag verschlagwortet"
+#: ../../include/channel.php:1172
+msgid "j F"
+msgstr "j. F"
-#: ../../include/enotify.php:259
-#, php-format
-msgid "%1$s, %2$s tagged your post at %3$s"
-msgstr "%1$s, %2$s hat Deinen Beitrag auf %3$s verschlagwortet"
+#: ../../include/channel.php:1179
+msgid "Birthday:"
+msgstr "Geburtstag:"
-#: ../../include/enotify.php:260
+#: ../../include/channel.php:1192
#, php-format
-msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
-msgstr "%1$s, %2$s hat [zrl=%3$s]Deinen Beitrag[/zrl] verschlagwortet"
-
-#: ../../include/enotify.php:272
-msgid "[Hubzilla:Notify] Introduction received"
-msgstr "[Hubzilla:Benachrichtigung] Vorstellung erhalten"
+msgid "for %1$d %2$s"
+msgstr "seit %1$d %2$s"
-#: ../../include/enotify.php:273
-#, php-format
-msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
-msgstr "%1$s, Du hast eine neue Verbindungsanfrage von '%2$s' auf %3$s erhalten"
+#: ../../include/channel.php:1195
+msgid "Sexual Preference:"
+msgstr "Sexuelle Orientierung:"
-#: ../../include/enotify.php:274
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
-msgstr "%1$s, Du hast [zrl=%2$s]eine neue Verbindungsanfrage[/zrl] von %3$s erhalten."
+#: ../../include/channel.php:1201
+msgid "Tags:"
+msgstr "Schlagworte:"
-#: ../../include/enotify.php:278 ../../include/enotify.php:297
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "Du kannst Dir das Profil unter %s ansehen"
+#: ../../include/channel.php:1203
+msgid "Political Views:"
+msgstr "Politische Ansichten:"
-#: ../../include/enotify.php:280
-#, php-format
-msgid "Please visit %s to approve or reject the connection request."
-msgstr "Bitte besuche %s , um die Verbindungsanfrage anzunehmen oder abzulehnen."
+#: ../../include/channel.php:1205
+msgid "Religion:"
+msgstr "Religion:"
-#: ../../include/enotify.php:287
-msgid "[Hubzilla:Notify] Friend suggestion received"
-msgstr "[Hubzilla:Benachrichtigung] Freundschaftsvorschlag erhalten"
+#: ../../include/channel.php:1209
+msgid "Hobbies/Interests:"
+msgstr "Hobbys/Interessen:"
-#: ../../include/enotify.php:288
-#, php-format
-msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
-msgstr "%1$s, Du hast einen Kontaktvorschlag von „%2$s“ auf %3$s erhalten"
+#: ../../include/channel.php:1211
+msgid "Likes:"
+msgstr "Gefällt:"
-#: ../../include/enotify.php:289
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
-"%4$s."
-msgstr "%1$s, Du hast [zrl=%2$s]einen Kontaktvorschlag[/zrl] für %3$s von %4$s erhalten."
+#: ../../include/channel.php:1213
+msgid "Dislikes:"
+msgstr "Gefällt nicht:"
-#: ../../include/enotify.php:295
-msgid "Name:"
-msgstr "Name:"
+#: ../../include/channel.php:1215
+msgid "Contact information and Social Networks:"
+msgstr "Kontaktinformation und soziale Netzwerke:"
-#: ../../include/enotify.php:296
-msgid "Photo:"
-msgstr "Foto:"
+#: ../../include/channel.php:1217
+msgid "My other channels:"
+msgstr "Meine anderen Kanäle:"
-#: ../../include/enotify.php:299
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Bitte besuche %s um den Vorschlag zu akzeptieren oder abzulehnen."
+#: ../../include/channel.php:1219
+msgid "Musical interests:"
+msgstr "Musikalische Interessen:"
-#: ../../include/enotify.php:514
-msgid "[Hubzilla:Notify]"
-msgstr "[Hubzilla:Benachrichtigung]"
+#: ../../include/channel.php:1221
+msgid "Books, literature:"
+msgstr "Bücher, Literatur:"
-#: ../../include/event.php:779
-msgid "This event has been added to your calendar."
-msgstr "Dieser Termin wurde zu Deinem Kalender hinzugefügt"
+#: ../../include/channel.php:1223
+msgid "Television:"
+msgstr "Fernsehen:"
-#: ../../include/event.php:978
-msgid "Not specified"
-msgstr "Keine Angabe"
+#: ../../include/channel.php:1225
+msgid "Film/dance/culture/entertainment:"
+msgstr "Film/Tanz/Kultur/Unterhaltung:"
-#: ../../include/event.php:979
-msgid "Needs Action"
-msgstr "Aktion erforderlich"
+#: ../../include/channel.php:1227
+msgid "Love/Romance:"
+msgstr "Liebe/Romantik:"
-#: ../../include/event.php:980
-msgid "Completed"
-msgstr "Abgeschlossen"
+#: ../../include/channel.php:1229
+msgid "Work/employment:"
+msgstr "Arbeit/Anstellung:"
-#: ../../include/event.php:981
-msgid "In Process"
-msgstr "In Bearbeitung"
+#: ../../include/channel.php:1231
+msgid "School/education:"
+msgstr "Schule/Ausbildung:"
-#: ../../include/event.php:982
-msgid "Cancelled"
-msgstr "gestrichen"
+#: ../../include/channel.php:1251
+msgid "Like this thing"
+msgstr "Gefällt mir"
#: ../../include/features.php:48
msgid "General Features"
@@ -8245,10 +8872,6 @@ msgstr "Gruppen"
msgid "Enable management and selection of privacy groups"
msgstr "Auswahl und Verwaltung von Gruppen für Kanäle aktivieren"
-#: ../../include/features.php:84 ../../include/widgets.php:281
-msgid "Saved Searches"
-msgstr "Gespeicherte Suchanfragen"
-
#: ../../include/features.php:84
msgid "Save search terms for re-use"
msgstr "Ermöglicht das Abspeichern von Suchbegriffen zur Wiederverwendung"
@@ -8286,10 +8909,6 @@ msgid "Filter incoming posts from connections based on keywords/content"
msgstr "Ermöglicht die Filterung eingehender Beiträge anhand von Schlüsselwörtern (muss an der Verbindung konfiguriert werden)"
#: ../../include/features.php:89
-msgid "Suggest Channels"
-msgstr "Kanäle vorschlagen"
-
-#: ../../include/features.php:89
msgid "Show channel suggestions"
msgstr "Kanalvorschläge anzeigen"
@@ -8314,449 +8933,201 @@ msgid "Add categories to your posts"
msgstr "Aktiviert Kategorien für Beiträge"
#: ../../include/features.php:97
+msgid "Emoji Reactions"
+msgstr "Emoji Reaktionen"
+
+#: ../../include/features.php:97
+msgid "Add emoji reaction ability to posts"
+msgstr "Aktiviert Emoji-Reaktionen für Beiträge"
+
+#: ../../include/features.php:98
msgid "Ability to file posts under folders"
msgstr "Möglichkeit, Beiträge in Verzeichnissen zu sammeln"
-#: ../../include/features.php:98
+#: ../../include/features.php:99
msgid "Dislike Posts"
msgstr "Gefällt-mir-nicht-Beiträge"
-#: ../../include/features.php:98
+#: ../../include/features.php:99
msgid "Ability to dislike posts/comments"
msgstr "Aktiviert die „Gefällt mir nicht“-Schaltfläche"
-#: ../../include/features.php:99
+#: ../../include/features.php:100
msgid "Star Posts"
msgstr "Beiträge mit Sternchen versehen"
-#: ../../include/features.php:99
+#: ../../include/features.php:100
msgid "Ability to mark special posts with a star indicator"
msgstr "Ermöglicht die lokale Markierung spezieller Beiträge mit einem Sternchen-Symbol"
-#: ../../include/features.php:100
+#: ../../include/features.php:101
msgid "Tag Cloud"
msgstr "Schlagwort-Wolke"
-#: ../../include/features.php:100
+#: ../../include/features.php:101
msgid "Provide a personal tag cloud on your channel page"
msgstr "Aktiviert die Anzeige einer Schlagwort-Wolke (Tag Cloud) auf Deiner Kanal-Seite"
-#: ../../include/follow.php:28
-msgid "Channel is blocked on this site."
-msgstr "Der Kanal ist auf dieser Seite blockiert "
-
-#: ../../include/follow.php:33
-msgid "Channel location missing."
-msgstr "Adresse des Kanals fehlt."
-
-#: ../../include/follow.php:82
-msgid "Response from remote channel was incomplete."
-msgstr "Antwort des entfernten Kanals war unvollständig."
-
-#: ../../include/follow.php:99
-msgid "Channel was deleted and no longer exists."
-msgstr "Kanal wurde gelöscht und existiert nicht mehr."
+#: ../../include/oembed.php:324
+msgid "Embedded content"
+msgstr "Eingebetteter Inhalt"
-#: ../../include/follow.php:155 ../../include/follow.php:191
-msgid "Protocol disabled."
-msgstr "Protokoll deaktiviert."
+#: ../../include/oembed.php:333
+msgid "Embedding disabled"
+msgstr "Einbetten ausgeschaltet"
-#: ../../include/follow.php:179
-msgid "Channel discovery failed."
-msgstr "Kanalsuche fehlgeschlagen"
+#: ../../include/acl_selectors.php:271
+msgid "Who can see this?"
+msgstr "Wer kann das sehen?"
-#: ../../include/follow.php:217
-msgid "Cannot connect to yourself."
-msgstr "Du kannst Dich nicht mit Dir selbst verbinden."
+#: ../../include/acl_selectors.php:272
+msgid "Custom selection"
+msgstr "Benutzerdefinierte Auswahl"
-#: ../../include/group.php:26
+#: ../../include/acl_selectors.php:273
msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "Es hat früher schon einmal eine Gruppe mit diesem Namen existiert, die gelöscht wurde. Es <strong>könnten</strong> von damals noch Elemente (Beiträge, Dateien etc.) vorhanden sein, die allen jetzigen und zukünftigen Mitgliedern dieser Gruppe den Zugriff erlauben. Wenn das nicht Deine Absicht ist, erstelle bitte eine neue Gruppe mit einem anderen Namen."
-
-#: ../../include/group.php:248
-msgid "Add new connections to this privacy group"
-msgstr "Neue Verbindung zu dieser Gruppe hinzufügen"
-
-#: ../../include/group.php:289
-msgid "edit"
-msgstr "Bearbeiten"
+"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit"
+" the scope of \"Show\"."
+msgstr "Wähle \"Anzeigen\", um Betrachtung zuzulassen. \"Nicht anzeigen\" überstimmt und limitiert den Aktionsradius von \"Anzeigen\" für Ausnahmen."
-#: ../../include/group.php:312
-msgid "Edit group"
-msgstr "Gruppe ändern"
-
-#: ../../include/group.php:313
-msgid "Add privacy group"
-msgstr "Gruppe hinzufügen"
-
-#: ../../include/group.php:314
-msgid "Channels not in any privacy group"
-msgstr "Kanäle, die in keiner Gruppe sind"
-
-#: ../../include/group.php:316 ../../include/widgets.php:282
-msgid "add"
-msgstr "hinzufügen"
-
-#: ../../include/items.php:1138 ../../include/items.php:1183
-msgid "(Unknown)"
-msgstr "(Unbekannt)"
-
-#: ../../include/items.php:1382
-msgid "Visible to anybody on the internet."
-msgstr "Für jeden im Internet sichtbar."
-
-#: ../../include/items.php:1384
-msgid "Visible to you only."
-msgstr "Nur für Dich sichtbar."
+#: ../../include/acl_selectors.php:274
+msgid "Show"
+msgstr "Anzeigen"
-#: ../../include/items.php:1386
-msgid "Visible to anybody in this network."
-msgstr "Für jedes $Projectname-Mitglied sichtbar."
+#: ../../include/acl_selectors.php:275
+msgid "Don't show"
+msgstr "Nicht anzeigen"
-#: ../../include/items.php:1388
-msgid "Visible to anybody authenticated."
-msgstr "Für jeden sichtbar, der angemeldet ist."
+#: ../../include/acl_selectors.php:281
+msgid "Other networks and post services"
+msgstr "Andere Netzwerke und Platformen"
-#: ../../include/items.php:1390
+#: ../../include/acl_selectors.php:311
#, php-format
-msgid "Visible to anybody on %s."
-msgstr "Für jeden auf %s sichtbar."
+msgid ""
+"Post permissions %s cannot be changed %s after a post is shared.</br />These"
+" permissions set who is allowed to view the post."
+msgstr "Beitragsberechtigungen %s können nicht geändert werden %s, nachdem der Beitrag gesendet wurde.<br />Diese Berechtigungen bestimmen, wer den Beitrag sehen kann."
-#: ../../include/items.php:1392
-msgid "Visible to all connections."
-msgstr "Für alle Verbindungen sichtbar."
+#: ../../include/auth.php:105
+msgid "Logged out."
+msgstr "Ausgeloggt."
-#: ../../include/items.php:1394
-msgid "Visible to approved connections."
-msgstr "Nur für akzeptierte Verbindungen sichtbar."
+#: ../../include/auth.php:212
+msgid "Failed authentication"
+msgstr "Authentifizierung fehlgeschlagen"
-#: ../../include/items.php:1396
-msgid "Visible to specific connections."
-msgstr "Sichtbar für bestimmte Verbindungen."
+#: ../../include/datetime.php:135
+msgid "Birthday"
+msgstr "Geburtstag"
-#: ../../include/items.php:5142
-msgid "Privacy group is empty."
-msgstr "Gruppe ist leer."
+#: ../../include/datetime.php:137
+msgid "Age: "
+msgstr "Alter:"
-#: ../../include/items.php:5149
-#, php-format
-msgid "Privacy group: %s"
-msgstr "Gruppe: %s"
+#: ../../include/datetime.php:139
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "JJJJ-MM-TT oder MM-TT"
-#: ../../include/items.php:5161
-msgid "Connection not found."
-msgstr "Die Verbindung wurde nicht gefunden."
+#: ../../include/datetime.php:272 ../../boot.php:2470
+msgid "never"
+msgstr "Nie"
-#: ../../include/items.php:5594
-msgid "profile photo"
-msgstr "Profilfoto"
+#: ../../include/datetime.php:278
+msgid "less than a second ago"
+msgstr "Vor weniger als einer Sekunde"
-#: ../../include/photos.php:112
+#: ../../include/datetime.php:296
#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "Bild überschreitet das Webseitenlimit von %lu Bytes"
-
-#: ../../include/photos.php:119
-msgid "Image file is empty."
-msgstr "Bilddatei ist leer."
-
-#: ../../include/photos.php:257
-msgid "Photo storage failed."
-msgstr "Fotospeicherung fehlgeschlagen."
-
-#: ../../include/photos.php:297
-msgid "a new photo"
-msgstr "ein neues Foto"
+msgctxt "e.g. 22 hours ago, 1 minute ago"
+msgid "%1$d %2$s ago"
+msgstr "vor %1$d %2$s"
-#: ../../include/photos.php:301
-#, php-format
-msgctxt "photo_upload"
-msgid "%1$s posted %2$s to %3$s"
-msgstr "%1$s hat %2$s auf %3$s veröffentlicht"
+#: ../../include/datetime.php:307
+msgctxt "relative_date"
+msgid "year"
+msgid_plural "years"
+msgstr[0] "Jahr"
+msgstr[1] "Jahre"
-#: ../../include/photos.php:510
-msgid "Upload New Photos"
-msgstr "Neue Fotos hochladen"
+#: ../../include/datetime.php:310
+msgctxt "relative_date"
+msgid "month"
+msgid_plural "months"
+msgstr[0] "Monat"
+msgstr[1] "Monate"
-#: ../../include/widgets.php:103
-msgid "System"
-msgstr "System"
+#: ../../include/datetime.php:313
+msgctxt "relative_date"
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "Woche"
+msgstr[1] "Wochen"
-#: ../../include/widgets.php:106
-msgid "Create Personal App"
-msgstr "Persönliche App erstellen"
+#: ../../include/datetime.php:316
+msgctxt "relative_date"
+msgid "day"
+msgid_plural "days"
+msgstr[0] "Tag"
+msgstr[1] "Tage"
-#: ../../include/widgets.php:107
-msgid "Edit Personal App"
-msgstr "Persönliche App bearbeiten"
+#: ../../include/datetime.php:319
+msgctxt "relative_date"
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "Stunde"
+msgstr[1] "Stunden"
-#: ../../include/widgets.php:154
-msgid "Suggestions"
-msgstr "Vorschläge"
+#: ../../include/datetime.php:322
+msgctxt "relative_date"
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "Minute"
+msgstr[1] "Minuten"
-#: ../../include/widgets.php:155
-msgid "See more..."
-msgstr "Mehr anzeigen …"
+#: ../../include/datetime.php:325
+msgctxt "relative_date"
+msgid "second"
+msgid_plural "seconds"
+msgstr[0] "Sekunde"
+msgstr[1] "Sekunden"
-#: ../../include/widgets.php:175
+#: ../../include/datetime.php:562
#, php-format
-msgid "You have %1$.0f of %2$.0f allowed connections."
-msgstr "Du bist %1$.0f von maximal %2$.0f erlaubten Verbindungen eingegangen."
-
-#: ../../include/widgets.php:181
-msgid "Add New Connection"
-msgstr "Neue Verbindung hinzufügen"
-
-#: ../../include/widgets.php:182
-msgid "Enter channel address"
-msgstr "Adresse des Kanals eingeben"
-
-#: ../../include/widgets.php:183
-msgid "Examples: bob@example.com, https://example.com/barbara"
-msgstr "Beispiele: bob@beispiel.com, http://beispiel.com/barbara"
-
-#: ../../include/widgets.php:199
-msgid "Notes"
-msgstr "Notizen"
-
-#: ../../include/widgets.php:273
-msgid "Remove term"
-msgstr "Eintrag löschen"
-
-#: ../../include/widgets.php:354
-msgid "Archives"
-msgstr "Archive"
-
-#: ../../include/widgets.php:467
-msgid "Refresh"
-msgstr "Aktualisieren"
-
-#: ../../include/widgets.php:507
-msgid "Account settings"
-msgstr "Konto-Einstellungen"
-
-#: ../../include/widgets.php:513
-msgid "Channel settings"
-msgstr "Kanal-Einstellungen"
-
-#: ../../include/widgets.php:522
-msgid "Additional features"
-msgstr "Zusätzliche Funktionen"
-
-#: ../../include/widgets.php:529
-msgid "Feature/Addon settings"
-msgstr "Plugin-Einstellungen"
-
-#: ../../include/widgets.php:535
-msgid "Display settings"
-msgstr "Anzeige-Einstellungen"
-
-#: ../../include/widgets.php:542
-msgid "Manage locations"
-msgstr "Klon-Adressen verwalten"
-
-#: ../../include/widgets.php:551
-msgid "Export channel"
-msgstr "Kanal exportieren"
-
-#: ../../include/widgets.php:558
-msgid "Connected apps"
-msgstr "Verbundene Apps"
-
-#: ../../include/widgets.php:573
-msgid "Premium Channel Settings"
-msgstr "Premium-Kanal-Einstellungen"
-
-#: ../../include/widgets.php:602
-msgid "Private Mail Menu"
-msgstr "Private Nachrichten"
-
-#: ../../include/widgets.php:604
-msgid "Combined View"
-msgstr "Kombinierte Anzeige"
-
-#: ../../include/widgets.php:609 ../../include/nav.php:199
-msgid "Inbox"
-msgstr "Eingang"
-
-#: ../../include/widgets.php:614 ../../include/nav.php:200
-msgid "Outbox"
-msgstr "Ausgang"
-
-#: ../../include/widgets.php:619 ../../include/nav.php:201
-msgid "New Message"
-msgstr "Neue Nachricht"
-
-#: ../../include/widgets.php:636 ../../include/widgets.php:648
-msgid "Conversations"
-msgstr "Konversationen"
-
-#: ../../include/widgets.php:640
-msgid "Received Messages"
-msgstr "Erhaltene Nachrichten"
-
-#: ../../include/widgets.php:644
-msgid "Sent Messages"
-msgstr "Gesendete Nachrichten"
-
-#: ../../include/widgets.php:658
-msgid "No messages."
-msgstr "Keine Nachrichten."
-
-#: ../../include/widgets.php:676
-msgid "Delete conversation"
-msgstr "Unterhaltung löschen"
-
-#: ../../include/widgets.php:702
-msgid "Events Menu"
-msgstr "Kalendermenü"
-
-#: ../../include/widgets.php:703
-msgid "Day View"
-msgstr "Tagesansicht"
-
-#: ../../include/widgets.php:704
-msgid "Week View"
-msgstr "Wochenansicht"
-
-#: ../../include/widgets.php:705
-msgid "Month View"
-msgstr "Monatsansicht"
-
-#: ../../include/widgets.php:717
-msgid "Events Tools"
-msgstr "Kalenderwerkzeuge"
-
-#: ../../include/widgets.php:718
-msgid "Export Calendar"
-msgstr "Kalender exportieren"
-
-#: ../../include/widgets.php:719
-msgid "Import Calendar"
-msgstr "Kalender importieren"
-
-#: ../../include/widgets.php:798
-msgid "Overview"
-msgstr "Ãœbersicht"
-
-#: ../../include/widgets.php:805
-msgid "Chat Members"
-msgstr "Chatmitglieder"
-
-#: ../../include/widgets.php:828
-msgid "Bookmarked Chatrooms"
-msgstr "Gespeicherte Chatrooms"
-
-#: ../../include/widgets.php:851
-msgid "Suggested Chatrooms"
-msgstr "Chatraum-Vorschläge"
-
-#: ../../include/widgets.php:996 ../../include/widgets.php:1108
-msgid "photo/image"
-msgstr "Foto/Bild"
-
-#: ../../include/widgets.php:1051
-msgid "Click to show more"
-msgstr "Klick, um mehr anzuzeigen"
-
-#: ../../include/widgets.php:1202
-msgid "Rating Tools"
-msgstr "Bewertungswerkzeuge"
-
-#: ../../include/widgets.php:1206 ../../include/widgets.php:1208
-msgid "Rate Me"
-msgstr "Bewerte mich"
-
-#: ../../include/widgets.php:1211
-msgid "View Ratings"
-msgstr "Bewertungen ansehen"
-
-#: ../../include/widgets.php:1268
-msgid "Forums"
-msgstr "Foren"
-
-#: ../../include/widgets.php:1297
-msgid "Tasks"
-msgstr "Aufgaben"
-
-#: ../../include/widgets.php:1306
-msgid "Documentation"
-msgstr "Dokumentation"
-
-#: ../../include/widgets.php:1308
-msgid "Project/Site Information"
-msgstr "Informationen über das Projekt und diesen Hub"
-
-#: ../../include/widgets.php:1309
-msgid "For Members"
-msgstr "Für Mitglieder"
-
-#: ../../include/widgets.php:1310
-msgid "For Administrators"
-msgstr "Für Administratoren"
-
-#: ../../include/widgets.php:1311
-msgid "For Developers"
-msgstr "Für Entwickler"
-
-#: ../../include/widgets.php:1335
-msgid "Accounts"
-msgstr "Konten"
-
-#: ../../include/widgets.php:1335 ../../include/widgets.php:1373
-msgid "Member registrations waiting for confirmation"
-msgstr "Nutzer-Anmeldungen, die auf Bestätigung warten"
-
-#: ../../include/widgets.php:1341
-msgid "Inspect queue"
-msgstr "Warteschlange kontrollieren"
-
-#: ../../include/widgets.php:1343
-msgid "DB updates"
-msgstr "DB-Aktualisierungen"
-
-#: ../../include/widgets.php:1368 ../../include/nav.php:219
-msgid "Admin"
-msgstr "Administration"
-
-#: ../../include/widgets.php:1369
-msgid "Plugin Features"
-msgstr "Plug-In Funktionen"
-
-#: ../../include/taxonomy.php:240 ../../include/taxonomy.php:261
-msgid "Tags"
-msgstr "Schlagwörter"
+msgid "%1$s's birthday"
+msgstr "%1$ss Geburtstag"
-#: ../../include/taxonomy.php:305
-msgid "Keywords"
-msgstr "Schlüsselwörter"
+#: ../../include/datetime.php:563
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Alles Gute zum Geburtstag, %1$s"
-#: ../../include/taxonomy.php:326
-msgid "have"
-msgstr "habe"
+#: ../../include/group.php:26
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
+msgstr "Es hat früher schon einmal eine Gruppe mit diesem Namen existiert, die gelöscht wurde. Es <strong>könnten</strong> von damals noch Elemente (Beiträge, Dateien etc.) vorhanden sein, die allen jetzigen und zukünftigen Mitgliedern dieser Gruppe den Zugriff erlauben. Wenn das nicht Deine Absicht ist, erstelle bitte eine neue Gruppe mit einem anderen Namen."
-#: ../../include/taxonomy.php:326
-msgid "has"
-msgstr "hat"
+#: ../../include/group.php:248
+msgid "Add new connections to this privacy group"
+msgstr "Neue Verbindung zu dieser Gruppe hinzufügen"
-#: ../../include/taxonomy.php:327
-msgid "want"
-msgstr "will"
+#: ../../include/group.php:289
+msgid "edit"
+msgstr "Bearbeiten"
-#: ../../include/taxonomy.php:327
-msgid "wants"
-msgstr "will"
+#: ../../include/group.php:312
+msgid "Edit group"
+msgstr "Gruppe ändern"
-#: ../../include/taxonomy.php:328
-msgid "likes"
-msgstr "gefällt"
+#: ../../include/group.php:313
+msgid "Add privacy group"
+msgstr "Gruppe hinzufügen"
-#: ../../include/taxonomy.php:329
-msgid "dislikes"
-msgstr "missfällt"
+#: ../../include/group.php:314
+msgid "Channels not in any privacy group"
+msgstr "Kanäle, die in keiner Gruppe sind"
#: ../../include/js_strings.php:5
msgid "Delete this item?"
@@ -8782,6 +9153,10 @@ msgstr "Kennwort zu kurz"
msgid "Passwords do not match"
msgstr "Kennwörter stimmen nicht überein"
+#: ../../include/js_strings.php:13
+msgid "everybody"
+msgstr "alle"
+
#: ../../include/js_strings.php:14
msgid "Secret Passphrase"
msgstr "geheime Passphrase"
@@ -8891,55 +9266,11 @@ msgstr " "
msgid "timeago.numbers"
msgstr "timeago.numbers"
-#: ../../include/js_strings.php:45 ../../include/text.php:1210
-msgid "January"
-msgstr "Januar"
-
-#: ../../include/js_strings.php:46 ../../include/text.php:1210
-msgid "February"
-msgstr "Februar"
-
-#: ../../include/js_strings.php:47 ../../include/text.php:1210
-msgid "March"
-msgstr "März"
-
-#: ../../include/js_strings.php:48 ../../include/text.php:1210
-msgid "April"
-msgstr "April"
-
#: ../../include/js_strings.php:49
msgctxt "long"
msgid "May"
msgstr "Mai"
-#: ../../include/js_strings.php:50 ../../include/text.php:1210
-msgid "June"
-msgstr "Juni"
-
-#: ../../include/js_strings.php:51 ../../include/text.php:1210
-msgid "July"
-msgstr "Juli"
-
-#: ../../include/js_strings.php:52 ../../include/text.php:1210
-msgid "August"
-msgstr "August"
-
-#: ../../include/js_strings.php:53 ../../include/text.php:1210
-msgid "September"
-msgstr "September"
-
-#: ../../include/js_strings.php:54 ../../include/text.php:1210
-msgid "October"
-msgstr "Oktober"
-
-#: ../../include/js_strings.php:55 ../../include/text.php:1210
-msgid "November"
-msgstr "November"
-
-#: ../../include/js_strings.php:56 ../../include/text.php:1210
-msgid "December"
-msgstr "Dezember"
-
#: ../../include/js_strings.php:57
msgid "Jan"
msgstr "Jan"
@@ -8989,34 +9320,6 @@ msgstr "Nov"
msgid "Dec"
msgstr "Dez"
-#: ../../include/js_strings.php:69 ../../include/text.php:1206
-msgid "Sunday"
-msgstr "Sonntag"
-
-#: ../../include/js_strings.php:70 ../../include/text.php:1206
-msgid "Monday"
-msgstr "Montag"
-
-#: ../../include/js_strings.php:71 ../../include/text.php:1206
-msgid "Tuesday"
-msgstr "Dienstag"
-
-#: ../../include/js_strings.php:72 ../../include/text.php:1206
-msgid "Wednesday"
-msgstr "Mittwoch"
-
-#: ../../include/js_strings.php:73 ../../include/text.php:1206
-msgid "Thursday"
-msgstr "Donnerstag"
-
-#: ../../include/js_strings.php:74 ../../include/text.php:1206
-msgid "Friday"
-msgstr "Freitag"
-
-#: ../../include/js_strings.php:75 ../../include/text.php:1206
-msgid "Saturday"
-msgstr "Samstag"
-
#: ../../include/js_strings.php:76
msgid "Sun"
msgstr "So"
@@ -9070,38 +9373,97 @@ msgctxt "calendar"
msgid "All day"
msgstr "Ganztägig"
-#: ../../include/message.php:20
-msgid "No recipient provided."
-msgstr "Kein Empfänger angegeben"
+#: ../../include/network.php:657
+msgid "view full size"
+msgstr "In Vollbildansicht anschauen"
-#: ../../include/message.php:25
-msgid "[no subject]"
-msgstr "[no subject]"
+#: ../../include/network.php:1885
+msgid "No Subject"
+msgstr "Kein Betreff"
-#: ../../include/message.php:45
-msgid "Unable to determine sender."
-msgstr "Kann Absender nicht bestimmen."
+#: ../../include/network.php:2146 ../../include/network.php:2147
+msgid "Friendica"
+msgstr "Friendica"
-#: ../../include/message.php:222
-msgid "Stored post could not be verified."
-msgstr "Gespeicherter Beitrag konnten nicht überprüft werden."
+#: ../../include/network.php:2148
+msgid "OStatus"
+msgstr "OStatus"
-#: ../../include/import.php:23
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen."
+#: ../../include/network.php:2149
+msgid "GNU-Social"
+msgstr "GNU-Social"
-#: ../../include/import.php:70
-msgid "Channel clone failed. Import failed."
-msgstr "Klonen des Kanals fehlgeschlagen. Import fehlgeschlagen."
+#: ../../include/network.php:2150
+msgid "RSS/Atom"
+msgstr "RSS/Atom"
-#: ../../include/oembed.php:267
-msgid "Embedded content"
-msgstr "Eingebetteter Inhalt"
+#: ../../include/network.php:2152
+msgid "Diaspora"
+msgstr "Diaspora"
-#: ../../include/oembed.php:276
-msgid "Embedding disabled"
-msgstr "Einbetten ausgeschaltet"
+#: ../../include/network.php:2153
+msgid "Facebook"
+msgstr "Facebook"
+
+#: ../../include/network.php:2154
+msgid "Zot"
+msgstr "Zot!"
+
+#: ../../include/network.php:2155
+msgid "LinkedIn"
+msgstr "LinkedIn"
+
+#: ../../include/network.php:2156
+msgid "XMPP/IM"
+msgstr "XMPP/IM"
+
+#: ../../include/network.php:2157
+msgid "MySpace"
+msgstr "MySpace"
+
+#: ../../include/photos.php:110
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "Bild überschreitet das Webseitenlimit von %lu Bytes"
+
+#: ../../include/photos.php:117
+msgid "Image file is empty."
+msgstr "Bilddatei ist leer."
+
+#: ../../include/photos.php:255
+msgid "Photo storage failed."
+msgstr "Fotospeicherung fehlgeschlagen."
+
+#: ../../include/photos.php:295
+msgid "a new photo"
+msgstr "ein neues Foto"
+
+#: ../../include/photos.php:299
+#, php-format
+msgctxt "photo_upload"
+msgid "%1$s posted %2$s to %3$s"
+msgstr "%1$s hat %2$s auf %3$s veröffentlicht"
+
+#: ../../include/photos.php:506
+msgid "Upload New Photos"
+msgstr "Neue Fotos hochladen"
+
+#: ../../include/zot.php:699
+msgid "Invalid data packet"
+msgstr "Ungültiges Datenpaket"
+
+#: ../../include/zot.php:715
+msgid "Unable to verify channel signature"
+msgstr "Konnte die Signatur des Kanals nicht verifizieren"
+
+#: ../../include/zot.php:2363
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr "Kann die Signatur der Seite von %s nicht verifizieren"
+
+#: ../../include/zot.php:3712
+msgid "invalid target signature"
+msgstr "Ungültige Signatur des Ziels"
#: ../../include/page_widgets.php:6
msgid "New Page"
@@ -9252,400 +9614,36 @@ msgstr "Speziell - Gruppenarchiv"
msgid "Custom/Expert Mode"
msgstr "Benutzerdefiniert/Expertenmodus"
-#: ../../include/text.php:394
-msgid "prev"
-msgstr "vorherige"
-
-#: ../../include/text.php:396
-msgid "first"
-msgstr "erste"
-
-#: ../../include/text.php:425
-msgid "last"
-msgstr "letzte"
-
-#: ../../include/text.php:428
-msgid "next"
-msgstr "nächste"
-
-#: ../../include/text.php:438
-msgid "older"
-msgstr "älter"
-
-#: ../../include/text.php:440
-msgid "newer"
-msgstr "neuer"
+#: ../../include/activities.php:41
+msgid " and "
+msgstr "und"
-#: ../../include/text.php:822
-msgid "No connections"
-msgstr "Keine Verbindungen"
+#: ../../include/activities.php:49
+msgid "public profile"
+msgstr "öffentliches Profil"
-#: ../../include/text.php:847
+#: ../../include/activities.php:58
#, php-format
-msgid "View all %s connections"
-msgstr "Alle Verbindungen von %s anzeigen"
-
-#: ../../include/text.php:992 ../../include/text.php:997
-msgid "poke"
-msgstr "anstupsen"
-
-#: ../../include/text.php:998
-msgid "ping"
-msgstr "anpingen"
-
-#: ../../include/text.php:998
-msgid "pinged"
-msgstr "pingte"
-
-#: ../../include/text.php:999
-msgid "prod"
-msgstr "knuffen"
-
-#: ../../include/text.php:999
-msgid "prodded"
-msgstr "knuffte"
-
-#: ../../include/text.php:1000
-msgid "slap"
-msgstr "ohrfeigen"
-
-#: ../../include/text.php:1000
-msgid "slapped"
-msgstr "ohrfeigte"
-
-#: ../../include/text.php:1001
-msgid "finger"
-msgstr "befummeln"
-
-#: ../../include/text.php:1001
-msgid "fingered"
-msgstr "befummelte"
-
-#: ../../include/text.php:1002
-msgid "rebuff"
-msgstr "eine Abfuhr erteilen"
-
-#: ../../include/text.php:1002
-msgid "rebuffed"
-msgstr "zurückgewiesen"
-
-#: ../../include/text.php:1014
-msgid "happy"
-msgstr "glücklich"
-
-#: ../../include/text.php:1015
-msgid "sad"
-msgstr "traurig"
-
-#: ../../include/text.php:1016
-msgid "mellow"
-msgstr "sanft"
-
-#: ../../include/text.php:1017
-msgid "tired"
-msgstr "müde"
-
-#: ../../include/text.php:1018
-msgid "perky"
-msgstr "frech"
-
-#: ../../include/text.php:1019
-msgid "angry"
-msgstr "sauer"
-
-#: ../../include/text.php:1020
-msgid "stupefied"
-msgstr "verblüfft"
-
-#: ../../include/text.php:1021
-msgid "puzzled"
-msgstr "verwirrt"
-
-#: ../../include/text.php:1022
-msgid "interested"
-msgstr "interessiert"
-
-#: ../../include/text.php:1023
-msgid "bitter"
-msgstr "verbittert"
-
-#: ../../include/text.php:1024
-msgid "cheerful"
-msgstr "fröhlich"
-
-#: ../../include/text.php:1025
-msgid "alive"
-msgstr "lebendig"
-
-#: ../../include/text.php:1026
-msgid "annoyed"
-msgstr "verärgert"
-
-#: ../../include/text.php:1027
-msgid "anxious"
-msgstr "unruhig"
-
-#: ../../include/text.php:1028
-msgid "cranky"
-msgstr "schrullig"
-
-#: ../../include/text.php:1029
-msgid "disturbed"
-msgstr "verstört"
-
-#: ../../include/text.php:1030
-msgid "frustrated"
-msgstr "frustriert"
-
-#: ../../include/text.php:1031
-msgid "depressed"
-msgstr "deprimiert"
-
-#: ../../include/text.php:1032
-msgid "motivated"
-msgstr "motiviert"
-
-#: ../../include/text.php:1033
-msgid "relaxed"
-msgstr "entspannt"
-
-#: ../../include/text.php:1034
-msgid "surprised"
-msgstr "überrascht"
-
-#: ../../include/text.php:1210
-msgid "May"
-msgstr "Mai"
-
-#: ../../include/text.php:1287 ../../include/text.php:1291
-msgid "Unknown Attachment"
-msgstr "Unbekannter Anhang"
-
-#: ../../include/text.php:1293
-msgid "unknown"
-msgstr "unbekannt"
-
-#: ../../include/text.php:1329
-msgid "remove category"
-msgstr "Kategorie entfernen"
-
-#: ../../include/text.php:1406
-msgid "remove from file"
-msgstr "aus der Datei entfernen"
-
-#: ../../include/text.php:1548 ../../include/text.php:1559
-msgid "Click to open/close"
-msgstr "Klicke zum Öffnen/Schließen"
-
-#: ../../include/text.php:1764 ../../include/text.php:1836
-msgid "default"
-msgstr "Standard"
-
-#: ../../include/text.php:1772
-msgid "Page layout"
-msgstr "Seiten-Layout"
-
-#: ../../include/text.php:1772
-msgid "You can create your own with the layouts tool"
-msgstr "Mit dem Gestaltungswerkzeug kannst Du Deine eigenen Layouts erstellen"
-
-#: ../../include/text.php:1814
-msgid "Page content type"
-msgstr "Art des Seiteninhalts"
-
-#: ../../include/text.php:1848
-msgid "Select an alternate language"
-msgstr "Wähle eine alternative Sprache"
-
-#: ../../include/text.php:1980
-msgid "activity"
-msgstr "Aktivität"
-
-#: ../../include/text.php:2275
-msgid "Design Tools"
-msgstr "Gestaltungswerkzeuge"
-
-#: ../../include/text.php:2281
-msgid "Pages"
-msgstr "Seiten"
-
-#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1601
-msgid "Logout"
-msgstr "Abmelden"
-
-#: ../../include/nav.php:82 ../../include/nav.php:113
-msgid "End this session"
-msgstr "Beende diese Sitzung"
-
-#: ../../include/nav.php:85 ../../include/nav.php:144
-msgid "Home"
-msgstr "Home"
-
-#: ../../include/nav.php:85
-msgid "Your posts and conversations"
-msgstr "Deine Beiträge und Unterhaltungen"
-
-#: ../../include/nav.php:86
-msgid "Your profile page"
-msgstr "Deine Profilseite"
-
-#: ../../include/nav.php:88
-msgid "Manage/Edit profiles"
-msgstr "Profile verwalten"
-
-#: ../../include/nav.php:90
-msgid "Edit your profile"
-msgstr "Profil bearbeiten"
-
-#: ../../include/nav.php:92
-msgid "Your photos"
-msgstr "Deine Bilder"
-
-#: ../../include/nav.php:93
-msgid "Your files"
-msgstr "Deine Dateien"
-
-#: ../../include/nav.php:96
-msgid "Your chatrooms"
-msgstr "Deine Chaträume"
-
-#: ../../include/nav.php:102
-msgid "Your bookmarks"
-msgstr "Deine Lesezeichen"
-
-#: ../../include/nav.php:106
-msgid "Your webpages"
-msgstr "Deine Webseiten"
-
-#: ../../include/nav.php:110
-msgid "Sign in"
-msgstr "Anmelden"
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s hat %2$s auf &ldquo;%3$s&rdquo; geändert"
-#: ../../include/nav.php:127
+#: ../../include/activities.php:59
#, php-format
-msgid "%s - click to logout"
-msgstr "%s - Klick zum Abmelden"
-
-#: ../../include/nav.php:130
-msgid "Remote authentication"
-msgstr "Ãœber Konto auf anderem Server einloggen"
-
-#: ../../include/nav.php:130
-msgid "Click to authenticate to your home hub"
-msgstr "Klicke, um Dich über Deinen Heimat-Server zu authentifizieren"
-
-#: ../../include/nav.php:144
-msgid "Home Page"
-msgstr "Homepage"
-
-#: ../../include/nav.php:148
-msgid "Create an account"
-msgstr "Erzeuge ein Konto"
-
-#: ../../include/nav.php:161
-msgid "Help and documentation"
-msgstr "Hilfe und Dokumentation"
-
-#: ../../include/nav.php:165
-msgid "Applications, utilities, links, games"
-msgstr "Anwendungen (Apps), Zubehör, Links, Spiele"
-
-#: ../../include/nav.php:167
-msgid "Search site @name, #tag, ?docs, content"
-msgstr "Hub durchsuchen: @Name. #Schlagwort, ?Dokumentation, Inhalt"
-
-#: ../../include/nav.php:170
-msgid "Channel Directory"
-msgstr "Kanal-Verzeichnis"
-
-#: ../../include/nav.php:182
-msgid "Your grid"
-msgstr "Dein Grid"
-
-#: ../../include/nav.php:183
-msgid "Mark all grid notifications seen"
-msgstr "Alle Grid-Benachrichtigungen als angesehen markieren"
-
-#: ../../include/nav.php:185
-msgid "Channel home"
-msgstr "Mein Kanal"
-
-#: ../../include/nav.php:186
-msgid "Mark all channel notifications seen"
-msgstr "Markiere alle Kanal-Benachrichtigungen als angesehen"
-
-#: ../../include/nav.php:192
-msgid "Notices"
-msgstr "Benachrichtigungen"
-
-#: ../../include/nav.php:192
-msgid "Notifications"
-msgstr "Benachrichtigungen"
-
-#: ../../include/nav.php:193
-msgid "See all notifications"
-msgstr "Alle Benachrichtigungen ansehen"
-
-#: ../../include/nav.php:196
-msgid "Private mail"
-msgstr "Persönliche Mail"
-
-#: ../../include/nav.php:197
-msgid "See all private messages"
-msgstr "Alle persönlichen Nachrichten ansehen"
-
-#: ../../include/nav.php:198
-msgid "Mark all private messages seen"
-msgstr "Markiere alle persönlichen Nachrichten als gesehen"
-
-#: ../../include/nav.php:204
-msgid "Event Calendar"
-msgstr "Terminkalender"
-
-#: ../../include/nav.php:205
-msgid "See all events"
-msgstr "Alle Termine ansehen"
-
-#: ../../include/nav.php:206
-msgid "Mark all events seen"
-msgstr "Markiere alle Termine als gesehen"
-
-#: ../../include/nav.php:209
-msgid "Manage Your Channels"
-msgstr "Verwalte Deine Kanäle"
-
-#: ../../include/nav.php:211
-msgid "Account/Channel Settings"
-msgstr "Konto-/Kanal-Einstellungen"
-
-#: ../../include/nav.php:219
-msgid "Site Setup and Configuration"
-msgstr "Seiten-Einrichtung und -Konfiguration"
-
-#: ../../include/nav.php:261
-msgid "@name, #tag, ?doc, content"
-msgstr "@Name, #Schlagwort, ?Dokumentation, Inhalt"
-
-#: ../../include/nav.php:262
-msgid "Please wait..."
-msgstr "Bitte warten..."
-
-#: ../../include/zot.php:680
-msgid "Invalid data packet"
-msgstr "Ungültiges Datenpaket"
-
-#: ../../include/zot.php:696
-msgid "Unable to verify channel signature"
-msgstr "Konnte die Signatur des Kanals nicht verifizieren"
+msgid "Visit %1$s's %2$s"
+msgstr "Besuche %1$s's %2$s"
-#: ../../include/zot.php:2332
+#: ../../include/activities.php:62
#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Kann die Signatur der Seite von %s nicht verifizieren"
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s hat ein aktualisiertes %2$s, %3$s wurde verändert."
-#: ../../include/zot.php:3670
-msgid "invalid target signature"
-msgstr "Ungültige Signatur des Ziels"
+#: ../../include/bb2diaspora.php:398
+msgid "Attachments:"
+msgstr "Anhänge:"
+
+#: ../../include/bb2diaspora.php:487
+msgid "$Projectname event notification:"
+msgstr "$Projectname-Terminbenachrichtigung:"
#: ../../view/theme/redbasic/php/config.php:82
msgid "Focus (Hubzilla default)"
@@ -9783,62 +9781,62 @@ msgstr "Größe der Avatare von Themenstartern"
msgid "Set size of followup author photos"
msgstr "Größe der Avatare von Kommentatoren"
-#: ../../boot.php:1075
+#: ../../boot.php:1162
#, php-format
msgctxt "opensearch"
msgid "Search %1$s (%2$s)"
msgstr "Suche %1$s (%2$s)"
-#: ../../boot.php:1075
+#: ../../boot.php:1162
msgctxt "opensearch"
msgid "$Projectname"
msgstr "$Projectname"
-#: ../../boot.php:1392
+#: ../../boot.php:1480
#, php-format
msgid "Update %s failed. See error logs."
msgstr "Aktualisierung %s fehlgeschlagen. Details in den Fehlerprotokollen."
-#: ../../boot.php:1395
+#: ../../boot.php:1483
#, php-format
msgid "Update Error at %s"
msgstr "Aktualisierungsfehler auf %s"
-#: ../../boot.php:1583
+#: ../../boot.php:1684
msgid ""
"Create an account to access services and applications within the Hubzilla"
msgstr "Erstelle ein Konto, um Anwendungen und Dienste innerhalb von Hubzilla nutzen zu können."
-#: ../../boot.php:1605
+#: ../../boot.php:1706
msgid "Password"
msgstr "Kennwort"
-#: ../../boot.php:1606
+#: ../../boot.php:1707
msgid "Remember me"
msgstr "Angaben speichern"
-#: ../../boot.php:1609
+#: ../../boot.php:1710
msgid "Forgot your password?"
msgstr "Passwort vergessen?"
-#: ../../boot.php:2238
+#: ../../boot.php:2276
msgid "toggle mobile"
msgstr "auf/von mobile Ansicht wechseln"
-#: ../../boot.php:2391
+#: ../../boot.php:2425
msgid "Website SSL certificate is not valid. Please correct."
msgstr "Das SSL-Zertifikat der Website ist nicht gültig. Bitte beheben."
-#: ../../boot.php:2394
+#: ../../boot.php:2428
#, php-format
msgid "[hubzilla] Website SSL error for %s"
msgstr "[hubzilla] Website-SSL-Fehler für %s"
-#: ../../boot.php:2431
+#: ../../boot.php:2469
msgid "Cron/Scheduled tasks not running."
msgstr "Cron-Aufgaben laufen nicht."
-#: ../../boot.php:2435
+#: ../../boot.php:2473
#, php-format
msgid "[hubzilla] Cron tasks not running on %s"
msgstr "[hubzilla] Cron-Aufgaben für %s laufen nicht"
diff --git a/view/de/hstrings.php b/view/de/hstrings.php
index 30355e37a..eea433fac 100644
--- a/view/de/hstrings.php
+++ b/view/de/hstrings.php
@@ -29,6 +29,7 @@ App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s&#37;)
App::$strings["WARNING:"] = "WARNUNG:";
App::$strings["Create new folder"] = "Neuen Ordner anlegen";
App::$strings["Upload file"] = "Datei hochladen";
+App::$strings["Permission denied"] = "Keine Berechtigung";
App::$strings["Permission denied."] = "Berechtigung verweigert.";
App::$strings["Not Found"] = "Nicht gefunden";
App::$strings["Page not found."] = "Seite nicht gefunden.";
@@ -36,263 +37,6 @@ App::$strings["Remote authentication blocked. You are logged into this site loca
App::$strings["Welcome %s. Remote authentication successful."] = "Willkommen %s. Entfernte Authentifizierung erfolgreich.";
App::$strings["Requested profile is not available."] = "Erwünschte Profil ist nicht verfügbar.";
App::$strings["Some blurb about what to do when you're new here"] = "Ein Hinweis, was man tun kann, wenn man neu hier ist";
-App::$strings["network"] = "Netzwerk";
-App::$strings["RSS"] = "RSS";
-App::$strings["Theme settings updated."] = "Theme-Einstellungen aktualisiert.";
-App::$strings["Item not found."] = "Element nicht gefunden.";
-App::$strings["# Accounts"] = "Anzahl der Konten";
-App::$strings["# blocked accounts"] = "Anzahl der blockierten Konten";
-App::$strings["# expired accounts"] = "Anzahl der abgelaufenen Konten";
-App::$strings["# expiring accounts"] = "Anzahl der ablaufenden Konten";
-App::$strings["# Channels"] = "Anzahl der Kanäle";
-App::$strings["# primary"] = "Anzahl der primären Kanäle";
-App::$strings["# clones"] = "Anzahl der Klone";
-App::$strings["Message queues"] = "Nachrichten-Warteschlangen";
-App::$strings["Administration"] = "Administration";
-App::$strings["Summary"] = "Zusammenfassung";
-App::$strings["Registered accounts"] = "Registrierte Konten";
-App::$strings["Pending registrations"] = "Ausstehende Registrierungen";
-App::$strings["Registered channels"] = "Registrierte Kanäle";
-App::$strings["Active plugins"] = "Aktive Plug-Ins";
-App::$strings["Version"] = "Version";
-App::$strings["Site settings updated."] = "Site-Einstellungen aktualisiert.";
-App::$strings["Default"] = "Standard";
-App::$strings["mobile"] = "mobil";
-App::$strings["experimental"] = "experimentell";
-App::$strings["unsupported"] = "nicht unterstützt";
-App::$strings["No"] = "Nein";
-App::$strings["Yes - with approval"] = "Ja - mit Zustimmung";
-App::$strings["Yes"] = "Ja";
-App::$strings["My site is not a public server"] = "Mein Server ist kein öffentlicher Server";
-App::$strings["My site has paid access only"] = "Meine Seite hat nur bezahlten Zugriff";
-App::$strings["My site has free access only"] = "Meine Seite hat nur freien Zugriff";
-App::$strings["My site offers free accounts with optional paid upgrades"] = "Mein Server bietet kostenlose Konten mit der Möglichkeit zu bezahlten Upgrades";
-App::$strings["Site"] = "Seite";
-App::$strings["Submit"] = "Bestätigen";
-App::$strings["Registration"] = "Registrierung";
-App::$strings["File upload"] = "Dateiupload";
-App::$strings["Policies"] = "Richtlinien";
-App::$strings["Advanced"] = "Fortgeschritten";
-App::$strings["Site name"] = "Seitenname";
-App::$strings["Banner/Logo"] = "Banner/Logo";
-App::$strings["Administrator Information"] = "Administrator-Informationen";
-App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Kontaktinformationen für Administratoren des Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann verwendet werden.";
-App::$strings["System language"] = "System-Sprache";
-App::$strings["System theme"] = "System-Theme";
-App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Standard-System-Theme – kann durch Nutzerprofile überschieben werden – <a href='#' id='cnftheme'>Theme-Einstellungen ändern</a>";
-App::$strings["Mobile system theme"] = "Mobile System-Theme:";
-App::$strings["Theme for mobile devices"] = "Theme für mobile Geräte";
-App::$strings["Allow Feeds as Connections"] = "Feeds als Verbindungen erlauben";
-App::$strings["(Heavy system resource usage)"] = "(führt zu hoher Systemlast)";
-App::$strings["Maximum image size"] = "Maximale Bildgröße";
-App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Maximale Größe hochgeladener Bilder in Bytes. Standard ist 0 (keine Einschränkung).";
-App::$strings["Does this site allow new member registration?"] = "Erlaubt dieser Server die Registrierung neuer Nutzer?";
-App::$strings["Invitation only"] = "Nur mit Einladung";
-App::$strings["Only allow new member registrations with an invitation code. Above register policy must be set to Yes."] = "Erlaube die Neuregistrierung von Mitglieder nur mit einem Einladungscode. Die Registrierungs-Politik muss oben auf Ja gesetzt werden.";
-App::$strings["Which best describes the types of account offered by this hub?"] = "Was ist die passendste Beschreibung der Konten auf diesem Hub?";
-App::$strings["Register text"] = "Registrierungstext";
-App::$strings["Will be displayed prominently on the registration page."] = "Wird gut sichtbar auf der Registrierungs-Seite angezeigt.";
-App::$strings["Site homepage to show visitors (default: login box)"] = "Homepage des Hubs, die Besuchern angezeigt wird (Voreinstellung: Anmeldemaske)";
-App::$strings["example: 'public' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file."] = "Beispiele: 'public', um den Stream aller öffentlichen Beiträge anzuzeigen, 'page/sys/home', um eine System-Webseite namens 'home' anzuzeigen, 'include:home.html', um eine Datei einzufügen.";
-App::$strings["Preserve site homepage URL"] = "Homepage-URL schützen";
-App::$strings["Present the site homepage in a frame at the original location instead of redirecting"] = "Zeigt die Homepage an der Original-URL in einem Frame an, statt auf die eigentliche Adresse der Seite umzuleiten.";
-App::$strings["Accounts abandoned after x days"] = "Konten gelten nach X Tagen als unbenutzt";
-App::$strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Verschwende keine Systemressourcen auf das Pollen von externen Seiten, wenn das Konto nicht mehr benutzt wird. Trage hier 0 für kein zeitliches Limit.";
-App::$strings["Allowed friend domains"] = "Erlaubte Domains für Kontakte";
-App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben.";
-App::$strings["Allowed email domains"] = "Erlaubte Domains für E-Mails";
-App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben.";
-App::$strings["Not allowed email domains"] = "Nicht erlaubte Domains für E-Mails";
-App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Domains in E-Mail-Adressen, die keine Erlaubnis erhalten, sich auf Deinem Hub zu registrieren. Mehrere Domains können durch Kommas getrennt werden. Platzhalter (*/?) sind möglich. Keine Eingabe bedeutet keine Einschränkung, unabhängig davon, ob unter erlaubte Domains etwas eingegeben wurde.";
-App::$strings["Verify Email Addresses"] = "E-Mail-Adressen überprüfen";
-App::$strings["Check to verify email addresses used in account registration (recommended)."] = "Aktivieren, um die Überprüfung von E-Mail-Adressen bei der Registrierung von Benutzerkonten zu aktivieren (empfohlen).";
-App::$strings["Force publish"] = "Veröffentlichung erzwingen";
-App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Die Veröffentlichung aller Profile dieses Servers im Verzeichnis erzwingen.";
-App::$strings["Import Public Streams"] = "Öffentliche Beiträge importieren";
-App::$strings["Import and allow access to public content pulled from other sites. Warning: this content is unmoderated."] = "Öffentliche Beiträge von anderen Servern importieren und zur Verfügung stellen. Warnung: Diese Inhalte sind nicht moderiert.";
-App::$strings["Login on Homepage"] = "Log-in auf der Startseite";
-App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Zeigt Besuchern der Homepage eine Anmeldemaske, falls keine anderen Inhalte konfiguriert wurden.";
-App::$strings["Enable context help"] = "Kontext-Hilfe aktivieren";
-App::$strings["Display contextual help for the current page when the help button is pressed."] = "Zeigt Kontext-sensitive Hilfe für die aktuelle Seite an, wenn der Hilfe-Knopf geklickt wird.";
-App::$strings["Directory Server URL"] = "Verzeichnisserver-URL";
-App::$strings["Default directory server"] = "Standard-Verzeichnisserver";
-App::$strings["Proxy user"] = "Proxy Benutzer";
-App::$strings["Proxy URL"] = "Proxy URL";
-App::$strings["Network timeout"] = "Netzwerk-Timeout";
-App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Wert in Sekunden. 0 für unbegrenzt (nicht empfohlen).";
-App::$strings["Delivery interval"] = "Auslieferung Intervall";
-App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl Sekunden, um die Systemlast zu verringern. Empfehlungen: 4-5 für Shared Hosts, 2-3 für VPS, 0-1 für große dedizierte Server.";
-App::$strings["Deliveries per process"] = "Zustellungen pro Prozess";
-App::$strings["Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5."] = "Anzahl der Zustellungen, die innerhalb eines einzelnen Betriebssystemprozesses versucht werden. Anpassen, falls nötig, um die System-Performance zu verbessern. Empfehlung: 1-5.";
-App::$strings["Poll interval"] = "Abfrageintervall";
-App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Verzögere Hintergrundprozesse um diese Anzahl Sekunden, um die Systemlast zu reduzieren. Bei 0 wird das Auslieferungsintervall verwendet.";
-App::$strings["Maximum Load Average"] = "Maximales Load Average";
-App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maximale Systemlast, bevor Verteil- und Empfangsprozesse verschoben werden – Standard 50";
-App::$strings["Expiration period in days for imported (grid/network) content"] = "Setze den Zeitraum (in Tagen), ab wann importierte (aus dem Netzwerk) Inhalte ablaufen sollen";
-App::$strings["0 for no expiration of imported content"] = "0 = keine Löschung importierter Inhalte";
-App::$strings["Off"] = "Aus";
-App::$strings["On"] = "An";
-App::$strings["Lock feature %s"] = "Blockiere die Funktion %s";
-App::$strings["Manage Additional Features"] = "Zusätzliche Funktionen verwalten";
-App::$strings["No server found"] = "Kein Server gefunden";
-App::$strings["ID"] = "ID";
-App::$strings["for channel"] = "für Kanal";
-App::$strings["on server"] = "auf Server";
-App::$strings["Status"] = "Status";
-App::$strings["Server"] = "Server";
-App::$strings["Security"] = "Sicherheit";
-App::$strings["Block public"] = "Öffentlichen Zugriff blockieren";
-App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "Blockiere den öffentlichen Zugriff auf alle ansonsten öffentlichen persönlichen Seiten dieser Website, sofern ein Besucher nicht angemeldet ist.";
-App::$strings["Allow communications only from these sites"] = "Kommunikation nur von diesen Seiten erlauben";
-App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Ein Eintrag pro Zeile. Lasse das Feld leer, um Kommunikation grundlegend von überall her zu erlauben.";
-App::$strings["Block communications from these sites"] = "Kommunikation von diesen Seiten blockieren";
-App::$strings["Allow communications only from these channels"] = "Kommunikation nur von diesen Kanälen erlauben";
-App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "Ein Kanal (hash) pro Zeile. Leerlassen um jeden Kanal zuzulassen. ";
-App::$strings["Block communications from these channels"] = "Kommunikation von folgenden Kanälen blockieren";
-App::$strings["Allow embedded HTML content only from these domains"] = "Eingebetteten HTML Inhalt von folgenden Domains erlauben";
-App::$strings["One site per line. Leave empty to allow from any site by default"] = "Eine Seite pro Zeile. Leerlassen um von jeder Seite zuzulassen. ";
-App::$strings["Block embedded HTML from these domains"] = "Eingebettete HTML Inhalte von diesen Seiten blockieren";
-App::$strings["Cooperative embed security"] = "Kooperative Einbettungssicherheit";
-App::$strings["Enable to share embed security with other compatible sites/hubs"] = "Teile die Einbettungssicherheit mit anderen kompatiblen Websites/Hubs.";
-App::$strings["Update has been marked successful"] = "Update wurde als erfolgreich markiert";
-App::$strings["Executing %s failed. Check system logs."] = "Ausführen von %s fehlgeschlagen. Überprüfe die Systemprotokolle.";
-App::$strings["Update %s was successfully applied."] = "Update %s wurde erfolgreich ausgeführt.";
-App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "Update %s lieferte keinen Rückgabewert. Erfolg unbekannt.";
-App::$strings["Update function %s could not be found."] = "Update-Funktion %s konnte nicht gefunden werden.";
-App::$strings["No failed updates."] = "Keine fehlgeschlagenen Aktualisierungen.";
-App::$strings["Failed Updates"] = "Fehlgeschlagene Aktualisierungen";
-App::$strings["Mark success (if update was manually applied)"] = "Als erfolgreich markieren (wenn das Update manuell ausgeführt wurde)";
-App::$strings["Attempt to execute this update step automatically"] = "Versuche, diesen Updateschritt automatisch auszuführen";
-App::$strings["Queue Statistics"] = "Warteschlangenstatistiken";
-App::$strings["Total Entries"] = "Einträge insgesamt";
-App::$strings["Priority"] = "Priorität";
-App::$strings["Destination URL"] = "Ziel-URL";
-App::$strings["Mark hub permanently offline"] = "Hub als permanent offline markieren";
-App::$strings["Empty queue for this hub"] = "Warteschlange für diesen Hub leeren";
-App::$strings["Last known contact"] = "Letzter Kontakt";
-App::$strings["%s account blocked/unblocked"] = array(
- 0 => "%s Konto blockiert/freigegeben",
- 1 => "%s Konten blockiert/freigegeben",
-);
-App::$strings["%s account deleted"] = array(
- 0 => "%s Konto gelöscht",
- 1 => "%s Konten gelöscht",
-);
-App::$strings["Account not found"] = "Konto nicht gefunden";
-App::$strings["Account '%s' deleted"] = "Konto '%s' gelöscht";
-App::$strings["Account '%s' blocked"] = "Konto '%s' blockiert";
-App::$strings["Account '%s' unblocked"] = "Konto '%s' freigegeben";
-App::$strings["Users"] = "Benutzer";
-App::$strings["select all"] = "Alle auswählen";
-App::$strings["User registrations waiting for confirm"] = "Neuanmeldungen, die auf Deine Bestätigung warten";
-App::$strings["Request date"] = "Antragsdatum";
-App::$strings["Email"] = "E-Mail";
-App::$strings["No registrations."] = "Keine Registrierungen.";
-App::$strings["Approve"] = "Genehmigen";
-App::$strings["Deny"] = "Verweigern";
-App::$strings["Block"] = "Blockieren";
-App::$strings["Unblock"] = "Freigeben";
-App::$strings["All Channels"] = "Alle Kanäle";
-App::$strings["Register date"] = "Registrierungs-Datum";
-App::$strings["Last login"] = "Letzte Anmeldung";
-App::$strings["Expires"] = "Verfällt";
-App::$strings["Service Class"] = "Service-Klasse";
-App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Die ausgewählten Konten werden gelöscht!\\n\\nAlles, was diese Konten auf diesem Hub veröffentlicht haben, wird endgültig gelöscht werden!\\n\\nBist du dir sicher?";
-App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Das Konto {0} wird gelöscht!\\n\\nAlles, was dieses Konto auf diesem Hub veröffentlicht hat, wird endgültig gelöscht werden!\\n\\nBist Du sicher?";
-App::$strings["%s channel censored/uncensored"] = array(
- 0 => "%s Kanal gesperrt/freigegeben",
- 1 => "%s Kanäle gesperrt/freigegeben",
-);
-App::$strings["%s channel code allowed/disallowed"] = array(
- 0 => "Code für %s Kanal gesperrt/freigegeben",
- 1 => "Code für %s Kanäle gesperrt/freigegeben",
-);
-App::$strings["%s channel deleted"] = array(
- 0 => "%s Kanal gelöscht",
- 1 => "%s Kanäle gelöscht",
-);
-App::$strings["Channel not found"] = "Kanal nicht gefunden";
-App::$strings["Channel '%s' deleted"] = "Kanal '%s' gelöscht";
-App::$strings["Channel '%s' censored"] = "Kanal '%s' gesperrt";
-App::$strings["Channel '%s' uncensored"] = "Kanal '%s' freigegeben";
-App::$strings["Channel '%s' code allowed"] = "Code für Kanal '%s' freigegeben";
-App::$strings["Channel '%s' code disallowed"] = "Code für Kanal '%s' gesperrt";
-App::$strings["Channels"] = "Kanäle";
-App::$strings["Censor"] = "Sperren";
-App::$strings["Uncensor"] = "Freigeben";
-App::$strings["Allow Code"] = "Code erlauben";
-App::$strings["Disallow Code"] = "Code sperren";
-App::$strings["Channel"] = "Kanal";
-App::$strings["UID"] = "UID";
-App::$strings["Address"] = "Adresse";
-App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Alle ausgewählten Kanäle werden gelöscht!\\n\\nAlles was von diesen Kanälen auf diesem Server geschrieben wurde, wird dauerhaft gelöscht!\\n\\nBist Du sicher?";
-App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Der Kanal {0} wird gelöscht!\\n\\nAlles was von diesem Kanal auf diesem Server geschrieben wurde, wird gelöscht!\\n\\nBist Du sicher?";
-App::$strings["Plugin %s disabled."] = "Plug-In %s deaktiviert.";
-App::$strings["Plugin %s enabled."] = "Plug-In %s aktiviert.";
-App::$strings["Disable"] = "Deaktivieren";
-App::$strings["Enable"] = "Aktivieren";
-App::$strings["Plugins"] = "Plug-Ins";
-App::$strings["Toggle"] = "Umschalten";
-App::$strings["Settings"] = "Einstellungen";
-App::$strings["Author: "] = "Autor: ";
-App::$strings["Maintainer: "] = "Betreuer:";
-App::$strings["Minimum project version: "] = "Minimale Version des Projekts:";
-App::$strings["Maximum project version: "] = "Maximale Version des Projekts:";
-App::$strings["Minimum PHP version: "] = "Minimale PHP Version:";
-App::$strings["Requires: "] = "Benötigt:";
-App::$strings["Disabled - version incompatibility"] = "Abgeschaltet - Versionsinkompatibilität";
-App::$strings["No themes found."] = "Keine Theme gefunden.";
-App::$strings["Screenshot"] = "Bildschirmfoto";
-App::$strings["Themes"] = "Themes";
-App::$strings["[Experimental]"] = "[Experimentell]";
-App::$strings["[Unsupported]"] = "[Nicht unterstützt]";
-App::$strings["Log settings updated."] = "Protokoll-Einstellungen aktualisiert.";
-App::$strings["Logs"] = "Protokolle";
-App::$strings["Clear"] = "Leeren";
-App::$strings["Debugging"] = "Debugging";
-App::$strings["Log file"] = "Protokolldatei";
-App::$strings["Must be writable by web server. Relative to your Red top-level directory."] = "Muss für den Webserver schreibbar sein. Relativ zum \$Projectname-Stammverzeichnis.";
-App::$strings["Log level"] = "Protokollstufe";
-App::$strings["New Profile Field"] = "Neues Profilfeld";
-App::$strings["Field nickname"] = "Kurzname für das Feld";
-App::$strings["System name of field"] = "Systemname des Feldes";
-App::$strings["Input type"] = "Art des Inhalts";
-App::$strings["Field Name"] = "Feldname";
-App::$strings["Label on profile pages"] = "Bezeichnung auf Profilseiten";
-App::$strings["Help text"] = "Hilfetext";
-App::$strings["Additional info (optional)"] = "Zusätzliche Informationen (optional)";
-App::$strings["Save"] = "Speichern";
-App::$strings["Field definition not found"] = "Feld-Definition nicht gefunden";
-App::$strings["Edit Profile Field"] = "Profilfeld bearbeiten";
-App::$strings["Profile Fields"] = "Profil Felder";
-App::$strings["Basic Profile Fields"] = "Notwendige Profil Felder";
-App::$strings["Advanced Profile Fields"] = "Erweiterte Profil Felder";
-App::$strings["(In addition to basic fields)"] = "(zusätzlich zu notwendige Felder)";
-App::$strings["All available fields"] = "Alle verfügbaren Felder";
-App::$strings["Custom Fields"] = "Benutzerdefinierte Felder";
-App::$strings["Create Custom Field"] = "Erstelle benutzerdefiniertes Feld";
-App::$strings["Authorize application connection"] = "Zugriff für die Anwendung autorisieren";
-App::$strings["Return to your app and insert this Securty Code:"] = "Trage folgenden Sicherheitscode in der Anwendung ein:";
-App::$strings["Please login to continue."] = "Zum Weitermachen, bitte einloggen.";
-App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Möchtest Du dieser Anwendung erlauben, Deine Nachrichten und Kontakte abzurufen und/oder neue Nachrichten für Dich zu erstellen?";
-App::$strings["App installed."] = "App installiert.";
-App::$strings["Malformed app."] = "Fehlerhafte App.";
-App::$strings["Embed code"] = "Code einbetten";
-App::$strings["Edit App"] = "App bearbeiten";
-App::$strings["Create App"] = "App erstellen";
-App::$strings["Name of app"] = "Name der App";
-App::$strings["Required"] = "Benötigt";
-App::$strings["Location (URL) of app"] = "Ort (URL) der App";
-App::$strings["Description"] = "Beschreibung";
-App::$strings["Photo icon URL"] = "URL zum Icon";
-App::$strings["80 x 80 pixels - optional"] = "80 x 80 Pixel – optional";
-App::$strings["Version ID"] = "Versions-ID";
-App::$strings["Price of app"] = "Preis der App";
-App::$strings["Location (URL) to purchase app"] = "Ort (URL), um die App zu kaufen";
-App::$strings["Apps"] = "Apps";
-App::$strings["Item not available."] = "Element nicht verfügbar.";
-App::$strings["Invalid item."] = "Ungültiges Element.";
-App::$strings["Channel not found."] = "Kanal nicht gefunden.";
App::$strings["Block Name"] = "Block-Name";
App::$strings["Blocks"] = "Blöcke";
App::$strings["Block Title"] = "Titel des Blocks";
@@ -300,10 +44,7 @@ App::$strings["Created"] = "Erstellt";
App::$strings["Edited"] = "Geändert";
App::$strings["Share"] = "Teilen";
App::$strings["View"] = "Ansicht";
-App::$strings["Bookmark added"] = "Lesezeichen hinzugefügt";
-App::$strings["My Bookmarks"] = "Meine Lesezeichen";
-App::$strings["My Connections Bookmarks"] = "Lesezeichen meiner Kontakte";
-App::$strings["everybody"] = "alle";
+App::$strings["Channel not found."] = "Kanal nicht gefunden.";
App::$strings["Permissions denied."] = "Berechtigung verweigert.";
App::$strings["l, F j"] = "l, j. F";
App::$strings["Link to Source"] = "Link zur Quelle";
@@ -313,12 +54,12 @@ App::$strings["Previous"] = "Voriges";
App::$strings["Next"] = "Nächste";
App::$strings["Export"] = "Exportieren";
App::$strings["Import"] = "Import";
+App::$strings["Submit"] = "Bestätigen";
App::$strings["Today"] = "Heute";
App::$strings["You must be logged in to see this page."] = "Du musst angemeldet sein, um diese Seite betrachten zu können.";
App::$strings["Posts and comments"] = "Beiträge und Kommentare";
App::$strings["Only posts"] = "Nur Beiträge";
App::$strings["Insufficient permissions. Request redirected to profile page."] = "Unzureichende Zugriffsrechte. Die Anfrage wurde zur Profil-Seite umgeleitet.";
-App::$strings["Public"] = "Öffentlich";
App::$strings["Room not found"] = "Chatraum nicht gefunden";
App::$strings["Leave Room"] = "Raum verlassen";
App::$strings["Delete Room"] = "Raum löschen";
@@ -340,9 +81,10 @@ App::$strings["Expiration"] = "Verfall";
App::$strings["min"] = "min";
App::$strings["Away"] = "Abwesend";
App::$strings["Online"] = "Online";
-App::$strings["No channel."] = "Kein Kanal.";
-App::$strings["Common connections"] = "Gemeinsame Verbindungen";
-App::$strings["No connections in common."] = "Keine gemeinsamen Verbindungen.";
+App::$strings["Invalid item."] = "Ungültiges Element.";
+App::$strings["Bookmark added"] = "Lesezeichen hinzugefügt";
+App::$strings["My Bookmarks"] = "Meine Lesezeichen";
+App::$strings["My Connections Bookmarks"] = "Lesezeichen meiner Kontakte";
App::$strings["Continue"] = "Fortfahren";
App::$strings["Premium Channel Setup"] = "Premium-Kanal-Einrichtung";
App::$strings["Enable premium channel connection restrictions"] = "Einschränkungen für einen Premium-Kanal aktivieren";
@@ -352,41 +94,13 @@ App::$strings["Potential connections will then see the following text before pro
App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Indem ich fortfahre, bestätige ich die Erfüllung aller Anweisungen auf dieser Seite.";
App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(Der Kanal-Besitzer hat keine speziellen Anweisungen hinterlegt.)";
App::$strings["Restricted or Premium Channel"] = "Eingeschränkter oder Premium-Kanal";
-App::$strings["Blocked"] = "Blockiert";
-App::$strings["Ignored"] = "Ignoriert";
-App::$strings["Hidden"] = "Versteckt";
-App::$strings["Archived"] = "Archiviert";
-App::$strings["New"] = "Neu";
-App::$strings["All"] = "Alle";
-App::$strings["New Connections"] = "Neue Verbindungen";
-App::$strings["Show pending (new) connections"] = "Ausstehende (neue) Verbindungsanfragen anzeigen";
-App::$strings["All Connections"] = "Alle Verbindungen";
-App::$strings["Show all connections"] = "Alle Verbindungen anzeigen";
-App::$strings["Only show blocked connections"] = "Nur blockierte Verbindungen anzeigen";
-App::$strings["Only show ignored connections"] = "Nur ignorierte Verbindungen anzeigen";
-App::$strings["Only show archived connections"] = "Nur archivierte Verbindungen anzeigen";
-App::$strings["Only show hidden connections"] = "Nur versteckte Verbindungen anzeigen";
-App::$strings["Pending approval"] = "Wartet auf Genehmigung";
-App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-App::$strings["Edit connection"] = "Verbindung bearbeiten";
-App::$strings["Delete connection"] = "Verbindung löschen";
-App::$strings["Channel address"] = "Kanaladresse";
-App::$strings["Network"] = "Netzwerk";
-App::$strings["Connected"] = "Verbunden";
-App::$strings["Approve connection"] = "Verbindung genehmigen";
-App::$strings["Ignore connection"] = "Verbindung ignorieren";
-App::$strings["Ignore"] = "Ignorieren";
-App::$strings["Recent activity"] = "Kürzliche Aktivitäten";
-App::$strings["Connections"] = "Verbindungen";
-App::$strings["Search"] = "Suche";
-App::$strings["Search your connections"] = "Verbindungen durchsuchen";
-App::$strings["Connections search"] = "Verbindung suchen";
-App::$strings["Find"] = "Finde";
App::$strings["Could not access contact record."] = "Konnte nicht auf den Kontakteintrag zugreifen.";
App::$strings["Could not locate selected profile."] = "Gewähltes Profil nicht gefunden.";
App::$strings["Connection updated."] = "Verbindung aktualisiert.";
App::$strings["Failed to update connection record."] = "Konnte den Verbindungseintrag nicht aktualisieren.";
App::$strings["is now connected to"] = "ist jetzt verbunden mit";
+App::$strings["No"] = "Nein";
+App::$strings["Yes"] = "Ja";
App::$strings["Could not access address book record."] = "Konnte nicht auf den Adressbuch-Eintrag zugreifen.";
App::$strings["Refresh failed - channel is currently unavailable."] = "Aktualisierung fehlgeschlagen – der Kanal ist im Moment nicht erreichbar.";
App::$strings["Unable to set address book parameters."] = "Konnte die Adressbuch-Parameter nicht setzen.";
@@ -397,9 +111,12 @@ App::$strings["Refresh Permissions"] = "Zugriffsrechte neu laden";
App::$strings["Fetch updated permissions"] = "Aktualisierte Zugriffsrechte abfragen";
App::$strings["Recent Activity"] = "Kürzliche Aktivitäten";
App::$strings["View recent posts and comments"] = "Betrachte die neuesten Beiträge und Kommentare";
+App::$strings["Unblock"] = "Freigeben";
+App::$strings["Block"] = "Blockieren";
App::$strings["Block (or Unblock) all communications with this connection"] = "Jegliche Kommunikation mit dieser Verbindung blockieren/zulassen";
App::$strings["This connection is blocked!"] = "Die Verbindung ist geblockt!";
App::$strings["Unignore"] = "Nicht ignorieren";
+App::$strings["Ignore"] = "Ignorieren";
App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Jegliche eingehende Kommunikation von dieser Verbindung ignorieren/zulassen";
App::$strings["This connection is ignored!"] = "Die Verbindung wird ignoriert!";
App::$strings["Unarchive"] = "Aus Archiv zurückholen";
@@ -415,6 +132,7 @@ App::$strings["Me"] = "Ich";
App::$strings["Family"] = "Familie";
App::$strings["Friends"] = "Freunde";
App::$strings["Acquaintances"] = "Bekannte";
+App::$strings["All"] = "Alle";
App::$strings["Approve this connection"] = "Verbindung genehmigen";
App::$strings["Accept connection to allow communication"] = "Akzeptiere die Verbindung, um Kommunikation zu ermöglichen";
App::$strings["Set Affinity"] = "Beziehung festlegen";
@@ -428,6 +146,7 @@ App::$strings["Connection requests will be approved without your interaction"] =
App::$strings["This connection's primary address is"] = "Die Hauptadresse der Verbindung ist";
App::$strings["Available locations:"] = "Verfügbare Klone:";
App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Die auf dieser Seite angegebenen Berechtigungen werden auf alle neuen Verbindungen angewendet.";
+App::$strings["Connection Tools"] = "Verbindungswerkzeuge";
App::$strings["Slide to adjust your degree of friendship"] = "Verschieben, um den Grad der Freundschaft zu einzustellen";
App::$strings["Rating"] = "Bewertung";
App::$strings["Slide to adjust your rating"] = "Verschieben, um Deine Bewertung einzustellen";
@@ -446,29 +165,6 @@ App::$strings["Individual Permissions"] = "Individuelle Zugriffsrechte";
App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals vererbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung und können hier nicht verändert werden.";
App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Einige Berechtigungen werden möglicherweise von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals geerbt. Diese haben eine höhere Priorität als die Einstellungen an der Verbindung. Werden geerbte Einstellungen hier geändert, hat dies keine Auswirkungen.";
App::$strings["Last update:"] = "Letzte Aktualisierung:";
-App::$strings["Image uploaded but image cropping failed."] = "Bild hochgeladen, aber das Zurechtschneiden schlug fehl.";
-App::$strings["Cover Photos"] = "Cover Foto";
-App::$strings["Image resize failed."] = "Bild-Anpassung fehlgeschlagen.";
-App::$strings["Unable to process image"] = "Kann Bild nicht verarbeiten";
-App::$strings["Image upload failed."] = "Hochladen des Bilds fehlgeschlagen.";
-App::$strings["Unable to process image."] = "Kann Bild nicht verarbeiten.";
-App::$strings["female"] = "weiblich";
-App::$strings["%1\$s updated her %2\$s"] = "%1\$s hat ihr %2\$s aktualisiert";
-App::$strings["male"] = "männlich";
-App::$strings["%1\$s updated his %2\$s"] = "%1\$s hat sein %2\$s aktualisiert";
-App::$strings["%1\$s updated their %2\$s"] = "%1\$s hat sein/ihr %2\$s aktualisiert";
-App::$strings["cover photo"] = "Cover Foto";
-App::$strings["Photo not available."] = "Foto nicht verfügbar.";
-App::$strings["Upload File:"] = "Datei hochladen:";
-App::$strings["Select a profile:"] = "Wähle ein Profil:";
-App::$strings["Upload Cover Photo"] = "Cover Foto hochladen";
-App::$strings["or"] = "oder";
-App::$strings["skip this step"] = "diesen Schritt überspringen";
-App::$strings["select a photo from your photo albums"] = "ein Foto aus meinen Fotoalben";
-App::$strings["Crop Image"] = "Bild zuschneiden";
-App::$strings["Please adjust the image cropping for optimum viewing."] = "Bitte schneide das Bild für eine optimale Anzeige passend zu.";
-App::$strings["Done Editing"] = "Bearbeitung fertigstellen";
-App::$strings["\$Projectname channel"] = "\$Projectname-Kanal";
App::$strings["Public access denied."] = "Öffentlichen Zugriff verweigert.";
App::$strings["%d rating"] = array(
0 => "%d Bewertung",
@@ -489,6 +185,7 @@ App::$strings["Don't suggest"] = "Nicht vorschlagen";
App::$strings["Common connections:"] = "Gemeinsame Verbindungen:";
App::$strings["Global Directory"] = "Globales Verzeichnis";
App::$strings["Local Directory"] = "Lokales Verzeichnis";
+App::$strings["Find"] = "Finde";
App::$strings["Finding:"] = "Ergebnisse:";
App::$strings["Channel Suggestions"] = "Kanal-Vorschläge";
App::$strings["next page"] = "nächste Seite";
@@ -499,60 +196,66 @@ App::$strings["Reverse Alphabetic"] = "Entgegengesetzt alphabetisch";
App::$strings["Newest to Oldest"] = "Neueste zuerst";
App::$strings["Oldest to Newest"] = "Älteste zuerst";
App::$strings["No entries (some entries may be hidden)."] = "Keine Einträge gefunden (einige könnten versteckt sein).";
-App::$strings["This site is not a directory server"] = "Diese Webseite ist kein Verzeichnisserver";
-App::$strings["This directory server requires an access token"] = "Dieser Verzeichnisserver benötigt einen Zugriffstoken";
-App::$strings["Permission denied"] = "Keine Berechtigung";
-App::$strings["Invalid message"] = "Ungültige Beitrags-ID (mid)";
-App::$strings["no results"] = "keine Ergebnisse";
-App::$strings["Delivery report for %1\$s"] = "Zustellungsbericht für %1\$s";
-App::$strings["channel sync processed"] = "Kanal-Sync verarbeitet";
-App::$strings["queued"] = "zur Warteschlange hinzugefügt";
-App::$strings["posted"] = "zugestellt";
-App::$strings["accepted for delivery"] = "für Zustellung akzeptiert";
-App::$strings["updated"] = "aktualisiert";
-App::$strings["update ignored"] = "Aktualisierung ignoriert";
-App::$strings["permission denied"] = "Zugriff verweigert";
-App::$strings["recipient not found"] = "Empfänger nicht gefunden.";
-App::$strings["mail recalled"] = "Mail widerrufen";
-App::$strings["duplicate mail received"] = "Doppelte Mail erhalten";
-App::$strings["mail delivered"] = "Mail zugestellt";
+App::$strings["Item not found."] = "Element nicht gefunden.";
App::$strings["Item not found"] = "Element nicht gefunden";
-App::$strings["Delete block?"] = "Block löschen?";
-App::$strings["Bold"] = "Fett";
-App::$strings["Italic"] = "Kursiv";
-App::$strings["Underline"] = "Unterstrichen";
-App::$strings["Quote"] = "Zitat";
-App::$strings["Code"] = "Code";
-App::$strings["Upload photo"] = "Foto hochladen";
-App::$strings["Attach file"] = "Datei anhängen";
-App::$strings["Insert YouTube video"] = "YouTube-Video einfügen";
-App::$strings["Insert Vorbis [.ogg] video"] = "Vorbis [.ogg]-Video einfügen";
-App::$strings["Insert Vorbis [.ogg] audio"] = "Vorbis [.ogg]-Audio einfügen";
-App::$strings["Set your location"] = "Standort";
-App::$strings["Clear browser location"] = "Browser-Standort löschen";
-App::$strings["Please wait"] = "Bitte warten";
-App::$strings["Permission settings"] = "Berechtigungs-Einstellungen";
-App::$strings["Public post"] = "Öffentlicher Beitrag";
App::$strings["Title (optional)"] = "Titel (optional)";
-App::$strings["Categories (optional, comma-separated list)"] = "Kategorien (optional, kommagetrennte Liste)";
-App::$strings["Example: bob@example.com, mary@example.com"] = "Beispiel: bob@example.com, mary@example.com";
-App::$strings["Preview"] = "Vorschau";
-App::$strings["Set expiration date"] = "Verfallsdatum";
App::$strings["Edit Block"] = "Block bearbeiten";
-App::$strings["Delete layout?"] = "Layout löschen?";
-App::$strings["Layout Description (Optional)"] = "Layout-Beschreibung (optional)";
-App::$strings["Layout Name"] = "Layout-Name";
-App::$strings["Edit Layout"] = "Layout bearbeiten";
+App::$strings["No channel."] = "Kein Kanal.";
+App::$strings["Common connections"] = "Gemeinsame Verbindungen";
+App::$strings["No connections in common."] = "Keine gemeinsamen Verbindungen.";
+App::$strings["Blocked"] = "Blockiert";
+App::$strings["Ignored"] = "Ignoriert";
+App::$strings["Hidden"] = "Versteckt";
+App::$strings["Archived"] = "Archiviert";
+App::$strings["New"] = "Neu";
+App::$strings["New Connections"] = "Neue Verbindungen";
+App::$strings["Show pending (new) connections"] = "Ausstehende (neue) Verbindungsanfragen anzeigen";
+App::$strings["All Connections"] = "Alle Verbindungen";
+App::$strings["Show all connections"] = "Alle Verbindungen anzeigen";
+App::$strings["Only show blocked connections"] = "Nur blockierte Verbindungen anzeigen";
+App::$strings["Only show ignored connections"] = "Nur ignorierte Verbindungen anzeigen";
+App::$strings["Only show archived connections"] = "Nur archivierte Verbindungen anzeigen";
+App::$strings["Only show hidden connections"] = "Nur versteckte Verbindungen anzeigen";
+App::$strings["Pending approval"] = "Wartet auf Genehmigung";
+App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
+App::$strings["Edit connection"] = "Verbindung bearbeiten";
+App::$strings["Delete connection"] = "Verbindung löschen";
+App::$strings["Channel address"] = "Kanaladresse";
+App::$strings["Network"] = "Netzwerk";
+App::$strings["Status"] = "Status";
+App::$strings["Connected"] = "Verbunden";
+App::$strings["Approve connection"] = "Verbindung genehmigen";
+App::$strings["Approve"] = "Genehmigen";
+App::$strings["Ignore connection"] = "Verbindung ignorieren";
+App::$strings["Recent activity"] = "Kürzliche Aktivitäten";
+App::$strings["Connections"] = "Verbindungen";
+App::$strings["Search"] = "Suche";
+App::$strings["Search your connections"] = "Verbindungen durchsuchen";
+App::$strings["Connections search"] = "Verbindung suchen";
+App::$strings["Image uploaded but image cropping failed."] = "Bild hochgeladen, aber das Zurechtschneiden schlug fehl.";
+App::$strings["Cover Photos"] = "Cover Foto";
+App::$strings["Image resize failed."] = "Bild-Anpassung fehlgeschlagen.";
+App::$strings["Unable to process image"] = "Kann Bild nicht verarbeiten";
+App::$strings["Image upload failed."] = "Hochladen des Bilds fehlgeschlagen.";
+App::$strings["Unable to process image."] = "Kann Bild nicht verarbeiten.";
+App::$strings["female"] = "weiblich";
+App::$strings["%1\$s updated her %2\$s"] = "%1\$s hat ihr %2\$s aktualisiert";
+App::$strings["male"] = "männlich";
+App::$strings["%1\$s updated his %2\$s"] = "%1\$s hat sein %2\$s aktualisiert";
+App::$strings["%1\$s updated their %2\$s"] = "%1\$s hat sein/ihr %2\$s aktualisiert";
+App::$strings["cover photo"] = "Cover Foto";
+App::$strings["Photo not available."] = "Foto nicht verfügbar.";
+App::$strings["Upload File:"] = "Datei hochladen:";
+App::$strings["Select a profile:"] = "Wähle ein Profil:";
+App::$strings["Upload Cover Photo"] = "Cover Foto hochladen";
+App::$strings["or"] = "oder";
+App::$strings["skip this step"] = "diesen Schritt überspringen";
+App::$strings["select a photo from your photo albums"] = "ein Foto aus meinen Fotoalben";
+App::$strings["Crop Image"] = "Bild zuschneiden";
+App::$strings["Please adjust the image cropping for optimum viewing."] = "Bitte schneide das Bild für eine optimale Anzeige passend zu.";
+App::$strings["Done Editing"] = "Bearbeitung fertigstellen";
App::$strings["Item is not editable"] = "Element kann nicht bearbeitet werden.";
-App::$strings["Expires YYYY-MM-DD HH:MM"] = "Verfällt YYYY-MM-DD HH;MM";
-App::$strings["Delete item?"] = "Eintrag löschen?";
-App::$strings["Toggle voting"] = "Umfragewerkzeug aktivieren";
-App::$strings["OK"] = "Ok";
-App::$strings["Cancel"] = "Abbrechen";
App::$strings["Edit post"] = "Bearbeite Beitrag";
-App::$strings["Delete webpage?"] = "Webseite löschen?";
-App::$strings["Page link title"] = "Seitentitel-Link";
-App::$strings["Edit Webpage"] = "Webseite bearbeiten";
App::$strings["Calendar entries imported."] = "Kalendereinträge wurden importiert.";
App::$strings["No calendar entries found."] = "Keine Kalendereinträge gefunden.";
App::$strings["Event can not end before it has started."] = "Termin-Ende liegt vor dem Beginn.";
@@ -562,6 +265,7 @@ App::$strings["Event not found."] = "Termin nicht gefunden.";
App::$strings["event"] = "Termin";
App::$strings["Edit event title"] = "Termintitel bearbeiten";
App::$strings["Event title"] = "Termintitel";
+App::$strings["Required"] = "Benötigt";
App::$strings["Categories (comma-separated list)"] = "Kategorien (Kommagetrennte Liste)";
App::$strings["Edit Category"] = "Kategorie bearbeiten";
App::$strings["Category"] = "Kategorie";
@@ -573,9 +277,12 @@ App::$strings["Finish date and time"] = "Enddatum und -zeit";
App::$strings["Adjust for viewer timezone"] = "An die Zeitzone des Betrachters anpassen";
App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Wichtig für Veranstaltungen die an bestimmten Orten stattfinden. Nicht sinnvoll für globale Feiertage / Ferien.";
App::$strings["Edit Description"] = "Beschreibung bearbeiten";
+App::$strings["Description"] = "Beschreibung";
App::$strings["Edit Location"] = "Ort bearbeiten";
App::$strings["Location"] = "Ort";
App::$strings["Share this event"] = "Den Termin teilen";
+App::$strings["Preview"] = "Vorschau";
+App::$strings["Permission settings"] = "Berechtigungs-Einstellungen";
App::$strings["Advanced Options"] = "Weitere Optionen";
App::$strings["Edit event"] = "Termin bearbeiten";
App::$strings["Delete event"] = "Termin löschen";
@@ -583,26 +290,34 @@ App::$strings["calendar"] = "Kalender";
App::$strings["Event removed"] = "Termin gelöscht";
App::$strings["Failed to remove event"] = "Termin konnte nicht gelöscht werden";
App::$strings["Photos"] = "Fotos";
-App::$strings["Share content from Firefox to \$Projectname"] = "Inhalte von Firefox nach \$Projectname teilen";
-App::$strings["Activate the Firefox \$Projectname provider"] = "Aktiviert den \$Projectname-Provider für firefox";
+App::$strings["Cancel"] = "Abbrechen";
+App::$strings["This site is not a directory server"] = "Diese Webseite ist kein Verzeichnisserver";
+App::$strings["This directory server requires an access token"] = "Dieser Verzeichnisserver benötigt einen Zugriffstoken";
App::$strings["Save to Folder:"] = "Speichern in Ordner:";
App::$strings["- select -"] = "– auswählen –";
-App::$strings["Permission Denied."] = "Zugriff verweigert.";
-App::$strings["File not found."] = "Datei nicht gefunden.";
-App::$strings["Edit file permissions"] = "Dateiberechtigungen bearbeiten";
-App::$strings["Set/edit permissions"] = "Berechtigungen setzen/ändern";
-App::$strings["Include all files and sub folders"] = "Alle Dateien und Unterverzeichnisse einbinden";
-App::$strings["Return to file list"] = "Zurück zur Dateiliste";
-App::$strings["Copy/paste this code to attach file to a post"] = "Diesen Code kopieren und einfügen, um die Datei an einen Beitrag anzuhängen";
-App::$strings["Copy/paste this URL to link file from a web page"] = "Diese URL verwenden, um von einer Webseite aus auf die Datei zu verlinken";
-App::$strings["Share this file"] = "Diese Datei freigeben";
-App::$strings["Show URL to this file"] = "URL zu dieser Datei anzeigen";
-App::$strings["Notify your contacts about this file"] = "Meine Kontakte über diese Datei benachrichtigen";
+App::$strings["Save"] = "Speichern";
+App::$strings["Invalid message"] = "Ungültige Beitrags-ID (mid)";
+App::$strings["no results"] = "keine Ergebnisse";
+App::$strings["Delivery report for %1\$s"] = "Zustellungsbericht für %1\$s";
+App::$strings["channel sync processed"] = "Kanal-Sync verarbeitet";
+App::$strings["queued"] = "zur Warteschlange hinzugefügt";
+App::$strings["posted"] = "zugestellt";
+App::$strings["accepted for delivery"] = "für Zustellung akzeptiert";
+App::$strings["updated"] = "aktualisiert";
+App::$strings["update ignored"] = "Aktualisierung ignoriert";
+App::$strings["permission denied"] = "Zugriff verweigert";
+App::$strings["recipient not found"] = "Empfänger nicht gefunden.";
+App::$strings["mail recalled"] = "Mail widerrufen";
+App::$strings["duplicate mail received"] = "Doppelte Mail erhalten";
+App::$strings["mail delivered"] = "Mail zugestellt";
+App::$strings["Layout Name"] = "Layout-Name";
+App::$strings["Layout Description (Optional)"] = "Layout-Beschreibung (optional)";
+App::$strings["Edit Layout"] = "Layout bearbeiten";
+App::$strings["Page link"] = "Seiten-Link";
+App::$strings["Edit Webpage"] = "Webseite bearbeiten";
App::$strings["Channel added."] = "Kanal hinzugefügt.";
-App::$strings["Contact not found."] = "Kontakt nicht gefunden";
-App::$strings["Friend suggestion sent."] = "Freundschaftsempfehlung senden.";
-App::$strings["Suggest Friends"] = "Kontakte vorschlagen";
-App::$strings["Suggest a friend for %s"] = "Schlage %s einen Kontakt vor";
+App::$strings["network"] = "Netzwerk";
+App::$strings["RSS"] = "RSS";
App::$strings["Privacy group created."] = "Gruppe wurde erstellt.";
App::$strings["Could not create privacy group."] = "Gruppe konnte nicht erstellt werden.";
App::$strings["Privacy group not found."] = "Gruppe nicht gefunden.";
@@ -616,39 +331,29 @@ App::$strings["Privacy group editor"] = "Gruppeneditor";
App::$strings["Members"] = "Mitglieder";
App::$strings["All Connected Channels"] = "Alle verbundenen Kanäle";
App::$strings["Click on a channel to add or remove."] = "Wähle einen Kanal zum hinzufügen oder entfernen aus.";
+App::$strings["Share content from Firefox to \$Projectname"] = "Inhalte von Firefox nach \$Projectname teilen";
+App::$strings["Activate the Firefox \$Projectname provider"] = "Aktiviert den \$Projectname-Provider für firefox";
+App::$strings["Authorize application connection"] = "Zugriff für die Anwendung autorisieren";
+App::$strings["Return to your app and insert this Securty Code:"] = "Trage folgenden Sicherheitscode in der Anwendung ein:";
+App::$strings["Please login to continue."] = "Zum Weitermachen, bitte einloggen.";
+App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Möchtest Du dieser Anwendung erlauben, Deine Nachrichten und Kontakte abzurufen und/oder neue Nachrichten für Dich zu erstellen?";
App::$strings["Documentation Search"] = "Suche in der Dokumentation";
App::$strings["Help:"] = "Hilfe:";
App::$strings["Help"] = "Hilfe";
App::$strings["\$Projectname Documentation"] = "\$Projectname-Dokumentation";
-App::$strings["\$Projectname"] = "\$Projectname";
-App::$strings["Welcome to %s"] = "Willkommen auf %s";
-App::$strings["First Name"] = "Vorname";
-App::$strings["Last Name"] = "Nachname";
-App::$strings["Nickname"] = "Spitzname";
-App::$strings["Full Name"] = "Voller Name";
-App::$strings["Profile Photo"] = "Profilfoto";
-App::$strings["Profile Photo 16px"] = "Profilfoto 16 px";
-App::$strings["Profile Photo 32px"] = "Profilfoto 32 px";
-App::$strings["Profile Photo 48px"] = "Profilfoto 48 px";
-App::$strings["Profile Photo 64px"] = "Profilfoto 64 px";
-App::$strings["Profile Photo 80px"] = "Profilfoto 80 px";
-App::$strings["Profile Photo 128px"] = "Profilfoto 128 px";
-App::$strings["Timezone"] = "Zeitzone";
-App::$strings["Homepage URL"] = "Homepage-URL";
-App::$strings["Language"] = "Sprache";
-App::$strings["Birth Year"] = "Geburtsjahr";
-App::$strings["Birth Month"] = "Geburtsmonat";
-App::$strings["Birth Day"] = "Geburtstag";
-App::$strings["Birthdate"] = "Geburtsdatum";
-App::$strings["Gender"] = "Geschlecht";
-App::$strings["Male"] = "Männlich";
-App::$strings["Female"] = "Weiblich";
-App::$strings["webpage"] = "Webseite";
-App::$strings["block"] = "Block";
-App::$strings["layout"] = "Layout";
-App::$strings["menu"] = "Menü";
-App::$strings["%s element installed"] = "Element für %s installiert";
-App::$strings["%s element installation failed"] = "Installation des Elements %s fehlgeschlagen";
+App::$strings["Permission Denied."] = "Zugriff verweigert.";
+App::$strings["File not found."] = "Datei nicht gefunden.";
+App::$strings["Edit file permissions"] = "Dateiberechtigungen bearbeiten";
+App::$strings["Set/edit permissions"] = "Berechtigungen setzen/ändern";
+App::$strings["Include all files and sub folders"] = "Alle Dateien und Unterverzeichnisse einbinden";
+App::$strings["Return to file list"] = "Zurück zur Dateiliste";
+App::$strings["Copy/paste this code to attach file to a post"] = "Diesen Code kopieren und einfügen, um die Datei an einen Beitrag anzuhängen";
+App::$strings["Copy/paste this URL to link file from a web page"] = "Diese URL verwenden, um von einer Webseite aus auf die Datei zu verlinken";
+App::$strings["Share this file"] = "Diese Datei freigeben";
+App::$strings["Show URL to this file"] = "URL zu dieser Datei anzeigen";
+App::$strings["Notify your contacts about this file"] = "Meine Kontakte über diese Datei benachrichtigen";
+App::$strings["Apps"] = "Apps";
+App::$strings["Item not available."] = "Element nicht verfügbar.";
App::$strings["Your service plan only allows %d channels."] = "Dein Vertrag erlaubt nur %d Kanäle.";
App::$strings["Nothing to import."] = "Nichts zu importieren.";
App::$strings["Unable to download data from old server"] = "Daten können vom alten Server nicht heruntergeladen werden";
@@ -669,28 +374,6 @@ App::$strings["For either option, please choose whether to make this hub your ne
App::$strings["Make this hub my primary location"] = "Dieser $Pojectname-Hub ist mein primärer Hub.";
App::$strings["Import existing posts if possible (experimental - limited by available memory"] = "Importiere bestehende Beiträge falls möglich (experimentell - begrenzt durch zur Verfügung stehenden Speicher";
App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Dieser Vorgang kann einige Minuten dauern. Bitte sende das Formular nur einmal ab und lasse diese Seite bis zur Fertigstellung offen.";
-App::$strings["Import completed"] = "Import abgeschlossen";
-App::$strings["Import Items"] = "Beiträge importieren";
-App::$strings["Use this form to import existing posts and content from an export file."] = "Mit diesem Formular kannst Du existierende Beiträge und Inhalte aus einer Sicherungsdatei importieren.";
-App::$strings["Total invitation limit exceeded."] = "Einladungslimit überschritten.";
-App::$strings["%s : Not a valid email address."] = "%s : Keine gültige Email Adresse.";
-App::$strings["Please join us on \$Projectname"] = "Schließe Dich uns auf \$Projectname an!";
-App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Einladungslimit überschritten. Bitte kontaktiere den Administrator Deines \$Projectname-Servers.";
-App::$strings["%s : Message delivery failed."] = "%s : Nachricht konnte nicht zugestellt werden.";
-App::$strings["%d message sent."] = array(
- 0 => "%d Nachricht gesendet.",
- 1 => "%d Nachrichten gesendet.",
-);
-App::$strings["You have no more invitations available"] = "Du hast keine weiteren verfügbare Einladungen";
-App::$strings["Send invitations"] = "Einladungen senden";
-App::$strings["Enter email addresses, one per line:"] = "Email-Adressen eintragen, eine pro Zeile:";
-App::$strings["Your message:"] = "Deine Nachricht:";
-App::$strings["Please join my community on \$Projectname."] = "Schließe Dich uns auf \$Projectname an!";
-App::$strings["You will need to supply this invitation code:"] = "Bitte verwende bei der Registrierung den folgenden Einladungscode:";
-App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Registriere Dich auf einem beliebigen \$Projectname-Hub (sie sind alle miteinander verbunden)";
-App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Gib meine \$Projectname-Adresse im Suchfeld ein.";
-App::$strings["or visit"] = "oder besuche";
-App::$strings["3. Click [Connect]"] = "3. Klicke auf [Verbinden]";
App::$strings["Unable to locate original post."] = "Originalbeitrag nicht gefunden.";
App::$strings["Empty post discarded."] = "Leeren Beitrag verworfen.";
App::$strings["Executable content type not permitted to this channel."] = "Ausführbarer Content-Typ ist für diesen Kanal nicht freigegeben.";
@@ -703,6 +386,36 @@ App::$strings["Layouts"] = "Layouts";
App::$strings["Comanche page description language help"] = "Hilfe zur Comanche-Seitenbeschreibungssprache";
App::$strings["Layout Description"] = "Layout-Beschreibung";
App::$strings["Download PDL file"] = "PDL-Datei herunterladen";
+App::$strings["\$Projectname"] = "\$Projectname";
+App::$strings["Welcome to %s"] = "Willkommen auf %s";
+App::$strings["First Name"] = "Vorname";
+App::$strings["Last Name"] = "Nachname";
+App::$strings["Nickname"] = "Spitzname";
+App::$strings["Full Name"] = "Voller Name";
+App::$strings["Email"] = "E-Mail";
+App::$strings["Profile Photo"] = "Profilfoto";
+App::$strings["Profile Photo 16px"] = "Profilfoto 16 px";
+App::$strings["Profile Photo 32px"] = "Profilfoto 32 px";
+App::$strings["Profile Photo 48px"] = "Profilfoto 48 px";
+App::$strings["Profile Photo 64px"] = "Profilfoto 64 px";
+App::$strings["Profile Photo 80px"] = "Profilfoto 80 px";
+App::$strings["Profile Photo 128px"] = "Profilfoto 128 px";
+App::$strings["Timezone"] = "Zeitzone";
+App::$strings["Homepage URL"] = "Homepage-URL";
+App::$strings["Language"] = "Sprache";
+App::$strings["Birth Year"] = "Geburtsjahr";
+App::$strings["Birth Month"] = "Geburtsmonat";
+App::$strings["Birth Day"] = "Geburtstag";
+App::$strings["Birthdate"] = "Geburtsdatum";
+App::$strings["Gender"] = "Geschlecht";
+App::$strings["Male"] = "Männlich";
+App::$strings["Female"] = "Weiblich";
+App::$strings["webpage"] = "Webseite";
+App::$strings["block"] = "Block";
+App::$strings["layout"] = "Layout";
+App::$strings["menu"] = "Menü";
+App::$strings["%s element installed"] = "Element für %s installiert";
+App::$strings["%s element installation failed"] = "Installation des Elements %s fehlgeschlagen";
App::$strings["Like/Dislike"] = "Mögen/Nicht mögen";
App::$strings["This action is restricted to members."] = "Diese Aktion kann nur von Mitgliedern ausgeführt werden.";
App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "Um fortzufahren <a href=\"rmagic\">melde Dich bitte mit Deiner \$Projectname-ID an</a> oder <a href=\"register\">registriere Dich als neues \$Projectname-Mitglied</a>.";
@@ -723,6 +436,28 @@ App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s nimmt an %2\$ss %
App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s nimmt vielleicht an %2\$ss %3\$s teil";
App::$strings["Action completed."] = "Aktion durchgeführt.";
App::$strings["Thank you."] = "Vielen Dank.";
+App::$strings["Import completed"] = "Import abgeschlossen";
+App::$strings["Import Items"] = "Beiträge importieren";
+App::$strings["Use this form to import existing posts and content from an export file."] = "Mit diesem Formular kannst Du existierende Beiträge und Inhalte aus einer Sicherungsdatei importieren.";
+App::$strings["Total invitation limit exceeded."] = "Einladungslimit überschritten.";
+App::$strings["%s : Not a valid email address."] = "%s : Keine gültige Email Adresse.";
+App::$strings["Please join us on \$Projectname"] = "Schließe Dich uns auf \$Projectname an!";
+App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Einladungslimit überschritten. Bitte kontaktiere den Administrator Deines \$Projectname-Servers.";
+App::$strings["%s : Message delivery failed."] = "%s : Nachricht konnte nicht zugestellt werden.";
+App::$strings["%d message sent."] = array(
+ 0 => "%d Nachricht gesendet.",
+ 1 => "%d Nachrichten gesendet.",
+);
+App::$strings["You have no more invitations available"] = "Du hast keine weiteren verfügbare Einladungen";
+App::$strings["Send invitations"] = "Einladungen senden";
+App::$strings["Enter email addresses, one per line:"] = "Email-Adressen eintragen, eine pro Zeile:";
+App::$strings["Your message:"] = "Deine Nachricht:";
+App::$strings["Please join my community on \$Projectname."] = "Schließe Dich uns auf \$Projectname an!";
+App::$strings["You will need to supply this invitation code:"] = "Bitte verwende bei der Registrierung den folgenden Einladungscode:";
+App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Registriere Dich auf einem beliebigen \$Projectname-Hub (sie sind alle miteinander verbunden)";
+App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Gib meine \$Projectname-Adresse im Suchfeld ein.";
+App::$strings["or visit"] = "oder besuche";
+App::$strings["3. Click [Connect]"] = "3. Klicke auf [Verbinden]";
App::$strings["Remote privacy information not available."] = "Privatsphäre-Einstellungen anderer Nutzer sind nicht verfügbar.";
App::$strings["Visible to:"] = "Sichtbar für:";
App::$strings["Location not found."] = "Klon nicht gefunden.";
@@ -731,28 +466,13 @@ App::$strings["Please select another location to become primary before removing
App::$strings["Syncing locations"] = "Synchronisiere Klone";
App::$strings["No locations found."] = "Keine Klon-Adressen gefunden.";
App::$strings["Manage Channel Locations"] = "Klon-Adressen verwalten";
+App::$strings["Address"] = "Adresse";
App::$strings["Primary"] = "Primär";
App::$strings["Drop"] = "Löschen";
App::$strings["Sync Now"] = "Jetzt synchronisieren";
App::$strings["Please wait several minutes between consecutive operations."] = "Bitte warte mehrere Minuten zwischen dem Ausführen zweier Operationen!";
App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Wenn möglich, lösche einen Klon, indem Du Dich auf dem jeweiligen Hub einloggst und den Kanal dort löschst.";
App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Benutze dieses Formular zum Löschen eines Klons, wenn es den Hub nicht mehr gibt.";
-App::$strings["No valid account found."] = "Kein gültiges Konto gefunden.";
-App::$strings["Password reset request issued. Check your email."] = "Zurücksetzen des Passworts eingeleitet. Schau in Deine E-Mails.";
-App::$strings["Site Member (%s)"] = "Nutzer (%s)";
-App::$strings["Password reset requested at %s"] = "Passwort-Rücksetzung auf %s angefordert";
-App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Die Anfrage konnte nicht verifiziert werden. (Vielleicht hast Du schon einmal auf den Link in der E-Mail geklickt?) Passwort-Rücksetzung fehlgeschlagen.";
-App::$strings["Password Reset"] = "Zurücksetzen des Kennworts";
-App::$strings["Your password has been reset as requested."] = "Dein Passwort wurde wie angefordert neu erstellt.";
-App::$strings["Your new password is"] = "Dein neues Passwort lautet";
-App::$strings["Save or copy your new password - and then"] = "Speichere oder kopiere Dein neues Passwort – und dann";
-App::$strings["click here to login"] = "Klicke hier, um dich anzumelden";
-App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Dein Passwort kann unter <em>Einstellungen</em> nach einer erfolgreichen Anmeldung geändert werden.";
-App::$strings["Your password has changed at %s"] = "Auf %s wurde Dein Passwort geändert";
-App::$strings["Forgot your Password?"] = "Kennwort vergessen?";
-App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Gib Deine E-Mail-Adresse ein, um Dein Passwort zurücksetzen zu lassen. Du erhältst dann weitere Anweisungen per E-Mail.";
-App::$strings["Email Address"] = "E-Mail Adresse";
-App::$strings["Reset"] = "Zurücksetzen";
App::$strings["Hub not found."] = "Server nicht gefunden.";
App::$strings["Unable to lookup recipient."] = "Konnte den Empfänger nicht finden.";
App::$strings["Unable to communicate with requested channel."] = "Die Kommunikation mit dem ausgewählten Kanal ist fehlgeschlagen.";
@@ -761,11 +481,14 @@ App::$strings["Selected channel has private message restrictions. Send failed."]
App::$strings["Messages"] = "Nachrichten";
App::$strings["Message recalled."] = "Nachricht widerrufen.";
App::$strings["Conversation removed."] = "Unterhaltung gelöscht.";
+App::$strings["Expires YYYY-MM-DD HH:MM"] = "Verfällt YYYY-MM-DD HH;MM";
App::$strings["Requested channel is not in this network"] = "Angeforderter Kanal ist nicht in diesem Netzwerk.";
App::$strings["Send Private Message"] = "Private Nachricht senden";
App::$strings["To:"] = "An:";
App::$strings["Subject:"] = "Betreff:";
+App::$strings["Attach file"] = "Datei anhängen";
App::$strings["Send"] = "Absenden";
+App::$strings["Set expiration date"] = "Verfallsdatum";
App::$strings["Delete message"] = "Nachricht löschen";
App::$strings["Delivery report"] = "Zustellungsbericht";
App::$strings["Recall message"] = "Nachricht widerrufen";
@@ -784,10 +507,22 @@ App::$strings["Make Default"] = "Zum Standard machen";
App::$strings["%d new messages"] = "%d neue Nachrichten";
App::$strings["%d new introductions"] = "%d neue Vorstellungen";
App::$strings["Delegated Channel"] = "Delegierte Kanäle";
-App::$strings["Profile Match"] = "Profil-Ãœbereinstimmungen";
-App::$strings["No keywords to match. Please add keywords to your default profile."] = "Keine Schlüsselwörter für den Abgleich gefunden. Bitte füge Schlüsselwörter zu Deinem Standardprofil hinzu.";
-App::$strings["is interested in:"] = "interessiert sich für:";
-App::$strings["No matches"] = "Keine Ãœbereinstimmungen";
+App::$strings["No valid account found."] = "Kein gültiges Konto gefunden.";
+App::$strings["Password reset request issued. Check your email."] = "Zurücksetzen des Passworts eingeleitet. Schau in Deine E-Mails.";
+App::$strings["Site Member (%s)"] = "Nutzer (%s)";
+App::$strings["Password reset requested at %s"] = "Passwort-Rücksetzung auf %s angefordert";
+App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Die Anfrage konnte nicht verifiziert werden. (Vielleicht hast Du schon einmal auf den Link in der E-Mail geklickt?) Passwort-Rücksetzung fehlgeschlagen.";
+App::$strings["Password Reset"] = "Zurücksetzen des Kennworts";
+App::$strings["Your password has been reset as requested."] = "Dein Passwort wurde wie angefordert neu erstellt.";
+App::$strings["Your new password is"] = "Dein neues Passwort lautet";
+App::$strings["Save or copy your new password - and then"] = "Speichere oder kopiere Dein neues Passwort – und dann";
+App::$strings["click here to login"] = "Klicke hier, um dich anzumelden";
+App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Dein Passwort kann unter <em>Einstellungen</em> nach einer erfolgreichen Anmeldung geändert werden.";
+App::$strings["Your password has changed at %s"] = "Auf %s wurde Dein Passwort geändert";
+App::$strings["Forgot your Password?"] = "Kennwort vergessen?";
+App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Gib Deine E-Mail-Adresse ein, um Dein Passwort zurücksetzen zu lassen. Du erhältst dann weitere Anweisungen per E-Mail.";
+App::$strings["Email Address"] = "E-Mail Adresse";
+App::$strings["Reset"] = "Zurücksetzen";
App::$strings["Unable to update menu."] = "Kann Menü nicht aktualisieren.";
App::$strings["Unable to create menu."] = "Kann Menü nicht erstellen.";
App::$strings["Menu Name"] = "Name des Menüs";
@@ -812,6 +547,22 @@ App::$strings["Menu title"] = "Menü Titel";
App::$strings["Menu title as seen by others"] = "Menü Titel wie er von anderen gesehen wird";
App::$strings["Allow bookmarks"] = "Erlaube Lesezeichen";
App::$strings["Not found."] = "Nicht gefunden.";
+App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s ist %2\$s";
+App::$strings["Mood"] = "Laune";
+App::$strings["Set your current mood and tell your friends"] = "Wähle Deine aktuelle Stimmung und teile sie mit Deinen Freunden";
+App::$strings["Profile Match"] = "Profil-Ãœbereinstimmungen";
+App::$strings["No keywords to match. Please add keywords to your default profile."] = "Keine Schlüsselwörter für den Abgleich gefunden. Bitte füge Schlüsselwörter zu Deinem Standardprofil hinzu.";
+App::$strings["is interested in:"] = "interessiert sich für:";
+App::$strings["No matches"] = "Keine Ãœbereinstimmungen";
+App::$strings["No such group"] = "Gruppe nicht gefunden";
+App::$strings["No such channel"] = "Kanal nicht gefunden";
+App::$strings["forum"] = "Forum";
+App::$strings["Search Results For:"] = "Suchergebnisse für:";
+App::$strings["Privacy group is empty"] = "Gruppe ist leer";
+App::$strings["Privacy group: "] = "Gruppe:";
+App::$strings["Invalid connection."] = "Ungültige Verbindung.";
+App::$strings["No more system notifications."] = "Keine System-Benachrichtigungen mehr.";
+App::$strings["System Notifications"] = "System-Benachrichtigungen";
App::$strings["Unable to create element."] = "Element konnte nicht erstellt werden.";
App::$strings["Unable to update menu element."] = "Kann Menü-Element nicht aktualisieren.";
App::$strings["Unable to add menu element."] = "Kann Menü-Bestandteil nicht hinzufügen.";
@@ -841,16 +592,6 @@ App::$strings["Menu item deleted."] = "Menü-Bestandteil gelöscht.";
App::$strings["Menu item could not be deleted."] = "Menü-Bestandteil kann nicht gelöscht werden.";
App::$strings["Edit Menu Element"] = "Bearbeite Menü-Bestandteil";
App::$strings["Link text"] = "Link Text";
-App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s ist %2\$s";
-App::$strings["Mood"] = "Laune";
-App::$strings["Set your current mood and tell your friends"] = "Wähle Deine aktuelle Stimmung und teile sie mit Deinen Freunden";
-App::$strings["No such group"] = "Gruppe nicht gefunden";
-App::$strings["No such channel"] = "Kanal nicht gefunden";
-App::$strings["forum"] = "Forum";
-App::$strings["Search Results For:"] = "Suchergebnisse für:";
-App::$strings["Privacy group is empty"] = "Gruppe ist leer";
-App::$strings["Privacy group: "] = "Gruppe:";
-App::$strings["Invalid connection."] = "Ungültige Verbindung.";
App::$strings["Name or caption"] = "Name oder Titel";
App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""] = "Beispiele: „Horst Weidinger“, „Lisa und ihr Meerschweinchen“, „Fußball“, „Segelflieger-Forum“ ";
App::$strings["Choose a short nickname"] = "Wähle einen kurzen Spitznamen";
@@ -863,22 +604,7 @@ App::$strings["A channel is your identity on this network. It can represent a pe
App::$strings["or <a href=\"import\">import an existing channel</a> from another location."] = "oder <a href=\"import\">importiere einen bestehenden Kanal</a> von einem anderen Server.";
App::$strings["Invalid request identifier."] = "Ungültiger Anfrage-Identifikator.";
App::$strings["Discard"] = "Verwerfen";
-App::$strings["No more system notifications."] = "Keine System-Benachrichtigungen mehr.";
-App::$strings["System Notifications"] = "System-Benachrichtigungen";
App::$strings["Mark all system notifications seen"] = "Markiere alle System-Benachrichtigungen als gesehen";
-App::$strings["Unable to find your hub."] = "Konnte Deinen Server nicht finden.";
-App::$strings["Post successful."] = "Veröffentlichung erfolgreich.";
-App::$strings["OpenID protocol error. No ID returned."] = "OpenID Protokollfehler. Keine ID zurückgegeben.";
-App::$strings["Login failed."] = "Login fehlgeschlagen.";
-App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
-App::$strings["This setting requires special processing and editing has been blocked."] = "Diese Einstellung erfordert eine besondere Verarbeitung und ist blockiert.";
-App::$strings["Configuration Editor"] = "Konfigurationseditor";
-App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Warnung: Einige Einstellungen können Deinen Kanal funktionsunfähig machen. Bitte verlasse diese Seite, es sei denn Du bist vertraut damit, wie dieses Feature korrekt verwendet wird.";
-App::$strings["Layout updated."] = "Layout aktualisiert.";
-App::$strings["Edit System Page Description"] = "Systemseitenbeschreibung bearbeiten";
-App::$strings["Layout not found."] = "Layout nicht gefunden.";
-App::$strings["Module Name:"] = "Modulname:";
-App::$strings["Layout Help"] = "Layout-Hilfe";
App::$strings["Page owner information could not be retrieved."] = "Informationen über den Besitzer der Seite konnten nicht gefunden werden.";
App::$strings["Profile Photos"] = "Profilfotos";
App::$strings["Album not found."] = "Album nicht gefunden.";
@@ -907,7 +633,7 @@ App::$strings["Use as profile photo"] = "Als Profilfoto verwenden";
App::$strings["Use as cover photo"] = "Als Titelbild verwenden";
App::$strings["Private Photo"] = "Privates Foto";
App::$strings["View Full Size"] = "In voller Größe anzeigen";
-App::$strings["Remove"] = "Entferne";
+App::$strings["Remove"] = "Entfernen";
App::$strings["Edit photo"] = "Foto bearbeiten";
App::$strings["Rotate CW (right)"] = "Drehen im UZS (rechts)";
App::$strings["Rotate CCW (left)"] = "Drehen gegen UZS (links)";
@@ -919,6 +645,7 @@ App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Beispiele:
App::$strings["Flag as adult in album view"] = "In der Albumansicht als nicht jugendfrei markieren";
App::$strings["I like this (toggle)"] = "Mir gefällt das (Umschalter)";
App::$strings["I don't like this (toggle)"] = "Mir gefällt das nicht (Umschalter)";
+App::$strings["Please wait"] = "Bitte warten";
App::$strings["This is you"] = "Das bist Du";
App::$strings["Comment"] = "Kommentar";
App::$strings["__ctx:title__ Likes"] = "Gefällt mir";
@@ -938,6 +665,7 @@ App::$strings["__ctx:noun__ Dislike"] = array(
0 => "Gefällt nicht",
1 => "Gefällt nicht",
);
+App::$strings["Photo Tools"] = "Fotowerkzeuge";
App::$strings["In This Photo:"] = "Auf diesem Foto:";
App::$strings["Map"] = "Karte";
App::$strings["__ctx:noun__ Likes"] = "Gefällt mir";
@@ -950,6 +678,19 @@ App::$strings["added your channel"] = "hat deinen Kanal hinzugefügt";
App::$strings["g A l F d"] = "l, d. F, G:i \\U\\h\\r";
App::$strings["[today]"] = "[Heute]";
App::$strings["posted an event"] = "hat einen Termin veröffentlicht";
+App::$strings["Unable to find your hub."] = "Konnte Deinen Server nicht finden.";
+App::$strings["Post successful."] = "Veröffentlichung erfolgreich.";
+App::$strings["OpenID protocol error. No ID returned."] = "OpenID Protokollfehler. Keine ID zurückgegeben.";
+App::$strings["Login failed."] = "Login fehlgeschlagen.";
+App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
+App::$strings["This setting requires special processing and editing has been blocked."] = "Diese Einstellung erfordert eine besondere Verarbeitung und ist blockiert.";
+App::$strings["Configuration Editor"] = "Konfigurationseditor";
+App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Warnung: Einige Einstellungen können Deinen Kanal funktionsunfähig machen. Bitte verlasse diese Seite, es sei denn Du bist vertraut damit, wie dieses Feature korrekt verwendet wird.";
+App::$strings["Layout updated."] = "Layout aktualisiert.";
+App::$strings["Edit System Page Description"] = "Systemseitenbeschreibung bearbeiten";
+App::$strings["Layout not found."] = "Layout nicht gefunden.";
+App::$strings["Module Name:"] = "Modulname:";
+App::$strings["Layout Help"] = "Layout-Hilfe";
App::$strings["Poke"] = "Anstupsen";
App::$strings["Poke somebody"] = "Jemanden anstupsen";
App::$strings["Poke/Prod"] = "Anstupsen/Knuffen";
@@ -958,8 +699,6 @@ App::$strings["Recipient"] = "Empfänger";
App::$strings["Choose what you wish to do to recipient"] = "Wähle, was Du mit dem/r Empfänger/in tun willst";
App::$strings["Make this post private"] = "Diesen Beitrag privat machen";
App::$strings["Fetching URL returns error: %1\$s"] = "Abrufen der URL gab einen Fehler zurück: %1\$s";
-App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Leere den Browser Cache oder nutze Umschalten-Neu Laden, falls das neue Foto nicht sofort angezeigt wird.";
-App::$strings["Upload Profile Photo"] = "Lade neues Profilfoto hoch";
App::$strings["Profile not found."] = "Profil nicht gefunden.";
App::$strings["Profile deleted."] = "Profil gelöscht.";
App::$strings["Profile-"] = "Profil-";
@@ -982,6 +721,7 @@ App::$strings["Hide your connections list from viewers of this profile"] = "Dein
App::$strings["Edit Profile Details"] = "Bearbeite Profil-Details";
App::$strings["View this profile"] = "Dieses Profil ansehen";
App::$strings["Edit visibility"] = "Sichtbarkeit bearbeiten";
+App::$strings["Profile Tools"] = "Profilwerkzeuge";
App::$strings["Change cover photo"] = "Titelbild ändern";
App::$strings["Change profile photo"] = "Profilfoto ändern";
App::$strings["Create a new profile using these settings"] = "Neues Profil anlegen und diese Einstellungen übernehmen";
@@ -1025,6 +765,8 @@ App::$strings["Contact information and social networks"] = "Kontaktinformation u
App::$strings["My other channels"] = "Meine anderen Kanäle";
App::$strings["Profile Image"] = "Profilfoto:";
App::$strings["Edit Profiles"] = "Profile bearbeiten";
+App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Leere den Browser Cache oder nutze Umschalten-Neu Laden, falls das neue Foto nicht sofort angezeigt wird.";
+App::$strings["Upload Profile Photo"] = "Lade neues Profilfoto hoch";
App::$strings["Invalid profile identifier."] = "Ungültiger Profil-Identifikator";
App::$strings["Profile Visibility Editor"] = "Profil-Sichtbarkeits-Editor";
App::$strings["Profile"] = "Profil";
@@ -1035,6 +777,8 @@ App::$strings["The listed hubs allow public registration for the \$Projectname n
App::$strings["Hub URL"] = "Hub-URL";
App::$strings["Access Type"] = "Zugriffstyp";
App::$strings["Registration Policy"] = "Registrierungsrichtlinien";
+App::$strings["Stats"] = "Statistiken";
+App::$strings["Software"] = "Software";
App::$strings["Ratings"] = "Bewertungen";
App::$strings["Rate"] = "Bewerten";
App::$strings["Website:"] = "Webseite:";
@@ -1045,6 +789,261 @@ App::$strings["No ratings"] = "Keine Bewertungen";
App::$strings["Rating: "] = "Bewertung: ";
App::$strings["Website: "] = "Webseite: ";
App::$strings["Description: "] = "Beschreibung: ";
+App::$strings["Theme settings updated."] = "Theme-Einstellungen aktualisiert.";
+App::$strings["# Accounts"] = "Anzahl der Konten";
+App::$strings["# blocked accounts"] = "Anzahl der blockierten Konten";
+App::$strings["# expired accounts"] = "Anzahl der abgelaufenen Konten";
+App::$strings["# expiring accounts"] = "Anzahl der ablaufenden Konten";
+App::$strings["# Channels"] = "Anzahl der Kanäle";
+App::$strings["# primary"] = "Anzahl der primären Kanäle";
+App::$strings["# clones"] = "Anzahl der Klone";
+App::$strings["Message queues"] = "Nachrichten-Warteschlangen";
+App::$strings["Your software should be updated"] = "Die installierte Software sollte aktualisiert werden";
+App::$strings["Administration"] = "Administration";
+App::$strings["Summary"] = "Zusammenfassung";
+App::$strings["Registered accounts"] = "Registrierte Konten";
+App::$strings["Pending registrations"] = "Ausstehende Registrierungen";
+App::$strings["Registered channels"] = "Registrierte Kanäle";
+App::$strings["Active plugins"] = "Aktive Plug-Ins";
+App::$strings["Version"] = "Version";
+App::$strings["Repository version (master)"] = "Repository-Version (master)";
+App::$strings["Repository version (dev)"] = "Repository-Version (dev)";
+App::$strings["Site settings updated."] = "Site-Einstellungen aktualisiert.";
+App::$strings["Default"] = "Standard";
+App::$strings["mobile"] = "mobil";
+App::$strings["experimental"] = "experimentell";
+App::$strings["unsupported"] = "nicht unterstützt";
+App::$strings["Yes - with approval"] = "Ja - mit Zustimmung";
+App::$strings["My site is not a public server"] = "Mein Server ist kein öffentlicher Server";
+App::$strings["My site has paid access only"] = "Meine Seite hat nur bezahlten Zugriff";
+App::$strings["My site has free access only"] = "Meine Seite hat nur freien Zugriff";
+App::$strings["My site offers free accounts with optional paid upgrades"] = "Mein Server bietet kostenlose Konten mit der Möglichkeit zu bezahlten Upgrades";
+App::$strings["Site"] = "Seite";
+App::$strings["Registration"] = "Registrierung";
+App::$strings["File upload"] = "Dateiupload";
+App::$strings["Policies"] = "Richtlinien";
+App::$strings["Advanced"] = "Fortgeschritten";
+App::$strings["Site name"] = "Seitenname";
+App::$strings["Banner/Logo"] = "Banner/Logo";
+App::$strings["Administrator Information"] = "Administrator-Informationen";
+App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Kontaktinformationen für Administratoren des Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann verwendet werden.";
+App::$strings["System language"] = "System-Sprache";
+App::$strings["System theme"] = "System-Theme";
+App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Standard-System-Theme – kann durch Nutzerprofile überschieben werden – <a href='#' id='cnftheme'>Theme-Einstellungen ändern</a>";
+App::$strings["Mobile system theme"] = "Mobile System-Theme:";
+App::$strings["Theme for mobile devices"] = "Theme für mobile Geräte";
+App::$strings["Allow Feeds as Connections"] = "Feeds als Verbindungen erlauben";
+App::$strings["(Heavy system resource usage)"] = "(führt zu hoher Systemlast)";
+App::$strings["Maximum image size"] = "Maximale Bildgröße";
+App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Maximale Größe hochgeladener Bilder in Bytes. Standard ist 0 (keine Einschränkung).";
+App::$strings["Does this site allow new member registration?"] = "Erlaubt dieser Server die Registrierung neuer Nutzer?";
+App::$strings["Invitation only"] = "Nur mit Einladung";
+App::$strings["Only allow new member registrations with an invitation code. Above register policy must be set to Yes."] = "Erlaube die Neuregistrierung von Mitglieder nur mit einem Einladungscode. Die Registrierungs-Politik muss oben auf Ja gesetzt werden.";
+App::$strings["Which best describes the types of account offered by this hub?"] = "Was ist die passendste Beschreibung der Konten auf diesem Hub?";
+App::$strings["Register text"] = "Registrierungstext";
+App::$strings["Will be displayed prominently on the registration page."] = "Wird gut sichtbar auf der Registrierungs-Seite angezeigt.";
+App::$strings["Site homepage to show visitors (default: login box)"] = "Homepage des Hubs, die Besuchern angezeigt wird (Voreinstellung: Anmeldemaske)";
+App::$strings["example: 'public' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file."] = "Beispiele: 'public', um den Stream aller öffentlichen Beiträge anzuzeigen, 'page/sys/home', um eine System-Webseite namens 'home' anzuzeigen, 'include:home.html', um eine Datei einzufügen.";
+App::$strings["Preserve site homepage URL"] = "Homepage-URL schützen";
+App::$strings["Present the site homepage in a frame at the original location instead of redirecting"] = "Zeigt die Homepage an der Original-URL in einem Frame an, statt auf die eigentliche Adresse der Seite umzuleiten.";
+App::$strings["Accounts abandoned after x days"] = "Konten gelten nach X Tagen als unbenutzt";
+App::$strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Verschwende keine Systemressourcen auf das Pollen von externen Seiten, wenn das Konto nicht mehr benutzt wird. Trage hier 0 für kein zeitliches Limit.";
+App::$strings["Allowed friend domains"] = "Erlaubte Domains für Kontakte";
+App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben.";
+App::$strings["Allowed email domains"] = "Erlaubte Domains für E-Mails";
+App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben.";
+App::$strings["Not allowed email domains"] = "Nicht erlaubte Domains für E-Mails";
+App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Domains in E-Mail-Adressen, die keine Erlaubnis erhalten, sich auf Deinem Hub zu registrieren. Mehrere Domains können durch Kommas getrennt werden. Platzhalter (*/?) sind möglich. Keine Eingabe bedeutet keine Einschränkung, unabhängig davon, ob unter erlaubte Domains etwas eingegeben wurde.";
+App::$strings["Verify Email Addresses"] = "E-Mail-Adressen überprüfen";
+App::$strings["Check to verify email addresses used in account registration (recommended)."] = "Aktivieren, um die Überprüfung von E-Mail-Adressen bei der Registrierung von Benutzerkonten zu aktivieren (empfohlen).";
+App::$strings["Force publish"] = "Veröffentlichung erzwingen";
+App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Die Veröffentlichung aller Profile dieses Servers im Verzeichnis erzwingen.";
+App::$strings["Import Public Streams"] = "Öffentliche Beiträge importieren";
+App::$strings["Import and allow access to public content pulled from other sites. Warning: this content is unmoderated."] = "Öffentliche Beiträge von anderen Servern importieren und zur Verfügung stellen. Warnung: Diese Inhalte sind nicht moderiert.";
+App::$strings["Login on Homepage"] = "Log-in auf der Startseite";
+App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Zeigt Besuchern der Homepage eine Anmeldemaske, falls keine anderen Inhalte konfiguriert wurden.";
+App::$strings["Enable context help"] = "Kontext-Hilfe aktivieren";
+App::$strings["Display contextual help for the current page when the help button is pressed."] = "Zeigt Kontext-sensitive Hilfe für die aktuelle Seite an, wenn der Hilfe-Knopf geklickt wird.";
+App::$strings["Directory Server URL"] = "Verzeichnisserver-URL";
+App::$strings["Default directory server"] = "Standard-Verzeichnisserver";
+App::$strings["Proxy user"] = "Proxy Benutzer";
+App::$strings["Proxy URL"] = "Proxy URL";
+App::$strings["Network timeout"] = "Netzwerk-Timeout";
+App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Wert in Sekunden. 0 für unbegrenzt (nicht empfohlen).";
+App::$strings["Delivery interval"] = "Auslieferung Intervall";
+App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl Sekunden, um die Systemlast zu verringern. Empfehlungen: 4-5 für Shared Hosts, 2-3 für VPS, 0-1 für große dedizierte Server.";
+App::$strings["Deliveries per process"] = "Zustellungen pro Prozess";
+App::$strings["Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5."] = "Anzahl der Zustellungen, die innerhalb eines einzelnen Betriebssystemprozesses versucht werden. Anpassen, falls nötig, um die System-Performance zu verbessern. Empfehlung: 1-5.";
+App::$strings["Poll interval"] = "Abfrageintervall";
+App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Verzögere Hintergrundprozesse um diese Anzahl Sekunden, um die Systemlast zu reduzieren. Bei 0 wird das Auslieferungsintervall verwendet.";
+App::$strings["Maximum Load Average"] = "Maximales Load Average";
+App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maximale Systemlast, bevor Verteil- und Empfangsprozesse verschoben werden – Standard 50";
+App::$strings["Expiration period in days for imported (grid/network) content"] = "Setze den Zeitraum (in Tagen), ab wann importierte (aus dem Netzwerk) Inhalte ablaufen sollen";
+App::$strings["0 for no expiration of imported content"] = "0 = keine Löschung importierter Inhalte";
+App::$strings["Off"] = "Aus";
+App::$strings["On"] = "An";
+App::$strings["Lock feature %s"] = "Blockiere die Funktion %s";
+App::$strings["Manage Additional Features"] = "Zusätzliche Funktionen verwalten";
+App::$strings["No server found"] = "Kein Server gefunden";
+App::$strings["ID"] = "ID";
+App::$strings["for channel"] = "für Kanal";
+App::$strings["on server"] = "auf Server";
+App::$strings["Server"] = "Server";
+App::$strings["By default, unfiltered HTML is allowed in embedded media. This is inherently insecure."] = "Standardmäßig wird ungefiltertes HTML in eingebetteten Inhalten zugelassen. Das ist prinzipiell unsicher.";
+App::$strings["The recommended setting is to only allow unfiltered HTML from the following sites:"] = "Die empfohlene Einstellung ist, ungefiltertes HTML nur von den nachfolgenden Webseiten zu erlauben:";
+App::$strings["https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"] = "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />";
+App::$strings["All other embedded content will be filtered, <strong>unless</strong> embedded content from that site is explicitly blocked."] = "Alle anderen eingebetteten Inhalte werden gefiltert, <strong>es sei denn</strong>, eingebettete Inhalte von einer bestimmten Seite sind explizit blockiert.";
+App::$strings["Security"] = "Sicherheit";
+App::$strings["Block public"] = "Öffentlichen Zugriff blockieren";
+App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "Blockiere den öffentlichen Zugriff auf alle ansonsten öffentlichen persönlichen Seiten dieser Website, sofern ein Besucher nicht angemeldet ist.";
+App::$strings["Set \"Transport Security\" HTTP header"] = "Setze den \"Transport Security\" HTTP Header";
+App::$strings["Set \"Content Security Policy\" HTTP header"] = "Setze den \"Content Security Policy\" HTTP Header";
+App::$strings["Allow communications only from these sites"] = "Kommunikation nur von diesen Seiten erlauben";
+App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Ein Eintrag pro Zeile. Lasse das Feld leer, um Kommunikation grundlegend von überall her zu erlauben.";
+App::$strings["Block communications from these sites"] = "Kommunikation von diesen Seiten blockieren";
+App::$strings["Allow communications only from these channels"] = "Kommunikation nur von diesen Kanälen erlauben";
+App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "Ein Kanal (hash) pro Zeile. Leerlassen um jeden Kanal zuzulassen. ";
+App::$strings["Block communications from these channels"] = "Kommunikation von folgenden Kanälen blockieren";
+App::$strings["Only allow embeds from secure (SSL) websites and links."] = "Erlaube Einbettungen nur von sicheren (SSL) Webseiten und Links.";
+App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "Erlaube Einbettung von Inhalten mit ungefiltertem HTML nur von diesen Domains";
+App::$strings["One site per line. By default embedded content is filtered."] = "Eine Website/Domain pro Zeile. Standardmäßig wird eingebetteter Inhalt gefiltert.";
+App::$strings["Block embedded HTML from these domains"] = "Eingebettete HTML Inhalte von diesen Seiten blockieren";
+App::$strings["Update has been marked successful"] = "Update wurde als erfolgreich markiert";
+App::$strings["Executing %s failed. Check system logs."] = "Ausführen von %s fehlgeschlagen. Überprüfe die Systemprotokolle.";
+App::$strings["Update %s was successfully applied."] = "Update %s wurde erfolgreich ausgeführt.";
+App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "Update %s lieferte keinen Rückgabewert. Erfolg unbekannt.";
+App::$strings["Update function %s could not be found."] = "Update-Funktion %s konnte nicht gefunden werden.";
+App::$strings["No failed updates."] = "Keine fehlgeschlagenen Aktualisierungen.";
+App::$strings["Failed Updates"] = "Fehlgeschlagene Aktualisierungen";
+App::$strings["Mark success (if update was manually applied)"] = "Als erfolgreich markieren (wenn das Update manuell ausgeführt wurde)";
+App::$strings["Attempt to execute this update step automatically"] = "Versuche, diesen Updateschritt automatisch auszuführen";
+App::$strings["Queue Statistics"] = "Warteschlangenstatistiken";
+App::$strings["Total Entries"] = "Einträge insgesamt";
+App::$strings["Priority"] = "Priorität";
+App::$strings["Destination URL"] = "Ziel-URL";
+App::$strings["Mark hub permanently offline"] = "Hub als permanent offline markieren";
+App::$strings["Empty queue for this hub"] = "Warteschlange für diesen Hub leeren";
+App::$strings["Last known contact"] = "Letzter Kontakt";
+App::$strings["%s account blocked/unblocked"] = array(
+ 0 => "%s Konto blockiert/freigegeben",
+ 1 => "%s Konten blockiert/freigegeben",
+);
+App::$strings["%s account deleted"] = array(
+ 0 => "%s Konto gelöscht",
+ 1 => "%s Konten gelöscht",
+);
+App::$strings["Account not found"] = "Konto nicht gefunden";
+App::$strings["Account '%s' deleted"] = "Konto '%s' gelöscht";
+App::$strings["Account '%s' blocked"] = "Konto '%s' blockiert";
+App::$strings["Account '%s' unblocked"] = "Konto '%s' freigegeben";
+App::$strings["Accounts"] = "Konten";
+App::$strings["select all"] = "Alle auswählen";
+App::$strings["Registrations waiting for confirm"] = "Registrierungen warten auf Bestätigung";
+App::$strings["Request date"] = "Antragsdatum";
+App::$strings["No registrations."] = "Keine Registrierungen.";
+App::$strings["Deny"] = "Verweigern";
+App::$strings["All Channels"] = "Alle Kanäle";
+App::$strings["Register date"] = "Registrierungs-Datum";
+App::$strings["Last login"] = "Letzte Anmeldung";
+App::$strings["Expires"] = "Verfällt";
+App::$strings["Service Class"] = "Service-Klasse";
+App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Die ausgewählten Konten werden gelöscht!\\n\\nAlles, was diese Konten auf diesem Hub veröffentlicht haben, wird endgültig gelöscht werden!\\n\\nBist du dir sicher?";
+App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Das Konto {0} wird gelöscht!\\n\\nAlles, was dieses Konto auf diesem Hub veröffentlicht hat, wird endgültig gelöscht werden!\\n\\nBist Du sicher?";
+App::$strings["%s channel censored/uncensored"] = array(
+ 0 => "%s Kanal gesperrt/freigegeben",
+ 1 => "%s Kanäle gesperrt/freigegeben",
+);
+App::$strings["%s channel code allowed/disallowed"] = array(
+ 0 => "Code für %s Kanal gesperrt/freigegeben",
+ 1 => "Code für %s Kanäle gesperrt/freigegeben",
+);
+App::$strings["%s channel deleted"] = array(
+ 0 => "%s Kanal gelöscht",
+ 1 => "%s Kanäle gelöscht",
+);
+App::$strings["Channel not found"] = "Kanal nicht gefunden";
+App::$strings["Channel '%s' deleted"] = "Kanal '%s' gelöscht";
+App::$strings["Channel '%s' censored"] = "Kanal '%s' gesperrt";
+App::$strings["Channel '%s' uncensored"] = "Kanal '%s' freigegeben";
+App::$strings["Channel '%s' code allowed"] = "Code für Kanal '%s' freigegeben";
+App::$strings["Channel '%s' code disallowed"] = "Code für Kanal '%s' gesperrt";
+App::$strings["Channels"] = "Kanäle";
+App::$strings["Censor"] = "Sperren";
+App::$strings["Uncensor"] = "Freigeben";
+App::$strings["Allow Code"] = "Code erlauben";
+App::$strings["Disallow Code"] = "Code sperren";
+App::$strings["Channel"] = "Kanal";
+App::$strings["UID"] = "UID";
+App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Alle ausgewählten Kanäle werden gelöscht!\\n\\nAlles was von diesen Kanälen auf diesem Server geschrieben wurde, wird dauerhaft gelöscht!\\n\\nBist Du sicher?";
+App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Der Kanal {0} wird gelöscht!\\n\\nAlles was von diesem Kanal auf diesem Server geschrieben wurde, wird gelöscht!\\n\\nBist Du sicher?";
+App::$strings["Plugin %s disabled."] = "Plug-In %s deaktiviert.";
+App::$strings["Plugin %s enabled."] = "Plug-In %s aktiviert.";
+App::$strings["Disable"] = "Deaktivieren";
+App::$strings["Enable"] = "Aktivieren";
+App::$strings["Plugins"] = "Plug-Ins";
+App::$strings["Toggle"] = "Umschalten";
+App::$strings["Settings"] = "Einstellungen";
+App::$strings["Author: "] = "Autor: ";
+App::$strings["Maintainer: "] = "Betreuer:";
+App::$strings["Minimum project version: "] = "Minimale Version des Projekts:";
+App::$strings["Maximum project version: "] = "Maximale Version des Projekts:";
+App::$strings["Minimum PHP version: "] = "Minimale PHP Version:";
+App::$strings["Requires: "] = "Benötigt:";
+App::$strings["Disabled - version incompatibility"] = "Abgeschaltet - Versionsinkompatibilität";
+App::$strings["Enter the public git repository URL of the plugin repo."] = "Gib die öffentliche Git-Repository-URL des Plugin-Repository an.";
+App::$strings["Plugin repo git URL"] = "Plugin-Repository Git URL";
+App::$strings["Custom repo name"] = "Benutzerdefinierter Repository-Name";
+App::$strings["(optional)"] = "(optional)";
+App::$strings["Download Plugin Repo"] = "Plugin-Repository herunterladen";
+App::$strings["Install new repo"] = "Neues Repository installieren";
+App::$strings["Install"] = "Installieren";
+App::$strings["Manage Repos"] = "Repositorien verwalten";
+App::$strings["Installed Plugin Repositories"] = "Installierte Plugin-Repositorien";
+App::$strings["Install a New Plugin Repository"] = "Ein neues Plugin-Repository installieren";
+App::$strings["Update"] = "Aktualisieren";
+App::$strings["Switch branch"] = "Zweig/Branch wechseln";
+App::$strings["No themes found."] = "Keine Theme gefunden.";
+App::$strings["Screenshot"] = "Bildschirmfoto";
+App::$strings["Themes"] = "Themes";
+App::$strings["[Experimental]"] = "[Experimentell]";
+App::$strings["[Unsupported]"] = "[Nicht unterstützt]";
+App::$strings["Log settings updated."] = "Protokoll-Einstellungen aktualisiert.";
+App::$strings["Logs"] = "Protokolle";
+App::$strings["Clear"] = "Leeren";
+App::$strings["Debugging"] = "Debugging";
+App::$strings["Log file"] = "Protokolldatei";
+App::$strings["Must be writable by web server. Relative to your top-level webserver directory."] = "Muss für den Web-Server schreibbar sein. Relativ zum Hubzilla-Stammverzeichnis.";
+App::$strings["Log level"] = "Protokollstufe";
+App::$strings["New Profile Field"] = "Neues Profilfeld";
+App::$strings["Field nickname"] = "Kurzname für das Feld";
+App::$strings["System name of field"] = "Systemname des Feldes";
+App::$strings["Input type"] = "Art des Inhalts";
+App::$strings["Field Name"] = "Feldname";
+App::$strings["Label on profile pages"] = "Bezeichnung auf Profilseiten";
+App::$strings["Help text"] = "Hilfetext";
+App::$strings["Additional info (optional)"] = "Zusätzliche Informationen (optional)";
+App::$strings["Field definition not found"] = "Feld-Definition nicht gefunden";
+App::$strings["Edit Profile Field"] = "Profilfeld bearbeiten";
+App::$strings["Profile Fields"] = "Profil Felder";
+App::$strings["Basic Profile Fields"] = "Notwendige Profil Felder";
+App::$strings["Advanced Profile Fields"] = "Erweiterte Profil Felder";
+App::$strings["(In addition to basic fields)"] = "(zusätzlich zu notwendige Felder)";
+App::$strings["All available fields"] = "Alle verfügbaren Felder";
+App::$strings["Custom Fields"] = "Benutzerdefinierte Felder";
+App::$strings["Create Custom Field"] = "Erstelle benutzerdefiniertes Feld";
+App::$strings["App installed."] = "App installiert.";
+App::$strings["Malformed app."] = "Fehlerhafte App.";
+App::$strings["Embed code"] = "Code einbetten";
+App::$strings["Edit App"] = "App bearbeiten";
+App::$strings["Create App"] = "App erstellen";
+App::$strings["Name of app"] = "Name der App";
+App::$strings["Location (URL) of app"] = "Ort (URL) der App";
+App::$strings["Photo icon URL"] = "URL zum Icon";
+App::$strings["80 x 80 pixels - optional"] = "80 x 80 Pixel – optional";
+App::$strings["Categories (optional, comma separated list)"] = "Kategorien (optional, kommagetrennte Liste)";
+App::$strings["Version ID"] = "Versions-ID";
+App::$strings["Price of app"] = "Preis der App";
+App::$strings["Location (URL) to purchase app"] = "Ort (URL), um die App zu kaufen";
App::$strings["Select a bookmark folder"] = "Lesezeichenordner wählen";
App::$strings["Save Bookmark"] = "Lesezeichen speichern";
App::$strings["URL of bookmark"] = "URL des Lesezeichens";
@@ -1098,7 +1097,6 @@ App::$strings["Search results for: %s"] = "Suchergebnisse für: %s";
App::$strings["No service class restrictions found."] = "Keine Dienstklassenbeschränkungen gefunden.";
App::$strings["Name is required"] = "Name ist erforderlich";
App::$strings["Key and Secret are required"] = "Schlüssel und Geheimnis werden benötigt";
-App::$strings["Update"] = "Aktualisieren";
App::$strings["Not valid email."] = "Keine gültige E-Mail Adresse.";
App::$strings["Protected email address. Cannot change to that email."] = "Geschützte E-Mail Adresse. Diese kann nicht verändert werden.";
App::$strings["System failure storing new email. Please try again."] = "Systemfehler während des Speicherns der neuen Mail. Bitte versuche es noch einmal.";
@@ -1190,10 +1188,14 @@ App::$strings["Allow others to tag your posts"] = "Erlaube anderen, Deine BeitrÃ
App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "Wird oft von der Community genutzt um rückwirkend anstößigen Inhalt zu markieren";
App::$strings["Advanced Privacy Settings"] = "Fortgeschrittene Privatsphäre-Einstellungen";
App::$strings["Expire other channel content after this many days"] = "Den Inhalt anderer Kanäle nach dieser Anzahl Tage verfallen lassen";
-App::$strings["0 or blank to use the website limit. The website expires after %d days."] = "0 oder leer lassen um das Webseiten limit zu nutzen. Die Webseite läuft nach %d Tagen ab.";
+App::$strings["0 or blank to use the website limit."] = "0 oder leer lassen, um den voreingestellten Wert der Webseite zu verwenden.";
+App::$strings["This website expires after %d days."] = "Diese Webseite läuft nach %d Tagen ab.";
+App::$strings["This website does not expire imported content."] = "Diese Webseite lässt importierte Inhalte nicht verfallen.";
+App::$strings["The website limit takes precedence if lower than your limit."] = "Das Verfallslimit der Webseite hat Vorrang, wenn es niedriger als Deines hier ist.";
App::$strings["Maximum Friend Requests/Day:"] = "Maximale Kontaktanfragen pro Tag:";
App::$strings["May reduce spam activity"] = "Kann die Spam-Aktivität verringern";
-App::$strings["Default Post Permissions"] = "Standardeinstellungen für Beitrags-Zugriffsrechte";
+App::$strings["Default Post and Publish Permissions"] = "Standard-Berechtigungen für Beiträge und andere Inhalte";
+App::$strings["Use my default audience setting for the type of object published"] = "Verwende Deine eingestellte Standard-Zielgruppe des jeweiligen Inhaltstyps";
App::$strings["Channel permissions category:"] = "Zugriffsrechte-Kategorie des Kanals:";
App::$strings["Maximum private messages per day from unknown people:"] = "Maximale Anzahl privater Nachrichten pro Tag von unbekannten Leuten:";
App::$strings["Useful to reduce spamming"] = "Nützlich, um Spam zu verringern";
@@ -1268,6 +1270,8 @@ App::$strings["Please select a default timezone for your website"] = "Standard-Z
App::$strings["Site settings"] = "Seiteneinstellungen";
App::$strings["Enable \$Projectname <strong>advanced</strong> features?"] = "<strong>Erweiterte</strong> Funktionen für \$Projectname aktivieren?";
App::$strings["Some advanced features, while useful - may be best suited for technically proficient audiences"] = "Einige erweiterte Funktionen können ungeachtet ihrer Nützlichkeit eher für eine technisch versierte Zielgruppe geeignet sein.";
+App::$strings["PHP version 5.5 or greater is required."] = "PHP Version 5.5 oder höher wird benötigt.";
+App::$strings["PHP version"] = "PHP-Version";
App::$strings["Could not find a command line version of PHP in the web server PATH."] = "Konnte die Kommandozeilen-Version von PHP nicht im PATH des Web-Servers finden.";
App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Ohne Kommandozeilen-Version von PHP auf dem Server wirst Du nicht in der Lage sein, Hintergrundprozesse via cron auszuführen.";
App::$strings["PHP executable path"] = "PHP Pfad zu ausführbarer Datei";
@@ -1306,7 +1310,7 @@ App::$strings["At the end of this procedure, we will give you a text to save in
App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Alternativ kannst Du diesen Schritt überspringen und die Installation manuell vornehmen. Lies dazu die Datei install/INSTALL.txt.";
App::$strings[".htconfig.php is writable"] = ".htconfig.php ist beschreibbar";
App::$strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "\$Projectname verwendet Smarty3 um Vorlagen für die Webdarstellung zu übersetzen. Smarty3 übersetzt diese Vorlagen nach PHP, um die Darstellung zu beschleunigen.";
-App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "Um diese kompilierten Vorlagen speichern zu können, braucht der Webserver Schreibzugriff auf das Verzeichnis %s unterhalb des \$Projectname-Installationsverzeichnisses.";
+App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder."] = "Um diese kompilierten Vorlagen speichern zu können, braucht der Web-Server Schreibzugriff auf das Verzeichnis %s unterhalb des Hubzilla-Stammverzeichnisses.";
App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Bitte stelle sicher, dass der Nutzer, unter dem der Web-Server läuft (z.B. www-data), Schreibzugriff auf dieses Verzeichnis hat.";
App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Hinweis: Aus Sicherheitsgründen sollte der Web-Server nur auf %s Schreibrechte haben, nicht auf die Template-Dateien (.tpl), die das Verzeichnis enthält.";
App::$strings["%s is writable"] = "%s ist beschreibbar";
@@ -1353,6 +1357,7 @@ App::$strings["Import all or selected content from the following channel into th
App::$strings["Only import content with these words (one per line)"] = "Importiere nur Beiträge, die folgende Wörter (eines pro Zeile) enthalten";
App::$strings["Leave blank to import all public content"] = "Leer lassen, um alle öffentlichen Beiträge zu importieren";
App::$strings["Channel Name"] = "Name des Kanals";
+App::$strings["Add the following categories to posts imported from this source (comma separated)"] = "Füge die folgenden Kategorien zu Beiträgen, die aus dieser Quelle importiert werden, hinzu (kommagetrennt)";
App::$strings["Source not found."] = "Quelle nicht gefunden.";
App::$strings["Edit Source"] = "Quelle bearbeiten";
App::$strings["Delete Source"] = "Quelle löschen";
@@ -1401,54 +1406,72 @@ App::$strings["Page Link"] = "Seiten-Link";
App::$strings["Page Title"] = "Seitentitel";
App::$strings["Xchan Lookup"] = "Xchan-Suche";
App::$strings["Lookup xchan beginning with (or webbie): "] = "Nach xchans oder Webbies (Kanal-Adressen) suchen, die wie folgt beginnen:";
-App::$strings["No username found in import file."] = "Kein Benutzername in der Importdatei gefunden.";
-App::$strings["Unable to create a unique channel address. Import failed."] = "Es war nicht möglich, eine eindeutige Kanal-Adresse zu erzeugen. Der Import ist fehlgeschlagen.";
-App::$strings["Cannot locate DNS info for database server '%s'"] = "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden";
-App::$strings["Unable to obtain identity information from database"] = "Kann keine Identitäts-Informationen aus Datenbank beziehen";
-App::$strings["Empty name"] = "Namensfeld leer";
-App::$strings["Name too long"] = "Name ist zu lang";
-App::$strings["No account identifier"] = "Keine Account-Kennung";
-App::$strings["Nickname is required."] = "Spitzname ist erforderlich.";
-App::$strings["Reserved nickname. Please choose another."] = "Reservierter Kurzname. Bitte wähle einen anderen.";
-App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt.";
-App::$strings["Unable to retrieve created identity"] = "Kann die erstellte Identität nicht empfangen";
-App::$strings["Default Profile"] = "Standard-Profil";
-App::$strings["Requested channel is not available."] = "Angeforderte Kanal nicht verfügbar.";
-App::$strings["Create New Profile"] = "Neues Profil erstellen";
-App::$strings["Edit Profile"] = "Profile bearbeiten";
-App::$strings["Visible to everybody"] = "Für jeden sichtbar";
-App::$strings["Gender:"] = "Geschlecht:";
-App::$strings["Status:"] = "Status:";
-App::$strings["Homepage:"] = "Homepage:";
-App::$strings["Online Now"] = "gerade online";
-App::$strings["F d"] = "d. F";
-App::$strings["Birthday Reminders"] = "Geburtstags Erinnerungen";
-App::$strings["Birthdays this week:"] = "Geburtstage in dieser Woche:";
-App::$strings["[No description]"] = "[Keine Beschreibung]";
-App::$strings["Event Reminders"] = "Termin-Erinnerungen";
-App::$strings["Events this week:"] = "Termine in dieser Woche:";
-App::$strings["Like this channel"] = "Dieser Kanal gefällt mir";
-App::$strings["j F, Y"] = "j. F Y";
-App::$strings["j F"] = "j. F";
-App::$strings["Birthday:"] = "Geburtstag:";
-App::$strings["for %1\$d %2\$s"] = "seit %1\$d %2\$s";
-App::$strings["Sexual Preference:"] = "Sexuelle Orientierung:";
-App::$strings["Tags:"] = "Schlagworte:";
-App::$strings["Political Views:"] = "Politische Ansichten:";
-App::$strings["Religion:"] = "Religion:";
-App::$strings["Hobbies/Interests:"] = "Hobbys/Interessen:";
-App::$strings["Likes:"] = "Gefällt:";
-App::$strings["Dislikes:"] = "Gefällt nicht:";
-App::$strings["Contact information and Social Networks:"] = "Kontaktinformation und soziale Netzwerke:";
-App::$strings["My other channels:"] = "Meine anderen Kanäle:";
-App::$strings["Musical interests:"] = "Musikalische Interessen:";
-App::$strings["Books, literature:"] = "Bücher, Literatur:";
-App::$strings["Television:"] = "Fernsehen:";
-App::$strings["Film/dance/culture/entertainment:"] = "Film/Tanz/Kultur/Unterhaltung:";
-App::$strings["Love/Romance:"] = "Liebe/Romantik:";
-App::$strings["Work/employment:"] = "Arbeit/Anstellung:";
-App::$strings["School/education:"] = "Schule/Ausbildung:";
-App::$strings["Like this thing"] = "Gefällt mir";
+App::$strings["Site Admin"] = "Hub-Administration";
+App::$strings["Bug Report"] = "Fehler-Rückmeldung";
+App::$strings["View Bookmarks"] = "Lesezeichen ansehen";
+App::$strings["My Chatrooms"] = "Meine Chaträume";
+App::$strings["Firefox Share"] = "Teilen-Knopf für Firefox";
+App::$strings["Remote Diagnostics"] = "Ferndiagnose";
+App::$strings["Suggest Channels"] = "Kanäle vorschlagen";
+App::$strings["Login"] = "Anmelden";
+App::$strings["Grid"] = "Grid";
+App::$strings["Channel Home"] = "Mein Kanal";
+App::$strings["Events"] = "Termine";
+App::$strings["Directory"] = "Verzeichnis";
+App::$strings["Mail"] = "Mail";
+App::$strings["Chat"] = "Chat";
+App::$strings["Probe"] = "Testen";
+App::$strings["Suggest"] = "Empfehlen";
+App::$strings["Random Channel"] = "Zufälliger Kanal";
+App::$strings["Invite"] = "Einladen";
+App::$strings["Features"] = "Funktionen";
+App::$strings["Post"] = "Beitrag schreiben";
+App::$strings["Purchase"] = "Kaufen";
+App::$strings["Missing room name"] = "Der Chatraum hat keinen Namen";
+App::$strings["Duplicate room name"] = "Name des Chatraums bereits vergeben";
+App::$strings["Invalid room specifier."] = "Ungültiger Raumbezeichner.";
+App::$strings["Room not found."] = "Chatraum konnte nicht gefunden werden.";
+App::$strings["Room is full"] = "Der Chatraum ist voll";
+App::$strings["\$Projectname Notification"] = "\$Projectname-Benachrichtigung";
+App::$strings["\$projectname"] = "\$projectname";
+App::$strings["Thank You,"] = "Danke.";
+App::$strings["%s Administrator"] = "der Administrator von %s";
+App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
+App::$strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla:Benachrichtigung] Neue Mail empfangen auf %s";
+App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s hat Dir eine private Nachricht auf %3\$s gesendet.";
+App::$strings["%1\$s sent you %2\$s."] = "%1\$s hat Dir %2\$s geschickt.";
+App::$strings["a private message"] = "eine private Nachricht";
+App::$strings["Please visit %s to view and/or reply to your private messages."] = "Bitte besuche %s, um die private Nachricht anzusehen und/oder darauf zu antworten.";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]einen %4\$s[/zrl] kommentiert";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]%4\$ss %5\$s[/zrl] kommentiert";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]Deinen %4\$s[/zrl] kommentiert";
+App::$strings["[Hubzilla:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Hubzilla:Benachrichtigung] Kommentar in Unterhaltung #%1\$d von %2\$s";
+App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s hat eine Unterhaltung kommentiert, der Du folgst.";
+App::$strings["Please visit %s to view and/or reply to the conversation."] = "Bitte besuche %s, um die Unterhaltung anzusehen und/oder zu kommentieren.";
+App::$strings["[Hubzilla:Notify] %s posted to your profile wall"] = "[Hubzilla:Benachrichtigung] %s schrieb auf Deine Pinnwand";
+App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s hat auf Deine Pinnwand auf %3\$s geschrieben";
+App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s hat auf [zrl=%3\$s]Deine Pinnwand[/zrl] geschrieben";
+App::$strings["[Hubzilla:Notify] %s tagged you"] = "[Hubzilla:Benachrichtigung] %s hat Dich erwähnt";
+App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s hat Dich auf %3\$s erwähnt";
+App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]hat Dich erwähnt[/zrl].";
+App::$strings["[Hubzilla:Notify] %1\$s poked you"] = "[Hubzilla:Benachrichtigung] %1\$s hat Dich angestupst";
+App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s hat Dich auf %3\$s angestupst";
+App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]hat Dich angestupst[/zrl].";
+App::$strings["[Hubzilla:Notify] %s tagged your post"] = "[Hubzilla:Benachrichtigung] %s hat Deinen Beitrag verschlagwortet";
+App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s hat Deinen Beitrag auf %3\$s verschlagwortet";
+App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]Deinen Beitrag[/zrl] verschlagwortet";
+App::$strings["[Hubzilla:Notify] Introduction received"] = "[Hubzilla:Benachrichtigung] Vorstellung erhalten";
+App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, Du hast eine neue Verbindungsanfrage von '%2\$s' auf %3\$s erhalten";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, Du hast [zrl=%2\$s]eine neue Verbindungsanfrage[/zrl] von %3\$s erhalten.";
+App::$strings["You may visit their profile at %s"] = "Du kannst Dir das Profil unter %s ansehen";
+App::$strings["Please visit %s to approve or reject the connection request."] = "Bitte besuche %s , um die Verbindungsanfrage anzunehmen oder abzulehnen.";
+App::$strings["[Hubzilla:Notify] Friend suggestion received"] = "[Hubzilla:Benachrichtigung] Freundschaftsvorschlag erhalten";
+App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, Du hast einen Kontaktvorschlag von „%2\$s“ auf %3\$s erhalten";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, Du hast [zrl=%2\$s]einen Kontaktvorschlag[/zrl] für %3\$s von %4\$s erhalten.";
+App::$strings["Name:"] = "Name:";
+App::$strings["Photo:"] = "Foto:";
+App::$strings["Please visit %s to approve or reject the suggestion."] = "Bitte besuche %s um den Vorschlag zu akzeptieren oder abzulehnen.";
+App::$strings["[Hubzilla:Notify]"] = "[Hubzilla:Benachrichtigung]";
App::$strings["created a new post"] = "Neuer Beitrag wurde erzeugt";
App::$strings["commented on %s's post"] = "hat %s's Beitrag kommentiert";
App::$strings["Private Message"] = "Private Nachricht";
@@ -1488,138 +1511,282 @@ App::$strings["Save Bookmarks"] = "Favoriten speichern";
App::$strings["Add to Calendar"] = "Zum Kalender hinzufügen";
App::$strings["Mark all seen"] = "Alle als gelesen markieren";
App::$strings["[+] show all"] = "[+] Alle anzeigen";
+App::$strings["Bold"] = "Fett";
+App::$strings["Italic"] = "Kursiv";
+App::$strings["Underline"] = "Unterstrichen";
+App::$strings["Quote"] = "Zitat";
+App::$strings["Code"] = "Code";
App::$strings["Image"] = "Bild";
App::$strings["Insert Link"] = "Link einfügen";
App::$strings["Video"] = "Video";
-App::$strings["Not a valid email address"] = "Ungültige E-Mail-Adresse";
-App::$strings["Your email domain is not among those allowed on this site"] = "Deine E-Mail-Adresse ist auf dieser Seite nicht erlaubt";
-App::$strings["Your email address is already registered at this site."] = "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert.";
-App::$strings["An invitation is required."] = "Eine Einladung wird benötigt.";
-App::$strings["Invitation could not be verified."] = "Die Einladung konnte nicht bestätigt werden.";
-App::$strings["Please enter the required information."] = "Bitte gib die benötigten Informationen ein.";
-App::$strings["Failed to store account information."] = "Speichern der Nutzerkontodaten fehlgeschlagen.";
-App::$strings["Registration confirmation for %s"] = "Registrierungsbestätigung für %s";
-App::$strings["Registration request at %s"] = "Registrierungsanfrage auf %s";
-App::$strings["Administrator"] = "Administrator";
-App::$strings["your registration password"] = "Dein Registrierungspasswort";
-App::$strings["Registration details for %s"] = "Registrierungsdetails für %s";
-App::$strings["Account approved."] = "Nutzerkonto bestätigt.";
-App::$strings["Registration revoked for %s"] = "Registrierung für %s wurde widerrufen";
-App::$strings["Account verified. Please login."] = "Nutzerkonto wurde bestätigt. Bitte melde Dich an!";
-App::$strings["Click here to upgrade."] = "Klicke hier, um das Upgrade durchzuführen.";
-App::$strings["This action exceeds the limits set by your subscription plan."] = "Diese Aktion überschreitet die Grenzen Ihres Abonnements.";
-App::$strings["This action is not available under your subscription plan."] = "Diese Aktion ist in Ihrem Abonnement nicht verfügbar.";
-App::$strings["Currently Male"] = "Momentan männlich";
-App::$strings["Currently Female"] = "Momentan weiblich";
-App::$strings["Mostly Male"] = "Größtenteils männlich";
-App::$strings["Mostly Female"] = "Größtenteils weiblich";
-App::$strings["Transgender"] = "Transsexuell";
-App::$strings["Intersex"] = "Zwischengeschlechtlich";
-App::$strings["Transsexual"] = "Transsexuell";
-App::$strings["Hermaphrodite"] = "Zwitter";
-App::$strings["Neuter"] = "Geschlechtslos";
-App::$strings["Non-specific"] = "unklar";
-App::$strings["Other"] = "Andere";
-App::$strings["Undecided"] = "Unentschieden";
-App::$strings["Males"] = "Männer";
-App::$strings["Females"] = "Frauen";
-App::$strings["Gay"] = "Schwul";
-App::$strings["Lesbian"] = "Lesbisch";
-App::$strings["No Preference"] = "Keine Bevorzugung";
-App::$strings["Bisexual"] = "Bisexuell";
-App::$strings["Autosexual"] = "Autosexuell";
-App::$strings["Abstinent"] = "Enthaltsam";
-App::$strings["Virgin"] = "Jungfräulich";
-App::$strings["Deviant"] = "Abweichend";
-App::$strings["Fetish"] = "Fetisch";
-App::$strings["Oodles"] = "Unmengen";
-App::$strings["Nonsexual"] = "Sexlos";
-App::$strings["Single"] = "Single";
-App::$strings["Lonely"] = "Einsam";
-App::$strings["Available"] = "Verfügbar";
-App::$strings["Unavailable"] = "Nicht verfügbar";
-App::$strings["Has crush"] = "Verguckt";
-App::$strings["Infatuated"] = "Verknallt";
-App::$strings["Dating"] = "Lerne gerade jemanden kennen";
-App::$strings["Unfaithful"] = "Treulos";
-App::$strings["Sex Addict"] = "Sexabhängig";
-App::$strings["Friends/Benefits"] = "Freunde/Begünstigte";
-App::$strings["Casual"] = "Lose";
-App::$strings["Engaged"] = "Verlobt";
-App::$strings["Married"] = "Verheiratet";
-App::$strings["Imaginarily married"] = "Gewissermaßen verheiratet";
-App::$strings["Partners"] = "Partner";
-App::$strings["Cohabiting"] = "Lebensgemeinschaft";
-App::$strings["Common law"] = "Informelle Ehe";
-App::$strings["Happy"] = "Glücklich";
-App::$strings["Not looking"] = "Nicht Ausschau haltend";
-App::$strings["Swinger"] = "Swinger";
-App::$strings["Betrayed"] = "Betrogen";
-App::$strings["Separated"] = "Getrennt";
-App::$strings["Unstable"] = "Labil";
-App::$strings["Divorced"] = "Geschieden";
-App::$strings["Imaginarily divorced"] = "Gewissermaßen geschieden";
-App::$strings["Widowed"] = "Verwitwet";
-App::$strings["Uncertain"] = "Ungewiss";
-App::$strings["It's complicated"] = "Es ist kompliziert";
-App::$strings["Don't care"] = "Interessiert mich nicht";
-App::$strings["Ask me"] = "Frag mich mal";
-App::$strings["Visible to your default audience"] = "Standard-Sichtbarkeit gemäß Kanaleinstellungen";
-App::$strings["Show"] = "Anzeigen";
-App::$strings["Don't show"] = "Nicht anzeigen";
-App::$strings["Other networks and post services"] = "Andere Netzwerke und Platformen";
-App::$strings[" and "] = "und";
-App::$strings["public profile"] = "öffentliches Profil";
-App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s hat %2\$s auf &ldquo;%3\$s&rdquo; geändert";
-App::$strings["Visit %1\$s's %2\$s"] = "Besuche %1\$s's %2\$s";
-App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s hat ein aktualisiertes %2\$s, %3\$s wurde verändert.";
-App::$strings["Public Timeline"] = "Öffentliche Zeitleiste";
-App::$strings["Site Admin"] = "Hub-Administration";
-App::$strings["Bookmarks"] = "Lesezeichen";
-App::$strings["Address Book"] = "Adressbuch";
-App::$strings["Login"] = "Anmelden";
-App::$strings["Grid"] = "Grid";
-App::$strings["Channel Home"] = "Mein Kanal";
-App::$strings["Events"] = "Termine";
-App::$strings["Directory"] = "Verzeichnis";
-App::$strings["Mail"] = "Mail";
-App::$strings["Chat"] = "Chat";
-App::$strings["Probe"] = "Testen";
-App::$strings["Suggest"] = "Empfehlen";
-App::$strings["Random Channel"] = "Zufälliger Kanal";
-App::$strings["Invite"] = "Einladen";
-App::$strings["Features"] = "Funktionen";
-App::$strings["Post"] = "Beitrag schreiben";
-App::$strings["Install"] = "Installieren";
-App::$strings["Purchase"] = "Kaufen";
-App::$strings["view full size"] = "In Vollbildansicht anschauen";
-App::$strings["\$Projectname Notification"] = "\$Projectname-Benachrichtigung";
-App::$strings["\$projectname"] = "\$projectname";
-App::$strings["Thank You,"] = "Danke.";
-App::$strings["%s Administrator"] = "der Administrator von %s";
-App::$strings["No Subject"] = "Kein Betreff";
-App::$strings["Attachments:"] = "Anhänge:";
+App::$strings["No username found in import file."] = "Kein Benutzername in der Importdatei gefunden.";
+App::$strings["Unable to create a unique channel address. Import failed."] = "Es war nicht möglich, eine eindeutige Kanal-Adresse zu erzeugen. Der Import ist fehlgeschlagen.";
+App::$strings["Cannot locate DNS info for database server '%s'"] = "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden";
+App::$strings["Categories"] = "Kategorien";
+App::$strings["Tags"] = "Schlagwörter";
+App::$strings["Keywords"] = "Schlüsselwörter";
+App::$strings["have"] = "habe";
+App::$strings["has"] = "hat";
+App::$strings["want"] = "will";
+App::$strings["wants"] = "will";
+App::$strings["likes"] = "gefällt";
+App::$strings["dislikes"] = "missfällt";
App::$strings["l F d, Y \\@ g:i A"] = "l, d. F Y, H:i";
-App::$strings["\$Projectname event notification:"] = "\$Projectname-Terminbenachrichtigung:";
App::$strings["Starts:"] = "Beginnt:";
App::$strings["Finishes:"] = "Endet:";
+App::$strings["This event has been added to your calendar."] = "Dieser Termin wurde zu Deinem Kalender hinzugefügt";
+App::$strings["Not specified"] = "Keine Angabe";
+App::$strings["Needs Action"] = "Aktion erforderlich";
+App::$strings["Completed"] = "Abgeschlossen";
+App::$strings["In Process"] = "In Bearbeitung";
+App::$strings["Cancelled"] = "gestrichen";
+App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen.";
+App::$strings["Channel clone failed. Import failed."] = "Klonen des Kanals fehlgeschlagen. Import fehlgeschlagen.";
+App::$strings["(Unknown)"] = "(Unbekannt)";
+App::$strings["Visible to anybody on the internet."] = "Für jeden im Internet sichtbar.";
+App::$strings["Visible to you only."] = "Nur für Dich sichtbar.";
+App::$strings["Visible to anybody in this network."] = "Für jedes \$Projectname-Mitglied sichtbar.";
+App::$strings["Visible to anybody authenticated."] = "Für jeden sichtbar, der angemeldet ist.";
+App::$strings["Visible to anybody on %s."] = "Für jeden auf %s sichtbar.";
+App::$strings["Visible to all connections."] = "Für alle Verbindungen sichtbar.";
+App::$strings["Visible to approved connections."] = "Nur für akzeptierte Verbindungen sichtbar.";
+App::$strings["Visible to specific connections."] = "Sichtbar für bestimmte Verbindungen.";
+App::$strings["Privacy group is empty."] = "Gruppe ist leer.";
+App::$strings["Privacy group: %s"] = "Gruppe: %s";
+App::$strings["Connection not found."] = "Die Verbindung wurde nicht gefunden.";
+App::$strings["profile photo"] = "Profilfoto";
+App::$strings["No recipient provided."] = "Kein Empfänger angegeben";
+App::$strings["[no subject]"] = "[no subject]";
+App::$strings["Unable to determine sender."] = "Kann Absender nicht bestimmen.";
+App::$strings["Stored post could not be verified."] = "Gespeicherter Beitrag konnten nicht überprüft werden.";
+App::$strings["prev"] = "vorherige";
+App::$strings["first"] = "erste";
+App::$strings["last"] = "letzte";
+App::$strings["next"] = "nächste";
+App::$strings["older"] = "älter";
+App::$strings["newer"] = "neuer";
+App::$strings["No connections"] = "Keine Verbindungen";
+App::$strings["View all %s connections"] = "Alle Verbindungen von %s anzeigen";
+App::$strings["poke"] = "anstupsen";
+App::$strings["poked"] = "stupste";
+App::$strings["ping"] = "anpingen";
+App::$strings["pinged"] = "pingte";
+App::$strings["prod"] = "knuffen";
+App::$strings["prodded"] = "knuffte";
+App::$strings["slap"] = "ohrfeigen";
+App::$strings["slapped"] = "ohrfeigte";
+App::$strings["finger"] = "befummeln";
+App::$strings["fingered"] = "befummelte";
+App::$strings["rebuff"] = "eine Abfuhr erteilen";
+App::$strings["rebuffed"] = "zurückgewiesen";
+App::$strings["happy"] = "glücklich";
+App::$strings["sad"] = "traurig";
+App::$strings["mellow"] = "sanft";
+App::$strings["tired"] = "müde";
+App::$strings["perky"] = "frech";
+App::$strings["angry"] = "sauer";
+App::$strings["stupefied"] = "verblüfft";
+App::$strings["puzzled"] = "verwirrt";
+App::$strings["interested"] = "interessiert";
+App::$strings["bitter"] = "verbittert";
+App::$strings["cheerful"] = "fröhlich";
+App::$strings["alive"] = "lebendig";
+App::$strings["annoyed"] = "verärgert";
+App::$strings["anxious"] = "unruhig";
+App::$strings["cranky"] = "schrullig";
+App::$strings["disturbed"] = "verstört";
+App::$strings["frustrated"] = "frustriert";
+App::$strings["depressed"] = "deprimiert";
+App::$strings["motivated"] = "motiviert";
+App::$strings["relaxed"] = "entspannt";
+App::$strings["surprised"] = "überrascht";
+App::$strings["Monday"] = "Montag";
+App::$strings["Tuesday"] = "Dienstag";
+App::$strings["Wednesday"] = "Mittwoch";
+App::$strings["Thursday"] = "Donnerstag";
+App::$strings["Friday"] = "Freitag";
+App::$strings["Saturday"] = "Samstag";
+App::$strings["Sunday"] = "Sonntag";
+App::$strings["January"] = "Januar";
+App::$strings["February"] = "Februar";
+App::$strings["March"] = "März";
+App::$strings["April"] = "April";
+App::$strings["May"] = "Mai";
+App::$strings["June"] = "Juni";
+App::$strings["July"] = "Juli";
+App::$strings["August"] = "August";
+App::$strings["September"] = "September";
+App::$strings["October"] = "Oktober";
+App::$strings["November"] = "November";
+App::$strings["December"] = "Dezember";
+App::$strings["Unknown Attachment"] = "Unbekannter Anhang";
+App::$strings["unknown"] = "unbekannt";
+App::$strings["remove category"] = "Kategorie entfernen";
+App::$strings["remove from file"] = "aus der Datei entfernen";
+App::$strings["default"] = "Standard";
+App::$strings["Page layout"] = "Seiten-Layout";
+App::$strings["You can create your own with the layouts tool"] = "Mit dem Gestaltungswerkzeug kannst Du Deine eigenen Layouts erstellen";
+App::$strings["Page content type"] = "Art des Seiteninhalts";
+App::$strings["Select an alternate language"] = "Wähle eine alternative Sprache";
+App::$strings["activity"] = "Aktivität";
+App::$strings["Design Tools"] = "Gestaltungswerkzeuge";
+App::$strings["Pages"] = "Seiten";
+App::$strings["System"] = "System";
+App::$strings["New App"] = "Neue App";
+App::$strings["Suggestions"] = "Vorschläge";
+App::$strings["See more..."] = "Mehr anzeigen …";
+App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Du bist %1$.0f von maximal %2$.0f erlaubten Verbindungen eingegangen.";
+App::$strings["Add New Connection"] = "Neue Verbindung hinzufügen";
+App::$strings["Enter channel address"] = "Adresse des Kanals eingeben";
+App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Beispiele: bob@beispiel.com, http://beispiel.com/barbara";
+App::$strings["Notes"] = "Notizen";
+App::$strings["Remove term"] = "Eintrag löschen";
+App::$strings["Saved Searches"] = "Gespeicherte Suchanfragen";
+App::$strings["add"] = "hinzufügen";
+App::$strings["Saved Folders"] = "Gespeicherte Ordner";
+App::$strings["Everything"] = "Alles";
+App::$strings["Archives"] = "Archive";
+App::$strings["Refresh"] = "Aktualisieren";
+App::$strings["Account settings"] = "Konto-Einstellungen";
+App::$strings["Channel settings"] = "Kanal-Einstellungen";
+App::$strings["Additional features"] = "Zusätzliche Funktionen";
+App::$strings["Feature/Addon settings"] = "Plugin-Einstellungen";
+App::$strings["Display settings"] = "Anzeige-Einstellungen";
+App::$strings["Manage locations"] = "Klon-Adressen verwalten";
+App::$strings["Export channel"] = "Kanal exportieren";
+App::$strings["Connected apps"] = "Verbundene Apps";
+App::$strings["Premium Channel Settings"] = "Premium-Kanal-Einstellungen";
+App::$strings["Private Mail Menu"] = "Private Nachrichten";
+App::$strings["Combined View"] = "Kombinierte Anzeige";
+App::$strings["Inbox"] = "Eingang";
+App::$strings["Outbox"] = "Ausgang";
+App::$strings["New Message"] = "Neue Nachricht";
+App::$strings["Conversations"] = "Konversationen";
+App::$strings["Received Messages"] = "Erhaltene Nachrichten";
+App::$strings["Sent Messages"] = "Gesendete Nachrichten";
+App::$strings["No messages."] = "Keine Nachrichten.";
+App::$strings["Delete conversation"] = "Unterhaltung löschen";
+App::$strings["Events Menu"] = "Kalendermenü";
+App::$strings["Day View"] = "Tagesansicht";
+App::$strings["Week View"] = "Wochenansicht";
+App::$strings["Month View"] = "Monatsansicht";
+App::$strings["Events Tools"] = "Kalenderwerkzeuge";
+App::$strings["Export Calendar"] = "Kalender exportieren";
+App::$strings["Import Calendar"] = "Kalender importieren";
+App::$strings["Chatrooms"] = "Chaträume";
+App::$strings["Overview"] = "Ãœbersicht";
+App::$strings["Chat Members"] = "Chatmitglieder";
+App::$strings["Bookmarked Chatrooms"] = "Gespeicherte Chatrooms";
+App::$strings["Suggested Chatrooms"] = "Chatraum-Vorschläge";
+App::$strings["photo/image"] = "Foto/Bild";
+App::$strings["Click to show more"] = "Klick, um mehr anzuzeigen";
+App::$strings["Rating Tools"] = "Bewertungswerkzeuge";
+App::$strings["Rate Me"] = "Bewerte mich";
+App::$strings["View Ratings"] = "Bewertungen ansehen";
+App::$strings["Forums"] = "Foren";
+App::$strings["Tasks"] = "Aufgaben";
+App::$strings["Documentation"] = "Dokumentation";
+App::$strings["Project/Site Information"] = "Informationen über das Projekt und diesen Hub";
+App::$strings["For Members"] = "Für Mitglieder";
+App::$strings["For Administrators"] = "Für Administratoren";
+App::$strings["For Developers"] = "Für Entwickler";
+App::$strings["Member registrations waiting for confirmation"] = "Nutzer-Anmeldungen, die auf Bestätigung warten";
+App::$strings["Inspect queue"] = "Warteschlange kontrollieren";
+App::$strings["DB updates"] = "DB-Aktualisierungen";
+App::$strings["Admin"] = "Administration";
+App::$strings["Plugin Features"] = "Plug-In Funktionen";
+App::$strings["Channel is blocked on this site."] = "Der Kanal ist auf dieser Seite blockiert ";
+App::$strings["Channel location missing."] = "Adresse des Kanals fehlt.";
+App::$strings["Response from remote channel was incomplete."] = "Antwort des entfernten Kanals war unvollständig.";
+App::$strings["Channel was deleted and no longer exists."] = "Kanal wurde gelöscht und existiert nicht mehr.";
+App::$strings["Protocol disabled."] = "Protokoll deaktiviert.";
+App::$strings["Channel discovery failed."] = "Kanalsuche fehlgeschlagen";
+App::$strings["Cannot connect to yourself."] = "Du kannst Dich nicht mit Dir selbst verbinden.";
+App::$strings["%1\$s's bookmarks"] = "%1\$ss Lesezeichen";
+App::$strings["Public Timeline"] = "Öffentliche Zeitleiste";
App::$strings["Image/photo"] = "Bild/Foto";
App::$strings["Encrypted content"] = "Verschlüsselter Inhalt";
App::$strings["Install %s element: "] = "Element %s installieren: ";
App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Dieser Beitrag beinhaltet ein installierbares %s Element, aber Du hast nicht die nötigen Rechte, um es auf diesem Hub zu installieren.";
App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s schrieb den folgenden %2\$s %3\$s";
+App::$strings["Click to open/close"] = "Klicke zum Öffnen/Schließen";
+App::$strings["spoiler"] = "Spoiler";
App::$strings["Different viewers will see this text differently"] = "Verschiedene Betrachter werden diesen Text unterschiedlich sehen";
-App::$strings["$1 spoiler"] = "$1 Spoiler";
App::$strings["$1 wrote:"] = "$1 schrieb:";
+App::$strings["Directory Options"] = "Verzeichnisoptionen";
+App::$strings["Safe Mode"] = "Sicherer Modus";
+App::$strings["Public Forums Only"] = "Nur öffentliche Foren";
+App::$strings["This Website Only"] = "Nur dieser Hub";
+App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde.";
+App::$strings["Logout"] = "Abmelden";
+App::$strings["End this session"] = "Beende diese Sitzung";
+App::$strings["Home"] = "Home";
+App::$strings["Your posts and conversations"] = "Deine Beiträge und Unterhaltungen";
+App::$strings["Your profile page"] = "Deine Profilseite";
+App::$strings["Manage/Edit profiles"] = "Profile verwalten";
+App::$strings["Edit Profile"] = "Profile bearbeiten";
+App::$strings["Edit your profile"] = "Profil bearbeiten";
+App::$strings["Your photos"] = "Deine Bilder";
+App::$strings["Your files"] = "Deine Dateien";
+App::$strings["Your chatrooms"] = "Deine Chaträume";
+App::$strings["Bookmarks"] = "Lesezeichen";
+App::$strings["Your bookmarks"] = "Deine Lesezeichen";
+App::$strings["Your webpages"] = "Deine Webseiten";
+App::$strings["Sign in"] = "Anmelden";
+App::$strings["%s - click to logout"] = "%s - Klick zum Abmelden";
+App::$strings["Remote authentication"] = "Ãœber Konto auf anderem Server einloggen";
+App::$strings["Click to authenticate to your home hub"] = "Klicke, um Dich über Deinen Heimat-Server zu authentifizieren";
+App::$strings["Home Page"] = "Homepage";
+App::$strings["Create an account"] = "Erzeuge ein Konto";
+App::$strings["Help and documentation"] = "Hilfe und Dokumentation";
+App::$strings["Applications, utilities, links, games"] = "Anwendungen (Apps), Zubehör, Links, Spiele";
+App::$strings["Search site @name, #tag, ?docs, content"] = "Hub durchsuchen: @Name. #Schlagwort, ?Dokumentation, Inhalt";
+App::$strings["Channel Directory"] = "Kanal-Verzeichnis";
+App::$strings["Your grid"] = "Dein Grid";
+App::$strings["Mark all grid notifications seen"] = "Alle Grid-Benachrichtigungen als angesehen markieren";
+App::$strings["Channel home"] = "Mein Kanal";
+App::$strings["Mark all channel notifications seen"] = "Markiere alle Kanal-Benachrichtigungen als angesehen";
+App::$strings["Notices"] = "Benachrichtigungen";
+App::$strings["Notifications"] = "Benachrichtigungen";
+App::$strings["See all notifications"] = "Alle Benachrichtigungen ansehen";
+App::$strings["Private mail"] = "Persönliche Mail";
+App::$strings["See all private messages"] = "Alle persönlichen Nachrichten ansehen";
+App::$strings["Mark all private messages seen"] = "Markiere alle persönlichen Nachrichten als gesehen";
+App::$strings["Event Calendar"] = "Terminkalender";
+App::$strings["See all events"] = "Alle Termine ansehen";
+App::$strings["Mark all events seen"] = "Markiere alle Termine als gesehen";
+App::$strings["Manage Your Channels"] = "Verwalte Deine Kanäle";
+App::$strings["Account/Channel Settings"] = "Konto-/Kanal-Einstellungen";
+App::$strings["Site Setup and Configuration"] = "Seiten-Einrichtung und -Konfiguration";
+App::$strings["Loading..."] = "Lädt ...";
+App::$strings["@name, #tag, ?doc, content"] = "@Name, #Schlagwort, ?Dokumentation, Inhalt";
+App::$strings["Please wait..."] = "Bitte warten...";
+App::$strings["New window"] = "Neues Fenster";
+App::$strings["Open the selected location in a different window or browser tab"] = "Öffne die markierte Adresse in einem neuen Browserfenster oder Tab";
+App::$strings["User '%s' deleted"] = "Benutzer '%s' gelöscht";
+App::$strings["%d invitation available"] = array(
+ 0 => "%d Einladung verfügbar",
+ 1 => "%d Einladungen verfügbar",
+);
+App::$strings["Find Channels"] = "Finde Kanäle";
+App::$strings["Enter name or interest"] = "Name oder Interessen eingeben";
+App::$strings["Connect/Follow"] = "Verbinden/Folgen";
+App::$strings["Examples: Robert Morgenstein, Fishing"] = "Beispiele: Robert Morgenstein, Angeln";
+App::$strings["Random Profile"] = "Zufallsprofil";
+App::$strings["Invite Friends"] = "Lade Freunde ein";
+App::$strings["Advanced example: name=fred and country=iceland"] = "Fortgeschrittenes Beispiel: name=fred and country=iceland";
+App::$strings["%d connection in common"] = array(
+ 0 => "%d gemeinsame Verbindung",
+ 1 => "%d gemeinsame Verbindungen",
+);
+App::$strings["show more"] = "mehr zeigen";
App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s ist jetzt mit %2\$s verbunden";
App::$strings["%1\$s poked %2\$s"] = "%1\$s stupste %2\$s an";
-App::$strings["poked"] = "stupste";
App::$strings["View %s's profile @ %s"] = "%ss Profil auf %s ansehen";
App::$strings["Categories:"] = "Kategorien:";
App::$strings["Filed under:"] = "Gespeichert unter:";
App::$strings["View in context"] = "Im Zusammenhang anschauen";
App::$strings["remove"] = "lösche";
-App::$strings["Loading..."] = "Lädt ...";
App::$strings["Delete Selected Items"] = "Lösche die ausgewählten Elemente";
App::$strings["View Source"] = "Quelle anzeigen";
App::$strings["Follow Thread"] = "Unterhaltung folgen";
@@ -1644,24 +1811,16 @@ App::$strings[", and %d other people"] = array(
);
App::$strings["%s like this."] = "%s gefällt das.";
App::$strings["%s don't like this."] = "%s gefällt das nicht.";
-App::$strings["Visible to <strong>everybody</strong>"] = "Sichtbar für <strong>jeden</strong>";
-App::$strings["Please enter a video link/URL:"] = "Gib einen Video-Link/URL ein:";
-App::$strings["Please enter an audio link/URL:"] = "Gib einen Audio-Link/URL ein:";
+App::$strings["Set your location"] = "Standort";
+App::$strings["Clear browser location"] = "Browser-Standort löschen";
App::$strings["Tag term:"] = "Schlagwort:";
App::$strings["Where are you right now?"] = "Wo bist Du jetzt grade?";
App::$strings["Page link name"] = "Link zur Seite";
App::$strings["Post as"] = "Veröffentlichen als";
-App::$strings["upload photo"] = "Foto hochladen";
-App::$strings["attach file"] = "Datei anfügen";
-App::$strings["web link"] = "Web-Link";
-App::$strings["Insert video link"] = "Video-Link einfügen";
-App::$strings["video link"] = "Video-Link";
-App::$strings["Insert audio link"] = "Audio-Link einfügen";
-App::$strings["audio link"] = "Audio-Link";
-App::$strings["set location"] = "Standort";
-App::$strings["clear location"] = "Standort löschen";
-App::$strings["permissions"] = "Berechtigungen";
+App::$strings["Toggle voting"] = "Umfragewerkzeug aktivieren";
+App::$strings["Categories (optional, comma-separated list)"] = "Kategorien (optional, kommagetrennte Liste)";
App::$strings["Set publish date"] = "Veröffentlichungsdatum festlegen";
+App::$strings["OK"] = "Ok";
App::$strings["Discover"] = "Entdecken";
App::$strings["Imported public streams"] = "Importierte öffentliche Beiträge";
App::$strings["Commented Order"] = "Neueste Kommentare";
@@ -1679,7 +1838,6 @@ App::$strings["About"] = "Ãœber";
App::$strings["Profile Details"] = "Profil-Details";
App::$strings["Photo Albums"] = "Fotoalben";
App::$strings["Files and Storage"] = "Dateien und Speicher";
-App::$strings["Chatrooms"] = "Chaträume";
App::$strings["Saved Bookmarks"] = "Gespeicherte Lesezeichen";
App::$strings["Manage Webpages"] = "Webseiten verwalten";
App::$strings["__ctx:noun__ Attending"] = array(
@@ -1706,53 +1864,99 @@ App::$strings["__ctx:noun__ Abstain"] = array(
0 => "Enthaltung",
1 => "Enthaltungen",
);
-App::$strings["%1\$s's bookmarks"] = "%1\$ss Lesezeichen";
-App::$strings["Missing room name"] = "Der Chatraum hat keinen Namen";
-App::$strings["Duplicate room name"] = "Name des Chatraums bereits vergeben";
-App::$strings["Invalid room specifier."] = "Ungültiger Raumbezeichner.";
-App::$strings["Room not found."] = "Chatraum konnte nicht gefunden werden.";
-App::$strings["Room is full"] = "Der Chatraum ist voll";
-App::$strings["New window"] = "Neues Fenster";
-App::$strings["Open the selected location in a different window or browser tab"] = "Öffne die markierte Adresse in einem neuen Browserfenster oder Tab";
-App::$strings["User '%s' deleted"] = "Benutzer '%s' gelöscht";
-App::$strings["Logged out."] = "Ausgeloggt.";
-App::$strings["Failed authentication"] = "Authentifizierung fehlgeschlagen";
-App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde.";
App::$strings["Frequently"] = "Häufig";
App::$strings["Hourly"] = "Stündlich";
App::$strings["Twice daily"] = "Zwei Mal am Tag";
App::$strings["Daily"] = "Täglich";
App::$strings["Weekly"] = "Wöchentlich";
App::$strings["Monthly"] = "Monatlich";
-App::$strings["Friendica"] = "Friendica";
-App::$strings["OStatus"] = "OStatus";
-App::$strings["GNU-Social"] = "GNU-Social";
-App::$strings["RSS/Atom"] = "RSS/Atom";
-App::$strings["Diaspora"] = "Diaspora";
-App::$strings["Facebook"] = "Facebook";
-App::$strings["Zot"] = "Zot!";
-App::$strings["LinkedIn"] = "LinkedIn";
-App::$strings["XMPP/IM"] = "XMPP/IM";
-App::$strings["MySpace"] = "MySpace";
-App::$strings["%d invitation available"] = array(
- 0 => "%d Einladung verfügbar",
- 1 => "%d Einladungen verfügbar",
-);
-App::$strings["Find Channels"] = "Finde Kanäle";
-App::$strings["Enter name or interest"] = "Name oder Interessen eingeben";
-App::$strings["Connect/Follow"] = "Verbinden/Folgen";
-App::$strings["Examples: Robert Morgenstein, Fishing"] = "Beispiele: Robert Morgenstein, Angeln";
-App::$strings["Random Profile"] = "Zufallsprofil";
-App::$strings["Invite Friends"] = "Lade Freunde ein";
-App::$strings["Advanced example: name=fred and country=iceland"] = "Fortgeschrittenes Beispiel: name=fred and country=iceland";
-App::$strings["Saved Folders"] = "Gespeicherte Ordner";
-App::$strings["Everything"] = "Alles";
-App::$strings["Categories"] = "Kategorien";
-App::$strings["%d connection in common"] = array(
- 0 => "%d gemeinsame Verbindung",
- 1 => "%d gemeinsame Verbindungen",
-);
-App::$strings["show more"] = "mehr zeigen";
+App::$strings["Currently Male"] = "Momentan männlich";
+App::$strings["Currently Female"] = "Momentan weiblich";
+App::$strings["Mostly Male"] = "Größtenteils männlich";
+App::$strings["Mostly Female"] = "Größtenteils weiblich";
+App::$strings["Transgender"] = "Transsexuell";
+App::$strings["Intersex"] = "Zwischengeschlechtlich";
+App::$strings["Transsexual"] = "Transsexuell";
+App::$strings["Hermaphrodite"] = "Zwitter";
+App::$strings["Neuter"] = "Geschlechtslos";
+App::$strings["Non-specific"] = "unklar";
+App::$strings["Other"] = "Andere";
+App::$strings["Undecided"] = "Unentschieden";
+App::$strings["Males"] = "Männer";
+App::$strings["Females"] = "Frauen";
+App::$strings["Gay"] = "Schwul";
+App::$strings["Lesbian"] = "Lesbisch";
+App::$strings["No Preference"] = "Keine Bevorzugung";
+App::$strings["Bisexual"] = "Bisexuell";
+App::$strings["Autosexual"] = "Autosexuell";
+App::$strings["Abstinent"] = "Enthaltsam";
+App::$strings["Virgin"] = "Jungfräulich";
+App::$strings["Deviant"] = "Abweichend";
+App::$strings["Fetish"] = "Fetisch";
+App::$strings["Oodles"] = "Unmengen";
+App::$strings["Nonsexual"] = "Sexlos";
+App::$strings["Single"] = "Single";
+App::$strings["Lonely"] = "Einsam";
+App::$strings["Available"] = "Verfügbar";
+App::$strings["Unavailable"] = "Nicht verfügbar";
+App::$strings["Has crush"] = "Verguckt";
+App::$strings["Infatuated"] = "Verknallt";
+App::$strings["Dating"] = "Lerne gerade jemanden kennen";
+App::$strings["Unfaithful"] = "Treulos";
+App::$strings["Sex Addict"] = "Sexabhängig";
+App::$strings["Friends/Benefits"] = "Freunde/Begünstigte";
+App::$strings["Casual"] = "Lose";
+App::$strings["Engaged"] = "Verlobt";
+App::$strings["Married"] = "Verheiratet";
+App::$strings["Imaginarily married"] = "Gewissermaßen verheiratet";
+App::$strings["Partners"] = "Partner";
+App::$strings["Cohabiting"] = "Lebensgemeinschaft";
+App::$strings["Common law"] = "Informelle Ehe";
+App::$strings["Happy"] = "Glücklich";
+App::$strings["Not looking"] = "Nicht Ausschau haltend";
+App::$strings["Swinger"] = "Swinger";
+App::$strings["Betrayed"] = "Betrogen";
+App::$strings["Separated"] = "Getrennt";
+App::$strings["Unstable"] = "Labil";
+App::$strings["Divorced"] = "Geschieden";
+App::$strings["Imaginarily divorced"] = "Gewissermaßen geschieden";
+App::$strings["Widowed"] = "Verwitwet";
+App::$strings["Uncertain"] = "Ungewiss";
+App::$strings["It's complicated"] = "Es ist kompliziert";
+App::$strings["Don't care"] = "Interessiert mich nicht";
+App::$strings["Ask me"] = "Frag mich mal";
+App::$strings["Visible to your default audience"] = "Standard-Sichtbarkeit gemäß Kanaleinstellungen";
+App::$strings["Only me"] = "Nur ich";
+App::$strings["Public"] = "Öffentlich";
+App::$strings["Anybody in the \$Projectname network"] = "Jeder innerhalb des \$Projectname Netzwerks";
+App::$strings["Any account on %s"] = "Jedes Nutzerkonto auf %s";
+App::$strings["Any of my connections"] = "Alle meine Verbindungen";
+App::$strings["Only connections I specifically allow"] = "Nur Verbindungen, denen ich es explizit erlaube";
+App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Jeder, der angemeldet ist (kann Besucher anderer Netzwerke beinhalten)";
+App::$strings["Any connections including those who haven't yet been approved"] = "Alle Verbindungen einschließlich der noch nicht bestätigten";
+App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner normalen Beiträge (Stream).";
+App::$strings["This is your default setting for who can view your default channel profile"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deines Standard-Kanalprofils.";
+App::$strings["This is your default setting for who can view your connections"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Verbindungen.";
+App::$strings["This is your default setting for who can view your file storage and photos"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Dateien und Fotos.";
+App::$strings["This is your default setting for the audience of your webpages"] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Webseiten.";
+App::$strings["Not a valid email address"] = "Ungültige E-Mail-Adresse";
+App::$strings["Your email domain is not among those allowed on this site"] = "Deine E-Mail-Adresse ist auf dieser Seite nicht erlaubt";
+App::$strings["Your email address is already registered at this site."] = "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert.";
+App::$strings["An invitation is required."] = "Eine Einladung wird benötigt.";
+App::$strings["Invitation could not be verified."] = "Die Einladung konnte nicht bestätigt werden.";
+App::$strings["Please enter the required information."] = "Bitte gib die benötigten Informationen ein.";
+App::$strings["Failed to store account information."] = "Speichern der Nutzerkontodaten fehlgeschlagen.";
+App::$strings["Registration confirmation for %s"] = "Registrierungsbestätigung für %s";
+App::$strings["Registration request at %s"] = "Registrierungsanfrage auf %s";
+App::$strings["Administrator"] = "Administrator";
+App::$strings["your registration password"] = "Dein Registrierungspasswort";
+App::$strings["Registration details for %s"] = "Registrierungsdetails für %s";
+App::$strings["Account approved."] = "Nutzerkonto bestätigt.";
+App::$strings["Registration revoked for %s"] = "Registrierung für %s wurde widerrufen";
+App::$strings["Account verified. Please login."] = "Nutzerkonto wurde bestätigt. Bitte melde Dich an!";
+App::$strings["Click here to upgrade."] = "Klicke hier, um das Upgrade durchzuführen.";
+App::$strings["This action exceeds the limits set by your subscription plan."] = "Diese Aktion überschreitet die Grenzen Ihres Abonnements.";
+App::$strings["This action is not available under your subscription plan."] = "Diese Aktion ist in Ihrem Abonnement nicht verfügbar.";
App::$strings["Item was not found."] = "Beitrag wurde nicht gefunden.";
App::$strings["No source file."] = "Keine Quelldatei.";
App::$strings["Cannot locate file to replace"] = "Kann Datei zum Ersetzen nicht finden";
@@ -1768,88 +1972,44 @@ App::$strings["Path not found."] = "Pfad nicht gefunden.";
App::$strings["mkdir failed."] = "mkdir fehlgeschlagen.";
App::$strings["database storage failed."] = "Speichern in der Datenbank fehlgeschlagen.";
App::$strings["Empty path"] = "Leere Pfadangabe";
-App::$strings["Birthday"] = "Geburtstag";
-App::$strings["Age: "] = "Alter:";
-App::$strings["YYYY-MM-DD or MM-DD"] = "JJJJ-MM-TT oder MM-TT";
-App::$strings["never"] = "Nie";
-App::$strings["less than a second ago"] = "Vor weniger als einer Sekunde";
-App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "vor %1\$d %2\$s";
-App::$strings["__ctx:relative_date__ year"] = array(
- 0 => "Jahr",
- 1 => "Jahre",
-);
-App::$strings["__ctx:relative_date__ month"] = array(
- 0 => "Monat",
- 1 => "Monate",
-);
-App::$strings["__ctx:relative_date__ week"] = array(
- 0 => "Woche",
- 1 => "Wochen",
-);
-App::$strings["__ctx:relative_date__ day"] = array(
- 0 => "Tag",
- 1 => "Tage",
-);
-App::$strings["__ctx:relative_date__ hour"] = array(
- 0 => "Stunde",
- 1 => "Stunden",
-);
-App::$strings["__ctx:relative_date__ minute"] = array(
- 0 => "Minute",
- 1 => "Minuten",
-);
-App::$strings["__ctx:relative_date__ second"] = array(
- 0 => "Sekunde",
- 1 => "Sekunden",
-);
-App::$strings["%1\$s's birthday"] = "%1\$ss Geburtstag";
-App::$strings["Happy Birthday %1\$s"] = "Alles Gute zum Geburtstag, %1\$s";
-App::$strings["Directory Options"] = "Verzeichnisoptionen";
-App::$strings["Safe Mode"] = "Sicherer Modus";
-App::$strings["Public Forums Only"] = "Nur öffentliche Foren";
-App::$strings["This Website Only"] = "Nur dieser Hub";
-App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
-App::$strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla:Benachrichtigung] Neue Mail empfangen auf %s";
-App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s hat Dir eine private Nachricht auf %3\$s gesendet.";
-App::$strings["%1\$s sent you %2\$s."] = "%1\$s hat Dir %2\$s geschickt.";
-App::$strings["a private message"] = "eine private Nachricht";
-App::$strings["Please visit %s to view and/or reply to your private messages."] = "Bitte besuche %s, um die private Nachricht anzusehen und/oder darauf zu antworten.";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]einen %4\$s[/zrl] kommentiert";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]%4\$ss %5\$s[/zrl] kommentiert";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]Deinen %4\$s[/zrl] kommentiert";
-App::$strings["[Hubzilla:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Hubzilla:Benachrichtigung] Kommentar in Unterhaltung #%1\$d von %2\$s";
-App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s hat eine Unterhaltung kommentiert, der Du folgst.";
-App::$strings["Please visit %s to view and/or reply to the conversation."] = "Bitte besuche %s, um die Unterhaltung anzusehen und/oder zu kommentieren.";
-App::$strings["[Hubzilla:Notify] %s posted to your profile wall"] = "[Hubzilla:Benachrichtigung] %s schrieb auf Deine Pinnwand";
-App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s hat auf Deine Pinnwand auf %3\$s geschrieben";
-App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s hat auf [zrl=%3\$s]Deine Pinnwand[/zrl] geschrieben";
-App::$strings["[Hubzilla:Notify] %s tagged you"] = "[Hubzilla:Benachrichtigung] %s hat Dich erwähnt";
-App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s hat Dich auf %3\$s erwähnt";
-App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]hat Dich erwähnt[/zrl].";
-App::$strings["[Hubzilla:Notify] %1\$s poked you"] = "[Hubzilla:Benachrichtigung] %1\$s hat Dich angestupst";
-App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s hat Dich auf %3\$s angestupst";
-App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]hat Dich angestupst[/zrl].";
-App::$strings["[Hubzilla:Notify] %s tagged your post"] = "[Hubzilla:Benachrichtigung] %s hat Deinen Beitrag verschlagwortet";
-App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s hat Deinen Beitrag auf %3\$s verschlagwortet";
-App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]Deinen Beitrag[/zrl] verschlagwortet";
-App::$strings["[Hubzilla:Notify] Introduction received"] = "[Hubzilla:Benachrichtigung] Vorstellung erhalten";
-App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, Du hast eine neue Verbindungsanfrage von '%2\$s' auf %3\$s erhalten";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, Du hast [zrl=%2\$s]eine neue Verbindungsanfrage[/zrl] von %3\$s erhalten.";
-App::$strings["You may visit their profile at %s"] = "Du kannst Dir das Profil unter %s ansehen";
-App::$strings["Please visit %s to approve or reject the connection request."] = "Bitte besuche %s , um die Verbindungsanfrage anzunehmen oder abzulehnen.";
-App::$strings["[Hubzilla:Notify] Friend suggestion received"] = "[Hubzilla:Benachrichtigung] Freundschaftsvorschlag erhalten";
-App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, Du hast einen Kontaktvorschlag von „%2\$s“ auf %3\$s erhalten";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, Du hast [zrl=%2\$s]einen Kontaktvorschlag[/zrl] für %3\$s von %4\$s erhalten.";
-App::$strings["Name:"] = "Name:";
-App::$strings["Photo:"] = "Foto:";
-App::$strings["Please visit %s to approve or reject the suggestion."] = "Bitte besuche %s um den Vorschlag zu akzeptieren oder abzulehnen.";
-App::$strings["[Hubzilla:Notify]"] = "[Hubzilla:Benachrichtigung]";
-App::$strings["This event has been added to your calendar."] = "Dieser Termin wurde zu Deinem Kalender hinzugefügt";
-App::$strings["Not specified"] = "Keine Angabe";
-App::$strings["Needs Action"] = "Aktion erforderlich";
-App::$strings["Completed"] = "Abgeschlossen";
-App::$strings["In Process"] = "In Bearbeitung";
-App::$strings["Cancelled"] = "gestrichen";
+App::$strings["Unable to obtain identity information from database"] = "Kann keine Identitäts-Informationen aus Datenbank beziehen";
+App::$strings["Empty name"] = "Namensfeld leer";
+App::$strings["Name too long"] = "Name ist zu lang";
+App::$strings["No account identifier"] = "Keine Account-Kennung";
+App::$strings["Nickname is required."] = "Spitzname ist erforderlich.";
+App::$strings["Reserved nickname. Please choose another."] = "Reservierter Kurzname. Bitte wähle einen anderen.";
+App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt.";
+App::$strings["Unable to retrieve created identity"] = "Kann die erstellte Identität nicht empfangen";
+App::$strings["Default Profile"] = "Standard-Profil";
+App::$strings["Requested channel is not available."] = "Angeforderte Kanal nicht verfügbar.";
+App::$strings["Create New Profile"] = "Neues Profil erstellen";
+App::$strings["Visible to everybody"] = "Für jeden sichtbar";
+App::$strings["Gender:"] = "Geschlecht:";
+App::$strings["Status:"] = "Status:";
+App::$strings["Homepage:"] = "Homepage:";
+App::$strings["Online Now"] = "gerade online";
+App::$strings["Like this channel"] = "Dieser Kanal gefällt mir";
+App::$strings["j F, Y"] = "j. F Y";
+App::$strings["j F"] = "j. F";
+App::$strings["Birthday:"] = "Geburtstag:";
+App::$strings["for %1\$d %2\$s"] = "seit %1\$d %2\$s";
+App::$strings["Sexual Preference:"] = "Sexuelle Orientierung:";
+App::$strings["Tags:"] = "Schlagworte:";
+App::$strings["Political Views:"] = "Politische Ansichten:";
+App::$strings["Religion:"] = "Religion:";
+App::$strings["Hobbies/Interests:"] = "Hobbys/Interessen:";
+App::$strings["Likes:"] = "Gefällt:";
+App::$strings["Dislikes:"] = "Gefällt nicht:";
+App::$strings["Contact information and Social Networks:"] = "Kontaktinformation und soziale Netzwerke:";
+App::$strings["My other channels:"] = "Meine anderen Kanäle:";
+App::$strings["Musical interests:"] = "Musikalische Interessen:";
+App::$strings["Books, literature:"] = "Bücher, Literatur:";
+App::$strings["Television:"] = "Fernsehen:";
+App::$strings["Film/dance/culture/entertainment:"] = "Film/Tanz/Kultur/Unterhaltung:";
+App::$strings["Love/Romance:"] = "Liebe/Romantik:";
+App::$strings["Work/employment:"] = "Arbeit/Anstellung:";
+App::$strings["School/education:"] = "Schule/Ausbildung:";
+App::$strings["Like this thing"] = "Gefällt mir";
App::$strings["General Features"] = "Allgemeine Funktionen";
App::$strings["Content Expiration"] = "Verfall von Inhalten";
App::$strings["Remove posts/comments and/or private messages at a future time"] = "Ermöglicht das automatische Löschen von Beiträgen, Kommentaren und/oder privaten Nachrichten zu einem zukünftigen Datum.";
@@ -1894,7 +2054,6 @@ App::$strings["Search by Date"] = "Suche nach Datum";
App::$strings["Ability to select posts by date ranges"] = "Möglichkeit, Beiträge nach Zeiträumen auszuwählen";
App::$strings["Privacy Groups"] = "Gruppen";
App::$strings["Enable management and selection of privacy groups"] = "Auswahl und Verwaltung von Gruppen für Kanäle aktivieren";
-App::$strings["Saved Searches"] = "Gespeicherte Suchanfragen";
App::$strings["Save search terms for re-use"] = "Ermöglicht das Abspeichern von Suchbegriffen zur Wiederverwendung";
App::$strings["Network Personal Tab"] = "Persönlicher Netzwerkreiter";
App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Aktiviert einen Reiter in der Grid-Ansicht, der nur Netzwerk-Beiträge anzeigt, mit denen Du interagiert hast";
@@ -1904,13 +2063,14 @@ App::$strings["Affinity Tool"] = "Beziehungs-Tool";
App::$strings["Filter stream activity by depth of relationships"] = "Aktiviert ein Werkzeug in der Grid-Ansicht, das den Stream nach Grad der Beziehung filtern kann";
App::$strings["Connection Filtering"] = "Filter für Verbindungen";
App::$strings["Filter incoming posts from connections based on keywords/content"] = "Ermöglicht die Filterung eingehender Beiträge anhand von Schlüsselwörtern (muss an der Verbindung konfiguriert werden)";
-App::$strings["Suggest Channels"] = "Kanäle vorschlagen";
App::$strings["Show channel suggestions"] = "Kanalvorschläge anzeigen";
App::$strings["Post/Comment Tools"] = "Beitrag-/Kommentar-Tools";
App::$strings["Community Tagging"] = "Gemeinschaftliches Verschlagworten";
App::$strings["Ability to tag existing posts"] = "Ermöglicht das Verschlagworten existierender Beiträge";
App::$strings["Post Categories"] = "Beitrags-Kategorien";
App::$strings["Add categories to your posts"] = "Aktiviert Kategorien für Beiträge";
+App::$strings["Emoji Reactions"] = "Emoji Reaktionen";
+App::$strings["Add emoji reaction ability to posts"] = "Aktiviert Emoji-Reaktionen für Beiträge";
App::$strings["Ability to file posts under folders"] = "Möglichkeit, Beiträge in Verzeichnissen zu sammeln";
App::$strings["Dislike Posts"] = "Gefällt-mir-nicht-Beiträge";
App::$strings["Ability to dislike posts/comments"] = "Aktiviert die „Gefällt mir nicht“-Schaltfläche";
@@ -1918,114 +2078,66 @@ App::$strings["Star Posts"] = "Beiträge mit Sternchen versehen";
App::$strings["Ability to mark special posts with a star indicator"] = "Ermöglicht die lokale Markierung spezieller Beiträge mit einem Sternchen-Symbol";
App::$strings["Tag Cloud"] = "Schlagwort-Wolke";
App::$strings["Provide a personal tag cloud on your channel page"] = "Aktiviert die Anzeige einer Schlagwort-Wolke (Tag Cloud) auf Deiner Kanal-Seite";
-App::$strings["Channel is blocked on this site."] = "Der Kanal ist auf dieser Seite blockiert ";
-App::$strings["Channel location missing."] = "Adresse des Kanals fehlt.";
-App::$strings["Response from remote channel was incomplete."] = "Antwort des entfernten Kanals war unvollständig.";
-App::$strings["Channel was deleted and no longer exists."] = "Kanal wurde gelöscht und existiert nicht mehr.";
-App::$strings["Protocol disabled."] = "Protokoll deaktiviert.";
-App::$strings["Channel discovery failed."] = "Kanalsuche fehlgeschlagen";
-App::$strings["Cannot connect to yourself."] = "Du kannst Dich nicht mit Dir selbst verbinden.";
+App::$strings["Embedded content"] = "Eingebetteter Inhalt";
+App::$strings["Embedding disabled"] = "Einbetten ausgeschaltet";
+App::$strings["Who can see this?"] = "Wer kann das sehen?";
+App::$strings["Custom selection"] = "Benutzerdefinierte Auswahl";
+App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Wähle \"Anzeigen\", um Betrachtung zuzulassen. \"Nicht anzeigen\" überstimmt und limitiert den Aktionsradius von \"Anzeigen\" für Ausnahmen.";
+App::$strings["Show"] = "Anzeigen";
+App::$strings["Don't show"] = "Nicht anzeigen";
+App::$strings["Other networks and post services"] = "Andere Netzwerke und Platformen";
+App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Beitragsberechtigungen %s können nicht geändert werden %s, nachdem der Beitrag gesendet wurde.<br />Diese Berechtigungen bestimmen, wer den Beitrag sehen kann.";
+App::$strings["Logged out."] = "Ausgeloggt.";
+App::$strings["Failed authentication"] = "Authentifizierung fehlgeschlagen";
+App::$strings["Birthday"] = "Geburtstag";
+App::$strings["Age: "] = "Alter:";
+App::$strings["YYYY-MM-DD or MM-DD"] = "JJJJ-MM-TT oder MM-TT";
+App::$strings["never"] = "Nie";
+App::$strings["less than a second ago"] = "Vor weniger als einer Sekunde";
+App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "vor %1\$d %2\$s";
+App::$strings["__ctx:relative_date__ year"] = array(
+ 0 => "Jahr",
+ 1 => "Jahre",
+);
+App::$strings["__ctx:relative_date__ month"] = array(
+ 0 => "Monat",
+ 1 => "Monate",
+);
+App::$strings["__ctx:relative_date__ week"] = array(
+ 0 => "Woche",
+ 1 => "Wochen",
+);
+App::$strings["__ctx:relative_date__ day"] = array(
+ 0 => "Tag",
+ 1 => "Tage",
+);
+App::$strings["__ctx:relative_date__ hour"] = array(
+ 0 => "Stunde",
+ 1 => "Stunden",
+);
+App::$strings["__ctx:relative_date__ minute"] = array(
+ 0 => "Minute",
+ 1 => "Minuten",
+);
+App::$strings["__ctx:relative_date__ second"] = array(
+ 0 => "Sekunde",
+ 1 => "Sekunden",
+);
+App::$strings["%1\$s's birthday"] = "%1\$ss Geburtstag";
+App::$strings["Happy Birthday %1\$s"] = "Alles Gute zum Geburtstag, %1\$s";
App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Es hat früher schon einmal eine Gruppe mit diesem Namen existiert, die gelöscht wurde. Es <strong>könnten</strong> von damals noch Elemente (Beiträge, Dateien etc.) vorhanden sein, die allen jetzigen und zukünftigen Mitgliedern dieser Gruppe den Zugriff erlauben. Wenn das nicht Deine Absicht ist, erstelle bitte eine neue Gruppe mit einem anderen Namen.";
App::$strings["Add new connections to this privacy group"] = "Neue Verbindung zu dieser Gruppe hinzufügen";
App::$strings["edit"] = "Bearbeiten";
App::$strings["Edit group"] = "Gruppe ändern";
App::$strings["Add privacy group"] = "Gruppe hinzufügen";
App::$strings["Channels not in any privacy group"] = "Kanäle, die in keiner Gruppe sind";
-App::$strings["add"] = "hinzufügen";
-App::$strings["(Unknown)"] = "(Unbekannt)";
-App::$strings["Visible to anybody on the internet."] = "Für jeden im Internet sichtbar.";
-App::$strings["Visible to you only."] = "Nur für Dich sichtbar.";
-App::$strings["Visible to anybody in this network."] = "Für jedes \$Projectname-Mitglied sichtbar.";
-App::$strings["Visible to anybody authenticated."] = "Für jeden sichtbar, der angemeldet ist.";
-App::$strings["Visible to anybody on %s."] = "Für jeden auf %s sichtbar.";
-App::$strings["Visible to all connections."] = "Für alle Verbindungen sichtbar.";
-App::$strings["Visible to approved connections."] = "Nur für akzeptierte Verbindungen sichtbar.";
-App::$strings["Visible to specific connections."] = "Sichtbar für bestimmte Verbindungen.";
-App::$strings["Privacy group is empty."] = "Gruppe ist leer.";
-App::$strings["Privacy group: %s"] = "Gruppe: %s";
-App::$strings["Connection not found."] = "Die Verbindung wurde nicht gefunden.";
-App::$strings["profile photo"] = "Profilfoto";
-App::$strings["Image exceeds website size limit of %lu bytes"] = "Bild überschreitet das Webseitenlimit von %lu Bytes";
-App::$strings["Image file is empty."] = "Bilddatei ist leer.";
-App::$strings["Photo storage failed."] = "Fotospeicherung fehlgeschlagen.";
-App::$strings["a new photo"] = "ein neues Foto";
-App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s hat %2\$s auf %3\$s veröffentlicht";
-App::$strings["Upload New Photos"] = "Neue Fotos hochladen";
-App::$strings["System"] = "System";
-App::$strings["Create Personal App"] = "Persönliche App erstellen";
-App::$strings["Edit Personal App"] = "Persönliche App bearbeiten";
-App::$strings["Suggestions"] = "Vorschläge";
-App::$strings["See more..."] = "Mehr anzeigen …";
-App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Du bist %1$.0f von maximal %2$.0f erlaubten Verbindungen eingegangen.";
-App::$strings["Add New Connection"] = "Neue Verbindung hinzufügen";
-App::$strings["Enter channel address"] = "Adresse des Kanals eingeben";
-App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Beispiele: bob@beispiel.com, http://beispiel.com/barbara";
-App::$strings["Notes"] = "Notizen";
-App::$strings["Remove term"] = "Eintrag löschen";
-App::$strings["Archives"] = "Archive";
-App::$strings["Refresh"] = "Aktualisieren";
-App::$strings["Account settings"] = "Konto-Einstellungen";
-App::$strings["Channel settings"] = "Kanal-Einstellungen";
-App::$strings["Additional features"] = "Zusätzliche Funktionen";
-App::$strings["Feature/Addon settings"] = "Plugin-Einstellungen";
-App::$strings["Display settings"] = "Anzeige-Einstellungen";
-App::$strings["Manage locations"] = "Klon-Adressen verwalten";
-App::$strings["Export channel"] = "Kanal exportieren";
-App::$strings["Connected apps"] = "Verbundene Apps";
-App::$strings["Premium Channel Settings"] = "Premium-Kanal-Einstellungen";
-App::$strings["Private Mail Menu"] = "Private Nachrichten";
-App::$strings["Combined View"] = "Kombinierte Anzeige";
-App::$strings["Inbox"] = "Eingang";
-App::$strings["Outbox"] = "Ausgang";
-App::$strings["New Message"] = "Neue Nachricht";
-App::$strings["Conversations"] = "Konversationen";
-App::$strings["Received Messages"] = "Erhaltene Nachrichten";
-App::$strings["Sent Messages"] = "Gesendete Nachrichten";
-App::$strings["No messages."] = "Keine Nachrichten.";
-App::$strings["Delete conversation"] = "Unterhaltung löschen";
-App::$strings["Events Menu"] = "Kalendermenü";
-App::$strings["Day View"] = "Tagesansicht";
-App::$strings["Week View"] = "Wochenansicht";
-App::$strings["Month View"] = "Monatsansicht";
-App::$strings["Events Tools"] = "Kalenderwerkzeuge";
-App::$strings["Export Calendar"] = "Kalender exportieren";
-App::$strings["Import Calendar"] = "Kalender importieren";
-App::$strings["Overview"] = "Ãœbersicht";
-App::$strings["Chat Members"] = "Chatmitglieder";
-App::$strings["Bookmarked Chatrooms"] = "Gespeicherte Chatrooms";
-App::$strings["Suggested Chatrooms"] = "Chatraum-Vorschläge";
-App::$strings["photo/image"] = "Foto/Bild";
-App::$strings["Click to show more"] = "Klick, um mehr anzuzeigen";
-App::$strings["Rating Tools"] = "Bewertungswerkzeuge";
-App::$strings["Rate Me"] = "Bewerte mich";
-App::$strings["View Ratings"] = "Bewertungen ansehen";
-App::$strings["Forums"] = "Foren";
-App::$strings["Tasks"] = "Aufgaben";
-App::$strings["Documentation"] = "Dokumentation";
-App::$strings["Project/Site Information"] = "Informationen über das Projekt und diesen Hub";
-App::$strings["For Members"] = "Für Mitglieder";
-App::$strings["For Administrators"] = "Für Administratoren";
-App::$strings["For Developers"] = "Für Entwickler";
-App::$strings["Accounts"] = "Konten";
-App::$strings["Member registrations waiting for confirmation"] = "Nutzer-Anmeldungen, die auf Bestätigung warten";
-App::$strings["Inspect queue"] = "Warteschlange kontrollieren";
-App::$strings["DB updates"] = "DB-Aktualisierungen";
-App::$strings["Admin"] = "Administration";
-App::$strings["Plugin Features"] = "Plug-In Funktionen";
-App::$strings["Tags"] = "Schlagwörter";
-App::$strings["Keywords"] = "Schlüsselwörter";
-App::$strings["have"] = "habe";
-App::$strings["has"] = "hat";
-App::$strings["want"] = "will";
-App::$strings["wants"] = "will";
-App::$strings["likes"] = "gefällt";
-App::$strings["dislikes"] = "missfällt";
App::$strings["Delete this item?"] = "Dieses Element löschen?";
App::$strings["[-] show less"] = "[-] Weniger anzeigen";
App::$strings["[+] expand"] = "[+] aufklappen";
App::$strings["[-] collapse"] = "[-] einklappen";
App::$strings["Password too short"] = "Kennwort zu kurz";
App::$strings["Passwords do not match"] = "Kennwörter stimmen nicht überein";
+App::$strings["everybody"] = "alle";
App::$strings["Secret Passphrase"] = "geheime Passphrase";
App::$strings["Passphrase hint"] = "Hinweis zur Passphrase";
App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Achtung: Berechtigungen wurden verändert, aber noch nicht gespeichert.";
@@ -2052,18 +2164,7 @@ App::$strings["about a year"] = "ungefähr ein Jahr";
App::$strings["%d years"] = "%d Jahre";
App::$strings[" "] = " ";
App::$strings["timeago.numbers"] = "timeago.numbers";
-App::$strings["January"] = "Januar";
-App::$strings["February"] = "Februar";
-App::$strings["March"] = "März";
-App::$strings["April"] = "April";
App::$strings["__ctx:long__ May"] = "Mai";
-App::$strings["June"] = "Juni";
-App::$strings["July"] = "Juli";
-App::$strings["August"] = "August";
-App::$strings["September"] = "September";
-App::$strings["October"] = "Oktober";
-App::$strings["November"] = "November";
-App::$strings["December"] = "Dezember";
App::$strings["Jan"] = "Jan";
App::$strings["Feb"] = "Feb";
App::$strings["Mar"] = "Mär";
@@ -2076,13 +2177,6 @@ App::$strings["Sep"] = "Sep";
App::$strings["Oct"] = "Okt";
App::$strings["Nov"] = "Nov";
App::$strings["Dec"] = "Dez";
-App::$strings["Sunday"] = "Sonntag";
-App::$strings["Monday"] = "Montag";
-App::$strings["Tuesday"] = "Dienstag";
-App::$strings["Wednesday"] = "Mittwoch";
-App::$strings["Thursday"] = "Donnerstag";
-App::$strings["Friday"] = "Freitag";
-App::$strings["Saturday"] = "Samstag";
App::$strings["Sun"] = "So";
App::$strings["Mon"] = "Mo";
App::$strings["Tue"] = "Di";
@@ -2095,14 +2189,28 @@ App::$strings["__ctx:calendar__ month"] = "Monat";
App::$strings["__ctx:calendar__ week"] = "Woche";
App::$strings["__ctx:calendar__ day"] = "Tag";
App::$strings["__ctx:calendar__ All day"] = "Ganztägig";
-App::$strings["No recipient provided."] = "Kein Empfänger angegeben";
-App::$strings["[no subject]"] = "[no subject]";
-App::$strings["Unable to determine sender."] = "Kann Absender nicht bestimmen.";
-App::$strings["Stored post could not be verified."] = "Gespeicherter Beitrag konnten nicht überprüft werden.";
-App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen.";
-App::$strings["Channel clone failed. Import failed."] = "Klonen des Kanals fehlgeschlagen. Import fehlgeschlagen.";
-App::$strings["Embedded content"] = "Eingebetteter Inhalt";
-App::$strings["Embedding disabled"] = "Einbetten ausgeschaltet";
+App::$strings["view full size"] = "In Vollbildansicht anschauen";
+App::$strings["No Subject"] = "Kein Betreff";
+App::$strings["Friendica"] = "Friendica";
+App::$strings["OStatus"] = "OStatus";
+App::$strings["GNU-Social"] = "GNU-Social";
+App::$strings["RSS/Atom"] = "RSS/Atom";
+App::$strings["Diaspora"] = "Diaspora";
+App::$strings["Facebook"] = "Facebook";
+App::$strings["Zot"] = "Zot!";
+App::$strings["LinkedIn"] = "LinkedIn";
+App::$strings["XMPP/IM"] = "XMPP/IM";
+App::$strings["MySpace"] = "MySpace";
+App::$strings["Image exceeds website size limit of %lu bytes"] = "Bild überschreitet das Webseitenlimit von %lu Bytes";
+App::$strings["Image file is empty."] = "Bilddatei ist leer.";
+App::$strings["Photo storage failed."] = "Fotospeicherung fehlgeschlagen.";
+App::$strings["a new photo"] = "ein neues Foto";
+App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s hat %2\$s auf %3\$s veröffentlicht";
+App::$strings["Upload New Photos"] = "Neue Fotos hochladen";
+App::$strings["Invalid data packet"] = "Ungültiges Datenpaket";
+App::$strings["Unable to verify channel signature"] = "Konnte die Signatur des Kanals nicht verifizieren";
+App::$strings["Unable to verify site signature for %s"] = "Kann die Signatur der Seite von %s nicht verifizieren";
+App::$strings["invalid target signature"] = "Ungültige Signatur des Ziels";
App::$strings["New Page"] = "Neue Seite";
App::$strings["Title"] = "Titel";
App::$strings["Can view my normal stream and posts"] = "Kann meine normalen Beiträge sehen";
@@ -2140,104 +2248,13 @@ App::$strings["Special Purpose"] = "Für besondere Zwecke";
App::$strings["Special - Celebrity/Soapbox"] = "Speziell - Mitteilungs-Kanal (keine Kommentare)";
App::$strings["Special - Group Repository"] = "Speziell - Gruppenarchiv";
App::$strings["Custom/Expert Mode"] = "Benutzerdefiniert/Expertenmodus";
-App::$strings["prev"] = "vorherige";
-App::$strings["first"] = "erste";
-App::$strings["last"] = "letzte";
-App::$strings["next"] = "nächste";
-App::$strings["older"] = "älter";
-App::$strings["newer"] = "neuer";
-App::$strings["No connections"] = "Keine Verbindungen";
-App::$strings["View all %s connections"] = "Alle Verbindungen von %s anzeigen";
-App::$strings["poke"] = "anstupsen";
-App::$strings["ping"] = "anpingen";
-App::$strings["pinged"] = "pingte";
-App::$strings["prod"] = "knuffen";
-App::$strings["prodded"] = "knuffte";
-App::$strings["slap"] = "ohrfeigen";
-App::$strings["slapped"] = "ohrfeigte";
-App::$strings["finger"] = "befummeln";
-App::$strings["fingered"] = "befummelte";
-App::$strings["rebuff"] = "eine Abfuhr erteilen";
-App::$strings["rebuffed"] = "zurückgewiesen";
-App::$strings["happy"] = "glücklich";
-App::$strings["sad"] = "traurig";
-App::$strings["mellow"] = "sanft";
-App::$strings["tired"] = "müde";
-App::$strings["perky"] = "frech";
-App::$strings["angry"] = "sauer";
-App::$strings["stupefied"] = "verblüfft";
-App::$strings["puzzled"] = "verwirrt";
-App::$strings["interested"] = "interessiert";
-App::$strings["bitter"] = "verbittert";
-App::$strings["cheerful"] = "fröhlich";
-App::$strings["alive"] = "lebendig";
-App::$strings["annoyed"] = "verärgert";
-App::$strings["anxious"] = "unruhig";
-App::$strings["cranky"] = "schrullig";
-App::$strings["disturbed"] = "verstört";
-App::$strings["frustrated"] = "frustriert";
-App::$strings["depressed"] = "deprimiert";
-App::$strings["motivated"] = "motiviert";
-App::$strings["relaxed"] = "entspannt";
-App::$strings["surprised"] = "überrascht";
-App::$strings["May"] = "Mai";
-App::$strings["Unknown Attachment"] = "Unbekannter Anhang";
-App::$strings["unknown"] = "unbekannt";
-App::$strings["remove category"] = "Kategorie entfernen";
-App::$strings["remove from file"] = "aus der Datei entfernen";
-App::$strings["Click to open/close"] = "Klicke zum Öffnen/Schließen";
-App::$strings["default"] = "Standard";
-App::$strings["Page layout"] = "Seiten-Layout";
-App::$strings["You can create your own with the layouts tool"] = "Mit dem Gestaltungswerkzeug kannst Du Deine eigenen Layouts erstellen";
-App::$strings["Page content type"] = "Art des Seiteninhalts";
-App::$strings["Select an alternate language"] = "Wähle eine alternative Sprache";
-App::$strings["activity"] = "Aktivität";
-App::$strings["Design Tools"] = "Gestaltungswerkzeuge";
-App::$strings["Pages"] = "Seiten";
-App::$strings["Logout"] = "Abmelden";
-App::$strings["End this session"] = "Beende diese Sitzung";
-App::$strings["Home"] = "Home";
-App::$strings["Your posts and conversations"] = "Deine Beiträge und Unterhaltungen";
-App::$strings["Your profile page"] = "Deine Profilseite";
-App::$strings["Manage/Edit profiles"] = "Profile verwalten";
-App::$strings["Edit your profile"] = "Profil bearbeiten";
-App::$strings["Your photos"] = "Deine Bilder";
-App::$strings["Your files"] = "Deine Dateien";
-App::$strings["Your chatrooms"] = "Deine Chaträume";
-App::$strings["Your bookmarks"] = "Deine Lesezeichen";
-App::$strings["Your webpages"] = "Deine Webseiten";
-App::$strings["Sign in"] = "Anmelden";
-App::$strings["%s - click to logout"] = "%s - Klick zum Abmelden";
-App::$strings["Remote authentication"] = "Ãœber Konto auf anderem Server einloggen";
-App::$strings["Click to authenticate to your home hub"] = "Klicke, um Dich über Deinen Heimat-Server zu authentifizieren";
-App::$strings["Home Page"] = "Homepage";
-App::$strings["Create an account"] = "Erzeuge ein Konto";
-App::$strings["Help and documentation"] = "Hilfe und Dokumentation";
-App::$strings["Applications, utilities, links, games"] = "Anwendungen (Apps), Zubehör, Links, Spiele";
-App::$strings["Search site @name, #tag, ?docs, content"] = "Hub durchsuchen: @Name. #Schlagwort, ?Dokumentation, Inhalt";
-App::$strings["Channel Directory"] = "Kanal-Verzeichnis";
-App::$strings["Your grid"] = "Dein Grid";
-App::$strings["Mark all grid notifications seen"] = "Alle Grid-Benachrichtigungen als angesehen markieren";
-App::$strings["Channel home"] = "Mein Kanal";
-App::$strings["Mark all channel notifications seen"] = "Markiere alle Kanal-Benachrichtigungen als angesehen";
-App::$strings["Notices"] = "Benachrichtigungen";
-App::$strings["Notifications"] = "Benachrichtigungen";
-App::$strings["See all notifications"] = "Alle Benachrichtigungen ansehen";
-App::$strings["Private mail"] = "Persönliche Mail";
-App::$strings["See all private messages"] = "Alle persönlichen Nachrichten ansehen";
-App::$strings["Mark all private messages seen"] = "Markiere alle persönlichen Nachrichten als gesehen";
-App::$strings["Event Calendar"] = "Terminkalender";
-App::$strings["See all events"] = "Alle Termine ansehen";
-App::$strings["Mark all events seen"] = "Markiere alle Termine als gesehen";
-App::$strings["Manage Your Channels"] = "Verwalte Deine Kanäle";
-App::$strings["Account/Channel Settings"] = "Konto-/Kanal-Einstellungen";
-App::$strings["Site Setup and Configuration"] = "Seiten-Einrichtung und -Konfiguration";
-App::$strings["@name, #tag, ?doc, content"] = "@Name, #Schlagwort, ?Dokumentation, Inhalt";
-App::$strings["Please wait..."] = "Bitte warten...";
-App::$strings["Invalid data packet"] = "Ungültiges Datenpaket";
-App::$strings["Unable to verify channel signature"] = "Konnte die Signatur des Kanals nicht verifizieren";
-App::$strings["Unable to verify site signature for %s"] = "Kann die Signatur der Seite von %s nicht verifizieren";
-App::$strings["invalid target signature"] = "Ungültige Signatur des Ziels";
+App::$strings[" and "] = "und";
+App::$strings["public profile"] = "öffentliches Profil";
+App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s hat %2\$s auf &ldquo;%3\$s&rdquo; geändert";
+App::$strings["Visit %1\$s's %2\$s"] = "Besuche %1\$s's %2\$s";
+App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s hat ein aktualisiertes %2\$s, %3\$s wurde verändert.";
+App::$strings["Attachments:"] = "Anhänge:";
+App::$strings["\$Projectname event notification:"] = "\$Projectname-Terminbenachrichtigung:";
App::$strings["Focus (Hubzilla default)"] = "Focus (Voreinstellung für Hubzilla)";
App::$strings["Theme settings"] = "Theme-Einstellungen";
App::$strings["Select scheme"] = "Schema wählen";
diff --git a/view/de/htconfig.tpl b/view/de/htconfig.tpl
index adbb7ea92..2b71610b6 100644
--- a/view/de/htconfig.tpl
+++ b/view/de/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/en-au/htconfig.tpl b/view/en-au/htconfig.tpl
index 4dcc3c7c9..896b35bb2 100644
--- a/view/en-au/htconfig.tpl
+++ b/view/en-au/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/en-gb/htconfig.tpl b/view/en-gb/htconfig.tpl
index ead987fcc..04eb404fc 100644
--- a/view/en-gb/htconfig.tpl
+++ b/view/en-gb/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/en/htconfig.tpl b/view/en/htconfig.tpl
index 4aa6132a6..47daf3f99 100644
--- a/view/en/htconfig.tpl
+++ b/view/en/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name? DO NOT ADD A TRAILING SLASH!
diff --git a/view/eo/hmessages.po b/view/eo/hmessages.po
deleted file mode 100644
index 7fd842bb6..000000000
--- a/view/eo/hmessages.po
+++ /dev/null
@@ -1,7714 +0,0 @@
-# FRIENDICA Distributed Social Network
-# Copyright (C) 2010, 2011 the Friendica Project
-# This file is distributed under the same license as the Friendica package.
-#
-# Translators:
-# Diego Souza <diegosouza.br@gmail.com>, 2012.
-# Martin Schmitt <mas@scsy.de>, 2012.
-msgid ""
-msgstr ""
-"Project-Id-Version: friendica\n"
-"Report-Msgid-Bugs-To: http://bugs.friendica.com/\n"
-"POT-Creation-Date: 2012-06-30 10:00-0700\n"
-"PO-Revision-Date: 2012-07-01 16:55+0000\n"
-"Last-Translator: Martin Schmitt <mas@scsy.de>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/friendica/language/eo/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-
-#: ../../mod/oexchange.php:25
-msgid "Post successful."
-msgstr "Sukcese afiÅita."
-
-#: ../../mod/update_notes.php:41 ../../mod/update_community.php:18
-#: ../../mod/update_network.php:22 ../../mod/update_profile.php:41
-msgid "[Embedded content - reload page to view]"
-msgstr "[Enigita enhavo - reÅargu paÄon por spekti Äin]"
-
-#: ../../mod/crepair.php:102
-msgid "Contact settings applied."
-msgstr "Kontaktagordoj estas konservita."
-
-#: ../../mod/crepair.php:104
-msgid "Contact update failed."
-msgstr "Äœisdatigo de kontakto malsukcesis."
-
-#: ../../mod/crepair.php:115 ../../mod/wall_attach.php:44
-#: ../../mod/fsuggest.php:78 ../../mod/events.php:140 ../../mod/api.php:26
-#: ../../mod/api.php:31 ../../mod/photos.php:135 ../../mod/photos.php:951
-#: ../../mod/editpost.php:10 ../../mod/install.php:151
-#: ../../mod/notifications.php:66 ../../mod/contacts.php:145
-#: ../../mod/settings.php:106 ../../mod/settings.php:537
-#: ../../mod/settings.php:542 ../../mod/manage.php:86 ../../mod/network.php:6
-#: ../../mod/notes.php:20 ../../mod/wallmessage.php:9
-#: ../../mod/wallmessage.php:33 ../../mod/wallmessage.php:79
-#: ../../mod/wallmessage.php:103 ../../mod/attach.php:33
-#: ../../mod/group.php:19 ../../mod/viewconnections.php:22
-#: ../../mod/register.php:38 ../../mod/regmod.php:116 ../../mod/item.php:124
-#: ../../mod/item.php:140 ../../mod/profile_photo.php:19
-#: ../../mod/profile_photo.php:141 ../../mod/profile_photo.php:152
-#: ../../mod/profile_photo.php:165 ../../mod/message.php:45
-#: ../../mod/message.php:97 ../../mod/allfriends.php:9
-#: ../../mod/nogroup.php:25 ../../mod/wall_upload.php:53
-#: ../../mod/follow.php:9 ../../mod/display.php:138 ../../mod/profiles.php:7
-#: ../../mod/profiles.php:400 ../../mod/delegate.php:6
-#: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81
-#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:508
-#: ../../addon/facebook/facebook.php:514 ../../addon/dav/layout.fnk.php:353
-#: ../../include/items.php:3455 ../../index.php:309
-msgid "Permission denied."
-msgstr "Malpermesita."
-
-#: ../../mod/crepair.php:129 ../../mod/fsuggest.php:20
-#: ../../mod/fsuggest.php:92 ../../mod/dfrn_confirm.php:118
-msgid "Contact not found."
-msgstr "Kontakto ne trovita."
-
-#: ../../mod/crepair.php:135
-msgid "Repair Contact Settings"
-msgstr "Ripari kontaktagordoj."
-
-#: ../../mod/crepair.php:137
-msgid ""
-"<strong>WARNING: This is highly advanced</strong> and if you enter incorrect"
-" information your communications with this contact may stop working."
-msgstr "<strong>AVERTO: Tio estas tre altnivela</strong> kaj se vi entajpus malÄustan informojn, komunikado kun la kontakto eble ne plu funkcios."
-
-#: ../../mod/crepair.php:138
-msgid ""
-"Please use your browser 'Back' button <strong>now</strong> if you are "
-"uncertain what to do on this page."
-msgstr "Bonvolu klaki 'malantaŭen' en via retesplorilo <strong>nun</strong> se vi ne scias kion faru ĉi tie."
-
-#: ../../mod/crepair.php:144
-msgid "Return to contact editor"
-msgstr "Reen al kontakta redaktilo"
-
-#: ../../mod/crepair.php:148 ../../mod/settings.php:557
-#: ../../mod/settings.php:583 ../../mod/admin.php:659 ../../mod/admin.php:668
-msgid "Name"
-msgstr "Nomo"
-
-#: ../../mod/crepair.php:149
-msgid "Account Nickname"
-msgstr "KaÅnomo de la konto"
-
-#: ../../mod/crepair.php:150
-msgid "@Tagname - overrides Name/Nickname"
-msgstr "@Marknomo - Transpasas nomon/kaÅnomon"
-
-#: ../../mod/crepair.php:151
-msgid "Account URL"
-msgstr "Adreso de la konto"
-
-#: ../../mod/crepair.php:152
-msgid "Friend Request URL"
-msgstr "Kontaktpeta adreso"
-
-#: ../../mod/crepair.php:153
-msgid "Friend Confirm URL"
-msgstr "Kontaktkonfirma adreso"
-
-#: ../../mod/crepair.php:154
-msgid "Notification Endpoint URL"
-msgstr "Finpunkta adreso por atentigoj"
-
-#: ../../mod/crepair.php:155
-msgid "Poll/Feed URL"
-msgstr "Adreso de fluo"
-
-#: ../../mod/crepair.php:156
-msgid "New photo from this URL"
-msgstr "Nova bildo el tiu adreso"
-
-#: ../../mod/crepair.php:166 ../../mod/fsuggest.php:107
-#: ../../mod/events.php:436 ../../mod/photos.php:986 ../../mod/photos.php:1057
-#: ../../mod/photos.php:1303 ../../mod/photos.php:1343
-#: ../../mod/photos.php:1383 ../../mod/photos.php:1414
-#: ../../mod/install.php:246 ../../mod/install.php:284
-#: ../../mod/localtime.php:45 ../../mod/contacts.php:343
-#: ../../mod/settings.php:555 ../../mod/settings.php:709
-#: ../../mod/settings.php:770 ../../mod/settings.php:971
-#: ../../mod/group.php:85 ../../mod/message.php:216 ../../mod/message.php:410
-#: ../../mod/admin.php:420 ../../mod/admin.php:656 ../../mod/admin.php:792
-#: ../../mod/admin.php:991 ../../mod/admin.php:1078 ../../mod/profiles.php:569
-#: ../../mod/invite.php:119 ../../addon/fromgplus/fromgplus.php:40
-#: ../../addon/facebook/facebook.php:617
-#: ../../addon/snautofollow/snautofollow.php:64
-#: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93
-#: ../../addon/nsfw/nsfw.php:57 ../../addon/page/page.php:208
-#: ../../addon/planets/planets.php:158
-#: ../../addon/uhremotestorage/uhremotestorage.php:89
-#: ../../addon/randplace/randplace.php:177 ../../addon/dwpost/dwpost.php:93
-#: ../../addon/drpost/drpost.php:110 ../../addon/startpage/startpage.php:92
-#: ../../addon/geonames/geonames.php:187 ../../addon/oembed.old/oembed.php:41
-#: ../../addon/impressum/impressum.php:82
-#: ../../addon/notimeline/notimeline.php:64 ../../addon/blockem/blockem.php:57
-#: ../../addon/qcomment/qcomment.php:61
-#: ../../addon/openstreetmap/openstreetmap.php:70
-#: ../../addon/libertree/libertree.php:90 ../../addon/mathjax/mathjax.php:42
-#: ../../addon/editplain/editplain.php:84 ../../addon/blackout/blackout.php:98
-#: ../../addon/gravatar/gravatar.php:86
-#: ../../addon/pageheader/pageheader.php:55 ../../addon/ijpost/ijpost.php:93
-#: ../../addon/jappixmini/jappixmini.php:302
-#: ../../addon/statusnet/statusnet.php:278
-#: ../../addon/statusnet/statusnet.php:292
-#: ../../addon/statusnet/statusnet.php:318
-#: ../../addon/statusnet/statusnet.php:325
-#: ../../addon/statusnet/statusnet.php:353
-#: ../../addon/statusnet/statusnet.php:567 ../../addon/tumblr/tumblr.php:90
-#: ../../addon/numfriends/numfriends.php:85 ../../addon/gnot/gnot.php:88
-#: ../../addon/wppost/wppost.php:110 ../../addon/showmore/showmore.php:48
-#: ../../addon/piwik/piwik.php:89 ../../addon/twitter/twitter.php:180
-#: ../../addon/twitter/twitter.php:209 ../../addon/twitter/twitter.php:387
-#: ../../addon/irc/irc.php:55 ../../addon/blogger/blogger.php:102
-#: ../../addon/posterous/posterous.php:103
-#: ../../view/theme/cleanzero/config.php:80
-#: ../../view/theme/diabook/theme.php:757
-#: ../../view/theme/diabook/config.php:190
-#: ../../view/theme/quattro/config.php:52 ../../view/theme/dispy/config.php:70
-#: ../../include/conversation.php:580
-msgid "Submit"
-msgstr "Sendi"
-
-#: ../../mod/help.php:30
-msgid "Help:"
-msgstr "Helpo:"
-
-#: ../../mod/help.php:34 ../../addon/dav/layout.fnk.php:116
-#: ../../include/nav.php:86
-msgid "Help"
-msgstr "Helpo"
-
-#: ../../mod/help.php:38 ../../index.php:218
-msgid "Not Found"
-msgstr "Ne trovita"
-
-#: ../../mod/help.php:41 ../../index.php:221
-msgid "Page not found."
-msgstr "PaÄo ne trovita"
-
-#: ../../mod/wall_attach.php:58
-#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "Dosiero estas pli granda ol la limito de %d"
-
-#: ../../mod/wall_attach.php:99 ../../mod/wall_attach.php:110
-msgid "File upload failed."
-msgstr "AlÅutado malsukcesis."
-
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
-msgstr "Amikosugesto sendita."
-
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
-msgstr "Sugesti amikojn"
-
-#: ../../mod/fsuggest.php:99
-#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Sugesti amikon por %s"
-
-#: ../../mod/events.php:66
-msgid "Event title and start time are required."
-msgstr "Titolo kaj starttempo estas bezonataj por la okazo."
-
-#: ../../mod/events.php:260
-msgid "l, F j"
-msgstr "l, F j"
-
-#: ../../mod/events.php:282
-msgid "Edit event"
-msgstr "Redakti okazon"
-
-#: ../../mod/events.php:304 ../../include/text.php:1065
-msgid "link to source"
-msgstr "ligilo al fonto"
-
-#: ../../mod/events.php:328 ../../view/theme/diabook/theme.php:131
-#: ../../include/nav.php:52 ../../boot.php:1559
-msgid "Events"
-msgstr "Okazoj"
-
-#: ../../mod/events.php:329
-msgid "Create New Event"
-msgstr "Krei novan okazon"
-
-#: ../../mod/events.php:330 ../../addon/dav/layout.fnk.php:154
-msgid "Previous"
-msgstr "antaÅ­a"
-
-#: ../../mod/events.php:331 ../../mod/install.php:205
-#: ../../addon/dav/layout.fnk.php:157
-msgid "Next"
-msgstr "sekva"
-
-#: ../../mod/events.php:404
-msgid "hour:minute"
-msgstr "horo:minuto"
-
-#: ../../mod/events.php:414
-msgid "Event details"
-msgstr "Detaloj de okazo"
-
-#: ../../mod/events.php:415
-#, php-format
-msgid "Format is %s %s. Starting date and Title are required."
-msgstr "Format is %s %s. Titolo kaj starttempo estas bezonataj."
-
-#: ../../mod/events.php:417
-msgid "Event Starts:"
-msgstr "Okazo startas:"
-
-#: ../../mod/events.php:417 ../../mod/events.php:431
-msgid "Required"
-msgstr "Bezonata"
-
-#: ../../mod/events.php:420
-msgid "Finish date/time is not known or not relevant"
-msgstr "Fina dato/tempo ne estas konata aÅ­ ne bezonata"
-
-#: ../../mod/events.php:422
-msgid "Event Finishes:"
-msgstr "Okazo finas:"
-
-#: ../../mod/events.php:425
-msgid "Adjust for viewer timezone"
-msgstr "Agordi al horzono de la leganto"
-
-#: ../../mod/events.php:427
-msgid "Description:"
-msgstr "Priskribo"
-
-#: ../../mod/events.php:429 ../../include/event.php:40
-#: ../../include/bb2diaspora.php:357 ../../boot.php:1136
-msgid "Location:"
-msgstr "Loko:"
-
-#: ../../mod/events.php:431
-msgid "Title:"
-msgstr "Titolo:"
-
-#: ../../mod/events.php:433
-msgid "Share this event"
-msgstr "Kunhavigi la okazon"
-
-#: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94
-#: ../../mod/dfrn_request.php:845 ../../mod/settings.php:556
-#: ../../mod/settings.php:582 ../../addon/js_upload/js_upload.php:45
-msgid "Cancel"
-msgstr "Nuligi"
-
-#: ../../mod/tagrm.php:41
-msgid "Tag removed"
-msgstr "Marko forviÅita"
-
-#: ../../mod/tagrm.php:79
-msgid "Remove Item Tag"
-msgstr "ForviÅi markon"
-
-#: ../../mod/tagrm.php:81
-msgid "Select a tag to remove: "
-msgstr "Elektu forviÅontan markon:"
-
-#: ../../mod/tagrm.php:93 ../../mod/delegate.php:130
-msgid "Remove"
-msgstr "ForviÅi"
-
-#: ../../mod/dfrn_poll.php:94 ../../mod/dfrn_poll.php:522
-#, php-format
-msgid "%s welcomes %s"
-msgstr "%s salutas %s"
-
-#: ../../mod/api.php:76 ../../mod/api.php:102
-msgid "Authorize application connection"
-msgstr "Rajtigi programkonekton"
-
-#: ../../mod/api.php:77
-msgid "Return to your app and insert this Securty Code:"
-msgstr "Reiru al via programo kaj entajpu la securecan kodon:"
-
-#: ../../mod/api.php:89
-msgid "Please login to continue."
-msgstr "Bonvolu ensaluti por pluigi."
-
-#: ../../mod/api.php:104
-msgid ""
-"Do you want to authorize this application to access your posts and contacts,"
-" and/or create new posts for you?"
-msgstr "Ĉu rajtigi ĉi tiun programon por atingi viajn afiÅojn kaj kontaktojn kaj/aÅ­ krei novajn afiÅojn?"
-
-#: ../../mod/api.php:105 ../../mod/dfrn_request.php:833
-#: ../../mod/settings.php:887 ../../mod/settings.php:893
-#: ../../mod/settings.php:901 ../../mod/settings.php:905
-#: ../../mod/settings.php:910 ../../mod/settings.php:916
-#: ../../mod/settings.php:922 ../../mod/settings.php:928
-#: ../../mod/settings.php:958 ../../mod/settings.php:959
-#: ../../mod/settings.php:960 ../../mod/settings.php:961
-#: ../../mod/settings.php:962 ../../mod/register.php:234
-#: ../../mod/profiles.php:546
-msgid "Yes"
-msgstr "Jes"
-
-#: ../../mod/api.php:106 ../../mod/dfrn_request.php:834
-#: ../../mod/settings.php:887 ../../mod/settings.php:893
-#: ../../mod/settings.php:901 ../../mod/settings.php:905
-#: ../../mod/settings.php:910 ../../mod/settings.php:916
-#: ../../mod/settings.php:922 ../../mod/settings.php:928
-#: ../../mod/settings.php:958 ../../mod/settings.php:959
-#: ../../mod/settings.php:960 ../../mod/settings.php:961
-#: ../../mod/settings.php:962 ../../mod/register.php:235
-#: ../../mod/profiles.php:547
-msgid "No"
-msgstr "Ne"
-
-#: ../../mod/photos.php:46 ../../boot.php:1553
-msgid "Photo Albums"
-msgstr "Bildalbumoj"
-
-#: ../../mod/photos.php:54 ../../mod/photos.php:156 ../../mod/photos.php:965
-#: ../../mod/photos.php:1049 ../../mod/photos.php:1064
-#: ../../mod/photos.php:1492 ../../mod/photos.php:1504
-#: ../../addon/communityhome/communityhome.php:110
-#: ../../view/theme/diabook/theme.php:598
-msgid "Contact Photos"
-msgstr "Kontaktbildoj"
-
-#: ../../mod/photos.php:61 ../../mod/photos.php:1074 ../../mod/photos.php:1542
-msgid "Upload New Photos"
-msgstr "AlÅuti novajn bildojn"
-
-#: ../../mod/photos.php:72 ../../mod/settings.php:21
-msgid "everybody"
-msgstr "ĉiuj"
-
-#: ../../mod/photos.php:145
-msgid "Contact information unavailable"
-msgstr "Kontaktoj informoj ne disponeblas"
-
-#: ../../mod/photos.php:156 ../../mod/photos.php:660 ../../mod/photos.php:1049
-#: ../../mod/photos.php:1064 ../../mod/profile_photo.php:60
-#: ../../mod/profile_photo.php:67 ../../mod/profile_photo.php:74
-#: ../../mod/profile_photo.php:176 ../../mod/profile_photo.php:254
-#: ../../mod/profile_photo.php:263
-#: ../../addon/communityhome/communityhome.php:111
-#: ../../view/theme/diabook/theme.php:599 ../../include/user.php:304
-#: ../../include/user.php:311 ../../include/user.php:318
-msgid "Profile Photos"
-msgstr "Profilbildoj"
-
-#: ../../mod/photos.php:166
-msgid "Album not found."
-msgstr "Albumo ne trovita."
-
-#: ../../mod/photos.php:184 ../../mod/photos.php:1058
-msgid "Delete Album"
-msgstr "ForviÅi albumon"
-
-#: ../../mod/photos.php:247 ../../mod/photos.php:1304
-msgid "Delete Photo"
-msgstr "ForviÅi bildon"
-
-#: ../../mod/photos.php:591
-msgid "was tagged in a"
-msgstr "estas markita en"
-
-#: ../../mod/photos.php:591 ../../mod/like.php:144 ../../mod/tagger.php:70
-#: ../../addon/communityhome/communityhome.php:163
-#: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1317
-#: ../../include/diaspora.php:1710 ../../include/conversation.php:53
-#: ../../include/conversation.php:126
-msgid "photo"
-msgstr "bildo"
-
-#: ../../mod/photos.php:591
-msgid "by"
-msgstr "de"
-
-#: ../../mod/photos.php:696 ../../addon/js_upload/js_upload.php:315
-msgid "Image exceeds size limit of "
-msgstr "Bildo estas pli granda ol la limito de"
-
-#: ../../mod/photos.php:704
-msgid "Image file is empty."
-msgstr "Bilddosiero estas malplena."
-
-#: ../../mod/photos.php:736 ../../mod/profile_photo.php:126
-#: ../../mod/wall_upload.php:99
-msgid "Unable to process image."
-msgstr "Ne eblas procedi la bildon."
-
-#: ../../mod/photos.php:757 ../../mod/profile_photo.php:259
-#: ../../mod/wall_upload.php:118
-msgid "Image upload failed."
-msgstr "AlÅuto de bildo malsukcesis."
-
-#: ../../mod/photos.php:843 ../../mod/community.php:16
-#: ../../mod/dfrn_request.php:759 ../../mod/viewconnections.php:17
-#: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:29
-msgid "Public access denied."
-msgstr "Publika atingo ne permesita."
-
-#: ../../mod/photos.php:853
-msgid "No photos selected"
-msgstr "Neniu bildoj elektita"
-
-#: ../../mod/photos.php:932
-msgid "Access to this item is restricted."
-msgstr "Atingo al tio elemento estas limigita."
-
-#: ../../mod/photos.php:996
-#, php-format
-msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."
-msgstr "Vi uzas %1$.2f MB de %2$.2f MB bildkonservejo."
-
-#: ../../mod/photos.php:999
-#, php-format
-msgid "You have used %1$.2f Mbytes of photo storage."
-msgstr "Vi uzas %1$.2f MB de bildkonservejo."
-
-#: ../../mod/photos.php:1005
-msgid "Upload Photos"
-msgstr "AlÅuti bildojn"
-
-#: ../../mod/photos.php:1009 ../../mod/photos.php:1053
-msgid "New album name: "
-msgstr "Nomo por nova albumo:"
-
-#: ../../mod/photos.php:1010
-msgid "or existing album name: "
-msgstr "aÅ­ nomo de estanta albumo:"
-
-#: ../../mod/photos.php:1011
-msgid "Do not show a status post for this upload"
-msgstr "Ne kreu statan afiÅon por tio alÅuto."
-
-#: ../../mod/photos.php:1013 ../../mod/photos.php:1299
-msgid "Permissions"
-msgstr "Permesoj"
-
-#: ../../mod/photos.php:1068
-msgid "Edit Album"
-msgstr "Redakti albumon"
-
-#: ../../mod/photos.php:1092 ../../mod/photos.php:1525
-msgid "View Photo"
-msgstr "Vidi bildon"
-
-#: ../../mod/photos.php:1127
-msgid "Permission denied. Access to this item may be restricted."
-msgstr "Malpermesita. Atingo al tio elemento eble estas limigita."
-
-#: ../../mod/photos.php:1129
-msgid "Photo not available"
-msgstr "La bildo ne disponeblas"
-
-#: ../../mod/photos.php:1179
-msgid "View photo"
-msgstr "Vidi bildon"
-
-#: ../../mod/photos.php:1179
-msgid "Edit photo"
-msgstr "Redakti bildon"
-
-#: ../../mod/photos.php:1180
-msgid "Use as profile photo"
-msgstr "Uzi kiel profilbildo"
-
-#: ../../mod/photos.php:1186 ../../include/conversation.php:490
-msgid "Private Message"
-msgstr "Privata mesaÄo"
-
-#: ../../mod/photos.php:1208
-msgid "View Full Size"
-msgstr "Vidi plengrande "
-
-#: ../../mod/photos.php:1276
-msgid "Tags: "
-msgstr "Markoj:"
-
-#: ../../mod/photos.php:1279
-msgid "[Remove any tag]"
-msgstr "[ForviÅi iun markon]"
-
-#: ../../mod/photos.php:1289
-msgid "Rotate CW (right)"
-msgstr "Turni horloÄdirekte (dekstren)"
-
-#: ../../mod/photos.php:1290
-msgid "Rotate CCW (left)"
-msgstr "Turni kontraÅ­horloÄdirekte (maldekstren)"
-
-#: ../../mod/photos.php:1292
-msgid "New album name"
-msgstr "Nova nomo de albumo"
-
-#: ../../mod/photos.php:1295
-msgid "Caption"
-msgstr "Apudskribo"
-
-#: ../../mod/photos.php:1297
-msgid "Add a Tag"
-msgstr "Aldoni markon"
-
-#: ../../mod/photos.php:1301
-msgid ""
-"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-msgstr "Ekzemple: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-
-#: ../../mod/photos.php:1321 ../../include/conversation.php:554
-msgid "I like this (toggle)"
-msgstr "Mi Åatas tion (Åalti)"
-
-#: ../../mod/photos.php:1322 ../../include/conversation.php:555
-msgid "I don't like this (toggle)"
-msgstr "Mi malÅatas tion(Åalti)"
-
-#: ../../mod/photos.php:1323 ../../include/conversation.php:993
-msgid "Share"
-msgstr "Kunhavigi"
-
-#: ../../mod/photos.php:1324 ../../mod/editpost.php:104
-#: ../../mod/wallmessage.php:145 ../../mod/message.php:215
-#: ../../mod/message.php:411 ../../include/conversation.php:371
-#: ../../include/conversation.php:731 ../../include/conversation.php:1012
-msgid "Please wait"
-msgstr "Bonvolu atendi"
-
-#: ../../mod/photos.php:1340 ../../mod/photos.php:1380
-#: ../../mod/photos.php:1411 ../../include/conversation.php:577
-msgid "This is you"
-msgstr "Tiu estas vi"
-
-#: ../../mod/photos.php:1342 ../../mod/photos.php:1382
-#: ../../mod/photos.php:1413 ../../include/conversation.php:579
-#: ../../boot.php:528
-msgid "Comment"
-msgstr "Komenti"
-
-#: ../../mod/photos.php:1344 ../../mod/editpost.php:125
-#: ../../include/conversation.php:589 ../../include/conversation.php:1030
-msgid "Preview"
-msgstr "AntaÅ­rigardi"
-
-#: ../../mod/photos.php:1441 ../../mod/settings.php:618
-#: ../../mod/settings.php:707 ../../mod/group.php:168 ../../mod/admin.php:663
-#: ../../include/conversation.php:328 ../../include/conversation.php:609
-msgid "Delete"
-msgstr "ForviÅi"
-
-#: ../../mod/photos.php:1531
-msgid "View Album"
-msgstr "Vidi albumon"
-
-#: ../../mod/photos.php:1540
-msgid "Recent Photos"
-msgstr "Ì‚Ä´usaj bildoj"
-
-#: ../../mod/community.php:21
-msgid "Not available."
-msgstr "Ne disponebla."
-
-#: ../../mod/community.php:30 ../../view/theme/diabook/theme.php:133
-#: ../../include/nav.php:101
-msgid "Community"
-msgstr "Komunumo"
-
-#: ../../mod/community.php:61 ../../mod/search.php:144
-msgid "No results."
-msgstr "Nenion trovita."
-
-#: ../../mod/friendica.php:55
-msgid "This is Friendica, version"
-msgstr "Tio estas Friendica en la versio"
-
-#: ../../mod/friendica.php:56
-msgid "running at web location"
-msgstr "instalita ĉe la adreso"
-
-#: ../../mod/friendica.php:58
-msgid ""
-"Please visit <a href=\"http://friendica.com\">Friendica.com</a> to learn "
-"more about the Friendica project."
-msgstr "Bonvolu iri al <a href=\"http://friendica.com\">Friendica.com</a> por lerni pli pri la projekto Friendica"
-
-#: ../../mod/friendica.php:60
-msgid "Bug reports and issues: please visit"
-msgstr "Cimraportoj kaj atendindaĵo: bonvolu iri al"
-
-#: ../../mod/friendica.php:61
-msgid ""
-"Suggestions, praise, donations, etc. - please email \"Info\" at Friendica - "
-"dot com"
-msgstr "Sugestoj, laÅ­doj, donacoj ktp - bonvolu sendi mesÄon al \"Info\" ĉe Friendica - punkto com"
-
-#: ../../mod/friendica.php:75
-msgid "Installed plugins/addons/apps:"
-msgstr "Instalitaj kromprogramoj/programoj:"
-
-#: ../../mod/friendica.php:88
-msgid "No installed plugins/addons/apps"
-msgstr "Neniom da instalitaj aldonaĵoj/programoj"
-
-#: ../../mod/editpost.php:17 ../../mod/editpost.php:27
-msgid "Item not found"
-msgstr "Elemento ne trovita"
-
-#: ../../mod/editpost.php:36
-msgid "Edit post"
-msgstr "Redakti afiÅon"
-
-#: ../../mod/editpost.php:80 ../../include/conversation.php:979
-msgid "Post to Email"
-msgstr "Sendi per retpoÅto"
-
-#: ../../mod/editpost.php:95 ../../mod/settings.php:617
-#: ../../include/conversation.php:596
-msgid "Edit"
-msgstr "Redakti"
-
-#: ../../mod/editpost.php:96 ../../mod/wallmessage.php:143
-#: ../../mod/message.php:213 ../../mod/message.php:408
-#: ../../include/conversation.php:994
-msgid "Upload photo"
-msgstr "AlÅuti bildon"
-
-#: ../../mod/editpost.php:97 ../../include/conversation.php:996
-msgid "Attach file"
-msgstr "Kunligi dosieron"
-
-#: ../../mod/editpost.php:98 ../../mod/wallmessage.php:144
-#: ../../mod/message.php:214 ../../mod/message.php:409
-#: ../../include/conversation.php:998
-msgid "Insert web link"
-msgstr "Enmeti retan adreson"
-
-#: ../../mod/editpost.php:99
-msgid "Insert YouTube video"
-msgstr "Enmeti videton ĉe YouTube"
-
-#: ../../mod/editpost.php:100
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Enmeti videton en formato Vorbis [.ogg]"
-
-#: ../../mod/editpost.php:101
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Enmeti sonon en formato Vorbis [.ogg]"
-
-#: ../../mod/editpost.php:102 ../../include/conversation.php:1004
-msgid "Set your location"
-msgstr "Agordi vian lokon"
-
-#: ../../mod/editpost.php:103 ../../include/conversation.php:1006
-msgid "Clear browser location"
-msgstr "ForviÅu retesplorilan lokon"
-
-#: ../../mod/editpost.php:105 ../../include/conversation.php:1013
-msgid "Permission settings"
-msgstr "Permesagordoj"
-
-#: ../../mod/editpost.php:113 ../../include/conversation.php:1022
-msgid "CC: email addresses"
-msgstr "CC: retpoÅtadresojn"
-
-#: ../../mod/editpost.php:114 ../../include/conversation.php:1023
-msgid "Public post"
-msgstr "Publika afiÅo"
-
-#: ../../mod/editpost.php:117 ../../include/conversation.php:1009
-msgid "Set title"
-msgstr "Redakti titolon"
-
-#: ../../mod/editpost.php:119 ../../include/conversation.php:1011
-msgid "Categories (comma-separated list)"
-msgstr "Kategorioj (disigita per komo)"
-
-#: ../../mod/editpost.php:120 ../../include/conversation.php:1025
-msgid "Example: bob@example.com, mary@example.com"
-msgstr "Ekzemple: bob@example.com, mary@example.com"
-
-#: ../../mod/dfrn_request.php:93
-msgid "This introduction has already been accepted."
-msgstr "Tia prezento jam estas akceptita"
-
-#: ../../mod/dfrn_request.php:118 ../../mod/dfrn_request.php:512
-msgid "Profile location is not valid or does not contain profile information."
-msgstr "La adreso de la profilo ne validas aÅ­ ne enhavas profilinformojn."
-
-#: ../../mod/dfrn_request.php:123 ../../mod/dfrn_request.php:517
-msgid "Warning: profile location has no identifiable owner name."
-msgstr "Averto: La adreso de la profilo ne enhavas identeblan personan nomon."
-
-#: ../../mod/dfrn_request.php:125 ../../mod/dfrn_request.php:519
-msgid "Warning: profile location has no profile photo."
-msgstr "Averto: La adreso de la profilo ne enhavas bildon."
-
-#: ../../mod/dfrn_request.php:128 ../../mod/dfrn_request.php:522
-#, php-format
-msgid "%d required parameter was not found at the given location"
-msgid_plural "%d required parameters were not found at the given location"
-msgstr[0] "%d bezonataj parametroj ne trovita ĉe la donata adreso."
-msgstr[1] "%d bezonataj parametroj ne trovita ĉe la donata adreso."
-
-#: ../../mod/dfrn_request.php:170
-msgid "Introduction complete."
-msgstr "Prezento sukcesis."
-
-#: ../../mod/dfrn_request.php:209
-msgid "Unrecoverable protocol error."
-msgstr "NeÄustigebla eraro en protokolo."
-
-#: ../../mod/dfrn_request.php:237
-msgid "Profile unavailable."
-msgstr "Profilo ne estas disponebla."
-
-#: ../../mod/dfrn_request.php:262
-#, php-format
-msgid "%s has received too many connection requests today."
-msgstr "%s hodiaÅ­ ricevis tro multe da konektpetoj."
-
-#: ../../mod/dfrn_request.php:263
-msgid "Spam protection measures have been invoked."
-msgstr "KontraÅ­spamilo estas aktivita."
-
-#: ../../mod/dfrn_request.php:264
-msgid "Friends are advised to please try again in 24 hours."
-msgstr "Amikoj, vi bonvolu ripeti post 24 horoj."
-
-#: ../../mod/dfrn_request.php:326
-msgid "Invalid locator"
-msgstr "Nevalida adreso."
-
-#: ../../mod/dfrn_request.php:335
-msgid "Invalid email address."
-msgstr "Nevalida repoÅtadreso."
-
-#: ../../mod/dfrn_request.php:361
-msgid "This account has not been configured for email. Request failed."
-msgstr "La konto ne estas agordita por retpoÅto. La peto malsukcesis."
-
-#: ../../mod/dfrn_request.php:457
-msgid "Unable to resolve your name at the provided location."
-msgstr "Via nomo ne troveblas al la donita adreso."
-
-#: ../../mod/dfrn_request.php:470
-msgid "You have already introduced yourself here."
-msgstr "Vi vin jam prezentis tie."
-
-#: ../../mod/dfrn_request.php:474
-#, php-format
-msgid "Apparently you are already friends with %s."
-msgstr "Åœajnas kvazaÅ­ vi jam amikiÄis kun %s."
-
-#: ../../mod/dfrn_request.php:495
-msgid "Invalid profile URL."
-msgstr "Nevalida adreso de profilo."
-
-#: ../../mod/dfrn_request.php:501 ../../include/follow.php:27
-msgid "Disallowed profile URL."
-msgstr "Malpermesita adreso de profilo."
-
-#: ../../mod/dfrn_request.php:570 ../../mod/contacts.php:122
-msgid "Failed to update contact record."
-msgstr "Äœisdatigo de via kontaktrikordo malsukcesis."
-
-#: ../../mod/dfrn_request.php:591
-msgid "Your introduction has been sent."
-msgstr "Via prezento estas sendita."
-
-#: ../../mod/dfrn_request.php:644
-msgid "Please login to confirm introduction."
-msgstr "Bonvolu ensaluti por jesigi la prezenton."
-
-#: ../../mod/dfrn_request.php:658
-msgid ""
-"Incorrect identity currently logged in. Please login to "
-"<strong>this</strong> profile."
-msgstr "MalÄusta identaĵo ensalutata. Bonvolu ensaluti en <strong>tiun</strong> profilon."
-
-#: ../../mod/dfrn_request.php:669
-msgid "Hide this contact"
-msgstr "KaÅi tiun kontakton"
-
-#: ../../mod/dfrn_request.php:672
-#, php-format
-msgid "Welcome home %s."
-msgstr "Bonvenon hejme, %s."
-
-#: ../../mod/dfrn_request.php:673
-#, php-format
-msgid "Please confirm your introduction/connection request to %s."
-msgstr "Bonvolu konfirmi vian prezenton / kontaktpeton al %s."
-
-#: ../../mod/dfrn_request.php:674
-msgid "Confirm"
-msgstr "Konfirmi."
-
-#: ../../mod/dfrn_request.php:715 ../../include/items.php:2881
-msgid "[Name Withheld]"
-msgstr "[KaÅita nomo]"
-
-#: ../../mod/dfrn_request.php:808
-msgid ""
-"Please enter your 'Identity Address' from one of the following supported "
-"communications networks:"
-msgstr "Bonvolu entajpi vian 'Identecan Adreson' de iu de tiuj subtenataj komunikaj retejoj: "
-
-#: ../../mod/dfrn_request.php:824
-msgid "<strike>Connect as an email follower</strike> (Coming soon)"
-msgstr "<strike>Konektu kiel retpoÅta sekvanto</strike> (BaldaÅ­ venos)"
-
-#: ../../mod/dfrn_request.php:826
-msgid ""
-"If you are not yet a member of the free social web, <a "
-"href=\"http://dir.friendica.com/siteinfo\">follow this link to find a public"
-" Friendica site and join us today</a>."
-msgstr "Se vi ne estas membro de la libra interkona reto, <a href=\"http://dir.friendica.com/siteinfo\">sekvu ĉi-ligilon por trovi publikan Friendica retejon kaj aliÄi kun ni hodiaÅ­</a>."
-
-#: ../../mod/dfrn_request.php:829
-msgid "Friend/Connection Request"
-msgstr "Prezento / Konektpeto"
-
-#: ../../mod/dfrn_request.php:830
-msgid ""
-"Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
-"testuser@identi.ca"
-msgstr "Ekzemploj: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"
-
-#: ../../mod/dfrn_request.php:831
-msgid "Please answer the following:"
-msgstr "Bonvolu respondi:"
-
-#: ../../mod/dfrn_request.php:832
-#, php-format
-msgid "Does %s know you?"
-msgstr "Ĉu %s konas vin?"
-
-#: ../../mod/dfrn_request.php:835
-msgid "Add a personal note:"
-msgstr "Aldoni personan noton:"
-
-#: ../../mod/dfrn_request.php:837 ../../include/contact_selectors.php:76
-msgid "Friendica"
-msgstr "Friendica"
-
-#: ../../mod/dfrn_request.php:838
-msgid "StatusNet/Federated Social Web"
-msgstr "StatusNet/Federaciaj interkonaj retejoj"
-
-#: ../../mod/dfrn_request.php:839 ../../mod/settings.php:652
-#: ../../include/contact_selectors.php:80
-msgid "Diaspora"
-msgstr "Diaspora"
-
-#: ../../mod/dfrn_request.php:840
-#, php-format
-msgid ""
-" - please do not use this form. Instead, enter %s into your Diaspora search"
-" bar."
-msgstr " - bonvolu ne uzi ĉi formo. Anstataŭe, entajpu %s en la Diaspora serĉilo."
-
-#: ../../mod/dfrn_request.php:841
-msgid "Your Identity Address:"
-msgstr "Via identeca adreso:"
-
-#: ../../mod/dfrn_request.php:844
-msgid "Submit Request"
-msgstr "Sendi peton"
-
-#: ../../mod/install.php:117
-msgid "Friendica Social Communications Server - Setup"
-msgstr "Friendica Interkona Komunikada Servilo - Instalo"
-
-#: ../../mod/install.php:123
-msgid "Could not connect to database."
-msgstr "Ne eblas konekti la datumbazon."
-
-#: ../../mod/install.php:127
-msgid "Could not create table."
-msgstr "Ne eblas krei tabelon."
-
-#: ../../mod/install.php:133
-msgid "Your Friendica site database has been installed."
-msgstr "La datumbazo de vi Friendica retjo estas instalita."
-
-#: ../../mod/install.php:138
-msgid ""
-"You may need to import the file \"database.sql\" manually using phpmyadmin "
-"or mysql."
-msgstr "Vi bezonas mane importi la dosieron \"database.sql\" per phpmyadmin aÅ­ mysql."
-
-#: ../../mod/install.php:139 ../../mod/install.php:204
-#: ../../mod/install.php:489
-msgid "Please see the file \"INSTALL.txt\"."
-msgstr "Bonvolu legi la dosieron \"INSTALL.txt\"."
-
-#: ../../mod/install.php:201
-msgid "System check"
-msgstr "Sistema kontrolo"
-
-#: ../../mod/install.php:206
-msgid "Check again"
-msgstr "Ree kontroli"
-
-#: ../../mod/install.php:225
-msgid "Database connection"
-msgstr "Datumbaza konekto"
-
-#: ../../mod/install.php:226
-msgid ""
-"In order to install Friendica we need to know how to connect to your "
-"database."
-msgstr "Por instali Friendica, ni bezonas scii kiel konekti al via datumbazo."
-
-#: ../../mod/install.php:227
-msgid ""
-"Please contact your hosting provider or site administrator if you have "
-"questions about these settings."
-msgstr "Bonvolu kontakti vian servilprovizanton aŭ administranton se vi havas demandoj pri ĉi tiaj agordoj."
-
-#: ../../mod/install.php:228
-msgid ""
-"The database you specify below should already exist. If it does not, please "
-"create it before continuing."
-msgstr "La datumbazo nomata malsupren jam ekzistu. Se Äi ne ekzistas, bonvolu unue krei Äin antaÅ­ progresi."
-
-#: ../../mod/install.php:232
-msgid "Database Server Name"
-msgstr "Nomo de datumbaza servilo."
-
-#: ../../mod/install.php:233
-msgid "Database Login Name"
-msgstr "Salutnomo ĉe la datumbazo."
-
-#: ../../mod/install.php:234
-msgid "Database Login Password"
-msgstr "Pasvorto ĉe la datumbazo."
-
-#: ../../mod/install.php:235
-msgid "Database Name"
-msgstr "Nomo de la datumbazo."
-
-#: ../../mod/install.php:236 ../../mod/install.php:275
-msgid "Site administrator email address"
-msgstr "RetpoÅtadreso de la reteja administranto"
-
-#: ../../mod/install.php:236 ../../mod/install.php:275
-msgid ""
-"Your account email address must match this in order to use the web admin "
-"panel."
-msgstr "La repoÅtadreso de via konto bezonas esti la sama por uzi la TTTa administrilo."
-
-#: ../../mod/install.php:240 ../../mod/install.php:278
-msgid "Please select a default timezone for your website"
-msgstr "Bonvolu elekti defaÅ­ltan horzonon por via retejo."
-
-#: ../../mod/install.php:265
-msgid "Site settings"
-msgstr "Retejaj agordoj"
-
-#: ../../mod/install.php:318
-msgid "Could not find a command line version of PHP in the web server PATH."
-msgstr "Komanda linia versio de PHP ne trovita en $PATH de la retservilo."
-
-#: ../../mod/install.php:319
-msgid ""
-"If you don't have a command line version of PHP installed on server, you "
-"will not be able to run background polling via cron. See <a "
-"href='http://friendica.com/node/27'>'Activating scheduled tasks'</a>"
-msgstr "Se vi ne havas komandlinian version de PHP sur la servilo, vi ne eblas plenumi fonan planitan enketon per cron. Bonvolu legi <a href='http://friendica.com/node/27'>'Activating scheduled tasks'</a>"
-
-#: ../../mod/install.php:323
-msgid "PHP executable path"
-msgstr "Vojo de la komanda linia versio de PHP"
-
-#: ../../mod/install.php:323
-msgid ""
-"Enter full path to php executable. You can leave this blank to continue the "
-"installation."
-msgstr "Entajpu la plenan vojon al la php komandodosiero. Vi eblas lasi tion malplena por pluigi la instalado."
-
-#: ../../mod/install.php:328
-msgid "Command line PHP"
-msgstr "komanda linia versio de PHP"
-
-#: ../../mod/install.php:337
-msgid ""
-"The command line version of PHP on your system does not have "
-"\"register_argc_argv\" enabled."
-msgstr "En via komanda linia versio de PHP je via sistemo, \"register_argc_argv\" ne estas aktivita."
-
-#: ../../mod/install.php:338
-msgid "This is required for message delivery to work."
-msgstr "Tio estas bezonata por la livero de mesaÄoj."
-
-#: ../../mod/install.php:340
-msgid "PHP register_argc_argv"
-msgstr "PHP register_argc_argv"
-
-#: ../../mod/install.php:361
-msgid ""
-"Error: the \"openssl_pkey_new\" function on this system is not able to "
-"generate encryption keys"
-msgstr "Eraro: La funkcio \"openssl_pkey_new\" je tia sistemo ne eblas generi ĉifroÅlosilojn."
-
-#: ../../mod/install.php:362
-msgid ""
-"If running under Windows, please see "
-"\"http://www.php.net/manual/en/openssl.installation.php\"."
-msgstr "Se la operaciumo sistemo estas Windows, bonvolu legi: http://www.php.net/manual/en/openssl.installation.php"
-
-#: ../../mod/install.php:364
-msgid "Generate encryption keys"
-msgstr "Generi ĉifroÅlosilojn"
-
-#: ../../mod/install.php:371
-msgid "libCurl PHP module"
-msgstr "PHP modulo libCurl"
-
-#: ../../mod/install.php:372
-msgid "GD graphics PHP module"
-msgstr "PHP modulo GD"
-
-#: ../../mod/install.php:373
-msgid "OpenSSL PHP module"
-msgstr "PHP modulo OpenSSL"
-
-#: ../../mod/install.php:374
-msgid "mysqli PHP module"
-msgstr "PHP modulo mysqli"
-
-#: ../../mod/install.php:375
-msgid "mb_string PHP module"
-msgstr "PHP modulo mb_string"
-
-#: ../../mod/install.php:380 ../../mod/install.php:382
-msgid "Apache mod_rewrite module"
-msgstr "Apache mod_rewrite modulo"
-
-#: ../../mod/install.php:380
-msgid ""
-"Error: Apache webserver mod-rewrite module is required but not installed."
-msgstr "Eraro: La modulo mod_rewrite en la Apache retservilo estas bezonata sed ne instalita."
-
-#: ../../mod/install.php:388
-msgid "Error: libCURL PHP module required but not installed."
-msgstr "Eraro: La modulo libCURL en PHP estas bezonata sed ne instalita."
-
-#: ../../mod/install.php:392
-msgid ""
-"Error: GD graphics PHP module with JPEG support required but not installed."
-msgstr "Eraro: La modulo GD en PHP kun subteno por JPEG estas bezonata sed ne instalita."
-
-#: ../../mod/install.php:396
-msgid "Error: openssl PHP module required but not installed."
-msgstr "Eraro: La modulo OpenSSL en PHP estas bezonata sed ne instalita."
-
-#: ../../mod/install.php:400
-msgid "Error: mysqli PHP module required but not installed."
-msgstr "Eraro: La modulo mysqli en PHP estas bezonata sed ne instalita."
-
-#: ../../mod/install.php:404
-msgid "Error: mb_string PHP module required but not installed."
-msgstr "Eraro: La modulo mb_string en PHP estas bezonata sed ne instalita."
-
-#: ../../mod/install.php:421
-msgid ""
-"The web installer needs to be able to create a file called \".htconfig.php\""
-" in the top folder of your web server and it is unable to do so."
-msgstr "La reta instalilo bezonas skribi dosieron nomata \".htconfig.php\" en la baza dosierujo de la retservilo, sed ne sukcesis."
-
-#: ../../mod/install.php:422
-msgid ""
-"This is most often a permission setting, as the web server may not be able "
-"to write files in your folder - even if you can."
-msgstr "Tio ĉi plej ofte estas agordo rilate al permesoj, ĉar la servilo eble ne povas skribi en via dosierujo, eĉ se vi mem povas skribi."
-
-#: ../../mod/install.php:423
-msgid ""
-"At the end of this procedure, we will give you a text to save in a file "
-"named .htconfig.php in your Friendica top folder."
-msgstr "Post la fino de tiu proceduro, ni donos al vi tekston por konservi en dosiero .htconfig.php en via baza Friendica dosierujo."
-
-#: ../../mod/install.php:424
-msgid ""
-"You can alternatively skip this procedure and perform a manual installation."
-" Please see the file \"INSTALL.txt\" for instructions."
-msgstr "Vi ankaÅ­ povas preterpasi tiun proceduron kaj fari permanan instaladon. Bonvolu legi la dosieron \"INSTALL.txt\" por trovi instrukciojn."
-
-#: ../../mod/install.php:427
-msgid ".htconfig.php is writable"
-msgstr ".htconfig.php estas skribebla."
-
-#: ../../mod/install.php:439
-msgid ""
-"Url rewrite in .htaccess is not working. Check your server configuration."
-msgstr "Url rewrite en .htaccess ne funkcias. Kontrolu la agordojn de la servilo."
-
-#: ../../mod/install.php:441
-msgid "Url rewrite is working"
-msgstr "URL rewrite funkcias."
-
-#: ../../mod/install.php:451
-msgid ""
-"The database configuration file \".htconfig.php\" could not be written. "
-"Please use the enclosed text to create a configuration file in your web "
-"server root."
-msgstr "Ne povis skribi la datumbaza agordoj en la dosiero \".htconfig.php\". Bonvolu uzi la inkluzivan tekston por krei agordan dosieron en la baza dosierujo de la retservilo."
-
-#: ../../mod/install.php:476
-msgid "Errors encountered creating database tables."
-msgstr "Okazis eraroj dum la kreado de tabeloj en la datumbazo."
-
-#: ../../mod/install.php:487
-msgid "<h1>What next</h1>"
-msgstr "<h1>Kio sekvas nun?</h1>"
-
-#: ../../mod/install.php:488
-msgid ""
-"IMPORTANT: You will need to [manually] setup a scheduled task for the "
-"poller."
-msgstr "GRAVA: Vi bezonas [mane] agordi planitan taskon por la Friendica poller."
-
-#: ../../mod/localtime.php:12 ../../include/event.php:11
-#: ../../include/bb2diaspora.php:335
-msgid "l F d, Y \\@ g:i A"
-msgstr "l F d, Y \\@ g:i A"
-
-#: ../../mod/localtime.php:24
-msgid "Time Conversion"
-msgstr "Konverto de tempo"
-
-#: ../../mod/localtime.php:26
-msgid ""
-"Friendika provides this service for sharing events with other networks and "
-"friends in unknown timezones."
-msgstr "Friendica provizas tiun servon por kunhavigi okazojn kun aliaj retoj kaj amikoj en aliaj horzonoj."
-
-#: ../../mod/localtime.php:30
-#, php-format
-msgid "UTC time: %s"
-msgstr "UTC horo: %s"
-
-#: ../../mod/localtime.php:33
-#, php-format
-msgid "Current timezone: %s"
-msgstr "Aktuala horzono: %s"
-
-#: ../../mod/localtime.php:36
-#, php-format
-msgid "Converted localtime: %s"
-msgstr "Konvertita loka horo: %s"
-
-#: ../../mod/localtime.php:41
-msgid "Please select your timezone:"
-msgstr "Bonvolu elekti vian horzonon:"
-
-#: ../../mod/match.php:12
-msgid "Profile Match"
-msgstr "Kongrua profilo"
-
-#: ../../mod/match.php:20
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr "Neniom da kategoriaj vortoj kongruas. Bonvolu aldoni kategoriajn vortojn al via defaÅ­lta profilo."
-
-#: ../../mod/match.php:57
-msgid "is interested in:"
-msgstr "interesiÄas pri:"
-
-#: ../../mod/match.php:58 ../../mod/suggest.php:59
-#: ../../include/contact_widgets.php:9 ../../boot.php:1080
-msgid "Connect"
-msgstr "Konekti"
-
-#: ../../mod/match.php:65 ../../mod/dirfind.php:60
-msgid "No matches"
-msgstr "Nenio estas trovita"
-
-#: ../../mod/lockview.php:39
-msgid "Remote privacy information not available."
-msgstr "Informoj pri fora privateca ne estas disponebla."
-
-#: ../../mod/lockview.php:43
-msgid "Visible to:"
-msgstr "Videbla al:"
-
-#: ../../mod/home.php:26 ../../addon/communityhome/communityhome.php:179
-#, php-format
-msgid "Welcome to %s"
-msgstr "Bonvenon ĉe %s"
-
-#: ../../mod/notifications.php:26
-msgid "Invalid request identifier."
-msgstr "Nevalida peta identigilo."
-
-#: ../../mod/notifications.php:35 ../../mod/notifications.php:161
-#: ../../mod/notifications.php:207
-msgid "Discard"
-msgstr "ForviÅi"
-
-#: ../../mod/notifications.php:51 ../../mod/notifications.php:160
-#: ../../mod/notifications.php:206 ../../mod/contacts.php:316
-#: ../../mod/contacts.php:370
-msgid "Ignore"
-msgstr "Ignori"
-
-#: ../../mod/notifications.php:75
-msgid "System"
-msgstr "Sistemo"
-
-#: ../../mod/notifications.php:80 ../../include/nav.php:113
-msgid "Network"
-msgstr "Reto"
-
-#: ../../mod/notifications.php:85 ../../mod/network.php:300
-msgid "Personal"
-msgstr "Propra"
-
-#: ../../mod/notifications.php:90 ../../view/theme/diabook/theme.php:127
-#: ../../include/nav.php:77 ../../include/nav.php:115
-msgid "Home"
-msgstr "Hejmo"
-
-#: ../../mod/notifications.php:95 ../../include/nav.php:121
-msgid "Introductions"
-msgstr "Prezentoj"
-
-#: ../../mod/notifications.php:100 ../../mod/message.php:105
-#: ../../include/nav.php:128
-msgid "Messages"
-msgstr "MesaÄoj"
-
-#: ../../mod/notifications.php:119
-msgid "Show Ignored Requests"
-msgstr "Montri ignoritajn petojn"
-
-#: ../../mod/notifications.php:119
-msgid "Hide Ignored Requests"
-msgstr "KaÅi ignoritajn petojn"
-
-#: ../../mod/notifications.php:145 ../../mod/notifications.php:191
-msgid "Notification type: "
-msgstr "Tipo de atentigo:"
-
-#: ../../mod/notifications.php:146
-msgid "Friend Suggestion"
-msgstr "Amikosugestoj"
-
-#: ../../mod/notifications.php:148
-#, php-format
-msgid "suggested by %s"
-msgstr "sugestita de %s"
-
-#: ../../mod/notifications.php:153 ../../mod/notifications.php:200
-#: ../../mod/contacts.php:376
-msgid "Hide this contact from others"
-msgstr "KaÅi ĉi tiun kontakton al aliaj"
-
-#: ../../mod/notifications.php:154 ../../mod/notifications.php:201
-msgid "Post a new friend activity"
-msgstr "AfiÅi novan amikecan aktivecon"
-
-#: ../../mod/notifications.php:154 ../../mod/notifications.php:201
-msgid "if applicable"
-msgstr "se aplikebla"
-
-#: ../../mod/notifications.php:157 ../../mod/notifications.php:204
-#: ../../mod/admin.php:661
-msgid "Approve"
-msgstr "Aprobi"
-
-#: ../../mod/notifications.php:177
-msgid "Claims to be known to you: "
-msgstr "Pensas ke vi konas ilin:"
-
-#: ../../mod/notifications.php:177
-msgid "yes"
-msgstr "jes"
-
-#: ../../mod/notifications.php:177
-msgid "no"
-msgstr "ne"
-
-#: ../../mod/notifications.php:184
-msgid "Approve as: "
-msgstr "Aprobi kiel:"
-
-#: ../../mod/notifications.php:185
-msgid "Friend"
-msgstr "Amiko"
-
-#: ../../mod/notifications.php:186
-msgid "Sharer"
-msgstr "Kunhaviganto"
-
-#: ../../mod/notifications.php:186
-msgid "Fan/Admirer"
-msgstr "Fanatikulo/Admiranto"
-
-#: ../../mod/notifications.php:192
-msgid "Friend/Connect Request"
-msgstr "Kontaktpeto"
-
-#: ../../mod/notifications.php:192
-msgid "New Follower"
-msgstr "Nova abonanto"
-
-#: ../../mod/notifications.php:213
-msgid "No introductions."
-msgstr "Neniom da prezentoj"
-
-#: ../../mod/notifications.php:216 ../../include/nav.php:122
-msgid "Notifications"
-msgstr "Atentigoj"
-
-#: ../../mod/notifications.php:253 ../../mod/notifications.php:378
-#: ../../mod/notifications.php:465
-#, php-format
-msgid "%s liked %s's post"
-msgstr "%s Åatis la afiÅon de %s"
-
-#: ../../mod/notifications.php:262 ../../mod/notifications.php:387
-#: ../../mod/notifications.php:474
-#, php-format
-msgid "%s disliked %s's post"
-msgstr "%s malÅatis la afiÅon de %s"
-
-#: ../../mod/notifications.php:276 ../../mod/notifications.php:401
-#: ../../mod/notifications.php:488
-#, php-format
-msgid "%s is now friends with %s"
-msgstr "%s amikiÄis kun %s"
-
-#: ../../mod/notifications.php:283 ../../mod/notifications.php:408
-#, php-format
-msgid "%s created a new post"
-msgstr "%s kreis novan afiÅon"
-
-#: ../../mod/notifications.php:284 ../../mod/notifications.php:409
-#: ../../mod/notifications.php:497
-#, php-format
-msgid "%s commented on %s's post"
-msgstr "%s komentis pri la afiÅo de %s"
-
-#: ../../mod/notifications.php:298
-msgid "No more network notifications."
-msgstr "Ne pli da retaj atentigoj."
-
-#: ../../mod/notifications.php:302
-msgid "Network Notifications"
-msgstr "Retaj Atentigoj"
-
-#: ../../mod/notifications.php:328 ../../mod/notify.php:61
-msgid "No more system notifications."
-msgstr "Ne pli da sistemaj atentigoj."
-
-#: ../../mod/notifications.php:332 ../../mod/notify.php:65
-msgid "System Notifications"
-msgstr "Sistemaj Atentigoj"
-
-#: ../../mod/notifications.php:423
-msgid "No more personal notifications."
-msgstr "Ne pli da personaj atentigoj"
-
-#: ../../mod/notifications.php:427
-msgid "Personal Notifications"
-msgstr "Personaj Atentigoj"
-
-#: ../../mod/notifications.php:504
-msgid "No more home notifications."
-msgstr "Ne pli da hejmrilataj atentigoj."
-
-#: ../../mod/notifications.php:508
-msgid "Home Notifications"
-msgstr "Hejmrilataj atentigoj"
-
-#: ../../mod/contacts.php:83 ../../mod/contacts.php:163
-msgid "Could not access contact record."
-msgstr "Ne eblis atingi kontaktrikordo."
-
-#: ../../mod/contacts.php:97
-msgid "Could not locate selected profile."
-msgstr "Ne trovis elektitan profilon."
-
-#: ../../mod/contacts.php:120
-msgid "Contact updated."
-msgstr "Kontakto estas Äisdatigita."
-
-#: ../../mod/contacts.php:185
-msgid "Contact has been blocked"
-msgstr "Kontakto estas blokita."
-
-#: ../../mod/contacts.php:185
-msgid "Contact has been unblocked"
-msgstr "Kontakto estas malblokita."
-
-#: ../../mod/contacts.php:199
-msgid "Contact has been ignored"
-msgstr "Kontakto estas ignorita."
-
-#: ../../mod/contacts.php:199
-msgid "Contact has been unignored"
-msgstr "Kontakto estas malignorita."
-
-#: ../../mod/contacts.php:215
-msgid "Contact has been archived"
-msgstr "Enarkivigis kontakton"
-
-#: ../../mod/contacts.php:215
-msgid "Contact has been unarchived"
-msgstr "Elarkivigis kontakton"
-
-#: ../../mod/contacts.php:228
-msgid "Contact has been removed."
-msgstr "Kontakto estas forigita."
-
-#: ../../mod/contacts.php:258
-#, php-format
-msgid "You are mutual friends with %s"
-msgstr "Vi estas reciproka amiko de %s"
-
-#: ../../mod/contacts.php:262
-#, php-format
-msgid "You are sharing with %s"
-msgstr "Vi kunhavigas kun %s"
-
-#: ../../mod/contacts.php:267
-#, php-format
-msgid "%s is sharing with you"
-msgstr "%s kunhavigas kun vi"
-
-#: ../../mod/contacts.php:284
-msgid "Private communications are not available for this contact."
-msgstr "Privataj komunikadoj ne disponeblas por ĉi tiu kontakto."
-
-#: ../../mod/contacts.php:287
-msgid "Never"
-msgstr "Neniam"
-
-#: ../../mod/contacts.php:291
-msgid "(Update was successful)"
-msgstr "(Äœisdatigo sukcesis.)"
-
-#: ../../mod/contacts.php:291
-msgid "(Update was not successful)"
-msgstr "(Äœisdatigo malsukcesis.)"
-
-#: ../../mod/contacts.php:293
-msgid "Suggest friends"
-msgstr "Sugesti amikojn"
-
-#: ../../mod/contacts.php:297
-#, php-format
-msgid "Network type: %s"
-msgstr "Reta tipo: %s"
-
-#: ../../mod/contacts.php:300 ../../include/contact_widgets.php:183
-#, php-format
-msgid "%d contact in common"
-msgid_plural "%d contacts in common"
-msgstr[0] "%d komuna kontakto"
-msgstr[1] "%d komunaj kontaktoj"
-
-#: ../../mod/contacts.php:305
-msgid "View all contacts"
-msgstr "Vidi ĉiujn kontaktojn"
-
-#: ../../mod/contacts.php:310 ../../mod/contacts.php:369
-#: ../../mod/admin.php:665
-msgid "Unblock"
-msgstr "Malbloki"
-
-#: ../../mod/contacts.php:310 ../../mod/contacts.php:369
-#: ../../mod/admin.php:664
-msgid "Block"
-msgstr "Bloki"
-
-#: ../../mod/contacts.php:313
-msgid "Toggle Blocked status"
-msgstr "Åœalti/malÅalti Blokitan staton"
-
-#: ../../mod/contacts.php:316 ../../mod/contacts.php:370
-msgid "Unignore"
-msgstr "Malignori"
-
-#: ../../mod/contacts.php:319
-msgid "Toggle Ignored status"
-msgstr "Åœalti/malÅalti Ignoritan staton"
-
-#: ../../mod/contacts.php:323
-msgid "Unarchive"
-msgstr "Elarkivigi"
-
-#: ../../mod/contacts.php:323
-msgid "Archive"
-msgstr "Enarkivigi"
-
-#: ../../mod/contacts.php:326
-msgid "Toggle Archive status"
-msgstr "Åœalti/malÅalti Enarkivigitan staton"
-
-#: ../../mod/contacts.php:329
-msgid "Repair"
-msgstr "Ripari"
-
-#: ../../mod/contacts.php:332
-msgid "Advanced Contact Settings"
-msgstr "Specialaj Kontaktagordoj"
-
-#: ../../mod/contacts.php:338
-msgid "Communications lost with this contact!"
-msgstr "Mi perdis la kommunikadon kun tiu kontakto!"
-
-#: ../../mod/contacts.php:341
-msgid "Contact Editor"
-msgstr "Kontakta redaktilo."
-
-#: ../../mod/contacts.php:344
-msgid "Profile Visibility"
-msgstr "Videbleco de profilo"
-
-#: ../../mod/contacts.php:345
-#, php-format
-msgid ""
-"Please choose the profile you would like to display to %s when viewing your "
-"profile securely."
-msgstr "Bonvolu elekti la profilon kiu vi volas montri al %s aspektinde kiam sekure aspektante vian profilon."
-
-#: ../../mod/contacts.php:346
-msgid "Contact Information / Notes"
-msgstr "Kontaktaj informoj / Notoj"
-
-#: ../../mod/contacts.php:347
-msgid "Edit contact notes"
-msgstr "Redakti kontaktnotojn"
-
-#: ../../mod/contacts.php:352 ../../mod/contacts.php:544
-#: ../../mod/viewconnections.php:62 ../../mod/nogroup.php:40
-#, php-format
-msgid "Visit %s's profile [%s]"
-msgstr "Viziti la profilon de %s [%s]"
-
-#: ../../mod/contacts.php:353
-msgid "Block/Unblock contact"
-msgstr "Bloki/Malbloki kontakton"
-
-#: ../../mod/contacts.php:354
-msgid "Ignore contact"
-msgstr "Ignori kontakton"
-
-#: ../../mod/contacts.php:355
-msgid "Repair URL settings"
-msgstr "Ripari URL agordoj"
-
-#: ../../mod/contacts.php:356
-msgid "View conversations"
-msgstr "Vidi konversaciojn"
-
-#: ../../mod/contacts.php:358
-msgid "Delete contact"
-msgstr "ForviÅi kontakton"
-
-#: ../../mod/contacts.php:362
-msgid "Last update:"
-msgstr "Plej ĵusa Äisdatigo:"
-
-#: ../../mod/contacts.php:364
-msgid "Update public posts"
-msgstr "Äœisdatigi publikajn afiÅojn"
-
-#: ../../mod/contacts.php:366 ../../mod/admin.php:1136
-msgid "Update now"
-msgstr "Äœisdatigi nun"
-
-#: ../../mod/contacts.php:373
-msgid "Currently blocked"
-msgstr "Nuntempe blokata"
-
-#: ../../mod/contacts.php:374
-msgid "Currently ignored"
-msgstr "Nuntempe ignorata"
-
-#: ../../mod/contacts.php:375
-msgid "Currently archived"
-msgstr "Nuntempe enarkivigita"
-
-#: ../../mod/contacts.php:376
-msgid ""
-"Replies/likes to your public posts <strong>may</strong> still be visible"
-msgstr "Rispondoj/Åataĵo al viaj publikaj afiÅoj <strong>eble</strong> plu estos videbla"
-
-#: ../../mod/contacts.php:429
-msgid "Suggestions"
-msgstr "Sugestoj"
-
-#: ../../mod/contacts.php:432
-msgid "Suggest potential friends"
-msgstr "Sugesti amikojn"
-
-#: ../../mod/contacts.php:435 ../../mod/group.php:191
-msgid "All Contacts"
-msgstr "Ĉiuj Kontaktoj"
-
-#: ../../mod/contacts.php:438
-msgid "Show all contacts"
-msgstr "Montri ĉiujn kontaktojn"
-
-#: ../../mod/contacts.php:441
-msgid "Unblocked"
-msgstr "Malblokita"
-
-#: ../../mod/contacts.php:444
-msgid "Only show unblocked contacts"
-msgstr "Nur montri neblokitajn kontaktojn"
-
-#: ../../mod/contacts.php:448
-msgid "Blocked"
-msgstr "Blokita"
-
-#: ../../mod/contacts.php:451
-msgid "Only show blocked contacts"
-msgstr "Nur montri blokitajn kontaktojn"
-
-#: ../../mod/contacts.php:455
-msgid "Ignored"
-msgstr "Ignorita"
-
-#: ../../mod/contacts.php:458
-msgid "Only show ignored contacts"
-msgstr "Nur montri ignoritajn kontaktojn"
-
-#: ../../mod/contacts.php:462
-msgid "Archived"
-msgstr "Enarkivigita"
-
-#: ../../mod/contacts.php:465
-msgid "Only show archived contacts"
-msgstr "Nur montri enarkivigitajn kontaktojn"
-
-#: ../../mod/contacts.php:469
-msgid "Hidden"
-msgstr "KaÅita"
-
-#: ../../mod/contacts.php:472
-msgid "Only show hidden contacts"
-msgstr "Nur montri kaÅitajn kontaktojn"
-
-#: ../../mod/contacts.php:520
-msgid "Mutual Friendship"
-msgstr "Reciproka amikeco"
-
-#: ../../mod/contacts.php:524
-msgid "is a fan of yours"
-msgstr "estas admiranto de vi"
-
-#: ../../mod/contacts.php:528
-msgid "you are a fan of"
-msgstr "vi estas admiranto de"
-
-#: ../../mod/contacts.php:545 ../../mod/nogroup.php:41
-msgid "Edit contact"
-msgstr "Redakti kontakton"
-
-#: ../../mod/contacts.php:566 ../../view/theme/diabook/theme.php:129
-#: ../../include/nav.php:139
-msgid "Contacts"
-msgstr "Kontaktoj"
-
-#: ../../mod/contacts.php:570
-msgid "Search your contacts"
-msgstr "Serĉi viajn kontaktojn"
-
-#: ../../mod/contacts.php:571 ../../mod/directory.php:57
-msgid "Finding: "
-msgstr "Trovata:"
-
-#: ../../mod/contacts.php:572 ../../mod/directory.php:59
-#: ../../include/contact_widgets.php:33
-msgid "Find"
-msgstr "Trovi"
-
-#: ../../mod/lostpass.php:16
-msgid "No valid account found."
-msgstr "Ne trovis validan konton."
-
-#: ../../mod/lostpass.php:32
-msgid "Password reset request issued. Check your email."
-msgstr "Eldonis riparadon de pasvorto. Legu vian retpoÅton."
-
-#: ../../mod/lostpass.php:43
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "Pasvorta riparado petita je %s"
-
-#: ../../mod/lostpass.php:45 ../../mod/lostpass.php:107
-#: ../../mod/register.php:90 ../../mod/register.php:144
-#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:752
-#: ../../addon/facebook/facebook.php:700
-#: ../../addon/facebook/facebook.php:1190
-#: ../../addon/public_server/public_server.php:62
-#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2890
-#: ../../boot.php:730
-msgid "Administrator"
-msgstr "Administranto"
-
-#: ../../mod/lostpass.php:65
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "Ne povis konfirmi la peton. (Eble vi sendis Äin antaÅ­.) Pasvorta riparado malsukcesis."
-
-#: ../../mod/lostpass.php:83 ../../boot.php:862
-msgid "Password Reset"
-msgstr "Pasvorta riparado"
-
-#: ../../mod/lostpass.php:84
-msgid "Your password has been reset as requested."
-msgstr "Via pasvorto estis riparita laÅ­ via peto."
-
-#: ../../mod/lostpass.php:85
-msgid "Your new password is"
-msgstr "Via nova pasvorto estas"
-
-#: ../../mod/lostpass.php:86
-msgid "Save or copy your new password - and then"
-msgstr "Memorigi vian novan pasvorton - kaj poste"
-
-#: ../../mod/lostpass.php:87
-msgid "click here to login"
-msgstr "klaku ĉi tie por ensaluti"
-
-#: ../../mod/lostpass.php:88
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Vi povas Åangi vian pasvorton sur la paÄo <em>agordoj</em> kiam vi sukcese ensalutis."
-
-#: ../../mod/lostpass.php:119
-msgid "Forgot your Password?"
-msgstr "Ĉu vi forgesis vian pasvorton?"
-
-#: ../../mod/lostpass.php:120
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Entajpu vian retpoÅtadreson kaj sendu por pasvorta riparado. Poste, bonvolu legi vian retpoÅton por trovi pliajn instrukciojn."
-
-#: ../../mod/lostpass.php:121
-msgid "Nickname or Email: "
-msgstr "Salutnomo aÅ­ retpoÅtadreso: "
-
-#: ../../mod/lostpass.php:122
-msgid "Reset"
-msgstr "Repari"
-
-#: ../../mod/settings.php:50 ../../include/nav.php:137
-msgid "Account settings"
-msgstr "Konto"
-
-#: ../../mod/settings.php:55
-msgid "Display settings"
-msgstr "Ekrano"
-
-#: ../../mod/settings.php:61
-msgid "Connector settings"
-msgstr "Konektiloj"
-
-#: ../../mod/settings.php:66
-msgid "Plugin settings"
-msgstr "Kromprogramoj"
-
-#: ../../mod/settings.php:71
-msgid "Connected apps"
-msgstr "Konektitaj programoj"
-
-#: ../../mod/settings.php:76
-msgid "Export personal data"
-msgstr "Eksporto"
-
-#: ../../mod/settings.php:81
-msgid "Remove account"
-msgstr "Forigi konton"
-
-#: ../../mod/settings.php:89 ../../mod/admin.php:751 ../../mod/admin.php:956
-#: ../../addon/dav/layout.fnk.php:116 ../../addon/mathjax/mathjax.php:36
-#: ../../view/theme/diabook/theme.php:643
-#: ../../view/theme/diabook/theme.php:773 ../../include/nav.php:137
-msgid "Settings"
-msgstr "Agordoj"
-
-#: ../../mod/settings.php:133
-msgid "Missing some important data!"
-msgstr "Mankas importantaj datumoj!"
-
-#: ../../mod/settings.php:136 ../../mod/settings.php:581
-msgid "Update"
-msgstr "Äœisdatigi"
-
-#: ../../mod/settings.php:241
-msgid "Failed to connect with email account using the settings provided."
-msgstr "Ne sukcesis konekti al retpoÅtkonto kun la provizitaj agordoj."
-
-#: ../../mod/settings.php:246
-msgid "Email settings updated."
-msgstr "RetpoÅtagordoj Äisdatigita"
-
-#: ../../mod/settings.php:305
-msgid "Passwords do not match. Password unchanged."
-msgstr "La pasvortoj ne estas egala. Pasvorto ne ÅanÄita."
-
-#: ../../mod/settings.php:310
-msgid "Empty passwords are not allowed. Password unchanged."
-msgstr "Malplenaj pasvortoj ne estas permesita. Pasvorto ne ÅanÄita."
-
-#: ../../mod/settings.php:321
-msgid "Password changed."
-msgstr "Pasvorto ÅanÄita."
-
-#: ../../mod/settings.php:323
-msgid "Password update failed. Please try again."
-msgstr "Äœisdatigo de pasvorto malsukcesis. Bonvolu provi refoje."
-
-#: ../../mod/settings.php:386
-msgid " Please use a shorter name."
-msgstr " Bonvolu uzi pli mallongan nomon."
-
-#: ../../mod/settings.php:388
-msgid " Name too short."
-msgstr " Nomo estas tro mallonga."
-
-#: ../../mod/settings.php:394
-msgid " Not valid email."
-msgstr " RepoÅtadreso ne validas."
-
-#: ../../mod/settings.php:396
-msgid " Cannot change to that email."
-msgstr " Ne povas ÅanÄi al tio retpoÅtadreso."
-
-#: ../../mod/settings.php:450
-msgid "Private forum has no privacy permissions. Using default privacy group."
-msgstr "Privata forumo ne havas privatecajn agordojn. DefaÅ­lta privateca grupo estas uzata."
-
-#: ../../mod/settings.php:454
-msgid "Private forum has no privacy permissions and no default privacy group."
-msgstr "Privata forumo havas nek privatecajn agordojn nek defaÅ­ltan privatecan grupon."
-
-#: ../../mod/settings.php:484 ../../addon/facebook/facebook.php:493
-#: ../../addon/impressum/impressum.php:77
-#: ../../addon/openstreetmap/openstreetmap.php:80
-#: ../../addon/mathjax/mathjax.php:66 ../../addon/piwik/piwik.php:105
-#: ../../addon/twitter/twitter.php:382
-msgid "Settings updated."
-msgstr "Agordoj Äisdatigita."
-
-#: ../../mod/settings.php:554 ../../mod/settings.php:580
-#: ../../mod/settings.php:616
-msgid "Add application"
-msgstr "Aldoni programon"
-
-#: ../../mod/settings.php:558 ../../mod/settings.php:584
-#: ../../addon/statusnet/statusnet.php:561
-msgid "Consumer Key"
-msgstr "Åœlosilo de kliento"
-
-#: ../../mod/settings.php:559 ../../mod/settings.php:585
-#: ../../addon/statusnet/statusnet.php:560
-msgid "Consumer Secret"
-msgstr "Sekreto de kliento"
-
-#: ../../mod/settings.php:560 ../../mod/settings.php:586
-msgid "Redirect"
-msgstr "Alidirekto"
-
-#: ../../mod/settings.php:561 ../../mod/settings.php:587
-msgid "Icon url"
-msgstr "Piktograma adreso"
-
-#: ../../mod/settings.php:572
-msgid "You can't edit this application."
-msgstr "Ĉi tio programo ne estas redaktebla."
-
-#: ../../mod/settings.php:615
-msgid "Connected Apps"
-msgstr "Konektitaj Programoj"
-
-#: ../../mod/settings.php:619
-msgid "Client key starts with"
-msgstr "Åœlosilo de kliento komencas kun"
-
-#: ../../mod/settings.php:620
-msgid "No name"
-msgstr "Neniu nomo"
-
-#: ../../mod/settings.php:621
-msgid "Remove authorization"
-msgstr "ForviÅi rajtigon"
-
-#: ../../mod/settings.php:632
-msgid "No Plugin settings configured"
-msgstr "Neniom da kromprogramoagordoj farita"
-
-#: ../../mod/settings.php:640 ../../addon/widgets/widgets.php:123
-msgid "Plugin Settings"
-msgstr "Kromprogramoagordoj"
-
-#: ../../mod/settings.php:652 ../../mod/settings.php:653
-#, php-format
-msgid "Built-in support for %s connectivity is %s"
-msgstr "Integrita subteno por %s koneto estas %s"
-
-#: ../../mod/settings.php:652 ../../mod/settings.php:653
-msgid "enabled"
-msgstr "Åaltita"
-
-#: ../../mod/settings.php:652 ../../mod/settings.php:653
-msgid "disabled"
-msgstr "malÅaltita"
-
-#: ../../mod/settings.php:653
-msgid "StatusNet"
-msgstr "StatusNet"
-
-#: ../../mod/settings.php:685
-msgid "Email access is disabled on this site."
-msgstr "RetpoÅta atingo ne disponeblas ĉi tie."
-
-#: ../../mod/settings.php:691
-msgid "Connector Settings"
-msgstr "Konektiloagordoj"
-
-#: ../../mod/settings.php:696
-msgid "Email/Mailbox Setup"
-msgstr "Agordoj pri RetpoÅto"
-
-#: ../../mod/settings.php:697
-msgid ""
-"If you wish to communicate with email contacts using this service "
-"(optional), please specify how to connect to your mailbox."
-msgstr "Se vi volas uzi ĉi tiun servon por komuniki per retpoÅto (nedeviga), bonvolu specifi kiel konekti al vian retpoÅtkonton."
-
-#: ../../mod/settings.php:698
-msgid "Last successful email check:"
-msgstr "Plej ĵusa sukcesa kontrolo de poÅto:"
-
-#: ../../mod/settings.php:700
-msgid "IMAP server name:"
-msgstr "Nomo de IMAP servilo:"
-
-#: ../../mod/settings.php:701
-msgid "IMAP port:"
-msgstr "Numero de IMAP pordo:"
-
-#: ../../mod/settings.php:702
-msgid "Security:"
-msgstr "Sekureco:"
-
-#: ../../mod/settings.php:702 ../../mod/settings.php:707
-msgid "None"
-msgstr "Nenio"
-
-#: ../../mod/settings.php:703
-msgid "Email login name:"
-msgstr "RetpoÅta salutnomo:"
-
-#: ../../mod/settings.php:704
-msgid "Email password:"
-msgstr "RetpoÅta pasvorto:"
-
-#: ../../mod/settings.php:705
-msgid "Reply-to address:"
-msgstr "Responda adreso (Reply-to):"
-
-#: ../../mod/settings.php:706
-msgid "Send public posts to all email contacts:"
-msgstr "Sendu publikajn afiÅojn al ĉiuj retpoÅtkontaktoj:"
-
-#: ../../mod/settings.php:707
-msgid "Action after import:"
-msgstr "Ago post la importado:"
-
-#: ../../mod/settings.php:707
-msgid "Mark as seen"
-msgstr "Marki kiel legita"
-
-#: ../../mod/settings.php:707
-msgid "Move to folder"
-msgstr "Movi al dosierujo"
-
-#: ../../mod/settings.php:708
-msgid "Move to folder:"
-msgstr "Movi al dosierujo:"
-
-#: ../../mod/settings.php:768
-msgid "Display Settings"
-msgstr "Ekranagordoj"
-
-#: ../../mod/settings.php:774
-msgid "Display Theme:"
-msgstr "Vidiga etoso:"
-
-#: ../../mod/settings.php:775
-msgid "Update browser every xx seconds"
-msgstr "Ĝisdatigu retesplorilon ĉiu xxx sekundoj"
-
-#: ../../mod/settings.php:775
-msgid "Minimum of 10 seconds, no maximum"
-msgstr "Minimume 10 sekundoj, sen maksimumo"
-
-#: ../../mod/settings.php:776
-msgid "Number of items to display on the network page:"
-msgstr "Kvanto da elementoj kiuj estos montrata ĉe la reto paÄo."
-
-#: ../../mod/settings.php:776
-msgid "Maximum of 100 items"
-msgstr "Maksimume 100 eroj"
-
-#: ../../mod/settings.php:777
-msgid "Don't show emoticons"
-msgstr "Ne montru ridetulojn"
-
-#: ../../mod/settings.php:848
-msgid "Normal Account Page"
-msgstr "Normala KontopaÄo"
-
-#: ../../mod/settings.php:849
-msgid "This account is a normal personal profile"
-msgstr "Tiu konto estas normala persona profilo"
-
-#: ../../mod/settings.php:852
-msgid "Soapbox Page"
-msgstr "Soapbox PaÄo"
-
-#: ../../mod/settings.php:853
-msgid "Automatically approve all connection/friend requests as read-only fans"
-msgstr "Aŭtomate konfirmi ĉiujn kontaktpetojn kiel nurlegaj admirantoj"
-
-#: ../../mod/settings.php:856
-msgid "Community Forum/Celebrity Account"
-msgstr "Komunuma Forumo/Eminentula Konto"
-
-#: ../../mod/settings.php:857
-msgid ""
-"Automatically approve all connection/friend requests as read-write fans"
-msgstr "Aŭtomate konfirmi ĉiujn kontaktpetojn kiel admirantoj kapable legi kaj skribi"
-
-#: ../../mod/settings.php:860
-msgid "Automatic Friend Page"
-msgstr "AÅ­tomata Amiko PaÄo"
-
-#: ../../mod/settings.php:861
-msgid "Automatically approve all connection/friend requests as friends"
-msgstr "Aŭtomate konfirmi ĉiujn kontaktpetojn kiel amikoj"
-
-#: ../../mod/settings.php:864
-msgid "Private Forum [Experimental]"
-msgstr "Privata Forumo [eksperimenta]"
-
-#: ../../mod/settings.php:865
-msgid "Private forum - approved members only"
-msgstr "Privata forumo - nur por aprobitaj membroj"
-
-#: ../../mod/settings.php:877
-msgid "OpenID:"
-msgstr "OpenID:"
-
-#: ../../mod/settings.php:877
-msgid "(Optional) Allow this OpenID to login to this account."
-msgstr "(Nedeviga) Permesi atingon al la konton al ĉi tio OpenID."
-
-#: ../../mod/settings.php:887
-msgid "Publish your default profile in your local site directory?"
-msgstr "Publikigi vian defaÅ­ltan profilon en la loka reteja katalogo?"
-
-#: ../../mod/settings.php:893
-msgid "Publish your default profile in the global social directory?"
-msgstr "Publikigi vian defaÅ­ltan profilon en la tutmonda interkona katalogo?"
-
-#: ../../mod/settings.php:901
-msgid "Hide your contact/friend list from viewers of your default profile?"
-msgstr "KaÅi vian liston de kontaktoj/amiko al spektantoj de via defaÅ­lta profilo?"
-
-#: ../../mod/settings.php:905
-msgid "Hide your profile details from unknown viewers?"
-msgstr "KaÅi viajn profilajn detalojn al nekonataj spektantoj?"
-
-#: ../../mod/settings.php:910
-msgid "Allow friends to post to your profile page?"
-msgstr "Ĉu amikoj povu afiÅi al via profilo?"
-
-#: ../../mod/settings.php:916
-msgid "Allow friends to tag your posts?"
-msgstr "Ĉu amikoj povu aldoni markojn al viaj afiÅoj?"
-
-#: ../../mod/settings.php:922
-msgid "Allow us to suggest you as a potential friend to new members?"
-msgstr "Ĉu ni povu sugesti vin kiel amiko al novaj membroj?"
-
-#: ../../mod/settings.php:928
-msgid "Permit unknown people to send you private mail?"
-msgstr "Permesigi nekonatulojn sendi retpoÅton al vi?"
-
-#: ../../mod/settings.php:936
-msgid "Profile is <strong>not published</strong>."
-msgstr "Profilo <strong>ne estas publika</strong>."
-
-#: ../../mod/settings.php:939 ../../mod/profile_photo.php:213
-msgid "or"
-msgstr "aÅ­"
-
-#: ../../mod/settings.php:944
-msgid "Your Identity Address is"
-msgstr "Via identeca adreso estas"
-
-#: ../../mod/settings.php:955
-msgid "Automatically expire posts after this many days:"
-msgstr "Automatike senvalidigi afiÅojn post tiom da tagoj:"
-
-#: ../../mod/settings.php:955
-msgid "If empty, posts will not expire. Expired posts will be deleted"
-msgstr "Se malplena, afiÅoj neniam senvalidiÄos. Senvalidigitajn afiÅon estos forviÅata"
-
-#: ../../mod/settings.php:956
-msgid "Advanced expiration settings"
-msgstr "Detalaj agordoj rilate al senvalidiÄo"
-
-#: ../../mod/settings.php:957
-msgid "Advanced Expiration"
-msgstr "Detala senvalidiÄo"
-
-#: ../../mod/settings.php:958
-msgid "Expire posts:"
-msgstr "Senvalidigi afiÅojn:"
-
-#: ../../mod/settings.php:959
-msgid "Expire personal notes:"
-msgstr "Senvalidigi personajn notojn:"
-
-#: ../../mod/settings.php:960
-msgid "Expire starred posts:"
-msgstr "Senvalidigi steligitajn afiÅojn:"
-
-#: ../../mod/settings.php:961
-msgid "Expire photos:"
-msgstr "Senvalidigi bildojn:"
-
-#: ../../mod/settings.php:962
-msgid "Only expire posts by others:"
-msgstr "Nur senvalidigi afiÅojn de aliaj: "
-
-#: ../../mod/settings.php:969
-msgid "Account Settings"
-msgstr "Kontoagordoj"
-
-#: ../../mod/settings.php:977
-msgid "Password Settings"
-msgstr "Agordoj pri Pasvorto"
-
-#: ../../mod/settings.php:978
-msgid "New Password:"
-msgstr "Nova pasvorto:"
-
-#: ../../mod/settings.php:979
-msgid "Confirm:"
-msgstr "Konfirmi:"
-
-#: ../../mod/settings.php:979
-msgid "Leave password fields blank unless changing"
-msgstr "Lasu pasvortkampojn malplenaj se vi ne ÅanÄas la pasvorton."
-
-#: ../../mod/settings.php:983
-msgid "Basic Settings"
-msgstr "Bazaj Agordoj"
-
-#: ../../mod/settings.php:984 ../../include/profile_advanced.php:15
-msgid "Full Name:"
-msgstr "Plena Nomo:"
-
-#: ../../mod/settings.php:985
-msgid "Email Address:"
-msgstr "RetpoÅtadreso:"
-
-#: ../../mod/settings.php:986
-msgid "Your Timezone:"
-msgstr "Via Horzono:"
-
-#: ../../mod/settings.php:987
-msgid "Default Post Location:"
-msgstr "DefaÅ­lta Loko por AfiÅoj:"
-
-#: ../../mod/settings.php:988
-msgid "Use Browser Location:"
-msgstr "Uzu Lokon laÅ­ Retesplorilo:"
-
-#: ../../mod/settings.php:991
-msgid "Security and Privacy Settings"
-msgstr "Agordoj pri Sekureco kaj Privateco"
-
-#: ../../mod/settings.php:993
-msgid "Maximum Friend Requests/Day:"
-msgstr "Taga maksimumo da kontaktpetoj:"
-
-#: ../../mod/settings.php:993 ../../mod/settings.php:1012
-msgid "(to prevent spam abuse)"
-msgstr "(por malhelpi spamaĵojn)"
-
-#: ../../mod/settings.php:994
-msgid "Default Post Permissions"
-msgstr "DefaÅ­ltaj permesoj por afiÅoj"
-
-#: ../../mod/settings.php:995
-msgid "(click to open/close)"
-msgstr "(klaku por malfermi/fermi)"
-
-#: ../../mod/settings.php:1012
-msgid "Maximum private messages per day from unknown people:"
-msgstr "Taga maksimumo da privataj mesaÄoj."
-
-#: ../../mod/settings.php:1015
-msgid "Notification Settings"
-msgstr "Agordoj pri Atentigoj"
-
-#: ../../mod/settings.php:1016
-msgid "By default post a status message when:"
-msgstr "DefaÅ­lte afiÅi statmesaÄon okaze de:"
-
-#: ../../mod/settings.php:1017
-msgid "accepting a friend request"
-msgstr "akcepti kontaktpeton"
-
-#: ../../mod/settings.php:1018
-msgid "joining a forum/community"
-msgstr "aliÄi forumon/komunumon"
-
-#: ../../mod/settings.php:1019
-msgid "making an <em>interesting</em> profile change"
-msgstr "fari <em>interesan</em> profilÅanÄon"
-
-#: ../../mod/settings.php:1020
-msgid "Send a notification email when:"
-msgstr "Sendu atentiga repoÅton se:"
-
-#: ../../mod/settings.php:1021
-msgid "You receive an introduction"
-msgstr "Vi ricevas inviton"
-
-#: ../../mod/settings.php:1022
-msgid "Your introductions are confirmed"
-msgstr "Viaj prezentoj estas konfirmata."
-
-#: ../../mod/settings.php:1023
-msgid "Someone writes on your profile wall"
-msgstr "Iu skribas je via profila muro."
-
-#: ../../mod/settings.php:1024
-msgid "Someone writes a followup comment"
-msgstr "Iu skribas sekvan komenton"
-
-#: ../../mod/settings.php:1025
-msgid "You receive a private message"
-msgstr "Vi ricevas privatan mesaÄon."
-
-#: ../../mod/settings.php:1026
-msgid "You receive a friend suggestion"
-msgstr "Vi ricevas amikosugeston"
-
-#: ../../mod/settings.php:1027
-msgid "You are tagged in a post"
-msgstr "Vi estas markita en afiÅon"
-
-#: ../../mod/settings.php:1030
-msgid "Advanced Account/Page Type Settings"
-msgstr "Detalaj Agordoj pri Tipo de Konto/PaÄo."
-
-#: ../../mod/settings.php:1031
-msgid "Change the behaviour of this account for special situations"
-msgstr "Agordi la teniÄon de la konto en specialaj situacioj"
-
-#: ../../mod/manage.php:90
-msgid "Manage Identities and/or Pages"
-msgstr "Administri identecojn kaj/aÅ­ paÄojn."
-
-#: ../../mod/manage.php:93
-msgid ""
-"Toggle between different identities or community/group pages which share "
-"your account details or which you have been granted \"manage\" permissions"
-msgstr "Åœalti inter aliaj identecojn aj komunumaj/grupaj paÄoj kiuj kunhavas viajn kontajn detalojn au por kiuj vi havas \"administranto\" permesojn."
-
-#: ../../mod/manage.php:95
-msgid "Select an identity to manage: "
-msgstr "Elektu identencon por administrado:"
-
-#: ../../mod/network.php:97
-msgid "Search Results For:"
-msgstr "Rezultoj de la serĉado pri:"
-
-#: ../../mod/network.php:137 ../../mod/search.php:16
-msgid "Remove term"
-msgstr "ForviÅu terminon"
-
-#: ../../mod/network.php:146 ../../mod/search.php:13
-msgid "Saved Searches"
-msgstr "Konservitaj Serĉadoj"
-
-#: ../../mod/network.php:147 ../../include/group.php:244
-msgid "add"
-msgstr "aldoni"
-
-#: ../../mod/network.php:287
-msgid "Commented Order"
-msgstr "Komenta Ordo"
-
-#: ../../mod/network.php:290
-msgid "Sort by Comment Date"
-msgstr "Ordigi laÅ­ Dato de Komento"
-
-#: ../../mod/network.php:293
-msgid "Posted Order"
-msgstr "AfiÅita Ordo"
-
-#: ../../mod/network.php:296
-msgid "Sort by Post Date"
-msgstr "Ordigi laÅ­ Dato de AfiÅado"
-
-#: ../../mod/network.php:303
-msgid "Posts that mention or involve you"
-msgstr "AfiÅoj menciantaj vin aÅ­ pri vi"
-
-#: ../../mod/network.php:306
-msgid "New"
-msgstr "Nova"
-
-#: ../../mod/network.php:309
-msgid "Activity Stream - by date"
-msgstr "Fluo de Aktiveco - laÅ­ dato"
-
-#: ../../mod/network.php:312
-msgid "Starred"
-msgstr "Steligita"
-
-#: ../../mod/network.php:315
-msgid "Favourite Posts"
-msgstr "Favorigitaj AfiÅoj"
-
-#: ../../mod/network.php:318
-msgid "Shared Links"
-msgstr "Kunhavigitaj Ligiloj"
-
-#: ../../mod/network.php:321
-msgid "Interesting Links"
-msgstr "Interesaj Ligiloj"
-
-#: ../../mod/network.php:388
-#, php-format
-msgid "Warning: This group contains %s member from an insecure network."
-msgid_plural ""
-"Warning: This group contains %s members from an insecure network."
-msgstr[0] "Averto: La grupo enhavas %s membron el nesekuraj retejoj."
-msgstr[1] "Averto: La grupo enhavas %s membrojn el nesekuraj retejoj."
-
-#: ../../mod/network.php:391
-msgid "Private messages to this group are at risk of public disclosure."
-msgstr "La privateco de privataj mesaÄoj al ĉi tiu grupo ne ĉiam estas garantita."
-
-#: ../../mod/network.php:436
-msgid "No such group"
-msgstr "Grupo ne estas trovita"
-
-#: ../../mod/network.php:447
-msgid "Group is empty"
-msgstr "Grupo estas malplena"
-
-#: ../../mod/network.php:451
-msgid "Group: "
-msgstr "Grupo:"
-
-#: ../../mod/network.php:461
-msgid "Contact: "
-msgstr "Kontakto:"
-
-#: ../../mod/network.php:463
-msgid "Private messages to this person are at risk of public disclosure."
-msgstr "La privateco de privataj mesaÄoj al ĉi tiu persono ne ĉiam estas garantita."
-
-#: ../../mod/network.php:468
-msgid "Invalid contact."
-msgstr "Nevalida kontakto."
-
-#: ../../mod/notes.php:44 ../../boot.php:1565
-msgid "Personal Notes"
-msgstr "Personaj Notoj"
-
-#: ../../mod/notes.php:63 ../../mod/filer.php:30
-#: ../../addon/facebook/facebook.php:768
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:187
-#: ../../addon/dav/layout.fnk.php:384 ../../include/text.php:652
-msgid "Save"
-msgstr "Konservi"
-
-#: ../../mod/wallmessage.php:42 ../../mod/wallmessage.php:112
-#, php-format
-msgid "Number of daily wall messages for %s exceeded. Message failed."
-msgstr "Number of daily wall messages for %s exceeded. MessaÄo malsukcesis."
-
-#: ../../mod/wallmessage.php:56 ../../mod/message.php:66
-msgid "No recipient selected."
-msgstr "Neniom da ricevontoj."
-
-#: ../../mod/wallmessage.php:59
-msgid "Unable to check your home location."
-msgstr "Ne eblas kontroli vian hejmlokon."
-
-#: ../../mod/wallmessage.php:62 ../../mod/message.php:73
-msgid "Message could not be sent."
-msgstr "Ne povas sendi la mesaÄon."
-
-#: ../../mod/wallmessage.php:65 ../../mod/message.php:76
-msgid "Message collection failure."
-msgstr "Malsukcese provis kolekti mesaÄojn."
-
-#: ../../mod/wallmessage.php:68 ../../mod/message.php:79
-msgid "Message sent."
-msgstr "MesaÄo estas sendita."
-
-#: ../../mod/wallmessage.php:86 ../../mod/wallmessage.php:95
-msgid "No recipient."
-msgstr "Neniom da ricevontoj."
-
-#: ../../mod/wallmessage.php:124 ../../mod/message.php:172
-#: ../../include/conversation.php:947
-msgid "Please enter a link URL:"
-msgstr "Bonvolu entajpu adreson de ligilo:"
-
-#: ../../mod/wallmessage.php:131 ../../mod/message.php:200
-msgid "Send Private Message"
-msgstr "Sendi Privatan MesaÄon"
-
-#: ../../mod/wallmessage.php:132
-#, php-format
-msgid ""
-"If you wish for %s to respond, please check that the privacy settings on "
-"your site allow private mail from unknown senders."
-msgstr "Se vi deziras ke %s respondu, bonvolu kontroli ke la privatecaj agordoj je via retejo permesas privatajn mesaÄojn de nekonataj sendantoj."
-
-#: ../../mod/wallmessage.php:133 ../../mod/message.php:201
-#: ../../mod/message.php:399
-msgid "To:"
-msgstr "Al:"
-
-#: ../../mod/wallmessage.php:134 ../../mod/message.php:206
-#: ../../mod/message.php:401
-msgid "Subject:"
-msgstr "Temo:"
-
-#: ../../mod/wallmessage.php:140 ../../mod/message.php:210
-#: ../../mod/message.php:404 ../../mod/invite.php:113
-msgid "Your message:"
-msgstr "Via mesaÄo:"
-
-#: ../../mod/newmember.php:6
-msgid "Welcome to Friendica"
-msgstr "Bonvenon ĉe Friendica"
-
-#: ../../mod/newmember.php:8
-msgid "New Member Checklist"
-msgstr "Kontrololisto por Novaj Membroj"
-
-#: ../../mod/newmember.php:12
-msgid ""
-"We would like to offer some tips and links to help make your experience "
-"enjoyable. Click any item to visit the relevant page. A link to this page "
-"will be visible from your home page for two weeks after your initial "
-"registration and then will quietly disappear."
-msgstr "Lasu nin oferi al vi kelkajn konsolojn kaj ligilojn por plifaciligi vian komencon. Klaku iun elementon por viziti la rilatan paÄon. Ligilo al ĉi tiu paÄo videblos en via hejmpaÄo dum du semajnojn post via komenca membriÄo. Post du semajnoj, la ligilo silente malaperos. "
-
-#: ../../mod/newmember.php:16
-msgid ""
-"On your <em>Quick Start</em> page - find a brief introduction to your "
-"profile and network tabs, connect to Facebook, make some new connections, "
-"and find some groups to join."
-msgstr "Je via <em>Rapida Starto</em> paÄo - trovu mallongan enigon pri via profilo kaj la reto folioj, konektu al Facebook, faru novajn konektojn kaj trovu aliÄindajn grupojn."
-
-#: ../../mod/newmember.php:18
-msgid ""
-"On your <em>Settings</em> page - change your initial password. Also make a "
-"note of your Identity Address. This looks just like an email address - and "
-"will be useful in making friends on the free social web."
-msgstr "Bonvolu ÅanÄi vian pasvorton ĉe <em>Agordoj</em>. Krome, memorigu vian identadreson. Äœi aspektas kiel retpoÅtadreso kaj estas bezonata por konekti al novaj amikon en la libera interkona reto."
-
-#: ../../mod/newmember.php:20
-msgid ""
-"Review the other settings, particularly the privacy settings. An unpublished"
-" directory listing is like having an unlisted phone number. In general, you "
-"should probably publish your listing - unless all of your friends and "
-"potential friends know exactly how to find you."
-msgstr "Kontrolu la aliajn agordojn, precipe la privatecajn agordojn. Nepublikigita profilo similas al havi telefonnumberon ne registrata en iu telefonlibro. Äœenerale vi eble volas publikigi vian profilon. Alie, viaj amikoj kaj estontaj amikoj bezonas scii kiel rekte trovi vin."
-
-#: ../../mod/newmember.php:22
-msgid ""
-"Upload a profile photo if you have not done so already. Studies have shown "
-"that people with real photos of themselves are ten times more likely to make"
-" friends than people who do not."
-msgstr "EnÅuti profilbildon se vi ankoraÅ­ ne havas Äin. LaÅ­ studoj, homoj kun realaj biloj de si mem trovas novajn amikon duope pli probable ol homoj sen reala bildo."
-
-#: ../../mod/newmember.php:25
-msgid ""
-"Authorise the Facebook Connector if you currently have a Facebook account "
-"and we will (optionally) import all your Facebook friends and conversations."
-msgstr "Rajtigu la Facebook Konektilon se vi nuntempe havas Facebook konton, kaj ni (nedeviga) enportu viajn Facebook amikojn kaj konversaciojn."
-
-#: ../../mod/newmember.php:27
-msgid ""
-"<em>If</em> this is your own personal server, installing the Facebook addon "
-"may ease your transition to the free social web."
-msgstr "<em>Se</tm> ĉi tiu estas via propra TTT servilo, instali la Facebook kromprogramon eble plifaciligos la transpason al la libera interkona reto."
-
-#: ../../mod/newmember.php:32
-msgid ""
-"Enter your email access information on your Connector Settings page if you "
-"wish to import and interact with friends or mailing lists from your email "
-"INBOX"
-msgstr "Entajpu la akreditaĵojn por via retpoÅtkonto en la konektilagordoj se vi volas importi aÅ­ interagi kun amikoj aÅ­ dissendlistoj pere de via retkesto."
-
-#: ../../mod/newmember.php:34
-msgid ""
-"Edit your <strong>default</strong> profile to your liking. Review the "
-"settings for hiding your list of friends and hiding the profile from unknown"
-" visitors."
-msgstr "Redakti viajn <strong>defaÅ­ltan</strong> profilon kiel vi Åatas Äin. Kontrolu la agordojn por kaÅi vian kontaktliston aÅ­ kaÅi vian profilon al nekonataj vizitantoj."
-
-#: ../../mod/newmember.php:36
-msgid ""
-"Set some public keywords for your default profile which describe your "
-"interests. We may be able to find other people with similar interests and "
-"suggest friendships."
-msgstr "Aldonu publikajn Ålosilvortojn al via defaÅ­lta profilo, kiuj priskribas viajn interesojn. Ni eble povas trovi aliajn uzantojn kun similaj interesoj kaj sugesti amikojn."
-
-#: ../../mod/newmember.php:38
-msgid ""
-"Your Contacts page is your gateway to managing friendships and connecting "
-"with friends on other networks. Typically you enter their address or site "
-"URL in the <em>Add New Contact</em> dialog."
-msgstr "Via kontaktpaÄo estas via portalo por administri amikojn kaj konekti kun amikoj en aliaj retoj. Vi kutime entajpas iliajn adreson aÅ­ URL adreso en la <em>Aldonu Novan Kontakton</em> dialogon."
-
-#: ../../mod/newmember.php:40
-msgid ""
-"The Directory page lets you find other people in this network or other "
-"federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on "
-"their profile page. Provide your own Identity Address if requested."
-msgstr "Ĉe la Katalogo vi povas trovi aliajn homojn en ĉi tiu retejo, au en aliaj federaciaj retejoj. Elrigardi al <em>Konekti</em> aÅ­ <em>Sekvi</em> ligiloj ĉe iliaj profilo. Donu vian propran Identecan Adreson se la retejo demandas Äin."
-
-#: ../../mod/newmember.php:42
-msgid ""
-"On the side panel of the Contacts page are several tools to find new "
-"friends. We can match people by interest, look up people by name or "
-"interest, and provide suggestions based on network relationships. On a brand"
-" new site, friend suggestions will usually begin to be populated within 24 "
-"hours."
-msgstr "En la flanka strio de la Kontaktoj paÄo troviÄas kelkajn helpilojn por trovi novajn amikojn. Ni povas automate trovi amikojn per interesoj, serĉu ilin per nomo aÅ­ intereso kaj faras sugestojn baze de estantaj kontaktoj. Ĉe nova instalita retejo, la unuaj sugestoj kutime aperas post 24 horoj."
-
-#: ../../mod/newmember.php:44
-msgid ""
-"Once you have made some friends, organize them into private conversation "
-"groups from the sidebar of your Contacts page and then you can interact with"
-" each group privately on your Network page."
-msgstr "Kiam vi trovis kelkajn novajn amikojn, ordigi ilin en grupoj por privata komunikado en la flanka strio de via Kontaktoj paÄo, kaj vi povas private komuniki kun ili je via Reto paÄo."
-
-#: ../../mod/newmember.php:46
-msgid ""
-"Our <strong>help</strong> pages may be consulted for detail on other program"
-" features and resources."
-msgstr "Niaj <strong>Helpo</strong> paÄoj enhavas pli da detaloj pri aliaj programaj trajtoj."
-
-#: ../../mod/attach.php:8
-msgid "Item not available."
-msgstr "Elemento ne disponeblas."
-
-#: ../../mod/attach.php:20
-msgid "Item was not found."
-msgstr "Elemento ne trovita."
-
-#: ../../mod/group.php:29
-msgid "Group created."
-msgstr "Grupo estas kreita."
-
-#: ../../mod/group.php:35
-msgid "Could not create group."
-msgstr "Ne povas krei grupon."
-
-#: ../../mod/group.php:47 ../../mod/group.php:137
-msgid "Group not found."
-msgstr "Grupo ne estas trovita."
-
-#: ../../mod/group.php:60
-msgid "Group name changed."
-msgstr "La nomo de la grupo estas ÅanÄita."
-
-#: ../../mod/group.php:72 ../../mod/profperm.php:19 ../../index.php:308
-msgid "Permission denied"
-msgstr "Malpermesita"
-
-#: ../../mod/group.php:90
-msgid "Create a group of contacts/friends."
-msgstr "Krei grupon da kontaktoj/amikoj."
-
-#: ../../mod/group.php:91 ../../mod/group.php:177
-msgid "Group Name: "
-msgstr "Nomo de la grupo:"
-
-#: ../../mod/group.php:110
-msgid "Group removed."
-msgstr "Grupo estas forviÅita."
-
-#: ../../mod/group.php:112
-msgid "Unable to remove group."
-msgstr "Ne eblas forviÅi grupon."
-
-#: ../../mod/group.php:176
-msgid "Group Editor"
-msgstr "Grupa redaktilo"
-
-#: ../../mod/group.php:189
-msgid "Members"
-msgstr "Anoj"
-
-#: ../../mod/group.php:221 ../../mod/profperm.php:105
-msgid "Click on a contact to add or remove."
-msgstr "Klaku kontakton por aldoni aÅ­ forviÅi."
-
-#: ../../mod/profperm.php:25 ../../mod/profperm.php:55
-msgid "Invalid profile identifier."
-msgstr "Nevaliada profila identigilo."
-
-#: ../../mod/profperm.php:101
-msgid "Profile Visibility Editor"
-msgstr "Redaktilo por profila videbleco."
-
-#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:128
-#: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:84
-#: ../../include/nav.php:50 ../../boot.php:1544
-msgid "Profile"
-msgstr "Profilo"
-
-#: ../../mod/profperm.php:114
-msgid "Visible To"
-msgstr "Videbla Al"
-
-#: ../../mod/profperm.php:130
-msgid "All Contacts (with secure profile access)"
-msgstr "Ĉiuj Kontaktoj (kun sekura atingo al la profilo)"
-
-#: ../../mod/viewconnections.php:39
-msgid "No contacts."
-msgstr "Neniu kontaktojn."
-
-#: ../../mod/viewconnections.php:76 ../../include/text.php:589
-msgid "View Contacts"
-msgstr "Vidi Kontaktojn"
-
-#: ../../mod/register.php:88 ../../mod/regmod.php:52
-#, php-format
-msgid "Registration details for %s"
-msgstr "Detaloj de la registrado por %s"
-
-#: ../../mod/register.php:96
-msgid ""
-"Registration successful. Please check your email for further instructions."
-msgstr "Registrado sukcesis. Bonvolu kontroli vian retpoÅton por pli da instruoj."
-
-#: ../../mod/register.php:100
-msgid "Failed to send email message. Here is the message that failed."
-msgstr "Malsukcesis sendi retpoÅton. Jen la malsukcesa mesaÄo."
-
-#: ../../mod/register.php:105
-msgid "Your registration can not be processed."
-msgstr "Mi ne povas prilabori vian registradon."
-
-#: ../../mod/register.php:142
-#, php-format
-msgid "Registration request at %s"
-msgstr "Peto de registrado al %s"
-
-#: ../../mod/register.php:151
-msgid "Your registration is pending approval by the site owner."
-msgstr "Via registrado bezonas apropbon de la administranto."
-
-#: ../../mod/register.php:189
-msgid ""
-"This site has exceeded the number of allowed daily account registrations. "
-"Please try again tomorrow."
-msgstr "La retejo transiras la maksimuman kvanton da ĉiutagaj kontaj registradoj. Bonvolu provi denove morgaŭ."
-
-#: ../../mod/register.php:215
-msgid ""
-"You may (optionally) fill in this form via OpenID by supplying your OpenID "
-"and clicking 'Register'."
-msgstr "Vi ankaÅ­ (nedeviga) povas plenigi la formularon per OpenID se vi provizas vian OpenID adreson kaj klakas 'Registri'."
-
-#: ../../mod/register.php:216
-msgid ""
-"If you are not familiar with OpenID, please leave that field blank and fill "
-"in the rest of the items."
-msgstr "Se vi ne konas OpenID, bonvolu lasi tiun kampon malplena kaj entajpu la aliajn elementojn."
-
-#: ../../mod/register.php:217
-msgid "Your OpenID (optional): "
-msgstr "Via OpenID (nedeviga):"
-
-#: ../../mod/register.php:231
-msgid "Include your profile in member directory?"
-msgstr "Aldoni vian profilon al la membrokatalogo?"
-
-#: ../../mod/register.php:251
-msgid "Membership on this site is by invitation only."
-msgstr "MembriÄi ĉi tie nur eblas laÅ­ invito."
-
-#: ../../mod/register.php:252
-msgid "Your invitation ID: "
-msgstr "Via invita idento: "
-
-#: ../../mod/register.php:255 ../../mod/admin.php:421
-msgid "Registration"
-msgstr "Registrado"
-
-#: ../../mod/register.php:263
-msgid "Your Full Name (e.g. Joe Smith): "
-msgstr "Via Plena Nomo (e.g. Joe Smith): "
-
-#: ../../mod/register.php:264
-msgid "Your Email Address: "
-msgstr "Via RetpoÅtadreso: "
-
-#: ../../mod/register.php:265
-msgid ""
-"Choose a profile nickname. This must begin with a text character. Your "
-"profile address on this site will then be "
-"'<strong>nickname@$sitename</strong>'."
-msgstr "Elektu kaÅnomon por la profilo. Tiu bezonas komenci kun teksta litero. Poste, via profila adreso ĉi tie estos: '<strong>kaÅnomo@$sitename</strong>'."
-
-#: ../../mod/register.php:266
-msgid "Choose a nickname: "
-msgstr "Elektu kaÅnomon: "
-
-#: ../../mod/register.php:269 ../../include/nav.php:81 ../../boot.php:828
-msgid "Register"
-msgstr "Registri"
-
-#: ../../mod/dirfind.php:26
-msgid "People Search"
-msgstr "Serĉi Membrojn"
-
-#: ../../mod/like.php:144 ../../mod/like.php:301 ../../mod/tagger.php:70
-#: ../../addon/facebook/facebook.php:1584
-#: ../../addon/communityhome/communityhome.php:158
-#: ../../addon/communityhome/communityhome.php:167
-#: ../../view/theme/diabook/theme.php:565
-#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1710
-#: ../../include/conversation.php:48 ../../include/conversation.php:57
-#: ../../include/conversation.php:121 ../../include/conversation.php:130
-msgid "status"
-msgstr "staton"
-
-#: ../../mod/like.php:161 ../../addon/facebook/facebook.php:1588
-#: ../../addon/communityhome/communityhome.php:172
-#: ../../view/theme/diabook/theme.php:579 ../../include/diaspora.php:1726
-#: ../../include/conversation.php:65
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s Åatas la %3$s de %2$s"
-
-#: ../../mod/like.php:163 ../../include/conversation.php:68
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr "%1$s malÅatas la %3$s de %2$s"
-
-#: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:159
-#: ../../mod/admin.php:700 ../../mod/admin.php:899 ../../mod/display.php:37
-#: ../../mod/display.php:142 ../../include/items.php:3334
-msgid "Item not found."
-msgstr "Elemento ne estas trovita."
-
-#: ../../mod/viewsrc.php:7
-msgid "Access denied."
-msgstr "Atingo nepermesita."
-
-#: ../../mod/fbrowser.php:25 ../../view/theme/diabook/theme.php:130
-#: ../../include/nav.php:51 ../../boot.php:1550
-msgid "Photos"
-msgstr "Bildoj"
-
-#: ../../mod/fbrowser.php:96
-msgid "Files"
-msgstr "Dosieroj"
-
-#: ../../mod/regmod.php:61
-msgid "Account approved."
-msgstr "Konto aprobita."
-
-#: ../../mod/regmod.php:98
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registraĵo por %s senvalidigita."
-
-#: ../../mod/regmod.php:110
-msgid "Please login."
-msgstr "Bonvolu ensaluti."
-
-#: ../../mod/item.php:89
-msgid "Unable to locate original post."
-msgstr "Ne eblas trovi originalan afiÅon."
-
-#: ../../mod/item.php:258
-msgid "Empty post discarded."
-msgstr "ForviÅis malplenan afiÅon."
-
-#: ../../mod/item.php:379 ../../mod/wall_upload.php:115
-#: ../../mod/wall_upload.php:124 ../../mod/wall_upload.php:131
-#: ../../include/message.php:144
-msgid "Wall Photos"
-msgstr "Muraj Bildoj"
-
-#: ../../mod/item.php:784
-msgid "System error. Post not saved."
-msgstr "Sistema eraro. AfiÅo ne registrita."
-
-#: ../../mod/item.php:809
-#, php-format
-msgid ""
-"This message was sent to you by %s, a member of the Friendica social "
-"network."
-msgstr "Ĉi mesaÄo estas sendita al vi de %s, membro de la Friendica interkona reto."
-
-#: ../../mod/item.php:811
-#, php-format
-msgid "You may visit them online at %s"
-msgstr "Vi povas viziti ilin rete ĉe %s"
-
-#: ../../mod/item.php:812
-msgid ""
-"Please contact the sender by replying to this post if you do not wish to "
-"receive these messages."
-msgstr "Bonvolu rispondi al ĉi mesaÄo kaj kontaktu la sendinto se vi ne volas ricevi tiujn mesaÄojn."
-
-#: ../../mod/item.php:814
-#, php-format
-msgid "%s posted an update."
-msgstr "%s publikigis afiÅon."
-
-#: ../../mod/profile_photo.php:30
-msgid "Image uploaded but image cropping failed."
-msgstr "Bildo estas alÅutita, sed malsukcesis tranĉi la bildon."
-
-#: ../../mod/profile_photo.php:63 ../../mod/profile_photo.php:70
-#: ../../mod/profile_photo.php:77 ../../mod/profile_photo.php:266
-#, php-format
-msgid "Image size reduction [%s] failed."
-msgstr "Malsukcesis malpligrandigi [%s] la bildon."
-
-#: ../../mod/profile_photo.php:91
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "ReÅarÄu la paÄon au malplenigu la kaÅmemoro de la retesplorilo se la nova bildo ne tuj aperas."
-
-#: ../../mod/profile_photo.php:101
-msgid "Unable to process image"
-msgstr "Ne eblas procezi bildon."
-
-#: ../../mod/profile_photo.php:117 ../../mod/wall_upload.php:77
-#, php-format
-msgid "Image exceeds size limit of %d"
-msgstr "Bildo estas pli granda ol la limito %d"
-
-#: ../../mod/profile_photo.php:209
-msgid "Upload File:"
-msgstr "AlÅuti dosieron:"
-
-#: ../../mod/profile_photo.php:210
-msgid "Upload Profile Photo"
-msgstr "AlÅuti profilbildon"
-
-#: ../../mod/profile_photo.php:211
-msgid "Upload"
-msgstr "AlÅuti"
-
-#: ../../mod/profile_photo.php:213
-msgid "skip this step"
-msgstr "Preterpasi tian paÅon"
-
-#: ../../mod/profile_photo.php:213
-msgid "select a photo from your photo albums"
-msgstr "elekti bildon el viaj albumoj"
-
-#: ../../mod/profile_photo.php:226
-msgid "Crop Image"
-msgstr "Stuci Bildon"
-
-#: ../../mod/profile_photo.php:227
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Bonvolu agordi la stuco de la bildo por optimuma aspekto."
-
-#: ../../mod/profile_photo.php:229
-msgid "Done Editing"
-msgstr "Finigi Redaktado"
-
-#: ../../mod/profile_photo.php:257
-msgid "Image uploaded successfully."
-msgstr "Bildo estas sukcese enÅutita."
-
-#: ../../mod/hcard.php:10
-msgid "No profile"
-msgstr "Neniu profilo"
-
-#: ../../mod/removeme.php:45 ../../mod/removeme.php:48
-msgid "Remove My Account"
-msgstr "Forigi Mian Konton"
-
-#: ../../mod/removeme.php:46
-msgid ""
-"This will completely remove your account. Once this has been done it is not "
-"recoverable."
-msgstr "Tio tute forigos vian konton. Kiam farita, la konto ne estas restaÅ­rebla."
-
-#: ../../mod/removeme.php:47
-msgid "Please enter your password for verification:"
-msgstr "Bonvolu entajpi vian pasvorton por kontrolado:"
-
-#: ../../mod/message.php:9 ../../include/nav.php:131
-msgid "New Message"
-msgstr "Nova MesaÄo"
-
-#: ../../mod/message.php:70
-msgid "Unable to locate contact information."
-msgstr "Ne eblas trovi kontaktajn informojn."
-
-#: ../../mod/message.php:120
-msgid "Message deleted."
-msgstr "MesaÄo estas forviÅita."
-
-#: ../../mod/message.php:150
-msgid "Conversation removed."
-msgstr "Dialogo estas forviÅita."
-
-#: ../../mod/message.php:247
-msgid "No messages."
-msgstr "Neniom da mesaÄoj."
-
-#: ../../mod/message.php:254
-#, php-format
-msgid "Unknown sender - %s"
-msgstr "Nekonata sendanto - %s"
-
-#: ../../mod/message.php:257
-#, php-format
-msgid "You and %s"
-msgstr "Vi kaj %s"
-
-#: ../../mod/message.php:260
-#, php-format
-msgid "%s and You"
-msgstr "%s kaj vi"
-
-#: ../../mod/message.php:270 ../../mod/message.php:392
-msgid "Delete conversation"
-msgstr "ForviÅi dialogon"
-
-#: ../../mod/message.php:273
-msgid "D, d M Y - g:i A"
-msgstr "D, d M Y - g:i A"
-
-#: ../../mod/message.php:275
-#, php-format
-msgid "%d message"
-msgid_plural "%d messages"
-msgstr[0] "%d mesaÄo"
-msgstr[1] "%d mesaÄoj"
-
-#: ../../mod/message.php:310
-msgid "Message not available."
-msgstr "MesaÄo nedisponebla."
-
-#: ../../mod/message.php:375
-msgid "Delete message"
-msgstr "ForviÅu mesaÄon"
-
-#: ../../mod/message.php:394
-msgid ""
-"No secure communications available. You <strong>may</strong> be able to "
-"respond from the sender's profile page."
-msgstr "Sekura komunikado ne disponeblas. Vi <strong>eble</strong> povus respondi sur la profilpaÄo de la sendanto."
-
-#: ../../mod/message.php:398
-msgid "Send Reply"
-msgstr "Respondi"
-
-#: ../../mod/allfriends.php:34
-#, php-format
-msgid "Friends of %s"
-msgstr "Amikoj de %s"
-
-#: ../../mod/allfriends.php:40
-msgid "No friends to display."
-msgstr "Neniom da amiko al montri."
-
-#: ../../mod/admin.php:55
-msgid "Theme settings updated."
-msgstr "Gisdatigis agordojn pri etosoj."
-
-#: ../../mod/admin.php:96 ../../mod/admin.php:419
-msgid "Site"
-msgstr "Retejo"
-
-#: ../../mod/admin.php:97 ../../mod/admin.php:655 ../../mod/admin.php:667
-msgid "Users"
-msgstr "Uzantoj"
-
-#: ../../mod/admin.php:98 ../../mod/admin.php:749 ../../mod/admin.php:791
-msgid "Plugins"
-msgstr "Kromprogramoj"
-
-#: ../../mod/admin.php:99 ../../mod/admin.php:954 ../../mod/admin.php:990
-msgid "Themes"
-msgstr "Etosoj"
-
-#: ../../mod/admin.php:100
-msgid "DB updates"
-msgstr "DB Äisdatigoj"
-
-#: ../../mod/admin.php:115 ../../mod/admin.php:122 ../../mod/admin.php:1077
-msgid "Logs"
-msgstr "Protokoloj"
-
-#: ../../mod/admin.php:120 ../../include/nav.php:146
-msgid "Admin"
-msgstr "Administrado"
-
-#: ../../mod/admin.php:121
-msgid "Plugin Features"
-msgstr "Kromprogramaj Trajtoj"
-
-#: ../../mod/admin.php:123
-msgid "User registrations waiting for confirmation"
-msgstr "Uzantaj registradoj atendante konfirmon"
-
-#: ../../mod/admin.php:183 ../../mod/admin.php:637
-msgid "Normal Account"
-msgstr "Normala konto"
-
-#: ../../mod/admin.php:184 ../../mod/admin.php:638
-msgid "Soapbox Account"
-msgstr "Soapbox Konto"
-
-#: ../../mod/admin.php:185 ../../mod/admin.php:639
-msgid "Community/Celebrity Account"
-msgstr "Komunuma/eminentula Konto"
-
-#: ../../mod/admin.php:186 ../../mod/admin.php:640
-msgid "Automatic Friend Account"
-msgstr "AÅ­tomata Amika Konto"
-
-#: ../../mod/admin.php:205
-msgid "Message queues"
-msgstr "MesaÄvicoj"
-
-#: ../../mod/admin.php:210 ../../mod/admin.php:418 ../../mod/admin.php:654
-#: ../../mod/admin.php:748 ../../mod/admin.php:790 ../../mod/admin.php:953
-#: ../../mod/admin.php:989 ../../mod/admin.php:1076
-msgid "Administration"
-msgstr "Administrado"
-
-#: ../../mod/admin.php:211
-msgid "Summary"
-msgstr "Resumo"
-
-#: ../../mod/admin.php:213
-msgid "Registered users"
-msgstr "Registrataj uzantoj"
-
-#: ../../mod/admin.php:215
-msgid "Pending registrations"
-msgstr "Okazontaj registradoj"
-
-#: ../../mod/admin.php:216
-msgid "Version"
-msgstr "Versio"
-
-#: ../../mod/admin.php:218
-msgid "Active plugins"
-msgstr "Åœaltitaj kromprogramoj"
-
-#: ../../mod/admin.php:357
-msgid "Site settings updated."
-msgstr "Äœisdatigis retejaj agordoj."
-
-#: ../../mod/admin.php:405
-msgid "Closed"
-msgstr "Ferma"
-
-#: ../../mod/admin.php:406
-msgid "Requires approval"
-msgstr "Bezonas aprobon"
-
-#: ../../mod/admin.php:407
-msgid "Open"
-msgstr "Malferma"
-
-#: ../../mod/admin.php:411
-msgid "No SSL policy, links will track page SSL state"
-msgstr "Sen SSL strategio. Ligiloj sekvos la SSL staton de la paÄo."
-
-#: ../../mod/admin.php:412
-msgid "Force all links to use SSL"
-msgstr "Devigi ke ĉiuj ligiloj uzu SSL."
-
-#: ../../mod/admin.php:413
-msgid "Self-signed certificate, use SSL for local links only (discouraged)"
-msgstr "Memsubskribita atestilo, nur uzu SSL por lokaj ligiloj (malkuraÄigata)"
-
-#: ../../mod/admin.php:422
-msgid "File upload"
-msgstr "AlÅuto"
-
-#: ../../mod/admin.php:423
-msgid "Policies"
-msgstr "Politiko"
-
-#: ../../mod/admin.php:424
-msgid "Advanced"
-msgstr "Altnivela"
-
-#: ../../mod/admin.php:428 ../../addon/statusnet/statusnet.php:558
-msgid "Site name"
-msgstr "Nomo de retejo"
-
-#: ../../mod/admin.php:429
-msgid "Banner/Logo"
-msgstr "Emblemo"
-
-#: ../../mod/admin.php:430
-msgid "System language"
-msgstr "Sistema lingvo"
-
-#: ../../mod/admin.php:431
-msgid "System theme"
-msgstr "Sistema etoso"
-
-#: ../../mod/admin.php:431
-msgid ""
-"Default system theme - may be over-ridden by user profiles - <a href='#' "
-"id='cnftheme'>change theme settings</a>"
-msgstr "DefaÅ­lta sistema etoso - transpasebla de uzantprofiloj - <a href='#' id='cnftheme'>redakti agordoj pri etosoj</a>"
-
-#: ../../mod/admin.php:432
-msgid "SSL link policy"
-msgstr "Strategio por SSL ligiloj"
-
-#: ../../mod/admin.php:432
-msgid "Determines whether generated links should be forced to use SSL"
-msgstr "Difinas ĉu generotaj ligiloj devige uzu SSL."
-
-#: ../../mod/admin.php:433
-msgid "Maximum image size"
-msgstr "Maksimuma bildgrando"
-
-#: ../../mod/admin.php:433
-msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
-msgstr "Maksimuma grando en bajtoj por alÅutotaj bildoj. DefaÅ­lte 0, kio signifas neniu limito."
-
-#: ../../mod/admin.php:435
-msgid "Register policy"
-msgstr "Interkonsento pri registrado"
-
-#: ../../mod/admin.php:436
-msgid "Register text"
-msgstr "Interkonsento teksto"
-
-#: ../../mod/admin.php:436
-msgid "Will be displayed prominently on the registration page."
-msgstr "Tio estos eminente montrata en la registro paÄo."
-
-#: ../../mod/admin.php:437
-msgid "Accounts abandoned after x days"
-msgstr "Kontoj forlasitaj post x tagoj"
-
-#: ../../mod/admin.php:437
-msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
-msgstr "Mi ne malÅparu energion por enketi aliajn retejojn pri forlasitaj kontoj. Entajpu 0 por ne uzi templimo."
-
-#: ../../mod/admin.php:438
-msgid "Allowed friend domains"
-msgstr "Permesitaj amikaj domainoj"
-
-#: ../../mod/admin.php:438
-msgid ""
-"Comma separated list of domains which are allowed to establish friendships "
-"with this site. Wildcards are accepted. Empty to allow any domains"
-msgstr "Perkome disigita listo da domajnoj kiuj rajtas konstrui amikecojn kun ĉi tiu retejo. Ĵokeroj eblas. Malplena por rajtigi ĉiujn ajn domajnojn."
-
-#: ../../mod/admin.php:439
-msgid "Allowed email domains"
-msgstr "Permesitaj retpoÅtaj domajnoj"
-
-#: ../../mod/admin.php:439
-msgid ""
-"Comma separated list of domains which are allowed in email addresses for "
-"registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains"
-msgstr "Perkome disigita listo da domajnoj kiuj uzeblas kiel retpoÅtaj adresoj en novaj registradoj. Ä´okeroj eblas. Malplena por rajtigi ĉiujn ajn domajnojn."
-
-#: ../../mod/admin.php:440
-msgid "Block public"
-msgstr "Bloki publike"
-
-#: ../../mod/admin.php:440
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently logged in."
-msgstr "Elektu por bloki publikan atingon al ĉiuj alie publikajn paÄojn en ĉi tiu retejo kiam vi ne estas ensalutita."
-
-#: ../../mod/admin.php:441
-msgid "Force publish"
-msgstr "Devigi publikigon"
-
-#: ../../mod/admin.php:441
-msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
-msgstr "Elektu por devigi la registradon en la loka katalogo al ĉiuj profiloj en ĉi tiu retejo."
-
-#: ../../mod/admin.php:442
-msgid "Global directory update URL"
-msgstr "Äœenerala adreso por Äisdatigi la katalogon"
-
-#: ../../mod/admin.php:442
-msgid ""
-"URL to update the global directory. If this is not set, the global directory"
-" is completely unavailable to the application."
-msgstr "URL adreso por Äisdatigi la tutmondan katalogon. Se ne agordita, la tutmonda katatolge tute ne disponeblas al la programo."
-
-#: ../../mod/admin.php:444
-msgid "Block multiple registrations"
-msgstr "Bloki pluroblajn registradojn."
-
-#: ../../mod/admin.php:444
-msgid "Disallow users to register additional accounts for use as pages."
-msgstr "Malpermesi al uzantoj la permeson por registri pluajn kontojn kiel paÄoj."
-
-#: ../../mod/admin.php:445
-msgid "OpenID support"
-msgstr "Subteno por OpenID"
-
-#: ../../mod/admin.php:445
-msgid "OpenID support for registration and logins."
-msgstr "Subteni OpenID por registrado kaj ensaluto."
-
-#: ../../mod/admin.php:446
-msgid "Fullname check"
-msgstr "Kontroli plenan nomon"
-
-#: ../../mod/admin.php:446
-msgid ""
-"Force users to register with a space between firstname and lastname in Full "
-"name, as an antispam measure"
-msgstr "Kiel kontraÅ­spamilo, devigi uzantoj al registrado kun spaceto inter la persona nomo kaj la familia nomo."
-
-#: ../../mod/admin.php:447
-msgid "UTF-8 Regular expressions"
-msgstr "UTF-8 regulaj exprimoj"
-
-#: ../../mod/admin.php:447
-msgid "Use PHP UTF8 regular expressions"
-msgstr "Uzi PHP UTF8 regulajn esprimojn."
-
-#: ../../mod/admin.php:448
-msgid "Show Community Page"
-msgstr "Montri Komunuma PaÄo"
-
-#: ../../mod/admin.php:448
-msgid ""
-"Display a Community page showing all recent public postings on this site."
-msgstr "Montri komunuma paÄo kun ĉiuj ĵusaj afiÅoj en ĉi tiu retejo."
-
-#: ../../mod/admin.php:449
-msgid "Enable OStatus support"
-msgstr "Åœalti subtenon por OStatus"
-
-#: ../../mod/admin.php:449
-msgid ""
-"Provide built-in OStatus (identi.ca, status.net, etc.) compatibility. All "
-"communications in OStatus are public, so privacy warnings will be "
-"occasionally displayed."
-msgstr "Provizi integritan OStatus (identi.ca, status.net ktp) subtenon. Ĉiuj komunikadoj en OStatus estas publikaj, do privatecaj avertoj aperos de tempo al tempo."
-
-#: ../../mod/admin.php:450
-msgid "Enable Diaspora support"
-msgstr "Åœalti subtenon por Diaspora"
-
-#: ../../mod/admin.php:450
-msgid "Provide built-in Diaspora network compatibility."
-msgstr "Provizi integritan Diaspora subtenon."
-
-#: ../../mod/admin.php:451
-msgid "Only allow Friendica contacts"
-msgstr "Nur permesigi Friendica kontaktojn"
-
-#: ../../mod/admin.php:451
-msgid ""
-"All contacts must use Friendica protocols. All other built-in communication "
-"protocols disabled."
-msgstr "Ĉiuj kontaktoj devas uzi Friendica protokolojn. Ĉiuj aliaj komunikaj protokoloj malaktivita."
-
-#: ../../mod/admin.php:452
-msgid "Verify SSL"
-msgstr "Kontroli SSL"
-
-#: ../../mod/admin.php:452
-msgid ""
-"If you wish, you can turn on strict certificate checking. This will mean you"
-" cannot connect (at all) to self-signed SSL sites."
-msgstr "Se vi deziras, vi povas aktivigi severan kontroladon de SSL atestiloj. Pro tio, vie (tute) ne eblos konekti al SSL retejoj kun memsubskribitaj atestiloj."
-
-#: ../../mod/admin.php:453
-msgid "Proxy user"
-msgstr "Uzantnomo por retperanto"
-
-#: ../../mod/admin.php:454
-msgid "Proxy URL"
-msgstr "URL adreso de retperanto"
-
-#: ../../mod/admin.php:455
-msgid "Network timeout"
-msgstr "Reta tempolimo"
-
-#: ../../mod/admin.php:455
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
-msgstr "Valoro en sekundoj. Uzu 0 por mallimitigi (ne rekomendata)."
-
-#: ../../mod/admin.php:456
-msgid "Delivery interval"
-msgstr "Intervalo de liverado"
-
-#: ../../mod/admin.php:456
-msgid ""
-"Delay background delivery processes by this many seconds to reduce system "
-"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
-"for large dedicated servers."
-msgstr "Malfruigi fonan liveradon dum tiom da sekundoj por malpliigi la Åargon de la sistemo. Rekomendoj: 4-5 por komunaj serviloj, 2-3 por virtualaj privataj serviloj, 0-1 por grandaj dediĉitaj serviloj."
-
-#: ../../mod/admin.php:457
-msgid "Poll interval"
-msgstr "Enketintervalo"
-
-#: ../../mod/admin.php:457
-msgid ""
-"Delay background polling processes by this many seconds to reduce system "
-"load. If 0, use delivery interval."
-msgstr "Malfruigi fonajn enketprocesojn je tiom da sekundoj por malpliigi la Åargon de la sistemo. Se 0, uzas la liverintervalon."
-
-#: ../../mod/admin.php:458
-msgid "Maximum Load Average"
-msgstr "Maksimuma Meza SistemÅargo"
-
-#: ../../mod/admin.php:458
-msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
-msgstr "Maksimuma sistemÅargo post kiu livero- kaj enketprocesoj estos prokrastinataj. - DefaÅ­lte 50."
-
-#: ../../mod/admin.php:472
-msgid "Update has been marked successful"
-msgstr "Äœisdatigo estas markita sukcesa"
-
-#: ../../mod/admin.php:482
-#, php-format
-msgid "Executing %s failed. Check system logs."
-msgstr "Ne sukcesis plenumi %s. Kontrolu la sistemprotokolojn."
-
-#: ../../mod/admin.php:485
-#, php-format
-msgid "Update %s was successfully applied."
-msgstr "Sukcese aplikis la Äisdatigo %s."
-
-#: ../../mod/admin.php:489
-#, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
-msgstr "Äœisdatigo %s ne liveris elirstaton. "
-
-#: ../../mod/admin.php:492
-#, php-format
-msgid "Update function %s could not be found."
-msgstr "Ne troveblas Äisdatigo funkcio %s."
-
-#: ../../mod/admin.php:507
-msgid "No failed updates."
-msgstr "Neniom da malsukcesaj Äisdatigoj."
-
-#: ../../mod/admin.php:511
-msgid "Failed Updates"
-msgstr "Malsukcesaj Äœisdatigoj"
-
-#: ../../mod/admin.php:512
-msgid ""
-"This does not include updates prior to 1139, which did not return a status."
-msgstr "Ne inkluzivas Äisdatigojn antaÅ­ 1139, kiuj ne liveris elirstaton."
-
-#: ../../mod/admin.php:513
-msgid "Mark success (if update was manually applied)"
-msgstr "Marki sukcesa (se la Äisdatigo estas instalita mane)"
-
-#: ../../mod/admin.php:514
-msgid "Attempt to execute this update step automatically"
-msgstr "Provi automate plenumi ĉi tian paÅon de la Äisdatigo."
-
-#: ../../mod/admin.php:539
-#, php-format
-msgid "%s user blocked/unblocked"
-msgid_plural "%s users blocked/unblocked"
-msgstr[0] "Blokis/malblokis %s uzanton"
-msgstr[1] "Blokis/malblokis %s uzantojn"
-
-#: ../../mod/admin.php:546
-#, php-format
-msgid "%s user deleted"
-msgid_plural "%s users deleted"
-msgstr[0] "%s uzanto forviÅita"
-msgstr[1] "%s uzanto forviÅitaj"
-
-#: ../../mod/admin.php:585
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Uzanto '%s' forviÅita"
-
-#: ../../mod/admin.php:593
-#, php-format
-msgid "User '%s' unblocked"
-msgstr "Uzanto '%s' malblokita"
-
-#: ../../mod/admin.php:593
-#, php-format
-msgid "User '%s' blocked"
-msgstr "Uzanto '%s' blokita"
-
-#: ../../mod/admin.php:657
-msgid "select all"
-msgstr "elekti ĉiujn"
-
-#: ../../mod/admin.php:658
-msgid "User registrations waiting for confirm"
-msgstr "RegistriÄoj atendante aprobon"
-
-#: ../../mod/admin.php:659
-msgid "Request date"
-msgstr "Dato de peto"
-
-#: ../../mod/admin.php:659 ../../mod/admin.php:668
-#: ../../include/contact_selectors.php:79
-msgid "Email"
-msgstr "RetpoÅto"
-
-#: ../../mod/admin.php:660
-msgid "No registrations."
-msgstr "Neniom da registriÄoj."
-
-#: ../../mod/admin.php:662
-msgid "Deny"
-msgstr "Negi"
-
-#: ../../mod/admin.php:668
-msgid "Register date"
-msgstr "Dato de registrado"
-
-#: ../../mod/admin.php:668
-msgid "Last login"
-msgstr "Plej ĵusa ensaluto"
-
-#: ../../mod/admin.php:668
-msgid "Last item"
-msgstr "Plej ĵusa elemento"
-
-#: ../../mod/admin.php:668
-msgid "Account"
-msgstr "Konto"
-
-#: ../../mod/admin.php:670
-msgid ""
-"Selected users will be deleted!\\n\\nEverything these users had posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "La elektitaj uzantkontoj estas forviÅotaj!\\n\\nĈiuj elementoj kiujn ili afiÅis je la retpaÄo estos permanente forviÅitaj.\\n\\nĈu vi certas?"
-
-#: ../../mod/admin.php:671
-msgid ""
-"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
-"site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "La uzanto {0} estas forviÅota!\\n\\nĈiuj elementoj kiujn li afiÅis je la retpaÄo estos permanente forviÅitaj.\\n\\nĈu vi certas?"
-
-#: ../../mod/admin.php:712
-#, php-format
-msgid "Plugin %s disabled."
-msgstr "Kromprogramo %s estas malÅaltita."
-
-#: ../../mod/admin.php:716
-#, php-format
-msgid "Plugin %s enabled."
-msgstr "Kromprogramo %s estas Åaltita."
-
-#: ../../mod/admin.php:726 ../../mod/admin.php:924
-msgid "Disable"
-msgstr "MalÅalti"
-
-#: ../../mod/admin.php:728 ../../mod/admin.php:926
-msgid "Enable"
-msgstr "Åœalti"
-
-#: ../../mod/admin.php:750 ../../mod/admin.php:955
-msgid "Toggle"
-msgstr "Åœalti/MalÅalti"
-
-#: ../../mod/admin.php:758 ../../mod/admin.php:965
-msgid "Author: "
-msgstr "AÅ­toro: "
-
-#: ../../mod/admin.php:759 ../../mod/admin.php:966
-msgid "Maintainer: "
-msgstr "Prizorganto: "
-
-#: ../../mod/admin.php:888
-msgid "No themes found."
-msgstr "Ne trovis etosojn."
-
-#: ../../mod/admin.php:947
-msgid "Screenshot"
-msgstr "Ekrankopio"
-
-#: ../../mod/admin.php:995
-msgid "[Experimental]"
-msgstr "[Eksperimenta]"
-
-#: ../../mod/admin.php:996
-msgid "[Unsupported]"
-msgstr "[Nesubtenata]"
-
-#: ../../mod/admin.php:1023
-msgid "Log settings updated."
-msgstr "Protokolagordoj Äisdatigitaj."
-
-#: ../../mod/admin.php:1079
-msgid "Clear"
-msgstr "ForviÅi"
-
-#: ../../mod/admin.php:1085
-msgid "Debugging"
-msgstr "Sencimigado"
-
-#: ../../mod/admin.php:1086
-msgid "Log file"
-msgstr "Protokolo"
-
-#: ../../mod/admin.php:1086
-msgid ""
-"Must be writable by web server. Relative to your Friendica top-level "
-"directory."
-msgstr "Devas esti skribebla de la retservilo. Relativa al via plej supra Friendica dosierujo."
-
-#: ../../mod/admin.php:1087
-msgid "Log level"
-msgstr "Protokolnivelo"
-
-#: ../../mod/admin.php:1137
-msgid "Close"
-msgstr "Fermi"
-
-#: ../../mod/admin.php:1143
-msgid "FTP Host"
-msgstr "FTP Servilo"
-
-#: ../../mod/admin.php:1144
-msgid "FTP Path"
-msgstr "FTP Vojo"
-
-#: ../../mod/admin.php:1145
-msgid "FTP User"
-msgstr "FTP Uzanto"
-
-#: ../../mod/admin.php:1146
-msgid "FTP Password"
-msgstr "FTP Pasvorto"
-
-#: ../../mod/profile.php:21 ../../boot.php:993
-msgid "Requested profile is not available."
-msgstr "La petita profilo ne disponeblas."
-
-#: ../../mod/profile.php:141 ../../mod/display.php:75
-msgid "Access to this profile has been restricted."
-msgstr "Atingo al ĉi tio profilo estas limitigita"
-
-#: ../../mod/profile.php:166
-msgid "Tips for New Members"
-msgstr "Konsilo por novaj membroj"
-
-#: ../../mod/ping.php:185
-msgid "{0} wants to be your friend"
-msgstr "{0} volas amikiÄi kun vi"
-
-#: ../../mod/ping.php:190
-msgid "{0} sent you a message"
-msgstr "{0} sendis mesaÄon al vi"
-
-#: ../../mod/ping.php:195
-msgid "{0} requested registration"
-msgstr "{0} petis registradon"
-
-#: ../../mod/ping.php:201
-#, php-format
-msgid "{0} commented %s's post"
-msgstr "{0} komentis pri la afiÅo de %s"
-
-#: ../../mod/ping.php:206
-#, php-format
-msgid "{0} liked %s's post"
-msgstr "{0} satis la afiÅon de %s"
-
-#: ../../mod/ping.php:211
-#, php-format
-msgid "{0} disliked %s's post"
-msgstr "{0} malÅatis la afiÅon de %s"
-
-#: ../../mod/ping.php:216
-#, php-format
-msgid "{0} is now friends with %s"
-msgstr "{0} amikiÄis kun %s"
-
-#: ../../mod/ping.php:221
-msgid "{0} posted"
-msgstr "{0} afiÅis"
-
-#: ../../mod/ping.php:226
-#, php-format
-msgid "{0} tagged %s's post with #%s"
-msgstr "{0} markis la afiÅon de %s kun #%s"
-
-#: ../../mod/ping.php:232
-msgid "{0} mentioned you in a post"
-msgstr "{0} menciis vin en afiÅo"
-
-#: ../../mod/nogroup.php:58
-msgid "Contacts who are not members of a group"
-msgstr "Kontaktoj kiuj ne estas en iu grupo"
-
-#: ../../mod/openid.php:24
-msgid "OpenID protocol error. No ID returned."
-msgstr "Eraro en OpenID protokolo. Ne resendis identecon."
-
-#: ../../mod/openid.php:53
-msgid ""
-"Account not found and OpenID registration is not permitted on this site."
-msgstr "Ne trovis kontoj, kaj registrado per OpenID estas malpermesita ĉi tie."
-
-#: ../../mod/openid.php:93 ../../include/auth.php:99
-#: ../../include/auth.php:162
-msgid "Login failed."
-msgstr "Ensalutado malsukcesis."
-
-#: ../../mod/follow.php:27
-msgid "Contact added"
-msgstr "Aldonis kontakton"
-
-#: ../../mod/common.php:42
-msgid "Common Friends"
-msgstr "Komunaj Amikoj"
-
-#: ../../mod/common.php:78
-msgid "No contacts in common."
-msgstr "Neniom da komunaj kontaktoj."
-
-#: ../../mod/display.php:135
-msgid "Item has been removed."
-msgstr "Elemento estas forviÅita."
-
-#: ../../mod/apps.php:4
-msgid "Applications"
-msgstr "Programoj"
-
-#: ../../mod/apps.php:7
-msgid "No installed applications."
-msgstr "Neniom da instalitaj programoj."
-
-#: ../../mod/search.php:83 ../../include/text.php:649
-#: ../../include/text.php:650 ../../include/nav.php:91
-msgid "Search"
-msgstr "Serĉi"
-
-#: ../../mod/profiles.php:21 ../../mod/profiles.php:410
-#: ../../mod/profiles.php:524 ../../mod/dfrn_confirm.php:62
-msgid "Profile not found."
-msgstr "Profilo ne trovita."
-
-#: ../../mod/profiles.php:31
-msgid "Profile Name is required."
-msgstr "Nomo de profilo estas bezonata."
-
-#: ../../mod/profiles.php:155
-msgid "Marital Status"
-msgstr "Amrilata Stato"
-
-#: ../../mod/profiles.php:159
-msgid "Romantic Partner"
-msgstr "Kora Partnero"
-
-#: ../../mod/profiles.php:163
-msgid "Likes"
-msgstr "Åœatoj"
-
-#: ../../mod/profiles.php:167
-msgid "Dislikes"
-msgstr "MalÅatoj"
-
-#: ../../mod/profiles.php:171
-msgid "Work/Employment"
-msgstr "Laboro"
-
-#: ../../mod/profiles.php:174
-msgid "Religion"
-msgstr "Religio"
-
-#: ../../mod/profiles.php:178
-msgid "Political Views"
-msgstr "Politikaj Opinioj"
-
-#: ../../mod/profiles.php:182
-msgid "Gender"
-msgstr "Sekso"
-
-#: ../../mod/profiles.php:186
-msgid "Sexual Preference"
-msgstr "Seksa Prefero"
-
-#: ../../mod/profiles.php:190
-msgid "Homepage"
-msgstr "HejmpaÄo"
-
-#: ../../mod/profiles.php:194
-msgid "Interests"
-msgstr "Interesoj"
-
-#: ../../mod/profiles.php:198
-msgid "Address"
-msgstr "Adreso"
-
-#: ../../mod/profiles.php:205 ../../addon/dav/layout.fnk.php:310
-msgid "Location"
-msgstr "Loko"
-
-#: ../../mod/profiles.php:288
-msgid "Profile updated."
-msgstr "Profilo Äisdatigita."
-
-#: ../../mod/profiles.php:355
-msgid " and "
-msgstr " kaj "
-
-#: ../../mod/profiles.php:363
-msgid "public profile"
-msgstr "publika profilo"
-
-#: ../../mod/profiles.php:366
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s ÅanÄis %2$s al &ldquo;%3$s&rdquo;"
-
-#: ../../mod/profiles.php:367
-#, php-format
-msgid " - Visit %1$s's %2$s"
-msgstr " - Vizitu la %2$s de %1$s"
-
-#: ../../mod/profiles.php:370
-#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s havas Äisdatigigan %2$s, ÅanÄas %3$s."
-
-#: ../../mod/profiles.php:429
-msgid "Profile deleted."
-msgstr "Profilo forviÅita."
-
-#: ../../mod/profiles.php:447 ../../mod/profiles.php:481
-msgid "Profile-"
-msgstr "Profilo-"
-
-#: ../../mod/profiles.php:466 ../../mod/profiles.php:508
-msgid "New profile created."
-msgstr "Nova profilo kreita."
-
-#: ../../mod/profiles.php:487
-msgid "Profile unavailable to clone."
-msgstr "Ne eblas kopii profilon."
-
-#: ../../mod/profiles.php:545
-msgid "Hide your contact/friend list from viewers of this profile?"
-msgstr "KaÅi vian liston de kontaktoj/amikoj al vidantoj de ĉi-tio profilo?"
-
-#: ../../mod/profiles.php:568
-msgid "Edit Profile Details"
-msgstr "Redakti Detalojn de Profilo"
-
-#: ../../mod/profiles.php:570
-msgid "View this profile"
-msgstr "Vidi la profilon."
-
-#: ../../mod/profiles.php:571
-msgid "Create a new profile using these settings"
-msgstr "Krei novan profilon kun tiaj agordoj"
-
-#: ../../mod/profiles.php:572
-msgid "Clone this profile"
-msgstr "Kopii ĉi tiun profilon"
-
-#: ../../mod/profiles.php:573
-msgid "Delete this profile"
-msgstr "ForviÅi ĉi tiun profilon"
-
-#: ../../mod/profiles.php:574
-msgid "Profile Name:"
-msgstr "Nomo de Profilo:"
-
-#: ../../mod/profiles.php:575
-msgid "Your Full Name:"
-msgstr "Via Plena Nomo:"
-
-#: ../../mod/profiles.php:576
-msgid "Title/Description:"
-msgstr "Titolo/Priskribo:"
-
-#: ../../mod/profiles.php:577
-msgid "Your Gender:"
-msgstr "Via Sekso:"
-
-#: ../../mod/profiles.php:578
-#, php-format
-msgid "Birthday (%s):"
-msgstr "NaskiÄtago (%s):"
-
-#: ../../mod/profiles.php:579
-msgid "Street Address:"
-msgstr "Adreso:"
-
-#: ../../mod/profiles.php:580
-msgid "Locality/City:"
-msgstr "Urbo:"
-
-#: ../../mod/profiles.php:581
-msgid "Postal/Zip Code:"
-msgstr "PoÅtkodo:"
-
-#: ../../mod/profiles.php:582
-msgid "Country:"
-msgstr "Lando:"
-
-#: ../../mod/profiles.php:583
-msgid "Region/State:"
-msgstr "Åœtato:"
-
-#: ../../mod/profiles.php:584
-msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
-msgstr "<span class=\"heart\">&hearts;</span> Civita Stato:"
-
-#: ../../mod/profiles.php:585
-msgid "Who: (if applicable)"
-msgstr "Kiu (se aplikeble):"
-
-#: ../../mod/profiles.php:586
-msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
-msgstr "Ekzemploj: cathy123, Cathy Williams, cathy@example.com"
-
-#: ../../mod/profiles.php:587
-msgid "Since [date]:"
-msgstr "Ekde [dato]:"
-
-#: ../../mod/profiles.php:588 ../../include/profile_advanced.php:46
-msgid "Sexual Preference:"
-msgstr "Seksa Prefero:"
-
-#: ../../mod/profiles.php:589
-msgid "Homepage URL:"
-msgstr "Adreso de HejmpaÄo:"
-
-#: ../../mod/profiles.php:590 ../../include/profile_advanced.php:50
-msgid "Hometown:"
-msgstr "Hejmurbo:"
-
-#: ../../mod/profiles.php:591 ../../include/profile_advanced.php:54
-msgid "Political Views:"
-msgstr "Politikaj Opinioj:"
-
-#: ../../mod/profiles.php:592
-msgid "Religious Views:"
-msgstr "Religiaj Opinioj:"
-
-#: ../../mod/profiles.php:593
-msgid "Public Keywords:"
-msgstr "Publikaj Ålosilvortoj:"
-
-#: ../../mod/profiles.php:594
-msgid "Private Keywords:"
-msgstr "Privataj Ålosilvortoj:"
-
-#: ../../mod/profiles.php:595 ../../include/profile_advanced.php:62
-msgid "Likes:"
-msgstr "Åœatoj:"
-
-#: ../../mod/profiles.php:596 ../../include/profile_advanced.php:64
-msgid "Dislikes:"
-msgstr "MalÅatoj:"
-
-#: ../../mod/profiles.php:597
-msgid "Example: fishing photography software"
-msgstr "Ekzemple: fiÅkapti fotografio programaro"
-
-#: ../../mod/profiles.php:598
-msgid "(Used for suggesting potential friends, can be seen by others)"
-msgstr "(Por sugesti amikoj. Videbla al aliaj.)"
-
-#: ../../mod/profiles.php:599
-msgid "(Used for searching profiles, never shown to others)"
-msgstr "(Por serĉi profilojn. Neniam videbla al aliaj.)"
-
-#: ../../mod/profiles.php:600
-msgid "Tell us about yourself..."
-msgstr "Diru al ni pri vi..."
-
-#: ../../mod/profiles.php:601
-msgid "Hobbies/Interests"
-msgstr "Åœatokupoj/Interesoj"
-
-#: ../../mod/profiles.php:602
-msgid "Contact information and Social Networks"
-msgstr "Kontaktaj informoj kaj Interkonaj Retejoj"
-
-#: ../../mod/profiles.php:603
-msgid "Musical interests"
-msgstr "Muzikaj interesoj"
-
-#: ../../mod/profiles.php:604
-msgid "Books, literature"
-msgstr "Libroj, literaturo"
-
-#: ../../mod/profiles.php:605
-msgid "Television"
-msgstr "Televido"
-
-#: ../../mod/profiles.php:606
-msgid "Film/dance/culture/entertainment"
-msgstr "Filmoj/dancoj/arto/amuzaĵoj"
-
-#: ../../mod/profiles.php:607
-msgid "Love/romance"
-msgstr "Amo/romanco"
-
-#: ../../mod/profiles.php:608
-msgid "Work/employment"
-msgstr "Laboro"
-
-#: ../../mod/profiles.php:609
-msgid "School/education"
-msgstr "Lernejo/eduko"
-
-#: ../../mod/profiles.php:614
-msgid ""
-"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
-"be visible to anybody using the internet."
-msgstr "Ĉi tio estas via <strong>publika</strong> profilo. Ĝi <strong>eble</strong> estas videbla al ĉiuj en interreto. "
-
-#: ../../mod/profiles.php:624 ../../mod/directory.php:111
-msgid "Age: "
-msgstr "AÄo:"
-
-#: ../../mod/profiles.php:663
-msgid "Edit/Manage Profiles"
-msgstr "Redakti/administri Profilojn"
-
-#: ../../mod/profiles.php:664 ../../boot.php:1102
-msgid "Change profile photo"
-msgstr "ÅœanÄi profilbildon"
-
-#: ../../mod/profiles.php:665 ../../boot.php:1103
-msgid "Create New Profile"
-msgstr "Krei novan profilon"
-
-#: ../../mod/profiles.php:676 ../../boot.php:1113
-msgid "Profile Image"
-msgstr "Profilbildo"
-
-#: ../../mod/profiles.php:678 ../../boot.php:1116
-msgid "visible to everybody"
-msgstr "videbla al ĉiuj"
-
-#: ../../mod/profiles.php:679 ../../boot.php:1117
-msgid "Edit visibility"
-msgstr "Redakti videblecon"
-
-#: ../../mod/filer.php:29 ../../include/conversation.php:951
-msgid "Save to Folder:"
-msgstr "Konservi en Dosierujo:"
-
-#: ../../mod/filer.php:29
-msgid "- select -"
-msgstr "- elekti -"
-
-#: ../../mod/tagger.php:103 ../../include/conversation.php:138
-#, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
-msgstr "%1$s markis la %3$s de %2$s kun %4$s"
-
-#: ../../mod/delegate.php:95
-msgid "No potential page delegates located."
-msgstr "Ne trovis delegiteblajn paÄojn."
-
-#: ../../mod/delegate.php:121
-msgid "Delegate Page Management"
-msgstr "Administrado de Delegitajn PaÄojn"
-
-#: ../../mod/delegate.php:123
-msgid ""
-"Delegates are able to manage all aspects of this account/page except for "
-"basic account settings. Please do not delegate your personal account to "
-"anybody that you do not trust completely."
-msgstr "Delegitoj povas administri ĉiujn ecojn de la konto/paÄo, escepte bazaj kontoagordoj. Bonvolu ne delegitigi vian personan konton al iu al kiu vi ne plene fidas."
-
-#: ../../mod/delegate.php:124
-msgid "Existing Page Managers"
-msgstr "Estantaj Administrantoj de la PaÄo"
-
-#: ../../mod/delegate.php:126
-msgid "Existing Page Delegates"
-msgstr "Estantaj Delegitoj de la PaÄo"
-
-#: ../../mod/delegate.php:128
-msgid "Potential Delegates"
-msgstr "Eblaj Delegitoj"
-
-#: ../../mod/delegate.php:131
-msgid "Add"
-msgstr "Aldoni"
-
-#: ../../mod/delegate.php:132
-msgid "No entries."
-msgstr "Neniom da afiÅoj."
-
-#: ../../mod/suggest.php:38 ../../view/theme/diabook/theme.php:626
-#: ../../include/contact_widgets.php:34
-msgid "Friend Suggestions"
-msgstr "Amikosugestoj"
-
-#: ../../mod/suggest.php:44
-msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
-msgstr "Neniu sugestoj disponeblas. Se ĉi tiu estas nova retejo, bonvolu reprovi post 24 horoj."
-
-#: ../../mod/suggest.php:61
-msgid "Ignore/Hide"
-msgstr "Ignori/KaÅi"
-
-#: ../../mod/directory.php:47 ../../view/theme/diabook/theme.php:624
-msgid "Global Directory"
-msgstr "Tutmonda Katalogo"
-
-#: ../../mod/directory.php:55
-msgid "Find on this site"
-msgstr "Trovi en ĉi retejo"
-
-#: ../../mod/directory.php:58
-msgid "Site Directory"
-msgstr "Reteja Katalogo"
-
-#: ../../mod/directory.php:114
-msgid "Gender: "
-msgstr "Sekso:"
-
-#: ../../mod/directory.php:140
-msgid "No entries (some entries may be hidden)."
-msgstr "Neniom da afiÅoj (kelkaj afiÅoj eble ne estas videbla)."
-
-#: ../../mod/invite.php:35
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s: Ne estas valida retpoÅtadreso."
-
-#: ../../mod/invite.php:59
-msgid "Please join us on Friendica"
-msgstr "Bonvolu aliÄi kun ni ĉe Friendica"
-
-#: ../../mod/invite.php:69
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s: La livero de la mesaÄo malsukcesis."
-
-#: ../../mod/invite.php:73
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "Sendis %d mesaÄon."
-msgstr[1] "Sendis %d mesaÄojn."
-
-#: ../../mod/invite.php:92
-msgid "You have no more invitations available"
-msgstr "Vi ne plu disponeblas invitaĵojn"
-
-#: ../../mod/invite.php:100
-#, php-format
-msgid ""
-"Visit %s for a list of public sites that you can join. Friendica members on "
-"other sites can all connect with each other, as well as with members of many"
-" other social networks."
-msgstr "Vizitu %s por listo de publikaj retejoj kie vi povas aliÄi. Anoj de Friendica ĉe aliaj retejoj povas konekti unu kun la alian, kaj ankaÅ­ kun membroj de multaj aliaj retejoj."
-
-#: ../../mod/invite.php:102
-#, php-format
-msgid ""
-"To accept this invitation, please visit and register at %s or any other "
-"public Friendica website."
-msgstr "Por akcepti ĉi tiu invito, bonvolu viziti kaj registriÄi ĉe %s au alia publika Friendica retejo."
-
-#: ../../mod/invite.php:103
-#, php-format
-msgid ""
-"Friendica sites all inter-connect to create a huge privacy-enhanced social "
-"web that is owned and controlled by its members. They can also connect with "
-"many traditional social networks. See %s for a list of alternate Friendica "
-"sites you can join."
-msgstr "Ĉiuj Friendica retejoj interkonektiÄas kaj kune faras grandan altprivatecan interkonan reton, kiun posedas kaj kontrolas Äiaj membroj. Ili ankaÅ­ povas konekti kun multe de tradiciaj interkonaj retejoj. Vidu %s por listo de publikaj retejoj kie vi povas aliÄi."
-
-#: ../../mod/invite.php:106
-msgid ""
-"Our apologies. This system is not currently configured to connect with other"
-" public sites or invite members."
-msgstr "Senkulpigu nin. La sistemo nuntempe ne estas agordita por konekti al aliaj retejoj au inviti membrojn."
-
-#: ../../mod/invite.php:111
-msgid "Send invitations"
-msgstr "Sendi invitojn"
-
-#: ../../mod/invite.php:112
-msgid "Enter email addresses, one per line:"
-msgstr "Entajpu retpoÅtadresojn, po unu por ĉiu linio."
-
-#: ../../mod/invite.php:114
-msgid ""
-"You are cordially invited to join me and other close friends on Friendica - "
-"and help us to create a better social web."
-msgstr "Ni bonkore invitas vin aliÄi kun ni kaj aliaj bonaj amikoj ĉe Friendica. Helpu nin krei pli bonan interkonan reton."
-
-#: ../../mod/invite.php:116
-msgid "You will need to supply this invitation code: $invite_code"
-msgstr "Vi bezonas ĉi-tiun invitkodon: $invite_code"
-
-#: ../../mod/invite.php:116
-msgid ""
-"Once you have registered, please connect with me via my profile page at:"
-msgstr "Kiam vi registris, bonvolu konekti al mi pere de mi profilo ĉe: "
-
-#: ../../mod/invite.php:118
-msgid ""
-"For more information about the Friendica project and why we feel it is "
-"important, please visit http://friendica.com"
-msgstr "Por pli da informoj pri Friendica, kaj kial ni pensas ke Äi estas grava, bonvolu viziti http://friendica.com"
-
-#: ../../mod/dfrn_confirm.php:119
-msgid ""
-"This may occasionally happen if contact was requested by both persons and it"
-" has already been approved."
-msgstr "Tio ĉi okazis de tempo al tempo se ambaÅ­ personoj petas kontakton ka Äi jam estas aprobita."
-
-#: ../../mod/dfrn_confirm.php:237
-msgid "Response from remote site was not understood."
-msgstr "Ne komprenis la rispondon de la fora retejo."
-
-#: ../../mod/dfrn_confirm.php:246
-msgid "Unexpected response from remote site: "
-msgstr "Neatendita rispondo de la fora retejo:"
-
-#: ../../mod/dfrn_confirm.php:254
-msgid "Confirmation completed successfully."
-msgstr "Konfirmo sukcese kompletigita."
-
-#: ../../mod/dfrn_confirm.php:256 ../../mod/dfrn_confirm.php:270
-#: ../../mod/dfrn_confirm.php:277
-msgid "Remote site reported: "
-msgstr "La fora retejo raportis:"
-
-#: ../../mod/dfrn_confirm.php:268
-msgid "Temporary failure. Please wait and try again."
-msgstr "Dumtempa eraro. Bonvolu atendi kaj provi refoje."
-
-#: ../../mod/dfrn_confirm.php:275
-msgid "Introduction failed or was revoked."
-msgstr "La prezento malsukcesis au estas revokita."
-
-#: ../../mod/dfrn_confirm.php:420
-msgid "Unable to set contact photo."
-msgstr "Neeblas agordi la kontaktbildo."
-
-#: ../../mod/dfrn_confirm.php:477 ../../include/diaspora.php:510
-#: ../../include/conversation.php:101
-#, php-format
-msgid "%1$s is now friends with %2$s"
-msgstr "%1$s amikiÄis kun %2$s"
-
-#: ../../mod/dfrn_confirm.php:562
-#, php-format
-msgid "No user record found for '%s' "
-msgstr "Ne trovis uzanton '%s' "
-
-#: ../../mod/dfrn_confirm.php:572
-msgid "Our site encryption key is apparently messed up."
-msgstr "Åœajnas kvazaÅ­ la ĉifroÅlosilo de nia retejo estas fuÅita."
-
-#: ../../mod/dfrn_confirm.php:583
-msgid "Empty site URL was provided or URL could not be decrypted by us."
-msgstr "Malplena adreso de retejo provizita, aŭ ni ne povis malĉifri la adreson."
-
-#: ../../mod/dfrn_confirm.php:604
-msgid "Contact record was not found for you on our site."
-msgstr "Kontakto ne trovita por vi en via retejo."
-
-#: ../../mod/dfrn_confirm.php:618
-#, php-format
-msgid "Site public key not available in contact record for URL %s."
-msgstr "Publika Ålosilo de retejo ne disponeblas en la kontaktrikordo por la URL adreso %s."
-
-#: ../../mod/dfrn_confirm.php:638
-msgid ""
-"The ID provided by your system is a duplicate on our system. It should work "
-"if you try again."
-msgstr "La identeco provizita de via sistemo estas duoblo ĉe nia sistemo. Ĝi eble funkcias se vi provas refoje."
-
-#: ../../mod/dfrn_confirm.php:649
-msgid "Unable to set your contact credentials on our system."
-msgstr "Ne sukcesis agordi la legitimaĵojn de via kontakto ĉe nia sistemo."
-
-#: ../../mod/dfrn_confirm.php:716
-msgid "Unable to update your contact profile details on our system"
-msgstr "Neeblas Äisdatigi viajn profildetalojn ĉe nia sistemo."
-
-#: ../../mod/dfrn_confirm.php:750
-#, php-format
-msgid "Connection accepted at %s"
-msgstr "Konekto akceptita je %s"
-
-#: ../../mod/dfrn_confirm.php:799
-#, php-format
-msgid "%1$s has joined %2$s"
-msgstr "%1$s aliÄis al %2$s"
-
-#: ../../addon/fromgplus/fromgplus.php:29
-msgid "Google+ Import Settings"
-msgstr "Google+ Importo"
-
-#: ../../addon/fromgplus/fromgplus.php:32
-msgid "Enable Google+ Import"
-msgstr "Aktivigi Äœoogle+ Importon"
-
-#: ../../addon/fromgplus/fromgplus.php:35
-msgid "Google Account ID"
-msgstr "Google Konto ID"
-
-#: ../../addon/fromgplus/fromgplus.php:55
-msgid "Google+ Import Settings saved."
-msgstr "Konservis Agordojn por Google+ Importo."
-
-#: ../../addon/facebook/facebook.php:521
-msgid "Facebook disabled"
-msgstr "Facebook malÅaltita"
-
-#: ../../addon/facebook/facebook.php:526
-msgid "Updating contacts"
-msgstr "Mi Äisdatigas la kontaktojn."
-
-#: ../../addon/facebook/facebook.php:549
-msgid "Facebook API key is missing."
-msgstr "La API Ålosilo de Facebook ne estas konata ĉi tie."
-
-#: ../../addon/facebook/facebook.php:556
-msgid "Facebook Connect"
-msgstr "Kontekto al Facebook"
-
-#: ../../addon/facebook/facebook.php:562
-msgid "Install Facebook connector for this account."
-msgstr "Instali la Facebook konektilo por ĉi tiu konto."
-
-#: ../../addon/facebook/facebook.php:569
-msgid "Remove Facebook connector"
-msgstr "Forigi la Facebook konektilon."
-
-#: ../../addon/facebook/facebook.php:574
-msgid ""
-"Re-authenticate [This is necessary whenever your Facebook password is "
-"changed.]"
-msgstr "ReaÅ­tentiÄi [Tio estas bezonata ĉiam kiam vi ÅanÄis vian pasvorton ĉe Facebook.]"
-
-#: ../../addon/facebook/facebook.php:581
-msgid "Post to Facebook by default"
-msgstr "Ĉiam afiÅi al Facebook."
-
-#: ../../addon/facebook/facebook.php:587
-msgid ""
-"Facebook friend linking has been disabled on this site. The following "
-"settings will have no effect."
-msgstr "Ligado kun Facebook amikoj estas malaktivita ĉe tiu retejo. La sekvantaj agordoj do ne havas validecon."
-
-#: ../../addon/facebook/facebook.php:591
-msgid ""
-"Facebook friend linking has been disabled on this site. If you disable it, "
-"you will be unable to re-enable it."
-msgstr "Ligado kun Facebook amikoj estas malaktivita ĉe tiu retejo. Se vi malÅaltas Äin, vi ne eblos ree Åalti Äin."
-
-#: ../../addon/facebook/facebook.php:594
-msgid "Link all your Facebook friends and conversations on this website"
-msgstr "Alligu ĉiujn viajn Facebook amikojn kaj konversaciojn je ĉi-tiu retejo."
-
-#: ../../addon/facebook/facebook.php:596
-msgid ""
-"Facebook conversations consist of your <em>profile wall</em> and your friend"
-" <em>stream</em>."
-msgstr "Facebok konversacioj konsistas el via <em>profilmuro</em> kaj la <em>fluo</em> de viaj amikoj."
-
-#: ../../addon/facebook/facebook.php:597
-msgid "On this website, your Facebook friend stream is only visible to you."
-msgstr "Je ĉi-tiu retejo, la fluo de viaj amikoj ĉe Facebook nur videblas al vi."
-
-#: ../../addon/facebook/facebook.php:598
-msgid ""
-"The following settings determine the privacy of your Facebook profile wall "
-"on this website."
-msgstr "La sekvontaj agordoj difinas la privatecon de via Facebook profilmuro je ĉi-tiu retejo."
-
-#: ../../addon/facebook/facebook.php:602
-msgid ""
-"On this website your Facebook profile wall conversations will only be "
-"visible to you"
-msgstr "Je ĉi-tiu retejo, la conversacioj sur via Facebook profilmuro nur videblas al vi."
-
-#: ../../addon/facebook/facebook.php:607
-msgid "Do not import your Facebook profile wall conversations"
-msgstr "Ne importi konversaciojn de via Facebook profilmuro"
-
-#: ../../addon/facebook/facebook.php:609
-msgid ""
-"If you choose to link conversations and leave both of these boxes unchecked,"
-" your Facebook profile wall will be merged with your profile wall on this "
-"website and your privacy settings on this website will be used to determine "
-"who may see the conversations."
-msgstr "Se vi elektas alligi conversaciojn kaj ne elektas tiujn butonojn, via Facebook profilmuro estas kunigota kun via profilmuro ĉi tie. Viaj privatecaj agordoj ĉi tie difinos kiu povas vidi la coversaciojn."
-
-#: ../../addon/facebook/facebook.php:614
-msgid "Comma separated applications to ignore"
-msgstr "Ignorotaj programoj, disigita per komo"
-
-#: ../../addon/facebook/facebook.php:698
-msgid "Problems with Facebook Real-Time Updates"
-msgstr "Problemoj kun Facebook Realtempaj Äœisdatigoj"
-
-#: ../../addon/facebook/facebook.php:726
-#: ../../include/contact_selectors.php:81
-msgid "Facebook"
-msgstr "Facebook"
-
-#: ../../addon/facebook/facebook.php:727
-msgid "Facebook Connector Settings"
-msgstr "Agordoj por la Facebook konektilo"
-
-#: ../../addon/facebook/facebook.php:742
-msgid "Facebook API Key"
-msgstr "Facebook API Ålosilo"
-
-#: ../../addon/facebook/facebook.php:752
-msgid ""
-"Error: it appears that you have specified the App-ID and -Secret in your "
-".htconfig.php file. As long as they are specified there, they cannot be set "
-"using this form.<br><br>"
-msgstr "Eraro: Åœajnas kvazaÅ­ vi agordis la App-ID kaj la sekreton en via .htconfig.php dosiero. Kiam ili estas agordita tie, vi ne povas agordi Äin en tiu ĉi formo.<br><br>"
-
-#: ../../addon/facebook/facebook.php:757
-msgid ""
-"Error: the given API Key seems to be incorrect (the application access token"
-" could not be retrieved)."
-msgstr "Eraro: La API Ålosilo aspektas malÄusta (ne eblas ricevi la programa atingoĵetono)."
-
-#: ../../addon/facebook/facebook.php:759
-msgid "The given API Key seems to work correctly."
-msgstr "La API Ålosilo Åajne Äuste funkcias."
-
-#: ../../addon/facebook/facebook.php:761
-msgid ""
-"The correctness of the API Key could not be detected. Somthing strange's "
-"going on."
-msgstr "Ne povis kontroli la Äustecon de la API Ålosilo. Ia stranga afero okazas. "
-
-#: ../../addon/facebook/facebook.php:764
-msgid "App-ID / API-Key"
-msgstr "Programo ID / API Åœlosilo"
-
-#: ../../addon/facebook/facebook.php:765
-msgid "Application secret"
-msgstr "Programo sekreto"
-
-#: ../../addon/facebook/facebook.php:766
-#, php-format
-msgid "Polling Interval in minutes (minimum %1$s minutes)"
-msgstr "Intervalo de enketo en minutoj (minimume %1$s minutoj)"
-
-#: ../../addon/facebook/facebook.php:767
-msgid ""
-"Synchronize comments (no comments on Facebook are missed, at the cost of "
-"increased system load)"
-msgstr "Sinkronigi komentojn (vi ricevas ĉiujn komentojn de Facebook, sed la Åargo de la sistemo iom kreskas)"
-
-#: ../../addon/facebook/facebook.php:771
-msgid "Real-Time Updates"
-msgstr "Realtempaj Äœisdatigoj"
-
-#: ../../addon/facebook/facebook.php:775
-msgid "Real-Time Updates are activated."
-msgstr "Realtempaj Äœisdatigoj estas Åaltita"
-
-#: ../../addon/facebook/facebook.php:776
-msgid "Deactivate Real-Time Updates"
-msgstr "MalÅalti Realtempaj Äœisdatigoj"
-
-#: ../../addon/facebook/facebook.php:778
-msgid "Real-Time Updates not activated."
-msgstr "Realtempaj Äœisdatigoj estas malÅaltita"
-
-#: ../../addon/facebook/facebook.php:778
-msgid "Activate Real-Time Updates"
-msgstr "Åœalti Realtempaj Äœisdatigoj"
-
-#: ../../addon/facebook/facebook.php:797 ../../addon/dav/layout.fnk.php:360
-msgid "The new values have been saved."
-msgstr "Konservis novajn valorojn."
-
-#: ../../addon/facebook/facebook.php:821
-msgid "Post to Facebook"
-msgstr "AfiÅi al Facebook"
-
-#: ../../addon/facebook/facebook.php:919
-msgid ""
-"Post to Facebook cancelled because of multi-network access permission "
-"conflict."
-msgstr "AfiÅado al Facebook nuligita ĉar okazis konflikto en la multretpermesoj."
-
-#: ../../addon/facebook/facebook.php:1139
-msgid "View on Friendica"
-msgstr "Vidi ĉe Friendica"
-
-#: ../../addon/facebook/facebook.php:1172
-msgid "Facebook post failed. Queued for retry."
-msgstr "Malsukcesis afiÅi ĉe Facebook. Enigita en vico."
-
-#: ../../addon/facebook/facebook.php:1212
-msgid "Your Facebook connection became invalid. Please Re-authenticate."
-msgstr "Via Facbook konekto iÄis nevalida. Bonvolu reaÅ­tentiÄi."
-
-#: ../../addon/facebook/facebook.php:1213
-msgid "Facebook connection became invalid"
-msgstr "Facebook konekto iÄis nevalida."
-
-#: ../../addon/facebook/facebook.php:1214
-#, php-format
-msgid ""
-"Hi %1$s,\n"
-"\n"
-"The connection between your accounts on %2$s and Facebook became invalid. This usually happens after you change your Facebook-password. To enable the connection again, you have to %3$sre-authenticate the Facebook-connector%4$s."
-msgstr "Saluton %1$s,\n\nla kontekto inter viaj kontoj ĉe %2$s kaj Facebook malvalidiÄis. Tio kutime okazas post kiam via Åangas vian pasvorton ĉe Facebook. Por reaktivigi la konekto, vi bezonas %3$sreaÅ­tentiÄi la Facebook konektilon%4$s."
-
-#: ../../addon/snautofollow/snautofollow.php:32
-msgid "StatusNet AutoFollow settings updated."
-msgstr "Äœidatigis StatusNet AutoFollow agordojn."
-
-#: ../../addon/snautofollow/snautofollow.php:56
-msgid "StatusNet AutoFollow Settings"
-msgstr "StatusNet AutoFollow agordoj"
-
-#: ../../addon/snautofollow/snautofollow.php:58
-msgid "Automatically follow any StatusNet followers/mentioners"
-msgstr "Aŭtomate sekvu ĉiujn StatusNet sekvantojn/menciantojn."
-
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:184
-msgid "Lifetime of the cache (in hours)"
-msgstr "VivodaÅ­ro de kaÅmemoro (horoj)"
-
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:189
-msgid "Cache Statistics"
-msgstr "Statistikoj pri kaÅmemoro"
-
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:192
-msgid "Number of items"
-msgstr "Kvanto da eroj"
-
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:194
-msgid "Size of the cache"
-msgstr "Grando de la kaÅmemoro"
-
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:196
-msgid "Delete the whole cache"
-msgstr "ForviÅi la kaÅmemoron"
-
-#: ../../addon/widgets/widget_like.php:58
-#, php-format
-msgid "%d person likes this"
-msgid_plural "%d people like this"
-msgstr[0] "%d homo Åatas tiun"
-msgstr[1] "%d homoj Åatas tiun"
-
-#: ../../addon/widgets/widget_like.php:61
-#, php-format
-msgid "%d person doesn't like this"
-msgid_plural "%d people don't like this"
-msgstr[0] "%d homo malÅatas tiun"
-msgstr[1] "%d homo malÅatas tiun"
-
-#: ../../addon/widgets/widget_friendheader.php:40
-msgid "Get added to this list!"
-msgstr "IÄu membro de ĉi tiu listo!"
-
-#: ../../addon/widgets/widgets.php:56
-msgid "Generate new key"
-msgstr "Generi novan ĉifroÅlosilon"
-
-#: ../../addon/widgets/widgets.php:59
-msgid "Widgets key"
-msgstr "Ŝlosilo por fenestraĵoj"
-
-#: ../../addon/widgets/widgets.php:61
-msgid "Widgets available"
-msgstr "Disponeblaj fenestraĵoj"
-
-#: ../../addon/widgets/widget_friends.php:40
-msgid "Connect on Friendica!"
-msgstr "Konekti ĉe Friendica!"
-
-#: ../../addon/yourls/yourls.php:55
-msgid "YourLS Settings"
-msgstr "\"YourLS\" Agordoj"
-
-#: ../../addon/yourls/yourls.php:57
-msgid "URL: http://"
-msgstr "URL adreso: http://"
-
-#: ../../addon/yourls/yourls.php:62
-msgid "Username:"
-msgstr "Salutnomo:"
-
-#: ../../addon/yourls/yourls.php:67
-msgid "Password:"
-msgstr "Pasvorto:"
-
-#: ../../addon/yourls/yourls.php:72
-msgid "Use SSL "
-msgstr "Uzi SSL "
-
-#: ../../addon/yourls/yourls.php:92
-msgid "yourls Settings saved."
-msgstr "Konservis la agordojn de YourLS."
-
-#: ../../addon/ljpost/ljpost.php:39
-msgid "Post to LiveJournal"
-msgstr "AfiÅi ĉe LiveJournal"
-
-#: ../../addon/ljpost/ljpost.php:70
-msgid "LiveJournal Post Settings"
-msgstr "Agordoj pri afiÅoj ĉe LiveJournal"
-
-#: ../../addon/ljpost/ljpost.php:72
-msgid "Enable LiveJournal Post Plugin"
-msgstr "Åœalti la LiveJournal-afiÅo kromprogramon."
-
-#: ../../addon/ljpost/ljpost.php:77
-msgid "LiveJournal username"
-msgstr "LiveJournal Salutnomo"
-
-#: ../../addon/ljpost/ljpost.php:82
-msgid "LiveJournal password"
-msgstr "LiveJournal pasvorto"
-
-#: ../../addon/ljpost/ljpost.php:87
-msgid "Post to LiveJournal by default"
-msgstr "DefaÅ­lte afiÅi al LiveJournal"
-
-#: ../../addon/nsfw/nsfw.php:47
-msgid "Not Safe For Work (General Purpose Content Filter) settings"
-msgstr "Not Safe For Work (Äenerala filtrilo por enhavoj) agordoj"
-
-#: ../../addon/nsfw/nsfw.php:49
-msgid ""
-"This plugin looks in posts for the words/text you specify below, and "
-"collapses any content containing those keywords so it is not displayed at "
-"inappropriate times, such as sexual innuendo that may be improper in a work "
-"setting. It is polite and recommended to tag any content containing nudity "
-"with #NSFW. This filter can also match any other word/text you specify, and"
-" can thereby be used as a general purpose content filter."
-msgstr "Tiu kromprogramo serĉas la malsupre agordatajn vortojn en afiÅoj kaj malvidebligis ilin se ili enhavas iun vorton. Tiel, afiÅoj ne montriÄis kiuj enhavas maladekvatan enhavon, ekzemple seksumaj aferoj, kiuj ne estas adekvata, ekzemple en la laborejo. En la reto, oni kutime markas tiajn afiÅojn #NSFW - Not Safe For Work - ne adekvata por la laborejo. La filtrilo ankaÅ­ serĉas ĉiujn vortojn kiujn vi agordas kaj tial funkcias kiel Äenerala filtrilo."
-
-#: ../../addon/nsfw/nsfw.php:50
-msgid "Enable Content filter"
-msgstr "Åœalti la filtrilo por la enhavo"
-
-#: ../../addon/nsfw/nsfw.php:53
-msgid "Comma separated list of keywords to hide"
-msgstr "Perkome disigita listo da kaÅontaj Ålosilvortoj"
-
-#: ../../addon/nsfw/nsfw.php:58
-msgid "Use /expression/ to provide regular expressions"
-msgstr "Uzu /expr/ por provizi regulajn esprimojn."
-
-#: ../../addon/nsfw/nsfw.php:74
-msgid "NSFW Settings saved."
-msgstr "NSFW agordoj konservitaj."
-
-#: ../../addon/nsfw/nsfw.php:121
-#, php-format
-msgid "%s - Click to open/close"
-msgstr "%s - Klaku por malfermi/fermi"
-
-#: ../../addon/page/page.php:61 ../../addon/page/page.php:91
-msgid "Forums"
-msgstr "Forumoj"
-
-#: ../../addon/page/page.php:76 ../../addon/page/page.php:110
-#: ../../addon/showmore/showmore.php:87 ../../include/contact_widgets.php:188
-#: ../../include/conversation.php:476 ../../boot.php:529
-msgid "show more"
-msgstr "montri pli"
-
-#: ../../addon/page/page.php:129
-msgid "Forums:"
-msgstr "Forumoj:"
-
-#: ../../addon/page/page.php:163
-msgid "Page settings updated."
-msgstr "PaÄajn agordojn Äisdatigita."
-
-#: ../../addon/page/page.php:192
-msgid "Page Settings"
-msgstr "PaÄaj Agordoj"
-
-#: ../../addon/page/page.php:194
-msgid "How many forums to display on sidebar without paging"
-msgstr "Montri tiom da forumoj en la flanka strio sen paÄigo"
-
-#: ../../addon/page/page.php:197
-msgid "Randomise Page/Forum list"
-msgstr "Hazardigi la liston de PaÄoj/Forumoj"
-
-#: ../../addon/page/page.php:200
-msgid "Show pages/forums on profile page"
-msgstr "Montri paÄojn/forumojn sur la profilpaÄo"
-
-#: ../../addon/planets/planets.php:150
-msgid "Planets Settings"
-msgstr "Agordo pri Planets"
-
-#: ../../addon/planets/planets.php:152
-msgid "Enable Planets Plugin"
-msgstr "Åœalti la Planets kromprogamon"
-
-#: ../../addon/communityhome/communityhome.php:28
-#: ../../addon/communityhome/communityhome.php:34
-#: ../../addon/communityhome/twillingham/communityhome.php:28
-#: ../../addon/communityhome/twillingham/communityhome.php:34
-#: ../../include/nav.php:64 ../../boot.php:849
-msgid "Login"
-msgstr "Ensaluti"
-
-#: ../../addon/communityhome/communityhome.php:29
-#: ../../addon/communityhome/twillingham/communityhome.php:29
-msgid "OpenID"
-msgstr "OpenID"
-
-#: ../../addon/communityhome/communityhome.php:38
-#: ../../addon/communityhome/twillingham/communityhome.php:38
-msgid "Latest users"
-msgstr "Ä´usaj uzantoj"
-
-#: ../../addon/communityhome/communityhome.php:81
-#: ../../addon/communityhome/twillingham/communityhome.php:81
-msgid "Most active users"
-msgstr "Plej aktivaj uzantoj"
-
-#: ../../addon/communityhome/communityhome.php:98
-msgid "Latest photos"
-msgstr "Ä´usaj bildoj"
-
-#: ../../addon/communityhome/communityhome.php:133
-msgid "Latest likes"
-msgstr "Ä´usaj Åatitaĵoj"
-
-#: ../../addon/communityhome/communityhome.php:155
-#: ../../view/theme/diabook/theme.php:562 ../../include/text.php:1315
-#: ../../include/conversation.php:45 ../../include/conversation.php:118
-msgid "event"
-msgstr "okazo"
-
-#: ../../addon/dav/common/wdcal_configuration.php:126
-msgid "U.S. Time Format (mm/dd/YYYY)"
-msgstr "Usona datformato (mm/dd/YYYY)"
-
-#: ../../addon/dav/common/wdcal_configuration.php:205
-msgid "German Time Format (dd.mm.YYYY)"
-msgstr "Germana datformato (dd.mm.YYYY)"
-
-#: ../../addon/dav/common/calendar.fnk.php:517
-#: ../../addon/dav/common/calendar.fnk.php:533
-#: ../../addon/dav/layout.fnk.php:200
-msgid "Error"
-msgstr "Eraro"
-
-#: ../../addon/dav/common/calendar.fnk.php:568
-#: ../../addon/dav/common/calendar.fnk.php:637
-#: ../../addon/dav/common/calendar.fnk.php:664
-#: ../../addon/dav/layout.fnk.php:231
-msgid "No access"
-msgstr "No access"
-
-#: ../../addon/dav/layout.fnk.php:119
-msgid "New event"
-msgstr "Nova okazo"
-
-#: ../../addon/dav/layout.fnk.php:123
-msgid "Today"
-msgstr "HodiaÅ­"
-
-#: ../../addon/dav/layout.fnk.php:132
-msgid "Day"
-msgstr "Tago"
-
-#: ../../addon/dav/layout.fnk.php:139
-msgid "Week"
-msgstr "Semajno"
-
-#: ../../addon/dav/layout.fnk.php:146
-msgid "Month"
-msgstr "Monato"
-
-#: ../../addon/dav/layout.fnk.php:151
-msgid "Reload"
-msgstr "ReÅargi"
-
-#: ../../addon/dav/layout.fnk.php:162
-msgid "Date"
-msgstr "Dato"
-
-#: ../../addon/dav/layout.fnk.php:224
-msgid "Not found"
-msgstr "Ne trovita"
-
-#: ../../addon/dav/layout.fnk.php:292 ../../addon/dav/layout.fnk.php:365
-msgid "Go back to the calendar"
-msgstr "Iri reen al la kalendaro"
-
-#: ../../addon/dav/layout.fnk.php:300
-msgid "Starts"
-msgstr "Komencas"
-
-#: ../../addon/dav/layout.fnk.php:305
-msgid "Ends"
-msgstr "Finas"
-
-#: ../../addon/dav/layout.fnk.php:312
-msgid "Description"
-msgstr "Priskribo"
-
-#: ../../addon/dav/layout.fnk.php:315
-msgid "Notification"
-msgstr "Atentigo"
-
-#: ../../addon/dav/layout.fnk.php:324
-msgid "Minutes"
-msgstr "Minutoj"
-
-#: ../../addon/dav/layout.fnk.php:327
-msgid "Hours"
-msgstr "Horoj"
-
-#: ../../addon/dav/layout.fnk.php:330
-msgid "Days"
-msgstr "Tagoj"
-
-#: ../../addon/dav/layout.fnk.php:331
-msgid "before"
-msgstr "antaÅ­"
-
-#: ../../addon/dav/layout.fnk.php:367
-msgid "Calendar Settings"
-msgstr "Kalendaraj Agordoj"
-
-#: ../../addon/dav/layout.fnk.php:373
-msgid "Date format"
-msgstr "Datformato"
-
-#: ../../addon/dav/layout.fnk.php:382
-msgid "Time zone"
-msgstr "Horzono"
-
-#: ../../addon/dav/layout.fnk.php:387
-msgid "Limitations"
-msgstr "Limigoj"
-
-#: ../../addon/dav/layout.fnk.php:391
-msgid "Warning"
-msgstr "Averto"
-
-#: ../../addon/dav/layout.fnk.php:395
-msgid "Synchronization (iPhone, Thunderbird Lightning, Android, ...)"
-msgstr "Sinkronigo (iPhone, Thunderbird Lightning, Android, ...)"
-
-#: ../../addon/dav/layout.fnk.php:402
-msgid "Synchronizing this calendar with the iPhone"
-msgstr "Sinkronigi tiun kalendaron kun la iPhone"
-
-#: ../../addon/dav/layout.fnk.php:413
-msgid "Synchronizing your Friendica-Contacts with the iPhone"
-msgstr "Sinkronigi viajn Friendica kontaktojn kun la iPhone"
-
-#: ../../addon/dav/dav_carddav_backend_friendica_community.inc.php:37
-msgid "Friendica-Contacts"
-msgstr "Friendica Kontaktoj"
-
-#: ../../addon/dav/dav_carddav_backend_friendica_community.inc.php:38
-msgid "Your Friendica-Contacts"
-msgstr "Viaj Friendica Kontaktoj"
-
-#: ../../addon/dav/main.php:244
-msgid "Calendar"
-msgstr "Kalendaro"
-
-#: ../../addon/dav/main.php:247
-msgid "Extended calendar with CalDAV-support"
-msgstr "Etendita kalendaro kun CalDAV subteno"
-
-#: ../../addon/dav/main.php:263
-msgid "The database tables have been installed."
-msgstr "La tabeloj estas instalita en la datumbazo"
-
-#: ../../addon/dav/main.php:264
-msgid "An error occurred during the installation."
-msgstr "Eraro okazis dum instalado"
-
-#: ../../addon/dav/main.php:280
-msgid "No system-wide settings yet."
-msgstr "AnkoraÅ­ ne disponablas tutsistemaj agordoj"
-
-#: ../../addon/dav/main.php:283
-msgid "Database status"
-msgstr "Stato de datumbazo"
-
-#: ../../addon/dav/main.php:286
-msgid "Installed"
-msgstr "Instalita"
-
-#: ../../addon/dav/main.php:289
-msgid "Upgrade needed"
-msgstr "Äœisdatigo bezonata"
-
-#: ../../addon/dav/main.php:289
-msgid "Upgrade"
-msgstr "Äœisdatigo"
-
-#: ../../addon/dav/main.php:292
-msgid "Not installed"
-msgstr "Ne instalita"
-
-#: ../../addon/dav/main.php:292
-msgid "Install"
-msgstr "Instali"
-
-#: ../../addon/dav/main.php:297
-msgid "Troubleshooting"
-msgstr "Problemsolvado"
-
-#: ../../addon/dav/main.php:298
-msgid "Manual creation of the database tables:"
-msgstr "Mana kreado de tabeloj en la datumbazo:"
-
-#: ../../addon/dav/main.php:299
-msgid "Show SQL-statements"
-msgstr "Montru SQL ordonojn"
-
-#: ../../addon/dav/calendar.friendica.fnk.php:151
-msgid "Private Calendar"
-msgstr "Privata kalendaro"
-
-#: ../../addon/dav/calendar.friendica.fnk.php:158
-msgid "Friendica Events: Mine"
-msgstr "Friendica Okazoj: Miaj"
-
-#: ../../addon/dav/calendar.friendica.fnk.php:161
-msgid "Friendica Events: Contacts"
-msgstr "Friendica Okazoj: De Kontaktoj"
-
-#: ../../addon/uhremotestorage/uhremotestorage.php:84
-#, php-format
-msgid ""
-"Allow to use your friendica id (%s) to connecto to external unhosted-enabled"
-" storage (like ownCloud). See <a "
-"href=\"http://www.w3.org/community/unhosted/wiki/RemoteStorage#WebFinger\">RemoteStorage"
-" WebFinger</a>"
-msgstr "Permesi vian identecon ĉe Friendica (%s) por konekti al eksteraj konservejoj subtenata de unhosted (ekz. OwnCloud). Vidu <a href=\"http://www.w3.org/community/unhosted/wiki/RemoteStorage#WebFinger\">RemoteStorage WebFinger</a>"
-
-#: ../../addon/uhremotestorage/uhremotestorage.php:85
-msgid "Template URL (with {category})"
-msgstr "URL adreso de Åablono (kun {category})"
-
-#: ../../addon/uhremotestorage/uhremotestorage.php:86
-msgid "OAuth end-point"
-msgstr "OAuth finpunkto"
-
-#: ../../addon/uhremotestorage/uhremotestorage.php:87
-msgid "Api"
-msgstr "Api"
-
-#: ../../addon/membersince/membersince.php:18
-msgid "Member since:"
-msgstr "Membro ekde:"
-
-#: ../../addon/tictac/tictac.php:20
-msgid "Three Dimensional Tic-Tac-Toe"
-msgstr "Tri-dimensia Tiktakto"
-
-#: ../../addon/tictac/tictac.php:53
-msgid "3D Tic-Tac-Toe"
-msgstr "3D Tiktakto"
-
-#: ../../addon/tictac/tictac.php:58
-msgid "New game"
-msgstr "Nova ludo"
-
-#: ../../addon/tictac/tictac.php:59
-msgid "New game with handicap"
-msgstr "Nova ludo kun handikapo"
-
-#: ../../addon/tictac/tictac.php:60
-msgid ""
-"Three dimensional tic-tac-toe is just like the traditional game except that "
-"it is played on multiple levels simultaneously. "
-msgstr "Tri-dimensia tiktakto similas la tradician ludon, sed estas ludata sur pluraj ebenoj dum la sama tempo."
-
-#: ../../addon/tictac/tictac.php:61
-msgid ""
-"In this case there are three levels. You win by getting three in a row on "
-"any level, as well as up, down, and diagonally across the different levels."
-msgstr "Ĉi-kaze ekzistas tri ebenoj. Vi venkas vicigante tri signojn en una vico, en la sama ebeno, same kiel supren, malsupren aŭ diagonale, trans la ebenoj."
-
-#: ../../addon/tictac/tictac.php:63
-msgid ""
-"The handicap game disables the center position on the middle level because "
-"the player claiming this square often has an unfair advantage."
-msgstr "La ludo kun handikapo malvalidigas la mezan pozicion sur la meza ebeno, ĉar la ludisto kio okupas ĉi tiun pozicion ĉiam havas avantaÄon."
-
-#: ../../addon/tictac/tictac.php:182
-msgid "You go first..."
-msgstr "Estas via vico unue."
-
-#: ../../addon/tictac/tictac.php:187
-msgid "I'm going first this time..."
-msgstr "Ĉi-tempe, unue estas mia vico."
-
-#: ../../addon/tictac/tictac.php:193
-msgid "You won!"
-msgstr "Vi venkis!"
-
-#: ../../addon/tictac/tictac.php:199 ../../addon/tictac/tictac.php:224
-msgid "\"Cat\" game!"
-msgstr "Sendecida ludo!"
-
-#: ../../addon/tictac/tictac.php:222
-msgid "I won!"
-msgstr "Mi venkis!"
-
-#: ../../addon/randplace/randplace.php:169
-msgid "Randplace Settings"
-msgstr "Randplace agordoj."
-
-#: ../../addon/randplace/randplace.php:171
-msgid "Enable Randplace Plugin"
-msgstr "Aktivigi la Randplace kromprogramon."
-
-#: ../../addon/dwpost/dwpost.php:39
-msgid "Post to Dreamwidth"
-msgstr "AfiÅi al Dreamwidth"
-
-#: ../../addon/dwpost/dwpost.php:70
-msgid "Dreamwidth Post Settings"
-msgstr "Agordoj por AfiÅoj al Dreamwidth"
-
-#: ../../addon/dwpost/dwpost.php:72
-msgid "Enable dreamwidth Post Plugin"
-msgstr "Åœalti la Dreamwidth Kromprogramon"
-
-#: ../../addon/dwpost/dwpost.php:77
-msgid "dreamwidth username"
-msgstr "Dreamwidth salutnomo"
-
-#: ../../addon/dwpost/dwpost.php:82
-msgid "dreamwidth password"
-msgstr "Dreamwidth pasvorto"
-
-#: ../../addon/dwpost/dwpost.php:87
-msgid "Post to dreamwidth by default"
-msgstr "DefaÅ­lte afiÅi al Dreamwidth"
-
-#: ../../addon/drpost/drpost.php:35
-msgid "Post to Drupal"
-msgstr "AfiÅi al Drupal"
-
-#: ../../addon/drpost/drpost.php:72
-msgid "Drupal Post Settings"
-msgstr "Agordoj por Drupal AfiÅoj"
-
-#: ../../addon/drpost/drpost.php:74
-msgid "Enable Drupal Post Plugin"
-msgstr "Åœalti la Drupal-afiÅo Kromprogramon"
-
-#: ../../addon/drpost/drpost.php:79
-msgid "Drupal username"
-msgstr "Drupal salutnomo"
-
-#: ../../addon/drpost/drpost.php:84
-msgid "Drupal password"
-msgstr "Drupal pasvorto"
-
-#: ../../addon/drpost/drpost.php:89
-msgid "Post Type - article,page,or blog"
-msgstr "Tipo de AfiÅoj - article, page, aÅ­ blog"
-
-#: ../../addon/drpost/drpost.php:94
-msgid "Drupal site URL"
-msgstr "URL adreso de Drupal retejo"
-
-#: ../../addon/drpost/drpost.php:99
-msgid "Drupal site uses clean URLS"
-msgstr "Drupal retejo uzas purajn URL adresojn"
-
-#: ../../addon/drpost/drpost.php:104
-msgid "Post to Drupal by default"
-msgstr "DefaÅ­lte afiÅi ĉe Drupal"
-
-#: ../../addon/drpost/drpost.php:184 ../../addon/wppost/wppost.php:201
-#: ../../addon/blogger/blogger.php:172 ../../addon/posterous/posterous.php:189
-msgid "Post from Friendica"
-msgstr "AfiÅo de Friendica"
-
-#: ../../addon/startpage/startpage.php:83
-msgid "Startpage Settings"
-msgstr "StartpaÄaj Agordoj"
-
-#: ../../addon/startpage/startpage.php:85
-msgid "Home page to load after login - leave blank for profile wall"
-msgstr "HejmpaÄo Åargonta post la ensaluto - Lasu malplena por profilmuro."
-
-#: ../../addon/startpage/startpage.php:88
-msgid "Examples: &quot;network&quot; or &quot;notifications/system&quot;"
-msgstr "Ekzemple: &quot;network&quot; aÅ­ &quot;notifications/system&quot;"
-
-#: ../../addon/geonames/geonames.php:143
-msgid "Geonames settings updated."
-msgstr "Äœidatigis la Geonames agordojn."
-
-#: ../../addon/geonames/geonames.php:179
-msgid "Geonames Settings"
-msgstr "Geonames Agordoj"
-
-#: ../../addon/geonames/geonames.php:181
-msgid "Enable Geonames Plugin"
-msgstr "Åœalti la Geonames Kromprogramon"
-
-#: ../../addon/public_server/public_server.php:126
-#: ../../addon/testdrive/testdrive.php:94
-#, php-format
-msgid "Your account on %s will expire in a few days."
-msgstr "Via konto ĉe %s senvalidiÄos post kelkaj tagoj."
-
-#: ../../addon/public_server/public_server.php:127
-msgid "Your Friendica account is about to expire."
-msgstr "Via konto ĉe Friendica baldaÅ­ senvalidiÄos."
-
-#: ../../addon/public_server/public_server.php:128
-#, php-format
-msgid ""
-"Hi %1$s,\n"
-"\n"
-"Your account on %2$s will expire in less than five days. You may keep your account by logging in at least once every 30 days"
-msgstr "Saluton %1$s,\n\nVia konto ĉe %2$s senvalidiÄos post malpli ol kvin tagoj. Vi povas konservi vian konton se vi ensalutas almenaÅ­ ĉiujn 30 tagojn. "
-
-#: ../../addon/js_upload/js_upload.php:43
-msgid "Upload a file"
-msgstr "AlÅuti dosieron"
-
-#: ../../addon/js_upload/js_upload.php:44
-msgid "Drop files here to upload"
-msgstr "Åœovmeti dosierojn ĉi tie por alÅuti ilin."
-
-#: ../../addon/js_upload/js_upload.php:46
-msgid "Failed"
-msgstr "Malsukcesi"
-
-#: ../../addon/js_upload/js_upload.php:297
-msgid "No files were uploaded."
-msgstr "Neniom da dosieroj alÅutita."
-
-#: ../../addon/js_upload/js_upload.php:303
-msgid "Uploaded file is empty"
-msgstr "AlÅutita dosiero estas malplena."
-
-#: ../../addon/js_upload/js_upload.php:326
-msgid "File has an invalid extension, it should be one of "
-msgstr "Dosiero havas nevalidan sufikson. Äœi estu unu de "
-
-#: ../../addon/js_upload/js_upload.php:337
-msgid "Upload was cancelled, or server error encountered"
-msgstr "AlÅutado estas nuligita aÅ­ okazis eraro sur la servilo"
-
-#: ../../addon/oembed.old/oembed.php:30
-msgid "OEmbed settings updated"
-msgstr "Äœisdatigis OEmbed agordojn"
-
-#: ../../addon/oembed.old/oembed.php:43
-msgid "Use OEmbed for YouTube videos"
-msgstr "Uzi OEmbed por YouTube videtoj"
-
-#: ../../addon/oembed.old/oembed.php:71
-msgid "URL to embed:"
-msgstr "Enigi la URL adreson:"
-
-#: ../../addon/impressum/impressum.php:36
-msgid "Impressum"
-msgstr "Kolofono"
-
-#: ../../addon/impressum/impressum.php:49
-#: ../../addon/impressum/impressum.php:51
-#: ../../addon/impressum/impressum.php:83
-msgid "Site Owner"
-msgstr "Proprietulo de la paÄo"
-
-#: ../../addon/impressum/impressum.php:49
-#: ../../addon/impressum/impressum.php:87
-msgid "Email Address"
-msgstr "RetpoÅta Adreso"
-
-#: ../../addon/impressum/impressum.php:54
-#: ../../addon/impressum/impressum.php:85
-msgid "Postal Address"
-msgstr "PoÅta Adreso"
-
-#: ../../addon/impressum/impressum.php:60
-msgid ""
-"The impressum addon needs to be configured!<br />Please add at least the "
-"<tt>owner</tt> variable to your config file. For other variables please "
-"refer to the README file of the addon."
-msgstr "La kolofono (impressum) kromprogramo bezonas agordojn!<br />Bonvolu aldoni minimume la <tt>owner</tt> variablon al via agorda dosiero. Por aliaj variabloj, bonvolu legi la README dosieron de la kromprogramo."
-
-#: ../../addon/impressum/impressum.php:83
-msgid "The page operators name."
-msgstr "La nomo de la funkciigisto de la retejo."
-
-#: ../../addon/impressum/impressum.php:84
-msgid "Site Owners Profile"
-msgstr "Profilo de la Proprietulo de la Retejo"
-
-#: ../../addon/impressum/impressum.php:84
-msgid "Profile address of the operator."
-msgstr "La profilo de la funkciigisto de la retejo."
-
-#: ../../addon/impressum/impressum.php:85
-msgid "How to contact the operator via snail mail. You can use BBCode here."
-msgstr "Kiel poÅte kontakti la funkciigisto de la retejo. Vi eblas uzi BBCode ĉi tie."
-
-#: ../../addon/impressum/impressum.php:86
-msgid "Notes"
-msgstr "Notoj"
-
-#: ../../addon/impressum/impressum.php:86
-msgid ""
-"Additional notes that are displayed beneath the contact information. You can"
-" use BBCode here."
-msgstr "Pli da notoj kiuj aperas sub la kontaktinformoj. Vi eblas uzi BBCode ĉi tie."
-
-#: ../../addon/impressum/impressum.php:87
-msgid "How to contact the operator via email. (will be displayed obfuscated)"
-msgstr "Kiel kontakti la funkciigiston de la retejo per retpoÅto. (montriÄos vuale) "
-
-#: ../../addon/impressum/impressum.php:88
-msgid "Footer note"
-msgstr "PaÄpiednoto"
-
-#: ../../addon/impressum/impressum.php:88
-msgid "Text for the footer. You can use BBCode here."
-msgstr "Teksto por la paÄpiedo. Vie eblas uzi BBCode ĉi tie."
-
-#: ../../addon/buglink/buglink.php:15
-msgid "Report Bug"
-msgstr "Skribi cimraporton"
-
-#: ../../addon/notimeline/notimeline.php:32
-msgid "No Timeline settings updated."
-msgstr "No Timeline agordojn Äisdatigita."
-
-#: ../../addon/notimeline/notimeline.php:56
-msgid "No Timeline Settings"
-msgstr "No Timeline Agordoj"
-
-#: ../../addon/notimeline/notimeline.php:58
-msgid "Disable Archive selector on profile wall"
-msgstr "Malaktivigi la Arkivo elektilo sur la profilmuro"
-
-#: ../../addon/blockem/blockem.php:51
-msgid "\"Blockem\" Settings"
-msgstr "\"Blockem\" Agordoj"
-
-#: ../../addon/blockem/blockem.php:53
-msgid "Comma separated profile URLS to block"
-msgstr "Blokotaj URL adresoj, disigita per komo"
-
-#: ../../addon/blockem/blockem.php:70
-msgid "BLOCKEM Settings saved."
-msgstr "Konservis Agordojn de BLOCKEM."
-
-#: ../../addon/blockem/blockem.php:105
-#, php-format
-msgid "Blocked %s - Click to open/close"
-msgstr "%s blokita - Klaku por malfermi/fermi"
-
-#: ../../addon/blockem/blockem.php:160
-msgid "Unblock Author"
-msgstr "Malbloki AÅ­toron"
-
-#: ../../addon/blockem/blockem.php:162
-msgid "Block Author"
-msgstr "Bloki AÅ­toron"
-
-#: ../../addon/blockem/blockem.php:194
-msgid "blockem settings updated"
-msgstr "Äœisdatigis la blockem agordojn"
-
-#: ../../addon/qcomment/qcomment.php:51
-msgid ":-)"
-msgstr ":-)"
-
-#: ../../addon/qcomment/qcomment.php:51
-msgid ":-("
-msgstr ":-("
-
-#: ../../addon/qcomment/qcomment.php:51
-msgid "lol"
-msgstr "lol"
-
-#: ../../addon/qcomment/qcomment.php:54
-msgid "Quick Comment Settings"
-msgstr "Agordoj pri Rapidaj Komentoj"
-
-#: ../../addon/qcomment/qcomment.php:56
-msgid ""
-"Quick comments are found near comment boxes, sometimes hidden. Click them to"
-" provide simple replies."
-msgstr "Rapidaj komentoj troviÄas apud komentkampoj, kelkfoje kaÅita. Klaku ilin por provizi simplajn rispondojn."
-
-#: ../../addon/qcomment/qcomment.php:57
-msgid "Enter quick comments, one per line"
-msgstr "Entajpu rapidaj komentoj, po unu je linio."
-
-#: ../../addon/qcomment/qcomment.php:75
-msgid "Quick Comment settings saved."
-msgstr "Konservis agordojn pri rapidaj komentoj."
-
-#: ../../addon/openstreetmap/openstreetmap.php:71
-msgid "Tile Server URL"
-msgstr "Adreso de Kahelservilo"
-
-#: ../../addon/openstreetmap/openstreetmap.php:71
-msgid ""
-"A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" "
-"target=\"_blank\">public tile servers</a>"
-msgstr "Listo de <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">publikaj kahelserviloj</a>"
-
-#: ../../addon/openstreetmap/openstreetmap.php:72
-msgid "Default zoom"
-msgstr "DefaÅ­lta zoma faktoro"
-
-#: ../../addon/openstreetmap/openstreetmap.php:72
-msgid "The default zoom level. (1:world, 18:highest)"
-msgstr "La defaÅ­lta zoma faktoro. (1:tutmonda, 18:plej proksima)"
-
-#: ../../addon/libertree/libertree.php:36
-msgid "Post to libertree"
-msgstr "AfiÅi al libertree"
-
-#: ../../addon/libertree/libertree.php:67
-msgid "libertree Post Settings"
-msgstr "Agordoj por AfiÅoj ĉe libertree"
-
-#: ../../addon/libertree/libertree.php:69
-msgid "Enable Libertree Post Plugin"
-msgstr "Aktivigi Kromprogramon por AfiÅoj ĉe libertree"
-
-#: ../../addon/libertree/libertree.php:74
-msgid "Libertree API token"
-msgstr "Libertree API ĵetono"
-
-#: ../../addon/libertree/libertree.php:79
-msgid "Libertree site URL"
-msgstr "URL adreso de libertree retejo:"
-
-#: ../../addon/libertree/libertree.php:84
-msgid "Post to Libertree by default"
-msgstr "DefaÅ­lte afiÅi ĉe Libertree"
-
-#: ../../addon/mathjax/mathjax.php:37
-msgid ""
-"The MathJax addon renders mathematical formulae written using the LaTeX "
-"syntax surrounded by the usual $$ or an eqnarray block in the postings of "
-"your wall,network tab and private mail."
-msgstr "La Mathjax kromprogramo bildigas matematikajn formulojn skribitajn en la LaTeX sintakso, cirkaÅ­igita de la komuna $$ aÅ­ eqnarray bloko en afiÅoj ĉe via muro, Reto folio kaj privataj mesaÄoj."
-
-#: ../../addon/mathjax/mathjax.php:38
-msgid "Use the MathJax renderer"
-msgstr "Ĉu uzi la Mathjax bildigilo"
-
-#: ../../addon/mathjax/mathjax.php:74
-msgid "MathJax Base URL"
-msgstr "Mathjax Baza URL Adreso"
-
-#: ../../addon/mathjax/mathjax.php:74
-msgid ""
-"The URL for the javascript file that should be included to use MathJax. Can "
-"be either the MathJax CDN or another installation of MathJax."
-msgstr "La URL adreso por la javascript dosiero kiu estas inkluzivigonta por uzi Mathjaz. Eblas esti aÅ­ la Mathjax CDN aÅ­ alia Mathjax instalo."
-
-#: ../../addon/editplain/editplain.php:46
-msgid "Editplain settings updated."
-msgstr "Äœisdatigis la Editplain agordojn."
-
-#: ../../addon/editplain/editplain.php:76
-msgid "Editplain Settings"
-msgstr "Agordoj por Editplain"
-
-#: ../../addon/editplain/editplain.php:78
-msgid "Disable richtext status editor"
-msgstr "MalÅalti la riĉteksto-redaktilon"
-
-#: ../../addon/gravatar/gravatar.php:71
-msgid "generic profile image"
-msgstr "komuna profilbildo"
-
-#: ../../addon/gravatar/gravatar.php:72
-msgid "random geometric pattern"
-msgstr "loteca geometria skemo"
-
-#: ../../addon/gravatar/gravatar.php:73
-msgid "monster face"
-msgstr "monstrobildo"
-
-#: ../../addon/gravatar/gravatar.php:74
-msgid "computer generated face"
-msgstr "komputita vizaÄo"
-
-#: ../../addon/gravatar/gravatar.php:75
-msgid "retro arcade style face"
-msgstr "retrostila videoludstila vizaÄo"
-
-#: ../../addon/gravatar/gravatar.php:87
-msgid "Default avatar image"
-msgstr "DefaÅ­lta avatarbildo"
-
-#: ../../addon/gravatar/gravatar.php:87
-msgid "Select default avatar image if none was found at Gravatar. See README"
-msgstr "Elektu defaÅ­ltan avatarbildon se neniu troviÄis ĉe Gravatar. Vidu README."
-
-#: ../../addon/gravatar/gravatar.php:88
-msgid "Rating of images"
-msgstr "Pritakso de bildoj"
-
-#: ../../addon/gravatar/gravatar.php:88
-msgid "Select the appropriate avatar rating for your site. See README"
-msgstr "Elektu la Äustan pritakson de via avataro por via retejo. Vidu README."
-
-#: ../../addon/gravatar/gravatar.php:102
-msgid "Gravatar settings updated."
-msgstr "Gravatar agordoj Äisdatigitaj."
-
-#: ../../addon/testdrive/testdrive.php:95
-msgid "Your Friendica test account is about to expire."
-msgstr "Via Friendica provkonto baldaÅ­ malaktiviÄos."
-
-#: ../../addon/testdrive/testdrive.php:96
-#, php-format
-msgid ""
-"Hi %1$s,\n"
-"\n"
-"Your test account on %2$s will expire in less than five days. We hope you enjoyed this test drive and use this opportunity to find a permanent Friendica website for your integrated social communications. A list of public sites is available at http://dir.friendica.com/siteinfo - and for more information on setting up your own Friendica server please see the Friendica project website at http://friendica.com."
-msgstr "Saluton %1$s,\n\nVia testkonto ĉe %2$s senvalidiÄos post malpli ol kvin tagoj. Vi esperas ke vi Äuis la teston kaj baldaÅ­ trovosÄustan Friendica retejon por via integrita sociala komunikado. Listo de publikaj retejoj troviÄas ĉe http://dir.friendica.com/siteinfo - kaj por pli da informoj pri kiel instali vian propran Friendica servilon, bonvolu viziti la retejon de la Friendica projekton ĉe http://friendica.com."
-
-#: ../../addon/pageheader/pageheader.php:50
-msgid "\"pageheader\" Settings"
-msgstr "\"pageheader\" Agordoj"
-
-#: ../../addon/pageheader/pageheader.php:68
-msgid "pageheader Settings saved."
-msgstr "Konservis Agordojn de pageheader."
-
-#: ../../addon/ijpost/ijpost.php:39
-msgid "Post to Insanejournal"
-msgstr "AfiÅi al Insanejournal"
-
-#: ../../addon/ijpost/ijpost.php:70
-msgid "InsaneJournal Post Settings"
-msgstr "Agordoj pri Insaenejournal AfiÅoj"
-
-#: ../../addon/ijpost/ijpost.php:72
-msgid "Enable InsaneJournal Post Plugin"
-msgstr "Åœalti la InsaneJournal afiÅo kromprogramon."
-
-#: ../../addon/ijpost/ijpost.php:77
-msgid "InsaneJournal username"
-msgstr "Salutnomo ĉe InsaneJournal"
-
-#: ../../addon/ijpost/ijpost.php:82
-msgid "InsaneJournal password"
-msgstr "Pasvorto ĉe InsaneJournal"
-
-#: ../../addon/ijpost/ijpost.php:87
-msgid "Post to InsaneJournal by default"
-msgstr "DefaÅ­lte afiÅi ĉe InsaneJournal"
-
-#: ../../addon/viewsrc/viewsrc.php:37
-msgid "View Source"
-msgstr "Vidi Fonton"
-
-#: ../../addon/statusnet/statusnet.php:134
-msgid "Post to StatusNet"
-msgstr "AfiÅi ĉe StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:176
-msgid ""
-"Please contact your site administrator.<br />The provided API URL is not "
-"valid."
-msgstr "Bonvolu kontaki vian retejan administranton.<br />La API URL adreso ne validas."
-
-#: ../../addon/statusnet/statusnet.php:204
-msgid "We could not contact the StatusNet API with the Path you entered."
-msgstr "Ni ne povis trovi la StatusNet API kun la vojo kiun vi entajpis."
-
-#: ../../addon/statusnet/statusnet.php:232
-msgid "StatusNet settings updated."
-msgstr "StatusNet agordoj Äisdatigita."
-
-#: ../../addon/statusnet/statusnet.php:257
-msgid "StatusNet Posting Settings"
-msgstr "Agordoj por StausNet afiÅoj"
-
-#: ../../addon/statusnet/statusnet.php:271
-msgid "Globally Available StatusNet OAuthKeys"
-msgstr "Äœeneralaj disponeblaj StatusNet OAuth Ålosiloj"
-
-#: ../../addon/statusnet/statusnet.php:272
-msgid ""
-"There are preconfigured OAuth key pairs for some StatusNet servers "
-"available. If you are useing one of them, please use these credentials. If "
-"not feel free to connect to any other StatusNet instance (see below)."
-msgstr "Disponeblas antaÅ­agorditaj Ålosilparoj por kelkaj StatusNet serviloj. Se via uzas iun de iu, bonvolu uzi unun de tiuj legitimaĵojn. Se ne, bonvolu konekti al iu alia StatusNet servilo (vidu malsupre)."
-
-#: ../../addon/statusnet/statusnet.php:280
-msgid "Provide your own OAuth Credentials"
-msgstr "Provizi viajn proprajn OAuth legitimaĵojn"
-
-#: ../../addon/statusnet/statusnet.php:281
-msgid ""
-"No consumer key pair for StatusNet found. Register your Friendica Account as"
-" an desktop client on your StatusNet account, copy the consumer key pair "
-"here and enter the API base root.<br />Before you register your own OAuth "
-"key pair ask the administrator if there is already a key pair for this "
-"Friendica installation at your favorited StatusNet installation."
-msgstr "Ne trovis klientajn Ålosilojn por StatusNet. Registru vian Friendica konton kiel klientkomputilo/desktop client en via StausNet konto. Kopiu la klientajn Ålosilojn ĉi tien kaj entajpu la baza API radiko.<br />AntaÅ­ vi registros viajn proprajn OAuth Ålosilojn, demandu al la administranto ĉu jam ekzistas Ålosiloj por ĉi-tiu Friendia retejo je via StatusNet retejo."
-
-#: ../../addon/statusnet/statusnet.php:283
-msgid "OAuth Consumer Key"
-msgstr "OAuth Åœlosilo de Kliento"
-
-#: ../../addon/statusnet/statusnet.php:286
-msgid "OAuth Consumer Secret"
-msgstr "OAuth Sekreto de Kliento"
-
-#: ../../addon/statusnet/statusnet.php:289
-msgid "Base API Path (remember the trailing /)"
-msgstr "Baza vojo al la API (ne forgesu la finan /)"
-
-#: ../../addon/statusnet/statusnet.php:310
-msgid ""
-"To connect to your StatusNet account click the button below to get a "
-"security code from StatusNet which you have to copy into the input box below"
-" and submit the form. Only your <strong>public</strong> posts will be posted"
-" to StatusNet."
-msgstr "Por konekti al vian konton ĉe StatusNet, klaku la malsupran butonon por atingi sekurecan kodon de StatusNet, kiun vi devas alglui en la malsupra kampo kaj sendi la formon. Nur viaj <strong>publikaj</strong> afiÅoj estos afiÅota al StatusNet."
-
-#: ../../addon/statusnet/statusnet.php:311
-msgid "Log in with StatusNet"
-msgstr "Ensaluti kun StatusNet."
-
-#: ../../addon/statusnet/statusnet.php:313
-msgid "Copy the security code from StatusNet here"
-msgstr "Alglui la kodon de StatusNet ĉi tie:"
-
-#: ../../addon/statusnet/statusnet.php:319
-msgid "Cancel Connection Process"
-msgstr "Nuligi Konektadon"
-
-#: ../../addon/statusnet/statusnet.php:321
-msgid "Current StatusNet API is"
-msgstr "La nuna StatusNet API estas"
-
-#: ../../addon/statusnet/statusnet.php:322
-msgid "Cancel StatusNet Connection"
-msgstr "Nuligi Konekton al StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:333 ../../addon/twitter/twitter.php:189
-msgid "Currently connected to: "
-msgstr "Konektita al:"
-
-#: ../../addon/statusnet/statusnet.php:334
-msgid ""
-"If enabled all your <strong>public</strong> postings can be posted to the "
-"associated StatusNet account. You can choose to do so by default (here) or "
-"for every posting separately in the posting options when writing the entry."
-msgstr "Kiam Åaltita, ĉiuj <strong>publikaj</strong> afiÅoj de vi ankaÅ­ eblas esti afiÅota al la asociigita StatusNet konto. Vi povas elekti Äin defaÅ­lte (ĉi tie) au unuope por ĉiuj afiÅoj kiam vi skribos ilin."
-
-#: ../../addon/statusnet/statusnet.php:336
-msgid ""
-"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile "
-"details from unknown viewers?</em>) the link potentially included in public "
-"postings relayed to StatusNet will lead the visitor to a blank page "
-"informing the visitor that the access to your profile has been restricted."
-msgstr "<strong>Averto</strong>: LaÅ­ viaj privatecaj agordoj (<em>KaÅi viajn profilajn detalojn al nekonataj spektantoj?</em>), la ligilo en publikaj afiÅoj plusendata al StatusNet gvidas vizitontojn al malplena paÄo sciigante ilin ke atingo al via profilo estas lmitigita."
-
-#: ../../addon/statusnet/statusnet.php:339
-msgid "Allow posting to StatusNet"
-msgstr "Permesi afiÅojn al StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:342
-msgid "Send public postings to StatusNet by default"
-msgstr "DefaÅ­lte sendi publikajn afiÅojn al StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:345
-msgid "Send linked #-tags and @-names to StatusNet"
-msgstr "Sendi ligitajn #-etikedojn kaj @-nomon al StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:350 ../../addon/twitter/twitter.php:206
-msgid "Clear OAuth configuration"
-msgstr "ForviÅi OAuth agordojn"
-
-#: ../../addon/statusnet/statusnet.php:559
-msgid "API URL"
-msgstr "API URL adreso"
-
-#: ../../addon/infiniteimprobabilitydrive/infiniteimprobabilitydrive.php:19
-msgid "Infinite Improbability Drive"
-msgstr "Senfina Probableca Pelilo"
-
-#: ../../addon/tumblr/tumblr.php:36
-msgid "Post to Tumblr"
-msgstr "AfiÅi al Tumblr"
-
-#: ../../addon/tumblr/tumblr.php:67
-msgid "Tumblr Post Settings"
-msgstr "Agordoj pri afiÅoj ĉe Tumblr"
-
-#: ../../addon/tumblr/tumblr.php:69
-msgid "Enable Tumblr Post Plugin"
-msgstr "Åœalti la kromprogramon por Tumblr afiÅoj"
-
-#: ../../addon/tumblr/tumblr.php:74
-msgid "Tumblr login"
-msgstr "Salutnomo ĉe Tumblr"
-
-#: ../../addon/tumblr/tumblr.php:79
-msgid "Tumblr password"
-msgstr "Pasvorto ĉe Tumblr"
-
-#: ../../addon/tumblr/tumblr.php:84
-msgid "Post to Tumblr by default"
-msgstr "DefaÅ­lte afiÅi ĉe Tumblr"
-
-#: ../../addon/numfriends/numfriends.php:46
-msgid "Numfriends settings updated."
-msgstr "Äœisdatigis agordojn por Numfriends."
-
-#: ../../addon/numfriends/numfriends.php:77
-msgid "Numfriends Settings"
-msgstr "Agordoj por Numfriends"
-
-#: ../../addon/numfriends/numfriends.php:79
-msgid "How many contacts to display on profile sidebar"
-msgstr "Kiom da kontaktoj mi montru en la flanka strio"
-
-#: ../../addon/gnot/gnot.php:48
-msgid "Gnot settings updated."
-msgstr "Äœisdatigis Gnot agordojn."
-
-#: ../../addon/gnot/gnot.php:79
-msgid "Gnot Settings"
-msgstr "Agordoj por Gnot"
-
-#: ../../addon/gnot/gnot.php:81
-msgid ""
-"Allows threading of email comment notifications on Gmail and anonymising the"
-" subject line."
-msgstr "Permesas la ĉenadon de retpoÅtaj atentigoj pri komentoj ĉe Gmail kan anonimigado de la temlinio."
-
-#: ../../addon/gnot/gnot.php:82
-msgid "Enable this plugin/addon?"
-msgstr "Åœalti tiun kromprogramon?"
-
-#: ../../addon/gnot/gnot.php:97
-#, php-format
-msgid "[Friendica:Notify] Comment to conversation #%d"
-msgstr "[Friendica:Atentigo] Komento pri konversacio #%d"
-
-#: ../../addon/wppost/wppost.php:42
-msgid "Post to Wordpress"
-msgstr "AfiÅi al Wordpress"
-
-#: ../../addon/wppost/wppost.php:76
-msgid "WordPress Post Settings"
-msgstr "Agordoj por WordPress afiÅojn"
-
-#: ../../addon/wppost/wppost.php:78
-msgid "Enable WordPress Post Plugin"
-msgstr "Åœalti la Wordpress-afiÅo kromprogramon"
-
-#: ../../addon/wppost/wppost.php:83
-msgid "WordPress username"
-msgstr "WordPress salutnomo"
-
-#: ../../addon/wppost/wppost.php:88
-msgid "WordPress password"
-msgstr "WordPress pasvorto"
-
-#: ../../addon/wppost/wppost.php:93
-msgid "WordPress API URL"
-msgstr "Wordpress API URL adreso"
-
-#: ../../addon/wppost/wppost.php:98
-msgid "Post to WordPress by default"
-msgstr "DefaÅ­lte afiÅi al WordPress"
-
-#: ../../addon/wppost/wppost.php:103
-msgid "Provide a backlink to the Friendica post"
-msgstr "Provizi re-ligilon al la Friendica afiÅo"
-
-#: ../../addon/wppost/wppost.php:207
-msgid "Read the original post and comment stream on Friendica"
-msgstr "Legi la originalan afiÅon kaj komentfluo ĉe Friendica"
-
-#: ../../addon/showmore/showmore.php:38
-msgid "\"Show more\" Settings"
-msgstr "\"Montri pli\" agordoj"
-
-#: ../../addon/showmore/showmore.php:41
-msgid "Enable Show More"
-msgstr "Åœalti \"montri pli\""
-
-#: ../../addon/showmore/showmore.php:44
-msgid "Cutting posts after how much characters"
-msgstr "Limitigi afiÅojn al kiom da literoj"
-
-#: ../../addon/showmore/showmore.php:65
-msgid "Show More Settings saved."
-msgstr "Konservis \"montri pli\" agordojn."
-
-#: ../../addon/piwik/piwik.php:79
-msgid ""
-"This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> "
-"analytics tool."
-msgstr "Ĉi retejo uzas <a href='http://www.piwik.org'>Piwik</a> kiel retuma analizilo."
-
-#: ../../addon/piwik/piwik.php:82
-#, php-format
-msgid ""
-"If you do not want that your visits are logged this way you <a href='%s'>can"
-" set a cookie to prevent Piwik from tracking further visits of the site</a> "
-"(opt-out)."
-msgstr "Se ni ne protokolu viajn vizitojn tiel, vi <a href='%s'>povas agordi kuketon por malpermesi Piwik al plu protokoli pliajn vizitojn</a> (mem-for-elekti / opt-out)."
-
-#: ../../addon/piwik/piwik.php:90
-msgid "Piwik Base URL"
-msgstr "Piwik baza URL adreso"
-
-#: ../../addon/piwik/piwik.php:90
-msgid ""
-"Absolute path to your Piwik installation. (without protocol (http/s), with "
-"trailing slash)"
-msgstr "Absoluta vojo al via Piwik instalo. (sen protokolo (http/s), inkluzive vosta oblikva streketo)"
-
-#: ../../addon/piwik/piwik.php:91
-msgid "Site ID"
-msgstr "Reteja idento"
-
-#: ../../addon/piwik/piwik.php:92
-msgid "Show opt-out cookie link?"
-msgstr "Montru ligilon al kuketo por mem-for-elekti (opt-out)?"
-
-#: ../../addon/piwik/piwik.php:93
-msgid "Asynchronous tracking"
-msgstr "Nesinkrona spurado."
-
-#: ../../addon/twitter/twitter.php:73
-msgid "Post to Twitter"
-msgstr "AfiÅi ĉe Twitter"
-
-#: ../../addon/twitter/twitter.php:122
-msgid "Twitter settings updated."
-msgstr "Äœisdatigis Twitter agordojn."
-
-#: ../../addon/twitter/twitter.php:146
-msgid "Twitter Posting Settings"
-msgstr "Agordoj por afiÅi ĉe Twitter"
-
-#: ../../addon/twitter/twitter.php:153
-msgid ""
-"No consumer key pair for Twitter found. Please contact your site "
-"administrator."
-msgstr "Ne trovis klientajn Ålosilojn por Twitter. Bonvolu kontakti vian retejan administranton."
-
-#: ../../addon/twitter/twitter.php:172
-msgid ""
-"At this Friendica instance the Twitter plugin was enabled but you have not "
-"yet connected your account to your Twitter account. To do so click the "
-"button below to get a PIN from Twitter which you have to copy into the input"
-" box below and submit the form. Only your <strong>public</strong> posts will"
-" be posted to Twitter."
-msgstr "Je ĉi tiu Friendica retejo, la Twitter kromprogramo jam estas Åaltita, sed via konto anokoraÅ­ ne estas konektita kun via Twitter konto. Por fari tion, klaku la supran butonon por atingi nombrokodon de Twitter, kion vi kopiu en la supran eniga ĉelo, kaj sendu la formularon. Nur viaj <strong>publikaj</strong> afiÅoj estas plusendota al Twitter. "
-
-#: ../../addon/twitter/twitter.php:173
-msgid "Log in with Twitter"
-msgstr "Ensaluti kun Twitter"
-
-#: ../../addon/twitter/twitter.php:175
-msgid "Copy the PIN from Twitter here"
-msgstr "Alglui la PIN de Twitter ĉi tie"
-
-#: ../../addon/twitter/twitter.php:190
-msgid ""
-"If enabled all your <strong>public</strong> postings can be posted to the "
-"associated Twitter account. You can choose to do so by default (here) or for"
-" every posting separately in the posting options when writing the entry."
-msgstr "Kiam Åaltita, ĉiuj <strong>publikaj</strong> afiÅoj de vi ankaÅ­ eblas esti afiÅota al la asociigita Twitter konto. Vi povas elekti Äin defaÅ­lte (ĉi tie) au unuope por ĉiuj afiÅoj kiam vi skribos ilin."
-
-#: ../../addon/twitter/twitter.php:192
-msgid ""
-"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile "
-"details from unknown viewers?</em>) the link potentially included in public "
-"postings relayed to Twitter will lead the visitor to a blank page informing "
-"the visitor that the access to your profile has been restricted."
-msgstr "<strong>Averto</strong>: LaÅ­ viaj privatecaj agordoj (<em>KaÅi viajn profilajn detalojn al nekonataj spektantoj?</em>), la ligilo en publikaj afiÅoj plusendata al Twitter gvidas vizitontojn al malplena paÄo sciigante ilin ke atingo al via profilo estas lmitigita."
-
-#: ../../addon/twitter/twitter.php:195
-msgid "Allow posting to Twitter"
-msgstr "Permesi afiÅojn al Twitter"
-
-#: ../../addon/twitter/twitter.php:198
-msgid "Send public postings to Twitter by default"
-msgstr "DefaÅ­lte sendi publikajn afiÅojn al Twitter"
-
-#: ../../addon/twitter/twitter.php:201
-msgid "Send linked #-tags and @-names to Twitter"
-msgstr "Sendi ligitajn #-etikedojn kaj @-nomon al Twitter"
-
-#: ../../addon/twitter/twitter.php:389
-msgid "Consumer key"
-msgstr "Åœlosilo de Kliento"
-
-#: ../../addon/twitter/twitter.php:390
-msgid "Consumer secret"
-msgstr "Sekreto de Kliento"
-
-#: ../../addon/irc/irc.php:44
-msgid "IRC Settings"
-msgstr "IRC Agordoj"
-
-#: ../../addon/irc/irc.php:46
-msgid "Channel(s) to auto connect (comma separated)"
-msgstr "AÅ­tomate konektiÄi al la kanalo(j) (disigita per komo)"
-
-#: ../../addon/irc/irc.php:51
-msgid "Popular Channels (comma separated)"
-msgstr "Popularaj kanaloj (disigita per komo)"
-
-#: ../../addon/irc/irc.php:69
-msgid "IRC settings saved."
-msgstr "IRC agordoj konservitaj."
-
-#: ../../addon/irc/irc.php:74
-msgid "IRC Chatroom"
-msgstr "IRC babilejo"
-
-#: ../../addon/irc/irc.php:96
-msgid "Popular Channels"
-msgstr "Popularaj Kanaloj"
-
-#: ../../addon/blogger/blogger.php:42
-msgid "Post to blogger"
-msgstr "AfiÅi al blogger"
-
-#: ../../addon/blogger/blogger.php:74
-msgid "Blogger Post Settings"
-msgstr "Agordo pri Blogger AfiÅoj"
-
-#: ../../addon/blogger/blogger.php:76
-msgid "Enable Blogger Post Plugin"
-msgstr "Åœalti la Blogger afiÅo kromprogramon"
-
-#: ../../addon/blogger/blogger.php:81
-msgid "Blogger username"
-msgstr "Blogger uzantonomo"
-
-#: ../../addon/blogger/blogger.php:86
-msgid "Blogger password"
-msgstr "Blogger pasvorto"
-
-#: ../../addon/blogger/blogger.php:91
-msgid "Blogger API URL"
-msgstr "Blogger API URL"
-
-#: ../../addon/blogger/blogger.php:96
-msgid "Post to Blogger by default"
-msgstr "DefaÅ­lte afiÅi al Blogger"
-
-#: ../../addon/posterous/posterous.php:37
-msgid "Post to Posterous"
-msgstr "AfiÅi al Posterous"
-
-#: ../../addon/posterous/posterous.php:70
-msgid "Posterous Post Settings"
-msgstr "Agordoj pri afiÅoj ĉe Posterous"
-
-#: ../../addon/posterous/posterous.php:72
-msgid "Enable Posterous Post Plugin"
-msgstr "Åœalti la Poserous-afiÅo kromprogramon"
-
-#: ../../addon/posterous/posterous.php:77
-msgid "Posterous login"
-msgstr "Posterous salutnomo"
-
-#: ../../addon/posterous/posterous.php:82
-msgid "Posterous password"
-msgstr "Posterous pasvorto"
-
-#: ../../addon/posterous/posterous.php:87
-msgid "Posterous site ID"
-msgstr "Idento de Posterous retejo"
-
-#: ../../addon/posterous/posterous.php:92
-msgid "Posterous API token"
-msgstr "API ĵetono de Posterous retejo"
-
-#: ../../addon/posterous/posterous.php:97
-msgid "Post to Posterous by default"
-msgstr "DefaÅ­lte afiÅi al Posterous"
-
-#: ../../view/theme/cleanzero/config.php:82
-#: ../../view/theme/diabook/config.php:192
-#: ../../view/theme/quattro/config.php:54 ../../view/theme/dispy/config.php:72
-msgid "Theme settings"
-msgstr "Agordoj pri la etoso"
-
-#: ../../view/theme/cleanzero/config.php:83
-msgid "Set resize level for images in posts and comments (width and height)"
-msgstr "Agordi la regrandignivelo por bildoj en afiÅoj kaj komentoj (larÄo kaj alto)"
-
-#: ../../view/theme/cleanzero/config.php:84
-#: ../../view/theme/diabook/config.php:193
-#: ../../view/theme/dispy/config.php:73
-msgid "Set font-size for posts and comments"
-msgstr "Agordi la tiparan grandon por afiÅoj kaj komentoj"
-
-#: ../../view/theme/cleanzero/config.php:85
-msgid "Set theme width"
-msgstr "Agordi la larÄo por la etoso"
-
-#: ../../view/theme/cleanzero/config.php:86
-#: ../../view/theme/quattro/config.php:56
-msgid "Color scheme"
-msgstr "Kolorskemo"
-
-#: ../../view/theme/diabook/theme.php:127 ../../include/nav.php:49
-#: ../../include/nav.php:115
-msgid "Your posts and conversations"
-msgstr "Viaj afiÅoj kaj komunikadoj"
-
-#: ../../view/theme/diabook/theme.php:128 ../../include/nav.php:50
-msgid "Your profile page"
-msgstr "Via profilo"
-
-#: ../../view/theme/diabook/theme.php:129
-msgid "Your contacts"
-msgstr "Viaj kontaktoj"
-
-#: ../../view/theme/diabook/theme.php:130 ../../include/nav.php:51
-msgid "Your photos"
-msgstr "Viaj bildoj"
-
-#: ../../view/theme/diabook/theme.php:131 ../../include/nav.php:52
-msgid "Your events"
-msgstr "Viaj okazoj"
-
-#: ../../view/theme/diabook/theme.php:132 ../../include/nav.php:53
-msgid "Personal notes"
-msgstr "Personaj notoj"
-
-#: ../../view/theme/diabook/theme.php:132 ../../include/nav.php:53
-msgid "Your personal photos"
-msgstr "Viaj personaj bildoj"
-
-#: ../../view/theme/diabook/theme.php:134
-#: ../../view/theme/diabook/theme.php:643
-#: ../../view/theme/diabook/theme.php:747
-#: ../../view/theme/diabook/config.php:201
-msgid "Community Pages"
-msgstr "Komunumaj paÄoj"
-
-#: ../../view/theme/diabook/theme.php:490
-#: ../../view/theme/diabook/theme.php:749
-#: ../../view/theme/diabook/config.php:203
-msgid "Community Profiles"
-msgstr "Komunumaj Profiloj"
-
-#: ../../view/theme/diabook/theme.php:511
-#: ../../view/theme/diabook/theme.php:754
-#: ../../view/theme/diabook/config.php:208
-msgid "Last users"
-msgstr "Ä´usaj uzantoj"
-
-#: ../../view/theme/diabook/theme.php:540
-#: ../../view/theme/diabook/theme.php:756
-#: ../../view/theme/diabook/config.php:210
-msgid "Last likes"
-msgstr "Ä´usaj Åatitaj elementoj"
-
-#: ../../view/theme/diabook/theme.php:585
-#: ../../view/theme/diabook/theme.php:755
-#: ../../view/theme/diabook/config.php:209
-msgid "Last photos"
-msgstr "Ä´usaj bildoj"
-
-#: ../../view/theme/diabook/theme.php:622
-#: ../../view/theme/diabook/theme.php:752
-#: ../../view/theme/diabook/config.php:206
-msgid "Find Friends"
-msgstr "Trovi Amikojn"
-
-#: ../../view/theme/diabook/theme.php:623
-msgid "Local Directory"
-msgstr "Loka Katalogo"
-
-#: ../../view/theme/diabook/theme.php:625 ../../include/contact_widgets.php:35
-msgid "Similar Interests"
-msgstr "Similaj Interesoj"
-
-#: ../../view/theme/diabook/theme.php:627 ../../include/contact_widgets.php:37
-msgid "Invite Friends"
-msgstr "Inviti amikojn"
-
-#: ../../view/theme/diabook/theme.php:678
-#: ../../view/theme/diabook/theme.php:748
-#: ../../view/theme/diabook/config.php:202
-msgid "Earth Layers"
-msgstr "Tertavoloj (Earth Layers)"
-
-#: ../../view/theme/diabook/theme.php:683
-msgid "Set zoomfactor for Earth Layers"
-msgstr "Agordi zoman faktoron por Tertavoloj"
-
-#: ../../view/theme/diabook/theme.php:684
-#: ../../view/theme/diabook/config.php:199
-msgid "Set longitude (X) for Earth Layers"
-msgstr "Agordi longitudon (X) por Tertavoloj"
-
-#: ../../view/theme/diabook/theme.php:685
-#: ../../view/theme/diabook/config.php:200
-msgid "Set latitude (Y) for Earth Layers"
-msgstr "Agordi latitudon (Y) por Tertavoloj"
-
-#: ../../view/theme/diabook/theme.php:698
-#: ../../view/theme/diabook/theme.php:750
-#: ../../view/theme/diabook/config.php:204
-msgid "Help or @NewHere ?"
-msgstr "Helpu aÅ­ @NewHere ?"
-
-#: ../../view/theme/diabook/theme.php:705
-#: ../../view/theme/diabook/theme.php:751
-#: ../../view/theme/diabook/config.php:205
-msgid "Connect Services"
-msgstr "Konekti Servojn"
-
-#: ../../view/theme/diabook/theme.php:712
-#: ../../view/theme/diabook/theme.php:753
-msgid "Last Tweets"
-msgstr "Ĵusaj Pepaĵoj"
-
-#: ../../view/theme/diabook/theme.php:715
-#: ../../view/theme/diabook/config.php:197
-msgid "Set twitter search term"
-msgstr "Agordi Twitter serĉtekston"
-
-#: ../../view/theme/diabook/theme.php:735
-#: ../../view/theme/diabook/theme.php:736
-#: ../../view/theme/diabook/theme.php:737
-#: ../../view/theme/diabook/theme.php:738
-#: ../../view/theme/diabook/theme.php:739
-#: ../../view/theme/diabook/theme.php:740
-#: ../../view/theme/diabook/theme.php:741
-#: ../../view/theme/diabook/theme.php:742
-#: ../../view/theme/diabook/theme.php:743
-#: ../../view/theme/diabook/theme.php:744 ../../include/acl_selectors.php:288
-msgid "don't show"
-msgstr "kaÅi"
-
-#: ../../view/theme/diabook/theme.php:735
-#: ../../view/theme/diabook/theme.php:736
-#: ../../view/theme/diabook/theme.php:737
-#: ../../view/theme/diabook/theme.php:738
-#: ../../view/theme/diabook/theme.php:739
-#: ../../view/theme/diabook/theme.php:740
-#: ../../view/theme/diabook/theme.php:741
-#: ../../view/theme/diabook/theme.php:742
-#: ../../view/theme/diabook/theme.php:743
-#: ../../view/theme/diabook/theme.php:744 ../../include/acl_selectors.php:287
-msgid "show"
-msgstr "montri"
-
-#: ../../view/theme/diabook/theme.php:745
-msgid "Show/hide boxes at right-hand column:"
-msgstr "KaÅi/montri kestojn ĉe dekstra kolumno:"
-
-#: ../../view/theme/diabook/config.php:194
-#: ../../view/theme/dispy/config.php:74
-msgid "Set line-height for posts and comments"
-msgstr "Agordi la linigrandon por afiÅoj kaj komentoj"
-
-#: ../../view/theme/diabook/config.php:195
-msgid "Set resolution for middle column"
-msgstr "Agordi la distingivon por la meza kolumno"
-
-#: ../../view/theme/diabook/config.php:196
-msgid "Set color scheme"
-msgstr "Agordi Kolorskemon"
-
-#: ../../view/theme/diabook/config.php:198
-msgid "Set zoomfactor for Earth Layer"
-msgstr "Agordi zoman faktoron de Tertavolo"
-
-#: ../../view/theme/diabook/config.php:207
-msgid "Last tweets"
-msgstr "Ĵusaj pepaĵoj"
-
-#: ../../view/theme/quattro/config.php:55
-msgid "Alignment"
-msgstr "Äœisrandigo"
-
-#: ../../view/theme/quattro/config.php:55
-msgid "Left"
-msgstr "Maldekstren"
-
-#: ../../view/theme/quattro/config.php:55
-msgid "Center"
-msgstr "Centren"
-
-#: ../../view/theme/dispy/config.php:75
-msgid "Set colour scheme"
-msgstr "Agordi Kolorskemon"
-
-#: ../../include/profile_advanced.php:17 ../../boot.php:1138
-msgid "Gender:"
-msgstr "Sekso:"
-
-#: ../../include/profile_advanced.php:22
-msgid "j F, Y"
-msgstr "j F, Y"
-
-#: ../../include/profile_advanced.php:23
-msgid "j F"
-msgstr "j F"
-
-#: ../../include/profile_advanced.php:30
-msgid "Birthday:"
-msgstr "NaskiÄtago:"
-
-#: ../../include/profile_advanced.php:34
-msgid "Age:"
-msgstr "AÄo:"
-
-#: ../../include/profile_advanced.php:37 ../../boot.php:1141
-msgid "Status:"
-msgstr "Stato:"
-
-#: ../../include/profile_advanced.php:43
-#, php-format
-msgid "for %1$d %2$s"
-msgstr "por %1$d %2$s"
-
-#: ../../include/profile_advanced.php:48 ../../boot.php:1143
-msgid "Homepage:"
-msgstr "HejmpaÄo:"
-
-#: ../../include/profile_advanced.php:52
-msgid "Tags:"
-msgstr "Markoj:"
-
-#: ../../include/profile_advanced.php:56
-msgid "Religion:"
-msgstr "Religio:"
-
-#: ../../include/profile_advanced.php:58
-msgid "About:"
-msgstr "Pri:"
-
-#: ../../include/profile_advanced.php:60
-msgid "Hobbies/Interests:"
-msgstr "Åœatokupoj/Interesoj:"
-
-#: ../../include/profile_advanced.php:67
-msgid "Contact information and Social Networks:"
-msgstr "Kontaktinformoj kaj Interkonaj Retejoj:"
-
-#: ../../include/profile_advanced.php:69
-msgid "Musical interests:"
-msgstr "Muzaikaj interesoj:"
-
-#: ../../include/profile_advanced.php:71
-msgid "Books, literature:"
-msgstr "Libroj, literaturo:"
-
-#: ../../include/profile_advanced.php:73
-msgid "Television:"
-msgstr "Televido:"
-
-#: ../../include/profile_advanced.php:75
-msgid "Film/dance/culture/entertainment:"
-msgstr "Filmoj/dancoj/arto/amuzaĵoj:"
-
-#: ../../include/profile_advanced.php:77
-msgid "Love/Romance:"
-msgstr "Amo/romanco:"
-
-#: ../../include/profile_advanced.php:79
-msgid "Work/employment:"
-msgstr "Laboro:"
-
-#: ../../include/profile_advanced.php:81
-msgid "School/education:"
-msgstr "Lernejo/eduko:"
-
-#: ../../include/contact_selectors.php:32
-msgid "Unknown | Not categorised"
-msgstr "Nekonata | Nekatorigita"
-
-#: ../../include/contact_selectors.php:33
-msgid "Block immediately"
-msgstr "Bloki tuj"
-
-#: ../../include/contact_selectors.php:34
-msgid "Shady, spammer, self-marketer"
-msgstr "Suspekta, spamisto, memmerkatisto"
-
-#: ../../include/contact_selectors.php:35
-msgid "Known to me, but no opinion"
-msgstr "Konata al mi, sed mi ne havas opinion"
-
-#: ../../include/contact_selectors.php:36
-msgid "OK, probably harmless"
-msgstr "OK, verÅajne sendanÄera"
-
-#: ../../include/contact_selectors.php:37
-msgid "Reputable, has my trust"
-msgstr "Fidinda laÅ­ mi"
-
-#: ../../include/contact_selectors.php:56
-msgid "Frequently"
-msgstr "Ofte"
-
-#: ../../include/contact_selectors.php:57
-msgid "Hourly"
-msgstr "Ĉiuhore"
-
-#: ../../include/contact_selectors.php:58
-msgid "Twice daily"
-msgstr "Duope ĉiutage"
-
-#: ../../include/contact_selectors.php:59
-msgid "Daily"
-msgstr "Ĉiutage"
-
-#: ../../include/contact_selectors.php:60
-msgid "Weekly"
-msgstr "Ĉiusemajne"
-
-#: ../../include/contact_selectors.php:61
-msgid "Monthly"
-msgstr "Ĉiumonate"
-
-#: ../../include/contact_selectors.php:77
-msgid "OStatus"
-msgstr "OStatus"
-
-#: ../../include/contact_selectors.php:78
-msgid "RSS/Atom"
-msgstr "RSS/Atom"
-
-#: ../../include/contact_selectors.php:82
-msgid "Zot!"
-msgstr "Zot!"
-
-#: ../../include/contact_selectors.php:83
-msgid "LinkedIn"
-msgstr "LinkedIn"
-
-#: ../../include/contact_selectors.php:84
-msgid "XMPP/IM"
-msgstr "XMPP/TujmesaÄilo"
-
-#: ../../include/contact_selectors.php:85
-msgid "MySpace"
-msgstr "MySpace"
-
-#: ../../include/profile_selectors.php:6
-msgid "Male"
-msgstr "Vira"
-
-#: ../../include/profile_selectors.php:6
-msgid "Female"
-msgstr "Ina"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Male"
-msgstr "Nuntempe Vira"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Female"
-msgstr "Nuntempe Ina"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Male"
-msgstr "Ĉefe Vira"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Female"
-msgstr "Ĉefe Ina"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transgender"
-msgstr "Transgenra"
-
-#: ../../include/profile_selectors.php:6
-msgid "Intersex"
-msgstr "Interseksa"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transsexual"
-msgstr "Transseksa"
-
-#: ../../include/profile_selectors.php:6
-msgid "Hermaphrodite"
-msgstr "Hermafrodita"
-
-#: ../../include/profile_selectors.php:6
-msgid "Neuter"
-msgstr "NeÅ­tra"
-
-#: ../../include/profile_selectors.php:6
-msgid "Non-specific"
-msgstr "Nespecifa"
-
-#: ../../include/profile_selectors.php:6
-msgid "Other"
-msgstr "Alia"
-
-#: ../../include/profile_selectors.php:6
-msgid "Undecided"
-msgstr "Nedecida"
-
-#: ../../include/profile_selectors.php:23
-msgid "Males"
-msgstr "Viroj"
-
-#: ../../include/profile_selectors.php:23
-msgid "Females"
-msgstr "Inoj"
-
-#: ../../include/profile_selectors.php:23
-msgid "Gay"
-msgstr "Geja"
-
-#: ../../include/profile_selectors.php:23
-msgid "Lesbian"
-msgstr "Lesba"
-
-#: ../../include/profile_selectors.php:23
-msgid "No Preference"
-msgstr "Neniu Prefero"
-
-#: ../../include/profile_selectors.php:23
-msgid "Bisexual"
-msgstr "AmbaÅ­seksema"
-
-#: ../../include/profile_selectors.php:23
-msgid "Autosexual"
-msgstr "Memseksema"
-
-#: ../../include/profile_selectors.php:23
-msgid "Abstinent"
-msgstr "Abstinema"
-
-#: ../../include/profile_selectors.php:23
-msgid "Virgin"
-msgstr "Virgulino"
-
-#: ../../include/profile_selectors.php:23
-msgid "Deviant"
-msgstr "Devia"
-
-#: ../../include/profile_selectors.php:23
-msgid "Fetish"
-msgstr "Fetiĉo"
-
-#: ../../include/profile_selectors.php:23
-msgid "Oodles"
-msgstr "Amasa"
-
-#: ../../include/profile_selectors.php:23
-msgid "Nonsexual"
-msgstr "Neseksa"
-
-#: ../../include/profile_selectors.php:42
-msgid "Single"
-msgstr "Sola"
-
-#: ../../include/profile_selectors.php:42
-msgid "Lonely"
-msgstr "Soleca"
-
-#: ../../include/profile_selectors.php:42
-msgid "Available"
-msgstr "Havebla"
-
-#: ../../include/profile_selectors.php:42
-msgid "Unavailable"
-msgstr "Nehavebla"
-
-#: ../../include/profile_selectors.php:42
-msgid "Has crush"
-msgstr "Sekrete enamiÄinta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Infatuated"
-msgstr "Blinda amo"
-
-#: ../../include/profile_selectors.php:42
-msgid "Dating"
-msgstr "Rendevuanta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Unfaithful"
-msgstr "Malfidela"
-
-#: ../../include/profile_selectors.php:42
-msgid "Sex Addict"
-msgstr "Seksmaniulo"
-
-#: ../../include/profile_selectors.php:42 ../../include/user.php:278
-msgid "Friends"
-msgstr "Amikoj"
-
-#: ../../include/profile_selectors.php:42
-msgid "Friends/Benefits"
-msgstr "Amikoj/AvantaÄoj"
-
-#: ../../include/profile_selectors.php:42
-msgid "Casual"
-msgstr "Neformala"
-
-#: ../../include/profile_selectors.php:42
-msgid "Engaged"
-msgstr "Fianĉiginta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Married"
-msgstr "EdziÄinta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Imaginarily married"
-msgstr "Image edziÄinta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Partners"
-msgstr "Geparuloj"
-
-#: ../../include/profile_selectors.php:42
-msgid "Cohabiting"
-msgstr "KunloÄanta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Common law"
-msgstr "Registrita partnereco "
-
-#: ../../include/profile_selectors.php:42
-msgid "Happy"
-msgstr "Feliĉa"
-
-#: ../../include/profile_selectors.php:42
-msgid "Not looking"
-msgstr "Ne interesiÄis"
-
-#: ../../include/profile_selectors.php:42
-msgid "Swinger"
-msgstr "Swinger"
-
-#: ../../include/profile_selectors.php:42
-msgid "Betrayed"
-msgstr "Trompita"
-
-#: ../../include/profile_selectors.php:42
-msgid "Separated"
-msgstr "DisiÄinta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Unstable"
-msgstr "Malfirma"
-
-#: ../../include/profile_selectors.php:42
-msgid "Divorced"
-msgstr "EksedziÄinta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Imaginarily divorced"
-msgstr "Image eksedziÄinta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Widowed"
-msgstr "Vidva"
-
-#: ../../include/profile_selectors.php:42
-msgid "Uncertain"
-msgstr "Ne certa"
-
-#: ../../include/profile_selectors.php:42
-msgid "It's complicated"
-msgstr "Estas komplika"
-
-#: ../../include/profile_selectors.php:42
-msgid "Don't care"
-msgstr "Egala"
-
-#: ../../include/profile_selectors.php:42
-msgid "Ask me"
-msgstr "Demandu min"
-
-#: ../../include/event.php:20 ../../include/bb2diaspora.php:341
-msgid "Starts:"
-msgstr "Ekas:"
-
-#: ../../include/event.php:30 ../../include/bb2diaspora.php:349
-msgid "Finishes:"
-msgstr "Finas:"
-
-#: ../../include/delivery.php:456 ../../include/notifier.php:678
-msgid "(no subject)"
-msgstr "(neniu temo)"
-
-#: ../../include/delivery.php:463 ../../include/enotify.php:26
-#: ../../include/notifier.php:685
-msgid "noreply"
-msgstr "nerespondi"
-
-#: ../../include/Scrape.php:572
-msgid " on Last.fm"
-msgstr " ĉe Last.fm"
-
-#: ../../include/text.php:243
-msgid "prev"
-msgstr "antaÅ­a"
-
-#: ../../include/text.php:245
-msgid "first"
-msgstr "unua"
-
-#: ../../include/text.php:274
-msgid "last"
-msgstr "lasta"
-
-#: ../../include/text.php:277
-msgid "next"
-msgstr "sekvanta"
-
-#: ../../include/text.php:568
-msgid "No contacts"
-msgstr "Neniu kontaktoj"
-
-#: ../../include/text.php:577
-#, php-format
-msgid "%d Contact"
-msgid_plural "%d Contacts"
-msgstr[0] "%d Kontakto"
-msgstr[1] "%d Kontaktoj"
-
-#: ../../include/text.php:835
-msgid "Monday"
-msgstr "Lundo"
-
-#: ../../include/text.php:835
-msgid "Tuesday"
-msgstr "Mardo"
-
-#: ../../include/text.php:835
-msgid "Wednesday"
-msgstr "Merkredo"
-
-#: ../../include/text.php:835
-msgid "Thursday"
-msgstr "Ä´aÅ­do"
-
-#: ../../include/text.php:835
-msgid "Friday"
-msgstr "Vendredo"
-
-#: ../../include/text.php:835
-msgid "Saturday"
-msgstr "Sabato"
-
-#: ../../include/text.php:835
-msgid "Sunday"
-msgstr "Dimanĉo"
-
-#: ../../include/text.php:839
-msgid "January"
-msgstr "Januaro"
-
-#: ../../include/text.php:839
-msgid "February"
-msgstr "Februaro"
-
-#: ../../include/text.php:839
-msgid "March"
-msgstr "Marto"
-
-#: ../../include/text.php:839
-msgid "April"
-msgstr "Aprilo"
-
-#: ../../include/text.php:839
-msgid "May"
-msgstr "Majo"
-
-#: ../../include/text.php:839
-msgid "June"
-msgstr "Junio"
-
-#: ../../include/text.php:839
-msgid "July"
-msgstr "Julio"
-
-#: ../../include/text.php:839
-msgid "August"
-msgstr "AÅ­gusto"
-
-#: ../../include/text.php:839
-msgid "September"
-msgstr "Septembro"
-
-#: ../../include/text.php:839
-msgid "October"
-msgstr "Oktobro"
-
-#: ../../include/text.php:839
-msgid "November"
-msgstr "Novembro"
-
-#: ../../include/text.php:839
-msgid "December"
-msgstr "Decembro"
-
-#: ../../include/text.php:925
-msgid "bytes"
-msgstr "bajtoj"
-
-#: ../../include/text.php:945 ../../include/text.php:960
-msgid "remove"
-msgstr "forviÅi"
-
-#: ../../include/text.php:945 ../../include/text.php:960
-msgid "[remove]"
-msgstr "[forviÅi]"
-
-#: ../../include/text.php:948
-msgid "Categories:"
-msgstr "Kategorioj:"
-
-#: ../../include/text.php:963
-msgid "Filed under:"
-msgstr "Enarkivigita kiel:"
-
-#: ../../include/text.php:979 ../../include/text.php:991
-msgid "Click to open/close"
-msgstr "Klaku por malfermi/fermi"
-
-#: ../../include/text.php:1097 ../../include/user.php:236
-msgid "default"
-msgstr "defaÅ­lta"
-
-#: ../../include/text.php:1109
-msgid "Select an alternate language"
-msgstr "Elekti alian lingvon"
-
-#: ../../include/text.php:1319
-msgid "activity"
-msgstr "aktiveco"
-
-#: ../../include/text.php:1321
-msgid "comment"
-msgstr "komento"
-
-#: ../../include/text.php:1322
-msgid "post"
-msgstr "afiÅo"
-
-#: ../../include/text.php:1477
-msgid "Item filed"
-msgstr "Enarkivigis elementon "
-
-#: ../../include/diaspora.php:593
-msgid "Sharing notification from Diaspora network"
-msgstr "Antentigo pri kunhavigado de la Diaspora reto"
-
-#: ../../include/diaspora.php:2085
-msgid "Attachments:"
-msgstr "Kunsendaĵoj:"
-
-#: ../../include/network.php:839
-msgid "view full size"
-msgstr "vidi plengrande"
-
-#: ../../include/oembed.php:135
-msgid "Embedded content"
-msgstr "Enigita enhavo"
-
-#: ../../include/oembed.php:144
-msgid "Embedding disabled"
-msgstr "MalÅaltita enigitado"
-
-#: ../../include/group.php:25
-msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "Revivigis malnovan grupon kun la sama nomo. Permesoj por estantaj elementoj <strong>eble</strong> estas validaj por la grupo kaj estontaj membroj. Se tiu ne estas kiun vi atendis, bonvolu krei alian grupon kun alia nomo."
-
-#: ../../include/group.php:176
-msgid "Default privacy group for new contacts"
-msgstr "DefaÅ­lta privateca grupo por novaj kontaktoj"
-
-#: ../../include/group.php:195
-msgid "Everybody"
-msgstr "Ĉiuj"
-
-#: ../../include/group.php:218
-msgid "edit"
-msgstr "redakti"
-
-#: ../../include/group.php:239
-msgid "Groups"
-msgstr "Grupoj"
-
-#: ../../include/group.php:240
-msgid "Edit group"
-msgstr "Redakti grupon"
-
-#: ../../include/group.php:241
-msgid "Create a new group"
-msgstr "Krei novan grupon"
-
-#: ../../include/group.php:242
-msgid "Contacts not in any group"
-msgstr "Kontaktoj en neniu grupo"
-
-#: ../../include/nav.php:46 ../../boot.php:848
-msgid "Logout"
-msgstr "Elsaluti"
-
-#: ../../include/nav.php:46
-msgid "End this session"
-msgstr "Fini ĉi-tiun seancon"
-
-#: ../../include/nav.php:49 ../../boot.php:1538
-msgid "Status"
-msgstr "Stato"
-
-#: ../../include/nav.php:64
-msgid "Sign in"
-msgstr "Ensaluti"
-
-#: ../../include/nav.php:77
-msgid "Home Page"
-msgstr "HejmpaÄo"
-
-#: ../../include/nav.php:81
-msgid "Create an account"
-msgstr "Krei konton"
-
-#: ../../include/nav.php:86
-msgid "Help and documentation"
-msgstr "Helpo kaj dokumentado"
-
-#: ../../include/nav.php:89
-msgid "Apps"
-msgstr "Programoj"
-
-#: ../../include/nav.php:89
-msgid "Addon applications, utilities, games"
-msgstr "Kromprogramoj, utilaĵoj, ludiloj"
-
-#: ../../include/nav.php:91
-msgid "Search site content"
-msgstr "Serĉu la retejon"
-
-#: ../../include/nav.php:101
-msgid "Conversations on this site"
-msgstr "Konversacioj je ĉi-tiu retejo"
-
-#: ../../include/nav.php:103
-msgid "Directory"
-msgstr "Katalogo"
-
-#: ../../include/nav.php:103
-msgid "People directory"
-msgstr "Katalogo de homoj"
-
-#: ../../include/nav.php:113
-msgid "Conversations from your friends"
-msgstr "Konversacioj de viaj amikoj"
-
-#: ../../include/nav.php:121
-msgid "Friend Requests"
-msgstr "Kontaktpetoj"
-
-#: ../../include/nav.php:123
-msgid "See all notifications"
-msgstr "Vidu ĉiujn atentigojn"
-
-#: ../../include/nav.php:124
-msgid "Mark all system notifications seen"
-msgstr "Marki ĉiujn atentigojn legita"
-
-#: ../../include/nav.php:128
-msgid "Private mail"
-msgstr "Privata poÅto"
-
-#: ../../include/nav.php:129
-msgid "Inbox"
-msgstr "Enirkesto"
-
-#: ../../include/nav.php:130
-msgid "Outbox"
-msgstr "Elirkesto"
-
-#: ../../include/nav.php:134
-msgid "Manage"
-msgstr "Administri"
-
-#: ../../include/nav.php:134
-msgid "Manage other pages"
-msgstr "Administri aliajn paÄojn"
-
-#: ../../include/nav.php:138 ../../boot.php:1096
-msgid "Profiles"
-msgstr "Profiloj"
-
-#: ../../include/nav.php:138 ../../boot.php:1096
-msgid "Manage/edit profiles"
-msgstr "Administri/redakti profilojn"
-
-#: ../../include/nav.php:139
-msgid "Manage/edit friends and contacts"
-msgstr "Administri/redakti amikojn kaj kontaktojn"
-
-#: ../../include/nav.php:146
-msgid "Site setup and configuration"
-msgstr "Agordoj pri la retejo"
-
-#: ../../include/nav.php:170
-msgid "Nothing new here"
-msgstr "Estas neniu nova ĉi tie"
-
-#: ../../include/contact_widgets.php:6
-msgid "Add New Contact"
-msgstr "Aldonu Novan Kontakton"
-
-#: ../../include/contact_widgets.php:7
-msgid "Enter address or web location"
-msgstr "Entajpu adreson aÅ­ retlokon"
-
-#: ../../include/contact_widgets.php:8
-msgid "Example: bob@example.com, http://example.com/barbara"
-msgstr "Ekzemple: bob@example.com, http://example.com/barbara"
-
-#: ../../include/contact_widgets.php:23
-#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "Disponeblas %d invito"
-msgstr[1] "Disponeblas %d invitoj"
-
-#: ../../include/contact_widgets.php:29
-msgid "Find People"
-msgstr "Trovi Homojn"
-
-#: ../../include/contact_widgets.php:30
-msgid "Enter name or interest"
-msgstr "Entajpu nomon aÅ­ intereson"
-
-#: ../../include/contact_widgets.php:31
-msgid "Connect/Follow"
-msgstr "Konekti/Aboni"
-
-#: ../../include/contact_widgets.php:32
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Ekzemple: Robert Morgenstein, Fishing"
-
-#: ../../include/contact_widgets.php:36
-msgid "Random Profile"
-msgstr "Hazarda Profilo"
-
-#: ../../include/contact_widgets.php:68
-msgid "Networks"
-msgstr "Retoj"
-
-#: ../../include/contact_widgets.php:71
-msgid "All Networks"
-msgstr "Ĉiuj Retoj"
-
-#: ../../include/contact_widgets.php:98
-msgid "Saved Folders"
-msgstr "Konservitaj Dosierujoj"
-
-#: ../../include/contact_widgets.php:101 ../../include/contact_widgets.php:129
-msgid "Everything"
-msgstr "Ĉio"
-
-#: ../../include/contact_widgets.php:126
-msgid "Categories"
-msgstr "Kategorioj"
-
-#: ../../include/auth.php:36
-msgid "Logged out."
-msgstr "Elsalutita."
-
-#: ../../include/auth.php:115
-msgid ""
-"We encountered a problem while logging in with the OpenID you provided. "
-"Please check the correct spelling of the ID."
-msgstr "Okazis problemo ensalutinta kun via OpenID. Bonvolu kontroli la ID."
-
-#: ../../include/auth.php:115
-msgid "The error message was:"
-msgstr "La erarmesaÄo estis:"
-
-#: ../../include/datetime.php:43 ../../include/datetime.php:45
-msgid "Miscellaneous"
-msgstr "Diversaj"
-
-#: ../../include/datetime.php:131 ../../include/datetime.php:263
-msgid "year"
-msgstr "jaro"
-
-#: ../../include/datetime.php:136 ../../include/datetime.php:264
-msgid "month"
-msgstr "monato"
-
-#: ../../include/datetime.php:141 ../../include/datetime.php:266
-msgid "day"
-msgstr "tago"
-
-#: ../../include/datetime.php:254
-msgid "never"
-msgstr "neniam"
-
-#: ../../include/datetime.php:260
-msgid "less than a second ago"
-msgstr "antaÅ­ malpli ol unu sekundo"
-
-#: ../../include/datetime.php:263
-msgid "years"
-msgstr "jaroj"
-
-#: ../../include/datetime.php:264
-msgid "months"
-msgstr "monatoj"
-
-#: ../../include/datetime.php:265
-msgid "week"
-msgstr "semajno"
-
-#: ../../include/datetime.php:265
-msgid "weeks"
-msgstr "semajnoj"
-
-#: ../../include/datetime.php:266
-msgid "days"
-msgstr "tagoj"
-
-#: ../../include/datetime.php:267
-msgid "hour"
-msgstr "horo"
-
-#: ../../include/datetime.php:267
-msgid "hours"
-msgstr "horoj"
-
-#: ../../include/datetime.php:268
-msgid "minute"
-msgstr "minuto"
-
-#: ../../include/datetime.php:268
-msgid "minutes"
-msgstr "minutoj"
-
-#: ../../include/datetime.php:269
-msgid "second"
-msgstr "sekundo"
-
-#: ../../include/datetime.php:269
-msgid "seconds"
-msgstr "sekundoj"
-
-#: ../../include/datetime.php:278
-#, php-format
-msgid "%1$d %2$s ago"
-msgstr "antaÅ­ %1$d %2$s"
-
-#: ../../include/datetime.php:450 ../../include/items.php:1460
-#, php-format
-msgid "%s's birthday"
-msgstr "NaskiÄtago de %s"
-
-#: ../../include/datetime.php:451 ../../include/items.php:1461
-#, php-format
-msgid "Happy Birthday %s"
-msgstr "Feliĉan NaskiÄtagon al %s"
-
-#: ../../include/onepoll.php:399
-msgid "From: "
-msgstr "De: "
-
-#: ../../include/bbcode.php:216 ../../include/bbcode.php:236
-msgid "$1 wrote:"
-msgstr "$1 skribis:"
-
-#: ../../include/bbcode.php:251 ../../include/bbcode.php:328
-msgid "Image/photo"
-msgstr "Bildo"
-
-#: ../../include/dba.php:41
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "Ne trovis DNS informojn por datumbaza servilo '%s'."
-
-#: ../../include/message.php:15 ../../include/message.php:171
-msgid "[no subject]"
-msgstr "[neniu temo]"
-
-#: ../../include/acl_selectors.php:286
-msgid "Visible to everybody"
-msgstr "Videbla al ĉiuj"
-
-#: ../../include/enotify.php:14
-msgid "Friendica Notification"
-msgstr "Friendica Atentigo"
-
-#: ../../include/enotify.php:17
-msgid "Thank You,"
-msgstr "Dankon,"
-
-#: ../../include/enotify.php:19
-#, php-format
-msgid "%s Administrator"
-msgstr "%s Administranto"
-
-#: ../../include/enotify.php:38
-#, php-format
-msgid "%s <!item_type!>"
-msgstr "%s <!item_type!>"
-
-#: ../../include/enotify.php:42
-#, php-format
-msgid "[Friendica:Notify] New mail received at %s"
-msgstr "[Friendica:Atentigo] Ricevis novan retpoÅton ĉe %s"
-
-#: ../../include/enotify.php:44
-#, php-format
-msgid "%1$s sent you a new private message at %2$s."
-msgstr "%1$s sendis al vi novan privatan mesaÄon ĉe %2$s."
-
-#: ../../include/enotify.php:45
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s sendis al vi %2$s."
-
-#: ../../include/enotify.php:45
-msgid "a private message"
-msgstr "privatan mesaÄon"
-
-#: ../../include/enotify.php:46
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Bonvolu viziti %s por vidi aÅ­ respondi viajn privatajn mesaÄojn."
-
-#: ../../include/enotify.php:73
-#, php-format
-msgid "%1$s commented on [url=%2$s]a %3$s[/url]"
-msgstr "%1$s komentis pri [url=%2$s]%3$s[/url]"
-
-#: ../../include/enotify.php:80
-#, php-format
-msgid "%1$s commented on [url=%2$s]%3$s's %4$s[/url]"
-msgstr "%1$s komentis pri [url=%2$s]%4$s de %3$s[/url]"
-
-#: ../../include/enotify.php:88
-#, php-format
-msgid "%1$s commented on [url=%2$s]your %3$s[/url]"
-msgstr "%1$s komentis pri [url=%2$s]via %3$s[/url]"
-
-#: ../../include/enotify.php:98
-#, php-format
-msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Friendica:Atentigo] Komento pri konversacio #%1$d de %2$s"
-
-#: ../../include/enotify.php:99
-#, php-format
-msgid "%s commented on an item/conversation you have been following."
-msgstr "%s komentis pri elemento/konversacio kiun vi sekvas."
-
-#: ../../include/enotify.php:102 ../../include/enotify.php:117
-#: ../../include/enotify.php:130 ../../include/enotify.php:143
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Bonvolu viziti %s por vidi aÅ­ respondi la konversacion."
-
-#: ../../include/enotify.php:109
-#, php-format
-msgid "[Friendica:Notify] %s posted to your profile wall"
-msgstr "[Friendica:Atentigo] %s afiÅis al via profilmuro"
-
-#: ../../include/enotify.php:111
-#, php-format
-msgid "%1$s posted to your profile wall at %2$s"
-msgstr "%1$s skribis al via profilmuro ĉe %2$s"
-
-#: ../../include/enotify.php:113
-#, php-format
-msgid "%1$s posted to [url=%2s]your wall[/url]"
-msgstr "%1$s afiÅis al [url=%2s]via muro[/url]"
-
-#: ../../include/enotify.php:124
-#, php-format
-msgid "[Friendica:Notify] %s tagged you"
-msgstr "[Friendica:Atentigo] %s markis vin"
-
-#: ../../include/enotify.php:125
-#, php-format
-msgid "%1$s tagged you at %2$s"
-msgstr "%1$s markis vin ĉe %2$s"
-
-#: ../../include/enotify.php:126
-#, php-format
-msgid "%1$s [url=%2$s]tagged you[/url]."
-msgstr "%1$s [url=%2$s]markis vin[/url]."
-
-#: ../../include/enotify.php:137
-#, php-format
-msgid "[Friendica:Notify] %s tagged your post"
-msgstr "[Friendica:Atentigo] %s markis vian afiÅon"
-
-#: ../../include/enotify.php:138
-#, php-format
-msgid "%1$s tagged your post at %2$s"
-msgstr "%1$s markis vian afiÅon ĉe %2$s"
-
-#: ../../include/enotify.php:139
-#, php-format
-msgid "%1$s tagged [url=%2$s]your post[/url]"
-msgstr "%1$s markis [url=%2$s]vian afiÅon[/url]"
-
-#: ../../include/enotify.php:150
-msgid "[Friendica:Notify] Introduction received"
-msgstr "[Friendica:Atentigo] Ricevis prezenton"
-
-#: ../../include/enotify.php:151
-#, php-format
-msgid "You've received an introduction from '%1$s' at %2$s"
-msgstr "Vi ricevis prezenton de '%1$s' ĉe %2$s"
-
-#: ../../include/enotify.php:152
-#, php-format
-msgid "You've received [url=%1$s]an introduction[/url] from %2$s."
-msgstr "Vi ricevis [url=%1$s]prezenton[/url] de %2$s."
-
-#: ../../include/enotify.php:155 ../../include/enotify.php:173
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "Vi povas vidi la profilon de li aÅ­ Åi ĉe %s"
-
-#: ../../include/enotify.php:157
-#, php-format
-msgid "Please visit %s to approve or reject the introduction."
-msgstr "Bonvolu viziti %s por aprobi aÅ­ malaprobi la prezenton."
-
-#: ../../include/enotify.php:164
-msgid "[Friendica:Notify] Friend suggestion received"
-msgstr "[Friendica:Atentigo] Ricevis amikosugeston"
-
-#: ../../include/enotify.php:165
-#, php-format
-msgid "You've received a friend suggestion from '%1$s' at %2$s"
-msgstr "Vi ricevis amikosugeston de '%1$s' ĉe %2$s"
-
-#: ../../include/enotify.php:166
-#, php-format
-msgid ""
-"You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s."
-msgstr "Vi ricevis [url=%1$s]amikosugeston[/url] pri %2$s de %3$s."
-
-#: ../../include/enotify.php:171
-msgid "Name:"
-msgstr "Nomo:"
-
-#: ../../include/enotify.php:172
-msgid "Photo:"
-msgstr "Bildo:"
-
-#: ../../include/enotify.php:175
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Bonvolu viziti %s por aprobi aÅ­ malaprobi la sugeston."
-
-#: ../../include/follow.php:32
-msgid "Connect URL missing."
-msgstr "Ne ekzistas URL adreso por konekti."
-
-#: ../../include/follow.php:59
-msgid ""
-"This site is not configured to allow communications with other networks."
-msgstr "Tiu retpaÄo ne permesas komunikadon kun aliaj retoj."
-
-#: ../../include/follow.php:60 ../../include/follow.php:80
-msgid "No compatible communication protocols or feeds were discovered."
-msgstr "Ne malkovris kongruajn protokolojn por komunikado aÅ­ fluojn."
-
-#: ../../include/follow.php:78
-msgid "The profile address specified does not provide adequate information."
-msgstr "La specifita profiladreso ne enhavas sufiĉe da informoj."
-
-#: ../../include/follow.php:82
-msgid "An author or name was not found."
-msgstr "Ne trovis aÅ­toron aÅ­ nomon."
-
-#: ../../include/follow.php:84
-msgid "No browser URL could be matched to this address."
-msgstr "Neniu retuma URL adreso kongruas al la adreso."
-
-#: ../../include/follow.php:86
-msgid ""
-"Unable to match @-style Identity Address with a known protocol or email "
-"contact."
-msgstr "Ne eblas kongrui @-stilan identecon adreson al iu konata protokolo au retpoÅtadreso."
-
-#: ../../include/follow.php:87
-msgid "Use mailto: in front of address to force email check."
-msgstr "Uzu mailto: antaÅ­ la adreso por devigi la testadon per retpoÅto."
-
-#: ../../include/follow.php:93
-msgid ""
-"The profile address specified belongs to a network which has been disabled "
-"on this site."
-msgstr "Tiu profila adreso apartenas al retejo kiu estas maÅaltita je ĉi tiu retejo."
-
-#: ../../include/follow.php:103
-msgid ""
-"Limited profile. This person will be unable to receive direct/personal "
-"notifications from you."
-msgstr "Profilo limigata. Ĉi persono ne eblos ricevi rektajn/personajn atentigojn de vi. "
-
-#: ../../include/follow.php:205
-msgid "Unable to retrieve contact information."
-msgstr "Ne eblas ricevi kontaktinformojn."
-
-#: ../../include/follow.php:259
-msgid "following"
-msgstr "sekvanta"
-
-#: ../../include/items.php:2888
-msgid "A new person is sharing with you at "
-msgstr "Nova persono kunhavigas kun vi ĉe "
-
-#: ../../include/items.php:2888
-msgid "You have a new follower at "
-msgstr "Vi havas novan sekvanton ĉe "
-
-#: ../../include/items.php:3520
-msgid "Archives"
-msgstr "Arkivoj"
-
-#: ../../include/user.php:38
-msgid "An invitation is required."
-msgstr "Invio bezonata."
-
-#: ../../include/user.php:43
-msgid "Invitation could not be verified."
-msgstr "Ne povis kontroli la inviton."
-
-#: ../../include/user.php:51
-msgid "Invalid OpenID url"
-msgstr "Nevalida OpenID adreso"
-
-#: ../../include/user.php:66
-msgid "Please enter the required information."
-msgstr "Bonvolu entajpi la bezonatajn informojn."
-
-#: ../../include/user.php:80
-msgid "Please use a shorter name."
-msgstr "Bonvolu uzi pli mallongan nomon."
-
-#: ../../include/user.php:82
-msgid "Name too short."
-msgstr "Nomo estas tro mallonga."
-
-#: ../../include/user.php:97
-msgid "That doesn't appear to be your full (First Last) name."
-msgstr "Tio Åajne ne estas via plena (persona, familia) nomo."
-
-#: ../../include/user.php:102
-msgid "Your email domain is not among those allowed on this site."
-msgstr "Via retpoÅtodomajno ne estas permesita ĉi tie."
-
-#: ../../include/user.php:105
-msgid "Not a valid email address."
-msgstr "Nevalida retpoÅtadreso."
-
-#: ../../include/user.php:115
-msgid "Cannot use that email."
-msgstr "Neuzebla retpoÅtadreso."
-
-#: ../../include/user.php:121
-msgid ""
-"Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and "
-"must also begin with a letter."
-msgstr "Via kaÅnomo nur povas enhavi \"a-z\", \"0-9\", \"-\", kaj \"_\". Äœi ankaÅ­ devas komenci kun litero."
-
-#: ../../include/user.php:127 ../../include/user.php:225
-msgid "Nickname is already registered. Please choose another."
-msgstr "Tio kaÅnomo jam estas registrita. Bonvolu elekti alian."
-
-#: ../../include/user.php:137
-msgid ""
-"Nickname was once registered here and may not be re-used. Please choose "
-"another."
-msgstr "Tiu kaÅnomo iam estis registrita ĉi tie kaj ne ree uzeblas. Bonvolu elekti alian."
-
-#: ../../include/user.php:153
-msgid "SERIOUS ERROR: Generation of security keys failed."
-msgstr "GRAVA ERARO: La generacio de sekurecaj ĉifroÅlosiloj malsukcesis."
-
-#: ../../include/user.php:211
-msgid "An error occurred during registration. Please try again."
-msgstr "Eraro okazis dum registrado. Bonvolu provi denove."
-
-#: ../../include/user.php:246
-msgid "An error occurred creating your default profile. Please try again."
-msgstr "Eraro okazi dum kreado de via defaÅ­lta profilo. Bonvolu provi denove."
-
-#: ../../include/security.php:21
-msgid "Welcome "
-msgstr "Bonvenon "
-
-#: ../../include/security.php:22
-msgid "Please upload a profile photo."
-msgstr "Bonvolu alÅuti profilbildon."
-
-#: ../../include/security.php:25
-msgid "Welcome back "
-msgstr "Bonvenon "
-
-#: ../../include/security.php:329
-msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "La sekuriga ĵetono de la formo estis malÄusta. Tio verÅajne okazis ĉar la formo estis malfermita dum tro longa tempo (>3 horoj) antaÅ­ la sendado."
-
-#: ../../include/Contact.php:111
-msgid "stopped following"
-msgstr "ne plu sekvas"
-
-#: ../../include/Contact.php:218 ../../include/conversation.php:842
-msgid "View Status"
-msgstr "Vidi Staton"
-
-#: ../../include/Contact.php:219 ../../include/conversation.php:843
-msgid "View Profile"
-msgstr "Vidi Profilon"
-
-#: ../../include/Contact.php:220 ../../include/conversation.php:844
-msgid "View Photos"
-msgstr "Vidi Bildojn"
-
-#: ../../include/Contact.php:221 ../../include/Contact.php:234
-#: ../../include/conversation.php:845
-msgid "Network Posts"
-msgstr "Enretaj AfiÅoj"
-
-#: ../../include/Contact.php:222 ../../include/Contact.php:234
-#: ../../include/conversation.php:846
-msgid "Edit Contact"
-msgstr "Redakti Kontakton"
-
-#: ../../include/Contact.php:223 ../../include/Contact.php:234
-#: ../../include/conversation.php:847
-msgid "Send PM"
-msgstr "Sendi PM"
-
-#: ../../include/conversation.php:163
-msgid "post/item"
-msgstr "afiÅo/elemento"
-
-#: ../../include/conversation.php:164
-#, php-format
-msgid "%1$s marked %2$s's %3$s as favorite"
-msgstr "%1$s markis la %3$s de %2$s kiel preferita."
-
-#: ../../include/conversation.php:327 ../../include/conversation.php:608
-msgid "Select"
-msgstr "Elekti"
-
-#: ../../include/conversation.php:344 ../../include/conversation.php:701
-#: ../../include/conversation.php:702
-#, php-format
-msgid "View %s's profile @ %s"
-msgstr "Vidi la profilon de %s ĉe %s"
-
-#: ../../include/conversation.php:354 ../../include/conversation.php:713
-#, php-format
-msgid "%s from %s"
-msgstr "%s de %s"
-
-#: ../../include/conversation.php:369
-msgid "View in context"
-msgstr "Vidi kun kunteksto"
-
-#: ../../include/conversation.php:475
-#, php-format
-msgid "%d comment"
-msgid_plural "%d comments"
-msgstr[0] "%d komento"
-msgstr[1] "%d komentoj"
-
-#: ../../include/conversation.php:554
-msgid "like"
-msgstr "Åati"
-
-#: ../../include/conversation.php:555
-msgid "dislike"
-msgstr "malÅati"
-
-#: ../../include/conversation.php:557
-msgid "Share this"
-msgstr "Kunhavigi ĉi tiun"
-
-#: ../../include/conversation.php:557
-msgid "share"
-msgstr "kunhavigi"
-
-#: ../../include/conversation.php:581
-msgid "Bold"
-msgstr "Grasa"
-
-#: ../../include/conversation.php:582
-msgid "Italic"
-msgstr "Kursiva"
-
-#: ../../include/conversation.php:583
-msgid "Underline"
-msgstr "Substreki"
-
-#: ../../include/conversation.php:584
-msgid "Quote"
-msgstr "Citaĵo"
-
-#: ../../include/conversation.php:585
-msgid "Code"
-msgstr "Kodo"
-
-#: ../../include/conversation.php:586
-msgid "Image"
-msgstr "Bildo"
-
-#: ../../include/conversation.php:587
-msgid "Link"
-msgstr "Ligilo"
-
-#: ../../include/conversation.php:588
-msgid "Video"
-msgstr "Video"
-
-#: ../../include/conversation.php:621
-msgid "add star"
-msgstr "aldoni stelon"
-
-#: ../../include/conversation.php:622
-msgid "remove star"
-msgstr "forpreni stelon"
-
-#: ../../include/conversation.php:623
-msgid "toggle star status"
-msgstr "Åalti/malÅalti steloÅtato"
-
-#: ../../include/conversation.php:626
-msgid "starred"
-msgstr "steligita"
-
-#: ../../include/conversation.php:627
-msgid "add tag"
-msgstr "aldoni markon"
-
-#: ../../include/conversation.php:631
-msgid "save to folder"
-msgstr "konservi en dosierujo"
-
-#: ../../include/conversation.php:703
-msgid "to"
-msgstr "al"
-
-#: ../../include/conversation.php:704
-msgid "Wall-to-Wall"
-msgstr "Muro-al-Muro"
-
-#: ../../include/conversation.php:705
-msgid "via Wall-To-Wall:"
-msgstr "per Muro-al-Muro:"
-
-#: ../../include/conversation.php:750
-msgid "Delete Selected Items"
-msgstr "ForviÅi Elektitajn Elementojn"
-
-#: ../../include/conversation.php:905
-#, php-format
-msgid "%s likes this."
-msgstr "%s Åatas tiun."
-
-#: ../../include/conversation.php:905
-#, php-format
-msgid "%s doesn't like this."
-msgstr "%s malÅatas tiun."
-
-#: ../../include/conversation.php:909
-#, php-format
-msgid "<span %1$s>%2$d people</span> like this."
-msgstr "<span %1$s>%2$d homoj</span> Åatas tiun."
-
-#: ../../include/conversation.php:911
-#, php-format
-msgid "<span %1$s>%2$d people</span> don't like this."
-msgstr "<span %1$s>%2$d homoj</span>malÅatas tiun."
-
-#: ../../include/conversation.php:917
-msgid "and"
-msgstr "kaj"
-
-#: ../../include/conversation.php:920
-#, php-format
-msgid ", and %d other people"
-msgstr ", kaj %d aliaj homoj."
-
-#: ../../include/conversation.php:921
-#, php-format
-msgid "%s like this."
-msgstr "%s Åatas tiun."
-
-#: ../../include/conversation.php:921
-#, php-format
-msgid "%s don't like this."
-msgstr "%s malÅatas tiun."
-
-#: ../../include/conversation.php:946
-msgid "Visible to <strong>everybody</strong>"
-msgstr "Videbla al <strong>ĉiuj</strong>"
-
-#: ../../include/conversation.php:948
-msgid "Please enter a video link/URL:"
-msgstr "Bonvolu entajpi ligilon/adreson de video:"
-
-#: ../../include/conversation.php:949
-msgid "Please enter an audio link/URL:"
-msgstr "Bonvolu entajpi ligilon/adreson de sono:"
-
-#: ../../include/conversation.php:950
-msgid "Tag term:"
-msgstr "Markfrazo:"
-
-#: ../../include/conversation.php:952
-msgid "Where are you right now?"
-msgstr "Kie vi estas nun?"
-
-#: ../../include/conversation.php:995
-msgid "upload photo"
-msgstr "alÅuti bildon"
-
-#: ../../include/conversation.php:997
-msgid "attach file"
-msgstr "kunsendi dosieron"
-
-#: ../../include/conversation.php:999
-msgid "web link"
-msgstr "TTT ligilo"
-
-#: ../../include/conversation.php:1000
-msgid "Insert video link"
-msgstr "Alglui ligilon de video"
-
-#: ../../include/conversation.php:1001
-msgid "video link"
-msgstr "video ligilo"
-
-#: ../../include/conversation.php:1002
-msgid "Insert audio link"
-msgstr "Alglui ligilon de sono"
-
-#: ../../include/conversation.php:1003
-msgid "audio link"
-msgstr "sono ligilo"
-
-#: ../../include/conversation.php:1005
-msgid "set location"
-msgstr "agordi lokon"
-
-#: ../../include/conversation.php:1007
-msgid "clear location"
-msgstr "forviÅi lokon"
-
-#: ../../include/conversation.php:1014
-msgid "permissions"
-msgstr "permesoj"
-
-#: ../../include/plugin.php:388 ../../include/plugin.php:390
-msgid "Click here to upgrade."
-msgstr "Klaku ĉi tie por Äisdatigi."
-
-#: ../../include/plugin.php:396
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Tia ago preterpasas la limojn de via abono."
-
-#: ../../include/plugin.php:401
-msgid "This action is not available under your subscription plan."
-msgstr "Tia ago ne estas permesita laÅ­ via abono."
-
-#: ../../boot.php:527
-msgid "Delete this item?"
-msgstr "ForviÅi ĉi tiun elementon?"
-
-#: ../../boot.php:530
-msgid "show fewer"
-msgstr "montri malpli"
-
-#: ../../boot.php:725
-#, php-format
-msgid "Update %s failed. See error logs."
-msgstr "Malsukcesis Äisdatigi %s. Vidu la protokolojn."
-
-#: ../../boot.php:727
-#, php-format
-msgid "Update Error at %s"
-msgstr "Eraro dum Äisdatigo ĉe %s"
-
-#: ../../boot.php:827
-msgid "Create a New Account"
-msgstr "Krei Novan Konton"
-
-#: ../../boot.php:851
-msgid "Nickname or Email address: "
-msgstr "KaÅnomo aÅ­ retpoÅtadreso:"
-
-#: ../../boot.php:852
-msgid "Password: "
-msgstr "Pasvorto:"
-
-#: ../../boot.php:855
-msgid "Or login using OpenID: "
-msgstr "AÅ­ ensaluti per OpenID:"
-
-#: ../../boot.php:861
-msgid "Forgot your password?"
-msgstr "Ĉu vi vorgesis vian pasvorton?"
-
-#: ../../boot.php:1028
-msgid "Edit profile"
-msgstr "Redakti profilon"
-
-#: ../../boot.php:1088
-msgid "Message"
-msgstr "MesaÄo"
-
-#: ../../boot.php:1204 ../../boot.php:1283
-msgid "g A l F d"
-msgstr "\\j\\e \\l\\a G\\a \\h\\o\\r\\o, l F d"
-
-#: ../../boot.php:1205 ../../boot.php:1284
-msgid "F d"
-msgstr "F d"
-
-#: ../../boot.php:1250 ../../boot.php:1324
-msgid "[today]"
-msgstr "[hodiaÅ­]"
-
-#: ../../boot.php:1262
-msgid "Birthday Reminders"
-msgstr "Memorigilo pri naskiÄtagoj"
-
-#: ../../boot.php:1263
-msgid "Birthdays this week:"
-msgstr "NaskiÄtagoj ĉi-semajne:"
-
-#: ../../boot.php:1317
-msgid "[No description]"
-msgstr "[Neniu priskribo]"
-
-#: ../../boot.php:1335
-msgid "Event Reminders"
-msgstr "Memorigilo pri Okazoj"
-
-#: ../../boot.php:1336
-msgid "Events this week:"
-msgstr "Okazoj ĉi-semajne:"
-
-#: ../../boot.php:1541
-msgid "Status Messages and Posts"
-msgstr "ÅœtatmesaÄoj kaj AfiÅoj"
-
-#: ../../boot.php:1547
-msgid "Profile Details"
-msgstr "Profildetaloj"
-
-#: ../../boot.php:1562
-msgid "Events and Calendar"
-msgstr "Okazoj kaj Kalendaro"
-
-#: ../../boot.php:1568
-msgid "Only You Can See This"
-msgstr "Nur Vi Povas Vidi Tiun"
diff --git a/view/eo/hstrings.php b/view/eo/hstrings.php
deleted file mode 100644
index 1fdefde46..000000000
--- a/view/eo/hstrings.php
+++ /dev/null
@@ -1,1771 +0,0 @@
-<?php
-
-if(! function_exists("string_plural_select_eo")) {
-function string_plural_select_eo($n){
- return ($n != 1);
-}}
-;
-App::$strings["Post successful."] = "Sukcese afiÅita.";
-App::$strings["[Embedded content - reload page to view]"] = "[Enigita enhavo - reÅargu paÄon por spekti Äin]";
-App::$strings["Contact settings applied."] = "Kontaktagordoj estas konservita.";
-App::$strings["Contact update failed."] = "Äœisdatigo de kontakto malsukcesis.";
-App::$strings["Permission denied."] = "Malpermesita.";
-App::$strings["Contact not found."] = "Kontakto ne trovita.";
-App::$strings["Repair Contact Settings"] = "Ripari kontaktagordoj.";
-App::$strings["<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact may stop working."] = "<strong>AVERTO: Tio estas tre altnivela</strong> kaj se vi entajpus malÄustan informojn, komunikado kun la kontakto eble ne plu funkcios.";
-App::$strings["Please use your browser 'Back' button <strong>now</strong> if you are uncertain what to do on this page."] = "Bonvolu klaki 'malantaŭen' en via retesplorilo <strong>nun</strong> se vi ne scias kion faru ĉi tie.";
-App::$strings["Return to contact editor"] = "Reen al kontakta redaktilo";
-App::$strings["Name"] = "Nomo";
-App::$strings["Account Nickname"] = "KaÅnomo de la konto";
-App::$strings["@Tagname - overrides Name/Nickname"] = "@Marknomo - Transpasas nomon/kaÅnomon";
-App::$strings["Account URL"] = "Adreso de la konto";
-App::$strings["Friend Request URL"] = "Kontaktpeta adreso";
-App::$strings["Friend Confirm URL"] = "Kontaktkonfirma adreso";
-App::$strings["Notification Endpoint URL"] = "Finpunkta adreso por atentigoj";
-App::$strings["Poll/Feed URL"] = "Adreso de fluo";
-App::$strings["New photo from this URL"] = "Nova bildo el tiu adreso";
-App::$strings["Submit"] = "Sendi";
-App::$strings["Help:"] = "Helpo:";
-App::$strings["Help"] = "Helpo";
-App::$strings["Not Found"] = "Ne trovita";
-App::$strings["Page not found."] = "PaÄo ne trovita";
-App::$strings["File exceeds size limit of %d"] = "Dosiero estas pli granda ol la limito de %d";
-App::$strings["File upload failed."] = "AlÅutado malsukcesis.";
-App::$strings["Friend suggestion sent."] = "Amikosugesto sendita.";
-App::$strings["Suggest Friends"] = "Sugesti amikojn";
-App::$strings["Suggest a friend for %s"] = "Sugesti amikon por %s";
-App::$strings["Event title and start time are required."] = "Titolo kaj starttempo estas bezonataj por la okazo.";
-App::$strings["l, F j"] = "l, F j";
-App::$strings["Edit event"] = "Redakti okazon";
-App::$strings["link to source"] = "ligilo al fonto";
-App::$strings["Events"] = "Okazoj";
-App::$strings["Create New Event"] = "Krei novan okazon";
-App::$strings["Previous"] = "antaÅ­a";
-App::$strings["Next"] = "sekva";
-App::$strings["hour:minute"] = "horo:minuto";
-App::$strings["Event details"] = "Detaloj de okazo";
-App::$strings["Format is %s %s. Starting date and Title are required."] = "Format is %s %s. Titolo kaj starttempo estas bezonataj.";
-App::$strings["Event Starts:"] = "Okazo startas:";
-App::$strings["Required"] = "Bezonata";
-App::$strings["Finish date/time is not known or not relevant"] = "Fina dato/tempo ne estas konata aÅ­ ne bezonata";
-App::$strings["Event Finishes:"] = "Okazo finas:";
-App::$strings["Adjust for viewer timezone"] = "Agordi al horzono de la leganto";
-App::$strings["Description:"] = "Priskribo";
-App::$strings["Location:"] = "Loko:";
-App::$strings["Title:"] = "Titolo:";
-App::$strings["Share this event"] = "Kunhavigi la okazon";
-App::$strings["Cancel"] = "Nuligi";
-App::$strings["Tag removed"] = "Marko forviÅita";
-App::$strings["Remove Item Tag"] = "ForviÅi markon";
-App::$strings["Select a tag to remove: "] = "Elektu forviÅontan markon:";
-App::$strings["Remove"] = "ForviÅi";
-App::$strings["%s welcomes %s"] = "%s salutas %s";
-App::$strings["Authorize application connection"] = "Rajtigi programkonekton";
-App::$strings["Return to your app and insert this Securty Code:"] = "Reiru al via programo kaj entajpu la securecan kodon:";
-App::$strings["Please login to continue."] = "Bonvolu ensaluti por pluigi.";
-App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Ĉu rajtigi ĉi tiun programon por atingi viajn afiÅojn kaj kontaktojn kaj/aÅ­ krei novajn afiÅojn?";
-App::$strings["Yes"] = "Jes";
-App::$strings["No"] = "Ne";
-App::$strings["Photo Albums"] = "Bildalbumoj";
-App::$strings["Contact Photos"] = "Kontaktbildoj";
-App::$strings["Upload New Photos"] = "AlÅuti novajn bildojn";
-App::$strings["everybody"] = "ĉiuj";
-App::$strings["Contact information unavailable"] = "Kontaktoj informoj ne disponeblas";
-App::$strings["Profile Photos"] = "Profilbildoj";
-App::$strings["Album not found."] = "Albumo ne trovita.";
-App::$strings["Delete Album"] = "ForviÅi albumon";
-App::$strings["Delete Photo"] = "ForviÅi bildon";
-App::$strings["was tagged in a"] = "estas markita en";
-App::$strings["photo"] = "bildo";
-App::$strings["by"] = "de";
-App::$strings["Image exceeds size limit of "] = "Bildo estas pli granda ol la limito de";
-App::$strings["Image file is empty."] = "Bilddosiero estas malplena.";
-App::$strings["Unable to process image."] = "Ne eblas procedi la bildon.";
-App::$strings["Image upload failed."] = "AlÅuto de bildo malsukcesis.";
-App::$strings["Public access denied."] = "Publika atingo ne permesita.";
-App::$strings["No photos selected"] = "Neniu bildoj elektita";
-App::$strings["Access to this item is restricted."] = "Atingo al tio elemento estas limigita.";
-App::$strings["You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."] = "Vi uzas %1$.2f MB de %2$.2f MB bildkonservejo.";
-App::$strings["You have used %1$.2f Mbytes of photo storage."] = "Vi uzas %1$.2f MB de bildkonservejo.";
-App::$strings["Upload Photos"] = "AlÅuti bildojn";
-App::$strings["New album name: "] = "Nomo por nova albumo:";
-App::$strings["or existing album name: "] = "aÅ­ nomo de estanta albumo:";
-App::$strings["Do not show a status post for this upload"] = "Ne kreu statan afiÅon por tio alÅuto.";
-App::$strings["Permissions"] = "Permesoj";
-App::$strings["Edit Album"] = "Redakti albumon";
-App::$strings["View Photo"] = "Vidi bildon";
-App::$strings["Permission denied. Access to this item may be restricted."] = "Malpermesita. Atingo al tio elemento eble estas limigita.";
-App::$strings["Photo not available"] = "La bildo ne disponeblas";
-App::$strings["View photo"] = "Vidi bildon";
-App::$strings["Edit photo"] = "Redakti bildon";
-App::$strings["Use as profile photo"] = "Uzi kiel profilbildo";
-App::$strings["Private Message"] = "Privata mesaÄo";
-App::$strings["View Full Size"] = "Vidi plengrande ";
-App::$strings["Tags: "] = "Markoj:";
-App::$strings["[Remove any tag]"] = "[ForviÅi iun markon]";
-App::$strings["Rotate CW (right)"] = "Turni horloÄdirekte (dekstren)";
-App::$strings["Rotate CCW (left)"] = "Turni kontraÅ­horloÄdirekte (maldekstren)";
-App::$strings["New album name"] = "Nova nomo de albumo";
-App::$strings["Caption"] = "Apudskribo";
-App::$strings["Add a Tag"] = "Aldoni markon";
-App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Ekzemple: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping";
-App::$strings["I like this (toggle)"] = "Mi Åatas tion (Åalti)";
-App::$strings["I don't like this (toggle)"] = "Mi malÅatas tion(Åalti)";
-App::$strings["Share"] = "Kunhavigi";
-App::$strings["Please wait"] = "Bonvolu atendi";
-App::$strings["This is you"] = "Tiu estas vi";
-App::$strings["Comment"] = "Komenti";
-App::$strings["Preview"] = "AntaÅ­rigardi";
-App::$strings["Delete"] = "ForviÅi";
-App::$strings["View Album"] = "Vidi albumon";
-App::$strings["Recent Photos"] = "Ì‚Ä´usaj bildoj";
-App::$strings["Not available."] = "Ne disponebla.";
-App::$strings["Community"] = "Komunumo";
-App::$strings["No results."] = "Nenion trovita.";
-App::$strings["This is Friendica, version"] = "Tio estas Friendica en la versio";
-App::$strings["running at web location"] = "instalita ĉe la adreso";
-App::$strings["Please visit <a href=\"http://friendica.com\">Friendica.com</a> to learn more about the Friendica project."] = "Bonvolu iri al <a href=\"http://friendica.com\">Friendica.com</a> por lerni pli pri la projekto Friendica";
-App::$strings["Bug reports and issues: please visit"] = "Cimraportoj kaj atendindaĵo: bonvolu iri al";
-App::$strings["Suggestions, praise, donations, etc. - please email \"Info\" at Friendica - dot com"] = "Sugestoj, laÅ­doj, donacoj ktp - bonvolu sendi mesÄon al \"Info\" ĉe Friendica - punkto com";
-App::$strings["Installed plugins/addons/apps:"] = "Instalitaj kromprogramoj/programoj:";
-App::$strings["No installed plugins/addons/apps"] = "Neniom da instalitaj aldonaĵoj/programoj";
-App::$strings["Item not found"] = "Elemento ne trovita";
-App::$strings["Edit post"] = "Redakti afiÅon";
-App::$strings["Post to Email"] = "Sendi per retpoÅto";
-App::$strings["Edit"] = "Redakti";
-App::$strings["Upload photo"] = "AlÅuti bildon";
-App::$strings["Attach file"] = "Kunligi dosieron";
-App::$strings["Insert web link"] = "Enmeti retan adreson";
-App::$strings["Insert YouTube video"] = "Enmeti videton ĉe YouTube";
-App::$strings["Insert Vorbis [.ogg] video"] = "Enmeti videton en formato Vorbis [.ogg]";
-App::$strings["Insert Vorbis [.ogg] audio"] = "Enmeti sonon en formato Vorbis [.ogg]";
-App::$strings["Set your location"] = "Agordi vian lokon";
-App::$strings["Clear browser location"] = "ForviÅu retesplorilan lokon";
-App::$strings["Permission settings"] = "Permesagordoj";
-App::$strings["CC: email addresses"] = "CC: retpoÅtadresojn";
-App::$strings["Public post"] = "Publika afiÅo";
-App::$strings["Set title"] = "Redakti titolon";
-App::$strings["Categories (comma-separated list)"] = "Kategorioj (disigita per komo)";
-App::$strings["Example: bob@example.com, mary@example.com"] = "Ekzemple: bob@example.com, mary@example.com";
-App::$strings["This introduction has already been accepted."] = "Tia prezento jam estas akceptita";
-App::$strings["Profile location is not valid or does not contain profile information."] = "La adreso de la profilo ne validas aÅ­ ne enhavas profilinformojn.";
-App::$strings["Warning: profile location has no identifiable owner name."] = "Averto: La adreso de la profilo ne enhavas identeblan personan nomon.";
-App::$strings["Warning: profile location has no profile photo."] = "Averto: La adreso de la profilo ne enhavas bildon.";
-App::$strings["%d required parameter was not found at the given location"] = array(
- 0 => "%d bezonataj parametroj ne trovita ĉe la donata adreso.",
- 1 => "%d bezonataj parametroj ne trovita ĉe la donata adreso.",
-);
-App::$strings["Introduction complete."] = "Prezento sukcesis.";
-App::$strings["Unrecoverable protocol error."] = "NeÄustigebla eraro en protokolo.";
-App::$strings["Profile unavailable."] = "Profilo ne estas disponebla.";
-App::$strings["%s has received too many connection requests today."] = "%s hodiaÅ­ ricevis tro multe da konektpetoj.";
-App::$strings["Spam protection measures have been invoked."] = "KontraÅ­spamilo estas aktivita.";
-App::$strings["Friends are advised to please try again in 24 hours."] = "Amikoj, vi bonvolu ripeti post 24 horoj.";
-App::$strings["Invalid locator"] = "Nevalida adreso.";
-App::$strings["Invalid email address."] = "Nevalida repoÅtadreso.";
-App::$strings["This account has not been configured for email. Request failed."] = "La konto ne estas agordita por retpoÅto. La peto malsukcesis.";
-App::$strings["Unable to resolve your name at the provided location."] = "Via nomo ne troveblas al la donita adreso.";
-App::$strings["You have already introduced yourself here."] = "Vi vin jam prezentis tie.";
-App::$strings["Apparently you are already friends with %s."] = "Åœajnas kvazaÅ­ vi jam amikiÄis kun %s.";
-App::$strings["Invalid profile URL."] = "Nevalida adreso de profilo.";
-App::$strings["Disallowed profile URL."] = "Malpermesita adreso de profilo.";
-App::$strings["Failed to update contact record."] = "Äœisdatigo de via kontaktrikordo malsukcesis.";
-App::$strings["Your introduction has been sent."] = "Via prezento estas sendita.";
-App::$strings["Please login to confirm introduction."] = "Bonvolu ensaluti por jesigi la prezenton.";
-App::$strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "MalÄusta identaĵo ensalutata. Bonvolu ensaluti en <strong>tiun</strong> profilon.";
-App::$strings["Hide this contact"] = "KaÅi tiun kontakton";
-App::$strings["Welcome home %s."] = "Bonvenon hejme, %s.";
-App::$strings["Please confirm your introduction/connection request to %s."] = "Bonvolu konfirmi vian prezenton / kontaktpeton al %s.";
-App::$strings["Confirm"] = "Konfirmi.";
-App::$strings["[Name Withheld]"] = "[KaÅita nomo]";
-App::$strings["Please enter your 'Identity Address' from one of the following supported communications networks:"] = "Bonvolu entajpi vian 'Identecan Adreson' de iu de tiuj subtenataj komunikaj retejoj: ";
-App::$strings["<strike>Connect as an email follower</strike> (Coming soon)"] = "<strike>Konektu kiel retpoÅta sekvanto</strike> (BaldaÅ­ venos)";
-App::$strings["If you are not yet a member of the free social web, <a href=\"http://dir.friendica.com/siteinfo\">follow this link to find a public Friendica site and join us today</a>."] = "Se vi ne estas membro de la libra interkona reto, <a href=\"http://dir.friendica.com/siteinfo\">sekvu ĉi-ligilon por trovi publikan Friendica retejon kaj aliÄi kun ni hodiaÅ­</a>.";
-App::$strings["Friend/Connection Request"] = "Prezento / Konektpeto";
-App::$strings["Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"] = "Ekzemploj: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca";
-App::$strings["Please answer the following:"] = "Bonvolu respondi:";
-App::$strings["Does %s know you?"] = "Ĉu %s konas vin?";
-App::$strings["Add a personal note:"] = "Aldoni personan noton:";
-App::$strings["Friendica"] = "Friendica";
-App::$strings["StatusNet/Federated Social Web"] = "StatusNet/Federaciaj interkonaj retejoj";
-App::$strings["Diaspora"] = "Diaspora";
-App::$strings[" - please do not use this form. Instead, enter %s into your Diaspora search bar."] = " - bonvolu ne uzi ĉi formo. Anstataŭe, entajpu %s en la Diaspora serĉilo.";
-App::$strings["Your Identity Address:"] = "Via identeca adreso:";
-App::$strings["Submit Request"] = "Sendi peton";
-App::$strings["Friendica Social Communications Server - Setup"] = "Friendica Interkona Komunikada Servilo - Instalo";
-App::$strings["Could not connect to database."] = "Ne eblas konekti la datumbazon.";
-App::$strings["Could not create table."] = "Ne eblas krei tabelon.";
-App::$strings["Your Friendica site database has been installed."] = "La datumbazo de vi Friendica retjo estas instalita.";
-App::$strings["You may need to import the file \"database.sql\" manually using phpmyadmin or mysql."] = "Vi bezonas mane importi la dosieron \"database.sql\" per phpmyadmin aÅ­ mysql.";
-App::$strings["Please see the file \"INSTALL.txt\"."] = "Bonvolu legi la dosieron \"INSTALL.txt\".";
-App::$strings["System check"] = "Sistema kontrolo";
-App::$strings["Check again"] = "Ree kontroli";
-App::$strings["Database connection"] = "Datumbaza konekto";
-App::$strings["In order to install Friendica we need to know how to connect to your database."] = "Por instali Friendica, ni bezonas scii kiel konekti al via datumbazo.";
-App::$strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Bonvolu kontakti vian servilprovizanton aŭ administranton se vi havas demandoj pri ĉi tiaj agordoj.";
-App::$strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "La datumbazo nomata malsupren jam ekzistu. Se Äi ne ekzistas, bonvolu unue krei Äin antaÅ­ progresi.";
-App::$strings["Database Server Name"] = "Nomo de datumbaza servilo.";
-App::$strings["Database Login Name"] = "Salutnomo ĉe la datumbazo.";
-App::$strings["Database Login Password"] = "Pasvorto ĉe la datumbazo.";
-App::$strings["Database Name"] = "Nomo de la datumbazo.";
-App::$strings["Site administrator email address"] = "RetpoÅtadreso de la reteja administranto";
-App::$strings["Your account email address must match this in order to use the web admin panel."] = "La repoÅtadreso de via konto bezonas esti la sama por uzi la TTTa administrilo.";
-App::$strings["Please select a default timezone for your website"] = "Bonvolu elekti defaÅ­ltan horzonon por via retejo.";
-App::$strings["Site settings"] = "Retejaj agordoj";
-App::$strings["Could not find a command line version of PHP in the web server PATH."] = "Komanda linia versio de PHP ne trovita en $PATH de la retservilo.";
-App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron. See <a href='http://friendica.com/node/27'>'Activating scheduled tasks'</a>"] = "Se vi ne havas komandlinian version de PHP sur la servilo, vi ne eblas plenumi fonan planitan enketon per cron. Bonvolu legi <a href='http://friendica.com/node/27'>'Activating scheduled tasks'</a>";
-App::$strings["PHP executable path"] = "Vojo de la komanda linia versio de PHP";
-App::$strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Entajpu la plenan vojon al la php komandodosiero. Vi eblas lasi tion malplena por pluigi la instalado.";
-App::$strings["Command line PHP"] = "komanda linia versio de PHP";
-App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "En via komanda linia versio de PHP je via sistemo, \"register_argc_argv\" ne estas aktivita.";
-App::$strings["This is required for message delivery to work."] = "Tio estas bezonata por la livero de mesaÄoj.";
-App::$strings["PHP register_argc_argv"] = "PHP register_argc_argv";
-App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Eraro: La funkcio \"openssl_pkey_new\" je tia sistemo ne eblas generi ĉifroÅlosilojn.";
-App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Se la operaciumo sistemo estas Windows, bonvolu legi: http://www.php.net/manual/en/openssl.installation.php";
-App::$strings["Generate encryption keys"] = "Generi ĉifroÅlosilojn";
-App::$strings["libCurl PHP module"] = "PHP modulo libCurl";
-App::$strings["GD graphics PHP module"] = "PHP modulo GD";
-App::$strings["OpenSSL PHP module"] = "PHP modulo OpenSSL";
-App::$strings["mysqli PHP module"] = "PHP modulo mysqli";
-App::$strings["mb_string PHP module"] = "PHP modulo mb_string";
-App::$strings["Apache mod_rewrite module"] = "Apache mod_rewrite modulo";
-App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Eraro: La modulo mod_rewrite en la Apache retservilo estas bezonata sed ne instalita.";
-App::$strings["Error: libCURL PHP module required but not installed."] = "Eraro: La modulo libCURL en PHP estas bezonata sed ne instalita.";
-App::$strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Eraro: La modulo GD en PHP kun subteno por JPEG estas bezonata sed ne instalita.";
-App::$strings["Error: openssl PHP module required but not installed."] = "Eraro: La modulo OpenSSL en PHP estas bezonata sed ne instalita.";
-App::$strings["Error: mysqli PHP module required but not installed."] = "Eraro: La modulo mysqli en PHP estas bezonata sed ne instalita.";
-App::$strings["Error: mb_string PHP module required but not installed."] = "Eraro: La modulo mb_string en PHP estas bezonata sed ne instalita.";
-App::$strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "La reta instalilo bezonas skribi dosieron nomata \".htconfig.php\" en la baza dosierujo de la retservilo, sed ne sukcesis.";
-App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Tio ĉi plej ofte estas agordo rilate al permesoj, ĉar la servilo eble ne povas skribi en via dosierujo, eĉ se vi mem povas skribi.";
-App::$strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Friendica top folder."] = "Post la fino de tiu proceduro, ni donos al vi tekston por konservi en dosiero .htconfig.php en via baza Friendica dosierujo.";
-App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = "Vi ankaÅ­ povas preterpasi tiun proceduron kaj fari permanan instaladon. Bonvolu legi la dosieron \"INSTALL.txt\" por trovi instrukciojn.";
-App::$strings[".htconfig.php is writable"] = ".htconfig.php estas skribebla.";
-App::$strings["Url rewrite in .htaccess is not working. Check your server configuration."] = "Url rewrite en .htaccess ne funkcias. Kontrolu la agordojn de la servilo.";
-App::$strings["Url rewrite is working"] = "URL rewrite funkcias.";
-App::$strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Ne povis skribi la datumbaza agordoj en la dosiero \".htconfig.php\". Bonvolu uzi la inkluzivan tekston por krei agordan dosieron en la baza dosierujo de la retservilo.";
-App::$strings["Errors encountered creating database tables."] = "Okazis eraroj dum la kreado de tabeloj en la datumbazo.";
-App::$strings["<h1>What next</h1>"] = "<h1>Kio sekvas nun?</h1>";
-App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "GRAVA: Vi bezonas [mane] agordi planitan taskon por la Friendica poller.";
-App::$strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
-App::$strings["Time Conversion"] = "Konverto de tempo";
-App::$strings["Friendika provides this service for sharing events with other networks and friends in unknown timezones."] = "Friendica provizas tiun servon por kunhavigi okazojn kun aliaj retoj kaj amikoj en aliaj horzonoj.";
-App::$strings["UTC time: %s"] = "UTC horo: %s";
-App::$strings["Current timezone: %s"] = "Aktuala horzono: %s";
-App::$strings["Converted localtime: %s"] = "Konvertita loka horo: %s";
-App::$strings["Please select your timezone:"] = "Bonvolu elekti vian horzonon:";
-App::$strings["Profile Match"] = "Kongrua profilo";
-App::$strings["No keywords to match. Please add keywords to your default profile."] = "Neniom da kategoriaj vortoj kongruas. Bonvolu aldoni kategoriajn vortojn al via defaÅ­lta profilo.";
-App::$strings["is interested in:"] = "interesiÄas pri:";
-App::$strings["Connect"] = "Konekti";
-App::$strings["No matches"] = "Nenio estas trovita";
-App::$strings["Remote privacy information not available."] = "Informoj pri fora privateca ne estas disponebla.";
-App::$strings["Visible to:"] = "Videbla al:";
-App::$strings["Welcome to %s"] = "Bonvenon ĉe %s";
-App::$strings["Invalid request identifier."] = "Nevalida peta identigilo.";
-App::$strings["Discard"] = "ForviÅi";
-App::$strings["Ignore"] = "Ignori";
-App::$strings["System"] = "Sistemo";
-App::$strings["Network"] = "Reto";
-App::$strings["Personal"] = "Propra";
-App::$strings["Home"] = "Hejmo";
-App::$strings["Introductions"] = "Prezentoj";
-App::$strings["Messages"] = "MesaÄoj";
-App::$strings["Show Ignored Requests"] = "Montri ignoritajn petojn";
-App::$strings["Hide Ignored Requests"] = "KaÅi ignoritajn petojn";
-App::$strings["Notification type: "] = "Tipo de atentigo:";
-App::$strings["Friend Suggestion"] = "Amikosugestoj";
-App::$strings["suggested by %s"] = "sugestita de %s";
-App::$strings["Hide this contact from others"] = "KaÅi ĉi tiun kontakton al aliaj";
-App::$strings["Post a new friend activity"] = "AfiÅi novan amikecan aktivecon";
-App::$strings["if applicable"] = "se aplikebla";
-App::$strings["Approve"] = "Aprobi";
-App::$strings["Claims to be known to you: "] = "Pensas ke vi konas ilin:";
-App::$strings["yes"] = "jes";
-App::$strings["no"] = "ne";
-App::$strings["Approve as: "] = "Aprobi kiel:";
-App::$strings["Friend"] = "Amiko";
-App::$strings["Sharer"] = "Kunhaviganto";
-App::$strings["Fan/Admirer"] = "Fanatikulo/Admiranto";
-App::$strings["Friend/Connect Request"] = "Kontaktpeto";
-App::$strings["New Follower"] = "Nova abonanto";
-App::$strings["No introductions."] = "Neniom da prezentoj";
-App::$strings["Notifications"] = "Atentigoj";
-App::$strings["%s liked %s's post"] = "%s Åatis la afiÅon de %s";
-App::$strings["%s disliked %s's post"] = "%s malÅatis la afiÅon de %s";
-App::$strings["%s is now friends with %s"] = "%s amikiÄis kun %s";
-App::$strings["%s created a new post"] = "%s kreis novan afiÅon";
-App::$strings["%s commented on %s's post"] = "%s komentis pri la afiÅo de %s";
-App::$strings["No more network notifications."] = "Ne pli da retaj atentigoj.";
-App::$strings["Network Notifications"] = "Retaj Atentigoj";
-App::$strings["No more system notifications."] = "Ne pli da sistemaj atentigoj.";
-App::$strings["System Notifications"] = "Sistemaj Atentigoj";
-App::$strings["No more personal notifications."] = "Ne pli da personaj atentigoj";
-App::$strings["Personal Notifications"] = "Personaj Atentigoj";
-App::$strings["No more home notifications."] = "Ne pli da hejmrilataj atentigoj.";
-App::$strings["Home Notifications"] = "Hejmrilataj atentigoj";
-App::$strings["Could not access contact record."] = "Ne eblis atingi kontaktrikordo.";
-App::$strings["Could not locate selected profile."] = "Ne trovis elektitan profilon.";
-App::$strings["Contact updated."] = "Kontakto estas Äisdatigita.";
-App::$strings["Contact has been blocked"] = "Kontakto estas blokita.";
-App::$strings["Contact has been unblocked"] = "Kontakto estas malblokita.";
-App::$strings["Contact has been ignored"] = "Kontakto estas ignorita.";
-App::$strings["Contact has been unignored"] = "Kontakto estas malignorita.";
-App::$strings["Contact has been archived"] = "Enarkivigis kontakton";
-App::$strings["Contact has been unarchived"] = "Elarkivigis kontakton";
-App::$strings["Contact has been removed."] = "Kontakto estas forigita.";
-App::$strings["You are mutual friends with %s"] = "Vi estas reciproka amiko de %s";
-App::$strings["You are sharing with %s"] = "Vi kunhavigas kun %s";
-App::$strings["%s is sharing with you"] = "%s kunhavigas kun vi";
-App::$strings["Private communications are not available for this contact."] = "Privataj komunikadoj ne disponeblas por ĉi tiu kontakto.";
-App::$strings["Never"] = "Neniam";
-App::$strings["(Update was successful)"] = "(Äœisdatigo sukcesis.)";
-App::$strings["(Update was not successful)"] = "(Äœisdatigo malsukcesis.)";
-App::$strings["Suggest friends"] = "Sugesti amikojn";
-App::$strings["Network type: %s"] = "Reta tipo: %s";
-App::$strings["%d contact in common"] = array(
- 0 => "%d komuna kontakto",
- 1 => "%d komunaj kontaktoj",
-);
-App::$strings["View all contacts"] = "Vidi ĉiujn kontaktojn";
-App::$strings["Unblock"] = "Malbloki";
-App::$strings["Block"] = "Bloki";
-App::$strings["Toggle Blocked status"] = "Åœalti/malÅalti Blokitan staton";
-App::$strings["Unignore"] = "Malignori";
-App::$strings["Toggle Ignored status"] = "Åœalti/malÅalti Ignoritan staton";
-App::$strings["Unarchive"] = "Elarkivigi";
-App::$strings["Archive"] = "Enarkivigi";
-App::$strings["Toggle Archive status"] = "Åœalti/malÅalti Enarkivigitan staton";
-App::$strings["Repair"] = "Ripari";
-App::$strings["Advanced Contact Settings"] = "Specialaj Kontaktagordoj";
-App::$strings["Communications lost with this contact!"] = "Mi perdis la kommunikadon kun tiu kontakto!";
-App::$strings["Contact Editor"] = "Kontakta redaktilo.";
-App::$strings["Profile Visibility"] = "Videbleco de profilo";
-App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Bonvolu elekti la profilon kiu vi volas montri al %s aspektinde kiam sekure aspektante vian profilon.";
-App::$strings["Contact Information / Notes"] = "Kontaktaj informoj / Notoj";
-App::$strings["Edit contact notes"] = "Redakti kontaktnotojn";
-App::$strings["Visit %s's profile [%s]"] = "Viziti la profilon de %s [%s]";
-App::$strings["Block/Unblock contact"] = "Bloki/Malbloki kontakton";
-App::$strings["Ignore contact"] = "Ignori kontakton";
-App::$strings["Repair URL settings"] = "Ripari URL agordoj";
-App::$strings["View conversations"] = "Vidi konversaciojn";
-App::$strings["Delete contact"] = "ForviÅi kontakton";
-App::$strings["Last update:"] = "Plej ĵusa Äisdatigo:";
-App::$strings["Update public posts"] = "Äœisdatigi publikajn afiÅojn";
-App::$strings["Update now"] = "Äœisdatigi nun";
-App::$strings["Currently blocked"] = "Nuntempe blokata";
-App::$strings["Currently ignored"] = "Nuntempe ignorata";
-App::$strings["Currently archived"] = "Nuntempe enarkivigita";
-App::$strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Rispondoj/Åataĵo al viaj publikaj afiÅoj <strong>eble</strong> plu estos videbla";
-App::$strings["Suggestions"] = "Sugestoj";
-App::$strings["Suggest potential friends"] = "Sugesti amikojn";
-App::$strings["All Contacts"] = "Ĉiuj Kontaktoj";
-App::$strings["Show all contacts"] = "Montri ĉiujn kontaktojn";
-App::$strings["Unblocked"] = "Malblokita";
-App::$strings["Only show unblocked contacts"] = "Nur montri neblokitajn kontaktojn";
-App::$strings["Blocked"] = "Blokita";
-App::$strings["Only show blocked contacts"] = "Nur montri blokitajn kontaktojn";
-App::$strings["Ignored"] = "Ignorita";
-App::$strings["Only show ignored contacts"] = "Nur montri ignoritajn kontaktojn";
-App::$strings["Archived"] = "Enarkivigita";
-App::$strings["Only show archived contacts"] = "Nur montri enarkivigitajn kontaktojn";
-App::$strings["Hidden"] = "KaÅita";
-App::$strings["Only show hidden contacts"] = "Nur montri kaÅitajn kontaktojn";
-App::$strings["Mutual Friendship"] = "Reciproka amikeco";
-App::$strings["is a fan of yours"] = "estas admiranto de vi";
-App::$strings["you are a fan of"] = "vi estas admiranto de";
-App::$strings["Edit contact"] = "Redakti kontakton";
-App::$strings["Contacts"] = "Kontaktoj";
-App::$strings["Search your contacts"] = "Serĉi viajn kontaktojn";
-App::$strings["Finding: "] = "Trovata:";
-App::$strings["Find"] = "Trovi";
-App::$strings["No valid account found."] = "Ne trovis validan konton.";
-App::$strings["Password reset request issued. Check your email."] = "Eldonis riparadon de pasvorto. Legu vian retpoÅton.";
-App::$strings["Password reset requested at %s"] = "Pasvorta riparado petita je %s";
-App::$strings["Administrator"] = "Administranto";
-App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Ne povis konfirmi la peton. (Eble vi sendis Äin antaÅ­.) Pasvorta riparado malsukcesis.";
-App::$strings["Password Reset"] = "Pasvorta riparado";
-App::$strings["Your password has been reset as requested."] = "Via pasvorto estis riparita laÅ­ via peto.";
-App::$strings["Your new password is"] = "Via nova pasvorto estas";
-App::$strings["Save or copy your new password - and then"] = "Memorigi vian novan pasvorton - kaj poste";
-App::$strings["click here to login"] = "klaku ĉi tie por ensaluti";
-App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Vi povas Åangi vian pasvorton sur la paÄo <em>agordoj</em> kiam vi sukcese ensalutis.";
-App::$strings["Forgot your Password?"] = "Ĉu vi forgesis vian pasvorton?";
-App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Entajpu vian retpoÅtadreson kaj sendu por pasvorta riparado. Poste, bonvolu legi vian retpoÅton por trovi pliajn instrukciojn.";
-App::$strings["Nickname or Email: "] = "Salutnomo aÅ­ retpoÅtadreso: ";
-App::$strings["Reset"] = "Repari";
-App::$strings["Account settings"] = "Konto";
-App::$strings["Display settings"] = "Ekrano";
-App::$strings["Connector settings"] = "Konektiloj";
-App::$strings["Plugin settings"] = "Kromprogramoj";
-App::$strings["Connected apps"] = "Konektitaj programoj";
-App::$strings["Export personal data"] = "Eksporto";
-App::$strings["Remove account"] = "Forigi konton";
-App::$strings["Settings"] = "Agordoj";
-App::$strings["Missing some important data!"] = "Mankas importantaj datumoj!";
-App::$strings["Update"] = "Äœisdatigi";
-App::$strings["Failed to connect with email account using the settings provided."] = "Ne sukcesis konekti al retpoÅtkonto kun la provizitaj agordoj.";
-App::$strings["Email settings updated."] = "RetpoÅtagordoj Äisdatigita";
-App::$strings["Passwords do not match. Password unchanged."] = "La pasvortoj ne estas egala. Pasvorto ne ÅanÄita.";
-App::$strings["Empty passwords are not allowed. Password unchanged."] = "Malplenaj pasvortoj ne estas permesita. Pasvorto ne ÅanÄita.";
-App::$strings["Password changed."] = "Pasvorto ÅanÄita.";
-App::$strings["Password update failed. Please try again."] = "Äœisdatigo de pasvorto malsukcesis. Bonvolu provi refoje.";
-App::$strings[" Please use a shorter name."] = " Bonvolu uzi pli mallongan nomon.";
-App::$strings[" Name too short."] = " Nomo estas tro mallonga.";
-App::$strings[" Not valid email."] = " RepoÅtadreso ne validas.";
-App::$strings[" Cannot change to that email."] = " Ne povas ÅanÄi al tio retpoÅtadreso.";
-App::$strings["Private forum has no privacy permissions. Using default privacy group."] = "Privata forumo ne havas privatecajn agordojn. DefaÅ­lta privateca grupo estas uzata.";
-App::$strings["Private forum has no privacy permissions and no default privacy group."] = "Privata forumo havas nek privatecajn agordojn nek defaÅ­ltan privatecan grupon.";
-App::$strings["Settings updated."] = "Agordoj Äisdatigita.";
-App::$strings["Add application"] = "Aldoni programon";
-App::$strings["Consumer Key"] = "Åœlosilo de kliento";
-App::$strings["Consumer Secret"] = "Sekreto de kliento";
-App::$strings["Redirect"] = "Alidirekto";
-App::$strings["Icon url"] = "Piktograma adreso";
-App::$strings["You can't edit this application."] = "Ĉi tio programo ne estas redaktebla.";
-App::$strings["Connected Apps"] = "Konektitaj Programoj";
-App::$strings["Client key starts with"] = "Åœlosilo de kliento komencas kun";
-App::$strings["No name"] = "Neniu nomo";
-App::$strings["Remove authorization"] = "ForviÅi rajtigon";
-App::$strings["No Plugin settings configured"] = "Neniom da kromprogramoagordoj farita";
-App::$strings["Plugin Settings"] = "Kromprogramoagordoj";
-App::$strings["Built-in support for %s connectivity is %s"] = "Integrita subteno por %s koneto estas %s";
-App::$strings["enabled"] = "Åaltita";
-App::$strings["disabled"] = "malÅaltita";
-App::$strings["StatusNet"] = "StatusNet";
-App::$strings["Email access is disabled on this site."] = "RetpoÅta atingo ne disponeblas ĉi tie.";
-App::$strings["Connector Settings"] = "Konektiloagordoj";
-App::$strings["Email/Mailbox Setup"] = "Agordoj pri RetpoÅto";
-App::$strings["If you wish to communicate with email contacts using this service (optional), please specify how to connect to your mailbox."] = "Se vi volas uzi ĉi tiun servon por komuniki per retpoÅto (nedeviga), bonvolu specifi kiel konekti al vian retpoÅtkonton.";
-App::$strings["Last successful email check:"] = "Plej ĵusa sukcesa kontrolo de poÅto:";
-App::$strings["IMAP server name:"] = "Nomo de IMAP servilo:";
-App::$strings["IMAP port:"] = "Numero de IMAP pordo:";
-App::$strings["Security:"] = "Sekureco:";
-App::$strings["None"] = "Nenio";
-App::$strings["Email login name:"] = "RetpoÅta salutnomo:";
-App::$strings["Email password:"] = "RetpoÅta pasvorto:";
-App::$strings["Reply-to address:"] = "Responda adreso (Reply-to):";
-App::$strings["Send public posts to all email contacts:"] = "Sendu publikajn afiÅojn al ĉiuj retpoÅtkontaktoj:";
-App::$strings["Action after import:"] = "Ago post la importado:";
-App::$strings["Mark as seen"] = "Marki kiel legita";
-App::$strings["Move to folder"] = "Movi al dosierujo";
-App::$strings["Move to folder:"] = "Movi al dosierujo:";
-App::$strings["Display Settings"] = "Ekranagordoj";
-App::$strings["Display Theme:"] = "Vidiga etoso:";
-App::$strings["Update browser every xx seconds"] = "Ĝisdatigu retesplorilon ĉiu xxx sekundoj";
-App::$strings["Minimum of 10 seconds, no maximum"] = "Minimume 10 sekundoj, sen maksimumo";
-App::$strings["Number of items to display on the network page:"] = "Kvanto da elementoj kiuj estos montrata ĉe la reto paÄo.";
-App::$strings["Maximum of 100 items"] = "Maksimume 100 eroj";
-App::$strings["Don't show emoticons"] = "Ne montru ridetulojn";
-App::$strings["Normal Account Page"] = "Normala KontopaÄo";
-App::$strings["This account is a normal personal profile"] = "Tiu konto estas normala persona profilo";
-App::$strings["Soapbox Page"] = "Soapbox PaÄo";
-App::$strings["Automatically approve all connection/friend requests as read-only fans"] = "Aŭtomate konfirmi ĉiujn kontaktpetojn kiel nurlegaj admirantoj";
-App::$strings["Community Forum/Celebrity Account"] = "Komunuma Forumo/Eminentula Konto";
-App::$strings["Automatically approve all connection/friend requests as read-write fans"] = "Aŭtomate konfirmi ĉiujn kontaktpetojn kiel admirantoj kapable legi kaj skribi";
-App::$strings["Automatic Friend Page"] = "AÅ­tomata Amiko PaÄo";
-App::$strings["Automatically approve all connection/friend requests as friends"] = "Aŭtomate konfirmi ĉiujn kontaktpetojn kiel amikoj";
-App::$strings["Private Forum [Experimental]"] = "Privata Forumo [eksperimenta]";
-App::$strings["Private forum - approved members only"] = "Privata forumo - nur por aprobitaj membroj";
-App::$strings["OpenID:"] = "OpenID:";
-App::$strings["(Optional) Allow this OpenID to login to this account."] = "(Nedeviga) Permesi atingon al la konton al ĉi tio OpenID.";
-App::$strings["Publish your default profile in your local site directory?"] = "Publikigi vian defaÅ­ltan profilon en la loka reteja katalogo?";
-App::$strings["Publish your default profile in the global social directory?"] = "Publikigi vian defaÅ­ltan profilon en la tutmonda interkona katalogo?";
-App::$strings["Hide your contact/friend list from viewers of your default profile?"] = "KaÅi vian liston de kontaktoj/amiko al spektantoj de via defaÅ­lta profilo?";
-App::$strings["Hide your profile details from unknown viewers?"] = "KaÅi viajn profilajn detalojn al nekonataj spektantoj?";
-App::$strings["Allow friends to post to your profile page?"] = "Ĉu amikoj povu afiÅi al via profilo?";
-App::$strings["Allow friends to tag your posts?"] = "Ĉu amikoj povu aldoni markojn al viaj afiÅoj?";
-App::$strings["Allow us to suggest you as a potential friend to new members?"] = "Ĉu ni povu sugesti vin kiel amiko al novaj membroj?";
-App::$strings["Permit unknown people to send you private mail?"] = "Permesigi nekonatulojn sendi retpoÅton al vi?";
-App::$strings["Profile is <strong>not published</strong>."] = "Profilo <strong>ne estas publika</strong>.";
-App::$strings["or"] = "aÅ­";
-App::$strings["Your Identity Address is"] = "Via identeca adreso estas";
-App::$strings["Automatically expire posts after this many days:"] = "Automatike senvalidigi afiÅojn post tiom da tagoj:";
-App::$strings["If empty, posts will not expire. Expired posts will be deleted"] = "Se malplena, afiÅoj neniam senvalidiÄos. Senvalidigitajn afiÅon estos forviÅata";
-App::$strings["Advanced expiration settings"] = "Detalaj agordoj rilate al senvalidiÄo";
-App::$strings["Advanced Expiration"] = "Detala senvalidiÄo";
-App::$strings["Expire posts:"] = "Senvalidigi afiÅojn:";
-App::$strings["Expire personal notes:"] = "Senvalidigi personajn notojn:";
-App::$strings["Expire starred posts:"] = "Senvalidigi steligitajn afiÅojn:";
-App::$strings["Expire photos:"] = "Senvalidigi bildojn:";
-App::$strings["Only expire posts by others:"] = "Nur senvalidigi afiÅojn de aliaj: ";
-App::$strings["Account Settings"] = "Kontoagordoj";
-App::$strings["Password Settings"] = "Agordoj pri Pasvorto";
-App::$strings["New Password:"] = "Nova pasvorto:";
-App::$strings["Confirm:"] = "Konfirmi:";
-App::$strings["Leave password fields blank unless changing"] = "Lasu pasvortkampojn malplenaj se vi ne ÅanÄas la pasvorton.";
-App::$strings["Basic Settings"] = "Bazaj Agordoj";
-App::$strings["Full Name:"] = "Plena Nomo:";
-App::$strings["Email Address:"] = "RetpoÅtadreso:";
-App::$strings["Your Timezone:"] = "Via Horzono:";
-App::$strings["Default Post Location:"] = "DefaÅ­lta Loko por AfiÅoj:";
-App::$strings["Use Browser Location:"] = "Uzu Lokon laÅ­ Retesplorilo:";
-App::$strings["Security and Privacy Settings"] = "Agordoj pri Sekureco kaj Privateco";
-App::$strings["Maximum Friend Requests/Day:"] = "Taga maksimumo da kontaktpetoj:";
-App::$strings["(to prevent spam abuse)"] = "(por malhelpi spamaĵojn)";
-App::$strings["Default Post Permissions"] = "DefaÅ­ltaj permesoj por afiÅoj";
-App::$strings["(click to open/close)"] = "(klaku por malfermi/fermi)";
-App::$strings["Maximum private messages per day from unknown people:"] = "Taga maksimumo da privataj mesaÄoj.";
-App::$strings["Notification Settings"] = "Agordoj pri Atentigoj";
-App::$strings["By default post a status message when:"] = "DefaÅ­lte afiÅi statmesaÄon okaze de:";
-App::$strings["accepting a friend request"] = "akcepti kontaktpeton";
-App::$strings["joining a forum/community"] = "aliÄi forumon/komunumon";
-App::$strings["making an <em>interesting</em> profile change"] = "fari <em>interesan</em> profilÅanÄon";
-App::$strings["Send a notification email when:"] = "Sendu atentiga repoÅton se:";
-App::$strings["You receive an introduction"] = "Vi ricevas inviton";
-App::$strings["Your introductions are confirmed"] = "Viaj prezentoj estas konfirmata.";
-App::$strings["Someone writes on your profile wall"] = "Iu skribas je via profila muro.";
-App::$strings["Someone writes a followup comment"] = "Iu skribas sekvan komenton";
-App::$strings["You receive a private message"] = "Vi ricevas privatan mesaÄon.";
-App::$strings["You receive a friend suggestion"] = "Vi ricevas amikosugeston";
-App::$strings["You are tagged in a post"] = "Vi estas markita en afiÅon";
-App::$strings["Advanced Account/Page Type Settings"] = "Detalaj Agordoj pri Tipo de Konto/PaÄo.";
-App::$strings["Change the behaviour of this account for special situations"] = "Agordi la teniÄon de la konto en specialaj situacioj";
-App::$strings["Manage Identities and/or Pages"] = "Administri identecojn kaj/aÅ­ paÄojn.";
-App::$strings["Toggle between different identities or community/group pages which share your account details or which you have been granted \"manage\" permissions"] = "Åœalti inter aliaj identecojn aj komunumaj/grupaj paÄoj kiuj kunhavas viajn kontajn detalojn au por kiuj vi havas \"administranto\" permesojn.";
-App::$strings["Select an identity to manage: "] = "Elektu identencon por administrado:";
-App::$strings["Search Results For:"] = "Rezultoj de la serĉado pri:";
-App::$strings["Remove term"] = "ForviÅu terminon";
-App::$strings["Saved Searches"] = "Konservitaj Serĉadoj";
-App::$strings["add"] = "aldoni";
-App::$strings["Commented Order"] = "Komenta Ordo";
-App::$strings["Sort by Comment Date"] = "Ordigi laÅ­ Dato de Komento";
-App::$strings["Posted Order"] = "AfiÅita Ordo";
-App::$strings["Sort by Post Date"] = "Ordigi laÅ­ Dato de AfiÅado";
-App::$strings["Posts that mention or involve you"] = "AfiÅoj menciantaj vin aÅ­ pri vi";
-App::$strings["New"] = "Nova";
-App::$strings["Activity Stream - by date"] = "Fluo de Aktiveco - laÅ­ dato";
-App::$strings["Starred"] = "Steligita";
-App::$strings["Favourite Posts"] = "Favorigitaj AfiÅoj";
-App::$strings["Shared Links"] = "Kunhavigitaj Ligiloj";
-App::$strings["Interesting Links"] = "Interesaj Ligiloj";
-App::$strings["Warning: This group contains %s member from an insecure network."] = array(
- 0 => "Averto: La grupo enhavas %s membron el nesekuraj retejoj.",
- 1 => "Averto: La grupo enhavas %s membrojn el nesekuraj retejoj.",
-);
-App::$strings["Private messages to this group are at risk of public disclosure."] = "La privateco de privataj mesaÄoj al ĉi tiu grupo ne ĉiam estas garantita.";
-App::$strings["No such group"] = "Grupo ne estas trovita";
-App::$strings["Group is empty"] = "Grupo estas malplena";
-App::$strings["Group: "] = "Grupo:";
-App::$strings["Contact: "] = "Kontakto:";
-App::$strings["Private messages to this person are at risk of public disclosure."] = "La privateco de privataj mesaÄoj al ĉi tiu persono ne ĉiam estas garantita.";
-App::$strings["Invalid contact."] = "Nevalida kontakto.";
-App::$strings["Personal Notes"] = "Personaj Notoj";
-App::$strings["Save"] = "Konservi";
-App::$strings["Number of daily wall messages for %s exceeded. Message failed."] = "Number of daily wall messages for %s exceeded. MessaÄo malsukcesis.";
-App::$strings["No recipient selected."] = "Neniom da ricevontoj.";
-App::$strings["Unable to check your home location."] = "Ne eblas kontroli vian hejmlokon.";
-App::$strings["Message could not be sent."] = "Ne povas sendi la mesaÄon.";
-App::$strings["Message collection failure."] = "Malsukcese provis kolekti mesaÄojn.";
-App::$strings["Message sent."] = "MesaÄo estas sendita.";
-App::$strings["No recipient."] = "Neniom da ricevontoj.";
-App::$strings["Please enter a link URL:"] = "Bonvolu entajpu adreson de ligilo:";
-App::$strings["Send Private Message"] = "Sendi Privatan MesaÄon";
-App::$strings["If you wish for %s to respond, please check that the privacy settings on your site allow private mail from unknown senders."] = "Se vi deziras ke %s respondu, bonvolu kontroli ke la privatecaj agordoj je via retejo permesas privatajn mesaÄojn de nekonataj sendantoj.";
-App::$strings["To:"] = "Al:";
-App::$strings["Subject:"] = "Temo:";
-App::$strings["Your message:"] = "Via mesaÄo:";
-App::$strings["Welcome to Friendica"] = "Bonvenon ĉe Friendica";
-App::$strings["New Member Checklist"] = "Kontrololisto por Novaj Membroj";
-App::$strings["We would like to offer some tips and links to help make your experience enjoyable. Click any item to visit the relevant page. A link to this page will be visible from your home page for two weeks after your initial registration and then will quietly disappear."] = "Lasu nin oferi al vi kelkajn konsolojn kaj ligilojn por plifaciligi vian komencon. Klaku iun elementon por viziti la rilatan paÄon. Ligilo al ĉi tiu paÄo videblos en via hejmpaÄo dum du semajnojn post via komenca membriÄo. Post du semajnoj, la ligilo silente malaperos. ";
-App::$strings["On your <em>Quick Start</em> page - find a brief introduction to your profile and network tabs, connect to Facebook, make some new connections, and find some groups to join."] = "Je via <em>Rapida Starto</em> paÄo - trovu mallongan enigon pri via profilo kaj la reto folioj, konektu al Facebook, faru novajn konektojn kaj trovu aliÄindajn grupojn.";
-App::$strings["On your <em>Settings</em> page - change your initial password. Also make a note of your Identity Address. This looks just like an email address - and will be useful in making friends on the free social web."] = "Bonvolu ÅanÄi vian pasvorton ĉe <em>Agordoj</em>. Krome, memorigu vian identadreson. Äœi aspektas kiel retpoÅtadreso kaj estas bezonata por konekti al novaj amikon en la libera interkona reto.";
-App::$strings["Review the other settings, particularly the privacy settings. An unpublished directory listing is like having an unlisted phone number. In general, you should probably publish your listing - unless all of your friends and potential friends know exactly how to find you."] = "Kontrolu la aliajn agordojn, precipe la privatecajn agordojn. Nepublikigita profilo similas al havi telefonnumberon ne registrata en iu telefonlibro. Äœenerale vi eble volas publikigi vian profilon. Alie, viaj amikoj kaj estontaj amikoj bezonas scii kiel rekte trovi vin.";
-App::$strings["Upload a profile photo if you have not done so already. Studies have shown that people with real photos of themselves are ten times more likely to make friends than people who do not."] = "EnÅuti profilbildon se vi ankoraÅ­ ne havas Äin. LaÅ­ studoj, homoj kun realaj biloj de si mem trovas novajn amikon duope pli probable ol homoj sen reala bildo.";
-App::$strings["Authorise the Facebook Connector if you currently have a Facebook account and we will (optionally) import all your Facebook friends and conversations."] = "Rajtigu la Facebook Konektilon se vi nuntempe havas Facebook konton, kaj ni (nedeviga) enportu viajn Facebook amikojn kaj konversaciojn.";
-App::$strings["<em>If</em> this is your own personal server, installing the Facebook addon may ease your transition to the free social web."] = "<em>Se</tm> ĉi tiu estas via propra TTT servilo, instali la Facebook kromprogramon eble plifaciligos la transpason al la libera interkona reto.";
-App::$strings["Enter your email access information on your Connector Settings page if you wish to import and interact with friends or mailing lists from your email INBOX"] = "Entajpu la akreditaĵojn por via retpoÅtkonto en la konektilagordoj se vi volas importi aÅ­ interagi kun amikoj aÅ­ dissendlistoj pere de via retkesto.";
-App::$strings["Edit your <strong>default</strong> profile to your liking. Review the settings for hiding your list of friends and hiding the profile from unknown visitors."] = "Redakti viajn <strong>defaÅ­ltan</strong> profilon kiel vi Åatas Äin. Kontrolu la agordojn por kaÅi vian kontaktliston aÅ­ kaÅi vian profilon al nekonataj vizitantoj.";
-App::$strings["Set some public keywords for your default profile which describe your interests. We may be able to find other people with similar interests and suggest friendships."] = "Aldonu publikajn Ålosilvortojn al via defaÅ­lta profilo, kiuj priskribas viajn interesojn. Ni eble povas trovi aliajn uzantojn kun similaj interesoj kaj sugesti amikojn.";
-App::$strings["Your Contacts page is your gateway to managing friendships and connecting with friends on other networks. Typically you enter their address or site URL in the <em>Add New Contact</em> dialog."] = "Via kontaktpaÄo estas via portalo por administri amikojn kaj konekti kun amikoj en aliaj retoj. Vi kutime entajpas iliajn adreson aÅ­ URL adreso en la <em>Aldonu Novan Kontakton</em> dialogon.";
-App::$strings["The Directory page lets you find other people in this network or other federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on their profile page. Provide your own Identity Address if requested."] = "Ĉe la Katalogo vi povas trovi aliajn homojn en ĉi tiu retejo, au en aliaj federaciaj retejoj. Elrigardi al <em>Konekti</em> aÅ­ <em>Sekvi</em> ligiloj ĉe iliaj profilo. Donu vian propran Identecan Adreson se la retejo demandas Äin.";
-App::$strings["On the side panel of the Contacts page are several tools to find new friends. We can match people by interest, look up people by name or interest, and provide suggestions based on network relationships. On a brand new site, friend suggestions will usually begin to be populated within 24 hours."] = "En la flanka strio de la Kontaktoj paÄo troviÄas kelkajn helpilojn por trovi novajn amikojn. Ni povas automate trovi amikojn per interesoj, serĉu ilin per nomo aÅ­ intereso kaj faras sugestojn baze de estantaj kontaktoj. Ĉe nova instalita retejo, la unuaj sugestoj kutime aperas post 24 horoj.";
-App::$strings["Once you have made some friends, organize them into private conversation groups from the sidebar of your Contacts page and then you can interact with each group privately on your Network page."] = "Kiam vi trovis kelkajn novajn amikojn, ordigi ilin en grupoj por privata komunikado en la flanka strio de via Kontaktoj paÄo, kaj vi povas private komuniki kun ili je via Reto paÄo.";
-App::$strings["Our <strong>help</strong> pages may be consulted for detail on other program features and resources."] = "Niaj <strong>Helpo</strong> paÄoj enhavas pli da detaloj pri aliaj programaj trajtoj.";
-App::$strings["Item not available."] = "Elemento ne disponeblas.";
-App::$strings["Item was not found."] = "Elemento ne trovita.";
-App::$strings["Group created."] = "Grupo estas kreita.";
-App::$strings["Could not create group."] = "Ne povas krei grupon.";
-App::$strings["Group not found."] = "Grupo ne estas trovita.";
-App::$strings["Group name changed."] = "La nomo de la grupo estas ÅanÄita.";
-App::$strings["Permission denied"] = "Malpermesita";
-App::$strings["Create a group of contacts/friends."] = "Krei grupon da kontaktoj/amikoj.";
-App::$strings["Group Name: "] = "Nomo de la grupo:";
-App::$strings["Group removed."] = "Grupo estas forviÅita.";
-App::$strings["Unable to remove group."] = "Ne eblas forviÅi grupon.";
-App::$strings["Group Editor"] = "Grupa redaktilo";
-App::$strings["Members"] = "Anoj";
-App::$strings["Click on a contact to add or remove."] = "Klaku kontakton por aldoni aÅ­ forviÅi.";
-App::$strings["Invalid profile identifier."] = "Nevaliada profila identigilo.";
-App::$strings["Profile Visibility Editor"] = "Redaktilo por profila videbleco.";
-App::$strings["Profile"] = "Profilo";
-App::$strings["Visible To"] = "Videbla Al";
-App::$strings["All Contacts (with secure profile access)"] = "Ĉiuj Kontaktoj (kun sekura atingo al la profilo)";
-App::$strings["No contacts."] = "Neniu kontaktojn.";
-App::$strings["View Contacts"] = "Vidi Kontaktojn";
-App::$strings["Registration details for %s"] = "Detaloj de la registrado por %s";
-App::$strings["Registration successful. Please check your email for further instructions."] = "Registrado sukcesis. Bonvolu kontroli vian retpoÅton por pli da instruoj.";
-App::$strings["Failed to send email message. Here is the message that failed."] = "Malsukcesis sendi retpoÅton. Jen la malsukcesa mesaÄo.";
-App::$strings["Your registration can not be processed."] = "Mi ne povas prilabori vian registradon.";
-App::$strings["Registration request at %s"] = "Peto de registrado al %s";
-App::$strings["Your registration is pending approval by the site owner."] = "Via registrado bezonas apropbon de la administranto.";
-App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "La retejo transiras la maksimuman kvanton da ĉiutagaj kontaj registradoj. Bonvolu provi denove morgaŭ.";
-App::$strings["You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "Vi ankaÅ­ (nedeviga) povas plenigi la formularon per OpenID se vi provizas vian OpenID adreson kaj klakas 'Registri'.";
-App::$strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "Se vi ne konas OpenID, bonvolu lasi tiun kampon malplena kaj entajpu la aliajn elementojn.";
-App::$strings["Your OpenID (optional): "] = "Via OpenID (nedeviga):";
-App::$strings["Include your profile in member directory?"] = "Aldoni vian profilon al la membrokatalogo?";
-App::$strings["Membership on this site is by invitation only."] = "MembriÄi ĉi tie nur eblas laÅ­ invito.";
-App::$strings["Your invitation ID: "] = "Via invita idento: ";
-App::$strings["Registration"] = "Registrado";
-App::$strings["Your Full Name (e.g. Joe Smith): "] = "Via Plena Nomo (e.g. Joe Smith): ";
-App::$strings["Your Email Address: "] = "Via RetpoÅtadreso: ";
-App::$strings["Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be '<strong>nickname@\$sitename</strong>'."] = "Elektu kaÅnomon por la profilo. Tiu bezonas komenci kun teksta litero. Poste, via profila adreso ĉi tie estos: '<strong>kaÅnomo@\$sitename</strong>'.";
-App::$strings["Choose a nickname: "] = "Elektu kaÅnomon: ";
-App::$strings["Register"] = "Registri";
-App::$strings["People Search"] = "Serĉi Membrojn";
-App::$strings["status"] = "staton";
-App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s Åatas la %3\$s de %2\$s";
-App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s malÅatas la %3\$s de %2\$s";
-App::$strings["Item not found."] = "Elemento ne estas trovita.";
-App::$strings["Access denied."] = "Atingo nepermesita.";
-App::$strings["Photos"] = "Bildoj";
-App::$strings["Files"] = "Dosieroj";
-App::$strings["Account approved."] = "Konto aprobita.";
-App::$strings["Registration revoked for %s"] = "Registraĵo por %s senvalidigita.";
-App::$strings["Please login."] = "Bonvolu ensaluti.";
-App::$strings["Unable to locate original post."] = "Ne eblas trovi originalan afiÅon.";
-App::$strings["Empty post discarded."] = "ForviÅis malplenan afiÅon.";
-App::$strings["Wall Photos"] = "Muraj Bildoj";
-App::$strings["System error. Post not saved."] = "Sistema eraro. AfiÅo ne registrita.";
-App::$strings["This message was sent to you by %s, a member of the Friendica social network."] = "Ĉi mesaÄo estas sendita al vi de %s, membro de la Friendica interkona reto.";
-App::$strings["You may visit them online at %s"] = "Vi povas viziti ilin rete ĉe %s";
-App::$strings["Please contact the sender by replying to this post if you do not wish to receive these messages."] = "Bonvolu rispondi al ĉi mesaÄo kaj kontaktu la sendinto se vi ne volas ricevi tiujn mesaÄojn.";
-App::$strings["%s posted an update."] = "%s publikigis afiÅon.";
-App::$strings["Image uploaded but image cropping failed."] = "Bildo estas alÅutita, sed malsukcesis tranĉi la bildon.";
-App::$strings["Image size reduction [%s] failed."] = "Malsukcesis malpligrandigi [%s] la bildon.";
-App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "ReÅarÄu la paÄon au malplenigu la kaÅmemoro de la retesplorilo se la nova bildo ne tuj aperas.";
-App::$strings["Unable to process image"] = "Ne eblas procezi bildon.";
-App::$strings["Image exceeds size limit of %d"] = "Bildo estas pli granda ol la limito %d";
-App::$strings["Upload File:"] = "AlÅuti dosieron:";
-App::$strings["Upload Profile Photo"] = "AlÅuti profilbildon";
-App::$strings["Upload"] = "AlÅuti";
-App::$strings["skip this step"] = "Preterpasi tian paÅon";
-App::$strings["select a photo from your photo albums"] = "elekti bildon el viaj albumoj";
-App::$strings["Crop Image"] = "Stuci Bildon";
-App::$strings["Please adjust the image cropping for optimum viewing."] = "Bonvolu agordi la stuco de la bildo por optimuma aspekto.";
-App::$strings["Done Editing"] = "Finigi Redaktado";
-App::$strings["Image uploaded successfully."] = "Bildo estas sukcese enÅutita.";
-App::$strings["No profile"] = "Neniu profilo";
-App::$strings["Remove My Account"] = "Forigi Mian Konton";
-App::$strings["This will completely remove your account. Once this has been done it is not recoverable."] = "Tio tute forigos vian konton. Kiam farita, la konto ne estas restaÅ­rebla.";
-App::$strings["Please enter your password for verification:"] = "Bonvolu entajpi vian pasvorton por kontrolado:";
-App::$strings["New Message"] = "Nova MesaÄo";
-App::$strings["Unable to locate contact information."] = "Ne eblas trovi kontaktajn informojn.";
-App::$strings["Message deleted."] = "MesaÄo estas forviÅita.";
-App::$strings["Conversation removed."] = "Dialogo estas forviÅita.";
-App::$strings["No messages."] = "Neniom da mesaÄoj.";
-App::$strings["Unknown sender - %s"] = "Nekonata sendanto - %s";
-App::$strings["You and %s"] = "Vi kaj %s";
-App::$strings["%s and You"] = "%s kaj vi";
-App::$strings["Delete conversation"] = "ForviÅi dialogon";
-App::$strings["D, d M Y - g:i A"] = "D, d M Y - g:i A";
-App::$strings["%d message"] = array(
- 0 => "%d mesaÄo",
- 1 => "%d mesaÄoj",
-);
-App::$strings["Message not available."] = "MesaÄo nedisponebla.";
-App::$strings["Delete message"] = "ForviÅu mesaÄon";
-App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Sekura komunikado ne disponeblas. Vi <strong>eble</strong> povus respondi sur la profilpaÄo de la sendanto.";
-App::$strings["Send Reply"] = "Respondi";
-App::$strings["Friends of %s"] = "Amikoj de %s";
-App::$strings["No friends to display."] = "Neniom da amiko al montri.";
-App::$strings["Theme settings updated."] = "Gisdatigis agordojn pri etosoj.";
-App::$strings["Site"] = "Retejo";
-App::$strings["Users"] = "Uzantoj";
-App::$strings["Plugins"] = "Kromprogramoj";
-App::$strings["Themes"] = "Etosoj";
-App::$strings["DB updates"] = "DB Äisdatigoj";
-App::$strings["Logs"] = "Protokoloj";
-App::$strings["Admin"] = "Administrado";
-App::$strings["Plugin Features"] = "Kromprogramaj Trajtoj";
-App::$strings["User registrations waiting for confirmation"] = "Uzantaj registradoj atendante konfirmon";
-App::$strings["Normal Account"] = "Normala konto";
-App::$strings["Soapbox Account"] = "Soapbox Konto";
-App::$strings["Community/Celebrity Account"] = "Komunuma/eminentula Konto";
-App::$strings["Automatic Friend Account"] = "AÅ­tomata Amika Konto";
-App::$strings["Message queues"] = "MesaÄvicoj";
-App::$strings["Administration"] = "Administrado";
-App::$strings["Summary"] = "Resumo";
-App::$strings["Registered users"] = "Registrataj uzantoj";
-App::$strings["Pending registrations"] = "Okazontaj registradoj";
-App::$strings["Version"] = "Versio";
-App::$strings["Active plugins"] = "Åœaltitaj kromprogramoj";
-App::$strings["Site settings updated."] = "Äœisdatigis retejaj agordoj.";
-App::$strings["Closed"] = "Ferma";
-App::$strings["Requires approval"] = "Bezonas aprobon";
-App::$strings["Open"] = "Malferma";
-App::$strings["No SSL policy, links will track page SSL state"] = "Sen SSL strategio. Ligiloj sekvos la SSL staton de la paÄo.";
-App::$strings["Force all links to use SSL"] = "Devigi ke ĉiuj ligiloj uzu SSL.";
-App::$strings["Self-signed certificate, use SSL for local links only (discouraged)"] = "Memsubskribita atestilo, nur uzu SSL por lokaj ligiloj (malkuraÄigata)";
-App::$strings["File upload"] = "AlÅuto";
-App::$strings["Policies"] = "Politiko";
-App::$strings["Advanced"] = "Altnivela";
-App::$strings["Site name"] = "Nomo de retejo";
-App::$strings["Banner/Logo"] = "Emblemo";
-App::$strings["System language"] = "Sistema lingvo";
-App::$strings["System theme"] = "Sistema etoso";
-App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "DefaÅ­lta sistema etoso - transpasebla de uzantprofiloj - <a href='#' id='cnftheme'>redakti agordoj pri etosoj</a>";
-App::$strings["SSL link policy"] = "Strategio por SSL ligiloj";
-App::$strings["Determines whether generated links should be forced to use SSL"] = "Difinas ĉu generotaj ligiloj devige uzu SSL.";
-App::$strings["Maximum image size"] = "Maksimuma bildgrando";
-App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Maksimuma grando en bajtoj por alÅutotaj bildoj. DefaÅ­lte 0, kio signifas neniu limito.";
-App::$strings["Register policy"] = "Interkonsento pri registrado";
-App::$strings["Register text"] = "Interkonsento teksto";
-App::$strings["Will be displayed prominently on the registration page."] = "Tio estos eminente montrata en la registro paÄo.";
-App::$strings["Accounts abandoned after x days"] = "Kontoj forlasitaj post x tagoj";
-App::$strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Mi ne malÅparu energion por enketi aliajn retejojn pri forlasitaj kontoj. Entajpu 0 por ne uzi templimo.";
-App::$strings["Allowed friend domains"] = "Permesitaj amikaj domainoj";
-App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Perkome disigita listo da domajnoj kiuj rajtas konstrui amikecojn kun ĉi tiu retejo. Ĵokeroj eblas. Malplena por rajtigi ĉiujn ajn domajnojn.";
-App::$strings["Allowed email domains"] = "Permesitaj retpoÅtaj domajnoj";
-App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Perkome disigita listo da domajnoj kiuj uzeblas kiel retpoÅtaj adresoj en novaj registradoj. Ä´okeroj eblas. Malplena por rajtigi ĉiujn ajn domajnojn.";
-App::$strings["Block public"] = "Bloki publike";
-App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Elektu por bloki publikan atingon al ĉiuj alie publikajn paÄojn en ĉi tiu retejo kiam vi ne estas ensalutita.";
-App::$strings["Force publish"] = "Devigi publikigon";
-App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Elektu por devigi la registradon en la loka katalogo al ĉiuj profiloj en ĉi tiu retejo.";
-App::$strings["Global directory update URL"] = "Äœenerala adreso por Äisdatigi la katalogon";
-App::$strings["URL to update the global directory. If this is not set, the global directory is completely unavailable to the application."] = "URL adreso por Äisdatigi la tutmondan katalogon. Se ne agordita, la tutmonda katatolge tute ne disponeblas al la programo.";
-App::$strings["Block multiple registrations"] = "Bloki pluroblajn registradojn.";
-App::$strings["Disallow users to register additional accounts for use as pages."] = "Malpermesi al uzantoj la permeson por registri pluajn kontojn kiel paÄoj.";
-App::$strings["OpenID support"] = "Subteno por OpenID";
-App::$strings["OpenID support for registration and logins."] = "Subteni OpenID por registrado kaj ensaluto.";
-App::$strings["Fullname check"] = "Kontroli plenan nomon";
-App::$strings["Force users to register with a space between firstname and lastname in Full name, as an antispam measure"] = "Kiel kontraÅ­spamilo, devigi uzantoj al registrado kun spaceto inter la persona nomo kaj la familia nomo.";
-App::$strings["UTF-8 Regular expressions"] = "UTF-8 regulaj exprimoj";
-App::$strings["Use PHP UTF8 regular expressions"] = "Uzi PHP UTF8 regulajn esprimojn.";
-App::$strings["Show Community Page"] = "Montri Komunuma PaÄo";
-App::$strings["Display a Community page showing all recent public postings on this site."] = "Montri komunuma paÄo kun ĉiuj ĵusaj afiÅoj en ĉi tiu retejo.";
-App::$strings["Enable OStatus support"] = "Åœalti subtenon por OStatus";
-App::$strings["Provide built-in OStatus (identi.ca, status.net, etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."] = "Provizi integritan OStatus (identi.ca, status.net ktp) subtenon. Ĉiuj komunikadoj en OStatus estas publikaj, do privatecaj avertoj aperos de tempo al tempo.";
-App::$strings["Enable Diaspora support"] = "Åœalti subtenon por Diaspora";
-App::$strings["Provide built-in Diaspora network compatibility."] = "Provizi integritan Diaspora subtenon.";
-App::$strings["Only allow Friendica contacts"] = "Nur permesigi Friendica kontaktojn";
-App::$strings["All contacts must use Friendica protocols. All other built-in communication protocols disabled."] = "Ĉiuj kontaktoj devas uzi Friendica protokolojn. Ĉiuj aliaj komunikaj protokoloj malaktivita.";
-App::$strings["Verify SSL"] = "Kontroli SSL";
-App::$strings["If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites."] = "Se vi deziras, vi povas aktivigi severan kontroladon de SSL atestiloj. Pro tio, vie (tute) ne eblos konekti al SSL retejoj kun memsubskribitaj atestiloj.";
-App::$strings["Proxy user"] = "Uzantnomo por retperanto";
-App::$strings["Proxy URL"] = "URL adreso de retperanto";
-App::$strings["Network timeout"] = "Reta tempolimo";
-App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valoro en sekundoj. Uzu 0 por mallimitigi (ne rekomendata).";
-App::$strings["Delivery interval"] = "Intervalo de liverado";
-App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Malfruigi fonan liveradon dum tiom da sekundoj por malpliigi la Åargon de la sistemo. Rekomendoj: 4-5 por komunaj serviloj, 2-3 por virtualaj privataj serviloj, 0-1 por grandaj dediĉitaj serviloj.";
-App::$strings["Poll interval"] = "Enketintervalo";
-App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Malfruigi fonajn enketprocesojn je tiom da sekundoj por malpliigi la Åargon de la sistemo. Se 0, uzas la liverintervalon.";
-App::$strings["Maximum Load Average"] = "Maksimuma Meza SistemÅargo";
-App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maksimuma sistemÅargo post kiu livero- kaj enketprocesoj estos prokrastinataj. - DefaÅ­lte 50.";
-App::$strings["Update has been marked successful"] = "Äœisdatigo estas markita sukcesa";
-App::$strings["Executing %s failed. Check system logs."] = "Ne sukcesis plenumi %s. Kontrolu la sistemprotokolojn.";
-App::$strings["Update %s was successfully applied."] = "Sukcese aplikis la Äisdatigo %s.";
-App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "Äœisdatigo %s ne liveris elirstaton. ";
-App::$strings["Update function %s could not be found."] = "Ne troveblas Äisdatigo funkcio %s.";
-App::$strings["No failed updates."] = "Neniom da malsukcesaj Äisdatigoj.";
-App::$strings["Failed Updates"] = "Malsukcesaj Äœisdatigoj";
-App::$strings["This does not include updates prior to 1139, which did not return a status."] = "Ne inkluzivas Äisdatigojn antaÅ­ 1139, kiuj ne liveris elirstaton.";
-App::$strings["Mark success (if update was manually applied)"] = "Marki sukcesa (se la Äisdatigo estas instalita mane)";
-App::$strings["Attempt to execute this update step automatically"] = "Provi automate plenumi ĉi tian paÅon de la Äisdatigo.";
-App::$strings["%s user blocked/unblocked"] = array(
- 0 => "Blokis/malblokis %s uzanton",
- 1 => "Blokis/malblokis %s uzantojn",
-);
-App::$strings["%s user deleted"] = array(
- 0 => "%s uzanto forviÅita",
- 1 => "%s uzanto forviÅitaj",
-);
-App::$strings["User '%s' deleted"] = "Uzanto '%s' forviÅita";
-App::$strings["User '%s' unblocked"] = "Uzanto '%s' malblokita";
-App::$strings["User '%s' blocked"] = "Uzanto '%s' blokita";
-App::$strings["select all"] = "elekti ĉiujn";
-App::$strings["User registrations waiting for confirm"] = "RegistriÄoj atendante aprobon";
-App::$strings["Request date"] = "Dato de peto";
-App::$strings["Email"] = "RetpoÅto";
-App::$strings["No registrations."] = "Neniom da registriÄoj.";
-App::$strings["Deny"] = "Negi";
-App::$strings["Register date"] = "Dato de registrado";
-App::$strings["Last login"] = "Plej ĵusa ensaluto";
-App::$strings["Last item"] = "Plej ĵusa elemento";
-App::$strings["Account"] = "Konto";
-App::$strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "La elektitaj uzantkontoj estas forviÅotaj!\\n\\nĈiuj elementoj kiujn ili afiÅis je la retpaÄo estos permanente forviÅitaj.\\n\\nĈu vi certas?";
-App::$strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "La uzanto {0} estas forviÅota!\\n\\nĈiuj elementoj kiujn li afiÅis je la retpaÄo estos permanente forviÅitaj.\\n\\nĈu vi certas?";
-App::$strings["Plugin %s disabled."] = "Kromprogramo %s estas malÅaltita.";
-App::$strings["Plugin %s enabled."] = "Kromprogramo %s estas Åaltita.";
-App::$strings["Disable"] = "MalÅalti";
-App::$strings["Enable"] = "Åœalti";
-App::$strings["Toggle"] = "Åœalti/MalÅalti";
-App::$strings["Author: "] = "AÅ­toro: ";
-App::$strings["Maintainer: "] = "Prizorganto: ";
-App::$strings["No themes found."] = "Ne trovis etosojn.";
-App::$strings["Screenshot"] = "Ekrankopio";
-App::$strings["[Experimental]"] = "[Eksperimenta]";
-App::$strings["[Unsupported]"] = "[Nesubtenata]";
-App::$strings["Log settings updated."] = "Protokolagordoj Äisdatigitaj.";
-App::$strings["Clear"] = "ForviÅi";
-App::$strings["Debugging"] = "Sencimigado";
-App::$strings["Log file"] = "Protokolo";
-App::$strings["Must be writable by web server. Relative to your Friendica top-level directory."] = "Devas esti skribebla de la retservilo. Relativa al via plej supra Friendica dosierujo.";
-App::$strings["Log level"] = "Protokolnivelo";
-App::$strings["Close"] = "Fermi";
-App::$strings["FTP Host"] = "FTP Servilo";
-App::$strings["FTP Path"] = "FTP Vojo";
-App::$strings["FTP User"] = "FTP Uzanto";
-App::$strings["FTP Password"] = "FTP Pasvorto";
-App::$strings["Requested profile is not available."] = "La petita profilo ne disponeblas.";
-App::$strings["Access to this profile has been restricted."] = "Atingo al ĉi tio profilo estas limitigita";
-App::$strings["Tips for New Members"] = "Konsilo por novaj membroj";
-App::$strings["{0} wants to be your friend"] = "{0} volas amikiÄi kun vi";
-App::$strings["{0} sent you a message"] = "{0} sendis mesaÄon al vi";
-App::$strings["{0} requested registration"] = "{0} petis registradon";
-App::$strings["{0} commented %s's post"] = "{0} komentis pri la afiÅo de %s";
-App::$strings["{0} liked %s's post"] = "{0} satis la afiÅon de %s";
-App::$strings["{0} disliked %s's post"] = "{0} malÅatis la afiÅon de %s";
-App::$strings["{0} is now friends with %s"] = "{0} amikiÄis kun %s";
-App::$strings["{0} posted"] = "{0} afiÅis";
-App::$strings["{0} tagged %s's post with #%s"] = "{0} markis la afiÅon de %s kun #%s";
-App::$strings["{0} mentioned you in a post"] = "{0} menciis vin en afiÅo";
-App::$strings["Contacts who are not members of a group"] = "Kontaktoj kiuj ne estas en iu grupo";
-App::$strings["OpenID protocol error. No ID returned."] = "Eraro en OpenID protokolo. Ne resendis identecon.";
-App::$strings["Account not found and OpenID registration is not permitted on this site."] = "Ne trovis kontoj, kaj registrado per OpenID estas malpermesita ĉi tie.";
-App::$strings["Login failed."] = "Ensalutado malsukcesis.";
-App::$strings["Contact added"] = "Aldonis kontakton";
-App::$strings["Common Friends"] = "Komunaj Amikoj";
-App::$strings["No contacts in common."] = "Neniom da komunaj kontaktoj.";
-App::$strings["Item has been removed."] = "Elemento estas forviÅita.";
-App::$strings["Applications"] = "Programoj";
-App::$strings["No installed applications."] = "Neniom da instalitaj programoj.";
-App::$strings["Search"] = "Serĉi";
-App::$strings["Profile not found."] = "Profilo ne trovita.";
-App::$strings["Profile Name is required."] = "Nomo de profilo estas bezonata.";
-App::$strings["Marital Status"] = "Amrilata Stato";
-App::$strings["Romantic Partner"] = "Kora Partnero";
-App::$strings["Likes"] = "Åœatoj";
-App::$strings["Dislikes"] = "MalÅatoj";
-App::$strings["Work/Employment"] = "Laboro";
-App::$strings["Religion"] = "Religio";
-App::$strings["Political Views"] = "Politikaj Opinioj";
-App::$strings["Gender"] = "Sekso";
-App::$strings["Sexual Preference"] = "Seksa Prefero";
-App::$strings["Homepage"] = "HejmpaÄo";
-App::$strings["Interests"] = "Interesoj";
-App::$strings["Address"] = "Adreso";
-App::$strings["Location"] = "Loko";
-App::$strings["Profile updated."] = "Profilo Äisdatigita.";
-App::$strings[" and "] = " kaj ";
-App::$strings["public profile"] = "publika profilo";
-App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s ÅanÄis %2\$s al &ldquo;%3\$s&rdquo;";
-App::$strings[" - Visit %1\$s's %2\$s"] = " - Vizitu la %2\$s de %1\$s";
-App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s havas Äisdatigigan %2\$s, ÅanÄas %3\$s.";
-App::$strings["Profile deleted."] = "Profilo forviÅita.";
-App::$strings["Profile-"] = "Profilo-";
-App::$strings["New profile created."] = "Nova profilo kreita.";
-App::$strings["Profile unavailable to clone."] = "Ne eblas kopii profilon.";
-App::$strings["Hide your contact/friend list from viewers of this profile?"] = "KaÅi vian liston de kontaktoj/amikoj al vidantoj de ĉi-tio profilo?";
-App::$strings["Edit Profile Details"] = "Redakti Detalojn de Profilo";
-App::$strings["View this profile"] = "Vidi la profilon.";
-App::$strings["Create a new profile using these settings"] = "Krei novan profilon kun tiaj agordoj";
-App::$strings["Clone this profile"] = "Kopii ĉi tiun profilon";
-App::$strings["Delete this profile"] = "ForviÅi ĉi tiun profilon";
-App::$strings["Profile Name:"] = "Nomo de Profilo:";
-App::$strings["Your Full Name:"] = "Via Plena Nomo:";
-App::$strings["Title/Description:"] = "Titolo/Priskribo:";
-App::$strings["Your Gender:"] = "Via Sekso:";
-App::$strings["Birthday (%s):"] = "NaskiÄtago (%s):";
-App::$strings["Street Address:"] = "Adreso:";
-App::$strings["Locality/City:"] = "Urbo:";
-App::$strings["Postal/Zip Code:"] = "PoÅtkodo:";
-App::$strings["Country:"] = "Lando:";
-App::$strings["Region/State:"] = "Åœtato:";
-App::$strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Civita Stato:";
-App::$strings["Who: (if applicable)"] = "Kiu (se aplikeble):";
-App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Ekzemploj: cathy123, Cathy Williams, cathy@example.com";
-App::$strings["Since [date]:"] = "Ekde [dato]:";
-App::$strings["Sexual Preference:"] = "Seksa Prefero:";
-App::$strings["Homepage URL:"] = "Adreso de HejmpaÄo:";
-App::$strings["Hometown:"] = "Hejmurbo:";
-App::$strings["Political Views:"] = "Politikaj Opinioj:";
-App::$strings["Religious Views:"] = "Religiaj Opinioj:";
-App::$strings["Public Keywords:"] = "Publikaj Ålosilvortoj:";
-App::$strings["Private Keywords:"] = "Privataj Ålosilvortoj:";
-App::$strings["Likes:"] = "Åœatoj:";
-App::$strings["Dislikes:"] = "MalÅatoj:";
-App::$strings["Example: fishing photography software"] = "Ekzemple: fiÅkapti fotografio programaro";
-App::$strings["(Used for suggesting potential friends, can be seen by others)"] = "(Por sugesti amikoj. Videbla al aliaj.)";
-App::$strings["(Used for searching profiles, never shown to others)"] = "(Por serĉi profilojn. Neniam videbla al aliaj.)";
-App::$strings["Tell us about yourself..."] = "Diru al ni pri vi...";
-App::$strings["Hobbies/Interests"] = "Åœatokupoj/Interesoj";
-App::$strings["Contact information and Social Networks"] = "Kontaktaj informoj kaj Interkonaj Retejoj";
-App::$strings["Musical interests"] = "Muzikaj interesoj";
-App::$strings["Books, literature"] = "Libroj, literaturo";
-App::$strings["Television"] = "Televido";
-App::$strings["Film/dance/culture/entertainment"] = "Filmoj/dancoj/arto/amuzaĵoj";
-App::$strings["Love/romance"] = "Amo/romanco";
-App::$strings["Work/employment"] = "Laboro";
-App::$strings["School/education"] = "Lernejo/eduko";
-App::$strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "Ĉi tio estas via <strong>publika</strong> profilo. Ĝi <strong>eble</strong> estas videbla al ĉiuj en interreto. ";
-App::$strings["Age: "] = "AÄo:";
-App::$strings["Edit/Manage Profiles"] = "Redakti/administri Profilojn";
-App::$strings["Change profile photo"] = "ÅœanÄi profilbildon";
-App::$strings["Create New Profile"] = "Krei novan profilon";
-App::$strings["Profile Image"] = "Profilbildo";
-App::$strings["visible to everybody"] = "videbla al ĉiuj";
-App::$strings["Edit visibility"] = "Redakti videblecon";
-App::$strings["Save to Folder:"] = "Konservi en Dosierujo:";
-App::$strings["- select -"] = "- elekti -";
-App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s markis la %3\$s de %2\$s kun %4\$s";
-App::$strings["No potential page delegates located."] = "Ne trovis delegiteblajn paÄojn.";
-App::$strings["Delegate Page Management"] = "Administrado de Delegitajn PaÄojn";
-App::$strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "Delegitoj povas administri ĉiujn ecojn de la konto/paÄo, escepte bazaj kontoagordoj. Bonvolu ne delegitigi vian personan konton al iu al kiu vi ne plene fidas.";
-App::$strings["Existing Page Managers"] = "Estantaj Administrantoj de la PaÄo";
-App::$strings["Existing Page Delegates"] = "Estantaj Delegitoj de la PaÄo";
-App::$strings["Potential Delegates"] = "Eblaj Delegitoj";
-App::$strings["Add"] = "Aldoni";
-App::$strings["No entries."] = "Neniom da afiÅoj.";
-App::$strings["Friend Suggestions"] = "Amikosugestoj";
-App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Neniu sugestoj disponeblas. Se ĉi tiu estas nova retejo, bonvolu reprovi post 24 horoj.";
-App::$strings["Ignore/Hide"] = "Ignori/KaÅi";
-App::$strings["Global Directory"] = "Tutmonda Katalogo";
-App::$strings["Find on this site"] = "Trovi en ĉi retejo";
-App::$strings["Site Directory"] = "Reteja Katalogo";
-App::$strings["Gender: "] = "Sekso:";
-App::$strings["No entries (some entries may be hidden)."] = "Neniom da afiÅoj (kelkaj afiÅoj eble ne estas videbla).";
-App::$strings["%s : Not a valid email address."] = "%s: Ne estas valida retpoÅtadreso.";
-App::$strings["Please join us on Friendica"] = "Bonvolu aliÄi kun ni ĉe Friendica";
-App::$strings["%s : Message delivery failed."] = "%s: La livero de la mesaÄo malsukcesis.";
-App::$strings["%d message sent."] = array(
- 0 => "Sendis %d mesaÄon.",
- 1 => "Sendis %d mesaÄojn.",
-);
-App::$strings["You have no more invitations available"] = "Vi ne plu disponeblas invitaĵojn";
-App::$strings["Visit %s for a list of public sites that you can join. Friendica members on other sites can all connect with each other, as well as with members of many other social networks."] = "Vizitu %s por listo de publikaj retejoj kie vi povas aliÄi. Anoj de Friendica ĉe aliaj retejoj povas konekti unu kun la alian, kaj ankaÅ­ kun membroj de multaj aliaj retejoj.";
-App::$strings["To accept this invitation, please visit and register at %s or any other public Friendica website."] = "Por akcepti ĉi tiu invito, bonvolu viziti kaj registriÄi ĉe %s au alia publika Friendica retejo.";
-App::$strings["Friendica sites all inter-connect to create a huge privacy-enhanced social web that is owned and controlled by its members. They can also connect with many traditional social networks. See %s for a list of alternate Friendica sites you can join."] = "Ĉiuj Friendica retejoj interkonektiÄas kaj kune faras grandan altprivatecan interkonan reton, kiun posedas kaj kontrolas Äiaj membroj. Ili ankaÅ­ povas konekti kun multe de tradiciaj interkonaj retejoj. Vidu %s por listo de publikaj retejoj kie vi povas aliÄi.";
-App::$strings["Our apologies. This system is not currently configured to connect with other public sites or invite members."] = "Senkulpigu nin. La sistemo nuntempe ne estas agordita por konekti al aliaj retejoj au inviti membrojn.";
-App::$strings["Send invitations"] = "Sendi invitojn";
-App::$strings["Enter email addresses, one per line:"] = "Entajpu retpoÅtadresojn, po unu por ĉiu linio.";
-App::$strings["You are cordially invited to join me and other close friends on Friendica - and help us to create a better social web."] = "Ni bonkore invitas vin aliÄi kun ni kaj aliaj bonaj amikoj ĉe Friendica. Helpu nin krei pli bonan interkonan reton.";
-App::$strings["You will need to supply this invitation code: \$invite_code"] = "Vi bezonas ĉi-tiun invitkodon: \$invite_code";
-App::$strings["Once you have registered, please connect with me via my profile page at:"] = "Kiam vi registris, bonvolu konekti al mi pere de mi profilo ĉe: ";
-App::$strings["For more information about the Friendica project and why we feel it is important, please visit http://friendica.com"] = "Por pli da informoj pri Friendica, kaj kial ni pensas ke Äi estas grava, bonvolu viziti http://friendica.com";
-App::$strings["This may occasionally happen if contact was requested by both persons and it has already been approved."] = "Tio ĉi okazis de tempo al tempo se ambaÅ­ personoj petas kontakton ka Äi jam estas aprobita.";
-App::$strings["Response from remote site was not understood."] = "Ne komprenis la rispondon de la fora retejo.";
-App::$strings["Unexpected response from remote site: "] = "Neatendita rispondo de la fora retejo:";
-App::$strings["Confirmation completed successfully."] = "Konfirmo sukcese kompletigita.";
-App::$strings["Remote site reported: "] = "La fora retejo raportis:";
-App::$strings["Temporary failure. Please wait and try again."] = "Dumtempa eraro. Bonvolu atendi kaj provi refoje.";
-App::$strings["Introduction failed or was revoked."] = "La prezento malsukcesis au estas revokita.";
-App::$strings["Unable to set contact photo."] = "Neeblas agordi la kontaktbildo.";
-App::$strings["%1\$s is now friends with %2\$s"] = "%1\$s amikiÄis kun %2\$s";
-App::$strings["No user record found for '%s' "] = "Ne trovis uzanton '%s' ";
-App::$strings["Our site encryption key is apparently messed up."] = "Åœajnas kvazaÅ­ la ĉifroÅlosilo de nia retejo estas fuÅita.";
-App::$strings["Empty site URL was provided or URL could not be decrypted by us."] = "Malplena adreso de retejo provizita, aŭ ni ne povis malĉifri la adreson.";
-App::$strings["Contact record was not found for you on our site."] = "Kontakto ne trovita por vi en via retejo.";
-App::$strings["Site public key not available in contact record for URL %s."] = "Publika Ålosilo de retejo ne disponeblas en la kontaktrikordo por la URL adreso %s.";
-App::$strings["The ID provided by your system is a duplicate on our system. It should work if you try again."] = "La identeco provizita de via sistemo estas duoblo ĉe nia sistemo. Ĝi eble funkcias se vi provas refoje.";
-App::$strings["Unable to set your contact credentials on our system."] = "Ne sukcesis agordi la legitimaĵojn de via kontakto ĉe nia sistemo.";
-App::$strings["Unable to update your contact profile details on our system"] = "Neeblas Äisdatigi viajn profildetalojn ĉe nia sistemo.";
-App::$strings["Connection accepted at %s"] = "Konekto akceptita je %s";
-App::$strings["%1\$s has joined %2\$s"] = "%1\$s aliÄis al %2\$s";
-App::$strings["Google+ Import Settings"] = "Google+ Importo";
-App::$strings["Enable Google+ Import"] = "Aktivigi Äœoogle+ Importon";
-App::$strings["Google Account ID"] = "Google Konto ID";
-App::$strings["Google+ Import Settings saved."] = "Konservis Agordojn por Google+ Importo.";
-App::$strings["Facebook disabled"] = "Facebook malÅaltita";
-App::$strings["Updating contacts"] = "Mi Äisdatigas la kontaktojn.";
-App::$strings["Facebook API key is missing."] = "La API Ålosilo de Facebook ne estas konata ĉi tie.";
-App::$strings["Facebook Connect"] = "Kontekto al Facebook";
-App::$strings["Install Facebook connector for this account."] = "Instali la Facebook konektilo por ĉi tiu konto.";
-App::$strings["Remove Facebook connector"] = "Forigi la Facebook konektilon.";
-App::$strings["Re-authenticate [This is necessary whenever your Facebook password is changed.]"] = "ReaÅ­tentiÄi [Tio estas bezonata ĉiam kiam vi ÅanÄis vian pasvorton ĉe Facebook.]";
-App::$strings["Post to Facebook by default"] = "Ĉiam afiÅi al Facebook.";
-App::$strings["Facebook friend linking has been disabled on this site. The following settings will have no effect."] = "Ligado kun Facebook amikoj estas malaktivita ĉe tiu retejo. La sekvantaj agordoj do ne havas validecon.";
-App::$strings["Facebook friend linking has been disabled on this site. If you disable it, you will be unable to re-enable it."] = "Ligado kun Facebook amikoj estas malaktivita ĉe tiu retejo. Se vi malÅaltas Äin, vi ne eblos ree Åalti Äin.";
-App::$strings["Link all your Facebook friends and conversations on this website"] = "Alligu ĉiujn viajn Facebook amikojn kaj konversaciojn je ĉi-tiu retejo.";
-App::$strings["Facebook conversations consist of your <em>profile wall</em> and your friend <em>stream</em>."] = "Facebok konversacioj konsistas el via <em>profilmuro</em> kaj la <em>fluo</em> de viaj amikoj.";
-App::$strings["On this website, your Facebook friend stream is only visible to you."] = "Je ĉi-tiu retejo, la fluo de viaj amikoj ĉe Facebook nur videblas al vi.";
-App::$strings["The following settings determine the privacy of your Facebook profile wall on this website."] = "La sekvontaj agordoj difinas la privatecon de via Facebook profilmuro je ĉi-tiu retejo.";
-App::$strings["On this website your Facebook profile wall conversations will only be visible to you"] = "Je ĉi-tiu retejo, la conversacioj sur via Facebook profilmuro nur videblas al vi.";
-App::$strings["Do not import your Facebook profile wall conversations"] = "Ne importi konversaciojn de via Facebook profilmuro";
-App::$strings["If you choose to link conversations and leave both of these boxes unchecked, your Facebook profile wall will be merged with your profile wall on this website and your privacy settings on this website will be used to determine who may see the conversations."] = "Se vi elektas alligi conversaciojn kaj ne elektas tiujn butonojn, via Facebook profilmuro estas kunigota kun via profilmuro ĉi tie. Viaj privatecaj agordoj ĉi tie difinos kiu povas vidi la coversaciojn.";
-App::$strings["Comma separated applications to ignore"] = "Ignorotaj programoj, disigita per komo";
-App::$strings["Problems with Facebook Real-Time Updates"] = "Problemoj kun Facebook Realtempaj Äœisdatigoj";
-App::$strings["Facebook"] = "Facebook";
-App::$strings["Facebook Connector Settings"] = "Agordoj por la Facebook konektilo";
-App::$strings["Facebook API Key"] = "Facebook API Ålosilo";
-App::$strings["Error: it appears that you have specified the App-ID and -Secret in your .htconfig.php file. As long as they are specified there, they cannot be set using this form.<br><br>"] = "Eraro: Åœajnas kvazaÅ­ vi agordis la App-ID kaj la sekreton en via .htconfig.php dosiero. Kiam ili estas agordita tie, vi ne povas agordi Äin en tiu ĉi formo.<br><br>";
-App::$strings["Error: the given API Key seems to be incorrect (the application access token could not be retrieved)."] = "Eraro: La API Ålosilo aspektas malÄusta (ne eblas ricevi la programa atingoĵetono).";
-App::$strings["The given API Key seems to work correctly."] = "La API Ålosilo Åajne Äuste funkcias.";
-App::$strings["The correctness of the API Key could not be detected. Somthing strange's going on."] = "Ne povis kontroli la Äustecon de la API Ålosilo. Ia stranga afero okazas. ";
-App::$strings["App-ID / API-Key"] = "Programo ID / API Åœlosilo";
-App::$strings["Application secret"] = "Programo sekreto";
-App::$strings["Polling Interval in minutes (minimum %1\$s minutes)"] = "Intervalo de enketo en minutoj (minimume %1\$s minutoj)";
-App::$strings["Synchronize comments (no comments on Facebook are missed, at the cost of increased system load)"] = "Sinkronigi komentojn (vi ricevas ĉiujn komentojn de Facebook, sed la Åargo de la sistemo iom kreskas)";
-App::$strings["Real-Time Updates"] = "Realtempaj Äœisdatigoj";
-App::$strings["Real-Time Updates are activated."] = "Realtempaj Äœisdatigoj estas Åaltita";
-App::$strings["Deactivate Real-Time Updates"] = "MalÅalti Realtempaj Äœisdatigoj";
-App::$strings["Real-Time Updates not activated."] = "Realtempaj Äœisdatigoj estas malÅaltita";
-App::$strings["Activate Real-Time Updates"] = "Åœalti Realtempaj Äœisdatigoj";
-App::$strings["The new values have been saved."] = "Konservis novajn valorojn.";
-App::$strings["Post to Facebook"] = "AfiÅi al Facebook";
-App::$strings["Post to Facebook cancelled because of multi-network access permission conflict."] = "AfiÅado al Facebook nuligita ĉar okazis konflikto en la multretpermesoj.";
-App::$strings["View on Friendica"] = "Vidi ĉe Friendica";
-App::$strings["Facebook post failed. Queued for retry."] = "Malsukcesis afiÅi ĉe Facebook. Enigita en vico.";
-App::$strings["Your Facebook connection became invalid. Please Re-authenticate."] = "Via Facbook konekto iÄis nevalida. Bonvolu reaÅ­tentiÄi.";
-App::$strings["Facebook connection became invalid"] = "Facebook konekto iÄis nevalida.";
-App::$strings["Hi %1\$s,\n\nThe connection between your accounts on %2\$s and Facebook became invalid. This usually happens after you change your Facebook-password. To enable the connection again, you have to %3\$sre-authenticate the Facebook-connector%4\$s."] = "Saluton %1\$s,\n\nla kontekto inter viaj kontoj ĉe %2\$s kaj Facebook malvalidiÄis. Tio kutime okazas post kiam via Åangas vian pasvorton ĉe Facebook. Por reaktivigi la konekto, vi bezonas %3\$sreaÅ­tentiÄi la Facebook konektilon%4\$s.";
-App::$strings["StatusNet AutoFollow settings updated."] = "Äœidatigis StatusNet AutoFollow agordojn.";
-App::$strings["StatusNet AutoFollow Settings"] = "StatusNet AutoFollow agordoj";
-App::$strings["Automatically follow any StatusNet followers/mentioners"] = "Aŭtomate sekvu ĉiujn StatusNet sekvantojn/menciantojn.";
-App::$strings["Lifetime of the cache (in hours)"] = "VivodaÅ­ro de kaÅmemoro (horoj)";
-App::$strings["Cache Statistics"] = "Statistikoj pri kaÅmemoro";
-App::$strings["Number of items"] = "Kvanto da eroj";
-App::$strings["Size of the cache"] = "Grando de la kaÅmemoro";
-App::$strings["Delete the whole cache"] = "ForviÅi la kaÅmemoron";
-App::$strings["%d person likes this"] = array(
- 0 => "%d homo Åatas tiun",
- 1 => "%d homoj Åatas tiun",
-);
-App::$strings["%d person doesn't like this"] = array(
- 0 => "%d homo malÅatas tiun",
- 1 => "%d homo malÅatas tiun",
-);
-App::$strings["Get added to this list!"] = "IÄu membro de ĉi tiu listo!";
-App::$strings["Generate new key"] = "Generi novan ĉifroÅlosilon";
-App::$strings["Widgets key"] = "Ŝlosilo por fenestraĵoj";
-App::$strings["Widgets available"] = "Disponeblaj fenestraĵoj";
-App::$strings["Connect on Friendica!"] = "Konekti ĉe Friendica!";
-App::$strings["YourLS Settings"] = "\"YourLS\" Agordoj";
-App::$strings["URL: http://"] = "URL adreso: http://";
-App::$strings["Username:"] = "Salutnomo:";
-App::$strings["Password:"] = "Pasvorto:";
-App::$strings["Use SSL "] = "Uzi SSL ";
-App::$strings["yourls Settings saved."] = "Konservis la agordojn de YourLS.";
-App::$strings["Post to LiveJournal"] = "AfiÅi ĉe LiveJournal";
-App::$strings["LiveJournal Post Settings"] = "Agordoj pri afiÅoj ĉe LiveJournal";
-App::$strings["Enable LiveJournal Post Plugin"] = "Åœalti la LiveJournal-afiÅo kromprogramon.";
-App::$strings["LiveJournal username"] = "LiveJournal Salutnomo";
-App::$strings["LiveJournal password"] = "LiveJournal pasvorto";
-App::$strings["Post to LiveJournal by default"] = "DefaÅ­lte afiÅi al LiveJournal";
-App::$strings["Not Safe For Work (General Purpose Content Filter) settings"] = "Not Safe For Work (Äenerala filtrilo por enhavoj) agordoj";
-App::$strings["This plugin looks in posts for the words/text you specify below, and collapses any content containing those keywords so it is not displayed at inappropriate times, such as sexual innuendo that may be improper in a work setting. It is polite and recommended to tag any content containing nudity with #NSFW. This filter can also match any other word/text you specify, and can thereby be used as a general purpose content filter."] = "Tiu kromprogramo serĉas la malsupre agordatajn vortojn en afiÅoj kaj malvidebligis ilin se ili enhavas iun vorton. Tiel, afiÅoj ne montriÄis kiuj enhavas maladekvatan enhavon, ekzemple seksumaj aferoj, kiuj ne estas adekvata, ekzemple en la laborejo. En la reto, oni kutime markas tiajn afiÅojn #NSFW - Not Safe For Work - ne adekvata por la laborejo. La filtrilo ankaÅ­ serĉas ĉiujn vortojn kiujn vi agordas kaj tial funkcias kiel Äenerala filtrilo.";
-App::$strings["Enable Content filter"] = "Åœalti la filtrilo por la enhavo";
-App::$strings["Comma separated list of keywords to hide"] = "Perkome disigita listo da kaÅontaj Ålosilvortoj";
-App::$strings["Use /expression/ to provide regular expressions"] = "Uzu /expr/ por provizi regulajn esprimojn.";
-App::$strings["NSFW Settings saved."] = "NSFW agordoj konservitaj.";
-App::$strings["%s - Click to open/close"] = "%s - Klaku por malfermi/fermi";
-App::$strings["Forums"] = "Forumoj";
-App::$strings["show more"] = "montri pli";
-App::$strings["Forums:"] = "Forumoj:";
-App::$strings["Page settings updated."] = "PaÄajn agordojn Äisdatigita.";
-App::$strings["Page Settings"] = "PaÄaj Agordoj";
-App::$strings["How many forums to display on sidebar without paging"] = "Montri tiom da forumoj en la flanka strio sen paÄigo";
-App::$strings["Randomise Page/Forum list"] = "Hazardigi la liston de PaÄoj/Forumoj";
-App::$strings["Show pages/forums on profile page"] = "Montri paÄojn/forumojn sur la profilpaÄo";
-App::$strings["Planets Settings"] = "Agordo pri Planets";
-App::$strings["Enable Planets Plugin"] = "Åœalti la Planets kromprogamon";
-App::$strings["Login"] = "Ensaluti";
-App::$strings["OpenID"] = "OpenID";
-App::$strings["Latest users"] = "Ä´usaj uzantoj";
-App::$strings["Most active users"] = "Plej aktivaj uzantoj";
-App::$strings["Latest photos"] = "Ä´usaj bildoj";
-App::$strings["Latest likes"] = "Ä´usaj Åatitaĵoj";
-App::$strings["event"] = "okazo";
-App::$strings["U.S. Time Format (mm/dd/YYYY)"] = "Usona datformato (mm/dd/YYYY)";
-App::$strings["German Time Format (dd.mm.YYYY)"] = "Germana datformato (dd.mm.YYYY)";
-App::$strings["Error"] = "Eraro";
-App::$strings["No access"] = "No access";
-App::$strings["New event"] = "Nova okazo";
-App::$strings["Today"] = "HodiaÅ­";
-App::$strings["Day"] = "Tago";
-App::$strings["Week"] = "Semajno";
-App::$strings["Month"] = "Monato";
-App::$strings["Reload"] = "ReÅargi";
-App::$strings["Date"] = "Dato";
-App::$strings["Not found"] = "Ne trovita";
-App::$strings["Go back to the calendar"] = "Iri reen al la kalendaro";
-App::$strings["Starts"] = "Komencas";
-App::$strings["Ends"] = "Finas";
-App::$strings["Description"] = "Priskribo";
-App::$strings["Notification"] = "Atentigo";
-App::$strings["Minutes"] = "Minutoj";
-App::$strings["Hours"] = "Horoj";
-App::$strings["Days"] = "Tagoj";
-App::$strings["before"] = "antaÅ­";
-App::$strings["Calendar Settings"] = "Kalendaraj Agordoj";
-App::$strings["Date format"] = "Datformato";
-App::$strings["Time zone"] = "Horzono";
-App::$strings["Limitations"] = "Limigoj";
-App::$strings["Warning"] = "Averto";
-App::$strings["Synchronization (iPhone, Thunderbird Lightning, Android, ...)"] = "Sinkronigo (iPhone, Thunderbird Lightning, Android, ...)";
-App::$strings["Synchronizing this calendar with the iPhone"] = "Sinkronigi tiun kalendaron kun la iPhone";
-App::$strings["Synchronizing your Friendica-Contacts with the iPhone"] = "Sinkronigi viajn Friendica kontaktojn kun la iPhone";
-App::$strings["Friendica-Contacts"] = "Friendica Kontaktoj";
-App::$strings["Your Friendica-Contacts"] = "Viaj Friendica Kontaktoj";
-App::$strings["Calendar"] = "Kalendaro";
-App::$strings["Extended calendar with CalDAV-support"] = "Etendita kalendaro kun CalDAV subteno";
-App::$strings["The database tables have been installed."] = "La tabeloj estas instalita en la datumbazo";
-App::$strings["An error occurred during the installation."] = "Eraro okazis dum instalado";
-App::$strings["No system-wide settings yet."] = "AnkoraÅ­ ne disponablas tutsistemaj agordoj";
-App::$strings["Database status"] = "Stato de datumbazo";
-App::$strings["Installed"] = "Instalita";
-App::$strings["Upgrade needed"] = "Äœisdatigo bezonata";
-App::$strings["Upgrade"] = "Äœisdatigo";
-App::$strings["Not installed"] = "Ne instalita";
-App::$strings["Install"] = "Instali";
-App::$strings["Troubleshooting"] = "Problemsolvado";
-App::$strings["Manual creation of the database tables:"] = "Mana kreado de tabeloj en la datumbazo:";
-App::$strings["Show SQL-statements"] = "Montru SQL ordonojn";
-App::$strings["Private Calendar"] = "Privata kalendaro";
-App::$strings["Friendica Events: Mine"] = "Friendica Okazoj: Miaj";
-App::$strings["Friendica Events: Contacts"] = "Friendica Okazoj: De Kontaktoj";
-App::$strings["Allow to use your friendica id (%s) to connecto to external unhosted-enabled storage (like ownCloud). See <a href=\"http://www.w3.org/community/unhosted/wiki/RemoteStorage#WebFinger\">RemoteStorage WebFinger</a>"] = "Permesi vian identecon ĉe Friendica (%s) por konekti al eksteraj konservejoj subtenata de unhosted (ekz. OwnCloud). Vidu <a href=\"http://www.w3.org/community/unhosted/wiki/RemoteStorage#WebFinger\">RemoteStorage WebFinger</a>";
-App::$strings["Template URL (with {category})"] = "URL adreso de Åablono (kun {category})";
-App::$strings["OAuth end-point"] = "OAuth finpunkto";
-App::$strings["Api"] = "Api";
-App::$strings["Member since:"] = "Membro ekde:";
-App::$strings["Three Dimensional Tic-Tac-Toe"] = "Tri-dimensia Tiktakto";
-App::$strings["3D Tic-Tac-Toe"] = "3D Tiktakto";
-App::$strings["New game"] = "Nova ludo";
-App::$strings["New game with handicap"] = "Nova ludo kun handikapo";
-App::$strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = "Tri-dimensia tiktakto similas la tradician ludon, sed estas ludata sur pluraj ebenoj dum la sama tempo.";
-App::$strings["In this case there are three levels. You win by getting three in a row on any level, as well as up, down, and diagonally across the different levels."] = "Ĉi-kaze ekzistas tri ebenoj. Vi venkas vicigante tri signojn en una vico, en la sama ebeno, same kiel supren, malsupren aŭ diagonale, trans la ebenoj.";
-App::$strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = "La ludo kun handikapo malvalidigas la mezan pozicion sur la meza ebeno, ĉar la ludisto kio okupas ĉi tiun pozicion ĉiam havas avantaÄon.";
-App::$strings["You go first..."] = "Estas via vico unue.";
-App::$strings["I'm going first this time..."] = "Ĉi-tempe, unue estas mia vico.";
-App::$strings["You won!"] = "Vi venkis!";
-App::$strings["\"Cat\" game!"] = "Sendecida ludo!";
-App::$strings["I won!"] = "Mi venkis!";
-App::$strings["Randplace Settings"] = "Randplace agordoj.";
-App::$strings["Enable Randplace Plugin"] = "Aktivigi la Randplace kromprogramon.";
-App::$strings["Post to Dreamwidth"] = "AfiÅi al Dreamwidth";
-App::$strings["Dreamwidth Post Settings"] = "Agordoj por AfiÅoj al Dreamwidth";
-App::$strings["Enable dreamwidth Post Plugin"] = "Åœalti la Dreamwidth Kromprogramon";
-App::$strings["dreamwidth username"] = "Dreamwidth salutnomo";
-App::$strings["dreamwidth password"] = "Dreamwidth pasvorto";
-App::$strings["Post to dreamwidth by default"] = "DefaÅ­lte afiÅi al Dreamwidth";
-App::$strings["Post to Drupal"] = "AfiÅi al Drupal";
-App::$strings["Drupal Post Settings"] = "Agordoj por Drupal AfiÅoj";
-App::$strings["Enable Drupal Post Plugin"] = "Åœalti la Drupal-afiÅo Kromprogramon";
-App::$strings["Drupal username"] = "Drupal salutnomo";
-App::$strings["Drupal password"] = "Drupal pasvorto";
-App::$strings["Post Type - article,page,or blog"] = "Tipo de AfiÅoj - article, page, aÅ­ blog";
-App::$strings["Drupal site URL"] = "URL adreso de Drupal retejo";
-App::$strings["Drupal site uses clean URLS"] = "Drupal retejo uzas purajn URL adresojn";
-App::$strings["Post to Drupal by default"] = "DefaÅ­lte afiÅi ĉe Drupal";
-App::$strings["Post from Friendica"] = "AfiÅo de Friendica";
-App::$strings["Startpage Settings"] = "StartpaÄaj Agordoj";
-App::$strings["Home page to load after login - leave blank for profile wall"] = "HejmpaÄo Åargonta post la ensaluto - Lasu malplena por profilmuro.";
-App::$strings["Examples: &quot;network&quot; or &quot;notifications/system&quot;"] = "Ekzemple: &quot;network&quot; aÅ­ &quot;notifications/system&quot;";
-App::$strings["Geonames settings updated."] = "Äœidatigis la Geonames agordojn.";
-App::$strings["Geonames Settings"] = "Geonames Agordoj";
-App::$strings["Enable Geonames Plugin"] = "Åœalti la Geonames Kromprogramon";
-App::$strings["Your account on %s will expire in a few days."] = "Via konto ĉe %s senvalidiÄos post kelkaj tagoj.";
-App::$strings["Your Friendica account is about to expire."] = "Via konto ĉe Friendica baldaÅ­ senvalidiÄos.";
-App::$strings["Hi %1\$s,\n\nYour account on %2\$s will expire in less than five days. You may keep your account by logging in at least once every 30 days"] = "Saluton %1\$s,\n\nVia konto ĉe %2\$s senvalidiÄos post malpli ol kvin tagoj. Vi povas konservi vian konton se vi ensalutas almenaÅ­ ĉiujn 30 tagojn. ";
-App::$strings["Upload a file"] = "AlÅuti dosieron";
-App::$strings["Drop files here to upload"] = "Åœovmeti dosierojn ĉi tie por alÅuti ilin.";
-App::$strings["Failed"] = "Malsukcesi";
-App::$strings["No files were uploaded."] = "Neniom da dosieroj alÅutita.";
-App::$strings["Uploaded file is empty"] = "AlÅutita dosiero estas malplena.";
-App::$strings["File has an invalid extension, it should be one of "] = "Dosiero havas nevalidan sufikson. Äœi estu unu de ";
-App::$strings["Upload was cancelled, or server error encountered"] = "AlÅutado estas nuligita aÅ­ okazis eraro sur la servilo";
-App::$strings["OEmbed settings updated"] = "Äœisdatigis OEmbed agordojn";
-App::$strings["Use OEmbed for YouTube videos"] = "Uzi OEmbed por YouTube videtoj";
-App::$strings["URL to embed:"] = "Enigi la URL adreson:";
-App::$strings["Impressum"] = "Kolofono";
-App::$strings["Site Owner"] = "Proprietulo de la paÄo";
-App::$strings["Email Address"] = "RetpoÅta Adreso";
-App::$strings["Postal Address"] = "PoÅta Adreso";
-App::$strings["The impressum addon needs to be configured!<br />Please add at least the <tt>owner</tt> variable to your config file. For other variables please refer to the README file of the addon."] = "La kolofono (impressum) kromprogramo bezonas agordojn!<br />Bonvolu aldoni minimume la <tt>owner</tt> variablon al via agorda dosiero. Por aliaj variabloj, bonvolu legi la README dosieron de la kromprogramo.";
-App::$strings["The page operators name."] = "La nomo de la funkciigisto de la retejo.";
-App::$strings["Site Owners Profile"] = "Profilo de la Proprietulo de la Retejo";
-App::$strings["Profile address of the operator."] = "La profilo de la funkciigisto de la retejo.";
-App::$strings["How to contact the operator via snail mail. You can use BBCode here."] = "Kiel poÅte kontakti la funkciigisto de la retejo. Vi eblas uzi BBCode ĉi tie.";
-App::$strings["Notes"] = "Notoj";
-App::$strings["Additional notes that are displayed beneath the contact information. You can use BBCode here."] = "Pli da notoj kiuj aperas sub la kontaktinformoj. Vi eblas uzi BBCode ĉi tie.";
-App::$strings["How to contact the operator via email. (will be displayed obfuscated)"] = "Kiel kontakti la funkciigiston de la retejo per retpoÅto. (montriÄos vuale) ";
-App::$strings["Footer note"] = "PaÄpiednoto";
-App::$strings["Text for the footer. You can use BBCode here."] = "Teksto por la paÄpiedo. Vie eblas uzi BBCode ĉi tie.";
-App::$strings["Report Bug"] = "Skribi cimraporton";
-App::$strings["No Timeline settings updated."] = "No Timeline agordojn Äisdatigita.";
-App::$strings["No Timeline Settings"] = "No Timeline Agordoj";
-App::$strings["Disable Archive selector on profile wall"] = "Malaktivigi la Arkivo elektilo sur la profilmuro";
-App::$strings["\"Blockem\" Settings"] = "\"Blockem\" Agordoj";
-App::$strings["Comma separated profile URLS to block"] = "Blokotaj URL adresoj, disigita per komo";
-App::$strings["BLOCKEM Settings saved."] = "Konservis Agordojn de BLOCKEM.";
-App::$strings["Blocked %s - Click to open/close"] = "%s blokita - Klaku por malfermi/fermi";
-App::$strings["Unblock Author"] = "Malbloki AÅ­toron";
-App::$strings["Block Author"] = "Bloki AÅ­toron";
-App::$strings["blockem settings updated"] = "Äœisdatigis la blockem agordojn";
-App::$strings[":-)"] = ":-)";
-App::$strings[":-("] = ":-(";
-App::$strings["lol"] = "lol";
-App::$strings["Quick Comment Settings"] = "Agordoj pri Rapidaj Komentoj";
-App::$strings["Quick comments are found near comment boxes, sometimes hidden. Click them to provide simple replies."] = "Rapidaj komentoj troviÄas apud komentkampoj, kelkfoje kaÅita. Klaku ilin por provizi simplajn rispondojn.";
-App::$strings["Enter quick comments, one per line"] = "Entajpu rapidaj komentoj, po unu je linio.";
-App::$strings["Quick Comment settings saved."] = "Konservis agordojn pri rapidaj komentoj.";
-App::$strings["Tile Server URL"] = "Adreso de Kahelservilo";
-App::$strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">public tile servers</a>"] = "Listo de <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">publikaj kahelserviloj</a>";
-App::$strings["Default zoom"] = "DefaÅ­lta zoma faktoro";
-App::$strings["The default zoom level. (1:world, 18:highest)"] = "La defaÅ­lta zoma faktoro. (1:tutmonda, 18:plej proksima)";
-App::$strings["Post to libertree"] = "AfiÅi al libertree";
-App::$strings["libertree Post Settings"] = "Agordoj por AfiÅoj ĉe libertree";
-App::$strings["Enable Libertree Post Plugin"] = "Aktivigi Kromprogramon por AfiÅoj ĉe libertree";
-App::$strings["Libertree API token"] = "Libertree API ĵetono";
-App::$strings["Libertree site URL"] = "URL adreso de libertree retejo:";
-App::$strings["Post to Libertree by default"] = "DefaÅ­lte afiÅi ĉe Libertree";
-App::$strings["The MathJax addon renders mathematical formulae written using the LaTeX syntax surrounded by the usual $$ or an eqnarray block in the postings of your wall,network tab and private mail."] = "La Mathjax kromprogramo bildigas matematikajn formulojn skribitajn en la LaTeX sintakso, cirkaÅ­igita de la komuna $$ aÅ­ eqnarray bloko en afiÅoj ĉe via muro, Reto folio kaj privataj mesaÄoj.";
-App::$strings["Use the MathJax renderer"] = "Ĉu uzi la Mathjax bildigilo";
-App::$strings["MathJax Base URL"] = "Mathjax Baza URL Adreso";
-App::$strings["The URL for the javascript file that should be included to use MathJax. Can be either the MathJax CDN or another installation of MathJax."] = "La URL adreso por la javascript dosiero kiu estas inkluzivigonta por uzi Mathjaz. Eblas esti aÅ­ la Mathjax CDN aÅ­ alia Mathjax instalo.";
-App::$strings["Editplain settings updated."] = "Äœisdatigis la Editplain agordojn.";
-App::$strings["Editplain Settings"] = "Agordoj por Editplain";
-App::$strings["Disable richtext status editor"] = "MalÅalti la riĉteksto-redaktilon";
-App::$strings["generic profile image"] = "komuna profilbildo";
-App::$strings["random geometric pattern"] = "loteca geometria skemo";
-App::$strings["monster face"] = "monstrobildo";
-App::$strings["computer generated face"] = "komputita vizaÄo";
-App::$strings["retro arcade style face"] = "retrostila videoludstila vizaÄo";
-App::$strings["Default avatar image"] = "DefaÅ­lta avatarbildo";
-App::$strings["Select default avatar image if none was found at Gravatar. See README"] = "Elektu defaÅ­ltan avatarbildon se neniu troviÄis ĉe Gravatar. Vidu README.";
-App::$strings["Rating of images"] = "Pritakso de bildoj";
-App::$strings["Select the appropriate avatar rating for your site. See README"] = "Elektu la Äustan pritakson de via avataro por via retejo. Vidu README.";
-App::$strings["Gravatar settings updated."] = "Gravatar agordoj Äisdatigitaj.";
-App::$strings["Your Friendica test account is about to expire."] = "Via Friendica provkonto baldaÅ­ malaktiviÄos.";
-App::$strings["Hi %1\$s,\n\nYour test account on %2\$s will expire in less than five days. We hope you enjoyed this test drive and use this opportunity to find a permanent Friendica website for your integrated social communications. A list of public sites is available at http://dir.friendica.com/siteinfo - and for more information on setting up your own Friendica server please see the Friendica project website at http://friendica.com."] = "Saluton %1\$s,\n\nVia testkonto ĉe %2\$s senvalidiÄos post malpli ol kvin tagoj. Vi esperas ke vi Äuis la teston kaj baldaÅ­ trovosÄustan Friendica retejon por via integrita sociala komunikado. Listo de publikaj retejoj troviÄas ĉe http://dir.friendica.com/siteinfo - kaj por pli da informoj pri kiel instali vian propran Friendica servilon, bonvolu viziti la retejon de la Friendica projekton ĉe http://friendica.com.";
-App::$strings["\"pageheader\" Settings"] = "\"pageheader\" Agordoj";
-App::$strings["pageheader Settings saved."] = "Konservis Agordojn de pageheader.";
-App::$strings["Post to Insanejournal"] = "AfiÅi al Insanejournal";
-App::$strings["InsaneJournal Post Settings"] = "Agordoj pri Insaenejournal AfiÅoj";
-App::$strings["Enable InsaneJournal Post Plugin"] = "Åœalti la InsaneJournal afiÅo kromprogramon.";
-App::$strings["InsaneJournal username"] = "Salutnomo ĉe InsaneJournal";
-App::$strings["InsaneJournal password"] = "Pasvorto ĉe InsaneJournal";
-App::$strings["Post to InsaneJournal by default"] = "DefaÅ­lte afiÅi ĉe InsaneJournal";
-App::$strings["View Source"] = "Vidi Fonton";
-App::$strings["Post to StatusNet"] = "AfiÅi ĉe StatusNet";
-App::$strings["Please contact your site administrator.<br />The provided API URL is not valid."] = "Bonvolu kontaki vian retejan administranton.<br />La API URL adreso ne validas.";
-App::$strings["We could not contact the StatusNet API with the Path you entered."] = "Ni ne povis trovi la StatusNet API kun la vojo kiun vi entajpis.";
-App::$strings["StatusNet settings updated."] = "StatusNet agordoj Äisdatigita.";
-App::$strings["StatusNet Posting Settings"] = "Agordoj por StausNet afiÅoj";
-App::$strings["Globally Available StatusNet OAuthKeys"] = "Äœeneralaj disponeblaj StatusNet OAuth Ålosiloj";
-App::$strings["There are preconfigured OAuth key pairs for some StatusNet servers available. If you are useing one of them, please use these credentials. If not feel free to connect to any other StatusNet instance (see below)."] = "Disponeblas antaÅ­agorditaj Ålosilparoj por kelkaj StatusNet serviloj. Se via uzas iun de iu, bonvolu uzi unun de tiuj legitimaĵojn. Se ne, bonvolu konekti al iu alia StatusNet servilo (vidu malsupre).";
-App::$strings["Provide your own OAuth Credentials"] = "Provizi viajn proprajn OAuth legitimaĵojn";
-App::$strings["No consumer key pair for StatusNet found. Register your Friendica Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendica installation at your favorited StatusNet installation."] = "Ne trovis klientajn Ålosilojn por StatusNet. Registru vian Friendica konton kiel klientkomputilo/desktop client en via StausNet konto. Kopiu la klientajn Ålosilojn ĉi tien kaj entajpu la baza API radiko.<br />AntaÅ­ vi registros viajn proprajn OAuth Ålosilojn, demandu al la administranto ĉu jam ekzistas Ålosiloj por ĉi-tiu Friendia retejo je via StatusNet retejo.";
-App::$strings["OAuth Consumer Key"] = "OAuth Åœlosilo de Kliento";
-App::$strings["OAuth Consumer Secret"] = "OAuth Sekreto de Kliento";
-App::$strings["Base API Path (remember the trailing /)"] = "Baza vojo al la API (ne forgesu la finan /)";
-App::$strings["To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet."] = "Por konekti al vian konton ĉe StatusNet, klaku la malsupran butonon por atingi sekurecan kodon de StatusNet, kiun vi devas alglui en la malsupra kampo kaj sendi la formon. Nur viaj <strong>publikaj</strong> afiÅoj estos afiÅota al StatusNet.";
-App::$strings["Log in with StatusNet"] = "Ensaluti kun StatusNet.";
-App::$strings["Copy the security code from StatusNet here"] = "Alglui la kodon de StatusNet ĉi tie:";
-App::$strings["Cancel Connection Process"] = "Nuligi Konektadon";
-App::$strings["Current StatusNet API is"] = "La nuna StatusNet API estas";
-App::$strings["Cancel StatusNet Connection"] = "Nuligi Konekton al StatusNet";
-App::$strings["Currently connected to: "] = "Konektita al:";
-App::$strings["If enabled all your <strong>public</strong> postings can be posted to the associated StatusNet account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Kiam Åaltita, ĉiuj <strong>publikaj</strong> afiÅoj de vi ankaÅ­ eblas esti afiÅota al la asociigita StatusNet konto. Vi povas elekti Äin defaÅ­lte (ĉi tie) au unuope por ĉiuj afiÅoj kiam vi skribos ilin.";
-App::$strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to StatusNet will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Averto</strong>: LaÅ­ viaj privatecaj agordoj (<em>KaÅi viajn profilajn detalojn al nekonataj spektantoj?</em>), la ligilo en publikaj afiÅoj plusendata al StatusNet gvidas vizitontojn al malplena paÄo sciigante ilin ke atingo al via profilo estas lmitigita.";
-App::$strings["Allow posting to StatusNet"] = "Permesi afiÅojn al StatusNet";
-App::$strings["Send public postings to StatusNet by default"] = "DefaÅ­lte sendi publikajn afiÅojn al StatusNet";
-App::$strings["Send linked #-tags and @-names to StatusNet"] = "Sendi ligitajn #-etikedojn kaj @-nomon al StatusNet";
-App::$strings["Clear OAuth configuration"] = "ForviÅi OAuth agordojn";
-App::$strings["API URL"] = "API URL adreso";
-App::$strings["Infinite Improbability Drive"] = "Senfina Probableca Pelilo";
-App::$strings["Post to Tumblr"] = "AfiÅi al Tumblr";
-App::$strings["Tumblr Post Settings"] = "Agordoj pri afiÅoj ĉe Tumblr";
-App::$strings["Enable Tumblr Post Plugin"] = "Åœalti la kromprogramon por Tumblr afiÅoj";
-App::$strings["Tumblr login"] = "Salutnomo ĉe Tumblr";
-App::$strings["Tumblr password"] = "Pasvorto ĉe Tumblr";
-App::$strings["Post to Tumblr by default"] = "DefaÅ­lte afiÅi ĉe Tumblr";
-App::$strings["Numfriends settings updated."] = "Äœisdatigis agordojn por Numfriends.";
-App::$strings["Numfriends Settings"] = "Agordoj por Numfriends";
-App::$strings["How many contacts to display on profile sidebar"] = "Kiom da kontaktoj mi montru en la flanka strio";
-App::$strings["Gnot settings updated."] = "Äœisdatigis Gnot agordojn.";
-App::$strings["Gnot Settings"] = "Agordoj por Gnot";
-App::$strings["Allows threading of email comment notifications on Gmail and anonymising the subject line."] = "Permesas la ĉenadon de retpoÅtaj atentigoj pri komentoj ĉe Gmail kan anonimigado de la temlinio.";
-App::$strings["Enable this plugin/addon?"] = "Åœalti tiun kromprogramon?";
-App::$strings["[Friendica:Notify] Comment to conversation #%d"] = "[Friendica:Atentigo] Komento pri konversacio #%d";
-App::$strings["Post to Wordpress"] = "AfiÅi al Wordpress";
-App::$strings["WordPress Post Settings"] = "Agordoj por WordPress afiÅojn";
-App::$strings["Enable WordPress Post Plugin"] = "Åœalti la Wordpress-afiÅo kromprogramon";
-App::$strings["WordPress username"] = "WordPress salutnomo";
-App::$strings["WordPress password"] = "WordPress pasvorto";
-App::$strings["WordPress API URL"] = "Wordpress API URL adreso";
-App::$strings["Post to WordPress by default"] = "DefaÅ­lte afiÅi al WordPress";
-App::$strings["Provide a backlink to the Friendica post"] = "Provizi re-ligilon al la Friendica afiÅo";
-App::$strings["Read the original post and comment stream on Friendica"] = "Legi la originalan afiÅon kaj komentfluo ĉe Friendica";
-App::$strings["\"Show more\" Settings"] = "\"Montri pli\" agordoj";
-App::$strings["Enable Show More"] = "Åœalti \"montri pli\"";
-App::$strings["Cutting posts after how much characters"] = "Limitigi afiÅojn al kiom da literoj";
-App::$strings["Show More Settings saved."] = "Konservis \"montri pli\" agordojn.";
-App::$strings["This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> analytics tool."] = "Ĉi retejo uzas <a href='http://www.piwik.org'>Piwik</a> kiel retuma analizilo.";
-App::$strings["If you do not want that your visits are logged this way you <a href='%s'>can set a cookie to prevent Piwik from tracking further visits of the site</a> (opt-out)."] = "Se ni ne protokolu viajn vizitojn tiel, vi <a href='%s'>povas agordi kuketon por malpermesi Piwik al plu protokoli pliajn vizitojn</a> (mem-for-elekti / opt-out).";
-App::$strings["Piwik Base URL"] = "Piwik baza URL adreso";
-App::$strings["Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)"] = "Absoluta vojo al via Piwik instalo. (sen protokolo (http/s), inkluzive vosta oblikva streketo)";
-App::$strings["Site ID"] = "Reteja idento";
-App::$strings["Show opt-out cookie link?"] = "Montru ligilon al kuketo por mem-for-elekti (opt-out)?";
-App::$strings["Asynchronous tracking"] = "Nesinkrona spurado.";
-App::$strings["Post to Twitter"] = "AfiÅi ĉe Twitter";
-App::$strings["Twitter settings updated."] = "Äœisdatigis Twitter agordojn.";
-App::$strings["Twitter Posting Settings"] = "Agordoj por afiÅi ĉe Twitter";
-App::$strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "Ne trovis klientajn Ålosilojn por Twitter. Bonvolu kontakti vian retejan administranton.";
-App::$strings["At this Friendica instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "Je ĉi tiu Friendica retejo, la Twitter kromprogramo jam estas Åaltita, sed via konto anokoraÅ­ ne estas konektita kun via Twitter konto. Por fari tion, klaku la supran butonon por atingi nombrokodon de Twitter, kion vi kopiu en la supran eniga ĉelo, kaj sendu la formularon. Nur viaj <strong>publikaj</strong> afiÅoj estas plusendota al Twitter. ";
-App::$strings["Log in with Twitter"] = "Ensaluti kun Twitter";
-App::$strings["Copy the PIN from Twitter here"] = "Alglui la PIN de Twitter ĉi tie";
-App::$strings["If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Kiam Åaltita, ĉiuj <strong>publikaj</strong> afiÅoj de vi ankaÅ­ eblas esti afiÅota al la asociigita Twitter konto. Vi povas elekti Äin defaÅ­lte (ĉi tie) au unuope por ĉiuj afiÅoj kiam vi skribos ilin.";
-App::$strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Averto</strong>: LaÅ­ viaj privatecaj agordoj (<em>KaÅi viajn profilajn detalojn al nekonataj spektantoj?</em>), la ligilo en publikaj afiÅoj plusendata al Twitter gvidas vizitontojn al malplena paÄo sciigante ilin ke atingo al via profilo estas lmitigita.";
-App::$strings["Allow posting to Twitter"] = "Permesi afiÅojn al Twitter";
-App::$strings["Send public postings to Twitter by default"] = "DefaÅ­lte sendi publikajn afiÅojn al Twitter";
-App::$strings["Send linked #-tags and @-names to Twitter"] = "Sendi ligitajn #-etikedojn kaj @-nomon al Twitter";
-App::$strings["Consumer key"] = "Åœlosilo de Kliento";
-App::$strings["Consumer secret"] = "Sekreto de Kliento";
-App::$strings["IRC Settings"] = "IRC Agordoj";
-App::$strings["Channel(s) to auto connect (comma separated)"] = "AÅ­tomate konektiÄi al la kanalo(j) (disigita per komo)";
-App::$strings["Popular Channels (comma separated)"] = "Popularaj kanaloj (disigita per komo)";
-App::$strings["IRC settings saved."] = "IRC agordoj konservitaj.";
-App::$strings["IRC Chatroom"] = "IRC babilejo";
-App::$strings["Popular Channels"] = "Popularaj Kanaloj";
-App::$strings["Post to blogger"] = "AfiÅi al blogger";
-App::$strings["Blogger Post Settings"] = "Agordo pri Blogger AfiÅoj";
-App::$strings["Enable Blogger Post Plugin"] = "Åœalti la Blogger afiÅo kromprogramon";
-App::$strings["Blogger username"] = "Blogger uzantonomo";
-App::$strings["Blogger password"] = "Blogger pasvorto";
-App::$strings["Blogger API URL"] = "Blogger API URL";
-App::$strings["Post to Blogger by default"] = "DefaÅ­lte afiÅi al Blogger";
-App::$strings["Post to Posterous"] = "AfiÅi al Posterous";
-App::$strings["Posterous Post Settings"] = "Agordoj pri afiÅoj ĉe Posterous";
-App::$strings["Enable Posterous Post Plugin"] = "Åœalti la Poserous-afiÅo kromprogramon";
-App::$strings["Posterous login"] = "Posterous salutnomo";
-App::$strings["Posterous password"] = "Posterous pasvorto";
-App::$strings["Posterous site ID"] = "Idento de Posterous retejo";
-App::$strings["Posterous API token"] = "API ĵetono de Posterous retejo";
-App::$strings["Post to Posterous by default"] = "DefaÅ­lte afiÅi al Posterous";
-App::$strings["Theme settings"] = "Agordoj pri la etoso";
-App::$strings["Set resize level for images in posts and comments (width and height)"] = "Agordi la regrandignivelo por bildoj en afiÅoj kaj komentoj (larÄo kaj alto)";
-App::$strings["Set font-size for posts and comments"] = "Agordi la tiparan grandon por afiÅoj kaj komentoj";
-App::$strings["Set theme width"] = "Agordi la larÄo por la etoso";
-App::$strings["Color scheme"] = "Kolorskemo";
-App::$strings["Your posts and conversations"] = "Viaj afiÅoj kaj komunikadoj";
-App::$strings["Your profile page"] = "Via profilo";
-App::$strings["Your contacts"] = "Viaj kontaktoj";
-App::$strings["Your photos"] = "Viaj bildoj";
-App::$strings["Your events"] = "Viaj okazoj";
-App::$strings["Personal notes"] = "Personaj notoj";
-App::$strings["Your personal photos"] = "Viaj personaj bildoj";
-App::$strings["Community Pages"] = "Komunumaj paÄoj";
-App::$strings["Community Profiles"] = "Komunumaj Profiloj";
-App::$strings["Last users"] = "Ä´usaj uzantoj";
-App::$strings["Last likes"] = "Ä´usaj Åatitaj elementoj";
-App::$strings["Last photos"] = "Ä´usaj bildoj";
-App::$strings["Find Friends"] = "Trovi Amikojn";
-App::$strings["Local Directory"] = "Loka Katalogo";
-App::$strings["Similar Interests"] = "Similaj Interesoj";
-App::$strings["Invite Friends"] = "Inviti amikojn";
-App::$strings["Earth Layers"] = "Tertavoloj (Earth Layers)";
-App::$strings["Set zoomfactor for Earth Layers"] = "Agordi zoman faktoron por Tertavoloj";
-App::$strings["Set longitude (X) for Earth Layers"] = "Agordi longitudon (X) por Tertavoloj";
-App::$strings["Set latitude (Y) for Earth Layers"] = "Agordi latitudon (Y) por Tertavoloj";
-App::$strings["Help or @NewHere ?"] = "Helpu aÅ­ @NewHere ?";
-App::$strings["Connect Services"] = "Konekti Servojn";
-App::$strings["Last Tweets"] = "Ĵusaj Pepaĵoj";
-App::$strings["Set twitter search term"] = "Agordi Twitter serĉtekston";
-App::$strings["don't show"] = "kaÅi";
-App::$strings["show"] = "montri";
-App::$strings["Show/hide boxes at right-hand column:"] = "KaÅi/montri kestojn ĉe dekstra kolumno:";
-App::$strings["Set line-height for posts and comments"] = "Agordi la linigrandon por afiÅoj kaj komentoj";
-App::$strings["Set resolution for middle column"] = "Agordi la distingivon por la meza kolumno";
-App::$strings["Set color scheme"] = "Agordi Kolorskemon";
-App::$strings["Set zoomfactor for Earth Layer"] = "Agordi zoman faktoron de Tertavolo";
-App::$strings["Last tweets"] = "Ĵusaj pepaĵoj";
-App::$strings["Alignment"] = "Äœisrandigo";
-App::$strings["Left"] = "Maldekstren";
-App::$strings["Center"] = "Centren";
-App::$strings["Set colour scheme"] = "Agordi Kolorskemon";
-App::$strings["Gender:"] = "Sekso:";
-App::$strings["j F, Y"] = "j F, Y";
-App::$strings["j F"] = "j F";
-App::$strings["Birthday:"] = "NaskiÄtago:";
-App::$strings["Age:"] = "AÄo:";
-App::$strings["Status:"] = "Stato:";
-App::$strings["for %1\$d %2\$s"] = "por %1\$d %2\$s";
-App::$strings["Homepage:"] = "HejmpaÄo:";
-App::$strings["Tags:"] = "Markoj:";
-App::$strings["Religion:"] = "Religio:";
-App::$strings["About:"] = "Pri:";
-App::$strings["Hobbies/Interests:"] = "Åœatokupoj/Interesoj:";
-App::$strings["Contact information and Social Networks:"] = "Kontaktinformoj kaj Interkonaj Retejoj:";
-App::$strings["Musical interests:"] = "Muzaikaj interesoj:";
-App::$strings["Books, literature:"] = "Libroj, literaturo:";
-App::$strings["Television:"] = "Televido:";
-App::$strings["Film/dance/culture/entertainment:"] = "Filmoj/dancoj/arto/amuzaĵoj:";
-App::$strings["Love/Romance:"] = "Amo/romanco:";
-App::$strings["Work/employment:"] = "Laboro:";
-App::$strings["School/education:"] = "Lernejo/eduko:";
-App::$strings["Unknown | Not categorised"] = "Nekonata | Nekatorigita";
-App::$strings["Block immediately"] = "Bloki tuj";
-App::$strings["Shady, spammer, self-marketer"] = "Suspekta, spamisto, memmerkatisto";
-App::$strings["Known to me, but no opinion"] = "Konata al mi, sed mi ne havas opinion";
-App::$strings["OK, probably harmless"] = "OK, verÅajne sendanÄera";
-App::$strings["Reputable, has my trust"] = "Fidinda laÅ­ mi";
-App::$strings["Frequently"] = "Ofte";
-App::$strings["Hourly"] = "Ĉiuhore";
-App::$strings["Twice daily"] = "Duope ĉiutage";
-App::$strings["Daily"] = "Ĉiutage";
-App::$strings["Weekly"] = "Ĉiusemajne";
-App::$strings["Monthly"] = "Ĉiumonate";
-App::$strings["OStatus"] = "OStatus";
-App::$strings["RSS/Atom"] = "RSS/Atom";
-App::$strings["Zot!"] = "Zot!";
-App::$strings["LinkedIn"] = "LinkedIn";
-App::$strings["XMPP/IM"] = "XMPP/TujmesaÄilo";
-App::$strings["MySpace"] = "MySpace";
-App::$strings["Male"] = "Vira";
-App::$strings["Female"] = "Ina";
-App::$strings["Currently Male"] = "Nuntempe Vira";
-App::$strings["Currently Female"] = "Nuntempe Ina";
-App::$strings["Mostly Male"] = "Ĉefe Vira";
-App::$strings["Mostly Female"] = "Ĉefe Ina";
-App::$strings["Transgender"] = "Transgenra";
-App::$strings["Intersex"] = "Interseksa";
-App::$strings["Transsexual"] = "Transseksa";
-App::$strings["Hermaphrodite"] = "Hermafrodita";
-App::$strings["Neuter"] = "NeÅ­tra";
-App::$strings["Non-specific"] = "Nespecifa";
-App::$strings["Other"] = "Alia";
-App::$strings["Undecided"] = "Nedecida";
-App::$strings["Males"] = "Viroj";
-App::$strings["Females"] = "Inoj";
-App::$strings["Gay"] = "Geja";
-App::$strings["Lesbian"] = "Lesba";
-App::$strings["No Preference"] = "Neniu Prefero";
-App::$strings["Bisexual"] = "AmbaÅ­seksema";
-App::$strings["Autosexual"] = "Memseksema";
-App::$strings["Abstinent"] = "Abstinema";
-App::$strings["Virgin"] = "Virgulino";
-App::$strings["Deviant"] = "Devia";
-App::$strings["Fetish"] = "Fetiĉo";
-App::$strings["Oodles"] = "Amasa";
-App::$strings["Nonsexual"] = "Neseksa";
-App::$strings["Single"] = "Sola";
-App::$strings["Lonely"] = "Soleca";
-App::$strings["Available"] = "Havebla";
-App::$strings["Unavailable"] = "Nehavebla";
-App::$strings["Has crush"] = "Sekrete enamiÄinta";
-App::$strings["Infatuated"] = "Blinda amo";
-App::$strings["Dating"] = "Rendevuanta";
-App::$strings["Unfaithful"] = "Malfidela";
-App::$strings["Sex Addict"] = "Seksmaniulo";
-App::$strings["Friends"] = "Amikoj";
-App::$strings["Friends/Benefits"] = "Amikoj/AvantaÄoj";
-App::$strings["Casual"] = "Neformala";
-App::$strings["Engaged"] = "Fianĉiginta";
-App::$strings["Married"] = "EdziÄinta";
-App::$strings["Imaginarily married"] = "Image edziÄinta";
-App::$strings["Partners"] = "Geparuloj";
-App::$strings["Cohabiting"] = "KunloÄanta";
-App::$strings["Common law"] = "Registrita partnereco ";
-App::$strings["Happy"] = "Feliĉa";
-App::$strings["Not looking"] = "Ne interesiÄis";
-App::$strings["Swinger"] = "Swinger";
-App::$strings["Betrayed"] = "Trompita";
-App::$strings["Separated"] = "DisiÄinta";
-App::$strings["Unstable"] = "Malfirma";
-App::$strings["Divorced"] = "EksedziÄinta";
-App::$strings["Imaginarily divorced"] = "Image eksedziÄinta";
-App::$strings["Widowed"] = "Vidva";
-App::$strings["Uncertain"] = "Ne certa";
-App::$strings["It's complicated"] = "Estas komplika";
-App::$strings["Don't care"] = "Egala";
-App::$strings["Ask me"] = "Demandu min";
-App::$strings["Starts:"] = "Ekas:";
-App::$strings["Finishes:"] = "Finas:";
-App::$strings["(no subject)"] = "(neniu temo)";
-App::$strings["noreply"] = "nerespondi";
-App::$strings[" on Last.fm"] = " ĉe Last.fm";
-App::$strings["prev"] = "antaÅ­a";
-App::$strings["first"] = "unua";
-App::$strings["last"] = "lasta";
-App::$strings["next"] = "sekvanta";
-App::$strings["No contacts"] = "Neniu kontaktoj";
-App::$strings["%d Contact"] = array(
- 0 => "%d Kontakto",
- 1 => "%d Kontaktoj",
-);
-App::$strings["Monday"] = "Lundo";
-App::$strings["Tuesday"] = "Mardo";
-App::$strings["Wednesday"] = "Merkredo";
-App::$strings["Thursday"] = "Ä´aÅ­do";
-App::$strings["Friday"] = "Vendredo";
-App::$strings["Saturday"] = "Sabato";
-App::$strings["Sunday"] = "Dimanĉo";
-App::$strings["January"] = "Januaro";
-App::$strings["February"] = "Februaro";
-App::$strings["March"] = "Marto";
-App::$strings["April"] = "Aprilo";
-App::$strings["May"] = "Majo";
-App::$strings["June"] = "Junio";
-App::$strings["July"] = "Julio";
-App::$strings["August"] = "AÅ­gusto";
-App::$strings["September"] = "Septembro";
-App::$strings["October"] = "Oktobro";
-App::$strings["November"] = "Novembro";
-App::$strings["December"] = "Decembro";
-App::$strings["bytes"] = "bajtoj";
-App::$strings["remove"] = "forviÅi";
-App::$strings["[remove]"] = "[forviÅi]";
-App::$strings["Categories:"] = "Kategorioj:";
-App::$strings["Filed under:"] = "Enarkivigita kiel:";
-App::$strings["Click to open/close"] = "Klaku por malfermi/fermi";
-App::$strings["default"] = "defaÅ­lta";
-App::$strings["Select an alternate language"] = "Elekti alian lingvon";
-App::$strings["activity"] = "aktiveco";
-App::$strings["comment"] = "komento";
-App::$strings["post"] = "afiÅo";
-App::$strings["Item filed"] = "Enarkivigis elementon ";
-App::$strings["Sharing notification from Diaspora network"] = "Antentigo pri kunhavigado de la Diaspora reto";
-App::$strings["Attachments:"] = "Kunsendaĵoj:";
-App::$strings["view full size"] = "vidi plengrande";
-App::$strings["Embedded content"] = "Enigita enhavo";
-App::$strings["Embedding disabled"] = "MalÅaltita enigitado";
-App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Revivigis malnovan grupon kun la sama nomo. Permesoj por estantaj elementoj <strong>eble</strong> estas validaj por la grupo kaj estontaj membroj. Se tiu ne estas kiun vi atendis, bonvolu krei alian grupon kun alia nomo.";
-App::$strings["Default privacy group for new contacts"] = "DefaÅ­lta privateca grupo por novaj kontaktoj";
-App::$strings["Everybody"] = "Ĉiuj";
-App::$strings["edit"] = "redakti";
-App::$strings["Groups"] = "Grupoj";
-App::$strings["Edit group"] = "Redakti grupon";
-App::$strings["Create a new group"] = "Krei novan grupon";
-App::$strings["Contacts not in any group"] = "Kontaktoj en neniu grupo";
-App::$strings["Logout"] = "Elsaluti";
-App::$strings["End this session"] = "Fini ĉi-tiun seancon";
-App::$strings["Status"] = "Stato";
-App::$strings["Sign in"] = "Ensaluti";
-App::$strings["Home Page"] = "HejmpaÄo";
-App::$strings["Create an account"] = "Krei konton";
-App::$strings["Help and documentation"] = "Helpo kaj dokumentado";
-App::$strings["Apps"] = "Programoj";
-App::$strings["Addon applications, utilities, games"] = "Kromprogramoj, utilaĵoj, ludiloj";
-App::$strings["Search site content"] = "Serĉu la retejon";
-App::$strings["Conversations on this site"] = "Konversacioj je ĉi-tiu retejo";
-App::$strings["Directory"] = "Katalogo";
-App::$strings["People directory"] = "Katalogo de homoj";
-App::$strings["Conversations from your friends"] = "Konversacioj de viaj amikoj";
-App::$strings["Friend Requests"] = "Kontaktpetoj";
-App::$strings["See all notifications"] = "Vidu ĉiujn atentigojn";
-App::$strings["Mark all system notifications seen"] = "Marki ĉiujn atentigojn legita";
-App::$strings["Private mail"] = "Privata poÅto";
-App::$strings["Inbox"] = "Enirkesto";
-App::$strings["Outbox"] = "Elirkesto";
-App::$strings["Manage"] = "Administri";
-App::$strings["Manage other pages"] = "Administri aliajn paÄojn";
-App::$strings["Profiles"] = "Profiloj";
-App::$strings["Manage/edit profiles"] = "Administri/redakti profilojn";
-App::$strings["Manage/edit friends and contacts"] = "Administri/redakti amikojn kaj kontaktojn";
-App::$strings["Site setup and configuration"] = "Agordoj pri la retejo";
-App::$strings["Nothing new here"] = "Estas neniu nova ĉi tie";
-App::$strings["Add New Contact"] = "Aldonu Novan Kontakton";
-App::$strings["Enter address or web location"] = "Entajpu adreson aÅ­ retlokon";
-App::$strings["Example: bob@example.com, http://example.com/barbara"] = "Ekzemple: bob@example.com, http://example.com/barbara";
-App::$strings["%d invitation available"] = array(
- 0 => "Disponeblas %d invito",
- 1 => "Disponeblas %d invitoj",
-);
-App::$strings["Find People"] = "Trovi Homojn";
-App::$strings["Enter name or interest"] = "Entajpu nomon aÅ­ intereson";
-App::$strings["Connect/Follow"] = "Konekti/Aboni";
-App::$strings["Examples: Robert Morgenstein, Fishing"] = "Ekzemple: Robert Morgenstein, Fishing";
-App::$strings["Random Profile"] = "Hazarda Profilo";
-App::$strings["Networks"] = "Retoj";
-App::$strings["All Networks"] = "Ĉiuj Retoj";
-App::$strings["Saved Folders"] = "Konservitaj Dosierujoj";
-App::$strings["Everything"] = "Ĉio";
-App::$strings["Categories"] = "Kategorioj";
-App::$strings["Logged out."] = "Elsalutita.";
-App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Okazis problemo ensalutinta kun via OpenID. Bonvolu kontroli la ID.";
-App::$strings["The error message was:"] = "La erarmesaÄo estis:";
-App::$strings["Miscellaneous"] = "Diversaj";
-App::$strings["year"] = "jaro";
-App::$strings["month"] = "monato";
-App::$strings["day"] = "tago";
-App::$strings["never"] = "neniam";
-App::$strings["less than a second ago"] = "antaÅ­ malpli ol unu sekundo";
-App::$strings["years"] = "jaroj";
-App::$strings["months"] = "monatoj";
-App::$strings["week"] = "semajno";
-App::$strings["weeks"] = "semajnoj";
-App::$strings["days"] = "tagoj";
-App::$strings["hour"] = "horo";
-App::$strings["hours"] = "horoj";
-App::$strings["minute"] = "minuto";
-App::$strings["minutes"] = "minutoj";
-App::$strings["second"] = "sekundo";
-App::$strings["seconds"] = "sekundoj";
-App::$strings["%1\$d %2\$s ago"] = "antaÅ­ %1\$d %2\$s";
-App::$strings["%s's birthday"] = "NaskiÄtago de %s";
-App::$strings["Happy Birthday %s"] = "Feliĉan NaskiÄtagon al %s";
-App::$strings["From: "] = "De: ";
-App::$strings["$1 wrote:"] = "$1 skribis:";
-App::$strings["Image/photo"] = "Bildo";
-App::$strings["Cannot locate DNS info for database server '%s'"] = "Ne trovis DNS informojn por datumbaza servilo '%s'.";
-App::$strings["[no subject]"] = "[neniu temo]";
-App::$strings["Visible to everybody"] = "Videbla al ĉiuj";
-App::$strings["Friendica Notification"] = "Friendica Atentigo";
-App::$strings["Thank You,"] = "Dankon,";
-App::$strings["%s Administrator"] = "%s Administranto";
-App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
-App::$strings["[Friendica:Notify] New mail received at %s"] = "[Friendica:Atentigo] Ricevis novan retpoÅton ĉe %s";
-App::$strings["%1\$s sent you a new private message at %2\$s."] = "%1\$s sendis al vi novan privatan mesaÄon ĉe %2\$s.";
-App::$strings["%1\$s sent you %2\$s."] = "%1\$s sendis al vi %2\$s.";
-App::$strings["a private message"] = "privatan mesaÄon";
-App::$strings["Please visit %s to view and/or reply to your private messages."] = "Bonvolu viziti %s por vidi aÅ­ respondi viajn privatajn mesaÄojn.";
-App::$strings["%1\$s commented on [url=%2\$s]a %3\$s[/url]"] = "%1\$s komentis pri [url=%2\$s]%3\$s[/url]";
-App::$strings["%1\$s commented on [url=%2\$s]%3\$s's %4\$s[/url]"] = "%1\$s komentis pri [url=%2\$s]%4\$s de %3\$s[/url]";
-App::$strings["%1\$s commented on [url=%2\$s]your %3\$s[/url]"] = "%1\$s komentis pri [url=%2\$s]via %3\$s[/url]";
-App::$strings["[Friendica:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Friendica:Atentigo] Komento pri konversacio #%1\$d de %2\$s";
-App::$strings["%s commented on an item/conversation you have been following."] = "%s komentis pri elemento/konversacio kiun vi sekvas.";
-App::$strings["Please visit %s to view and/or reply to the conversation."] = "Bonvolu viziti %s por vidi aÅ­ respondi la konversacion.";
-App::$strings["[Friendica:Notify] %s posted to your profile wall"] = "[Friendica:Atentigo] %s afiÅis al via profilmuro";
-App::$strings["%1\$s posted to your profile wall at %2\$s"] = "%1\$s skribis al via profilmuro ĉe %2\$s";
-App::$strings["%1\$s posted to [url=%2s]your wall[/url]"] = "%1\$s afiÅis al [url=%2s]via muro[/url]";
-App::$strings["[Friendica:Notify] %s tagged you"] = "[Friendica:Atentigo] %s markis vin";
-App::$strings["%1\$s tagged you at %2\$s"] = "%1\$s markis vin ĉe %2\$s";
-App::$strings["%1\$s [url=%2\$s]tagged you[/url]."] = "%1\$s [url=%2\$s]markis vin[/url].";
-App::$strings["[Friendica:Notify] %s tagged your post"] = "[Friendica:Atentigo] %s markis vian afiÅon";
-App::$strings["%1\$s tagged your post at %2\$s"] = "%1\$s markis vian afiÅon ĉe %2\$s";
-App::$strings["%1\$s tagged [url=%2\$s]your post[/url]"] = "%1\$s markis [url=%2\$s]vian afiÅon[/url]";
-App::$strings["[Friendica:Notify] Introduction received"] = "[Friendica:Atentigo] Ricevis prezenton";
-App::$strings["You've received an introduction from '%1\$s' at %2\$s"] = "Vi ricevis prezenton de '%1\$s' ĉe %2\$s";
-App::$strings["You've received [url=%1\$s]an introduction[/url] from %2\$s."] = "Vi ricevis [url=%1\$s]prezenton[/url] de %2\$s.";
-App::$strings["You may visit their profile at %s"] = "Vi povas vidi la profilon de li aÅ­ Åi ĉe %s";
-App::$strings["Please visit %s to approve or reject the introduction."] = "Bonvolu viziti %s por aprobi aÅ­ malaprobi la prezenton.";
-App::$strings["[Friendica:Notify] Friend suggestion received"] = "[Friendica:Atentigo] Ricevis amikosugeston";
-App::$strings["You've received a friend suggestion from '%1\$s' at %2\$s"] = "Vi ricevis amikosugeston de '%1\$s' ĉe %2\$s";
-App::$strings["You've received [url=%1\$s]a friend suggestion[/url] for %2\$s from %3\$s."] = "Vi ricevis [url=%1\$s]amikosugeston[/url] pri %2\$s de %3\$s.";
-App::$strings["Name:"] = "Nomo:";
-App::$strings["Photo:"] = "Bildo:";
-App::$strings["Please visit %s to approve or reject the suggestion."] = "Bonvolu viziti %s por aprobi aÅ­ malaprobi la sugeston.";
-App::$strings["Connect URL missing."] = "Ne ekzistas URL adreso por konekti.";
-App::$strings["This site is not configured to allow communications with other networks."] = "Tiu retpaÄo ne permesas komunikadon kun aliaj retoj.";
-App::$strings["No compatible communication protocols or feeds were discovered."] = "Ne malkovris kongruajn protokolojn por komunikado aÅ­ fluojn.";
-App::$strings["The profile address specified does not provide adequate information."] = "La specifita profiladreso ne enhavas sufiĉe da informoj.";
-App::$strings["An author or name was not found."] = "Ne trovis aÅ­toron aÅ­ nomon.";
-App::$strings["No browser URL could be matched to this address."] = "Neniu retuma URL adreso kongruas al la adreso.";
-App::$strings["Unable to match @-style Identity Address with a known protocol or email contact."] = "Ne eblas kongrui @-stilan identecon adreson al iu konata protokolo au retpoÅtadreso.";
-App::$strings["Use mailto: in front of address to force email check."] = "Uzu mailto: antaÅ­ la adreso por devigi la testadon per retpoÅto.";
-App::$strings["The profile address specified belongs to a network which has been disabled on this site."] = "Tiu profila adreso apartenas al retejo kiu estas maÅaltita je ĉi tiu retejo.";
-App::$strings["Limited profile. This person will be unable to receive direct/personal notifications from you."] = "Profilo limigata. Ĉi persono ne eblos ricevi rektajn/personajn atentigojn de vi. ";
-App::$strings["Unable to retrieve contact information."] = "Ne eblas ricevi kontaktinformojn.";
-App::$strings["following"] = "sekvanta";
-App::$strings["A new person is sharing with you at "] = "Nova persono kunhavigas kun vi ĉe ";
-App::$strings["You have a new follower at "] = "Vi havas novan sekvanton ĉe ";
-App::$strings["Archives"] = "Arkivoj";
-App::$strings["An invitation is required."] = "Invio bezonata.";
-App::$strings["Invitation could not be verified."] = "Ne povis kontroli la inviton.";
-App::$strings["Invalid OpenID url"] = "Nevalida OpenID adreso";
-App::$strings["Please enter the required information."] = "Bonvolu entajpi la bezonatajn informojn.";
-App::$strings["Please use a shorter name."] = "Bonvolu uzi pli mallongan nomon.";
-App::$strings["Name too short."] = "Nomo estas tro mallonga.";
-App::$strings["That doesn't appear to be your full (First Last) name."] = "Tio Åajne ne estas via plena (persona, familia) nomo.";
-App::$strings["Your email domain is not among those allowed on this site."] = "Via retpoÅtodomajno ne estas permesita ĉi tie.";
-App::$strings["Not a valid email address."] = "Nevalida retpoÅtadreso.";
-App::$strings["Cannot use that email."] = "Neuzebla retpoÅtadreso.";
-App::$strings["Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and must also begin with a letter."] = "Via kaÅnomo nur povas enhavi \"a-z\", \"0-9\", \"-\", kaj \"_\". Äœi ankaÅ­ devas komenci kun litero.";
-App::$strings["Nickname is already registered. Please choose another."] = "Tio kaÅnomo jam estas registrita. Bonvolu elekti alian.";
-App::$strings["Nickname was once registered here and may not be re-used. Please choose another."] = "Tiu kaÅnomo iam estis registrita ĉi tie kaj ne ree uzeblas. Bonvolu elekti alian.";
-App::$strings["SERIOUS ERROR: Generation of security keys failed."] = "GRAVA ERARO: La generacio de sekurecaj ĉifroÅlosiloj malsukcesis.";
-App::$strings["An error occurred during registration. Please try again."] = "Eraro okazis dum registrado. Bonvolu provi denove.";
-App::$strings["An error occurred creating your default profile. Please try again."] = "Eraro okazi dum kreado de via defaÅ­lta profilo. Bonvolu provi denove.";
-App::$strings["Welcome "] = "Bonvenon ";
-App::$strings["Please upload a profile photo."] = "Bonvolu alÅuti profilbildon.";
-App::$strings["Welcome back "] = "Bonvenon ";
-App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "La sekuriga ĵetono de la formo estis malÄusta. Tio verÅajne okazis ĉar la formo estis malfermita dum tro longa tempo (>3 horoj) antaÅ­ la sendado.";
-App::$strings["stopped following"] = "ne plu sekvas";
-App::$strings["View Status"] = "Vidi Staton";
-App::$strings["View Profile"] = "Vidi Profilon";
-App::$strings["View Photos"] = "Vidi Bildojn";
-App::$strings["Network Posts"] = "Enretaj AfiÅoj";
-App::$strings["Edit Contact"] = "Redakti Kontakton";
-App::$strings["Send PM"] = "Sendi PM";
-App::$strings["post/item"] = "afiÅo/elemento";
-App::$strings["%1\$s marked %2\$s's %3\$s as favorite"] = "%1\$s markis la %3\$s de %2\$s kiel preferita.";
-App::$strings["Select"] = "Elekti";
-App::$strings["View %s's profile @ %s"] = "Vidi la profilon de %s ĉe %s";
-App::$strings["%s from %s"] = "%s de %s";
-App::$strings["View in context"] = "Vidi kun kunteksto";
-App::$strings["%d comment"] = array(
- 0 => "%d komento",
- 1 => "%d komentoj",
-);
-App::$strings["like"] = "Åati";
-App::$strings["dislike"] = "malÅati";
-App::$strings["Share this"] = "Kunhavigi ĉi tiun";
-App::$strings["share"] = "kunhavigi";
-App::$strings["Bold"] = "Grasa";
-App::$strings["Italic"] = "Kursiva";
-App::$strings["Underline"] = "Substreki";
-App::$strings["Quote"] = "Citaĵo";
-App::$strings["Code"] = "Kodo";
-App::$strings["Image"] = "Bildo";
-App::$strings["Link"] = "Ligilo";
-App::$strings["Video"] = "Video";
-App::$strings["add star"] = "aldoni stelon";
-App::$strings["remove star"] = "forpreni stelon";
-App::$strings["toggle star status"] = "Åalti/malÅalti steloÅtato";
-App::$strings["starred"] = "steligita";
-App::$strings["add tag"] = "aldoni markon";
-App::$strings["save to folder"] = "konservi en dosierujo";
-App::$strings["to"] = "al";
-App::$strings["Wall-to-Wall"] = "Muro-al-Muro";
-App::$strings["via Wall-To-Wall:"] = "per Muro-al-Muro:";
-App::$strings["Delete Selected Items"] = "ForviÅi Elektitajn Elementojn";
-App::$strings["%s likes this."] = "%s Åatas tiun.";
-App::$strings["%s doesn't like this."] = "%s malÅatas tiun.";
-App::$strings["<span %1\$s>%2\$d people</span> like this."] = "<span %1\$s>%2\$d homoj</span> Åatas tiun.";
-App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = "<span %1\$s>%2\$d homoj</span>malÅatas tiun.";
-App::$strings["and"] = "kaj";
-App::$strings[", and %d other people"] = ", kaj %d aliaj homoj.";
-App::$strings["%s like this."] = "%s Åatas tiun.";
-App::$strings["%s don't like this."] = "%s malÅatas tiun.";
-App::$strings["Visible to <strong>everybody</strong>"] = "Videbla al <strong>ĉiuj</strong>";
-App::$strings["Please enter a video link/URL:"] = "Bonvolu entajpi ligilon/adreson de video:";
-App::$strings["Please enter an audio link/URL:"] = "Bonvolu entajpi ligilon/adreson de sono:";
-App::$strings["Tag term:"] = "Markfrazo:";
-App::$strings["Where are you right now?"] = "Kie vi estas nun?";
-App::$strings["upload photo"] = "alÅuti bildon";
-App::$strings["attach file"] = "kunsendi dosieron";
-App::$strings["web link"] = "TTT ligilo";
-App::$strings["Insert video link"] = "Alglui ligilon de video";
-App::$strings["video link"] = "video ligilo";
-App::$strings["Insert audio link"] = "Alglui ligilon de sono";
-App::$strings["audio link"] = "sono ligilo";
-App::$strings["set location"] = "agordi lokon";
-App::$strings["clear location"] = "forviÅi lokon";
-App::$strings["permissions"] = "permesoj";
-App::$strings["Click here to upgrade."] = "Klaku ĉi tie por Äisdatigi.";
-App::$strings["This action exceeds the limits set by your subscription plan."] = "Tia ago preterpasas la limojn de via abono.";
-App::$strings["This action is not available under your subscription plan."] = "Tia ago ne estas permesita laÅ­ via abono.";
-App::$strings["Delete this item?"] = "ForviÅi ĉi tiun elementon?";
-App::$strings["show fewer"] = "montri malpli";
-App::$strings["Update %s failed. See error logs."] = "Malsukcesis Äisdatigi %s. Vidu la protokolojn.";
-App::$strings["Update Error at %s"] = "Eraro dum Äisdatigo ĉe %s";
-App::$strings["Create a New Account"] = "Krei Novan Konton";
-App::$strings["Nickname or Email address: "] = "KaÅnomo aÅ­ retpoÅtadreso:";
-App::$strings["Password: "] = "Pasvorto:";
-App::$strings["Or login using OpenID: "] = "AÅ­ ensaluti per OpenID:";
-App::$strings["Forgot your password?"] = "Ĉu vi vorgesis vian pasvorton?";
-App::$strings["Edit profile"] = "Redakti profilon";
-App::$strings["Message"] = "MesaÄo";
-App::$strings["g A l F d"] = "\\j\\e \\l\\a G\\a \\h\\o\\r\\o, l F d";
-App::$strings["F d"] = "F d";
-App::$strings["[today]"] = "[hodiaÅ­]";
-App::$strings["Birthday Reminders"] = "Memorigilo pri naskiÄtagoj";
-App::$strings["Birthdays this week:"] = "NaskiÄtagoj ĉi-semajne:";
-App::$strings["[No description]"] = "[Neniu priskribo]";
-App::$strings["Event Reminders"] = "Memorigilo pri Okazoj";
-App::$strings["Events this week:"] = "Okazoj ĉi-semajne:";
-App::$strings["Status Messages and Posts"] = "ÅœtatmesaÄoj kaj AfiÅoj";
-App::$strings["Profile Details"] = "Profildetaloj";
-App::$strings["Events and Calendar"] = "Okazoj kaj Kalendaro";
-App::$strings["Only You Can See This"] = "Nur Vi Povas Vidi Tiun";
diff --git a/view/eo/htconfig.tpl b/view/eo/htconfig.tpl
deleted file mode 100644
index 7a452087b..000000000
--- a/view/eo/htconfig.tpl
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-
-// Set the following for your MySQL installation
-// Copy or rename this file to .htconfig.php
-
-$db_host = '{{$dbhost}}';
-$db_port = '{{$dbport}}';
-$db_user = '{{$dbuser}}';
-$db_pass = '{{$dbpass}}';
-$db_data = '{{$dbdata}}';
-$db_type = '{{$dbtype}}'; // an integer. 0 or unset for mysql, 1 for postgres
-
-define( 'UNO', {{$uno}} );
-
-/*
- * Notice: Many of the following settings will be available in the admin panel
- * after a successful site install. Once they are set in the admin panel, they
- * are stored in the DB - and the DB setting will over-ride any corresponding
- * setting in this file
- *
- * The command-line tool util/config is able to query and set the DB items
- * directly if for some reason the admin panel is not available and a system
- * setting requires modification.
- *
- */
-
-
-// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
-// It can be changed later and only applies to timestamps for anonymous viewers.
-
-$default_timezone = '{{$timezone}}';
-
-// What is your site name?
-
-App::$config['system']['baseurl'] = '{{$siteurl}}';
-App::$config['system']['sitename'] = "Hubzilla";
-App::$config['system']['location_hash'] = '{{$site_id}}';
-
-
-// These lines set additional security headers to be sent with all responses
-// You may wish to set transport_security_header to 0 if your server already sends
-// this header. content_security_policy may need to be disabled if you wish to
-// run the piwik analytics plugin or include other offsite resources on a page
-
-App::$config['system']['transport_security_header'] = 1;
-App::$config['system']['content_security_policy'] = 1;
-
-// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
-// Be certain to create your own personal account before setting
-// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on
-// the registration page. REGISTER_APPROVE requires you set 'admin_email'
-// to the email address of an already registered person who can authorise
-// and/or approve/deny the request.
-
-App::$config['system']['register_policy'] = REGISTER_OPEN;
-App::$config['system']['register_text'] = '';
-App::$config['system']['admin_email'] = '{{$adminmail}}';
-
-// Maximum size of an imported message, 0 is unlimited
-
-App::$config['system']['max_import_size'] = 200000;
-
-// maximum size of uploaded photos
-
-App::$config['system']['maximagesize'] = 8000000;
-
-// Location of PHP command line processor
-
-App::$config['system']['php_path'] = '{{$phpath}}';
-
-// Configure how we communicate with directory servers.
-// DIRECTORY_MODE_NORMAL = directory client, we will find a directory
-// DIRECTORY_MODE_SECONDARY = caching directory or mirror
-// DIRECTORY_MODE_PRIMARY = main directory server
-// DIRECTORY_MODE_STANDALONE = "off the grid" or private directory services
-
-App::$config['system']['directory_mode'] = DIRECTORY_MODE_NORMAL;
-
-// default system theme
-
-App::$config['system']['theme'] = 'redbasic';
-
diff --git a/view/eo/lostpass_eml.tpl b/view/eo/lostpass_eml.tpl
deleted file mode 100644
index 3b79d2791..000000000
--- a/view/eo/lostpass_eml.tpl
+++ /dev/null
@@ -1,32 +0,0 @@
-
-Dear {{$username}},
- A request was recently received at {{$sitename}} to reset your account
-password. In order to confirm this request, please select the verification link
-below or paste it into your web browser address bar.
-
-If you did NOT request this change, please DO NOT follow the link
-provided and ignore and/or delete this email.
-
-Your password will not be changed unless we can verify that you
-issued this request.
-
-Follow this link to verify your identity:
-
-{{$reset_link}}
-
-You will then receive a follow-up message containing the new password.
-
-You may change that password from your account settings page after logging in.
-
-The login details are as follows:
-
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
-
-
-
-
-Sincerely,
- {{$sitename}} Administrator
-
-
diff --git a/view/eo/messages.po b/view/eo/messages.po
deleted file mode 100644
index 7fd842bb6..000000000
--- a/view/eo/messages.po
+++ /dev/null
@@ -1,7714 +0,0 @@
-# FRIENDICA Distributed Social Network
-# Copyright (C) 2010, 2011 the Friendica Project
-# This file is distributed under the same license as the Friendica package.
-#
-# Translators:
-# Diego Souza <diegosouza.br@gmail.com>, 2012.
-# Martin Schmitt <mas@scsy.de>, 2012.
-msgid ""
-msgstr ""
-"Project-Id-Version: friendica\n"
-"Report-Msgid-Bugs-To: http://bugs.friendica.com/\n"
-"POT-Creation-Date: 2012-06-30 10:00-0700\n"
-"PO-Revision-Date: 2012-07-01 16:55+0000\n"
-"Last-Translator: Martin Schmitt <mas@scsy.de>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/friendica/language/eo/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-
-#: ../../mod/oexchange.php:25
-msgid "Post successful."
-msgstr "Sukcese afiÅita."
-
-#: ../../mod/update_notes.php:41 ../../mod/update_community.php:18
-#: ../../mod/update_network.php:22 ../../mod/update_profile.php:41
-msgid "[Embedded content - reload page to view]"
-msgstr "[Enigita enhavo - reÅargu paÄon por spekti Äin]"
-
-#: ../../mod/crepair.php:102
-msgid "Contact settings applied."
-msgstr "Kontaktagordoj estas konservita."
-
-#: ../../mod/crepair.php:104
-msgid "Contact update failed."
-msgstr "Äœisdatigo de kontakto malsukcesis."
-
-#: ../../mod/crepair.php:115 ../../mod/wall_attach.php:44
-#: ../../mod/fsuggest.php:78 ../../mod/events.php:140 ../../mod/api.php:26
-#: ../../mod/api.php:31 ../../mod/photos.php:135 ../../mod/photos.php:951
-#: ../../mod/editpost.php:10 ../../mod/install.php:151
-#: ../../mod/notifications.php:66 ../../mod/contacts.php:145
-#: ../../mod/settings.php:106 ../../mod/settings.php:537
-#: ../../mod/settings.php:542 ../../mod/manage.php:86 ../../mod/network.php:6
-#: ../../mod/notes.php:20 ../../mod/wallmessage.php:9
-#: ../../mod/wallmessage.php:33 ../../mod/wallmessage.php:79
-#: ../../mod/wallmessage.php:103 ../../mod/attach.php:33
-#: ../../mod/group.php:19 ../../mod/viewconnections.php:22
-#: ../../mod/register.php:38 ../../mod/regmod.php:116 ../../mod/item.php:124
-#: ../../mod/item.php:140 ../../mod/profile_photo.php:19
-#: ../../mod/profile_photo.php:141 ../../mod/profile_photo.php:152
-#: ../../mod/profile_photo.php:165 ../../mod/message.php:45
-#: ../../mod/message.php:97 ../../mod/allfriends.php:9
-#: ../../mod/nogroup.php:25 ../../mod/wall_upload.php:53
-#: ../../mod/follow.php:9 ../../mod/display.php:138 ../../mod/profiles.php:7
-#: ../../mod/profiles.php:400 ../../mod/delegate.php:6
-#: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81
-#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:508
-#: ../../addon/facebook/facebook.php:514 ../../addon/dav/layout.fnk.php:353
-#: ../../include/items.php:3455 ../../index.php:309
-msgid "Permission denied."
-msgstr "Malpermesita."
-
-#: ../../mod/crepair.php:129 ../../mod/fsuggest.php:20
-#: ../../mod/fsuggest.php:92 ../../mod/dfrn_confirm.php:118
-msgid "Contact not found."
-msgstr "Kontakto ne trovita."
-
-#: ../../mod/crepair.php:135
-msgid "Repair Contact Settings"
-msgstr "Ripari kontaktagordoj."
-
-#: ../../mod/crepair.php:137
-msgid ""
-"<strong>WARNING: This is highly advanced</strong> and if you enter incorrect"
-" information your communications with this contact may stop working."
-msgstr "<strong>AVERTO: Tio estas tre altnivela</strong> kaj se vi entajpus malÄustan informojn, komunikado kun la kontakto eble ne plu funkcios."
-
-#: ../../mod/crepair.php:138
-msgid ""
-"Please use your browser 'Back' button <strong>now</strong> if you are "
-"uncertain what to do on this page."
-msgstr "Bonvolu klaki 'malantaŭen' en via retesplorilo <strong>nun</strong> se vi ne scias kion faru ĉi tie."
-
-#: ../../mod/crepair.php:144
-msgid "Return to contact editor"
-msgstr "Reen al kontakta redaktilo"
-
-#: ../../mod/crepair.php:148 ../../mod/settings.php:557
-#: ../../mod/settings.php:583 ../../mod/admin.php:659 ../../mod/admin.php:668
-msgid "Name"
-msgstr "Nomo"
-
-#: ../../mod/crepair.php:149
-msgid "Account Nickname"
-msgstr "KaÅnomo de la konto"
-
-#: ../../mod/crepair.php:150
-msgid "@Tagname - overrides Name/Nickname"
-msgstr "@Marknomo - Transpasas nomon/kaÅnomon"
-
-#: ../../mod/crepair.php:151
-msgid "Account URL"
-msgstr "Adreso de la konto"
-
-#: ../../mod/crepair.php:152
-msgid "Friend Request URL"
-msgstr "Kontaktpeta adreso"
-
-#: ../../mod/crepair.php:153
-msgid "Friend Confirm URL"
-msgstr "Kontaktkonfirma adreso"
-
-#: ../../mod/crepair.php:154
-msgid "Notification Endpoint URL"
-msgstr "Finpunkta adreso por atentigoj"
-
-#: ../../mod/crepair.php:155
-msgid "Poll/Feed URL"
-msgstr "Adreso de fluo"
-
-#: ../../mod/crepair.php:156
-msgid "New photo from this URL"
-msgstr "Nova bildo el tiu adreso"
-
-#: ../../mod/crepair.php:166 ../../mod/fsuggest.php:107
-#: ../../mod/events.php:436 ../../mod/photos.php:986 ../../mod/photos.php:1057
-#: ../../mod/photos.php:1303 ../../mod/photos.php:1343
-#: ../../mod/photos.php:1383 ../../mod/photos.php:1414
-#: ../../mod/install.php:246 ../../mod/install.php:284
-#: ../../mod/localtime.php:45 ../../mod/contacts.php:343
-#: ../../mod/settings.php:555 ../../mod/settings.php:709
-#: ../../mod/settings.php:770 ../../mod/settings.php:971
-#: ../../mod/group.php:85 ../../mod/message.php:216 ../../mod/message.php:410
-#: ../../mod/admin.php:420 ../../mod/admin.php:656 ../../mod/admin.php:792
-#: ../../mod/admin.php:991 ../../mod/admin.php:1078 ../../mod/profiles.php:569
-#: ../../mod/invite.php:119 ../../addon/fromgplus/fromgplus.php:40
-#: ../../addon/facebook/facebook.php:617
-#: ../../addon/snautofollow/snautofollow.php:64
-#: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93
-#: ../../addon/nsfw/nsfw.php:57 ../../addon/page/page.php:208
-#: ../../addon/planets/planets.php:158
-#: ../../addon/uhremotestorage/uhremotestorage.php:89
-#: ../../addon/randplace/randplace.php:177 ../../addon/dwpost/dwpost.php:93
-#: ../../addon/drpost/drpost.php:110 ../../addon/startpage/startpage.php:92
-#: ../../addon/geonames/geonames.php:187 ../../addon/oembed.old/oembed.php:41
-#: ../../addon/impressum/impressum.php:82
-#: ../../addon/notimeline/notimeline.php:64 ../../addon/blockem/blockem.php:57
-#: ../../addon/qcomment/qcomment.php:61
-#: ../../addon/openstreetmap/openstreetmap.php:70
-#: ../../addon/libertree/libertree.php:90 ../../addon/mathjax/mathjax.php:42
-#: ../../addon/editplain/editplain.php:84 ../../addon/blackout/blackout.php:98
-#: ../../addon/gravatar/gravatar.php:86
-#: ../../addon/pageheader/pageheader.php:55 ../../addon/ijpost/ijpost.php:93
-#: ../../addon/jappixmini/jappixmini.php:302
-#: ../../addon/statusnet/statusnet.php:278
-#: ../../addon/statusnet/statusnet.php:292
-#: ../../addon/statusnet/statusnet.php:318
-#: ../../addon/statusnet/statusnet.php:325
-#: ../../addon/statusnet/statusnet.php:353
-#: ../../addon/statusnet/statusnet.php:567 ../../addon/tumblr/tumblr.php:90
-#: ../../addon/numfriends/numfriends.php:85 ../../addon/gnot/gnot.php:88
-#: ../../addon/wppost/wppost.php:110 ../../addon/showmore/showmore.php:48
-#: ../../addon/piwik/piwik.php:89 ../../addon/twitter/twitter.php:180
-#: ../../addon/twitter/twitter.php:209 ../../addon/twitter/twitter.php:387
-#: ../../addon/irc/irc.php:55 ../../addon/blogger/blogger.php:102
-#: ../../addon/posterous/posterous.php:103
-#: ../../view/theme/cleanzero/config.php:80
-#: ../../view/theme/diabook/theme.php:757
-#: ../../view/theme/diabook/config.php:190
-#: ../../view/theme/quattro/config.php:52 ../../view/theme/dispy/config.php:70
-#: ../../include/conversation.php:580
-msgid "Submit"
-msgstr "Sendi"
-
-#: ../../mod/help.php:30
-msgid "Help:"
-msgstr "Helpo:"
-
-#: ../../mod/help.php:34 ../../addon/dav/layout.fnk.php:116
-#: ../../include/nav.php:86
-msgid "Help"
-msgstr "Helpo"
-
-#: ../../mod/help.php:38 ../../index.php:218
-msgid "Not Found"
-msgstr "Ne trovita"
-
-#: ../../mod/help.php:41 ../../index.php:221
-msgid "Page not found."
-msgstr "PaÄo ne trovita"
-
-#: ../../mod/wall_attach.php:58
-#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "Dosiero estas pli granda ol la limito de %d"
-
-#: ../../mod/wall_attach.php:99 ../../mod/wall_attach.php:110
-msgid "File upload failed."
-msgstr "AlÅutado malsukcesis."
-
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
-msgstr "Amikosugesto sendita."
-
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
-msgstr "Sugesti amikojn"
-
-#: ../../mod/fsuggest.php:99
-#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Sugesti amikon por %s"
-
-#: ../../mod/events.php:66
-msgid "Event title and start time are required."
-msgstr "Titolo kaj starttempo estas bezonataj por la okazo."
-
-#: ../../mod/events.php:260
-msgid "l, F j"
-msgstr "l, F j"
-
-#: ../../mod/events.php:282
-msgid "Edit event"
-msgstr "Redakti okazon"
-
-#: ../../mod/events.php:304 ../../include/text.php:1065
-msgid "link to source"
-msgstr "ligilo al fonto"
-
-#: ../../mod/events.php:328 ../../view/theme/diabook/theme.php:131
-#: ../../include/nav.php:52 ../../boot.php:1559
-msgid "Events"
-msgstr "Okazoj"
-
-#: ../../mod/events.php:329
-msgid "Create New Event"
-msgstr "Krei novan okazon"
-
-#: ../../mod/events.php:330 ../../addon/dav/layout.fnk.php:154
-msgid "Previous"
-msgstr "antaÅ­a"
-
-#: ../../mod/events.php:331 ../../mod/install.php:205
-#: ../../addon/dav/layout.fnk.php:157
-msgid "Next"
-msgstr "sekva"
-
-#: ../../mod/events.php:404
-msgid "hour:minute"
-msgstr "horo:minuto"
-
-#: ../../mod/events.php:414
-msgid "Event details"
-msgstr "Detaloj de okazo"
-
-#: ../../mod/events.php:415
-#, php-format
-msgid "Format is %s %s. Starting date and Title are required."
-msgstr "Format is %s %s. Titolo kaj starttempo estas bezonataj."
-
-#: ../../mod/events.php:417
-msgid "Event Starts:"
-msgstr "Okazo startas:"
-
-#: ../../mod/events.php:417 ../../mod/events.php:431
-msgid "Required"
-msgstr "Bezonata"
-
-#: ../../mod/events.php:420
-msgid "Finish date/time is not known or not relevant"
-msgstr "Fina dato/tempo ne estas konata aÅ­ ne bezonata"
-
-#: ../../mod/events.php:422
-msgid "Event Finishes:"
-msgstr "Okazo finas:"
-
-#: ../../mod/events.php:425
-msgid "Adjust for viewer timezone"
-msgstr "Agordi al horzono de la leganto"
-
-#: ../../mod/events.php:427
-msgid "Description:"
-msgstr "Priskribo"
-
-#: ../../mod/events.php:429 ../../include/event.php:40
-#: ../../include/bb2diaspora.php:357 ../../boot.php:1136
-msgid "Location:"
-msgstr "Loko:"
-
-#: ../../mod/events.php:431
-msgid "Title:"
-msgstr "Titolo:"
-
-#: ../../mod/events.php:433
-msgid "Share this event"
-msgstr "Kunhavigi la okazon"
-
-#: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94
-#: ../../mod/dfrn_request.php:845 ../../mod/settings.php:556
-#: ../../mod/settings.php:582 ../../addon/js_upload/js_upload.php:45
-msgid "Cancel"
-msgstr "Nuligi"
-
-#: ../../mod/tagrm.php:41
-msgid "Tag removed"
-msgstr "Marko forviÅita"
-
-#: ../../mod/tagrm.php:79
-msgid "Remove Item Tag"
-msgstr "ForviÅi markon"
-
-#: ../../mod/tagrm.php:81
-msgid "Select a tag to remove: "
-msgstr "Elektu forviÅontan markon:"
-
-#: ../../mod/tagrm.php:93 ../../mod/delegate.php:130
-msgid "Remove"
-msgstr "ForviÅi"
-
-#: ../../mod/dfrn_poll.php:94 ../../mod/dfrn_poll.php:522
-#, php-format
-msgid "%s welcomes %s"
-msgstr "%s salutas %s"
-
-#: ../../mod/api.php:76 ../../mod/api.php:102
-msgid "Authorize application connection"
-msgstr "Rajtigi programkonekton"
-
-#: ../../mod/api.php:77
-msgid "Return to your app and insert this Securty Code:"
-msgstr "Reiru al via programo kaj entajpu la securecan kodon:"
-
-#: ../../mod/api.php:89
-msgid "Please login to continue."
-msgstr "Bonvolu ensaluti por pluigi."
-
-#: ../../mod/api.php:104
-msgid ""
-"Do you want to authorize this application to access your posts and contacts,"
-" and/or create new posts for you?"
-msgstr "Ĉu rajtigi ĉi tiun programon por atingi viajn afiÅojn kaj kontaktojn kaj/aÅ­ krei novajn afiÅojn?"
-
-#: ../../mod/api.php:105 ../../mod/dfrn_request.php:833
-#: ../../mod/settings.php:887 ../../mod/settings.php:893
-#: ../../mod/settings.php:901 ../../mod/settings.php:905
-#: ../../mod/settings.php:910 ../../mod/settings.php:916
-#: ../../mod/settings.php:922 ../../mod/settings.php:928
-#: ../../mod/settings.php:958 ../../mod/settings.php:959
-#: ../../mod/settings.php:960 ../../mod/settings.php:961
-#: ../../mod/settings.php:962 ../../mod/register.php:234
-#: ../../mod/profiles.php:546
-msgid "Yes"
-msgstr "Jes"
-
-#: ../../mod/api.php:106 ../../mod/dfrn_request.php:834
-#: ../../mod/settings.php:887 ../../mod/settings.php:893
-#: ../../mod/settings.php:901 ../../mod/settings.php:905
-#: ../../mod/settings.php:910 ../../mod/settings.php:916
-#: ../../mod/settings.php:922 ../../mod/settings.php:928
-#: ../../mod/settings.php:958 ../../mod/settings.php:959
-#: ../../mod/settings.php:960 ../../mod/settings.php:961
-#: ../../mod/settings.php:962 ../../mod/register.php:235
-#: ../../mod/profiles.php:547
-msgid "No"
-msgstr "Ne"
-
-#: ../../mod/photos.php:46 ../../boot.php:1553
-msgid "Photo Albums"
-msgstr "Bildalbumoj"
-
-#: ../../mod/photos.php:54 ../../mod/photos.php:156 ../../mod/photos.php:965
-#: ../../mod/photos.php:1049 ../../mod/photos.php:1064
-#: ../../mod/photos.php:1492 ../../mod/photos.php:1504
-#: ../../addon/communityhome/communityhome.php:110
-#: ../../view/theme/diabook/theme.php:598
-msgid "Contact Photos"
-msgstr "Kontaktbildoj"
-
-#: ../../mod/photos.php:61 ../../mod/photos.php:1074 ../../mod/photos.php:1542
-msgid "Upload New Photos"
-msgstr "AlÅuti novajn bildojn"
-
-#: ../../mod/photos.php:72 ../../mod/settings.php:21
-msgid "everybody"
-msgstr "ĉiuj"
-
-#: ../../mod/photos.php:145
-msgid "Contact information unavailable"
-msgstr "Kontaktoj informoj ne disponeblas"
-
-#: ../../mod/photos.php:156 ../../mod/photos.php:660 ../../mod/photos.php:1049
-#: ../../mod/photos.php:1064 ../../mod/profile_photo.php:60
-#: ../../mod/profile_photo.php:67 ../../mod/profile_photo.php:74
-#: ../../mod/profile_photo.php:176 ../../mod/profile_photo.php:254
-#: ../../mod/profile_photo.php:263
-#: ../../addon/communityhome/communityhome.php:111
-#: ../../view/theme/diabook/theme.php:599 ../../include/user.php:304
-#: ../../include/user.php:311 ../../include/user.php:318
-msgid "Profile Photos"
-msgstr "Profilbildoj"
-
-#: ../../mod/photos.php:166
-msgid "Album not found."
-msgstr "Albumo ne trovita."
-
-#: ../../mod/photos.php:184 ../../mod/photos.php:1058
-msgid "Delete Album"
-msgstr "ForviÅi albumon"
-
-#: ../../mod/photos.php:247 ../../mod/photos.php:1304
-msgid "Delete Photo"
-msgstr "ForviÅi bildon"
-
-#: ../../mod/photos.php:591
-msgid "was tagged in a"
-msgstr "estas markita en"
-
-#: ../../mod/photos.php:591 ../../mod/like.php:144 ../../mod/tagger.php:70
-#: ../../addon/communityhome/communityhome.php:163
-#: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1317
-#: ../../include/diaspora.php:1710 ../../include/conversation.php:53
-#: ../../include/conversation.php:126
-msgid "photo"
-msgstr "bildo"
-
-#: ../../mod/photos.php:591
-msgid "by"
-msgstr "de"
-
-#: ../../mod/photos.php:696 ../../addon/js_upload/js_upload.php:315
-msgid "Image exceeds size limit of "
-msgstr "Bildo estas pli granda ol la limito de"
-
-#: ../../mod/photos.php:704
-msgid "Image file is empty."
-msgstr "Bilddosiero estas malplena."
-
-#: ../../mod/photos.php:736 ../../mod/profile_photo.php:126
-#: ../../mod/wall_upload.php:99
-msgid "Unable to process image."
-msgstr "Ne eblas procedi la bildon."
-
-#: ../../mod/photos.php:757 ../../mod/profile_photo.php:259
-#: ../../mod/wall_upload.php:118
-msgid "Image upload failed."
-msgstr "AlÅuto de bildo malsukcesis."
-
-#: ../../mod/photos.php:843 ../../mod/community.php:16
-#: ../../mod/dfrn_request.php:759 ../../mod/viewconnections.php:17
-#: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:29
-msgid "Public access denied."
-msgstr "Publika atingo ne permesita."
-
-#: ../../mod/photos.php:853
-msgid "No photos selected"
-msgstr "Neniu bildoj elektita"
-
-#: ../../mod/photos.php:932
-msgid "Access to this item is restricted."
-msgstr "Atingo al tio elemento estas limigita."
-
-#: ../../mod/photos.php:996
-#, php-format
-msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."
-msgstr "Vi uzas %1$.2f MB de %2$.2f MB bildkonservejo."
-
-#: ../../mod/photos.php:999
-#, php-format
-msgid "You have used %1$.2f Mbytes of photo storage."
-msgstr "Vi uzas %1$.2f MB de bildkonservejo."
-
-#: ../../mod/photos.php:1005
-msgid "Upload Photos"
-msgstr "AlÅuti bildojn"
-
-#: ../../mod/photos.php:1009 ../../mod/photos.php:1053
-msgid "New album name: "
-msgstr "Nomo por nova albumo:"
-
-#: ../../mod/photos.php:1010
-msgid "or existing album name: "
-msgstr "aÅ­ nomo de estanta albumo:"
-
-#: ../../mod/photos.php:1011
-msgid "Do not show a status post for this upload"
-msgstr "Ne kreu statan afiÅon por tio alÅuto."
-
-#: ../../mod/photos.php:1013 ../../mod/photos.php:1299
-msgid "Permissions"
-msgstr "Permesoj"
-
-#: ../../mod/photos.php:1068
-msgid "Edit Album"
-msgstr "Redakti albumon"
-
-#: ../../mod/photos.php:1092 ../../mod/photos.php:1525
-msgid "View Photo"
-msgstr "Vidi bildon"
-
-#: ../../mod/photos.php:1127
-msgid "Permission denied. Access to this item may be restricted."
-msgstr "Malpermesita. Atingo al tio elemento eble estas limigita."
-
-#: ../../mod/photos.php:1129
-msgid "Photo not available"
-msgstr "La bildo ne disponeblas"
-
-#: ../../mod/photos.php:1179
-msgid "View photo"
-msgstr "Vidi bildon"
-
-#: ../../mod/photos.php:1179
-msgid "Edit photo"
-msgstr "Redakti bildon"
-
-#: ../../mod/photos.php:1180
-msgid "Use as profile photo"
-msgstr "Uzi kiel profilbildo"
-
-#: ../../mod/photos.php:1186 ../../include/conversation.php:490
-msgid "Private Message"
-msgstr "Privata mesaÄo"
-
-#: ../../mod/photos.php:1208
-msgid "View Full Size"
-msgstr "Vidi plengrande "
-
-#: ../../mod/photos.php:1276
-msgid "Tags: "
-msgstr "Markoj:"
-
-#: ../../mod/photos.php:1279
-msgid "[Remove any tag]"
-msgstr "[ForviÅi iun markon]"
-
-#: ../../mod/photos.php:1289
-msgid "Rotate CW (right)"
-msgstr "Turni horloÄdirekte (dekstren)"
-
-#: ../../mod/photos.php:1290
-msgid "Rotate CCW (left)"
-msgstr "Turni kontraÅ­horloÄdirekte (maldekstren)"
-
-#: ../../mod/photos.php:1292
-msgid "New album name"
-msgstr "Nova nomo de albumo"
-
-#: ../../mod/photos.php:1295
-msgid "Caption"
-msgstr "Apudskribo"
-
-#: ../../mod/photos.php:1297
-msgid "Add a Tag"
-msgstr "Aldoni markon"
-
-#: ../../mod/photos.php:1301
-msgid ""
-"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-msgstr "Ekzemple: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-
-#: ../../mod/photos.php:1321 ../../include/conversation.php:554
-msgid "I like this (toggle)"
-msgstr "Mi Åatas tion (Åalti)"
-
-#: ../../mod/photos.php:1322 ../../include/conversation.php:555
-msgid "I don't like this (toggle)"
-msgstr "Mi malÅatas tion(Åalti)"
-
-#: ../../mod/photos.php:1323 ../../include/conversation.php:993
-msgid "Share"
-msgstr "Kunhavigi"
-
-#: ../../mod/photos.php:1324 ../../mod/editpost.php:104
-#: ../../mod/wallmessage.php:145 ../../mod/message.php:215
-#: ../../mod/message.php:411 ../../include/conversation.php:371
-#: ../../include/conversation.php:731 ../../include/conversation.php:1012
-msgid "Please wait"
-msgstr "Bonvolu atendi"
-
-#: ../../mod/photos.php:1340 ../../mod/photos.php:1380
-#: ../../mod/photos.php:1411 ../../include/conversation.php:577
-msgid "This is you"
-msgstr "Tiu estas vi"
-
-#: ../../mod/photos.php:1342 ../../mod/photos.php:1382
-#: ../../mod/photos.php:1413 ../../include/conversation.php:579
-#: ../../boot.php:528
-msgid "Comment"
-msgstr "Komenti"
-
-#: ../../mod/photos.php:1344 ../../mod/editpost.php:125
-#: ../../include/conversation.php:589 ../../include/conversation.php:1030
-msgid "Preview"
-msgstr "AntaÅ­rigardi"
-
-#: ../../mod/photos.php:1441 ../../mod/settings.php:618
-#: ../../mod/settings.php:707 ../../mod/group.php:168 ../../mod/admin.php:663
-#: ../../include/conversation.php:328 ../../include/conversation.php:609
-msgid "Delete"
-msgstr "ForviÅi"
-
-#: ../../mod/photos.php:1531
-msgid "View Album"
-msgstr "Vidi albumon"
-
-#: ../../mod/photos.php:1540
-msgid "Recent Photos"
-msgstr "Ì‚Ä´usaj bildoj"
-
-#: ../../mod/community.php:21
-msgid "Not available."
-msgstr "Ne disponebla."
-
-#: ../../mod/community.php:30 ../../view/theme/diabook/theme.php:133
-#: ../../include/nav.php:101
-msgid "Community"
-msgstr "Komunumo"
-
-#: ../../mod/community.php:61 ../../mod/search.php:144
-msgid "No results."
-msgstr "Nenion trovita."
-
-#: ../../mod/friendica.php:55
-msgid "This is Friendica, version"
-msgstr "Tio estas Friendica en la versio"
-
-#: ../../mod/friendica.php:56
-msgid "running at web location"
-msgstr "instalita ĉe la adreso"
-
-#: ../../mod/friendica.php:58
-msgid ""
-"Please visit <a href=\"http://friendica.com\">Friendica.com</a> to learn "
-"more about the Friendica project."
-msgstr "Bonvolu iri al <a href=\"http://friendica.com\">Friendica.com</a> por lerni pli pri la projekto Friendica"
-
-#: ../../mod/friendica.php:60
-msgid "Bug reports and issues: please visit"
-msgstr "Cimraportoj kaj atendindaĵo: bonvolu iri al"
-
-#: ../../mod/friendica.php:61
-msgid ""
-"Suggestions, praise, donations, etc. - please email \"Info\" at Friendica - "
-"dot com"
-msgstr "Sugestoj, laÅ­doj, donacoj ktp - bonvolu sendi mesÄon al \"Info\" ĉe Friendica - punkto com"
-
-#: ../../mod/friendica.php:75
-msgid "Installed plugins/addons/apps:"
-msgstr "Instalitaj kromprogramoj/programoj:"
-
-#: ../../mod/friendica.php:88
-msgid "No installed plugins/addons/apps"
-msgstr "Neniom da instalitaj aldonaĵoj/programoj"
-
-#: ../../mod/editpost.php:17 ../../mod/editpost.php:27
-msgid "Item not found"
-msgstr "Elemento ne trovita"
-
-#: ../../mod/editpost.php:36
-msgid "Edit post"
-msgstr "Redakti afiÅon"
-
-#: ../../mod/editpost.php:80 ../../include/conversation.php:979
-msgid "Post to Email"
-msgstr "Sendi per retpoÅto"
-
-#: ../../mod/editpost.php:95 ../../mod/settings.php:617
-#: ../../include/conversation.php:596
-msgid "Edit"
-msgstr "Redakti"
-
-#: ../../mod/editpost.php:96 ../../mod/wallmessage.php:143
-#: ../../mod/message.php:213 ../../mod/message.php:408
-#: ../../include/conversation.php:994
-msgid "Upload photo"
-msgstr "AlÅuti bildon"
-
-#: ../../mod/editpost.php:97 ../../include/conversation.php:996
-msgid "Attach file"
-msgstr "Kunligi dosieron"
-
-#: ../../mod/editpost.php:98 ../../mod/wallmessage.php:144
-#: ../../mod/message.php:214 ../../mod/message.php:409
-#: ../../include/conversation.php:998
-msgid "Insert web link"
-msgstr "Enmeti retan adreson"
-
-#: ../../mod/editpost.php:99
-msgid "Insert YouTube video"
-msgstr "Enmeti videton ĉe YouTube"
-
-#: ../../mod/editpost.php:100
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Enmeti videton en formato Vorbis [.ogg]"
-
-#: ../../mod/editpost.php:101
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Enmeti sonon en formato Vorbis [.ogg]"
-
-#: ../../mod/editpost.php:102 ../../include/conversation.php:1004
-msgid "Set your location"
-msgstr "Agordi vian lokon"
-
-#: ../../mod/editpost.php:103 ../../include/conversation.php:1006
-msgid "Clear browser location"
-msgstr "ForviÅu retesplorilan lokon"
-
-#: ../../mod/editpost.php:105 ../../include/conversation.php:1013
-msgid "Permission settings"
-msgstr "Permesagordoj"
-
-#: ../../mod/editpost.php:113 ../../include/conversation.php:1022
-msgid "CC: email addresses"
-msgstr "CC: retpoÅtadresojn"
-
-#: ../../mod/editpost.php:114 ../../include/conversation.php:1023
-msgid "Public post"
-msgstr "Publika afiÅo"
-
-#: ../../mod/editpost.php:117 ../../include/conversation.php:1009
-msgid "Set title"
-msgstr "Redakti titolon"
-
-#: ../../mod/editpost.php:119 ../../include/conversation.php:1011
-msgid "Categories (comma-separated list)"
-msgstr "Kategorioj (disigita per komo)"
-
-#: ../../mod/editpost.php:120 ../../include/conversation.php:1025
-msgid "Example: bob@example.com, mary@example.com"
-msgstr "Ekzemple: bob@example.com, mary@example.com"
-
-#: ../../mod/dfrn_request.php:93
-msgid "This introduction has already been accepted."
-msgstr "Tia prezento jam estas akceptita"
-
-#: ../../mod/dfrn_request.php:118 ../../mod/dfrn_request.php:512
-msgid "Profile location is not valid or does not contain profile information."
-msgstr "La adreso de la profilo ne validas aÅ­ ne enhavas profilinformojn."
-
-#: ../../mod/dfrn_request.php:123 ../../mod/dfrn_request.php:517
-msgid "Warning: profile location has no identifiable owner name."
-msgstr "Averto: La adreso de la profilo ne enhavas identeblan personan nomon."
-
-#: ../../mod/dfrn_request.php:125 ../../mod/dfrn_request.php:519
-msgid "Warning: profile location has no profile photo."
-msgstr "Averto: La adreso de la profilo ne enhavas bildon."
-
-#: ../../mod/dfrn_request.php:128 ../../mod/dfrn_request.php:522
-#, php-format
-msgid "%d required parameter was not found at the given location"
-msgid_plural "%d required parameters were not found at the given location"
-msgstr[0] "%d bezonataj parametroj ne trovita ĉe la donata adreso."
-msgstr[1] "%d bezonataj parametroj ne trovita ĉe la donata adreso."
-
-#: ../../mod/dfrn_request.php:170
-msgid "Introduction complete."
-msgstr "Prezento sukcesis."
-
-#: ../../mod/dfrn_request.php:209
-msgid "Unrecoverable protocol error."
-msgstr "NeÄustigebla eraro en protokolo."
-
-#: ../../mod/dfrn_request.php:237
-msgid "Profile unavailable."
-msgstr "Profilo ne estas disponebla."
-
-#: ../../mod/dfrn_request.php:262
-#, php-format
-msgid "%s has received too many connection requests today."
-msgstr "%s hodiaÅ­ ricevis tro multe da konektpetoj."
-
-#: ../../mod/dfrn_request.php:263
-msgid "Spam protection measures have been invoked."
-msgstr "KontraÅ­spamilo estas aktivita."
-
-#: ../../mod/dfrn_request.php:264
-msgid "Friends are advised to please try again in 24 hours."
-msgstr "Amikoj, vi bonvolu ripeti post 24 horoj."
-
-#: ../../mod/dfrn_request.php:326
-msgid "Invalid locator"
-msgstr "Nevalida adreso."
-
-#: ../../mod/dfrn_request.php:335
-msgid "Invalid email address."
-msgstr "Nevalida repoÅtadreso."
-
-#: ../../mod/dfrn_request.php:361
-msgid "This account has not been configured for email. Request failed."
-msgstr "La konto ne estas agordita por retpoÅto. La peto malsukcesis."
-
-#: ../../mod/dfrn_request.php:457
-msgid "Unable to resolve your name at the provided location."
-msgstr "Via nomo ne troveblas al la donita adreso."
-
-#: ../../mod/dfrn_request.php:470
-msgid "You have already introduced yourself here."
-msgstr "Vi vin jam prezentis tie."
-
-#: ../../mod/dfrn_request.php:474
-#, php-format
-msgid "Apparently you are already friends with %s."
-msgstr "Åœajnas kvazaÅ­ vi jam amikiÄis kun %s."
-
-#: ../../mod/dfrn_request.php:495
-msgid "Invalid profile URL."
-msgstr "Nevalida adreso de profilo."
-
-#: ../../mod/dfrn_request.php:501 ../../include/follow.php:27
-msgid "Disallowed profile URL."
-msgstr "Malpermesita adreso de profilo."
-
-#: ../../mod/dfrn_request.php:570 ../../mod/contacts.php:122
-msgid "Failed to update contact record."
-msgstr "Äœisdatigo de via kontaktrikordo malsukcesis."
-
-#: ../../mod/dfrn_request.php:591
-msgid "Your introduction has been sent."
-msgstr "Via prezento estas sendita."
-
-#: ../../mod/dfrn_request.php:644
-msgid "Please login to confirm introduction."
-msgstr "Bonvolu ensaluti por jesigi la prezenton."
-
-#: ../../mod/dfrn_request.php:658
-msgid ""
-"Incorrect identity currently logged in. Please login to "
-"<strong>this</strong> profile."
-msgstr "MalÄusta identaĵo ensalutata. Bonvolu ensaluti en <strong>tiun</strong> profilon."
-
-#: ../../mod/dfrn_request.php:669
-msgid "Hide this contact"
-msgstr "KaÅi tiun kontakton"
-
-#: ../../mod/dfrn_request.php:672
-#, php-format
-msgid "Welcome home %s."
-msgstr "Bonvenon hejme, %s."
-
-#: ../../mod/dfrn_request.php:673
-#, php-format
-msgid "Please confirm your introduction/connection request to %s."
-msgstr "Bonvolu konfirmi vian prezenton / kontaktpeton al %s."
-
-#: ../../mod/dfrn_request.php:674
-msgid "Confirm"
-msgstr "Konfirmi."
-
-#: ../../mod/dfrn_request.php:715 ../../include/items.php:2881
-msgid "[Name Withheld]"
-msgstr "[KaÅita nomo]"
-
-#: ../../mod/dfrn_request.php:808
-msgid ""
-"Please enter your 'Identity Address' from one of the following supported "
-"communications networks:"
-msgstr "Bonvolu entajpi vian 'Identecan Adreson' de iu de tiuj subtenataj komunikaj retejoj: "
-
-#: ../../mod/dfrn_request.php:824
-msgid "<strike>Connect as an email follower</strike> (Coming soon)"
-msgstr "<strike>Konektu kiel retpoÅta sekvanto</strike> (BaldaÅ­ venos)"
-
-#: ../../mod/dfrn_request.php:826
-msgid ""
-"If you are not yet a member of the free social web, <a "
-"href=\"http://dir.friendica.com/siteinfo\">follow this link to find a public"
-" Friendica site and join us today</a>."
-msgstr "Se vi ne estas membro de la libra interkona reto, <a href=\"http://dir.friendica.com/siteinfo\">sekvu ĉi-ligilon por trovi publikan Friendica retejon kaj aliÄi kun ni hodiaÅ­</a>."
-
-#: ../../mod/dfrn_request.php:829
-msgid "Friend/Connection Request"
-msgstr "Prezento / Konektpeto"
-
-#: ../../mod/dfrn_request.php:830
-msgid ""
-"Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
-"testuser@identi.ca"
-msgstr "Ekzemploj: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"
-
-#: ../../mod/dfrn_request.php:831
-msgid "Please answer the following:"
-msgstr "Bonvolu respondi:"
-
-#: ../../mod/dfrn_request.php:832
-#, php-format
-msgid "Does %s know you?"
-msgstr "Ĉu %s konas vin?"
-
-#: ../../mod/dfrn_request.php:835
-msgid "Add a personal note:"
-msgstr "Aldoni personan noton:"
-
-#: ../../mod/dfrn_request.php:837 ../../include/contact_selectors.php:76
-msgid "Friendica"
-msgstr "Friendica"
-
-#: ../../mod/dfrn_request.php:838
-msgid "StatusNet/Federated Social Web"
-msgstr "StatusNet/Federaciaj interkonaj retejoj"
-
-#: ../../mod/dfrn_request.php:839 ../../mod/settings.php:652
-#: ../../include/contact_selectors.php:80
-msgid "Diaspora"
-msgstr "Diaspora"
-
-#: ../../mod/dfrn_request.php:840
-#, php-format
-msgid ""
-" - please do not use this form. Instead, enter %s into your Diaspora search"
-" bar."
-msgstr " - bonvolu ne uzi ĉi formo. Anstataŭe, entajpu %s en la Diaspora serĉilo."
-
-#: ../../mod/dfrn_request.php:841
-msgid "Your Identity Address:"
-msgstr "Via identeca adreso:"
-
-#: ../../mod/dfrn_request.php:844
-msgid "Submit Request"
-msgstr "Sendi peton"
-
-#: ../../mod/install.php:117
-msgid "Friendica Social Communications Server - Setup"
-msgstr "Friendica Interkona Komunikada Servilo - Instalo"
-
-#: ../../mod/install.php:123
-msgid "Could not connect to database."
-msgstr "Ne eblas konekti la datumbazon."
-
-#: ../../mod/install.php:127
-msgid "Could not create table."
-msgstr "Ne eblas krei tabelon."
-
-#: ../../mod/install.php:133
-msgid "Your Friendica site database has been installed."
-msgstr "La datumbazo de vi Friendica retjo estas instalita."
-
-#: ../../mod/install.php:138
-msgid ""
-"You may need to import the file \"database.sql\" manually using phpmyadmin "
-"or mysql."
-msgstr "Vi bezonas mane importi la dosieron \"database.sql\" per phpmyadmin aÅ­ mysql."
-
-#: ../../mod/install.php:139 ../../mod/install.php:204
-#: ../../mod/install.php:489
-msgid "Please see the file \"INSTALL.txt\"."
-msgstr "Bonvolu legi la dosieron \"INSTALL.txt\"."
-
-#: ../../mod/install.php:201
-msgid "System check"
-msgstr "Sistema kontrolo"
-
-#: ../../mod/install.php:206
-msgid "Check again"
-msgstr "Ree kontroli"
-
-#: ../../mod/install.php:225
-msgid "Database connection"
-msgstr "Datumbaza konekto"
-
-#: ../../mod/install.php:226
-msgid ""
-"In order to install Friendica we need to know how to connect to your "
-"database."
-msgstr "Por instali Friendica, ni bezonas scii kiel konekti al via datumbazo."
-
-#: ../../mod/install.php:227
-msgid ""
-"Please contact your hosting provider or site administrator if you have "
-"questions about these settings."
-msgstr "Bonvolu kontakti vian servilprovizanton aŭ administranton se vi havas demandoj pri ĉi tiaj agordoj."
-
-#: ../../mod/install.php:228
-msgid ""
-"The database you specify below should already exist. If it does not, please "
-"create it before continuing."
-msgstr "La datumbazo nomata malsupren jam ekzistu. Se Äi ne ekzistas, bonvolu unue krei Äin antaÅ­ progresi."
-
-#: ../../mod/install.php:232
-msgid "Database Server Name"
-msgstr "Nomo de datumbaza servilo."
-
-#: ../../mod/install.php:233
-msgid "Database Login Name"
-msgstr "Salutnomo ĉe la datumbazo."
-
-#: ../../mod/install.php:234
-msgid "Database Login Password"
-msgstr "Pasvorto ĉe la datumbazo."
-
-#: ../../mod/install.php:235
-msgid "Database Name"
-msgstr "Nomo de la datumbazo."
-
-#: ../../mod/install.php:236 ../../mod/install.php:275
-msgid "Site administrator email address"
-msgstr "RetpoÅtadreso de la reteja administranto"
-
-#: ../../mod/install.php:236 ../../mod/install.php:275
-msgid ""
-"Your account email address must match this in order to use the web admin "
-"panel."
-msgstr "La repoÅtadreso de via konto bezonas esti la sama por uzi la TTTa administrilo."
-
-#: ../../mod/install.php:240 ../../mod/install.php:278
-msgid "Please select a default timezone for your website"
-msgstr "Bonvolu elekti defaÅ­ltan horzonon por via retejo."
-
-#: ../../mod/install.php:265
-msgid "Site settings"
-msgstr "Retejaj agordoj"
-
-#: ../../mod/install.php:318
-msgid "Could not find a command line version of PHP in the web server PATH."
-msgstr "Komanda linia versio de PHP ne trovita en $PATH de la retservilo."
-
-#: ../../mod/install.php:319
-msgid ""
-"If you don't have a command line version of PHP installed on server, you "
-"will not be able to run background polling via cron. See <a "
-"href='http://friendica.com/node/27'>'Activating scheduled tasks'</a>"
-msgstr "Se vi ne havas komandlinian version de PHP sur la servilo, vi ne eblas plenumi fonan planitan enketon per cron. Bonvolu legi <a href='http://friendica.com/node/27'>'Activating scheduled tasks'</a>"
-
-#: ../../mod/install.php:323
-msgid "PHP executable path"
-msgstr "Vojo de la komanda linia versio de PHP"
-
-#: ../../mod/install.php:323
-msgid ""
-"Enter full path to php executable. You can leave this blank to continue the "
-"installation."
-msgstr "Entajpu la plenan vojon al la php komandodosiero. Vi eblas lasi tion malplena por pluigi la instalado."
-
-#: ../../mod/install.php:328
-msgid "Command line PHP"
-msgstr "komanda linia versio de PHP"
-
-#: ../../mod/install.php:337
-msgid ""
-"The command line version of PHP on your system does not have "
-"\"register_argc_argv\" enabled."
-msgstr "En via komanda linia versio de PHP je via sistemo, \"register_argc_argv\" ne estas aktivita."
-
-#: ../../mod/install.php:338
-msgid "This is required for message delivery to work."
-msgstr "Tio estas bezonata por la livero de mesaÄoj."
-
-#: ../../mod/install.php:340
-msgid "PHP register_argc_argv"
-msgstr "PHP register_argc_argv"
-
-#: ../../mod/install.php:361
-msgid ""
-"Error: the \"openssl_pkey_new\" function on this system is not able to "
-"generate encryption keys"
-msgstr "Eraro: La funkcio \"openssl_pkey_new\" je tia sistemo ne eblas generi ĉifroÅlosilojn."
-
-#: ../../mod/install.php:362
-msgid ""
-"If running under Windows, please see "
-"\"http://www.php.net/manual/en/openssl.installation.php\"."
-msgstr "Se la operaciumo sistemo estas Windows, bonvolu legi: http://www.php.net/manual/en/openssl.installation.php"
-
-#: ../../mod/install.php:364
-msgid "Generate encryption keys"
-msgstr "Generi ĉifroÅlosilojn"
-
-#: ../../mod/install.php:371
-msgid "libCurl PHP module"
-msgstr "PHP modulo libCurl"
-
-#: ../../mod/install.php:372
-msgid "GD graphics PHP module"
-msgstr "PHP modulo GD"
-
-#: ../../mod/install.php:373
-msgid "OpenSSL PHP module"
-msgstr "PHP modulo OpenSSL"
-
-#: ../../mod/install.php:374
-msgid "mysqli PHP module"
-msgstr "PHP modulo mysqli"
-
-#: ../../mod/install.php:375
-msgid "mb_string PHP module"
-msgstr "PHP modulo mb_string"
-
-#: ../../mod/install.php:380 ../../mod/install.php:382
-msgid "Apache mod_rewrite module"
-msgstr "Apache mod_rewrite modulo"
-
-#: ../../mod/install.php:380
-msgid ""
-"Error: Apache webserver mod-rewrite module is required but not installed."
-msgstr "Eraro: La modulo mod_rewrite en la Apache retservilo estas bezonata sed ne instalita."
-
-#: ../../mod/install.php:388
-msgid "Error: libCURL PHP module required but not installed."
-msgstr "Eraro: La modulo libCURL en PHP estas bezonata sed ne instalita."
-
-#: ../../mod/install.php:392
-msgid ""
-"Error: GD graphics PHP module with JPEG support required but not installed."
-msgstr "Eraro: La modulo GD en PHP kun subteno por JPEG estas bezonata sed ne instalita."
-
-#: ../../mod/install.php:396
-msgid "Error: openssl PHP module required but not installed."
-msgstr "Eraro: La modulo OpenSSL en PHP estas bezonata sed ne instalita."
-
-#: ../../mod/install.php:400
-msgid "Error: mysqli PHP module required but not installed."
-msgstr "Eraro: La modulo mysqli en PHP estas bezonata sed ne instalita."
-
-#: ../../mod/install.php:404
-msgid "Error: mb_string PHP module required but not installed."
-msgstr "Eraro: La modulo mb_string en PHP estas bezonata sed ne instalita."
-
-#: ../../mod/install.php:421
-msgid ""
-"The web installer needs to be able to create a file called \".htconfig.php\""
-" in the top folder of your web server and it is unable to do so."
-msgstr "La reta instalilo bezonas skribi dosieron nomata \".htconfig.php\" en la baza dosierujo de la retservilo, sed ne sukcesis."
-
-#: ../../mod/install.php:422
-msgid ""
-"This is most often a permission setting, as the web server may not be able "
-"to write files in your folder - even if you can."
-msgstr "Tio ĉi plej ofte estas agordo rilate al permesoj, ĉar la servilo eble ne povas skribi en via dosierujo, eĉ se vi mem povas skribi."
-
-#: ../../mod/install.php:423
-msgid ""
-"At the end of this procedure, we will give you a text to save in a file "
-"named .htconfig.php in your Friendica top folder."
-msgstr "Post la fino de tiu proceduro, ni donos al vi tekston por konservi en dosiero .htconfig.php en via baza Friendica dosierujo."
-
-#: ../../mod/install.php:424
-msgid ""
-"You can alternatively skip this procedure and perform a manual installation."
-" Please see the file \"INSTALL.txt\" for instructions."
-msgstr "Vi ankaÅ­ povas preterpasi tiun proceduron kaj fari permanan instaladon. Bonvolu legi la dosieron \"INSTALL.txt\" por trovi instrukciojn."
-
-#: ../../mod/install.php:427
-msgid ".htconfig.php is writable"
-msgstr ".htconfig.php estas skribebla."
-
-#: ../../mod/install.php:439
-msgid ""
-"Url rewrite in .htaccess is not working. Check your server configuration."
-msgstr "Url rewrite en .htaccess ne funkcias. Kontrolu la agordojn de la servilo."
-
-#: ../../mod/install.php:441
-msgid "Url rewrite is working"
-msgstr "URL rewrite funkcias."
-
-#: ../../mod/install.php:451
-msgid ""
-"The database configuration file \".htconfig.php\" could not be written. "
-"Please use the enclosed text to create a configuration file in your web "
-"server root."
-msgstr "Ne povis skribi la datumbaza agordoj en la dosiero \".htconfig.php\". Bonvolu uzi la inkluzivan tekston por krei agordan dosieron en la baza dosierujo de la retservilo."
-
-#: ../../mod/install.php:476
-msgid "Errors encountered creating database tables."
-msgstr "Okazis eraroj dum la kreado de tabeloj en la datumbazo."
-
-#: ../../mod/install.php:487
-msgid "<h1>What next</h1>"
-msgstr "<h1>Kio sekvas nun?</h1>"
-
-#: ../../mod/install.php:488
-msgid ""
-"IMPORTANT: You will need to [manually] setup a scheduled task for the "
-"poller."
-msgstr "GRAVA: Vi bezonas [mane] agordi planitan taskon por la Friendica poller."
-
-#: ../../mod/localtime.php:12 ../../include/event.php:11
-#: ../../include/bb2diaspora.php:335
-msgid "l F d, Y \\@ g:i A"
-msgstr "l F d, Y \\@ g:i A"
-
-#: ../../mod/localtime.php:24
-msgid "Time Conversion"
-msgstr "Konverto de tempo"
-
-#: ../../mod/localtime.php:26
-msgid ""
-"Friendika provides this service for sharing events with other networks and "
-"friends in unknown timezones."
-msgstr "Friendica provizas tiun servon por kunhavigi okazojn kun aliaj retoj kaj amikoj en aliaj horzonoj."
-
-#: ../../mod/localtime.php:30
-#, php-format
-msgid "UTC time: %s"
-msgstr "UTC horo: %s"
-
-#: ../../mod/localtime.php:33
-#, php-format
-msgid "Current timezone: %s"
-msgstr "Aktuala horzono: %s"
-
-#: ../../mod/localtime.php:36
-#, php-format
-msgid "Converted localtime: %s"
-msgstr "Konvertita loka horo: %s"
-
-#: ../../mod/localtime.php:41
-msgid "Please select your timezone:"
-msgstr "Bonvolu elekti vian horzonon:"
-
-#: ../../mod/match.php:12
-msgid "Profile Match"
-msgstr "Kongrua profilo"
-
-#: ../../mod/match.php:20
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr "Neniom da kategoriaj vortoj kongruas. Bonvolu aldoni kategoriajn vortojn al via defaÅ­lta profilo."
-
-#: ../../mod/match.php:57
-msgid "is interested in:"
-msgstr "interesiÄas pri:"
-
-#: ../../mod/match.php:58 ../../mod/suggest.php:59
-#: ../../include/contact_widgets.php:9 ../../boot.php:1080
-msgid "Connect"
-msgstr "Konekti"
-
-#: ../../mod/match.php:65 ../../mod/dirfind.php:60
-msgid "No matches"
-msgstr "Nenio estas trovita"
-
-#: ../../mod/lockview.php:39
-msgid "Remote privacy information not available."
-msgstr "Informoj pri fora privateca ne estas disponebla."
-
-#: ../../mod/lockview.php:43
-msgid "Visible to:"
-msgstr "Videbla al:"
-
-#: ../../mod/home.php:26 ../../addon/communityhome/communityhome.php:179
-#, php-format
-msgid "Welcome to %s"
-msgstr "Bonvenon ĉe %s"
-
-#: ../../mod/notifications.php:26
-msgid "Invalid request identifier."
-msgstr "Nevalida peta identigilo."
-
-#: ../../mod/notifications.php:35 ../../mod/notifications.php:161
-#: ../../mod/notifications.php:207
-msgid "Discard"
-msgstr "ForviÅi"
-
-#: ../../mod/notifications.php:51 ../../mod/notifications.php:160
-#: ../../mod/notifications.php:206 ../../mod/contacts.php:316
-#: ../../mod/contacts.php:370
-msgid "Ignore"
-msgstr "Ignori"
-
-#: ../../mod/notifications.php:75
-msgid "System"
-msgstr "Sistemo"
-
-#: ../../mod/notifications.php:80 ../../include/nav.php:113
-msgid "Network"
-msgstr "Reto"
-
-#: ../../mod/notifications.php:85 ../../mod/network.php:300
-msgid "Personal"
-msgstr "Propra"
-
-#: ../../mod/notifications.php:90 ../../view/theme/diabook/theme.php:127
-#: ../../include/nav.php:77 ../../include/nav.php:115
-msgid "Home"
-msgstr "Hejmo"
-
-#: ../../mod/notifications.php:95 ../../include/nav.php:121
-msgid "Introductions"
-msgstr "Prezentoj"
-
-#: ../../mod/notifications.php:100 ../../mod/message.php:105
-#: ../../include/nav.php:128
-msgid "Messages"
-msgstr "MesaÄoj"
-
-#: ../../mod/notifications.php:119
-msgid "Show Ignored Requests"
-msgstr "Montri ignoritajn petojn"
-
-#: ../../mod/notifications.php:119
-msgid "Hide Ignored Requests"
-msgstr "KaÅi ignoritajn petojn"
-
-#: ../../mod/notifications.php:145 ../../mod/notifications.php:191
-msgid "Notification type: "
-msgstr "Tipo de atentigo:"
-
-#: ../../mod/notifications.php:146
-msgid "Friend Suggestion"
-msgstr "Amikosugestoj"
-
-#: ../../mod/notifications.php:148
-#, php-format
-msgid "suggested by %s"
-msgstr "sugestita de %s"
-
-#: ../../mod/notifications.php:153 ../../mod/notifications.php:200
-#: ../../mod/contacts.php:376
-msgid "Hide this contact from others"
-msgstr "KaÅi ĉi tiun kontakton al aliaj"
-
-#: ../../mod/notifications.php:154 ../../mod/notifications.php:201
-msgid "Post a new friend activity"
-msgstr "AfiÅi novan amikecan aktivecon"
-
-#: ../../mod/notifications.php:154 ../../mod/notifications.php:201
-msgid "if applicable"
-msgstr "se aplikebla"
-
-#: ../../mod/notifications.php:157 ../../mod/notifications.php:204
-#: ../../mod/admin.php:661
-msgid "Approve"
-msgstr "Aprobi"
-
-#: ../../mod/notifications.php:177
-msgid "Claims to be known to you: "
-msgstr "Pensas ke vi konas ilin:"
-
-#: ../../mod/notifications.php:177
-msgid "yes"
-msgstr "jes"
-
-#: ../../mod/notifications.php:177
-msgid "no"
-msgstr "ne"
-
-#: ../../mod/notifications.php:184
-msgid "Approve as: "
-msgstr "Aprobi kiel:"
-
-#: ../../mod/notifications.php:185
-msgid "Friend"
-msgstr "Amiko"
-
-#: ../../mod/notifications.php:186
-msgid "Sharer"
-msgstr "Kunhaviganto"
-
-#: ../../mod/notifications.php:186
-msgid "Fan/Admirer"
-msgstr "Fanatikulo/Admiranto"
-
-#: ../../mod/notifications.php:192
-msgid "Friend/Connect Request"
-msgstr "Kontaktpeto"
-
-#: ../../mod/notifications.php:192
-msgid "New Follower"
-msgstr "Nova abonanto"
-
-#: ../../mod/notifications.php:213
-msgid "No introductions."
-msgstr "Neniom da prezentoj"
-
-#: ../../mod/notifications.php:216 ../../include/nav.php:122
-msgid "Notifications"
-msgstr "Atentigoj"
-
-#: ../../mod/notifications.php:253 ../../mod/notifications.php:378
-#: ../../mod/notifications.php:465
-#, php-format
-msgid "%s liked %s's post"
-msgstr "%s Åatis la afiÅon de %s"
-
-#: ../../mod/notifications.php:262 ../../mod/notifications.php:387
-#: ../../mod/notifications.php:474
-#, php-format
-msgid "%s disliked %s's post"
-msgstr "%s malÅatis la afiÅon de %s"
-
-#: ../../mod/notifications.php:276 ../../mod/notifications.php:401
-#: ../../mod/notifications.php:488
-#, php-format
-msgid "%s is now friends with %s"
-msgstr "%s amikiÄis kun %s"
-
-#: ../../mod/notifications.php:283 ../../mod/notifications.php:408
-#, php-format
-msgid "%s created a new post"
-msgstr "%s kreis novan afiÅon"
-
-#: ../../mod/notifications.php:284 ../../mod/notifications.php:409
-#: ../../mod/notifications.php:497
-#, php-format
-msgid "%s commented on %s's post"
-msgstr "%s komentis pri la afiÅo de %s"
-
-#: ../../mod/notifications.php:298
-msgid "No more network notifications."
-msgstr "Ne pli da retaj atentigoj."
-
-#: ../../mod/notifications.php:302
-msgid "Network Notifications"
-msgstr "Retaj Atentigoj"
-
-#: ../../mod/notifications.php:328 ../../mod/notify.php:61
-msgid "No more system notifications."
-msgstr "Ne pli da sistemaj atentigoj."
-
-#: ../../mod/notifications.php:332 ../../mod/notify.php:65
-msgid "System Notifications"
-msgstr "Sistemaj Atentigoj"
-
-#: ../../mod/notifications.php:423
-msgid "No more personal notifications."
-msgstr "Ne pli da personaj atentigoj"
-
-#: ../../mod/notifications.php:427
-msgid "Personal Notifications"
-msgstr "Personaj Atentigoj"
-
-#: ../../mod/notifications.php:504
-msgid "No more home notifications."
-msgstr "Ne pli da hejmrilataj atentigoj."
-
-#: ../../mod/notifications.php:508
-msgid "Home Notifications"
-msgstr "Hejmrilataj atentigoj"
-
-#: ../../mod/contacts.php:83 ../../mod/contacts.php:163
-msgid "Could not access contact record."
-msgstr "Ne eblis atingi kontaktrikordo."
-
-#: ../../mod/contacts.php:97
-msgid "Could not locate selected profile."
-msgstr "Ne trovis elektitan profilon."
-
-#: ../../mod/contacts.php:120
-msgid "Contact updated."
-msgstr "Kontakto estas Äisdatigita."
-
-#: ../../mod/contacts.php:185
-msgid "Contact has been blocked"
-msgstr "Kontakto estas blokita."
-
-#: ../../mod/contacts.php:185
-msgid "Contact has been unblocked"
-msgstr "Kontakto estas malblokita."
-
-#: ../../mod/contacts.php:199
-msgid "Contact has been ignored"
-msgstr "Kontakto estas ignorita."
-
-#: ../../mod/contacts.php:199
-msgid "Contact has been unignored"
-msgstr "Kontakto estas malignorita."
-
-#: ../../mod/contacts.php:215
-msgid "Contact has been archived"
-msgstr "Enarkivigis kontakton"
-
-#: ../../mod/contacts.php:215
-msgid "Contact has been unarchived"
-msgstr "Elarkivigis kontakton"
-
-#: ../../mod/contacts.php:228
-msgid "Contact has been removed."
-msgstr "Kontakto estas forigita."
-
-#: ../../mod/contacts.php:258
-#, php-format
-msgid "You are mutual friends with %s"
-msgstr "Vi estas reciproka amiko de %s"
-
-#: ../../mod/contacts.php:262
-#, php-format
-msgid "You are sharing with %s"
-msgstr "Vi kunhavigas kun %s"
-
-#: ../../mod/contacts.php:267
-#, php-format
-msgid "%s is sharing with you"
-msgstr "%s kunhavigas kun vi"
-
-#: ../../mod/contacts.php:284
-msgid "Private communications are not available for this contact."
-msgstr "Privataj komunikadoj ne disponeblas por ĉi tiu kontakto."
-
-#: ../../mod/contacts.php:287
-msgid "Never"
-msgstr "Neniam"
-
-#: ../../mod/contacts.php:291
-msgid "(Update was successful)"
-msgstr "(Äœisdatigo sukcesis.)"
-
-#: ../../mod/contacts.php:291
-msgid "(Update was not successful)"
-msgstr "(Äœisdatigo malsukcesis.)"
-
-#: ../../mod/contacts.php:293
-msgid "Suggest friends"
-msgstr "Sugesti amikojn"
-
-#: ../../mod/contacts.php:297
-#, php-format
-msgid "Network type: %s"
-msgstr "Reta tipo: %s"
-
-#: ../../mod/contacts.php:300 ../../include/contact_widgets.php:183
-#, php-format
-msgid "%d contact in common"
-msgid_plural "%d contacts in common"
-msgstr[0] "%d komuna kontakto"
-msgstr[1] "%d komunaj kontaktoj"
-
-#: ../../mod/contacts.php:305
-msgid "View all contacts"
-msgstr "Vidi ĉiujn kontaktojn"
-
-#: ../../mod/contacts.php:310 ../../mod/contacts.php:369
-#: ../../mod/admin.php:665
-msgid "Unblock"
-msgstr "Malbloki"
-
-#: ../../mod/contacts.php:310 ../../mod/contacts.php:369
-#: ../../mod/admin.php:664
-msgid "Block"
-msgstr "Bloki"
-
-#: ../../mod/contacts.php:313
-msgid "Toggle Blocked status"
-msgstr "Åœalti/malÅalti Blokitan staton"
-
-#: ../../mod/contacts.php:316 ../../mod/contacts.php:370
-msgid "Unignore"
-msgstr "Malignori"
-
-#: ../../mod/contacts.php:319
-msgid "Toggle Ignored status"
-msgstr "Åœalti/malÅalti Ignoritan staton"
-
-#: ../../mod/contacts.php:323
-msgid "Unarchive"
-msgstr "Elarkivigi"
-
-#: ../../mod/contacts.php:323
-msgid "Archive"
-msgstr "Enarkivigi"
-
-#: ../../mod/contacts.php:326
-msgid "Toggle Archive status"
-msgstr "Åœalti/malÅalti Enarkivigitan staton"
-
-#: ../../mod/contacts.php:329
-msgid "Repair"
-msgstr "Ripari"
-
-#: ../../mod/contacts.php:332
-msgid "Advanced Contact Settings"
-msgstr "Specialaj Kontaktagordoj"
-
-#: ../../mod/contacts.php:338
-msgid "Communications lost with this contact!"
-msgstr "Mi perdis la kommunikadon kun tiu kontakto!"
-
-#: ../../mod/contacts.php:341
-msgid "Contact Editor"
-msgstr "Kontakta redaktilo."
-
-#: ../../mod/contacts.php:344
-msgid "Profile Visibility"
-msgstr "Videbleco de profilo"
-
-#: ../../mod/contacts.php:345
-#, php-format
-msgid ""
-"Please choose the profile you would like to display to %s when viewing your "
-"profile securely."
-msgstr "Bonvolu elekti la profilon kiu vi volas montri al %s aspektinde kiam sekure aspektante vian profilon."
-
-#: ../../mod/contacts.php:346
-msgid "Contact Information / Notes"
-msgstr "Kontaktaj informoj / Notoj"
-
-#: ../../mod/contacts.php:347
-msgid "Edit contact notes"
-msgstr "Redakti kontaktnotojn"
-
-#: ../../mod/contacts.php:352 ../../mod/contacts.php:544
-#: ../../mod/viewconnections.php:62 ../../mod/nogroup.php:40
-#, php-format
-msgid "Visit %s's profile [%s]"
-msgstr "Viziti la profilon de %s [%s]"
-
-#: ../../mod/contacts.php:353
-msgid "Block/Unblock contact"
-msgstr "Bloki/Malbloki kontakton"
-
-#: ../../mod/contacts.php:354
-msgid "Ignore contact"
-msgstr "Ignori kontakton"
-
-#: ../../mod/contacts.php:355
-msgid "Repair URL settings"
-msgstr "Ripari URL agordoj"
-
-#: ../../mod/contacts.php:356
-msgid "View conversations"
-msgstr "Vidi konversaciojn"
-
-#: ../../mod/contacts.php:358
-msgid "Delete contact"
-msgstr "ForviÅi kontakton"
-
-#: ../../mod/contacts.php:362
-msgid "Last update:"
-msgstr "Plej ĵusa Äisdatigo:"
-
-#: ../../mod/contacts.php:364
-msgid "Update public posts"
-msgstr "Äœisdatigi publikajn afiÅojn"
-
-#: ../../mod/contacts.php:366 ../../mod/admin.php:1136
-msgid "Update now"
-msgstr "Äœisdatigi nun"
-
-#: ../../mod/contacts.php:373
-msgid "Currently blocked"
-msgstr "Nuntempe blokata"
-
-#: ../../mod/contacts.php:374
-msgid "Currently ignored"
-msgstr "Nuntempe ignorata"
-
-#: ../../mod/contacts.php:375
-msgid "Currently archived"
-msgstr "Nuntempe enarkivigita"
-
-#: ../../mod/contacts.php:376
-msgid ""
-"Replies/likes to your public posts <strong>may</strong> still be visible"
-msgstr "Rispondoj/Åataĵo al viaj publikaj afiÅoj <strong>eble</strong> plu estos videbla"
-
-#: ../../mod/contacts.php:429
-msgid "Suggestions"
-msgstr "Sugestoj"
-
-#: ../../mod/contacts.php:432
-msgid "Suggest potential friends"
-msgstr "Sugesti amikojn"
-
-#: ../../mod/contacts.php:435 ../../mod/group.php:191
-msgid "All Contacts"
-msgstr "Ĉiuj Kontaktoj"
-
-#: ../../mod/contacts.php:438
-msgid "Show all contacts"
-msgstr "Montri ĉiujn kontaktojn"
-
-#: ../../mod/contacts.php:441
-msgid "Unblocked"
-msgstr "Malblokita"
-
-#: ../../mod/contacts.php:444
-msgid "Only show unblocked contacts"
-msgstr "Nur montri neblokitajn kontaktojn"
-
-#: ../../mod/contacts.php:448
-msgid "Blocked"
-msgstr "Blokita"
-
-#: ../../mod/contacts.php:451
-msgid "Only show blocked contacts"
-msgstr "Nur montri blokitajn kontaktojn"
-
-#: ../../mod/contacts.php:455
-msgid "Ignored"
-msgstr "Ignorita"
-
-#: ../../mod/contacts.php:458
-msgid "Only show ignored contacts"
-msgstr "Nur montri ignoritajn kontaktojn"
-
-#: ../../mod/contacts.php:462
-msgid "Archived"
-msgstr "Enarkivigita"
-
-#: ../../mod/contacts.php:465
-msgid "Only show archived contacts"
-msgstr "Nur montri enarkivigitajn kontaktojn"
-
-#: ../../mod/contacts.php:469
-msgid "Hidden"
-msgstr "KaÅita"
-
-#: ../../mod/contacts.php:472
-msgid "Only show hidden contacts"
-msgstr "Nur montri kaÅitajn kontaktojn"
-
-#: ../../mod/contacts.php:520
-msgid "Mutual Friendship"
-msgstr "Reciproka amikeco"
-
-#: ../../mod/contacts.php:524
-msgid "is a fan of yours"
-msgstr "estas admiranto de vi"
-
-#: ../../mod/contacts.php:528
-msgid "you are a fan of"
-msgstr "vi estas admiranto de"
-
-#: ../../mod/contacts.php:545 ../../mod/nogroup.php:41
-msgid "Edit contact"
-msgstr "Redakti kontakton"
-
-#: ../../mod/contacts.php:566 ../../view/theme/diabook/theme.php:129
-#: ../../include/nav.php:139
-msgid "Contacts"
-msgstr "Kontaktoj"
-
-#: ../../mod/contacts.php:570
-msgid "Search your contacts"
-msgstr "Serĉi viajn kontaktojn"
-
-#: ../../mod/contacts.php:571 ../../mod/directory.php:57
-msgid "Finding: "
-msgstr "Trovata:"
-
-#: ../../mod/contacts.php:572 ../../mod/directory.php:59
-#: ../../include/contact_widgets.php:33
-msgid "Find"
-msgstr "Trovi"
-
-#: ../../mod/lostpass.php:16
-msgid "No valid account found."
-msgstr "Ne trovis validan konton."
-
-#: ../../mod/lostpass.php:32
-msgid "Password reset request issued. Check your email."
-msgstr "Eldonis riparadon de pasvorto. Legu vian retpoÅton."
-
-#: ../../mod/lostpass.php:43
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "Pasvorta riparado petita je %s"
-
-#: ../../mod/lostpass.php:45 ../../mod/lostpass.php:107
-#: ../../mod/register.php:90 ../../mod/register.php:144
-#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:752
-#: ../../addon/facebook/facebook.php:700
-#: ../../addon/facebook/facebook.php:1190
-#: ../../addon/public_server/public_server.php:62
-#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2890
-#: ../../boot.php:730
-msgid "Administrator"
-msgstr "Administranto"
-
-#: ../../mod/lostpass.php:65
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "Ne povis konfirmi la peton. (Eble vi sendis Äin antaÅ­.) Pasvorta riparado malsukcesis."
-
-#: ../../mod/lostpass.php:83 ../../boot.php:862
-msgid "Password Reset"
-msgstr "Pasvorta riparado"
-
-#: ../../mod/lostpass.php:84
-msgid "Your password has been reset as requested."
-msgstr "Via pasvorto estis riparita laÅ­ via peto."
-
-#: ../../mod/lostpass.php:85
-msgid "Your new password is"
-msgstr "Via nova pasvorto estas"
-
-#: ../../mod/lostpass.php:86
-msgid "Save or copy your new password - and then"
-msgstr "Memorigi vian novan pasvorton - kaj poste"
-
-#: ../../mod/lostpass.php:87
-msgid "click here to login"
-msgstr "klaku ĉi tie por ensaluti"
-
-#: ../../mod/lostpass.php:88
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Vi povas Åangi vian pasvorton sur la paÄo <em>agordoj</em> kiam vi sukcese ensalutis."
-
-#: ../../mod/lostpass.php:119
-msgid "Forgot your Password?"
-msgstr "Ĉu vi forgesis vian pasvorton?"
-
-#: ../../mod/lostpass.php:120
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Entajpu vian retpoÅtadreson kaj sendu por pasvorta riparado. Poste, bonvolu legi vian retpoÅton por trovi pliajn instrukciojn."
-
-#: ../../mod/lostpass.php:121
-msgid "Nickname or Email: "
-msgstr "Salutnomo aÅ­ retpoÅtadreso: "
-
-#: ../../mod/lostpass.php:122
-msgid "Reset"
-msgstr "Repari"
-
-#: ../../mod/settings.php:50 ../../include/nav.php:137
-msgid "Account settings"
-msgstr "Konto"
-
-#: ../../mod/settings.php:55
-msgid "Display settings"
-msgstr "Ekrano"
-
-#: ../../mod/settings.php:61
-msgid "Connector settings"
-msgstr "Konektiloj"
-
-#: ../../mod/settings.php:66
-msgid "Plugin settings"
-msgstr "Kromprogramoj"
-
-#: ../../mod/settings.php:71
-msgid "Connected apps"
-msgstr "Konektitaj programoj"
-
-#: ../../mod/settings.php:76
-msgid "Export personal data"
-msgstr "Eksporto"
-
-#: ../../mod/settings.php:81
-msgid "Remove account"
-msgstr "Forigi konton"
-
-#: ../../mod/settings.php:89 ../../mod/admin.php:751 ../../mod/admin.php:956
-#: ../../addon/dav/layout.fnk.php:116 ../../addon/mathjax/mathjax.php:36
-#: ../../view/theme/diabook/theme.php:643
-#: ../../view/theme/diabook/theme.php:773 ../../include/nav.php:137
-msgid "Settings"
-msgstr "Agordoj"
-
-#: ../../mod/settings.php:133
-msgid "Missing some important data!"
-msgstr "Mankas importantaj datumoj!"
-
-#: ../../mod/settings.php:136 ../../mod/settings.php:581
-msgid "Update"
-msgstr "Äœisdatigi"
-
-#: ../../mod/settings.php:241
-msgid "Failed to connect with email account using the settings provided."
-msgstr "Ne sukcesis konekti al retpoÅtkonto kun la provizitaj agordoj."
-
-#: ../../mod/settings.php:246
-msgid "Email settings updated."
-msgstr "RetpoÅtagordoj Äisdatigita"
-
-#: ../../mod/settings.php:305
-msgid "Passwords do not match. Password unchanged."
-msgstr "La pasvortoj ne estas egala. Pasvorto ne ÅanÄita."
-
-#: ../../mod/settings.php:310
-msgid "Empty passwords are not allowed. Password unchanged."
-msgstr "Malplenaj pasvortoj ne estas permesita. Pasvorto ne ÅanÄita."
-
-#: ../../mod/settings.php:321
-msgid "Password changed."
-msgstr "Pasvorto ÅanÄita."
-
-#: ../../mod/settings.php:323
-msgid "Password update failed. Please try again."
-msgstr "Äœisdatigo de pasvorto malsukcesis. Bonvolu provi refoje."
-
-#: ../../mod/settings.php:386
-msgid " Please use a shorter name."
-msgstr " Bonvolu uzi pli mallongan nomon."
-
-#: ../../mod/settings.php:388
-msgid " Name too short."
-msgstr " Nomo estas tro mallonga."
-
-#: ../../mod/settings.php:394
-msgid " Not valid email."
-msgstr " RepoÅtadreso ne validas."
-
-#: ../../mod/settings.php:396
-msgid " Cannot change to that email."
-msgstr " Ne povas ÅanÄi al tio retpoÅtadreso."
-
-#: ../../mod/settings.php:450
-msgid "Private forum has no privacy permissions. Using default privacy group."
-msgstr "Privata forumo ne havas privatecajn agordojn. DefaÅ­lta privateca grupo estas uzata."
-
-#: ../../mod/settings.php:454
-msgid "Private forum has no privacy permissions and no default privacy group."
-msgstr "Privata forumo havas nek privatecajn agordojn nek defaÅ­ltan privatecan grupon."
-
-#: ../../mod/settings.php:484 ../../addon/facebook/facebook.php:493
-#: ../../addon/impressum/impressum.php:77
-#: ../../addon/openstreetmap/openstreetmap.php:80
-#: ../../addon/mathjax/mathjax.php:66 ../../addon/piwik/piwik.php:105
-#: ../../addon/twitter/twitter.php:382
-msgid "Settings updated."
-msgstr "Agordoj Äisdatigita."
-
-#: ../../mod/settings.php:554 ../../mod/settings.php:580
-#: ../../mod/settings.php:616
-msgid "Add application"
-msgstr "Aldoni programon"
-
-#: ../../mod/settings.php:558 ../../mod/settings.php:584
-#: ../../addon/statusnet/statusnet.php:561
-msgid "Consumer Key"
-msgstr "Åœlosilo de kliento"
-
-#: ../../mod/settings.php:559 ../../mod/settings.php:585
-#: ../../addon/statusnet/statusnet.php:560
-msgid "Consumer Secret"
-msgstr "Sekreto de kliento"
-
-#: ../../mod/settings.php:560 ../../mod/settings.php:586
-msgid "Redirect"
-msgstr "Alidirekto"
-
-#: ../../mod/settings.php:561 ../../mod/settings.php:587
-msgid "Icon url"
-msgstr "Piktograma adreso"
-
-#: ../../mod/settings.php:572
-msgid "You can't edit this application."
-msgstr "Ĉi tio programo ne estas redaktebla."
-
-#: ../../mod/settings.php:615
-msgid "Connected Apps"
-msgstr "Konektitaj Programoj"
-
-#: ../../mod/settings.php:619
-msgid "Client key starts with"
-msgstr "Åœlosilo de kliento komencas kun"
-
-#: ../../mod/settings.php:620
-msgid "No name"
-msgstr "Neniu nomo"
-
-#: ../../mod/settings.php:621
-msgid "Remove authorization"
-msgstr "ForviÅi rajtigon"
-
-#: ../../mod/settings.php:632
-msgid "No Plugin settings configured"
-msgstr "Neniom da kromprogramoagordoj farita"
-
-#: ../../mod/settings.php:640 ../../addon/widgets/widgets.php:123
-msgid "Plugin Settings"
-msgstr "Kromprogramoagordoj"
-
-#: ../../mod/settings.php:652 ../../mod/settings.php:653
-#, php-format
-msgid "Built-in support for %s connectivity is %s"
-msgstr "Integrita subteno por %s koneto estas %s"
-
-#: ../../mod/settings.php:652 ../../mod/settings.php:653
-msgid "enabled"
-msgstr "Åaltita"
-
-#: ../../mod/settings.php:652 ../../mod/settings.php:653
-msgid "disabled"
-msgstr "malÅaltita"
-
-#: ../../mod/settings.php:653
-msgid "StatusNet"
-msgstr "StatusNet"
-
-#: ../../mod/settings.php:685
-msgid "Email access is disabled on this site."
-msgstr "RetpoÅta atingo ne disponeblas ĉi tie."
-
-#: ../../mod/settings.php:691
-msgid "Connector Settings"
-msgstr "Konektiloagordoj"
-
-#: ../../mod/settings.php:696
-msgid "Email/Mailbox Setup"
-msgstr "Agordoj pri RetpoÅto"
-
-#: ../../mod/settings.php:697
-msgid ""
-"If you wish to communicate with email contacts using this service "
-"(optional), please specify how to connect to your mailbox."
-msgstr "Se vi volas uzi ĉi tiun servon por komuniki per retpoÅto (nedeviga), bonvolu specifi kiel konekti al vian retpoÅtkonton."
-
-#: ../../mod/settings.php:698
-msgid "Last successful email check:"
-msgstr "Plej ĵusa sukcesa kontrolo de poÅto:"
-
-#: ../../mod/settings.php:700
-msgid "IMAP server name:"
-msgstr "Nomo de IMAP servilo:"
-
-#: ../../mod/settings.php:701
-msgid "IMAP port:"
-msgstr "Numero de IMAP pordo:"
-
-#: ../../mod/settings.php:702
-msgid "Security:"
-msgstr "Sekureco:"
-
-#: ../../mod/settings.php:702 ../../mod/settings.php:707
-msgid "None"
-msgstr "Nenio"
-
-#: ../../mod/settings.php:703
-msgid "Email login name:"
-msgstr "RetpoÅta salutnomo:"
-
-#: ../../mod/settings.php:704
-msgid "Email password:"
-msgstr "RetpoÅta pasvorto:"
-
-#: ../../mod/settings.php:705
-msgid "Reply-to address:"
-msgstr "Responda adreso (Reply-to):"
-
-#: ../../mod/settings.php:706
-msgid "Send public posts to all email contacts:"
-msgstr "Sendu publikajn afiÅojn al ĉiuj retpoÅtkontaktoj:"
-
-#: ../../mod/settings.php:707
-msgid "Action after import:"
-msgstr "Ago post la importado:"
-
-#: ../../mod/settings.php:707
-msgid "Mark as seen"
-msgstr "Marki kiel legita"
-
-#: ../../mod/settings.php:707
-msgid "Move to folder"
-msgstr "Movi al dosierujo"
-
-#: ../../mod/settings.php:708
-msgid "Move to folder:"
-msgstr "Movi al dosierujo:"
-
-#: ../../mod/settings.php:768
-msgid "Display Settings"
-msgstr "Ekranagordoj"
-
-#: ../../mod/settings.php:774
-msgid "Display Theme:"
-msgstr "Vidiga etoso:"
-
-#: ../../mod/settings.php:775
-msgid "Update browser every xx seconds"
-msgstr "Ĝisdatigu retesplorilon ĉiu xxx sekundoj"
-
-#: ../../mod/settings.php:775
-msgid "Minimum of 10 seconds, no maximum"
-msgstr "Minimume 10 sekundoj, sen maksimumo"
-
-#: ../../mod/settings.php:776
-msgid "Number of items to display on the network page:"
-msgstr "Kvanto da elementoj kiuj estos montrata ĉe la reto paÄo."
-
-#: ../../mod/settings.php:776
-msgid "Maximum of 100 items"
-msgstr "Maksimume 100 eroj"
-
-#: ../../mod/settings.php:777
-msgid "Don't show emoticons"
-msgstr "Ne montru ridetulojn"
-
-#: ../../mod/settings.php:848
-msgid "Normal Account Page"
-msgstr "Normala KontopaÄo"
-
-#: ../../mod/settings.php:849
-msgid "This account is a normal personal profile"
-msgstr "Tiu konto estas normala persona profilo"
-
-#: ../../mod/settings.php:852
-msgid "Soapbox Page"
-msgstr "Soapbox PaÄo"
-
-#: ../../mod/settings.php:853
-msgid "Automatically approve all connection/friend requests as read-only fans"
-msgstr "Aŭtomate konfirmi ĉiujn kontaktpetojn kiel nurlegaj admirantoj"
-
-#: ../../mod/settings.php:856
-msgid "Community Forum/Celebrity Account"
-msgstr "Komunuma Forumo/Eminentula Konto"
-
-#: ../../mod/settings.php:857
-msgid ""
-"Automatically approve all connection/friend requests as read-write fans"
-msgstr "Aŭtomate konfirmi ĉiujn kontaktpetojn kiel admirantoj kapable legi kaj skribi"
-
-#: ../../mod/settings.php:860
-msgid "Automatic Friend Page"
-msgstr "AÅ­tomata Amiko PaÄo"
-
-#: ../../mod/settings.php:861
-msgid "Automatically approve all connection/friend requests as friends"
-msgstr "Aŭtomate konfirmi ĉiujn kontaktpetojn kiel amikoj"
-
-#: ../../mod/settings.php:864
-msgid "Private Forum [Experimental]"
-msgstr "Privata Forumo [eksperimenta]"
-
-#: ../../mod/settings.php:865
-msgid "Private forum - approved members only"
-msgstr "Privata forumo - nur por aprobitaj membroj"
-
-#: ../../mod/settings.php:877
-msgid "OpenID:"
-msgstr "OpenID:"
-
-#: ../../mod/settings.php:877
-msgid "(Optional) Allow this OpenID to login to this account."
-msgstr "(Nedeviga) Permesi atingon al la konton al ĉi tio OpenID."
-
-#: ../../mod/settings.php:887
-msgid "Publish your default profile in your local site directory?"
-msgstr "Publikigi vian defaÅ­ltan profilon en la loka reteja katalogo?"
-
-#: ../../mod/settings.php:893
-msgid "Publish your default profile in the global social directory?"
-msgstr "Publikigi vian defaÅ­ltan profilon en la tutmonda interkona katalogo?"
-
-#: ../../mod/settings.php:901
-msgid "Hide your contact/friend list from viewers of your default profile?"
-msgstr "KaÅi vian liston de kontaktoj/amiko al spektantoj de via defaÅ­lta profilo?"
-
-#: ../../mod/settings.php:905
-msgid "Hide your profile details from unknown viewers?"
-msgstr "KaÅi viajn profilajn detalojn al nekonataj spektantoj?"
-
-#: ../../mod/settings.php:910
-msgid "Allow friends to post to your profile page?"
-msgstr "Ĉu amikoj povu afiÅi al via profilo?"
-
-#: ../../mod/settings.php:916
-msgid "Allow friends to tag your posts?"
-msgstr "Ĉu amikoj povu aldoni markojn al viaj afiÅoj?"
-
-#: ../../mod/settings.php:922
-msgid "Allow us to suggest you as a potential friend to new members?"
-msgstr "Ĉu ni povu sugesti vin kiel amiko al novaj membroj?"
-
-#: ../../mod/settings.php:928
-msgid "Permit unknown people to send you private mail?"
-msgstr "Permesigi nekonatulojn sendi retpoÅton al vi?"
-
-#: ../../mod/settings.php:936
-msgid "Profile is <strong>not published</strong>."
-msgstr "Profilo <strong>ne estas publika</strong>."
-
-#: ../../mod/settings.php:939 ../../mod/profile_photo.php:213
-msgid "or"
-msgstr "aÅ­"
-
-#: ../../mod/settings.php:944
-msgid "Your Identity Address is"
-msgstr "Via identeca adreso estas"
-
-#: ../../mod/settings.php:955
-msgid "Automatically expire posts after this many days:"
-msgstr "Automatike senvalidigi afiÅojn post tiom da tagoj:"
-
-#: ../../mod/settings.php:955
-msgid "If empty, posts will not expire. Expired posts will be deleted"
-msgstr "Se malplena, afiÅoj neniam senvalidiÄos. Senvalidigitajn afiÅon estos forviÅata"
-
-#: ../../mod/settings.php:956
-msgid "Advanced expiration settings"
-msgstr "Detalaj agordoj rilate al senvalidiÄo"
-
-#: ../../mod/settings.php:957
-msgid "Advanced Expiration"
-msgstr "Detala senvalidiÄo"
-
-#: ../../mod/settings.php:958
-msgid "Expire posts:"
-msgstr "Senvalidigi afiÅojn:"
-
-#: ../../mod/settings.php:959
-msgid "Expire personal notes:"
-msgstr "Senvalidigi personajn notojn:"
-
-#: ../../mod/settings.php:960
-msgid "Expire starred posts:"
-msgstr "Senvalidigi steligitajn afiÅojn:"
-
-#: ../../mod/settings.php:961
-msgid "Expire photos:"
-msgstr "Senvalidigi bildojn:"
-
-#: ../../mod/settings.php:962
-msgid "Only expire posts by others:"
-msgstr "Nur senvalidigi afiÅojn de aliaj: "
-
-#: ../../mod/settings.php:969
-msgid "Account Settings"
-msgstr "Kontoagordoj"
-
-#: ../../mod/settings.php:977
-msgid "Password Settings"
-msgstr "Agordoj pri Pasvorto"
-
-#: ../../mod/settings.php:978
-msgid "New Password:"
-msgstr "Nova pasvorto:"
-
-#: ../../mod/settings.php:979
-msgid "Confirm:"
-msgstr "Konfirmi:"
-
-#: ../../mod/settings.php:979
-msgid "Leave password fields blank unless changing"
-msgstr "Lasu pasvortkampojn malplenaj se vi ne ÅanÄas la pasvorton."
-
-#: ../../mod/settings.php:983
-msgid "Basic Settings"
-msgstr "Bazaj Agordoj"
-
-#: ../../mod/settings.php:984 ../../include/profile_advanced.php:15
-msgid "Full Name:"
-msgstr "Plena Nomo:"
-
-#: ../../mod/settings.php:985
-msgid "Email Address:"
-msgstr "RetpoÅtadreso:"
-
-#: ../../mod/settings.php:986
-msgid "Your Timezone:"
-msgstr "Via Horzono:"
-
-#: ../../mod/settings.php:987
-msgid "Default Post Location:"
-msgstr "DefaÅ­lta Loko por AfiÅoj:"
-
-#: ../../mod/settings.php:988
-msgid "Use Browser Location:"
-msgstr "Uzu Lokon laÅ­ Retesplorilo:"
-
-#: ../../mod/settings.php:991
-msgid "Security and Privacy Settings"
-msgstr "Agordoj pri Sekureco kaj Privateco"
-
-#: ../../mod/settings.php:993
-msgid "Maximum Friend Requests/Day:"
-msgstr "Taga maksimumo da kontaktpetoj:"
-
-#: ../../mod/settings.php:993 ../../mod/settings.php:1012
-msgid "(to prevent spam abuse)"
-msgstr "(por malhelpi spamaĵojn)"
-
-#: ../../mod/settings.php:994
-msgid "Default Post Permissions"
-msgstr "DefaÅ­ltaj permesoj por afiÅoj"
-
-#: ../../mod/settings.php:995
-msgid "(click to open/close)"
-msgstr "(klaku por malfermi/fermi)"
-
-#: ../../mod/settings.php:1012
-msgid "Maximum private messages per day from unknown people:"
-msgstr "Taga maksimumo da privataj mesaÄoj."
-
-#: ../../mod/settings.php:1015
-msgid "Notification Settings"
-msgstr "Agordoj pri Atentigoj"
-
-#: ../../mod/settings.php:1016
-msgid "By default post a status message when:"
-msgstr "DefaÅ­lte afiÅi statmesaÄon okaze de:"
-
-#: ../../mod/settings.php:1017
-msgid "accepting a friend request"
-msgstr "akcepti kontaktpeton"
-
-#: ../../mod/settings.php:1018
-msgid "joining a forum/community"
-msgstr "aliÄi forumon/komunumon"
-
-#: ../../mod/settings.php:1019
-msgid "making an <em>interesting</em> profile change"
-msgstr "fari <em>interesan</em> profilÅanÄon"
-
-#: ../../mod/settings.php:1020
-msgid "Send a notification email when:"
-msgstr "Sendu atentiga repoÅton se:"
-
-#: ../../mod/settings.php:1021
-msgid "You receive an introduction"
-msgstr "Vi ricevas inviton"
-
-#: ../../mod/settings.php:1022
-msgid "Your introductions are confirmed"
-msgstr "Viaj prezentoj estas konfirmata."
-
-#: ../../mod/settings.php:1023
-msgid "Someone writes on your profile wall"
-msgstr "Iu skribas je via profila muro."
-
-#: ../../mod/settings.php:1024
-msgid "Someone writes a followup comment"
-msgstr "Iu skribas sekvan komenton"
-
-#: ../../mod/settings.php:1025
-msgid "You receive a private message"
-msgstr "Vi ricevas privatan mesaÄon."
-
-#: ../../mod/settings.php:1026
-msgid "You receive a friend suggestion"
-msgstr "Vi ricevas amikosugeston"
-
-#: ../../mod/settings.php:1027
-msgid "You are tagged in a post"
-msgstr "Vi estas markita en afiÅon"
-
-#: ../../mod/settings.php:1030
-msgid "Advanced Account/Page Type Settings"
-msgstr "Detalaj Agordoj pri Tipo de Konto/PaÄo."
-
-#: ../../mod/settings.php:1031
-msgid "Change the behaviour of this account for special situations"
-msgstr "Agordi la teniÄon de la konto en specialaj situacioj"
-
-#: ../../mod/manage.php:90
-msgid "Manage Identities and/or Pages"
-msgstr "Administri identecojn kaj/aÅ­ paÄojn."
-
-#: ../../mod/manage.php:93
-msgid ""
-"Toggle between different identities or community/group pages which share "
-"your account details or which you have been granted \"manage\" permissions"
-msgstr "Åœalti inter aliaj identecojn aj komunumaj/grupaj paÄoj kiuj kunhavas viajn kontajn detalojn au por kiuj vi havas \"administranto\" permesojn."
-
-#: ../../mod/manage.php:95
-msgid "Select an identity to manage: "
-msgstr "Elektu identencon por administrado:"
-
-#: ../../mod/network.php:97
-msgid "Search Results For:"
-msgstr "Rezultoj de la serĉado pri:"
-
-#: ../../mod/network.php:137 ../../mod/search.php:16
-msgid "Remove term"
-msgstr "ForviÅu terminon"
-
-#: ../../mod/network.php:146 ../../mod/search.php:13
-msgid "Saved Searches"
-msgstr "Konservitaj Serĉadoj"
-
-#: ../../mod/network.php:147 ../../include/group.php:244
-msgid "add"
-msgstr "aldoni"
-
-#: ../../mod/network.php:287
-msgid "Commented Order"
-msgstr "Komenta Ordo"
-
-#: ../../mod/network.php:290
-msgid "Sort by Comment Date"
-msgstr "Ordigi laÅ­ Dato de Komento"
-
-#: ../../mod/network.php:293
-msgid "Posted Order"
-msgstr "AfiÅita Ordo"
-
-#: ../../mod/network.php:296
-msgid "Sort by Post Date"
-msgstr "Ordigi laÅ­ Dato de AfiÅado"
-
-#: ../../mod/network.php:303
-msgid "Posts that mention or involve you"
-msgstr "AfiÅoj menciantaj vin aÅ­ pri vi"
-
-#: ../../mod/network.php:306
-msgid "New"
-msgstr "Nova"
-
-#: ../../mod/network.php:309
-msgid "Activity Stream - by date"
-msgstr "Fluo de Aktiveco - laÅ­ dato"
-
-#: ../../mod/network.php:312
-msgid "Starred"
-msgstr "Steligita"
-
-#: ../../mod/network.php:315
-msgid "Favourite Posts"
-msgstr "Favorigitaj AfiÅoj"
-
-#: ../../mod/network.php:318
-msgid "Shared Links"
-msgstr "Kunhavigitaj Ligiloj"
-
-#: ../../mod/network.php:321
-msgid "Interesting Links"
-msgstr "Interesaj Ligiloj"
-
-#: ../../mod/network.php:388
-#, php-format
-msgid "Warning: This group contains %s member from an insecure network."
-msgid_plural ""
-"Warning: This group contains %s members from an insecure network."
-msgstr[0] "Averto: La grupo enhavas %s membron el nesekuraj retejoj."
-msgstr[1] "Averto: La grupo enhavas %s membrojn el nesekuraj retejoj."
-
-#: ../../mod/network.php:391
-msgid "Private messages to this group are at risk of public disclosure."
-msgstr "La privateco de privataj mesaÄoj al ĉi tiu grupo ne ĉiam estas garantita."
-
-#: ../../mod/network.php:436
-msgid "No such group"
-msgstr "Grupo ne estas trovita"
-
-#: ../../mod/network.php:447
-msgid "Group is empty"
-msgstr "Grupo estas malplena"
-
-#: ../../mod/network.php:451
-msgid "Group: "
-msgstr "Grupo:"
-
-#: ../../mod/network.php:461
-msgid "Contact: "
-msgstr "Kontakto:"
-
-#: ../../mod/network.php:463
-msgid "Private messages to this person are at risk of public disclosure."
-msgstr "La privateco de privataj mesaÄoj al ĉi tiu persono ne ĉiam estas garantita."
-
-#: ../../mod/network.php:468
-msgid "Invalid contact."
-msgstr "Nevalida kontakto."
-
-#: ../../mod/notes.php:44 ../../boot.php:1565
-msgid "Personal Notes"
-msgstr "Personaj Notoj"
-
-#: ../../mod/notes.php:63 ../../mod/filer.php:30
-#: ../../addon/facebook/facebook.php:768
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:187
-#: ../../addon/dav/layout.fnk.php:384 ../../include/text.php:652
-msgid "Save"
-msgstr "Konservi"
-
-#: ../../mod/wallmessage.php:42 ../../mod/wallmessage.php:112
-#, php-format
-msgid "Number of daily wall messages for %s exceeded. Message failed."
-msgstr "Number of daily wall messages for %s exceeded. MessaÄo malsukcesis."
-
-#: ../../mod/wallmessage.php:56 ../../mod/message.php:66
-msgid "No recipient selected."
-msgstr "Neniom da ricevontoj."
-
-#: ../../mod/wallmessage.php:59
-msgid "Unable to check your home location."
-msgstr "Ne eblas kontroli vian hejmlokon."
-
-#: ../../mod/wallmessage.php:62 ../../mod/message.php:73
-msgid "Message could not be sent."
-msgstr "Ne povas sendi la mesaÄon."
-
-#: ../../mod/wallmessage.php:65 ../../mod/message.php:76
-msgid "Message collection failure."
-msgstr "Malsukcese provis kolekti mesaÄojn."
-
-#: ../../mod/wallmessage.php:68 ../../mod/message.php:79
-msgid "Message sent."
-msgstr "MesaÄo estas sendita."
-
-#: ../../mod/wallmessage.php:86 ../../mod/wallmessage.php:95
-msgid "No recipient."
-msgstr "Neniom da ricevontoj."
-
-#: ../../mod/wallmessage.php:124 ../../mod/message.php:172
-#: ../../include/conversation.php:947
-msgid "Please enter a link URL:"
-msgstr "Bonvolu entajpu adreson de ligilo:"
-
-#: ../../mod/wallmessage.php:131 ../../mod/message.php:200
-msgid "Send Private Message"
-msgstr "Sendi Privatan MesaÄon"
-
-#: ../../mod/wallmessage.php:132
-#, php-format
-msgid ""
-"If you wish for %s to respond, please check that the privacy settings on "
-"your site allow private mail from unknown senders."
-msgstr "Se vi deziras ke %s respondu, bonvolu kontroli ke la privatecaj agordoj je via retejo permesas privatajn mesaÄojn de nekonataj sendantoj."
-
-#: ../../mod/wallmessage.php:133 ../../mod/message.php:201
-#: ../../mod/message.php:399
-msgid "To:"
-msgstr "Al:"
-
-#: ../../mod/wallmessage.php:134 ../../mod/message.php:206
-#: ../../mod/message.php:401
-msgid "Subject:"
-msgstr "Temo:"
-
-#: ../../mod/wallmessage.php:140 ../../mod/message.php:210
-#: ../../mod/message.php:404 ../../mod/invite.php:113
-msgid "Your message:"
-msgstr "Via mesaÄo:"
-
-#: ../../mod/newmember.php:6
-msgid "Welcome to Friendica"
-msgstr "Bonvenon ĉe Friendica"
-
-#: ../../mod/newmember.php:8
-msgid "New Member Checklist"
-msgstr "Kontrololisto por Novaj Membroj"
-
-#: ../../mod/newmember.php:12
-msgid ""
-"We would like to offer some tips and links to help make your experience "
-"enjoyable. Click any item to visit the relevant page. A link to this page "
-"will be visible from your home page for two weeks after your initial "
-"registration and then will quietly disappear."
-msgstr "Lasu nin oferi al vi kelkajn konsolojn kaj ligilojn por plifaciligi vian komencon. Klaku iun elementon por viziti la rilatan paÄon. Ligilo al ĉi tiu paÄo videblos en via hejmpaÄo dum du semajnojn post via komenca membriÄo. Post du semajnoj, la ligilo silente malaperos. "
-
-#: ../../mod/newmember.php:16
-msgid ""
-"On your <em>Quick Start</em> page - find a brief introduction to your "
-"profile and network tabs, connect to Facebook, make some new connections, "
-"and find some groups to join."
-msgstr "Je via <em>Rapida Starto</em> paÄo - trovu mallongan enigon pri via profilo kaj la reto folioj, konektu al Facebook, faru novajn konektojn kaj trovu aliÄindajn grupojn."
-
-#: ../../mod/newmember.php:18
-msgid ""
-"On your <em>Settings</em> page - change your initial password. Also make a "
-"note of your Identity Address. This looks just like an email address - and "
-"will be useful in making friends on the free social web."
-msgstr "Bonvolu ÅanÄi vian pasvorton ĉe <em>Agordoj</em>. Krome, memorigu vian identadreson. Äœi aspektas kiel retpoÅtadreso kaj estas bezonata por konekti al novaj amikon en la libera interkona reto."
-
-#: ../../mod/newmember.php:20
-msgid ""
-"Review the other settings, particularly the privacy settings. An unpublished"
-" directory listing is like having an unlisted phone number. In general, you "
-"should probably publish your listing - unless all of your friends and "
-"potential friends know exactly how to find you."
-msgstr "Kontrolu la aliajn agordojn, precipe la privatecajn agordojn. Nepublikigita profilo similas al havi telefonnumberon ne registrata en iu telefonlibro. Äœenerale vi eble volas publikigi vian profilon. Alie, viaj amikoj kaj estontaj amikoj bezonas scii kiel rekte trovi vin."
-
-#: ../../mod/newmember.php:22
-msgid ""
-"Upload a profile photo if you have not done so already. Studies have shown "
-"that people with real photos of themselves are ten times more likely to make"
-" friends than people who do not."
-msgstr "EnÅuti profilbildon se vi ankoraÅ­ ne havas Äin. LaÅ­ studoj, homoj kun realaj biloj de si mem trovas novajn amikon duope pli probable ol homoj sen reala bildo."
-
-#: ../../mod/newmember.php:25
-msgid ""
-"Authorise the Facebook Connector if you currently have a Facebook account "
-"and we will (optionally) import all your Facebook friends and conversations."
-msgstr "Rajtigu la Facebook Konektilon se vi nuntempe havas Facebook konton, kaj ni (nedeviga) enportu viajn Facebook amikojn kaj konversaciojn."
-
-#: ../../mod/newmember.php:27
-msgid ""
-"<em>If</em> this is your own personal server, installing the Facebook addon "
-"may ease your transition to the free social web."
-msgstr "<em>Se</tm> ĉi tiu estas via propra TTT servilo, instali la Facebook kromprogramon eble plifaciligos la transpason al la libera interkona reto."
-
-#: ../../mod/newmember.php:32
-msgid ""
-"Enter your email access information on your Connector Settings page if you "
-"wish to import and interact with friends or mailing lists from your email "
-"INBOX"
-msgstr "Entajpu la akreditaĵojn por via retpoÅtkonto en la konektilagordoj se vi volas importi aÅ­ interagi kun amikoj aÅ­ dissendlistoj pere de via retkesto."
-
-#: ../../mod/newmember.php:34
-msgid ""
-"Edit your <strong>default</strong> profile to your liking. Review the "
-"settings for hiding your list of friends and hiding the profile from unknown"
-" visitors."
-msgstr "Redakti viajn <strong>defaÅ­ltan</strong> profilon kiel vi Åatas Äin. Kontrolu la agordojn por kaÅi vian kontaktliston aÅ­ kaÅi vian profilon al nekonataj vizitantoj."
-
-#: ../../mod/newmember.php:36
-msgid ""
-"Set some public keywords for your default profile which describe your "
-"interests. We may be able to find other people with similar interests and "
-"suggest friendships."
-msgstr "Aldonu publikajn Ålosilvortojn al via defaÅ­lta profilo, kiuj priskribas viajn interesojn. Ni eble povas trovi aliajn uzantojn kun similaj interesoj kaj sugesti amikojn."
-
-#: ../../mod/newmember.php:38
-msgid ""
-"Your Contacts page is your gateway to managing friendships and connecting "
-"with friends on other networks. Typically you enter their address or site "
-"URL in the <em>Add New Contact</em> dialog."
-msgstr "Via kontaktpaÄo estas via portalo por administri amikojn kaj konekti kun amikoj en aliaj retoj. Vi kutime entajpas iliajn adreson aÅ­ URL adreso en la <em>Aldonu Novan Kontakton</em> dialogon."
-
-#: ../../mod/newmember.php:40
-msgid ""
-"The Directory page lets you find other people in this network or other "
-"federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on "
-"their profile page. Provide your own Identity Address if requested."
-msgstr "Ĉe la Katalogo vi povas trovi aliajn homojn en ĉi tiu retejo, au en aliaj federaciaj retejoj. Elrigardi al <em>Konekti</em> aÅ­ <em>Sekvi</em> ligiloj ĉe iliaj profilo. Donu vian propran Identecan Adreson se la retejo demandas Äin."
-
-#: ../../mod/newmember.php:42
-msgid ""
-"On the side panel of the Contacts page are several tools to find new "
-"friends. We can match people by interest, look up people by name or "
-"interest, and provide suggestions based on network relationships. On a brand"
-" new site, friend suggestions will usually begin to be populated within 24 "
-"hours."
-msgstr "En la flanka strio de la Kontaktoj paÄo troviÄas kelkajn helpilojn por trovi novajn amikojn. Ni povas automate trovi amikojn per interesoj, serĉu ilin per nomo aÅ­ intereso kaj faras sugestojn baze de estantaj kontaktoj. Ĉe nova instalita retejo, la unuaj sugestoj kutime aperas post 24 horoj."
-
-#: ../../mod/newmember.php:44
-msgid ""
-"Once you have made some friends, organize them into private conversation "
-"groups from the sidebar of your Contacts page and then you can interact with"
-" each group privately on your Network page."
-msgstr "Kiam vi trovis kelkajn novajn amikojn, ordigi ilin en grupoj por privata komunikado en la flanka strio de via Kontaktoj paÄo, kaj vi povas private komuniki kun ili je via Reto paÄo."
-
-#: ../../mod/newmember.php:46
-msgid ""
-"Our <strong>help</strong> pages may be consulted for detail on other program"
-" features and resources."
-msgstr "Niaj <strong>Helpo</strong> paÄoj enhavas pli da detaloj pri aliaj programaj trajtoj."
-
-#: ../../mod/attach.php:8
-msgid "Item not available."
-msgstr "Elemento ne disponeblas."
-
-#: ../../mod/attach.php:20
-msgid "Item was not found."
-msgstr "Elemento ne trovita."
-
-#: ../../mod/group.php:29
-msgid "Group created."
-msgstr "Grupo estas kreita."
-
-#: ../../mod/group.php:35
-msgid "Could not create group."
-msgstr "Ne povas krei grupon."
-
-#: ../../mod/group.php:47 ../../mod/group.php:137
-msgid "Group not found."
-msgstr "Grupo ne estas trovita."
-
-#: ../../mod/group.php:60
-msgid "Group name changed."
-msgstr "La nomo de la grupo estas ÅanÄita."
-
-#: ../../mod/group.php:72 ../../mod/profperm.php:19 ../../index.php:308
-msgid "Permission denied"
-msgstr "Malpermesita"
-
-#: ../../mod/group.php:90
-msgid "Create a group of contacts/friends."
-msgstr "Krei grupon da kontaktoj/amikoj."
-
-#: ../../mod/group.php:91 ../../mod/group.php:177
-msgid "Group Name: "
-msgstr "Nomo de la grupo:"
-
-#: ../../mod/group.php:110
-msgid "Group removed."
-msgstr "Grupo estas forviÅita."
-
-#: ../../mod/group.php:112
-msgid "Unable to remove group."
-msgstr "Ne eblas forviÅi grupon."
-
-#: ../../mod/group.php:176
-msgid "Group Editor"
-msgstr "Grupa redaktilo"
-
-#: ../../mod/group.php:189
-msgid "Members"
-msgstr "Anoj"
-
-#: ../../mod/group.php:221 ../../mod/profperm.php:105
-msgid "Click on a contact to add or remove."
-msgstr "Klaku kontakton por aldoni aÅ­ forviÅi."
-
-#: ../../mod/profperm.php:25 ../../mod/profperm.php:55
-msgid "Invalid profile identifier."
-msgstr "Nevaliada profila identigilo."
-
-#: ../../mod/profperm.php:101
-msgid "Profile Visibility Editor"
-msgstr "Redaktilo por profila videbleco."
-
-#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:128
-#: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:84
-#: ../../include/nav.php:50 ../../boot.php:1544
-msgid "Profile"
-msgstr "Profilo"
-
-#: ../../mod/profperm.php:114
-msgid "Visible To"
-msgstr "Videbla Al"
-
-#: ../../mod/profperm.php:130
-msgid "All Contacts (with secure profile access)"
-msgstr "Ĉiuj Kontaktoj (kun sekura atingo al la profilo)"
-
-#: ../../mod/viewconnections.php:39
-msgid "No contacts."
-msgstr "Neniu kontaktojn."
-
-#: ../../mod/viewconnections.php:76 ../../include/text.php:589
-msgid "View Contacts"
-msgstr "Vidi Kontaktojn"
-
-#: ../../mod/register.php:88 ../../mod/regmod.php:52
-#, php-format
-msgid "Registration details for %s"
-msgstr "Detaloj de la registrado por %s"
-
-#: ../../mod/register.php:96
-msgid ""
-"Registration successful. Please check your email for further instructions."
-msgstr "Registrado sukcesis. Bonvolu kontroli vian retpoÅton por pli da instruoj."
-
-#: ../../mod/register.php:100
-msgid "Failed to send email message. Here is the message that failed."
-msgstr "Malsukcesis sendi retpoÅton. Jen la malsukcesa mesaÄo."
-
-#: ../../mod/register.php:105
-msgid "Your registration can not be processed."
-msgstr "Mi ne povas prilabori vian registradon."
-
-#: ../../mod/register.php:142
-#, php-format
-msgid "Registration request at %s"
-msgstr "Peto de registrado al %s"
-
-#: ../../mod/register.php:151
-msgid "Your registration is pending approval by the site owner."
-msgstr "Via registrado bezonas apropbon de la administranto."
-
-#: ../../mod/register.php:189
-msgid ""
-"This site has exceeded the number of allowed daily account registrations. "
-"Please try again tomorrow."
-msgstr "La retejo transiras la maksimuman kvanton da ĉiutagaj kontaj registradoj. Bonvolu provi denove morgaŭ."
-
-#: ../../mod/register.php:215
-msgid ""
-"You may (optionally) fill in this form via OpenID by supplying your OpenID "
-"and clicking 'Register'."
-msgstr "Vi ankaÅ­ (nedeviga) povas plenigi la formularon per OpenID se vi provizas vian OpenID adreson kaj klakas 'Registri'."
-
-#: ../../mod/register.php:216
-msgid ""
-"If you are not familiar with OpenID, please leave that field blank and fill "
-"in the rest of the items."
-msgstr "Se vi ne konas OpenID, bonvolu lasi tiun kampon malplena kaj entajpu la aliajn elementojn."
-
-#: ../../mod/register.php:217
-msgid "Your OpenID (optional): "
-msgstr "Via OpenID (nedeviga):"
-
-#: ../../mod/register.php:231
-msgid "Include your profile in member directory?"
-msgstr "Aldoni vian profilon al la membrokatalogo?"
-
-#: ../../mod/register.php:251
-msgid "Membership on this site is by invitation only."
-msgstr "MembriÄi ĉi tie nur eblas laÅ­ invito."
-
-#: ../../mod/register.php:252
-msgid "Your invitation ID: "
-msgstr "Via invita idento: "
-
-#: ../../mod/register.php:255 ../../mod/admin.php:421
-msgid "Registration"
-msgstr "Registrado"
-
-#: ../../mod/register.php:263
-msgid "Your Full Name (e.g. Joe Smith): "
-msgstr "Via Plena Nomo (e.g. Joe Smith): "
-
-#: ../../mod/register.php:264
-msgid "Your Email Address: "
-msgstr "Via RetpoÅtadreso: "
-
-#: ../../mod/register.php:265
-msgid ""
-"Choose a profile nickname. This must begin with a text character. Your "
-"profile address on this site will then be "
-"'<strong>nickname@$sitename</strong>'."
-msgstr "Elektu kaÅnomon por la profilo. Tiu bezonas komenci kun teksta litero. Poste, via profila adreso ĉi tie estos: '<strong>kaÅnomo@$sitename</strong>'."
-
-#: ../../mod/register.php:266
-msgid "Choose a nickname: "
-msgstr "Elektu kaÅnomon: "
-
-#: ../../mod/register.php:269 ../../include/nav.php:81 ../../boot.php:828
-msgid "Register"
-msgstr "Registri"
-
-#: ../../mod/dirfind.php:26
-msgid "People Search"
-msgstr "Serĉi Membrojn"
-
-#: ../../mod/like.php:144 ../../mod/like.php:301 ../../mod/tagger.php:70
-#: ../../addon/facebook/facebook.php:1584
-#: ../../addon/communityhome/communityhome.php:158
-#: ../../addon/communityhome/communityhome.php:167
-#: ../../view/theme/diabook/theme.php:565
-#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1710
-#: ../../include/conversation.php:48 ../../include/conversation.php:57
-#: ../../include/conversation.php:121 ../../include/conversation.php:130
-msgid "status"
-msgstr "staton"
-
-#: ../../mod/like.php:161 ../../addon/facebook/facebook.php:1588
-#: ../../addon/communityhome/communityhome.php:172
-#: ../../view/theme/diabook/theme.php:579 ../../include/diaspora.php:1726
-#: ../../include/conversation.php:65
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s Åatas la %3$s de %2$s"
-
-#: ../../mod/like.php:163 ../../include/conversation.php:68
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr "%1$s malÅatas la %3$s de %2$s"
-
-#: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:159
-#: ../../mod/admin.php:700 ../../mod/admin.php:899 ../../mod/display.php:37
-#: ../../mod/display.php:142 ../../include/items.php:3334
-msgid "Item not found."
-msgstr "Elemento ne estas trovita."
-
-#: ../../mod/viewsrc.php:7
-msgid "Access denied."
-msgstr "Atingo nepermesita."
-
-#: ../../mod/fbrowser.php:25 ../../view/theme/diabook/theme.php:130
-#: ../../include/nav.php:51 ../../boot.php:1550
-msgid "Photos"
-msgstr "Bildoj"
-
-#: ../../mod/fbrowser.php:96
-msgid "Files"
-msgstr "Dosieroj"
-
-#: ../../mod/regmod.php:61
-msgid "Account approved."
-msgstr "Konto aprobita."
-
-#: ../../mod/regmod.php:98
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registraĵo por %s senvalidigita."
-
-#: ../../mod/regmod.php:110
-msgid "Please login."
-msgstr "Bonvolu ensaluti."
-
-#: ../../mod/item.php:89
-msgid "Unable to locate original post."
-msgstr "Ne eblas trovi originalan afiÅon."
-
-#: ../../mod/item.php:258
-msgid "Empty post discarded."
-msgstr "ForviÅis malplenan afiÅon."
-
-#: ../../mod/item.php:379 ../../mod/wall_upload.php:115
-#: ../../mod/wall_upload.php:124 ../../mod/wall_upload.php:131
-#: ../../include/message.php:144
-msgid "Wall Photos"
-msgstr "Muraj Bildoj"
-
-#: ../../mod/item.php:784
-msgid "System error. Post not saved."
-msgstr "Sistema eraro. AfiÅo ne registrita."
-
-#: ../../mod/item.php:809
-#, php-format
-msgid ""
-"This message was sent to you by %s, a member of the Friendica social "
-"network."
-msgstr "Ĉi mesaÄo estas sendita al vi de %s, membro de la Friendica interkona reto."
-
-#: ../../mod/item.php:811
-#, php-format
-msgid "You may visit them online at %s"
-msgstr "Vi povas viziti ilin rete ĉe %s"
-
-#: ../../mod/item.php:812
-msgid ""
-"Please contact the sender by replying to this post if you do not wish to "
-"receive these messages."
-msgstr "Bonvolu rispondi al ĉi mesaÄo kaj kontaktu la sendinto se vi ne volas ricevi tiujn mesaÄojn."
-
-#: ../../mod/item.php:814
-#, php-format
-msgid "%s posted an update."
-msgstr "%s publikigis afiÅon."
-
-#: ../../mod/profile_photo.php:30
-msgid "Image uploaded but image cropping failed."
-msgstr "Bildo estas alÅutita, sed malsukcesis tranĉi la bildon."
-
-#: ../../mod/profile_photo.php:63 ../../mod/profile_photo.php:70
-#: ../../mod/profile_photo.php:77 ../../mod/profile_photo.php:266
-#, php-format
-msgid "Image size reduction [%s] failed."
-msgstr "Malsukcesis malpligrandigi [%s] la bildon."
-
-#: ../../mod/profile_photo.php:91
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "ReÅarÄu la paÄon au malplenigu la kaÅmemoro de la retesplorilo se la nova bildo ne tuj aperas."
-
-#: ../../mod/profile_photo.php:101
-msgid "Unable to process image"
-msgstr "Ne eblas procezi bildon."
-
-#: ../../mod/profile_photo.php:117 ../../mod/wall_upload.php:77
-#, php-format
-msgid "Image exceeds size limit of %d"
-msgstr "Bildo estas pli granda ol la limito %d"
-
-#: ../../mod/profile_photo.php:209
-msgid "Upload File:"
-msgstr "AlÅuti dosieron:"
-
-#: ../../mod/profile_photo.php:210
-msgid "Upload Profile Photo"
-msgstr "AlÅuti profilbildon"
-
-#: ../../mod/profile_photo.php:211
-msgid "Upload"
-msgstr "AlÅuti"
-
-#: ../../mod/profile_photo.php:213
-msgid "skip this step"
-msgstr "Preterpasi tian paÅon"
-
-#: ../../mod/profile_photo.php:213
-msgid "select a photo from your photo albums"
-msgstr "elekti bildon el viaj albumoj"
-
-#: ../../mod/profile_photo.php:226
-msgid "Crop Image"
-msgstr "Stuci Bildon"
-
-#: ../../mod/profile_photo.php:227
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Bonvolu agordi la stuco de la bildo por optimuma aspekto."
-
-#: ../../mod/profile_photo.php:229
-msgid "Done Editing"
-msgstr "Finigi Redaktado"
-
-#: ../../mod/profile_photo.php:257
-msgid "Image uploaded successfully."
-msgstr "Bildo estas sukcese enÅutita."
-
-#: ../../mod/hcard.php:10
-msgid "No profile"
-msgstr "Neniu profilo"
-
-#: ../../mod/removeme.php:45 ../../mod/removeme.php:48
-msgid "Remove My Account"
-msgstr "Forigi Mian Konton"
-
-#: ../../mod/removeme.php:46
-msgid ""
-"This will completely remove your account. Once this has been done it is not "
-"recoverable."
-msgstr "Tio tute forigos vian konton. Kiam farita, la konto ne estas restaÅ­rebla."
-
-#: ../../mod/removeme.php:47
-msgid "Please enter your password for verification:"
-msgstr "Bonvolu entajpi vian pasvorton por kontrolado:"
-
-#: ../../mod/message.php:9 ../../include/nav.php:131
-msgid "New Message"
-msgstr "Nova MesaÄo"
-
-#: ../../mod/message.php:70
-msgid "Unable to locate contact information."
-msgstr "Ne eblas trovi kontaktajn informojn."
-
-#: ../../mod/message.php:120
-msgid "Message deleted."
-msgstr "MesaÄo estas forviÅita."
-
-#: ../../mod/message.php:150
-msgid "Conversation removed."
-msgstr "Dialogo estas forviÅita."
-
-#: ../../mod/message.php:247
-msgid "No messages."
-msgstr "Neniom da mesaÄoj."
-
-#: ../../mod/message.php:254
-#, php-format
-msgid "Unknown sender - %s"
-msgstr "Nekonata sendanto - %s"
-
-#: ../../mod/message.php:257
-#, php-format
-msgid "You and %s"
-msgstr "Vi kaj %s"
-
-#: ../../mod/message.php:260
-#, php-format
-msgid "%s and You"
-msgstr "%s kaj vi"
-
-#: ../../mod/message.php:270 ../../mod/message.php:392
-msgid "Delete conversation"
-msgstr "ForviÅi dialogon"
-
-#: ../../mod/message.php:273
-msgid "D, d M Y - g:i A"
-msgstr "D, d M Y - g:i A"
-
-#: ../../mod/message.php:275
-#, php-format
-msgid "%d message"
-msgid_plural "%d messages"
-msgstr[0] "%d mesaÄo"
-msgstr[1] "%d mesaÄoj"
-
-#: ../../mod/message.php:310
-msgid "Message not available."
-msgstr "MesaÄo nedisponebla."
-
-#: ../../mod/message.php:375
-msgid "Delete message"
-msgstr "ForviÅu mesaÄon"
-
-#: ../../mod/message.php:394
-msgid ""
-"No secure communications available. You <strong>may</strong> be able to "
-"respond from the sender's profile page."
-msgstr "Sekura komunikado ne disponeblas. Vi <strong>eble</strong> povus respondi sur la profilpaÄo de la sendanto."
-
-#: ../../mod/message.php:398
-msgid "Send Reply"
-msgstr "Respondi"
-
-#: ../../mod/allfriends.php:34
-#, php-format
-msgid "Friends of %s"
-msgstr "Amikoj de %s"
-
-#: ../../mod/allfriends.php:40
-msgid "No friends to display."
-msgstr "Neniom da amiko al montri."
-
-#: ../../mod/admin.php:55
-msgid "Theme settings updated."
-msgstr "Gisdatigis agordojn pri etosoj."
-
-#: ../../mod/admin.php:96 ../../mod/admin.php:419
-msgid "Site"
-msgstr "Retejo"
-
-#: ../../mod/admin.php:97 ../../mod/admin.php:655 ../../mod/admin.php:667
-msgid "Users"
-msgstr "Uzantoj"
-
-#: ../../mod/admin.php:98 ../../mod/admin.php:749 ../../mod/admin.php:791
-msgid "Plugins"
-msgstr "Kromprogramoj"
-
-#: ../../mod/admin.php:99 ../../mod/admin.php:954 ../../mod/admin.php:990
-msgid "Themes"
-msgstr "Etosoj"
-
-#: ../../mod/admin.php:100
-msgid "DB updates"
-msgstr "DB Äisdatigoj"
-
-#: ../../mod/admin.php:115 ../../mod/admin.php:122 ../../mod/admin.php:1077
-msgid "Logs"
-msgstr "Protokoloj"
-
-#: ../../mod/admin.php:120 ../../include/nav.php:146
-msgid "Admin"
-msgstr "Administrado"
-
-#: ../../mod/admin.php:121
-msgid "Plugin Features"
-msgstr "Kromprogramaj Trajtoj"
-
-#: ../../mod/admin.php:123
-msgid "User registrations waiting for confirmation"
-msgstr "Uzantaj registradoj atendante konfirmon"
-
-#: ../../mod/admin.php:183 ../../mod/admin.php:637
-msgid "Normal Account"
-msgstr "Normala konto"
-
-#: ../../mod/admin.php:184 ../../mod/admin.php:638
-msgid "Soapbox Account"
-msgstr "Soapbox Konto"
-
-#: ../../mod/admin.php:185 ../../mod/admin.php:639
-msgid "Community/Celebrity Account"
-msgstr "Komunuma/eminentula Konto"
-
-#: ../../mod/admin.php:186 ../../mod/admin.php:640
-msgid "Automatic Friend Account"
-msgstr "AÅ­tomata Amika Konto"
-
-#: ../../mod/admin.php:205
-msgid "Message queues"
-msgstr "MesaÄvicoj"
-
-#: ../../mod/admin.php:210 ../../mod/admin.php:418 ../../mod/admin.php:654
-#: ../../mod/admin.php:748 ../../mod/admin.php:790 ../../mod/admin.php:953
-#: ../../mod/admin.php:989 ../../mod/admin.php:1076
-msgid "Administration"
-msgstr "Administrado"
-
-#: ../../mod/admin.php:211
-msgid "Summary"
-msgstr "Resumo"
-
-#: ../../mod/admin.php:213
-msgid "Registered users"
-msgstr "Registrataj uzantoj"
-
-#: ../../mod/admin.php:215
-msgid "Pending registrations"
-msgstr "Okazontaj registradoj"
-
-#: ../../mod/admin.php:216
-msgid "Version"
-msgstr "Versio"
-
-#: ../../mod/admin.php:218
-msgid "Active plugins"
-msgstr "Åœaltitaj kromprogramoj"
-
-#: ../../mod/admin.php:357
-msgid "Site settings updated."
-msgstr "Äœisdatigis retejaj agordoj."
-
-#: ../../mod/admin.php:405
-msgid "Closed"
-msgstr "Ferma"
-
-#: ../../mod/admin.php:406
-msgid "Requires approval"
-msgstr "Bezonas aprobon"
-
-#: ../../mod/admin.php:407
-msgid "Open"
-msgstr "Malferma"
-
-#: ../../mod/admin.php:411
-msgid "No SSL policy, links will track page SSL state"
-msgstr "Sen SSL strategio. Ligiloj sekvos la SSL staton de la paÄo."
-
-#: ../../mod/admin.php:412
-msgid "Force all links to use SSL"
-msgstr "Devigi ke ĉiuj ligiloj uzu SSL."
-
-#: ../../mod/admin.php:413
-msgid "Self-signed certificate, use SSL for local links only (discouraged)"
-msgstr "Memsubskribita atestilo, nur uzu SSL por lokaj ligiloj (malkuraÄigata)"
-
-#: ../../mod/admin.php:422
-msgid "File upload"
-msgstr "AlÅuto"
-
-#: ../../mod/admin.php:423
-msgid "Policies"
-msgstr "Politiko"
-
-#: ../../mod/admin.php:424
-msgid "Advanced"
-msgstr "Altnivela"
-
-#: ../../mod/admin.php:428 ../../addon/statusnet/statusnet.php:558
-msgid "Site name"
-msgstr "Nomo de retejo"
-
-#: ../../mod/admin.php:429
-msgid "Banner/Logo"
-msgstr "Emblemo"
-
-#: ../../mod/admin.php:430
-msgid "System language"
-msgstr "Sistema lingvo"
-
-#: ../../mod/admin.php:431
-msgid "System theme"
-msgstr "Sistema etoso"
-
-#: ../../mod/admin.php:431
-msgid ""
-"Default system theme - may be over-ridden by user profiles - <a href='#' "
-"id='cnftheme'>change theme settings</a>"
-msgstr "DefaÅ­lta sistema etoso - transpasebla de uzantprofiloj - <a href='#' id='cnftheme'>redakti agordoj pri etosoj</a>"
-
-#: ../../mod/admin.php:432
-msgid "SSL link policy"
-msgstr "Strategio por SSL ligiloj"
-
-#: ../../mod/admin.php:432
-msgid "Determines whether generated links should be forced to use SSL"
-msgstr "Difinas ĉu generotaj ligiloj devige uzu SSL."
-
-#: ../../mod/admin.php:433
-msgid "Maximum image size"
-msgstr "Maksimuma bildgrando"
-
-#: ../../mod/admin.php:433
-msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
-msgstr "Maksimuma grando en bajtoj por alÅutotaj bildoj. DefaÅ­lte 0, kio signifas neniu limito."
-
-#: ../../mod/admin.php:435
-msgid "Register policy"
-msgstr "Interkonsento pri registrado"
-
-#: ../../mod/admin.php:436
-msgid "Register text"
-msgstr "Interkonsento teksto"
-
-#: ../../mod/admin.php:436
-msgid "Will be displayed prominently on the registration page."
-msgstr "Tio estos eminente montrata en la registro paÄo."
-
-#: ../../mod/admin.php:437
-msgid "Accounts abandoned after x days"
-msgstr "Kontoj forlasitaj post x tagoj"
-
-#: ../../mod/admin.php:437
-msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
-msgstr "Mi ne malÅparu energion por enketi aliajn retejojn pri forlasitaj kontoj. Entajpu 0 por ne uzi templimo."
-
-#: ../../mod/admin.php:438
-msgid "Allowed friend domains"
-msgstr "Permesitaj amikaj domainoj"
-
-#: ../../mod/admin.php:438
-msgid ""
-"Comma separated list of domains which are allowed to establish friendships "
-"with this site. Wildcards are accepted. Empty to allow any domains"
-msgstr "Perkome disigita listo da domajnoj kiuj rajtas konstrui amikecojn kun ĉi tiu retejo. Ĵokeroj eblas. Malplena por rajtigi ĉiujn ajn domajnojn."
-
-#: ../../mod/admin.php:439
-msgid "Allowed email domains"
-msgstr "Permesitaj retpoÅtaj domajnoj"
-
-#: ../../mod/admin.php:439
-msgid ""
-"Comma separated list of domains which are allowed in email addresses for "
-"registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains"
-msgstr "Perkome disigita listo da domajnoj kiuj uzeblas kiel retpoÅtaj adresoj en novaj registradoj. Ä´okeroj eblas. Malplena por rajtigi ĉiujn ajn domajnojn."
-
-#: ../../mod/admin.php:440
-msgid "Block public"
-msgstr "Bloki publike"
-
-#: ../../mod/admin.php:440
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently logged in."
-msgstr "Elektu por bloki publikan atingon al ĉiuj alie publikajn paÄojn en ĉi tiu retejo kiam vi ne estas ensalutita."
-
-#: ../../mod/admin.php:441
-msgid "Force publish"
-msgstr "Devigi publikigon"
-
-#: ../../mod/admin.php:441
-msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
-msgstr "Elektu por devigi la registradon en la loka katalogo al ĉiuj profiloj en ĉi tiu retejo."
-
-#: ../../mod/admin.php:442
-msgid "Global directory update URL"
-msgstr "Äœenerala adreso por Äisdatigi la katalogon"
-
-#: ../../mod/admin.php:442
-msgid ""
-"URL to update the global directory. If this is not set, the global directory"
-" is completely unavailable to the application."
-msgstr "URL adreso por Äisdatigi la tutmondan katalogon. Se ne agordita, la tutmonda katatolge tute ne disponeblas al la programo."
-
-#: ../../mod/admin.php:444
-msgid "Block multiple registrations"
-msgstr "Bloki pluroblajn registradojn."
-
-#: ../../mod/admin.php:444
-msgid "Disallow users to register additional accounts for use as pages."
-msgstr "Malpermesi al uzantoj la permeson por registri pluajn kontojn kiel paÄoj."
-
-#: ../../mod/admin.php:445
-msgid "OpenID support"
-msgstr "Subteno por OpenID"
-
-#: ../../mod/admin.php:445
-msgid "OpenID support for registration and logins."
-msgstr "Subteni OpenID por registrado kaj ensaluto."
-
-#: ../../mod/admin.php:446
-msgid "Fullname check"
-msgstr "Kontroli plenan nomon"
-
-#: ../../mod/admin.php:446
-msgid ""
-"Force users to register with a space between firstname and lastname in Full "
-"name, as an antispam measure"
-msgstr "Kiel kontraÅ­spamilo, devigi uzantoj al registrado kun spaceto inter la persona nomo kaj la familia nomo."
-
-#: ../../mod/admin.php:447
-msgid "UTF-8 Regular expressions"
-msgstr "UTF-8 regulaj exprimoj"
-
-#: ../../mod/admin.php:447
-msgid "Use PHP UTF8 regular expressions"
-msgstr "Uzi PHP UTF8 regulajn esprimojn."
-
-#: ../../mod/admin.php:448
-msgid "Show Community Page"
-msgstr "Montri Komunuma PaÄo"
-
-#: ../../mod/admin.php:448
-msgid ""
-"Display a Community page showing all recent public postings on this site."
-msgstr "Montri komunuma paÄo kun ĉiuj ĵusaj afiÅoj en ĉi tiu retejo."
-
-#: ../../mod/admin.php:449
-msgid "Enable OStatus support"
-msgstr "Åœalti subtenon por OStatus"
-
-#: ../../mod/admin.php:449
-msgid ""
-"Provide built-in OStatus (identi.ca, status.net, etc.) compatibility. All "
-"communications in OStatus are public, so privacy warnings will be "
-"occasionally displayed."
-msgstr "Provizi integritan OStatus (identi.ca, status.net ktp) subtenon. Ĉiuj komunikadoj en OStatus estas publikaj, do privatecaj avertoj aperos de tempo al tempo."
-
-#: ../../mod/admin.php:450
-msgid "Enable Diaspora support"
-msgstr "Åœalti subtenon por Diaspora"
-
-#: ../../mod/admin.php:450
-msgid "Provide built-in Diaspora network compatibility."
-msgstr "Provizi integritan Diaspora subtenon."
-
-#: ../../mod/admin.php:451
-msgid "Only allow Friendica contacts"
-msgstr "Nur permesigi Friendica kontaktojn"
-
-#: ../../mod/admin.php:451
-msgid ""
-"All contacts must use Friendica protocols. All other built-in communication "
-"protocols disabled."
-msgstr "Ĉiuj kontaktoj devas uzi Friendica protokolojn. Ĉiuj aliaj komunikaj protokoloj malaktivita."
-
-#: ../../mod/admin.php:452
-msgid "Verify SSL"
-msgstr "Kontroli SSL"
-
-#: ../../mod/admin.php:452
-msgid ""
-"If you wish, you can turn on strict certificate checking. This will mean you"
-" cannot connect (at all) to self-signed SSL sites."
-msgstr "Se vi deziras, vi povas aktivigi severan kontroladon de SSL atestiloj. Pro tio, vie (tute) ne eblos konekti al SSL retejoj kun memsubskribitaj atestiloj."
-
-#: ../../mod/admin.php:453
-msgid "Proxy user"
-msgstr "Uzantnomo por retperanto"
-
-#: ../../mod/admin.php:454
-msgid "Proxy URL"
-msgstr "URL adreso de retperanto"
-
-#: ../../mod/admin.php:455
-msgid "Network timeout"
-msgstr "Reta tempolimo"
-
-#: ../../mod/admin.php:455
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
-msgstr "Valoro en sekundoj. Uzu 0 por mallimitigi (ne rekomendata)."
-
-#: ../../mod/admin.php:456
-msgid "Delivery interval"
-msgstr "Intervalo de liverado"
-
-#: ../../mod/admin.php:456
-msgid ""
-"Delay background delivery processes by this many seconds to reduce system "
-"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
-"for large dedicated servers."
-msgstr "Malfruigi fonan liveradon dum tiom da sekundoj por malpliigi la Åargon de la sistemo. Rekomendoj: 4-5 por komunaj serviloj, 2-3 por virtualaj privataj serviloj, 0-1 por grandaj dediĉitaj serviloj."
-
-#: ../../mod/admin.php:457
-msgid "Poll interval"
-msgstr "Enketintervalo"
-
-#: ../../mod/admin.php:457
-msgid ""
-"Delay background polling processes by this many seconds to reduce system "
-"load. If 0, use delivery interval."
-msgstr "Malfruigi fonajn enketprocesojn je tiom da sekundoj por malpliigi la Åargon de la sistemo. Se 0, uzas la liverintervalon."
-
-#: ../../mod/admin.php:458
-msgid "Maximum Load Average"
-msgstr "Maksimuma Meza SistemÅargo"
-
-#: ../../mod/admin.php:458
-msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
-msgstr "Maksimuma sistemÅargo post kiu livero- kaj enketprocesoj estos prokrastinataj. - DefaÅ­lte 50."
-
-#: ../../mod/admin.php:472
-msgid "Update has been marked successful"
-msgstr "Äœisdatigo estas markita sukcesa"
-
-#: ../../mod/admin.php:482
-#, php-format
-msgid "Executing %s failed. Check system logs."
-msgstr "Ne sukcesis plenumi %s. Kontrolu la sistemprotokolojn."
-
-#: ../../mod/admin.php:485
-#, php-format
-msgid "Update %s was successfully applied."
-msgstr "Sukcese aplikis la Äisdatigo %s."
-
-#: ../../mod/admin.php:489
-#, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
-msgstr "Äœisdatigo %s ne liveris elirstaton. "
-
-#: ../../mod/admin.php:492
-#, php-format
-msgid "Update function %s could not be found."
-msgstr "Ne troveblas Äisdatigo funkcio %s."
-
-#: ../../mod/admin.php:507
-msgid "No failed updates."
-msgstr "Neniom da malsukcesaj Äisdatigoj."
-
-#: ../../mod/admin.php:511
-msgid "Failed Updates"
-msgstr "Malsukcesaj Äœisdatigoj"
-
-#: ../../mod/admin.php:512
-msgid ""
-"This does not include updates prior to 1139, which did not return a status."
-msgstr "Ne inkluzivas Äisdatigojn antaÅ­ 1139, kiuj ne liveris elirstaton."
-
-#: ../../mod/admin.php:513
-msgid "Mark success (if update was manually applied)"
-msgstr "Marki sukcesa (se la Äisdatigo estas instalita mane)"
-
-#: ../../mod/admin.php:514
-msgid "Attempt to execute this update step automatically"
-msgstr "Provi automate plenumi ĉi tian paÅon de la Äisdatigo."
-
-#: ../../mod/admin.php:539
-#, php-format
-msgid "%s user blocked/unblocked"
-msgid_plural "%s users blocked/unblocked"
-msgstr[0] "Blokis/malblokis %s uzanton"
-msgstr[1] "Blokis/malblokis %s uzantojn"
-
-#: ../../mod/admin.php:546
-#, php-format
-msgid "%s user deleted"
-msgid_plural "%s users deleted"
-msgstr[0] "%s uzanto forviÅita"
-msgstr[1] "%s uzanto forviÅitaj"
-
-#: ../../mod/admin.php:585
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Uzanto '%s' forviÅita"
-
-#: ../../mod/admin.php:593
-#, php-format
-msgid "User '%s' unblocked"
-msgstr "Uzanto '%s' malblokita"
-
-#: ../../mod/admin.php:593
-#, php-format
-msgid "User '%s' blocked"
-msgstr "Uzanto '%s' blokita"
-
-#: ../../mod/admin.php:657
-msgid "select all"
-msgstr "elekti ĉiujn"
-
-#: ../../mod/admin.php:658
-msgid "User registrations waiting for confirm"
-msgstr "RegistriÄoj atendante aprobon"
-
-#: ../../mod/admin.php:659
-msgid "Request date"
-msgstr "Dato de peto"
-
-#: ../../mod/admin.php:659 ../../mod/admin.php:668
-#: ../../include/contact_selectors.php:79
-msgid "Email"
-msgstr "RetpoÅto"
-
-#: ../../mod/admin.php:660
-msgid "No registrations."
-msgstr "Neniom da registriÄoj."
-
-#: ../../mod/admin.php:662
-msgid "Deny"
-msgstr "Negi"
-
-#: ../../mod/admin.php:668
-msgid "Register date"
-msgstr "Dato de registrado"
-
-#: ../../mod/admin.php:668
-msgid "Last login"
-msgstr "Plej ĵusa ensaluto"
-
-#: ../../mod/admin.php:668
-msgid "Last item"
-msgstr "Plej ĵusa elemento"
-
-#: ../../mod/admin.php:668
-msgid "Account"
-msgstr "Konto"
-
-#: ../../mod/admin.php:670
-msgid ""
-"Selected users will be deleted!\\n\\nEverything these users had posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "La elektitaj uzantkontoj estas forviÅotaj!\\n\\nĈiuj elementoj kiujn ili afiÅis je la retpaÄo estos permanente forviÅitaj.\\n\\nĈu vi certas?"
-
-#: ../../mod/admin.php:671
-msgid ""
-"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
-"site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "La uzanto {0} estas forviÅota!\\n\\nĈiuj elementoj kiujn li afiÅis je la retpaÄo estos permanente forviÅitaj.\\n\\nĈu vi certas?"
-
-#: ../../mod/admin.php:712
-#, php-format
-msgid "Plugin %s disabled."
-msgstr "Kromprogramo %s estas malÅaltita."
-
-#: ../../mod/admin.php:716
-#, php-format
-msgid "Plugin %s enabled."
-msgstr "Kromprogramo %s estas Åaltita."
-
-#: ../../mod/admin.php:726 ../../mod/admin.php:924
-msgid "Disable"
-msgstr "MalÅalti"
-
-#: ../../mod/admin.php:728 ../../mod/admin.php:926
-msgid "Enable"
-msgstr "Åœalti"
-
-#: ../../mod/admin.php:750 ../../mod/admin.php:955
-msgid "Toggle"
-msgstr "Åœalti/MalÅalti"
-
-#: ../../mod/admin.php:758 ../../mod/admin.php:965
-msgid "Author: "
-msgstr "AÅ­toro: "
-
-#: ../../mod/admin.php:759 ../../mod/admin.php:966
-msgid "Maintainer: "
-msgstr "Prizorganto: "
-
-#: ../../mod/admin.php:888
-msgid "No themes found."
-msgstr "Ne trovis etosojn."
-
-#: ../../mod/admin.php:947
-msgid "Screenshot"
-msgstr "Ekrankopio"
-
-#: ../../mod/admin.php:995
-msgid "[Experimental]"
-msgstr "[Eksperimenta]"
-
-#: ../../mod/admin.php:996
-msgid "[Unsupported]"
-msgstr "[Nesubtenata]"
-
-#: ../../mod/admin.php:1023
-msgid "Log settings updated."
-msgstr "Protokolagordoj Äisdatigitaj."
-
-#: ../../mod/admin.php:1079
-msgid "Clear"
-msgstr "ForviÅi"
-
-#: ../../mod/admin.php:1085
-msgid "Debugging"
-msgstr "Sencimigado"
-
-#: ../../mod/admin.php:1086
-msgid "Log file"
-msgstr "Protokolo"
-
-#: ../../mod/admin.php:1086
-msgid ""
-"Must be writable by web server. Relative to your Friendica top-level "
-"directory."
-msgstr "Devas esti skribebla de la retservilo. Relativa al via plej supra Friendica dosierujo."
-
-#: ../../mod/admin.php:1087
-msgid "Log level"
-msgstr "Protokolnivelo"
-
-#: ../../mod/admin.php:1137
-msgid "Close"
-msgstr "Fermi"
-
-#: ../../mod/admin.php:1143
-msgid "FTP Host"
-msgstr "FTP Servilo"
-
-#: ../../mod/admin.php:1144
-msgid "FTP Path"
-msgstr "FTP Vojo"
-
-#: ../../mod/admin.php:1145
-msgid "FTP User"
-msgstr "FTP Uzanto"
-
-#: ../../mod/admin.php:1146
-msgid "FTP Password"
-msgstr "FTP Pasvorto"
-
-#: ../../mod/profile.php:21 ../../boot.php:993
-msgid "Requested profile is not available."
-msgstr "La petita profilo ne disponeblas."
-
-#: ../../mod/profile.php:141 ../../mod/display.php:75
-msgid "Access to this profile has been restricted."
-msgstr "Atingo al ĉi tio profilo estas limitigita"
-
-#: ../../mod/profile.php:166
-msgid "Tips for New Members"
-msgstr "Konsilo por novaj membroj"
-
-#: ../../mod/ping.php:185
-msgid "{0} wants to be your friend"
-msgstr "{0} volas amikiÄi kun vi"
-
-#: ../../mod/ping.php:190
-msgid "{0} sent you a message"
-msgstr "{0} sendis mesaÄon al vi"
-
-#: ../../mod/ping.php:195
-msgid "{0} requested registration"
-msgstr "{0} petis registradon"
-
-#: ../../mod/ping.php:201
-#, php-format
-msgid "{0} commented %s's post"
-msgstr "{0} komentis pri la afiÅo de %s"
-
-#: ../../mod/ping.php:206
-#, php-format
-msgid "{0} liked %s's post"
-msgstr "{0} satis la afiÅon de %s"
-
-#: ../../mod/ping.php:211
-#, php-format
-msgid "{0} disliked %s's post"
-msgstr "{0} malÅatis la afiÅon de %s"
-
-#: ../../mod/ping.php:216
-#, php-format
-msgid "{0} is now friends with %s"
-msgstr "{0} amikiÄis kun %s"
-
-#: ../../mod/ping.php:221
-msgid "{0} posted"
-msgstr "{0} afiÅis"
-
-#: ../../mod/ping.php:226
-#, php-format
-msgid "{0} tagged %s's post with #%s"
-msgstr "{0} markis la afiÅon de %s kun #%s"
-
-#: ../../mod/ping.php:232
-msgid "{0} mentioned you in a post"
-msgstr "{0} menciis vin en afiÅo"
-
-#: ../../mod/nogroup.php:58
-msgid "Contacts who are not members of a group"
-msgstr "Kontaktoj kiuj ne estas en iu grupo"
-
-#: ../../mod/openid.php:24
-msgid "OpenID protocol error. No ID returned."
-msgstr "Eraro en OpenID protokolo. Ne resendis identecon."
-
-#: ../../mod/openid.php:53
-msgid ""
-"Account not found and OpenID registration is not permitted on this site."
-msgstr "Ne trovis kontoj, kaj registrado per OpenID estas malpermesita ĉi tie."
-
-#: ../../mod/openid.php:93 ../../include/auth.php:99
-#: ../../include/auth.php:162
-msgid "Login failed."
-msgstr "Ensalutado malsukcesis."
-
-#: ../../mod/follow.php:27
-msgid "Contact added"
-msgstr "Aldonis kontakton"
-
-#: ../../mod/common.php:42
-msgid "Common Friends"
-msgstr "Komunaj Amikoj"
-
-#: ../../mod/common.php:78
-msgid "No contacts in common."
-msgstr "Neniom da komunaj kontaktoj."
-
-#: ../../mod/display.php:135
-msgid "Item has been removed."
-msgstr "Elemento estas forviÅita."
-
-#: ../../mod/apps.php:4
-msgid "Applications"
-msgstr "Programoj"
-
-#: ../../mod/apps.php:7
-msgid "No installed applications."
-msgstr "Neniom da instalitaj programoj."
-
-#: ../../mod/search.php:83 ../../include/text.php:649
-#: ../../include/text.php:650 ../../include/nav.php:91
-msgid "Search"
-msgstr "Serĉi"
-
-#: ../../mod/profiles.php:21 ../../mod/profiles.php:410
-#: ../../mod/profiles.php:524 ../../mod/dfrn_confirm.php:62
-msgid "Profile not found."
-msgstr "Profilo ne trovita."
-
-#: ../../mod/profiles.php:31
-msgid "Profile Name is required."
-msgstr "Nomo de profilo estas bezonata."
-
-#: ../../mod/profiles.php:155
-msgid "Marital Status"
-msgstr "Amrilata Stato"
-
-#: ../../mod/profiles.php:159
-msgid "Romantic Partner"
-msgstr "Kora Partnero"
-
-#: ../../mod/profiles.php:163
-msgid "Likes"
-msgstr "Åœatoj"
-
-#: ../../mod/profiles.php:167
-msgid "Dislikes"
-msgstr "MalÅatoj"
-
-#: ../../mod/profiles.php:171
-msgid "Work/Employment"
-msgstr "Laboro"
-
-#: ../../mod/profiles.php:174
-msgid "Religion"
-msgstr "Religio"
-
-#: ../../mod/profiles.php:178
-msgid "Political Views"
-msgstr "Politikaj Opinioj"
-
-#: ../../mod/profiles.php:182
-msgid "Gender"
-msgstr "Sekso"
-
-#: ../../mod/profiles.php:186
-msgid "Sexual Preference"
-msgstr "Seksa Prefero"
-
-#: ../../mod/profiles.php:190
-msgid "Homepage"
-msgstr "HejmpaÄo"
-
-#: ../../mod/profiles.php:194
-msgid "Interests"
-msgstr "Interesoj"
-
-#: ../../mod/profiles.php:198
-msgid "Address"
-msgstr "Adreso"
-
-#: ../../mod/profiles.php:205 ../../addon/dav/layout.fnk.php:310
-msgid "Location"
-msgstr "Loko"
-
-#: ../../mod/profiles.php:288
-msgid "Profile updated."
-msgstr "Profilo Äisdatigita."
-
-#: ../../mod/profiles.php:355
-msgid " and "
-msgstr " kaj "
-
-#: ../../mod/profiles.php:363
-msgid "public profile"
-msgstr "publika profilo"
-
-#: ../../mod/profiles.php:366
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s ÅanÄis %2$s al &ldquo;%3$s&rdquo;"
-
-#: ../../mod/profiles.php:367
-#, php-format
-msgid " - Visit %1$s's %2$s"
-msgstr " - Vizitu la %2$s de %1$s"
-
-#: ../../mod/profiles.php:370
-#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s havas Äisdatigigan %2$s, ÅanÄas %3$s."
-
-#: ../../mod/profiles.php:429
-msgid "Profile deleted."
-msgstr "Profilo forviÅita."
-
-#: ../../mod/profiles.php:447 ../../mod/profiles.php:481
-msgid "Profile-"
-msgstr "Profilo-"
-
-#: ../../mod/profiles.php:466 ../../mod/profiles.php:508
-msgid "New profile created."
-msgstr "Nova profilo kreita."
-
-#: ../../mod/profiles.php:487
-msgid "Profile unavailable to clone."
-msgstr "Ne eblas kopii profilon."
-
-#: ../../mod/profiles.php:545
-msgid "Hide your contact/friend list from viewers of this profile?"
-msgstr "KaÅi vian liston de kontaktoj/amikoj al vidantoj de ĉi-tio profilo?"
-
-#: ../../mod/profiles.php:568
-msgid "Edit Profile Details"
-msgstr "Redakti Detalojn de Profilo"
-
-#: ../../mod/profiles.php:570
-msgid "View this profile"
-msgstr "Vidi la profilon."
-
-#: ../../mod/profiles.php:571
-msgid "Create a new profile using these settings"
-msgstr "Krei novan profilon kun tiaj agordoj"
-
-#: ../../mod/profiles.php:572
-msgid "Clone this profile"
-msgstr "Kopii ĉi tiun profilon"
-
-#: ../../mod/profiles.php:573
-msgid "Delete this profile"
-msgstr "ForviÅi ĉi tiun profilon"
-
-#: ../../mod/profiles.php:574
-msgid "Profile Name:"
-msgstr "Nomo de Profilo:"
-
-#: ../../mod/profiles.php:575
-msgid "Your Full Name:"
-msgstr "Via Plena Nomo:"
-
-#: ../../mod/profiles.php:576
-msgid "Title/Description:"
-msgstr "Titolo/Priskribo:"
-
-#: ../../mod/profiles.php:577
-msgid "Your Gender:"
-msgstr "Via Sekso:"
-
-#: ../../mod/profiles.php:578
-#, php-format
-msgid "Birthday (%s):"
-msgstr "NaskiÄtago (%s):"
-
-#: ../../mod/profiles.php:579
-msgid "Street Address:"
-msgstr "Adreso:"
-
-#: ../../mod/profiles.php:580
-msgid "Locality/City:"
-msgstr "Urbo:"
-
-#: ../../mod/profiles.php:581
-msgid "Postal/Zip Code:"
-msgstr "PoÅtkodo:"
-
-#: ../../mod/profiles.php:582
-msgid "Country:"
-msgstr "Lando:"
-
-#: ../../mod/profiles.php:583
-msgid "Region/State:"
-msgstr "Åœtato:"
-
-#: ../../mod/profiles.php:584
-msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
-msgstr "<span class=\"heart\">&hearts;</span> Civita Stato:"
-
-#: ../../mod/profiles.php:585
-msgid "Who: (if applicable)"
-msgstr "Kiu (se aplikeble):"
-
-#: ../../mod/profiles.php:586
-msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
-msgstr "Ekzemploj: cathy123, Cathy Williams, cathy@example.com"
-
-#: ../../mod/profiles.php:587
-msgid "Since [date]:"
-msgstr "Ekde [dato]:"
-
-#: ../../mod/profiles.php:588 ../../include/profile_advanced.php:46
-msgid "Sexual Preference:"
-msgstr "Seksa Prefero:"
-
-#: ../../mod/profiles.php:589
-msgid "Homepage URL:"
-msgstr "Adreso de HejmpaÄo:"
-
-#: ../../mod/profiles.php:590 ../../include/profile_advanced.php:50
-msgid "Hometown:"
-msgstr "Hejmurbo:"
-
-#: ../../mod/profiles.php:591 ../../include/profile_advanced.php:54
-msgid "Political Views:"
-msgstr "Politikaj Opinioj:"
-
-#: ../../mod/profiles.php:592
-msgid "Religious Views:"
-msgstr "Religiaj Opinioj:"
-
-#: ../../mod/profiles.php:593
-msgid "Public Keywords:"
-msgstr "Publikaj Ålosilvortoj:"
-
-#: ../../mod/profiles.php:594
-msgid "Private Keywords:"
-msgstr "Privataj Ålosilvortoj:"
-
-#: ../../mod/profiles.php:595 ../../include/profile_advanced.php:62
-msgid "Likes:"
-msgstr "Åœatoj:"
-
-#: ../../mod/profiles.php:596 ../../include/profile_advanced.php:64
-msgid "Dislikes:"
-msgstr "MalÅatoj:"
-
-#: ../../mod/profiles.php:597
-msgid "Example: fishing photography software"
-msgstr "Ekzemple: fiÅkapti fotografio programaro"
-
-#: ../../mod/profiles.php:598
-msgid "(Used for suggesting potential friends, can be seen by others)"
-msgstr "(Por sugesti amikoj. Videbla al aliaj.)"
-
-#: ../../mod/profiles.php:599
-msgid "(Used for searching profiles, never shown to others)"
-msgstr "(Por serĉi profilojn. Neniam videbla al aliaj.)"
-
-#: ../../mod/profiles.php:600
-msgid "Tell us about yourself..."
-msgstr "Diru al ni pri vi..."
-
-#: ../../mod/profiles.php:601
-msgid "Hobbies/Interests"
-msgstr "Åœatokupoj/Interesoj"
-
-#: ../../mod/profiles.php:602
-msgid "Contact information and Social Networks"
-msgstr "Kontaktaj informoj kaj Interkonaj Retejoj"
-
-#: ../../mod/profiles.php:603
-msgid "Musical interests"
-msgstr "Muzikaj interesoj"
-
-#: ../../mod/profiles.php:604
-msgid "Books, literature"
-msgstr "Libroj, literaturo"
-
-#: ../../mod/profiles.php:605
-msgid "Television"
-msgstr "Televido"
-
-#: ../../mod/profiles.php:606
-msgid "Film/dance/culture/entertainment"
-msgstr "Filmoj/dancoj/arto/amuzaĵoj"
-
-#: ../../mod/profiles.php:607
-msgid "Love/romance"
-msgstr "Amo/romanco"
-
-#: ../../mod/profiles.php:608
-msgid "Work/employment"
-msgstr "Laboro"
-
-#: ../../mod/profiles.php:609
-msgid "School/education"
-msgstr "Lernejo/eduko"
-
-#: ../../mod/profiles.php:614
-msgid ""
-"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
-"be visible to anybody using the internet."
-msgstr "Ĉi tio estas via <strong>publika</strong> profilo. Ĝi <strong>eble</strong> estas videbla al ĉiuj en interreto. "
-
-#: ../../mod/profiles.php:624 ../../mod/directory.php:111
-msgid "Age: "
-msgstr "AÄo:"
-
-#: ../../mod/profiles.php:663
-msgid "Edit/Manage Profiles"
-msgstr "Redakti/administri Profilojn"
-
-#: ../../mod/profiles.php:664 ../../boot.php:1102
-msgid "Change profile photo"
-msgstr "ÅœanÄi profilbildon"
-
-#: ../../mod/profiles.php:665 ../../boot.php:1103
-msgid "Create New Profile"
-msgstr "Krei novan profilon"
-
-#: ../../mod/profiles.php:676 ../../boot.php:1113
-msgid "Profile Image"
-msgstr "Profilbildo"
-
-#: ../../mod/profiles.php:678 ../../boot.php:1116
-msgid "visible to everybody"
-msgstr "videbla al ĉiuj"
-
-#: ../../mod/profiles.php:679 ../../boot.php:1117
-msgid "Edit visibility"
-msgstr "Redakti videblecon"
-
-#: ../../mod/filer.php:29 ../../include/conversation.php:951
-msgid "Save to Folder:"
-msgstr "Konservi en Dosierujo:"
-
-#: ../../mod/filer.php:29
-msgid "- select -"
-msgstr "- elekti -"
-
-#: ../../mod/tagger.php:103 ../../include/conversation.php:138
-#, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
-msgstr "%1$s markis la %3$s de %2$s kun %4$s"
-
-#: ../../mod/delegate.php:95
-msgid "No potential page delegates located."
-msgstr "Ne trovis delegiteblajn paÄojn."
-
-#: ../../mod/delegate.php:121
-msgid "Delegate Page Management"
-msgstr "Administrado de Delegitajn PaÄojn"
-
-#: ../../mod/delegate.php:123
-msgid ""
-"Delegates are able to manage all aspects of this account/page except for "
-"basic account settings. Please do not delegate your personal account to "
-"anybody that you do not trust completely."
-msgstr "Delegitoj povas administri ĉiujn ecojn de la konto/paÄo, escepte bazaj kontoagordoj. Bonvolu ne delegitigi vian personan konton al iu al kiu vi ne plene fidas."
-
-#: ../../mod/delegate.php:124
-msgid "Existing Page Managers"
-msgstr "Estantaj Administrantoj de la PaÄo"
-
-#: ../../mod/delegate.php:126
-msgid "Existing Page Delegates"
-msgstr "Estantaj Delegitoj de la PaÄo"
-
-#: ../../mod/delegate.php:128
-msgid "Potential Delegates"
-msgstr "Eblaj Delegitoj"
-
-#: ../../mod/delegate.php:131
-msgid "Add"
-msgstr "Aldoni"
-
-#: ../../mod/delegate.php:132
-msgid "No entries."
-msgstr "Neniom da afiÅoj."
-
-#: ../../mod/suggest.php:38 ../../view/theme/diabook/theme.php:626
-#: ../../include/contact_widgets.php:34
-msgid "Friend Suggestions"
-msgstr "Amikosugestoj"
-
-#: ../../mod/suggest.php:44
-msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
-msgstr "Neniu sugestoj disponeblas. Se ĉi tiu estas nova retejo, bonvolu reprovi post 24 horoj."
-
-#: ../../mod/suggest.php:61
-msgid "Ignore/Hide"
-msgstr "Ignori/KaÅi"
-
-#: ../../mod/directory.php:47 ../../view/theme/diabook/theme.php:624
-msgid "Global Directory"
-msgstr "Tutmonda Katalogo"
-
-#: ../../mod/directory.php:55
-msgid "Find on this site"
-msgstr "Trovi en ĉi retejo"
-
-#: ../../mod/directory.php:58
-msgid "Site Directory"
-msgstr "Reteja Katalogo"
-
-#: ../../mod/directory.php:114
-msgid "Gender: "
-msgstr "Sekso:"
-
-#: ../../mod/directory.php:140
-msgid "No entries (some entries may be hidden)."
-msgstr "Neniom da afiÅoj (kelkaj afiÅoj eble ne estas videbla)."
-
-#: ../../mod/invite.php:35
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s: Ne estas valida retpoÅtadreso."
-
-#: ../../mod/invite.php:59
-msgid "Please join us on Friendica"
-msgstr "Bonvolu aliÄi kun ni ĉe Friendica"
-
-#: ../../mod/invite.php:69
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s: La livero de la mesaÄo malsukcesis."
-
-#: ../../mod/invite.php:73
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "Sendis %d mesaÄon."
-msgstr[1] "Sendis %d mesaÄojn."
-
-#: ../../mod/invite.php:92
-msgid "You have no more invitations available"
-msgstr "Vi ne plu disponeblas invitaĵojn"
-
-#: ../../mod/invite.php:100
-#, php-format
-msgid ""
-"Visit %s for a list of public sites that you can join. Friendica members on "
-"other sites can all connect with each other, as well as with members of many"
-" other social networks."
-msgstr "Vizitu %s por listo de publikaj retejoj kie vi povas aliÄi. Anoj de Friendica ĉe aliaj retejoj povas konekti unu kun la alian, kaj ankaÅ­ kun membroj de multaj aliaj retejoj."
-
-#: ../../mod/invite.php:102
-#, php-format
-msgid ""
-"To accept this invitation, please visit and register at %s or any other "
-"public Friendica website."
-msgstr "Por akcepti ĉi tiu invito, bonvolu viziti kaj registriÄi ĉe %s au alia publika Friendica retejo."
-
-#: ../../mod/invite.php:103
-#, php-format
-msgid ""
-"Friendica sites all inter-connect to create a huge privacy-enhanced social "
-"web that is owned and controlled by its members. They can also connect with "
-"many traditional social networks. See %s for a list of alternate Friendica "
-"sites you can join."
-msgstr "Ĉiuj Friendica retejoj interkonektiÄas kaj kune faras grandan altprivatecan interkonan reton, kiun posedas kaj kontrolas Äiaj membroj. Ili ankaÅ­ povas konekti kun multe de tradiciaj interkonaj retejoj. Vidu %s por listo de publikaj retejoj kie vi povas aliÄi."
-
-#: ../../mod/invite.php:106
-msgid ""
-"Our apologies. This system is not currently configured to connect with other"
-" public sites or invite members."
-msgstr "Senkulpigu nin. La sistemo nuntempe ne estas agordita por konekti al aliaj retejoj au inviti membrojn."
-
-#: ../../mod/invite.php:111
-msgid "Send invitations"
-msgstr "Sendi invitojn"
-
-#: ../../mod/invite.php:112
-msgid "Enter email addresses, one per line:"
-msgstr "Entajpu retpoÅtadresojn, po unu por ĉiu linio."
-
-#: ../../mod/invite.php:114
-msgid ""
-"You are cordially invited to join me and other close friends on Friendica - "
-"and help us to create a better social web."
-msgstr "Ni bonkore invitas vin aliÄi kun ni kaj aliaj bonaj amikoj ĉe Friendica. Helpu nin krei pli bonan interkonan reton."
-
-#: ../../mod/invite.php:116
-msgid "You will need to supply this invitation code: $invite_code"
-msgstr "Vi bezonas ĉi-tiun invitkodon: $invite_code"
-
-#: ../../mod/invite.php:116
-msgid ""
-"Once you have registered, please connect with me via my profile page at:"
-msgstr "Kiam vi registris, bonvolu konekti al mi pere de mi profilo ĉe: "
-
-#: ../../mod/invite.php:118
-msgid ""
-"For more information about the Friendica project and why we feel it is "
-"important, please visit http://friendica.com"
-msgstr "Por pli da informoj pri Friendica, kaj kial ni pensas ke Äi estas grava, bonvolu viziti http://friendica.com"
-
-#: ../../mod/dfrn_confirm.php:119
-msgid ""
-"This may occasionally happen if contact was requested by both persons and it"
-" has already been approved."
-msgstr "Tio ĉi okazis de tempo al tempo se ambaÅ­ personoj petas kontakton ka Äi jam estas aprobita."
-
-#: ../../mod/dfrn_confirm.php:237
-msgid "Response from remote site was not understood."
-msgstr "Ne komprenis la rispondon de la fora retejo."
-
-#: ../../mod/dfrn_confirm.php:246
-msgid "Unexpected response from remote site: "
-msgstr "Neatendita rispondo de la fora retejo:"
-
-#: ../../mod/dfrn_confirm.php:254
-msgid "Confirmation completed successfully."
-msgstr "Konfirmo sukcese kompletigita."
-
-#: ../../mod/dfrn_confirm.php:256 ../../mod/dfrn_confirm.php:270
-#: ../../mod/dfrn_confirm.php:277
-msgid "Remote site reported: "
-msgstr "La fora retejo raportis:"
-
-#: ../../mod/dfrn_confirm.php:268
-msgid "Temporary failure. Please wait and try again."
-msgstr "Dumtempa eraro. Bonvolu atendi kaj provi refoje."
-
-#: ../../mod/dfrn_confirm.php:275
-msgid "Introduction failed or was revoked."
-msgstr "La prezento malsukcesis au estas revokita."
-
-#: ../../mod/dfrn_confirm.php:420
-msgid "Unable to set contact photo."
-msgstr "Neeblas agordi la kontaktbildo."
-
-#: ../../mod/dfrn_confirm.php:477 ../../include/diaspora.php:510
-#: ../../include/conversation.php:101
-#, php-format
-msgid "%1$s is now friends with %2$s"
-msgstr "%1$s amikiÄis kun %2$s"
-
-#: ../../mod/dfrn_confirm.php:562
-#, php-format
-msgid "No user record found for '%s' "
-msgstr "Ne trovis uzanton '%s' "
-
-#: ../../mod/dfrn_confirm.php:572
-msgid "Our site encryption key is apparently messed up."
-msgstr "Åœajnas kvazaÅ­ la ĉifroÅlosilo de nia retejo estas fuÅita."
-
-#: ../../mod/dfrn_confirm.php:583
-msgid "Empty site URL was provided or URL could not be decrypted by us."
-msgstr "Malplena adreso de retejo provizita, aŭ ni ne povis malĉifri la adreson."
-
-#: ../../mod/dfrn_confirm.php:604
-msgid "Contact record was not found for you on our site."
-msgstr "Kontakto ne trovita por vi en via retejo."
-
-#: ../../mod/dfrn_confirm.php:618
-#, php-format
-msgid "Site public key not available in contact record for URL %s."
-msgstr "Publika Ålosilo de retejo ne disponeblas en la kontaktrikordo por la URL adreso %s."
-
-#: ../../mod/dfrn_confirm.php:638
-msgid ""
-"The ID provided by your system is a duplicate on our system. It should work "
-"if you try again."
-msgstr "La identeco provizita de via sistemo estas duoblo ĉe nia sistemo. Ĝi eble funkcias se vi provas refoje."
-
-#: ../../mod/dfrn_confirm.php:649
-msgid "Unable to set your contact credentials on our system."
-msgstr "Ne sukcesis agordi la legitimaĵojn de via kontakto ĉe nia sistemo."
-
-#: ../../mod/dfrn_confirm.php:716
-msgid "Unable to update your contact profile details on our system"
-msgstr "Neeblas Äisdatigi viajn profildetalojn ĉe nia sistemo."
-
-#: ../../mod/dfrn_confirm.php:750
-#, php-format
-msgid "Connection accepted at %s"
-msgstr "Konekto akceptita je %s"
-
-#: ../../mod/dfrn_confirm.php:799
-#, php-format
-msgid "%1$s has joined %2$s"
-msgstr "%1$s aliÄis al %2$s"
-
-#: ../../addon/fromgplus/fromgplus.php:29
-msgid "Google+ Import Settings"
-msgstr "Google+ Importo"
-
-#: ../../addon/fromgplus/fromgplus.php:32
-msgid "Enable Google+ Import"
-msgstr "Aktivigi Äœoogle+ Importon"
-
-#: ../../addon/fromgplus/fromgplus.php:35
-msgid "Google Account ID"
-msgstr "Google Konto ID"
-
-#: ../../addon/fromgplus/fromgplus.php:55
-msgid "Google+ Import Settings saved."
-msgstr "Konservis Agordojn por Google+ Importo."
-
-#: ../../addon/facebook/facebook.php:521
-msgid "Facebook disabled"
-msgstr "Facebook malÅaltita"
-
-#: ../../addon/facebook/facebook.php:526
-msgid "Updating contacts"
-msgstr "Mi Äisdatigas la kontaktojn."
-
-#: ../../addon/facebook/facebook.php:549
-msgid "Facebook API key is missing."
-msgstr "La API Ålosilo de Facebook ne estas konata ĉi tie."
-
-#: ../../addon/facebook/facebook.php:556
-msgid "Facebook Connect"
-msgstr "Kontekto al Facebook"
-
-#: ../../addon/facebook/facebook.php:562
-msgid "Install Facebook connector for this account."
-msgstr "Instali la Facebook konektilo por ĉi tiu konto."
-
-#: ../../addon/facebook/facebook.php:569
-msgid "Remove Facebook connector"
-msgstr "Forigi la Facebook konektilon."
-
-#: ../../addon/facebook/facebook.php:574
-msgid ""
-"Re-authenticate [This is necessary whenever your Facebook password is "
-"changed.]"
-msgstr "ReaÅ­tentiÄi [Tio estas bezonata ĉiam kiam vi ÅanÄis vian pasvorton ĉe Facebook.]"
-
-#: ../../addon/facebook/facebook.php:581
-msgid "Post to Facebook by default"
-msgstr "Ĉiam afiÅi al Facebook."
-
-#: ../../addon/facebook/facebook.php:587
-msgid ""
-"Facebook friend linking has been disabled on this site. The following "
-"settings will have no effect."
-msgstr "Ligado kun Facebook amikoj estas malaktivita ĉe tiu retejo. La sekvantaj agordoj do ne havas validecon."
-
-#: ../../addon/facebook/facebook.php:591
-msgid ""
-"Facebook friend linking has been disabled on this site. If you disable it, "
-"you will be unable to re-enable it."
-msgstr "Ligado kun Facebook amikoj estas malaktivita ĉe tiu retejo. Se vi malÅaltas Äin, vi ne eblos ree Åalti Äin."
-
-#: ../../addon/facebook/facebook.php:594
-msgid "Link all your Facebook friends and conversations on this website"
-msgstr "Alligu ĉiujn viajn Facebook amikojn kaj konversaciojn je ĉi-tiu retejo."
-
-#: ../../addon/facebook/facebook.php:596
-msgid ""
-"Facebook conversations consist of your <em>profile wall</em> and your friend"
-" <em>stream</em>."
-msgstr "Facebok konversacioj konsistas el via <em>profilmuro</em> kaj la <em>fluo</em> de viaj amikoj."
-
-#: ../../addon/facebook/facebook.php:597
-msgid "On this website, your Facebook friend stream is only visible to you."
-msgstr "Je ĉi-tiu retejo, la fluo de viaj amikoj ĉe Facebook nur videblas al vi."
-
-#: ../../addon/facebook/facebook.php:598
-msgid ""
-"The following settings determine the privacy of your Facebook profile wall "
-"on this website."
-msgstr "La sekvontaj agordoj difinas la privatecon de via Facebook profilmuro je ĉi-tiu retejo."
-
-#: ../../addon/facebook/facebook.php:602
-msgid ""
-"On this website your Facebook profile wall conversations will only be "
-"visible to you"
-msgstr "Je ĉi-tiu retejo, la conversacioj sur via Facebook profilmuro nur videblas al vi."
-
-#: ../../addon/facebook/facebook.php:607
-msgid "Do not import your Facebook profile wall conversations"
-msgstr "Ne importi konversaciojn de via Facebook profilmuro"
-
-#: ../../addon/facebook/facebook.php:609
-msgid ""
-"If you choose to link conversations and leave both of these boxes unchecked,"
-" your Facebook profile wall will be merged with your profile wall on this "
-"website and your privacy settings on this website will be used to determine "
-"who may see the conversations."
-msgstr "Se vi elektas alligi conversaciojn kaj ne elektas tiujn butonojn, via Facebook profilmuro estas kunigota kun via profilmuro ĉi tie. Viaj privatecaj agordoj ĉi tie difinos kiu povas vidi la coversaciojn."
-
-#: ../../addon/facebook/facebook.php:614
-msgid "Comma separated applications to ignore"
-msgstr "Ignorotaj programoj, disigita per komo"
-
-#: ../../addon/facebook/facebook.php:698
-msgid "Problems with Facebook Real-Time Updates"
-msgstr "Problemoj kun Facebook Realtempaj Äœisdatigoj"
-
-#: ../../addon/facebook/facebook.php:726
-#: ../../include/contact_selectors.php:81
-msgid "Facebook"
-msgstr "Facebook"
-
-#: ../../addon/facebook/facebook.php:727
-msgid "Facebook Connector Settings"
-msgstr "Agordoj por la Facebook konektilo"
-
-#: ../../addon/facebook/facebook.php:742
-msgid "Facebook API Key"
-msgstr "Facebook API Ålosilo"
-
-#: ../../addon/facebook/facebook.php:752
-msgid ""
-"Error: it appears that you have specified the App-ID and -Secret in your "
-".htconfig.php file. As long as they are specified there, they cannot be set "
-"using this form.<br><br>"
-msgstr "Eraro: Åœajnas kvazaÅ­ vi agordis la App-ID kaj la sekreton en via .htconfig.php dosiero. Kiam ili estas agordita tie, vi ne povas agordi Äin en tiu ĉi formo.<br><br>"
-
-#: ../../addon/facebook/facebook.php:757
-msgid ""
-"Error: the given API Key seems to be incorrect (the application access token"
-" could not be retrieved)."
-msgstr "Eraro: La API Ålosilo aspektas malÄusta (ne eblas ricevi la programa atingoĵetono)."
-
-#: ../../addon/facebook/facebook.php:759
-msgid "The given API Key seems to work correctly."
-msgstr "La API Ålosilo Åajne Äuste funkcias."
-
-#: ../../addon/facebook/facebook.php:761
-msgid ""
-"The correctness of the API Key could not be detected. Somthing strange's "
-"going on."
-msgstr "Ne povis kontroli la Äustecon de la API Ålosilo. Ia stranga afero okazas. "
-
-#: ../../addon/facebook/facebook.php:764
-msgid "App-ID / API-Key"
-msgstr "Programo ID / API Åœlosilo"
-
-#: ../../addon/facebook/facebook.php:765
-msgid "Application secret"
-msgstr "Programo sekreto"
-
-#: ../../addon/facebook/facebook.php:766
-#, php-format
-msgid "Polling Interval in minutes (minimum %1$s minutes)"
-msgstr "Intervalo de enketo en minutoj (minimume %1$s minutoj)"
-
-#: ../../addon/facebook/facebook.php:767
-msgid ""
-"Synchronize comments (no comments on Facebook are missed, at the cost of "
-"increased system load)"
-msgstr "Sinkronigi komentojn (vi ricevas ĉiujn komentojn de Facebook, sed la Åargo de la sistemo iom kreskas)"
-
-#: ../../addon/facebook/facebook.php:771
-msgid "Real-Time Updates"
-msgstr "Realtempaj Äœisdatigoj"
-
-#: ../../addon/facebook/facebook.php:775
-msgid "Real-Time Updates are activated."
-msgstr "Realtempaj Äœisdatigoj estas Åaltita"
-
-#: ../../addon/facebook/facebook.php:776
-msgid "Deactivate Real-Time Updates"
-msgstr "MalÅalti Realtempaj Äœisdatigoj"
-
-#: ../../addon/facebook/facebook.php:778
-msgid "Real-Time Updates not activated."
-msgstr "Realtempaj Äœisdatigoj estas malÅaltita"
-
-#: ../../addon/facebook/facebook.php:778
-msgid "Activate Real-Time Updates"
-msgstr "Åœalti Realtempaj Äœisdatigoj"
-
-#: ../../addon/facebook/facebook.php:797 ../../addon/dav/layout.fnk.php:360
-msgid "The new values have been saved."
-msgstr "Konservis novajn valorojn."
-
-#: ../../addon/facebook/facebook.php:821
-msgid "Post to Facebook"
-msgstr "AfiÅi al Facebook"
-
-#: ../../addon/facebook/facebook.php:919
-msgid ""
-"Post to Facebook cancelled because of multi-network access permission "
-"conflict."
-msgstr "AfiÅado al Facebook nuligita ĉar okazis konflikto en la multretpermesoj."
-
-#: ../../addon/facebook/facebook.php:1139
-msgid "View on Friendica"
-msgstr "Vidi ĉe Friendica"
-
-#: ../../addon/facebook/facebook.php:1172
-msgid "Facebook post failed. Queued for retry."
-msgstr "Malsukcesis afiÅi ĉe Facebook. Enigita en vico."
-
-#: ../../addon/facebook/facebook.php:1212
-msgid "Your Facebook connection became invalid. Please Re-authenticate."
-msgstr "Via Facbook konekto iÄis nevalida. Bonvolu reaÅ­tentiÄi."
-
-#: ../../addon/facebook/facebook.php:1213
-msgid "Facebook connection became invalid"
-msgstr "Facebook konekto iÄis nevalida."
-
-#: ../../addon/facebook/facebook.php:1214
-#, php-format
-msgid ""
-"Hi %1$s,\n"
-"\n"
-"The connection between your accounts on %2$s and Facebook became invalid. This usually happens after you change your Facebook-password. To enable the connection again, you have to %3$sre-authenticate the Facebook-connector%4$s."
-msgstr "Saluton %1$s,\n\nla kontekto inter viaj kontoj ĉe %2$s kaj Facebook malvalidiÄis. Tio kutime okazas post kiam via Åangas vian pasvorton ĉe Facebook. Por reaktivigi la konekto, vi bezonas %3$sreaÅ­tentiÄi la Facebook konektilon%4$s."
-
-#: ../../addon/snautofollow/snautofollow.php:32
-msgid "StatusNet AutoFollow settings updated."
-msgstr "Äœidatigis StatusNet AutoFollow agordojn."
-
-#: ../../addon/snautofollow/snautofollow.php:56
-msgid "StatusNet AutoFollow Settings"
-msgstr "StatusNet AutoFollow agordoj"
-
-#: ../../addon/snautofollow/snautofollow.php:58
-msgid "Automatically follow any StatusNet followers/mentioners"
-msgstr "Aŭtomate sekvu ĉiujn StatusNet sekvantojn/menciantojn."
-
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:184
-msgid "Lifetime of the cache (in hours)"
-msgstr "VivodaÅ­ro de kaÅmemoro (horoj)"
-
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:189
-msgid "Cache Statistics"
-msgstr "Statistikoj pri kaÅmemoro"
-
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:192
-msgid "Number of items"
-msgstr "Kvanto da eroj"
-
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:194
-msgid "Size of the cache"
-msgstr "Grando de la kaÅmemoro"
-
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:196
-msgid "Delete the whole cache"
-msgstr "ForviÅi la kaÅmemoron"
-
-#: ../../addon/widgets/widget_like.php:58
-#, php-format
-msgid "%d person likes this"
-msgid_plural "%d people like this"
-msgstr[0] "%d homo Åatas tiun"
-msgstr[1] "%d homoj Åatas tiun"
-
-#: ../../addon/widgets/widget_like.php:61
-#, php-format
-msgid "%d person doesn't like this"
-msgid_plural "%d people don't like this"
-msgstr[0] "%d homo malÅatas tiun"
-msgstr[1] "%d homo malÅatas tiun"
-
-#: ../../addon/widgets/widget_friendheader.php:40
-msgid "Get added to this list!"
-msgstr "IÄu membro de ĉi tiu listo!"
-
-#: ../../addon/widgets/widgets.php:56
-msgid "Generate new key"
-msgstr "Generi novan ĉifroÅlosilon"
-
-#: ../../addon/widgets/widgets.php:59
-msgid "Widgets key"
-msgstr "Ŝlosilo por fenestraĵoj"
-
-#: ../../addon/widgets/widgets.php:61
-msgid "Widgets available"
-msgstr "Disponeblaj fenestraĵoj"
-
-#: ../../addon/widgets/widget_friends.php:40
-msgid "Connect on Friendica!"
-msgstr "Konekti ĉe Friendica!"
-
-#: ../../addon/yourls/yourls.php:55
-msgid "YourLS Settings"
-msgstr "\"YourLS\" Agordoj"
-
-#: ../../addon/yourls/yourls.php:57
-msgid "URL: http://"
-msgstr "URL adreso: http://"
-
-#: ../../addon/yourls/yourls.php:62
-msgid "Username:"
-msgstr "Salutnomo:"
-
-#: ../../addon/yourls/yourls.php:67
-msgid "Password:"
-msgstr "Pasvorto:"
-
-#: ../../addon/yourls/yourls.php:72
-msgid "Use SSL "
-msgstr "Uzi SSL "
-
-#: ../../addon/yourls/yourls.php:92
-msgid "yourls Settings saved."
-msgstr "Konservis la agordojn de YourLS."
-
-#: ../../addon/ljpost/ljpost.php:39
-msgid "Post to LiveJournal"
-msgstr "AfiÅi ĉe LiveJournal"
-
-#: ../../addon/ljpost/ljpost.php:70
-msgid "LiveJournal Post Settings"
-msgstr "Agordoj pri afiÅoj ĉe LiveJournal"
-
-#: ../../addon/ljpost/ljpost.php:72
-msgid "Enable LiveJournal Post Plugin"
-msgstr "Åœalti la LiveJournal-afiÅo kromprogramon."
-
-#: ../../addon/ljpost/ljpost.php:77
-msgid "LiveJournal username"
-msgstr "LiveJournal Salutnomo"
-
-#: ../../addon/ljpost/ljpost.php:82
-msgid "LiveJournal password"
-msgstr "LiveJournal pasvorto"
-
-#: ../../addon/ljpost/ljpost.php:87
-msgid "Post to LiveJournal by default"
-msgstr "DefaÅ­lte afiÅi al LiveJournal"
-
-#: ../../addon/nsfw/nsfw.php:47
-msgid "Not Safe For Work (General Purpose Content Filter) settings"
-msgstr "Not Safe For Work (Äenerala filtrilo por enhavoj) agordoj"
-
-#: ../../addon/nsfw/nsfw.php:49
-msgid ""
-"This plugin looks in posts for the words/text you specify below, and "
-"collapses any content containing those keywords so it is not displayed at "
-"inappropriate times, such as sexual innuendo that may be improper in a work "
-"setting. It is polite and recommended to tag any content containing nudity "
-"with #NSFW. This filter can also match any other word/text you specify, and"
-" can thereby be used as a general purpose content filter."
-msgstr "Tiu kromprogramo serĉas la malsupre agordatajn vortojn en afiÅoj kaj malvidebligis ilin se ili enhavas iun vorton. Tiel, afiÅoj ne montriÄis kiuj enhavas maladekvatan enhavon, ekzemple seksumaj aferoj, kiuj ne estas adekvata, ekzemple en la laborejo. En la reto, oni kutime markas tiajn afiÅojn #NSFW - Not Safe For Work - ne adekvata por la laborejo. La filtrilo ankaÅ­ serĉas ĉiujn vortojn kiujn vi agordas kaj tial funkcias kiel Äenerala filtrilo."
-
-#: ../../addon/nsfw/nsfw.php:50
-msgid "Enable Content filter"
-msgstr "Åœalti la filtrilo por la enhavo"
-
-#: ../../addon/nsfw/nsfw.php:53
-msgid "Comma separated list of keywords to hide"
-msgstr "Perkome disigita listo da kaÅontaj Ålosilvortoj"
-
-#: ../../addon/nsfw/nsfw.php:58
-msgid "Use /expression/ to provide regular expressions"
-msgstr "Uzu /expr/ por provizi regulajn esprimojn."
-
-#: ../../addon/nsfw/nsfw.php:74
-msgid "NSFW Settings saved."
-msgstr "NSFW agordoj konservitaj."
-
-#: ../../addon/nsfw/nsfw.php:121
-#, php-format
-msgid "%s - Click to open/close"
-msgstr "%s - Klaku por malfermi/fermi"
-
-#: ../../addon/page/page.php:61 ../../addon/page/page.php:91
-msgid "Forums"
-msgstr "Forumoj"
-
-#: ../../addon/page/page.php:76 ../../addon/page/page.php:110
-#: ../../addon/showmore/showmore.php:87 ../../include/contact_widgets.php:188
-#: ../../include/conversation.php:476 ../../boot.php:529
-msgid "show more"
-msgstr "montri pli"
-
-#: ../../addon/page/page.php:129
-msgid "Forums:"
-msgstr "Forumoj:"
-
-#: ../../addon/page/page.php:163
-msgid "Page settings updated."
-msgstr "PaÄajn agordojn Äisdatigita."
-
-#: ../../addon/page/page.php:192
-msgid "Page Settings"
-msgstr "PaÄaj Agordoj"
-
-#: ../../addon/page/page.php:194
-msgid "How many forums to display on sidebar without paging"
-msgstr "Montri tiom da forumoj en la flanka strio sen paÄigo"
-
-#: ../../addon/page/page.php:197
-msgid "Randomise Page/Forum list"
-msgstr "Hazardigi la liston de PaÄoj/Forumoj"
-
-#: ../../addon/page/page.php:200
-msgid "Show pages/forums on profile page"
-msgstr "Montri paÄojn/forumojn sur la profilpaÄo"
-
-#: ../../addon/planets/planets.php:150
-msgid "Planets Settings"
-msgstr "Agordo pri Planets"
-
-#: ../../addon/planets/planets.php:152
-msgid "Enable Planets Plugin"
-msgstr "Åœalti la Planets kromprogamon"
-
-#: ../../addon/communityhome/communityhome.php:28
-#: ../../addon/communityhome/communityhome.php:34
-#: ../../addon/communityhome/twillingham/communityhome.php:28
-#: ../../addon/communityhome/twillingham/communityhome.php:34
-#: ../../include/nav.php:64 ../../boot.php:849
-msgid "Login"
-msgstr "Ensaluti"
-
-#: ../../addon/communityhome/communityhome.php:29
-#: ../../addon/communityhome/twillingham/communityhome.php:29
-msgid "OpenID"
-msgstr "OpenID"
-
-#: ../../addon/communityhome/communityhome.php:38
-#: ../../addon/communityhome/twillingham/communityhome.php:38
-msgid "Latest users"
-msgstr "Ä´usaj uzantoj"
-
-#: ../../addon/communityhome/communityhome.php:81
-#: ../../addon/communityhome/twillingham/communityhome.php:81
-msgid "Most active users"
-msgstr "Plej aktivaj uzantoj"
-
-#: ../../addon/communityhome/communityhome.php:98
-msgid "Latest photos"
-msgstr "Ä´usaj bildoj"
-
-#: ../../addon/communityhome/communityhome.php:133
-msgid "Latest likes"
-msgstr "Ä´usaj Åatitaĵoj"
-
-#: ../../addon/communityhome/communityhome.php:155
-#: ../../view/theme/diabook/theme.php:562 ../../include/text.php:1315
-#: ../../include/conversation.php:45 ../../include/conversation.php:118
-msgid "event"
-msgstr "okazo"
-
-#: ../../addon/dav/common/wdcal_configuration.php:126
-msgid "U.S. Time Format (mm/dd/YYYY)"
-msgstr "Usona datformato (mm/dd/YYYY)"
-
-#: ../../addon/dav/common/wdcal_configuration.php:205
-msgid "German Time Format (dd.mm.YYYY)"
-msgstr "Germana datformato (dd.mm.YYYY)"
-
-#: ../../addon/dav/common/calendar.fnk.php:517
-#: ../../addon/dav/common/calendar.fnk.php:533
-#: ../../addon/dav/layout.fnk.php:200
-msgid "Error"
-msgstr "Eraro"
-
-#: ../../addon/dav/common/calendar.fnk.php:568
-#: ../../addon/dav/common/calendar.fnk.php:637
-#: ../../addon/dav/common/calendar.fnk.php:664
-#: ../../addon/dav/layout.fnk.php:231
-msgid "No access"
-msgstr "No access"
-
-#: ../../addon/dav/layout.fnk.php:119
-msgid "New event"
-msgstr "Nova okazo"
-
-#: ../../addon/dav/layout.fnk.php:123
-msgid "Today"
-msgstr "HodiaÅ­"
-
-#: ../../addon/dav/layout.fnk.php:132
-msgid "Day"
-msgstr "Tago"
-
-#: ../../addon/dav/layout.fnk.php:139
-msgid "Week"
-msgstr "Semajno"
-
-#: ../../addon/dav/layout.fnk.php:146
-msgid "Month"
-msgstr "Monato"
-
-#: ../../addon/dav/layout.fnk.php:151
-msgid "Reload"
-msgstr "ReÅargi"
-
-#: ../../addon/dav/layout.fnk.php:162
-msgid "Date"
-msgstr "Dato"
-
-#: ../../addon/dav/layout.fnk.php:224
-msgid "Not found"
-msgstr "Ne trovita"
-
-#: ../../addon/dav/layout.fnk.php:292 ../../addon/dav/layout.fnk.php:365
-msgid "Go back to the calendar"
-msgstr "Iri reen al la kalendaro"
-
-#: ../../addon/dav/layout.fnk.php:300
-msgid "Starts"
-msgstr "Komencas"
-
-#: ../../addon/dav/layout.fnk.php:305
-msgid "Ends"
-msgstr "Finas"
-
-#: ../../addon/dav/layout.fnk.php:312
-msgid "Description"
-msgstr "Priskribo"
-
-#: ../../addon/dav/layout.fnk.php:315
-msgid "Notification"
-msgstr "Atentigo"
-
-#: ../../addon/dav/layout.fnk.php:324
-msgid "Minutes"
-msgstr "Minutoj"
-
-#: ../../addon/dav/layout.fnk.php:327
-msgid "Hours"
-msgstr "Horoj"
-
-#: ../../addon/dav/layout.fnk.php:330
-msgid "Days"
-msgstr "Tagoj"
-
-#: ../../addon/dav/layout.fnk.php:331
-msgid "before"
-msgstr "antaÅ­"
-
-#: ../../addon/dav/layout.fnk.php:367
-msgid "Calendar Settings"
-msgstr "Kalendaraj Agordoj"
-
-#: ../../addon/dav/layout.fnk.php:373
-msgid "Date format"
-msgstr "Datformato"
-
-#: ../../addon/dav/layout.fnk.php:382
-msgid "Time zone"
-msgstr "Horzono"
-
-#: ../../addon/dav/layout.fnk.php:387
-msgid "Limitations"
-msgstr "Limigoj"
-
-#: ../../addon/dav/layout.fnk.php:391
-msgid "Warning"
-msgstr "Averto"
-
-#: ../../addon/dav/layout.fnk.php:395
-msgid "Synchronization (iPhone, Thunderbird Lightning, Android, ...)"
-msgstr "Sinkronigo (iPhone, Thunderbird Lightning, Android, ...)"
-
-#: ../../addon/dav/layout.fnk.php:402
-msgid "Synchronizing this calendar with the iPhone"
-msgstr "Sinkronigi tiun kalendaron kun la iPhone"
-
-#: ../../addon/dav/layout.fnk.php:413
-msgid "Synchronizing your Friendica-Contacts with the iPhone"
-msgstr "Sinkronigi viajn Friendica kontaktojn kun la iPhone"
-
-#: ../../addon/dav/dav_carddav_backend_friendica_community.inc.php:37
-msgid "Friendica-Contacts"
-msgstr "Friendica Kontaktoj"
-
-#: ../../addon/dav/dav_carddav_backend_friendica_community.inc.php:38
-msgid "Your Friendica-Contacts"
-msgstr "Viaj Friendica Kontaktoj"
-
-#: ../../addon/dav/main.php:244
-msgid "Calendar"
-msgstr "Kalendaro"
-
-#: ../../addon/dav/main.php:247
-msgid "Extended calendar with CalDAV-support"
-msgstr "Etendita kalendaro kun CalDAV subteno"
-
-#: ../../addon/dav/main.php:263
-msgid "The database tables have been installed."
-msgstr "La tabeloj estas instalita en la datumbazo"
-
-#: ../../addon/dav/main.php:264
-msgid "An error occurred during the installation."
-msgstr "Eraro okazis dum instalado"
-
-#: ../../addon/dav/main.php:280
-msgid "No system-wide settings yet."
-msgstr "AnkoraÅ­ ne disponablas tutsistemaj agordoj"
-
-#: ../../addon/dav/main.php:283
-msgid "Database status"
-msgstr "Stato de datumbazo"
-
-#: ../../addon/dav/main.php:286
-msgid "Installed"
-msgstr "Instalita"
-
-#: ../../addon/dav/main.php:289
-msgid "Upgrade needed"
-msgstr "Äœisdatigo bezonata"
-
-#: ../../addon/dav/main.php:289
-msgid "Upgrade"
-msgstr "Äœisdatigo"
-
-#: ../../addon/dav/main.php:292
-msgid "Not installed"
-msgstr "Ne instalita"
-
-#: ../../addon/dav/main.php:292
-msgid "Install"
-msgstr "Instali"
-
-#: ../../addon/dav/main.php:297
-msgid "Troubleshooting"
-msgstr "Problemsolvado"
-
-#: ../../addon/dav/main.php:298
-msgid "Manual creation of the database tables:"
-msgstr "Mana kreado de tabeloj en la datumbazo:"
-
-#: ../../addon/dav/main.php:299
-msgid "Show SQL-statements"
-msgstr "Montru SQL ordonojn"
-
-#: ../../addon/dav/calendar.friendica.fnk.php:151
-msgid "Private Calendar"
-msgstr "Privata kalendaro"
-
-#: ../../addon/dav/calendar.friendica.fnk.php:158
-msgid "Friendica Events: Mine"
-msgstr "Friendica Okazoj: Miaj"
-
-#: ../../addon/dav/calendar.friendica.fnk.php:161
-msgid "Friendica Events: Contacts"
-msgstr "Friendica Okazoj: De Kontaktoj"
-
-#: ../../addon/uhremotestorage/uhremotestorage.php:84
-#, php-format
-msgid ""
-"Allow to use your friendica id (%s) to connecto to external unhosted-enabled"
-" storage (like ownCloud). See <a "
-"href=\"http://www.w3.org/community/unhosted/wiki/RemoteStorage#WebFinger\">RemoteStorage"
-" WebFinger</a>"
-msgstr "Permesi vian identecon ĉe Friendica (%s) por konekti al eksteraj konservejoj subtenata de unhosted (ekz. OwnCloud). Vidu <a href=\"http://www.w3.org/community/unhosted/wiki/RemoteStorage#WebFinger\">RemoteStorage WebFinger</a>"
-
-#: ../../addon/uhremotestorage/uhremotestorage.php:85
-msgid "Template URL (with {category})"
-msgstr "URL adreso de Åablono (kun {category})"
-
-#: ../../addon/uhremotestorage/uhremotestorage.php:86
-msgid "OAuth end-point"
-msgstr "OAuth finpunkto"
-
-#: ../../addon/uhremotestorage/uhremotestorage.php:87
-msgid "Api"
-msgstr "Api"
-
-#: ../../addon/membersince/membersince.php:18
-msgid "Member since:"
-msgstr "Membro ekde:"
-
-#: ../../addon/tictac/tictac.php:20
-msgid "Three Dimensional Tic-Tac-Toe"
-msgstr "Tri-dimensia Tiktakto"
-
-#: ../../addon/tictac/tictac.php:53
-msgid "3D Tic-Tac-Toe"
-msgstr "3D Tiktakto"
-
-#: ../../addon/tictac/tictac.php:58
-msgid "New game"
-msgstr "Nova ludo"
-
-#: ../../addon/tictac/tictac.php:59
-msgid "New game with handicap"
-msgstr "Nova ludo kun handikapo"
-
-#: ../../addon/tictac/tictac.php:60
-msgid ""
-"Three dimensional tic-tac-toe is just like the traditional game except that "
-"it is played on multiple levels simultaneously. "
-msgstr "Tri-dimensia tiktakto similas la tradician ludon, sed estas ludata sur pluraj ebenoj dum la sama tempo."
-
-#: ../../addon/tictac/tictac.php:61
-msgid ""
-"In this case there are three levels. You win by getting three in a row on "
-"any level, as well as up, down, and diagonally across the different levels."
-msgstr "Ĉi-kaze ekzistas tri ebenoj. Vi venkas vicigante tri signojn en una vico, en la sama ebeno, same kiel supren, malsupren aŭ diagonale, trans la ebenoj."
-
-#: ../../addon/tictac/tictac.php:63
-msgid ""
-"The handicap game disables the center position on the middle level because "
-"the player claiming this square often has an unfair advantage."
-msgstr "La ludo kun handikapo malvalidigas la mezan pozicion sur la meza ebeno, ĉar la ludisto kio okupas ĉi tiun pozicion ĉiam havas avantaÄon."
-
-#: ../../addon/tictac/tictac.php:182
-msgid "You go first..."
-msgstr "Estas via vico unue."
-
-#: ../../addon/tictac/tictac.php:187
-msgid "I'm going first this time..."
-msgstr "Ĉi-tempe, unue estas mia vico."
-
-#: ../../addon/tictac/tictac.php:193
-msgid "You won!"
-msgstr "Vi venkis!"
-
-#: ../../addon/tictac/tictac.php:199 ../../addon/tictac/tictac.php:224
-msgid "\"Cat\" game!"
-msgstr "Sendecida ludo!"
-
-#: ../../addon/tictac/tictac.php:222
-msgid "I won!"
-msgstr "Mi venkis!"
-
-#: ../../addon/randplace/randplace.php:169
-msgid "Randplace Settings"
-msgstr "Randplace agordoj."
-
-#: ../../addon/randplace/randplace.php:171
-msgid "Enable Randplace Plugin"
-msgstr "Aktivigi la Randplace kromprogramon."
-
-#: ../../addon/dwpost/dwpost.php:39
-msgid "Post to Dreamwidth"
-msgstr "AfiÅi al Dreamwidth"
-
-#: ../../addon/dwpost/dwpost.php:70
-msgid "Dreamwidth Post Settings"
-msgstr "Agordoj por AfiÅoj al Dreamwidth"
-
-#: ../../addon/dwpost/dwpost.php:72
-msgid "Enable dreamwidth Post Plugin"
-msgstr "Åœalti la Dreamwidth Kromprogramon"
-
-#: ../../addon/dwpost/dwpost.php:77
-msgid "dreamwidth username"
-msgstr "Dreamwidth salutnomo"
-
-#: ../../addon/dwpost/dwpost.php:82
-msgid "dreamwidth password"
-msgstr "Dreamwidth pasvorto"
-
-#: ../../addon/dwpost/dwpost.php:87
-msgid "Post to dreamwidth by default"
-msgstr "DefaÅ­lte afiÅi al Dreamwidth"
-
-#: ../../addon/drpost/drpost.php:35
-msgid "Post to Drupal"
-msgstr "AfiÅi al Drupal"
-
-#: ../../addon/drpost/drpost.php:72
-msgid "Drupal Post Settings"
-msgstr "Agordoj por Drupal AfiÅoj"
-
-#: ../../addon/drpost/drpost.php:74
-msgid "Enable Drupal Post Plugin"
-msgstr "Åœalti la Drupal-afiÅo Kromprogramon"
-
-#: ../../addon/drpost/drpost.php:79
-msgid "Drupal username"
-msgstr "Drupal salutnomo"
-
-#: ../../addon/drpost/drpost.php:84
-msgid "Drupal password"
-msgstr "Drupal pasvorto"
-
-#: ../../addon/drpost/drpost.php:89
-msgid "Post Type - article,page,or blog"
-msgstr "Tipo de AfiÅoj - article, page, aÅ­ blog"
-
-#: ../../addon/drpost/drpost.php:94
-msgid "Drupal site URL"
-msgstr "URL adreso de Drupal retejo"
-
-#: ../../addon/drpost/drpost.php:99
-msgid "Drupal site uses clean URLS"
-msgstr "Drupal retejo uzas purajn URL adresojn"
-
-#: ../../addon/drpost/drpost.php:104
-msgid "Post to Drupal by default"
-msgstr "DefaÅ­lte afiÅi ĉe Drupal"
-
-#: ../../addon/drpost/drpost.php:184 ../../addon/wppost/wppost.php:201
-#: ../../addon/blogger/blogger.php:172 ../../addon/posterous/posterous.php:189
-msgid "Post from Friendica"
-msgstr "AfiÅo de Friendica"
-
-#: ../../addon/startpage/startpage.php:83
-msgid "Startpage Settings"
-msgstr "StartpaÄaj Agordoj"
-
-#: ../../addon/startpage/startpage.php:85
-msgid "Home page to load after login - leave blank for profile wall"
-msgstr "HejmpaÄo Åargonta post la ensaluto - Lasu malplena por profilmuro."
-
-#: ../../addon/startpage/startpage.php:88
-msgid "Examples: &quot;network&quot; or &quot;notifications/system&quot;"
-msgstr "Ekzemple: &quot;network&quot; aÅ­ &quot;notifications/system&quot;"
-
-#: ../../addon/geonames/geonames.php:143
-msgid "Geonames settings updated."
-msgstr "Äœidatigis la Geonames agordojn."
-
-#: ../../addon/geonames/geonames.php:179
-msgid "Geonames Settings"
-msgstr "Geonames Agordoj"
-
-#: ../../addon/geonames/geonames.php:181
-msgid "Enable Geonames Plugin"
-msgstr "Åœalti la Geonames Kromprogramon"
-
-#: ../../addon/public_server/public_server.php:126
-#: ../../addon/testdrive/testdrive.php:94
-#, php-format
-msgid "Your account on %s will expire in a few days."
-msgstr "Via konto ĉe %s senvalidiÄos post kelkaj tagoj."
-
-#: ../../addon/public_server/public_server.php:127
-msgid "Your Friendica account is about to expire."
-msgstr "Via konto ĉe Friendica baldaÅ­ senvalidiÄos."
-
-#: ../../addon/public_server/public_server.php:128
-#, php-format
-msgid ""
-"Hi %1$s,\n"
-"\n"
-"Your account on %2$s will expire in less than five days. You may keep your account by logging in at least once every 30 days"
-msgstr "Saluton %1$s,\n\nVia konto ĉe %2$s senvalidiÄos post malpli ol kvin tagoj. Vi povas konservi vian konton se vi ensalutas almenaÅ­ ĉiujn 30 tagojn. "
-
-#: ../../addon/js_upload/js_upload.php:43
-msgid "Upload a file"
-msgstr "AlÅuti dosieron"
-
-#: ../../addon/js_upload/js_upload.php:44
-msgid "Drop files here to upload"
-msgstr "Åœovmeti dosierojn ĉi tie por alÅuti ilin."
-
-#: ../../addon/js_upload/js_upload.php:46
-msgid "Failed"
-msgstr "Malsukcesi"
-
-#: ../../addon/js_upload/js_upload.php:297
-msgid "No files were uploaded."
-msgstr "Neniom da dosieroj alÅutita."
-
-#: ../../addon/js_upload/js_upload.php:303
-msgid "Uploaded file is empty"
-msgstr "AlÅutita dosiero estas malplena."
-
-#: ../../addon/js_upload/js_upload.php:326
-msgid "File has an invalid extension, it should be one of "
-msgstr "Dosiero havas nevalidan sufikson. Äœi estu unu de "
-
-#: ../../addon/js_upload/js_upload.php:337
-msgid "Upload was cancelled, or server error encountered"
-msgstr "AlÅutado estas nuligita aÅ­ okazis eraro sur la servilo"
-
-#: ../../addon/oembed.old/oembed.php:30
-msgid "OEmbed settings updated"
-msgstr "Äœisdatigis OEmbed agordojn"
-
-#: ../../addon/oembed.old/oembed.php:43
-msgid "Use OEmbed for YouTube videos"
-msgstr "Uzi OEmbed por YouTube videtoj"
-
-#: ../../addon/oembed.old/oembed.php:71
-msgid "URL to embed:"
-msgstr "Enigi la URL adreson:"
-
-#: ../../addon/impressum/impressum.php:36
-msgid "Impressum"
-msgstr "Kolofono"
-
-#: ../../addon/impressum/impressum.php:49
-#: ../../addon/impressum/impressum.php:51
-#: ../../addon/impressum/impressum.php:83
-msgid "Site Owner"
-msgstr "Proprietulo de la paÄo"
-
-#: ../../addon/impressum/impressum.php:49
-#: ../../addon/impressum/impressum.php:87
-msgid "Email Address"
-msgstr "RetpoÅta Adreso"
-
-#: ../../addon/impressum/impressum.php:54
-#: ../../addon/impressum/impressum.php:85
-msgid "Postal Address"
-msgstr "PoÅta Adreso"
-
-#: ../../addon/impressum/impressum.php:60
-msgid ""
-"The impressum addon needs to be configured!<br />Please add at least the "
-"<tt>owner</tt> variable to your config file. For other variables please "
-"refer to the README file of the addon."
-msgstr "La kolofono (impressum) kromprogramo bezonas agordojn!<br />Bonvolu aldoni minimume la <tt>owner</tt> variablon al via agorda dosiero. Por aliaj variabloj, bonvolu legi la README dosieron de la kromprogramo."
-
-#: ../../addon/impressum/impressum.php:83
-msgid "The page operators name."
-msgstr "La nomo de la funkciigisto de la retejo."
-
-#: ../../addon/impressum/impressum.php:84
-msgid "Site Owners Profile"
-msgstr "Profilo de la Proprietulo de la Retejo"
-
-#: ../../addon/impressum/impressum.php:84
-msgid "Profile address of the operator."
-msgstr "La profilo de la funkciigisto de la retejo."
-
-#: ../../addon/impressum/impressum.php:85
-msgid "How to contact the operator via snail mail. You can use BBCode here."
-msgstr "Kiel poÅte kontakti la funkciigisto de la retejo. Vi eblas uzi BBCode ĉi tie."
-
-#: ../../addon/impressum/impressum.php:86
-msgid "Notes"
-msgstr "Notoj"
-
-#: ../../addon/impressum/impressum.php:86
-msgid ""
-"Additional notes that are displayed beneath the contact information. You can"
-" use BBCode here."
-msgstr "Pli da notoj kiuj aperas sub la kontaktinformoj. Vi eblas uzi BBCode ĉi tie."
-
-#: ../../addon/impressum/impressum.php:87
-msgid "How to contact the operator via email. (will be displayed obfuscated)"
-msgstr "Kiel kontakti la funkciigiston de la retejo per retpoÅto. (montriÄos vuale) "
-
-#: ../../addon/impressum/impressum.php:88
-msgid "Footer note"
-msgstr "PaÄpiednoto"
-
-#: ../../addon/impressum/impressum.php:88
-msgid "Text for the footer. You can use BBCode here."
-msgstr "Teksto por la paÄpiedo. Vie eblas uzi BBCode ĉi tie."
-
-#: ../../addon/buglink/buglink.php:15
-msgid "Report Bug"
-msgstr "Skribi cimraporton"
-
-#: ../../addon/notimeline/notimeline.php:32
-msgid "No Timeline settings updated."
-msgstr "No Timeline agordojn Äisdatigita."
-
-#: ../../addon/notimeline/notimeline.php:56
-msgid "No Timeline Settings"
-msgstr "No Timeline Agordoj"
-
-#: ../../addon/notimeline/notimeline.php:58
-msgid "Disable Archive selector on profile wall"
-msgstr "Malaktivigi la Arkivo elektilo sur la profilmuro"
-
-#: ../../addon/blockem/blockem.php:51
-msgid "\"Blockem\" Settings"
-msgstr "\"Blockem\" Agordoj"
-
-#: ../../addon/blockem/blockem.php:53
-msgid "Comma separated profile URLS to block"
-msgstr "Blokotaj URL adresoj, disigita per komo"
-
-#: ../../addon/blockem/blockem.php:70
-msgid "BLOCKEM Settings saved."
-msgstr "Konservis Agordojn de BLOCKEM."
-
-#: ../../addon/blockem/blockem.php:105
-#, php-format
-msgid "Blocked %s - Click to open/close"
-msgstr "%s blokita - Klaku por malfermi/fermi"
-
-#: ../../addon/blockem/blockem.php:160
-msgid "Unblock Author"
-msgstr "Malbloki AÅ­toron"
-
-#: ../../addon/blockem/blockem.php:162
-msgid "Block Author"
-msgstr "Bloki AÅ­toron"
-
-#: ../../addon/blockem/blockem.php:194
-msgid "blockem settings updated"
-msgstr "Äœisdatigis la blockem agordojn"
-
-#: ../../addon/qcomment/qcomment.php:51
-msgid ":-)"
-msgstr ":-)"
-
-#: ../../addon/qcomment/qcomment.php:51
-msgid ":-("
-msgstr ":-("
-
-#: ../../addon/qcomment/qcomment.php:51
-msgid "lol"
-msgstr "lol"
-
-#: ../../addon/qcomment/qcomment.php:54
-msgid "Quick Comment Settings"
-msgstr "Agordoj pri Rapidaj Komentoj"
-
-#: ../../addon/qcomment/qcomment.php:56
-msgid ""
-"Quick comments are found near comment boxes, sometimes hidden. Click them to"
-" provide simple replies."
-msgstr "Rapidaj komentoj troviÄas apud komentkampoj, kelkfoje kaÅita. Klaku ilin por provizi simplajn rispondojn."
-
-#: ../../addon/qcomment/qcomment.php:57
-msgid "Enter quick comments, one per line"
-msgstr "Entajpu rapidaj komentoj, po unu je linio."
-
-#: ../../addon/qcomment/qcomment.php:75
-msgid "Quick Comment settings saved."
-msgstr "Konservis agordojn pri rapidaj komentoj."
-
-#: ../../addon/openstreetmap/openstreetmap.php:71
-msgid "Tile Server URL"
-msgstr "Adreso de Kahelservilo"
-
-#: ../../addon/openstreetmap/openstreetmap.php:71
-msgid ""
-"A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" "
-"target=\"_blank\">public tile servers</a>"
-msgstr "Listo de <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">publikaj kahelserviloj</a>"
-
-#: ../../addon/openstreetmap/openstreetmap.php:72
-msgid "Default zoom"
-msgstr "DefaÅ­lta zoma faktoro"
-
-#: ../../addon/openstreetmap/openstreetmap.php:72
-msgid "The default zoom level. (1:world, 18:highest)"
-msgstr "La defaÅ­lta zoma faktoro. (1:tutmonda, 18:plej proksima)"
-
-#: ../../addon/libertree/libertree.php:36
-msgid "Post to libertree"
-msgstr "AfiÅi al libertree"
-
-#: ../../addon/libertree/libertree.php:67
-msgid "libertree Post Settings"
-msgstr "Agordoj por AfiÅoj ĉe libertree"
-
-#: ../../addon/libertree/libertree.php:69
-msgid "Enable Libertree Post Plugin"
-msgstr "Aktivigi Kromprogramon por AfiÅoj ĉe libertree"
-
-#: ../../addon/libertree/libertree.php:74
-msgid "Libertree API token"
-msgstr "Libertree API ĵetono"
-
-#: ../../addon/libertree/libertree.php:79
-msgid "Libertree site URL"
-msgstr "URL adreso de libertree retejo:"
-
-#: ../../addon/libertree/libertree.php:84
-msgid "Post to Libertree by default"
-msgstr "DefaÅ­lte afiÅi ĉe Libertree"
-
-#: ../../addon/mathjax/mathjax.php:37
-msgid ""
-"The MathJax addon renders mathematical formulae written using the LaTeX "
-"syntax surrounded by the usual $$ or an eqnarray block in the postings of "
-"your wall,network tab and private mail."
-msgstr "La Mathjax kromprogramo bildigas matematikajn formulojn skribitajn en la LaTeX sintakso, cirkaÅ­igita de la komuna $$ aÅ­ eqnarray bloko en afiÅoj ĉe via muro, Reto folio kaj privataj mesaÄoj."
-
-#: ../../addon/mathjax/mathjax.php:38
-msgid "Use the MathJax renderer"
-msgstr "Ĉu uzi la Mathjax bildigilo"
-
-#: ../../addon/mathjax/mathjax.php:74
-msgid "MathJax Base URL"
-msgstr "Mathjax Baza URL Adreso"
-
-#: ../../addon/mathjax/mathjax.php:74
-msgid ""
-"The URL for the javascript file that should be included to use MathJax. Can "
-"be either the MathJax CDN or another installation of MathJax."
-msgstr "La URL adreso por la javascript dosiero kiu estas inkluzivigonta por uzi Mathjaz. Eblas esti aÅ­ la Mathjax CDN aÅ­ alia Mathjax instalo."
-
-#: ../../addon/editplain/editplain.php:46
-msgid "Editplain settings updated."
-msgstr "Äœisdatigis la Editplain agordojn."
-
-#: ../../addon/editplain/editplain.php:76
-msgid "Editplain Settings"
-msgstr "Agordoj por Editplain"
-
-#: ../../addon/editplain/editplain.php:78
-msgid "Disable richtext status editor"
-msgstr "MalÅalti la riĉteksto-redaktilon"
-
-#: ../../addon/gravatar/gravatar.php:71
-msgid "generic profile image"
-msgstr "komuna profilbildo"
-
-#: ../../addon/gravatar/gravatar.php:72
-msgid "random geometric pattern"
-msgstr "loteca geometria skemo"
-
-#: ../../addon/gravatar/gravatar.php:73
-msgid "monster face"
-msgstr "monstrobildo"
-
-#: ../../addon/gravatar/gravatar.php:74
-msgid "computer generated face"
-msgstr "komputita vizaÄo"
-
-#: ../../addon/gravatar/gravatar.php:75
-msgid "retro arcade style face"
-msgstr "retrostila videoludstila vizaÄo"
-
-#: ../../addon/gravatar/gravatar.php:87
-msgid "Default avatar image"
-msgstr "DefaÅ­lta avatarbildo"
-
-#: ../../addon/gravatar/gravatar.php:87
-msgid "Select default avatar image if none was found at Gravatar. See README"
-msgstr "Elektu defaÅ­ltan avatarbildon se neniu troviÄis ĉe Gravatar. Vidu README."
-
-#: ../../addon/gravatar/gravatar.php:88
-msgid "Rating of images"
-msgstr "Pritakso de bildoj"
-
-#: ../../addon/gravatar/gravatar.php:88
-msgid "Select the appropriate avatar rating for your site. See README"
-msgstr "Elektu la Äustan pritakson de via avataro por via retejo. Vidu README."
-
-#: ../../addon/gravatar/gravatar.php:102
-msgid "Gravatar settings updated."
-msgstr "Gravatar agordoj Äisdatigitaj."
-
-#: ../../addon/testdrive/testdrive.php:95
-msgid "Your Friendica test account is about to expire."
-msgstr "Via Friendica provkonto baldaÅ­ malaktiviÄos."
-
-#: ../../addon/testdrive/testdrive.php:96
-#, php-format
-msgid ""
-"Hi %1$s,\n"
-"\n"
-"Your test account on %2$s will expire in less than five days. We hope you enjoyed this test drive and use this opportunity to find a permanent Friendica website for your integrated social communications. A list of public sites is available at http://dir.friendica.com/siteinfo - and for more information on setting up your own Friendica server please see the Friendica project website at http://friendica.com."
-msgstr "Saluton %1$s,\n\nVia testkonto ĉe %2$s senvalidiÄos post malpli ol kvin tagoj. Vi esperas ke vi Äuis la teston kaj baldaÅ­ trovosÄustan Friendica retejon por via integrita sociala komunikado. Listo de publikaj retejoj troviÄas ĉe http://dir.friendica.com/siteinfo - kaj por pli da informoj pri kiel instali vian propran Friendica servilon, bonvolu viziti la retejon de la Friendica projekton ĉe http://friendica.com."
-
-#: ../../addon/pageheader/pageheader.php:50
-msgid "\"pageheader\" Settings"
-msgstr "\"pageheader\" Agordoj"
-
-#: ../../addon/pageheader/pageheader.php:68
-msgid "pageheader Settings saved."
-msgstr "Konservis Agordojn de pageheader."
-
-#: ../../addon/ijpost/ijpost.php:39
-msgid "Post to Insanejournal"
-msgstr "AfiÅi al Insanejournal"
-
-#: ../../addon/ijpost/ijpost.php:70
-msgid "InsaneJournal Post Settings"
-msgstr "Agordoj pri Insaenejournal AfiÅoj"
-
-#: ../../addon/ijpost/ijpost.php:72
-msgid "Enable InsaneJournal Post Plugin"
-msgstr "Åœalti la InsaneJournal afiÅo kromprogramon."
-
-#: ../../addon/ijpost/ijpost.php:77
-msgid "InsaneJournal username"
-msgstr "Salutnomo ĉe InsaneJournal"
-
-#: ../../addon/ijpost/ijpost.php:82
-msgid "InsaneJournal password"
-msgstr "Pasvorto ĉe InsaneJournal"
-
-#: ../../addon/ijpost/ijpost.php:87
-msgid "Post to InsaneJournal by default"
-msgstr "DefaÅ­lte afiÅi ĉe InsaneJournal"
-
-#: ../../addon/viewsrc/viewsrc.php:37
-msgid "View Source"
-msgstr "Vidi Fonton"
-
-#: ../../addon/statusnet/statusnet.php:134
-msgid "Post to StatusNet"
-msgstr "AfiÅi ĉe StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:176
-msgid ""
-"Please contact your site administrator.<br />The provided API URL is not "
-"valid."
-msgstr "Bonvolu kontaki vian retejan administranton.<br />La API URL adreso ne validas."
-
-#: ../../addon/statusnet/statusnet.php:204
-msgid "We could not contact the StatusNet API with the Path you entered."
-msgstr "Ni ne povis trovi la StatusNet API kun la vojo kiun vi entajpis."
-
-#: ../../addon/statusnet/statusnet.php:232
-msgid "StatusNet settings updated."
-msgstr "StatusNet agordoj Äisdatigita."
-
-#: ../../addon/statusnet/statusnet.php:257
-msgid "StatusNet Posting Settings"
-msgstr "Agordoj por StausNet afiÅoj"
-
-#: ../../addon/statusnet/statusnet.php:271
-msgid "Globally Available StatusNet OAuthKeys"
-msgstr "Äœeneralaj disponeblaj StatusNet OAuth Ålosiloj"
-
-#: ../../addon/statusnet/statusnet.php:272
-msgid ""
-"There are preconfigured OAuth key pairs for some StatusNet servers "
-"available. If you are useing one of them, please use these credentials. If "
-"not feel free to connect to any other StatusNet instance (see below)."
-msgstr "Disponeblas antaÅ­agorditaj Ålosilparoj por kelkaj StatusNet serviloj. Se via uzas iun de iu, bonvolu uzi unun de tiuj legitimaĵojn. Se ne, bonvolu konekti al iu alia StatusNet servilo (vidu malsupre)."
-
-#: ../../addon/statusnet/statusnet.php:280
-msgid "Provide your own OAuth Credentials"
-msgstr "Provizi viajn proprajn OAuth legitimaĵojn"
-
-#: ../../addon/statusnet/statusnet.php:281
-msgid ""
-"No consumer key pair for StatusNet found. Register your Friendica Account as"
-" an desktop client on your StatusNet account, copy the consumer key pair "
-"here and enter the API base root.<br />Before you register your own OAuth "
-"key pair ask the administrator if there is already a key pair for this "
-"Friendica installation at your favorited StatusNet installation."
-msgstr "Ne trovis klientajn Ålosilojn por StatusNet. Registru vian Friendica konton kiel klientkomputilo/desktop client en via StausNet konto. Kopiu la klientajn Ålosilojn ĉi tien kaj entajpu la baza API radiko.<br />AntaÅ­ vi registros viajn proprajn OAuth Ålosilojn, demandu al la administranto ĉu jam ekzistas Ålosiloj por ĉi-tiu Friendia retejo je via StatusNet retejo."
-
-#: ../../addon/statusnet/statusnet.php:283
-msgid "OAuth Consumer Key"
-msgstr "OAuth Åœlosilo de Kliento"
-
-#: ../../addon/statusnet/statusnet.php:286
-msgid "OAuth Consumer Secret"
-msgstr "OAuth Sekreto de Kliento"
-
-#: ../../addon/statusnet/statusnet.php:289
-msgid "Base API Path (remember the trailing /)"
-msgstr "Baza vojo al la API (ne forgesu la finan /)"
-
-#: ../../addon/statusnet/statusnet.php:310
-msgid ""
-"To connect to your StatusNet account click the button below to get a "
-"security code from StatusNet which you have to copy into the input box below"
-" and submit the form. Only your <strong>public</strong> posts will be posted"
-" to StatusNet."
-msgstr "Por konekti al vian konton ĉe StatusNet, klaku la malsupran butonon por atingi sekurecan kodon de StatusNet, kiun vi devas alglui en la malsupra kampo kaj sendi la formon. Nur viaj <strong>publikaj</strong> afiÅoj estos afiÅota al StatusNet."
-
-#: ../../addon/statusnet/statusnet.php:311
-msgid "Log in with StatusNet"
-msgstr "Ensaluti kun StatusNet."
-
-#: ../../addon/statusnet/statusnet.php:313
-msgid "Copy the security code from StatusNet here"
-msgstr "Alglui la kodon de StatusNet ĉi tie:"
-
-#: ../../addon/statusnet/statusnet.php:319
-msgid "Cancel Connection Process"
-msgstr "Nuligi Konektadon"
-
-#: ../../addon/statusnet/statusnet.php:321
-msgid "Current StatusNet API is"
-msgstr "La nuna StatusNet API estas"
-
-#: ../../addon/statusnet/statusnet.php:322
-msgid "Cancel StatusNet Connection"
-msgstr "Nuligi Konekton al StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:333 ../../addon/twitter/twitter.php:189
-msgid "Currently connected to: "
-msgstr "Konektita al:"
-
-#: ../../addon/statusnet/statusnet.php:334
-msgid ""
-"If enabled all your <strong>public</strong> postings can be posted to the "
-"associated StatusNet account. You can choose to do so by default (here) or "
-"for every posting separately in the posting options when writing the entry."
-msgstr "Kiam Åaltita, ĉiuj <strong>publikaj</strong> afiÅoj de vi ankaÅ­ eblas esti afiÅota al la asociigita StatusNet konto. Vi povas elekti Äin defaÅ­lte (ĉi tie) au unuope por ĉiuj afiÅoj kiam vi skribos ilin."
-
-#: ../../addon/statusnet/statusnet.php:336
-msgid ""
-"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile "
-"details from unknown viewers?</em>) the link potentially included in public "
-"postings relayed to StatusNet will lead the visitor to a blank page "
-"informing the visitor that the access to your profile has been restricted."
-msgstr "<strong>Averto</strong>: LaÅ­ viaj privatecaj agordoj (<em>KaÅi viajn profilajn detalojn al nekonataj spektantoj?</em>), la ligilo en publikaj afiÅoj plusendata al StatusNet gvidas vizitontojn al malplena paÄo sciigante ilin ke atingo al via profilo estas lmitigita."
-
-#: ../../addon/statusnet/statusnet.php:339
-msgid "Allow posting to StatusNet"
-msgstr "Permesi afiÅojn al StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:342
-msgid "Send public postings to StatusNet by default"
-msgstr "DefaÅ­lte sendi publikajn afiÅojn al StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:345
-msgid "Send linked #-tags and @-names to StatusNet"
-msgstr "Sendi ligitajn #-etikedojn kaj @-nomon al StatusNet"
-
-#: ../../addon/statusnet/statusnet.php:350 ../../addon/twitter/twitter.php:206
-msgid "Clear OAuth configuration"
-msgstr "ForviÅi OAuth agordojn"
-
-#: ../../addon/statusnet/statusnet.php:559
-msgid "API URL"
-msgstr "API URL adreso"
-
-#: ../../addon/infiniteimprobabilitydrive/infiniteimprobabilitydrive.php:19
-msgid "Infinite Improbability Drive"
-msgstr "Senfina Probableca Pelilo"
-
-#: ../../addon/tumblr/tumblr.php:36
-msgid "Post to Tumblr"
-msgstr "AfiÅi al Tumblr"
-
-#: ../../addon/tumblr/tumblr.php:67
-msgid "Tumblr Post Settings"
-msgstr "Agordoj pri afiÅoj ĉe Tumblr"
-
-#: ../../addon/tumblr/tumblr.php:69
-msgid "Enable Tumblr Post Plugin"
-msgstr "Åœalti la kromprogramon por Tumblr afiÅoj"
-
-#: ../../addon/tumblr/tumblr.php:74
-msgid "Tumblr login"
-msgstr "Salutnomo ĉe Tumblr"
-
-#: ../../addon/tumblr/tumblr.php:79
-msgid "Tumblr password"
-msgstr "Pasvorto ĉe Tumblr"
-
-#: ../../addon/tumblr/tumblr.php:84
-msgid "Post to Tumblr by default"
-msgstr "DefaÅ­lte afiÅi ĉe Tumblr"
-
-#: ../../addon/numfriends/numfriends.php:46
-msgid "Numfriends settings updated."
-msgstr "Äœisdatigis agordojn por Numfriends."
-
-#: ../../addon/numfriends/numfriends.php:77
-msgid "Numfriends Settings"
-msgstr "Agordoj por Numfriends"
-
-#: ../../addon/numfriends/numfriends.php:79
-msgid "How many contacts to display on profile sidebar"
-msgstr "Kiom da kontaktoj mi montru en la flanka strio"
-
-#: ../../addon/gnot/gnot.php:48
-msgid "Gnot settings updated."
-msgstr "Äœisdatigis Gnot agordojn."
-
-#: ../../addon/gnot/gnot.php:79
-msgid "Gnot Settings"
-msgstr "Agordoj por Gnot"
-
-#: ../../addon/gnot/gnot.php:81
-msgid ""
-"Allows threading of email comment notifications on Gmail and anonymising the"
-" subject line."
-msgstr "Permesas la ĉenadon de retpoÅtaj atentigoj pri komentoj ĉe Gmail kan anonimigado de la temlinio."
-
-#: ../../addon/gnot/gnot.php:82
-msgid "Enable this plugin/addon?"
-msgstr "Åœalti tiun kromprogramon?"
-
-#: ../../addon/gnot/gnot.php:97
-#, php-format
-msgid "[Friendica:Notify] Comment to conversation #%d"
-msgstr "[Friendica:Atentigo] Komento pri konversacio #%d"
-
-#: ../../addon/wppost/wppost.php:42
-msgid "Post to Wordpress"
-msgstr "AfiÅi al Wordpress"
-
-#: ../../addon/wppost/wppost.php:76
-msgid "WordPress Post Settings"
-msgstr "Agordoj por WordPress afiÅojn"
-
-#: ../../addon/wppost/wppost.php:78
-msgid "Enable WordPress Post Plugin"
-msgstr "Åœalti la Wordpress-afiÅo kromprogramon"
-
-#: ../../addon/wppost/wppost.php:83
-msgid "WordPress username"
-msgstr "WordPress salutnomo"
-
-#: ../../addon/wppost/wppost.php:88
-msgid "WordPress password"
-msgstr "WordPress pasvorto"
-
-#: ../../addon/wppost/wppost.php:93
-msgid "WordPress API URL"
-msgstr "Wordpress API URL adreso"
-
-#: ../../addon/wppost/wppost.php:98
-msgid "Post to WordPress by default"
-msgstr "DefaÅ­lte afiÅi al WordPress"
-
-#: ../../addon/wppost/wppost.php:103
-msgid "Provide a backlink to the Friendica post"
-msgstr "Provizi re-ligilon al la Friendica afiÅo"
-
-#: ../../addon/wppost/wppost.php:207
-msgid "Read the original post and comment stream on Friendica"
-msgstr "Legi la originalan afiÅon kaj komentfluo ĉe Friendica"
-
-#: ../../addon/showmore/showmore.php:38
-msgid "\"Show more\" Settings"
-msgstr "\"Montri pli\" agordoj"
-
-#: ../../addon/showmore/showmore.php:41
-msgid "Enable Show More"
-msgstr "Åœalti \"montri pli\""
-
-#: ../../addon/showmore/showmore.php:44
-msgid "Cutting posts after how much characters"
-msgstr "Limitigi afiÅojn al kiom da literoj"
-
-#: ../../addon/showmore/showmore.php:65
-msgid "Show More Settings saved."
-msgstr "Konservis \"montri pli\" agordojn."
-
-#: ../../addon/piwik/piwik.php:79
-msgid ""
-"This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> "
-"analytics tool."
-msgstr "Ĉi retejo uzas <a href='http://www.piwik.org'>Piwik</a> kiel retuma analizilo."
-
-#: ../../addon/piwik/piwik.php:82
-#, php-format
-msgid ""
-"If you do not want that your visits are logged this way you <a href='%s'>can"
-" set a cookie to prevent Piwik from tracking further visits of the site</a> "
-"(opt-out)."
-msgstr "Se ni ne protokolu viajn vizitojn tiel, vi <a href='%s'>povas agordi kuketon por malpermesi Piwik al plu protokoli pliajn vizitojn</a> (mem-for-elekti / opt-out)."
-
-#: ../../addon/piwik/piwik.php:90
-msgid "Piwik Base URL"
-msgstr "Piwik baza URL adreso"
-
-#: ../../addon/piwik/piwik.php:90
-msgid ""
-"Absolute path to your Piwik installation. (without protocol (http/s), with "
-"trailing slash)"
-msgstr "Absoluta vojo al via Piwik instalo. (sen protokolo (http/s), inkluzive vosta oblikva streketo)"
-
-#: ../../addon/piwik/piwik.php:91
-msgid "Site ID"
-msgstr "Reteja idento"
-
-#: ../../addon/piwik/piwik.php:92
-msgid "Show opt-out cookie link?"
-msgstr "Montru ligilon al kuketo por mem-for-elekti (opt-out)?"
-
-#: ../../addon/piwik/piwik.php:93
-msgid "Asynchronous tracking"
-msgstr "Nesinkrona spurado."
-
-#: ../../addon/twitter/twitter.php:73
-msgid "Post to Twitter"
-msgstr "AfiÅi ĉe Twitter"
-
-#: ../../addon/twitter/twitter.php:122
-msgid "Twitter settings updated."
-msgstr "Äœisdatigis Twitter agordojn."
-
-#: ../../addon/twitter/twitter.php:146
-msgid "Twitter Posting Settings"
-msgstr "Agordoj por afiÅi ĉe Twitter"
-
-#: ../../addon/twitter/twitter.php:153
-msgid ""
-"No consumer key pair for Twitter found. Please contact your site "
-"administrator."
-msgstr "Ne trovis klientajn Ålosilojn por Twitter. Bonvolu kontakti vian retejan administranton."
-
-#: ../../addon/twitter/twitter.php:172
-msgid ""
-"At this Friendica instance the Twitter plugin was enabled but you have not "
-"yet connected your account to your Twitter account. To do so click the "
-"button below to get a PIN from Twitter which you have to copy into the input"
-" box below and submit the form. Only your <strong>public</strong> posts will"
-" be posted to Twitter."
-msgstr "Je ĉi tiu Friendica retejo, la Twitter kromprogramo jam estas Åaltita, sed via konto anokoraÅ­ ne estas konektita kun via Twitter konto. Por fari tion, klaku la supran butonon por atingi nombrokodon de Twitter, kion vi kopiu en la supran eniga ĉelo, kaj sendu la formularon. Nur viaj <strong>publikaj</strong> afiÅoj estas plusendota al Twitter. "
-
-#: ../../addon/twitter/twitter.php:173
-msgid "Log in with Twitter"
-msgstr "Ensaluti kun Twitter"
-
-#: ../../addon/twitter/twitter.php:175
-msgid "Copy the PIN from Twitter here"
-msgstr "Alglui la PIN de Twitter ĉi tie"
-
-#: ../../addon/twitter/twitter.php:190
-msgid ""
-"If enabled all your <strong>public</strong> postings can be posted to the "
-"associated Twitter account. You can choose to do so by default (here) or for"
-" every posting separately in the posting options when writing the entry."
-msgstr "Kiam Åaltita, ĉiuj <strong>publikaj</strong> afiÅoj de vi ankaÅ­ eblas esti afiÅota al la asociigita Twitter konto. Vi povas elekti Äin defaÅ­lte (ĉi tie) au unuope por ĉiuj afiÅoj kiam vi skribos ilin."
-
-#: ../../addon/twitter/twitter.php:192
-msgid ""
-"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile "
-"details from unknown viewers?</em>) the link potentially included in public "
-"postings relayed to Twitter will lead the visitor to a blank page informing "
-"the visitor that the access to your profile has been restricted."
-msgstr "<strong>Averto</strong>: LaÅ­ viaj privatecaj agordoj (<em>KaÅi viajn profilajn detalojn al nekonataj spektantoj?</em>), la ligilo en publikaj afiÅoj plusendata al Twitter gvidas vizitontojn al malplena paÄo sciigante ilin ke atingo al via profilo estas lmitigita."
-
-#: ../../addon/twitter/twitter.php:195
-msgid "Allow posting to Twitter"
-msgstr "Permesi afiÅojn al Twitter"
-
-#: ../../addon/twitter/twitter.php:198
-msgid "Send public postings to Twitter by default"
-msgstr "DefaÅ­lte sendi publikajn afiÅojn al Twitter"
-
-#: ../../addon/twitter/twitter.php:201
-msgid "Send linked #-tags and @-names to Twitter"
-msgstr "Sendi ligitajn #-etikedojn kaj @-nomon al Twitter"
-
-#: ../../addon/twitter/twitter.php:389
-msgid "Consumer key"
-msgstr "Åœlosilo de Kliento"
-
-#: ../../addon/twitter/twitter.php:390
-msgid "Consumer secret"
-msgstr "Sekreto de Kliento"
-
-#: ../../addon/irc/irc.php:44
-msgid "IRC Settings"
-msgstr "IRC Agordoj"
-
-#: ../../addon/irc/irc.php:46
-msgid "Channel(s) to auto connect (comma separated)"
-msgstr "AÅ­tomate konektiÄi al la kanalo(j) (disigita per komo)"
-
-#: ../../addon/irc/irc.php:51
-msgid "Popular Channels (comma separated)"
-msgstr "Popularaj kanaloj (disigita per komo)"
-
-#: ../../addon/irc/irc.php:69
-msgid "IRC settings saved."
-msgstr "IRC agordoj konservitaj."
-
-#: ../../addon/irc/irc.php:74
-msgid "IRC Chatroom"
-msgstr "IRC babilejo"
-
-#: ../../addon/irc/irc.php:96
-msgid "Popular Channels"
-msgstr "Popularaj Kanaloj"
-
-#: ../../addon/blogger/blogger.php:42
-msgid "Post to blogger"
-msgstr "AfiÅi al blogger"
-
-#: ../../addon/blogger/blogger.php:74
-msgid "Blogger Post Settings"
-msgstr "Agordo pri Blogger AfiÅoj"
-
-#: ../../addon/blogger/blogger.php:76
-msgid "Enable Blogger Post Plugin"
-msgstr "Åœalti la Blogger afiÅo kromprogramon"
-
-#: ../../addon/blogger/blogger.php:81
-msgid "Blogger username"
-msgstr "Blogger uzantonomo"
-
-#: ../../addon/blogger/blogger.php:86
-msgid "Blogger password"
-msgstr "Blogger pasvorto"
-
-#: ../../addon/blogger/blogger.php:91
-msgid "Blogger API URL"
-msgstr "Blogger API URL"
-
-#: ../../addon/blogger/blogger.php:96
-msgid "Post to Blogger by default"
-msgstr "DefaÅ­lte afiÅi al Blogger"
-
-#: ../../addon/posterous/posterous.php:37
-msgid "Post to Posterous"
-msgstr "AfiÅi al Posterous"
-
-#: ../../addon/posterous/posterous.php:70
-msgid "Posterous Post Settings"
-msgstr "Agordoj pri afiÅoj ĉe Posterous"
-
-#: ../../addon/posterous/posterous.php:72
-msgid "Enable Posterous Post Plugin"
-msgstr "Åœalti la Poserous-afiÅo kromprogramon"
-
-#: ../../addon/posterous/posterous.php:77
-msgid "Posterous login"
-msgstr "Posterous salutnomo"
-
-#: ../../addon/posterous/posterous.php:82
-msgid "Posterous password"
-msgstr "Posterous pasvorto"
-
-#: ../../addon/posterous/posterous.php:87
-msgid "Posterous site ID"
-msgstr "Idento de Posterous retejo"
-
-#: ../../addon/posterous/posterous.php:92
-msgid "Posterous API token"
-msgstr "API ĵetono de Posterous retejo"
-
-#: ../../addon/posterous/posterous.php:97
-msgid "Post to Posterous by default"
-msgstr "DefaÅ­lte afiÅi al Posterous"
-
-#: ../../view/theme/cleanzero/config.php:82
-#: ../../view/theme/diabook/config.php:192
-#: ../../view/theme/quattro/config.php:54 ../../view/theme/dispy/config.php:72
-msgid "Theme settings"
-msgstr "Agordoj pri la etoso"
-
-#: ../../view/theme/cleanzero/config.php:83
-msgid "Set resize level for images in posts and comments (width and height)"
-msgstr "Agordi la regrandignivelo por bildoj en afiÅoj kaj komentoj (larÄo kaj alto)"
-
-#: ../../view/theme/cleanzero/config.php:84
-#: ../../view/theme/diabook/config.php:193
-#: ../../view/theme/dispy/config.php:73
-msgid "Set font-size for posts and comments"
-msgstr "Agordi la tiparan grandon por afiÅoj kaj komentoj"
-
-#: ../../view/theme/cleanzero/config.php:85
-msgid "Set theme width"
-msgstr "Agordi la larÄo por la etoso"
-
-#: ../../view/theme/cleanzero/config.php:86
-#: ../../view/theme/quattro/config.php:56
-msgid "Color scheme"
-msgstr "Kolorskemo"
-
-#: ../../view/theme/diabook/theme.php:127 ../../include/nav.php:49
-#: ../../include/nav.php:115
-msgid "Your posts and conversations"
-msgstr "Viaj afiÅoj kaj komunikadoj"
-
-#: ../../view/theme/diabook/theme.php:128 ../../include/nav.php:50
-msgid "Your profile page"
-msgstr "Via profilo"
-
-#: ../../view/theme/diabook/theme.php:129
-msgid "Your contacts"
-msgstr "Viaj kontaktoj"
-
-#: ../../view/theme/diabook/theme.php:130 ../../include/nav.php:51
-msgid "Your photos"
-msgstr "Viaj bildoj"
-
-#: ../../view/theme/diabook/theme.php:131 ../../include/nav.php:52
-msgid "Your events"
-msgstr "Viaj okazoj"
-
-#: ../../view/theme/diabook/theme.php:132 ../../include/nav.php:53
-msgid "Personal notes"
-msgstr "Personaj notoj"
-
-#: ../../view/theme/diabook/theme.php:132 ../../include/nav.php:53
-msgid "Your personal photos"
-msgstr "Viaj personaj bildoj"
-
-#: ../../view/theme/diabook/theme.php:134
-#: ../../view/theme/diabook/theme.php:643
-#: ../../view/theme/diabook/theme.php:747
-#: ../../view/theme/diabook/config.php:201
-msgid "Community Pages"
-msgstr "Komunumaj paÄoj"
-
-#: ../../view/theme/diabook/theme.php:490
-#: ../../view/theme/diabook/theme.php:749
-#: ../../view/theme/diabook/config.php:203
-msgid "Community Profiles"
-msgstr "Komunumaj Profiloj"
-
-#: ../../view/theme/diabook/theme.php:511
-#: ../../view/theme/diabook/theme.php:754
-#: ../../view/theme/diabook/config.php:208
-msgid "Last users"
-msgstr "Ä´usaj uzantoj"
-
-#: ../../view/theme/diabook/theme.php:540
-#: ../../view/theme/diabook/theme.php:756
-#: ../../view/theme/diabook/config.php:210
-msgid "Last likes"
-msgstr "Ä´usaj Åatitaj elementoj"
-
-#: ../../view/theme/diabook/theme.php:585
-#: ../../view/theme/diabook/theme.php:755
-#: ../../view/theme/diabook/config.php:209
-msgid "Last photos"
-msgstr "Ä´usaj bildoj"
-
-#: ../../view/theme/diabook/theme.php:622
-#: ../../view/theme/diabook/theme.php:752
-#: ../../view/theme/diabook/config.php:206
-msgid "Find Friends"
-msgstr "Trovi Amikojn"
-
-#: ../../view/theme/diabook/theme.php:623
-msgid "Local Directory"
-msgstr "Loka Katalogo"
-
-#: ../../view/theme/diabook/theme.php:625 ../../include/contact_widgets.php:35
-msgid "Similar Interests"
-msgstr "Similaj Interesoj"
-
-#: ../../view/theme/diabook/theme.php:627 ../../include/contact_widgets.php:37
-msgid "Invite Friends"
-msgstr "Inviti amikojn"
-
-#: ../../view/theme/diabook/theme.php:678
-#: ../../view/theme/diabook/theme.php:748
-#: ../../view/theme/diabook/config.php:202
-msgid "Earth Layers"
-msgstr "Tertavoloj (Earth Layers)"
-
-#: ../../view/theme/diabook/theme.php:683
-msgid "Set zoomfactor for Earth Layers"
-msgstr "Agordi zoman faktoron por Tertavoloj"
-
-#: ../../view/theme/diabook/theme.php:684
-#: ../../view/theme/diabook/config.php:199
-msgid "Set longitude (X) for Earth Layers"
-msgstr "Agordi longitudon (X) por Tertavoloj"
-
-#: ../../view/theme/diabook/theme.php:685
-#: ../../view/theme/diabook/config.php:200
-msgid "Set latitude (Y) for Earth Layers"
-msgstr "Agordi latitudon (Y) por Tertavoloj"
-
-#: ../../view/theme/diabook/theme.php:698
-#: ../../view/theme/diabook/theme.php:750
-#: ../../view/theme/diabook/config.php:204
-msgid "Help or @NewHere ?"
-msgstr "Helpu aÅ­ @NewHere ?"
-
-#: ../../view/theme/diabook/theme.php:705
-#: ../../view/theme/diabook/theme.php:751
-#: ../../view/theme/diabook/config.php:205
-msgid "Connect Services"
-msgstr "Konekti Servojn"
-
-#: ../../view/theme/diabook/theme.php:712
-#: ../../view/theme/diabook/theme.php:753
-msgid "Last Tweets"
-msgstr "Ĵusaj Pepaĵoj"
-
-#: ../../view/theme/diabook/theme.php:715
-#: ../../view/theme/diabook/config.php:197
-msgid "Set twitter search term"
-msgstr "Agordi Twitter serĉtekston"
-
-#: ../../view/theme/diabook/theme.php:735
-#: ../../view/theme/diabook/theme.php:736
-#: ../../view/theme/diabook/theme.php:737
-#: ../../view/theme/diabook/theme.php:738
-#: ../../view/theme/diabook/theme.php:739
-#: ../../view/theme/diabook/theme.php:740
-#: ../../view/theme/diabook/theme.php:741
-#: ../../view/theme/diabook/theme.php:742
-#: ../../view/theme/diabook/theme.php:743
-#: ../../view/theme/diabook/theme.php:744 ../../include/acl_selectors.php:288
-msgid "don't show"
-msgstr "kaÅi"
-
-#: ../../view/theme/diabook/theme.php:735
-#: ../../view/theme/diabook/theme.php:736
-#: ../../view/theme/diabook/theme.php:737
-#: ../../view/theme/diabook/theme.php:738
-#: ../../view/theme/diabook/theme.php:739
-#: ../../view/theme/diabook/theme.php:740
-#: ../../view/theme/diabook/theme.php:741
-#: ../../view/theme/diabook/theme.php:742
-#: ../../view/theme/diabook/theme.php:743
-#: ../../view/theme/diabook/theme.php:744 ../../include/acl_selectors.php:287
-msgid "show"
-msgstr "montri"
-
-#: ../../view/theme/diabook/theme.php:745
-msgid "Show/hide boxes at right-hand column:"
-msgstr "KaÅi/montri kestojn ĉe dekstra kolumno:"
-
-#: ../../view/theme/diabook/config.php:194
-#: ../../view/theme/dispy/config.php:74
-msgid "Set line-height for posts and comments"
-msgstr "Agordi la linigrandon por afiÅoj kaj komentoj"
-
-#: ../../view/theme/diabook/config.php:195
-msgid "Set resolution for middle column"
-msgstr "Agordi la distingivon por la meza kolumno"
-
-#: ../../view/theme/diabook/config.php:196
-msgid "Set color scheme"
-msgstr "Agordi Kolorskemon"
-
-#: ../../view/theme/diabook/config.php:198
-msgid "Set zoomfactor for Earth Layer"
-msgstr "Agordi zoman faktoron de Tertavolo"
-
-#: ../../view/theme/diabook/config.php:207
-msgid "Last tweets"
-msgstr "Ĵusaj pepaĵoj"
-
-#: ../../view/theme/quattro/config.php:55
-msgid "Alignment"
-msgstr "Äœisrandigo"
-
-#: ../../view/theme/quattro/config.php:55
-msgid "Left"
-msgstr "Maldekstren"
-
-#: ../../view/theme/quattro/config.php:55
-msgid "Center"
-msgstr "Centren"
-
-#: ../../view/theme/dispy/config.php:75
-msgid "Set colour scheme"
-msgstr "Agordi Kolorskemon"
-
-#: ../../include/profile_advanced.php:17 ../../boot.php:1138
-msgid "Gender:"
-msgstr "Sekso:"
-
-#: ../../include/profile_advanced.php:22
-msgid "j F, Y"
-msgstr "j F, Y"
-
-#: ../../include/profile_advanced.php:23
-msgid "j F"
-msgstr "j F"
-
-#: ../../include/profile_advanced.php:30
-msgid "Birthday:"
-msgstr "NaskiÄtago:"
-
-#: ../../include/profile_advanced.php:34
-msgid "Age:"
-msgstr "AÄo:"
-
-#: ../../include/profile_advanced.php:37 ../../boot.php:1141
-msgid "Status:"
-msgstr "Stato:"
-
-#: ../../include/profile_advanced.php:43
-#, php-format
-msgid "for %1$d %2$s"
-msgstr "por %1$d %2$s"
-
-#: ../../include/profile_advanced.php:48 ../../boot.php:1143
-msgid "Homepage:"
-msgstr "HejmpaÄo:"
-
-#: ../../include/profile_advanced.php:52
-msgid "Tags:"
-msgstr "Markoj:"
-
-#: ../../include/profile_advanced.php:56
-msgid "Religion:"
-msgstr "Religio:"
-
-#: ../../include/profile_advanced.php:58
-msgid "About:"
-msgstr "Pri:"
-
-#: ../../include/profile_advanced.php:60
-msgid "Hobbies/Interests:"
-msgstr "Åœatokupoj/Interesoj:"
-
-#: ../../include/profile_advanced.php:67
-msgid "Contact information and Social Networks:"
-msgstr "Kontaktinformoj kaj Interkonaj Retejoj:"
-
-#: ../../include/profile_advanced.php:69
-msgid "Musical interests:"
-msgstr "Muzaikaj interesoj:"
-
-#: ../../include/profile_advanced.php:71
-msgid "Books, literature:"
-msgstr "Libroj, literaturo:"
-
-#: ../../include/profile_advanced.php:73
-msgid "Television:"
-msgstr "Televido:"
-
-#: ../../include/profile_advanced.php:75
-msgid "Film/dance/culture/entertainment:"
-msgstr "Filmoj/dancoj/arto/amuzaĵoj:"
-
-#: ../../include/profile_advanced.php:77
-msgid "Love/Romance:"
-msgstr "Amo/romanco:"
-
-#: ../../include/profile_advanced.php:79
-msgid "Work/employment:"
-msgstr "Laboro:"
-
-#: ../../include/profile_advanced.php:81
-msgid "School/education:"
-msgstr "Lernejo/eduko:"
-
-#: ../../include/contact_selectors.php:32
-msgid "Unknown | Not categorised"
-msgstr "Nekonata | Nekatorigita"
-
-#: ../../include/contact_selectors.php:33
-msgid "Block immediately"
-msgstr "Bloki tuj"
-
-#: ../../include/contact_selectors.php:34
-msgid "Shady, spammer, self-marketer"
-msgstr "Suspekta, spamisto, memmerkatisto"
-
-#: ../../include/contact_selectors.php:35
-msgid "Known to me, but no opinion"
-msgstr "Konata al mi, sed mi ne havas opinion"
-
-#: ../../include/contact_selectors.php:36
-msgid "OK, probably harmless"
-msgstr "OK, verÅajne sendanÄera"
-
-#: ../../include/contact_selectors.php:37
-msgid "Reputable, has my trust"
-msgstr "Fidinda laÅ­ mi"
-
-#: ../../include/contact_selectors.php:56
-msgid "Frequently"
-msgstr "Ofte"
-
-#: ../../include/contact_selectors.php:57
-msgid "Hourly"
-msgstr "Ĉiuhore"
-
-#: ../../include/contact_selectors.php:58
-msgid "Twice daily"
-msgstr "Duope ĉiutage"
-
-#: ../../include/contact_selectors.php:59
-msgid "Daily"
-msgstr "Ĉiutage"
-
-#: ../../include/contact_selectors.php:60
-msgid "Weekly"
-msgstr "Ĉiusemajne"
-
-#: ../../include/contact_selectors.php:61
-msgid "Monthly"
-msgstr "Ĉiumonate"
-
-#: ../../include/contact_selectors.php:77
-msgid "OStatus"
-msgstr "OStatus"
-
-#: ../../include/contact_selectors.php:78
-msgid "RSS/Atom"
-msgstr "RSS/Atom"
-
-#: ../../include/contact_selectors.php:82
-msgid "Zot!"
-msgstr "Zot!"
-
-#: ../../include/contact_selectors.php:83
-msgid "LinkedIn"
-msgstr "LinkedIn"
-
-#: ../../include/contact_selectors.php:84
-msgid "XMPP/IM"
-msgstr "XMPP/TujmesaÄilo"
-
-#: ../../include/contact_selectors.php:85
-msgid "MySpace"
-msgstr "MySpace"
-
-#: ../../include/profile_selectors.php:6
-msgid "Male"
-msgstr "Vira"
-
-#: ../../include/profile_selectors.php:6
-msgid "Female"
-msgstr "Ina"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Male"
-msgstr "Nuntempe Vira"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Female"
-msgstr "Nuntempe Ina"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Male"
-msgstr "Ĉefe Vira"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Female"
-msgstr "Ĉefe Ina"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transgender"
-msgstr "Transgenra"
-
-#: ../../include/profile_selectors.php:6
-msgid "Intersex"
-msgstr "Interseksa"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transsexual"
-msgstr "Transseksa"
-
-#: ../../include/profile_selectors.php:6
-msgid "Hermaphrodite"
-msgstr "Hermafrodita"
-
-#: ../../include/profile_selectors.php:6
-msgid "Neuter"
-msgstr "NeÅ­tra"
-
-#: ../../include/profile_selectors.php:6
-msgid "Non-specific"
-msgstr "Nespecifa"
-
-#: ../../include/profile_selectors.php:6
-msgid "Other"
-msgstr "Alia"
-
-#: ../../include/profile_selectors.php:6
-msgid "Undecided"
-msgstr "Nedecida"
-
-#: ../../include/profile_selectors.php:23
-msgid "Males"
-msgstr "Viroj"
-
-#: ../../include/profile_selectors.php:23
-msgid "Females"
-msgstr "Inoj"
-
-#: ../../include/profile_selectors.php:23
-msgid "Gay"
-msgstr "Geja"
-
-#: ../../include/profile_selectors.php:23
-msgid "Lesbian"
-msgstr "Lesba"
-
-#: ../../include/profile_selectors.php:23
-msgid "No Preference"
-msgstr "Neniu Prefero"
-
-#: ../../include/profile_selectors.php:23
-msgid "Bisexual"
-msgstr "AmbaÅ­seksema"
-
-#: ../../include/profile_selectors.php:23
-msgid "Autosexual"
-msgstr "Memseksema"
-
-#: ../../include/profile_selectors.php:23
-msgid "Abstinent"
-msgstr "Abstinema"
-
-#: ../../include/profile_selectors.php:23
-msgid "Virgin"
-msgstr "Virgulino"
-
-#: ../../include/profile_selectors.php:23
-msgid "Deviant"
-msgstr "Devia"
-
-#: ../../include/profile_selectors.php:23
-msgid "Fetish"
-msgstr "Fetiĉo"
-
-#: ../../include/profile_selectors.php:23
-msgid "Oodles"
-msgstr "Amasa"
-
-#: ../../include/profile_selectors.php:23
-msgid "Nonsexual"
-msgstr "Neseksa"
-
-#: ../../include/profile_selectors.php:42
-msgid "Single"
-msgstr "Sola"
-
-#: ../../include/profile_selectors.php:42
-msgid "Lonely"
-msgstr "Soleca"
-
-#: ../../include/profile_selectors.php:42
-msgid "Available"
-msgstr "Havebla"
-
-#: ../../include/profile_selectors.php:42
-msgid "Unavailable"
-msgstr "Nehavebla"
-
-#: ../../include/profile_selectors.php:42
-msgid "Has crush"
-msgstr "Sekrete enamiÄinta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Infatuated"
-msgstr "Blinda amo"
-
-#: ../../include/profile_selectors.php:42
-msgid "Dating"
-msgstr "Rendevuanta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Unfaithful"
-msgstr "Malfidela"
-
-#: ../../include/profile_selectors.php:42
-msgid "Sex Addict"
-msgstr "Seksmaniulo"
-
-#: ../../include/profile_selectors.php:42 ../../include/user.php:278
-msgid "Friends"
-msgstr "Amikoj"
-
-#: ../../include/profile_selectors.php:42
-msgid "Friends/Benefits"
-msgstr "Amikoj/AvantaÄoj"
-
-#: ../../include/profile_selectors.php:42
-msgid "Casual"
-msgstr "Neformala"
-
-#: ../../include/profile_selectors.php:42
-msgid "Engaged"
-msgstr "Fianĉiginta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Married"
-msgstr "EdziÄinta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Imaginarily married"
-msgstr "Image edziÄinta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Partners"
-msgstr "Geparuloj"
-
-#: ../../include/profile_selectors.php:42
-msgid "Cohabiting"
-msgstr "KunloÄanta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Common law"
-msgstr "Registrita partnereco "
-
-#: ../../include/profile_selectors.php:42
-msgid "Happy"
-msgstr "Feliĉa"
-
-#: ../../include/profile_selectors.php:42
-msgid "Not looking"
-msgstr "Ne interesiÄis"
-
-#: ../../include/profile_selectors.php:42
-msgid "Swinger"
-msgstr "Swinger"
-
-#: ../../include/profile_selectors.php:42
-msgid "Betrayed"
-msgstr "Trompita"
-
-#: ../../include/profile_selectors.php:42
-msgid "Separated"
-msgstr "DisiÄinta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Unstable"
-msgstr "Malfirma"
-
-#: ../../include/profile_selectors.php:42
-msgid "Divorced"
-msgstr "EksedziÄinta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Imaginarily divorced"
-msgstr "Image eksedziÄinta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Widowed"
-msgstr "Vidva"
-
-#: ../../include/profile_selectors.php:42
-msgid "Uncertain"
-msgstr "Ne certa"
-
-#: ../../include/profile_selectors.php:42
-msgid "It's complicated"
-msgstr "Estas komplika"
-
-#: ../../include/profile_selectors.php:42
-msgid "Don't care"
-msgstr "Egala"
-
-#: ../../include/profile_selectors.php:42
-msgid "Ask me"
-msgstr "Demandu min"
-
-#: ../../include/event.php:20 ../../include/bb2diaspora.php:341
-msgid "Starts:"
-msgstr "Ekas:"
-
-#: ../../include/event.php:30 ../../include/bb2diaspora.php:349
-msgid "Finishes:"
-msgstr "Finas:"
-
-#: ../../include/delivery.php:456 ../../include/notifier.php:678
-msgid "(no subject)"
-msgstr "(neniu temo)"
-
-#: ../../include/delivery.php:463 ../../include/enotify.php:26
-#: ../../include/notifier.php:685
-msgid "noreply"
-msgstr "nerespondi"
-
-#: ../../include/Scrape.php:572
-msgid " on Last.fm"
-msgstr " ĉe Last.fm"
-
-#: ../../include/text.php:243
-msgid "prev"
-msgstr "antaÅ­a"
-
-#: ../../include/text.php:245
-msgid "first"
-msgstr "unua"
-
-#: ../../include/text.php:274
-msgid "last"
-msgstr "lasta"
-
-#: ../../include/text.php:277
-msgid "next"
-msgstr "sekvanta"
-
-#: ../../include/text.php:568
-msgid "No contacts"
-msgstr "Neniu kontaktoj"
-
-#: ../../include/text.php:577
-#, php-format
-msgid "%d Contact"
-msgid_plural "%d Contacts"
-msgstr[0] "%d Kontakto"
-msgstr[1] "%d Kontaktoj"
-
-#: ../../include/text.php:835
-msgid "Monday"
-msgstr "Lundo"
-
-#: ../../include/text.php:835
-msgid "Tuesday"
-msgstr "Mardo"
-
-#: ../../include/text.php:835
-msgid "Wednesday"
-msgstr "Merkredo"
-
-#: ../../include/text.php:835
-msgid "Thursday"
-msgstr "Ä´aÅ­do"
-
-#: ../../include/text.php:835
-msgid "Friday"
-msgstr "Vendredo"
-
-#: ../../include/text.php:835
-msgid "Saturday"
-msgstr "Sabato"
-
-#: ../../include/text.php:835
-msgid "Sunday"
-msgstr "Dimanĉo"
-
-#: ../../include/text.php:839
-msgid "January"
-msgstr "Januaro"
-
-#: ../../include/text.php:839
-msgid "February"
-msgstr "Februaro"
-
-#: ../../include/text.php:839
-msgid "March"
-msgstr "Marto"
-
-#: ../../include/text.php:839
-msgid "April"
-msgstr "Aprilo"
-
-#: ../../include/text.php:839
-msgid "May"
-msgstr "Majo"
-
-#: ../../include/text.php:839
-msgid "June"
-msgstr "Junio"
-
-#: ../../include/text.php:839
-msgid "July"
-msgstr "Julio"
-
-#: ../../include/text.php:839
-msgid "August"
-msgstr "AÅ­gusto"
-
-#: ../../include/text.php:839
-msgid "September"
-msgstr "Septembro"
-
-#: ../../include/text.php:839
-msgid "October"
-msgstr "Oktobro"
-
-#: ../../include/text.php:839
-msgid "November"
-msgstr "Novembro"
-
-#: ../../include/text.php:839
-msgid "December"
-msgstr "Decembro"
-
-#: ../../include/text.php:925
-msgid "bytes"
-msgstr "bajtoj"
-
-#: ../../include/text.php:945 ../../include/text.php:960
-msgid "remove"
-msgstr "forviÅi"
-
-#: ../../include/text.php:945 ../../include/text.php:960
-msgid "[remove]"
-msgstr "[forviÅi]"
-
-#: ../../include/text.php:948
-msgid "Categories:"
-msgstr "Kategorioj:"
-
-#: ../../include/text.php:963
-msgid "Filed under:"
-msgstr "Enarkivigita kiel:"
-
-#: ../../include/text.php:979 ../../include/text.php:991
-msgid "Click to open/close"
-msgstr "Klaku por malfermi/fermi"
-
-#: ../../include/text.php:1097 ../../include/user.php:236
-msgid "default"
-msgstr "defaÅ­lta"
-
-#: ../../include/text.php:1109
-msgid "Select an alternate language"
-msgstr "Elekti alian lingvon"
-
-#: ../../include/text.php:1319
-msgid "activity"
-msgstr "aktiveco"
-
-#: ../../include/text.php:1321
-msgid "comment"
-msgstr "komento"
-
-#: ../../include/text.php:1322
-msgid "post"
-msgstr "afiÅo"
-
-#: ../../include/text.php:1477
-msgid "Item filed"
-msgstr "Enarkivigis elementon "
-
-#: ../../include/diaspora.php:593
-msgid "Sharing notification from Diaspora network"
-msgstr "Antentigo pri kunhavigado de la Diaspora reto"
-
-#: ../../include/diaspora.php:2085
-msgid "Attachments:"
-msgstr "Kunsendaĵoj:"
-
-#: ../../include/network.php:839
-msgid "view full size"
-msgstr "vidi plengrande"
-
-#: ../../include/oembed.php:135
-msgid "Embedded content"
-msgstr "Enigita enhavo"
-
-#: ../../include/oembed.php:144
-msgid "Embedding disabled"
-msgstr "MalÅaltita enigitado"
-
-#: ../../include/group.php:25
-msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "Revivigis malnovan grupon kun la sama nomo. Permesoj por estantaj elementoj <strong>eble</strong> estas validaj por la grupo kaj estontaj membroj. Se tiu ne estas kiun vi atendis, bonvolu krei alian grupon kun alia nomo."
-
-#: ../../include/group.php:176
-msgid "Default privacy group for new contacts"
-msgstr "DefaÅ­lta privateca grupo por novaj kontaktoj"
-
-#: ../../include/group.php:195
-msgid "Everybody"
-msgstr "Ĉiuj"
-
-#: ../../include/group.php:218
-msgid "edit"
-msgstr "redakti"
-
-#: ../../include/group.php:239
-msgid "Groups"
-msgstr "Grupoj"
-
-#: ../../include/group.php:240
-msgid "Edit group"
-msgstr "Redakti grupon"
-
-#: ../../include/group.php:241
-msgid "Create a new group"
-msgstr "Krei novan grupon"
-
-#: ../../include/group.php:242
-msgid "Contacts not in any group"
-msgstr "Kontaktoj en neniu grupo"
-
-#: ../../include/nav.php:46 ../../boot.php:848
-msgid "Logout"
-msgstr "Elsaluti"
-
-#: ../../include/nav.php:46
-msgid "End this session"
-msgstr "Fini ĉi-tiun seancon"
-
-#: ../../include/nav.php:49 ../../boot.php:1538
-msgid "Status"
-msgstr "Stato"
-
-#: ../../include/nav.php:64
-msgid "Sign in"
-msgstr "Ensaluti"
-
-#: ../../include/nav.php:77
-msgid "Home Page"
-msgstr "HejmpaÄo"
-
-#: ../../include/nav.php:81
-msgid "Create an account"
-msgstr "Krei konton"
-
-#: ../../include/nav.php:86
-msgid "Help and documentation"
-msgstr "Helpo kaj dokumentado"
-
-#: ../../include/nav.php:89
-msgid "Apps"
-msgstr "Programoj"
-
-#: ../../include/nav.php:89
-msgid "Addon applications, utilities, games"
-msgstr "Kromprogramoj, utilaĵoj, ludiloj"
-
-#: ../../include/nav.php:91
-msgid "Search site content"
-msgstr "Serĉu la retejon"
-
-#: ../../include/nav.php:101
-msgid "Conversations on this site"
-msgstr "Konversacioj je ĉi-tiu retejo"
-
-#: ../../include/nav.php:103
-msgid "Directory"
-msgstr "Katalogo"
-
-#: ../../include/nav.php:103
-msgid "People directory"
-msgstr "Katalogo de homoj"
-
-#: ../../include/nav.php:113
-msgid "Conversations from your friends"
-msgstr "Konversacioj de viaj amikoj"
-
-#: ../../include/nav.php:121
-msgid "Friend Requests"
-msgstr "Kontaktpetoj"
-
-#: ../../include/nav.php:123
-msgid "See all notifications"
-msgstr "Vidu ĉiujn atentigojn"
-
-#: ../../include/nav.php:124
-msgid "Mark all system notifications seen"
-msgstr "Marki ĉiujn atentigojn legita"
-
-#: ../../include/nav.php:128
-msgid "Private mail"
-msgstr "Privata poÅto"
-
-#: ../../include/nav.php:129
-msgid "Inbox"
-msgstr "Enirkesto"
-
-#: ../../include/nav.php:130
-msgid "Outbox"
-msgstr "Elirkesto"
-
-#: ../../include/nav.php:134
-msgid "Manage"
-msgstr "Administri"
-
-#: ../../include/nav.php:134
-msgid "Manage other pages"
-msgstr "Administri aliajn paÄojn"
-
-#: ../../include/nav.php:138 ../../boot.php:1096
-msgid "Profiles"
-msgstr "Profiloj"
-
-#: ../../include/nav.php:138 ../../boot.php:1096
-msgid "Manage/edit profiles"
-msgstr "Administri/redakti profilojn"
-
-#: ../../include/nav.php:139
-msgid "Manage/edit friends and contacts"
-msgstr "Administri/redakti amikojn kaj kontaktojn"
-
-#: ../../include/nav.php:146
-msgid "Site setup and configuration"
-msgstr "Agordoj pri la retejo"
-
-#: ../../include/nav.php:170
-msgid "Nothing new here"
-msgstr "Estas neniu nova ĉi tie"
-
-#: ../../include/contact_widgets.php:6
-msgid "Add New Contact"
-msgstr "Aldonu Novan Kontakton"
-
-#: ../../include/contact_widgets.php:7
-msgid "Enter address or web location"
-msgstr "Entajpu adreson aÅ­ retlokon"
-
-#: ../../include/contact_widgets.php:8
-msgid "Example: bob@example.com, http://example.com/barbara"
-msgstr "Ekzemple: bob@example.com, http://example.com/barbara"
-
-#: ../../include/contact_widgets.php:23
-#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "Disponeblas %d invito"
-msgstr[1] "Disponeblas %d invitoj"
-
-#: ../../include/contact_widgets.php:29
-msgid "Find People"
-msgstr "Trovi Homojn"
-
-#: ../../include/contact_widgets.php:30
-msgid "Enter name or interest"
-msgstr "Entajpu nomon aÅ­ intereson"
-
-#: ../../include/contact_widgets.php:31
-msgid "Connect/Follow"
-msgstr "Konekti/Aboni"
-
-#: ../../include/contact_widgets.php:32
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Ekzemple: Robert Morgenstein, Fishing"
-
-#: ../../include/contact_widgets.php:36
-msgid "Random Profile"
-msgstr "Hazarda Profilo"
-
-#: ../../include/contact_widgets.php:68
-msgid "Networks"
-msgstr "Retoj"
-
-#: ../../include/contact_widgets.php:71
-msgid "All Networks"
-msgstr "Ĉiuj Retoj"
-
-#: ../../include/contact_widgets.php:98
-msgid "Saved Folders"
-msgstr "Konservitaj Dosierujoj"
-
-#: ../../include/contact_widgets.php:101 ../../include/contact_widgets.php:129
-msgid "Everything"
-msgstr "Ĉio"
-
-#: ../../include/contact_widgets.php:126
-msgid "Categories"
-msgstr "Kategorioj"
-
-#: ../../include/auth.php:36
-msgid "Logged out."
-msgstr "Elsalutita."
-
-#: ../../include/auth.php:115
-msgid ""
-"We encountered a problem while logging in with the OpenID you provided. "
-"Please check the correct spelling of the ID."
-msgstr "Okazis problemo ensalutinta kun via OpenID. Bonvolu kontroli la ID."
-
-#: ../../include/auth.php:115
-msgid "The error message was:"
-msgstr "La erarmesaÄo estis:"
-
-#: ../../include/datetime.php:43 ../../include/datetime.php:45
-msgid "Miscellaneous"
-msgstr "Diversaj"
-
-#: ../../include/datetime.php:131 ../../include/datetime.php:263
-msgid "year"
-msgstr "jaro"
-
-#: ../../include/datetime.php:136 ../../include/datetime.php:264
-msgid "month"
-msgstr "monato"
-
-#: ../../include/datetime.php:141 ../../include/datetime.php:266
-msgid "day"
-msgstr "tago"
-
-#: ../../include/datetime.php:254
-msgid "never"
-msgstr "neniam"
-
-#: ../../include/datetime.php:260
-msgid "less than a second ago"
-msgstr "antaÅ­ malpli ol unu sekundo"
-
-#: ../../include/datetime.php:263
-msgid "years"
-msgstr "jaroj"
-
-#: ../../include/datetime.php:264
-msgid "months"
-msgstr "monatoj"
-
-#: ../../include/datetime.php:265
-msgid "week"
-msgstr "semajno"
-
-#: ../../include/datetime.php:265
-msgid "weeks"
-msgstr "semajnoj"
-
-#: ../../include/datetime.php:266
-msgid "days"
-msgstr "tagoj"
-
-#: ../../include/datetime.php:267
-msgid "hour"
-msgstr "horo"
-
-#: ../../include/datetime.php:267
-msgid "hours"
-msgstr "horoj"
-
-#: ../../include/datetime.php:268
-msgid "minute"
-msgstr "minuto"
-
-#: ../../include/datetime.php:268
-msgid "minutes"
-msgstr "minutoj"
-
-#: ../../include/datetime.php:269
-msgid "second"
-msgstr "sekundo"
-
-#: ../../include/datetime.php:269
-msgid "seconds"
-msgstr "sekundoj"
-
-#: ../../include/datetime.php:278
-#, php-format
-msgid "%1$d %2$s ago"
-msgstr "antaÅ­ %1$d %2$s"
-
-#: ../../include/datetime.php:450 ../../include/items.php:1460
-#, php-format
-msgid "%s's birthday"
-msgstr "NaskiÄtago de %s"
-
-#: ../../include/datetime.php:451 ../../include/items.php:1461
-#, php-format
-msgid "Happy Birthday %s"
-msgstr "Feliĉan NaskiÄtagon al %s"
-
-#: ../../include/onepoll.php:399
-msgid "From: "
-msgstr "De: "
-
-#: ../../include/bbcode.php:216 ../../include/bbcode.php:236
-msgid "$1 wrote:"
-msgstr "$1 skribis:"
-
-#: ../../include/bbcode.php:251 ../../include/bbcode.php:328
-msgid "Image/photo"
-msgstr "Bildo"
-
-#: ../../include/dba.php:41
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "Ne trovis DNS informojn por datumbaza servilo '%s'."
-
-#: ../../include/message.php:15 ../../include/message.php:171
-msgid "[no subject]"
-msgstr "[neniu temo]"
-
-#: ../../include/acl_selectors.php:286
-msgid "Visible to everybody"
-msgstr "Videbla al ĉiuj"
-
-#: ../../include/enotify.php:14
-msgid "Friendica Notification"
-msgstr "Friendica Atentigo"
-
-#: ../../include/enotify.php:17
-msgid "Thank You,"
-msgstr "Dankon,"
-
-#: ../../include/enotify.php:19
-#, php-format
-msgid "%s Administrator"
-msgstr "%s Administranto"
-
-#: ../../include/enotify.php:38
-#, php-format
-msgid "%s <!item_type!>"
-msgstr "%s <!item_type!>"
-
-#: ../../include/enotify.php:42
-#, php-format
-msgid "[Friendica:Notify] New mail received at %s"
-msgstr "[Friendica:Atentigo] Ricevis novan retpoÅton ĉe %s"
-
-#: ../../include/enotify.php:44
-#, php-format
-msgid "%1$s sent you a new private message at %2$s."
-msgstr "%1$s sendis al vi novan privatan mesaÄon ĉe %2$s."
-
-#: ../../include/enotify.php:45
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s sendis al vi %2$s."
-
-#: ../../include/enotify.php:45
-msgid "a private message"
-msgstr "privatan mesaÄon"
-
-#: ../../include/enotify.php:46
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Bonvolu viziti %s por vidi aÅ­ respondi viajn privatajn mesaÄojn."
-
-#: ../../include/enotify.php:73
-#, php-format
-msgid "%1$s commented on [url=%2$s]a %3$s[/url]"
-msgstr "%1$s komentis pri [url=%2$s]%3$s[/url]"
-
-#: ../../include/enotify.php:80
-#, php-format
-msgid "%1$s commented on [url=%2$s]%3$s's %4$s[/url]"
-msgstr "%1$s komentis pri [url=%2$s]%4$s de %3$s[/url]"
-
-#: ../../include/enotify.php:88
-#, php-format
-msgid "%1$s commented on [url=%2$s]your %3$s[/url]"
-msgstr "%1$s komentis pri [url=%2$s]via %3$s[/url]"
-
-#: ../../include/enotify.php:98
-#, php-format
-msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Friendica:Atentigo] Komento pri konversacio #%1$d de %2$s"
-
-#: ../../include/enotify.php:99
-#, php-format
-msgid "%s commented on an item/conversation you have been following."
-msgstr "%s komentis pri elemento/konversacio kiun vi sekvas."
-
-#: ../../include/enotify.php:102 ../../include/enotify.php:117
-#: ../../include/enotify.php:130 ../../include/enotify.php:143
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Bonvolu viziti %s por vidi aÅ­ respondi la konversacion."
-
-#: ../../include/enotify.php:109
-#, php-format
-msgid "[Friendica:Notify] %s posted to your profile wall"
-msgstr "[Friendica:Atentigo] %s afiÅis al via profilmuro"
-
-#: ../../include/enotify.php:111
-#, php-format
-msgid "%1$s posted to your profile wall at %2$s"
-msgstr "%1$s skribis al via profilmuro ĉe %2$s"
-
-#: ../../include/enotify.php:113
-#, php-format
-msgid "%1$s posted to [url=%2s]your wall[/url]"
-msgstr "%1$s afiÅis al [url=%2s]via muro[/url]"
-
-#: ../../include/enotify.php:124
-#, php-format
-msgid "[Friendica:Notify] %s tagged you"
-msgstr "[Friendica:Atentigo] %s markis vin"
-
-#: ../../include/enotify.php:125
-#, php-format
-msgid "%1$s tagged you at %2$s"
-msgstr "%1$s markis vin ĉe %2$s"
-
-#: ../../include/enotify.php:126
-#, php-format
-msgid "%1$s [url=%2$s]tagged you[/url]."
-msgstr "%1$s [url=%2$s]markis vin[/url]."
-
-#: ../../include/enotify.php:137
-#, php-format
-msgid "[Friendica:Notify] %s tagged your post"
-msgstr "[Friendica:Atentigo] %s markis vian afiÅon"
-
-#: ../../include/enotify.php:138
-#, php-format
-msgid "%1$s tagged your post at %2$s"
-msgstr "%1$s markis vian afiÅon ĉe %2$s"
-
-#: ../../include/enotify.php:139
-#, php-format
-msgid "%1$s tagged [url=%2$s]your post[/url]"
-msgstr "%1$s markis [url=%2$s]vian afiÅon[/url]"
-
-#: ../../include/enotify.php:150
-msgid "[Friendica:Notify] Introduction received"
-msgstr "[Friendica:Atentigo] Ricevis prezenton"
-
-#: ../../include/enotify.php:151
-#, php-format
-msgid "You've received an introduction from '%1$s' at %2$s"
-msgstr "Vi ricevis prezenton de '%1$s' ĉe %2$s"
-
-#: ../../include/enotify.php:152
-#, php-format
-msgid "You've received [url=%1$s]an introduction[/url] from %2$s."
-msgstr "Vi ricevis [url=%1$s]prezenton[/url] de %2$s."
-
-#: ../../include/enotify.php:155 ../../include/enotify.php:173
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "Vi povas vidi la profilon de li aÅ­ Åi ĉe %s"
-
-#: ../../include/enotify.php:157
-#, php-format
-msgid "Please visit %s to approve or reject the introduction."
-msgstr "Bonvolu viziti %s por aprobi aÅ­ malaprobi la prezenton."
-
-#: ../../include/enotify.php:164
-msgid "[Friendica:Notify] Friend suggestion received"
-msgstr "[Friendica:Atentigo] Ricevis amikosugeston"
-
-#: ../../include/enotify.php:165
-#, php-format
-msgid "You've received a friend suggestion from '%1$s' at %2$s"
-msgstr "Vi ricevis amikosugeston de '%1$s' ĉe %2$s"
-
-#: ../../include/enotify.php:166
-#, php-format
-msgid ""
-"You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s."
-msgstr "Vi ricevis [url=%1$s]amikosugeston[/url] pri %2$s de %3$s."
-
-#: ../../include/enotify.php:171
-msgid "Name:"
-msgstr "Nomo:"
-
-#: ../../include/enotify.php:172
-msgid "Photo:"
-msgstr "Bildo:"
-
-#: ../../include/enotify.php:175
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Bonvolu viziti %s por aprobi aÅ­ malaprobi la sugeston."
-
-#: ../../include/follow.php:32
-msgid "Connect URL missing."
-msgstr "Ne ekzistas URL adreso por konekti."
-
-#: ../../include/follow.php:59
-msgid ""
-"This site is not configured to allow communications with other networks."
-msgstr "Tiu retpaÄo ne permesas komunikadon kun aliaj retoj."
-
-#: ../../include/follow.php:60 ../../include/follow.php:80
-msgid "No compatible communication protocols or feeds were discovered."
-msgstr "Ne malkovris kongruajn protokolojn por komunikado aÅ­ fluojn."
-
-#: ../../include/follow.php:78
-msgid "The profile address specified does not provide adequate information."
-msgstr "La specifita profiladreso ne enhavas sufiĉe da informoj."
-
-#: ../../include/follow.php:82
-msgid "An author or name was not found."
-msgstr "Ne trovis aÅ­toron aÅ­ nomon."
-
-#: ../../include/follow.php:84
-msgid "No browser URL could be matched to this address."
-msgstr "Neniu retuma URL adreso kongruas al la adreso."
-
-#: ../../include/follow.php:86
-msgid ""
-"Unable to match @-style Identity Address with a known protocol or email "
-"contact."
-msgstr "Ne eblas kongrui @-stilan identecon adreson al iu konata protokolo au retpoÅtadreso."
-
-#: ../../include/follow.php:87
-msgid "Use mailto: in front of address to force email check."
-msgstr "Uzu mailto: antaÅ­ la adreso por devigi la testadon per retpoÅto."
-
-#: ../../include/follow.php:93
-msgid ""
-"The profile address specified belongs to a network which has been disabled "
-"on this site."
-msgstr "Tiu profila adreso apartenas al retejo kiu estas maÅaltita je ĉi tiu retejo."
-
-#: ../../include/follow.php:103
-msgid ""
-"Limited profile. This person will be unable to receive direct/personal "
-"notifications from you."
-msgstr "Profilo limigata. Ĉi persono ne eblos ricevi rektajn/personajn atentigojn de vi. "
-
-#: ../../include/follow.php:205
-msgid "Unable to retrieve contact information."
-msgstr "Ne eblas ricevi kontaktinformojn."
-
-#: ../../include/follow.php:259
-msgid "following"
-msgstr "sekvanta"
-
-#: ../../include/items.php:2888
-msgid "A new person is sharing with you at "
-msgstr "Nova persono kunhavigas kun vi ĉe "
-
-#: ../../include/items.php:2888
-msgid "You have a new follower at "
-msgstr "Vi havas novan sekvanton ĉe "
-
-#: ../../include/items.php:3520
-msgid "Archives"
-msgstr "Arkivoj"
-
-#: ../../include/user.php:38
-msgid "An invitation is required."
-msgstr "Invio bezonata."
-
-#: ../../include/user.php:43
-msgid "Invitation could not be verified."
-msgstr "Ne povis kontroli la inviton."
-
-#: ../../include/user.php:51
-msgid "Invalid OpenID url"
-msgstr "Nevalida OpenID adreso"
-
-#: ../../include/user.php:66
-msgid "Please enter the required information."
-msgstr "Bonvolu entajpi la bezonatajn informojn."
-
-#: ../../include/user.php:80
-msgid "Please use a shorter name."
-msgstr "Bonvolu uzi pli mallongan nomon."
-
-#: ../../include/user.php:82
-msgid "Name too short."
-msgstr "Nomo estas tro mallonga."
-
-#: ../../include/user.php:97
-msgid "That doesn't appear to be your full (First Last) name."
-msgstr "Tio Åajne ne estas via plena (persona, familia) nomo."
-
-#: ../../include/user.php:102
-msgid "Your email domain is not among those allowed on this site."
-msgstr "Via retpoÅtodomajno ne estas permesita ĉi tie."
-
-#: ../../include/user.php:105
-msgid "Not a valid email address."
-msgstr "Nevalida retpoÅtadreso."
-
-#: ../../include/user.php:115
-msgid "Cannot use that email."
-msgstr "Neuzebla retpoÅtadreso."
-
-#: ../../include/user.php:121
-msgid ""
-"Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and "
-"must also begin with a letter."
-msgstr "Via kaÅnomo nur povas enhavi \"a-z\", \"0-9\", \"-\", kaj \"_\". Äœi ankaÅ­ devas komenci kun litero."
-
-#: ../../include/user.php:127 ../../include/user.php:225
-msgid "Nickname is already registered. Please choose another."
-msgstr "Tio kaÅnomo jam estas registrita. Bonvolu elekti alian."
-
-#: ../../include/user.php:137
-msgid ""
-"Nickname was once registered here and may not be re-used. Please choose "
-"another."
-msgstr "Tiu kaÅnomo iam estis registrita ĉi tie kaj ne ree uzeblas. Bonvolu elekti alian."
-
-#: ../../include/user.php:153
-msgid "SERIOUS ERROR: Generation of security keys failed."
-msgstr "GRAVA ERARO: La generacio de sekurecaj ĉifroÅlosiloj malsukcesis."
-
-#: ../../include/user.php:211
-msgid "An error occurred during registration. Please try again."
-msgstr "Eraro okazis dum registrado. Bonvolu provi denove."
-
-#: ../../include/user.php:246
-msgid "An error occurred creating your default profile. Please try again."
-msgstr "Eraro okazi dum kreado de via defaÅ­lta profilo. Bonvolu provi denove."
-
-#: ../../include/security.php:21
-msgid "Welcome "
-msgstr "Bonvenon "
-
-#: ../../include/security.php:22
-msgid "Please upload a profile photo."
-msgstr "Bonvolu alÅuti profilbildon."
-
-#: ../../include/security.php:25
-msgid "Welcome back "
-msgstr "Bonvenon "
-
-#: ../../include/security.php:329
-msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "La sekuriga ĵetono de la formo estis malÄusta. Tio verÅajne okazis ĉar la formo estis malfermita dum tro longa tempo (>3 horoj) antaÅ­ la sendado."
-
-#: ../../include/Contact.php:111
-msgid "stopped following"
-msgstr "ne plu sekvas"
-
-#: ../../include/Contact.php:218 ../../include/conversation.php:842
-msgid "View Status"
-msgstr "Vidi Staton"
-
-#: ../../include/Contact.php:219 ../../include/conversation.php:843
-msgid "View Profile"
-msgstr "Vidi Profilon"
-
-#: ../../include/Contact.php:220 ../../include/conversation.php:844
-msgid "View Photos"
-msgstr "Vidi Bildojn"
-
-#: ../../include/Contact.php:221 ../../include/Contact.php:234
-#: ../../include/conversation.php:845
-msgid "Network Posts"
-msgstr "Enretaj AfiÅoj"
-
-#: ../../include/Contact.php:222 ../../include/Contact.php:234
-#: ../../include/conversation.php:846
-msgid "Edit Contact"
-msgstr "Redakti Kontakton"
-
-#: ../../include/Contact.php:223 ../../include/Contact.php:234
-#: ../../include/conversation.php:847
-msgid "Send PM"
-msgstr "Sendi PM"
-
-#: ../../include/conversation.php:163
-msgid "post/item"
-msgstr "afiÅo/elemento"
-
-#: ../../include/conversation.php:164
-#, php-format
-msgid "%1$s marked %2$s's %3$s as favorite"
-msgstr "%1$s markis la %3$s de %2$s kiel preferita."
-
-#: ../../include/conversation.php:327 ../../include/conversation.php:608
-msgid "Select"
-msgstr "Elekti"
-
-#: ../../include/conversation.php:344 ../../include/conversation.php:701
-#: ../../include/conversation.php:702
-#, php-format
-msgid "View %s's profile @ %s"
-msgstr "Vidi la profilon de %s ĉe %s"
-
-#: ../../include/conversation.php:354 ../../include/conversation.php:713
-#, php-format
-msgid "%s from %s"
-msgstr "%s de %s"
-
-#: ../../include/conversation.php:369
-msgid "View in context"
-msgstr "Vidi kun kunteksto"
-
-#: ../../include/conversation.php:475
-#, php-format
-msgid "%d comment"
-msgid_plural "%d comments"
-msgstr[0] "%d komento"
-msgstr[1] "%d komentoj"
-
-#: ../../include/conversation.php:554
-msgid "like"
-msgstr "Åati"
-
-#: ../../include/conversation.php:555
-msgid "dislike"
-msgstr "malÅati"
-
-#: ../../include/conversation.php:557
-msgid "Share this"
-msgstr "Kunhavigi ĉi tiun"
-
-#: ../../include/conversation.php:557
-msgid "share"
-msgstr "kunhavigi"
-
-#: ../../include/conversation.php:581
-msgid "Bold"
-msgstr "Grasa"
-
-#: ../../include/conversation.php:582
-msgid "Italic"
-msgstr "Kursiva"
-
-#: ../../include/conversation.php:583
-msgid "Underline"
-msgstr "Substreki"
-
-#: ../../include/conversation.php:584
-msgid "Quote"
-msgstr "Citaĵo"
-
-#: ../../include/conversation.php:585
-msgid "Code"
-msgstr "Kodo"
-
-#: ../../include/conversation.php:586
-msgid "Image"
-msgstr "Bildo"
-
-#: ../../include/conversation.php:587
-msgid "Link"
-msgstr "Ligilo"
-
-#: ../../include/conversation.php:588
-msgid "Video"
-msgstr "Video"
-
-#: ../../include/conversation.php:621
-msgid "add star"
-msgstr "aldoni stelon"
-
-#: ../../include/conversation.php:622
-msgid "remove star"
-msgstr "forpreni stelon"
-
-#: ../../include/conversation.php:623
-msgid "toggle star status"
-msgstr "Åalti/malÅalti steloÅtato"
-
-#: ../../include/conversation.php:626
-msgid "starred"
-msgstr "steligita"
-
-#: ../../include/conversation.php:627
-msgid "add tag"
-msgstr "aldoni markon"
-
-#: ../../include/conversation.php:631
-msgid "save to folder"
-msgstr "konservi en dosierujo"
-
-#: ../../include/conversation.php:703
-msgid "to"
-msgstr "al"
-
-#: ../../include/conversation.php:704
-msgid "Wall-to-Wall"
-msgstr "Muro-al-Muro"
-
-#: ../../include/conversation.php:705
-msgid "via Wall-To-Wall:"
-msgstr "per Muro-al-Muro:"
-
-#: ../../include/conversation.php:750
-msgid "Delete Selected Items"
-msgstr "ForviÅi Elektitajn Elementojn"
-
-#: ../../include/conversation.php:905
-#, php-format
-msgid "%s likes this."
-msgstr "%s Åatas tiun."
-
-#: ../../include/conversation.php:905
-#, php-format
-msgid "%s doesn't like this."
-msgstr "%s malÅatas tiun."
-
-#: ../../include/conversation.php:909
-#, php-format
-msgid "<span %1$s>%2$d people</span> like this."
-msgstr "<span %1$s>%2$d homoj</span> Åatas tiun."
-
-#: ../../include/conversation.php:911
-#, php-format
-msgid "<span %1$s>%2$d people</span> don't like this."
-msgstr "<span %1$s>%2$d homoj</span>malÅatas tiun."
-
-#: ../../include/conversation.php:917
-msgid "and"
-msgstr "kaj"
-
-#: ../../include/conversation.php:920
-#, php-format
-msgid ", and %d other people"
-msgstr ", kaj %d aliaj homoj."
-
-#: ../../include/conversation.php:921
-#, php-format
-msgid "%s like this."
-msgstr "%s Åatas tiun."
-
-#: ../../include/conversation.php:921
-#, php-format
-msgid "%s don't like this."
-msgstr "%s malÅatas tiun."
-
-#: ../../include/conversation.php:946
-msgid "Visible to <strong>everybody</strong>"
-msgstr "Videbla al <strong>ĉiuj</strong>"
-
-#: ../../include/conversation.php:948
-msgid "Please enter a video link/URL:"
-msgstr "Bonvolu entajpi ligilon/adreson de video:"
-
-#: ../../include/conversation.php:949
-msgid "Please enter an audio link/URL:"
-msgstr "Bonvolu entajpi ligilon/adreson de sono:"
-
-#: ../../include/conversation.php:950
-msgid "Tag term:"
-msgstr "Markfrazo:"
-
-#: ../../include/conversation.php:952
-msgid "Where are you right now?"
-msgstr "Kie vi estas nun?"
-
-#: ../../include/conversation.php:995
-msgid "upload photo"
-msgstr "alÅuti bildon"
-
-#: ../../include/conversation.php:997
-msgid "attach file"
-msgstr "kunsendi dosieron"
-
-#: ../../include/conversation.php:999
-msgid "web link"
-msgstr "TTT ligilo"
-
-#: ../../include/conversation.php:1000
-msgid "Insert video link"
-msgstr "Alglui ligilon de video"
-
-#: ../../include/conversation.php:1001
-msgid "video link"
-msgstr "video ligilo"
-
-#: ../../include/conversation.php:1002
-msgid "Insert audio link"
-msgstr "Alglui ligilon de sono"
-
-#: ../../include/conversation.php:1003
-msgid "audio link"
-msgstr "sono ligilo"
-
-#: ../../include/conversation.php:1005
-msgid "set location"
-msgstr "agordi lokon"
-
-#: ../../include/conversation.php:1007
-msgid "clear location"
-msgstr "forviÅi lokon"
-
-#: ../../include/conversation.php:1014
-msgid "permissions"
-msgstr "permesoj"
-
-#: ../../include/plugin.php:388 ../../include/plugin.php:390
-msgid "Click here to upgrade."
-msgstr "Klaku ĉi tie por Äisdatigi."
-
-#: ../../include/plugin.php:396
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Tia ago preterpasas la limojn de via abono."
-
-#: ../../include/plugin.php:401
-msgid "This action is not available under your subscription plan."
-msgstr "Tia ago ne estas permesita laÅ­ via abono."
-
-#: ../../boot.php:527
-msgid "Delete this item?"
-msgstr "ForviÅi ĉi tiun elementon?"
-
-#: ../../boot.php:530
-msgid "show fewer"
-msgstr "montri malpli"
-
-#: ../../boot.php:725
-#, php-format
-msgid "Update %s failed. See error logs."
-msgstr "Malsukcesis Äisdatigi %s. Vidu la protokolojn."
-
-#: ../../boot.php:727
-#, php-format
-msgid "Update Error at %s"
-msgstr "Eraro dum Äisdatigo ĉe %s"
-
-#: ../../boot.php:827
-msgid "Create a New Account"
-msgstr "Krei Novan Konton"
-
-#: ../../boot.php:851
-msgid "Nickname or Email address: "
-msgstr "KaÅnomo aÅ­ retpoÅtadreso:"
-
-#: ../../boot.php:852
-msgid "Password: "
-msgstr "Pasvorto:"
-
-#: ../../boot.php:855
-msgid "Or login using OpenID: "
-msgstr "AÅ­ ensaluti per OpenID:"
-
-#: ../../boot.php:861
-msgid "Forgot your password?"
-msgstr "Ĉu vi vorgesis vian pasvorton?"
-
-#: ../../boot.php:1028
-msgid "Edit profile"
-msgstr "Redakti profilon"
-
-#: ../../boot.php:1088
-msgid "Message"
-msgstr "MesaÄo"
-
-#: ../../boot.php:1204 ../../boot.php:1283
-msgid "g A l F d"
-msgstr "\\j\\e \\l\\a G\\a \\h\\o\\r\\o, l F d"
-
-#: ../../boot.php:1205 ../../boot.php:1284
-msgid "F d"
-msgstr "F d"
-
-#: ../../boot.php:1250 ../../boot.php:1324
-msgid "[today]"
-msgstr "[hodiaÅ­]"
-
-#: ../../boot.php:1262
-msgid "Birthday Reminders"
-msgstr "Memorigilo pri naskiÄtagoj"
-
-#: ../../boot.php:1263
-msgid "Birthdays this week:"
-msgstr "NaskiÄtagoj ĉi-semajne:"
-
-#: ../../boot.php:1317
-msgid "[No description]"
-msgstr "[Neniu priskribo]"
-
-#: ../../boot.php:1335
-msgid "Event Reminders"
-msgstr "Memorigilo pri Okazoj"
-
-#: ../../boot.php:1336
-msgid "Events this week:"
-msgstr "Okazoj ĉi-semajne:"
-
-#: ../../boot.php:1541
-msgid "Status Messages and Posts"
-msgstr "ÅœtatmesaÄoj kaj AfiÅoj"
-
-#: ../../boot.php:1547
-msgid "Profile Details"
-msgstr "Profildetaloj"
-
-#: ../../boot.php:1562
-msgid "Events and Calendar"
-msgstr "Okazoj kaj Kalendaro"
-
-#: ../../boot.php:1568
-msgid "Only You Can See This"
-msgstr "Nur Vi Povas Vidi Tiun"
diff --git a/view/eo/passchanged_eml.tpl b/view/eo/passchanged_eml.tpl
deleted file mode 100644
index 0d94be3c2..000000000
--- a/view/eo/passchanged_eml.tpl
+++ /dev/null
@@ -1,20 +0,0 @@
-
-Dear {{$username}},
- Your password has been changed as requested. Please retain this
-information for your records (or change your password immediately to
-something that you will remember).
-
-
-Your login details are as follows:
-
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
-Password: {{$new_password}}
-
-You may change that password from your account settings page after logging in.
-
-
-Sincerely,
- {{$sitename}} Administrator
-
-
diff --git a/view/eo/register_open_eml.tpl b/view/eo/register_open_eml.tpl
deleted file mode 100644
index 4b397201c..000000000
--- a/view/eo/register_open_eml.tpl
+++ /dev/null
@@ -1,19 +0,0 @@
-
-An account has been created at {{$sitename}} for this email address.
-The login details are as follows:
-
-Site Location: {{$siteurl}}
-Login: {{$email}}
-Password: (the password which was provided during registration)
-
-If this account was created without your knowledge and is not desired, you may
-visit this site and reset the password. This will allow you to remove the
-account from the links on the Settings page, and we
-apologise for any inconvenience.
-
-Thank you and welcome to {{$sitename}}.
-
-Sincerely,
- {{$sitename}} Administrator
-
-
diff --git a/view/eo/register_verify_eml.tpl b/view/eo/register_verify_eml.tpl
deleted file mode 100644
index 85d9a12d3..000000000
--- a/view/eo/register_verify_eml.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
-
-A new user registration request was received at {{$sitename}} which requires
-your approval.
-
-
-The login details are as follows:
-
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
-IP Address: {{$details}}
-
-To approve this request please visit the following link:
-
-
-{{$siteurl}}/regmod/allow/{{$hash}}
-
-
-To deny the request and remove the account, please visit:
-
-
-{{$siteurl}}/regmod/deny/{{$hash}}
-
-
-Thank you.
-
diff --git a/view/eo/strings.php b/view/eo/strings.php
deleted file mode 100644
index 1fdefde46..000000000
--- a/view/eo/strings.php
+++ /dev/null
@@ -1,1771 +0,0 @@
-<?php
-
-if(! function_exists("string_plural_select_eo")) {
-function string_plural_select_eo($n){
- return ($n != 1);
-}}
-;
-App::$strings["Post successful."] = "Sukcese afiÅita.";
-App::$strings["[Embedded content - reload page to view]"] = "[Enigita enhavo - reÅargu paÄon por spekti Äin]";
-App::$strings["Contact settings applied."] = "Kontaktagordoj estas konservita.";
-App::$strings["Contact update failed."] = "Äœisdatigo de kontakto malsukcesis.";
-App::$strings["Permission denied."] = "Malpermesita.";
-App::$strings["Contact not found."] = "Kontakto ne trovita.";
-App::$strings["Repair Contact Settings"] = "Ripari kontaktagordoj.";
-App::$strings["<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact may stop working."] = "<strong>AVERTO: Tio estas tre altnivela</strong> kaj se vi entajpus malÄustan informojn, komunikado kun la kontakto eble ne plu funkcios.";
-App::$strings["Please use your browser 'Back' button <strong>now</strong> if you are uncertain what to do on this page."] = "Bonvolu klaki 'malantaŭen' en via retesplorilo <strong>nun</strong> se vi ne scias kion faru ĉi tie.";
-App::$strings["Return to contact editor"] = "Reen al kontakta redaktilo";
-App::$strings["Name"] = "Nomo";
-App::$strings["Account Nickname"] = "KaÅnomo de la konto";
-App::$strings["@Tagname - overrides Name/Nickname"] = "@Marknomo - Transpasas nomon/kaÅnomon";
-App::$strings["Account URL"] = "Adreso de la konto";
-App::$strings["Friend Request URL"] = "Kontaktpeta adreso";
-App::$strings["Friend Confirm URL"] = "Kontaktkonfirma adreso";
-App::$strings["Notification Endpoint URL"] = "Finpunkta adreso por atentigoj";
-App::$strings["Poll/Feed URL"] = "Adreso de fluo";
-App::$strings["New photo from this URL"] = "Nova bildo el tiu adreso";
-App::$strings["Submit"] = "Sendi";
-App::$strings["Help:"] = "Helpo:";
-App::$strings["Help"] = "Helpo";
-App::$strings["Not Found"] = "Ne trovita";
-App::$strings["Page not found."] = "PaÄo ne trovita";
-App::$strings["File exceeds size limit of %d"] = "Dosiero estas pli granda ol la limito de %d";
-App::$strings["File upload failed."] = "AlÅutado malsukcesis.";
-App::$strings["Friend suggestion sent."] = "Amikosugesto sendita.";
-App::$strings["Suggest Friends"] = "Sugesti amikojn";
-App::$strings["Suggest a friend for %s"] = "Sugesti amikon por %s";
-App::$strings["Event title and start time are required."] = "Titolo kaj starttempo estas bezonataj por la okazo.";
-App::$strings["l, F j"] = "l, F j";
-App::$strings["Edit event"] = "Redakti okazon";
-App::$strings["link to source"] = "ligilo al fonto";
-App::$strings["Events"] = "Okazoj";
-App::$strings["Create New Event"] = "Krei novan okazon";
-App::$strings["Previous"] = "antaÅ­a";
-App::$strings["Next"] = "sekva";
-App::$strings["hour:minute"] = "horo:minuto";
-App::$strings["Event details"] = "Detaloj de okazo";
-App::$strings["Format is %s %s. Starting date and Title are required."] = "Format is %s %s. Titolo kaj starttempo estas bezonataj.";
-App::$strings["Event Starts:"] = "Okazo startas:";
-App::$strings["Required"] = "Bezonata";
-App::$strings["Finish date/time is not known or not relevant"] = "Fina dato/tempo ne estas konata aÅ­ ne bezonata";
-App::$strings["Event Finishes:"] = "Okazo finas:";
-App::$strings["Adjust for viewer timezone"] = "Agordi al horzono de la leganto";
-App::$strings["Description:"] = "Priskribo";
-App::$strings["Location:"] = "Loko:";
-App::$strings["Title:"] = "Titolo:";
-App::$strings["Share this event"] = "Kunhavigi la okazon";
-App::$strings["Cancel"] = "Nuligi";
-App::$strings["Tag removed"] = "Marko forviÅita";
-App::$strings["Remove Item Tag"] = "ForviÅi markon";
-App::$strings["Select a tag to remove: "] = "Elektu forviÅontan markon:";
-App::$strings["Remove"] = "ForviÅi";
-App::$strings["%s welcomes %s"] = "%s salutas %s";
-App::$strings["Authorize application connection"] = "Rajtigi programkonekton";
-App::$strings["Return to your app and insert this Securty Code:"] = "Reiru al via programo kaj entajpu la securecan kodon:";
-App::$strings["Please login to continue."] = "Bonvolu ensaluti por pluigi.";
-App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Ĉu rajtigi ĉi tiun programon por atingi viajn afiÅojn kaj kontaktojn kaj/aÅ­ krei novajn afiÅojn?";
-App::$strings["Yes"] = "Jes";
-App::$strings["No"] = "Ne";
-App::$strings["Photo Albums"] = "Bildalbumoj";
-App::$strings["Contact Photos"] = "Kontaktbildoj";
-App::$strings["Upload New Photos"] = "AlÅuti novajn bildojn";
-App::$strings["everybody"] = "ĉiuj";
-App::$strings["Contact information unavailable"] = "Kontaktoj informoj ne disponeblas";
-App::$strings["Profile Photos"] = "Profilbildoj";
-App::$strings["Album not found."] = "Albumo ne trovita.";
-App::$strings["Delete Album"] = "ForviÅi albumon";
-App::$strings["Delete Photo"] = "ForviÅi bildon";
-App::$strings["was tagged in a"] = "estas markita en";
-App::$strings["photo"] = "bildo";
-App::$strings["by"] = "de";
-App::$strings["Image exceeds size limit of "] = "Bildo estas pli granda ol la limito de";
-App::$strings["Image file is empty."] = "Bilddosiero estas malplena.";
-App::$strings["Unable to process image."] = "Ne eblas procedi la bildon.";
-App::$strings["Image upload failed."] = "AlÅuto de bildo malsukcesis.";
-App::$strings["Public access denied."] = "Publika atingo ne permesita.";
-App::$strings["No photos selected"] = "Neniu bildoj elektita";
-App::$strings["Access to this item is restricted."] = "Atingo al tio elemento estas limigita.";
-App::$strings["You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."] = "Vi uzas %1$.2f MB de %2$.2f MB bildkonservejo.";
-App::$strings["You have used %1$.2f Mbytes of photo storage."] = "Vi uzas %1$.2f MB de bildkonservejo.";
-App::$strings["Upload Photos"] = "AlÅuti bildojn";
-App::$strings["New album name: "] = "Nomo por nova albumo:";
-App::$strings["or existing album name: "] = "aÅ­ nomo de estanta albumo:";
-App::$strings["Do not show a status post for this upload"] = "Ne kreu statan afiÅon por tio alÅuto.";
-App::$strings["Permissions"] = "Permesoj";
-App::$strings["Edit Album"] = "Redakti albumon";
-App::$strings["View Photo"] = "Vidi bildon";
-App::$strings["Permission denied. Access to this item may be restricted."] = "Malpermesita. Atingo al tio elemento eble estas limigita.";
-App::$strings["Photo not available"] = "La bildo ne disponeblas";
-App::$strings["View photo"] = "Vidi bildon";
-App::$strings["Edit photo"] = "Redakti bildon";
-App::$strings["Use as profile photo"] = "Uzi kiel profilbildo";
-App::$strings["Private Message"] = "Privata mesaÄo";
-App::$strings["View Full Size"] = "Vidi plengrande ";
-App::$strings["Tags: "] = "Markoj:";
-App::$strings["[Remove any tag]"] = "[ForviÅi iun markon]";
-App::$strings["Rotate CW (right)"] = "Turni horloÄdirekte (dekstren)";
-App::$strings["Rotate CCW (left)"] = "Turni kontraÅ­horloÄdirekte (maldekstren)";
-App::$strings["New album name"] = "Nova nomo de albumo";
-App::$strings["Caption"] = "Apudskribo";
-App::$strings["Add a Tag"] = "Aldoni markon";
-App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Ekzemple: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping";
-App::$strings["I like this (toggle)"] = "Mi Åatas tion (Åalti)";
-App::$strings["I don't like this (toggle)"] = "Mi malÅatas tion(Åalti)";
-App::$strings["Share"] = "Kunhavigi";
-App::$strings["Please wait"] = "Bonvolu atendi";
-App::$strings["This is you"] = "Tiu estas vi";
-App::$strings["Comment"] = "Komenti";
-App::$strings["Preview"] = "AntaÅ­rigardi";
-App::$strings["Delete"] = "ForviÅi";
-App::$strings["View Album"] = "Vidi albumon";
-App::$strings["Recent Photos"] = "Ì‚Ä´usaj bildoj";
-App::$strings["Not available."] = "Ne disponebla.";
-App::$strings["Community"] = "Komunumo";
-App::$strings["No results."] = "Nenion trovita.";
-App::$strings["This is Friendica, version"] = "Tio estas Friendica en la versio";
-App::$strings["running at web location"] = "instalita ĉe la adreso";
-App::$strings["Please visit <a href=\"http://friendica.com\">Friendica.com</a> to learn more about the Friendica project."] = "Bonvolu iri al <a href=\"http://friendica.com\">Friendica.com</a> por lerni pli pri la projekto Friendica";
-App::$strings["Bug reports and issues: please visit"] = "Cimraportoj kaj atendindaĵo: bonvolu iri al";
-App::$strings["Suggestions, praise, donations, etc. - please email \"Info\" at Friendica - dot com"] = "Sugestoj, laÅ­doj, donacoj ktp - bonvolu sendi mesÄon al \"Info\" ĉe Friendica - punkto com";
-App::$strings["Installed plugins/addons/apps:"] = "Instalitaj kromprogramoj/programoj:";
-App::$strings["No installed plugins/addons/apps"] = "Neniom da instalitaj aldonaĵoj/programoj";
-App::$strings["Item not found"] = "Elemento ne trovita";
-App::$strings["Edit post"] = "Redakti afiÅon";
-App::$strings["Post to Email"] = "Sendi per retpoÅto";
-App::$strings["Edit"] = "Redakti";
-App::$strings["Upload photo"] = "AlÅuti bildon";
-App::$strings["Attach file"] = "Kunligi dosieron";
-App::$strings["Insert web link"] = "Enmeti retan adreson";
-App::$strings["Insert YouTube video"] = "Enmeti videton ĉe YouTube";
-App::$strings["Insert Vorbis [.ogg] video"] = "Enmeti videton en formato Vorbis [.ogg]";
-App::$strings["Insert Vorbis [.ogg] audio"] = "Enmeti sonon en formato Vorbis [.ogg]";
-App::$strings["Set your location"] = "Agordi vian lokon";
-App::$strings["Clear browser location"] = "ForviÅu retesplorilan lokon";
-App::$strings["Permission settings"] = "Permesagordoj";
-App::$strings["CC: email addresses"] = "CC: retpoÅtadresojn";
-App::$strings["Public post"] = "Publika afiÅo";
-App::$strings["Set title"] = "Redakti titolon";
-App::$strings["Categories (comma-separated list)"] = "Kategorioj (disigita per komo)";
-App::$strings["Example: bob@example.com, mary@example.com"] = "Ekzemple: bob@example.com, mary@example.com";
-App::$strings["This introduction has already been accepted."] = "Tia prezento jam estas akceptita";
-App::$strings["Profile location is not valid or does not contain profile information."] = "La adreso de la profilo ne validas aÅ­ ne enhavas profilinformojn.";
-App::$strings["Warning: profile location has no identifiable owner name."] = "Averto: La adreso de la profilo ne enhavas identeblan personan nomon.";
-App::$strings["Warning: profile location has no profile photo."] = "Averto: La adreso de la profilo ne enhavas bildon.";
-App::$strings["%d required parameter was not found at the given location"] = array(
- 0 => "%d bezonataj parametroj ne trovita ĉe la donata adreso.",
- 1 => "%d bezonataj parametroj ne trovita ĉe la donata adreso.",
-);
-App::$strings["Introduction complete."] = "Prezento sukcesis.";
-App::$strings["Unrecoverable protocol error."] = "NeÄustigebla eraro en protokolo.";
-App::$strings["Profile unavailable."] = "Profilo ne estas disponebla.";
-App::$strings["%s has received too many connection requests today."] = "%s hodiaÅ­ ricevis tro multe da konektpetoj.";
-App::$strings["Spam protection measures have been invoked."] = "KontraÅ­spamilo estas aktivita.";
-App::$strings["Friends are advised to please try again in 24 hours."] = "Amikoj, vi bonvolu ripeti post 24 horoj.";
-App::$strings["Invalid locator"] = "Nevalida adreso.";
-App::$strings["Invalid email address."] = "Nevalida repoÅtadreso.";
-App::$strings["This account has not been configured for email. Request failed."] = "La konto ne estas agordita por retpoÅto. La peto malsukcesis.";
-App::$strings["Unable to resolve your name at the provided location."] = "Via nomo ne troveblas al la donita adreso.";
-App::$strings["You have already introduced yourself here."] = "Vi vin jam prezentis tie.";
-App::$strings["Apparently you are already friends with %s."] = "Åœajnas kvazaÅ­ vi jam amikiÄis kun %s.";
-App::$strings["Invalid profile URL."] = "Nevalida adreso de profilo.";
-App::$strings["Disallowed profile URL."] = "Malpermesita adreso de profilo.";
-App::$strings["Failed to update contact record."] = "Äœisdatigo de via kontaktrikordo malsukcesis.";
-App::$strings["Your introduction has been sent."] = "Via prezento estas sendita.";
-App::$strings["Please login to confirm introduction."] = "Bonvolu ensaluti por jesigi la prezenton.";
-App::$strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "MalÄusta identaĵo ensalutata. Bonvolu ensaluti en <strong>tiun</strong> profilon.";
-App::$strings["Hide this contact"] = "KaÅi tiun kontakton";
-App::$strings["Welcome home %s."] = "Bonvenon hejme, %s.";
-App::$strings["Please confirm your introduction/connection request to %s."] = "Bonvolu konfirmi vian prezenton / kontaktpeton al %s.";
-App::$strings["Confirm"] = "Konfirmi.";
-App::$strings["[Name Withheld]"] = "[KaÅita nomo]";
-App::$strings["Please enter your 'Identity Address' from one of the following supported communications networks:"] = "Bonvolu entajpi vian 'Identecan Adreson' de iu de tiuj subtenataj komunikaj retejoj: ";
-App::$strings["<strike>Connect as an email follower</strike> (Coming soon)"] = "<strike>Konektu kiel retpoÅta sekvanto</strike> (BaldaÅ­ venos)";
-App::$strings["If you are not yet a member of the free social web, <a href=\"http://dir.friendica.com/siteinfo\">follow this link to find a public Friendica site and join us today</a>."] = "Se vi ne estas membro de la libra interkona reto, <a href=\"http://dir.friendica.com/siteinfo\">sekvu ĉi-ligilon por trovi publikan Friendica retejon kaj aliÄi kun ni hodiaÅ­</a>.";
-App::$strings["Friend/Connection Request"] = "Prezento / Konektpeto";
-App::$strings["Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"] = "Ekzemploj: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca";
-App::$strings["Please answer the following:"] = "Bonvolu respondi:";
-App::$strings["Does %s know you?"] = "Ĉu %s konas vin?";
-App::$strings["Add a personal note:"] = "Aldoni personan noton:";
-App::$strings["Friendica"] = "Friendica";
-App::$strings["StatusNet/Federated Social Web"] = "StatusNet/Federaciaj interkonaj retejoj";
-App::$strings["Diaspora"] = "Diaspora";
-App::$strings[" - please do not use this form. Instead, enter %s into your Diaspora search bar."] = " - bonvolu ne uzi ĉi formo. Anstataŭe, entajpu %s en la Diaspora serĉilo.";
-App::$strings["Your Identity Address:"] = "Via identeca adreso:";
-App::$strings["Submit Request"] = "Sendi peton";
-App::$strings["Friendica Social Communications Server - Setup"] = "Friendica Interkona Komunikada Servilo - Instalo";
-App::$strings["Could not connect to database."] = "Ne eblas konekti la datumbazon.";
-App::$strings["Could not create table."] = "Ne eblas krei tabelon.";
-App::$strings["Your Friendica site database has been installed."] = "La datumbazo de vi Friendica retjo estas instalita.";
-App::$strings["You may need to import the file \"database.sql\" manually using phpmyadmin or mysql."] = "Vi bezonas mane importi la dosieron \"database.sql\" per phpmyadmin aÅ­ mysql.";
-App::$strings["Please see the file \"INSTALL.txt\"."] = "Bonvolu legi la dosieron \"INSTALL.txt\".";
-App::$strings["System check"] = "Sistema kontrolo";
-App::$strings["Check again"] = "Ree kontroli";
-App::$strings["Database connection"] = "Datumbaza konekto";
-App::$strings["In order to install Friendica we need to know how to connect to your database."] = "Por instali Friendica, ni bezonas scii kiel konekti al via datumbazo.";
-App::$strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Bonvolu kontakti vian servilprovizanton aŭ administranton se vi havas demandoj pri ĉi tiaj agordoj.";
-App::$strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "La datumbazo nomata malsupren jam ekzistu. Se Äi ne ekzistas, bonvolu unue krei Äin antaÅ­ progresi.";
-App::$strings["Database Server Name"] = "Nomo de datumbaza servilo.";
-App::$strings["Database Login Name"] = "Salutnomo ĉe la datumbazo.";
-App::$strings["Database Login Password"] = "Pasvorto ĉe la datumbazo.";
-App::$strings["Database Name"] = "Nomo de la datumbazo.";
-App::$strings["Site administrator email address"] = "RetpoÅtadreso de la reteja administranto";
-App::$strings["Your account email address must match this in order to use the web admin panel."] = "La repoÅtadreso de via konto bezonas esti la sama por uzi la TTTa administrilo.";
-App::$strings["Please select a default timezone for your website"] = "Bonvolu elekti defaÅ­ltan horzonon por via retejo.";
-App::$strings["Site settings"] = "Retejaj agordoj";
-App::$strings["Could not find a command line version of PHP in the web server PATH."] = "Komanda linia versio de PHP ne trovita en $PATH de la retservilo.";
-App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron. See <a href='http://friendica.com/node/27'>'Activating scheduled tasks'</a>"] = "Se vi ne havas komandlinian version de PHP sur la servilo, vi ne eblas plenumi fonan planitan enketon per cron. Bonvolu legi <a href='http://friendica.com/node/27'>'Activating scheduled tasks'</a>";
-App::$strings["PHP executable path"] = "Vojo de la komanda linia versio de PHP";
-App::$strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Entajpu la plenan vojon al la php komandodosiero. Vi eblas lasi tion malplena por pluigi la instalado.";
-App::$strings["Command line PHP"] = "komanda linia versio de PHP";
-App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "En via komanda linia versio de PHP je via sistemo, \"register_argc_argv\" ne estas aktivita.";
-App::$strings["This is required for message delivery to work."] = "Tio estas bezonata por la livero de mesaÄoj.";
-App::$strings["PHP register_argc_argv"] = "PHP register_argc_argv";
-App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Eraro: La funkcio \"openssl_pkey_new\" je tia sistemo ne eblas generi ĉifroÅlosilojn.";
-App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Se la operaciumo sistemo estas Windows, bonvolu legi: http://www.php.net/manual/en/openssl.installation.php";
-App::$strings["Generate encryption keys"] = "Generi ĉifroÅlosilojn";
-App::$strings["libCurl PHP module"] = "PHP modulo libCurl";
-App::$strings["GD graphics PHP module"] = "PHP modulo GD";
-App::$strings["OpenSSL PHP module"] = "PHP modulo OpenSSL";
-App::$strings["mysqli PHP module"] = "PHP modulo mysqli";
-App::$strings["mb_string PHP module"] = "PHP modulo mb_string";
-App::$strings["Apache mod_rewrite module"] = "Apache mod_rewrite modulo";
-App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Eraro: La modulo mod_rewrite en la Apache retservilo estas bezonata sed ne instalita.";
-App::$strings["Error: libCURL PHP module required but not installed."] = "Eraro: La modulo libCURL en PHP estas bezonata sed ne instalita.";
-App::$strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Eraro: La modulo GD en PHP kun subteno por JPEG estas bezonata sed ne instalita.";
-App::$strings["Error: openssl PHP module required but not installed."] = "Eraro: La modulo OpenSSL en PHP estas bezonata sed ne instalita.";
-App::$strings["Error: mysqli PHP module required but not installed."] = "Eraro: La modulo mysqli en PHP estas bezonata sed ne instalita.";
-App::$strings["Error: mb_string PHP module required but not installed."] = "Eraro: La modulo mb_string en PHP estas bezonata sed ne instalita.";
-App::$strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "La reta instalilo bezonas skribi dosieron nomata \".htconfig.php\" en la baza dosierujo de la retservilo, sed ne sukcesis.";
-App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Tio ĉi plej ofte estas agordo rilate al permesoj, ĉar la servilo eble ne povas skribi en via dosierujo, eĉ se vi mem povas skribi.";
-App::$strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Friendica top folder."] = "Post la fino de tiu proceduro, ni donos al vi tekston por konservi en dosiero .htconfig.php en via baza Friendica dosierujo.";
-App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = "Vi ankaÅ­ povas preterpasi tiun proceduron kaj fari permanan instaladon. Bonvolu legi la dosieron \"INSTALL.txt\" por trovi instrukciojn.";
-App::$strings[".htconfig.php is writable"] = ".htconfig.php estas skribebla.";
-App::$strings["Url rewrite in .htaccess is not working. Check your server configuration."] = "Url rewrite en .htaccess ne funkcias. Kontrolu la agordojn de la servilo.";
-App::$strings["Url rewrite is working"] = "URL rewrite funkcias.";
-App::$strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Ne povis skribi la datumbaza agordoj en la dosiero \".htconfig.php\". Bonvolu uzi la inkluzivan tekston por krei agordan dosieron en la baza dosierujo de la retservilo.";
-App::$strings["Errors encountered creating database tables."] = "Okazis eraroj dum la kreado de tabeloj en la datumbazo.";
-App::$strings["<h1>What next</h1>"] = "<h1>Kio sekvas nun?</h1>";
-App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "GRAVA: Vi bezonas [mane] agordi planitan taskon por la Friendica poller.";
-App::$strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
-App::$strings["Time Conversion"] = "Konverto de tempo";
-App::$strings["Friendika provides this service for sharing events with other networks and friends in unknown timezones."] = "Friendica provizas tiun servon por kunhavigi okazojn kun aliaj retoj kaj amikoj en aliaj horzonoj.";
-App::$strings["UTC time: %s"] = "UTC horo: %s";
-App::$strings["Current timezone: %s"] = "Aktuala horzono: %s";
-App::$strings["Converted localtime: %s"] = "Konvertita loka horo: %s";
-App::$strings["Please select your timezone:"] = "Bonvolu elekti vian horzonon:";
-App::$strings["Profile Match"] = "Kongrua profilo";
-App::$strings["No keywords to match. Please add keywords to your default profile."] = "Neniom da kategoriaj vortoj kongruas. Bonvolu aldoni kategoriajn vortojn al via defaÅ­lta profilo.";
-App::$strings["is interested in:"] = "interesiÄas pri:";
-App::$strings["Connect"] = "Konekti";
-App::$strings["No matches"] = "Nenio estas trovita";
-App::$strings["Remote privacy information not available."] = "Informoj pri fora privateca ne estas disponebla.";
-App::$strings["Visible to:"] = "Videbla al:";
-App::$strings["Welcome to %s"] = "Bonvenon ĉe %s";
-App::$strings["Invalid request identifier."] = "Nevalida peta identigilo.";
-App::$strings["Discard"] = "ForviÅi";
-App::$strings["Ignore"] = "Ignori";
-App::$strings["System"] = "Sistemo";
-App::$strings["Network"] = "Reto";
-App::$strings["Personal"] = "Propra";
-App::$strings["Home"] = "Hejmo";
-App::$strings["Introductions"] = "Prezentoj";
-App::$strings["Messages"] = "MesaÄoj";
-App::$strings["Show Ignored Requests"] = "Montri ignoritajn petojn";
-App::$strings["Hide Ignored Requests"] = "KaÅi ignoritajn petojn";
-App::$strings["Notification type: "] = "Tipo de atentigo:";
-App::$strings["Friend Suggestion"] = "Amikosugestoj";
-App::$strings["suggested by %s"] = "sugestita de %s";
-App::$strings["Hide this contact from others"] = "KaÅi ĉi tiun kontakton al aliaj";
-App::$strings["Post a new friend activity"] = "AfiÅi novan amikecan aktivecon";
-App::$strings["if applicable"] = "se aplikebla";
-App::$strings["Approve"] = "Aprobi";
-App::$strings["Claims to be known to you: "] = "Pensas ke vi konas ilin:";
-App::$strings["yes"] = "jes";
-App::$strings["no"] = "ne";
-App::$strings["Approve as: "] = "Aprobi kiel:";
-App::$strings["Friend"] = "Amiko";
-App::$strings["Sharer"] = "Kunhaviganto";
-App::$strings["Fan/Admirer"] = "Fanatikulo/Admiranto";
-App::$strings["Friend/Connect Request"] = "Kontaktpeto";
-App::$strings["New Follower"] = "Nova abonanto";
-App::$strings["No introductions."] = "Neniom da prezentoj";
-App::$strings["Notifications"] = "Atentigoj";
-App::$strings["%s liked %s's post"] = "%s Åatis la afiÅon de %s";
-App::$strings["%s disliked %s's post"] = "%s malÅatis la afiÅon de %s";
-App::$strings["%s is now friends with %s"] = "%s amikiÄis kun %s";
-App::$strings["%s created a new post"] = "%s kreis novan afiÅon";
-App::$strings["%s commented on %s's post"] = "%s komentis pri la afiÅo de %s";
-App::$strings["No more network notifications."] = "Ne pli da retaj atentigoj.";
-App::$strings["Network Notifications"] = "Retaj Atentigoj";
-App::$strings["No more system notifications."] = "Ne pli da sistemaj atentigoj.";
-App::$strings["System Notifications"] = "Sistemaj Atentigoj";
-App::$strings["No more personal notifications."] = "Ne pli da personaj atentigoj";
-App::$strings["Personal Notifications"] = "Personaj Atentigoj";
-App::$strings["No more home notifications."] = "Ne pli da hejmrilataj atentigoj.";
-App::$strings["Home Notifications"] = "Hejmrilataj atentigoj";
-App::$strings["Could not access contact record."] = "Ne eblis atingi kontaktrikordo.";
-App::$strings["Could not locate selected profile."] = "Ne trovis elektitan profilon.";
-App::$strings["Contact updated."] = "Kontakto estas Äisdatigita.";
-App::$strings["Contact has been blocked"] = "Kontakto estas blokita.";
-App::$strings["Contact has been unblocked"] = "Kontakto estas malblokita.";
-App::$strings["Contact has been ignored"] = "Kontakto estas ignorita.";
-App::$strings["Contact has been unignored"] = "Kontakto estas malignorita.";
-App::$strings["Contact has been archived"] = "Enarkivigis kontakton";
-App::$strings["Contact has been unarchived"] = "Elarkivigis kontakton";
-App::$strings["Contact has been removed."] = "Kontakto estas forigita.";
-App::$strings["You are mutual friends with %s"] = "Vi estas reciproka amiko de %s";
-App::$strings["You are sharing with %s"] = "Vi kunhavigas kun %s";
-App::$strings["%s is sharing with you"] = "%s kunhavigas kun vi";
-App::$strings["Private communications are not available for this contact."] = "Privataj komunikadoj ne disponeblas por ĉi tiu kontakto.";
-App::$strings["Never"] = "Neniam";
-App::$strings["(Update was successful)"] = "(Äœisdatigo sukcesis.)";
-App::$strings["(Update was not successful)"] = "(Äœisdatigo malsukcesis.)";
-App::$strings["Suggest friends"] = "Sugesti amikojn";
-App::$strings["Network type: %s"] = "Reta tipo: %s";
-App::$strings["%d contact in common"] = array(
- 0 => "%d komuna kontakto",
- 1 => "%d komunaj kontaktoj",
-);
-App::$strings["View all contacts"] = "Vidi ĉiujn kontaktojn";
-App::$strings["Unblock"] = "Malbloki";
-App::$strings["Block"] = "Bloki";
-App::$strings["Toggle Blocked status"] = "Åœalti/malÅalti Blokitan staton";
-App::$strings["Unignore"] = "Malignori";
-App::$strings["Toggle Ignored status"] = "Åœalti/malÅalti Ignoritan staton";
-App::$strings["Unarchive"] = "Elarkivigi";
-App::$strings["Archive"] = "Enarkivigi";
-App::$strings["Toggle Archive status"] = "Åœalti/malÅalti Enarkivigitan staton";
-App::$strings["Repair"] = "Ripari";
-App::$strings["Advanced Contact Settings"] = "Specialaj Kontaktagordoj";
-App::$strings["Communications lost with this contact!"] = "Mi perdis la kommunikadon kun tiu kontakto!";
-App::$strings["Contact Editor"] = "Kontakta redaktilo.";
-App::$strings["Profile Visibility"] = "Videbleco de profilo";
-App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Bonvolu elekti la profilon kiu vi volas montri al %s aspektinde kiam sekure aspektante vian profilon.";
-App::$strings["Contact Information / Notes"] = "Kontaktaj informoj / Notoj";
-App::$strings["Edit contact notes"] = "Redakti kontaktnotojn";
-App::$strings["Visit %s's profile [%s]"] = "Viziti la profilon de %s [%s]";
-App::$strings["Block/Unblock contact"] = "Bloki/Malbloki kontakton";
-App::$strings["Ignore contact"] = "Ignori kontakton";
-App::$strings["Repair URL settings"] = "Ripari URL agordoj";
-App::$strings["View conversations"] = "Vidi konversaciojn";
-App::$strings["Delete contact"] = "ForviÅi kontakton";
-App::$strings["Last update:"] = "Plej ĵusa Äisdatigo:";
-App::$strings["Update public posts"] = "Äœisdatigi publikajn afiÅojn";
-App::$strings["Update now"] = "Äœisdatigi nun";
-App::$strings["Currently blocked"] = "Nuntempe blokata";
-App::$strings["Currently ignored"] = "Nuntempe ignorata";
-App::$strings["Currently archived"] = "Nuntempe enarkivigita";
-App::$strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Rispondoj/Åataĵo al viaj publikaj afiÅoj <strong>eble</strong> plu estos videbla";
-App::$strings["Suggestions"] = "Sugestoj";
-App::$strings["Suggest potential friends"] = "Sugesti amikojn";
-App::$strings["All Contacts"] = "Ĉiuj Kontaktoj";
-App::$strings["Show all contacts"] = "Montri ĉiujn kontaktojn";
-App::$strings["Unblocked"] = "Malblokita";
-App::$strings["Only show unblocked contacts"] = "Nur montri neblokitajn kontaktojn";
-App::$strings["Blocked"] = "Blokita";
-App::$strings["Only show blocked contacts"] = "Nur montri blokitajn kontaktojn";
-App::$strings["Ignored"] = "Ignorita";
-App::$strings["Only show ignored contacts"] = "Nur montri ignoritajn kontaktojn";
-App::$strings["Archived"] = "Enarkivigita";
-App::$strings["Only show archived contacts"] = "Nur montri enarkivigitajn kontaktojn";
-App::$strings["Hidden"] = "KaÅita";
-App::$strings["Only show hidden contacts"] = "Nur montri kaÅitajn kontaktojn";
-App::$strings["Mutual Friendship"] = "Reciproka amikeco";
-App::$strings["is a fan of yours"] = "estas admiranto de vi";
-App::$strings["you are a fan of"] = "vi estas admiranto de";
-App::$strings["Edit contact"] = "Redakti kontakton";
-App::$strings["Contacts"] = "Kontaktoj";
-App::$strings["Search your contacts"] = "Serĉi viajn kontaktojn";
-App::$strings["Finding: "] = "Trovata:";
-App::$strings["Find"] = "Trovi";
-App::$strings["No valid account found."] = "Ne trovis validan konton.";
-App::$strings["Password reset request issued. Check your email."] = "Eldonis riparadon de pasvorto. Legu vian retpoÅton.";
-App::$strings["Password reset requested at %s"] = "Pasvorta riparado petita je %s";
-App::$strings["Administrator"] = "Administranto";
-App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Ne povis konfirmi la peton. (Eble vi sendis Äin antaÅ­.) Pasvorta riparado malsukcesis.";
-App::$strings["Password Reset"] = "Pasvorta riparado";
-App::$strings["Your password has been reset as requested."] = "Via pasvorto estis riparita laÅ­ via peto.";
-App::$strings["Your new password is"] = "Via nova pasvorto estas";
-App::$strings["Save or copy your new password - and then"] = "Memorigi vian novan pasvorton - kaj poste";
-App::$strings["click here to login"] = "klaku ĉi tie por ensaluti";
-App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Vi povas Åangi vian pasvorton sur la paÄo <em>agordoj</em> kiam vi sukcese ensalutis.";
-App::$strings["Forgot your Password?"] = "Ĉu vi forgesis vian pasvorton?";
-App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Entajpu vian retpoÅtadreson kaj sendu por pasvorta riparado. Poste, bonvolu legi vian retpoÅton por trovi pliajn instrukciojn.";
-App::$strings["Nickname or Email: "] = "Salutnomo aÅ­ retpoÅtadreso: ";
-App::$strings["Reset"] = "Repari";
-App::$strings["Account settings"] = "Konto";
-App::$strings["Display settings"] = "Ekrano";
-App::$strings["Connector settings"] = "Konektiloj";
-App::$strings["Plugin settings"] = "Kromprogramoj";
-App::$strings["Connected apps"] = "Konektitaj programoj";
-App::$strings["Export personal data"] = "Eksporto";
-App::$strings["Remove account"] = "Forigi konton";
-App::$strings["Settings"] = "Agordoj";
-App::$strings["Missing some important data!"] = "Mankas importantaj datumoj!";
-App::$strings["Update"] = "Äœisdatigi";
-App::$strings["Failed to connect with email account using the settings provided."] = "Ne sukcesis konekti al retpoÅtkonto kun la provizitaj agordoj.";
-App::$strings["Email settings updated."] = "RetpoÅtagordoj Äisdatigita";
-App::$strings["Passwords do not match. Password unchanged."] = "La pasvortoj ne estas egala. Pasvorto ne ÅanÄita.";
-App::$strings["Empty passwords are not allowed. Password unchanged."] = "Malplenaj pasvortoj ne estas permesita. Pasvorto ne ÅanÄita.";
-App::$strings["Password changed."] = "Pasvorto ÅanÄita.";
-App::$strings["Password update failed. Please try again."] = "Äœisdatigo de pasvorto malsukcesis. Bonvolu provi refoje.";
-App::$strings[" Please use a shorter name."] = " Bonvolu uzi pli mallongan nomon.";
-App::$strings[" Name too short."] = " Nomo estas tro mallonga.";
-App::$strings[" Not valid email."] = " RepoÅtadreso ne validas.";
-App::$strings[" Cannot change to that email."] = " Ne povas ÅanÄi al tio retpoÅtadreso.";
-App::$strings["Private forum has no privacy permissions. Using default privacy group."] = "Privata forumo ne havas privatecajn agordojn. DefaÅ­lta privateca grupo estas uzata.";
-App::$strings["Private forum has no privacy permissions and no default privacy group."] = "Privata forumo havas nek privatecajn agordojn nek defaÅ­ltan privatecan grupon.";
-App::$strings["Settings updated."] = "Agordoj Äisdatigita.";
-App::$strings["Add application"] = "Aldoni programon";
-App::$strings["Consumer Key"] = "Åœlosilo de kliento";
-App::$strings["Consumer Secret"] = "Sekreto de kliento";
-App::$strings["Redirect"] = "Alidirekto";
-App::$strings["Icon url"] = "Piktograma adreso";
-App::$strings["You can't edit this application."] = "Ĉi tio programo ne estas redaktebla.";
-App::$strings["Connected Apps"] = "Konektitaj Programoj";
-App::$strings["Client key starts with"] = "Åœlosilo de kliento komencas kun";
-App::$strings["No name"] = "Neniu nomo";
-App::$strings["Remove authorization"] = "ForviÅi rajtigon";
-App::$strings["No Plugin settings configured"] = "Neniom da kromprogramoagordoj farita";
-App::$strings["Plugin Settings"] = "Kromprogramoagordoj";
-App::$strings["Built-in support for %s connectivity is %s"] = "Integrita subteno por %s koneto estas %s";
-App::$strings["enabled"] = "Åaltita";
-App::$strings["disabled"] = "malÅaltita";
-App::$strings["StatusNet"] = "StatusNet";
-App::$strings["Email access is disabled on this site."] = "RetpoÅta atingo ne disponeblas ĉi tie.";
-App::$strings["Connector Settings"] = "Konektiloagordoj";
-App::$strings["Email/Mailbox Setup"] = "Agordoj pri RetpoÅto";
-App::$strings["If you wish to communicate with email contacts using this service (optional), please specify how to connect to your mailbox."] = "Se vi volas uzi ĉi tiun servon por komuniki per retpoÅto (nedeviga), bonvolu specifi kiel konekti al vian retpoÅtkonton.";
-App::$strings["Last successful email check:"] = "Plej ĵusa sukcesa kontrolo de poÅto:";
-App::$strings["IMAP server name:"] = "Nomo de IMAP servilo:";
-App::$strings["IMAP port:"] = "Numero de IMAP pordo:";
-App::$strings["Security:"] = "Sekureco:";
-App::$strings["None"] = "Nenio";
-App::$strings["Email login name:"] = "RetpoÅta salutnomo:";
-App::$strings["Email password:"] = "RetpoÅta pasvorto:";
-App::$strings["Reply-to address:"] = "Responda adreso (Reply-to):";
-App::$strings["Send public posts to all email contacts:"] = "Sendu publikajn afiÅojn al ĉiuj retpoÅtkontaktoj:";
-App::$strings["Action after import:"] = "Ago post la importado:";
-App::$strings["Mark as seen"] = "Marki kiel legita";
-App::$strings["Move to folder"] = "Movi al dosierujo";
-App::$strings["Move to folder:"] = "Movi al dosierujo:";
-App::$strings["Display Settings"] = "Ekranagordoj";
-App::$strings["Display Theme:"] = "Vidiga etoso:";
-App::$strings["Update browser every xx seconds"] = "Ĝisdatigu retesplorilon ĉiu xxx sekundoj";
-App::$strings["Minimum of 10 seconds, no maximum"] = "Minimume 10 sekundoj, sen maksimumo";
-App::$strings["Number of items to display on the network page:"] = "Kvanto da elementoj kiuj estos montrata ĉe la reto paÄo.";
-App::$strings["Maximum of 100 items"] = "Maksimume 100 eroj";
-App::$strings["Don't show emoticons"] = "Ne montru ridetulojn";
-App::$strings["Normal Account Page"] = "Normala KontopaÄo";
-App::$strings["This account is a normal personal profile"] = "Tiu konto estas normala persona profilo";
-App::$strings["Soapbox Page"] = "Soapbox PaÄo";
-App::$strings["Automatically approve all connection/friend requests as read-only fans"] = "Aŭtomate konfirmi ĉiujn kontaktpetojn kiel nurlegaj admirantoj";
-App::$strings["Community Forum/Celebrity Account"] = "Komunuma Forumo/Eminentula Konto";
-App::$strings["Automatically approve all connection/friend requests as read-write fans"] = "Aŭtomate konfirmi ĉiujn kontaktpetojn kiel admirantoj kapable legi kaj skribi";
-App::$strings["Automatic Friend Page"] = "AÅ­tomata Amiko PaÄo";
-App::$strings["Automatically approve all connection/friend requests as friends"] = "Aŭtomate konfirmi ĉiujn kontaktpetojn kiel amikoj";
-App::$strings["Private Forum [Experimental]"] = "Privata Forumo [eksperimenta]";
-App::$strings["Private forum - approved members only"] = "Privata forumo - nur por aprobitaj membroj";
-App::$strings["OpenID:"] = "OpenID:";
-App::$strings["(Optional) Allow this OpenID to login to this account."] = "(Nedeviga) Permesi atingon al la konton al ĉi tio OpenID.";
-App::$strings["Publish your default profile in your local site directory?"] = "Publikigi vian defaÅ­ltan profilon en la loka reteja katalogo?";
-App::$strings["Publish your default profile in the global social directory?"] = "Publikigi vian defaÅ­ltan profilon en la tutmonda interkona katalogo?";
-App::$strings["Hide your contact/friend list from viewers of your default profile?"] = "KaÅi vian liston de kontaktoj/amiko al spektantoj de via defaÅ­lta profilo?";
-App::$strings["Hide your profile details from unknown viewers?"] = "KaÅi viajn profilajn detalojn al nekonataj spektantoj?";
-App::$strings["Allow friends to post to your profile page?"] = "Ĉu amikoj povu afiÅi al via profilo?";
-App::$strings["Allow friends to tag your posts?"] = "Ĉu amikoj povu aldoni markojn al viaj afiÅoj?";
-App::$strings["Allow us to suggest you as a potential friend to new members?"] = "Ĉu ni povu sugesti vin kiel amiko al novaj membroj?";
-App::$strings["Permit unknown people to send you private mail?"] = "Permesigi nekonatulojn sendi retpoÅton al vi?";
-App::$strings["Profile is <strong>not published</strong>."] = "Profilo <strong>ne estas publika</strong>.";
-App::$strings["or"] = "aÅ­";
-App::$strings["Your Identity Address is"] = "Via identeca adreso estas";
-App::$strings["Automatically expire posts after this many days:"] = "Automatike senvalidigi afiÅojn post tiom da tagoj:";
-App::$strings["If empty, posts will not expire. Expired posts will be deleted"] = "Se malplena, afiÅoj neniam senvalidiÄos. Senvalidigitajn afiÅon estos forviÅata";
-App::$strings["Advanced expiration settings"] = "Detalaj agordoj rilate al senvalidiÄo";
-App::$strings["Advanced Expiration"] = "Detala senvalidiÄo";
-App::$strings["Expire posts:"] = "Senvalidigi afiÅojn:";
-App::$strings["Expire personal notes:"] = "Senvalidigi personajn notojn:";
-App::$strings["Expire starred posts:"] = "Senvalidigi steligitajn afiÅojn:";
-App::$strings["Expire photos:"] = "Senvalidigi bildojn:";
-App::$strings["Only expire posts by others:"] = "Nur senvalidigi afiÅojn de aliaj: ";
-App::$strings["Account Settings"] = "Kontoagordoj";
-App::$strings["Password Settings"] = "Agordoj pri Pasvorto";
-App::$strings["New Password:"] = "Nova pasvorto:";
-App::$strings["Confirm:"] = "Konfirmi:";
-App::$strings["Leave password fields blank unless changing"] = "Lasu pasvortkampojn malplenaj se vi ne ÅanÄas la pasvorton.";
-App::$strings["Basic Settings"] = "Bazaj Agordoj";
-App::$strings["Full Name:"] = "Plena Nomo:";
-App::$strings["Email Address:"] = "RetpoÅtadreso:";
-App::$strings["Your Timezone:"] = "Via Horzono:";
-App::$strings["Default Post Location:"] = "DefaÅ­lta Loko por AfiÅoj:";
-App::$strings["Use Browser Location:"] = "Uzu Lokon laÅ­ Retesplorilo:";
-App::$strings["Security and Privacy Settings"] = "Agordoj pri Sekureco kaj Privateco";
-App::$strings["Maximum Friend Requests/Day:"] = "Taga maksimumo da kontaktpetoj:";
-App::$strings["(to prevent spam abuse)"] = "(por malhelpi spamaĵojn)";
-App::$strings["Default Post Permissions"] = "DefaÅ­ltaj permesoj por afiÅoj";
-App::$strings["(click to open/close)"] = "(klaku por malfermi/fermi)";
-App::$strings["Maximum private messages per day from unknown people:"] = "Taga maksimumo da privataj mesaÄoj.";
-App::$strings["Notification Settings"] = "Agordoj pri Atentigoj";
-App::$strings["By default post a status message when:"] = "DefaÅ­lte afiÅi statmesaÄon okaze de:";
-App::$strings["accepting a friend request"] = "akcepti kontaktpeton";
-App::$strings["joining a forum/community"] = "aliÄi forumon/komunumon";
-App::$strings["making an <em>interesting</em> profile change"] = "fari <em>interesan</em> profilÅanÄon";
-App::$strings["Send a notification email when:"] = "Sendu atentiga repoÅton se:";
-App::$strings["You receive an introduction"] = "Vi ricevas inviton";
-App::$strings["Your introductions are confirmed"] = "Viaj prezentoj estas konfirmata.";
-App::$strings["Someone writes on your profile wall"] = "Iu skribas je via profila muro.";
-App::$strings["Someone writes a followup comment"] = "Iu skribas sekvan komenton";
-App::$strings["You receive a private message"] = "Vi ricevas privatan mesaÄon.";
-App::$strings["You receive a friend suggestion"] = "Vi ricevas amikosugeston";
-App::$strings["You are tagged in a post"] = "Vi estas markita en afiÅon";
-App::$strings["Advanced Account/Page Type Settings"] = "Detalaj Agordoj pri Tipo de Konto/PaÄo.";
-App::$strings["Change the behaviour of this account for special situations"] = "Agordi la teniÄon de la konto en specialaj situacioj";
-App::$strings["Manage Identities and/or Pages"] = "Administri identecojn kaj/aÅ­ paÄojn.";
-App::$strings["Toggle between different identities or community/group pages which share your account details or which you have been granted \"manage\" permissions"] = "Åœalti inter aliaj identecojn aj komunumaj/grupaj paÄoj kiuj kunhavas viajn kontajn detalojn au por kiuj vi havas \"administranto\" permesojn.";
-App::$strings["Select an identity to manage: "] = "Elektu identencon por administrado:";
-App::$strings["Search Results For:"] = "Rezultoj de la serĉado pri:";
-App::$strings["Remove term"] = "ForviÅu terminon";
-App::$strings["Saved Searches"] = "Konservitaj Serĉadoj";
-App::$strings["add"] = "aldoni";
-App::$strings["Commented Order"] = "Komenta Ordo";
-App::$strings["Sort by Comment Date"] = "Ordigi laÅ­ Dato de Komento";
-App::$strings["Posted Order"] = "AfiÅita Ordo";
-App::$strings["Sort by Post Date"] = "Ordigi laÅ­ Dato de AfiÅado";
-App::$strings["Posts that mention or involve you"] = "AfiÅoj menciantaj vin aÅ­ pri vi";
-App::$strings["New"] = "Nova";
-App::$strings["Activity Stream - by date"] = "Fluo de Aktiveco - laÅ­ dato";
-App::$strings["Starred"] = "Steligita";
-App::$strings["Favourite Posts"] = "Favorigitaj AfiÅoj";
-App::$strings["Shared Links"] = "Kunhavigitaj Ligiloj";
-App::$strings["Interesting Links"] = "Interesaj Ligiloj";
-App::$strings["Warning: This group contains %s member from an insecure network."] = array(
- 0 => "Averto: La grupo enhavas %s membron el nesekuraj retejoj.",
- 1 => "Averto: La grupo enhavas %s membrojn el nesekuraj retejoj.",
-);
-App::$strings["Private messages to this group are at risk of public disclosure."] = "La privateco de privataj mesaÄoj al ĉi tiu grupo ne ĉiam estas garantita.";
-App::$strings["No such group"] = "Grupo ne estas trovita";
-App::$strings["Group is empty"] = "Grupo estas malplena";
-App::$strings["Group: "] = "Grupo:";
-App::$strings["Contact: "] = "Kontakto:";
-App::$strings["Private messages to this person are at risk of public disclosure."] = "La privateco de privataj mesaÄoj al ĉi tiu persono ne ĉiam estas garantita.";
-App::$strings["Invalid contact."] = "Nevalida kontakto.";
-App::$strings["Personal Notes"] = "Personaj Notoj";
-App::$strings["Save"] = "Konservi";
-App::$strings["Number of daily wall messages for %s exceeded. Message failed."] = "Number of daily wall messages for %s exceeded. MessaÄo malsukcesis.";
-App::$strings["No recipient selected."] = "Neniom da ricevontoj.";
-App::$strings["Unable to check your home location."] = "Ne eblas kontroli vian hejmlokon.";
-App::$strings["Message could not be sent."] = "Ne povas sendi la mesaÄon.";
-App::$strings["Message collection failure."] = "Malsukcese provis kolekti mesaÄojn.";
-App::$strings["Message sent."] = "MesaÄo estas sendita.";
-App::$strings["No recipient."] = "Neniom da ricevontoj.";
-App::$strings["Please enter a link URL:"] = "Bonvolu entajpu adreson de ligilo:";
-App::$strings["Send Private Message"] = "Sendi Privatan MesaÄon";
-App::$strings["If you wish for %s to respond, please check that the privacy settings on your site allow private mail from unknown senders."] = "Se vi deziras ke %s respondu, bonvolu kontroli ke la privatecaj agordoj je via retejo permesas privatajn mesaÄojn de nekonataj sendantoj.";
-App::$strings["To:"] = "Al:";
-App::$strings["Subject:"] = "Temo:";
-App::$strings["Your message:"] = "Via mesaÄo:";
-App::$strings["Welcome to Friendica"] = "Bonvenon ĉe Friendica";
-App::$strings["New Member Checklist"] = "Kontrololisto por Novaj Membroj";
-App::$strings["We would like to offer some tips and links to help make your experience enjoyable. Click any item to visit the relevant page. A link to this page will be visible from your home page for two weeks after your initial registration and then will quietly disappear."] = "Lasu nin oferi al vi kelkajn konsolojn kaj ligilojn por plifaciligi vian komencon. Klaku iun elementon por viziti la rilatan paÄon. Ligilo al ĉi tiu paÄo videblos en via hejmpaÄo dum du semajnojn post via komenca membriÄo. Post du semajnoj, la ligilo silente malaperos. ";
-App::$strings["On your <em>Quick Start</em> page - find a brief introduction to your profile and network tabs, connect to Facebook, make some new connections, and find some groups to join."] = "Je via <em>Rapida Starto</em> paÄo - trovu mallongan enigon pri via profilo kaj la reto folioj, konektu al Facebook, faru novajn konektojn kaj trovu aliÄindajn grupojn.";
-App::$strings["On your <em>Settings</em> page - change your initial password. Also make a note of your Identity Address. This looks just like an email address - and will be useful in making friends on the free social web."] = "Bonvolu ÅanÄi vian pasvorton ĉe <em>Agordoj</em>. Krome, memorigu vian identadreson. Äœi aspektas kiel retpoÅtadreso kaj estas bezonata por konekti al novaj amikon en la libera interkona reto.";
-App::$strings["Review the other settings, particularly the privacy settings. An unpublished directory listing is like having an unlisted phone number. In general, you should probably publish your listing - unless all of your friends and potential friends know exactly how to find you."] = "Kontrolu la aliajn agordojn, precipe la privatecajn agordojn. Nepublikigita profilo similas al havi telefonnumberon ne registrata en iu telefonlibro. Äœenerale vi eble volas publikigi vian profilon. Alie, viaj amikoj kaj estontaj amikoj bezonas scii kiel rekte trovi vin.";
-App::$strings["Upload a profile photo if you have not done so already. Studies have shown that people with real photos of themselves are ten times more likely to make friends than people who do not."] = "EnÅuti profilbildon se vi ankoraÅ­ ne havas Äin. LaÅ­ studoj, homoj kun realaj biloj de si mem trovas novajn amikon duope pli probable ol homoj sen reala bildo.";
-App::$strings["Authorise the Facebook Connector if you currently have a Facebook account and we will (optionally) import all your Facebook friends and conversations."] = "Rajtigu la Facebook Konektilon se vi nuntempe havas Facebook konton, kaj ni (nedeviga) enportu viajn Facebook amikojn kaj konversaciojn.";
-App::$strings["<em>If</em> this is your own personal server, installing the Facebook addon may ease your transition to the free social web."] = "<em>Se</tm> ĉi tiu estas via propra TTT servilo, instali la Facebook kromprogramon eble plifaciligos la transpason al la libera interkona reto.";
-App::$strings["Enter your email access information on your Connector Settings page if you wish to import and interact with friends or mailing lists from your email INBOX"] = "Entajpu la akreditaĵojn por via retpoÅtkonto en la konektilagordoj se vi volas importi aÅ­ interagi kun amikoj aÅ­ dissendlistoj pere de via retkesto.";
-App::$strings["Edit your <strong>default</strong> profile to your liking. Review the settings for hiding your list of friends and hiding the profile from unknown visitors."] = "Redakti viajn <strong>defaÅ­ltan</strong> profilon kiel vi Åatas Äin. Kontrolu la agordojn por kaÅi vian kontaktliston aÅ­ kaÅi vian profilon al nekonataj vizitantoj.";
-App::$strings["Set some public keywords for your default profile which describe your interests. We may be able to find other people with similar interests and suggest friendships."] = "Aldonu publikajn Ålosilvortojn al via defaÅ­lta profilo, kiuj priskribas viajn interesojn. Ni eble povas trovi aliajn uzantojn kun similaj interesoj kaj sugesti amikojn.";
-App::$strings["Your Contacts page is your gateway to managing friendships and connecting with friends on other networks. Typically you enter their address or site URL in the <em>Add New Contact</em> dialog."] = "Via kontaktpaÄo estas via portalo por administri amikojn kaj konekti kun amikoj en aliaj retoj. Vi kutime entajpas iliajn adreson aÅ­ URL adreso en la <em>Aldonu Novan Kontakton</em> dialogon.";
-App::$strings["The Directory page lets you find other people in this network or other federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on their profile page. Provide your own Identity Address if requested."] = "Ĉe la Katalogo vi povas trovi aliajn homojn en ĉi tiu retejo, au en aliaj federaciaj retejoj. Elrigardi al <em>Konekti</em> aÅ­ <em>Sekvi</em> ligiloj ĉe iliaj profilo. Donu vian propran Identecan Adreson se la retejo demandas Äin.";
-App::$strings["On the side panel of the Contacts page are several tools to find new friends. We can match people by interest, look up people by name or interest, and provide suggestions based on network relationships. On a brand new site, friend suggestions will usually begin to be populated within 24 hours."] = "En la flanka strio de la Kontaktoj paÄo troviÄas kelkajn helpilojn por trovi novajn amikojn. Ni povas automate trovi amikojn per interesoj, serĉu ilin per nomo aÅ­ intereso kaj faras sugestojn baze de estantaj kontaktoj. Ĉe nova instalita retejo, la unuaj sugestoj kutime aperas post 24 horoj.";
-App::$strings["Once you have made some friends, organize them into private conversation groups from the sidebar of your Contacts page and then you can interact with each group privately on your Network page."] = "Kiam vi trovis kelkajn novajn amikojn, ordigi ilin en grupoj por privata komunikado en la flanka strio de via Kontaktoj paÄo, kaj vi povas private komuniki kun ili je via Reto paÄo.";
-App::$strings["Our <strong>help</strong> pages may be consulted for detail on other program features and resources."] = "Niaj <strong>Helpo</strong> paÄoj enhavas pli da detaloj pri aliaj programaj trajtoj.";
-App::$strings["Item not available."] = "Elemento ne disponeblas.";
-App::$strings["Item was not found."] = "Elemento ne trovita.";
-App::$strings["Group created."] = "Grupo estas kreita.";
-App::$strings["Could not create group."] = "Ne povas krei grupon.";
-App::$strings["Group not found."] = "Grupo ne estas trovita.";
-App::$strings["Group name changed."] = "La nomo de la grupo estas ÅanÄita.";
-App::$strings["Permission denied"] = "Malpermesita";
-App::$strings["Create a group of contacts/friends."] = "Krei grupon da kontaktoj/amikoj.";
-App::$strings["Group Name: "] = "Nomo de la grupo:";
-App::$strings["Group removed."] = "Grupo estas forviÅita.";
-App::$strings["Unable to remove group."] = "Ne eblas forviÅi grupon.";
-App::$strings["Group Editor"] = "Grupa redaktilo";
-App::$strings["Members"] = "Anoj";
-App::$strings["Click on a contact to add or remove."] = "Klaku kontakton por aldoni aÅ­ forviÅi.";
-App::$strings["Invalid profile identifier."] = "Nevaliada profila identigilo.";
-App::$strings["Profile Visibility Editor"] = "Redaktilo por profila videbleco.";
-App::$strings["Profile"] = "Profilo";
-App::$strings["Visible To"] = "Videbla Al";
-App::$strings["All Contacts (with secure profile access)"] = "Ĉiuj Kontaktoj (kun sekura atingo al la profilo)";
-App::$strings["No contacts."] = "Neniu kontaktojn.";
-App::$strings["View Contacts"] = "Vidi Kontaktojn";
-App::$strings["Registration details for %s"] = "Detaloj de la registrado por %s";
-App::$strings["Registration successful. Please check your email for further instructions."] = "Registrado sukcesis. Bonvolu kontroli vian retpoÅton por pli da instruoj.";
-App::$strings["Failed to send email message. Here is the message that failed."] = "Malsukcesis sendi retpoÅton. Jen la malsukcesa mesaÄo.";
-App::$strings["Your registration can not be processed."] = "Mi ne povas prilabori vian registradon.";
-App::$strings["Registration request at %s"] = "Peto de registrado al %s";
-App::$strings["Your registration is pending approval by the site owner."] = "Via registrado bezonas apropbon de la administranto.";
-App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "La retejo transiras la maksimuman kvanton da ĉiutagaj kontaj registradoj. Bonvolu provi denove morgaŭ.";
-App::$strings["You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "Vi ankaÅ­ (nedeviga) povas plenigi la formularon per OpenID se vi provizas vian OpenID adreson kaj klakas 'Registri'.";
-App::$strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "Se vi ne konas OpenID, bonvolu lasi tiun kampon malplena kaj entajpu la aliajn elementojn.";
-App::$strings["Your OpenID (optional): "] = "Via OpenID (nedeviga):";
-App::$strings["Include your profile in member directory?"] = "Aldoni vian profilon al la membrokatalogo?";
-App::$strings["Membership on this site is by invitation only."] = "MembriÄi ĉi tie nur eblas laÅ­ invito.";
-App::$strings["Your invitation ID: "] = "Via invita idento: ";
-App::$strings["Registration"] = "Registrado";
-App::$strings["Your Full Name (e.g. Joe Smith): "] = "Via Plena Nomo (e.g. Joe Smith): ";
-App::$strings["Your Email Address: "] = "Via RetpoÅtadreso: ";
-App::$strings["Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be '<strong>nickname@\$sitename</strong>'."] = "Elektu kaÅnomon por la profilo. Tiu bezonas komenci kun teksta litero. Poste, via profila adreso ĉi tie estos: '<strong>kaÅnomo@\$sitename</strong>'.";
-App::$strings["Choose a nickname: "] = "Elektu kaÅnomon: ";
-App::$strings["Register"] = "Registri";
-App::$strings["People Search"] = "Serĉi Membrojn";
-App::$strings["status"] = "staton";
-App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s Åatas la %3\$s de %2\$s";
-App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s malÅatas la %3\$s de %2\$s";
-App::$strings["Item not found."] = "Elemento ne estas trovita.";
-App::$strings["Access denied."] = "Atingo nepermesita.";
-App::$strings["Photos"] = "Bildoj";
-App::$strings["Files"] = "Dosieroj";
-App::$strings["Account approved."] = "Konto aprobita.";
-App::$strings["Registration revoked for %s"] = "Registraĵo por %s senvalidigita.";
-App::$strings["Please login."] = "Bonvolu ensaluti.";
-App::$strings["Unable to locate original post."] = "Ne eblas trovi originalan afiÅon.";
-App::$strings["Empty post discarded."] = "ForviÅis malplenan afiÅon.";
-App::$strings["Wall Photos"] = "Muraj Bildoj";
-App::$strings["System error. Post not saved."] = "Sistema eraro. AfiÅo ne registrita.";
-App::$strings["This message was sent to you by %s, a member of the Friendica social network."] = "Ĉi mesaÄo estas sendita al vi de %s, membro de la Friendica interkona reto.";
-App::$strings["You may visit them online at %s"] = "Vi povas viziti ilin rete ĉe %s";
-App::$strings["Please contact the sender by replying to this post if you do not wish to receive these messages."] = "Bonvolu rispondi al ĉi mesaÄo kaj kontaktu la sendinto se vi ne volas ricevi tiujn mesaÄojn.";
-App::$strings["%s posted an update."] = "%s publikigis afiÅon.";
-App::$strings["Image uploaded but image cropping failed."] = "Bildo estas alÅutita, sed malsukcesis tranĉi la bildon.";
-App::$strings["Image size reduction [%s] failed."] = "Malsukcesis malpligrandigi [%s] la bildon.";
-App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "ReÅarÄu la paÄon au malplenigu la kaÅmemoro de la retesplorilo se la nova bildo ne tuj aperas.";
-App::$strings["Unable to process image"] = "Ne eblas procezi bildon.";
-App::$strings["Image exceeds size limit of %d"] = "Bildo estas pli granda ol la limito %d";
-App::$strings["Upload File:"] = "AlÅuti dosieron:";
-App::$strings["Upload Profile Photo"] = "AlÅuti profilbildon";
-App::$strings["Upload"] = "AlÅuti";
-App::$strings["skip this step"] = "Preterpasi tian paÅon";
-App::$strings["select a photo from your photo albums"] = "elekti bildon el viaj albumoj";
-App::$strings["Crop Image"] = "Stuci Bildon";
-App::$strings["Please adjust the image cropping for optimum viewing."] = "Bonvolu agordi la stuco de la bildo por optimuma aspekto.";
-App::$strings["Done Editing"] = "Finigi Redaktado";
-App::$strings["Image uploaded successfully."] = "Bildo estas sukcese enÅutita.";
-App::$strings["No profile"] = "Neniu profilo";
-App::$strings["Remove My Account"] = "Forigi Mian Konton";
-App::$strings["This will completely remove your account. Once this has been done it is not recoverable."] = "Tio tute forigos vian konton. Kiam farita, la konto ne estas restaÅ­rebla.";
-App::$strings["Please enter your password for verification:"] = "Bonvolu entajpi vian pasvorton por kontrolado:";
-App::$strings["New Message"] = "Nova MesaÄo";
-App::$strings["Unable to locate contact information."] = "Ne eblas trovi kontaktajn informojn.";
-App::$strings["Message deleted."] = "MesaÄo estas forviÅita.";
-App::$strings["Conversation removed."] = "Dialogo estas forviÅita.";
-App::$strings["No messages."] = "Neniom da mesaÄoj.";
-App::$strings["Unknown sender - %s"] = "Nekonata sendanto - %s";
-App::$strings["You and %s"] = "Vi kaj %s";
-App::$strings["%s and You"] = "%s kaj vi";
-App::$strings["Delete conversation"] = "ForviÅi dialogon";
-App::$strings["D, d M Y - g:i A"] = "D, d M Y - g:i A";
-App::$strings["%d message"] = array(
- 0 => "%d mesaÄo",
- 1 => "%d mesaÄoj",
-);
-App::$strings["Message not available."] = "MesaÄo nedisponebla.";
-App::$strings["Delete message"] = "ForviÅu mesaÄon";
-App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Sekura komunikado ne disponeblas. Vi <strong>eble</strong> povus respondi sur la profilpaÄo de la sendanto.";
-App::$strings["Send Reply"] = "Respondi";
-App::$strings["Friends of %s"] = "Amikoj de %s";
-App::$strings["No friends to display."] = "Neniom da amiko al montri.";
-App::$strings["Theme settings updated."] = "Gisdatigis agordojn pri etosoj.";
-App::$strings["Site"] = "Retejo";
-App::$strings["Users"] = "Uzantoj";
-App::$strings["Plugins"] = "Kromprogramoj";
-App::$strings["Themes"] = "Etosoj";
-App::$strings["DB updates"] = "DB Äisdatigoj";
-App::$strings["Logs"] = "Protokoloj";
-App::$strings["Admin"] = "Administrado";
-App::$strings["Plugin Features"] = "Kromprogramaj Trajtoj";
-App::$strings["User registrations waiting for confirmation"] = "Uzantaj registradoj atendante konfirmon";
-App::$strings["Normal Account"] = "Normala konto";
-App::$strings["Soapbox Account"] = "Soapbox Konto";
-App::$strings["Community/Celebrity Account"] = "Komunuma/eminentula Konto";
-App::$strings["Automatic Friend Account"] = "AÅ­tomata Amika Konto";
-App::$strings["Message queues"] = "MesaÄvicoj";
-App::$strings["Administration"] = "Administrado";
-App::$strings["Summary"] = "Resumo";
-App::$strings["Registered users"] = "Registrataj uzantoj";
-App::$strings["Pending registrations"] = "Okazontaj registradoj";
-App::$strings["Version"] = "Versio";
-App::$strings["Active plugins"] = "Åœaltitaj kromprogramoj";
-App::$strings["Site settings updated."] = "Äœisdatigis retejaj agordoj.";
-App::$strings["Closed"] = "Ferma";
-App::$strings["Requires approval"] = "Bezonas aprobon";
-App::$strings["Open"] = "Malferma";
-App::$strings["No SSL policy, links will track page SSL state"] = "Sen SSL strategio. Ligiloj sekvos la SSL staton de la paÄo.";
-App::$strings["Force all links to use SSL"] = "Devigi ke ĉiuj ligiloj uzu SSL.";
-App::$strings["Self-signed certificate, use SSL for local links only (discouraged)"] = "Memsubskribita atestilo, nur uzu SSL por lokaj ligiloj (malkuraÄigata)";
-App::$strings["File upload"] = "AlÅuto";
-App::$strings["Policies"] = "Politiko";
-App::$strings["Advanced"] = "Altnivela";
-App::$strings["Site name"] = "Nomo de retejo";
-App::$strings["Banner/Logo"] = "Emblemo";
-App::$strings["System language"] = "Sistema lingvo";
-App::$strings["System theme"] = "Sistema etoso";
-App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "DefaÅ­lta sistema etoso - transpasebla de uzantprofiloj - <a href='#' id='cnftheme'>redakti agordoj pri etosoj</a>";
-App::$strings["SSL link policy"] = "Strategio por SSL ligiloj";
-App::$strings["Determines whether generated links should be forced to use SSL"] = "Difinas ĉu generotaj ligiloj devige uzu SSL.";
-App::$strings["Maximum image size"] = "Maksimuma bildgrando";
-App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Maksimuma grando en bajtoj por alÅutotaj bildoj. DefaÅ­lte 0, kio signifas neniu limito.";
-App::$strings["Register policy"] = "Interkonsento pri registrado";
-App::$strings["Register text"] = "Interkonsento teksto";
-App::$strings["Will be displayed prominently on the registration page."] = "Tio estos eminente montrata en la registro paÄo.";
-App::$strings["Accounts abandoned after x days"] = "Kontoj forlasitaj post x tagoj";
-App::$strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Mi ne malÅparu energion por enketi aliajn retejojn pri forlasitaj kontoj. Entajpu 0 por ne uzi templimo.";
-App::$strings["Allowed friend domains"] = "Permesitaj amikaj domainoj";
-App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Perkome disigita listo da domajnoj kiuj rajtas konstrui amikecojn kun ĉi tiu retejo. Ĵokeroj eblas. Malplena por rajtigi ĉiujn ajn domajnojn.";
-App::$strings["Allowed email domains"] = "Permesitaj retpoÅtaj domajnoj";
-App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Perkome disigita listo da domajnoj kiuj uzeblas kiel retpoÅtaj adresoj en novaj registradoj. Ä´okeroj eblas. Malplena por rajtigi ĉiujn ajn domajnojn.";
-App::$strings["Block public"] = "Bloki publike";
-App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Elektu por bloki publikan atingon al ĉiuj alie publikajn paÄojn en ĉi tiu retejo kiam vi ne estas ensalutita.";
-App::$strings["Force publish"] = "Devigi publikigon";
-App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Elektu por devigi la registradon en la loka katalogo al ĉiuj profiloj en ĉi tiu retejo.";
-App::$strings["Global directory update URL"] = "Äœenerala adreso por Äisdatigi la katalogon";
-App::$strings["URL to update the global directory. If this is not set, the global directory is completely unavailable to the application."] = "URL adreso por Äisdatigi la tutmondan katalogon. Se ne agordita, la tutmonda katatolge tute ne disponeblas al la programo.";
-App::$strings["Block multiple registrations"] = "Bloki pluroblajn registradojn.";
-App::$strings["Disallow users to register additional accounts for use as pages."] = "Malpermesi al uzantoj la permeson por registri pluajn kontojn kiel paÄoj.";
-App::$strings["OpenID support"] = "Subteno por OpenID";
-App::$strings["OpenID support for registration and logins."] = "Subteni OpenID por registrado kaj ensaluto.";
-App::$strings["Fullname check"] = "Kontroli plenan nomon";
-App::$strings["Force users to register with a space between firstname and lastname in Full name, as an antispam measure"] = "Kiel kontraÅ­spamilo, devigi uzantoj al registrado kun spaceto inter la persona nomo kaj la familia nomo.";
-App::$strings["UTF-8 Regular expressions"] = "UTF-8 regulaj exprimoj";
-App::$strings["Use PHP UTF8 regular expressions"] = "Uzi PHP UTF8 regulajn esprimojn.";
-App::$strings["Show Community Page"] = "Montri Komunuma PaÄo";
-App::$strings["Display a Community page showing all recent public postings on this site."] = "Montri komunuma paÄo kun ĉiuj ĵusaj afiÅoj en ĉi tiu retejo.";
-App::$strings["Enable OStatus support"] = "Åœalti subtenon por OStatus";
-App::$strings["Provide built-in OStatus (identi.ca, status.net, etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."] = "Provizi integritan OStatus (identi.ca, status.net ktp) subtenon. Ĉiuj komunikadoj en OStatus estas publikaj, do privatecaj avertoj aperos de tempo al tempo.";
-App::$strings["Enable Diaspora support"] = "Åœalti subtenon por Diaspora";
-App::$strings["Provide built-in Diaspora network compatibility."] = "Provizi integritan Diaspora subtenon.";
-App::$strings["Only allow Friendica contacts"] = "Nur permesigi Friendica kontaktojn";
-App::$strings["All contacts must use Friendica protocols. All other built-in communication protocols disabled."] = "Ĉiuj kontaktoj devas uzi Friendica protokolojn. Ĉiuj aliaj komunikaj protokoloj malaktivita.";
-App::$strings["Verify SSL"] = "Kontroli SSL";
-App::$strings["If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites."] = "Se vi deziras, vi povas aktivigi severan kontroladon de SSL atestiloj. Pro tio, vie (tute) ne eblos konekti al SSL retejoj kun memsubskribitaj atestiloj.";
-App::$strings["Proxy user"] = "Uzantnomo por retperanto";
-App::$strings["Proxy URL"] = "URL adreso de retperanto";
-App::$strings["Network timeout"] = "Reta tempolimo";
-App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valoro en sekundoj. Uzu 0 por mallimitigi (ne rekomendata).";
-App::$strings["Delivery interval"] = "Intervalo de liverado";
-App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Malfruigi fonan liveradon dum tiom da sekundoj por malpliigi la Åargon de la sistemo. Rekomendoj: 4-5 por komunaj serviloj, 2-3 por virtualaj privataj serviloj, 0-1 por grandaj dediĉitaj serviloj.";
-App::$strings["Poll interval"] = "Enketintervalo";
-App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Malfruigi fonajn enketprocesojn je tiom da sekundoj por malpliigi la Åargon de la sistemo. Se 0, uzas la liverintervalon.";
-App::$strings["Maximum Load Average"] = "Maksimuma Meza SistemÅargo";
-App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maksimuma sistemÅargo post kiu livero- kaj enketprocesoj estos prokrastinataj. - DefaÅ­lte 50.";
-App::$strings["Update has been marked successful"] = "Äœisdatigo estas markita sukcesa";
-App::$strings["Executing %s failed. Check system logs."] = "Ne sukcesis plenumi %s. Kontrolu la sistemprotokolojn.";
-App::$strings["Update %s was successfully applied."] = "Sukcese aplikis la Äisdatigo %s.";
-App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "Äœisdatigo %s ne liveris elirstaton. ";
-App::$strings["Update function %s could not be found."] = "Ne troveblas Äisdatigo funkcio %s.";
-App::$strings["No failed updates."] = "Neniom da malsukcesaj Äisdatigoj.";
-App::$strings["Failed Updates"] = "Malsukcesaj Äœisdatigoj";
-App::$strings["This does not include updates prior to 1139, which did not return a status."] = "Ne inkluzivas Äisdatigojn antaÅ­ 1139, kiuj ne liveris elirstaton.";
-App::$strings["Mark success (if update was manually applied)"] = "Marki sukcesa (se la Äisdatigo estas instalita mane)";
-App::$strings["Attempt to execute this update step automatically"] = "Provi automate plenumi ĉi tian paÅon de la Äisdatigo.";
-App::$strings["%s user blocked/unblocked"] = array(
- 0 => "Blokis/malblokis %s uzanton",
- 1 => "Blokis/malblokis %s uzantojn",
-);
-App::$strings["%s user deleted"] = array(
- 0 => "%s uzanto forviÅita",
- 1 => "%s uzanto forviÅitaj",
-);
-App::$strings["User '%s' deleted"] = "Uzanto '%s' forviÅita";
-App::$strings["User '%s' unblocked"] = "Uzanto '%s' malblokita";
-App::$strings["User '%s' blocked"] = "Uzanto '%s' blokita";
-App::$strings["select all"] = "elekti ĉiujn";
-App::$strings["User registrations waiting for confirm"] = "RegistriÄoj atendante aprobon";
-App::$strings["Request date"] = "Dato de peto";
-App::$strings["Email"] = "RetpoÅto";
-App::$strings["No registrations."] = "Neniom da registriÄoj.";
-App::$strings["Deny"] = "Negi";
-App::$strings["Register date"] = "Dato de registrado";
-App::$strings["Last login"] = "Plej ĵusa ensaluto";
-App::$strings["Last item"] = "Plej ĵusa elemento";
-App::$strings["Account"] = "Konto";
-App::$strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "La elektitaj uzantkontoj estas forviÅotaj!\\n\\nĈiuj elementoj kiujn ili afiÅis je la retpaÄo estos permanente forviÅitaj.\\n\\nĈu vi certas?";
-App::$strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "La uzanto {0} estas forviÅota!\\n\\nĈiuj elementoj kiujn li afiÅis je la retpaÄo estos permanente forviÅitaj.\\n\\nĈu vi certas?";
-App::$strings["Plugin %s disabled."] = "Kromprogramo %s estas malÅaltita.";
-App::$strings["Plugin %s enabled."] = "Kromprogramo %s estas Åaltita.";
-App::$strings["Disable"] = "MalÅalti";
-App::$strings["Enable"] = "Åœalti";
-App::$strings["Toggle"] = "Åœalti/MalÅalti";
-App::$strings["Author: "] = "AÅ­toro: ";
-App::$strings["Maintainer: "] = "Prizorganto: ";
-App::$strings["No themes found."] = "Ne trovis etosojn.";
-App::$strings["Screenshot"] = "Ekrankopio";
-App::$strings["[Experimental]"] = "[Eksperimenta]";
-App::$strings["[Unsupported]"] = "[Nesubtenata]";
-App::$strings["Log settings updated."] = "Protokolagordoj Äisdatigitaj.";
-App::$strings["Clear"] = "ForviÅi";
-App::$strings["Debugging"] = "Sencimigado";
-App::$strings["Log file"] = "Protokolo";
-App::$strings["Must be writable by web server. Relative to your Friendica top-level directory."] = "Devas esti skribebla de la retservilo. Relativa al via plej supra Friendica dosierujo.";
-App::$strings["Log level"] = "Protokolnivelo";
-App::$strings["Close"] = "Fermi";
-App::$strings["FTP Host"] = "FTP Servilo";
-App::$strings["FTP Path"] = "FTP Vojo";
-App::$strings["FTP User"] = "FTP Uzanto";
-App::$strings["FTP Password"] = "FTP Pasvorto";
-App::$strings["Requested profile is not available."] = "La petita profilo ne disponeblas.";
-App::$strings["Access to this profile has been restricted."] = "Atingo al ĉi tio profilo estas limitigita";
-App::$strings["Tips for New Members"] = "Konsilo por novaj membroj";
-App::$strings["{0} wants to be your friend"] = "{0} volas amikiÄi kun vi";
-App::$strings["{0} sent you a message"] = "{0} sendis mesaÄon al vi";
-App::$strings["{0} requested registration"] = "{0} petis registradon";
-App::$strings["{0} commented %s's post"] = "{0} komentis pri la afiÅo de %s";
-App::$strings["{0} liked %s's post"] = "{0} satis la afiÅon de %s";
-App::$strings["{0} disliked %s's post"] = "{0} malÅatis la afiÅon de %s";
-App::$strings["{0} is now friends with %s"] = "{0} amikiÄis kun %s";
-App::$strings["{0} posted"] = "{0} afiÅis";
-App::$strings["{0} tagged %s's post with #%s"] = "{0} markis la afiÅon de %s kun #%s";
-App::$strings["{0} mentioned you in a post"] = "{0} menciis vin en afiÅo";
-App::$strings["Contacts who are not members of a group"] = "Kontaktoj kiuj ne estas en iu grupo";
-App::$strings["OpenID protocol error. No ID returned."] = "Eraro en OpenID protokolo. Ne resendis identecon.";
-App::$strings["Account not found and OpenID registration is not permitted on this site."] = "Ne trovis kontoj, kaj registrado per OpenID estas malpermesita ĉi tie.";
-App::$strings["Login failed."] = "Ensalutado malsukcesis.";
-App::$strings["Contact added"] = "Aldonis kontakton";
-App::$strings["Common Friends"] = "Komunaj Amikoj";
-App::$strings["No contacts in common."] = "Neniom da komunaj kontaktoj.";
-App::$strings["Item has been removed."] = "Elemento estas forviÅita.";
-App::$strings["Applications"] = "Programoj";
-App::$strings["No installed applications."] = "Neniom da instalitaj programoj.";
-App::$strings["Search"] = "Serĉi";
-App::$strings["Profile not found."] = "Profilo ne trovita.";
-App::$strings["Profile Name is required."] = "Nomo de profilo estas bezonata.";
-App::$strings["Marital Status"] = "Amrilata Stato";
-App::$strings["Romantic Partner"] = "Kora Partnero";
-App::$strings["Likes"] = "Åœatoj";
-App::$strings["Dislikes"] = "MalÅatoj";
-App::$strings["Work/Employment"] = "Laboro";
-App::$strings["Religion"] = "Religio";
-App::$strings["Political Views"] = "Politikaj Opinioj";
-App::$strings["Gender"] = "Sekso";
-App::$strings["Sexual Preference"] = "Seksa Prefero";
-App::$strings["Homepage"] = "HejmpaÄo";
-App::$strings["Interests"] = "Interesoj";
-App::$strings["Address"] = "Adreso";
-App::$strings["Location"] = "Loko";
-App::$strings["Profile updated."] = "Profilo Äisdatigita.";
-App::$strings[" and "] = " kaj ";
-App::$strings["public profile"] = "publika profilo";
-App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s ÅanÄis %2\$s al &ldquo;%3\$s&rdquo;";
-App::$strings[" - Visit %1\$s's %2\$s"] = " - Vizitu la %2\$s de %1\$s";
-App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s havas Äisdatigigan %2\$s, ÅanÄas %3\$s.";
-App::$strings["Profile deleted."] = "Profilo forviÅita.";
-App::$strings["Profile-"] = "Profilo-";
-App::$strings["New profile created."] = "Nova profilo kreita.";
-App::$strings["Profile unavailable to clone."] = "Ne eblas kopii profilon.";
-App::$strings["Hide your contact/friend list from viewers of this profile?"] = "KaÅi vian liston de kontaktoj/amikoj al vidantoj de ĉi-tio profilo?";
-App::$strings["Edit Profile Details"] = "Redakti Detalojn de Profilo";
-App::$strings["View this profile"] = "Vidi la profilon.";
-App::$strings["Create a new profile using these settings"] = "Krei novan profilon kun tiaj agordoj";
-App::$strings["Clone this profile"] = "Kopii ĉi tiun profilon";
-App::$strings["Delete this profile"] = "ForviÅi ĉi tiun profilon";
-App::$strings["Profile Name:"] = "Nomo de Profilo:";
-App::$strings["Your Full Name:"] = "Via Plena Nomo:";
-App::$strings["Title/Description:"] = "Titolo/Priskribo:";
-App::$strings["Your Gender:"] = "Via Sekso:";
-App::$strings["Birthday (%s):"] = "NaskiÄtago (%s):";
-App::$strings["Street Address:"] = "Adreso:";
-App::$strings["Locality/City:"] = "Urbo:";
-App::$strings["Postal/Zip Code:"] = "PoÅtkodo:";
-App::$strings["Country:"] = "Lando:";
-App::$strings["Region/State:"] = "Åœtato:";
-App::$strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Civita Stato:";
-App::$strings["Who: (if applicable)"] = "Kiu (se aplikeble):";
-App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Ekzemploj: cathy123, Cathy Williams, cathy@example.com";
-App::$strings["Since [date]:"] = "Ekde [dato]:";
-App::$strings["Sexual Preference:"] = "Seksa Prefero:";
-App::$strings["Homepage URL:"] = "Adreso de HejmpaÄo:";
-App::$strings["Hometown:"] = "Hejmurbo:";
-App::$strings["Political Views:"] = "Politikaj Opinioj:";
-App::$strings["Religious Views:"] = "Religiaj Opinioj:";
-App::$strings["Public Keywords:"] = "Publikaj Ålosilvortoj:";
-App::$strings["Private Keywords:"] = "Privataj Ålosilvortoj:";
-App::$strings["Likes:"] = "Åœatoj:";
-App::$strings["Dislikes:"] = "MalÅatoj:";
-App::$strings["Example: fishing photography software"] = "Ekzemple: fiÅkapti fotografio programaro";
-App::$strings["(Used for suggesting potential friends, can be seen by others)"] = "(Por sugesti amikoj. Videbla al aliaj.)";
-App::$strings["(Used for searching profiles, never shown to others)"] = "(Por serĉi profilojn. Neniam videbla al aliaj.)";
-App::$strings["Tell us about yourself..."] = "Diru al ni pri vi...";
-App::$strings["Hobbies/Interests"] = "Åœatokupoj/Interesoj";
-App::$strings["Contact information and Social Networks"] = "Kontaktaj informoj kaj Interkonaj Retejoj";
-App::$strings["Musical interests"] = "Muzikaj interesoj";
-App::$strings["Books, literature"] = "Libroj, literaturo";
-App::$strings["Television"] = "Televido";
-App::$strings["Film/dance/culture/entertainment"] = "Filmoj/dancoj/arto/amuzaĵoj";
-App::$strings["Love/romance"] = "Amo/romanco";
-App::$strings["Work/employment"] = "Laboro";
-App::$strings["School/education"] = "Lernejo/eduko";
-App::$strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "Ĉi tio estas via <strong>publika</strong> profilo. Ĝi <strong>eble</strong> estas videbla al ĉiuj en interreto. ";
-App::$strings["Age: "] = "AÄo:";
-App::$strings["Edit/Manage Profiles"] = "Redakti/administri Profilojn";
-App::$strings["Change profile photo"] = "ÅœanÄi profilbildon";
-App::$strings["Create New Profile"] = "Krei novan profilon";
-App::$strings["Profile Image"] = "Profilbildo";
-App::$strings["visible to everybody"] = "videbla al ĉiuj";
-App::$strings["Edit visibility"] = "Redakti videblecon";
-App::$strings["Save to Folder:"] = "Konservi en Dosierujo:";
-App::$strings["- select -"] = "- elekti -";
-App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s markis la %3\$s de %2\$s kun %4\$s";
-App::$strings["No potential page delegates located."] = "Ne trovis delegiteblajn paÄojn.";
-App::$strings["Delegate Page Management"] = "Administrado de Delegitajn PaÄojn";
-App::$strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "Delegitoj povas administri ĉiujn ecojn de la konto/paÄo, escepte bazaj kontoagordoj. Bonvolu ne delegitigi vian personan konton al iu al kiu vi ne plene fidas.";
-App::$strings["Existing Page Managers"] = "Estantaj Administrantoj de la PaÄo";
-App::$strings["Existing Page Delegates"] = "Estantaj Delegitoj de la PaÄo";
-App::$strings["Potential Delegates"] = "Eblaj Delegitoj";
-App::$strings["Add"] = "Aldoni";
-App::$strings["No entries."] = "Neniom da afiÅoj.";
-App::$strings["Friend Suggestions"] = "Amikosugestoj";
-App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Neniu sugestoj disponeblas. Se ĉi tiu estas nova retejo, bonvolu reprovi post 24 horoj.";
-App::$strings["Ignore/Hide"] = "Ignori/KaÅi";
-App::$strings["Global Directory"] = "Tutmonda Katalogo";
-App::$strings["Find on this site"] = "Trovi en ĉi retejo";
-App::$strings["Site Directory"] = "Reteja Katalogo";
-App::$strings["Gender: "] = "Sekso:";
-App::$strings["No entries (some entries may be hidden)."] = "Neniom da afiÅoj (kelkaj afiÅoj eble ne estas videbla).";
-App::$strings["%s : Not a valid email address."] = "%s: Ne estas valida retpoÅtadreso.";
-App::$strings["Please join us on Friendica"] = "Bonvolu aliÄi kun ni ĉe Friendica";
-App::$strings["%s : Message delivery failed."] = "%s: La livero de la mesaÄo malsukcesis.";
-App::$strings["%d message sent."] = array(
- 0 => "Sendis %d mesaÄon.",
- 1 => "Sendis %d mesaÄojn.",
-);
-App::$strings["You have no more invitations available"] = "Vi ne plu disponeblas invitaĵojn";
-App::$strings["Visit %s for a list of public sites that you can join. Friendica members on other sites can all connect with each other, as well as with members of many other social networks."] = "Vizitu %s por listo de publikaj retejoj kie vi povas aliÄi. Anoj de Friendica ĉe aliaj retejoj povas konekti unu kun la alian, kaj ankaÅ­ kun membroj de multaj aliaj retejoj.";
-App::$strings["To accept this invitation, please visit and register at %s or any other public Friendica website."] = "Por akcepti ĉi tiu invito, bonvolu viziti kaj registriÄi ĉe %s au alia publika Friendica retejo.";
-App::$strings["Friendica sites all inter-connect to create a huge privacy-enhanced social web that is owned and controlled by its members. They can also connect with many traditional social networks. See %s for a list of alternate Friendica sites you can join."] = "Ĉiuj Friendica retejoj interkonektiÄas kaj kune faras grandan altprivatecan interkonan reton, kiun posedas kaj kontrolas Äiaj membroj. Ili ankaÅ­ povas konekti kun multe de tradiciaj interkonaj retejoj. Vidu %s por listo de publikaj retejoj kie vi povas aliÄi.";
-App::$strings["Our apologies. This system is not currently configured to connect with other public sites or invite members."] = "Senkulpigu nin. La sistemo nuntempe ne estas agordita por konekti al aliaj retejoj au inviti membrojn.";
-App::$strings["Send invitations"] = "Sendi invitojn";
-App::$strings["Enter email addresses, one per line:"] = "Entajpu retpoÅtadresojn, po unu por ĉiu linio.";
-App::$strings["You are cordially invited to join me and other close friends on Friendica - and help us to create a better social web."] = "Ni bonkore invitas vin aliÄi kun ni kaj aliaj bonaj amikoj ĉe Friendica. Helpu nin krei pli bonan interkonan reton.";
-App::$strings["You will need to supply this invitation code: \$invite_code"] = "Vi bezonas ĉi-tiun invitkodon: \$invite_code";
-App::$strings["Once you have registered, please connect with me via my profile page at:"] = "Kiam vi registris, bonvolu konekti al mi pere de mi profilo ĉe: ";
-App::$strings["For more information about the Friendica project and why we feel it is important, please visit http://friendica.com"] = "Por pli da informoj pri Friendica, kaj kial ni pensas ke Äi estas grava, bonvolu viziti http://friendica.com";
-App::$strings["This may occasionally happen if contact was requested by both persons and it has already been approved."] = "Tio ĉi okazis de tempo al tempo se ambaÅ­ personoj petas kontakton ka Äi jam estas aprobita.";
-App::$strings["Response from remote site was not understood."] = "Ne komprenis la rispondon de la fora retejo.";
-App::$strings["Unexpected response from remote site: "] = "Neatendita rispondo de la fora retejo:";
-App::$strings["Confirmation completed successfully."] = "Konfirmo sukcese kompletigita.";
-App::$strings["Remote site reported: "] = "La fora retejo raportis:";
-App::$strings["Temporary failure. Please wait and try again."] = "Dumtempa eraro. Bonvolu atendi kaj provi refoje.";
-App::$strings["Introduction failed or was revoked."] = "La prezento malsukcesis au estas revokita.";
-App::$strings["Unable to set contact photo."] = "Neeblas agordi la kontaktbildo.";
-App::$strings["%1\$s is now friends with %2\$s"] = "%1\$s amikiÄis kun %2\$s";
-App::$strings["No user record found for '%s' "] = "Ne trovis uzanton '%s' ";
-App::$strings["Our site encryption key is apparently messed up."] = "Åœajnas kvazaÅ­ la ĉifroÅlosilo de nia retejo estas fuÅita.";
-App::$strings["Empty site URL was provided or URL could not be decrypted by us."] = "Malplena adreso de retejo provizita, aŭ ni ne povis malĉifri la adreson.";
-App::$strings["Contact record was not found for you on our site."] = "Kontakto ne trovita por vi en via retejo.";
-App::$strings["Site public key not available in contact record for URL %s."] = "Publika Ålosilo de retejo ne disponeblas en la kontaktrikordo por la URL adreso %s.";
-App::$strings["The ID provided by your system is a duplicate on our system. It should work if you try again."] = "La identeco provizita de via sistemo estas duoblo ĉe nia sistemo. Ĝi eble funkcias se vi provas refoje.";
-App::$strings["Unable to set your contact credentials on our system."] = "Ne sukcesis agordi la legitimaĵojn de via kontakto ĉe nia sistemo.";
-App::$strings["Unable to update your contact profile details on our system"] = "Neeblas Äisdatigi viajn profildetalojn ĉe nia sistemo.";
-App::$strings["Connection accepted at %s"] = "Konekto akceptita je %s";
-App::$strings["%1\$s has joined %2\$s"] = "%1\$s aliÄis al %2\$s";
-App::$strings["Google+ Import Settings"] = "Google+ Importo";
-App::$strings["Enable Google+ Import"] = "Aktivigi Äœoogle+ Importon";
-App::$strings["Google Account ID"] = "Google Konto ID";
-App::$strings["Google+ Import Settings saved."] = "Konservis Agordojn por Google+ Importo.";
-App::$strings["Facebook disabled"] = "Facebook malÅaltita";
-App::$strings["Updating contacts"] = "Mi Äisdatigas la kontaktojn.";
-App::$strings["Facebook API key is missing."] = "La API Ålosilo de Facebook ne estas konata ĉi tie.";
-App::$strings["Facebook Connect"] = "Kontekto al Facebook";
-App::$strings["Install Facebook connector for this account."] = "Instali la Facebook konektilo por ĉi tiu konto.";
-App::$strings["Remove Facebook connector"] = "Forigi la Facebook konektilon.";
-App::$strings["Re-authenticate [This is necessary whenever your Facebook password is changed.]"] = "ReaÅ­tentiÄi [Tio estas bezonata ĉiam kiam vi ÅanÄis vian pasvorton ĉe Facebook.]";
-App::$strings["Post to Facebook by default"] = "Ĉiam afiÅi al Facebook.";
-App::$strings["Facebook friend linking has been disabled on this site. The following settings will have no effect."] = "Ligado kun Facebook amikoj estas malaktivita ĉe tiu retejo. La sekvantaj agordoj do ne havas validecon.";
-App::$strings["Facebook friend linking has been disabled on this site. If you disable it, you will be unable to re-enable it."] = "Ligado kun Facebook amikoj estas malaktivita ĉe tiu retejo. Se vi malÅaltas Äin, vi ne eblos ree Åalti Äin.";
-App::$strings["Link all your Facebook friends and conversations on this website"] = "Alligu ĉiujn viajn Facebook amikojn kaj konversaciojn je ĉi-tiu retejo.";
-App::$strings["Facebook conversations consist of your <em>profile wall</em> and your friend <em>stream</em>."] = "Facebok konversacioj konsistas el via <em>profilmuro</em> kaj la <em>fluo</em> de viaj amikoj.";
-App::$strings["On this website, your Facebook friend stream is only visible to you."] = "Je ĉi-tiu retejo, la fluo de viaj amikoj ĉe Facebook nur videblas al vi.";
-App::$strings["The following settings determine the privacy of your Facebook profile wall on this website."] = "La sekvontaj agordoj difinas la privatecon de via Facebook profilmuro je ĉi-tiu retejo.";
-App::$strings["On this website your Facebook profile wall conversations will only be visible to you"] = "Je ĉi-tiu retejo, la conversacioj sur via Facebook profilmuro nur videblas al vi.";
-App::$strings["Do not import your Facebook profile wall conversations"] = "Ne importi konversaciojn de via Facebook profilmuro";
-App::$strings["If you choose to link conversations and leave both of these boxes unchecked, your Facebook profile wall will be merged with your profile wall on this website and your privacy settings on this website will be used to determine who may see the conversations."] = "Se vi elektas alligi conversaciojn kaj ne elektas tiujn butonojn, via Facebook profilmuro estas kunigota kun via profilmuro ĉi tie. Viaj privatecaj agordoj ĉi tie difinos kiu povas vidi la coversaciojn.";
-App::$strings["Comma separated applications to ignore"] = "Ignorotaj programoj, disigita per komo";
-App::$strings["Problems with Facebook Real-Time Updates"] = "Problemoj kun Facebook Realtempaj Äœisdatigoj";
-App::$strings["Facebook"] = "Facebook";
-App::$strings["Facebook Connector Settings"] = "Agordoj por la Facebook konektilo";
-App::$strings["Facebook API Key"] = "Facebook API Ålosilo";
-App::$strings["Error: it appears that you have specified the App-ID and -Secret in your .htconfig.php file. As long as they are specified there, they cannot be set using this form.<br><br>"] = "Eraro: Åœajnas kvazaÅ­ vi agordis la App-ID kaj la sekreton en via .htconfig.php dosiero. Kiam ili estas agordita tie, vi ne povas agordi Äin en tiu ĉi formo.<br><br>";
-App::$strings["Error: the given API Key seems to be incorrect (the application access token could not be retrieved)."] = "Eraro: La API Ålosilo aspektas malÄusta (ne eblas ricevi la programa atingoĵetono).";
-App::$strings["The given API Key seems to work correctly."] = "La API Ålosilo Åajne Äuste funkcias.";
-App::$strings["The correctness of the API Key could not be detected. Somthing strange's going on."] = "Ne povis kontroli la Äustecon de la API Ålosilo. Ia stranga afero okazas. ";
-App::$strings["App-ID / API-Key"] = "Programo ID / API Åœlosilo";
-App::$strings["Application secret"] = "Programo sekreto";
-App::$strings["Polling Interval in minutes (minimum %1\$s minutes)"] = "Intervalo de enketo en minutoj (minimume %1\$s minutoj)";
-App::$strings["Synchronize comments (no comments on Facebook are missed, at the cost of increased system load)"] = "Sinkronigi komentojn (vi ricevas ĉiujn komentojn de Facebook, sed la Åargo de la sistemo iom kreskas)";
-App::$strings["Real-Time Updates"] = "Realtempaj Äœisdatigoj";
-App::$strings["Real-Time Updates are activated."] = "Realtempaj Äœisdatigoj estas Åaltita";
-App::$strings["Deactivate Real-Time Updates"] = "MalÅalti Realtempaj Äœisdatigoj";
-App::$strings["Real-Time Updates not activated."] = "Realtempaj Äœisdatigoj estas malÅaltita";
-App::$strings["Activate Real-Time Updates"] = "Åœalti Realtempaj Äœisdatigoj";
-App::$strings["The new values have been saved."] = "Konservis novajn valorojn.";
-App::$strings["Post to Facebook"] = "AfiÅi al Facebook";
-App::$strings["Post to Facebook cancelled because of multi-network access permission conflict."] = "AfiÅado al Facebook nuligita ĉar okazis konflikto en la multretpermesoj.";
-App::$strings["View on Friendica"] = "Vidi ĉe Friendica";
-App::$strings["Facebook post failed. Queued for retry."] = "Malsukcesis afiÅi ĉe Facebook. Enigita en vico.";
-App::$strings["Your Facebook connection became invalid. Please Re-authenticate."] = "Via Facbook konekto iÄis nevalida. Bonvolu reaÅ­tentiÄi.";
-App::$strings["Facebook connection became invalid"] = "Facebook konekto iÄis nevalida.";
-App::$strings["Hi %1\$s,\n\nThe connection between your accounts on %2\$s and Facebook became invalid. This usually happens after you change your Facebook-password. To enable the connection again, you have to %3\$sre-authenticate the Facebook-connector%4\$s."] = "Saluton %1\$s,\n\nla kontekto inter viaj kontoj ĉe %2\$s kaj Facebook malvalidiÄis. Tio kutime okazas post kiam via Åangas vian pasvorton ĉe Facebook. Por reaktivigi la konekto, vi bezonas %3\$sreaÅ­tentiÄi la Facebook konektilon%4\$s.";
-App::$strings["StatusNet AutoFollow settings updated."] = "Äœidatigis StatusNet AutoFollow agordojn.";
-App::$strings["StatusNet AutoFollow Settings"] = "StatusNet AutoFollow agordoj";
-App::$strings["Automatically follow any StatusNet followers/mentioners"] = "Aŭtomate sekvu ĉiujn StatusNet sekvantojn/menciantojn.";
-App::$strings["Lifetime of the cache (in hours)"] = "VivodaÅ­ro de kaÅmemoro (horoj)";
-App::$strings["Cache Statistics"] = "Statistikoj pri kaÅmemoro";
-App::$strings["Number of items"] = "Kvanto da eroj";
-App::$strings["Size of the cache"] = "Grando de la kaÅmemoro";
-App::$strings["Delete the whole cache"] = "ForviÅi la kaÅmemoron";
-App::$strings["%d person likes this"] = array(
- 0 => "%d homo Åatas tiun",
- 1 => "%d homoj Åatas tiun",
-);
-App::$strings["%d person doesn't like this"] = array(
- 0 => "%d homo malÅatas tiun",
- 1 => "%d homo malÅatas tiun",
-);
-App::$strings["Get added to this list!"] = "IÄu membro de ĉi tiu listo!";
-App::$strings["Generate new key"] = "Generi novan ĉifroÅlosilon";
-App::$strings["Widgets key"] = "Ŝlosilo por fenestraĵoj";
-App::$strings["Widgets available"] = "Disponeblaj fenestraĵoj";
-App::$strings["Connect on Friendica!"] = "Konekti ĉe Friendica!";
-App::$strings["YourLS Settings"] = "\"YourLS\" Agordoj";
-App::$strings["URL: http://"] = "URL adreso: http://";
-App::$strings["Username:"] = "Salutnomo:";
-App::$strings["Password:"] = "Pasvorto:";
-App::$strings["Use SSL "] = "Uzi SSL ";
-App::$strings["yourls Settings saved."] = "Konservis la agordojn de YourLS.";
-App::$strings["Post to LiveJournal"] = "AfiÅi ĉe LiveJournal";
-App::$strings["LiveJournal Post Settings"] = "Agordoj pri afiÅoj ĉe LiveJournal";
-App::$strings["Enable LiveJournal Post Plugin"] = "Åœalti la LiveJournal-afiÅo kromprogramon.";
-App::$strings["LiveJournal username"] = "LiveJournal Salutnomo";
-App::$strings["LiveJournal password"] = "LiveJournal pasvorto";
-App::$strings["Post to LiveJournal by default"] = "DefaÅ­lte afiÅi al LiveJournal";
-App::$strings["Not Safe For Work (General Purpose Content Filter) settings"] = "Not Safe For Work (Äenerala filtrilo por enhavoj) agordoj";
-App::$strings["This plugin looks in posts for the words/text you specify below, and collapses any content containing those keywords so it is not displayed at inappropriate times, such as sexual innuendo that may be improper in a work setting. It is polite and recommended to tag any content containing nudity with #NSFW. This filter can also match any other word/text you specify, and can thereby be used as a general purpose content filter."] = "Tiu kromprogramo serĉas la malsupre agordatajn vortojn en afiÅoj kaj malvidebligis ilin se ili enhavas iun vorton. Tiel, afiÅoj ne montriÄis kiuj enhavas maladekvatan enhavon, ekzemple seksumaj aferoj, kiuj ne estas adekvata, ekzemple en la laborejo. En la reto, oni kutime markas tiajn afiÅojn #NSFW - Not Safe For Work - ne adekvata por la laborejo. La filtrilo ankaÅ­ serĉas ĉiujn vortojn kiujn vi agordas kaj tial funkcias kiel Äenerala filtrilo.";
-App::$strings["Enable Content filter"] = "Åœalti la filtrilo por la enhavo";
-App::$strings["Comma separated list of keywords to hide"] = "Perkome disigita listo da kaÅontaj Ålosilvortoj";
-App::$strings["Use /expression/ to provide regular expressions"] = "Uzu /expr/ por provizi regulajn esprimojn.";
-App::$strings["NSFW Settings saved."] = "NSFW agordoj konservitaj.";
-App::$strings["%s - Click to open/close"] = "%s - Klaku por malfermi/fermi";
-App::$strings["Forums"] = "Forumoj";
-App::$strings["show more"] = "montri pli";
-App::$strings["Forums:"] = "Forumoj:";
-App::$strings["Page settings updated."] = "PaÄajn agordojn Äisdatigita.";
-App::$strings["Page Settings"] = "PaÄaj Agordoj";
-App::$strings["How many forums to display on sidebar without paging"] = "Montri tiom da forumoj en la flanka strio sen paÄigo";
-App::$strings["Randomise Page/Forum list"] = "Hazardigi la liston de PaÄoj/Forumoj";
-App::$strings["Show pages/forums on profile page"] = "Montri paÄojn/forumojn sur la profilpaÄo";
-App::$strings["Planets Settings"] = "Agordo pri Planets";
-App::$strings["Enable Planets Plugin"] = "Åœalti la Planets kromprogamon";
-App::$strings["Login"] = "Ensaluti";
-App::$strings["OpenID"] = "OpenID";
-App::$strings["Latest users"] = "Ä´usaj uzantoj";
-App::$strings["Most active users"] = "Plej aktivaj uzantoj";
-App::$strings["Latest photos"] = "Ä´usaj bildoj";
-App::$strings["Latest likes"] = "Ä´usaj Åatitaĵoj";
-App::$strings["event"] = "okazo";
-App::$strings["U.S. Time Format (mm/dd/YYYY)"] = "Usona datformato (mm/dd/YYYY)";
-App::$strings["German Time Format (dd.mm.YYYY)"] = "Germana datformato (dd.mm.YYYY)";
-App::$strings["Error"] = "Eraro";
-App::$strings["No access"] = "No access";
-App::$strings["New event"] = "Nova okazo";
-App::$strings["Today"] = "HodiaÅ­";
-App::$strings["Day"] = "Tago";
-App::$strings["Week"] = "Semajno";
-App::$strings["Month"] = "Monato";
-App::$strings["Reload"] = "ReÅargi";
-App::$strings["Date"] = "Dato";
-App::$strings["Not found"] = "Ne trovita";
-App::$strings["Go back to the calendar"] = "Iri reen al la kalendaro";
-App::$strings["Starts"] = "Komencas";
-App::$strings["Ends"] = "Finas";
-App::$strings["Description"] = "Priskribo";
-App::$strings["Notification"] = "Atentigo";
-App::$strings["Minutes"] = "Minutoj";
-App::$strings["Hours"] = "Horoj";
-App::$strings["Days"] = "Tagoj";
-App::$strings["before"] = "antaÅ­";
-App::$strings["Calendar Settings"] = "Kalendaraj Agordoj";
-App::$strings["Date format"] = "Datformato";
-App::$strings["Time zone"] = "Horzono";
-App::$strings["Limitations"] = "Limigoj";
-App::$strings["Warning"] = "Averto";
-App::$strings["Synchronization (iPhone, Thunderbird Lightning, Android, ...)"] = "Sinkronigo (iPhone, Thunderbird Lightning, Android, ...)";
-App::$strings["Synchronizing this calendar with the iPhone"] = "Sinkronigi tiun kalendaron kun la iPhone";
-App::$strings["Synchronizing your Friendica-Contacts with the iPhone"] = "Sinkronigi viajn Friendica kontaktojn kun la iPhone";
-App::$strings["Friendica-Contacts"] = "Friendica Kontaktoj";
-App::$strings["Your Friendica-Contacts"] = "Viaj Friendica Kontaktoj";
-App::$strings["Calendar"] = "Kalendaro";
-App::$strings["Extended calendar with CalDAV-support"] = "Etendita kalendaro kun CalDAV subteno";
-App::$strings["The database tables have been installed."] = "La tabeloj estas instalita en la datumbazo";
-App::$strings["An error occurred during the installation."] = "Eraro okazis dum instalado";
-App::$strings["No system-wide settings yet."] = "AnkoraÅ­ ne disponablas tutsistemaj agordoj";
-App::$strings["Database status"] = "Stato de datumbazo";
-App::$strings["Installed"] = "Instalita";
-App::$strings["Upgrade needed"] = "Äœisdatigo bezonata";
-App::$strings["Upgrade"] = "Äœisdatigo";
-App::$strings["Not installed"] = "Ne instalita";
-App::$strings["Install"] = "Instali";
-App::$strings["Troubleshooting"] = "Problemsolvado";
-App::$strings["Manual creation of the database tables:"] = "Mana kreado de tabeloj en la datumbazo:";
-App::$strings["Show SQL-statements"] = "Montru SQL ordonojn";
-App::$strings["Private Calendar"] = "Privata kalendaro";
-App::$strings["Friendica Events: Mine"] = "Friendica Okazoj: Miaj";
-App::$strings["Friendica Events: Contacts"] = "Friendica Okazoj: De Kontaktoj";
-App::$strings["Allow to use your friendica id (%s) to connecto to external unhosted-enabled storage (like ownCloud). See <a href=\"http://www.w3.org/community/unhosted/wiki/RemoteStorage#WebFinger\">RemoteStorage WebFinger</a>"] = "Permesi vian identecon ĉe Friendica (%s) por konekti al eksteraj konservejoj subtenata de unhosted (ekz. OwnCloud). Vidu <a href=\"http://www.w3.org/community/unhosted/wiki/RemoteStorage#WebFinger\">RemoteStorage WebFinger</a>";
-App::$strings["Template URL (with {category})"] = "URL adreso de Åablono (kun {category})";
-App::$strings["OAuth end-point"] = "OAuth finpunkto";
-App::$strings["Api"] = "Api";
-App::$strings["Member since:"] = "Membro ekde:";
-App::$strings["Three Dimensional Tic-Tac-Toe"] = "Tri-dimensia Tiktakto";
-App::$strings["3D Tic-Tac-Toe"] = "3D Tiktakto";
-App::$strings["New game"] = "Nova ludo";
-App::$strings["New game with handicap"] = "Nova ludo kun handikapo";
-App::$strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = "Tri-dimensia tiktakto similas la tradician ludon, sed estas ludata sur pluraj ebenoj dum la sama tempo.";
-App::$strings["In this case there are three levels. You win by getting three in a row on any level, as well as up, down, and diagonally across the different levels."] = "Ĉi-kaze ekzistas tri ebenoj. Vi venkas vicigante tri signojn en una vico, en la sama ebeno, same kiel supren, malsupren aŭ diagonale, trans la ebenoj.";
-App::$strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = "La ludo kun handikapo malvalidigas la mezan pozicion sur la meza ebeno, ĉar la ludisto kio okupas ĉi tiun pozicion ĉiam havas avantaÄon.";
-App::$strings["You go first..."] = "Estas via vico unue.";
-App::$strings["I'm going first this time..."] = "Ĉi-tempe, unue estas mia vico.";
-App::$strings["You won!"] = "Vi venkis!";
-App::$strings["\"Cat\" game!"] = "Sendecida ludo!";
-App::$strings["I won!"] = "Mi venkis!";
-App::$strings["Randplace Settings"] = "Randplace agordoj.";
-App::$strings["Enable Randplace Plugin"] = "Aktivigi la Randplace kromprogramon.";
-App::$strings["Post to Dreamwidth"] = "AfiÅi al Dreamwidth";
-App::$strings["Dreamwidth Post Settings"] = "Agordoj por AfiÅoj al Dreamwidth";
-App::$strings["Enable dreamwidth Post Plugin"] = "Åœalti la Dreamwidth Kromprogramon";
-App::$strings["dreamwidth username"] = "Dreamwidth salutnomo";
-App::$strings["dreamwidth password"] = "Dreamwidth pasvorto";
-App::$strings["Post to dreamwidth by default"] = "DefaÅ­lte afiÅi al Dreamwidth";
-App::$strings["Post to Drupal"] = "AfiÅi al Drupal";
-App::$strings["Drupal Post Settings"] = "Agordoj por Drupal AfiÅoj";
-App::$strings["Enable Drupal Post Plugin"] = "Åœalti la Drupal-afiÅo Kromprogramon";
-App::$strings["Drupal username"] = "Drupal salutnomo";
-App::$strings["Drupal password"] = "Drupal pasvorto";
-App::$strings["Post Type - article,page,or blog"] = "Tipo de AfiÅoj - article, page, aÅ­ blog";
-App::$strings["Drupal site URL"] = "URL adreso de Drupal retejo";
-App::$strings["Drupal site uses clean URLS"] = "Drupal retejo uzas purajn URL adresojn";
-App::$strings["Post to Drupal by default"] = "DefaÅ­lte afiÅi ĉe Drupal";
-App::$strings["Post from Friendica"] = "AfiÅo de Friendica";
-App::$strings["Startpage Settings"] = "StartpaÄaj Agordoj";
-App::$strings["Home page to load after login - leave blank for profile wall"] = "HejmpaÄo Åargonta post la ensaluto - Lasu malplena por profilmuro.";
-App::$strings["Examples: &quot;network&quot; or &quot;notifications/system&quot;"] = "Ekzemple: &quot;network&quot; aÅ­ &quot;notifications/system&quot;";
-App::$strings["Geonames settings updated."] = "Äœidatigis la Geonames agordojn.";
-App::$strings["Geonames Settings"] = "Geonames Agordoj";
-App::$strings["Enable Geonames Plugin"] = "Åœalti la Geonames Kromprogramon";
-App::$strings["Your account on %s will expire in a few days."] = "Via konto ĉe %s senvalidiÄos post kelkaj tagoj.";
-App::$strings["Your Friendica account is about to expire."] = "Via konto ĉe Friendica baldaÅ­ senvalidiÄos.";
-App::$strings["Hi %1\$s,\n\nYour account on %2\$s will expire in less than five days. You may keep your account by logging in at least once every 30 days"] = "Saluton %1\$s,\n\nVia konto ĉe %2\$s senvalidiÄos post malpli ol kvin tagoj. Vi povas konservi vian konton se vi ensalutas almenaÅ­ ĉiujn 30 tagojn. ";
-App::$strings["Upload a file"] = "AlÅuti dosieron";
-App::$strings["Drop files here to upload"] = "Åœovmeti dosierojn ĉi tie por alÅuti ilin.";
-App::$strings["Failed"] = "Malsukcesi";
-App::$strings["No files were uploaded."] = "Neniom da dosieroj alÅutita.";
-App::$strings["Uploaded file is empty"] = "AlÅutita dosiero estas malplena.";
-App::$strings["File has an invalid extension, it should be one of "] = "Dosiero havas nevalidan sufikson. Äœi estu unu de ";
-App::$strings["Upload was cancelled, or server error encountered"] = "AlÅutado estas nuligita aÅ­ okazis eraro sur la servilo";
-App::$strings["OEmbed settings updated"] = "Äœisdatigis OEmbed agordojn";
-App::$strings["Use OEmbed for YouTube videos"] = "Uzi OEmbed por YouTube videtoj";
-App::$strings["URL to embed:"] = "Enigi la URL adreson:";
-App::$strings["Impressum"] = "Kolofono";
-App::$strings["Site Owner"] = "Proprietulo de la paÄo";
-App::$strings["Email Address"] = "RetpoÅta Adreso";
-App::$strings["Postal Address"] = "PoÅta Adreso";
-App::$strings["The impressum addon needs to be configured!<br />Please add at least the <tt>owner</tt> variable to your config file. For other variables please refer to the README file of the addon."] = "La kolofono (impressum) kromprogramo bezonas agordojn!<br />Bonvolu aldoni minimume la <tt>owner</tt> variablon al via agorda dosiero. Por aliaj variabloj, bonvolu legi la README dosieron de la kromprogramo.";
-App::$strings["The page operators name."] = "La nomo de la funkciigisto de la retejo.";
-App::$strings["Site Owners Profile"] = "Profilo de la Proprietulo de la Retejo";
-App::$strings["Profile address of the operator."] = "La profilo de la funkciigisto de la retejo.";
-App::$strings["How to contact the operator via snail mail. You can use BBCode here."] = "Kiel poÅte kontakti la funkciigisto de la retejo. Vi eblas uzi BBCode ĉi tie.";
-App::$strings["Notes"] = "Notoj";
-App::$strings["Additional notes that are displayed beneath the contact information. You can use BBCode here."] = "Pli da notoj kiuj aperas sub la kontaktinformoj. Vi eblas uzi BBCode ĉi tie.";
-App::$strings["How to contact the operator via email. (will be displayed obfuscated)"] = "Kiel kontakti la funkciigiston de la retejo per retpoÅto. (montriÄos vuale) ";
-App::$strings["Footer note"] = "PaÄpiednoto";
-App::$strings["Text for the footer. You can use BBCode here."] = "Teksto por la paÄpiedo. Vie eblas uzi BBCode ĉi tie.";
-App::$strings["Report Bug"] = "Skribi cimraporton";
-App::$strings["No Timeline settings updated."] = "No Timeline agordojn Äisdatigita.";
-App::$strings["No Timeline Settings"] = "No Timeline Agordoj";
-App::$strings["Disable Archive selector on profile wall"] = "Malaktivigi la Arkivo elektilo sur la profilmuro";
-App::$strings["\"Blockem\" Settings"] = "\"Blockem\" Agordoj";
-App::$strings["Comma separated profile URLS to block"] = "Blokotaj URL adresoj, disigita per komo";
-App::$strings["BLOCKEM Settings saved."] = "Konservis Agordojn de BLOCKEM.";
-App::$strings["Blocked %s - Click to open/close"] = "%s blokita - Klaku por malfermi/fermi";
-App::$strings["Unblock Author"] = "Malbloki AÅ­toron";
-App::$strings["Block Author"] = "Bloki AÅ­toron";
-App::$strings["blockem settings updated"] = "Äœisdatigis la blockem agordojn";
-App::$strings[":-)"] = ":-)";
-App::$strings[":-("] = ":-(";
-App::$strings["lol"] = "lol";
-App::$strings["Quick Comment Settings"] = "Agordoj pri Rapidaj Komentoj";
-App::$strings["Quick comments are found near comment boxes, sometimes hidden. Click them to provide simple replies."] = "Rapidaj komentoj troviÄas apud komentkampoj, kelkfoje kaÅita. Klaku ilin por provizi simplajn rispondojn.";
-App::$strings["Enter quick comments, one per line"] = "Entajpu rapidaj komentoj, po unu je linio.";
-App::$strings["Quick Comment settings saved."] = "Konservis agordojn pri rapidaj komentoj.";
-App::$strings["Tile Server URL"] = "Adreso de Kahelservilo";
-App::$strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">public tile servers</a>"] = "Listo de <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">publikaj kahelserviloj</a>";
-App::$strings["Default zoom"] = "DefaÅ­lta zoma faktoro";
-App::$strings["The default zoom level. (1:world, 18:highest)"] = "La defaÅ­lta zoma faktoro. (1:tutmonda, 18:plej proksima)";
-App::$strings["Post to libertree"] = "AfiÅi al libertree";
-App::$strings["libertree Post Settings"] = "Agordoj por AfiÅoj ĉe libertree";
-App::$strings["Enable Libertree Post Plugin"] = "Aktivigi Kromprogramon por AfiÅoj ĉe libertree";
-App::$strings["Libertree API token"] = "Libertree API ĵetono";
-App::$strings["Libertree site URL"] = "URL adreso de libertree retejo:";
-App::$strings["Post to Libertree by default"] = "DefaÅ­lte afiÅi ĉe Libertree";
-App::$strings["The MathJax addon renders mathematical formulae written using the LaTeX syntax surrounded by the usual $$ or an eqnarray block in the postings of your wall,network tab and private mail."] = "La Mathjax kromprogramo bildigas matematikajn formulojn skribitajn en la LaTeX sintakso, cirkaÅ­igita de la komuna $$ aÅ­ eqnarray bloko en afiÅoj ĉe via muro, Reto folio kaj privataj mesaÄoj.";
-App::$strings["Use the MathJax renderer"] = "Ĉu uzi la Mathjax bildigilo";
-App::$strings["MathJax Base URL"] = "Mathjax Baza URL Adreso";
-App::$strings["The URL for the javascript file that should be included to use MathJax. Can be either the MathJax CDN or another installation of MathJax."] = "La URL adreso por la javascript dosiero kiu estas inkluzivigonta por uzi Mathjaz. Eblas esti aÅ­ la Mathjax CDN aÅ­ alia Mathjax instalo.";
-App::$strings["Editplain settings updated."] = "Äœisdatigis la Editplain agordojn.";
-App::$strings["Editplain Settings"] = "Agordoj por Editplain";
-App::$strings["Disable richtext status editor"] = "MalÅalti la riĉteksto-redaktilon";
-App::$strings["generic profile image"] = "komuna profilbildo";
-App::$strings["random geometric pattern"] = "loteca geometria skemo";
-App::$strings["monster face"] = "monstrobildo";
-App::$strings["computer generated face"] = "komputita vizaÄo";
-App::$strings["retro arcade style face"] = "retrostila videoludstila vizaÄo";
-App::$strings["Default avatar image"] = "DefaÅ­lta avatarbildo";
-App::$strings["Select default avatar image if none was found at Gravatar. See README"] = "Elektu defaÅ­ltan avatarbildon se neniu troviÄis ĉe Gravatar. Vidu README.";
-App::$strings["Rating of images"] = "Pritakso de bildoj";
-App::$strings["Select the appropriate avatar rating for your site. See README"] = "Elektu la Äustan pritakson de via avataro por via retejo. Vidu README.";
-App::$strings["Gravatar settings updated."] = "Gravatar agordoj Äisdatigitaj.";
-App::$strings["Your Friendica test account is about to expire."] = "Via Friendica provkonto baldaÅ­ malaktiviÄos.";
-App::$strings["Hi %1\$s,\n\nYour test account on %2\$s will expire in less than five days. We hope you enjoyed this test drive and use this opportunity to find a permanent Friendica website for your integrated social communications. A list of public sites is available at http://dir.friendica.com/siteinfo - and for more information on setting up your own Friendica server please see the Friendica project website at http://friendica.com."] = "Saluton %1\$s,\n\nVia testkonto ĉe %2\$s senvalidiÄos post malpli ol kvin tagoj. Vi esperas ke vi Äuis la teston kaj baldaÅ­ trovosÄustan Friendica retejon por via integrita sociala komunikado. Listo de publikaj retejoj troviÄas ĉe http://dir.friendica.com/siteinfo - kaj por pli da informoj pri kiel instali vian propran Friendica servilon, bonvolu viziti la retejon de la Friendica projekton ĉe http://friendica.com.";
-App::$strings["\"pageheader\" Settings"] = "\"pageheader\" Agordoj";
-App::$strings["pageheader Settings saved."] = "Konservis Agordojn de pageheader.";
-App::$strings["Post to Insanejournal"] = "AfiÅi al Insanejournal";
-App::$strings["InsaneJournal Post Settings"] = "Agordoj pri Insaenejournal AfiÅoj";
-App::$strings["Enable InsaneJournal Post Plugin"] = "Åœalti la InsaneJournal afiÅo kromprogramon.";
-App::$strings["InsaneJournal username"] = "Salutnomo ĉe InsaneJournal";
-App::$strings["InsaneJournal password"] = "Pasvorto ĉe InsaneJournal";
-App::$strings["Post to InsaneJournal by default"] = "DefaÅ­lte afiÅi ĉe InsaneJournal";
-App::$strings["View Source"] = "Vidi Fonton";
-App::$strings["Post to StatusNet"] = "AfiÅi ĉe StatusNet";
-App::$strings["Please contact your site administrator.<br />The provided API URL is not valid."] = "Bonvolu kontaki vian retejan administranton.<br />La API URL adreso ne validas.";
-App::$strings["We could not contact the StatusNet API with the Path you entered."] = "Ni ne povis trovi la StatusNet API kun la vojo kiun vi entajpis.";
-App::$strings["StatusNet settings updated."] = "StatusNet agordoj Äisdatigita.";
-App::$strings["StatusNet Posting Settings"] = "Agordoj por StausNet afiÅoj";
-App::$strings["Globally Available StatusNet OAuthKeys"] = "Äœeneralaj disponeblaj StatusNet OAuth Ålosiloj";
-App::$strings["There are preconfigured OAuth key pairs for some StatusNet servers available. If you are useing one of them, please use these credentials. If not feel free to connect to any other StatusNet instance (see below)."] = "Disponeblas antaÅ­agorditaj Ålosilparoj por kelkaj StatusNet serviloj. Se via uzas iun de iu, bonvolu uzi unun de tiuj legitimaĵojn. Se ne, bonvolu konekti al iu alia StatusNet servilo (vidu malsupre).";
-App::$strings["Provide your own OAuth Credentials"] = "Provizi viajn proprajn OAuth legitimaĵojn";
-App::$strings["No consumer key pair for StatusNet found. Register your Friendica Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendica installation at your favorited StatusNet installation."] = "Ne trovis klientajn Ålosilojn por StatusNet. Registru vian Friendica konton kiel klientkomputilo/desktop client en via StausNet konto. Kopiu la klientajn Ålosilojn ĉi tien kaj entajpu la baza API radiko.<br />AntaÅ­ vi registros viajn proprajn OAuth Ålosilojn, demandu al la administranto ĉu jam ekzistas Ålosiloj por ĉi-tiu Friendia retejo je via StatusNet retejo.";
-App::$strings["OAuth Consumer Key"] = "OAuth Åœlosilo de Kliento";
-App::$strings["OAuth Consumer Secret"] = "OAuth Sekreto de Kliento";
-App::$strings["Base API Path (remember the trailing /)"] = "Baza vojo al la API (ne forgesu la finan /)";
-App::$strings["To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet."] = "Por konekti al vian konton ĉe StatusNet, klaku la malsupran butonon por atingi sekurecan kodon de StatusNet, kiun vi devas alglui en la malsupra kampo kaj sendi la formon. Nur viaj <strong>publikaj</strong> afiÅoj estos afiÅota al StatusNet.";
-App::$strings["Log in with StatusNet"] = "Ensaluti kun StatusNet.";
-App::$strings["Copy the security code from StatusNet here"] = "Alglui la kodon de StatusNet ĉi tie:";
-App::$strings["Cancel Connection Process"] = "Nuligi Konektadon";
-App::$strings["Current StatusNet API is"] = "La nuna StatusNet API estas";
-App::$strings["Cancel StatusNet Connection"] = "Nuligi Konekton al StatusNet";
-App::$strings["Currently connected to: "] = "Konektita al:";
-App::$strings["If enabled all your <strong>public</strong> postings can be posted to the associated StatusNet account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Kiam Åaltita, ĉiuj <strong>publikaj</strong> afiÅoj de vi ankaÅ­ eblas esti afiÅota al la asociigita StatusNet konto. Vi povas elekti Äin defaÅ­lte (ĉi tie) au unuope por ĉiuj afiÅoj kiam vi skribos ilin.";
-App::$strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to StatusNet will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Averto</strong>: LaÅ­ viaj privatecaj agordoj (<em>KaÅi viajn profilajn detalojn al nekonataj spektantoj?</em>), la ligilo en publikaj afiÅoj plusendata al StatusNet gvidas vizitontojn al malplena paÄo sciigante ilin ke atingo al via profilo estas lmitigita.";
-App::$strings["Allow posting to StatusNet"] = "Permesi afiÅojn al StatusNet";
-App::$strings["Send public postings to StatusNet by default"] = "DefaÅ­lte sendi publikajn afiÅojn al StatusNet";
-App::$strings["Send linked #-tags and @-names to StatusNet"] = "Sendi ligitajn #-etikedojn kaj @-nomon al StatusNet";
-App::$strings["Clear OAuth configuration"] = "ForviÅi OAuth agordojn";
-App::$strings["API URL"] = "API URL adreso";
-App::$strings["Infinite Improbability Drive"] = "Senfina Probableca Pelilo";
-App::$strings["Post to Tumblr"] = "AfiÅi al Tumblr";
-App::$strings["Tumblr Post Settings"] = "Agordoj pri afiÅoj ĉe Tumblr";
-App::$strings["Enable Tumblr Post Plugin"] = "Åœalti la kromprogramon por Tumblr afiÅoj";
-App::$strings["Tumblr login"] = "Salutnomo ĉe Tumblr";
-App::$strings["Tumblr password"] = "Pasvorto ĉe Tumblr";
-App::$strings["Post to Tumblr by default"] = "DefaÅ­lte afiÅi ĉe Tumblr";
-App::$strings["Numfriends settings updated."] = "Äœisdatigis agordojn por Numfriends.";
-App::$strings["Numfriends Settings"] = "Agordoj por Numfriends";
-App::$strings["How many contacts to display on profile sidebar"] = "Kiom da kontaktoj mi montru en la flanka strio";
-App::$strings["Gnot settings updated."] = "Äœisdatigis Gnot agordojn.";
-App::$strings["Gnot Settings"] = "Agordoj por Gnot";
-App::$strings["Allows threading of email comment notifications on Gmail and anonymising the subject line."] = "Permesas la ĉenadon de retpoÅtaj atentigoj pri komentoj ĉe Gmail kan anonimigado de la temlinio.";
-App::$strings["Enable this plugin/addon?"] = "Åœalti tiun kromprogramon?";
-App::$strings["[Friendica:Notify] Comment to conversation #%d"] = "[Friendica:Atentigo] Komento pri konversacio #%d";
-App::$strings["Post to Wordpress"] = "AfiÅi al Wordpress";
-App::$strings["WordPress Post Settings"] = "Agordoj por WordPress afiÅojn";
-App::$strings["Enable WordPress Post Plugin"] = "Åœalti la Wordpress-afiÅo kromprogramon";
-App::$strings["WordPress username"] = "WordPress salutnomo";
-App::$strings["WordPress password"] = "WordPress pasvorto";
-App::$strings["WordPress API URL"] = "Wordpress API URL adreso";
-App::$strings["Post to WordPress by default"] = "DefaÅ­lte afiÅi al WordPress";
-App::$strings["Provide a backlink to the Friendica post"] = "Provizi re-ligilon al la Friendica afiÅo";
-App::$strings["Read the original post and comment stream on Friendica"] = "Legi la originalan afiÅon kaj komentfluo ĉe Friendica";
-App::$strings["\"Show more\" Settings"] = "\"Montri pli\" agordoj";
-App::$strings["Enable Show More"] = "Åœalti \"montri pli\"";
-App::$strings["Cutting posts after how much characters"] = "Limitigi afiÅojn al kiom da literoj";
-App::$strings["Show More Settings saved."] = "Konservis \"montri pli\" agordojn.";
-App::$strings["This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> analytics tool."] = "Ĉi retejo uzas <a href='http://www.piwik.org'>Piwik</a> kiel retuma analizilo.";
-App::$strings["If you do not want that your visits are logged this way you <a href='%s'>can set a cookie to prevent Piwik from tracking further visits of the site</a> (opt-out)."] = "Se ni ne protokolu viajn vizitojn tiel, vi <a href='%s'>povas agordi kuketon por malpermesi Piwik al plu protokoli pliajn vizitojn</a> (mem-for-elekti / opt-out).";
-App::$strings["Piwik Base URL"] = "Piwik baza URL adreso";
-App::$strings["Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)"] = "Absoluta vojo al via Piwik instalo. (sen protokolo (http/s), inkluzive vosta oblikva streketo)";
-App::$strings["Site ID"] = "Reteja idento";
-App::$strings["Show opt-out cookie link?"] = "Montru ligilon al kuketo por mem-for-elekti (opt-out)?";
-App::$strings["Asynchronous tracking"] = "Nesinkrona spurado.";
-App::$strings["Post to Twitter"] = "AfiÅi ĉe Twitter";
-App::$strings["Twitter settings updated."] = "Äœisdatigis Twitter agordojn.";
-App::$strings["Twitter Posting Settings"] = "Agordoj por afiÅi ĉe Twitter";
-App::$strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "Ne trovis klientajn Ålosilojn por Twitter. Bonvolu kontakti vian retejan administranton.";
-App::$strings["At this Friendica instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "Je ĉi tiu Friendica retejo, la Twitter kromprogramo jam estas Åaltita, sed via konto anokoraÅ­ ne estas konektita kun via Twitter konto. Por fari tion, klaku la supran butonon por atingi nombrokodon de Twitter, kion vi kopiu en la supran eniga ĉelo, kaj sendu la formularon. Nur viaj <strong>publikaj</strong> afiÅoj estas plusendota al Twitter. ";
-App::$strings["Log in with Twitter"] = "Ensaluti kun Twitter";
-App::$strings["Copy the PIN from Twitter here"] = "Alglui la PIN de Twitter ĉi tie";
-App::$strings["If enabled all your <strong>public</strong> postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Kiam Åaltita, ĉiuj <strong>publikaj</strong> afiÅoj de vi ankaÅ­ eblas esti afiÅota al la asociigita Twitter konto. Vi povas elekti Äin defaÅ­lte (ĉi tie) au unuope por ĉiuj afiÅoj kiam vi skribos ilin.";
-App::$strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Averto</strong>: LaÅ­ viaj privatecaj agordoj (<em>KaÅi viajn profilajn detalojn al nekonataj spektantoj?</em>), la ligilo en publikaj afiÅoj plusendata al Twitter gvidas vizitontojn al malplena paÄo sciigante ilin ke atingo al via profilo estas lmitigita.";
-App::$strings["Allow posting to Twitter"] = "Permesi afiÅojn al Twitter";
-App::$strings["Send public postings to Twitter by default"] = "DefaÅ­lte sendi publikajn afiÅojn al Twitter";
-App::$strings["Send linked #-tags and @-names to Twitter"] = "Sendi ligitajn #-etikedojn kaj @-nomon al Twitter";
-App::$strings["Consumer key"] = "Åœlosilo de Kliento";
-App::$strings["Consumer secret"] = "Sekreto de Kliento";
-App::$strings["IRC Settings"] = "IRC Agordoj";
-App::$strings["Channel(s) to auto connect (comma separated)"] = "AÅ­tomate konektiÄi al la kanalo(j) (disigita per komo)";
-App::$strings["Popular Channels (comma separated)"] = "Popularaj kanaloj (disigita per komo)";
-App::$strings["IRC settings saved."] = "IRC agordoj konservitaj.";
-App::$strings["IRC Chatroom"] = "IRC babilejo";
-App::$strings["Popular Channels"] = "Popularaj Kanaloj";
-App::$strings["Post to blogger"] = "AfiÅi al blogger";
-App::$strings["Blogger Post Settings"] = "Agordo pri Blogger AfiÅoj";
-App::$strings["Enable Blogger Post Plugin"] = "Åœalti la Blogger afiÅo kromprogramon";
-App::$strings["Blogger username"] = "Blogger uzantonomo";
-App::$strings["Blogger password"] = "Blogger pasvorto";
-App::$strings["Blogger API URL"] = "Blogger API URL";
-App::$strings["Post to Blogger by default"] = "DefaÅ­lte afiÅi al Blogger";
-App::$strings["Post to Posterous"] = "AfiÅi al Posterous";
-App::$strings["Posterous Post Settings"] = "Agordoj pri afiÅoj ĉe Posterous";
-App::$strings["Enable Posterous Post Plugin"] = "Åœalti la Poserous-afiÅo kromprogramon";
-App::$strings["Posterous login"] = "Posterous salutnomo";
-App::$strings["Posterous password"] = "Posterous pasvorto";
-App::$strings["Posterous site ID"] = "Idento de Posterous retejo";
-App::$strings["Posterous API token"] = "API ĵetono de Posterous retejo";
-App::$strings["Post to Posterous by default"] = "DefaÅ­lte afiÅi al Posterous";
-App::$strings["Theme settings"] = "Agordoj pri la etoso";
-App::$strings["Set resize level for images in posts and comments (width and height)"] = "Agordi la regrandignivelo por bildoj en afiÅoj kaj komentoj (larÄo kaj alto)";
-App::$strings["Set font-size for posts and comments"] = "Agordi la tiparan grandon por afiÅoj kaj komentoj";
-App::$strings["Set theme width"] = "Agordi la larÄo por la etoso";
-App::$strings["Color scheme"] = "Kolorskemo";
-App::$strings["Your posts and conversations"] = "Viaj afiÅoj kaj komunikadoj";
-App::$strings["Your profile page"] = "Via profilo";
-App::$strings["Your contacts"] = "Viaj kontaktoj";
-App::$strings["Your photos"] = "Viaj bildoj";
-App::$strings["Your events"] = "Viaj okazoj";
-App::$strings["Personal notes"] = "Personaj notoj";
-App::$strings["Your personal photos"] = "Viaj personaj bildoj";
-App::$strings["Community Pages"] = "Komunumaj paÄoj";
-App::$strings["Community Profiles"] = "Komunumaj Profiloj";
-App::$strings["Last users"] = "Ä´usaj uzantoj";
-App::$strings["Last likes"] = "Ä´usaj Åatitaj elementoj";
-App::$strings["Last photos"] = "Ä´usaj bildoj";
-App::$strings["Find Friends"] = "Trovi Amikojn";
-App::$strings["Local Directory"] = "Loka Katalogo";
-App::$strings["Similar Interests"] = "Similaj Interesoj";
-App::$strings["Invite Friends"] = "Inviti amikojn";
-App::$strings["Earth Layers"] = "Tertavoloj (Earth Layers)";
-App::$strings["Set zoomfactor for Earth Layers"] = "Agordi zoman faktoron por Tertavoloj";
-App::$strings["Set longitude (X) for Earth Layers"] = "Agordi longitudon (X) por Tertavoloj";
-App::$strings["Set latitude (Y) for Earth Layers"] = "Agordi latitudon (Y) por Tertavoloj";
-App::$strings["Help or @NewHere ?"] = "Helpu aÅ­ @NewHere ?";
-App::$strings["Connect Services"] = "Konekti Servojn";
-App::$strings["Last Tweets"] = "Ĵusaj Pepaĵoj";
-App::$strings["Set twitter search term"] = "Agordi Twitter serĉtekston";
-App::$strings["don't show"] = "kaÅi";
-App::$strings["show"] = "montri";
-App::$strings["Show/hide boxes at right-hand column:"] = "KaÅi/montri kestojn ĉe dekstra kolumno:";
-App::$strings["Set line-height for posts and comments"] = "Agordi la linigrandon por afiÅoj kaj komentoj";
-App::$strings["Set resolution for middle column"] = "Agordi la distingivon por la meza kolumno";
-App::$strings["Set color scheme"] = "Agordi Kolorskemon";
-App::$strings["Set zoomfactor for Earth Layer"] = "Agordi zoman faktoron de Tertavolo";
-App::$strings["Last tweets"] = "Ĵusaj pepaĵoj";
-App::$strings["Alignment"] = "Äœisrandigo";
-App::$strings["Left"] = "Maldekstren";
-App::$strings["Center"] = "Centren";
-App::$strings["Set colour scheme"] = "Agordi Kolorskemon";
-App::$strings["Gender:"] = "Sekso:";
-App::$strings["j F, Y"] = "j F, Y";
-App::$strings["j F"] = "j F";
-App::$strings["Birthday:"] = "NaskiÄtago:";
-App::$strings["Age:"] = "AÄo:";
-App::$strings["Status:"] = "Stato:";
-App::$strings["for %1\$d %2\$s"] = "por %1\$d %2\$s";
-App::$strings["Homepage:"] = "HejmpaÄo:";
-App::$strings["Tags:"] = "Markoj:";
-App::$strings["Religion:"] = "Religio:";
-App::$strings["About:"] = "Pri:";
-App::$strings["Hobbies/Interests:"] = "Åœatokupoj/Interesoj:";
-App::$strings["Contact information and Social Networks:"] = "Kontaktinformoj kaj Interkonaj Retejoj:";
-App::$strings["Musical interests:"] = "Muzaikaj interesoj:";
-App::$strings["Books, literature:"] = "Libroj, literaturo:";
-App::$strings["Television:"] = "Televido:";
-App::$strings["Film/dance/culture/entertainment:"] = "Filmoj/dancoj/arto/amuzaĵoj:";
-App::$strings["Love/Romance:"] = "Amo/romanco:";
-App::$strings["Work/employment:"] = "Laboro:";
-App::$strings["School/education:"] = "Lernejo/eduko:";
-App::$strings["Unknown | Not categorised"] = "Nekonata | Nekatorigita";
-App::$strings["Block immediately"] = "Bloki tuj";
-App::$strings["Shady, spammer, self-marketer"] = "Suspekta, spamisto, memmerkatisto";
-App::$strings["Known to me, but no opinion"] = "Konata al mi, sed mi ne havas opinion";
-App::$strings["OK, probably harmless"] = "OK, verÅajne sendanÄera";
-App::$strings["Reputable, has my trust"] = "Fidinda laÅ­ mi";
-App::$strings["Frequently"] = "Ofte";
-App::$strings["Hourly"] = "Ĉiuhore";
-App::$strings["Twice daily"] = "Duope ĉiutage";
-App::$strings["Daily"] = "Ĉiutage";
-App::$strings["Weekly"] = "Ĉiusemajne";
-App::$strings["Monthly"] = "Ĉiumonate";
-App::$strings["OStatus"] = "OStatus";
-App::$strings["RSS/Atom"] = "RSS/Atom";
-App::$strings["Zot!"] = "Zot!";
-App::$strings["LinkedIn"] = "LinkedIn";
-App::$strings["XMPP/IM"] = "XMPP/TujmesaÄilo";
-App::$strings["MySpace"] = "MySpace";
-App::$strings["Male"] = "Vira";
-App::$strings["Female"] = "Ina";
-App::$strings["Currently Male"] = "Nuntempe Vira";
-App::$strings["Currently Female"] = "Nuntempe Ina";
-App::$strings["Mostly Male"] = "Ĉefe Vira";
-App::$strings["Mostly Female"] = "Ĉefe Ina";
-App::$strings["Transgender"] = "Transgenra";
-App::$strings["Intersex"] = "Interseksa";
-App::$strings["Transsexual"] = "Transseksa";
-App::$strings["Hermaphrodite"] = "Hermafrodita";
-App::$strings["Neuter"] = "NeÅ­tra";
-App::$strings["Non-specific"] = "Nespecifa";
-App::$strings["Other"] = "Alia";
-App::$strings["Undecided"] = "Nedecida";
-App::$strings["Males"] = "Viroj";
-App::$strings["Females"] = "Inoj";
-App::$strings["Gay"] = "Geja";
-App::$strings["Lesbian"] = "Lesba";
-App::$strings["No Preference"] = "Neniu Prefero";
-App::$strings["Bisexual"] = "AmbaÅ­seksema";
-App::$strings["Autosexual"] = "Memseksema";
-App::$strings["Abstinent"] = "Abstinema";
-App::$strings["Virgin"] = "Virgulino";
-App::$strings["Deviant"] = "Devia";
-App::$strings["Fetish"] = "Fetiĉo";
-App::$strings["Oodles"] = "Amasa";
-App::$strings["Nonsexual"] = "Neseksa";
-App::$strings["Single"] = "Sola";
-App::$strings["Lonely"] = "Soleca";
-App::$strings["Available"] = "Havebla";
-App::$strings["Unavailable"] = "Nehavebla";
-App::$strings["Has crush"] = "Sekrete enamiÄinta";
-App::$strings["Infatuated"] = "Blinda amo";
-App::$strings["Dating"] = "Rendevuanta";
-App::$strings["Unfaithful"] = "Malfidela";
-App::$strings["Sex Addict"] = "Seksmaniulo";
-App::$strings["Friends"] = "Amikoj";
-App::$strings["Friends/Benefits"] = "Amikoj/AvantaÄoj";
-App::$strings["Casual"] = "Neformala";
-App::$strings["Engaged"] = "Fianĉiginta";
-App::$strings["Married"] = "EdziÄinta";
-App::$strings["Imaginarily married"] = "Image edziÄinta";
-App::$strings["Partners"] = "Geparuloj";
-App::$strings["Cohabiting"] = "KunloÄanta";
-App::$strings["Common law"] = "Registrita partnereco ";
-App::$strings["Happy"] = "Feliĉa";
-App::$strings["Not looking"] = "Ne interesiÄis";
-App::$strings["Swinger"] = "Swinger";
-App::$strings["Betrayed"] = "Trompita";
-App::$strings["Separated"] = "DisiÄinta";
-App::$strings["Unstable"] = "Malfirma";
-App::$strings["Divorced"] = "EksedziÄinta";
-App::$strings["Imaginarily divorced"] = "Image eksedziÄinta";
-App::$strings["Widowed"] = "Vidva";
-App::$strings["Uncertain"] = "Ne certa";
-App::$strings["It's complicated"] = "Estas komplika";
-App::$strings["Don't care"] = "Egala";
-App::$strings["Ask me"] = "Demandu min";
-App::$strings["Starts:"] = "Ekas:";
-App::$strings["Finishes:"] = "Finas:";
-App::$strings["(no subject)"] = "(neniu temo)";
-App::$strings["noreply"] = "nerespondi";
-App::$strings[" on Last.fm"] = " ĉe Last.fm";
-App::$strings["prev"] = "antaÅ­a";
-App::$strings["first"] = "unua";
-App::$strings["last"] = "lasta";
-App::$strings["next"] = "sekvanta";
-App::$strings["No contacts"] = "Neniu kontaktoj";
-App::$strings["%d Contact"] = array(
- 0 => "%d Kontakto",
- 1 => "%d Kontaktoj",
-);
-App::$strings["Monday"] = "Lundo";
-App::$strings["Tuesday"] = "Mardo";
-App::$strings["Wednesday"] = "Merkredo";
-App::$strings["Thursday"] = "Ä´aÅ­do";
-App::$strings["Friday"] = "Vendredo";
-App::$strings["Saturday"] = "Sabato";
-App::$strings["Sunday"] = "Dimanĉo";
-App::$strings["January"] = "Januaro";
-App::$strings["February"] = "Februaro";
-App::$strings["March"] = "Marto";
-App::$strings["April"] = "Aprilo";
-App::$strings["May"] = "Majo";
-App::$strings["June"] = "Junio";
-App::$strings["July"] = "Julio";
-App::$strings["August"] = "AÅ­gusto";
-App::$strings["September"] = "Septembro";
-App::$strings["October"] = "Oktobro";
-App::$strings["November"] = "Novembro";
-App::$strings["December"] = "Decembro";
-App::$strings["bytes"] = "bajtoj";
-App::$strings["remove"] = "forviÅi";
-App::$strings["[remove]"] = "[forviÅi]";
-App::$strings["Categories:"] = "Kategorioj:";
-App::$strings["Filed under:"] = "Enarkivigita kiel:";
-App::$strings["Click to open/close"] = "Klaku por malfermi/fermi";
-App::$strings["default"] = "defaÅ­lta";
-App::$strings["Select an alternate language"] = "Elekti alian lingvon";
-App::$strings["activity"] = "aktiveco";
-App::$strings["comment"] = "komento";
-App::$strings["post"] = "afiÅo";
-App::$strings["Item filed"] = "Enarkivigis elementon ";
-App::$strings["Sharing notification from Diaspora network"] = "Antentigo pri kunhavigado de la Diaspora reto";
-App::$strings["Attachments:"] = "Kunsendaĵoj:";
-App::$strings["view full size"] = "vidi plengrande";
-App::$strings["Embedded content"] = "Enigita enhavo";
-App::$strings["Embedding disabled"] = "MalÅaltita enigitado";
-App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Revivigis malnovan grupon kun la sama nomo. Permesoj por estantaj elementoj <strong>eble</strong> estas validaj por la grupo kaj estontaj membroj. Se tiu ne estas kiun vi atendis, bonvolu krei alian grupon kun alia nomo.";
-App::$strings["Default privacy group for new contacts"] = "DefaÅ­lta privateca grupo por novaj kontaktoj";
-App::$strings["Everybody"] = "Ĉiuj";
-App::$strings["edit"] = "redakti";
-App::$strings["Groups"] = "Grupoj";
-App::$strings["Edit group"] = "Redakti grupon";
-App::$strings["Create a new group"] = "Krei novan grupon";
-App::$strings["Contacts not in any group"] = "Kontaktoj en neniu grupo";
-App::$strings["Logout"] = "Elsaluti";
-App::$strings["End this session"] = "Fini ĉi-tiun seancon";
-App::$strings["Status"] = "Stato";
-App::$strings["Sign in"] = "Ensaluti";
-App::$strings["Home Page"] = "HejmpaÄo";
-App::$strings["Create an account"] = "Krei konton";
-App::$strings["Help and documentation"] = "Helpo kaj dokumentado";
-App::$strings["Apps"] = "Programoj";
-App::$strings["Addon applications, utilities, games"] = "Kromprogramoj, utilaĵoj, ludiloj";
-App::$strings["Search site content"] = "Serĉu la retejon";
-App::$strings["Conversations on this site"] = "Konversacioj je ĉi-tiu retejo";
-App::$strings["Directory"] = "Katalogo";
-App::$strings["People directory"] = "Katalogo de homoj";
-App::$strings["Conversations from your friends"] = "Konversacioj de viaj amikoj";
-App::$strings["Friend Requests"] = "Kontaktpetoj";
-App::$strings["See all notifications"] = "Vidu ĉiujn atentigojn";
-App::$strings["Mark all system notifications seen"] = "Marki ĉiujn atentigojn legita";
-App::$strings["Private mail"] = "Privata poÅto";
-App::$strings["Inbox"] = "Enirkesto";
-App::$strings["Outbox"] = "Elirkesto";
-App::$strings["Manage"] = "Administri";
-App::$strings["Manage other pages"] = "Administri aliajn paÄojn";
-App::$strings["Profiles"] = "Profiloj";
-App::$strings["Manage/edit profiles"] = "Administri/redakti profilojn";
-App::$strings["Manage/edit friends and contacts"] = "Administri/redakti amikojn kaj kontaktojn";
-App::$strings["Site setup and configuration"] = "Agordoj pri la retejo";
-App::$strings["Nothing new here"] = "Estas neniu nova ĉi tie";
-App::$strings["Add New Contact"] = "Aldonu Novan Kontakton";
-App::$strings["Enter address or web location"] = "Entajpu adreson aÅ­ retlokon";
-App::$strings["Example: bob@example.com, http://example.com/barbara"] = "Ekzemple: bob@example.com, http://example.com/barbara";
-App::$strings["%d invitation available"] = array(
- 0 => "Disponeblas %d invito",
- 1 => "Disponeblas %d invitoj",
-);
-App::$strings["Find People"] = "Trovi Homojn";
-App::$strings["Enter name or interest"] = "Entajpu nomon aÅ­ intereson";
-App::$strings["Connect/Follow"] = "Konekti/Aboni";
-App::$strings["Examples: Robert Morgenstein, Fishing"] = "Ekzemple: Robert Morgenstein, Fishing";
-App::$strings["Random Profile"] = "Hazarda Profilo";
-App::$strings["Networks"] = "Retoj";
-App::$strings["All Networks"] = "Ĉiuj Retoj";
-App::$strings["Saved Folders"] = "Konservitaj Dosierujoj";
-App::$strings["Everything"] = "Ĉio";
-App::$strings["Categories"] = "Kategorioj";
-App::$strings["Logged out."] = "Elsalutita.";
-App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Okazis problemo ensalutinta kun via OpenID. Bonvolu kontroli la ID.";
-App::$strings["The error message was:"] = "La erarmesaÄo estis:";
-App::$strings["Miscellaneous"] = "Diversaj";
-App::$strings["year"] = "jaro";
-App::$strings["month"] = "monato";
-App::$strings["day"] = "tago";
-App::$strings["never"] = "neniam";
-App::$strings["less than a second ago"] = "antaÅ­ malpli ol unu sekundo";
-App::$strings["years"] = "jaroj";
-App::$strings["months"] = "monatoj";
-App::$strings["week"] = "semajno";
-App::$strings["weeks"] = "semajnoj";
-App::$strings["days"] = "tagoj";
-App::$strings["hour"] = "horo";
-App::$strings["hours"] = "horoj";
-App::$strings["minute"] = "minuto";
-App::$strings["minutes"] = "minutoj";
-App::$strings["second"] = "sekundo";
-App::$strings["seconds"] = "sekundoj";
-App::$strings["%1\$d %2\$s ago"] = "antaÅ­ %1\$d %2\$s";
-App::$strings["%s's birthday"] = "NaskiÄtago de %s";
-App::$strings["Happy Birthday %s"] = "Feliĉan NaskiÄtagon al %s";
-App::$strings["From: "] = "De: ";
-App::$strings["$1 wrote:"] = "$1 skribis:";
-App::$strings["Image/photo"] = "Bildo";
-App::$strings["Cannot locate DNS info for database server '%s'"] = "Ne trovis DNS informojn por datumbaza servilo '%s'.";
-App::$strings["[no subject]"] = "[neniu temo]";
-App::$strings["Visible to everybody"] = "Videbla al ĉiuj";
-App::$strings["Friendica Notification"] = "Friendica Atentigo";
-App::$strings["Thank You,"] = "Dankon,";
-App::$strings["%s Administrator"] = "%s Administranto";
-App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
-App::$strings["[Friendica:Notify] New mail received at %s"] = "[Friendica:Atentigo] Ricevis novan retpoÅton ĉe %s";
-App::$strings["%1\$s sent you a new private message at %2\$s."] = "%1\$s sendis al vi novan privatan mesaÄon ĉe %2\$s.";
-App::$strings["%1\$s sent you %2\$s."] = "%1\$s sendis al vi %2\$s.";
-App::$strings["a private message"] = "privatan mesaÄon";
-App::$strings["Please visit %s to view and/or reply to your private messages."] = "Bonvolu viziti %s por vidi aÅ­ respondi viajn privatajn mesaÄojn.";
-App::$strings["%1\$s commented on [url=%2\$s]a %3\$s[/url]"] = "%1\$s komentis pri [url=%2\$s]%3\$s[/url]";
-App::$strings["%1\$s commented on [url=%2\$s]%3\$s's %4\$s[/url]"] = "%1\$s komentis pri [url=%2\$s]%4\$s de %3\$s[/url]";
-App::$strings["%1\$s commented on [url=%2\$s]your %3\$s[/url]"] = "%1\$s komentis pri [url=%2\$s]via %3\$s[/url]";
-App::$strings["[Friendica:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Friendica:Atentigo] Komento pri konversacio #%1\$d de %2\$s";
-App::$strings["%s commented on an item/conversation you have been following."] = "%s komentis pri elemento/konversacio kiun vi sekvas.";
-App::$strings["Please visit %s to view and/or reply to the conversation."] = "Bonvolu viziti %s por vidi aÅ­ respondi la konversacion.";
-App::$strings["[Friendica:Notify] %s posted to your profile wall"] = "[Friendica:Atentigo] %s afiÅis al via profilmuro";
-App::$strings["%1\$s posted to your profile wall at %2\$s"] = "%1\$s skribis al via profilmuro ĉe %2\$s";
-App::$strings["%1\$s posted to [url=%2s]your wall[/url]"] = "%1\$s afiÅis al [url=%2s]via muro[/url]";
-App::$strings["[Friendica:Notify] %s tagged you"] = "[Friendica:Atentigo] %s markis vin";
-App::$strings["%1\$s tagged you at %2\$s"] = "%1\$s markis vin ĉe %2\$s";
-App::$strings["%1\$s [url=%2\$s]tagged you[/url]."] = "%1\$s [url=%2\$s]markis vin[/url].";
-App::$strings["[Friendica:Notify] %s tagged your post"] = "[Friendica:Atentigo] %s markis vian afiÅon";
-App::$strings["%1\$s tagged your post at %2\$s"] = "%1\$s markis vian afiÅon ĉe %2\$s";
-App::$strings["%1\$s tagged [url=%2\$s]your post[/url]"] = "%1\$s markis [url=%2\$s]vian afiÅon[/url]";
-App::$strings["[Friendica:Notify] Introduction received"] = "[Friendica:Atentigo] Ricevis prezenton";
-App::$strings["You've received an introduction from '%1\$s' at %2\$s"] = "Vi ricevis prezenton de '%1\$s' ĉe %2\$s";
-App::$strings["You've received [url=%1\$s]an introduction[/url] from %2\$s."] = "Vi ricevis [url=%1\$s]prezenton[/url] de %2\$s.";
-App::$strings["You may visit their profile at %s"] = "Vi povas vidi la profilon de li aÅ­ Åi ĉe %s";
-App::$strings["Please visit %s to approve or reject the introduction."] = "Bonvolu viziti %s por aprobi aÅ­ malaprobi la prezenton.";
-App::$strings["[Friendica:Notify] Friend suggestion received"] = "[Friendica:Atentigo] Ricevis amikosugeston";
-App::$strings["You've received a friend suggestion from '%1\$s' at %2\$s"] = "Vi ricevis amikosugeston de '%1\$s' ĉe %2\$s";
-App::$strings["You've received [url=%1\$s]a friend suggestion[/url] for %2\$s from %3\$s."] = "Vi ricevis [url=%1\$s]amikosugeston[/url] pri %2\$s de %3\$s.";
-App::$strings["Name:"] = "Nomo:";
-App::$strings["Photo:"] = "Bildo:";
-App::$strings["Please visit %s to approve or reject the suggestion."] = "Bonvolu viziti %s por aprobi aÅ­ malaprobi la sugeston.";
-App::$strings["Connect URL missing."] = "Ne ekzistas URL adreso por konekti.";
-App::$strings["This site is not configured to allow communications with other networks."] = "Tiu retpaÄo ne permesas komunikadon kun aliaj retoj.";
-App::$strings["No compatible communication protocols or feeds were discovered."] = "Ne malkovris kongruajn protokolojn por komunikado aÅ­ fluojn.";
-App::$strings["The profile address specified does not provide adequate information."] = "La specifita profiladreso ne enhavas sufiĉe da informoj.";
-App::$strings["An author or name was not found."] = "Ne trovis aÅ­toron aÅ­ nomon.";
-App::$strings["No browser URL could be matched to this address."] = "Neniu retuma URL adreso kongruas al la adreso.";
-App::$strings["Unable to match @-style Identity Address with a known protocol or email contact."] = "Ne eblas kongrui @-stilan identecon adreson al iu konata protokolo au retpoÅtadreso.";
-App::$strings["Use mailto: in front of address to force email check."] = "Uzu mailto: antaÅ­ la adreso por devigi la testadon per retpoÅto.";
-App::$strings["The profile address specified belongs to a network which has been disabled on this site."] = "Tiu profila adreso apartenas al retejo kiu estas maÅaltita je ĉi tiu retejo.";
-App::$strings["Limited profile. This person will be unable to receive direct/personal notifications from you."] = "Profilo limigata. Ĉi persono ne eblos ricevi rektajn/personajn atentigojn de vi. ";
-App::$strings["Unable to retrieve contact information."] = "Ne eblas ricevi kontaktinformojn.";
-App::$strings["following"] = "sekvanta";
-App::$strings["A new person is sharing with you at "] = "Nova persono kunhavigas kun vi ĉe ";
-App::$strings["You have a new follower at "] = "Vi havas novan sekvanton ĉe ";
-App::$strings["Archives"] = "Arkivoj";
-App::$strings["An invitation is required."] = "Invio bezonata.";
-App::$strings["Invitation could not be verified."] = "Ne povis kontroli la inviton.";
-App::$strings["Invalid OpenID url"] = "Nevalida OpenID adreso";
-App::$strings["Please enter the required information."] = "Bonvolu entajpi la bezonatajn informojn.";
-App::$strings["Please use a shorter name."] = "Bonvolu uzi pli mallongan nomon.";
-App::$strings["Name too short."] = "Nomo estas tro mallonga.";
-App::$strings["That doesn't appear to be your full (First Last) name."] = "Tio Åajne ne estas via plena (persona, familia) nomo.";
-App::$strings["Your email domain is not among those allowed on this site."] = "Via retpoÅtodomajno ne estas permesita ĉi tie.";
-App::$strings["Not a valid email address."] = "Nevalida retpoÅtadreso.";
-App::$strings["Cannot use that email."] = "Neuzebla retpoÅtadreso.";
-App::$strings["Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and must also begin with a letter."] = "Via kaÅnomo nur povas enhavi \"a-z\", \"0-9\", \"-\", kaj \"_\". Äœi ankaÅ­ devas komenci kun litero.";
-App::$strings["Nickname is already registered. Please choose another."] = "Tio kaÅnomo jam estas registrita. Bonvolu elekti alian.";
-App::$strings["Nickname was once registered here and may not be re-used. Please choose another."] = "Tiu kaÅnomo iam estis registrita ĉi tie kaj ne ree uzeblas. Bonvolu elekti alian.";
-App::$strings["SERIOUS ERROR: Generation of security keys failed."] = "GRAVA ERARO: La generacio de sekurecaj ĉifroÅlosiloj malsukcesis.";
-App::$strings["An error occurred during registration. Please try again."] = "Eraro okazis dum registrado. Bonvolu provi denove.";
-App::$strings["An error occurred creating your default profile. Please try again."] = "Eraro okazi dum kreado de via defaÅ­lta profilo. Bonvolu provi denove.";
-App::$strings["Welcome "] = "Bonvenon ";
-App::$strings["Please upload a profile photo."] = "Bonvolu alÅuti profilbildon.";
-App::$strings["Welcome back "] = "Bonvenon ";
-App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "La sekuriga ĵetono de la formo estis malÄusta. Tio verÅajne okazis ĉar la formo estis malfermita dum tro longa tempo (>3 horoj) antaÅ­ la sendado.";
-App::$strings["stopped following"] = "ne plu sekvas";
-App::$strings["View Status"] = "Vidi Staton";
-App::$strings["View Profile"] = "Vidi Profilon";
-App::$strings["View Photos"] = "Vidi Bildojn";
-App::$strings["Network Posts"] = "Enretaj AfiÅoj";
-App::$strings["Edit Contact"] = "Redakti Kontakton";
-App::$strings["Send PM"] = "Sendi PM";
-App::$strings["post/item"] = "afiÅo/elemento";
-App::$strings["%1\$s marked %2\$s's %3\$s as favorite"] = "%1\$s markis la %3\$s de %2\$s kiel preferita.";
-App::$strings["Select"] = "Elekti";
-App::$strings["View %s's profile @ %s"] = "Vidi la profilon de %s ĉe %s";
-App::$strings["%s from %s"] = "%s de %s";
-App::$strings["View in context"] = "Vidi kun kunteksto";
-App::$strings["%d comment"] = array(
- 0 => "%d komento",
- 1 => "%d komentoj",
-);
-App::$strings["like"] = "Åati";
-App::$strings["dislike"] = "malÅati";
-App::$strings["Share this"] = "Kunhavigi ĉi tiun";
-App::$strings["share"] = "kunhavigi";
-App::$strings["Bold"] = "Grasa";
-App::$strings["Italic"] = "Kursiva";
-App::$strings["Underline"] = "Substreki";
-App::$strings["Quote"] = "Citaĵo";
-App::$strings["Code"] = "Kodo";
-App::$strings["Image"] = "Bildo";
-App::$strings["Link"] = "Ligilo";
-App::$strings["Video"] = "Video";
-App::$strings["add star"] = "aldoni stelon";
-App::$strings["remove star"] = "forpreni stelon";
-App::$strings["toggle star status"] = "Åalti/malÅalti steloÅtato";
-App::$strings["starred"] = "steligita";
-App::$strings["add tag"] = "aldoni markon";
-App::$strings["save to folder"] = "konservi en dosierujo";
-App::$strings["to"] = "al";
-App::$strings["Wall-to-Wall"] = "Muro-al-Muro";
-App::$strings["via Wall-To-Wall:"] = "per Muro-al-Muro:";
-App::$strings["Delete Selected Items"] = "ForviÅi Elektitajn Elementojn";
-App::$strings["%s likes this."] = "%s Åatas tiun.";
-App::$strings["%s doesn't like this."] = "%s malÅatas tiun.";
-App::$strings["<span %1\$s>%2\$d people</span> like this."] = "<span %1\$s>%2\$d homoj</span> Åatas tiun.";
-App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = "<span %1\$s>%2\$d homoj</span>malÅatas tiun.";
-App::$strings["and"] = "kaj";
-App::$strings[", and %d other people"] = ", kaj %d aliaj homoj.";
-App::$strings["%s like this."] = "%s Åatas tiun.";
-App::$strings["%s don't like this."] = "%s malÅatas tiun.";
-App::$strings["Visible to <strong>everybody</strong>"] = "Videbla al <strong>ĉiuj</strong>";
-App::$strings["Please enter a video link/URL:"] = "Bonvolu entajpi ligilon/adreson de video:";
-App::$strings["Please enter an audio link/URL:"] = "Bonvolu entajpi ligilon/adreson de sono:";
-App::$strings["Tag term:"] = "Markfrazo:";
-App::$strings["Where are you right now?"] = "Kie vi estas nun?";
-App::$strings["upload photo"] = "alÅuti bildon";
-App::$strings["attach file"] = "kunsendi dosieron";
-App::$strings["web link"] = "TTT ligilo";
-App::$strings["Insert video link"] = "Alglui ligilon de video";
-App::$strings["video link"] = "video ligilo";
-App::$strings["Insert audio link"] = "Alglui ligilon de sono";
-App::$strings["audio link"] = "sono ligilo";
-App::$strings["set location"] = "agordi lokon";
-App::$strings["clear location"] = "forviÅi lokon";
-App::$strings["permissions"] = "permesoj";
-App::$strings["Click here to upgrade."] = "Klaku ĉi tie por Äisdatigi.";
-App::$strings["This action exceeds the limits set by your subscription plan."] = "Tia ago preterpasas la limojn de via abono.";
-App::$strings["This action is not available under your subscription plan."] = "Tia ago ne estas permesita laÅ­ via abono.";
-App::$strings["Delete this item?"] = "ForviÅi ĉi tiun elementon?";
-App::$strings["show fewer"] = "montri malpli";
-App::$strings["Update %s failed. See error logs."] = "Malsukcesis Äisdatigi %s. Vidu la protokolojn.";
-App::$strings["Update Error at %s"] = "Eraro dum Äisdatigo ĉe %s";
-App::$strings["Create a New Account"] = "Krei Novan Konton";
-App::$strings["Nickname or Email address: "] = "KaÅnomo aÅ­ retpoÅtadreso:";
-App::$strings["Password: "] = "Pasvorto:";
-App::$strings["Or login using OpenID: "] = "AÅ­ ensaluti per OpenID:";
-App::$strings["Forgot your password?"] = "Ĉu vi vorgesis vian pasvorton?";
-App::$strings["Edit profile"] = "Redakti profilon";
-App::$strings["Message"] = "MesaÄo";
-App::$strings["g A l F d"] = "\\j\\e \\l\\a G\\a \\h\\o\\r\\o, l F d";
-App::$strings["F d"] = "F d";
-App::$strings["[today]"] = "[hodiaÅ­]";
-App::$strings["Birthday Reminders"] = "Memorigilo pri naskiÄtagoj";
-App::$strings["Birthdays this week:"] = "NaskiÄtagoj ĉi-semajne:";
-App::$strings["[No description]"] = "[Neniu priskribo]";
-App::$strings["Event Reminders"] = "Memorigilo pri Okazoj";
-App::$strings["Events this week:"] = "Okazoj ĉi-semajne:";
-App::$strings["Status Messages and Posts"] = "ÅœtatmesaÄoj kaj AfiÅoj";
-App::$strings["Profile Details"] = "Profildetaloj";
-App::$strings["Events and Calendar"] = "Okazoj kaj Kalendaro";
-App::$strings["Only You Can See This"] = "Nur Vi Povas Vidi Tiun";
diff --git a/view/eo/update_fail_eml.tpl b/view/eo/update_fail_eml.tpl
deleted file mode 100644
index 61f44b1e6..000000000
--- a/view/eo/update_fail_eml.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
-Hey,
-I'm the web server at {{$sitename}};
-
-The Hubzilla developers released update {{$update}} recently,
-but when I tried to install it, something went terribly wrong.
-This needs to be fixed soon and it requires human intervention.
-Please contact a Red developer if you can not figure out how to
-fix it on your own. My database might be invalid.
-
-The error message is '{{$error}}'.
-
-Apologies for the inconvenience,
- your web server at {{$siteurl}} \ No newline at end of file
diff --git a/view/es-es/hmessages.po b/view/es-es/hmessages.po
index a77386393..d7a918c55 100644
--- a/view/es-es/hmessages.po
+++ b/view/es-es/hmessages.po
@@ -3,8 +3,8 @@
# This file is distributed under the same license as the Red package.
#
# Translators:
-# Alfonso <alfonsomthd@tutanota.com>, 2015
-# JACOB MALDONADO <axetransit@gmail.com>, 2015
+# alfonsomthd <alfonsomthd@tutanota.com>, 2015
+# inboxwall <axetransit@gmail.com>, 2015
# jeroenpraat <jeroenpraat@xs4all.nl>, 2015
# Manuel Jiménez Friaza <mjfriaza@openmailbox.org>, 2015-2016
# Rafael, 2015
@@ -13,8 +13,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-04-29 00:01-0700\n"
-"PO-Revision-Date: 2016-04-30 09:57+0000\n"
+"POT-Creation-Date: 2016-06-10 00:02-0700\n"
+"PO-Revision-Date: 2016-06-10 18:33+0000\n"
"Last-Translator: Manuel Jiménez Friaza <mjfriaza@openmailbox.org>\n"
"Language-Team: Spanish (Spain) (http://www.transifex.com/Friendica/red-matrix/language/es_ES/)\n"
"MIME-Version: 1.0\n"
@@ -27,7 +27,7 @@ msgstr ""
msgid "parent"
msgstr "padre"
-#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2606
+#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2620
msgid "Collection"
msgstr "Colección"
@@ -51,16 +51,16 @@ msgstr "Programar bandeja de entrada"
msgid "Schedule Outbox"
msgstr "Programar bandeja de salida"
-#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Module/Photos.php:797
-#: ../../Zotlabs/Module/Photos.php:1242 ../../include/apps.php:360
-#: ../../include/apps.php:415 ../../include/conversation.php:1037
-#: ../../include/widgets.php:1457
+#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Module/Photos.php:798
+#: ../../Zotlabs/Module/Photos.php:1243 ../../Zotlabs/Lib/Apps.php:486
+#: ../../Zotlabs/Lib/Apps.php:561 ../../include/widgets.php:1505
+#: ../../include/conversation.php:1032
msgid "Unknown"
msgstr "Desconocido"
#: ../../Zotlabs/Storage/Browser.php:226 ../../Zotlabs/Module/Fbrowser.php:85
-#: ../../include/apps.php:135 ../../include/conversation.php:1657
-#: ../../include/nav.php:93
+#: ../../Zotlabs/Lib/Apps.php:216 ../../include/nav.php:93
+#: ../../include/conversation.php:1639
msgid "Files"
msgstr "Ficheros"
@@ -72,23 +72,23 @@ msgstr "Total"
msgid "Shared"
msgstr "Compartido"
-#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:303
-#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:180
+#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:306
+#: ../../Zotlabs/Module/Blocks.php:156 ../../Zotlabs/Module/Layouts.php:182
#: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/New_channel.php:142
-#: ../../Zotlabs/Module/Webpages.php:188
+#: ../../Zotlabs/Module/Webpages.php:186
msgid "Create"
msgstr "Crear"
-#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:305
+#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:308
#: ../../Zotlabs/Module/Cover_photo.php:357
-#: ../../Zotlabs/Module/Photos.php:824 ../../Zotlabs/Module/Photos.php:1366
-#: ../../Zotlabs/Module/Profile_photo.php:368 ../../include/widgets.php:1470
+#: ../../Zotlabs/Module/Photos.php:825 ../../Zotlabs/Module/Photos.php:1364
+#: ../../Zotlabs/Module/Profile_photo.php:368 ../../include/widgets.php:1518
msgid "Upload"
msgstr "Subir"
-#: ../../Zotlabs/Storage/Browser.php:235 ../../Zotlabs/Module/Admin.php:1166
-#: ../../Zotlabs/Module/Chat.php:245 ../../Zotlabs/Module/Settings.php:590
-#: ../../Zotlabs/Module/Settings.php:616
+#: ../../Zotlabs/Storage/Browser.php:235 ../../Zotlabs/Module/Chat.php:247
+#: ../../Zotlabs/Module/Admin.php:1223 ../../Zotlabs/Module/Settings.php:592
+#: ../../Zotlabs/Module/Settings.php:618
#: ../../Zotlabs/Module/Sharedwithme.php:99
msgid "Name"
msgstr "Nombre"
@@ -98,7 +98,7 @@ msgid "Type"
msgstr "Tipo"
#: ../../Zotlabs/Storage/Browser.php:237
-#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1293
+#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1344
msgid "Size"
msgstr "Tamaño"
@@ -107,121 +107,127 @@ msgstr "Tamaño"
msgid "Last Modified"
msgstr "Última modificación"
-#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Admin.php:1775
-#: ../../Zotlabs/Module/Blocks.php:159
+#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Blocks.php:157
+#: ../../Zotlabs/Module/Editblock.php:109
#: ../../Zotlabs/Module/Connections.php:290
#: ../../Zotlabs/Module/Connections.php:310
-#: ../../Zotlabs/Module/Editblock.php:140
-#: ../../Zotlabs/Module/Editlayout.php:139
-#: ../../Zotlabs/Module/Editpost.php:118
-#: ../../Zotlabs/Module/Editwebpage.php:181
-#: ../../Zotlabs/Module/Layouts.php:188 ../../Zotlabs/Module/Menu.php:112
-#: ../../Zotlabs/Module/Settings.php:650 ../../Zotlabs/Module/Thing.php:260
-#: ../../Zotlabs/Module/Webpages.php:189 ../../include/identity.php:930
-#: ../../include/identity.php:934 ../../include/ItemObject.php:100
-#: ../../include/apps.php:259 ../../include/menu.php:108
-#: ../../include/page_widgets.php:8 ../../include/page_widgets.php:36
+#: ../../Zotlabs/Module/Editpost.php:84
+#: ../../Zotlabs/Module/Editlayout.php:113
+#: ../../Zotlabs/Module/Editwebpage.php:146
+#: ../../Zotlabs/Module/Layouts.php:190 ../../Zotlabs/Module/Menu.php:112
+#: ../../Zotlabs/Module/Admin.php:2113 ../../Zotlabs/Module/Settings.php:652
+#: ../../Zotlabs/Module/Thing.php:260 ../../Zotlabs/Module/Webpages.php:187
+#: ../../Zotlabs/Lib/Apps.php:337 ../../Zotlabs/Lib/ThreadItem.php:106
+#: ../../include/channel.php:937 ../../include/channel.php:941
+#: ../../include/menu.php:108 ../../include/page_widgets.php:8
+#: ../../include/page_widgets.php:36
msgid "Edit"
msgstr "Editar"
-#: ../../Zotlabs/Storage/Browser.php:241 ../../Zotlabs/Module/Admin.php:1001
-#: ../../Zotlabs/Module/Admin.php:1160 ../../Zotlabs/Module/Admin.php:1776
-#: ../../Zotlabs/Module/Blocks.php:161
+#: ../../Zotlabs/Storage/Browser.php:241 ../../Zotlabs/Module/Blocks.php:159
+#: ../../Zotlabs/Module/Connedit.php:572
+#: ../../Zotlabs/Module/Editblock.php:134
#: ../../Zotlabs/Module/Connections.php:263
-#: ../../Zotlabs/Module/Connedit.php:573
-#: ../../Zotlabs/Module/Editblock.php:180
-#: ../../Zotlabs/Module/Editlayout.php:184
-#: ../../Zotlabs/Module/Editwebpage.php:221 ../../Zotlabs/Module/Group.php:177
-#: ../../Zotlabs/Module/Photos.php:1172 ../../Zotlabs/Module/Settings.php:651
-#: ../../Zotlabs/Module/Thing.php:261 ../../Zotlabs/Module/Webpages.php:191
-#: ../../include/ItemObject.php:120 ../../include/apps.php:260
-#: ../../include/conversation.php:657
+#: ../../Zotlabs/Module/Editlayout.php:136
+#: ../../Zotlabs/Module/Editwebpage.php:170 ../../Zotlabs/Module/Group.php:177
+#: ../../Zotlabs/Module/Photos.php:1173 ../../Zotlabs/Module/Admin.php:1039
+#: ../../Zotlabs/Module/Admin.php:1213 ../../Zotlabs/Module/Admin.php:2114
+#: ../../Zotlabs/Module/Settings.php:653 ../../Zotlabs/Module/Thing.php:261
+#: ../../Zotlabs/Module/Webpages.php:189 ../../Zotlabs/Lib/Apps.php:338
+#: ../../Zotlabs/Lib/ThreadItem.php:126 ../../include/conversation.php:657
msgid "Delete"
msgstr "Eliminar"
-#: ../../Zotlabs/Storage/Browser.php:282
+#: ../../Zotlabs/Storage/Browser.php:285
#, php-format
msgid "You are using %1$s of your available file storage."
msgstr "Está usando %1$s de su espacio disponible para ficheros."
-#: ../../Zotlabs/Storage/Browser.php:287
+#: ../../Zotlabs/Storage/Browser.php:290
#, php-format
msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
msgstr "Está usando %1$s de %2$s que tiene a su disposición para ficheros. (%3$s&#37;)"
-#: ../../Zotlabs/Storage/Browser.php:299
+#: ../../Zotlabs/Storage/Browser.php:302
msgid "WARNING:"
msgstr "ATENCIÓN:"
-#: ../../Zotlabs/Storage/Browser.php:302
+#: ../../Zotlabs/Storage/Browser.php:305
msgid "Create new folder"
msgstr "Crear nueva carpeta"
-#: ../../Zotlabs/Storage/Browser.php:304
+#: ../../Zotlabs/Storage/Browser.php:307
msgid "Upload file"
msgstr "Subir fichero"
-#: ../../Zotlabs/Web/Router.php:65 ../../Zotlabs/Module/Achievements.php:34
-#: ../../Zotlabs/Module/Api.php:13 ../../Zotlabs/Module/Api.php:18
-#: ../../Zotlabs/Module/Appman.php:70 ../../Zotlabs/Module/Authtest.php:16
-#: ../../Zotlabs/Module/Block.php:26 ../../Zotlabs/Module/Block.php:76
-#: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80
-#: ../../Zotlabs/Module/Bookmarks.php:61 ../../Zotlabs/Module/Channel.php:104
-#: ../../Zotlabs/Module/Channel.php:224 ../../Zotlabs/Module/Channel.php:264
-#: ../../Zotlabs/Module/Chat.php:98 ../../Zotlabs/Module/Chat.php:103
+#: ../../Zotlabs/Web/WebServer.php:120 ../../Zotlabs/Module/Dreport.php:10
+#: ../../Zotlabs/Module/Dreport.php:49 ../../Zotlabs/Module/Group.php:72
+#: ../../Zotlabs/Module/Like.php:284 ../../Zotlabs/Module/Import_items.php:112
+#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:62
+#: ../../include/items.php:385
+msgid "Permission denied"
+msgstr "Permiso denegado"
+
+#: ../../Zotlabs/Web/WebServer.php:121 ../../Zotlabs/Web/Router.php:65
+#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Blocks.php:73
+#: ../../Zotlabs/Module/Blocks.php:80 ../../Zotlabs/Module/Channel.php:105
+#: ../../Zotlabs/Module/Channel.php:226 ../../Zotlabs/Module/Channel.php:267
+#: ../../Zotlabs/Module/Chat.php:100 ../../Zotlabs/Module/Chat.php:105
+#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Block.php:26
+#: ../../Zotlabs/Module/Block.php:76 ../../Zotlabs/Module/Bookmarks.php:61
+#: ../../Zotlabs/Module/Connedit.php:366 ../../Zotlabs/Module/Editblock.php:67
#: ../../Zotlabs/Module/Common.php:39 ../../Zotlabs/Module/Connections.php:33
-#: ../../Zotlabs/Module/Connedit.php:366
#: ../../Zotlabs/Module/Cover_photo.php:277
#: ../../Zotlabs/Module/Cover_photo.php:290
-#: ../../Zotlabs/Module/Editblock.php:69
+#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Events.php:265
#: ../../Zotlabs/Module/Editlayout.php:67
-#: ../../Zotlabs/Module/Editlayout.php:91 ../../Zotlabs/Module/Editpost.php:17
-#: ../../Zotlabs/Module/Editwebpage.php:68
+#: ../../Zotlabs/Module/Editlayout.php:90
+#: ../../Zotlabs/Module/Editwebpage.php:69
#: ../../Zotlabs/Module/Editwebpage.php:90
#: ../../Zotlabs/Module/Editwebpage.php:105
-#: ../../Zotlabs/Module/Editwebpage.php:129
-#: ../../Zotlabs/Module/Events.php:264 ../../Zotlabs/Module/Filestorage.php:22
-#: ../../Zotlabs/Module/Filestorage.php:77
-#: ../../Zotlabs/Module/Filestorage.php:92
-#: ../../Zotlabs/Module/Filestorage.php:119
-#: ../../Zotlabs/Module/Fsuggest.php:82 ../../Zotlabs/Module/Group.php:13
-#: ../../Zotlabs/Module/Id.php:76 ../../Zotlabs/Module/Invite.php:17
-#: ../../Zotlabs/Module/Invite.php:91 ../../Zotlabs/Module/Item.php:210
+#: ../../Zotlabs/Module/Editwebpage.php:127 ../../Zotlabs/Module/Group.php:13
+#: ../../Zotlabs/Module/Api.php:13 ../../Zotlabs/Module/Api.php:18
+#: ../../Zotlabs/Module/Filestorage.php:24
+#: ../../Zotlabs/Module/Filestorage.php:79
+#: ../../Zotlabs/Module/Filestorage.php:94
+#: ../../Zotlabs/Module/Filestorage.php:121 ../../Zotlabs/Module/Item.php:210
#: ../../Zotlabs/Module/Item.php:218 ../../Zotlabs/Module/Item.php:1070
-#: ../../Zotlabs/Module/Layouts.php:73 ../../Zotlabs/Module/Layouts.php:80
-#: ../../Zotlabs/Module/Layouts.php:91 ../../Zotlabs/Module/Like.php:181
-#: ../../Zotlabs/Module/Locs.php:87 ../../Zotlabs/Module/Mail.php:130
-#: ../../Zotlabs/Module/Manage.php:10 ../../Zotlabs/Module/Menu.php:78
-#: ../../Zotlabs/Module/Message.php:20 ../../Zotlabs/Module/Mitem.php:115
-#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Network.php:16
-#: ../../Zotlabs/Module/New_channel.php:77
+#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78
+#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Id.php:76
+#: ../../Zotlabs/Module/Like.php:181 ../../Zotlabs/Module/Invite.php:17
+#: ../../Zotlabs/Module/Invite.php:91 ../../Zotlabs/Module/Locs.php:87
+#: ../../Zotlabs/Module/Mail.php:129 ../../Zotlabs/Module/Manage.php:10
+#: ../../Zotlabs/Module/Menu.php:78 ../../Zotlabs/Module/Message.php:18
+#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Network.php:17
+#: ../../Zotlabs/Module/Mitem.php:115 ../../Zotlabs/Module/New_channel.php:77
#: ../../Zotlabs/Module/New_channel.php:104
-#: ../../Zotlabs/Module/Notifications.php:70 ../../Zotlabs/Module/Page.php:35
+#: ../../Zotlabs/Module/Notifications.php:70
+#: ../../Zotlabs/Module/Photos.php:75 ../../Zotlabs/Module/Page.php:35
#: ../../Zotlabs/Module/Page.php:90 ../../Zotlabs/Module/Pdledit.php:26
-#: ../../Zotlabs/Module/Photos.php:74 ../../Zotlabs/Module/Poke.php:137
-#: ../../Zotlabs/Module/Profile.php:68 ../../Zotlabs/Module/Profile.php:76
+#: ../../Zotlabs/Module/Poke.php:137 ../../Zotlabs/Module/Profile.php:68
+#: ../../Zotlabs/Module/Profile.php:76 ../../Zotlabs/Module/Profiles.php:203
+#: ../../Zotlabs/Module/Profiles.php:601
#: ../../Zotlabs/Module/Profile_photo.php:256
#: ../../Zotlabs/Module/Profile_photo.php:269
-#: ../../Zotlabs/Module/Profiles.php:202 ../../Zotlabs/Module/Profiles.php:600
-#: ../../Zotlabs/Module/Rate.php:115 ../../Zotlabs/Module/Register.php:77
-#: ../../Zotlabs/Module/Regmod.php:21
+#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Appman.php:75
+#: ../../Zotlabs/Module/Register.php:77 ../../Zotlabs/Module/Regmod.php:21
#: ../../Zotlabs/Module/Service_limits.php:11
-#: ../../Zotlabs/Module/Settings.php:570 ../../Zotlabs/Module/Setup.php:238
+#: ../../Zotlabs/Module/Settings.php:572 ../../Zotlabs/Module/Setup.php:215
#: ../../Zotlabs/Module/Sharedwithme.php:11
-#: ../../Zotlabs/Module/Sources.php:70 ../../Zotlabs/Module/Suggest.php:30
+#: ../../Zotlabs/Module/Sources.php:74 ../../Zotlabs/Module/Suggest.php:30
#: ../../Zotlabs/Module/Thing.php:274 ../../Zotlabs/Module/Thing.php:294
#: ../../Zotlabs/Module/Thing.php:331
-#: ../../Zotlabs/Module/Viewconnections.php:26
-#: ../../Zotlabs/Module/Viewconnections.php:31
-#: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Webpages.php:73
-#: ../../include/chat.php:133 ../../include/attach.php:141
-#: ../../include/attach.php:189 ../../include/attach.php:252
-#: ../../include/attach.php:266 ../../include/attach.php:273
-#: ../../include/attach.php:338 ../../include/attach.php:352
-#: ../../include/attach.php:359 ../../include/attach.php:437
-#: ../../include/attach.php:895 ../../include/attach.php:966
-#: ../../include/attach.php:1118 ../../include/items.php:4671
-#: ../../include/photos.php:29 ../../index.php:174
+#: ../../Zotlabs/Module/Viewconnections.php:25
+#: ../../Zotlabs/Module/Viewconnections.php:30
+#: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Webpages.php:74
+#: ../../Zotlabs/Lib/Chatroom.php:137 ../../include/items.php:3438
+#: ../../include/attach.php:141 ../../include/attach.php:189
+#: ../../include/attach.php:252 ../../include/attach.php:266
+#: ../../include/attach.php:273 ../../include/attach.php:338
+#: ../../include/attach.php:352 ../../include/attach.php:359
+#: ../../include/attach.php:437 ../../include/attach.php:895
+#: ../../include/attach.php:966 ../../include/attach.php:1118
+#: ../../include/photos.php:27
msgid "Permission denied."
msgstr "Acceso denegado."
@@ -230,30 +236,30 @@ msgid "Not Found"
msgstr "No encontrado"
#: ../../Zotlabs/Web/Router.php:149 ../../Zotlabs/Module/Block.php:79
-#: ../../Zotlabs/Module/Display.php:121 ../../Zotlabs/Module/Help.php:97
+#: ../../Zotlabs/Module/Display.php:117 ../../Zotlabs/Module/Help.php:97
#: ../../Zotlabs/Module/Page.php:93
msgid "Page not found."
msgstr "Página no encontrada."
-#: ../../Zotlabs/Zot/Auth.php:140
+#: ../../Zotlabs/Zot/Auth.php:138
msgid ""
"Remote authentication blocked. You are logged into this site locally. Please"
" logout and retry."
msgstr "La autenticación desde su servidor está bloqueada. Ha iniciado sesión localmente. Por favor, salga de la sesión y vuelva a intentarlo."
-#: ../../Zotlabs/Zot/Auth.php:248 ../../Zotlabs/Module/Openid.php:76
+#: ../../Zotlabs/Zot/Auth.php:246 ../../Zotlabs/Module/Openid.php:76
#: ../../Zotlabs/Module/Openid.php:183
#, php-format
msgid "Welcome %s. Remote authentication successful."
msgstr "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente."
#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Blocks.php:33
-#: ../../Zotlabs/Module/Connect.php:17 ../../Zotlabs/Module/Editblock.php:33
+#: ../../Zotlabs/Module/Connect.php:17 ../../Zotlabs/Module/Editblock.php:31
#: ../../Zotlabs/Module/Editlayout.php:31
-#: ../../Zotlabs/Module/Editwebpage.php:32
-#: ../../Zotlabs/Module/Filestorage.php:58 ../../Zotlabs/Module/Hcard.php:12
-#: ../../Zotlabs/Module/Layouts.php:33 ../../Zotlabs/Module/Profile.php:20
-#: ../../Zotlabs/Module/Webpages.php:33 ../../include/identity.php:830
+#: ../../Zotlabs/Module/Editwebpage.php:33
+#: ../../Zotlabs/Module/Filestorage.php:60 ../../Zotlabs/Module/Hcard.php:12
+#: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Profile.php:20
+#: ../../Zotlabs/Module/Webpages.php:34 ../../include/channel.php:837
msgid "Requested profile is not available."
msgstr "El perfil solicitado no está disponible."
@@ -261,1546 +267,296 @@ msgstr "El perfil solicitado no está disponible."
msgid "Some blurb about what to do when you're new here"
msgstr "Algunas propuestas para el nuevo usuario sobre qué se puede hacer aquí"
-#: ../../Zotlabs/Module/Acl.php:225
-msgid "network"
-msgstr "red"
-
-#: ../../Zotlabs/Module/Acl.php:235
-msgid "RSS"
-msgstr "RSS"
-
-#: ../../Zotlabs/Module/Admin.php:58
-msgid "Theme settings updated."
-msgstr "Ajustes del tema actualizados."
-
-#: ../../Zotlabs/Module/Admin.php:145 ../../Zotlabs/Module/Admin.php:1197
-#: ../../Zotlabs/Module/Admin.php:1442 ../../Zotlabs/Module/Display.php:44
-#: ../../Zotlabs/Module/Filestorage.php:31 ../../Zotlabs/Module/Thing.php:89
-#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:4592
-msgid "Item not found."
-msgstr "Elemento no encontrado."
-
-#: ../../Zotlabs/Module/Admin.php:178
-msgid "# Accounts"
-msgstr "# Cuentas"
-
-#: ../../Zotlabs/Module/Admin.php:179
-msgid "# blocked accounts"
-msgstr "# cuentas bloqueadas"
-
-#: ../../Zotlabs/Module/Admin.php:180
-msgid "# expired accounts"
-msgstr "# cuentas caducadas"
-
-#: ../../Zotlabs/Module/Admin.php:181
-msgid "# expiring accounts"
-msgstr "# cuentas que caducan"
-
-#: ../../Zotlabs/Module/Admin.php:192
-msgid "# Channels"
-msgstr "# Canales"
-
-#: ../../Zotlabs/Module/Admin.php:193
-msgid "# primary"
-msgstr "# primario"
-
-#: ../../Zotlabs/Module/Admin.php:194
-msgid "# clones"
-msgstr "# clones"
-
-#: ../../Zotlabs/Module/Admin.php:200
-msgid "Message queues"
-msgstr "Mensajes en cola"
-
-#: ../../Zotlabs/Module/Admin.php:216 ../../Zotlabs/Module/Admin.php:462
-#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:717
-#: ../../Zotlabs/Module/Admin.php:992 ../../Zotlabs/Module/Admin.php:1156
-#: ../../Zotlabs/Module/Admin.php:1271 ../../Zotlabs/Module/Admin.php:1332
-#: ../../Zotlabs/Module/Admin.php:1493 ../../Zotlabs/Module/Admin.php:1527
-#: ../../Zotlabs/Module/Admin.php:1612
-msgid "Administration"
-msgstr "Administración"
-
-#: ../../Zotlabs/Module/Admin.php:217
-msgid "Summary"
-msgstr "Sumario"
-
-#: ../../Zotlabs/Module/Admin.php:220
-msgid "Registered accounts"
-msgstr "Cuentas registradas"
-
-#: ../../Zotlabs/Module/Admin.php:221 ../../Zotlabs/Module/Admin.php:681
-msgid "Pending registrations"
-msgstr "Registros pendientes"
-
-#: ../../Zotlabs/Module/Admin.php:222
-msgid "Registered channels"
-msgstr "Canales registrados"
-
-#: ../../Zotlabs/Module/Admin.php:223 ../../Zotlabs/Module/Admin.php:682
-msgid "Active plugins"
-msgstr "Extensiones activas"
-
-#: ../../Zotlabs/Module/Admin.php:224
-msgid "Version"
-msgstr "Versión"
-
-#: ../../Zotlabs/Module/Admin.php:345
-msgid "Site settings updated."
-msgstr "Ajustes del sitio actualizados."
-
-#: ../../Zotlabs/Module/Admin.php:372 ../../include/comanche.php:34
-msgid "Default"
-msgstr "Predeterminado"
-
-#: ../../Zotlabs/Module/Admin.php:382 ../../Zotlabs/Module/Settings.php:796
-msgid "mobile"
-msgstr "móvil"
-
-#: ../../Zotlabs/Module/Admin.php:384
-msgid "experimental"
-msgstr "experimental"
-
-#: ../../Zotlabs/Module/Admin.php:386
-msgid "unsupported"
-msgstr "no soportado"
-
-#: ../../Zotlabs/Module/Admin.php:431 ../../Zotlabs/Module/Api.php:89
-#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Connedit.php:657
-#: ../../Zotlabs/Module/Events.php:458 ../../Zotlabs/Module/Events.php:459
-#: ../../Zotlabs/Module/Events.php:468
-#: ../../Zotlabs/Module/Filestorage.php:155
-#: ../../Zotlabs/Module/Filestorage.php:163 ../../Zotlabs/Module/Menu.php:100
-#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
-#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
-#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:665
-#: ../../Zotlabs/Module/Profiles.php:651 ../../Zotlabs/Module/Removeme.php:64
-#: ../../Zotlabs/Module/Settings.php:579 ../../include/dir_fns.php:141
-#: ../../include/dir_fns.php:142 ../../include/dir_fns.php:143
-#: ../../view/theme/redbasic/php/config.php:105
-#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1619
-msgid "No"
-msgstr "No"
-
-#: ../../Zotlabs/Module/Admin.php:432
-msgid "Yes - with approval"
-msgstr "Sí - con aprobación"
-
-#: ../../Zotlabs/Module/Admin.php:433 ../../Zotlabs/Module/Api.php:88
-#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Events.php:458
-#: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:468
-#: ../../Zotlabs/Module/Filestorage.php:155
-#: ../../Zotlabs/Module/Filestorage.php:163 ../../Zotlabs/Module/Menu.php:100
-#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
-#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
-#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:665
-#: ../../Zotlabs/Module/Profiles.php:651 ../../Zotlabs/Module/Removeme.php:64
-#: ../../Zotlabs/Module/Settings.php:579 ../../include/dir_fns.php:141
-#: ../../include/dir_fns.php:142 ../../include/dir_fns.php:143
-#: ../../view/theme/redbasic/php/config.php:105
-#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1619
-msgid "Yes"
-msgstr "Sí"
-
-#: ../../Zotlabs/Module/Admin.php:438
-msgid "My site is not a public server"
-msgstr "Mi sitio no es un servidor público"
-
-#: ../../Zotlabs/Module/Admin.php:439
-msgid "My site has paid access only"
-msgstr "Mi sitio es un servicio de pago"
-
-#: ../../Zotlabs/Module/Admin.php:440
-msgid "My site has free access only"
-msgstr "Mi sitio es un servicio gratuito"
-
-#: ../../Zotlabs/Module/Admin.php:441
-msgid "My site offers free accounts with optional paid upgrades"
-msgstr "Mi sitio ofrece cuentas gratuitas con opciones extra de pago"
-
-#: ../../Zotlabs/Module/Admin.php:463 ../../include/widgets.php:1334
-msgid "Site"
-msgstr "Sitio"
-
-#: ../../Zotlabs/Module/Admin.php:464 ../../Zotlabs/Module/Admin.php:654
-#: ../../Zotlabs/Module/Admin.php:729 ../../Zotlabs/Module/Admin.php:994
-#: ../../Zotlabs/Module/Admin.php:1158 ../../Zotlabs/Module/Admin.php:1334
-#: ../../Zotlabs/Module/Admin.php:1529 ../../Zotlabs/Module/Admin.php:1614
-#: ../../Zotlabs/Module/Admin.php:1778 ../../Zotlabs/Module/Appman.php:103
-#: ../../Zotlabs/Module/Cal.php:341 ../../Zotlabs/Module/Chat.php:194
-#: ../../Zotlabs/Module/Chat.php:236 ../../Zotlabs/Module/Connect.php:97
-#: ../../Zotlabs/Module/Connedit.php:734 ../../Zotlabs/Module/Events.php:472
-#: ../../Zotlabs/Module/Events.php:669
-#: ../../Zotlabs/Module/Filestorage.php:160
-#: ../../Zotlabs/Module/Fsuggest.php:112 ../../Zotlabs/Module/Group.php:85
-#: ../../Zotlabs/Module/Import.php:546
-#: ../../Zotlabs/Module/Import_items.php:120
-#: ../../Zotlabs/Module/Invite.php:146 ../../Zotlabs/Module/Locs.php:121
-#: ../../Zotlabs/Module/Mail.php:384 ../../Zotlabs/Module/Mitem.php:235
-#: ../../Zotlabs/Module/Mood.php:139 ../../Zotlabs/Module/Pconfig.php:107
-#: ../../Zotlabs/Module/Pdledit.php:66 ../../Zotlabs/Module/Photos.php:676
-#: ../../Zotlabs/Module/Photos.php:1051 ../../Zotlabs/Module/Photos.php:1091
-#: ../../Zotlabs/Module/Photos.php:1209 ../../Zotlabs/Module/Poke.php:186
-#: ../../Zotlabs/Module/Profiles.php:691 ../../Zotlabs/Module/Rate.php:172
-#: ../../Zotlabs/Module/Settings.php:588 ../../Zotlabs/Module/Settings.php:701
-#: ../../Zotlabs/Module/Settings.php:729 ../../Zotlabs/Module/Settings.php:752
-#: ../../Zotlabs/Module/Settings.php:840
-#: ../../Zotlabs/Module/Settings.php:1032 ../../Zotlabs/Module/Setup.php:335
-#: ../../Zotlabs/Module/Setup.php:376 ../../Zotlabs/Module/Sources.php:108
-#: ../../Zotlabs/Module/Sources.php:142 ../../Zotlabs/Module/Thing.php:316
-#: ../../Zotlabs/Module/Thing.php:362 ../../Zotlabs/Module/Xchan.php:15
-#: ../../include/ItemObject.php:703 ../../include/widgets.php:708
-#: ../../include/widgets.php:720 ../../include/js_strings.php:22
-#: ../../view/theme/redbasic/php/config.php:99
-msgid "Submit"
-msgstr "Enviar"
-
-#: ../../Zotlabs/Module/Admin.php:465 ../../Zotlabs/Module/Register.php:245
-msgid "Registration"
-msgstr "Registro"
-
-#: ../../Zotlabs/Module/Admin.php:466
-msgid "File upload"
-msgstr "Subir fichero"
-
-#: ../../Zotlabs/Module/Admin.php:467
-msgid "Policies"
-msgstr "Políticas"
-
-#: ../../Zotlabs/Module/Admin.php:468 ../../include/contact_widgets.php:19
-msgid "Advanced"
-msgstr "Avanzado"
-
-#: ../../Zotlabs/Module/Admin.php:472
-msgid "Site name"
-msgstr "Nombre del sitio"
-
-#: ../../Zotlabs/Module/Admin.php:473
-msgid "Banner/Logo"
-msgstr "Banner/Logo"
-
-#: ../../Zotlabs/Module/Admin.php:474
-msgid "Administrator Information"
-msgstr "Información del Administrador"
-
-#: ../../Zotlabs/Module/Admin.php:474
-msgid ""
-"Contact information for site administrators. Displayed on siteinfo page. "
-"BBCode can be used here"
-msgstr "Información de contacto de los administradores del sitio. Visible en la página \"siteinfo\". Se puede usar BBCode"
-
-#: ../../Zotlabs/Module/Admin.php:475
-msgid "System language"
-msgstr "Idioma del sistema"
-
-#: ../../Zotlabs/Module/Admin.php:476
-msgid "System theme"
-msgstr "Tema gráfico del sistema"
-
-#: ../../Zotlabs/Module/Admin.php:476
-msgid ""
-"Default system theme - may be over-ridden by user profiles - <a href='#' "
-"id='cnftheme'>change theme settings</a>"
-msgstr "Tema del sistema por defecto - se puede cambiar por cada perfil de usuario - <a href='#' id='cnftheme'>modificar los ajustes del tema</a>"
-
-#: ../../Zotlabs/Module/Admin.php:477
-msgid "Mobile system theme"
-msgstr "Tema del sistema para móviles"
-
-#: ../../Zotlabs/Module/Admin.php:477
-msgid "Theme for mobile devices"
-msgstr "Tema para dispositivos móviles"
-
-#: ../../Zotlabs/Module/Admin.php:479
-msgid "Allow Feeds as Connections"
-msgstr "Permitir contenidos RSS como conexiones"
-
-#: ../../Zotlabs/Module/Admin.php:479
-msgid "(Heavy system resource usage)"
-msgstr "(Uso intenso de los recursos del sistema)"
-
-#: ../../Zotlabs/Module/Admin.php:480
-msgid "Maximum image size"
-msgstr "Tamaño máximo de la imagen"
-
-#: ../../Zotlabs/Module/Admin.php:480
-msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
-msgstr "Tamaño máximo en bytes de la imagen subida. Por defecto, es 0, lo que significa que no hay límites."
-
-#: ../../Zotlabs/Module/Admin.php:481
-msgid "Does this site allow new member registration?"
-msgstr "¿Debe este sitio permitir el registro de nuevos miembros?"
-
-#: ../../Zotlabs/Module/Admin.php:482
-msgid "Invitation only"
-msgstr "Solo con una invitación"
-
-#: ../../Zotlabs/Module/Admin.php:482
-msgid ""
-"Only allow new member registrations with an invitation code. Above register "
-"policy must be set to Yes."
-msgstr "Solo se permiten inscripciones de nuevos miembros con un código de invitación. Además, deben aceptarse los términos del registro marcando \"Sí\"."
-
-#: ../../Zotlabs/Module/Admin.php:483
-msgid "Which best describes the types of account offered by this hub?"
-msgstr "¿Cómo describiría el tipo de servicio ofrecido por este servidor?"
-
-#: ../../Zotlabs/Module/Admin.php:484
-msgid "Register text"
-msgstr "Texto del registro"
-
-#: ../../Zotlabs/Module/Admin.php:484
-msgid "Will be displayed prominently on the registration page."
-msgstr "Se mostrará de forma destacada en la página de registro."
-
-#: ../../Zotlabs/Module/Admin.php:485
-msgid "Site homepage to show visitors (default: login box)"
-msgstr "Página personal que se mostrará a los visitantes (por defecto: la página de identificación)"
-
-#: ../../Zotlabs/Module/Admin.php:485
-msgid ""
-"example: 'public' to show public stream, 'page/sys/home' to show a system "
-"webpage called 'home' or 'include:home.html' to include a file."
-msgstr "ejemplo: 'public' para mostrar contenido público, 'page/sys/home' para mostrar la página web definida como \"home\" o 'include:home.html' para mostrar el contenido de un fichero."
-
-#: ../../Zotlabs/Module/Admin.php:486
-msgid "Preserve site homepage URL"
-msgstr "Preservar la dirección de la página personal"
-
-#: ../../Zotlabs/Module/Admin.php:486
-msgid ""
-"Present the site homepage in a frame at the original location instead of "
-"redirecting"
-msgstr "Presenta la página personal del sitio en un marco en la ubicación original, en vez de redirigirla."
-
-#: ../../Zotlabs/Module/Admin.php:487
-msgid "Accounts abandoned after x days"
-msgstr "Cuentas abandonadas después de x días"
-
-#: ../../Zotlabs/Module/Admin.php:487
-msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
-msgstr "Para evitar consumir recursos del sistema intentando poner al día las cuentas abandonadas. Introduzca 0 para no tener límite de tiempo."
-
-#: ../../Zotlabs/Module/Admin.php:488
-msgid "Allowed friend domains"
-msgstr "Dominios amigos permitidos"
-
-#: ../../Zotlabs/Module/Admin.php:488
-msgid ""
-"Comma separated list of domains which are allowed to establish friendships "
-"with this site. Wildcards are accepted. Empty to allow any domains"
-msgstr "Lista separada por comas de dominios a los que está permitido establecer relaciones de amistad con este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio."
-
-#: ../../Zotlabs/Module/Admin.php:489
-msgid "Allowed email domains"
-msgstr "Se aceptan dominios de correo electrónico"
-
-#: ../../Zotlabs/Module/Admin.php:489
-msgid ""
-"Comma separated list of domains which are allowed in email addresses for "
-"registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains"
-msgstr "Lista separada por comas de los dominios de los que se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio. "
-
-#: ../../Zotlabs/Module/Admin.php:490
-msgid "Not allowed email domains"
-msgstr "No se permiten dominios de correo electrónico"
-
-#: ../../Zotlabs/Module/Admin.php:490
-msgid ""
-"Comma separated list of domains which are not allowed in email addresses for"
-" registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains, unless allowed domains have been defined."
-msgstr "Lista separada por comas de los dominios de los que no se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para no aceptar cualquier dominio, excepto los que se hayan autorizado."
-
-#: ../../Zotlabs/Module/Admin.php:491
-msgid "Verify Email Addresses"
-msgstr "Verificar las direcciones de correo electrónico"
-
-#: ../../Zotlabs/Module/Admin.php:491
-msgid ""
-"Check to verify email addresses used in account registration (recommended)."
-msgstr "Activar para la verificación de la dirección de correo electrónico en el registro de una cuenta (recomendado)."
-
-#: ../../Zotlabs/Module/Admin.php:492
-msgid "Force publish"
-msgstr "Forzar la publicación"
-
-#: ../../Zotlabs/Module/Admin.php:492
-msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
-msgstr "Intentar forzar todos los perfiles para que sean listados en el directorio de este sitio."
-
-#: ../../Zotlabs/Module/Admin.php:493
-msgid "Import Public Streams"
-msgstr "Importar contenido público"
-
-#: ../../Zotlabs/Module/Admin.php:493
-msgid ""
-"Import and allow access to public content pulled from other sites. Warning: "
-"this content is unmoderated."
-msgstr "Importar y permitir acceso al contenido público sacado de otros sitios. Advertencia: este contenido no está moderado, por lo que podría encontrar cosas inapropiadas u ofensivas."
-
-#: ../../Zotlabs/Module/Admin.php:494
-msgid "Login on Homepage"
-msgstr "Iniciar sesión en la página personal"
-
-#: ../../Zotlabs/Module/Admin.php:494
-msgid ""
-"Present a login box to visitors on the home page if no other content has "
-"been configured."
-msgstr "Presentar a los visitantes una casilla de identificación en la página de inicio, si no se ha configurado otro tipo de contenido."
-
-#: ../../Zotlabs/Module/Admin.php:495
-msgid "Enable context help"
-msgstr "Habilitar la ayuda contextual"
-
-#: ../../Zotlabs/Module/Admin.php:495
-msgid ""
-"Display contextual help for the current page when the help button is "
-"pressed."
-msgstr "Ver la ayuda contextual para la página actual cuando se pulse el botón de Ayuda."
-
-#: ../../Zotlabs/Module/Admin.php:497
-msgid "Directory Server URL"
-msgstr "URL del servidor de directorio"
-
-#: ../../Zotlabs/Module/Admin.php:497
-msgid "Default directory server"
-msgstr "Servidor de directorio predeterminado"
-
-#: ../../Zotlabs/Module/Admin.php:499
-msgid "Proxy user"
-msgstr "Usuario del proxy"
-
-#: ../../Zotlabs/Module/Admin.php:500
-msgid "Proxy URL"
-msgstr "Dirección del proxy"
-
-#: ../../Zotlabs/Module/Admin.php:501
-msgid "Network timeout"
-msgstr "Tiempo de espera de la red"
-
-#: ../../Zotlabs/Module/Admin.php:501
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
-msgstr "Valor en segundos. Poner a 0 para que no haya tiempo límite (no recomendado)"
-
-#: ../../Zotlabs/Module/Admin.php:502
-msgid "Delivery interval"
-msgstr "Intervalo de entrega"
-
-#: ../../Zotlabs/Module/Admin.php:502
-msgid ""
-"Delay background delivery processes by this many seconds to reduce system "
-"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
-"for large dedicated servers."
-msgstr "Retrasar los procesos de transmisión en segundo plano por esta cantidad de segundos para reducir la carga del sistema. Recomendado: 4-5 para sitios compartidos, 2-3 para servidores virtuales privados, 0-1 para grandes servidores dedicados."
-
-#: ../../Zotlabs/Module/Admin.php:503
-msgid "Deliveries per process"
-msgstr "Intentos de envío por proceso"
-
-#: ../../Zotlabs/Module/Admin.php:503
-msgid ""
-"Number of deliveries to attempt in a single operating system process. Adjust"
-" if necessary to tune system performance. Recommend: 1-5."
-msgstr "Numero de envíos a intentar en un único proceso del sistema operativo. Ajustar si es necesario mejorar el rendimiento. Se recomienda: 1-5."
-
-#: ../../Zotlabs/Module/Admin.php:504
-msgid "Poll interval"
-msgstr "Intervalo máximo de tiempo entre dos mensajes sucesivos"
-
-#: ../../Zotlabs/Module/Admin.php:504
-msgid ""
-"Delay background polling processes by this many seconds to reduce system "
-"load. If 0, use delivery interval."
-msgstr "Retrasar el intervalo de envío en segundo plano, en esta cantidad de segundos, para reducir la carga del sistema. Si es 0, usar el intervalo de entrega."
-
-#: ../../Zotlabs/Module/Admin.php:505
-msgid "Maximum Load Average"
-msgstr "Carga media máxima"
-
-#: ../../Zotlabs/Module/Admin.php:505
-msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
-msgstr "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50."
-
-#: ../../Zotlabs/Module/Admin.php:506
-msgid "Expiration period in days for imported (grid/network) content"
-msgstr "Caducidad del contenido importado de otros sitios (en días)"
-
-#: ../../Zotlabs/Module/Admin.php:506
-msgid "0 for no expiration of imported content"
-msgstr "0 para que no caduque el contenido importado"
-
-#: ../../Zotlabs/Module/Admin.php:643 ../../Zotlabs/Module/Admin.php:644
-#: ../../Zotlabs/Module/Settings.php:720
-msgid "Off"
-msgstr "Desactivado"
-
-#: ../../Zotlabs/Module/Admin.php:643 ../../Zotlabs/Module/Admin.php:644
-#: ../../Zotlabs/Module/Settings.php:720
-msgid "On"
-msgstr "Activado"
-
-#: ../../Zotlabs/Module/Admin.php:644
-#, php-format
-msgid "Lock feature %s"
-msgstr "Bloquear la funcionalidad %s"
-
-#: ../../Zotlabs/Module/Admin.php:652
-msgid "Manage Additional Features"
-msgstr "Gestionar las funcionalidades"
-
-#: ../../Zotlabs/Module/Admin.php:669
-msgid "No server found"
-msgstr "Servidor no encontrado"
-
-#: ../../Zotlabs/Module/Admin.php:676 ../../Zotlabs/Module/Admin.php:1006
-msgid "ID"
-msgstr "ID"
-
-#: ../../Zotlabs/Module/Admin.php:676
-msgid "for channel"
-msgstr "por canal"
-
-#: ../../Zotlabs/Module/Admin.php:676
-msgid "on server"
-msgstr "en el servidor"
-
-#: ../../Zotlabs/Module/Admin.php:676 ../../Zotlabs/Module/Connections.php:270
-msgid "Status"
-msgstr "Estado"
-
-#: ../../Zotlabs/Module/Admin.php:678
-msgid "Server"
-msgstr "Servidor"
-
-#: ../../Zotlabs/Module/Admin.php:718 ../../include/widgets.php:1337
-msgid "Security"
-msgstr "Seguridad"
-
-#: ../../Zotlabs/Module/Admin.php:720
-msgid "Block public"
-msgstr "Bloquear páginas públicas"
-
-#: ../../Zotlabs/Module/Admin.php:720
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently authenticated."
-msgstr "Habilitar para impedir ver las páginas personales de este sitio a quien no esté actualmente autenticado."
-
-#: ../../Zotlabs/Module/Admin.php:721
-msgid "Allow communications only from these sites"
-msgstr "Permitir la comunicación solo desde estos sitios"
-
-#: ../../Zotlabs/Module/Admin.php:721
-msgid ""
-"One site per line. Leave empty to allow communication from anywhere by "
-"default"
-msgstr "Un sitio por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera"
-
-#: ../../Zotlabs/Module/Admin.php:722
-msgid "Block communications from these sites"
-msgstr "Bloquear la comunicación desde estos sitios"
-
-#: ../../Zotlabs/Module/Admin.php:723
-msgid "Allow communications only from these channels"
-msgstr "Permitir la comunicación solo desde estos canales"
-
-#: ../../Zotlabs/Module/Admin.php:723
-msgid ""
-"One channel (hash) per line. Leave empty to allow from any channel by "
-"default"
-msgstr "Un canal (hash) por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera"
-
-#: ../../Zotlabs/Module/Admin.php:724
-msgid "Block communications from these channels"
-msgstr "Bloquear la comunicación desde estos canales"
-
-#: ../../Zotlabs/Module/Admin.php:725
-msgid "Allow embedded HTML content only from these domains"
-msgstr "Permitir contenido con HTML incorporado solo desde estos dominios"
-
-#: ../../Zotlabs/Module/Admin.php:725
-msgid "One site per line. Leave empty to allow from any site by default"
-msgstr "Un sitio por línea. Dejar en blanco para permitirlo por defecto desde cualquier sitio"
-
-#: ../../Zotlabs/Module/Admin.php:726
-msgid "Block embedded HTML from these domains"
-msgstr "Bloquear contenido con HTML incorporado desde estos dominios"
-
-#: ../../Zotlabs/Module/Admin.php:743
-msgid "Update has been marked successful"
-msgstr "La actualización ha sido marcada como exitosa"
-
-#: ../../Zotlabs/Module/Admin.php:753
-#, php-format
-msgid "Executing %s failed. Check system logs."
-msgstr "La ejecución de %s ha fallado. Mirar en los informes del sistema."
-
-#: ../../Zotlabs/Module/Admin.php:756
-#, php-format
-msgid "Update %s was successfully applied."
-msgstr "La actualización de %s se ha realizado exitosamente."
-
-#: ../../Zotlabs/Module/Admin.php:760
-#, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
-msgstr "La actualización de %s no ha devuelto ningún estado. No se sabe si ha tenido éxito."
-
-#: ../../Zotlabs/Module/Admin.php:763
-#, php-format
-msgid "Update function %s could not be found."
-msgstr "No se encuentra la función de actualización de %s."
-
-#: ../../Zotlabs/Module/Admin.php:779
-msgid "No failed updates."
-msgstr "No ha fallado ninguna actualización."
-
-#: ../../Zotlabs/Module/Admin.php:783
-msgid "Failed Updates"
-msgstr "Han fallado las actualizaciones"
-
-#: ../../Zotlabs/Module/Admin.php:785
-msgid "Mark success (if update was manually applied)"
-msgstr "Marcar como exitosa (si la actualización se ha hecho manualmente)"
-
-#: ../../Zotlabs/Module/Admin.php:786
-msgid "Attempt to execute this update step automatically"
-msgstr "Intentar ejecutar este paso de actualización automáticamente"
-
-#: ../../Zotlabs/Module/Admin.php:817
-msgid "Queue Statistics"
-msgstr "Estadísticas de la cola"
-
-#: ../../Zotlabs/Module/Admin.php:818
-msgid "Total Entries"
-msgstr "Total de entradas"
-
-#: ../../Zotlabs/Module/Admin.php:819
-msgid "Priority"
-msgstr "Prioridad"
-
-#: ../../Zotlabs/Module/Admin.php:820
-msgid "Destination URL"
-msgstr "Dirección de destino"
-
-#: ../../Zotlabs/Module/Admin.php:821
-msgid "Mark hub permanently offline"
-msgstr "Marcar el servidor como permanentemente fuera de línea"
-
-#: ../../Zotlabs/Module/Admin.php:822
-msgid "Empty queue for this hub"
-msgstr "Vaciar la cola para este servidor"
-
-#: ../../Zotlabs/Module/Admin.php:823
-msgid "Last known contact"
-msgstr "Último contacto conocido"
-
-#: ../../Zotlabs/Module/Admin.php:859
-#, php-format
-msgid "%s account blocked/unblocked"
-msgid_plural "%s account blocked/unblocked"
-msgstr[0] "%s cuenta bloqueada/desbloqueada"
-msgstr[1] "%s cuenta bloqueada/desbloqueada"
-
-#: ../../Zotlabs/Module/Admin.php:867
-#, php-format
-msgid "%s account deleted"
-msgid_plural "%s accounts deleted"
-msgstr[0] "%s cuentas eliminadas"
-msgstr[1] "%s cuentas eliminadas"
-
-#: ../../Zotlabs/Module/Admin.php:903
-msgid "Account not found"
-msgstr "Cuenta no encontrada"
-
-#: ../../Zotlabs/Module/Admin.php:915
-#, php-format
-msgid "Account '%s' deleted"
-msgstr "La cuenta '%s' ha sido eliminada"
-
-#: ../../Zotlabs/Module/Admin.php:923
-#, php-format
-msgid "Account '%s' blocked"
-msgstr "La cuenta '%s' ha sido bloqueada"
-
-#: ../../Zotlabs/Module/Admin.php:931
-#, php-format
-msgid "Account '%s' unblocked"
-msgstr "La cuenta '%s' ha sido desbloqueada"
-
-#: ../../Zotlabs/Module/Admin.php:993 ../../Zotlabs/Module/Admin.php:1005
-msgid "Users"
-msgstr "Usuarios"
-
-#: ../../Zotlabs/Module/Admin.php:995 ../../Zotlabs/Module/Admin.php:1159
-msgid "select all"
-msgstr "seleccionar todo"
-
-#: ../../Zotlabs/Module/Admin.php:996
-msgid "User registrations waiting for confirm"
-msgstr "Registros de usuario en espera de aprobación"
-
-#: ../../Zotlabs/Module/Admin.php:997
-msgid "Request date"
-msgstr "Fecha de solicitud"
-
-#: ../../Zotlabs/Module/Admin.php:997 ../../Zotlabs/Module/Admin.php:1006
-#: ../../Zotlabs/Module/Id.php:17 ../../Zotlabs/Module/Id.php:18
-#: ../../include/contact_selectors.php:81 ../../boot.php:1617
-msgid "Email"
-msgstr "Correo electrónico"
-
-#: ../../Zotlabs/Module/Admin.php:998
-msgid "No registrations."
-msgstr "Sin registros."
-
-#: ../../Zotlabs/Module/Admin.php:999 ../../Zotlabs/Module/Connections.php:275
-msgid "Approve"
-msgstr "Aprobar"
-
-#: ../../Zotlabs/Module/Admin.php:1000
-msgid "Deny"
-msgstr "Rechazar"
-
-#: ../../Zotlabs/Module/Admin.php:1002 ../../Zotlabs/Module/Connedit.php:541
-msgid "Block"
-msgstr "Bloquear"
-
-#: ../../Zotlabs/Module/Admin.php:1003 ../../Zotlabs/Module/Connedit.php:541
-msgid "Unblock"
-msgstr "Desbloquear"
-
-#: ../../Zotlabs/Module/Admin.php:1006 ../../include/group.php:267
-msgid "All Channels"
-msgstr "Todos los canales"
-
-#: ../../Zotlabs/Module/Admin.php:1006
-msgid "Register date"
-msgstr "Fecha de registro"
-
-#: ../../Zotlabs/Module/Admin.php:1006
-msgid "Last login"
-msgstr "Último acceso"
-
-#: ../../Zotlabs/Module/Admin.php:1006
-msgid "Expires"
-msgstr "Caduca"
-
-#: ../../Zotlabs/Module/Admin.php:1006
-msgid "Service Class"
-msgstr "Clase de servicio"
-
-#: ../../Zotlabs/Module/Admin.php:1008
-msgid ""
-"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
-" on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "¡Las cuentas seleccionadas van a ser eliminadas!\\n\\n¡Todo lo que estas cuentas han publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?"
-
-#: ../../Zotlabs/Module/Admin.php:1009
-msgid ""
-"The account {0} will be deleted!\\n\\nEverything this account has posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "¡La cuenta {0} va a ser eliminada!\\n\\n¡Todo lo que esta cuenta ha publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?"
-
-#: ../../Zotlabs/Module/Admin.php:1045
-#, php-format
-msgid "%s channel censored/uncensored"
-msgid_plural "%s channels censored/uncensored"
-msgstr[0] "%s canales censurados/no censurados"
-msgstr[1] "%s canales censurados/no censurados"
-
-#: ../../Zotlabs/Module/Admin.php:1054
-#, php-format
-msgid "%s channel code allowed/disallowed"
-msgid_plural "%s channels code allowed/disallowed"
-msgstr[0] "%s código permitido/no permitido al canal"
-msgstr[1] "%s código permitido/no permitido al canal"
-
-#: ../../Zotlabs/Module/Admin.php:1061
-#, php-format
-msgid "%s channel deleted"
-msgid_plural "%s channels deleted"
-msgstr[0] "%s canales eliminados"
-msgstr[1] "%s canales eliminados"
-
-#: ../../Zotlabs/Module/Admin.php:1081
-msgid "Channel not found"
-msgstr "Canal no encontrado"
-
-#: ../../Zotlabs/Module/Admin.php:1092
-#, php-format
-msgid "Channel '%s' deleted"
-msgstr "Canal '%s' eliminado"
-
-#: ../../Zotlabs/Module/Admin.php:1104
-#, php-format
-msgid "Channel '%s' censored"
-msgstr "Canal '%s' censurado"
-
-#: ../../Zotlabs/Module/Admin.php:1104
-#, php-format
-msgid "Channel '%s' uncensored"
-msgstr "Canal '%s' no censurado"
-
-#: ../../Zotlabs/Module/Admin.php:1115
-#, php-format
-msgid "Channel '%s' code allowed"
-msgstr "Código permitido al canal '%s'"
-
-#: ../../Zotlabs/Module/Admin.php:1115
-#, php-format
-msgid "Channel '%s' code disallowed"
-msgstr "Código no permitido al canal '%s'"
-
-#: ../../Zotlabs/Module/Admin.php:1157 ../../include/widgets.php:1336
-msgid "Channels"
-msgstr "Canales"
-
-#: ../../Zotlabs/Module/Admin.php:1161
-msgid "Censor"
-msgstr "Censurar"
-
-#: ../../Zotlabs/Module/Admin.php:1162
-msgid "Uncensor"
-msgstr "No censurar"
-
-#: ../../Zotlabs/Module/Admin.php:1163
-msgid "Allow Code"
-msgstr "Permitir código"
-
-#: ../../Zotlabs/Module/Admin.php:1164
-msgid "Disallow Code"
-msgstr "No permitir código"
-
-#: ../../Zotlabs/Module/Admin.php:1165 ../../include/conversation.php:1629
-msgid "Channel"
-msgstr "Canal"
-
-#: ../../Zotlabs/Module/Admin.php:1166
-msgid "UID"
-msgstr "UID"
-
-#: ../../Zotlabs/Module/Admin.php:1166 ../../Zotlabs/Module/Locs.php:118
-#: ../../Zotlabs/Module/Profiles.php:469
-msgid "Address"
-msgstr "Dirección"
-
-#: ../../Zotlabs/Module/Admin.php:1168
-msgid ""
-"Selected channels will be deleted!\\n\\nEverything that was posted in these "
-"channels on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Los canales seleccionados se eliminarán!\\n\\nTodo lo publicado por estos canales en este sitio se borrarán definitivamente!\\n\\n¿Está seguro de querer hacerlo?"
-
-#: ../../Zotlabs/Module/Admin.php:1169
-msgid ""
-"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
-"channel on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "El canal {0} va a ser eliminado!\\n\\nTodo lo publicado por el canal en este sitio se borrará definitivamente!\\n\\n¿Está seguro de querer hacerlo?"
-
-#: ../../Zotlabs/Module/Admin.php:1226
-#, php-format
-msgid "Plugin %s disabled."
-msgstr "Extensión %s desactivada."
-
-#: ../../Zotlabs/Module/Admin.php:1230
-#, php-format
-msgid "Plugin %s enabled."
-msgstr "Extensión %s activada."
-
-#: ../../Zotlabs/Module/Admin.php:1240 ../../Zotlabs/Module/Admin.php:1466
-msgid "Disable"
-msgstr "Desactivar"
-
-#: ../../Zotlabs/Module/Admin.php:1243 ../../Zotlabs/Module/Admin.php:1468
-msgid "Enable"
-msgstr "Activar"
-
-#: ../../Zotlabs/Module/Admin.php:1272 ../../Zotlabs/Module/Admin.php:1333
-#: ../../include/widgets.php:1339
-msgid "Plugins"
-msgstr "Extensiones"
-
-#: ../../Zotlabs/Module/Admin.php:1273 ../../Zotlabs/Module/Admin.php:1495
-msgid "Toggle"
-msgstr "Cambiar"
-
-#: ../../Zotlabs/Module/Admin.php:1274 ../../Zotlabs/Module/Admin.php:1496
-#: ../../include/apps.php:134 ../../include/widgets.php:589
-#: ../../include/nav.php:208
-msgid "Settings"
-msgstr "Ajustes"
-
-#: ../../Zotlabs/Module/Admin.php:1281 ../../Zotlabs/Module/Admin.php:1505
-msgid "Author: "
-msgstr "Autor:"
-
-#: ../../Zotlabs/Module/Admin.php:1282 ../../Zotlabs/Module/Admin.php:1506
-msgid "Maintainer: "
-msgstr "Mantenedor:"
-
-#: ../../Zotlabs/Module/Admin.php:1283
-msgid "Minimum project version: "
-msgstr "Versión mínima del proyecto:"
-
-#: ../../Zotlabs/Module/Admin.php:1284
-msgid "Maximum project version: "
-msgstr "Versión máxima del proyecto:"
-
-#: ../../Zotlabs/Module/Admin.php:1285
-msgid "Minimum PHP version: "
-msgstr "Versión mínima de PHP:"
-
-#: ../../Zotlabs/Module/Admin.php:1286
-msgid "Requires: "
-msgstr "Se requiere:"
-
-#: ../../Zotlabs/Module/Admin.php:1287 ../../Zotlabs/Module/Admin.php:1338
-msgid "Disabled - version incompatibility"
-msgstr "Deshabilitado - versiones incompatibles"
-
-#: ../../Zotlabs/Module/Admin.php:1431
-msgid "No themes found."
-msgstr "No se han encontrado temas."
-
-#: ../../Zotlabs/Module/Admin.php:1487
-msgid "Screenshot"
-msgstr "Instantánea de pantalla"
-
-#: ../../Zotlabs/Module/Admin.php:1494 ../../Zotlabs/Module/Admin.php:1528
-#: ../../include/widgets.php:1340
-msgid "Themes"
-msgstr "Temas"
-
-#: ../../Zotlabs/Module/Admin.php:1533
-msgid "[Experimental]"
-msgstr "[Experimental]"
-
-#: ../../Zotlabs/Module/Admin.php:1534
-msgid "[Unsupported]"
-msgstr "[No soportado]"
-
-#: ../../Zotlabs/Module/Admin.php:1558
-msgid "Log settings updated."
-msgstr "Actualizado el informe de configuraciones."
-
-#: ../../Zotlabs/Module/Admin.php:1613 ../../include/widgets.php:1361
-#: ../../include/widgets.php:1371
-msgid "Logs"
-msgstr "Informes"
-
-#: ../../Zotlabs/Module/Admin.php:1615
-msgid "Clear"
-msgstr "Vaciar"
-
-#: ../../Zotlabs/Module/Admin.php:1621
-msgid "Debugging"
-msgstr "Depuración"
-
-#: ../../Zotlabs/Module/Admin.php:1622
-msgid "Log file"
-msgstr "Fichero de informe"
-
-#: ../../Zotlabs/Module/Admin.php:1622
-msgid ""
-"Must be writable by web server. Relative to your Red top-level directory."
-msgstr "Debe tener permisos de escritura por el servidor web. La ruta es relativa al directorio de instalación de Hubzilla."
-
-#: ../../Zotlabs/Module/Admin.php:1623
-msgid "Log level"
-msgstr "Nivel de depuración"
-
-#: ../../Zotlabs/Module/Admin.php:1690
-msgid "New Profile Field"
-msgstr "Nuevo campo en el perfil"
-
-#: ../../Zotlabs/Module/Admin.php:1691 ../../Zotlabs/Module/Admin.php:1711
-msgid "Field nickname"
-msgstr "Alias del campo"
-
-#: ../../Zotlabs/Module/Admin.php:1691 ../../Zotlabs/Module/Admin.php:1711
-msgid "System name of field"
-msgstr "Nombre del campo en el sistema"
-
-#: ../../Zotlabs/Module/Admin.php:1692 ../../Zotlabs/Module/Admin.php:1712
-msgid "Input type"
-msgstr "Tipo de entrada"
-
-#: ../../Zotlabs/Module/Admin.php:1693 ../../Zotlabs/Module/Admin.php:1713
-msgid "Field Name"
-msgstr "Nombre del campo"
-
-#: ../../Zotlabs/Module/Admin.php:1693 ../../Zotlabs/Module/Admin.php:1713
-msgid "Label on profile pages"
-msgstr "Etiqueta a mostrar en la página del perfil"
-
-#: ../../Zotlabs/Module/Admin.php:1694 ../../Zotlabs/Module/Admin.php:1714
-msgid "Help text"
-msgstr "Texto de ayuda"
-
-#: ../../Zotlabs/Module/Admin.php:1694 ../../Zotlabs/Module/Admin.php:1714
-msgid "Additional info (optional)"
-msgstr "Información adicional (opcional)"
-
-#: ../../Zotlabs/Module/Admin.php:1695 ../../Zotlabs/Module/Admin.php:1715
-#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Rbmark.php:32
-#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/text.php:905
-#: ../../include/text.php:917 ../../include/widgets.php:201
-msgid "Save"
-msgstr "Guardar"
-
-#: ../../Zotlabs/Module/Admin.php:1704
-msgid "Field definition not found"
-msgstr "Definición del campo no encontrada"
-
-#: ../../Zotlabs/Module/Admin.php:1710
-msgid "Edit Profile Field"
-msgstr "Modificar el campo del perfil"
-
-#: ../../Zotlabs/Module/Admin.php:1768 ../../include/widgets.php:1342
-msgid "Profile Fields"
-msgstr "Campos del perfil"
-
-#: ../../Zotlabs/Module/Admin.php:1769
-msgid "Basic Profile Fields"
-msgstr "Campos básicos del perfil"
-
-#: ../../Zotlabs/Module/Admin.php:1770
-msgid "Advanced Profile Fields"
-msgstr "Campos avanzados del perfil"
-
-#: ../../Zotlabs/Module/Admin.php:1770
-msgid "(In addition to basic fields)"
-msgstr "(Además de los campos básicos)"
-
-#: ../../Zotlabs/Module/Admin.php:1772
-msgid "All available fields"
-msgstr "Todos los campos disponibles"
-
-#: ../../Zotlabs/Module/Admin.php:1773
-msgid "Custom Fields"
-msgstr "Campos personalizados"
-
-#: ../../Zotlabs/Module/Admin.php:1777
-msgid "Create Custom Field"
-msgstr "Crear un campo personalizado"
-
-#: ../../Zotlabs/Module/Api.php:61 ../../Zotlabs/Module/Api.php:85
-msgid "Authorize application connection"
-msgstr "Autorizar una conexión de aplicación"
-
-#: ../../Zotlabs/Module/Api.php:62
-msgid "Return to your app and insert this Securty Code:"
-msgstr "Volver a su aplicación e introducir este código de seguridad:"
-
-#: ../../Zotlabs/Module/Api.php:72
-msgid "Please login to continue."
-msgstr "Por favor inicie sesión para continuar."
-
-#: ../../Zotlabs/Module/Api.php:87
-msgid ""
-"Do you want to authorize this application to access your posts and contacts,"
-" and/or create new posts for you?"
-msgstr "¿Desea autorizar a esta aplicación a acceder a sus publicaciones y contactos, y/o crear nuevas publicaciones por usted?"
-
-#: ../../Zotlabs/Module/Appman.php:32 ../../Zotlabs/Module/Appman.php:48
-msgid "App installed."
-msgstr "Aplicación instalada."
-
-#: ../../Zotlabs/Module/Appman.php:41
-msgid "Malformed app."
-msgstr "Aplicación con errores"
-
-#: ../../Zotlabs/Module/Appman.php:84
-msgid "Embed code"
-msgstr "Código incorporado"
-
-#: ../../Zotlabs/Module/Appman.php:90
-msgid "Edit App"
-msgstr "Modificar la aplicación"
-
-#: ../../Zotlabs/Module/Appman.php:90
-msgid "Create App"
-msgstr "Crear una aplicación"
-
-#: ../../Zotlabs/Module/Appman.php:95
-msgid "Name of app"
-msgstr "Nombre de la aplicación"
-
-#: ../../Zotlabs/Module/Appman.php:95 ../../Zotlabs/Module/Appman.php:96
-#: ../../Zotlabs/Module/Events.php:448 ../../Zotlabs/Module/Events.php:453
-#: ../../Zotlabs/Module/Profiles.php:713 ../../Zotlabs/Module/Profiles.php:717
-#: ../../include/datetime.php:246
-msgid "Required"
-msgstr "Obligatorio"
-
-#: ../../Zotlabs/Module/Appman.php:96
-msgid "Location (URL) of app"
-msgstr "Dirección (URL) de la aplicación"
-
-#: ../../Zotlabs/Module/Appman.php:97 ../../Zotlabs/Module/Events.php:461
-#: ../../Zotlabs/Module/Rbmark.php:101
-msgid "Description"
-msgstr "Descripción"
-
-#: ../../Zotlabs/Module/Appman.php:98
-msgid "Photo icon URL"
-msgstr "Dirección del icono"
-
-#: ../../Zotlabs/Module/Appman.php:98
-msgid "80 x 80 pixels - optional"
-msgstr "80 x 80 pixels - opcional"
-
-#: ../../Zotlabs/Module/Appman.php:99
-msgid "Version ID"
-msgstr "Versión"
-
-#: ../../Zotlabs/Module/Appman.php:100
-msgid "Price of app"
-msgstr "Precio de la aplicación"
-
-#: ../../Zotlabs/Module/Appman.php:101
-msgid "Location (URL) to purchase app"
-msgstr "Dirección (URL) donde adquirir la aplicación"
-
-#: ../../Zotlabs/Module/Apps.php:40 ../../include/widgets.php:102
-#: ../../include/nav.php:163
-msgid "Apps"
-msgstr "Aplicaciones"
-
-#: ../../Zotlabs/Module/Attach.php:13
-msgid "Item not available."
-msgstr "Elemento no disponible"
-
-#: ../../Zotlabs/Module/Block.php:31 ../../Zotlabs/Module/Page.php:40
-msgid "Invalid item."
-msgstr "Elemento no válido."
-
-#: ../../Zotlabs/Module/Block.php:43 ../../Zotlabs/Module/Cal.php:65
-#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Wall_upload.php:33
-msgid "Channel not found."
-msgstr "Canal no encontrado."
-
-#: ../../Zotlabs/Module/Blocks.php:99 ../../Zotlabs/Module/Blocks.php:154
+#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:152
+#: ../../Zotlabs/Module/Editblock.php:108
msgid "Block Name"
msgstr "Nombre del bloque"
-#: ../../Zotlabs/Module/Blocks.php:153 ../../include/text.php:2251
+#: ../../Zotlabs/Module/Blocks.php:151 ../../include/text.php:2265
msgid "Blocks"
msgstr "Bloques"
-#: ../../Zotlabs/Module/Blocks.php:155
+#: ../../Zotlabs/Module/Blocks.php:153
msgid "Block Title"
msgstr "Título del bloque"
-#: ../../Zotlabs/Module/Blocks.php:156 ../../Zotlabs/Module/Layouts.php:186
-#: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Webpages.php:200
+#: ../../Zotlabs/Module/Blocks.php:154 ../../Zotlabs/Module/Layouts.php:188
+#: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Webpages.php:198
#: ../../include/page_widgets.php:44
msgid "Created"
msgstr "Creado"
-#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/Layouts.php:187
-#: ../../Zotlabs/Module/Menu.php:115 ../../Zotlabs/Module/Webpages.php:201
+#: ../../Zotlabs/Module/Blocks.php:155 ../../Zotlabs/Module/Layouts.php:189
+#: ../../Zotlabs/Module/Menu.php:115 ../../Zotlabs/Module/Webpages.php:199
#: ../../include/page_widgets.php:45
msgid "Edited"
msgstr "Editado"
-#: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Layouts.php:189
-#: ../../Zotlabs/Module/Photos.php:1071 ../../Zotlabs/Module/Webpages.php:190
-#: ../../include/conversation.php:1209
+#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:191
+#: ../../Zotlabs/Module/Photos.php:1072 ../../Zotlabs/Module/Webpages.php:188
+#: ../../include/conversation.php:1208
msgid "Share"
msgstr "Compartir"
-#: ../../Zotlabs/Module/Blocks.php:165 ../../Zotlabs/Module/Layouts.php:193
-#: ../../Zotlabs/Module/Pubsites.php:46 ../../Zotlabs/Module/Webpages.php:195
+#: ../../Zotlabs/Module/Blocks.php:163 ../../Zotlabs/Module/Layouts.php:195
+#: ../../Zotlabs/Module/Pubsites.php:47 ../../Zotlabs/Module/Webpages.php:193
#: ../../include/page_widgets.php:39
msgid "View"
msgstr "Ver"
-#: ../../Zotlabs/Module/Bookmarks.php:53
-msgid "Bookmark added"
-msgstr "Marcador añadido"
-
-#: ../../Zotlabs/Module/Bookmarks.php:75
-msgid "My Bookmarks"
-msgstr "Mis marcadores"
-
-#: ../../Zotlabs/Module/Bookmarks.php:86
-msgid "My Connections Bookmarks"
-msgstr "Marcadores de mis conexiones"
-
-#: ../../Zotlabs/Module/Cal.php:41 ../../Zotlabs/Module/Photos.php:45
-#: ../../include/js_strings.php:13
-msgid "everybody"
-msgstr "cualquiera"
+#: ../../Zotlabs/Module/Cal.php:62 ../../Zotlabs/Module/Block.php:43
+#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Wall_upload.php:33
+msgid "Channel not found."
+msgstr "Canal no encontrado."
-#: ../../Zotlabs/Module/Cal.php:72
+#: ../../Zotlabs/Module/Cal.php:69
msgid "Permissions denied."
msgstr "Permisos denegados."
-#: ../../Zotlabs/Module/Cal.php:262 ../../Zotlabs/Module/Events.php:585
+#: ../../Zotlabs/Module/Cal.php:259 ../../Zotlabs/Module/Events.php:588
msgid "l, F j"
msgstr "l j F"
-#: ../../Zotlabs/Module/Cal.php:311 ../../Zotlabs/Module/Events.php:634
-#: ../../include/text.php:1714
+#: ../../Zotlabs/Module/Cal.php:308 ../../Zotlabs/Module/Events.php:637
+#: ../../include/text.php:1732
msgid "Link to Source"
msgstr "Enlazar con la entrada en su ubicación original"
-#: ../../Zotlabs/Module/Cal.php:334 ../../Zotlabs/Module/Events.php:662
+#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:665
msgid "Edit Event"
msgstr "Editar el evento"
-#: ../../Zotlabs/Module/Cal.php:334 ../../Zotlabs/Module/Events.php:662
+#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:665
msgid "Create Event"
msgstr "Crear un evento"
-#: ../../Zotlabs/Module/Cal.php:335 ../../Zotlabs/Module/Cal.php:342
-#: ../../Zotlabs/Module/Events.php:663 ../../Zotlabs/Module/Events.php:670
-#: ../../Zotlabs/Module/Photos.php:948
+#: ../../Zotlabs/Module/Cal.php:332 ../../Zotlabs/Module/Cal.php:339
+#: ../../Zotlabs/Module/Events.php:666 ../../Zotlabs/Module/Events.php:673
+#: ../../Zotlabs/Module/Photos.php:949
msgid "Previous"
msgstr "Anterior"
-#: ../../Zotlabs/Module/Cal.php:336 ../../Zotlabs/Module/Cal.php:343
-#: ../../Zotlabs/Module/Events.php:664 ../../Zotlabs/Module/Events.php:671
-#: ../../Zotlabs/Module/Photos.php:957 ../../Zotlabs/Module/Setup.php:290
+#: ../../Zotlabs/Module/Cal.php:333 ../../Zotlabs/Module/Cal.php:340
+#: ../../Zotlabs/Module/Events.php:667 ../../Zotlabs/Module/Events.php:674
+#: ../../Zotlabs/Module/Photos.php:958 ../../Zotlabs/Module/Setup.php:267
msgid "Next"
msgstr "Siguiente"
-#: ../../Zotlabs/Module/Cal.php:337 ../../Zotlabs/Module/Events.php:665
-#: ../../include/widgets.php:706
+#: ../../Zotlabs/Module/Cal.php:334 ../../Zotlabs/Module/Events.php:668
+#: ../../include/widgets.php:755
msgid "Export"
msgstr "Exportar"
-#: ../../Zotlabs/Module/Cal.php:340 ../../Zotlabs/Module/Events.php:668
-#: ../../include/widgets.php:707
+#: ../../Zotlabs/Module/Cal.php:337 ../../Zotlabs/Module/Events.php:671
+#: ../../include/widgets.php:756
msgid "Import"
msgstr "Importar"
-#: ../../Zotlabs/Module/Cal.php:344 ../../Zotlabs/Module/Events.php:672
+#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Chat.php:196
+#: ../../Zotlabs/Module/Chat.php:238 ../../Zotlabs/Module/Connect.php:98
+#: ../../Zotlabs/Module/Connedit.php:731 ../../Zotlabs/Module/Events.php:475
+#: ../../Zotlabs/Module/Events.php:672 ../../Zotlabs/Module/Group.php:85
+#: ../../Zotlabs/Module/Filestorage.php:162
+#: ../../Zotlabs/Module/Import.php:550
+#: ../../Zotlabs/Module/Import_items.php:120
+#: ../../Zotlabs/Module/Invite.php:146 ../../Zotlabs/Module/Locs.php:121
+#: ../../Zotlabs/Module/Mail.php:378 ../../Zotlabs/Module/Mood.php:139
+#: ../../Zotlabs/Module/Mitem.php:235 ../../Zotlabs/Module/Photos.php:677
+#: ../../Zotlabs/Module/Photos.php:1052 ../../Zotlabs/Module/Photos.php:1092
+#: ../../Zotlabs/Module/Photos.php:1210 ../../Zotlabs/Module/Pconfig.php:107
+#: ../../Zotlabs/Module/Pdledit.php:66 ../../Zotlabs/Module/Poke.php:186
+#: ../../Zotlabs/Module/Profiles.php:687 ../../Zotlabs/Module/Rate.php:170
+#: ../../Zotlabs/Module/Admin.php:492 ../../Zotlabs/Module/Admin.php:688
+#: ../../Zotlabs/Module/Admin.php:771 ../../Zotlabs/Module/Admin.php:1032
+#: ../../Zotlabs/Module/Admin.php:1211 ../../Zotlabs/Module/Admin.php:1421
+#: ../../Zotlabs/Module/Admin.php:1648 ../../Zotlabs/Module/Admin.php:1733
+#: ../../Zotlabs/Module/Admin.php:2116 ../../Zotlabs/Module/Appman.php:126
+#: ../../Zotlabs/Module/Settings.php:590 ../../Zotlabs/Module/Settings.php:703
+#: ../../Zotlabs/Module/Settings.php:731 ../../Zotlabs/Module/Settings.php:754
+#: ../../Zotlabs/Module/Settings.php:842
+#: ../../Zotlabs/Module/Settings.php:1034 ../../Zotlabs/Module/Setup.php:312
+#: ../../Zotlabs/Module/Setup.php:353 ../../Zotlabs/Module/Sources.php:114
+#: ../../Zotlabs/Module/Sources.php:149 ../../Zotlabs/Module/Thing.php:316
+#: ../../Zotlabs/Module/Thing.php:362 ../../Zotlabs/Module/Xchan.php:15
+#: ../../Zotlabs/Lib/ThreadItem.php:710 ../../include/widgets.php:757
+#: ../../include/widgets.php:769 ../../include/js_strings.php:22
+#: ../../view/theme/redbasic/php/config.php:99
+msgid "Submit"
+msgstr "Enviar"
+
+#: ../../Zotlabs/Module/Cal.php:341 ../../Zotlabs/Module/Events.php:675
msgid "Today"
msgstr "Hoy"
-#: ../../Zotlabs/Module/Channel.php:28 ../../Zotlabs/Module/Chat.php:23
+#: ../../Zotlabs/Module/Channel.php:29 ../../Zotlabs/Module/Chat.php:25
msgid "You must be logged in to see this page."
msgstr "Debe haber iniciado sesión para poder ver esta página."
-#: ../../Zotlabs/Module/Channel.php:40
+#: ../../Zotlabs/Module/Channel.php:41
msgid "Posts and comments"
msgstr "Publicaciones y comentarios"
-#: ../../Zotlabs/Module/Channel.php:41
+#: ../../Zotlabs/Module/Channel.php:42
msgid "Only posts"
msgstr "Solo publicaciones"
-#: ../../Zotlabs/Module/Channel.php:101
+#: ../../Zotlabs/Module/Channel.php:102
msgid "Insufficient permissions. Request redirected to profile page."
msgstr "Permisos insuficientes. Petición redirigida a la página del perfil."
-#: ../../Zotlabs/Module/Channel.php:135 ../../Zotlabs/Module/Network.php:173
-#: ../../Zotlabs/Module/Rpost.php:118
-msgid "Public"
-msgstr "Público"
-
-#: ../../Zotlabs/Module/Chat.php:179
+#: ../../Zotlabs/Module/Chat.php:181
msgid "Room not found"
msgstr "Sala no encontrada"
-#: ../../Zotlabs/Module/Chat.php:195
+#: ../../Zotlabs/Module/Chat.php:197
msgid "Leave Room"
msgstr "Abandonar la sala"
-#: ../../Zotlabs/Module/Chat.php:196
+#: ../../Zotlabs/Module/Chat.php:198
msgid "Delete Room"
msgstr "Eliminar esta sala"
-#: ../../Zotlabs/Module/Chat.php:197
+#: ../../Zotlabs/Module/Chat.php:199
msgid "I am away right now"
msgstr "Estoy ausente momentáneamente"
-#: ../../Zotlabs/Module/Chat.php:198
+#: ../../Zotlabs/Module/Chat.php:200
msgid "I am online"
msgstr "Estoy conectado/a"
-#: ../../Zotlabs/Module/Chat.php:200
+#: ../../Zotlabs/Module/Chat.php:202
msgid "Bookmark this room"
msgstr "Añadir esta sala a Marcadores"
-#: ../../Zotlabs/Module/Chat.php:203 ../../Zotlabs/Module/Mail.php:206
-#: ../../Zotlabs/Module/Mail.php:320 ../../include/conversation.php:1170
+#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Mail.php:205
+#: ../../Zotlabs/Module/Mail.php:314 ../../include/conversation.php:1176
msgid "Please enter a link URL:"
msgstr "Por favor, introduzca la dirección del enlace:"
-#: ../../Zotlabs/Module/Chat.php:204 ../../Zotlabs/Module/Editpost.php:163
-#: ../../Zotlabs/Module/Mail.php:259 ../../Zotlabs/Module/Mail.php:389
-#: ../../include/ItemObject.php:715 ../../include/conversation.php:1274
+#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Module/Mail.php:258
+#: ../../Zotlabs/Module/Mail.php:383 ../../Zotlabs/Lib/ThreadItem.php:722
+#: ../../include/conversation.php:1256
msgid "Encrypt text"
msgstr "Cifrar texto"
-#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Editblock.php:148
-#: ../../Zotlabs/Module/Editlayout.php:147
-#: ../../Zotlabs/Module/Editpost.php:126
-#: ../../Zotlabs/Module/Editwebpage.php:188 ../../Zotlabs/Module/Mail.php:253
-#: ../../Zotlabs/Module/Mail.php:383 ../../include/conversation.php:1225
+#: ../../Zotlabs/Module/Chat.php:207 ../../Zotlabs/Module/Editblock.php:111
+#: ../../Zotlabs/Module/Editwebpage.php:147 ../../Zotlabs/Module/Mail.php:252
+#: ../../Zotlabs/Module/Mail.php:377 ../../include/conversation.php:1143
msgid "Insert web link"
msgstr "Insertar enlace web"
-#: ../../Zotlabs/Module/Chat.php:216
+#: ../../Zotlabs/Module/Chat.php:218
msgid "Feature disabled."
msgstr "Funcionalidad deshabilitada."
-#: ../../Zotlabs/Module/Chat.php:230
+#: ../../Zotlabs/Module/Chat.php:232
msgid "New Chatroom"
msgstr "Nueva sala de chat"
-#: ../../Zotlabs/Module/Chat.php:231
+#: ../../Zotlabs/Module/Chat.php:233
msgid "Chatroom name"
msgstr "Nombre de la sala de chat"
-#: ../../Zotlabs/Module/Chat.php:232
+#: ../../Zotlabs/Module/Chat.php:234
msgid "Expiration of chats (minutes)"
msgstr "Caducidad de los mensajes en los chats (en minutos)"
-#: ../../Zotlabs/Module/Chat.php:233 ../../Zotlabs/Module/Filestorage.php:151
-#: ../../Zotlabs/Module/Photos.php:670 ../../Zotlabs/Module/Photos.php:1044
+#: ../../Zotlabs/Module/Chat.php:235 ../../Zotlabs/Module/Filestorage.php:153
+#: ../../Zotlabs/Module/Photos.php:671 ../../Zotlabs/Module/Photos.php:1045
#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:359
-#: ../../include/acl_selectors.php:251
+#: ../../include/acl_selectors.php:283
msgid "Permissions"
msgstr "Permisos"
-#: ../../Zotlabs/Module/Chat.php:244
+#: ../../Zotlabs/Module/Chat.php:246
#, php-format
msgid "%1$s's Chatrooms"
msgstr "Salas de chat de %1$s"
-#: ../../Zotlabs/Module/Chat.php:249
+#: ../../Zotlabs/Module/Chat.php:251
msgid "No chatrooms available"
msgstr "No hay salas de chat disponibles"
-#: ../../Zotlabs/Module/Chat.php:250 ../../Zotlabs/Module/Manage.php:141
-#: ../../Zotlabs/Module/Profiles.php:782
+#: ../../Zotlabs/Module/Chat.php:252 ../../Zotlabs/Module/Manage.php:143
+#: ../../Zotlabs/Module/Profiles.php:778
msgid "Create New"
msgstr "Crear"
-#: ../../Zotlabs/Module/Chat.php:253
+#: ../../Zotlabs/Module/Chat.php:255
msgid "Expiration"
msgstr "Caducidad"
-#: ../../Zotlabs/Module/Chat.php:254
+#: ../../Zotlabs/Module/Chat.php:256
msgid "min"
msgstr "min"
-#: ../../Zotlabs/Module/Chatsvc.php:115
+#: ../../Zotlabs/Module/Chatsvc.php:117
msgid "Away"
msgstr "Ausente"
-#: ../../Zotlabs/Module/Chatsvc.php:120
+#: ../../Zotlabs/Module/Chatsvc.php:122
msgid "Online"
msgstr "Conectado/a"
-#: ../../Zotlabs/Module/Common.php:14
-msgid "No channel."
-msgstr "Ningún canal."
+#: ../../Zotlabs/Module/Block.php:31 ../../Zotlabs/Module/Page.php:40
+msgid "Invalid item."
+msgstr "Elemento no válido."
-#: ../../Zotlabs/Module/Common.php:43
-msgid "Common connections"
-msgstr "Conexiones comunes"
+#: ../../Zotlabs/Module/Bookmarks.php:53
+msgid "Bookmark added"
+msgstr "Marcador añadido"
-#: ../../Zotlabs/Module/Common.php:48
-msgid "No connections in common."
-msgstr "Ninguna conexión en común."
+#: ../../Zotlabs/Module/Bookmarks.php:75
+msgid "My Bookmarks"
+msgstr "Mis marcadores"
+
+#: ../../Zotlabs/Module/Bookmarks.php:86
+msgid "My Connections Bookmarks"
+msgstr "Marcadores de mis conexiones"
-#: ../../Zotlabs/Module/Connect.php:60 ../../Zotlabs/Module/Connect.php:108
+#: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109
msgid "Continue"
msgstr "Continuar"
-#: ../../Zotlabs/Module/Connect.php:89
+#: ../../Zotlabs/Module/Connect.php:90
msgid "Premium Channel Setup"
msgstr "Configuración del canal premium"
-#: ../../Zotlabs/Module/Connect.php:91
+#: ../../Zotlabs/Module/Connect.php:92
msgid "Enable premium channel connection restrictions"
msgstr "Habilitar restricciones de conexión del canal premium"
-#: ../../Zotlabs/Module/Connect.php:92
+#: ../../Zotlabs/Module/Connect.php:93
msgid ""
"Please enter your restrictions or conditions, such as paypal receipt, usage "
"guidelines, etc."
msgstr "Por favor introduzca sus restricciones o condiciones, como recibo de paypal, normas de uso, etc."
-#: ../../Zotlabs/Module/Connect.php:94 ../../Zotlabs/Module/Connect.php:114
+#: ../../Zotlabs/Module/Connect.php:95 ../../Zotlabs/Module/Connect.php:115
msgid ""
"This channel may require additional steps or acknowledgement of the "
"following conditions prior to connecting:"
msgstr "Este canal puede requerir antes de conectar unos pasos adicionales o el conocimiento de las siguientes condiciones:"
-#: ../../Zotlabs/Module/Connect.php:95
+#: ../../Zotlabs/Module/Connect.php:96
msgid ""
"Potential connections will then see the following text before proceeding:"
msgstr "Las posibles conexiones verán, por tanto, el siguiente texto antes de proceder:"
-#: ../../Zotlabs/Module/Connect.php:96 ../../Zotlabs/Module/Connect.php:117
+#: ../../Zotlabs/Module/Connect.php:97 ../../Zotlabs/Module/Connect.php:118
msgid ""
"By continuing, I certify that I have complied with any instructions provided"
" on this page."
msgstr "Al continuar, certifico que he cumplido con todas las instrucciones proporcionadas en esta página."
-#: ../../Zotlabs/Module/Connect.php:105
+#: ../../Zotlabs/Module/Connect.php:106
msgid "(No specific instructions have been provided by the channel owner.)"
msgstr "(No ha sido proporcionada ninguna instrucción específica por el propietario del canal.)"
-#: ../../Zotlabs/Module/Connect.php:113
+#: ../../Zotlabs/Module/Connect.php:114
msgid "Restricted or Premium Channel"
msgstr "Canal premium o restringido"
-#: ../../Zotlabs/Module/Connections.php:56
-#: ../../Zotlabs/Module/Connections.php:161
-#: ../../Zotlabs/Module/Connections.php:242
-msgid "Blocked"
-msgstr "Bloqueadas"
-
-#: ../../Zotlabs/Module/Connections.php:61
-#: ../../Zotlabs/Module/Connections.php:168
-#: ../../Zotlabs/Module/Connections.php:241
-msgid "Ignored"
-msgstr "Ignoradas"
-
-#: ../../Zotlabs/Module/Connections.php:66
-#: ../../Zotlabs/Module/Connections.php:182
-#: ../../Zotlabs/Module/Connections.php:240
-msgid "Hidden"
-msgstr "Ocultas"
-
-#: ../../Zotlabs/Module/Connections.php:71
-#: ../../Zotlabs/Module/Connections.php:175
-#: ../../Zotlabs/Module/Connections.php:239
-msgid "Archived"
-msgstr "Archivadas"
-
-#: ../../Zotlabs/Module/Connections.php:76
-#: ../../Zotlabs/Module/Connections.php:86 ../../Zotlabs/Module/Menu.php:116
-#: ../../include/conversation.php:1553
-msgid "New"
-msgstr "Nuevas"
-
-#: ../../Zotlabs/Module/Connections.php:92
-#: ../../Zotlabs/Module/Connections.php:107
-#: ../../Zotlabs/Module/Connedit.php:597 ../../include/widgets.php:448
-msgid "All"
-msgstr "Todos/as"
-
-#: ../../Zotlabs/Module/Connections.php:138
-msgid "New Connections"
-msgstr "Nuevas conexiones"
-
-#: ../../Zotlabs/Module/Connections.php:141
-msgid "Show pending (new) connections"
-msgstr "Mostrar conexiones (nuevas) pendientes"
-
-#: ../../Zotlabs/Module/Connections.php:145
-#: ../../Zotlabs/Module/Profperm.php:144
-msgid "All Connections"
-msgstr "Todas las conexiones"
-
-#: ../../Zotlabs/Module/Connections.php:148
-msgid "Show all connections"
-msgstr "Mostrar todas las conexiones"
-
-#: ../../Zotlabs/Module/Connections.php:164
-msgid "Only show blocked connections"
-msgstr "Mostrar solo las conexiones bloqueadas"
-
-#: ../../Zotlabs/Module/Connections.php:171
-msgid "Only show ignored connections"
-msgstr "Mostrar solo conexiones ignoradas"
-
-#: ../../Zotlabs/Module/Connections.php:178
-msgid "Only show archived connections"
-msgstr "Mostrar solo las conexiones archivadas"
-
-#: ../../Zotlabs/Module/Connections.php:185
-msgid "Only show hidden connections"
-msgstr "Mostrar solo las conexiones ocultas"
-
-#: ../../Zotlabs/Module/Connections.php:238
-msgid "Pending approval"
-msgstr "Pendiente de aprobación"
-
-#: ../../Zotlabs/Module/Connections.php:254
-#, php-format
-msgid "%1$s [%2$s]"
-msgstr "%1$s [%2$s]"
-
-#: ../../Zotlabs/Module/Connections.php:255
-msgid "Edit connection"
-msgstr "Editar conexión"
-
-#: ../../Zotlabs/Module/Connections.php:256
-msgid "Delete connection"
-msgstr "Eliminar conexión"
-
-#: ../../Zotlabs/Module/Connections.php:265
-msgid "Channel address"
-msgstr "Dirección del canal"
-
-#: ../../Zotlabs/Module/Connections.php:267
-msgid "Network"
-msgstr "Red"
-
-#: ../../Zotlabs/Module/Connections.php:272
-msgid "Connected"
-msgstr "Conectado/a"
-
-#: ../../Zotlabs/Module/Connections.php:274
-msgid "Approve connection"
-msgstr "Aprobar esta conexión"
-
-#: ../../Zotlabs/Module/Connections.php:276
-msgid "Ignore connection"
-msgstr "Ignorar esta conexión"
-
-#: ../../Zotlabs/Module/Connections.php:277
-#: ../../Zotlabs/Module/Connedit.php:549
-#: ../../Zotlabs/Module/Notifications.php:55
-msgid "Ignore"
-msgstr "Ignorar"
-
-#: ../../Zotlabs/Module/Connections.php:278
-msgid "Recent activity"
-msgstr "Actividad reciente"
-
-#: ../../Zotlabs/Module/Connections.php:302 ../../include/text.php:834
-#: ../../include/nav.php:186
-msgid "Connections"
-msgstr "Conexiones"
-
-#: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44
-#: ../../include/text.php:904 ../../include/text.php:916
-#: ../../include/apps.php:147 ../../include/nav.php:165
-msgid "Search"
-msgstr "Buscar"
-
-#: ../../Zotlabs/Module/Connections.php:307
-msgid "Search your connections"
-msgstr "Buscar sus conexiones"
-
-#: ../../Zotlabs/Module/Connections.php:308
-msgid "Connections search"
-msgstr "Buscar conexiones"
-
-#: ../../Zotlabs/Module/Connections.php:309
-#: ../../Zotlabs/Module/Directory.php:388
-#: ../../Zotlabs/Module/Directory.php:393 ../../include/contact_widgets.php:26
-msgid "Find"
-msgstr "Encontrar"
-
#: ../../Zotlabs/Module/Connedit.php:80
msgid "Could not access contact record."
msgstr "No se ha podido acceder al registro de contacto."
@@ -1821,6 +577,37 @@ msgstr "Error al actualizar el registro de la conexión."
msgid "is now connected to"
msgstr "ahora está conectado/a"
+#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Connedit.php:654
+#: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:460
+#: ../../Zotlabs/Module/Events.php:469 ../../Zotlabs/Module/Api.php:89
+#: ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Menu.php:100
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
+#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Admin.php:459
+#: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707
+msgid "No"
+msgstr "No"
+
+#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Events.php:459
+#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:469
+#: ../../Zotlabs/Module/Api.php:88 ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Menu.php:100
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
+#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Admin.php:461
+#: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707
+msgid "Yes"
+msgstr "Sí"
+
#: ../../Zotlabs/Module/Connedit.php:411
msgid "Could not access address book record."
msgstr "No se pudo acceder al registro en su libreta de direcciones."
@@ -1835,240 +622,260 @@ msgstr "Recarga fallida - no se puede encontrar el canal en este momento."
msgid "Unable to set address book parameters."
msgstr "No ha sido posible establecer los parámetros de la libreta de direcciones."
-#: ../../Zotlabs/Module/Connedit.php:504
+#: ../../Zotlabs/Module/Connedit.php:503
msgid "Connection has been removed."
msgstr "La conexión ha sido eliminada."
-#: ../../Zotlabs/Module/Connedit.php:520 ../../include/conversation.php:959
-#: ../../include/nav.php:86
+#: ../../Zotlabs/Module/Connedit.php:519 ../../Zotlabs/Lib/Apps.php:219
+#: ../../include/nav.php:86 ../../include/conversation.php:954
msgid "View Profile"
msgstr "Ver el perfil"
-#: ../../Zotlabs/Module/Connedit.php:523
+#: ../../Zotlabs/Module/Connedit.php:522
#, php-format
msgid "View %s's profile"
msgstr "Ver el perfil de %s"
-#: ../../Zotlabs/Module/Connedit.php:527
+#: ../../Zotlabs/Module/Connedit.php:526
msgid "Refresh Permissions"
msgstr "Recargar los permisos"
-#: ../../Zotlabs/Module/Connedit.php:530
+#: ../../Zotlabs/Module/Connedit.php:529
msgid "Fetch updated permissions"
msgstr "Obtener los permisos actualizados"
-#: ../../Zotlabs/Module/Connedit.php:534
+#: ../../Zotlabs/Module/Connedit.php:533
msgid "Recent Activity"
msgstr "Actividad reciente"
-#: ../../Zotlabs/Module/Connedit.php:537
+#: ../../Zotlabs/Module/Connedit.php:536
msgid "View recent posts and comments"
msgstr "Ver publicaciones y comentarios recientes"
-#: ../../Zotlabs/Module/Connedit.php:544
+#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1041
+msgid "Unblock"
+msgstr "Desbloquear"
+
+#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1040
+msgid "Block"
+msgstr "Bloquear"
+
+#: ../../Zotlabs/Module/Connedit.php:543
msgid "Block (or Unblock) all communications with this connection"
msgstr "Bloquear (o desbloquear) todas las comunicaciones con esta conexión"
-#: ../../Zotlabs/Module/Connedit.php:545
+#: ../../Zotlabs/Module/Connedit.php:544
msgid "This connection is blocked!"
msgstr "¡Esta conexión está bloqueada!"
-#: ../../Zotlabs/Module/Connedit.php:549
+#: ../../Zotlabs/Module/Connedit.php:548
msgid "Unignore"
msgstr "Dejar de ignorar"
-#: ../../Zotlabs/Module/Connedit.php:552
+#: ../../Zotlabs/Module/Connedit.php:548
+#: ../../Zotlabs/Module/Connections.php:277
+#: ../../Zotlabs/Module/Notifications.php:55
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: ../../Zotlabs/Module/Connedit.php:551
msgid "Ignore (or Unignore) all inbound communications from this connection"
msgstr "Ignorar (o dejar de ignorar) todas las comunicaciones entrantes de esta conexión"
-#: ../../Zotlabs/Module/Connedit.php:553
+#: ../../Zotlabs/Module/Connedit.php:552
msgid "This connection is ignored!"
msgstr "¡Esta conexión es ignorada!"
-#: ../../Zotlabs/Module/Connedit.php:557
+#: ../../Zotlabs/Module/Connedit.php:556
msgid "Unarchive"
msgstr "Desarchivar"
-#: ../../Zotlabs/Module/Connedit.php:557
+#: ../../Zotlabs/Module/Connedit.php:556
msgid "Archive"
msgstr "Archivar"
-#: ../../Zotlabs/Module/Connedit.php:560
+#: ../../Zotlabs/Module/Connedit.php:559
msgid ""
"Archive (or Unarchive) this connection - mark channel dead but keep content"
msgstr "Archiva (o desarchiva) esta conexión - marca el canal como muerto aunque mantiene sus contenidos"
-#: ../../Zotlabs/Module/Connedit.php:561
+#: ../../Zotlabs/Module/Connedit.php:560
msgid "This connection is archived!"
msgstr "¡Esta conexión esta archivada!"
-#: ../../Zotlabs/Module/Connedit.php:565
+#: ../../Zotlabs/Module/Connedit.php:564
msgid "Unhide"
msgstr "Mostrar"
-#: ../../Zotlabs/Module/Connedit.php:565
+#: ../../Zotlabs/Module/Connedit.php:564
msgid "Hide"
msgstr "Ocultar"
-#: ../../Zotlabs/Module/Connedit.php:568
+#: ../../Zotlabs/Module/Connedit.php:567
msgid "Hide or Unhide this connection from your other connections"
msgstr "Ocultar o mostrar esta conexión a sus otras conexiones"
-#: ../../Zotlabs/Module/Connedit.php:569
+#: ../../Zotlabs/Module/Connedit.php:568
msgid "This connection is hidden!"
msgstr "¡Esta conexión está oculta!"
-#: ../../Zotlabs/Module/Connedit.php:576
+#: ../../Zotlabs/Module/Connedit.php:575
msgid "Delete this connection"
msgstr "Eliminar esta conexión"
-#: ../../Zotlabs/Module/Connedit.php:593 ../../include/widgets.php:444
+#: ../../Zotlabs/Module/Connedit.php:590 ../../include/widgets.php:493
msgid "Me"
msgstr "Yo"
-#: ../../Zotlabs/Module/Connedit.php:594 ../../include/widgets.php:445
+#: ../../Zotlabs/Module/Connedit.php:591 ../../include/widgets.php:494
msgid "Family"
msgstr "Familia"
-#: ../../Zotlabs/Module/Connedit.php:595 ../../Zotlabs/Module/Settings.php:340
-#: ../../Zotlabs/Module/Settings.php:344 ../../Zotlabs/Module/Settings.php:345
-#: ../../Zotlabs/Module/Settings.php:348 ../../Zotlabs/Module/Settings.php:359
-#: ../../include/identity.php:389 ../../include/identity.php:390
-#: ../../include/identity.php:397 ../../include/profile_selectors.php:80
-#: ../../include/widgets.php:446
+#: ../../Zotlabs/Module/Connedit.php:592 ../../Zotlabs/Module/Settings.php:342
+#: ../../Zotlabs/Module/Settings.php:346 ../../Zotlabs/Module/Settings.php:347
+#: ../../Zotlabs/Module/Settings.php:350 ../../Zotlabs/Module/Settings.php:361
+#: ../../include/widgets.php:495 ../../include/selectors.php:123
+#: ../../include/channel.php:389 ../../include/channel.php:390
+#: ../../include/channel.php:397
msgid "Friends"
msgstr "Amigos/as"
-#: ../../Zotlabs/Module/Connedit.php:596 ../../include/widgets.php:447
+#: ../../Zotlabs/Module/Connedit.php:593 ../../include/widgets.php:496
msgid "Acquaintances"
msgstr "Conocidos/as"
-#: ../../Zotlabs/Module/Connedit.php:657
+#: ../../Zotlabs/Module/Connedit.php:594
+#: ../../Zotlabs/Module/Connections.php:92
+#: ../../Zotlabs/Module/Connections.php:107 ../../include/widgets.php:497
+msgid "All"
+msgstr "Todos/as"
+
+#: ../../Zotlabs/Module/Connedit.php:654
msgid "Approve this connection"
msgstr "Aprobar esta conexión"
-#: ../../Zotlabs/Module/Connedit.php:657
+#: ../../Zotlabs/Module/Connedit.php:654
msgid "Accept connection to allow communication"
msgstr "Aceptar la conexión para permitir la comunicación"
-#: ../../Zotlabs/Module/Connedit.php:662
+#: ../../Zotlabs/Module/Connedit.php:659
msgid "Set Affinity"
msgstr "Ajustar la afinidad"
-#: ../../Zotlabs/Module/Connedit.php:665
+#: ../../Zotlabs/Module/Connedit.php:662
msgid "Set Profile"
msgstr "Ajustar el perfil"
-#: ../../Zotlabs/Module/Connedit.php:668
+#: ../../Zotlabs/Module/Connedit.php:665
msgid "Set Affinity & Profile"
msgstr "Ajustar la afinidad y el perfil"
-#: ../../Zotlabs/Module/Connedit.php:701
+#: ../../Zotlabs/Module/Connedit.php:698
msgid "none"
msgstr "-"
-#: ../../Zotlabs/Module/Connedit.php:705 ../../include/widgets.php:565
+#: ../../Zotlabs/Module/Connedit.php:702 ../../include/widgets.php:614
msgid "Connection Default Permissions"
msgstr "Permisos predeterminados de conexión"
-#: ../../Zotlabs/Module/Connedit.php:705 ../../include/items.php:5159
+#: ../../Zotlabs/Module/Connedit.php:702 ../../include/items.php:3926
#, php-format
msgid "Connection: %s"
msgstr "Conexión: %s"
-#: ../../Zotlabs/Module/Connedit.php:706
+#: ../../Zotlabs/Module/Connedit.php:703
msgid "Apply these permissions automatically"
msgstr "Aplicar estos permisos automaticamente"
-#: ../../Zotlabs/Module/Connedit.php:706
+#: ../../Zotlabs/Module/Connedit.php:703
msgid "Connection requests will be approved without your interaction"
msgstr "Las solicitudes de conexión serán aprobadas sin su intervención"
-#: ../../Zotlabs/Module/Connedit.php:708
+#: ../../Zotlabs/Module/Connedit.php:705
msgid "This connection's primary address is"
msgstr "La dirección primaria de esta conexión es"
-#: ../../Zotlabs/Module/Connedit.php:709
+#: ../../Zotlabs/Module/Connedit.php:706
msgid "Available locations:"
msgstr "Ubicaciones disponibles:"
-#: ../../Zotlabs/Module/Connedit.php:713
+#: ../../Zotlabs/Module/Connedit.php:710
msgid ""
"The permissions indicated on this page will be applied to all new "
"connections."
msgstr "Los permisos indicados en esta página serán aplicados en todas las nuevas conexiones."
-#: ../../Zotlabs/Module/Connedit.php:714
+#: ../../Zotlabs/Module/Connedit.php:711
msgid "Connection Tools"
msgstr "Gestión de las conexiones"
-#: ../../Zotlabs/Module/Connedit.php:716
+#: ../../Zotlabs/Module/Connedit.php:713
msgid "Slide to adjust your degree of friendship"
msgstr "Deslizar para ajustar el grado de amistad"
-#: ../../Zotlabs/Module/Connedit.php:717 ../../Zotlabs/Module/Rate.php:161
+#: ../../Zotlabs/Module/Connedit.php:714 ../../Zotlabs/Module/Rate.php:159
#: ../../include/js_strings.php:20
msgid "Rating"
msgstr "Valoración"
-#: ../../Zotlabs/Module/Connedit.php:718
+#: ../../Zotlabs/Module/Connedit.php:715
msgid "Slide to adjust your rating"
msgstr "Deslizar para ajustar su valoración"
-#: ../../Zotlabs/Module/Connedit.php:719 ../../Zotlabs/Module/Connedit.php:724
+#: ../../Zotlabs/Module/Connedit.php:716 ../../Zotlabs/Module/Connedit.php:721
msgid "Optionally explain your rating"
msgstr "Opcionalmente, puede explicar su valoración"
-#: ../../Zotlabs/Module/Connedit.php:721
+#: ../../Zotlabs/Module/Connedit.php:718
msgid "Custom Filter"
msgstr "Filtro personalizado"
-#: ../../Zotlabs/Module/Connedit.php:722
+#: ../../Zotlabs/Module/Connedit.php:719
msgid "Only import posts with this text"
msgstr "Importar solo entradas que contengan este texto"
-#: ../../Zotlabs/Module/Connedit.php:722 ../../Zotlabs/Module/Connedit.php:723
+#: ../../Zotlabs/Module/Connedit.php:719 ../../Zotlabs/Module/Connedit.php:720
msgid ""
"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
"all posts"
msgstr "Una sola opción por línea: palabras, #etiquetas, /patrones/ o lang=xx. Dejar en blanco para importarlo todo"
-#: ../../Zotlabs/Module/Connedit.php:723
+#: ../../Zotlabs/Module/Connedit.php:720
msgid "Do not import posts with this text"
msgstr "No importar entradas que contengan este texto"
-#: ../../Zotlabs/Module/Connedit.php:725
+#: ../../Zotlabs/Module/Connedit.php:722
msgid "This information is public!"
msgstr "¡Esta información es pública!"
-#: ../../Zotlabs/Module/Connedit.php:730
+#: ../../Zotlabs/Module/Connedit.php:727
msgid "Connection Pending Approval"
msgstr "Conexión pendiente de aprobación"
-#: ../../Zotlabs/Module/Connedit.php:733
+#: ../../Zotlabs/Module/Connedit.php:730
msgid "inherited"
msgstr "heredado"
-#: ../../Zotlabs/Module/Connedit.php:735
+#: ../../Zotlabs/Module/Connedit.php:732
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr "Por favor, escoja el perfil que quiere mostrar a %s cuando esté viendo su perfil de forma segura."
-#: ../../Zotlabs/Module/Connedit.php:737
+#: ../../Zotlabs/Module/Connedit.php:734
msgid "Their Settings"
msgstr "Sus ajustes"
-#: ../../Zotlabs/Module/Connedit.php:738
+#: ../../Zotlabs/Module/Connedit.php:735
msgid "My Settings"
msgstr "Mis ajustes"
-#: ../../Zotlabs/Module/Connedit.php:740
+#: ../../Zotlabs/Module/Connedit.php:737
msgid "Individual Permissions"
msgstr "Permisos individuales"
-#: ../../Zotlabs/Module/Connedit.php:741
+#: ../../Zotlabs/Module/Connedit.php:738
msgid ""
"Some permissions may be inherited from your channel's <a "
"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
@@ -2076,7 +883,7 @@ msgid ""
" settings here."
msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. <strong>No</strong> puede cambiar estos ajustes aquí."
-#: ../../Zotlabs/Module/Connedit.php:742
+#: ../../Zotlabs/Module/Connedit.php:739
msgid ""
"Some permissions may be inherited from your channel's <a "
"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
@@ -2084,127 +891,14 @@ msgid ""
"they wont have any impact unless the inherited setting changes."
msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. Puede cambiar estos ajustes aquí, pero no tendrán ningún consecuencia hasta que cambie los ajustes heredados."
-#: ../../Zotlabs/Module/Connedit.php:743
+#: ../../Zotlabs/Module/Connedit.php:740
msgid "Last update:"
msgstr "Última actualización:"
-#: ../../Zotlabs/Module/Cover_photo.php:58
-#: ../../Zotlabs/Module/Profile_photo.php:79
-msgid "Image uploaded but image cropping failed."
-msgstr "Imagen actualizada, pero el recorte de la imagen ha fallado. "
-
-#: ../../Zotlabs/Module/Cover_photo.php:134
-#: ../../Zotlabs/Module/Cover_photo.php:181
-msgid "Cover Photos"
-msgstr "Imágenes de portada del perfil"
-
-#: ../../Zotlabs/Module/Cover_photo.php:154
-#: ../../Zotlabs/Module/Profile_photo.php:133
-msgid "Image resize failed."
-msgstr "El ajuste del tamaño de la imagen ha fallado."
-
-#: ../../Zotlabs/Module/Cover_photo.php:168
-#: ../../Zotlabs/Module/Profile_photo.php:192 ../../include/photos.php:146
-msgid "Unable to process image"
-msgstr "No ha sido posible procesar la imagen"
-
-#: ../../Zotlabs/Module/Cover_photo.php:192
-#: ../../Zotlabs/Module/Profile_photo.php:217
-msgid "Image upload failed."
-msgstr "La carga de la imagen ha fallado."
-
-#: ../../Zotlabs/Module/Cover_photo.php:210
-#: ../../Zotlabs/Module/Profile_photo.php:236
-msgid "Unable to process image."
-msgstr "No ha sido posible procesar la imagen."
-
-#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:5587
-msgid "female"
-msgstr "mujer"
-
-#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:5588
-#, php-format
-msgid "%1$s updated her %2$s"
-msgstr "%1$s ha actualizado su %2$s"
-
-#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:5589
-msgid "male"
-msgstr "hombre"
-
-#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:5590
-#, php-format
-msgid "%1$s updated his %2$s"
-msgstr "%1$s ha actualizado su %2$s"
-
-#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:5592
-#, php-format
-msgid "%1$s updated their %2$s"
-msgstr "%1$s ha actualizado su %2$s"
-
-#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/identity.php:1800
-msgid "cover photo"
-msgstr "Imagen de portada del perfil"
-
-#: ../../Zotlabs/Module/Cover_photo.php:303
-#: ../../Zotlabs/Module/Cover_photo.php:318
-#: ../../Zotlabs/Module/Profile_photo.php:283
-#: ../../Zotlabs/Module/Profile_photo.php:324
-msgid "Photo not available."
-msgstr "Foto no disponible."
-
-#: ../../Zotlabs/Module/Cover_photo.php:354
-#: ../../Zotlabs/Module/Profile_photo.php:365
-msgid "Upload File:"
-msgstr "Subir fichero:"
-
-#: ../../Zotlabs/Module/Cover_photo.php:355
-#: ../../Zotlabs/Module/Profile_photo.php:366
-msgid "Select a profile:"
-msgstr "Seleccionar un perfil:"
-
-#: ../../Zotlabs/Module/Cover_photo.php:356
-msgid "Upload Cover Photo"
-msgstr "Subir imagen de portada del perfil"
-
-#: ../../Zotlabs/Module/Cover_photo.php:361
-#: ../../Zotlabs/Module/Profile_photo.php:374
-#: ../../Zotlabs/Module/Settings.php:983
-msgid "or"
-msgstr "o"
-
-#: ../../Zotlabs/Module/Cover_photo.php:361
-#: ../../Zotlabs/Module/Profile_photo.php:374
-msgid "skip this step"
-msgstr "Omitir este paso"
-
-#: ../../Zotlabs/Module/Cover_photo.php:361
-#: ../../Zotlabs/Module/Profile_photo.php:374
-msgid "select a photo from your photo albums"
-msgstr "Seleccione una foto de sus álbumes de fotos"
-
-#: ../../Zotlabs/Module/Cover_photo.php:377
-#: ../../Zotlabs/Module/Profile_photo.php:390
-msgid "Crop Image"
-msgstr "Recortar imagen"
-
-#: ../../Zotlabs/Module/Cover_photo.php:378
-#: ../../Zotlabs/Module/Profile_photo.php:391
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Por favor ajuste el recorte de la imagen para una visión óptima."
-
-#: ../../Zotlabs/Module/Cover_photo.php:380
-#: ../../Zotlabs/Module/Profile_photo.php:393
-msgid "Done Editing"
-msgstr "Edición completada"
-
-#: ../../Zotlabs/Module/Dav.php:127
-msgid "$Projectname channel"
-msgstr "Canal $Projectname"
-
-#: ../../Zotlabs/Module/Directory.php:63 ../../Zotlabs/Module/Display.php:21
-#: ../../Zotlabs/Module/Photos.php:521 ../../Zotlabs/Module/Ratings.php:86
+#: ../../Zotlabs/Module/Directory.php:63 ../../Zotlabs/Module/Display.php:17
+#: ../../Zotlabs/Module/Photos.php:522 ../../Zotlabs/Module/Ratings.php:86
#: ../../Zotlabs/Module/Search.php:17
-#: ../../Zotlabs/Module/Viewconnections.php:21
+#: ../../Zotlabs/Module/Viewconnections.php:20
msgid "Public access denied."
msgstr "Acceso público denegado."
@@ -2227,13 +921,13 @@ msgstr "Estado:"
msgid "Homepage: "
msgstr "Página personal:"
-#: ../../Zotlabs/Module/Directory.php:306 ../../include/identity.php:1322
+#: ../../Zotlabs/Module/Directory.php:306 ../../include/channel.php:1183
msgid "Age:"
msgstr "Edad:"
-#: ../../Zotlabs/Module/Directory.php:311 ../../include/identity.php:1022
-#: ../../include/text.php:1452 ../../include/bb2diaspora.php:509
-#: ../../include/event.php:52
+#: ../../Zotlabs/Module/Directory.php:311 ../../include/event.php:52
+#: ../../include/event.php:84 ../../include/channel.php:1027
+#: ../../include/bb2diaspora.php:507
msgid "Location:"
msgstr "Ubicación:"
@@ -2241,18 +935,18 @@ msgstr "Ubicación:"
msgid "Description:"
msgstr "Descripción:"
-#: ../../Zotlabs/Module/Directory.php:322 ../../include/identity.php:1338
+#: ../../Zotlabs/Module/Directory.php:322 ../../include/channel.php:1199
msgid "Hometown:"
msgstr "Lugar de nacimiento:"
-#: ../../Zotlabs/Module/Directory.php:324 ../../include/identity.php:1346
+#: ../../Zotlabs/Module/Directory.php:324 ../../include/channel.php:1207
msgid "About:"
msgstr "Sobre mí:"
#: ../../Zotlabs/Module/Directory.php:325 ../../Zotlabs/Module/Match.php:68
-#: ../../Zotlabs/Module/Suggest.php:56 ../../include/identity.php:1007
-#: ../../include/conversation.php:961 ../../include/Contact.php:101
-#: ../../include/widgets.php:147 ../../include/widgets.php:184
+#: ../../Zotlabs/Module/Suggest.php:56 ../../include/widgets.php:147
+#: ../../include/widgets.php:184 ../../include/connections.php:78
+#: ../../include/conversation.php:956 ../../include/channel.php:1012
msgid "Connect"
msgstr "Conectar"
@@ -2280,12 +974,19 @@ msgstr "Directorio global:"
msgid "Local Directory"
msgstr "Directorio local:"
+#: ../../Zotlabs/Module/Directory.php:388
+#: ../../Zotlabs/Module/Directory.php:393
+#: ../../Zotlabs/Module/Connections.php:309
+#: ../../include/contact_widgets.php:23
+msgid "Find"
+msgstr "Encontrar"
+
#: ../../Zotlabs/Module/Directory.php:389
msgid "Finding:"
msgstr "Encontrar:"
#: ../../Zotlabs/Module/Directory.php:392 ../../Zotlabs/Module/Suggest.php:64
-#: ../../include/contact_widgets.php:27
+#: ../../include/contact_widgets.php:24
msgid "Channel Suggestions"
msgstr "Sugerencias de canales"
@@ -2321,431 +1022,455 @@ msgstr "De más antiguo a más nuevo"
msgid "No entries (some entries may be hidden)."
msgstr "Sin entradas (algunas entradas pueden estar ocultas)."
-#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49
-msgid "This site is not a directory server"
-msgstr "Este sitio no es un servidor de directorio"
+#: ../../Zotlabs/Module/Display.php:40 ../../Zotlabs/Module/Filestorage.php:33
+#: ../../Zotlabs/Module/Admin.php:164 ../../Zotlabs/Module/Admin.php:1255
+#: ../../Zotlabs/Module/Admin.php:1561 ../../Zotlabs/Module/Thing.php:89
+#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:3359
+msgid "Item not found."
+msgstr "Elemento no encontrado."
-#: ../../Zotlabs/Module/Dirsearch.php:33
-msgid "This directory server requires an access token"
-msgstr "El servidor de este directorio necesita un \"token\" de acceso"
+#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95
+#: ../../Zotlabs/Module/Editpost.php:24 ../../Zotlabs/Module/Editlayout.php:79
+#: ../../Zotlabs/Module/Editwebpage.php:81
+msgid "Item not found"
+msgstr "Elemento no encontrado"
-#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:49
-#: ../../Zotlabs/Module/Group.php:72 ../../Zotlabs/Module/Import_items.php:112
-#: ../../Zotlabs/Module/Like.php:284 ../../Zotlabs/Module/Profperm.php:28
-#: ../../Zotlabs/Module/Subthread.php:62 ../../include/items.php:423
-#: ../../index.php:173
-msgid "Permission denied"
-msgstr "Permiso denegado"
+#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1228
+msgid "Title (optional)"
+msgstr "Título (opcional)"
-#: ../../Zotlabs/Module/Dreport.php:27
-msgid "Invalid message"
-msgstr "Mensaje no válido"
+#: ../../Zotlabs/Module/Editblock.php:133
+msgid "Edit Block"
+msgstr "Modificar este bloque"
-#: ../../Zotlabs/Module/Dreport.php:59
-msgid "no results"
-msgstr "sin resultados"
+#: ../../Zotlabs/Module/Common.php:14
+msgid "No channel."
+msgstr "Ningún canal."
-#: ../../Zotlabs/Module/Dreport.php:64
-#, php-format
-msgid "Delivery report for %1$s"
-msgstr "Informe de entrega para %1$s"
+#: ../../Zotlabs/Module/Common.php:43
+msgid "Common connections"
+msgstr "Conexiones comunes"
-#: ../../Zotlabs/Module/Dreport.php:78
-msgid "channel sync processed"
-msgstr "se ha realizado la sincronización del canal"
+#: ../../Zotlabs/Module/Common.php:48
+msgid "No connections in common."
+msgstr "Ninguna conexión en común."
-#: ../../Zotlabs/Module/Dreport.php:82
-msgid "queued"
-msgstr "encolado"
+#: ../../Zotlabs/Module/Connections.php:56
+#: ../../Zotlabs/Module/Connections.php:161
+#: ../../Zotlabs/Module/Connections.php:242
+msgid "Blocked"
+msgstr "Bloqueadas"
-#: ../../Zotlabs/Module/Dreport.php:86
-msgid "posted"
-msgstr "enviado"
+#: ../../Zotlabs/Module/Connections.php:61
+#: ../../Zotlabs/Module/Connections.php:168
+#: ../../Zotlabs/Module/Connections.php:241
+msgid "Ignored"
+msgstr "Ignoradas"
-#: ../../Zotlabs/Module/Dreport.php:90
-msgid "accepted for delivery"
-msgstr "aceptado para el envío"
+#: ../../Zotlabs/Module/Connections.php:66
+#: ../../Zotlabs/Module/Connections.php:182
+#: ../../Zotlabs/Module/Connections.php:240
+msgid "Hidden"
+msgstr "Ocultas"
-#: ../../Zotlabs/Module/Dreport.php:94
-msgid "updated"
-msgstr "actualizado"
+#: ../../Zotlabs/Module/Connections.php:71
+#: ../../Zotlabs/Module/Connections.php:175
+#: ../../Zotlabs/Module/Connections.php:239
+msgid "Archived"
+msgstr "Archivadas"
-#: ../../Zotlabs/Module/Dreport.php:97
-msgid "update ignored"
-msgstr "actualización ignorada"
+#: ../../Zotlabs/Module/Connections.php:76
+#: ../../Zotlabs/Module/Connections.php:86 ../../Zotlabs/Module/Menu.php:116
+#: ../../include/conversation.php:1535
+msgid "New"
+msgstr "Nuevas"
-#: ../../Zotlabs/Module/Dreport.php:100
-msgid "permission denied"
-msgstr "permiso denegado"
+#: ../../Zotlabs/Module/Connections.php:138
+msgid "New Connections"
+msgstr "Nuevas conexiones"
-#: ../../Zotlabs/Module/Dreport.php:104
-msgid "recipient not found"
-msgstr "destinatario no encontrado"
+#: ../../Zotlabs/Module/Connections.php:141
+msgid "Show pending (new) connections"
+msgstr "Mostrar conexiones (nuevas) pendientes"
-#: ../../Zotlabs/Module/Dreport.php:107
-msgid "mail recalled"
-msgstr "mensaje de correo revocado"
+#: ../../Zotlabs/Module/Connections.php:145
+#: ../../Zotlabs/Module/Profperm.php:144
+msgid "All Connections"
+msgstr "Todas las conexiones"
-#: ../../Zotlabs/Module/Dreport.php:110
-msgid "duplicate mail received"
-msgstr "se ha recibido mensaje duplicado"
+#: ../../Zotlabs/Module/Connections.php:148
+msgid "Show all connections"
+msgstr "Mostrar todas las conexiones"
-#: ../../Zotlabs/Module/Dreport.php:113
-msgid "mail delivered"
-msgstr "correo enviado"
+#: ../../Zotlabs/Module/Connections.php:164
+msgid "Only show blocked connections"
+msgstr "Mostrar solo las conexiones bloqueadas"
-#: ../../Zotlabs/Module/Editblock.php:82 ../../Zotlabs/Module/Editblock.php:98
-#: ../../Zotlabs/Module/Editlayout.php:80 ../../Zotlabs/Module/Editpost.php:24
-#: ../../Zotlabs/Module/Editwebpage.php:81
-msgid "Item not found"
-msgstr "Elemento no encontrado"
+#: ../../Zotlabs/Module/Connections.php:171
+msgid "Only show ignored connections"
+msgstr "Mostrar solo conexiones ignoradas"
-#: ../../Zotlabs/Module/Editblock.php:122
-msgid "Delete block?"
-msgstr "¿Borrar bloque?"
+#: ../../Zotlabs/Module/Connections.php:178
+msgid "Only show archived connections"
+msgstr "Mostrar solo las conexiones archivadas"
-#: ../../Zotlabs/Module/Editblock.php:141
-#: ../../Zotlabs/Module/Editlayout.php:140
-#: ../../Zotlabs/Module/Editpost.php:119
-#: ../../Zotlabs/Module/Editwebpage.php:182 ../../include/ItemObject.php:704
-#: ../../include/conversation.php:1216
-msgid "Bold"
-msgstr "Negrita"
+#: ../../Zotlabs/Module/Connections.php:185
+msgid "Only show hidden connections"
+msgstr "Mostrar solo las conexiones ocultas"
-#: ../../Zotlabs/Module/Editblock.php:142
-#: ../../Zotlabs/Module/Editlayout.php:141
-#: ../../Zotlabs/Module/Editpost.php:120
-#: ../../Zotlabs/Module/Editwebpage.php:183 ../../include/ItemObject.php:705
-#: ../../include/conversation.php:1217
-msgid "Italic"
-msgstr "Itálico "
+#: ../../Zotlabs/Module/Connections.php:238
+msgid "Pending approval"
+msgstr "Pendiente de aprobación"
-#: ../../Zotlabs/Module/Editblock.php:143
-#: ../../Zotlabs/Module/Editlayout.php:142
-#: ../../Zotlabs/Module/Editpost.php:121
-#: ../../Zotlabs/Module/Editwebpage.php:184 ../../include/ItemObject.php:706
-#: ../../include/conversation.php:1218
-msgid "Underline"
-msgstr "Subrayar"
+#: ../../Zotlabs/Module/Connections.php:254
+#, php-format
+msgid "%1$s [%2$s]"
+msgstr "%1$s [%2$s]"
-#: ../../Zotlabs/Module/Editblock.php:144
-#: ../../Zotlabs/Module/Editlayout.php:143
-#: ../../Zotlabs/Module/Editpost.php:122
-#: ../../Zotlabs/Module/Editwebpage.php:185 ../../include/ItemObject.php:707
-#: ../../include/conversation.php:1219
-msgid "Quote"
-msgstr "Citar"
+#: ../../Zotlabs/Module/Connections.php:255
+msgid "Edit connection"
+msgstr "Editar conexión"
-#: ../../Zotlabs/Module/Editblock.php:145
-#: ../../Zotlabs/Module/Editlayout.php:144
-#: ../../Zotlabs/Module/Editpost.php:123
-#: ../../Zotlabs/Module/Editwebpage.php:186 ../../include/ItemObject.php:708
-#: ../../include/conversation.php:1220
-msgid "Code"
-msgstr "Código"
+#: ../../Zotlabs/Module/Connections.php:256
+msgid "Delete connection"
+msgstr "Eliminar conexión"
-#: ../../Zotlabs/Module/Editblock.php:147
-#: ../../Zotlabs/Module/Editlayout.php:146
-#: ../../Zotlabs/Module/Editpost.php:125
-#: ../../Zotlabs/Module/Editwebpage.php:187 ../../Zotlabs/Module/Mail.php:252
-#: ../../Zotlabs/Module/Mail.php:382 ../../include/conversation.php:1223
-msgid "Attach file"
-msgstr "Adjuntar fichero"
+#: ../../Zotlabs/Module/Connections.php:265
+msgid "Channel address"
+msgstr "Dirección del canal"
-#: ../../Zotlabs/Module/Editblock.php:151
-#: ../../Zotlabs/Module/Editlayout.php:154
-#: ../../Zotlabs/Module/Editpost.php:136
-#: ../../Zotlabs/Module/Editwebpage.php:191
-#: ../../Zotlabs/Module/Events.php:470 ../../include/conversation.php:1245
-msgid "Permission settings"
-msgstr "Configuración de permisos"
+#: ../../Zotlabs/Module/Connections.php:267
+msgid "Network"
+msgstr "Red"
-#: ../../Zotlabs/Module/Editblock.php:159
-#: ../../Zotlabs/Module/Editlayout.php:161
-#: ../../Zotlabs/Module/Editpost.php:144
-#: ../../Zotlabs/Module/Editwebpage.php:200
-#: ../../include/conversation.php:1254
-msgid "Public post"
-msgstr "Entrada pública"
+#: ../../Zotlabs/Module/Connections.php:270 ../../Zotlabs/Module/Admin.php:710
+msgid "Status"
+msgstr "Estado"
-#: ../../Zotlabs/Module/Editblock.php:162
-#: ../../Zotlabs/Module/Editpost.php:147
-#: ../../Zotlabs/Module/Editwebpage.php:205
-#: ../../include/conversation.php:1239
-msgid "Title (optional)"
-msgstr "Título (opcional)"
+#: ../../Zotlabs/Module/Connections.php:272
+msgid "Connected"
+msgstr "Conectado/a"
-#: ../../Zotlabs/Module/Editblock.php:165
-#: ../../Zotlabs/Module/Editlayout.php:168
-#: ../../Zotlabs/Module/Editpost.php:149
-#: ../../Zotlabs/Module/Editwebpage.php:207
-#: ../../include/conversation.php:1243
-msgid "Categories (optional, comma-separated list)"
-msgstr "Categorías (opcional, lista separada por comas)"
+#: ../../Zotlabs/Module/Connections.php:274
+msgid "Approve connection"
+msgstr "Aprobar esta conexión"
-#: ../../Zotlabs/Module/Editblock.php:166
-#: ../../Zotlabs/Module/Editlayout.php:169
-#: ../../Zotlabs/Module/Editpost.php:150
-#: ../../Zotlabs/Module/Editwebpage.php:208
-#: ../../include/conversation.php:1256
-msgid "Example: bob@example.com, mary@example.com"
-msgstr "Ejemplo: roberto@ejemplo.com, maría@ejemplo.com"
-
-#: ../../Zotlabs/Module/Editblock.php:171
-#: ../../Zotlabs/Module/Editpost.php:155
-#: ../../Zotlabs/Module/Editwebpage.php:212
-#: ../../Zotlabs/Module/Events.php:469 ../../Zotlabs/Module/Photos.php:1092
-#: ../../Zotlabs/Module/Webpages.php:196 ../../include/ItemObject.php:712
-#: ../../include/conversation.php:1186 ../../include/page_widgets.php:40
-msgid "Preview"
-msgstr "Previsualizar"
+#: ../../Zotlabs/Module/Connections.php:275
+#: ../../Zotlabs/Module/Admin.php:1037
+msgid "Approve"
+msgstr "Aprobar"
-#: ../../Zotlabs/Module/Editblock.php:179
-msgid "Edit Block"
-msgstr "Modificar este bloque"
+#: ../../Zotlabs/Module/Connections.php:276
+msgid "Ignore connection"
+msgstr "Ignorar esta conexión"
-#: ../../Zotlabs/Module/Editlayout.php:116
-msgid "Delete layout?"
-msgstr "¿Borrar la plantilla?"
+#: ../../Zotlabs/Module/Connections.php:278
+msgid "Recent activity"
+msgstr "Actividad reciente"
-#: ../../Zotlabs/Module/Editlayout.php:145
-#: ../../Zotlabs/Module/Editpost.php:124 ../../include/conversation.php:1221
-msgid "Upload photo"
-msgstr "Subir foto"
+#: ../../Zotlabs/Module/Connections.php:302 ../../Zotlabs/Lib/Apps.php:208
+#: ../../include/text.php:875 ../../include/nav.php:186
+msgid "Connections"
+msgstr "Conexiones"
-#: ../../Zotlabs/Module/Editlayout.php:148
-#: ../../Zotlabs/Module/Editpost.php:127
-msgid "Insert YouTube video"
-msgstr "Insertar vídeo de YouTube"
+#: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44
+#: ../../Zotlabs/Lib/Apps.php:228 ../../include/text.php:945
+#: ../../include/text.php:957 ../../include/nav.php:165
+#: ../../include/acl_selectors.php:276
+msgid "Search"
+msgstr "Buscar"
-#: ../../Zotlabs/Module/Editlayout.php:149
-#: ../../Zotlabs/Module/Editpost.php:128
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Insertar vídeo Vorbis [.ogg]"
+#: ../../Zotlabs/Module/Connections.php:307
+msgid "Search your connections"
+msgstr "Buscar sus conexiones"
-#: ../../Zotlabs/Module/Editlayout.php:150
-#: ../../Zotlabs/Module/Editpost.php:129
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Insertar audio Vorbis [.ogg]"
+#: ../../Zotlabs/Module/Connections.php:308
+msgid "Connections search"
+msgstr "Buscar conexiones"
-#: ../../Zotlabs/Module/Editlayout.php:151
-#: ../../Zotlabs/Module/Editpost.php:130 ../../include/conversation.php:1231
-msgid "Set your location"
-msgstr "Establecer su ubicación"
+#: ../../Zotlabs/Module/Cover_photo.php:58
+#: ../../Zotlabs/Module/Profile_photo.php:79
+msgid "Image uploaded but image cropping failed."
+msgstr "Imagen actualizada, pero el recorte de la imagen ha fallado. "
-#: ../../Zotlabs/Module/Editlayout.php:152
-#: ../../Zotlabs/Module/Editpost.php:131 ../../include/conversation.php:1236
-msgid "Clear browser location"
-msgstr "Eliminar los datos de localización geográfica del navegador"
+#: ../../Zotlabs/Module/Cover_photo.php:134
+#: ../../Zotlabs/Module/Cover_photo.php:181
+msgid "Cover Photos"
+msgstr "Imágenes de portada del perfil"
-#: ../../Zotlabs/Module/Editlayout.php:153
-#: ../../Zotlabs/Module/Editpost.php:135 ../../Zotlabs/Module/Photos.php:1072
-#: ../../include/ItemObject.php:389 ../../include/conversation.php:740
-#: ../../include/conversation.php:1244
-msgid "Please wait"
-msgstr "Espere por favor"
+#: ../../Zotlabs/Module/Cover_photo.php:154
+#: ../../Zotlabs/Module/Profile_photo.php:133
+msgid "Image resize failed."
+msgstr "El ajuste del tamaño de la imagen ha fallado."
-#: ../../Zotlabs/Module/Editlayout.php:164
-#: ../../Zotlabs/Module/Layouts.php:128
-msgid "Layout Description (Optional)"
-msgstr "Descripción de la plantilla (opcional)"
+#: ../../Zotlabs/Module/Cover_photo.php:168
+#: ../../Zotlabs/Module/Profile_photo.php:192 ../../include/photos.php:144
+msgid "Unable to process image"
+msgstr "No ha sido posible procesar la imagen"
-#: ../../Zotlabs/Module/Editlayout.php:166
-#: ../../Zotlabs/Module/Layouts.php:125 ../../Zotlabs/Module/Layouts.php:184
-msgid "Layout Name"
-msgstr "Nombre de la plantilla"
+#: ../../Zotlabs/Module/Cover_photo.php:192
+#: ../../Zotlabs/Module/Profile_photo.php:217
+msgid "Image upload failed."
+msgstr "La carga de la imagen ha fallado."
-#: ../../Zotlabs/Module/Editlayout.php:178
-#: ../../Zotlabs/Module/Editpost.php:161 ../../Zotlabs/Module/Mail.php:257
-#: ../../Zotlabs/Module/Mail.php:387 ../../include/conversation.php:1269
-msgid "Set expiration date"
-msgstr "Configurar fecha de caducidad"
+#: ../../Zotlabs/Module/Cover_photo.php:210
+#: ../../Zotlabs/Module/Profile_photo.php:236
+msgid "Unable to process image."
+msgstr "No ha sido posible procesar la imagen."
-#: ../../Zotlabs/Module/Editlayout.php:183
-msgid "Edit Layout"
-msgstr "Modificar la plantilla"
+#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4270
+msgid "female"
+msgstr "mujer"
-#: ../../Zotlabs/Module/Editpost.php:35
-msgid "Item is not editable"
-msgstr "El elemento no es editable"
+#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4271
+#, php-format
+msgid "%1$s updated her %2$s"
+msgstr "%1$s ha actualizado su %2$s"
-#: ../../Zotlabs/Module/Editpost.php:60 ../../Zotlabs/Module/Mail.php:207
-#: ../../Zotlabs/Module/Mail.php:321 ../../include/conversation.php:1176
-msgid "Expires YYYY-MM-DD HH:MM"
-msgstr "Caduca YYYY-MM-DD HH:MM"
+#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4272
+msgid "male"
+msgstr "hombre"
-#: ../../Zotlabs/Module/Editpost.php:61
-msgid "Delete item?"
-msgstr "¿Borrar elemento?"
+#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4273
+#, php-format
+msgid "%1$s updated his %2$s"
+msgstr "%1$s ha actualizado su %2$s"
-#: ../../Zotlabs/Module/Editpost.php:132 ../../include/conversation.php:1233
-msgid "Toggle voting"
-msgstr "Cambiar votación"
+#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4275
+#, php-format
+msgid "%1$s updated their %2$s"
+msgstr "%1$s ha actualizado su %2$s"
-#: ../../Zotlabs/Module/Editpost.php:165 ../../include/conversation.php:1276
-msgid "OK"
-msgstr "OK"
+#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1661
+msgid "cover photo"
+msgstr "Imagen de portada del perfil"
-#: ../../Zotlabs/Module/Editpost.php:166 ../../Zotlabs/Module/Fbrowser.php:66
-#: ../../Zotlabs/Module/Fbrowser.php:88 ../../Zotlabs/Module/Settings.php:589
-#: ../../Zotlabs/Module/Settings.php:615 ../../Zotlabs/Module/Tagrm.php:15
-#: ../../Zotlabs/Module/Tagrm.php:138 ../../include/conversation.php:1277
-msgid "Cancel"
-msgstr "Cancelar"
+#: ../../Zotlabs/Module/Cover_photo.php:303
+#: ../../Zotlabs/Module/Cover_photo.php:318
+#: ../../Zotlabs/Module/Profile_photo.php:283
+#: ../../Zotlabs/Module/Profile_photo.php:324
+msgid "Photo not available."
+msgstr "Foto no disponible."
-#: ../../Zotlabs/Module/Editpost.php:171 ../../Zotlabs/Module/Rpost.php:134
-msgid "Edit post"
-msgstr "Editar la entrada"
+#: ../../Zotlabs/Module/Cover_photo.php:354
+#: ../../Zotlabs/Module/Profile_photo.php:365
+msgid "Upload File:"
+msgstr "Subir fichero:"
-#: ../../Zotlabs/Module/Editwebpage.php:157
-msgid "Delete webpage?"
-msgstr "¿Eliminar la página web?"
+#: ../../Zotlabs/Module/Cover_photo.php:355
+#: ../../Zotlabs/Module/Profile_photo.php:366
+msgid "Select a profile:"
+msgstr "Seleccionar un perfil:"
-#: ../../Zotlabs/Module/Editwebpage.php:177
-msgid "Page link title"
-msgstr "Título del enlace de la página"
+#: ../../Zotlabs/Module/Cover_photo.php:356
+msgid "Upload Cover Photo"
+msgstr "Subir imagen de portada del perfil"
-#: ../../Zotlabs/Module/Editwebpage.php:220
-msgid "Edit Webpage"
-msgstr "Editar la página web"
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+#: ../../Zotlabs/Module/Settings.php:985
+msgid "or"
+msgstr "o"
+
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+msgid "skip this step"
+msgstr "Omitir este paso"
+
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+msgid "select a photo from your photo albums"
+msgstr "Seleccione una foto de sus álbumes de fotos"
+
+#: ../../Zotlabs/Module/Cover_photo.php:377
+#: ../../Zotlabs/Module/Profile_photo.php:390
+msgid "Crop Image"
+msgstr "Recortar imagen"
+
+#: ../../Zotlabs/Module/Cover_photo.php:378
+#: ../../Zotlabs/Module/Profile_photo.php:391
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Por favor ajuste el recorte de la imagen para una visión óptima."
+
+#: ../../Zotlabs/Module/Cover_photo.php:380
+#: ../../Zotlabs/Module/Profile_photo.php:393
+msgid "Done Editing"
+msgstr "Edición completada"
+
+#: ../../Zotlabs/Module/Editpost.php:35
+msgid "Item is not editable"
+msgstr "El elemento no es editable"
+
+#: ../../Zotlabs/Module/Editpost.php:106 ../../Zotlabs/Module/Rpost.php:135
+msgid "Edit post"
+msgstr "Editar la entrada"
-#: ../../Zotlabs/Module/Events.php:25
+#: ../../Zotlabs/Module/Events.php:26
msgid "Calendar entries imported."
msgstr "Entradas de calendario importadas."
-#: ../../Zotlabs/Module/Events.php:27
+#: ../../Zotlabs/Module/Events.php:28
msgid "No calendar entries found."
msgstr "No se han encontrado entradas de calendario."
-#: ../../Zotlabs/Module/Events.php:104
+#: ../../Zotlabs/Module/Events.php:105
msgid "Event can not end before it has started."
msgstr "Un evento no puede terminar antes de que haya comenzado."
-#: ../../Zotlabs/Module/Events.php:106 ../../Zotlabs/Module/Events.php:115
-#: ../../Zotlabs/Module/Events.php:135
+#: ../../Zotlabs/Module/Events.php:107 ../../Zotlabs/Module/Events.php:116
+#: ../../Zotlabs/Module/Events.php:136
msgid "Unable to generate preview."
msgstr "No se puede crear la vista previa."
-#: ../../Zotlabs/Module/Events.php:113
+#: ../../Zotlabs/Module/Events.php:114
msgid "Event title and start time are required."
msgstr "Se requieren el título del evento y su hora de inicio."
-#: ../../Zotlabs/Module/Events.php:133 ../../Zotlabs/Module/Events.php:258
+#: ../../Zotlabs/Module/Events.php:134 ../../Zotlabs/Module/Events.php:259
msgid "Event not found."
msgstr "Evento no encontrado."
-#: ../../Zotlabs/Module/Events.php:253 ../../Zotlabs/Module/Like.php:373
-#: ../../Zotlabs/Module/Tagger.php:51 ../../include/text.php:1943
-#: ../../include/conversation.php:123 ../../include/event.php:915
+#: ../../Zotlabs/Module/Events.php:254 ../../Zotlabs/Module/Like.php:373
+#: ../../Zotlabs/Module/Tagger.php:51 ../../include/event.php:949
+#: ../../include/text.php:1943 ../../include/conversation.php:123
msgid "event"
msgstr "evento"
-#: ../../Zotlabs/Module/Events.php:448
+#: ../../Zotlabs/Module/Events.php:449
msgid "Edit event title"
msgstr "Editar el título del evento"
-#: ../../Zotlabs/Module/Events.php:448
+#: ../../Zotlabs/Module/Events.php:449
msgid "Event title"
msgstr "Título del evento"
-#: ../../Zotlabs/Module/Events.php:450
+#: ../../Zotlabs/Module/Events.php:449 ../../Zotlabs/Module/Events.php:454
+#: ../../Zotlabs/Module/Profiles.php:709 ../../Zotlabs/Module/Profiles.php:713
+#: ../../Zotlabs/Module/Appman.php:115 ../../Zotlabs/Module/Appman.php:116
+#: ../../include/datetime.php:245
+msgid "Required"
+msgstr "Obligatorio"
+
+#: ../../Zotlabs/Module/Events.php:451
msgid "Categories (comma-separated list)"
msgstr "Categorías (lista separada por comas)"
-#: ../../Zotlabs/Module/Events.php:451
+#: ../../Zotlabs/Module/Events.php:452
msgid "Edit Category"
msgstr "Editar la categoría"
-#: ../../Zotlabs/Module/Events.php:451
+#: ../../Zotlabs/Module/Events.php:452
msgid "Category"
msgstr "Categoría"
-#: ../../Zotlabs/Module/Events.php:454
+#: ../../Zotlabs/Module/Events.php:455
msgid "Edit start date and time"
msgstr "Modificar la fecha y hora de comienzo"
-#: ../../Zotlabs/Module/Events.php:454
+#: ../../Zotlabs/Module/Events.php:455
msgid "Start date and time"
msgstr "Fecha y hora de comienzo"
-#: ../../Zotlabs/Module/Events.php:455 ../../Zotlabs/Module/Events.php:458
+#: ../../Zotlabs/Module/Events.php:456 ../../Zotlabs/Module/Events.php:459
msgid "Finish date and time are not known or not relevant"
msgstr "La fecha y hora de terminación no se conocen o no son relevantes"
-#: ../../Zotlabs/Module/Events.php:457
+#: ../../Zotlabs/Module/Events.php:458
msgid "Edit finish date and time"
msgstr "Modificar la fecha y hora de terminación"
-#: ../../Zotlabs/Module/Events.php:457
+#: ../../Zotlabs/Module/Events.php:458
msgid "Finish date and time"
msgstr "Fecha y hora de terminación"
-#: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:460
+#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:461
msgid "Adjust for viewer timezone"
msgstr "Ajustar para obtener el visor de los husos horarios"
-#: ../../Zotlabs/Module/Events.php:459
+#: ../../Zotlabs/Module/Events.php:460
msgid ""
"Important for events that happen in a particular place. Not practical for "
"global holidays."
msgstr "Importante para los eventos que suceden en un lugar determinado. No es práctico para los globales."
-#: ../../Zotlabs/Module/Events.php:461
+#: ../../Zotlabs/Module/Events.php:462
msgid "Edit Description"
msgstr "Editar la descripción"
-#: ../../Zotlabs/Module/Events.php:463
+#: ../../Zotlabs/Module/Events.php:462 ../../Zotlabs/Module/Appman.php:117
+#: ../../Zotlabs/Module/Rbmark.php:101
+msgid "Description"
+msgstr "Descripción"
+
+#: ../../Zotlabs/Module/Events.php:464
msgid "Edit Location"
msgstr "Modificar la dirección"
-#: ../../Zotlabs/Module/Events.php:463 ../../Zotlabs/Module/Locs.php:117
-#: ../../Zotlabs/Module/Profiles.php:476 ../../Zotlabs/Module/Profiles.php:702
-#: ../../Zotlabs/Module/Pubsites.php:40 ../../include/js_strings.php:25
+#: ../../Zotlabs/Module/Events.php:464 ../../Zotlabs/Module/Locs.php:117
+#: ../../Zotlabs/Module/Profiles.php:477 ../../Zotlabs/Module/Profiles.php:698
+#: ../../Zotlabs/Module/Pubsites.php:41 ../../include/js_strings.php:25
msgid "Location"
msgstr "Ubicación"
-#: ../../Zotlabs/Module/Events.php:466 ../../Zotlabs/Module/Events.php:468
+#: ../../Zotlabs/Module/Events.php:467 ../../Zotlabs/Module/Events.php:469
msgid "Share this event"
msgstr "Compartir este evento"
-#: ../../Zotlabs/Module/Events.php:473
+#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Photos.php:1093
+#: ../../Zotlabs/Module/Webpages.php:194 ../../Zotlabs/Lib/ThreadItem.php:719
+#: ../../include/conversation.php:1187 ../../include/page_widgets.php:40
+msgid "Preview"
+msgstr "Previsualizar"
+
+#: ../../Zotlabs/Module/Events.php:471 ../../include/conversation.php:1232
+msgid "Permission settings"
+msgstr "Configuración de permisos"
+
+#: ../../Zotlabs/Module/Events.php:476
msgid "Advanced Options"
msgstr "Opciones avanzadas"
-#: ../../Zotlabs/Module/Events.php:607
+#: ../../Zotlabs/Module/Events.php:610
msgid "Edit event"
msgstr "Editar evento"
-#: ../../Zotlabs/Module/Events.php:609
+#: ../../Zotlabs/Module/Events.php:612
msgid "Delete event"
msgstr "Borrar evento"
-#: ../../Zotlabs/Module/Events.php:643
+#: ../../Zotlabs/Module/Events.php:646
msgid "calendar"
msgstr "calendario"
-#: ../../Zotlabs/Module/Events.php:703
+#: ../../Zotlabs/Module/Events.php:706
msgid "Event removed"
msgstr "Evento borrado"
-#: ../../Zotlabs/Module/Events.php:706
+#: ../../Zotlabs/Module/Events.php:709
msgid "Failed to remove event"
msgstr "Error al eliminar el evento"
-#: ../../Zotlabs/Module/Fbrowser.php:29 ../../include/apps.php:139
-#: ../../include/conversation.php:1650 ../../include/nav.php:92
+#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:220
+#: ../../include/nav.php:92 ../../include/conversation.php:1632
msgid "Photos"
msgstr "Fotos"
-#: ../../Zotlabs/Module/Ffsapi.php:12
-msgid "Share content from Firefox to $Projectname"
-msgstr "Compartir contenido desde Firefox a $Projectname"
+#: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88
+#: ../../Zotlabs/Module/Admin.php:1406 ../../Zotlabs/Module/Settings.php:591
+#: ../../Zotlabs/Module/Settings.php:617 ../../Zotlabs/Module/Tagrm.php:15
+#: ../../Zotlabs/Module/Tagrm.php:138 ../../include/conversation.php:1259
+msgid "Cancel"
+msgstr "Cancelar"
-#: ../../Zotlabs/Module/Ffsapi.php:15
-msgid "Activate the Firefox $Projectname provider"
-msgstr "Servicio de compartición de Firefox: activar el proveedor $Projectname "
+#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49
+msgid "This site is not a directory server"
+msgstr "Este sitio no es un servidor de directorio"
-#: ../../Zotlabs/Module/Filer.php:52 ../../include/conversation.php:1174
+#: ../../Zotlabs/Module/Dirsearch.php:33
+msgid "This directory server requires an access token"
+msgstr "El servidor de este directorio necesita un \"token\" de acceso"
+
+#: ../../Zotlabs/Module/Filer.php:52
msgid "Save to Folder:"
msgstr "Guardar en carpeta:"
@@ -2753,70 +1478,103 @@ msgstr "Guardar en carpeta:"
msgid "- select -"
msgstr "- seleccionar -"
-#: ../../Zotlabs/Module/Filestorage.php:86
-msgid "Permission Denied."
-msgstr "Permiso denegado"
+#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Admin.php:2033
+#: ../../Zotlabs/Module/Admin.php:2053 ../../Zotlabs/Module/Rbmark.php:32
+#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/text.php:946
+#: ../../include/text.php:958 ../../include/widgets.php:201
+msgid "Save"
+msgstr "Guardar"
-#: ../../Zotlabs/Module/Filestorage.php:102
-msgid "File not found."
-msgstr "Fichero no encontrado."
+#: ../../Zotlabs/Module/Dreport.php:27
+msgid "Invalid message"
+msgstr "Mensaje no válido"
-#: ../../Zotlabs/Module/Filestorage.php:145
-msgid "Edit file permissions"
-msgstr "Modificar los permisos del fichero"
+#: ../../Zotlabs/Module/Dreport.php:59
+msgid "no results"
+msgstr "sin resultados"
-#: ../../Zotlabs/Module/Filestorage.php:154
-msgid "Set/edit permissions"
-msgstr "Establecer/editar los permisos"
+#: ../../Zotlabs/Module/Dreport.php:64
+#, php-format
+msgid "Delivery report for %1$s"
+msgstr "Informe de entrega para %1$s"
-#: ../../Zotlabs/Module/Filestorage.php:155
-msgid "Include all files and sub folders"
-msgstr "Incluir todos los ficheros y subcarpetas"
+#: ../../Zotlabs/Module/Dreport.php:78
+msgid "channel sync processed"
+msgstr "se ha realizado la sincronización del canal"
-#: ../../Zotlabs/Module/Filestorage.php:156
-msgid "Return to file list"
-msgstr "Volver a la lista de ficheros"
+#: ../../Zotlabs/Module/Dreport.php:82
+msgid "queued"
+msgstr "encolado"
-#: ../../Zotlabs/Module/Filestorage.php:158
-msgid "Copy/paste this code to attach file to a post"
-msgstr "Copiar/pegar este código para adjuntar el fichero al envío"
+#: ../../Zotlabs/Module/Dreport.php:86
+msgid "posted"
+msgstr "enviado"
-#: ../../Zotlabs/Module/Filestorage.php:159
-msgid "Copy/paste this URL to link file from a web page"
-msgstr "Copiar/pegar esta dirección para enlazar el fichero desde una página web"
+#: ../../Zotlabs/Module/Dreport.php:90
+msgid "accepted for delivery"
+msgstr "aceptado para el envío"
-#: ../../Zotlabs/Module/Filestorage.php:161
-msgid "Share this file"
-msgstr "Compartir este fichero"
+#: ../../Zotlabs/Module/Dreport.php:94
+msgid "updated"
+msgstr "actualizado"
-#: ../../Zotlabs/Module/Filestorage.php:162
-msgid "Show URL to this file"
-msgstr "Mostrar la dirección de este fichero"
+#: ../../Zotlabs/Module/Dreport.php:97
+msgid "update ignored"
+msgstr "actualización ignorada"
-#: ../../Zotlabs/Module/Filestorage.php:163
-msgid "Notify your contacts about this file"
-msgstr "Avisar a sus contactos sobre este fichero"
+#: ../../Zotlabs/Module/Dreport.php:100
+msgid "permission denied"
+msgstr "permiso denegado"
-#: ../../Zotlabs/Module/Follow.php:31
-msgid "Channel added."
-msgstr "Canal añadido."
+#: ../../Zotlabs/Module/Dreport.php:104
+msgid "recipient not found"
+msgstr "destinatario no encontrado"
-#: ../../Zotlabs/Module/Fsuggest.php:24 ../../Zotlabs/Module/Fsuggest.php:96
-msgid "Contact not found."
-msgstr "Contacto no encontrado"
+#: ../../Zotlabs/Module/Dreport.php:107
+msgid "mail recalled"
+msgstr "mensaje de correo revocado"
+
+#: ../../Zotlabs/Module/Dreport.php:110
+msgid "duplicate mail received"
+msgstr "se ha recibido mensaje duplicado"
-#: ../../Zotlabs/Module/Fsuggest.php:67
-msgid "Friend suggestion sent."
-msgstr "Enviar sugerencia a un amigo."
+#: ../../Zotlabs/Module/Dreport.php:113
+msgid "mail delivered"
+msgstr "correo enviado"
-#: ../../Zotlabs/Module/Fsuggest.php:101
-msgid "Suggest Friends"
-msgstr "Sugerir amigos"
+#: ../../Zotlabs/Module/Editlayout.php:126
+#: ../../Zotlabs/Module/Layouts.php:127 ../../Zotlabs/Module/Layouts.php:186
+msgid "Layout Name"
+msgstr "Nombre de la plantilla"
-#: ../../Zotlabs/Module/Fsuggest.php:103
-#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Sugerir un amigo a %s"
+#: ../../Zotlabs/Module/Editlayout.php:127
+#: ../../Zotlabs/Module/Layouts.php:130
+msgid "Layout Description (Optional)"
+msgstr "Descripción de la plantilla (opcional)"
+
+#: ../../Zotlabs/Module/Editlayout.php:135
+msgid "Edit Layout"
+msgstr "Modificar la plantilla"
+
+#: ../../Zotlabs/Module/Editwebpage.php:143
+msgid "Page link"
+msgstr "Enlace de la página"
+
+#: ../../Zotlabs/Module/Editwebpage.php:169
+msgid "Edit Webpage"
+msgstr "Editar la página web"
+
+#: ../../Zotlabs/Module/Follow.php:34
+msgid "Channel added."
+msgstr "Canal añadido."
+
+#: ../../Zotlabs/Module/Acl.php:227
+msgid "network"
+msgstr "red"
+
+#: ../../Zotlabs/Module/Acl.php:237
+msgid "RSS"
+msgstr "RSS"
#: ../../Zotlabs/Module/Group.php:24
msgid "Privacy group created."
@@ -2827,7 +1585,7 @@ msgid "Could not create privacy group."
msgstr "No se puede crear el grupo de canales"
#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141
-#: ../../include/items.php:5126
+#: ../../include/items.php:3893
msgid "Privacy group not found."
msgstr "Grupo de canales no encontrado."
@@ -2871,6 +1629,32 @@ msgstr "Todos los canales conectados"
msgid "Click on a channel to add or remove."
msgstr "Haga clic en un canal para agregarlo o quitarlo."
+#: ../../Zotlabs/Module/Ffsapi.php:12
+msgid "Share content from Firefox to $Projectname"
+msgstr "Compartir contenido desde Firefox a $Projectname"
+
+#: ../../Zotlabs/Module/Ffsapi.php:15
+msgid "Activate the Firefox $Projectname provider"
+msgstr "Servicio de compartición de Firefox: activar el proveedor $Projectname "
+
+#: ../../Zotlabs/Module/Api.php:61 ../../Zotlabs/Module/Api.php:85
+msgid "Authorize application connection"
+msgstr "Autorizar una conexión de aplicación"
+
+#: ../../Zotlabs/Module/Api.php:62
+msgid "Return to your app and insert this Securty Code:"
+msgstr "Volver a su aplicación e introducir este código de seguridad:"
+
+#: ../../Zotlabs/Module/Api.php:72
+msgid "Please login to continue."
+msgstr "Por favor inicie sesión para continuar."
+
+#: ../../Zotlabs/Module/Api.php:87
+msgid ""
+"Do you want to authorize this application to access your posts and contacts,"
+" and/or create new posts for you?"
+msgstr "¿Desea autorizar a esta aplicación a acceder a sus publicaciones y contactos, y/o crear nuevas publicaciones por usted?"
+
#: ../../Zotlabs/Module/Help.php:26
msgid "Documentation Search"
msgstr "Búsqueda de Documentación"
@@ -2881,7 +1665,7 @@ msgid "Help:"
msgstr "Ayuda:"
#: ../../Zotlabs/Module/Help.php:85 ../../Zotlabs/Module/Help.php:90
-#: ../../Zotlabs/Module/Layouts.php:181 ../../include/apps.php:142
+#: ../../Zotlabs/Module/Layouts.php:183 ../../Zotlabs/Lib/Apps.php:223
#: ../../include/nav.php:159
msgid "Help"
msgstr "Ayuda"
@@ -2890,128 +1674,58 @@ msgstr "Ayuda"
msgid "$Projectname Documentation"
msgstr "Documentación de $Projectname"
-#: ../../Zotlabs/Module/Home.php:61 ../../Zotlabs/Module/Home.php:69
-#: ../../Zotlabs/Module/Siteinfo.php:65
-msgid "$Projectname"
-msgstr "$Projectname"
-
-#: ../../Zotlabs/Module/Home.php:79
-#, php-format
-msgid "Welcome to %s"
-msgstr "Bienvenido a %s"
-
-#: ../../Zotlabs/Module/Id.php:13
-msgid "First Name"
-msgstr "Nombre"
-
-#: ../../Zotlabs/Module/Id.php:14
-msgid "Last Name"
-msgstr "Apellido"
-
-#: ../../Zotlabs/Module/Id.php:15
-msgid "Nickname"
-msgstr "Sobrenombre o Alias"
-
-#: ../../Zotlabs/Module/Id.php:16
-msgid "Full Name"
-msgstr "Nombre completo"
-
-#: ../../Zotlabs/Module/Id.php:19 ../../Zotlabs/Module/Id.php:20
-#: ../../Zotlabs/Module/Id.php:21 ../../include/apps.php:155
-msgid "Profile Photo"
-msgstr "Foto del perfil"
-
-#: ../../Zotlabs/Module/Id.php:22
-msgid "Profile Photo 16px"
-msgstr "Foto del perfil 16px"
-
-#: ../../Zotlabs/Module/Id.php:23
-msgid "Profile Photo 32px"
-msgstr "Foto del perfil 32px"
-
-#: ../../Zotlabs/Module/Id.php:24
-msgid "Profile Photo 48px"
-msgstr "Foto del perfil 48px"
-
-#: ../../Zotlabs/Module/Id.php:25
-msgid "Profile Photo 64px"
-msgstr "Foto del perfil 64px"
-
-#: ../../Zotlabs/Module/Id.php:26
-msgid "Profile Photo 80px"
-msgstr "Foto del perfil 80px"
-
-#: ../../Zotlabs/Module/Id.php:27
-msgid "Profile Photo 128px"
-msgstr "Foto del perfil 128px"
-
-#: ../../Zotlabs/Module/Id.php:28
-msgid "Timezone"
-msgstr "Huso horario"
-
-#: ../../Zotlabs/Module/Id.php:29 ../../Zotlabs/Module/Profiles.php:735
-msgid "Homepage URL"
-msgstr "Dirección de la página personal"
-
-#: ../../Zotlabs/Module/Id.php:30 ../../include/apps.php:153
-msgid "Language"
-msgstr "Idioma"
-
-#: ../../Zotlabs/Module/Id.php:31
-msgid "Birth Year"
-msgstr "Año de nacimiento"
+#: ../../Zotlabs/Module/Filestorage.php:88
+msgid "Permission Denied."
+msgstr "Permiso denegado"
-#: ../../Zotlabs/Module/Id.php:32
-msgid "Birth Month"
-msgstr "Mes de nacimiento"
+#: ../../Zotlabs/Module/Filestorage.php:104
+msgid "File not found."
+msgstr "Fichero no encontrado."
-#: ../../Zotlabs/Module/Id.php:33
-msgid "Birth Day"
-msgstr "Día de nacimiento"
+#: ../../Zotlabs/Module/Filestorage.php:147
+msgid "Edit file permissions"
+msgstr "Modificar los permisos del fichero"
-#: ../../Zotlabs/Module/Id.php:34
-msgid "Birthdate"
-msgstr "Fecha de nacimiento"
+#: ../../Zotlabs/Module/Filestorage.php:156
+msgid "Set/edit permissions"
+msgstr "Establecer/editar los permisos"
-#: ../../Zotlabs/Module/Id.php:35 ../../Zotlabs/Module/Profiles.php:453
-msgid "Gender"
-msgstr "Género"
+#: ../../Zotlabs/Module/Filestorage.php:157
+msgid "Include all files and sub folders"
+msgstr "Incluir todos los ficheros y subcarpetas"
-#: ../../Zotlabs/Module/Id.php:108 ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
-msgid "Male"
-msgstr "Hombre"
+#: ../../Zotlabs/Module/Filestorage.php:158
+msgid "Return to file list"
+msgstr "Volver a la lista de ficheros"
-#: ../../Zotlabs/Module/Id.php:110 ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
-msgid "Female"
-msgstr "Mujer"
+#: ../../Zotlabs/Module/Filestorage.php:160
+msgid "Copy/paste this code to attach file to a post"
+msgstr "Copiar/pegar este código para adjuntar el fichero al envío"
-#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:193
-msgid "webpage"
-msgstr "página web"
+#: ../../Zotlabs/Module/Filestorage.php:161
+msgid "Copy/paste this URL to link file from a web page"
+msgstr "Copiar/pegar esta dirección para enlazar el fichero desde una página web"
-#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:199
-msgid "block"
-msgstr "bloque"
+#: ../../Zotlabs/Module/Filestorage.php:163
+msgid "Share this file"
+msgstr "Compartir este fichero"
-#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:196
-msgid "layout"
-msgstr "plantilla"
+#: ../../Zotlabs/Module/Filestorage.php:164
+msgid "Show URL to this file"
+msgstr "Mostrar la dirección de este fichero"
-#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:202
-msgid "menu"
-msgstr "menú"
+#: ../../Zotlabs/Module/Filestorage.php:165
+msgid "Notify your contacts about this file"
+msgstr "Avisar a sus contactos sobre este fichero"
-#: ../../Zotlabs/Module/Impel.php:196
-#, php-format
-msgid "%s element installed"
-msgstr "%s elemento instalado"
+#: ../../Zotlabs/Module/Apps.php:47 ../../include/widgets.php:102
+#: ../../include/nav.php:163
+msgid "Apps"
+msgstr "Aplicaciones (apps)"
-#: ../../Zotlabs/Module/Impel.php:199
-#, php-format
-msgid "%s element installation failed"
-msgstr "Elemento con instalación fallida: %s"
+#: ../../Zotlabs/Module/Attach.php:13
+msgid "Item not available."
+msgstr "Elemento no disponible"
#: ../../Zotlabs/Module/Import.php:32
#, php-format
@@ -3037,7 +1751,7 @@ msgstr "El fichero importado está vacío."
msgid "Warning: Database versions differ by %1$d updates."
msgstr "Atención: Las versiones de la base de datos difieren en %1$d actualizaciones."
-#: ../../Zotlabs/Module/Import.php:150 ../../include/import.php:80
+#: ../../Zotlabs/Module/Import.php:150 ../../include/import.php:86
msgid "Cloned channel not found. Import failed."
msgstr "No se ha podido importar el canal porque el canal clonado no se ha encontrado."
@@ -3045,48 +1759,48 @@ msgstr "No se ha podido importar el canal porque el canal clonado no se ha encon
msgid "No channel. Import failed."
msgstr "No hay canal. La importación ha fallado"
-#: ../../Zotlabs/Module/Import.php:506
-#: ../../include/Import/import_diaspora.php:143
+#: ../../Zotlabs/Module/Import.php:510
+#: ../../include/Import/import_diaspora.php:142
msgid "Import completed."
msgstr "Importación completada."
-#: ../../Zotlabs/Module/Import.php:528
+#: ../../Zotlabs/Module/Import.php:532
msgid "You must be logged in to use this feature."
msgstr "Debe estar registrado para poder usar esta funcionalidad."
-#: ../../Zotlabs/Module/Import.php:533
+#: ../../Zotlabs/Module/Import.php:537
msgid "Import Channel"
msgstr "Importar canal"
-#: ../../Zotlabs/Module/Import.php:534
+#: ../../Zotlabs/Module/Import.php:538
msgid ""
"Use this form to import an existing channel from a different server/hub. You"
" may retrieve the channel identity from the old server/hub via the network "
"or provide an export file."
msgstr "Emplee este formulario para importar un canal desde un servidor/hub diferente. Puede recuperar el canal desde el antiguo servidor/hub a través de la red o proporcionando un fichero de exportación."
-#: ../../Zotlabs/Module/Import.php:535
+#: ../../Zotlabs/Module/Import.php:539
#: ../../Zotlabs/Module/Import_items.php:119
msgid "File to Upload"
msgstr "Fichero para subir"
-#: ../../Zotlabs/Module/Import.php:536
+#: ../../Zotlabs/Module/Import.php:540
msgid "Or provide the old server/hub details"
msgstr "O proporcione los detalles de su antiguo servidor/hub"
-#: ../../Zotlabs/Module/Import.php:537
+#: ../../Zotlabs/Module/Import.php:541
msgid "Your old identity address (xyz@example.com)"
msgstr "Su identidad en el antiguo servidor (canal@ejemplo.com)"
-#: ../../Zotlabs/Module/Import.php:538
+#: ../../Zotlabs/Module/Import.php:542
msgid "Your old login email address"
msgstr "Su antigua dirección de correo electrónico"
-#: ../../Zotlabs/Module/Import.php:539
+#: ../../Zotlabs/Module/Import.php:543
msgid "Your old login password"
msgstr "Su antigua contraseña"
-#: ../../Zotlabs/Module/Import.php:540
+#: ../../Zotlabs/Module/Import.php:544
msgid ""
"For either option, please choose whether to make this hub your new primary "
"address, or whether your old location should continue this role. You will be"
@@ -3094,105 +1808,22 @@ msgid ""
"primary location for files, photos, and media."
msgstr "Para cualquiera de las opciones, elija si hacer de este servidor su nueva dirección primaria, o si su antigua dirección debe continuar con este papel. Usted podrá publicar desde cualquier ubicación, pero sólo una puede estar marcada como la ubicación principal para los ficheros, fotos y otras imágenes o vídeos."
-#: ../../Zotlabs/Module/Import.php:541
+#: ../../Zotlabs/Module/Import.php:545
msgid "Make this hub my primary location"
msgstr "Convertir este servidor en mi ubicación primaria"
-#: ../../Zotlabs/Module/Import.php:542
+#: ../../Zotlabs/Module/Import.php:546
msgid ""
"Import existing posts if possible (experimental - limited by available "
"memory"
msgstr "Importar el contenido publicado si es posible (experimental - limitado por la memoria disponible"
-#: ../../Zotlabs/Module/Import.php:543
+#: ../../Zotlabs/Module/Import.php:547
msgid ""
"This process may take several minutes to complete. Please submit the form "
"only once and leave this page open until finished."
msgstr "Este proceso puede tardar varios minutos en completarse. Por favor envíe el formulario una sola vez y mantenga esta página abierta hasta que termine."
-#: ../../Zotlabs/Module/Import_items.php:102
-msgid "Import completed"
-msgstr "Importación completada"
-
-#: ../../Zotlabs/Module/Import_items.php:117
-msgid "Import Items"
-msgstr "Importar elementos"
-
-#: ../../Zotlabs/Module/Import_items.php:118
-msgid ""
-"Use this form to import existing posts and content from an export file."
-msgstr "Utilice este formulario para importar entradas existentes y contenido desde un archivo de exportación."
-
-#: ../../Zotlabs/Module/Invite.php:29
-msgid "Total invitation limit exceeded."
-msgstr "Se ha superado el límite máximo de invitaciones."
-
-#: ../../Zotlabs/Module/Invite.php:53
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s : No es una dirección de correo electrónico válida. "
-
-#: ../../Zotlabs/Module/Invite.php:63
-msgid "Please join us on $Projectname"
-msgstr "Únase a nosotros en $Projectname"
-
-#: ../../Zotlabs/Module/Invite.php:74
-msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr "Excedido el límite de invitaciones. Por favor, contacte con el Administrador de su sitio."
-
-#: ../../Zotlabs/Module/Invite.php:79
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s : Falló el envío del mensaje."
-
-#: ../../Zotlabs/Module/Invite.php:83
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d mensajes enviados."
-msgstr[1] "%d mensajes enviados."
-
-#: ../../Zotlabs/Module/Invite.php:102
-msgid "You have no more invitations available"
-msgstr "No tiene más invitaciones disponibles"
-
-#: ../../Zotlabs/Module/Invite.php:133
-msgid "Send invitations"
-msgstr "Enviar invitaciones"
-
-#: ../../Zotlabs/Module/Invite.php:134
-msgid "Enter email addresses, one per line:"
-msgstr "Introduzca las direcciones de correo electrónico, una por línea:"
-
-#: ../../Zotlabs/Module/Invite.php:135 ../../Zotlabs/Module/Mail.php:250
-msgid "Your message:"
-msgstr "Su mensaje:"
-
-#: ../../Zotlabs/Module/Invite.php:136
-msgid "Please join my community on $Projectname."
-msgstr "Por favor, únase a mi comunidad en $Projectname."
-
-#: ../../Zotlabs/Module/Invite.php:138
-msgid "You will need to supply this invitation code:"
-msgstr "Tendrá que suministrar este código de invitación:"
-
-#: ../../Zotlabs/Module/Invite.php:139
-msgid ""
-"1. Register at any $Projectname location (they are all inter-connected)"
-msgstr "1. Regístrese en cualquier sitio de $Projectname (están todos interconectados)"
-
-#: ../../Zotlabs/Module/Invite.php:141
-msgid "2. Enter my $Projectname network address into the site searchbar."
-msgstr "2. Introduzca mi dirección $Projectname en la caja de búsqueda del sitio."
-
-#: ../../Zotlabs/Module/Invite.php:142
-msgid "or visit"
-msgstr "o visitar"
-
-#: ../../Zotlabs/Module/Invite.php:144
-msgid "3. Click [Connect]"
-msgstr "3. Pulse [conectar]"
-
#: ../../Zotlabs/Module/Item.php:178
msgid "Unable to locate original post."
msgstr "No ha sido posible encontrar la entrada original."
@@ -3227,22 +1858,151 @@ msgstr "Ha alcanzado su límite de %1$.0f entradas en la página principal."
msgid "You have reached your limit of %1$.0f webpages."
msgstr "Ha alcanzado su límite de %1$.0f páginas web."
-#: ../../Zotlabs/Module/Layouts.php:179 ../../include/text.php:2253
+#: ../../Zotlabs/Module/Layouts.php:181 ../../include/text.php:2267
msgid "Layouts"
msgstr "Plantillas"
-#: ../../Zotlabs/Module/Layouts.php:181
+#: ../../Zotlabs/Module/Layouts.php:183
msgid "Comanche page description language help"
msgstr "Página de ayuda del lenguaje de descripción de páginas (PDL) Comanche"
-#: ../../Zotlabs/Module/Layouts.php:185
+#: ../../Zotlabs/Module/Layouts.php:187
msgid "Layout Description"
msgstr "Descripción de la plantilla"
-#: ../../Zotlabs/Module/Layouts.php:190
+#: ../../Zotlabs/Module/Layouts.php:192
msgid "Download PDL file"
msgstr "Descargar el fichero PDL"
+#: ../../Zotlabs/Module/Home.php:61 ../../Zotlabs/Module/Home.php:69
+#: ../../Zotlabs/Module/Siteinfo.php:65
+msgid "$Projectname"
+msgstr "$Projectname"
+
+#: ../../Zotlabs/Module/Home.php:79
+#, php-format
+msgid "Welcome to %s"
+msgstr "Bienvenido a %s"
+
+#: ../../Zotlabs/Module/Id.php:13
+msgid "First Name"
+msgstr "Nombre"
+
+#: ../../Zotlabs/Module/Id.php:14
+msgid "Last Name"
+msgstr "Apellido"
+
+#: ../../Zotlabs/Module/Id.php:15
+msgid "Nickname"
+msgstr "Sobrenombre o Alias"
+
+#: ../../Zotlabs/Module/Id.php:16
+msgid "Full Name"
+msgstr "Nombre completo"
+
+#: ../../Zotlabs/Module/Id.php:17 ../../Zotlabs/Module/Id.php:18
+#: ../../Zotlabs/Module/Admin.php:1035 ../../Zotlabs/Module/Admin.php:1047
+#: ../../include/network.php:2151 ../../boot.php:1705
+msgid "Email"
+msgstr "Correo electrónico"
+
+#: ../../Zotlabs/Module/Id.php:19 ../../Zotlabs/Module/Id.php:20
+#: ../../Zotlabs/Module/Id.php:21 ../../Zotlabs/Lib/Apps.php:236
+msgid "Profile Photo"
+msgstr "Foto del perfil"
+
+#: ../../Zotlabs/Module/Id.php:22
+msgid "Profile Photo 16px"
+msgstr "Foto del perfil 16px"
+
+#: ../../Zotlabs/Module/Id.php:23
+msgid "Profile Photo 32px"
+msgstr "Foto del perfil 32px"
+
+#: ../../Zotlabs/Module/Id.php:24
+msgid "Profile Photo 48px"
+msgstr "Foto del perfil 48px"
+
+#: ../../Zotlabs/Module/Id.php:25
+msgid "Profile Photo 64px"
+msgstr "Foto del perfil 64px"
+
+#: ../../Zotlabs/Module/Id.php:26
+msgid "Profile Photo 80px"
+msgstr "Foto del perfil 80px"
+
+#: ../../Zotlabs/Module/Id.php:27
+msgid "Profile Photo 128px"
+msgstr "Foto del perfil 128px"
+
+#: ../../Zotlabs/Module/Id.php:28
+msgid "Timezone"
+msgstr "Huso horario"
+
+#: ../../Zotlabs/Module/Id.php:29 ../../Zotlabs/Module/Profiles.php:731
+msgid "Homepage URL"
+msgstr "Dirección de la página personal"
+
+#: ../../Zotlabs/Module/Id.php:30 ../../Zotlabs/Lib/Apps.php:234
+msgid "Language"
+msgstr "Idioma"
+
+#: ../../Zotlabs/Module/Id.php:31
+msgid "Birth Year"
+msgstr "Año de nacimiento"
+
+#: ../../Zotlabs/Module/Id.php:32
+msgid "Birth Month"
+msgstr "Mes de nacimiento"
+
+#: ../../Zotlabs/Module/Id.php:33
+msgid "Birth Day"
+msgstr "Día de nacimiento"
+
+#: ../../Zotlabs/Module/Id.php:34
+msgid "Birthdate"
+msgstr "Fecha de nacimiento"
+
+#: ../../Zotlabs/Module/Id.php:35 ../../Zotlabs/Module/Profiles.php:454
+msgid "Gender"
+msgstr "Género"
+
+#: ../../Zotlabs/Module/Id.php:108 ../../include/selectors.php:49
+#: ../../include/selectors.php:66
+msgid "Male"
+msgstr "Hombre"
+
+#: ../../Zotlabs/Module/Id.php:110 ../../include/selectors.php:49
+#: ../../include/selectors.php:66
+msgid "Female"
+msgstr "Mujer"
+
+#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:192
+msgid "webpage"
+msgstr "página web"
+
+#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:198
+msgid "block"
+msgstr "bloque"
+
+#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:195
+msgid "layout"
+msgstr "plantilla"
+
+#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:201
+msgid "menu"
+msgstr "menú"
+
+#: ../../Zotlabs/Module/Impel.php:196
+#, php-format
+msgid "%s element installed"
+msgstr "%s elemento instalado"
+
+#: ../../Zotlabs/Module/Impel.php:199
+#, php-format
+msgid "%s element installation failed"
+msgstr "Elemento con instalación fallida: %s"
+
#: ../../Zotlabs/Module/Like.php:19
msgid "Like/Dislike"
msgstr "Me gusta/No me gusta"
@@ -3337,6 +2097,89 @@ msgstr "Acción completada."
msgid "Thank you."
msgstr "Gracias."
+#: ../../Zotlabs/Module/Import_items.php:102
+msgid "Import completed"
+msgstr "Importación completada"
+
+#: ../../Zotlabs/Module/Import_items.php:117
+msgid "Import Items"
+msgstr "Importar elementos"
+
+#: ../../Zotlabs/Module/Import_items.php:118
+msgid ""
+"Use this form to import existing posts and content from an export file."
+msgstr "Utilice este formulario para importar entradas existentes y contenido desde un archivo de exportación."
+
+#: ../../Zotlabs/Module/Invite.php:29
+msgid "Total invitation limit exceeded."
+msgstr "Se ha superado el límite máximo de invitaciones."
+
+#: ../../Zotlabs/Module/Invite.php:53
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s : No es una dirección de correo electrónico válida. "
+
+#: ../../Zotlabs/Module/Invite.php:63
+msgid "Please join us on $Projectname"
+msgstr "Únase a nosotros en $Projectname"
+
+#: ../../Zotlabs/Module/Invite.php:74
+msgid "Invitation limit exceeded. Please contact your site administrator."
+msgstr "Excedido el límite de invitaciones. Por favor, contacte con el Administrador de su sitio."
+
+#: ../../Zotlabs/Module/Invite.php:79
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s : Falló el envío del mensaje."
+
+#: ../../Zotlabs/Module/Invite.php:83
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d mensajes enviados."
+msgstr[1] "%d mensajes enviados."
+
+#: ../../Zotlabs/Module/Invite.php:102
+msgid "You have no more invitations available"
+msgstr "No tiene más invitaciones disponibles"
+
+#: ../../Zotlabs/Module/Invite.php:133
+msgid "Send invitations"
+msgstr "Enviar invitaciones"
+
+#: ../../Zotlabs/Module/Invite.php:134
+msgid "Enter email addresses, one per line:"
+msgstr "Introduzca las direcciones de correo electrónico, una por línea:"
+
+#: ../../Zotlabs/Module/Invite.php:135 ../../Zotlabs/Module/Mail.php:249
+msgid "Your message:"
+msgstr "Su mensaje:"
+
+#: ../../Zotlabs/Module/Invite.php:136
+msgid "Please join my community on $Projectname."
+msgstr "Por favor, únase a mi comunidad en $Projectname."
+
+#: ../../Zotlabs/Module/Invite.php:138
+msgid "You will need to supply this invitation code:"
+msgstr "Tendrá que suministrar este código de invitación:"
+
+#: ../../Zotlabs/Module/Invite.php:139
+msgid ""
+"1. Register at any $Projectname location (they are all inter-connected)"
+msgstr "1. Regístrese en cualquier sitio de $Projectname (están todos interconectados)"
+
+#: ../../Zotlabs/Module/Invite.php:141
+msgid "2. Enter my $Projectname network address into the site searchbar."
+msgstr "2. Introduzca mi dirección $Projectname en la caja de búsqueda del sitio."
+
+#: ../../Zotlabs/Module/Invite.php:142
+msgid "or visit"
+msgstr "o visitar"
+
+#: ../../Zotlabs/Module/Invite.php:144
+msgid "3. Click [Connect]"
+msgstr "3. Pulse [conectar]"
+
#: ../../Zotlabs/Module/Lockview.php:61
msgid "Remote privacy information not available."
msgstr "La información privada remota no está disponible."
@@ -3371,6 +2214,11 @@ msgstr "No encontrada ninguna dirección."
msgid "Manage Channel Locations"
msgstr "Gestionar las direcciones del canal"
+#: ../../Zotlabs/Module/Locs.php:118 ../../Zotlabs/Module/Profiles.php:470
+#: ../../Zotlabs/Module/Admin.php:1224
+msgid "Address"
+msgstr "Dirección"
+
#: ../../Zotlabs/Module/Locs.php:119
msgid "Primary"
msgstr "Primario"
@@ -3397,80 +2245,7 @@ msgstr "Cuando sea posible, elimine una ubicación iniciando sesión en el sitio
msgid "Use this form to drop the location if the hub is no longer operating."
msgstr "Utilice este formulario para eliminar la dirección si el \"hub\" no está funcionando desde hace tiempo."
-#: ../../Zotlabs/Module/Lostpass.php:19
-msgid "No valid account found."
-msgstr "No se ha encontrado una cuenta válida."
-
-#: ../../Zotlabs/Module/Lostpass.php:33
-msgid "Password reset request issued. Check your email."
-msgstr "Se ha recibido una solicitud de restablecimiento de contraseña. Consulte su correo electrónico."
-
-#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:107
-#, php-format
-msgid "Site Member (%s)"
-msgstr "Usuario del sitio (%s)"
-
-#: ../../Zotlabs/Module/Lostpass.php:44
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "Se ha solicitado restablecer la contraseña en %s"
-
-#: ../../Zotlabs/Module/Lostpass.php:67
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado."
-
-#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1623
-msgid "Password Reset"
-msgstr "Restablecer la contraseña"
-
-#: ../../Zotlabs/Module/Lostpass.php:91
-msgid "Your password has been reset as requested."
-msgstr "Su contraseña ha sido restablecida según lo solicitó."
-
-#: ../../Zotlabs/Module/Lostpass.php:92
-msgid "Your new password is"
-msgstr "Su nueva contraseña es"
-
-#: ../../Zotlabs/Module/Lostpass.php:93
-msgid "Save or copy your new password - and then"
-msgstr "Guarde o copie su nueva contraseña - y después"
-
-#: ../../Zotlabs/Module/Lostpass.php:94
-msgid "click here to login"
-msgstr "pulse aquí para conectarse"
-
-#: ../../Zotlabs/Module/Lostpass.php:95
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Puede cambiar la contraseña en la página <em>Ajustes</em> una vez iniciada la sesión."
-
-#: ../../Zotlabs/Module/Lostpass.php:112
-#, php-format
-msgid "Your password has changed at %s"
-msgstr "Su contraseña en %s ha sido cambiada"
-
-#: ../../Zotlabs/Module/Lostpass.php:127
-msgid "Forgot your Password?"
-msgstr "¿Ha olvidado su contraseña?"
-
-#: ../../Zotlabs/Module/Lostpass.php:128
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Introduzca y envíe su dirección de correo electrónico para el restablecimiento de su contraseña. Luego revise su correo para obtener más instrucciones."
-
-#: ../../Zotlabs/Module/Lostpass.php:129
-msgid "Email Address"
-msgstr "Dirección de correo electrónico"
-
-#: ../../Zotlabs/Module/Lostpass.php:130
-msgid "Reset"
-msgstr "Reiniciar"
-
-#: ../../Zotlabs/Module/Magic.php:73
+#: ../../Zotlabs/Module/Magic.php:71
msgid "Hub not found."
msgstr "Servidor no encontrado"
@@ -3478,145 +2253,216 @@ msgstr "Servidor no encontrado"
msgid "Unable to lookup recipient."
msgstr "Imposible asociar a un destinatario."
-#: ../../Zotlabs/Module/Mail.php:46
+#: ../../Zotlabs/Module/Mail.php:45
msgid "Unable to communicate with requested channel."
msgstr "Imposible comunicar con el canal solicitado."
-#: ../../Zotlabs/Module/Mail.php:53
+#: ../../Zotlabs/Module/Mail.php:52
msgid "Cannot verify requested channel."
msgstr "No se puede verificar el canal solicitado."
-#: ../../Zotlabs/Module/Mail.php:79
+#: ../../Zotlabs/Module/Mail.php:78
msgid "Selected channel has private message restrictions. Send failed."
msgstr "El canal seleccionado tiene restricciones sobre los mensajes privados. El envío falló."
-#: ../../Zotlabs/Module/Mail.php:144
+#: ../../Zotlabs/Module/Mail.php:143
msgid "Messages"
msgstr "Mensajes"
-#: ../../Zotlabs/Module/Mail.php:179
+#: ../../Zotlabs/Module/Mail.php:178
msgid "Message recalled."
msgstr "Mensaje revocado."
-#: ../../Zotlabs/Module/Mail.php:192
+#: ../../Zotlabs/Module/Mail.php:191
msgid "Conversation removed."
msgstr "Conversación eliminada."
-#: ../../Zotlabs/Module/Mail.php:235
+#: ../../Zotlabs/Module/Mail.php:206 ../../Zotlabs/Module/Mail.php:315
+msgid "Expires YYYY-MM-DD HH:MM"
+msgstr "Caduca YYYY-MM-DD HH:MM"
+
+#: ../../Zotlabs/Module/Mail.php:234
msgid "Requested channel is not in this network"
msgstr "El canal solicitado no existe en esta red"
-#: ../../Zotlabs/Module/Mail.php:243
+#: ../../Zotlabs/Module/Mail.php:242
msgid "Send Private Message"
msgstr "Enviar un mensaje privado"
-#: ../../Zotlabs/Module/Mail.php:244 ../../Zotlabs/Module/Mail.php:374
+#: ../../Zotlabs/Module/Mail.php:243 ../../Zotlabs/Module/Mail.php:368
msgid "To:"
msgstr "Para:"
-#: ../../Zotlabs/Module/Mail.php:247 ../../Zotlabs/Module/Mail.php:376
+#: ../../Zotlabs/Module/Mail.php:246 ../../Zotlabs/Module/Mail.php:370
msgid "Subject:"
msgstr "Asunto:"
-#: ../../Zotlabs/Module/Mail.php:254
+#: ../../Zotlabs/Module/Mail.php:251 ../../Zotlabs/Module/Mail.php:376
+#: ../../include/conversation.php:1220
+msgid "Attach file"
+msgstr "Adjuntar fichero"
+
+#: ../../Zotlabs/Module/Mail.php:253
msgid "Send"
msgstr "Enviar"
-#: ../../Zotlabs/Module/Mail.php:346
+#: ../../Zotlabs/Module/Mail.php:256 ../../Zotlabs/Module/Mail.php:381
+#: ../../include/conversation.php:1251
+msgid "Set expiration date"
+msgstr "Configurar fecha de caducidad"
+
+#: ../../Zotlabs/Module/Mail.php:340
msgid "Delete message"
msgstr "Borrar mensaje"
-#: ../../Zotlabs/Module/Mail.php:347
+#: ../../Zotlabs/Module/Mail.php:341
msgid "Delivery report"
msgstr "Informe de transmisión"
-#: ../../Zotlabs/Module/Mail.php:348
+#: ../../Zotlabs/Module/Mail.php:342
msgid "Recall message"
msgstr "Revocar el mensaje"
-#: ../../Zotlabs/Module/Mail.php:350
+#: ../../Zotlabs/Module/Mail.php:344
msgid "Message has been recalled."
msgstr "El mensaje ha sido revocado."
-#: ../../Zotlabs/Module/Mail.php:367
+#: ../../Zotlabs/Module/Mail.php:361
msgid "Delete Conversation"
msgstr "Eliminar conversación"
-#: ../../Zotlabs/Module/Mail.php:369
+#: ../../Zotlabs/Module/Mail.php:363
msgid ""
"No secure communications available. You <strong>may</strong> be able to "
"respond from the sender's profile page."
msgstr "Comunicación segura no disponible. Pero <strong>puede</strong> responder desde la página del perfil del remitente."
-#: ../../Zotlabs/Module/Mail.php:373
+#: ../../Zotlabs/Module/Mail.php:367
msgid "Send Reply"
msgstr "Responder"
-#: ../../Zotlabs/Module/Mail.php:378
+#: ../../Zotlabs/Module/Mail.php:372
#, php-format
msgid "Your message for %s (%s):"
msgstr "Su mensaje para %s (%s):"
-#: ../../Zotlabs/Module/Manage.php:134
+#: ../../Zotlabs/Module/Manage.php:136
#: ../../Zotlabs/Module/New_channel.php:121
#, php-format
msgid "You have created %1$.0f of %2$.0f allowed channels."
msgstr "Ha creado %1$.0f de %2$.0f canales permitidos."
-#: ../../Zotlabs/Module/Manage.php:141
+#: ../../Zotlabs/Module/Manage.php:143
msgid "Create a new channel"
msgstr "Crear un nuevo canal"
-#: ../../Zotlabs/Module/Manage.php:162 ../../include/apps.php:132
+#: ../../Zotlabs/Module/Manage.php:164 ../../Zotlabs/Lib/Apps.php:213
#: ../../include/nav.php:206
msgid "Channel Manager"
msgstr "Administración de canales"
-#: ../../Zotlabs/Module/Manage.php:163
+#: ../../Zotlabs/Module/Manage.php:165
msgid "Current Channel"
msgstr "Canal actual"
-#: ../../Zotlabs/Module/Manage.php:165
+#: ../../Zotlabs/Module/Manage.php:167
msgid "Switch to one of your channels by selecting it."
msgstr "Cambiar a uno de sus canales seleccionándolo."
-#: ../../Zotlabs/Module/Manage.php:166
+#: ../../Zotlabs/Module/Manage.php:168
msgid "Default Channel"
msgstr "Canal principal"
-#: ../../Zotlabs/Module/Manage.php:167
+#: ../../Zotlabs/Module/Manage.php:169
msgid "Make Default"
msgstr "Convertir en predeterminado"
-#: ../../Zotlabs/Module/Manage.php:170
+#: ../../Zotlabs/Module/Manage.php:172
#, php-format
msgid "%d new messages"
msgstr "%d mensajes nuevos"
-#: ../../Zotlabs/Module/Manage.php:171
+#: ../../Zotlabs/Module/Manage.php:173
#, php-format
msgid "%d new introductions"
msgstr "%d nuevas isolicitudes de conexión"
-#: ../../Zotlabs/Module/Manage.php:173
+#: ../../Zotlabs/Module/Manage.php:175
msgid "Delegated Channel"
msgstr "Canal delegado"
-#: ../../Zotlabs/Module/Match.php:26
-msgid "Profile Match"
-msgstr "Perfil compatible"
+#: ../../Zotlabs/Module/Lostpass.php:19
+msgid "No valid account found."
+msgstr "No se ha encontrado una cuenta válida."
-#: ../../Zotlabs/Module/Match.php:35
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr "No hay palabras clave en el perfil principal para poder encontrar perfiles compatibles. Por favor, añada palabras clave a su perfil principal."
+#: ../../Zotlabs/Module/Lostpass.php:33
+msgid "Password reset request issued. Check your email."
+msgstr "Se ha recibido una solicitud de restablecimiento de contraseña. Consulte su correo electrónico."
-#: ../../Zotlabs/Module/Match.php:67
-msgid "is interested in:"
-msgstr "está interesado en:"
+#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:107
+#, php-format
+msgid "Site Member (%s)"
+msgstr "Usuario del sitio (%s)"
-#: ../../Zotlabs/Module/Match.php:74
-msgid "No matches"
-msgstr "No se han encontrado perfiles compatibles"
+#: ../../Zotlabs/Module/Lostpass.php:44
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "Se ha solicitado restablecer la contraseña en %s"
+
+#: ../../Zotlabs/Module/Lostpass.php:67
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado."
+
+#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1711
+msgid "Password Reset"
+msgstr "Restablecer la contraseña"
+
+#: ../../Zotlabs/Module/Lostpass.php:91
+msgid "Your password has been reset as requested."
+msgstr "Su contraseña ha sido restablecida según lo solicitó."
+
+#: ../../Zotlabs/Module/Lostpass.php:92
+msgid "Your new password is"
+msgstr "Su nueva contraseña es"
+
+#: ../../Zotlabs/Module/Lostpass.php:93
+msgid "Save or copy your new password - and then"
+msgstr "Guarde o copie su nueva contraseña - y después"
+
+#: ../../Zotlabs/Module/Lostpass.php:94
+msgid "click here to login"
+msgstr "pulse aquí para conectarse"
+
+#: ../../Zotlabs/Module/Lostpass.php:95
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Puede cambiar la contraseña en la página <em>Ajustes</em> una vez iniciada la sesión."
+
+#: ../../Zotlabs/Module/Lostpass.php:112
+#, php-format
+msgid "Your password has changed at %s"
+msgstr "Su contraseña en %s ha sido cambiada"
+
+#: ../../Zotlabs/Module/Lostpass.php:127
+msgid "Forgot your Password?"
+msgstr "¿Ha olvidado su contraseña?"
+
+#: ../../Zotlabs/Module/Lostpass.php:128
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Introduzca y envíe su dirección de correo electrónico para el restablecimiento de su contraseña. Luego revise su correo para obtener más instrucciones."
+
+#: ../../Zotlabs/Module/Lostpass.php:129
+msgid "Email Address"
+msgstr "Dirección de correo electrónico"
+
+#: ../../Zotlabs/Module/Lostpass.php:130
+msgid "Reset"
+msgstr "Reiniciar"
#: ../../Zotlabs/Module/Menu.php:49
msgid "Unable to update menu."
@@ -3654,7 +2500,7 @@ msgstr "El menú se puede usar para guardar marcadores"
msgid "Submit and proceed"
msgstr "Enviar y proceder"
-#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2252
+#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2266
msgid "Menus"
msgstr "Menús"
@@ -3715,6 +2561,74 @@ msgstr "Permitir marcadores"
msgid "Not found."
msgstr "No encontrado."
+#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:260
+#, php-format
+msgctxt "mood"
+msgid "%1$s is %2$s"
+msgstr "%1$s está %2$s"
+
+#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:225
+msgid "Mood"
+msgstr "Estado de ánimo"
+
+#: ../../Zotlabs/Module/Mood.php:136
+msgid "Set your current mood and tell your friends"
+msgstr "Describir su estado de ánimo para comunicárselo a sus amigos"
+
+#: ../../Zotlabs/Module/Match.php:26
+msgid "Profile Match"
+msgstr "Perfil compatible"
+
+#: ../../Zotlabs/Module/Match.php:35
+msgid "No keywords to match. Please add keywords to your default profile."
+msgstr "No hay palabras clave en el perfil principal para poder encontrar perfiles compatibles. Por favor, añada palabras clave a su perfil principal."
+
+#: ../../Zotlabs/Module/Match.php:67
+msgid "is interested in:"
+msgstr "está interesado en:"
+
+#: ../../Zotlabs/Module/Match.php:74
+msgid "No matches"
+msgstr "No se han encontrado perfiles compatibles"
+
+#: ../../Zotlabs/Module/Network.php:96
+msgid "No such group"
+msgstr "No se encuentra el grupo"
+
+#: ../../Zotlabs/Module/Network.php:136
+msgid "No such channel"
+msgstr "No se encuentra el canal"
+
+#: ../../Zotlabs/Module/Network.php:141
+msgid "forum"
+msgstr "foro"
+
+#: ../../Zotlabs/Module/Network.php:153
+msgid "Search Results For:"
+msgstr "Buscar resultados para:"
+
+#: ../../Zotlabs/Module/Network.php:217
+msgid "Privacy group is empty"
+msgstr "El grupo de canales está vacío"
+
+#: ../../Zotlabs/Module/Network.php:226
+msgid "Privacy group: "
+msgstr "Grupo de canales: "
+
+#: ../../Zotlabs/Module/Network.php:252
+msgid "Invalid connection."
+msgstr "Conexión no válida."
+
+#: ../../Zotlabs/Module/Notify.php:57
+#: ../../Zotlabs/Module/Notifications.php:98
+msgid "No more system notifications."
+msgstr "No hay más notificaciones del sistema"
+
+#: ../../Zotlabs/Module/Notify.php:61
+#: ../../Zotlabs/Module/Notifications.php:102
+msgid "System Notifications"
+msgstr "Notificaciones del sistema"
+
#: ../../Zotlabs/Module/Mitem.php:52
msgid "Unable to create element."
msgstr "Imposible crear el elemento."
@@ -3732,7 +2646,7 @@ msgid "Menu Item Permissions"
msgstr "Permisos del elemento del menú"
#: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:227
-#: ../../Zotlabs/Module/Settings.php:1066
+#: ../../Zotlabs/Module/Settings.php:1068
msgid "(click to open/close)"
msgstr "(pulsar para abrir o cerrar)"
@@ -3832,48 +2746,6 @@ msgstr "Editar elemento del menú"
msgid "Link text"
msgstr "Texto del enlace"
-#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:260
-#, php-format
-msgctxt "mood"
-msgid "%1$s is %2$s"
-msgstr "%1$s está %2$s"
-
-#: ../../Zotlabs/Module/Mood.php:135 ../../include/apps.php:144
-msgid "Mood"
-msgstr "Estado de ánimo"
-
-#: ../../Zotlabs/Module/Mood.php:136
-msgid "Set your current mood and tell your friends"
-msgstr "Describir su estado de ánimo para comunicárselo a sus amigos"
-
-#: ../../Zotlabs/Module/Network.php:95
-msgid "No such group"
-msgstr "No se encuentra el grupo"
-
-#: ../../Zotlabs/Module/Network.php:135
-msgid "No such channel"
-msgstr "No se encuentra el canal"
-
-#: ../../Zotlabs/Module/Network.php:140
-msgid "forum"
-msgstr "foro"
-
-#: ../../Zotlabs/Module/Network.php:152
-msgid "Search Results For:"
-msgstr "Buscar resultados para:"
-
-#: ../../Zotlabs/Module/Network.php:216
-msgid "Privacy group is empty"
-msgstr "El grupo de canales está vacío"
-
-#: ../../Zotlabs/Module/Network.php:225
-msgid "Privacy group: "
-msgstr "Grupo de canales: "
-
-#: ../../Zotlabs/Module/Network.php:251
-msgid "Invalid connection."
-msgstr "Conexión no válida."
-
#: ../../Zotlabs/Module/New_channel.php:128
#: ../../Zotlabs/Module/Register.php:231
msgid "Name or caption"
@@ -3936,385 +2808,378 @@ msgstr "Petición inválida del identificador."
msgid "Discard"
msgstr "Descartar"
-#: ../../Zotlabs/Module/Notifications.php:98
-#: ../../Zotlabs/Module/Notify.php:57
-msgid "No more system notifications."
-msgstr "No hay más notificaciones del sistema"
-
-#: ../../Zotlabs/Module/Notifications.php:102
-#: ../../Zotlabs/Module/Notify.php:61
-msgid "System Notifications"
-msgstr "Notificaciones del sistema"
-
#: ../../Zotlabs/Module/Notifications.php:103 ../../include/nav.php:191
msgid "Mark all system notifications seen"
msgstr "Marcar todas las notificaciones de sistema como leídas"
-#: ../../Zotlabs/Module/Oexchange.php:27
-msgid "Unable to find your hub."
-msgstr "No se puede encontrar su servidor."
-
-#: ../../Zotlabs/Module/Oexchange.php:41
-msgid "Post successful."
-msgstr "Enviado con éxito."
-
-#: ../../Zotlabs/Module/Openid.php:30
-msgid "OpenID protocol error. No ID returned."
-msgstr "Error del protocolo OpenID. Ningún ID recibido como respuesta."
-
-#: ../../Zotlabs/Module/Openid.php:193 ../../include/auth.php:226
-msgid "Login failed."
-msgstr "El acceso ha fallado."
-
-#: ../../Zotlabs/Module/Page.php:133
-msgid ""
-"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
-"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
-" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
-"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
-"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
-"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-
-#: ../../Zotlabs/Module/Pconfig.php:26 ../../Zotlabs/Module/Pconfig.php:59
-msgid "This setting requires special processing and editing has been blocked."
-msgstr "Este ajuste necesita de un proceso especial y la edición ha sido bloqueada."
-
-#: ../../Zotlabs/Module/Pconfig.php:48
-msgid "Configuration Editor"
-msgstr "Editor de configuración"
-
-#: ../../Zotlabs/Module/Pconfig.php:49
-msgid ""
-"Warning: Changing some settings could render your channel inoperable. Please"
-" leave this page unless you are comfortable with and knowledgeable about how"
-" to correctly use this feature."
-msgstr "Atención: El cambio de algunos ajustes puede volver inutilizable su canal. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica."
-
-#: ../../Zotlabs/Module/Pdledit.php:18
-msgid "Layout updated."
-msgstr "Plantilla actualizada."
-
-#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Pdledit.php:61
-msgid "Edit System Page Description"
-msgstr "Editor del Sistema de Descripción de Páginas"
-
-#: ../../Zotlabs/Module/Pdledit.php:56
-msgid "Layout not found."
-msgstr "Plantilla no encontrada"
-
-#: ../../Zotlabs/Module/Pdledit.php:62
-msgid "Module Name:"
-msgstr "Nombre del módulo:"
-
-#: ../../Zotlabs/Module/Pdledit.php:63
-msgid "Layout Help"
-msgstr "Ayuda para el diseño de plantillas de página"
-
-#: ../../Zotlabs/Module/Photos.php:83
+#: ../../Zotlabs/Module/Photos.php:84
msgid "Page owner information could not be retrieved."
msgstr "La información del propietario de la página no pudo ser recuperada."
-#: ../../Zotlabs/Module/Photos.php:98 ../../Zotlabs/Module/Photos.php:742
+#: ../../Zotlabs/Module/Photos.php:99 ../../Zotlabs/Module/Photos.php:743
#: ../../Zotlabs/Module/Profile_photo.php:114
#: ../../Zotlabs/Module/Profile_photo.php:206
#: ../../Zotlabs/Module/Profile_photo.php:294
-#: ../../include/photo/photo_driver.php:722
+#: ../../include/photo/photo_driver.php:718
msgid "Profile Photos"
msgstr "Fotos del perfil"
-#: ../../Zotlabs/Module/Photos.php:104 ../../Zotlabs/Module/Photos.php:148
+#: ../../Zotlabs/Module/Photos.php:105 ../../Zotlabs/Module/Photos.php:149
msgid "Album not found."
msgstr "Ãlbum no encontrado."
-#: ../../Zotlabs/Module/Photos.php:131
+#: ../../Zotlabs/Module/Photos.php:132
msgid "Delete Album"
msgstr "Borrar álbum"
-#: ../../Zotlabs/Module/Photos.php:152
+#: ../../Zotlabs/Module/Photos.php:153
msgid ""
"Multiple storage folders exist with this album name, but within different "
"directories. Please remove the desired folder or folders using the Files "
"manager"
msgstr "Hay varias carpetas con este nombre de álbum, pero dentro de diferentes directorios. Por favor, elimine la carpeta o carpetas que desee utilizando el administrador de ficheros"
-#: ../../Zotlabs/Module/Photos.php:209 ../../Zotlabs/Module/Photos.php:1052
+#: ../../Zotlabs/Module/Photos.php:210 ../../Zotlabs/Module/Photos.php:1053
msgid "Delete Photo"
msgstr "Borrar foto"
-#: ../../Zotlabs/Module/Photos.php:532
+#: ../../Zotlabs/Module/Photos.php:533
msgid "No photos selected"
msgstr "No hay fotos seleccionadas"
-#: ../../Zotlabs/Module/Photos.php:581
+#: ../../Zotlabs/Module/Photos.php:582
msgid "Access to this item is restricted."
msgstr "El acceso a este elemento está restringido."
-#: ../../Zotlabs/Module/Photos.php:620
+#: ../../Zotlabs/Module/Photos.php:621
#, php-format
msgid "%1$.2f MB of %2$.2f MB photo storage used."
msgstr "%1$.2f MB de %2$.2f MB de almacenamiento de fotos utilizado."
-#: ../../Zotlabs/Module/Photos.php:623
+#: ../../Zotlabs/Module/Photos.php:624
#, php-format
msgid "%1$.2f MB photo storage used."
msgstr "%1$.2f MB de almacenamiento de fotos utilizado."
-#: ../../Zotlabs/Module/Photos.php:659
+#: ../../Zotlabs/Module/Photos.php:660
msgid "Upload Photos"
msgstr "Subir fotos"
-#: ../../Zotlabs/Module/Photos.php:663
+#: ../../Zotlabs/Module/Photos.php:664
msgid "Enter an album name"
msgstr "Introducir un nombre de álbum"
-#: ../../Zotlabs/Module/Photos.php:664
+#: ../../Zotlabs/Module/Photos.php:665
msgid "or select an existing album (doubleclick)"
msgstr "o seleccionar uno existente (doble click)"
-#: ../../Zotlabs/Module/Photos.php:665
+#: ../../Zotlabs/Module/Photos.php:666
msgid "Create a status post for this upload"
msgstr "Crear un mensaje de estado para esta subida"
-#: ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Photos.php:667
msgid "Caption (optional):"
msgstr "Título (opcional):"
-#: ../../Zotlabs/Module/Photos.php:667
+#: ../../Zotlabs/Module/Photos.php:668
msgid "Description (optional):"
msgstr "Descripción (opcional):"
-#: ../../Zotlabs/Module/Photos.php:694
+#: ../../Zotlabs/Module/Photos.php:695
msgid "Album name could not be decoded"
msgstr "El nombre del álbum no ha podido ser descifrado"
-#: ../../Zotlabs/Module/Photos.php:742 ../../Zotlabs/Module/Photos.php:1283
-#: ../../Zotlabs/Module/Photos.php:1300
+#: ../../Zotlabs/Module/Photos.php:743
msgid "Contact Photos"
msgstr "Fotos de contacto"
-#: ../../Zotlabs/Module/Photos.php:765
+#: ../../Zotlabs/Module/Photos.php:766
msgid "Show Newest First"
msgstr "Mostrar lo más reciente primero"
-#: ../../Zotlabs/Module/Photos.php:767
+#: ../../Zotlabs/Module/Photos.php:768
msgid "Show Oldest First"
msgstr "Mostrar lo más antiguo primero"
-#: ../../Zotlabs/Module/Photos.php:791 ../../Zotlabs/Module/Photos.php:1333
-#: ../../include/widgets.php:1451
+#: ../../Zotlabs/Module/Photos.php:792 ../../Zotlabs/Module/Photos.php:1331
+#: ../../include/widgets.php:1499
msgid "View Photo"
msgstr "Ver foto"
-#: ../../Zotlabs/Module/Photos.php:822 ../../include/widgets.php:1468
+#: ../../Zotlabs/Module/Photos.php:823 ../../include/widgets.php:1516
msgid "Edit Album"
msgstr "Editar álbum"
-#: ../../Zotlabs/Module/Photos.php:869
+#: ../../Zotlabs/Module/Photos.php:870
msgid "Permission denied. Access to this item may be restricted."
msgstr "Permiso denegado. El acceso a este elemento puede estar restringido."
-#: ../../Zotlabs/Module/Photos.php:871
+#: ../../Zotlabs/Module/Photos.php:872
msgid "Photo not available"
msgstr "Foto no disponible"
-#: ../../Zotlabs/Module/Photos.php:929
+#: ../../Zotlabs/Module/Photos.php:930
msgid "Use as profile photo"
msgstr "Usar como foto del perfil"
-#: ../../Zotlabs/Module/Photos.php:930
+#: ../../Zotlabs/Module/Photos.php:931
msgid "Use as cover photo"
msgstr "Usar como imagen de portada del perfil"
-#: ../../Zotlabs/Module/Photos.php:937
+#: ../../Zotlabs/Module/Photos.php:938
msgid "Private Photo"
msgstr "Foto privada"
-#: ../../Zotlabs/Module/Photos.php:952
+#: ../../Zotlabs/Module/Photos.php:953
msgid "View Full Size"
msgstr "Ver tamaño completo"
-#: ../../Zotlabs/Module/Photos.php:997 ../../Zotlabs/Module/Tagrm.php:137
+#: ../../Zotlabs/Module/Photos.php:998 ../../Zotlabs/Module/Admin.php:1437
+#: ../../Zotlabs/Module/Tagrm.php:137
msgid "Remove"
msgstr "Eliminar"
-#: ../../Zotlabs/Module/Photos.php:1031
+#: ../../Zotlabs/Module/Photos.php:1032
msgid "Edit photo"
msgstr "Editar foto"
-#: ../../Zotlabs/Module/Photos.php:1033
+#: ../../Zotlabs/Module/Photos.php:1034
msgid "Rotate CW (right)"
msgstr "Girar CW (a la derecha)"
-#: ../../Zotlabs/Module/Photos.php:1034
+#: ../../Zotlabs/Module/Photos.php:1035
msgid "Rotate CCW (left)"
msgstr "Girar CCW (a la izquierda)"
-#: ../../Zotlabs/Module/Photos.php:1037
+#: ../../Zotlabs/Module/Photos.php:1038
msgid "Enter a new album name"
msgstr "Introducir un nuevo nombre de álbum"
-#: ../../Zotlabs/Module/Photos.php:1038
+#: ../../Zotlabs/Module/Photos.php:1039
msgid "or select an existing one (doubleclick)"
msgstr "o seleccionar uno (doble click) existente"
-#: ../../Zotlabs/Module/Photos.php:1041
+#: ../../Zotlabs/Module/Photos.php:1042
msgid "Caption"
msgstr "Título"
-#: ../../Zotlabs/Module/Photos.php:1043
+#: ../../Zotlabs/Module/Photos.php:1044
msgid "Add a Tag"
msgstr "Añadir una etiqueta"
-#: ../../Zotlabs/Module/Photos.php:1047
+#: ../../Zotlabs/Module/Photos.php:1048
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
msgstr "Ejemplos: @eva, @Carmen_Osuna, @jaime@ejemplo.com"
-#: ../../Zotlabs/Module/Photos.php:1050
+#: ../../Zotlabs/Module/Photos.php:1051
msgid "Flag as adult in album view"
msgstr "Marcar como \"solo para adultos\" en el álbum"
-#: ../../Zotlabs/Module/Photos.php:1069 ../../include/ItemObject.php:254
+#: ../../Zotlabs/Module/Photos.php:1070 ../../Zotlabs/Lib/ThreadItem.php:261
msgid "I like this (toggle)"
msgstr "Me gusta (cambiar)"
-#: ../../Zotlabs/Module/Photos.php:1070 ../../include/ItemObject.php:255
+#: ../../Zotlabs/Module/Photos.php:1071 ../../Zotlabs/Lib/ThreadItem.php:262
msgid "I don't like this (toggle)"
msgstr "No me gusta esto (cambiar)"
-#: ../../Zotlabs/Module/Photos.php:1088 ../../Zotlabs/Module/Photos.php:1206
-#: ../../include/ItemObject.php:700
+#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:397
+#: ../../include/conversation.php:740
+msgid "Please wait"
+msgstr "Espere por favor"
+
+#: ../../Zotlabs/Module/Photos.php:1089 ../../Zotlabs/Module/Photos.php:1207
+#: ../../Zotlabs/Lib/ThreadItem.php:707
msgid "This is you"
msgstr "Este es usted"
-#: ../../Zotlabs/Module/Photos.php:1090 ../../Zotlabs/Module/Photos.php:1208
-#: ../../include/ItemObject.php:702 ../../include/js_strings.php:6
+#: ../../Zotlabs/Module/Photos.php:1091 ../../Zotlabs/Module/Photos.php:1209
+#: ../../Zotlabs/Lib/ThreadItem.php:709 ../../include/js_strings.php:6
msgid "Comment"
msgstr "Comentar"
-#: ../../Zotlabs/Module/Photos.php:1106 ../../include/conversation.php:574
+#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574
msgctxt "title"
msgid "Likes"
msgstr "Me gusta"
-#: ../../Zotlabs/Module/Photos.php:1106 ../../include/conversation.php:574
+#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574
msgctxt "title"
msgid "Dislikes"
msgstr "No me gusta"
-#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:575
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
msgctxt "title"
msgid "Agree"
msgstr "De acuerdo"
-#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:575
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
msgctxt "title"
msgid "Disagree"
msgstr "En desacuerdo"
-#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:575
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
msgctxt "title"
msgid "Abstain"
msgstr "Abstención"
-#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:576
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
msgctxt "title"
msgid "Attending"
msgstr "Participaré"
-#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:576
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
msgctxt "title"
msgid "Not attending"
msgstr "No participaré"
-#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:576
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
msgctxt "title"
msgid "Might attend"
msgstr "Quizá participe"
-#: ../../Zotlabs/Module/Photos.php:1125 ../../Zotlabs/Module/Photos.php:1137
-#: ../../include/ItemObject.php:175 ../../include/ItemObject.php:187
-#: ../../include/conversation.php:1736
+#: ../../Zotlabs/Module/Photos.php:1126 ../../Zotlabs/Module/Photos.php:1138
+#: ../../Zotlabs/Lib/ThreadItem.php:181 ../../Zotlabs/Lib/ThreadItem.php:193
+#: ../../include/conversation.php:1717
msgid "View all"
msgstr "Ver todo"
-#: ../../Zotlabs/Module/Photos.php:1129 ../../include/identity.php:1297
-#: ../../include/ItemObject.php:179 ../../include/conversation.php:1760
-#: ../../include/taxonomy.php:415
+#: ../../Zotlabs/Module/Photos.php:1130 ../../Zotlabs/Lib/ThreadItem.php:185
+#: ../../include/taxonomy.php:403 ../../include/conversation.php:1741
+#: ../../include/channel.php:1158
msgctxt "noun"
msgid "Like"
msgid_plural "Likes"
msgstr[0] "Me gusta"
msgstr[1] "Me gusta"
-#: ../../Zotlabs/Module/Photos.php:1134 ../../include/ItemObject.php:184
-#: ../../include/conversation.php:1763
+#: ../../Zotlabs/Module/Photos.php:1135 ../../Zotlabs/Lib/ThreadItem.php:190
+#: ../../include/conversation.php:1744
msgctxt "noun"
msgid "Dislike"
msgid_plural "Dislikes"
msgstr[0] "No me gusta"
msgstr[1] "No me gusta"
-#: ../../Zotlabs/Module/Photos.php:1234
+#: ../../Zotlabs/Module/Photos.php:1235
msgid "Photo Tools"
msgstr "Gestión de las fotos"
-#: ../../Zotlabs/Module/Photos.php:1243
+#: ../../Zotlabs/Module/Photos.php:1244
msgid "In This Photo:"
msgstr "En esta foto:"
-#: ../../Zotlabs/Module/Photos.php:1248
+#: ../../Zotlabs/Module/Photos.php:1249
msgid "Map"
msgstr "Mapa"
-#: ../../Zotlabs/Module/Photos.php:1256 ../../include/ItemObject.php:378
+#: ../../Zotlabs/Module/Photos.php:1257 ../../Zotlabs/Lib/ThreadItem.php:386
msgctxt "noun"
msgid "Likes"
msgstr "Me gusta"
-#: ../../Zotlabs/Module/Photos.php:1257 ../../include/ItemObject.php:379
+#: ../../Zotlabs/Module/Photos.php:1258 ../../Zotlabs/Lib/ThreadItem.php:387
msgctxt "noun"
msgid "Dislikes"
msgstr "No me gusta"
-#: ../../Zotlabs/Module/Photos.php:1262 ../../include/ItemObject.php:384
-#: ../../include/acl_selectors.php:252
+#: ../../Zotlabs/Module/Photos.php:1263 ../../Zotlabs/Lib/ThreadItem.php:392
+#: ../../include/acl_selectors.php:285
msgid "Close"
msgstr "Cerrar"
-#: ../../Zotlabs/Module/Photos.php:1339
+#: ../../Zotlabs/Module/Photos.php:1337
msgid "View Album"
msgstr "Ver álbum"
-#: ../../Zotlabs/Module/Photos.php:1350 ../../Zotlabs/Module/Photos.php:1363
-#: ../../Zotlabs/Module/Photos.php:1364
+#: ../../Zotlabs/Module/Photos.php:1348 ../../Zotlabs/Module/Photos.php:1361
+#: ../../Zotlabs/Module/Photos.php:1362
msgid "Recent Photos"
msgstr "Fotos recientes"
-#: ../../Zotlabs/Module/Ping.php:264
+#: ../../Zotlabs/Module/Ping.php:265
msgid "sent you a private message"
msgstr "le ha enviado un mensaje privado"
-#: ../../Zotlabs/Module/Ping.php:312
+#: ../../Zotlabs/Module/Ping.php:313
msgid "added your channel"
msgstr "añadió este canal a sus conexiones"
-#: ../../Zotlabs/Module/Ping.php:322 ../../include/identity.php:1116
-#: ../../include/identity.php:1192
+#: ../../Zotlabs/Module/Ping.php:323
msgid "g A l F d"
msgstr "g A l d F"
-#: ../../Zotlabs/Module/Ping.php:345 ../../include/identity.php:1162
-#: ../../include/identity.php:1232
+#: ../../Zotlabs/Module/Ping.php:346
msgid "[today]"
msgstr "[hoy]"
-#: ../../Zotlabs/Module/Ping.php:354
+#: ../../Zotlabs/Module/Ping.php:355
msgid "posted an event"
msgstr "publicó un evento"
-#: ../../Zotlabs/Module/Poke.php:168 ../../include/apps.php:145
-#: ../../include/conversation.php:965
+#: ../../Zotlabs/Module/Oexchange.php:27
+msgid "Unable to find your hub."
+msgstr "No se puede encontrar su servidor."
+
+#: ../../Zotlabs/Module/Oexchange.php:41
+msgid "Post successful."
+msgstr "Enviado con éxito."
+
+#: ../../Zotlabs/Module/Openid.php:30
+msgid "OpenID protocol error. No ID returned."
+msgstr "Error del protocolo OpenID. Ningún ID recibido como respuesta."
+
+#: ../../Zotlabs/Module/Openid.php:193 ../../include/auth.php:226
+msgid "Login failed."
+msgstr "El acceso ha fallado."
+
+#: ../../Zotlabs/Module/Page.php:133
+msgid ""
+"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
+"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
+" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
+"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
+"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
+"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+
+#: ../../Zotlabs/Module/Pconfig.php:26 ../../Zotlabs/Module/Pconfig.php:59
+msgid "This setting requires special processing and editing has been blocked."
+msgstr "Este ajuste necesita de un proceso especial y la edición ha sido bloqueada."
+
+#: ../../Zotlabs/Module/Pconfig.php:48
+msgid "Configuration Editor"
+msgstr "Editor de configuración"
+
+#: ../../Zotlabs/Module/Pconfig.php:49
+msgid ""
+"Warning: Changing some settings could render your channel inoperable. Please"
+" leave this page unless you are comfortable with and knowledgeable about how"
+" to correctly use this feature."
+msgstr "Atención: El cambio de algunos ajustes puede volver inutilizable su canal. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica."
+
+#: ../../Zotlabs/Module/Pdledit.php:18
+msgid "Layout updated."
+msgstr "Plantilla actualizada."
+
+#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Pdledit.php:61
+msgid "Edit System Page Description"
+msgstr "Editor del Sistema de Descripción de Páginas"
+
+#: ../../Zotlabs/Module/Pdledit.php:56
+msgid "Layout not found."
+msgstr "Plantilla no encontrada"
+
+#: ../../Zotlabs/Module/Pdledit.php:62
+msgid "Module Name:"
+msgstr "Nombre del módulo:"
+
+#: ../../Zotlabs/Module/Pdledit.php:63
+msgid "Layout Help"
+msgstr "Ayuda para el diseño de plantillas de página"
+
+#: ../../Zotlabs/Module/Poke.php:168 ../../Zotlabs/Lib/Apps.php:226
+#: ../../include/conversation.php:960
msgid "Poke"
msgstr "Toques y otras cosas"
@@ -4342,289 +3207,289 @@ msgstr "Elegir qué desea enviar al destinatario"
msgid "Make this post private"
msgstr "Convertir en privado este envío"
-#: ../../Zotlabs/Module/Probe.php:28 ../../Zotlabs/Module/Probe.php:34
+#: ../../Zotlabs/Module/Probe.php:30 ../../Zotlabs/Module/Probe.php:34
#, php-format
msgid "Fetching URL returns error: %1$s"
msgstr "Al intentar obtener la dirección, retorna el error: %1$s"
-#: ../../Zotlabs/Module/Profile_photo.php:179
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Recargue la página o limpie el caché del navegador si la nueva foto no se muestra inmediatamente."
-
-#: ../../Zotlabs/Module/Profile_photo.php:367
-msgid "Upload Profile Photo"
-msgstr "Subir foto de perfil"
-
-#: ../../Zotlabs/Module/Profiles.php:23 ../../Zotlabs/Module/Profiles.php:188
-#: ../../Zotlabs/Module/Profiles.php:245 ../../Zotlabs/Module/Profiles.php:624
+#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:189
+#: ../../Zotlabs/Module/Profiles.php:246 ../../Zotlabs/Module/Profiles.php:625
msgid "Profile not found."
msgstr "Perfil no encontrado."
-#: ../../Zotlabs/Module/Profiles.php:43
+#: ../../Zotlabs/Module/Profiles.php:44
msgid "Profile deleted."
msgstr "Perfil eliminado."
-#: ../../Zotlabs/Module/Profiles.php:67 ../../Zotlabs/Module/Profiles.php:103
+#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:104
msgid "Profile-"
msgstr "Perfil-"
-#: ../../Zotlabs/Module/Profiles.php:88 ../../Zotlabs/Module/Profiles.php:131
+#: ../../Zotlabs/Module/Profiles.php:89 ../../Zotlabs/Module/Profiles.php:132
msgid "New profile created."
msgstr "El nuevo perfil ha sido creado."
-#: ../../Zotlabs/Module/Profiles.php:109
+#: ../../Zotlabs/Module/Profiles.php:110
msgid "Profile unavailable to clone."
msgstr "Perfil no disponible para clonar."
-#: ../../Zotlabs/Module/Profiles.php:150
+#: ../../Zotlabs/Module/Profiles.php:151
msgid "Profile unavailable to export."
msgstr "Perfil no disponible para exportar."
-#: ../../Zotlabs/Module/Profiles.php:255
+#: ../../Zotlabs/Module/Profiles.php:256
msgid "Profile Name is required."
msgstr "Se necesita el nombre del perfil."
-#: ../../Zotlabs/Module/Profiles.php:426
+#: ../../Zotlabs/Module/Profiles.php:427
msgid "Marital Status"
msgstr "Estado civil"
-#: ../../Zotlabs/Module/Profiles.php:430
+#: ../../Zotlabs/Module/Profiles.php:431
msgid "Romantic Partner"
msgstr "Pareja sentimental"
-#: ../../Zotlabs/Module/Profiles.php:434 ../../Zotlabs/Module/Profiles.php:740
+#: ../../Zotlabs/Module/Profiles.php:435 ../../Zotlabs/Module/Profiles.php:736
msgid "Likes"
msgstr "Me gusta"
-#: ../../Zotlabs/Module/Profiles.php:438 ../../Zotlabs/Module/Profiles.php:741
+#: ../../Zotlabs/Module/Profiles.php:439 ../../Zotlabs/Module/Profiles.php:737
msgid "Dislikes"
msgstr "No me gusta"
-#: ../../Zotlabs/Module/Profiles.php:442 ../../Zotlabs/Module/Profiles.php:748
+#: ../../Zotlabs/Module/Profiles.php:443 ../../Zotlabs/Module/Profiles.php:744
msgid "Work/Employment"
msgstr "Trabajo:"
-#: ../../Zotlabs/Module/Profiles.php:445
+#: ../../Zotlabs/Module/Profiles.php:446
msgid "Religion"
msgstr "Religión"
-#: ../../Zotlabs/Module/Profiles.php:449
+#: ../../Zotlabs/Module/Profiles.php:450
msgid "Political Views"
msgstr "Ideas políticas"
-#: ../../Zotlabs/Module/Profiles.php:457
+#: ../../Zotlabs/Module/Profiles.php:458
msgid "Sexual Preference"
msgstr "Preferencia sexual"
-#: ../../Zotlabs/Module/Profiles.php:461
+#: ../../Zotlabs/Module/Profiles.php:462
msgid "Homepage"
msgstr "Página personal"
-#: ../../Zotlabs/Module/Profiles.php:465
+#: ../../Zotlabs/Module/Profiles.php:466
msgid "Interests"
msgstr "Intereses"
-#: ../../Zotlabs/Module/Profiles.php:559
+#: ../../Zotlabs/Module/Profiles.php:560
msgid "Profile updated."
msgstr "Perfil actualizado."
-#: ../../Zotlabs/Module/Profiles.php:648
+#: ../../Zotlabs/Module/Profiles.php:644
msgid "Hide your connections list from viewers of this profile"
msgstr "Ocultar la lista de conexiones a los visitantes del perfil"
-#: ../../Zotlabs/Module/Profiles.php:690
+#: ../../Zotlabs/Module/Profiles.php:686
msgid "Edit Profile Details"
msgstr "Modificar los detalles de este perfil"
-#: ../../Zotlabs/Module/Profiles.php:692
+#: ../../Zotlabs/Module/Profiles.php:688
msgid "View this profile"
msgstr "Ver este perfil"
-#: ../../Zotlabs/Module/Profiles.php:693 ../../Zotlabs/Module/Profiles.php:775
-#: ../../include/identity.php:952
+#: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:771
+#: ../../include/channel.php:959
msgid "Edit visibility"
msgstr "Editar visibilidad"
-#: ../../Zotlabs/Module/Profiles.php:694
+#: ../../Zotlabs/Module/Profiles.php:690
msgid "Profile Tools"
msgstr "Gestión del perfil"
-#: ../../Zotlabs/Module/Profiles.php:695
+#: ../../Zotlabs/Module/Profiles.php:691
msgid "Change cover photo"
msgstr "Cambiar la imagen de portada del perfil"
-#: ../../Zotlabs/Module/Profiles.php:696 ../../include/identity.php:923
+#: ../../Zotlabs/Module/Profiles.php:692 ../../include/channel.php:930
msgid "Change profile photo"
msgstr "Cambiar la foto del perfil"
-#: ../../Zotlabs/Module/Profiles.php:697
+#: ../../Zotlabs/Module/Profiles.php:693
msgid "Create a new profile using these settings"
msgstr "Crear un nuevo perfil usando estos ajustes"
-#: ../../Zotlabs/Module/Profiles.php:698
+#: ../../Zotlabs/Module/Profiles.php:694
msgid "Clone this profile"
msgstr "Clonar este perfil"
-#: ../../Zotlabs/Module/Profiles.php:699
+#: ../../Zotlabs/Module/Profiles.php:695
msgid "Delete this profile"
msgstr "Eliminar este perfil"
-#: ../../Zotlabs/Module/Profiles.php:700
+#: ../../Zotlabs/Module/Profiles.php:696
msgid "Add profile things"
msgstr "Añadir cosas al perfil"
-#: ../../Zotlabs/Module/Profiles.php:701 ../../include/conversation.php:1544
-#: ../../include/widgets.php:105
+#: ../../Zotlabs/Module/Profiles.php:697 ../../include/widgets.php:105
+#: ../../include/conversation.php:1526
msgid "Personal"
msgstr "Personales"
-#: ../../Zotlabs/Module/Profiles.php:703
+#: ../../Zotlabs/Module/Profiles.php:699
msgid "Relation"
msgstr "Relación"
-#: ../../Zotlabs/Module/Profiles.php:704 ../../include/datetime.php:48
+#: ../../Zotlabs/Module/Profiles.php:700 ../../include/datetime.php:48
msgid "Miscellaneous"
msgstr "Varios"
-#: ../../Zotlabs/Module/Profiles.php:706
+#: ../../Zotlabs/Module/Profiles.php:702
msgid "Import profile from file"
msgstr "Importar perfil desde un fichero"
-#: ../../Zotlabs/Module/Profiles.php:707
+#: ../../Zotlabs/Module/Profiles.php:703
msgid "Export profile to file"
msgstr "Exportar perfil a un fichero"
-#: ../../Zotlabs/Module/Profiles.php:708
+#: ../../Zotlabs/Module/Profiles.php:704
msgid "Your gender"
msgstr "Género"
-#: ../../Zotlabs/Module/Profiles.php:709
+#: ../../Zotlabs/Module/Profiles.php:705
msgid "Marital status"
msgstr "Estado civil"
-#: ../../Zotlabs/Module/Profiles.php:710
+#: ../../Zotlabs/Module/Profiles.php:706
msgid "Sexual preference"
msgstr "Preferencia sexual"
-#: ../../Zotlabs/Module/Profiles.php:713
+#: ../../Zotlabs/Module/Profiles.php:709
msgid "Profile name"
msgstr "Nombre del perfil"
-#: ../../Zotlabs/Module/Profiles.php:715
+#: ../../Zotlabs/Module/Profiles.php:711
msgid "This is your default profile."
msgstr "Este es su perfil principal."
-#: ../../Zotlabs/Module/Profiles.php:717
+#: ../../Zotlabs/Module/Profiles.php:713
msgid "Your full name"
msgstr "Nombre completo"
-#: ../../Zotlabs/Module/Profiles.php:718
+#: ../../Zotlabs/Module/Profiles.php:714
msgid "Title/Description"
msgstr "Título o descripción"
-#: ../../Zotlabs/Module/Profiles.php:721
+#: ../../Zotlabs/Module/Profiles.php:717
msgid "Street address"
msgstr "Dirección"
-#: ../../Zotlabs/Module/Profiles.php:722
+#: ../../Zotlabs/Module/Profiles.php:718
msgid "Locality/City"
msgstr "Ciudad"
-#: ../../Zotlabs/Module/Profiles.php:723
+#: ../../Zotlabs/Module/Profiles.php:719
msgid "Region/State"
msgstr "Región o Estado"
-#: ../../Zotlabs/Module/Profiles.php:724
+#: ../../Zotlabs/Module/Profiles.php:720
msgid "Postal/Zip code"
msgstr "Código postal"
-#: ../../Zotlabs/Module/Profiles.php:725
+#: ../../Zotlabs/Module/Profiles.php:721
msgid "Country"
msgstr "País"
-#: ../../Zotlabs/Module/Profiles.php:730
+#: ../../Zotlabs/Module/Profiles.php:726
msgid "Who (if applicable)"
msgstr "Quién (si es pertinente)"
-#: ../../Zotlabs/Module/Profiles.php:730
+#: ../../Zotlabs/Module/Profiles.php:726
msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
msgstr "Por ejemplo: ana123, María González, sara@ejemplo.com"
-#: ../../Zotlabs/Module/Profiles.php:731
+#: ../../Zotlabs/Module/Profiles.php:727
msgid "Since (date)"
msgstr "Desde (fecha)"
-#: ../../Zotlabs/Module/Profiles.php:734
+#: ../../Zotlabs/Module/Profiles.php:730
msgid "Tell us about yourself"
msgstr "Háblenos de usted"
-#: ../../Zotlabs/Module/Profiles.php:736
+#: ../../Zotlabs/Module/Profiles.php:732
msgid "Hometown"
msgstr "Lugar de nacimiento"
-#: ../../Zotlabs/Module/Profiles.php:737
+#: ../../Zotlabs/Module/Profiles.php:733
msgid "Political views"
msgstr "Ideas políticas"
-#: ../../Zotlabs/Module/Profiles.php:738
+#: ../../Zotlabs/Module/Profiles.php:734
msgid "Religious views"
msgstr "Creencias religiosas"
-#: ../../Zotlabs/Module/Profiles.php:739
+#: ../../Zotlabs/Module/Profiles.php:735
msgid "Keywords used in directory listings"
msgstr "Palabras clave utilizadas en los listados de directorios"
-#: ../../Zotlabs/Module/Profiles.php:739
+#: ../../Zotlabs/Module/Profiles.php:735
msgid "Example: fishing photography software"
msgstr "Por ejemplo: software de fotografía submarina"
-#: ../../Zotlabs/Module/Profiles.php:742
+#: ../../Zotlabs/Module/Profiles.php:738
msgid "Musical interests"
msgstr "Preferencias musicales"
-#: ../../Zotlabs/Module/Profiles.php:743
+#: ../../Zotlabs/Module/Profiles.php:739
msgid "Books, literature"
msgstr "Libros, literatura"
-#: ../../Zotlabs/Module/Profiles.php:744
+#: ../../Zotlabs/Module/Profiles.php:740
msgid "Television"
msgstr "Televisión"
-#: ../../Zotlabs/Module/Profiles.php:745
+#: ../../Zotlabs/Module/Profiles.php:741
msgid "Film/Dance/Culture/Entertainment"
msgstr "Cine, danza, cultura, entretenimiento"
-#: ../../Zotlabs/Module/Profiles.php:746
+#: ../../Zotlabs/Module/Profiles.php:742
msgid "Hobbies/Interests"
msgstr "Aficiones o intereses"
-#: ../../Zotlabs/Module/Profiles.php:747
+#: ../../Zotlabs/Module/Profiles.php:743
msgid "Love/Romance"
msgstr "Vida sentimental o amorosa"
-#: ../../Zotlabs/Module/Profiles.php:749
+#: ../../Zotlabs/Module/Profiles.php:745
msgid "School/Education"
msgstr "Estudios"
-#: ../../Zotlabs/Module/Profiles.php:750
+#: ../../Zotlabs/Module/Profiles.php:746
msgid "Contact information and social networks"
msgstr "Información de contacto y redes sociales"
-#: ../../Zotlabs/Module/Profiles.php:751
+#: ../../Zotlabs/Module/Profiles.php:747
msgid "My other channels"
msgstr "Mis otros canales"
-#: ../../Zotlabs/Module/Profiles.php:771 ../../include/identity.php:948
+#: ../../Zotlabs/Module/Profiles.php:767 ../../include/channel.php:955
msgid "Profile Image"
msgstr "Imagen del perfil"
-#: ../../Zotlabs/Module/Profiles.php:781 ../../include/identity.php:930
-#: ../../include/nav.php:88
+#: ../../Zotlabs/Module/Profiles.php:777 ../../include/nav.php:88
+#: ../../include/channel.php:937
msgid "Edit Profiles"
msgstr "Editar perfiles"
+#: ../../Zotlabs/Module/Profile_photo.php:179
+msgid ""
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Recargue la página o limpie el caché del navegador si la nueva foto no se muestra inmediatamente."
+
+#: ../../Zotlabs/Module/Profile_photo.php:367
+msgid "Upload Profile Photo"
+msgstr "Subir foto de perfil"
+
#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63
msgid "Invalid profile identifier."
msgstr "Identificador del perfil no válido"
@@ -4633,8 +3498,7 @@ msgstr "Identificador del perfil no válido"
msgid "Profile Visibility Editor"
msgstr "Editor de visibilidad del perfil"
-#: ../../Zotlabs/Module/Profperm.php:117 ../../include/identity.php:1388
-#: ../../include/apps.php:138
+#: ../../Zotlabs/Module/Profperm.php:117 ../../include/channel.php:1249
msgid "Profile"
msgstr "Perfil"
@@ -4646,7 +3510,7 @@ msgstr "Pulsar en un contacto para añadirlo o eliminarlo."
msgid "Visible To"
msgstr "Visible para"
-#: ../../Zotlabs/Module/Pubsites.php:22 ../../include/widgets.php:1222
+#: ../../Zotlabs/Module/Pubsites.php:22 ../../include/widgets.php:1270
msgid "Public Hubs"
msgstr "Servidores públicos"
@@ -4671,29 +3535,37 @@ msgstr "Tipo de acceso"
msgid "Registration Policy"
msgstr "Normas de registro"
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Stats"
+msgstr "Estadísticas"
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Software"
+msgstr "Software"
+
#: ../../Zotlabs/Module/Pubsites.php:31 ../../Zotlabs/Module/Ratings.php:103
-#: ../../include/conversation.php:964
+#: ../../include/conversation.php:959
msgid "Ratings"
msgstr "Valoraciones"
-#: ../../Zotlabs/Module/Pubsites.php:37
+#: ../../Zotlabs/Module/Pubsites.php:38
msgid "Rate"
msgstr "Valorar"
-#: ../../Zotlabs/Module/Rate.php:162
+#: ../../Zotlabs/Module/Rate.php:160
msgid "Website:"
msgstr "Sitio web:"
-#: ../../Zotlabs/Module/Rate.php:165
+#: ../../Zotlabs/Module/Rate.php:163
#, php-format
msgid "Remote Channel [%s] (not yet known on this site)"
msgstr "Canal remoto [%s] (aún no es conocido en este sitio)"
-#: ../../Zotlabs/Module/Rate.php:166
+#: ../../Zotlabs/Module/Rate.php:164
msgid "Rating (this information is public)"
msgstr "Valoración (esta información es pública)"
-#: ../../Zotlabs/Module/Rate.php:167
+#: ../../Zotlabs/Module/Rate.php:165
msgid "Optionally explain your rating (this information is public)"
msgstr "Opcionalmente puede explicar su valoración (esta información es pública)"
@@ -4713,6 +3585,1073 @@ msgstr "Sitio web:"
msgid "Description: "
msgstr "Descripción:"
+#: ../../Zotlabs/Module/Admin.php:77
+msgid "Theme settings updated."
+msgstr "Ajustes del tema actualizados."
+
+#: ../../Zotlabs/Module/Admin.php:197
+msgid "# Accounts"
+msgstr "# Cuentas"
+
+#: ../../Zotlabs/Module/Admin.php:198
+msgid "# blocked accounts"
+msgstr "# cuentas bloqueadas"
+
+#: ../../Zotlabs/Module/Admin.php:199
+msgid "# expired accounts"
+msgstr "# cuentas caducadas"
+
+#: ../../Zotlabs/Module/Admin.php:200
+msgid "# expiring accounts"
+msgstr "# cuentas que caducan"
+
+#: ../../Zotlabs/Module/Admin.php:211
+msgid "# Channels"
+msgstr "# Canales"
+
+#: ../../Zotlabs/Module/Admin.php:212
+msgid "# primary"
+msgstr "# primario"
+
+#: ../../Zotlabs/Module/Admin.php:213
+msgid "# clones"
+msgstr "# clones"
+
+#: ../../Zotlabs/Module/Admin.php:219
+msgid "Message queues"
+msgstr "Mensajes en cola"
+
+#: ../../Zotlabs/Module/Admin.php:236
+msgid "Your software should be updated"
+msgstr "Debe actualizar su software"
+
+#: ../../Zotlabs/Module/Admin.php:241 ../../Zotlabs/Module/Admin.php:490
+#: ../../Zotlabs/Module/Admin.php:711 ../../Zotlabs/Module/Admin.php:755
+#: ../../Zotlabs/Module/Admin.php:1030 ../../Zotlabs/Module/Admin.php:1209
+#: ../../Zotlabs/Module/Admin.php:1329 ../../Zotlabs/Module/Admin.php:1419
+#: ../../Zotlabs/Module/Admin.php:1612 ../../Zotlabs/Module/Admin.php:1646
+#: ../../Zotlabs/Module/Admin.php:1731
+msgid "Administration"
+msgstr "Administración"
+
+#: ../../Zotlabs/Module/Admin.php:242
+msgid "Summary"
+msgstr "Sumario"
+
+#: ../../Zotlabs/Module/Admin.php:245
+msgid "Registered accounts"
+msgstr "Cuentas registradas"
+
+#: ../../Zotlabs/Module/Admin.php:246 ../../Zotlabs/Module/Admin.php:715
+msgid "Pending registrations"
+msgstr "Registros pendientes"
+
+#: ../../Zotlabs/Module/Admin.php:247
+msgid "Registered channels"
+msgstr "Canales registrados"
+
+#: ../../Zotlabs/Module/Admin.php:248 ../../Zotlabs/Module/Admin.php:716
+msgid "Active plugins"
+msgstr "Extensiones (plugins) activas"
+
+#: ../../Zotlabs/Module/Admin.php:249
+msgid "Version"
+msgstr "Versión"
+
+#: ../../Zotlabs/Module/Admin.php:250
+msgid "Repository version (master)"
+msgstr "Versión del repositorio (master)"
+
+#: ../../Zotlabs/Module/Admin.php:251
+msgid "Repository version (dev)"
+msgstr "Versión del repositorio (dev)"
+
+#: ../../Zotlabs/Module/Admin.php:373
+msgid "Site settings updated."
+msgstr "Ajustes del sitio actualizados."
+
+#: ../../Zotlabs/Module/Admin.php:400 ../../include/text.php:2841
+msgid "Default"
+msgstr "Predeterminado"
+
+#: ../../Zotlabs/Module/Admin.php:410 ../../Zotlabs/Module/Settings.php:798
+msgid "mobile"
+msgstr "móvil"
+
+#: ../../Zotlabs/Module/Admin.php:412
+msgid "experimental"
+msgstr "experimental"
+
+#: ../../Zotlabs/Module/Admin.php:414
+msgid "unsupported"
+msgstr "no soportado"
+
+#: ../../Zotlabs/Module/Admin.php:460
+msgid "Yes - with approval"
+msgstr "Sí - con aprobación"
+
+#: ../../Zotlabs/Module/Admin.php:466
+msgid "My site is not a public server"
+msgstr "Mi sitio no es un servidor público"
+
+#: ../../Zotlabs/Module/Admin.php:467
+msgid "My site has paid access only"
+msgstr "Mi sitio es un servicio de pago"
+
+#: ../../Zotlabs/Module/Admin.php:468
+msgid "My site has free access only"
+msgstr "Mi sitio es un servicio gratuito"
+
+#: ../../Zotlabs/Module/Admin.php:469
+msgid "My site offers free accounts with optional paid upgrades"
+msgstr "Mi sitio ofrece cuentas gratuitas con opciones extra de pago"
+
+#: ../../Zotlabs/Module/Admin.php:491 ../../include/widgets.php:1382
+msgid "Site"
+msgstr "Sitio"
+
+#: ../../Zotlabs/Module/Admin.php:493 ../../Zotlabs/Module/Register.php:245
+msgid "Registration"
+msgstr "Registro"
+
+#: ../../Zotlabs/Module/Admin.php:494
+msgid "File upload"
+msgstr "Subir fichero"
+
+#: ../../Zotlabs/Module/Admin.php:495
+msgid "Policies"
+msgstr "Políticas"
+
+#: ../../Zotlabs/Module/Admin.php:496 ../../include/contact_widgets.php:16
+msgid "Advanced"
+msgstr "Avanzado"
+
+#: ../../Zotlabs/Module/Admin.php:500
+msgid "Site name"
+msgstr "Nombre del sitio"
+
+#: ../../Zotlabs/Module/Admin.php:501
+msgid "Banner/Logo"
+msgstr "Banner/Logo"
+
+#: ../../Zotlabs/Module/Admin.php:502
+msgid "Administrator Information"
+msgstr "Información del Administrador"
+
+#: ../../Zotlabs/Module/Admin.php:502
+msgid ""
+"Contact information for site administrators. Displayed on siteinfo page. "
+"BBCode can be used here"
+msgstr "Información de contacto de los administradores del sitio. Visible en la página \"siteinfo\". Se puede usar BBCode"
+
+#: ../../Zotlabs/Module/Admin.php:503
+msgid "System language"
+msgstr "Idioma del sistema"
+
+#: ../../Zotlabs/Module/Admin.php:504
+msgid "System theme"
+msgstr "Tema gráfico del sistema"
+
+#: ../../Zotlabs/Module/Admin.php:504
+msgid ""
+"Default system theme - may be over-ridden by user profiles - <a href='#' "
+"id='cnftheme'>change theme settings</a>"
+msgstr "Tema del sistema por defecto - se puede cambiar por cada perfil de usuario - <a href='#' id='cnftheme'>modificar los ajustes del tema</a>"
+
+#: ../../Zotlabs/Module/Admin.php:505
+msgid "Mobile system theme"
+msgstr "Tema del sistema para móviles"
+
+#: ../../Zotlabs/Module/Admin.php:505
+msgid "Theme for mobile devices"
+msgstr "Tema para dispositivos móviles"
+
+#: ../../Zotlabs/Module/Admin.php:507
+msgid "Allow Feeds as Connections"
+msgstr "Permitir contenidos RSS como conexiones"
+
+#: ../../Zotlabs/Module/Admin.php:507
+msgid "(Heavy system resource usage)"
+msgstr "(Uso intenso de los recursos del sistema)"
+
+#: ../../Zotlabs/Module/Admin.php:508
+msgid "Maximum image size"
+msgstr "Tamaño máximo de la imagen"
+
+#: ../../Zotlabs/Module/Admin.php:508
+msgid ""
+"Maximum size in bytes of uploaded images. Default is 0, which means no "
+"limits."
+msgstr "Tamaño máximo en bytes de la imagen subida. Por defecto, es 0, lo que significa que no hay límites."
+
+#: ../../Zotlabs/Module/Admin.php:509
+msgid "Does this site allow new member registration?"
+msgstr "¿Debe este sitio permitir el registro de nuevos miembros?"
+
+#: ../../Zotlabs/Module/Admin.php:510
+msgid "Invitation only"
+msgstr "Solo con una invitación"
+
+#: ../../Zotlabs/Module/Admin.php:510
+msgid ""
+"Only allow new member registrations with an invitation code. Above register "
+"policy must be set to Yes."
+msgstr "Solo se permiten inscripciones de nuevos miembros con un código de invitación. Además, deben aceptarse los términos del registro marcando \"Sí\"."
+
+#: ../../Zotlabs/Module/Admin.php:511
+msgid "Which best describes the types of account offered by this hub?"
+msgstr "¿Cómo describiría el tipo de servicio ofrecido por este servidor?"
+
+#: ../../Zotlabs/Module/Admin.php:512
+msgid "Register text"
+msgstr "Texto del registro"
+
+#: ../../Zotlabs/Module/Admin.php:512
+msgid "Will be displayed prominently on the registration page."
+msgstr "Se mostrará de forma destacada en la página de registro."
+
+#: ../../Zotlabs/Module/Admin.php:513
+msgid "Site homepage to show visitors (default: login box)"
+msgstr "Página personal que se mostrará a los visitantes (por defecto: la página de identificación)"
+
+#: ../../Zotlabs/Module/Admin.php:513
+msgid ""
+"example: 'public' to show public stream, 'page/sys/home' to show a system "
+"webpage called 'home' or 'include:home.html' to include a file."
+msgstr "ejemplo: 'public' para mostrar contenido público, 'page/sys/home' para mostrar la página web definida como \"home\" o 'include:home.html' para mostrar el contenido de un fichero."
+
+#: ../../Zotlabs/Module/Admin.php:514
+msgid "Preserve site homepage URL"
+msgstr "Preservar la dirección de la página personal"
+
+#: ../../Zotlabs/Module/Admin.php:514
+msgid ""
+"Present the site homepage in a frame at the original location instead of "
+"redirecting"
+msgstr "Presenta la página personal del sitio en un marco en la ubicación original, en vez de redirigirla."
+
+#: ../../Zotlabs/Module/Admin.php:515
+msgid "Accounts abandoned after x days"
+msgstr "Cuentas abandonadas después de x días"
+
+#: ../../Zotlabs/Module/Admin.php:515
+msgid ""
+"Will not waste system resources polling external sites for abandonded "
+"accounts. Enter 0 for no time limit."
+msgstr "Para evitar consumir recursos del sistema intentando poner al día las cuentas abandonadas. Introduzca 0 para no tener límite de tiempo."
+
+#: ../../Zotlabs/Module/Admin.php:516
+msgid "Allowed friend domains"
+msgstr "Dominios amigos permitidos"
+
+#: ../../Zotlabs/Module/Admin.php:516
+msgid ""
+"Comma separated list of domains which are allowed to establish friendships "
+"with this site. Wildcards are accepted. Empty to allow any domains"
+msgstr "Lista separada por comas de dominios a los que está permitido establecer relaciones de amistad con este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio."
+
+#: ../../Zotlabs/Module/Admin.php:517
+msgid "Allowed email domains"
+msgstr "Se aceptan dominios de correo electrónico"
+
+#: ../../Zotlabs/Module/Admin.php:517
+msgid ""
+"Comma separated list of domains which are allowed in email addresses for "
+"registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains"
+msgstr "Lista separada por comas de los dominios de los que se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio. "
+
+#: ../../Zotlabs/Module/Admin.php:518
+msgid "Not allowed email domains"
+msgstr "No se permiten dominios de correo electrónico"
+
+#: ../../Zotlabs/Module/Admin.php:518
+msgid ""
+"Comma separated list of domains which are not allowed in email addresses for"
+" registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains, unless allowed domains have been defined."
+msgstr "Lista separada por comas de los dominios de los que no se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para no aceptar cualquier dominio, excepto los que se hayan autorizado."
+
+#: ../../Zotlabs/Module/Admin.php:519
+msgid "Verify Email Addresses"
+msgstr "Verificar las direcciones de correo electrónico"
+
+#: ../../Zotlabs/Module/Admin.php:519
+msgid ""
+"Check to verify email addresses used in account registration (recommended)."
+msgstr "Activar para la verificación de la dirección de correo electrónico en el registro de una cuenta (recomendado)."
+
+#: ../../Zotlabs/Module/Admin.php:520
+msgid "Force publish"
+msgstr "Forzar la publicación"
+
+#: ../../Zotlabs/Module/Admin.php:520
+msgid ""
+"Check to force all profiles on this site to be listed in the site directory."
+msgstr "Intentar forzar todos los perfiles para que sean listados en el directorio de este sitio."
+
+#: ../../Zotlabs/Module/Admin.php:521
+msgid "Import Public Streams"
+msgstr "Importar contenido público"
+
+#: ../../Zotlabs/Module/Admin.php:521
+msgid ""
+"Import and allow access to public content pulled from other sites. Warning: "
+"this content is unmoderated."
+msgstr "Importar y permitir acceso al contenido público sacado de otros sitios. Advertencia: este contenido no está moderado, por lo que podría encontrar cosas inapropiadas u ofensivas."
+
+#: ../../Zotlabs/Module/Admin.php:522
+msgid "Login on Homepage"
+msgstr "Iniciar sesión en la página personal"
+
+#: ../../Zotlabs/Module/Admin.php:522
+msgid ""
+"Present a login box to visitors on the home page if no other content has "
+"been configured."
+msgstr "Presentar a los visitantes una casilla de identificación en la página de inicio, si no se ha configurado otro tipo de contenido."
+
+#: ../../Zotlabs/Module/Admin.php:523
+msgid "Enable context help"
+msgstr "Habilitar la ayuda contextual"
+
+#: ../../Zotlabs/Module/Admin.php:523
+msgid ""
+"Display contextual help for the current page when the help button is "
+"pressed."
+msgstr "Ver la ayuda contextual para la página actual cuando se pulse el botón de Ayuda."
+
+#: ../../Zotlabs/Module/Admin.php:525
+msgid "Directory Server URL"
+msgstr "URL del servidor de directorio"
+
+#: ../../Zotlabs/Module/Admin.php:525
+msgid "Default directory server"
+msgstr "Servidor de directorio predeterminado"
+
+#: ../../Zotlabs/Module/Admin.php:527
+msgid "Proxy user"
+msgstr "Usuario del proxy"
+
+#: ../../Zotlabs/Module/Admin.php:528
+msgid "Proxy URL"
+msgstr "Dirección del proxy"
+
+#: ../../Zotlabs/Module/Admin.php:529
+msgid "Network timeout"
+msgstr "Tiempo de espera de la red"
+
+#: ../../Zotlabs/Module/Admin.php:529
+msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+msgstr "Valor en segundos. Poner a 0 para que no haya tiempo límite (no recomendado)"
+
+#: ../../Zotlabs/Module/Admin.php:530
+msgid "Delivery interval"
+msgstr "Intervalo de entrega"
+
+#: ../../Zotlabs/Module/Admin.php:530
+msgid ""
+"Delay background delivery processes by this many seconds to reduce system "
+"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
+"for large dedicated servers."
+msgstr "Retrasar los procesos de transmisión en segundo plano por esta cantidad de segundos para reducir la carga del sistema. Recomendado: 4-5 para sitios compartidos, 2-3 para servidores virtuales privados, 0-1 para grandes servidores dedicados."
+
+#: ../../Zotlabs/Module/Admin.php:531
+msgid "Deliveries per process"
+msgstr "Intentos de envío por proceso"
+
+#: ../../Zotlabs/Module/Admin.php:531
+msgid ""
+"Number of deliveries to attempt in a single operating system process. Adjust"
+" if necessary to tune system performance. Recommend: 1-5."
+msgstr "Numero de envíos a intentar en un único proceso del sistema operativo. Ajustar si es necesario mejorar el rendimiento. Se recomienda: 1-5."
+
+#: ../../Zotlabs/Module/Admin.php:532
+msgid "Poll interval"
+msgstr "Intervalo máximo de tiempo entre dos mensajes sucesivos"
+
+#: ../../Zotlabs/Module/Admin.php:532
+msgid ""
+"Delay background polling processes by this many seconds to reduce system "
+"load. If 0, use delivery interval."
+msgstr "Retrasar el intervalo de envío en segundo plano, en esta cantidad de segundos, para reducir la carga del sistema. Si es 0, usar el intervalo de entrega."
+
+#: ../../Zotlabs/Module/Admin.php:533
+msgid "Maximum Load Average"
+msgstr "Carga media máxima"
+
+#: ../../Zotlabs/Module/Admin.php:533
+msgid ""
+"Maximum system load before delivery and poll processes are deferred - "
+"default 50."
+msgstr "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50."
+
+#: ../../Zotlabs/Module/Admin.php:534
+msgid "Expiration period in days for imported (grid/network) content"
+msgstr "Caducidad del contenido importado de otros sitios (en días)"
+
+#: ../../Zotlabs/Module/Admin.php:534
+msgid "0 for no expiration of imported content"
+msgstr "0 para que no caduque el contenido importado"
+
+#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:678
+#: ../../Zotlabs/Module/Settings.php:722
+msgid "Off"
+msgstr "Desactivado"
+
+#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:678
+#: ../../Zotlabs/Module/Settings.php:722
+msgid "On"
+msgstr "Activado"
+
+#: ../../Zotlabs/Module/Admin.php:678
+#, php-format
+msgid "Lock feature %s"
+msgstr "Bloquear la funcionalidad %s"
+
+#: ../../Zotlabs/Module/Admin.php:686
+msgid "Manage Additional Features"
+msgstr "Gestionar las funcionalidades"
+
+#: ../../Zotlabs/Module/Admin.php:703
+msgid "No server found"
+msgstr "Servidor no encontrado"
+
+#: ../../Zotlabs/Module/Admin.php:710 ../../Zotlabs/Module/Admin.php:1046
+msgid "ID"
+msgstr "ID"
+
+#: ../../Zotlabs/Module/Admin.php:710
+msgid "for channel"
+msgstr "por canal"
+
+#: ../../Zotlabs/Module/Admin.php:710
+msgid "on server"
+msgstr "en el servidor"
+
+#: ../../Zotlabs/Module/Admin.php:712
+msgid "Server"
+msgstr "Servidor"
+
+#: ../../Zotlabs/Module/Admin.php:746
+msgid ""
+"By default, unfiltered HTML is allowed in embedded media. This is inherently"
+" insecure."
+msgstr "De forma predeterminada, el HTML sin filtrar está permitido en el contenido multimedia incorporado en una publicación. Esto es siempre inseguro."
+
+#: ../../Zotlabs/Module/Admin.php:749
+msgid ""
+"The recommended setting is to only allow unfiltered HTML from the following "
+"sites:"
+msgstr "La configuración recomendada es que sólo se permita HTML sin filtrar desde los siguientes sitios: "
+
+#: ../../Zotlabs/Module/Admin.php:750
+msgid ""
+"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br"
+" />https://vimeo.com/<br />https://soundcloud.com/<br />"
+msgstr "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"
+
+#: ../../Zotlabs/Module/Admin.php:751
+msgid ""
+"All other embedded content will be filtered, <strong>unless</strong> "
+"embedded content from that site is explicitly blocked."
+msgstr "El resto del contenido incrustado se filtrará, <strong>excepto</ strong> si el contenido incorporado desde ese sitio está bloqueado de forma explícita."
+
+#: ../../Zotlabs/Module/Admin.php:756 ../../include/widgets.php:1385
+msgid "Security"
+msgstr "Seguridad"
+
+#: ../../Zotlabs/Module/Admin.php:758
+msgid "Block public"
+msgstr "Bloquear páginas públicas"
+
+#: ../../Zotlabs/Module/Admin.php:758
+msgid ""
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently authenticated."
+msgstr "Habilitar para impedir ver las páginas personales de este sitio a quien no esté actualmente autenticado."
+
+#: ../../Zotlabs/Module/Admin.php:759
+msgid "Set \"Transport Security\" HTTP header"
+msgstr "Habilitar \"Seguridad de transporte\" (\"Transport Security\") en la cabecera HTTP"
+
+#: ../../Zotlabs/Module/Admin.php:760
+msgid "Set \"Content Security Policy\" HTTP header"
+msgstr "Habilitar la \"Política de seguridad del contenido\" (\"Content Security Policy\") en la cabecera HTTP"
+
+#: ../../Zotlabs/Module/Admin.php:761
+msgid "Allow communications only from these sites"
+msgstr "Permitir la comunicación solo desde estos sitios"
+
+#: ../../Zotlabs/Module/Admin.php:761
+msgid ""
+"One site per line. Leave empty to allow communication from anywhere by "
+"default"
+msgstr "Un sitio por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera"
+
+#: ../../Zotlabs/Module/Admin.php:762
+msgid "Block communications from these sites"
+msgstr "Bloquear la comunicación desde estos sitios"
+
+#: ../../Zotlabs/Module/Admin.php:763
+msgid "Allow communications only from these channels"
+msgstr "Permitir la comunicación solo desde estos canales"
+
+#: ../../Zotlabs/Module/Admin.php:763
+msgid ""
+"One channel (hash) per line. Leave empty to allow from any channel by "
+"default"
+msgstr "Un canal (hash) por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera"
+
+#: ../../Zotlabs/Module/Admin.php:764
+msgid "Block communications from these channels"
+msgstr "Bloquear la comunicación desde estos canales"
+
+#: ../../Zotlabs/Module/Admin.php:765
+msgid "Only allow embeds from secure (SSL) websites and links."
+msgstr "Sólo se permite contenido multimedia incorporado desde sitios y enlaces seguros (SSL)."
+
+#: ../../Zotlabs/Module/Admin.php:766
+msgid "Allow unfiltered embedded HTML content only from these domains"
+msgstr "Permitir contenido HTML sin filtrar sólo desde estos dominios "
+
+#: ../../Zotlabs/Module/Admin.php:766
+msgid "One site per line. By default embedded content is filtered."
+msgstr "Un sitio por línea. El contenido incorporado se filtra de forma predeterminada."
+
+#: ../../Zotlabs/Module/Admin.php:767
+msgid "Block embedded HTML from these domains"
+msgstr "Bloquear contenido con HTML incorporado desde estos dominios"
+
+#: ../../Zotlabs/Module/Admin.php:785
+msgid "Update has been marked successful"
+msgstr "La actualización ha sido marcada como exitosa"
+
+#: ../../Zotlabs/Module/Admin.php:795
+#, php-format
+msgid "Executing %s failed. Check system logs."
+msgstr "La ejecución de %s ha fallado. Mirar en los informes del sistema."
+
+#: ../../Zotlabs/Module/Admin.php:798
+#, php-format
+msgid "Update %s was successfully applied."
+msgstr "La actualización de %s se ha realizado exitosamente."
+
+#: ../../Zotlabs/Module/Admin.php:802
+#, php-format
+msgid "Update %s did not return a status. Unknown if it succeeded."
+msgstr "La actualización de %s no ha devuelto ningún estado. No se sabe si ha tenido éxito."
+
+#: ../../Zotlabs/Module/Admin.php:805
+#, php-format
+msgid "Update function %s could not be found."
+msgstr "No se encuentra la función de actualización de %s."
+
+#: ../../Zotlabs/Module/Admin.php:821
+msgid "No failed updates."
+msgstr "No ha fallado ninguna actualización."
+
+#: ../../Zotlabs/Module/Admin.php:825
+msgid "Failed Updates"
+msgstr "Han fallado las actualizaciones"
+
+#: ../../Zotlabs/Module/Admin.php:827
+msgid "Mark success (if update was manually applied)"
+msgstr "Marcar como exitosa (si la actualización se ha hecho manualmente)"
+
+#: ../../Zotlabs/Module/Admin.php:828
+msgid "Attempt to execute this update step automatically"
+msgstr "Intentar ejecutar este paso de actualización automáticamente"
+
+#: ../../Zotlabs/Module/Admin.php:859
+msgid "Queue Statistics"
+msgstr "Estadísticas de la cola"
+
+#: ../../Zotlabs/Module/Admin.php:860
+msgid "Total Entries"
+msgstr "Total de entradas"
+
+#: ../../Zotlabs/Module/Admin.php:861
+msgid "Priority"
+msgstr "Prioridad"
+
+#: ../../Zotlabs/Module/Admin.php:862
+msgid "Destination URL"
+msgstr "Dirección de destino"
+
+#: ../../Zotlabs/Module/Admin.php:863
+msgid "Mark hub permanently offline"
+msgstr "Marcar el servidor como permanentemente fuera de línea"
+
+#: ../../Zotlabs/Module/Admin.php:864
+msgid "Empty queue for this hub"
+msgstr "Vaciar la cola para este servidor"
+
+#: ../../Zotlabs/Module/Admin.php:865
+msgid "Last known contact"
+msgstr "Último contacto conocido"
+
+#: ../../Zotlabs/Module/Admin.php:901
+#, php-format
+msgid "%s account blocked/unblocked"
+msgid_plural "%s account blocked/unblocked"
+msgstr[0] "%s cuenta bloqueada/desbloqueada"
+msgstr[1] "%s cuenta bloqueada/desbloqueada"
+
+#: ../../Zotlabs/Module/Admin.php:908
+#, php-format
+msgid "%s account deleted"
+msgid_plural "%s accounts deleted"
+msgstr[0] "%s cuentas eliminadas"
+msgstr[1] "%s cuentas eliminadas"
+
+#: ../../Zotlabs/Module/Admin.php:944
+msgid "Account not found"
+msgstr "Cuenta no encontrada"
+
+#: ../../Zotlabs/Module/Admin.php:955
+#, php-format
+msgid "Account '%s' deleted"
+msgstr "La cuenta '%s' ha sido eliminada"
+
+#: ../../Zotlabs/Module/Admin.php:963
+#, php-format
+msgid "Account '%s' blocked"
+msgstr "La cuenta '%s' ha sido bloqueada"
+
+#: ../../Zotlabs/Module/Admin.php:971
+#, php-format
+msgid "Account '%s' unblocked"
+msgstr "La cuenta '%s' ha sido desbloqueada"
+
+#: ../../Zotlabs/Module/Admin.php:1031 ../../Zotlabs/Module/Admin.php:1044
+#: ../../include/widgets.php:1383
+msgid "Accounts"
+msgstr "Cuentas"
+
+#: ../../Zotlabs/Module/Admin.php:1033 ../../Zotlabs/Module/Admin.php:1212
+msgid "select all"
+msgstr "seleccionar todo"
+
+#: ../../Zotlabs/Module/Admin.php:1034
+msgid "Registrations waiting for confirm"
+msgstr "Inscripciones en espera de confirmación"
+
+#: ../../Zotlabs/Module/Admin.php:1035
+msgid "Request date"
+msgstr "Fecha de solicitud"
+
+#: ../../Zotlabs/Module/Admin.php:1036
+msgid "No registrations."
+msgstr "Sin registros."
+
+#: ../../Zotlabs/Module/Admin.php:1038
+msgid "Deny"
+msgstr "Rechazar"
+
+#: ../../Zotlabs/Module/Admin.php:1048 ../../include/group.php:267
+msgid "All Channels"
+msgstr "Todos los canales"
+
+#: ../../Zotlabs/Module/Admin.php:1049
+msgid "Register date"
+msgstr "Fecha de registro"
+
+#: ../../Zotlabs/Module/Admin.php:1050
+msgid "Last login"
+msgstr "Último acceso"
+
+#: ../../Zotlabs/Module/Admin.php:1051
+msgid "Expires"
+msgstr "Caduca"
+
+#: ../../Zotlabs/Module/Admin.php:1052
+msgid "Service Class"
+msgstr "Clase de servicio"
+
+#: ../../Zotlabs/Module/Admin.php:1054
+msgid ""
+"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
+" on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "¡Las cuentas seleccionadas van a ser eliminadas!\\n\\n¡Todo lo que estas cuentas han publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?"
+
+#: ../../Zotlabs/Module/Admin.php:1055
+msgid ""
+"The account {0} will be deleted!\\n\\nEverything this account has posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "¡La cuenta {0} va a ser eliminada!\\n\\n¡Todo lo que esta cuenta ha publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?"
+
+#: ../../Zotlabs/Module/Admin.php:1091
+#, php-format
+msgid "%s channel censored/uncensored"
+msgid_plural "%s channels censored/uncensored"
+msgstr[0] "%s canales censurados/no censurados"
+msgstr[1] "%s canales censurados/no censurados"
+
+#: ../../Zotlabs/Module/Admin.php:1100
+#, php-format
+msgid "%s channel code allowed/disallowed"
+msgid_plural "%s channels code allowed/disallowed"
+msgstr[0] "%s código permitido/no permitido al canal"
+msgstr[1] "%s código permitido/no permitido al canal"
+
+#: ../../Zotlabs/Module/Admin.php:1106
+#, php-format
+msgid "%s channel deleted"
+msgid_plural "%s channels deleted"
+msgstr[0] "%s canales eliminados"
+msgstr[1] "%s canales eliminados"
+
+#: ../../Zotlabs/Module/Admin.php:1126
+msgid "Channel not found"
+msgstr "Canal no encontrado"
+
+#: ../../Zotlabs/Module/Admin.php:1136
+#, php-format
+msgid "Channel '%s' deleted"
+msgstr "Canal '%s' eliminado"
+
+#: ../../Zotlabs/Module/Admin.php:1148
+#, php-format
+msgid "Channel '%s' censored"
+msgstr "Canal '%s' censurado"
+
+#: ../../Zotlabs/Module/Admin.php:1148
+#, php-format
+msgid "Channel '%s' uncensored"
+msgstr "Canal '%s' no censurado"
+
+#: ../../Zotlabs/Module/Admin.php:1159
+#, php-format
+msgid "Channel '%s' code allowed"
+msgstr "Código permitido al canal '%s'"
+
+#: ../../Zotlabs/Module/Admin.php:1159
+#, php-format
+msgid "Channel '%s' code disallowed"
+msgstr "Código no permitido al canal '%s'"
+
+#: ../../Zotlabs/Module/Admin.php:1210 ../../include/widgets.php:1384
+msgid "Channels"
+msgstr "Canales"
+
+#: ../../Zotlabs/Module/Admin.php:1214
+msgid "Censor"
+msgstr "Censurar"
+
+#: ../../Zotlabs/Module/Admin.php:1215
+msgid "Uncensor"
+msgstr "No censurar"
+
+#: ../../Zotlabs/Module/Admin.php:1216
+msgid "Allow Code"
+msgstr "Permitir código"
+
+#: ../../Zotlabs/Module/Admin.php:1217
+msgid "Disallow Code"
+msgstr "No permitir código"
+
+#: ../../Zotlabs/Module/Admin.php:1218 ../../include/conversation.php:1611
+msgid "Channel"
+msgstr "Canal"
+
+#: ../../Zotlabs/Module/Admin.php:1222
+msgid "UID"
+msgstr "UID"
+
+#: ../../Zotlabs/Module/Admin.php:1226
+msgid ""
+"Selected channels will be deleted!\\n\\nEverything that was posted in these "
+"channels on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Los canales seleccionados se eliminarán!\\n\\nTodo lo publicado por estos canales en este sitio se borrarán definitivamente!\\n\\n¿Está seguro de querer hacerlo?"
+
+#: ../../Zotlabs/Module/Admin.php:1227
+msgid ""
+"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
+"channel on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "El canal {0} va a ser eliminado!\\n\\nTodo lo publicado por el canal en este sitio se borrará definitivamente!\\n\\n¿Está seguro de querer hacerlo?"
+
+#: ../../Zotlabs/Module/Admin.php:1284
+#, php-format
+msgid "Plugin %s disabled."
+msgstr "Extensión %s desactivada."
+
+#: ../../Zotlabs/Module/Admin.php:1288
+#, php-format
+msgid "Plugin %s enabled."
+msgstr "Extensión %s activada."
+
+#: ../../Zotlabs/Module/Admin.php:1298 ../../Zotlabs/Module/Admin.php:1585
+msgid "Disable"
+msgstr "Desactivar"
+
+#: ../../Zotlabs/Module/Admin.php:1301 ../../Zotlabs/Module/Admin.php:1587
+msgid "Enable"
+msgstr "Activar"
+
+#: ../../Zotlabs/Module/Admin.php:1330 ../../Zotlabs/Module/Admin.php:1420
+#: ../../include/widgets.php:1387
+msgid "Plugins"
+msgstr "Extensiones (plugins)"
+
+#: ../../Zotlabs/Module/Admin.php:1331 ../../Zotlabs/Module/Admin.php:1614
+msgid "Toggle"
+msgstr "Cambiar"
+
+#: ../../Zotlabs/Module/Admin.php:1332 ../../Zotlabs/Module/Admin.php:1615
+#: ../../Zotlabs/Lib/Apps.php:215 ../../include/widgets.php:638
+#: ../../include/nav.php:208
+msgid "Settings"
+msgstr "Ajustes"
+
+#: ../../Zotlabs/Module/Admin.php:1339 ../../Zotlabs/Module/Admin.php:1624
+msgid "Author: "
+msgstr "Autor:"
+
+#: ../../Zotlabs/Module/Admin.php:1340 ../../Zotlabs/Module/Admin.php:1625
+msgid "Maintainer: "
+msgstr "Mantenedor:"
+
+#: ../../Zotlabs/Module/Admin.php:1341
+msgid "Minimum project version: "
+msgstr "Versión mínima del proyecto:"
+
+#: ../../Zotlabs/Module/Admin.php:1342
+msgid "Maximum project version: "
+msgstr "Versión máxima del proyecto:"
+
+#: ../../Zotlabs/Module/Admin.php:1343
+msgid "Minimum PHP version: "
+msgstr "Versión mínima de PHP:"
+
+#: ../../Zotlabs/Module/Admin.php:1344
+msgid "Requires: "
+msgstr "Se requiere:"
+
+#: ../../Zotlabs/Module/Admin.php:1345 ../../Zotlabs/Module/Admin.php:1425
+msgid "Disabled - version incompatibility"
+msgstr "Deshabilitado - versiones incompatibles"
+
+#: ../../Zotlabs/Module/Admin.php:1394
+msgid "Enter the public git repository URL of the plugin repo."
+msgstr "Escriba la URL pública del repositorio git del plugin."
+
+#: ../../Zotlabs/Module/Admin.php:1395
+msgid "Plugin repo git URL"
+msgstr "URL del repositorio git del plugin"
+
+#: ../../Zotlabs/Module/Admin.php:1396
+msgid "Custom repo name"
+msgstr "Nombre personalizado del repositorio"
+
+#: ../../Zotlabs/Module/Admin.php:1396
+msgid "(optional)"
+msgstr "(opcional)"
+
+#: ../../Zotlabs/Module/Admin.php:1397
+msgid "Download Plugin Repo"
+msgstr "Descargar el repositorio"
+
+#: ../../Zotlabs/Module/Admin.php:1404
+msgid "Install new repo"
+msgstr "Instalar un nuevo repositorio"
+
+#: ../../Zotlabs/Module/Admin.php:1405 ../../Zotlabs/Lib/Apps.php:330
+msgid "Install"
+msgstr "Instalar"
+
+#: ../../Zotlabs/Module/Admin.php:1427
+msgid "Manage Repos"
+msgstr "Gestionar los repositorios"
+
+#: ../../Zotlabs/Module/Admin.php:1428
+msgid "Installed Plugin Repositories"
+msgstr "Repositorios de los plugins instalados"
+
+#: ../../Zotlabs/Module/Admin.php:1429
+msgid "Install a New Plugin Repository"
+msgstr "Instalar un nuevo repositorio de plugins"
+
+#: ../../Zotlabs/Module/Admin.php:1435 ../../Zotlabs/Module/Settings.php:77
+#: ../../Zotlabs/Module/Settings.php:616 ../../Zotlabs/Lib/Apps.php:330
+msgid "Update"
+msgstr "Actualizar"
+
+#: ../../Zotlabs/Module/Admin.php:1436
+msgid "Switch branch"
+msgstr "Cambiar la rama"
+
+#: ../../Zotlabs/Module/Admin.php:1550
+msgid "No themes found."
+msgstr "No se han encontrado temas."
+
+#: ../../Zotlabs/Module/Admin.php:1606
+msgid "Screenshot"
+msgstr "Instantánea de pantalla"
+
+#: ../../Zotlabs/Module/Admin.php:1613 ../../Zotlabs/Module/Admin.php:1647
+#: ../../include/widgets.php:1388
+msgid "Themes"
+msgstr "Temas"
+
+#: ../../Zotlabs/Module/Admin.php:1652
+msgid "[Experimental]"
+msgstr "[Experimental]"
+
+#: ../../Zotlabs/Module/Admin.php:1653
+msgid "[Unsupported]"
+msgstr "[No soportado]"
+
+#: ../../Zotlabs/Module/Admin.php:1677
+msgid "Log settings updated."
+msgstr "Actualizado el informe de configuraciones."
+
+#: ../../Zotlabs/Module/Admin.php:1732 ../../include/widgets.php:1409
+#: ../../include/widgets.php:1419
+msgid "Logs"
+msgstr "Informes"
+
+#: ../../Zotlabs/Module/Admin.php:1734
+msgid "Clear"
+msgstr "Vaciar"
+
+#: ../../Zotlabs/Module/Admin.php:1740
+msgid "Debugging"
+msgstr "Depuración"
+
+#: ../../Zotlabs/Module/Admin.php:1741
+msgid "Log file"
+msgstr "Fichero de informe"
+
+#: ../../Zotlabs/Module/Admin.php:1741
+msgid ""
+"Must be writable by web server. Relative to your top-level webserver "
+"directory."
+msgstr "Debe tener permisos de escritura por el servidor web. La ruta es relativa al directorio web principal."
+
+#: ../../Zotlabs/Module/Admin.php:1742
+msgid "Log level"
+msgstr "Nivel de depuración"
+
+#: ../../Zotlabs/Module/Admin.php:2028
+msgid "New Profile Field"
+msgstr "Nuevo campo en el perfil"
+
+#: ../../Zotlabs/Module/Admin.php:2029 ../../Zotlabs/Module/Admin.php:2049
+msgid "Field nickname"
+msgstr "Alias del campo"
+
+#: ../../Zotlabs/Module/Admin.php:2029 ../../Zotlabs/Module/Admin.php:2049
+msgid "System name of field"
+msgstr "Nombre del campo en el sistema"
+
+#: ../../Zotlabs/Module/Admin.php:2030 ../../Zotlabs/Module/Admin.php:2050
+msgid "Input type"
+msgstr "Tipo de entrada"
+
+#: ../../Zotlabs/Module/Admin.php:2031 ../../Zotlabs/Module/Admin.php:2051
+msgid "Field Name"
+msgstr "Nombre del campo"
+
+#: ../../Zotlabs/Module/Admin.php:2031 ../../Zotlabs/Module/Admin.php:2051
+msgid "Label on profile pages"
+msgstr "Etiqueta a mostrar en la página del perfil"
+
+#: ../../Zotlabs/Module/Admin.php:2032 ../../Zotlabs/Module/Admin.php:2052
+msgid "Help text"
+msgstr "Texto de ayuda"
+
+#: ../../Zotlabs/Module/Admin.php:2032 ../../Zotlabs/Module/Admin.php:2052
+msgid "Additional info (optional)"
+msgstr "Información adicional (opcional)"
+
+#: ../../Zotlabs/Module/Admin.php:2042
+msgid "Field definition not found"
+msgstr "Definición del campo no encontrada"
+
+#: ../../Zotlabs/Module/Admin.php:2048
+msgid "Edit Profile Field"
+msgstr "Modificar el campo del perfil"
+
+#: ../../Zotlabs/Module/Admin.php:2106 ../../include/widgets.php:1390
+msgid "Profile Fields"
+msgstr "Campos del perfil"
+
+#: ../../Zotlabs/Module/Admin.php:2107
+msgid "Basic Profile Fields"
+msgstr "Campos básicos del perfil"
+
+#: ../../Zotlabs/Module/Admin.php:2108
+msgid "Advanced Profile Fields"
+msgstr "Campos avanzados del perfil"
+
+#: ../../Zotlabs/Module/Admin.php:2108
+msgid "(In addition to basic fields)"
+msgstr "(Además de los campos básicos)"
+
+#: ../../Zotlabs/Module/Admin.php:2110
+msgid "All available fields"
+msgstr "Todos los campos disponibles"
+
+#: ../../Zotlabs/Module/Admin.php:2111
+msgid "Custom Fields"
+msgstr "Campos personalizados"
+
+#: ../../Zotlabs/Module/Admin.php:2115
+msgid "Create Custom Field"
+msgstr "Crear un campo personalizado"
+
+#: ../../Zotlabs/Module/Appman.php:37 ../../Zotlabs/Module/Appman.php:53
+msgid "App installed."
+msgstr "Aplicación instalada."
+
+#: ../../Zotlabs/Module/Appman.php:46
+msgid "Malformed app."
+msgstr "Aplicación con errores"
+
+#: ../../Zotlabs/Module/Appman.php:104
+msgid "Embed code"
+msgstr "Código incorporado"
+
+#: ../../Zotlabs/Module/Appman.php:110 ../../include/widgets.php:107
+msgid "Edit App"
+msgstr "Modificar la aplicación"
+
+#: ../../Zotlabs/Module/Appman.php:110
+msgid "Create App"
+msgstr "Crear una aplicación"
+
+#: ../../Zotlabs/Module/Appman.php:115
+msgid "Name of app"
+msgstr "Nombre de la aplicación"
+
+#: ../../Zotlabs/Module/Appman.php:116
+msgid "Location (URL) of app"
+msgstr "Dirección (URL) de la aplicación"
+
+#: ../../Zotlabs/Module/Appman.php:118
+msgid "Photo icon URL"
+msgstr "Dirección del icono"
+
+#: ../../Zotlabs/Module/Appman.php:118
+msgid "80 x 80 pixels - optional"
+msgstr "80 x 80 pixels - opcional"
+
+#: ../../Zotlabs/Module/Appman.php:119
+msgid "Categories (optional, comma separated list)"
+msgstr "Categorías (opcional, lista separada por comas)"
+
+#: ../../Zotlabs/Module/Appman.php:120
+msgid "Version ID"
+msgstr "Versión"
+
+#: ../../Zotlabs/Module/Appman.php:121
+msgid "Price of app"
+msgstr "Precio de la aplicación"
+
+#: ../../Zotlabs/Module/Appman.php:122
+msgid "Location (URL) to purchase app"
+msgstr "Dirección (URL) donde adquirir la aplicación"
+
#: ../../Zotlabs/Module/Rbmark.php:94
msgid "Select a bookmark folder"
msgstr "Seleccionar una carpeta de marcadores"
@@ -4817,7 +4756,7 @@ msgid "Membership on this site is by invitation only."
msgstr "Para registrarse en este sitio es necesaria una invitación."
#: ../../Zotlabs/Module/Register.php:262 ../../include/nav.php:147
-#: ../../boot.php:1597
+#: ../../boot.php:1685
msgid "Register"
msgstr "Registrarse"
@@ -4835,45 +4774,45 @@ msgid ""
"password."
msgstr "La eliminación de cuentas no está permitida hasta después de que hayan transcurrido 48 horas desde el último cambio de contraseña."
-#: ../../Zotlabs/Module/Removeaccount.php:61
+#: ../../Zotlabs/Module/Removeaccount.php:56
msgid "Remove This Account"
msgstr "Eliminar esta cuenta"
-#: ../../Zotlabs/Module/Removeaccount.php:62
-#: ../../Zotlabs/Module/Removeme.php:62
+#: ../../Zotlabs/Module/Removeaccount.php:57
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "WARNING: "
msgstr "ATENCIÓN:"
-#: ../../Zotlabs/Module/Removeaccount.php:62
+#: ../../Zotlabs/Module/Removeaccount.php:57
msgid ""
"This account and all its channels will be completely removed from the "
"network. "
msgstr "Esta cuenta y todos sus canales van a ser eliminados de la red."
-#: ../../Zotlabs/Module/Removeaccount.php:62
-#: ../../Zotlabs/Module/Removeme.php:62
+#: ../../Zotlabs/Module/Removeaccount.php:57
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "This action is permanent and can not be undone!"
msgstr "¡Esta acción tiene carácter definitivo y no se puede deshacer!"
-#: ../../Zotlabs/Module/Removeaccount.php:63
-#: ../../Zotlabs/Module/Removeme.php:63
+#: ../../Zotlabs/Module/Removeaccount.php:58
+#: ../../Zotlabs/Module/Removeme.php:60
msgid "Please enter your password for verification:"
msgstr "Por favor, introduzca su contraseña para su verificación:"
-#: ../../Zotlabs/Module/Removeaccount.php:64
+#: ../../Zotlabs/Module/Removeaccount.php:59
msgid ""
"Remove this account, all its channels and all its channel clones from the "
"network"
msgstr "Remover esta cuenta, todos sus canales y clones de la red"
-#: ../../Zotlabs/Module/Removeaccount.php:64
+#: ../../Zotlabs/Module/Removeaccount.php:59
msgid ""
"By default only the instances of the channels located on this hub will be "
"removed from the network"
msgstr "Por defecto, solo las instancias de los canales ubicados en este servidor serán eliminados de la red"
-#: ../../Zotlabs/Module/Removeaccount.php:65
-#: ../../Zotlabs/Module/Settings.php:703
+#: ../../Zotlabs/Module/Removeaccount.php:60
+#: ../../Zotlabs/Module/Settings.php:705
msgid "Remove Account"
msgstr "Eliminar cuenta"
@@ -4883,25 +4822,25 @@ msgid ""
"password."
msgstr "La eliminación de canales no está permitida hasta pasadas 48 horas desde el último cambio de contraseña."
-#: ../../Zotlabs/Module/Removeme.php:61
+#: ../../Zotlabs/Module/Removeme.php:58
msgid "Remove This Channel"
msgstr "Eliminar este canal"
-#: ../../Zotlabs/Module/Removeme.php:62
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "This channel will be completely removed from the network. "
msgstr "Este canal va a ser completamente eliminado de la red."
-#: ../../Zotlabs/Module/Removeme.php:64
+#: ../../Zotlabs/Module/Removeme.php:61
msgid "Remove this channel and all its clones from the network"
msgstr "Eliminar este canal y todos sus clones de la red"
-#: ../../Zotlabs/Module/Removeme.php:64
+#: ../../Zotlabs/Module/Removeme.php:61
msgid ""
"By default only the instance of the channel located on this hub will be "
"removed from the network"
msgstr "Por defecto, solo la instancia del canal alojado en este servidor será eliminado de la red"
-#: ../../Zotlabs/Module/Removeme.php:65 ../../Zotlabs/Module/Settings.php:1122
+#: ../../Zotlabs/Module/Removeme.php:62 ../../Zotlabs/Module/Settings.php:1124
msgid "Remove Channel"
msgstr "Eliminar el canal"
@@ -4945,1015 +4884,1034 @@ msgstr "Resultados de la búsqueda para: %s"
msgid "No service class restrictions found."
msgstr "No se han encontrado restricciones sobre esta clase de servicio."
-#: ../../Zotlabs/Module/Settings.php:67
+#: ../../Zotlabs/Module/Settings.php:69
msgid "Name is required"
msgstr "El nombre es obligatorio"
-#: ../../Zotlabs/Module/Settings.php:71
+#: ../../Zotlabs/Module/Settings.php:73
msgid "Key and Secret are required"
msgstr "\"Key\" y \"Secret\" son obligatorios"
-#: ../../Zotlabs/Module/Settings.php:75 ../../Zotlabs/Module/Settings.php:614
-#: ../../include/apps.php:252
-msgid "Update"
-msgstr "Actualizar"
-
-#: ../../Zotlabs/Module/Settings.php:223
+#: ../../Zotlabs/Module/Settings.php:225
msgid "Not valid email."
msgstr "Correo electrónico no válido."
-#: ../../Zotlabs/Module/Settings.php:226
+#: ../../Zotlabs/Module/Settings.php:228
msgid "Protected email address. Cannot change to that email."
msgstr "Dirección de correo electrónico protegida. No se puede cambiar a ella."
-#: ../../Zotlabs/Module/Settings.php:235
+#: ../../Zotlabs/Module/Settings.php:237
msgid "System failure storing new email. Please try again."
msgstr "Fallo de sistema al guardar el nuevo correo electrónico. Por favor, inténtelo de nuevo."
-#: ../../Zotlabs/Module/Settings.php:252
+#: ../../Zotlabs/Module/Settings.php:254
msgid "Password verification failed."
msgstr "La comprobación de la contraseña ha fallado."
-#: ../../Zotlabs/Module/Settings.php:259
+#: ../../Zotlabs/Module/Settings.php:261
msgid "Passwords do not match. Password unchanged."
msgstr "Las contraseñas no coinciden. La contraseña no se ha cambiado."
-#: ../../Zotlabs/Module/Settings.php:263
+#: ../../Zotlabs/Module/Settings.php:265
msgid "Empty passwords are not allowed. Password unchanged."
msgstr "No se permiten contraseñas vacías. La contraseña no se ha cambiado."
-#: ../../Zotlabs/Module/Settings.php:277
+#: ../../Zotlabs/Module/Settings.php:279
msgid "Password changed."
msgstr "Contraseña cambiada."
-#: ../../Zotlabs/Module/Settings.php:279
+#: ../../Zotlabs/Module/Settings.php:281
msgid "Password update failed. Please try again."
msgstr "La actualización de la contraseña ha fallado. Por favor, inténtalo de nuevo."
-#: ../../Zotlabs/Module/Settings.php:523
+#: ../../Zotlabs/Module/Settings.php:525
msgid "Settings updated."
msgstr "Ajustes actualizados."
-#: ../../Zotlabs/Module/Settings.php:587 ../../Zotlabs/Module/Settings.php:613
-#: ../../Zotlabs/Module/Settings.php:649
+#: ../../Zotlabs/Module/Settings.php:589 ../../Zotlabs/Module/Settings.php:615
+#: ../../Zotlabs/Module/Settings.php:651
msgid "Add application"
msgstr "Añadir aplicación"
-#: ../../Zotlabs/Module/Settings.php:590
+#: ../../Zotlabs/Module/Settings.php:592
msgid "Name of application"
msgstr "Nombre de la aplicación"
-#: ../../Zotlabs/Module/Settings.php:591 ../../Zotlabs/Module/Settings.php:617
+#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:619
msgid "Consumer Key"
msgstr "Consumer Key"
-#: ../../Zotlabs/Module/Settings.php:591 ../../Zotlabs/Module/Settings.php:592
+#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:594
msgid "Automatically generated - change if desired. Max length 20"
msgstr "Generado automáticamente - si lo desea, cámbielo. Longitud máxima: 20"
-#: ../../Zotlabs/Module/Settings.php:592 ../../Zotlabs/Module/Settings.php:618
+#: ../../Zotlabs/Module/Settings.php:594 ../../Zotlabs/Module/Settings.php:620
msgid "Consumer Secret"
msgstr "Consumer Secret"
-#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:619
+#: ../../Zotlabs/Module/Settings.php:595 ../../Zotlabs/Module/Settings.php:621
msgid "Redirect"
msgstr "Redirigir"
-#: ../../Zotlabs/Module/Settings.php:593
+#: ../../Zotlabs/Module/Settings.php:595
msgid ""
"Redirect URI - leave blank unless your application specifically requires "
"this"
msgstr "URI de redirección - dejar en blanco a menos que su aplicación específicamente lo requiera"
-#: ../../Zotlabs/Module/Settings.php:594 ../../Zotlabs/Module/Settings.php:620
+#: ../../Zotlabs/Module/Settings.php:596 ../../Zotlabs/Module/Settings.php:622
msgid "Icon url"
msgstr "Dirección del icono"
-#: ../../Zotlabs/Module/Settings.php:594
+#: ../../Zotlabs/Module/Settings.php:596 ../../Zotlabs/Module/Sources.php:112
+#: ../../Zotlabs/Module/Sources.php:147
msgid "Optional"
msgstr "Opcional"
-#: ../../Zotlabs/Module/Settings.php:605
+#: ../../Zotlabs/Module/Settings.php:607
msgid "Application not found."
msgstr "Aplicación no encontrada."
-#: ../../Zotlabs/Module/Settings.php:648
+#: ../../Zotlabs/Module/Settings.php:650
msgid "Connected Apps"
-msgstr "Aplicaciones conectadas"
+msgstr "Aplicaciones (apps) conectadas"
-#: ../../Zotlabs/Module/Settings.php:652
+#: ../../Zotlabs/Module/Settings.php:654
msgid "Client key starts with"
msgstr "La \"client key\" empieza por"
-#: ../../Zotlabs/Module/Settings.php:653
+#: ../../Zotlabs/Module/Settings.php:655
msgid "No name"
msgstr "Sin nombre"
-#: ../../Zotlabs/Module/Settings.php:654
+#: ../../Zotlabs/Module/Settings.php:656
msgid "Remove authorization"
msgstr "Eliminar autorización"
-#: ../../Zotlabs/Module/Settings.php:667
+#: ../../Zotlabs/Module/Settings.php:669
msgid "No feature settings configured"
msgstr "No se ha establecido la configuración de los complementos"
-#: ../../Zotlabs/Module/Settings.php:674
+#: ../../Zotlabs/Module/Settings.php:676
msgid "Feature/Addon Settings"
msgstr "Ajustes de los complementos"
-#: ../../Zotlabs/Module/Settings.php:697
+#: ../../Zotlabs/Module/Settings.php:699
msgid "Account Settings"
msgstr "Configuración de la cuenta"
-#: ../../Zotlabs/Module/Settings.php:698
+#: ../../Zotlabs/Module/Settings.php:700
msgid "Current Password"
msgstr "Contraseña actual"
-#: ../../Zotlabs/Module/Settings.php:699
+#: ../../Zotlabs/Module/Settings.php:701
msgid "Enter New Password"
msgstr "Escribir una nueva contraseña"
-#: ../../Zotlabs/Module/Settings.php:700
+#: ../../Zotlabs/Module/Settings.php:702
msgid "Confirm New Password"
msgstr "Confirmar la nueva contraseña"
-#: ../../Zotlabs/Module/Settings.php:700
+#: ../../Zotlabs/Module/Settings.php:702
msgid "Leave password fields blank unless changing"
msgstr "Dejar en blanco la contraseña a menos que desee cambiarla."
-#: ../../Zotlabs/Module/Settings.php:702
-#: ../../Zotlabs/Module/Settings.php:1039
+#: ../../Zotlabs/Module/Settings.php:704
+#: ../../Zotlabs/Module/Settings.php:1041
msgid "Email Address:"
msgstr "Dirección de correo electrónico:"
-#: ../../Zotlabs/Module/Settings.php:704
+#: ../../Zotlabs/Module/Settings.php:706
msgid "Remove this account including all its channels"
msgstr "Eliminar esta cuenta incluyendo todos sus canales"
-#: ../../Zotlabs/Module/Settings.php:727
+#: ../../Zotlabs/Module/Settings.php:729
msgid "Additional Features"
msgstr "Funcionalidades"
-#: ../../Zotlabs/Module/Settings.php:751
+#: ../../Zotlabs/Module/Settings.php:753
msgid "Connector Settings"
msgstr "Configuración del conector"
-#: ../../Zotlabs/Module/Settings.php:790
+#: ../../Zotlabs/Module/Settings.php:792
msgid "No special theme for mobile devices"
msgstr "Sin tema especial para dispositivos móviles"
-#: ../../Zotlabs/Module/Settings.php:793
+#: ../../Zotlabs/Module/Settings.php:795
#, php-format
msgid "%s - (Experimental)"
msgstr "%s - (Experimental)"
-#: ../../Zotlabs/Module/Settings.php:835
+#: ../../Zotlabs/Module/Settings.php:837
msgid "Display Settings"
msgstr "Ajustes de visualización"
-#: ../../Zotlabs/Module/Settings.php:836
+#: ../../Zotlabs/Module/Settings.php:838
msgid "Theme Settings"
msgstr "Ajustes del tema"
-#: ../../Zotlabs/Module/Settings.php:837
+#: ../../Zotlabs/Module/Settings.php:839
msgid "Custom Theme Settings"
msgstr "Ajustes personalizados del tema"
-#: ../../Zotlabs/Module/Settings.php:838
+#: ../../Zotlabs/Module/Settings.php:840
msgid "Content Settings"
msgstr "Ajustes del contenido"
-#: ../../Zotlabs/Module/Settings.php:844
+#: ../../Zotlabs/Module/Settings.php:846
msgid "Display Theme:"
msgstr "Tema gráfico del perfil:"
-#: ../../Zotlabs/Module/Settings.php:845
+#: ../../Zotlabs/Module/Settings.php:847
msgid "Mobile Theme:"
msgstr "Tema para el móvil:"
-#: ../../Zotlabs/Module/Settings.php:846
+#: ../../Zotlabs/Module/Settings.php:848
msgid "Preload images before rendering the page"
msgstr "Carga previa de las imágenes antes de generar la página"
-#: ../../Zotlabs/Module/Settings.php:846
+#: ../../Zotlabs/Module/Settings.php:848
msgid ""
"The subjective page load time will be longer but the page will be ready when"
" displayed"
msgstr "El tiempo subjetivo de carga de la página será más largo, pero la página estará lista cuando se muestre."
-#: ../../Zotlabs/Module/Settings.php:847
+#: ../../Zotlabs/Module/Settings.php:849
msgid "Enable user zoom on mobile devices"
msgstr "Habilitar zoom de usuario en dispositivos móviles"
-#: ../../Zotlabs/Module/Settings.php:848
+#: ../../Zotlabs/Module/Settings.php:850
msgid "Update browser every xx seconds"
msgstr "Actualizar navegador cada xx segundos"
-#: ../../Zotlabs/Module/Settings.php:848
+#: ../../Zotlabs/Module/Settings.php:850
msgid "Minimum of 10 seconds, no maximum"
msgstr "Mínimo de 10 segundos, sin máximo"
-#: ../../Zotlabs/Module/Settings.php:849
+#: ../../Zotlabs/Module/Settings.php:851
msgid "Maximum number of conversations to load at any time:"
msgstr "Máximo número de conversaciones a cargar en cualquier momento:"
-#: ../../Zotlabs/Module/Settings.php:849
+#: ../../Zotlabs/Module/Settings.php:851
msgid "Maximum of 100 items"
msgstr "Máximo de 100 elementos"
-#: ../../Zotlabs/Module/Settings.php:850
+#: ../../Zotlabs/Module/Settings.php:852
msgid "Show emoticons (smilies) as images"
msgstr "Mostrar emoticonos (smilies) como imágenes"
-#: ../../Zotlabs/Module/Settings.php:851
+#: ../../Zotlabs/Module/Settings.php:853
msgid "Link post titles to source"
msgstr "Enlazar título de la publicación a la fuente original"
-#: ../../Zotlabs/Module/Settings.php:852
+#: ../../Zotlabs/Module/Settings.php:854
msgid "System Page Layout Editor - (advanced)"
msgstr "Editor de plantilla de página del sistema - (avanzado)"
-#: ../../Zotlabs/Module/Settings.php:855
+#: ../../Zotlabs/Module/Settings.php:857
msgid "Use blog/list mode on channel page"
msgstr "Usar modo blog/lista en la página de inicio del canal"
-#: ../../Zotlabs/Module/Settings.php:855 ../../Zotlabs/Module/Settings.php:856
+#: ../../Zotlabs/Module/Settings.php:857 ../../Zotlabs/Module/Settings.php:858
msgid "(comments displayed separately)"
msgstr "(comentarios mostrados de forma separada)"
-#: ../../Zotlabs/Module/Settings.php:856
+#: ../../Zotlabs/Module/Settings.php:858
msgid "Use blog/list mode on grid page"
msgstr "Mostrar mi red en modo blog"
-#: ../../Zotlabs/Module/Settings.php:857
+#: ../../Zotlabs/Module/Settings.php:859
msgid "Channel page max height of content (in pixels)"
msgstr "Altura máxima del contenido de la página del canal (en píxeles)"
-#: ../../Zotlabs/Module/Settings.php:857 ../../Zotlabs/Module/Settings.php:858
+#: ../../Zotlabs/Module/Settings.php:859 ../../Zotlabs/Module/Settings.php:860
msgid "click to expand content exceeding this height"
msgstr "Pulsar para expandir el contenido que exceda de esta altura"
-#: ../../Zotlabs/Module/Settings.php:858
+#: ../../Zotlabs/Module/Settings.php:860
msgid "Grid page max height of content (in pixels)"
msgstr "Altura máxima del contenido de mi red (en píxeles)"
-#: ../../Zotlabs/Module/Settings.php:892
+#: ../../Zotlabs/Module/Settings.php:894
msgid "Nobody except yourself"
msgstr "Nadie excepto usted"
-#: ../../Zotlabs/Module/Settings.php:893
+#: ../../Zotlabs/Module/Settings.php:895
msgid "Only those you specifically allow"
msgstr "Solo aquellos a los que usted permita explícitamente"
-#: ../../Zotlabs/Module/Settings.php:894
+#: ../../Zotlabs/Module/Settings.php:896
msgid "Approved connections"
msgstr "Conexiones aprobadas"
-#: ../../Zotlabs/Module/Settings.php:895
+#: ../../Zotlabs/Module/Settings.php:897
msgid "Any connections"
msgstr "Cualquier conexión"
-#: ../../Zotlabs/Module/Settings.php:896
+#: ../../Zotlabs/Module/Settings.php:898
msgid "Anybody on this website"
msgstr "Cualquiera en este sitio web"
-#: ../../Zotlabs/Module/Settings.php:897
+#: ../../Zotlabs/Module/Settings.php:899
msgid "Anybody in this network"
msgstr "Cualquiera en esta red"
-#: ../../Zotlabs/Module/Settings.php:898
+#: ../../Zotlabs/Module/Settings.php:900
msgid "Anybody authenticated"
msgstr "Cualquiera que esté autenticado"
-#: ../../Zotlabs/Module/Settings.php:899
+#: ../../Zotlabs/Module/Settings.php:901
msgid "Anybody on the internet"
msgstr "Cualquiera en internet"
-#: ../../Zotlabs/Module/Settings.php:974
+#: ../../Zotlabs/Module/Settings.php:976
msgid "Publish your default profile in the network directory"
msgstr "Publicar su perfil principal en el directorio de la red"
-#: ../../Zotlabs/Module/Settings.php:979
+#: ../../Zotlabs/Module/Settings.php:981
msgid "Allow us to suggest you as a potential friend to new members?"
msgstr "¿Nos permite sugerirle como amigo potencial a los nuevos miembros?"
-#: ../../Zotlabs/Module/Settings.php:988
+#: ../../Zotlabs/Module/Settings.php:990
msgid "Your channel address is"
msgstr "Su dirección de canal es"
-#: ../../Zotlabs/Module/Settings.php:1030
+#: ../../Zotlabs/Module/Settings.php:1032
msgid "Channel Settings"
msgstr "Ajustes del canal"
-#: ../../Zotlabs/Module/Settings.php:1037
+#: ../../Zotlabs/Module/Settings.php:1039
msgid "Basic Settings"
msgstr "Configuración básica"
-#: ../../Zotlabs/Module/Settings.php:1038 ../../include/identity.php:1279
+#: ../../Zotlabs/Module/Settings.php:1040 ../../include/channel.php:1140
msgid "Full Name:"
msgstr "Nombre completo:"
-#: ../../Zotlabs/Module/Settings.php:1040
+#: ../../Zotlabs/Module/Settings.php:1042
msgid "Your Timezone:"
msgstr "Su huso horario:"
-#: ../../Zotlabs/Module/Settings.php:1041
+#: ../../Zotlabs/Module/Settings.php:1043
msgid "Default Post Location:"
msgstr "Localización geográfica predeterminada para sus publicaciones:"
-#: ../../Zotlabs/Module/Settings.php:1041
+#: ../../Zotlabs/Module/Settings.php:1043
msgid "Geographical location to display on your posts"
msgstr "Localización geográfica que debe mostrarse en sus publicaciones"
-#: ../../Zotlabs/Module/Settings.php:1042
+#: ../../Zotlabs/Module/Settings.php:1044
msgid "Use Browser Location:"
msgstr "Usar la localización geográfica del navegador:"
-#: ../../Zotlabs/Module/Settings.php:1044
+#: ../../Zotlabs/Module/Settings.php:1046
msgid "Adult Content"
msgstr "Contenido solo para adultos"
-#: ../../Zotlabs/Module/Settings.php:1044
+#: ../../Zotlabs/Module/Settings.php:1046
msgid ""
"This channel frequently or regularly publishes adult content. (Please tag "
"any adult material and/or nudity with #NSFW)"
msgstr "Este canal publica contenido solo para adultos con frecuencia o regularmente. (Por favor etiquete cualquier material para adultos con la etiqueta #NSFW)"
-#: ../../Zotlabs/Module/Settings.php:1046
+#: ../../Zotlabs/Module/Settings.php:1048
msgid "Security and Privacy Settings"
msgstr "Configuración de seguridad y privacidad"
-#: ../../Zotlabs/Module/Settings.php:1049
+#: ../../Zotlabs/Module/Settings.php:1051
msgid "Your permissions are already configured. Click to view/adjust"
msgstr "Sus permisos ya están configurados. Pulse para ver/ajustar"
-#: ../../Zotlabs/Module/Settings.php:1051
+#: ../../Zotlabs/Module/Settings.php:1053
msgid "Hide my online presence"
msgstr "Ocultar mi presencia en línea"
-#: ../../Zotlabs/Module/Settings.php:1051
+#: ../../Zotlabs/Module/Settings.php:1053
msgid "Prevents displaying in your profile that you are online"
msgstr "Evitar mostrar en su perfil que está en línea"
-#: ../../Zotlabs/Module/Settings.php:1053
+#: ../../Zotlabs/Module/Settings.php:1055
msgid "Simple Privacy Settings:"
msgstr "Configuración de privacidad sencilla:"
-#: ../../Zotlabs/Module/Settings.php:1054
+#: ../../Zotlabs/Module/Settings.php:1056
msgid ""
"Very Public - <em>extremely permissive (should be used with caution)</em>"
msgstr "Muy Público - <em>extremadamente permisivo (debería ser usado con precaución)</em>"
-#: ../../Zotlabs/Module/Settings.php:1055
+#: ../../Zotlabs/Module/Settings.php:1057
msgid ""
"Typical - <em>default public, privacy when desired (similar to social "
"network permissions but with improved privacy)</em>"
msgstr "Típico - <em>por defecto público, privado cuando se desee (similar a los permisos de una red social pero con privacidad mejorada)</em>"
-#: ../../Zotlabs/Module/Settings.php:1056
+#: ../../Zotlabs/Module/Settings.php:1058
msgid "Private - <em>default private, never open or public</em>"
msgstr "Privado - <em>por defecto, privado, nunca abierto o público</em>"
-#: ../../Zotlabs/Module/Settings.php:1057
+#: ../../Zotlabs/Module/Settings.php:1059
msgid "Blocked - <em>default blocked to/from everybody</em>"
msgstr "Bloqueado - <em>por defecto, bloqueado/a para cualquiera</em>"
-#: ../../Zotlabs/Module/Settings.php:1059
+#: ../../Zotlabs/Module/Settings.php:1061
msgid "Allow others to tag your posts"
msgstr "Permitir a otros etiquetar sus publicaciones"
-#: ../../Zotlabs/Module/Settings.php:1059
+#: ../../Zotlabs/Module/Settings.php:1061
msgid ""
"Often used by the community to retro-actively flag inappropriate content"
msgstr "A menudo usado por la comunidad para marcar contenido inapropiado de forma retroactiva."
-#: ../../Zotlabs/Module/Settings.php:1061
+#: ../../Zotlabs/Module/Settings.php:1063
msgid "Advanced Privacy Settings"
msgstr "Configuración de privacidad avanzada"
-#: ../../Zotlabs/Module/Settings.php:1063
+#: ../../Zotlabs/Module/Settings.php:1065
msgid "Expire other channel content after this many days"
msgstr "Caducar contenido de otros canales después de este número de días"
-#: ../../Zotlabs/Module/Settings.php:1063
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "0 or blank to use the website limit."
+msgstr "0 o en blanco para usar el límite del sitio web."
+
+#: ../../Zotlabs/Module/Settings.php:1065
#, php-format
-msgid ""
-"0 or blank to use the website limit. The website expires after %d days."
-msgstr "0 o en blanco para usar el límite del sitio. El sitio web caduca después de %d días."
+msgid "This website expires after %d days."
+msgstr "Este sitio web caduca después de %d días."
-#: ../../Zotlabs/Module/Settings.php:1064
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "This website does not expire imported content."
+msgstr "Este sitio web no caduca el contenido importado."
+
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "The website limit takes precedence if lower than your limit."
+msgstr "El límite del sitio web tiene prioridad si es inferior a su propio límite."
+
+#: ../../Zotlabs/Module/Settings.php:1066
msgid "Maximum Friend Requests/Day:"
msgstr "Máximo de solicitudes de amistad por día:"
-#: ../../Zotlabs/Module/Settings.php:1064
+#: ../../Zotlabs/Module/Settings.php:1066
msgid "May reduce spam activity"
msgstr "Podría reducir la actividad de spam"
-#: ../../Zotlabs/Module/Settings.php:1065
-msgid "Default Post Permissions"
-msgstr "Permisos de publicación predeterminados"
+#: ../../Zotlabs/Module/Settings.php:1067
+msgid "Default Post and Publish Permissions"
+msgstr "Permisos predeterminados de entradas y publicaciones"
+
+#: ../../Zotlabs/Module/Settings.php:1069
+msgid "Use my default audience setting for the type of object published"
+msgstr "Usar los ajustes de mi audiencia predeterminada para el tipo de publicación"
-#: ../../Zotlabs/Module/Settings.php:1070
+#: ../../Zotlabs/Module/Settings.php:1072
msgid "Channel permissions category:"
msgstr "Categoría de permisos del canal:"
-#: ../../Zotlabs/Module/Settings.php:1076
+#: ../../Zotlabs/Module/Settings.php:1078
msgid "Maximum private messages per day from unknown people:"
msgstr "Máximo de mensajes privados por día de gente desconocida:"
-#: ../../Zotlabs/Module/Settings.php:1076
+#: ../../Zotlabs/Module/Settings.php:1078
msgid "Useful to reduce spamming"
msgstr "Útil para reducir el envío de correo no deseado"
-#: ../../Zotlabs/Module/Settings.php:1079
+#: ../../Zotlabs/Module/Settings.php:1081
msgid "Notification Settings"
msgstr "Configuración de las notificaciones"
-#: ../../Zotlabs/Module/Settings.php:1080
+#: ../../Zotlabs/Module/Settings.php:1082
msgid "By default post a status message when:"
msgstr "Por defecto, enviar un mensaje de estado cuando:"
-#: ../../Zotlabs/Module/Settings.php:1081
+#: ../../Zotlabs/Module/Settings.php:1083
msgid "accepting a friend request"
msgstr "Acepte una solicitud de amistad"
-#: ../../Zotlabs/Module/Settings.php:1082
+#: ../../Zotlabs/Module/Settings.php:1084
msgid "joining a forum/community"
msgstr "al unirse a un foro o comunidad"
-#: ../../Zotlabs/Module/Settings.php:1083
+#: ../../Zotlabs/Module/Settings.php:1085
msgid "making an <em>interesting</em> profile change"
msgstr "Realice un cambio <em>interesante</em> en su perfil"
-#: ../../Zotlabs/Module/Settings.php:1084
+#: ../../Zotlabs/Module/Settings.php:1086
msgid "Send a notification email when:"
msgstr "Enviar una notificación por correo electrónico cuando:"
-#: ../../Zotlabs/Module/Settings.php:1085
+#: ../../Zotlabs/Module/Settings.php:1087
msgid "You receive a connection request"
msgstr "Reciba una solicitud de conexión"
-#: ../../Zotlabs/Module/Settings.php:1086
+#: ../../Zotlabs/Module/Settings.php:1088
msgid "Your connections are confirmed"
msgstr "Sus conexiones hayan sido confirmadas"
-#: ../../Zotlabs/Module/Settings.php:1087
+#: ../../Zotlabs/Module/Settings.php:1089
msgid "Someone writes on your profile wall"
msgstr "Alguien escriba en la página de su perfil (\"muro\")"
-#: ../../Zotlabs/Module/Settings.php:1088
+#: ../../Zotlabs/Module/Settings.php:1090
msgid "Someone writes a followup comment"
msgstr "Alguien escriba un comentario sobre sus publicaciones"
-#: ../../Zotlabs/Module/Settings.php:1089
+#: ../../Zotlabs/Module/Settings.php:1091
msgid "You receive a private message"
msgstr "Reciba un mensaje privado"
-#: ../../Zotlabs/Module/Settings.php:1090
+#: ../../Zotlabs/Module/Settings.php:1092
msgid "You receive a friend suggestion"
msgstr "Reciba una sugerencia de amistad"
-#: ../../Zotlabs/Module/Settings.php:1091
+#: ../../Zotlabs/Module/Settings.php:1093
msgid "You are tagged in a post"
msgstr "Usted sea etiquetado en una publicación"
-#: ../../Zotlabs/Module/Settings.php:1092
+#: ../../Zotlabs/Module/Settings.php:1094
msgid "You are poked/prodded/etc. in a post"
msgstr "Reciba un toque o incitación en una publicación"
-#: ../../Zotlabs/Module/Settings.php:1095
+#: ../../Zotlabs/Module/Settings.php:1097
msgid "Show visual notifications including:"
msgstr "Mostrar notificaciones visuales que incluyan:"
-#: ../../Zotlabs/Module/Settings.php:1097
+#: ../../Zotlabs/Module/Settings.php:1099
msgid "Unseen grid activity"
msgstr "Nueva actividad en la red"
-#: ../../Zotlabs/Module/Settings.php:1098
+#: ../../Zotlabs/Module/Settings.php:1100
msgid "Unseen channel activity"
msgstr "Actividad no vista en el canal"
-#: ../../Zotlabs/Module/Settings.php:1099
+#: ../../Zotlabs/Module/Settings.php:1101
msgid "Unseen private messages"
msgstr "Mensajes privados no leídos"
-#: ../../Zotlabs/Module/Settings.php:1099
-#: ../../Zotlabs/Module/Settings.php:1104
-#: ../../Zotlabs/Module/Settings.php:1105
+#: ../../Zotlabs/Module/Settings.php:1101
#: ../../Zotlabs/Module/Settings.php:1106
+#: ../../Zotlabs/Module/Settings.php:1107
+#: ../../Zotlabs/Module/Settings.php:1108
msgid "Recommended"
msgstr "Recomendado"
-#: ../../Zotlabs/Module/Settings.php:1100
+#: ../../Zotlabs/Module/Settings.php:1102
msgid "Upcoming events"
msgstr "Próximos eventos"
-#: ../../Zotlabs/Module/Settings.php:1101
+#: ../../Zotlabs/Module/Settings.php:1103
msgid "Events today"
msgstr "Eventos de hoy"
-#: ../../Zotlabs/Module/Settings.php:1102
+#: ../../Zotlabs/Module/Settings.php:1104
msgid "Upcoming birthdays"
msgstr "Próximos cumpleaños"
-#: ../../Zotlabs/Module/Settings.php:1102
+#: ../../Zotlabs/Module/Settings.php:1104
msgid "Not available in all themes"
msgstr "No disponible en todos los temas"
-#: ../../Zotlabs/Module/Settings.php:1103
+#: ../../Zotlabs/Module/Settings.php:1105
msgid "System (personal) notifications"
msgstr "Notificaciones del sistema (personales)"
-#: ../../Zotlabs/Module/Settings.php:1104
+#: ../../Zotlabs/Module/Settings.php:1106
msgid "System info messages"
msgstr "Mensajes de información del sistema"
-#: ../../Zotlabs/Module/Settings.php:1105
+#: ../../Zotlabs/Module/Settings.php:1107
msgid "System critical alerts"
msgstr "Alertas críticas del sistema"
-#: ../../Zotlabs/Module/Settings.php:1106
+#: ../../Zotlabs/Module/Settings.php:1108
msgid "New connections"
msgstr "Nuevas conexiones"
-#: ../../Zotlabs/Module/Settings.php:1107
+#: ../../Zotlabs/Module/Settings.php:1109
msgid "System Registrations"
msgstr "Registros del sistema"
-#: ../../Zotlabs/Module/Settings.php:1108
+#: ../../Zotlabs/Module/Settings.php:1110
msgid ""
"Also show new wall posts, private messages and connections under Notices"
msgstr "Mostrar también en Avisos las nuevas publicaciones, los mensajes privados y las conexiones"
-#: ../../Zotlabs/Module/Settings.php:1110
+#: ../../Zotlabs/Module/Settings.php:1112
msgid "Notify me of events this many days in advance"
msgstr "Avisarme de los eventos con algunos días de antelación"
-#: ../../Zotlabs/Module/Settings.php:1110
+#: ../../Zotlabs/Module/Settings.php:1112
msgid "Must be greater than 0"
msgstr "Debe ser mayor que 0"
-#: ../../Zotlabs/Module/Settings.php:1112
+#: ../../Zotlabs/Module/Settings.php:1114
msgid "Advanced Account/Page Type Settings"
msgstr "Ajustes avanzados de la cuenta y de los tipos de página"
-#: ../../Zotlabs/Module/Settings.php:1113
+#: ../../Zotlabs/Module/Settings.php:1115
msgid "Change the behaviour of this account for special situations"
msgstr "Cambiar el comportamiento de esta cuenta en situaciones especiales"
-#: ../../Zotlabs/Module/Settings.php:1116
+#: ../../Zotlabs/Module/Settings.php:1118
msgid ""
"Please enable expert mode (in <a href=\"settings/features\">Settings > "
"Additional features</a>) to adjust!"
msgstr "¡Activar el modo de experto (en <a href=\"settings/features\">Ajustes > Funcionalidades</a>) para realizar cambios!."
-#: ../../Zotlabs/Module/Settings.php:1117
+#: ../../Zotlabs/Module/Settings.php:1119
msgid "Miscellaneous Settings"
msgstr "Ajustes diversos"
-#: ../../Zotlabs/Module/Settings.php:1118
+#: ../../Zotlabs/Module/Settings.php:1120
msgid "Default photo upload folder"
msgstr "Carpeta por defecto de las fotos subidas"
-#: ../../Zotlabs/Module/Settings.php:1118
-#: ../../Zotlabs/Module/Settings.php:1119
+#: ../../Zotlabs/Module/Settings.php:1120
+#: ../../Zotlabs/Module/Settings.php:1121
msgid "%Y - current year, %m - current month"
msgstr "%Y - año en curso, %m - mes actual"
-#: ../../Zotlabs/Module/Settings.php:1119
+#: ../../Zotlabs/Module/Settings.php:1121
msgid "Default file upload folder"
msgstr "Carpeta por defecto de los archivos subidos"
-#: ../../Zotlabs/Module/Settings.php:1121
+#: ../../Zotlabs/Module/Settings.php:1123
msgid "Personal menu to display in your channel pages"
msgstr "Menú personal que debe mostrarse en las páginas de su canal"
-#: ../../Zotlabs/Module/Settings.php:1123
+#: ../../Zotlabs/Module/Settings.php:1125
msgid "Remove this channel."
msgstr "Eliminar este canal."
-#: ../../Zotlabs/Module/Settings.php:1124
+#: ../../Zotlabs/Module/Settings.php:1126
msgid "Firefox Share $Projectname provider"
msgstr "Servicio de compartición de Firefox: proveedor $Projectname"
-#: ../../Zotlabs/Module/Settings.php:1125
+#: ../../Zotlabs/Module/Settings.php:1127
msgid "Start calendar week on monday"
msgstr "Comenzar el calendario semanal por el lunes"
-#: ../../Zotlabs/Module/Setup.php:202
+#: ../../Zotlabs/Module/Setup.php:179
msgid "$Projectname Server - Setup"
msgstr "Servidor $Projectname - Instalación"
-#: ../../Zotlabs/Module/Setup.php:206
+#: ../../Zotlabs/Module/Setup.php:183
msgid "Could not connect to database."
msgstr "No se ha podido conectar a la base de datos."
-#: ../../Zotlabs/Module/Setup.php:210
+#: ../../Zotlabs/Module/Setup.php:187
msgid ""
"Could not connect to specified site URL. Possible SSL certificate or DNS "
"issue."
msgstr "No se puede conectar con la dirección del sitio indicada. Podría tratarse de un problema de SSL o DNS."
-#: ../../Zotlabs/Module/Setup.php:217
+#: ../../Zotlabs/Module/Setup.php:194
msgid "Could not create table."
msgstr "No se puede crear la tabla."
-#: ../../Zotlabs/Module/Setup.php:222
+#: ../../Zotlabs/Module/Setup.php:199
msgid "Your site database has been installed."
msgstr "La base de datos del sitio ha sido instalada."
-#: ../../Zotlabs/Module/Setup.php:226
+#: ../../Zotlabs/Module/Setup.php:203
msgid ""
"You may need to import the file \"install/schema_xxx.sql\" manually using a "
"database client."
msgstr "Podría tener que importar manualmente el fichero \"install/schema_xxx.sql\" usando un cliente de base de datos."
-#: ../../Zotlabs/Module/Setup.php:227 ../../Zotlabs/Module/Setup.php:289
-#: ../../Zotlabs/Module/Setup.php:739
+#: ../../Zotlabs/Module/Setup.php:204 ../../Zotlabs/Module/Setup.php:266
+#: ../../Zotlabs/Module/Setup.php:721
msgid "Please see the file \"install/INSTALL.txt\"."
msgstr "Por favor, lea el fichero \"install/INSTALL.txt\"."
-#: ../../Zotlabs/Module/Setup.php:286
+#: ../../Zotlabs/Module/Setup.php:263
msgid "System check"
msgstr "Verificación del sistema"
-#: ../../Zotlabs/Module/Setup.php:291
+#: ../../Zotlabs/Module/Setup.php:268
msgid "Check again"
msgstr "Verificar de nuevo"
-#: ../../Zotlabs/Module/Setup.php:313
+#: ../../Zotlabs/Module/Setup.php:290
msgid "Database connection"
msgstr "Conexión a la base de datos"
-#: ../../Zotlabs/Module/Setup.php:314
+#: ../../Zotlabs/Module/Setup.php:291
msgid ""
"In order to install $Projectname we need to know how to connect to your "
"database."
msgstr "Para instalar $Projectname es necesario saber cómo conectar con su base de datos."
-#: ../../Zotlabs/Module/Setup.php:315
+#: ../../Zotlabs/Module/Setup.php:292
msgid ""
"Please contact your hosting provider or site administrator if you have "
"questions about these settings."
msgstr "Por favor, contacte con el proveedor de servicios o el administrador del sitio si tiene dudas sobre estos ajustes."
-#: ../../Zotlabs/Module/Setup.php:316
+#: ../../Zotlabs/Module/Setup.php:293
msgid ""
"The database you specify below should already exist. If it does not, please "
"create it before continuing."
msgstr "La base de datos que especifique a continuación debe existir ya. Si no es así, por favor, créela antes de seguir."
-#: ../../Zotlabs/Module/Setup.php:320
+#: ../../Zotlabs/Module/Setup.php:297
msgid "Database Server Name"
msgstr "Nombre del servidor de base de datos"
-#: ../../Zotlabs/Module/Setup.php:320
+#: ../../Zotlabs/Module/Setup.php:297
msgid "Default is 127.0.0.1"
msgstr "De forma predeterminada es 127.0.0.1"
-#: ../../Zotlabs/Module/Setup.php:321
+#: ../../Zotlabs/Module/Setup.php:298
msgid "Database Port"
msgstr "Puerto de la base de datos"
-#: ../../Zotlabs/Module/Setup.php:321
+#: ../../Zotlabs/Module/Setup.php:298
msgid "Communication port number - use 0 for default"
msgstr "Número del puerto de comunicaciones - use 0 como valor por defecto"
-#: ../../Zotlabs/Module/Setup.php:322
+#: ../../Zotlabs/Module/Setup.php:299
msgid "Database Login Name"
msgstr "Usuario de la base de datos"
-#: ../../Zotlabs/Module/Setup.php:323
+#: ../../Zotlabs/Module/Setup.php:300
msgid "Database Login Password"
msgstr "Contraseña de acceso a la base de datos"
-#: ../../Zotlabs/Module/Setup.php:324
+#: ../../Zotlabs/Module/Setup.php:301
msgid "Database Name"
msgstr "Nombre de la base de datos"
-#: ../../Zotlabs/Module/Setup.php:325
+#: ../../Zotlabs/Module/Setup.php:302
msgid "Database Type"
msgstr "Tipo de base de datos"
-#: ../../Zotlabs/Module/Setup.php:327 ../../Zotlabs/Module/Setup.php:367
+#: ../../Zotlabs/Module/Setup.php:304 ../../Zotlabs/Module/Setup.php:344
msgid "Site administrator email address"
msgstr "Dirección de correo electrónico del administrador del sitio"
-#: ../../Zotlabs/Module/Setup.php:327 ../../Zotlabs/Module/Setup.php:367
+#: ../../Zotlabs/Module/Setup.php:304 ../../Zotlabs/Module/Setup.php:344
msgid ""
"Your account email address must match this in order to use the web admin "
"panel."
msgstr "Su cuenta deberá usar la misma dirección de correo electrónico para poder utilizar el panel de administración web."
-#: ../../Zotlabs/Module/Setup.php:328 ../../Zotlabs/Module/Setup.php:369
+#: ../../Zotlabs/Module/Setup.php:305 ../../Zotlabs/Module/Setup.php:346
msgid "Website URL"
msgstr "Dirección del sitio web"
-#: ../../Zotlabs/Module/Setup.php:328 ../../Zotlabs/Module/Setup.php:369
+#: ../../Zotlabs/Module/Setup.php:305 ../../Zotlabs/Module/Setup.php:346
msgid "Please use SSL (https) URL if available."
msgstr "Por favor, use SSL (https) si está disponible."
-#: ../../Zotlabs/Module/Setup.php:329 ../../Zotlabs/Module/Setup.php:372
+#: ../../Zotlabs/Module/Setup.php:306 ../../Zotlabs/Module/Setup.php:349
msgid "Please select a default timezone for your website"
msgstr "Por favor, selecciones el huso horario por defecto de su sitio web"
-#: ../../Zotlabs/Module/Setup.php:356
+#: ../../Zotlabs/Module/Setup.php:333
msgid "Site settings"
msgstr "Ajustes del sitio"
-#: ../../Zotlabs/Module/Setup.php:370
+#: ../../Zotlabs/Module/Setup.php:347
msgid "Enable $Projectname <strong>advanced</strong> features?"
msgstr "¿Habilitar las funcionalidades <strong>avanzadas</strong> de $Projectname ?"
-#: ../../Zotlabs/Module/Setup.php:370
+#: ../../Zotlabs/Module/Setup.php:347
msgid ""
"Some advanced features, while useful - may be best suited for technically "
"proficient audiences"
msgstr "Algunas funcionalidades avanzadas, si bien son útiles, pueden ser más adecuadas para un público técnicamente competente"
-#: ../../Zotlabs/Module/Setup.php:422
+#: ../../Zotlabs/Module/Setup.php:388
+msgid "PHP version 5.5 or greater is required."
+msgstr "Se requiere la versión 5.5, o superior, de PHP."
+
+#: ../../Zotlabs/Module/Setup.php:389
+msgid "PHP version"
+msgstr "Versión de PHP"
+
+#: ../../Zotlabs/Module/Setup.php:404
msgid "Could not find a command line version of PHP in the web server PATH."
msgstr "No se puede encontrar una versión en línea de comandos de PHP en la ruta del servidor web."
-#: ../../Zotlabs/Module/Setup.php:423
+#: ../../Zotlabs/Module/Setup.php:405
msgid ""
"If you don't have a command line version of PHP installed on server, you "
"will not be able to run background polling via cron."
msgstr "Si no tiene instalada la versión de línea de comandos de PHP en su servidor, no podrá realizar envíos en segundo plano mediante cron."
-#: ../../Zotlabs/Module/Setup.php:427
+#: ../../Zotlabs/Module/Setup.php:409
msgid "PHP executable path"
msgstr "Ruta del ejecutable PHP"
-#: ../../Zotlabs/Module/Setup.php:427
+#: ../../Zotlabs/Module/Setup.php:409
msgid ""
"Enter full path to php executable. You can leave this blank to continue the "
"installation."
msgstr "Introducir la ruta completa del ejecutable PHP. Puede dejar la línea en blanco para continuar la instalación."
-#: ../../Zotlabs/Module/Setup.php:432
+#: ../../Zotlabs/Module/Setup.php:414
msgid "Command line PHP"
msgstr "PHP en línea de comandos"
-#: ../../Zotlabs/Module/Setup.php:441
+#: ../../Zotlabs/Module/Setup.php:423
msgid ""
"The command line version of PHP on your system does not have "
"\"register_argc_argv\" enabled."
msgstr "La línea de comandos PHP de su sistema no tiene activado \"register_argc_argv\"."
-#: ../../Zotlabs/Module/Setup.php:442
+#: ../../Zotlabs/Module/Setup.php:424
msgid "This is required for message delivery to work."
msgstr "Esto es necesario para que funcione la transmisión de mensajes."
-#: ../../Zotlabs/Module/Setup.php:445
+#: ../../Zotlabs/Module/Setup.php:427
msgid "PHP register_argc_argv"
msgstr "PHP register_argc_argv"
-#: ../../Zotlabs/Module/Setup.php:463
+#: ../../Zotlabs/Module/Setup.php:445
#, php-format
msgid ""
"Your max allowed total upload size is set to %s. Maximum size of one file to"
" upload is set to %s. You are allowed to upload up to %d files at once."
msgstr "La carga máxima que se le permite subir está establecida en %s. El tamaño máximo de un fichero está establecido en %s. Está permitido subir hasta un máximo de %d ficheros de una sola vez."
-#: ../../Zotlabs/Module/Setup.php:468
+#: ../../Zotlabs/Module/Setup.php:450
msgid "You can adjust these settings in the servers php.ini."
msgstr "Puede ajustar estos valores en el fichero php.ini de su servidor."
-#: ../../Zotlabs/Module/Setup.php:470
+#: ../../Zotlabs/Module/Setup.php:452
msgid "PHP upload limits"
msgstr "Límites PHP de subida"
-#: ../../Zotlabs/Module/Setup.php:493
+#: ../../Zotlabs/Module/Setup.php:475
msgid ""
"Error: the \"openssl_pkey_new\" function on this system is not able to "
"generate encryption keys"
msgstr "Error: La función \"openssl_pkey_new\" en este sistema no es capaz de general claves de cifrado."
-#: ../../Zotlabs/Module/Setup.php:494
+#: ../../Zotlabs/Module/Setup.php:476
msgid ""
"If running under Windows, please see "
"\"http://www.php.net/manual/en/openssl.installation.php\"."
msgstr "Si está en un servidor Windows, por favor, lea \"http://www.php.net/manual/en/openssl.installation.php\"."
-#: ../../Zotlabs/Module/Setup.php:497
+#: ../../Zotlabs/Module/Setup.php:479
msgid "Generate encryption keys"
msgstr "Generar claves de cifrado"
-#: ../../Zotlabs/Module/Setup.php:509
+#: ../../Zotlabs/Module/Setup.php:491
msgid "libCurl PHP module"
msgstr "módulo libCurl PHP"
-#: ../../Zotlabs/Module/Setup.php:510
+#: ../../Zotlabs/Module/Setup.php:492
msgid "GD graphics PHP module"
msgstr "módulo PHP GD graphics"
-#: ../../Zotlabs/Module/Setup.php:511
+#: ../../Zotlabs/Module/Setup.php:493
msgid "OpenSSL PHP module"
msgstr "módulo PHP OpenSSL"
-#: ../../Zotlabs/Module/Setup.php:512
+#: ../../Zotlabs/Module/Setup.php:494
msgid "mysqli or postgres PHP module"
msgstr "módulo PHP mysqli o postgres"
-#: ../../Zotlabs/Module/Setup.php:513
+#: ../../Zotlabs/Module/Setup.php:495
msgid "mb_string PHP module"
msgstr "módulo PHP mb_string"
-#: ../../Zotlabs/Module/Setup.php:514
+#: ../../Zotlabs/Module/Setup.php:496
msgid "mcrypt PHP module"
msgstr "módulo PHP mcrypt "
-#: ../../Zotlabs/Module/Setup.php:515
+#: ../../Zotlabs/Module/Setup.php:497
msgid "xml PHP module"
msgstr "módulo PHP xml"
-#: ../../Zotlabs/Module/Setup.php:519 ../../Zotlabs/Module/Setup.php:521
+#: ../../Zotlabs/Module/Setup.php:501 ../../Zotlabs/Module/Setup.php:503
msgid "Apache mod_rewrite module"
msgstr "módulo Apache mod_rewrite "
-#: ../../Zotlabs/Module/Setup.php:519
+#: ../../Zotlabs/Module/Setup.php:501
msgid ""
"Error: Apache webserver mod-rewrite module is required but not installed."
msgstr "Error: se necesita el módulo del servidor web Apache mod-rewrite pero no está instalado."
-#: ../../Zotlabs/Module/Setup.php:525 ../../Zotlabs/Module/Setup.php:528
+#: ../../Zotlabs/Module/Setup.php:507 ../../Zotlabs/Module/Setup.php:510
msgid "proc_open"
msgstr "proc_open"
-#: ../../Zotlabs/Module/Setup.php:525
+#: ../../Zotlabs/Module/Setup.php:507
msgid ""
"Error: proc_open is required but is either not installed or has been "
"disabled in php.ini"
msgstr "Error: se necesita proc_open pero o no está instalado o ha sido desactivado en el fichero php.ini"
-#: ../../Zotlabs/Module/Setup.php:533
+#: ../../Zotlabs/Module/Setup.php:515
msgid "Error: libCURL PHP module required but not installed."
msgstr "Error: se necesita el módulo PHP libCURL pero no está instalado."
-#: ../../Zotlabs/Module/Setup.php:537
+#: ../../Zotlabs/Module/Setup.php:519
msgid ""
"Error: GD graphics PHP module with JPEG support required but not installed."
msgstr "Error: el módulo PHP GD graphics es necesario, pero no está instalado."
-#: ../../Zotlabs/Module/Setup.php:541
+#: ../../Zotlabs/Module/Setup.php:523
msgid "Error: openssl PHP module required but not installed."
msgstr "Error: el módulo PHP openssl es necesario, pero no está instalado."
-#: ../../Zotlabs/Module/Setup.php:545
+#: ../../Zotlabs/Module/Setup.php:527
msgid ""
"Error: mysqli or postgres PHP module required but neither are installed."
msgstr "Error: el módulo PHP mysqli o postgres es necesario pero ninguno de los dos está instalado."
-#: ../../Zotlabs/Module/Setup.php:549
+#: ../../Zotlabs/Module/Setup.php:531
msgid "Error: mb_string PHP module required but not installed."
msgstr "Error: el módulo PHP mb_string es necesario, pero no está instalado."
-#: ../../Zotlabs/Module/Setup.php:553
+#: ../../Zotlabs/Module/Setup.php:535
msgid "Error: mcrypt PHP module required but not installed."
msgstr "Error: el módulo PHP mcrypt es necesario, pero no está instalado."
-#: ../../Zotlabs/Module/Setup.php:557
+#: ../../Zotlabs/Module/Setup.php:539
msgid "Error: xml PHP module required for DAV but not installed."
msgstr "Error: el módulo PHP xml es necesario para DAV, pero no está instalado."
-#: ../../Zotlabs/Module/Setup.php:575
+#: ../../Zotlabs/Module/Setup.php:557
msgid ""
"The web installer needs to be able to create a file called \".htconfig.php\""
" in the top folder of your web server and it is unable to do so."
msgstr "El instalador web no ha podido crear un fichero llamado “.htconfig.php†en la carpeta base de su servidor."
-#: ../../Zotlabs/Module/Setup.php:576
+#: ../../Zotlabs/Module/Setup.php:558
msgid ""
"This is most often a permission setting, as the web server may not be able "
"to write files in your folder - even if you can."
msgstr "Esto está generalmente ligado a un problema de permisos, a causa del cual el servidor web tiene prohibido modificar ficheros en su carpeta - incluso si usted mismo tiene esos permisos."
-#: ../../Zotlabs/Module/Setup.php:577
+#: ../../Zotlabs/Module/Setup.php:559
msgid ""
"At the end of this procedure, we will give you a text to save in a file "
"named .htconfig.php in your Red top folder."
msgstr "Al término de este procedimiento, podemos crear un fichero de texto para guardar con el nombre .htconfig.php en el directorio raíz de su instalación de Hubzilla."
-#: ../../Zotlabs/Module/Setup.php:578
+#: ../../Zotlabs/Module/Setup.php:560
msgid ""
"You can alternatively skip this procedure and perform a manual installation."
" Please see the file \"install/INSTALL.txt\" for instructions."
msgstr "Como alternativa, puede dejar este procedimiento e intentar realizar una instalación manual. Lea, por favor, el fichero\"install/INSTALL.txt\" para las instrucciones."
-#: ../../Zotlabs/Module/Setup.php:581
+#: ../../Zotlabs/Module/Setup.php:563
msgid ".htconfig.php is writable"
msgstr ".htconfig.php tiene permisos de escritura"
-#: ../../Zotlabs/Module/Setup.php:595
+#: ../../Zotlabs/Module/Setup.php:577
msgid ""
"Red uses the Smarty3 template engine to render its web views. Smarty3 "
"compiles templates to PHP to speed up rendering."
msgstr "Hubzilla hace uso del motor de plantillas Smarty3 para diseñar sus plantillas gráficas. Smarty3 es más rápido porque compila las plantillas de páginas directamente en PHP."
-#: ../../Zotlabs/Module/Setup.php:596
+#: ../../Zotlabs/Module/Setup.php:578
#, php-format
msgid ""
"In order to store these compiled templates, the web server needs to have "
-"write access to the directory %s under the Red top level folder."
-msgstr "Para poder guardar las plantillas compiladas, el servidor web necesita permisos para acceder al subdirectorio %s en el directorio de instalación de Hubzilla."
+"write access to the directory %s under the top level web folder."
+msgstr "Para poder guardar las plantillas compiladas, el servidor web necesita permisos para acceder al directorio %s en la carpeta web principal."
-#: ../../Zotlabs/Module/Setup.php:597 ../../Zotlabs/Module/Setup.php:618
+#: ../../Zotlabs/Module/Setup.php:579 ../../Zotlabs/Module/Setup.php:600
msgid ""
"Please ensure that the user that your web server runs as (e.g. www-data) has"
" write access to this folder."
msgstr "Por favor, asegúrese de que el servidor web está siendo ejecutado por un usuario que tenga permisos de escritura sobre esta carpeta (por ejemplo, www-data)."
-#: ../../Zotlabs/Module/Setup.php:598
+#: ../../Zotlabs/Module/Setup.php:580
#, php-format
msgid ""
"Note: as a security measure, you should give the web server write access to "
"%s only--not the template files (.tpl) that it contains."
msgstr "Nota: como medida de seguridad, debe dar al servidor web permisos de escritura solo sobre %s - no sobre el fichero de plantilla (.tpl) que contiene."
-#: ../../Zotlabs/Module/Setup.php:601
+#: ../../Zotlabs/Module/Setup.php:583
#, php-format
msgid "%s is writable"
msgstr "%s tiene permisos de escritura"
-#: ../../Zotlabs/Module/Setup.php:617
+#: ../../Zotlabs/Module/Setup.php:599
msgid ""
"Red uses the store directory to save uploaded files. The web server needs to"
" have write access to the store directory under the Red top level folder"
msgstr "Hubzilla guarda los ficheros descargados en la carpeta \"store\". El servidor web necesita tener permisos de escritura sobre esa carpeta, en el directorio de instalación."
-#: ../../Zotlabs/Module/Setup.php:621
+#: ../../Zotlabs/Module/Setup.php:603
msgid "store is writable"
msgstr "\"store\" tiene permisos de escritura"
-#: ../../Zotlabs/Module/Setup.php:654
+#: ../../Zotlabs/Module/Setup.php:636
msgid ""
"SSL certificate cannot be validated. Fix certificate or disable https access"
" to this site."
msgstr "El certificado SSL no ha podido ser validado. Corrija este problema o desactive el acceso https a este sitio."
-#: ../../Zotlabs/Module/Setup.php:655
+#: ../../Zotlabs/Module/Setup.php:637
msgid ""
"If you have https access to your website or allow connections to TCP port "
"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
"NOT use self-signed certificates!"
msgstr "Si su servidor soporta conexiones cifradas SSL o si permite conexiones al puerto TCP 443 (el puerto usado por el protocolo https), debe utilizar un certificado válido. No debe usar un certificado firmado por usted mismo."
-#: ../../Zotlabs/Module/Setup.php:656
+#: ../../Zotlabs/Module/Setup.php:638
msgid ""
"This restriction is incorporated because public posts from you may for "
"example contain references to images on your own hub."
msgstr "Se ha incorporado esta restricción para evitar que sus publicaciones públicas hagan referencia a imágenes en su propio servidor."
-#: ../../Zotlabs/Module/Setup.php:657
+#: ../../Zotlabs/Module/Setup.php:639
msgid ""
"If your certificate is not recognized, members of other sites (who may "
"themselves have valid certificates) will get a warning message on their own "
"site complaining about security issues."
msgstr "Si su certificado no ha sido reconocido, los miembros de otros sitios (con certificados válidos) recibirán mensajes de aviso en sus propios sitios web."
-#: ../../Zotlabs/Module/Setup.php:658
+#: ../../Zotlabs/Module/Setup.php:640
msgid ""
"This can cause usability issues elsewhere (not just on your own site) so we "
"must insist on this requirement."
msgstr "Por razones de compatibilidad (sobre el conjunto de la red, no solo sobre su propio sitio), debemos insistir en estos requisitos."
-#: ../../Zotlabs/Module/Setup.php:659
+#: ../../Zotlabs/Module/Setup.php:641
msgid ""
"Providers are available that issue free certificates which are browser-"
"valid."
msgstr "Existen varias Autoridades de Certificación que le pueden proporcionar certificados válidos."
-#: ../../Zotlabs/Module/Setup.php:661
+#: ../../Zotlabs/Module/Setup.php:643
msgid "SSL certificate validation"
msgstr "validación del certificado SSL"
-#: ../../Zotlabs/Module/Setup.php:667
+#: ../../Zotlabs/Module/Setup.php:649
msgid ""
"Url rewrite in .htaccess is not working. Check your server "
"configuration.Test: "
msgstr "No se pueden reescribir las direcciones web en .htaccess. Compruebe la configuración de su servidor:"
-#: ../../Zotlabs/Module/Setup.php:670
+#: ../../Zotlabs/Module/Setup.php:652
msgid "Url rewrite is working"
msgstr "La reescritura de las direcciones funciona correctamente"
-#: ../../Zotlabs/Module/Setup.php:679
+#: ../../Zotlabs/Module/Setup.php:661
msgid ""
"The database configuration file \".htconfig.php\" could not be written. "
"Please use the enclosed text to create a configuration file in your web "
"server root."
msgstr "El fichero de configuración de la base de datos .htconfig.php no se ha podido modificar. Por favor, copie el texto generado en un fichero con ese nombre en el directorio raíz de su servidor."
-#: ../../Zotlabs/Module/Setup.php:703
+#: ../../Zotlabs/Module/Setup.php:685
msgid "Errors encountered creating database tables."
msgstr "Se han encontrado errores al crear las tablas de la base de datos."
-#: ../../Zotlabs/Module/Setup.php:737
+#: ../../Zotlabs/Module/Setup.php:719
msgid "<h1>What next</h1>"
msgstr "<h1>Siguiente paso</h1>"
-#: ../../Zotlabs/Module/Setup.php:738
+#: ../../Zotlabs/Module/Setup.php:720
msgid ""
"IMPORTANT: You will need to [manually] setup a scheduled task for the "
"poller."
@@ -5982,11 +5940,11 @@ msgstr "Versión %s"
#: ../../Zotlabs/Module/Siteinfo.php:40
msgid "Installed plugins/addons/apps:"
-msgstr "Extensiones, complementos o aplicaciones instaladas:"
+msgstr "Extensiones (plugins), complementos o aplicaciones (apps) instaladas:"
#: ../../Zotlabs/Module/Siteinfo.php:53
msgid "No installed plugins/addons/apps"
-msgstr "No hay instalada ninguna extensión, complemento o aplicación"
+msgstr "No hay instalada ninguna extensión (plugin), complemento o aplicación (app)"
#: ../../Zotlabs/Module/Siteinfo.php:66
msgid ""
@@ -6034,70 +5992,76 @@ msgstr "Sugerencias, elogios, etc - por favor, un correo electrónico a \"redmat
msgid "Site Administrators"
msgstr "Administradores del sitio"
-#: ../../Zotlabs/Module/Sources.php:36
+#: ../../Zotlabs/Module/Sources.php:37
msgid "Failed to create source. No channel selected."
msgstr "Imposible crear el origen de los contenidos. Ningún canal ha sido seleccionado."
-#: ../../Zotlabs/Module/Sources.php:49
+#: ../../Zotlabs/Module/Sources.php:51
msgid "Source created."
msgstr "Fuente creada."
-#: ../../Zotlabs/Module/Sources.php:61
+#: ../../Zotlabs/Module/Sources.php:64
msgid "Source updated."
msgstr "Fuente actualizada."
-#: ../../Zotlabs/Module/Sources.php:86
+#: ../../Zotlabs/Module/Sources.php:90
msgid "*"
msgstr "*"
-#: ../../Zotlabs/Module/Sources.php:92 ../../include/features.php:71
-#: ../../include/widgets.php:581
+#: ../../Zotlabs/Module/Sources.php:96 ../../include/widgets.php:630
+#: ../../include/features.php:71
msgid "Channel Sources"
msgstr "Orígenes de los contenidos del canal"
-#: ../../Zotlabs/Module/Sources.php:93
+#: ../../Zotlabs/Module/Sources.php:97
msgid "Manage remote sources of content for your channel."
msgstr "Gestionar contenido de origen remoto para su canal."
-#: ../../Zotlabs/Module/Sources.php:94 ../../Zotlabs/Module/Sources.php:104
+#: ../../Zotlabs/Module/Sources.php:98 ../../Zotlabs/Module/Sources.php:108
msgid "New Source"
msgstr "Nueva fuente"
-#: ../../Zotlabs/Module/Sources.php:105 ../../Zotlabs/Module/Sources.php:137
+#: ../../Zotlabs/Module/Sources.php:109 ../../Zotlabs/Module/Sources.php:143
msgid ""
"Import all or selected content from the following channel into this channel "
"and distribute it according to your channel settings."
msgstr "Importar todo el contenido o una selección de los siguientes canales en este canal y distribuirlo de acuerdo con sus ajustes."
-#: ../../Zotlabs/Module/Sources.php:106 ../../Zotlabs/Module/Sources.php:138
+#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
msgid "Only import content with these words (one per line)"
msgstr "Importar solo contenido que contenga estas palabras (una por línea)"
-#: ../../Zotlabs/Module/Sources.php:106 ../../Zotlabs/Module/Sources.php:138
+#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
msgid "Leave blank to import all public content"
msgstr "Dejar en blanco para importar todo el contenido público"
-#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Module/Sources.php:141
+#: ../../Zotlabs/Module/Sources.php:111 ../../Zotlabs/Module/Sources.php:148
msgid "Channel Name"
msgstr "Nombre del canal"
-#: ../../Zotlabs/Module/Sources.php:127 ../../Zotlabs/Module/Sources.php:154
+#: ../../Zotlabs/Module/Sources.php:112 ../../Zotlabs/Module/Sources.php:147
+msgid ""
+"Add the following categories to posts imported from this source (comma "
+"separated)"
+msgstr "Añadir las categorías siguientes a las entradas importadas de esta fuente (separadas por comas)"
+
+#: ../../Zotlabs/Module/Sources.php:133 ../../Zotlabs/Module/Sources.php:161
msgid "Source not found."
msgstr "Fuente no encontrada"
-#: ../../Zotlabs/Module/Sources.php:134
+#: ../../Zotlabs/Module/Sources.php:140
msgid "Edit Source"
msgstr "Editar fuente"
-#: ../../Zotlabs/Module/Sources.php:135
+#: ../../Zotlabs/Module/Sources.php:141
msgid "Delete Source"
msgstr "Eliminar fuente"
-#: ../../Zotlabs/Module/Sources.php:162
+#: ../../Zotlabs/Module/Sources.php:169
msgid "Source removed"
msgstr "Fuente eliminada"
-#: ../../Zotlabs/Module/Sources.php:164
+#: ../../Zotlabs/Module/Sources.php:171
msgid "Unable to remove source."
msgstr "Imposible eliminar la fuente."
@@ -6121,7 +6085,7 @@ msgstr "No hay sugerencias disponibles. Si es un sitio nuevo, espere 24 horas y
msgid "Ignore/Hide"
msgstr "Ignorar/Ocultar"
-#: ../../Zotlabs/Module/Tagger.php:55 ../../include/bbcode.php:257
+#: ../../Zotlabs/Module/Tagger.php:55 ../../include/bbcode.php:256
msgid "post"
msgstr "la entrada"
@@ -6262,16 +6226,16 @@ msgid ""
" please import or restore these in date order (oldest first)."
msgstr "Estos ficheros pueden ser importados o restaurados visitando <a href=\"%1$s\">%2$s</a> o cualquier sitio que contenga su canal. Para obtener los mejores resultados, por favor, importar o restaurar estos ficheros en orden de fecha (la más antigua primero)."
-#: ../../Zotlabs/Module/Viewconnections.php:63
+#: ../../Zotlabs/Module/Viewconnections.php:62
msgid "No connections."
msgstr "Sin conexiones."
-#: ../../Zotlabs/Module/Viewconnections.php:76
+#: ../../Zotlabs/Module/Viewconnections.php:75
#, php-format
msgid "Visit %s's profile [%s]"
msgstr "Visitar el perfil de %s [%s]"
-#: ../../Zotlabs/Module/Viewconnections.php:105
+#: ../../Zotlabs/Module/Viewconnections.php:104
msgid "View Connections"
msgstr "Ver conexiones"
@@ -6279,20 +6243,20 @@ msgstr "Ver conexiones"
msgid "Source of Item"
msgstr "Origen del elemento"
-#: ../../Zotlabs/Module/Webpages.php:186 ../../include/apps.php:136
-#: ../../include/conversation.php:1704 ../../include/nav.php:106
+#: ../../Zotlabs/Module/Webpages.php:184 ../../Zotlabs/Lib/Apps.php:217
+#: ../../include/nav.php:106 ../../include/conversation.php:1685
msgid "Webpages"
msgstr "Páginas web"
-#: ../../Zotlabs/Module/Webpages.php:197 ../../include/page_widgets.php:41
+#: ../../Zotlabs/Module/Webpages.php:195 ../../include/page_widgets.php:41
msgid "Actions"
msgstr "Acciones"
-#: ../../Zotlabs/Module/Webpages.php:198 ../../include/page_widgets.php:42
+#: ../../Zotlabs/Module/Webpages.php:196 ../../include/page_widgets.php:42
msgid "Page Link"
msgstr "Vínculo de la página"
-#: ../../Zotlabs/Module/Webpages.php:199
+#: ../../Zotlabs/Module/Webpages.php:197
msgid "Page Title"
msgstr "Título de página"
@@ -6304,1004 +6268,936 @@ msgstr "Búsqueda de canales"
msgid "Lookup xchan beginning with (or webbie): "
msgstr "Buscar un canal (o un \"webbie\") que comience por:"
-#: ../../include/Import/import_diaspora.php:17
-msgid "No username found in import file."
-msgstr "No se ha encontrado el nombre de usuario en el fichero importado."
+#: ../../Zotlabs/Lib/Apps.php:204
+msgid "Site Admin"
+msgstr "Administrador del sitio"
-#: ../../include/Import/import_diaspora.php:42 ../../include/import.php:44
-msgid "Unable to create a unique channel address. Import failed."
-msgstr "No se ha podido crear una dirección de canal única. Ha fallado la importación."
+#: ../../Zotlabs/Lib/Apps.php:205
+msgid "Bug Report"
+msgstr "Informe de errores"
-#: ../../include/dba/dba_driver.php:141
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "No se ha podido localizar información de DNS para el servidor de base de datos “%sâ€"
+#: ../../Zotlabs/Lib/Apps.php:206
+msgid "View Bookmarks"
+msgstr "Ver los marcadores"
-#: ../../include/identity.php:32
-msgid "Unable to obtain identity information from database"
-msgstr "No ha sido posible obtener información sobre la identidad desde la base de datos"
+#: ../../Zotlabs/Lib/Apps.php:207
+msgid "My Chatrooms"
+msgstr "Mis salas de chat"
-#: ../../include/identity.php:66
-msgid "Empty name"
-msgstr "Nombre vacío"
+#: ../../Zotlabs/Lib/Apps.php:209
+msgid "Firefox Share"
+msgstr "Servicio de compartición de Firefox"
-#: ../../include/identity.php:69
-msgid "Name too long"
-msgstr "Nombre demasiado largo"
+#: ../../Zotlabs/Lib/Apps.php:210
+msgid "Remote Diagnostics"
+msgstr "Diagnóstico remoto"
-#: ../../include/identity.php:180
-msgid "No account identifier"
-msgstr "Ningún identificador de la cuenta"
+#: ../../Zotlabs/Lib/Apps.php:211 ../../include/features.php:89
+msgid "Suggest Channels"
+msgstr "Sugerir canales"
-#: ../../include/identity.php:192
-msgid "Nickname is required."
-msgstr "Se requiere un sobrenombre (alias)."
+#: ../../Zotlabs/Lib/Apps.php:212 ../../include/nav.php:110
+#: ../../boot.php:1703
+msgid "Login"
+msgstr "Iniciar sesión"
-#: ../../include/identity.php:206
-msgid "Reserved nickname. Please choose another."
-msgstr "Sobrenombre en uso. Por favor, elija otro."
+#: ../../Zotlabs/Lib/Apps.php:214 ../../include/nav.php:179
+msgid "Grid"
+msgstr "Red"
-#: ../../include/identity.php:211
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio."
+#: ../../Zotlabs/Lib/Apps.php:218 ../../include/nav.php:182
+msgid "Channel Home"
+msgstr "Mi canal"
-#: ../../include/identity.php:287
-msgid "Unable to retrieve created identity"
-msgstr "No ha sido posible recuperar la identidad creada"
+#: ../../Zotlabs/Lib/Apps.php:221 ../../include/nav.php:201
+#: ../../include/conversation.php:1649 ../../include/conversation.php:1652
+msgid "Events"
+msgstr "Eventos"
-#: ../../include/identity.php:345
-msgid "Default Profile"
-msgstr "Perfil principal"
+#: ../../Zotlabs/Lib/Apps.php:222 ../../include/nav.php:167
+msgid "Directory"
+msgstr "Directorio"
-#: ../../include/identity.php:784
-msgid "Requested channel is not available."
-msgstr "El canal solicitado no está disponible."
+#: ../../Zotlabs/Lib/Apps.php:224 ../../include/nav.php:193
+msgid "Mail"
+msgstr "Correo"
-#: ../../include/identity.php:931
-msgid "Create New Profile"
-msgstr "Crear un nuevo perfil"
+#: ../../Zotlabs/Lib/Apps.php:227 ../../include/nav.php:96
+msgid "Chat"
+msgstr "Chat"
-#: ../../include/identity.php:934 ../../include/nav.php:90
-msgid "Edit Profile"
-msgstr "Editar el perfil"
+#: ../../Zotlabs/Lib/Apps.php:229
+msgid "Probe"
+msgstr "Probar"
-#: ../../include/identity.php:951
-msgid "Visible to everybody"
-msgstr "Visible para todos"
+#: ../../Zotlabs/Lib/Apps.php:230
+msgid "Suggest"
+msgstr "Sugerir"
-#: ../../include/identity.php:1026 ../../include/identity.php:1281
-msgid "Gender:"
-msgstr "Género:"
+#: ../../Zotlabs/Lib/Apps.php:231
+msgid "Random Channel"
+msgstr "Canal aleatorio"
-#: ../../include/identity.php:1027 ../../include/identity.php:1325
-msgid "Status:"
-msgstr "Estado:"
+#: ../../Zotlabs/Lib/Apps.php:232
+msgid "Invite"
+msgstr "Invitar"
-#: ../../include/identity.php:1028 ../../include/identity.php:1336
-msgid "Homepage:"
-msgstr "Página personal:"
+#: ../../Zotlabs/Lib/Apps.php:233 ../../include/widgets.php:1386
+msgid "Features"
+msgstr "Funcionalidades"
-#: ../../include/identity.php:1029
-msgid "Online Now"
-msgstr "Ahora en línea"
+#: ../../Zotlabs/Lib/Apps.php:235
+msgid "Post"
+msgstr "Publicación"
-#: ../../include/identity.php:1117 ../../include/identity.php:1193
-msgid "F d"
-msgstr "d F"
+#: ../../Zotlabs/Lib/Apps.php:335
+msgid "Purchase"
+msgstr "Comprar"
-#: ../../include/identity.php:1173
-msgid "Birthday Reminders"
-msgstr "Recordatorios de cumpleaños"
+#: ../../Zotlabs/Lib/Chatroom.php:27
+msgid "Missing room name"
+msgstr "Sala de chat sin nombre"
-#: ../../include/identity.php:1174
-msgid "Birthdays this week:"
-msgstr "Cumpleaños de esta semana:"
+#: ../../Zotlabs/Lib/Chatroom.php:36
+msgid "Duplicate room name"
+msgstr "Nombre de sala duplicado."
-#: ../../include/identity.php:1225
-msgid "[No description]"
-msgstr "[Sin descripción]"
+#: ../../Zotlabs/Lib/Chatroom.php:86 ../../Zotlabs/Lib/Chatroom.php:94
+msgid "Invalid room specifier."
+msgstr "Especificador de sala no válido."
-#: ../../include/identity.php:1243
-msgid "Event Reminders"
-msgstr "Recordatorios de eventos"
+#: ../../Zotlabs/Lib/Chatroom.php:126
+msgid "Room not found."
+msgstr "Sala no encontrada."
-#: ../../include/identity.php:1244
-msgid "Events this week:"
-msgstr "Eventos de esta semana:"
+#: ../../Zotlabs/Lib/Chatroom.php:147
+msgid "Room is full"
+msgstr "La sala está llena."
-#: ../../include/identity.php:1286
-msgid "Like this channel"
-msgstr "Me gusta este canal"
+#: ../../Zotlabs/Lib/Enotify.php:60 ../../include/network.php:1823
+msgid "$Projectname Notification"
+msgstr "Notificación de $Projectname"
-#: ../../include/identity.php:1310
-msgid "j F, Y"
-msgstr "j F Y"
+#: ../../Zotlabs/Lib/Enotify.php:61 ../../include/network.php:1824
+msgid "$projectname"
+msgstr "$projectname"
-#: ../../include/identity.php:1311
-msgid "j F"
-msgstr "j F"
+#: ../../Zotlabs/Lib/Enotify.php:63 ../../include/network.php:1826
+msgid "Thank You,"
+msgstr "Gracias,"
-#: ../../include/identity.php:1318
-msgid "Birthday:"
-msgstr "Cumpleaños:"
+#: ../../Zotlabs/Lib/Enotify.php:65 ../../include/network.php:1828
+#, php-format
+msgid "%s Administrator"
+msgstr "%s Administrador"
-#: ../../include/identity.php:1331
+#: ../../Zotlabs/Lib/Enotify.php:100
#, php-format
-msgid "for %1$d %2$s"
-msgstr "por %1$d %2$s"
+msgid "%s <!item_type!>"
+msgstr "%s <!item_type!>"
-#: ../../include/identity.php:1334
-msgid "Sexual Preference:"
-msgstr "Orientación sexual:"
+#: ../../Zotlabs/Lib/Enotify.php:104
+#, php-format
+msgid "[Hubzilla:Notify] New mail received at %s"
+msgstr "[Hubzilla:Aviso] Nuevo mensaje en %s"
-#: ../../include/identity.php:1340
-msgid "Tags:"
-msgstr "Etiquetas:"
+#: ../../Zotlabs/Lib/Enotify.php:106
+#, php-format
+msgid "%1$s, %2$s sent you a new private message at %3$s."
+msgstr "%1$s, %2$s le ha enviado un nuevo mensaje privado en %3$s."
-#: ../../include/identity.php:1342
-msgid "Political Views:"
-msgstr "Posición política:"
+#: ../../Zotlabs/Lib/Enotify.php:107
+#, php-format
+msgid "%1$s sent you %2$s."
+msgstr "%1$s le ha enviado %2$s."
-#: ../../include/identity.php:1344
-msgid "Religion:"
-msgstr "Religión:"
+#: ../../Zotlabs/Lib/Enotify.php:107
+msgid "a private message"
+msgstr "un mensaje privado"
-#: ../../include/identity.php:1348
-msgid "Hobbies/Interests:"
-msgstr "Aficciones o intereses:"
+#: ../../Zotlabs/Lib/Enotify.php:108
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
+msgstr "Por favor visite %s para ver y/o responder a su mensaje privado."
-#: ../../include/identity.php:1350
-msgid "Likes:"
-msgstr "Me gusta:"
+#: ../../Zotlabs/Lib/Enotify.php:164
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
+msgstr "%1$s, %2$s ha comentado [zrl=%3$s]%4$s[/zrl]"
-#: ../../include/identity.php:1352
-msgid "Dislikes:"
-msgstr "No me gusta:"
+#: ../../Zotlabs/Lib/Enotify.php:172
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
+msgstr "%1$s, %2$s ha comentado [zrl=%3$s]%5$s de %4$s[/zrl] "
-#: ../../include/identity.php:1354
-msgid "Contact information and Social Networks:"
-msgstr "Información de contacto y redes sociales:"
+#: ../../Zotlabs/Lib/Enotify.php:181
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
+msgstr "%1$s, %2$s ha comentado [zrl=%3$s]%4$s creado por usted[/zrl]"
-#: ../../include/identity.php:1356
-msgid "My other channels:"
-msgstr "Mis otros canales:"
+#: ../../Zotlabs/Lib/Enotify.php:192
+#, php-format
+msgid "[Hubzilla:Notify] Comment to conversation #%1$d by %2$s"
+msgstr "[Hubzilla:Aviso] Nuevo comentario de %2$s a la conversación #%1$d"
-#: ../../include/identity.php:1358
-msgid "Musical interests:"
-msgstr "Preferencias musicales:"
+#: ../../Zotlabs/Lib/Enotify.php:193
+#, php-format
+msgid "%1$s, %2$s commented on an item/conversation you have been following."
+msgstr "%1$s, %2$s ha comentado un elemento/conversación que ha estado siguiendo."
-#: ../../include/identity.php:1360
-msgid "Books, literature:"
-msgstr "Libros, literatura:"
+#: ../../Zotlabs/Lib/Enotify.php:196 ../../Zotlabs/Lib/Enotify.php:211
+#: ../../Zotlabs/Lib/Enotify.php:237 ../../Zotlabs/Lib/Enotify.php:255
+#: ../../Zotlabs/Lib/Enotify.php:269
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
+msgstr "Para ver o comentar la conversación, visite %s"
-#: ../../include/identity.php:1362
-msgid "Television:"
-msgstr "Televisión:"
+#: ../../Zotlabs/Lib/Enotify.php:202
+#, php-format
+msgid "[Hubzilla:Notify] %s posted to your profile wall"
+msgstr "[Hubzilla:Aviso] %s ha publicado una entrada en su página de inicio del perfil (\"muro\")"
-#: ../../include/identity.php:1364
-msgid "Film/dance/culture/entertainment:"
-msgstr "Cine, danza, cultura, entretenimiento:"
+#: ../../Zotlabs/Lib/Enotify.php:204
+#, php-format
+msgid "%1$s, %2$s posted to your profile wall at %3$s"
+msgstr "%1$s, %2$s ha publicado en su página del perfil en %3$s"
-#: ../../include/identity.php:1366
-msgid "Love/Romance:"
-msgstr "Vida sentimental o amorosa:"
+#: ../../Zotlabs/Lib/Enotify.php:206
+#, php-format
+msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
+msgstr "%1$s, %2$s ha publicado en [zrl=%3$s]su página del perfil[/zrl]"
-#: ../../include/identity.php:1368
-msgid "Work/employment:"
-msgstr "Trabajo:"
+#: ../../Zotlabs/Lib/Enotify.php:230
+#, php-format
+msgid "[Hubzilla:Notify] %s tagged you"
+msgstr "[Hubzilla:Aviso] %s le ha etiquetado"
-#: ../../include/identity.php:1370
-msgid "School/education:"
-msgstr "Estudios:"
+#: ../../Zotlabs/Lib/Enotify.php:231
+#, php-format
+msgid "%1$s, %2$s tagged you at %3$s"
+msgstr "%1$s, %2$s le ha etiquetado en %3$s"
-#: ../../include/identity.php:1390
-msgid "Like this thing"
-msgstr "Me gusta esto"
+#: ../../Zotlabs/Lib/Enotify.php:232
+#, php-format
+msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%3$s]le etiquetó[/zrl]."
+
+#: ../../Zotlabs/Lib/Enotify.php:244
+#, php-format
+msgid "[Hubzilla:Notify] %1$s poked you"
+msgstr "[Hubzilla:Aviso] %1$s le ha dado un toque"
+
+#: ../../Zotlabs/Lib/Enotify.php:245
+#, php-format
+msgid "%1$s, %2$s poked you at %3$s"
+msgstr "%1$s, %2$s le ha dado un toque en %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:246
+#, php-format
+msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%2$s]le ha dado un toque[/zrl]."
+
+#: ../../Zotlabs/Lib/Enotify.php:262
+#, php-format
+msgid "[Hubzilla:Notify] %s tagged your post"
+msgstr "[Hubzilla:Aviso] %s ha etiquetado su publicación"
+
+#: ../../Zotlabs/Lib/Enotify.php:263
+#, php-format
+msgid "%1$s, %2$s tagged your post at %3$s"
+msgstr "%1$s, %2$s ha etiquetado su publicación en %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:264
+#, php-format
+msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+msgstr "%1$s, %2$s ha etiquetado [zrl=%3$s]su publicación[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:276
+msgid "[Hubzilla:Notify] Introduction received"
+msgstr "[Hubzilla:Aviso] Ha recibido una solicitud de conexión"
+
+#: ../../Zotlabs/Lib/Enotify.php:277
+#, php-format
+msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
+msgstr "%1$s, ha recibido una nueva solicitud de conexión de '%2$s' en %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:278
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
+msgstr "%1$s, ha recibido [zrl=%2$s]una nueva solicitud de conexión[/zrl] de %3$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:282 ../../Zotlabs/Lib/Enotify.php:301
+#, php-format
+msgid "You may visit their profile at %s"
+msgstr "Puede visitar su perfil en %s"
-#: ../../include/notify.php:20
+#: ../../Zotlabs/Lib/Enotify.php:284
+#, php-format
+msgid "Please visit %s to approve or reject the connection request."
+msgstr "Por favor, visite %s para permitir o rechazar la solicitad de conexión."
+
+#: ../../Zotlabs/Lib/Enotify.php:291
+msgid "[Hubzilla:Notify] Friend suggestion received"
+msgstr "[Hubzilla:Aviso] Ha recibido una sugerencia de amistad"
+
+#: ../../Zotlabs/Lib/Enotify.php:292
+#, php-format
+msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
+msgstr "%1$s, ha recibido una sugerencia de conexión de '%2$s' en %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:293
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
+"%4$s."
+msgstr "%1$s, ha recibido [zrl=%2$s]una sugerencia de conexión[/zrl] para %3$s de %4$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:299
+msgid "Name:"
+msgstr "Nombre:"
+
+#: ../../Zotlabs/Lib/Enotify.php:300
+msgid "Photo:"
+msgstr "Foto:"
+
+#: ../../Zotlabs/Lib/Enotify.php:303
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
+msgstr "Por favor, visite %s para aprobar o rechazar la sugerencia."
+
+#: ../../Zotlabs/Lib/Enotify.php:518
+msgid "[Hubzilla:Notify]"
+msgstr "[Hubzilla:Aviso]"
+
+#: ../../Zotlabs/Lib/Enotify.php:667
msgid "created a new post"
msgstr "ha creado una nueva entrada"
-#: ../../include/notify.php:21
+#: ../../Zotlabs/Lib/Enotify.php:668
#, php-format
msgid "commented on %s's post"
msgstr "ha comentado la entrada de %s"
-#: ../../include/ItemObject.php:89 ../../include/conversation.php:664
+#: ../../Zotlabs/Lib/ThreadItem.php:95 ../../include/conversation.php:664
msgid "Private Message"
msgstr "Mensaje Privado"
-#: ../../include/ItemObject.php:126 ../../include/conversation.php:656
+#: ../../Zotlabs/Lib/ThreadItem.php:132 ../../include/conversation.php:656
msgid "Select"
msgstr "Seleccionar"
-#: ../../include/ItemObject.php:130
+#: ../../Zotlabs/Lib/ThreadItem.php:136
msgid "Save to Folder"
msgstr "Guardar en carpeta"
-#: ../../include/ItemObject.php:151
+#: ../../Zotlabs/Lib/ThreadItem.php:157
msgid "I will attend"
msgstr "Participaré"
-#: ../../include/ItemObject.php:151
+#: ../../Zotlabs/Lib/ThreadItem.php:157
msgid "I will not attend"
msgstr "No participaré"
-#: ../../include/ItemObject.php:151
+#: ../../Zotlabs/Lib/ThreadItem.php:157
msgid "I might attend"
msgstr "Quizá participe"
-#: ../../include/ItemObject.php:161
+#: ../../Zotlabs/Lib/ThreadItem.php:167
msgid "I agree"
msgstr "Estoy de acuerdo"
-#: ../../include/ItemObject.php:161
+#: ../../Zotlabs/Lib/ThreadItem.php:167
msgid "I disagree"
msgstr "No estoy de acuerdo"
-#: ../../include/ItemObject.php:161
+#: ../../Zotlabs/Lib/ThreadItem.php:167
msgid "I abstain"
msgstr "Me abstengo"
-#: ../../include/ItemObject.php:212
+#: ../../Zotlabs/Lib/ThreadItem.php:218
msgid "Add Star"
msgstr "Destacar añadiendo una estrella"
-#: ../../include/ItemObject.php:213
+#: ../../Zotlabs/Lib/ThreadItem.php:219
msgid "Remove Star"
msgstr "Eliminar estrella"
-#: ../../include/ItemObject.php:214
+#: ../../Zotlabs/Lib/ThreadItem.php:220
msgid "Toggle Star Status"
msgstr "Activar o desactivar el estado de entrada preferida"
-#: ../../include/ItemObject.php:218
+#: ../../Zotlabs/Lib/ThreadItem.php:224
msgid "starred"
msgstr "preferidas"
-#: ../../include/ItemObject.php:227 ../../include/conversation.php:671
+#: ../../Zotlabs/Lib/ThreadItem.php:234 ../../include/conversation.php:671
msgid "Message signature validated"
msgstr "Firma de mensaje validada"
-#: ../../include/ItemObject.php:228 ../../include/conversation.php:672
+#: ../../Zotlabs/Lib/ThreadItem.php:235 ../../include/conversation.php:672
msgid "Message signature incorrect"
msgstr "Firma de mensaje incorrecta"
-#: ../../include/ItemObject.php:236
+#: ../../Zotlabs/Lib/ThreadItem.php:243
msgid "Add Tag"
msgstr "Añadir etiqueta"
-#: ../../include/ItemObject.php:254 ../../include/taxonomy.php:328
+#: ../../Zotlabs/Lib/ThreadItem.php:261 ../../include/taxonomy.php:316
msgid "like"
msgstr "me gusta"
-#: ../../include/ItemObject.php:255 ../../include/taxonomy.php:329
+#: ../../Zotlabs/Lib/ThreadItem.php:262 ../../include/taxonomy.php:317
msgid "dislike"
msgstr "no me gusta"
-#: ../../include/ItemObject.php:259
+#: ../../Zotlabs/Lib/ThreadItem.php:266
msgid "Share This"
msgstr "Compartir esto"
-#: ../../include/ItemObject.php:259
+#: ../../Zotlabs/Lib/ThreadItem.php:266
msgid "share"
msgstr "compartir"
-#: ../../include/ItemObject.php:268
+#: ../../Zotlabs/Lib/ThreadItem.php:275
msgid "Delivery Report"
msgstr "Informe de transmisión"
-#: ../../include/ItemObject.php:286
+#: ../../Zotlabs/Lib/ThreadItem.php:293
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
msgstr[0] "%d comentario"
msgstr[1] "%d comentarios"
-#: ../../include/ItemObject.php:315 ../../include/ItemObject.php:316
+#: ../../Zotlabs/Lib/ThreadItem.php:322 ../../Zotlabs/Lib/ThreadItem.php:323
#, php-format
msgid "View %s's profile - %s"
msgstr "Ver el perfil de %s - %s"
-#: ../../include/ItemObject.php:319
+#: ../../Zotlabs/Lib/ThreadItem.php:326
msgid "to"
msgstr "a"
-#: ../../include/ItemObject.php:320
+#: ../../Zotlabs/Lib/ThreadItem.php:327
msgid "via"
msgstr "mediante"
-#: ../../include/ItemObject.php:321
+#: ../../Zotlabs/Lib/ThreadItem.php:328
msgid "Wall-to-Wall"
msgstr "De página del perfil a página del perfil (de \"muro\" a \"muro\")"
-#: ../../include/ItemObject.php:322
+#: ../../Zotlabs/Lib/ThreadItem.php:329
msgid "via Wall-To-Wall:"
msgstr "Mediante el procedimiento página del perfil a página del perfil (de \"muro\" a \"muro\")"
-#: ../../include/ItemObject.php:334 ../../include/conversation.php:719
+#: ../../Zotlabs/Lib/ThreadItem.php:341 ../../include/conversation.php:719
#, php-format
msgid "from %s"
msgstr "desde %s"
-#: ../../include/ItemObject.php:337 ../../include/conversation.php:722
+#: ../../Zotlabs/Lib/ThreadItem.php:344 ../../include/conversation.php:722
#, php-format
msgid "last edited: %s"
msgstr "último cambio: %s"
-#: ../../include/ItemObject.php:338 ../../include/conversation.php:723
+#: ../../Zotlabs/Lib/ThreadItem.php:345 ../../include/conversation.php:723
#, php-format
msgid "Expires: %s"
msgstr "Caduca: %s"
-#: ../../include/ItemObject.php:362 ../../bookmarker/bookmarker.php:45
+#: ../../Zotlabs/Lib/ThreadItem.php:370
msgid "Save Bookmarks"
msgstr "Guardar en Marcadores"
-#: ../../include/ItemObject.php:363
+#: ../../Zotlabs/Lib/ThreadItem.php:371
msgid "Add to Calendar"
msgstr "Añadir al calendario"
-#: ../../include/ItemObject.php:372
+#: ../../Zotlabs/Lib/ThreadItem.php:380
msgid "Mark all seen"
msgstr "Marcar todo como visto"
-#: ../../include/ItemObject.php:413 ../../include/js_strings.php:7
+#: ../../Zotlabs/Lib/ThreadItem.php:421 ../../include/js_strings.php:7
msgid "[+] show all"
msgstr "[+] mostrar todo:"
-#: ../../include/ItemObject.php:709
+#: ../../Zotlabs/Lib/ThreadItem.php:711 ../../include/conversation.php:1215
+msgid "Bold"
+msgstr "Negrita"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:712 ../../include/conversation.php:1216
+msgid "Italic"
+msgstr "Itálico "
+
+#: ../../Zotlabs/Lib/ThreadItem.php:713 ../../include/conversation.php:1217
+msgid "Underline"
+msgstr "Subrayar"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:714 ../../include/conversation.php:1218
+msgid "Quote"
+msgstr "Citar"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:715 ../../include/conversation.php:1219
+msgid "Code"
+msgstr "Código"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:716
msgid "Image"
msgstr "Imagen"
-#: ../../include/ItemObject.php:710
+#: ../../Zotlabs/Lib/ThreadItem.php:717
msgid "Insert Link"
msgstr "Insertar enlace"
-#: ../../include/ItemObject.php:711
+#: ../../Zotlabs/Lib/ThreadItem.php:718
msgid "Video"
msgstr "Vídeo"
-#: ../../include/account.php:28
-msgid "Not a valid email address"
-msgstr "Dirección de correo no válida"
-
-#: ../../include/account.php:30
-msgid "Your email domain is not among those allowed on this site"
-msgstr "Su dirección de correo no pertenece a ninguno de los dominios permitidos en este sitio."
-
-#: ../../include/account.php:36
-msgid "Your email address is already registered at this site."
-msgstr "Su dirección de correo está ya registrada en este sitio."
-
-#: ../../include/account.php:68
-msgid "An invitation is required."
-msgstr "Es obligatorio que le inviten."
-
-#: ../../include/account.php:72
-msgid "Invitation could not be verified."
-msgstr "No se ha podido verificar su invitación."
-
-#: ../../include/account.php:122
-msgid "Please enter the required information."
-msgstr "Por favor introduzca la información requerida."
-
-#: ../../include/account.php:189
-msgid "Failed to store account information."
-msgstr "La información de la cuenta no se ha podido guardar."
-
-#: ../../include/account.php:249
-#, php-format
-msgid "Registration confirmation for %s"
-msgstr "Confirmación de registro para %s"
-
-#: ../../include/account.php:315
-#, php-format
-msgid "Registration request at %s"
-msgstr "Solicitud de registro en %s"
-
-#: ../../include/account.php:317 ../../include/account.php:344
-#: ../../include/account.php:404 ../../include/network.php:1875
-msgid "Administrator"
-msgstr "Administrador"
-
-#: ../../include/account.php:339
-msgid "your registration password"
-msgstr "su contraseña de registro"
-
-#: ../../include/account.php:342 ../../include/account.php:402
-#, php-format
-msgid "Registration details for %s"
-msgstr "Detalles del registro de %s"
+#: ../../include/Import/import_diaspora.php:16
+msgid "No username found in import file."
+msgstr "No se ha encontrado el nombre de usuario en el fichero importado."
-#: ../../include/account.php:414
-msgid "Account approved."
-msgstr "Cuenta aprobada."
+#: ../../include/Import/import_diaspora.php:41 ../../include/import.php:50
+msgid "Unable to create a unique channel address. Import failed."
+msgstr "No se ha podido crear una dirección de canal única. Ha fallado la importación."
-#: ../../include/account.php:454
+#: ../../include/dba/dba_driver.php:171
#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registro revocado para %s"
-
-#: ../../include/account.php:506
-msgid "Account verified. Please login."
-msgstr "Cuenta verificada. Por favor, inicie sesión."
-
-#: ../../include/account.php:722 ../../include/account.php:724
-msgid "Click here to upgrade."
-msgstr "Pulse aquí para actualizar"
-
-#: ../../include/account.php:730
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Esta acción supera los límites establecidos por su plan de suscripción "
-
-#: ../../include/account.php:735
-msgid "This action is not available under your subscription plan."
-msgstr "Esta acción no está disponible en su plan de suscripción."
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Male"
-msgstr "Actualmente hombre"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Female"
-msgstr "Actualmente mujer"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Male"
-msgstr "Generalmente hombre"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Female"
-msgstr "Generalmente mujer"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transgender"
-msgstr "Transgénero"
-
-#: ../../include/profile_selectors.php:6
-msgid "Intersex"
-msgstr "Intersexual"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transsexual"
-msgstr "Transexual"
-
-#: ../../include/profile_selectors.php:6
-msgid "Hermaphrodite"
-msgstr "Hermafrodita"
-
-#: ../../include/profile_selectors.php:6
-msgid "Neuter"
-msgstr "Neutral"
-
-#: ../../include/profile_selectors.php:6
-msgid "Non-specific"
-msgstr "No especificado"
-
-#: ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
-#: ../../include/profile_selectors.php:61
-#: ../../include/profile_selectors.php:97 ../../include/permissions.php:881
-msgid "Other"
-msgstr "Otro"
-
-#: ../../include/profile_selectors.php:6
-msgid "Undecided"
-msgstr "Indeciso/a"
-
-#: ../../include/profile_selectors.php:42
-#: ../../include/profile_selectors.php:61
-msgid "Males"
-msgstr "Hombres"
-
-#: ../../include/profile_selectors.php:42
-#: ../../include/profile_selectors.php:61
-msgid "Females"
-msgstr "Mujeres"
-
-#: ../../include/profile_selectors.php:42
-msgid "Gay"
-msgstr "Homosexual"
-
-#: ../../include/profile_selectors.php:42
-msgid "Lesbian"
-msgstr "Lesbiana"
-
-#: ../../include/profile_selectors.php:42
-msgid "No Preference"
-msgstr "Sin preferencias"
-
-#: ../../include/profile_selectors.php:42
-msgid "Bisexual"
-msgstr "Bisexual"
-
-#: ../../include/profile_selectors.php:42
-msgid "Autosexual"
-msgstr "Autosexual"
-
-#: ../../include/profile_selectors.php:42
-msgid "Abstinent"
-msgstr "Casto/a"
-
-#: ../../include/profile_selectors.php:42
-msgid "Virgin"
-msgstr "Virgen"
-
-#: ../../include/profile_selectors.php:42
-msgid "Deviant"
-msgstr "Fuera de lo común"
-
-#: ../../include/profile_selectors.php:42
-msgid "Fetish"
-msgstr "Fetichista"
-
-#: ../../include/profile_selectors.php:42
-msgid "Oodles"
-msgstr "Orgías"
-
-#: ../../include/profile_selectors.php:42
-msgid "Nonsexual"
-msgstr "Asexual"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Single"
-msgstr "Soltero/a"
-
-#: ../../include/profile_selectors.php:80
-msgid "Lonely"
-msgstr "Solo/a"
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr "No se ha podido localizar información de DNS para el servidor de base de datos “%sâ€"
-#: ../../include/profile_selectors.php:80
-msgid "Available"
-msgstr "Disponible"
+#: ../../include/taxonomy.php:188 ../../include/taxonomy.php:270
+#: ../../include/widgets.php:46 ../../include/widgets.php:429
+#: ../../include/contact_widgets.php:91
+msgid "Categories"
+msgstr "Categorías"
-#: ../../include/profile_selectors.php:80
-msgid "Unavailable"
-msgstr "No disponible"
+#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249
+msgid "Tags"
+msgstr "Etiquetas"
-#: ../../include/profile_selectors.php:80
-msgid "Has crush"
-msgstr "Enamorado/a"
+#: ../../include/taxonomy.php:293
+msgid "Keywords"
+msgstr "Palabras clave"
-#: ../../include/profile_selectors.php:80
-msgid "Infatuated"
-msgstr "Apasionado/a"
+#: ../../include/taxonomy.php:314
+msgid "have"
+msgstr "tener"
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Dating"
-msgstr "Saliendo con alguien"
+#: ../../include/taxonomy.php:314
+msgid "has"
+msgstr "tiene"
-#: ../../include/profile_selectors.php:80
-msgid "Unfaithful"
-msgstr "Infiel"
+#: ../../include/taxonomy.php:315
+msgid "want"
+msgstr "quiero"
-#: ../../include/profile_selectors.php:80
-msgid "Sex Addict"
-msgstr "Con adicción al sexo"
+#: ../../include/taxonomy.php:315
+msgid "wants"
+msgstr "quiere"
-#: ../../include/profile_selectors.php:80
-msgid "Friends/Benefits"
-msgstr "Amigos con algo extra"
+#: ../../include/taxonomy.php:316
+msgid "likes"
+msgstr "gusta de"
-#: ../../include/profile_selectors.php:80
-msgid "Casual"
-msgstr "Casual"
+#: ../../include/taxonomy.php:317
+msgid "dislikes"
+msgstr "no gusta de"
-#: ../../include/profile_selectors.php:80
-msgid "Engaged"
-msgstr "Prometido/a"
+#: ../../include/event.php:22 ../../include/event.php:69
+#: ../../include/bb2diaspora.php:485
+msgid "l F d, Y \\@ g:i A"
+msgstr "l d de F, Y \\@ G:i"
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Married"
-msgstr "Casado/a"
+#: ../../include/event.php:30 ../../include/event.php:73
+#: ../../include/bb2diaspora.php:491
+msgid "Starts:"
+msgstr "Comienza:"
-#: ../../include/profile_selectors.php:80
-msgid "Imaginarily married"
-msgstr "Casado/a en sueños"
+#: ../../include/event.php:40 ../../include/event.php:77
+#: ../../include/bb2diaspora.php:499
+msgid "Finishes:"
+msgstr "Finaliza:"
-#: ../../include/profile_selectors.php:80
-msgid "Partners"
-msgstr "Pareja"
+#: ../../include/event.php:812
+msgid "This event has been added to your calendar."
+msgstr "Este evento ha sido añadido a su calendario."
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Cohabiting"
-msgstr "Cohabitando"
+#: ../../include/event.php:1012
+msgid "Not specified"
+msgstr "Sin especificar"
-#: ../../include/profile_selectors.php:80
-msgid "Common law"
-msgstr "Matrimonio tradicional"
+#: ../../include/event.php:1013
+msgid "Needs Action"
+msgstr "Necesita de una intervención"
-#: ../../include/profile_selectors.php:80
-msgid "Happy"
-msgstr "Felíz"
+#: ../../include/event.php:1014
+msgid "Completed"
+msgstr "Completado/a"
-#: ../../include/profile_selectors.php:80
-msgid "Not looking"
-msgstr "No estoy buscando"
+#: ../../include/event.php:1015
+msgid "In Process"
+msgstr "En proceso"
-#: ../../include/profile_selectors.php:80
-msgid "Swinger"
-msgstr "Libertino"
+#: ../../include/event.php:1016
+msgid "Cancelled"
+msgstr "Cancelado/a"
-#: ../../include/profile_selectors.php:80
-msgid "Betrayed"
-msgstr "Engañado/a"
+#: ../../include/import.php:29
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "No se ha podido crear un canal con un identificador que ya existe en este sistema. La importación ha fallado."
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Separated"
-msgstr "Separado/a"
+#: ../../include/import.php:76
+msgid "Channel clone failed. Import failed."
+msgstr "La clonación del canal no ha salido bien. La importación ha fallado."
-#: ../../include/profile_selectors.php:80
-msgid "Unstable"
-msgstr "Inestable"
+#: ../../include/items.php:892 ../../include/items.php:937
+msgid "(Unknown)"
+msgstr "(Desconocido)"
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Divorced"
-msgstr "Divorciado/a"
+#: ../../include/items.php:1136
+msgid "Visible to anybody on the internet."
+msgstr "Visible para cualquiera en internet."
-#: ../../include/profile_selectors.php:80
-msgid "Imaginarily divorced"
-msgstr "Divorciado/a en sueños"
+#: ../../include/items.php:1138
+msgid "Visible to you only."
+msgstr "Visible sólo para usted."
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Widowed"
-msgstr "Viudo/a"
+#: ../../include/items.php:1140
+msgid "Visible to anybody in this network."
+msgstr "Visible para cualquiera en esta red."
-#: ../../include/profile_selectors.php:80
-msgid "Uncertain"
-msgstr "Indeterminado"
+#: ../../include/items.php:1142
+msgid "Visible to anybody authenticated."
+msgstr "Visible para cualquiera que esté autenticado."
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "It's complicated"
-msgstr "Es complicado"
+#: ../../include/items.php:1144
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Visible para cualquiera en %s."
-#: ../../include/profile_selectors.php:80
-msgid "Don't care"
-msgstr "No me importa"
+#: ../../include/items.php:1146
+msgid "Visible to all connections."
+msgstr "Visible para todas las conexiones."
-#: ../../include/profile_selectors.php:80
-msgid "Ask me"
-msgstr "Pregúnteme"
+#: ../../include/items.php:1148
+msgid "Visible to approved connections."
+msgstr "Visible para las conexiones permitidas."
-#: ../../include/acl_selectors.php:218
-msgid "Visible to your default audience"
-msgstr "Visible para su público predeterminado."
+#: ../../include/items.php:1150
+msgid "Visible to specific connections."
+msgstr "Visible para conexiones específicas."
-#: ../../include/acl_selectors.php:243
-msgid "Show"
-msgstr "Mostrar"
+#: ../../include/items.php:3909
+msgid "Privacy group is empty."
+msgstr "El grupo de canales está vacío."
-#: ../../include/acl_selectors.php:244
-msgid "Don't show"
-msgstr "No mostrar"
+#: ../../include/items.php:3916
+#, php-format
+msgid "Privacy group: %s"
+msgstr "Grupo de canales: %s"
-#: ../../include/acl_selectors.php:249
-msgid "Other networks and post services"
-msgstr "Otras redes y servicios de publicación"
+#: ../../include/items.php:3928
+msgid "Connection not found."
+msgstr "Conexión no encontrada"
-#: ../../include/activities.php:42
-msgid " and "
-msgstr " y "
+#: ../../include/items.php:4277
+msgid "profile photo"
+msgstr "foto del perfil"
-#: ../../include/activities.php:50
-msgid "public profile"
-msgstr "el perfil público"
+#: ../../include/message.php:20
+msgid "No recipient provided."
+msgstr "No se ha especificado ningún destinatario."
-#: ../../include/activities.php:59
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s ha cambiado %2$s a &ldquo;%3$s&rdquo;"
+#: ../../include/message.php:25
+msgid "[no subject]"
+msgstr "[sin asunto]"
-#: ../../include/activities.php:60
-#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Visitar %2$s de %1$s"
+#: ../../include/message.php:45
+msgid "Unable to determine sender."
+msgstr "No ha sido posible determinar el remitente. "
-#: ../../include/activities.php:63
-#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s ha actualizado %2$s, cambiando %3$s."
+#: ../../include/message.php:222
+msgid "Stored post could not be verified."
+msgstr "No se han podido verificar las publicaciones guardadas."
-#: ../../include/text.php:394
+#: ../../include/text.php:428
msgid "prev"
msgstr "anterior"
-#: ../../include/text.php:396
+#: ../../include/text.php:430
msgid "first"
msgstr "primera"
-#: ../../include/text.php:425
+#: ../../include/text.php:459
msgid "last"
msgstr "última"
-#: ../../include/text.php:428
+#: ../../include/text.php:462
msgid "next"
msgstr "próxima"
-#: ../../include/text.php:438
+#: ../../include/text.php:472
msgid "older"
msgstr "más antiguas"
-#: ../../include/text.php:440
+#: ../../include/text.php:474
msgid "newer"
msgstr "más recientes"
-#: ../../include/text.php:822
+#: ../../include/text.php:863
msgid "No connections"
msgstr "Sin conexiones"
-#: ../../include/text.php:847
+#: ../../include/text.php:888
#, php-format
msgid "View all %s connections"
msgstr "Ver todas las %s conexiones"
-#: ../../include/text.php:992 ../../include/text.php:997
+#: ../../include/text.php:1033 ../../include/text.php:1038
msgid "poke"
msgstr "un toque"
-#: ../../include/text.php:992 ../../include/text.php:997
+#: ../../include/text.php:1033 ../../include/text.php:1038
#: ../../include/conversation.php:243
msgid "poked"
msgstr "ha dado un toque a"
-#: ../../include/text.php:998
+#: ../../include/text.php:1039
msgid "ping"
msgstr "un \"ping\""
-#: ../../include/text.php:998
+#: ../../include/text.php:1039
msgid "pinged"
msgstr "ha enviado un \"ping\" a"
-#: ../../include/text.php:999
+#: ../../include/text.php:1040
msgid "prod"
msgstr "una incitación "
-#: ../../include/text.php:999
+#: ../../include/text.php:1040
msgid "prodded"
msgstr "ha incitado a "
-#: ../../include/text.php:1000
+#: ../../include/text.php:1041
msgid "slap"
msgstr "una bofetada "
-#: ../../include/text.php:1000
+#: ../../include/text.php:1041
msgid "slapped"
msgstr "ha abofeteado a "
-#: ../../include/text.php:1001
+#: ../../include/text.php:1042
msgid "finger"
msgstr "un \"finger\" "
-#: ../../include/text.php:1001
+#: ../../include/text.php:1042
msgid "fingered"
msgstr "envió un \"finger\" a"
-#: ../../include/text.php:1002
+#: ../../include/text.php:1043
msgid "rebuff"
msgstr "un reproche"
-#: ../../include/text.php:1002
+#: ../../include/text.php:1043
msgid "rebuffed"
msgstr "ha hecho un reproche a "
-#: ../../include/text.php:1014
+#: ../../include/text.php:1055
msgid "happy"
msgstr "feliz "
-#: ../../include/text.php:1015
+#: ../../include/text.php:1056
msgid "sad"
msgstr "triste "
-#: ../../include/text.php:1016
+#: ../../include/text.php:1057
msgid "mellow"
msgstr "tranquilo/a"
-#: ../../include/text.php:1017
+#: ../../include/text.php:1058
msgid "tired"
msgstr "cansado/a "
-#: ../../include/text.php:1018
+#: ../../include/text.php:1059
msgid "perky"
msgstr "vivaz"
-#: ../../include/text.php:1019
+#: ../../include/text.php:1060
msgid "angry"
msgstr "enfadado/a"
-#: ../../include/text.php:1020
+#: ../../include/text.php:1061
msgid "stupefied"
msgstr "asombrado/a"
-#: ../../include/text.php:1021
+#: ../../include/text.php:1062
msgid "puzzled"
msgstr "perplejo/a"
-#: ../../include/text.php:1022
+#: ../../include/text.php:1063
msgid "interested"
msgstr "interesado/a"
-#: ../../include/text.php:1023
+#: ../../include/text.php:1064
msgid "bitter"
msgstr "amargado/a"
-#: ../../include/text.php:1024
+#: ../../include/text.php:1065
msgid "cheerful"
msgstr "alegre"
-#: ../../include/text.php:1025
+#: ../../include/text.php:1066
msgid "alive"
msgstr "animado/a"
-#: ../../include/text.php:1026
+#: ../../include/text.php:1067
msgid "annoyed"
msgstr "molesto/a"
-#: ../../include/text.php:1027
+#: ../../include/text.php:1068
msgid "anxious"
msgstr "ansioso/a"
-#: ../../include/text.php:1028
+#: ../../include/text.php:1069
msgid "cranky"
msgstr "de mal humor"
-#: ../../include/text.php:1029
+#: ../../include/text.php:1070
msgid "disturbed"
msgstr "perturbado/a"
-#: ../../include/text.php:1030
+#: ../../include/text.php:1071
msgid "frustrated"
msgstr "frustrado/a"
-#: ../../include/text.php:1031
+#: ../../include/text.php:1072
msgid "depressed"
msgstr "deprimido/a"
-#: ../../include/text.php:1032
+#: ../../include/text.php:1073
msgid "motivated"
msgstr "motivado/a"
-#: ../../include/text.php:1033
+#: ../../include/text.php:1074
msgid "relaxed"
msgstr "relajado/a"
-#: ../../include/text.php:1034
+#: ../../include/text.php:1075
msgid "surprised"
msgstr "sorprendido/a"
-#: ../../include/text.php:1206 ../../include/js_strings.php:70
+#: ../../include/text.php:1257 ../../include/js_strings.php:70
msgid "Monday"
msgstr "lunes"
-#: ../../include/text.php:1206 ../../include/js_strings.php:71
+#: ../../include/text.php:1257 ../../include/js_strings.php:71
msgid "Tuesday"
msgstr "martes"
-#: ../../include/text.php:1206 ../../include/js_strings.php:72
+#: ../../include/text.php:1257 ../../include/js_strings.php:72
msgid "Wednesday"
msgstr "miércoles"
-#: ../../include/text.php:1206 ../../include/js_strings.php:73
+#: ../../include/text.php:1257 ../../include/js_strings.php:73
msgid "Thursday"
msgstr "jueves"
-#: ../../include/text.php:1206 ../../include/js_strings.php:74
+#: ../../include/text.php:1257 ../../include/js_strings.php:74
msgid "Friday"
msgstr "viernes"
-#: ../../include/text.php:1206 ../../include/js_strings.php:75
+#: ../../include/text.php:1257 ../../include/js_strings.php:75
msgid "Saturday"
msgstr "sábado"
-#: ../../include/text.php:1206 ../../include/js_strings.php:69
+#: ../../include/text.php:1257 ../../include/js_strings.php:69
msgid "Sunday"
msgstr "domingo"
-#: ../../include/text.php:1210 ../../include/js_strings.php:45
+#: ../../include/text.php:1261 ../../include/js_strings.php:45
msgid "January"
msgstr "enero"
-#: ../../include/text.php:1210 ../../include/js_strings.php:46
+#: ../../include/text.php:1261 ../../include/js_strings.php:46
msgid "February"
msgstr "febrero"
-#: ../../include/text.php:1210 ../../include/js_strings.php:47
+#: ../../include/text.php:1261 ../../include/js_strings.php:47
msgid "March"
msgstr "marzo"
-#: ../../include/text.php:1210 ../../include/js_strings.php:48
+#: ../../include/text.php:1261 ../../include/js_strings.php:48
msgid "April"
msgstr "abril"
-#: ../../include/text.php:1210
+#: ../../include/text.php:1261
msgid "May"
msgstr "mayo"
-#: ../../include/text.php:1210 ../../include/js_strings.php:50
+#: ../../include/text.php:1261 ../../include/js_strings.php:50
msgid "June"
msgstr "junio"
-#: ../../include/text.php:1210 ../../include/js_strings.php:51
+#: ../../include/text.php:1261 ../../include/js_strings.php:51
msgid "July"
msgstr "julio"
-#: ../../include/text.php:1210 ../../include/js_strings.php:52
+#: ../../include/text.php:1261 ../../include/js_strings.php:52
msgid "August"
msgstr "agosto"
-#: ../../include/text.php:1210 ../../include/js_strings.php:53
+#: ../../include/text.php:1261 ../../include/js_strings.php:53
msgid "September"
msgstr "septiembre"
-#: ../../include/text.php:1210 ../../include/js_strings.php:54
+#: ../../include/text.php:1261 ../../include/js_strings.php:54
msgid "October"
msgstr "octubre"
-#: ../../include/text.php:1210 ../../include/js_strings.php:55
+#: ../../include/text.php:1261 ../../include/js_strings.php:55
msgid "November"
msgstr "noviembre"
-#: ../../include/text.php:1210 ../../include/js_strings.php:56
+#: ../../include/text.php:1261 ../../include/js_strings.php:56
msgid "December"
msgstr "diciembre"
-#: ../../include/text.php:1287 ../../include/text.php:1291
+#: ../../include/text.php:1338 ../../include/text.php:1342
msgid "Unknown Attachment"
msgstr "Adjunto no reconocido"
-#: ../../include/text.php:1293
+#: ../../include/text.php:1344
msgid "unknown"
msgstr "desconocido"
-#: ../../include/text.php:1329
+#: ../../include/text.php:1380
msgid "remove category"
msgstr "eliminar categoría"
-#: ../../include/text.php:1406
+#: ../../include/text.php:1457
msgid "remove from file"
msgstr "eliminar del fichero"
-#: ../../include/text.php:1437 ../../include/bb2diaspora.php:487
-#: ../../include/event.php:22
-msgid "l F d, Y \\@ g:i A"
-msgstr "l d de F, Y \\@ G:i"
-
-#: ../../include/text.php:1441 ../../include/bb2diaspora.php:493
-#: ../../include/event.php:30
-msgid "Starts:"
-msgstr "Comienza:"
-
-#: ../../include/text.php:1445 ../../include/bb2diaspora.php:501
-#: ../../include/event.php:40
-msgid "Finishes:"
-msgstr "Finaliza:"
-
-#: ../../include/text.php:1735 ../../include/text.php:1807
+#: ../../include/text.php:1753 ../../include/text.php:1824
msgid "default"
msgstr "por defecto"
-#: ../../include/text.php:1743
+#: ../../include/text.php:1761
msgid "Page layout"
msgstr "Plantilla de la página"
-#: ../../include/text.php:1743
+#: ../../include/text.php:1761
msgid "You can create your own with the layouts tool"
msgstr "Puede crear su propia disposición gráfica con la herramienta de plantillas"
-#: ../../include/text.php:1785
+#: ../../include/text.php:1803
msgid "Page content type"
msgstr "Tipo de contenido de la página"
-#: ../../include/text.php:1819
+#: ../../include/text.php:1836
msgid "Select an alternate language"
msgstr "Seleccionar un idioma alternativo"
@@ -7309,121 +7205,611 @@ msgstr "Seleccionar un idioma alternativo"
msgid "activity"
msgstr "la actividad"
-#: ../../include/text.php:2248
+#: ../../include/text.php:2262
msgid "Design Tools"
msgstr "Herramientas de diseño web"
-#: ../../include/text.php:2254
+#: ../../include/text.php:2268
msgid "Pages"
msgstr "Páginas"
-#: ../../include/zot.php:680
-msgid "Invalid data packet"
-msgstr "Paquete de datos no válido"
+#: ../../include/widgets.php:103
+msgid "System"
+msgstr "Sistema"
-#: ../../include/zot.php:696
-msgid "Unable to verify channel signature"
-msgstr "No ha sido posible de verificar la firma del canal"
+#: ../../include/widgets.php:106
+msgid "New App"
+msgstr "Nueva aplicación (app)"
-#: ../../include/zot.php:2332
+#: ../../include/widgets.php:154
+msgid "Suggestions"
+msgstr "Sugerencias"
+
+#: ../../include/widgets.php:155
+msgid "See more..."
+msgstr "Ver más..."
+
+#: ../../include/widgets.php:175
#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "No ha sido posible de verificar la firma del sitio para %s"
+msgid "You have %1$.0f of %2$.0f allowed connections."
+msgstr "Tiene %1$.0f de %2$.0f conexiones permitidas."
-#: ../../include/zot.php:3670
-msgid "invalid target signature"
-msgstr "La firma recibida no es válida"
+#: ../../include/widgets.php:181
+msgid "Add New Connection"
+msgstr "Añadir nueva conexión"
-#: ../../include/apps.php:128
-msgid "Site Admin"
-msgstr "Administrador del sitio"
+#: ../../include/widgets.php:182
+msgid "Enter channel address"
+msgstr "Dirección del canal"
-#: ../../include/apps.php:129 ../../include/conversation.php:1694
-#: ../../include/nav.php:102
+#: ../../include/widgets.php:183
+msgid "Examples: bob@example.com, https://example.com/barbara"
+msgstr "Ejemplos: manuel@ejemplo.com, https://ejemplo.com/carmen"
+
+#: ../../include/widgets.php:199
+msgid "Notes"
+msgstr "Notas"
+
+#: ../../include/widgets.php:273
+msgid "Remove term"
+msgstr "Eliminar término"
+
+#: ../../include/widgets.php:281 ../../include/features.php:84
+msgid "Saved Searches"
+msgstr "Búsquedas guardadas"
+
+#: ../../include/widgets.php:282 ../../include/group.php:316
+msgid "add"
+msgstr "añadir"
+
+#: ../../include/widgets.php:310 ../../include/contact_widgets.php:53
+#: ../../include/features.php:98
+msgid "Saved Folders"
+msgstr "Carpetas guardadas"
+
+#: ../../include/widgets.php:313 ../../include/widgets.php:432
+#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94
+msgid "Everything"
+msgstr "Todo"
+
+#: ../../include/widgets.php:354
+msgid "Archives"
+msgstr "Hemeroteca"
+
+#: ../../include/widgets.php:516
+msgid "Refresh"
+msgstr "Recargar"
+
+#: ../../include/widgets.php:556
+msgid "Account settings"
+msgstr "Configuración de la cuenta"
+
+#: ../../include/widgets.php:562
+msgid "Channel settings"
+msgstr "Configuración del canal"
+
+#: ../../include/widgets.php:571
+msgid "Additional features"
+msgstr "Funcionalidades"
+
+#: ../../include/widgets.php:578
+msgid "Feature/Addon settings"
+msgstr "Complementos"
+
+#: ../../include/widgets.php:584
+msgid "Display settings"
+msgstr "Ajustes de visualización"
+
+#: ../../include/widgets.php:591
+msgid "Manage locations"
+msgstr "Gestión de ubicaciones (clones) del canal"
+
+#: ../../include/widgets.php:600
+msgid "Export channel"
+msgstr "Exportar canal"
+
+#: ../../include/widgets.php:607
+msgid "Connected apps"
+msgstr "Aplicaciones (apps) conectadas"
+
+#: ../../include/widgets.php:622
+msgid "Premium Channel Settings"
+msgstr "Configuración del canal premium"
+
+#: ../../include/widgets.php:651
+msgid "Private Mail Menu"
+msgstr "Menú de correo privado"
+
+#: ../../include/widgets.php:653
+msgid "Combined View"
+msgstr "Vista combinada"
+
+#: ../../include/widgets.php:658 ../../include/nav.php:196
+msgid "Inbox"
+msgstr "Bandeja de entrada"
+
+#: ../../include/widgets.php:663 ../../include/nav.php:197
+msgid "Outbox"
+msgstr "Bandeja de salida"
+
+#: ../../include/widgets.php:668 ../../include/nav.php:198
+msgid "New Message"
+msgstr "Nuevo mensaje"
+
+#: ../../include/widgets.php:685 ../../include/widgets.php:697
+msgid "Conversations"
+msgstr "Conversaciones"
+
+#: ../../include/widgets.php:689
+msgid "Received Messages"
+msgstr "Mensajes recibidos"
+
+#: ../../include/widgets.php:693
+msgid "Sent Messages"
+msgstr "Enviar mensajes"
+
+#: ../../include/widgets.php:707
+msgid "No messages."
+msgstr "Sin mensajes."
+
+#: ../../include/widgets.php:725
+msgid "Delete conversation"
+msgstr "Eliminar conversación"
+
+#: ../../include/widgets.php:751
+msgid "Events Menu"
+msgstr "Menú de eventos"
+
+#: ../../include/widgets.php:752
+msgid "Day View"
+msgstr "Eventos del día"
+
+#: ../../include/widgets.php:753
+msgid "Week View"
+msgstr "Eventos de la semana"
+
+#: ../../include/widgets.php:754
+msgid "Month View"
+msgstr "Eventos del mes"
+
+#: ../../include/widgets.php:766
+msgid "Events Tools"
+msgstr "Gestión de eventos"
+
+#: ../../include/widgets.php:767
+msgid "Export Calendar"
+msgstr "Exportar el calendario"
+
+#: ../../include/widgets.php:768
+msgid "Import Calendar"
+msgstr "Importar un calendario"
+
+#: ../../include/widgets.php:842 ../../include/conversation.php:1662
+#: ../../include/conversation.php:1665
+msgid "Chatrooms"
+msgstr "Salas de chat"
+
+#: ../../include/widgets.php:846
+msgid "Overview"
+msgstr "Resumen"
+
+#: ../../include/widgets.php:853
+msgid "Chat Members"
+msgstr "Miembros del chat"
+
+#: ../../include/widgets.php:876
+msgid "Bookmarked Chatrooms"
+msgstr "Salas de chat preferidas"
+
+#: ../../include/widgets.php:899
+msgid "Suggested Chatrooms"
+msgstr "Salas de chat sugeridas"
+
+#: ../../include/widgets.php:1044 ../../include/widgets.php:1156
+msgid "photo/image"
+msgstr "foto/imagen"
+
+#: ../../include/widgets.php:1099
+msgid "Click to show more"
+msgstr "Hacer clic para ver más"
+
+#: ../../include/widgets.php:1250
+msgid "Rating Tools"
+msgstr "Valoraciones"
+
+#: ../../include/widgets.php:1254 ../../include/widgets.php:1256
+msgid "Rate Me"
+msgstr "Valorar este canal"
+
+#: ../../include/widgets.php:1259
+msgid "View Ratings"
+msgstr "Mostrar las valoraciones"
+
+#: ../../include/widgets.php:1316
+msgid "Forums"
+msgstr "Foros"
+
+#: ../../include/widgets.php:1345
+msgid "Tasks"
+msgstr "Tareas"
+
+#: ../../include/widgets.php:1354
+msgid "Documentation"
+msgstr "Documentación"
+
+#: ../../include/widgets.php:1356
+msgid "Project/Site Information"
+msgstr "Información sobre el proyecto o sitio"
+
+#: ../../include/widgets.php:1357
+msgid "For Members"
+msgstr "Para los miembros"
+
+#: ../../include/widgets.php:1358
+msgid "For Administrators"
+msgstr "Para los administradores"
+
+#: ../../include/widgets.php:1359
+msgid "For Developers"
+msgstr "Para los desarrolladores"
+
+#: ../../include/widgets.php:1383 ../../include/widgets.php:1421
+msgid "Member registrations waiting for confirmation"
+msgstr "Inscripciones de nuevos miembros pendientes de aprobación"
+
+#: ../../include/widgets.php:1389
+msgid "Inspect queue"
+msgstr "Examinar la cola"
+
+#: ../../include/widgets.php:1391
+msgid "DB updates"
+msgstr "Actualizaciones de la base de datos"
+
+#: ../../include/widgets.php:1416 ../../include/nav.php:216
+msgid "Admin"
+msgstr "Administrador"
+
+#: ../../include/widgets.php:1417
+msgid "Plugin Features"
+msgstr "Extensiones"
+
+#: ../../include/follow.php:27
+msgid "Channel is blocked on this site."
+msgstr "El canal está bloqueado en este sitio."
+
+#: ../../include/follow.php:32
+msgid "Channel location missing."
+msgstr "Falta la dirección del canal."
+
+#: ../../include/follow.php:81
+msgid "Response from remote channel was incomplete."
+msgstr "Respuesta incompleta del canal."
+
+#: ../../include/follow.php:98
+msgid "Channel was deleted and no longer exists."
+msgstr "El canal ha sido eliminado y ya no existe."
+
+#: ../../include/follow.php:154 ../../include/follow.php:190
+msgid "Protocol disabled."
+msgstr "Protocolo deshabilitado."
+
+#: ../../include/follow.php:178
+msgid "Channel discovery failed."
+msgstr "El intento de acceder al canal ha fallado."
+
+#: ../../include/follow.php:216
+msgid "Cannot connect to yourself."
+msgstr "No puede conectarse consigo mismo."
+
+#: ../../include/bookmarks.php:35
+#, php-format
+msgid "%1$s's bookmarks"
+msgstr "Marcadores de %1$s"
+
+#: ../../include/api.php:1336
+msgid "Public Timeline"
+msgstr "Cronología pública"
+
+#: ../../include/bbcode.php:123 ../../include/bbcode.php:844
+#: ../../include/bbcode.php:847 ../../include/bbcode.php:852
+#: ../../include/bbcode.php:855 ../../include/bbcode.php:858
+#: ../../include/bbcode.php:861 ../../include/bbcode.php:866
+#: ../../include/bbcode.php:869 ../../include/bbcode.php:874
+#: ../../include/bbcode.php:877 ../../include/bbcode.php:880
+#: ../../include/bbcode.php:883
+msgid "Image/photo"
+msgstr "Imagen/foto"
+
+#: ../../include/bbcode.php:162 ../../include/bbcode.php:894
+msgid "Encrypted content"
+msgstr "Contenido cifrado"
+
+#: ../../include/bbcode.php:178
+#, php-format
+msgid "Install %s element: "
+msgstr "Instalar el elemento %s:"
+
+#: ../../include/bbcode.php:182
+#, php-format
+msgid ""
+"This post contains an installable %s element, however you lack permissions "
+"to install it on this site."
+msgstr "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio."
+
+#: ../../include/bbcode.php:254
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s escribió %2$s siguiente %3$s"
+
+#: ../../include/bbcode.php:331 ../../include/bbcode.php:339
+msgid "Click to open/close"
+msgstr "Pulsar para abrir/cerrar"
+
+#: ../../include/bbcode.php:339
+msgid "spoiler"
+msgstr "spoiler"
+
+#: ../../include/bbcode.php:585
+msgid "Different viewers will see this text differently"
+msgstr "Visitantes diferentes verán este texto de forma distinta"
+
+#: ../../include/bbcode.php:832
+msgid "$1 wrote:"
+msgstr "$1 escribió:"
+
+#: ../../include/dir_fns.php:141
+msgid "Directory Options"
+msgstr "Opciones del directorio"
+
+#: ../../include/dir_fns.php:143
+msgid "Safe Mode"
+msgstr "Modo seguro"
+
+#: ../../include/dir_fns.php:144
+msgid "Public Forums Only"
+msgstr "Solo foros públicos"
+
+#: ../../include/dir_fns.php:145
+msgid "This Website Only"
+msgstr "Solo este sitio web"
+
+#: ../../include/security.php:383
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado"
+
+#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1702
+msgid "Logout"
+msgstr "Finalizar sesión"
+
+#: ../../include/nav.php:82 ../../include/nav.php:113
+msgid "End this session"
+msgstr "Finalizar esta sesión"
+
+#: ../../include/nav.php:85 ../../include/nav.php:144
+msgid "Home"
+msgstr "Inicio"
+
+#: ../../include/nav.php:85
+msgid "Your posts and conversations"
+msgstr "Sus publicaciones y conversaciones"
+
+#: ../../include/nav.php:86
+msgid "Your profile page"
+msgstr "Su página del perfil"
+
+#: ../../include/nav.php:88
+msgid "Manage/Edit profiles"
+msgstr "Administrar/editar perfiles"
+
+#: ../../include/nav.php:90 ../../include/channel.php:941
+msgid "Edit Profile"
+msgstr "Editar el perfil"
+
+#: ../../include/nav.php:90
+msgid "Edit your profile"
+msgstr "Editar su perfil"
+
+#: ../../include/nav.php:92
+msgid "Your photos"
+msgstr "Sus fotos"
+
+#: ../../include/nav.php:93
+msgid "Your files"
+msgstr "Sus ficheros"
+
+#: ../../include/nav.php:96
+msgid "Your chatrooms"
+msgstr "Sus salas de chat"
+
+#: ../../include/nav.php:102 ../../include/conversation.php:1675
msgid "Bookmarks"
msgstr "Marcadores"
-#: ../../include/apps.php:130
-msgid "Address Book"
-msgstr "Libreta de direcciones"
+#: ../../include/nav.php:102
+msgid "Your bookmarks"
+msgstr "Sus marcadores"
-#: ../../include/apps.php:131 ../../include/nav.php:110 ../../boot.php:1615
-msgid "Login"
-msgstr "Iniciar sesión"
+#: ../../include/nav.php:106
+msgid "Your webpages"
+msgstr "Sus páginas web"
-#: ../../include/apps.php:133 ../../include/nav.php:179
-msgid "Grid"
-msgstr "Red"
+#: ../../include/nav.php:110
+msgid "Sign in"
+msgstr "Acceder"
-#: ../../include/apps.php:137 ../../include/nav.php:182
-msgid "Channel Home"
+#: ../../include/nav.php:127
+#, php-format
+msgid "%s - click to logout"
+msgstr "%s - pulsar para finalizar sesión"
+
+#: ../../include/nav.php:130
+msgid "Remote authentication"
+msgstr "Acceder desde su servidor"
+
+#: ../../include/nav.php:130
+msgid "Click to authenticate to your home hub"
+msgstr "Pulsar para identificarse en su servidor de inicio"
+
+#: ../../include/nav.php:144
+msgid "Home Page"
+msgstr "Página de inicio"
+
+#: ../../include/nav.php:147
+msgid "Create an account"
+msgstr "Crear una cuenta"
+
+#: ../../include/nav.php:159
+msgid "Help and documentation"
+msgstr "Ayuda y documentación"
+
+#: ../../include/nav.php:163
+msgid "Applications, utilities, links, games"
+msgstr "Aplicaciones, utilidades, enlaces, juegos"
+
+#: ../../include/nav.php:165
+msgid "Search site @name, #tag, ?docs, content"
+msgstr "Buscar en el sitio por @nombre, #etiqueta, ?ayuda o contenido"
+
+#: ../../include/nav.php:167
+msgid "Channel Directory"
+msgstr "Directorio de canales"
+
+#: ../../include/nav.php:179
+msgid "Your grid"
+msgstr "Mi red"
+
+#: ../../include/nav.php:180
+msgid "Mark all grid notifications seen"
+msgstr "Marcar todas las notificaciones de la red como vistas"
+
+#: ../../include/nav.php:182
+msgid "Channel home"
msgstr "Mi canal"
-#: ../../include/apps.php:140 ../../include/conversation.php:1667
-#: ../../include/conversation.php:1670 ../../include/nav.php:201
-msgid "Events"
-msgstr "Eventos"
+#: ../../include/nav.php:183
+msgid "Mark all channel notifications seen"
+msgstr "Marcar todas las notificaciones del canal como leídas"
-#: ../../include/apps.php:141 ../../include/nav.php:167
-msgid "Directory"
-msgstr "Directorio"
+#: ../../include/nav.php:189
+msgid "Notices"
+msgstr "Avisos"
-#: ../../include/apps.php:143 ../../include/nav.php:193
-msgid "Mail"
-msgstr "Correo"
+#: ../../include/nav.php:189
+msgid "Notifications"
+msgstr "Notificaciones"
-#: ../../include/apps.php:146 ../../include/nav.php:96
-msgid "Chat"
-msgstr "Chat"
+#: ../../include/nav.php:190
+msgid "See all notifications"
+msgstr "Ver todas las notificaciones"
-#: ../../include/apps.php:148
-msgid "Probe"
-msgstr "Probar"
+#: ../../include/nav.php:193
+msgid "Private mail"
+msgstr "Correo privado"
-#: ../../include/apps.php:149
-msgid "Suggest"
-msgstr "Sugerir"
+#: ../../include/nav.php:194
+msgid "See all private messages"
+msgstr "Ver todas los mensajes privados"
-#: ../../include/apps.php:150
-msgid "Random Channel"
-msgstr "Canal aleatorio"
+#: ../../include/nav.php:195
+msgid "Mark all private messages seen"
+msgstr "Marcar todos los mensajes privados como leídos"
-#: ../../include/apps.php:151
-msgid "Invite"
-msgstr "Invitar"
+#: ../../include/nav.php:201
+msgid "Event Calendar"
+msgstr "Calendario de eventos"
-#: ../../include/apps.php:152 ../../include/widgets.php:1338
-msgid "Features"
-msgstr "Funcionalidades"
+#: ../../include/nav.php:202
+msgid "See all events"
+msgstr "Ver todos los eventos"
-#: ../../include/apps.php:154
-msgid "Post"
-msgstr "Publicación"
+#: ../../include/nav.php:203
+msgid "Mark all events seen"
+msgstr "Marcar todos los eventos como leidos"
-#: ../../include/apps.php:252
-msgid "Install"
-msgstr "Instalar"
+#: ../../include/nav.php:206
+msgid "Manage Your Channels"
+msgstr "Gestionar sus canales"
-#: ../../include/apps.php:257
-msgid "Purchase"
-msgstr "Comprar"
+#: ../../include/nav.php:208
+msgid "Account/Channel Settings"
+msgstr "Ajustes de cuenta/canales"
-#: ../../include/import.php:23
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "No se ha podido crear un canal con un identificador que ya existe en este sistema. La importación ha fallado."
+#: ../../include/nav.php:216
+msgid "Site Setup and Configuration"
+msgstr "Ajustes y configuración del sitio"
-#: ../../include/import.php:70
-msgid "Channel clone failed. Import failed."
-msgstr "La clonación del canal no ha salido bien. La importación ha fallado."
+#: ../../include/nav.php:247 ../../include/conversation.php:851
+msgid "Loading..."
+msgstr "Cargando..."
-#: ../../include/bb2diaspora.php:398
-msgid "Attachments:"
-msgstr "Ficheros adjuntos:"
+#: ../../include/nav.php:252
+msgid "@name, #tag, ?doc, content"
+msgstr "@nombre, #etiqueta, ?ayuda, contenido"
-#: ../../include/bb2diaspora.php:489
-msgid "$Projectname event notification:"
-msgstr "Notificación de eventos de $Projectname:"
+#: ../../include/nav.php:253
+msgid "Please wait..."
+msgstr "Espere por favor…"
+
+#: ../../include/connections.php:95
+msgid "New window"
+msgstr "Nueva ventana"
+
+#: ../../include/connections.php:96
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Abrir la dirección seleccionada en una ventana o pestaña aparte"
+
+#: ../../include/connections.php:214
+#, php-format
+msgid "User '%s' deleted"
+msgstr "El usuario '%s' ha sido eliminado"
+
+#: ../../include/contact_widgets.php:11
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "%d invitación pendiente"
+msgstr[1] "%d invitaciones disponibles"
+
+#: ../../include/contact_widgets.php:19
+msgid "Find Channels"
+msgstr "Encontrar canales"
+
+#: ../../include/contact_widgets.php:20
+msgid "Enter name or interest"
+msgstr "Introducir nombre o interés"
+
+#: ../../include/contact_widgets.php:21
+msgid "Connect/Follow"
+msgstr "Conectar/Seguir"
+
+#: ../../include/contact_widgets.php:22
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "Ejemplos: José Fernández, Pesca"
+
+#: ../../include/contact_widgets.php:26
+msgid "Random Profile"
+msgstr "Perfil aleatorio"
+
+#: ../../include/contact_widgets.php:27
+msgid "Invite Friends"
+msgstr "Invitar a amigos"
+
+#: ../../include/contact_widgets.php:29
+msgid "Advanced example: name=fred and country=iceland"
+msgstr "Ejemplo avanzado: nombre=juan y país=españa"
+
+#: ../../include/contact_widgets.php:122
+#, php-format
+msgid "%d connection in common"
+msgid_plural "%d connections in common"
+msgstr[0] "%d conexión en común"
+msgstr[1] "%d conexiones en común"
+
+#: ../../include/contact_widgets.php:127
+msgid "show more"
+msgstr "mostrar más"
#: ../../include/conversation.php:204
#, php-format
@@ -7452,463 +7838,626 @@ msgstr "Archivado bajo:"
msgid "View in context"
msgstr "Mostrar en su contexto"
-#: ../../include/conversation.php:850
+#: ../../include/conversation.php:847
msgid "remove"
msgstr "eliminar"
-#: ../../include/conversation.php:854 ../../include/nav.php:247
-msgid "Loading..."
-msgstr "Cargando..."
-
-#: ../../include/conversation.php:855
+#: ../../include/conversation.php:852
msgid "Delete Selected Items"
msgstr "Eliminar elementos seleccionados"
-#: ../../include/conversation.php:953
+#: ../../include/conversation.php:948
msgid "View Source"
-msgstr "Ver la fuente original de la publicación"
+msgstr "Ver el código fuente de la entrada"
-#: ../../include/conversation.php:954
+#: ../../include/conversation.php:949
msgid "Follow Thread"
msgstr "Seguir este hilo"
-#: ../../include/conversation.php:955
+#: ../../include/conversation.php:950
msgid "Unfollow Thread"
msgstr "Dejar de seguir este hilo"
-#: ../../include/conversation.php:960
+#: ../../include/conversation.php:955
msgid "Activity/Posts"
msgstr "Actividad y publicaciones"
-#: ../../include/conversation.php:962
+#: ../../include/conversation.php:957
msgid "Edit Connection"
msgstr "Editar conexión"
-#: ../../include/conversation.php:963
+#: ../../include/conversation.php:958
msgid "Message"
msgstr "Mensaje"
-#: ../../include/conversation.php:1080
+#: ../../include/conversation.php:1075
#, php-format
msgid "%s likes this."
msgstr "A %s le gusta esto."
-#: ../../include/conversation.php:1080
+#: ../../include/conversation.php:1075
#, php-format
msgid "%s doesn't like this."
msgstr "A %s no le gusta esto."
-#: ../../include/conversation.php:1084
+#: ../../include/conversation.php:1079
#, php-format
msgid "<span %1$s>%2$d people</span> like this."
msgid_plural "<span %1$s>%2$d people</span> like this."
msgstr[0] "a <span %1$s>%2$d personas</span> le gusta esto."
msgstr[1] "A <span %1$s>%2$d personas</span> les gusta esto."
-#: ../../include/conversation.php:1086
+#: ../../include/conversation.php:1081
#, php-format
msgid "<span %1$s>%2$d people</span> don't like this."
msgid_plural "<span %1$s>%2$d people</span> don't like this."
msgstr[0] "a <span %1$s>%2$d personas</span> no les gusta esto."
msgstr[1] "A <span %1$s>%2$d personas</span> no les gusta esto."
-#: ../../include/conversation.php:1092
+#: ../../include/conversation.php:1087
msgid "and"
msgstr "y"
-#: ../../include/conversation.php:1095
+#: ../../include/conversation.php:1090
#, php-format
msgid ", and %d other people"
msgid_plural ", and %d other people"
msgstr[0] ", y %d persona más"
msgstr[1] ", y %d personas más"
-#: ../../include/conversation.php:1096
+#: ../../include/conversation.php:1091
#, php-format
msgid "%s like this."
msgstr "A %s le gusta esto."
-#: ../../include/conversation.php:1096
+#: ../../include/conversation.php:1091
#, php-format
msgid "%s don't like this."
msgstr "A %s no le gusta esto."
-#: ../../include/conversation.php:1169
-msgid "Visible to <strong>everybody</strong>"
-msgstr "Visible para <strong>cualquiera</strong>"
-
-#: ../../include/conversation.php:1171
-msgid "Please enter a video link/URL:"
-msgstr "Por favor, introduzca un enlace de vídeo:"
+#: ../../include/conversation.php:1130
+msgid "Set your location"
+msgstr "Establecer su ubicación"
-#: ../../include/conversation.php:1172
-msgid "Please enter an audio link/URL:"
-msgstr "Por favor, introduzca un enlace de audio:"
+#: ../../include/conversation.php:1131
+msgid "Clear browser location"
+msgstr "Eliminar los datos de localización geográfica del navegador"
-#: ../../include/conversation.php:1173
+#: ../../include/conversation.php:1177
msgid "Tag term:"
msgstr "Término de la etiqueta:"
-#: ../../include/conversation.php:1175
+#: ../../include/conversation.php:1178
msgid "Where are you right now?"
msgstr "¿Donde está ahora?"
-#: ../../include/conversation.php:1211
+#: ../../include/conversation.php:1210
msgid "Page link name"
msgstr "Nombre del enlace de la página"
-#: ../../include/conversation.php:1214
+#: ../../include/conversation.php:1213
msgid "Post as"
msgstr "Publicar como"
-#: ../../include/conversation.php:1222
-msgid "upload photo"
-msgstr "subir foto"
-
-#: ../../include/conversation.php:1224
-msgid "attach file"
-msgstr "adjuntar fichero"
-
-#: ../../include/conversation.php:1226
-msgid "web link"
-msgstr "enlace web"
-
-#: ../../include/conversation.php:1227
-msgid "Insert video link"
-msgstr "Insertar enlace de vídeo"
-
-#: ../../include/conversation.php:1228
-msgid "video link"
-msgstr "enlace de vídeo"
-
-#: ../../include/conversation.php:1229
-msgid "Insert audio link"
-msgstr "Insertar enlace de audio"
-
-#: ../../include/conversation.php:1230
-msgid "audio link"
-msgstr "enlace de audio"
-
-#: ../../include/conversation.php:1232
-msgid "set location"
-msgstr "establecer ubicación"
-
-#: ../../include/conversation.php:1237
-msgid "clear location"
-msgstr "borrar los datos de ubicación"
+#: ../../include/conversation.php:1223
+msgid "Toggle voting"
+msgstr "Cambiar votación"
-#: ../../include/conversation.php:1246
-msgid "permissions"
-msgstr "permisos"
+#: ../../include/conversation.php:1231
+msgid "Categories (optional, comma-separated list)"
+msgstr "Categorías (opcional, lista separada por comas)"
-#: ../../include/conversation.php:1272
+#: ../../include/conversation.php:1254
msgid "Set publish date"
msgstr "Establecer la fecha de publicación"
-#: ../../include/conversation.php:1521
+#: ../../include/conversation.php:1258
+msgid "OK"
+msgstr "OK"
+
+#: ../../include/conversation.php:1503
msgid "Discover"
msgstr "Descubrir"
-#: ../../include/conversation.php:1524
+#: ../../include/conversation.php:1506
msgid "Imported public streams"
msgstr "Contenidos públicos importados"
-#: ../../include/conversation.php:1529
+#: ../../include/conversation.php:1511
msgid "Commented Order"
msgstr "Comentarios recientes"
-#: ../../include/conversation.php:1532
+#: ../../include/conversation.php:1514
msgid "Sort by Comment Date"
msgstr "Ordenar por fecha de comentario"
-#: ../../include/conversation.php:1536
+#: ../../include/conversation.php:1518
msgid "Posted Order"
msgstr "Publicaciones recientes"
-#: ../../include/conversation.php:1539
+#: ../../include/conversation.php:1521
msgid "Sort by Post Date"
msgstr "Ordenar por fecha de publicación"
-#: ../../include/conversation.php:1547
+#: ../../include/conversation.php:1529
msgid "Posts that mention or involve you"
msgstr "Publicaciones que le mencionan o involucran"
-#: ../../include/conversation.php:1556
+#: ../../include/conversation.php:1538
msgid "Activity Stream - by date"
msgstr "Contenido - por fecha"
-#: ../../include/conversation.php:1562
+#: ../../include/conversation.php:1544
msgid "Starred"
msgstr "Preferidas"
-#: ../../include/conversation.php:1565
+#: ../../include/conversation.php:1547
msgid "Favourite Posts"
msgstr "Publicaciones favoritas"
-#: ../../include/conversation.php:1572
+#: ../../include/conversation.php:1554
msgid "Spam"
msgstr "Correo basura"
-#: ../../include/conversation.php:1575
+#: ../../include/conversation.php:1557
msgid "Posts flagged as SPAM"
msgstr "Publicaciones marcadas como basura"
-#: ../../include/conversation.php:1632
+#: ../../include/conversation.php:1614
msgid "Status Messages and Posts"
msgstr "Mensajes de estado y publicaciones"
-#: ../../include/conversation.php:1641
+#: ../../include/conversation.php:1623
msgid "About"
msgstr "Mi perfil"
-#: ../../include/conversation.php:1644
+#: ../../include/conversation.php:1626
msgid "Profile Details"
msgstr "Detalles del perfil"
-#: ../../include/conversation.php:1653 ../../include/photos.php:506
+#: ../../include/conversation.php:1635 ../../include/photos.php:502
msgid "Photo Albums"
msgstr "Ãlbumes de fotos"
-#: ../../include/conversation.php:1660
+#: ../../include/conversation.php:1642
msgid "Files and Storage"
msgstr "Ficheros y repositorio"
-#: ../../include/conversation.php:1681 ../../include/conversation.php:1684
-#: ../../include/widgets.php:794
-msgid "Chatrooms"
-msgstr "Salas de chat"
-
-#: ../../include/conversation.php:1697
+#: ../../include/conversation.php:1678
msgid "Saved Bookmarks"
msgstr "Marcadores guardados"
-#: ../../include/conversation.php:1707
+#: ../../include/conversation.php:1688
msgid "Manage Webpages"
msgstr "Administrar páginas web"
-#: ../../include/conversation.php:1766
+#: ../../include/conversation.php:1747
msgctxt "noun"
msgid "Attending"
msgid_plural "Attending"
msgstr[0] "Participaré"
msgstr[1] "Participaré"
-#: ../../include/conversation.php:1769
+#: ../../include/conversation.php:1750
msgctxt "noun"
msgid "Not Attending"
msgid_plural "Not Attending"
msgstr[0] "No participaré"
msgstr[1] "No participaré"
-#: ../../include/conversation.php:1772
+#: ../../include/conversation.php:1753
msgctxt "noun"
msgid "Undecided"
msgid_plural "Undecided"
msgstr[0] "Indeciso/a"
msgstr[1] "Indecisos/as"
-#: ../../include/conversation.php:1775
+#: ../../include/conversation.php:1756
msgctxt "noun"
msgid "Agree"
msgid_plural "Agrees"
msgstr[0] "De acuerdo"
msgstr[1] "De acuerdo"
-#: ../../include/conversation.php:1778
+#: ../../include/conversation.php:1759
msgctxt "noun"
msgid "Disagree"
msgid_plural "Disagrees"
msgstr[0] "En desacuerdo"
msgstr[1] "En desacuerdo"
-#: ../../include/conversation.php:1781
+#: ../../include/conversation.php:1762
msgctxt "noun"
msgid "Abstain"
msgid_plural "Abstains"
msgstr[0] "se abstiene"
msgstr[1] "Se abstienen"
-#: ../../include/bookmarks.php:35
-#, php-format
-msgid "%1$s's bookmarks"
-msgstr "Marcadores de %1$s"
+#: ../../include/selectors.php:30
+msgid "Frequently"
+msgstr "Frecuentemente"
-#: ../../include/chat.php:23
-msgid "Missing room name"
-msgstr "Sala de chat sin nombre"
+#: ../../include/selectors.php:31
+msgid "Hourly"
+msgstr "Cada hora"
-#: ../../include/chat.php:32
-msgid "Duplicate room name"
-msgstr "Nombre de sala duplicado."
+#: ../../include/selectors.php:32
+msgid "Twice daily"
+msgstr "Dos veces al día"
-#: ../../include/chat.php:82 ../../include/chat.php:90
-msgid "Invalid room specifier."
-msgstr "Especificador de sala no válido."
+#: ../../include/selectors.php:33
+msgid "Daily"
+msgstr "Diariamente"
-#: ../../include/chat.php:122
-msgid "Room not found."
-msgstr "Sala no encontrada."
+#: ../../include/selectors.php:34
+msgid "Weekly"
+msgstr "Semanalmente"
-#: ../../include/chat.php:143
-msgid "Room is full"
-msgstr "La sala está llena."
+#: ../../include/selectors.php:35
+msgid "Monthly"
+msgstr "Mensualmente"
-#: ../../include/Contact.php:118
-msgid "New window"
-msgstr "Nueva ventana"
+#: ../../include/selectors.php:49
+msgid "Currently Male"
+msgstr "Actualmente hombre"
-#: ../../include/Contact.php:119
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Abrir la dirección seleccionada en una ventana o pestaña aparte"
+#: ../../include/selectors.php:49
+msgid "Currently Female"
+msgstr "Actualmente mujer"
-#: ../../include/Contact.php:237
-#, php-format
-msgid "User '%s' deleted"
-msgstr "El usuario '%s' ha sido eliminado"
+#: ../../include/selectors.php:49
+msgid "Mostly Male"
+msgstr "Generalmente hombre"
-#: ../../include/auth.php:105
-msgid "Logged out."
-msgstr "Desconectado/a."
+#: ../../include/selectors.php:49
+msgid "Mostly Female"
+msgstr "Generalmente mujer"
-#: ../../include/auth.php:212
-msgid "Failed authentication"
-msgstr "Autenticación fallida."
+#: ../../include/selectors.php:49
+msgid "Transgender"
+msgstr "Transgénero"
-#: ../../include/security.php:383
-msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado"
+#: ../../include/selectors.php:49
+msgid "Intersex"
+msgstr "Intersexual"
-#: ../../include/api.php:1338
-msgid "Public Timeline"
-msgstr "Cronología pública"
+#: ../../include/selectors.php:49
+msgid "Transsexual"
+msgstr "Transexual"
-#: ../../include/contact_selectors.php:56
-msgid "Frequently"
-msgstr "Frecuentemente"
+#: ../../include/selectors.php:49
+msgid "Hermaphrodite"
+msgstr "Hermafrodita"
-#: ../../include/contact_selectors.php:57
-msgid "Hourly"
-msgstr "Cada hora"
+#: ../../include/selectors.php:49
+msgid "Neuter"
+msgstr "Neutral"
-#: ../../include/contact_selectors.php:58
-msgid "Twice daily"
-msgstr "Dos veces al día"
+#: ../../include/selectors.php:49
+msgid "Non-specific"
+msgstr "No especificado"
-#: ../../include/contact_selectors.php:59
-msgid "Daily"
-msgstr "Diariamente"
+#: ../../include/selectors.php:49 ../../include/selectors.php:66
+#: ../../include/selectors.php:104 ../../include/selectors.php:140
+#: ../../include/permissions.php:881
+msgid "Other"
+msgstr "Otro"
-#: ../../include/contact_selectors.php:60
-msgid "Weekly"
-msgstr "Semanalmente"
+#: ../../include/selectors.php:49
+msgid "Undecided"
+msgstr "Indeciso/a"
-#: ../../include/contact_selectors.php:61
-msgid "Monthly"
-msgstr "Mensualmente"
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Males"
+msgstr "Hombres"
-#: ../../include/contact_selectors.php:76
-#: ../../include/contact_selectors.php:77
-msgid "Friendica"
-msgstr "Friendica"
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Females"
+msgstr "Mujeres"
-#: ../../include/contact_selectors.php:78
-msgid "OStatus"
-msgstr "OStatus"
+#: ../../include/selectors.php:85
+msgid "Gay"
+msgstr "Homosexual"
-#: ../../include/contact_selectors.php:79
-msgid "GNU-Social"
-msgstr "GNU Social"
+#: ../../include/selectors.php:85
+msgid "Lesbian"
+msgstr "Lesbiana"
-#: ../../include/contact_selectors.php:80
-msgid "RSS/Atom"
-msgstr "RSS/Atom"
+#: ../../include/selectors.php:85
+msgid "No Preference"
+msgstr "Sin preferencias"
-#: ../../include/contact_selectors.php:82
-msgid "Diaspora"
-msgstr "Diaspora"
+#: ../../include/selectors.php:85
+msgid "Bisexual"
+msgstr "Bisexual"
-#: ../../include/contact_selectors.php:83
-msgid "Facebook"
-msgstr "Facebook"
+#: ../../include/selectors.php:85
+msgid "Autosexual"
+msgstr "Autosexual"
-#: ../../include/contact_selectors.php:84
-msgid "Zot"
-msgstr "Zot"
+#: ../../include/selectors.php:85
+msgid "Abstinent"
+msgstr "Casto/a"
-#: ../../include/contact_selectors.php:85
-msgid "LinkedIn"
-msgstr "LinkedIn"
+#: ../../include/selectors.php:85
+msgid "Virgin"
+msgstr "Virgen"
-#: ../../include/contact_selectors.php:86
-msgid "XMPP/IM"
-msgstr "XMPP/IM"
+#: ../../include/selectors.php:85
+msgid "Deviant"
+msgstr "Fuera de lo común"
-#: ../../include/contact_selectors.php:87
-msgid "MySpace"
-msgstr "MySpace"
+#: ../../include/selectors.php:85
+msgid "Fetish"
+msgstr "Fetichista"
+
+#: ../../include/selectors.php:85
+msgid "Oodles"
+msgstr "Orgías"
+
+#: ../../include/selectors.php:85
+msgid "Nonsexual"
+msgstr "Asexual"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Single"
+msgstr "Soltero/a"
+
+#: ../../include/selectors.php:123
+msgid "Lonely"
+msgstr "Solo/a"
+
+#: ../../include/selectors.php:123
+msgid "Available"
+msgstr "Disponible"
+
+#: ../../include/selectors.php:123
+msgid "Unavailable"
+msgstr "No disponible"
+
+#: ../../include/selectors.php:123
+msgid "Has crush"
+msgstr "Enamorado/a"
+
+#: ../../include/selectors.php:123
+msgid "Infatuated"
+msgstr "Apasionado/a"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Dating"
+msgstr "Saliendo con alguien"
+
+#: ../../include/selectors.php:123
+msgid "Unfaithful"
+msgstr "Infiel"
+
+#: ../../include/selectors.php:123
+msgid "Sex Addict"
+msgstr "Con adicción al sexo"
+
+#: ../../include/selectors.php:123
+msgid "Friends/Benefits"
+msgstr "Amigos con algo extra"
+
+#: ../../include/selectors.php:123
+msgid "Casual"
+msgstr "Casual"
+
+#: ../../include/selectors.php:123
+msgid "Engaged"
+msgstr "Prometido/a"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Married"
+msgstr "Casado/a"
+
+#: ../../include/selectors.php:123
+msgid "Imaginarily married"
+msgstr "Casado/a en sueños"
+
+#: ../../include/selectors.php:123
+msgid "Partners"
+msgstr "Pareja"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Cohabiting"
+msgstr "Cohabitando"
+
+#: ../../include/selectors.php:123
+msgid "Common law"
+msgstr "Matrimonio tradicional"
+
+#: ../../include/selectors.php:123
+msgid "Happy"
+msgstr "Felíz"
+
+#: ../../include/selectors.php:123
+msgid "Not looking"
+msgstr "No estoy buscando"
+
+#: ../../include/selectors.php:123
+msgid "Swinger"
+msgstr "Libertino"
+
+#: ../../include/selectors.php:123
+msgid "Betrayed"
+msgstr "Engañado/a"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Separated"
+msgstr "Separado/a"
+
+#: ../../include/selectors.php:123
+msgid "Unstable"
+msgstr "Inestable"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Divorced"
+msgstr "Divorciado/a"
-#: ../../include/contact_widgets.php:14
+#: ../../include/selectors.php:123
+msgid "Imaginarily divorced"
+msgstr "Divorciado/a en sueños"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Widowed"
+msgstr "Viudo/a"
+
+#: ../../include/selectors.php:123
+msgid "Uncertain"
+msgstr "Indeterminado"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "It's complicated"
+msgstr "Es complicado"
+
+#: ../../include/selectors.php:123
+msgid "Don't care"
+msgstr "No me importa"
+
+#: ../../include/selectors.php:123
+msgid "Ask me"
+msgstr "Pregúnteme"
+
+#: ../../include/PermissionDescription.php:31
+#: ../../include/acl_selectors.php:232
+msgid "Visible to your default audience"
+msgstr "Visible para su público predeterminado."
+
+#: ../../include/PermissionDescription.php:115
+#: ../../include/acl_selectors.php:268
+msgid "Only me"
+msgstr "Sólo yo"
+
+#: ../../include/PermissionDescription.php:116
+msgid "Public"
+msgstr "Público"
+
+#: ../../include/PermissionDescription.php:117
+msgid "Anybody in the $Projectname network"
+msgstr "Cualquiera en la red $Projectname"
+
+#: ../../include/PermissionDescription.php:118
#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "%d invitación pendiente"
-msgstr[1] "%d invitaciones disponibles"
+msgid "Any account on %s"
+msgstr "Cualquier cuenta en %s"
-#: ../../include/contact_widgets.php:22
-msgid "Find Channels"
-msgstr "Encontrar canales"
+#: ../../include/PermissionDescription.php:119
+msgid "Any of my connections"
+msgstr "Cualquiera de mis conexiones"
-#: ../../include/contact_widgets.php:23
-msgid "Enter name or interest"
-msgstr "Introducir nombre o interés"
+#: ../../include/PermissionDescription.php:120
+msgid "Only connections I specifically allow"
+msgstr "Sólo las conexiones que yo permita de forma explícita"
-#: ../../include/contact_widgets.php:24
-msgid "Connect/Follow"
-msgstr "Conectar/Seguir"
+#: ../../include/PermissionDescription.php:121
+msgid "Anybody authenticated (could include visitors from other networks)"
+msgstr "Cualquiera que esté autenticado (podría incluir a los visitantes de otras redes)"
-#: ../../include/contact_widgets.php:25
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Ejemplos: José Fernández, Pesca"
+#: ../../include/PermissionDescription.php:122
+msgid "Any connections including those who haven't yet been approved"
+msgstr "Cualquier conexión incluyendo aquellas que aún no han sido aprobadas"
-#: ../../include/contact_widgets.php:29
-msgid "Random Profile"
-msgstr "Perfil aleatorio"
+#: ../../include/PermissionDescription.php:161
+msgid ""
+"This is your default setting for the audience of your normal stream, and "
+"posts."
+msgstr "Esta es la configuración predeterminada para su flujo (stream) habitual de publicaciones."
-#: ../../include/contact_widgets.php:30
-msgid "Invite Friends"
-msgstr "Invitar a amigos"
+#: ../../include/PermissionDescription.php:162
+msgid ""
+"This is your default setting for who can view your default channel profile"
+msgstr "Esta es su configuración por defecto para establecer quién puede ver su perfil del canal predeterminado"
-#: ../../include/contact_widgets.php:32
-msgid "Advanced example: name=fred and country=iceland"
-msgstr "Ejemplo avanzado: nombre=juan y país=españa"
+#: ../../include/PermissionDescription.php:163
+msgid "This is your default setting for who can view your connections"
+msgstr "Este es su ajuste predeterminado para establecer quién puede ver sus conexiones"
-#: ../../include/contact_widgets.php:57 ../../include/features.php:97
-#: ../../include/widgets.php:310
-msgid "Saved Folders"
-msgstr "Carpetas guardadas"
+#: ../../include/PermissionDescription.php:164
+msgid ""
+"This is your default setting for who can view your file storage and photos"
+msgstr "Este es su ajuste predeterminado para establecer quién puede ver su repositorio de ficheros y sus fotos"
-#: ../../include/contact_widgets.php:60 ../../include/contact_widgets.php:98
-#: ../../include/widgets.php:313
-msgid "Everything"
-msgstr "Todo"
+#: ../../include/PermissionDescription.php:165
+msgid "This is your default setting for the audience of your webpages"
+msgstr "Este es el ajuste predeterminado para establecer la audiencia de sus páginas web"
-#: ../../include/contact_widgets.php:95 ../../include/widgets.php:46
-#: ../../include/taxonomy.php:282
-msgid "Categories"
-msgstr "Categorías"
+#: ../../include/account.php:28
+msgid "Not a valid email address"
+msgstr "Dirección de correo no válida"
+
+#: ../../include/account.php:30
+msgid "Your email domain is not among those allowed on this site"
+msgstr "Su dirección de correo no pertenece a ninguno de los dominios permitidos en este sitio."
+
+#: ../../include/account.php:36
+msgid "Your email address is already registered at this site."
+msgstr "Su dirección de correo está ya registrada en este sitio."
+
+#: ../../include/account.php:68
+msgid "An invitation is required."
+msgstr "Es obligatorio que le inviten."
-#: ../../include/contact_widgets.php:128
+#: ../../include/account.php:72
+msgid "Invitation could not be verified."
+msgstr "No se ha podido verificar su invitación."
+
+#: ../../include/account.php:122
+msgid "Please enter the required information."
+msgstr "Por favor introduzca la información requerida."
+
+#: ../../include/account.php:189
+msgid "Failed to store account information."
+msgstr "La información de la cuenta no se ha podido guardar."
+
+#: ../../include/account.php:249
#, php-format
-msgid "%d connection in common"
-msgid_plural "%d connections in common"
-msgstr[0] "%d conexión en común"
-msgstr[1] "%d conexiones en común"
+msgid "Registration confirmation for %s"
+msgstr "Confirmación de registro para %s"
-#: ../../include/contact_widgets.php:133
-msgid "show more"
-msgstr "mostrar más"
+#: ../../include/account.php:315
+#, php-format
+msgid "Registration request at %s"
+msgstr "Solicitud de registro en %s"
+
+#: ../../include/account.php:317 ../../include/account.php:344
+#: ../../include/account.php:404 ../../include/network.php:1871
+msgid "Administrator"
+msgstr "Administrador"
+
+#: ../../include/account.php:339
+msgid "your registration password"
+msgstr "su contraseña de registro"
+
+#: ../../include/account.php:342 ../../include/account.php:402
+#, php-format
+msgid "Registration details for %s"
+msgstr "Detalles del registro de %s"
+
+#: ../../include/account.php:414
+msgid "Account approved."
+msgstr "Cuenta aprobada."
+
+#: ../../include/account.php:454
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Registro revocado para %s"
+
+#: ../../include/account.php:506
+msgid "Account verified. Please login."
+msgstr "Cuenta verificada. Por favor, inicie sesión."
+
+#: ../../include/account.php:723 ../../include/account.php:725
+msgid "Click here to upgrade."
+msgstr "Pulse aquí para actualizar"
+
+#: ../../include/account.php:731
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Esta acción supera los límites establecidos por su plan de suscripción "
+
+#: ../../include/account.php:736
+msgid "This action is not available under your subscription plan."
+msgstr "Esta acción no está disponible en su plan de suscripción."
#: ../../include/attach.php:247 ../../include/attach.php:333
msgid "Item was not found."
@@ -7972,326 +8521,159 @@ msgstr "el almacenamiento en la base de datos ha fallado."
msgid "Empty path"
msgstr "Ruta vacía"
-#: ../../include/datetime.php:136
-msgid "Birthday"
-msgstr "Cumpleaños"
-
-#: ../../include/datetime.php:138
-msgid "Age: "
-msgstr "Edad:"
-
-#: ../../include/datetime.php:140
-msgid "YYYY-MM-DD or MM-DD"
-msgstr "AAAA-MM-DD o MM-DD"
-
-#: ../../include/datetime.php:273 ../../boot.php:2445
-msgid "never"
-msgstr "nunca"
-
-#: ../../include/datetime.php:279
-msgid "less than a second ago"
-msgstr "hace un instante"
-
-#: ../../include/datetime.php:297
-#, php-format
-msgctxt "e.g. 22 hours ago, 1 minute ago"
-msgid "%1$d %2$s ago"
-msgstr "hace %1$d %2$s"
-
-#: ../../include/datetime.php:308
-msgctxt "relative_date"
-msgid "year"
-msgid_plural "years"
-msgstr[0] "año"
-msgstr[1] "años"
-
-#: ../../include/datetime.php:311
-msgctxt "relative_date"
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mes"
-msgstr[1] "meses"
-
-#: ../../include/datetime.php:314
-msgctxt "relative_date"
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "semana"
-msgstr[1] "semanas"
-
-#: ../../include/datetime.php:317
-msgctxt "relative_date"
-msgid "day"
-msgid_plural "days"
-msgstr[0] "día"
-msgstr[1] "días"
-
-#: ../../include/datetime.php:320
-msgctxt "relative_date"
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "hora"
-msgstr[1] "horas"
-
-#: ../../include/datetime.php:323
-msgctxt "relative_date"
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minuto"
-msgstr[1] "minutos"
-
-#: ../../include/datetime.php:326
-msgctxt "relative_date"
-msgid "second"
-msgid_plural "seconds"
-msgstr[0] "segundo"
-msgstr[1] "segundos"
-
-#: ../../include/datetime.php:563
-#, php-format
-msgid "%1$s's birthday"
-msgstr "Cumpleaños de %1$s"
-
-#: ../../include/datetime.php:564
-#, php-format
-msgid "Happy Birthday %1$s"
-msgstr "Feliz cumpleaños %1$s"
-
-#: ../../include/dir_fns.php:139
-msgid "Directory Options"
-msgstr "Opciones del directorio"
-
-#: ../../include/dir_fns.php:141
-msgid "Safe Mode"
-msgstr "Modo seguro"
-
-#: ../../include/dir_fns.php:142
-msgid "Public Forums Only"
-msgstr "Solo foros públicos"
-
-#: ../../include/dir_fns.php:143
-msgid "This Website Only"
-msgstr "Solo este sitio web"
-
-#: ../../include/enotify.php:57 ../../include/network.php:1827
-msgid "$Projectname Notification"
-msgstr "Notificación de $Projectname"
-
-#: ../../include/enotify.php:58 ../../include/network.php:1828
-msgid "$projectname"
-msgstr "$projectname"
-
-#: ../../include/enotify.php:60 ../../include/network.php:1830
-msgid "Thank You,"
-msgstr "Gracias,"
-
-#: ../../include/enotify.php:62 ../../include/network.php:1832
-#, php-format
-msgid "%s Administrator"
-msgstr "%s Administrador"
-
-#: ../../include/enotify.php:96
-#, php-format
-msgid "%s <!item_type!>"
-msgstr "%s <!item_type!>"
-
-#: ../../include/enotify.php:100
-#, php-format
-msgid "[Hubzilla:Notify] New mail received at %s"
-msgstr "[Hubzilla:Aviso] Nuevo mensaje en %s"
-
-#: ../../include/enotify.php:102
-#, php-format
-msgid "%1$s, %2$s sent you a new private message at %3$s."
-msgstr "%1$s, %2$s le ha enviado un nuevo mensaje privado en %3$s."
-
-#: ../../include/enotify.php:103
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s le ha enviado %2$s."
+#: ../../include/channel.php:32
+msgid "Unable to obtain identity information from database"
+msgstr "No ha sido posible obtener información sobre la identidad desde la base de datos"
-#: ../../include/enotify.php:103
-msgid "a private message"
-msgstr "un mensaje privado"
+#: ../../include/channel.php:66
+msgid "Empty name"
+msgstr "Nombre vacío"
-#: ../../include/enotify.php:104
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Por favor visite %s para ver y/o responder a su mensaje privado."
+#: ../../include/channel.php:69
+msgid "Name too long"
+msgstr "Nombre demasiado largo"
-#: ../../include/enotify.php:160
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
-msgstr "%1$s, %2$s ha comentado [zrl=%3$s]%4$s[/zrl]"
+#: ../../include/channel.php:180
+msgid "No account identifier"
+msgstr "Ningún identificador de la cuenta"
-#: ../../include/enotify.php:168
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
-msgstr "%1$s, %2$s ha comentado [zrl=%3$s]%5$s de %4$s[/zrl] "
+#: ../../include/channel.php:192
+msgid "Nickname is required."
+msgstr "Se requiere un sobrenombre (alias)."
-#: ../../include/enotify.php:177
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s ha comentado [zrl=%3$s]%4$s creado por usted[/zrl]"
+#: ../../include/channel.php:206
+msgid "Reserved nickname. Please choose another."
+msgstr "Sobrenombre en uso. Por favor, elija otro."
-#: ../../include/enotify.php:188
-#, php-format
-msgid "[Hubzilla:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Hubzilla:Aviso] Nuevo comentario de %2$s a la conversación #%1$d"
+#: ../../include/channel.php:211
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio."
-#: ../../include/enotify.php:189
-#, php-format
-msgid "%1$s, %2$s commented on an item/conversation you have been following."
-msgstr "%1$s, %2$s ha comentado un elemento/conversación que ha estado siguiendo."
+#: ../../include/channel.php:287
+msgid "Unable to retrieve created identity"
+msgstr "No ha sido posible recuperar la identidad creada"
-#: ../../include/enotify.php:192 ../../include/enotify.php:207
-#: ../../include/enotify.php:233 ../../include/enotify.php:251
-#: ../../include/enotify.php:265
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Para ver o comentar la conversación, visite %s"
+#: ../../include/channel.php:345
+msgid "Default Profile"
+msgstr "Perfil principal"
-#: ../../include/enotify.php:198
-#, php-format
-msgid "[Hubzilla:Notify] %s posted to your profile wall"
-msgstr "[Hubzilla:Aviso] %s ha publicado una entrada en su página de inicio del perfil (\"muro\")"
+#: ../../include/channel.php:791
+msgid "Requested channel is not available."
+msgstr "El canal solicitado no está disponible."
-#: ../../include/enotify.php:200
-#, php-format
-msgid "%1$s, %2$s posted to your profile wall at %3$s"
-msgstr "%1$s, %2$s ha publicado en su página del perfil en %3$s"
+#: ../../include/channel.php:938
+msgid "Create New Profile"
+msgstr "Crear un nuevo perfil"
-#: ../../include/enotify.php:202
-#, php-format
-msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
-msgstr "%1$s, %2$s ha publicado en [zrl=%3$s]su página del perfil[/zrl]"
+#: ../../include/channel.php:958
+msgid "Visible to everybody"
+msgstr "Visible para todos"
-#: ../../include/enotify.php:226
-#, php-format
-msgid "[Hubzilla:Notify] %s tagged you"
-msgstr "[Hubzilla:Aviso] %s le ha etiquetado"
+#: ../../include/channel.php:1031 ../../include/channel.php:1142
+msgid "Gender:"
+msgstr "Género:"
-#: ../../include/enotify.php:227
-#, php-format
-msgid "%1$s, %2$s tagged you at %3$s"
-msgstr "%1$s, %2$s le ha etiquetado en %3$s"
+#: ../../include/channel.php:1032 ../../include/channel.php:1186
+msgid "Status:"
+msgstr "Estado:"
-#: ../../include/enotify.php:228
-#, php-format
-msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%3$s]le etiquetó[/zrl]."
+#: ../../include/channel.php:1033 ../../include/channel.php:1197
+msgid "Homepage:"
+msgstr "Página personal:"
-#: ../../include/enotify.php:240
-#, php-format
-msgid "[Hubzilla:Notify] %1$s poked you"
-msgstr "[Hubzilla:Aviso] %1$s le ha dado un toque"
+#: ../../include/channel.php:1034
+msgid "Online Now"
+msgstr "Ahora en línea"
-#: ../../include/enotify.php:241
-#, php-format
-msgid "%1$s, %2$s poked you at %3$s"
-msgstr "%1$s, %2$s le ha dado un toque en %3$s"
+#: ../../include/channel.php:1147
+msgid "Like this channel"
+msgstr "Me gusta este canal"
-#: ../../include/enotify.php:242
-#, php-format
-msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%2$s]le ha dado un toque[/zrl]."
+#: ../../include/channel.php:1171
+msgid "j F, Y"
+msgstr "j F Y"
-#: ../../include/enotify.php:258
-#, php-format
-msgid "[Hubzilla:Notify] %s tagged your post"
-msgstr "[Hubzilla:Aviso] %s ha etiquetado su publicación"
+#: ../../include/channel.php:1172
+msgid "j F"
+msgstr "j F"
-#: ../../include/enotify.php:259
-#, php-format
-msgid "%1$s, %2$s tagged your post at %3$s"
-msgstr "%1$s, %2$s ha etiquetado su publicación en %3$s"
+#: ../../include/channel.php:1179
+msgid "Birthday:"
+msgstr "Cumpleaños:"
-#: ../../include/enotify.php:260
+#: ../../include/channel.php:1192
#, php-format
-msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
-msgstr "%1$s, %2$s ha etiquetado [zrl=%3$s]su publicación[/zrl]"
-
-#: ../../include/enotify.php:272
-msgid "[Hubzilla:Notify] Introduction received"
-msgstr "[Hubzilla:Aviso] Ha recibido una solicitud de conexión"
+msgid "for %1$d %2$s"
+msgstr "por %1$d %2$s"
-#: ../../include/enotify.php:273
-#, php-format
-msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
-msgstr "%1$s, ha recibido una nueva solicitud de conexión de '%2$s' en %3$s"
+#: ../../include/channel.php:1195
+msgid "Sexual Preference:"
+msgstr "Orientación sexual:"
-#: ../../include/enotify.php:274
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
-msgstr "%1$s, ha recibido [zrl=%2$s]una nueva solicitud de conexión[/zrl] de %3$s."
+#: ../../include/channel.php:1201
+msgid "Tags:"
+msgstr "Etiquetas:"
-#: ../../include/enotify.php:278 ../../include/enotify.php:297
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "Puede visitar su perfil en %s"
+#: ../../include/channel.php:1203
+msgid "Political Views:"
+msgstr "Posición política:"
-#: ../../include/enotify.php:280
-#, php-format
-msgid "Please visit %s to approve or reject the connection request."
-msgstr "Por favor, visite %s para permitir o rechazar la solicitad de conexión."
+#: ../../include/channel.php:1205
+msgid "Religion:"
+msgstr "Religión:"
-#: ../../include/enotify.php:287
-msgid "[Hubzilla:Notify] Friend suggestion received"
-msgstr "[Hubzilla:Aviso] Ha recibido una sugerencia de amistad"
+#: ../../include/channel.php:1209
+msgid "Hobbies/Interests:"
+msgstr "Aficciones o intereses:"
-#: ../../include/enotify.php:288
-#, php-format
-msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
-msgstr "%1$s, ha recibido una sugerencia de conexión de '%2$s' en %3$s"
+#: ../../include/channel.php:1211
+msgid "Likes:"
+msgstr "Me gusta:"
-#: ../../include/enotify.php:289
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
-"%4$s."
-msgstr "%1$s, ha recibido [zrl=%2$s]una sugerencia de conexión[/zrl] para %3$s de %4$s."
+#: ../../include/channel.php:1213
+msgid "Dislikes:"
+msgstr "No me gusta:"
-#: ../../include/enotify.php:295
-msgid "Name:"
-msgstr "Nombre:"
+#: ../../include/channel.php:1215
+msgid "Contact information and Social Networks:"
+msgstr "Información de contacto y redes sociales:"
-#: ../../include/enotify.php:296
-msgid "Photo:"
-msgstr "Foto:"
+#: ../../include/channel.php:1217
+msgid "My other channels:"
+msgstr "Mis otros canales:"
-#: ../../include/enotify.php:299
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Por favor, visite %s para aprobar o rechazar la sugerencia."
+#: ../../include/channel.php:1219
+msgid "Musical interests:"
+msgstr "Preferencias musicales:"
-#: ../../include/enotify.php:514
-msgid "[Hubzilla:Notify]"
-msgstr "[Hubzilla:Aviso]"
+#: ../../include/channel.php:1221
+msgid "Books, literature:"
+msgstr "Libros, literatura:"
-#: ../../include/event.php:779
-msgid "This event has been added to your calendar."
-msgstr "Este evento ha sido añadido a su calendario."
+#: ../../include/channel.php:1223
+msgid "Television:"
+msgstr "Televisión:"
-#: ../../include/event.php:978
-msgid "Not specified"
-msgstr "Sin especificar"
+#: ../../include/channel.php:1225
+msgid "Film/dance/culture/entertainment:"
+msgstr "Cine, danza, cultura, entretenimiento:"
-#: ../../include/event.php:979
-msgid "Needs Action"
-msgstr "Necesita de una intervención"
+#: ../../include/channel.php:1227
+msgid "Love/Romance:"
+msgstr "Vida sentimental o amorosa:"
-#: ../../include/event.php:980
-msgid "Completed"
-msgstr "Completado/a"
+#: ../../include/channel.php:1229
+msgid "Work/employment:"
+msgstr "Trabajo:"
-#: ../../include/event.php:981
-msgid "In Process"
-msgstr "En proceso"
+#: ../../include/channel.php:1231
+msgid "School/education:"
+msgstr "Estudios:"
-#: ../../include/event.php:982
-msgid "Cancelled"
-msgstr "Cancelado/a"
+#: ../../include/channel.php:1251
+msgid "Like this thing"
+msgstr "Me gusta esto"
#: ../../include/features.php:48
msgid "General Features"
@@ -8480,10 +8862,6 @@ msgstr "Grupos de canales"
msgid "Enable management and selection of privacy groups"
msgstr "Activar la gestión y selección de grupos de canales"
-#: ../../include/features.php:84 ../../include/widgets.php:281
-msgid "Saved Searches"
-msgstr "Búsquedas guardadas"
-
#: ../../include/features.php:84
msgid "Save search terms for re-use"
msgstr "Guardar términos de búsqueda para su reutilización"
@@ -8521,10 +8899,6 @@ msgid "Filter incoming posts from connections based on keywords/content"
msgstr "Filtrar publicaciones entrantes de conexiones por palabras clave o contenido"
#: ../../include/features.php:89
-msgid "Suggest Channels"
-msgstr "Sugerir canales"
-
-#: ../../include/features.php:89
msgid "Show channel suggestions"
msgstr "Mostrar sugerencias de canales"
@@ -8549,477 +8923,201 @@ msgid "Add categories to your posts"
msgstr "Añadir categorías a sus publicaciones"
#: ../../include/features.php:97
+msgid "Emoji Reactions"
+msgstr "Emoticonos \"emoji\""
+
+#: ../../include/features.php:97
+msgid "Add emoji reaction ability to posts"
+msgstr "Activar la capacidad de añadir un emoticono \"emoji\" a las entradas"
+
+#: ../../include/features.php:98
msgid "Ability to file posts under folders"
msgstr "Capacidad de archivar entradas en carpetas"
-#: ../../include/features.php:98
+#: ../../include/features.php:99
msgid "Dislike Posts"
msgstr "Desagrado de publicaciones"
-#: ../../include/features.php:98
+#: ../../include/features.php:99
msgid "Ability to dislike posts/comments"
msgstr "Capacidad de mostrar desacuerdo con el contenido de entradas y comentarios"
-#: ../../include/features.php:99
+#: ../../include/features.php:100
msgid "Star Posts"
msgstr "Entradas destacadas"
-#: ../../include/features.php:99
+#: ../../include/features.php:100
msgid "Ability to mark special posts with a star indicator"
msgstr "Capacidad de marcar entradas destacadas con un indicador de estrella"
-#: ../../include/features.php:100
+#: ../../include/features.php:101
msgid "Tag Cloud"
msgstr "Nube de etiquetas"
-#: ../../include/features.php:100
+#: ../../include/features.php:101
msgid "Provide a personal tag cloud on your channel page"
msgstr "Proveer nube de etiquetas personal en su página de canal"
-#: ../../include/follow.php:28
-msgid "Channel is blocked on this site."
-msgstr "El canal está bloqueado en este sitio."
-
-#: ../../include/follow.php:33
-msgid "Channel location missing."
-msgstr "Falta la dirección del canal."
-
-#: ../../include/follow.php:82
-msgid "Response from remote channel was incomplete."
-msgstr "Respuesta incompleta del canal."
-
-#: ../../include/follow.php:99
-msgid "Channel was deleted and no longer exists."
-msgstr "El canal ha sido eliminado y ya no existe."
+#: ../../include/oembed.php:324
+msgid "Embedded content"
+msgstr "Contenido incorporado"
-#: ../../include/follow.php:155 ../../include/follow.php:191
-msgid "Protocol disabled."
-msgstr "Protocolo deshabilitado."
+#: ../../include/oembed.php:333
+msgid "Embedding disabled"
+msgstr "Incrustación deshabilitada"
-#: ../../include/follow.php:179
-msgid "Channel discovery failed."
-msgstr "El intento de acceder al canal ha fallado."
+#: ../../include/acl_selectors.php:271
+msgid "Who can see this?"
+msgstr "¿Quién puede ver esto?"
-#: ../../include/follow.php:217
-msgid "Cannot connect to yourself."
-msgstr "No puede conectarse consigo mismo."
+#: ../../include/acl_selectors.php:272
+msgid "Custom selection"
+msgstr "Selección personalizada"
-#: ../../include/group.php:26
+#: ../../include/acl_selectors.php:273
msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos existentes sean aplicados a este grupo y sus futuros miembros. Si no quiere esto, por favor cree otro grupo con un nombre diferente."
+"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit"
+" the scope of \"Show\"."
+msgstr "Seleccione \"Mostrar\" para permitir la visualización. La opción \"No mostrar\" le permite anular y limitar el alcance de \"Mostrar\"."
-#: ../../include/group.php:248
-msgid "Add new connections to this privacy group"
-msgstr "Añadir conexiones nuevas a este grupo de canales"
-
-#: ../../include/group.php:289
-msgid "edit"
-msgstr "editar"
-
-#: ../../include/group.php:312
-msgid "Edit group"
-msgstr "Editar grupo"
-
-#: ../../include/group.php:313
-msgid "Add privacy group"
-msgstr "Añadir un grupo de canales"
-
-#: ../../include/group.php:314
-msgid "Channels not in any privacy group"
-msgstr "Sin canales en ningún grupo"
-
-#: ../../include/group.php:316 ../../include/widgets.php:282
-msgid "add"
-msgstr "añadir"
-
-#: ../../include/bbcode.php:123 ../../include/bbcode.php:813
-#: ../../include/bbcode.php:816 ../../include/bbcode.php:821
-#: ../../include/bbcode.php:824 ../../include/bbcode.php:827
-#: ../../include/bbcode.php:830 ../../include/bbcode.php:835
-#: ../../include/bbcode.php:838 ../../include/bbcode.php:843
-#: ../../include/bbcode.php:846 ../../include/bbcode.php:849
-#: ../../include/bbcode.php:852
-msgid "Image/photo"
-msgstr "Imagen/foto"
+#: ../../include/acl_selectors.php:274
+msgid "Show"
+msgstr "Mostrar"
-#: ../../include/bbcode.php:162 ../../include/bbcode.php:863
-msgid "Encrypted content"
-msgstr "Contenido cifrado"
+#: ../../include/acl_selectors.php:275
+msgid "Don't show"
+msgstr "No mostrar"
-#: ../../include/bbcode.php:179
-#, php-format
-msgid "Install %s element: "
-msgstr "Instalar el elemento %s:"
+#: ../../include/acl_selectors.php:281
+msgid "Other networks and post services"
+msgstr "Otras redes y servicios de publicación"
-#: ../../include/bbcode.php:183
+#: ../../include/acl_selectors.php:311
#, php-format
msgid ""
-"This post contains an installable %s element, however you lack permissions "
-"to install it on this site."
-msgstr "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio."
-
-#: ../../include/bbcode.php:255
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s escribió %2$s siguiente %3$s"
-
-#: ../../include/bbcode.php:333 ../../include/bbcode.php:341
-msgid "Click to open/close"
-msgstr "Pulsar para abrir/cerrar"
-
-#: ../../include/bbcode.php:341
-msgid "spoiler"
-msgstr "spoiler"
-
-#: ../../include/bbcode.php:556
-msgid "Different viewers will see this text differently"
-msgstr "Visitantes diferentes verán este texto de forma distinta"
-
-#: ../../include/bbcode.php:801
-msgid "$1 wrote:"
-msgstr "$1 escribió:"
-
-#: ../../include/items.php:1138 ../../include/items.php:1183
-msgid "(Unknown)"
-msgstr "(Desconocido)"
-
-#: ../../include/items.php:1382
-msgid "Visible to anybody on the internet."
-msgstr "Visible para cualquiera en internet."
-
-#: ../../include/items.php:1384
-msgid "Visible to you only."
-msgstr "Visible sólo para usted."
+"Post permissions %s cannot be changed %s after a post is shared.</br />These"
+" permissions set who is allowed to view the post."
+msgstr "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha compartido.</br /> Estos permisos establecen quién está autorizado para ver el mensaje."
-#: ../../include/items.php:1386
-msgid "Visible to anybody in this network."
-msgstr "Visible para cualquiera en esta red."
+#: ../../include/auth.php:105
+msgid "Logged out."
+msgstr "Desconectado/a."
-#: ../../include/items.php:1388
-msgid "Visible to anybody authenticated."
-msgstr "Visible para cualquiera que haya sido autenticado."
+#: ../../include/auth.php:212
+msgid "Failed authentication"
+msgstr "Autenticación fallida."
-#: ../../include/items.php:1390
-#, php-format
-msgid "Visible to anybody on %s."
-msgstr "Visible para cualquiera en %s."
+#: ../../include/datetime.php:135
+msgid "Birthday"
+msgstr "Cumpleaños"
-#: ../../include/items.php:1392
-msgid "Visible to all connections."
-msgstr "Visible para todas las conexiones."
+#: ../../include/datetime.php:137
+msgid "Age: "
+msgstr "Edad:"
-#: ../../include/items.php:1394
-msgid "Visible to approved connections."
-msgstr "Visible para las conexiones permitidas."
+#: ../../include/datetime.php:139
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "AAAA-MM-DD o MM-DD"
-#: ../../include/items.php:1396
-msgid "Visible to specific connections."
-msgstr "Visible para conexiones específicas."
+#: ../../include/datetime.php:272 ../../boot.php:2470
+msgid "never"
+msgstr "nunca"
-#: ../../include/items.php:5142
-msgid "Privacy group is empty."
-msgstr "El grupo de canales está vacío."
+#: ../../include/datetime.php:278
+msgid "less than a second ago"
+msgstr "hace un instante"
-#: ../../include/items.php:5149
+#: ../../include/datetime.php:296
#, php-format
-msgid "Privacy group: %s"
-msgstr "Grupo de canales: %s"
-
-#: ../../include/items.php:5161
-msgid "Connection not found."
-msgstr "Conexión no encontrada"
-
-#: ../../include/items.php:5594
-msgid "profile photo"
-msgstr "foto del perfil"
+msgctxt "e.g. 22 hours ago, 1 minute ago"
+msgid "%1$d %2$s ago"
+msgstr "hace %1$d %2$s"
-#: ../../include/network.php:659
-msgid "view full size"
-msgstr "Ver en el tamaño original"
+#: ../../include/datetime.php:307
+msgctxt "relative_date"
+msgid "year"
+msgid_plural "years"
+msgstr[0] "año"
+msgstr[1] "años"
-#: ../../include/network.php:1889
-msgid "No Subject"
-msgstr "Sin asunto"
+#: ../../include/datetime.php:310
+msgctxt "relative_date"
+msgid "month"
+msgid_plural "months"
+msgstr[0] "mes"
+msgstr[1] "meses"
-#: ../../include/widgets.php:103
-msgid "System"
-msgstr "Sistema"
+#: ../../include/datetime.php:313
+msgctxt "relative_date"
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "semana"
+msgstr[1] "semanas"
-#: ../../include/widgets.php:106
-msgid "Create Personal App"
-msgstr "Crear una aplicación personal"
+#: ../../include/datetime.php:316
+msgctxt "relative_date"
+msgid "day"
+msgid_plural "days"
+msgstr[0] "día"
+msgstr[1] "días"
-#: ../../include/widgets.php:107
-msgid "Edit Personal App"
-msgstr "Editar una aplicación personal"
+#: ../../include/datetime.php:319
+msgctxt "relative_date"
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "hora"
+msgstr[1] "horas"
-#: ../../include/widgets.php:154
-msgid "Suggestions"
-msgstr "Sugerencias"
+#: ../../include/datetime.php:322
+msgctxt "relative_date"
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minuto"
+msgstr[1] "minutos"
-#: ../../include/widgets.php:155
-msgid "See more..."
-msgstr "Ver más..."
+#: ../../include/datetime.php:325
+msgctxt "relative_date"
+msgid "second"
+msgid_plural "seconds"
+msgstr[0] "segundo"
+msgstr[1] "segundos"
-#: ../../include/widgets.php:175
+#: ../../include/datetime.php:562
#, php-format
-msgid "You have %1$.0f of %2$.0f allowed connections."
-msgstr "Tiene %1$.0f de %2$.0f conexiones permitidas."
-
-#: ../../include/widgets.php:181
-msgid "Add New Connection"
-msgstr "Añadir nueva conexión"
-
-#: ../../include/widgets.php:182
-msgid "Enter channel address"
-msgstr "Dirección del canal"
-
-#: ../../include/widgets.php:183
-msgid "Examples: bob@example.com, https://example.com/barbara"
-msgstr "Ejemplos: manuel@ejemplo.com, https://ejemplo.com/carmen"
-
-#: ../../include/widgets.php:199
-msgid "Notes"
-msgstr "Notas"
-
-#: ../../include/widgets.php:273
-msgid "Remove term"
-msgstr "Eliminar término"
-
-#: ../../include/widgets.php:354
-msgid "Archives"
-msgstr "Hemeroteca"
-
-#: ../../include/widgets.php:467
-msgid "Refresh"
-msgstr "Recargar"
-
-#: ../../include/widgets.php:507
-msgid "Account settings"
-msgstr "Configuración de la cuenta"
-
-#: ../../include/widgets.php:513
-msgid "Channel settings"
-msgstr "Configuración del canal"
-
-#: ../../include/widgets.php:522
-msgid "Additional features"
-msgstr "Funcionalidades"
-
-#: ../../include/widgets.php:529
-msgid "Feature/Addon settings"
-msgstr "Complementos"
-
-#: ../../include/widgets.php:535
-msgid "Display settings"
-msgstr "Ajustes de visualización"
-
-#: ../../include/widgets.php:542
-msgid "Manage locations"
-msgstr "Gestión de ubicaciones (clones) del canal"
-
-#: ../../include/widgets.php:551
-msgid "Export channel"
-msgstr "Exportar canal"
-
-#: ../../include/widgets.php:558
-msgid "Connected apps"
-msgstr "Aplicaciones conectadas"
-
-#: ../../include/widgets.php:573
-msgid "Premium Channel Settings"
-msgstr "Configuración del canal premium"
-
-#: ../../include/widgets.php:602
-msgid "Private Mail Menu"
-msgstr "Menú de correo privado"
-
-#: ../../include/widgets.php:604
-msgid "Combined View"
-msgstr "Vista combinada"
-
-#: ../../include/widgets.php:609 ../../include/nav.php:196
-msgid "Inbox"
-msgstr "Bandeja de entrada"
-
-#: ../../include/widgets.php:614 ../../include/nav.php:197
-msgid "Outbox"
-msgstr "Bandeja de salida"
-
-#: ../../include/widgets.php:619 ../../include/nav.php:198
-msgid "New Message"
-msgstr "Nuevo mensaje"
-
-#: ../../include/widgets.php:636 ../../include/widgets.php:648
-msgid "Conversations"
-msgstr "Conversaciones"
-
-#: ../../include/widgets.php:640
-msgid "Received Messages"
-msgstr "Mensajes recibidos"
-
-#: ../../include/widgets.php:644
-msgid "Sent Messages"
-msgstr "Enviar mensajes"
-
-#: ../../include/widgets.php:658
-msgid "No messages."
-msgstr "Sin mensajes."
-
-#: ../../include/widgets.php:676
-msgid "Delete conversation"
-msgstr "Eliminar conversación"
-
-#: ../../include/widgets.php:702
-msgid "Events Menu"
-msgstr "Menú de eventos"
-
-#: ../../include/widgets.php:703
-msgid "Day View"
-msgstr "Eventos del día"
-
-#: ../../include/widgets.php:704
-msgid "Week View"
-msgstr "Eventos de la semana"
-
-#: ../../include/widgets.php:705
-msgid "Month View"
-msgstr "Eventos del mes"
-
-#: ../../include/widgets.php:717
-msgid "Events Tools"
-msgstr "Gestión de eventos"
-
-#: ../../include/widgets.php:718
-msgid "Export Calendar"
-msgstr "Exportar el calendario"
-
-#: ../../include/widgets.php:719
-msgid "Import Calendar"
-msgstr "Importar un calendario"
-
-#: ../../include/widgets.php:798
-msgid "Overview"
-msgstr "Resumen"
-
-#: ../../include/widgets.php:805
-msgid "Chat Members"
-msgstr "Miembros del chat"
-
-#: ../../include/widgets.php:828
-msgid "Bookmarked Chatrooms"
-msgstr "Salas de chat preferidas"
-
-#: ../../include/widgets.php:851
-msgid "Suggested Chatrooms"
-msgstr "Salas de chat sugeridas"
-
-#: ../../include/widgets.php:996 ../../include/widgets.php:1108
-msgid "photo/image"
-msgstr "foto/imagen"
-
-#: ../../include/widgets.php:1051
-msgid "Click to show more"
-msgstr "Hacer clic para ver más"
-
-#: ../../include/widgets.php:1202
-msgid "Rating Tools"
-msgstr "Valoraciones"
-
-#: ../../include/widgets.php:1206 ../../include/widgets.php:1208
-msgid "Rate Me"
-msgstr "Valorar este canal"
-
-#: ../../include/widgets.php:1211
-msgid "View Ratings"
-msgstr "Mostrar las valoraciones"
-
-#: ../../include/widgets.php:1268
-msgid "Forums"
-msgstr "Foros"
-
-#: ../../include/widgets.php:1297
-msgid "Tasks"
-msgstr "Tareas"
-
-#: ../../include/widgets.php:1306
-msgid "Documentation"
-msgstr "Documentación"
-
-#: ../../include/widgets.php:1308
-msgid "Project/Site Information"
-msgstr "Información sobre el proyecto o sitio"
-
-#: ../../include/widgets.php:1309
-msgid "For Members"
-msgstr "Para los miembros"
-
-#: ../../include/widgets.php:1310
-msgid "For Administrators"
-msgstr "Para los administradores"
-
-#: ../../include/widgets.php:1311
-msgid "For Developers"
-msgstr "Para los desarrolladores"
-
-#: ../../include/widgets.php:1335
-msgid "Accounts"
-msgstr "Cuentas"
-
-#: ../../include/widgets.php:1335 ../../include/widgets.php:1373
-msgid "Member registrations waiting for confirmation"
-msgstr "Inscripciones de nuevos miembros pendientes de aprobación"
-
-#: ../../include/widgets.php:1341
-msgid "Inspect queue"
-msgstr "Examinar la cola"
-
-#: ../../include/widgets.php:1343
-msgid "DB updates"
-msgstr "Actualizaciones de la base de datos"
-
-#: ../../include/widgets.php:1368 ../../include/nav.php:216
-msgid "Admin"
-msgstr "Administrador"
-
-#: ../../include/widgets.php:1369
-msgid "Plugin Features"
-msgstr "Extensiones"
-
-#: ../../include/taxonomy.php:240 ../../include/taxonomy.php:261
-msgid "Tags"
-msgstr "Etiquetas"
+msgid "%1$s's birthday"
+msgstr "Cumpleaños de %1$s"
-#: ../../include/taxonomy.php:305
-msgid "Keywords"
-msgstr "Palabras clave"
+#: ../../include/datetime.php:563
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Feliz cumpleaños %1$s"
-#: ../../include/taxonomy.php:326
-msgid "have"
-msgstr "tener"
+#: ../../include/group.php:26
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
+msgstr "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos existentes sean aplicados a este grupo y sus futuros miembros. Si no quiere esto, por favor cree otro grupo con un nombre diferente."
-#: ../../include/taxonomy.php:326
-msgid "has"
-msgstr "tiene"
+#: ../../include/group.php:248
+msgid "Add new connections to this privacy group"
+msgstr "Añadir conexiones nuevas a este grupo de canales"
-#: ../../include/taxonomy.php:327
-msgid "want"
-msgstr "quiero"
+#: ../../include/group.php:289
+msgid "edit"
+msgstr "editar"
-#: ../../include/taxonomy.php:327
-msgid "wants"
-msgstr "quiere"
+#: ../../include/group.php:312
+msgid "Edit group"
+msgstr "Editar grupo"
-#: ../../include/taxonomy.php:328
-msgid "likes"
-msgstr "gusta de"
+#: ../../include/group.php:313
+msgid "Add privacy group"
+msgstr "Añadir un grupo de canales"
-#: ../../include/taxonomy.php:329
-msgid "dislikes"
-msgstr "no gusta de"
+#: ../../include/group.php:314
+msgid "Channels not in any privacy group"
+msgstr "Sin canales en ningún grupo"
#: ../../include/js_strings.php:5
msgid "Delete this item?"
@@ -9045,6 +9143,10 @@ msgstr "Contraseña demasiado corta"
msgid "Passwords do not match"
msgstr "Las contraseñas no coinciden"
+#: ../../include/js_strings.php:13
+msgid "everybody"
+msgstr "cualquiera"
+
#: ../../include/js_strings.php:14
msgid "Secret Passphrase"
msgstr "Contraseña secreta"
@@ -9261,190 +9363,97 @@ msgctxt "calendar"
msgid "All day"
msgstr "Todos los días"
-#: ../../include/message.php:20
-msgid "No recipient provided."
-msgstr "No se ha especificado ningún destinatario."
-
-#: ../../include/message.php:25
-msgid "[no subject]"
-msgstr "[sin asunto]"
-
-#: ../../include/message.php:45
-msgid "Unable to determine sender."
-msgstr "No ha sido posible determinar el remitente. "
-
-#: ../../include/message.php:222
-msgid "Stored post could not be verified."
-msgstr "No se han podido verificar las publicaciones guardadas."
-
-#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1614
-msgid "Logout"
-msgstr "Finalizar sesión"
-
-#: ../../include/nav.php:82 ../../include/nav.php:113
-msgid "End this session"
-msgstr "Finalizar esta sesión"
+#: ../../include/network.php:657
+msgid "view full size"
+msgstr "Ver en el tamaño original"
-#: ../../include/nav.php:85 ../../include/nav.php:144
-msgid "Home"
-msgstr "Inicio"
+#: ../../include/network.php:1885
+msgid "No Subject"
+msgstr "Sin asunto"
-#: ../../include/nav.php:85
-msgid "Your posts and conversations"
-msgstr "Sus publicaciones y conversaciones"
+#: ../../include/network.php:2146 ../../include/network.php:2147
+msgid "Friendica"
+msgstr "Friendica"
-#: ../../include/nav.php:86
-msgid "Your profile page"
-msgstr "Su página del perfil"
+#: ../../include/network.php:2148
+msgid "OStatus"
+msgstr "OStatus"
-#: ../../include/nav.php:88
-msgid "Manage/Edit profiles"
-msgstr "Administrar/editar perfiles"
+#: ../../include/network.php:2149
+msgid "GNU-Social"
+msgstr "GNU Social"
-#: ../../include/nav.php:90
-msgid "Edit your profile"
-msgstr "Editar su perfil"
+#: ../../include/network.php:2150
+msgid "RSS/Atom"
+msgstr "RSS/Atom"
-#: ../../include/nav.php:92
-msgid "Your photos"
-msgstr "Sus fotos"
+#: ../../include/network.php:2152
+msgid "Diaspora"
+msgstr "Diaspora"
-#: ../../include/nav.php:93
-msgid "Your files"
-msgstr "Sus ficheros"
+#: ../../include/network.php:2153
+msgid "Facebook"
+msgstr "Facebook"
-#: ../../include/nav.php:96
-msgid "Your chatrooms"
-msgstr "Sus salas de chat"
+#: ../../include/network.php:2154
+msgid "Zot"
+msgstr "Zot"
-#: ../../include/nav.php:102
-msgid "Your bookmarks"
-msgstr "Sus marcadores"
+#: ../../include/network.php:2155
+msgid "LinkedIn"
+msgstr "LinkedIn"
-#: ../../include/nav.php:106
-msgid "Your webpages"
-msgstr "Sus páginas web"
+#: ../../include/network.php:2156
+msgid "XMPP/IM"
+msgstr "XMPP/IM"
-#: ../../include/nav.php:110
-msgid "Sign in"
-msgstr "Acceder"
+#: ../../include/network.php:2157
+msgid "MySpace"
+msgstr "MySpace"
-#: ../../include/nav.php:127
+#: ../../include/photos.php:110
#, php-format
-msgid "%s - click to logout"
-msgstr "%s - pulsar para finalizar sesión"
-
-#: ../../include/nav.php:130
-msgid "Remote authentication"
-msgstr "Acceder desde su servidor"
-
-#: ../../include/nav.php:130
-msgid "Click to authenticate to your home hub"
-msgstr "Pulsar para identificarse en su servidor de inicio"
-
-#: ../../include/nav.php:144
-msgid "Home Page"
-msgstr "Página de inicio"
-
-#: ../../include/nav.php:147
-msgid "Create an account"
-msgstr "Crear una cuenta"
-
-#: ../../include/nav.php:159
-msgid "Help and documentation"
-msgstr "Ayuda y documentación"
-
-#: ../../include/nav.php:163
-msgid "Applications, utilities, links, games"
-msgstr "Aplicaciones, utilidades, enlaces, juegos"
-
-#: ../../include/nav.php:165
-msgid "Search site @name, #tag, ?docs, content"
-msgstr "Buscar en el sitio por @nombre, #etiqueta, ?ayuda o contenido"
-
-#: ../../include/nav.php:167
-msgid "Channel Directory"
-msgstr "Directorio de canales"
-
-#: ../../include/nav.php:179
-msgid "Your grid"
-msgstr "Mi red"
-
-#: ../../include/nav.php:180
-msgid "Mark all grid notifications seen"
-msgstr "Marcar todas las notificaciones de la red como vistas"
-
-#: ../../include/nav.php:182
-msgid "Channel home"
-msgstr "Mi canal"
-
-#: ../../include/nav.php:183
-msgid "Mark all channel notifications seen"
-msgstr "Marcar todas las notificaciones del canal como leídas"
-
-#: ../../include/nav.php:189
-msgid "Notices"
-msgstr "Avisos"
-
-#: ../../include/nav.php:189
-msgid "Notifications"
-msgstr "Notificaciones"
-
-#: ../../include/nav.php:190
-msgid "See all notifications"
-msgstr "Ver todas las notificaciones"
-
-#: ../../include/nav.php:193
-msgid "Private mail"
-msgstr "Correo privado"
-
-#: ../../include/nav.php:194
-msgid "See all private messages"
-msgstr "Ver todas los mensajes privados"
-
-#: ../../include/nav.php:195
-msgid "Mark all private messages seen"
-msgstr "Marcar todos los mensajes privados como leídos"
-
-#: ../../include/nav.php:201
-msgid "Event Calendar"
-msgstr "Calendario de eventos"
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "La imagen excede el límite de %lu bytes del sitio"
-#: ../../include/nav.php:202
-msgid "See all events"
-msgstr "Ver todos los eventos"
+#: ../../include/photos.php:117
+msgid "Image file is empty."
+msgstr "El fichero de imagen está vacío. "
-#: ../../include/nav.php:203
-msgid "Mark all events seen"
-msgstr "Marcar todos los eventos como leidos"
+#: ../../include/photos.php:255
+msgid "Photo storage failed."
+msgstr "La foto no ha podido ser guardada."
-#: ../../include/nav.php:206
-msgid "Manage Your Channels"
-msgstr "Gestionar sus canales"
+#: ../../include/photos.php:295
+msgid "a new photo"
+msgstr "una nueva foto"
-#: ../../include/nav.php:208
-msgid "Account/Channel Settings"
-msgstr "Ajustes de cuenta/canales"
+#: ../../include/photos.php:299
+#, php-format
+msgctxt "photo_upload"
+msgid "%1$s posted %2$s to %3$s"
+msgstr "%1$s ha publicado %2$s en %3$s"
-#: ../../include/nav.php:216
-msgid "Site Setup and Configuration"
-msgstr "Ajustes y configuración del sitio"
+#: ../../include/photos.php:506
+msgid "Upload New Photos"
+msgstr "Subir nuevas fotos"
-#: ../../include/nav.php:252
-msgid "@name, #tag, ?doc, content"
-msgstr "@nombre, #etiqueta, ?ayuda, contenido"
+#: ../../include/zot.php:699
+msgid "Invalid data packet"
+msgstr "Paquete de datos no válido"
-#: ../../include/nav.php:253
-msgid "Please wait..."
-msgstr "Espere por favor…"
+#: ../../include/zot.php:715
+msgid "Unable to verify channel signature"
+msgstr "No ha sido posible de verificar la firma del canal"
-#: ../../include/oembed.php:267
-msgid "Embedded content"
-msgstr "Contenido incorporado"
+#: ../../include/zot.php:2363
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr "No ha sido posible de verificar la firma del sitio para %s"
-#: ../../include/oembed.php:276
-msgid "Embedding disabled"
-msgstr "Incrustación deshabilitada"
+#: ../../include/zot.php:3712
+msgid "invalid target signature"
+msgstr "La firma recibida no es válida"
#: ../../include/page_widgets.php:6
msgid "New Page"
@@ -9595,32 +9604,36 @@ msgstr "Especial - Repositorio de grupo"
msgid "Custom/Expert Mode"
msgstr "Modo personalizado/experto"
-#: ../../include/photos.php:112
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "La imagen excede el límite de %lu bytes del sitio"
+#: ../../include/activities.php:41
+msgid " and "
+msgstr " y "
-#: ../../include/photos.php:119
-msgid "Image file is empty."
-msgstr "El fichero de imagen está vacío. "
+#: ../../include/activities.php:49
+msgid "public profile"
+msgstr "el perfil público"
-#: ../../include/photos.php:257
-msgid "Photo storage failed."
-msgstr "La foto no ha podido ser guardada."
+#: ../../include/activities.php:58
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s ha cambiado %2$s a &ldquo;%3$s&rdquo;"
-#: ../../include/photos.php:297
-msgid "a new photo"
-msgstr "una nueva foto"
+#: ../../include/activities.php:59
+#, php-format
+msgid "Visit %1$s's %2$s"
+msgstr "Visitar %2$s de %1$s"
-#: ../../include/photos.php:301
+#: ../../include/activities.php:62
#, php-format
-msgctxt "photo_upload"
-msgid "%1$s posted %2$s to %3$s"
-msgstr "%1$s ha publicado %2$s en %3$s"
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s ha actualizado %2$s, cambiando %3$s."
-#: ../../include/photos.php:510
-msgid "Upload New Photos"
-msgstr "Subir nuevas fotos"
+#: ../../include/bb2diaspora.php:398
+msgid "Attachments:"
+msgstr "Ficheros adjuntos:"
+
+#: ../../include/bb2diaspora.php:487
+msgid "$Projectname event notification:"
+msgstr "Notificación de eventos de $Projectname:"
#: ../../view/theme/redbasic/php/config.php:82
msgid "Focus (Hubzilla default)"
@@ -9758,62 +9771,62 @@ msgstr "Ajustar el tamaño de la foto del autor de la conversación"
msgid "Set size of followup author photos"
msgstr "Ajustar el tamaño de foto de los seguidores del autor"
-#: ../../boot.php:1075
+#: ../../boot.php:1162
#, php-format
msgctxt "opensearch"
msgid "Search %1$s (%2$s)"
msgstr "Buscar %1$s (%2$s)"
-#: ../../boot.php:1075
+#: ../../boot.php:1162
msgctxt "opensearch"
msgid "$Projectname"
msgstr "$Projectname"
-#: ../../boot.php:1392
+#: ../../boot.php:1480
#, php-format
msgid "Update %s failed. See error logs."
msgstr "La actualización %s ha fallado. Mire el informe de errores."
-#: ../../boot.php:1395
+#: ../../boot.php:1483
#, php-format
msgid "Update Error at %s"
msgstr "Error de actualización en %s"
-#: ../../boot.php:1596
+#: ../../boot.php:1684
msgid ""
"Create an account to access services and applications within the Hubzilla"
msgstr "Crear una cuenta para acceder a los servicios y aplicaciones dentro de Hubzilla"
-#: ../../boot.php:1618
+#: ../../boot.php:1706
msgid "Password"
msgstr "Contraseña"
-#: ../../boot.php:1619
+#: ../../boot.php:1707
msgid "Remember me"
msgstr "Recordarme"
-#: ../../boot.php:1622
+#: ../../boot.php:1710
msgid "Forgot your password?"
msgstr "¿Olvidó su contraseña?"
-#: ../../boot.php:2251
+#: ../../boot.php:2276
msgid "toggle mobile"
msgstr "cambiar a modo móvil"
-#: ../../boot.php:2404
+#: ../../boot.php:2425
msgid "Website SSL certificate is not valid. Please correct."
msgstr "El certificado SSL del sitio web no es válido. Por favor, solucione el problema."
-#: ../../boot.php:2407
+#: ../../boot.php:2428
#, php-format
msgid "[hubzilla] Website SSL error for %s"
msgstr "[hubzilla] Error SSL del sitio web en %s"
-#: ../../boot.php:2444
+#: ../../boot.php:2469
msgid "Cron/Scheduled tasks not running."
msgstr "Las tareas del Planificador/Cron no están funcionando."
-#: ../../boot.php:2448
+#: ../../boot.php:2473
#, php-format
msgid "[hubzilla] Cron tasks not running on %s"
msgstr "[hubzilla] Las tareas de Cron no están funcionando en %s"
diff --git a/view/es-es/hstrings.php b/view/es-es/hstrings.php
index b995ee27b..22c81e350 100644
--- a/view/es-es/hstrings.php
+++ b/view/es-es/hstrings.php
@@ -29,6 +29,7 @@ App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s&#37;)
App::$strings["WARNING:"] = "ATENCIÓN:";
App::$strings["Create new folder"] = "Crear nueva carpeta";
App::$strings["Upload file"] = "Subir fichero";
+App::$strings["Permission denied"] = "Permiso denegado";
App::$strings["Permission denied."] = "Acceso denegado.";
App::$strings["Not Found"] = "No encontrado";
App::$strings["Page not found."] = "Página no encontrada.";
@@ -36,261 +37,6 @@ App::$strings["Remote authentication blocked. You are logged into this site loca
App::$strings["Welcome %s. Remote authentication successful."] = "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente.";
App::$strings["Requested profile is not available."] = "El perfil solicitado no está disponible.";
App::$strings["Some blurb about what to do when you're new here"] = "Algunas propuestas para el nuevo usuario sobre qué se puede hacer aquí";
-App::$strings["network"] = "red";
-App::$strings["RSS"] = "RSS";
-App::$strings["Theme settings updated."] = "Ajustes del tema actualizados.";
-App::$strings["Item not found."] = "Elemento no encontrado.";
-App::$strings["# Accounts"] = "# Cuentas";
-App::$strings["# blocked accounts"] = "# cuentas bloqueadas";
-App::$strings["# expired accounts"] = "# cuentas caducadas";
-App::$strings["# expiring accounts"] = "# cuentas que caducan";
-App::$strings["# Channels"] = "# Canales";
-App::$strings["# primary"] = "# primario";
-App::$strings["# clones"] = "# clones";
-App::$strings["Message queues"] = "Mensajes en cola";
-App::$strings["Administration"] = "Administración";
-App::$strings["Summary"] = "Sumario";
-App::$strings["Registered accounts"] = "Cuentas registradas";
-App::$strings["Pending registrations"] = "Registros pendientes";
-App::$strings["Registered channels"] = "Canales registrados";
-App::$strings["Active plugins"] = "Extensiones activas";
-App::$strings["Version"] = "Versión";
-App::$strings["Site settings updated."] = "Ajustes del sitio actualizados.";
-App::$strings["Default"] = "Predeterminado";
-App::$strings["mobile"] = "móvil";
-App::$strings["experimental"] = "experimental";
-App::$strings["unsupported"] = "no soportado";
-App::$strings["No"] = "No";
-App::$strings["Yes - with approval"] = "Sí - con aprobación";
-App::$strings["Yes"] = "Sí";
-App::$strings["My site is not a public server"] = "Mi sitio no es un servidor público";
-App::$strings["My site has paid access only"] = "Mi sitio es un servicio de pago";
-App::$strings["My site has free access only"] = "Mi sitio es un servicio gratuito";
-App::$strings["My site offers free accounts with optional paid upgrades"] = "Mi sitio ofrece cuentas gratuitas con opciones extra de pago";
-App::$strings["Site"] = "Sitio";
-App::$strings["Submit"] = "Enviar";
-App::$strings["Registration"] = "Registro";
-App::$strings["File upload"] = "Subir fichero";
-App::$strings["Policies"] = "Políticas";
-App::$strings["Advanced"] = "Avanzado";
-App::$strings["Site name"] = "Nombre del sitio";
-App::$strings["Banner/Logo"] = "Banner/Logo";
-App::$strings["Administrator Information"] = "Información del Administrador";
-App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Información de contacto de los administradores del sitio. Visible en la página \"siteinfo\". Se puede usar BBCode";
-App::$strings["System language"] = "Idioma del sistema";
-App::$strings["System theme"] = "Tema gráfico del sistema";
-App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Tema del sistema por defecto - se puede cambiar por cada perfil de usuario - <a href='#' id='cnftheme'>modificar los ajustes del tema</a>";
-App::$strings["Mobile system theme"] = "Tema del sistema para móviles";
-App::$strings["Theme for mobile devices"] = "Tema para dispositivos móviles";
-App::$strings["Allow Feeds as Connections"] = "Permitir contenidos RSS como conexiones";
-App::$strings["(Heavy system resource usage)"] = "(Uso intenso de los recursos del sistema)";
-App::$strings["Maximum image size"] = "Tamaño máximo de la imagen";
-App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Tamaño máximo en bytes de la imagen subida. Por defecto, es 0, lo que significa que no hay límites.";
-App::$strings["Does this site allow new member registration?"] = "¿Debe este sitio permitir el registro de nuevos miembros?";
-App::$strings["Invitation only"] = "Solo con una invitación";
-App::$strings["Only allow new member registrations with an invitation code. Above register policy must be set to Yes."] = "Solo se permiten inscripciones de nuevos miembros con un código de invitación. Además, deben aceptarse los términos del registro marcando \"Sí\".";
-App::$strings["Which best describes the types of account offered by this hub?"] = "¿Cómo describiría el tipo de servicio ofrecido por este servidor?";
-App::$strings["Register text"] = "Texto del registro";
-App::$strings["Will be displayed prominently on the registration page."] = "Se mostrará de forma destacada en la página de registro.";
-App::$strings["Site homepage to show visitors (default: login box)"] = "Página personal que se mostrará a los visitantes (por defecto: la página de identificación)";
-App::$strings["example: 'public' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file."] = "ejemplo: 'public' para mostrar contenido público, 'page/sys/home' para mostrar la página web definida como \"home\" o 'include:home.html' para mostrar el contenido de un fichero.";
-App::$strings["Preserve site homepage URL"] = "Preservar la dirección de la página personal";
-App::$strings["Present the site homepage in a frame at the original location instead of redirecting"] = "Presenta la página personal del sitio en un marco en la ubicación original, en vez de redirigirla.";
-App::$strings["Accounts abandoned after x days"] = "Cuentas abandonadas después de x días";
-App::$strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Para evitar consumir recursos del sistema intentando poner al día las cuentas abandonadas. Introduzca 0 para no tener límite de tiempo.";
-App::$strings["Allowed friend domains"] = "Dominios amigos permitidos";
-App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Lista separada por comas de dominios a los que está permitido establecer relaciones de amistad con este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio.";
-App::$strings["Allowed email domains"] = "Se aceptan dominios de correo electrónico";
-App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Lista separada por comas de los dominios de los que se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio. ";
-App::$strings["Not allowed email domains"] = "No se permiten dominios de correo electrónico";
-App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Lista separada por comas de los dominios de los que no se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para no aceptar cualquier dominio, excepto los que se hayan autorizado.";
-App::$strings["Verify Email Addresses"] = "Verificar las direcciones de correo electrónico";
-App::$strings["Check to verify email addresses used in account registration (recommended)."] = "Activar para la verificación de la dirección de correo electrónico en el registro de una cuenta (recomendado).";
-App::$strings["Force publish"] = "Forzar la publicación";
-App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Intentar forzar todos los perfiles para que sean listados en el directorio de este sitio.";
-App::$strings["Import Public Streams"] = "Importar contenido público";
-App::$strings["Import and allow access to public content pulled from other sites. Warning: this content is unmoderated."] = "Importar y permitir acceso al contenido público sacado de otros sitios. Advertencia: este contenido no está moderado, por lo que podría encontrar cosas inapropiadas u ofensivas.";
-App::$strings["Login on Homepage"] = "Iniciar sesión en la página personal";
-App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Presentar a los visitantes una casilla de identificación en la página de inicio, si no se ha configurado otro tipo de contenido.";
-App::$strings["Enable context help"] = "Habilitar la ayuda contextual";
-App::$strings["Display contextual help for the current page when the help button is pressed."] = "Ver la ayuda contextual para la página actual cuando se pulse el botón de Ayuda.";
-App::$strings["Directory Server URL"] = "URL del servidor de directorio";
-App::$strings["Default directory server"] = "Servidor de directorio predeterminado";
-App::$strings["Proxy user"] = "Usuario del proxy";
-App::$strings["Proxy URL"] = "Dirección del proxy";
-App::$strings["Network timeout"] = "Tiempo de espera de la red";
-App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valor en segundos. Poner a 0 para que no haya tiempo límite (no recomendado)";
-App::$strings["Delivery interval"] = "Intervalo de entrega";
-App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Retrasar los procesos de transmisión en segundo plano por esta cantidad de segundos para reducir la carga del sistema. Recomendado: 4-5 para sitios compartidos, 2-3 para servidores virtuales privados, 0-1 para grandes servidores dedicados.";
-App::$strings["Deliveries per process"] = "Intentos de envío por proceso";
-App::$strings["Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5."] = "Numero de envíos a intentar en un único proceso del sistema operativo. Ajustar si es necesario mejorar el rendimiento. Se recomienda: 1-5.";
-App::$strings["Poll interval"] = "Intervalo máximo de tiempo entre dos mensajes sucesivos";
-App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Retrasar el intervalo de envío en segundo plano, en esta cantidad de segundos, para reducir la carga del sistema. Si es 0, usar el intervalo de entrega.";
-App::$strings["Maximum Load Average"] = "Carga media máxima";
-App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50.";
-App::$strings["Expiration period in days for imported (grid/network) content"] = "Caducidad del contenido importado de otros sitios (en días)";
-App::$strings["0 for no expiration of imported content"] = "0 para que no caduque el contenido importado";
-App::$strings["Off"] = "Desactivado";
-App::$strings["On"] = "Activado";
-App::$strings["Lock feature %s"] = "Bloquear la funcionalidad %s";
-App::$strings["Manage Additional Features"] = "Gestionar las funcionalidades";
-App::$strings["No server found"] = "Servidor no encontrado";
-App::$strings["ID"] = "ID";
-App::$strings["for channel"] = "por canal";
-App::$strings["on server"] = "en el servidor";
-App::$strings["Status"] = "Estado";
-App::$strings["Server"] = "Servidor";
-App::$strings["Security"] = "Seguridad";
-App::$strings["Block public"] = "Bloquear páginas públicas";
-App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "Habilitar para impedir ver las páginas personales de este sitio a quien no esté actualmente autenticado.";
-App::$strings["Allow communications only from these sites"] = "Permitir la comunicación solo desde estos sitios";
-App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Un sitio por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera";
-App::$strings["Block communications from these sites"] = "Bloquear la comunicación desde estos sitios";
-App::$strings["Allow communications only from these channels"] = "Permitir la comunicación solo desde estos canales";
-App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "Un canal (hash) por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera";
-App::$strings["Block communications from these channels"] = "Bloquear la comunicación desde estos canales";
-App::$strings["Allow embedded HTML content only from these domains"] = "Permitir contenido con HTML incorporado solo desde estos dominios";
-App::$strings["One site per line. Leave empty to allow from any site by default"] = "Un sitio por línea. Dejar en blanco para permitirlo por defecto desde cualquier sitio";
-App::$strings["Block embedded HTML from these domains"] = "Bloquear contenido con HTML incorporado desde estos dominios";
-App::$strings["Update has been marked successful"] = "La actualización ha sido marcada como exitosa";
-App::$strings["Executing %s failed. Check system logs."] = "La ejecución de %s ha fallado. Mirar en los informes del sistema.";
-App::$strings["Update %s was successfully applied."] = "La actualización de %s se ha realizado exitosamente.";
-App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "La actualización de %s no ha devuelto ningún estado. No se sabe si ha tenido éxito.";
-App::$strings["Update function %s could not be found."] = "No se encuentra la función de actualización de %s.";
-App::$strings["No failed updates."] = "No ha fallado ninguna actualización.";
-App::$strings["Failed Updates"] = "Han fallado las actualizaciones";
-App::$strings["Mark success (if update was manually applied)"] = "Marcar como exitosa (si la actualización se ha hecho manualmente)";
-App::$strings["Attempt to execute this update step automatically"] = "Intentar ejecutar este paso de actualización automáticamente";
-App::$strings["Queue Statistics"] = "Estadísticas de la cola";
-App::$strings["Total Entries"] = "Total de entradas";
-App::$strings["Priority"] = "Prioridad";
-App::$strings["Destination URL"] = "Dirección de destino";
-App::$strings["Mark hub permanently offline"] = "Marcar el servidor como permanentemente fuera de línea";
-App::$strings["Empty queue for this hub"] = "Vaciar la cola para este servidor";
-App::$strings["Last known contact"] = "Último contacto conocido";
-App::$strings["%s account blocked/unblocked"] = array(
- 0 => "%s cuenta bloqueada/desbloqueada",
- 1 => "%s cuenta bloqueada/desbloqueada",
-);
-App::$strings["%s account deleted"] = array(
- 0 => "%s cuentas eliminadas",
- 1 => "%s cuentas eliminadas",
-);
-App::$strings["Account not found"] = "Cuenta no encontrada";
-App::$strings["Account '%s' deleted"] = "La cuenta '%s' ha sido eliminada";
-App::$strings["Account '%s' blocked"] = "La cuenta '%s' ha sido bloqueada";
-App::$strings["Account '%s' unblocked"] = "La cuenta '%s' ha sido desbloqueada";
-App::$strings["Users"] = "Usuarios";
-App::$strings["select all"] = "seleccionar todo";
-App::$strings["User registrations waiting for confirm"] = "Registros de usuario en espera de aprobación";
-App::$strings["Request date"] = "Fecha de solicitud";
-App::$strings["Email"] = "Correo electrónico";
-App::$strings["No registrations."] = "Sin registros.";
-App::$strings["Approve"] = "Aprobar";
-App::$strings["Deny"] = "Rechazar";
-App::$strings["Block"] = "Bloquear";
-App::$strings["Unblock"] = "Desbloquear";
-App::$strings["All Channels"] = "Todos los canales";
-App::$strings["Register date"] = "Fecha de registro";
-App::$strings["Last login"] = "Último acceso";
-App::$strings["Expires"] = "Caduca";
-App::$strings["Service Class"] = "Clase de servicio";
-App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "¡Las cuentas seleccionadas van a ser eliminadas!\\n\\n¡Todo lo que estas cuentas han publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?";
-App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "¡La cuenta {0} va a ser eliminada!\\n\\n¡Todo lo que esta cuenta ha publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?";
-App::$strings["%s channel censored/uncensored"] = array(
- 0 => "%s canales censurados/no censurados",
- 1 => "%s canales censurados/no censurados",
-);
-App::$strings["%s channel code allowed/disallowed"] = array(
- 0 => "%s código permitido/no permitido al canal",
- 1 => "%s código permitido/no permitido al canal",
-);
-App::$strings["%s channel deleted"] = array(
- 0 => "%s canales eliminados",
- 1 => "%s canales eliminados",
-);
-App::$strings["Channel not found"] = "Canal no encontrado";
-App::$strings["Channel '%s' deleted"] = "Canal '%s' eliminado";
-App::$strings["Channel '%s' censored"] = "Canal '%s' censurado";
-App::$strings["Channel '%s' uncensored"] = "Canal '%s' no censurado";
-App::$strings["Channel '%s' code allowed"] = "Código permitido al canal '%s'";
-App::$strings["Channel '%s' code disallowed"] = "Código no permitido al canal '%s'";
-App::$strings["Channels"] = "Canales";
-App::$strings["Censor"] = "Censurar";
-App::$strings["Uncensor"] = "No censurar";
-App::$strings["Allow Code"] = "Permitir código";
-App::$strings["Disallow Code"] = "No permitir código";
-App::$strings["Channel"] = "Canal";
-App::$strings["UID"] = "UID";
-App::$strings["Address"] = "Dirección";
-App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Los canales seleccionados se eliminarán!\\n\\nTodo lo publicado por estos canales en este sitio se borrarán definitivamente!\\n\\n¿Está seguro de querer hacerlo?";
-App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "El canal {0} va a ser eliminado!\\n\\nTodo lo publicado por el canal en este sitio se borrará definitivamente!\\n\\n¿Está seguro de querer hacerlo?";
-App::$strings["Plugin %s disabled."] = "Extensión %s desactivada.";
-App::$strings["Plugin %s enabled."] = "Extensión %s activada.";
-App::$strings["Disable"] = "Desactivar";
-App::$strings["Enable"] = "Activar";
-App::$strings["Plugins"] = "Extensiones";
-App::$strings["Toggle"] = "Cambiar";
-App::$strings["Settings"] = "Ajustes";
-App::$strings["Author: "] = "Autor:";
-App::$strings["Maintainer: "] = "Mantenedor:";
-App::$strings["Minimum project version: "] = "Versión mínima del proyecto:";
-App::$strings["Maximum project version: "] = "Versión máxima del proyecto:";
-App::$strings["Minimum PHP version: "] = "Versión mínima de PHP:";
-App::$strings["Requires: "] = "Se requiere:";
-App::$strings["Disabled - version incompatibility"] = "Deshabilitado - versiones incompatibles";
-App::$strings["No themes found."] = "No se han encontrado temas.";
-App::$strings["Screenshot"] = "Instantánea de pantalla";
-App::$strings["Themes"] = "Temas";
-App::$strings["[Experimental]"] = "[Experimental]";
-App::$strings["[Unsupported]"] = "[No soportado]";
-App::$strings["Log settings updated."] = "Actualizado el informe de configuraciones.";
-App::$strings["Logs"] = "Informes";
-App::$strings["Clear"] = "Vaciar";
-App::$strings["Debugging"] = "Depuración";
-App::$strings["Log file"] = "Fichero de informe";
-App::$strings["Must be writable by web server. Relative to your Red top-level directory."] = "Debe tener permisos de escritura por el servidor web. La ruta es relativa al directorio de instalación de Hubzilla.";
-App::$strings["Log level"] = "Nivel de depuración";
-App::$strings["New Profile Field"] = "Nuevo campo en el perfil";
-App::$strings["Field nickname"] = "Alias del campo";
-App::$strings["System name of field"] = "Nombre del campo en el sistema";
-App::$strings["Input type"] = "Tipo de entrada";
-App::$strings["Field Name"] = "Nombre del campo";
-App::$strings["Label on profile pages"] = "Etiqueta a mostrar en la página del perfil";
-App::$strings["Help text"] = "Texto de ayuda";
-App::$strings["Additional info (optional)"] = "Información adicional (opcional)";
-App::$strings["Save"] = "Guardar";
-App::$strings["Field definition not found"] = "Definición del campo no encontrada";
-App::$strings["Edit Profile Field"] = "Modificar el campo del perfil";
-App::$strings["Profile Fields"] = "Campos del perfil";
-App::$strings["Basic Profile Fields"] = "Campos básicos del perfil";
-App::$strings["Advanced Profile Fields"] = "Campos avanzados del perfil";
-App::$strings["(In addition to basic fields)"] = "(Además de los campos básicos)";
-App::$strings["All available fields"] = "Todos los campos disponibles";
-App::$strings["Custom Fields"] = "Campos personalizados";
-App::$strings["Create Custom Field"] = "Crear un campo personalizado";
-App::$strings["Authorize application connection"] = "Autorizar una conexión de aplicación";
-App::$strings["Return to your app and insert this Securty Code:"] = "Volver a su aplicación e introducir este código de seguridad:";
-App::$strings["Please login to continue."] = "Por favor inicie sesión para continuar.";
-App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "¿Desea autorizar a esta aplicación a acceder a sus publicaciones y contactos, y/o crear nuevas publicaciones por usted?";
-App::$strings["App installed."] = "Aplicación instalada.";
-App::$strings["Malformed app."] = "Aplicación con errores";
-App::$strings["Embed code"] = "Código incorporado";
-App::$strings["Edit App"] = "Modificar la aplicación";
-App::$strings["Create App"] = "Crear una aplicación";
-App::$strings["Name of app"] = "Nombre de la aplicación";
-App::$strings["Required"] = "Obligatorio";
-App::$strings["Location (URL) of app"] = "Dirección (URL) de la aplicación";
-App::$strings["Description"] = "Descripción";
-App::$strings["Photo icon URL"] = "Dirección del icono";
-App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixels - opcional";
-App::$strings["Version ID"] = "Versión";
-App::$strings["Price of app"] = "Precio de la aplicación";
-App::$strings["Location (URL) to purchase app"] = "Dirección (URL) donde adquirir la aplicación";
-App::$strings["Apps"] = "Aplicaciones";
-App::$strings["Item not available."] = "Elemento no disponible";
-App::$strings["Invalid item."] = "Elemento no válido.";
-App::$strings["Channel not found."] = "Canal no encontrado.";
App::$strings["Block Name"] = "Nombre del bloque";
App::$strings["Blocks"] = "Bloques";
App::$strings["Block Title"] = "Título del bloque";
@@ -298,10 +44,7 @@ App::$strings["Created"] = "Creado";
App::$strings["Edited"] = "Editado";
App::$strings["Share"] = "Compartir";
App::$strings["View"] = "Ver";
-App::$strings["Bookmark added"] = "Marcador añadido";
-App::$strings["My Bookmarks"] = "Mis marcadores";
-App::$strings["My Connections Bookmarks"] = "Marcadores de mis conexiones";
-App::$strings["everybody"] = "cualquiera";
+App::$strings["Channel not found."] = "Canal no encontrado.";
App::$strings["Permissions denied."] = "Permisos denegados.";
App::$strings["l, F j"] = "l j F";
App::$strings["Link to Source"] = "Enlazar con la entrada en su ubicación original";
@@ -311,12 +54,12 @@ App::$strings["Previous"] = "Anterior";
App::$strings["Next"] = "Siguiente";
App::$strings["Export"] = "Exportar";
App::$strings["Import"] = "Importar";
+App::$strings["Submit"] = "Enviar";
App::$strings["Today"] = "Hoy";
App::$strings["You must be logged in to see this page."] = "Debe haber iniciado sesión para poder ver esta página.";
App::$strings["Posts and comments"] = "Publicaciones y comentarios";
App::$strings["Only posts"] = "Solo publicaciones";
App::$strings["Insufficient permissions. Request redirected to profile page."] = "Permisos insuficientes. Petición redirigida a la página del perfil.";
-App::$strings["Public"] = "Público";
App::$strings["Room not found"] = "Sala no encontrada";
App::$strings["Leave Room"] = "Abandonar la sala";
App::$strings["Delete Room"] = "Eliminar esta sala";
@@ -338,9 +81,10 @@ App::$strings["Expiration"] = "Caducidad";
App::$strings["min"] = "min";
App::$strings["Away"] = "Ausente";
App::$strings["Online"] = "Conectado/a";
-App::$strings["No channel."] = "Ningún canal.";
-App::$strings["Common connections"] = "Conexiones comunes";
-App::$strings["No connections in common."] = "Ninguna conexión en común.";
+App::$strings["Invalid item."] = "Elemento no válido.";
+App::$strings["Bookmark added"] = "Marcador añadido";
+App::$strings["My Bookmarks"] = "Mis marcadores";
+App::$strings["My Connections Bookmarks"] = "Marcadores de mis conexiones";
App::$strings["Continue"] = "Continuar";
App::$strings["Premium Channel Setup"] = "Configuración del canal premium";
App::$strings["Enable premium channel connection restrictions"] = "Habilitar restricciones de conexión del canal premium";
@@ -350,41 +94,13 @@ App::$strings["Potential connections will then see the following text before pro
App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Al continuar, certifico que he cumplido con todas las instrucciones proporcionadas en esta página.";
App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(No ha sido proporcionada ninguna instrucción específica por el propietario del canal.)";
App::$strings["Restricted or Premium Channel"] = "Canal premium o restringido";
-App::$strings["Blocked"] = "Bloqueadas";
-App::$strings["Ignored"] = "Ignoradas";
-App::$strings["Hidden"] = "Ocultas";
-App::$strings["Archived"] = "Archivadas";
-App::$strings["New"] = "Nuevas";
-App::$strings["All"] = "Todos/as";
-App::$strings["New Connections"] = "Nuevas conexiones";
-App::$strings["Show pending (new) connections"] = "Mostrar conexiones (nuevas) pendientes";
-App::$strings["All Connections"] = "Todas las conexiones";
-App::$strings["Show all connections"] = "Mostrar todas las conexiones";
-App::$strings["Only show blocked connections"] = "Mostrar solo las conexiones bloqueadas";
-App::$strings["Only show ignored connections"] = "Mostrar solo conexiones ignoradas";
-App::$strings["Only show archived connections"] = "Mostrar solo las conexiones archivadas";
-App::$strings["Only show hidden connections"] = "Mostrar solo las conexiones ocultas";
-App::$strings["Pending approval"] = "Pendiente de aprobación";
-App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-App::$strings["Edit connection"] = "Editar conexión";
-App::$strings["Delete connection"] = "Eliminar conexión";
-App::$strings["Channel address"] = "Dirección del canal";
-App::$strings["Network"] = "Red";
-App::$strings["Connected"] = "Conectado/a";
-App::$strings["Approve connection"] = "Aprobar esta conexión";
-App::$strings["Ignore connection"] = "Ignorar esta conexión";
-App::$strings["Ignore"] = "Ignorar";
-App::$strings["Recent activity"] = "Actividad reciente";
-App::$strings["Connections"] = "Conexiones";
-App::$strings["Search"] = "Buscar";
-App::$strings["Search your connections"] = "Buscar sus conexiones";
-App::$strings["Connections search"] = "Buscar conexiones";
-App::$strings["Find"] = "Encontrar";
App::$strings["Could not access contact record."] = "No se ha podido acceder al registro de contacto.";
App::$strings["Could not locate selected profile."] = "No se ha podido localizar el perfil seleccionado.";
App::$strings["Connection updated."] = "Conexión actualizada.";
App::$strings["Failed to update connection record."] = "Error al actualizar el registro de la conexión.";
App::$strings["is now connected to"] = "ahora está conectado/a";
+App::$strings["No"] = "No";
+App::$strings["Yes"] = "Sí";
App::$strings["Could not access address book record."] = "No se pudo acceder al registro en su libreta de direcciones.";
App::$strings["Refresh failed - channel is currently unavailable."] = "Recarga fallida - no se puede encontrar el canal en este momento.";
App::$strings["Unable to set address book parameters."] = "No ha sido posible establecer los parámetros de la libreta de direcciones.";
@@ -395,9 +111,12 @@ App::$strings["Refresh Permissions"] = "Recargar los permisos";
App::$strings["Fetch updated permissions"] = "Obtener los permisos actualizados";
App::$strings["Recent Activity"] = "Actividad reciente";
App::$strings["View recent posts and comments"] = "Ver publicaciones y comentarios recientes";
+App::$strings["Unblock"] = "Desbloquear";
+App::$strings["Block"] = "Bloquear";
App::$strings["Block (or Unblock) all communications with this connection"] = "Bloquear (o desbloquear) todas las comunicaciones con esta conexión";
App::$strings["This connection is blocked!"] = "¡Esta conexión está bloqueada!";
App::$strings["Unignore"] = "Dejar de ignorar";
+App::$strings["Ignore"] = "Ignorar";
App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Ignorar (o dejar de ignorar) todas las comunicaciones entrantes de esta conexión";
App::$strings["This connection is ignored!"] = "¡Esta conexión es ignorada!";
App::$strings["Unarchive"] = "Desarchivar";
@@ -413,6 +132,7 @@ App::$strings["Me"] = "Yo";
App::$strings["Family"] = "Familia";
App::$strings["Friends"] = "Amigos/as";
App::$strings["Acquaintances"] = "Conocidos/as";
+App::$strings["All"] = "Todos/as";
App::$strings["Approve this connection"] = "Aprobar esta conexión";
App::$strings["Accept connection to allow communication"] = "Aceptar la conexión para permitir la comunicación";
App::$strings["Set Affinity"] = "Ajustar la afinidad";
@@ -445,29 +165,6 @@ App::$strings["Individual Permissions"] = "Permisos individuales";
App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. <strong>No</strong> puede cambiar estos ajustes aquí.";
App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. Puede cambiar estos ajustes aquí, pero no tendrán ningún consecuencia hasta que cambie los ajustes heredados.";
App::$strings["Last update:"] = "Última actualización:";
-App::$strings["Image uploaded but image cropping failed."] = "Imagen actualizada, pero el recorte de la imagen ha fallado. ";
-App::$strings["Cover Photos"] = "Imágenes de portada del perfil";
-App::$strings["Image resize failed."] = "El ajuste del tamaño de la imagen ha fallado.";
-App::$strings["Unable to process image"] = "No ha sido posible procesar la imagen";
-App::$strings["Image upload failed."] = "La carga de la imagen ha fallado.";
-App::$strings["Unable to process image."] = "No ha sido posible procesar la imagen.";
-App::$strings["female"] = "mujer";
-App::$strings["%1\$s updated her %2\$s"] = "%1\$s ha actualizado su %2\$s";
-App::$strings["male"] = "hombre";
-App::$strings["%1\$s updated his %2\$s"] = "%1\$s ha actualizado su %2\$s";
-App::$strings["%1\$s updated their %2\$s"] = "%1\$s ha actualizado su %2\$s";
-App::$strings["cover photo"] = "Imagen de portada del perfil";
-App::$strings["Photo not available."] = "Foto no disponible.";
-App::$strings["Upload File:"] = "Subir fichero:";
-App::$strings["Select a profile:"] = "Seleccionar un perfil:";
-App::$strings["Upload Cover Photo"] = "Subir imagen de portada del perfil";
-App::$strings["or"] = "o";
-App::$strings["skip this step"] = "Omitir este paso";
-App::$strings["select a photo from your photo albums"] = "Seleccione una foto de sus álbumes de fotos";
-App::$strings["Crop Image"] = "Recortar imagen";
-App::$strings["Please adjust the image cropping for optimum viewing."] = "Por favor ajuste el recorte de la imagen para una visión óptima.";
-App::$strings["Done Editing"] = "Edición completada";
-App::$strings["\$Projectname channel"] = "Canal \$Projectname";
App::$strings["Public access denied."] = "Acceso público denegado.";
App::$strings["%d rating"] = array(
0 => "%d valoración",
@@ -488,6 +185,7 @@ App::$strings["Don't suggest"] = "No sugerir:";
App::$strings["Common connections:"] = "Conexiones comunes:";
App::$strings["Global Directory"] = "Directorio global:";
App::$strings["Local Directory"] = "Directorio local:";
+App::$strings["Find"] = "Encontrar";
App::$strings["Finding:"] = "Encontrar:";
App::$strings["Channel Suggestions"] = "Sugerencias de canales";
App::$strings["next page"] = "siguiente página";
@@ -498,60 +196,66 @@ App::$strings["Reverse Alphabetic"] = "Alfabético inverso";
App::$strings["Newest to Oldest"] = "De más nuevo a más antiguo";
App::$strings["Oldest to Newest"] = "De más antiguo a más nuevo";
App::$strings["No entries (some entries may be hidden)."] = "Sin entradas (algunas entradas pueden estar ocultas).";
-App::$strings["This site is not a directory server"] = "Este sitio no es un servidor de directorio";
-App::$strings["This directory server requires an access token"] = "El servidor de este directorio necesita un \"token\" de acceso";
-App::$strings["Permission denied"] = "Permiso denegado";
-App::$strings["Invalid message"] = "Mensaje no válido";
-App::$strings["no results"] = "sin resultados";
-App::$strings["Delivery report for %1\$s"] = "Informe de entrega para %1\$s";
-App::$strings["channel sync processed"] = "se ha realizado la sincronización del canal";
-App::$strings["queued"] = "encolado";
-App::$strings["posted"] = "enviado";
-App::$strings["accepted for delivery"] = "aceptado para el envío";
-App::$strings["updated"] = "actualizado";
-App::$strings["update ignored"] = "actualización ignorada";
-App::$strings["permission denied"] = "permiso denegado";
-App::$strings["recipient not found"] = "destinatario no encontrado";
-App::$strings["mail recalled"] = "mensaje de correo revocado";
-App::$strings["duplicate mail received"] = "se ha recibido mensaje duplicado";
-App::$strings["mail delivered"] = "correo enviado";
+App::$strings["Item not found."] = "Elemento no encontrado.";
App::$strings["Item not found"] = "Elemento no encontrado";
-App::$strings["Delete block?"] = "¿Borrar bloque?";
-App::$strings["Bold"] = "Negrita";
-App::$strings["Italic"] = "Itálico ";
-App::$strings["Underline"] = "Subrayar";
-App::$strings["Quote"] = "Citar";
-App::$strings["Code"] = "Código";
-App::$strings["Attach file"] = "Adjuntar fichero";
-App::$strings["Permission settings"] = "Configuración de permisos";
-App::$strings["Public post"] = "Entrada pública";
App::$strings["Title (optional)"] = "Título (opcional)";
-App::$strings["Categories (optional, comma-separated list)"] = "Categorías (opcional, lista separada por comas)";
-App::$strings["Example: bob@example.com, mary@example.com"] = "Ejemplo: roberto@ejemplo.com, maría@ejemplo.com";
-App::$strings["Preview"] = "Previsualizar";
App::$strings["Edit Block"] = "Modificar este bloque";
-App::$strings["Delete layout?"] = "¿Borrar la plantilla?";
-App::$strings["Upload photo"] = "Subir foto";
-App::$strings["Insert YouTube video"] = "Insertar vídeo de YouTube";
-App::$strings["Insert Vorbis [.ogg] video"] = "Insertar vídeo Vorbis [.ogg]";
-App::$strings["Insert Vorbis [.ogg] audio"] = "Insertar audio Vorbis [.ogg]";
-App::$strings["Set your location"] = "Establecer su ubicación";
-App::$strings["Clear browser location"] = "Eliminar los datos de localización geográfica del navegador";
-App::$strings["Please wait"] = "Espere por favor";
-App::$strings["Layout Description (Optional)"] = "Descripción de la plantilla (opcional)";
-App::$strings["Layout Name"] = "Nombre de la plantilla";
-App::$strings["Set expiration date"] = "Configurar fecha de caducidad";
-App::$strings["Edit Layout"] = "Modificar la plantilla";
+App::$strings["No channel."] = "Ningún canal.";
+App::$strings["Common connections"] = "Conexiones comunes";
+App::$strings["No connections in common."] = "Ninguna conexión en común.";
+App::$strings["Blocked"] = "Bloqueadas";
+App::$strings["Ignored"] = "Ignoradas";
+App::$strings["Hidden"] = "Ocultas";
+App::$strings["Archived"] = "Archivadas";
+App::$strings["New"] = "Nuevas";
+App::$strings["New Connections"] = "Nuevas conexiones";
+App::$strings["Show pending (new) connections"] = "Mostrar conexiones (nuevas) pendientes";
+App::$strings["All Connections"] = "Todas las conexiones";
+App::$strings["Show all connections"] = "Mostrar todas las conexiones";
+App::$strings["Only show blocked connections"] = "Mostrar solo las conexiones bloqueadas";
+App::$strings["Only show ignored connections"] = "Mostrar solo conexiones ignoradas";
+App::$strings["Only show archived connections"] = "Mostrar solo las conexiones archivadas";
+App::$strings["Only show hidden connections"] = "Mostrar solo las conexiones ocultas";
+App::$strings["Pending approval"] = "Pendiente de aprobación";
+App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
+App::$strings["Edit connection"] = "Editar conexión";
+App::$strings["Delete connection"] = "Eliminar conexión";
+App::$strings["Channel address"] = "Dirección del canal";
+App::$strings["Network"] = "Red";
+App::$strings["Status"] = "Estado";
+App::$strings["Connected"] = "Conectado/a";
+App::$strings["Approve connection"] = "Aprobar esta conexión";
+App::$strings["Approve"] = "Aprobar";
+App::$strings["Ignore connection"] = "Ignorar esta conexión";
+App::$strings["Recent activity"] = "Actividad reciente";
+App::$strings["Connections"] = "Conexiones";
+App::$strings["Search"] = "Buscar";
+App::$strings["Search your connections"] = "Buscar sus conexiones";
+App::$strings["Connections search"] = "Buscar conexiones";
+App::$strings["Image uploaded but image cropping failed."] = "Imagen actualizada, pero el recorte de la imagen ha fallado. ";
+App::$strings["Cover Photos"] = "Imágenes de portada del perfil";
+App::$strings["Image resize failed."] = "El ajuste del tamaño de la imagen ha fallado.";
+App::$strings["Unable to process image"] = "No ha sido posible procesar la imagen";
+App::$strings["Image upload failed."] = "La carga de la imagen ha fallado.";
+App::$strings["Unable to process image."] = "No ha sido posible procesar la imagen.";
+App::$strings["female"] = "mujer";
+App::$strings["%1\$s updated her %2\$s"] = "%1\$s ha actualizado su %2\$s";
+App::$strings["male"] = "hombre";
+App::$strings["%1\$s updated his %2\$s"] = "%1\$s ha actualizado su %2\$s";
+App::$strings["%1\$s updated their %2\$s"] = "%1\$s ha actualizado su %2\$s";
+App::$strings["cover photo"] = "Imagen de portada del perfil";
+App::$strings["Photo not available."] = "Foto no disponible.";
+App::$strings["Upload File:"] = "Subir fichero:";
+App::$strings["Select a profile:"] = "Seleccionar un perfil:";
+App::$strings["Upload Cover Photo"] = "Subir imagen de portada del perfil";
+App::$strings["or"] = "o";
+App::$strings["skip this step"] = "Omitir este paso";
+App::$strings["select a photo from your photo albums"] = "Seleccione una foto de sus álbumes de fotos";
+App::$strings["Crop Image"] = "Recortar imagen";
+App::$strings["Please adjust the image cropping for optimum viewing."] = "Por favor ajuste el recorte de la imagen para una visión óptima.";
+App::$strings["Done Editing"] = "Edición completada";
App::$strings["Item is not editable"] = "El elemento no es editable";
-App::$strings["Expires YYYY-MM-DD HH:MM"] = "Caduca YYYY-MM-DD HH:MM";
-App::$strings["Delete item?"] = "¿Borrar elemento?";
-App::$strings["Toggle voting"] = "Cambiar votación";
-App::$strings["OK"] = "OK";
-App::$strings["Cancel"] = "Cancelar";
App::$strings["Edit post"] = "Editar la entrada";
-App::$strings["Delete webpage?"] = "¿Eliminar la página web?";
-App::$strings["Page link title"] = "Título del enlace de la página";
-App::$strings["Edit Webpage"] = "Editar la página web";
App::$strings["Calendar entries imported."] = "Entradas de calendario importadas.";
App::$strings["No calendar entries found."] = "No se han encontrado entradas de calendario.";
App::$strings["Event can not end before it has started."] = "Un evento no puede terminar antes de que haya comenzado.";
@@ -561,6 +265,7 @@ App::$strings["Event not found."] = "Evento no encontrado.";
App::$strings["event"] = "evento";
App::$strings["Edit event title"] = "Editar el título del evento";
App::$strings["Event title"] = "Título del evento";
+App::$strings["Required"] = "Obligatorio";
App::$strings["Categories (comma-separated list)"] = "Categorías (lista separada por comas)";
App::$strings["Edit Category"] = "Editar la categoría";
App::$strings["Category"] = "Categoría";
@@ -572,9 +277,12 @@ App::$strings["Finish date and time"] = "Fecha y hora de terminación";
App::$strings["Adjust for viewer timezone"] = "Ajustar para obtener el visor de los husos horarios";
App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Importante para los eventos que suceden en un lugar determinado. No es práctico para los globales.";
App::$strings["Edit Description"] = "Editar la descripción";
+App::$strings["Description"] = "Descripción";
App::$strings["Edit Location"] = "Modificar la dirección";
App::$strings["Location"] = "Ubicación";
App::$strings["Share this event"] = "Compartir este evento";
+App::$strings["Preview"] = "Previsualizar";
+App::$strings["Permission settings"] = "Configuración de permisos";
App::$strings["Advanced Options"] = "Opciones avanzadas";
App::$strings["Edit event"] = "Editar evento";
App::$strings["Delete event"] = "Borrar evento";
@@ -582,26 +290,34 @@ App::$strings["calendar"] = "calendario";
App::$strings["Event removed"] = "Evento borrado";
App::$strings["Failed to remove event"] = "Error al eliminar el evento";
App::$strings["Photos"] = "Fotos";
-App::$strings["Share content from Firefox to \$Projectname"] = "Compartir contenido desde Firefox a \$Projectname";
-App::$strings["Activate the Firefox \$Projectname provider"] = "Servicio de compartición de Firefox: activar el proveedor \$Projectname ";
+App::$strings["Cancel"] = "Cancelar";
+App::$strings["This site is not a directory server"] = "Este sitio no es un servidor de directorio";
+App::$strings["This directory server requires an access token"] = "El servidor de este directorio necesita un \"token\" de acceso";
App::$strings["Save to Folder:"] = "Guardar en carpeta:";
App::$strings["- select -"] = "- seleccionar -";
-App::$strings["Permission Denied."] = "Permiso denegado";
-App::$strings["File not found."] = "Fichero no encontrado.";
-App::$strings["Edit file permissions"] = "Modificar los permisos del fichero";
-App::$strings["Set/edit permissions"] = "Establecer/editar los permisos";
-App::$strings["Include all files and sub folders"] = "Incluir todos los ficheros y subcarpetas";
-App::$strings["Return to file list"] = "Volver a la lista de ficheros";
-App::$strings["Copy/paste this code to attach file to a post"] = "Copiar/pegar este código para adjuntar el fichero al envío";
-App::$strings["Copy/paste this URL to link file from a web page"] = "Copiar/pegar esta dirección para enlazar el fichero desde una página web";
-App::$strings["Share this file"] = "Compartir este fichero";
-App::$strings["Show URL to this file"] = "Mostrar la dirección de este fichero";
-App::$strings["Notify your contacts about this file"] = "Avisar a sus contactos sobre este fichero";
+App::$strings["Save"] = "Guardar";
+App::$strings["Invalid message"] = "Mensaje no válido";
+App::$strings["no results"] = "sin resultados";
+App::$strings["Delivery report for %1\$s"] = "Informe de entrega para %1\$s";
+App::$strings["channel sync processed"] = "se ha realizado la sincronización del canal";
+App::$strings["queued"] = "encolado";
+App::$strings["posted"] = "enviado";
+App::$strings["accepted for delivery"] = "aceptado para el envío";
+App::$strings["updated"] = "actualizado";
+App::$strings["update ignored"] = "actualización ignorada";
+App::$strings["permission denied"] = "permiso denegado";
+App::$strings["recipient not found"] = "destinatario no encontrado";
+App::$strings["mail recalled"] = "mensaje de correo revocado";
+App::$strings["duplicate mail received"] = "se ha recibido mensaje duplicado";
+App::$strings["mail delivered"] = "correo enviado";
+App::$strings["Layout Name"] = "Nombre de la plantilla";
+App::$strings["Layout Description (Optional)"] = "Descripción de la plantilla (opcional)";
+App::$strings["Edit Layout"] = "Modificar la plantilla";
+App::$strings["Page link"] = "Enlace de la página";
+App::$strings["Edit Webpage"] = "Editar la página web";
App::$strings["Channel added."] = "Canal añadido.";
-App::$strings["Contact not found."] = "Contacto no encontrado";
-App::$strings["Friend suggestion sent."] = "Enviar sugerencia a un amigo.";
-App::$strings["Suggest Friends"] = "Sugerir amigos";
-App::$strings["Suggest a friend for %s"] = "Sugerir un amigo a %s";
+App::$strings["network"] = "red";
+App::$strings["RSS"] = "RSS";
App::$strings["Privacy group created."] = "El grupo de canales ha sido creado.";
App::$strings["Could not create privacy group."] = "No se puede crear el grupo de canales";
App::$strings["Privacy group not found."] = "Grupo de canales no encontrado.";
@@ -615,39 +331,29 @@ App::$strings["Privacy group editor"] = "Editor de grupos de canales";
App::$strings["Members"] = "Miembros";
App::$strings["All Connected Channels"] = "Todos los canales conectados";
App::$strings["Click on a channel to add or remove."] = "Haga clic en un canal para agregarlo o quitarlo.";
+App::$strings["Share content from Firefox to \$Projectname"] = "Compartir contenido desde Firefox a \$Projectname";
+App::$strings["Activate the Firefox \$Projectname provider"] = "Servicio de compartición de Firefox: activar el proveedor \$Projectname ";
+App::$strings["Authorize application connection"] = "Autorizar una conexión de aplicación";
+App::$strings["Return to your app and insert this Securty Code:"] = "Volver a su aplicación e introducir este código de seguridad:";
+App::$strings["Please login to continue."] = "Por favor inicie sesión para continuar.";
+App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "¿Desea autorizar a esta aplicación a acceder a sus publicaciones y contactos, y/o crear nuevas publicaciones por usted?";
App::$strings["Documentation Search"] = "Búsqueda de Documentación";
App::$strings["Help:"] = "Ayuda:";
App::$strings["Help"] = "Ayuda";
App::$strings["\$Projectname Documentation"] = "Documentación de \$Projectname";
-App::$strings["\$Projectname"] = "\$Projectname";
-App::$strings["Welcome to %s"] = "Bienvenido a %s";
-App::$strings["First Name"] = "Nombre";
-App::$strings["Last Name"] = "Apellido";
-App::$strings["Nickname"] = "Sobrenombre o Alias";
-App::$strings["Full Name"] = "Nombre completo";
-App::$strings["Profile Photo"] = "Foto del perfil";
-App::$strings["Profile Photo 16px"] = "Foto del perfil 16px";
-App::$strings["Profile Photo 32px"] = "Foto del perfil 32px";
-App::$strings["Profile Photo 48px"] = "Foto del perfil 48px";
-App::$strings["Profile Photo 64px"] = "Foto del perfil 64px";
-App::$strings["Profile Photo 80px"] = "Foto del perfil 80px";
-App::$strings["Profile Photo 128px"] = "Foto del perfil 128px";
-App::$strings["Timezone"] = "Huso horario";
-App::$strings["Homepage URL"] = "Dirección de la página personal";
-App::$strings["Language"] = "Idioma";
-App::$strings["Birth Year"] = "Año de nacimiento";
-App::$strings["Birth Month"] = "Mes de nacimiento";
-App::$strings["Birth Day"] = "Día de nacimiento";
-App::$strings["Birthdate"] = "Fecha de nacimiento";
-App::$strings["Gender"] = "Género";
-App::$strings["Male"] = "Hombre";
-App::$strings["Female"] = "Mujer";
-App::$strings["webpage"] = "página web";
-App::$strings["block"] = "bloque";
-App::$strings["layout"] = "plantilla";
-App::$strings["menu"] = "menú";
-App::$strings["%s element installed"] = "%s elemento instalado";
-App::$strings["%s element installation failed"] = "Elemento con instalación fallida: %s";
+App::$strings["Permission Denied."] = "Permiso denegado";
+App::$strings["File not found."] = "Fichero no encontrado.";
+App::$strings["Edit file permissions"] = "Modificar los permisos del fichero";
+App::$strings["Set/edit permissions"] = "Establecer/editar los permisos";
+App::$strings["Include all files and sub folders"] = "Incluir todos los ficheros y subcarpetas";
+App::$strings["Return to file list"] = "Volver a la lista de ficheros";
+App::$strings["Copy/paste this code to attach file to a post"] = "Copiar/pegar este código para adjuntar el fichero al envío";
+App::$strings["Copy/paste this URL to link file from a web page"] = "Copiar/pegar esta dirección para enlazar el fichero desde una página web";
+App::$strings["Share this file"] = "Compartir este fichero";
+App::$strings["Show URL to this file"] = "Mostrar la dirección de este fichero";
+App::$strings["Notify your contacts about this file"] = "Avisar a sus contactos sobre este fichero";
+App::$strings["Apps"] = "Aplicaciones (apps)";
+App::$strings["Item not available."] = "Elemento no disponible";
App::$strings["Your service plan only allows %d channels."] = "Su paquete de servicios solo permite %d canales.";
App::$strings["Nothing to import."] = "No hay nada para importar.";
App::$strings["Unable to download data from old server"] = "No se han podido descargar datos de su antiguo servidor";
@@ -668,28 +374,6 @@ App::$strings["For either option, please choose whether to make this hub your ne
App::$strings["Make this hub my primary location"] = "Convertir este servidor en mi ubicación primaria";
App::$strings["Import existing posts if possible (experimental - limited by available memory"] = "Importar el contenido publicado si es posible (experimental - limitado por la memoria disponible";
App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Este proceso puede tardar varios minutos en completarse. Por favor envíe el formulario una sola vez y mantenga esta página abierta hasta que termine.";
-App::$strings["Import completed"] = "Importación completada";
-App::$strings["Import Items"] = "Importar elementos";
-App::$strings["Use this form to import existing posts and content from an export file."] = "Utilice este formulario para importar entradas existentes y contenido desde un archivo de exportación.";
-App::$strings["Total invitation limit exceeded."] = "Se ha superado el límite máximo de invitaciones.";
-App::$strings["%s : Not a valid email address."] = "%s : No es una dirección de correo electrónico válida. ";
-App::$strings["Please join us on \$Projectname"] = "Únase a nosotros en \$Projectname";
-App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Excedido el límite de invitaciones. Por favor, contacte con el Administrador de su sitio.";
-App::$strings["%s : Message delivery failed."] = "%s : Falló el envío del mensaje.";
-App::$strings["%d message sent."] = array(
- 0 => "%d mensajes enviados.",
- 1 => "%d mensajes enviados.",
-);
-App::$strings["You have no more invitations available"] = "No tiene más invitaciones disponibles";
-App::$strings["Send invitations"] = "Enviar invitaciones";
-App::$strings["Enter email addresses, one per line:"] = "Introduzca las direcciones de correo electrónico, una por línea:";
-App::$strings["Your message:"] = "Su mensaje:";
-App::$strings["Please join my community on \$Projectname."] = "Por favor, únase a mi comunidad en \$Projectname.";
-App::$strings["You will need to supply this invitation code:"] = "Tendrá que suministrar este código de invitación:";
-App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Regístrese en cualquier sitio de \$Projectname (están todos interconectados)";
-App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Introduzca mi dirección \$Projectname en la caja de búsqueda del sitio.";
-App::$strings["or visit"] = "o visitar";
-App::$strings["3. Click [Connect]"] = "3. Pulse [conectar]";
App::$strings["Unable to locate original post."] = "No ha sido posible encontrar la entrada original.";
App::$strings["Empty post discarded."] = "La entrada vacía ha sido desechada.";
App::$strings["Executable content type not permitted to this channel."] = "Contenido de tipo ejecutable no permitido en este canal.";
@@ -702,6 +386,36 @@ App::$strings["Layouts"] = "Plantillas";
App::$strings["Comanche page description language help"] = "Página de ayuda del lenguaje de descripción de páginas (PDL) Comanche";
App::$strings["Layout Description"] = "Descripción de la plantilla";
App::$strings["Download PDL file"] = "Descargar el fichero PDL";
+App::$strings["\$Projectname"] = "\$Projectname";
+App::$strings["Welcome to %s"] = "Bienvenido a %s";
+App::$strings["First Name"] = "Nombre";
+App::$strings["Last Name"] = "Apellido";
+App::$strings["Nickname"] = "Sobrenombre o Alias";
+App::$strings["Full Name"] = "Nombre completo";
+App::$strings["Email"] = "Correo electrónico";
+App::$strings["Profile Photo"] = "Foto del perfil";
+App::$strings["Profile Photo 16px"] = "Foto del perfil 16px";
+App::$strings["Profile Photo 32px"] = "Foto del perfil 32px";
+App::$strings["Profile Photo 48px"] = "Foto del perfil 48px";
+App::$strings["Profile Photo 64px"] = "Foto del perfil 64px";
+App::$strings["Profile Photo 80px"] = "Foto del perfil 80px";
+App::$strings["Profile Photo 128px"] = "Foto del perfil 128px";
+App::$strings["Timezone"] = "Huso horario";
+App::$strings["Homepage URL"] = "Dirección de la página personal";
+App::$strings["Language"] = "Idioma";
+App::$strings["Birth Year"] = "Año de nacimiento";
+App::$strings["Birth Month"] = "Mes de nacimiento";
+App::$strings["Birth Day"] = "Día de nacimiento";
+App::$strings["Birthdate"] = "Fecha de nacimiento";
+App::$strings["Gender"] = "Género";
+App::$strings["Male"] = "Hombre";
+App::$strings["Female"] = "Mujer";
+App::$strings["webpage"] = "página web";
+App::$strings["block"] = "bloque";
+App::$strings["layout"] = "plantilla";
+App::$strings["menu"] = "menú";
+App::$strings["%s element installed"] = "%s elemento instalado";
+App::$strings["%s element installation failed"] = "Elemento con instalación fallida: %s";
App::$strings["Like/Dislike"] = "Me gusta/No me gusta";
App::$strings["This action is restricted to members."] = "Esta acción está restringida solo para miembros.";
App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "Por favor, <a href=\"rmagic\">identifíquese con su \$Projectname ID</a> o <a href=\"register\">rregístrese como un nuevo \$Projectname member</a> para continuar.";
@@ -722,6 +436,28 @@ App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s n
App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s quizá participe";
App::$strings["Action completed."] = "Acción completada.";
App::$strings["Thank you."] = "Gracias.";
+App::$strings["Import completed"] = "Importación completada";
+App::$strings["Import Items"] = "Importar elementos";
+App::$strings["Use this form to import existing posts and content from an export file."] = "Utilice este formulario para importar entradas existentes y contenido desde un archivo de exportación.";
+App::$strings["Total invitation limit exceeded."] = "Se ha superado el límite máximo de invitaciones.";
+App::$strings["%s : Not a valid email address."] = "%s : No es una dirección de correo electrónico válida. ";
+App::$strings["Please join us on \$Projectname"] = "Únase a nosotros en \$Projectname";
+App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Excedido el límite de invitaciones. Por favor, contacte con el Administrador de su sitio.";
+App::$strings["%s : Message delivery failed."] = "%s : Falló el envío del mensaje.";
+App::$strings["%d message sent."] = array(
+ 0 => "%d mensajes enviados.",
+ 1 => "%d mensajes enviados.",
+);
+App::$strings["You have no more invitations available"] = "No tiene más invitaciones disponibles";
+App::$strings["Send invitations"] = "Enviar invitaciones";
+App::$strings["Enter email addresses, one per line:"] = "Introduzca las direcciones de correo electrónico, una por línea:";
+App::$strings["Your message:"] = "Su mensaje:";
+App::$strings["Please join my community on \$Projectname."] = "Por favor, únase a mi comunidad en \$Projectname.";
+App::$strings["You will need to supply this invitation code:"] = "Tendrá que suministrar este código de invitación:";
+App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Regístrese en cualquier sitio de \$Projectname (están todos interconectados)";
+App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Introduzca mi dirección \$Projectname en la caja de búsqueda del sitio.";
+App::$strings["or visit"] = "o visitar";
+App::$strings["3. Click [Connect]"] = "3. Pulse [conectar]";
App::$strings["Remote privacy information not available."] = "La información privada remota no está disponible.";
App::$strings["Visible to:"] = "Visible para:";
App::$strings["Location not found."] = "Dirección no encontrada.";
@@ -730,28 +466,13 @@ App::$strings["Please select another location to become primary before removing
App::$strings["Syncing locations"] = "Sincronización de ubicaciones";
App::$strings["No locations found."] = "No encontrada ninguna dirección.";
App::$strings["Manage Channel Locations"] = "Gestionar las direcciones del canal";
+App::$strings["Address"] = "Dirección";
App::$strings["Primary"] = "Primario";
App::$strings["Drop"] = "Eliminar";
App::$strings["Sync Now"] = "Sincronizar ahora";
App::$strings["Please wait several minutes between consecutive operations."] = "Por favor, espere algunos minutos entre operaciones consecutivas.";
App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Cuando sea posible, elimine una ubicación iniciando sesión en el sitio web o \"hub\" y borrando su canal.";
App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Utilice este formulario para eliminar la dirección si el \"hub\" no está funcionando desde hace tiempo.";
-App::$strings["No valid account found."] = "No se ha encontrado una cuenta válida.";
-App::$strings["Password reset request issued. Check your email."] = "Se ha recibido una solicitud de restablecimiento de contraseña. Consulte su correo electrónico.";
-App::$strings["Site Member (%s)"] = "Usuario del sitio (%s)";
-App::$strings["Password reset requested at %s"] = "Se ha solicitado restablecer la contraseña en %s";
-App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado.";
-App::$strings["Password Reset"] = "Restablecer la contraseña";
-App::$strings["Your password has been reset as requested."] = "Su contraseña ha sido restablecida según lo solicitó.";
-App::$strings["Your new password is"] = "Su nueva contraseña es";
-App::$strings["Save or copy your new password - and then"] = "Guarde o copie su nueva contraseña - y después";
-App::$strings["click here to login"] = "pulse aquí para conectarse";
-App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Puede cambiar la contraseña en la página <em>Ajustes</em> una vez iniciada la sesión.";
-App::$strings["Your password has changed at %s"] = "Su contraseña en %s ha sido cambiada";
-App::$strings["Forgot your Password?"] = "¿Ha olvidado su contraseña?";
-App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Introduzca y envíe su dirección de correo electrónico para el restablecimiento de su contraseña. Luego revise su correo para obtener más instrucciones.";
-App::$strings["Email Address"] = "Dirección de correo electrónico";
-App::$strings["Reset"] = "Reiniciar";
App::$strings["Hub not found."] = "Servidor no encontrado";
App::$strings["Unable to lookup recipient."] = "Imposible asociar a un destinatario.";
App::$strings["Unable to communicate with requested channel."] = "Imposible comunicar con el canal solicitado.";
@@ -760,11 +481,14 @@ App::$strings["Selected channel has private message restrictions. Send failed."]
App::$strings["Messages"] = "Mensajes";
App::$strings["Message recalled."] = "Mensaje revocado.";
App::$strings["Conversation removed."] = "Conversación eliminada.";
+App::$strings["Expires YYYY-MM-DD HH:MM"] = "Caduca YYYY-MM-DD HH:MM";
App::$strings["Requested channel is not in this network"] = "El canal solicitado no existe en esta red";
App::$strings["Send Private Message"] = "Enviar un mensaje privado";
App::$strings["To:"] = "Para:";
App::$strings["Subject:"] = "Asunto:";
+App::$strings["Attach file"] = "Adjuntar fichero";
App::$strings["Send"] = "Enviar";
+App::$strings["Set expiration date"] = "Configurar fecha de caducidad";
App::$strings["Delete message"] = "Borrar mensaje";
App::$strings["Delivery report"] = "Informe de transmisión";
App::$strings["Recall message"] = "Revocar el mensaje";
@@ -783,10 +507,22 @@ App::$strings["Make Default"] = "Convertir en predeterminado";
App::$strings["%d new messages"] = "%d mensajes nuevos";
App::$strings["%d new introductions"] = "%d nuevas isolicitudes de conexión";
App::$strings["Delegated Channel"] = "Canal delegado";
-App::$strings["Profile Match"] = "Perfil compatible";
-App::$strings["No keywords to match. Please add keywords to your default profile."] = "No hay palabras clave en el perfil principal para poder encontrar perfiles compatibles. Por favor, añada palabras clave a su perfil principal.";
-App::$strings["is interested in:"] = "está interesado en:";
-App::$strings["No matches"] = "No se han encontrado perfiles compatibles";
+App::$strings["No valid account found."] = "No se ha encontrado una cuenta válida.";
+App::$strings["Password reset request issued. Check your email."] = "Se ha recibido una solicitud de restablecimiento de contraseña. Consulte su correo electrónico.";
+App::$strings["Site Member (%s)"] = "Usuario del sitio (%s)";
+App::$strings["Password reset requested at %s"] = "Se ha solicitado restablecer la contraseña en %s";
+App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado.";
+App::$strings["Password Reset"] = "Restablecer la contraseña";
+App::$strings["Your password has been reset as requested."] = "Su contraseña ha sido restablecida según lo solicitó.";
+App::$strings["Your new password is"] = "Su nueva contraseña es";
+App::$strings["Save or copy your new password - and then"] = "Guarde o copie su nueva contraseña - y después";
+App::$strings["click here to login"] = "pulse aquí para conectarse";
+App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Puede cambiar la contraseña en la página <em>Ajustes</em> una vez iniciada la sesión.";
+App::$strings["Your password has changed at %s"] = "Su contraseña en %s ha sido cambiada";
+App::$strings["Forgot your Password?"] = "¿Ha olvidado su contraseña?";
+App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Introduzca y envíe su dirección de correo electrónico para el restablecimiento de su contraseña. Luego revise su correo para obtener más instrucciones.";
+App::$strings["Email Address"] = "Dirección de correo electrónico";
+App::$strings["Reset"] = "Reiniciar";
App::$strings["Unable to update menu."] = "No se puede actualizar el menú.";
App::$strings["Unable to create menu."] = "No se puede crear el menú.";
App::$strings["Menu Name"] = "Nombre del menú";
@@ -811,6 +547,22 @@ App::$strings["Menu title"] = "Título del menú";
App::$strings["Menu title as seen by others"] = "El título del menú tal como será visto por los demás";
App::$strings["Allow bookmarks"] = "Permitir marcadores";
App::$strings["Not found."] = "No encontrado.";
+App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s está %2\$s";
+App::$strings["Mood"] = "Estado de ánimo";
+App::$strings["Set your current mood and tell your friends"] = "Describir su estado de ánimo para comunicárselo a sus amigos";
+App::$strings["Profile Match"] = "Perfil compatible";
+App::$strings["No keywords to match. Please add keywords to your default profile."] = "No hay palabras clave en el perfil principal para poder encontrar perfiles compatibles. Por favor, añada palabras clave a su perfil principal.";
+App::$strings["is interested in:"] = "está interesado en:";
+App::$strings["No matches"] = "No se han encontrado perfiles compatibles";
+App::$strings["No such group"] = "No se encuentra el grupo";
+App::$strings["No such channel"] = "No se encuentra el canal";
+App::$strings["forum"] = "foro";
+App::$strings["Search Results For:"] = "Buscar resultados para:";
+App::$strings["Privacy group is empty"] = "El grupo de canales está vacío";
+App::$strings["Privacy group: "] = "Grupo de canales: ";
+App::$strings["Invalid connection."] = "Conexión no válida.";
+App::$strings["No more system notifications."] = "No hay más notificaciones del sistema";
+App::$strings["System Notifications"] = "Notificaciones del sistema";
App::$strings["Unable to create element."] = "Imposible crear el elemento.";
App::$strings["Unable to update menu element."] = "No es posible actualizar el elemento del menú.";
App::$strings["Unable to add menu element."] = "No es posible añadir el elemento al menú";
@@ -840,16 +592,6 @@ App::$strings["Menu item deleted."] = "Este elemento del menú ha sido borrado";
App::$strings["Menu item could not be deleted."] = "Este elemento del menú no puede ser borrado.";
App::$strings["Edit Menu Element"] = "Editar elemento del menú";
App::$strings["Link text"] = "Texto del enlace";
-App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s está %2\$s";
-App::$strings["Mood"] = "Estado de ánimo";
-App::$strings["Set your current mood and tell your friends"] = "Describir su estado de ánimo para comunicárselo a sus amigos";
-App::$strings["No such group"] = "No se encuentra el grupo";
-App::$strings["No such channel"] = "No se encuentra el canal";
-App::$strings["forum"] = "foro";
-App::$strings["Search Results For:"] = "Buscar resultados para:";
-App::$strings["Privacy group is empty"] = "El grupo de canales está vacío";
-App::$strings["Privacy group: "] = "Grupo de canales: ";
-App::$strings["Invalid connection."] = "Conexión no válida.";
App::$strings["Name or caption"] = "Nombre o descripción";
App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""] = "Ejemplos: \"Juan García\", \"Luisa y sus caballos\", \"Fútbol\", \"Grupo de aviación\"";
App::$strings["Choose a short nickname"] = "Elija un alias corto";
@@ -862,22 +604,7 @@ App::$strings["A channel is your identity on this network. It can represent a pe
App::$strings["or <a href=\"import\">import an existing channel</a> from another location."] = "O <a href=\"import\">importar un canal existente</a> desde otro lugar.";
App::$strings["Invalid request identifier."] = "Petición inválida del identificador.";
App::$strings["Discard"] = "Descartar";
-App::$strings["No more system notifications."] = "No hay más notificaciones del sistema";
-App::$strings["System Notifications"] = "Notificaciones del sistema";
App::$strings["Mark all system notifications seen"] = "Marcar todas las notificaciones de sistema como leídas";
-App::$strings["Unable to find your hub."] = "No se puede encontrar su servidor.";
-App::$strings["Post successful."] = "Enviado con éxito.";
-App::$strings["OpenID protocol error. No ID returned."] = "Error del protocolo OpenID. Ningún ID recibido como respuesta.";
-App::$strings["Login failed."] = "El acceso ha fallado.";
-App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
-App::$strings["This setting requires special processing and editing has been blocked."] = "Este ajuste necesita de un proceso especial y la edición ha sido bloqueada.";
-App::$strings["Configuration Editor"] = "Editor de configuración";
-App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Atención: El cambio de algunos ajustes puede volver inutilizable su canal. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica.";
-App::$strings["Layout updated."] = "Plantilla actualizada.";
-App::$strings["Edit System Page Description"] = "Editor del Sistema de Descripción de Páginas";
-App::$strings["Layout not found."] = "Plantilla no encontrada";
-App::$strings["Module Name:"] = "Nombre del módulo:";
-App::$strings["Layout Help"] = "Ayuda para el diseño de plantillas de página";
App::$strings["Page owner information could not be retrieved."] = "La información del propietario de la página no pudo ser recuperada.";
App::$strings["Profile Photos"] = "Fotos del perfil";
App::$strings["Album not found."] = "Ãlbum no encontrado.";
@@ -918,6 +645,7 @@ App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Ejemplos: @
App::$strings["Flag as adult in album view"] = "Marcar como \"solo para adultos\" en el álbum";
App::$strings["I like this (toggle)"] = "Me gusta (cambiar)";
App::$strings["I don't like this (toggle)"] = "No me gusta esto (cambiar)";
+App::$strings["Please wait"] = "Espere por favor";
App::$strings["This is you"] = "Este es usted";
App::$strings["Comment"] = "Comentar";
App::$strings["__ctx:title__ Likes"] = "Me gusta";
@@ -950,6 +678,19 @@ App::$strings["added your channel"] = "añadió este canal a sus conexiones";
App::$strings["g A l F d"] = "g A l d F";
App::$strings["[today]"] = "[hoy]";
App::$strings["posted an event"] = "publicó un evento";
+App::$strings["Unable to find your hub."] = "No se puede encontrar su servidor.";
+App::$strings["Post successful."] = "Enviado con éxito.";
+App::$strings["OpenID protocol error. No ID returned."] = "Error del protocolo OpenID. Ningún ID recibido como respuesta.";
+App::$strings["Login failed."] = "El acceso ha fallado.";
+App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
+App::$strings["This setting requires special processing and editing has been blocked."] = "Este ajuste necesita de un proceso especial y la edición ha sido bloqueada.";
+App::$strings["Configuration Editor"] = "Editor de configuración";
+App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Atención: El cambio de algunos ajustes puede volver inutilizable su canal. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica.";
+App::$strings["Layout updated."] = "Plantilla actualizada.";
+App::$strings["Edit System Page Description"] = "Editor del Sistema de Descripción de Páginas";
+App::$strings["Layout not found."] = "Plantilla no encontrada";
+App::$strings["Module Name:"] = "Nombre del módulo:";
+App::$strings["Layout Help"] = "Ayuda para el diseño de plantillas de página";
App::$strings["Poke"] = "Toques y otras cosas";
App::$strings["Poke somebody"] = "Dar un toque a alguien";
App::$strings["Poke/Prod"] = "Toque/Incitación";
@@ -958,8 +699,6 @@ App::$strings["Recipient"] = "Destinatario";
App::$strings["Choose what you wish to do to recipient"] = "Elegir qué desea enviar al destinatario";
App::$strings["Make this post private"] = "Convertir en privado este envío";
App::$strings["Fetching URL returns error: %1\$s"] = "Al intentar obtener la dirección, retorna el error: %1\$s";
-App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Recargue la página o limpie el caché del navegador si la nueva foto no se muestra inmediatamente.";
-App::$strings["Upload Profile Photo"] = "Subir foto de perfil";
App::$strings["Profile not found."] = "Perfil no encontrado.";
App::$strings["Profile deleted."] = "Perfil eliminado.";
App::$strings["Profile-"] = "Perfil-";
@@ -1026,6 +765,8 @@ App::$strings["Contact information and social networks"] = "Información de cont
App::$strings["My other channels"] = "Mis otros canales";
App::$strings["Profile Image"] = "Imagen del perfil";
App::$strings["Edit Profiles"] = "Editar perfiles";
+App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Recargue la página o limpie el caché del navegador si la nueva foto no se muestra inmediatamente.";
+App::$strings["Upload Profile Photo"] = "Subir foto de perfil";
App::$strings["Invalid profile identifier."] = "Identificador del perfil no válido";
App::$strings["Profile Visibility Editor"] = "Editor de visibilidad del perfil";
App::$strings["Profile"] = "Perfil";
@@ -1036,6 +777,8 @@ App::$strings["The listed hubs allow public registration for the \$Projectname n
App::$strings["Hub URL"] = "Dirección del hub";
App::$strings["Access Type"] = "Tipo de acceso";
App::$strings["Registration Policy"] = "Normas de registro";
+App::$strings["Stats"] = "Estadísticas";
+App::$strings["Software"] = "Software";
App::$strings["Ratings"] = "Valoraciones";
App::$strings["Rate"] = "Valorar";
App::$strings["Website:"] = "Sitio web:";
@@ -1046,6 +789,261 @@ App::$strings["No ratings"] = "Ninguna valoración";
App::$strings["Rating: "] = "Valoración:";
App::$strings["Website: "] = "Sitio web:";
App::$strings["Description: "] = "Descripción:";
+App::$strings["Theme settings updated."] = "Ajustes del tema actualizados.";
+App::$strings["# Accounts"] = "# Cuentas";
+App::$strings["# blocked accounts"] = "# cuentas bloqueadas";
+App::$strings["# expired accounts"] = "# cuentas caducadas";
+App::$strings["# expiring accounts"] = "# cuentas que caducan";
+App::$strings["# Channels"] = "# Canales";
+App::$strings["# primary"] = "# primario";
+App::$strings["# clones"] = "# clones";
+App::$strings["Message queues"] = "Mensajes en cola";
+App::$strings["Your software should be updated"] = "Debe actualizar su software";
+App::$strings["Administration"] = "Administración";
+App::$strings["Summary"] = "Sumario";
+App::$strings["Registered accounts"] = "Cuentas registradas";
+App::$strings["Pending registrations"] = "Registros pendientes";
+App::$strings["Registered channels"] = "Canales registrados";
+App::$strings["Active plugins"] = "Extensiones (plugins) activas";
+App::$strings["Version"] = "Versión";
+App::$strings["Repository version (master)"] = "Versión del repositorio (master)";
+App::$strings["Repository version (dev)"] = "Versión del repositorio (dev)";
+App::$strings["Site settings updated."] = "Ajustes del sitio actualizados.";
+App::$strings["Default"] = "Predeterminado";
+App::$strings["mobile"] = "móvil";
+App::$strings["experimental"] = "experimental";
+App::$strings["unsupported"] = "no soportado";
+App::$strings["Yes - with approval"] = "Sí - con aprobación";
+App::$strings["My site is not a public server"] = "Mi sitio no es un servidor público";
+App::$strings["My site has paid access only"] = "Mi sitio es un servicio de pago";
+App::$strings["My site has free access only"] = "Mi sitio es un servicio gratuito";
+App::$strings["My site offers free accounts with optional paid upgrades"] = "Mi sitio ofrece cuentas gratuitas con opciones extra de pago";
+App::$strings["Site"] = "Sitio";
+App::$strings["Registration"] = "Registro";
+App::$strings["File upload"] = "Subir fichero";
+App::$strings["Policies"] = "Políticas";
+App::$strings["Advanced"] = "Avanzado";
+App::$strings["Site name"] = "Nombre del sitio";
+App::$strings["Banner/Logo"] = "Banner/Logo";
+App::$strings["Administrator Information"] = "Información del Administrador";
+App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Información de contacto de los administradores del sitio. Visible en la página \"siteinfo\". Se puede usar BBCode";
+App::$strings["System language"] = "Idioma del sistema";
+App::$strings["System theme"] = "Tema gráfico del sistema";
+App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Tema del sistema por defecto - se puede cambiar por cada perfil de usuario - <a href='#' id='cnftheme'>modificar los ajustes del tema</a>";
+App::$strings["Mobile system theme"] = "Tema del sistema para móviles";
+App::$strings["Theme for mobile devices"] = "Tema para dispositivos móviles";
+App::$strings["Allow Feeds as Connections"] = "Permitir contenidos RSS como conexiones";
+App::$strings["(Heavy system resource usage)"] = "(Uso intenso de los recursos del sistema)";
+App::$strings["Maximum image size"] = "Tamaño máximo de la imagen";
+App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Tamaño máximo en bytes de la imagen subida. Por defecto, es 0, lo que significa que no hay límites.";
+App::$strings["Does this site allow new member registration?"] = "¿Debe este sitio permitir el registro de nuevos miembros?";
+App::$strings["Invitation only"] = "Solo con una invitación";
+App::$strings["Only allow new member registrations with an invitation code. Above register policy must be set to Yes."] = "Solo se permiten inscripciones de nuevos miembros con un código de invitación. Además, deben aceptarse los términos del registro marcando \"Sí\".";
+App::$strings["Which best describes the types of account offered by this hub?"] = "¿Cómo describiría el tipo de servicio ofrecido por este servidor?";
+App::$strings["Register text"] = "Texto del registro";
+App::$strings["Will be displayed prominently on the registration page."] = "Se mostrará de forma destacada en la página de registro.";
+App::$strings["Site homepage to show visitors (default: login box)"] = "Página personal que se mostrará a los visitantes (por defecto: la página de identificación)";
+App::$strings["example: 'public' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file."] = "ejemplo: 'public' para mostrar contenido público, 'page/sys/home' para mostrar la página web definida como \"home\" o 'include:home.html' para mostrar el contenido de un fichero.";
+App::$strings["Preserve site homepage URL"] = "Preservar la dirección de la página personal";
+App::$strings["Present the site homepage in a frame at the original location instead of redirecting"] = "Presenta la página personal del sitio en un marco en la ubicación original, en vez de redirigirla.";
+App::$strings["Accounts abandoned after x days"] = "Cuentas abandonadas después de x días";
+App::$strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Para evitar consumir recursos del sistema intentando poner al día las cuentas abandonadas. Introduzca 0 para no tener límite de tiempo.";
+App::$strings["Allowed friend domains"] = "Dominios amigos permitidos";
+App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Lista separada por comas de dominios a los que está permitido establecer relaciones de amistad con este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio.";
+App::$strings["Allowed email domains"] = "Se aceptan dominios de correo electrónico";
+App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Lista separada por comas de los dominios de los que se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio. ";
+App::$strings["Not allowed email domains"] = "No se permiten dominios de correo electrónico";
+App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Lista separada por comas de los dominios de los que no se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para no aceptar cualquier dominio, excepto los que se hayan autorizado.";
+App::$strings["Verify Email Addresses"] = "Verificar las direcciones de correo electrónico";
+App::$strings["Check to verify email addresses used in account registration (recommended)."] = "Activar para la verificación de la dirección de correo electrónico en el registro de una cuenta (recomendado).";
+App::$strings["Force publish"] = "Forzar la publicación";
+App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Intentar forzar todos los perfiles para que sean listados en el directorio de este sitio.";
+App::$strings["Import Public Streams"] = "Importar contenido público";
+App::$strings["Import and allow access to public content pulled from other sites. Warning: this content is unmoderated."] = "Importar y permitir acceso al contenido público sacado de otros sitios. Advertencia: este contenido no está moderado, por lo que podría encontrar cosas inapropiadas u ofensivas.";
+App::$strings["Login on Homepage"] = "Iniciar sesión en la página personal";
+App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Presentar a los visitantes una casilla de identificación en la página de inicio, si no se ha configurado otro tipo de contenido.";
+App::$strings["Enable context help"] = "Habilitar la ayuda contextual";
+App::$strings["Display contextual help for the current page when the help button is pressed."] = "Ver la ayuda contextual para la página actual cuando se pulse el botón de Ayuda.";
+App::$strings["Directory Server URL"] = "URL del servidor de directorio";
+App::$strings["Default directory server"] = "Servidor de directorio predeterminado";
+App::$strings["Proxy user"] = "Usuario del proxy";
+App::$strings["Proxy URL"] = "Dirección del proxy";
+App::$strings["Network timeout"] = "Tiempo de espera de la red";
+App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valor en segundos. Poner a 0 para que no haya tiempo límite (no recomendado)";
+App::$strings["Delivery interval"] = "Intervalo de entrega";
+App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Retrasar los procesos de transmisión en segundo plano por esta cantidad de segundos para reducir la carga del sistema. Recomendado: 4-5 para sitios compartidos, 2-3 para servidores virtuales privados, 0-1 para grandes servidores dedicados.";
+App::$strings["Deliveries per process"] = "Intentos de envío por proceso";
+App::$strings["Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5."] = "Numero de envíos a intentar en un único proceso del sistema operativo. Ajustar si es necesario mejorar el rendimiento. Se recomienda: 1-5.";
+App::$strings["Poll interval"] = "Intervalo máximo de tiempo entre dos mensajes sucesivos";
+App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Retrasar el intervalo de envío en segundo plano, en esta cantidad de segundos, para reducir la carga del sistema. Si es 0, usar el intervalo de entrega.";
+App::$strings["Maximum Load Average"] = "Carga media máxima";
+App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50.";
+App::$strings["Expiration period in days for imported (grid/network) content"] = "Caducidad del contenido importado de otros sitios (en días)";
+App::$strings["0 for no expiration of imported content"] = "0 para que no caduque el contenido importado";
+App::$strings["Off"] = "Desactivado";
+App::$strings["On"] = "Activado";
+App::$strings["Lock feature %s"] = "Bloquear la funcionalidad %s";
+App::$strings["Manage Additional Features"] = "Gestionar las funcionalidades";
+App::$strings["No server found"] = "Servidor no encontrado";
+App::$strings["ID"] = "ID";
+App::$strings["for channel"] = "por canal";
+App::$strings["on server"] = "en el servidor";
+App::$strings["Server"] = "Servidor";
+App::$strings["By default, unfiltered HTML is allowed in embedded media. This is inherently insecure."] = "De forma predeterminada, el HTML sin filtrar está permitido en el contenido multimedia incorporado en una publicación. Esto es siempre inseguro.";
+App::$strings["The recommended setting is to only allow unfiltered HTML from the following sites:"] = "La configuración recomendada es que sólo se permita HTML sin filtrar desde los siguientes sitios: ";
+App::$strings["https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"] = "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />";
+App::$strings["All other embedded content will be filtered, <strong>unless</strong> embedded content from that site is explicitly blocked."] = "El resto del contenido incrustado se filtrará, <strong>excepto</ strong> si el contenido incorporado desde ese sitio está bloqueado de forma explícita.";
+App::$strings["Security"] = "Seguridad";
+App::$strings["Block public"] = "Bloquear páginas públicas";
+App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "Habilitar para impedir ver las páginas personales de este sitio a quien no esté actualmente autenticado.";
+App::$strings["Set \"Transport Security\" HTTP header"] = "Habilitar \"Seguridad de transporte\" (\"Transport Security\") en la cabecera HTTP";
+App::$strings["Set \"Content Security Policy\" HTTP header"] = "Habilitar la \"Política de seguridad del contenido\" (\"Content Security Policy\") en la cabecera HTTP";
+App::$strings["Allow communications only from these sites"] = "Permitir la comunicación solo desde estos sitios";
+App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Un sitio por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera";
+App::$strings["Block communications from these sites"] = "Bloquear la comunicación desde estos sitios";
+App::$strings["Allow communications only from these channels"] = "Permitir la comunicación solo desde estos canales";
+App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "Un canal (hash) por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera";
+App::$strings["Block communications from these channels"] = "Bloquear la comunicación desde estos canales";
+App::$strings["Only allow embeds from secure (SSL) websites and links."] = "Sólo se permite contenido multimedia incorporado desde sitios y enlaces seguros (SSL).";
+App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "Permitir contenido HTML sin filtrar sólo desde estos dominios ";
+App::$strings["One site per line. By default embedded content is filtered."] = "Un sitio por línea. El contenido incorporado se filtra de forma predeterminada.";
+App::$strings["Block embedded HTML from these domains"] = "Bloquear contenido con HTML incorporado desde estos dominios";
+App::$strings["Update has been marked successful"] = "La actualización ha sido marcada como exitosa";
+App::$strings["Executing %s failed. Check system logs."] = "La ejecución de %s ha fallado. Mirar en los informes del sistema.";
+App::$strings["Update %s was successfully applied."] = "La actualización de %s se ha realizado exitosamente.";
+App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "La actualización de %s no ha devuelto ningún estado. No se sabe si ha tenido éxito.";
+App::$strings["Update function %s could not be found."] = "No se encuentra la función de actualización de %s.";
+App::$strings["No failed updates."] = "No ha fallado ninguna actualización.";
+App::$strings["Failed Updates"] = "Han fallado las actualizaciones";
+App::$strings["Mark success (if update was manually applied)"] = "Marcar como exitosa (si la actualización se ha hecho manualmente)";
+App::$strings["Attempt to execute this update step automatically"] = "Intentar ejecutar este paso de actualización automáticamente";
+App::$strings["Queue Statistics"] = "Estadísticas de la cola";
+App::$strings["Total Entries"] = "Total de entradas";
+App::$strings["Priority"] = "Prioridad";
+App::$strings["Destination URL"] = "Dirección de destino";
+App::$strings["Mark hub permanently offline"] = "Marcar el servidor como permanentemente fuera de línea";
+App::$strings["Empty queue for this hub"] = "Vaciar la cola para este servidor";
+App::$strings["Last known contact"] = "Último contacto conocido";
+App::$strings["%s account blocked/unblocked"] = array(
+ 0 => "%s cuenta bloqueada/desbloqueada",
+ 1 => "%s cuenta bloqueada/desbloqueada",
+);
+App::$strings["%s account deleted"] = array(
+ 0 => "%s cuentas eliminadas",
+ 1 => "%s cuentas eliminadas",
+);
+App::$strings["Account not found"] = "Cuenta no encontrada";
+App::$strings["Account '%s' deleted"] = "La cuenta '%s' ha sido eliminada";
+App::$strings["Account '%s' blocked"] = "La cuenta '%s' ha sido bloqueada";
+App::$strings["Account '%s' unblocked"] = "La cuenta '%s' ha sido desbloqueada";
+App::$strings["Accounts"] = "Cuentas";
+App::$strings["select all"] = "seleccionar todo";
+App::$strings["Registrations waiting for confirm"] = "Inscripciones en espera de confirmación";
+App::$strings["Request date"] = "Fecha de solicitud";
+App::$strings["No registrations."] = "Sin registros.";
+App::$strings["Deny"] = "Rechazar";
+App::$strings["All Channels"] = "Todos los canales";
+App::$strings["Register date"] = "Fecha de registro";
+App::$strings["Last login"] = "Último acceso";
+App::$strings["Expires"] = "Caduca";
+App::$strings["Service Class"] = "Clase de servicio";
+App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "¡Las cuentas seleccionadas van a ser eliminadas!\\n\\n¡Todo lo que estas cuentas han publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?";
+App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "¡La cuenta {0} va a ser eliminada!\\n\\n¡Todo lo que esta cuenta ha publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?";
+App::$strings["%s channel censored/uncensored"] = array(
+ 0 => "%s canales censurados/no censurados",
+ 1 => "%s canales censurados/no censurados",
+);
+App::$strings["%s channel code allowed/disallowed"] = array(
+ 0 => "%s código permitido/no permitido al canal",
+ 1 => "%s código permitido/no permitido al canal",
+);
+App::$strings["%s channel deleted"] = array(
+ 0 => "%s canales eliminados",
+ 1 => "%s canales eliminados",
+);
+App::$strings["Channel not found"] = "Canal no encontrado";
+App::$strings["Channel '%s' deleted"] = "Canal '%s' eliminado";
+App::$strings["Channel '%s' censored"] = "Canal '%s' censurado";
+App::$strings["Channel '%s' uncensored"] = "Canal '%s' no censurado";
+App::$strings["Channel '%s' code allowed"] = "Código permitido al canal '%s'";
+App::$strings["Channel '%s' code disallowed"] = "Código no permitido al canal '%s'";
+App::$strings["Channels"] = "Canales";
+App::$strings["Censor"] = "Censurar";
+App::$strings["Uncensor"] = "No censurar";
+App::$strings["Allow Code"] = "Permitir código";
+App::$strings["Disallow Code"] = "No permitir código";
+App::$strings["Channel"] = "Canal";
+App::$strings["UID"] = "UID";
+App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Los canales seleccionados se eliminarán!\\n\\nTodo lo publicado por estos canales en este sitio se borrarán definitivamente!\\n\\n¿Está seguro de querer hacerlo?";
+App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "El canal {0} va a ser eliminado!\\n\\nTodo lo publicado por el canal en este sitio se borrará definitivamente!\\n\\n¿Está seguro de querer hacerlo?";
+App::$strings["Plugin %s disabled."] = "Extensión %s desactivada.";
+App::$strings["Plugin %s enabled."] = "Extensión %s activada.";
+App::$strings["Disable"] = "Desactivar";
+App::$strings["Enable"] = "Activar";
+App::$strings["Plugins"] = "Extensiones (plugins)";
+App::$strings["Toggle"] = "Cambiar";
+App::$strings["Settings"] = "Ajustes";
+App::$strings["Author: "] = "Autor:";
+App::$strings["Maintainer: "] = "Mantenedor:";
+App::$strings["Minimum project version: "] = "Versión mínima del proyecto:";
+App::$strings["Maximum project version: "] = "Versión máxima del proyecto:";
+App::$strings["Minimum PHP version: "] = "Versión mínima de PHP:";
+App::$strings["Requires: "] = "Se requiere:";
+App::$strings["Disabled - version incompatibility"] = "Deshabilitado - versiones incompatibles";
+App::$strings["Enter the public git repository URL of the plugin repo."] = "Escriba la URL pública del repositorio git del plugin.";
+App::$strings["Plugin repo git URL"] = "URL del repositorio git del plugin";
+App::$strings["Custom repo name"] = "Nombre personalizado del repositorio";
+App::$strings["(optional)"] = "(opcional)";
+App::$strings["Download Plugin Repo"] = "Descargar el repositorio";
+App::$strings["Install new repo"] = "Instalar un nuevo repositorio";
+App::$strings["Install"] = "Instalar";
+App::$strings["Manage Repos"] = "Gestionar los repositorios";
+App::$strings["Installed Plugin Repositories"] = "Repositorios de los plugins instalados";
+App::$strings["Install a New Plugin Repository"] = "Instalar un nuevo repositorio de plugins";
+App::$strings["Update"] = "Actualizar";
+App::$strings["Switch branch"] = "Cambiar la rama";
+App::$strings["No themes found."] = "No se han encontrado temas.";
+App::$strings["Screenshot"] = "Instantánea de pantalla";
+App::$strings["Themes"] = "Temas";
+App::$strings["[Experimental]"] = "[Experimental]";
+App::$strings["[Unsupported]"] = "[No soportado]";
+App::$strings["Log settings updated."] = "Actualizado el informe de configuraciones.";
+App::$strings["Logs"] = "Informes";
+App::$strings["Clear"] = "Vaciar";
+App::$strings["Debugging"] = "Depuración";
+App::$strings["Log file"] = "Fichero de informe";
+App::$strings["Must be writable by web server. Relative to your top-level webserver directory."] = "Debe tener permisos de escritura por el servidor web. La ruta es relativa al directorio web principal.";
+App::$strings["Log level"] = "Nivel de depuración";
+App::$strings["New Profile Field"] = "Nuevo campo en el perfil";
+App::$strings["Field nickname"] = "Alias del campo";
+App::$strings["System name of field"] = "Nombre del campo en el sistema";
+App::$strings["Input type"] = "Tipo de entrada";
+App::$strings["Field Name"] = "Nombre del campo";
+App::$strings["Label on profile pages"] = "Etiqueta a mostrar en la página del perfil";
+App::$strings["Help text"] = "Texto de ayuda";
+App::$strings["Additional info (optional)"] = "Información adicional (opcional)";
+App::$strings["Field definition not found"] = "Definición del campo no encontrada";
+App::$strings["Edit Profile Field"] = "Modificar el campo del perfil";
+App::$strings["Profile Fields"] = "Campos del perfil";
+App::$strings["Basic Profile Fields"] = "Campos básicos del perfil";
+App::$strings["Advanced Profile Fields"] = "Campos avanzados del perfil";
+App::$strings["(In addition to basic fields)"] = "(Además de los campos básicos)";
+App::$strings["All available fields"] = "Todos los campos disponibles";
+App::$strings["Custom Fields"] = "Campos personalizados";
+App::$strings["Create Custom Field"] = "Crear un campo personalizado";
+App::$strings["App installed."] = "Aplicación instalada.";
+App::$strings["Malformed app."] = "Aplicación con errores";
+App::$strings["Embed code"] = "Código incorporado";
+App::$strings["Edit App"] = "Modificar la aplicación";
+App::$strings["Create App"] = "Crear una aplicación";
+App::$strings["Name of app"] = "Nombre de la aplicación";
+App::$strings["Location (URL) of app"] = "Dirección (URL) de la aplicación";
+App::$strings["Photo icon URL"] = "Dirección del icono";
+App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixels - opcional";
+App::$strings["Categories (optional, comma separated list)"] = "Categorías (opcional, lista separada por comas)";
+App::$strings["Version ID"] = "Versión";
+App::$strings["Price of app"] = "Precio de la aplicación";
+App::$strings["Location (URL) to purchase app"] = "Dirección (URL) donde adquirir la aplicación";
App::$strings["Select a bookmark folder"] = "Seleccionar una carpeta de marcadores";
App::$strings["Save Bookmark"] = "Guardar marcador";
App::$strings["URL of bookmark"] = "Dirección del marcador";
@@ -1099,7 +1097,6 @@ App::$strings["Search results for: %s"] = "Resultados de la búsqueda para: %s";
App::$strings["No service class restrictions found."] = "No se han encontrado restricciones sobre esta clase de servicio.";
App::$strings["Name is required"] = "El nombre es obligatorio";
App::$strings["Key and Secret are required"] = "\"Key\" y \"Secret\" son obligatorios";
-App::$strings["Update"] = "Actualizar";
App::$strings["Not valid email."] = "Correo electrónico no válido.";
App::$strings["Protected email address. Cannot change to that email."] = "Dirección de correo electrónico protegida. No se puede cambiar a ella.";
App::$strings["System failure storing new email. Please try again."] = "Fallo de sistema al guardar el nuevo correo electrónico. Por favor, inténtelo de nuevo.";
@@ -1119,7 +1116,7 @@ App::$strings["Redirect URI - leave blank unless your application specifically r
App::$strings["Icon url"] = "Dirección del icono";
App::$strings["Optional"] = "Opcional";
App::$strings["Application not found."] = "Aplicación no encontrada.";
-App::$strings["Connected Apps"] = "Aplicaciones conectadas";
+App::$strings["Connected Apps"] = "Aplicaciones (apps) conectadas";
App::$strings["Client key starts with"] = "La \"client key\" empieza por";
App::$strings["No name"] = "Sin nombre";
App::$strings["Remove authorization"] = "Eliminar autorización";
@@ -1191,10 +1188,14 @@ App::$strings["Allow others to tag your posts"] = "Permitir a otros etiquetar su
App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "A menudo usado por la comunidad para marcar contenido inapropiado de forma retroactiva.";
App::$strings["Advanced Privacy Settings"] = "Configuración de privacidad avanzada";
App::$strings["Expire other channel content after this many days"] = "Caducar contenido de otros canales después de este número de días";
-App::$strings["0 or blank to use the website limit. The website expires after %d days."] = "0 o en blanco para usar el límite del sitio. El sitio web caduca después de %d días.";
+App::$strings["0 or blank to use the website limit."] = "0 o en blanco para usar el límite del sitio web.";
+App::$strings["This website expires after %d days."] = "Este sitio web caduca después de %d días.";
+App::$strings["This website does not expire imported content."] = "Este sitio web no caduca el contenido importado.";
+App::$strings["The website limit takes precedence if lower than your limit."] = "El límite del sitio web tiene prioridad si es inferior a su propio límite.";
App::$strings["Maximum Friend Requests/Day:"] = "Máximo de solicitudes de amistad por día:";
App::$strings["May reduce spam activity"] = "Podría reducir la actividad de spam";
-App::$strings["Default Post Permissions"] = "Permisos de publicación predeterminados";
+App::$strings["Default Post and Publish Permissions"] = "Permisos predeterminados de entradas y publicaciones";
+App::$strings["Use my default audience setting for the type of object published"] = "Usar los ajustes de mi audiencia predeterminada para el tipo de publicación";
App::$strings["Channel permissions category:"] = "Categoría de permisos del canal:";
App::$strings["Maximum private messages per day from unknown people:"] = "Máximo de mensajes privados por día de gente desconocida:";
App::$strings["Useful to reduce spamming"] = "Útil para reducir el envío de correo no deseado";
@@ -1269,6 +1270,8 @@ App::$strings["Please select a default timezone for your website"] = "Por favor,
App::$strings["Site settings"] = "Ajustes del sitio";
App::$strings["Enable \$Projectname <strong>advanced</strong> features?"] = "¿Habilitar las funcionalidades <strong>avanzadas</strong> de \$Projectname ?";
App::$strings["Some advanced features, while useful - may be best suited for technically proficient audiences"] = "Algunas funcionalidades avanzadas, si bien son útiles, pueden ser más adecuadas para un público técnicamente competente";
+App::$strings["PHP version 5.5 or greater is required."] = "Se requiere la versión 5.5, o superior, de PHP.";
+App::$strings["PHP version"] = "Versión de PHP";
App::$strings["Could not find a command line version of PHP in the web server PATH."] = "No se puede encontrar una versión en línea de comandos de PHP en la ruta del servidor web.";
App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Si no tiene instalada la versión de línea de comandos de PHP en su servidor, no podrá realizar envíos en segundo plano mediante cron.";
App::$strings["PHP executable path"] = "Ruta del ejecutable PHP";
@@ -1307,7 +1310,7 @@ App::$strings["At the end of this procedure, we will give you a text to save in
App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Como alternativa, puede dejar este procedimiento e intentar realizar una instalación manual. Lea, por favor, el fichero\"install/INSTALL.txt\" para las instrucciones.";
App::$strings[".htconfig.php is writable"] = ".htconfig.php tiene permisos de escritura";
App::$strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Hubzilla hace uso del motor de plantillas Smarty3 para diseñar sus plantillas gráficas. Smarty3 es más rápido porque compila las plantillas de páginas directamente en PHP.";
-App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "Para poder guardar las plantillas compiladas, el servidor web necesita permisos para acceder al subdirectorio %s en el directorio de instalación de Hubzilla.";
+App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder."] = "Para poder guardar las plantillas compiladas, el servidor web necesita permisos para acceder al directorio %s en la carpeta web principal.";
App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Por favor, asegúrese de que el servidor web está siendo ejecutado por un usuario que tenga permisos de escritura sobre esta carpeta (por ejemplo, www-data).";
App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Nota: como medida de seguridad, debe dar al servidor web permisos de escritura solo sobre %s - no sobre el fichero de plantilla (.tpl) que contiene.";
App::$strings["%s is writable"] = "%s tiene permisos de escritura";
@@ -1331,8 +1334,8 @@ App::$strings["NEW"] = "NUEVO";
App::$strings["Remove all files"] = "Eliminar todos los ficheros";
App::$strings["Remove this file"] = "Eliminar este fichero";
App::$strings["Version %s"] = "Versión %s";
-App::$strings["Installed plugins/addons/apps:"] = "Extensiones, complementos o aplicaciones instaladas:";
-App::$strings["No installed plugins/addons/apps"] = "No hay instalada ninguna extensión, complemento o aplicación";
+App::$strings["Installed plugins/addons/apps:"] = "Extensiones (plugins), complementos o aplicaciones (apps) instaladas:";
+App::$strings["No installed plugins/addons/apps"] = "No hay instalada ninguna extensión (plugin), complemento o aplicación (app)";
App::$strings["This is a hub of \$Projectname - a global cooperative network of decentralized privacy enhanced websites."] = "Este es un sitio integrado en \$Projectname - una red cooperativa mundial de sitios web descentralizados de privacidad mejorada.";
App::$strings["Tag: "] = "Etiqueta:";
App::$strings["Last background fetch: "] = "Última actualización en segundo plano:";
@@ -1354,6 +1357,7 @@ App::$strings["Import all or selected content from the following channel into th
App::$strings["Only import content with these words (one per line)"] = "Importar solo contenido que contenga estas palabras (una por línea)";
App::$strings["Leave blank to import all public content"] = "Dejar en blanco para importar todo el contenido público";
App::$strings["Channel Name"] = "Nombre del canal";
+App::$strings["Add the following categories to posts imported from this source (comma separated)"] = "Añadir las categorías siguientes a las entradas importadas de esta fuente (separadas por comas)";
App::$strings["Source not found."] = "Fuente no encontrada";
App::$strings["Edit Source"] = "Editar fuente";
App::$strings["Delete Source"] = "Eliminar fuente";
@@ -1402,54 +1406,72 @@ App::$strings["Page Link"] = "Vínculo de la página";
App::$strings["Page Title"] = "Título de página";
App::$strings["Xchan Lookup"] = "Búsqueda de canales";
App::$strings["Lookup xchan beginning with (or webbie): "] = "Buscar un canal (o un \"webbie\") que comience por:";
-App::$strings["No username found in import file."] = "No se ha encontrado el nombre de usuario en el fichero importado.";
-App::$strings["Unable to create a unique channel address. Import failed."] = "No se ha podido crear una dirección de canal única. Ha fallado la importación.";
-App::$strings["Cannot locate DNS info for database server '%s'"] = "No se ha podido localizar información de DNS para el servidor de base de datos “%sâ€";
-App::$strings["Unable to obtain identity information from database"] = "No ha sido posible obtener información sobre la identidad desde la base de datos";
-App::$strings["Empty name"] = "Nombre vacío";
-App::$strings["Name too long"] = "Nombre demasiado largo";
-App::$strings["No account identifier"] = "Ningún identificador de la cuenta";
-App::$strings["Nickname is required."] = "Se requiere un sobrenombre (alias).";
-App::$strings["Reserved nickname. Please choose another."] = "Sobrenombre en uso. Por favor, elija otro.";
-App::$strings["Nickname has unsupported characters or is already being used on this site."] = "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio.";
-App::$strings["Unable to retrieve created identity"] = "No ha sido posible recuperar la identidad creada";
-App::$strings["Default Profile"] = "Perfil principal";
-App::$strings["Requested channel is not available."] = "El canal solicitado no está disponible.";
-App::$strings["Create New Profile"] = "Crear un nuevo perfil";
-App::$strings["Edit Profile"] = "Editar el perfil";
-App::$strings["Visible to everybody"] = "Visible para todos";
-App::$strings["Gender:"] = "Género:";
-App::$strings["Status:"] = "Estado:";
-App::$strings["Homepage:"] = "Página personal:";
-App::$strings["Online Now"] = "Ahora en línea";
-App::$strings["F d"] = "d F";
-App::$strings["Birthday Reminders"] = "Recordatorios de cumpleaños";
-App::$strings["Birthdays this week:"] = "Cumpleaños de esta semana:";
-App::$strings["[No description]"] = "[Sin descripción]";
-App::$strings["Event Reminders"] = "Recordatorios de eventos";
-App::$strings["Events this week:"] = "Eventos de esta semana:";
-App::$strings["Like this channel"] = "Me gusta este canal";
-App::$strings["j F, Y"] = "j F Y";
-App::$strings["j F"] = "j F";
-App::$strings["Birthday:"] = "Cumpleaños:";
-App::$strings["for %1\$d %2\$s"] = "por %1\$d %2\$s";
-App::$strings["Sexual Preference:"] = "Orientación sexual:";
-App::$strings["Tags:"] = "Etiquetas:";
-App::$strings["Political Views:"] = "Posición política:";
-App::$strings["Religion:"] = "Religión:";
-App::$strings["Hobbies/Interests:"] = "Aficciones o intereses:";
-App::$strings["Likes:"] = "Me gusta:";
-App::$strings["Dislikes:"] = "No me gusta:";
-App::$strings["Contact information and Social Networks:"] = "Información de contacto y redes sociales:";
-App::$strings["My other channels:"] = "Mis otros canales:";
-App::$strings["Musical interests:"] = "Preferencias musicales:";
-App::$strings["Books, literature:"] = "Libros, literatura:";
-App::$strings["Television:"] = "Televisión:";
-App::$strings["Film/dance/culture/entertainment:"] = "Cine, danza, cultura, entretenimiento:";
-App::$strings["Love/Romance:"] = "Vida sentimental o amorosa:";
-App::$strings["Work/employment:"] = "Trabajo:";
-App::$strings["School/education:"] = "Estudios:";
-App::$strings["Like this thing"] = "Me gusta esto";
+App::$strings["Site Admin"] = "Administrador del sitio";
+App::$strings["Bug Report"] = "Informe de errores";
+App::$strings["View Bookmarks"] = "Ver los marcadores";
+App::$strings["My Chatrooms"] = "Mis salas de chat";
+App::$strings["Firefox Share"] = "Servicio de compartición de Firefox";
+App::$strings["Remote Diagnostics"] = "Diagnóstico remoto";
+App::$strings["Suggest Channels"] = "Sugerir canales";
+App::$strings["Login"] = "Iniciar sesión";
+App::$strings["Grid"] = "Red";
+App::$strings["Channel Home"] = "Mi canal";
+App::$strings["Events"] = "Eventos";
+App::$strings["Directory"] = "Directorio";
+App::$strings["Mail"] = "Correo";
+App::$strings["Chat"] = "Chat";
+App::$strings["Probe"] = "Probar";
+App::$strings["Suggest"] = "Sugerir";
+App::$strings["Random Channel"] = "Canal aleatorio";
+App::$strings["Invite"] = "Invitar";
+App::$strings["Features"] = "Funcionalidades";
+App::$strings["Post"] = "Publicación";
+App::$strings["Purchase"] = "Comprar";
+App::$strings["Missing room name"] = "Sala de chat sin nombre";
+App::$strings["Duplicate room name"] = "Nombre de sala duplicado.";
+App::$strings["Invalid room specifier."] = "Especificador de sala no válido.";
+App::$strings["Room not found."] = "Sala no encontrada.";
+App::$strings["Room is full"] = "La sala está llena.";
+App::$strings["\$Projectname Notification"] = "Notificación de \$Projectname";
+App::$strings["\$projectname"] = "\$projectname";
+App::$strings["Thank You,"] = "Gracias,";
+App::$strings["%s Administrator"] = "%s Administrador";
+App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
+App::$strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla:Aviso] Nuevo mensaje en %s";
+App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s le ha enviado un nuevo mensaje privado en %3\$s.";
+App::$strings["%1\$s sent you %2\$s."] = "%1\$s le ha enviado %2\$s.";
+App::$strings["a private message"] = "un mensaje privado";
+App::$strings["Please visit %s to view and/or reply to your private messages."] = "Por favor visite %s para ver y/o responder a su mensaje privado.";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s ha comentado [zrl=%3\$s]%4\$s[/zrl]";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s ha comentado [zrl=%3\$s]%5\$s de %4\$s[/zrl] ";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s ha comentado [zrl=%3\$s]%4\$s creado por usted[/zrl]";
+App::$strings["[Hubzilla:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Hubzilla:Aviso] Nuevo comentario de %2\$s a la conversación #%1\$d";
+App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s ha comentado un elemento/conversación que ha estado siguiendo.";
+App::$strings["Please visit %s to view and/or reply to the conversation."] = "Para ver o comentar la conversación, visite %s";
+App::$strings["[Hubzilla:Notify] %s posted to your profile wall"] = "[Hubzilla:Aviso] %s ha publicado una entrada en su página de inicio del perfil (\"muro\")";
+App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s ha publicado en su página del perfil en %3\$s";
+App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s ha publicado en [zrl=%3\$s]su página del perfil[/zrl]";
+App::$strings["[Hubzilla:Notify] %s tagged you"] = "[Hubzilla:Aviso] %s le ha etiquetado";
+App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s le ha etiquetado en %3\$s";
+App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]le etiquetó[/zrl].";
+App::$strings["[Hubzilla:Notify] %1\$s poked you"] = "[Hubzilla:Aviso] %1\$s le ha dado un toque";
+App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s le ha dado un toque en %3\$s";
+App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]le ha dado un toque[/zrl].";
+App::$strings["[Hubzilla:Notify] %s tagged your post"] = "[Hubzilla:Aviso] %s ha etiquetado su publicación";
+App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s ha etiquetado su publicación en %3\$s";
+App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s ha etiquetado [zrl=%3\$s]su publicación[/zrl]";
+App::$strings["[Hubzilla:Notify] Introduction received"] = "[Hubzilla:Aviso] Ha recibido una solicitud de conexión";
+App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, ha recibido una nueva solicitud de conexión de '%2\$s' en %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, ha recibido [zrl=%2\$s]una nueva solicitud de conexión[/zrl] de %3\$s.";
+App::$strings["You may visit their profile at %s"] = "Puede visitar su perfil en %s";
+App::$strings["Please visit %s to approve or reject the connection request."] = "Por favor, visite %s para permitir o rechazar la solicitad de conexión.";
+App::$strings["[Hubzilla:Notify] Friend suggestion received"] = "[Hubzilla:Aviso] Ha recibido una sugerencia de amistad";
+App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, ha recibido una sugerencia de conexión de '%2\$s' en %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, ha recibido [zrl=%2\$s]una sugerencia de conexión[/zrl] para %3\$s de %4\$s.";
+App::$strings["Name:"] = "Nombre:";
+App::$strings["Photo:"] = "Foto:";
+App::$strings["Please visit %s to approve or reject the suggestion."] = "Por favor, visite %s para aprobar o rechazar la sugerencia.";
+App::$strings["[Hubzilla:Notify]"] = "[Hubzilla:Aviso]";
App::$strings["created a new post"] = "ha creado una nueva entrada";
App::$strings["commented on %s's post"] = "ha comentado la entrada de %s";
App::$strings["Private Message"] = "Mensaje Privado";
@@ -1489,91 +1511,54 @@ App::$strings["Save Bookmarks"] = "Guardar en Marcadores";
App::$strings["Add to Calendar"] = "Añadir al calendario";
App::$strings["Mark all seen"] = "Marcar todo como visto";
App::$strings["[+] show all"] = "[+] mostrar todo:";
+App::$strings["Bold"] = "Negrita";
+App::$strings["Italic"] = "Itálico ";
+App::$strings["Underline"] = "Subrayar";
+App::$strings["Quote"] = "Citar";
+App::$strings["Code"] = "Código";
App::$strings["Image"] = "Imagen";
App::$strings["Insert Link"] = "Insertar enlace";
App::$strings["Video"] = "Vídeo";
-App::$strings["Not a valid email address"] = "Dirección de correo no válida";
-App::$strings["Your email domain is not among those allowed on this site"] = "Su dirección de correo no pertenece a ninguno de los dominios permitidos en este sitio.";
-App::$strings["Your email address is already registered at this site."] = "Su dirección de correo está ya registrada en este sitio.";
-App::$strings["An invitation is required."] = "Es obligatorio que le inviten.";
-App::$strings["Invitation could not be verified."] = "No se ha podido verificar su invitación.";
-App::$strings["Please enter the required information."] = "Por favor introduzca la información requerida.";
-App::$strings["Failed to store account information."] = "La información de la cuenta no se ha podido guardar.";
-App::$strings["Registration confirmation for %s"] = "Confirmación de registro para %s";
-App::$strings["Registration request at %s"] = "Solicitud de registro en %s";
-App::$strings["Administrator"] = "Administrador";
-App::$strings["your registration password"] = "su contraseña de registro";
-App::$strings["Registration details for %s"] = "Detalles del registro de %s";
-App::$strings["Account approved."] = "Cuenta aprobada.";
-App::$strings["Registration revoked for %s"] = "Registro revocado para %s";
-App::$strings["Account verified. Please login."] = "Cuenta verificada. Por favor, inicie sesión.";
-App::$strings["Click here to upgrade."] = "Pulse aquí para actualizar";
-App::$strings["This action exceeds the limits set by your subscription plan."] = "Esta acción supera los límites establecidos por su plan de suscripción ";
-App::$strings["This action is not available under your subscription plan."] = "Esta acción no está disponible en su plan de suscripción.";
-App::$strings["Currently Male"] = "Actualmente hombre";
-App::$strings["Currently Female"] = "Actualmente mujer";
-App::$strings["Mostly Male"] = "Generalmente hombre";
-App::$strings["Mostly Female"] = "Generalmente mujer";
-App::$strings["Transgender"] = "Transgénero";
-App::$strings["Intersex"] = "Intersexual";
-App::$strings["Transsexual"] = "Transexual";
-App::$strings["Hermaphrodite"] = "Hermafrodita";
-App::$strings["Neuter"] = "Neutral";
-App::$strings["Non-specific"] = "No especificado";
-App::$strings["Other"] = "Otro";
-App::$strings["Undecided"] = "Indeciso/a";
-App::$strings["Males"] = "Hombres";
-App::$strings["Females"] = "Mujeres";
-App::$strings["Gay"] = "Homosexual";
-App::$strings["Lesbian"] = "Lesbiana";
-App::$strings["No Preference"] = "Sin preferencias";
-App::$strings["Bisexual"] = "Bisexual";
-App::$strings["Autosexual"] = "Autosexual";
-App::$strings["Abstinent"] = "Casto/a";
-App::$strings["Virgin"] = "Virgen";
-App::$strings["Deviant"] = "Fuera de lo común";
-App::$strings["Fetish"] = "Fetichista";
-App::$strings["Oodles"] = "Orgías";
-App::$strings["Nonsexual"] = "Asexual";
-App::$strings["Single"] = "Soltero/a";
-App::$strings["Lonely"] = "Solo/a";
-App::$strings["Available"] = "Disponible";
-App::$strings["Unavailable"] = "No disponible";
-App::$strings["Has crush"] = "Enamorado/a";
-App::$strings["Infatuated"] = "Apasionado/a";
-App::$strings["Dating"] = "Saliendo con alguien";
-App::$strings["Unfaithful"] = "Infiel";
-App::$strings["Sex Addict"] = "Con adicción al sexo";
-App::$strings["Friends/Benefits"] = "Amigos con algo extra";
-App::$strings["Casual"] = "Casual";
-App::$strings["Engaged"] = "Prometido/a";
-App::$strings["Married"] = "Casado/a";
-App::$strings["Imaginarily married"] = "Casado/a en sueños";
-App::$strings["Partners"] = "Pareja";
-App::$strings["Cohabiting"] = "Cohabitando";
-App::$strings["Common law"] = "Matrimonio tradicional";
-App::$strings["Happy"] = "Felíz";
-App::$strings["Not looking"] = "No estoy buscando";
-App::$strings["Swinger"] = "Libertino";
-App::$strings["Betrayed"] = "Engañado/a";
-App::$strings["Separated"] = "Separado/a";
-App::$strings["Unstable"] = "Inestable";
-App::$strings["Divorced"] = "Divorciado/a";
-App::$strings["Imaginarily divorced"] = "Divorciado/a en sueños";
-App::$strings["Widowed"] = "Viudo/a";
-App::$strings["Uncertain"] = "Indeterminado";
-App::$strings["It's complicated"] = "Es complicado";
-App::$strings["Don't care"] = "No me importa";
-App::$strings["Ask me"] = "Pregúnteme";
-App::$strings["Visible to your default audience"] = "Visible para su público predeterminado.";
-App::$strings["Show"] = "Mostrar";
-App::$strings["Don't show"] = "No mostrar";
-App::$strings["Other networks and post services"] = "Otras redes y servicios de publicación";
-App::$strings[" and "] = " y ";
-App::$strings["public profile"] = "el perfil público";
-App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s ha cambiado %2\$s a &ldquo;%3\$s&rdquo;";
-App::$strings["Visit %1\$s's %2\$s"] = "Visitar %2\$s de %1\$s";
-App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s ha actualizado %2\$s, cambiando %3\$s.";
+App::$strings["No username found in import file."] = "No se ha encontrado el nombre de usuario en el fichero importado.";
+App::$strings["Unable to create a unique channel address. Import failed."] = "No se ha podido crear una dirección de canal única. Ha fallado la importación.";
+App::$strings["Cannot locate DNS info for database server '%s'"] = "No se ha podido localizar información de DNS para el servidor de base de datos “%sâ€";
+App::$strings["Categories"] = "Categorías";
+App::$strings["Tags"] = "Etiquetas";
+App::$strings["Keywords"] = "Palabras clave";
+App::$strings["have"] = "tener";
+App::$strings["has"] = "tiene";
+App::$strings["want"] = "quiero";
+App::$strings["wants"] = "quiere";
+App::$strings["likes"] = "gusta de";
+App::$strings["dislikes"] = "no gusta de";
+App::$strings["l F d, Y \\@ g:i A"] = "l d de F, Y \\@ G:i";
+App::$strings["Starts:"] = "Comienza:";
+App::$strings["Finishes:"] = "Finaliza:";
+App::$strings["This event has been added to your calendar."] = "Este evento ha sido añadido a su calendario.";
+App::$strings["Not specified"] = "Sin especificar";
+App::$strings["Needs Action"] = "Necesita de una intervención";
+App::$strings["Completed"] = "Completado/a";
+App::$strings["In Process"] = "En proceso";
+App::$strings["Cancelled"] = "Cancelado/a";
+App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "No se ha podido crear un canal con un identificador que ya existe en este sistema. La importación ha fallado.";
+App::$strings["Channel clone failed. Import failed."] = "La clonación del canal no ha salido bien. La importación ha fallado.";
+App::$strings["(Unknown)"] = "(Desconocido)";
+App::$strings["Visible to anybody on the internet."] = "Visible para cualquiera en internet.";
+App::$strings["Visible to you only."] = "Visible sólo para usted.";
+App::$strings["Visible to anybody in this network."] = "Visible para cualquiera en esta red.";
+App::$strings["Visible to anybody authenticated."] = "Visible para cualquiera que esté autenticado.";
+App::$strings["Visible to anybody on %s."] = "Visible para cualquiera en %s.";
+App::$strings["Visible to all connections."] = "Visible para todas las conexiones.";
+App::$strings["Visible to approved connections."] = "Visible para las conexiones permitidas.";
+App::$strings["Visible to specific connections."] = "Visible para conexiones específicas.";
+App::$strings["Privacy group is empty."] = "El grupo de canales está vacío.";
+App::$strings["Privacy group: %s"] = "Grupo de canales: %s";
+App::$strings["Connection not found."] = "Conexión no encontrada";
+App::$strings["profile photo"] = "foto del perfil";
+App::$strings["No recipient provided."] = "No se ha especificado ningún destinatario.";
+App::$strings["[no subject]"] = "[sin asunto]";
+App::$strings["Unable to determine sender."] = "No ha sido posible determinar el remitente. ";
+App::$strings["Stored post could not be verified."] = "No se han podido verificar las publicaciones guardadas.";
App::$strings["prev"] = "anterior";
App::$strings["first"] = "primera";
App::$strings["last"] = "última";
@@ -1638,9 +1623,6 @@ App::$strings["Unknown Attachment"] = "Adjunto no reconocido";
App::$strings["unknown"] = "desconocido";
App::$strings["remove category"] = "eliminar categoría";
App::$strings["remove from file"] = "eliminar del fichero";
-App::$strings["l F d, Y \\@ g:i A"] = "l d de F, Y \\@ G:i";
-App::$strings["Starts:"] = "Comienza:";
-App::$strings["Finishes:"] = "Finaliza:";
App::$strings["default"] = "por defecto";
App::$strings["Page layout"] = "Plantilla de la página";
App::$strings["You can create your own with the layouts tool"] = "Puede crear su propia disposición gráfica con la herramienta de plantillas";
@@ -1649,32 +1631,155 @@ App::$strings["Select an alternate language"] = "Seleccionar un idioma alternati
App::$strings["activity"] = "la actividad";
App::$strings["Design Tools"] = "Herramientas de diseño web";
App::$strings["Pages"] = "Páginas";
-App::$strings["Invalid data packet"] = "Paquete de datos no válido";
-App::$strings["Unable to verify channel signature"] = "No ha sido posible de verificar la firma del canal";
-App::$strings["Unable to verify site signature for %s"] = "No ha sido posible de verificar la firma del sitio para %s";
-App::$strings["invalid target signature"] = "La firma recibida no es válida";
-App::$strings["Site Admin"] = "Administrador del sitio";
+App::$strings["System"] = "Sistema";
+App::$strings["New App"] = "Nueva aplicación (app)";
+App::$strings["Suggestions"] = "Sugerencias";
+App::$strings["See more..."] = "Ver más...";
+App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Tiene %1$.0f de %2$.0f conexiones permitidas.";
+App::$strings["Add New Connection"] = "Añadir nueva conexión";
+App::$strings["Enter channel address"] = "Dirección del canal";
+App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Ejemplos: manuel@ejemplo.com, https://ejemplo.com/carmen";
+App::$strings["Notes"] = "Notas";
+App::$strings["Remove term"] = "Eliminar término";
+App::$strings["Saved Searches"] = "Búsquedas guardadas";
+App::$strings["add"] = "añadir";
+App::$strings["Saved Folders"] = "Carpetas guardadas";
+App::$strings["Everything"] = "Todo";
+App::$strings["Archives"] = "Hemeroteca";
+App::$strings["Refresh"] = "Recargar";
+App::$strings["Account settings"] = "Configuración de la cuenta";
+App::$strings["Channel settings"] = "Configuración del canal";
+App::$strings["Additional features"] = "Funcionalidades";
+App::$strings["Feature/Addon settings"] = "Complementos";
+App::$strings["Display settings"] = "Ajustes de visualización";
+App::$strings["Manage locations"] = "Gestión de ubicaciones (clones) del canal";
+App::$strings["Export channel"] = "Exportar canal";
+App::$strings["Connected apps"] = "Aplicaciones (apps) conectadas";
+App::$strings["Premium Channel Settings"] = "Configuración del canal premium";
+App::$strings["Private Mail Menu"] = "Menú de correo privado";
+App::$strings["Combined View"] = "Vista combinada";
+App::$strings["Inbox"] = "Bandeja de entrada";
+App::$strings["Outbox"] = "Bandeja de salida";
+App::$strings["New Message"] = "Nuevo mensaje";
+App::$strings["Conversations"] = "Conversaciones";
+App::$strings["Received Messages"] = "Mensajes recibidos";
+App::$strings["Sent Messages"] = "Enviar mensajes";
+App::$strings["No messages."] = "Sin mensajes.";
+App::$strings["Delete conversation"] = "Eliminar conversación";
+App::$strings["Events Menu"] = "Menú de eventos";
+App::$strings["Day View"] = "Eventos del día";
+App::$strings["Week View"] = "Eventos de la semana";
+App::$strings["Month View"] = "Eventos del mes";
+App::$strings["Events Tools"] = "Gestión de eventos";
+App::$strings["Export Calendar"] = "Exportar el calendario";
+App::$strings["Import Calendar"] = "Importar un calendario";
+App::$strings["Chatrooms"] = "Salas de chat";
+App::$strings["Overview"] = "Resumen";
+App::$strings["Chat Members"] = "Miembros del chat";
+App::$strings["Bookmarked Chatrooms"] = "Salas de chat preferidas";
+App::$strings["Suggested Chatrooms"] = "Salas de chat sugeridas";
+App::$strings["photo/image"] = "foto/imagen";
+App::$strings["Click to show more"] = "Hacer clic para ver más";
+App::$strings["Rating Tools"] = "Valoraciones";
+App::$strings["Rate Me"] = "Valorar este canal";
+App::$strings["View Ratings"] = "Mostrar las valoraciones";
+App::$strings["Forums"] = "Foros";
+App::$strings["Tasks"] = "Tareas";
+App::$strings["Documentation"] = "Documentación";
+App::$strings["Project/Site Information"] = "Información sobre el proyecto o sitio";
+App::$strings["For Members"] = "Para los miembros";
+App::$strings["For Administrators"] = "Para los administradores";
+App::$strings["For Developers"] = "Para los desarrolladores";
+App::$strings["Member registrations waiting for confirmation"] = "Inscripciones de nuevos miembros pendientes de aprobación";
+App::$strings["Inspect queue"] = "Examinar la cola";
+App::$strings["DB updates"] = "Actualizaciones de la base de datos";
+App::$strings["Admin"] = "Administrador";
+App::$strings["Plugin Features"] = "Extensiones";
+App::$strings["Channel is blocked on this site."] = "El canal está bloqueado en este sitio.";
+App::$strings["Channel location missing."] = "Falta la dirección del canal.";
+App::$strings["Response from remote channel was incomplete."] = "Respuesta incompleta del canal.";
+App::$strings["Channel was deleted and no longer exists."] = "El canal ha sido eliminado y ya no existe.";
+App::$strings["Protocol disabled."] = "Protocolo deshabilitado.";
+App::$strings["Channel discovery failed."] = "El intento de acceder al canal ha fallado.";
+App::$strings["Cannot connect to yourself."] = "No puede conectarse consigo mismo.";
+App::$strings["%1\$s's bookmarks"] = "Marcadores de %1\$s";
+App::$strings["Public Timeline"] = "Cronología pública";
+App::$strings["Image/photo"] = "Imagen/foto";
+App::$strings["Encrypted content"] = "Contenido cifrado";
+App::$strings["Install %s element: "] = "Instalar el elemento %s:";
+App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio.";
+App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s escribió %2\$s siguiente %3\$s";
+App::$strings["Click to open/close"] = "Pulsar para abrir/cerrar";
+App::$strings["spoiler"] = "spoiler";
+App::$strings["Different viewers will see this text differently"] = "Visitantes diferentes verán este texto de forma distinta";
+App::$strings["$1 wrote:"] = "$1 escribió:";
+App::$strings["Directory Options"] = "Opciones del directorio";
+App::$strings["Safe Mode"] = "Modo seguro";
+App::$strings["Public Forums Only"] = "Solo foros públicos";
+App::$strings["This Website Only"] = "Solo este sitio web";
+App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado";
+App::$strings["Logout"] = "Finalizar sesión";
+App::$strings["End this session"] = "Finalizar esta sesión";
+App::$strings["Home"] = "Inicio";
+App::$strings["Your posts and conversations"] = "Sus publicaciones y conversaciones";
+App::$strings["Your profile page"] = "Su página del perfil";
+App::$strings["Manage/Edit profiles"] = "Administrar/editar perfiles";
+App::$strings["Edit Profile"] = "Editar el perfil";
+App::$strings["Edit your profile"] = "Editar su perfil";
+App::$strings["Your photos"] = "Sus fotos";
+App::$strings["Your files"] = "Sus ficheros";
+App::$strings["Your chatrooms"] = "Sus salas de chat";
App::$strings["Bookmarks"] = "Marcadores";
-App::$strings["Address Book"] = "Libreta de direcciones";
-App::$strings["Login"] = "Iniciar sesión";
-App::$strings["Grid"] = "Red";
-App::$strings["Channel Home"] = "Mi canal";
-App::$strings["Events"] = "Eventos";
-App::$strings["Directory"] = "Directorio";
-App::$strings["Mail"] = "Correo";
-App::$strings["Chat"] = "Chat";
-App::$strings["Probe"] = "Probar";
-App::$strings["Suggest"] = "Sugerir";
-App::$strings["Random Channel"] = "Canal aleatorio";
-App::$strings["Invite"] = "Invitar";
-App::$strings["Features"] = "Funcionalidades";
-App::$strings["Post"] = "Publicación";
-App::$strings["Install"] = "Instalar";
-App::$strings["Purchase"] = "Comprar";
-App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "No se ha podido crear un canal con un identificador que ya existe en este sistema. La importación ha fallado.";
-App::$strings["Channel clone failed. Import failed."] = "La clonación del canal no ha salido bien. La importación ha fallado.";
-App::$strings["Attachments:"] = "Ficheros adjuntos:";
-App::$strings["\$Projectname event notification:"] = "Notificación de eventos de \$Projectname:";
+App::$strings["Your bookmarks"] = "Sus marcadores";
+App::$strings["Your webpages"] = "Sus páginas web";
+App::$strings["Sign in"] = "Acceder";
+App::$strings["%s - click to logout"] = "%s - pulsar para finalizar sesión";
+App::$strings["Remote authentication"] = "Acceder desde su servidor";
+App::$strings["Click to authenticate to your home hub"] = "Pulsar para identificarse en su servidor de inicio";
+App::$strings["Home Page"] = "Página de inicio";
+App::$strings["Create an account"] = "Crear una cuenta";
+App::$strings["Help and documentation"] = "Ayuda y documentación";
+App::$strings["Applications, utilities, links, games"] = "Aplicaciones, utilidades, enlaces, juegos";
+App::$strings["Search site @name, #tag, ?docs, content"] = "Buscar en el sitio por @nombre, #etiqueta, ?ayuda o contenido";
+App::$strings["Channel Directory"] = "Directorio de canales";
+App::$strings["Your grid"] = "Mi red";
+App::$strings["Mark all grid notifications seen"] = "Marcar todas las notificaciones de la red como vistas";
+App::$strings["Channel home"] = "Mi canal";
+App::$strings["Mark all channel notifications seen"] = "Marcar todas las notificaciones del canal como leídas";
+App::$strings["Notices"] = "Avisos";
+App::$strings["Notifications"] = "Notificaciones";
+App::$strings["See all notifications"] = "Ver todas las notificaciones";
+App::$strings["Private mail"] = "Correo privado";
+App::$strings["See all private messages"] = "Ver todas los mensajes privados";
+App::$strings["Mark all private messages seen"] = "Marcar todos los mensajes privados como leídos";
+App::$strings["Event Calendar"] = "Calendario de eventos";
+App::$strings["See all events"] = "Ver todos los eventos";
+App::$strings["Mark all events seen"] = "Marcar todos los eventos como leidos";
+App::$strings["Manage Your Channels"] = "Gestionar sus canales";
+App::$strings["Account/Channel Settings"] = "Ajustes de cuenta/canales";
+App::$strings["Site Setup and Configuration"] = "Ajustes y configuración del sitio";
+App::$strings["Loading..."] = "Cargando...";
+App::$strings["@name, #tag, ?doc, content"] = "@nombre, #etiqueta, ?ayuda, contenido";
+App::$strings["Please wait..."] = "Espere por favor…";
+App::$strings["New window"] = "Nueva ventana";
+App::$strings["Open the selected location in a different window or browser tab"] = "Abrir la dirección seleccionada en una ventana o pestaña aparte";
+App::$strings["User '%s' deleted"] = "El usuario '%s' ha sido eliminado";
+App::$strings["%d invitation available"] = array(
+ 0 => "%d invitación pendiente",
+ 1 => "%d invitaciones disponibles",
+);
+App::$strings["Find Channels"] = "Encontrar canales";
+App::$strings["Enter name or interest"] = "Introducir nombre o interés";
+App::$strings["Connect/Follow"] = "Conectar/Seguir";
+App::$strings["Examples: Robert Morgenstein, Fishing"] = "Ejemplos: José Fernández, Pesca";
+App::$strings["Random Profile"] = "Perfil aleatorio";
+App::$strings["Invite Friends"] = "Invitar a amigos";
+App::$strings["Advanced example: name=fred and country=iceland"] = "Ejemplo avanzado: nombre=juan y país=españa";
+App::$strings["%d connection in common"] = array(
+ 0 => "%d conexión en común",
+ 1 => "%d conexiones en común",
+);
+App::$strings["show more"] = "mostrar más";
App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s ahora está conectado/a con %2\$s";
App::$strings["%1\$s poked %2\$s"] = "%1\$s ha dado un toque a %2\$s";
App::$strings["View %s's profile @ %s"] = "Ver el perfil @ %s de %s";
@@ -1682,9 +1787,8 @@ App::$strings["Categories:"] = "Categorías:";
App::$strings["Filed under:"] = "Archivado bajo:";
App::$strings["View in context"] = "Mostrar en su contexto";
App::$strings["remove"] = "eliminar";
-App::$strings["Loading..."] = "Cargando...";
App::$strings["Delete Selected Items"] = "Eliminar elementos seleccionados";
-App::$strings["View Source"] = "Ver la fuente original de la publicación";
+App::$strings["View Source"] = "Ver el código fuente de la entrada";
App::$strings["Follow Thread"] = "Seguir este hilo";
App::$strings["Unfollow Thread"] = "Dejar de seguir este hilo";
App::$strings["Activity/Posts"] = "Actividad y publicaciones";
@@ -1707,24 +1811,16 @@ App::$strings[", and %d other people"] = array(
);
App::$strings["%s like this."] = "A %s le gusta esto.";
App::$strings["%s don't like this."] = "A %s no le gusta esto.";
-App::$strings["Visible to <strong>everybody</strong>"] = "Visible para <strong>cualquiera</strong>";
-App::$strings["Please enter a video link/URL:"] = "Por favor, introduzca un enlace de vídeo:";
-App::$strings["Please enter an audio link/URL:"] = "Por favor, introduzca un enlace de audio:";
+App::$strings["Set your location"] = "Establecer su ubicación";
+App::$strings["Clear browser location"] = "Eliminar los datos de localización geográfica del navegador";
App::$strings["Tag term:"] = "Término de la etiqueta:";
App::$strings["Where are you right now?"] = "¿Donde está ahora?";
App::$strings["Page link name"] = "Nombre del enlace de la página";
App::$strings["Post as"] = "Publicar como";
-App::$strings["upload photo"] = "subir foto";
-App::$strings["attach file"] = "adjuntar fichero";
-App::$strings["web link"] = "enlace web";
-App::$strings["Insert video link"] = "Insertar enlace de vídeo";
-App::$strings["video link"] = "enlace de vídeo";
-App::$strings["Insert audio link"] = "Insertar enlace de audio";
-App::$strings["audio link"] = "enlace de audio";
-App::$strings["set location"] = "establecer ubicación";
-App::$strings["clear location"] = "borrar los datos de ubicación";
-App::$strings["permissions"] = "permisos";
+App::$strings["Toggle voting"] = "Cambiar votación";
+App::$strings["Categories (optional, comma-separated list)"] = "Categorías (opcional, lista separada por comas)";
App::$strings["Set publish date"] = "Establecer la fecha de publicación";
+App::$strings["OK"] = "OK";
App::$strings["Discover"] = "Descubrir";
App::$strings["Imported public streams"] = "Contenidos públicos importados";
App::$strings["Commented Order"] = "Comentarios recientes";
@@ -1742,7 +1838,6 @@ App::$strings["About"] = "Mi perfil";
App::$strings["Profile Details"] = "Detalles del perfil";
App::$strings["Photo Albums"] = "Ãlbumes de fotos";
App::$strings["Files and Storage"] = "Ficheros y repositorio";
-App::$strings["Chatrooms"] = "Salas de chat";
App::$strings["Saved Bookmarks"] = "Marcadores guardados";
App::$strings["Manage Webpages"] = "Administrar páginas web";
App::$strings["__ctx:noun__ Attending"] = array(
@@ -1769,54 +1864,99 @@ App::$strings["__ctx:noun__ Abstain"] = array(
0 => "se abstiene",
1 => "Se abstienen",
);
-App::$strings["%1\$s's bookmarks"] = "Marcadores de %1\$s";
-App::$strings["Missing room name"] = "Sala de chat sin nombre";
-App::$strings["Duplicate room name"] = "Nombre de sala duplicado.";
-App::$strings["Invalid room specifier."] = "Especificador de sala no válido.";
-App::$strings["Room not found."] = "Sala no encontrada.";
-App::$strings["Room is full"] = "La sala está llena.";
-App::$strings["New window"] = "Nueva ventana";
-App::$strings["Open the selected location in a different window or browser tab"] = "Abrir la dirección seleccionada en una ventana o pestaña aparte";
-App::$strings["User '%s' deleted"] = "El usuario '%s' ha sido eliminado";
-App::$strings["Logged out."] = "Desconectado/a.";
-App::$strings["Failed authentication"] = "Autenticación fallida.";
-App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado";
-App::$strings["Public Timeline"] = "Cronología pública";
App::$strings["Frequently"] = "Frecuentemente";
App::$strings["Hourly"] = "Cada hora";
App::$strings["Twice daily"] = "Dos veces al día";
App::$strings["Daily"] = "Diariamente";
App::$strings["Weekly"] = "Semanalmente";
App::$strings["Monthly"] = "Mensualmente";
-App::$strings["Friendica"] = "Friendica";
-App::$strings["OStatus"] = "OStatus";
-App::$strings["GNU-Social"] = "GNU Social";
-App::$strings["RSS/Atom"] = "RSS/Atom";
-App::$strings["Diaspora"] = "Diaspora";
-App::$strings["Facebook"] = "Facebook";
-App::$strings["Zot"] = "Zot";
-App::$strings["LinkedIn"] = "LinkedIn";
-App::$strings["XMPP/IM"] = "XMPP/IM";
-App::$strings["MySpace"] = "MySpace";
-App::$strings["%d invitation available"] = array(
- 0 => "%d invitación pendiente",
- 1 => "%d invitaciones disponibles",
-);
-App::$strings["Find Channels"] = "Encontrar canales";
-App::$strings["Enter name or interest"] = "Introducir nombre o interés";
-App::$strings["Connect/Follow"] = "Conectar/Seguir";
-App::$strings["Examples: Robert Morgenstein, Fishing"] = "Ejemplos: José Fernández, Pesca";
-App::$strings["Random Profile"] = "Perfil aleatorio";
-App::$strings["Invite Friends"] = "Invitar a amigos";
-App::$strings["Advanced example: name=fred and country=iceland"] = "Ejemplo avanzado: nombre=juan y país=españa";
-App::$strings["Saved Folders"] = "Carpetas guardadas";
-App::$strings["Everything"] = "Todo";
-App::$strings["Categories"] = "Categorías";
-App::$strings["%d connection in common"] = array(
- 0 => "%d conexión en común",
- 1 => "%d conexiones en común",
-);
-App::$strings["show more"] = "mostrar más";
+App::$strings["Currently Male"] = "Actualmente hombre";
+App::$strings["Currently Female"] = "Actualmente mujer";
+App::$strings["Mostly Male"] = "Generalmente hombre";
+App::$strings["Mostly Female"] = "Generalmente mujer";
+App::$strings["Transgender"] = "Transgénero";
+App::$strings["Intersex"] = "Intersexual";
+App::$strings["Transsexual"] = "Transexual";
+App::$strings["Hermaphrodite"] = "Hermafrodita";
+App::$strings["Neuter"] = "Neutral";
+App::$strings["Non-specific"] = "No especificado";
+App::$strings["Other"] = "Otro";
+App::$strings["Undecided"] = "Indeciso/a";
+App::$strings["Males"] = "Hombres";
+App::$strings["Females"] = "Mujeres";
+App::$strings["Gay"] = "Homosexual";
+App::$strings["Lesbian"] = "Lesbiana";
+App::$strings["No Preference"] = "Sin preferencias";
+App::$strings["Bisexual"] = "Bisexual";
+App::$strings["Autosexual"] = "Autosexual";
+App::$strings["Abstinent"] = "Casto/a";
+App::$strings["Virgin"] = "Virgen";
+App::$strings["Deviant"] = "Fuera de lo común";
+App::$strings["Fetish"] = "Fetichista";
+App::$strings["Oodles"] = "Orgías";
+App::$strings["Nonsexual"] = "Asexual";
+App::$strings["Single"] = "Soltero/a";
+App::$strings["Lonely"] = "Solo/a";
+App::$strings["Available"] = "Disponible";
+App::$strings["Unavailable"] = "No disponible";
+App::$strings["Has crush"] = "Enamorado/a";
+App::$strings["Infatuated"] = "Apasionado/a";
+App::$strings["Dating"] = "Saliendo con alguien";
+App::$strings["Unfaithful"] = "Infiel";
+App::$strings["Sex Addict"] = "Con adicción al sexo";
+App::$strings["Friends/Benefits"] = "Amigos con algo extra";
+App::$strings["Casual"] = "Casual";
+App::$strings["Engaged"] = "Prometido/a";
+App::$strings["Married"] = "Casado/a";
+App::$strings["Imaginarily married"] = "Casado/a en sueños";
+App::$strings["Partners"] = "Pareja";
+App::$strings["Cohabiting"] = "Cohabitando";
+App::$strings["Common law"] = "Matrimonio tradicional";
+App::$strings["Happy"] = "Felíz";
+App::$strings["Not looking"] = "No estoy buscando";
+App::$strings["Swinger"] = "Libertino";
+App::$strings["Betrayed"] = "Engañado/a";
+App::$strings["Separated"] = "Separado/a";
+App::$strings["Unstable"] = "Inestable";
+App::$strings["Divorced"] = "Divorciado/a";
+App::$strings["Imaginarily divorced"] = "Divorciado/a en sueños";
+App::$strings["Widowed"] = "Viudo/a";
+App::$strings["Uncertain"] = "Indeterminado";
+App::$strings["It's complicated"] = "Es complicado";
+App::$strings["Don't care"] = "No me importa";
+App::$strings["Ask me"] = "Pregúnteme";
+App::$strings["Visible to your default audience"] = "Visible para su público predeterminado.";
+App::$strings["Only me"] = "Sólo yo";
+App::$strings["Public"] = "Público";
+App::$strings["Anybody in the \$Projectname network"] = "Cualquiera en la red \$Projectname";
+App::$strings["Any account on %s"] = "Cualquier cuenta en %s";
+App::$strings["Any of my connections"] = "Cualquiera de mis conexiones";
+App::$strings["Only connections I specifically allow"] = "Sólo las conexiones que yo permita de forma explícita";
+App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Cualquiera que esté autenticado (podría incluir a los visitantes de otras redes)";
+App::$strings["Any connections including those who haven't yet been approved"] = "Cualquier conexión incluyendo aquellas que aún no han sido aprobadas";
+App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Esta es la configuración predeterminada para su flujo (stream) habitual de publicaciones.";
+App::$strings["This is your default setting for who can view your default channel profile"] = "Esta es su configuración por defecto para establecer quién puede ver su perfil del canal predeterminado";
+App::$strings["This is your default setting for who can view your connections"] = "Este es su ajuste predeterminado para establecer quién puede ver sus conexiones";
+App::$strings["This is your default setting for who can view your file storage and photos"] = "Este es su ajuste predeterminado para establecer quién puede ver su repositorio de ficheros y sus fotos";
+App::$strings["This is your default setting for the audience of your webpages"] = "Este es el ajuste predeterminado para establecer la audiencia de sus páginas web";
+App::$strings["Not a valid email address"] = "Dirección de correo no válida";
+App::$strings["Your email domain is not among those allowed on this site"] = "Su dirección de correo no pertenece a ninguno de los dominios permitidos en este sitio.";
+App::$strings["Your email address is already registered at this site."] = "Su dirección de correo está ya registrada en este sitio.";
+App::$strings["An invitation is required."] = "Es obligatorio que le inviten.";
+App::$strings["Invitation could not be verified."] = "No se ha podido verificar su invitación.";
+App::$strings["Please enter the required information."] = "Por favor introduzca la información requerida.";
+App::$strings["Failed to store account information."] = "La información de la cuenta no se ha podido guardar.";
+App::$strings["Registration confirmation for %s"] = "Confirmación de registro para %s";
+App::$strings["Registration request at %s"] = "Solicitud de registro en %s";
+App::$strings["Administrator"] = "Administrador";
+App::$strings["your registration password"] = "su contraseña de registro";
+App::$strings["Registration details for %s"] = "Detalles del registro de %s";
+App::$strings["Account approved."] = "Cuenta aprobada.";
+App::$strings["Registration revoked for %s"] = "Registro revocado para %s";
+App::$strings["Account verified. Please login."] = "Cuenta verificada. Por favor, inicie sesión.";
+App::$strings["Click here to upgrade."] = "Pulse aquí para actualizar";
+App::$strings["This action exceeds the limits set by your subscription plan."] = "Esta acción supera los límites establecidos por su plan de suscripción ";
+App::$strings["This action is not available under your subscription plan."] = "Esta acción no está disponible en su plan de suscripción.";
App::$strings["Item was not found."] = "Elemento no encontrado.";
App::$strings["No source file."] = "Ningún fichero de origen";
App::$strings["Cannot locate file to replace"] = "No se puede localizar el fichero que va a ser sustituido.";
@@ -1832,92 +1972,44 @@ App::$strings["Path not found."] = "Ruta no encontrada";
App::$strings["mkdir failed."] = "mkdir ha fallado.";
App::$strings["database storage failed."] = "el almacenamiento en la base de datos ha fallado.";
App::$strings["Empty path"] = "Ruta vacía";
-App::$strings["Birthday"] = "Cumpleaños";
-App::$strings["Age: "] = "Edad:";
-App::$strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-DD o MM-DD";
-App::$strings["never"] = "nunca";
-App::$strings["less than a second ago"] = "hace un instante";
-App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "hace %1\$d %2\$s";
-App::$strings["__ctx:relative_date__ year"] = array(
- 0 => "año",
- 1 => "años",
-);
-App::$strings["__ctx:relative_date__ month"] = array(
- 0 => "mes",
- 1 => "meses",
-);
-App::$strings["__ctx:relative_date__ week"] = array(
- 0 => "semana",
- 1 => "semanas",
-);
-App::$strings["__ctx:relative_date__ day"] = array(
- 0 => "día",
- 1 => "días",
-);
-App::$strings["__ctx:relative_date__ hour"] = array(
- 0 => "hora",
- 1 => "horas",
-);
-App::$strings["__ctx:relative_date__ minute"] = array(
- 0 => "minuto",
- 1 => "minutos",
-);
-App::$strings["__ctx:relative_date__ second"] = array(
- 0 => "segundo",
- 1 => "segundos",
-);
-App::$strings["%1\$s's birthday"] = "Cumpleaños de %1\$s";
-App::$strings["Happy Birthday %1\$s"] = "Feliz cumpleaños %1\$s";
-App::$strings["Directory Options"] = "Opciones del directorio";
-App::$strings["Safe Mode"] = "Modo seguro";
-App::$strings["Public Forums Only"] = "Solo foros públicos";
-App::$strings["This Website Only"] = "Solo este sitio web";
-App::$strings["\$Projectname Notification"] = "Notificación de \$Projectname";
-App::$strings["\$projectname"] = "\$projectname";
-App::$strings["Thank You,"] = "Gracias,";
-App::$strings["%s Administrator"] = "%s Administrador";
-App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
-App::$strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla:Aviso] Nuevo mensaje en %s";
-App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s le ha enviado un nuevo mensaje privado en %3\$s.";
-App::$strings["%1\$s sent you %2\$s."] = "%1\$s le ha enviado %2\$s.";
-App::$strings["a private message"] = "un mensaje privado";
-App::$strings["Please visit %s to view and/or reply to your private messages."] = "Por favor visite %s para ver y/o responder a su mensaje privado.";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s ha comentado [zrl=%3\$s]%4\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s ha comentado [zrl=%3\$s]%5\$s de %4\$s[/zrl] ";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s ha comentado [zrl=%3\$s]%4\$s creado por usted[/zrl]";
-App::$strings["[Hubzilla:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Hubzilla:Aviso] Nuevo comentario de %2\$s a la conversación #%1\$d";
-App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s ha comentado un elemento/conversación que ha estado siguiendo.";
-App::$strings["Please visit %s to view and/or reply to the conversation."] = "Para ver o comentar la conversación, visite %s";
-App::$strings["[Hubzilla:Notify] %s posted to your profile wall"] = "[Hubzilla:Aviso] %s ha publicado una entrada en su página de inicio del perfil (\"muro\")";
-App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s ha publicado en su página del perfil en %3\$s";
-App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s ha publicado en [zrl=%3\$s]su página del perfil[/zrl]";
-App::$strings["[Hubzilla:Notify] %s tagged you"] = "[Hubzilla:Aviso] %s le ha etiquetado";
-App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s le ha etiquetado en %3\$s";
-App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]le etiquetó[/zrl].";
-App::$strings["[Hubzilla:Notify] %1\$s poked you"] = "[Hubzilla:Aviso] %1\$s le ha dado un toque";
-App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s le ha dado un toque en %3\$s";
-App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]le ha dado un toque[/zrl].";
-App::$strings["[Hubzilla:Notify] %s tagged your post"] = "[Hubzilla:Aviso] %s ha etiquetado su publicación";
-App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s ha etiquetado su publicación en %3\$s";
-App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s ha etiquetado [zrl=%3\$s]su publicación[/zrl]";
-App::$strings["[Hubzilla:Notify] Introduction received"] = "[Hubzilla:Aviso] Ha recibido una solicitud de conexión";
-App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, ha recibido una nueva solicitud de conexión de '%2\$s' en %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, ha recibido [zrl=%2\$s]una nueva solicitud de conexión[/zrl] de %3\$s.";
-App::$strings["You may visit their profile at %s"] = "Puede visitar su perfil en %s";
-App::$strings["Please visit %s to approve or reject the connection request."] = "Por favor, visite %s para permitir o rechazar la solicitad de conexión.";
-App::$strings["[Hubzilla:Notify] Friend suggestion received"] = "[Hubzilla:Aviso] Ha recibido una sugerencia de amistad";
-App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, ha recibido una sugerencia de conexión de '%2\$s' en %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, ha recibido [zrl=%2\$s]una sugerencia de conexión[/zrl] para %3\$s de %4\$s.";
-App::$strings["Name:"] = "Nombre:";
-App::$strings["Photo:"] = "Foto:";
-App::$strings["Please visit %s to approve or reject the suggestion."] = "Por favor, visite %s para aprobar o rechazar la sugerencia.";
-App::$strings["[Hubzilla:Notify]"] = "[Hubzilla:Aviso]";
-App::$strings["This event has been added to your calendar."] = "Este evento ha sido añadido a su calendario.";
-App::$strings["Not specified"] = "Sin especificar";
-App::$strings["Needs Action"] = "Necesita de una intervención";
-App::$strings["Completed"] = "Completado/a";
-App::$strings["In Process"] = "En proceso";
-App::$strings["Cancelled"] = "Cancelado/a";
+App::$strings["Unable to obtain identity information from database"] = "No ha sido posible obtener información sobre la identidad desde la base de datos";
+App::$strings["Empty name"] = "Nombre vacío";
+App::$strings["Name too long"] = "Nombre demasiado largo";
+App::$strings["No account identifier"] = "Ningún identificador de la cuenta";
+App::$strings["Nickname is required."] = "Se requiere un sobrenombre (alias).";
+App::$strings["Reserved nickname. Please choose another."] = "Sobrenombre en uso. Por favor, elija otro.";
+App::$strings["Nickname has unsupported characters or is already being used on this site."] = "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio.";
+App::$strings["Unable to retrieve created identity"] = "No ha sido posible recuperar la identidad creada";
+App::$strings["Default Profile"] = "Perfil principal";
+App::$strings["Requested channel is not available."] = "El canal solicitado no está disponible.";
+App::$strings["Create New Profile"] = "Crear un nuevo perfil";
+App::$strings["Visible to everybody"] = "Visible para todos";
+App::$strings["Gender:"] = "Género:";
+App::$strings["Status:"] = "Estado:";
+App::$strings["Homepage:"] = "Página personal:";
+App::$strings["Online Now"] = "Ahora en línea";
+App::$strings["Like this channel"] = "Me gusta este canal";
+App::$strings["j F, Y"] = "j F Y";
+App::$strings["j F"] = "j F";
+App::$strings["Birthday:"] = "Cumpleaños:";
+App::$strings["for %1\$d %2\$s"] = "por %1\$d %2\$s";
+App::$strings["Sexual Preference:"] = "Orientación sexual:";
+App::$strings["Tags:"] = "Etiquetas:";
+App::$strings["Political Views:"] = "Posición política:";
+App::$strings["Religion:"] = "Religión:";
+App::$strings["Hobbies/Interests:"] = "Aficciones o intereses:";
+App::$strings["Likes:"] = "Me gusta:";
+App::$strings["Dislikes:"] = "No me gusta:";
+App::$strings["Contact information and Social Networks:"] = "Información de contacto y redes sociales:";
+App::$strings["My other channels:"] = "Mis otros canales:";
+App::$strings["Musical interests:"] = "Preferencias musicales:";
+App::$strings["Books, literature:"] = "Libros, literatura:";
+App::$strings["Television:"] = "Televisión:";
+App::$strings["Film/dance/culture/entertainment:"] = "Cine, danza, cultura, entretenimiento:";
+App::$strings["Love/Romance:"] = "Vida sentimental o amorosa:";
+App::$strings["Work/employment:"] = "Trabajo:";
+App::$strings["School/education:"] = "Estudios:";
+App::$strings["Like this thing"] = "Me gusta esto";
App::$strings["General Features"] = "Funcionalidades básicas";
App::$strings["Content Expiration"] = "Caducidad del contenido";
App::$strings["Remove posts/comments and/or private messages at a future time"] = "Eliminar publicaciones/comentarios y/o mensajes privados más adelante";
@@ -1962,7 +2054,6 @@ App::$strings["Search by Date"] = "Buscar por fecha";
App::$strings["Ability to select posts by date ranges"] = "Capacidad de seleccionar entradas por rango de fechas";
App::$strings["Privacy Groups"] = "Grupos de canales";
App::$strings["Enable management and selection of privacy groups"] = "Activar la gestión y selección de grupos de canales";
-App::$strings["Saved Searches"] = "Búsquedas guardadas";
App::$strings["Save search terms for re-use"] = "Guardar términos de búsqueda para su reutilización";
App::$strings["Network Personal Tab"] = "Actividad personal";
App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Habilitar una pestaña en la cual se muestren solo las entradas en las que ha participado.";
@@ -1972,13 +2063,14 @@ App::$strings["Affinity Tool"] = "Herramienta de afinidad";
App::$strings["Filter stream activity by depth of relationships"] = "Filtrar el contenido según la profundidad de las relaciones";
App::$strings["Connection Filtering"] = "Filtrado de conexiones";
App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filtrar publicaciones entrantes de conexiones por palabras clave o contenido";
-App::$strings["Suggest Channels"] = "Sugerir canales";
App::$strings["Show channel suggestions"] = "Mostrar sugerencias de canales";
App::$strings["Post/Comment Tools"] = "Gestión de entradas y comentarios";
App::$strings["Community Tagging"] = "Etiquetas de la comunidad";
App::$strings["Ability to tag existing posts"] = "Capacidad de etiquetar entradas existentes";
App::$strings["Post Categories"] = "Categorías de entradas";
App::$strings["Add categories to your posts"] = "Añadir categorías a sus publicaciones";
+App::$strings["Emoji Reactions"] = "Emoticonos \"emoji\"";
+App::$strings["Add emoji reaction ability to posts"] = "Activar la capacidad de añadir un emoticono \"emoji\" a las entradas";
App::$strings["Ability to file posts under folders"] = "Capacidad de archivar entradas en carpetas";
App::$strings["Dislike Posts"] = "Desagrado de publicaciones";
App::$strings["Ability to dislike posts/comments"] = "Capacidad de mostrar desacuerdo con el contenido de entradas y comentarios";
@@ -1986,119 +2078,66 @@ App::$strings["Star Posts"] = "Entradas destacadas";
App::$strings["Ability to mark special posts with a star indicator"] = "Capacidad de marcar entradas destacadas con un indicador de estrella";
App::$strings["Tag Cloud"] = "Nube de etiquetas";
App::$strings["Provide a personal tag cloud on your channel page"] = "Proveer nube de etiquetas personal en su página de canal";
-App::$strings["Channel is blocked on this site."] = "El canal está bloqueado en este sitio.";
-App::$strings["Channel location missing."] = "Falta la dirección del canal.";
-App::$strings["Response from remote channel was incomplete."] = "Respuesta incompleta del canal.";
-App::$strings["Channel was deleted and no longer exists."] = "El canal ha sido eliminado y ya no existe.";
-App::$strings["Protocol disabled."] = "Protocolo deshabilitado.";
-App::$strings["Channel discovery failed."] = "El intento de acceder al canal ha fallado.";
-App::$strings["Cannot connect to yourself."] = "No puede conectarse consigo mismo.";
+App::$strings["Embedded content"] = "Contenido incorporado";
+App::$strings["Embedding disabled"] = "Incrustación deshabilitada";
+App::$strings["Who can see this?"] = "¿Quién puede ver esto?";
+App::$strings["Custom selection"] = "Selección personalizada";
+App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Seleccione \"Mostrar\" para permitir la visualización. La opción \"No mostrar\" le permite anular y limitar el alcance de \"Mostrar\".";
+App::$strings["Show"] = "Mostrar";
+App::$strings["Don't show"] = "No mostrar";
+App::$strings["Other networks and post services"] = "Otras redes y servicios de publicación";
+App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha compartido.</br /> Estos permisos establecen quién está autorizado para ver el mensaje.";
+App::$strings["Logged out."] = "Desconectado/a.";
+App::$strings["Failed authentication"] = "Autenticación fallida.";
+App::$strings["Birthday"] = "Cumpleaños";
+App::$strings["Age: "] = "Edad:";
+App::$strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-DD o MM-DD";
+App::$strings["never"] = "nunca";
+App::$strings["less than a second ago"] = "hace un instante";
+App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "hace %1\$d %2\$s";
+App::$strings["__ctx:relative_date__ year"] = array(
+ 0 => "año",
+ 1 => "años",
+);
+App::$strings["__ctx:relative_date__ month"] = array(
+ 0 => "mes",
+ 1 => "meses",
+);
+App::$strings["__ctx:relative_date__ week"] = array(
+ 0 => "semana",
+ 1 => "semanas",
+);
+App::$strings["__ctx:relative_date__ day"] = array(
+ 0 => "día",
+ 1 => "días",
+);
+App::$strings["__ctx:relative_date__ hour"] = array(
+ 0 => "hora",
+ 1 => "horas",
+);
+App::$strings["__ctx:relative_date__ minute"] = array(
+ 0 => "minuto",
+ 1 => "minutos",
+);
+App::$strings["__ctx:relative_date__ second"] = array(
+ 0 => "segundo",
+ 1 => "segundos",
+);
+App::$strings["%1\$s's birthday"] = "Cumpleaños de %1\$s";
+App::$strings["Happy Birthday %1\$s"] = "Feliz cumpleaños %1\$s";
App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos existentes sean aplicados a este grupo y sus futuros miembros. Si no quiere esto, por favor cree otro grupo con un nombre diferente.";
App::$strings["Add new connections to this privacy group"] = "Añadir conexiones nuevas a este grupo de canales";
App::$strings["edit"] = "editar";
App::$strings["Edit group"] = "Editar grupo";
App::$strings["Add privacy group"] = "Añadir un grupo de canales";
App::$strings["Channels not in any privacy group"] = "Sin canales en ningún grupo";
-App::$strings["add"] = "añadir";
-App::$strings["Image/photo"] = "Imagen/foto";
-App::$strings["Encrypted content"] = "Contenido cifrado";
-App::$strings["Install %s element: "] = "Instalar el elemento %s:";
-App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio.";
-App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s escribió %2\$s siguiente %3\$s";
-App::$strings["Click to open/close"] = "Pulsar para abrir/cerrar";
-App::$strings["spoiler"] = "spoiler";
-App::$strings["Different viewers will see this text differently"] = "Visitantes diferentes verán este texto de forma distinta";
-App::$strings["$1 wrote:"] = "$1 escribió:";
-App::$strings["(Unknown)"] = "(Desconocido)";
-App::$strings["Visible to anybody on the internet."] = "Visible para cualquiera en internet.";
-App::$strings["Visible to you only."] = "Visible sólo para usted.";
-App::$strings["Visible to anybody in this network."] = "Visible para cualquiera en esta red.";
-App::$strings["Visible to anybody authenticated."] = "Visible para cualquiera que haya sido autenticado.";
-App::$strings["Visible to anybody on %s."] = "Visible para cualquiera en %s.";
-App::$strings["Visible to all connections."] = "Visible para todas las conexiones.";
-App::$strings["Visible to approved connections."] = "Visible para las conexiones permitidas.";
-App::$strings["Visible to specific connections."] = "Visible para conexiones específicas.";
-App::$strings["Privacy group is empty."] = "El grupo de canales está vacío.";
-App::$strings["Privacy group: %s"] = "Grupo de canales: %s";
-App::$strings["Connection not found."] = "Conexión no encontrada";
-App::$strings["profile photo"] = "foto del perfil";
-App::$strings["view full size"] = "Ver en el tamaño original";
-App::$strings["No Subject"] = "Sin asunto";
-App::$strings["System"] = "Sistema";
-App::$strings["Create Personal App"] = "Crear una aplicación personal";
-App::$strings["Edit Personal App"] = "Editar una aplicación personal";
-App::$strings["Suggestions"] = "Sugerencias";
-App::$strings["See more..."] = "Ver más...";
-App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Tiene %1$.0f de %2$.0f conexiones permitidas.";
-App::$strings["Add New Connection"] = "Añadir nueva conexión";
-App::$strings["Enter channel address"] = "Dirección del canal";
-App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Ejemplos: manuel@ejemplo.com, https://ejemplo.com/carmen";
-App::$strings["Notes"] = "Notas";
-App::$strings["Remove term"] = "Eliminar término";
-App::$strings["Archives"] = "Hemeroteca";
-App::$strings["Refresh"] = "Recargar";
-App::$strings["Account settings"] = "Configuración de la cuenta";
-App::$strings["Channel settings"] = "Configuración del canal";
-App::$strings["Additional features"] = "Funcionalidades";
-App::$strings["Feature/Addon settings"] = "Complementos";
-App::$strings["Display settings"] = "Ajustes de visualización";
-App::$strings["Manage locations"] = "Gestión de ubicaciones (clones) del canal";
-App::$strings["Export channel"] = "Exportar canal";
-App::$strings["Connected apps"] = "Aplicaciones conectadas";
-App::$strings["Premium Channel Settings"] = "Configuración del canal premium";
-App::$strings["Private Mail Menu"] = "Menú de correo privado";
-App::$strings["Combined View"] = "Vista combinada";
-App::$strings["Inbox"] = "Bandeja de entrada";
-App::$strings["Outbox"] = "Bandeja de salida";
-App::$strings["New Message"] = "Nuevo mensaje";
-App::$strings["Conversations"] = "Conversaciones";
-App::$strings["Received Messages"] = "Mensajes recibidos";
-App::$strings["Sent Messages"] = "Enviar mensajes";
-App::$strings["No messages."] = "Sin mensajes.";
-App::$strings["Delete conversation"] = "Eliminar conversación";
-App::$strings["Events Menu"] = "Menú de eventos";
-App::$strings["Day View"] = "Eventos del día";
-App::$strings["Week View"] = "Eventos de la semana";
-App::$strings["Month View"] = "Eventos del mes";
-App::$strings["Events Tools"] = "Gestión de eventos";
-App::$strings["Export Calendar"] = "Exportar el calendario";
-App::$strings["Import Calendar"] = "Importar un calendario";
-App::$strings["Overview"] = "Resumen";
-App::$strings["Chat Members"] = "Miembros del chat";
-App::$strings["Bookmarked Chatrooms"] = "Salas de chat preferidas";
-App::$strings["Suggested Chatrooms"] = "Salas de chat sugeridas";
-App::$strings["photo/image"] = "foto/imagen";
-App::$strings["Click to show more"] = "Hacer clic para ver más";
-App::$strings["Rating Tools"] = "Valoraciones";
-App::$strings["Rate Me"] = "Valorar este canal";
-App::$strings["View Ratings"] = "Mostrar las valoraciones";
-App::$strings["Forums"] = "Foros";
-App::$strings["Tasks"] = "Tareas";
-App::$strings["Documentation"] = "Documentación";
-App::$strings["Project/Site Information"] = "Información sobre el proyecto o sitio";
-App::$strings["For Members"] = "Para los miembros";
-App::$strings["For Administrators"] = "Para los administradores";
-App::$strings["For Developers"] = "Para los desarrolladores";
-App::$strings["Accounts"] = "Cuentas";
-App::$strings["Member registrations waiting for confirmation"] = "Inscripciones de nuevos miembros pendientes de aprobación";
-App::$strings["Inspect queue"] = "Examinar la cola";
-App::$strings["DB updates"] = "Actualizaciones de la base de datos";
-App::$strings["Admin"] = "Administrador";
-App::$strings["Plugin Features"] = "Extensiones";
-App::$strings["Tags"] = "Etiquetas";
-App::$strings["Keywords"] = "Palabras clave";
-App::$strings["have"] = "tener";
-App::$strings["has"] = "tiene";
-App::$strings["want"] = "quiero";
-App::$strings["wants"] = "quiere";
-App::$strings["likes"] = "gusta de";
-App::$strings["dislikes"] = "no gusta de";
App::$strings["Delete this item?"] = "¿Borrar este elemento?";
App::$strings["[-] show less"] = "[-] mostrar menos";
App::$strings["[+] expand"] = "[+] expandir";
App::$strings["[-] collapse"] = "[-] contraer";
App::$strings["Password too short"] = "Contraseña demasiado corta";
App::$strings["Passwords do not match"] = "Las contraseñas no coinciden";
+App::$strings["everybody"] = "cualquiera";
App::$strings["Secret Passphrase"] = "Contraseña secreta";
App::$strings["Passphrase hint"] = "Pista de contraseña";
App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Aviso: los permisos han cambiado pero aún no han sido enviados.";
@@ -2150,52 +2189,28 @@ App::$strings["__ctx:calendar__ month"] = "mes";
App::$strings["__ctx:calendar__ week"] = "semana";
App::$strings["__ctx:calendar__ day"] = "día";
App::$strings["__ctx:calendar__ All day"] = "Todos los días";
-App::$strings["No recipient provided."] = "No se ha especificado ningún destinatario.";
-App::$strings["[no subject]"] = "[sin asunto]";
-App::$strings["Unable to determine sender."] = "No ha sido posible determinar el remitente. ";
-App::$strings["Stored post could not be verified."] = "No se han podido verificar las publicaciones guardadas.";
-App::$strings["Logout"] = "Finalizar sesión";
-App::$strings["End this session"] = "Finalizar esta sesión";
-App::$strings["Home"] = "Inicio";
-App::$strings["Your posts and conversations"] = "Sus publicaciones y conversaciones";
-App::$strings["Your profile page"] = "Su página del perfil";
-App::$strings["Manage/Edit profiles"] = "Administrar/editar perfiles";
-App::$strings["Edit your profile"] = "Editar su perfil";
-App::$strings["Your photos"] = "Sus fotos";
-App::$strings["Your files"] = "Sus ficheros";
-App::$strings["Your chatrooms"] = "Sus salas de chat";
-App::$strings["Your bookmarks"] = "Sus marcadores";
-App::$strings["Your webpages"] = "Sus páginas web";
-App::$strings["Sign in"] = "Acceder";
-App::$strings["%s - click to logout"] = "%s - pulsar para finalizar sesión";
-App::$strings["Remote authentication"] = "Acceder desde su servidor";
-App::$strings["Click to authenticate to your home hub"] = "Pulsar para identificarse en su servidor de inicio";
-App::$strings["Home Page"] = "Página de inicio";
-App::$strings["Create an account"] = "Crear una cuenta";
-App::$strings["Help and documentation"] = "Ayuda y documentación";
-App::$strings["Applications, utilities, links, games"] = "Aplicaciones, utilidades, enlaces, juegos";
-App::$strings["Search site @name, #tag, ?docs, content"] = "Buscar en el sitio por @nombre, #etiqueta, ?ayuda o contenido";
-App::$strings["Channel Directory"] = "Directorio de canales";
-App::$strings["Your grid"] = "Mi red";
-App::$strings["Mark all grid notifications seen"] = "Marcar todas las notificaciones de la red como vistas";
-App::$strings["Channel home"] = "Mi canal";
-App::$strings["Mark all channel notifications seen"] = "Marcar todas las notificaciones del canal como leídas";
-App::$strings["Notices"] = "Avisos";
-App::$strings["Notifications"] = "Notificaciones";
-App::$strings["See all notifications"] = "Ver todas las notificaciones";
-App::$strings["Private mail"] = "Correo privado";
-App::$strings["See all private messages"] = "Ver todas los mensajes privados";
-App::$strings["Mark all private messages seen"] = "Marcar todos los mensajes privados como leídos";
-App::$strings["Event Calendar"] = "Calendario de eventos";
-App::$strings["See all events"] = "Ver todos los eventos";
-App::$strings["Mark all events seen"] = "Marcar todos los eventos como leidos";
-App::$strings["Manage Your Channels"] = "Gestionar sus canales";
-App::$strings["Account/Channel Settings"] = "Ajustes de cuenta/canales";
-App::$strings["Site Setup and Configuration"] = "Ajustes y configuración del sitio";
-App::$strings["@name, #tag, ?doc, content"] = "@nombre, #etiqueta, ?ayuda, contenido";
-App::$strings["Please wait..."] = "Espere por favor…";
-App::$strings["Embedded content"] = "Contenido incorporado";
-App::$strings["Embedding disabled"] = "Incrustación deshabilitada";
+App::$strings["view full size"] = "Ver en el tamaño original";
+App::$strings["No Subject"] = "Sin asunto";
+App::$strings["Friendica"] = "Friendica";
+App::$strings["OStatus"] = "OStatus";
+App::$strings["GNU-Social"] = "GNU Social";
+App::$strings["RSS/Atom"] = "RSS/Atom";
+App::$strings["Diaspora"] = "Diaspora";
+App::$strings["Facebook"] = "Facebook";
+App::$strings["Zot"] = "Zot";
+App::$strings["LinkedIn"] = "LinkedIn";
+App::$strings["XMPP/IM"] = "XMPP/IM";
+App::$strings["MySpace"] = "MySpace";
+App::$strings["Image exceeds website size limit of %lu bytes"] = "La imagen excede el límite de %lu bytes del sitio";
+App::$strings["Image file is empty."] = "El fichero de imagen está vacío. ";
+App::$strings["Photo storage failed."] = "La foto no ha podido ser guardada.";
+App::$strings["a new photo"] = "una nueva foto";
+App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s ha publicado %2\$s en %3\$s";
+App::$strings["Upload New Photos"] = "Subir nuevas fotos";
+App::$strings["Invalid data packet"] = "Paquete de datos no válido";
+App::$strings["Unable to verify channel signature"] = "No ha sido posible de verificar la firma del canal";
+App::$strings["Unable to verify site signature for %s"] = "No ha sido posible de verificar la firma del sitio para %s";
+App::$strings["invalid target signature"] = "La firma recibida no es válida";
App::$strings["New Page"] = "Nueva página";
App::$strings["Title"] = "Título";
App::$strings["Can view my normal stream and posts"] = "Pueden verse mi actividad y publicaciones normales";
@@ -2233,12 +2248,13 @@ App::$strings["Special Purpose"] = "Propósito especial";
App::$strings["Special - Celebrity/Soapbox"] = "Especial - Celebridad / Tribuna improvisada";
App::$strings["Special - Group Repository"] = "Especial - Repositorio de grupo";
App::$strings["Custom/Expert Mode"] = "Modo personalizado/experto";
-App::$strings["Image exceeds website size limit of %lu bytes"] = "La imagen excede el límite de %lu bytes del sitio";
-App::$strings["Image file is empty."] = "El fichero de imagen está vacío. ";
-App::$strings["Photo storage failed."] = "La foto no ha podido ser guardada.";
-App::$strings["a new photo"] = "una nueva foto";
-App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s ha publicado %2\$s en %3\$s";
-App::$strings["Upload New Photos"] = "Subir nuevas fotos";
+App::$strings[" and "] = " y ";
+App::$strings["public profile"] = "el perfil público";
+App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s ha cambiado %2\$s a &ldquo;%3\$s&rdquo;";
+App::$strings["Visit %1\$s's %2\$s"] = "Visitar %2\$s de %1\$s";
+App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s ha actualizado %2\$s, cambiando %3\$s.";
+App::$strings["Attachments:"] = "Ficheros adjuntos:";
+App::$strings["\$Projectname event notification:"] = "Notificación de eventos de \$Projectname:";
App::$strings["Focus (Hubzilla default)"] = "Focus (predefinido)";
App::$strings["Theme settings"] = "Ajustes del tema";
App::$strings["Select scheme"] = "Elegir un esquema";
diff --git a/view/fr/hmessages.po b/view/fr/hmessages.po
index 217d413e3..73d711700 100644
--- a/view/fr/hmessages.po
+++ b/view/fr/hmessages.po
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-12 00:03-0800\n"
-"PO-Revision-Date: 2016-02-13 10:26+0000\n"
+"POT-Creation-Date: 2016-06-10 00:02-0700\n"
+"PO-Revision-Date: 2016-06-10 09:14+0000\n"
"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/Friendica/red-matrix/language/fr/)\n"
"MIME-Version: 1.0\n"
@@ -19,4827 +19,859 @@ msgstr ""
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: ../../Zotlabs/Zot/Auth.php:140
-msgid ""
-"Remote authentication blocked. You are logged into this site locally. Please"
-" logout and retry."
-msgstr "Authentification distante bloquée. Vous êtes connecté(e) sur ce site localement. Merci de vous déconnecter et réessayer."
-
-#: ../../Zotlabs/Zot/Auth.php:248 ../../mod/openid.php:72
-#: ../../mod/openid.php:179
-#, php-format
-msgid "Welcome %s. Remote authentication successful."
-msgstr "Bienvenue %s. L'authentification distante a fonctionné."
-
-#: ../../include/Contact.php:101 ../../include/conversation.php:961
-#: ../../include/identity.php:954 ../../include/widgets.php:147
-#: ../../include/widgets.php:185 ../../mod/directory.php:321
-#: ../../mod/match.php:64 ../../mod/suggest.php:52
-msgid "Connect"
-msgstr "Ajouter/Suivre"
-
-#: ../../include/Contact.php:118
-msgid "New window"
-msgstr "Nouvelle fenêtre"
-
-#: ../../include/Contact.php:119
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Ouvrir l'emplacement dans une fenêtre ou un onglet différent"
-
-#: ../../include/Contact.php:237
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Utilisateur '%s' supprimé"
-
-#: ../../include/Import/import_diaspora.php:17
-msgid "No username found in import file."
-msgstr "Aucun nom d'utilisateur dans le fichier d'import."
-
-#: ../../include/Import/import_diaspora.php:42 ../../include/import.php:44
-msgid "Unable to create a unique channel address. Import failed."
-msgstr "Impossible de créer une adresse de canal unique. Echec de l'import."
-
-#: ../../include/Import/import_diaspora.php:143 ../../mod/import.php:496
-msgid "Import completed."
-msgstr "L'import est terminé."
-
-#: ../../include/RedDAV/RedBrowser.php:107
-#: ../../include/RedDAV/RedBrowser.php:239
+#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:239
msgid "parent"
msgstr "retour"
-#: ../../include/RedDAV/RedBrowser.php:131 ../../include/text.php:2614
+#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2620
msgid "Collection"
msgstr "Groupe de contacts"
-#: ../../include/RedDAV/RedBrowser.php:134
+#: ../../Zotlabs/Storage/Browser.php:134
msgid "Principal"
msgstr "Principal"
-#: ../../include/RedDAV/RedBrowser.php:137
+#: ../../Zotlabs/Storage/Browser.php:137
msgid "Addressbook"
msgstr "Carnet d'adresse"
-#: ../../include/RedDAV/RedBrowser.php:140
+#: ../../Zotlabs/Storage/Browser.php:140
msgid "Calendar"
msgstr "Calendrier"
-#: ../../include/RedDAV/RedBrowser.php:143
+#: ../../Zotlabs/Storage/Browser.php:143
msgid "Schedule Inbox"
-msgstr "Calendrier - Message entrants"
+msgstr "Calendrier - Messages entrants"
-#: ../../include/RedDAV/RedBrowser.php:146
+#: ../../Zotlabs/Storage/Browser.php:146
msgid "Schedule Outbox"
-msgstr "Calendrier - Message sortants"
+msgstr "Calendrier - Messages sortants"
-#: ../../include/RedDAV/RedBrowser.php:164 ../../include/apps.php:360
-#: ../../include/apps.php:415 ../../include/conversation.php:1037
-#: ../../include/widgets.php:1407 ../../mod/photos.php:766
-#: ../../mod/photos.php:1209
+#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Module/Photos.php:798
+#: ../../Zotlabs/Module/Photos.php:1243 ../../Zotlabs/Lib/Apps.php:486
+#: ../../Zotlabs/Lib/Apps.php:561 ../../include/widgets.php:1505
+#: ../../include/conversation.php:1032
msgid "Unknown"
msgstr "Inconnu"
-#: ../../include/RedDAV/RedBrowser.php:226 ../../include/apps.php:135
-#: ../../include/conversation.php:1639 ../../include/nav.php:93
-#: ../../mod/fbrowser.php:109
+#: ../../Zotlabs/Storage/Browser.php:226 ../../Zotlabs/Module/Fbrowser.php:85
+#: ../../Zotlabs/Lib/Apps.php:216 ../../include/nav.php:93
+#: ../../include/conversation.php:1639
msgid "Files"
msgstr "Fichiers"
-#: ../../include/RedDAV/RedBrowser.php:227
+#: ../../Zotlabs/Storage/Browser.php:227
msgid "Total"
msgstr "Total"
-#: ../../include/RedDAV/RedBrowser.php:229
+#: ../../Zotlabs/Storage/Browser.php:229
msgid "Shared"
msgstr "Partagé"
-#: ../../include/RedDAV/RedBrowser.php:230
-#: ../../include/RedDAV/RedBrowser.php:303 ../../mod/blocks.php:152
-#: ../../mod/layouts.php:175 ../../mod/menu.php:114
-#: ../../mod/new_channel.php:144 ../../mod/register.php:255
-#: ../../mod/webpages.php:180
+#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:306
+#: ../../Zotlabs/Module/Blocks.php:156 ../../Zotlabs/Module/Layouts.php:182
+#: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/New_channel.php:142
+#: ../../Zotlabs/Module/Webpages.php:186
msgid "Create"
msgstr "Créer"
-#: ../../include/RedDAV/RedBrowser.php:231
-#: ../../include/RedDAV/RedBrowser.php:305 ../../include/widgets.php:1420
-#: ../../mod/photos.php:793 ../../mod/photos.php:1333
-#: ../../mod/profile_photo.php:453 ../../mod/cover_photo.php:353
+#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:308
+#: ../../Zotlabs/Module/Cover_photo.php:357
+#: ../../Zotlabs/Module/Photos.php:825 ../../Zotlabs/Module/Photos.php:1364
+#: ../../Zotlabs/Module/Profile_photo.php:368 ../../include/widgets.php:1518
msgid "Upload"
msgstr "Envoyer"
-#: ../../include/RedDAV/RedBrowser.php:235 ../../mod/admin.php:1158
-#: ../../mod/settings.php:588 ../../mod/settings.php:614
-#: ../../mod/sharedwithme.php:95
+#: ../../Zotlabs/Storage/Browser.php:235 ../../Zotlabs/Module/Chat.php:247
+#: ../../Zotlabs/Module/Admin.php:1223 ../../Zotlabs/Module/Settings.php:592
+#: ../../Zotlabs/Module/Settings.php:618
+#: ../../Zotlabs/Module/Sharedwithme.php:99
msgid "Name"
msgstr "Nom"
-#: ../../include/RedDAV/RedBrowser.php:236
+#: ../../Zotlabs/Storage/Browser.php:236
msgid "Type"
msgstr "Type"
-#: ../../include/RedDAV/RedBrowser.php:237 ../../include/text.php:1274
-#: ../../mod/sharedwithme.php:97
+#: ../../Zotlabs/Storage/Browser.php:237
+#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1344
msgid "Size"
msgstr "Taille"
-#: ../../include/RedDAV/RedBrowser.php:238 ../../mod/sharedwithme.php:98
+#: ../../Zotlabs/Storage/Browser.php:238
+#: ../../Zotlabs/Module/Sharedwithme.php:102
msgid "Last Modified"
msgstr "Modifié le"
-#: ../../include/RedDAV/RedBrowser.php:240 ../../include/apps.php:259
+#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Blocks.php:157
+#: ../../Zotlabs/Module/Editblock.php:109
+#: ../../Zotlabs/Module/Connections.php:290
+#: ../../Zotlabs/Module/Connections.php:310
+#: ../../Zotlabs/Module/Editpost.php:84
+#: ../../Zotlabs/Module/Editlayout.php:113
+#: ../../Zotlabs/Module/Editwebpage.php:146
+#: ../../Zotlabs/Module/Layouts.php:190 ../../Zotlabs/Module/Menu.php:112
+#: ../../Zotlabs/Module/Admin.php:2113 ../../Zotlabs/Module/Settings.php:652
+#: ../../Zotlabs/Module/Thing.php:260 ../../Zotlabs/Module/Webpages.php:187
+#: ../../Zotlabs/Lib/Apps.php:337 ../../Zotlabs/Lib/ThreadItem.php:106
+#: ../../include/channel.php:937 ../../include/channel.php:941
#: ../../include/menu.php:108 ../../include/page_widgets.php:8
-#: ../../include/page_widgets.php:36 ../../include/ItemObject.php:100
-#: ../../mod/blocks.php:153 ../../mod/connections.php:286
-#: ../../mod/connections.php:306 ../../mod/editblock.php:135
-#: ../../mod/editlayout.php:134 ../../mod/editpost.php:112
-#: ../../mod/editwebpage.php:176 ../../mod/layouts.php:183
-#: ../../mod/menu.php:108 ../../mod/settings.php:648 ../../mod/thing.php:256
-#: ../../mod/webpages.php:181
+#: ../../include/page_widgets.php:36
msgid "Edit"
msgstr "Modifier"
-#: ../../include/RedDAV/RedBrowser.php:241 ../../include/apps.php:260
-#: ../../include/conversation.php:657 ../../include/ItemObject.php:120
-#: ../../mod/blocks.php:155 ../../mod/connections.php:259
-#: ../../mod/connedit.php:560 ../../mod/editblock.php:181
-#: ../../mod/editlayout.php:179 ../../mod/editwebpage.php:223
-#: ../../mod/group.php:173 ../../mod/photos.php:1140 ../../mod/admin.php:993
-#: ../../mod/admin.php:1152 ../../mod/settings.php:649 ../../mod/thing.php:257
-#: ../../mod/webpages.php:183
+#: ../../Zotlabs/Storage/Browser.php:241 ../../Zotlabs/Module/Blocks.php:159
+#: ../../Zotlabs/Module/Connedit.php:572
+#: ../../Zotlabs/Module/Editblock.php:134
+#: ../../Zotlabs/Module/Connections.php:263
+#: ../../Zotlabs/Module/Editlayout.php:136
+#: ../../Zotlabs/Module/Editwebpage.php:170 ../../Zotlabs/Module/Group.php:177
+#: ../../Zotlabs/Module/Photos.php:1173 ../../Zotlabs/Module/Admin.php:1039
+#: ../../Zotlabs/Module/Admin.php:1213 ../../Zotlabs/Module/Admin.php:2114
+#: ../../Zotlabs/Module/Settings.php:653 ../../Zotlabs/Module/Thing.php:261
+#: ../../Zotlabs/Module/Webpages.php:189 ../../Zotlabs/Lib/Apps.php:338
+#: ../../Zotlabs/Lib/ThreadItem.php:126 ../../include/conversation.php:657
msgid "Delete"
msgstr "Supprimer"
-#: ../../include/RedDAV/RedBrowser.php:282
+#: ../../Zotlabs/Storage/Browser.php:285
#, php-format
msgid "You are using %1$s of your available file storage."
msgstr "Vous utilisez %1$s de votre espace de stockage."
-#: ../../include/RedDAV/RedBrowser.php:287
+#: ../../Zotlabs/Storage/Browser.php:290
#, php-format
msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
msgstr "Vous utilisez %1$s sur %2$s d'espace disponible. (%3$s&#37;)"
-#: ../../include/RedDAV/RedBrowser.php:299
+#: ../../Zotlabs/Storage/Browser.php:302
msgid "WARNING:"
msgstr "AVERTISSEMENT&nbsp;:"
-#: ../../include/RedDAV/RedBrowser.php:302
+#: ../../Zotlabs/Storage/Browser.php:305
msgid "Create new folder"
msgstr "Nouveau dossier"
-#: ../../include/RedDAV/RedBrowser.php:304
+#: ../../Zotlabs/Storage/Browser.php:307
msgid "Upload file"
msgstr "Téléverser un fichier"
-#: ../../include/account.php:28
-msgid "Not a valid email address"
-msgstr "Ce n'est pas une adresse de courriel valide"
-
-#: ../../include/account.php:30
-msgid "Your email domain is not among those allowed on this site"
-msgstr "Votre domaine de courriel ne fait pas partie de ceux autorisés par ce site"
-
-#: ../../include/account.php:36
-msgid "Your email address is already registered at this site."
-msgstr "Votre adresse de courriel est déjà inscrite sur ce site."
-
-#: ../../include/account.php:68
-msgid "An invitation is required."
-msgstr "Une invitation est requise."
-
-#: ../../include/account.php:72
-msgid "Invitation could not be verified."
-msgstr "Votre invitation n'a pas pu être vérifiée."
-
-#: ../../include/account.php:122
-msgid "Please enter the required information."
-msgstr "Merci d'entrer les informations requises."
-
-#: ../../include/account.php:189
-msgid "Failed to store account information."
-msgstr "Impossible de stocker les informations liées au compte."
-
-#: ../../include/account.php:249
-#, php-format
-msgid "Registration confirmation for %s"
-msgstr "Confirmation de l'inscription pour %s"
-
-#: ../../include/account.php:315
-#, php-format
-msgid "Registration request at %s"
-msgstr "Demande d'inscription sur %s"
-
-#: ../../include/account.php:317 ../../include/account.php:344
-#: ../../include/account.php:404 ../../include/network.php:1660
-msgid "Administrator"
-msgstr "Administrateur"
-
-#: ../../include/account.php:339
-msgid "your registration password"
-msgstr "votre mot de passe d'inscription"
-
-#: ../../include/account.php:342 ../../include/account.php:402
-#, php-format
-msgid "Registration details for %s"
-msgstr "Détails de l'inscription pour %s"
-
-#: ../../include/account.php:414
-msgid "Account approved."
-msgstr "Compte approuvé."
-
-#: ../../include/account.php:454
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "Inscription révoquée pour %s"
-
-#: ../../include/account.php:506
-msgid "Account verified. Please login."
-msgstr "Compte vérifié. Veuillez vous connecter."
-
-#: ../../include/account.php:719 ../../include/account.php:721
-msgid "Click here to upgrade."
-msgstr "Cliquez ici pour mettre à jour."
-
-#: ../../include/account.php:727
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Cette action outrepasserait les limites prévues par votre forfait."
-
-#: ../../include/account.php:732
-msgid "This action is not available under your subscription plan."
-msgstr "Cette action n'est pas disponible avec votre forfait."
-
-#: ../../include/acl_selectors.php:218
-msgid "Visible to your default audience"
-msgstr "Visible pour vos contacts seulement"
-
-#: ../../include/acl_selectors.php:243
-msgid "Show"
-msgstr "Montrer"
-
-#: ../../include/acl_selectors.php:244
-msgid "Don't show"
-msgstr "Cacher"
-
-#: ../../include/acl_selectors.php:249
-msgid "Other networks and post services"
-msgstr "Autres réseaux et services de messagerie"
-
-#: ../../include/acl_selectors.php:251 ../../mod/chat.php:211
-#: ../../mod/filestorage.php:147 ../../mod/photos.php:639
-#: ../../mod/photos.php:1012 ../../mod/thing.php:309 ../../mod/thing.php:355
-msgid "Permissions"
-msgstr "Autorisations"
-
-#: ../../include/acl_selectors.php:252 ../../include/ItemObject.php:384
-#: ../../mod/photos.php:1229
-msgid "Close"
-msgstr "Fermer"
-
-#: ../../include/activities.php:42
-msgid " and "
-msgstr "et"
-
-#: ../../include/activities.php:50
-msgid "public profile"
-msgstr "profil public"
-
-#: ../../include/activities.php:59
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s a changé %2$s en &ldquo;%3$s&rdquo;"
-
-#: ../../include/activities.php:60
-#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Visiter %2$s de %1$s"
-
-#: ../../include/activities.php:63
-#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s a mis à jour %2$s, modifiant %3$s."
-
-#: ../../include/api.php:1336
-msgid "Public Timeline"
-msgstr "Fil public"
-
-#: ../../include/apps.php:128
-msgid "Site Admin"
-msgstr "Administrateur"
-
-#: ../../include/apps.php:129 ../../include/conversation.php:1665
-#: ../../include/nav.php:104
-msgid "Bookmarks"
-msgstr "Favoris"
-
-#: ../../include/apps.php:130
-msgid "Address Book"
-msgstr "Carnet d'adresses"
-
-#: ../../include/apps.php:131 ../../include/nav.php:112 ../../boot.php:1518
-msgid "Login"
-msgstr "Connexion"
-
-#: ../../include/apps.php:132 ../../include/nav.php:203
-#: ../../mod/manage.php:162
-msgid "Channel Manager"
-msgstr "Gérer les canaux"
-
-#: ../../include/apps.php:133 ../../include/nav.php:176
-msgid "Grid"
-msgstr "Réseau"
-
-#: ../../include/apps.php:134 ../../include/nav.php:205
-#: ../../include/widgets.php:577 ../../mod/admin.php:1266
-#: ../../mod/admin.php:1488
-msgid "Settings"
-msgstr "Paramètres"
-
-#: ../../include/apps.php:136 ../../include/conversation.php:1675
-#: ../../include/nav.php:108 ../../mod/webpages.php:178
-msgid "Webpages"
-msgstr "Pages web"
-
-#: ../../include/apps.php:137 ../../include/nav.php:179
-msgid "Channel Home"
-msgstr "Mon canal"
-
-#: ../../include/apps.php:138 ../../include/identity.php:1242
-#: ../../include/identity.php:1359 ../../mod/profperm.php:112
-msgid "Profile"
-msgstr "Profil"
-
-#: ../../include/apps.php:139 ../../include/conversation.php:1632
-#: ../../include/nav.php:92 ../../mod/fbrowser.php:25
-msgid "Photos"
-msgstr "Photos"
-
-#: ../../include/apps.php:140 ../../include/nav.php:198
-msgid "Events"
-msgstr "Événements"
-
-#: ../../include/apps.php:141 ../../include/nav.php:164
-msgid "Directory"
-msgstr "Annuaire"
-
-#: ../../include/apps.php:142 ../../include/nav.php:155 ../../mod/help.php:208
-#: ../../mod/help.php:213 ../../mod/layouts.php:176
-msgid "Help"
-msgstr "Aide"
-
-#: ../../include/apps.php:143 ../../include/nav.php:190
-msgid "Mail"
-msgstr "Messages"
-
-#: ../../include/apps.php:144 ../../mod/mood.php:131
-msgid "Mood"
-msgstr "Humeur"
-
-#: ../../include/apps.php:145 ../../include/conversation.php:965
-#: ../../mod/poke.php:164
-msgid "Poke"
-msgstr "Tapoter"
-
-#: ../../include/apps.php:146 ../../include/nav.php:98
-msgid "Chat"
-msgstr "Clavardage"
-
-#: ../../include/apps.php:147 ../../include/nav.php:161
-#: ../../include/text.php:885 ../../include/text.php:897
-#: ../../mod/connections.php:302 ../../mod/search.php:40
-msgid "Search"
-msgstr "Recherche"
-
-#: ../../include/apps.php:148
-msgid "Probe"
-msgstr "Sonder"
-
-#: ../../include/apps.php:149
-msgid "Suggest"
-msgstr "Suggérer"
-
-#: ../../include/apps.php:150
-msgid "Random Channel"
-msgstr "Un canal au hasard"
-
-#: ../../include/apps.php:151
-msgid "Invite"
-msgstr "Invitation"
-
-#: ../../include/apps.php:152 ../../include/widgets.php:1293
-msgid "Features"
-msgstr "Fonctionalités"
-
-#: ../../include/apps.php:153 ../../mod/id.php:28
-msgid "Language"
-msgstr "Langue"
-
-#: ../../include/apps.php:154
-msgid "Post"
-msgstr "Envoyer"
-
-#: ../../include/apps.php:155 ../../mod/id.php:17 ../../mod/id.php:18
-#: ../../mod/id.php:19
-msgid "Profile Photo"
-msgstr "Photo du Profil"
-
-#: ../../include/apps.php:252 ../../mod/settings.php:84
-#: ../../mod/settings.php:612
-msgid "Update"
-msgstr "Mise à jour"
-
-#: ../../include/apps.php:252
-msgid "Install"
-msgstr "Installer"
-
-#: ../../include/apps.php:257
-msgid "Purchase"
-msgstr "Acheter"
+#: ../../Zotlabs/Web/WebServer.php:120 ../../Zotlabs/Module/Dreport.php:10
+#: ../../Zotlabs/Module/Dreport.php:49 ../../Zotlabs/Module/Group.php:72
+#: ../../Zotlabs/Module/Like.php:284 ../../Zotlabs/Module/Import_items.php:112
+#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:62
+#: ../../include/items.php:385
+msgid "Permission denied"
+msgstr "Accès refusé"
-#: ../../include/attach.php:140 ../../include/attach.php:188
-#: ../../include/attach.php:251 ../../include/attach.php:265
-#: ../../include/attach.php:272 ../../include/attach.php:337
-#: ../../include/attach.php:351 ../../include/attach.php:358
-#: ../../include/attach.php:436 ../../include/attach.php:888
-#: ../../include/attach.php:959 ../../include/attach.php:1111
-#: ../../include/chat.php:133 ../../include/photos.php:29
-#: ../../include/items.php:4437 ../../index.php:189 ../../index.php:377
-#: ../../mod/achievements.php:30 ../../mod/api.php:26 ../../mod/api.php:31
-#: ../../mod/appman.php:66 ../../mod/authtest.php:13 ../../mod/block.php:22
-#: ../../mod/block.php:72 ../../mod/blocks.php:69 ../../mod/blocks.php:76
-#: ../../mod/bookmarks.php:48 ../../mod/channel.php:100
-#: ../../mod/channel.php:217 ../../mod/channel.php:257 ../../mod/chat.php:94
-#: ../../mod/chat.php:99 ../../mod/common.php:35 ../../mod/connections.php:29
-#: ../../mod/connedit.php:355 ../../mod/editblock.php:65
-#: ../../mod/editlayout.php:63 ../../mod/editlayout.php:87
-#: ../../mod/editpost.php:13 ../../mod/editwebpage.php:64
-#: ../../mod/editwebpage.php:86 ../../mod/editwebpage.php:101
-#: ../../mod/editwebpage.php:125 ../../mod/events.php:260
-#: ../../mod/filestorage.php:18 ../../mod/filestorage.php:73
-#: ../../mod/filestorage.php:88 ../../mod/filestorage.php:115
-#: ../../mod/fsuggest.php:78 ../../mod/group.php:9 ../../mod/id.php:71
-#: ../../mod/invite.php:13 ../../mod/invite.php:87 ../../mod/item.php:206
-#: ../../mod/item.php:214 ../../mod/item.php:1050 ../../mod/layouts.php:69
-#: ../../mod/layouts.php:76 ../../mod/layouts.php:87 ../../mod/like.php:177
-#: ../../mod/locs.php:83 ../../mod/mail.php:126 ../../mod/manage.php:6
-#: ../../mod/menu.php:74 ../../mod/message.php:16 ../../mod/mitem.php:111
-#: ../../mod/mood.php:112 ../../mod/network.php:12
-#: ../../mod/new_channel.php:75 ../../mod/new_channel.php:109
-#: ../../mod/notifications.php:66 ../../mod/page.php:31 ../../mod/page.php:86
-#: ../../mod/pdledit.php:22 ../../mod/photos.php:70 ../../mod/poke.php:133
-#: ../../mod/profile.php:64 ../../mod/profile.php:72
-#: ../../mod/profile_photo.php:341 ../../mod/profile_photo.php:354
-#: ../../mod/profiles.php:198 ../../mod/profiles.php:584
-#: ../../mod/rate.php:111 ../../mod/register.php:73 ../../mod/regmod.php:17
-#: ../../mod/service_limits.php:7 ../../mod/settings.php:568
-#: ../../mod/setup.php:230 ../../mod/sharedwithme.php:7
-#: ../../mod/sources.php:66 ../../mod/suggest.php:26 ../../mod/thing.php:270
-#: ../../mod/thing.php:290 ../../mod/thing.php:327
-#: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27
-#: ../../mod/viewsrc.php:14 ../../mod/webpages.php:69
-#: ../../mod/cover_photo.php:273 ../../mod/cover_photo.php:286
+#: ../../Zotlabs/Web/WebServer.php:121 ../../Zotlabs/Web/Router.php:65
+#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Blocks.php:73
+#: ../../Zotlabs/Module/Blocks.php:80 ../../Zotlabs/Module/Channel.php:105
+#: ../../Zotlabs/Module/Channel.php:226 ../../Zotlabs/Module/Channel.php:267
+#: ../../Zotlabs/Module/Chat.php:100 ../../Zotlabs/Module/Chat.php:105
+#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Block.php:26
+#: ../../Zotlabs/Module/Block.php:76 ../../Zotlabs/Module/Bookmarks.php:61
+#: ../../Zotlabs/Module/Connedit.php:366 ../../Zotlabs/Module/Editblock.php:67
+#: ../../Zotlabs/Module/Common.php:39 ../../Zotlabs/Module/Connections.php:33
+#: ../../Zotlabs/Module/Cover_photo.php:277
+#: ../../Zotlabs/Module/Cover_photo.php:290
+#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Events.php:265
+#: ../../Zotlabs/Module/Editlayout.php:67
+#: ../../Zotlabs/Module/Editlayout.php:90
+#: ../../Zotlabs/Module/Editwebpage.php:69
+#: ../../Zotlabs/Module/Editwebpage.php:90
+#: ../../Zotlabs/Module/Editwebpage.php:105
+#: ../../Zotlabs/Module/Editwebpage.php:127 ../../Zotlabs/Module/Group.php:13
+#: ../../Zotlabs/Module/Api.php:13 ../../Zotlabs/Module/Api.php:18
+#: ../../Zotlabs/Module/Filestorage.php:24
+#: ../../Zotlabs/Module/Filestorage.php:79
+#: ../../Zotlabs/Module/Filestorage.php:94
+#: ../../Zotlabs/Module/Filestorage.php:121 ../../Zotlabs/Module/Item.php:210
+#: ../../Zotlabs/Module/Item.php:218 ../../Zotlabs/Module/Item.php:1070
+#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78
+#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Id.php:76
+#: ../../Zotlabs/Module/Like.php:181 ../../Zotlabs/Module/Invite.php:17
+#: ../../Zotlabs/Module/Invite.php:91 ../../Zotlabs/Module/Locs.php:87
+#: ../../Zotlabs/Module/Mail.php:129 ../../Zotlabs/Module/Manage.php:10
+#: ../../Zotlabs/Module/Menu.php:78 ../../Zotlabs/Module/Message.php:18
+#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Network.php:17
+#: ../../Zotlabs/Module/Mitem.php:115 ../../Zotlabs/Module/New_channel.php:77
+#: ../../Zotlabs/Module/New_channel.php:104
+#: ../../Zotlabs/Module/Notifications.php:70
+#: ../../Zotlabs/Module/Photos.php:75 ../../Zotlabs/Module/Page.php:35
+#: ../../Zotlabs/Module/Page.php:90 ../../Zotlabs/Module/Pdledit.php:26
+#: ../../Zotlabs/Module/Poke.php:137 ../../Zotlabs/Module/Profile.php:68
+#: ../../Zotlabs/Module/Profile.php:76 ../../Zotlabs/Module/Profiles.php:203
+#: ../../Zotlabs/Module/Profiles.php:601
+#: ../../Zotlabs/Module/Profile_photo.php:256
+#: ../../Zotlabs/Module/Profile_photo.php:269
+#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Appman.php:75
+#: ../../Zotlabs/Module/Register.php:77 ../../Zotlabs/Module/Regmod.php:21
+#: ../../Zotlabs/Module/Service_limits.php:11
+#: ../../Zotlabs/Module/Settings.php:572 ../../Zotlabs/Module/Setup.php:215
+#: ../../Zotlabs/Module/Sharedwithme.php:11
+#: ../../Zotlabs/Module/Sources.php:74 ../../Zotlabs/Module/Suggest.php:30
+#: ../../Zotlabs/Module/Thing.php:274 ../../Zotlabs/Module/Thing.php:294
+#: ../../Zotlabs/Module/Thing.php:331
+#: ../../Zotlabs/Module/Viewconnections.php:25
+#: ../../Zotlabs/Module/Viewconnections.php:30
+#: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Webpages.php:74
+#: ../../Zotlabs/Lib/Chatroom.php:137 ../../include/items.php:3438
+#: ../../include/attach.php:141 ../../include/attach.php:189
+#: ../../include/attach.php:252 ../../include/attach.php:266
+#: ../../include/attach.php:273 ../../include/attach.php:338
+#: ../../include/attach.php:352 ../../include/attach.php:359
+#: ../../include/attach.php:437 ../../include/attach.php:895
+#: ../../include/attach.php:966 ../../include/attach.php:1118
+#: ../../include/photos.php:27
msgid "Permission denied."
msgstr "Permission refusée."
-#: ../../include/attach.php:246 ../../include/attach.php:332
-msgid "Item was not found."
-msgstr "Élément introuvable."
-
-#: ../../include/attach.php:496
-msgid "No source file."
-msgstr "Pas de fichier source."
-
-#: ../../include/attach.php:518
-msgid "Cannot locate file to replace"
-msgstr "Impossible de trouver le fichier à remplacer."
-
-#: ../../include/attach.php:536
-msgid "Cannot locate file to revise/update"
-msgstr "Impossible de trouver le fichier à corriger/mettre à jour"
-
-#: ../../include/attach.php:671
-#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "Le fichier dépasse la taille limite de %d"
-
-#: ../../include/attach.php:685
-#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
-msgstr "Vous avez atteint votre limite de %1$.0f méga-octets autorisés pour le stockage des pièces-jointes."
-
-#: ../../include/attach.php:841
-msgid "File upload failed. Possible system limit or action terminated."
-msgstr "Envoi du fichier impossible. Limite système ou action avortée."
-
-#: ../../include/attach.php:854
-msgid "Stored file could not be verified. Upload failed."
-msgstr "Le fichier stocké n'a pu être vérifié. Echec de l'envoi."
-
-#: ../../include/attach.php:902 ../../include/attach.php:918
-msgid "Path not available."
-msgstr "Chemin non disponible."
-
-#: ../../include/attach.php:964 ../../include/attach.php:1116
-msgid "Empty pathname"
-msgstr "Chemin vide"
-
-#: ../../include/attach.php:990
-msgid "duplicate filename or path"
-msgstr "doublon de chemin ou de fichier"
-
-#: ../../include/attach.php:1012
-msgid "Path not found."
-msgstr "Chemin introuvable."
-
-#: ../../include/attach.php:1070
-msgid "mkdir failed."
-msgstr "mkdir a échoué."
-
-#: ../../include/attach.php:1074
-msgid "database storage failed."
-msgstr "l'écriture dans la base de données a échoué."
-
-#: ../../include/attach.php:1122
-msgid "Empty path"
-msgstr "Chemin vide"
-
-#: ../../include/auth.php:132
-msgid "Logged out."
-msgstr "Deconnecté."
-
-#: ../../include/auth.php:273
-msgid "Failed authentication"
-msgstr "Échec de l'authentification"
-
-#: ../../include/auth.php:287 ../../mod/openid.php:189
-msgid "Login failed."
-msgstr "Échec de la connexion."
-
-#: ../../include/bb2diaspora.php:376
-msgid "Attachments:"
-msgstr "Pièces jointes&nbsp;:"
-
-#: ../../include/bb2diaspora.php:465 ../../include/event.php:22
-#: ../../include/text.php:1418
-msgid "l F d, Y \\@ g:i A"
-msgstr "l d F Y \\à G\\hi"
-
-#: ../../include/bb2diaspora.php:467
-msgid "$Projectname event notification:"
-msgstr "Notification d'événement de $Projectname&nbsp;:"
-
-#: ../../include/bb2diaspora.php:471 ../../include/event.php:30
-#: ../../include/text.php:1422
-msgid "Starts:"
-msgstr "Début&nbsp;:"
-
-#: ../../include/bb2diaspora.php:479 ../../include/event.php:40
-#: ../../include/text.php:1426
-msgid "Finishes:"
-msgstr "Fin&nbsp;:"
-
-#: ../../include/bb2diaspora.php:487 ../../include/event.php:52
-#: ../../include/text.php:1433 ../../include/identity.php:1005
-#: ../../mod/directory.php:307
-msgid "Location:"
-msgstr "Emplacement&nbsp;:"
-
-#: ../../include/bbcode.php:123 ../../include/bbcode.php:794
-#: ../../include/bbcode.php:797 ../../include/bbcode.php:802
-#: ../../include/bbcode.php:805 ../../include/bbcode.php:808
-#: ../../include/bbcode.php:811 ../../include/bbcode.php:816
-#: ../../include/bbcode.php:819 ../../include/bbcode.php:824
-#: ../../include/bbcode.php:827 ../../include/bbcode.php:830
-#: ../../include/bbcode.php:833
-msgid "Image/photo"
-msgstr "Image/photo"
-
-#: ../../include/bbcode.php:162 ../../include/bbcode.php:844
-msgid "Encrypted content"
-msgstr "Contenu chiffré"
-
-#: ../../include/bbcode.php:179
-#, php-format
-msgid "Install %s element: "
-msgstr "Installer %s élément"
-
-#: ../../include/bbcode.php:183
-#, php-format
-msgid ""
-"This post contains an installable %s element, however you lack permissions "
-"to install it on this site."
-msgstr "Ce message contient un élément installable %s, mais vous n'avez pas l'autorisation de l'installer sur ce site."
-
-#: ../../include/bbcode.php:193 ../../mod/impel.php:37
-msgid "webpage"
-msgstr "pages web"
-
-#: ../../include/bbcode.php:196 ../../mod/impel.php:47
-msgid "layout"
-msgstr "mise en page"
-
-#: ../../include/bbcode.php:199 ../../mod/impel.php:42
-msgid "block"
-msgstr "bloquer"
-
-#: ../../include/bbcode.php:202 ../../mod/impel.php:54
-msgid "menu"
-msgstr "menu"
-
-#: ../../include/bbcode.php:257
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s a écrit %2$s qui suit %3$s"
-
-#: ../../include/bbcode.php:259 ../../mod/tagger.php:51
-msgid "post"
-msgstr "publication"
-
-#: ../../include/bbcode.php:547
-msgid "Different viewers will see this text differently"
-msgstr "Ce texte aura un rendu différent en fonction des utilisateurs"
-
-#: ../../include/bbcode.php:755
-msgid "$1 spoiler"
-msgstr "dévoile&nbsp;: $1"
-
-#: ../../include/bbcode.php:782
-msgid "$1 wrote:"
-msgstr "$1 a écrit&nbsp;:"
-
-#: ../../include/bookmarks.php:35
-#, php-format
-msgid "%1$s's bookmarks"
-msgstr "Favoris de %1$s"
-
-#: ../../include/chat.php:23
-msgid "Missing room name"
-msgstr "Il manque le nom du salon"
-
-#: ../../include/chat.php:32
-msgid "Duplicate room name"
-msgstr "Un salon avec ce nom existe déjà"
-
-#: ../../include/chat.php:82 ../../include/chat.php:90
-msgid "Invalid room specifier."
-msgstr "Identifiant de salon invalide."
-
-#: ../../include/chat.php:122
-msgid "Room not found."
-msgstr "Salon introuvable."
-
-#: ../../include/chat.php:143
-msgid "Room is full"
-msgstr "Le salon est plein"
-
-#: ../../include/comanche.php:34 ../../mod/admin.php:366
-msgid "Default"
-msgstr "Défaut"
-
-#: ../../include/contact_widgets.php:14
-#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "%d invitation disponible"
-msgstr[1] "%d invitations disponibles"
-
-#: ../../include/contact_widgets.php:19 ../../mod/admin.php:461
-msgid "Advanced"
-msgstr "Avancé"
-
-#: ../../include/contact_widgets.php:22
-msgid "Find Channels"
-msgstr "Trouver des canaux"
-
-#: ../../include/contact_widgets.php:23
-msgid "Enter name or interest"
-msgstr "Saisir nom ou centre d'intérêt"
-
-#: ../../include/contact_widgets.php:24
-msgid "Connect/Follow"
-msgstr "Ajouter/Suivre"
-
-#: ../../include/contact_widgets.php:25
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Exemples: Guillaume Martin, Course à pieds"
-
-#: ../../include/contact_widgets.php:26 ../../mod/connections.php:305
-#: ../../mod/directory.php:384 ../../mod/directory.php:389
-msgid "Find"
-msgstr "Trouver"
-
-#: ../../include/contact_widgets.php:27 ../../mod/directory.php:388
-#: ../../mod/suggest.php:60
-msgid "Channel Suggestions"
-msgstr "Canaux suggérés"
-
-#: ../../include/contact_widgets.php:29
-msgid "Random Profile"
-msgstr "Un profil au hasard"
-
-#: ../../include/contact_widgets.php:30
-msgid "Invite Friends"
-msgstr "Inviter des amis"
-
-#: ../../include/contact_widgets.php:32
-msgid "Advanced example: name=fred and country=iceland"
-msgstr "Exemple avancé&nbsp;: name=fred and country=iceland"
-
-#: ../../include/contact_widgets.php:57 ../../include/features.php:96
-#: ../../include/widgets.php:314
-msgid "Saved Folders"
-msgstr "Dossiers sauvegardés"
-
-#: ../../include/contact_widgets.php:60 ../../include/contact_widgets.php:98
-#: ../../include/widgets.php:317
-msgid "Everything"
-msgstr "Tout"
-
-#: ../../include/contact_widgets.php:95 ../../include/taxonomy.php:282
-#: ../../include/widgets.php:46
-msgid "Categories"
-msgstr "Catégories"
-
-#: ../../include/contact_widgets.php:128
-#, php-format
-msgid "%d connection in common"
-msgid_plural "%d connections in common"
-msgstr[0] "%d contact en commun"
-msgstr[1] "%d contacts en commun"
-
-#: ../../include/contact_widgets.php:133
-msgid "show more"
-msgstr "montrer plus"
-
-#: ../../include/conversation.php:120 ../../include/text.php:1948
-#: ../../mod/like.php:361 ../../mod/subthread.php:83 ../../mod/tagger.php:43
-msgid "photo"
-msgstr "photo"
-
-#: ../../include/conversation.php:123 ../../include/event.php:904
-#: ../../include/text.php:1951 ../../mod/events.php:249 ../../mod/like.php:363
-#: ../../mod/tagger.php:47
-msgid "event"
-msgstr "événement"
-
-#: ../../include/conversation.php:126 ../../mod/like.php:113
-msgid "channel"
-msgstr "canal"
-
-#: ../../include/conversation.php:148 ../../include/text.php:1954
-#: ../../mod/like.php:361 ../../mod/subthread.php:83
-msgid "status"
-msgstr "état"
-
-#: ../../include/conversation.php:150 ../../include/text.php:1956
-#: ../../mod/tagger.php:53
-msgid "comment"
-msgstr "commentaire"
-
-#: ../../include/conversation.php:164 ../../mod/like.php:410
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s aime %3$s de %2$s"
-
-#: ../../include/conversation.php:167 ../../mod/like.php:412
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr "%1$s n'aime pas %3$s de %2$s"
-
-#: ../../include/conversation.php:204
-#, php-format
-msgid "%1$s is now connected with %2$s"
-msgstr "%1$s ajoute %2$s à ses contacts"
-
-#: ../../include/conversation.php:239
-#, php-format
-msgid "%1$s poked %2$s"
-msgstr "%1$s a tapoté %2$s"
-
-#: ../../include/conversation.php:243 ../../include/text.php:973
-#: ../../include/text.php:978
-msgid "poked"
-msgstr "a tapoté"
-
-#: ../../include/conversation.php:260 ../../mod/mood.php:63
-#, php-format
-msgctxt "mood"
-msgid "%1$s is %2$s"
-msgstr "%1$s est %2$s"
-
-#: ../../include/conversation.php:574 ../../mod/photos.php:1074
-msgctxt "title"
-msgid "Likes"
-msgstr "Aime"
-
-#: ../../include/conversation.php:574 ../../mod/photos.php:1074
-msgctxt "title"
-msgid "Dislikes"
-msgstr "N'aime pas"
-
-#: ../../include/conversation.php:575 ../../mod/photos.php:1075
-msgctxt "title"
-msgid "Agree"
-msgstr "D'accord"
-
-#: ../../include/conversation.php:575 ../../mod/photos.php:1075
-msgctxt "title"
-msgid "Disagree"
-msgstr "Pas d'accord"
-
-#: ../../include/conversation.php:575 ../../mod/photos.php:1075
-msgctxt "title"
-msgid "Abstain"
-msgstr "Abstention"
-
-#: ../../include/conversation.php:576 ../../mod/photos.php:1076
-msgctxt "title"
-msgid "Attending"
-msgstr "Participations"
-
-#: ../../include/conversation.php:576 ../../mod/photos.php:1076
-msgctxt "title"
-msgid "Not attending"
-msgstr "Non-participations"
-
-#: ../../include/conversation.php:576 ../../mod/photos.php:1076
-msgctxt "title"
-msgid "Might attend"
-msgstr "Participation possible"
-
-#: ../../include/conversation.php:656 ../../include/ItemObject.php:126
-msgid "Select"
-msgstr "Sélectionner"
-
-#: ../../include/conversation.php:664 ../../include/ItemObject.php:89
-msgid "Private Message"
-msgstr "Message Privé"
-
-#: ../../include/conversation.php:671 ../../include/ItemObject.php:227
-msgid "Message signature validated"
-msgstr "Signature du message validée"
-
-#: ../../include/conversation.php:672 ../../include/ItemObject.php:228
-msgid "Message signature incorrect"
-msgstr "Signature du message incorrecte"
-
-#: ../../include/conversation.php:691
-#, php-format
-msgid "View %s's profile @ %s"
-msgstr "Voir le profil de %s @ %s"
-
-#: ../../include/conversation.php:710
-msgid "Categories:"
-msgstr "Catégories&nbsp;:"
-
-#: ../../include/conversation.php:711
-msgid "Filed under:"
-msgstr "Classé sous&nbsp;:"
-
-#: ../../include/conversation.php:719 ../../include/ItemObject.php:334
-#, php-format
-msgid "from %s"
-msgstr "de %s"
-
-#: ../../include/conversation.php:722 ../../include/ItemObject.php:337
-#, php-format
-msgid "last edited: %s"
-msgstr "dernière modification&nbsp;: %s"
-
-#: ../../include/conversation.php:723 ../../include/ItemObject.php:338
-#, php-format
-msgid "Expires: %s"
-msgstr "Expire&nbsp;: %s"
-
-#: ../../include/conversation.php:738
-msgid "View in context"
-msgstr "Voir en contexte"
-
-#: ../../include/conversation.php:740 ../../include/conversation.php:1237
-#: ../../include/ItemObject.php:389 ../../mod/editblock.php:150
-#: ../../mod/editlayout.php:148 ../../mod/editpost.php:129
-#: ../../mod/editwebpage.php:190 ../../mod/photos.php:1040
-msgid "Please wait"
-msgstr "Merci de patienter"
-
-#: ../../include/conversation.php:850
-msgid "remove"
-msgstr "supprimer"
-
-#: ../../include/conversation.php:854 ../../include/nav.php:244
-msgid "Loading..."
-msgstr "Chargement..."
-
-#: ../../include/conversation.php:855
-msgid "Delete Selected Items"
-msgstr "Supprimer les éléments selectionnés"
-
-#: ../../include/conversation.php:953
-msgid "View Source"
-msgstr "Voir source"
-
-#: ../../include/conversation.php:954
-msgid "Follow Thread"
-msgstr "Suivre la discussion"
-
-#: ../../include/conversation.php:955
-msgid "Unfollow Thread"
-msgstr "Ne plus suivre la discussion"
-
-#: ../../include/conversation.php:959 ../../include/nav.php:86
-#: ../../mod/connedit.php:507
-msgid "View Profile"
-msgstr "Voir le profil"
-
-#: ../../include/conversation.php:960
-msgid "Activity/Posts"
-msgstr "Activité/Publications"
-
-#: ../../include/conversation.php:962
-msgid "Edit Connection"
-msgstr "Modifier le contact"
-
-#: ../../include/conversation.php:963
-msgid "Message"
-msgstr "Message"
-
-#: ../../include/conversation.php:964 ../../mod/ratings.php:99
-msgid "Ratings"
-msgstr "Evaluations"
-
-#: ../../include/conversation.php:1080
-#, php-format
-msgid "%s likes this."
-msgstr "%s aime ça."
-
-#: ../../include/conversation.php:1080
-#, php-format
-msgid "%s doesn't like this."
-msgstr "%s n'aime pas ça."
-
-#: ../../include/conversation.php:1084
-#, php-format
-msgid "<span %1$s>%2$d people</span> like this."
-msgid_plural "<span %1$s>%2$d people</span> like this."
-msgstr[0] "<span %1$s>%2$d personne</span> aime ceci."
-msgstr[1] "<span %1$s>%2$d personnes</span> aiment ceci."
-
-#: ../../include/conversation.php:1086
-#, php-format
-msgid "<span %1$s>%2$d people</span> don't like this."
-msgid_plural "<span %1$s>%2$d people</span> don't like this."
-msgstr[0] "<span %1$s>%2$d personne</span> n'aime pas ça."
-msgstr[1] "<span %1$s>%2$d personnes</span> n'aiment pas ça."
-
-#: ../../include/conversation.php:1092
-msgid "and"
-msgstr "et"
-
-#: ../../include/conversation.php:1095
-#, php-format
-msgid ", and %d other people"
-msgid_plural ", and %d other people"
-msgstr[0] ", et %d autre personne"
-msgstr[1] ", et %d autres personnes"
-
-#: ../../include/conversation.php:1096
-#, php-format
-msgid "%s like this."
-msgstr "%s aime ça."
-
-#: ../../include/conversation.php:1096
-#, php-format
-msgid "%s don't like this."
-msgstr "%s n'aime pas ça."
-
-#: ../../include/conversation.php:1164
-msgid "Visible to <strong>everybody</strong>"
-msgstr "Visible par <strong>tout le monde</strong>"
-
-#: ../../include/conversation.php:1165 ../../mod/mail.php:202
-#: ../../mod/mail.php:316
-msgid "Please enter a link URL:"
-msgstr "Merci d'entrer l'URL d'un lien&nbsp;:"
-
-#: ../../include/conversation.php:1166
-msgid "Please enter a video link/URL:"
-msgstr "Merci d'entrer l'URL d'une video&nbsp;:"
-
-#: ../../include/conversation.php:1167
-msgid "Please enter an audio link/URL:"
-msgstr "Merci d'entrer l'URL d'un contenu audio&nsbp;:"
-
-#: ../../include/conversation.php:1168
-msgid "Tag term:"
-msgstr "Étiquette&nbsp;:"
-
-#: ../../include/conversation.php:1169 ../../mod/filer.php:48
-msgid "Save to Folder:"
-msgstr "Classer dans le dossier&nbsp;:"
-
-#: ../../include/conversation.php:1170
-msgid "Where are you right now?"
-msgstr "Où êtes-vous en ce moment&nbsp;?"
-
-#: ../../include/conversation.php:1171 ../../mod/editpost.php:56
-#: ../../mod/mail.php:203 ../../mod/mail.php:317
-msgid "Expires YYYY-MM-DD HH:MM"
-msgstr "Expire le YYYY-MM-DD à HH:MM"
-
-#: ../../include/conversation.php:1179 ../../include/page_widgets.php:40
-#: ../../include/ItemObject.php:712 ../../mod/editblock.php:171
-#: ../../mod/editpost.php:149 ../../mod/editwebpage.php:212
-#: ../../mod/events.php:458 ../../mod/photos.php:1060
-#: ../../mod/webpages.php:188
-msgid "Preview"
-msgstr "Aperçu"
-
-#: ../../include/conversation.php:1202 ../../mod/blocks.php:154
-#: ../../mod/layouts.php:184 ../../mod/photos.php:1039
-#: ../../mod/webpages.php:182
-msgid "Share"
-msgstr "Partager"
-
-#: ../../include/conversation.php:1204
-msgid "Page link name"
-msgstr "Nom du lien vers la page"
-
-#: ../../include/conversation.php:1207
-msgid "Post as"
-msgstr "Publier en tant que"
-
-#: ../../include/conversation.php:1209 ../../include/ItemObject.php:704
-#: ../../mod/editblock.php:136 ../../mod/editlayout.php:135
-#: ../../mod/editpost.php:113 ../../mod/editwebpage.php:177
-msgid "Bold"
-msgstr "Gras"
-
-#: ../../include/conversation.php:1210 ../../include/ItemObject.php:705
-#: ../../mod/editblock.php:137 ../../mod/editlayout.php:136
-#: ../../mod/editpost.php:114 ../../mod/editwebpage.php:178
-msgid "Italic"
-msgstr "Italique"
-
-#: ../../include/conversation.php:1211 ../../include/ItemObject.php:706
-#: ../../mod/editblock.php:138 ../../mod/editlayout.php:137
-#: ../../mod/editpost.php:115 ../../mod/editwebpage.php:179
-msgid "Underline"
-msgstr "Souligné"
-
-#: ../../include/conversation.php:1212 ../../include/ItemObject.php:707
-#: ../../mod/editblock.php:139 ../../mod/editlayout.php:138
-#: ../../mod/editpost.php:116 ../../mod/editwebpage.php:180
-msgid "Quote"
-msgstr "Citation"
-
-#: ../../include/conversation.php:1213 ../../include/ItemObject.php:708
-#: ../../mod/editblock.php:140 ../../mod/editlayout.php:139
-#: ../../mod/editpost.php:117 ../../mod/editwebpage.php:181
-msgid "Code"
-msgstr "Code"
-
-#: ../../include/conversation.php:1214 ../../mod/editblock.php:142
-#: ../../mod/editlayout.php:140 ../../mod/editpost.php:118
-#: ../../mod/editwebpage.php:182
-msgid "Upload photo"
-msgstr "Téléverser une photo"
-
-#: ../../include/conversation.php:1215
-msgid "upload photo"
-msgstr "téléverser une photo"
-
-#: ../../include/conversation.php:1216 ../../mod/editblock.php:143
-#: ../../mod/editlayout.php:141 ../../mod/editpost.php:119
-#: ../../mod/editwebpage.php:183 ../../mod/mail.php:248 ../../mod/mail.php:378
-msgid "Attach file"
-msgstr "Joindre un fichier"
-
-#: ../../include/conversation.php:1217
-msgid "attach file"
-msgstr "joindre un fichier"
-
-#: ../../include/conversation.php:1218 ../../mod/editblock.php:144
-#: ../../mod/editlayout.php:142 ../../mod/editpost.php:120
-#: ../../mod/editwebpage.php:184 ../../mod/mail.php:249 ../../mod/mail.php:379
-msgid "Insert web link"
-msgstr "Insérer lien web"
-
-#: ../../include/conversation.php:1219
-msgid "web link"
-msgstr "lien web"
-
-#: ../../include/conversation.php:1220
-msgid "Insert video link"
-msgstr "Insérer lien vidéo"
-
-#: ../../include/conversation.php:1221
-msgid "video link"
-msgstr "lien vidéo"
-
-#: ../../include/conversation.php:1222
-msgid "Insert audio link"
-msgstr "Insérer un lien audio"
-
-#: ../../include/conversation.php:1223
-msgid "audio link"
-msgstr "lien audio"
-
-#: ../../include/conversation.php:1224 ../../mod/editblock.php:148
-#: ../../mod/editlayout.php:146 ../../mod/editpost.php:124
-#: ../../mod/editwebpage.php:188
-msgid "Set your location"
-msgstr "Spécifier votre emplacement géographique"
-
-#: ../../include/conversation.php:1225
-msgid "set location"
-msgstr "spécifier l'emplacement géographique"
-
-#: ../../include/conversation.php:1226 ../../mod/editpost.php:126
-msgid "Toggle voting"
-msgstr "(Dés)activer le vote"
-
-#: ../../include/conversation.php:1229 ../../mod/editblock.php:149
-#: ../../mod/editlayout.php:147 ../../mod/editpost.php:125
-#: ../../mod/editwebpage.php:189
-msgid "Clear browser location"
-msgstr "Supprimer l'emplacement géographique du navigateur"
-
-#: ../../include/conversation.php:1230
-msgid "clear location"
-msgstr "supprimer l'emplacement géographique"
-
-#: ../../include/conversation.php:1232 ../../mod/editblock.php:162
-#: ../../mod/editpost.php:141 ../../mod/editwebpage.php:205
-msgid "Title (optional)"
-msgstr "Titre (facultatif)"
-
-#: ../../include/conversation.php:1236 ../../mod/editblock.php:165
-#: ../../mod/editlayout.php:163 ../../mod/editpost.php:143
-#: ../../mod/editwebpage.php:207
-msgid "Categories (optional, comma-separated list)"
-msgstr "Catégories (facultatives, séparées par des virgules)"
-
-#: ../../include/conversation.php:1238 ../../mod/editblock.php:151
-#: ../../mod/editlayout.php:149 ../../mod/editpost.php:130
-#: ../../mod/editwebpage.php:191 ../../mod/events.php:459
-msgid "Permission settings"
-msgstr "Gérer les autorisations"
-
-#: ../../include/conversation.php:1239
-msgid "permissions"
-msgstr "autorisations"
-
-#: ../../include/conversation.php:1247 ../../mod/editblock.php:159
-#: ../../mod/editlayout.php:156 ../../mod/editpost.php:138
-#: ../../mod/editwebpage.php:200
-msgid "Public post"
-msgstr "Contenu public"
-
-#: ../../include/conversation.php:1249 ../../mod/editblock.php:166
-#: ../../mod/editlayout.php:164 ../../mod/editpost.php:144
-#: ../../mod/editwebpage.php:208
-msgid "Example: bob@example.com, mary@example.com"
-msgstr "Exemple: julien@exemple.com, marie@exemple.com"
-
-#: ../../include/conversation.php:1262 ../../mod/editblock.php:176
-#: ../../mod/editlayout.php:173 ../../mod/editpost.php:155
-#: ../../mod/editwebpage.php:217 ../../mod/mail.php:253 ../../mod/mail.php:383
-msgid "Set expiration date"
-msgstr "Définir la date d'expiration"
-
-#: ../../include/conversation.php:1265
-msgid "Set publish date"
-msgstr "Définir la date de publication"
-
-#: ../../include/conversation.php:1267 ../../include/ItemObject.php:715
-#: ../../mod/editpost.php:157 ../../mod/mail.php:255 ../../mod/mail.php:385
-msgid "Encrypt text"
-msgstr "Chiffrer le texte"
-
-#: ../../include/conversation.php:1269 ../../mod/editpost.php:159
-msgid "OK"
-msgstr "OK"
-
-#: ../../include/conversation.php:1270 ../../mod/editpost.php:160
-#: ../../mod/fbrowser.php:77 ../../mod/fbrowser.php:112
-#: ../../mod/settings.php:587 ../../mod/settings.php:613
-#: ../../mod/tagrm.php:11 ../../mod/tagrm.php:134
-msgid "Cancel"
-msgstr "Annuler"
-
-#: ../../include/conversation.php:1513
-msgid "Discover"
-msgstr "À découvrir"
-
-#: ../../include/conversation.php:1516
-msgid "Imported public streams"
-msgstr "Flux publics importés"
-
-#: ../../include/conversation.php:1521
-msgid "Commented Order"
-msgstr "Par date de commentaire"
-
-#: ../../include/conversation.php:1524
-msgid "Sort by Comment Date"
-msgstr "Trier par date de dernier commentaire"
-
-#: ../../include/conversation.php:1528
-msgid "Posted Order"
-msgstr "Par date de publication"
-
-#: ../../include/conversation.php:1531
-msgid "Sort by Post Date"
-msgstr "Trier par date de publication"
-
-#: ../../include/conversation.php:1536 ../../include/widgets.php:105
-msgid "Personal"
-msgstr "Me concernant"
-
-#: ../../include/conversation.php:1539
-msgid "Posts that mention or involve you"
-msgstr "Publications qui vous mentionnent ou vous concernent d'une manière ou d'une autre"
-
-#: ../../include/conversation.php:1545 ../../mod/connections.php:72
-#: ../../mod/connections.php:82 ../../mod/menu.php:112
-msgid "New"
-msgstr "Nouveautés"
-
-#: ../../include/conversation.php:1548
-msgid "Activity Stream - by date"
-msgstr "Flux d'activité - par date"
-
-#: ../../include/conversation.php:1554
-msgid "Starred"
-msgstr "Mis en avant (étoiles)"
-
-#: ../../include/conversation.php:1557
-msgid "Favourite Posts"
-msgstr "Publications préférées"
-
-#: ../../include/conversation.php:1564
-msgid "Spam"
-msgstr "Indésirable"
-
-#: ../../include/conversation.php:1567
-msgid "Posts flagged as SPAM"
-msgstr "Publications marquées comme indésirables"
-
-#: ../../include/conversation.php:1611 ../../mod/admin.php:1157
-msgid "Channel"
-msgstr "Canal"
-
-#: ../../include/conversation.php:1614
-msgid "Status Messages and Posts"
-msgstr "Messages d'état et contributions"
-
-#: ../../include/conversation.php:1623
-msgid "About"
-msgstr "À propos"
-
-#: ../../include/conversation.php:1626
-msgid "Profile Details"
-msgstr "Détails du profil"
-
-#: ../../include/conversation.php:1635 ../../include/photos.php:506
-msgid "Photo Albums"
-msgstr "Albums photo"
-
-#: ../../include/conversation.php:1642
-msgid "Files and Storage"
-msgstr "Fichiers et Stockage"
-
-#: ../../include/conversation.php:1652 ../../include/conversation.php:1655
-msgid "Chatrooms"
-msgstr "Salons de clavardage"
-
-#: ../../include/conversation.php:1668
-msgid "Saved Bookmarks"
-msgstr "Favoris sauvegardés"
-
-#: ../../include/conversation.php:1678
-msgid "Manage Webpages"
-msgstr "Gérer les pages web"
-
-#: ../../include/conversation.php:1707 ../../include/ItemObject.php:175
-#: ../../include/ItemObject.php:187 ../../mod/photos.php:1093
-#: ../../mod/photos.php:1105
-msgid "View all"
-msgstr "Voir tout"
-
-#: ../../include/conversation.php:1731 ../../include/taxonomy.php:415
-#: ../../include/identity.php:1268 ../../include/ItemObject.php:179
-#: ../../mod/photos.php:1097
-msgctxt "noun"
-msgid "Like"
-msgid_plural "Likes"
-msgstr[0] "Aime"
-msgstr[1] "Aime"
-
-#: ../../include/conversation.php:1734 ../../include/ItemObject.php:184
-#: ../../mod/photos.php:1102
-msgctxt "noun"
-msgid "Dislike"
-msgid_plural "Dislikes"
-msgstr[0] "N'aime pas"
-msgstr[1] "N'aime pas"
-
-#: ../../include/conversation.php:1737
-msgctxt "noun"
-msgid "Attending"
-msgid_plural "Attending"
-msgstr[0] "Participe"
-msgstr[1] "Participent"
-
-#: ../../include/conversation.php:1740
-msgctxt "noun"
-msgid "Not Attending"
-msgid_plural "Not Attending"
-msgstr[0] "Ne participe pas"
-msgstr[1] "Ne participent pas"
-
-#: ../../include/conversation.php:1743
-msgctxt "noun"
-msgid "Undecided"
-msgid_plural "Undecided"
-msgstr[0] "Indécis(e)"
-msgstr[1] "Indécis(es)"
-
-#: ../../include/conversation.php:1746
-msgctxt "noun"
-msgid "Agree"
-msgid_plural "Agrees"
-msgstr[0] "D'accord"
-msgstr[1] "D'accord"
-
-#: ../../include/conversation.php:1749
-msgctxt "noun"
-msgid "Disagree"
-msgid_plural "Disagrees"
-msgstr[0] "Pas d'accord"
-msgstr[1] "Pas d'accord"
-
-#: ../../include/conversation.php:1752
-msgctxt "noun"
-msgid "Abstain"
-msgid_plural "Abstains"
-msgstr[0] "S'abstient"
-msgstr[1] "S'abstiennent"
-
-#: ../../include/datetime.php:48
-msgid "Miscellaneous"
-msgstr "Divers"
-
-#: ../../include/datetime.php:132
-msgid "YYYY-MM-DD or MM-DD"
-msgstr "AAAA-MM-JJ ou MM-JJ"
-
-#: ../../include/datetime.php:236 ../../mod/appman.php:91
-#: ../../mod/appman.php:92 ../../mod/events.php:437 ../../mod/events.php:442
-msgid "Required"
-msgstr "Requis"
-
-#: ../../include/datetime.php:263 ../../boot.php:2349
-msgid "never"
-msgstr "jamais"
-
-#: ../../include/datetime.php:269
-msgid "less than a second ago"
-msgstr "à l'instant"
-
-#: ../../include/datetime.php:272
-msgid "year"
-msgstr "année"
-
-#: ../../include/datetime.php:272
-msgid "years"
-msgstr "années"
-
-#: ../../include/datetime.php:273
-msgid "month"
-msgstr "mois"
-
-#: ../../include/datetime.php:273
-msgid "months"
-msgstr "mois"
-
-#: ../../include/datetime.php:274
-msgid "week"
-msgstr "semaine"
-
-#: ../../include/datetime.php:274
-msgid "weeks"
-msgstr "semaines"
-
-#: ../../include/datetime.php:275
-msgid "day"
-msgstr "jour"
-
-#: ../../include/datetime.php:275
-msgid "days"
-msgstr "jours"
-
-#: ../../include/datetime.php:276
-msgid "hour"
-msgstr "heure"
-
-#: ../../include/datetime.php:276
-msgid "hours"
-msgstr "heures"
-
-#: ../../include/datetime.php:277
-msgid "minute"
-msgstr "minute"
-
-#: ../../include/datetime.php:277
-msgid "minutes"
-msgstr "minutes"
-
-#: ../../include/datetime.php:278
-msgid "second"
-msgstr "seconde"
-
-#: ../../include/datetime.php:278
-msgid "seconds"
-msgstr "secondes"
-
-#: ../../include/datetime.php:286
-#, php-format
-msgctxt "e.g. 22 hours ago, 1 minute ago"
-msgid "%1$d %2$s ago"
-msgstr "il y a %1$d %2$s"
-
-#: ../../include/datetime.php:520
-#, php-format
-msgid "%1$s's birthday"
-msgstr "Anniversaire de %1$s"
-
-#: ../../include/datetime.php:521
-#, php-format
-msgid "Happy Birthday %1$s"
-msgstr "Joyeux Anniversaire %1$s"
-
-#: ../../include/dba/dba_driver.php:141
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "Impossible de trouver les infos DNS du serveur de BDD '%s'"
-
-#: ../../include/dir_fns.php:139
-msgid "Directory Options"
-msgstr "Options d'annuaire"
-
-#: ../../include/dir_fns.php:141
-msgid "Safe Mode"
-msgstr "Mode sûr"
-
-#: ../../include/dir_fns.php:141 ../../include/dir_fns.php:142
-#: ../../include/dir_fns.php:143 ../../mod/api.php:102
-#: ../../mod/connedit.php:644 ../../mod/connedit.php:693
-#: ../../mod/events.php:447 ../../mod/events.php:448 ../../mod/events.php:457
-#: ../../mod/filestorage.php:151 ../../mod/filestorage.php:159
-#: ../../mod/menu.php:96 ../../mod/menu.php:153 ../../mod/mitem.php:154
-#: ../../mod/mitem.php:155 ../../mod/mitem.php:228 ../../mod/mitem.php:229
-#: ../../mod/photos.php:634 ../../mod/admin.php:425 ../../mod/removeme.php:60
-#: ../../mod/settings.php:577 ../../view/theme/redbasic/php/config.php:104
-#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1522
-msgid "No"
-msgstr "Non"
-
-#: ../../include/dir_fns.php:141 ../../include/dir_fns.php:142
-#: ../../include/dir_fns.php:143 ../../mod/api.php:101
-#: ../../mod/events.php:447 ../../mod/events.php:448 ../../mod/events.php:457
-#: ../../mod/filestorage.php:151 ../../mod/filestorage.php:159
-#: ../../mod/menu.php:96 ../../mod/menu.php:153 ../../mod/mitem.php:154
-#: ../../mod/mitem.php:155 ../../mod/mitem.php:228 ../../mod/mitem.php:229
-#: ../../mod/photos.php:634 ../../mod/admin.php:427 ../../mod/removeme.php:60
-#: ../../mod/settings.php:577 ../../view/theme/redbasic/php/config.php:104
-#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1522
-msgid "Yes"
-msgstr "Oui"
-
-#: ../../include/dir_fns.php:142
-msgid "Public Forums Only"
-msgstr "Les forums publics uniquement"
-
-#: ../../include/dir_fns.php:143
-msgid "This Website Only"
-msgstr "Ce site uniquement"
-
-#: ../../include/event.php:768
-msgid "This event has been added to your calendar."
-msgstr "Cet évènement a été ajouté dans votre calendrier."
-
-#: ../../include/event.php:967
-msgid "Not specified"
-msgstr "Non spécifié"
-
-#: ../../include/event.php:968
-msgid "Needs Action"
-msgstr "Besoin d'une action"
-
-#: ../../include/event.php:969
-msgid "Completed"
-msgstr "Terminé"
-
-#: ../../include/event.php:970
-msgid "In Process"
-msgstr "En cours"
-
-#: ../../include/event.php:971
-msgid "Cancelled"
-msgstr "Annulé"
-
-#: ../../include/follow.php:28
-msgid "Channel is blocked on this site."
-msgstr "Ce canal est bloqué sur ce site."
-
-#: ../../include/follow.php:33
-msgid "Channel location missing."
-msgstr "Emplacement du canal introuvable."
-
-#: ../../include/follow.php:82
-msgid "Response from remote channel was incomplete."
-msgstr "La réponse du canal distant était incomplète."
-
-#: ../../include/follow.php:99
-msgid "Channel was deleted and no longer exists."
-msgstr "Le canal a été supprimé et n'existe plus."
-
-#: ../../include/follow.php:153 ../../include/follow.php:183
-msgid "Protocol disabled."
-msgstr "Protocole désactivé."
-
-#: ../../include/follow.php:173
-msgid "Channel discovery failed."
-msgstr "La tentative d'accéder au canal a échoué."
-
-#: ../../include/follow.php:199
-msgid "local account not found."
-msgstr "compte local introuvable."
-
-#: ../../include/follow.php:224
-msgid "Cannot connect to yourself."
-msgstr "Ne peut pas se connecter à vous."
-
-#: ../../include/group.php:26
-msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "Un groupe supprimé portant ce nom a été ressuscité. Les permissions liées aux éléments existants <strong>peuvent</strong> s'appliquer au groupe et aux membres futurs. Si ce n'est pas ce que vous attendiez, merci de créer un autre groupe avec un nom différent."
-
-#: ../../include/group.php:232
-msgid "Add new connections to this privacy group"
-msgstr "Ajouter de nouveaux contacts à ce groupe d'accès"
-
-#: ../../include/group.php:251 ../../mod/admin.php:998
-msgid "All Channels"
-msgstr "Tous les canaux"
-
-#: ../../include/group.php:273
-msgid "edit"
-msgstr "modifier"
-
-#: ../../include/group.php:295 ../../include/features.php:82
-msgid "Privacy Groups"
-msgstr "Groupes d'accès"
-
-#: ../../include/group.php:296
-msgid "Edit group"
-msgstr "Modifier le groupe"
-
-#: ../../include/group.php:297
-msgid "Add privacy group"
-msgstr "Ajouter un groupe d'accès"
-
-#: ../../include/group.php:298
-msgid "Channels not in any privacy group"
-msgstr "Canaux n'étant dans aucun groupe d'accès"
+#: ../../Zotlabs/Web/Router.php:146 ../../Zotlabs/Module/Help.php:94
+msgid "Not Found"
+msgstr "Introuvable"
-#: ../../include/group.php:300 ../../include/widgets.php:285
-msgid "add"
-msgstr "ajouter"
+#: ../../Zotlabs/Web/Router.php:149 ../../Zotlabs/Module/Block.php:79
+#: ../../Zotlabs/Module/Display.php:117 ../../Zotlabs/Module/Help.php:97
+#: ../../Zotlabs/Module/Page.php:93
+msgid "Page not found."
+msgstr "Page introuvable."
-#: ../../include/import.php:23
+#: ../../Zotlabs/Zot/Auth.php:138
msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "L'import a échoué. Un canal existe déjà avec ce nom"
-
-#: ../../include/import.php:70
-msgid "Channel clone failed. Import failed."
-msgstr "Echec du clonage du canal. Echec de l'impot."
-
-#: ../../include/import.php:80 ../../mod/import.php:148
-msgid "Cloned channel not found. Import failed."
-msgstr "Canal cloné non trouvé. Echec de l'import."
-
-#: ../../include/js_strings.php:5
-msgid "Delete this item?"
-msgstr "Supprimer cet élément?"
-
-#: ../../include/js_strings.php:6 ../../include/ItemObject.php:702
-#: ../../mod/photos.php:1058 ../../mod/photos.php:1176
-msgid "Comment"
-msgstr "Commenter"
-
-#: ../../include/js_strings.php:7 ../../include/ItemObject.php:413
-msgid "[+] show all"
-msgstr "[+] voir tous"
-
-#: ../../include/js_strings.php:8
-msgid "[-] show less"
-msgstr "[-] montrer moins"
-
-#: ../../include/js_strings.php:9
-msgid "[+] expand"
-msgstr "[+] déplier"
-
-#: ../../include/js_strings.php:10
-msgid "[-] collapse"
-msgstr "[-] replier"
-
-#: ../../include/js_strings.php:11
-msgid "Password too short"
-msgstr "Mot de passe trop court"
-
-#: ../../include/js_strings.php:12
-msgid "Passwords do not match"
-msgstr "Les mots de passe ne correspondent pas"
-
-#: ../../include/js_strings.php:13 ../../mod/photos.php:41
-msgid "everybody"
-msgstr "tout le monde"
-
-#: ../../include/js_strings.php:14
-msgid "Secret Passphrase"
-msgstr "Phrase de passe secrète"
-
-#: ../../include/js_strings.php:15
-msgid "Passphrase hint"
-msgstr "Indice pour la phrase de passe"
-
-#: ../../include/js_strings.php:16
-msgid "Notice: Permissions have changed but have not yet been submitted."
-msgstr "Note&nbsp;: Les permissions ont changées, mais n'ont pas encore été sauvées."
-
-#: ../../include/js_strings.php:17
-msgid "close all"
-msgstr "fermer tout"
-
-#: ../../include/js_strings.php:18
-msgid "Nothing new here"
-msgstr "Aucun nouveau contenu trouvé"
-
-#: ../../include/js_strings.php:19
-msgid "Rate This Channel (this is public)"
-msgstr "Evaluer ce canal (publiquement)"
-
-#: ../../include/js_strings.php:20 ../../mod/connedit.php:703
-#: ../../mod/rate.php:157
-msgid "Rating"
-msgstr "Evaluation"
-
-#: ../../include/js_strings.php:21
-msgid "Describe (optional)"
-msgstr "Description (facultative)"
-
-#: ../../include/js_strings.php:22 ../../include/widgets.php:699
-#: ../../include/widgets.php:711 ../../include/ItemObject.php:703
-#: ../../mod/appman.php:99 ../../mod/chat.php:184 ../../mod/chat.php:213
-#: ../../mod/connect.php:93 ../../mod/connedit.php:720
-#: ../../mod/events.php:461 ../../mod/events.php:658
-#: ../../mod/filestorage.php:156 ../../mod/fsuggest.php:108
-#: ../../mod/group.php:81 ../../mod/import.php:536
-#: ../../mod/import_items.php:116 ../../mod/invite.php:142
-#: ../../mod/locs.php:116 ../../mod/mail.php:380 ../../mod/mitem.php:231
-#: ../../mod/mood.php:135 ../../mod/pconfig.php:108 ../../mod/pdledit.php:59
-#: ../../mod/photos.php:645 ../../mod/photos.php:1019
-#: ../../mod/photos.php:1059 ../../mod/photos.php:1177 ../../mod/admin.php:457
-#: ../../mod/admin.php:646 ../../mod/admin.php:721 ../../mod/admin.php:986
-#: ../../mod/admin.php:1150 ../../mod/admin.php:1326 ../../mod/admin.php:1521
-#: ../../mod/admin.php:1606 ../../mod/poke.php:182 ../../mod/profiles.php:675
-#: ../../mod/rate.php:168 ../../mod/settings.php:586
-#: ../../mod/settings.php:698 ../../mod/settings.php:726
-#: ../../mod/settings.php:749 ../../mod/settings.php:834
-#: ../../mod/settings.php:1025 ../../mod/setup.php:333 ../../mod/setup.php:374
-#: ../../mod/sources.php:104 ../../mod/sources.php:138 ../../mod/thing.php:312
-#: ../../mod/thing.php:358 ../../mod/xchan.php:11
-#: ../../view/theme/redbasic/php/config.php:99
-msgid "Submit"
-msgstr "Envoyer"
-
-#: ../../include/js_strings.php:23
-msgid "Please enter a link URL"
-msgstr "Merci d'insérer une URL"
-
-#: ../../include/js_strings.php:24
-msgid "Unsaved changes. Are you sure you wish to leave this page?"
-msgstr "Changements en attente. Voulez-vous vraiment quitter cette page?"
-
-#: ../../include/js_strings.php:25 ../../mod/events.php:452
-#: ../../mod/profiles.php:464 ../../mod/pubsites.php:28
-msgid "Location"
-msgstr "Emplacement"
-
-#: ../../include/js_strings.php:27
-msgid "timeago.prefixAgo"
-msgstr "timeago.prefixAgo"
-
-#: ../../include/js_strings.php:28
-msgid "timeago.prefixFromNow"
-msgstr "timeago.prefixFromNow"
-
-#: ../../include/js_strings.php:29
-msgid "ago"
-msgstr "auparavant"
-
-#: ../../include/js_strings.php:30
-msgid "from now"
-msgstr "de maintenant"
-
-#: ../../include/js_strings.php:31
-msgid "less than a minute"
-msgstr "moins d'une minute"
-
-#: ../../include/js_strings.php:32
-msgid "about a minute"
-msgstr "environ une minute"
-
-#: ../../include/js_strings.php:33
-#, php-format
-msgid "%d minutes"
-msgstr "%d minutes"
-
-#: ../../include/js_strings.php:34
-msgid "about an hour"
-msgstr "environ une heure"
-
-#: ../../include/js_strings.php:35
-#, php-format
-msgid "about %d hours"
-msgstr "environ %d heures"
-
-#: ../../include/js_strings.php:36
-msgid "a day"
-msgstr "un jour"
-
-#: ../../include/js_strings.php:37
-#, php-format
-msgid "%d days"
-msgstr "%d jours"
-
-#: ../../include/js_strings.php:38
-msgid "about a month"
-msgstr "environ un mois"
-
-#: ../../include/js_strings.php:39
-#, php-format
-msgid "%d months"
-msgstr "%d mois"
-
-#: ../../include/js_strings.php:40
-msgid "about a year"
-msgstr "environ un an"
-
-#: ../../include/js_strings.php:41
-#, php-format
-msgid "%d years"
-msgstr "%d années"
-
-#: ../../include/js_strings.php:42
-msgid " "
-msgstr ""
-
-#: ../../include/js_strings.php:43
-msgid "timeago.numbers"
-msgstr "timeago.numbers"
-
-#: ../../include/js_strings.php:45 ../../include/text.php:1191
-msgid "January"
-msgstr "Janvier"
-
-#: ../../include/js_strings.php:46 ../../include/text.php:1191
-msgid "February"
-msgstr "Février"
-
-#: ../../include/js_strings.php:47 ../../include/text.php:1191
-msgid "March"
-msgstr "Mars"
-
-#: ../../include/js_strings.php:48 ../../include/text.php:1191
-msgid "April"
-msgstr "Avril"
-
-#: ../../include/js_strings.php:49
-msgctxt "long"
-msgid "May"
-msgstr "Mai"
-
-#: ../../include/js_strings.php:50 ../../include/text.php:1191
-msgid "June"
-msgstr "Juin"
-
-#: ../../include/js_strings.php:51 ../../include/text.php:1191
-msgid "July"
-msgstr "Juillet"
-
-#: ../../include/js_strings.php:52 ../../include/text.php:1191
-msgid "August"
-msgstr "Août"
-
-#: ../../include/js_strings.php:53 ../../include/text.php:1191
-msgid "September"
-msgstr "Septembre"
-
-#: ../../include/js_strings.php:54 ../../include/text.php:1191
-msgid "October"
-msgstr "Octobre"
-
-#: ../../include/js_strings.php:55 ../../include/text.php:1191
-msgid "November"
-msgstr "Novembre"
-
-#: ../../include/js_strings.php:56 ../../include/text.php:1191
-msgid "December"
-msgstr "Décembre"
-
-#: ../../include/js_strings.php:57
-msgid "Jan"
-msgstr "Jan"
-
-#: ../../include/js_strings.php:58
-msgid "Feb"
-msgstr "Fev"
-
-#: ../../include/js_strings.php:59
-msgid "Mar"
-msgstr "Mar"
-
-#: ../../include/js_strings.php:60
-msgid "Apr"
-msgstr "Avr"
-
-#: ../../include/js_strings.php:61
-msgctxt "short"
-msgid "May"
-msgstr "Mai"
-
-#: ../../include/js_strings.php:62
-msgid "Jun"
-msgstr "Jun"
-
-#: ../../include/js_strings.php:63
-msgid "Jul"
-msgstr "Jul"
-
-#: ../../include/js_strings.php:64
-msgid "Aug"
-msgstr "Aou"
-
-#: ../../include/js_strings.php:65
-msgid "Sep"
-msgstr "Sep"
-
-#: ../../include/js_strings.php:66
-msgid "Oct"
-msgstr "Oct"
-
-#: ../../include/js_strings.php:67
-msgid "Nov"
-msgstr "Nov"
-
-#: ../../include/js_strings.php:68
-msgid "Dec"
-msgstr "Dec"
-
-#: ../../include/js_strings.php:69 ../../include/text.php:1187
-msgid "Sunday"
-msgstr "Dimanche"
-
-#: ../../include/js_strings.php:70 ../../include/text.php:1187
-msgid "Monday"
-msgstr "Lundi"
-
-#: ../../include/js_strings.php:71 ../../include/text.php:1187
-msgid "Tuesday"
-msgstr "Mardi"
-
-#: ../../include/js_strings.php:72 ../../include/text.php:1187
-msgid "Wednesday"
-msgstr "Mercredi"
-
-#: ../../include/js_strings.php:73 ../../include/text.php:1187
-msgid "Thursday"
-msgstr "Jeudi"
-
-#: ../../include/js_strings.php:74 ../../include/text.php:1187
-msgid "Friday"
-msgstr "Vendredi"
-
-#: ../../include/js_strings.php:75 ../../include/text.php:1187
-msgid "Saturday"
-msgstr "Samedi"
-
-#: ../../include/js_strings.php:76
-msgid "Sun"
-msgstr "Dim"
-
-#: ../../include/js_strings.php:77
-msgid "Mon"
-msgstr "Lun"
-
-#: ../../include/js_strings.php:78
-msgid "Tue"
-msgstr "Mar"
-
-#: ../../include/js_strings.php:79
-msgid "Wed"
-msgstr "Mer"
-
-#: ../../include/js_strings.php:80
-msgid "Thu"
-msgstr "Jeu"
-
-#: ../../include/js_strings.php:81
-msgid "Fri"
-msgstr "Ven"
-
-#: ../../include/js_strings.php:82
-msgid "Sat"
-msgstr "Sam"
-
-#: ../../include/js_strings.php:83
-msgctxt "calendar"
-msgid "today"
-msgstr "aujourd'hui"
-
-#: ../../include/js_strings.php:84
-msgctxt "calendar"
-msgid "month"
-msgstr "mois"
-
-#: ../../include/js_strings.php:85
-msgctxt "calendar"
-msgid "week"
-msgstr "semaine"
-
-#: ../../include/js_strings.php:86
-msgctxt "calendar"
-msgid "day"
-msgstr "jour"
-
-#: ../../include/js_strings.php:87
-msgctxt "calendar"
-msgid "All day"
-msgstr "Toute la journée"
-
-#: ../../include/message.php:20
-msgid "No recipient provided."
-msgstr "Pas de destinataire."
-
-#: ../../include/message.php:25
-msgid "[no subject]"
-msgstr "[sans objet]"
-
-#: ../../include/message.php:45
-msgid "Unable to determine sender."
-msgstr "Impossible de déterminer l'émetteur."
-
-#: ../../include/message.php:222
-msgid "Stored post could not be verified."
-msgstr "Le message stocké n'a pas pu être vérifié."
-
-#: ../../include/nav.php:82 ../../include/nav.php:115 ../../boot.php:1517
-msgid "Logout"
-msgstr "Déconnexion"
-
-#: ../../include/nav.php:82 ../../include/nav.php:115
-msgid "End this session"
-msgstr "Mettre fin à la session"
-
-#: ../../include/nav.php:85 ../../include/nav.php:146
-msgid "Home"
-msgstr "Mon canal"
-
-#: ../../include/nav.php:85
-msgid "Your posts and conversations"
-msgstr "Vos publications et conversations"
-
-#: ../../include/nav.php:86
-msgid "Your profile page"
-msgstr "Votre profil"
-
-#: ../../include/nav.php:88
-msgid "Edit Profiles"
-msgstr "Modifier les profils"
-
-#: ../../include/nav.php:88
-msgid "Manage/Edit profiles"
-msgstr "Gérer/modifier les profils"
-
-#: ../../include/nav.php:90 ../../include/identity.php:977
-msgid "Edit Profile"
-msgstr "Éditeur de profil"
-
-#: ../../include/nav.php:90
-msgid "Edit your profile"
-msgstr "Modifier votre profil"
-
-#: ../../include/nav.php:92
-msgid "Your photos"
-msgstr "Vos photos"
-
-#: ../../include/nav.php:93
-msgid "Your files"
-msgstr "Vos fichiers"
-
-#: ../../include/nav.php:98
-msgid "Your chatrooms"
-msgstr "Vos salons"
-
-#: ../../include/nav.php:104
-msgid "Your bookmarks"
-msgstr "Vos favoris"
-
-#: ../../include/nav.php:108
-msgid "Your webpages"
-msgstr "Vos pages web"
-
-#: ../../include/nav.php:112
-msgid "Sign in"
-msgstr "Connexion"
-
-#: ../../include/nav.php:129
-#, php-format
-msgid "%s - click to logout"
-msgstr "%s - cliquer ici pour déconnecter"
-
-#: ../../include/nav.php:132
-msgid "Remote authentication"
-msgstr "Authentification distante"
-
-#: ../../include/nav.php:132
-msgid "Click to authenticate to your home hub"
-msgstr "S'authentifier auprès de votre hub principal"
-
-#: ../../include/nav.php:146
-msgid "Home Page"
-msgstr "Page d'accueil"
-
-#: ../../include/nav.php:150 ../../mod/register.php:264 ../../boot.php:1500
-msgid "Register"
-msgstr "S'inscrire"
-
-#: ../../include/nav.php:150
-msgid "Create an account"
-msgstr "Créer un compte"
-
-#: ../../include/nav.php:155
-msgid "Help and documentation"
-msgstr "Aide et documentation"
-
-#: ../../include/nav.php:159 ../../include/widgets.php:102
-#: ../../mod/apps.php:36
-msgid "Apps"
-msgstr "Applications"
-
-#: ../../include/nav.php:159
-msgid "Applications, utilities, links, games"
-msgstr "Applications, utilitaires, liens, jeux"
-
-#: ../../include/nav.php:161
-msgid "Search site @name, #tag, ?docs, content"
-msgstr "Recherche @nom, #tag, contenu"
-
-#: ../../include/nav.php:164
-msgid "Channel Directory"
-msgstr "Annuaire des canaux"
-
-#: ../../include/nav.php:176
-msgid "Your grid"
-msgstr "Votre réseau"
-
-#: ../../include/nav.php:177
-msgid "Mark all grid notifications seen"
-msgstr "Marquer toutes les notifications du réseau comme vues"
-
-#: ../../include/nav.php:179
-msgid "Channel home"
-msgstr "Mon canal"
-
-#: ../../include/nav.php:180
-msgid "Mark all channel notifications seen"
-msgstr "Marquer toutes les notifications du canal comme vues"
-
-#: ../../include/nav.php:183 ../../include/text.php:815
-#: ../../mod/connections.php:298
-msgid "Connections"
-msgstr "Contacts"
-
-#: ../../include/nav.php:186
-msgid "Notices"
-msgstr "Notifications"
-
-#: ../../include/nav.php:186
-msgid "Notifications"
-msgstr "Notifications"
-
-#: ../../include/nav.php:187
-msgid "See all notifications"
-msgstr "Voir toutes les notifications"
-
-#: ../../include/nav.php:188 ../../mod/notifications.php:99
-msgid "Mark all system notifications seen"
-msgstr "Marquer toutes les notifications système comme vues"
-
-#: ../../include/nav.php:190
-msgid "Private mail"
-msgstr "Messages privés"
-
-#: ../../include/nav.php:191
-msgid "See all private messages"
-msgstr "Voir tous les messages privés"
-
-#: ../../include/nav.php:192
-msgid "Mark all private messages seen"
-msgstr "Marquer tous les messages privés comme vus"
-
-#: ../../include/nav.php:193 ../../include/widgets.php:598
-msgid "Inbox"
-msgstr "Boîte de réception"
-
-#: ../../include/nav.php:194 ../../include/widgets.php:603
-msgid "Outbox"
-msgstr "Boîte d'envoi"
-
-#: ../../include/nav.php:195 ../../include/widgets.php:608
-msgid "New Message"
-msgstr "Nouveau message"
-
-#: ../../include/nav.php:198
-msgid "Event Calendar"
-msgstr "Calendrier des événements"
-
-#: ../../include/nav.php:199
-msgid "See all events"
-msgstr "Voir tous les événements"
-
-#: ../../include/nav.php:200
-msgid "Mark all events seen"
-msgstr "Marquer tous les événements comme vus"
-
-#: ../../include/nav.php:203
-msgid "Manage Your Channels"
-msgstr "Gérer vos canaux"
-
-#: ../../include/nav.php:205
-msgid "Account/Channel Settings"
-msgstr "Paramètres du Compte/Canal"
-
-#: ../../include/nav.php:213 ../../include/widgets.php:1320
-msgid "Admin"
-msgstr "Administrateur"
-
-#: ../../include/nav.php:213
-msgid "Site Setup and Configuration"
-msgstr "Configuration du site"
-
-#: ../../include/nav.php:249
-msgid "@name, #tag, ?doc, content"
-msgstr "@nom, #étiquette, ?doc, contenu"
-
-#: ../../include/nav.php:250
-msgid "Please wait..."
-msgstr "Merci de patienter..."
-
-#: ../../include/network.php:630
-msgid "view full size"
-msgstr "voir en taille réelle"
-
-#: ../../include/network.php:1612 ../../include/enotify.php:57
-msgid "$Projectname Notification"
-msgstr "Notification $Projectname"
-
-#: ../../include/network.php:1613 ../../include/enotify.php:58
-msgid "$projectname"
-msgstr "$projectname"
-
-#: ../../include/network.php:1615 ../../include/enotify.php:60
-msgid "Thank You,"
-msgstr "Merci,"
-
-#: ../../include/network.php:1617 ../../include/enotify.php:62
-#, php-format
-msgid "%s Administrator"
-msgstr "l'administrateur de %s"
-
-#: ../../include/network.php:1674
-msgid "No Subject"
-msgstr "Pas d'objet"
-
-#: ../../include/notify.php:20
-msgid "created a new post"
-msgstr "a publié un nouveau message"
+"Remote authentication blocked. You are logged into this site locally. Please"
+" logout and retry."
+msgstr "Authentification distante bloquée. Vous êtes connecté(e) sur ce site localement. Merci de vous déconnecter et réessayer."
-#: ../../include/notify.php:21
+#: ../../Zotlabs/Zot/Auth.php:246 ../../Zotlabs/Module/Openid.php:76
+#: ../../Zotlabs/Module/Openid.php:183
#, php-format
-msgid "commented on %s's post"
-msgstr "a commenté la publication de %s"
+msgid "Welcome %s. Remote authentication successful."
+msgstr "Bienvenue %s. L'authentification distante a fonctionné."
-#: ../../include/page_widgets.php:6
-msgid "New Page"
-msgstr "Nouvelle page"
+#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Blocks.php:33
+#: ../../Zotlabs/Module/Connect.php:17 ../../Zotlabs/Module/Editblock.php:31
+#: ../../Zotlabs/Module/Editlayout.php:31
+#: ../../Zotlabs/Module/Editwebpage.php:33
+#: ../../Zotlabs/Module/Filestorage.php:60 ../../Zotlabs/Module/Hcard.php:12
+#: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Profile.php:20
+#: ../../Zotlabs/Module/Webpages.php:34 ../../include/channel.php:837
+msgid "Requested profile is not available."
+msgstr "Profil demandé non disponible."
-#: ../../include/page_widgets.php:39 ../../mod/blocks.php:159
-#: ../../mod/layouts.php:188 ../../mod/webpages.php:187
-msgid "View"
-msgstr "Voir"
+#: ../../Zotlabs/Module/Achievements.php:38
+msgid "Some blurb about what to do when you're new here"
+msgstr "Quelques mots sur quoi faire quand on est nouveau ici"
-#: ../../include/page_widgets.php:41 ../../mod/webpages.php:189
-msgid "Actions"
-msgstr "Actions"
+#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:152
+#: ../../Zotlabs/Module/Editblock.php:108
+msgid "Block Name"
+msgstr "Nom du Bloc"
-#: ../../include/page_widgets.php:42 ../../mod/webpages.php:190
-msgid "Page Link"
-msgstr "Lien vers la page"
+#: ../../Zotlabs/Module/Blocks.php:151 ../../include/text.php:2265
+msgid "Blocks"
+msgstr "Blocs"
-#: ../../include/page_widgets.php:43
-msgid "Title"
-msgstr "Titre"
+#: ../../Zotlabs/Module/Blocks.php:153
+msgid "Block Title"
+msgstr "Titre du bloc"
-#: ../../include/page_widgets.php:44 ../../mod/blocks.php:150
-#: ../../mod/layouts.php:181 ../../mod/menu.php:110 ../../mod/webpages.php:192
+#: ../../Zotlabs/Module/Blocks.php:154 ../../Zotlabs/Module/Layouts.php:188
+#: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Webpages.php:198
+#: ../../include/page_widgets.php:44
msgid "Created"
msgstr "Créé(e)"
-#: ../../include/page_widgets.php:45 ../../mod/blocks.php:151
-#: ../../mod/layouts.php:182 ../../mod/menu.php:111 ../../mod/webpages.php:193
+#: ../../Zotlabs/Module/Blocks.php:155 ../../Zotlabs/Module/Layouts.php:189
+#: ../../Zotlabs/Module/Menu.php:115 ../../Zotlabs/Module/Webpages.php:199
+#: ../../include/page_widgets.php:45
msgid "Edited"
msgstr "Modifié(e)"
-#: ../../include/photo/photo_driver.php:722 ../../mod/photos.php:94
-#: ../../mod/photos.php:711 ../../mod/profile_photo.php:147
-#: ../../mod/profile_photo.php:239 ../../mod/profile_photo.php:379
-msgid "Profile Photos"
-msgstr "Photos du profil"
-
-#: ../../include/photos.php:112
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "L'image dépasse la taille limite de %lu octets"
-
-#: ../../include/photos.php:119
-msgid "Image file is empty."
-msgstr "L'image est vide."
-
-#: ../../include/photos.php:146 ../../mod/profile_photo.php:225
-#: ../../mod/cover_photo.php:164
-msgid "Unable to process image"
-msgstr "Impossible de traiter l'image"
-
-#: ../../include/photos.php:257
-msgid "Photo storage failed."
-msgstr "Le stockage de l'image a échoué."
-
-#: ../../include/photos.php:297
-msgid "a new photo"
-msgstr "une nouvelle photo"
-
-#: ../../include/photos.php:301
-#, php-format
-msgctxt "photo_upload"
-msgid "%1$s posted %2$s to %3$s"
-msgstr "%1$s a publié %2$s pour %3$s"
-
-#: ../../include/photos.php:510
-msgid "Upload New Photos"
-msgstr "Ajouter des photos"
-
-#: ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23 ../../mod/id.php:103
-msgid "Male"
-msgstr "Homme"
-
-#: ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23 ../../mod/id.php:105
-msgid "Female"
-msgstr "Femme"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Male"
-msgstr "Actuellement homme"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Female"
-msgstr "Actuellement femme"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Male"
-msgstr "Surtout homme"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Female"
-msgstr "Surtout femme"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transgender"
-msgstr "Transgenre"
-
-#: ../../include/profile_selectors.php:6
-msgid "Intersex"
-msgstr "Intersexuel"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transsexual"
-msgstr "Transsexuel"
-
-#: ../../include/profile_selectors.php:6
-msgid "Hermaphrodite"
-msgstr "Hermaphrodite"
-
-#: ../../include/profile_selectors.php:6
-msgid "Neuter"
-msgstr "Neutre"
-
-#: ../../include/profile_selectors.php:6
-msgid "Non-specific"
-msgstr "Non spécifique"
-
-#: ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
-#: ../../include/profile_selectors.php:61
-#: ../../include/profile_selectors.php:97 ../../include/permissions.php:871
-msgid "Other"
-msgstr "Autre"
-
-#: ../../include/profile_selectors.php:6
-msgid "Undecided"
-msgstr "Indécis"
-
-#: ../../include/profile_selectors.php:42
-#: ../../include/profile_selectors.php:61
-msgid "Males"
-msgstr "Hommes"
-
-#: ../../include/profile_selectors.php:42
-#: ../../include/profile_selectors.php:61
-msgid "Females"
-msgstr "Femmes"
-
-#: ../../include/profile_selectors.php:42
-msgid "Gay"
-msgstr "Gay"
-
-#: ../../include/profile_selectors.php:42
-msgid "Lesbian"
-msgstr "Lesbienne"
-
-#: ../../include/profile_selectors.php:42
-msgid "No Preference"
-msgstr "Sans préférence"
-
-#: ../../include/profile_selectors.php:42
-msgid "Bisexual"
-msgstr "Bisexuel"
-
-#: ../../include/profile_selectors.php:42
-msgid "Autosexual"
-msgstr "Autosexuel"
-
-#: ../../include/profile_selectors.php:42
-msgid "Abstinent"
-msgstr "Abstinent"
-
-#: ../../include/profile_selectors.php:42
-msgid "Virgin"
-msgstr "Vierge"
-
-#: ../../include/profile_selectors.php:42
-msgid "Deviant"
-msgstr "Déviant"
-
-#: ../../include/profile_selectors.php:42
-msgid "Fetish"
-msgstr "Fétichiste"
-
-#: ../../include/profile_selectors.php:42
-msgid "Oodles"
-msgstr "Une floppée"
-
-#: ../../include/profile_selectors.php:42
-msgid "Nonsexual"
-msgstr "Non-sexuel"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Single"
-msgstr "Célibataire"
-
-#: ../../include/profile_selectors.php:80
-msgid "Lonely"
-msgstr "Solitaire"
-
-#: ../../include/profile_selectors.php:80
-msgid "Available"
-msgstr "Disponible"
-
-#: ../../include/profile_selectors.php:80
-msgid "Unavailable"
-msgstr "Indisponible"
-
-#: ../../include/profile_selectors.php:80
-msgid "Has crush"
-msgstr "A un béguin"
-
-#: ../../include/profile_selectors.php:80
-msgid "Infatuated"
-msgstr "Amoureux transi"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Dating"
-msgstr "Sort avec quelqu'un"
-
-#: ../../include/profile_selectors.php:80
-msgid "Unfaithful"
-msgstr "Infidèle"
-
-#: ../../include/profile_selectors.php:80
-msgid "Sex Addict"
-msgstr "Accro au sexe"
-
-#: ../../include/profile_selectors.php:80 ../../include/identity.php:390
-#: ../../include/identity.php:391 ../../include/identity.php:398
-#: ../../include/widgets.php:451 ../../mod/connedit.php:582
-#: ../../mod/settings.php:338 ../../mod/settings.php:342
-#: ../../mod/settings.php:343 ../../mod/settings.php:346
-#: ../../mod/settings.php:357
-msgid "Friends"
-msgstr "Amis"
-
-#: ../../include/profile_selectors.php:80
-msgid "Friends/Benefits"
-msgstr "Amis avec bénéfices"
-
-#: ../../include/profile_selectors.php:80
-msgid "Casual"
-msgstr "Sans engagement"
-
-#: ../../include/profile_selectors.php:80
-msgid "Engaged"
-msgstr "Fiancé(e)"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Married"
-msgstr "Marié(e)"
-
-#: ../../include/profile_selectors.php:80
-msgid "Imaginarily married"
-msgstr "Marié(e) dans ses rêves"
-
-#: ../../include/profile_selectors.php:80
-msgid "Partners"
-msgstr "Partenaires"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Cohabiting"
-msgstr "En cohabitation"
-
-#: ../../include/profile_selectors.php:80
-msgid "Common law"
-msgstr "Conjoints de fait"
-
-#: ../../include/profile_selectors.php:80
-msgid "Happy"
-msgstr "Heureux"
-
-#: ../../include/profile_selectors.php:80
-msgid "Not looking"
-msgstr "Pas en recherche"
-
-#: ../../include/profile_selectors.php:80
-msgid "Swinger"
-msgstr "Echangiste"
-
-#: ../../include/profile_selectors.php:80
-msgid "Betrayed"
-msgstr "Trahi(e)"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Separated"
-msgstr "Séparé(e)"
-
-#: ../../include/profile_selectors.php:80
-msgid "Unstable"
-msgstr "Instable"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Divorced"
-msgstr "Divorcé(e)"
-
-#: ../../include/profile_selectors.php:80
-msgid "Imaginarily divorced"
-msgstr "Divorcé(e) dans ses rêves"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Widowed"
-msgstr "Veuf/veuve"
-
-#: ../../include/profile_selectors.php:80
-msgid "Uncertain"
-msgstr "Incertain"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "It's complicated"
-msgstr "C'est compliqué"
-
-#: ../../include/profile_selectors.php:80
-msgid "Don't care"
-msgstr "S'en fiche"
-
-#: ../../include/profile_selectors.php:80
-msgid "Ask me"
-msgstr "Me demander"
-
-#: ../../include/security.php:384
-msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "Le formulaire n'est plus sécurisé, probablement parce qu'il est ouvert depuis trop longtemps (plus de 3 heures)."
-
-#: ../../include/taxonomy.php:240 ../../include/taxonomy.php:261
-msgid "Tags"
-msgstr "Étiquettes"
-
-#: ../../include/taxonomy.php:305
-msgid "Keywords"
-msgstr "Mots-clefs"
-
-#: ../../include/taxonomy.php:326
-msgid "have"
-msgstr "ont"
-
-#: ../../include/taxonomy.php:326
-msgid "has"
-msgstr "a"
-
-#: ../../include/taxonomy.php:327
-msgid "want"
-msgstr "veulent"
-
-#: ../../include/taxonomy.php:327
-msgid "wants"
-msgstr "veut"
-
-#: ../../include/taxonomy.php:328 ../../include/ItemObject.php:254
-msgid "like"
-msgstr "aiment"
-
-#: ../../include/taxonomy.php:328
-msgid "likes"
-msgstr "aime"
-
-#: ../../include/taxonomy.php:329 ../../include/ItemObject.php:255
-msgid "dislike"
-msgstr "n'aiment pas"
-
-#: ../../include/taxonomy.php:329
-msgid "dislikes"
-msgstr "n'aime pas"
-
-#: ../../include/zot.php:676
-msgid "Invalid data packet"
-msgstr "Paquet de données invalide"
-
-#: ../../include/zot.php:692
-msgid "Unable to verify channel signature"
-msgstr "Impossible de vérifier la signature du canal"
-
-#: ../../include/zot.php:2268
-#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Impossible de vérifier la signature de site pour %s"
-
-#: ../../include/zot.php:3591
-msgid "invalid target signature"
-msgstr "signature de la cible invalide"
-
-#: ../../include/contact_selectors.php:56
-msgid "Frequently"
-msgstr "Fréquemment"
-
-#: ../../include/contact_selectors.php:57
-msgid "Hourly"
-msgstr "Toutes les heures"
-
-#: ../../include/contact_selectors.php:58
-msgid "Twice daily"
-msgstr "Deux fois par jour"
-
-#: ../../include/contact_selectors.php:59
-msgid "Daily"
-msgstr "Chaque jour"
-
-#: ../../include/contact_selectors.php:60
-msgid "Weekly"
-msgstr "Chaque semaine"
-
-#: ../../include/contact_selectors.php:61
-msgid "Monthly"
-msgstr "Chaque mois"
-
-#: ../../include/contact_selectors.php:76
-msgid "Friendica"
-msgstr "Friendica"
-
-#: ../../include/contact_selectors.php:77
-msgid "OStatus"
-msgstr "OStatus"
-
-#: ../../include/contact_selectors.php:78
-msgid "RSS/Atom"
-msgstr "RSS/Atom"
-
-#: ../../include/contact_selectors.php:79 ../../mod/id.php:15
-#: ../../mod/id.php:16 ../../mod/admin.php:989 ../../mod/admin.php:998
-#: ../../boot.php:1520
-msgid "Email"
-msgstr "Courriel"
-
-#: ../../include/contact_selectors.php:80
-msgid "Diaspora"
-msgstr "Diaspora"
-
-#: ../../include/contact_selectors.php:81
-msgid "Facebook"
-msgstr "Facebook"
-
-#: ../../include/contact_selectors.php:82
-msgid "Zot"
-msgstr "Zot"
-
-#: ../../include/contact_selectors.php:83
-msgid "LinkedIn"
-msgstr "Linkedin"
-
-#: ../../include/contact_selectors.php:84
-msgid "XMPP/IM"
-msgstr "XMPP/IM"
-
-#: ../../include/contact_selectors.php:85
-msgid "MySpace"
-msgstr "MySpace"
-
-#: ../../include/text.php:394
-msgid "prev"
-msgstr "préc."
-
-#: ../../include/text.php:396
-msgid "first"
-msgstr "premier"
-
-#: ../../include/text.php:425
-msgid "last"
-msgstr "dernier"
-
-#: ../../include/text.php:428
-msgid "next"
-msgstr "Suivant"
-
-#: ../../include/text.php:438
-msgid "older"
-msgstr "plus ancien"
-
-#: ../../include/text.php:440
-msgid "newer"
-msgstr "plus récent"
-
-#: ../../include/text.php:803
-msgid "No connections"
-msgstr "Pas de relations."
-
-#: ../../include/text.php:828
-#, php-format
-msgid "View all %s connections"
-msgstr "Voir les %s contacts"
-
-#: ../../include/text.php:886 ../../include/text.php:898
-#: ../../include/widgets.php:202 ../../mod/filer.php:49
-#: ../../mod/admin.php:1666 ../../mod/admin.php:1686 ../../mod/rbmark.php:28
-#: ../../mod/rbmark.php:100
-msgid "Save"
-msgstr "Enregistrer"
-
-#: ../../include/text.php:973 ../../include/text.php:978
-msgid "poke"
-msgstr "tapoter"
-
-#: ../../include/text.php:979
-msgid "ping"
-msgstr "ping"
-
-#: ../../include/text.php:979
-msgid "pinged"
-msgstr "pingé"
-
-#: ../../include/text.php:980
-msgid "prod"
-msgstr "encourager"
-
-#: ../../include/text.php:980
-msgid "prodded"
-msgstr "encouragé"
-
-#: ../../include/text.php:981
-msgid "slap"
-msgstr "giffler"
-
-#: ../../include/text.php:981
-msgid "slapped"
-msgstr "gifflé(e)"
-
-#: ../../include/text.php:982
-msgid "finger"
-msgstr "pointer"
-
-#: ../../include/text.php:982
-msgid "fingered"
-msgstr "pointé"
-
-#: ../../include/text.php:983
-msgid "rebuff"
-msgstr "rejetter"
-
-#: ../../include/text.php:983
-msgid "rebuffed"
-msgstr "rejeté"
-
-#: ../../include/text.php:995
-msgid "happy"
-msgstr "heureux"
-
-#: ../../include/text.php:996
-msgid "sad"
-msgstr "triste"
-
-#: ../../include/text.php:997
-msgid "mellow"
-msgstr "mélancolique"
-
-#: ../../include/text.php:998
-msgid "tired"
-msgstr "fatigué"
-
-#: ../../include/text.php:999
-msgid "perky"
-msgstr "impertinent"
-
-#: ../../include/text.php:1000
-msgid "angry"
-msgstr "en colère"
-
-#: ../../include/text.php:1001
-msgid "stupefied"
-msgstr "stupéfait"
-
-#: ../../include/text.php:1002
-msgid "puzzled"
-msgstr "perplexe"
-
-#: ../../include/text.php:1003
-msgid "interested"
-msgstr "intéressé"
-
-#: ../../include/text.php:1004
-msgid "bitter"
-msgstr "amer"
-
-#: ../../include/text.php:1005
-msgid "cheerful"
-msgstr "plein d'entrain"
-
-#: ../../include/text.php:1006
-msgid "alive"
-msgstr "vivant"
-
-#: ../../include/text.php:1007
-msgid "annoyed"
-msgstr "agaçé"
-
-#: ../../include/text.php:1008
-msgid "anxious"
-msgstr "anxieux"
-
-#: ../../include/text.php:1009
-msgid "cranky"
-msgstr "énervé"
-
-#: ../../include/text.php:1010
-msgid "disturbed"
-msgstr "perturbé"
-
-#: ../../include/text.php:1011
-msgid "frustrated"
-msgstr "frustré"
-
-#: ../../include/text.php:1012
-msgid "depressed"
-msgstr "déprimé"
-
-#: ../../include/text.php:1013
-msgid "motivated"
-msgstr "motivé"
-
-#: ../../include/text.php:1014
-msgid "relaxed"
-msgstr "détendu"
-
-#: ../../include/text.php:1015
-msgid "surprised"
-msgstr "surpris"
-
-#: ../../include/text.php:1191
-msgid "May"
-msgstr "Mai"
+#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:191
+#: ../../Zotlabs/Module/Photos.php:1072 ../../Zotlabs/Module/Webpages.php:188
+#: ../../include/conversation.php:1208
+msgid "Share"
+msgstr "Partager"
-#: ../../include/text.php:1268 ../../include/text.php:1272
-msgid "Unknown Attachment"
-msgstr "Pièce jointe inconnue"
+#: ../../Zotlabs/Module/Blocks.php:163 ../../Zotlabs/Module/Layouts.php:195
+#: ../../Zotlabs/Module/Pubsites.php:47 ../../Zotlabs/Module/Webpages.php:193
+#: ../../include/page_widgets.php:39
+msgid "View"
+msgstr "Voir"
-#: ../../include/text.php:1274
-msgid "unknown"
-msgstr "Inconnu"
+#: ../../Zotlabs/Module/Cal.php:62 ../../Zotlabs/Module/Block.php:43
+#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Wall_upload.php:33
+msgid "Channel not found."
+msgstr "Canal introuvable."
-#: ../../include/text.php:1310
-msgid "remove category"
-msgstr "supprimer la catégorie"
+#: ../../Zotlabs/Module/Cal.php:69
+msgid "Permissions denied."
+msgstr "Permissions refusées."
-#: ../../include/text.php:1387
-msgid "remove from file"
-msgstr "retirer du fichier"
-
-#: ../../include/text.php:1529 ../../include/text.php:1540
-msgid "Click to open/close"
-msgstr "Cliquer pour ouvrir/fermer"
+#: ../../Zotlabs/Module/Cal.php:259 ../../Zotlabs/Module/Events.php:588
+msgid "l, F j"
+msgstr "l, F j"
-#: ../../include/text.php:1724 ../../mod/events.php:623
+#: ../../Zotlabs/Module/Cal.php:308 ../../Zotlabs/Module/Events.php:637
+#: ../../include/text.php:1732
msgid "Link to Source"
msgstr "Lien vers la Source"
-#: ../../include/text.php:1745 ../../include/text.php:1817
-msgid "default"
-msgstr "défaut"
-
-#: ../../include/text.php:1753
-msgid "Page layout"
-msgstr "Mise en page"
-
-#: ../../include/text.php:1753
-msgid "You can create your own with the layouts tool"
-msgstr "Créez les vôtres avec les outils de mise en page"
-
-#: ../../include/text.php:1795
-msgid "Page content type"
-msgstr "Type de contenu de la page"
-
-#: ../../include/text.php:1829
-msgid "Select an alternate language"
-msgstr "Choisir une langue alternative"
-
-#: ../../include/text.php:1961
-msgid "activity"
-msgstr "activité"
-
-#: ../../include/text.php:2256
-msgid "Design Tools"
-msgstr "Outils de conception"
-
-#: ../../include/text.php:2259 ../../mod/blocks.php:147
-msgid "Blocks"
-msgstr "Blocs"
-
-#: ../../include/text.php:2260 ../../mod/menu.php:103
-msgid "Menus"
-msgstr "Menus"
-
-#: ../../include/text.php:2261 ../../mod/layouts.php:174
-msgid "Layouts"
-msgstr "Mises-en-page"
-
-#: ../../include/text.php:2262
-msgid "Pages"
-msgstr "Pages"
-
-#: ../../include/items.php:423 ../../index.php:376 ../../mod/dreport.php:6
-#: ../../mod/dreport.php:45 ../../mod/group.php:68
-#: ../../mod/import_items.php:108 ../../mod/like.php:280
-#: ../../mod/profperm.php:23 ../../mod/subthread.php:58
-msgid "Permission denied"
-msgstr "Accès refusé"
-
-#: ../../include/items.php:1137 ../../include/items.php:1183
-msgid "(Unknown)"
-msgstr "(Inconnu)"
-
-#: ../../include/items.php:1380
-msgid "Visible to anybody on the internet."
-msgstr "Visible pour tout le monde sur internet."
-
-#: ../../include/items.php:1382
-msgid "Visible to you only."
-msgstr "Visible pour vous seulement."
-
-#: ../../include/items.php:1384
-msgid "Visible to anybody in this network."
-msgstr "Visible pour tout le monde sur ce réseau."
-
-#: ../../include/items.php:1386
-msgid "Visible to anybody authenticated."
-msgstr "Visible aux utilisateurs authentifiés."
-
-#: ../../include/items.php:1388
-#, php-format
-msgid "Visible to anybody on %s."
-msgstr "Visible pour tous sur %s."
-
-#: ../../include/items.php:1390
-msgid "Visible to all connections."
-msgstr "Visible pour tous les contacts."
-
-#: ../../include/items.php:1392
-msgid "Visible to approved connections."
-msgstr "Visible aux contacts approuvés."
-
-#: ../../include/items.php:1394
-msgid "Visible to specific connections."
-msgstr "Visible pour certains contacts."
-
-#: ../../include/items.php:4358 ../../mod/display.php:36
-#: ../../mod/filestorage.php:27 ../../mod/admin.php:141
-#: ../../mod/admin.php:1189 ../../mod/admin.php:1434 ../../mod/thing.php:85
-#: ../../mod/viewsrc.php:20
-msgid "Item not found."
-msgstr "Élément introuvable"
-
-#: ../../include/items.php:4870 ../../mod/group.php:38 ../../mod/group.php:137
-msgid "Privacy group not found."
-msgstr "Groupe d'accès introuvable."
-
-#: ../../include/items.php:4886
-msgid "Privacy group is empty."
-msgstr "Groupe d'accès vide."
-
-#: ../../include/items.php:4893
-#, php-format
-msgid "Privacy group: %s"
-msgstr "Groupe d'accès&nbsp;: %s"
-
-#: ../../include/items.php:4903 ../../mod/connedit.php:692
-#, php-format
-msgid "Connection: %s"
-msgstr "Contact&nbsp;: %s"
-
-#: ../../include/items.php:4905
-msgid "Connection not found."
-msgstr "Contact non trouvé."
-
-#: ../../include/enotify.php:96
-#, php-format
-msgid "%s <!item_type!>"
-msgstr "%s <!item_type!>"
-
-#: ../../include/enotify.php:100
-#, php-format
-msgid "[Hubzilla:Notify] New mail received at %s"
-msgstr "[Hubzilla:Notify] Nouveau courriel reçu à %s"
-
-#: ../../include/enotify.php:102
-#, php-format
-msgid "%1$s, %2$s sent you a new private message at %3$s."
-msgstr "%1$s, vous avez reçu un message privé sur %3$s, de la part de %2$s."
-
-#: ../../include/enotify.php:103
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s vous a envoyé %2$s."
-
-#: ../../include/enotify.php:103
-msgid "a private message"
-msgstr "un message privé"
-
-#: ../../include/enotify.php:104
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Merci de visiter %s pour voir et/ou répondre à vos messages privés."
-
-#: ../../include/enotify.php:160
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
-msgstr "%1$s, %2$s a commenté sur [zrl=%3$s]%4$s[/zrl]"
-
-#: ../../include/enotify.php:168
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
-msgstr "%1$s, %2$s a commenté sur [zrl=%3$s]%5$s de %4$s[/zrl]"
-
-#: ../../include/enotify.php:177
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s a commenté [zrl=%3$s]votre %4$s[/zrl]"
-
-#: ../../include/enotify.php:188
-#, php-format
-msgid "[Hubzilla:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Hubzilla:Notify] Commentaire de %2$s sur conversation #%1$d"
-
-#: ../../include/enotify.php:189
-#, php-format
-msgid "%1$s, %2$s commented on an item/conversation you have been following."
-msgstr "%1$s, %2$s a commenté un élément de conversation que vous suivez."
-
-#: ../../include/enotify.php:192 ../../include/enotify.php:207
-#: ../../include/enotify.php:233 ../../include/enotify.php:251
-#: ../../include/enotify.php:265
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Merci de visiter %s pour voir et/ou répondre sur cette conversation."
-
-#: ../../include/enotify.php:198
-#, php-format
-msgid "[Hubzilla:Notify] %s posted to your profile wall"
-msgstr "[Hubzilla:Notify] %s a publié sur votre profil"
-
-#: ../../include/enotify.php:200
-#, php-format
-msgid "%1$s, %2$s posted to your profile wall at %3$s"
-msgstr "%1$s, %2$s a publié sur votre profil à %3$s"
-
-#: ../../include/enotify.php:202
-#, php-format
-msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
-msgstr "%1$s, %2$s a publié sur [zrl=%3$s]votre profil[/zrl]"
-
-#: ../../include/enotify.php:226
-#, php-format
-msgid "[Hubzilla:Notify] %s tagged you"
-msgstr "[Hubzilla:Notify] %s vous a étiqueté"
-
-#: ../../include/enotify.php:227
-#, php-format
-msgid "%1$s, %2$s tagged you at %3$s"
-msgstr "%1$s, vous avez été étiqueté sur %3$s par %2$s"
-
-#: ../../include/enotify.php:228
-#, php-format
-msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%3$s]vous a étiqueté[/zrl]."
-
-#: ../../include/enotify.php:240
-#, php-format
-msgid "[Hubzilla:Notify] %1$s poked you"
-msgstr "[Hubzilla:Notify] %1$s vous a tapoté"
-
-#: ../../include/enotify.php:241
-#, php-format
-msgid "%1$s, %2$s poked you at %3$s"
-msgstr "%1$s, %2$s vous a tapoté sur %3$s"
-
-#: ../../include/enotify.php:242
-#, php-format
-msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%2$s]vous a tapoté[/zrl]."
-
-#: ../../include/enotify.php:258
-#, php-format
-msgid "[Hubzilla:Notify] %s tagged your post"
-msgstr "[Hubzilla:Notify] %s a étiqueté votre publication"
-
-#: ../../include/enotify.php:259
-#, php-format
-msgid "%1$s, %2$s tagged your post at %3$s"
-msgstr "%1$s, %2$s a étiqueté votre publication sur %3$s"
-
-#: ../../include/enotify.php:260
-#, php-format
-msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
-msgstr "%1$s, %2$s a étiqueté [zrl=%3$s]votre publication[/zrl]"
-
-#: ../../include/enotify.php:272
-msgid "[Hubzilla:Notify] Introduction received"
-msgstr "[Hubzilla:Notify] Nouvelle présentation"
-
-#: ../../include/enotify.php:273
-#, php-format
-msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
-msgstr "%1$s, vous avez reçu une demande de contact de '%2$s' sur %3$s"
-
-#: ../../include/enotify.php:274
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
-msgstr "%1$s, vous avez reçu [zrl=%2$s]une demande de contact[/zrl] de %3$s."
-
-#: ../../include/enotify.php:278 ../../include/enotify.php:297
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "Vous pouvez visiter leur profil sur %s"
-
-#: ../../include/enotify.php:280
-#, php-format
-msgid "Please visit %s to approve or reject the connection request."
-msgstr "Merci de visiter %s avant d'approuver (ou non) cette demande de contact."
-
-#: ../../include/enotify.php:287
-msgid "[Hubzilla:Notify] Friend suggestion received"
-msgstr "[Hubzilla:Notify] Nouvel(le) ami(e) suggéré(e)"
-
-#: ../../include/enotify.php:288
-#, php-format
-msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
-msgstr "%1$s, vous avez reçu une suggestion d'ami(e) de '%2$s' à %3$s"
-
-#: ../../include/enotify.php:289
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
-"%4$s."
-msgstr "%1$s, avez reçu %3$s comme [zrl=%2$s]une suggestion d'ami(e)[/zrl] de %4$s."
-
-#: ../../include/enotify.php:295
-msgid "Name:"
-msgstr "Nom&nbsp;:"
-
-#: ../../include/enotify.php:296
-msgid "Photo:"
-msgstr "Photo&nbsp;:"
-
-#: ../../include/enotify.php:299
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Merci de visiter %s pour donner suite (ou non) à cette suggestion."
-
-#: ../../include/enotify.php:514
-msgid "[Hubzilla:Notify]"
-msgstr "[Hubzilla:Notify]"
-
-#: ../../include/features.php:48
-msgid "General Features"
-msgstr "Fonctionnalités générales"
-
-#: ../../include/features.php:50
-msgid "Content Expiration"
-msgstr "Expiration du contenu"
-
-#: ../../include/features.php:50
-msgid "Remove posts/comments and/or private messages at a future time"
-msgstr "Supprimer les contributions/commentaires et/ou messages privés plus tard"
-
-#: ../../include/features.php:51
-msgid "Multiple Profiles"
-msgstr "Profils multiples"
-
-#: ../../include/features.php:51
-msgid "Ability to create multiple profiles"
-msgstr "Possibilité de créer plusieurs profils"
-
-#: ../../include/features.php:52
-msgid "Advanced Profiles"
-msgstr "Profils Avancés"
-
-#: ../../include/features.php:52
-msgid "Additional profile sections and selections"
-msgstr "Sections et sélections supplémentaires du profil"
-
-#: ../../include/features.php:53
-msgid "Profile Import/Export"
-msgstr "Importer/Exporter le profil"
-
-#: ../../include/features.php:53
-msgid "Save and load profile details across sites/channels"
-msgstr "Sauvegarder et charger les détails d'un profil entre sites/canaux"
-
-#: ../../include/features.php:54
-msgid "Web Pages"
-msgstr "Pages web"
-
-#: ../../include/features.php:54
-msgid "Provide managed web pages on your channel"
-msgstr "Fournir des pages web, sous votre contrôle, sur votre canal"
-
-#: ../../include/features.php:55
-msgid "Hide Rating"
-msgstr "Masquer l'évaluation"
-
-#: ../../include/features.php:55
-msgid ""
-"Hide the rating buttons on your channel and profile pages. Note: People can "
-"still rate you somewhere else."
-msgstr "Masquer les boutons d'évaluation sur les pages de votre canal et de votre profil. NB : vous pourrez toujours être évalué(e) ailleurs."
-
-#: ../../include/features.php:56
-msgid "Private Notes"
-msgstr "Notes privées"
-
-#: ../../include/features.php:56
-msgid "Enables a tool to store notes and reminders (note: not encrypted)"
-msgstr "Active un outil pour stocker des notes et des rappels (note&nbsp;:non chiffré)"
-
-#: ../../include/features.php:57
-msgid "Navigation Channel Select"
-msgstr "Sélection du canal par la navigation"
-
-#: ../../include/features.php:57
-msgid "Change channels directly from within the navigation dropdown menu"
-msgstr "Changez de canal directement depuis le menu de navigation déroulant"
-
-#: ../../include/features.php:58
-msgid "Photo Location"
-msgstr "Site de prise de vue"
-
-#: ../../include/features.php:58
-msgid "If location data is available on uploaded photos, link this to a map."
-msgstr "Si des informations géographiques sont présentes dans les images téléversées, les lier à une carte."
-
-#: ../../include/features.php:60
-msgid "Expert Mode"
-msgstr "Mode expert"
-
-#: ../../include/features.php:60
-msgid "Enable Expert Mode to provide advanced configuration options"
-msgstr "Activer le mode expert pour accéder aux options avancées"
-
-#: ../../include/features.php:61
-msgid "Premium Channel"
-msgstr "Canal VIP"
-
-#: ../../include/features.php:61
-msgid ""
-"Allows you to set restrictions and terms on those that connect with your "
-"channel"
-msgstr "Vous permet d'appliquer des règles et restrictions aux contacts de votre canal"
-
-#: ../../include/features.php:66
-msgid "Post Composition Features"
-msgstr "Fonctionnalités de composition"
-
-#: ../../include/features.php:68
-msgid "Use Markdown"
-msgstr "Utiliser Markdown"
-
-#: ../../include/features.php:68
-msgid "Allow use of \"Markdown\" to format posts"
-msgstr "Autoriser l'utilisation de \"Markdown\" pour mettre en forme les messages"
-
-#: ../../include/features.php:69
-msgid "Large Photos"
-msgstr "Grandes photos"
-
-#: ../../include/features.php:69
-msgid ""
-"Include large (1024px) photo thumbnails in posts. If not enabled, use small "
-"(640px) photo thumbnails"
-msgstr "Inclure de grands aperçus (1024px) dans les messages. Si désactivé, inclure de petits aperçus (640px)."
-
-#: ../../include/features.php:70 ../../include/widgets.php:569
-#: ../../mod/sources.php:88
-msgid "Channel Sources"
-msgstr "Sources du canal"
-
-#: ../../include/features.php:70
-msgid "Automatically import channel content from other channels or feeds"
-msgstr "Importe automatiquement le contenus d'autres canaux ou flux dans le canal actif"
-
-#: ../../include/features.php:71
-msgid "Even More Encryption"
-msgstr "Encore plus de chiffrement"
-
-#: ../../include/features.php:71
-msgid ""
-"Allow optional encryption of content end-to-end with a shared secret key"
-msgstr "Permettre le chiffrement optionnel du contenu de bout en bout au moyen d'un secret partagé"
-
-#: ../../include/features.php:72
-msgid "Enable Voting Tools"
-msgstr "Activer les outils de vote"
-
-#: ../../include/features.php:72
-msgid "Provide a class of post which others can vote on"
-msgstr "Fournit un type de publication sur lequel les utilisateurs peuvent voter"
-
-#: ../../include/features.php:73
-msgid "Delayed Posting"
-msgstr "Publication plus tard"
-
-#: ../../include/features.php:73
-msgid "Allow posts to be published at a later date"
-msgstr "Permettre de publier des messages à une date programmée"
-
-#: ../../include/features.php:74
-msgid "Suppress Duplicate Posts/Comments"
-msgstr "Supprimer les publications/commentaires en doublon"
-
-#: ../../include/features.php:74
-msgid ""
-"Prevent posts with identical content to be published with less than two "
-"minutes in between submissions."
-msgstr "Empêcher des messages aux contenus identiques d'être publiés à moins de deux minutes d'intervalle"
-
-#: ../../include/features.php:80
-msgid "Network and Stream Filtering"
-msgstr "Filtrage du réseau et des flux"
-
-#: ../../include/features.php:81
-msgid "Search by Date"
-msgstr "Chercher par date"
-
-#: ../../include/features.php:81
-msgid "Ability to select posts by date ranges"
-msgstr "Pouvoir choisir des publications par date"
-
-#: ../../include/features.php:82
-msgid "Enable management and selection of privacy groups"
-msgstr "Active la gestion et la sélection des groupes d'accès"
-
-#: ../../include/features.php:83 ../../include/widgets.php:284
-msgid "Saved Searches"
-msgstr "Recherches sauvegardées"
-
-#: ../../include/features.php:83
-msgid "Save search terms for re-use"
-msgstr "Sauvegarder des termes de recherche pour utilisation ultérieure"
-
-#: ../../include/features.php:84
-msgid "Network Personal Tab"
-msgstr "Onglet \"Me concernant\""
-
-#: ../../include/features.php:84
-msgid "Enable tab to display only Network posts that you've interacted on"
-msgstr "Activer un onglet affichant seulement les publications du réseau sur lesquelles vous êtes intervenu"
-
-#: ../../include/features.php:85
-msgid "Network New Tab"
-msgstr "Onglet \"nouveautés réseau\""
-
-#: ../../include/features.php:85
-msgid "Enable tab to display all new Network activity"
-msgstr "Activer un onglet présentant toute l'activité récente sur le réseau"
-
-#: ../../include/features.php:86
-msgid "Affinity Tool"
-msgstr "Gérer l'affinité"
-
-#: ../../include/features.php:86
-msgid "Filter stream activity by depth of relationships"
-msgstr "Filtrer le flux d'activité en fonction de la profondeur des relations"
-
-#: ../../include/features.php:87
-msgid "Connection Filtering"
-msgstr "Filtrage des contacts"
-
-#: ../../include/features.php:87
-msgid "Filter incoming posts from connections based on keywords/content"
-msgstr "Filtrer les publications entrantes de mes contacts sur la base de mots-clefs"
-
-#: ../../include/features.php:88
-msgid "Suggest Channels"
-msgstr "Suggérer des canaux"
-
-#: ../../include/features.php:88
-msgid "Show channel suggestions"
-msgstr "Montrer les suggestions de canaux"
-
-#: ../../include/features.php:93
-msgid "Post/Comment Tools"
-msgstr "Gérer les publications/commentaires"
-
-#: ../../include/features.php:94
-msgid "Community Tagging"
-msgstr "Etiquetage communautaire"
-
-#: ../../include/features.php:94
-msgid "Ability to tag existing posts"
-msgstr "Permettre de marquer les publications existantes"
-
-#: ../../include/features.php:95
-msgid "Post Categories"
-msgstr "Catégoriser les publications"
-
-#: ../../include/features.php:95
-msgid "Add categories to your posts"
-msgstr "Ajouter des catégories à vos publications"
-
-#: ../../include/features.php:96
-msgid "Ability to file posts under folders"
-msgstr "Permettre de classer les publications dans des dossiers"
-
-#: ../../include/features.php:97
-msgid "Dislike Posts"
-msgstr "\"Ne pas aimer\" les publications"
-
-#: ../../include/features.php:97
-msgid "Ability to dislike posts/comments"
-msgstr "Possibilité de \"ne pas aimer\" les publications/commentaires"
-
-#: ../../include/features.php:98
-msgid "Star Posts"
-msgstr "Pouvoir mettre en avant les publications"
-
-#: ../../include/features.php:98
-msgid "Ability to mark special posts with a star indicator"
-msgstr "Pouvoir marquer certaines publications d'une étoile"
-
-#: ../../include/features.php:99
-msgid "Tag Cloud"
-msgstr "Nuage de tags"
-
-#: ../../include/features.php:99
-msgid "Provide a personal tag cloud on your channel page"
-msgstr "Afficher un nuage de vos tags sur votre canal"
-
-#: ../../include/identity.php:32
-msgid "Unable to obtain identity information from database"
-msgstr "Impossible d'obtenir les données d'identité depuis la base de données"
-
-#: ../../include/identity.php:66
-msgid "Empty name"
-msgstr "Nom vide"
-
-#: ../../include/identity.php:69
-msgid "Name too long"
-msgstr "Nom trop long"
-
-#: ../../include/identity.php:181
-msgid "No account identifier"
-msgstr "Pas d'identifiant de compte"
-
-#: ../../include/identity.php:193
-msgid "Nickname is required."
-msgstr "Un surnom est requis."
-
-#: ../../include/identity.php:207
-msgid "Reserved nickname. Please choose another."
-msgstr "Surnom réservé. Merci d'en choisir un autre."
-
-#: ../../include/identity.php:212
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "Le surnom contient des caractères interdits ou est déjà pris sur ce site."
-
-#: ../../include/identity.php:288
-msgid "Unable to retrieve created identity"
-msgstr "Impossible de récupérer l'identité créée"
-
-#: ../../include/identity.php:346
-msgid "Default Profile"
-msgstr "Profil par défaut"
-
-#: ../../include/identity.php:772
-msgid "Requested channel is not available."
-msgstr "Canal demandé non disponible."
-
-#: ../../include/identity.php:818 ../../mod/achievements.php:11
-#: ../../mod/blocks.php:29 ../../mod/connect.php:13 ../../mod/editblock.php:29
-#: ../../mod/editlayout.php:27 ../../mod/editwebpage.php:28
-#: ../../mod/filestorage.php:54 ../../mod/hcard.php:8 ../../mod/layouts.php:29
-#: ../../mod/profile.php:16 ../../mod/webpages.php:29
-msgid "Requested profile is not available."
-msgstr "Profil demandé non disponible."
-
-#: ../../include/identity.php:967 ../../mod/profiles.php:782
-msgid "Change profile photo"
-msgstr "Changer la photo du profil"
-
-#: ../../include/identity.php:973
-msgid "Profiles"
-msgstr "Profils"
-
-#: ../../include/identity.php:973
-msgid "Manage/edit profiles"
-msgstr "Gérer/modifier les profils"
-
-#: ../../include/identity.php:974 ../../mod/profiles.php:783
-msgid "Create New Profile"
-msgstr "Créer un nouveau profil"
-
-#: ../../include/identity.php:989 ../../mod/profiles.php:794
-msgid "Profile Image"
-msgstr "Image du profil"
-
-#: ../../include/identity.php:992
-msgid "visible to everybody"
-msgstr "visible pour tous"
-
-#: ../../include/identity.php:993 ../../mod/profiles.php:677
-#: ../../mod/profiles.php:798
-msgid "Edit visibility"
-msgstr "Changer la visibilité"
-
-#: ../../include/identity.php:1009 ../../include/identity.php:1252
-msgid "Gender:"
-msgstr "Sexe&nbsp;:"
-
-#: ../../include/identity.php:1010 ../../include/identity.php:1296
-msgid "Status:"
-msgstr "État&nbsp;:"
-
-#: ../../include/identity.php:1011 ../../include/identity.php:1307
-msgid "Homepage:"
-msgstr "Site Internet&nbsp;:"
-
-#: ../../include/identity.php:1012
-msgid "Online Now"
-msgstr "Connecté"
-
-#: ../../include/identity.php:1099 ../../include/identity.php:1177
-#: ../../mod/ping.php:318
-msgid "g A l F d"
-msgstr "g A l F d"
-
-#: ../../include/identity.php:1100 ../../include/identity.php:1178
-msgid "F d"
-msgstr "d F"
-
-#: ../../include/identity.php:1145 ../../include/identity.php:1217
-#: ../../mod/ping.php:341
-msgid "[today]"
-msgstr "[aujourd'hui]"
-
-#: ../../include/identity.php:1156
-msgid "Birthday Reminders"
-msgstr "Rappels d'anniversaires"
-
-#: ../../include/identity.php:1157
-msgid "Birthdays this week:"
-msgstr "Anniversaires cette semaine&nbsp;:"
-
-#: ../../include/identity.php:1210
-msgid "[No description]"
-msgstr "[Pas de description]"
-
-#: ../../include/identity.php:1228
-msgid "Event Reminders"
-msgstr "Rappels d'événements"
-
-#: ../../include/identity.php:1229
-msgid "Events this week:"
-msgstr "Événements cette semaine&nbsp;:"
-
-#: ../../include/identity.php:1250 ../../mod/settings.php:1031
-msgid "Full Name:"
-msgstr "Nom complet&nbsp;:"
-
-#: ../../include/identity.php:1257
-msgid "Like this channel"
-msgstr "J'aime ce canal"
-
-#: ../../include/identity.php:1281
-msgid "j F, Y"
-msgstr "j F, Y"
-
-#: ../../include/identity.php:1282
-msgid "j F"
-msgstr "j F"
-
-#: ../../include/identity.php:1289
-msgid "Birthday:"
-msgstr "Date de naissance&nbsp;:"
-
-#: ../../include/identity.php:1293 ../../mod/directory.php:302
-msgid "Age:"
-msgstr "Age&nbsp;:"
-
-#: ../../include/identity.php:1302
-#, php-format
-msgid "for %1$d %2$s"
-msgstr "depuis %1$d %2$s"
-
-#: ../../include/identity.php:1305 ../../mod/profiles.php:699
-msgid "Sexual Preference:"
-msgstr "Orientation sexuelle&nbsp;:"
-
-#: ../../include/identity.php:1309 ../../mod/directory.php:318
-#: ../../mod/profiles.php:701
-msgid "Hometown:"
-msgstr "Ville natale&nbsp;:"
-
-#: ../../include/identity.php:1311
-msgid "Tags:"
-msgstr "Étiquettes&nbsp;:"
-
-#: ../../include/identity.php:1313 ../../mod/profiles.php:702
-msgid "Political Views:"
-msgstr "Opinions politiques&nbsp;:"
-
-#: ../../include/identity.php:1315
-msgid "Religion:"
-msgstr "Religion&nbsp;:"
-
-#: ../../include/identity.php:1317 ../../mod/directory.php:320
-msgid "About:"
-msgstr "À propos&nbsp;:"
-
-#: ../../include/identity.php:1319
-msgid "Hobbies/Interests:"
-msgstr "Occupations/Centres d'intérêt&nbsp;:"
-
-#: ../../include/identity.php:1321 ../../mod/profiles.php:705
-msgid "Likes:"
-msgstr "Aime&nbsp;:"
-
-#: ../../include/identity.php:1323 ../../mod/profiles.php:706
-msgid "Dislikes:"
-msgstr "N'aime pas&nbsp;:"
-
-#: ../../include/identity.php:1325
-msgid "Contact information and Social Networks:"
-msgstr "Coordonnées et réseaux sociaux&nbsp;:"
-
-#: ../../include/identity.php:1327
-msgid "My other channels:"
-msgstr "Mes autres canaux&nbsp;:"
-
-#: ../../include/identity.php:1329
-msgid "Musical interests:"
-msgstr "Goûts musicaux&nbsp;:"
-
-#: ../../include/identity.php:1331
-msgid "Books, literature:"
-msgstr "Lectures, goûts littéraires&nbsp;:"
-
-#: ../../include/identity.php:1333
-msgid "Television:"
-msgstr "Télévision&nbsp;:"
-
-#: ../../include/identity.php:1335
-msgid "Film/dance/culture/entertainment:"
-msgstr "Cinéma/danse/culture/divertissement&nsbp;:"
-
-#: ../../include/identity.php:1337
-msgid "Love/Romance:"
-msgstr "Vie sentimentale/amoureuse&nbsp;:"
-
-#: ../../include/identity.php:1339
-msgid "Work/employment:"
-msgstr "Travail/Occupation&nbsp;"
-
-#: ../../include/identity.php:1341
-msgid "School/education:"
-msgstr "Études&nbsp;"
-
-#: ../../include/identity.php:1361
-msgid "Like this thing"
-msgstr "J'aime ceci"
-
-#: ../../include/identity.php:1769 ../../mod/cover_photo.php:236
-msgid "cover photo"
-msgstr "Photo principale"
-
-#: ../../include/oembed.php:267
-msgid "Embedded content"
-msgstr "Contenu imbriqué"
-
-#: ../../include/oembed.php:276
-msgid "Embedding disabled"
-msgstr "Imbrication désactivée"
-
-#: ../../include/permissions.php:26
-msgid "Can view my normal stream and posts"
-msgstr "Peut voir les publications ordinaires sur mon canal."
-
-#: ../../include/permissions.php:27
-msgid "Can view my default channel profile"
-msgstr "Peut voir le profil du canal par défaut."
-
-#: ../../include/permissions.php:28
-msgid "Can view my connections"
-msgstr "Peut voir mes contacts"
-
-#: ../../include/permissions.php:29
-msgid "Can view my file storage and photos"
-msgstr "Peut voir mes fichiers et photos"
-
-#: ../../include/permissions.php:30
-msgid "Can view my webpages"
-msgstr "Peut voir mes pages web"
-
-#: ../../include/permissions.php:33
-msgid "Can send me their channel stream and posts"
-msgstr "Peuvent m'envoyer leur flux et les publications de leur canal"
-
-#: ../../include/permissions.php:34
-msgid "Can post on my channel page (\"wall\")"
-msgstr "Peuvent poster sur la page de mon canal (\"mur\")"
-
-#: ../../include/permissions.php:35
-msgid "Can comment on or like my posts"
-msgstr "Peuvent commenter et/ou aimer mes publications"
-
-#: ../../include/permissions.php:36
-msgid "Can send me private mail messages"
-msgstr "Peuvent m'envoyer des messages privés"
-
-#: ../../include/permissions.php:37
-msgid "Can like/dislike stuff"
-msgstr "Peuvent aimer/ne pas aimer"
-
-#: ../../include/permissions.php:37
-msgid "Profiles and things other than posts/comments"
-msgstr "Profils et autres excluant les publications/commentaires."
-
-#: ../../include/permissions.php:39
-msgid "Can forward to all my channel contacts via post @mentions"
-msgstr "Peut faire suivre à tous les contacts de mon canal via \"@mention\""
-
-#: ../../include/permissions.php:39
-msgid "Advanced - useful for creating group forum channels"
-msgstr "Avancé - utile pour les canaux de type \"forum/groupe\""
-
-#: ../../include/permissions.php:40
-msgid "Can chat with me (when available)"
-msgstr "Peut discuter avec moi (quand disponibie)"
-
-#: ../../include/permissions.php:41
-msgid "Can write to my file storage and photos"
-msgstr "Peut charger des fichiers et des photos dans mon canal"
-
-#: ../../include/permissions.php:42
-msgid "Can edit my webpages"
-msgstr "Peut modifier mes pages web"
-
-#: ../../include/permissions.php:44
-msgid "Can source my public posts in derived channels"
-msgstr "Peut rediriger mes publications publiques vers des canaux dérivés"
-
-#: ../../include/permissions.php:44
-msgid "Somewhat advanced - very useful in open communities"
-msgstr "Plutôt avancé - très utile dans les communautés ouvertes"
-
-#: ../../include/permissions.php:46
-msgid "Can administer my channel resources"
-msgstr "Peut administrer les ressources de mon canal"
-
-#: ../../include/permissions.php:46
-msgid ""
-"Extremely advanced. Leave this alone unless you know what you are doing"
-msgstr "Très avancé. Ne pas toucher, sauf si vous savez ce que vous faîtes"
-
-#: ../../include/permissions.php:867
-msgid "Social Networking"
-msgstr "Réseau social"
-
-#: ../../include/permissions.php:867 ../../include/permissions.php:868
-#: ../../include/permissions.php:869
-msgid "Mostly Public"
-msgstr "Pincipalement public"
-
-#: ../../include/permissions.php:867 ../../include/permissions.php:868
-#: ../../include/permissions.php:869
-msgid "Restricted"
-msgstr "Accès restreint"
-
-#: ../../include/permissions.php:867 ../../include/permissions.php:868
-msgid "Private"
-msgstr "Privé"
-
-#: ../../include/permissions.php:868
-msgid "Community Forum"
-msgstr "Forum communautaire"
-
-#: ../../include/permissions.php:869
-msgid "Feed Republish"
-msgstr "Republication de flux"
-
-#: ../../include/permissions.php:870
-msgid "Special Purpose"
-msgstr "Utilisation spécifique"
-
-#: ../../include/permissions.php:870
-msgid "Celebrity/Soapbox"
-msgstr "Page de célébrité/tribune"
-
-#: ../../include/permissions.php:870
-msgid "Group Repository"
-msgstr "Espace de groupe"
-
-#: ../../include/permissions.php:871
-msgid "Custom/Expert Mode"
-msgstr "Mode expert/spécifique"
-
-#: ../../include/widgets.php:103
-msgid "System"
-msgstr "Système"
-
-#: ../../include/widgets.php:106
-msgid "Create Personal App"
-msgstr "Créer votre application"
-
-#: ../../include/widgets.php:107
-msgid "Edit Personal App"
-msgstr "Modifier votre application"
-
-#: ../../include/widgets.php:149 ../../mod/suggest.php:54
-msgid "Ignore/Hide"
-msgstr "Ignorer/Cacher"
-
-#: ../../include/widgets.php:154
-msgid "Suggestions"
-msgstr "Suggestions"
-
-#: ../../include/widgets.php:155
-msgid "See more..."
-msgstr "Voir plus..."
-
-#: ../../include/widgets.php:176
-#, php-format
-msgid "You have %1$.0f of %2$.0f allowed connections."
-msgstr "Vous avez %1$.0f sur %2$.0f contacts autorisés."
-
-#: ../../include/widgets.php:182
-msgid "Add New Connection"
-msgstr "Ajouter un nouveau contact"
-
-#: ../../include/widgets.php:183
-msgid "Enter channel address"
-msgstr "Saisissez l'adresse du canal"
-
-#: ../../include/widgets.php:184
-msgid "Examples: bob@example.com, https://example.com/barbara"
-msgstr "Exemples&nbsp;: pierre@exemple.com, https://exemple.com/sophie"
-
-#: ../../include/widgets.php:200
-msgid "Notes"
-msgstr "Notes"
-
-#: ../../include/widgets.php:276
-msgid "Remove term"
-msgstr "Retirer le terme"
-
-#: ../../include/widgets.php:359
-msgid "Archives"
-msgstr "Archives"
-
-#: ../../include/widgets.php:449 ../../mod/connedit.php:580
-msgid "Me"
-msgstr "Moi"
-
-#: ../../include/widgets.php:450 ../../mod/connedit.php:581
-msgid "Family"
-msgstr "Famille"
-
-#: ../../include/widgets.php:452 ../../mod/connedit.php:583
-msgid "Acquaintances"
-msgstr "Connaissances"
-
-#: ../../include/widgets.php:453 ../../mod/connections.php:88
-#: ../../mod/connections.php:103 ../../mod/connedit.php:584
-msgid "All"
-msgstr "Tous"
-
-#: ../../include/widgets.php:472
-msgid "Refresh"
-msgstr "Actualiser"
-
-#: ../../include/widgets.php:506
-msgid "Account settings"
-msgstr "Paramètres du compte"
-
-#: ../../include/widgets.php:512
-msgid "Channel settings"
-msgstr "Paramètres du canal"
-
-#: ../../include/widgets.php:521
-msgid "Additional features"
-msgstr "Fonctionnalités supplémentaires"
-
-#: ../../include/widgets.php:528
-msgid "Feature/Addon settings"
-msgstr "Paramètres des extensions/greffons"
-
-#: ../../include/widgets.php:534
-msgid "Display settings"
-msgstr "Paramètres d'affichage"
-
-#: ../../include/widgets.php:540
-msgid "Connected apps"
-msgstr "Applications connectées"
-
-#: ../../include/widgets.php:546
-msgid "Export channel"
-msgstr "Exporter le canal"
-
-#: ../../include/widgets.php:553 ../../mod/connedit.php:692
-msgid "Connection Default Permissions"
-msgstr "Autorisations par défaut des contacts"
-
-#: ../../include/widgets.php:561
-msgid "Premium Channel Settings"
-msgstr "Paramètres de canal VIP"
-
-#: ../../include/widgets.php:591
-msgid "Private Mail Menu"
-msgstr "Menu des messages privés"
-
-#: ../../include/widgets.php:593
-msgid "Combined View"
-msgstr "Vue combinée"
-
-#: ../../include/widgets.php:627 ../../include/widgets.php:639
-msgid "Conversations"
-msgstr "Conversations"
-
-#: ../../include/widgets.php:631
-msgid "Received Messages"
-msgstr "Messages reçus"
-
-#: ../../include/widgets.php:635
-msgid "Sent Messages"
-msgstr "Messages envoyés"
-
-#: ../../include/widgets.php:649
-msgid "No messages."
-msgstr "Pas de message."
-
-#: ../../include/widgets.php:667
-msgid "Delete conversation"
-msgstr "Supprimer la conversation"
-
-#: ../../include/widgets.php:693
-msgid "Events Menu"
-msgstr "Menu Evènements"
+#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:665
+msgid "Edit Event"
+msgstr "Modifier l'événement"
-#: ../../include/widgets.php:694
-msgid "Day View"
-msgstr "Vue Jour"
+#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:665
+msgid "Create Event"
+msgstr "Créer un événement"
-#: ../../include/widgets.php:695
-msgid "Week View"
-msgstr "Vue Semaine"
+#: ../../Zotlabs/Module/Cal.php:332 ../../Zotlabs/Module/Cal.php:339
+#: ../../Zotlabs/Module/Events.php:666 ../../Zotlabs/Module/Events.php:673
+#: ../../Zotlabs/Module/Photos.php:949
+msgid "Previous"
+msgstr "Précédent"
-#: ../../include/widgets.php:696
-msgid "Month View"
-msgstr "Vue Mois"
+#: ../../Zotlabs/Module/Cal.php:333 ../../Zotlabs/Module/Cal.php:340
+#: ../../Zotlabs/Module/Events.php:667 ../../Zotlabs/Module/Events.php:674
+#: ../../Zotlabs/Module/Photos.php:958 ../../Zotlabs/Module/Setup.php:267
+msgid "Next"
+msgstr "Suivant"
-#: ../../include/widgets.php:697 ../../mod/events.php:654
+#: ../../Zotlabs/Module/Cal.php:334 ../../Zotlabs/Module/Events.php:668
+#: ../../include/widgets.php:755
msgid "Export"
msgstr "Export"
-#: ../../include/widgets.php:698 ../../mod/events.php:657
+#: ../../Zotlabs/Module/Cal.php:337 ../../Zotlabs/Module/Events.php:671
+#: ../../include/widgets.php:756
msgid "Import"
msgstr "Import"
-#: ../../include/widgets.php:708
-msgid "Events Tools"
-msgstr "Outils Evènements"
-
-#: ../../include/widgets.php:709
-msgid "Export Calendar"
-msgstr "Exporter le calendrier"
-
-#: ../../include/widgets.php:710
-msgid "Import Calendar"
-msgstr "Importer un calendrier"
-
-#: ../../include/widgets.php:784
-msgid "Chat Rooms"
-msgstr "Salons de clavardage"
-
-#: ../../include/widgets.php:804
-msgid "Bookmarked Chatrooms"
-msgstr "Salons favoris"
-
-#: ../../include/widgets.php:824
-msgid "Suggested Chatrooms"
-msgstr "Salons suggérés"
-
-#: ../../include/widgets.php:969 ../../include/widgets.php:1059
-msgid "photo/image"
-msgstr "photo/image"
-
-#: ../../include/widgets.php:1153
-msgid "Rating Tools"
-msgstr "Outils d'évaluation"
-
-#: ../../include/widgets.php:1157 ../../include/widgets.php:1159
-msgid "Rate Me"
-msgstr "M'évaluer"
-
-#: ../../include/widgets.php:1162
-msgid "View Ratings"
-msgstr "Voir mes évaluations"
-
-#: ../../include/widgets.php:1173
-msgid "Public Hubs"
-msgstr "Instances publiques"
-
-#: ../../include/widgets.php:1221
-msgid "Forums"
-msgstr "Membres du forum"
-
-#: ../../include/widgets.php:1250
-msgid "Tasks"
-msgstr "Tâches"
-
-#: ../../include/widgets.php:1259
-msgid "Documentation"
-msgstr "Documentation"
-
-#: ../../include/widgets.php:1261
-msgid "Project/Site Information"
-msgstr "Information sur le site/projet"
-
-#: ../../include/widgets.php:1262
-msgid "For Members"
-msgstr "Pour les membres"
-
-#: ../../include/widgets.php:1263
-msgid "For Administrators"
-msgstr "Pour les administrateurs"
-
-#: ../../include/widgets.php:1264
-msgid "For Developers"
-msgstr "Pour les développeurs"
-
-#: ../../include/widgets.php:1289 ../../mod/admin.php:456
-msgid "Site"
-msgstr "Site"
+#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Chat.php:196
+#: ../../Zotlabs/Module/Chat.php:238 ../../Zotlabs/Module/Connect.php:98
+#: ../../Zotlabs/Module/Connedit.php:731 ../../Zotlabs/Module/Events.php:475
+#: ../../Zotlabs/Module/Events.php:672 ../../Zotlabs/Module/Group.php:85
+#: ../../Zotlabs/Module/Filestorage.php:162
+#: ../../Zotlabs/Module/Import.php:550
+#: ../../Zotlabs/Module/Import_items.php:120
+#: ../../Zotlabs/Module/Invite.php:146 ../../Zotlabs/Module/Locs.php:121
+#: ../../Zotlabs/Module/Mail.php:378 ../../Zotlabs/Module/Mood.php:139
+#: ../../Zotlabs/Module/Mitem.php:235 ../../Zotlabs/Module/Photos.php:677
+#: ../../Zotlabs/Module/Photos.php:1052 ../../Zotlabs/Module/Photos.php:1092
+#: ../../Zotlabs/Module/Photos.php:1210 ../../Zotlabs/Module/Pconfig.php:107
+#: ../../Zotlabs/Module/Pdledit.php:66 ../../Zotlabs/Module/Poke.php:186
+#: ../../Zotlabs/Module/Profiles.php:687 ../../Zotlabs/Module/Rate.php:170
+#: ../../Zotlabs/Module/Admin.php:492 ../../Zotlabs/Module/Admin.php:688
+#: ../../Zotlabs/Module/Admin.php:771 ../../Zotlabs/Module/Admin.php:1032
+#: ../../Zotlabs/Module/Admin.php:1211 ../../Zotlabs/Module/Admin.php:1421
+#: ../../Zotlabs/Module/Admin.php:1648 ../../Zotlabs/Module/Admin.php:1733
+#: ../../Zotlabs/Module/Admin.php:2116 ../../Zotlabs/Module/Appman.php:126
+#: ../../Zotlabs/Module/Settings.php:590 ../../Zotlabs/Module/Settings.php:703
+#: ../../Zotlabs/Module/Settings.php:731 ../../Zotlabs/Module/Settings.php:754
+#: ../../Zotlabs/Module/Settings.php:842
+#: ../../Zotlabs/Module/Settings.php:1034 ../../Zotlabs/Module/Setup.php:312
+#: ../../Zotlabs/Module/Setup.php:353 ../../Zotlabs/Module/Sources.php:114
+#: ../../Zotlabs/Module/Sources.php:149 ../../Zotlabs/Module/Thing.php:316
+#: ../../Zotlabs/Module/Thing.php:362 ../../Zotlabs/Module/Xchan.php:15
+#: ../../Zotlabs/Lib/ThreadItem.php:710 ../../include/widgets.php:757
+#: ../../include/widgets.php:769 ../../include/js_strings.php:22
+#: ../../view/theme/redbasic/php/config.php:99
+msgid "Submit"
+msgstr "Envoyer"
-#: ../../include/widgets.php:1290
-msgid "Accounts"
-msgstr "Comptes"
+#: ../../Zotlabs/Module/Cal.php:341 ../../Zotlabs/Module/Events.php:675
+msgid "Today"
+msgstr "Aujourd'hui"
-#: ../../include/widgets.php:1291 ../../mod/admin.php:1149
-msgid "Channels"
-msgstr "Canaux"
+#: ../../Zotlabs/Module/Channel.php:29 ../../Zotlabs/Module/Chat.php:25
+msgid "You must be logged in to see this page."
+msgstr "Vous devez vous connecter pour voir cette page."
-#: ../../include/widgets.php:1292 ../../mod/admin.php:710
-msgid "Security"
+#: ../../Zotlabs/Module/Channel.php:41
+msgid "Posts and comments"
msgstr ""
-#: ../../include/widgets.php:1294 ../../mod/admin.php:1264
-#: ../../mod/admin.php:1325
-msgid "Plugins"
-msgstr "Greffons"
-
-#: ../../include/widgets.php:1295 ../../mod/admin.php:1486
-#: ../../mod/admin.php:1520
-msgid "Themes"
-msgstr "Thèmes"
-
-#: ../../include/widgets.php:1296
-msgid "Inspect queue"
-msgstr "Analyser la file d'attente"
-
-#: ../../include/widgets.php:1297
-msgid "Profile Config"
-msgstr "Configuration du profil"
-
-#: ../../include/widgets.php:1298
-msgid "DB updates"
-msgstr "Mises à jour BDD"
-
-#: ../../include/widgets.php:1316 ../../include/widgets.php:1322
-#: ../../mod/admin.php:1605
-msgid "Logs"
-msgstr "Journaux"
-
-#: ../../include/widgets.php:1321
-msgid "Plugin Features"
-msgstr "Fonctionnalités des greffons"
-
-#: ../../include/widgets.php:1323
-msgid "User registrations waiting for confirmation"
-msgstr "Enregistrements d'utilisateurs en attente d'approbation"
-
-#: ../../include/widgets.php:1401 ../../mod/photos.php:760
-#: ../../mod/photos.php:1300
-msgid "View Photo"
-msgstr "Voir la photo"
-
-#: ../../include/widgets.php:1418 ../../mod/photos.php:791
-msgid "Edit Album"
-msgstr "Modifier l'album"
-
-#: ../../include/ItemObject.php:130
-msgid "Save to Folder"
-msgstr "Enregistrer dans le dossier"
-
-#: ../../include/ItemObject.php:151
-msgid "I will attend"
-msgstr "Je participerai"
-
-#: ../../include/ItemObject.php:151
-msgid "I will not attend"
-msgstr "Je ne participerai pas"
-
-#: ../../include/ItemObject.php:151
-msgid "I might attend"
-msgstr "Je participerai peut-être"
-
-#: ../../include/ItemObject.php:161
-msgid "I agree"
-msgstr "Je suis d'accord"
-
-#: ../../include/ItemObject.php:161
-msgid "I disagree"
-msgstr "Je ne suis pas d'accord"
-
-#: ../../include/ItemObject.php:161
-msgid "I abstain"
-msgstr "Je m'abstiens"
-
-#: ../../include/ItemObject.php:212
-msgid "Add Star"
-msgstr "Mettre en avant (étoile)"
-
-#: ../../include/ItemObject.php:213
-msgid "Remove Star"
-msgstr "Ne plus mettre en avant"
-
-#: ../../include/ItemObject.php:214
-msgid "Toggle Star Status"
-msgstr "(Dés)activer l'étoile"
-
-#: ../../include/ItemObject.php:218
-msgid "starred"
-msgstr "mis en avant"
-
-#: ../../include/ItemObject.php:236
-msgid "Add Tag"
-msgstr "Ajouter une étiquette"
-
-#: ../../include/ItemObject.php:254 ../../mod/photos.php:1037
-msgid "I like this (toggle)"
-msgstr "J'aime (oui/non)"
-
-#: ../../include/ItemObject.php:255 ../../mod/photos.php:1038
-msgid "I don't like this (toggle)"
-msgstr "Je n'aime pas (oui/non)"
-
-#: ../../include/ItemObject.php:259
-msgid "Share This"
-msgstr "Partager"
-
-#: ../../include/ItemObject.php:259
-msgid "share"
-msgstr "partager"
-
-#: ../../include/ItemObject.php:268
-msgid "Delivery Report"
-msgstr "Rapport de distribution"
-
-#: ../../include/ItemObject.php:286
-#, php-format
-msgid "%d comment"
-msgid_plural "%d comments"
-msgstr[0] "%d commentaire"
-msgstr[1] "%d commentaires"
-
-#: ../../include/ItemObject.php:315 ../../include/ItemObject.php:316
-#, php-format
-msgid "View %s's profile - %s"
-msgstr "Voir le profil de %s - %s"
-
-#: ../../include/ItemObject.php:319
-msgid "to"
-msgstr "à"
-
-#: ../../include/ItemObject.php:320
-msgid "via"
-msgstr "via"
-
-#: ../../include/ItemObject.php:321
-msgid "Wall-to-Wall"
-msgstr "Mur-à-mur"
-
-#: ../../include/ItemObject.php:322
-msgid "via Wall-To-Wall:"
-msgstr "par Mur-à-mur&nbsp;:"
-
-#: ../../include/ItemObject.php:362
-msgid "Save Bookmarks"
-msgstr "Enregistrer les favoris"
-
-#: ../../include/ItemObject.php:363
-msgid "Add to Calendar"
-msgstr "Ajouter au Calendrier"
-
-#: ../../include/ItemObject.php:372
-msgid "Mark all seen"
-msgstr "Tout marquer comme vu"
-
-#: ../../include/ItemObject.php:378 ../../mod/photos.php:1223
-msgctxt "noun"
-msgid "Likes"
-msgstr "Aime"
-
-#: ../../include/ItemObject.php:379 ../../mod/photos.php:1224
-msgctxt "noun"
-msgid "Dislikes"
-msgstr "N'aime pas"
-
-#: ../../include/ItemObject.php:700 ../../mod/photos.php:1056
-#: ../../mod/photos.php:1174
-msgid "This is you"
-msgstr "C'est vous"
-
-#: ../../include/ItemObject.php:709
-msgid "Image"
-msgstr "Image"
-
-#: ../../include/ItemObject.php:710
-msgid "Insert Link"
-msgstr "Insérer un lien"
-
-#: ../../include/ItemObject.php:711
-msgid "Video"
-msgstr "Vidéo"
-
-#: ../../index.php:245 ../../mod/help.php:217
-msgid "Not Found"
-msgstr "Introuvable"
-
-#: ../../index.php:248 ../../mod/block.php:75 ../../mod/display.php:110
-#: ../../mod/help.php:220 ../../mod/page.php:89
-msgid "Page not found."
-msgstr "Page introuvable."
-
-#: ../../mod/achievements.php:34
-msgid "Some blurb about what to do when you're new here"
-msgstr "Quelques mots sur quoi faire quand on est nouveau ici"
-
-#: ../../mod/acl.php:222
-msgid "network"
-msgstr "réseau"
-
-#: ../../mod/acl.php:232
-msgid "RSS"
-msgstr "RSS"
-
-#: ../../mod/api.php:74 ../../mod/api.php:98
-msgid "Authorize application connection"
-msgstr "Autoriser l'application à se connecter"
-
-#: ../../mod/api.php:75
-msgid "Return to your app and insert this Securty Code:"
-msgstr "Merci de retourner vers votre application, et d'y insérer ce Code de Sécurité&nbsp;:"
-
-#: ../../mod/api.php:85
-msgid "Please login to continue."
-msgstr "Merci de vous identifier pour continuer."
-
-#: ../../mod/api.php:100
-msgid ""
-"Do you want to authorize this application to access your posts and contacts,"
-" and/or create new posts for you?"
-msgstr "Voulez-vous autoriser cette application à accéder à vos publications et contacts, et/ou à publier en votre nom?"
-
-#: ../../mod/appman.php:28 ../../mod/appman.php:44
-msgid "App installed."
-msgstr "Application installée."
-
-#: ../../mod/appman.php:37
-msgid "Malformed app."
-msgstr "Erreur de l'application - Malformée."
-
-#: ../../mod/appman.php:80
-msgid "Embed code"
-msgstr "Imbriquer le code"
-
-#: ../../mod/appman.php:86
-msgid "Edit App"
-msgstr "Modifier l'application"
-
-#: ../../mod/appman.php:86
-msgid "Create App"
-msgstr "Créer une application"
-
-#: ../../mod/appman.php:91
-msgid "Name of app"
-msgstr "Nom de l'application"
-
-#: ../../mod/appman.php:92
-msgid "Location (URL) of app"
-msgstr "Emplacement (URL) de l'application"
-
-#: ../../mod/appman.php:93 ../../mod/events.php:450 ../../mod/rbmark.php:97
-msgid "Description"
-msgstr "Description"
-
-#: ../../mod/appman.php:94
-msgid "Photo icon URL"
-msgstr "URL de l'icône à utiliser pour cette photo"
-
-#: ../../mod/appman.php:94
-msgid "80 x 80 pixels - optional"
-msgstr "80 x 80 pixels - facultatif"
-
-#: ../../mod/appman.php:95
-msgid "Version ID"
-msgstr "Identifiant de version"
-
-#: ../../mod/appman.php:96
-msgid "Price of app"
-msgstr "Prix de l'application"
-
-#: ../../mod/appman.php:97
-msgid "Location (URL) to purchase app"
-msgstr "Emplacement (URL) pour l'achat de l'application"
-
-#: ../../mod/attach.php:9
-msgid "Item not available."
-msgstr "Élément indisponible."
-
-#: ../../mod/block.php:27 ../../mod/page.php:36
-msgid "Invalid item."
-msgstr "Élément invalide."
-
-#: ../../mod/block.php:39 ../../mod/page.php:52 ../../mod/wall_upload.php:29
-msgid "Channel not found."
-msgstr "Canal introuvable."
-
-#: ../../mod/blocks.php:95 ../../mod/blocks.php:148
-msgid "Block Name"
-msgstr "Nom du Bloc"
-
-#: ../../mod/blocks.php:149
-msgid "Block Title"
-msgstr "Titre du bloc"
-
-#: ../../mod/bookmarks.php:40
-msgid "Bookmark added"
-msgstr "Favori ajouté"
-
-#: ../../mod/bookmarks.php:62
-msgid "My Bookmarks"
-msgstr "Mes Favoris"
-
-#: ../../mod/bookmarks.php:73
-msgid "My Connections Bookmarks"
-msgstr "Favoris de mes contacts"
-
-#: ../../mod/channel.php:25 ../../mod/chat.php:19
-msgid "You must be logged in to see this page."
-msgstr "Vous devez vous connecter pour voir cette page."
+#: ../../Zotlabs/Module/Channel.php:42
+msgid "Only posts"
+msgstr ""
-#: ../../mod/channel.php:97
+#: ../../Zotlabs/Module/Channel.php:102
msgid "Insufficient permissions. Request redirected to profile page."
msgstr "Permissions insuffisantes. Demande redirigée vers la page du profil."
-#: ../../mod/channel.php:131 ../../mod/network.php:169 ../../mod/rpost.php:114
-msgid "Public"
-msgstr "Public"
-
-#: ../../mod/chat.php:174
+#: ../../Zotlabs/Module/Chat.php:181
msgid "Room not found"
msgstr "Salon introuvable"
-#: ../../mod/chat.php:185
+#: ../../Zotlabs/Module/Chat.php:197
msgid "Leave Room"
msgstr "Quitter le salon"
-#: ../../mod/chat.php:186
-msgid "Delete This Room"
-msgstr "Supprimer le salon"
+#: ../../Zotlabs/Module/Chat.php:198
+msgid "Delete Room"
+msgstr ""
-#: ../../mod/chat.php:187
+#: ../../Zotlabs/Module/Chat.php:199
msgid "I am away right now"
msgstr "Je suis absent en ce moment"
-#: ../../mod/chat.php:188
+#: ../../Zotlabs/Module/Chat.php:200
msgid "I am online"
msgstr "Je suis en ligne"
-#: ../../mod/chat.php:190
+#: ../../Zotlabs/Module/Chat.php:202
msgid "Bookmark this room"
msgstr "Marquer ce salon comme favori"
-#: ../../mod/chat.php:208 ../../mod/chat.php:231
+#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Mail.php:205
+#: ../../Zotlabs/Module/Mail.php:314 ../../include/conversation.php:1176
+msgid "Please enter a link URL:"
+msgstr "Merci d'entrer l'URL d'un lien&nbsp;:"
+
+#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Module/Mail.php:258
+#: ../../Zotlabs/Module/Mail.php:383 ../../Zotlabs/Lib/ThreadItem.php:722
+#: ../../include/conversation.php:1256
+msgid "Encrypt text"
+msgstr "Chiffrer le texte"
+
+#: ../../Zotlabs/Module/Chat.php:207 ../../Zotlabs/Module/Editblock.php:111
+#: ../../Zotlabs/Module/Editwebpage.php:147 ../../Zotlabs/Module/Mail.php:252
+#: ../../Zotlabs/Module/Mail.php:377 ../../include/conversation.php:1143
+msgid "Insert web link"
+msgstr "Insérer lien web"
+
+#: ../../Zotlabs/Module/Chat.php:218
+msgid "Feature disabled."
+msgstr ""
+
+#: ../../Zotlabs/Module/Chat.php:232
msgid "New Chatroom"
msgstr "Nouveau salon de discussion"
-#: ../../mod/chat.php:209
-msgid "Chatroom Name"
-msgstr "Nom du salon de discussion"
+#: ../../Zotlabs/Module/Chat.php:233
+msgid "Chatroom name"
+msgstr ""
-#: ../../mod/chat.php:210
+#: ../../Zotlabs/Module/Chat.php:234
msgid "Expiration of chats (minutes)"
msgstr "Expiration des discussions (en minutes)"
-#: ../../mod/chat.php:227
+#: ../../Zotlabs/Module/Chat.php:235 ../../Zotlabs/Module/Filestorage.php:153
+#: ../../Zotlabs/Module/Photos.php:671 ../../Zotlabs/Module/Photos.php:1045
+#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:359
+#: ../../include/acl_selectors.php:283
+msgid "Permissions"
+msgstr "Autorisations"
+
+#: ../../Zotlabs/Module/Chat.php:246
#, php-format
msgid "%1$s's Chatrooms"
msgstr "Salons de %1$s"
-#: ../../mod/chatsvc.php:111
+#: ../../Zotlabs/Module/Chat.php:251
+msgid "No chatrooms available"
+msgstr ""
+
+#: ../../Zotlabs/Module/Chat.php:252 ../../Zotlabs/Module/Manage.php:143
+#: ../../Zotlabs/Module/Profiles.php:778
+msgid "Create New"
+msgstr ""
+
+#: ../../Zotlabs/Module/Chat.php:255
+msgid "Expiration"
+msgstr ""
+
+#: ../../Zotlabs/Module/Chat.php:256
+msgid "min"
+msgstr ""
+
+#: ../../Zotlabs/Module/Chatsvc.php:117
msgid "Away"
msgstr "Absent"
-#: ../../mod/chatsvc.php:115
+#: ../../Zotlabs/Module/Chatsvc.php:122
msgid "Online"
msgstr "En ligne"
-#: ../../mod/common.php:10
-msgid "No channel."
-msgstr "Pas de canal."
+#: ../../Zotlabs/Module/Block.php:31 ../../Zotlabs/Module/Page.php:40
+msgid "Invalid item."
+msgstr "Élément invalide."
-#: ../../mod/common.php:39
-msgid "Common connections"
-msgstr "Contacts en commun"
+#: ../../Zotlabs/Module/Bookmarks.php:53
+msgid "Bookmark added"
+msgstr "Favori ajouté"
-#: ../../mod/common.php:44
-msgid "No connections in common."
-msgstr "Pas de contacts en commun."
+#: ../../Zotlabs/Module/Bookmarks.php:75
+msgid "My Bookmarks"
+msgstr "Mes Favoris"
-#: ../../mod/connect.php:56 ../../mod/connect.php:104
+#: ../../Zotlabs/Module/Bookmarks.php:86
+msgid "My Connections Bookmarks"
+msgstr "Favoris de mes contacts"
+
+#: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109
msgid "Continue"
msgstr "Continuer"
-#: ../../mod/connect.php:85
+#: ../../Zotlabs/Module/Connect.php:90
msgid "Premium Channel Setup"
msgstr "Configuration du canal VIP"
-#: ../../mod/connect.php:87
+#: ../../Zotlabs/Module/Connect.php:92
msgid "Enable premium channel connection restrictions"
msgstr "Activer les restrictions liées au canal VIP"
-#: ../../mod/connect.php:88
+#: ../../Zotlabs/Module/Connect.php:93
msgid ""
"Please enter your restrictions or conditions, such as paypal receipt, usage "
"guidelines, etc."
msgstr "Merci de saisir les restrictions et/ou conditions - reçu Paypal, transaction Bitcoin, ligne de conduite, ..."
-#: ../../mod/connect.php:90 ../../mod/connect.php:110
+#: ../../Zotlabs/Module/Connect.php:95 ../../Zotlabs/Module/Connect.php:115
msgid ""
"This channel may require additional steps or acknowledgement of the "
"following conditions prior to connecting:"
msgstr "Avant d'autoriser la mise en relation, ce canal attire votre attention sur les conditions suivantes&nbsp;:"
-#: ../../mod/connect.php:91
+#: ../../Zotlabs/Module/Connect.php:96
msgid ""
"Potential connections will then see the following text before proceeding:"
msgstr "Les contacts potentiels verront ce qui suit avant de pouvoir continuer&nbsp;:"
-#: ../../mod/connect.php:92 ../../mod/connect.php:113
+#: ../../Zotlabs/Module/Connect.php:97 ../../Zotlabs/Module/Connect.php:118
msgid ""
"By continuing, I certify that I have complied with any instructions provided"
" on this page."
msgstr "En continuant, je certifie que je me suis conformé à toutes les instructions indiquées sur cette page."
-#: ../../mod/connect.php:101
+#: ../../Zotlabs/Module/Connect.php:106
msgid "(No specific instructions have been provided by the channel owner.)"
msgstr "(Aucune instruction spécifique n'a été fournie par le propriétaire du canal.)"
-#: ../../mod/connect.php:109
+#: ../../Zotlabs/Module/Connect.php:114
msgid "Restricted or Premium Channel"
msgstr "Canal VIP ou restreint"
-#: ../../mod/connections.php:52 ../../mod/connections.php:157
-#: ../../mod/connections.php:238
-msgid "Blocked"
-msgstr "Bloqué(e)"
-
-#: ../../mod/connections.php:57 ../../mod/connections.php:164
-#: ../../mod/connections.php:237
-msgid "Ignored"
-msgstr "Ignoré(e)"
-
-#: ../../mod/connections.php:62 ../../mod/connections.php:178
-#: ../../mod/connections.php:236
-msgid "Hidden"
-msgstr "Caché"
-
-#: ../../mod/connections.php:67 ../../mod/connections.php:171
-#: ../../mod/connections.php:235
-msgid "Archived"
-msgstr "Archivé"
-
-#: ../../mod/connections.php:134
-msgid "New Connections"
-msgstr "Nouveaux contacts"
-
-#: ../../mod/connections.php:137
-msgid "Show pending (new) connections"
-msgstr "Voir les (nouveaux) contacts en attente"
-
-#: ../../mod/connections.php:141 ../../mod/profperm.php:139
-msgid "All Connections"
-msgstr "Tous les contacts"
-
-#: ../../mod/connections.php:144
-msgid "Show all connections"
-msgstr "Voir tous les contacts"
-
-#: ../../mod/connections.php:160
-msgid "Only show blocked connections"
-msgstr "Ne montrer que les contacts bloqués"
-
-#: ../../mod/connections.php:167
-msgid "Only show ignored connections"
-msgstr "Ne montrer que les contacts ignorés"
-
-#: ../../mod/connections.php:174
-msgid "Only show archived connections"
-msgstr "Ne montrer que les contacts archivés"
-
-#: ../../mod/connections.php:181
-msgid "Only show hidden connections"
-msgstr "Ne montrer que les contacts cachés"
-
-#: ../../mod/connections.php:234
-msgid "Pending approval"
-msgstr "En attente de validation"
-
-#: ../../mod/connections.php:250
-#, php-format
-msgid "%1$s [%2$s]"
-msgstr "%1$s [%2$s]"
-
-#: ../../mod/connections.php:251
-msgid "Edit connection"
-msgstr "Modifier le contact"
-
-#: ../../mod/connections.php:252
-msgid "Delete connection"
-msgstr "Supprimer le contact"
-
-#: ../../mod/connections.php:261
-msgid "Channel address"
-msgstr "Adresse du canal"
-
-#: ../../mod/connections.php:263
-msgid "Network"
-msgstr "Réseau"
-
-#: ../../mod/connections.php:266 ../../mod/admin.php:668
-msgid "Status"
-msgstr "État"
-
-#: ../../mod/connections.php:268
-msgid "Connected"
-msgstr "Connecté"
-
-#: ../../mod/connections.php:270
-msgid "Approve connection"
-msgstr "Valider le contact"
-
-#: ../../mod/connections.php:271 ../../mod/admin.php:991
-msgid "Approve"
-msgstr "Approuver"
-
-#: ../../mod/connections.php:272
-msgid "Ignore connection"
-msgstr "Ignorer le contact"
-
-#: ../../mod/connections.php:273 ../../mod/connedit.php:536
-#: ../../mod/notifications.php:51
-msgid "Ignore"
-msgstr "Ignorer"
-
-#: ../../mod/connections.php:274
-msgid "Recent activity"
-msgstr "Activité récente"
-
-#: ../../mod/connections.php:303
-msgid "Search your connections"
-msgstr "Chercher parmi vos contacts"
-
-#: ../../mod/connections.php:304
-msgid "Connections search"
-msgstr "Chercher des contacts"
-
-#: ../../mod/connedit.php:75
+#: ../../Zotlabs/Module/Connedit.php:80
msgid "Could not access contact record."
msgstr "Impossible d'accéder aux détails du contact."
-#: ../../mod/connedit.php:99
+#: ../../Zotlabs/Module/Connedit.php:104
msgid "Could not locate selected profile."
msgstr "Impossible de localiser le profil sélectionné."
-#: ../../mod/connedit.php:223
+#: ../../Zotlabs/Module/Connedit.php:227
msgid "Connection updated."
msgstr "Contact mis à jour."
-#: ../../mod/connedit.php:225
+#: ../../Zotlabs/Module/Connedit.php:229
msgid "Failed to update connection record."
msgstr "Impossible de mettre à jour les détails du contact."
-#: ../../mod/connedit.php:272
+#: ../../Zotlabs/Module/Connedit.php:276
msgid "is now connected to"
msgstr "est maintenant connecté avec"
-#: ../../mod/connedit.php:398
+#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Connedit.php:654
+#: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:460
+#: ../../Zotlabs/Module/Events.php:469 ../../Zotlabs/Module/Api.php:89
+#: ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Menu.php:100
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
+#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Admin.php:459
+#: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707
+msgid "No"
+msgstr "Non"
+
+#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Events.php:459
+#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:469
+#: ../../Zotlabs/Module/Api.php:88 ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Menu.php:100
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
+#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Admin.php:461
+#: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707
+msgid "Yes"
+msgstr "Oui"
+
+#: ../../Zotlabs/Module/Connedit.php:411
msgid "Could not access address book record."
msgstr "Impossible d'accéder aux détails du carnet d'adresses."
-#: ../../mod/connedit.php:412
+#: ../../Zotlabs/Module/Connedit.php:425
msgid "Refresh failed - channel is currently unavailable."
msgstr "Actualisation impossible - le canal est indisponible."
-#: ../../mod/connedit.php:427 ../../mod/connedit.php:436
-#: ../../mod/connedit.php:445 ../../mod/connedit.php:454
-#: ../../mod/connedit.php:467
+#: ../../Zotlabs/Module/Connedit.php:440 ../../Zotlabs/Module/Connedit.php:449
+#: ../../Zotlabs/Module/Connedit.php:458 ../../Zotlabs/Module/Connedit.php:467
+#: ../../Zotlabs/Module/Connedit.php:480
msgid "Unable to set address book parameters."
msgstr "Impossible de régler les paramètres du carnet d'adresses."
-#: ../../mod/connedit.php:491
+#: ../../Zotlabs/Module/Connedit.php:503
msgid "Connection has been removed."
msgstr "Le contact a été supprimé."
-#: ../../mod/connedit.php:510
+#: ../../Zotlabs/Module/Connedit.php:519 ../../Zotlabs/Lib/Apps.php:219
+#: ../../include/nav.php:86 ../../include/conversation.php:954
+msgid "View Profile"
+msgstr "Voir le profil"
+
+#: ../../Zotlabs/Module/Connedit.php:522
#, php-format
msgid "View %s's profile"
msgstr "Voir le profil de %s"
-#: ../../mod/connedit.php:514
+#: ../../Zotlabs/Module/Connedit.php:526
msgid "Refresh Permissions"
msgstr "Actualiser les autorisations"
-#: ../../mod/connedit.php:517
+#: ../../Zotlabs/Module/Connedit.php:529
msgid "Fetch updated permissions"
msgstr "Récupérer les autorisations les plus récentes"
-#: ../../mod/connedit.php:521
+#: ../../Zotlabs/Module/Connedit.php:533
msgid "Recent Activity"
msgstr "Activité récente"
-#: ../../mod/connedit.php:524
+#: ../../Zotlabs/Module/Connedit.php:536
msgid "View recent posts and comments"
msgstr "Voir les publications et commentaires récents"
-#: ../../mod/connedit.php:528 ../../mod/admin.php:995
+#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1041
msgid "Unblock"
msgstr "Débloquer"
-#: ../../mod/connedit.php:528 ../../mod/admin.php:994
+#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1040
msgid "Block"
msgstr "Bloquer"
-#: ../../mod/connedit.php:531
+#: ../../Zotlabs/Module/Connedit.php:543
msgid "Block (or Unblock) all communications with this connection"
msgstr "Bloquer ou débloquer toute communication avec ce contact"
-#: ../../mod/connedit.php:532
+#: ../../Zotlabs/Module/Connedit.php:544
msgid "This connection is blocked!"
msgstr "Ce contact est bloqué&nbsp;!"
-#: ../../mod/connedit.php:536
+#: ../../Zotlabs/Module/Connedit.php:548
msgid "Unignore"
msgstr "Ne plus ignorer"
-#: ../../mod/connedit.php:539
+#: ../../Zotlabs/Module/Connedit.php:548
+#: ../../Zotlabs/Module/Connections.php:277
+#: ../../Zotlabs/Module/Notifications.php:55
+msgid "Ignore"
+msgstr "Ignorer"
+
+#: ../../Zotlabs/Module/Connedit.php:551
msgid "Ignore (or Unignore) all inbound communications from this connection"
msgstr "Ignorer ou ne plus ignorer toute communication venant de ce contact"
-#: ../../mod/connedit.php:540
+#: ../../Zotlabs/Module/Connedit.php:552
msgid "This connection is ignored!"
msgstr "Ce contact est ignoré&nbsp;!"
-#: ../../mod/connedit.php:544
+#: ../../Zotlabs/Module/Connedit.php:556
msgid "Unarchive"
msgstr "Désarchiver"
-#: ../../mod/connedit.php:544
+#: ../../Zotlabs/Module/Connedit.php:556
msgid "Archive"
msgstr "Archiver"
-#: ../../mod/connedit.php:547
+#: ../../Zotlabs/Module/Connedit.php:559
msgid ""
"Archive (or Unarchive) this connection - mark channel dead but keep content"
msgstr "Archiver ou désarchiver ce contact - le marquer comme inactif mais conserver le contenu"
-#: ../../mod/connedit.php:548
+#: ../../Zotlabs/Module/Connedit.php:560
msgid "This connection is archived!"
msgstr "Ce contact est archivé&nbsp;!"
-#: ../../mod/connedit.php:552
+#: ../../Zotlabs/Module/Connedit.php:564
msgid "Unhide"
msgstr "Ne plus cacher"
-#: ../../mod/connedit.php:552
+#: ../../Zotlabs/Module/Connedit.php:564
msgid "Hide"
msgstr "Cacher"
-#: ../../mod/connedit.php:555
+#: ../../Zotlabs/Module/Connedit.php:567
msgid "Hide or Unhide this connection from your other connections"
msgstr "Cacher ou ne plus cacher ce contact vis-à-vis de vos autres contacts"
-#: ../../mod/connedit.php:556
+#: ../../Zotlabs/Module/Connedit.php:568
msgid "This connection is hidden!"
msgstr "Ce contact est caché&nbsp;!"
-#: ../../mod/connedit.php:563
+#: ../../Zotlabs/Module/Connedit.php:575
msgid "Delete this connection"
msgstr "Supprimer ce contact"
-#: ../../mod/connedit.php:644
+#: ../../Zotlabs/Module/Connedit.php:590 ../../include/widgets.php:493
+msgid "Me"
+msgstr "Moi"
+
+#: ../../Zotlabs/Module/Connedit.php:591 ../../include/widgets.php:494
+msgid "Family"
+msgstr "Famille"
+
+#: ../../Zotlabs/Module/Connedit.php:592 ../../Zotlabs/Module/Settings.php:342
+#: ../../Zotlabs/Module/Settings.php:346 ../../Zotlabs/Module/Settings.php:347
+#: ../../Zotlabs/Module/Settings.php:350 ../../Zotlabs/Module/Settings.php:361
+#: ../../include/widgets.php:495 ../../include/selectors.php:123
+#: ../../include/channel.php:389 ../../include/channel.php:390
+#: ../../include/channel.php:397
+msgid "Friends"
+msgstr "Amis"
+
+#: ../../Zotlabs/Module/Connedit.php:593 ../../include/widgets.php:496
+msgid "Acquaintances"
+msgstr "Connaissances"
+
+#: ../../Zotlabs/Module/Connedit.php:594
+#: ../../Zotlabs/Module/Connections.php:92
+#: ../../Zotlabs/Module/Connections.php:107 ../../include/widgets.php:497
+msgid "All"
+msgstr "Tous"
+
+#: ../../Zotlabs/Module/Connedit.php:654
msgid "Approve this connection"
msgstr "Autoriser ce contact"
-#: ../../mod/connedit.php:644
+#: ../../Zotlabs/Module/Connedit.php:654
msgid "Accept connection to allow communication"
msgstr "Accepter le contact pour permettre la communication"
-#: ../../mod/connedit.php:649
+#: ../../Zotlabs/Module/Connedit.php:659
msgid "Set Affinity"
msgstr "Définir le degré d'affinité"
-#: ../../mod/connedit.php:652
+#: ../../Zotlabs/Module/Connedit.php:662
msgid "Set Profile"
msgstr "Définir le profil"
-#: ../../mod/connedit.php:655
+#: ../../Zotlabs/Module/Connedit.php:665
msgid "Set Affinity & Profile"
msgstr "Définir le degré d'affinité et le profil"
-#: ../../mod/connedit.php:688
+#: ../../Zotlabs/Module/Connedit.php:698
msgid "none"
msgstr "Aucun"
-#: ../../mod/connedit.php:693
+#: ../../Zotlabs/Module/Connedit.php:702 ../../include/widgets.php:614
+msgid "Connection Default Permissions"
+msgstr "Autorisations par défaut des contacts"
+
+#: ../../Zotlabs/Module/Connedit.php:702 ../../include/items.php:3926
+#, php-format
+msgid "Connection: %s"
+msgstr "Contact&nbsp;: %s"
+
+#: ../../Zotlabs/Module/Connedit.php:703
msgid "Apply these permissions automatically"
msgstr "Appliquer ces permissions automatiquement"
-#: ../../mod/connedit.php:695
+#: ../../Zotlabs/Module/Connedit.php:703
+msgid "Connection requests will be approved without your interaction"
+msgstr "Les demandes de contact seront approuvées automatiquement"
+
+#: ../../Zotlabs/Module/Connedit.php:705
msgid "This connection's primary address is"
msgstr "L'adresse principale de ce contact est"
-#: ../../mod/connedit.php:696
+#: ../../Zotlabs/Module/Connedit.php:706
msgid "Available locations:"
msgstr "Emplacements disponibles&nbsp;:"
-#: ../../mod/connedit.php:700
+#: ../../Zotlabs/Module/Connedit.php:710
msgid ""
"The permissions indicated on this page will be applied to all new "
"connections."
msgstr "Les permissions indiquées sur cette page seront appliquées à tous vos nouveaux contacts."
-#: ../../mod/connedit.php:702
+#: ../../Zotlabs/Module/Connedit.php:711
+msgid "Connection Tools"
+msgstr ""
+
+#: ../../Zotlabs/Module/Connedit.php:713
msgid "Slide to adjust your degree of friendship"
msgstr "Faites glisser pour ajuster votre proximité avec le contact"
-#: ../../mod/connedit.php:704
+#: ../../Zotlabs/Module/Connedit.php:714 ../../Zotlabs/Module/Rate.php:159
+#: ../../include/js_strings.php:20
+msgid "Rating"
+msgstr "Evaluation"
+
+#: ../../Zotlabs/Module/Connedit.php:715
msgid "Slide to adjust your rating"
msgstr "Faîtes glisser pour ajuster votre note"
-#: ../../mod/connedit.php:705 ../../mod/connedit.php:710
+#: ../../Zotlabs/Module/Connedit.php:716 ../../Zotlabs/Module/Connedit.php:721
msgid "Optionally explain your rating"
msgstr "Explication facultative de votre évaluation"
-#: ../../mod/connedit.php:707
+#: ../../Zotlabs/Module/Connedit.php:718
msgid "Custom Filter"
msgstr "Filtre personnalisé"
-#: ../../mod/connedit.php:708
+#: ../../Zotlabs/Module/Connedit.php:719
msgid "Only import posts with this text"
msgstr "N'importer que les publications comprenant ce texte"
-#: ../../mod/connedit.php:708 ../../mod/connedit.php:709
+#: ../../Zotlabs/Module/Connedit.php:719 ../../Zotlabs/Module/Connedit.php:720
msgid ""
"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
"all posts"
msgstr "un mot par ligne ou #étiquettes ou /motif/ ou lang=xx, laisser vide pour importer toutes les publications"
-#: ../../mod/connedit.php:709
+#: ../../Zotlabs/Module/Connedit.php:720
msgid "Do not import posts with this text"
msgstr "Ne pas importer les publications comprenant ce texte"
-#: ../../mod/connedit.php:711
+#: ../../Zotlabs/Module/Connedit.php:722
msgid "This information is public!"
msgstr "Cette information est publique&nbsp;!"
-#: ../../mod/connedit.php:716
+#: ../../Zotlabs/Module/Connedit.php:727
msgid "Connection Pending Approval"
msgstr "Contact en attente d'approbation"
-#: ../../mod/connedit.php:719
+#: ../../Zotlabs/Module/Connedit.php:730
msgid "inherited"
msgstr "héritée"
-#: ../../mod/connedit.php:721
+#: ../../Zotlabs/Module/Connedit.php:732
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr "Merci de choisir le profil que vous souhaitez montrer quand %s visite votre profil de manière authentifiée."
-#: ../../mod/connedit.php:723
+#: ../../Zotlabs/Module/Connedit.php:734
msgid "Their Settings"
msgstr "Leurs paramètres"
-#: ../../mod/connedit.php:724
+#: ../../Zotlabs/Module/Connedit.php:735
msgid "My Settings"
msgstr "Mes paramètres"
-#: ../../mod/connedit.php:726
+#: ../../Zotlabs/Module/Connedit.php:737
msgid "Individual Permissions"
msgstr "Permissions individuelles"
-#: ../../mod/connedit.php:727
+#: ../../Zotlabs/Module/Connedit.php:738
msgid ""
"Some permissions may be inherited from your channel's <a "
"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
@@ -4847,7 +879,7 @@ msgid ""
" settings here."
msgstr "Certaines permissions peuvent être héritées de vos <a href=\"settings\">paramètres de confidentialité</a> de canal, lesquels sont prioritaires sur les réglages individuels. Vous pouvez modifier ces permissions ici mais cela n'aura aucun effet à moins de changer les paramètres hérités."
-#: ../../mod/connedit.php:728
+#: ../../Zotlabs/Module/Connedit.php:739
msgid ""
"Some permissions may be inherited from your channel's <a "
"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
@@ -4855,663 +887,916 @@ msgid ""
"they wont have any impact unless the inherited setting changes."
msgstr "Certaines permissions peuvent être héritées de vos <a href=\"settings\">paramètres de confidentialité</a> de canal, lesquels sont prioritaires sur les réglages individuels. Vous pouvez modifier ces permissions ici mais cela n'aura aucun effet à moins de changer les paramètres hérités."
-#: ../../mod/connedit.php:729
+#: ../../Zotlabs/Module/Connedit.php:740
msgid "Last update:"
msgstr "Dernière mise à jour&nbsp;:"
-#: ../../mod/dav.php:121
-msgid "$Projectname channel"
-msgstr "Canal $Projectname"
-
-#: ../../mod/directory.php:59 ../../mod/display.php:13
-#: ../../mod/photos.php:490 ../../mod/ratings.php:82 ../../mod/search.php:13
-#: ../../mod/viewconnections.php:17
+#: ../../Zotlabs/Module/Directory.php:63 ../../Zotlabs/Module/Display.php:17
+#: ../../Zotlabs/Module/Photos.php:522 ../../Zotlabs/Module/Ratings.php:86
+#: ../../Zotlabs/Module/Search.php:17
+#: ../../Zotlabs/Module/Viewconnections.php:20
msgid "Public access denied."
msgstr "Accès public refusé."
-#: ../../mod/directory.php:239
+#: ../../Zotlabs/Module/Directory.php:243
#, php-format
msgid "%d rating"
msgid_plural "%d ratings"
msgstr[0] "%d évaluation"
msgstr[1] "%d évaluations"
-#: ../../mod/directory.php:250
+#: ../../Zotlabs/Module/Directory.php:254
msgid "Gender: "
msgstr "Sexe/genre&nbsp;:"
-#: ../../mod/directory.php:252
+#: ../../Zotlabs/Module/Directory.php:256
msgid "Status: "
msgstr "État&nbsp;:"
-#: ../../mod/directory.php:254
+#: ../../Zotlabs/Module/Directory.php:258
msgid "Homepage: "
msgstr "Site web&nbsp;:"
-#: ../../mod/directory.php:313
+#: ../../Zotlabs/Module/Directory.php:306 ../../include/channel.php:1183
+msgid "Age:"
+msgstr "Age&nbsp;:"
+
+#: ../../Zotlabs/Module/Directory.php:311 ../../include/event.php:52
+#: ../../include/event.php:84 ../../include/channel.php:1027
+#: ../../include/bb2diaspora.php:507
+msgid "Location:"
+msgstr "Emplacement&nbsp;:"
+
+#: ../../Zotlabs/Module/Directory.php:317
msgid "Description:"
msgstr "Description&nbsp;:"
-#: ../../mod/directory.php:322
+#: ../../Zotlabs/Module/Directory.php:322 ../../include/channel.php:1199
+msgid "Hometown:"
+msgstr "Ville natale&nbsp;:"
+
+#: ../../Zotlabs/Module/Directory.php:324 ../../include/channel.php:1207
+msgid "About:"
+msgstr "À propos&nbsp;:"
+
+#: ../../Zotlabs/Module/Directory.php:325 ../../Zotlabs/Module/Match.php:68
+#: ../../Zotlabs/Module/Suggest.php:56 ../../include/widgets.php:147
+#: ../../include/widgets.php:184 ../../include/connections.php:78
+#: ../../include/conversation.php:956 ../../include/channel.php:1012
+msgid "Connect"
+msgstr "Ajouter/Suivre"
+
+#: ../../Zotlabs/Module/Directory.php:326
msgid "Public Forum:"
msgstr "Forum public&nbsp;:"
-#: ../../mod/directory.php:325
+#: ../../Zotlabs/Module/Directory.php:329
msgid "Keywords: "
msgstr "Mots-clefs&nbsp;:"
-#: ../../mod/directory.php:328
+#: ../../Zotlabs/Module/Directory.php:332
msgid "Don't suggest"
msgstr "Ne pas suggérer"
-#: ../../mod/directory.php:330
+#: ../../Zotlabs/Module/Directory.php:334
msgid "Common connections:"
msgstr "Contacts en commun&nbsp;:"
-#: ../../mod/directory.php:379
+#: ../../Zotlabs/Module/Directory.php:383
msgid "Global Directory"
msgstr "Annuaire global"
-#: ../../mod/directory.php:379
+#: ../../Zotlabs/Module/Directory.php:383
msgid "Local Directory"
msgstr "Annuaire local"
-#: ../../mod/directory.php:385
+#: ../../Zotlabs/Module/Directory.php:388
+#: ../../Zotlabs/Module/Directory.php:393
+#: ../../Zotlabs/Module/Connections.php:309
+#: ../../include/contact_widgets.php:23
+msgid "Find"
+msgstr "Trouver"
+
+#: ../../Zotlabs/Module/Directory.php:389
msgid "Finding:"
msgstr "Recherche&nbsp;:"
-#: ../../mod/directory.php:390
+#: ../../Zotlabs/Module/Directory.php:392 ../../Zotlabs/Module/Suggest.php:64
+#: ../../include/contact_widgets.php:24
+msgid "Channel Suggestions"
+msgstr "Canaux suggérés"
+
+#: ../../Zotlabs/Module/Directory.php:394
msgid "next page"
msgstr "page suivante"
-#: ../../mod/directory.php:390
+#: ../../Zotlabs/Module/Directory.php:394
msgid "previous page"
msgstr "page précédente"
-#: ../../mod/directory.php:391
+#: ../../Zotlabs/Module/Directory.php:395
msgid "Sort options"
msgstr "Options de tri"
-#: ../../mod/directory.php:392
+#: ../../Zotlabs/Module/Directory.php:396
msgid "Alphabetic"
msgstr "Alphabétique"
-#: ../../mod/directory.php:393
+#: ../../Zotlabs/Module/Directory.php:397
msgid "Reverse Alphabetic"
msgstr "Alphabétique inversé"
-#: ../../mod/directory.php:394
+#: ../../Zotlabs/Module/Directory.php:398
msgid "Newest to Oldest"
msgstr "Du plus récent au moins récent"
-#: ../../mod/directory.php:395
+#: ../../Zotlabs/Module/Directory.php:399
msgid "Oldest to Newest"
msgstr "Du moins récent du plus récent"
-#: ../../mod/directory.php:412
+#: ../../Zotlabs/Module/Directory.php:416
msgid "No entries (some entries may be hidden)."
msgstr "Pas d'entrées (certaines peuvent être cachées)."
-#: ../../mod/dirsearch.php:21 ../../mod/regdir.php:45
-msgid "This site is not a directory server"
-msgstr "Ce site n'est pas un serveur d'annuaire"
+#: ../../Zotlabs/Module/Display.php:40 ../../Zotlabs/Module/Filestorage.php:33
+#: ../../Zotlabs/Module/Admin.php:164 ../../Zotlabs/Module/Admin.php:1255
+#: ../../Zotlabs/Module/Admin.php:1561 ../../Zotlabs/Module/Thing.php:89
+#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:3359
+msgid "Item not found."
+msgstr "Élément introuvable"
-#: ../../mod/dirsearch.php:29
-msgid "This directory server requires an access token"
-msgstr "Ce serveur d'annuaire requiert un jeton d'accès"
+#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95
+#: ../../Zotlabs/Module/Editpost.php:24 ../../Zotlabs/Module/Editlayout.php:79
+#: ../../Zotlabs/Module/Editwebpage.php:81
+msgid "Item not found"
+msgstr "Élément introuvable"
-#: ../../mod/dreport.php:23
-msgid "Invalid message"
-msgstr "Message non valide"
+#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1228
+msgid "Title (optional)"
+msgstr "Titre (facultatif)"
-#: ../../mod/dreport.php:55
-msgid "no results"
-msgstr "aucun résultat"
+#: ../../Zotlabs/Module/Editblock.php:133
+msgid "Edit Block"
+msgstr "Modifier le bloc"
+
+#: ../../Zotlabs/Module/Common.php:14
+msgid "No channel."
+msgstr "Pas de canal."
+
+#: ../../Zotlabs/Module/Common.php:43
+msgid "Common connections"
+msgstr "Contacts en commun"
+
+#: ../../Zotlabs/Module/Common.php:48
+msgid "No connections in common."
+msgstr "Pas de contacts en commun."
+
+#: ../../Zotlabs/Module/Connections.php:56
+#: ../../Zotlabs/Module/Connections.php:161
+#: ../../Zotlabs/Module/Connections.php:242
+msgid "Blocked"
+msgstr "Bloqué(e)"
+
+#: ../../Zotlabs/Module/Connections.php:61
+#: ../../Zotlabs/Module/Connections.php:168
+#: ../../Zotlabs/Module/Connections.php:241
+msgid "Ignored"
+msgstr "Ignoré(e)"
+
+#: ../../Zotlabs/Module/Connections.php:66
+#: ../../Zotlabs/Module/Connections.php:182
+#: ../../Zotlabs/Module/Connections.php:240
+msgid "Hidden"
+msgstr "Caché"
+
+#: ../../Zotlabs/Module/Connections.php:71
+#: ../../Zotlabs/Module/Connections.php:175
+#: ../../Zotlabs/Module/Connections.php:239
+msgid "Archived"
+msgstr "Archivé"
-#: ../../mod/dreport.php:60
+#: ../../Zotlabs/Module/Connections.php:76
+#: ../../Zotlabs/Module/Connections.php:86 ../../Zotlabs/Module/Menu.php:116
+#: ../../include/conversation.php:1535
+msgid "New"
+msgstr "Nouveautés"
+
+#: ../../Zotlabs/Module/Connections.php:138
+msgid "New Connections"
+msgstr "Nouveaux contacts"
+
+#: ../../Zotlabs/Module/Connections.php:141
+msgid "Show pending (new) connections"
+msgstr "Voir les (nouveaux) contacts en attente"
+
+#: ../../Zotlabs/Module/Connections.php:145
+#: ../../Zotlabs/Module/Profperm.php:144
+msgid "All Connections"
+msgstr "Tous les contacts"
+
+#: ../../Zotlabs/Module/Connections.php:148
+msgid "Show all connections"
+msgstr "Voir tous les contacts"
+
+#: ../../Zotlabs/Module/Connections.php:164
+msgid "Only show blocked connections"
+msgstr "Ne montrer que les contacts bloqués"
+
+#: ../../Zotlabs/Module/Connections.php:171
+msgid "Only show ignored connections"
+msgstr "Ne montrer que les contacts ignorés"
+
+#: ../../Zotlabs/Module/Connections.php:178
+msgid "Only show archived connections"
+msgstr "Ne montrer que les contacts archivés"
+
+#: ../../Zotlabs/Module/Connections.php:185
+msgid "Only show hidden connections"
+msgstr "Ne montrer que les contacts cachés"
+
+#: ../../Zotlabs/Module/Connections.php:238
+msgid "Pending approval"
+msgstr "En attente de validation"
+
+#: ../../Zotlabs/Module/Connections.php:254
#, php-format
-msgid "Delivery report for %1$s"
-msgstr "Rapport de distribution pour %1$s"
+msgid "%1$s [%2$s]"
+msgstr "%1$s [%2$s]"
-#: ../../mod/dreport.php:74
-msgid "channel sync processed"
-msgstr "Synchro de canal effectuée"
+#: ../../Zotlabs/Module/Connections.php:255
+msgid "Edit connection"
+msgstr "Modifier le contact"
-#: ../../mod/dreport.php:78
-msgid "queued"
-msgstr "mis dans la file d'attente"
+#: ../../Zotlabs/Module/Connections.php:256
+msgid "Delete connection"
+msgstr "Supprimer le contact"
-#: ../../mod/dreport.php:82
-msgid "posted"
-msgstr "publié"
+#: ../../Zotlabs/Module/Connections.php:265
+msgid "Channel address"
+msgstr "Adresse du canal"
-#: ../../mod/dreport.php:86
-msgid "accepted for delivery"
-msgstr "accepté pour la distribution"
+#: ../../Zotlabs/Module/Connections.php:267
+msgid "Network"
+msgstr "Réseau"
-#: ../../mod/dreport.php:90
-msgid "updated"
-msgstr "mis à jour"
+#: ../../Zotlabs/Module/Connections.php:270 ../../Zotlabs/Module/Admin.php:710
+msgid "Status"
+msgstr "État"
-#: ../../mod/dreport.php:93
-msgid "update ignored"
-msgstr "mise à jour ignorée"
+#: ../../Zotlabs/Module/Connections.php:272
+msgid "Connected"
+msgstr "Connecté"
-#: ../../mod/dreport.php:96
-msgid "permission denied"
-msgstr "permission refusée"
+#: ../../Zotlabs/Module/Connections.php:274
+msgid "Approve connection"
+msgstr "Valider le contact"
-#: ../../mod/dreport.php:100
-msgid "recipient not found"
-msgstr "destinataire introuvable"
+#: ../../Zotlabs/Module/Connections.php:275
+#: ../../Zotlabs/Module/Admin.php:1037
+msgid "Approve"
+msgstr "Approuver"
-#: ../../mod/dreport.php:103
-msgid "mail recalled"
-msgstr "courriel rappelé"
+#: ../../Zotlabs/Module/Connections.php:276
+msgid "Ignore connection"
+msgstr "Ignorer le contact"
-#: ../../mod/dreport.php:106
-msgid "duplicate mail received"
-msgstr "courriel reçu en double"
+#: ../../Zotlabs/Module/Connections.php:278
+msgid "Recent activity"
+msgstr "Activité récente"
-#: ../../mod/dreport.php:109
-msgid "mail delivered"
-msgstr "courriel distribué"
+#: ../../Zotlabs/Module/Connections.php:302 ../../Zotlabs/Lib/Apps.php:208
+#: ../../include/text.php:875 ../../include/nav.php:186
+msgid "Connections"
+msgstr "Contacts"
-#: ../../mod/editblock.php:78 ../../mod/editblock.php:94
-#: ../../mod/editlayout.php:76 ../../mod/editpost.php:20
-#: ../../mod/editwebpage.php:77
-msgid "Item not found"
-msgstr "Élément introuvable"
+#: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44
+#: ../../Zotlabs/Lib/Apps.php:228 ../../include/text.php:945
+#: ../../include/text.php:957 ../../include/nav.php:165
+#: ../../include/acl_selectors.php:276
+msgid "Search"
+msgstr "Recherche"
-#: ../../mod/editblock.php:118
-msgid "Delete block?"
-msgstr "Supprimer le bloc&nbsp;?"
+#: ../../Zotlabs/Module/Connections.php:307
+msgid "Search your connections"
+msgstr "Chercher parmi vos contacts"
-#: ../../mod/editblock.php:145 ../../mod/editlayout.php:143
-#: ../../mod/editpost.php:121 ../../mod/editwebpage.php:185
-msgid "Insert YouTube video"
-msgstr "Insérer une vidéo YouTube"
+#: ../../Zotlabs/Module/Connections.php:308
+msgid "Connections search"
+msgstr "Chercher des contacts"
-#: ../../mod/editblock.php:146 ../../mod/editlayout.php:144
-#: ../../mod/editpost.php:122 ../../mod/editwebpage.php:186
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Insérer une vidéo Vorbis [.ogg]"
+#: ../../Zotlabs/Module/Cover_photo.php:58
+#: ../../Zotlabs/Module/Profile_photo.php:79
+msgid "Image uploaded but image cropping failed."
+msgstr "L'image a été téléversée, mais le recadrage a échoué."
-#: ../../mod/editblock.php:147 ../../mod/editlayout.php:145
-#: ../../mod/editpost.php:123 ../../mod/editwebpage.php:187
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Insérer un son Vorbis [.ogg]"
+#: ../../Zotlabs/Module/Cover_photo.php:134
+#: ../../Zotlabs/Module/Cover_photo.php:181
+msgid "Cover Photos"
+msgstr "Photos de couverture"
-#: ../../mod/editblock.php:180
-msgid "Edit Block"
-msgstr "Modifier le bloc"
+#: ../../Zotlabs/Module/Cover_photo.php:154
+#: ../../Zotlabs/Module/Profile_photo.php:133
+msgid "Image resize failed."
+msgstr "Le redimensionnement de l'image a échoué."
-#: ../../mod/editlayout.php:112
-msgid "Delete layout?"
-msgstr "Supprimer la mise en page&nbsp;?"
+#: ../../Zotlabs/Module/Cover_photo.php:168
+#: ../../Zotlabs/Module/Profile_photo.php:192 ../../include/photos.php:144
+msgid "Unable to process image"
+msgstr "Impossible de traiter l'image"
-#: ../../mod/editlayout.php:159 ../../mod/layouts.php:124
-msgid "Layout Description (Optional)"
-msgstr "Description de la mise en page (facultatif)"
+#: ../../Zotlabs/Module/Cover_photo.php:192
+#: ../../Zotlabs/Module/Profile_photo.php:217
+msgid "Image upload failed."
+msgstr "Le téléversement de l'image a échoué."
-#: ../../mod/editlayout.php:161 ../../mod/layouts.php:121
-#: ../../mod/layouts.php:179
-msgid "Layout Name"
-msgstr "Nom de la mise en page"
+#: ../../Zotlabs/Module/Cover_photo.php:210
+#: ../../Zotlabs/Module/Profile_photo.php:236
+msgid "Unable to process image."
+msgstr "Impossible de traîter l'image."
-#: ../../mod/editlayout.php:178
-msgid "Edit Layout"
-msgstr "Modifier la mise en page"
+#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4270
+msgid "female"
+msgstr "femme"
-#: ../../mod/editpost.php:31
-msgid "Item is not editable"
-msgstr "Elément non modifiable"
+#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4271
+#, php-format
+msgid "%1$s updated her %2$s"
+msgstr "%1$s a mis à jour son %2$s"
-#: ../../mod/editpost.php:57
-msgid "Delete item?"
-msgstr "Supprimer l'élément&nbsp;?"
+#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4272
+msgid "male"
+msgstr "homme"
-#: ../../mod/editpost.php:164 ../../mod/rpost.php:128
-msgid "Edit post"
-msgstr "Modifier la publication"
+#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4273
+#, php-format
+msgid "%1$s updated his %2$s"
+msgstr "%1$s a mis à jour son %2$s"
+
+#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4275
+#, php-format
+msgid "%1$s updated their %2$s"
+msgstr "%1$s a mis a jour sa %2$s"
-#: ../../mod/editwebpage.php:153
-msgid "Delete webpage?"
-msgstr "Supprimer la page web&nbsp;?"
+#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1661
+msgid "cover photo"
+msgstr "Photo principale"
-#: ../../mod/editwebpage.php:172
-msgid "Page link title"
-msgstr "Titre du lien vers la page"
+#: ../../Zotlabs/Module/Cover_photo.php:303
+#: ../../Zotlabs/Module/Cover_photo.php:318
+#: ../../Zotlabs/Module/Profile_photo.php:283
+#: ../../Zotlabs/Module/Profile_photo.php:324
+msgid "Photo not available."
+msgstr "Photo inaccessible."
-#: ../../mod/editwebpage.php:222
-msgid "Edit Webpage"
-msgstr "Modifier la page web"
+#: ../../Zotlabs/Module/Cover_photo.php:354
+#: ../../Zotlabs/Module/Profile_photo.php:365
+msgid "Upload File:"
+msgstr "Téléverser fichier&nbsp;:"
+
+#: ../../Zotlabs/Module/Cover_photo.php:355
+#: ../../Zotlabs/Module/Profile_photo.php:366
+msgid "Select a profile:"
+msgstr "Choisir un profil&nbsp;:"
+
+#: ../../Zotlabs/Module/Cover_photo.php:356
+msgid "Upload Cover Photo"
+msgstr "Téléverser une photo de couverture"
+
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+#: ../../Zotlabs/Module/Settings.php:985
+msgid "or"
+msgstr "ou"
+
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+msgid "skip this step"
+msgstr "passer cette étape"
+
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+msgid "select a photo from your photo albums"
+msgstr "choisir une photo dans vos albums"
+
+#: ../../Zotlabs/Module/Cover_photo.php:377
+#: ../../Zotlabs/Module/Profile_photo.php:390
+msgid "Crop Image"
+msgstr "Recadrer l'image"
+
+#: ../../Zotlabs/Module/Cover_photo.php:378
+#: ../../Zotlabs/Module/Profile_photo.php:391
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Merci d'ajuster le cadre pour une visualisation optimale."
+
+#: ../../Zotlabs/Module/Cover_photo.php:380
+#: ../../Zotlabs/Module/Profile_photo.php:393
+msgid "Done Editing"
+msgstr "J'ai terminé"
+
+#: ../../Zotlabs/Module/Editpost.php:35
+msgid "Item is not editable"
+msgstr "Elément non modifiable"
-#: ../../mod/events.php:21
+#: ../../Zotlabs/Module/Editpost.php:106 ../../Zotlabs/Module/Rpost.php:135
+msgid "Edit post"
+msgstr "Modifier la publication"
+
+#: ../../Zotlabs/Module/Events.php:26
msgid "Calendar entries imported."
msgstr "Entrées du calendrier importées."
-#: ../../mod/events.php:23
+#: ../../Zotlabs/Module/Events.php:28
msgid "No calendar entries found."
msgstr "Aucune entrée du calendrier trouvée."
-#: ../../mod/events.php:100
+#: ../../Zotlabs/Module/Events.php:105
msgid "Event can not end before it has started."
msgstr "La fin de l'événement ne peut être antérieure à son début."
-#: ../../mod/events.php:102 ../../mod/events.php:111 ../../mod/events.php:131
+#: ../../Zotlabs/Module/Events.php:107 ../../Zotlabs/Module/Events.php:116
+#: ../../Zotlabs/Module/Events.php:136
msgid "Unable to generate preview."
msgstr "Impossible de générer l'aperçu."
-#: ../../mod/events.php:109
+#: ../../Zotlabs/Module/Events.php:114
msgid "Event title and start time are required."
msgstr "Un titre et une date de début sont requises pour l'événement."
-#: ../../mod/events.php:129 ../../mod/events.php:254
+#: ../../Zotlabs/Module/Events.php:134 ../../Zotlabs/Module/Events.php:259
msgid "Event not found."
msgstr "Événement introuvable."
-#: ../../mod/events.php:437
+#: ../../Zotlabs/Module/Events.php:254 ../../Zotlabs/Module/Like.php:373
+#: ../../Zotlabs/Module/Tagger.php:51 ../../include/event.php:949
+#: ../../include/text.php:1943 ../../include/conversation.php:123
+msgid "event"
+msgstr "événement"
+
+#: ../../Zotlabs/Module/Events.php:449
msgid "Edit event title"
msgstr "Modifier le titre de l'événement"
-#: ../../mod/events.php:437
+#: ../../Zotlabs/Module/Events.php:449
msgid "Event title"
msgstr "Titre de l'événement"
-#: ../../mod/events.php:439
+#: ../../Zotlabs/Module/Events.php:449 ../../Zotlabs/Module/Events.php:454
+#: ../../Zotlabs/Module/Profiles.php:709 ../../Zotlabs/Module/Profiles.php:713
+#: ../../Zotlabs/Module/Appman.php:115 ../../Zotlabs/Module/Appman.php:116
+#: ../../include/datetime.php:245
+msgid "Required"
+msgstr "Requis"
+
+#: ../../Zotlabs/Module/Events.php:451
msgid "Categories (comma-separated list)"
msgstr "Catégories (séparées par des virgules)"
-#: ../../mod/events.php:440
+#: ../../Zotlabs/Module/Events.php:452
msgid "Edit Category"
msgstr "Modifier la catégorie"
-#: ../../mod/events.php:440
+#: ../../Zotlabs/Module/Events.php:452
msgid "Category"
msgstr "Catégorie"
-#: ../../mod/events.php:443
+#: ../../Zotlabs/Module/Events.php:455
msgid "Edit start date and time"
msgstr "Modifier la date et l'heure de début"
-#: ../../mod/events.php:443
+#: ../../Zotlabs/Module/Events.php:455
msgid "Start date and time"
msgstr "Date et heure de début"
-#: ../../mod/events.php:444 ../../mod/events.php:447
+#: ../../Zotlabs/Module/Events.php:456 ../../Zotlabs/Module/Events.php:459
msgid "Finish date and time are not known or not relevant"
msgstr "Date et heure de fin inconnues ou sans objet"
-#: ../../mod/events.php:446
+#: ../../Zotlabs/Module/Events.php:458
msgid "Edit finish date and time"
msgstr "Modifier la date et l'heure de fin"
-#: ../../mod/events.php:446
+#: ../../Zotlabs/Module/Events.php:458
msgid "Finish date and time"
msgstr "Date et heure de fin"
-#: ../../mod/events.php:448 ../../mod/events.php:449
+#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:461
msgid "Adjust for viewer timezone"
msgstr "Ajuster au fuseau horaire du visiteur"
-#: ../../mod/events.php:448
+#: ../../Zotlabs/Module/Events.php:460
msgid ""
"Important for events that happen in a particular place. Not practical for "
"global holidays."
msgstr "Important pour les événements se tenant en un lieu particulier. Pas pratique pour les vacances communes à de nombreux pays dans le monde."
-#: ../../mod/events.php:450
+#: ../../Zotlabs/Module/Events.php:462
msgid "Edit Description"
msgstr "Modifier la description"
-#: ../../mod/events.php:452
+#: ../../Zotlabs/Module/Events.php:462 ../../Zotlabs/Module/Appman.php:117
+#: ../../Zotlabs/Module/Rbmark.php:101
+msgid "Description"
+msgstr "Description"
+
+#: ../../Zotlabs/Module/Events.php:464
msgid "Edit Location"
msgstr "Modifier l'emplacement"
-#: ../../mod/events.php:455 ../../mod/events.php:457
+#: ../../Zotlabs/Module/Events.php:464 ../../Zotlabs/Module/Locs.php:117
+#: ../../Zotlabs/Module/Profiles.php:477 ../../Zotlabs/Module/Profiles.php:698
+#: ../../Zotlabs/Module/Pubsites.php:41 ../../include/js_strings.php:25
+msgid "Location"
+msgstr "Emplacement"
+
+#: ../../Zotlabs/Module/Events.php:467 ../../Zotlabs/Module/Events.php:469
msgid "Share this event"
msgstr "Partager cet événement"
-#: ../../mod/events.php:462
+#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Photos.php:1093
+#: ../../Zotlabs/Module/Webpages.php:194 ../../Zotlabs/Lib/ThreadItem.php:719
+#: ../../include/conversation.php:1187 ../../include/page_widgets.php:40
+msgid "Preview"
+msgstr "Aperçu"
+
+#: ../../Zotlabs/Module/Events.php:471 ../../include/conversation.php:1232
+msgid "Permission settings"
+msgstr "Gérer les autorisations"
+
+#: ../../Zotlabs/Module/Events.php:476
msgid "Advanced Options"
msgstr "Options avancées"
-#: ../../mod/events.php:574
-msgid "l, F j"
-msgstr "l, F j"
-
-#: ../../mod/events.php:596
+#: ../../Zotlabs/Module/Events.php:610
msgid "Edit event"
msgstr "Modifier l'événement"
-#: ../../mod/events.php:598
+#: ../../Zotlabs/Module/Events.php:612
msgid "Delete event"
msgstr "Supprimer l'événement"
-#: ../../mod/events.php:632
+#: ../../Zotlabs/Module/Events.php:646
msgid "calendar"
msgstr "calendrier"
-#: ../../mod/events.php:651
-msgid "Edit Event"
-msgstr "Modifier l'événement"
-
-#: ../../mod/events.php:651
-msgid "Create Event"
-msgstr "Créer un événement"
-
-#: ../../mod/events.php:652 ../../mod/events.php:659 ../../mod/photos.php:916
-msgid "Previous"
-msgstr "Précédent"
-
-#: ../../mod/events.php:653 ../../mod/events.php:660 ../../mod/photos.php:925
-#: ../../mod/setup.php:288
-msgid "Next"
-msgstr "Suivant"
-
-#: ../../mod/events.php:661
-msgid "Today"
-msgstr "Aujourd'hui"
-
-#: ../../mod/events.php:692
+#: ../../Zotlabs/Module/Events.php:706
msgid "Event removed"
msgstr "Événement supprimé"
-#: ../../mod/events.php:695
+#: ../../Zotlabs/Module/Events.php:709
msgid "Failed to remove event"
msgstr "Impossible de supprimer l'événement"
-#: ../../mod/ffsapi.php:8
-msgid "Share content from Firefox to $Projectname"
-msgstr "Partager du contenu depuis Firefox avec $Projectname"
+#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:220
+#: ../../include/nav.php:92 ../../include/conversation.php:1632
+msgid "Photos"
+msgstr "Photos"
-#: ../../mod/ffsapi.php:11
-msgid "Activate the Firefox $Projectname provider"
-msgstr "Activer le connecteur $Projectname pour Firefox"
+#: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88
+#: ../../Zotlabs/Module/Admin.php:1406 ../../Zotlabs/Module/Settings.php:591
+#: ../../Zotlabs/Module/Settings.php:617 ../../Zotlabs/Module/Tagrm.php:15
+#: ../../Zotlabs/Module/Tagrm.php:138 ../../include/conversation.php:1259
+msgid "Cancel"
+msgstr "Annuler"
-#: ../../mod/filer.php:48
+#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49
+msgid "This site is not a directory server"
+msgstr "Ce site n'est pas un serveur d'annuaire"
+
+#: ../../Zotlabs/Module/Dirsearch.php:33
+msgid "This directory server requires an access token"
+msgstr "Ce serveur d'annuaire requiert un jeton d'accès"
+
+#: ../../Zotlabs/Module/Filer.php:52
+msgid "Save to Folder:"
+msgstr "Classer dans le dossier&nbsp;:"
+
+#: ../../Zotlabs/Module/Filer.php:52
msgid "- select -"
msgstr "- choisir -"
-#: ../../mod/filestorage.php:82
-msgid "Permission Denied."
-msgstr "Permission refusée."
+#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Admin.php:2033
+#: ../../Zotlabs/Module/Admin.php:2053 ../../Zotlabs/Module/Rbmark.php:32
+#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/text.php:946
+#: ../../include/text.php:958 ../../include/widgets.php:201
+msgid "Save"
+msgstr "Enregistrer"
-#: ../../mod/filestorage.php:98
-msgid "File not found."
-msgstr "Fichier introuvable."
+#: ../../Zotlabs/Module/Dreport.php:27
+msgid "Invalid message"
+msgstr "Message non valide"
-#: ../../mod/filestorage.php:141
-msgid "Edit file permissions"
-msgstr "Modifier les autorisations d'accès au fichier"
+#: ../../Zotlabs/Module/Dreport.php:59
+msgid "no results"
+msgstr "aucun résultat"
-#: ../../mod/filestorage.php:150
-msgid "Set/edit permissions"
-msgstr "Définir/modifier les autorisations"
+#: ../../Zotlabs/Module/Dreport.php:64
+#, php-format
+msgid "Delivery report for %1$s"
+msgstr "Rapport de distribution pour %1$s"
-#: ../../mod/filestorage.php:151
-msgid "Include all files and sub folders"
-msgstr "Inclure tous fichiers et sous-répertoires"
+#: ../../Zotlabs/Module/Dreport.php:78
+msgid "channel sync processed"
+msgstr "Synchro de canal effectuée"
-#: ../../mod/filestorage.php:152
-msgid "Return to file list"
-msgstr "Retourner à la liste des fichiers"
+#: ../../Zotlabs/Module/Dreport.php:82
+msgid "queued"
+msgstr "mis dans la file d'attente"
-#: ../../mod/filestorage.php:154
-msgid "Copy/paste this code to attach file to a post"
-msgstr "Copiez/collez ce code pour joindre le fichier à une publication"
+#: ../../Zotlabs/Module/Dreport.php:86
+msgid "posted"
+msgstr "publié"
-#: ../../mod/filestorage.php:155
-msgid "Copy/paste this URL to link file from a web page"
-msgstr "Copiez/collez cette URL pour pointer vers ce fichier depuis une page web"
+#: ../../Zotlabs/Module/Dreport.php:90
+msgid "accepted for delivery"
+msgstr "accepté pour la distribution"
-#: ../../mod/filestorage.php:157
-msgid "Share this file"
-msgstr "Partager ce fichier"
+#: ../../Zotlabs/Module/Dreport.php:94
+msgid "updated"
+msgstr "mis à jour"
-#: ../../mod/filestorage.php:158
-msgid "Show URL to this file"
-msgstr "Montrer l'URL de ce fichier"
+#: ../../Zotlabs/Module/Dreport.php:97
+msgid "update ignored"
+msgstr "mise à jour ignorée"
-#: ../../mod/filestorage.php:159
-msgid "Notify your contacts about this file"
-msgstr "Notifier vos contacts à propos de ce fichier"
+#: ../../Zotlabs/Module/Dreport.php:100
+msgid "permission denied"
+msgstr "permission refusée"
-#: ../../mod/follow.php:25
-msgid "Channel added."
-msgstr "Canal ajouté."
+#: ../../Zotlabs/Module/Dreport.php:104
+msgid "recipient not found"
+msgstr "destinataire introuvable"
-#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
-msgid "Contact not found."
-msgstr "Contact introuvable."
+#: ../../Zotlabs/Module/Dreport.php:107
+msgid "mail recalled"
+msgstr "courriel rappelé"
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
-msgstr "Suggestion d'amitié envoyée."
+#: ../../Zotlabs/Module/Dreport.php:110
+msgid "duplicate mail received"
+msgstr "courriel reçu en double"
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
-msgstr "Suggérer des amis"
+#: ../../Zotlabs/Module/Dreport.php:113
+msgid "mail delivered"
+msgstr "courriel distribué"
-#: ../../mod/fsuggest.php:99
-#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Suggérer un amis à %s"
+#: ../../Zotlabs/Module/Editlayout.php:126
+#: ../../Zotlabs/Module/Layouts.php:127 ../../Zotlabs/Module/Layouts.php:186
+msgid "Layout Name"
+msgstr "Nom de la mise en page"
+
+#: ../../Zotlabs/Module/Editlayout.php:127
+#: ../../Zotlabs/Module/Layouts.php:130
+msgid "Layout Description (Optional)"
+msgstr "Description de la mise en page (facultatif)"
+
+#: ../../Zotlabs/Module/Editlayout.php:135
+msgid "Edit Layout"
+msgstr "Modifier la mise en page"
-#: ../../mod/group.php:20
+#: ../../Zotlabs/Module/Editwebpage.php:143
+msgid "Page link"
+msgstr ""
+
+#: ../../Zotlabs/Module/Editwebpage.php:169
+msgid "Edit Webpage"
+msgstr "Modifier la page web"
+
+#: ../../Zotlabs/Module/Follow.php:34
+msgid "Channel added."
+msgstr "Canal ajouté."
+
+#: ../../Zotlabs/Module/Acl.php:227
+msgid "network"
+msgstr "réseau"
+
+#: ../../Zotlabs/Module/Acl.php:237
+msgid "RSS"
+msgstr "RSS"
+
+#: ../../Zotlabs/Module/Group.php:24
msgid "Privacy group created."
msgstr "Groupe d'accès créé."
-#: ../../mod/group.php:26
+#: ../../Zotlabs/Module/Group.php:30
msgid "Could not create privacy group."
msgstr "Impossible de créer le groupe d'accès."
-#: ../../mod/group.php:54
+#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141
+#: ../../include/items.php:3893
+msgid "Privacy group not found."
+msgstr "Groupe d'accès introuvable."
+
+#: ../../Zotlabs/Module/Group.php:58
msgid "Privacy group updated."
msgstr "Groupe d'accès mis à jour."
-#: ../../mod/group.php:86
+#: ../../Zotlabs/Module/Group.php:90
msgid "Create a group of channels."
msgstr "Créer un groupe de canaux."
-#: ../../mod/group.php:87 ../../mod/group.php:180
+#: ../../Zotlabs/Module/Group.php:91 ../../Zotlabs/Module/Group.php:184
msgid "Privacy group name: "
msgstr "Nom du groupe d'accès&nbsp;:"
-#: ../../mod/group.php:89 ../../mod/group.php:183
+#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Group.php:187
msgid "Members are visible to other channels"
msgstr "Les membres sont visibles par les autres canaux"
-#: ../../mod/group.php:107
+#: ../../Zotlabs/Module/Group.php:111
msgid "Privacy group removed."
msgstr "Groupe d'accès supprimé."
-#: ../../mod/group.php:109
+#: ../../Zotlabs/Module/Group.php:113
msgid "Unable to remove privacy group."
msgstr "Impossible de supprimer le groupe d'accès."
-#: ../../mod/group.php:179
+#: ../../Zotlabs/Module/Group.php:183
msgid "Privacy group editor"
msgstr "Editeur de groupe d'accès."
-#: ../../mod/group.php:193
+#: ../../Zotlabs/Module/Group.php:197
msgid "Members"
msgstr "Membres"
-#: ../../mod/group.php:195
+#: ../../Zotlabs/Module/Group.php:199
msgid "All Connected Channels"
msgstr "Tous les canaux connectés"
-#: ../../mod/group.php:227
+#: ../../Zotlabs/Module/Group.php:231
msgid "Click on a channel to add or remove."
msgstr "Cliquer sur un canal pour l'ajouter ou le supprimer"
-#: ../../mod/help.php:149
-msgid "Documentation Search"
-msgstr "Chercher dans la documentation"
-
-#: ../../mod/help.php:190 ../../mod/help.php:196 ../../mod/help.php:202
-msgid "Help:"
-msgstr "Aide&nbsp;:"
+#: ../../Zotlabs/Module/Ffsapi.php:12
+msgid "Share content from Firefox to $Projectname"
+msgstr "Partager du contenu depuis Firefox avec $Projectname"
-#: ../../mod/help.php:243
-msgid "$Projectname Documentation"
-msgstr "Documentation $Projectname"
+#: ../../Zotlabs/Module/Ffsapi.php:15
+msgid "Activate the Firefox $Projectname provider"
+msgstr "Activer le connecteur $Projectname pour Firefox"
-#: ../../mod/home.php:57 ../../mod/home.php:65 ../../mod/siteinfo.php:61
-msgid "$Projectname"
-msgstr "$Projectname"
+#: ../../Zotlabs/Module/Api.php:61 ../../Zotlabs/Module/Api.php:85
+msgid "Authorize application connection"
+msgstr "Autoriser l'application à se connecter"
-#: ../../mod/home.php:75
-#, php-format
-msgid "Welcome to %s"
-msgstr "Bienvenue sur %s"
+#: ../../Zotlabs/Module/Api.php:62
+msgid "Return to your app and insert this Securty Code:"
+msgstr "Merci de retourner vers votre application, et d'y insérer ce Code de Sécurité&nbsp;:"
-#: ../../mod/id.php:11
-msgid "First Name"
-msgstr "Prénom"
+#: ../../Zotlabs/Module/Api.php:72
+msgid "Please login to continue."
+msgstr "Merci de vous identifier pour continuer."
-#: ../../mod/id.php:12
-msgid "Last Name"
-msgstr "Nom de famille"
+#: ../../Zotlabs/Module/Api.php:87
+msgid ""
+"Do you want to authorize this application to access your posts and contacts,"
+" and/or create new posts for you?"
+msgstr "Voulez-vous autoriser cette application à accéder à vos publications et contacts, et/ou à publier en votre nom?"
-#: ../../mod/id.php:13
-msgid "Nickname"
-msgstr "Surnom"
+#: ../../Zotlabs/Module/Help.php:26
+msgid "Documentation Search"
+msgstr "Chercher dans la documentation"
-#: ../../mod/id.php:14
-msgid "Full Name"
-msgstr "Nom complet"
+#: ../../Zotlabs/Module/Help.php:67 ../../Zotlabs/Module/Help.php:73
+#: ../../Zotlabs/Module/Help.php:79
+msgid "Help:"
+msgstr "Aide&nbsp;:"
-#: ../../mod/id.php:20
-msgid "Profile Photo 16px"
-msgstr "Photo de profil 16px"
+#: ../../Zotlabs/Module/Help.php:85 ../../Zotlabs/Module/Help.php:90
+#: ../../Zotlabs/Module/Layouts.php:183 ../../Zotlabs/Lib/Apps.php:223
+#: ../../include/nav.php:159
+msgid "Help"
+msgstr "Aide"
-#: ../../mod/id.php:21
-msgid "Profile Photo 32px"
-msgstr "Photo de profil 32px"
+#: ../../Zotlabs/Module/Help.php:120
+msgid "$Projectname Documentation"
+msgstr "Documentation $Projectname"
-#: ../../mod/id.php:22
-msgid "Profile Photo 48px"
-msgstr "Photo de profil 48px"
+#: ../../Zotlabs/Module/Filestorage.php:88
+msgid "Permission Denied."
+msgstr "Permission refusée."
-#: ../../mod/id.php:23
-msgid "Profile Photo 64px"
-msgstr "Photo de profil 64px"
+#: ../../Zotlabs/Module/Filestorage.php:104
+msgid "File not found."
+msgstr "Fichier introuvable."
-#: ../../mod/id.php:24
-msgid "Profile Photo 80px"
-msgstr "Photo de profil 80px"
+#: ../../Zotlabs/Module/Filestorage.php:147
+msgid "Edit file permissions"
+msgstr "Modifier les autorisations d'accès au fichier"
-#: ../../mod/id.php:25
-msgid "Profile Photo 128px"
-msgstr "Photo de profil 128px"
+#: ../../Zotlabs/Module/Filestorage.php:156
+msgid "Set/edit permissions"
+msgstr "Définir/modifier les autorisations"
-#: ../../mod/id.php:26
-msgid "Timezone"
-msgstr "Fuseau horaire"
+#: ../../Zotlabs/Module/Filestorage.php:157
+msgid "Include all files and sub folders"
+msgstr "Inclure tous fichiers et sous-répertoires"
-#: ../../mod/id.php:27
-msgid "Homepage URL"
-msgstr "URL de mon site Internet&nbsp;:"
+#: ../../Zotlabs/Module/Filestorage.php:158
+msgid "Return to file list"
+msgstr "Retourner à la liste des fichiers"
-#: ../../mod/id.php:29
-msgid "Birth Year"
-msgstr "Année de naissance"
+#: ../../Zotlabs/Module/Filestorage.php:160
+msgid "Copy/paste this code to attach file to a post"
+msgstr "Copiez/collez ce code pour joindre le fichier à une publication"
-#: ../../mod/id.php:30
-msgid "Birth Month"
-msgstr "Mois de naissance"
+#: ../../Zotlabs/Module/Filestorage.php:161
+msgid "Copy/paste this URL to link file from a web page"
+msgstr "Copiez/collez cette URL pour pointer vers ce fichier depuis une page web"
-#: ../../mod/id.php:31
-msgid "Birth Day"
-msgstr "Jour de naissance"
+#: ../../Zotlabs/Module/Filestorage.php:163
+msgid "Share this file"
+msgstr "Partager ce fichier"
-#: ../../mod/id.php:32
-msgid "Birthdate"
-msgstr "Date de naissance"
+#: ../../Zotlabs/Module/Filestorage.php:164
+msgid "Show URL to this file"
+msgstr "Montrer l'URL de ce fichier"
-#: ../../mod/id.php:33 ../../mod/profiles.php:441
-msgid "Gender"
-msgstr "Sexe"
+#: ../../Zotlabs/Module/Filestorage.php:165
+msgid "Notify your contacts about this file"
+msgstr "Notifier vos contacts à propos de ce fichier"
-#: ../../mod/impel.php:192
-#, php-format
-msgid "%s element installed"
-msgstr "Elément %s installé"
+#: ../../Zotlabs/Module/Apps.php:47 ../../include/widgets.php:102
+#: ../../include/nav.php:163
+msgid "Apps"
+msgstr "Applications"
-#: ../../mod/impel.php:195
-#, php-format
-msgid "%s element installation failed"
-msgstr "L'installation de l'élément %s a échoué"
+#: ../../Zotlabs/Module/Attach.php:13
+msgid "Item not available."
+msgstr "Élément indisponible."
-#: ../../mod/import.php:28
+#: ../../Zotlabs/Module/Import.php:32
#, php-format
msgid "Your service plan only allows %d channels."
msgstr "Votre forfait n'autorise que %d canaux."
-#: ../../mod/import.php:66 ../../mod/import_items.php:38
+#: ../../Zotlabs/Module/Import.php:70 ../../Zotlabs/Module/Import_items.php:42
msgid "Nothing to import."
msgstr "Rien à importer."
-#: ../../mod/import.php:90 ../../mod/import_items.php:62
+#: ../../Zotlabs/Module/Import.php:94 ../../Zotlabs/Module/Import_items.php:66
msgid "Unable to download data from old server"
msgstr "Impossible de récupérer les données de l'ancien serveur"
-#: ../../mod/import.php:96 ../../mod/import_items.php:68
+#: ../../Zotlabs/Module/Import.php:100
+#: ../../Zotlabs/Module/Import_items.php:72
msgid "Imported file is empty."
msgstr "Le fichier importé est vide."
-#: ../../mod/import.php:119 ../../mod/import_items.php:82
+#: ../../Zotlabs/Module/Import.php:122
+#: ../../Zotlabs/Module/Import_items.php:86
#, php-format
msgid "Warning: Database versions differ by %1$d updates."
msgstr "Attention&nbsp;: les versions de bases de données diffèrent de %1$d mises à jour."
-#: ../../mod/import.php:124
-msgid "Server platform is not compatible. Operation not permitted."
-msgstr ""
+#: ../../Zotlabs/Module/Import.php:150 ../../include/import.php:86
+msgid "Cloned channel not found. Import failed."
+msgstr "Canal cloné non trouvé. Echec de l'import."
-#: ../../mod/import.php:158
+#: ../../Zotlabs/Module/Import.php:160
msgid "No channel. Import failed."
msgstr "Pas de canal. Echec de l'import."
-#: ../../mod/import.php:518
+#: ../../Zotlabs/Module/Import.php:510
+#: ../../include/Import/import_diaspora.php:142
+msgid "Import completed."
+msgstr "L'import est terminé."
+
+#: ../../Zotlabs/Module/Import.php:532
msgid "You must be logged in to use this feature."
msgstr "Vous devez vous connecter pour utiliser cette fonctionnalité."
-#: ../../mod/import.php:523
+#: ../../Zotlabs/Module/Import.php:537
msgid "Import Channel"
msgstr "Importation de canal"
-#: ../../mod/import.php:524
+#: ../../Zotlabs/Module/Import.php:538
msgid ""
"Use this form to import an existing channel from a different server/hub. You"
" may retrieve the channel identity from the old server/hub via the network "
"or provide an export file."
msgstr "Utilisez ce formulaire pour importer un canal existant sur un autre serveur. Vous pouvez récupérer l'identité du canal sur l'ancien serveur directement par le réseau, ou bien fournir un fichier d'export/import."
-#: ../../mod/import.php:525 ../../mod/import_items.php:115
+#: ../../Zotlabs/Module/Import.php:539
+#: ../../Zotlabs/Module/Import_items.php:119
msgid "File to Upload"
msgstr "Fichier à envoyer"
-#: ../../mod/import.php:526
+#: ../../Zotlabs/Module/Import.php:540
msgid "Or provide the old server/hub details"
msgstr "Ou fournissez les détails de l'ancien serveur/hub"
-#: ../../mod/import.php:527
+#: ../../Zotlabs/Module/Import.php:541
msgid "Your old identity address (xyz@example.com)"
msgstr "Votre ancienne identité (zyx@exemple.com)"
-#: ../../mod/import.php:528
+#: ../../Zotlabs/Module/Import.php:542
msgid "Your old login email address"
msgstr "Votre ancienne adresse de courriel"
-#: ../../mod/import.php:529
+#: ../../Zotlabs/Module/Import.php:543
msgid "Your old login password"
msgstr "Votre ancien mot de passe"
-#: ../../mod/import.php:530
+#: ../../Zotlabs/Module/Import.php:544
msgid ""
"For either option, please choose whether to make this hub your new primary "
"address, or whether your old location should continue this role. You will be"
@@ -5519,3760 +1804,4382 @@ msgid ""
"primary location for files, photos, and media."
msgstr "Quelle que soit l'option choisie, merci de décider si ce hub sera votre nouvelle adresse primaire, ou si votre ancien hub continuera à jouer ce rôle. Vous pourrez publier depuis l'emplacement de votre choix, mais une seule peut être déclarée comme stockage primaire de vos fichiers/photos/media."
-#: ../../mod/import.php:531
+#: ../../Zotlabs/Module/Import.php:545
msgid "Make this hub my primary location"
msgstr "Faire de ce hub mon emplacement primaire"
-#: ../../mod/import.php:532
+#: ../../Zotlabs/Module/Import.php:546
msgid ""
"Import existing posts if possible (experimental - limited by available "
"memory"
msgstr "Importer les publications existantes si possible (expérimental - limité par la mémoire disponible)"
-#: ../../mod/import.php:533
+#: ../../Zotlabs/Module/Import.php:547
msgid ""
"This process may take several minutes to complete. Please submit the form "
"only once and leave this page open until finished."
msgstr "Ce processus peut prendre plusieurs minutes. Merci de ne valider le formulaire qu'une seule fois et de laisser cette page ouverte jusqu'à la fin."
-#: ../../mod/import_items.php:98
-msgid "Import completed"
-msgstr "L'import est terminé."
-
-#: ../../mod/import_items.php:113
-msgid "Import Items"
-msgstr "Importer"
-
-#: ../../mod/import_items.php:114
-msgid ""
-"Use this form to import existing posts and content from an export file."
-msgstr "Utiliser ce formulaire pour importer des publications et du contenu existant d'un fichier d'export."
-
-#: ../../mod/invite.php:25
-msgid "Total invitation limit exceeded."
-msgstr "Limite du nombre total d'invitation dépassée."
-
-#: ../../mod/invite.php:49
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s&nbsp;: adresse courriel invalide."
-
-#: ../../mod/invite.php:59
-msgid "Please join us on $Projectname"
-msgstr "Rejoignez-nous sur $Projectname"
-
-#: ../../mod/invite.php:70
-msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr "Limite d'invitations dépassée. Merci de contacter l'administration de votre site."
-
-#: ../../mod/invite.php:75
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s&nbsp;: Échec de distribution du message."
-
-#: ../../mod/invite.php:79
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d message envoyé."
-msgstr[1] "%d messages envoyés."
-
-#: ../../mod/invite.php:98
-msgid "You have no more invitations available"
-msgstr "Vous ne disposez plus d'aucune invitation"
-
-#: ../../mod/invite.php:129
-msgid "Send invitations"
-msgstr "Envoyer des invitations"
-
-#: ../../mod/invite.php:130
-msgid "Enter email addresses, one per line:"
-msgstr "Entrez les adresses de courriel, une par ligne&nbsp;:"
-
-#: ../../mod/invite.php:131 ../../mod/mail.php:246
-msgid "Your message:"
-msgstr "Votre message&nbsp;:"
-
-#: ../../mod/invite.php:132
-msgid "Please join my community on $Projectname."
-msgstr "Rejoignez ma communauté sur $Projectname."
-
-#: ../../mod/invite.php:134
-msgid "You will need to supply this invitation code:"
-msgstr ""
-
-#: ../../mod/invite.php:135
-msgid ""
-"1. Register at any $Projectname location (they are all inter-connected)"
-msgstr "1. Enregistrez-vous sur n'importe quel serveur $Projectname (ils sont tous inter-connectés)"
-
-#: ../../mod/invite.php:137
-msgid "2. Enter my $Projectname network address into the site searchbar."
-msgstr "2. Saisissez l'adresse de mon canal $Projectname dans la barre de recherche du site."
-
-#: ../../mod/invite.php:138
-msgid "or visit"
-msgstr ""
-
-#: ../../mod/invite.php:140
-msgid "3. Click [Connect]"
-msgstr "3. Cliquez sur [Ajouter]"
-
-#: ../../mod/item.php:174
+#: ../../Zotlabs/Module/Item.php:178
msgid "Unable to locate original post."
msgstr "Impossible de localiser la publication initiale."
-#: ../../mod/item.php:418
+#: ../../Zotlabs/Module/Item.php:427
msgid "Empty post discarded."
msgstr "Publication vide annulée."
-#: ../../mod/item.php:458
+#: ../../Zotlabs/Module/Item.php:467
msgid "Executable content type not permitted to this channel."
msgstr "Les contenus de type 'exécutable' ne sont pas autorisés sur ce canal."
-#: ../../mod/item.php:824
+#: ../../Zotlabs/Module/Item.php:847
msgid "Duplicate post suppressed."
msgstr "Publication en doublon supprimée."
-#: ../../mod/item.php:954
+#: ../../Zotlabs/Module/Item.php:977
msgid "System error. Post not saved."
msgstr "Erreur système. Publication non sauvegardée."
-#: ../../mod/item.php:1221
+#: ../../Zotlabs/Module/Item.php:1241
msgid "Unable to obtain post information from database."
msgstr "Impossible d'obtenir les informations de publication depuis la base de données."
-#: ../../mod/item.php:1228
+#: ../../Zotlabs/Module/Item.php:1248
#, php-format
msgid "You have reached your limit of %1$.0f top level posts."
msgstr "Vous avez atteint votre limite de %1$.0f contributions \"racines\"."
-#: ../../mod/item.php:1235
+#: ../../Zotlabs/Module/Item.php:1255
#, php-format
msgid "You have reached your limit of %1$.0f webpages."
msgstr "Vous avez atteint votre limite de %1$.0f pages web."
-#: ../../mod/layouts.php:176
+#: ../../Zotlabs/Module/Layouts.php:181 ../../include/text.php:2267
+msgid "Layouts"
+msgstr "Mises-en-page"
+
+#: ../../Zotlabs/Module/Layouts.php:183
msgid "Comanche page description language help"
msgstr "Aide sur le langage de description de page Comanche"
-#: ../../mod/layouts.php:180
+#: ../../Zotlabs/Module/Layouts.php:187
msgid "Layout Description"
msgstr "Description de la mise en page"
-#: ../../mod/layouts.php:185
+#: ../../Zotlabs/Module/Layouts.php:192
msgid "Download PDL file"
msgstr "Télécharger le fichier PDL"
-#: ../../mod/like.php:15
+#: ../../Zotlabs/Module/Home.php:61 ../../Zotlabs/Module/Home.php:69
+#: ../../Zotlabs/Module/Siteinfo.php:65
+msgid "$Projectname"
+msgstr "$Projectname"
+
+#: ../../Zotlabs/Module/Home.php:79
+#, php-format
+msgid "Welcome to %s"
+msgstr "Bienvenue sur %s"
+
+#: ../../Zotlabs/Module/Id.php:13
+msgid "First Name"
+msgstr "Prénom"
+
+#: ../../Zotlabs/Module/Id.php:14
+msgid "Last Name"
+msgstr "Nom de famille"
+
+#: ../../Zotlabs/Module/Id.php:15
+msgid "Nickname"
+msgstr "Surnom"
+
+#: ../../Zotlabs/Module/Id.php:16
+msgid "Full Name"
+msgstr "Nom complet"
+
+#: ../../Zotlabs/Module/Id.php:17 ../../Zotlabs/Module/Id.php:18
+#: ../../Zotlabs/Module/Admin.php:1035 ../../Zotlabs/Module/Admin.php:1047
+#: ../../include/network.php:2151 ../../boot.php:1705
+msgid "Email"
+msgstr "Courriel"
+
+#: ../../Zotlabs/Module/Id.php:19 ../../Zotlabs/Module/Id.php:20
+#: ../../Zotlabs/Module/Id.php:21 ../../Zotlabs/Lib/Apps.php:236
+msgid "Profile Photo"
+msgstr "Photo du Profil"
+
+#: ../../Zotlabs/Module/Id.php:22
+msgid "Profile Photo 16px"
+msgstr "Photo de profil 16px"
+
+#: ../../Zotlabs/Module/Id.php:23
+msgid "Profile Photo 32px"
+msgstr "Photo de profil 32px"
+
+#: ../../Zotlabs/Module/Id.php:24
+msgid "Profile Photo 48px"
+msgstr "Photo de profil 48px"
+
+#: ../../Zotlabs/Module/Id.php:25
+msgid "Profile Photo 64px"
+msgstr "Photo de profil 64px"
+
+#: ../../Zotlabs/Module/Id.php:26
+msgid "Profile Photo 80px"
+msgstr "Photo de profil 80px"
+
+#: ../../Zotlabs/Module/Id.php:27
+msgid "Profile Photo 128px"
+msgstr "Photo de profil 128px"
+
+#: ../../Zotlabs/Module/Id.php:28
+msgid "Timezone"
+msgstr "Fuseau horaire"
+
+#: ../../Zotlabs/Module/Id.php:29 ../../Zotlabs/Module/Profiles.php:731
+msgid "Homepage URL"
+msgstr "URL de mon site Internet&nbsp;:"
+
+#: ../../Zotlabs/Module/Id.php:30 ../../Zotlabs/Lib/Apps.php:234
+msgid "Language"
+msgstr "Langue"
+
+#: ../../Zotlabs/Module/Id.php:31
+msgid "Birth Year"
+msgstr "Année de naissance"
+
+#: ../../Zotlabs/Module/Id.php:32
+msgid "Birth Month"
+msgstr "Mois de naissance"
+
+#: ../../Zotlabs/Module/Id.php:33
+msgid "Birth Day"
+msgstr "Jour de naissance"
+
+#: ../../Zotlabs/Module/Id.php:34
+msgid "Birthdate"
+msgstr "Date de naissance"
+
+#: ../../Zotlabs/Module/Id.php:35 ../../Zotlabs/Module/Profiles.php:454
+msgid "Gender"
+msgstr "Sexe"
+
+#: ../../Zotlabs/Module/Id.php:108 ../../include/selectors.php:49
+#: ../../include/selectors.php:66
+msgid "Male"
+msgstr "Homme"
+
+#: ../../Zotlabs/Module/Id.php:110 ../../include/selectors.php:49
+#: ../../include/selectors.php:66
+msgid "Female"
+msgstr "Femme"
+
+#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:192
+msgid "webpage"
+msgstr "pages web"
+
+#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:198
+msgid "block"
+msgstr "bloquer"
+
+#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:195
+msgid "layout"
+msgstr "mise en page"
+
+#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:201
+msgid "menu"
+msgstr "menu"
+
+#: ../../Zotlabs/Module/Impel.php:196
+#, php-format
+msgid "%s element installed"
+msgstr "Elément %s installé"
+
+#: ../../Zotlabs/Module/Impel.php:199
+#, php-format
+msgid "%s element installation failed"
+msgstr "L'installation de l'élément %s a échoué"
+
+#: ../../Zotlabs/Module/Like.php:19
msgid "Like/Dislike"
msgstr "Aime/n'aime pas"
-#: ../../mod/like.php:20
+#: ../../Zotlabs/Module/Like.php:24
msgid "This action is restricted to members."
msgstr "Cette action est réservée aux membres."
-#: ../../mod/like.php:21
+#: ../../Zotlabs/Module/Like.php:25
msgid ""
"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a "
"href=\"register\">register as a new $Projectname member</a> to continue."
msgstr "S'il vous plait, <a href=\"rmagic\">identifiez vous avec votre identifant de $Projectname </a> ou <a href=\"register\">inscrivez vous comme nouveau membre de $Projectname </a> pour continuer."
-#: ../../mod/like.php:101 ../../mod/like.php:127 ../../mod/like.php:165
+#: ../../Zotlabs/Module/Like.php:105 ../../Zotlabs/Module/Like.php:131
+#: ../../Zotlabs/Module/Like.php:169
msgid "Invalid request."
msgstr "Requête invalide."
-#: ../../mod/like.php:142
+#: ../../Zotlabs/Module/Like.php:117 ../../include/conversation.php:126
+msgid "channel"
+msgstr "canal"
+
+#: ../../Zotlabs/Module/Like.php:146
msgid "thing"
msgstr "chose"
-#: ../../mod/like.php:188
+#: ../../Zotlabs/Module/Like.php:192
msgid "Channel unavailable."
msgstr "Canal indisponible."
-#: ../../mod/like.php:236
+#: ../../Zotlabs/Module/Like.php:240
msgid "Previous action reversed."
msgstr "Action précédente annulée."
-#: ../../mod/like.php:414
+#: ../../Zotlabs/Module/Like.php:371 ../../Zotlabs/Module/Subthread.php:87
+#: ../../Zotlabs/Module/Tagger.php:47 ../../include/text.php:1940
+#: ../../include/conversation.php:120
+msgid "photo"
+msgstr "photo"
+
+#: ../../Zotlabs/Module/Like.php:371 ../../Zotlabs/Module/Subthread.php:87
+#: ../../include/text.php:1946 ../../include/conversation.php:148
+msgid "status"
+msgstr "état"
+
+#: ../../Zotlabs/Module/Like.php:420 ../../include/conversation.php:164
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "%1$s aime %3$s de %2$s"
+
+#: ../../Zotlabs/Module/Like.php:422 ../../include/conversation.php:167
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
+msgstr "%1$s n'aime pas %3$s de %2$s"
+
+#: ../../Zotlabs/Module/Like.php:424
#, php-format
msgid "%1$s agrees with %2$s's %3$s"
msgstr "%1$s approuve %3$s de %2$s"
-#: ../../mod/like.php:416
+#: ../../Zotlabs/Module/Like.php:426
#, php-format
msgid "%1$s doesn't agree with %2$s's %3$s"
msgstr "%1$s n'est pas d'accord avec %3$s de %2$s"
-#: ../../mod/like.php:418
+#: ../../Zotlabs/Module/Like.php:428
#, php-format
msgid "%1$s abstains from a decision on %2$s's %3$s"
msgstr "%1$s s'abstient de toute décision sur le %3$s de %2$s"
-#: ../../mod/like.php:420
+#: ../../Zotlabs/Module/Like.php:430
#, php-format
msgid "%1$s is attending %2$s's %3$s"
msgstr "%1$s participe à %3$s de %2$s"
-#: ../../mod/like.php:422
+#: ../../Zotlabs/Module/Like.php:432
#, php-format
msgid "%1$s is not attending %2$s's %3$s"
msgstr "%1$s ne participe pas à %3$s de %2$s"
-#: ../../mod/like.php:424
+#: ../../Zotlabs/Module/Like.php:434
#, php-format
msgid "%1$s may attend %2$s's %3$s"
msgstr "%1$s participe peut-être à %3$s de %2$s"
-#: ../../mod/like.php:520
+#: ../../Zotlabs/Module/Like.php:537
msgid "Action completed."
msgstr "Action terminée."
-#: ../../mod/like.php:521
+#: ../../Zotlabs/Module/Like.php:538
msgid "Thank you."
msgstr "Merci."
-#: ../../mod/lockview.php:37
+#: ../../Zotlabs/Module/Import_items.php:102
+msgid "Import completed"
+msgstr "L'import est terminé."
+
+#: ../../Zotlabs/Module/Import_items.php:117
+msgid "Import Items"
+msgstr "Importer"
+
+#: ../../Zotlabs/Module/Import_items.php:118
+msgid ""
+"Use this form to import existing posts and content from an export file."
+msgstr "Utiliser ce formulaire pour importer des publications et du contenu existant d'un fichier d'export."
+
+#: ../../Zotlabs/Module/Invite.php:29
+msgid "Total invitation limit exceeded."
+msgstr "Limite du nombre total d'invitation dépassée."
+
+#: ../../Zotlabs/Module/Invite.php:53
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s&nbsp;: adresse courriel invalide."
+
+#: ../../Zotlabs/Module/Invite.php:63
+msgid "Please join us on $Projectname"
+msgstr "Rejoignez-nous sur $Projectname"
+
+#: ../../Zotlabs/Module/Invite.php:74
+msgid "Invitation limit exceeded. Please contact your site administrator."
+msgstr "Limite d'invitations dépassée. Merci de contacter l'administration de votre site."
+
+#: ../../Zotlabs/Module/Invite.php:79
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s&nbsp;: Échec de distribution du message."
+
+#: ../../Zotlabs/Module/Invite.php:83
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d message envoyé."
+msgstr[1] "%d messages envoyés."
+
+#: ../../Zotlabs/Module/Invite.php:102
+msgid "You have no more invitations available"
+msgstr "Vous ne disposez plus d'aucune invitation"
+
+#: ../../Zotlabs/Module/Invite.php:133
+msgid "Send invitations"
+msgstr "Envoyer des invitations"
+
+#: ../../Zotlabs/Module/Invite.php:134
+msgid "Enter email addresses, one per line:"
+msgstr "Entrez les adresses de courriel, une par ligne&nbsp;:"
+
+#: ../../Zotlabs/Module/Invite.php:135 ../../Zotlabs/Module/Mail.php:249
+msgid "Your message:"
+msgstr "Votre message&nbsp;:"
+
+#: ../../Zotlabs/Module/Invite.php:136
+msgid "Please join my community on $Projectname."
+msgstr "Rejoignez ma communauté sur $Projectname."
+
+#: ../../Zotlabs/Module/Invite.php:138
+msgid "You will need to supply this invitation code:"
+msgstr "Vous devrez fournir le code suivant&nbsp;:"
+
+#: ../../Zotlabs/Module/Invite.php:139
+msgid ""
+"1. Register at any $Projectname location (they are all inter-connected)"
+msgstr "1. Enregistrez-vous sur n'importe quel serveur $Projectname (ils sont tous inter-connectés)"
+
+#: ../../Zotlabs/Module/Invite.php:141
+msgid "2. Enter my $Projectname network address into the site searchbar."
+msgstr "2. Saisissez l'adresse de mon canal $Projectname dans la barre de recherche du site."
+
+#: ../../Zotlabs/Module/Invite.php:142
+msgid "or visit"
+msgstr "ou rendez-vous sur"
+
+#: ../../Zotlabs/Module/Invite.php:144
+msgid "3. Click [Connect]"
+msgstr "3. Cliquez sur [Ajouter]"
+
+#: ../../Zotlabs/Module/Lockview.php:61
msgid "Remote privacy information not available."
msgstr "Les informations distantes de confidentialité ne sont pas disponibles."
-#: ../../mod/lockview.php:58
+#: ../../Zotlabs/Module/Lockview.php:82
msgid "Visible to:"
msgstr "Visible par&nbsp;:"
-#: ../../mod/locs.php:21 ../../mod/locs.php:50
+#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54
msgid "Location not found."
msgstr "Emplacement introuvable."
-#: ../../mod/locs.php:58
+#: ../../Zotlabs/Module/Locs.php:62
msgid "Location lookup failed."
msgstr "Echec de la recherche de l'emplacement."
-#: ../../mod/locs.php:62
+#: ../../Zotlabs/Module/Locs.php:66
msgid ""
"Please select another location to become primary before removing the primary"
" location."
msgstr "Merci de sélectionner un autre emplacement comme nouvel emplacement primaire avant de supprimer l'emplacement primaire actuel."
-#: ../../mod/locs.php:91
+#: ../../Zotlabs/Module/Locs.php:95
msgid "Syncing locations"
msgstr "Synchronisation des emplacements"
-#: ../../mod/locs.php:101
+#: ../../Zotlabs/Module/Locs.php:105
msgid "No locations found."
msgstr "Emplacement(s) introuvable."
-#: ../../mod/locs.php:112
+#: ../../Zotlabs/Module/Locs.php:116
msgid "Manage Channel Locations"
msgstr "Gérer les emplacements des canaux"
-#: ../../mod/locs.php:113
-msgid "Location (address)"
-msgstr "Emplacement (adresse)"
+#: ../../Zotlabs/Module/Locs.php:118 ../../Zotlabs/Module/Profiles.php:470
+#: ../../Zotlabs/Module/Admin.php:1224
+msgid "Address"
+msgstr "Adresse"
-#: ../../mod/locs.php:114
-msgid "Primary Location"
-msgstr "Emplacement primaire"
+#: ../../Zotlabs/Module/Locs.php:119
+msgid "Primary"
+msgstr ""
-#: ../../mod/locs.php:115
-msgid "Drop location"
-msgstr "Abandonner l'emplacement"
+#: ../../Zotlabs/Module/Locs.php:120 ../../Zotlabs/Module/Menu.php:113
+msgid "Drop"
+msgstr "Supprimer"
-#: ../../mod/locs.php:117
-msgid "Sync now"
-msgstr "Synchroniser maintenant"
+#: ../../Zotlabs/Module/Locs.php:122
+msgid "Sync Now"
+msgstr ""
-#: ../../mod/locs.php:118
+#: ../../Zotlabs/Module/Locs.php:123
msgid "Please wait several minutes between consecutive operations."
msgstr "Merci d'attendre plusieurs minutes entre opérations successives."
-#: ../../mod/locs.php:119
+#: ../../Zotlabs/Module/Locs.php:124
msgid ""
"When possible, drop a location by logging into that website/hub and removing"
" your channel."
msgstr "Quand c'est possible, abandonnez un emplacement en vous connectant sur le site/hub et en supprimant votre canal."
-#: ../../mod/locs.php:120
+#: ../../Zotlabs/Module/Locs.php:125
msgid "Use this form to drop the location if the hub is no longer operating."
msgstr "Utilisez ce formulaire pour abandonner l'emplacement si le hub n'est plus actif."
-#: ../../mod/ping.php:260
-msgid "sent you a private message"
-msgstr "vous a envoyé un message privé"
-
-#: ../../mod/ping.php:308
-msgid "added your channel"
-msgstr "a ajouté votre canal"
-
-#: ../../mod/ping.php:350
-msgid "posted an event"
-msgstr "a publié un événement"
-
-#: ../../mod/magic.php:69
+#: ../../Zotlabs/Module/Magic.php:71
msgid "Hub not found."
msgstr "Hub introuvable."
-#: ../../mod/mail.php:34
+#: ../../Zotlabs/Module/Mail.php:38
msgid "Unable to lookup recipient."
msgstr "Impossible de localiser le destinataire."
-#: ../../mod/mail.php:42
+#: ../../Zotlabs/Module/Mail.php:45
msgid "Unable to communicate with requested channel."
msgstr "Impossible de communiquer avec le canal demandé."
-#: ../../mod/mail.php:49
+#: ../../Zotlabs/Module/Mail.php:52
msgid "Cannot verify requested channel."
msgstr "Impossible de vérifier le canal demandé."
-#: ../../mod/mail.php:75
+#: ../../Zotlabs/Module/Mail.php:78
msgid "Selected channel has private message restrictions. Send failed."
msgstr "Le canal choisi a des restrictions quant aux messages privés. L'envoi a échoué."
-#: ../../mod/mail.php:140
+#: ../../Zotlabs/Module/Mail.php:143
msgid "Messages"
msgstr "Messages"
-#: ../../mod/mail.php:175
+#: ../../Zotlabs/Module/Mail.php:178
msgid "Message recalled."
msgstr "Message rappelé."
-#: ../../mod/mail.php:188
+#: ../../Zotlabs/Module/Mail.php:191
msgid "Conversation removed."
msgstr "Conversation supprimée."
-#: ../../mod/mail.php:231
+#: ../../Zotlabs/Module/Mail.php:206 ../../Zotlabs/Module/Mail.php:315
+msgid "Expires YYYY-MM-DD HH:MM"
+msgstr "Expire le YYYY-MM-DD à HH:MM"
+
+#: ../../Zotlabs/Module/Mail.php:234
msgid "Requested channel is not in this network"
msgstr "Le canal demandé n'est pas sur ce réseau"
-#: ../../mod/mail.php:239
+#: ../../Zotlabs/Module/Mail.php:242
msgid "Send Private Message"
msgstr "Envoyer un message privé"
-#: ../../mod/mail.php:240 ../../mod/mail.php:370
+#: ../../Zotlabs/Module/Mail.php:243 ../../Zotlabs/Module/Mail.php:368
msgid "To:"
msgstr "À&nbsp;:"
-#: ../../mod/mail.php:243 ../../mod/mail.php:372
+#: ../../Zotlabs/Module/Mail.php:246 ../../Zotlabs/Module/Mail.php:370
msgid "Subject:"
msgstr "Objet&nbsp;:"
-#: ../../mod/mail.php:250
+#: ../../Zotlabs/Module/Mail.php:251 ../../Zotlabs/Module/Mail.php:376
+#: ../../include/conversation.php:1220
+msgid "Attach file"
+msgstr "Joindre un fichier"
+
+#: ../../Zotlabs/Module/Mail.php:253
msgid "Send"
msgstr "Envoyer"
-#: ../../mod/mail.php:342
+#: ../../Zotlabs/Module/Mail.php:256 ../../Zotlabs/Module/Mail.php:381
+#: ../../include/conversation.php:1251
+msgid "Set expiration date"
+msgstr "Définir la date d'expiration"
+
+#: ../../Zotlabs/Module/Mail.php:340
msgid "Delete message"
msgstr "Supprimer le message"
-#: ../../mod/mail.php:343
+#: ../../Zotlabs/Module/Mail.php:341
msgid "Delivery report"
msgstr "Rapport de distribution"
-#: ../../mod/mail.php:344
+#: ../../Zotlabs/Module/Mail.php:342
msgid "Recall message"
msgstr "Rappeler le message"
-#: ../../mod/mail.php:346
+#: ../../Zotlabs/Module/Mail.php:344
msgid "Message has been recalled."
msgstr "Le message a été rappelé."
-#: ../../mod/mail.php:363
+#: ../../Zotlabs/Module/Mail.php:361
msgid "Delete Conversation"
msgstr "Supprimer la conversation"
-#: ../../mod/mail.php:365
+#: ../../Zotlabs/Module/Mail.php:363
msgid ""
"No secure communications available. You <strong>may</strong> be able to "
"respond from the sender's profile page."
msgstr "Aucune communication sécurisée n'est possible. Vous pourrez <strong>peut-être</strong> répondre depuis la page de profil de l'émetteur."
-#: ../../mod/mail.php:369
+#: ../../Zotlabs/Module/Mail.php:367
msgid "Send Reply"
msgstr "Envoyer la réponse"
-#: ../../mod/mail.php:374
+#: ../../Zotlabs/Module/Mail.php:372
#, php-format
msgid "Your message for %s (%s):"
msgstr "Votre message pour %s (%s)&nbsp;:"
-#: ../../mod/manage.php:130
+#: ../../Zotlabs/Module/Manage.php:136
+#: ../../Zotlabs/Module/New_channel.php:121
#, php-format
msgid "You have created %1$.0f of %2$.0f allowed channels."
msgstr "Vous avez créé %1$.0f des %2$.0f canaux autorisés."
-#: ../../mod/manage.php:138
+#: ../../Zotlabs/Module/Manage.php:143
msgid "Create a new channel"
msgstr "Créer un nouveau canal"
-#: ../../mod/manage.php:163
+#: ../../Zotlabs/Module/Manage.php:164 ../../Zotlabs/Lib/Apps.php:213
+#: ../../include/nav.php:206
+msgid "Channel Manager"
+msgstr "Gérer les canaux"
+
+#: ../../Zotlabs/Module/Manage.php:165
msgid "Current Channel"
msgstr "Canal actif"
-#: ../../mod/manage.php:165
+#: ../../Zotlabs/Module/Manage.php:167
msgid "Switch to one of your channels by selecting it."
msgstr "Pour changer de canal, sélectionnez-en un"
-#: ../../mod/manage.php:166
+#: ../../Zotlabs/Module/Manage.php:168
msgid "Default Channel"
msgstr "Canal par défaut"
-#: ../../mod/manage.php:167
+#: ../../Zotlabs/Module/Manage.php:169
msgid "Make Default"
msgstr "Définir comme défaut"
-#: ../../mod/manage.php:170
+#: ../../Zotlabs/Module/Manage.php:172
#, php-format
msgid "%d new messages"
msgstr "%d nouveaux messages"
-#: ../../mod/manage.php:171
+#: ../../Zotlabs/Module/Manage.php:173
#, php-format
msgid "%d new introductions"
msgstr "%d nouvelles présentations"
-#: ../../mod/manage.php:173
-msgid "Delegated Channels"
-msgstr "Canaux délégués"
+#: ../../Zotlabs/Module/Manage.php:175
+msgid "Delegated Channel"
+msgstr ""
-#: ../../mod/match.php:22
-msgid "Profile Match"
-msgstr "Profils similaires"
+#: ../../Zotlabs/Module/Lostpass.php:19
+msgid "No valid account found."
+msgstr "Aucun compte valide trouvé."
-#: ../../mod/match.php:31
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr "Aucun mot-clef à comparer. Merci d'ajouter des mots-clefs à votre profil par défaut."
+#: ../../Zotlabs/Module/Lostpass.php:33
+msgid "Password reset request issued. Check your email."
+msgstr "Demande de réinitialisation du mot de passe envoyée. Vérifiez vos courriels."
-#: ../../mod/match.php:63
-msgid "is interested in:"
-msgstr "s'intéresse à&nbsp;:"
+#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:107
+#, php-format
+msgid "Site Member (%s)"
+msgstr "Membre du site (%s)"
-#: ../../mod/match.php:70
-msgid "No matches"
-msgstr "Pas de correspondance"
+#: ../../Zotlabs/Module/Lostpass.php:44
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "Demande de réinitialisation du mot de passe sur %s"
+
+#: ../../Zotlabs/Module/Lostpass.php:67
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "La demande n'a pas pu être vérifiée. (Peut-être l'avez vous déjà utilisée.) La réinitialisation a échoué."
+
+#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1711
+msgid "Password Reset"
+msgstr "Réinitialiser le mot de passe"
+
+#: ../../Zotlabs/Module/Lostpass.php:91
+msgid "Your password has been reset as requested."
+msgstr "Votre mot de passe a bien été réinitialisé."
+
+#: ../../Zotlabs/Module/Lostpass.php:92
+msgid "Your new password is"
+msgstr "Votre nouveau mot de passe est"
+
+#: ../../Zotlabs/Module/Lostpass.php:93
+msgid "Save or copy your new password - and then"
+msgstr "Enregistrez ou copiez votre nouveau mot de passe, puis"
+
+#: ../../Zotlabs/Module/Lostpass.php:94
+msgid "click here to login"
+msgstr "cliquez ici pour vous connecter"
+
+#: ../../Zotlabs/Module/Lostpass.php:95
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Votre mot de passe peut être changé depuis la page des <em>Paramètres</em> une fois connecté."
+
+#: ../../Zotlabs/Module/Lostpass.php:112
+#, php-format
+msgid "Your password has changed at %s"
+msgstr "Votre mot de passe de %s a été changé"
+
+#: ../../Zotlabs/Module/Lostpass.php:127
+msgid "Forgot your Password?"
+msgstr "Mot de passe oublié&nbsp;?"
+
+#: ../../Zotlabs/Module/Lostpass.php:128
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Saisissez votre adresse de courriel, et validez, pour réinitialiser votre mot de passe. Vérifiez ensuite votre boîte aux lettres pour la suite des instructions."
-#: ../../mod/menu.php:45
+#: ../../Zotlabs/Module/Lostpass.php:129
+msgid "Email Address"
+msgstr "Adresse de courriel"
+
+#: ../../Zotlabs/Module/Lostpass.php:130
+msgid "Reset"
+msgstr "Réinitialiser"
+
+#: ../../Zotlabs/Module/Menu.php:49
msgid "Unable to update menu."
msgstr "Impossible de mettre le menu à jour."
-#: ../../mod/menu.php:56
+#: ../../Zotlabs/Module/Menu.php:60
msgid "Unable to create menu."
msgstr "Impossible de créer le menu."
-#: ../../mod/menu.php:94 ../../mod/menu.php:106
+#: ../../Zotlabs/Module/Menu.php:98 ../../Zotlabs/Module/Menu.php:110
msgid "Menu Name"
msgstr "Nom du menu"
-#: ../../mod/menu.php:94
+#: ../../Zotlabs/Module/Menu.php:98
msgid "Unique name (not visible on webpage) - required"
msgstr "Nom unique (non visible sur la page web) - requis"
-#: ../../mod/menu.php:95 ../../mod/menu.php:107
+#: ../../Zotlabs/Module/Menu.php:99 ../../Zotlabs/Module/Menu.php:111
msgid "Menu Title"
msgstr "Titre du menu"
-#: ../../mod/menu.php:95
+#: ../../Zotlabs/Module/Menu.php:99
msgid "Visible on webpage - leave empty for no title"
msgstr "Visible pour la page web - laisser vide pour qu'il n'y ait pas de titre"
-#: ../../mod/menu.php:96
+#: ../../Zotlabs/Module/Menu.php:100
msgid "Allow Bookmarks"
msgstr "Autoriser l'usage de favoris"
-#: ../../mod/menu.php:96 ../../mod/menu.php:153
+#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157
msgid "Menu may be used to store saved bookmarks"
msgstr "Le menu pourra être utilisé pour stocker des favoris"
-#: ../../mod/menu.php:97 ../../mod/menu.php:155
+#: ../../Zotlabs/Module/Menu.php:101 ../../Zotlabs/Module/Menu.php:159
msgid "Submit and proceed"
msgstr "Valider et continuer"
-#: ../../mod/menu.php:109
-msgid "Drop"
-msgstr "Supprimer"
+#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2266
+msgid "Menus"
+msgstr "Menus"
-#: ../../mod/menu.php:113
+#: ../../Zotlabs/Module/Menu.php:117
msgid "Bookmarks allowed"
msgstr "Favoris autorisés"
-#: ../../mod/menu.php:115
+#: ../../Zotlabs/Module/Menu.php:119
msgid "Delete this menu"
msgstr "Supprimer ce menu"
-#: ../../mod/menu.php:116 ../../mod/menu.php:150
+#: ../../Zotlabs/Module/Menu.php:120 ../../Zotlabs/Module/Menu.php:154
msgid "Edit menu contents"
msgstr "Modifier le contenu du menu"
-#: ../../mod/menu.php:117
+#: ../../Zotlabs/Module/Menu.php:121
msgid "Edit this menu"
msgstr "Modifier ce menu"
-#: ../../mod/menu.php:132
+#: ../../Zotlabs/Module/Menu.php:136
msgid "Menu could not be deleted."
msgstr "Impossible de supprimer le menu."
-#: ../../mod/menu.php:140 ../../mod/mitem.php:24
+#: ../../Zotlabs/Module/Menu.php:144 ../../Zotlabs/Module/Mitem.php:28
msgid "Menu not found."
msgstr "Menu introuvable."
-#: ../../mod/menu.php:145
+#: ../../Zotlabs/Module/Menu.php:149
msgid "Edit Menu"
msgstr "Modifier le menu"
-#: ../../mod/menu.php:149
+#: ../../Zotlabs/Module/Menu.php:153
msgid "Add or remove entries to this menu"
msgstr "Ajouter/supprimer des entrées à ce menu"
-#: ../../mod/menu.php:151
+#: ../../Zotlabs/Module/Menu.php:155
msgid "Menu name"
msgstr "Nom du menu"
-#: ../../mod/menu.php:151
+#: ../../Zotlabs/Module/Menu.php:155
msgid "Must be unique, only seen by you"
msgstr "Doit être unique, ne sera vu que par vous"
-#: ../../mod/menu.php:152
+#: ../../Zotlabs/Module/Menu.php:156
msgid "Menu title"
msgstr "Titre du menu"
-#: ../../mod/menu.php:152
+#: ../../Zotlabs/Module/Menu.php:156
msgid "Menu title as seen by others"
msgstr "Titre du menu tel que vu par les visiteurs"
-#: ../../mod/menu.php:153
+#: ../../Zotlabs/Module/Menu.php:157
msgid "Allow bookmarks"
msgstr "Autoriser l'usage de favoris"
-#: ../../mod/menu.php:162 ../../mod/mitem.php:116 ../../mod/xchan.php:37
+#: ../../Zotlabs/Module/Menu.php:166 ../../Zotlabs/Module/Mitem.php:120
+#: ../../Zotlabs/Module/Xchan.php:41
msgid "Not found."
msgstr "Introuvable."
-#: ../../mod/mitem.php:48
+#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:260
+#, php-format
+msgctxt "mood"
+msgid "%1$s is %2$s"
+msgstr "%1$s est %2$s"
+
+#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:225
+msgid "Mood"
+msgstr "Humeur"
+
+#: ../../Zotlabs/Module/Mood.php:136
+msgid "Set your current mood and tell your friends"
+msgstr "Indiquez votre humeur du moment à vos amis"
+
+#: ../../Zotlabs/Module/Match.php:26
+msgid "Profile Match"
+msgstr "Profils similaires"
+
+#: ../../Zotlabs/Module/Match.php:35
+msgid "No keywords to match. Please add keywords to your default profile."
+msgstr "Aucun mot-clef à comparer. Merci d'ajouter des mots-clefs à votre profil par défaut."
+
+#: ../../Zotlabs/Module/Match.php:67
+msgid "is interested in:"
+msgstr "s'intéresse à&nbsp;:"
+
+#: ../../Zotlabs/Module/Match.php:74
+msgid "No matches"
+msgstr "Pas de correspondance"
+
+#: ../../Zotlabs/Module/Network.php:96
+msgid "No such group"
+msgstr "Groupe introuvable"
+
+#: ../../Zotlabs/Module/Network.php:136
+msgid "No such channel"
+msgstr "Canal introuvable"
+
+#: ../../Zotlabs/Module/Network.php:141
+msgid "forum"
+msgstr "forum"
+
+#: ../../Zotlabs/Module/Network.php:153
+msgid "Search Results For:"
+msgstr "Résultats de recherche pour&nbsp;:"
+
+#: ../../Zotlabs/Module/Network.php:217
+msgid "Privacy group is empty"
+msgstr "Groupe d'accès vide"
+
+#: ../../Zotlabs/Module/Network.php:226
+msgid "Privacy group: "
+msgstr "Groupe d'accès&nbsp;:"
+
+#: ../../Zotlabs/Module/Network.php:252
+msgid "Invalid connection."
+msgstr "Contact non valide."
+
+#: ../../Zotlabs/Module/Notify.php:57
+#: ../../Zotlabs/Module/Notifications.php:98
+msgid "No more system notifications."
+msgstr "Pas d'autre notification du système."
+
+#: ../../Zotlabs/Module/Notify.php:61
+#: ../../Zotlabs/Module/Notifications.php:102
+msgid "System Notifications"
+msgstr "Notifications du système"
+
+#: ../../Zotlabs/Module/Mitem.php:52
msgid "Unable to create element."
msgstr "Impossible de créer l'entrée."
-#: ../../mod/mitem.php:72
+#: ../../Zotlabs/Module/Mitem.php:76
msgid "Unable to update menu element."
msgstr "Impossible de mettre à jour l'entrée de menu."
-#: ../../mod/mitem.php:88
+#: ../../Zotlabs/Module/Mitem.php:92
msgid "Unable to add menu element."
msgstr "Impossible d'ajouter l'entrée de menu."
-#: ../../mod/mitem.php:149 ../../mod/mitem.php:222
+#: ../../Zotlabs/Module/Mitem.php:153 ../../Zotlabs/Module/Mitem.php:226
msgid "Menu Item Permissions"
msgstr "Permissions de l'entrée de menu"
-#: ../../mod/mitem.php:150 ../../mod/mitem.php:223 ../../mod/settings.php:1059
+#: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:227
+#: ../../Zotlabs/Module/Settings.php:1068
msgid "(click to open/close)"
msgstr "(cliquer pour ouvrir/fermer)"
-#: ../../mod/mitem.php:152 ../../mod/mitem.php:168
+#: ../../Zotlabs/Module/Mitem.php:156 ../../Zotlabs/Module/Mitem.php:172
msgid "Link Name"
msgstr "Nom du lien"
-#: ../../mod/mitem.php:153 ../../mod/mitem.php:227
+#: ../../Zotlabs/Module/Mitem.php:157 ../../Zotlabs/Module/Mitem.php:231
msgid "Link or Submenu Target"
msgstr "Lien ou sous-menu cible"
-#: ../../mod/mitem.php:153
+#: ../../Zotlabs/Module/Mitem.php:157
msgid "Enter URL of the link or select a menu name to create a submenu"
msgstr "Entrez l'URL du lien ou sélectionnez un nom de menu pour créer un sous-menu"
-#: ../../mod/mitem.php:154 ../../mod/mitem.php:228
+#: ../../Zotlabs/Module/Mitem.php:158 ../../Zotlabs/Module/Mitem.php:232
msgid "Use magic-auth if available"
msgstr "Utiliser l'authentification distante, quand disponible"
-#: ../../mod/mitem.php:155 ../../mod/mitem.php:229
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:233
msgid "Open link in new window"
msgstr "Ouvrir le lien dans une nouvelle fenêtre"
-#: ../../mod/mitem.php:156 ../../mod/mitem.php:230
+#: ../../Zotlabs/Module/Mitem.php:160 ../../Zotlabs/Module/Mitem.php:234
msgid "Order in list"
msgstr "Ordre dans la liste"
-#: ../../mod/mitem.php:156 ../../mod/mitem.php:230
+#: ../../Zotlabs/Module/Mitem.php:160 ../../Zotlabs/Module/Mitem.php:234
msgid "Higher numbers will sink to bottom of listing"
msgstr "Les nombres les plus élevés seront au bas de la liste"
-#: ../../mod/mitem.php:157
+#: ../../Zotlabs/Module/Mitem.php:161
msgid "Submit and finish"
msgstr "Vadiler et terminer"
-#: ../../mod/mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:162
msgid "Submit and continue"
msgstr "Valider et continuer"
-#: ../../mod/mitem.php:166
+#: ../../Zotlabs/Module/Mitem.php:170
msgid "Menu:"
msgstr "Menu&nbsp;:"
-#: ../../mod/mitem.php:169
+#: ../../Zotlabs/Module/Mitem.php:173
msgid "Link Target"
msgstr "Cible du lien"
-#: ../../mod/mitem.php:172
+#: ../../Zotlabs/Module/Mitem.php:176
msgid "Edit menu"
msgstr "Modifier le menu"
-#: ../../mod/mitem.php:175
+#: ../../Zotlabs/Module/Mitem.php:179
msgid "Edit element"
msgstr "Modifier l'entrée"
-#: ../../mod/mitem.php:176
+#: ../../Zotlabs/Module/Mitem.php:180
msgid "Drop element"
msgstr "Supprimer l'entrée"
-#: ../../mod/mitem.php:177
+#: ../../Zotlabs/Module/Mitem.php:181
msgid "New element"
msgstr "Nouvelle entrée"
-#: ../../mod/mitem.php:178
+#: ../../Zotlabs/Module/Mitem.php:182
msgid "Edit this menu container"
msgstr "Éditer ce bloc de menu"
-#: ../../mod/mitem.php:179
+#: ../../Zotlabs/Module/Mitem.php:183
msgid "Add menu element"
msgstr "Ajouter une entrée au menu"
-#: ../../mod/mitem.php:180
+#: ../../Zotlabs/Module/Mitem.php:184
msgid "Delete this menu item"
msgstr "Supprimer cette entrée du menu"
-#: ../../mod/mitem.php:181
+#: ../../Zotlabs/Module/Mitem.php:185
msgid "Edit this menu item"
msgstr "Modifier cette entrée du menu"
-#: ../../mod/mitem.php:198
+#: ../../Zotlabs/Module/Mitem.php:202
msgid "Menu item not found."
msgstr "Entrée de menu introuvable."
-#: ../../mod/mitem.php:211
+#: ../../Zotlabs/Module/Mitem.php:215
msgid "Menu item deleted."
msgstr "Entrée de menu supprimée."
-#: ../../mod/mitem.php:213
+#: ../../Zotlabs/Module/Mitem.php:217
msgid "Menu item could not be deleted."
msgstr "Impossible de supprimer l'entrée de menu."
-#: ../../mod/mitem.php:220
+#: ../../Zotlabs/Module/Mitem.php:224
msgid "Edit Menu Element"
msgstr "Modifier l'entrée de menu"
-#: ../../mod/mitem.php:226
+#: ../../Zotlabs/Module/Mitem.php:230
msgid "Link text"
msgstr "Texte du lien"
-#: ../../mod/mood.php:132
-msgid "Set your current mood and tell your friends"
-msgstr "Indiquez votre humeur du moment à vos amis"
-
-#: ../../mod/network.php:91
-msgid "No such group"
-msgstr "Groupe introuvable"
-
-#: ../../mod/network.php:131
-msgid "No such channel"
-msgstr "Canal introuvable"
-
-#: ../../mod/network.php:136
-msgid "forum"
-msgstr "forum"
-
-#: ../../mod/network.php:148
-msgid "Search Results For:"
-msgstr "Résultats de recherche pour&nbsp;:"
-
-#: ../../mod/network.php:207
-msgid "Privacy group is empty"
-msgstr "Groupe d'accès vide"
-
-#: ../../mod/network.php:216
-msgid "Privacy group: "
-msgstr "Groupe d'accès&nbsp;:"
-
-#: ../../mod/network.php:242
-msgid "Invalid connection."
-msgstr "Contact non valide."
-
-#: ../../mod/new_channel.php:130
-msgid "Add a Channel"
-msgstr "Ajouter un canal"
-
-#: ../../mod/new_channel.php:131
-msgid ""
-"A channel is your own collection of related web pages. A channel can be used"
-" to hold social network profiles, blogs, conversation groups and forums, "
-"celebrity pages, and much more. You may create as many channels as your "
-"service provider allows."
-msgstr "Un canal est un ensemble de pages web reliées entre elles, sous votre contrôle. Il peut contenir des profils de réseau social, des blogs, des groupes de conversation, des forums, des pages de célébrités, et bien plus encore. Vous pouvez créer autant de canaux que votre administrateur vous y autorise."
-
-#: ../../mod/new_channel.php:133 ../../mod/register.php:246
-#: ../../mod/sources.php:103 ../../mod/sources.php:137
-msgid "Channel Name"
-msgstr "Nom du canal"
+#: ../../Zotlabs/Module/New_channel.php:128
+#: ../../Zotlabs/Module/Register.php:231
+msgid "Name or caption"
+msgstr "Nom ou libellé"
-#: ../../mod/new_channel.php:134
-msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "
-msgstr "Exemples&nbsp;: \"Bernard Martin\", \"Lisa et ses chevaux\", \"Football\", \"Groupe des amateurs de tir à l'arc\""
+#: ../../Zotlabs/Module/New_channel.php:128
+#: ../../Zotlabs/Module/Register.php:231
+msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""
+msgstr "Exemples&nbsp;: \"Jérôme Dutilleul\", \"Louise et ses chevaux\", \"Football\", \"Club d'aéromodélisme\""
-#: ../../mod/new_channel.php:135 ../../mod/register.php:248
+#: ../../Zotlabs/Module/New_channel.php:130
+#: ../../Zotlabs/Module/Register.php:233
msgid "Choose a short nickname"
msgstr "Choisissez un alias"
-#: ../../mod/new_channel.php:137 ../../mod/register.php:249
+#: ../../Zotlabs/Module/New_channel.php:130
+#: ../../Zotlabs/Module/Register.php:233
+#, php-format
msgid ""
-"Your nickname will be used to create an easily remembered channel address "
-"(like an email address) which you can share with others."
-msgstr "Cet alias sera utilisé pour créer une adresse de canal, facile à retenir - un peu comme une adresse de courriel - que vous pourrez partager avec d'autres."
-
-#: ../../mod/new_channel.php:138
-msgid "Or <a href=\"import\">import an existing channel</a> from another location"
-msgstr "Ou <a href=\"import\">importez un canal existant</a> d'un autre endroit"
+"Your nickname will be used to create an easy to remember channel address "
+"e.g. nickname%s"
+msgstr "Votre pseudo sera utilisé pour créer une adresse de canal facile à mémoriser, par ex. pseudo%s"
-#: ../../mod/new_channel.php:140 ../../mod/register.php:251
-msgid ""
-"Please choose a channel type (such as social networking or community forum) "
-"and privacy requirements so we can select the best permissions for you"
-msgstr "Veuillez choisir un type de canal (par exemple \"réseau social\" ou \"forum communautaire\") et un niveau de confidentialité afin que nous puissions choisir les meilleures autorisations pour vous"
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:235
+msgid "Channel role and privacy"
+msgstr "Rôle et confidentialité du canal"
-#: ../../mod/new_channel.php:141 ../../mod/register.php:252
-msgid "Channel Type"
-msgstr "Type de canal"
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:235
+msgid "Select a channel role with your privacy requirements."
+msgstr "Sélectionner un rôle de canal adapté à vos besoins de confidentialité."
-#: ../../mod/new_channel.php:141 ../../mod/register.php:252
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:235
msgid "Read more about roles"
msgstr "En savoir plus sur les rôles"
-#: ../../mod/notifications.php:26
-msgid "Invalid request identifier."
-msgstr "Identifiant de requête invalide."
-
-#: ../../mod/notifications.php:35
-msgid "Discard"
-msgstr "Annuler"
-
-#: ../../mod/notifications.php:94 ../../mod/notify.php:53
-msgid "No more system notifications."
-msgstr "Pas d'autre notification du système."
-
-#: ../../mod/notifications.php:98 ../../mod/notify.php:57
-msgid "System Notifications"
-msgstr "Notifications du système"
-
-#: ../../mod/oexchange.php:23
-msgid "Unable to find your hub."
-msgstr "Impossible de trouver votre hub."
-
-#: ../../mod/oexchange.php:37
-msgid "Post successful."
-msgstr "Publication réussie."
-
-#: ../../mod/openid.php:26
-msgid "OpenID protocol error. No ID returned."
-msgstr "Erreur du protocole OpenID. Pas d'ID retourné."
+#: ../../Zotlabs/Module/New_channel.php:135
+msgid "Create Channel"
+msgstr "Créer le canal"
-#: ../../mod/page.php:126
+#: ../../Zotlabs/Module/New_channel.php:136
msgid ""
-"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
-"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
-" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
-"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
-"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
-"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-
-#: ../../mod/pconfig.php:27 ../../mod/pconfig.php:60
-msgid "This setting requires special processing and editing has been blocked."
-msgstr "Ce paramètre nécessité un traitement spécial, les modifications ont été bloquées."
+"A channel is your identity on this network. It can represent a person, a "
+"blog, or a forum to name a few. Channels can make connections with other "
+"channels to share information with highly detailed permissions."
+msgstr "Un canal est votre identité sur ce réseau. Il peut représenter une personne, un blog, ou un forum par exemple. Les canaux peuvent entrer en contact les uns avec les autres pour partager des informations avec des permissions d'accès très fines."
-#: ../../mod/pconfig.php:49
-msgid "Configuration Editor"
-msgstr "Editeur de configuration"
-
-#: ../../mod/pconfig.php:50
+#: ../../Zotlabs/Module/New_channel.php:137
msgid ""
-"Warning: Changing some settings could render your channel inoperable. Please"
-" leave this page unless you are comfortable with and knowledgeable about how"
-" to correctly use this feature."
-msgstr "Attention&nbsp;:modifier certains paramètres peut rendre votre canal inutilisable. Merci d'ignorer cette page à moins d'être suffisamment à l'aise de savoir comment utiliser correctement cette fonctionnalité."
-
-#: ../../mod/pdledit.php:14
-msgid "Layout updated."
-msgstr "Mise en page mise à jour."
+"or <a href=\"import\">import an existing channel</a> from another location."
+msgstr "ou <a href=\"import\">importer un canal existant</a> d'un autre serveur."
-#: ../../mod/pdledit.php:29 ../../mod/pdledit.php:54
-msgid "Edit System Page Description"
-msgstr "Modifier la description de la page du système"
-
-#: ../../mod/pdledit.php:49
-msgid "Layout not found."
-msgstr "Mise en page introuvable."
+#: ../../Zotlabs/Module/Notifications.php:30
+msgid "Invalid request identifier."
+msgstr "Identifiant de requête invalide."
-#: ../../mod/pdledit.php:55
-msgid "Module Name:"
-msgstr "Nom du module&nbsp;:"
+#: ../../Zotlabs/Module/Notifications.php:39
+msgid "Discard"
+msgstr "Annuler"
-#: ../../mod/pdledit.php:56
-msgid "Layout Help"
-msgstr "Aide à la mise en page"
+#: ../../Zotlabs/Module/Notifications.php:103 ../../include/nav.php:191
+msgid "Mark all system notifications seen"
+msgstr "Marquer toutes les notifications système comme vues"
-#: ../../mod/photos.php:79
+#: ../../Zotlabs/Module/Photos.php:84
msgid "Page owner information could not be retrieved."
msgstr "Impossible d'obtenir des informations sur le propriétaire de la page."
-#: ../../mod/photos.php:100
+#: ../../Zotlabs/Module/Photos.php:99 ../../Zotlabs/Module/Photos.php:743
+#: ../../Zotlabs/Module/Profile_photo.php:114
+#: ../../Zotlabs/Module/Profile_photo.php:206
+#: ../../Zotlabs/Module/Profile_photo.php:294
+#: ../../include/photo/photo_driver.php:718
+msgid "Profile Photos"
+msgstr "Photos du profil"
+
+#: ../../Zotlabs/Module/Photos.php:105 ../../Zotlabs/Module/Photos.php:149
msgid "Album not found."
msgstr "Album introuvable."
-#: ../../mod/photos.php:127
+#: ../../Zotlabs/Module/Photos.php:132
msgid "Delete Album"
msgstr "Supprimer l'album"
-#: ../../mod/photos.php:171 ../../mod/photos.php:1020
+#: ../../Zotlabs/Module/Photos.php:153
+msgid ""
+"Multiple storage folders exist with this album name, but within different "
+"directories. Please remove the desired folder or folders using the Files "
+"manager"
+msgstr ""
+
+#: ../../Zotlabs/Module/Photos.php:210 ../../Zotlabs/Module/Photos.php:1053
msgid "Delete Photo"
msgstr "Supprimer la photo"
-#: ../../mod/photos.php:501
+#: ../../Zotlabs/Module/Photos.php:533
msgid "No photos selected"
msgstr "Aucune photo selectionnée"
-#: ../../mod/photos.php:550
+#: ../../Zotlabs/Module/Photos.php:582
msgid "Access to this item is restricted."
msgstr "L'accès à l'élément est restreint."
-#: ../../mod/photos.php:589
+#: ../../Zotlabs/Module/Photos.php:621
#, php-format
msgid "%1$.2f MB of %2$.2f MB photo storage used."
msgstr "Vous avez utilisé %1$.2f mégaoctets sur les %2$.2f autorisés pour le stockage des photos."
-#: ../../mod/photos.php:592
+#: ../../Zotlabs/Module/Photos.php:624
#, php-format
msgid "%1$.2f MB photo storage used."
msgstr "%1$.2f méga-octets utilisés pour le stockage des photos."
-#: ../../mod/photos.php:628
+#: ../../Zotlabs/Module/Photos.php:660
msgid "Upload Photos"
msgstr "Téléverser des photos"
-#: ../../mod/photos.php:632
+#: ../../Zotlabs/Module/Photos.php:664
msgid "Enter an album name"
msgstr "Entrer un nom d'album"
-#: ../../mod/photos.php:633
+#: ../../Zotlabs/Module/Photos.php:665
msgid "or select an existing album (doubleclick)"
msgstr "ou sélectionner un album existant (double-clic)"
-#: ../../mod/photos.php:634
+#: ../../Zotlabs/Module/Photos.php:666
msgid "Create a status post for this upload"
msgstr "Créer une publication de statut pour cet envoi"
-#: ../../mod/photos.php:635
+#: ../../Zotlabs/Module/Photos.php:667
msgid "Caption (optional):"
msgstr "Légende (facultative)"
-#: ../../mod/photos.php:636
+#: ../../Zotlabs/Module/Photos.php:668
msgid "Description (optional):"
msgstr "Description (facultative)"
-#: ../../mod/photos.php:663
+#: ../../Zotlabs/Module/Photos.php:695
msgid "Album name could not be decoded"
msgstr "Le nom de l'Album n'a pu être décodé"
-#: ../../mod/photos.php:711 ../../mod/photos.php:1250
-#: ../../mod/photos.php:1267
+#: ../../Zotlabs/Module/Photos.php:743
msgid "Contact Photos"
msgstr "Photos de contact"
-#: ../../mod/photos.php:734
+#: ../../Zotlabs/Module/Photos.php:766
msgid "Show Newest First"
msgstr "Les plus récent(e)s en premier"
-#: ../../mod/photos.php:736
+#: ../../Zotlabs/Module/Photos.php:768
msgid "Show Oldest First"
msgstr "Les moins récent(e)s en premier"
-#: ../../mod/photos.php:838
+#: ../../Zotlabs/Module/Photos.php:792 ../../Zotlabs/Module/Photos.php:1331
+#: ../../include/widgets.php:1499
+msgid "View Photo"
+msgstr "Voir la photo"
+
+#: ../../Zotlabs/Module/Photos.php:823 ../../include/widgets.php:1516
+msgid "Edit Album"
+msgstr "Modifier l'album"
+
+#: ../../Zotlabs/Module/Photos.php:870
msgid "Permission denied. Access to this item may be restricted."
msgstr "Permission refusée. L'accès à cet élément peut avoir été restreint."
-#: ../../mod/photos.php:840
+#: ../../Zotlabs/Module/Photos.php:872
msgid "Photo not available"
msgstr "Photo non disponible"
-#: ../../mod/photos.php:898
+#: ../../Zotlabs/Module/Photos.php:930
msgid "Use as profile photo"
msgstr "Utiliser comme photo du profil"
-#: ../../mod/photos.php:905
+#: ../../Zotlabs/Module/Photos.php:931
+msgid "Use as cover photo"
+msgstr ""
+
+#: ../../Zotlabs/Module/Photos.php:938
msgid "Private Photo"
msgstr "Photo privée"
-#: ../../mod/photos.php:920
+#: ../../Zotlabs/Module/Photos.php:953
msgid "View Full Size"
msgstr "Voir en taille réelle"
-#: ../../mod/photos.php:965 ../../mod/tagrm.php:133
+#: ../../Zotlabs/Module/Photos.php:998 ../../Zotlabs/Module/Admin.php:1437
+#: ../../Zotlabs/Module/Tagrm.php:137
msgid "Remove"
msgstr "Retirer"
-#: ../../mod/photos.php:999
+#: ../../Zotlabs/Module/Photos.php:1032
msgid "Edit photo"
msgstr "Modifier la photo"
-#: ../../mod/photos.php:1001
+#: ../../Zotlabs/Module/Photos.php:1034
msgid "Rotate CW (right)"
msgstr "Rotation horaire (droite)"
-#: ../../mod/photos.php:1002
+#: ../../Zotlabs/Module/Photos.php:1035
msgid "Rotate CCW (left)"
msgstr "Rotation anti-horaire (gauche)"
-#: ../../mod/photos.php:1005
+#: ../../Zotlabs/Module/Photos.php:1038
msgid "Enter a new album name"
msgstr "Entrer un nouveau nom d'album"
-#: ../../mod/photos.php:1006
+#: ../../Zotlabs/Module/Photos.php:1039
msgid "or select an existing one (doubleclick)"
msgstr "ou en sélectionner un existant (double-clic)"
-#: ../../mod/photos.php:1009
+#: ../../Zotlabs/Module/Photos.php:1042
msgid "Caption"
msgstr "Titre/légende"
-#: ../../mod/photos.php:1011
+#: ../../Zotlabs/Module/Photos.php:1044
msgid "Add a Tag"
msgstr "Ajouter une étiquette"
-#: ../../mod/photos.php:1015
+#: ../../Zotlabs/Module/Photos.php:1048
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
msgstr "Exemple&nbsp;: @marc, @Barbara_Jensen, @charles@exemple.com, #Ile_de_France, #marathon"
-#: ../../mod/photos.php:1018
+#: ../../Zotlabs/Module/Photos.php:1051
msgid "Flag as adult in album view"
msgstr "Marquer comme \"adulte\" dans l'affichage de l'album"
-#: ../../mod/photos.php:1210
+#: ../../Zotlabs/Module/Photos.php:1070 ../../Zotlabs/Lib/ThreadItem.php:261
+msgid "I like this (toggle)"
+msgstr "J'aime (oui/non)"
+
+#: ../../Zotlabs/Module/Photos.php:1071 ../../Zotlabs/Lib/ThreadItem.php:262
+msgid "I don't like this (toggle)"
+msgstr "Je n'aime pas (oui/non)"
+
+#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:397
+#: ../../include/conversation.php:740
+msgid "Please wait"
+msgstr "Merci de patienter"
+
+#: ../../Zotlabs/Module/Photos.php:1089 ../../Zotlabs/Module/Photos.php:1207
+#: ../../Zotlabs/Lib/ThreadItem.php:707
+msgid "This is you"
+msgstr "C'est vous"
+
+#: ../../Zotlabs/Module/Photos.php:1091 ../../Zotlabs/Module/Photos.php:1209
+#: ../../Zotlabs/Lib/ThreadItem.php:709 ../../include/js_strings.php:6
+msgid "Comment"
+msgstr "Commenter"
+
+#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574
+msgctxt "title"
+msgid "Likes"
+msgstr "Aime"
+
+#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574
+msgctxt "title"
+msgid "Dislikes"
+msgstr "N'aime pas"
+
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
+msgctxt "title"
+msgid "Agree"
+msgstr "D'accord"
+
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
+msgctxt "title"
+msgid "Disagree"
+msgstr "Pas d'accord"
+
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
+msgctxt "title"
+msgid "Abstain"
+msgstr "Abstention"
+
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
+msgctxt "title"
+msgid "Attending"
+msgstr "Participations"
+
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
+msgctxt "title"
+msgid "Not attending"
+msgstr "Non-participations"
+
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
+msgctxt "title"
+msgid "Might attend"
+msgstr "Participation possible"
+
+#: ../../Zotlabs/Module/Photos.php:1126 ../../Zotlabs/Module/Photos.php:1138
+#: ../../Zotlabs/Lib/ThreadItem.php:181 ../../Zotlabs/Lib/ThreadItem.php:193
+#: ../../include/conversation.php:1717
+msgid "View all"
+msgstr "Voir tout"
+
+#: ../../Zotlabs/Module/Photos.php:1130 ../../Zotlabs/Lib/ThreadItem.php:185
+#: ../../include/taxonomy.php:403 ../../include/conversation.php:1741
+#: ../../include/channel.php:1158
+msgctxt "noun"
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] "Aime"
+msgstr[1] "Aime"
+
+#: ../../Zotlabs/Module/Photos.php:1135 ../../Zotlabs/Lib/ThreadItem.php:190
+#: ../../include/conversation.php:1744
+msgctxt "noun"
+msgid "Dislike"
+msgid_plural "Dislikes"
+msgstr[0] "N'aime pas"
+msgstr[1] "N'aime pas"
+
+#: ../../Zotlabs/Module/Photos.php:1235
+msgid "Photo Tools"
+msgstr ""
+
+#: ../../Zotlabs/Module/Photos.php:1244
msgid "In This Photo:"
msgstr "Dans cette photo&nbsp;:"
-#: ../../mod/photos.php:1215
+#: ../../Zotlabs/Module/Photos.php:1249
msgid "Map"
msgstr "Carte"
-#: ../../mod/photos.php:1306
+#: ../../Zotlabs/Module/Photos.php:1257 ../../Zotlabs/Lib/ThreadItem.php:386
+msgctxt "noun"
+msgid "Likes"
+msgstr "Aime"
+
+#: ../../Zotlabs/Module/Photos.php:1258 ../../Zotlabs/Lib/ThreadItem.php:387
+msgctxt "noun"
+msgid "Dislikes"
+msgstr "N'aime pas"
+
+#: ../../Zotlabs/Module/Photos.php:1263 ../../Zotlabs/Lib/ThreadItem.php:392
+#: ../../include/acl_selectors.php:285
+msgid "Close"
+msgstr "Fermer"
+
+#: ../../Zotlabs/Module/Photos.php:1337
msgid "View Album"
msgstr "Voir l'album"
-#: ../../mod/photos.php:1317 ../../mod/photos.php:1330
-#: ../../mod/photos.php:1331
+#: ../../Zotlabs/Module/Photos.php:1348 ../../Zotlabs/Module/Photos.php:1361
+#: ../../Zotlabs/Module/Photos.php:1362
msgid "Recent Photos"
msgstr "Photos récentes"
-#: ../../mod/admin.php:54
+#: ../../Zotlabs/Module/Ping.php:265
+msgid "sent you a private message"
+msgstr "vous a envoyé un message privé"
+
+#: ../../Zotlabs/Module/Ping.php:313
+msgid "added your channel"
+msgstr "a ajouté votre canal"
+
+#: ../../Zotlabs/Module/Ping.php:323
+msgid "g A l F d"
+msgstr "g A l F d"
+
+#: ../../Zotlabs/Module/Ping.php:346
+msgid "[today]"
+msgstr "[aujourd'hui]"
+
+#: ../../Zotlabs/Module/Ping.php:355
+msgid "posted an event"
+msgstr "a publié un événement"
+
+#: ../../Zotlabs/Module/Oexchange.php:27
+msgid "Unable to find your hub."
+msgstr "Impossible de trouver votre hub."
+
+#: ../../Zotlabs/Module/Oexchange.php:41
+msgid "Post successful."
+msgstr "Publication réussie."
+
+#: ../../Zotlabs/Module/Openid.php:30
+msgid "OpenID protocol error. No ID returned."
+msgstr "Erreur du protocole OpenID. Pas d'ID retourné."
+
+#: ../../Zotlabs/Module/Openid.php:193 ../../include/auth.php:226
+msgid "Login failed."
+msgstr "Échec de la connexion."
+
+#: ../../Zotlabs/Module/Page.php:133
+msgid ""
+"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
+"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
+" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
+"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
+"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
+"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+
+#: ../../Zotlabs/Module/Pconfig.php:26 ../../Zotlabs/Module/Pconfig.php:59
+msgid "This setting requires special processing and editing has been blocked."
+msgstr "Ce paramètre nécessité un traitement spécial, les modifications ont été bloquées."
+
+#: ../../Zotlabs/Module/Pconfig.php:48
+msgid "Configuration Editor"
+msgstr "Editeur de configuration"
+
+#: ../../Zotlabs/Module/Pconfig.php:49
+msgid ""
+"Warning: Changing some settings could render your channel inoperable. Please"
+" leave this page unless you are comfortable with and knowledgeable about how"
+" to correctly use this feature."
+msgstr "Attention&nbsp;:modifier certains paramètres peut rendre votre canal inutilisable. Merci d'ignorer cette page à moins d'être suffisamment à l'aise de savoir comment utiliser correctement cette fonctionnalité."
+
+#: ../../Zotlabs/Module/Pdledit.php:18
+msgid "Layout updated."
+msgstr "Mise en page mise à jour."
+
+#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Pdledit.php:61
+msgid "Edit System Page Description"
+msgstr "Modifier la description de la page du système"
+
+#: ../../Zotlabs/Module/Pdledit.php:56
+msgid "Layout not found."
+msgstr "Mise en page introuvable."
+
+#: ../../Zotlabs/Module/Pdledit.php:62
+msgid "Module Name:"
+msgstr "Nom du module&nbsp;:"
+
+#: ../../Zotlabs/Module/Pdledit.php:63
+msgid "Layout Help"
+msgstr "Aide à la mise en page"
+
+#: ../../Zotlabs/Module/Poke.php:168 ../../Zotlabs/Lib/Apps.php:226
+#: ../../include/conversation.php:960
+msgid "Poke"
+msgstr "Tapoter"
+
+#: ../../Zotlabs/Module/Poke.php:169
+msgid "Poke somebody"
+msgstr "Taquiner quelqu'un"
+
+#: ../../Zotlabs/Module/Poke.php:172
+msgid "Poke/Prod"
+msgstr "Tapoter/Encourager"
+
+#: ../../Zotlabs/Module/Poke.php:173
+msgid "Poke, prod or do other things to somebody"
+msgstr "Taquiner, pousser ou faire autre chose à quelqu'un"
+
+#: ../../Zotlabs/Module/Poke.php:180
+msgid "Recipient"
+msgstr "Destinataire"
+
+#: ../../Zotlabs/Module/Poke.php:181
+msgid "Choose what you wish to do to recipient"
+msgstr "Choisir ce que vous voulez faire au destinataire"
+
+#: ../../Zotlabs/Module/Poke.php:184 ../../Zotlabs/Module/Poke.php:185
+msgid "Make this post private"
+msgstr "Rendre cette publication privée"
+
+#: ../../Zotlabs/Module/Probe.php:30 ../../Zotlabs/Module/Probe.php:34
+#, php-format
+msgid "Fetching URL returns error: %1$s"
+msgstr "Récupération d'URL échouée&nbsp;: %1$s"
+
+#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:189
+#: ../../Zotlabs/Module/Profiles.php:246 ../../Zotlabs/Module/Profiles.php:625
+msgid "Profile not found."
+msgstr "Profil introuvable."
+
+#: ../../Zotlabs/Module/Profiles.php:44
+msgid "Profile deleted."
+msgstr "Profil supprimé."
+
+#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:104
+msgid "Profile-"
+msgstr "Profil-"
+
+#: ../../Zotlabs/Module/Profiles.php:89 ../../Zotlabs/Module/Profiles.php:132
+msgid "New profile created."
+msgstr "Nouveau profil créé."
+
+#: ../../Zotlabs/Module/Profiles.php:110
+msgid "Profile unavailable to clone."
+msgstr "Profil impossible à cloner."
+
+#: ../../Zotlabs/Module/Profiles.php:151
+msgid "Profile unavailable to export."
+msgstr "Impossible d'exporter le profil."
+
+#: ../../Zotlabs/Module/Profiles.php:256
+msgid "Profile Name is required."
+msgstr "Le nom du profil est obligatoire."
+
+#: ../../Zotlabs/Module/Profiles.php:427
+msgid "Marital Status"
+msgstr "Statut marital"
+
+#: ../../Zotlabs/Module/Profiles.php:431
+msgid "Romantic Partner"
+msgstr "Partenaire amoureux"
+
+#: ../../Zotlabs/Module/Profiles.php:435 ../../Zotlabs/Module/Profiles.php:736
+msgid "Likes"
+msgstr "Aime"
+
+#: ../../Zotlabs/Module/Profiles.php:439 ../../Zotlabs/Module/Profiles.php:737
+msgid "Dislikes"
+msgstr "N'aime pas"
+
+#: ../../Zotlabs/Module/Profiles.php:443 ../../Zotlabs/Module/Profiles.php:744
+msgid "Work/Employment"
+msgstr "Travail/Occupation"
+
+#: ../../Zotlabs/Module/Profiles.php:446
+msgid "Religion"
+msgstr "Religion/Croyance"
+
+#: ../../Zotlabs/Module/Profiles.php:450
+msgid "Political Views"
+msgstr "Opinions politiques"
+
+#: ../../Zotlabs/Module/Profiles.php:458
+msgid "Sexual Preference"
+msgstr "Préférences sexuelle"
+
+#: ../../Zotlabs/Module/Profiles.php:462
+msgid "Homepage"
+msgstr "Site Internet"
+
+#: ../../Zotlabs/Module/Profiles.php:466
+msgid "Interests"
+msgstr "Centres d'intérêt"
+
+#: ../../Zotlabs/Module/Profiles.php:560
+msgid "Profile updated."
+msgstr "Profil mis à jour."
+
+#: ../../Zotlabs/Module/Profiles.php:644
+msgid "Hide your connections list from viewers of this profile"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:686
+msgid "Edit Profile Details"
+msgstr "Modifier les détails du profil"
+
+#: ../../Zotlabs/Module/Profiles.php:688
+msgid "View this profile"
+msgstr "Voir ce profil"
+
+#: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:771
+#: ../../include/channel.php:959
+msgid "Edit visibility"
+msgstr "Changer la visibilité"
+
+#: ../../Zotlabs/Module/Profiles.php:690
+msgid "Profile Tools"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:691
+msgid "Change cover photo"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:692 ../../include/channel.php:930
+msgid "Change profile photo"
+msgstr "Changer la photo du profil"
+
+#: ../../Zotlabs/Module/Profiles.php:693
+msgid "Create a new profile using these settings"
+msgstr "Créer un nouveau profil avec ces paramètres"
+
+#: ../../Zotlabs/Module/Profiles.php:694
+msgid "Clone this profile"
+msgstr "Cloner ce profil"
+
+#: ../../Zotlabs/Module/Profiles.php:695
+msgid "Delete this profile"
+msgstr "Supprimer ce profil"
+
+#: ../../Zotlabs/Module/Profiles.php:696
+msgid "Add profile things"
+msgstr "Ajouter des éléments de profil"
+
+#: ../../Zotlabs/Module/Profiles.php:697 ../../include/widgets.php:105
+#: ../../include/conversation.php:1526
+msgid "Personal"
+msgstr "Me concernant"
+
+#: ../../Zotlabs/Module/Profiles.php:699
+msgid "Relation"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:700 ../../include/datetime.php:48
+msgid "Miscellaneous"
+msgstr "Divers"
+
+#: ../../Zotlabs/Module/Profiles.php:702
+msgid "Import profile from file"
+msgstr "Importer le profil à partir d'un fichier"
+
+#: ../../Zotlabs/Module/Profiles.php:703
+msgid "Export profile to file"
+msgstr "Exporter le profil vers un fichier."
+
+#: ../../Zotlabs/Module/Profiles.php:704
+msgid "Your gender"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:705
+msgid "Marital status"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:706
+msgid "Sexual preference"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:709
+msgid "Profile name"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:711
+msgid "This is your default profile."
+msgstr "Ceci est votre profil par défaut."
+
+#: ../../Zotlabs/Module/Profiles.php:713
+msgid "Your full name"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:714
+msgid "Title/Description"
+msgstr "Titre/description"
+
+#: ../../Zotlabs/Module/Profiles.php:717
+msgid "Street address"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:718
+msgid "Locality/City"
+msgstr "Ville"
+
+#: ../../Zotlabs/Module/Profiles.php:719
+msgid "Region/State"
+msgstr "Région"
+
+#: ../../Zotlabs/Module/Profiles.php:720
+msgid "Postal/Zip code"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:721
+msgid "Country"
+msgstr "Pays"
+
+#: ../../Zotlabs/Module/Profiles.php:726
+msgid "Who (if applicable)"
+msgstr "Qui (si applicable)"
+
+#: ../../Zotlabs/Module/Profiles.php:726
+msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
+msgstr "Exemples&nbsp;: marie123, Marie Deschamps, marie@exemple.com"
+
+#: ../../Zotlabs/Module/Profiles.php:727
+msgid "Since (date)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:730
+msgid "Tell us about yourself"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:732
+msgid "Hometown"
+msgstr "Ville de naissance"
+
+#: ../../Zotlabs/Module/Profiles.php:733
+msgid "Political views"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:734
+msgid "Religious views"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:735
+msgid "Keywords used in directory listings"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:735
+msgid "Example: fishing photography software"
+msgstr "Exemple&nbsp;: escrime photographie modélisme"
+
+#: ../../Zotlabs/Module/Profiles.php:738
+msgid "Musical interests"
+msgstr "Goûts musicaux"
+
+#: ../../Zotlabs/Module/Profiles.php:739
+msgid "Books, literature"
+msgstr "Livres, littérature"
+
+#: ../../Zotlabs/Module/Profiles.php:740
+msgid "Television"
+msgstr "Télévision"
+
+#: ../../Zotlabs/Module/Profiles.php:741
+msgid "Film/Dance/Culture/Entertainment"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:742
+msgid "Hobbies/Interests"
+msgstr "Loisirs/Centres d'intêret"
+
+#: ../../Zotlabs/Module/Profiles.php:743
+msgid "Love/Romance"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:745
+msgid "School/Education"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:746
+msgid "Contact information and social networks"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:747
+msgid "My other channels"
+msgstr "Mes autres canaux"
+
+#: ../../Zotlabs/Module/Profiles.php:767 ../../include/channel.php:955
+msgid "Profile Image"
+msgstr "Image du profil"
+
+#: ../../Zotlabs/Module/Profiles.php:777 ../../include/nav.php:88
+#: ../../include/channel.php:937
+msgid "Edit Profiles"
+msgstr "Modifier les profils"
+
+#: ../../Zotlabs/Module/Profile_photo.php:179
+msgid ""
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Shift-rechargez votre page, ou videz le cache du navigateur si la photo ne s'affiche pas immédiatement."
+
+#: ../../Zotlabs/Module/Profile_photo.php:367
+msgid "Upload Profile Photo"
+msgstr "Téléverser une photo de profil"
+
+#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63
+msgid "Invalid profile identifier."
+msgstr "Identifiant de profil invalide."
+
+#: ../../Zotlabs/Module/Profperm.php:115
+msgid "Profile Visibility Editor"
+msgstr "Éditeur de visibilité de profil"
+
+#: ../../Zotlabs/Module/Profperm.php:117 ../../include/channel.php:1249
+msgid "Profile"
+msgstr "Profil"
+
+#: ../../Zotlabs/Module/Profperm.php:119
+msgid "Click on a contact to add or remove."
+msgstr "Cliquer sur un contact pour l'ajouter ou le retirer."
+
+#: ../../Zotlabs/Module/Profperm.php:128
+msgid "Visible To"
+msgstr "Visible par"
+
+#: ../../Zotlabs/Module/Pubsites.php:22 ../../include/widgets.php:1270
+msgid "Public Hubs"
+msgstr "Instances publiques"
+
+#: ../../Zotlabs/Module/Pubsites.php:25
+msgid ""
+"The listed hubs allow public registration for the $Projectname network. All "
+"hubs in the network are interlinked so membership on any of them conveys "
+"membership in the network as a whole. Some hubs may require subscription or "
+"provide tiered service plans. The hub itself <strong>may</strong> provide "
+"additional details."
+msgstr "Les sites listés permettent l'enregistrement public de comptes pour le réseau $Projectname. Tous les sites du réseau sont reliés entre eux, être membre d'un site revient à être membre de tous. Certains sites peuvent demander une souscription ou proposer différents niveaux de service. Chaque site <strong>peut</strong> fournir des détails supplémentaires."
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Hub URL"
+msgstr "URL du site"
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Access Type"
+msgstr "Type d'accès"
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Registration Policy"
+msgstr "Politique d'inscription"
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Stats"
+msgstr ""
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Software"
+msgstr ""
+
+#: ../../Zotlabs/Module/Pubsites.php:31 ../../Zotlabs/Module/Ratings.php:103
+#: ../../include/conversation.php:959
+msgid "Ratings"
+msgstr "Evaluations"
+
+#: ../../Zotlabs/Module/Pubsites.php:38
+msgid "Rate"
+msgstr "Evaluer"
+
+#: ../../Zotlabs/Module/Rate.php:160
+msgid "Website:"
+msgstr "Site web&nbsp;:"
+
+#: ../../Zotlabs/Module/Rate.php:163
+#, php-format
+msgid "Remote Channel [%s] (not yet known on this site)"
+msgstr "Canal distant [%s] (encore inconnu sur ce site)"
+
+#: ../../Zotlabs/Module/Rate.php:164
+msgid "Rating (this information is public)"
+msgstr "Evaluation (cette information est publique)"
+
+#: ../../Zotlabs/Module/Rate.php:165
+msgid "Optionally explain your rating (this information is public)"
+msgstr "Explication facultative de votre évaluation (cette information est publique)"
+
+#: ../../Zotlabs/Module/Ratings.php:73
+msgid "No ratings"
+msgstr "Pas de note"
+
+#: ../../Zotlabs/Module/Ratings.php:104
+msgid "Rating: "
+msgstr "Evaluation&nbsp:"
+
+#: ../../Zotlabs/Module/Ratings.php:105
+msgid "Website: "
+msgstr "Site web&nbsp;:"
+
+#: ../../Zotlabs/Module/Ratings.php:107
+msgid "Description: "
+msgstr "Description&nbsp;:"
+
+#: ../../Zotlabs/Module/Admin.php:77
msgid "Theme settings updated."
msgstr "Paramètres du thème mis à jour."
-#: ../../mod/admin.php:174
+#: ../../Zotlabs/Module/Admin.php:197
msgid "# Accounts"
msgstr "# Comptes"
-#: ../../mod/admin.php:175
+#: ../../Zotlabs/Module/Admin.php:198
msgid "# blocked accounts"
msgstr "# comptes bloqués"
-#: ../../mod/admin.php:176
+#: ../../Zotlabs/Module/Admin.php:199
msgid "# expired accounts"
msgstr "# comptes expirés"
-#: ../../mod/admin.php:177
+#: ../../Zotlabs/Module/Admin.php:200
msgid "# expiring accounts"
msgstr "# comptes expirant"
-#: ../../mod/admin.php:188
+#: ../../Zotlabs/Module/Admin.php:211
msgid "# Channels"
msgstr "# Canaux"
-#: ../../mod/admin.php:189
+#: ../../Zotlabs/Module/Admin.php:212
msgid "# primary"
msgstr "# primaire"
-#: ../../mod/admin.php:190
+#: ../../Zotlabs/Module/Admin.php:213
msgid "# clones"
msgstr "# clones"
-#: ../../mod/admin.php:196
+#: ../../Zotlabs/Module/Admin.php:219
msgid "Message queues"
msgstr "File des messages"
-#: ../../mod/admin.php:212 ../../mod/admin.php:455 ../../mod/admin.php:669
-#: ../../mod/admin.php:709 ../../mod/admin.php:984 ../../mod/admin.php:1148
-#: ../../mod/admin.php:1263 ../../mod/admin.php:1324 ../../mod/admin.php:1485
-#: ../../mod/admin.php:1519 ../../mod/admin.php:1604
+#: ../../Zotlabs/Module/Admin.php:236
+msgid "Your software should be updated"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:241 ../../Zotlabs/Module/Admin.php:490
+#: ../../Zotlabs/Module/Admin.php:711 ../../Zotlabs/Module/Admin.php:755
+#: ../../Zotlabs/Module/Admin.php:1030 ../../Zotlabs/Module/Admin.php:1209
+#: ../../Zotlabs/Module/Admin.php:1329 ../../Zotlabs/Module/Admin.php:1419
+#: ../../Zotlabs/Module/Admin.php:1612 ../../Zotlabs/Module/Admin.php:1646
+#: ../../Zotlabs/Module/Admin.php:1731
msgid "Administration"
msgstr "Administration"
-#: ../../mod/admin.php:213
+#: ../../Zotlabs/Module/Admin.php:242
msgid "Summary"
msgstr "Résumé"
-#: ../../mod/admin.php:216
+#: ../../Zotlabs/Module/Admin.php:245
msgid "Registered accounts"
msgstr "Comptes enregistrés"
-#: ../../mod/admin.php:217 ../../mod/admin.php:673
+#: ../../Zotlabs/Module/Admin.php:246 ../../Zotlabs/Module/Admin.php:715
msgid "Pending registrations"
msgstr "Inscriptions en attente"
-#: ../../mod/admin.php:218
+#: ../../Zotlabs/Module/Admin.php:247
msgid "Registered channels"
msgstr "Canaux enregistrés"
-#: ../../mod/admin.php:219 ../../mod/admin.php:674
+#: ../../Zotlabs/Module/Admin.php:248 ../../Zotlabs/Module/Admin.php:716
msgid "Active plugins"
msgstr "Greffons actifs"
-#: ../../mod/admin.php:220
+#: ../../Zotlabs/Module/Admin.php:249
msgid "Version"
msgstr "Version"
-#: ../../mod/admin.php:339
+#: ../../Zotlabs/Module/Admin.php:250
+msgid "Repository version (master)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:251
+msgid "Repository version (dev)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:373
msgid "Site settings updated."
msgstr "Paramètres du site sauvegardés."
-#: ../../mod/admin.php:376 ../../mod/settings.php:793
+#: ../../Zotlabs/Module/Admin.php:400 ../../include/text.php:2841
+msgid "Default"
+msgstr "Défaut"
+
+#: ../../Zotlabs/Module/Admin.php:410 ../../Zotlabs/Module/Settings.php:798
msgid "mobile"
msgstr "mobile"
-#: ../../mod/admin.php:378
+#: ../../Zotlabs/Module/Admin.php:412
msgid "experimental"
msgstr "expérimental"
-#: ../../mod/admin.php:380
+#: ../../Zotlabs/Module/Admin.php:414
msgid "unsupported"
msgstr "non maintenu"
-#: ../../mod/admin.php:426
+#: ../../Zotlabs/Module/Admin.php:460
msgid "Yes - with approval"
msgstr "Oui - avec approbation"
-#: ../../mod/admin.php:432
+#: ../../Zotlabs/Module/Admin.php:466
msgid "My site is not a public server"
msgstr "Mon site n'est pas un serveur public"
-#: ../../mod/admin.php:433
+#: ../../Zotlabs/Module/Admin.php:467
msgid "My site has paid access only"
msgstr "Mon site est à accès payant uniquement"
-#: ../../mod/admin.php:434
+#: ../../Zotlabs/Module/Admin.php:468
msgid "My site has free access only"
msgstr "Mon site est gratuit uniquement"
-#: ../../mod/admin.php:435
+#: ../../Zotlabs/Module/Admin.php:469
msgid "My site offers free accounts with optional paid upgrades"
msgstr "Mon site offre des comptes gratuits avec des améliorations payantes facultatives"
-#: ../../mod/admin.php:458 ../../mod/register.php:237
+#: ../../Zotlabs/Module/Admin.php:491 ../../include/widgets.php:1382
+msgid "Site"
+msgstr "Site"
+
+#: ../../Zotlabs/Module/Admin.php:493 ../../Zotlabs/Module/Register.php:245
msgid "Registration"
msgstr "Inscription"
-#: ../../mod/admin.php:459
+#: ../../Zotlabs/Module/Admin.php:494
msgid "File upload"
msgstr "Envoi de fichier"
-#: ../../mod/admin.php:460
+#: ../../Zotlabs/Module/Admin.php:495
msgid "Policies"
msgstr "Stratégies"
-#: ../../mod/admin.php:465
+#: ../../Zotlabs/Module/Admin.php:496 ../../include/contact_widgets.php:16
+msgid "Advanced"
+msgstr "Avancé"
+
+#: ../../Zotlabs/Module/Admin.php:500
msgid "Site name"
msgstr "Nom du site"
-#: ../../mod/admin.php:466
+#: ../../Zotlabs/Module/Admin.php:501
msgid "Banner/Logo"
msgstr "Bannière/logo"
-#: ../../mod/admin.php:467
+#: ../../Zotlabs/Module/Admin.php:502
msgid "Administrator Information"
msgstr "Informations de l'administrateur"
-#: ../../mod/admin.php:467
+#: ../../Zotlabs/Module/Admin.php:502
msgid ""
"Contact information for site administrators. Displayed on siteinfo page. "
"BBCode can be used here"
msgstr "Coordonnées de l'administrateur du site. Affichées sur la page 'siteinfo'. Vous pouvez utiliser du BBCode ici"
-#: ../../mod/admin.php:468
+#: ../../Zotlabs/Module/Admin.php:503
msgid "System language"
msgstr "Langue du système"
-#: ../../mod/admin.php:469
+#: ../../Zotlabs/Module/Admin.php:504
msgid "System theme"
msgstr "Thème du système"
-#: ../../mod/admin.php:469
+#: ../../Zotlabs/Module/Admin.php:504
msgid ""
"Default system theme - may be over-ridden by user profiles - <a href='#' "
"id='cnftheme'>change theme settings</a>"
msgstr "Thème par défaut - il peut être changé pour chaque profil utilisateur - <a href='#' id='cnftheme'>modifier le thème</a>"
-#: ../../mod/admin.php:470
+#: ../../Zotlabs/Module/Admin.php:505
msgid "Mobile system theme"
msgstr "Thème par défaut pour les mobiles"
-#: ../../mod/admin.php:470
+#: ../../Zotlabs/Module/Admin.php:505
msgid "Theme for mobile devices"
msgstr "Thème pour les mobiles"
-#: ../../mod/admin.php:472
+#: ../../Zotlabs/Module/Admin.php:507
msgid "Allow Feeds as Connections"
msgstr "Autoriser les Flux (RSS) comme contacts"
-#: ../../mod/admin.php:472
+#: ../../Zotlabs/Module/Admin.php:507
msgid "(Heavy system resource usage)"
msgstr "(Impact important sur les ressources)"
-#: ../../mod/admin.php:473
+#: ../../Zotlabs/Module/Admin.php:508
msgid "Maximum image size"
msgstr "Taille maximale des images"
-#: ../../mod/admin.php:473
+#: ../../Zotlabs/Module/Admin.php:508
msgid ""
"Maximum size in bytes of uploaded images. Default is 0, which means no "
"limits."
msgstr "Taille maximum, en octets, des images envoyées. Par défaut 0, soit sans limite."
-#: ../../mod/admin.php:474
+#: ../../Zotlabs/Module/Admin.php:509
msgid "Does this site allow new member registration?"
msgstr "Est-ce que l'enregistrement de nouveaux membres est autorisé sur ce site&nbsp;?"
-#: ../../mod/admin.php:475
+#: ../../Zotlabs/Module/Admin.php:510
msgid "Invitation only"
msgstr "Sur invitation seulement"
-#: ../../mod/admin.php:475
+#: ../../Zotlabs/Module/Admin.php:510
msgid ""
"Only allow new member registrations with an invitation code. Above register "
"policy must be set to Yes."
msgstr "N'autoriser que les nouvelles inscriptions avec code d'invitation. La stratégie d'inscription ci-dessus doit être mise sur \"Oui\"."
-#: ../../mod/admin.php:476
+#: ../../Zotlabs/Module/Admin.php:511
msgid "Which best describes the types of account offered by this hub?"
msgstr "Quelle est la meilleure description des types de comptes proposés sur ce hub&nbsp;?"
-#: ../../mod/admin.php:477
+#: ../../Zotlabs/Module/Admin.php:512
msgid "Register text"
msgstr "Texte d'inscription"
-#: ../../mod/admin.php:477
+#: ../../Zotlabs/Module/Admin.php:512
msgid "Will be displayed prominently on the registration page."
msgstr "Sera affiché de manière bien visible sur le formulaire d'inscription."
-#: ../../mod/admin.php:478
+#: ../../Zotlabs/Module/Admin.php:513
msgid "Site homepage to show visitors (default: login box)"
msgstr "Page d'accueil du site à montrer aux visiteurs (par défaut&nbsp;:boîte de dialogue de connexion)"
-#: ../../mod/admin.php:478
+#: ../../Zotlabs/Module/Admin.php:513
msgid ""
"example: 'public' to show public stream, 'page/sys/home' to show a system "
"webpage called 'home' or 'include:home.html' to include a file."
msgstr "exemple&nbsp;:'public' pour montrer le flux public, 'page/sys/home' pour montrer une page système appelée 'home' ou 'include:home.html' pour inclure un fichier."
-#: ../../mod/admin.php:479
+#: ../../Zotlabs/Module/Admin.php:514
msgid "Preserve site homepage URL"
msgstr "Préserver l'adresse d'accueil du site"
-#: ../../mod/admin.php:479
+#: ../../Zotlabs/Module/Admin.php:514
msgid ""
"Present the site homepage in a frame at the original location instead of "
"redirecting"
msgstr "Présenter la page d'accueil du site dans un cadre à l'adresse d'origine, plutôt que de rediriger"
-#: ../../mod/admin.php:480
+#: ../../Zotlabs/Module/Admin.php:515
msgid "Accounts abandoned after x days"
msgstr "Les comptes sont abandonnés après x jours"
-#: ../../mod/admin.php:480
+#: ../../Zotlabs/Module/Admin.php:515
msgid ""
"Will not waste system resources polling external sites for abandonded "
"accounts. Enter 0 for no time limit."
msgstr "Eviter de gaspiller les ressources du système en interrogeant des hubs distants pour des canaux abandonnés. Mettez 0 pour ne pas avoir de limite de temps."
-#: ../../mod/admin.php:481
+#: ../../Zotlabs/Module/Admin.php:516
msgid "Allowed friend domains"
msgstr "Domaines amicaux autorisés"
-#: ../../mod/admin.php:481
+#: ../../Zotlabs/Module/Admin.php:516
msgid ""
"Comma separated list of domains which are allowed to establish friendships "
"with this site. Wildcards are accepted. Empty to allow any domains"
msgstr "Liste de noms de domaines séparés par des virgules pour lesquels ce site acceptera les demandes d'amitié. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines."
-#: ../../mod/admin.php:482
+#: ../../Zotlabs/Module/Admin.php:517
msgid "Allowed email domains"
msgstr "Domaines de courriels autorisés"
-#: ../../mod/admin.php:482
+#: ../../Zotlabs/Module/Admin.php:517
msgid ""
"Comma separated list of domains which are allowed in email addresses for "
"registrations to this site. Wildcards are accepted. Empty to allow any "
"domains"
msgstr "Liste de noms de domaines séparés par des virgules dont les adresses de courriel seront autorisées lors de l'inscription à ce site. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines."
-#: ../../mod/admin.php:483
+#: ../../Zotlabs/Module/Admin.php:518
msgid "Not allowed email domains"
msgstr "Domaines de courriel non autorisés"
-#: ../../mod/admin.php:483
+#: ../../Zotlabs/Module/Admin.php:518
msgid ""
"Comma separated list of domains which are not allowed in email addresses for"
" registrations to this site. Wildcards are accepted. Empty to allow any "
"domains, unless allowed domains have been defined."
msgstr "Liste de noms de domaines - séparés par des virgules - dont les adresses de courriel ne seront pas autorisées lors de l'inscription à ce site. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines, sauf si des domaines autorisés ont été définis."
-#: ../../mod/admin.php:484
+#: ../../Zotlabs/Module/Admin.php:519
msgid "Verify Email Addresses"
msgstr "Demander vérification des adresses de courriel"
-#: ../../mod/admin.php:484
+#: ../../Zotlabs/Module/Admin.php:519
msgid ""
"Check to verify email addresses used in account registration (recommended)."
msgstr "Cocher pour que les adresses utilisées à l'inscription soient vérifiées (recommandé)."
-#: ../../mod/admin.php:485
+#: ../../Zotlabs/Module/Admin.php:520
msgid "Force publish"
msgstr "Publicité forcée"
-#: ../../mod/admin.php:485
+#: ../../Zotlabs/Module/Admin.php:520
msgid ""
"Check to force all profiles on this site to be listed in the site directory."
msgstr "Cocher pour forcer la publication de tous les profils du site dans l'annuaire."
-#: ../../mod/admin.php:486
+#: ../../Zotlabs/Module/Admin.php:521
msgid "Import Public Streams"
msgstr "Flux publics importés"
-#: ../../mod/admin.php:486
+#: ../../Zotlabs/Module/Admin.php:521
msgid ""
"Import and allow access to public content pulled from other sites. Warning: "
"this content is unmoderated."
msgstr "Importer du contenu public à partir d'autres sites et autoriser l'accès à ce contenu. Attention&nbsp;: ce contenu n'est pas modéré."
-#: ../../mod/admin.php:487
-msgid "login on Homepage"
-msgstr "Connexion à partir de la page d'accueil"
+#: ../../Zotlabs/Module/Admin.php:522
+msgid "Login on Homepage"
+msgstr ""
-#: ../../mod/admin.php:487
+#: ../../Zotlabs/Module/Admin.php:522
msgid ""
"Present a login box to visitors on the home page if no other content has "
"been configured."
msgstr "Présenter une boîte de dialogue de connexion aux visiteurs sur la page d'accueil si aucun autre contenu n'a été configuré."
-#: ../../mod/admin.php:489
+#: ../../Zotlabs/Module/Admin.php:523
+msgid "Enable context help"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:523
+msgid ""
+"Display contextual help for the current page when the help button is "
+"pressed."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:525
msgid "Directory Server URL"
msgstr "URL du serveur d'annuaire"
-#: ../../mod/admin.php:489
+#: ../../Zotlabs/Module/Admin.php:525
msgid "Default directory server"
msgstr "Serveur d'annuaire par défaut"
-#: ../../mod/admin.php:491
+#: ../../Zotlabs/Module/Admin.php:527
msgid "Proxy user"
msgstr "Utilisateur du proxy"
-#: ../../mod/admin.php:492
+#: ../../Zotlabs/Module/Admin.php:528
msgid "Proxy URL"
msgstr "URL du proxy"
-#: ../../mod/admin.php:493
+#: ../../Zotlabs/Module/Admin.php:529
msgid "Network timeout"
msgstr "Délai maximal du réseau"
-#: ../../mod/admin.php:493
+#: ../../Zotlabs/Module/Admin.php:529
msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
msgstr "En secondes. Mettre à 0 pour ne pas avoir de délai maximal (non recommandé)."
-#: ../../mod/admin.php:494
+#: ../../Zotlabs/Module/Admin.php:530
msgid "Delivery interval"
msgstr "Intervalle de distribution"
-#: ../../mod/admin.php:494
+#: ../../Zotlabs/Module/Admin.php:530
msgid ""
"Delay background delivery processes by this many seconds to reduce system "
"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
"for large dedicated servers."
msgstr "Temporise le processus de distribution de tant de secondes pour réduire la charge sur le système. Valeurs recommandées&nbsp;: 4-5 pour les serveurs mutualisés, 2-3 pour les VPS. 0-1 pour les gros serveurs dédiés."
-#: ../../mod/admin.php:495
+#: ../../Zotlabs/Module/Admin.php:531
msgid "Deliveries per process"
msgstr "Distributions par processus"
-#: ../../mod/admin.php:495
+#: ../../Zotlabs/Module/Admin.php:531
msgid ""
"Number of deliveries to attempt in a single operating system process. Adjust"
" if necessary to tune system performance. Recommend: 1-5."
msgstr "Nombre de distributions à tenter au sein d'un seul processus système. Ajuster si nécessaire pour affiner la performance du système. Recommandé&nbsp;:1-5."
-#: ../../mod/admin.php:496
+#: ../../Zotlabs/Module/Admin.php:532
msgid "Poll interval"
msgstr "Intervalle de scrutation"
-#: ../../mod/admin.php:496
+#: ../../Zotlabs/Module/Admin.php:532
msgid ""
"Delay background polling processes by this many seconds to reduce system "
"load. If 0, use delivery interval."
msgstr "Temporise le processus de scrutation en tâche de fond de tant de secondes, pour réduire la charge. Si 0, utilise l'intervalle de distribution."
-#: ../../mod/admin.php:497
+#: ../../Zotlabs/Module/Admin.php:533
msgid "Maximum Load Average"
msgstr "Charge maximale moyenne"
-#: ../../mod/admin.php:497
+#: ../../Zotlabs/Module/Admin.php:533
msgid ""
"Maximum system load before delivery and poll processes are deferred - "
"default 50."
msgstr "Charge système maximale au-delà de laquelle distribution et scrutation sont reportées - par défaut 50."
-#: ../../mod/admin.php:498
+#: ../../Zotlabs/Module/Admin.php:534
msgid "Expiration period in days for imported (grid/network) content"
msgstr "Délai d'expiration pour le contenu importé (réseau)"
-#: ../../mod/admin.php:498
+#: ../../Zotlabs/Module/Admin.php:534
msgid "0 for no expiration of imported content"
msgstr "0 pour ne pas expirer le contenu importé"
-#: ../../mod/admin.php:635 ../../mod/admin.php:636 ../../mod/settings.php:717
+#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:678
+#: ../../Zotlabs/Module/Settings.php:722
msgid "Off"
msgstr "Inactif"
-#: ../../mod/admin.php:635 ../../mod/admin.php:636 ../../mod/settings.php:717
+#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:678
+#: ../../Zotlabs/Module/Settings.php:722
msgid "On"
msgstr "Actif"
-#: ../../mod/admin.php:636
+#: ../../Zotlabs/Module/Admin.php:678
#, php-format
msgid "Lock feature %s"
msgstr "Verrouiller fonctionnalité %s"
-#: ../../mod/admin.php:644
+#: ../../Zotlabs/Module/Admin.php:686
msgid "Manage Additional Features"
msgstr "Gérer les fonctionnalités additionnelles"
-#: ../../mod/admin.php:661
+#: ../../Zotlabs/Module/Admin.php:703
msgid "No server found"
msgstr "Serveur introuvable"
-#: ../../mod/admin.php:668 ../../mod/admin.php:998
+#: ../../Zotlabs/Module/Admin.php:710 ../../Zotlabs/Module/Admin.php:1046
msgid "ID"
msgstr "Identifiant"
-#: ../../mod/admin.php:668
+#: ../../Zotlabs/Module/Admin.php:710
msgid "for channel"
msgstr "pour le canal"
-#: ../../mod/admin.php:668
+#: ../../Zotlabs/Module/Admin.php:710
msgid "on server"
msgstr "sur le serveur"
-#: ../../mod/admin.php:670
+#: ../../Zotlabs/Module/Admin.php:712
msgid "Server"
msgstr "Serveur"
-#: ../../mod/admin.php:712
+#: ../../Zotlabs/Module/Admin.php:746
+msgid ""
+"By default, unfiltered HTML is allowed in embedded media. This is inherently"
+" insecure."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:749
+msgid ""
+"The recommended setting is to only allow unfiltered HTML from the following "
+"sites:"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:750
+msgid ""
+"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br"
+" />https://vimeo.com/<br />https://soundcloud.com/<br />"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:751
+msgid ""
+"All other embedded content will be filtered, <strong>unless</strong> "
+"embedded content from that site is explicitly blocked."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:756 ../../include/widgets.php:1385
+msgid "Security"
+msgstr "Sécurité"
+
+#: ../../Zotlabs/Module/Admin.php:758
msgid "Block public"
msgstr "Bloquer \"public\""
-#: ../../mod/admin.php:712
+#: ../../Zotlabs/Module/Admin.php:758
msgid ""
"Check to block public access to all otherwise public personal pages on this "
"site unless you are currently authenticated."
+msgstr "Sélectionner pour ne permettre l'accès aux pages personnelles \"publiques\" du site qu'aux personnes authentifiées, pas aux personnes anonymes du web."
+
+#: ../../Zotlabs/Module/Admin.php:759
+msgid "Set \"Transport Security\" HTTP header"
msgstr ""
-#: ../../mod/admin.php:713
-msgid "Allow communications only from these sites"
+#: ../../Zotlabs/Module/Admin.php:760
+msgid "Set \"Content Security Policy\" HTTP header"
msgstr ""
-#: ../../mod/admin.php:713
+#: ../../Zotlabs/Module/Admin.php:761
+msgid "Allow communications only from these sites"
+msgstr "N'autorisez que les communications venant de ces sites"
+
+#: ../../Zotlabs/Module/Admin.php:761
msgid ""
"One site per line. Leave empty to allow communication from anywhere by "
"default"
-msgstr ""
+msgstr "Un site par ligne. Laisser vide pour autoriser les communications de tous les sites, par défaut."
-#: ../../mod/admin.php:714
+#: ../../Zotlabs/Module/Admin.php:762
msgid "Block communications from these sites"
-msgstr ""
+msgstr "Bloquer les communications de ces sites"
-#: ../../mod/admin.php:715
+#: ../../Zotlabs/Module/Admin.php:763
msgid "Allow communications only from these channels"
-msgstr ""
+msgstr "N'autoriser que les communications de ces canaux"
-#: ../../mod/admin.php:715
+#: ../../Zotlabs/Module/Admin.php:763
msgid ""
"One channel (hash) per line. Leave empty to allow from any channel by "
"default"
-msgstr ""
+msgstr "Un canal (adresse) par ligne. Laisser vide pour autoriser les communications de tous les canaux, par défaut"
-#: ../../mod/admin.php:716
+#: ../../Zotlabs/Module/Admin.php:764
msgid "Block communications from these channels"
-msgstr ""
-
-#: ../../mod/admin.php:717
-msgid "Allow embedded HTML content only from these domains"
-msgstr ""
+msgstr "Bloquer les communications de ces canaux"
-#: ../../mod/admin.php:717
-msgid "One site per line. Leave empty to allow from any site by default"
+#: ../../Zotlabs/Module/Admin.php:765
+msgid "Only allow embeds from secure (SSL) websites and links."
msgstr ""
-#: ../../mod/admin.php:718
-msgid "Block embedded HTML from these domains"
+#: ../../Zotlabs/Module/Admin.php:766
+msgid "Allow unfiltered embedded HTML content only from these domains"
msgstr ""
-#: ../../mod/admin.php:720
-msgid "Cooperative embed security"
+#: ../../Zotlabs/Module/Admin.php:766
+msgid "One site per line. By default embedded content is filtered."
msgstr ""
-#: ../../mod/admin.php:720
-msgid "Enable to share embed security with other compatible sites/hubs"
-msgstr ""
+#: ../../Zotlabs/Module/Admin.php:767
+msgid "Block embedded HTML from these domains"
+msgstr "Bloquer le HTML embarqué à partir de ces domaines"
-#: ../../mod/admin.php:735
+#: ../../Zotlabs/Module/Admin.php:785
msgid "Update has been marked successful"
msgstr "La mise à jour a été marquée comme réussie"
-#: ../../mod/admin.php:745
+#: ../../Zotlabs/Module/Admin.php:795
#, php-format
msgid "Executing %s failed. Check system logs."
msgstr "L'éxecution de %s a échoué. Merci de vérifier les journaux du système."
-#: ../../mod/admin.php:748
+#: ../../Zotlabs/Module/Admin.php:798
#, php-format
msgid "Update %s was successfully applied."
msgstr "La mise à jour %s a été appliquée avec succès."
-#: ../../mod/admin.php:752
+#: ../../Zotlabs/Module/Admin.php:802
#, php-format
msgid "Update %s did not return a status. Unknown if it succeeded."
msgstr "La mise à jour %s n'a pas retourné d'information. Impossible de savoir si elle a réussi ou non."
-#: ../../mod/admin.php:755
+#: ../../Zotlabs/Module/Admin.php:805
#, php-format
msgid "Update function %s could not be found."
msgstr "La fonction de mise à jour %s est introuvable."
-#: ../../mod/admin.php:771
+#: ../../Zotlabs/Module/Admin.php:821
msgid "No failed updates."
msgstr "Aucune mise à jour défaillante."
-#: ../../mod/admin.php:775
+#: ../../Zotlabs/Module/Admin.php:825
msgid "Failed Updates"
msgstr "Mises à jour défaillantes"
-#: ../../mod/admin.php:777
+#: ../../Zotlabs/Module/Admin.php:827
msgid "Mark success (if update was manually applied)"
msgstr "Marquer comme réussie (si la mise à jour a été réalisée manuellement)"
-#: ../../mod/admin.php:778
+#: ../../Zotlabs/Module/Admin.php:828
msgid "Attempt to execute this update step automatically"
msgstr "Tenter de réaliser cette étape de mise à jour automatiquement"
-#: ../../mod/admin.php:809
+#: ../../Zotlabs/Module/Admin.php:859
msgid "Queue Statistics"
msgstr "Statistiques de file d'attente"
-#: ../../mod/admin.php:810
+#: ../../Zotlabs/Module/Admin.php:860
msgid "Total Entries"
msgstr "Nombre d'entrées total"
-#: ../../mod/admin.php:811
+#: ../../Zotlabs/Module/Admin.php:861
msgid "Priority"
msgstr "Priorité"
-#: ../../mod/admin.php:812
+#: ../../Zotlabs/Module/Admin.php:862
msgid "Destination URL"
msgstr "URL de destination"
-#: ../../mod/admin.php:813
+#: ../../Zotlabs/Module/Admin.php:863
msgid "Mark hub permanently offline"
msgstr "Marquer le hub comme étant hors ligne de manière permanente"
-#: ../../mod/admin.php:814
+#: ../../Zotlabs/Module/Admin.php:864
msgid "Empty queue for this hub"
msgstr "Vider la file d'attente pour ce hub"
-#: ../../mod/admin.php:815
+#: ../../Zotlabs/Module/Admin.php:865
msgid "Last known contact"
msgstr "Dernier contact connu"
-#: ../../mod/admin.php:851
+#: ../../Zotlabs/Module/Admin.php:901
#, php-format
msgid "%s account blocked/unblocked"
msgid_plural "%s account blocked/unblocked"
msgstr[0] "%s compte bloqué/débloqué"
msgstr[1] "%s comptes bloqués/débloqués"
-#: ../../mod/admin.php:859
+#: ../../Zotlabs/Module/Admin.php:908
#, php-format
msgid "%s account deleted"
msgid_plural "%s accounts deleted"
msgstr[0] "%s compte supprimé"
msgstr[1] "%s comptes supprimés"
-#: ../../mod/admin.php:895
+#: ../../Zotlabs/Module/Admin.php:944
msgid "Account not found"
msgstr "Compte introuvable"
-#: ../../mod/admin.php:907
+#: ../../Zotlabs/Module/Admin.php:955
#, php-format
msgid "Account '%s' deleted"
msgstr "Compte '%s' supprimé"
-#: ../../mod/admin.php:915
+#: ../../Zotlabs/Module/Admin.php:963
#, php-format
msgid "Account '%s' blocked"
msgstr "Compte '%s' bloqué"
-#: ../../mod/admin.php:923
+#: ../../Zotlabs/Module/Admin.php:971
#, php-format
msgid "Account '%s' unblocked"
msgstr "Compte '%s' débloqué"
-#: ../../mod/admin.php:985 ../../mod/admin.php:997
-msgid "Users"
-msgstr "Utilisateurs"
+#: ../../Zotlabs/Module/Admin.php:1031 ../../Zotlabs/Module/Admin.php:1044
+#: ../../include/widgets.php:1383
+msgid "Accounts"
+msgstr "Comptes"
-#: ../../mod/admin.php:987 ../../mod/admin.php:1151
+#: ../../Zotlabs/Module/Admin.php:1033 ../../Zotlabs/Module/Admin.php:1212
msgid "select all"
msgstr "tout sélectionner"
-#: ../../mod/admin.php:988
-msgid "User registrations waiting for confirm"
-msgstr "Inscriptions en attente d'approbation"
+#: ../../Zotlabs/Module/Admin.php:1034
+msgid "Registrations waiting for confirm"
+msgstr ""
-#: ../../mod/admin.php:989
+#: ../../Zotlabs/Module/Admin.php:1035
msgid "Request date"
msgstr "Date de la demande"
-#: ../../mod/admin.php:990
+#: ../../Zotlabs/Module/Admin.php:1036
msgid "No registrations."
msgstr "Pas d'inscriptions."
-#: ../../mod/admin.php:992
+#: ../../Zotlabs/Module/Admin.php:1038
msgid "Deny"
msgstr "Refuser"
-#: ../../mod/admin.php:998
+#: ../../Zotlabs/Module/Admin.php:1048 ../../include/group.php:267
+msgid "All Channels"
+msgstr "Tous les canaux"
+
+#: ../../Zotlabs/Module/Admin.php:1049
msgid "Register date"
msgstr "Date d'inscription"
-#: ../../mod/admin.php:998
+#: ../../Zotlabs/Module/Admin.php:1050
msgid "Last login"
msgstr "Dernière connexion"
-#: ../../mod/admin.php:998
+#: ../../Zotlabs/Module/Admin.php:1051
msgid "Expires"
msgstr "Expire le"
-#: ../../mod/admin.php:998
+#: ../../Zotlabs/Module/Admin.php:1052
msgid "Service Class"
msgstr "Classe de service"
-#: ../../mod/admin.php:1000
+#: ../../Zotlabs/Module/Admin.php:1054
msgid ""
"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
" on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Les comptes sélectionnés seront supprimés&nbsp;!\\n\\nTout ce que ces utilisateurs ont publié sur ce site sera détruit de manière définitive&nbsp;!\\n\\nÊtes-vous sûr&nbsp;?"
-#: ../../mod/admin.php:1001
+#: ../../Zotlabs/Module/Admin.php:1055
msgid ""
"The account {0} will be deleted!\\n\\nEverything this account has posted on "
"this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Le compte {0} sera supprimé&nbsp;!\\n\\nTout ce que cet utilisateur a publié sur ce site sera détruit de manière définitive&nbsp;!\\n\\nÊtes-vous sûr&nbsp;?"
-#: ../../mod/admin.php:1037
+#: ../../Zotlabs/Module/Admin.php:1091
#, php-format
msgid "%s channel censored/uncensored"
msgid_plural "%s channels censored/uncensored"
msgstr[0] "%s canal censuré/dé-censuré"
msgstr[1] "%s canaux censurés/dé-censurés"
-#: ../../mod/admin.php:1046
+#: ../../Zotlabs/Module/Admin.php:1100
#, php-format
msgid "%s channel code allowed/disallowed"
msgid_plural "%s channels code allowed/disallowed"
msgstr[0] "code autorisé/interdit pour %s canal"
msgstr[1] "code autorisé/interdit pour %s canaux"
-#: ../../mod/admin.php:1053
+#: ../../Zotlabs/Module/Admin.php:1106
#, php-format
msgid "%s channel deleted"
msgid_plural "%s channels deleted"
msgstr[0] "%s canal supprimé"
msgstr[1] "%s canaux supprimés"
-#: ../../mod/admin.php:1073
+#: ../../Zotlabs/Module/Admin.php:1126
msgid "Channel not found"
msgstr "Canal introuvable"
-#: ../../mod/admin.php:1084
+#: ../../Zotlabs/Module/Admin.php:1136
#, php-format
msgid "Channel '%s' deleted"
msgstr "Canal '%s' supprimé"
-#: ../../mod/admin.php:1096
+#: ../../Zotlabs/Module/Admin.php:1148
#, php-format
msgid "Channel '%s' censored"
msgstr "Canal '%s' censuré"
-#: ../../mod/admin.php:1096
+#: ../../Zotlabs/Module/Admin.php:1148
#, php-format
msgid "Channel '%s' uncensored"
msgstr "Canal '%s' non censuré"
-#: ../../mod/admin.php:1107
+#: ../../Zotlabs/Module/Admin.php:1159
#, php-format
msgid "Channel '%s' code allowed"
msgstr "Code autorisé pour le canal '%s'"
-#: ../../mod/admin.php:1107
+#: ../../Zotlabs/Module/Admin.php:1159
#, php-format
msgid "Channel '%s' code disallowed"
msgstr "Code interdit pour le canal '%s'"
-#: ../../mod/admin.php:1153
+#: ../../Zotlabs/Module/Admin.php:1210 ../../include/widgets.php:1384
+msgid "Channels"
+msgstr "Canaux"
+
+#: ../../Zotlabs/Module/Admin.php:1214
msgid "Censor"
msgstr "Censurer"
-#: ../../mod/admin.php:1154
+#: ../../Zotlabs/Module/Admin.php:1215
msgid "Uncensor"
msgstr "Ne plus censurer"
-#: ../../mod/admin.php:1155
+#: ../../Zotlabs/Module/Admin.php:1216
msgid "Allow Code"
msgstr "Autoriser le code"
-#: ../../mod/admin.php:1156
+#: ../../Zotlabs/Module/Admin.php:1217
msgid "Disallow Code"
msgstr "Interdire le code"
-#: ../../mod/admin.php:1158
+#: ../../Zotlabs/Module/Admin.php:1218 ../../include/conversation.php:1611
+msgid "Channel"
+msgstr "Canal"
+
+#: ../../Zotlabs/Module/Admin.php:1222
msgid "UID"
msgstr "UID"
-#: ../../mod/admin.php:1158 ../../mod/profiles.php:457
-msgid "Address"
-msgstr "Adresse"
-
-#: ../../mod/admin.php:1160
+#: ../../Zotlabs/Module/Admin.php:1226
msgid ""
"Selected channels will be deleted!\\n\\nEverything that was posted in these "
"channels on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Les canaux sélectionnés seront supprimés&nbsp;!\\n\\nTout ce qui a été publié dans ces canaux sur ce site sera définitivement supprimé&nbsp;!\\n\\nÊtes-vous sûr&nbsp;?"
-#: ../../mod/admin.php:1161
+#: ../../Zotlabs/Module/Admin.php:1227
msgid ""
"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
"channel on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Le canal {0} sera supprimé&nbsp;!\\n\\nTout ce qui a été publié sur ce canal sera définitivement supprimé&nbsp;!\\n\\nÊtes-vous sûr(e)&nbsp;?"
-#: ../../mod/admin.php:1218
+#: ../../Zotlabs/Module/Admin.php:1284
#, php-format
msgid "Plugin %s disabled."
msgstr "Greffon %s désactivé."
-#: ../../mod/admin.php:1222
+#: ../../Zotlabs/Module/Admin.php:1288
#, php-format
msgid "Plugin %s enabled."
msgstr "Greffon %s activé."
-#: ../../mod/admin.php:1232 ../../mod/admin.php:1458
+#: ../../Zotlabs/Module/Admin.php:1298 ../../Zotlabs/Module/Admin.php:1585
msgid "Disable"
msgstr "Désactiver"
-#: ../../mod/admin.php:1235 ../../mod/admin.php:1460
+#: ../../Zotlabs/Module/Admin.php:1301 ../../Zotlabs/Module/Admin.php:1587
msgid "Enable"
msgstr "Activer"
-#: ../../mod/admin.php:1265 ../../mod/admin.php:1487
+#: ../../Zotlabs/Module/Admin.php:1330 ../../Zotlabs/Module/Admin.php:1420
+#: ../../include/widgets.php:1387
+msgid "Plugins"
+msgstr "Greffons"
+
+#: ../../Zotlabs/Module/Admin.php:1331 ../../Zotlabs/Module/Admin.php:1614
msgid "Toggle"
msgstr "(Dés)activer"
-#: ../../mod/admin.php:1273 ../../mod/admin.php:1497
+#: ../../Zotlabs/Module/Admin.php:1332 ../../Zotlabs/Module/Admin.php:1615
+#: ../../Zotlabs/Lib/Apps.php:215 ../../include/widgets.php:638
+#: ../../include/nav.php:208
+msgid "Settings"
+msgstr "Paramètres"
+
+#: ../../Zotlabs/Module/Admin.php:1339 ../../Zotlabs/Module/Admin.php:1624
msgid "Author: "
msgstr "Auteur&nbsp;:"
-#: ../../mod/admin.php:1274 ../../mod/admin.php:1498
+#: ../../Zotlabs/Module/Admin.php:1340 ../../Zotlabs/Module/Admin.php:1625
msgid "Maintainer: "
msgstr "Maintenu par&nbsp;:"
-#: ../../mod/admin.php:1275
+#: ../../Zotlabs/Module/Admin.php:1341
msgid "Minimum project version: "
msgstr "Version minimum du projet&nbsp;:"
-#: ../../mod/admin.php:1276
+#: ../../Zotlabs/Module/Admin.php:1342
msgid "Maximum project version: "
msgstr "Version maximum du projet&nbsp;:"
-#: ../../mod/admin.php:1277
+#: ../../Zotlabs/Module/Admin.php:1343
msgid "Minimum PHP version: "
msgstr "Version minimum de PHP&nbsp;:"
-#: ../../mod/admin.php:1279 ../../mod/admin.php:1330
+#: ../../Zotlabs/Module/Admin.php:1344
+msgid "Requires: "
+msgstr "Requiert&nbsp;:"
+
+#: ../../Zotlabs/Module/Admin.php:1345 ../../Zotlabs/Module/Admin.php:1425
msgid "Disabled - version incompatibility"
msgstr "Désactivé - version incompatible"
-#: ../../mod/admin.php:1423
+#: ../../Zotlabs/Module/Admin.php:1394
+msgid "Enter the public git repository URL of the plugin repo."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1395
+msgid "Plugin repo git URL"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1396
+msgid "Custom repo name"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1396
+msgid "(optional)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1397
+msgid "Download Plugin Repo"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1404
+msgid "Install new repo"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1405 ../../Zotlabs/Lib/Apps.php:330
+msgid "Install"
+msgstr "Installer"
+
+#: ../../Zotlabs/Module/Admin.php:1427
+msgid "Manage Repos"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1428
+msgid "Installed Plugin Repositories"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1429
+msgid "Install a New Plugin Repository"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1435 ../../Zotlabs/Module/Settings.php:77
+#: ../../Zotlabs/Module/Settings.php:616 ../../Zotlabs/Lib/Apps.php:330
+msgid "Update"
+msgstr "Mise à jour"
+
+#: ../../Zotlabs/Module/Admin.php:1436
+msgid "Switch branch"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1550
msgid "No themes found."
msgstr "Aucun thème trouvé."
-#: ../../mod/admin.php:1479
+#: ../../Zotlabs/Module/Admin.php:1606
msgid "Screenshot"
msgstr "Capture d'écran"
-#: ../../mod/admin.php:1525
+#: ../../Zotlabs/Module/Admin.php:1613 ../../Zotlabs/Module/Admin.php:1647
+#: ../../include/widgets.php:1388
+msgid "Themes"
+msgstr "Thèmes"
+
+#: ../../Zotlabs/Module/Admin.php:1652
msgid "[Experimental]"
msgstr "[Expérimental]"
-#: ../../mod/admin.php:1526
+#: ../../Zotlabs/Module/Admin.php:1653
msgid "[Unsupported]"
msgstr "[Non maintenu]"
-#: ../../mod/admin.php:1550
+#: ../../Zotlabs/Module/Admin.php:1677
msgid "Log settings updated."
msgstr "Paramètres du journal mis à jour."
-#: ../../mod/admin.php:1607
+#: ../../Zotlabs/Module/Admin.php:1732 ../../include/widgets.php:1409
+#: ../../include/widgets.php:1419
+msgid "Logs"
+msgstr "Journaux"
+
+#: ../../Zotlabs/Module/Admin.php:1734
msgid "Clear"
msgstr "Vider"
-#: ../../mod/admin.php:1613
+#: ../../Zotlabs/Module/Admin.php:1740
msgid "Debugging"
msgstr "Débogage"
-#: ../../mod/admin.php:1614
+#: ../../Zotlabs/Module/Admin.php:1741
msgid "Log file"
msgstr "Fichier du journal"
-#: ../../mod/admin.php:1614
+#: ../../Zotlabs/Module/Admin.php:1741
msgid ""
-"Must be writable by web server. Relative to your Red top-level directory."
-msgstr "Doit être accessible en écriture par le serveur web. Chemin relatif à la racine de votre installation de Hubzilla."
+"Must be writable by web server. Relative to your top-level webserver "
+"directory."
+msgstr ""
-#: ../../mod/admin.php:1615
+#: ../../Zotlabs/Module/Admin.php:1742
msgid "Log level"
msgstr "Niveau de journalisation"
-#: ../../mod/admin.php:1661
+#: ../../Zotlabs/Module/Admin.php:2028
msgid "New Profile Field"
msgstr "Nouveau champ de profil"
-#: ../../mod/admin.php:1662 ../../mod/admin.php:1682
+#: ../../Zotlabs/Module/Admin.php:2029 ../../Zotlabs/Module/Admin.php:2049
msgid "Field nickname"
msgstr "Nom court du champ"
-#: ../../mod/admin.php:1662 ../../mod/admin.php:1682
+#: ../../Zotlabs/Module/Admin.php:2029 ../../Zotlabs/Module/Admin.php:2049
msgid "System name of field"
msgstr "Nom système du champ"
-#: ../../mod/admin.php:1663 ../../mod/admin.php:1683
+#: ../../Zotlabs/Module/Admin.php:2030 ../../Zotlabs/Module/Admin.php:2050
msgid "Input type"
msgstr "Type de champ"
-#: ../../mod/admin.php:1664 ../../mod/admin.php:1684
+#: ../../Zotlabs/Module/Admin.php:2031 ../../Zotlabs/Module/Admin.php:2051
msgid "Field Name"
msgstr "Nom du champ"
-#: ../../mod/admin.php:1664 ../../mod/admin.php:1684
+#: ../../Zotlabs/Module/Admin.php:2031 ../../Zotlabs/Module/Admin.php:2051
msgid "Label on profile pages"
msgstr "Étiquette sur les pages de profil"
-#: ../../mod/admin.php:1665 ../../mod/admin.php:1685
+#: ../../Zotlabs/Module/Admin.php:2032 ../../Zotlabs/Module/Admin.php:2052
msgid "Help text"
msgstr "Aide à la saisie"
-#: ../../mod/admin.php:1665 ../../mod/admin.php:1685
+#: ../../Zotlabs/Module/Admin.php:2032 ../../Zotlabs/Module/Admin.php:2052
msgid "Additional info (optional)"
msgstr "Informations additionnelles (facultatif)"
-#: ../../mod/admin.php:1675
+#: ../../Zotlabs/Module/Admin.php:2042
msgid "Field definition not found"
msgstr "Définition du champ introuvable"
-#: ../../mod/admin.php:1681
+#: ../../Zotlabs/Module/Admin.php:2048
msgid "Edit Profile Field"
msgstr "Modifier le champ de profil"
-#: ../../mod/poke.php:165
-msgid "Poke somebody"
-msgstr ""
-
-#: ../../mod/poke.php:168
-msgid "Poke/Prod"
-msgstr "Tapoter/Encourager"
-
-#: ../../mod/poke.php:169
-msgid "Poke, prod or do other things to somebody"
-msgstr ""
-
-#: ../../mod/poke.php:176
-msgid "Recipient"
-msgstr "Destinataire"
-
-#: ../../mod/poke.php:177
-msgid "Choose what you wish to do to recipient"
-msgstr "Choisir ce que vous voulez faire au destinataire"
-
-#: ../../mod/poke.php:180 ../../mod/poke.php:181
-msgid "Make this post private"
-msgstr "Rendre cette publication privée"
-
-#: ../../mod/probe.php:24 ../../mod/probe.php:30
-#, php-format
-msgid "Fetching URL returns error: %1$s"
-msgstr "Récupération d'URL échouée&nbsp;: %1$s"
-
-#: ../../mod/profile_photo.php:112 ../../mod/cover_photo.php:54
-msgid "Image uploaded but image cropping failed."
-msgstr "L'image a été téléversée, mais le recadrage a échoué."
-
-#: ../../mod/profile_photo.php:166 ../../mod/cover_photo.php:150
-msgid "Image resize failed."
-msgstr "Le redimensionnement de l'image a échoué."
-
-#: ../../mod/profile_photo.php:212
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Shift-rechargez votre page, ou videz le cache du navigateur si la photo ne s'affiche pas immédiatement."
-
-#: ../../mod/profile_photo.php:250 ../../mod/cover_photo.php:188
-msgid "Image upload failed."
-msgstr "Le téléversement de l'image a échoué."
-
-#: ../../mod/profile_photo.php:269 ../../mod/cover_photo.php:206
-msgid "Unable to process image."
-msgstr "Impossible de traîter l'image."
-
-#: ../../mod/profile_photo.php:297 ../../mod/cover_photo.php:229
-msgid "female"
-msgstr "femme"
-
-#: ../../mod/profile_photo.php:298 ../../mod/cover_photo.php:230
-#, php-format
-msgid "%1$s updated her %2$s"
-msgstr "%1$s a mis à jour son %2$s"
-
-#: ../../mod/profile_photo.php:299 ../../mod/cover_photo.php:231
-msgid "male"
-msgstr "homme"
-
-#: ../../mod/profile_photo.php:300 ../../mod/cover_photo.php:232
-#, php-format
-msgid "%1$s updated his %2$s"
-msgstr "%1$s a mis à jour son %2$s"
-
-#: ../../mod/profile_photo.php:302 ../../mod/cover_photo.php:234
-#, php-format
-msgid "%1$s updated their %2$s"
-msgstr "%1$s a mis a jour sa %2$s"
-
-#: ../../mod/profile_photo.php:304
-msgid "profile photo"
-msgstr "photo de profil"
-
-#: ../../mod/profile_photo.php:368 ../../mod/profile_photo.php:409
-#: ../../mod/cover_photo.php:299 ../../mod/cover_photo.php:314
-msgid "Photo not available."
-msgstr "Photo inaccessible."
-
-#: ../../mod/profile_photo.php:450 ../../mod/cover_photo.php:350
-msgid "Upload File:"
-msgstr "Téléverser fichier&nbsp;:"
-
-#: ../../mod/profile_photo.php:451 ../../mod/cover_photo.php:351
-msgid "Select a profile:"
-msgstr "Choisir un profil&nbsp;:"
-
-#: ../../mod/profile_photo.php:452
-msgid "Upload Profile Photo"
-msgstr "Téléverser une photo de profil"
-
-#: ../../mod/profile_photo.php:457 ../../mod/settings.php:976
-#: ../../mod/cover_photo.php:357
-msgid "or"
-msgstr "ou"
-
-#: ../../mod/profile_photo.php:457 ../../mod/cover_photo.php:357
-msgid "skip this step"
-msgstr "passer cette étape"
-
-#: ../../mod/profile_photo.php:457 ../../mod/cover_photo.php:357
-msgid "select a photo from your photo albums"
-msgstr "choisir une photo dans vos albums"
-
-#: ../../mod/profile_photo.php:473 ../../mod/cover_photo.php:373
-msgid "Crop Image"
-msgstr "Recadrer l'image"
-
-#: ../../mod/profile_photo.php:474 ../../mod/cover_photo.php:374
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Merci d'ajuster le cadre pour une visualisation optimale."
-
-#: ../../mod/profile_photo.php:476 ../../mod/cover_photo.php:376
-msgid "Done Editing"
-msgstr "J'ai terminé"
-
-#: ../../mod/profiles.php:19 ../../mod/profiles.php:184
-#: ../../mod/profiles.php:241 ../../mod/profiles.php:608
-msgid "Profile not found."
-msgstr "Profil introuvable."
-
-#: ../../mod/profiles.php:39
-msgid "Profile deleted."
-msgstr "Profil supprimé."
-
-#: ../../mod/profiles.php:63 ../../mod/profiles.php:99
-msgid "Profile-"
-msgstr "Profil-"
-
-#: ../../mod/profiles.php:84 ../../mod/profiles.php:127
-msgid "New profile created."
-msgstr "Nouveau profil créé."
-
-#: ../../mod/profiles.php:105
-msgid "Profile unavailable to clone."
-msgstr "Profil impossible à cloner."
-
-#: ../../mod/profiles.php:146
-msgid "Profile unavailable to export."
-msgstr "Impossible d'exporter le profil."
-
-#: ../../mod/profiles.php:251
-msgid "Profile Name is required."
-msgstr "Le nom du profil est obligatoire."
-
-#: ../../mod/profiles.php:414
-msgid "Marital Status"
-msgstr "Statut marital"
-
-#: ../../mod/profiles.php:418
-msgid "Romantic Partner"
-msgstr "Partenaire amoureux"
-
-#: ../../mod/profiles.php:422
-msgid "Likes"
-msgstr "Aime"
-
-#: ../../mod/profiles.php:426
-msgid "Dislikes"
-msgstr "N'aime pas"
-
-#: ../../mod/profiles.php:430
-msgid "Work/Employment"
-msgstr "Travail/Occupation"
-
-#: ../../mod/profiles.php:433
-msgid "Religion"
-msgstr "Religion/Croyance"
-
-#: ../../mod/profiles.php:437
-msgid "Political Views"
-msgstr "Opinions politiques"
-
-#: ../../mod/profiles.php:445
-msgid "Sexual Preference"
-msgstr "Préférences sexuelle"
-
-#: ../../mod/profiles.php:449
-msgid "Homepage"
-msgstr "Site Internet"
-
-#: ../../mod/profiles.php:453
-msgid "Interests"
-msgstr "Centres d'intérêt"
-
-#: ../../mod/profiles.php:547
-msgid "Profile updated."
-msgstr "Profil mis à jour."
-
-#: ../../mod/profiles.php:634
-msgid "Hide your contact/friend list from viewers of this profile?"
-msgstr "Cacher vos contacts/amis aux visiteurs de ce profil&nbsp;?"
-
-#: ../../mod/profiles.php:674
-msgid "Edit Profile Details"
-msgstr "Modifier les détails du profil"
-
-#: ../../mod/profiles.php:676
-msgid "View this profile"
-msgstr "Voir ce profil"
-
-#: ../../mod/profiles.php:678
-msgid "Change Profile Photo"
-msgstr "Changer la photo du profil"
-
-#: ../../mod/profiles.php:679
-msgid "Create a new profile using these settings"
-msgstr "Créer un nouveau profil avec ces paramètres"
-
-#: ../../mod/profiles.php:680
-msgid "Clone this profile"
-msgstr "Cloner ce profil"
-
-#: ../../mod/profiles.php:681
-msgid "Delete this profile"
-msgstr "Supprimer ce profil"
-
-#: ../../mod/profiles.php:683
-msgid "Import profile from file"
-msgstr "Importer le profil à partir d'un fichier"
-
-#: ../../mod/profiles.php:684
-msgid "Export profile to file"
-msgstr "Exporter le profil vers un fichier."
-
-#: ../../mod/profiles.php:685
-msgid "Profile Name:"
-msgstr "Nom du profil&nbsp;:"
-
-#: ../../mod/profiles.php:686
-msgid "Your Full Name:"
-msgstr "Votre nom complet&nbsp;:"
-
-#: ../../mod/profiles.php:687
-msgid "Title/Description:"
-msgstr "Titre/description&nbsp;:"
-
-#: ../../mod/profiles.php:688
-msgid "Your Gender:"
-msgstr "Sexe/Genre&nbsp;:"
-
-#: ../../mod/profiles.php:689
-msgid "Birthday :"
-msgstr "Date de naissance&nbsp;:"
-
-#: ../../mod/profiles.php:690
-msgid "Street Address:"
-msgstr "Numéro et voie&nbsp;:"
-
-#: ../../mod/profiles.php:691
-msgid "Locality/City:"
-msgstr "Ville&nbsp;:"
-
-#: ../../mod/profiles.php:692
-msgid "Postal/Zip Code:"
-msgstr "Code postal&nbsp;:"
-
-#: ../../mod/profiles.php:693
-msgid "Country:"
-msgstr "Pays&nbsp;:"
-
-#: ../../mod/profiles.php:694
-msgid "Region/State:"
-msgstr "Région/Province/État&nbsp;:"
-
-#: ../../mod/profiles.php:695
-msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
-msgstr "<span class=\"heart\">&hearts;</span>Statut marital&nbsp;:"
-
-#: ../../mod/profiles.php:696
-msgid "Who: (if applicable)"
-msgstr "Avec&nbsp;: (si pertinent)"
-
-#: ../../mod/profiles.php:697
-msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
-msgstr "Exemples&nbsp;: marie123, Marie Deschamps, marie@exemple.com"
-
-#: ../../mod/profiles.php:698
-msgid "Since [date]:"
-msgstr "Depuis [date]&nbsp;:"
-
-#: ../../mod/profiles.php:700
-msgid "Homepage URL:"
-msgstr "URL de mon site Internet&nbsp;:"
-
-#: ../../mod/profiles.php:703
-msgid "Religious Views:"
-msgstr "Opinions religieuses&nbsp;:"
-
-#: ../../mod/profiles.php:704
-msgid "Keywords:"
-msgstr "Mots-clefs&nbsp;:"
-
-#: ../../mod/profiles.php:707
-msgid "Example: fishing photography software"
-msgstr "Exemple&nbsp;: escrime photographie modélisme"
-
-#: ../../mod/profiles.php:708
-msgid "Used in directory listings"
-msgstr "Utilisé pour le référencement dans l'annuaire"
-
-#: ../../mod/profiles.php:709
-msgid "Tell us about yourself..."
-msgstr "Parlez nous de vous..."
-
-#: ../../mod/profiles.php:710
-msgid "Hobbies/Interests"
-msgstr "Loisirs/Centres d'intêret"
-
-#: ../../mod/profiles.php:711
-msgid "Contact information and Social Networks"
-msgstr "Coordonnées et réseaux sociaux"
-
-#: ../../mod/profiles.php:712
-msgid "My other channels"
-msgstr "Mes autres canaux"
-
-#: ../../mod/profiles.php:713
-msgid "Musical interests"
-msgstr "Goûts musicaux"
-
-#: ../../mod/profiles.php:714
-msgid "Books, literature"
-msgstr "Livres, littérature"
-
-#: ../../mod/profiles.php:715
-msgid "Television"
-msgstr "Télévision"
-
-#: ../../mod/profiles.php:716
-msgid "Film/dance/culture/entertainment"
-msgstr "Cinéma/Danse/Culture/Divertissement"
-
-#: ../../mod/profiles.php:717
-msgid "Love/romance"
-msgstr "Amour/Relation amoureuse"
-
-#: ../../mod/profiles.php:718
-msgid "Work/employment"
-msgstr "Travail/Occupation&nbsp;"
-
-#: ../../mod/profiles.php:719
-msgid "School/education"
-msgstr "Études"
-
-#: ../../mod/profiles.php:725
-msgid "This is your default profile."
-msgstr "Ceci est votre profil par défaut."
-
-#: ../../mod/profiles.php:736
-msgid "Age: "
-msgstr "Age&nbsp;:"
+#: ../../Zotlabs/Module/Admin.php:2106 ../../include/widgets.php:1390
+msgid "Profile Fields"
+msgstr "Champs de profil"
-#: ../../mod/profiles.php:779
-msgid "Edit/Manage Profiles"
-msgstr "Modifier/gérer les profils"
+#: ../../Zotlabs/Module/Admin.php:2107
+msgid "Basic Profile Fields"
+msgstr "Champs de profil de base"
-#: ../../mod/profiles.php:780
-msgid "Add profile things"
-msgstr "Ajouter des éléments de profil"
-
-#: ../../mod/profiles.php:781
-msgid "Include desirable objects in your profile"
-msgstr "Incluez des objets souhaitables dans votre profil"
-
-#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
-msgid "Invalid profile identifier."
-msgstr "Identifiant de profil invalide."
-
-#: ../../mod/profperm.php:110
-msgid "Profile Visibility Editor"
-msgstr "Éditeur de visibilité de profil"
-
-#: ../../mod/profperm.php:114
-msgid "Click on a contact to add or remove."
-msgstr "Cliquer sur un contact pour l'ajouter ou le retirer."
+#: ../../Zotlabs/Module/Admin.php:2108
+msgid "Advanced Profile Fields"
+msgstr "Champs de profil avancés"
-#: ../../mod/profperm.php:123
-msgid "Visible To"
-msgstr "Visible par"
+#: ../../Zotlabs/Module/Admin.php:2108
+msgid "(In addition to basic fields)"
+msgstr "(en plus des champs de base)"
-#: ../../mod/pubsites.php:18
-msgid "Public Sites"
-msgstr "Sites publics"
+#: ../../Zotlabs/Module/Admin.php:2110
+msgid "All available fields"
+msgstr "Tous les champs disponibles"
-#: ../../mod/pubsites.php:21
-msgid ""
-"The listed sites allow public registration for the $Projectname network. All"
-" sites in the network are interlinked so membership on any of them conveys "
-"membership in the network as a whole. Some sites may require subscription or"
-" provide tiered service plans. The provider links <strong>may</strong> "
-"provide additional details."
-msgstr "Les sites listés autorisent l'inscription publique au réseau $Projectname. Tous les sites du réseau sont interconnectés, l'inscription sur l'un quelconque d'entre eux signifie donc l'inscription sur le réseau dans son ensemble. Certains sites peuvent nécessiter une souscription ou fournir des niveaux de service différenciés. Le lien du fournisseur <strong>peut</strong> fournir plus de détails."
+#: ../../Zotlabs/Module/Admin.php:2111
+msgid "Custom Fields"
+msgstr "Champs personnalisés"
-#: ../../mod/pubsites.php:27
-msgid "Rate this hub"
-msgstr "Noter ce hub"
+#: ../../Zotlabs/Module/Admin.php:2115
+msgid "Create Custom Field"
+msgstr "Créer un champ personnalisé"
-#: ../../mod/pubsites.php:28
-msgid "Site URL"
-msgstr "URL du site"
-
-#: ../../mod/pubsites.php:28
-msgid "Access Type"
-msgstr "Type d'accès"
-
-#: ../../mod/pubsites.php:28
-msgid "Registration Policy"
-msgstr "Politique d'inscription"
+#: ../../Zotlabs/Module/Appman.php:37 ../../Zotlabs/Module/Appman.php:53
+msgid "App installed."
+msgstr "Application installée."
-#: ../../mod/pubsites.php:28
-msgid "Project"
-msgstr "Projet"
+#: ../../Zotlabs/Module/Appman.php:46
+msgid "Malformed app."
+msgstr "Erreur de l'application - Malformée."
-#: ../../mod/pubsites.php:28
-msgid "View hub ratings"
-msgstr "Voir les notes de cette instance"
+#: ../../Zotlabs/Module/Appman.php:104
+msgid "Embed code"
+msgstr "Imbriquer le code"
-#: ../../mod/pubsites.php:32
-msgid "Rate"
-msgstr "Evaluer"
+#: ../../Zotlabs/Module/Appman.php:110 ../../include/widgets.php:107
+msgid "Edit App"
+msgstr "Modifier l'application"
-#: ../../mod/pubsites.php:33
-msgid "View ratings"
-msgstr "Voir les notes"
+#: ../../Zotlabs/Module/Appman.php:110
+msgid "Create App"
+msgstr "Créer une application"
-#: ../../mod/rate.php:158
-msgid "Website:"
-msgstr "Site web&nbsp;:"
+#: ../../Zotlabs/Module/Appman.php:115
+msgid "Name of app"
+msgstr "Nom de l'application"
-#: ../../mod/rate.php:161
-#, php-format
-msgid "Remote Channel [%s] (not yet known on this site)"
-msgstr "Canal distant [%s] (encore inconnu sur ce site)"
+#: ../../Zotlabs/Module/Appman.php:116
+msgid "Location (URL) of app"
+msgstr "Emplacement (URL) de l'application"
-#: ../../mod/rate.php:162
-msgid "Rating (this information is public)"
-msgstr "Evaluation (cette information est publique)"
+#: ../../Zotlabs/Module/Appman.php:118
+msgid "Photo icon URL"
+msgstr "URL de l'icône à utiliser pour cette photo"
-#: ../../mod/rate.php:163
-msgid "Optionally explain your rating (this information is public)"
-msgstr "Explication facultative de votre évaluation (cette information est publique)"
+#: ../../Zotlabs/Module/Appman.php:118
+msgid "80 x 80 pixels - optional"
+msgstr "80 x 80 pixels - facultatif"
-#: ../../mod/ratings.php:69
-msgid "No ratings"
-msgstr "Pas de note"
+#: ../../Zotlabs/Module/Appman.php:119
+msgid "Categories (optional, comma separated list)"
+msgstr ""
-#: ../../mod/ratings.php:100
-msgid "Rating: "
-msgstr "Evaluation&nbsp:"
+#: ../../Zotlabs/Module/Appman.php:120
+msgid "Version ID"
+msgstr "Identifiant de version"
-#: ../../mod/ratings.php:101
-msgid "Website: "
-msgstr "Site web&nbsp;:"
+#: ../../Zotlabs/Module/Appman.php:121
+msgid "Price of app"
+msgstr "Prix de l'application"
-#: ../../mod/ratings.php:103
-msgid "Description: "
-msgstr "Description&nbsp;:"
+#: ../../Zotlabs/Module/Appman.php:122
+msgid "Location (URL) to purchase app"
+msgstr "Emplacement (URL) pour l'achat de l'application"
-#: ../../mod/rbmark.php:90
+#: ../../Zotlabs/Module/Rbmark.php:94
msgid "Select a bookmark folder"
msgstr "Choisir un dossier de favoris"
-#: ../../mod/rbmark.php:95
+#: ../../Zotlabs/Module/Rbmark.php:99
msgid "Save Bookmark"
msgstr "Enregistrer le favori"
-#: ../../mod/rbmark.php:96
+#: ../../Zotlabs/Module/Rbmark.php:100
msgid "URL of bookmark"
msgstr "URL du favori"
-#: ../../mod/rbmark.php:101
+#: ../../Zotlabs/Module/Rbmark.php:105
msgid "Or enter new bookmark folder name"
msgstr "Ou entrez un nouveau nom de dossier de favoris"
-#: ../../mod/register.php:45
+#: ../../Zotlabs/Module/Register.php:49
msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
msgstr "Nombre d'inscriptions quotidiennes dépassé. Merci d'essayer à nouveau demain."
-#: ../../mod/register.php:51
+#: ../../Zotlabs/Module/Register.php:55
msgid ""
"Please indicate acceptance of the Terms of Service. Registration failed."
msgstr "Merci d'indiquer votre adhésion aux conditions de service. L'inscription a échoué."
-#: ../../mod/register.php:85
+#: ../../Zotlabs/Module/Register.php:89
msgid "Passwords do not match."
msgstr "Les mots de passe ne concordent pas."
-#: ../../mod/register.php:127
+#: ../../Zotlabs/Module/Register.php:131
msgid ""
"Registration successful. Please check your email for validation "
"instructions."
msgstr "Inscription réussie. Merci de vérifier vos courriels pour valider votre compte."
-#: ../../mod/register.php:133
+#: ../../Zotlabs/Module/Register.php:137
msgid "Your registration is pending approval by the site owner."
msgstr "Votre inscription est en attente d'approbation par l'administrateur."
-#: ../../mod/register.php:136
+#: ../../Zotlabs/Module/Register.php:140
msgid "Your registration can not be processed."
msgstr "Votre inscription ne peut être traîtée."
-#: ../../mod/register.php:179
-msgid "Registration on this site is disabled."
-msgstr "L'enregistrement est désactivé sur ce site."
+#: ../../Zotlabs/Module/Register.php:184
+msgid "Registration on this hub is disabled."
+msgstr "La création de nouveaux comptes est désactivée pour ce site."
-#: ../../mod/register.php:188
-msgid "Registration on this site/hub is by approval only."
-msgstr "L'inscription sur ce site/hub est soumise à approbation."
+#: ../../Zotlabs/Module/Register.php:193
+msgid "Registration on this hub is by approval only."
+msgstr "La création de compte sur ce site est soumise à approbation."
-#: ../../mod/register.php:189
-msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
-msgstr "<a href=\"pubsites\">S'inscrire sur un autre site/hub affilié</a>"
+#: ../../Zotlabs/Module/Register.php:194
+msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>"
+msgstr "<a href=\"pubsites\">S'enregistrer sur un autre site du réseau.</a>"
-#: ../../mod/register.php:199
+#: ../../Zotlabs/Module/Register.php:204
msgid ""
"This site has exceeded the number of allowed daily account registrations. "
"Please try again tomorrow."
msgstr "Ce site a dépassé le nombre de création de comptes autorisé chaque jour. Merci d'essayer à nouveau demain."
-#: ../../mod/register.php:210
+#: ../../Zotlabs/Module/Register.php:215
msgid "Terms of Service"
msgstr "Conditions de service"
-#: ../../mod/register.php:216
+#: ../../Zotlabs/Module/Register.php:221
#, php-format
msgid "I accept the %s for this website"
msgstr "J'accepte les %s de ce site"
-#: ../../mod/register.php:218
+#: ../../Zotlabs/Module/Register.php:223
#, php-format
msgid "I am over 13 years of age and accept the %s for this website"
msgstr "J'ai plus de 13 ans et j'accepte les %s de ce site"
-#: ../../mod/register.php:242
-msgid "Membership on this site is by invitation only."
-msgstr "L'inscription à ce site se fait uniquement sur invitation."
-
-#: ../../mod/register.php:243
-msgid "Please enter your invitation code"
-msgstr "Merci de saisir votre code d'invitation"
-
-#: ../../mod/register.php:247
-msgid "Enter your name"
-msgstr "Saisissez votre nom"
-
-#: ../../mod/register.php:256
+#: ../../Zotlabs/Module/Register.php:227
msgid "Your email address"
msgstr "Votre adresse de courriel"
-#: ../../mod/register.php:257
+#: ../../Zotlabs/Module/Register.php:228
msgid "Choose a password"
msgstr "Choisissez un mot de passe"
-#: ../../mod/register.php:258
+#: ../../Zotlabs/Module/Register.php:229
msgid "Please re-enter your password"
msgstr "Merci de saisir à nouveau votre mot de passe"
-#: ../../mod/regmod.php:11
+#: ../../Zotlabs/Module/Register.php:230
+msgid "Please enter your invitation code"
+msgstr "Merci de saisir votre code d'invitation"
+
+#: ../../Zotlabs/Module/Register.php:236
+msgid "no"
+msgstr "non"
+
+#: ../../Zotlabs/Module/Register.php:236
+msgid "yes"
+msgstr "oui"
+
+#: ../../Zotlabs/Module/Register.php:250
+msgid "Membership on this site is by invitation only."
+msgstr "L'inscription à ce site se fait uniquement sur invitation."
+
+#: ../../Zotlabs/Module/Register.php:262 ../../include/nav.php:147
+#: ../../boot.php:1685
+msgid "Register"
+msgstr "S'inscrire"
+
+#: ../../Zotlabs/Module/Register.php:262
+msgid "Proceed to create your first channel"
+msgstr "Continuer pour créer votre premier canal"
+
+#: ../../Zotlabs/Module/Regmod.php:15
msgid "Please login."
msgstr "Merci de vous connecter."
-#: ../../mod/removeaccount.php:30
+#: ../../Zotlabs/Module/Removeaccount.php:34
msgid ""
"Account removals are not allowed within 48 hours of changing the account "
"password."
msgstr "Il est impossible de supprimer un compte dans les 48 heures après avoir changé le mot de passe du compte."
-#: ../../mod/removeaccount.php:57
+#: ../../Zotlabs/Module/Removeaccount.php:56
msgid "Remove This Account"
msgstr "Supprimer ce compte"
-#: ../../mod/removeaccount.php:58 ../../mod/removeme.php:58
+#: ../../Zotlabs/Module/Removeaccount.php:57
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "WARNING: "
msgstr "AVERTISSEMENT&nbsp;:"
-#: ../../mod/removeaccount.php:58
+#: ../../Zotlabs/Module/Removeaccount.php:57
msgid ""
"This account and all its channels will be completely removed from the "
"network. "
msgstr "Ce compte et tous ses canaux seront entièrement supprimés du réseau."
-#: ../../mod/removeaccount.php:58 ../../mod/removeme.php:58
+#: ../../Zotlabs/Module/Removeaccount.php:57
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "This action is permanent and can not be undone!"
msgstr "Cette action est permanente et irréversible&nbsp;!"
-#: ../../mod/removeaccount.php:59 ../../mod/removeme.php:59
+#: ../../Zotlabs/Module/Removeaccount.php:58
+#: ../../Zotlabs/Module/Removeme.php:60
msgid "Please enter your password for verification:"
msgstr "Merci de saisir votre mot de passe pour vérification&nbsp;:"
-#: ../../mod/removeaccount.php:60
+#: ../../Zotlabs/Module/Removeaccount.php:59
msgid ""
"Remove this account, all its channels and all its channel clones from the "
"network"
msgstr "Supprimer du réseau ce compte, tous ses canaux et tous les clones de ses canaux."
-#: ../../mod/removeaccount.php:60
+#: ../../Zotlabs/Module/Removeaccount.php:59
msgid ""
"By default only the instances of the channels located on this hub will be "
"removed from the network"
msgstr "Par défaut, seules les instances des canaux situés sur ce hub seront supprimées du réseau"
-#: ../../mod/removeaccount.php:61 ../../mod/settings.php:700
+#: ../../Zotlabs/Module/Removeaccount.php:60
+#: ../../Zotlabs/Module/Settings.php:705
msgid "Remove Account"
msgstr "Supprimer le compte"
-#: ../../mod/removeme.php:29
+#: ../../Zotlabs/Module/Removeme.php:33
msgid ""
"Channel removals are not allowed within 48 hours of changing the account "
"password."
msgstr "Il est impossible de supprimer un canal moins de 48 heures après avoir changé le mot de passe d'un compte."
-#: ../../mod/removeme.php:57
+#: ../../Zotlabs/Module/Removeme.php:58
msgid "Remove This Channel"
msgstr "Supprimer ce canal"
-#: ../../mod/removeme.php:58
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "This channel will be completely removed from the network. "
msgstr "Ce canal sera complètement supprimé du réseau."
-#: ../../mod/removeme.php:60
+#: ../../Zotlabs/Module/Removeme.php:61
msgid "Remove this channel and all its clones from the network"
msgstr "Supprimer ce canal ainsi que tous ses clones sur le réseau"
-#: ../../mod/removeme.php:60
+#: ../../Zotlabs/Module/Removeme.php:61
msgid ""
"By default only the instance of the channel located on this hub will be "
"removed from the network"
msgstr "Par défaut, seule l'instance du canal présente sur ce hub sera supprimée du réseau"
-#: ../../mod/removeme.php:61 ../../mod/settings.php:1115
+#: ../../Zotlabs/Module/Removeme.php:62 ../../Zotlabs/Module/Settings.php:1124
msgid "Remove Channel"
msgstr "Supprimer le canal"
-#: ../../mod/rmagic.php:40
+#: ../../Zotlabs/Module/Rmagic.php:44
msgid ""
"We encountered a problem while logging in with the OpenID you provided. "
"Please check the correct spelling of the ID."
msgstr "Nous avons rencontré un problème avec l'OpenID que vous nous avez fourni. Merci de vérifier que l'ID est correctement saisi."
-#: ../../mod/rmagic.php:40
+#: ../../Zotlabs/Module/Rmagic.php:44
msgid "The error message was:"
msgstr "Le message d'erreur était&nbsp;:"
-#: ../../mod/rmagic.php:44
+#: ../../Zotlabs/Module/Rmagic.php:48
msgid "Authentication failed."
msgstr "Échec de l'authentification."
-#: ../../mod/rmagic.php:84
+#: ../../Zotlabs/Module/Rmagic.php:88
msgid "Remote Authentication"
msgstr "Authentification distante"
-#: ../../mod/rmagic.php:85
+#: ../../Zotlabs/Module/Rmagic.php:89
msgid "Enter your channel address (e.g. channel@example.com)"
msgstr "Entrez l'adresse de votre canal (par ex. moncanal@monsite.com)"
-#: ../../mod/rmagic.php:86
+#: ../../Zotlabs/Module/Rmagic.php:90
msgid "Authenticate"
msgstr "Authentifier"
-#: ../../mod/search.php:212
+#: ../../Zotlabs/Module/Search.php:216
#, php-format
msgid "Items tagged with: %s"
msgstr "Eléments étiquetés avec&nbsp;: %s"
-#: ../../mod/search.php:214
+#: ../../Zotlabs/Module/Search.php:218
#, php-format
msgid "Search results for: %s"
msgstr "Résultats de recherche pour&nbsp;: %s"
-#: ../../mod/service_limits.php:19
+#: ../../Zotlabs/Module/Service_limits.php:23
msgid "No service class restrictions found."
msgstr "Aucune restriction de classe de service trouvée."
-#: ../../mod/settings.php:76
+#: ../../Zotlabs/Module/Settings.php:69
msgid "Name is required"
msgstr "Le nom est requis"
-#: ../../mod/settings.php:80
+#: ../../Zotlabs/Module/Settings.php:73
msgid "Key and Secret are required"
msgstr "Clef et secret sont requis"
-#: ../../mod/settings.php:232
+#: ../../Zotlabs/Module/Settings.php:225
+msgid "Not valid email."
+msgstr "Adresse de courriel non valide."
+
+#: ../../Zotlabs/Module/Settings.php:228
+msgid "Protected email address. Cannot change to that email."
+msgstr "Adresse de courriel protégée. Impossible de l'utiliser."
+
+#: ../../Zotlabs/Module/Settings.php:237
+msgid "System failure storing new email. Please try again."
+msgstr "Défaillance système lors du stockage de la nouvelle adresse de courriel. Merci d'essayer à nouveau."
+
+#: ../../Zotlabs/Module/Settings.php:254
+msgid "Password verification failed."
+msgstr "La vérification du mot de passe a échoué."
+
+#: ../../Zotlabs/Module/Settings.php:261
msgid "Passwords do not match. Password unchanged."
msgstr "Les deux saisies du mot de passe ne correspondent pas. Il n'a donc pas été changé."
-#: ../../mod/settings.php:236
+#: ../../Zotlabs/Module/Settings.php:265
msgid "Empty passwords are not allowed. Password unchanged."
msgstr "Le mot de passe ne peut pas être vide. Il n'a donc pas été changé."
-#: ../../mod/settings.php:250
+#: ../../Zotlabs/Module/Settings.php:279
msgid "Password changed."
msgstr "Le mot de passe a été changé."
-#: ../../mod/settings.php:252
+#: ../../Zotlabs/Module/Settings.php:281
msgid "Password update failed. Please try again."
msgstr "La mise à jour du mot de passe a échoué. Merci d'essayer à nouveau."
-#: ../../mod/settings.php:266
-msgid "Not valid email."
-msgstr "Adresse de courriel non valide."
-
-#: ../../mod/settings.php:269
-msgid "Protected email address. Cannot change to that email."
-msgstr "Adresse de courriel protégée. Impossible de l'utiliser."
-
-#: ../../mod/settings.php:278
-msgid "System failure storing new email. Please try again."
-msgstr "Défaillance système lors du stockage de la nouvelle adresse de courriel. Merci d'essayer à nouveau."
-
-#: ../../mod/settings.php:521
+#: ../../Zotlabs/Module/Settings.php:525
msgid "Settings updated."
msgstr "Paramètres mis à jour."
-#: ../../mod/settings.php:585 ../../mod/settings.php:611
-#: ../../mod/settings.php:647
+#: ../../Zotlabs/Module/Settings.php:589 ../../Zotlabs/Module/Settings.php:615
+#: ../../Zotlabs/Module/Settings.php:651
msgid "Add application"
msgstr "Ajouter une application"
-#: ../../mod/settings.php:588
+#: ../../Zotlabs/Module/Settings.php:592
msgid "Name of application"
msgstr "Nom de l'application"
-#: ../../mod/settings.php:589 ../../mod/settings.php:615
+#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:619
msgid "Consumer Key"
msgstr "Clef client"
-#: ../../mod/settings.php:589 ../../mod/settings.php:590
+#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:594
msgid "Automatically generated - change if desired. Max length 20"
msgstr "Généré automatiquement - à changer si besoin. Longueur maximale 20 caractères."
-#: ../../mod/settings.php:590 ../../mod/settings.php:616
+#: ../../Zotlabs/Module/Settings.php:594 ../../Zotlabs/Module/Settings.php:620
msgid "Consumer Secret"
msgstr "Secret client"
-#: ../../mod/settings.php:591 ../../mod/settings.php:617
+#: ../../Zotlabs/Module/Settings.php:595 ../../Zotlabs/Module/Settings.php:621
msgid "Redirect"
msgstr "Redirection"
-#: ../../mod/settings.php:591
+#: ../../Zotlabs/Module/Settings.php:595
msgid ""
"Redirect URI - leave blank unless your application specifically requires "
"this"
msgstr "URI de redirection - laissez vide, sauf si votre application le requiert spécifiquement"
-#: ../../mod/settings.php:592 ../../mod/settings.php:618
+#: ../../Zotlabs/Module/Settings.php:596 ../../Zotlabs/Module/Settings.php:622
msgid "Icon url"
msgstr "URL de l'icône"
-#: ../../mod/settings.php:592
+#: ../../Zotlabs/Module/Settings.php:596 ../../Zotlabs/Module/Sources.php:112
+#: ../../Zotlabs/Module/Sources.php:147
msgid "Optional"
msgstr "Facultatif"
-#: ../../mod/settings.php:603
+#: ../../Zotlabs/Module/Settings.php:607
msgid "Application not found."
-msgstr ""
+msgstr "Application introuvable."
-#: ../../mod/settings.php:646
+#: ../../Zotlabs/Module/Settings.php:650
msgid "Connected Apps"
msgstr "Applications connectées"
-#: ../../mod/settings.php:650
+#: ../../Zotlabs/Module/Settings.php:654
msgid "Client key starts with"
msgstr "La clef partagée commence par"
-#: ../../mod/settings.php:651
+#: ../../Zotlabs/Module/Settings.php:655
msgid "No name"
msgstr "Sans nom"
-#: ../../mod/settings.php:652
+#: ../../Zotlabs/Module/Settings.php:656
msgid "Remove authorization"
msgstr "Révoquer l'autorisation"
-#: ../../mod/settings.php:665
+#: ../../Zotlabs/Module/Settings.php:669
msgid "No feature settings configured"
msgstr "Aucun paramètre de fonctionnalité configuré"
-#: ../../mod/settings.php:672
+#: ../../Zotlabs/Module/Settings.php:676
msgid "Feature/Addon Settings"
msgstr "Paramètres des extensions/greffons"
-#: ../../mod/settings.php:695
+#: ../../Zotlabs/Module/Settings.php:699
msgid "Account Settings"
msgstr "Paramètres du compte"
-#: ../../mod/settings.php:696
-msgid "Enter New Password:"
-msgstr "Nouveau mot de passe&nbsp;:"
+#: ../../Zotlabs/Module/Settings.php:700
+msgid "Current Password"
+msgstr "Mot de passe actuel"
-#: ../../mod/settings.php:697
-msgid "Confirm New Password:"
-msgstr "Confirmer le nouveau mot de passe&nbsp;:"
+#: ../../Zotlabs/Module/Settings.php:701
+msgid "Enter New Password"
+msgstr "Entrez votre nouveau mot de passe"
-#: ../../mod/settings.php:697
+#: ../../Zotlabs/Module/Settings.php:702
+msgid "Confirm New Password"
+msgstr "Confirmez le nouveau mot de passe"
+
+#: ../../Zotlabs/Module/Settings.php:702
msgid "Leave password fields blank unless changing"
msgstr "Laissez les mots de passe vides si vous ne voulez pas les modifier"
-#: ../../mod/settings.php:699 ../../mod/settings.php:1032
+#: ../../Zotlabs/Module/Settings.php:704
+#: ../../Zotlabs/Module/Settings.php:1041
msgid "Email Address:"
msgstr "Adresse de courriel&nbsp;:"
-#: ../../mod/settings.php:701
+#: ../../Zotlabs/Module/Settings.php:706
msgid "Remove this account including all its channels"
msgstr "Supprimer ce compte et tous ses canaux"
-#: ../../mod/settings.php:724
+#: ../../Zotlabs/Module/Settings.php:729
msgid "Additional Features"
msgstr "Fonctionnalités additionnelles"
-#: ../../mod/settings.php:748
+#: ../../Zotlabs/Module/Settings.php:753
msgid "Connector Settings"
msgstr "Paramètres du connecteur"
-#: ../../mod/settings.php:787
+#: ../../Zotlabs/Module/Settings.php:792
msgid "No special theme for mobile devices"
msgstr "Pas de thème spécifique aux mobiles"
-#: ../../mod/settings.php:790
+#: ../../Zotlabs/Module/Settings.php:795
#, php-format
msgid "%s - (Experimental)"
msgstr "%s - (Expérimental)"
-#: ../../mod/settings.php:829
+#: ../../Zotlabs/Module/Settings.php:837
msgid "Display Settings"
msgstr "Afficher les paramètres"
-#: ../../mod/settings.php:830
+#: ../../Zotlabs/Module/Settings.php:838
msgid "Theme Settings"
msgstr "Paramètres du thème"
-#: ../../mod/settings.php:831
+#: ../../Zotlabs/Module/Settings.php:839
msgid "Custom Theme Settings"
msgstr "Paramètres personnels du thème"
-#: ../../mod/settings.php:832
+#: ../../Zotlabs/Module/Settings.php:840
msgid "Content Settings"
msgstr "Paramètres liés au contenu"
-#: ../../mod/settings.php:838
+#: ../../Zotlabs/Module/Settings.php:846
msgid "Display Theme:"
msgstr "Afficher le thème&nbsp;:"
-#: ../../mod/settings.php:839
+#: ../../Zotlabs/Module/Settings.php:847
msgid "Mobile Theme:"
msgstr "Thème mobile&nbsp;:"
-#: ../../mod/settings.php:840
+#: ../../Zotlabs/Module/Settings.php:848
+msgid "Preload images before rendering the page"
+msgstr "Pré-charger les images avant d'afficher la page"
+
+#: ../../Zotlabs/Module/Settings.php:848
+msgid ""
+"The subjective page load time will be longer but the page will be ready when"
+" displayed"
+msgstr "Le temps de charge perçu de la page sera plus long mais la page sera complète quand elle s'affichera"
+
+#: ../../Zotlabs/Module/Settings.php:849
msgid "Enable user zoom on mobile devices"
msgstr "Permettre à l'utilisateur d'un mobile d'agrandir le contenu"
-#: ../../mod/settings.php:841
+#: ../../Zotlabs/Module/Settings.php:850
msgid "Update browser every xx seconds"
msgstr "Mettre à jour le navigateur toutes les xx secondes"
-#: ../../mod/settings.php:841
+#: ../../Zotlabs/Module/Settings.php:850
msgid "Minimum of 10 seconds, no maximum"
msgstr "Minimum 10 secondes, pas de maximum"
-#: ../../mod/settings.php:842
+#: ../../Zotlabs/Module/Settings.php:851
msgid "Maximum number of conversations to load at any time:"
msgstr "Nombre maximal de conversations pouvant être chargées en même temps&nbsp;:"
-#: ../../mod/settings.php:842
+#: ../../Zotlabs/Module/Settings.php:851
msgid "Maximum of 100 items"
msgstr "100 éléments au maximum"
-#: ../../mod/settings.php:843
+#: ../../Zotlabs/Module/Settings.php:852
msgid "Show emoticons (smilies) as images"
msgstr "Remplacer les émoticônes (smileys) par des images"
-#: ../../mod/settings.php:844
+#: ../../Zotlabs/Module/Settings.php:853
msgid "Link post titles to source"
msgstr "Lier les titres des publications à leur source"
-#: ../../mod/settings.php:845
+#: ../../Zotlabs/Module/Settings.php:854
msgid "System Page Layout Editor - (advanced)"
msgstr "Editeur de mise en page des pages systèmes - (avancé)"
-#: ../../mod/settings.php:848
+#: ../../Zotlabs/Module/Settings.php:857
msgid "Use blog/list mode on channel page"
msgstr "Utiliser le mode blog/liste sur la page du canal"
-#: ../../mod/settings.php:848 ../../mod/settings.php:849
+#: ../../Zotlabs/Module/Settings.php:857 ../../Zotlabs/Module/Settings.php:858
msgid "(comments displayed separately)"
msgstr "(commentaires affichés séparément)"
-#: ../../mod/settings.php:849
+#: ../../Zotlabs/Module/Settings.php:858
msgid "Use blog/list mode on grid page"
msgstr "Utiliser le mode blog/liste sur la page du réseau"
-#: ../../mod/settings.php:850
+#: ../../Zotlabs/Module/Settings.php:859
msgid "Channel page max height of content (in pixels)"
msgstr "Hauteur maximale du contenu pour la page du canal (en pixels)"
-#: ../../mod/settings.php:850 ../../mod/settings.php:851
+#: ../../Zotlabs/Module/Settings.php:859 ../../Zotlabs/Module/Settings.php:860
msgid "click to expand content exceeding this height"
msgstr "cliquer pour dérouler le contenu dépassant cette limite"
-#: ../../mod/settings.php:851
+#: ../../Zotlabs/Module/Settings.php:860
msgid "Grid page max height of content (in pixels)"
msgstr "Hauteur maximale du contenu sur la page du réseau (en pixels)"
-#: ../../mod/settings.php:885
+#: ../../Zotlabs/Module/Settings.php:894
msgid "Nobody except yourself"
msgstr "Personne sauf vous"
-#: ../../mod/settings.php:886
+#: ../../Zotlabs/Module/Settings.php:895
msgid "Only those you specifically allow"
msgstr "Seulement ceux que vous autorisez spécifiquement"
-#: ../../mod/settings.php:887
+#: ../../Zotlabs/Module/Settings.php:896
msgid "Approved connections"
msgstr "Contacts approuvés"
-#: ../../mod/settings.php:888
+#: ../../Zotlabs/Module/Settings.php:897
msgid "Any connections"
msgstr "Tous les contacts"
-#: ../../mod/settings.php:889
+#: ../../Zotlabs/Module/Settings.php:898
msgid "Anybody on this website"
msgstr "Tous les utilisateurs du hub"
-#: ../../mod/settings.php:890
+#: ../../Zotlabs/Module/Settings.php:899
msgid "Anybody in this network"
msgstr "Tous les utilisateurs sur ce réseau"
-#: ../../mod/settings.php:891
+#: ../../Zotlabs/Module/Settings.php:900
msgid "Anybody authenticated"
msgstr "Tous les utilisateurs authentifiés"
-#: ../../mod/settings.php:892
+#: ../../Zotlabs/Module/Settings.php:901
msgid "Anybody on the internet"
msgstr "Tous les utilisateurs d'Internet"
-#: ../../mod/settings.php:967
+#: ../../Zotlabs/Module/Settings.php:976
msgid "Publish your default profile in the network directory"
msgstr "Publier votre profil par défaut dans l'annuaire du réseau"
-#: ../../mod/settings.php:972
+#: ../../Zotlabs/Module/Settings.php:981
msgid "Allow us to suggest you as a potential friend to new members?"
msgstr "Nous autoriser à vous suggérer comme ami(e) potentiel(le) aux nouveaux membres?"
-#: ../../mod/settings.php:981
+#: ../../Zotlabs/Module/Settings.php:990
msgid "Your channel address is"
msgstr "L'adresse de votre canal est"
-#: ../../mod/settings.php:1023
+#: ../../Zotlabs/Module/Settings.php:1032
msgid "Channel Settings"
msgstr "Paramètres du canal"
-#: ../../mod/settings.php:1030
+#: ../../Zotlabs/Module/Settings.php:1039
msgid "Basic Settings"
msgstr "Paramètres standard"
-#: ../../mod/settings.php:1033
+#: ../../Zotlabs/Module/Settings.php:1040 ../../include/channel.php:1140
+msgid "Full Name:"
+msgstr "Nom complet&nbsp;:"
+
+#: ../../Zotlabs/Module/Settings.php:1042
msgid "Your Timezone:"
msgstr "Votre fureau horaire&nbsp;:"
-#: ../../mod/settings.php:1034
+#: ../../Zotlabs/Module/Settings.php:1043
msgid "Default Post Location:"
msgstr "Emplacement de publication par défaut&nbsp;:"
-#: ../../mod/settings.php:1034
+#: ../../Zotlabs/Module/Settings.php:1043
msgid "Geographical location to display on your posts"
msgstr "Emplacement géographique à afficher sur vos publications"
-#: ../../mod/settings.php:1035
+#: ../../Zotlabs/Module/Settings.php:1044
msgid "Use Browser Location:"
msgstr "Utiliser la géolocalisation du navigateur&nbsp;:"
-#: ../../mod/settings.php:1037
+#: ../../Zotlabs/Module/Settings.php:1046
msgid "Adult Content"
msgstr "Contenu \"adulte\""
-#: ../../mod/settings.php:1037
+#: ../../Zotlabs/Module/Settings.php:1046
msgid ""
"This channel frequently or regularly publishes adult content. (Please tag "
"any adult material and/or nudity with #NSFW)"
msgstr "Ce canal publie plus ou moins fréquemment du contenu pour adultes. (Merci d'indiquer tout contenu pour adulte ou potentiellement choquant avec l'étiquette <em>#NSFW</em> - Not Safe For Work)"
-#: ../../mod/settings.php:1039
+#: ../../Zotlabs/Module/Settings.php:1048
msgid "Security and Privacy Settings"
msgstr "Paramètres de sécurité et de confidentialité"
-#: ../../mod/settings.php:1042
+#: ../../Zotlabs/Module/Settings.php:1051
msgid "Your permissions are already configured. Click to view/adjust"
msgstr "Vous permissions sont déjà paramétrées. Cliquer pour voir/ajuster"
-#: ../../mod/settings.php:1044
+#: ../../Zotlabs/Module/Settings.php:1053
msgid "Hide my online presence"
msgstr "Cacher ma présence en ligne"
-#: ../../mod/settings.php:1044
+#: ../../Zotlabs/Module/Settings.php:1053
msgid "Prevents displaying in your profile that you are online"
msgstr "Cacher votre statut (en ligne/hors ligne) sur votre profil"
-#: ../../mod/settings.php:1046
+#: ../../Zotlabs/Module/Settings.php:1055
msgid "Simple Privacy Settings:"
msgstr "Paramètres de confidentialité simplifiés&nbsp;:"
-#: ../../mod/settings.php:1047
+#: ../../Zotlabs/Module/Settings.php:1056
msgid ""
"Very Public - <em>extremely permissive (should be used with caution)</em>"
msgstr "Très public - <em>extrèmement permissif (à n'utiliser qu'en connaissance de cause)</em>"
-#: ../../mod/settings.php:1048
+#: ../../Zotlabs/Module/Settings.php:1057
msgid ""
"Typical - <em>default public, privacy when desired (similar to social "
"network permissions but with improved privacy)</em>"
msgstr "Classique - <em>public par défaut, privé en cas de besoin (comparable aux permissions type réseau social, avec une confidentialité améliorée)</em>"
-#: ../../mod/settings.php:1049
+#: ../../Zotlabs/Module/Settings.php:1058
msgid "Private - <em>default private, never open or public</em>"
msgstr "Privé - <em>privé par défaut, jamais ouvert ni public</em>"
-#: ../../mod/settings.php:1050
+#: ../../Zotlabs/Module/Settings.php:1059
msgid "Blocked - <em>default blocked to/from everybody</em>"
msgstr "Bloqué - <em>par défaut, bloqué de/vers tout le monde</em>"
-#: ../../mod/settings.php:1052
+#: ../../Zotlabs/Module/Settings.php:1061
msgid "Allow others to tag your posts"
msgstr "Autoriser les autres à \"étiqueter\" vos publications"
-#: ../../mod/settings.php:1052
+#: ../../Zotlabs/Module/Settings.php:1061
msgid ""
"Often used by the community to retro-actively flag inappropriate content"
msgstr "Souvent utilisé par la communauté pour identifier un contenu inapproprié a posteriori "
-#: ../../mod/settings.php:1054
+#: ../../Zotlabs/Module/Settings.php:1063
msgid "Advanced Privacy Settings"
msgstr "Paramètres de confidentialité avancés"
-#: ../../mod/settings.php:1056
+#: ../../Zotlabs/Module/Settings.php:1065
msgid "Expire other channel content after this many days"
msgstr "Faire expirer le contenu des autres canaux après n jours"
-#: ../../mod/settings.php:1056
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "0 or blank to use the website limit."
+msgstr ""
+
+#: ../../Zotlabs/Module/Settings.php:1065
#, php-format
-msgid ""
-"0 or blank to use the website limit. The website expires after %d days."
-msgstr "0 ou vide pour utiliser la limite du site. Le délai du site est de %d jours."
+msgid "This website expires after %d days."
+msgstr ""
-#: ../../mod/settings.php:1057
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "This website does not expire imported content."
+msgstr ""
+
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "The website limit takes precedence if lower than your limit."
+msgstr ""
+
+#: ../../Zotlabs/Module/Settings.php:1066
msgid "Maximum Friend Requests/Day:"
msgstr "Nombre maximum de demandes de contact par jour&nbsp;:"
-#: ../../mod/settings.php:1057
+#: ../../Zotlabs/Module/Settings.php:1066
msgid "May reduce spam activity"
msgstr "Contribue à réduire l'impact des indésirables"
-#: ../../mod/settings.php:1058
-msgid "Default Post Permissions"
-msgstr "Permissions par défaut des publications"
+#: ../../Zotlabs/Module/Settings.php:1067
+msgid "Default Post and Publish Permissions"
+msgstr ""
-#: ../../mod/settings.php:1063
+#: ../../Zotlabs/Module/Settings.php:1069
+msgid "Use my default audience setting for the type of object published"
+msgstr ""
+
+#: ../../Zotlabs/Module/Settings.php:1072
msgid "Channel permissions category:"
msgstr "Catégorie de permissions du canal&nbsp;:"
-#: ../../mod/settings.php:1069
+#: ../../Zotlabs/Module/Settings.php:1078
msgid "Maximum private messages per day from unknown people:"
msgstr "Nombre maximum de messages privés émanant d'inconnus, par jour&nbsp;:"
-#: ../../mod/settings.php:1069
+#: ../../Zotlabs/Module/Settings.php:1078
msgid "Useful to reduce spamming"
msgstr "Utile pour réduire les indésirables"
-#: ../../mod/settings.php:1072
+#: ../../Zotlabs/Module/Settings.php:1081
msgid "Notification Settings"
msgstr "Paramètres de notification"
-#: ../../mod/settings.php:1073
+#: ../../Zotlabs/Module/Settings.php:1082
msgid "By default post a status message when:"
msgstr "Par défaut, publier un statut quand&nbsp;:"
-#: ../../mod/settings.php:1074
+#: ../../Zotlabs/Module/Settings.php:1083
msgid "accepting a friend request"
msgstr "vous acceptez une demande de contact"
-#: ../../mod/settings.php:1075
+#: ../../Zotlabs/Module/Settings.php:1084
msgid "joining a forum/community"
msgstr "vous rejoignez un forum ou une communauté"
-#: ../../mod/settings.php:1076
+#: ../../Zotlabs/Module/Settings.php:1085
msgid "making an <em>interesting</em> profile change"
msgstr "vous faîtes une modification <em>intéressante</em> de votre profil"
-#: ../../mod/settings.php:1077
+#: ../../Zotlabs/Module/Settings.php:1086
msgid "Send a notification email when:"
msgstr "Envoyer un courriel de notification quand&nbsp;:"
-#: ../../mod/settings.php:1078
+#: ../../Zotlabs/Module/Settings.php:1087
msgid "You receive a connection request"
msgstr "Vous recevez une demande de contact"
-#: ../../mod/settings.php:1079
+#: ../../Zotlabs/Module/Settings.php:1088
msgid "Your connections are confirmed"
msgstr "Vos contacts sont confirmés"
-#: ../../mod/settings.php:1080
+#: ../../Zotlabs/Module/Settings.php:1089
msgid "Someone writes on your profile wall"
msgstr "Quelqu'un a écrit sur votre mur"
-#: ../../mod/settings.php:1081
+#: ../../Zotlabs/Module/Settings.php:1090
msgid "Someone writes a followup comment"
msgstr "Quelqu'un a commenté vos publications"
-#: ../../mod/settings.php:1082
+#: ../../Zotlabs/Module/Settings.php:1091
msgid "You receive a private message"
msgstr "Vous recevez un message privé"
-#: ../../mod/settings.php:1083
+#: ../../Zotlabs/Module/Settings.php:1092
msgid "You receive a friend suggestion"
msgstr "Vous recevez une suggestion d'amitié/contact"
-#: ../../mod/settings.php:1084
+#: ../../Zotlabs/Module/Settings.php:1093
msgid "You are tagged in a post"
msgstr "Vous êtes étiqueté dans une publication"
-#: ../../mod/settings.php:1085
+#: ../../Zotlabs/Module/Settings.php:1094
msgid "You are poked/prodded/etc. in a post"
msgstr "Vous êtes tapoté/encouragé/etc. dans une publication"
-#: ../../mod/settings.php:1088
+#: ../../Zotlabs/Module/Settings.php:1097
msgid "Show visual notifications including:"
msgstr "Afficher des notifications visuelles y compris&nbsp;:"
-#: ../../mod/settings.php:1090
+#: ../../Zotlabs/Module/Settings.php:1099
msgid "Unseen grid activity"
msgstr "Activité du réseau pas encore consultée"
-#: ../../mod/settings.php:1091
+#: ../../Zotlabs/Module/Settings.php:1100
msgid "Unseen channel activity"
msgstr "Activité non vue sur le canal"
-#: ../../mod/settings.php:1092
+#: ../../Zotlabs/Module/Settings.php:1101
msgid "Unseen private messages"
msgstr "Messages privés non lus"
-#: ../../mod/settings.php:1092 ../../mod/settings.php:1097
-#: ../../mod/settings.php:1098 ../../mod/settings.php:1099
+#: ../../Zotlabs/Module/Settings.php:1101
+#: ../../Zotlabs/Module/Settings.php:1106
+#: ../../Zotlabs/Module/Settings.php:1107
+#: ../../Zotlabs/Module/Settings.php:1108
msgid "Recommended"
msgstr "Recommandé"
-#: ../../mod/settings.php:1093
+#: ../../Zotlabs/Module/Settings.php:1102
msgid "Upcoming events"
msgstr "Événements à venir"
-#: ../../mod/settings.php:1094
+#: ../../Zotlabs/Module/Settings.php:1103
msgid "Events today"
msgstr "Événements aujourd'hui"
-#: ../../mod/settings.php:1095
+#: ../../Zotlabs/Module/Settings.php:1104
msgid "Upcoming birthdays"
msgstr "Anniversaires à venir"
-#: ../../mod/settings.php:1095
+#: ../../Zotlabs/Module/Settings.php:1104
msgid "Not available in all themes"
msgstr "Pas disponible dans tous les thèmes"
-#: ../../mod/settings.php:1096
+#: ../../Zotlabs/Module/Settings.php:1105
msgid "System (personal) notifications"
msgstr "Notifications système (personnelles)"
-#: ../../mod/settings.php:1097
+#: ../../Zotlabs/Module/Settings.php:1106
msgid "System info messages"
msgstr "Messages d'info système"
-#: ../../mod/settings.php:1098
+#: ../../Zotlabs/Module/Settings.php:1107
msgid "System critical alerts"
msgstr "Alertes critiques système"
-#: ../../mod/settings.php:1099
+#: ../../Zotlabs/Module/Settings.php:1108
msgid "New connections"
msgstr "Nouveaux contacts"
-#: ../../mod/settings.php:1100
+#: ../../Zotlabs/Module/Settings.php:1109
msgid "System Registrations"
msgstr "Inscriptions système"
-#: ../../mod/settings.php:1101
+#: ../../Zotlabs/Module/Settings.php:1110
msgid ""
"Also show new wall posts, private messages and connections under Notices"
msgstr "Afficher également les nouvelles publications sur le mur, les messages privés et les contacts dans Notifications"
-#: ../../mod/settings.php:1103
+#: ../../Zotlabs/Module/Settings.php:1112
msgid "Notify me of events this many days in advance"
msgstr "Me prévenir d’événements à venir tant de jours en avance"
-#: ../../mod/settings.php:1103
+#: ../../Zotlabs/Module/Settings.php:1112
msgid "Must be greater than 0"
msgstr "Doit être supérieur à 0"
-#: ../../mod/settings.php:1105
+#: ../../Zotlabs/Module/Settings.php:1114
msgid "Advanced Account/Page Type Settings"
msgstr "Paramètres avancés de compte/type de page"
-#: ../../mod/settings.php:1106
+#: ../../Zotlabs/Module/Settings.php:1115
msgid "Change the behaviour of this account for special situations"
msgstr "Modifie le comportement de ce compte pour des situations particulières"
-#: ../../mod/settings.php:1109
+#: ../../Zotlabs/Module/Settings.php:1118
msgid ""
"Please enable expert mode (in <a href=\"settings/features\">Settings > "
"Additional features</a>) to adjust!"
msgstr "Mode expert requis (<a href=\"settings/features\">Paramètres > Fonctions supplémentaires</a>) pour ajuster&nbsp;!"
-#: ../../mod/settings.php:1110
+#: ../../Zotlabs/Module/Settings.php:1119
msgid "Miscellaneous Settings"
msgstr "Paramètres divers"
-#: ../../mod/settings.php:1111
+#: ../../Zotlabs/Module/Settings.php:1120
msgid "Default photo upload folder"
msgstr "Répertoire par défaut pour les photos téléversées"
-#: ../../mod/settings.php:1111 ../../mod/settings.php:1112
+#: ../../Zotlabs/Module/Settings.php:1120
+#: ../../Zotlabs/Module/Settings.php:1121
msgid "%Y - current year, %m - current month"
msgstr "%Y - année en cours, %m - mois en cours"
-#: ../../mod/settings.php:1112
+#: ../../Zotlabs/Module/Settings.php:1121
msgid "Default file upload folder"
msgstr "Répertoire par défaut pour les fichiers téléversés"
-#: ../../mod/settings.php:1114
+#: ../../Zotlabs/Module/Settings.php:1123
msgid "Personal menu to display in your channel pages"
msgstr "Menu personnel à afficher sur les pages de votre canal"
-#: ../../mod/settings.php:1116
+#: ../../Zotlabs/Module/Settings.php:1125
msgid "Remove this channel."
msgstr "Supprimer ce canal"
-#: ../../mod/settings.php:1117
+#: ../../Zotlabs/Module/Settings.php:1126
msgid "Firefox Share $Projectname provider"
msgstr "Connecteur $Projectname pour Firefox Share"
-#: ../../mod/settings.php:1118
+#: ../../Zotlabs/Module/Settings.php:1127
msgid "Start calendar week on monday"
msgstr "Commencer la semaine du calendrier le lundi"
-#: ../../mod/setup.php:194
+#: ../../Zotlabs/Module/Setup.php:179
msgid "$Projectname Server - Setup"
msgstr "Serveur $Projectname - configuration"
-#: ../../mod/setup.php:198
+#: ../../Zotlabs/Module/Setup.php:183
msgid "Could not connect to database."
msgstr "Impossible de se connecter à la base de données."
-#: ../../mod/setup.php:202
+#: ../../Zotlabs/Module/Setup.php:187
msgid ""
"Could not connect to specified site URL. Possible SSL certificate or DNS "
"issue."
msgstr "Impossible de se connecter à l'URL indiquée. Problème potentiel de certificat SSL/TLS ou de DNS."
-#: ../../mod/setup.php:209
+#: ../../Zotlabs/Module/Setup.php:194
msgid "Could not create table."
msgstr "Impossible de créer la table."
-#: ../../mod/setup.php:214
+#: ../../Zotlabs/Module/Setup.php:199
msgid "Your site database has been installed."
msgstr "La base de données de votre site a été installée."
-#: ../../mod/setup.php:218
+#: ../../Zotlabs/Module/Setup.php:203
msgid ""
"You may need to import the file \"install/schema_xxx.sql\" manually using a "
"database client."
msgstr "Vous pourriez avoir besoin d'importer le fichier \"install/schema_xxx.sql\" manuellement via un client de base de données (ex: phpmyadmin)."
-#: ../../mod/setup.php:219 ../../mod/setup.php:287 ../../mod/setup.php:737
+#: ../../Zotlabs/Module/Setup.php:204 ../../Zotlabs/Module/Setup.php:266
+#: ../../Zotlabs/Module/Setup.php:721
msgid "Please see the file \"install/INSTALL.txt\"."
msgstr "Merci de consulter le fichier \"install/INSTALL.txt\"."
-#: ../../mod/setup.php:284
+#: ../../Zotlabs/Module/Setup.php:263
msgid "System check"
msgstr "Vérification du système"
-#: ../../mod/setup.php:289
+#: ../../Zotlabs/Module/Setup.php:268
msgid "Check again"
msgstr "Re-vérifier"
-#: ../../mod/setup.php:311
+#: ../../Zotlabs/Module/Setup.php:290
msgid "Database connection"
msgstr "Connexion à la base de données"
-#: ../../mod/setup.php:312
+#: ../../Zotlabs/Module/Setup.php:291
msgid ""
"In order to install $Projectname we need to know how to connect to your "
"database."
msgstr "Pour installer $Projectname, nous avons besoin de savoir comment se connecter à votre base de données."
-#: ../../mod/setup.php:313
+#: ../../Zotlabs/Module/Setup.php:292
msgid ""
"Please contact your hosting provider or site administrator if you have "
"questions about these settings."
msgstr "Merci de contacter votre prestataire d'hébergement ou votre administrateur de site si vous avez des questions à propos de ces paramètres."
-#: ../../mod/setup.php:314
+#: ../../Zotlabs/Module/Setup.php:293
msgid ""
"The database you specify below should already exist. If it does not, please "
"create it before continuing."
msgstr "La base de données que vous allez spécifier doit exister. Si ce n'est pas déjà le cas, merci de la créer avant de continuer."
-#: ../../mod/setup.php:318
+#: ../../Zotlabs/Module/Setup.php:297
msgid "Database Server Name"
msgstr "Nom du serveur de base de données"
-#: ../../mod/setup.php:318
+#: ../../Zotlabs/Module/Setup.php:297
msgid "Default is 127.0.0.1"
msgstr "Par défaut 127.0.0.1"
-#: ../../mod/setup.php:319
+#: ../../Zotlabs/Module/Setup.php:298
msgid "Database Port"
msgstr "Port de la base de données"
-#: ../../mod/setup.php:319
+#: ../../Zotlabs/Module/Setup.php:298
msgid "Communication port number - use 0 for default"
msgstr "Numéro TCP du port - utilisez 0 pour la valeur par défaut"
-#: ../../mod/setup.php:320
+#: ../../Zotlabs/Module/Setup.php:299
msgid "Database Login Name"
msgstr "Identifiant de connexion à la Base de Données"
-#: ../../mod/setup.php:321
+#: ../../Zotlabs/Module/Setup.php:300
msgid "Database Login Password"
msgstr "Mot de passe de connexion à la Base de Données"
-#: ../../mod/setup.php:322
+#: ../../Zotlabs/Module/Setup.php:301
msgid "Database Name"
msgstr "Nom de la Base de Données"
-#: ../../mod/setup.php:323
+#: ../../Zotlabs/Module/Setup.php:302
msgid "Database Type"
msgstr "Type de base de données"
-#: ../../mod/setup.php:325 ../../mod/setup.php:365
+#: ../../Zotlabs/Module/Setup.php:304 ../../Zotlabs/Module/Setup.php:344
msgid "Site administrator email address"
msgstr "Adresse de courriel de l'administrateur du site"
-#: ../../mod/setup.php:325 ../../mod/setup.php:365
+#: ../../Zotlabs/Module/Setup.php:304 ../../Zotlabs/Module/Setup.php:344
msgid ""
"Your account email address must match this in order to use the web admin "
"panel."
msgstr "Votre compte devra utiliser la même adresse de courriel pour pouvoir utiliser l'administration web."
-#: ../../mod/setup.php:326 ../../mod/setup.php:367
+#: ../../Zotlabs/Module/Setup.php:305 ../../Zotlabs/Module/Setup.php:346
msgid "Website URL"
msgstr "URL du site web"
-#: ../../mod/setup.php:326 ../../mod/setup.php:367
+#: ../../Zotlabs/Module/Setup.php:305 ../../Zotlabs/Module/Setup.php:346
msgid "Please use SSL (https) URL if available."
msgstr "Veuillez utiliser SSL/TLS (https) si disponible."
-#: ../../mod/setup.php:327 ../../mod/setup.php:370
+#: ../../Zotlabs/Module/Setup.php:306 ../../Zotlabs/Module/Setup.php:349
msgid "Please select a default timezone for your website"
msgstr "Veuillez choisir un fuseau horaire par défaut pour votre site"
-#: ../../mod/setup.php:354
+#: ../../Zotlabs/Module/Setup.php:333
msgid "Site settings"
msgstr "Paramètres du site"
-#: ../../mod/setup.php:368
+#: ../../Zotlabs/Module/Setup.php:347
msgid "Enable $Projectname <strong>advanced</strong> features?"
-msgstr ""
+msgstr "Activer les fonctionnalités <strong>avancées</strong> de $Projectname&nbsp;?"
-#: ../../mod/setup.php:368
+#: ../../Zotlabs/Module/Setup.php:347
msgid ""
"Some advanced features, while useful - may be best suited for technically "
"proficient audiences"
+msgstr "Certaines fonctionnalités avancées, bien qu'utiles, sont plus adaptées aux utilisateurs chevronnés."
+
+#: ../../Zotlabs/Module/Setup.php:388
+msgid "PHP version 5.5 or greater is required."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:389
+msgid "PHP version"
msgstr ""
-#: ../../mod/setup.php:420
+#: ../../Zotlabs/Module/Setup.php:404
msgid "Could not find a command line version of PHP in the web server PATH."
msgstr "Impossible de trouver une version CLI de PHP dans le PATH du serveur web."
-#: ../../mod/setup.php:421
+#: ../../Zotlabs/Module/Setup.php:405
msgid ""
"If you don't have a command line version of PHP installed on server, you "
"will not be able to run background polling via cron."
msgstr "En l'absence de version CLI de PHP sur votre serveur, vous ne pourrez pas utiliser la synchronisation en arrière-plan via cron."
-#: ../../mod/setup.php:425
+#: ../../Zotlabs/Module/Setup.php:409
msgid "PHP executable path"
msgstr "Chemin vers l'éxecutable PHP"
-#: ../../mod/setup.php:425
+#: ../../Zotlabs/Module/Setup.php:409
msgid ""
"Enter full path to php executable. You can leave this blank to continue the "
"installation."
msgstr "Entrez le chemin complet vers l'exécutable php. Vous pouvez continuer l'installation sans."
-#: ../../mod/setup.php:430
+#: ../../Zotlabs/Module/Setup.php:414
msgid "Command line PHP"
msgstr "PHP en ligne de commande (CLI)"
-#: ../../mod/setup.php:439
+#: ../../Zotlabs/Module/Setup.php:423
msgid ""
"The command line version of PHP on your system does not have "
"\"register_argc_argv\" enabled."
msgstr "La version CLI de PHP sur votre système n'a pas l'option \"register_argc_argv\" activée."
-#: ../../mod/setup.php:440
+#: ../../Zotlabs/Module/Setup.php:424
msgid "This is required for message delivery to work."
msgstr "Elle est nécessaire pour la distribution des messages."
-#: ../../mod/setup.php:443
+#: ../../Zotlabs/Module/Setup.php:427
msgid "PHP register_argc_argv"
msgstr "PHP register_argc_argv"
-#: ../../mod/setup.php:461
+#: ../../Zotlabs/Module/Setup.php:445
#, php-format
msgid ""
"Your max allowed total upload size is set to %s. Maximum size of one file to"
" upload is set to %s. You are allowed to upload up to %d files at once."
msgstr "Votre taille de téléversement maximale totale autorisée est fixée à %s. La taille maximale d'un seul fichier à téléverser est fixée à %s. Vous pouvez téléverser jusqu'à %d fichier(s) à la fois."
-#: ../../mod/setup.php:466
+#: ../../Zotlabs/Module/Setup.php:450
msgid "You can adjust these settings in the servers php.ini."
msgstr "Vous pouvez ajuster ces paramètres dans le php.ini du serveur."
-#: ../../mod/setup.php:468
+#: ../../Zotlabs/Module/Setup.php:452
msgid "PHP upload limits"
msgstr "Limites de téléversement de PHP"
-#: ../../mod/setup.php:491
+#: ../../Zotlabs/Module/Setup.php:475
msgid ""
"Error: the \"openssl_pkey_new\" function on this system is not able to "
"generate encryption keys"
msgstr "Erreur&nbsp;: la fonction \"openssl_pkey_new\" de ce système n'est pas capable de générer des clefs de chiffrement"
-#: ../../mod/setup.php:492
+#: ../../Zotlabs/Module/Setup.php:476
msgid ""
"If running under Windows, please see "
"\"http://www.php.net/manual/en/openssl.installation.php\"."
msgstr "Si vous êtes sur un serveur Windows, merci de consulter \"http://www.php.net/manual/fr/openssl.installation.php\"."
-#: ../../mod/setup.php:495
+#: ../../Zotlabs/Module/Setup.php:479
msgid "Generate encryption keys"
msgstr "Générer les clefs de chiffrement"
-#: ../../mod/setup.php:507
+#: ../../Zotlabs/Module/Setup.php:491
msgid "libCurl PHP module"
msgstr "module PHP libCurl"
-#: ../../mod/setup.php:508
+#: ../../Zotlabs/Module/Setup.php:492
msgid "GD graphics PHP module"
msgstr "module PHP GD graphics"
-#: ../../mod/setup.php:509
+#: ../../Zotlabs/Module/Setup.php:493
msgid "OpenSSL PHP module"
msgstr "module PHP OpenSSL"
-#: ../../mod/setup.php:510
+#: ../../Zotlabs/Module/Setup.php:494
msgid "mysqli or postgres PHP module"
msgstr "module PHP postgres ou mysqli"
-#: ../../mod/setup.php:511
+#: ../../Zotlabs/Module/Setup.php:495
msgid "mb_string PHP module"
msgstr "module PHP mb_string"
-#: ../../mod/setup.php:512
+#: ../../Zotlabs/Module/Setup.php:496
msgid "mcrypt PHP module"
msgstr "module PHP mcrypt"
-#: ../../mod/setup.php:513
+#: ../../Zotlabs/Module/Setup.php:497
msgid "xml PHP module"
msgstr "module PHP xml"
-#: ../../mod/setup.php:517 ../../mod/setup.php:519
+#: ../../Zotlabs/Module/Setup.php:501 ../../Zotlabs/Module/Setup.php:503
msgid "Apache mod_rewrite module"
msgstr "module Apache mod_rewrite"
-#: ../../mod/setup.php:517
+#: ../../Zotlabs/Module/Setup.php:501
msgid ""
"Error: Apache webserver mod-rewrite module is required but not installed."
msgstr "Erreur&nbsp;: le module mod-rewrite du serveur web Apache est requis, mais pas installé."
-#: ../../mod/setup.php:523 ../../mod/setup.php:526
+#: ../../Zotlabs/Module/Setup.php:507 ../../Zotlabs/Module/Setup.php:510
msgid "proc_open"
msgstr "proc_open"
-#: ../../mod/setup.php:523
+#: ../../Zotlabs/Module/Setup.php:507
msgid ""
"Error: proc_open is required but is either not installed or has been "
"disabled in php.ini"
msgstr "Erreur&nbsp;: proc_open est requis, mais soit n'est pas installé, soit est désactivé dans le php.ini"
-#: ../../mod/setup.php:531
+#: ../../Zotlabs/Module/Setup.php:515
msgid "Error: libCURL PHP module required but not installed."
msgstr "Erreur&nbsp;: le module libCURL de PHP est requis, mais pas installé."
-#: ../../mod/setup.php:535
+#: ../../Zotlabs/Module/Setup.php:519
msgid ""
"Error: GD graphics PHP module with JPEG support required but not installed."
msgstr "Erreur&nbsp;: le module GD de PHP avec support JPEG est requis, mais pas installé."
-#: ../../mod/setup.php:539
+#: ../../Zotlabs/Module/Setup.php:523
msgid "Error: openssl PHP module required but not installed."
msgstr "Erreur&nbsp;: le module openssl de PHP est requis, mais pas installé."
-#: ../../mod/setup.php:543
+#: ../../Zotlabs/Module/Setup.php:527
msgid ""
"Error: mysqli or postgres PHP module required but neither are installed."
msgstr "Erreur&nbsp;: un module PHP mysqli ou postgres est requis, mais aucun des deux n'est installé."
-#: ../../mod/setup.php:547
+#: ../../Zotlabs/Module/Setup.php:531
msgid "Error: mb_string PHP module required but not installed."
msgstr "Erreur&nbsp;: le module mb_string de PHP est requis, mais pas installé."
-#: ../../mod/setup.php:551
+#: ../../Zotlabs/Module/Setup.php:535
msgid "Error: mcrypt PHP module required but not installed."
msgstr "Erreur&nbsp;: le module mcrypt de PHP est requis, mais pas installé."
-#: ../../mod/setup.php:555
+#: ../../Zotlabs/Module/Setup.php:539
msgid "Error: xml PHP module required for DAV but not installed."
msgstr "Erreur&nbsp;: le module xml de PHP est requis pour le DAV, mais pas installé."
-#: ../../mod/setup.php:573
+#: ../../Zotlabs/Module/Setup.php:557
msgid ""
"The web installer needs to be able to create a file called \".htconfig.php\""
" in the top folder of your web server and it is unable to do so."
msgstr "L'installeur web a besoin de créer un fichier \".htconfig.php\" à la racine de votre serveur web, mais en est incapable."
-#: ../../mod/setup.php:574
+#: ../../Zotlabs/Module/Setup.php:558
msgid ""
"This is most often a permission setting, as the web server may not be able "
"to write files in your folder - even if you can."
msgstr "C'est généralement lié à un problème de droits, à cause duquel le serveur web est interdit d'écriture dans le répertoire concerné - alors que votre propre utilisateur a le droit."
-#: ../../mod/setup.php:575
+#: ../../Zotlabs/Module/Setup.php:559
msgid ""
"At the end of this procedure, we will give you a text to save in a file "
"named .htconfig.php in your Red top folder."
msgstr "Au terme de cette procédure, nous vous transmettrons un texte à sauvegarder dans un fichier nommé .htconfig.php, à la racine de votre installation de $Projectname."
-#: ../../mod/setup.php:576
+#: ../../Zotlabs/Module/Setup.php:560
msgid ""
"You can alternatively skip this procedure and perform a manual installation."
" Please see the file \"install/INSTALL.txt\" for instructions."
msgstr "Autrement, vous pouvez contourner toute cette procédure et réaliser l'installation manuellement. Merci de consulter le fichier \"install/INSTALL.txt\" pour les instructions détaillées."
-#: ../../mod/setup.php:579
+#: ../../Zotlabs/Module/Setup.php:563
msgid ".htconfig.php is writable"
msgstr "Le fichier .htconfig.php est accessible en écriture"
-#: ../../mod/setup.php:593
+#: ../../Zotlabs/Module/Setup.php:577
msgid ""
"Red uses the Smarty3 template engine to render its web views. Smarty3 "
"compiles templates to PHP to speed up rendering."
msgstr "$Projectname utilise le moteur de gabarits Smarty3 pour mettre son contenu en forme. Smarty3 compile ses modèles vers du PHP natif pour accélérer le rendu."
-#: ../../mod/setup.php:594
+#: ../../Zotlabs/Module/Setup.php:578
#, php-format
msgid ""
"In order to store these compiled templates, the web server needs to have "
-"write access to the directory %s under the Red top level folder."
-msgstr "Pour utiliser ces modèles, le serveur doit avoir le droits d'écrire dans le dossier %s à la racine du site $Projectname."
+"write access to the directory %s under the top level web folder."
+msgstr ""
-#: ../../mod/setup.php:595 ../../mod/setup.php:616
+#: ../../Zotlabs/Module/Setup.php:579 ../../Zotlabs/Module/Setup.php:600
msgid ""
"Please ensure that the user that your web server runs as (e.g. www-data) has"
" write access to this folder."
msgstr "Merci de vous assurer que l'utilisateur sous lequel le serveur web tourne (le plus souvent, www-data) a bien l'autorisation d'écrire dans ce répertoire."
-#: ../../mod/setup.php:596
+#: ../../Zotlabs/Module/Setup.php:580
#, php-format
msgid ""
"Note: as a security measure, you should give the web server write access to "
"%s only--not the template files (.tpl) that it contains."
msgstr "Note: Comme mesure de sécurité, assurez vous de donner les droits d'écriture au serveur web sur %s uniquement, pas sur les fichiers individuels (.tpl) qu'il contient."
-#: ../../mod/setup.php:599
+#: ../../Zotlabs/Module/Setup.php:583
#, php-format
msgid "%s is writable"
msgstr "Permission d'écriture sur %s activée"
-#: ../../mod/setup.php:615
+#: ../../Zotlabs/Module/Setup.php:599
msgid ""
"Red uses the store directory to save uploaded files. The web server needs to"
" have write access to the store directory under the Red top level folder"
msgstr "$Projectname utilise le répertoire 'store' - situé à la racine de votre installation de $Projectname - pour sauvegarder les fichiers envoyés. Le serveur web aura donc besoin de pouvoir y écrire."
-#: ../../mod/setup.php:619
+#: ../../Zotlabs/Module/Setup.php:603
msgid "store is writable"
msgstr "'store' est accessible en écriture"
-#: ../../mod/setup.php:652
+#: ../../Zotlabs/Module/Setup.php:636
msgid ""
"SSL certificate cannot be validated. Fix certificate or disable https access"
" to this site."
msgstr "Le certificat SSL/TLS n'a pas pu être validé. Merci de le corriger, ou de désactiver l'accès https à ce site (non recommandé)."
-#: ../../mod/setup.php:653
+#: ../../Zotlabs/Module/Setup.php:637
msgid ""
"If you have https access to your website or allow connections to TCP port "
"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
"NOT use self-signed certificates!"
msgstr "Si votre serveur accepte les connexions https ou s'il permet les connexions sur le port TCP 443 (le port utilisé par le protocole https), vous DEVEZ utiliser un certificat valide. Vous ne DEVEZ PAS utiliser un certificat que vous avez vous-mêmes signé&nbsp;!"
-#: ../../mod/setup.php:654
+#: ../../Zotlabs/Module/Setup.php:638
msgid ""
"This restriction is incorporated because public posts from you may for "
"example contain references to images on your own hub."
msgstr "Nous avons ajouté cette contrainte pour éviter que vos publications publiques ne fassent référence par exemple à des images sur votre propre hub."
-#: ../../mod/setup.php:655
+#: ../../Zotlabs/Module/Setup.php:639
msgid ""
"If your certificate is not recognized, members of other sites (who may "
"themselves have valid certificates) will get a warning message on their own "
"site complaining about security issues."
msgstr "Si votre certificat n'est pas reconnu, les membres des autres sites (qui eux peuvent avoir des certificats valides) recevront des messages d'avertissement sur leur propre site se plaignant de problèmes de sécurité."
-#: ../../mod/setup.php:656
+#: ../../Zotlabs/Module/Setup.php:640
msgid ""
"This can cause usability issues elsewhere (not just on your own site) so we "
"must insist on this requirement."
msgstr "Ceci peut causer des problèmes d'ergonomie ailleurs (pas seulement sur votre site), nous devons donc insister sur ce prérequis."
-#: ../../mod/setup.php:657
+#: ../../Zotlabs/Module/Setup.php:641
msgid ""
"Providers are available that issue free certificates which are browser-"
"valid."
msgstr "Il existe des autorités de certification qui vous fourniront gratuitement un certificat valide."
-#: ../../mod/setup.php:659
+#: ../../Zotlabs/Module/Setup.php:643
msgid "SSL certificate validation"
msgstr "Validation du certificat SSL/TLS"
-#: ../../mod/setup.php:665
+#: ../../Zotlabs/Module/Setup.php:649
msgid ""
"Url rewrite in .htaccess is not working. Check your server "
"configuration.Test: "
msgstr "La réécriture d'URL définie dans le .htaccess ne fonctionne pas. Vérifiez votre configuration serveur. Test&nbsp;:"
-#: ../../mod/setup.php:668
+#: ../../Zotlabs/Module/Setup.php:652
msgid "Url rewrite is working"
msgstr "La réécriture d'URL fonctionne"
-#: ../../mod/setup.php:677
+#: ../../Zotlabs/Module/Setup.php:661
msgid ""
"The database configuration file \".htconfig.php\" could not be written. "
"Please use the enclosed text to create a configuration file in your web "
"server root."
msgstr "Le fichier de configuration de la base de données - \".htconfig.php\" - ne peut être écrit. Merci de copier le texte généré dans un fichier à ce nom, à la racine de votre serveur web."
-#: ../../mod/setup.php:701
+#: ../../Zotlabs/Module/Setup.php:685
msgid "Errors encountered creating database tables."
msgstr "Erreurs rencontrées pendant la création de tables de BDD."
-#: ../../mod/setup.php:735
+#: ../../Zotlabs/Module/Setup.php:719
msgid "<h1>What next</h1>"
msgstr "<h1>Et maintenant</h1>"
-#: ../../mod/setup.php:736
+#: ../../Zotlabs/Module/Setup.php:720
msgid ""
"IMPORTANT: You will need to [manually] setup a scheduled task for the "
"poller."
msgstr "IMPORTANT&nbsp;: Vous devez créer [manuellement] une tâche planifiée pour les mises à jour du réseau."
-#: ../../mod/lostpass.php:15
-msgid "No valid account found."
-msgstr "Aucun compte valide trouvé."
-
-#: ../../mod/lostpass.php:29
-msgid "Password reset request issued. Check your email."
-msgstr "Demande de réinitialisation du mot de passe envoyée. Vérifiez vos courriels."
-
-#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:103
-#, php-format
-msgid "Site Member (%s)"
-msgstr "Membre du site (%s)"
-
-#: ../../mod/lostpass.php:40
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "Demande de réinitialisation du mot de passe sur %s"
-
-#: ../../mod/lostpass.php:63
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "La demande n'a pas pu être vérifiée. (Peut-être l'avez vous déjà utilisée.) La réinitialisation a échoué."
-
-#: ../../mod/lostpass.php:86 ../../boot.php:1526
-msgid "Password Reset"
-msgstr "Réinitialiser le mot de passe"
-
-#: ../../mod/lostpass.php:87
-msgid "Your password has been reset as requested."
-msgstr "Votre mot de passe a bien été réinitialisé."
-
-#: ../../mod/lostpass.php:88
-msgid "Your new password is"
-msgstr "Votre nouveau mot de passe est"
-
-#: ../../mod/lostpass.php:89
-msgid "Save or copy your new password - and then"
-msgstr "Enregistrez ou copiez votre nouveau mot de passe, puis"
-
-#: ../../mod/lostpass.php:90
-msgid "click here to login"
-msgstr "cliquez ici pour vous connecter"
-
-#: ../../mod/lostpass.php:91
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Votre mot de passe peut être changé depuis la page des <em>Paramètres</em> une fois connecté."
-
-#: ../../mod/lostpass.php:108
-#, php-format
-msgid "Your password has changed at %s"
-msgstr "Votre mot de passe de %s a été changé"
-
-#: ../../mod/lostpass.php:123
-msgid "Forgot your Password?"
-msgstr "Mot de passe oublié&nbsp;?"
-
-#: ../../mod/lostpass.php:124
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Saisissez votre adresse de courriel, et validez, pour réinitialiser votre mot de passe. Vérifiez ensuite votre boîte aux lettres pour la suite des instructions."
-
-#: ../../mod/lostpass.php:125
-msgid "Email Address"
-msgstr "Adresse de courriel"
-
-#: ../../mod/lostpass.php:126
-msgid "Reset"
-msgstr "Réinitialiser"
-
-#: ../../mod/sharedwithme.php:94
+#: ../../Zotlabs/Module/Sharedwithme.php:98
msgid "Files: shared with me"
msgstr "Fichiers&nbsp;: partagés avec moi"
-#: ../../mod/sharedwithme.php:96
+#: ../../Zotlabs/Module/Sharedwithme.php:100
msgid "NEW"
msgstr "NOUVEAU"
-#: ../../mod/sharedwithme.php:99
+#: ../../Zotlabs/Module/Sharedwithme.php:103
msgid "Remove all files"
msgstr "Supprimer tous les fichiers"
-#: ../../mod/sharedwithme.php:100
+#: ../../Zotlabs/Module/Sharedwithme.php:104
msgid "Remove this file"
msgstr "Supprimer ce fichier"
-#: ../../mod/siteinfo.php:15
+#: ../../Zotlabs/Module/Siteinfo.php:19
#, php-format
msgid "Version %s"
msgstr "Version %s"
-#: ../../mod/siteinfo.php:36
+#: ../../Zotlabs/Module/Siteinfo.php:40
msgid "Installed plugins/addons/apps:"
msgstr "Greffons/extensions/applications installés&nbsp;:"
-#: ../../mod/siteinfo.php:49
+#: ../../Zotlabs/Module/Siteinfo.php:53
msgid "No installed plugins/addons/apps"
msgstr "Aucun greffon/extension/application installé"
-#: ../../mod/siteinfo.php:62
+#: ../../Zotlabs/Module/Siteinfo.php:66
msgid ""
"This is a hub of $Projectname - a global cooperative network of "
"decentralized privacy enhanced websites."
msgstr "Ceci est un serveur $Projectname - un réseau collaboratif mondial de serveurs décentralisés à la confidentialité améliorée."
-#: ../../mod/siteinfo.php:64
+#: ../../Zotlabs/Module/Siteinfo.php:68
msgid "Tag: "
msgstr "Étiquette&nbsp;:"
-#: ../../mod/siteinfo.php:66
+#: ../../Zotlabs/Module/Siteinfo.php:70
msgid "Last background fetch: "
msgstr "Dernière récupération en tâche de fond&nbsp;:"
-#: ../../mod/siteinfo.php:68
+#: ../../Zotlabs/Module/Siteinfo.php:72
msgid "Current load average: "
msgstr "Charge moyenne actuelle&nbsp;:"
-#: ../../mod/siteinfo.php:71
+#: ../../Zotlabs/Module/Siteinfo.php:75
msgid "Running at web location"
msgstr "Tourne à l'adresse internet"
-#: ../../mod/siteinfo.php:72
+#: ../../Zotlabs/Module/Siteinfo.php:76
msgid ""
"Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more "
"about $Projectname."
msgstr "Merci de visiter <a href=\"http://hubzilla.org\">hubzilla.org</a> pour en apprendre davantage sur $Projectname."
-#: ../../mod/siteinfo.php:73
+#: ../../Zotlabs/Module/Siteinfo.php:77
msgid "Bug reports and issues: please visit"
msgstr "Pour remonter bogues et problèmes, merci de visiter"
-#: ../../mod/siteinfo.php:75
+#: ../../Zotlabs/Module/Siteinfo.php:79
msgid "$projectname issues"
msgstr "Problèmes $projectname"
-#: ../../mod/siteinfo.php:76
+#: ../../Zotlabs/Module/Siteinfo.php:80
msgid ""
"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
"com"
msgstr "Suggestions, demandes, etc. - merci de vous adresser à \"redmatrix\" à librelist - point com"
-#: ../../mod/siteinfo.php:78
+#: ../../Zotlabs/Module/Siteinfo.php:82
msgid "Site Administrators"
msgstr "Administrateurs du site"
-#: ../../mod/sources.php:32
+#: ../../Zotlabs/Module/Sources.php:37
msgid "Failed to create source. No channel selected."
msgstr "Impossible de créer la source. Aucun canal selectionné."
-#: ../../mod/sources.php:45
+#: ../../Zotlabs/Module/Sources.php:51
msgid "Source created."
msgstr "Source créée."
-#: ../../mod/sources.php:57
+#: ../../Zotlabs/Module/Sources.php:64
msgid "Source updated."
msgstr "Source mise à jour."
-#: ../../mod/sources.php:82
+#: ../../Zotlabs/Module/Sources.php:90
msgid "*"
msgstr "*"
-#: ../../mod/sources.php:89
+#: ../../Zotlabs/Module/Sources.php:96 ../../include/widgets.php:630
+#: ../../include/features.php:71
+msgid "Channel Sources"
+msgstr "Sources du canal"
+
+#: ../../Zotlabs/Module/Sources.php:97
msgid "Manage remote sources of content for your channel."
msgstr "Gérer les sources distantes de contenu pour votre canal."
-#: ../../mod/sources.php:90 ../../mod/sources.php:100
+#: ../../Zotlabs/Module/Sources.php:98 ../../Zotlabs/Module/Sources.php:108
msgid "New Source"
msgstr "Nouvelle source"
-#: ../../mod/sources.php:101 ../../mod/sources.php:133
+#: ../../Zotlabs/Module/Sources.php:109 ../../Zotlabs/Module/Sources.php:143
msgid ""
"Import all or selected content from the following channel into this channel "
"and distribute it according to your channel settings."
msgstr "Importer le contenu sélectionné ou tout le contenu du canal suivant vers ce canal et le distribuer selon vos paramètres de canal."
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
+#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
msgid "Only import content with these words (one per line)"
msgstr "N'importer le contenu que s'il contient ces mots (un par ligne)"
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
+#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
msgid "Leave blank to import all public content"
msgstr "Laissez vide pour importer tout le contenu public"
-#: ../../mod/sources.php:123 ../../mod/sources.php:150
+#: ../../Zotlabs/Module/Sources.php:111 ../../Zotlabs/Module/Sources.php:148
+msgid "Channel Name"
+msgstr "Nom du canal"
+
+#: ../../Zotlabs/Module/Sources.php:112 ../../Zotlabs/Module/Sources.php:147
+msgid ""
+"Add the following categories to posts imported from this source (comma "
+"separated)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Sources.php:133 ../../Zotlabs/Module/Sources.php:161
msgid "Source not found."
msgstr "Source introuvable."
-#: ../../mod/sources.php:130
+#: ../../Zotlabs/Module/Sources.php:140
msgid "Edit Source"
msgstr "Modifier la source"
-#: ../../mod/sources.php:131
+#: ../../Zotlabs/Module/Sources.php:141
msgid "Delete Source"
msgstr "Supprimer la source"
-#: ../../mod/sources.php:158
+#: ../../Zotlabs/Module/Sources.php:169
msgid "Source removed"
msgstr "Source supprimée"
-#: ../../mod/sources.php:160
+#: ../../Zotlabs/Module/Sources.php:171
msgid "Unable to remove source."
msgstr "Impossible de supprimer la source."
-#: ../../mod/subthread.php:114
+#: ../../Zotlabs/Module/Subthread.php:118
#, php-format
msgid "%1$s is following %2$s's %3$s"
msgstr "%1$s suit %3$s de %2$s"
-#: ../../mod/subthread.php:116
+#: ../../Zotlabs/Module/Subthread.php:120
#, php-format
msgid "%1$s stopped following %2$s's %3$s"
msgstr "%1$s ne suit plus %3$s de %2$s"
-#: ../../mod/suggest.php:35
+#: ../../Zotlabs/Module/Suggest.php:39
msgid ""
"No suggestions available. If this is a new site, please try again in 24 "
"hours."
msgstr "Aucune suggestion disponible. Si le site est récent, merci de re-tenter dans 24 heures."
-#: ../../mod/tagger.php:96
+#: ../../Zotlabs/Module/Suggest.php:58 ../../include/widgets.php:149
+msgid "Ignore/Hide"
+msgstr "Ignorer/Cacher"
+
+#: ../../Zotlabs/Module/Tagger.php:55 ../../include/bbcode.php:256
+msgid "post"
+msgstr "publication"
+
+#: ../../Zotlabs/Module/Tagger.php:57 ../../include/text.php:1948
+#: ../../include/conversation.php:150
+msgid "comment"
+msgstr "commentaire"
+
+#: ../../Zotlabs/Module/Tagger.php:100
#, php-format
msgid "%1$s tagged %2$s's %3$s with %4$s"
msgstr "%1$s a étiqueté le %3$s de %2$s avec %4$s"
-#: ../../mod/tagrm.php:44 ../../mod/tagrm.php:94
+#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98
msgid "Tag removed"
msgstr "Étiquette retirée"
-#: ../../mod/tagrm.php:119
+#: ../../Zotlabs/Module/Tagrm.php:123
msgid "Remove Item Tag"
msgstr "Retirer une étiquette à l'élément"
-#: ../../mod/tagrm.php:121
+#: ../../Zotlabs/Module/Tagrm.php:125
msgid "Select a tag to remove: "
msgstr "Étiquette à retirer&nbsp;:"
-#: ../../mod/thing.php:110
+#: ../../Zotlabs/Module/Thing.php:114
msgid "Thing updated"
msgstr "Elément mis à jour"
-#: ../../mod/thing.php:162
+#: ../../Zotlabs/Module/Thing.php:166
msgid "Object store: failed"
msgstr "Stockage de l'objet&nbsp;: échec"
-#: ../../mod/thing.php:166
+#: ../../Zotlabs/Module/Thing.php:170
msgid "Thing added"
msgstr "Elément ajouté"
-#: ../../mod/thing.php:192
+#: ../../Zotlabs/Module/Thing.php:196
#, php-format
msgid "OBJ: %1$s %2$s %3$s"
msgstr "OBJ: %1$s %2$s %3$s"
-#: ../../mod/thing.php:255
+#: ../../Zotlabs/Module/Thing.php:259
msgid "Show Thing"
msgstr "Montrer élément"
-#: ../../mod/thing.php:262
+#: ../../Zotlabs/Module/Thing.php:266
msgid "item not found."
msgstr "élément introuvable."
-#: ../../mod/thing.php:295
+#: ../../Zotlabs/Module/Thing.php:299
msgid "Edit Thing"
msgstr "Modifier élément"
-#: ../../mod/thing.php:297 ../../mod/thing.php:347
+#: ../../Zotlabs/Module/Thing.php:301 ../../Zotlabs/Module/Thing.php:351
msgid "Select a profile"
msgstr "Choisissez un profil"
-#: ../../mod/thing.php:301 ../../mod/thing.php:350
+#: ../../Zotlabs/Module/Thing.php:305 ../../Zotlabs/Module/Thing.php:354
msgid "Post an activity"
msgstr "Publier une activité"
-#: ../../mod/thing.php:301 ../../mod/thing.php:350
+#: ../../Zotlabs/Module/Thing.php:305 ../../Zotlabs/Module/Thing.php:354
msgid "Only sends to viewers of the applicable profile"
msgstr "Envoie exclusivement aux visiteurs du profil concerné"
-#: ../../mod/thing.php:303 ../../mod/thing.php:352
+#: ../../Zotlabs/Module/Thing.php:307 ../../Zotlabs/Module/Thing.php:356
msgid "Name of thing e.g. something"
msgstr "Nom de l'élément, p.ex. quelque-chose"
-#: ../../mod/thing.php:305 ../../mod/thing.php:353
+#: ../../Zotlabs/Module/Thing.php:309 ../../Zotlabs/Module/Thing.php:357
msgid "URL of thing (optional)"
msgstr "URL de l'élément (facultatif)"
-#: ../../mod/thing.php:307 ../../mod/thing.php:354
+#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:358
msgid "URL for photo of thing (optional)"
msgstr "URL d'une photo de l'élément (facultatif)"
-#: ../../mod/thing.php:345
+#: ../../Zotlabs/Module/Thing.php:349
msgid "Add Thing to your Profile"
msgstr "Ajouter l'élément à votre profil"
-#: ../../mod/uexport.php:51 ../../mod/uexport.php:52
+#: ../../Zotlabs/Module/Uexport.php:55 ../../Zotlabs/Module/Uexport.php:56
msgid "Export Channel"
msgstr "Exporter le canal"
-#: ../../mod/uexport.php:53
+#: ../../Zotlabs/Module/Uexport.php:57
msgid ""
"Export your basic channel information to a file. This acts as a backup of "
"your connections, permissions, profile and basic data, which can be used to "
"import your data to a new server hub, but does not contain your content."
msgstr "Exportez les principales informations de votre canal dans un fichier. Celui-ci pourra servir de sauvegarde de vos contacts, permissions, profils et données de base. Il pourra être importé sur un nouveau hub/serveur, mais n'embarquera pas vos contenus."
-#: ../../mod/uexport.php:54
+#: ../../Zotlabs/Module/Uexport.php:58
msgid "Export Content"
msgstr "Exporter le contenu"
-#: ../../mod/uexport.php:55
+#: ../../Zotlabs/Module/Uexport.php:59
msgid ""
"Export your channel information and recent content to a JSON backup that can"
" be restored or imported to another server hub. This backs up all of your "
@@ -9281,11 +6188,11 @@ msgid ""
" this download to begin."
msgstr "Exportez les informations du canal et les contenus récents dans un fichier JSON. Celui-ci contiendra toutes vos relations, permissions, profils, et plusieurs mois de publications. Ce fichier peut être TRÈS gros. Armez-vous de patience - plusieurs minutes peuvent s'écouler avant que le téléchargement ne commence."
-#: ../../mod/uexport.php:56
+#: ../../Zotlabs/Module/Uexport.php:60
msgid "Export your posts from a given year."
msgstr "Exporter vos publications d'une année en particulier"
-#: ../../mod/uexport.php:58
+#: ../../Zotlabs/Module/Uexport.php:62
msgid ""
"You may also export your posts and conversations for a particular year or "
"month. Adjust the date in your browser location bar to select other dates. "
@@ -9293,21 +6200,21 @@ msgid ""
"please try again selecting a more limited date range."
msgstr "Vous pouvez également exporter vos publications et conversations pour une année ou un mois particulier. Ajustez la date dans la barre de votre navigateur pour sélectionner d'autres dates. Si l'export échoue (possible en cas de pénurie de mémoire sur le serveur de votre hub), essayez à nouveau en sélectionnant un intervalle de dates plus petit."
-#: ../../mod/uexport.php:59
+#: ../../Zotlabs/Module/Uexport.php:63
#, php-format
msgid ""
"To select all posts for a given year, such as this year, visit <a "
"href=\"%1$s\">%2$s</a>"
msgstr "Pour sélectionner toutes les publications pour une année donnée, telle que cette année, visitez <a href=\"%1$s\">%2$s</a>"
-#: ../../mod/uexport.php:60
+#: ../../Zotlabs/Module/Uexport.php:64
#, php-format
msgid ""
"To select all posts for a given month, such as January of this year, visit "
"<a href=\"%1$s\">%2$s</a>"
msgstr "Pour sélectionner toutes les publications pour un mois donné, par exemple janvier, visitez <a href=\"%1$s\">%2$s</a>"
-#: ../../mod/uexport.php:61
+#: ../../Zotlabs/Module/Uexport.php:65
#, php-format
msgid ""
"These content files may be imported or restored by visiting <a "
@@ -9315,224 +6222,3607 @@ msgid ""
" please import or restore these in date order (oldest first)."
msgstr "Ces fichiers de contenu peuvent être importés ou restaurés en visitant <a href=\"%1$s\">%2$s</a> sur n'importe quel site hébergeant votre canal. Pour de meilleurs résultats merci de les importer par ordre chronologique (les plus anciens d'abord)."
-#: ../../mod/viewconnections.php:59
+#: ../../Zotlabs/Module/Viewconnections.php:62
msgid "No connections."
msgstr "Aucun contact."
-#: ../../mod/viewconnections.php:72
+#: ../../Zotlabs/Module/Viewconnections.php:75
#, php-format
msgid "Visit %s's profile [%s]"
msgstr "Visiter le profil de %s [%s]"
-#: ../../mod/viewconnections.php:101
+#: ../../Zotlabs/Module/Viewconnections.php:104
msgid "View Connections"
msgstr "Voir les contacts"
-#: ../../mod/viewsrc.php:40
+#: ../../Zotlabs/Module/Viewsrc.php:44
msgid "Source of Item"
msgstr "Source de l'élément"
-#: ../../mod/webpages.php:191
+#: ../../Zotlabs/Module/Webpages.php:184 ../../Zotlabs/Lib/Apps.php:217
+#: ../../include/nav.php:106 ../../include/conversation.php:1685
+msgid "Webpages"
+msgstr "Pages web"
+
+#: ../../Zotlabs/Module/Webpages.php:195 ../../include/page_widgets.php:41
+msgid "Actions"
+msgstr "Actions"
+
+#: ../../Zotlabs/Module/Webpages.php:196 ../../include/page_widgets.php:42
+msgid "Page Link"
+msgstr "Lien vers la page"
+
+#: ../../Zotlabs/Module/Webpages.php:197
msgid "Page Title"
msgstr "Titre de la page"
-#: ../../mod/xchan.php:6
+#: ../../Zotlabs/Module/Xchan.php:10
msgid "Xchan Lookup"
msgstr "Recherche xchan"
-#: ../../mod/xchan.php:9
+#: ../../Zotlabs/Module/Xchan.php:13
msgid "Lookup xchan beginning with (or webbie): "
msgstr "Recherche xchan commençant par (ou adresse \"webbie\")&nbsp;:"
-#: ../../mod/cover_photo.php:130 ../../mod/cover_photo.php:177
-msgid "Cover Photos"
-msgstr "Photos de couverture"
+#: ../../Zotlabs/Lib/Apps.php:204
+msgid "Site Admin"
+msgstr "Administrateur"
-#: ../../mod/cover_photo.php:352
-msgid "Upload Cover Photo"
-msgstr "Téléverser une photo de couverture"
+#: ../../Zotlabs/Lib/Apps.php:205
+msgid "Bug Report"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Apps.php:206
+msgid "View Bookmarks"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Apps.php:207
+msgid "My Chatrooms"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Apps.php:209
+msgid "Firefox Share"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Apps.php:210
+msgid "Remote Diagnostics"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Apps.php:211 ../../include/features.php:89
+msgid "Suggest Channels"
+msgstr "Suggérer des canaux"
+
+#: ../../Zotlabs/Lib/Apps.php:212 ../../include/nav.php:110
+#: ../../boot.php:1703
+msgid "Login"
+msgstr "Connexion"
+
+#: ../../Zotlabs/Lib/Apps.php:214 ../../include/nav.php:179
+msgid "Grid"
+msgstr "Réseau"
+
+#: ../../Zotlabs/Lib/Apps.php:218 ../../include/nav.php:182
+msgid "Channel Home"
+msgstr "Mon canal"
+
+#: ../../Zotlabs/Lib/Apps.php:221 ../../include/nav.php:201
+#: ../../include/conversation.php:1649 ../../include/conversation.php:1652
+msgid "Events"
+msgstr "Événements"
+
+#: ../../Zotlabs/Lib/Apps.php:222 ../../include/nav.php:167
+msgid "Directory"
+msgstr "Annuaire"
+
+#: ../../Zotlabs/Lib/Apps.php:224 ../../include/nav.php:193
+msgid "Mail"
+msgstr "Messages"
+
+#: ../../Zotlabs/Lib/Apps.php:227 ../../include/nav.php:96
+msgid "Chat"
+msgstr "Clavardage"
+
+#: ../../Zotlabs/Lib/Apps.php:229
+msgid "Probe"
+msgstr "Sonder"
+
+#: ../../Zotlabs/Lib/Apps.php:230
+msgid "Suggest"
+msgstr "Suggérer"
+
+#: ../../Zotlabs/Lib/Apps.php:231
+msgid "Random Channel"
+msgstr "Un canal au hasard"
+
+#: ../../Zotlabs/Lib/Apps.php:232
+msgid "Invite"
+msgstr "Invitation"
+
+#: ../../Zotlabs/Lib/Apps.php:233 ../../include/widgets.php:1386
+msgid "Features"
+msgstr "Fonctionalités"
+
+#: ../../Zotlabs/Lib/Apps.php:235
+msgid "Post"
+msgstr "Envoyer"
+
+#: ../../Zotlabs/Lib/Apps.php:335
+msgid "Purchase"
+msgstr "Acheter"
+
+#: ../../Zotlabs/Lib/Chatroom.php:27
+msgid "Missing room name"
+msgstr "Il manque le nom du salon"
+
+#: ../../Zotlabs/Lib/Chatroom.php:36
+msgid "Duplicate room name"
+msgstr "Un salon avec ce nom existe déjà"
+
+#: ../../Zotlabs/Lib/Chatroom.php:86 ../../Zotlabs/Lib/Chatroom.php:94
+msgid "Invalid room specifier."
+msgstr "Identifiant de salon invalide."
+
+#: ../../Zotlabs/Lib/Chatroom.php:126
+msgid "Room not found."
+msgstr "Salon introuvable."
+
+#: ../../Zotlabs/Lib/Chatroom.php:147
+msgid "Room is full"
+msgstr "Le salon est plein"
+
+#: ../../Zotlabs/Lib/Enotify.php:60 ../../include/network.php:1823
+msgid "$Projectname Notification"
+msgstr "Notification $Projectname"
+
+#: ../../Zotlabs/Lib/Enotify.php:61 ../../include/network.php:1824
+msgid "$projectname"
+msgstr "$projectname"
+
+#: ../../Zotlabs/Lib/Enotify.php:63 ../../include/network.php:1826
+msgid "Thank You,"
+msgstr "Merci,"
+
+#: ../../Zotlabs/Lib/Enotify.php:65 ../../include/network.php:1828
+#, php-format
+msgid "%s Administrator"
+msgstr "l'administrateur de %s"
+
+#: ../../Zotlabs/Lib/Enotify.php:100
+#, php-format
+msgid "%s <!item_type!>"
+msgstr "%s <!item_type!>"
+
+#: ../../Zotlabs/Lib/Enotify.php:104
+#, php-format
+msgid "[Hubzilla:Notify] New mail received at %s"
+msgstr "[Hubzilla:Notify] Nouveau courriel reçu à %s"
+
+#: ../../Zotlabs/Lib/Enotify.php:106
+#, php-format
+msgid "%1$s, %2$s sent you a new private message at %3$s."
+msgstr "%1$s, vous avez reçu un message privé sur %3$s, de la part de %2$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:107
+#, php-format
+msgid "%1$s sent you %2$s."
+msgstr "%1$s vous a envoyé %2$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:107
+msgid "a private message"
+msgstr "un message privé"
+
+#: ../../Zotlabs/Lib/Enotify.php:108
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
+msgstr "Merci de visiter %s pour voir et/ou répondre à vos messages privés."
+
+#: ../../Zotlabs/Lib/Enotify.php:164
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
+msgstr "%1$s, %2$s a commenté sur [zrl=%3$s]%4$s[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:172
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
+msgstr "%1$s, %2$s a commenté sur [zrl=%3$s]%5$s de %4$s[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:181
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
+msgstr "%1$s, %2$s a commenté [zrl=%3$s]votre %4$s[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:192
+#, php-format
+msgid "[Hubzilla:Notify] Comment to conversation #%1$d by %2$s"
+msgstr "[Hubzilla:Notify] Commentaire de %2$s sur conversation #%1$d"
+
+#: ../../Zotlabs/Lib/Enotify.php:193
+#, php-format
+msgid "%1$s, %2$s commented on an item/conversation you have been following."
+msgstr "%1$s, %2$s a commenté un élément de conversation que vous suivez."
+
+#: ../../Zotlabs/Lib/Enotify.php:196 ../../Zotlabs/Lib/Enotify.php:211
+#: ../../Zotlabs/Lib/Enotify.php:237 ../../Zotlabs/Lib/Enotify.php:255
+#: ../../Zotlabs/Lib/Enotify.php:269
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
+msgstr "Merci de visiter %s pour voir et/ou répondre sur cette conversation."
+
+#: ../../Zotlabs/Lib/Enotify.php:202
+#, php-format
+msgid "[Hubzilla:Notify] %s posted to your profile wall"
+msgstr "[Hubzilla:Notify] %s a publié sur votre profil"
+
+#: ../../Zotlabs/Lib/Enotify.php:204
+#, php-format
+msgid "%1$s, %2$s posted to your profile wall at %3$s"
+msgstr "%1$s, %2$s a publié sur votre profil à %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:206
+#, php-format
+msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
+msgstr "%1$s, %2$s a publié sur [zrl=%3$s]votre profil[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:230
+#, php-format
+msgid "[Hubzilla:Notify] %s tagged you"
+msgstr "[Hubzilla:Notify] %s vous a étiqueté"
+
+#: ../../Zotlabs/Lib/Enotify.php:231
+#, php-format
+msgid "%1$s, %2$s tagged you at %3$s"
+msgstr "%1$s, vous avez été étiqueté sur %3$s par %2$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:232
+#, php-format
+msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%3$s]vous a étiqueté[/zrl]."
+
+#: ../../Zotlabs/Lib/Enotify.php:244
+#, php-format
+msgid "[Hubzilla:Notify] %1$s poked you"
+msgstr "[Hubzilla:Notify] %1$s vous a tapoté"
+
+#: ../../Zotlabs/Lib/Enotify.php:245
+#, php-format
+msgid "%1$s, %2$s poked you at %3$s"
+msgstr "%1$s, %2$s vous a tapoté sur %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:246
+#, php-format
+msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%2$s]vous a tapoté[/zrl]."
+
+#: ../../Zotlabs/Lib/Enotify.php:262
+#, php-format
+msgid "[Hubzilla:Notify] %s tagged your post"
+msgstr "[Hubzilla:Notify] %s a étiqueté votre publication"
+
+#: ../../Zotlabs/Lib/Enotify.php:263
+#, php-format
+msgid "%1$s, %2$s tagged your post at %3$s"
+msgstr "%1$s, %2$s a étiqueté votre publication sur %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:264
+#, php-format
+msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+msgstr "%1$s, %2$s a étiqueté [zrl=%3$s]votre publication[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:276
+msgid "[Hubzilla:Notify] Introduction received"
+msgstr "[Hubzilla:Notify] Nouvelle présentation"
+
+#: ../../Zotlabs/Lib/Enotify.php:277
+#, php-format
+msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
+msgstr "%1$s, vous avez reçu une demande de contact de '%2$s' sur %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:278
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
+msgstr "%1$s, vous avez reçu [zrl=%2$s]une demande de contact[/zrl] de %3$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:282 ../../Zotlabs/Lib/Enotify.php:301
+#, php-format
+msgid "You may visit their profile at %s"
+msgstr "Vous pouvez visiter leur profil sur %s"
+
+#: ../../Zotlabs/Lib/Enotify.php:284
+#, php-format
+msgid "Please visit %s to approve or reject the connection request."
+msgstr "Merci de visiter %s avant d'approuver (ou non) cette demande de contact."
+
+#: ../../Zotlabs/Lib/Enotify.php:291
+msgid "[Hubzilla:Notify] Friend suggestion received"
+msgstr "[Hubzilla:Notify] Nouvel(le) ami(e) suggéré(e)"
+
+#: ../../Zotlabs/Lib/Enotify.php:292
+#, php-format
+msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
+msgstr "%1$s, vous avez reçu une suggestion d'ami(e) de '%2$s' à %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:293
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
+"%4$s."
+msgstr "%1$s, avez reçu %3$s comme [zrl=%2$s]une suggestion d'ami(e)[/zrl] de %4$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:299
+msgid "Name:"
+msgstr "Nom&nbsp;:"
+
+#: ../../Zotlabs/Lib/Enotify.php:300
+msgid "Photo:"
+msgstr "Photo&nbsp;:"
+
+#: ../../Zotlabs/Lib/Enotify.php:303
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
+msgstr "Merci de visiter %s pour donner suite (ou non) à cette suggestion."
+
+#: ../../Zotlabs/Lib/Enotify.php:518
+msgid "[Hubzilla:Notify]"
+msgstr "[Hubzilla:Notify]"
+
+#: ../../Zotlabs/Lib/Enotify.php:667
+msgid "created a new post"
+msgstr "a publié un nouveau message"
+
+#: ../../Zotlabs/Lib/Enotify.php:668
+#, php-format
+msgid "commented on %s's post"
+msgstr "a commenté la publication de %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:95 ../../include/conversation.php:664
+msgid "Private Message"
+msgstr "Message Privé"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:132 ../../include/conversation.php:656
+msgid "Select"
+msgstr "Sélectionner"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:136
+msgid "Save to Folder"
+msgstr "Enregistrer dans le dossier"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:157
+msgid "I will attend"
+msgstr "Je participerai"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:157
+msgid "I will not attend"
+msgstr "Je ne participerai pas"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:157
+msgid "I might attend"
+msgstr "Je participerai peut-être"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:167
+msgid "I agree"
+msgstr "Je suis d'accord"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:167
+msgid "I disagree"
+msgstr "Je ne suis pas d'accord"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:167
+msgid "I abstain"
+msgstr "Je m'abstiens"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:218
+msgid "Add Star"
+msgstr "Mettre en avant (étoile)"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:219
+msgid "Remove Star"
+msgstr "Ne plus mettre en avant"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:220
+msgid "Toggle Star Status"
+msgstr "(Dés)activer l'étoile"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:224
+msgid "starred"
+msgstr "mis en avant"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:234 ../../include/conversation.php:671
+msgid "Message signature validated"
+msgstr "Signature du message validée"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:235 ../../include/conversation.php:672
+msgid "Message signature incorrect"
+msgstr "Signature du message incorrecte"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:243
+msgid "Add Tag"
+msgstr "Ajouter une étiquette"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:261 ../../include/taxonomy.php:316
+msgid "like"
+msgstr "aiment"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:262 ../../include/taxonomy.php:317
+msgid "dislike"
+msgstr "n'aiment pas"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:266
+msgid "Share This"
+msgstr "Partager"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:266
+msgid "share"
+msgstr "partager"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:275
+msgid "Delivery Report"
+msgstr "Rapport de distribution"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:293
+#, php-format
+msgid "%d comment"
+msgid_plural "%d comments"
+msgstr[0] "%d commentaire"
+msgstr[1] "%d commentaires"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:322 ../../Zotlabs/Lib/ThreadItem.php:323
+#, php-format
+msgid "View %s's profile - %s"
+msgstr "Voir le profil de %s - %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:326
+msgid "to"
+msgstr "à"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:327
+msgid "via"
+msgstr "via"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:328
+msgid "Wall-to-Wall"
+msgstr "Mur-à-mur"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:329
+msgid "via Wall-To-Wall:"
+msgstr "par Mur-à-mur&nbsp;:"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:341 ../../include/conversation.php:719
+#, php-format
+msgid "from %s"
+msgstr "de %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:344 ../../include/conversation.php:722
+#, php-format
+msgid "last edited: %s"
+msgstr "dernière modification&nbsp;: %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:345 ../../include/conversation.php:723
+#, php-format
+msgid "Expires: %s"
+msgstr "Expire&nbsp;: %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:370
+msgid "Save Bookmarks"
+msgstr "Enregistrer les favoris"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:371
+msgid "Add to Calendar"
+msgstr "Ajouter au Calendrier"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:380
+msgid "Mark all seen"
+msgstr "Tout marquer comme vu"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:421 ../../include/js_strings.php:7
+msgid "[+] show all"
+msgstr "[+] voir tous"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:711 ../../include/conversation.php:1215
+msgid "Bold"
+msgstr "Gras"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:712 ../../include/conversation.php:1216
+msgid "Italic"
+msgstr "Italique"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:713 ../../include/conversation.php:1217
+msgid "Underline"
+msgstr "Souligné"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:714 ../../include/conversation.php:1218
+msgid "Quote"
+msgstr "Citation"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:715 ../../include/conversation.php:1219
+msgid "Code"
+msgstr "Code"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:716
+msgid "Image"
+msgstr "Image"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:717
+msgid "Insert Link"
+msgstr "Insérer un lien"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:718
+msgid "Video"
+msgstr "Vidéo"
+
+#: ../../include/Import/import_diaspora.php:16
+msgid "No username found in import file."
+msgstr "Aucun nom d'utilisateur dans le fichier d'import."
+
+#: ../../include/Import/import_diaspora.php:41 ../../include/import.php:50
+msgid "Unable to create a unique channel address. Import failed."
+msgstr "Impossible de créer une adresse de canal unique. Echec de l'import."
+
+#: ../../include/dba/dba_driver.php:171
+#, php-format
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr "Impossible de trouver les infos DNS du serveur de BDD '%s'"
+
+#: ../../include/taxonomy.php:188 ../../include/taxonomy.php:270
+#: ../../include/widgets.php:46 ../../include/widgets.php:429
+#: ../../include/contact_widgets.php:91
+msgid "Categories"
+msgstr "Catégories"
+
+#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249
+msgid "Tags"
+msgstr "Étiquettes"
+
+#: ../../include/taxonomy.php:293
+msgid "Keywords"
+msgstr "Mots-clefs"
+
+#: ../../include/taxonomy.php:314
+msgid "have"
+msgstr "ont"
+
+#: ../../include/taxonomy.php:314
+msgid "has"
+msgstr "a"
+
+#: ../../include/taxonomy.php:315
+msgid "want"
+msgstr "veulent"
+
+#: ../../include/taxonomy.php:315
+msgid "wants"
+msgstr "veut"
+
+#: ../../include/taxonomy.php:316
+msgid "likes"
+msgstr "aime"
+
+#: ../../include/taxonomy.php:317
+msgid "dislikes"
+msgstr "n'aime pas"
+
+#: ../../include/event.php:22 ../../include/event.php:69
+#: ../../include/bb2diaspora.php:485
+msgid "l F d, Y \\@ g:i A"
+msgstr "l d F Y \\à G\\hi"
+
+#: ../../include/event.php:30 ../../include/event.php:73
+#: ../../include/bb2diaspora.php:491
+msgid "Starts:"
+msgstr "Début&nbsp;:"
+
+#: ../../include/event.php:40 ../../include/event.php:77
+#: ../../include/bb2diaspora.php:499
+msgid "Finishes:"
+msgstr "Fin&nbsp;:"
+
+#: ../../include/event.php:812
+msgid "This event has been added to your calendar."
+msgstr "Cet évènement a été ajouté dans votre calendrier."
+
+#: ../../include/event.php:1012
+msgid "Not specified"
+msgstr "Non spécifié"
+
+#: ../../include/event.php:1013
+msgid "Needs Action"
+msgstr "Besoin d'une action"
+
+#: ../../include/event.php:1014
+msgid "Completed"
+msgstr "Terminé"
+
+#: ../../include/event.php:1015
+msgid "In Process"
+msgstr "En cours"
+
+#: ../../include/event.php:1016
+msgid "Cancelled"
+msgstr "Annulé"
+
+#: ../../include/import.php:29
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "L'import a échoué. Un canal existe déjà avec ce nom"
+
+#: ../../include/import.php:76
+msgid "Channel clone failed. Import failed."
+msgstr "Echec du clonage du canal. Echec de l'impot."
+
+#: ../../include/items.php:892 ../../include/items.php:937
+msgid "(Unknown)"
+msgstr "(Inconnu)"
+
+#: ../../include/items.php:1136
+msgid "Visible to anybody on the internet."
+msgstr "Visible pour tout le monde sur internet."
+
+#: ../../include/items.php:1138
+msgid "Visible to you only."
+msgstr "Visible pour vous seulement."
+
+#: ../../include/items.php:1140
+msgid "Visible to anybody in this network."
+msgstr "Visible pour tout le monde sur ce réseau."
+
+#: ../../include/items.php:1142
+msgid "Visible to anybody authenticated."
+msgstr "Visible aux utilisateurs authentifiés."
+
+#: ../../include/items.php:1144
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Visible pour tous sur %s."
+
+#: ../../include/items.php:1146
+msgid "Visible to all connections."
+msgstr "Visible pour tous les contacts."
+
+#: ../../include/items.php:1148
+msgid "Visible to approved connections."
+msgstr "Visible aux contacts approuvés."
+
+#: ../../include/items.php:1150
+msgid "Visible to specific connections."
+msgstr "Visible pour certains contacts."
+
+#: ../../include/items.php:3909
+msgid "Privacy group is empty."
+msgstr "Groupe d'accès vide."
+
+#: ../../include/items.php:3916
+#, php-format
+msgid "Privacy group: %s"
+msgstr "Groupe d'accès&nbsp;: %s"
+
+#: ../../include/items.php:3928
+msgid "Connection not found."
+msgstr "Contact non trouvé."
+
+#: ../../include/items.php:4277
+msgid "profile photo"
+msgstr "photo de profil"
+
+#: ../../include/message.php:20
+msgid "No recipient provided."
+msgstr "Pas de destinataire."
+
+#: ../../include/message.php:25
+msgid "[no subject]"
+msgstr "[sans objet]"
+
+#: ../../include/message.php:45
+msgid "Unable to determine sender."
+msgstr "Impossible de déterminer l'émetteur."
+
+#: ../../include/message.php:222
+msgid "Stored post could not be verified."
+msgstr "Le message stocké n'a pas pu être vérifié."
+
+#: ../../include/text.php:428
+msgid "prev"
+msgstr "préc."
+
+#: ../../include/text.php:430
+msgid "first"
+msgstr "premier"
+
+#: ../../include/text.php:459
+msgid "last"
+msgstr "dernier"
+
+#: ../../include/text.php:462
+msgid "next"
+msgstr "Suivant"
+
+#: ../../include/text.php:472
+msgid "older"
+msgstr "plus ancien"
+
+#: ../../include/text.php:474
+msgid "newer"
+msgstr "plus récent"
+
+#: ../../include/text.php:863
+msgid "No connections"
+msgstr "Pas de relations."
+
+#: ../../include/text.php:888
+#, php-format
+msgid "View all %s connections"
+msgstr "Voir les %s contacts"
+
+#: ../../include/text.php:1033 ../../include/text.php:1038
+msgid "poke"
+msgstr "tapoter"
+
+#: ../../include/text.php:1033 ../../include/text.php:1038
+#: ../../include/conversation.php:243
+msgid "poked"
+msgstr "a tapoté"
+
+#: ../../include/text.php:1039
+msgid "ping"
+msgstr "ping"
+
+#: ../../include/text.php:1039
+msgid "pinged"
+msgstr "pingé"
+
+#: ../../include/text.php:1040
+msgid "prod"
+msgstr "encourager"
+
+#: ../../include/text.php:1040
+msgid "prodded"
+msgstr "encouragé"
+
+#: ../../include/text.php:1041
+msgid "slap"
+msgstr "giffler"
+
+#: ../../include/text.php:1041
+msgid "slapped"
+msgstr "gifflé(e)"
+
+#: ../../include/text.php:1042
+msgid "finger"
+msgstr "pointer"
+
+#: ../../include/text.php:1042
+msgid "fingered"
+msgstr "pointé"
+
+#: ../../include/text.php:1043
+msgid "rebuff"
+msgstr "rejetter"
+
+#: ../../include/text.php:1043
+msgid "rebuffed"
+msgstr "rejeté"
+
+#: ../../include/text.php:1055
+msgid "happy"
+msgstr "heureux"
+
+#: ../../include/text.php:1056
+msgid "sad"
+msgstr "triste"
+
+#: ../../include/text.php:1057
+msgid "mellow"
+msgstr "mélancolique"
+
+#: ../../include/text.php:1058
+msgid "tired"
+msgstr "fatigué"
+
+#: ../../include/text.php:1059
+msgid "perky"
+msgstr "impertinent"
+
+#: ../../include/text.php:1060
+msgid "angry"
+msgstr "en colère"
+
+#: ../../include/text.php:1061
+msgid "stupefied"
+msgstr "stupéfait"
+
+#: ../../include/text.php:1062
+msgid "puzzled"
+msgstr "perplexe"
+
+#: ../../include/text.php:1063
+msgid "interested"
+msgstr "intéressé"
+
+#: ../../include/text.php:1064
+msgid "bitter"
+msgstr "amer"
+
+#: ../../include/text.php:1065
+msgid "cheerful"
+msgstr "plein d'entrain"
+
+#: ../../include/text.php:1066
+msgid "alive"
+msgstr "vivant"
+
+#: ../../include/text.php:1067
+msgid "annoyed"
+msgstr "agaçé"
+
+#: ../../include/text.php:1068
+msgid "anxious"
+msgstr "anxieux"
+
+#: ../../include/text.php:1069
+msgid "cranky"
+msgstr "énervé"
+
+#: ../../include/text.php:1070
+msgid "disturbed"
+msgstr "perturbé"
+
+#: ../../include/text.php:1071
+msgid "frustrated"
+msgstr "frustré"
+
+#: ../../include/text.php:1072
+msgid "depressed"
+msgstr "déprimé"
+
+#: ../../include/text.php:1073
+msgid "motivated"
+msgstr "motivé"
+
+#: ../../include/text.php:1074
+msgid "relaxed"
+msgstr "détendu"
+
+#: ../../include/text.php:1075
+msgid "surprised"
+msgstr "surpris"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:70
+msgid "Monday"
+msgstr "Lundi"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:71
+msgid "Tuesday"
+msgstr "Mardi"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:72
+msgid "Wednesday"
+msgstr "Mercredi"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:73
+msgid "Thursday"
+msgstr "Jeudi"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:74
+msgid "Friday"
+msgstr "Vendredi"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:75
+msgid "Saturday"
+msgstr "Samedi"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:69
+msgid "Sunday"
+msgstr "Dimanche"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:45
+msgid "January"
+msgstr "Janvier"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:46
+msgid "February"
+msgstr "Février"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:47
+msgid "March"
+msgstr "Mars"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:48
+msgid "April"
+msgstr "Avril"
+
+#: ../../include/text.php:1261
+msgid "May"
+msgstr "Mai"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:50
+msgid "June"
+msgstr "Juin"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:51
+msgid "July"
+msgstr "Juillet"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:52
+msgid "August"
+msgstr "Août"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:53
+msgid "September"
+msgstr "Septembre"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:54
+msgid "October"
+msgstr "Octobre"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:55
+msgid "November"
+msgstr "Novembre"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:56
+msgid "December"
+msgstr "Décembre"
+
+#: ../../include/text.php:1338 ../../include/text.php:1342
+msgid "Unknown Attachment"
+msgstr "Pièce jointe inconnue"
+
+#: ../../include/text.php:1344
+msgid "unknown"
+msgstr "Inconnu"
+
+#: ../../include/text.php:1380
+msgid "remove category"
+msgstr "supprimer la catégorie"
+
+#: ../../include/text.php:1457
+msgid "remove from file"
+msgstr "retirer du fichier"
+
+#: ../../include/text.php:1753 ../../include/text.php:1824
+msgid "default"
+msgstr "défaut"
+
+#: ../../include/text.php:1761
+msgid "Page layout"
+msgstr "Mise en page"
+
+#: ../../include/text.php:1761
+msgid "You can create your own with the layouts tool"
+msgstr "Créez les vôtres avec les outils de mise en page"
+
+#: ../../include/text.php:1803
+msgid "Page content type"
+msgstr "Type de contenu de la page"
+
+#: ../../include/text.php:1836
+msgid "Select an alternate language"
+msgstr "Choisir une langue alternative"
+
+#: ../../include/text.php:1953
+msgid "activity"
+msgstr "activité"
+
+#: ../../include/text.php:2262
+msgid "Design Tools"
+msgstr "Outils de conception"
+
+#: ../../include/text.php:2268
+msgid "Pages"
+msgstr "Pages"
+
+#: ../../include/widgets.php:103
+msgid "System"
+msgstr "Système"
+
+#: ../../include/widgets.php:106
+msgid "New App"
+msgstr ""
+
+#: ../../include/widgets.php:154
+msgid "Suggestions"
+msgstr "Suggestions"
+
+#: ../../include/widgets.php:155
+msgid "See more..."
+msgstr "Voir plus..."
+
+#: ../../include/widgets.php:175
+#, php-format
+msgid "You have %1$.0f of %2$.0f allowed connections."
+msgstr "Vous avez %1$.0f sur %2$.0f contacts autorisés."
+
+#: ../../include/widgets.php:181
+msgid "Add New Connection"
+msgstr "Ajouter un nouveau contact"
+
+#: ../../include/widgets.php:182
+msgid "Enter channel address"
+msgstr "Saisissez l'adresse du canal"
+
+#: ../../include/widgets.php:183
+msgid "Examples: bob@example.com, https://example.com/barbara"
+msgstr "Exemples&nbsp;: pierre@exemple.com, https://exemple.com/sophie"
+
+#: ../../include/widgets.php:199
+msgid "Notes"
+msgstr "Notes"
+
+#: ../../include/widgets.php:273
+msgid "Remove term"
+msgstr "Retirer le terme"
+
+#: ../../include/widgets.php:281 ../../include/features.php:84
+msgid "Saved Searches"
+msgstr "Recherches sauvegardées"
+
+#: ../../include/widgets.php:282 ../../include/group.php:316
+msgid "add"
+msgstr "ajouter"
+
+#: ../../include/widgets.php:310 ../../include/contact_widgets.php:53
+#: ../../include/features.php:98
+msgid "Saved Folders"
+msgstr "Dossiers sauvegardés"
+
+#: ../../include/widgets.php:313 ../../include/widgets.php:432
+#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94
+msgid "Everything"
+msgstr "Tout"
+
+#: ../../include/widgets.php:354
+msgid "Archives"
+msgstr "Archives"
+
+#: ../../include/widgets.php:516
+msgid "Refresh"
+msgstr "Actualiser"
+
+#: ../../include/widgets.php:556
+msgid "Account settings"
+msgstr "Paramètres du compte"
+
+#: ../../include/widgets.php:562
+msgid "Channel settings"
+msgstr "Paramètres du canal"
+
+#: ../../include/widgets.php:571
+msgid "Additional features"
+msgstr "Fonctionnalités supplémentaires"
+
+#: ../../include/widgets.php:578
+msgid "Feature/Addon settings"
+msgstr "Paramètres des extensions/greffons"
+
+#: ../../include/widgets.php:584
+msgid "Display settings"
+msgstr "Paramètres d'affichage"
+
+#: ../../include/widgets.php:591
+msgid "Manage locations"
+msgstr ""
+
+#: ../../include/widgets.php:600
+msgid "Export channel"
+msgstr "Exporter le canal"
+
+#: ../../include/widgets.php:607
+msgid "Connected apps"
+msgstr "Applications connectées"
+
+#: ../../include/widgets.php:622
+msgid "Premium Channel Settings"
+msgstr "Paramètres de canal VIP"
+
+#: ../../include/widgets.php:651
+msgid "Private Mail Menu"
+msgstr "Menu des messages privés"
+
+#: ../../include/widgets.php:653
+msgid "Combined View"
+msgstr "Vue combinée"
+
+#: ../../include/widgets.php:658 ../../include/nav.php:196
+msgid "Inbox"
+msgstr "Boîte de réception"
+
+#: ../../include/widgets.php:663 ../../include/nav.php:197
+msgid "Outbox"
+msgstr "Boîte d'envoi"
+
+#: ../../include/widgets.php:668 ../../include/nav.php:198
+msgid "New Message"
+msgstr "Nouveau message"
+
+#: ../../include/widgets.php:685 ../../include/widgets.php:697
+msgid "Conversations"
+msgstr "Conversations"
+
+#: ../../include/widgets.php:689
+msgid "Received Messages"
+msgstr "Messages reçus"
+
+#: ../../include/widgets.php:693
+msgid "Sent Messages"
+msgstr "Messages envoyés"
+
+#: ../../include/widgets.php:707
+msgid "No messages."
+msgstr "Pas de message."
+
+#: ../../include/widgets.php:725
+msgid "Delete conversation"
+msgstr "Supprimer la conversation"
+
+#: ../../include/widgets.php:751
+msgid "Events Menu"
+msgstr "Menu Evènements"
+
+#: ../../include/widgets.php:752
+msgid "Day View"
+msgstr "Vue Jour"
+
+#: ../../include/widgets.php:753
+msgid "Week View"
+msgstr "Vue Semaine"
+
+#: ../../include/widgets.php:754
+msgid "Month View"
+msgstr "Vue Mois"
+
+#: ../../include/widgets.php:766
+msgid "Events Tools"
+msgstr "Outils Evènements"
+
+#: ../../include/widgets.php:767
+msgid "Export Calendar"
+msgstr "Exporter le calendrier"
+
+#: ../../include/widgets.php:768
+msgid "Import Calendar"
+msgstr "Importer un calendrier"
+
+#: ../../include/widgets.php:842 ../../include/conversation.php:1662
+#: ../../include/conversation.php:1665
+msgid "Chatrooms"
+msgstr "Salons de clavardage"
+
+#: ../../include/widgets.php:846
+msgid "Overview"
+msgstr ""
+
+#: ../../include/widgets.php:853
+msgid "Chat Members"
+msgstr ""
+
+#: ../../include/widgets.php:876
+msgid "Bookmarked Chatrooms"
+msgstr "Salons favoris"
+
+#: ../../include/widgets.php:899
+msgid "Suggested Chatrooms"
+msgstr "Salons suggérés"
+
+#: ../../include/widgets.php:1044 ../../include/widgets.php:1156
+msgid "photo/image"
+msgstr "photo/image"
+
+#: ../../include/widgets.php:1099
+msgid "Click to show more"
+msgstr "Cliquer pour voir plus"
+
+#: ../../include/widgets.php:1250
+msgid "Rating Tools"
+msgstr "Outils d'évaluation"
+
+#: ../../include/widgets.php:1254 ../../include/widgets.php:1256
+msgid "Rate Me"
+msgstr "M'évaluer"
+
+#: ../../include/widgets.php:1259
+msgid "View Ratings"
+msgstr "Voir mes évaluations"
+
+#: ../../include/widgets.php:1316
+msgid "Forums"
+msgstr "Membres du forum"
+
+#: ../../include/widgets.php:1345
+msgid "Tasks"
+msgstr "Tâches"
+
+#: ../../include/widgets.php:1354
+msgid "Documentation"
+msgstr "Documentation"
+
+#: ../../include/widgets.php:1356
+msgid "Project/Site Information"
+msgstr "Information sur le site/projet"
+
+#: ../../include/widgets.php:1357
+msgid "For Members"
+msgstr "Pour les membres"
+
+#: ../../include/widgets.php:1358
+msgid "For Administrators"
+msgstr "Pour les administrateurs"
+
+#: ../../include/widgets.php:1359
+msgid "For Developers"
+msgstr "Pour les développeurs"
+
+#: ../../include/widgets.php:1383 ../../include/widgets.php:1421
+msgid "Member registrations waiting for confirmation"
+msgstr ""
+
+#: ../../include/widgets.php:1389
+msgid "Inspect queue"
+msgstr "Analyser la file d'attente"
+
+#: ../../include/widgets.php:1391
+msgid "DB updates"
+msgstr "Mises à jour BDD"
+
+#: ../../include/widgets.php:1416 ../../include/nav.php:216
+msgid "Admin"
+msgstr "Administrateur"
+
+#: ../../include/widgets.php:1417
+msgid "Plugin Features"
+msgstr "Fonctionnalités des greffons"
+
+#: ../../include/follow.php:27
+msgid "Channel is blocked on this site."
+msgstr "Ce canal est bloqué sur ce site."
+
+#: ../../include/follow.php:32
+msgid "Channel location missing."
+msgstr "Emplacement du canal introuvable."
+
+#: ../../include/follow.php:81
+msgid "Response from remote channel was incomplete."
+msgstr "La réponse du canal distant était incomplète."
+
+#: ../../include/follow.php:98
+msgid "Channel was deleted and no longer exists."
+msgstr "Le canal a été supprimé et n'existe plus."
+
+#: ../../include/follow.php:154 ../../include/follow.php:190
+msgid "Protocol disabled."
+msgstr "Protocole désactivé."
+
+#: ../../include/follow.php:178
+msgid "Channel discovery failed."
+msgstr "La tentative d'accéder au canal a échoué."
+
+#: ../../include/follow.php:216
+msgid "Cannot connect to yourself."
+msgstr "Ne peut pas se connecter à vous."
+
+#: ../../include/bookmarks.php:35
+#, php-format
+msgid "%1$s's bookmarks"
+msgstr "Favoris de %1$s"
+
+#: ../../include/api.php:1336
+msgid "Public Timeline"
+msgstr "Fil public"
+
+#: ../../include/bbcode.php:123 ../../include/bbcode.php:844
+#: ../../include/bbcode.php:847 ../../include/bbcode.php:852
+#: ../../include/bbcode.php:855 ../../include/bbcode.php:858
+#: ../../include/bbcode.php:861 ../../include/bbcode.php:866
+#: ../../include/bbcode.php:869 ../../include/bbcode.php:874
+#: ../../include/bbcode.php:877 ../../include/bbcode.php:880
+#: ../../include/bbcode.php:883
+msgid "Image/photo"
+msgstr "Image/photo"
+
+#: ../../include/bbcode.php:162 ../../include/bbcode.php:894
+msgid "Encrypted content"
+msgstr "Contenu chiffré"
+
+#: ../../include/bbcode.php:178
+#, php-format
+msgid "Install %s element: "
+msgstr "Installer %s élément"
+
+#: ../../include/bbcode.php:182
+#, php-format
+msgid ""
+"This post contains an installable %s element, however you lack permissions "
+"to install it on this site."
+msgstr "Ce message contient un élément installable %s, mais vous n'avez pas l'autorisation de l'installer sur ce site."
+
+#: ../../include/bbcode.php:254
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s a écrit %2$s qui suit %3$s"
+
+#: ../../include/bbcode.php:331 ../../include/bbcode.php:339
+msgid "Click to open/close"
+msgstr "Cliquer pour ouvrir/fermer"
+
+#: ../../include/bbcode.php:339
+msgid "spoiler"
+msgstr ""
+
+#: ../../include/bbcode.php:585
+msgid "Different viewers will see this text differently"
+msgstr "Ce texte aura un rendu différent en fonction des utilisateurs"
+
+#: ../../include/bbcode.php:832
+msgid "$1 wrote:"
+msgstr "$1 a écrit&nbsp;:"
+
+#: ../../include/dir_fns.php:141
+msgid "Directory Options"
+msgstr "Options d'annuaire"
+
+#: ../../include/dir_fns.php:143
+msgid "Safe Mode"
+msgstr "Mode sûr"
+
+#: ../../include/dir_fns.php:144
+msgid "Public Forums Only"
+msgstr "Les forums publics uniquement"
+
+#: ../../include/dir_fns.php:145
+msgid "This Website Only"
+msgstr "Ce site uniquement"
+
+#: ../../include/security.php:383
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "Le formulaire n'est plus sécurisé, probablement parce qu'il est ouvert depuis trop longtemps (plus de 3 heures)."
+
+#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1702
+msgid "Logout"
+msgstr "Déconnexion"
+
+#: ../../include/nav.php:82 ../../include/nav.php:113
+msgid "End this session"
+msgstr "Mettre fin à la session"
+
+#: ../../include/nav.php:85 ../../include/nav.php:144
+msgid "Home"
+msgstr "Mon canal"
+
+#: ../../include/nav.php:85
+msgid "Your posts and conversations"
+msgstr "Vos publications et conversations"
+
+#: ../../include/nav.php:86
+msgid "Your profile page"
+msgstr "Votre profil"
+
+#: ../../include/nav.php:88
+msgid "Manage/Edit profiles"
+msgstr "Gérer/modifier les profils"
+
+#: ../../include/nav.php:90 ../../include/channel.php:941
+msgid "Edit Profile"
+msgstr "Éditeur de profil"
+
+#: ../../include/nav.php:90
+msgid "Edit your profile"
+msgstr "Modifier votre profil"
+
+#: ../../include/nav.php:92
+msgid "Your photos"
+msgstr "Vos photos"
+
+#: ../../include/nav.php:93
+msgid "Your files"
+msgstr "Vos fichiers"
+
+#: ../../include/nav.php:96
+msgid "Your chatrooms"
+msgstr "Vos salons"
+
+#: ../../include/nav.php:102 ../../include/conversation.php:1675
+msgid "Bookmarks"
+msgstr "Favoris"
+
+#: ../../include/nav.php:102
+msgid "Your bookmarks"
+msgstr "Vos favoris"
+
+#: ../../include/nav.php:106
+msgid "Your webpages"
+msgstr "Vos pages web"
+
+#: ../../include/nav.php:110
+msgid "Sign in"
+msgstr "Connexion"
+
+#: ../../include/nav.php:127
+#, php-format
+msgid "%s - click to logout"
+msgstr "%s - cliquer ici pour déconnecter"
+
+#: ../../include/nav.php:130
+msgid "Remote authentication"
+msgstr "Authentification distante"
+
+#: ../../include/nav.php:130
+msgid "Click to authenticate to your home hub"
+msgstr "S'authentifier auprès de votre hub principal"
+
+#: ../../include/nav.php:144
+msgid "Home Page"
+msgstr "Page d'accueil"
+
+#: ../../include/nav.php:147
+msgid "Create an account"
+msgstr "Créer un compte"
+
+#: ../../include/nav.php:159
+msgid "Help and documentation"
+msgstr "Aide et documentation"
+
+#: ../../include/nav.php:163
+msgid "Applications, utilities, links, games"
+msgstr "Applications, utilitaires, liens, jeux"
+
+#: ../../include/nav.php:165
+msgid "Search site @name, #tag, ?docs, content"
+msgstr "Recherche @nom, #tag, contenu"
+
+#: ../../include/nav.php:167
+msgid "Channel Directory"
+msgstr "Annuaire des canaux"
+
+#: ../../include/nav.php:179
+msgid "Your grid"
+msgstr "Votre réseau"
+
+#: ../../include/nav.php:180
+msgid "Mark all grid notifications seen"
+msgstr "Marquer toutes les notifications du réseau comme vues"
+
+#: ../../include/nav.php:182
+msgid "Channel home"
+msgstr "Mon canal"
+
+#: ../../include/nav.php:183
+msgid "Mark all channel notifications seen"
+msgstr "Marquer toutes les notifications du canal comme vues"
+
+#: ../../include/nav.php:189
+msgid "Notices"
+msgstr "Notifications"
+
+#: ../../include/nav.php:189
+msgid "Notifications"
+msgstr "Notifications"
+
+#: ../../include/nav.php:190
+msgid "See all notifications"
+msgstr "Voir toutes les notifications"
+
+#: ../../include/nav.php:193
+msgid "Private mail"
+msgstr "Messages privés"
+
+#: ../../include/nav.php:194
+msgid "See all private messages"
+msgstr "Voir tous les messages privés"
+
+#: ../../include/nav.php:195
+msgid "Mark all private messages seen"
+msgstr "Marquer tous les messages privés comme vus"
+
+#: ../../include/nav.php:201
+msgid "Event Calendar"
+msgstr "Calendrier des événements"
+
+#: ../../include/nav.php:202
+msgid "See all events"
+msgstr "Voir tous les événements"
+
+#: ../../include/nav.php:203
+msgid "Mark all events seen"
+msgstr "Marquer tous les événements comme vus"
+
+#: ../../include/nav.php:206
+msgid "Manage Your Channels"
+msgstr "Gérer vos canaux"
+
+#: ../../include/nav.php:208
+msgid "Account/Channel Settings"
+msgstr "Paramètres du Compte/Canal"
+
+#: ../../include/nav.php:216
+msgid "Site Setup and Configuration"
+msgstr "Configuration du site"
+
+#: ../../include/nav.php:247 ../../include/conversation.php:851
+msgid "Loading..."
+msgstr "Chargement..."
+
+#: ../../include/nav.php:252
+msgid "@name, #tag, ?doc, content"
+msgstr "@nom, #étiquette, ?doc, contenu"
+
+#: ../../include/nav.php:253
+msgid "Please wait..."
+msgstr "Merci de patienter..."
+
+#: ../../include/connections.php:95
+msgid "New window"
+msgstr "Nouvelle fenêtre"
+
+#: ../../include/connections.php:96
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Ouvrir l'emplacement dans une fenêtre ou un onglet différent"
+
+#: ../../include/connections.php:214
+#, php-format
+msgid "User '%s' deleted"
+msgstr "Utilisateur '%s' supprimé"
+
+#: ../../include/contact_widgets.php:11
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "%d invitation disponible"
+msgstr[1] "%d invitations disponibles"
+
+#: ../../include/contact_widgets.php:19
+msgid "Find Channels"
+msgstr "Trouver des canaux"
+
+#: ../../include/contact_widgets.php:20
+msgid "Enter name or interest"
+msgstr "Saisir nom ou centre d'intérêt"
+
+#: ../../include/contact_widgets.php:21
+msgid "Connect/Follow"
+msgstr "Ajouter/Suivre"
+
+#: ../../include/contact_widgets.php:22
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "Exemples: Guillaume Martin, Course à pieds"
+
+#: ../../include/contact_widgets.php:26
+msgid "Random Profile"
+msgstr "Un profil au hasard"
+
+#: ../../include/contact_widgets.php:27
+msgid "Invite Friends"
+msgstr "Inviter des amis"
+
+#: ../../include/contact_widgets.php:29
+msgid "Advanced example: name=fred and country=iceland"
+msgstr "Exemple avancé&nbsp;: name=fred and country=iceland"
+
+#: ../../include/contact_widgets.php:122
+#, php-format
+msgid "%d connection in common"
+msgid_plural "%d connections in common"
+msgstr[0] "%d contact en commun"
+msgstr[1] "%d contacts en commun"
+
+#: ../../include/contact_widgets.php:127
+msgid "show more"
+msgstr "montrer plus"
+
+#: ../../include/conversation.php:204
+#, php-format
+msgid "%1$s is now connected with %2$s"
+msgstr "%1$s ajoute %2$s à ses contacts"
+
+#: ../../include/conversation.php:239
+#, php-format
+msgid "%1$s poked %2$s"
+msgstr "%1$s a tapoté %2$s"
+
+#: ../../include/conversation.php:691
+#, php-format
+msgid "View %s's profile @ %s"
+msgstr "Voir le profil de %s @ %s"
+
+#: ../../include/conversation.php:710
+msgid "Categories:"
+msgstr "Catégories&nbsp;:"
+
+#: ../../include/conversation.php:711
+msgid "Filed under:"
+msgstr "Classé sous&nbsp;:"
+
+#: ../../include/conversation.php:738
+msgid "View in context"
+msgstr "Voir en contexte"
+
+#: ../../include/conversation.php:847
+msgid "remove"
+msgstr "supprimer"
+
+#: ../../include/conversation.php:852
+msgid "Delete Selected Items"
+msgstr "Supprimer les éléments selectionnés"
+
+#: ../../include/conversation.php:948
+msgid "View Source"
+msgstr "Voir source"
+
+#: ../../include/conversation.php:949
+msgid "Follow Thread"
+msgstr "Suivre la discussion"
+
+#: ../../include/conversation.php:950
+msgid "Unfollow Thread"
+msgstr "Ne plus suivre la discussion"
+
+#: ../../include/conversation.php:955
+msgid "Activity/Posts"
+msgstr "Activité/Publications"
+
+#: ../../include/conversation.php:957
+msgid "Edit Connection"
+msgstr "Modifier le contact"
+
+#: ../../include/conversation.php:958
+msgid "Message"
+msgstr "Message"
+
+#: ../../include/conversation.php:1075
+#, php-format
+msgid "%s likes this."
+msgstr "%s aime ça."
+
+#: ../../include/conversation.php:1075
+#, php-format
+msgid "%s doesn't like this."
+msgstr "%s n'aime pas ça."
+
+#: ../../include/conversation.php:1079
+#, php-format
+msgid "<span %1$s>%2$d people</span> like this."
+msgid_plural "<span %1$s>%2$d people</span> like this."
+msgstr[0] "<span %1$s>%2$d personne</span> aime ceci."
+msgstr[1] "<span %1$s>%2$d personnes</span> aiment ceci."
+
+#: ../../include/conversation.php:1081
+#, php-format
+msgid "<span %1$s>%2$d people</span> don't like this."
+msgid_plural "<span %1$s>%2$d people</span> don't like this."
+msgstr[0] "<span %1$s>%2$d personne</span> n'aime pas ça."
+msgstr[1] "<span %1$s>%2$d personnes</span> n'aiment pas ça."
+
+#: ../../include/conversation.php:1087
+msgid "and"
+msgstr "et"
+
+#: ../../include/conversation.php:1090
+#, php-format
+msgid ", and %d other people"
+msgid_plural ", and %d other people"
+msgstr[0] ", et %d autre personne"
+msgstr[1] ", et %d autres personnes"
+
+#: ../../include/conversation.php:1091
+#, php-format
+msgid "%s like this."
+msgstr "%s aime ça."
+
+#: ../../include/conversation.php:1091
+#, php-format
+msgid "%s don't like this."
+msgstr "%s n'aime pas ça."
+
+#: ../../include/conversation.php:1130
+msgid "Set your location"
+msgstr "Spécifier votre emplacement géographique"
+
+#: ../../include/conversation.php:1131
+msgid "Clear browser location"
+msgstr "Supprimer l'emplacement géographique du navigateur"
+
+#: ../../include/conversation.php:1177
+msgid "Tag term:"
+msgstr "Étiquette&nbsp;:"
+
+#: ../../include/conversation.php:1178
+msgid "Where are you right now?"
+msgstr "Où êtes-vous en ce moment&nbsp;?"
+
+#: ../../include/conversation.php:1210
+msgid "Page link name"
+msgstr "Nom du lien vers la page"
+
+#: ../../include/conversation.php:1213
+msgid "Post as"
+msgstr "Publier en tant que"
+
+#: ../../include/conversation.php:1223
+msgid "Toggle voting"
+msgstr "(Dés)activer le vote"
+
+#: ../../include/conversation.php:1231
+msgid "Categories (optional, comma-separated list)"
+msgstr "Catégories (facultatives, séparées par des virgules)"
+
+#: ../../include/conversation.php:1254
+msgid "Set publish date"
+msgstr "Définir la date de publication"
+
+#: ../../include/conversation.php:1258
+msgid "OK"
+msgstr "OK"
+
+#: ../../include/conversation.php:1503
+msgid "Discover"
+msgstr "À découvrir"
+
+#: ../../include/conversation.php:1506
+msgid "Imported public streams"
+msgstr "Flux publics importés"
+
+#: ../../include/conversation.php:1511
+msgid "Commented Order"
+msgstr "Par date de commentaire"
+
+#: ../../include/conversation.php:1514
+msgid "Sort by Comment Date"
+msgstr "Trier par date de dernier commentaire"
+
+#: ../../include/conversation.php:1518
+msgid "Posted Order"
+msgstr "Par date de publication"
+
+#: ../../include/conversation.php:1521
+msgid "Sort by Post Date"
+msgstr "Trier par date de publication"
+
+#: ../../include/conversation.php:1529
+msgid "Posts that mention or involve you"
+msgstr "Publications qui vous mentionnent ou vous concernent d'une manière ou d'une autre"
+
+#: ../../include/conversation.php:1538
+msgid "Activity Stream - by date"
+msgstr "Flux d'activité - par date"
+
+#: ../../include/conversation.php:1544
+msgid "Starred"
+msgstr "Mis en avant (étoiles)"
+
+#: ../../include/conversation.php:1547
+msgid "Favourite Posts"
+msgstr "Publications préférées"
+
+#: ../../include/conversation.php:1554
+msgid "Spam"
+msgstr "Indésirable"
+
+#: ../../include/conversation.php:1557
+msgid "Posts flagged as SPAM"
+msgstr "Publications marquées comme indésirables"
+
+#: ../../include/conversation.php:1614
+msgid "Status Messages and Posts"
+msgstr "Messages d'état et contributions"
+
+#: ../../include/conversation.php:1623
+msgid "About"
+msgstr "À propos"
+
+#: ../../include/conversation.php:1626
+msgid "Profile Details"
+msgstr "Détails du profil"
+
+#: ../../include/conversation.php:1635 ../../include/photos.php:502
+msgid "Photo Albums"
+msgstr "Albums photo"
+
+#: ../../include/conversation.php:1642
+msgid "Files and Storage"
+msgstr "Fichiers et Stockage"
+
+#: ../../include/conversation.php:1678
+msgid "Saved Bookmarks"
+msgstr "Favoris sauvegardés"
+
+#: ../../include/conversation.php:1688
+msgid "Manage Webpages"
+msgstr "Gérer les pages web"
+
+#: ../../include/conversation.php:1747
+msgctxt "noun"
+msgid "Attending"
+msgid_plural "Attending"
+msgstr[0] "Participe"
+msgstr[1] "Participent"
+
+#: ../../include/conversation.php:1750
+msgctxt "noun"
+msgid "Not Attending"
+msgid_plural "Not Attending"
+msgstr[0] "Ne participe pas"
+msgstr[1] "Ne participent pas"
+
+#: ../../include/conversation.php:1753
+msgctxt "noun"
+msgid "Undecided"
+msgid_plural "Undecided"
+msgstr[0] "Indécis(e)"
+msgstr[1] "Indécis(es)"
+
+#: ../../include/conversation.php:1756
+msgctxt "noun"
+msgid "Agree"
+msgid_plural "Agrees"
+msgstr[0] "D'accord"
+msgstr[1] "D'accord"
+
+#: ../../include/conversation.php:1759
+msgctxt "noun"
+msgid "Disagree"
+msgid_plural "Disagrees"
+msgstr[0] "Pas d'accord"
+msgstr[1] "Pas d'accord"
+
+#: ../../include/conversation.php:1762
+msgctxt "noun"
+msgid "Abstain"
+msgid_plural "Abstains"
+msgstr[0] "S'abstient"
+msgstr[1] "S'abstiennent"
+
+#: ../../include/selectors.php:30
+msgid "Frequently"
+msgstr "Fréquemment"
+
+#: ../../include/selectors.php:31
+msgid "Hourly"
+msgstr "Toutes les heures"
+
+#: ../../include/selectors.php:32
+msgid "Twice daily"
+msgstr "Deux fois par jour"
+
+#: ../../include/selectors.php:33
+msgid "Daily"
+msgstr "Chaque jour"
+
+#: ../../include/selectors.php:34
+msgid "Weekly"
+msgstr "Chaque semaine"
+
+#: ../../include/selectors.php:35
+msgid "Monthly"
+msgstr "Chaque mois"
+
+#: ../../include/selectors.php:49
+msgid "Currently Male"
+msgstr "Actuellement homme"
+
+#: ../../include/selectors.php:49
+msgid "Currently Female"
+msgstr "Actuellement femme"
+
+#: ../../include/selectors.php:49
+msgid "Mostly Male"
+msgstr "Surtout homme"
+
+#: ../../include/selectors.php:49
+msgid "Mostly Female"
+msgstr "Surtout femme"
+
+#: ../../include/selectors.php:49
+msgid "Transgender"
+msgstr "Transgenre"
+
+#: ../../include/selectors.php:49
+msgid "Intersex"
+msgstr "Intersexuel"
+
+#: ../../include/selectors.php:49
+msgid "Transsexual"
+msgstr "Transsexuel"
+
+#: ../../include/selectors.php:49
+msgid "Hermaphrodite"
+msgstr "Hermaphrodite"
+
+#: ../../include/selectors.php:49
+msgid "Neuter"
+msgstr "Neutre"
+
+#: ../../include/selectors.php:49
+msgid "Non-specific"
+msgstr "Non spécifique"
+
+#: ../../include/selectors.php:49 ../../include/selectors.php:66
+#: ../../include/selectors.php:104 ../../include/selectors.php:140
+#: ../../include/permissions.php:881
+msgid "Other"
+msgstr "Autre"
+
+#: ../../include/selectors.php:49
+msgid "Undecided"
+msgstr "Indécis"
+
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Males"
+msgstr "Hommes"
+
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Females"
+msgstr "Femmes"
+
+#: ../../include/selectors.php:85
+msgid "Gay"
+msgstr "Gay"
+
+#: ../../include/selectors.php:85
+msgid "Lesbian"
+msgstr "Lesbienne"
+
+#: ../../include/selectors.php:85
+msgid "No Preference"
+msgstr "Sans préférence"
+
+#: ../../include/selectors.php:85
+msgid "Bisexual"
+msgstr "Bisexuel"
+
+#: ../../include/selectors.php:85
+msgid "Autosexual"
+msgstr "Autosexuel"
+
+#: ../../include/selectors.php:85
+msgid "Abstinent"
+msgstr "Abstinent"
+
+#: ../../include/selectors.php:85
+msgid "Virgin"
+msgstr "Vierge"
+
+#: ../../include/selectors.php:85
+msgid "Deviant"
+msgstr "Déviant"
+
+#: ../../include/selectors.php:85
+msgid "Fetish"
+msgstr "Fétichiste"
+
+#: ../../include/selectors.php:85
+msgid "Oodles"
+msgstr "Une floppée"
+
+#: ../../include/selectors.php:85
+msgid "Nonsexual"
+msgstr "Non-sexuel"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Single"
+msgstr "Célibataire"
+
+#: ../../include/selectors.php:123
+msgid "Lonely"
+msgstr "Solitaire"
+
+#: ../../include/selectors.php:123
+msgid "Available"
+msgstr "Disponible"
+
+#: ../../include/selectors.php:123
+msgid "Unavailable"
+msgstr "Indisponible"
+
+#: ../../include/selectors.php:123
+msgid "Has crush"
+msgstr "A un béguin"
+
+#: ../../include/selectors.php:123
+msgid "Infatuated"
+msgstr "Amoureux transi"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Dating"
+msgstr "Sort avec quelqu'un"
+
+#: ../../include/selectors.php:123
+msgid "Unfaithful"
+msgstr "Infidèle"
+
+#: ../../include/selectors.php:123
+msgid "Sex Addict"
+msgstr "Accro au sexe"
+
+#: ../../include/selectors.php:123
+msgid "Friends/Benefits"
+msgstr "Amis avec bénéfices"
+
+#: ../../include/selectors.php:123
+msgid "Casual"
+msgstr "Sans engagement"
+
+#: ../../include/selectors.php:123
+msgid "Engaged"
+msgstr "Fiancé(e)"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Married"
+msgstr "Marié(e)"
+
+#: ../../include/selectors.php:123
+msgid "Imaginarily married"
+msgstr "Marié(e) dans ses rêves"
+
+#: ../../include/selectors.php:123
+msgid "Partners"
+msgstr "Partenaires"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Cohabiting"
+msgstr "En cohabitation"
+
+#: ../../include/selectors.php:123
+msgid "Common law"
+msgstr "Conjoints de fait"
+
+#: ../../include/selectors.php:123
+msgid "Happy"
+msgstr "Heureux"
+
+#: ../../include/selectors.php:123
+msgid "Not looking"
+msgstr "Pas en recherche"
+
+#: ../../include/selectors.php:123
+msgid "Swinger"
+msgstr "Echangiste"
+
+#: ../../include/selectors.php:123
+msgid "Betrayed"
+msgstr "Trahi(e)"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Separated"
+msgstr "Séparé(e)"
+
+#: ../../include/selectors.php:123
+msgid "Unstable"
+msgstr "Instable"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Divorced"
+msgstr "Divorcé(e)"
+
+#: ../../include/selectors.php:123
+msgid "Imaginarily divorced"
+msgstr "Divorcé(e) dans ses rêves"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Widowed"
+msgstr "Veuf/veuve"
+
+#: ../../include/selectors.php:123
+msgid "Uncertain"
+msgstr "Incertain"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "It's complicated"
+msgstr "C'est compliqué"
+
+#: ../../include/selectors.php:123
+msgid "Don't care"
+msgstr "S'en fiche"
+
+#: ../../include/selectors.php:123
+msgid "Ask me"
+msgstr "Me demander"
+
+#: ../../include/PermissionDescription.php:31
+#: ../../include/acl_selectors.php:232
+msgid "Visible to your default audience"
+msgstr "Visible pour vos contacts seulement"
+
+#: ../../include/PermissionDescription.php:115
+#: ../../include/acl_selectors.php:268
+msgid "Only me"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:116
+msgid "Public"
+msgstr "Public"
+
+#: ../../include/PermissionDescription.php:117
+msgid "Anybody in the $Projectname network"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:118
+#, php-format
+msgid "Any account on %s"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:119
+msgid "Any of my connections"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:120
+msgid "Only connections I specifically allow"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:121
+msgid "Anybody authenticated (could include visitors from other networks)"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:122
+msgid "Any connections including those who haven't yet been approved"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:161
+msgid ""
+"This is your default setting for the audience of your normal stream, and "
+"posts."
+msgstr ""
+
+#: ../../include/PermissionDescription.php:162
+msgid ""
+"This is your default setting for who can view your default channel profile"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:163
+msgid "This is your default setting for who can view your connections"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:164
+msgid ""
+"This is your default setting for who can view your file storage and photos"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:165
+msgid "This is your default setting for the audience of your webpages"
+msgstr ""
+
+#: ../../include/account.php:28
+msgid "Not a valid email address"
+msgstr "Ce n'est pas une adresse de courriel valide"
+
+#: ../../include/account.php:30
+msgid "Your email domain is not among those allowed on this site"
+msgstr "Votre domaine de courriel ne fait pas partie de ceux autorisés par ce site"
+
+#: ../../include/account.php:36
+msgid "Your email address is already registered at this site."
+msgstr "Votre adresse de courriel est déjà inscrite sur ce site."
+
+#: ../../include/account.php:68
+msgid "An invitation is required."
+msgstr "Une invitation est requise."
+
+#: ../../include/account.php:72
+msgid "Invitation could not be verified."
+msgstr "Votre invitation n'a pas pu être vérifiée."
+
+#: ../../include/account.php:122
+msgid "Please enter the required information."
+msgstr "Merci d'entrer les informations requises."
+
+#: ../../include/account.php:189
+msgid "Failed to store account information."
+msgstr "Impossible de stocker les informations liées au compte."
+
+#: ../../include/account.php:249
+#, php-format
+msgid "Registration confirmation for %s"
+msgstr "Confirmation de l'inscription pour %s"
+
+#: ../../include/account.php:315
+#, php-format
+msgid "Registration request at %s"
+msgstr "Demande d'inscription sur %s"
+
+#: ../../include/account.php:317 ../../include/account.php:344
+#: ../../include/account.php:404 ../../include/network.php:1871
+msgid "Administrator"
+msgstr "Administrateur"
+
+#: ../../include/account.php:339
+msgid "your registration password"
+msgstr "votre mot de passe d'inscription"
+
+#: ../../include/account.php:342 ../../include/account.php:402
+#, php-format
+msgid "Registration details for %s"
+msgstr "Détails de l'inscription pour %s"
+
+#: ../../include/account.php:414
+msgid "Account approved."
+msgstr "Compte approuvé."
+
+#: ../../include/account.php:454
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Inscription révoquée pour %s"
+
+#: ../../include/account.php:506
+msgid "Account verified. Please login."
+msgstr "Compte vérifié. Veuillez vous connecter."
+
+#: ../../include/account.php:723 ../../include/account.php:725
+msgid "Click here to upgrade."
+msgstr "Cliquez ici pour mettre à jour."
+
+#: ../../include/account.php:731
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Cette action outrepasserait les limites prévues par votre forfait."
+
+#: ../../include/account.php:736
+msgid "This action is not available under your subscription plan."
+msgstr "Cette action n'est pas disponible avec votre forfait."
+
+#: ../../include/attach.php:247 ../../include/attach.php:333
+msgid "Item was not found."
+msgstr "Élément introuvable."
+
+#: ../../include/attach.php:497
+msgid "No source file."
+msgstr "Pas de fichier source."
+
+#: ../../include/attach.php:519
+msgid "Cannot locate file to replace"
+msgstr "Impossible de trouver le fichier à remplacer."
+
+#: ../../include/attach.php:537
+msgid "Cannot locate file to revise/update"
+msgstr "Impossible de trouver le fichier à corriger/mettre à jour"
+
+#: ../../include/attach.php:672
+#, php-format
+msgid "File exceeds size limit of %d"
+msgstr "Le fichier dépasse la taille limite de %d"
+
+#: ../../include/attach.php:686
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+msgstr "Vous avez atteint votre limite de %1$.0f méga-octets autorisés pour le stockage des pièces-jointes."
+
+#: ../../include/attach.php:842
+msgid "File upload failed. Possible system limit or action terminated."
+msgstr "Envoi du fichier impossible. Limite système ou action avortée."
+
+#: ../../include/attach.php:855
+msgid "Stored file could not be verified. Upload failed."
+msgstr "Le fichier stocké n'a pu être vérifié. Echec de l'envoi."
+
+#: ../../include/attach.php:909 ../../include/attach.php:925
+msgid "Path not available."
+msgstr "Chemin non disponible."
+
+#: ../../include/attach.php:971 ../../include/attach.php:1123
+msgid "Empty pathname"
+msgstr "Chemin vide"
+
+#: ../../include/attach.php:997
+msgid "duplicate filename or path"
+msgstr "doublon de chemin ou de fichier"
+
+#: ../../include/attach.php:1019
+msgid "Path not found."
+msgstr "Chemin introuvable."
+
+#: ../../include/attach.php:1077
+msgid "mkdir failed."
+msgstr "mkdir a échoué."
+
+#: ../../include/attach.php:1081
+msgid "database storage failed."
+msgstr "l'écriture dans la base de données a échoué."
+
+#: ../../include/attach.php:1129
+msgid "Empty path"
+msgstr "Chemin vide"
+
+#: ../../include/channel.php:32
+msgid "Unable to obtain identity information from database"
+msgstr "Impossible d'obtenir les données d'identité depuis la base de données"
+
+#: ../../include/channel.php:66
+msgid "Empty name"
+msgstr "Nom vide"
+
+#: ../../include/channel.php:69
+msgid "Name too long"
+msgstr "Nom trop long"
+
+#: ../../include/channel.php:180
+msgid "No account identifier"
+msgstr "Pas d'identifiant de compte"
+
+#: ../../include/channel.php:192
+msgid "Nickname is required."
+msgstr "Un surnom est requis."
+
+#: ../../include/channel.php:206
+msgid "Reserved nickname. Please choose another."
+msgstr "Surnom réservé. Merci d'en choisir un autre."
+
+#: ../../include/channel.php:211
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "Le surnom contient des caractères interdits ou est déjà pris sur ce site."
+
+#: ../../include/channel.php:287
+msgid "Unable to retrieve created identity"
+msgstr "Impossible de récupérer l'identité créée"
+
+#: ../../include/channel.php:345
+msgid "Default Profile"
+msgstr "Profil par défaut"
+
+#: ../../include/channel.php:791
+msgid "Requested channel is not available."
+msgstr "Canal demandé non disponible."
+
+#: ../../include/channel.php:938
+msgid "Create New Profile"
+msgstr "Créer un nouveau profil"
+
+#: ../../include/channel.php:958
+msgid "Visible to everybody"
+msgstr "Visible de tous"
+
+#: ../../include/channel.php:1031 ../../include/channel.php:1142
+msgid "Gender:"
+msgstr "Sexe&nbsp;:"
+
+#: ../../include/channel.php:1032 ../../include/channel.php:1186
+msgid "Status:"
+msgstr "État&nbsp;:"
+
+#: ../../include/channel.php:1033 ../../include/channel.php:1197
+msgid "Homepage:"
+msgstr "Site Internet&nbsp;:"
+
+#: ../../include/channel.php:1034
+msgid "Online Now"
+msgstr "Connecté"
+
+#: ../../include/channel.php:1147
+msgid "Like this channel"
+msgstr "J'aime ce canal"
+
+#: ../../include/channel.php:1171
+msgid "j F, Y"
+msgstr "j F, Y"
+
+#: ../../include/channel.php:1172
+msgid "j F"
+msgstr "j F"
+
+#: ../../include/channel.php:1179
+msgid "Birthday:"
+msgstr "Date de naissance&nbsp;:"
+
+#: ../../include/channel.php:1192
+#, php-format
+msgid "for %1$d %2$s"
+msgstr "depuis %1$d %2$s"
+
+#: ../../include/channel.php:1195
+msgid "Sexual Preference:"
+msgstr "Orientation sexuelle&nbsp;:"
+
+#: ../../include/channel.php:1201
+msgid "Tags:"
+msgstr "Étiquettes&nbsp;:"
+
+#: ../../include/channel.php:1203
+msgid "Political Views:"
+msgstr "Opinions politiques&nbsp;:"
+
+#: ../../include/channel.php:1205
+msgid "Religion:"
+msgstr "Religion&nbsp;:"
+
+#: ../../include/channel.php:1209
+msgid "Hobbies/Interests:"
+msgstr "Occupations/Centres d'intérêt&nbsp;:"
+
+#: ../../include/channel.php:1211
+msgid "Likes:"
+msgstr "Aime&nbsp;:"
+
+#: ../../include/channel.php:1213
+msgid "Dislikes:"
+msgstr "N'aime pas&nbsp;:"
+
+#: ../../include/channel.php:1215
+msgid "Contact information and Social Networks:"
+msgstr "Coordonnées et réseaux sociaux&nbsp;:"
+
+#: ../../include/channel.php:1217
+msgid "My other channels:"
+msgstr "Mes autres canaux&nbsp;:"
+
+#: ../../include/channel.php:1219
+msgid "Musical interests:"
+msgstr "Goûts musicaux&nbsp;:"
+
+#: ../../include/channel.php:1221
+msgid "Books, literature:"
+msgstr "Lectures, goûts littéraires&nbsp;:"
+
+#: ../../include/channel.php:1223
+msgid "Television:"
+msgstr "Télévision&nbsp;:"
+
+#: ../../include/channel.php:1225
+msgid "Film/dance/culture/entertainment:"
+msgstr "Cinéma/danse/culture/divertissement&nsbp;:"
+
+#: ../../include/channel.php:1227
+msgid "Love/Romance:"
+msgstr "Vie sentimentale/amoureuse&nbsp;:"
+
+#: ../../include/channel.php:1229
+msgid "Work/employment:"
+msgstr "Travail/Occupation&nbsp;"
+
+#: ../../include/channel.php:1231
+msgid "School/education:"
+msgstr "Études&nbsp;"
+
+#: ../../include/channel.php:1251
+msgid "Like this thing"
+msgstr "J'aime ceci"
+
+#: ../../include/features.php:48
+msgid "General Features"
+msgstr "Fonctionnalités générales"
+
+#: ../../include/features.php:50
+msgid "Content Expiration"
+msgstr "Expiration du contenu"
+
+#: ../../include/features.php:50
+msgid "Remove posts/comments and/or private messages at a future time"
+msgstr "Supprimer les contributions/commentaires et/ou messages privés plus tard"
+
+#: ../../include/features.php:51
+msgid "Multiple Profiles"
+msgstr "Profils multiples"
+
+#: ../../include/features.php:51
+msgid "Ability to create multiple profiles"
+msgstr "Possibilité de créer plusieurs profils"
+
+#: ../../include/features.php:52
+msgid "Advanced Profiles"
+msgstr "Profils Avancés"
+
+#: ../../include/features.php:52
+msgid "Additional profile sections and selections"
+msgstr "Sections et sélections supplémentaires du profil"
+
+#: ../../include/features.php:53
+msgid "Profile Import/Export"
+msgstr "Importer/Exporter le profil"
+
+#: ../../include/features.php:53
+msgid "Save and load profile details across sites/channels"
+msgstr "Sauvegarder et charger les détails d'un profil entre sites/canaux"
+
+#: ../../include/features.php:54
+msgid "Web Pages"
+msgstr "Pages web"
+
+#: ../../include/features.php:54
+msgid "Provide managed web pages on your channel"
+msgstr "Fournir des pages web, sous votre contrôle, sur votre canal"
+
+#: ../../include/features.php:55
+msgid "Hide Rating"
+msgstr "Masquer l'évaluation"
+
+#: ../../include/features.php:55
+msgid ""
+"Hide the rating buttons on your channel and profile pages. Note: People can "
+"still rate you somewhere else."
+msgstr "Masquer les boutons d'évaluation sur les pages de votre canal et de votre profil. NB : vous pourrez toujours être évalué(e) ailleurs."
+
+#: ../../include/features.php:56
+msgid "Private Notes"
+msgstr "Notes privées"
+
+#: ../../include/features.php:56
+msgid "Enables a tool to store notes and reminders (note: not encrypted)"
+msgstr "Active un outil pour stocker des notes et des rappels (note&nbsp;:non chiffré)"
+
+#: ../../include/features.php:57
+msgid "Navigation Channel Select"
+msgstr "Sélection du canal par la navigation"
+
+#: ../../include/features.php:57
+msgid "Change channels directly from within the navigation dropdown menu"
+msgstr "Changez de canal directement depuis le menu de navigation déroulant"
+
+#: ../../include/features.php:58
+msgid "Photo Location"
+msgstr "Site de prise de vue"
+
+#: ../../include/features.php:58
+msgid "If location data is available on uploaded photos, link this to a map."
+msgstr "Si des informations géographiques sont présentes dans les images téléversées, les lier à une carte."
+
+#: ../../include/features.php:59
+msgid "Access Controlled Chatrooms"
+msgstr ""
+
+#: ../../include/features.php:59
+msgid "Provide chatrooms and chat services with access control."
+msgstr ""
+
+#: ../../include/features.php:60
+msgid "Smart Birthdays"
+msgstr "Anniversaires intelligents"
+
+#: ../../include/features.php:60
+msgid ""
+"Make birthday events timezone aware in case your friends are scattered "
+"across the planet."
+msgstr "Adapter les anniversaires aux fuseaux horaires, utile pour vos amis sur d'autres continents."
+
+#: ../../include/features.php:61
+msgid "Expert Mode"
+msgstr "Mode expert"
+
+#: ../../include/features.php:61
+msgid "Enable Expert Mode to provide advanced configuration options"
+msgstr "Activer le mode expert pour accéder aux options avancées"
+
+#: ../../include/features.php:62
+msgid "Premium Channel"
+msgstr "Canal VIP"
+
+#: ../../include/features.php:62
+msgid ""
+"Allows you to set restrictions and terms on those that connect with your "
+"channel"
+msgstr "Vous permet d'appliquer des règles et restrictions aux contacts de votre canal"
+
+#: ../../include/features.php:67
+msgid "Post Composition Features"
+msgstr "Fonctionnalités de composition"
+
+#: ../../include/features.php:70
+msgid "Large Photos"
+msgstr "Grandes photos"
+
+#: ../../include/features.php:70
+msgid ""
+"Include large (1024px) photo thumbnails in posts. If not enabled, use small "
+"(640px) photo thumbnails"
+msgstr "Inclure de grands aperçus (1024px) dans les messages. Si désactivé, inclure de petits aperçus (640px)."
+
+#: ../../include/features.php:71
+msgid "Automatically import channel content from other channels or feeds"
+msgstr "Importe automatiquement le contenus d'autres canaux ou flux dans le canal actif"
+
+#: ../../include/features.php:72
+msgid "Even More Encryption"
+msgstr "Encore plus de chiffrement"
+
+#: ../../include/features.php:72
+msgid ""
+"Allow optional encryption of content end-to-end with a shared secret key"
+msgstr "Permettre le chiffrement optionnel du contenu de bout en bout au moyen d'un secret partagé"
+
+#: ../../include/features.php:73
+msgid "Enable Voting Tools"
+msgstr "Activer les outils de vote"
+
+#: ../../include/features.php:73
+msgid "Provide a class of post which others can vote on"
+msgstr "Fournit un type de publication sur lequel les utilisateurs peuvent voter"
+
+#: ../../include/features.php:74
+msgid "Delayed Posting"
+msgstr "Publication plus tard"
+
+#: ../../include/features.php:74
+msgid "Allow posts to be published at a later date"
+msgstr "Permettre de publier des messages à une date programmée"
+
+#: ../../include/features.php:75
+msgid "Suppress Duplicate Posts/Comments"
+msgstr "Supprimer les publications/commentaires en doublon"
+
+#: ../../include/features.php:75
+msgid ""
+"Prevent posts with identical content to be published with less than two "
+"minutes in between submissions."
+msgstr "Empêcher des messages aux contenus identiques d'être publiés à moins de deux minutes d'intervalle"
+
+#: ../../include/features.php:81
+msgid "Network and Stream Filtering"
+msgstr "Filtrage du réseau et des flux"
+
+#: ../../include/features.php:82
+msgid "Search by Date"
+msgstr "Chercher par date"
+
+#: ../../include/features.php:82
+msgid "Ability to select posts by date ranges"
+msgstr "Pouvoir choisir des publications par date"
+
+#: ../../include/features.php:83 ../../include/group.php:311
+msgid "Privacy Groups"
+msgstr "Groupes d'accès"
+
+#: ../../include/features.php:83
+msgid "Enable management and selection of privacy groups"
+msgstr "Active la gestion et la sélection des groupes d'accès"
+
+#: ../../include/features.php:84
+msgid "Save search terms for re-use"
+msgstr "Sauvegarder des termes de recherche pour utilisation ultérieure"
+
+#: ../../include/features.php:85
+msgid "Network Personal Tab"
+msgstr "Onglet \"Me concernant\""
+
+#: ../../include/features.php:85
+msgid "Enable tab to display only Network posts that you've interacted on"
+msgstr "Activer un onglet affichant seulement les publications du réseau sur lesquelles vous êtes intervenu"
+
+#: ../../include/features.php:86
+msgid "Network New Tab"
+msgstr "Onglet \"nouveautés réseau\""
+
+#: ../../include/features.php:86
+msgid "Enable tab to display all new Network activity"
+msgstr "Activer un onglet présentant toute l'activité récente sur le réseau"
+
+#: ../../include/features.php:87
+msgid "Affinity Tool"
+msgstr "Gérer l'affinité"
+
+#: ../../include/features.php:87
+msgid "Filter stream activity by depth of relationships"
+msgstr "Filtrer le flux d'activité en fonction de la profondeur des relations"
+
+#: ../../include/features.php:88
+msgid "Connection Filtering"
+msgstr "Filtrage des contacts"
+
+#: ../../include/features.php:88
+msgid "Filter incoming posts from connections based on keywords/content"
+msgstr "Filtrer les publications entrantes de mes contacts sur la base de mots-clefs"
+
+#: ../../include/features.php:89
+msgid "Show channel suggestions"
+msgstr "Montrer les suggestions de canaux"
+
+#: ../../include/features.php:94
+msgid "Post/Comment Tools"
+msgstr "Gérer les publications/commentaires"
+
+#: ../../include/features.php:95
+msgid "Community Tagging"
+msgstr "Etiquetage communautaire"
+
+#: ../../include/features.php:95
+msgid "Ability to tag existing posts"
+msgstr "Permettre de marquer les publications existantes"
+
+#: ../../include/features.php:96
+msgid "Post Categories"
+msgstr "Catégoriser les publications"
+
+#: ../../include/features.php:96
+msgid "Add categories to your posts"
+msgstr "Ajouter des catégories à vos publications"
+
+#: ../../include/features.php:97
+msgid "Emoji Reactions"
+msgstr ""
+
+#: ../../include/features.php:97
+msgid "Add emoji reaction ability to posts"
+msgstr ""
+
+#: ../../include/features.php:98
+msgid "Ability to file posts under folders"
+msgstr "Permettre de classer les publications dans des dossiers"
+
+#: ../../include/features.php:99
+msgid "Dislike Posts"
+msgstr "\"Ne pas aimer\" les publications"
+
+#: ../../include/features.php:99
+msgid "Ability to dislike posts/comments"
+msgstr "Possibilité de \"ne pas aimer\" les publications/commentaires"
+
+#: ../../include/features.php:100
+msgid "Star Posts"
+msgstr "Pouvoir mettre en avant les publications"
+
+#: ../../include/features.php:100
+msgid "Ability to mark special posts with a star indicator"
+msgstr "Pouvoir marquer certaines publications d'une étoile"
+
+#: ../../include/features.php:101
+msgid "Tag Cloud"
+msgstr "Nuage de tags"
+
+#: ../../include/features.php:101
+msgid "Provide a personal tag cloud on your channel page"
+msgstr "Afficher un nuage de vos tags sur votre canal"
+
+#: ../../include/oembed.php:324
+msgid "Embedded content"
+msgstr "Contenu imbriqué"
+
+#: ../../include/oembed.php:333
+msgid "Embedding disabled"
+msgstr "Imbrication désactivée"
+
+#: ../../include/acl_selectors.php:271
+msgid "Who can see this?"
+msgstr ""
+
+#: ../../include/acl_selectors.php:272
+msgid "Custom selection"
+msgstr ""
+
+#: ../../include/acl_selectors.php:273
+msgid ""
+"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit"
+" the scope of \"Show\"."
+msgstr ""
+
+#: ../../include/acl_selectors.php:274
+msgid "Show"
+msgstr "Montrer"
+
+#: ../../include/acl_selectors.php:275
+msgid "Don't show"
+msgstr "Cacher"
+
+#: ../../include/acl_selectors.php:281
+msgid "Other networks and post services"
+msgstr "Autres réseaux et services de messagerie"
+
+#: ../../include/acl_selectors.php:311
+#, php-format
+msgid ""
+"Post permissions %s cannot be changed %s after a post is shared.</br />These"
+" permissions set who is allowed to view the post."
+msgstr ""
+
+#: ../../include/auth.php:105
+msgid "Logged out."
+msgstr "Deconnecté."
+
+#: ../../include/auth.php:212
+msgid "Failed authentication"
+msgstr "Échec de l'authentification"
+
+#: ../../include/datetime.php:135
+msgid "Birthday"
+msgstr "Anniversaire"
+
+#: ../../include/datetime.php:137
+msgid "Age: "
+msgstr "Age&nbsp;:"
+
+#: ../../include/datetime.php:139
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "AAAA-MM-JJ ou MM-JJ"
+
+#: ../../include/datetime.php:272 ../../boot.php:2470
+msgid "never"
+msgstr "jamais"
+
+#: ../../include/datetime.php:278
+msgid "less than a second ago"
+msgstr "à l'instant"
+
+#: ../../include/datetime.php:296
+#, php-format
+msgctxt "e.g. 22 hours ago, 1 minute ago"
+msgid "%1$d %2$s ago"
+msgstr "il y a %1$d %2$s"
+
+#: ../../include/datetime.php:307
+msgctxt "relative_date"
+msgid "year"
+msgid_plural "years"
+msgstr[0] "an"
+msgstr[1] "ans"
+
+#: ../../include/datetime.php:310
+msgctxt "relative_date"
+msgid "month"
+msgid_plural "months"
+msgstr[0] "mois"
+msgstr[1] "mois"
+
+#: ../../include/datetime.php:313
+msgctxt "relative_date"
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "semaine"
+msgstr[1] "semaines"
+
+#: ../../include/datetime.php:316
+msgctxt "relative_date"
+msgid "day"
+msgid_plural "days"
+msgstr[0] "jour"
+msgstr[1] "jours"
+
+#: ../../include/datetime.php:319
+msgctxt "relative_date"
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "heure"
+msgstr[1] "heures"
+
+#: ../../include/datetime.php:322
+msgctxt "relative_date"
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minute"
+msgstr[1] "minutes"
+
+#: ../../include/datetime.php:325
+msgctxt "relative_date"
+msgid "second"
+msgid_plural "seconds"
+msgstr[0] "seconde"
+msgstr[1] "secondes"
+
+#: ../../include/datetime.php:562
+#, php-format
+msgid "%1$s's birthday"
+msgstr "Anniversaire de %1$s"
+
+#: ../../include/datetime.php:563
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Joyeux Anniversaire %1$s"
+
+#: ../../include/group.php:26
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
+msgstr "Un groupe supprimé portant ce nom a été ressuscité. Les permissions liées aux éléments existants <strong>peuvent</strong> s'appliquer au groupe et aux membres futurs. Si ce n'est pas ce que vous attendiez, merci de créer un autre groupe avec un nom différent."
+
+#: ../../include/group.php:248
+msgid "Add new connections to this privacy group"
+msgstr "Ajouter de nouveaux contacts à ce groupe d'accès"
+
+#: ../../include/group.php:289
+msgid "edit"
+msgstr "modifier"
+
+#: ../../include/group.php:312
+msgid "Edit group"
+msgstr "Modifier le groupe"
+
+#: ../../include/group.php:313
+msgid "Add privacy group"
+msgstr "Ajouter un groupe d'accès"
+
+#: ../../include/group.php:314
+msgid "Channels not in any privacy group"
+msgstr "Canaux n'étant dans aucun groupe d'accès"
+
+#: ../../include/js_strings.php:5
+msgid "Delete this item?"
+msgstr "Supprimer cet élément?"
+
+#: ../../include/js_strings.php:8
+msgid "[-] show less"
+msgstr "[-] montrer moins"
+
+#: ../../include/js_strings.php:9
+msgid "[+] expand"
+msgstr "[+] déplier"
+
+#: ../../include/js_strings.php:10
+msgid "[-] collapse"
+msgstr "[-] replier"
+
+#: ../../include/js_strings.php:11
+msgid "Password too short"
+msgstr "Mot de passe trop court"
+
+#: ../../include/js_strings.php:12
+msgid "Passwords do not match"
+msgstr "Les mots de passe ne correspondent pas"
+
+#: ../../include/js_strings.php:13
+msgid "everybody"
+msgstr "tout le monde"
+
+#: ../../include/js_strings.php:14
+msgid "Secret Passphrase"
+msgstr "Phrase de passe secrète"
+
+#: ../../include/js_strings.php:15
+msgid "Passphrase hint"
+msgstr "Indice pour la phrase de passe"
+
+#: ../../include/js_strings.php:16
+msgid "Notice: Permissions have changed but have not yet been submitted."
+msgstr "Note&nbsp;: Les permissions ont changées, mais n'ont pas encore été sauvées."
+
+#: ../../include/js_strings.php:17
+msgid "close all"
+msgstr "fermer tout"
+
+#: ../../include/js_strings.php:18
+msgid "Nothing new here"
+msgstr "Aucun nouveau contenu trouvé"
+
+#: ../../include/js_strings.php:19
+msgid "Rate This Channel (this is public)"
+msgstr "Evaluer ce canal (publiquement)"
+
+#: ../../include/js_strings.php:21
+msgid "Describe (optional)"
+msgstr "Description (facultative)"
+
+#: ../../include/js_strings.php:23
+msgid "Please enter a link URL"
+msgstr "Merci d'insérer une URL"
+
+#: ../../include/js_strings.php:24
+msgid "Unsaved changes. Are you sure you wish to leave this page?"
+msgstr "Changements en attente. Voulez-vous vraiment quitter cette page?"
+
+#: ../../include/js_strings.php:27
+msgid "timeago.prefixAgo"
+msgstr "timeago.prefixAgo"
+
+#: ../../include/js_strings.php:28
+msgid "timeago.prefixFromNow"
+msgstr "timeago.prefixFromNow"
+
+#: ../../include/js_strings.php:29
+msgid "ago"
+msgstr "auparavant"
+
+#: ../../include/js_strings.php:30
+msgid "from now"
+msgstr "de maintenant"
+
+#: ../../include/js_strings.php:31
+msgid "less than a minute"
+msgstr "moins d'une minute"
+
+#: ../../include/js_strings.php:32
+msgid "about a minute"
+msgstr "environ une minute"
+
+#: ../../include/js_strings.php:33
+#, php-format
+msgid "%d minutes"
+msgstr "%d minutes"
+
+#: ../../include/js_strings.php:34
+msgid "about an hour"
+msgstr "environ une heure"
+
+#: ../../include/js_strings.php:35
+#, php-format
+msgid "about %d hours"
+msgstr "environ %d heures"
+
+#: ../../include/js_strings.php:36
+msgid "a day"
+msgstr "un jour"
+
+#: ../../include/js_strings.php:37
+#, php-format
+msgid "%d days"
+msgstr "%d jours"
+
+#: ../../include/js_strings.php:38
+msgid "about a month"
+msgstr "environ un mois"
+
+#: ../../include/js_strings.php:39
+#, php-format
+msgid "%d months"
+msgstr "%d mois"
+
+#: ../../include/js_strings.php:40
+msgid "about a year"
+msgstr "environ un an"
+
+#: ../../include/js_strings.php:41
+#, php-format
+msgid "%d years"
+msgstr "%d années"
+
+#: ../../include/js_strings.php:42
+msgid " "
+msgstr ""
+
+#: ../../include/js_strings.php:43
+msgid "timeago.numbers"
+msgstr "timeago.numbers"
+
+#: ../../include/js_strings.php:49
+msgctxt "long"
+msgid "May"
+msgstr "Mai"
+
+#: ../../include/js_strings.php:57
+msgid "Jan"
+msgstr "Jan"
+
+#: ../../include/js_strings.php:58
+msgid "Feb"
+msgstr "Fev"
+
+#: ../../include/js_strings.php:59
+msgid "Mar"
+msgstr "Mar"
+
+#: ../../include/js_strings.php:60
+msgid "Apr"
+msgstr "Avr"
+
+#: ../../include/js_strings.php:61
+msgctxt "short"
+msgid "May"
+msgstr "Mai"
+
+#: ../../include/js_strings.php:62
+msgid "Jun"
+msgstr "Jun"
+
+#: ../../include/js_strings.php:63
+msgid "Jul"
+msgstr "Jul"
+
+#: ../../include/js_strings.php:64
+msgid "Aug"
+msgstr "Aou"
+
+#: ../../include/js_strings.php:65
+msgid "Sep"
+msgstr "Sep"
+
+#: ../../include/js_strings.php:66
+msgid "Oct"
+msgstr "Oct"
+
+#: ../../include/js_strings.php:67
+msgid "Nov"
+msgstr "Nov"
+
+#: ../../include/js_strings.php:68
+msgid "Dec"
+msgstr "Dec"
+
+#: ../../include/js_strings.php:76
+msgid "Sun"
+msgstr "Dim"
+
+#: ../../include/js_strings.php:77
+msgid "Mon"
+msgstr "Lun"
+
+#: ../../include/js_strings.php:78
+msgid "Tue"
+msgstr "Mar"
+
+#: ../../include/js_strings.php:79
+msgid "Wed"
+msgstr "Mer"
+
+#: ../../include/js_strings.php:80
+msgid "Thu"
+msgstr "Jeu"
+
+#: ../../include/js_strings.php:81
+msgid "Fri"
+msgstr "Ven"
+
+#: ../../include/js_strings.php:82
+msgid "Sat"
+msgstr "Sam"
+
+#: ../../include/js_strings.php:83
+msgctxt "calendar"
+msgid "today"
+msgstr "aujourd'hui"
+
+#: ../../include/js_strings.php:84
+msgctxt "calendar"
+msgid "month"
+msgstr "mois"
+
+#: ../../include/js_strings.php:85
+msgctxt "calendar"
+msgid "week"
+msgstr "semaine"
+
+#: ../../include/js_strings.php:86
+msgctxt "calendar"
+msgid "day"
+msgstr "jour"
+
+#: ../../include/js_strings.php:87
+msgctxt "calendar"
+msgid "All day"
+msgstr "Toute la journée"
+
+#: ../../include/network.php:657
+msgid "view full size"
+msgstr "voir en taille réelle"
+
+#: ../../include/network.php:1885
+msgid "No Subject"
+msgstr "Pas d'objet"
+
+#: ../../include/network.php:2146 ../../include/network.php:2147
+msgid "Friendica"
+msgstr "Friendica"
+
+#: ../../include/network.php:2148
+msgid "OStatus"
+msgstr "OStatus"
+
+#: ../../include/network.php:2149
+msgid "GNU-Social"
+msgstr ""
+
+#: ../../include/network.php:2150
+msgid "RSS/Atom"
+msgstr "RSS/Atom"
+
+#: ../../include/network.php:2152
+msgid "Diaspora"
+msgstr "Diaspora"
+
+#: ../../include/network.php:2153
+msgid "Facebook"
+msgstr "Facebook"
+
+#: ../../include/network.php:2154
+msgid "Zot"
+msgstr "Zot"
+
+#: ../../include/network.php:2155
+msgid "LinkedIn"
+msgstr "Linkedin"
+
+#: ../../include/network.php:2156
+msgid "XMPP/IM"
+msgstr "XMPP/IM"
+
+#: ../../include/network.php:2157
+msgid "MySpace"
+msgstr "MySpace"
+
+#: ../../include/photos.php:110
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "L'image dépasse la taille limite de %lu octets"
+
+#: ../../include/photos.php:117
+msgid "Image file is empty."
+msgstr "L'image est vide."
+
+#: ../../include/photos.php:255
+msgid "Photo storage failed."
+msgstr "Le stockage de l'image a échoué."
+
+#: ../../include/photos.php:295
+msgid "a new photo"
+msgstr "une nouvelle photo"
+
+#: ../../include/photos.php:299
+#, php-format
+msgctxt "photo_upload"
+msgid "%1$s posted %2$s to %3$s"
+msgstr "%1$s a publié %2$s pour %3$s"
+
+#: ../../include/photos.php:506
+msgid "Upload New Photos"
+msgstr "Ajouter des photos"
+
+#: ../../include/zot.php:699
+msgid "Invalid data packet"
+msgstr "Paquet de données invalide"
+
+#: ../../include/zot.php:715
+msgid "Unable to verify channel signature"
+msgstr "Impossible de vérifier la signature du canal"
+
+#: ../../include/zot.php:2363
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr "Impossible de vérifier la signature de site pour %s"
+
+#: ../../include/zot.php:3712
+msgid "invalid target signature"
+msgstr "signature de la cible invalide"
+
+#: ../../include/page_widgets.php:6
+msgid "New Page"
+msgstr "Nouvelle page"
+
+#: ../../include/page_widgets.php:43
+msgid "Title"
+msgstr "Titre"
+
+#: ../../include/permissions.php:26
+msgid "Can view my normal stream and posts"
+msgstr "Peut voir les publications ordinaires sur mon canal."
+
+#: ../../include/permissions.php:27
+msgid "Can view my default channel profile"
+msgstr "Peut voir le profil du canal par défaut."
+
+#: ../../include/permissions.php:28
+msgid "Can view my connections"
+msgstr "Peut voir mes contacts"
+
+#: ../../include/permissions.php:29
+msgid "Can view my file storage and photos"
+msgstr "Peut voir mes fichiers et photos"
+
+#: ../../include/permissions.php:30
+msgid "Can view my webpages"
+msgstr "Peut voir mes pages web"
+
+#: ../../include/permissions.php:33
+msgid "Can send me their channel stream and posts"
+msgstr "Peuvent m'envoyer leur flux et les publications de leur canal"
+
+#: ../../include/permissions.php:34
+msgid "Can post on my channel page (\"wall\")"
+msgstr "Peuvent poster sur la page de mon canal (\"mur\")"
+
+#: ../../include/permissions.php:35
+msgid "Can comment on or like my posts"
+msgstr "Peuvent commenter et/ou aimer mes publications"
+
+#: ../../include/permissions.php:36
+msgid "Can send me private mail messages"
+msgstr "Peuvent m'envoyer des messages privés"
+
+#: ../../include/permissions.php:37
+msgid "Can like/dislike stuff"
+msgstr "Peuvent aimer/ne pas aimer"
+
+#: ../../include/permissions.php:37
+msgid "Profiles and things other than posts/comments"
+msgstr "Profils et autres excluant les publications/commentaires."
+
+#: ../../include/permissions.php:39
+msgid "Can forward to all my channel contacts via post @mentions"
+msgstr "Peut faire suivre à tous les contacts de mon canal via \"@mention\""
+
+#: ../../include/permissions.php:39
+msgid "Advanced - useful for creating group forum channels"
+msgstr "Avancé - utile pour les canaux de type \"forum/groupe\""
+
+#: ../../include/permissions.php:40
+msgid "Can chat with me (when available)"
+msgstr "Peut discuter avec moi (quand disponibie)"
+
+#: ../../include/permissions.php:41
+msgid "Can write to my file storage and photos"
+msgstr "Peut charger des fichiers et des photos dans mon canal"
+
+#: ../../include/permissions.php:42
+msgid "Can edit my webpages"
+msgstr "Peut modifier mes pages web"
+
+#: ../../include/permissions.php:44
+msgid "Can source my public posts in derived channels"
+msgstr "Peut rediriger mes publications publiques vers des canaux dérivés"
+
+#: ../../include/permissions.php:44
+msgid "Somewhat advanced - very useful in open communities"
+msgstr "Plutôt avancé - très utile dans les communautés ouvertes"
+
+#: ../../include/permissions.php:46
+msgid "Can administer my channel resources"
+msgstr "Peut administrer les ressources de mon canal"
+
+#: ../../include/permissions.php:46
+msgid ""
+"Extremely advanced. Leave this alone unless you know what you are doing"
+msgstr "Très avancé. Ne pas toucher, sauf si vous savez ce que vous faîtes"
+
+#: ../../include/permissions.php:877
+msgid "Social Networking"
+msgstr "Réseau social"
+
+#: ../../include/permissions.php:877
+msgid "Social - Mostly Public"
+msgstr "Social - surtout public"
+
+#: ../../include/permissions.php:877
+msgid "Social - Restricted"
+msgstr "Social - restreint"
+
+#: ../../include/permissions.php:877
+msgid "Social - Private"
+msgstr "Social - privé"
+
+#: ../../include/permissions.php:878
+msgid "Community Forum"
+msgstr "Forum communautaire"
+
+#: ../../include/permissions.php:878
+msgid "Forum - Mostly Public"
+msgstr "Forum - surtout public"
+
+#: ../../include/permissions.php:878
+msgid "Forum - Restricted"
+msgstr "Forum - restreint"
+
+#: ../../include/permissions.php:878
+msgid "Forum - Private"
+msgstr "Forum - privé"
+
+#: ../../include/permissions.php:879
+msgid "Feed Republish"
+msgstr "Republication de flux"
+
+#: ../../include/permissions.php:879
+msgid "Feed - Mostly Public"
+msgstr "Flux - surtout public"
+
+#: ../../include/permissions.php:879
+msgid "Feed - Restricted"
+msgstr "Flux - restreint"
+
+#: ../../include/permissions.php:880
+msgid "Special Purpose"
+msgstr "Utilisation spécifique"
+
+#: ../../include/permissions.php:880
+msgid "Special - Celebrity/Soapbox"
+msgstr "Spécial - célébrité/promotion"
+
+#: ../../include/permissions.php:880
+msgid "Special - Group Repository"
+msgstr "Spécial - dépôt partagé"
+
+#: ../../include/permissions.php:881
+msgid "Custom/Expert Mode"
+msgstr "Mode expert/spécifique"
+
+#: ../../include/activities.php:41
+msgid " and "
+msgstr "et"
+
+#: ../../include/activities.php:49
+msgid "public profile"
+msgstr "profil public"
+
+#: ../../include/activities.php:58
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s a changé %2$s en &ldquo;%3$s&rdquo;"
+
+#: ../../include/activities.php:59
+#, php-format
+msgid "Visit %1$s's %2$s"
+msgstr "Visiter %2$s de %1$s"
+
+#: ../../include/activities.php:62
+#, php-format
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s a mis à jour %2$s, modifiant %3$s."
+
+#: ../../include/bb2diaspora.php:398
+msgid "Attachments:"
+msgstr "Pièces jointes&nbsp;:"
+
+#: ../../include/bb2diaspora.php:487
+msgid "$Projectname event notification:"
+msgstr "Notification d'événement de $Projectname&nbsp;:"
#: ../../view/theme/redbasic/php/config.php:82
msgid "Focus (Hubzilla default)"
msgstr "Focus (par défaut pour Hubzilla)"
-#: ../../view/theme/redbasic/php/config.php:102
+#: ../../view/theme/redbasic/php/config.php:103
msgid "Theme settings"
msgstr "Paramètres du thème"
-#: ../../view/theme/redbasic/php/config.php:103
+#: ../../view/theme/redbasic/php/config.php:104
msgid "Select scheme"
msgstr "Définir la palette de couleurs"
-#: ../../view/theme/redbasic/php/config.php:104
+#: ../../view/theme/redbasic/php/config.php:105
msgid "Narrow navbar"
msgstr "Barre de navigation fine"
-#: ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:106
msgid "Navigation bar background color"
msgstr "Couleur de fond de la barre de navigation"
-#: ../../view/theme/redbasic/php/config.php:106
+#: ../../view/theme/redbasic/php/config.php:107
msgid "Navigation bar gradient top color"
msgstr "Dégradé de la barre de navigation - couleur du haut"
-#: ../../view/theme/redbasic/php/config.php:107
+#: ../../view/theme/redbasic/php/config.php:108
msgid "Navigation bar gradient bottom color"
msgstr "Dégradé de la barre de navigation - couleur du bas"
-#: ../../view/theme/redbasic/php/config.php:108
+#: ../../view/theme/redbasic/php/config.php:109
msgid "Navigation active button gradient top color"
msgstr "Dégradé du bouton de navigation actif - couleur du haut"
-#: ../../view/theme/redbasic/php/config.php:109
+#: ../../view/theme/redbasic/php/config.php:110
msgid "Navigation active button gradient bottom color"
msgstr "Dégradé du bouton de navigation actif - couleur du bas"
-#: ../../view/theme/redbasic/php/config.php:110
+#: ../../view/theme/redbasic/php/config.php:111
msgid "Navigation bar border color "
msgstr "Couleur de la bordure de la barre de navigation"
-#: ../../view/theme/redbasic/php/config.php:111
+#: ../../view/theme/redbasic/php/config.php:112
msgid "Navigation bar icon color "
msgstr "Couleur des icônes de la barre de navigation"
-#: ../../view/theme/redbasic/php/config.php:112
+#: ../../view/theme/redbasic/php/config.php:113
msgid "Navigation bar active icon color "
msgstr "Couleur de l'icône active de la barre de navigation"
-#: ../../view/theme/redbasic/php/config.php:113
+#: ../../view/theme/redbasic/php/config.php:114
msgid "link color"
msgstr "couleur des liens"
-#: ../../view/theme/redbasic/php/config.php:114
+#: ../../view/theme/redbasic/php/config.php:115
msgid "Set font-color for banner"
msgstr "Définir la couleur du texte de la bannière"
-#: ../../view/theme/redbasic/php/config.php:115
+#: ../../view/theme/redbasic/php/config.php:116
msgid "Set the background color"
msgstr "Définir la couleur d'arrière-plan"
-#: ../../view/theme/redbasic/php/config.php:116
+#: ../../view/theme/redbasic/php/config.php:117
msgid "Set the background image"
msgstr "Définir l'image d'arrière-plan"
-#: ../../view/theme/redbasic/php/config.php:117
+#: ../../view/theme/redbasic/php/config.php:118
msgid "Set the background color of items"
msgstr "Définir la couleur de fond des contributions"
-#: ../../view/theme/redbasic/php/config.php:118
+#: ../../view/theme/redbasic/php/config.php:119
msgid "Set the background color of comments"
msgstr "Couleur de fond des commentaires"
-#: ../../view/theme/redbasic/php/config.php:119
+#: ../../view/theme/redbasic/php/config.php:120
msgid "Set the border color of comments"
msgstr "Couleur de la bordure des commentaires"
-#: ../../view/theme/redbasic/php/config.php:120
+#: ../../view/theme/redbasic/php/config.php:121
msgid "Set the indent for comments"
msgstr "Indentation des commentaires"
-#: ../../view/theme/redbasic/php/config.php:121
+#: ../../view/theme/redbasic/php/config.php:122
msgid "Set the basic color for item icons"
msgstr "Définir la couleur de base pour les icônes des éléments"
-#: ../../view/theme/redbasic/php/config.php:122
+#: ../../view/theme/redbasic/php/config.php:123
msgid "Set the hover color for item icons"
msgstr "Définir la couleur de survol des icônes des éléments"
-#: ../../view/theme/redbasic/php/config.php:123
+#: ../../view/theme/redbasic/php/config.php:124
msgid "Set font-size for the entire application"
msgstr "Définir la taille de police pour l'application entière"
-#: ../../view/theme/redbasic/php/config.php:123
+#: ../../view/theme/redbasic/php/config.php:124
msgid "Example: 14px"
msgstr "Exemple : 14px"
-#: ../../view/theme/redbasic/php/config.php:124
+#: ../../view/theme/redbasic/php/config.php:125
msgid "Set font-size for posts and comments"
msgstr "Définir la taille de police pour les contributions et commentaires"
-#: ../../view/theme/redbasic/php/config.php:125
+#: ../../view/theme/redbasic/php/config.php:126
msgid "Set font-color for posts and comments"
msgstr "Définir la couleur de police pour les contributions et commentaires"
-#: ../../view/theme/redbasic/php/config.php:126
+#: ../../view/theme/redbasic/php/config.php:127
msgid "Set radius of corners"
msgstr "Définir le rayon des arrondis"
-#: ../../view/theme/redbasic/php/config.php:127
+#: ../../view/theme/redbasic/php/config.php:128
msgid "Set shadow depth of photos"
msgstr "Définir la profondeur de l'ombre des photos"
-#: ../../view/theme/redbasic/php/config.php:128
+#: ../../view/theme/redbasic/php/config.php:129
msgid "Set maximum width of content region in pixel"
msgstr "Définir la largeur maximale de la zone des contenus"
-#: ../../view/theme/redbasic/php/config.php:128
+#: ../../view/theme/redbasic/php/config.php:129
msgid "Leave empty for default width"
msgstr "Laissez vide pour avoir la largeur par défaut"
-#: ../../view/theme/redbasic/php/config.php:129
+#: ../../view/theme/redbasic/php/config.php:130
msgid "Left align page content"
msgstr "Aligner à gauche le contenu de la page"
-#: ../../view/theme/redbasic/php/config.php:130
+#: ../../view/theme/redbasic/php/config.php:131
msgid "Set minimum opacity of nav bar - to hide it"
msgstr "Définir l'opacité minimum du bandeau de navigation - pour le cacher"
-#: ../../view/theme/redbasic/php/config.php:131
+#: ../../view/theme/redbasic/php/config.php:132
msgid "Set size of conversation author photo"
msgstr "Définir la taille de la photo de l'auteur d'une conversation"
-#: ../../view/theme/redbasic/php/config.php:132
+#: ../../view/theme/redbasic/php/config.php:133
msgid "Set size of followup author photos"
msgstr "Définir la taille de la photo de l'auteur d'une réponse"
-#: ../../boot.php:1329
+#: ../../boot.php:1162
+#, php-format
+msgctxt "opensearch"
+msgid "Search %1$s (%2$s)"
+msgstr ""
+
+#: ../../boot.php:1162
+msgctxt "opensearch"
+msgid "$Projectname"
+msgstr ""
+
+#: ../../boot.php:1480
#, php-format
msgid "Update %s failed. See error logs."
msgstr "La mise-à-jour %s a échoué. Merci de consulter les journaux d'erreur."
-#: ../../boot.php:1332
+#: ../../boot.php:1483
#, php-format
msgid "Update Error at %s"
msgstr "Erreur de mise à jour sur %s"
-#: ../../boot.php:1499
+#: ../../boot.php:1684
msgid ""
"Create an account to access services and applications within the Hubzilla"
msgstr "Créez un compte pour pouvoir accéder aux services et applications de Hubzilla"
-#: ../../boot.php:1521
+#: ../../boot.php:1706
msgid "Password"
msgstr "Mot de passe"
-#: ../../boot.php:1522
+#: ../../boot.php:1707
msgid "Remember me"
msgstr "Se souvenir de moi"
-#: ../../boot.php:1525
+#: ../../boot.php:1710
msgid "Forgot your password?"
msgstr "Mot de passe oublié&nbsp;?"
-#: ../../boot.php:2155
+#: ../../boot.php:2276
msgid "toggle mobile"
msgstr "(dés)activer mobile"
-#: ../../boot.php:2308
+#: ../../boot.php:2425
msgid "Website SSL certificate is not valid. Please correct."
msgstr "Le certificat SSL n'est pas valide. Corrigez le."
-#: ../../boot.php:2311
+#: ../../boot.php:2428
#, php-format
msgid "[hubzilla] Website SSL error for %s"
msgstr "[hubzilla] Erreur SSL pour %s"
-#: ../../boot.php:2348
+#: ../../boot.php:2469
msgid "Cron/Scheduled tasks not running."
msgstr "Les taches planifiées ne tournent pas."
-#: ../../boot.php:2352
+#: ../../boot.php:2473
#, php-format
msgid "[hubzilla] Cron tasks not running on %s"
msgstr "[hubzilla] Les tâches planifiées ne tournent pas sur %s"
diff --git a/view/fr/hstrings.php b/view/fr/hstrings.php
index c4e4e47ba..a1ff9f868 100644
--- a/view/fr/hstrings.php
+++ b/view/fr/hstrings.php
@@ -5,22 +5,13 @@ function string_plural_select_fr($n){
return ($n > 1);;
}}
;
-App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Authentification distante bloquée. Vous êtes connecté(e) sur ce site localement. Merci de vous déconnecter et réessayer.";
-App::$strings["Welcome %s. Remote authentication successful."] = "Bienvenue %s. L'authentification distante a fonctionné.";
-App::$strings["Connect"] = "Ajouter/Suivre";
-App::$strings["New window"] = "Nouvelle fenêtre";
-App::$strings["Open the selected location in a different window or browser tab"] = "Ouvrir l'emplacement dans une fenêtre ou un onglet différent";
-App::$strings["User '%s' deleted"] = "Utilisateur '%s' supprimé";
-App::$strings["No username found in import file."] = "Aucun nom d'utilisateur dans le fichier d'import.";
-App::$strings["Unable to create a unique channel address. Import failed."] = "Impossible de créer une adresse de canal unique. Echec de l'import.";
-App::$strings["Import completed."] = "L'import est terminé.";
App::$strings["parent"] = "retour";
App::$strings["Collection"] = "Groupe de contacts";
App::$strings["Principal"] = "Principal";
App::$strings["Addressbook"] = "Carnet d'adresse";
App::$strings["Calendar"] = "Calendrier";
-App::$strings["Schedule Inbox"] = "Calendrier - Message entrants";
-App::$strings["Schedule Outbox"] = "Calendrier - Message sortants";
+App::$strings["Schedule Inbox"] = "Calendrier - Messages entrants";
+App::$strings["Schedule Outbox"] = "Calendrier - Messages sortants";
App::$strings["Unknown"] = "Inconnu";
App::$strings["Files"] = "Fichiers";
App::$strings["Total"] = "Total";
@@ -38,1014 +29,62 @@ App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s&#37;)
App::$strings["WARNING:"] = "AVERTISSEMENT&nbsp;:";
App::$strings["Create new folder"] = "Nouveau dossier";
App::$strings["Upload file"] = "Téléverser un fichier";
-App::$strings["Not a valid email address"] = "Ce n'est pas une adresse de courriel valide";
-App::$strings["Your email domain is not among those allowed on this site"] = "Votre domaine de courriel ne fait pas partie de ceux autorisés par ce site";
-App::$strings["Your email address is already registered at this site."] = "Votre adresse de courriel est déjà inscrite sur ce site.";
-App::$strings["An invitation is required."] = "Une invitation est requise.";
-App::$strings["Invitation could not be verified."] = "Votre invitation n'a pas pu être vérifiée.";
-App::$strings["Please enter the required information."] = "Merci d'entrer les informations requises.";
-App::$strings["Failed to store account information."] = "Impossible de stocker les informations liées au compte.";
-App::$strings["Registration confirmation for %s"] = "Confirmation de l'inscription pour %s";
-App::$strings["Registration request at %s"] = "Demande d'inscription sur %s";
-App::$strings["Administrator"] = "Administrateur";
-App::$strings["your registration password"] = "votre mot de passe d'inscription";
-App::$strings["Registration details for %s"] = "Détails de l'inscription pour %s";
-App::$strings["Account approved."] = "Compte approuvé.";
-App::$strings["Registration revoked for %s"] = "Inscription révoquée pour %s";
-App::$strings["Account verified. Please login."] = "Compte vérifié. Veuillez vous connecter.";
-App::$strings["Click here to upgrade."] = "Cliquez ici pour mettre à jour.";
-App::$strings["This action exceeds the limits set by your subscription plan."] = "Cette action outrepasserait les limites prévues par votre forfait.";
-App::$strings["This action is not available under your subscription plan."] = "Cette action n'est pas disponible avec votre forfait.";
-App::$strings["Visible to your default audience"] = "Visible pour vos contacts seulement";
-App::$strings["Show"] = "Montrer";
-App::$strings["Don't show"] = "Cacher";
-App::$strings["Other networks and post services"] = "Autres réseaux et services de messagerie";
-App::$strings["Permissions"] = "Autorisations";
-App::$strings["Close"] = "Fermer";
-App::$strings[" and "] = "et";
-App::$strings["public profile"] = "profil public";
-App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s a changé %2\$s en &ldquo;%3\$s&rdquo;";
-App::$strings["Visit %1\$s's %2\$s"] = "Visiter %2\$s de %1\$s";
-App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s a mis à jour %2\$s, modifiant %3\$s.";
-App::$strings["Public Timeline"] = "Fil public";
-App::$strings["Site Admin"] = "Administrateur";
-App::$strings["Bookmarks"] = "Favoris";
-App::$strings["Address Book"] = "Carnet d'adresses";
-App::$strings["Login"] = "Connexion";
-App::$strings["Channel Manager"] = "Gérer les canaux";
-App::$strings["Grid"] = "Réseau";
-App::$strings["Settings"] = "Paramètres";
-App::$strings["Webpages"] = "Pages web";
-App::$strings["Channel Home"] = "Mon canal";
-App::$strings["Profile"] = "Profil";
-App::$strings["Photos"] = "Photos";
-App::$strings["Events"] = "Événements";
-App::$strings["Directory"] = "Annuaire";
-App::$strings["Help"] = "Aide";
-App::$strings["Mail"] = "Messages";
-App::$strings["Mood"] = "Humeur";
-App::$strings["Poke"] = "Tapoter";
-App::$strings["Chat"] = "Clavardage";
-App::$strings["Search"] = "Recherche";
-App::$strings["Probe"] = "Sonder";
-App::$strings["Suggest"] = "Suggérer";
-App::$strings["Random Channel"] = "Un canal au hasard";
-App::$strings["Invite"] = "Invitation";
-App::$strings["Features"] = "Fonctionalités";
-App::$strings["Language"] = "Langue";
-App::$strings["Post"] = "Envoyer";
-App::$strings["Profile Photo"] = "Photo du Profil";
-App::$strings["Update"] = "Mise à jour";
-App::$strings["Install"] = "Installer";
-App::$strings["Purchase"] = "Acheter";
-App::$strings["Permission denied."] = "Permission refusée.";
-App::$strings["Item was not found."] = "Élément introuvable.";
-App::$strings["No source file."] = "Pas de fichier source.";
-App::$strings["Cannot locate file to replace"] = "Impossible de trouver le fichier à remplacer.";
-App::$strings["Cannot locate file to revise/update"] = "Impossible de trouver le fichier à corriger/mettre à jour";
-App::$strings["File exceeds size limit of %d"] = "Le fichier dépasse la taille limite de %d";
-App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Vous avez atteint votre limite de %1$.0f méga-octets autorisés pour le stockage des pièces-jointes.";
-App::$strings["File upload failed. Possible system limit or action terminated."] = "Envoi du fichier impossible. Limite système ou action avortée.";
-App::$strings["Stored file could not be verified. Upload failed."] = "Le fichier stocké n'a pu être vérifié. Echec de l'envoi.";
-App::$strings["Path not available."] = "Chemin non disponible.";
-App::$strings["Empty pathname"] = "Chemin vide";
-App::$strings["duplicate filename or path"] = "doublon de chemin ou de fichier";
-App::$strings["Path not found."] = "Chemin introuvable.";
-App::$strings["mkdir failed."] = "mkdir a échoué.";
-App::$strings["database storage failed."] = "l'écriture dans la base de données a échoué.";
-App::$strings["Empty path"] = "Chemin vide";
-App::$strings["Logged out."] = "Deconnecté.";
-App::$strings["Failed authentication"] = "Échec de l'authentification";
-App::$strings["Login failed."] = "Échec de la connexion.";
-App::$strings["Attachments:"] = "Pièces jointes&nbsp;:";
-App::$strings["l F d, Y \\@ g:i A"] = "l d F Y \\à G\\hi";
-App::$strings["\$Projectname event notification:"] = "Notification d'événement de \$Projectname&nbsp;:";
-App::$strings["Starts:"] = "Début&nbsp;:";
-App::$strings["Finishes:"] = "Fin&nbsp;:";
-App::$strings["Location:"] = "Emplacement&nbsp;:";
-App::$strings["Image/photo"] = "Image/photo";
-App::$strings["Encrypted content"] = "Contenu chiffré";
-App::$strings["Install %s element: "] = "Installer %s élément";
-App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Ce message contient un élément installable %s, mais vous n'avez pas l'autorisation de l'installer sur ce site.";
-App::$strings["webpage"] = "pages web";
-App::$strings["layout"] = "mise en page";
-App::$strings["block"] = "bloquer";
-App::$strings["menu"] = "menu";
-App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s a écrit %2\$s qui suit %3\$s";
-App::$strings["post"] = "publication";
-App::$strings["Different viewers will see this text differently"] = "Ce texte aura un rendu différent en fonction des utilisateurs";
-App::$strings["$1 spoiler"] = "dévoile&nbsp;: $1";
-App::$strings["$1 wrote:"] = "$1 a écrit&nbsp;:";
-App::$strings["%1\$s's bookmarks"] = "Favoris de %1\$s";
-App::$strings["Missing room name"] = "Il manque le nom du salon";
-App::$strings["Duplicate room name"] = "Un salon avec ce nom existe déjà";
-App::$strings["Invalid room specifier."] = "Identifiant de salon invalide.";
-App::$strings["Room not found."] = "Salon introuvable.";
-App::$strings["Room is full"] = "Le salon est plein";
-App::$strings["Default"] = "Défaut";
-App::$strings["%d invitation available"] = array(
- 0 => "%d invitation disponible",
- 1 => "%d invitations disponibles",
-);
-App::$strings["Advanced"] = "Avancé";
-App::$strings["Find Channels"] = "Trouver des canaux";
-App::$strings["Enter name or interest"] = "Saisir nom ou centre d'intérêt";
-App::$strings["Connect/Follow"] = "Ajouter/Suivre";
-App::$strings["Examples: Robert Morgenstein, Fishing"] = "Exemples: Guillaume Martin, Course à pieds";
-App::$strings["Find"] = "Trouver";
-App::$strings["Channel Suggestions"] = "Canaux suggérés";
-App::$strings["Random Profile"] = "Un profil au hasard";
-App::$strings["Invite Friends"] = "Inviter des amis";
-App::$strings["Advanced example: name=fred and country=iceland"] = "Exemple avancé&nbsp;: name=fred and country=iceland";
-App::$strings["Saved Folders"] = "Dossiers sauvegardés";
-App::$strings["Everything"] = "Tout";
-App::$strings["Categories"] = "Catégories";
-App::$strings["%d connection in common"] = array(
- 0 => "%d contact en commun",
- 1 => "%d contacts en commun",
-);
-App::$strings["show more"] = "montrer plus";
-App::$strings["photo"] = "photo";
-App::$strings["event"] = "événement";
-App::$strings["channel"] = "canal";
-App::$strings["status"] = "état";
-App::$strings["comment"] = "commentaire";
-App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s aime %3\$s de %2\$s";
-App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s n'aime pas %3\$s de %2\$s";
-App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s ajoute %2\$s à ses contacts";
-App::$strings["%1\$s poked %2\$s"] = "%1\$s a tapoté %2\$s";
-App::$strings["poked"] = "a tapoté";
-App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s est %2\$s";
-App::$strings["__ctx:title__ Likes"] = "Aime";
-App::$strings["__ctx:title__ Dislikes"] = "N'aime pas";
-App::$strings["__ctx:title__ Agree"] = "D'accord";
-App::$strings["__ctx:title__ Disagree"] = "Pas d'accord";
-App::$strings["__ctx:title__ Abstain"] = "Abstention";
-App::$strings["__ctx:title__ Attending"] = "Participations";
-App::$strings["__ctx:title__ Not attending"] = "Non-participations";
-App::$strings["__ctx:title__ Might attend"] = "Participation possible";
-App::$strings["Select"] = "Sélectionner";
-App::$strings["Private Message"] = "Message Privé";
-App::$strings["Message signature validated"] = "Signature du message validée";
-App::$strings["Message signature incorrect"] = "Signature du message incorrecte";
-App::$strings["View %s's profile @ %s"] = "Voir le profil de %s @ %s";
-App::$strings["Categories:"] = "Catégories&nbsp;:";
-App::$strings["Filed under:"] = "Classé sous&nbsp;:";
-App::$strings["from %s"] = "de %s";
-App::$strings["last edited: %s"] = "dernière modification&nbsp;: %s";
-App::$strings["Expires: %s"] = "Expire&nbsp;: %s";
-App::$strings["View in context"] = "Voir en contexte";
-App::$strings["Please wait"] = "Merci de patienter";
-App::$strings["remove"] = "supprimer";
-App::$strings["Loading..."] = "Chargement...";
-App::$strings["Delete Selected Items"] = "Supprimer les éléments selectionnés";
-App::$strings["View Source"] = "Voir source";
-App::$strings["Follow Thread"] = "Suivre la discussion";
-App::$strings["Unfollow Thread"] = "Ne plus suivre la discussion";
-App::$strings["View Profile"] = "Voir le profil";
-App::$strings["Activity/Posts"] = "Activité/Publications";
-App::$strings["Edit Connection"] = "Modifier le contact";
-App::$strings["Message"] = "Message";
-App::$strings["Ratings"] = "Evaluations";
-App::$strings["%s likes this."] = "%s aime ça.";
-App::$strings["%s doesn't like this."] = "%s n'aime pas ça.";
-App::$strings["<span %1\$s>%2\$d people</span> like this."] = array(
- 0 => "<span %1\$s>%2\$d personne</span> aime ceci.",
- 1 => "<span %1\$s>%2\$d personnes</span> aiment ceci.",
-);
-App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
- 0 => "<span %1\$s>%2\$d personne</span> n'aime pas ça.",
- 1 => "<span %1\$s>%2\$d personnes</span> n'aiment pas ça.",
-);
-App::$strings["and"] = "et";
-App::$strings[", and %d other people"] = array(
- 0 => ", et %d autre personne",
- 1 => ", et %d autres personnes",
-);
-App::$strings["%s like this."] = "%s aime ça.";
-App::$strings["%s don't like this."] = "%s n'aime pas ça.";
-App::$strings["Visible to <strong>everybody</strong>"] = "Visible par <strong>tout le monde</strong>";
-App::$strings["Please enter a link URL:"] = "Merci d'entrer l'URL d'un lien&nbsp;:";
-App::$strings["Please enter a video link/URL:"] = "Merci d'entrer l'URL d'une video&nbsp;:";
-App::$strings["Please enter an audio link/URL:"] = "Merci d'entrer l'URL d'un contenu audio&nsbp;:";
-App::$strings["Tag term:"] = "Étiquette&nbsp;:";
-App::$strings["Save to Folder:"] = "Classer dans le dossier&nbsp;:";
-App::$strings["Where are you right now?"] = "Où êtes-vous en ce moment&nbsp;?";
-App::$strings["Expires YYYY-MM-DD HH:MM"] = "Expire le YYYY-MM-DD à HH:MM";
-App::$strings["Preview"] = "Aperçu";
-App::$strings["Share"] = "Partager";
-App::$strings["Page link name"] = "Nom du lien vers la page";
-App::$strings["Post as"] = "Publier en tant que";
-App::$strings["Bold"] = "Gras";
-App::$strings["Italic"] = "Italique";
-App::$strings["Underline"] = "Souligné";
-App::$strings["Quote"] = "Citation";
-App::$strings["Code"] = "Code";
-App::$strings["Upload photo"] = "Téléverser une photo";
-App::$strings["upload photo"] = "téléverser une photo";
-App::$strings["Attach file"] = "Joindre un fichier";
-App::$strings["attach file"] = "joindre un fichier";
-App::$strings["Insert web link"] = "Insérer lien web";
-App::$strings["web link"] = "lien web";
-App::$strings["Insert video link"] = "Insérer lien vidéo";
-App::$strings["video link"] = "lien vidéo";
-App::$strings["Insert audio link"] = "Insérer un lien audio";
-App::$strings["audio link"] = "lien audio";
-App::$strings["Set your location"] = "Spécifier votre emplacement géographique";
-App::$strings["set location"] = "spécifier l'emplacement géographique";
-App::$strings["Toggle voting"] = "(Dés)activer le vote";
-App::$strings["Clear browser location"] = "Supprimer l'emplacement géographique du navigateur";
-App::$strings["clear location"] = "supprimer l'emplacement géographique";
-App::$strings["Title (optional)"] = "Titre (facultatif)";
-App::$strings["Categories (optional, comma-separated list)"] = "Catégories (facultatives, séparées par des virgules)";
-App::$strings["Permission settings"] = "Gérer les autorisations";
-App::$strings["permissions"] = "autorisations";
-App::$strings["Public post"] = "Contenu public";
-App::$strings["Example: bob@example.com, mary@example.com"] = "Exemple: julien@exemple.com, marie@exemple.com";
-App::$strings["Set expiration date"] = "Définir la date d'expiration";
-App::$strings["Set publish date"] = "Définir la date de publication";
-App::$strings["Encrypt text"] = "Chiffrer le texte";
-App::$strings["OK"] = "OK";
-App::$strings["Cancel"] = "Annuler";
-App::$strings["Discover"] = "À découvrir";
-App::$strings["Imported public streams"] = "Flux publics importés";
-App::$strings["Commented Order"] = "Par date de commentaire";
-App::$strings["Sort by Comment Date"] = "Trier par date de dernier commentaire";
-App::$strings["Posted Order"] = "Par date de publication";
-App::$strings["Sort by Post Date"] = "Trier par date de publication";
-App::$strings["Personal"] = "Me concernant";
-App::$strings["Posts that mention or involve you"] = "Publications qui vous mentionnent ou vous concernent d'une manière ou d'une autre";
-App::$strings["New"] = "Nouveautés";
-App::$strings["Activity Stream - by date"] = "Flux d'activité - par date";
-App::$strings["Starred"] = "Mis en avant (étoiles)";
-App::$strings["Favourite Posts"] = "Publications préférées";
-App::$strings["Spam"] = "Indésirable";
-App::$strings["Posts flagged as SPAM"] = "Publications marquées comme indésirables";
-App::$strings["Channel"] = "Canal";
-App::$strings["Status Messages and Posts"] = "Messages d'état et contributions";
-App::$strings["About"] = "À propos";
-App::$strings["Profile Details"] = "Détails du profil";
-App::$strings["Photo Albums"] = "Albums photo";
-App::$strings["Files and Storage"] = "Fichiers et Stockage";
-App::$strings["Chatrooms"] = "Salons de clavardage";
-App::$strings["Saved Bookmarks"] = "Favoris sauvegardés";
-App::$strings["Manage Webpages"] = "Gérer les pages web";
-App::$strings["View all"] = "Voir tout";
-App::$strings["__ctx:noun__ Like"] = array(
- 0 => "Aime",
- 1 => "Aime",
-);
-App::$strings["__ctx:noun__ Dislike"] = array(
- 0 => "N'aime pas",
- 1 => "N'aime pas",
-);
-App::$strings["__ctx:noun__ Attending"] = array(
- 0 => "Participe",
- 1 => "Participent",
-);
-App::$strings["__ctx:noun__ Not Attending"] = array(
- 0 => "Ne participe pas",
- 1 => "Ne participent pas",
-);
-App::$strings["__ctx:noun__ Undecided"] = array(
- 0 => "Indécis(e)",
- 1 => "Indécis(es)",
-);
-App::$strings["__ctx:noun__ Agree"] = array(
- 0 => "D'accord",
- 1 => "D'accord",
-);
-App::$strings["__ctx:noun__ Disagree"] = array(
- 0 => "Pas d'accord",
- 1 => "Pas d'accord",
-);
-App::$strings["__ctx:noun__ Abstain"] = array(
- 0 => "S'abstient",
- 1 => "S'abstiennent",
-);
-App::$strings["Miscellaneous"] = "Divers";
-App::$strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-JJ ou MM-JJ";
-App::$strings["Required"] = "Requis";
-App::$strings["never"] = "jamais";
-App::$strings["less than a second ago"] = "à l'instant";
-App::$strings["year"] = "année";
-App::$strings["years"] = "années";
-App::$strings["month"] = "mois";
-App::$strings["months"] = "mois";
-App::$strings["week"] = "semaine";
-App::$strings["weeks"] = "semaines";
-App::$strings["day"] = "jour";
-App::$strings["days"] = "jours";
-App::$strings["hour"] = "heure";
-App::$strings["hours"] = "heures";
-App::$strings["minute"] = "minute";
-App::$strings["minutes"] = "minutes";
-App::$strings["second"] = "seconde";
-App::$strings["seconds"] = "secondes";
-App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "il y a %1\$d %2\$s";
-App::$strings["%1\$s's birthday"] = "Anniversaire de %1\$s";
-App::$strings["Happy Birthday %1\$s"] = "Joyeux Anniversaire %1\$s";
-App::$strings["Cannot locate DNS info for database server '%s'"] = "Impossible de trouver les infos DNS du serveur de BDD '%s'";
-App::$strings["Directory Options"] = "Options d'annuaire";
-App::$strings["Safe Mode"] = "Mode sûr";
-App::$strings["No"] = "Non";
-App::$strings["Yes"] = "Oui";
-App::$strings["Public Forums Only"] = "Les forums publics uniquement";
-App::$strings["This Website Only"] = "Ce site uniquement";
-App::$strings["This event has been added to your calendar."] = "Cet évènement a été ajouté dans votre calendrier.";
-App::$strings["Not specified"] = "Non spécifié";
-App::$strings["Needs Action"] = "Besoin d'une action";
-App::$strings["Completed"] = "Terminé";
-App::$strings["In Process"] = "En cours";
-App::$strings["Cancelled"] = "Annulé";
-App::$strings["Channel is blocked on this site."] = "Ce canal est bloqué sur ce site.";
-App::$strings["Channel location missing."] = "Emplacement du canal introuvable.";
-App::$strings["Response from remote channel was incomplete."] = "La réponse du canal distant était incomplète.";
-App::$strings["Channel was deleted and no longer exists."] = "Le canal a été supprimé et n'existe plus.";
-App::$strings["Protocol disabled."] = "Protocole désactivé.";
-App::$strings["Channel discovery failed."] = "La tentative d'accéder au canal a échoué.";
-App::$strings["local account not found."] = "compte local introuvable.";
-App::$strings["Cannot connect to yourself."] = "Ne peut pas se connecter à vous.";
-App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un groupe supprimé portant ce nom a été ressuscité. Les permissions liées aux éléments existants <strong>peuvent</strong> s'appliquer au groupe et aux membres futurs. Si ce n'est pas ce que vous attendiez, merci de créer un autre groupe avec un nom différent.";
-App::$strings["Add new connections to this privacy group"] = "Ajouter de nouveaux contacts à ce groupe d'accès";
-App::$strings["All Channels"] = "Tous les canaux";
-App::$strings["edit"] = "modifier";
-App::$strings["Privacy Groups"] = "Groupes d'accès";
-App::$strings["Edit group"] = "Modifier le groupe";
-App::$strings["Add privacy group"] = "Ajouter un groupe d'accès";
-App::$strings["Channels not in any privacy group"] = "Canaux n'étant dans aucun groupe d'accès";
-App::$strings["add"] = "ajouter";
-App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "L'import a échoué. Un canal existe déjà avec ce nom";
-App::$strings["Channel clone failed. Import failed."] = "Echec du clonage du canal. Echec de l'impot.";
-App::$strings["Cloned channel not found. Import failed."] = "Canal cloné non trouvé. Echec de l'import.";
-App::$strings["Delete this item?"] = "Supprimer cet élément?";
-App::$strings["Comment"] = "Commenter";
-App::$strings["[+] show all"] = "[+] voir tous";
-App::$strings["[-] show less"] = "[-] montrer moins";
-App::$strings["[+] expand"] = "[+] déplier";
-App::$strings["[-] collapse"] = "[-] replier";
-App::$strings["Password too short"] = "Mot de passe trop court";
-App::$strings["Passwords do not match"] = "Les mots de passe ne correspondent pas";
-App::$strings["everybody"] = "tout le monde";
-App::$strings["Secret Passphrase"] = "Phrase de passe secrète";
-App::$strings["Passphrase hint"] = "Indice pour la phrase de passe";
-App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Note&nbsp;: Les permissions ont changées, mais n'ont pas encore été sauvées.";
-App::$strings["close all"] = "fermer tout";
-App::$strings["Nothing new here"] = "Aucun nouveau contenu trouvé";
-App::$strings["Rate This Channel (this is public)"] = "Evaluer ce canal (publiquement)";
-App::$strings["Rating"] = "Evaluation";
-App::$strings["Describe (optional)"] = "Description (facultative)";
-App::$strings["Submit"] = "Envoyer";
-App::$strings["Please enter a link URL"] = "Merci d'insérer une URL";
-App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Changements en attente. Voulez-vous vraiment quitter cette page?";
-App::$strings["Location"] = "Emplacement";
-App::$strings["timeago.prefixAgo"] = "timeago.prefixAgo";
-App::$strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
-App::$strings["ago"] = "auparavant";
-App::$strings["from now"] = "de maintenant";
-App::$strings["less than a minute"] = "moins d'une minute";
-App::$strings["about a minute"] = "environ une minute";
-App::$strings["%d minutes"] = "%d minutes";
-App::$strings["about an hour"] = "environ une heure";
-App::$strings["about %d hours"] = "environ %d heures";
-App::$strings["a day"] = "un jour";
-App::$strings["%d days"] = "%d jours";
-App::$strings["about a month"] = "environ un mois";
-App::$strings["%d months"] = "%d mois";
-App::$strings["about a year"] = "environ un an";
-App::$strings["%d years"] = "%d années";
-App::$strings[" "] = "";
-App::$strings["timeago.numbers"] = "timeago.numbers";
-App::$strings["January"] = "Janvier";
-App::$strings["February"] = "Février";
-App::$strings["March"] = "Mars";
-App::$strings["April"] = "Avril";
-App::$strings["__ctx:long__ May"] = "Mai";
-App::$strings["June"] = "Juin";
-App::$strings["July"] = "Juillet";
-App::$strings["August"] = "Août";
-App::$strings["September"] = "Septembre";
-App::$strings["October"] = "Octobre";
-App::$strings["November"] = "Novembre";
-App::$strings["December"] = "Décembre";
-App::$strings["Jan"] = "Jan";
-App::$strings["Feb"] = "Fev";
-App::$strings["Mar"] = "Mar";
-App::$strings["Apr"] = "Avr";
-App::$strings["__ctx:short__ May"] = "Mai";
-App::$strings["Jun"] = "Jun";
-App::$strings["Jul"] = "Jul";
-App::$strings["Aug"] = "Aou";
-App::$strings["Sep"] = "Sep";
-App::$strings["Oct"] = "Oct";
-App::$strings["Nov"] = "Nov";
-App::$strings["Dec"] = "Dec";
-App::$strings["Sunday"] = "Dimanche";
-App::$strings["Monday"] = "Lundi";
-App::$strings["Tuesday"] = "Mardi";
-App::$strings["Wednesday"] = "Mercredi";
-App::$strings["Thursday"] = "Jeudi";
-App::$strings["Friday"] = "Vendredi";
-App::$strings["Saturday"] = "Samedi";
-App::$strings["Sun"] = "Dim";
-App::$strings["Mon"] = "Lun";
-App::$strings["Tue"] = "Mar";
-App::$strings["Wed"] = "Mer";
-App::$strings["Thu"] = "Jeu";
-App::$strings["Fri"] = "Ven";
-App::$strings["Sat"] = "Sam";
-App::$strings["__ctx:calendar__ today"] = "aujourd'hui";
-App::$strings["__ctx:calendar__ month"] = "mois";
-App::$strings["__ctx:calendar__ week"] = "semaine";
-App::$strings["__ctx:calendar__ day"] = "jour";
-App::$strings["__ctx:calendar__ All day"] = "Toute la journée";
-App::$strings["No recipient provided."] = "Pas de destinataire.";
-App::$strings["[no subject]"] = "[sans objet]";
-App::$strings["Unable to determine sender."] = "Impossible de déterminer l'émetteur.";
-App::$strings["Stored post could not be verified."] = "Le message stocké n'a pas pu être vérifié.";
-App::$strings["Logout"] = "Déconnexion";
-App::$strings["End this session"] = "Mettre fin à la session";
-App::$strings["Home"] = "Mon canal";
-App::$strings["Your posts and conversations"] = "Vos publications et conversations";
-App::$strings["Your profile page"] = "Votre profil";
-App::$strings["Edit Profiles"] = "Modifier les profils";
-App::$strings["Manage/Edit profiles"] = "Gérer/modifier les profils";
-App::$strings["Edit Profile"] = "Éditeur de profil";
-App::$strings["Edit your profile"] = "Modifier votre profil";
-App::$strings["Your photos"] = "Vos photos";
-App::$strings["Your files"] = "Vos fichiers";
-App::$strings["Your chatrooms"] = "Vos salons";
-App::$strings["Your bookmarks"] = "Vos favoris";
-App::$strings["Your webpages"] = "Vos pages web";
-App::$strings["Sign in"] = "Connexion";
-App::$strings["%s - click to logout"] = "%s - cliquer ici pour déconnecter";
-App::$strings["Remote authentication"] = "Authentification distante";
-App::$strings["Click to authenticate to your home hub"] = "S'authentifier auprès de votre hub principal";
-App::$strings["Home Page"] = "Page d'accueil";
-App::$strings["Register"] = "S'inscrire";
-App::$strings["Create an account"] = "Créer un compte";
-App::$strings["Help and documentation"] = "Aide et documentation";
-App::$strings["Apps"] = "Applications";
-App::$strings["Applications, utilities, links, games"] = "Applications, utilitaires, liens, jeux";
-App::$strings["Search site @name, #tag, ?docs, content"] = "Recherche @nom, #tag, contenu";
-App::$strings["Channel Directory"] = "Annuaire des canaux";
-App::$strings["Your grid"] = "Votre réseau";
-App::$strings["Mark all grid notifications seen"] = "Marquer toutes les notifications du réseau comme vues";
-App::$strings["Channel home"] = "Mon canal";
-App::$strings["Mark all channel notifications seen"] = "Marquer toutes les notifications du canal comme vues";
-App::$strings["Connections"] = "Contacts";
-App::$strings["Notices"] = "Notifications";
-App::$strings["Notifications"] = "Notifications";
-App::$strings["See all notifications"] = "Voir toutes les notifications";
-App::$strings["Mark all system notifications seen"] = "Marquer toutes les notifications système comme vues";
-App::$strings["Private mail"] = "Messages privés";
-App::$strings["See all private messages"] = "Voir tous les messages privés";
-App::$strings["Mark all private messages seen"] = "Marquer tous les messages privés comme vus";
-App::$strings["Inbox"] = "Boîte de réception";
-App::$strings["Outbox"] = "Boîte d'envoi";
-App::$strings["New Message"] = "Nouveau message";
-App::$strings["Event Calendar"] = "Calendrier des événements";
-App::$strings["See all events"] = "Voir tous les événements";
-App::$strings["Mark all events seen"] = "Marquer tous les événements comme vus";
-App::$strings["Manage Your Channels"] = "Gérer vos canaux";
-App::$strings["Account/Channel Settings"] = "Paramètres du Compte/Canal";
-App::$strings["Admin"] = "Administrateur";
-App::$strings["Site Setup and Configuration"] = "Configuration du site";
-App::$strings["@name, #tag, ?doc, content"] = "@nom, #étiquette, ?doc, contenu";
-App::$strings["Please wait..."] = "Merci de patienter...";
-App::$strings["view full size"] = "voir en taille réelle";
-App::$strings["\$Projectname Notification"] = "Notification \$Projectname";
-App::$strings["\$projectname"] = "\$projectname";
-App::$strings["Thank You,"] = "Merci,";
-App::$strings["%s Administrator"] = "l'administrateur de %s";
-App::$strings["No Subject"] = "Pas d'objet";
-App::$strings["created a new post"] = "a publié un nouveau message";
-App::$strings["commented on %s's post"] = "a commenté la publication de %s";
-App::$strings["New Page"] = "Nouvelle page";
-App::$strings["View"] = "Voir";
-App::$strings["Actions"] = "Actions";
-App::$strings["Page Link"] = "Lien vers la page";
-App::$strings["Title"] = "Titre";
-App::$strings["Created"] = "Créé(e)";
-App::$strings["Edited"] = "Modifié(e)";
-App::$strings["Profile Photos"] = "Photos du profil";
-App::$strings["Image exceeds website size limit of %lu bytes"] = "L'image dépasse la taille limite de %lu octets";
-App::$strings["Image file is empty."] = "L'image est vide.";
-App::$strings["Unable to process image"] = "Impossible de traiter l'image";
-App::$strings["Photo storage failed."] = "Le stockage de l'image a échoué.";
-App::$strings["a new photo"] = "une nouvelle photo";
-App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s a publié %2\$s pour %3\$s";
-App::$strings["Upload New Photos"] = "Ajouter des photos";
-App::$strings["Male"] = "Homme";
-App::$strings["Female"] = "Femme";
-App::$strings["Currently Male"] = "Actuellement homme";
-App::$strings["Currently Female"] = "Actuellement femme";
-App::$strings["Mostly Male"] = "Surtout homme";
-App::$strings["Mostly Female"] = "Surtout femme";
-App::$strings["Transgender"] = "Transgenre";
-App::$strings["Intersex"] = "Intersexuel";
-App::$strings["Transsexual"] = "Transsexuel";
-App::$strings["Hermaphrodite"] = "Hermaphrodite";
-App::$strings["Neuter"] = "Neutre";
-App::$strings["Non-specific"] = "Non spécifique";
-App::$strings["Other"] = "Autre";
-App::$strings["Undecided"] = "Indécis";
-App::$strings["Males"] = "Hommes";
-App::$strings["Females"] = "Femmes";
-App::$strings["Gay"] = "Gay";
-App::$strings["Lesbian"] = "Lesbienne";
-App::$strings["No Preference"] = "Sans préférence";
-App::$strings["Bisexual"] = "Bisexuel";
-App::$strings["Autosexual"] = "Autosexuel";
-App::$strings["Abstinent"] = "Abstinent";
-App::$strings["Virgin"] = "Vierge";
-App::$strings["Deviant"] = "Déviant";
-App::$strings["Fetish"] = "Fétichiste";
-App::$strings["Oodles"] = "Une floppée";
-App::$strings["Nonsexual"] = "Non-sexuel";
-App::$strings["Single"] = "Célibataire";
-App::$strings["Lonely"] = "Solitaire";
-App::$strings["Available"] = "Disponible";
-App::$strings["Unavailable"] = "Indisponible";
-App::$strings["Has crush"] = "A un béguin";
-App::$strings["Infatuated"] = "Amoureux transi";
-App::$strings["Dating"] = "Sort avec quelqu'un";
-App::$strings["Unfaithful"] = "Infidèle";
-App::$strings["Sex Addict"] = "Accro au sexe";
-App::$strings["Friends"] = "Amis";
-App::$strings["Friends/Benefits"] = "Amis avec bénéfices";
-App::$strings["Casual"] = "Sans engagement";
-App::$strings["Engaged"] = "Fiancé(e)";
-App::$strings["Married"] = "Marié(e)";
-App::$strings["Imaginarily married"] = "Marié(e) dans ses rêves";
-App::$strings["Partners"] = "Partenaires";
-App::$strings["Cohabiting"] = "En cohabitation";
-App::$strings["Common law"] = "Conjoints de fait";
-App::$strings["Happy"] = "Heureux";
-App::$strings["Not looking"] = "Pas en recherche";
-App::$strings["Swinger"] = "Echangiste";
-App::$strings["Betrayed"] = "Trahi(e)";
-App::$strings["Separated"] = "Séparé(e)";
-App::$strings["Unstable"] = "Instable";
-App::$strings["Divorced"] = "Divorcé(e)";
-App::$strings["Imaginarily divorced"] = "Divorcé(e) dans ses rêves";
-App::$strings["Widowed"] = "Veuf/veuve";
-App::$strings["Uncertain"] = "Incertain";
-App::$strings["It's complicated"] = "C'est compliqué";
-App::$strings["Don't care"] = "S'en fiche";
-App::$strings["Ask me"] = "Me demander";
-App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Le formulaire n'est plus sécurisé, probablement parce qu'il est ouvert depuis trop longtemps (plus de 3 heures).";
-App::$strings["Tags"] = "Étiquettes";
-App::$strings["Keywords"] = "Mots-clefs";
-App::$strings["have"] = "ont";
-App::$strings["has"] = "a";
-App::$strings["want"] = "veulent";
-App::$strings["wants"] = "veut";
-App::$strings["like"] = "aiment";
-App::$strings["likes"] = "aime";
-App::$strings["dislike"] = "n'aiment pas";
-App::$strings["dislikes"] = "n'aime pas";
-App::$strings["Invalid data packet"] = "Paquet de données invalide";
-App::$strings["Unable to verify channel signature"] = "Impossible de vérifier la signature du canal";
-App::$strings["Unable to verify site signature for %s"] = "Impossible de vérifier la signature de site pour %s";
-App::$strings["invalid target signature"] = "signature de la cible invalide";
-App::$strings["Frequently"] = "Fréquemment";
-App::$strings["Hourly"] = "Toutes les heures";
-App::$strings["Twice daily"] = "Deux fois par jour";
-App::$strings["Daily"] = "Chaque jour";
-App::$strings["Weekly"] = "Chaque semaine";
-App::$strings["Monthly"] = "Chaque mois";
-App::$strings["Friendica"] = "Friendica";
-App::$strings["OStatus"] = "OStatus";
-App::$strings["RSS/Atom"] = "RSS/Atom";
-App::$strings["Email"] = "Courriel";
-App::$strings["Diaspora"] = "Diaspora";
-App::$strings["Facebook"] = "Facebook";
-App::$strings["Zot"] = "Zot";
-App::$strings["LinkedIn"] = "Linkedin";
-App::$strings["XMPP/IM"] = "XMPP/IM";
-App::$strings["MySpace"] = "MySpace";
-App::$strings["prev"] = "préc.";
-App::$strings["first"] = "premier";
-App::$strings["last"] = "dernier";
-App::$strings["next"] = "Suivant";
-App::$strings["older"] = "plus ancien";
-App::$strings["newer"] = "plus récent";
-App::$strings["No connections"] = "Pas de relations.";
-App::$strings["View all %s connections"] = "Voir les %s contacts";
-App::$strings["Save"] = "Enregistrer";
-App::$strings["poke"] = "tapoter";
-App::$strings["ping"] = "ping";
-App::$strings["pinged"] = "pingé";
-App::$strings["prod"] = "encourager";
-App::$strings["prodded"] = "encouragé";
-App::$strings["slap"] = "giffler";
-App::$strings["slapped"] = "gifflé(e)";
-App::$strings["finger"] = "pointer";
-App::$strings["fingered"] = "pointé";
-App::$strings["rebuff"] = "rejetter";
-App::$strings["rebuffed"] = "rejeté";
-App::$strings["happy"] = "heureux";
-App::$strings["sad"] = "triste";
-App::$strings["mellow"] = "mélancolique";
-App::$strings["tired"] = "fatigué";
-App::$strings["perky"] = "impertinent";
-App::$strings["angry"] = "en colère";
-App::$strings["stupefied"] = "stupéfait";
-App::$strings["puzzled"] = "perplexe";
-App::$strings["interested"] = "intéressé";
-App::$strings["bitter"] = "amer";
-App::$strings["cheerful"] = "plein d'entrain";
-App::$strings["alive"] = "vivant";
-App::$strings["annoyed"] = "agaçé";
-App::$strings["anxious"] = "anxieux";
-App::$strings["cranky"] = "énervé";
-App::$strings["disturbed"] = "perturbé";
-App::$strings["frustrated"] = "frustré";
-App::$strings["depressed"] = "déprimé";
-App::$strings["motivated"] = "motivé";
-App::$strings["relaxed"] = "détendu";
-App::$strings["surprised"] = "surpris";
-App::$strings["May"] = "Mai";
-App::$strings["Unknown Attachment"] = "Pièce jointe inconnue";
-App::$strings["unknown"] = "Inconnu";
-App::$strings["remove category"] = "supprimer la catégorie";
-App::$strings["remove from file"] = "retirer du fichier";
-App::$strings["Click to open/close"] = "Cliquer pour ouvrir/fermer";
-App::$strings["Link to Source"] = "Lien vers la Source";
-App::$strings["default"] = "défaut";
-App::$strings["Page layout"] = "Mise en page";
-App::$strings["You can create your own with the layouts tool"] = "Créez les vôtres avec les outils de mise en page";
-App::$strings["Page content type"] = "Type de contenu de la page";
-App::$strings["Select an alternate language"] = "Choisir une langue alternative";
-App::$strings["activity"] = "activité";
-App::$strings["Design Tools"] = "Outils de conception";
-App::$strings["Blocks"] = "Blocs";
-App::$strings["Menus"] = "Menus";
-App::$strings["Layouts"] = "Mises-en-page";
-App::$strings["Pages"] = "Pages";
App::$strings["Permission denied"] = "Accès refusé";
-App::$strings["(Unknown)"] = "(Inconnu)";
-App::$strings["Visible to anybody on the internet."] = "Visible pour tout le monde sur internet.";
-App::$strings["Visible to you only."] = "Visible pour vous seulement.";
-App::$strings["Visible to anybody in this network."] = "Visible pour tout le monde sur ce réseau.";
-App::$strings["Visible to anybody authenticated."] = "Visible aux utilisateurs authentifiés.";
-App::$strings["Visible to anybody on %s."] = "Visible pour tous sur %s.";
-App::$strings["Visible to all connections."] = "Visible pour tous les contacts.";
-App::$strings["Visible to approved connections."] = "Visible aux contacts approuvés.";
-App::$strings["Visible to specific connections."] = "Visible pour certains contacts.";
-App::$strings["Item not found."] = "Élément introuvable";
-App::$strings["Privacy group not found."] = "Groupe d'accès introuvable.";
-App::$strings["Privacy group is empty."] = "Groupe d'accès vide.";
-App::$strings["Privacy group: %s"] = "Groupe d'accès&nbsp;: %s";
-App::$strings["Connection: %s"] = "Contact&nbsp;: %s";
-App::$strings["Connection not found."] = "Contact non trouvé.";
-App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
-App::$strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla:Notify] Nouveau courriel reçu à %s";
-App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, vous avez reçu un message privé sur %3\$s, de la part de %2\$s.";
-App::$strings["%1\$s sent you %2\$s."] = "%1\$s vous a envoyé %2\$s.";
-App::$strings["a private message"] = "un message privé";
-App::$strings["Please visit %s to view and/or reply to your private messages."] = "Merci de visiter %s pour voir et/ou répondre à vos messages privés.";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s a commenté sur [zrl=%3\$s]%4\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s a commenté sur [zrl=%3\$s]%5\$s de %4\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s a commenté [zrl=%3\$s]votre %4\$s[/zrl]";
-App::$strings["[Hubzilla:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Hubzilla:Notify] Commentaire de %2\$s sur conversation #%1\$d";
-App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s a commenté un élément de conversation que vous suivez.";
-App::$strings["Please visit %s to view and/or reply to the conversation."] = "Merci de visiter %s pour voir et/ou répondre sur cette conversation.";
-App::$strings["[Hubzilla:Notify] %s posted to your profile wall"] = "[Hubzilla:Notify] %s a publié sur votre profil";
-App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s a publié sur votre profil à %3\$s";
-App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s a publié sur [zrl=%3\$s]votre profil[/zrl]";
-App::$strings["[Hubzilla:Notify] %s tagged you"] = "[Hubzilla:Notify] %s vous a étiqueté";
-App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, vous avez été étiqueté sur %3\$s par %2\$s";
-App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]vous a étiqueté[/zrl].";
-App::$strings["[Hubzilla:Notify] %1\$s poked you"] = "[Hubzilla:Notify] %1\$s vous a tapoté";
-App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s vous a tapoté sur %3\$s";
-App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]vous a tapoté[/zrl].";
-App::$strings["[Hubzilla:Notify] %s tagged your post"] = "[Hubzilla:Notify] %s a étiqueté votre publication";
-App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s a étiqueté votre publication sur %3\$s";
-App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s a étiqueté [zrl=%3\$s]votre publication[/zrl]";
-App::$strings["[Hubzilla:Notify] Introduction received"] = "[Hubzilla:Notify] Nouvelle présentation";
-App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, vous avez reçu une demande de contact de '%2\$s' sur %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, vous avez reçu [zrl=%2\$s]une demande de contact[/zrl] de %3\$s.";
-App::$strings["You may visit their profile at %s"] = "Vous pouvez visiter leur profil sur %s";
-App::$strings["Please visit %s to approve or reject the connection request."] = "Merci de visiter %s avant d'approuver (ou non) cette demande de contact.";
-App::$strings["[Hubzilla:Notify] Friend suggestion received"] = "[Hubzilla:Notify] Nouvel(le) ami(e) suggéré(e)";
-App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, vous avez reçu une suggestion d'ami(e) de '%2\$s' à %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, avez reçu %3\$s comme [zrl=%2\$s]une suggestion d'ami(e)[/zrl] de %4\$s.";
-App::$strings["Name:"] = "Nom&nbsp;:";
-App::$strings["Photo:"] = "Photo&nbsp;:";
-App::$strings["Please visit %s to approve or reject the suggestion."] = "Merci de visiter %s pour donner suite (ou non) à cette suggestion.";
-App::$strings["[Hubzilla:Notify]"] = "[Hubzilla:Notify]";
-App::$strings["General Features"] = "Fonctionnalités générales";
-App::$strings["Content Expiration"] = "Expiration du contenu";
-App::$strings["Remove posts/comments and/or private messages at a future time"] = "Supprimer les contributions/commentaires et/ou messages privés plus tard";
-App::$strings["Multiple Profiles"] = "Profils multiples";
-App::$strings["Ability to create multiple profiles"] = "Possibilité de créer plusieurs profils";
-App::$strings["Advanced Profiles"] = "Profils Avancés";
-App::$strings["Additional profile sections and selections"] = "Sections et sélections supplémentaires du profil";
-App::$strings["Profile Import/Export"] = "Importer/Exporter le profil";
-App::$strings["Save and load profile details across sites/channels"] = "Sauvegarder et charger les détails d'un profil entre sites/canaux";
-App::$strings["Web Pages"] = "Pages web";
-App::$strings["Provide managed web pages on your channel"] = "Fournir des pages web, sous votre contrôle, sur votre canal";
-App::$strings["Hide Rating"] = "Masquer l'évaluation";
-App::$strings["Hide the rating buttons on your channel and profile pages. Note: People can still rate you somewhere else."] = "Masquer les boutons d'évaluation sur les pages de votre canal et de votre profil. NB : vous pourrez toujours être évalué(e) ailleurs.";
-App::$strings["Private Notes"] = "Notes privées";
-App::$strings["Enables a tool to store notes and reminders (note: not encrypted)"] = "Active un outil pour stocker des notes et des rappels (note&nbsp;:non chiffré)";
-App::$strings["Navigation Channel Select"] = "Sélection du canal par la navigation";
-App::$strings["Change channels directly from within the navigation dropdown menu"] = "Changez de canal directement depuis le menu de navigation déroulant";
-App::$strings["Photo Location"] = "Site de prise de vue";
-App::$strings["If location data is available on uploaded photos, link this to a map."] = "Si des informations géographiques sont présentes dans les images téléversées, les lier à une carte.";
-App::$strings["Expert Mode"] = "Mode expert";
-App::$strings["Enable Expert Mode to provide advanced configuration options"] = "Activer le mode expert pour accéder aux options avancées";
-App::$strings["Premium Channel"] = "Canal VIP";
-App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Vous permet d'appliquer des règles et restrictions aux contacts de votre canal";
-App::$strings["Post Composition Features"] = "Fonctionnalités de composition";
-App::$strings["Use Markdown"] = "Utiliser Markdown";
-App::$strings["Allow use of \"Markdown\" to format posts"] = "Autoriser l'utilisation de \"Markdown\" pour mettre en forme les messages";
-App::$strings["Large Photos"] = "Grandes photos";
-App::$strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Inclure de grands aperçus (1024px) dans les messages. Si désactivé, inclure de petits aperçus (640px).";
-App::$strings["Channel Sources"] = "Sources du canal";
-App::$strings["Automatically import channel content from other channels or feeds"] = "Importe automatiquement le contenus d'autres canaux ou flux dans le canal actif";
-App::$strings["Even More Encryption"] = "Encore plus de chiffrement";
-App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Permettre le chiffrement optionnel du contenu de bout en bout au moyen d'un secret partagé";
-App::$strings["Enable Voting Tools"] = "Activer les outils de vote";
-App::$strings["Provide a class of post which others can vote on"] = "Fournit un type de publication sur lequel les utilisateurs peuvent voter";
-App::$strings["Delayed Posting"] = "Publication plus tard";
-App::$strings["Allow posts to be published at a later date"] = "Permettre de publier des messages à une date programmée";
-App::$strings["Suppress Duplicate Posts/Comments"] = "Supprimer les publications/commentaires en doublon";
-App::$strings["Prevent posts with identical content to be published with less than two minutes in between submissions."] = "Empêcher des messages aux contenus identiques d'être publiés à moins de deux minutes d'intervalle";
-App::$strings["Network and Stream Filtering"] = "Filtrage du réseau et des flux";
-App::$strings["Search by Date"] = "Chercher par date";
-App::$strings["Ability to select posts by date ranges"] = "Pouvoir choisir des publications par date";
-App::$strings["Enable management and selection of privacy groups"] = "Active la gestion et la sélection des groupes d'accès";
-App::$strings["Saved Searches"] = "Recherches sauvegardées";
-App::$strings["Save search terms for re-use"] = "Sauvegarder des termes de recherche pour utilisation ultérieure";
-App::$strings["Network Personal Tab"] = "Onglet \"Me concernant\"";
-App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Activer un onglet affichant seulement les publications du réseau sur lesquelles vous êtes intervenu";
-App::$strings["Network New Tab"] = "Onglet \"nouveautés réseau\"";
-App::$strings["Enable tab to display all new Network activity"] = "Activer un onglet présentant toute l'activité récente sur le réseau";
-App::$strings["Affinity Tool"] = "Gérer l'affinité";
-App::$strings["Filter stream activity by depth of relationships"] = "Filtrer le flux d'activité en fonction de la profondeur des relations";
-App::$strings["Connection Filtering"] = "Filtrage des contacts";
-App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filtrer les publications entrantes de mes contacts sur la base de mots-clefs";
-App::$strings["Suggest Channels"] = "Suggérer des canaux";
-App::$strings["Show channel suggestions"] = "Montrer les suggestions de canaux";
-App::$strings["Post/Comment Tools"] = "Gérer les publications/commentaires";
-App::$strings["Community Tagging"] = "Etiquetage communautaire";
-App::$strings["Ability to tag existing posts"] = "Permettre de marquer les publications existantes";
-App::$strings["Post Categories"] = "Catégoriser les publications";
-App::$strings["Add categories to your posts"] = "Ajouter des catégories à vos publications";
-App::$strings["Ability to file posts under folders"] = "Permettre de classer les publications dans des dossiers";
-App::$strings["Dislike Posts"] = "\"Ne pas aimer\" les publications";
-App::$strings["Ability to dislike posts/comments"] = "Possibilité de \"ne pas aimer\" les publications/commentaires";
-App::$strings["Star Posts"] = "Pouvoir mettre en avant les publications";
-App::$strings["Ability to mark special posts with a star indicator"] = "Pouvoir marquer certaines publications d'une étoile";
-App::$strings["Tag Cloud"] = "Nuage de tags";
-App::$strings["Provide a personal tag cloud on your channel page"] = "Afficher un nuage de vos tags sur votre canal";
-App::$strings["Unable to obtain identity information from database"] = "Impossible d'obtenir les données d'identité depuis la base de données";
-App::$strings["Empty name"] = "Nom vide";
-App::$strings["Name too long"] = "Nom trop long";
-App::$strings["No account identifier"] = "Pas d'identifiant de compte";
-App::$strings["Nickname is required."] = "Un surnom est requis.";
-App::$strings["Reserved nickname. Please choose another."] = "Surnom réservé. Merci d'en choisir un autre.";
-App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Le surnom contient des caractères interdits ou est déjà pris sur ce site.";
-App::$strings["Unable to retrieve created identity"] = "Impossible de récupérer l'identité créée";
-App::$strings["Default Profile"] = "Profil par défaut";
-App::$strings["Requested channel is not available."] = "Canal demandé non disponible.";
-App::$strings["Requested profile is not available."] = "Profil demandé non disponible.";
-App::$strings["Change profile photo"] = "Changer la photo du profil";
-App::$strings["Profiles"] = "Profils";
-App::$strings["Manage/edit profiles"] = "Gérer/modifier les profils";
-App::$strings["Create New Profile"] = "Créer un nouveau profil";
-App::$strings["Profile Image"] = "Image du profil";
-App::$strings["visible to everybody"] = "visible pour tous";
-App::$strings["Edit visibility"] = "Changer la visibilité";
-App::$strings["Gender:"] = "Sexe&nbsp;:";
-App::$strings["Status:"] = "État&nbsp;:";
-App::$strings["Homepage:"] = "Site Internet&nbsp;:";
-App::$strings["Online Now"] = "Connecté";
-App::$strings["g A l F d"] = "g A l F d";
-App::$strings["F d"] = "d F";
-App::$strings["[today]"] = "[aujourd'hui]";
-App::$strings["Birthday Reminders"] = "Rappels d'anniversaires";
-App::$strings["Birthdays this week:"] = "Anniversaires cette semaine&nbsp;:";
-App::$strings["[No description]"] = "[Pas de description]";
-App::$strings["Event Reminders"] = "Rappels d'événements";
-App::$strings["Events this week:"] = "Événements cette semaine&nbsp;:";
-App::$strings["Full Name:"] = "Nom complet&nbsp;:";
-App::$strings["Like this channel"] = "J'aime ce canal";
-App::$strings["j F, Y"] = "j F, Y";
-App::$strings["j F"] = "j F";
-App::$strings["Birthday:"] = "Date de naissance&nbsp;:";
-App::$strings["Age:"] = "Age&nbsp;:";
-App::$strings["for %1\$d %2\$s"] = "depuis %1\$d %2\$s";
-App::$strings["Sexual Preference:"] = "Orientation sexuelle&nbsp;:";
-App::$strings["Hometown:"] = "Ville natale&nbsp;:";
-App::$strings["Tags:"] = "Étiquettes&nbsp;:";
-App::$strings["Political Views:"] = "Opinions politiques&nbsp;:";
-App::$strings["Religion:"] = "Religion&nbsp;:";
-App::$strings["About:"] = "À propos&nbsp;:";
-App::$strings["Hobbies/Interests:"] = "Occupations/Centres d'intérêt&nbsp;:";
-App::$strings["Likes:"] = "Aime&nbsp;:";
-App::$strings["Dislikes:"] = "N'aime pas&nbsp;:";
-App::$strings["Contact information and Social Networks:"] = "Coordonnées et réseaux sociaux&nbsp;:";
-App::$strings["My other channels:"] = "Mes autres canaux&nbsp;:";
-App::$strings["Musical interests:"] = "Goûts musicaux&nbsp;:";
-App::$strings["Books, literature:"] = "Lectures, goûts littéraires&nbsp;:";
-App::$strings["Television:"] = "Télévision&nbsp;:";
-App::$strings["Film/dance/culture/entertainment:"] = "Cinéma/danse/culture/divertissement&nsbp;:";
-App::$strings["Love/Romance:"] = "Vie sentimentale/amoureuse&nbsp;:";
-App::$strings["Work/employment:"] = "Travail/Occupation&nbsp;";
-App::$strings["School/education:"] = "Études&nbsp;";
-App::$strings["Like this thing"] = "J'aime ceci";
-App::$strings["cover photo"] = "Photo principale";
-App::$strings["Embedded content"] = "Contenu imbriqué";
-App::$strings["Embedding disabled"] = "Imbrication désactivée";
-App::$strings["Can view my normal stream and posts"] = "Peut voir les publications ordinaires sur mon canal.";
-App::$strings["Can view my default channel profile"] = "Peut voir le profil du canal par défaut.";
-App::$strings["Can view my connections"] = "Peut voir mes contacts";
-App::$strings["Can view my file storage and photos"] = "Peut voir mes fichiers et photos";
-App::$strings["Can view my webpages"] = "Peut voir mes pages web";
-App::$strings["Can send me their channel stream and posts"] = "Peuvent m'envoyer leur flux et les publications de leur canal";
-App::$strings["Can post on my channel page (\"wall\")"] = "Peuvent poster sur la page de mon canal (\"mur\")";
-App::$strings["Can comment on or like my posts"] = "Peuvent commenter et/ou aimer mes publications";
-App::$strings["Can send me private mail messages"] = "Peuvent m'envoyer des messages privés";
-App::$strings["Can like/dislike stuff"] = "Peuvent aimer/ne pas aimer";
-App::$strings["Profiles and things other than posts/comments"] = "Profils et autres excluant les publications/commentaires.";
-App::$strings["Can forward to all my channel contacts via post @mentions"] = "Peut faire suivre à tous les contacts de mon canal via \"@mention\"";
-App::$strings["Advanced - useful for creating group forum channels"] = "Avancé - utile pour les canaux de type \"forum/groupe\"";
-App::$strings["Can chat with me (when available)"] = "Peut discuter avec moi (quand disponibie)";
-App::$strings["Can write to my file storage and photos"] = "Peut charger des fichiers et des photos dans mon canal";
-App::$strings["Can edit my webpages"] = "Peut modifier mes pages web";
-App::$strings["Can source my public posts in derived channels"] = "Peut rediriger mes publications publiques vers des canaux dérivés";
-App::$strings["Somewhat advanced - very useful in open communities"] = "Plutôt avancé - très utile dans les communautés ouvertes";
-App::$strings["Can administer my channel resources"] = "Peut administrer les ressources de mon canal";
-App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Très avancé. Ne pas toucher, sauf si vous savez ce que vous faîtes";
-App::$strings["Social Networking"] = "Réseau social";
-App::$strings["Mostly Public"] = "Pincipalement public";
-App::$strings["Restricted"] = "Accès restreint";
-App::$strings["Private"] = "Privé";
-App::$strings["Community Forum"] = "Forum communautaire";
-App::$strings["Feed Republish"] = "Republication de flux";
-App::$strings["Special Purpose"] = "Utilisation spécifique";
-App::$strings["Celebrity/Soapbox"] = "Page de célébrité/tribune";
-App::$strings["Group Repository"] = "Espace de groupe";
-App::$strings["Custom/Expert Mode"] = "Mode expert/spécifique";
-App::$strings["System"] = "Système";
-App::$strings["Create Personal App"] = "Créer votre application";
-App::$strings["Edit Personal App"] = "Modifier votre application";
-App::$strings["Ignore/Hide"] = "Ignorer/Cacher";
-App::$strings["Suggestions"] = "Suggestions";
-App::$strings["See more..."] = "Voir plus...";
-App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Vous avez %1$.0f sur %2$.0f contacts autorisés.";
-App::$strings["Add New Connection"] = "Ajouter un nouveau contact";
-App::$strings["Enter channel address"] = "Saisissez l'adresse du canal";
-App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Exemples&nbsp;: pierre@exemple.com, https://exemple.com/sophie";
-App::$strings["Notes"] = "Notes";
-App::$strings["Remove term"] = "Retirer le terme";
-App::$strings["Archives"] = "Archives";
-App::$strings["Me"] = "Moi";
-App::$strings["Family"] = "Famille";
-App::$strings["Acquaintances"] = "Connaissances";
-App::$strings["All"] = "Tous";
-App::$strings["Refresh"] = "Actualiser";
-App::$strings["Account settings"] = "Paramètres du compte";
-App::$strings["Channel settings"] = "Paramètres du canal";
-App::$strings["Additional features"] = "Fonctionnalités supplémentaires";
-App::$strings["Feature/Addon settings"] = "Paramètres des extensions/greffons";
-App::$strings["Display settings"] = "Paramètres d'affichage";
-App::$strings["Connected apps"] = "Applications connectées";
-App::$strings["Export channel"] = "Exporter le canal";
-App::$strings["Connection Default Permissions"] = "Autorisations par défaut des contacts";
-App::$strings["Premium Channel Settings"] = "Paramètres de canal VIP";
-App::$strings["Private Mail Menu"] = "Menu des messages privés";
-App::$strings["Combined View"] = "Vue combinée";
-App::$strings["Conversations"] = "Conversations";
-App::$strings["Received Messages"] = "Messages reçus";
-App::$strings["Sent Messages"] = "Messages envoyés";
-App::$strings["No messages."] = "Pas de message.";
-App::$strings["Delete conversation"] = "Supprimer la conversation";
-App::$strings["Events Menu"] = "Menu Evènements";
-App::$strings["Day View"] = "Vue Jour";
-App::$strings["Week View"] = "Vue Semaine";
-App::$strings["Month View"] = "Vue Mois";
-App::$strings["Export"] = "Export";
-App::$strings["Import"] = "Import";
-App::$strings["Events Tools"] = "Outils Evènements";
-App::$strings["Export Calendar"] = "Exporter le calendrier";
-App::$strings["Import Calendar"] = "Importer un calendrier";
-App::$strings["Chat Rooms"] = "Salons de clavardage";
-App::$strings["Bookmarked Chatrooms"] = "Salons favoris";
-App::$strings["Suggested Chatrooms"] = "Salons suggérés";
-App::$strings["photo/image"] = "photo/image";
-App::$strings["Rating Tools"] = "Outils d'évaluation";
-App::$strings["Rate Me"] = "M'évaluer";
-App::$strings["View Ratings"] = "Voir mes évaluations";
-App::$strings["Public Hubs"] = "Instances publiques";
-App::$strings["Forums"] = "Membres du forum";
-App::$strings["Tasks"] = "Tâches";
-App::$strings["Documentation"] = "Documentation";
-App::$strings["Project/Site Information"] = "Information sur le site/projet";
-App::$strings["For Members"] = "Pour les membres";
-App::$strings["For Administrators"] = "Pour les administrateurs";
-App::$strings["For Developers"] = "Pour les développeurs";
-App::$strings["Site"] = "Site";
-App::$strings["Accounts"] = "Comptes";
-App::$strings["Channels"] = "Canaux";
-App::$strings["Security"] = "";
-App::$strings["Plugins"] = "Greffons";
-App::$strings["Themes"] = "Thèmes";
-App::$strings["Inspect queue"] = "Analyser la file d'attente";
-App::$strings["Profile Config"] = "Configuration du profil";
-App::$strings["DB updates"] = "Mises à jour BDD";
-App::$strings["Logs"] = "Journaux";
-App::$strings["Plugin Features"] = "Fonctionnalités des greffons";
-App::$strings["User registrations waiting for confirmation"] = "Enregistrements d'utilisateurs en attente d'approbation";
-App::$strings["View Photo"] = "Voir la photo";
-App::$strings["Edit Album"] = "Modifier l'album";
-App::$strings["Save to Folder"] = "Enregistrer dans le dossier";
-App::$strings["I will attend"] = "Je participerai";
-App::$strings["I will not attend"] = "Je ne participerai pas";
-App::$strings["I might attend"] = "Je participerai peut-être";
-App::$strings["I agree"] = "Je suis d'accord";
-App::$strings["I disagree"] = "Je ne suis pas d'accord";
-App::$strings["I abstain"] = "Je m'abstiens";
-App::$strings["Add Star"] = "Mettre en avant (étoile)";
-App::$strings["Remove Star"] = "Ne plus mettre en avant";
-App::$strings["Toggle Star Status"] = "(Dés)activer l'étoile";
-App::$strings["starred"] = "mis en avant";
-App::$strings["Add Tag"] = "Ajouter une étiquette";
-App::$strings["I like this (toggle)"] = "J'aime (oui/non)";
-App::$strings["I don't like this (toggle)"] = "Je n'aime pas (oui/non)";
-App::$strings["Share This"] = "Partager";
-App::$strings["share"] = "partager";
-App::$strings["Delivery Report"] = "Rapport de distribution";
-App::$strings["%d comment"] = array(
- 0 => "%d commentaire",
- 1 => "%d commentaires",
-);
-App::$strings["View %s's profile - %s"] = "Voir le profil de %s - %s";
-App::$strings["to"] = "à";
-App::$strings["via"] = "via";
-App::$strings["Wall-to-Wall"] = "Mur-à-mur";
-App::$strings["via Wall-To-Wall:"] = "par Mur-à-mur&nbsp;:";
-App::$strings["Save Bookmarks"] = "Enregistrer les favoris";
-App::$strings["Add to Calendar"] = "Ajouter au Calendrier";
-App::$strings["Mark all seen"] = "Tout marquer comme vu";
-App::$strings["__ctx:noun__ Likes"] = "Aime";
-App::$strings["__ctx:noun__ Dislikes"] = "N'aime pas";
-App::$strings["This is you"] = "C'est vous";
-App::$strings["Image"] = "Image";
-App::$strings["Insert Link"] = "Insérer un lien";
-App::$strings["Video"] = "Vidéo";
+App::$strings["Permission denied."] = "Permission refusée.";
App::$strings["Not Found"] = "Introuvable";
App::$strings["Page not found."] = "Page introuvable.";
+App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Authentification distante bloquée. Vous êtes connecté(e) sur ce site localement. Merci de vous déconnecter et réessayer.";
+App::$strings["Welcome %s. Remote authentication successful."] = "Bienvenue %s. L'authentification distante a fonctionné.";
+App::$strings["Requested profile is not available."] = "Profil demandé non disponible.";
App::$strings["Some blurb about what to do when you're new here"] = "Quelques mots sur quoi faire quand on est nouveau ici";
-App::$strings["network"] = "réseau";
-App::$strings["RSS"] = "RSS";
-App::$strings["Authorize application connection"] = "Autoriser l'application à se connecter";
-App::$strings["Return to your app and insert this Securty Code:"] = "Merci de retourner vers votre application, et d'y insérer ce Code de Sécurité&nbsp;:";
-App::$strings["Please login to continue."] = "Merci de vous identifier pour continuer.";
-App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Voulez-vous autoriser cette application à accéder à vos publications et contacts, et/ou à publier en votre nom?";
-App::$strings["App installed."] = "Application installée.";
-App::$strings["Malformed app."] = "Erreur de l'application - Malformée.";
-App::$strings["Embed code"] = "Imbriquer le code";
-App::$strings["Edit App"] = "Modifier l'application";
-App::$strings["Create App"] = "Créer une application";
-App::$strings["Name of app"] = "Nom de l'application";
-App::$strings["Location (URL) of app"] = "Emplacement (URL) de l'application";
-App::$strings["Description"] = "Description";
-App::$strings["Photo icon URL"] = "URL de l'icône à utiliser pour cette photo";
-App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixels - facultatif";
-App::$strings["Version ID"] = "Identifiant de version";
-App::$strings["Price of app"] = "Prix de l'application";
-App::$strings["Location (URL) to purchase app"] = "Emplacement (URL) pour l'achat de l'application";
-App::$strings["Item not available."] = "Élément indisponible.";
-App::$strings["Invalid item."] = "Élément invalide.";
-App::$strings["Channel not found."] = "Canal introuvable.";
App::$strings["Block Name"] = "Nom du Bloc";
+App::$strings["Blocks"] = "Blocs";
App::$strings["Block Title"] = "Titre du bloc";
-App::$strings["Bookmark added"] = "Favori ajouté";
-App::$strings["My Bookmarks"] = "Mes Favoris";
-App::$strings["My Connections Bookmarks"] = "Favoris de mes contacts";
+App::$strings["Created"] = "Créé(e)";
+App::$strings["Edited"] = "Modifié(e)";
+App::$strings["Share"] = "Partager";
+App::$strings["View"] = "Voir";
+App::$strings["Channel not found."] = "Canal introuvable.";
+App::$strings["Permissions denied."] = "Permissions refusées.";
+App::$strings["l, F j"] = "l, F j";
+App::$strings["Link to Source"] = "Lien vers la Source";
+App::$strings["Edit Event"] = "Modifier l'événement";
+App::$strings["Create Event"] = "Créer un événement";
+App::$strings["Previous"] = "Précédent";
+App::$strings["Next"] = "Suivant";
+App::$strings["Export"] = "Export";
+App::$strings["Import"] = "Import";
+App::$strings["Submit"] = "Envoyer";
+App::$strings["Today"] = "Aujourd'hui";
App::$strings["You must be logged in to see this page."] = "Vous devez vous connecter pour voir cette page.";
+App::$strings["Posts and comments"] = "";
+App::$strings["Only posts"] = "";
App::$strings["Insufficient permissions. Request redirected to profile page."] = "Permissions insuffisantes. Demande redirigée vers la page du profil.";
-App::$strings["Public"] = "Public";
App::$strings["Room not found"] = "Salon introuvable";
App::$strings["Leave Room"] = "Quitter le salon";
-App::$strings["Delete This Room"] = "Supprimer le salon";
+App::$strings["Delete Room"] = "";
App::$strings["I am away right now"] = "Je suis absent en ce moment";
App::$strings["I am online"] = "Je suis en ligne";
App::$strings["Bookmark this room"] = "Marquer ce salon comme favori";
+App::$strings["Please enter a link URL:"] = "Merci d'entrer l'URL d'un lien&nbsp;:";
+App::$strings["Encrypt text"] = "Chiffrer le texte";
+App::$strings["Insert web link"] = "Insérer lien web";
+App::$strings["Feature disabled."] = "";
App::$strings["New Chatroom"] = "Nouveau salon de discussion";
-App::$strings["Chatroom Name"] = "Nom du salon de discussion";
+App::$strings["Chatroom name"] = "";
App::$strings["Expiration of chats (minutes)"] = "Expiration des discussions (en minutes)";
+App::$strings["Permissions"] = "Autorisations";
App::$strings["%1\$s's Chatrooms"] = "Salons de %1\$s";
+App::$strings["No chatrooms available"] = "";
+App::$strings["Create New"] = "";
+App::$strings["Expiration"] = "";
+App::$strings["min"] = "";
App::$strings["Away"] = "Absent";
App::$strings["Online"] = "En ligne";
-App::$strings["No channel."] = "Pas de canal.";
-App::$strings["Common connections"] = "Contacts en commun";
-App::$strings["No connections in common."] = "Pas de contacts en commun.";
+App::$strings["Invalid item."] = "Élément invalide.";
+App::$strings["Bookmark added"] = "Favori ajouté";
+App::$strings["My Bookmarks"] = "Mes Favoris";
+App::$strings["My Connections Bookmarks"] = "Favoris de mes contacts";
App::$strings["Continue"] = "Continuer";
App::$strings["Premium Channel Setup"] = "Configuration du canal VIP";
App::$strings["Enable premium channel connection restrictions"] = "Activer les restrictions liées au canal VIP";
@@ -1055,42 +94,18 @@ App::$strings["Potential connections will then see the following text before pro
App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "En continuant, je certifie que je me suis conformé à toutes les instructions indiquées sur cette page.";
App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(Aucune instruction spécifique n'a été fournie par le propriétaire du canal.)";
App::$strings["Restricted or Premium Channel"] = "Canal VIP ou restreint";
-App::$strings["Blocked"] = "Bloqué(e)";
-App::$strings["Ignored"] = "Ignoré(e)";
-App::$strings["Hidden"] = "Caché";
-App::$strings["Archived"] = "Archivé";
-App::$strings["New Connections"] = "Nouveaux contacts";
-App::$strings["Show pending (new) connections"] = "Voir les (nouveaux) contacts en attente";
-App::$strings["All Connections"] = "Tous les contacts";
-App::$strings["Show all connections"] = "Voir tous les contacts";
-App::$strings["Only show blocked connections"] = "Ne montrer que les contacts bloqués";
-App::$strings["Only show ignored connections"] = "Ne montrer que les contacts ignorés";
-App::$strings["Only show archived connections"] = "Ne montrer que les contacts archivés";
-App::$strings["Only show hidden connections"] = "Ne montrer que les contacts cachés";
-App::$strings["Pending approval"] = "En attente de validation";
-App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-App::$strings["Edit connection"] = "Modifier le contact";
-App::$strings["Delete connection"] = "Supprimer le contact";
-App::$strings["Channel address"] = "Adresse du canal";
-App::$strings["Network"] = "Réseau";
-App::$strings["Status"] = "État";
-App::$strings["Connected"] = "Connecté";
-App::$strings["Approve connection"] = "Valider le contact";
-App::$strings["Approve"] = "Approuver";
-App::$strings["Ignore connection"] = "Ignorer le contact";
-App::$strings["Ignore"] = "Ignorer";
-App::$strings["Recent activity"] = "Activité récente";
-App::$strings["Search your connections"] = "Chercher parmi vos contacts";
-App::$strings["Connections search"] = "Chercher des contacts";
App::$strings["Could not access contact record."] = "Impossible d'accéder aux détails du contact.";
App::$strings["Could not locate selected profile."] = "Impossible de localiser le profil sélectionné.";
App::$strings["Connection updated."] = "Contact mis à jour.";
App::$strings["Failed to update connection record."] = "Impossible de mettre à jour les détails du contact.";
App::$strings["is now connected to"] = "est maintenant connecté avec";
+App::$strings["No"] = "Non";
+App::$strings["Yes"] = "Oui";
App::$strings["Could not access address book record."] = "Impossible d'accéder aux détails du carnet d'adresses.";
App::$strings["Refresh failed - channel is currently unavailable."] = "Actualisation impossible - le canal est indisponible.";
App::$strings["Unable to set address book parameters."] = "Impossible de régler les paramètres du carnet d'adresses.";
App::$strings["Connection has been removed."] = "Le contact a été supprimé.";
+App::$strings["View Profile"] = "Voir le profil";
App::$strings["View %s's profile"] = "Voir le profil de %s";
App::$strings["Refresh Permissions"] = "Actualiser les autorisations";
App::$strings["Fetch updated permissions"] = "Récupérer les autorisations les plus récentes";
@@ -1101,6 +116,7 @@ App::$strings["Block"] = "Bloquer";
App::$strings["Block (or Unblock) all communications with this connection"] = "Bloquer ou débloquer toute communication avec ce contact";
App::$strings["This connection is blocked!"] = "Ce contact est bloqué&nbsp;!";
App::$strings["Unignore"] = "Ne plus ignorer";
+App::$strings["Ignore"] = "Ignorer";
App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Ignorer ou ne plus ignorer toute communication venant de ce contact";
App::$strings["This connection is ignored!"] = "Ce contact est ignoré&nbsp;!";
App::$strings["Unarchive"] = "Désarchiver";
@@ -1112,17 +128,27 @@ App::$strings["Hide"] = "Cacher";
App::$strings["Hide or Unhide this connection from your other connections"] = "Cacher ou ne plus cacher ce contact vis-à-vis de vos autres contacts";
App::$strings["This connection is hidden!"] = "Ce contact est caché&nbsp;!";
App::$strings["Delete this connection"] = "Supprimer ce contact";
+App::$strings["Me"] = "Moi";
+App::$strings["Family"] = "Famille";
+App::$strings["Friends"] = "Amis";
+App::$strings["Acquaintances"] = "Connaissances";
+App::$strings["All"] = "Tous";
App::$strings["Approve this connection"] = "Autoriser ce contact";
App::$strings["Accept connection to allow communication"] = "Accepter le contact pour permettre la communication";
App::$strings["Set Affinity"] = "Définir le degré d'affinité";
App::$strings["Set Profile"] = "Définir le profil";
App::$strings["Set Affinity & Profile"] = "Définir le degré d'affinité et le profil";
App::$strings["none"] = "Aucun";
+App::$strings["Connection Default Permissions"] = "Autorisations par défaut des contacts";
+App::$strings["Connection: %s"] = "Contact&nbsp;: %s";
App::$strings["Apply these permissions automatically"] = "Appliquer ces permissions automatiquement";
+App::$strings["Connection requests will be approved without your interaction"] = "Les demandes de contact seront approuvées automatiquement";
App::$strings["This connection's primary address is"] = "L'adresse principale de ce contact est";
App::$strings["Available locations:"] = "Emplacements disponibles&nbsp;:";
App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Les permissions indiquées sur cette page seront appliquées à tous vos nouveaux contacts.";
+App::$strings["Connection Tools"] = "";
App::$strings["Slide to adjust your degree of friendship"] = "Faites glisser pour ajuster votre proximité avec le contact";
+App::$strings["Rating"] = "Evaluation";
App::$strings["Slide to adjust your rating"] = "Faîtes glisser pour ajuster votre note";
App::$strings["Optionally explain your rating"] = "Explication facultative de votre évaluation";
App::$strings["Custom Filter"] = "Filtre personnalisé";
@@ -1139,7 +165,6 @@ App::$strings["Individual Permissions"] = "Permissions individuelles";
App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Certaines permissions peuvent être héritées de vos <a href=\"settings\">paramètres de confidentialité</a> de canal, lesquels sont prioritaires sur les réglages individuels. Vous pouvez modifier ces permissions ici mais cela n'aura aucun effet à moins de changer les paramètres hérités.";
App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Certaines permissions peuvent être héritées de vos <a href=\"settings\">paramètres de confidentialité</a> de canal, lesquels sont prioritaires sur les réglages individuels. Vous pouvez modifier ces permissions ici mais cela n'aura aucun effet à moins de changer les paramètres hérités.";
App::$strings["Last update:"] = "Dernière mise à jour&nbsp;:";
-App::$strings["\$Projectname channel"] = "Canal \$Projectname";
App::$strings["Public access denied."] = "Accès public refusé.";
App::$strings["%d rating"] = array(
0 => "%d évaluation",
@@ -1148,14 +173,21 @@ App::$strings["%d rating"] = array(
App::$strings["Gender: "] = "Sexe/genre&nbsp;:";
App::$strings["Status: "] = "État&nbsp;:";
App::$strings["Homepage: "] = "Site web&nbsp;:";
+App::$strings["Age:"] = "Age&nbsp;:";
+App::$strings["Location:"] = "Emplacement&nbsp;:";
App::$strings["Description:"] = "Description&nbsp;:";
+App::$strings["Hometown:"] = "Ville natale&nbsp;:";
+App::$strings["About:"] = "À propos&nbsp;:";
+App::$strings["Connect"] = "Ajouter/Suivre";
App::$strings["Public Forum:"] = "Forum public&nbsp;:";
App::$strings["Keywords: "] = "Mots-clefs&nbsp;:";
App::$strings["Don't suggest"] = "Ne pas suggérer";
App::$strings["Common connections:"] = "Contacts en commun&nbsp;:";
App::$strings["Global Directory"] = "Annuaire global";
App::$strings["Local Directory"] = "Annuaire local";
+App::$strings["Find"] = "Trouver";
App::$strings["Finding:"] = "Recherche&nbsp;:";
+App::$strings["Channel Suggestions"] = "Canaux suggérés";
App::$strings["next page"] = "page suivante";
App::$strings["previous page"] = "page précédente";
App::$strings["Sort options"] = "Options de tri";
@@ -1164,46 +196,76 @@ App::$strings["Reverse Alphabetic"] = "Alphabétique inversé";
App::$strings["Newest to Oldest"] = "Du plus récent au moins récent";
App::$strings["Oldest to Newest"] = "Du moins récent du plus récent";
App::$strings["No entries (some entries may be hidden)."] = "Pas d'entrées (certaines peuvent être cachées).";
-App::$strings["This site is not a directory server"] = "Ce site n'est pas un serveur d'annuaire";
-App::$strings["This directory server requires an access token"] = "Ce serveur d'annuaire requiert un jeton d'accès";
-App::$strings["Invalid message"] = "Message non valide";
-App::$strings["no results"] = "aucun résultat";
-App::$strings["Delivery report for %1\$s"] = "Rapport de distribution pour %1\$s";
-App::$strings["channel sync processed"] = "Synchro de canal effectuée";
-App::$strings["queued"] = "mis dans la file d'attente";
-App::$strings["posted"] = "publié";
-App::$strings["accepted for delivery"] = "accepté pour la distribution";
-App::$strings["updated"] = "mis à jour";
-App::$strings["update ignored"] = "mise à jour ignorée";
-App::$strings["permission denied"] = "permission refusée";
-App::$strings["recipient not found"] = "destinataire introuvable";
-App::$strings["mail recalled"] = "courriel rappelé";
-App::$strings["duplicate mail received"] = "courriel reçu en double";
-App::$strings["mail delivered"] = "courriel distribué";
+App::$strings["Item not found."] = "Élément introuvable";
App::$strings["Item not found"] = "Élément introuvable";
-App::$strings["Delete block?"] = "Supprimer le bloc&nbsp;?";
-App::$strings["Insert YouTube video"] = "Insérer une vidéo YouTube";
-App::$strings["Insert Vorbis [.ogg] video"] = "Insérer une vidéo Vorbis [.ogg]";
-App::$strings["Insert Vorbis [.ogg] audio"] = "Insérer un son Vorbis [.ogg]";
+App::$strings["Title (optional)"] = "Titre (facultatif)";
App::$strings["Edit Block"] = "Modifier le bloc";
-App::$strings["Delete layout?"] = "Supprimer la mise en page&nbsp;?";
-App::$strings["Layout Description (Optional)"] = "Description de la mise en page (facultatif)";
-App::$strings["Layout Name"] = "Nom de la mise en page";
-App::$strings["Edit Layout"] = "Modifier la mise en page";
+App::$strings["No channel."] = "Pas de canal.";
+App::$strings["Common connections"] = "Contacts en commun";
+App::$strings["No connections in common."] = "Pas de contacts en commun.";
+App::$strings["Blocked"] = "Bloqué(e)";
+App::$strings["Ignored"] = "Ignoré(e)";
+App::$strings["Hidden"] = "Caché";
+App::$strings["Archived"] = "Archivé";
+App::$strings["New"] = "Nouveautés";
+App::$strings["New Connections"] = "Nouveaux contacts";
+App::$strings["Show pending (new) connections"] = "Voir les (nouveaux) contacts en attente";
+App::$strings["All Connections"] = "Tous les contacts";
+App::$strings["Show all connections"] = "Voir tous les contacts";
+App::$strings["Only show blocked connections"] = "Ne montrer que les contacts bloqués";
+App::$strings["Only show ignored connections"] = "Ne montrer que les contacts ignorés";
+App::$strings["Only show archived connections"] = "Ne montrer que les contacts archivés";
+App::$strings["Only show hidden connections"] = "Ne montrer que les contacts cachés";
+App::$strings["Pending approval"] = "En attente de validation";
+App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
+App::$strings["Edit connection"] = "Modifier le contact";
+App::$strings["Delete connection"] = "Supprimer le contact";
+App::$strings["Channel address"] = "Adresse du canal";
+App::$strings["Network"] = "Réseau";
+App::$strings["Status"] = "État";
+App::$strings["Connected"] = "Connecté";
+App::$strings["Approve connection"] = "Valider le contact";
+App::$strings["Approve"] = "Approuver";
+App::$strings["Ignore connection"] = "Ignorer le contact";
+App::$strings["Recent activity"] = "Activité récente";
+App::$strings["Connections"] = "Contacts";
+App::$strings["Search"] = "Recherche";
+App::$strings["Search your connections"] = "Chercher parmi vos contacts";
+App::$strings["Connections search"] = "Chercher des contacts";
+App::$strings["Image uploaded but image cropping failed."] = "L'image a été téléversée, mais le recadrage a échoué.";
+App::$strings["Cover Photos"] = "Photos de couverture";
+App::$strings["Image resize failed."] = "Le redimensionnement de l'image a échoué.";
+App::$strings["Unable to process image"] = "Impossible de traiter l'image";
+App::$strings["Image upload failed."] = "Le téléversement de l'image a échoué.";
+App::$strings["Unable to process image."] = "Impossible de traîter l'image.";
+App::$strings["female"] = "femme";
+App::$strings["%1\$s updated her %2\$s"] = "%1\$s a mis à jour son %2\$s";
+App::$strings["male"] = "homme";
+App::$strings["%1\$s updated his %2\$s"] = "%1\$s a mis à jour son %2\$s";
+App::$strings["%1\$s updated their %2\$s"] = "%1\$s a mis a jour sa %2\$s";
+App::$strings["cover photo"] = "Photo principale";
+App::$strings["Photo not available."] = "Photo inaccessible.";
+App::$strings["Upload File:"] = "Téléverser fichier&nbsp;:";
+App::$strings["Select a profile:"] = "Choisir un profil&nbsp;:";
+App::$strings["Upload Cover Photo"] = "Téléverser une photo de couverture";
+App::$strings["or"] = "ou";
+App::$strings["skip this step"] = "passer cette étape";
+App::$strings["select a photo from your photo albums"] = "choisir une photo dans vos albums";
+App::$strings["Crop Image"] = "Recadrer l'image";
+App::$strings["Please adjust the image cropping for optimum viewing."] = "Merci d'ajuster le cadre pour une visualisation optimale.";
+App::$strings["Done Editing"] = "J'ai terminé";
App::$strings["Item is not editable"] = "Elément non modifiable";
-App::$strings["Delete item?"] = "Supprimer l'élément&nbsp;?";
App::$strings["Edit post"] = "Modifier la publication";
-App::$strings["Delete webpage?"] = "Supprimer la page web&nbsp;?";
-App::$strings["Page link title"] = "Titre du lien vers la page";
-App::$strings["Edit Webpage"] = "Modifier la page web";
App::$strings["Calendar entries imported."] = "Entrées du calendrier importées.";
App::$strings["No calendar entries found."] = "Aucune entrée du calendrier trouvée.";
App::$strings["Event can not end before it has started."] = "La fin de l'événement ne peut être antérieure à son début.";
App::$strings["Unable to generate preview."] = "Impossible de générer l'aperçu.";
App::$strings["Event title and start time are required."] = "Un titre et une date de début sont requises pour l'événement.";
App::$strings["Event not found."] = "Événement introuvable.";
+App::$strings["event"] = "événement";
App::$strings["Edit event title"] = "Modifier le titre de l'événement";
App::$strings["Event title"] = "Titre de l'événement";
+App::$strings["Required"] = "Requis";
App::$strings["Categories (comma-separated list)"] = "Catégories (séparées par des virgules)";
App::$strings["Edit Category"] = "Modifier la catégorie";
App::$strings["Category"] = "Catégorie";
@@ -1215,41 +277,50 @@ App::$strings["Finish date and time"] = "Date et heure de fin";
App::$strings["Adjust for viewer timezone"] = "Ajuster au fuseau horaire du visiteur";
App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Important pour les événements se tenant en un lieu particulier. Pas pratique pour les vacances communes à de nombreux pays dans le monde.";
App::$strings["Edit Description"] = "Modifier la description";
+App::$strings["Description"] = "Description";
App::$strings["Edit Location"] = "Modifier l'emplacement";
+App::$strings["Location"] = "Emplacement";
App::$strings["Share this event"] = "Partager cet événement";
+App::$strings["Preview"] = "Aperçu";
+App::$strings["Permission settings"] = "Gérer les autorisations";
App::$strings["Advanced Options"] = "Options avancées";
-App::$strings["l, F j"] = "l, F j";
App::$strings["Edit event"] = "Modifier l'événement";
App::$strings["Delete event"] = "Supprimer l'événement";
App::$strings["calendar"] = "calendrier";
-App::$strings["Edit Event"] = "Modifier l'événement";
-App::$strings["Create Event"] = "Créer un événement";
-App::$strings["Previous"] = "Précédent";
-App::$strings["Next"] = "Suivant";
-App::$strings["Today"] = "Aujourd'hui";
App::$strings["Event removed"] = "Événement supprimé";
App::$strings["Failed to remove event"] = "Impossible de supprimer l'événement";
-App::$strings["Share content from Firefox to \$Projectname"] = "Partager du contenu depuis Firefox avec \$Projectname";
-App::$strings["Activate the Firefox \$Projectname provider"] = "Activer le connecteur \$Projectname pour Firefox";
+App::$strings["Photos"] = "Photos";
+App::$strings["Cancel"] = "Annuler";
+App::$strings["This site is not a directory server"] = "Ce site n'est pas un serveur d'annuaire";
+App::$strings["This directory server requires an access token"] = "Ce serveur d'annuaire requiert un jeton d'accès";
+App::$strings["Save to Folder:"] = "Classer dans le dossier&nbsp;:";
App::$strings["- select -"] = "- choisir -";
-App::$strings["Permission Denied."] = "Permission refusée.";
-App::$strings["File not found."] = "Fichier introuvable.";
-App::$strings["Edit file permissions"] = "Modifier les autorisations d'accès au fichier";
-App::$strings["Set/edit permissions"] = "Définir/modifier les autorisations";
-App::$strings["Include all files and sub folders"] = "Inclure tous fichiers et sous-répertoires";
-App::$strings["Return to file list"] = "Retourner à la liste des fichiers";
-App::$strings["Copy/paste this code to attach file to a post"] = "Copiez/collez ce code pour joindre le fichier à une publication";
-App::$strings["Copy/paste this URL to link file from a web page"] = "Copiez/collez cette URL pour pointer vers ce fichier depuis une page web";
-App::$strings["Share this file"] = "Partager ce fichier";
-App::$strings["Show URL to this file"] = "Montrer l'URL de ce fichier";
-App::$strings["Notify your contacts about this file"] = "Notifier vos contacts à propos de ce fichier";
+App::$strings["Save"] = "Enregistrer";
+App::$strings["Invalid message"] = "Message non valide";
+App::$strings["no results"] = "aucun résultat";
+App::$strings["Delivery report for %1\$s"] = "Rapport de distribution pour %1\$s";
+App::$strings["channel sync processed"] = "Synchro de canal effectuée";
+App::$strings["queued"] = "mis dans la file d'attente";
+App::$strings["posted"] = "publié";
+App::$strings["accepted for delivery"] = "accepté pour la distribution";
+App::$strings["updated"] = "mis à jour";
+App::$strings["update ignored"] = "mise à jour ignorée";
+App::$strings["permission denied"] = "permission refusée";
+App::$strings["recipient not found"] = "destinataire introuvable";
+App::$strings["mail recalled"] = "courriel rappelé";
+App::$strings["duplicate mail received"] = "courriel reçu en double";
+App::$strings["mail delivered"] = "courriel distribué";
+App::$strings["Layout Name"] = "Nom de la mise en page";
+App::$strings["Layout Description (Optional)"] = "Description de la mise en page (facultatif)";
+App::$strings["Edit Layout"] = "Modifier la mise en page";
+App::$strings["Page link"] = "";
+App::$strings["Edit Webpage"] = "Modifier la page web";
App::$strings["Channel added."] = "Canal ajouté.";
-App::$strings["Contact not found."] = "Contact introuvable.";
-App::$strings["Friend suggestion sent."] = "Suggestion d'amitié envoyée.";
-App::$strings["Suggest Friends"] = "Suggérer des amis";
-App::$strings["Suggest a friend for %s"] = "Suggérer un amis à %s";
+App::$strings["network"] = "réseau";
+App::$strings["RSS"] = "RSS";
App::$strings["Privacy group created."] = "Groupe d'accès créé.";
App::$strings["Could not create privacy group."] = "Impossible de créer le groupe d'accès.";
+App::$strings["Privacy group not found."] = "Groupe d'accès introuvable.";
App::$strings["Privacy group updated."] = "Groupe d'accès mis à jour.";
App::$strings["Create a group of channels."] = "Créer un groupe de canaux.";
App::$strings["Privacy group name: "] = "Nom du groupe d'accès&nbsp;:";
@@ -1260,37 +331,37 @@ App::$strings["Privacy group editor"] = "Editeur de groupe d'accès.";
App::$strings["Members"] = "Membres";
App::$strings["All Connected Channels"] = "Tous les canaux connectés";
App::$strings["Click on a channel to add or remove."] = "Cliquer sur un canal pour l'ajouter ou le supprimer";
+App::$strings["Share content from Firefox to \$Projectname"] = "Partager du contenu depuis Firefox avec \$Projectname";
+App::$strings["Activate the Firefox \$Projectname provider"] = "Activer le connecteur \$Projectname pour Firefox";
+App::$strings["Authorize application connection"] = "Autoriser l'application à se connecter";
+App::$strings["Return to your app and insert this Securty Code:"] = "Merci de retourner vers votre application, et d'y insérer ce Code de Sécurité&nbsp;:";
+App::$strings["Please login to continue."] = "Merci de vous identifier pour continuer.";
+App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Voulez-vous autoriser cette application à accéder à vos publications et contacts, et/ou à publier en votre nom?";
App::$strings["Documentation Search"] = "Chercher dans la documentation";
App::$strings["Help:"] = "Aide&nbsp;:";
+App::$strings["Help"] = "Aide";
App::$strings["\$Projectname Documentation"] = "Documentation \$Projectname";
-App::$strings["\$Projectname"] = "\$Projectname";
-App::$strings["Welcome to %s"] = "Bienvenue sur %s";
-App::$strings["First Name"] = "Prénom";
-App::$strings["Last Name"] = "Nom de famille";
-App::$strings["Nickname"] = "Surnom";
-App::$strings["Full Name"] = "Nom complet";
-App::$strings["Profile Photo 16px"] = "Photo de profil 16px";
-App::$strings["Profile Photo 32px"] = "Photo de profil 32px";
-App::$strings["Profile Photo 48px"] = "Photo de profil 48px";
-App::$strings["Profile Photo 64px"] = "Photo de profil 64px";
-App::$strings["Profile Photo 80px"] = "Photo de profil 80px";
-App::$strings["Profile Photo 128px"] = "Photo de profil 128px";
-App::$strings["Timezone"] = "Fuseau horaire";
-App::$strings["Homepage URL"] = "URL de mon site Internet&nbsp;:";
-App::$strings["Birth Year"] = "Année de naissance";
-App::$strings["Birth Month"] = "Mois de naissance";
-App::$strings["Birth Day"] = "Jour de naissance";
-App::$strings["Birthdate"] = "Date de naissance";
-App::$strings["Gender"] = "Sexe";
-App::$strings["%s element installed"] = "Elément %s installé";
-App::$strings["%s element installation failed"] = "L'installation de l'élément %s a échoué";
+App::$strings["Permission Denied."] = "Permission refusée.";
+App::$strings["File not found."] = "Fichier introuvable.";
+App::$strings["Edit file permissions"] = "Modifier les autorisations d'accès au fichier";
+App::$strings["Set/edit permissions"] = "Définir/modifier les autorisations";
+App::$strings["Include all files and sub folders"] = "Inclure tous fichiers et sous-répertoires";
+App::$strings["Return to file list"] = "Retourner à la liste des fichiers";
+App::$strings["Copy/paste this code to attach file to a post"] = "Copiez/collez ce code pour joindre le fichier à une publication";
+App::$strings["Copy/paste this URL to link file from a web page"] = "Copiez/collez cette URL pour pointer vers ce fichier depuis une page web";
+App::$strings["Share this file"] = "Partager ce fichier";
+App::$strings["Show URL to this file"] = "Montrer l'URL de ce fichier";
+App::$strings["Notify your contacts about this file"] = "Notifier vos contacts à propos de ce fichier";
+App::$strings["Apps"] = "Applications";
+App::$strings["Item not available."] = "Élément indisponible.";
App::$strings["Your service plan only allows %d channels."] = "Votre forfait n'autorise que %d canaux.";
App::$strings["Nothing to import."] = "Rien à importer.";
App::$strings["Unable to download data from old server"] = "Impossible de récupérer les données de l'ancien serveur";
App::$strings["Imported file is empty."] = "Le fichier importé est vide.";
App::$strings["Warning: Database versions differ by %1\$d updates."] = "Attention&nbsp;: les versions de bases de données diffèrent de %1\$d mises à jour.";
-App::$strings["Server platform is not compatible. Operation not permitted."] = "";
+App::$strings["Cloned channel not found. Import failed."] = "Canal cloné non trouvé. Echec de l'import.";
App::$strings["No channel. Import failed."] = "Pas de canal. Echec de l'import.";
+App::$strings["Import completed."] = "L'import est terminé.";
App::$strings["You must be logged in to use this feature."] = "Vous devez vous connecter pour utiliser cette fonctionnalité.";
App::$strings["Import Channel"] = "Importation de canal";
App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "Utilisez ce formulaire pour importer un canal existant sur un autre serveur. Vous pouvez récupérer l'identité du canal sur l'ancien serveur directement par le réseau, ou bien fournir un fichier d'export/import.";
@@ -1303,28 +374,6 @@ App::$strings["For either option, please choose whether to make this hub your ne
App::$strings["Make this hub my primary location"] = "Faire de ce hub mon emplacement primaire";
App::$strings["Import existing posts if possible (experimental - limited by available memory"] = "Importer les publications existantes si possible (expérimental - limité par la mémoire disponible)";
App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Ce processus peut prendre plusieurs minutes. Merci de ne valider le formulaire qu'une seule fois et de laisser cette page ouverte jusqu'à la fin.";
-App::$strings["Import completed"] = "L'import est terminé.";
-App::$strings["Import Items"] = "Importer";
-App::$strings["Use this form to import existing posts and content from an export file."] = "Utiliser ce formulaire pour importer des publications et du contenu existant d'un fichier d'export.";
-App::$strings["Total invitation limit exceeded."] = "Limite du nombre total d'invitation dépassée.";
-App::$strings["%s : Not a valid email address."] = "%s&nbsp;: adresse courriel invalide.";
-App::$strings["Please join us on \$Projectname"] = "Rejoignez-nous sur \$Projectname";
-App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Limite d'invitations dépassée. Merci de contacter l'administration de votre site.";
-App::$strings["%s : Message delivery failed."] = "%s&nbsp;: Échec de distribution du message.";
-App::$strings["%d message sent."] = array(
- 0 => "%d message envoyé.",
- 1 => "%d messages envoyés.",
-);
-App::$strings["You have no more invitations available"] = "Vous ne disposez plus d'aucune invitation";
-App::$strings["Send invitations"] = "Envoyer des invitations";
-App::$strings["Enter email addresses, one per line:"] = "Entrez les adresses de courriel, une par ligne&nbsp;:";
-App::$strings["Your message:"] = "Votre message&nbsp;:";
-App::$strings["Please join my community on \$Projectname."] = "Rejoignez ma communauté sur \$Projectname.";
-App::$strings["You will need to supply this invitation code:"] = "";
-App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Enregistrez-vous sur n'importe quel serveur \$Projectname (ils sont tous inter-connectés)";
-App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Saisissez l'adresse de mon canal \$Projectname dans la barre de recherche du site.";
-App::$strings["or visit"] = "";
-App::$strings["3. Click [Connect]"] = "3. Cliquez sur [Ajouter]";
App::$strings["Unable to locate original post."] = "Impossible de localiser la publication initiale.";
App::$strings["Empty post discarded."] = "Publication vide annulée.";
App::$strings["Executable content type not permitted to this channel."] = "Les contenus de type 'exécutable' ne sont pas autorisés sur ce canal.";
@@ -1333,16 +382,52 @@ App::$strings["System error. Post not saved."] = "Erreur système. Publication n
App::$strings["Unable to obtain post information from database."] = "Impossible d'obtenir les informations de publication depuis la base de données.";
App::$strings["You have reached your limit of %1$.0f top level posts."] = "Vous avez atteint votre limite de %1$.0f contributions \"racines\".";
App::$strings["You have reached your limit of %1$.0f webpages."] = "Vous avez atteint votre limite de %1$.0f pages web.";
+App::$strings["Layouts"] = "Mises-en-page";
App::$strings["Comanche page description language help"] = "Aide sur le langage de description de page Comanche";
App::$strings["Layout Description"] = "Description de la mise en page";
App::$strings["Download PDL file"] = "Télécharger le fichier PDL";
+App::$strings["\$Projectname"] = "\$Projectname";
+App::$strings["Welcome to %s"] = "Bienvenue sur %s";
+App::$strings["First Name"] = "Prénom";
+App::$strings["Last Name"] = "Nom de famille";
+App::$strings["Nickname"] = "Surnom";
+App::$strings["Full Name"] = "Nom complet";
+App::$strings["Email"] = "Courriel";
+App::$strings["Profile Photo"] = "Photo du Profil";
+App::$strings["Profile Photo 16px"] = "Photo de profil 16px";
+App::$strings["Profile Photo 32px"] = "Photo de profil 32px";
+App::$strings["Profile Photo 48px"] = "Photo de profil 48px";
+App::$strings["Profile Photo 64px"] = "Photo de profil 64px";
+App::$strings["Profile Photo 80px"] = "Photo de profil 80px";
+App::$strings["Profile Photo 128px"] = "Photo de profil 128px";
+App::$strings["Timezone"] = "Fuseau horaire";
+App::$strings["Homepage URL"] = "URL de mon site Internet&nbsp;:";
+App::$strings["Language"] = "Langue";
+App::$strings["Birth Year"] = "Année de naissance";
+App::$strings["Birth Month"] = "Mois de naissance";
+App::$strings["Birth Day"] = "Jour de naissance";
+App::$strings["Birthdate"] = "Date de naissance";
+App::$strings["Gender"] = "Sexe";
+App::$strings["Male"] = "Homme";
+App::$strings["Female"] = "Femme";
+App::$strings["webpage"] = "pages web";
+App::$strings["block"] = "bloquer";
+App::$strings["layout"] = "mise en page";
+App::$strings["menu"] = "menu";
+App::$strings["%s element installed"] = "Elément %s installé";
+App::$strings["%s element installation failed"] = "L'installation de l'élément %s a échoué";
App::$strings["Like/Dislike"] = "Aime/n'aime pas";
App::$strings["This action is restricted to members."] = "Cette action est réservée aux membres.";
App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "S'il vous plait, <a href=\"rmagic\">identifiez vous avec votre identifant de \$Projectname </a> ou <a href=\"register\">inscrivez vous comme nouveau membre de \$Projectname </a> pour continuer.";
App::$strings["Invalid request."] = "Requête invalide.";
+App::$strings["channel"] = "canal";
App::$strings["thing"] = "chose";
App::$strings["Channel unavailable."] = "Canal indisponible.";
App::$strings["Previous action reversed."] = "Action précédente annulée.";
+App::$strings["photo"] = "photo";
+App::$strings["status"] = "état";
+App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s aime %3\$s de %2\$s";
+App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s n'aime pas %3\$s de %2\$s";
App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s approuve %3\$s de %2\$s";
App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s n'est pas d'accord avec %3\$s de %2\$s";
App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s s'abstient de toute décision sur le %3\$s de %2\$s";
@@ -1351,6 +436,28 @@ App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s ne participe pas
App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s participe peut-être à %3\$s de %2\$s";
App::$strings["Action completed."] = "Action terminée.";
App::$strings["Thank you."] = "Merci.";
+App::$strings["Import completed"] = "L'import est terminé.";
+App::$strings["Import Items"] = "Importer";
+App::$strings["Use this form to import existing posts and content from an export file."] = "Utiliser ce formulaire pour importer des publications et du contenu existant d'un fichier d'export.";
+App::$strings["Total invitation limit exceeded."] = "Limite du nombre total d'invitation dépassée.";
+App::$strings["%s : Not a valid email address."] = "%s&nbsp;: adresse courriel invalide.";
+App::$strings["Please join us on \$Projectname"] = "Rejoignez-nous sur \$Projectname";
+App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Limite d'invitations dépassée. Merci de contacter l'administration de votre site.";
+App::$strings["%s : Message delivery failed."] = "%s&nbsp;: Échec de distribution du message.";
+App::$strings["%d message sent."] = array(
+ 0 => "%d message envoyé.",
+ 1 => "%d messages envoyés.",
+);
+App::$strings["You have no more invitations available"] = "Vous ne disposez plus d'aucune invitation";
+App::$strings["Send invitations"] = "Envoyer des invitations";
+App::$strings["Enter email addresses, one per line:"] = "Entrez les adresses de courriel, une par ligne&nbsp;:";
+App::$strings["Your message:"] = "Votre message&nbsp;:";
+App::$strings["Please join my community on \$Projectname."] = "Rejoignez ma communauté sur \$Projectname.";
+App::$strings["You will need to supply this invitation code:"] = "Vous devrez fournir le code suivant&nbsp;:";
+App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Enregistrez-vous sur n'importe quel serveur \$Projectname (ils sont tous inter-connectés)";
+App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Saisissez l'adresse de mon canal \$Projectname dans la barre de recherche du site.";
+App::$strings["or visit"] = "ou rendez-vous sur";
+App::$strings["3. Click [Connect]"] = "3. Cliquez sur [Ajouter]";
App::$strings["Remote privacy information not available."] = "Les informations distantes de confidentialité ne sont pas disponibles.";
App::$strings["Visible to:"] = "Visible par&nbsp;:";
App::$strings["Location not found."] = "Emplacement introuvable.";
@@ -1359,16 +466,13 @@ App::$strings["Please select another location to become primary before removing
App::$strings["Syncing locations"] = "Synchronisation des emplacements";
App::$strings["No locations found."] = "Emplacement(s) introuvable.";
App::$strings["Manage Channel Locations"] = "Gérer les emplacements des canaux";
-App::$strings["Location (address)"] = "Emplacement (adresse)";
-App::$strings["Primary Location"] = "Emplacement primaire";
-App::$strings["Drop location"] = "Abandonner l'emplacement";
-App::$strings["Sync now"] = "Synchroniser maintenant";
+App::$strings["Address"] = "Adresse";
+App::$strings["Primary"] = "";
+App::$strings["Drop"] = "Supprimer";
+App::$strings["Sync Now"] = "";
App::$strings["Please wait several minutes between consecutive operations."] = "Merci d'attendre plusieurs minutes entre opérations successives.";
App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Quand c'est possible, abandonnez un emplacement en vous connectant sur le site/hub et en supprimant votre canal.";
App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Utilisez ce formulaire pour abandonner l'emplacement si le hub n'est plus actif.";
-App::$strings["sent you a private message"] = "vous a envoyé un message privé";
-App::$strings["added your channel"] = "a ajouté votre canal";
-App::$strings["posted an event"] = "a publié un événement";
App::$strings["Hub not found."] = "Hub introuvable.";
App::$strings["Unable to lookup recipient."] = "Impossible de localiser le destinataire.";
App::$strings["Unable to communicate with requested channel."] = "Impossible de communiquer avec le canal demandé.";
@@ -1377,11 +481,14 @@ App::$strings["Selected channel has private message restrictions. Send failed."]
App::$strings["Messages"] = "Messages";
App::$strings["Message recalled."] = "Message rappelé.";
App::$strings["Conversation removed."] = "Conversation supprimée.";
+App::$strings["Expires YYYY-MM-DD HH:MM"] = "Expire le YYYY-MM-DD à HH:MM";
App::$strings["Requested channel is not in this network"] = "Le canal demandé n'est pas sur ce réseau";
App::$strings["Send Private Message"] = "Envoyer un message privé";
App::$strings["To:"] = "À&nbsp;:";
App::$strings["Subject:"] = "Objet&nbsp;:";
+App::$strings["Attach file"] = "Joindre un fichier";
App::$strings["Send"] = "Envoyer";
+App::$strings["Set expiration date"] = "Définir la date d'expiration";
App::$strings["Delete message"] = "Supprimer le message";
App::$strings["Delivery report"] = "Rapport de distribution";
App::$strings["Recall message"] = "Rappeler le message";
@@ -1392,17 +499,30 @@ App::$strings["Send Reply"] = "Envoyer la réponse";
App::$strings["Your message for %s (%s):"] = "Votre message pour %s (%s)&nbsp;:";
App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Vous avez créé %1$.0f des %2$.0f canaux autorisés.";
App::$strings["Create a new channel"] = "Créer un nouveau canal";
+App::$strings["Channel Manager"] = "Gérer les canaux";
App::$strings["Current Channel"] = "Canal actif";
App::$strings["Switch to one of your channels by selecting it."] = "Pour changer de canal, sélectionnez-en un";
App::$strings["Default Channel"] = "Canal par défaut";
App::$strings["Make Default"] = "Définir comme défaut";
App::$strings["%d new messages"] = "%d nouveaux messages";
App::$strings["%d new introductions"] = "%d nouvelles présentations";
-App::$strings["Delegated Channels"] = "Canaux délégués";
-App::$strings["Profile Match"] = "Profils similaires";
-App::$strings["No keywords to match. Please add keywords to your default profile."] = "Aucun mot-clef à comparer. Merci d'ajouter des mots-clefs à votre profil par défaut.";
-App::$strings["is interested in:"] = "s'intéresse à&nbsp;:";
-App::$strings["No matches"] = "Pas de correspondance";
+App::$strings["Delegated Channel"] = "";
+App::$strings["No valid account found."] = "Aucun compte valide trouvé.";
+App::$strings["Password reset request issued. Check your email."] = "Demande de réinitialisation du mot de passe envoyée. Vérifiez vos courriels.";
+App::$strings["Site Member (%s)"] = "Membre du site (%s)";
+App::$strings["Password reset requested at %s"] = "Demande de réinitialisation du mot de passe sur %s";
+App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La demande n'a pas pu être vérifiée. (Peut-être l'avez vous déjà utilisée.) La réinitialisation a échoué.";
+App::$strings["Password Reset"] = "Réinitialiser le mot de passe";
+App::$strings["Your password has been reset as requested."] = "Votre mot de passe a bien été réinitialisé.";
+App::$strings["Your new password is"] = "Votre nouveau mot de passe est";
+App::$strings["Save or copy your new password - and then"] = "Enregistrez ou copiez votre nouveau mot de passe, puis";
+App::$strings["click here to login"] = "cliquez ici pour vous connecter";
+App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Votre mot de passe peut être changé depuis la page des <em>Paramètres</em> une fois connecté.";
+App::$strings["Your password has changed at %s"] = "Votre mot de passe de %s a été changé";
+App::$strings["Forgot your Password?"] = "Mot de passe oublié&nbsp;?";
+App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Saisissez votre adresse de courriel, et validez, pour réinitialiser votre mot de passe. Vérifiez ensuite votre boîte aux lettres pour la suite des instructions.";
+App::$strings["Email Address"] = "Adresse de courriel";
+App::$strings["Reset"] = "Réinitialiser";
App::$strings["Unable to update menu."] = "Impossible de mettre le menu à jour.";
App::$strings["Unable to create menu."] = "Impossible de créer le menu.";
App::$strings["Menu Name"] = "Nom du menu";
@@ -1412,7 +532,7 @@ App::$strings["Visible on webpage - leave empty for no title"] = "Visible pour l
App::$strings["Allow Bookmarks"] = "Autoriser l'usage de favoris";
App::$strings["Menu may be used to store saved bookmarks"] = "Le menu pourra être utilisé pour stocker des favoris";
App::$strings["Submit and proceed"] = "Valider et continuer";
-App::$strings["Drop"] = "Supprimer";
+App::$strings["Menus"] = "Menus";
App::$strings["Bookmarks allowed"] = "Favoris autorisés";
App::$strings["Delete this menu"] = "Supprimer ce menu";
App::$strings["Edit menu contents"] = "Modifier le contenu du menu";
@@ -1427,6 +547,22 @@ App::$strings["Menu title"] = "Titre du menu";
App::$strings["Menu title as seen by others"] = "Titre du menu tel que vu par les visiteurs";
App::$strings["Allow bookmarks"] = "Autoriser l'usage de favoris";
App::$strings["Not found."] = "Introuvable.";
+App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s est %2\$s";
+App::$strings["Mood"] = "Humeur";
+App::$strings["Set your current mood and tell your friends"] = "Indiquez votre humeur du moment à vos amis";
+App::$strings["Profile Match"] = "Profils similaires";
+App::$strings["No keywords to match. Please add keywords to your default profile."] = "Aucun mot-clef à comparer. Merci d'ajouter des mots-clefs à votre profil par défaut.";
+App::$strings["is interested in:"] = "s'intéresse à&nbsp;:";
+App::$strings["No matches"] = "Pas de correspondance";
+App::$strings["No such group"] = "Groupe introuvable";
+App::$strings["No such channel"] = "Canal introuvable";
+App::$strings["forum"] = "forum";
+App::$strings["Search Results For:"] = "Résultats de recherche pour&nbsp;:";
+App::$strings["Privacy group is empty"] = "Groupe d'accès vide";
+App::$strings["Privacy group: "] = "Groupe d'accès&nbsp;:";
+App::$strings["Invalid connection."] = "Contact non valide.";
+App::$strings["No more system notifications."] = "Pas d'autre notification du système.";
+App::$strings["System Notifications"] = "Notifications du système";
App::$strings["Unable to create element."] = "Impossible de créer l'entrée.";
App::$strings["Unable to update menu element."] = "Impossible de mettre à jour l'entrée de menu.";
App::$strings["Unable to add menu element."] = "Impossible d'ajouter l'entrée de menu.";
@@ -1456,43 +592,24 @@ App::$strings["Menu item deleted."] = "Entrée de menu supprimée.";
App::$strings["Menu item could not be deleted."] = "Impossible de supprimer l'entrée de menu.";
App::$strings["Edit Menu Element"] = "Modifier l'entrée de menu";
App::$strings["Link text"] = "Texte du lien";
-App::$strings["Set your current mood and tell your friends"] = "Indiquez votre humeur du moment à vos amis";
-App::$strings["No such group"] = "Groupe introuvable";
-App::$strings["No such channel"] = "Canal introuvable";
-App::$strings["forum"] = "forum";
-App::$strings["Search Results For:"] = "Résultats de recherche pour&nbsp;:";
-App::$strings["Privacy group is empty"] = "Groupe d'accès vide";
-App::$strings["Privacy group: "] = "Groupe d'accès&nbsp;:";
-App::$strings["Invalid connection."] = "Contact non valide.";
-App::$strings["Add a Channel"] = "Ajouter un canal";
-App::$strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "Un canal est un ensemble de pages web reliées entre elles, sous votre contrôle. Il peut contenir des profils de réseau social, des blogs, des groupes de conversation, des forums, des pages de célébrités, et bien plus encore. Vous pouvez créer autant de canaux que votre administrateur vous y autorise.";
-App::$strings["Channel Name"] = "Nom du canal";
-App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Exemples&nbsp;: \"Bernard Martin\", \"Lisa et ses chevaux\", \"Football\", \"Groupe des amateurs de tir à l'arc\"";
+App::$strings["Name or caption"] = "Nom ou libellé";
+App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""] = "Exemples&nbsp;: \"Jérôme Dutilleul\", \"Louise et ses chevaux\", \"Football\", \"Club d'aéromodélisme\"";
App::$strings["Choose a short nickname"] = "Choisissez un alias";
-App::$strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "Cet alias sera utilisé pour créer une adresse de canal, facile à retenir - un peu comme une adresse de courriel - que vous pourrez partager avec d'autres.";
-App::$strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "Ou <a href=\"import\">importez un canal existant</a> d'un autre endroit";
-App::$strings["Please choose a channel type (such as social networking or community forum) and privacy requirements so we can select the best permissions for you"] = "Veuillez choisir un type de canal (par exemple \"réseau social\" ou \"forum communautaire\") et un niveau de confidentialité afin que nous puissions choisir les meilleures autorisations pour vous";
-App::$strings["Channel Type"] = "Type de canal";
+App::$strings["Your nickname will be used to create an easy to remember channel address e.g. nickname%s"] = "Votre pseudo sera utilisé pour créer une adresse de canal facile à mémoriser, par ex. pseudo%s";
+App::$strings["Channel role and privacy"] = "Rôle et confidentialité du canal";
+App::$strings["Select a channel role with your privacy requirements."] = "Sélectionner un rôle de canal adapté à vos besoins de confidentialité.";
App::$strings["Read more about roles"] = "En savoir plus sur les rôles";
+App::$strings["Create Channel"] = "Créer le canal";
+App::$strings["A channel is your identity on this network. It can represent a person, a blog, or a forum to name a few. Channels can make connections with other channels to share information with highly detailed permissions."] = "Un canal est votre identité sur ce réseau. Il peut représenter une personne, un blog, ou un forum par exemple. Les canaux peuvent entrer en contact les uns avec les autres pour partager des informations avec des permissions d'accès très fines.";
+App::$strings["or <a href=\"import\">import an existing channel</a> from another location."] = "ou <a href=\"import\">importer un canal existant</a> d'un autre serveur.";
App::$strings["Invalid request identifier."] = "Identifiant de requête invalide.";
App::$strings["Discard"] = "Annuler";
-App::$strings["No more system notifications."] = "Pas d'autre notification du système.";
-App::$strings["System Notifications"] = "Notifications du système";
-App::$strings["Unable to find your hub."] = "Impossible de trouver votre hub.";
-App::$strings["Post successful."] = "Publication réussie.";
-App::$strings["OpenID protocol error. No ID returned."] = "Erreur du protocole OpenID. Pas d'ID retourné.";
-App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
-App::$strings["This setting requires special processing and editing has been blocked."] = "Ce paramètre nécessité un traitement spécial, les modifications ont été bloquées.";
-App::$strings["Configuration Editor"] = "Editeur de configuration";
-App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Attention&nbsp;:modifier certains paramètres peut rendre votre canal inutilisable. Merci d'ignorer cette page à moins d'être suffisamment à l'aise de savoir comment utiliser correctement cette fonctionnalité.";
-App::$strings["Layout updated."] = "Mise en page mise à jour.";
-App::$strings["Edit System Page Description"] = "Modifier la description de la page du système";
-App::$strings["Layout not found."] = "Mise en page introuvable.";
-App::$strings["Module Name:"] = "Nom du module&nbsp;:";
-App::$strings["Layout Help"] = "Aide à la mise en page";
+App::$strings["Mark all system notifications seen"] = "Marquer toutes les notifications système comme vues";
App::$strings["Page owner information could not be retrieved."] = "Impossible d'obtenir des informations sur le propriétaire de la page.";
+App::$strings["Profile Photos"] = "Photos du profil";
App::$strings["Album not found."] = "Album introuvable.";
App::$strings["Delete Album"] = "Supprimer l'album";
+App::$strings["Multiple storage folders exist with this album name, but within different directories. Please remove the desired folder or folders using the Files manager"] = "";
App::$strings["Delete Photo"] = "Supprimer la photo";
App::$strings["No photos selected"] = "Aucune photo selectionnée";
App::$strings["Access to this item is restricted."] = "L'accès à l'élément est restreint.";
@@ -1508,9 +625,12 @@ App::$strings["Album name could not be decoded"] = "Le nom de l'Album n'a pu êt
App::$strings["Contact Photos"] = "Photos de contact";
App::$strings["Show Newest First"] = "Les plus récent(e)s en premier";
App::$strings["Show Oldest First"] = "Les moins récent(e)s en premier";
+App::$strings["View Photo"] = "Voir la photo";
+App::$strings["Edit Album"] = "Modifier l'album";
App::$strings["Permission denied. Access to this item may be restricted."] = "Permission refusée. L'accès à cet élément peut avoir été restreint.";
App::$strings["Photo not available"] = "Photo non disponible";
App::$strings["Use as profile photo"] = "Utiliser comme photo du profil";
+App::$strings["Use as cover photo"] = "";
App::$strings["Private Photo"] = "Photo privée";
App::$strings["View Full Size"] = "Voir en taille réelle";
App::$strings["Remove"] = "Retirer";
@@ -1523,10 +643,152 @@ App::$strings["Caption"] = "Titre/légende";
App::$strings["Add a Tag"] = "Ajouter une étiquette";
App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Exemple&nbsp;: @marc, @Barbara_Jensen, @charles@exemple.com, #Ile_de_France, #marathon";
App::$strings["Flag as adult in album view"] = "Marquer comme \"adulte\" dans l'affichage de l'album";
+App::$strings["I like this (toggle)"] = "J'aime (oui/non)";
+App::$strings["I don't like this (toggle)"] = "Je n'aime pas (oui/non)";
+App::$strings["Please wait"] = "Merci de patienter";
+App::$strings["This is you"] = "C'est vous";
+App::$strings["Comment"] = "Commenter";
+App::$strings["__ctx:title__ Likes"] = "Aime";
+App::$strings["__ctx:title__ Dislikes"] = "N'aime pas";
+App::$strings["__ctx:title__ Agree"] = "D'accord";
+App::$strings["__ctx:title__ Disagree"] = "Pas d'accord";
+App::$strings["__ctx:title__ Abstain"] = "Abstention";
+App::$strings["__ctx:title__ Attending"] = "Participations";
+App::$strings["__ctx:title__ Not attending"] = "Non-participations";
+App::$strings["__ctx:title__ Might attend"] = "Participation possible";
+App::$strings["View all"] = "Voir tout";
+App::$strings["__ctx:noun__ Like"] = array(
+ 0 => "Aime",
+ 1 => "Aime",
+);
+App::$strings["__ctx:noun__ Dislike"] = array(
+ 0 => "N'aime pas",
+ 1 => "N'aime pas",
+);
+App::$strings["Photo Tools"] = "";
App::$strings["In This Photo:"] = "Dans cette photo&nbsp;:";
App::$strings["Map"] = "Carte";
+App::$strings["__ctx:noun__ Likes"] = "Aime";
+App::$strings["__ctx:noun__ Dislikes"] = "N'aime pas";
+App::$strings["Close"] = "Fermer";
App::$strings["View Album"] = "Voir l'album";
App::$strings["Recent Photos"] = "Photos récentes";
+App::$strings["sent you a private message"] = "vous a envoyé un message privé";
+App::$strings["added your channel"] = "a ajouté votre canal";
+App::$strings["g A l F d"] = "g A l F d";
+App::$strings["[today]"] = "[aujourd'hui]";
+App::$strings["posted an event"] = "a publié un événement";
+App::$strings["Unable to find your hub."] = "Impossible de trouver votre hub.";
+App::$strings["Post successful."] = "Publication réussie.";
+App::$strings["OpenID protocol error. No ID returned."] = "Erreur du protocole OpenID. Pas d'ID retourné.";
+App::$strings["Login failed."] = "Échec de la connexion.";
+App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
+App::$strings["This setting requires special processing and editing has been blocked."] = "Ce paramètre nécessité un traitement spécial, les modifications ont été bloquées.";
+App::$strings["Configuration Editor"] = "Editeur de configuration";
+App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Attention&nbsp;:modifier certains paramètres peut rendre votre canal inutilisable. Merci d'ignorer cette page à moins d'être suffisamment à l'aise de savoir comment utiliser correctement cette fonctionnalité.";
+App::$strings["Layout updated."] = "Mise en page mise à jour.";
+App::$strings["Edit System Page Description"] = "Modifier la description de la page du système";
+App::$strings["Layout not found."] = "Mise en page introuvable.";
+App::$strings["Module Name:"] = "Nom du module&nbsp;:";
+App::$strings["Layout Help"] = "Aide à la mise en page";
+App::$strings["Poke"] = "Tapoter";
+App::$strings["Poke somebody"] = "Taquiner quelqu'un";
+App::$strings["Poke/Prod"] = "Tapoter/Encourager";
+App::$strings["Poke, prod or do other things to somebody"] = "Taquiner, pousser ou faire autre chose à quelqu'un";
+App::$strings["Recipient"] = "Destinataire";
+App::$strings["Choose what you wish to do to recipient"] = "Choisir ce que vous voulez faire au destinataire";
+App::$strings["Make this post private"] = "Rendre cette publication privée";
+App::$strings["Fetching URL returns error: %1\$s"] = "Récupération d'URL échouée&nbsp;: %1\$s";
+App::$strings["Profile not found."] = "Profil introuvable.";
+App::$strings["Profile deleted."] = "Profil supprimé.";
+App::$strings["Profile-"] = "Profil-";
+App::$strings["New profile created."] = "Nouveau profil créé.";
+App::$strings["Profile unavailable to clone."] = "Profil impossible à cloner.";
+App::$strings["Profile unavailable to export."] = "Impossible d'exporter le profil.";
+App::$strings["Profile Name is required."] = "Le nom du profil est obligatoire.";
+App::$strings["Marital Status"] = "Statut marital";
+App::$strings["Romantic Partner"] = "Partenaire amoureux";
+App::$strings["Likes"] = "Aime";
+App::$strings["Dislikes"] = "N'aime pas";
+App::$strings["Work/Employment"] = "Travail/Occupation";
+App::$strings["Religion"] = "Religion/Croyance";
+App::$strings["Political Views"] = "Opinions politiques";
+App::$strings["Sexual Preference"] = "Préférences sexuelle";
+App::$strings["Homepage"] = "Site Internet";
+App::$strings["Interests"] = "Centres d'intérêt";
+App::$strings["Profile updated."] = "Profil mis à jour.";
+App::$strings["Hide your connections list from viewers of this profile"] = "";
+App::$strings["Edit Profile Details"] = "Modifier les détails du profil";
+App::$strings["View this profile"] = "Voir ce profil";
+App::$strings["Edit visibility"] = "Changer la visibilité";
+App::$strings["Profile Tools"] = "";
+App::$strings["Change cover photo"] = "";
+App::$strings["Change profile photo"] = "Changer la photo du profil";
+App::$strings["Create a new profile using these settings"] = "Créer un nouveau profil avec ces paramètres";
+App::$strings["Clone this profile"] = "Cloner ce profil";
+App::$strings["Delete this profile"] = "Supprimer ce profil";
+App::$strings["Add profile things"] = "Ajouter des éléments de profil";
+App::$strings["Personal"] = "Me concernant";
+App::$strings["Relation"] = "";
+App::$strings["Miscellaneous"] = "Divers";
+App::$strings["Import profile from file"] = "Importer le profil à partir d'un fichier";
+App::$strings["Export profile to file"] = "Exporter le profil vers un fichier.";
+App::$strings["Your gender"] = "";
+App::$strings["Marital status"] = "";
+App::$strings["Sexual preference"] = "";
+App::$strings["Profile name"] = "";
+App::$strings["This is your default profile."] = "Ceci est votre profil par défaut.";
+App::$strings["Your full name"] = "";
+App::$strings["Title/Description"] = "Titre/description";
+App::$strings["Street address"] = "";
+App::$strings["Locality/City"] = "Ville";
+App::$strings["Region/State"] = "Région";
+App::$strings["Postal/Zip code"] = "";
+App::$strings["Country"] = "Pays";
+App::$strings["Who (if applicable)"] = "Qui (si applicable)";
+App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Exemples&nbsp;: marie123, Marie Deschamps, marie@exemple.com";
+App::$strings["Since (date)"] = "";
+App::$strings["Tell us about yourself"] = "";
+App::$strings["Hometown"] = "Ville de naissance";
+App::$strings["Political views"] = "";
+App::$strings["Religious views"] = "";
+App::$strings["Keywords used in directory listings"] = "";
+App::$strings["Example: fishing photography software"] = "Exemple&nbsp;: escrime photographie modélisme";
+App::$strings["Musical interests"] = "Goûts musicaux";
+App::$strings["Books, literature"] = "Livres, littérature";
+App::$strings["Television"] = "Télévision";
+App::$strings["Film/Dance/Culture/Entertainment"] = "";
+App::$strings["Hobbies/Interests"] = "Loisirs/Centres d'intêret";
+App::$strings["Love/Romance"] = "";
+App::$strings["School/Education"] = "";
+App::$strings["Contact information and social networks"] = "";
+App::$strings["My other channels"] = "Mes autres canaux";
+App::$strings["Profile Image"] = "Image du profil";
+App::$strings["Edit Profiles"] = "Modifier les profils";
+App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Shift-rechargez votre page, ou videz le cache du navigateur si la photo ne s'affiche pas immédiatement.";
+App::$strings["Upload Profile Photo"] = "Téléverser une photo de profil";
+App::$strings["Invalid profile identifier."] = "Identifiant de profil invalide.";
+App::$strings["Profile Visibility Editor"] = "Éditeur de visibilité de profil";
+App::$strings["Profile"] = "Profil";
+App::$strings["Click on a contact to add or remove."] = "Cliquer sur un contact pour l'ajouter ou le retirer.";
+App::$strings["Visible To"] = "Visible par";
+App::$strings["Public Hubs"] = "Instances publiques";
+App::$strings["The listed hubs allow public registration for the \$Projectname network. All hubs in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some hubs may require subscription or provide tiered service plans. The hub itself <strong>may</strong> provide additional details."] = "Les sites listés permettent l'enregistrement public de comptes pour le réseau \$Projectname. Tous les sites du réseau sont reliés entre eux, être membre d'un site revient à être membre de tous. Certains sites peuvent demander une souscription ou proposer différents niveaux de service. Chaque site <strong>peut</strong> fournir des détails supplémentaires.";
+App::$strings["Hub URL"] = "URL du site";
+App::$strings["Access Type"] = "Type d'accès";
+App::$strings["Registration Policy"] = "Politique d'inscription";
+App::$strings["Stats"] = "";
+App::$strings["Software"] = "";
+App::$strings["Ratings"] = "Evaluations";
+App::$strings["Rate"] = "Evaluer";
+App::$strings["Website:"] = "Site web&nbsp;:";
+App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Canal distant [%s] (encore inconnu sur ce site)";
+App::$strings["Rating (this information is public)"] = "Evaluation (cette information est publique)";
+App::$strings["Optionally explain your rating (this information is public)"] = "Explication facultative de votre évaluation (cette information est publique)";
+App::$strings["No ratings"] = "Pas de note";
+App::$strings["Rating: "] = "Evaluation&nbsp:";
+App::$strings["Website: "] = "Site web&nbsp;:";
+App::$strings["Description: "] = "Description&nbsp;:";
App::$strings["Theme settings updated."] = "Paramètres du thème mis à jour.";
App::$strings["# Accounts"] = "# Comptes";
App::$strings["# blocked accounts"] = "# comptes bloqués";
@@ -1536,6 +798,7 @@ App::$strings["# Channels"] = "# Canaux";
App::$strings["# primary"] = "# primaire";
App::$strings["# clones"] = "# clones";
App::$strings["Message queues"] = "File des messages";
+App::$strings["Your software should be updated"] = "";
App::$strings["Administration"] = "Administration";
App::$strings["Summary"] = "Résumé";
App::$strings["Registered accounts"] = "Comptes enregistrés";
@@ -1543,7 +806,10 @@ App::$strings["Pending registrations"] = "Inscriptions en attente";
App::$strings["Registered channels"] = "Canaux enregistrés";
App::$strings["Active plugins"] = "Greffons actifs";
App::$strings["Version"] = "Version";
+App::$strings["Repository version (master)"] = "";
+App::$strings["Repository version (dev)"] = "";
App::$strings["Site settings updated."] = "Paramètres du site sauvegardés.";
+App::$strings["Default"] = "Défaut";
App::$strings["mobile"] = "mobile";
App::$strings["experimental"] = "expérimental";
App::$strings["unsupported"] = "non maintenu";
@@ -1552,9 +818,11 @@ App::$strings["My site is not a public server"] = "Mon site n'est pas un serveur
App::$strings["My site has paid access only"] = "Mon site est à accès payant uniquement";
App::$strings["My site has free access only"] = "Mon site est gratuit uniquement";
App::$strings["My site offers free accounts with optional paid upgrades"] = "Mon site offre des comptes gratuits avec des améliorations payantes facultatives";
+App::$strings["Site"] = "Site";
App::$strings["Registration"] = "Inscription";
App::$strings["File upload"] = "Envoi de fichier";
App::$strings["Policies"] = "Stratégies";
+App::$strings["Advanced"] = "Avancé";
App::$strings["Site name"] = "Nom du site";
App::$strings["Banner/Logo"] = "Bannière/logo";
App::$strings["Administrator Information"] = "Informations de l'administrateur";
@@ -1592,8 +860,10 @@ App::$strings["Force publish"] = "Publicité forcée";
App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Cocher pour forcer la publication de tous les profils du site dans l'annuaire.";
App::$strings["Import Public Streams"] = "Flux publics importés";
App::$strings["Import and allow access to public content pulled from other sites. Warning: this content is unmoderated."] = "Importer du contenu public à partir d'autres sites et autoriser l'accès à ce contenu. Attention&nbsp;: ce contenu n'est pas modéré.";
-App::$strings["login on Homepage"] = "Connexion à partir de la page d'accueil";
+App::$strings["Login on Homepage"] = "";
App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Présenter une boîte de dialogue de connexion aux visiteurs sur la page d'accueil si aucun autre contenu n'a été configuré.";
+App::$strings["Enable context help"] = "";
+App::$strings["Display contextual help for the current page when the help button is pressed."] = "";
App::$strings["Directory Server URL"] = "URL du serveur d'annuaire";
App::$strings["Default directory server"] = "Serveur d'annuaire par défaut";
App::$strings["Proxy user"] = "Utilisateur du proxy";
@@ -1619,19 +889,25 @@ App::$strings["ID"] = "Identifiant";
App::$strings["for channel"] = "pour le canal";
App::$strings["on server"] = "sur le serveur";
App::$strings["Server"] = "Serveur";
+App::$strings["By default, unfiltered HTML is allowed in embedded media. This is inherently insecure."] = "";
+App::$strings["The recommended setting is to only allow unfiltered HTML from the following sites:"] = "";
+App::$strings["https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"] = "";
+App::$strings["All other embedded content will be filtered, <strong>unless</strong> embedded content from that site is explicitly blocked."] = "";
+App::$strings["Security"] = "Sécurité";
App::$strings["Block public"] = "Bloquer \"public\"";
-App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "";
-App::$strings["Allow communications only from these sites"] = "";
-App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "";
-App::$strings["Block communications from these sites"] = "";
-App::$strings["Allow communications only from these channels"] = "";
-App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "";
-App::$strings["Block communications from these channels"] = "";
-App::$strings["Allow embedded HTML content only from these domains"] = "";
-App::$strings["One site per line. Leave empty to allow from any site by default"] = "";
-App::$strings["Block embedded HTML from these domains"] = "";
-App::$strings["Cooperative embed security"] = "";
-App::$strings["Enable to share embed security with other compatible sites/hubs"] = "";
+App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "Sélectionner pour ne permettre l'accès aux pages personnelles \"publiques\" du site qu'aux personnes authentifiées, pas aux personnes anonymes du web.";
+App::$strings["Set \"Transport Security\" HTTP header"] = "";
+App::$strings["Set \"Content Security Policy\" HTTP header"] = "";
+App::$strings["Allow communications only from these sites"] = "N'autorisez que les communications venant de ces sites";
+App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Un site par ligne. Laisser vide pour autoriser les communications de tous les sites, par défaut.";
+App::$strings["Block communications from these sites"] = "Bloquer les communications de ces sites";
+App::$strings["Allow communications only from these channels"] = "N'autoriser que les communications de ces canaux";
+App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "Un canal (adresse) par ligne. Laisser vide pour autoriser les communications de tous les canaux, par défaut";
+App::$strings["Block communications from these channels"] = "Bloquer les communications de ces canaux";
+App::$strings["Only allow embeds from secure (SSL) websites and links."] = "";
+App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "";
+App::$strings["One site per line. By default embedded content is filtered."] = "";
+App::$strings["Block embedded HTML from these domains"] = "Bloquer le HTML embarqué à partir de ces domaines";
App::$strings["Update has been marked successful"] = "La mise à jour a été marquée comme réussie";
App::$strings["Executing %s failed. Check system logs."] = "L'éxecution de %s a échoué. Merci de vérifier les journaux du système.";
App::$strings["Update %s was successfully applied."] = "La mise à jour %s a été appliquée avec succès.";
@@ -1660,12 +936,13 @@ App::$strings["Account not found"] = "Compte introuvable";
App::$strings["Account '%s' deleted"] = "Compte '%s' supprimé";
App::$strings["Account '%s' blocked"] = "Compte '%s' bloqué";
App::$strings["Account '%s' unblocked"] = "Compte '%s' débloqué";
-App::$strings["Users"] = "Utilisateurs";
+App::$strings["Accounts"] = "Comptes";
App::$strings["select all"] = "tout sélectionner";
-App::$strings["User registrations waiting for confirm"] = "Inscriptions en attente d'approbation";
+App::$strings["Registrations waiting for confirm"] = "";
App::$strings["Request date"] = "Date de la demande";
App::$strings["No registrations."] = "Pas d'inscriptions.";
App::$strings["Deny"] = "Refuser";
+App::$strings["All Channels"] = "Tous les canaux";
App::$strings["Register date"] = "Date d'inscription";
App::$strings["Last login"] = "Dernière connexion";
App::$strings["Expires"] = "Expire le";
@@ -1690,34 +967,52 @@ App::$strings["Channel '%s' censored"] = "Canal '%s' censuré";
App::$strings["Channel '%s' uncensored"] = "Canal '%s' non censuré";
App::$strings["Channel '%s' code allowed"] = "Code autorisé pour le canal '%s'";
App::$strings["Channel '%s' code disallowed"] = "Code interdit pour le canal '%s'";
+App::$strings["Channels"] = "Canaux";
App::$strings["Censor"] = "Censurer";
App::$strings["Uncensor"] = "Ne plus censurer";
App::$strings["Allow Code"] = "Autoriser le code";
App::$strings["Disallow Code"] = "Interdire le code";
+App::$strings["Channel"] = "Canal";
App::$strings["UID"] = "UID";
-App::$strings["Address"] = "Adresse";
App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Les canaux sélectionnés seront supprimés&nbsp;!\\n\\nTout ce qui a été publié dans ces canaux sur ce site sera définitivement supprimé&nbsp;!\\n\\nÊtes-vous sûr&nbsp;?";
App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Le canal {0} sera supprimé&nbsp;!\\n\\nTout ce qui a été publié sur ce canal sera définitivement supprimé&nbsp;!\\n\\nÊtes-vous sûr(e)&nbsp;?";
App::$strings["Plugin %s disabled."] = "Greffon %s désactivé.";
App::$strings["Plugin %s enabled."] = "Greffon %s activé.";
App::$strings["Disable"] = "Désactiver";
App::$strings["Enable"] = "Activer";
+App::$strings["Plugins"] = "Greffons";
App::$strings["Toggle"] = "(Dés)activer";
+App::$strings["Settings"] = "Paramètres";
App::$strings["Author: "] = "Auteur&nbsp;:";
App::$strings["Maintainer: "] = "Maintenu par&nbsp;:";
App::$strings["Minimum project version: "] = "Version minimum du projet&nbsp;:";
App::$strings["Maximum project version: "] = "Version maximum du projet&nbsp;:";
App::$strings["Minimum PHP version: "] = "Version minimum de PHP&nbsp;:";
+App::$strings["Requires: "] = "Requiert&nbsp;:";
App::$strings["Disabled - version incompatibility"] = "Désactivé - version incompatible";
+App::$strings["Enter the public git repository URL of the plugin repo."] = "";
+App::$strings["Plugin repo git URL"] = "";
+App::$strings["Custom repo name"] = "";
+App::$strings["(optional)"] = "";
+App::$strings["Download Plugin Repo"] = "";
+App::$strings["Install new repo"] = "";
+App::$strings["Install"] = "Installer";
+App::$strings["Manage Repos"] = "";
+App::$strings["Installed Plugin Repositories"] = "";
+App::$strings["Install a New Plugin Repository"] = "";
+App::$strings["Update"] = "Mise à jour";
+App::$strings["Switch branch"] = "";
App::$strings["No themes found."] = "Aucun thème trouvé.";
App::$strings["Screenshot"] = "Capture d'écran";
+App::$strings["Themes"] = "Thèmes";
App::$strings["[Experimental]"] = "[Expérimental]";
App::$strings["[Unsupported]"] = "[Non maintenu]";
App::$strings["Log settings updated."] = "Paramètres du journal mis à jour.";
+App::$strings["Logs"] = "Journaux";
App::$strings["Clear"] = "Vider";
App::$strings["Debugging"] = "Débogage";
App::$strings["Log file"] = "Fichier du journal";
-App::$strings["Must be writable by web server. Relative to your Red top-level directory."] = "Doit être accessible en écriture par le serveur web. Chemin relatif à la racine de votre installation de Hubzilla.";
+App::$strings["Must be writable by web server. Relative to your top-level webserver directory."] = "";
App::$strings["Log level"] = "Niveau de journalisation";
App::$strings["New Profile Field"] = "Nouveau champ de profil";
App::$strings["Field nickname"] = "Nom court du champ";
@@ -1729,118 +1024,26 @@ App::$strings["Help text"] = "Aide à la saisie";
App::$strings["Additional info (optional)"] = "Informations additionnelles (facultatif)";
App::$strings["Field definition not found"] = "Définition du champ introuvable";
App::$strings["Edit Profile Field"] = "Modifier le champ de profil";
-App::$strings["Poke somebody"] = "";
-App::$strings["Poke/Prod"] = "Tapoter/Encourager";
-App::$strings["Poke, prod or do other things to somebody"] = "";
-App::$strings["Recipient"] = "Destinataire";
-App::$strings["Choose what you wish to do to recipient"] = "Choisir ce que vous voulez faire au destinataire";
-App::$strings["Make this post private"] = "Rendre cette publication privée";
-App::$strings["Fetching URL returns error: %1\$s"] = "Récupération d'URL échouée&nbsp;: %1\$s";
-App::$strings["Image uploaded but image cropping failed."] = "L'image a été téléversée, mais le recadrage a échoué.";
-App::$strings["Image resize failed."] = "Le redimensionnement de l'image a échoué.";
-App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Shift-rechargez votre page, ou videz le cache du navigateur si la photo ne s'affiche pas immédiatement.";
-App::$strings["Image upload failed."] = "Le téléversement de l'image a échoué.";
-App::$strings["Unable to process image."] = "Impossible de traîter l'image.";
-App::$strings["female"] = "femme";
-App::$strings["%1\$s updated her %2\$s"] = "%1\$s a mis à jour son %2\$s";
-App::$strings["male"] = "homme";
-App::$strings["%1\$s updated his %2\$s"] = "%1\$s a mis à jour son %2\$s";
-App::$strings["%1\$s updated their %2\$s"] = "%1\$s a mis a jour sa %2\$s";
-App::$strings["profile photo"] = "photo de profil";
-App::$strings["Photo not available."] = "Photo inaccessible.";
-App::$strings["Upload File:"] = "Téléverser fichier&nbsp;:";
-App::$strings["Select a profile:"] = "Choisir un profil&nbsp;:";
-App::$strings["Upload Profile Photo"] = "Téléverser une photo de profil";
-App::$strings["or"] = "ou";
-App::$strings["skip this step"] = "passer cette étape";
-App::$strings["select a photo from your photo albums"] = "choisir une photo dans vos albums";
-App::$strings["Crop Image"] = "Recadrer l'image";
-App::$strings["Please adjust the image cropping for optimum viewing."] = "Merci d'ajuster le cadre pour une visualisation optimale.";
-App::$strings["Done Editing"] = "J'ai terminé";
-App::$strings["Profile not found."] = "Profil introuvable.";
-App::$strings["Profile deleted."] = "Profil supprimé.";
-App::$strings["Profile-"] = "Profil-";
-App::$strings["New profile created."] = "Nouveau profil créé.";
-App::$strings["Profile unavailable to clone."] = "Profil impossible à cloner.";
-App::$strings["Profile unavailable to export."] = "Impossible d'exporter le profil.";
-App::$strings["Profile Name is required."] = "Le nom du profil est obligatoire.";
-App::$strings["Marital Status"] = "Statut marital";
-App::$strings["Romantic Partner"] = "Partenaire amoureux";
-App::$strings["Likes"] = "Aime";
-App::$strings["Dislikes"] = "N'aime pas";
-App::$strings["Work/Employment"] = "Travail/Occupation";
-App::$strings["Religion"] = "Religion/Croyance";
-App::$strings["Political Views"] = "Opinions politiques";
-App::$strings["Sexual Preference"] = "Préférences sexuelle";
-App::$strings["Homepage"] = "Site Internet";
-App::$strings["Interests"] = "Centres d'intérêt";
-App::$strings["Profile updated."] = "Profil mis à jour.";
-App::$strings["Hide your contact/friend list from viewers of this profile?"] = "Cacher vos contacts/amis aux visiteurs de ce profil&nbsp;?";
-App::$strings["Edit Profile Details"] = "Modifier les détails du profil";
-App::$strings["View this profile"] = "Voir ce profil";
-App::$strings["Change Profile Photo"] = "Changer la photo du profil";
-App::$strings["Create a new profile using these settings"] = "Créer un nouveau profil avec ces paramètres";
-App::$strings["Clone this profile"] = "Cloner ce profil";
-App::$strings["Delete this profile"] = "Supprimer ce profil";
-App::$strings["Import profile from file"] = "Importer le profil à partir d'un fichier";
-App::$strings["Export profile to file"] = "Exporter le profil vers un fichier.";
-App::$strings["Profile Name:"] = "Nom du profil&nbsp;:";
-App::$strings["Your Full Name:"] = "Votre nom complet&nbsp;:";
-App::$strings["Title/Description:"] = "Titre/description&nbsp;:";
-App::$strings["Your Gender:"] = "Sexe/Genre&nbsp;:";
-App::$strings["Birthday :"] = "Date de naissance&nbsp;:";
-App::$strings["Street Address:"] = "Numéro et voie&nbsp;:";
-App::$strings["Locality/City:"] = "Ville&nbsp;:";
-App::$strings["Postal/Zip Code:"] = "Code postal&nbsp;:";
-App::$strings["Country:"] = "Pays&nbsp;:";
-App::$strings["Region/State:"] = "Région/Province/État&nbsp;:";
-App::$strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span>Statut marital&nbsp;:";
-App::$strings["Who: (if applicable)"] = "Avec&nbsp;: (si pertinent)";
-App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Exemples&nbsp;: marie123, Marie Deschamps, marie@exemple.com";
-App::$strings["Since [date]:"] = "Depuis [date]&nbsp;:";
-App::$strings["Homepage URL:"] = "URL de mon site Internet&nbsp;:";
-App::$strings["Religious Views:"] = "Opinions religieuses&nbsp;:";
-App::$strings["Keywords:"] = "Mots-clefs&nbsp;:";
-App::$strings["Example: fishing photography software"] = "Exemple&nbsp;: escrime photographie modélisme";
-App::$strings["Used in directory listings"] = "Utilisé pour le référencement dans l'annuaire";
-App::$strings["Tell us about yourself..."] = "Parlez nous de vous...";
-App::$strings["Hobbies/Interests"] = "Loisirs/Centres d'intêret";
-App::$strings["Contact information and Social Networks"] = "Coordonnées et réseaux sociaux";
-App::$strings["My other channels"] = "Mes autres canaux";
-App::$strings["Musical interests"] = "Goûts musicaux";
-App::$strings["Books, literature"] = "Livres, littérature";
-App::$strings["Television"] = "Télévision";
-App::$strings["Film/dance/culture/entertainment"] = "Cinéma/Danse/Culture/Divertissement";
-App::$strings["Love/romance"] = "Amour/Relation amoureuse";
-App::$strings["Work/employment"] = "Travail/Occupation&nbsp;";
-App::$strings["School/education"] = "Études";
-App::$strings["This is your default profile."] = "Ceci est votre profil par défaut.";
-App::$strings["Age: "] = "Age&nbsp;:";
-App::$strings["Edit/Manage Profiles"] = "Modifier/gérer les profils";
-App::$strings["Add profile things"] = "Ajouter des éléments de profil";
-App::$strings["Include desirable objects in your profile"] = "Incluez des objets souhaitables dans votre profil";
-App::$strings["Invalid profile identifier."] = "Identifiant de profil invalide.";
-App::$strings["Profile Visibility Editor"] = "Éditeur de visibilité de profil";
-App::$strings["Click on a contact to add or remove."] = "Cliquer sur un contact pour l'ajouter ou le retirer.";
-App::$strings["Visible To"] = "Visible par";
-App::$strings["Public Sites"] = "Sites publics";
-App::$strings["The listed sites allow public registration for the \$Projectname network. All sites in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Les sites listés autorisent l'inscription publique au réseau \$Projectname. Tous les sites du réseau sont interconnectés, l'inscription sur l'un quelconque d'entre eux signifie donc l'inscription sur le réseau dans son ensemble. Certains sites peuvent nécessiter une souscription ou fournir des niveaux de service différenciés. Le lien du fournisseur <strong>peut</strong> fournir plus de détails.";
-App::$strings["Rate this hub"] = "Noter ce hub";
-App::$strings["Site URL"] = "URL du site";
-App::$strings["Access Type"] = "Type d'accès";
-App::$strings["Registration Policy"] = "Politique d'inscription";
-App::$strings["Project"] = "Projet";
-App::$strings["View hub ratings"] = "Voir les notes de cette instance";
-App::$strings["Rate"] = "Evaluer";
-App::$strings["View ratings"] = "Voir les notes";
-App::$strings["Website:"] = "Site web&nbsp;:";
-App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Canal distant [%s] (encore inconnu sur ce site)";
-App::$strings["Rating (this information is public)"] = "Evaluation (cette information est publique)";
-App::$strings["Optionally explain your rating (this information is public)"] = "Explication facultative de votre évaluation (cette information est publique)";
-App::$strings["No ratings"] = "Pas de note";
-App::$strings["Rating: "] = "Evaluation&nbsp:";
-App::$strings["Website: "] = "Site web&nbsp;:";
-App::$strings["Description: "] = "Description&nbsp;:";
+App::$strings["Profile Fields"] = "Champs de profil";
+App::$strings["Basic Profile Fields"] = "Champs de profil de base";
+App::$strings["Advanced Profile Fields"] = "Champs de profil avancés";
+App::$strings["(In addition to basic fields)"] = "(en plus des champs de base)";
+App::$strings["All available fields"] = "Tous les champs disponibles";
+App::$strings["Custom Fields"] = "Champs personnalisés";
+App::$strings["Create Custom Field"] = "Créer un champ personnalisé";
+App::$strings["App installed."] = "Application installée.";
+App::$strings["Malformed app."] = "Erreur de l'application - Malformée.";
+App::$strings["Embed code"] = "Imbriquer le code";
+App::$strings["Edit App"] = "Modifier l'application";
+App::$strings["Create App"] = "Créer une application";
+App::$strings["Name of app"] = "Nom de l'application";
+App::$strings["Location (URL) of app"] = "Emplacement (URL) de l'application";
+App::$strings["Photo icon URL"] = "URL de l'icône à utiliser pour cette photo";
+App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixels - facultatif";
+App::$strings["Categories (optional, comma separated list)"] = "";
+App::$strings["Version ID"] = "Identifiant de version";
+App::$strings["Price of app"] = "Prix de l'application";
+App::$strings["Location (URL) to purchase app"] = "Emplacement (URL) pour l'achat de l'application";
App::$strings["Select a bookmark folder"] = "Choisir un dossier de favoris";
App::$strings["Save Bookmark"] = "Enregistrer le favori";
App::$strings["URL of bookmark"] = "URL du favori";
@@ -1851,19 +1054,22 @@ App::$strings["Passwords do not match."] = "Les mots de passe ne concordent pas.
App::$strings["Registration successful. Please check your email for validation instructions."] = "Inscription réussie. Merci de vérifier vos courriels pour valider votre compte.";
App::$strings["Your registration is pending approval by the site owner."] = "Votre inscription est en attente d'approbation par l'administrateur.";
App::$strings["Your registration can not be processed."] = "Votre inscription ne peut être traîtée.";
-App::$strings["Registration on this site is disabled."] = "L'enregistrement est désactivé sur ce site.";
-App::$strings["Registration on this site/hub is by approval only."] = "L'inscription sur ce site/hub est soumise à approbation.";
-App::$strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">S'inscrire sur un autre site/hub affilié</a>";
+App::$strings["Registration on this hub is disabled."] = "La création de nouveaux comptes est désactivée pour ce site.";
+App::$strings["Registration on this hub is by approval only."] = "La création de compte sur ce site est soumise à approbation.";
+App::$strings["<a href=\"pubsites\">Register at another affiliated hub.</a>"] = "<a href=\"pubsites\">S'enregistrer sur un autre site du réseau.</a>";
App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Ce site a dépassé le nombre de création de comptes autorisé chaque jour. Merci d'essayer à nouveau demain.";
App::$strings["Terms of Service"] = "Conditions de service";
App::$strings["I accept the %s for this website"] = "J'accepte les %s de ce site";
App::$strings["I am over 13 years of age and accept the %s for this website"] = "J'ai plus de 13 ans et j'accepte les %s de ce site";
-App::$strings["Membership on this site is by invitation only."] = "L'inscription à ce site se fait uniquement sur invitation.";
-App::$strings["Please enter your invitation code"] = "Merci de saisir votre code d'invitation";
-App::$strings["Enter your name"] = "Saisissez votre nom";
App::$strings["Your email address"] = "Votre adresse de courriel";
App::$strings["Choose a password"] = "Choisissez un mot de passe";
App::$strings["Please re-enter your password"] = "Merci de saisir à nouveau votre mot de passe";
+App::$strings["Please enter your invitation code"] = "Merci de saisir votre code d'invitation";
+App::$strings["no"] = "non";
+App::$strings["yes"] = "oui";
+App::$strings["Membership on this site is by invitation only."] = "L'inscription à ce site se fait uniquement sur invitation.";
+App::$strings["Register"] = "S'inscrire";
+App::$strings["Proceed to create your first channel"] = "Continuer pour créer votre premier canal";
App::$strings["Please login."] = "Merci de vous connecter.";
App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "Il est impossible de supprimer un compte dans les 48 heures après avoir changé le mot de passe du compte.";
App::$strings["Remove This Account"] = "Supprimer ce compte";
@@ -1891,13 +1097,14 @@ App::$strings["Search results for: %s"] = "Résultats de recherche pour&nbsp;: %
App::$strings["No service class restrictions found."] = "Aucune restriction de classe de service trouvée.";
App::$strings["Name is required"] = "Le nom est requis";
App::$strings["Key and Secret are required"] = "Clef et secret sont requis";
+App::$strings["Not valid email."] = "Adresse de courriel non valide.";
+App::$strings["Protected email address. Cannot change to that email."] = "Adresse de courriel protégée. Impossible de l'utiliser.";
+App::$strings["System failure storing new email. Please try again."] = "Défaillance système lors du stockage de la nouvelle adresse de courriel. Merci d'essayer à nouveau.";
+App::$strings["Password verification failed."] = "La vérification du mot de passe a échoué.";
App::$strings["Passwords do not match. Password unchanged."] = "Les deux saisies du mot de passe ne correspondent pas. Il n'a donc pas été changé.";
App::$strings["Empty passwords are not allowed. Password unchanged."] = "Le mot de passe ne peut pas être vide. Il n'a donc pas été changé.";
App::$strings["Password changed."] = "Le mot de passe a été changé.";
App::$strings["Password update failed. Please try again."] = "La mise à jour du mot de passe a échoué. Merci d'essayer à nouveau.";
-App::$strings["Not valid email."] = "Adresse de courriel non valide.";
-App::$strings["Protected email address. Cannot change to that email."] = "Adresse de courriel protégée. Impossible de l'utiliser.";
-App::$strings["System failure storing new email. Please try again."] = "Défaillance système lors du stockage de la nouvelle adresse de courriel. Merci d'essayer à nouveau.";
App::$strings["Settings updated."] = "Paramètres mis à jour.";
App::$strings["Add application"] = "Ajouter une application";
App::$strings["Name of application"] = "Nom de l'application";
@@ -1908,7 +1115,7 @@ App::$strings["Redirect"] = "Redirection";
App::$strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI de redirection - laissez vide, sauf si votre application le requiert spécifiquement";
App::$strings["Icon url"] = "URL de l'icône";
App::$strings["Optional"] = "Facultatif";
-App::$strings["Application not found."] = "";
+App::$strings["Application not found."] = "Application introuvable.";
App::$strings["Connected Apps"] = "Applications connectées";
App::$strings["Client key starts with"] = "La clef partagée commence par";
App::$strings["No name"] = "Sans nom";
@@ -1916,8 +1123,9 @@ App::$strings["Remove authorization"] = "Révoquer l'autorisation";
App::$strings["No feature settings configured"] = "Aucun paramètre de fonctionnalité configuré";
App::$strings["Feature/Addon Settings"] = "Paramètres des extensions/greffons";
App::$strings["Account Settings"] = "Paramètres du compte";
-App::$strings["Enter New Password:"] = "Nouveau mot de passe&nbsp;:";
-App::$strings["Confirm New Password:"] = "Confirmer le nouveau mot de passe&nbsp;:";
+App::$strings["Current Password"] = "Mot de passe actuel";
+App::$strings["Enter New Password"] = "Entrez votre nouveau mot de passe";
+App::$strings["Confirm New Password"] = "Confirmez le nouveau mot de passe";
App::$strings["Leave password fields blank unless changing"] = "Laissez les mots de passe vides si vous ne voulez pas les modifier";
App::$strings["Email Address:"] = "Adresse de courriel&nbsp;:";
App::$strings["Remove this account including all its channels"] = "Supprimer ce compte et tous ses canaux";
@@ -1931,6 +1139,8 @@ App::$strings["Custom Theme Settings"] = "Paramètres personnels du thème";
App::$strings["Content Settings"] = "Paramètres liés au contenu";
App::$strings["Display Theme:"] = "Afficher le thème&nbsp;:";
App::$strings["Mobile Theme:"] = "Thème mobile&nbsp;:";
+App::$strings["Preload images before rendering the page"] = "Pré-charger les images avant d'afficher la page";
+App::$strings["The subjective page load time will be longer but the page will be ready when displayed"] = "Le temps de charge perçu de la page sera plus long mais la page sera complète quand elle s'affichera";
App::$strings["Enable user zoom on mobile devices"] = "Permettre à l'utilisateur d'un mobile d'agrandir le contenu";
App::$strings["Update browser every xx seconds"] = "Mettre à jour le navigateur toutes les xx secondes";
App::$strings["Minimum of 10 seconds, no maximum"] = "Minimum 10 secondes, pas de maximum";
@@ -1958,6 +1168,7 @@ App::$strings["Allow us to suggest you as a potential friend to new members?"] =
App::$strings["Your channel address is"] = "L'adresse de votre canal est";
App::$strings["Channel Settings"] = "Paramètres du canal";
App::$strings["Basic Settings"] = "Paramètres standard";
+App::$strings["Full Name:"] = "Nom complet&nbsp;:";
App::$strings["Your Timezone:"] = "Votre fureau horaire&nbsp;:";
App::$strings["Default Post Location:"] = "Emplacement de publication par défaut&nbsp;:";
App::$strings["Geographical location to display on your posts"] = "Emplacement géographique à afficher sur vos publications";
@@ -1977,10 +1188,14 @@ App::$strings["Allow others to tag your posts"] = "Autoriser les autres à \"ét
App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "Souvent utilisé par la communauté pour identifier un contenu inapproprié a posteriori ";
App::$strings["Advanced Privacy Settings"] = "Paramètres de confidentialité avancés";
App::$strings["Expire other channel content after this many days"] = "Faire expirer le contenu des autres canaux après n jours";
-App::$strings["0 or blank to use the website limit. The website expires after %d days."] = "0 ou vide pour utiliser la limite du site. Le délai du site est de %d jours.";
+App::$strings["0 or blank to use the website limit."] = "";
+App::$strings["This website expires after %d days."] = "";
+App::$strings["This website does not expire imported content."] = "";
+App::$strings["The website limit takes precedence if lower than your limit."] = "";
App::$strings["Maximum Friend Requests/Day:"] = "Nombre maximum de demandes de contact par jour&nbsp;:";
App::$strings["May reduce spam activity"] = "Contribue à réduire l'impact des indésirables";
-App::$strings["Default Post Permissions"] = "Permissions par défaut des publications";
+App::$strings["Default Post and Publish Permissions"] = "";
+App::$strings["Use my default audience setting for the type of object published"] = "";
App::$strings["Channel permissions category:"] = "Catégorie de permissions du canal&nbsp;:";
App::$strings["Maximum private messages per day from unknown people:"] = "Nombre maximum de messages privés émanant d'inconnus, par jour&nbsp;:";
App::$strings["Useful to reduce spamming"] = "Utile pour réduire les indésirables";
@@ -2053,8 +1268,10 @@ App::$strings["Website URL"] = "URL du site web";
App::$strings["Please use SSL (https) URL if available."] = "Veuillez utiliser SSL/TLS (https) si disponible.";
App::$strings["Please select a default timezone for your website"] = "Veuillez choisir un fuseau horaire par défaut pour votre site";
App::$strings["Site settings"] = "Paramètres du site";
-App::$strings["Enable \$Projectname <strong>advanced</strong> features?"] = "";
-App::$strings["Some advanced features, while useful - may be best suited for technically proficient audiences"] = "";
+App::$strings["Enable \$Projectname <strong>advanced</strong> features?"] = "Activer les fonctionnalités <strong>avancées</strong> de \$Projectname&nbsp;?";
+App::$strings["Some advanced features, while useful - may be best suited for technically proficient audiences"] = "Certaines fonctionnalités avancées, bien qu'utiles, sont plus adaptées aux utilisateurs chevronnés.";
+App::$strings["PHP version 5.5 or greater is required."] = "";
+App::$strings["PHP version"] = "";
App::$strings["Could not find a command line version of PHP in the web server PATH."] = "Impossible de trouver une version CLI de PHP dans le PATH du serveur web.";
App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "En l'absence de version CLI de PHP sur votre serveur, vous ne pourrez pas utiliser la synchronisation en arrière-plan via cron.";
App::$strings["PHP executable path"] = "Chemin vers l'éxecutable PHP";
@@ -2093,7 +1310,7 @@ App::$strings["At the end of this procedure, we will give you a text to save in
App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Autrement, vous pouvez contourner toute cette procédure et réaliser l'installation manuellement. Merci de consulter le fichier \"install/INSTALL.txt\" pour les instructions détaillées.";
App::$strings[".htconfig.php is writable"] = "Le fichier .htconfig.php est accessible en écriture";
App::$strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "\$Projectname utilise le moteur de gabarits Smarty3 pour mettre son contenu en forme. Smarty3 compile ses modèles vers du PHP natif pour accélérer le rendu.";
-App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "Pour utiliser ces modèles, le serveur doit avoir le droits d'écrire dans le dossier %s à la racine du site \$Projectname.";
+App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder."] = "";
App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Merci de vous assurer que l'utilisateur sous lequel le serveur web tourne (le plus souvent, www-data) a bien l'autorisation d'écrire dans ce répertoire.";
App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Note: Comme mesure de sécurité, assurez vous de donner les droits d'écriture au serveur web sur %s uniquement, pas sur les fichiers individuels (.tpl) qu'il contient.";
App::$strings["%s is writable"] = "Permission d'écriture sur %s activée";
@@ -2112,22 +1329,6 @@ App::$strings["The database configuration file \".htconfig.php\" could not be wr
App::$strings["Errors encountered creating database tables."] = "Erreurs rencontrées pendant la création de tables de BDD.";
App::$strings["<h1>What next</h1>"] = "<h1>Et maintenant</h1>";
App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANT&nbsp;: Vous devez créer [manuellement] une tâche planifiée pour les mises à jour du réseau.";
-App::$strings["No valid account found."] = "Aucun compte valide trouvé.";
-App::$strings["Password reset request issued. Check your email."] = "Demande de réinitialisation du mot de passe envoyée. Vérifiez vos courriels.";
-App::$strings["Site Member (%s)"] = "Membre du site (%s)";
-App::$strings["Password reset requested at %s"] = "Demande de réinitialisation du mot de passe sur %s";
-App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La demande n'a pas pu être vérifiée. (Peut-être l'avez vous déjà utilisée.) La réinitialisation a échoué.";
-App::$strings["Password Reset"] = "Réinitialiser le mot de passe";
-App::$strings["Your password has been reset as requested."] = "Votre mot de passe a bien été réinitialisé.";
-App::$strings["Your new password is"] = "Votre nouveau mot de passe est";
-App::$strings["Save or copy your new password - and then"] = "Enregistrez ou copiez votre nouveau mot de passe, puis";
-App::$strings["click here to login"] = "cliquez ici pour vous connecter";
-App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Votre mot de passe peut être changé depuis la page des <em>Paramètres</em> une fois connecté.";
-App::$strings["Your password has changed at %s"] = "Votre mot de passe de %s a été changé";
-App::$strings["Forgot your Password?"] = "Mot de passe oublié&nbsp;?";
-App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Saisissez votre adresse de courriel, et validez, pour réinitialiser votre mot de passe. Vérifiez ensuite votre boîte aux lettres pour la suite des instructions.";
-App::$strings["Email Address"] = "Adresse de courriel";
-App::$strings["Reset"] = "Réinitialiser";
App::$strings["Files: shared with me"] = "Fichiers&nbsp;: partagés avec moi";
App::$strings["NEW"] = "NOUVEAU";
App::$strings["Remove all files"] = "Supprimer tous les fichiers";
@@ -2149,11 +1350,14 @@ App::$strings["Failed to create source. No channel selected."] = "Impossible de
App::$strings["Source created."] = "Source créée.";
App::$strings["Source updated."] = "Source mise à jour.";
App::$strings["*"] = "*";
+App::$strings["Channel Sources"] = "Sources du canal";
App::$strings["Manage remote sources of content for your channel."] = "Gérer les sources distantes de contenu pour votre canal.";
App::$strings["New Source"] = "Nouvelle source";
App::$strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importer le contenu sélectionné ou tout le contenu du canal suivant vers ce canal et le distribuer selon vos paramètres de canal.";
App::$strings["Only import content with these words (one per line)"] = "N'importer le contenu que s'il contient ces mots (un par ligne)";
App::$strings["Leave blank to import all public content"] = "Laissez vide pour importer tout le contenu public";
+App::$strings["Channel Name"] = "Nom du canal";
+App::$strings["Add the following categories to posts imported from this source (comma separated)"] = "";
App::$strings["Source not found."] = "Source introuvable.";
App::$strings["Edit Source"] = "Modifier la source";
App::$strings["Delete Source"] = "Supprimer la source";
@@ -2162,6 +1366,9 @@ App::$strings["Unable to remove source."] = "Impossible de supprimer la source."
App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s suit %3\$s de %2\$s";
App::$strings["%1\$s stopped following %2\$s's %3\$s"] = "%1\$s ne suit plus %3\$s de %2\$s";
App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Aucune suggestion disponible. Si le site est récent, merci de re-tenter dans 24 heures.";
+App::$strings["Ignore/Hide"] = "Ignorer/Cacher";
+App::$strings["post"] = "publication";
+App::$strings["comment"] = "commentaire";
App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s a étiqueté le %3\$s de %2\$s avec %4\$s";
App::$strings["Tag removed"] = "Étiquette retirée";
App::$strings["Remove Item Tag"] = "Retirer une étiquette à l'élément";
@@ -2193,11 +1400,861 @@ App::$strings["No connections."] = "Aucun contact.";
App::$strings["Visit %s's profile [%s]"] = "Visiter le profil de %s [%s]";
App::$strings["View Connections"] = "Voir les contacts";
App::$strings["Source of Item"] = "Source de l'élément";
+App::$strings["Webpages"] = "Pages web";
+App::$strings["Actions"] = "Actions";
+App::$strings["Page Link"] = "Lien vers la page";
App::$strings["Page Title"] = "Titre de la page";
App::$strings["Xchan Lookup"] = "Recherche xchan";
App::$strings["Lookup xchan beginning with (or webbie): "] = "Recherche xchan commençant par (ou adresse \"webbie\")&nbsp;:";
-App::$strings["Cover Photos"] = "Photos de couverture";
-App::$strings["Upload Cover Photo"] = "Téléverser une photo de couverture";
+App::$strings["Site Admin"] = "Administrateur";
+App::$strings["Bug Report"] = "";
+App::$strings["View Bookmarks"] = "";
+App::$strings["My Chatrooms"] = "";
+App::$strings["Firefox Share"] = "";
+App::$strings["Remote Diagnostics"] = "";
+App::$strings["Suggest Channels"] = "Suggérer des canaux";
+App::$strings["Login"] = "Connexion";
+App::$strings["Grid"] = "Réseau";
+App::$strings["Channel Home"] = "Mon canal";
+App::$strings["Events"] = "Événements";
+App::$strings["Directory"] = "Annuaire";
+App::$strings["Mail"] = "Messages";
+App::$strings["Chat"] = "Clavardage";
+App::$strings["Probe"] = "Sonder";
+App::$strings["Suggest"] = "Suggérer";
+App::$strings["Random Channel"] = "Un canal au hasard";
+App::$strings["Invite"] = "Invitation";
+App::$strings["Features"] = "Fonctionalités";
+App::$strings["Post"] = "Envoyer";
+App::$strings["Purchase"] = "Acheter";
+App::$strings["Missing room name"] = "Il manque le nom du salon";
+App::$strings["Duplicate room name"] = "Un salon avec ce nom existe déjà";
+App::$strings["Invalid room specifier."] = "Identifiant de salon invalide.";
+App::$strings["Room not found."] = "Salon introuvable.";
+App::$strings["Room is full"] = "Le salon est plein";
+App::$strings["\$Projectname Notification"] = "Notification \$Projectname";
+App::$strings["\$projectname"] = "\$projectname";
+App::$strings["Thank You,"] = "Merci,";
+App::$strings["%s Administrator"] = "l'administrateur de %s";
+App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
+App::$strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla:Notify] Nouveau courriel reçu à %s";
+App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, vous avez reçu un message privé sur %3\$s, de la part de %2\$s.";
+App::$strings["%1\$s sent you %2\$s."] = "%1\$s vous a envoyé %2\$s.";
+App::$strings["a private message"] = "un message privé";
+App::$strings["Please visit %s to view and/or reply to your private messages."] = "Merci de visiter %s pour voir et/ou répondre à vos messages privés.";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s a commenté sur [zrl=%3\$s]%4\$s[/zrl]";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s a commenté sur [zrl=%3\$s]%5\$s de %4\$s[/zrl]";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s a commenté [zrl=%3\$s]votre %4\$s[/zrl]";
+App::$strings["[Hubzilla:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Hubzilla:Notify] Commentaire de %2\$s sur conversation #%1\$d";
+App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s a commenté un élément de conversation que vous suivez.";
+App::$strings["Please visit %s to view and/or reply to the conversation."] = "Merci de visiter %s pour voir et/ou répondre sur cette conversation.";
+App::$strings["[Hubzilla:Notify] %s posted to your profile wall"] = "[Hubzilla:Notify] %s a publié sur votre profil";
+App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s a publié sur votre profil à %3\$s";
+App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s a publié sur [zrl=%3\$s]votre profil[/zrl]";
+App::$strings["[Hubzilla:Notify] %s tagged you"] = "[Hubzilla:Notify] %s vous a étiqueté";
+App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, vous avez été étiqueté sur %3\$s par %2\$s";
+App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]vous a étiqueté[/zrl].";
+App::$strings["[Hubzilla:Notify] %1\$s poked you"] = "[Hubzilla:Notify] %1\$s vous a tapoté";
+App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s vous a tapoté sur %3\$s";
+App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]vous a tapoté[/zrl].";
+App::$strings["[Hubzilla:Notify] %s tagged your post"] = "[Hubzilla:Notify] %s a étiqueté votre publication";
+App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s a étiqueté votre publication sur %3\$s";
+App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s a étiqueté [zrl=%3\$s]votre publication[/zrl]";
+App::$strings["[Hubzilla:Notify] Introduction received"] = "[Hubzilla:Notify] Nouvelle présentation";
+App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, vous avez reçu une demande de contact de '%2\$s' sur %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, vous avez reçu [zrl=%2\$s]une demande de contact[/zrl] de %3\$s.";
+App::$strings["You may visit their profile at %s"] = "Vous pouvez visiter leur profil sur %s";
+App::$strings["Please visit %s to approve or reject the connection request."] = "Merci de visiter %s avant d'approuver (ou non) cette demande de contact.";
+App::$strings["[Hubzilla:Notify] Friend suggestion received"] = "[Hubzilla:Notify] Nouvel(le) ami(e) suggéré(e)";
+App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, vous avez reçu une suggestion d'ami(e) de '%2\$s' à %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, avez reçu %3\$s comme [zrl=%2\$s]une suggestion d'ami(e)[/zrl] de %4\$s.";
+App::$strings["Name:"] = "Nom&nbsp;:";
+App::$strings["Photo:"] = "Photo&nbsp;:";
+App::$strings["Please visit %s to approve or reject the suggestion."] = "Merci de visiter %s pour donner suite (ou non) à cette suggestion.";
+App::$strings["[Hubzilla:Notify]"] = "[Hubzilla:Notify]";
+App::$strings["created a new post"] = "a publié un nouveau message";
+App::$strings["commented on %s's post"] = "a commenté la publication de %s";
+App::$strings["Private Message"] = "Message Privé";
+App::$strings["Select"] = "Sélectionner";
+App::$strings["Save to Folder"] = "Enregistrer dans le dossier";
+App::$strings["I will attend"] = "Je participerai";
+App::$strings["I will not attend"] = "Je ne participerai pas";
+App::$strings["I might attend"] = "Je participerai peut-être";
+App::$strings["I agree"] = "Je suis d'accord";
+App::$strings["I disagree"] = "Je ne suis pas d'accord";
+App::$strings["I abstain"] = "Je m'abstiens";
+App::$strings["Add Star"] = "Mettre en avant (étoile)";
+App::$strings["Remove Star"] = "Ne plus mettre en avant";
+App::$strings["Toggle Star Status"] = "(Dés)activer l'étoile";
+App::$strings["starred"] = "mis en avant";
+App::$strings["Message signature validated"] = "Signature du message validée";
+App::$strings["Message signature incorrect"] = "Signature du message incorrecte";
+App::$strings["Add Tag"] = "Ajouter une étiquette";
+App::$strings["like"] = "aiment";
+App::$strings["dislike"] = "n'aiment pas";
+App::$strings["Share This"] = "Partager";
+App::$strings["share"] = "partager";
+App::$strings["Delivery Report"] = "Rapport de distribution";
+App::$strings["%d comment"] = array(
+ 0 => "%d commentaire",
+ 1 => "%d commentaires",
+);
+App::$strings["View %s's profile - %s"] = "Voir le profil de %s - %s";
+App::$strings["to"] = "à";
+App::$strings["via"] = "via";
+App::$strings["Wall-to-Wall"] = "Mur-à-mur";
+App::$strings["via Wall-To-Wall:"] = "par Mur-à-mur&nbsp;:";
+App::$strings["from %s"] = "de %s";
+App::$strings["last edited: %s"] = "dernière modification&nbsp;: %s";
+App::$strings["Expires: %s"] = "Expire&nbsp;: %s";
+App::$strings["Save Bookmarks"] = "Enregistrer les favoris";
+App::$strings["Add to Calendar"] = "Ajouter au Calendrier";
+App::$strings["Mark all seen"] = "Tout marquer comme vu";
+App::$strings["[+] show all"] = "[+] voir tous";
+App::$strings["Bold"] = "Gras";
+App::$strings["Italic"] = "Italique";
+App::$strings["Underline"] = "Souligné";
+App::$strings["Quote"] = "Citation";
+App::$strings["Code"] = "Code";
+App::$strings["Image"] = "Image";
+App::$strings["Insert Link"] = "Insérer un lien";
+App::$strings["Video"] = "Vidéo";
+App::$strings["No username found in import file."] = "Aucun nom d'utilisateur dans le fichier d'import.";
+App::$strings["Unable to create a unique channel address. Import failed."] = "Impossible de créer une adresse de canal unique. Echec de l'import.";
+App::$strings["Cannot locate DNS info for database server '%s'"] = "Impossible de trouver les infos DNS du serveur de BDD '%s'";
+App::$strings["Categories"] = "Catégories";
+App::$strings["Tags"] = "Étiquettes";
+App::$strings["Keywords"] = "Mots-clefs";
+App::$strings["have"] = "ont";
+App::$strings["has"] = "a";
+App::$strings["want"] = "veulent";
+App::$strings["wants"] = "veut";
+App::$strings["likes"] = "aime";
+App::$strings["dislikes"] = "n'aime pas";
+App::$strings["l F d, Y \\@ g:i A"] = "l d F Y \\à G\\hi";
+App::$strings["Starts:"] = "Début&nbsp;:";
+App::$strings["Finishes:"] = "Fin&nbsp;:";
+App::$strings["This event has been added to your calendar."] = "Cet évènement a été ajouté dans votre calendrier.";
+App::$strings["Not specified"] = "Non spécifié";
+App::$strings["Needs Action"] = "Besoin d'une action";
+App::$strings["Completed"] = "Terminé";
+App::$strings["In Process"] = "En cours";
+App::$strings["Cancelled"] = "Annulé";
+App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "L'import a échoué. Un canal existe déjà avec ce nom";
+App::$strings["Channel clone failed. Import failed."] = "Echec du clonage du canal. Echec de l'impot.";
+App::$strings["(Unknown)"] = "(Inconnu)";
+App::$strings["Visible to anybody on the internet."] = "Visible pour tout le monde sur internet.";
+App::$strings["Visible to you only."] = "Visible pour vous seulement.";
+App::$strings["Visible to anybody in this network."] = "Visible pour tout le monde sur ce réseau.";
+App::$strings["Visible to anybody authenticated."] = "Visible aux utilisateurs authentifiés.";
+App::$strings["Visible to anybody on %s."] = "Visible pour tous sur %s.";
+App::$strings["Visible to all connections."] = "Visible pour tous les contacts.";
+App::$strings["Visible to approved connections."] = "Visible aux contacts approuvés.";
+App::$strings["Visible to specific connections."] = "Visible pour certains contacts.";
+App::$strings["Privacy group is empty."] = "Groupe d'accès vide.";
+App::$strings["Privacy group: %s"] = "Groupe d'accès&nbsp;: %s";
+App::$strings["Connection not found."] = "Contact non trouvé.";
+App::$strings["profile photo"] = "photo de profil";
+App::$strings["No recipient provided."] = "Pas de destinataire.";
+App::$strings["[no subject]"] = "[sans objet]";
+App::$strings["Unable to determine sender."] = "Impossible de déterminer l'émetteur.";
+App::$strings["Stored post could not be verified."] = "Le message stocké n'a pas pu être vérifié.";
+App::$strings["prev"] = "préc.";
+App::$strings["first"] = "premier";
+App::$strings["last"] = "dernier";
+App::$strings["next"] = "Suivant";
+App::$strings["older"] = "plus ancien";
+App::$strings["newer"] = "plus récent";
+App::$strings["No connections"] = "Pas de relations.";
+App::$strings["View all %s connections"] = "Voir les %s contacts";
+App::$strings["poke"] = "tapoter";
+App::$strings["poked"] = "a tapoté";
+App::$strings["ping"] = "ping";
+App::$strings["pinged"] = "pingé";
+App::$strings["prod"] = "encourager";
+App::$strings["prodded"] = "encouragé";
+App::$strings["slap"] = "giffler";
+App::$strings["slapped"] = "gifflé(e)";
+App::$strings["finger"] = "pointer";
+App::$strings["fingered"] = "pointé";
+App::$strings["rebuff"] = "rejetter";
+App::$strings["rebuffed"] = "rejeté";
+App::$strings["happy"] = "heureux";
+App::$strings["sad"] = "triste";
+App::$strings["mellow"] = "mélancolique";
+App::$strings["tired"] = "fatigué";
+App::$strings["perky"] = "impertinent";
+App::$strings["angry"] = "en colère";
+App::$strings["stupefied"] = "stupéfait";
+App::$strings["puzzled"] = "perplexe";
+App::$strings["interested"] = "intéressé";
+App::$strings["bitter"] = "amer";
+App::$strings["cheerful"] = "plein d'entrain";
+App::$strings["alive"] = "vivant";
+App::$strings["annoyed"] = "agaçé";
+App::$strings["anxious"] = "anxieux";
+App::$strings["cranky"] = "énervé";
+App::$strings["disturbed"] = "perturbé";
+App::$strings["frustrated"] = "frustré";
+App::$strings["depressed"] = "déprimé";
+App::$strings["motivated"] = "motivé";
+App::$strings["relaxed"] = "détendu";
+App::$strings["surprised"] = "surpris";
+App::$strings["Monday"] = "Lundi";
+App::$strings["Tuesday"] = "Mardi";
+App::$strings["Wednesday"] = "Mercredi";
+App::$strings["Thursday"] = "Jeudi";
+App::$strings["Friday"] = "Vendredi";
+App::$strings["Saturday"] = "Samedi";
+App::$strings["Sunday"] = "Dimanche";
+App::$strings["January"] = "Janvier";
+App::$strings["February"] = "Février";
+App::$strings["March"] = "Mars";
+App::$strings["April"] = "Avril";
+App::$strings["May"] = "Mai";
+App::$strings["June"] = "Juin";
+App::$strings["July"] = "Juillet";
+App::$strings["August"] = "Août";
+App::$strings["September"] = "Septembre";
+App::$strings["October"] = "Octobre";
+App::$strings["November"] = "Novembre";
+App::$strings["December"] = "Décembre";
+App::$strings["Unknown Attachment"] = "Pièce jointe inconnue";
+App::$strings["unknown"] = "Inconnu";
+App::$strings["remove category"] = "supprimer la catégorie";
+App::$strings["remove from file"] = "retirer du fichier";
+App::$strings["default"] = "défaut";
+App::$strings["Page layout"] = "Mise en page";
+App::$strings["You can create your own with the layouts tool"] = "Créez les vôtres avec les outils de mise en page";
+App::$strings["Page content type"] = "Type de contenu de la page";
+App::$strings["Select an alternate language"] = "Choisir une langue alternative";
+App::$strings["activity"] = "activité";
+App::$strings["Design Tools"] = "Outils de conception";
+App::$strings["Pages"] = "Pages";
+App::$strings["System"] = "Système";
+App::$strings["New App"] = "";
+App::$strings["Suggestions"] = "Suggestions";
+App::$strings["See more..."] = "Voir plus...";
+App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Vous avez %1$.0f sur %2$.0f contacts autorisés.";
+App::$strings["Add New Connection"] = "Ajouter un nouveau contact";
+App::$strings["Enter channel address"] = "Saisissez l'adresse du canal";
+App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Exemples&nbsp;: pierre@exemple.com, https://exemple.com/sophie";
+App::$strings["Notes"] = "Notes";
+App::$strings["Remove term"] = "Retirer le terme";
+App::$strings["Saved Searches"] = "Recherches sauvegardées";
+App::$strings["add"] = "ajouter";
+App::$strings["Saved Folders"] = "Dossiers sauvegardés";
+App::$strings["Everything"] = "Tout";
+App::$strings["Archives"] = "Archives";
+App::$strings["Refresh"] = "Actualiser";
+App::$strings["Account settings"] = "Paramètres du compte";
+App::$strings["Channel settings"] = "Paramètres du canal";
+App::$strings["Additional features"] = "Fonctionnalités supplémentaires";
+App::$strings["Feature/Addon settings"] = "Paramètres des extensions/greffons";
+App::$strings["Display settings"] = "Paramètres d'affichage";
+App::$strings["Manage locations"] = "";
+App::$strings["Export channel"] = "Exporter le canal";
+App::$strings["Connected apps"] = "Applications connectées";
+App::$strings["Premium Channel Settings"] = "Paramètres de canal VIP";
+App::$strings["Private Mail Menu"] = "Menu des messages privés";
+App::$strings["Combined View"] = "Vue combinée";
+App::$strings["Inbox"] = "Boîte de réception";
+App::$strings["Outbox"] = "Boîte d'envoi";
+App::$strings["New Message"] = "Nouveau message";
+App::$strings["Conversations"] = "Conversations";
+App::$strings["Received Messages"] = "Messages reçus";
+App::$strings["Sent Messages"] = "Messages envoyés";
+App::$strings["No messages."] = "Pas de message.";
+App::$strings["Delete conversation"] = "Supprimer la conversation";
+App::$strings["Events Menu"] = "Menu Evènements";
+App::$strings["Day View"] = "Vue Jour";
+App::$strings["Week View"] = "Vue Semaine";
+App::$strings["Month View"] = "Vue Mois";
+App::$strings["Events Tools"] = "Outils Evènements";
+App::$strings["Export Calendar"] = "Exporter le calendrier";
+App::$strings["Import Calendar"] = "Importer un calendrier";
+App::$strings["Chatrooms"] = "Salons de clavardage";
+App::$strings["Overview"] = "";
+App::$strings["Chat Members"] = "";
+App::$strings["Bookmarked Chatrooms"] = "Salons favoris";
+App::$strings["Suggested Chatrooms"] = "Salons suggérés";
+App::$strings["photo/image"] = "photo/image";
+App::$strings["Click to show more"] = "Cliquer pour voir plus";
+App::$strings["Rating Tools"] = "Outils d'évaluation";
+App::$strings["Rate Me"] = "M'évaluer";
+App::$strings["View Ratings"] = "Voir mes évaluations";
+App::$strings["Forums"] = "Membres du forum";
+App::$strings["Tasks"] = "Tâches";
+App::$strings["Documentation"] = "Documentation";
+App::$strings["Project/Site Information"] = "Information sur le site/projet";
+App::$strings["For Members"] = "Pour les membres";
+App::$strings["For Administrators"] = "Pour les administrateurs";
+App::$strings["For Developers"] = "Pour les développeurs";
+App::$strings["Member registrations waiting for confirmation"] = "";
+App::$strings["Inspect queue"] = "Analyser la file d'attente";
+App::$strings["DB updates"] = "Mises à jour BDD";
+App::$strings["Admin"] = "Administrateur";
+App::$strings["Plugin Features"] = "Fonctionnalités des greffons";
+App::$strings["Channel is blocked on this site."] = "Ce canal est bloqué sur ce site.";
+App::$strings["Channel location missing."] = "Emplacement du canal introuvable.";
+App::$strings["Response from remote channel was incomplete."] = "La réponse du canal distant était incomplète.";
+App::$strings["Channel was deleted and no longer exists."] = "Le canal a été supprimé et n'existe plus.";
+App::$strings["Protocol disabled."] = "Protocole désactivé.";
+App::$strings["Channel discovery failed."] = "La tentative d'accéder au canal a échoué.";
+App::$strings["Cannot connect to yourself."] = "Ne peut pas se connecter à vous.";
+App::$strings["%1\$s's bookmarks"] = "Favoris de %1\$s";
+App::$strings["Public Timeline"] = "Fil public";
+App::$strings["Image/photo"] = "Image/photo";
+App::$strings["Encrypted content"] = "Contenu chiffré";
+App::$strings["Install %s element: "] = "Installer %s élément";
+App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Ce message contient un élément installable %s, mais vous n'avez pas l'autorisation de l'installer sur ce site.";
+App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s a écrit %2\$s qui suit %3\$s";
+App::$strings["Click to open/close"] = "Cliquer pour ouvrir/fermer";
+App::$strings["spoiler"] = "";
+App::$strings["Different viewers will see this text differently"] = "Ce texte aura un rendu différent en fonction des utilisateurs";
+App::$strings["$1 wrote:"] = "$1 a écrit&nbsp;:";
+App::$strings["Directory Options"] = "Options d'annuaire";
+App::$strings["Safe Mode"] = "Mode sûr";
+App::$strings["Public Forums Only"] = "Les forums publics uniquement";
+App::$strings["This Website Only"] = "Ce site uniquement";
+App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Le formulaire n'est plus sécurisé, probablement parce qu'il est ouvert depuis trop longtemps (plus de 3 heures).";
+App::$strings["Logout"] = "Déconnexion";
+App::$strings["End this session"] = "Mettre fin à la session";
+App::$strings["Home"] = "Mon canal";
+App::$strings["Your posts and conversations"] = "Vos publications et conversations";
+App::$strings["Your profile page"] = "Votre profil";
+App::$strings["Manage/Edit profiles"] = "Gérer/modifier les profils";
+App::$strings["Edit Profile"] = "Éditeur de profil";
+App::$strings["Edit your profile"] = "Modifier votre profil";
+App::$strings["Your photos"] = "Vos photos";
+App::$strings["Your files"] = "Vos fichiers";
+App::$strings["Your chatrooms"] = "Vos salons";
+App::$strings["Bookmarks"] = "Favoris";
+App::$strings["Your bookmarks"] = "Vos favoris";
+App::$strings["Your webpages"] = "Vos pages web";
+App::$strings["Sign in"] = "Connexion";
+App::$strings["%s - click to logout"] = "%s - cliquer ici pour déconnecter";
+App::$strings["Remote authentication"] = "Authentification distante";
+App::$strings["Click to authenticate to your home hub"] = "S'authentifier auprès de votre hub principal";
+App::$strings["Home Page"] = "Page d'accueil";
+App::$strings["Create an account"] = "Créer un compte";
+App::$strings["Help and documentation"] = "Aide et documentation";
+App::$strings["Applications, utilities, links, games"] = "Applications, utilitaires, liens, jeux";
+App::$strings["Search site @name, #tag, ?docs, content"] = "Recherche @nom, #tag, contenu";
+App::$strings["Channel Directory"] = "Annuaire des canaux";
+App::$strings["Your grid"] = "Votre réseau";
+App::$strings["Mark all grid notifications seen"] = "Marquer toutes les notifications du réseau comme vues";
+App::$strings["Channel home"] = "Mon canal";
+App::$strings["Mark all channel notifications seen"] = "Marquer toutes les notifications du canal comme vues";
+App::$strings["Notices"] = "Notifications";
+App::$strings["Notifications"] = "Notifications";
+App::$strings["See all notifications"] = "Voir toutes les notifications";
+App::$strings["Private mail"] = "Messages privés";
+App::$strings["See all private messages"] = "Voir tous les messages privés";
+App::$strings["Mark all private messages seen"] = "Marquer tous les messages privés comme vus";
+App::$strings["Event Calendar"] = "Calendrier des événements";
+App::$strings["See all events"] = "Voir tous les événements";
+App::$strings["Mark all events seen"] = "Marquer tous les événements comme vus";
+App::$strings["Manage Your Channels"] = "Gérer vos canaux";
+App::$strings["Account/Channel Settings"] = "Paramètres du Compte/Canal";
+App::$strings["Site Setup and Configuration"] = "Configuration du site";
+App::$strings["Loading..."] = "Chargement...";
+App::$strings["@name, #tag, ?doc, content"] = "@nom, #étiquette, ?doc, contenu";
+App::$strings["Please wait..."] = "Merci de patienter...";
+App::$strings["New window"] = "Nouvelle fenêtre";
+App::$strings["Open the selected location in a different window or browser tab"] = "Ouvrir l'emplacement dans une fenêtre ou un onglet différent";
+App::$strings["User '%s' deleted"] = "Utilisateur '%s' supprimé";
+App::$strings["%d invitation available"] = array(
+ 0 => "%d invitation disponible",
+ 1 => "%d invitations disponibles",
+);
+App::$strings["Find Channels"] = "Trouver des canaux";
+App::$strings["Enter name or interest"] = "Saisir nom ou centre d'intérêt";
+App::$strings["Connect/Follow"] = "Ajouter/Suivre";
+App::$strings["Examples: Robert Morgenstein, Fishing"] = "Exemples: Guillaume Martin, Course à pieds";
+App::$strings["Random Profile"] = "Un profil au hasard";
+App::$strings["Invite Friends"] = "Inviter des amis";
+App::$strings["Advanced example: name=fred and country=iceland"] = "Exemple avancé&nbsp;: name=fred and country=iceland";
+App::$strings["%d connection in common"] = array(
+ 0 => "%d contact en commun",
+ 1 => "%d contacts en commun",
+);
+App::$strings["show more"] = "montrer plus";
+App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s ajoute %2\$s à ses contacts";
+App::$strings["%1\$s poked %2\$s"] = "%1\$s a tapoté %2\$s";
+App::$strings["View %s's profile @ %s"] = "Voir le profil de %s @ %s";
+App::$strings["Categories:"] = "Catégories&nbsp;:";
+App::$strings["Filed under:"] = "Classé sous&nbsp;:";
+App::$strings["View in context"] = "Voir en contexte";
+App::$strings["remove"] = "supprimer";
+App::$strings["Delete Selected Items"] = "Supprimer les éléments selectionnés";
+App::$strings["View Source"] = "Voir source";
+App::$strings["Follow Thread"] = "Suivre la discussion";
+App::$strings["Unfollow Thread"] = "Ne plus suivre la discussion";
+App::$strings["Activity/Posts"] = "Activité/Publications";
+App::$strings["Edit Connection"] = "Modifier le contact";
+App::$strings["Message"] = "Message";
+App::$strings["%s likes this."] = "%s aime ça.";
+App::$strings["%s doesn't like this."] = "%s n'aime pas ça.";
+App::$strings["<span %1\$s>%2\$d people</span> like this."] = array(
+ 0 => "<span %1\$s>%2\$d personne</span> aime ceci.",
+ 1 => "<span %1\$s>%2\$d personnes</span> aiment ceci.",
+);
+App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
+ 0 => "<span %1\$s>%2\$d personne</span> n'aime pas ça.",
+ 1 => "<span %1\$s>%2\$d personnes</span> n'aiment pas ça.",
+);
+App::$strings["and"] = "et";
+App::$strings[", and %d other people"] = array(
+ 0 => ", et %d autre personne",
+ 1 => ", et %d autres personnes",
+);
+App::$strings["%s like this."] = "%s aime ça.";
+App::$strings["%s don't like this."] = "%s n'aime pas ça.";
+App::$strings["Set your location"] = "Spécifier votre emplacement géographique";
+App::$strings["Clear browser location"] = "Supprimer l'emplacement géographique du navigateur";
+App::$strings["Tag term:"] = "Étiquette&nbsp;:";
+App::$strings["Where are you right now?"] = "Où êtes-vous en ce moment&nbsp;?";
+App::$strings["Page link name"] = "Nom du lien vers la page";
+App::$strings["Post as"] = "Publier en tant que";
+App::$strings["Toggle voting"] = "(Dés)activer le vote";
+App::$strings["Categories (optional, comma-separated list)"] = "Catégories (facultatives, séparées par des virgules)";
+App::$strings["Set publish date"] = "Définir la date de publication";
+App::$strings["OK"] = "OK";
+App::$strings["Discover"] = "À découvrir";
+App::$strings["Imported public streams"] = "Flux publics importés";
+App::$strings["Commented Order"] = "Par date de commentaire";
+App::$strings["Sort by Comment Date"] = "Trier par date de dernier commentaire";
+App::$strings["Posted Order"] = "Par date de publication";
+App::$strings["Sort by Post Date"] = "Trier par date de publication";
+App::$strings["Posts that mention or involve you"] = "Publications qui vous mentionnent ou vous concernent d'une manière ou d'une autre";
+App::$strings["Activity Stream - by date"] = "Flux d'activité - par date";
+App::$strings["Starred"] = "Mis en avant (étoiles)";
+App::$strings["Favourite Posts"] = "Publications préférées";
+App::$strings["Spam"] = "Indésirable";
+App::$strings["Posts flagged as SPAM"] = "Publications marquées comme indésirables";
+App::$strings["Status Messages and Posts"] = "Messages d'état et contributions";
+App::$strings["About"] = "À propos";
+App::$strings["Profile Details"] = "Détails du profil";
+App::$strings["Photo Albums"] = "Albums photo";
+App::$strings["Files and Storage"] = "Fichiers et Stockage";
+App::$strings["Saved Bookmarks"] = "Favoris sauvegardés";
+App::$strings["Manage Webpages"] = "Gérer les pages web";
+App::$strings["__ctx:noun__ Attending"] = array(
+ 0 => "Participe",
+ 1 => "Participent",
+);
+App::$strings["__ctx:noun__ Not Attending"] = array(
+ 0 => "Ne participe pas",
+ 1 => "Ne participent pas",
+);
+App::$strings["__ctx:noun__ Undecided"] = array(
+ 0 => "Indécis(e)",
+ 1 => "Indécis(es)",
+);
+App::$strings["__ctx:noun__ Agree"] = array(
+ 0 => "D'accord",
+ 1 => "D'accord",
+);
+App::$strings["__ctx:noun__ Disagree"] = array(
+ 0 => "Pas d'accord",
+ 1 => "Pas d'accord",
+);
+App::$strings["__ctx:noun__ Abstain"] = array(
+ 0 => "S'abstient",
+ 1 => "S'abstiennent",
+);
+App::$strings["Frequently"] = "Fréquemment";
+App::$strings["Hourly"] = "Toutes les heures";
+App::$strings["Twice daily"] = "Deux fois par jour";
+App::$strings["Daily"] = "Chaque jour";
+App::$strings["Weekly"] = "Chaque semaine";
+App::$strings["Monthly"] = "Chaque mois";
+App::$strings["Currently Male"] = "Actuellement homme";
+App::$strings["Currently Female"] = "Actuellement femme";
+App::$strings["Mostly Male"] = "Surtout homme";
+App::$strings["Mostly Female"] = "Surtout femme";
+App::$strings["Transgender"] = "Transgenre";
+App::$strings["Intersex"] = "Intersexuel";
+App::$strings["Transsexual"] = "Transsexuel";
+App::$strings["Hermaphrodite"] = "Hermaphrodite";
+App::$strings["Neuter"] = "Neutre";
+App::$strings["Non-specific"] = "Non spécifique";
+App::$strings["Other"] = "Autre";
+App::$strings["Undecided"] = "Indécis";
+App::$strings["Males"] = "Hommes";
+App::$strings["Females"] = "Femmes";
+App::$strings["Gay"] = "Gay";
+App::$strings["Lesbian"] = "Lesbienne";
+App::$strings["No Preference"] = "Sans préférence";
+App::$strings["Bisexual"] = "Bisexuel";
+App::$strings["Autosexual"] = "Autosexuel";
+App::$strings["Abstinent"] = "Abstinent";
+App::$strings["Virgin"] = "Vierge";
+App::$strings["Deviant"] = "Déviant";
+App::$strings["Fetish"] = "Fétichiste";
+App::$strings["Oodles"] = "Une floppée";
+App::$strings["Nonsexual"] = "Non-sexuel";
+App::$strings["Single"] = "Célibataire";
+App::$strings["Lonely"] = "Solitaire";
+App::$strings["Available"] = "Disponible";
+App::$strings["Unavailable"] = "Indisponible";
+App::$strings["Has crush"] = "A un béguin";
+App::$strings["Infatuated"] = "Amoureux transi";
+App::$strings["Dating"] = "Sort avec quelqu'un";
+App::$strings["Unfaithful"] = "Infidèle";
+App::$strings["Sex Addict"] = "Accro au sexe";
+App::$strings["Friends/Benefits"] = "Amis avec bénéfices";
+App::$strings["Casual"] = "Sans engagement";
+App::$strings["Engaged"] = "Fiancé(e)";
+App::$strings["Married"] = "Marié(e)";
+App::$strings["Imaginarily married"] = "Marié(e) dans ses rêves";
+App::$strings["Partners"] = "Partenaires";
+App::$strings["Cohabiting"] = "En cohabitation";
+App::$strings["Common law"] = "Conjoints de fait";
+App::$strings["Happy"] = "Heureux";
+App::$strings["Not looking"] = "Pas en recherche";
+App::$strings["Swinger"] = "Echangiste";
+App::$strings["Betrayed"] = "Trahi(e)";
+App::$strings["Separated"] = "Séparé(e)";
+App::$strings["Unstable"] = "Instable";
+App::$strings["Divorced"] = "Divorcé(e)";
+App::$strings["Imaginarily divorced"] = "Divorcé(e) dans ses rêves";
+App::$strings["Widowed"] = "Veuf/veuve";
+App::$strings["Uncertain"] = "Incertain";
+App::$strings["It's complicated"] = "C'est compliqué";
+App::$strings["Don't care"] = "S'en fiche";
+App::$strings["Ask me"] = "Me demander";
+App::$strings["Visible to your default audience"] = "Visible pour vos contacts seulement";
+App::$strings["Only me"] = "";
+App::$strings["Public"] = "Public";
+App::$strings["Anybody in the \$Projectname network"] = "";
+App::$strings["Any account on %s"] = "";
+App::$strings["Any of my connections"] = "";
+App::$strings["Only connections I specifically allow"] = "";
+App::$strings["Anybody authenticated (could include visitors from other networks)"] = "";
+App::$strings["Any connections including those who haven't yet been approved"] = "";
+App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "";
+App::$strings["This is your default setting for who can view your default channel profile"] = "";
+App::$strings["This is your default setting for who can view your connections"] = "";
+App::$strings["This is your default setting for who can view your file storage and photos"] = "";
+App::$strings["This is your default setting for the audience of your webpages"] = "";
+App::$strings["Not a valid email address"] = "Ce n'est pas une adresse de courriel valide";
+App::$strings["Your email domain is not among those allowed on this site"] = "Votre domaine de courriel ne fait pas partie de ceux autorisés par ce site";
+App::$strings["Your email address is already registered at this site."] = "Votre adresse de courriel est déjà inscrite sur ce site.";
+App::$strings["An invitation is required."] = "Une invitation est requise.";
+App::$strings["Invitation could not be verified."] = "Votre invitation n'a pas pu être vérifiée.";
+App::$strings["Please enter the required information."] = "Merci d'entrer les informations requises.";
+App::$strings["Failed to store account information."] = "Impossible de stocker les informations liées au compte.";
+App::$strings["Registration confirmation for %s"] = "Confirmation de l'inscription pour %s";
+App::$strings["Registration request at %s"] = "Demande d'inscription sur %s";
+App::$strings["Administrator"] = "Administrateur";
+App::$strings["your registration password"] = "votre mot de passe d'inscription";
+App::$strings["Registration details for %s"] = "Détails de l'inscription pour %s";
+App::$strings["Account approved."] = "Compte approuvé.";
+App::$strings["Registration revoked for %s"] = "Inscription révoquée pour %s";
+App::$strings["Account verified. Please login."] = "Compte vérifié. Veuillez vous connecter.";
+App::$strings["Click here to upgrade."] = "Cliquez ici pour mettre à jour.";
+App::$strings["This action exceeds the limits set by your subscription plan."] = "Cette action outrepasserait les limites prévues par votre forfait.";
+App::$strings["This action is not available under your subscription plan."] = "Cette action n'est pas disponible avec votre forfait.";
+App::$strings["Item was not found."] = "Élément introuvable.";
+App::$strings["No source file."] = "Pas de fichier source.";
+App::$strings["Cannot locate file to replace"] = "Impossible de trouver le fichier à remplacer.";
+App::$strings["Cannot locate file to revise/update"] = "Impossible de trouver le fichier à corriger/mettre à jour";
+App::$strings["File exceeds size limit of %d"] = "Le fichier dépasse la taille limite de %d";
+App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Vous avez atteint votre limite de %1$.0f méga-octets autorisés pour le stockage des pièces-jointes.";
+App::$strings["File upload failed. Possible system limit or action terminated."] = "Envoi du fichier impossible. Limite système ou action avortée.";
+App::$strings["Stored file could not be verified. Upload failed."] = "Le fichier stocké n'a pu être vérifié. Echec de l'envoi.";
+App::$strings["Path not available."] = "Chemin non disponible.";
+App::$strings["Empty pathname"] = "Chemin vide";
+App::$strings["duplicate filename or path"] = "doublon de chemin ou de fichier";
+App::$strings["Path not found."] = "Chemin introuvable.";
+App::$strings["mkdir failed."] = "mkdir a échoué.";
+App::$strings["database storage failed."] = "l'écriture dans la base de données a échoué.";
+App::$strings["Empty path"] = "Chemin vide";
+App::$strings["Unable to obtain identity information from database"] = "Impossible d'obtenir les données d'identité depuis la base de données";
+App::$strings["Empty name"] = "Nom vide";
+App::$strings["Name too long"] = "Nom trop long";
+App::$strings["No account identifier"] = "Pas d'identifiant de compte";
+App::$strings["Nickname is required."] = "Un surnom est requis.";
+App::$strings["Reserved nickname. Please choose another."] = "Surnom réservé. Merci d'en choisir un autre.";
+App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Le surnom contient des caractères interdits ou est déjà pris sur ce site.";
+App::$strings["Unable to retrieve created identity"] = "Impossible de récupérer l'identité créée";
+App::$strings["Default Profile"] = "Profil par défaut";
+App::$strings["Requested channel is not available."] = "Canal demandé non disponible.";
+App::$strings["Create New Profile"] = "Créer un nouveau profil";
+App::$strings["Visible to everybody"] = "Visible de tous";
+App::$strings["Gender:"] = "Sexe&nbsp;:";
+App::$strings["Status:"] = "État&nbsp;:";
+App::$strings["Homepage:"] = "Site Internet&nbsp;:";
+App::$strings["Online Now"] = "Connecté";
+App::$strings["Like this channel"] = "J'aime ce canal";
+App::$strings["j F, Y"] = "j F, Y";
+App::$strings["j F"] = "j F";
+App::$strings["Birthday:"] = "Date de naissance&nbsp;:";
+App::$strings["for %1\$d %2\$s"] = "depuis %1\$d %2\$s";
+App::$strings["Sexual Preference:"] = "Orientation sexuelle&nbsp;:";
+App::$strings["Tags:"] = "Étiquettes&nbsp;:";
+App::$strings["Political Views:"] = "Opinions politiques&nbsp;:";
+App::$strings["Religion:"] = "Religion&nbsp;:";
+App::$strings["Hobbies/Interests:"] = "Occupations/Centres d'intérêt&nbsp;:";
+App::$strings["Likes:"] = "Aime&nbsp;:";
+App::$strings["Dislikes:"] = "N'aime pas&nbsp;:";
+App::$strings["Contact information and Social Networks:"] = "Coordonnées et réseaux sociaux&nbsp;:";
+App::$strings["My other channels:"] = "Mes autres canaux&nbsp;:";
+App::$strings["Musical interests:"] = "Goûts musicaux&nbsp;:";
+App::$strings["Books, literature:"] = "Lectures, goûts littéraires&nbsp;:";
+App::$strings["Television:"] = "Télévision&nbsp;:";
+App::$strings["Film/dance/culture/entertainment:"] = "Cinéma/danse/culture/divertissement&nsbp;:";
+App::$strings["Love/Romance:"] = "Vie sentimentale/amoureuse&nbsp;:";
+App::$strings["Work/employment:"] = "Travail/Occupation&nbsp;";
+App::$strings["School/education:"] = "Études&nbsp;";
+App::$strings["Like this thing"] = "J'aime ceci";
+App::$strings["General Features"] = "Fonctionnalités générales";
+App::$strings["Content Expiration"] = "Expiration du contenu";
+App::$strings["Remove posts/comments and/or private messages at a future time"] = "Supprimer les contributions/commentaires et/ou messages privés plus tard";
+App::$strings["Multiple Profiles"] = "Profils multiples";
+App::$strings["Ability to create multiple profiles"] = "Possibilité de créer plusieurs profils";
+App::$strings["Advanced Profiles"] = "Profils Avancés";
+App::$strings["Additional profile sections and selections"] = "Sections et sélections supplémentaires du profil";
+App::$strings["Profile Import/Export"] = "Importer/Exporter le profil";
+App::$strings["Save and load profile details across sites/channels"] = "Sauvegarder et charger les détails d'un profil entre sites/canaux";
+App::$strings["Web Pages"] = "Pages web";
+App::$strings["Provide managed web pages on your channel"] = "Fournir des pages web, sous votre contrôle, sur votre canal";
+App::$strings["Hide Rating"] = "Masquer l'évaluation";
+App::$strings["Hide the rating buttons on your channel and profile pages. Note: People can still rate you somewhere else."] = "Masquer les boutons d'évaluation sur les pages de votre canal et de votre profil. NB : vous pourrez toujours être évalué(e) ailleurs.";
+App::$strings["Private Notes"] = "Notes privées";
+App::$strings["Enables a tool to store notes and reminders (note: not encrypted)"] = "Active un outil pour stocker des notes et des rappels (note&nbsp;:non chiffré)";
+App::$strings["Navigation Channel Select"] = "Sélection du canal par la navigation";
+App::$strings["Change channels directly from within the navigation dropdown menu"] = "Changez de canal directement depuis le menu de navigation déroulant";
+App::$strings["Photo Location"] = "Site de prise de vue";
+App::$strings["If location data is available on uploaded photos, link this to a map."] = "Si des informations géographiques sont présentes dans les images téléversées, les lier à une carte.";
+App::$strings["Access Controlled Chatrooms"] = "";
+App::$strings["Provide chatrooms and chat services with access control."] = "";
+App::$strings["Smart Birthdays"] = "Anniversaires intelligents";
+App::$strings["Make birthday events timezone aware in case your friends are scattered across the planet."] = "Adapter les anniversaires aux fuseaux horaires, utile pour vos amis sur d'autres continents.";
+App::$strings["Expert Mode"] = "Mode expert";
+App::$strings["Enable Expert Mode to provide advanced configuration options"] = "Activer le mode expert pour accéder aux options avancées";
+App::$strings["Premium Channel"] = "Canal VIP";
+App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Vous permet d'appliquer des règles et restrictions aux contacts de votre canal";
+App::$strings["Post Composition Features"] = "Fonctionnalités de composition";
+App::$strings["Large Photos"] = "Grandes photos";
+App::$strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Inclure de grands aperçus (1024px) dans les messages. Si désactivé, inclure de petits aperçus (640px).";
+App::$strings["Automatically import channel content from other channels or feeds"] = "Importe automatiquement le contenus d'autres canaux ou flux dans le canal actif";
+App::$strings["Even More Encryption"] = "Encore plus de chiffrement";
+App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Permettre le chiffrement optionnel du contenu de bout en bout au moyen d'un secret partagé";
+App::$strings["Enable Voting Tools"] = "Activer les outils de vote";
+App::$strings["Provide a class of post which others can vote on"] = "Fournit un type de publication sur lequel les utilisateurs peuvent voter";
+App::$strings["Delayed Posting"] = "Publication plus tard";
+App::$strings["Allow posts to be published at a later date"] = "Permettre de publier des messages à une date programmée";
+App::$strings["Suppress Duplicate Posts/Comments"] = "Supprimer les publications/commentaires en doublon";
+App::$strings["Prevent posts with identical content to be published with less than two minutes in between submissions."] = "Empêcher des messages aux contenus identiques d'être publiés à moins de deux minutes d'intervalle";
+App::$strings["Network and Stream Filtering"] = "Filtrage du réseau et des flux";
+App::$strings["Search by Date"] = "Chercher par date";
+App::$strings["Ability to select posts by date ranges"] = "Pouvoir choisir des publications par date";
+App::$strings["Privacy Groups"] = "Groupes d'accès";
+App::$strings["Enable management and selection of privacy groups"] = "Active la gestion et la sélection des groupes d'accès";
+App::$strings["Save search terms for re-use"] = "Sauvegarder des termes de recherche pour utilisation ultérieure";
+App::$strings["Network Personal Tab"] = "Onglet \"Me concernant\"";
+App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Activer un onglet affichant seulement les publications du réseau sur lesquelles vous êtes intervenu";
+App::$strings["Network New Tab"] = "Onglet \"nouveautés réseau\"";
+App::$strings["Enable tab to display all new Network activity"] = "Activer un onglet présentant toute l'activité récente sur le réseau";
+App::$strings["Affinity Tool"] = "Gérer l'affinité";
+App::$strings["Filter stream activity by depth of relationships"] = "Filtrer le flux d'activité en fonction de la profondeur des relations";
+App::$strings["Connection Filtering"] = "Filtrage des contacts";
+App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filtrer les publications entrantes de mes contacts sur la base de mots-clefs";
+App::$strings["Show channel suggestions"] = "Montrer les suggestions de canaux";
+App::$strings["Post/Comment Tools"] = "Gérer les publications/commentaires";
+App::$strings["Community Tagging"] = "Etiquetage communautaire";
+App::$strings["Ability to tag existing posts"] = "Permettre de marquer les publications existantes";
+App::$strings["Post Categories"] = "Catégoriser les publications";
+App::$strings["Add categories to your posts"] = "Ajouter des catégories à vos publications";
+App::$strings["Emoji Reactions"] = "";
+App::$strings["Add emoji reaction ability to posts"] = "";
+App::$strings["Ability to file posts under folders"] = "Permettre de classer les publications dans des dossiers";
+App::$strings["Dislike Posts"] = "\"Ne pas aimer\" les publications";
+App::$strings["Ability to dislike posts/comments"] = "Possibilité de \"ne pas aimer\" les publications/commentaires";
+App::$strings["Star Posts"] = "Pouvoir mettre en avant les publications";
+App::$strings["Ability to mark special posts with a star indicator"] = "Pouvoir marquer certaines publications d'une étoile";
+App::$strings["Tag Cloud"] = "Nuage de tags";
+App::$strings["Provide a personal tag cloud on your channel page"] = "Afficher un nuage de vos tags sur votre canal";
+App::$strings["Embedded content"] = "Contenu imbriqué";
+App::$strings["Embedding disabled"] = "Imbrication désactivée";
+App::$strings["Who can see this?"] = "";
+App::$strings["Custom selection"] = "";
+App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "";
+App::$strings["Show"] = "Montrer";
+App::$strings["Don't show"] = "Cacher";
+App::$strings["Other networks and post services"] = "Autres réseaux et services de messagerie";
+App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "";
+App::$strings["Logged out."] = "Deconnecté.";
+App::$strings["Failed authentication"] = "Échec de l'authentification";
+App::$strings["Birthday"] = "Anniversaire";
+App::$strings["Age: "] = "Age&nbsp;:";
+App::$strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-JJ ou MM-JJ";
+App::$strings["never"] = "jamais";
+App::$strings["less than a second ago"] = "à l'instant";
+App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "il y a %1\$d %2\$s";
+App::$strings["__ctx:relative_date__ year"] = array(
+ 0 => "an",
+ 1 => "ans",
+);
+App::$strings["__ctx:relative_date__ month"] = array(
+ 0 => "mois",
+ 1 => "mois",
+);
+App::$strings["__ctx:relative_date__ week"] = array(
+ 0 => "semaine",
+ 1 => "semaines",
+);
+App::$strings["__ctx:relative_date__ day"] = array(
+ 0 => "jour",
+ 1 => "jours",
+);
+App::$strings["__ctx:relative_date__ hour"] = array(
+ 0 => "heure",
+ 1 => "heures",
+);
+App::$strings["__ctx:relative_date__ minute"] = array(
+ 0 => "minute",
+ 1 => "minutes",
+);
+App::$strings["__ctx:relative_date__ second"] = array(
+ 0 => "seconde",
+ 1 => "secondes",
+);
+App::$strings["%1\$s's birthday"] = "Anniversaire de %1\$s";
+App::$strings["Happy Birthday %1\$s"] = "Joyeux Anniversaire %1\$s";
+App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un groupe supprimé portant ce nom a été ressuscité. Les permissions liées aux éléments existants <strong>peuvent</strong> s'appliquer au groupe et aux membres futurs. Si ce n'est pas ce que vous attendiez, merci de créer un autre groupe avec un nom différent.";
+App::$strings["Add new connections to this privacy group"] = "Ajouter de nouveaux contacts à ce groupe d'accès";
+App::$strings["edit"] = "modifier";
+App::$strings["Edit group"] = "Modifier le groupe";
+App::$strings["Add privacy group"] = "Ajouter un groupe d'accès";
+App::$strings["Channels not in any privacy group"] = "Canaux n'étant dans aucun groupe d'accès";
+App::$strings["Delete this item?"] = "Supprimer cet élément?";
+App::$strings["[-] show less"] = "[-] montrer moins";
+App::$strings["[+] expand"] = "[+] déplier";
+App::$strings["[-] collapse"] = "[-] replier";
+App::$strings["Password too short"] = "Mot de passe trop court";
+App::$strings["Passwords do not match"] = "Les mots de passe ne correspondent pas";
+App::$strings["everybody"] = "tout le monde";
+App::$strings["Secret Passphrase"] = "Phrase de passe secrète";
+App::$strings["Passphrase hint"] = "Indice pour la phrase de passe";
+App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Note&nbsp;: Les permissions ont changées, mais n'ont pas encore été sauvées.";
+App::$strings["close all"] = "fermer tout";
+App::$strings["Nothing new here"] = "Aucun nouveau contenu trouvé";
+App::$strings["Rate This Channel (this is public)"] = "Evaluer ce canal (publiquement)";
+App::$strings["Describe (optional)"] = "Description (facultative)";
+App::$strings["Please enter a link URL"] = "Merci d'insérer une URL";
+App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Changements en attente. Voulez-vous vraiment quitter cette page?";
+App::$strings["timeago.prefixAgo"] = "timeago.prefixAgo";
+App::$strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
+App::$strings["ago"] = "auparavant";
+App::$strings["from now"] = "de maintenant";
+App::$strings["less than a minute"] = "moins d'une minute";
+App::$strings["about a minute"] = "environ une minute";
+App::$strings["%d minutes"] = "%d minutes";
+App::$strings["about an hour"] = "environ une heure";
+App::$strings["about %d hours"] = "environ %d heures";
+App::$strings["a day"] = "un jour";
+App::$strings["%d days"] = "%d jours";
+App::$strings["about a month"] = "environ un mois";
+App::$strings["%d months"] = "%d mois";
+App::$strings["about a year"] = "environ un an";
+App::$strings["%d years"] = "%d années";
+App::$strings[" "] = "";
+App::$strings["timeago.numbers"] = "timeago.numbers";
+App::$strings["__ctx:long__ May"] = "Mai";
+App::$strings["Jan"] = "Jan";
+App::$strings["Feb"] = "Fev";
+App::$strings["Mar"] = "Mar";
+App::$strings["Apr"] = "Avr";
+App::$strings["__ctx:short__ May"] = "Mai";
+App::$strings["Jun"] = "Jun";
+App::$strings["Jul"] = "Jul";
+App::$strings["Aug"] = "Aou";
+App::$strings["Sep"] = "Sep";
+App::$strings["Oct"] = "Oct";
+App::$strings["Nov"] = "Nov";
+App::$strings["Dec"] = "Dec";
+App::$strings["Sun"] = "Dim";
+App::$strings["Mon"] = "Lun";
+App::$strings["Tue"] = "Mar";
+App::$strings["Wed"] = "Mer";
+App::$strings["Thu"] = "Jeu";
+App::$strings["Fri"] = "Ven";
+App::$strings["Sat"] = "Sam";
+App::$strings["__ctx:calendar__ today"] = "aujourd'hui";
+App::$strings["__ctx:calendar__ month"] = "mois";
+App::$strings["__ctx:calendar__ week"] = "semaine";
+App::$strings["__ctx:calendar__ day"] = "jour";
+App::$strings["__ctx:calendar__ All day"] = "Toute la journée";
+App::$strings["view full size"] = "voir en taille réelle";
+App::$strings["No Subject"] = "Pas d'objet";
+App::$strings["Friendica"] = "Friendica";
+App::$strings["OStatus"] = "OStatus";
+App::$strings["GNU-Social"] = "";
+App::$strings["RSS/Atom"] = "RSS/Atom";
+App::$strings["Diaspora"] = "Diaspora";
+App::$strings["Facebook"] = "Facebook";
+App::$strings["Zot"] = "Zot";
+App::$strings["LinkedIn"] = "Linkedin";
+App::$strings["XMPP/IM"] = "XMPP/IM";
+App::$strings["MySpace"] = "MySpace";
+App::$strings["Image exceeds website size limit of %lu bytes"] = "L'image dépasse la taille limite de %lu octets";
+App::$strings["Image file is empty."] = "L'image est vide.";
+App::$strings["Photo storage failed."] = "Le stockage de l'image a échoué.";
+App::$strings["a new photo"] = "une nouvelle photo";
+App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s a publié %2\$s pour %3\$s";
+App::$strings["Upload New Photos"] = "Ajouter des photos";
+App::$strings["Invalid data packet"] = "Paquet de données invalide";
+App::$strings["Unable to verify channel signature"] = "Impossible de vérifier la signature du canal";
+App::$strings["Unable to verify site signature for %s"] = "Impossible de vérifier la signature de site pour %s";
+App::$strings["invalid target signature"] = "signature de la cible invalide";
+App::$strings["New Page"] = "Nouvelle page";
+App::$strings["Title"] = "Titre";
+App::$strings["Can view my normal stream and posts"] = "Peut voir les publications ordinaires sur mon canal.";
+App::$strings["Can view my default channel profile"] = "Peut voir le profil du canal par défaut.";
+App::$strings["Can view my connections"] = "Peut voir mes contacts";
+App::$strings["Can view my file storage and photos"] = "Peut voir mes fichiers et photos";
+App::$strings["Can view my webpages"] = "Peut voir mes pages web";
+App::$strings["Can send me their channel stream and posts"] = "Peuvent m'envoyer leur flux et les publications de leur canal";
+App::$strings["Can post on my channel page (\"wall\")"] = "Peuvent poster sur la page de mon canal (\"mur\")";
+App::$strings["Can comment on or like my posts"] = "Peuvent commenter et/ou aimer mes publications";
+App::$strings["Can send me private mail messages"] = "Peuvent m'envoyer des messages privés";
+App::$strings["Can like/dislike stuff"] = "Peuvent aimer/ne pas aimer";
+App::$strings["Profiles and things other than posts/comments"] = "Profils et autres excluant les publications/commentaires.";
+App::$strings["Can forward to all my channel contacts via post @mentions"] = "Peut faire suivre à tous les contacts de mon canal via \"@mention\"";
+App::$strings["Advanced - useful for creating group forum channels"] = "Avancé - utile pour les canaux de type \"forum/groupe\"";
+App::$strings["Can chat with me (when available)"] = "Peut discuter avec moi (quand disponibie)";
+App::$strings["Can write to my file storage and photos"] = "Peut charger des fichiers et des photos dans mon canal";
+App::$strings["Can edit my webpages"] = "Peut modifier mes pages web";
+App::$strings["Can source my public posts in derived channels"] = "Peut rediriger mes publications publiques vers des canaux dérivés";
+App::$strings["Somewhat advanced - very useful in open communities"] = "Plutôt avancé - très utile dans les communautés ouvertes";
+App::$strings["Can administer my channel resources"] = "Peut administrer les ressources de mon canal";
+App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Très avancé. Ne pas toucher, sauf si vous savez ce que vous faîtes";
+App::$strings["Social Networking"] = "Réseau social";
+App::$strings["Social - Mostly Public"] = "Social - surtout public";
+App::$strings["Social - Restricted"] = "Social - restreint";
+App::$strings["Social - Private"] = "Social - privé";
+App::$strings["Community Forum"] = "Forum communautaire";
+App::$strings["Forum - Mostly Public"] = "Forum - surtout public";
+App::$strings["Forum - Restricted"] = "Forum - restreint";
+App::$strings["Forum - Private"] = "Forum - privé";
+App::$strings["Feed Republish"] = "Republication de flux";
+App::$strings["Feed - Mostly Public"] = "Flux - surtout public";
+App::$strings["Feed - Restricted"] = "Flux - restreint";
+App::$strings["Special Purpose"] = "Utilisation spécifique";
+App::$strings["Special - Celebrity/Soapbox"] = "Spécial - célébrité/promotion";
+App::$strings["Special - Group Repository"] = "Spécial - dépôt partagé";
+App::$strings["Custom/Expert Mode"] = "Mode expert/spécifique";
+App::$strings[" and "] = "et";
+App::$strings["public profile"] = "profil public";
+App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s a changé %2\$s en &ldquo;%3\$s&rdquo;";
+App::$strings["Visit %1\$s's %2\$s"] = "Visiter %2\$s de %1\$s";
+App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s a mis à jour %2\$s, modifiant %3\$s.";
+App::$strings["Attachments:"] = "Pièces jointes&nbsp;:";
+App::$strings["\$Projectname event notification:"] = "Notification d'événement de \$Projectname&nbsp;:";
App::$strings["Focus (Hubzilla default)"] = "Focus (par défaut pour Hubzilla)";
App::$strings["Theme settings"] = "Paramètres du thème";
App::$strings["Select scheme"] = "Définir la palette de couleurs";
@@ -2232,6 +2289,8 @@ App::$strings["Left align page content"] = "Aligner à gauche le contenu de la p
App::$strings["Set minimum opacity of nav bar - to hide it"] = "Définir l'opacité minimum du bandeau de navigation - pour le cacher";
App::$strings["Set size of conversation author photo"] = "Définir la taille de la photo de l'auteur d'une conversation";
App::$strings["Set size of followup author photos"] = "Définir la taille de la photo de l'auteur d'une réponse";
+App::$strings["__ctx:opensearch__ Search %1\$s (%2\$s)"] = "";
+App::$strings["__ctx:opensearch__ \$Projectname"] = "";
App::$strings["Update %s failed. See error logs."] = "La mise-à-jour %s a échoué. Merci de consulter les journaux d'erreur.";
App::$strings["Update Error at %s"] = "Erreur de mise à jour sur %s";
App::$strings["Create an account to access services and applications within the Hubzilla"] = "Créez un compte pour pouvoir accéder aux services et applications de Hubzilla";
diff --git a/view/fr/htconfig.tpl b/view/fr/htconfig.tpl
index 029c472f7..d49448ac2 100644
--- a/view/fr/htconfig.tpl
+++ b/view/fr/htconfig.tpl
@@ -29,7 +29,7 @@ define( 'UNO', {{$uno}} );
// Choisissez votre emplacement géographique. Si vous n'êtes pas certain, utilisez "America/Los_Angeles".
// Vous pourrez le changer plus tard et ce réglage n'affecte que les visiteurs anonymes.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// Quel sera le nom de votre site?
diff --git a/view/fr/messages.po b/view/fr/messages.po
index c54cd5f2c..62c6a80d4 100644
--- a/view/fr/messages.po
+++ b/view/fr/messages.po
@@ -1,746 +1,1434 @@
-# Hubzilla Project
-# Copyright (C) 2012-2014 the Hubzilla Project
+# Red Matrix Project
+# Copyright (C) 2012-2014 the Red Matrix Project
# This file is distributed under the same license as the Red package.
#
# Translators:
-# Olivier <olivier+transifex@migeot.org>, 2013-2014
-# Webmaster_Hubzilla.ca <webmaster@hubzilla.ca>, 2014
-# Webmaster_Hubzilla.ca <webmaster@hubzilla.ca>, 2014
+# kris1373 <aktosc@gmail.com>, 2015
+# Chez Zot <chezzot@chezzot.red>, 2015
+# Laurent Pelecq <lpelecq+github@circoise.eu>, 2016
+# Olivier <olivier+transifex@migeot.org>, 2013-2016
+# Webmaster_Redmatrix.ca <webmaster@redmatrix.ca>, 2014
+# Webmaster_Redmatrix.ca <webmaster@redmatrix.ca>, 2014
msgid ""
msgstr ""
-"Project-Id-Version: Hubzilla\n"
+"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-08-15 00:03-0700\n"
-"PO-Revision-Date: 2014-08-17 00:08+0000\n"
-"Last-Translator: Webmaster_Hubzilla.ca <webmaster@hubzilla.ca>\n"
-"Language-Team: French (http://www.transifex.com/projects/p/red-matrix/language/fr/)\n"
+"POT-Creation-Date: 2016-05-20 00:01-0700\n"
+"PO-Revision-Date: 2016-04-22 19:16+0000\n"
+"Last-Translator: Laurent Pelecq <lpelecq+github@circoise.eu>\n"
+"Language-Team: French (http://www.transifex.com/Friendica/red-matrix/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: ../../include/dba/dba_driver.php:50
+#: ../../include/Import/import_diaspora.php:17
+msgid "No username found in import file."
+msgstr "Aucun nom d'utilisateur dans le fichier d'import."
+
+#: ../../include/Import/import_diaspora.php:42 ../../mod/import.php:156
+msgid "Unable to create a unique channel address. Import failed."
+msgstr "Impossible de créer une adresse de canal unique. Échec de l'import."
+
+#: ../../include/Import/import_diaspora.php:140 ../../mod/import.php:562
+msgid "Import completed."
+msgstr "L'import est terminé."
+
+#: ../../include/RedDAV/RedBrowser.php:107
+#: ../../include/RedDAV/RedBrowser.php:265
+msgid "parent"
+msgstr "retour"
+
+#: ../../include/RedDAV/RedBrowser.php:131 ../../include/text.php:2561
+msgid "Collection"
+msgstr "Collection"
+
+#: ../../include/RedDAV/RedBrowser.php:134
+msgid "Principal"
+msgstr "Principal"
+
+#: ../../include/RedDAV/RedBrowser.php:137
+msgid "Addressbook"
+msgstr "Carnet d'adresse"
+
+#: ../../include/RedDAV/RedBrowser.php:140
+msgid "Calendar"
+msgstr "Calendrier"
+
+#: ../../include/RedDAV/RedBrowser.php:143
+msgid "Schedule Inbox"
+msgstr "Calendrier - Message entrants"
+
+#: ../../include/RedDAV/RedBrowser.php:146
+msgid "Schedule Outbox"
+msgstr "Calendrier - Message sortants"
+
+#: ../../include/RedDAV/RedBrowser.php:164 ../../include/apps.php:336
+#: ../../include/apps.php:387 ../../include/conversation.php:1030
+#: ../../mod/photos.php:693 ../../mod/photos.php:1131
+msgid "Unknown"
+msgstr "Inconnu"
+
+#: ../../include/RedDAV/RedBrowser.php:227
+#, php-format
+msgid "%1$s used"
+msgstr "%1$s utilisé"
+
+#: ../../include/RedDAV/RedBrowser.php:232
+#, php-format
+msgid "%1$s used of %2$s (%3$s&#37;)"
+msgstr "%1$s utilisé de %2$s (%3$s&#37;)"
+
+#: ../../include/RedDAV/RedBrowser.php:251 ../../include/nav.php:98
+#: ../../include/apps.php:135 ../../include/conversation.php:1620
+#: ../../mod/fbrowser.php:114
+msgid "Files"
+msgstr "Fichiers"
+
+#: ../../include/RedDAV/RedBrowser.php:253
+msgid "Total"
+msgstr "Total"
+
+#: ../../include/RedDAV/RedBrowser.php:255
+msgid "Shared"
+msgstr "Partagé"
+
+#: ../../include/RedDAV/RedBrowser.php:256
+#: ../../include/RedDAV/RedBrowser.php:303 ../../mod/blocks.php:152
+#: ../../mod/layouts.php:175 ../../mod/menu.php:112
+#: ../../mod/new_channel.php:121 ../../mod/webpages.php:180
+msgid "Create"
+msgstr "Créer"
+
+#: ../../include/RedDAV/RedBrowser.php:257
+#: ../../include/RedDAV/RedBrowser.php:305 ../../mod/photos.php:718
+#: ../../mod/photos.php:1248 ../../mod/profile_photo.php:362
+msgid "Upload"
+msgstr "Envoyer"
+
+#: ../../include/RedDAV/RedBrowser.php:261 ../../mod/admin.php:994
+#: ../../mod/settings.php:590 ../../mod/settings.php:616
+#: ../../mod/sharedwithme.php:95
+msgid "Name"
+msgstr "Nom"
+
+#: ../../include/RedDAV/RedBrowser.php:262
+msgid "Type"
+msgstr "Type"
+
+#: ../../include/RedDAV/RedBrowser.php:263 ../../mod/sharedwithme.php:97
+msgid "Size"
+msgstr "Taille"
+
+#: ../../include/RedDAV/RedBrowser.php:264 ../../mod/sharedwithme.php:98
+msgid "Last Modified"
+msgstr "Modifié le"
+
+#: ../../include/RedDAV/RedBrowser.php:266 ../../include/ItemObject.php:100
+#: ../../include/apps.php:254 ../../include/menu.php:108
+#: ../../include/page_widgets.php:8 ../../include/page_widgets.php:36
+#: ../../mod/blocks.php:153 ../../mod/connections.php:242
+#: ../../mod/connections.php:255 ../../mod/connections.php:274
+#: ../../mod/editblock.php:134 ../../mod/editlayout.php:133
+#: ../../mod/editpost.php:106 ../../mod/editwebpage.php:178
+#: ../../mod/settings.php:650 ../../mod/layouts.php:183 ../../mod/menu.php:106
+#: ../../mod/thing.php:255 ../../mod/webpages.php:181
+msgid "Edit"
+msgstr "Éditer"
+
+#: ../../include/RedDAV/RedBrowser.php:267 ../../include/ItemObject.php:120
+#: ../../include/apps.php:255 ../../include/conversation.php:671
+#: ../../mod/admin.php:826 ../../mod/admin.php:988 ../../mod/photos.php:1062
+#: ../../mod/blocks.php:155 ../../mod/connedit.php:563
+#: ../../mod/editblock.php:180 ../../mod/editlayout.php:178
+#: ../../mod/editwebpage.php:225 ../../mod/group.php:176
+#: ../../mod/settings.php:651 ../../mod/thing.php:256
+#: ../../mod/webpages.php:183
+msgid "Delete"
+msgstr "Supprimer"
+
+#: ../../include/RedDAV/RedBrowser.php:302
+msgid "Create new folder"
+msgstr "Nouveau dossier"
+
+#: ../../include/RedDAV/RedBrowser.php:304
+msgid "Upload file"
+msgstr "Téléverser un fichier"
+
+#: ../../include/dba/dba_driver.php:141
#, php-format
msgid "Cannot locate DNS info for database server '%s'"
-msgstr "Impossible de trouver les infos DNS du serveur de base de données '%s'"
+msgstr "Impossible de trouver les infos DNS du serveur de BD '%s'"
-#: ../../include/photo/photo_driver.php:653 ../../include/photos.php:51
-#: ../../mod/profile_photo.php:142 ../../mod/profile_photo.php:301
-#: ../../mod/profile_photo.php:421 ../../mod/photos.php:91
-#: ../../mod/photos.php:659 ../../mod/photos.php:681
+#: ../../include/photo/photo_driver.php:703 ../../mod/photos.php:92
+#: ../../mod/photos.php:637 ../../mod/profile_photo.php:143
+#: ../../mod/profile_photo.php:302 ../../mod/profile_photo.php:424
msgid "Profile Photos"
msgstr "Photos du profil"
-#: ../../include/diaspora.php:610
-#, php-format
-msgid "%1$s is now friends with %2$s"
-msgstr "%1$s et %2$s sont maintenant amis."
+#: ../../include/nav.php:87 ../../include/nav.php:120 ../../boot.php:1550
+msgid "Logout"
+msgstr "Déconnexion"
-#: ../../include/diaspora.php:693
-msgid "Sharing notification from Diaspora network"
-msgstr "Partage de vos notifications du réseau Diaspora"
+#: ../../include/nav.php:87 ../../include/nav.php:120
+msgid "End this session"
+msgstr "Mettre fin à la session"
-#: ../../include/diaspora.php:1910 ../../include/text.php:1732
-#: ../../include/conversation.php:120 ../../mod/subthread.php:72
-#: ../../mod/subthread.php:174 ../../mod/tagger.php:45 ../../mod/like.php:294
-msgid "photo"
-msgstr "photo"
+#: ../../include/nav.php:90 ../../include/nav.php:151
+msgid "Home"
+msgstr "Canal"
-#: ../../include/diaspora.php:1910 ../../include/text.php:1738
-#: ../../include/conversation.php:148 ../../mod/subthread.php:72
-#: ../../mod/subthread.php:174 ../../mod/tagger.php:53 ../../mod/like.php:294
-msgid "status"
-msgstr "le statut"
+#: ../../include/nav.php:90
+msgid "Your posts and conversations"
+msgstr "Vos publications et conversations"
-#: ../../include/diaspora.php:1926 ../../include/conversation.php:164
-#: ../../mod/like.php:331
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s aime %3$s de %2$s"
+#: ../../include/nav.php:91 ../../include/conversation.php:953
+#: ../../mod/connedit.php:510
+msgid "View Profile"
+msgstr "Profil"
-#: ../../include/diaspora.php:2303
-msgid "Attachments:"
-msgstr "Pièces jointes:"
+#: ../../include/nav.php:91
+msgid "Your profile page"
+msgstr "Votre profil"
-#: ../../include/oembed.php:163
-msgid "Embedded content"
-msgstr "Contenu imbriqué"
+#: ../../include/nav.php:93
+msgid "Edit Profiles"
+msgstr "Éditer les profils"
-#: ../../include/oembed.php:172
-msgid "Embedding disabled"
-msgstr "Imbrication désactivée"
+#: ../../include/nav.php:93
+msgid "Manage/Edit profiles"
+msgstr "Gérer/éditer les profils"
-#: ../../include/notify.php:23
-msgid "created a new post"
-msgstr "a publié"
+#: ../../include/nav.php:95 ../../include/identity.php:979
+msgid "Edit Profile"
+msgstr "Éditeur de profil"
-#: ../../include/notify.php:24
-#, php-format
-msgid "commented on %s's post"
-msgstr "a commenté la publication de %s"
+#: ../../include/nav.php:95
+msgid "Edit your profile"
+msgstr "Éditer votre profil"
-#: ../../include/apps.php:123
-msgid "Site Admin"
-msgstr "Administrateur"
+#: ../../include/nav.php:97 ../../include/apps.php:139
+#: ../../include/conversation.php:1611 ../../mod/fbrowser.php:25
+msgid "Photos"
+msgstr "Photos"
-#: ../../include/apps.php:124 ../../include/nav.php:100
-#: ../../include/conversation.php:1543
+#: ../../include/nav.php:97
+msgid "Your photos"
+msgstr "Vos photos"
+
+#: ../../include/nav.php:98
+msgid "Your files"
+msgstr "Vos fichiers"
+
+#: ../../include/nav.php:103 ../../include/apps.php:146
+msgid "Chat"
+msgstr "Clavardage"
+
+#: ../../include/nav.php:103
+msgid "Your chatrooms"
+msgstr "Vos salons"
+
+#: ../../include/nav.php:109 ../../include/apps.php:129
+#: ../../include/conversation.php:1646
msgid "Bookmarks"
msgstr "Favoris"
-#: ../../include/apps.php:125
-msgid "Address Book"
-msgstr "Carnet d'adresses"
+#: ../../include/nav.php:109
+msgid "Your bookmarks"
+msgstr "Vos favoris"
+
+#: ../../include/nav.php:113 ../../include/apps.php:136
+#: ../../include/conversation.php:1656 ../../mod/webpages.php:178
+msgid "Webpages"
+msgstr "Pages web"
+
+#: ../../include/nav.php:113
+msgid "Your webpages"
+msgstr "Vos pages web"
-#: ../../include/apps.php:126 ../../include/nav.php:106 ../../boot.php:1498
+#: ../../include/nav.php:117 ../../include/apps.php:131 ../../boot.php:1551
msgid "Login"
msgstr "Connexion"
-#: ../../include/apps.php:127 ../../include/nav.php:196
-msgid "Channel Select"
-msgstr "Changer de canal"
+#: ../../include/nav.php:117
+msgid "Sign in"
+msgstr "Connexion"
+
+#: ../../include/nav.php:134
+#, php-format
+msgid "%s - click to logout"
+msgstr "%s - cliquer ici pour déconnecter"
+
+#: ../../include/nav.php:137
+msgid "Remote authentication"
+msgstr "Authentification distante"
+
+#: ../../include/nav.php:137
+msgid "Click to authenticate to your home hub"
+msgstr "S'authentifier auprès de votre hub"
+
+#: ../../include/nav.php:151
+msgid "Home Page"
+msgstr "Page d'accueil"
+
+#: ../../include/nav.php:155 ../../mod/register.php:224 ../../boot.php:1527
+msgid "Register"
+msgstr "S'inscrire"
+
+#: ../../include/nav.php:155
+msgid "Create an account"
+msgstr "Créer un compte"
-#: ../../include/apps.php:128 ../../include/nav.php:170
+#: ../../include/nav.php:160 ../../include/apps.php:142 ../../mod/help.php:67
+#: ../../mod/help.php:72 ../../mod/layouts.php:176
+msgid "Help"
+msgstr "Aide"
+
+#: ../../include/nav.php:160
+msgid "Help and documentation"
+msgstr "Aide et documentation"
+
+#: ../../include/nav.php:163 ../../include/widgets.php:91
+#: ../../mod/apps.php:36
+msgid "Apps"
+msgstr "Applications"
+
+#: ../../include/nav.php:163
+msgid "Applications, utilities, links, games"
+msgstr "Applications, utilitaires, liens, jeux"
+
+#: ../../include/nav.php:165 ../../include/text.php:914
+#: ../../include/text.php:926 ../../include/apps.php:147
+#: ../../mod/search.php:38
+msgid "Search"
+msgstr "Recherche"
+
+#: ../../include/nav.php:165
+msgid "Search site content"
+msgstr "Rechercher parmi le contenu du site"
+
+#: ../../include/nav.php:168 ../../include/apps.php:141
+msgid "Directory"
+msgstr "Annuaire"
+
+#: ../../include/nav.php:168
+msgid "Channel Directory"
+msgstr "Annuaire des canaux"
+
+#: ../../include/nav.php:180 ../../include/apps.php:133
msgid "Matrix"
msgstr "Matrice"
-#: ../../include/apps.php:129 ../../include/nav.php:198
-#: ../../include/widgets.php:514 ../../mod/admin.php:987
-#: ../../mod/admin.php:1192
-msgid "Settings"
-msgstr "Réglages"
-
-#: ../../include/apps.php:130 ../../include/nav.php:92
-#: ../../include/reddav.php:1280 ../../include/conversation.php:1521
-#: ../../mod/fbrowser.php:114
-msgid "Files"
-msgstr "Fichiers"
+#: ../../include/nav.php:180
+msgid "Your matrix"
+msgstr "Votre matrice"
-#: ../../include/apps.php:131 ../../include/nav.php:102
-#: ../../include/conversation.php:1554 ../../mod/webpages.php:79
-msgid "Webpages"
-msgstr "Pages web"
+#: ../../include/nav.php:181
+msgid "Mark all matrix notifications seen"
+msgstr "Marquer toutes les notifications de la matrice comme vues"
-#: ../../include/apps.php:132 ../../include/nav.php:173
+#: ../../include/nav.php:183 ../../include/apps.php:137
msgid "Channel Home"
msgstr "Mon canal"
-#: ../../include/apps.php:133 ../../include/identity.php:973
-#: ../../include/identity.php:1091 ../../mod/profperm.php:112
-msgid "Profile"
-msgstr "Profil"
+#: ../../include/nav.php:183
+msgid "Channel home"
+msgstr "Mon canal"
-#: ../../include/apps.php:134 ../../include/nav.php:91
-#: ../../include/conversation.php:1512 ../../mod/fbrowser.php:25
-msgid "Photos"
-msgstr "Photos"
+#: ../../include/nav.php:184
+msgid "Mark all channel notifications seen"
+msgstr "Marquer toutes les notifications du canal comme vues"
-#: ../../include/apps.php:135 ../../include/nav.php:192
-#: ../../mod/events.php:396
-msgid "Events"
-msgstr "Événements"
+#: ../../include/nav.php:187 ../../mod/connections.php:267
+msgid "Connections"
+msgstr "Relations"
-#: ../../include/apps.php:136 ../../include/nav.php:159
-#: ../../mod/directory.php:226
-msgid "Directory"
-msgstr "Annuaire"
+#: ../../include/nav.php:190
+msgid "Notices"
+msgstr "Notifications"
-#: ../../include/apps.php:137 ../../include/nav.php:151 ../../mod/help.php:60
-#: ../../mod/help.php:65
-msgid "Help"
-msgstr "Aide"
+#: ../../include/nav.php:190
+msgid "Notifications"
+msgstr "Notifications"
+
+#: ../../include/nav.php:191
+msgid "See all notifications"
+msgstr "Voir toutes les notifications"
-#: ../../include/apps.php:138 ../../include/nav.php:184
+#: ../../include/nav.php:192 ../../mod/notifications.php:99
+msgid "Mark all system notifications seen"
+msgstr "Marquer toutes les notifications système comme vues"
+
+#: ../../include/nav.php:194 ../../include/apps.php:143
msgid "Mail"
msgstr "Messages"
-#: ../../include/apps.php:139 ../../mod/mood.php:131
-msgid "Mood"
-msgstr "Humeur"
+#: ../../include/nav.php:194
+msgid "Private mail"
+msgstr "Messages privés"
-#: ../../include/apps.php:140 ../../include/conversation.php:945
-msgid "Poke"
-msgstr "Cogner"
+#: ../../include/nav.php:195
+msgid "See all private messages"
+msgstr "Voir tous les messages privés"
-#: ../../include/apps.php:141 ../../include/nav.php:97
-msgid "Chat"
-msgstr "Clavardage"
+#: ../../include/nav.php:196
+msgid "Mark all private messages seen"
+msgstr "Marquer tous les messages privés comme vus"
-#: ../../include/apps.php:142 ../../include/text.php:815
-#: ../../include/text.php:829 ../../include/nav.php:156
-#: ../../mod/search.php:30
-msgid "Search"
-msgstr "Recherche"
+#: ../../include/nav.php:197
+msgid "Inbox"
+msgstr "Boîte de réception"
-#: ../../include/apps.php:143
-msgid "Probe"
-msgstr "Sonder"
+#: ../../include/nav.php:198
+msgid "Outbox"
+msgstr "Boîte d'envoi"
-#: ../../include/apps.php:144
-msgid "Suggest"
-msgstr "Suggérer"
+#: ../../include/nav.php:199 ../../include/widgets.php:577
+msgid "New Message"
+msgstr "Nouveau message"
-#: ../../include/apps.php:145
-msgid "Random Channel"
-msgstr "Un canal au hasard"
+#: ../../include/nav.php:202 ../../include/apps.php:140
+#: ../../mod/events.php:503
+msgid "Events"
+msgstr "Événements"
-#: ../../include/apps.php:146
-msgid "Invite"
-msgstr "Invitation"
+#: ../../include/nav.php:202
+msgid "Event Calendar"
+msgstr "Calendrier des événements"
-#: ../../include/apps.php:147
-msgid "Features"
-msgstr "Fonctionalités"
+#: ../../include/nav.php:203
+msgid "See all events"
+msgstr "Voir tous les événements"
-#: ../../include/apps.php:148
-msgid "Language"
-msgstr "Langue"
+#: ../../include/nav.php:204
+msgid "Mark all events seen"
+msgstr "Marquer tous les événements comme vus"
-#: ../../include/apps.php:149
-msgid "Post"
-msgstr "Envoyer"
+#: ../../include/nav.php:206 ../../include/apps.php:132
+#: ../../mod/manage.php:166
+msgid "Channel Manager"
+msgstr "Gérer les canaux"
-#: ../../include/apps.php:150
-msgid "Profile Photo"
-msgstr "Photo du profil"
+#: ../../include/nav.php:206
+msgid "Manage Your Channels"
+msgstr "Gérer vos canaux"
-#: ../../include/apps.php:239 ../../mod/settings.php:79
-#: ../../mod/settings.php:543
-msgid "Update"
-msgstr "Mise à jour"
+#: ../../include/nav.php:208 ../../include/widgets.php:556
+#: ../../include/apps.php:134 ../../mod/admin.php:1079
+#: ../../mod/admin.php:1279
+msgid "Settings"
+msgstr "Réglages"
-#: ../../include/apps.php:239
-msgid "Install"
-msgstr "Installer"
+#: ../../include/nav.php:208
+msgid "Account/Channel Settings"
+msgstr "Réglages du Compte/Canal"
-#: ../../include/apps.php:244
-msgid "Purchase"
-msgstr "Acheter"
+#: ../../include/nav.php:216 ../../mod/admin.php:120
+msgid "Admin"
+msgstr "Administrateur"
-#: ../../include/apps.php:246 ../../include/page_widgets.php:8
-#: ../../include/page_widgets.php:36 ../../include/reddav.php:1289
-#: ../../include/menu.php:42 ../../include/ItemObject.php:96
-#: ../../mod/settings.php:579 ../../mod/blocks.php:94
-#: ../../mod/connections.php:393 ../../mod/editblock.php:111
-#: ../../mod/editlayout.php:106 ../../mod/editpost.php:112
-#: ../../mod/editwebpage.php:143 ../../mod/thing.php:235
-#: ../../mod/layouts.php:112 ../../mod/menu.php:59 ../../mod/webpages.php:120
-msgid "Edit"
-msgstr "Éditer"
+#: ../../include/nav.php:216
+msgid "Site Setup and Configuration"
+msgstr "Configuration du site"
-#: ../../include/apps.php:247 ../../include/reddav.php:1290
-#: ../../include/conversation.php:635 ../../include/ItemObject.php:108
-#: ../../mod/settings.php:580 ../../mod/connedit.php:440
-#: ../../mod/photos.php:1052 ../../mod/group.php:176 ../../mod/admin.php:767
-#: ../../mod/admin.php:897 ../../mod/thing.php:236
-msgid "Delete"
-msgstr "Supprimer"
+#: ../../include/nav.php:247 ../../include/conversation.php:861
+msgid "Loading..."
+msgstr "Chargement..."
-#: ../../include/apps.php:328 ../../include/apps.php:379
-#: ../../include/reddav.php:1202 ../../mod/connedit.php:476
-msgid "Unknown"
-msgstr "Inconnu"
+#: ../../include/nav.php:252
+msgid "@name, #tag, content"
+msgstr "@nom, #tag, contenu"
+
+#: ../../include/nav.php:253
+msgid "Please wait..."
+msgstr "Merci de patienter..."
+
+#: ../../include/network.php:650
+msgid "view full size"
+msgstr "pleine taille"
-#: ../../include/text.php:321
+#: ../../include/network.php:1600 ../../include/enotify.php:58
+msgid "$Projectname Notification"
+msgstr "Notification de $Projectname"
+
+#: ../../include/network.php:1601 ../../include/diaspora.php:2526
+#: ../../include/diaspora.php:2537 ../../include/enotify.php:59
+#: ../../mod/p.php:46
+msgid "$projectname"
+msgstr "$projectname"
+
+#: ../../include/network.php:1603 ../../include/enotify.php:61
+msgid "Thank You,"
+msgstr "Merci,"
+
+#: ../../include/network.php:1605 ../../include/enotify.php:63
+#, php-format
+msgid "%s Administrator"
+msgstr "l'administrateur de %s"
+
+#: ../../include/network.php:1647 ../../include/account.php:314
+#: ../../include/account.php:341 ../../include/account.php:401
+msgid "Administrator"
+msgstr "Administrateur"
+
+#: ../../include/network.php:1661
+msgid "No Subject"
+msgstr "Pas de sujet"
+
+#: ../../include/text.php:391
msgid "prev"
msgstr "préc."
-#: ../../include/text.php:323
+#: ../../include/text.php:393
msgid "first"
msgstr "premier"
-#: ../../include/text.php:352
+#: ../../include/text.php:422
msgid "last"
msgstr "dernier"
-#: ../../include/text.php:355
+#: ../../include/text.php:425
msgid "next"
msgstr "suiv."
-#: ../../include/text.php:367
+#: ../../include/text.php:435
msgid "older"
msgstr "plus ancien"
-#: ../../include/text.php:369
+#: ../../include/text.php:437
msgid "newer"
msgstr "plus récent"
-#: ../../include/text.php:730
+#: ../../include/text.php:830
msgid "No connections"
msgstr "Sans relations"
-#: ../../include/text.php:743
+#: ../../include/text.php:844
#, php-format
msgid "%d Connection"
msgid_plural "%d Connections"
msgstr[0] "%d relation"
msgstr[1] "%d relations"
-#: ../../include/text.php:756
+#: ../../include/text.php:857 ../../mod/viewconnections.php:104
msgid "View Connections"
msgstr "Voir les relations"
-#: ../../include/text.php:817 ../../include/text.php:831
-#: ../../include/widgets.php:186 ../../mod/rbmark.php:28
-#: ../../mod/rbmark.php:98 ../../mod/filer.php:50
+#: ../../include/text.php:915 ../../include/text.php:927
+#: ../../include/widgets.php:192 ../../mod/admin.php:1457
+#: ../../mod/admin.php:1477 ../../mod/rbmark.php:28 ../../mod/rbmark.php:98
+#: ../../mod/filer.php:50
msgid "Save"
msgstr "Sauver"
-#: ../../include/text.php:897
+#: ../../include/text.php:990
msgid "poke"
-msgstr "cogner"
+msgstr "cogne"
-#: ../../include/text.php:897 ../../include/conversation.php:243
+#: ../../include/text.php:990 ../../include/conversation.php:243
msgid "poked"
-msgstr "a cogné"
+msgstr "C'est fait cogner"
-#: ../../include/text.php:898
+#: ../../include/text.php:991
msgid "ping"
msgstr "solliciter"
-#: ../../include/text.php:898
+#: ../../include/text.php:991
msgid "pinged"
-msgstr "a sollicité"
+msgstr "sollicité"
-#: ../../include/text.php:899
+#: ../../include/text.php:992
msgid "prod"
-msgstr "encourager"
+msgstr "aiguillonner"
-#: ../../include/text.php:899
+#: ../../include/text.php:992
msgid "prodded"
-msgstr "a encouragé"
+msgstr "aiguillonné"
-#: ../../include/text.php:900
+#: ../../include/text.php:993
msgid "slap"
-msgstr "gifler"
+msgstr "giffle"
-#: ../../include/text.php:900
+#: ../../include/text.php:993
msgid "slapped"
-msgstr "a giflé"
+msgstr "gifflé"
-#: ../../include/text.php:901
+#: ../../include/text.php:994
msgid "finger"
msgstr "pointer"
-#: ../../include/text.php:901
+#: ../../include/text.php:994
msgid "fingered"
-msgstr "a pointé"
+msgstr "pointé"
-#: ../../include/text.php:902
+#: ../../include/text.php:995
msgid "rebuff"
-msgstr "rejeter"
+msgstr "rejetter"
-#: ../../include/text.php:902
+#: ../../include/text.php:995
msgid "rebuffed"
-msgstr "a rejeté"
+msgstr "rejetté"
-#: ../../include/text.php:911
+#: ../../include/text.php:1005
msgid "happy"
msgstr "heureux"
-#: ../../include/text.php:912
+#: ../../include/text.php:1006
msgid "sad"
msgstr "triste"
-#: ../../include/text.php:913
+#: ../../include/text.php:1007
msgid "mellow"
msgstr "mélancolique"
-#: ../../include/text.php:914
+#: ../../include/text.php:1008
msgid "tired"
msgstr "fatigué"
-#: ../../include/text.php:915
+#: ../../include/text.php:1009
msgid "perky"
msgstr "impertinent"
-#: ../../include/text.php:916
+#: ../../include/text.php:1010
msgid "angry"
-msgstr "colérique"
+msgstr "colèrique"
-#: ../../include/text.php:917
+#: ../../include/text.php:1011
msgid "stupified"
msgstr "stupéfié"
-#: ../../include/text.php:918
+#: ../../include/text.php:1012
msgid "puzzled"
msgstr "perplexe"
-#: ../../include/text.php:919
+#: ../../include/text.php:1013
msgid "interested"
msgstr "intéressé"
-#: ../../include/text.php:920
+#: ../../include/text.php:1014
msgid "bitter"
msgstr "amer"
-#: ../../include/text.php:921
+#: ../../include/text.php:1015
msgid "cheerful"
-msgstr "joyeux"
+msgstr "entrain"
-#: ../../include/text.php:922
+#: ../../include/text.php:1016
msgid "alive"
msgstr "énergique"
-#: ../../include/text.php:923
+#: ../../include/text.php:1017
msgid "annoyed"
-msgstr "agacé"
+msgstr "agaçé"
-#: ../../include/text.php:924
+#: ../../include/text.php:1018
msgid "anxious"
msgstr "anxieux"
-#: ../../include/text.php:925
+#: ../../include/text.php:1019
msgid "cranky"
msgstr "énervé"
-#: ../../include/text.php:926
+#: ../../include/text.php:1020
msgid "disturbed"
msgstr "perturbé"
-#: ../../include/text.php:927
+#: ../../include/text.php:1021
msgid "frustrated"
msgstr "frustré"
-#: ../../include/text.php:928
+#: ../../include/text.php:1022
msgid "depressed"
msgstr "déprimé"
-#: ../../include/text.php:929
+#: ../../include/text.php:1023
msgid "motivated"
msgstr "motivé"
-#: ../../include/text.php:930
+#: ../../include/text.php:1024
msgid "relaxed"
msgstr "détendu"
-#: ../../include/text.php:931
+#: ../../include/text.php:1025
msgid "surprised"
msgstr "surpris"
-#: ../../include/text.php:1092
+#: ../../include/text.php:1197
msgid "Monday"
msgstr "Lundi"
-#: ../../include/text.php:1092
+#: ../../include/text.php:1197
msgid "Tuesday"
msgstr "Mardi"
-#: ../../include/text.php:1092
+#: ../../include/text.php:1197
msgid "Wednesday"
msgstr "Mercredi"
-#: ../../include/text.php:1092
+#: ../../include/text.php:1197
msgid "Thursday"
msgstr "Jeudi"
-#: ../../include/text.php:1092
+#: ../../include/text.php:1197
msgid "Friday"
msgstr "Vendredi"
-#: ../../include/text.php:1092
+#: ../../include/text.php:1197
msgid "Saturday"
msgstr "Samedi"
-#: ../../include/text.php:1092
+#: ../../include/text.php:1197
msgid "Sunday"
msgstr "Dimanche"
-#: ../../include/text.php:1096
+#: ../../include/text.php:1201
msgid "January"
msgstr "Janvier"
-#: ../../include/text.php:1096
+#: ../../include/text.php:1201
msgid "February"
msgstr "Février"
-#: ../../include/text.php:1096
+#: ../../include/text.php:1201
msgid "March"
msgstr "Mars"
-#: ../../include/text.php:1096
+#: ../../include/text.php:1201
msgid "April"
msgstr "Avril"
-#: ../../include/text.php:1096
+#: ../../include/text.php:1201 ../../mod/uexport.php:58
+#: ../../mod/uexport.php:59
msgid "May"
msgstr "Mai"
-#: ../../include/text.php:1096
+#: ../../include/text.php:1201
msgid "June"
msgstr "Juin"
-#: ../../include/text.php:1096
+#: ../../include/text.php:1201
msgid "July"
msgstr "Juillet"
-#: ../../include/text.php:1096
+#: ../../include/text.php:1201
msgid "August"
msgstr "Août"
-#: ../../include/text.php:1096
+#: ../../include/text.php:1201
msgid "September"
msgstr "Septembre"
-#: ../../include/text.php:1096
+#: ../../include/text.php:1201
msgid "October"
msgstr "Octobre"
-#: ../../include/text.php:1096
+#: ../../include/text.php:1201
msgid "November"
msgstr "Novembre"
-#: ../../include/text.php:1096
+#: ../../include/text.php:1201
msgid "December"
msgstr "Décembre"
-#: ../../include/text.php:1174
+#: ../../include/text.php:1306
msgid "unknown.???"
msgstr "inconnu.???"
-#: ../../include/text.php:1175
+#: ../../include/text.php:1307
msgid "bytes"
msgstr "octets"
-#: ../../include/text.php:1210
+#: ../../include/text.php:1343
msgid "remove category"
msgstr "supprimer la catégorie"
-#: ../../include/text.php:1280
+#: ../../include/text.php:1418
msgid "remove from file"
msgstr "retirer du fichier"
-#: ../../include/text.php:1345 ../../include/text.php:1357
+#: ../../include/text.php:1506 ../../include/text.php:1517
msgid "Click to open/close"
msgstr "Cliquer pour ouvrir/fermer"
-#: ../../include/text.php:1512 ../../mod/events.php:374
+#: ../../include/text.php:1673 ../../mod/events.php:474
msgid "Link to Source"
-msgstr "Lien vers la source"
-
-#: ../../include/text.php:1531
-msgid "Select a page layout: "
-msgstr "Choisir une mise en page&nbsp;:"
+msgstr "Lien vers la Source"
-#: ../../include/text.php:1534 ../../include/text.php:1599
+#: ../../include/text.php:1694 ../../include/text.php:1765
msgid "default"
msgstr "défaut"
-#: ../../include/text.php:1570
-msgid "Page content type: "
-msgstr "Type de contenu&nbsp;:"
+#: ../../include/text.php:1702
+msgid "Page layout"
+msgstr "Mises en page"
+
+#: ../../include/text.php:1702
+msgid "You can create your own with the layouts tool"
+msgstr "Créez les votres avec les outils de mise en page"
+
+#: ../../include/text.php:1743
+msgid "Page content type"
+msgstr "Type de contenu"
-#: ../../include/text.php:1611
+#: ../../include/text.php:1777
msgid "Select an alternate language"
msgstr "Choisir une langue alternative"
-#: ../../include/text.php:1735 ../../include/conversation.php:123
-#: ../../mod/tagger.php:49
+#: ../../include/text.php:1896 ../../include/conversation.php:120
+#: ../../include/diaspora.php:2123 ../../mod/like.php:349
+#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
+#: ../../mod/tagger.php:43
+msgid "photo"
+msgstr "photo"
+
+#: ../../include/text.php:1899 ../../include/conversation.php:123
+#: ../../mod/like.php:351 ../../mod/tagger.php:47
msgid "event"
msgstr "événement"
-#: ../../include/text.php:1740 ../../include/conversation.php:150
-#: ../../mod/tagger.php:55
+#: ../../include/text.php:1902 ../../include/conversation.php:148
+#: ../../include/diaspora.php:2123 ../../mod/like.php:349
+#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
+msgid "status"
+msgstr "le statut"
+
+#: ../../include/text.php:1904 ../../include/conversation.php:150
+#: ../../mod/tagger.php:53
msgid "comment"
msgstr "commentaire"
-#: ../../include/text.php:1745
+#: ../../include/text.php:1909
msgid "activity"
msgstr "activité"
-#: ../../include/text.php:2004
-msgid "Design"
-msgstr "Conception"
+#: ../../include/text.php:2204
+msgid "Design Tools"
+msgstr "Outils de conception"
-#: ../../include/text.php:2006
+#: ../../include/text.php:2207 ../../mod/blocks.php:147
msgid "Blocks"
msgstr "Blocs"
-#: ../../include/text.php:2007
+#: ../../include/text.php:2208 ../../mod/menu.php:101
msgid "Menus"
msgstr "Menus"
-#: ../../include/text.php:2008
+#: ../../include/text.php:2209 ../../mod/layouts.php:174
msgid "Layouts"
-msgstr "Mises en page"
+msgstr "Mises-en-page"
-#: ../../include/text.php:2009
+#: ../../include/text.php:2210
msgid "Pages"
msgstr "Pages"
-#: ../../include/page_widgets.php:6
-msgid "New Page"
-msgstr "Nouvelle page"
+#: ../../include/widgets.php:35 ../../include/contact_widgets.php:92
+#: ../../include/taxonomy.php:264
+msgid "Categories"
+msgstr "Catégories"
-#: ../../include/page_widgets.php:39 ../../mod/blocks.php:97
-#: ../../mod/layouts.php:116 ../../mod/webpages.php:123
-msgid "View"
-msgstr "Voir"
+#: ../../include/widgets.php:92
+msgid "System"
+msgstr "Système"
-#: ../../include/page_widgets.php:40 ../../include/conversation.php:1091
-#: ../../include/ItemObject.php:592 ../../mod/editblock.php:141
-#: ../../mod/editlayout.php:135 ../../mod/editpost.php:140
-#: ../../mod/editwebpage.php:174 ../../mod/photos.php:1003
-#: ../../mod/webpages.php:124
-msgid "Preview"
-msgstr "Aperçu"
+#: ../../include/widgets.php:94 ../../include/conversation.php:1515
+msgid "Personal"
+msgstr "Personnel"
-#: ../../include/page_widgets.php:41 ../../mod/webpages.php:125
-msgid "Actions"
-msgstr "Actions"
+#: ../../include/widgets.php:95
+msgid "Create Personal App"
+msgstr "Créer Votre Application"
-#: ../../include/page_widgets.php:42 ../../mod/webpages.php:126
-msgid "Page Link"
-msgstr "Lien vers la page"
+#: ../../include/widgets.php:96
+msgid "Edit Personal App"
+msgstr "Éditer Votre Application"
-#: ../../include/page_widgets.php:43 ../../mod/webpages.php:127
-msgid "Title"
-msgstr "Titre"
+#: ../../include/widgets.php:136 ../../include/widgets.php:175
+#: ../../include/Contact.php:107 ../../include/conversation.php:956
+#: ../../include/identity.php:956 ../../mod/match.php:64
+#: ../../mod/directory.php:316 ../../mod/suggest.php:52
+msgid "Connect"
+msgstr "Ajouter"
-#: ../../include/page_widgets.php:44 ../../mod/webpages.php:128
-msgid "Created"
-msgstr "Créé"
+#: ../../include/widgets.php:138 ../../mod/suggest.php:54
+msgid "Ignore/Hide"
+msgstr "Ignorer/Cacher"
-#: ../../include/page_widgets.php:45 ../../mod/webpages.php:129
-msgid "Edited"
-msgstr "Édité"
+#: ../../include/widgets.php:143 ../../mod/connections.php:128
+msgid "Suggestions"
+msgstr "Suggestion"
-#: ../../include/security.php:301
-msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "Le formulaire n'est plus sécurisé, probablement parce qu'il est ouvert depuis trop longtemps (plus de 3 heures)."
+#: ../../include/widgets.php:144
+msgid "See more..."
+msgstr "Voir plus..."
+
+#: ../../include/widgets.php:166
+#, php-format
+msgid "You have %1$.0f of %2$.0f allowed connections."
+msgstr "Vous avez %1$.0f des %2$.0f relations autorisées."
+
+#: ../../include/widgets.php:172
+msgid "Add New Connection"
+msgstr "Ajouter une nouvelle relation"
+
+#: ../../include/widgets.php:173
+msgid "Enter the channel address"
+msgstr "Adresse du canal"
+
+#: ../../include/widgets.php:174
+msgid "Example: bob@example.com, http://example.com/barbara"
+msgstr "Exemple&nbsp;: bob@exemple.com, http://exemple.com/barbara"
+
+#: ../../include/widgets.php:190
+msgid "Notes"
+msgstr "Notes"
+
+#: ../../include/widgets.php:266
+msgid "Remove term"
+msgstr "Retirer le terme"
+
+#: ../../include/widgets.php:274 ../../include/features.php:70
+msgid "Saved Searches"
+msgstr "Recherches sauvées"
+
+#: ../../include/widgets.php:275 ../../include/group.php:303
+msgid "add"
+msgstr "ajouter"
+
+#: ../../include/widgets.php:304 ../../include/contact_widgets.php:57
+#: ../../include/features.php:83
+msgid "Saved Folders"
+msgstr "Dossiers sauvegardés"
+
+#: ../../include/widgets.php:307 ../../include/contact_widgets.php:60
+#: ../../include/contact_widgets.php:95
+msgid "Everything"
+msgstr "Tout"
+
+#: ../../include/widgets.php:349
+msgid "Archives"
+msgstr "Archives"
+
+#: ../../include/widgets.php:429 ../../mod/connedit.php:583
+msgid "Me"
+msgstr "Moi"
+
+#: ../../include/widgets.php:430 ../../mod/connedit.php:584
+msgid "Family"
+msgstr "Famille"
+
+#: ../../include/widgets.php:431 ../../include/identity.php:394
+#: ../../include/identity.php:395 ../../include/identity.php:402
+#: ../../include/profile_selectors.php:80 ../../mod/connedit.php:585
+#: ../../mod/settings.php:345 ../../mod/settings.php:349
+#: ../../mod/settings.php:350 ../../mod/settings.php:353
+#: ../../mod/settings.php:364
+msgid "Friends"
+msgstr "Amis"
+
+#: ../../include/widgets.php:432 ../../mod/connedit.php:586
+msgid "Acquaintances"
+msgstr "Mes connaissances"
+
+#: ../../include/widgets.php:433 ../../mod/connections.php:91
+#: ../../mod/connections.php:106 ../../mod/connedit.php:587
+msgid "All"
+msgstr "Tout"
+
+#: ../../include/widgets.php:452
+msgid "Refresh"
+msgstr "Actualiser"
+
+#: ../../include/widgets.php:487
+msgid "Account settings"
+msgstr "Réglages du Compte"
+
+#: ../../include/widgets.php:493
+msgid "Channel settings"
+msgstr "Réglages du Canal"
+
+#: ../../include/widgets.php:499
+msgid "Additional features"
+msgstr "Fonctions supplémentaires"
+
+#: ../../include/widgets.php:505
+msgid "Feature/Addon settings"
+msgstr "Extensions"
+
+#: ../../include/widgets.php:511
+msgid "Display settings"
+msgstr "Réglages d'affichage"
+
+#: ../../include/widgets.php:517
+msgid "Connected apps"
+msgstr "Applications connectées"
+
+#: ../../include/widgets.php:523
+msgid "Export channel"
+msgstr "Exporter le canal"
+
+#: ../../include/widgets.php:532 ../../mod/connedit.php:674
+msgid "Connection Default Permissions"
+msgstr "Permissions par défaut des connexions"
+
+#: ../../include/widgets.php:540
+msgid "Premium Channel Settings"
+msgstr "Canal VIP"
+
+#: ../../include/widgets.php:548 ../../include/features.php:59
+#: ../../mod/sources.php:88
+msgid "Channel Sources"
+msgstr "Canaux sources"
+
+#: ../../include/widgets.php:569 ../../mod/mail.php:128
+#: ../../mod/message.php:31
+msgid "Messages"
+msgstr "Messages"
+
+#: ../../include/widgets.php:572
+msgid "Check Mail"
+msgstr "Vérifier le courrier"
+
+#: ../../include/widgets.php:652
+msgid "Chat Rooms"
+msgstr "Salons de clavardage"
+
+#: ../../include/widgets.php:672
+msgid "Bookmarked Chatrooms"
+msgstr "Salons favoris"
+
+#: ../../include/widgets.php:692
+msgid "Suggested Chatrooms"
+msgstr "Salons suggérés"
+
+#: ../../include/widgets.php:819 ../../include/widgets.php:877
+msgid "photo/image"
+msgstr "photo/image"
+
+#: ../../include/widgets.php:972 ../../include/widgets.php:974
+msgid "Rate Me"
+msgstr "Me noter"
+
+#: ../../include/widgets.php:978
+msgid "View Ratings"
+msgstr "Voir mes notes"
+
+#: ../../include/widgets.php:989
+msgid "Public Hubs"
+msgstr "Instances publiques"
+
+#: ../../include/Contact.php:124
+msgid "New window"
+msgstr "Nouvelle fenêtre"
+
+#: ../../include/Contact.php:125
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Ouvrir l'emplacement dans une fenêtre (ou un onglet) différent"
+
+#: ../../include/Contact.php:212
+#, php-format
+msgid "User '%s' deleted"
+msgstr "Utilisateur '%s' supprimé"
+
+#: ../../include/message.php:18
+msgid "No recipient provided."
+msgstr "Pas de destinataire."
+
+#: ../../include/message.php:23
+msgid "[no subject]"
+msgstr "[sans objet]"
+
+#: ../../include/message.php:45
+msgid "Unable to determine sender."
+msgstr "Impossible de déterminer l'émetteur."
+
+#: ../../include/message.php:200
+msgid "Stored post could not be verified."
+msgstr "Le message stocké n'a pas pu être vérifié."
+
+#: ../../include/zot.php:685
+msgid "Invalid data packet"
+msgstr "Paquet de données invalide"
+
+#: ../../include/zot.php:701
+msgid "Unable to verify channel signature"
+msgstr "Impossible de vérifier la signature du canal"
+
+#: ../../include/zot.php:2209
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr "Impossible de vérifier la signature de site pour %s"
+
+#: ../../include/notify.php:23
+msgid "created a new post"
+msgstr "a publié"
+
+#: ../../include/notify.php:24
+#, php-format
+msgid "commented on %s's post"
+msgstr "a commenté la publication de %s"
+
+#: ../../include/ItemObject.php:89 ../../include/conversation.php:678
+msgid "Private Message"
+msgstr "Message Privé"
+
+#: ../../include/ItemObject.php:126 ../../include/conversation.php:670
+msgid "Select"
+msgstr "Sélectionner"
+
+#: ../../include/ItemObject.php:130
+msgid "Save to Folder"
+msgstr "Sauvegarder dans le dossier"
+
+#: ../../include/ItemObject.php:151
+msgid "I will attend"
+msgstr "J'y serais"
+
+#: ../../include/ItemObject.php:151
+msgid "I will not attend"
+msgstr "Je n'y serais pas"
+
+#: ../../include/ItemObject.php:151
+msgid "I might attend"
+msgstr "J'y serais peut-être"
+
+#: ../../include/ItemObject.php:161
+msgid "I agree"
+msgstr "J'approuve"
+
+#: ../../include/ItemObject.php:161
+msgid "I disagree"
+msgstr "Je désapprouve"
+
+#: ../../include/ItemObject.php:161
+msgid "I abstain"
+msgstr "Je m'abstiens"
+
+#: ../../include/ItemObject.php:175 ../../include/ItemObject.php:187
+#: ../../include/conversation.php:1688 ../../mod/photos.php:1015
+#: ../../mod/photos.php:1027
+msgid "View all"
+msgstr "Voir tout"
+
+#: ../../include/ItemObject.php:179 ../../include/conversation.php:1712
+#: ../../include/identity.php:1266 ../../include/taxonomy.php:396
+#: ../../mod/photos.php:1019
+msgctxt "noun"
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] "J'aime"
+msgstr[1] "J'aime"
+
+#: ../../include/ItemObject.php:184 ../../include/conversation.php:1715
+#: ../../mod/photos.php:1024
+msgctxt "noun"
+msgid "Dislike"
+msgid_plural "Dislikes"
+msgstr[0] "Je déteste"
+msgstr[1] "Je déteste"
+
+#: ../../include/ItemObject.php:212
+msgid "Add Star"
+msgstr "Ajouter Étoile"
+
+#: ../../include/ItemObject.php:213
+msgid "Remove Star"
+msgstr "Supprimer Étoile"
+
+#: ../../include/ItemObject.php:214
+msgid "Toggle Star Status"
+msgstr "Changer le Statut des Étoiles"
+
+#: ../../include/ItemObject.php:218
+msgid "starred"
+msgstr "mis en avant"
+
+#: ../../include/ItemObject.php:227 ../../include/conversation.php:685
+msgid "Message signature validated"
+msgstr "Signature du message validée"
+
+#: ../../include/ItemObject.php:228 ../../include/conversation.php:686
+msgid "Message signature incorrect"
+msgstr "Signature du message incorrecte"
+
+#: ../../include/ItemObject.php:236
+msgid "Add Tag"
+msgstr "Ajouter une balise"
+
+#: ../../include/ItemObject.php:254 ../../mod/photos.php:959
+msgid "I like this (toggle)"
+msgstr "J'aime (oui/non)"
+
+#: ../../include/ItemObject.php:254 ../../include/taxonomy.php:310
+msgid "like"
+msgstr "aime"
-#: ../../include/account.php:23
+#: ../../include/ItemObject.php:255 ../../mod/photos.php:960
+msgid "I don't like this (toggle)"
+msgstr "Je déteste (oui/non)"
+
+#: ../../include/ItemObject.php:255 ../../include/taxonomy.php:311
+msgid "dislike"
+msgstr "déteste"
+
+#: ../../include/ItemObject.php:259
+msgid "Share This"
+msgstr "Partager"
+
+#: ../../include/ItemObject.php:259
+msgid "share"
+msgstr "partager"
+
+#: ../../include/ItemObject.php:277
+#, php-format
+msgid "%d comment"
+msgid_plural "%d comments"
+msgstr[0] "%d commentaire"
+msgstr[1] "%d commentaires"
+
+#: ../../include/ItemObject.php:295 ../../include/ItemObject.php:296
+#, php-format
+msgid "View %s's profile - %s"
+msgstr "Voir le profil de %s - %s"
+
+#: ../../include/ItemObject.php:299
+msgid "to"
+msgstr "à"
+
+#: ../../include/ItemObject.php:300
+msgid "via"
+msgstr "via"
+
+#: ../../include/ItemObject.php:301
+msgid "Wall-to-Wall"
+msgstr "Mur-mur"
+
+#: ../../include/ItemObject.php:302
+msgid "via Wall-To-Wall:"
+msgstr "par Mur-mur&nbsp;:"
+
+#: ../../include/ItemObject.php:313 ../../include/conversation.php:727
+#, php-format
+msgid "from %s"
+msgstr "de %s"
+
+#: ../../include/ItemObject.php:316 ../../include/conversation.php:730
+#, php-format
+msgid "last edited: %s"
+msgstr "dernière édition&nbsp;: %s"
+
+#: ../../include/ItemObject.php:317 ../../include/conversation.php:731
+#, php-format
+msgid "Expires: %s"
+msgstr "Expire&nbsp;: %s"
+
+#: ../../include/ItemObject.php:338
+msgid "Save Bookmarks"
+msgstr "Enregistrer un favori"
+
+#: ../../include/ItemObject.php:339
+msgid "Add to Calendar"
+msgstr "Ajouter au Calendrier"
+
+#: ../../include/ItemObject.php:348
+msgid "Mark all seen"
+msgstr "Tout marquer comme vu"
+
+#: ../../include/ItemObject.php:354 ../../mod/photos.php:1145
+msgctxt "noun"
+msgid "Likes"
+msgstr "Aimes"
+
+#: ../../include/ItemObject.php:355 ../../mod/photos.php:1146
+msgctxt "noun"
+msgid "Dislikes"
+msgstr "Détestes"
+
+#: ../../include/ItemObject.php:360 ../../include/acl_selectors.php:249
+#: ../../mod/photos.php:1151
+msgid "Close"
+msgstr "Fermer"
+
+#: ../../include/ItemObject.php:365 ../../include/conversation.php:748
+#: ../../include/conversation.php:1220 ../../mod/mail.php:241
+#: ../../mod/mail.php:356 ../../mod/photos.php:962 ../../mod/editblock.php:149
+#: ../../mod/editlayout.php:147 ../../mod/editpost.php:123
+#: ../../mod/editwebpage.php:192
+msgid "Please wait"
+msgstr "Merci de patienter"
+
+#: ../../include/ItemObject.php:385 ../../include/js_strings.php:7
+msgid "[+] show all"
+msgstr "[+] voir plus"
+
+#: ../../include/ItemObject.php:666 ../../mod/photos.php:978
+#: ../../mod/photos.php:1096
+msgid "This is you"
+msgstr "C'est vous"
+
+#: ../../include/ItemObject.php:668 ../../include/js_strings.php:6
+#: ../../mod/photos.php:980 ../../mod/photos.php:1098
+msgid "Comment"
+msgstr "Commenter"
+
+#: ../../include/ItemObject.php:669 ../../include/js_strings.php:22
+#: ../../mod/mail.php:355 ../../mod/admin.php:453 ../../mod/admin.php:819
+#: ../../mod/admin.php:986 ../../mod/admin.php:1118 ../../mod/admin.php:1312
+#: ../../mod/admin.php:1397 ../../mod/pconfig.php:108 ../../mod/pdledit.php:58
+#: ../../mod/appman.php:99 ../../mod/photos.php:577 ../../mod/photos.php:654
+#: ../../mod/photos.php:941 ../../mod/photos.php:981 ../../mod/photos.php:1099
+#: ../../mod/poke.php:166 ../../mod/bulksetclose.php:24 ../../mod/poll.php:68
+#: ../../mod/chat.php:177 ../../mod/chat.php:211 ../../mod/connect.php:93
+#: ../../mod/profiles.php:667 ../../mod/connedit.php:704
+#: ../../mod/rate.php:167 ../../mod/events.php:511 ../../mod/events.php:693
+#: ../../mod/filestorage.php:156 ../../mod/fsuggest.php:108
+#: ../../mod/group.php:81 ../../mod/import.php:592 ../../mod/invite.php:142
+#: ../../mod/settings.php:588 ../../mod/settings.php:692
+#: ../../mod/settings.php:718 ../../mod/settings.php:746
+#: ../../mod/settings.php:769 ../../mod/settings.php:854
+#: ../../mod/settings.php:1050 ../../mod/setup.php:327 ../../mod/setup.php:367
+#: ../../mod/locs.php:105 ../../mod/sources.php:104 ../../mod/sources.php:138
+#: ../../mod/mitem.php:235 ../../mod/mood.php:134 ../../mod/thing.php:303
+#: ../../mod/thing.php:346 ../../mod/xchan.php:11
+#: ../../view/theme/apw/php/config.php:256
+#: ../../view/theme/redbasic/php/config.php:99
+msgid "Submit"
+msgstr "Envoyer"
+
+#: ../../include/ItemObject.php:670 ../../include/conversation.php:1192
+#: ../../mod/editblock.php:135 ../../mod/editlayout.php:134
+#: ../../mod/editpost.php:107 ../../mod/editwebpage.php:179
+msgid "Bold"
+msgstr "Gras"
+
+#: ../../include/ItemObject.php:671 ../../include/conversation.php:1193
+#: ../../mod/editblock.php:136 ../../mod/editlayout.php:135
+#: ../../mod/editpost.php:108 ../../mod/editwebpage.php:180
+msgid "Italic"
+msgstr "Italique"
+
+#: ../../include/ItemObject.php:672 ../../include/conversation.php:1194
+#: ../../mod/editblock.php:137 ../../mod/editlayout.php:136
+#: ../../mod/editpost.php:109 ../../mod/editwebpage.php:181
+msgid "Underline"
+msgstr "Souligné"
+
+#: ../../include/ItemObject.php:673 ../../include/conversation.php:1195
+#: ../../mod/editblock.php:138 ../../mod/editlayout.php:137
+#: ../../mod/editpost.php:110 ../../mod/editwebpage.php:182
+msgid "Quote"
+msgstr "Citation"
+
+#: ../../include/ItemObject.php:674 ../../include/conversation.php:1196
+#: ../../mod/editblock.php:139 ../../mod/editlayout.php:138
+#: ../../mod/editpost.php:111 ../../mod/editwebpage.php:183
+msgid "Code"
+msgstr "Code"
+
+#: ../../include/ItemObject.php:675
+msgid "Image"
+msgstr "Image"
+
+#: ../../include/ItemObject.php:676
+msgid "Insert Link"
+msgstr "Insérer un lien"
+
+#: ../../include/ItemObject.php:677
+msgid "Video"
+msgstr "Vidéo"
+
+#: ../../include/ItemObject.php:678 ../../include/conversation.php:1166
+#: ../../include/page_widgets.php:40 ../../mod/photos.php:982
+#: ../../mod/editblock.php:170 ../../mod/editpost.php:143
+#: ../../mod/editwebpage.php:214 ../../mod/events.php:690
+#: ../../mod/webpages.php:188
+msgid "Preview"
+msgstr "Aperçu"
+
+#: ../../include/ItemObject.php:681 ../../include/conversation.php:1247
+#: ../../mod/mail.php:247 ../../mod/mail.php:361 ../../mod/editpost.php:151
+msgid "Encrypt text"
+msgstr "Chiffrer le texte"
+
+#: ../../include/account.php:27
msgid "Not a valid email address"
msgstr "Ce n'est pas une adresse de courriel valide"
-#: ../../include/account.php:25
+#: ../../include/account.php:29
msgid "Your email domain is not among those allowed on this site"
msgstr "Votre domaine de courriel ne fait pas partie de ceux autorisés par ce site"
-#: ../../include/account.php:31
+#: ../../include/account.php:35
msgid "Your email address is already registered at this site."
msgstr "Votre adresse de courriel est déjà inscrite sur ce site."
-#: ../../include/account.php:64
+#: ../../include/account.php:67
msgid "An invitation is required."
msgstr "Une invitation est requise."
-#: ../../include/account.php:68
+#: ../../include/account.php:71
msgid "Invitation could not be verified."
msgstr "Votre invitation n'a pas pu être vérifiée."
-#: ../../include/account.php:119
+#: ../../include/account.php:121
msgid "Please enter the required information."
msgstr "Merci d'entrer les informations requises."
-#: ../../include/account.php:187
+#: ../../include/account.php:188
msgid "Failed to store account information."
msgstr "Impossible de stocker les informations liées au compte."
-#: ../../include/account.php:245
+#: ../../include/account.php:246
#, php-format
msgid "Registration confirmation for %s"
msgstr "Confirmation de l'enregistrement pour %s"
-#: ../../include/account.php:313
+#: ../../include/account.php:312
#, php-format
msgid "Registration request at %s"
msgstr "Demande d'inscription sur %s"
-#: ../../include/account.php:315 ../../include/account.php:342
-#: ../../include/account.php:399
-msgid "Administrator"
-msgstr "Administrateur"
-
-#: ../../include/account.php:337
+#: ../../include/account.php:336
msgid "your registration password"
msgstr "votre mot de passe d'inscription"
-#: ../../include/account.php:340 ../../include/account.php:397
+#: ../../include/account.php:339 ../../include/account.php:399
#, php-format
msgid "Registration details for %s"
msgstr "Détails de l'inscription à %s"
-#: ../../include/account.php:406
+#: ../../include/account.php:408
msgid "Account approved."
msgstr "Compte approuvé."
-#: ../../include/account.php:440
+#: ../../include/account.php:447
#, php-format
msgid "Registration revoked for %s"
msgstr "Inscription révoquée pour %s"
-#: ../../include/account.php:486
+#: ../../include/account.php:492
msgid "Account verified. Please login."
msgstr "Compte vérifié. Veuillez vous connecter."
-#: ../../include/photos.php:15 ../../include/attach.php:119
-#: ../../include/attach.php:166 ../../include/attach.php:229
-#: ../../include/attach.php:243 ../../include/attach.php:283
-#: ../../include/attach.php:297 ../../include/attach.php:322
-#: ../../include/attach.php:513 ../../include/attach.php:585
-#: ../../include/chat.php:116 ../../include/items.php:3711
-#: ../../mod/mood.php:112 ../../mod/mitem.php:73 ../../mod/achievements.php:27
-#: ../../mod/settings.php:494 ../../mod/poke.php:128 ../../mod/api.php:26
-#: ../../mod/api.php:31 ../../mod/authtest.php:13 ../../mod/profile.php:64
-#: ../../mod/profile.php:72 ../../mod/block.php:22 ../../mod/block.php:72
-#: ../../mod/profile_photo.php:263 ../../mod/profile_photo.php:276
-#: ../../mod/blocks.php:29 ../../mod/blocks.php:44 ../../mod/profiles.php:179
-#: ../../mod/profiles.php:524 ../../mod/bookmarks.php:46
-#: ../../mod/channel.php:89 ../../mod/channel.php:193
-#: ../../mod/channel.php:236 ../../mod/chat.php:90 ../../mod/chat.php:95
-#: ../../mod/register.php:71 ../../mod/regmod.php:18 ../../mod/common.php:35
-#: ../../mod/network.php:12 ../../mod/connections.php:169
-#: ../../mod/connedit.php:254 ../../mod/delegate.php:6 ../../mod/page.php:30
-#: ../../mod/page.php:80 ../../mod/setup.php:203 ../../mod/editblock.php:34
-#: ../../mod/pdledit.php:21 ../../mod/editlayout.php:48
-#: ../../mod/editpost.php:13 ../../mod/editwebpage.php:44
-#: ../../mod/editwebpage.php:83 ../../mod/photos.php:68
-#: ../../mod/photos.php:526 ../../mod/sources.php:66 ../../mod/events.php:160
-#: ../../mod/filestorage.php:10 ../../mod/filestorage.php:59
-#: ../../mod/filestorage.php:75 ../../mod/filestorage.php:98
-#: ../../mod/fsuggest.php:78 ../../mod/suggest.php:26 ../../mod/group.php:9
-#: ../../mod/thing.php:249 ../../mod/thing.php:266 ../../mod/thing.php:301
-#: ../../mod/invite.php:13 ../../mod/invite.php:104 ../../mod/item.php:178
-#: ../../mod/item.php:186 ../../mod/item.php:916 ../../mod/layouts.php:27
-#: ../../mod/layouts.php:39 ../../mod/like.php:154
-#: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27
-#: ../../mod/viewsrc.php:12 ../../mod/mail.php:108 ../../mod/manage.php:6
-#: ../../mod/menu.php:44 ../../mod/webpages.php:40 ../../mod/message.php:16
-#: ../../mod/new_channel.php:66 ../../mod/new_channel.php:97
-#: ../../mod/notifications.php:66 ../../mod/appman.php:66 ../../index.php:186
-#: ../../index.php:361
-msgid "Permission denied."
-msgstr "Permission refusée."
-
-#: ../../include/photos.php:104
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "L'image dépasse la taille limite de %lu octets"
-
-#: ../../include/photos.php:111
-msgid "Image file is empty."
-msgstr "L'image est vide."
+#: ../../include/account.php:705 ../../include/account.php:707
+msgid "Click here to upgrade."
+msgstr "Cliquez ici pour mettre à jour."
-#: ../../include/photos.php:140 ../../mod/profile_photo.php:216
-msgid "Unable to process image"
-msgstr "Impossible de traiter l'image"
+#: ../../include/account.php:713
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Cette action outrepasserait les limites prévues par votre forfait."
-#: ../../include/photos.php:212
-msgid "Photo storage failed."
-msgstr "Le stockage de l'image a échoué."
+#: ../../include/account.php:718
+msgid "This action is not available under your subscription plan."
+msgstr "Cette action n'est pas possible avec la formule choisie."
-#: ../../include/photos.php:339 ../../include/conversation.php:1515
-msgid "Photo Albums"
-msgstr "Albums photo"
+#: ../../include/oembed.php:183
+msgid "Embedded content"
+msgstr "Contenu imbriqué"
-#: ../../include/photos.php:343 ../../mod/photos.php:697
-#: ../../mod/photos.php:1199
-msgid "Upload New Photos"
-msgstr "Ajouter des photos"
+#: ../../include/oembed.php:192
+msgid "Embedding disabled"
+msgstr "Imbrication désactivée"
#: ../../include/acl_selectors.php:240
msgid "Visible to your default audience"
@@ -748,397 +1436,353 @@ msgstr "Visible pour vos contacts seulement."
#: ../../include/acl_selectors.php:241
msgid "Show"
-msgstr "Voir plus"
+msgstr "Montrer"
#: ../../include/acl_selectors.php:242
msgid "Don't show"
msgstr "Cacher"
-#: ../../include/acl_selectors.php:248 ../../mod/chat.php:209
-#: ../../mod/photos.php:604 ../../mod/photos.php:958
-#: ../../mod/filestorage.php:128
+#: ../../include/acl_selectors.php:248 ../../mod/photos.php:571
+#: ../../mod/photos.php:934 ../../mod/chat.php:209 ../../mod/events.php:691
+#: ../../mod/filestorage.php:147
msgid "Permissions"
msgstr "Permissions"
-#: ../../include/acl_selectors.php:249 ../../include/ItemObject.php:289
-msgid "Close"
-msgstr "Fermer"
-
#: ../../include/activities.php:39
msgid " and "
-msgstr " et "
+msgstr "et"
#: ../../include/activities.php:47
msgid "public profile"
msgstr "profil public"
-#: ../../include/activities.php:52
+#: ../../include/activities.php:56
#, php-format
msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
msgstr "%1$s a changé %2$s en &ldquo;%3$s&rdquo;"
-#: ../../include/activities.php:53
+#: ../../include/activities.php:57
#, php-format
msgid "Visit %1$s's %2$s"
-msgstr "Visiter %1$s sur %2$s"
+msgstr "Visiter %1$s de %2$s"
-#: ../../include/activities.php:56
+#: ../../include/activities.php:60
#, php-format
msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s a mis à jour %2$s, modifiant %3$s."
+msgstr "%1$s a mis-à-jour %2$s, modifiant %3$s."
-#: ../../include/api.php:1036
+#: ../../include/api.php:1178
msgid "Public Timeline"
msgstr "Fil public"
-#: ../../include/attach.php:224 ../../include/attach.php:278
+#: ../../include/apps.php:128
+msgid "Site Admin"
+msgstr "Administrateur"
+
+#: ../../include/apps.php:130
+msgid "Address Book"
+msgstr "Carnet d'adresse"
+
+#: ../../include/apps.php:138 ../../include/identity.php:1240
+#: ../../include/identity.php:1357 ../../mod/profperm.php:112
+msgid "Profile"
+msgstr "Profil"
+
+#: ../../include/apps.php:144 ../../mod/mood.php:130
+msgid "Mood"
+msgstr "Humeur"
+
+#: ../../include/apps.php:145 ../../include/conversation.php:959
+msgid "Poke"
+msgstr "Cogner"
+
+#: ../../include/apps.php:148
+msgid "Probe"
+msgstr "Sonder"
+
+#: ../../include/apps.php:149
+msgid "Suggest"
+msgstr "Suggérer"
+
+#: ../../include/apps.php:150
+msgid "Random Channel"
+msgstr "Un Canal au Hasard"
+
+#: ../../include/apps.php:151
+msgid "Invite"
+msgstr "Invitation"
+
+#: ../../include/apps.php:152
+msgid "Features"
+msgstr "Fonctionalités"
+
+#: ../../include/apps.php:153 ../../mod/id.php:28
+msgid "Language"
+msgstr "Langue"
+
+#: ../../include/apps.php:154
+msgid "Post"
+msgstr "Envoyer"
+
+#: ../../include/apps.php:155 ../../mod/id.php:17 ../../mod/id.php:18
+#: ../../mod/id.php:19
+msgid "Profile Photo"
+msgstr "Photo du Profil"
+
+#: ../../include/apps.php:247 ../../mod/settings.php:84
+#: ../../mod/settings.php:614
+msgid "Update"
+msgstr "Mise-à-jour"
+
+#: ../../include/apps.php:247
+msgid "Install"
+msgstr "Installer"
+
+#: ../../include/apps.php:252
+msgid "Purchase"
+msgstr "Acheter"
+
+#: ../../include/attach.php:137 ../../include/attach.php:184
+#: ../../include/attach.php:247 ../../include/attach.php:261
+#: ../../include/attach.php:305 ../../include/attach.php:319
+#: ../../include/attach.php:350 ../../include/attach.php:546
+#: ../../include/attach.php:618 ../../include/chat.php:131
+#: ../../include/items.php:4383 ../../include/photos.php:26
+#: ../../mod/mail.php:114 ../../mod/achievements.php:30 ../../mod/page.php:31
+#: ../../mod/page.php:86 ../../mod/api.php:26 ../../mod/api.php:31
+#: ../../mod/pdledit.php:21 ../../mod/appman.php:66 ../../mod/photos.php:69
+#: ../../mod/authtest.php:13 ../../mod/block.php:22 ../../mod/block.php:72
+#: ../../mod/blocks.php:69 ../../mod/blocks.php:76 ../../mod/poke.php:128
+#: ../../mod/bookmarks.php:46 ../../mod/manage.php:6 ../../mod/channel.php:100
+#: ../../mod/channel.php:219 ../../mod/channel.php:262 ../../mod/chat.php:90
+#: ../../mod/chat.php:95 ../../mod/profile.php:64 ../../mod/profile.php:72
+#: ../../mod/common.php:35 ../../mod/profile_photo.php:264
+#: ../../mod/profile_photo.php:277 ../../mod/notifications.php:66
+#: ../../mod/connections.php:29 ../../mod/profiles.php:188
+#: ../../mod/profiles.php:576 ../../mod/connedit.php:348
+#: ../../mod/editblock.php:65 ../../mod/editlayout.php:63
+#: ../../mod/editlayout.php:87 ../../mod/editpost.php:13
+#: ../../mod/editwebpage.php:64 ../../mod/editwebpage.php:86
+#: ../../mod/editwebpage.php:101 ../../mod/editwebpage.php:125
+#: ../../mod/rate.php:110 ../../mod/events.php:249
+#: ../../mod/filestorage.php:18 ../../mod/filestorage.php:73
+#: ../../mod/filestorage.php:88 ../../mod/filestorage.php:115
+#: ../../mod/register.php:72 ../../mod/fsuggest.php:78 ../../mod/regmod.php:17
+#: ../../mod/group.php:9 ../../mod/id.php:71 ../../mod/service_limits.php:7
+#: ../../mod/invite.php:13 ../../mod/invite.php:104 ../../mod/settings.php:570
+#: ../../mod/item.php:206 ../../mod/item.php:214 ../../mod/item.php:1005
+#: ../../mod/setup.php:223 ../../mod/layouts.php:69 ../../mod/layouts.php:76
+#: ../../mod/layouts.php:87 ../../mod/sharedwithme.php:7
+#: ../../mod/like.php:178 ../../mod/locs.php:77 ../../mod/sources.php:66
+#: ../../mod/menu.php:72 ../../mod/message.php:16 ../../mod/mitem.php:111
+#: ../../mod/mood.php:111 ../../mod/suggest.php:26 ../../mod/network.php:12
+#: ../../mod/new_channel.php:68 ../../mod/new_channel.php:99
+#: ../../mod/thing.php:269 ../../mod/thing.php:284 ../../mod/thing.php:318
+#: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27
+#: ../../mod/viewsrc.php:14 ../../mod/webpages.php:69 ../../index.php:186
+#: ../../index.php:397
+msgid "Permission denied."
+msgstr "Permission refusée."
+
+#: ../../include/attach.php:242 ../../include/attach.php:300
msgid "Item was not found."
msgstr "Élément introuvable."
-#: ../../include/attach.php:335
+#: ../../include/attach.php:363
msgid "No source file."
msgstr "Pas de fichier source."
-#: ../../include/attach.php:352
+#: ../../include/attach.php:381
msgid "Cannot locate file to replace"
msgstr "Impossible de trouver le fichier à remplacer."
-#: ../../include/attach.php:370
+#: ../../include/attach.php:399
msgid "Cannot locate file to revise/update"
-msgstr "Impossible de trouver le fichier à corriger/mettre à jour"
+msgstr "Impossible de trouver le fichier à corriger/mettre-à-jour"
-#: ../../include/attach.php:381
+#: ../../include/attach.php:410
#, php-format
msgid "File exceeds size limit of %d"
msgstr "Le fichier dépasse la taille limite de %d"
-#: ../../include/attach.php:393
+#: ../../include/attach.php:422
#, php-format
msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
msgstr "Vous avez atteint votre limite de %1$.0f méga-octets autorisés pour le stockage des pièces-jointes"
-#: ../../include/attach.php:475
+#: ../../include/attach.php:505
msgid "File upload failed. Possible system limit or action terminated."
msgstr "Envoi du fichier impossible. Limite système ou action avortée."
-#: ../../include/attach.php:487
+#: ../../include/attach.php:517
msgid "Stored file could not be verified. Upload failed."
msgstr "Le fichier stocké n'a pu être vérifié. Envoi impossible."
-#: ../../include/attach.php:528 ../../include/attach.php:545
+#: ../../include/attach.php:561 ../../include/attach.php:578
msgid "Path not available."
msgstr "Chemin non disponible."
-#: ../../include/attach.php:590
+#: ../../include/attach.php:623
msgid "Empty pathname"
msgstr "Chemin vide"
-#: ../../include/attach.php:606
+#: ../../include/attach.php:639
msgid "duplicate filename or path"
msgstr "doublon de chemin ou de fichier"
-#: ../../include/attach.php:630
+#: ../../include/attach.php:663
msgid "Path not found."
msgstr "Chemin introuvable."
-#: ../../include/attach.php:681
+#: ../../include/attach.php:714
msgid "mkdir failed."
msgstr "mkdir a échoué."
-#: ../../include/attach.php:685
+#: ../../include/attach.php:718
msgid "database storage failed."
msgstr "l'écriture dans la BD a échoué"
-#: ../../include/plugin.php:504 ../../include/plugin.php:506
-msgid "Click here to upgrade."
-msgstr "Cliquez ici pour mettre à jour."
+#: ../../include/auth.php:131
+msgid "Logged out."
+msgstr "Deconnecté."
-#: ../../include/plugin.php:512
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Cette action outrepasserait les limites prévues par votre forfait."
+#: ../../include/auth.php:272
+msgid "Failed authentication"
+msgstr "Échec de l'authentification"
-#: ../../include/plugin.php:517
-msgid "This action is not available under your subscription plan."
-msgstr "Cette action n'est pas possible avec la formule choisie."
+#: ../../include/auth.php:286 ../../mod/openid.php:190
+msgid "Login failed."
+msgstr "Échec de la connexion."
+
+#: ../../include/bb2diaspora.php:373
+msgid "Attachments:"
+msgstr "Pièces jointes:"
-#: ../../include/bb2diaspora.php:463 ../../include/event.php:11
+#: ../../include/bb2diaspora.php:459 ../../include/event.php:22
msgid "l F d, Y \\@ g:i A"
msgstr "l d F Y \\à G\\hi"
-#: ../../include/bb2diaspora.php:469 ../../include/event.php:20
+#: ../../include/bb2diaspora.php:461
+msgid "$Projectname event notification:"
+msgstr "Notification d'événement de $Projectname"
+
+#: ../../include/bb2diaspora.php:465 ../../include/event.php:30
msgid "Starts:"
msgstr "Début&nbsp;:"
-#: ../../include/bb2diaspora.php:477 ../../include/event.php:30
+#: ../../include/bb2diaspora.php:473 ../../include/event.php:40
msgid "Finishes:"
msgstr "Fin&nbsp;:"
-#: ../../include/bb2diaspora.php:485 ../../include/event.php:40
-#: ../../include/identity.php:757 ../../mod/directory.php:156
-#: ../../mod/dirprofile.php:105 ../../mod/events.php:504
+#: ../../include/bb2diaspora.php:481 ../../include/event.php:50
+#: ../../include/identity.php:1007 ../../mod/directory.php:302
+#: ../../mod/events.php:684
msgid "Location:"
msgstr "Emplacement&nbsp;:"
-#: ../../include/nav.php:81 ../../include/nav.php:108 ../../boot.php:1497
-msgid "Logout"
-msgstr "Déconnexion"
-
-#: ../../include/nav.php:81 ../../include/nav.php:108
-msgid "End this session"
-msgstr "Mettre fin à la session"
-
-#: ../../include/nav.php:84 ../../include/nav.php:142
-msgid "Home"
-msgstr "Canal"
-
-#: ../../include/nav.php:84
-msgid "Your posts and conversations"
-msgstr "Vos publications et conversations"
-
-#: ../../include/nav.php:85 ../../include/conversation.php:940
-#: ../../mod/connedit.php:393 ../../mod/connedit.php:507
-msgid "View Profile"
-msgstr "Voir profil"
-
-#: ../../include/nav.php:85
-msgid "Your profile page"
-msgstr "Votre profil"
-
-#: ../../include/nav.php:87
-msgid "Edit Profiles"
-msgstr "Éditer les profils"
-
-#: ../../include/nav.php:87
-msgid "Manage/Edit profiles"
-msgstr "Gérer/éditer les profils"
-
-#: ../../include/nav.php:89 ../../include/identity.php:730
-msgid "Edit Profile"
-msgstr "Éditer le profil"
-
-#: ../../include/nav.php:89
-msgid "Edit your profile"
-msgstr "Éditer votre profil"
-
-#: ../../include/nav.php:91
-msgid "Your photos"
-msgstr "Vos photos"
-
-#: ../../include/nav.php:92
-msgid "Your files"
-msgstr "Vos fichiers"
-
-#: ../../include/nav.php:97
-msgid "Your chatrooms"
-msgstr "Vos salons"
-
-#: ../../include/nav.php:100
-msgid "Your bookmarks"
-msgstr "Vos favoris"
-
-#: ../../include/nav.php:102
-msgid "Your webpages"
-msgstr "Vos pages web"
+#: ../../include/bbcode.php:122 ../../include/bbcode.php:768
+#: ../../include/bbcode.php:771 ../../include/bbcode.php:776
+#: ../../include/bbcode.php:779 ../../include/bbcode.php:782
+#: ../../include/bbcode.php:785 ../../include/bbcode.php:790
+#: ../../include/bbcode.php:793 ../../include/bbcode.php:798
+#: ../../include/bbcode.php:801 ../../include/bbcode.php:804
+#: ../../include/bbcode.php:807
+msgid "Image/photo"
+msgstr "Image/photo"
-#: ../../include/nav.php:106
-msgid "Sign in"
-msgstr "Connexion"
+#: ../../include/bbcode.php:161 ../../include/bbcode.php:818
+msgid "Encrypted content"
+msgstr "Contenu chiffré"
-#: ../../include/nav.php:123
+#: ../../include/bbcode.php:178
#, php-format
-msgid "%s - click to logout"
-msgstr "%s - cliquer ici pour déconnecter"
-
-#: ../../include/nav.php:128
-msgid "Click to authenticate to your home hub"
-msgstr "S'authentifier auprès de votre hub"
-
-#: ../../include/nav.php:142
-msgid "Home Page"
-msgstr "Page d'accueil"
-
-#: ../../include/nav.php:146 ../../mod/register.php:221 ../../boot.php:1474
-msgid "Register"
-msgstr "S'inscrire"
-
-#: ../../include/nav.php:146
-msgid "Create an account"
-msgstr "Créer un compte"
-
-#: ../../include/nav.php:151
-msgid "Help and documentation"
-msgstr "Aide et documentation"
-
-#: ../../include/nav.php:154 ../../include/widgets.php:79
-#: ../../mod/apps.php:33
-msgid "Apps"
-msgstr "Applications"
-
-#: ../../include/nav.php:154
-msgid "Applications, utilities, links, games"
-msgstr "Applications, utilitaires, liens, jeux"
-
-#: ../../include/nav.php:156
-msgid "Search site content"
-msgstr "Rechercher parmi le contenu du site"
-
-#: ../../include/nav.php:159
-msgid "Channel Locator"
-msgstr "Localisation de canaux"
-
-#: ../../include/nav.php:170
-msgid "Your matrix"
-msgstr "Votre matrice"
-
-#: ../../include/nav.php:171
-msgid "Mark all matrix notifications seen"
-msgstr "Marquer toutes les notifications de la matrice comme vues"
-
-#: ../../include/nav.php:173
-msgid "Channel home"
-msgstr "Mon canal"
-
-#: ../../include/nav.php:174
-msgid "Mark all channel notifications seen"
-msgstr "Marquer toutes les notifications du canal comme vues"
-
-#: ../../include/nav.php:177 ../../mod/connections.php:386
-msgid "Connections"
-msgstr "Relations"
-
-#: ../../include/nav.php:180
-msgid "Notices"
-msgstr "Notifications"
-
-#: ../../include/nav.php:180
-msgid "Notifications"
-msgstr "Notifications"
-
-#: ../../include/nav.php:181
-msgid "See all notifications"
-msgstr "Voir toutes les notifications"
-
-#: ../../include/nav.php:182 ../../mod/notifications.php:99
-msgid "Mark all system notifications seen"
-msgstr "Marquer toutes les notifications système comme vues"
-
-#: ../../include/nav.php:184
-msgid "Private mail"
-msgstr "Messages privés"
-
-#: ../../include/nav.php:185
-msgid "See all private messages"
-msgstr "Voir tous les messages privés"
-
-#: ../../include/nav.php:186
-msgid "Mark all private messages seen"
-msgstr "Marquer tous les messages privés comme vus"
-
-#: ../../include/nav.php:187
-msgid "Inbox"
-msgstr "Boîte de réception"
+msgid "Install %s element: "
+msgstr "Installer %s élément"
-#: ../../include/nav.php:188
-msgid "Outbox"
-msgstr "Boîte d'envoi"
+#: ../../include/bbcode.php:182
+#, php-format
+msgid ""
+"This post contains an installable %s element, however you lack permissions "
+"to install it on this site."
+msgstr "Ce message contient un élément installable %s, mais vous n'avez pas l'autorisation de l'installer sur ce site."
-#: ../../include/nav.php:189 ../../include/widgets.php:536
-msgid "New Message"
-msgstr "Nouveau message"
+#: ../../include/bbcode.php:192 ../../mod/impel.php:37
+msgid "webpage"
+msgstr "Pages web"
-#: ../../include/nav.php:192
-msgid "Event Calendar"
-msgstr "Calendrier des événements"
+#: ../../include/bbcode.php:195 ../../mod/impel.php:47
+msgid "layout"
+msgstr "Mises en page"
-#: ../../include/nav.php:193
-msgid "See all events"
-msgstr "Voir tous les événements"
+#: ../../include/bbcode.php:198 ../../mod/impel.php:42
+msgid "block"
+msgstr "Bloquer"
-#: ../../include/nav.php:194
-msgid "Mark all events seen"
-msgstr "Marquer tous les événements comme vus"
+#: ../../include/bbcode.php:201 ../../mod/impel.php:54
+msgid "menu"
+msgstr "Menu"
-#: ../../include/nav.php:196
-msgid "Manage Your Channels"
-msgstr "Gérer vos canaux"
+#: ../../include/bbcode.php:215
+msgid "QR code"
+msgstr "code QR"
-#: ../../include/nav.php:198
-msgid "Account/Channel Settings"
-msgstr "Réglages du Compte/Canal"
+#: ../../include/bbcode.php:266
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s a écrit %2$s qui suit %3$s"
-#: ../../include/nav.php:206 ../../mod/admin.php:123
-msgid "Admin"
-msgstr "Administrateur"
+#: ../../include/bbcode.php:268 ../../mod/tagger.php:51
+msgid "post"
+msgstr "l'article"
-#: ../../include/nav.php:206
-msgid "Site Setup and Configuration"
-msgstr "Configuration du site"
+#: ../../include/bbcode.php:518
+msgid "Different viewers will see this text differently"
+msgstr "Ce texte aura un rendu différent en fonction des navigateurs"
-#: ../../include/nav.php:231
-msgid "Nothing new here"
-msgstr "Aucun nouveau contenu trouvé"
+#: ../../include/bbcode.php:729
+msgid "$1 spoiler"
+msgstr "Dévoile&nbsp;: $1"
-#: ../../include/nav.php:235
-msgid "Please wait..."
-msgstr "Merci de patienter..."
+#: ../../include/bbcode.php:756
+msgid "$1 wrote:"
+msgstr "$1 a écrit&nbsp;:"
#: ../../include/bookmarks.php:35
#, php-format
msgid "%1$s's bookmarks"
msgstr "Favoris de %1$s"
-#: ../../include/taxonomy.php:210
-msgid "Tags"
-msgstr "Étiquettes"
-
-#: ../../include/taxonomy.php:227
-msgid "Keywords"
-msgstr "Mots-clefs"
-
-#: ../../include/taxonomy.php:252
-msgid "have"
-msgstr "ont"
-
-#: ../../include/taxonomy.php:252
-msgid "has"
-msgstr "a"
-
-#: ../../include/taxonomy.php:253
-msgid "want"
-msgstr "veulent"
-
-#: ../../include/taxonomy.php:253
-msgid "wants"
-msgstr "veut"
-
-#: ../../include/taxonomy.php:254 ../../include/ItemObject.php:208
-msgid "like"
-msgstr "aime"
+#: ../../include/chat.php:23
+msgid "Missing room name"
+msgstr "Il manque le nom du salon"
-#: ../../include/taxonomy.php:254
-msgid "likes"
-msgstr "aiment"
+#: ../../include/chat.php:32
+msgid "Duplicate room name"
+msgstr "Un salon de ce nom existe déjà"
-#: ../../include/taxonomy.php:255 ../../include/ItemObject.php:209
-msgid "dislike"
-msgstr "déteste"
+#: ../../include/chat.php:82 ../../include/chat.php:90
+msgid "Invalid room specifier."
+msgstr "Identifiant de salon invalide."
-#: ../../include/taxonomy.php:255
-msgid "dislikes"
-msgstr "détestent"
+#: ../../include/chat.php:120
+msgid "Room not found."
+msgstr "Salon introuvable."
-#: ../../include/taxonomy.php:338 ../../include/identity.php:999
-#: ../../include/ItemObject.php:134
-msgctxt "noun"
-msgid "Like"
-msgid_plural "Likes"
-msgstr[0] "J'aime"
-msgstr[1] "J'aime"
+#: ../../include/chat.php:141
+msgid "Room is full"
+msgstr "Le salon est plein"
-#: ../../include/comanche.php:35 ../../view/theme/apw/php/config.php:185
+#: ../../include/comanche.php:34 ../../mod/admin.php:390
+#: ../../view/theme/apw/php/config.php:185
msgid "Default"
msgstr "Défaut"
+#: ../../include/security.php:349
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "Le formulaire n'est plus sécurisé, probablement parce qu'il est ouvert depuis trop longtemps (plus de 3 heures)."
+
#: ../../include/contact_selectors.php:56
msgid "Frequently"
msgstr "Constamment"
@@ -1175,8 +1819,9 @@ msgstr "OStatus"
msgid "RSS/Atom"
msgstr "RSS/Atom"
-#: ../../include/contact_selectors.php:79 ../../mod/admin.php:763
-#: ../../mod/admin.php:772 ../../boot.php:1500
+#: ../../include/contact_selectors.php:79 ../../mod/admin.php:822
+#: ../../mod/admin.php:831 ../../mod/id.php:15 ../../mod/id.php:16
+#: ../../boot.php:1553
msgid "Email"
msgstr "Courriel"
@@ -1211,7 +1856,7 @@ msgid_plural "%d invitations available"
msgstr[0] "%d invitation disponible"
msgstr[1] "%d invitations disponibles"
-#: ../../include/contact_widgets.php:19 ../../mod/admin.php:455
+#: ../../include/contact_widgets.php:19 ../../mod/admin.php:457
msgid "Advanced"
msgstr "Avancé"
@@ -1231,12 +1876,13 @@ msgstr "Ajouter/Suivre"
msgid "Examples: Robert Morgenstein, Fishing"
msgstr "Exemples: Robert Morgenstein, Course à pieds"
-#: ../../include/contact_widgets.php:26 ../../mod/connections.php:392
-#: ../../mod/directory.php:222 ../../mod/directory.php:227
+#: ../../include/contact_widgets.php:26 ../../mod/connections.php:273
+#: ../../mod/directory.php:379 ../../mod/directory.php:384
msgid "Find"
msgstr "Trouver"
-#: ../../include/contact_widgets.php:27 ../../mod/suggest.php:59
+#: ../../include/contact_widgets.php:27 ../../mod/directory.php:383
+#: ../../mod/suggest.php:60
msgid "Channel Suggestions"
msgstr "Canaux suggérés"
@@ -1249,443 +1895,31 @@ msgid "Invite Friends"
msgstr "Inviter des amis"
#: ../../include/contact_widgets.php:32
-msgid "Exammple: name=fred and country=iceland"
-msgstr "Exemple: name=fred and country=iceland"
-
-#: ../../include/contact_widgets.php:33
-msgid "Advanced Find"
-msgstr "Recherche avancée"
-
-#: ../../include/contact_widgets.php:58 ../../include/features.php:69
-#: ../../include/widgets.php:296
-msgid "Saved Folders"
-msgstr "Dossiers sauvegardés"
-
-#: ../../include/contact_widgets.php:61 ../../include/contact_widgets.php:96
-#: ../../include/widgets.php:299
-msgid "Everything"
-msgstr "Tout"
-
-#: ../../include/contact_widgets.php:93 ../../include/widgets.php:29
-msgid "Categories"
-msgstr "Catégories"
+msgid "Advanced example: name=fred and country=iceland"
+msgstr "Exemple avancé&nbsp;: name=fred and country=iceland"
-#: ../../include/contact_widgets.php:126
+#: ../../include/contact_widgets.php:125
#, php-format
msgid "%d connection in common"
msgid_plural "%d connections in common"
msgstr[0] "%d relation en commun"
msgstr[1] "%d relations en commun"
-#: ../../include/contact_widgets.php:131
+#: ../../include/contact_widgets.php:130
msgid "show more"
msgstr "montrer plus"
-#: ../../include/event.php:326
-msgid "This event has been added to your calendar."
-msgstr "Cet événement a été ajouté à votre calendrier."
-
-#: ../../include/zot.php:624
-msgid "Invalid data packet"
-msgstr "Paquet de données invalide"
-
-#: ../../include/zot.php:638
-msgid "Unable to verify channel signature"
-msgstr "Impossible de vérifier la signature du canal"
-
-#: ../../include/zot.php:835
-#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Impossible de vérifier la signature de site pour %s"
-
-#: ../../include/datetime.php:43 ../../include/datetime.php:45
-msgid "Miscellaneous"
-msgstr "Divers"
-
-#: ../../include/datetime.php:152 ../../include/datetime.php:284
-msgid "year"
-msgstr "année"
-
-#: ../../include/datetime.php:157 ../../include/datetime.php:285
-msgid "month"
-msgstr "mois"
-
-#: ../../include/datetime.php:162 ../../include/datetime.php:287
-msgid "day"
-msgstr "jour"
-
-#: ../../include/datetime.php:275
-msgid "never"
-msgstr "jamais"
-
-#: ../../include/datetime.php:281
-msgid "less than a second ago"
-msgstr "à l'instant"
-
-#: ../../include/datetime.php:284
-msgid "years"
-msgstr "années"
-
-#: ../../include/datetime.php:285
-msgid "months"
-msgstr "mois"
-
-#: ../../include/datetime.php:286
-msgid "week"
-msgstr "semaine"
-
-#: ../../include/datetime.php:286
-msgid "weeks"
-msgstr "semaines"
-
-#: ../../include/datetime.php:287
-msgid "days"
-msgstr "jours"
-
-#: ../../include/datetime.php:288
-msgid "hour"
-msgstr "heure"
-
-#: ../../include/datetime.php:288
-msgid "hours"
-msgstr "heures"
-
-#: ../../include/datetime.php:289
-msgid "minute"
-msgstr "minute"
-
-#: ../../include/datetime.php:289
-msgid "minutes"
-msgstr "minutes"
-
-#: ../../include/datetime.php:290
-msgid "second"
-msgstr "seconde"
-
-#: ../../include/datetime.php:290
-msgid "seconds"
-msgstr "secondes"
-
-#: ../../include/datetime.php:299
-#, php-format
-msgid "%1$d %2$s ago"
-msgstr "il y a %1$d %2$s"
-
-#: ../../include/datetime.php:504
-#, php-format
-msgid "%1$s's birthday"
-msgstr "Anniversaire de %1$s"
-
-#: ../../include/datetime.php:505
-#, php-format
-msgid "Happy Birthday %1$s"
-msgstr "Joyeux Anniversaire %1$s"
-
-#: ../../include/dir_fns.php:36
-msgid "Sort Options"
-msgstr "Options de tri"
-
-#: ../../include/dir_fns.php:37
-msgid "Alphabetic"
-msgstr "Alphabétique"
-
-#: ../../include/dir_fns.php:38
-msgid "Reverse Alphabetic"
-msgstr "Alphabétique inversé"
-
-#: ../../include/dir_fns.php:39
-msgid "Newest to Oldest"
-msgstr "Anté-chronologique"
-
-#: ../../include/dir_fns.php:51
-msgid "Enable Safe Search"
-msgstr "Activer la recherche sûre"
-
-#: ../../include/dir_fns.php:53
-msgid "Disable Safe Search"
-msgstr "Désactiver la recherche sûre"
-
-#: ../../include/dir_fns.php:55
-msgid "Safe Mode"
-msgstr "Mode sûr"
-
-#: ../../include/enotify.php:41
-msgid "Hubzilla Notification"
-msgstr "Notification Matrice Rouge"
-
-#: ../../include/enotify.php:42
-msgid "hubzilla"
-msgstr "Matrice Rouge"
-
-#: ../../include/enotify.php:44
-msgid "Thank You,"
-msgstr "Merci,"
-
-#: ../../include/enotify.php:46
-#, php-format
-msgid "%s Administrator"
-msgstr "l'administrateur de %s"
-
-#: ../../include/enotify.php:81
-#, php-format
-msgid "%s <!item_type!>"
-msgstr "%s <!item_type!>"
-
-#: ../../include/enotify.php:85
-#, php-format
-msgid "[Red:Notify] New mail received at %s"
-msgstr "[Red:Notification] Nouveau message reçu sur %s"
-
-#: ../../include/enotify.php:87
-#, php-format
-msgid "%1$s, %2$s sent you a new private message at %3$s."
-msgstr "%1$s, vous avez reçu un message privé sur %3$s, de la part de %2$s."
-
-#: ../../include/enotify.php:88
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s vous a envoyé %2$s."
-
-#: ../../include/enotify.php:88
-msgid "a private message"
-msgstr "un message privé"
-
-#: ../../include/enotify.php:89
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Merci de visiter %s pour voir et/ou répondre à vos messages privés."
-
-#: ../../include/enotify.php:144
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
-msgstr "%1$s, %2$s a commenté sur [zrl=%3$s]%4$s[/zrl]"
-
-#: ../../include/enotify.php:152
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
-msgstr "%1$s, %2$s a commenté sur [zrl=%3$s]%5$s de %4$s[/zrl]"
-
-#: ../../include/enotify.php:161
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s a commenté [zrl=%3$s]votre %4$s[/zrl]"
-
-#: ../../include/enotify.php:172
-#, php-format
-msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Red:Notification] Commentaire de %2$s sur conversation #%1$d"
-
-#: ../../include/enotify.php:173
-#, php-format
-msgid "%1$s, %2$s commented on an item/conversation you have been following."
-msgstr "%1$s, %2$s a commenté un élément de conversation que vous suivez."
-
-#: ../../include/enotify.php:176 ../../include/enotify.php:191
-#: ../../include/enotify.php:217 ../../include/enotify.php:236
-#: ../../include/enotify.php:250
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Merci de visiter %s pour voir et/ou répondre sur cette conversation."
-
-#: ../../include/enotify.php:182
-#, php-format
-msgid "[Red:Notify] %s posted to your profile wall"
-msgstr "[Red:Notification] %s a publié sur votre profil"
-
-#: ../../include/enotify.php:184
-#, php-format
-msgid "%1$s, %2$s posted to your profile wall at %3$s"
-msgstr "%1$s, %2$s a publié sur votre profil à %3$s"
-
-#: ../../include/enotify.php:186
-#, php-format
-msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
-msgstr "%1$s, %2$s a publié sur [zrl=%3$s]votre profil[/zrl]"
-
-#: ../../include/enotify.php:210
-#, php-format
-msgid "[Red:Notify] %s tagged you"
-msgstr "[Red:Notification] %s vous a étiqueté"
-
-#: ../../include/enotify.php:211
-#, php-format
-msgid "%1$s, %2$s tagged you at %3$s"
-msgstr "%1$s, vous avez été étiqueté sur %3$s par %2$s"
-
-#: ../../include/enotify.php:212
-#, php-format
-msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%3$s]vous a étiqueté[/zrl]."
-
-#: ../../include/enotify.php:225
-#, php-format
-msgid "[Red:Notify] %1$s poked you"
-msgstr "[Red:Notification] %1$s vous a cogné"
-
-#: ../../include/enotify.php:226
-#, php-format
-msgid "%1$s, %2$s poked you at %3$s"
-msgstr "%1$s, %2$s vous a cogné sur %3$s
-
-#: ../../include/enotify.php:227
-#, php-format
-msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%2$s]vous a cogné[/zrl]."
-
-#: ../../include/enotify.php:243
-#, php-format
-msgid "[Red:Notify] %s tagged your post"
-msgstr "[Red:Notification] %s a étiqueté votre publication"
-
-#: ../../include/enotify.php:244
-#, php-format
-msgid "%1$s, %2$s tagged your post at %3$s"
-msgstr "%1$s, %2$s a étiqueté votre publication sur %3$s"
-
-#: ../../include/enotify.php:245
-#, php-format
-msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
-msgstr "%1$s, %2$s a étiqueté [zrl=%3$s]votre publication[/zrl]"
-
-#: ../../include/enotify.php:257
-msgid "[Red:Notify] Introduction received"
-msgstr "[Red:Notification] Nouvelle introduction"
-
-#: ../../include/enotify.php:258
-#, php-format
-msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
-msgstr "%1$s, vous avez reçu une demande de mise en relation de '%2$s' sur %3$s"
-
-#: ../../include/enotify.php:259
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
-msgstr "%1$s, vous avez reçu [zrl=%2$s]une demande de mise en relation[/zrl] de %3$s."
-
-#: ../../include/enotify.php:263 ../../include/enotify.php:282
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "Vous pouvez visiter leur profil sur %s"
-
-#: ../../include/enotify.php:265
-#, php-format
-msgid "Please visit %s to approve or reject the connection request."
-msgstr "Merci de visiter %s avant d'approuver (ou non) cette demande de relation."
-
-#: ../../include/enotify.php:272
-msgid "[Red:Notify] Friend suggestion received"
-msgstr "[Red:Notification] Nouvelle suggestion d'amitié"
-
-#: ../../include/enotify.php:273
-#, php-format
-msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
-msgstr "%1$s, vous avez reçu une suggestion de relation de '%2$s' à %3$s"
-
-#: ../../include/enotify.php:274
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
-"%4$s."
-msgstr "%1$s, avez reçu %3$s comme [zrl=%2$s]une suggestion de relation[/zrl] de %4$s."
-
-#: ../../include/enotify.php:280
-msgid "Name:"
-msgstr "Nom&nbsp;:"
-
-#: ../../include/enotify.php:281
-msgid "Photo:"
-msgstr "Photo&nbsp;:"
-
-#: ../../include/enotify.php:284
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Merci de visiter %s pour donner suite (ou non) à cette suggestion."
-
-#: ../../include/enotify.php:474
-msgid "[Red:Notify]"
-msgstr "[Red:Notification]"
-
-#: ../../include/reddav.php:1145 ../../include/reddav.php:1288
-msgid "parent"
-msgstr "retour"
-
-#: ../../include/reddav.php:1169
-msgid "Collection"
-msgstr "Collection"
-
-#: ../../include/reddav.php:1172
-msgid "Principal"
-msgstr "Principal"
-
-#: ../../include/reddav.php:1175
-msgid "Addressbook"
-msgstr "Carnet d'adresse"
-
-#: ../../include/reddav.php:1178
-msgid "Calendar"
-msgstr "Calendrier"
-
-#: ../../include/reddav.php:1181
-msgid "Schedule Inbox"
-msgstr "Calendrier - Message entrants"
-
-#: ../../include/reddav.php:1184
-msgid "Schedule Outbox"
-msgstr "Calendrier - Message sortants"
-
-#: ../../include/reddav.php:1262
-#, php-format
-msgid "%1$s used"
-msgstr "%1$s utilisé"
-
-#: ../../include/reddav.php:1267
-#, php-format
-msgid "%1$s used of %2$s (%3$s&#37;)"
-msgstr "%1$s utilisé de %2$s (%3$s&#37;)"
-
-#: ../../include/reddav.php:1284 ../../mod/settings.php:519
-#: ../../mod/settings.php:545 ../../mod/admin.php:902
-msgid "Name"
-msgstr "Nom"
-
-#: ../../include/reddav.php:1285
-msgid "Type"
-msgstr "Type"
-
-#: ../../include/reddav.php:1286
-msgid "Size"
-msgstr "Taille"
-
-#: ../../include/reddav.php:1287
-msgid "Last Modified"
-msgstr "Modifié le"
-
-#: ../../include/reddav.php:1291
-msgid "Total"
-msgstr "Total"
-
-#: ../../include/reddav.php:1344
-msgid "Create new folder"
-msgstr "Nouveau dossier"
-
-#: ../../include/reddav.php:1345 ../../mod/mitem.php:142 ../../mod/menu.php:84
-#: ../../mod/new_channel.php:117
-msgid "Create"
-msgstr "Créer"
-
-#: ../../include/reddav.php:1346
-msgid "Upload file"
-msgstr "Téléverser un fichier"
-
-#: ../../include/reddav.php:1347 ../../mod/profile_photo.php:361
-msgid "Upload"
-msgstr "Envoyer"
-
-#: ../../include/conversation.php:126 ../../mod/like.php:89
+#: ../../include/conversation.php:126 ../../mod/like.php:113
msgid "channel"
msgstr "canal"
-#: ../../include/conversation.php:167 ../../mod/like.php:333
+#: ../../include/conversation.php:164 ../../include/diaspora.php:2152
+#: ../../mod/like.php:397
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "%1$s aime %3$s de %2$s"
+
+#: ../../include/conversation.php:167 ../../mod/like.php:399
#, php-format
msgid "%1$s doesn't like %2$s's %3$s"
msgstr "%1$s déteste %3$s de %2$s"
@@ -1700,1393 +1934,1403 @@ msgstr "%1$s ajoute %2$s à ses relations"
msgid "%1$s poked %2$s"
msgstr "%1$s a cogné %2$s"
-#: ../../include/conversation.php:261 ../../mod/mood.php:63
+#: ../../include/conversation.php:260 ../../mod/mood.php:63
#, php-format
msgctxt "mood"
msgid "%1$s is %2$s"
msgstr "%1$s est %2$s"
-#: ../../include/conversation.php:634 ../../include/ItemObject.php:114
-msgid "Select"
-msgstr "Sélectionner"
+#: ../../include/conversation.php:583 ../../mod/photos.php:996
+msgctxt "title"
+msgid "Likes"
+msgstr "J'aime"
-#: ../../include/conversation.php:642 ../../include/ItemObject.php:89
-#: ../../mod/photos.php:850
-msgid "Private Message"
-msgstr "Message Privé"
+#: ../../include/conversation.php:583 ../../mod/photos.php:996
+msgctxt "title"
+msgid "Dislikes"
+msgstr "Je n'aime pas"
-#: ../../include/conversation.php:649 ../../include/ItemObject.php:182
-msgid "Message is verified"
-msgstr "Message vérifié"
+#: ../../include/conversation.php:584 ../../mod/photos.php:997
+msgctxt "title"
+msgid "Agree"
+msgstr "Accord"
-#: ../../include/conversation.php:669
+#: ../../include/conversation.php:584 ../../mod/photos.php:997
+msgctxt "title"
+msgid "Disagree"
+msgstr "Désaccord"
+
+#: ../../include/conversation.php:584 ../../mod/photos.php:997
+msgctxt "title"
+msgid "Abstain"
+msgstr "Abstention"
+
+#: ../../include/conversation.php:585 ../../mod/photos.php:998
+msgctxt "title"
+msgid "Attending"
+msgstr "Participations"
+
+#: ../../include/conversation.php:585 ../../mod/photos.php:998
+msgctxt "title"
+msgid "Not attending"
+msgstr "Non-participations"
+
+#: ../../include/conversation.php:585 ../../mod/photos.php:998
+msgctxt "title"
+msgid "Might attend"
+msgstr "Participation possible"
+
+#: ../../include/conversation.php:703
#, php-format
msgid "View %s's profile @ %s"
msgstr "Voir le profil de %s @ %s"
-#: ../../include/conversation.php:683
+#: ../../include/conversation.php:718
msgid "Categories:"
msgstr "Catégories&nbsp;:"
-#: ../../include/conversation.php:684
+#: ../../include/conversation.php:719
msgid "Filed under:"
msgstr "Classé sous&nbsp;:"
-#: ../../include/conversation.php:693 ../../include/ItemObject.php:250
-#, php-format
-msgid " from %s"
-msgstr "de %s"
-
-#: ../../include/conversation.php:696 ../../include/ItemObject.php:253
-#, php-format
-msgid "last edited: %s"
-msgstr "dernière édition&nbsp;: %s"
-
-#: ../../include/conversation.php:697 ../../include/ItemObject.php:254
-#, php-format
-msgid "Expires: %s"
-msgstr "Expire&nbsp;: %s"
-
-#: ../../include/conversation.php:712
+#: ../../include/conversation.php:746
msgid "View in context"
msgstr "Voir en contexte"
-#: ../../include/conversation.php:714 ../../include/conversation.php:1130
-#: ../../include/ItemObject.php:294 ../../mod/editblock.php:120
-#: ../../mod/editlayout.php:115 ../../mod/editpost.php:121
-#: ../../mod/editwebpage.php:152 ../../mod/photos.php:983
-#: ../../mod/mail.php:231 ../../mod/mail.php:346
-msgid "Please wait"
-msgstr "Merci de patienter"
-
-#: ../../include/conversation.php:841
+#: ../../include/conversation.php:857
msgid "remove"
msgstr "supprimer"
-#: ../../include/conversation.php:845
-msgid "Loading..."
-msgstr "Chargement..."
-
-#: ../../include/conversation.php:846
+#: ../../include/conversation.php:862
msgid "Delete Selected Items"
msgstr "Supprimer les éléments selectionnés"
-#: ../../include/conversation.php:937
+#: ../../include/conversation.php:950
msgid "View Source"
msgstr "Voir source"
-#: ../../include/conversation.php:938
+#: ../../include/conversation.php:951
msgid "Follow Thread"
msgstr "Suivre discussion"
-#: ../../include/conversation.php:939
+#: ../../include/conversation.php:952
msgid "View Status"
msgstr "Voir état"
-#: ../../include/conversation.php:941
+#: ../../include/conversation.php:954
msgid "View Photos"
msgstr "Voir photos"
-#: ../../include/conversation.php:942
+#: ../../include/conversation.php:955
msgid "Matrix Activity"
msgstr "Activité sur la matrice"
-#: ../../include/conversation.php:943
+#: ../../include/conversation.php:957
msgid "Edit Contact"
msgstr "Éditer contact"
-#: ../../include/conversation.php:944
+#: ../../include/conversation.php:958
msgid "Send PM"
msgstr "Envoyer un Message Privé"
-#: ../../include/conversation.php:1001
+#: ../../include/conversation.php:1073
#, php-format
msgid "%s likes this."
msgstr "%s aime ça."
-#: ../../include/conversation.php:1001
+#: ../../include/conversation.php:1073
#, php-format
msgid "%s doesn't like this."
msgstr "%s déteste ça."
-#: ../../include/conversation.php:1005
+#: ../../include/conversation.php:1077
#, php-format
msgid "<span %1$s>%2$d people</span> like this."
msgid_plural "<span %1$s>%2$d people</span> like this."
msgstr[0] ""
msgstr[1] "<span %1$s>%2$d personne(s)</span> aime(nt) ça."
-#: ../../include/conversation.php:1007
+#: ../../include/conversation.php:1079
#, php-format
msgid "<span %1$s>%2$d people</span> don't like this."
msgid_plural "<span %1$s>%2$d people</span> don't like this."
msgstr[0] ""
msgstr[1] "<span %1$s>%2$d personne(s)</span> déteste(nt) ça."
-#: ../../include/conversation.php:1013
+#: ../../include/conversation.php:1085
msgid "and"
msgstr "et"
-#: ../../include/conversation.php:1016
+#: ../../include/conversation.php:1088
#, php-format
msgid ", and %d other people"
msgid_plural ", and %d other people"
msgstr[0] ""
msgstr[1] ", et %d autre(s) personne(s)"
-#: ../../include/conversation.php:1017
+#: ../../include/conversation.php:1089
#, php-format
msgid "%s like this."
msgstr "%s aime ça."
-#: ../../include/conversation.php:1017
+#: ../../include/conversation.php:1089
#, php-format
msgid "%s don't like this."
msgstr "%s déteste ça."
-#: ../../include/conversation.php:1074
+#: ../../include/conversation.php:1151
msgid "Visible to <strong>everybody</strong>"
msgstr "Visible par <strong>tout le monde</strong>"
-#: ../../include/conversation.php:1075 ../../mod/mail.php:167
-#: ../../mod/mail.php:279
+#: ../../include/conversation.php:1152 ../../mod/mail.php:174
+#: ../../mod/mail.php:289
msgid "Please enter a link URL:"
msgstr "Merci d'entrer l'URL d'un lien&nbsp;:"
-#: ../../include/conversation.php:1076
+#: ../../include/conversation.php:1153
msgid "Please enter a video link/URL:"
msgstr "Merci d'entrer l'URL d'une video&nbsp;:"
-#: ../../include/conversation.php:1077
+#: ../../include/conversation.php:1154
msgid "Please enter an audio link/URL:"
-msgstr "Merci d'entrer l'URL d'un contenu audio&nbsp;:"
+msgstr "Merci d'entrer l'URL d'un contenu audio&nsbp;:"
-#: ../../include/conversation.php:1078
+#: ../../include/conversation.php:1155
msgid "Tag term:"
msgstr "Étiquette&nbsp;:"
-#: ../../include/conversation.php:1079 ../../mod/filer.php:49
+#: ../../include/conversation.php:1156 ../../mod/filer.php:49
msgid "Save to Folder:"
msgstr "Classer dans le dossier&nbsp;:"
-#: ../../include/conversation.php:1080
+#: ../../include/conversation.php:1157
msgid "Where are you right now?"
msgstr "Où êtes-vous présentement?"
-#: ../../include/conversation.php:1081 ../../mod/editpost.php:52
-#: ../../mod/mail.php:168 ../../mod/mail.php:280
+#: ../../include/conversation.php:1158 ../../mod/mail.php:175
+#: ../../mod/mail.php:290 ../../mod/editpost.php:47
msgid "Expires YYYY-MM-DD HH:MM"
msgstr "Expire YYYY-MM-DD HH:MM"
-#: ../../include/conversation.php:1105 ../../mod/photos.php:982
-#: ../../mod/layouts.php:113
+#: ../../include/conversation.php:1185 ../../mod/photos.php:961
+#: ../../mod/blocks.php:154 ../../mod/layouts.php:184
+#: ../../mod/webpages.php:182
msgid "Share"
msgstr "Partager"
-#: ../../include/conversation.php:1107 ../../mod/editwebpage.php:139
-msgid "Page link title"
-msgstr "Titre du lien vers la page"
+#: ../../include/conversation.php:1187
+msgid "Page link name"
+msgstr "Nom du lien vers la page"
-#: ../../include/conversation.php:1110
+#: ../../include/conversation.php:1190
msgid "Post as"
msgstr "Publier en tant que"
-#: ../../include/conversation.php:1111 ../../mod/editblock.php:112
-#: ../../mod/editlayout.php:107 ../../mod/editpost.php:113
-#: ../../mod/editwebpage.php:144 ../../mod/mail.php:228 ../../mod/mail.php:342
+#: ../../include/conversation.php:1197 ../../mod/mail.php:238
+#: ../../mod/mail.php:352 ../../mod/editblock.php:141
+#: ../../mod/editlayout.php:139 ../../mod/editpost.php:112
+#: ../../mod/editwebpage.php:184
msgid "Upload photo"
msgstr "Téléverser une photo"
-#: ../../include/conversation.php:1112
+#: ../../include/conversation.php:1198
msgid "upload photo"
msgstr "téléverser une photo"
-#: ../../include/conversation.php:1113 ../../mod/editblock.php:113
-#: ../../mod/editlayout.php:108 ../../mod/editpost.php:114
-#: ../../mod/editwebpage.php:145 ../../mod/mail.php:229 ../../mod/mail.php:343
+#: ../../include/conversation.php:1199 ../../mod/mail.php:239
+#: ../../mod/mail.php:353 ../../mod/editblock.php:142
+#: ../../mod/editlayout.php:140 ../../mod/editpost.php:113
+#: ../../mod/editwebpage.php:185
msgid "Attach file"
msgstr "Attacher un fichier"
-#: ../../include/conversation.php:1114
+#: ../../include/conversation.php:1200
msgid "attach file"
msgstr "attacher un fichier"
-#: ../../include/conversation.php:1115 ../../mod/editblock.php:114
-#: ../../mod/editlayout.php:109 ../../mod/editpost.php:115
-#: ../../mod/editwebpage.php:146 ../../mod/mail.php:230 ../../mod/mail.php:344
+#: ../../include/conversation.php:1201 ../../mod/mail.php:240
+#: ../../mod/mail.php:354 ../../mod/editblock.php:143
+#: ../../mod/editlayout.php:141 ../../mod/editpost.php:114
+#: ../../mod/editwebpage.php:186
msgid "Insert web link"
msgstr "Insérer lien web"
-#: ../../include/conversation.php:1116
+#: ../../include/conversation.php:1202
msgid "web link"
msgstr "lien web"
-#: ../../include/conversation.php:1117
+#: ../../include/conversation.php:1203
msgid "Insert video link"
msgstr "Insérer lien vidéo"
-#: ../../include/conversation.php:1118
+#: ../../include/conversation.php:1204
msgid "video link"
msgstr "lien vidéo"
-#: ../../include/conversation.php:1119
+#: ../../include/conversation.php:1205
msgid "Insert audio link"
msgstr "Insérer un lien audio"
-#: ../../include/conversation.php:1120
+#: ../../include/conversation.php:1206
msgid "audio link"
msgstr "lien audio"
-#: ../../include/conversation.php:1121 ../../mod/editblock.php:118
-#: ../../mod/editlayout.php:113 ../../mod/editpost.php:119
-#: ../../mod/editwebpage.php:150
+#: ../../include/conversation.php:1207 ../../mod/editblock.php:147
+#: ../../mod/editlayout.php:145 ../../mod/editpost.php:118
+#: ../../mod/editwebpage.php:190
msgid "Set your location"
msgstr "Spécifier votre emplacement géographique"
-#: ../../include/conversation.php:1122
+#: ../../include/conversation.php:1208
msgid "set location"
msgstr "spécifier l'emplacement géographique"
-#: ../../include/conversation.php:1123 ../../mod/editblock.php:119
-#: ../../mod/editlayout.php:114 ../../mod/editpost.php:120
-#: ../../mod/editwebpage.php:151
+#: ../../include/conversation.php:1209 ../../mod/editpost.php:120
+msgid "Toggle voting"
+msgstr "(Dés)activer le vote"
+
+#: ../../include/conversation.php:1212 ../../mod/editblock.php:148
+#: ../../mod/editlayout.php:146 ../../mod/editpost.php:119
+#: ../../mod/editwebpage.php:191
msgid "Clear browser location"
msgstr "Nettoyer l'emplacement géographique du navigateur"
-#: ../../include/conversation.php:1124
+#: ../../include/conversation.php:1213
msgid "clear location"
msgstr "nettoyer l'emplacement géographique"
-#: ../../include/conversation.php:1126 ../../mod/editblock.php:132
-#: ../../mod/editlayout.php:126 ../../mod/editpost.php:132
-#: ../../mod/editwebpage.php:167
-msgid "Set title"
-msgstr "Spécifier le titre"
+#: ../../include/conversation.php:1215 ../../mod/editblock.php:161
+#: ../../mod/editpost.php:135 ../../mod/editwebpage.php:207
+msgid "Title (optional)"
+msgstr "Titre (facultatif)"
-#: ../../include/conversation.php:1129 ../../mod/editblock.php:135
-#: ../../mod/editlayout.php:129 ../../mod/editpost.php:134
-#: ../../mod/editwebpage.php:169
-msgid "Categories (comma-separated list)"
-msgstr "Catégories (séparées par des virgules)"
+#: ../../include/conversation.php:1219 ../../mod/editblock.php:164
+#: ../../mod/editlayout.php:162 ../../mod/editpost.php:137
+#: ../../mod/editwebpage.php:209
+msgid "Categories (optional, comma-separated list)"
+msgstr "Catégories (facultatives, séparées par des virgules)"
-#: ../../include/conversation.php:1131 ../../mod/editblock.php:121
-#: ../../mod/editlayout.php:116 ../../mod/editpost.php:122
-#: ../../mod/editwebpage.php:153
+#: ../../include/conversation.php:1221 ../../mod/editblock.php:150
+#: ../../mod/editlayout.php:148 ../../mod/editpost.php:124
+#: ../../mod/editwebpage.php:193
msgid "Permission settings"
msgstr "Permissions"
-#: ../../include/conversation.php:1132
+#: ../../include/conversation.php:1222
msgid "permissions"
msgstr "permissions"
-#: ../../include/conversation.php:1139 ../../mod/editblock.php:129
-#: ../../mod/editlayout.php:123 ../../mod/editpost.php:129
-#: ../../mod/editwebpage.php:162
+#: ../../include/conversation.php:1230 ../../mod/editblock.php:158
+#: ../../mod/editlayout.php:155 ../../mod/editpost.php:132
+#: ../../mod/editwebpage.php:202
msgid "Public post"
msgstr "Contenu public"
-#: ../../include/conversation.php:1141 ../../mod/editblock.php:136
-#: ../../mod/editlayout.php:130 ../../mod/editpost.php:135
-#: ../../mod/editwebpage.php:170
+#: ../../include/conversation.php:1232 ../../mod/editblock.php:165
+#: ../../mod/editlayout.php:163 ../../mod/editpost.php:138
+#: ../../mod/editwebpage.php:210
msgid "Example: bob@example.com, mary@example.com"
msgstr "Exemple: robert@exemple.com, marie@exemple.com"
-#: ../../include/conversation.php:1154 ../../mod/editblock.php:146
-#: ../../mod/editlayout.php:140 ../../mod/editpost.php:146
-#: ../../mod/editwebpage.php:179 ../../mod/mail.php:235 ../../mod/mail.php:349
+#: ../../include/conversation.php:1245 ../../mod/mail.php:245
+#: ../../mod/mail.php:359 ../../mod/editblock.php:175
+#: ../../mod/editlayout.php:172 ../../mod/editpost.php:149
+#: ../../mod/editwebpage.php:219
msgid "Set expiration date"
msgstr "Définir la date d'expiration"
-#: ../../include/conversation.php:1156 ../../include/ItemObject.php:595
-#: ../../mod/editpost.php:148 ../../mod/mail.php:237 ../../mod/mail.php:351
-msgid "Encrypt text"
-msgstr "Chiffrer le texte"
-
-#: ../../include/conversation.php:1158 ../../mod/editpost.php:150
+#: ../../include/conversation.php:1249 ../../mod/editpost.php:153
+#: ../../mod/events.php:674
msgid "OK"
msgstr "Ok"
-#: ../../include/conversation.php:1159 ../../mod/settings.php:518
-#: ../../mod/settings.php:544 ../../mod/editpost.php:151
-#: ../../mod/fbrowser.php:82 ../../mod/fbrowser.php:117 ../../mod/tagrm.php:11
-#: ../../mod/tagrm.php:94
+#: ../../include/conversation.php:1250 ../../mod/editpost.php:154
+#: ../../mod/events.php:673 ../../mod/fbrowser.php:82
+#: ../../mod/fbrowser.php:117 ../../mod/settings.php:589
+#: ../../mod/settings.php:615 ../../mod/tagrm.php:11 ../../mod/tagrm.php:134
msgid "Cancel"
msgstr "Annuler"
-#: ../../include/conversation.php:1401
+#: ../../include/conversation.php:1492
msgid "Discover"
msgstr "À découvrir"
-#: ../../include/conversation.php:1404
+#: ../../include/conversation.php:1495
msgid "Imported public streams"
msgstr "Flux publics importés"
-#: ../../include/conversation.php:1409
+#: ../../include/conversation.php:1500
msgid "Commented Order"
msgstr "Commentaires Récents"
-#: ../../include/conversation.php:1412
+#: ../../include/conversation.php:1503
msgid "Sort by Comment Date"
msgstr "Trier par date de dernier commentaire"
-#: ../../include/conversation.php:1416
+#: ../../include/conversation.php:1507
msgid "Posted Order"
msgstr "Publications Récentes"
-#: ../../include/conversation.php:1419
+#: ../../include/conversation.php:1510
msgid "Sort by Post Date"
msgstr "Trier par date de publication"
-#: ../../include/conversation.php:1424 ../../include/widgets.php:82
-msgid "Personal"
-msgstr "Personnel"
-
-#: ../../include/conversation.php:1427
+#: ../../include/conversation.php:1518
msgid "Posts that mention or involve you"
msgstr "Publications qui vous mentionnent ou vous concernent d'une manière ou d'une autre"
-#: ../../include/conversation.php:1433 ../../mod/connections.php:211
-#: ../../mod/connections.php:224 ../../mod/menu.php:61
+#: ../../include/conversation.php:1524 ../../mod/connections.php:72
+#: ../../mod/connections.php:85 ../../mod/menu.php:110
msgid "New"
msgstr "Nouveautés"
-#: ../../include/conversation.php:1436
+#: ../../include/conversation.php:1527
msgid "Activity Stream - by date"
msgstr "Flux d'activité - par date"
-#: ../../include/conversation.php:1442
+#: ../../include/conversation.php:1533
msgid "Starred"
msgstr "Mis en avant"
-#: ../../include/conversation.php:1445
+#: ../../include/conversation.php:1536
msgid "Favourite Posts"
msgstr "Publications préférées"
-#: ../../include/conversation.php:1452
+#: ../../include/conversation.php:1543
msgid "Spam"
msgstr "Indésirable"
-#: ../../include/conversation.php:1455
+#: ../../include/conversation.php:1546
msgid "Posts flagged as SPAM"
msgstr "Publications marquées comme indésirables"
-#: ../../include/conversation.php:1491 ../../mod/admin.php:901
+#: ../../include/conversation.php:1590 ../../mod/admin.php:993
msgid "Channel"
msgstr "Canal"
-#: ../../include/conversation.php:1494
+#: ../../include/conversation.php:1593
msgid "Status Messages and Posts"
msgstr "Messages d'état et contributions"
-#: ../../include/conversation.php:1503
+#: ../../include/conversation.php:1602
msgid "About"
msgstr "À propos"
-#: ../../include/conversation.php:1506
+#: ../../include/conversation.php:1605
msgid "Profile Details"
msgstr "Détails du profil"
-#: ../../include/conversation.php:1524
+#: ../../include/conversation.php:1614 ../../include/photos.php:359
+msgid "Photo Albums"
+msgstr "Albums photo"
+
+#: ../../include/conversation.php:1623
msgid "Files and Storage"
msgstr "Fichiers et Stockage"
-#: ../../include/conversation.php:1533 ../../include/conversation.php:1536
+#: ../../include/conversation.php:1633 ../../include/conversation.php:1636
msgid "Chatrooms"
msgstr "Salons de clavardage"
-#: ../../include/conversation.php:1546
+#: ../../include/conversation.php:1649
msgid "Saved Bookmarks"
msgstr "Favoris sauvegardés"
-#: ../../include/conversation.php:1557
+#: ../../include/conversation.php:1659
msgid "Manage Webpages"
msgstr "Gérer les pages web"
-#: ../../include/features.php:23
+#: ../../include/conversation.php:1718
+msgctxt "noun"
+msgid "Attending"
+msgid_plural "Attending"
+msgstr[0] "Participation"
+msgstr[1] "Participations"
+
+#: ../../include/conversation.php:1721
+msgctxt "noun"
+msgid "Not Attending"
+msgid_plural "Not Attending"
+msgstr[0] "Non-participation"
+msgstr[1] "Non-participations"
+
+#: ../../include/conversation.php:1724
+msgctxt "noun"
+msgid "Undecided"
+msgid_plural "Undecided"
+msgstr[0] "Indécis"
+msgstr[1] ""
+
+#: ../../include/conversation.php:1727
+msgctxt "noun"
+msgid "Agree"
+msgid_plural "Agrees"
+msgstr[0] "D'accord"
+msgstr[1] "D'accord"
+
+#: ../../include/conversation.php:1730
+msgctxt "noun"
+msgid "Disagree"
+msgid_plural "Disagrees"
+msgstr[0] "Pas d'accord"
+msgstr[1] "Pas d'accord"
+
+#: ../../include/conversation.php:1733
+msgctxt "noun"
+msgid "Abstain"
+msgid_plural "Abstains"
+msgstr[0] "Sans opinion"
+msgstr[1] "Sans opinion"
+
+#: ../../include/datetime.php:48
+msgid "Miscellaneous"
+msgstr "Divers"
+
+#: ../../include/datetime.php:132
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "AAAA-MM-JJ ou MM-JJ"
+
+#: ../../include/datetime.php:235 ../../mod/appman.php:91
+#: ../../mod/appman.php:92 ../../mod/events.php:672
+msgid "Required"
+msgstr "Requis"
+
+#: ../../include/datetime.php:262 ../../boot.php:2358
+msgid "never"
+msgstr "jamais"
+
+#: ../../include/datetime.php:268
+msgid "less than a second ago"
+msgstr "à l'instant"
+
+#: ../../include/datetime.php:271
+msgid "year"
+msgstr "année"
+
+#: ../../include/datetime.php:271
+msgid "years"
+msgstr "années"
+
+#: ../../include/datetime.php:272
+msgid "month"
+msgstr "mois"
+
+#: ../../include/datetime.php:272
+msgid "months"
+msgstr "mois"
+
+#: ../../include/datetime.php:273
+msgid "week"
+msgstr "semaine"
+
+#: ../../include/datetime.php:273
+msgid "weeks"
+msgstr "semaines"
+
+#: ../../include/datetime.php:274
+msgid "day"
+msgstr "jour"
+
+#: ../../include/datetime.php:274
+msgid "days"
+msgstr "jours"
+
+#: ../../include/datetime.php:275
+msgid "hour"
+msgstr "heure"
+
+#: ../../include/datetime.php:275
+msgid "hours"
+msgstr "heures"
+
+#: ../../include/datetime.php:276
+msgid "minute"
+msgstr "minute"
+
+#: ../../include/datetime.php:276
+msgid "minutes"
+msgstr "minutes"
+
+#: ../../include/datetime.php:277
+msgid "second"
+msgstr "seconde"
+
+#: ../../include/datetime.php:277
+msgid "seconds"
+msgstr "secondes"
+
+#: ../../include/datetime.php:285
+#, php-format
+msgctxt "e.g. 22 hours ago, 1 minute ago"
+msgid "%1$d %2$s ago"
+msgstr "il y a %1$d %2$s"
+
+#: ../../include/datetime.php:519
+#, php-format
+msgid "%1$s's birthday"
+msgstr "Anniversaire de %1$s"
+
+#: ../../include/datetime.php:520
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Joyeux Anniversaire %1$s"
+
+#: ../../include/diaspora.php:2498
+msgid "Please choose"
+msgstr "Merci de choisir"
+
+#: ../../include/diaspora.php:2500
+msgid "Agree"
+msgstr "D'accord"
+
+#: ../../include/diaspora.php:2502
+msgid "Disagree"
+msgstr "Pas d'accord"
+
+#: ../../include/diaspora.php:2504
+msgid "Abstain"
+msgstr "Abstention"
+
+#: ../../include/dimport.php:34 ../../include/identity.php:217
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "Le surnom contient des caractères interdits, ou est déjà pris sur ce site."
+
+#: ../../include/dir_fns.php:126
+msgid "Directory Options"
+msgstr "Options d'annuaire"
+
+#: ../../include/dir_fns.php:128
+msgid "Safe Mode"
+msgstr "Mode sûr"
+
+#: ../../include/dir_fns.php:128 ../../include/dir_fns.php:129
+#: ../../include/dir_fns.php:130 ../../mod/admin.php:428 ../../mod/api.php:106
+#: ../../mod/photos.php:568 ../../mod/connedit.php:647
+#: ../../mod/connedit.php:675 ../../mod/filestorage.php:151
+#: ../../mod/filestorage.php:159 ../../mod/removeme.php:60
+#: ../../mod/settings.php:579 ../../mod/menu.php:94 ../../mod/menu.php:151
+#: ../../mod/mitem.php:159 ../../mod/mitem.php:160 ../../mod/mitem.php:232
+#: ../../mod/mitem.php:233 ../../view/theme/redbasic/php/config.php:104
+#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1555
+msgid "No"
+msgstr "Non"
+
+#: ../../include/dir_fns.php:128 ../../include/dir_fns.php:129
+#: ../../include/dir_fns.php:130 ../../mod/admin.php:430 ../../mod/api.php:105
+#: ../../mod/photos.php:568 ../../mod/filestorage.php:151
+#: ../../mod/filestorage.php:159 ../../mod/removeme.php:60
+#: ../../mod/settings.php:579 ../../mod/menu.php:94 ../../mod/menu.php:151
+#: ../../mod/mitem.php:159 ../../mod/mitem.php:160 ../../mod/mitem.php:232
+#: ../../mod/mitem.php:233 ../../view/theme/redbasic/php/config.php:104
+#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1555
+msgid "Yes"
+msgstr "Oui"
+
+#: ../../include/dir_fns.php:129
+msgid "Public Forums Only"
+msgstr "Seulement les forums publics"
+
+#: ../../include/dir_fns.php:130
+msgid "This Website Only"
+msgstr "Juste ce site"
+
+#: ../../include/enotify.php:96
+#, php-format
+msgid "%s <!item_type!>"
+msgstr "%s <!item_type!>"
+
+#: ../../include/enotify.php:100
+#, php-format
+msgid "[Red:Notify] New mail received at %s"
+msgstr "[Red:Notification] Nouveau message reçu sur %s"
+
+#: ../../include/enotify.php:102
+#, php-format
+msgid "%1$s, %2$s sent you a new private message at %3$s."
+msgstr "%1$s, vous avez reçu un message privé sur %3$s, de la part de %2$s."
+
+#: ../../include/enotify.php:103
+#, php-format
+msgid "%1$s sent you %2$s."
+msgstr "%1$s vous a envoyé %2$s."
+
+#: ../../include/enotify.php:103
+msgid "a private message"
+msgstr "un message privé"
+
+#: ../../include/enotify.php:104
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
+msgstr "Merci de visiter %s pour voir et/ou répondre à vos messages privés."
+
+#: ../../include/enotify.php:158
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
+msgstr "%1$s, %2$s a commenté sur [zrl=%3$s]%4$s[/zrl]"
+
+#: ../../include/enotify.php:166
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
+msgstr "%1$s, %2$s a commenté sur [zrl=%3$s]%5$s de %4$s[/zrl]"
+
+#: ../../include/enotify.php:175
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
+msgstr "%1$s, %2$s a commenté [zrl=%3$s]votre %4$s[/zrl]"
+
+#: ../../include/enotify.php:186
+#, php-format
+msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
+msgstr "[Red:Notification] Commentaire de %2$s sur conversation #%1$d"
+
+#: ../../include/enotify.php:187
+#, php-format
+msgid "%1$s, %2$s commented on an item/conversation you have been following."
+msgstr "%1$s, %2$s a commenté un élément de conversation que vous suivez."
+
+#: ../../include/enotify.php:190 ../../include/enotify.php:205
+#: ../../include/enotify.php:231 ../../include/enotify.php:249
+#: ../../include/enotify.php:263
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
+msgstr "Merci de visiter %s pour voir et/ou répondre sur cette conversation."
+
+#: ../../include/enotify.php:196
+#, php-format
+msgid "[Red:Notify] %s posted to your profile wall"
+msgstr "[Matrice Rouge:Notification] %s a publié sur votre profil"
+
+#: ../../include/enotify.php:198
+#, php-format
+msgid "%1$s, %2$s posted to your profile wall at %3$s"
+msgstr "%1$s, %2$s a publié sur votre profil à %3$s"
+
+#: ../../include/enotify.php:200
+#, php-format
+msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
+msgstr "%1$s, %2$s a publié sur [zrl=%3$s]votre profil[/zrl]"
+
+#: ../../include/enotify.php:224
+#, php-format
+msgid "[Red:Notify] %s tagged you"
+msgstr "[Red:Notification] %s vous a étiqueté"
+
+#: ../../include/enotify.php:225
+#, php-format
+msgid "%1$s, %2$s tagged you at %3$s"
+msgstr "%1$s, vous avez été étiqueté sur %3$s par %2$s"
+
+#: ../../include/enotify.php:226
+#, php-format
+msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%3$s]vous a étiqueté[/zrl]."
+
+#: ../../include/enotify.php:238
+#, php-format
+msgid "[Red:Notify] %1$s poked you"
+msgstr "[Red:Notification] %1$s vous a cogné"
+
+#: ../../include/enotify.php:239
+#, php-format
+msgid "%1$s, %2$s poked you at %3$s"
+msgstr "%1$s, vous avez été cogné/pointé/sollicité par %2$s sur %3$s"
+
+#: ../../include/enotify.php:240
+#, php-format
+msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%2$s]vous a cogné[/zrl]."
+
+#: ../../include/enotify.php:256
+#, php-format
+msgid "[Red:Notify] %s tagged your post"
+msgstr "[Matrice Rouge:Notification] %s a étiqueté votre publication"
+
+#: ../../include/enotify.php:257
+#, php-format
+msgid "%1$s, %2$s tagged your post at %3$s"
+msgstr "%1$s, %2$s a étiqueté votre publication sur %3$s"
+
+#: ../../include/enotify.php:258
+#, php-format
+msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+msgstr "%1$s, %2$s a étiqueté [zrl=%3$s]votre publication[/zrl]"
+
+#: ../../include/enotify.php:270
+msgid "[Red:Notify] Introduction received"
+msgstr "[Red:Notification] Nouvelle introduction"
+
+#: ../../include/enotify.php:271
+#, php-format
+msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
+msgstr "%1$s, vous avez reçu une demande de mise en relation de '%2$s' sur %3$s"
+
+#: ../../include/enotify.php:272
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
+msgstr "%1$s, vous avez reçu [zrl=%2$s]une demande de mise en relation[/zrl] de %3$s."
+
+#: ../../include/enotify.php:276 ../../include/enotify.php:295
+#, php-format
+msgid "You may visit their profile at %s"
+msgstr "Vous pouvez visiter leur profil sur %s"
+
+#: ../../include/enotify.php:278
+#, php-format
+msgid "Please visit %s to approve or reject the connection request."
+msgstr "Merci de visiter %s avant d'approuver (ou non) cette demande de relation."
+
+#: ../../include/enotify.php:285
+msgid "[Red:Notify] Friend suggestion received"
+msgstr "[Matrice Rouge:Notification] Nouvelle suggestion d'amitié"
+
+#: ../../include/enotify.php:286
+#, php-format
+msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
+msgstr "%1$s, vous avez reçu une suggestion de relation de '%2$s' à %3$s"
+
+#: ../../include/enotify.php:287
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
+"%4$s."
+msgstr "%1$s, avez reçu %3$s comme [zrl=%2$s]une suggestion de relation[/zrl] de %4$s."
+
+#: ../../include/enotify.php:293
+msgid "Name:"
+msgstr "Nom&nbsp;:"
+
+#: ../../include/enotify.php:294
+msgid "Photo:"
+msgstr "Photo&nbsp;:"
+
+#: ../../include/enotify.php:297
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
+msgstr "Merci de visiter %s pour donner suite (ou non) à cette suggestion."
+
+#: ../../include/enotify.php:508
+msgid "[Red:Notify]"
+msgstr "[Red:Notification]"
+
+#: ../../include/event.php:549
+msgid "This event has been added to your calendar."
+msgstr "Cet événement a été ajouté à votre calendrier."
+
+#: ../../include/features.php:38
msgid "General Features"
msgstr "Fonctionnalités générales"
-#: ../../include/features.php:25
+#: ../../include/features.php:40
msgid "Content Expiration"
msgstr "Expiration de contenu"
-#: ../../include/features.php:25
+#: ../../include/features.php:40
msgid "Remove posts/comments and/or private messages at a future time"
msgstr "Supprimer les contributions/commentaires et/ou messages privés plus tard"
-#: ../../include/features.php:26
+#: ../../include/features.php:41
msgid "Multiple Profiles"
msgstr "Profils multiples"
-#: ../../include/features.php:26
+#: ../../include/features.php:41
msgid "Ability to create multiple profiles"
msgstr "Possibilité de créer plusieurs profils"
-#: ../../include/features.php:27
+#: ../../include/features.php:42
msgid "Advanced Profiles"
msgstr "Profils Avancés"
-#: ../../include/features.php:27
+#: ../../include/features.php:42
msgid "Additional profile sections and selections"
msgstr "Sections additionnelles du profil"
-#: ../../include/features.php:28
+#: ../../include/features.php:43
msgid "Profile Import/Export"
msgstr "Importer/Exporter le profil"
-#: ../../include/features.php:28
+#: ../../include/features.php:43
msgid "Save and load profile details across sites/channels"
msgstr "Distribuer les détails du profil sur la matrice."
-#: ../../include/features.php:29
+#: ../../include/features.php:44
msgid "Web Pages"
msgstr "Pages web"
-#: ../../include/features.php:29
+#: ../../include/features.php:44
msgid "Provide managed web pages on your channel"
msgstr "Fournir des pages web, sous votre contrôle, sur votre canal"
-#: ../../include/features.php:30
+#: ../../include/features.php:45
msgid "Private Notes"
msgstr "Notes privées"
-#: ../../include/features.php:30
+#: ../../include/features.php:45
msgid "Enables a tool to store notes and reminders"
msgstr "Active un outil pour stocker notes et mémos"
-#: ../../include/features.php:35
-msgid "Extended Identity Sharing"
-msgstr "Partage d'identité étendue"
+#: ../../include/features.php:46
+msgid "Navigation Channel Select"
+msgstr "Sélection du canal par la navigation"
-#: ../../include/features.php:35
-msgid ""
-"Share your identity with all websites on the internet. When disabled, "
-"identity is only shared with sites in the matrix."
-msgstr "Partage votre identité avec tous les sites web du Monde. Si décoché, l'identité sera seulement partagée avec les sites de la matrice."
+#: ../../include/features.php:46
+msgid "Change channels directly from within the navigation dropdown menu"
+msgstr "Changez de canal directement depuis le menu de navigation"
+
+#: ../../include/features.php:47
+msgid "Photo Location"
+msgstr "Localisation des photos"
+
+#: ../../include/features.php:47
+msgid "If location data is available on uploaded photos, link this to a map."
+msgstr "Si des informations géographiques sont présentes dans les images téléversées, les afficher sur une carte."
-#: ../../include/features.php:36
+#: ../../include/features.php:49
msgid "Expert Mode"
msgstr "Mode expert"
-#: ../../include/features.php:36
+#: ../../include/features.php:49
msgid "Enable Expert Mode to provide advanced configuration options"
msgstr "Activer le mode expert pour accéder aux options avancées"
-#: ../../include/features.php:37
+#: ../../include/features.php:50
msgid "Premium Channel"
msgstr "Canal VIP"
-#: ../../include/features.php:37
+#: ../../include/features.php:50
msgid ""
"Allows you to set restrictions and terms on those that connect with your "
"channel"
msgstr "Vous permet d'appliquer des règles et restrictions aux relations de votre canal"
-#: ../../include/features.php:42
+#: ../../include/features.php:55
msgid "Post Composition Features"
msgstr "Fonctionnalités de composition"
-#: ../../include/features.php:44
+#: ../../include/features.php:57
msgid "Use Markdown"
msgstr "Utiliser Markdown"
-#: ../../include/features.php:44
+#: ../../include/features.php:57
msgid "Allow use of \"Markdown\" to format posts"
msgstr "Authoriser l'usage de \"Markdown\" pour le format des partages"
-#: ../../include/features.php:45
-msgid "Post Preview"
-msgstr "Aperçu avant publication"
-
-#: ../../include/features.php:45
-msgid "Allow previewing posts and comments before publishing them"
-msgstr "Permettre de prévisualiser les publications/commentaires"
+#: ../../include/features.php:58
+msgid "Large Photos"
+msgstr "Grandes photos"
-#: ../../include/features.php:46 ../../include/widgets.php:503
-#: ../../mod/sources.php:88
-msgid "Channel Sources"
-msgstr "Canaux sources"
+#: ../../include/features.php:58
+msgid ""
+"Include large (640px) photo thumbnails in posts. If not enabled, use small "
+"(320px) photo thumbnails"
+msgstr "Inclure une version large (640px) des aperçus dans les publications. Si désactivé, seulement inclure des aperçus de 320px."
-#: ../../include/features.php:46
+#: ../../include/features.php:59
msgid "Automatically import channel content from other channels or feeds"
msgstr "Importe automatiquement le contenus d'autres canaux ou flux dans le canal en cours"
-#: ../../include/features.php:47
+#: ../../include/features.php:60
msgid "Even More Encryption"
msgstr "Encore plus de chiffrement"
-#: ../../include/features.php:47
+#: ../../include/features.php:60
msgid ""
"Allow optional encryption of content end-to-end with a shared secret key"
msgstr "Permettre le chiffrement - optionnel - du contenu de bout-en-bout au moyen d'un secret partagé"
-#: ../../include/features.php:52
+#: ../../include/features.php:61
+msgid "Enable voting tools"
+msgstr "Activer les outils de vote"
+
+#: ../../include/features.php:61
+msgid "Provide a class of post which others can vote on"
+msgstr "Fournit un type de publication sur lequel les utilisateurs peuvent se prononcer"
+
+#: ../../include/features.php:67
msgid "Network and Stream Filtering"
msgstr "Filtrage du réseau et des flux"
-#: ../../include/features.php:53
+#: ../../include/features.php:68
msgid "Search by Date"
msgstr "Chercher par date"
-#: ../../include/features.php:53
+#: ../../include/features.php:68
msgid "Ability to select posts by date ranges"
msgstr "Pouvoir choisir des publications par date"
-#: ../../include/features.php:54
+#: ../../include/features.php:69
msgid "Collections Filter"
msgstr "Filtre des collections"
-#: ../../include/features.php:54
+#: ../../include/features.php:69
msgid "Enable widget to display Network posts only from selected collections"
msgstr "Activer une boîte qui permet de filtrer les publications du réseau parmi les collections selectionnées"
-#: ../../include/features.php:55 ../../include/widgets.php:265
-msgid "Saved Searches"
-msgstr "Recherches sauvées"
-
-#: ../../include/features.php:55
+#: ../../include/features.php:70
msgid "Save search terms for re-use"
msgstr "Sauver des termes de recherche pour utilisation ultérieure"
-#: ../../include/features.php:56
+#: ../../include/features.php:71
msgid "Network Personal Tab"
msgstr "Onglet \"réseau personnel\""
-#: ../../include/features.php:56
+#: ../../include/features.php:71
msgid "Enable tab to display only Network posts that you've interacted on"
msgstr "Activer un onglet affichant seulement les publications du réseau sur lesquelles vous êtes intervenu"
-#: ../../include/features.php:57
+#: ../../include/features.php:72
msgid "Network New Tab"
msgstr "Onglet \"nouveautés réseau\""
-#: ../../include/features.php:57
+#: ../../include/features.php:72
msgid "Enable tab to display all new Network activity"
msgstr "Activer un onglet avec toute activité récente sur le réseau"
-#: ../../include/features.php:58
+#: ../../include/features.php:73
msgid "Affinity Tool"
msgstr "Gérer l'affinité"
-#: ../../include/features.php:58
+#: ../../include/features.php:73
msgid "Filter stream activity by depth of relationships"
msgstr "Filtrer le flux d'activité en fonction de la profondeur des relations"
-#: ../../include/features.php:59
+#: ../../include/features.php:74
+msgid "Connection Filtering"
+msgstr "Filtrage de connexions"
+
+#: ../../include/features.php:74
+msgid "Filter incoming posts from connections based on keywords/content"
+msgstr "Filtrez les publications par leurs connexions, d'après des mots clés"
+
+#: ../../include/features.php:75
msgid "Suggest Channels"
msgstr "Suggérer des canaux"
-#: ../../include/features.php:59
+#: ../../include/features.php:75
msgid "Show channel suggestions"
msgstr "Montrer les suggestions de canaux"
-#: ../../include/features.php:64
+#: ../../include/features.php:80
msgid "Post/Comment Tools"
msgstr "Gérer les publications/commentaires"
-#: ../../include/features.php:66
-msgid "Edit Sent Posts"
-msgstr "Éditer les publications envoyées"
-
-#: ../../include/features.php:66
-msgid "Edit and correct posts and comments after sending"
-msgstr "Permettre d'éditer/corriger les publications/commentaires après envoi"
-
-#: ../../include/features.php:67
+#: ../../include/features.php:81
msgid "Tagging"
msgstr "Étiquettes"
-#: ../../include/features.php:67
+#: ../../include/features.php:81
msgid "Ability to tag existing posts"
msgstr "Permettre de marquer les publications existantes"
-#: ../../include/features.php:68
+#: ../../include/features.php:82
msgid "Post Categories"
msgstr "Catégoriser les publications"
-#: ../../include/features.php:68
+#: ../../include/features.php:82
msgid "Add categories to your posts"
msgstr "Ajouter des catégories à vos publications"
-#: ../../include/features.php:69
+#: ../../include/features.php:83
msgid "Ability to file posts under folders"
msgstr "Permettre de classer les publications dans des dossiers"
-#: ../../include/features.php:70
+#: ../../include/features.php:84
msgid "Dislike Posts"
msgstr "Détester les publications"
-#: ../../include/features.php:70
+#: ../../include/features.php:84
msgid "Ability to dislike posts/comments"
msgstr "Pouvoir détester les publications/commentaires"
-#: ../../include/features.php:71
+#: ../../include/features.php:85
msgid "Star Posts"
msgstr "Mettre en avant les publications"
-#: ../../include/features.php:71
+#: ../../include/features.php:85
msgid "Ability to mark special posts with a star indicator"
msgstr "Pouvoir marquer certaines publications d'une étoile"
-#: ../../include/features.php:72
+#: ../../include/features.php:86
msgid "Tag Cloud"
msgstr "Nuage de tags"
-#: ../../include/features.php:72
+#: ../../include/features.php:86
msgid "Provide a personal tag cloud on your channel page"
msgstr "Afficher un nuage de vos tags sur votre canal"
-#: ../../include/follow.php:23
+#: ../../include/follow.php:28
msgid "Channel is blocked on this site."
msgstr "Ce canal est bloqué sur ce site."
-#: ../../include/follow.php:28
+#: ../../include/follow.php:33
msgid "Channel location missing."
msgstr "Emplacement du canal introuvable."
-#: ../../include/follow.php:54
+#: ../../include/follow.php:83
msgid "Response from remote channel was incomplete."
msgstr "La réponse du canal distant était incomplète."
-#: ../../include/follow.php:85
+#: ../../include/follow.php:100
msgid "Channel was deleted and no longer exists."
msgstr "Le canal a été supprimé et n'existe plus."
-#: ../../include/follow.php:132
+#: ../../include/follow.php:135 ../../include/follow.php:206
+msgid "Protocol disabled."
+msgstr "Protocole désactivé."
+
+#: ../../include/follow.php:144
+msgid "Protocol blocked for this channel."
+msgstr "Protocole bloqué pour ce canal."
+
+#: ../../include/follow.php:179
msgid "Channel discovery failed."
msgstr "La tentative d'accéder au canal a échouée."
-#: ../../include/follow.php:149
+#: ../../include/follow.php:195
msgid "local account not found."
msgstr "compte local introuvable."
-#: ../../include/follow.php:158
+#: ../../include/follow.php:224
msgid "Cannot connect to yourself."
msgstr "Ne peut pas se connecter à vous."
-#: ../../include/chat.php:10
-msgid "Missing room name"
-msgstr "Il manque le nom du salon"
-
-#: ../../include/chat.php:19
-msgid "Duplicate room name"
-msgstr "Un salon de ce nom existe déjà"
-
-#: ../../include/chat.php:68 ../../include/chat.php:76
-msgid "Invalid room specifier."
-msgstr "Identifiant de salon invalide."
-
-#: ../../include/chat.php:105
-msgid "Room not found."
-msgstr "Salon introuvable."
-
-#: ../../include/chat.php:126
-msgid "Room is full"
-msgstr "Le salon est plein"
-
-#: ../../include/items.php:295 ../../mod/profperm.php:23
-#: ../../mod/subthread.php:49 ../../mod/group.php:68 ../../mod/like.php:242
-#: ../../mod/frphotos.php:69 ../../index.php:360
-msgid "Permission denied"
-msgstr "Accès refusé"
-
-#: ../../include/items.php:830
-msgid "(Unknown)"
-msgstr "(Inconnu)"
-
-#: ../../include/items.php:959
-msgid "Visible to anybody on the internet."
-msgstr "Visible à tout le monde sur internet."
-
-#: ../../include/items.php:961
-msgid "Visible to you only."
-msgstr "Visible pour vous seulement."
-
-#: ../../include/items.php:963
-msgid "Visible to anybody in this network."
-msgstr "Visible sur toute la Matrice."
-
-#: ../../include/items.php:965
-msgid "Visible to anybody authenticated."
-msgstr "Visible aux utilisateurs authentifiés."
-
-#: ../../include/items.php:967
-#, php-format
-msgid "Visible to anybody on %s."
-msgstr "Visible pour tous sur %s."
-
-#: ../../include/items.php:969
-msgid "Visible to all connections."
-msgstr "Visible pour tous les contacts."
-
-#: ../../include/items.php:971
-msgid "Visible to approved connections."
-msgstr "Visible aux contacts approuvés."
-
-#: ../../include/items.php:3649 ../../mod/home.php:67 ../../mod/display.php:32
-#: ../../mod/filestorage.php:18 ../../mod/admin.php:168
-#: ../../mod/admin.php:932 ../../mod/admin.php:1135 ../../mod/thing.php:78
-#: ../../mod/viewsrc.php:18
-msgid "Item not found."
-msgstr "Élément introuvable."
-
-#: ../../include/items.php:4082 ../../mod/group.php:38 ../../mod/group.php:140
-msgid "Collection not found."
-msgstr "Collection introuvable."
-
-#: ../../include/items.php:4097
-msgid "Collection is empty."
-msgstr "Collection vide."
-
-#: ../../include/items.php:4104
-#, php-format
-msgid "Collection: %s"
-msgstr "Collection&nbsp;: %s"
-
-#: ../../include/items.php:4115
-#, php-format
-msgid "Connection: %s"
-msgstr "Relation&nbsp;: %s"
-
-#: ../../include/items.php:4118
-msgid "Connection not found."
-msgstr "Relation introuvable."
-
-#: ../../include/group.php:25
+#: ../../include/group.php:26
msgid ""
"A deleted group with this name was revived. Existing item permissions "
"<strong>may</strong> apply to this group and any future members. If this is "
"not what you intended, please create another group with a different name."
msgstr "Un groupe supprimé portant ce nom a été ressuscité. Les permissions liées aux éléments existants <strong>peuvent</strong> s'appliquer au groupe et aux membres futurs. Si ce n'est pas ce que vous attendiez, merci de recréer un nouveau groupe avec un nom différent."
-#: ../../include/group.php:234
+#: ../../include/group.php:235
msgid "Default privacy group for new contacts"
msgstr "Groupe de confidentialité par défaut pour les nouveaux contacts"
-#: ../../include/group.php:253 ../../mod/admin.php:772
+#: ../../include/group.php:254 ../../mod/admin.php:831
msgid "All Channels"
msgstr "Tous canaux"
-#: ../../include/group.php:275
+#: ../../include/group.php:276
msgid "edit"
msgstr "éditer"
-#: ../../include/group.php:296
+#: ../../include/group.php:298
msgid "Collections"
msgstr "Collections"
-#: ../../include/group.php:297
+#: ../../include/group.php:299
msgid "Edit collection"
msgstr "Éditer collection"
-#: ../../include/group.php:298
-msgid "Create a new collection"
-msgstr "Créer une nouvelle collection"
+#: ../../include/group.php:300
+msgid "Add new collection"
+msgstr "Ajouter une nouvelle collection"
-#: ../../include/group.php:299
+#: ../../include/group.php:301
msgid "Channels not in any collection"
msgstr "Ces canaux ne sont dans aucune collection"
-#: ../../include/group.php:301 ../../include/widgets.php:266
-msgid "add"
-msgstr "ajouter"
-
-#: ../../include/identity.php:30 ../../mod/item.php:1297
+#: ../../include/identity.php:33
msgid "Unable to obtain identity information from database"
msgstr "Impossible d'obtenir les données d'identité depuis la base de données"
-#: ../../include/identity.php:63
+#: ../../include/identity.php:67
msgid "Empty name"
msgstr "Nom vide"
-#: ../../include/identity.php:65
+#: ../../include/identity.php:70
msgid "Name too long"
msgstr "Nom trop long"
-#: ../../include/identity.php:166
+#: ../../include/identity.php:186
msgid "No account identifier"
msgstr "Pas d'identifiant de compte"
-#: ../../include/identity.php:176
+#: ../../include/identity.php:198
msgid "Nickname is required."
msgstr "Un surnom est requis."
-#: ../../include/identity.php:190
+#: ../../include/identity.php:212
msgid "Reserved nickname. Please choose another."
msgstr "Pseudonyme réservé. Merci d'en choisir un autre."
-#: ../../include/identity.php:195
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "Le surnom contient des caractères interdits, ou est déjà pris sur ce site."
-
-#: ../../include/identity.php:258
+#: ../../include/identity.php:292
msgid "Unable to retrieve created identity"
msgstr "Impossible de récupérer l'identité créée"
-#: ../../include/identity.php:317
+#: ../../include/identity.php:350
msgid "Default Profile"
msgstr "Profil par défaut"
-#: ../../include/identity.php:342 ../../include/widgets.php:400
-#: ../../include/profile_selectors.php:80 ../../mod/connedit.php:473
-msgid "Friends"
-msgstr "Amis"
-
-#: ../../include/identity.php:509
+#: ../../include/identity.php:759
msgid "Requested channel is not available."
msgstr "Canal demandé non-disponible."
-#: ../../include/identity.php:557 ../../mod/achievements.php:8
-#: ../../mod/profile.php:16 ../../mod/blocks.php:10 ../../mod/connect.php:13
-#: ../../mod/filestorage.php:40 ../../mod/layouts.php:8
-#: ../../mod/webpages.php:8 ../../mod/hcard.php:8
+#: ../../include/identity.php:806 ../../mod/achievements.php:11
+#: ../../mod/blocks.php:29 ../../mod/profile.php:16 ../../mod/connect.php:13
+#: ../../mod/editblock.php:29 ../../mod/editlayout.php:27
+#: ../../mod/editwebpage.php:28 ../../mod/filestorage.php:54
+#: ../../mod/hcard.php:8 ../../mod/layouts.php:29 ../../mod/webpages.php:29
msgid "Requested profile is not available."
msgstr "Profil demandé inaccessible."
-#: ../../include/identity.php:706 ../../include/widgets.php:128
-#: ../../include/widgets.php:168 ../../include/Contact.php:107
-#: ../../mod/directory.php:183 ../../mod/dirprofile.php:164
-#: ../../mod/suggest.php:51 ../../mod/match.php:62
-msgid "Connect"
-msgstr "Ajouter"
-
-#: ../../include/identity.php:720 ../../mod/profiles.php:695
+#: ../../include/identity.php:969 ../../mod/profiles.php:774
msgid "Change profile photo"
msgstr "Changer la photo du profil"
-#: ../../include/identity.php:726
+#: ../../include/identity.php:975
msgid "Profiles"
msgstr "Profils"
-#: ../../include/identity.php:726
+#: ../../include/identity.php:975
msgid "Manage/edit profiles"
msgstr "Gérer/éditer les profils"
-#: ../../include/identity.php:727 ../../mod/profiles.php:696
+#: ../../include/identity.php:976 ../../mod/profiles.php:775
msgid "Create New Profile"
msgstr "Créer un nouveau profil"
-#: ../../include/identity.php:741 ../../mod/profiles.php:707
+#: ../../include/identity.php:991 ../../mod/profiles.php:786
msgid "Profile Image"
msgstr "Image du profil"
-#: ../../include/identity.php:744
+#: ../../include/identity.php:994
msgid "visible to everybody"
msgstr "visible pour tous"
-#: ../../include/identity.php:745 ../../mod/profiles.php:591
-#: ../../mod/profiles.php:711
+#: ../../include/identity.php:995 ../../mod/profiles.php:669
+#: ../../mod/profiles.php:790
msgid "Edit visibility"
msgstr "Éditer la visibilité"
-#: ../../include/identity.php:759 ../../include/identity.php:983
-#: ../../mod/directory.php:158
+#: ../../include/identity.php:1011 ../../include/identity.php:1250
msgid "Gender:"
msgstr "Sexe&nbsp;:"
-#: ../../include/identity.php:760 ../../include/identity.php:1027
-#: ../../mod/directory.php:160
+#: ../../include/identity.php:1012 ../../include/identity.php:1294
msgid "Status:"
msgstr "État&nbsp;:"
-#: ../../include/identity.php:761 ../../include/identity.php:1038
-#: ../../mod/directory.php:162
+#: ../../include/identity.php:1013 ../../include/identity.php:1305
msgid "Homepage:"
msgstr "Site web&nbsp;:"
-#: ../../include/identity.php:762 ../../mod/dirprofile.php:151
+#: ../../include/identity.php:1014
msgid "Online Now"
msgstr "Connecté"
-#: ../../include/identity.php:827 ../../include/identity.php:907
-#: ../../mod/ping.php:298
+#: ../../include/identity.php:1097 ../../include/identity.php:1175
+#: ../../mod/ping.php:324
msgid "g A l F d"
msgstr "H:i l d F"
-#: ../../include/identity.php:828 ../../include/identity.php:908
+#: ../../include/identity.php:1098 ../../include/identity.php:1176
msgid "F d"
msgstr "d F"
-#: ../../include/identity.php:873 ../../include/identity.php:948
-#: ../../mod/ping.php:320
+#: ../../include/identity.php:1143 ../../include/identity.php:1215
+#: ../../mod/ping.php:346
msgid "[today]"
msgstr "[aujourd'hui]"
-#: ../../include/identity.php:885
+#: ../../include/identity.php:1154
msgid "Birthday Reminders"
msgstr "Rappels d'anniversaires"
-#: ../../include/identity.php:886
+#: ../../include/identity.php:1155
msgid "Birthdays this week:"
msgstr "Anniversaires cette semaine&nbsp;:"
-#: ../../include/identity.php:941
+#: ../../include/identity.php:1208
msgid "[No description]"
msgstr "[Pas de description]"
-#: ../../include/identity.php:959
+#: ../../include/identity.php:1226
msgid "Event Reminders"
msgstr "Rappels d'événements"
-#: ../../include/identity.php:960
+#: ../../include/identity.php:1227
msgid "Events this week:"
msgstr "Événements cette semaine&nbsp;:"
-#: ../../include/identity.php:981 ../../mod/settings.php:942
+#: ../../include/identity.php:1248 ../../mod/settings.php:1056
msgid "Full Name:"
msgstr "Nom complet&nbsp;:"
-#: ../../include/identity.php:988
+#: ../../include/identity.php:1255
msgid "Like this channel"
msgstr "J'aime ce canal"
-#: ../../include/identity.php:1012
+#: ../../include/identity.php:1279
msgid "j F, Y"
msgstr "j F Y"
-#: ../../include/identity.php:1013
+#: ../../include/identity.php:1280
msgid "j F"
msgstr "j F"
-#: ../../include/identity.php:1020
+#: ../../include/identity.php:1287
msgid "Birthday:"
msgstr "Date de naissance&nbsp;:"
-#: ../../include/identity.php:1024
+#: ../../include/identity.php:1291 ../../mod/directory.php:297
msgid "Age:"
msgstr "Age&nbsp;:"
-#: ../../include/identity.php:1033
+#: ../../include/identity.php:1300
#, php-format
msgid "for %1$d %2$s"
msgstr "depuis %1$d %2$s"
-#: ../../include/identity.php:1036 ../../mod/profiles.php:613
+#: ../../include/identity.php:1303 ../../mod/profiles.php:691
msgid "Sexual Preference:"
msgstr "Orientation sexuelle&nbsp;:"
-#: ../../include/identity.php:1040 ../../mod/profiles.php:615
+#: ../../include/identity.php:1307 ../../mod/profiles.php:693
+#: ../../mod/directory.php:313
msgid "Hometown:"
msgstr "Ville natale&nbsp;:"
-#: ../../include/identity.php:1042
+#: ../../include/identity.php:1309
msgid "Tags:"
-msgstr "Étiquettes&nbsp;:"
+msgstr "Étiquettes:"
-#: ../../include/identity.php:1044 ../../mod/profiles.php:616
+#: ../../include/identity.php:1311 ../../mod/profiles.php:694
msgid "Political Views:"
msgstr "Opinions politiques&nbsp;:"
-#: ../../include/identity.php:1046
+#: ../../include/identity.php:1313
msgid "Religion:"
msgstr "Religion&nbsp;:"
-#: ../../include/identity.php:1048 ../../mod/directory.php:164
+#: ../../include/identity.php:1315 ../../mod/directory.php:315
msgid "About:"
msgstr "À propos&nbsp;:"
-#: ../../include/identity.php:1050
+#: ../../include/identity.php:1317
msgid "Hobbies/Interests:"
msgstr "Occupations/Centres d'intérêt&nbsp;:"
-#: ../../include/identity.php:1052 ../../mod/profiles.php:619
+#: ../../include/identity.php:1319 ../../mod/profiles.php:697
msgid "Likes:"
msgstr "Aime&nbsp;:"
-#: ../../include/identity.php:1054 ../../mod/profiles.php:620
+#: ../../include/identity.php:1321 ../../mod/profiles.php:698
msgid "Dislikes:"
msgstr "N'aime pas&nbsp;:"
-#: ../../include/identity.php:1057
+#: ../../include/identity.php:1323
msgid "Contact information and Social Networks:"
msgstr "Coordonnées et réseaux sociaux&nbsp;:"
-#: ../../include/identity.php:1059
+#: ../../include/identity.php:1325
msgid "My other channels:"
msgstr "Mes autres canaux&nbsp;:"
-#: ../../include/identity.php:1061
+#: ../../include/identity.php:1327
msgid "Musical interests:"
msgstr "Goûts musicaux&nbsp;:"
-#: ../../include/identity.php:1063
+#: ../../include/identity.php:1329
msgid "Books, literature:"
msgstr "Lectures, goûts littéraires&nbsp;:"
-#: ../../include/identity.php:1065
+#: ../../include/identity.php:1331
msgid "Television:"
msgstr "Télévision&nbsp;:"
-#: ../../include/identity.php:1067
+#: ../../include/identity.php:1333
msgid "Film/dance/culture/entertainment:"
-msgstr "Cinéma/danse/culture/divertissement&nbsp;:"
+msgstr "Cinéma/danse/culture/divertissement&nsbp;:"
-#: ../../include/identity.php:1069
+#: ../../include/identity.php:1335
msgid "Love/Romance:"
msgstr "Vie sentimentale/amoureuse&nbsp;:"
-#: ../../include/identity.php:1071
+#: ../../include/identity.php:1337
msgid "Work/employment:"
msgstr "Travail&nbsp;:"
-#: ../../include/identity.php:1073
+#: ../../include/identity.php:1339
msgid "School/education:"
msgstr "Cursus&nbsp;:"
-#: ../../include/identity.php:1093
+#: ../../include/identity.php:1359
msgid "Like this thing"
msgstr "J'aime ceci"
-#: ../../include/network.php:652
-msgid "view full size"
-msgstr "pleine taille"
-
-#: ../../include/bbcode.php:112 ../../include/bbcode.php:645
-#: ../../include/bbcode.php:648 ../../include/bbcode.php:653
-#: ../../include/bbcode.php:656 ../../include/bbcode.php:659
-#: ../../include/bbcode.php:662 ../../include/bbcode.php:667
-#: ../../include/bbcode.php:670 ../../include/bbcode.php:675
-#: ../../include/bbcode.php:678 ../../include/bbcode.php:681
-#: ../../include/bbcode.php:684
-msgid "Image/photo"
-msgstr "Image/photo"
-
-#: ../../include/bbcode.php:147 ../../include/bbcode.php:695
-msgid "Encrypted content"
-msgstr "Contenu chiffré"
-
-#: ../../include/bbcode.php:163
-msgid "QR code"
-msgstr "code QR"
-
-#: ../../include/bbcode.php:212
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s a écrit %2$s qui suit %3$s"
-
-#: ../../include/bbcode.php:214
-msgid "post"
-msgstr "l'article"
-
-#: ../../include/bbcode.php:613 ../../include/bbcode.php:633
-msgid "$1 wrote:"
-msgstr "$1 a écrit&nbsp;:"
-
-#: ../../include/message.php:18
-msgid "No recipient provided."
-msgstr "Pas de destinataire."
-
-#: ../../include/message.php:23
-msgid "[no subject]"
-msgstr "[sans objet]"
-
-#: ../../include/message.php:42
-msgid "Unable to determine sender."
-msgstr "Impossible de déterminer l'émetteur."
-
-#: ../../include/message.php:143
-msgid "Stored post could not be verified."
-msgstr "Le message stocké n'a pas pu être vérifié."
-
-#: ../../include/widgets.php:80
-msgid "System"
-msgstr "Système"
+#: ../../include/items.php:413 ../../mod/bulksetclose.php:11
+#: ../../mod/profperm.php:23 ../../mod/group.php:68 ../../mod/like.php:273
+#: ../../mod/subthread.php:49 ../../index.php:396
+msgid "Permission denied"
+msgstr "Accès refusé"
-#: ../../include/widgets.php:83
-msgid "Create Personal App"
-msgstr "Créer Votre Application"
+#: ../../include/items.php:1101 ../../include/items.php:1147
+msgid "(Unknown)"
+msgstr "(Inconnu)"
-#: ../../include/widgets.php:84
-msgid "Edit Personal App"
-msgstr "Éditer Votre Application"
+#: ../../include/items.php:1373
+msgid "Visible to anybody on the internet."
+msgstr "Visible à tout le monde sur internet."
-#: ../../include/widgets.php:130 ../../mod/suggest.php:53
-msgid "Ignore/Hide"
-msgstr "Ignorer/Cacher"
+#: ../../include/items.php:1375
+msgid "Visible to you only."
+msgstr "Visible pour vous seulement."
-#: ../../include/widgets.php:136 ../../mod/connections.php:267
-msgid "Suggestions"
-msgstr "Suggestion"
+#: ../../include/items.php:1377
+msgid "Visible to anybody in this network."
+msgstr "Visible sur toute la Matrice."
-#: ../../include/widgets.php:137
-msgid "See more..."
-msgstr "Voir plus..."
+#: ../../include/items.php:1379
+msgid "Visible to anybody authenticated."
+msgstr "Visible aux usagers authentifiés."
-#: ../../include/widgets.php:159
+#: ../../include/items.php:1381
#, php-format
-msgid "You have %1$.0f of %2$.0f allowed connections."
-msgstr "Vous avez %1$.0f des %2$.0f relations autorisées."
-
-#: ../../include/widgets.php:165
-msgid "Add New Connection"
-msgstr "Ajouter une nouvelle relation"
-
-#: ../../include/widgets.php:166
-msgid "Enter the channel address"
-msgstr "Adresse du canal"
-
-#: ../../include/widgets.php:167
-msgid "Example: bob@example.com, http://example.com/barbara"
-msgstr "Exemple&nbsp;: bob@exemple.com, http://exemple.com/barbara"
-
-#: ../../include/widgets.php:184
-msgid "Notes"
-msgstr "Notes"
-
-#: ../../include/widgets.php:256
-msgid "Remove term"
-msgstr "Retirer le terme"
-
-#: ../../include/widgets.php:335
-msgid "Archives"
-msgstr "Archives"
-
-#: ../../include/widgets.php:397
-msgid "Refresh"
-msgstr "Actualiser"
-
-#: ../../include/widgets.php:398 ../../mod/connedit.php:470
-msgid "Me"
-msgstr "Moi"
-
-#: ../../include/widgets.php:399 ../../mod/connedit.php:472
-msgid "Best Friends"
-msgstr "Mes meilleurs amis"
-
-#: ../../include/widgets.php:401
-msgid "Co-workers"
-msgstr "Mes collègues"
-
-#: ../../include/widgets.php:402 ../../mod/connedit.php:474
-msgid "Former Friends"
-msgstr "Mes anciens amis"
-
-#: ../../include/widgets.php:403 ../../mod/connedit.php:475
-msgid "Acquaintances"
-msgstr "Mes connaissances"
-
-#: ../../include/widgets.php:404
-msgid "Everybody"
-msgstr "Tout le monde"
-
-#: ../../include/widgets.php:436
-msgid "Account settings"
-msgstr "Réglages du Compte"
-
-#: ../../include/widgets.php:442
-msgid "Channel settings"
-msgstr "Réglages du Canal"
-
-#: ../../include/widgets.php:448
-msgid "Additional features"
-msgstr "Fonctions supplémentaires"
-
-#: ../../include/widgets.php:454
-msgid "Feature settings"
-msgstr "Extensions"
-
-#: ../../include/widgets.php:460
-msgid "Display settings"
-msgstr "Réglages d'affichage"
-
-#: ../../include/widgets.php:466
-msgid "Connected apps"
-msgstr "Applications connectées"
-
-#: ../../include/widgets.php:472
-msgid "Export channel"
-msgstr "Exporter le canal"
-
-#: ../../include/widgets.php:484
-msgid "Automatic Permissions (Advanced)"
-msgstr "Permissions automatiques (avancé)"
-
-#: ../../include/widgets.php:494
-msgid "Premium Channel Settings"
-msgstr "Canal VIP"
-
-#: ../../include/widgets.php:531
-msgid "Check Mail"
-msgstr "Vérifier le courrier"
-
-#: ../../include/widgets.php:612
-msgid "Chat Rooms"
-msgstr "Salons de clavardage"
-
-#: ../../include/widgets.php:630
-msgid "Bookmarked Chatrooms"
-msgstr "Salons favoris"
-
-#: ../../include/widgets.php:648
-msgid "Suggested Chatrooms"
-msgstr "Salons suggérés"
-
-#: ../../include/ItemObject.php:118
-msgid "Save to Folder"
-msgstr "Sauvegarder dans le dossier"
-
-#: ../../include/ItemObject.php:130 ../../include/ItemObject.php:142
-msgid "View all"
-msgstr "Voir tout"
-
-#: ../../include/ItemObject.php:139
-msgctxt "noun"
-msgid "Dislike"
-msgid_plural "Dislikes"
-msgstr[0] "Je déteste"
-msgstr[1] "Je déteste"
-
-#: ../../include/ItemObject.php:167
-msgid "Add Star"
-msgstr "Ajouter Étoile"
-
-#: ../../include/ItemObject.php:168
-msgid "Remove Star"
-msgstr "Supprimer Étoile"
-
-#: ../../include/ItemObject.php:169
-msgid "Toggle Star Status"
-msgstr "Changer le Statut des Étoiles"
+msgid "Visible to anybody on %s."
+msgstr "Visible pour tous sur %s."
-#: ../../include/ItemObject.php:173
-msgid "starred"
-msgstr "mis en avant"
+#: ../../include/items.php:1383
+msgid "Visible to all connections."
+msgstr "Visible pour tous les contacts."
-#: ../../include/ItemObject.php:190
-msgid "Add Tag"
-msgstr "Ajouter une balise"
+#: ../../include/items.php:1385
+msgid "Visible to approved connections."
+msgstr "Visible aux contacts approuvés."
-#: ../../include/ItemObject.php:208 ../../mod/photos.php:980
-msgid "I like this (toggle)"
-msgstr "J'aime (oui/non)"
+#: ../../include/items.php:1387
+msgid "Visible to specific connections."
+msgstr "Visible à certaines connexions."
-#: ../../include/ItemObject.php:209 ../../mod/photos.php:981
-msgid "I don't like this (toggle)"
-msgstr "Je déteste (oui/non)"
+#: ../../include/items.php:4310 ../../mod/admin.php:167
+#: ../../mod/admin.php:1025 ../../mod/admin.php:1225 ../../mod/display.php:36
+#: ../../mod/filestorage.php:27 ../../mod/thing.php:74
+#: ../../mod/viewsrc.php:20
+msgid "Item not found."
+msgstr "Élément introuvable."
-#: ../../include/ItemObject.php:211
-msgid "Share This"
-msgstr "Partager"
+#: ../../include/items.php:4787 ../../mod/bulksetclose.php:51
+#: ../../mod/group.php:38 ../../mod/group.php:140
+msgid "Collection not found."
+msgstr "Collection introuvable."
-#: ../../include/ItemObject.php:211
-msgid "share"
-msgstr "partager"
+#: ../../include/items.php:4803
+msgid "Collection is empty."
+msgstr "Collection vide."
-#: ../../include/ItemObject.php:235 ../../include/ItemObject.php:236
+#: ../../include/items.php:4810
#, php-format
-msgid "View %s's profile - %s"
-msgstr "Voir le profil de %s - %s"
-
-#: ../../include/ItemObject.php:237
-msgid "to"
-msgstr "à"
-
-#: ../../include/ItemObject.php:238
-msgid "via"
-msgstr "via"
-
-#: ../../include/ItemObject.php:239
-msgid "Wall-to-Wall"
-msgstr "Mur-mur"
-
-#: ../../include/ItemObject.php:240
-msgid "via Wall-To-Wall:"
-msgstr "par Mur-mur&nbsp;:"
-
-#: ../../include/ItemObject.php:274
-msgid "Save Bookmarks"
-msgstr "Enregistrer les favoris"
-
-#: ../../include/ItemObject.php:275
-msgid "Add to Calendar"
-msgstr "Ajouter au Calendrier"
-
-#: ../../include/ItemObject.php:283
-msgctxt "noun"
-msgid "Likes"
-msgstr "Aimes"
-
-#: ../../include/ItemObject.php:284
-msgctxt "noun"
-msgid "Dislikes"
-msgstr "Détestes"
+msgid "Collection: %s"
+msgstr "Collection&nbsp;: %s"
-#: ../../include/ItemObject.php:315
+#: ../../include/items.php:4820 ../../mod/connedit.php:674
#, php-format
-msgid "%d comment"
-msgid_plural "%d comments"
-msgstr[0] "%d commentaire"
-msgstr[1] "%d commentaires"
-
-#: ../../include/ItemObject.php:316 ../../include/js_strings.php:7
-msgid "[+] show all"
-msgstr "[+] voir plus"
-
-#: ../../include/ItemObject.php:580 ../../mod/photos.php:999
-#: ../../mod/photos.php:1086
-msgid "This is you"
-msgstr "C'est vous"
-
-#: ../../include/ItemObject.php:582 ../../include/js_strings.php:6
-#: ../../mod/photos.php:1001 ../../mod/photos.php:1088
-msgid "Comment"
-msgstr "Commenter"
-
-#: ../../include/ItemObject.php:583 ../../mod/mood.php:135
-#: ../../mod/settings.php:517 ../../mod/settings.php:629
-#: ../../mod/settings.php:657 ../../mod/settings.php:681
-#: ../../mod/settings.php:754 ../../mod/settings.php:934
-#: ../../mod/poke.php:166 ../../mod/profiles.php:589 ../../mod/chat.php:177
-#: ../../mod/chat.php:211 ../../mod/connect.php:92 ../../mod/connedit.php:518
-#: ../../mod/setup.php:307 ../../mod/setup.php:350 ../../mod/pdledit.php:58
-#: ../../mod/photos.php:563 ../../mod/photos.php:674 ../../mod/photos.php:962
-#: ../../mod/photos.php:1002 ../../mod/photos.php:1089
-#: ../../mod/sources.php:104 ../../mod/sources.php:138
-#: ../../mod/events.php:511 ../../mod/filestorage.php:137
-#: ../../mod/fsuggest.php:108 ../../mod/group.php:81 ../../mod/admin.php:451
-#: ../../mod/admin.php:760 ../../mod/admin.php:895 ../../mod/admin.php:1028
-#: ../../mod/admin.php:1227 ../../mod/admin.php:1314 ../../mod/thing.php:286
-#: ../../mod/thing.php:329 ../../mod/import.php:393 ../../mod/invite.php:142
-#: ../../mod/mail.php:345 ../../mod/appman.php:99 ../../mod/poll.php:68
-#: ../../mod/frphotos.php:84 ../../view/theme/apw/php/config.php:256
-#: ../../view/theme/blogga/php/config.php:67
-#: ../../view/theme/blogga/view/theme/blog/config.php:67
-#: ../../view/theme/redbasic/php/config.php:99
-msgid "Submit"
-msgstr "Envoyer"
-
-#: ../../include/ItemObject.php:584
-msgid "Bold"
-msgstr "Gras"
-
-#: ../../include/ItemObject.php:585
-msgid "Italic"
-msgstr "Italique"
-
-#: ../../include/ItemObject.php:586
-msgid "Underline"
-msgstr "Souligné"
-
-#: ../../include/ItemObject.php:587
-msgid "Quote"
-msgstr "Citation"
-
-#: ../../include/ItemObject.php:588
-msgid "Code"
-msgstr "Code"
-
-#: ../../include/ItemObject.php:589
-msgid "Image"
-msgstr "Image"
-
-#: ../../include/ItemObject.php:590
-msgid "Link"
-msgstr "Lien/URL"
+msgid "Connection: %s"
+msgstr "Relation&nbsp;: %s"
-#: ../../include/ItemObject.php:591
-msgid "Video"
-msgstr "Vidéo"
+#: ../../include/items.php:4822
+msgid "Connection not found."
+msgstr "Relation introuvable."
#: ../../include/js_strings.php:5
msgid "Delete this item?"
@@ -3112,7 +3356,7 @@ msgstr "Mot de passe trop court"
msgid "Passwords do not match"
msgstr "Les mots de passe ne correspondent pas"
-#: ../../include/js_strings.php:13 ../../mod/photos.php:39
+#: ../../include/js_strings.php:13 ../../mod/photos.php:40
msgid "everybody"
msgstr "tout le monde"
@@ -3126,100 +3370,339 @@ msgstr "Indice pour la phrase de passe"
#: ../../include/js_strings.php:16
msgid "Notice: Permissions have changed but have not yet been submitted."
-msgstr "Note&nbsp;: Les permissions ont changé, mais n'ont pas encore été soumises."
+msgstr "Note&nbsp;: Les permissions ont changées, mais n'ont pas encore été sauvées."
#: ../../include/js_strings.php:17
msgid "close all"
msgstr "fermer tout"
+#: ../../include/js_strings.php:18
+msgid "Nothing new here"
+msgstr "Aucun nouveau contenu trouvé"
+
#: ../../include/js_strings.php:19
+msgid "Rate This Channel (this is public)"
+msgstr "Noter ce canal (publiquement)"
+
+#: ../../include/js_strings.php:20 ../../mod/connedit.php:683
+#: ../../mod/rate.php:156
+msgid "Rating"
+msgstr "Note"
+
+#: ../../include/js_strings.php:21
+msgid "Describe (optional)"
+msgstr "Description (facultative)"
+
+#: ../../include/js_strings.php:23
+msgid "Please enter a link URL"
+msgstr "Merci d'insérer une URL"
+
+#: ../../include/js_strings.php:24
+msgid "Unsaved changes. Are you sure you wish to leave this page?"
+msgstr "Changements en attente. Voulez-vous vraiment quitter cette page?"
+
+#: ../../include/js_strings.php:26
msgid "timeago.prefixAgo"
-msgstr "Il y a"
+msgstr "timeago.prefixAgo"
-#: ../../include/js_strings.php:20
+#: ../../include/js_strings.php:27
msgid "timeago.prefixFromNow"
msgstr "timeago.prefixFromNow"
-#: ../../include/js_strings.php:21
+#: ../../include/js_strings.php:28
msgid "ago"
-msgstr " "
+msgstr "auparavant"
-#: ../../include/js_strings.php:22
+#: ../../include/js_strings.php:29
msgid "from now"
msgstr "de maintenant"
-#: ../../include/js_strings.php:23
+#: ../../include/js_strings.php:30
msgid "less than a minute"
msgstr "moins d'une minute"
-#: ../../include/js_strings.php:24
+#: ../../include/js_strings.php:31
msgid "about a minute"
msgstr "environ une minute"
-#: ../../include/js_strings.php:25
+#: ../../include/js_strings.php:32
#, php-format
msgid "%d minutes"
msgstr "%d minutes"
-#: ../../include/js_strings.php:26
+#: ../../include/js_strings.php:33
msgid "about an hour"
msgstr "environ une heure"
-#: ../../include/js_strings.php:27
+#: ../../include/js_strings.php:34
#, php-format
msgid "about %d hours"
msgstr "environ %d heures"
-#: ../../include/js_strings.php:28
+#: ../../include/js_strings.php:35
msgid "a day"
msgstr "un jour"
-#: ../../include/js_strings.php:29
+#: ../../include/js_strings.php:36
#, php-format
msgid "%d days"
msgstr "%d jours"
-#: ../../include/js_strings.php:30
+#: ../../include/js_strings.php:37
msgid "about a month"
msgstr "environ un mois"
-#: ../../include/js_strings.php:31
+#: ../../include/js_strings.php:38
#, php-format
msgid "%d months"
msgstr "%d mois"
-#: ../../include/js_strings.php:32
+#: ../../include/js_strings.php:39
msgid "about a year"
msgstr "environ un an"
-#: ../../include/js_strings.php:33
+#: ../../include/js_strings.php:40
#, php-format
msgid "%d years"
msgstr "%d années"
-#: ../../include/js_strings.php:34
+#: ../../include/js_strings.php:41
msgid " "
msgstr " "
-#: ../../include/js_strings.php:35
+#: ../../include/js_strings.php:42
msgid "timeago.numbers"
msgstr "timeago.numbers"
-#: ../../include/Contact.php:123
-msgid "New window"
-msgstr "Nouvelle fenêtre"
+#: ../../include/page_widgets.php:6
+msgid "New Page"
+msgstr "Nouvelle page"
-#: ../../include/Contact.php:124
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Ouvrir l'emplacement dans une fenêtre (ou un onglet) différent"
+#: ../../include/page_widgets.php:39 ../../mod/blocks.php:159
+#: ../../mod/layouts.php:188 ../../mod/webpages.php:187
+msgid "View"
+msgstr "Voir"
-#: ../../include/profile_selectors.php:6
+#: ../../include/page_widgets.php:41 ../../mod/webpages.php:189
+msgid "Actions"
+msgstr "Actions"
+
+#: ../../include/page_widgets.php:42 ../../mod/webpages.php:190
+msgid "Page Link"
+msgstr "Lien vers la page"
+
+#: ../../include/page_widgets.php:43
+msgid "Title"
+msgstr "Titre"
+
+#: ../../include/page_widgets.php:44 ../../mod/blocks.php:150
+#: ../../mod/layouts.php:181 ../../mod/menu.php:108 ../../mod/webpages.php:192
+msgid "Created"
+msgstr "Créé"
+
+#: ../../include/page_widgets.php:45 ../../mod/blocks.php:151
+#: ../../mod/layouts.php:182 ../../mod/menu.php:109 ../../mod/webpages.php:193
+msgid "Edited"
+msgstr "Édité"
+
+#: ../../include/permissions.php:26
+msgid "Can view my normal stream and posts"
+msgstr "Peut voir les publications sur mon canal et ses partages."
+
+#: ../../include/permissions.php:27
+msgid "Can view my default channel profile"
+msgstr "Peut voir le profil du canal par défaut."
+
+#: ../../include/permissions.php:28
+msgid "Can view my photo albums"
+msgstr "Peut voir mon album photos"
+
+#: ../../include/permissions.php:29
+msgid "Can view my connections"
+msgstr "Peut voir mes connections"
+
+#: ../../include/permissions.php:30
+msgid "Can view my file storage"
+msgstr "Peut voir mes fichiers en partage"
+
+#: ../../include/permissions.php:31
+msgid "Can view my webpages"
+msgstr "Peut voir mes sites-web"
+
+#: ../../include/permissions.php:34
+msgid "Can send me their channel stream and posts"
+msgstr "Peut m'envoyer le flux et les publications de leur canal"
+
+#: ../../include/permissions.php:35
+msgid "Can post on my channel page (\"wall\")"
+msgstr "Peut poster sur la page de mon canal (\"mur\")"
+
+#: ../../include/permissions.php:36
+msgid "Can comment on or like my posts"
+msgstr "Peuvent commenter et/ou aimer mes publications"
+
+#: ../../include/permissions.php:37
+msgid "Can send me private mail messages"
+msgstr "Peut m'envoyer des messages privés"
+
+#: ../../include/permissions.php:38
+msgid "Can post photos to my photo albums"
+msgstr "Peut ajouter des photos à mes albums"
+
+#: ../../include/permissions.php:39
+msgid "Can like/dislike stuff"
+msgstr "Peuvent aimer/détester"
+
+#: ../../include/permissions.php:39
+msgid "Profiles and things other than posts/comments"
+msgstr "Profils et autres excluant les publications/commentaires."
+
+#: ../../include/permissions.php:41
+msgid "Can forward to all my channel contacts via post @mentions"
+msgstr "Peut faire suivre à tous les contacts du mon canal via @truc"
+
+#: ../../include/permissions.php:41
+msgid "Advanced - useful for creating group forum channels"
+msgstr "Avancé - utile seulement pour les canaux de type \"forum/groupe\""
+
+#: ../../include/permissions.php:42
+msgid "Can chat with me (when available)"
+msgstr "Peut discuter avec moi (sous réserve de disponibilité)"
+
+#: ../../include/permissions.php:43
+msgid "Can write to my file storage"
+msgstr "Peut écrire dans mon partage de fichiers"
+
+#: ../../include/permissions.php:44
+msgid "Can edit my webpages"
+msgstr "Peut modifier mes sites-web"
+
+#: ../../include/permissions.php:46
+msgid "Can source my public posts in derived channels"
+msgstr "Peut rediriger mes publications publiques dans des canaux dérivés"
+
+#: ../../include/permissions.php:46
+msgid "Somewhat advanced - very useful in open communities"
+msgstr "Plutôt avancé - très utile dans les communautés ouvertes"
+
+#: ../../include/permissions.php:48
+msgid "Can administer my channel resources"
+msgstr "Peut administrer les ressources de mon canal"
+
+#: ../../include/permissions.php:48
+msgid ""
+"Extremely advanced. Leave this alone unless you know what you are doing"
+msgstr "Très avancé. Ne pas toucher, sauf si vous savez VRAIMENT ce que vous faites"
+
+#: ../../include/permissions.php:893
+msgid "Social Networking"
+msgstr "Réseau social"
+
+#: ../../include/permissions.php:893 ../../include/permissions.php:894
+#: ../../include/permissions.php:895
+msgid "Mostly Public"
+msgstr "Surtout public"
+
+#: ../../include/permissions.php:893 ../../include/permissions.php:894
+#: ../../include/permissions.php:895
+msgid "Restricted"
+msgstr "Accès restreint"
+
+#: ../../include/permissions.php:893 ../../include/permissions.php:894
+msgid "Private"
+msgstr "Privé"
+
+#: ../../include/permissions.php:894
+msgid "Community Forum"
+msgstr "Forum communautaire"
+
+#: ../../include/permissions.php:895
+msgid "Feed Republish"
+msgstr "Republication de flux"
+
+#: ../../include/permissions.php:896
+msgid "Special Purpose"
+msgstr "Utilisation spécifique"
+
+#: ../../include/permissions.php:896
+msgid "Celebrity/Soapbox"
+msgstr "Page de célébrité/tribune"
+
+#: ../../include/permissions.php:896
+msgid "Group Repository"
+msgstr "Espace de groupe"
+
+#: ../../include/permissions.php:897 ../../include/profile_selectors.php:6
#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:61
+#: ../../include/profile_selectors.php:97
+msgid "Other"
+msgstr "Autre"
+
+#: ../../include/permissions.php:897
+msgid "Custom/Expert Mode"
+msgstr "Mode expert/spécifique"
+
+#: ../../include/photos.php:94
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "L'image dépasse la taille limite de %lu octets"
+
+#: ../../include/photos.php:101
+msgid "Image file is empty."
+msgstr "L'image est vide."
+
+#: ../../include/photos.php:128 ../../mod/profile_photo.php:217
+msgid "Unable to process image"
+msgstr "Impossible de traiter l'image"
+
+#: ../../include/photos.php:199
+msgid "Photo storage failed."
+msgstr "Le stockage de l'image a échoué."
+
+#: ../../include/photos.php:363
+msgid "Upload New Photos"
+msgstr "Ajouter des photos"
+
+#: ../../include/taxonomy.php:222 ../../include/taxonomy.php:243
+msgid "Tags"
+msgstr "Étiquettes"
+
+#: ../../include/taxonomy.php:287
+msgid "Keywords"
+msgstr "Mots-clefs"
+
+#: ../../include/taxonomy.php:308
+msgid "have"
+msgstr "ont"
+
+#: ../../include/taxonomy.php:308
+msgid "has"
+msgstr "a"
+
+#: ../../include/taxonomy.php:309
+msgid "want"
+msgstr "veulent"
+
+#: ../../include/taxonomy.php:309
+msgid "wants"
+msgstr "veut"
+
+#: ../../include/taxonomy.php:310
+msgid "likes"
+msgstr "aiment"
+
+#: ../../include/taxonomy.php:311
+msgid "dislikes"
+msgstr "détestent"
+
+#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23 ../../mod/id.php:103
msgid "Male"
msgstr "Masculin"
#: ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:23 ../../mod/id.php:105
msgid "Female"
msgstr "Féminin"
@@ -3264,13 +3747,6 @@ msgid "Non-specific"
msgstr "Rien de spécifique"
#: ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
-#: ../../include/profile_selectors.php:61
-#: ../../include/profile_selectors.php:97
-msgid "Other"
-msgstr "Autre"
-
-#: ../../include/profile_selectors.php:6
msgid "Undecided"
msgstr "Indécis"
@@ -3456,707 +3932,1202 @@ msgstr "S'en fiche"
msgid "Ask me"
msgstr "Me demander"
-#: ../../include/auth.php:90
-msgid "Logged out."
-msgstr "Deconnecté."
+#: ../../mod/mail.php:33
+msgid "Unable to lookup recipient."
+msgstr "Impossible de localiser le destinataire."
-#: ../../include/auth.php:236
-msgid "Failed authentication"
-msgstr "Échec de l'authentification"
+#: ../../mod/mail.php:41
+msgid "Unable to communicate with requested channel."
+msgstr "Impossible de communiquer avec le canal demandé."
-#: ../../include/auth.php:251 ../../mod/openid.php:188
-msgid "Login failed."
-msgstr "Échec de la connexion."
+#: ../../mod/mail.php:48
+msgid "Cannot verify requested channel."
+msgstr "Impossible de vérifier le canal demandé."
-#: ../../include/permissions.php:13
-msgid "Can view my normal stream and posts"
-msgstr "Peut voir les publications sur mon canal et ses partages."
+#: ../../mod/mail.php:74
+msgid "Selected channel has private message restrictions. Send failed."
+msgstr "Le canal choisi a des restrictions quant aux messages privés. L'envoi a échoué."
-#: ../../include/permissions.php:14
-msgid "Can view my default channel profile"
-msgstr "Peut voir le profil du canal par défaut."
+#: ../../mod/mail.php:139
+msgid "Message deleted."
+msgstr "Message supprimé."
-#: ../../include/permissions.php:15
-msgid "Can view my photo albums"
-msgstr "Peut voir mon album photos"
+#: ../../mod/mail.php:156
+msgid "Message recalled."
+msgstr "Message annulé/rappelé."
-#: ../../include/permissions.php:16
-msgid "Can view my connections"
-msgstr "Peut voir mes connections"
+#: ../../mod/mail.php:225
+msgid "Send Private Message"
+msgstr "Envoyer un Message Privé"
-#: ../../include/permissions.php:17
-msgid "Can view my file storage"
-msgstr "Peut voir mes fichiers en partage"
+#: ../../mod/mail.php:226 ../../mod/mail.php:343
+msgid "To:"
+msgstr "À&nbsp;:"
-#: ../../include/permissions.php:18
-msgid "Can view my webpages"
-msgstr "Peut voir mes sites-web"
+#: ../../mod/mail.php:231 ../../mod/mail.php:345
+msgid "Subject:"
+msgstr "Sujet&nbsp;:"
-#: ../../include/permissions.php:21
-msgid "Can send me their channel stream and posts"
-msgstr "Peut m'envoyer le flux et les publications de leur canal"
+#: ../../mod/mail.php:235 ../../mod/mail.php:348 ../../mod/invite.php:131
+msgid "Your message:"
+msgstr "Votre message&nbsp;:"
-#: ../../include/permissions.php:22
-msgid "Can post on my channel page (\"wall\")"
-msgstr "Peut poster sur la page de mon canal (\"mur\")"
+#: ../../mod/mail.php:242
+msgid "Send"
+msgstr "Envoyer"
-#: ../../include/permissions.php:23
-msgid "Can comment on or like my posts"
-msgstr "Peuvent commenter et/ou aimer mes publications"
+#: ../../mod/mail.php:269
+msgid "Message not found."
+msgstr "Message introuvable."
-#: ../../include/permissions.php:24
-msgid "Can send me private mail messages"
-msgstr "Peut m'envoyer des messages privés"
+#: ../../mod/mail.php:312
+msgid "Delete message"
+msgstr "Supprimer message"
-#: ../../include/permissions.php:25
-msgid "Can post photos to my photo albums"
-msgstr "Peut ajouter des photos à mes albums"
+#: ../../mod/mail.php:313
+msgid "Recall message"
+msgstr "Rappeler/annuler le message"
-#: ../../include/permissions.php:26
-msgid "Can like/dislike stuff"
-msgstr "Peuvent aimer/détester"
+#: ../../mod/mail.php:315
+msgid "Message has been recalled."
+msgstr "Le message a été rappelé."
-#: ../../include/permissions.php:26
-msgid "Profiles and things other than posts/comments"
-msgstr "Profils et autres excluant les publications/commentaires."
+#: ../../mod/mail.php:332
+msgid "Private Conversation"
+msgstr "Conversation privée"
-#: ../../include/permissions.php:28
-msgid "Can forward to all my channel contacts via post @mentions"
-msgstr "Peut faire suivre à tous les contacts du mon canal via @truc"
+#: ../../mod/mail.php:336 ../../mod/message.php:72
+msgid "Delete conversation"
+msgstr "Supprimer conversation"
-#: ../../include/permissions.php:28
-msgid "Advanced - useful for creating group forum channels"
-msgstr "Avancé - utile seulement pour les canaux de type \"forum/groupe\""
+#: ../../mod/mail.php:338
+msgid ""
+"No secure communications available. You <strong>may</strong> be able to "
+"respond from the sender's profile page."
+msgstr "Aucune communication sécurisée n'est possible. Vous pourrez <strong>peut-être</strong> répondre depuis la page de profil de l'émetteur."
-#: ../../include/permissions.php:29
-msgid "Can chat with me (when available)"
-msgstr "Peut discuter avec moi (sous réserve de disponibilité)"
+#: ../../mod/mail.php:342
+msgid "Send Reply"
+msgstr "Envoyer une réponse"
-#: ../../include/permissions.php:30
-msgid "Can write to my file storage"
-msgstr "Peut écrire dans mon partage de fichiers"
+#: ../../mod/magic.php:69
+msgid "Hub not found."
+msgstr "Hub introuvable."
-#: ../../include/permissions.php:31
-msgid "Can edit my webpages"
-msgstr "Peut modifier mes sites-web"
+#: ../../mod/achievements.php:34
+msgid "Some blurb about what to do when you're new here"
+msgstr "Quelques mots sur quoi faire quand on est nouveau ici"
-#: ../../include/permissions.php:33
-msgid "Can source my public posts in derived channels"
-msgstr "Peut rediriger mes publications publiques dans des canaux dérivés"
+#: ../../mod/page.php:36 ../../mod/block.php:27
+msgid "Invalid item."
+msgstr "Élément invalide."
-#: ../../include/permissions.php:33
-msgid "Somewhat advanced - very useful in open communities"
-msgstr "Plutôt avancé - très utile dans les communautés ouvertes"
+#: ../../mod/page.php:52 ../../mod/block.php:39 ../../mod/wall_upload.php:29
+msgid "Channel not found."
+msgstr "Canal introuvable."
-#: ../../include/permissions.php:35
-msgid "Can administer my channel resources"
-msgstr "Peut administrer les ressources de mon canal"
+#: ../../mod/page.php:89 ../../mod/block.php:75 ../../mod/display.php:110
+#: ../../mod/help.php:79 ../../index.php:245
+msgid "Page not found."
+msgstr "Page introuvable."
-#: ../../include/permissions.php:35
-msgid ""
-"Extremely advanced. Leave this alone unless you know what you are doing"
-msgstr "Très avancé. Ne pas toucher, sauf si vous savez VRAIMENT ce que vous faites"
+#: ../../mod/page.php:126
+msgid "Lorem Ipsum"
+msgstr ""
-#: ../../mod/mood.php:132
-msgid "Set your current mood and tell your friends"
-msgstr "Indiquez votre humeur du moment à vos amis"
+#: ../../mod/acl.php:231
+msgid "network"
+msgstr "réseau"
-#: ../../mod/mitem.php:14 ../../mod/menu.php:92
-msgid "Menu not found."
-msgstr "Menu introuvable."
+#: ../../mod/acl.php:241
+msgid "RSS"
+msgstr "RSS"
-#: ../../mod/mitem.php:47
-msgid "Menu element updated."
-msgstr "Entrée de menu mis à jour."
+#: ../../mod/admin.php:52
+msgid "Theme settings updated."
+msgstr "Réglages du thème sauvegardés."
-#: ../../mod/mitem.php:51
-msgid "Unable to update menu element."
-msgstr "Impossible de mettre l'entrée de menu à jour."
+#: ../../mod/admin.php:93 ../../mod/admin.php:452
+msgid "Site"
+msgstr "Site"
-#: ../../mod/mitem.php:57
-msgid "Menu element added."
-msgstr "Entrée de menu ajouté."
+#: ../../mod/admin.php:94
+msgid "Accounts"
+msgstr "Comptes"
-#: ../../mod/mitem.php:61
-msgid "Unable to add menu element."
-msgstr "Impossible d'ajouter l'entrée de menu."
+#: ../../mod/admin.php:95 ../../mod/admin.php:985
+msgid "Channels"
+msgstr "Canaux"
-#: ../../mod/mitem.php:78 ../../mod/dirprofile.php:175 ../../mod/menu.php:120
-#: ../../mod/xchan.php:27
-msgid "Not found."
-msgstr "Introuvable."
+#: ../../mod/admin.php:96 ../../mod/admin.php:1077 ../../mod/admin.php:1117
+msgid "Plugins"
+msgstr "Extensions"
-#: ../../mod/mitem.php:96
-msgid "Manage Menu Elements"
-msgstr "Gérer les entrées de menu"
+#: ../../mod/admin.php:97 ../../mod/admin.php:1277 ../../mod/admin.php:1311
+msgid "Themes"
+msgstr "Thèmes"
-#: ../../mod/mitem.php:99
-msgid "Edit menu"
-msgstr "Éditer le menu"
+#: ../../mod/admin.php:98
+msgid "Inspect queue"
+msgstr "Analyser la file d'attente"
-#: ../../mod/mitem.php:102
-msgid "Edit element"
-msgstr "Éditer l'entrée"
+#: ../../mod/admin.php:100
+msgid "Profile Config"
+msgstr "Configurations du profil"
-#: ../../mod/mitem.php:103
-msgid "Drop element"
-msgstr "Supprimer l'entrée"
+#: ../../mod/admin.php:101
+msgid "DB updates"
+msgstr "MàJ BD"
-#: ../../mod/mitem.php:104
-msgid "New element"
-msgstr "Nouvelle entrée"
+#: ../../mod/admin.php:115 ../../mod/admin.php:122 ../../mod/admin.php:1396
+msgid "Logs"
+msgstr "Journaux"
-#: ../../mod/mitem.php:105
-msgid "Edit this menu container"
-msgstr "Éditer ce bloc de menu"
+#: ../../mod/admin.php:121
+msgid "Plugin Features"
+msgstr "Fonctionnalités liées aux extensions"
-#: ../../mod/mitem.php:106
-msgid "Add menu element"
-msgstr "Ajouter une entrée au menu"
+#: ../../mod/admin.php:123
+msgid "User registrations waiting for confirmation"
+msgstr "Inscriptions en attente"
-#: ../../mod/mitem.php:107
-msgid "Delete this menu item"
-msgstr "Supprimer cet entrée du menu"
+#: ../../mod/admin.php:200
+msgid "# Accounts"
+msgstr "# Comptes"
-#: ../../mod/mitem.php:108
-msgid "Edit this menu item"
-msgstr "Éditer cette entrée du menu"
+#: ../../mod/admin.php:201
+msgid "# blocked accounts"
+msgstr "# comptes bloqués"
-#: ../../mod/mitem.php:131
-msgid "New Menu Element"
-msgstr "Nouvelle entrée de menu"
+#: ../../mod/admin.php:202
+msgid "# expired accounts"
+msgstr "# comptes expirés"
-#: ../../mod/mitem.php:133 ../../mod/mitem.php:176
-msgid "Menu Item Permissions"
-msgstr "Permissions de l'entrée de menu"
+#: ../../mod/admin.php:203
+msgid "# expiring accounts"
+msgstr "# comptes expirant"
-#: ../../mod/mitem.php:134 ../../mod/mitem.php:177 ../../mod/settings.php:967
-msgid "(click to open/close)"
-msgstr "(cliquer pour ouvrir/fermer)"
+#: ../../mod/admin.php:216
+msgid "# Channels"
+msgstr "# Canaux"
-#: ../../mod/mitem.php:136 ../../mod/mitem.php:180
-msgid "Link text"
-msgstr "Texte du lien"
+#: ../../mod/admin.php:217
+msgid "# primary"
+msgstr "# primaire"
-#: ../../mod/mitem.php:137 ../../mod/mitem.php:181
-msgid "URL of link"
-msgstr "URL du lien"
+#: ../../mod/admin.php:218
+msgid "# clones"
+msgstr "# clones"
-#: ../../mod/mitem.php:138 ../../mod/mitem.php:182
-msgid "Use Red magic-auth if available"
-msgstr "Utiliser l'authentification magique, lorsque disponible"
+#: ../../mod/admin.php:224
+msgid "Message queues"
+msgstr "File des messages"
-#: ../../mod/mitem.php:139 ../../mod/mitem.php:183
-msgid "Open link in new window"
-msgstr "Ouvrir le lien dans une nouvelle fenêtre"
+#: ../../mod/admin.php:240 ../../mod/admin.php:451 ../../mod/admin.php:548
+#: ../../mod/admin.php:817 ../../mod/admin.php:984 ../../mod/admin.php:1076
+#: ../../mod/admin.php:1116 ../../mod/admin.php:1276 ../../mod/admin.php:1310
+#: ../../mod/admin.php:1395
+msgid "Administration"
+msgstr "Administration"
-#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
-msgid "Order in list"
-msgstr "Ordre dans la liste"
+#: ../../mod/admin.php:241
+msgid "Summary"
+msgstr "Résumé"
-#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
-msgid "Higher numbers will sink to bottom of listing"
-msgstr "Les nombres les plus élevés seront descendus au bas de la liste"
+#: ../../mod/admin.php:244
+msgid "Registered accounts"
+msgstr "Comptes enregistrés"
-#: ../../mod/mitem.php:154
-msgid "Menu item not found."
-msgstr "Entrée de menu introuvable."
+#: ../../mod/admin.php:245 ../../mod/admin.php:552
+msgid "Pending registrations"
+msgstr "Inscriptions en attente"
-#: ../../mod/mitem.php:163
-msgid "Menu item deleted."
-msgstr "Entrée de menu supprimée."
+#: ../../mod/admin.php:246
+msgid "Registered channels"
+msgstr "Canaux enregistrés"
-#: ../../mod/mitem.php:165
-msgid "Menu item could not be deleted."
-msgstr "Impossible de supprimer l'entrée de menu."
+#: ../../mod/admin.php:247 ../../mod/admin.php:553
+msgid "Active plugins"
+msgstr "Extensions actives"
-#: ../../mod/mitem.php:174
-msgid "Edit Menu Element"
-msgstr "Éditer l'entrée de menu"
+#: ../../mod/admin.php:248
+msgid "Version"
+msgstr "Version"
-#: ../../mod/mitem.php:186 ../../mod/menu.php:114
-msgid "Modify"
-msgstr "Modifier"
+#: ../../mod/admin.php:363
+msgid "Site settings updated."
+msgstr "Réglages du site sauvegardés."
-#: ../../mod/ping.php:237
-msgid "sent you a private message"
-msgstr "vous a envoyé un message privé"
+#: ../../mod/admin.php:400 ../../mod/settings.php:813
+msgid "mobile"
+msgstr "mobile"
-#: ../../mod/ping.php:288
-msgid "added your channel"
-msgstr "a ajouté votre canal"
+#: ../../mod/admin.php:402
+msgid "experimental"
+msgstr "expérimental"
-#: ../../mod/ping.php:329
-msgid "posted an event"
-msgstr "a publié un événement"
+#: ../../mod/admin.php:404
+msgid "unsupported"
+msgstr "non maintenu"
-#: ../../mod/acl.php:239
-msgid "network"
-msgstr "réseau"
+#: ../../mod/admin.php:429
+msgid "Yes - with approval"
+msgstr "Oui - avec approbation"
-#: ../../mod/settings.php:71
-msgid "Name is required"
-msgstr "Le nom est requis"
+#: ../../mod/admin.php:435
+msgid "My site is not a public server"
+msgstr "Mon site n'est pas un serveur publique"
-#: ../../mod/settings.php:75
-msgid "Key and Secret are required"
-msgstr "Clef et secret sont requis"
+#: ../../mod/admin.php:436
+msgid "My site has paid access only"
+msgstr "Mon site est payant"
-#: ../../mod/settings.php:196
-msgid "Passwords do not match. Password unchanged."
-msgstr "Les deux saisies du mot de passe ne correspondent pas. Il n'a donc pas été changé."
+#: ../../mod/admin.php:437
+msgid "My site has free access only"
+msgstr "Mon site est gratuit"
-#: ../../mod/settings.php:200
-msgid "Empty passwords are not allowed. Password unchanged."
-msgstr "Le mot de passe ne peut pas être vide. Il n'a donc pas été changé."
+#: ../../mod/admin.php:438
+msgid "My site offers free accounts with optional paid upgrades"
+msgstr "Mon site offre des comptes gratuits avec des ajouts payants"
-#: ../../mod/settings.php:214
-msgid "Password changed."
-msgstr "Le mot de passe a été changé."
+#: ../../mod/admin.php:454 ../../mod/register.php:207
+msgid "Registration"
+msgstr "Inscription"
-#: ../../mod/settings.php:216
-msgid "Password update failed. Please try again."
-msgstr "La mise à jour du mot de passe a échoué. Merci de recommencer."
+#: ../../mod/admin.php:455
+msgid "File upload"
+msgstr "Envoi de fichier"
-#: ../../mod/settings.php:230
-msgid "Not valid email."
-msgstr "Adresse de courriel non-valide."
+#: ../../mod/admin.php:456
+msgid "Policies"
+msgstr "Stratégies"
-#: ../../mod/settings.php:233
-msgid "Protected email address. Cannot change to that email."
-msgstr "Adresse de courriel protégée. Impossible de l'utiliser."
+#: ../../mod/admin.php:461
+msgid "Site name"
+msgstr "Nom du site"
-#: ../../mod/settings.php:242
-msgid "System failure storing new email. Please try again."
-msgstr "Défaillance système lors du stockage de la nouvelle adresse de courriel. Merci de ré-essayer."
+#: ../../mod/admin.php:462
+msgid "Banner/Logo"
+msgstr "Bannière/logo"
-#: ../../mod/settings.php:445
-msgid "Settings updated."
-msgstr "Réglages sauvegardés."
+#: ../../mod/admin.php:463
+msgid "Administrator Information"
+msgstr "Informations sur l'administrateur"
-#: ../../mod/settings.php:516 ../../mod/settings.php:542
-#: ../../mod/settings.php:578
-msgid "Add application"
-msgstr "Ajouter une application"
+#: ../../mod/admin.php:463
+msgid ""
+"Contact information for site administrators. Displayed on siteinfo page. "
+"BBCode can be used here"
+msgstr "Coordonnées de l'administrateur du site. Affichée sur la page 'siteinfo'. Vous pouvez utiliser du BBCode ici"
-#: ../../mod/settings.php:519
-msgid "Name of application"
-msgstr "Nom de l'application"
+#: ../../mod/admin.php:464
+msgid "System language"
+msgstr "Langue du système"
-#: ../../mod/settings.php:520 ../../mod/settings.php:546
-msgid "Consumer Key"
-msgstr "Clef de consommateur"
+#: ../../mod/admin.php:465
+msgid "System theme"
+msgstr "Thème du système"
-#: ../../mod/settings.php:520 ../../mod/settings.php:521
-msgid "Automatically generated - change if desired. Max length 20"
-msgstr "Généré automatiquement - à changer si besoin. Longueur maximale 20 caractères."
+#: ../../mod/admin.php:465
+msgid ""
+"Default system theme - may be over-ridden by user profiles - <a href='#' "
+"id='cnftheme'>change theme settings</a>"
+msgstr "Thème par défaut - il peut être changé pour chaque profil utilisateur - <a href='#' id='cnftheme'>modifier le thème</a>"
-#: ../../mod/settings.php:521 ../../mod/settings.php:547
-msgid "Consumer Secret"
-msgstr "Secret de consommateur"
+#: ../../mod/admin.php:466
+msgid "Mobile system theme"
+msgstr "Thème système pour mobile"
-#: ../../mod/settings.php:522 ../../mod/settings.php:548
-msgid "Redirect"
-msgstr "Redirection"
+#: ../../mod/admin.php:466
+msgid "Theme for mobile devices"
+msgstr "Thème dédié aux périphériques mobiles"
+
+#: ../../mod/admin.php:468
+msgid "Enable Diaspora Protocol"
+msgstr "Activer la compatibilité Diaspora*"
+
+#: ../../mod/admin.php:468
+msgid "Communicate with Diaspora and Friendica - experimental"
+msgstr "Permet de communiquer avec Diaspora et Friendica - expérimental"
+
+#: ../../mod/admin.php:469
+msgid "Allow Feeds as Connections"
+msgstr "Autoriser les Flux (RSS) comme Relations"
+
+#: ../../mod/admin.php:469
+msgid "(Heavy system resource usage)"
+msgstr "(Impact considérable sur les ressources)"
+
+#: ../../mod/admin.php:470
+msgid "Maximum image size"
+msgstr "Taille maximale des images"
-#: ../../mod/settings.php:522
+#: ../../mod/admin.php:470
msgid ""
-"Redirect URI - leave blank unless your application specifically requires "
-"this"
-msgstr "URI de redirection - laissez blanc, sauf si l'application a demandé autrement"
+"Maximum size in bytes of uploaded images. Default is 0, which means no "
+"limits."
+msgstr "Taille maximum, en octets, des images envoyées. Par défaut 0, soit sans limite."
-#: ../../mod/settings.php:523 ../../mod/settings.php:549
-msgid "Icon url"
-msgstr "URL de l'icône"
+#: ../../mod/admin.php:471
+msgid "Does this site allow new member registration?"
+msgstr "Est-ce que l'enregistrement de nouveau membres sur ce site est autorisé?"
-#: ../../mod/settings.php:523
-msgid "Optional"
-msgstr "Facultatif"
+#: ../../mod/admin.php:472
+msgid "Which best describes the types of account offered by this hub?"
+msgstr "Choisissez le type de comptes offert sur ce hub?"
-#: ../../mod/settings.php:534
-msgid "You can't edit this application."
-msgstr "Vous ne pouvez pas éditer cette application."
+#: ../../mod/admin.php:473
+msgid "Register text"
+msgstr "Texte d'inscription"
-#: ../../mod/settings.php:577
-msgid "Connected Apps"
-msgstr "Applications connectées"
+#: ../../mod/admin.php:473
+msgid "Will be displayed prominently on the registration page."
+msgstr "Sera affiché de manière bien visible sur le formulaire d'inscription."
-#: ../../mod/settings.php:581
-msgid "Client key starts with"
-msgstr "La clef partagée commence par"
+#: ../../mod/admin.php:474
+msgid "Site homepage to show visitors (default: login box)"
+msgstr "Page d'accueil du site à montrer aux visiteurs (par défaut&nbsp;:boîte de dialogue de connexion)"
-#: ../../mod/settings.php:582
-msgid "No name"
-msgstr "Sans nom"
+#: ../../mod/admin.php:474
+msgid ""
+"example: 'public' to show public stream, 'page/sys/home' to show a system "
+"webpage called 'home' or 'include:home.html' to include a file."
+msgstr "exemple&nbsp;:'public' pour montrer le flux public, 'page/sys/home' pour montrer une page système appelée 'home' ou 'include:home.html' pour inclure un fichier."
-#: ../../mod/settings.php:583
-msgid "Remove authorization"
-msgstr "Révoquer l'autorisation"
+#: ../../mod/admin.php:475
+msgid "Preserve site homepage URL"
+msgstr "Garder l'adresse du site."
-#: ../../mod/settings.php:594
-msgid "No feature settings configured"
-msgstr "Pas de fonctionnalité à configurer"
+#: ../../mod/admin.php:475
+msgid ""
+"Present the site homepage in a frame at the original location instead of "
+"redirecting"
+msgstr "Présenter la page d'accueil du site dans un cadre à l'adresse d'origine, plutôt que de rediriger"
-#: ../../mod/settings.php:602
-msgid "Feature Settings"
-msgstr "Extensions"
+#: ../../mod/admin.php:476
+msgid "Accounts abandoned after x days"
+msgstr "Les comptes sont abandonnés après x jours"
-#: ../../mod/settings.php:625
-msgid "Account Settings"
-msgstr "Compte"
+#: ../../mod/admin.php:476
+msgid ""
+"Will not waste system resources polling external sites for abandonded "
+"accounts. Enter 0 for no time limit."
+msgstr "Pour éviter de gaspiller les ressources du système en essayer de mettre à jour des comptes abandonnés. Mettez 0 pour ne pas avoir de limite de temps."
-#: ../../mod/settings.php:626
-msgid "Password Settings"
-msgstr "Mot de passe"
+#: ../../mod/admin.php:477
+msgid "Allowed friend domains"
+msgstr "Domaines amicaux"
-#: ../../mod/settings.php:627
-msgid "New Password:"
-msgstr "Nouveau mot de passe&nbsp;:"
+#: ../../mod/admin.php:477
+msgid ""
+"Comma separated list of domains which are allowed to establish friendships "
+"with this site. Wildcards are accepted. Empty to allow any domains"
+msgstr "Liste de noms de domaines - séparés par des virgules - pour lesquels ce site acceptera les demandes d'amitié ou de mise en relation. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines."
-#: ../../mod/settings.php:628
-msgid "Confirm:"
-msgstr "Confirmation&nbsp;:"
+#: ../../mod/admin.php:478
+msgid "Allowed email domains"
+msgstr "Domaines de courriels amicaux"
-#: ../../mod/settings.php:628
-msgid "Leave password fields blank unless changing"
-msgstr "Laissez les mots de passe vides si vous ne voulez pas les modifier"
+#: ../../mod/admin.php:478
+msgid ""
+"Comma separated list of domains which are allowed in email addresses for "
+"registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains"
+msgstr "Liste de noms de domaines - séparés par des virgules - dont les adresses de courriel seront autorisées lors de l'inscription à ce site. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines."
-#: ../../mod/settings.php:630 ../../mod/settings.php:943
-msgid "Email Address:"
-msgstr "Adresse de courriel&nbsp;:"
+#: ../../mod/admin.php:479
+msgid "Not allowed email domains"
+msgstr "Domaines de courriel non autorisés"
-#: ../../mod/settings.php:631 ../../mod/removeaccount.php:61
-msgid "Remove Account"
-msgstr "Supprimer le compte"
+#: ../../mod/admin.php:479
+msgid ""
+"Comma separated list of domains which are not allowed in email addresses for"
+" registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains, unless allowed domains have been defined."
+msgstr "Liste de noms de domaines - séparés par des virgules - dont les adresses de courriel ne seront pas autorisées lors de l'inscription à ce site. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines, sauf si des domaines autorisés ont été définis."
-#: ../../mod/settings.php:632 ../../mod/settings.php:1006
-msgid "Warning: This action is permanent and cannot be reversed."
-msgstr "Attention&nbsp;: cette action est permanente et irréversible."
+#: ../../mod/admin.php:480
+msgid "Block public"
+msgstr "Bloquer public"
-#: ../../mod/settings.php:648
-msgid "Off"
-msgstr "Inactif"
+#: ../../mod/admin.php:480
+msgid ""
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently logged in."
+msgstr "Cocher pour interdire tout accès public, y compris aux pages marquées comme publiques, aux visiteurs anonymes."
-#: ../../mod/settings.php:648
-msgid "On"
-msgstr "Actif"
+#: ../../mod/admin.php:481
+msgid "Verify Email Addresses"
+msgstr "Demander vérification des adresses de courriel"
-#: ../../mod/settings.php:655
-msgid "Additional Features"
-msgstr "Fonctionnalités additionnelles"
+#: ../../mod/admin.php:481
+msgid ""
+"Check to verify email addresses used in account registration (recommended)."
+msgstr "Cocher pour que les adresses utilisées à l'inscription soient vérifiées (recommandé)."
-#: ../../mod/settings.php:680
-msgid "Connector Settings"
-msgstr "Connecteurs"
+#: ../../mod/admin.php:482
+msgid "Force publish"
+msgstr "Forcer publication"
-#: ../../mod/settings.php:710 ../../mod/admin.php:399
-msgid "No special theme for mobile devices"
-msgstr "Pas de thème spécifique aux périphériques mobiles"
+#: ../../mod/admin.php:482
+msgid ""
+"Check to force all profiles on this site to be listed in the site directory."
+msgstr "Cocher pour forcer la publication de tous les profils du site dans l'annuaire."
+
+#: ../../mod/admin.php:483
+msgid "Disable discovery tab"
+msgstr "Désactiver l'onglet \"À découvrir\""
+
+#: ../../mod/admin.php:483
+msgid ""
+"Remove the tab in the network view with public content pulled from sources "
+"chosen for this site."
+msgstr "Ne pas afficher d'onglet avec des contenus publics automatiquement rassemblées depuis des sources choisies pour ce site."
-#: ../../mod/settings.php:719
+#: ../../mod/admin.php:484
+msgid "login on Homepage"
+msgstr "Connexion à partir de la page d'accueil"
+
+#: ../../mod/admin.php:484
+msgid ""
+"Present a login box to visitors on the home page if no other content has "
+"been configured."
+msgstr "Présenter une boîte de dialogue de connexion aux visiteurs sur la page d'accueil si aucun autre contenu n'a été configuré."
+
+#: ../../mod/admin.php:486
+msgid "Proxy user"
+msgstr "Utilisateurs du proxy"
+
+#: ../../mod/admin.php:487
+msgid "Proxy URL"
+msgstr "URL du proxy (visiter @proxy-list)"
+
+#: ../../mod/admin.php:488
+msgid "Network timeout"
+msgstr "Délai maximal du réseau"
+
+#: ../../mod/admin.php:488
+msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+msgstr "En secondes. Mettre à 0 pour ne pas avoir de délai maximal (pas recommandé)."
+
+#: ../../mod/admin.php:489
+msgid "Delivery interval"
+msgstr "Intervalle de distribution"
+
+#: ../../mod/admin.php:489
+msgid ""
+"Delay background delivery processes by this many seconds to reduce system "
+"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
+"for large dedicated servers."
+msgstr "Temporise le processus de distribution de tant de secondes pour réduire la charge sur le système. Valeurs recommandées&nbsp;: 4-5 pour les serveurs mutualisés, 2-3 pour les VPS. 0-1 pour les gros serveurs dédiés."
+
+#: ../../mod/admin.php:490
+msgid "Poll interval"
+msgstr "Intervalle de scrutation"
+
+#: ../../mod/admin.php:490
+msgid ""
+"Delay background polling processes by this many seconds to reduce system "
+"load. If 0, use delivery interval."
+msgstr "Temporise le processus de scrutation en tâche de fond de tant de secondes, pour réduire la charge. Si 0, utilise l'intervalle de distribution."
+
+#: ../../mod/admin.php:491
+msgid "Maximum Load Average"
+msgstr "Charge moyenne maximale"
+
+#: ../../mod/admin.php:491
+msgid ""
+"Maximum system load before delivery and poll processes are deferred - "
+"default 50."
+msgstr "Charge système maximale au-delà de laquelle distribution et scrutation sont mis en pause - par défaut 50."
+
+#: ../../mod/admin.php:492
+msgid "Expiration period in days for imported (matrix/network) content"
+msgstr "Délai d'expiration du contenu importé du réseau, en jours"
+
+#: ../../mod/admin.php:492
+msgid "0 for no expiration of imported content"
+msgstr "0 pour ne pas expirer le contenu importé"
+
+#: ../../mod/admin.php:540
+msgid "No server found"
+msgstr "Serveur introuvable"
+
+#: ../../mod/admin.php:547 ../../mod/admin.php:831
+msgid "ID"
+msgstr "ID"
+
+#: ../../mod/admin.php:547
+msgid "for channel"
+msgstr "pour le canal"
+
+#: ../../mod/admin.php:547
+msgid "on server"
+msgstr "sur le serveur"
+
+#: ../../mod/admin.php:547
+msgid "Status"
+msgstr "État"
+
+#: ../../mod/admin.php:549
+msgid "Server"
+msgstr "Serveur"
+
+#: ../../mod/admin.php:566
+msgid "Update has been marked successful"
+msgstr "La mise à jour a été marquée comme réussie"
+
+#: ../../mod/admin.php:576
#, php-format
-msgid "%s - (Experimental)"
-msgstr "%s - (Expérimental)"
+msgid "Executing %s failed. Check system logs."
+msgstr "L'éxecution de %s a échoué. Merci de vérifier les journaux du système."
-#: ../../mod/settings.php:752
-msgid "Display Settings"
-msgstr "Affichage"
+#: ../../mod/admin.php:579
+#, php-format
+msgid "Update %s was successfully applied."
+msgstr "La mise à jour %s a été appliquée avec succès."
-#: ../../mod/settings.php:758
-msgid "Display Theme:"
-msgstr "Thème&nbsp;:"
+#: ../../mod/admin.php:583
+#, php-format
+msgid "Update %s did not return a status. Unknown if it succeeded."
+msgstr "La mise à jour %s n'a pas retourné d'information. Impossible de savoir si elle a réussi ou non."
-#: ../../mod/settings.php:759
-msgid "Mobile Theme:"
-msgstr "Thème mobile&nbsp;:"
+#: ../../mod/admin.php:586
+#, php-format
+msgid "Update function %s could not be found."
+msgstr "La fonction de mise à jour %s est introuvable."
-#: ../../mod/settings.php:760
-msgid "Enable user zoom on mobile devices"
-msgstr "Permettre à l'utilisateur d'un mobile d'agrandir le contenu"
+#: ../../mod/admin.php:602
+msgid "No failed updates."
+msgstr "Aucune mise à jour défaillante."
-#: ../../mod/settings.php:761
-msgid "Update browser every xx seconds"
-msgstr "Rafraîchir le navigateur toutes les xx secondes"
+#: ../../mod/admin.php:606
+msgid "Failed Updates"
+msgstr "Mises à jour défaillantes"
-#: ../../mod/settings.php:761
-msgid "Minimum of 10 seconds, no maximum"
-msgstr "Minimum 10 secondes, pas de maximum"
+#: ../../mod/admin.php:608
+msgid "Mark success (if update was manually applied)"
+msgstr "Marquer comme réussie (si la mise à jour a été réalisée manuellement)"
-#: ../../mod/settings.php:762
-msgid "Maximum number of conversations to load at any time:"
-msgstr "Nombre maximal de conversations pouvant être chargées en même temps&nbsp;:"
+#: ../../mod/admin.php:609
+msgid "Attempt to execute this update step automatically"
+msgstr "Tenter de réaliser cette étape de mise à jour automatiquement"
-#: ../../mod/settings.php:762
-msgid "Maximum of 100 items"
-msgstr "100 éléments au maximum"
+#: ../../mod/admin.php:641
+msgid "Queue Statistics"
+msgstr "Statistiques de file d'attente"
-#: ../../mod/settings.php:763
-msgid "Don't show emoticons"
-msgstr "Ne pas montrer les frimousses/émoticones"
+#: ../../mod/admin.php:642
+msgid "Total Entries"
+msgstr "Nombre d'entrées total"
-#: ../../mod/settings.php:764
-msgid "System Page Layout Editor - (advanced)"
-msgstr "Agencements des pages système - (avancé)"
+#: ../../mod/admin.php:643
+msgid "Priority"
+msgstr "Priorité"
-#: ../../mod/settings.php:800
-msgid "Nobody except yourself"
-msgstr "Personne sauf vous"
+#: ../../mod/admin.php:644
+msgid "Destination URL"
+msgstr "URL de destination"
-#: ../../mod/settings.php:801
-msgid "Only those you specifically allow"
-msgstr "Seulement ceux que vous autorisez spécifiquement"
+#: ../../mod/admin.php:645
+msgid "Mark hub permanently offline"
+msgstr "Marquer le hub comme étant hors ligne de manière permanente"
-#: ../../mod/settings.php:802
-msgid "Approved connections"
-msgstr "Contacts Approuvés"
+#: ../../mod/admin.php:646
+msgid "Empty queue for this hub"
+msgstr "Vider la file d'attente pour ce hub"
-#: ../../mod/settings.php:803
-msgid "Any connections"
-msgstr "Tous les contacts"
+#: ../../mod/admin.php:647
+msgid "Last known contact"
+msgstr "Dernier contact connu"
-#: ../../mod/settings.php:804
-msgid "Anybody on this website"
-msgstr "Tous les utilisateurs du hub"
+#: ../../mod/admin.php:683
+#, php-format
+msgid "%s account blocked/unblocked"
+msgid_plural "%s account blocked/unblocked"
+msgstr[0] ""
+msgstr[1] ""
-#: ../../mod/settings.php:805
-msgid "Anybody in this network"
-msgstr "Tous les utilisateurs sur ce réseau"
+#: ../../mod/admin.php:691
+#, php-format
+msgid "%s account deleted"
+msgid_plural "%s accounts deleted"
+msgstr[0] ""
+msgstr[1] ""
-#: ../../mod/settings.php:806
-msgid "Anybody authenticated"
-msgstr "Tous les utilisateurs authentifiés"
+#: ../../mod/admin.php:727
+msgid "Account not found"
+msgstr "Compte introuvable"
-#: ../../mod/settings.php:807
-msgid "Anybody on the internet"
-msgstr "Tous les utilisateurs d'Internet"
+#: ../../mod/admin.php:739
+#, php-format
+msgid "Account '%s' deleted"
+msgstr "Compte '%s' supprimé"
-#: ../../mod/settings.php:884
-msgid "Publish your default profile in the network directory"
-msgstr "Publier votre profil par défaut dans l'annuaire du réseau"
+#: ../../mod/admin.php:747
+#, php-format
+msgid "Account '%s' blocked"
+msgstr "Compte '%s' bloqué"
-#: ../../mod/settings.php:884 ../../mod/settings.php:889
-#: ../../mod/settings.php:960 ../../mod/api.php:106 ../../mod/profiles.php:566
-#: ../../mod/admin.php:429
-msgid "No"
-msgstr "Non"
+#: ../../mod/admin.php:755
+#, php-format
+msgid "Account '%s' unblocked"
+msgstr "Compte '%s' débloqué"
-#: ../../mod/settings.php:884 ../../mod/settings.php:889
-#: ../../mod/settings.php:960 ../../mod/api.php:105 ../../mod/profiles.php:565
-#: ../../mod/admin.php:431
-msgid "Yes"
-msgstr "Oui"
+#: ../../mod/admin.php:818 ../../mod/admin.php:830
+msgid "Users"
+msgstr "Utilisateurs"
-#: ../../mod/settings.php:889
-msgid "Allow us to suggest you as a potential friend to new members?"
-msgstr "Nous autoriser à vous suggérer comme relation potentielle aux nouveaux membres?"
+#: ../../mod/admin.php:820 ../../mod/admin.php:987
+msgid "select all"
+msgstr "tout sélectionner"
-#: ../../mod/settings.php:893 ../../mod/profile_photo.php:365
-msgid "or"
-msgstr "ou"
+#: ../../mod/admin.php:821
+msgid "User registrations waiting for confirm"
+msgstr "Inscriptions en attente d'approbation"
-#: ../../mod/settings.php:898
-msgid "Your channel address is"
-msgstr "Voici l'adresse de votre canal"
+#: ../../mod/admin.php:822
+msgid "Request date"
+msgstr "Date de la demande"
-#: ../../mod/settings.php:932
-msgid "Channel Settings"
-msgstr "Canal"
+#: ../../mod/admin.php:823
+msgid "No registrations."
+msgstr "Pas d'inscriptions."
-#: ../../mod/settings.php:941
-msgid "Basic Settings"
-msgstr "Basique"
+#: ../../mod/admin.php:824 ../../mod/connedit.php:699
+msgid "Approve"
+msgstr "Approuver"
-#: ../../mod/settings.php:944
-msgid "Your Timezone:"
-msgstr "Fureau Horaire&nbsp;:"
+#: ../../mod/admin.php:825
+msgid "Deny"
+msgstr "Refuser"
-#: ../../mod/settings.php:945
-msgid "Default Post Location:"
-msgstr "Emplacement géographique par défaut&nbsp;:"
+#: ../../mod/admin.php:827 ../../mod/connedit.php:531
+msgid "Block"
+msgstr "Bloquer"
-#: ../../mod/settings.php:945
-msgid "Geographical location to display on your posts"
-msgstr "Emplacement géographique à afficher sur vos publications"
+#: ../../mod/admin.php:828 ../../mod/connedit.php:531
+msgid "Unblock"
+msgstr "Débloquer"
-#: ../../mod/settings.php:946
-msgid "Use Browser Location:"
-msgstr "Utiliser la géolocalisation fournie par le navigateur&nbsp;:"
+#: ../../mod/admin.php:831
+msgid "Register date"
+msgstr "Date d'inscription"
-#: ../../mod/settings.php:948
-msgid "Adult Content"
-msgstr "Contenu \"adulte\""
+#: ../../mod/admin.php:831
+msgid "Last login"
+msgstr "Dernière connexion"
+
+#: ../../mod/admin.php:831
+msgid "Expires"
+msgstr "Expire"
+
+#: ../../mod/admin.php:831
+msgid "Service Class"
+msgstr "Classe de service"
-#: ../../mod/settings.php:948
+#: ../../mod/admin.php:833
msgid ""
-"This channel frequently or regularly publishes adult content. (Please tag "
-"any adult material and/or nudity with #NSFW)"
-msgstr "Ce canal publie plus ou moins fréquemment du contenu pour adultes. (Merci d'indiquer tout contenu pour adulte ou potentiellement choquant avec l'étiquette <em>#NSFW</em> - Not Safe For Work)"
+"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
+" on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Les comptes sélectionnés seront supprimés&nbsp;!\\n\\nTout ce que ces utilisateurs ont publié sur ce site sera détruit de manière définitive&nbsp;!\\n\\nÊtes-vous sûr&nbsp;?"
-#: ../../mod/settings.php:950
-msgid "Security and Privacy Settings"
-msgstr "Réglages de Sécurité et vie privée"
+#: ../../mod/admin.php:834
+msgid ""
+"The account {0} will be deleted!\\n\\nEverything this account has posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Le compte {0} sera supprimé&nbsp;!\\n\\nTout ce que cet utilisateur a publié sur ce site sera détruit de manière définitive&nbsp;!\\n\\nÊtes-vous sûr&nbsp;?"
-#: ../../mod/settings.php:952
-msgid "Hide my online presence"
-msgstr "Cacher ma présence en ligne"
+#: ../../mod/admin.php:870
+#, php-format
+msgid "%s channel censored/uncensored"
+msgid_plural "%s channels censored/uncensored"
+msgstr[0] "censure modifiée sur %s canal"
+msgstr[1] "censure modifiée sur %s canaux"
-#: ../../mod/settings.php:952
-msgid "Prevents displaying in your profile that you are online"
-msgstr "Cacher votre statut (en ligne/hors ligne) sur votre profil"
+#: ../../mod/admin.php:879
+#, php-format
+msgid "%s channel code allowed/disallowed"
+msgid_plural "%s channels code allowed/disallowed"
+msgstr[0] ""
+msgstr[1] ""
-#: ../../mod/settings.php:954
-msgid "Simple Privacy Settings:"
-msgstr "Réglages simples&nbsp;:"
+#: ../../mod/admin.php:886
+#, php-format
+msgid "%s channel deleted"
+msgid_plural "%s channels deleted"
+msgstr[0] "%s canal supprimé"
+msgstr[1] "%s canaux supprimés"
+
+#: ../../mod/admin.php:906
+msgid "Channel not found"
+msgstr "Canal introuvable"
+
+#: ../../mod/admin.php:917
+#, php-format
+msgid "Channel '%s' deleted"
+msgstr "Canal '%s' supprimé"
-#: ../../mod/settings.php:955
+#: ../../mod/admin.php:929
+#, php-format
+msgid "Channel '%s' censored"
+msgstr "Canal '%s' censuré"
+
+#: ../../mod/admin.php:929
+#, php-format
+msgid "Channel '%s' uncensored"
+msgstr "Canal '%s' non-censuré"
+
+#: ../../mod/admin.php:940
+#, php-format
+msgid "Channel '%s' code allowed"
+msgstr "Code autorisé pour le canal '%s'"
+
+#: ../../mod/admin.php:940
+#, php-format
+msgid "Channel '%s' code disallowed"
+msgstr "Code interdit pour le canal '%s'"
+
+#: ../../mod/admin.php:989
+msgid "Censor"
+msgstr "Censurer"
+
+#: ../../mod/admin.php:990
+msgid "Uncensor"
+msgstr "Ne plus censurer"
+
+#: ../../mod/admin.php:991
+msgid "Allow Code"
+msgstr "Autoriser le code"
+
+#: ../../mod/admin.php:992
+msgid "Disallow Code"
+msgstr "Interdire le code"
+
+#: ../../mod/admin.php:994
+msgid "UID"
+msgstr "UID"
+
+#: ../../mod/admin.php:994 ../../mod/profiles.php:447
+msgid "Address"
+msgstr "Adresse"
+
+#: ../../mod/admin.php:996
msgid ""
-"Very Public - <em>extremely permissive (should be used with caution)</em>"
-msgstr "Très public - <em>extrèmement permissif (à n'utiliser qu'en connaissance de cause)</em>"
+"Selected channels will be deleted!\\n\\nEverything that was posted in these "
+"channels on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Les canaux sélectionnés seront supprimés!\\n\\nTout ce qui a été publié dans ces canaux sur ce site sera définitivement supprimé!\\n\\nÊtes-vous certain?"
-#: ../../mod/settings.php:956
+#: ../../mod/admin.php:997
msgid ""
-"Typical - <em>default public, privacy when desired (similar to social "
-"network permissions but with improved privacy)</em>"
-msgstr "Classique - <em>public par défaut, privé en cas de besoin (comparable dans le principe aux réseaux sociaux centralisés, avec un mode privé plus efficace)</em>"
+"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
+"channel on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Le canal {0} sera supprimé!\\n\\nTout ce qui a été publié sur ce canal sera définitivement supprimé!\\n\\nÊtes-vous certain?"
-#: ../../mod/settings.php:957
-msgid "Private - <em>default private, never open or public</em>"
-msgstr "Privé - <em>privé par défaut, jamais ouvert ni public</em>"
+#: ../../mod/admin.php:1037
+#, php-format
+msgid "Plugin %s disabled."
+msgstr "Extension %s désactivée."
-#: ../../mod/settings.php:958
-msgid "Blocked - <em>default blocked to/from everybody</em>"
-msgstr "Bloqué - <em>par défaut, bloqué de/vers tout le monde</em>"
+#: ../../mod/admin.php:1041
+#, php-format
+msgid "Plugin %s enabled."
+msgstr "Extension %s activée."
-#: ../../mod/settings.php:960
-msgid "Allow others to tag your posts"
-msgstr "Autoriser les autres à \"étiqueté\" vos publications"
+#: ../../mod/admin.php:1051 ../../mod/admin.php:1249
+msgid "Disable"
+msgstr "Désactiver"
-#: ../../mod/settings.php:960
-msgid ""
-"Often used by the community to retro-actively flag inappropriate content"
-msgstr "Souvent utilisé par la communauté pour distinguer le contenu innaproprié"
+#: ../../mod/admin.php:1054 ../../mod/admin.php:1251
+msgid "Enable"
+msgstr "Activer"
-#: ../../mod/settings.php:962
-msgid "Advanced Privacy Settings"
-msgstr "Réglages avancés"
+#: ../../mod/admin.php:1078 ../../mod/admin.php:1278
+msgid "Toggle"
+msgstr "(Dés)activer"
-#: ../../mod/settings.php:964
-msgid "Expire other channel content after this many days"
-msgstr "Faire expirer le contenu des autres canaux après n jours"
+#: ../../mod/admin.php:1086 ../../mod/admin.php:1288
+msgid "Author: "
+msgstr "Auteur&nbsp;:"
-#: ../../mod/settings.php:964
-msgid "0 or blank prevents expiration"
-msgstr "0, ou vide, pour ne pas faire expirer"
+#: ../../mod/admin.php:1087 ../../mod/admin.php:1289
+msgid "Maintainer: "
+msgstr "Maintenu par&nbsp;:"
-#: ../../mod/settings.php:965
-msgid "Maximum Friend Requests/Day:"
-msgstr "Nombre maximum de mises en relation par jour&nbsp;:"
+#: ../../mod/admin.php:1214
+msgid "No themes found."
+msgstr "Aucun thème trouvé."
-#: ../../mod/settings.php:965
-msgid "May reduce spam activity"
-msgstr "Contribue à réduire l'impact des indésirables"
+#: ../../mod/admin.php:1270
+msgid "Screenshot"
+msgstr "Aperçu"
-#: ../../mod/settings.php:966
-msgid "Default Post Permissions"
-msgstr "Permissions par défaut des publications"
+#: ../../mod/admin.php:1316
+msgid "[Experimental]"
+msgstr "[Expérimental]"
-#: ../../mod/settings.php:978
-msgid "Maximum private messages per day from unknown people:"
-msgstr "Nombre maximum de messages privés émanant d'inconnus, par jour&nbsp;:"
+#: ../../mod/admin.php:1317
+msgid "[Unsupported]"
+msgstr "[Non-supporté]"
-#: ../../mod/settings.php:978
-msgid "Useful to reduce spamming"
-msgstr "Utile pour réduire les indésirables"
+#: ../../mod/admin.php:1341
+msgid "Log settings updated."
+msgstr "Réglages du journal sauvegardés."
-#: ../../mod/settings.php:981
-msgid "Notification Settings"
-msgstr "Notifications"
+#: ../../mod/admin.php:1398
+msgid "Clear"
+msgstr "Vider"
-#: ../../mod/settings.php:982
-msgid "By default post a status message when:"
-msgstr "Par défaut, publier un statut quand:"
+#: ../../mod/admin.php:1404
+msgid "Debugging"
+msgstr "Débogage"
-#: ../../mod/settings.php:983
-msgid "accepting a friend request"
-msgstr "vous acceptez une mise en relation"
+#: ../../mod/admin.php:1405
+msgid "Log file"
+msgstr "Fichier du journal"
-#: ../../mod/settings.php:984
-msgid "joining a forum/community"
-msgstr "vous joignez un forum ou à une communauté"
+#: ../../mod/admin.php:1405
+msgid ""
+"Must be writable by web server. Relative to your Red top-level directory."
+msgstr "Doit être accessible en écriture par le serveur web. Chemin relatif à la racine de votre installation de la Matrice Rouge."
-#: ../../mod/settings.php:985
-msgid "making an <em>interesting</em> profile change"
-msgstr "vous faites une modification <em>intéressante</em> de votre profil"
+#: ../../mod/admin.php:1406
+msgid "Log level"
+msgstr "Niveau de journalisation"
-#: ../../mod/settings.php:986
-msgid "Send a notification email when:"
-msgstr "Envoyer un courriel de notification quand&nbsp;:"
+#: ../../mod/admin.php:1452
+msgid "New Profile Field"
+msgstr "Nouveau champ de profil"
-#: ../../mod/settings.php:987
-msgid "You receive a connection request"
-msgstr "Vous recevez une demande de mise en relation"
+#: ../../mod/admin.php:1453 ../../mod/admin.php:1473
+msgid "Field nickname"
+msgstr "Nom court du champ"
-#: ../../mod/settings.php:988
-msgid "Your connections are confirmed"
-msgstr "Vous relations sont confirmées"
+#: ../../mod/admin.php:1453 ../../mod/admin.php:1473
+msgid "System name of field"
+msgstr "Nom système du champ"
-#: ../../mod/settings.php:989
-msgid "Someone writes on your profile wall"
-msgstr "Quelqu'un a écrit sur votre mur"
+#: ../../mod/admin.php:1454 ../../mod/admin.php:1474
+msgid "Input type"
+msgstr "Type de champ"
-#: ../../mod/settings.php:990
-msgid "Someone writes a followup comment"
-msgstr "Quelqu'un a commenté sur vos publications"
+#: ../../mod/admin.php:1455 ../../mod/admin.php:1475
+msgid "Field Name"
+msgstr "Nom du champ"
-#: ../../mod/settings.php:991
-msgid "You receive a private message"
-msgstr "Vous recevez un message privé"
+#: ../../mod/admin.php:1455 ../../mod/admin.php:1475
+msgid "Label on profile pages"
+msgstr "Étiquette sur le profil"
-#: ../../mod/settings.php:992
-msgid "You receive a friend suggestion"
-msgstr "Vous recevez une suggestion d'amitié/relation"
+#: ../../mod/admin.php:1456 ../../mod/admin.php:1476
+msgid "Help text"
+msgstr "Aide à la saisie"
-#: ../../mod/settings.php:993
-msgid "You are tagged in a post"
-msgstr "Vous êtes étiqueté dans une publication"
+#: ../../mod/admin.php:1456 ../../mod/admin.php:1476
+msgid "Additional info (optional)"
+msgstr "Informations additionnelles (facultatif)"
-#: ../../mod/settings.php:994
-msgid "You are poked/prodded/etc. in a post"
-msgstr "Vous êtes cogné/encouragé/etc. dans une publication"
+#: ../../mod/admin.php:1466
+msgid "Field definition not found"
+msgstr "Définition du champ non-trouvée"
-#: ../../mod/settings.php:997
-msgid "Advanced Account/Page Type Settings"
-msgstr "Type de page/Compte (avancé)"
+#: ../../mod/admin.php:1472
+msgid "Edit Profile Field"
+msgstr "Éditer le champ de profil"
-#: ../../mod/settings.php:998
-msgid "Change the behaviour of this account for special situations"
-msgstr "Modifie le comportement de ce compte pour certains cas particuliers"
+#: ../../mod/pconfig.php:27 ../../mod/pconfig.php:60
+msgid "This setting requires special processing and editing has been blocked."
+msgstr "Ce paramètre nécessité un traitement spécial, les modifications ont été bloquées."
-#: ../../mod/settings.php:1001
+#: ../../mod/pconfig.php:49
+msgid "Configuration Editor"
+msgstr "Editeur de configuration"
+
+#: ../../mod/pconfig.php:50
msgid ""
-"Please enable expert mode (in <a href=\"settings/features\">Settings > "
-"Additional features</a>) to adjust!"
-msgstr "Mode expert requis (<a href=\"settings/features\">Réglages > Fonctions supplémentaires</a>) svp ajuster!"
+"Warning: Changing some settings could render your channel inoperable. Please"
+" leave this page unless you are comfortable with and knowledgeable about how"
+" to correctly use this feature."
+msgstr "Attention&nbsp;:modifier certains paramètres peut rendre votre canal inutilisable. Merci d'ignorer cette page à moins d'être suffisamment à l'aise de savoir comment utiliser correctement cette fonctionnalité."
-#: ../../mod/settings.php:1002
-msgid "Miscellaneous Settings"
-msgstr "Divers"
+#: ../../mod/api.php:76 ../../mod/api.php:102
+msgid "Authorize application connection"
+msgstr "Autoriser l'application à se connecter"
-#: ../../mod/settings.php:1004
-msgid "Personal menu to display in your channel pages"
-msgstr "Menu personnel tel qu'il apparaîtra sur les pages de votre canal"
+#: ../../mod/api.php:77
+msgid "Return to your app and insert this Securty Code:"
+msgstr "Merci de retourner vers votre application, et d'y insérer ce Code de Sécurité&nbsp;:"
-#: ../../mod/settings.php:1005
-msgid "Remove this channel"
-msgstr "Supprimer ce canal"
+#: ../../mod/api.php:89
+msgid "Please login to continue."
+msgstr "Merci de vous connecter pour continuer."
+
+#: ../../mod/api.php:104
+msgid ""
+"Do you want to authorize this application to access your posts and contacts,"
+" and/or create new posts for you?"
+msgstr "Voulez-vous autoriser cette application à accéder à vos publications et contacts, et/ou à publier en votre nom?"
+
+#: ../../mod/pdledit.php:13
+msgid "Layout updated."
+msgstr "Agencement pris-en-compte."
+
+#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
+msgid "Edit System Page Description"
+msgstr "Éditer la description"
+
+#: ../../mod/pdledit.php:48
+msgid "Layout not found."
+msgstr "Agencement introuvable."
+
+#: ../../mod/pdledit.php:54
+msgid "Module Name:"
+msgstr "Nom du module&nbsp;:"
+
+#: ../../mod/pdledit.php:55
+msgid "Layout Help"
+msgstr "Aide à la mise en page"
+
+#: ../../mod/appman.php:28 ../../mod/appman.php:44
+msgid "App installed."
+msgstr "Application installée."
+
+#: ../../mod/appman.php:37
+msgid "Malformed app."
+msgstr "Erreur de l'application - Malformée."
+
+#: ../../mod/appman.php:80
+msgid "Embed code"
+msgstr "Code intégré"
+
+#: ../../mod/appman.php:86
+msgid "Edit App"
+msgstr "Edition de l'Application"
+
+#: ../../mod/appman.php:86
+msgid "Create App"
+msgstr "Création d'une Application"
+
+#: ../../mod/appman.php:91
+msgid "Name of app"
+msgstr "Nom de l'application"
+
+#: ../../mod/appman.php:92
+msgid "Location (URL) of app"
+msgstr "Emplacement (Lien) vers l'application"
+
+#: ../../mod/appman.php:93 ../../mod/rbmark.php:95
+msgid "Description"
+msgstr "Description"
+
+#: ../../mod/appman.php:94
+msgid "Photo icon URL"
+msgstr "Lien (URL) de l'icône à utiliser pour cette photo"
+
+#: ../../mod/appman.php:94
+msgid "80 x 80 pixels - optional"
+msgstr "80 x 80 pixels - optionel"
+
+#: ../../mod/appman.php:95
+msgid "Version ID"
+msgstr "Version"
+
+#: ../../mod/appman.php:96
+msgid "Price of app"
+msgstr "Prix de l'application"
+
+#: ../../mod/appman.php:97
+msgid "Location (URL) to purchase app"
+msgstr "Emplacement (LIEN) pour l'achat de l'application"
+
+#: ../../mod/photos.php:78
+msgid "Page owner information could not be retrieved."
+msgstr "Impossible d'obtenir des informations sur le propriétaire de la page."
+
+#: ../../mod/photos.php:98
+msgid "Album not found."
+msgstr "Album introuvable."
+
+#: ../../mod/photos.php:120 ../../mod/photos.php:655
+msgid "Delete Album"
+msgstr "Supprimer album"
+
+#: ../../mod/photos.php:160 ../../mod/photos.php:942
+msgid "Delete Photo"
+msgstr "Supprimer photo"
+
+#: ../../mod/photos.php:441 ../../mod/directory.php:59
+#: ../../mod/display.php:13 ../../mod/ratings.php:82 ../../mod/search.php:13
+#: ../../mod/viewconnections.php:17
+msgid "Public access denied."
+msgstr "Accès public refusé."
+
+#: ../../mod/photos.php:452
+msgid "No photos selected"
+msgstr "Aucune photo selectionnée"
+
+#: ../../mod/photos.php:496
+msgid "Access to this item is restricted."
+msgstr "L'accès à l'élément est restreint."
+
+#: ../../mod/photos.php:535
+#, php-format
+msgid "%1$.2f MB of %2$.2f MB photo storage used."
+msgstr "Vous avez utilisé %1$.2f mégaoctets sur les %2$.2f autorisés pour le stockage des photos."
+
+#: ../../mod/photos.php:538
+#, php-format
+msgid "%1$.2f MB photo storage used."
+msgstr "%1$.2f méga-octets utilisés pour le stockage des photos."
+
+#: ../../mod/photos.php:562
+msgid "Upload Photos"
+msgstr "Téléverser des photos"
+
+#: ../../mod/photos.php:566 ../../mod/photos.php:648 ../../mod/photos.php:927
+msgid "Enter a new album name"
+msgstr "Entrer un nouveau nom d'album"
+
+#: ../../mod/photos.php:567 ../../mod/photos.php:649 ../../mod/photos.php:928
+msgid "or select an existing one (doubleclick)"
+msgstr "ou en sélectionner un existant (double-clic)"
+
+#: ../../mod/photos.php:568
+msgid "Create a status post for this upload"
+msgstr "Créer une publication de statut pour cet envoi"
+
+#: ../../mod/photos.php:596
+msgid "Album name could not be decoded"
+msgstr "Le nom de l'Album n'a pu être décodé"
+
+#: ../../mod/photos.php:637 ../../mod/photos.php:1169
+#: ../../mod/photos.php:1185
+msgid "Contact Photos"
+msgstr "Photos de contact"
+
+#: ../../mod/photos.php:661
+msgid "Show Newest First"
+msgstr "Ordre anté-chronologique"
+
+#: ../../mod/photos.php:663
+msgid "Show Oldest First"
+msgstr "Ordre chronologique"
+
+#: ../../mod/photos.php:687 ../../mod/photos.php:1217
+msgid "View Photo"
+msgstr "Voir la photo"
+
+#: ../../mod/photos.php:716
+msgid "Edit Album"
+msgstr "Éditer l'album"
+
+#: ../../mod/photos.php:761
+msgid "Permission denied. Access to this item may be restricted."
+msgstr "Permission refusée. L'accès à cet élément peut avoir été restreint."
+
+#: ../../mod/photos.php:763
+msgid "Photo not available"
+msgstr "Photo indisponible"
+
+#: ../../mod/photos.php:821
+msgid "Use as profile photo"
+msgstr "Utiliser comme photo du profil"
+
+#: ../../mod/photos.php:828
+msgid "Private Photo"
+msgstr "Photo privée"
+
+#: ../../mod/photos.php:839 ../../mod/events.php:505
+msgid "Previous"
+msgstr "Précédent"
+
+#: ../../mod/photos.php:843
+msgid "View Full Size"
+msgstr "Voir en taille réelle"
+
+#: ../../mod/photos.php:848 ../../mod/events.php:506 ../../mod/setup.php:281
+msgid "Next"
+msgstr "Suivant"
+
+#: ../../mod/photos.php:887 ../../mod/tagrm.php:133
+msgid "Remove"
+msgstr "Retirer"
+
+#: ../../mod/photos.php:921
+msgid "Edit photo"
+msgstr "Éditer la photo"
+
+#: ../../mod/photos.php:923
+msgid "Rotate CW (right)"
+msgstr "Rotation horaire (droite)"
+
+#: ../../mod/photos.php:924
+msgid "Rotate CCW (left)"
+msgstr "Rotation anti-horaire (gauche)"
+
+#: ../../mod/photos.php:931
+msgid "Caption"
+msgstr "Titre/légende"
+
+#: ../../mod/photos.php:933
+msgid "Add a Tag"
+msgstr "Ajouter une étiquette"
+
+#: ../../mod/photos.php:937
+msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
+msgstr "Exemple&nbsp;: @marc, @Barbara_Jensen, @charles@exemple.com, #Ile_de_France, #marathon"
+
+#: ../../mod/photos.php:940
+msgid "Flag as adult in album view"
+msgstr "Marquer comme \"adulte\" dans l'affichage de l'album"
+
+#: ../../mod/photos.php:1132
+msgid "In This Photo:"
+msgstr "Dans cette photo&nbsp;:"
+
+#: ../../mod/photos.php:1137
+msgid "Map"
+msgstr "Carte"
+
+#: ../../mod/photos.php:1223
+msgid "View Album"
+msgstr "Voir l'album"
+
+#: ../../mod/photos.php:1246
+msgid "Recent Photos"
+msgstr "Photos récentes"
+
+#: ../../mod/attach.php:9
+msgid "Item not available."
+msgstr "Élément indisponible."
+
+#: ../../mod/ping.php:263
+msgid "sent you a private message"
+msgstr "vous a envoyé un message privé"
+
+#: ../../mod/ping.php:314
+msgid "added your channel"
+msgstr "a ajouté votre canal"
+
+#: ../../mod/ping.php:355
+msgid "posted an event"
+msgstr "a publié un événement"
+
+#: ../../mod/blocks.php:95 ../../mod/blocks.php:148
+msgid "Block Name"
+msgstr "Nom du Bloc"
+
+#: ../../mod/blocks.php:149
+msgid "Block Title"
+msgstr "Titre du bloc"
#: ../../mod/poke.php:159
msgid "Poke/Prod"
-msgstr "Cogner/Encourager"
+msgstr "Cogner/Solliciter"
#: ../../mod/poke.php:160
msgid "poke, prod or do other things to somebody"
-msgstr "Cogner, encourager, et autres choses à faire à quelqu'un"
+msgstr "Cogner, pointer, et autres choses à faire à quelqu'un"
#: ../../mod/poke.php:161
msgid "Recipient"
@@ -4170,136 +5141,396 @@ msgstr "Choisir quoi lui faire"
msgid "Make this post private"
msgstr "Rendre cette contribution privée"
-#: ../../mod/api.php:76 ../../mod/api.php:102
-msgid "Authorize application connection"
-msgstr "Autoriser l'application à se connecter"
+#: ../../mod/bookmarks.php:38
+msgid "Bookmark added"
+msgstr "Favoris ajouté"
-#: ../../mod/api.php:77
-msgid "Return to your app and insert this Securty Code:"
-msgstr "Merci de retourner vers votre application, et d'y insérer ce Code de Sécurité&nbsp;:"
+#: ../../mod/bookmarks.php:60
+msgid "My Bookmarks"
+msgstr "Mes Favoris"
-#: ../../mod/api.php:89
-msgid "Please login to continue."
-msgstr "Merci de vous connecter pour continuer."
+#: ../../mod/bookmarks.php:71
+msgid "My Connections Bookmarks"
+msgstr "Favoris de mes relations"
-#: ../../mod/api.php:104
-msgid ""
-"Do you want to authorize this application to access your posts and contacts,"
-" and/or create new posts for you?"
-msgstr "Voulez-vous autoriser cette application à accéder à vos publications et contacts, et/ou à publier en votre nom?"
+#: ../../mod/manage.php:136
+#, php-format
+msgid "You have created %1$.0f of %2$.0f allowed channels."
+msgstr "Vous avez créé %1$.0f des %2$.0f canaux autorisés."
+
+#: ../../mod/manage.php:144
+msgid "Create a new channel"
+msgstr "Créer un nouveau canal"
+
+#: ../../mod/manage.php:167
+msgid "Current Channel"
+msgstr "Canal actif"
+
+#: ../../mod/manage.php:169
+msgid "Switch to one of your channels by selecting it."
+msgstr "Pour changer de canal, sélectionner en un"
+
+#: ../../mod/manage.php:170
+msgid "Default Channel"
+msgstr "Canal par défaut"
+
+#: ../../mod/manage.php:171
+msgid "Make Default"
+msgstr "Définir comme défaut"
+
+#: ../../mod/manage.php:174
+#, php-format
+msgid "%d new messages"
+msgstr "%d nouveaux messages"
+
+#: ../../mod/manage.php:175
+#, php-format
+msgid "%d new introductions"
+msgstr "%d nouvelles introductions"
+
+#: ../../mod/manage.php:177
+msgid "Delegated Channels"
+msgstr "Canaux délégués"
+
+#: ../../mod/match.php:22
+msgid "Profile Match"
+msgstr "Profils similaires"
+
+#: ../../mod/match.php:31
+msgid "No keywords to match. Please add keywords to your default profile."
+msgstr "Aucun mot-clef à comparer. Merci d'ajouter des mots-clefs à votre profil par défaut."
+
+#: ../../mod/match.php:63
+msgid "is interested in:"
+msgstr "s'intéresse à&nbsp;:"
+
+#: ../../mod/match.php:70
+msgid "No matches"
+msgstr "Pas de correspondance"
+
+#: ../../mod/bulksetclose.php:89 ../../mod/group.php:196
+msgid "Members"
+msgstr "Membres"
+
+#: ../../mod/bulksetclose.php:91 ../../mod/group.php:198
+msgid "All Connected Channels"
+msgstr "Tous canaux connectés"
+
+#: ../../mod/bulksetclose.php:126 ../../mod/group.php:233
+msgid "Click on a channel to add or remove."
+msgstr "Cliquer sur un canal pour l'ajouter ou le supprimer"
+
+#: ../../mod/poll.php:64
+msgid "Poll"
+msgstr ""
+
+#: ../../mod/poll.php:69
+msgid "View Results"
+msgstr "Voir les résultats"
-#: ../../mod/post.php:229
+#: ../../mod/channel.php:25 ../../mod/chat.php:19
+msgid "You must be logged in to see this page."
+msgstr "Vous devez vous connecter pour voir cette page."
+
+#: ../../mod/channel.php:97
+msgid "Insufficient permissions. Request redirected to profile page."
+msgstr "Permissions insuffisantes. Demande redirigée à la page du profil."
+
+#: ../../mod/post.php:236
msgid ""
"Remote authentication blocked. You are logged into this site locally. Please"
" logout and retry."
msgstr "Authentification magique bloquée. Vous êtes connecté sur ce site localement. Merci de vous en déconnecter et réessayer."
-#: ../../mod/post.php:261 ../../mod/openid.php:72 ../../mod/openid.php:178
+#: ../../mod/post.php:287 ../../mod/openid.php:72 ../../mod/openid.php:180
#, php-format
msgid "Welcome %s. Remote authentication successful."
msgstr "Bienvenue %s. L'authentification magique a fonctionné."
-#: ../../mod/attach.php:9
-msgid "Item not available."
-msgstr "Élément indisponible."
+#: ../../mod/chat.php:167
+msgid "Room not found"
+msgstr "Salon introuvable"
+
+#: ../../mod/chat.php:178
+msgid "Leave Room"
+msgstr "Quitter le salon"
+
+#: ../../mod/chat.php:179
+msgid "Delete This Room"
+msgstr "Supprimer le salon"
+
+#: ../../mod/chat.php:180
+msgid "I am away right now"
+msgstr "Je suis momentanément absent"
+
+#: ../../mod/chat.php:181
+msgid "I am online"
+msgstr "Je suis en ligne"
+
+#: ../../mod/chat.php:183
+msgid "Bookmark this room"
+msgstr "Marquer ce salon"
+
+#: ../../mod/chat.php:207 ../../mod/chat.php:229
+msgid "New Chatroom"
+msgstr "Nouveau salon"
+
+#: ../../mod/chat.php:208
+msgid "Chatroom Name"
+msgstr "Nom du salon"
+
+#: ../../mod/chat.php:225
+#, php-format
+msgid "%1$s's Chatrooms"
+msgstr "Salons de %1$s"
+
+#: ../../mod/chatsvc.php:111
+msgid "Away"
+msgstr "Absent"
+
+#: ../../mod/chatsvc.php:115
+msgid "Online"
+msgstr "En ligne"
-#: ../../mod/probe.php:23 ../../mod/probe.php:29
+#: ../../mod/probe.php:24 ../../mod/probe.php:30
#, php-format
msgid "Fetching URL returns error: %1$s"
msgstr "Récupération d'URL échouée&nbsp;: %1$s"
-#: ../../mod/block.php:27 ../../mod/page.php:35
-msgid "Invalid item."
-msgstr "Élément invalide."
+#: ../../mod/cloud.php:120
+msgid "$Projectname - Guests: Username: {your email address}, Password: +++"
+msgstr ""
-#: ../../mod/block.php:39 ../../mod/chanview.php:77 ../../mod/page.php:47
-#: ../../mod/home.php:54 ../../mod/wall_upload.php:28
-msgid "Channel not found."
-msgstr "Canal introuvable."
+#: ../../mod/common.php:10
+msgid "No channel."
+msgstr "Pas de canal."
-#: ../../mod/block.php:75 ../../mod/page.php:83 ../../mod/display.php:100
-#: ../../mod/help.php:72 ../../index.php:236
-msgid "Page not found."
-msgstr "Page introuvable."
+#: ../../mod/common.php:39
+msgid "Common connections"
+msgstr "Relations communes"
+
+#: ../../mod/common.php:44
+msgid "No connections in common."
+msgstr "Pas de relations en commun."
#: ../../mod/profile_photo.php:108
msgid "Image uploaded but image cropping failed."
msgstr "L'image a été téléversée, mais le recadrage a échoué."
-#: ../../mod/profile_photo.php:161
+#: ../../mod/profile_photo.php:162
msgid "Image resize failed."
msgstr "Le redimensionnement de l'image a échoué."
-#: ../../mod/profile_photo.php:205
+#: ../../mod/profile_photo.php:206
msgid ""
"Shift-reload the page or clear browser cache if the new photo does not "
"display immediately."
msgstr "Shirt-rechargez votre page, ou videz le cache du navigateur si la photo ne s'affiche pas immédiatement."
-#: ../../mod/profile_photo.php:232
+#: ../../mod/profile_photo.php:233
#, php-format
msgid "Image exceeds size limit of %d"
msgstr "L'image dépasse la taille limite de %d"
-#: ../../mod/profile_photo.php:241
+#: ../../mod/profile_photo.php:242
msgid "Unable to process image."
msgstr "Impossible de traîter l'image."
-#: ../../mod/profile_photo.php:290 ../../mod/profile_photo.php:339
+#: ../../mod/profile_photo.php:291 ../../mod/profile_photo.php:340
msgid "Photo not available."
msgstr "Photo inaccessible."
-#: ../../mod/profile_photo.php:358
+#: ../../mod/profile_photo.php:359
msgid "Upload File:"
msgstr "Fichier&nbsp;:"
-#: ../../mod/profile_photo.php:359
+#: ../../mod/profile_photo.php:360
msgid "Select a profile:"
msgstr "Choisir un profil&nbsp;:"
-#: ../../mod/profile_photo.php:360
+#: ../../mod/profile_photo.php:361
msgid "Upload Profile Photo"
msgstr "Téléverser une photo de profil"
-#: ../../mod/profile_photo.php:365
+#: ../../mod/profile_photo.php:366 ../../mod/settings.php:995
+msgid "or"
+msgstr "ou"
+
+#: ../../mod/profile_photo.php:366
msgid "skip this step"
msgstr "passer cette étape"
-#: ../../mod/profile_photo.php:365
+#: ../../mod/profile_photo.php:366
msgid "select a photo from your photo albums"
msgstr "choisir une photo dans vos albums"
-#: ../../mod/profile_photo.php:379
+#: ../../mod/profile_photo.php:382
msgid "Crop Image"
msgstr "Recadrer l'image"
-#: ../../mod/profile_photo.php:380
+#: ../../mod/profile_photo.php:383
msgid "Please adjust the image cropping for optimum viewing."
msgstr "Merci d'ajuster le cadre pour une visualisation optimale."
-#: ../../mod/profile_photo.php:382
+#: ../../mod/profile_photo.php:385
msgid "Done Editing"
msgstr "J'ai terminé"
-#: ../../mod/profile_photo.php:425
+#: ../../mod/profile_photo.php:428
msgid "Image uploaded successfully."
msgstr "Image téléversée avec succès."
-#: ../../mod/profile_photo.php:427
+#: ../../mod/profile_photo.php:430
msgid "Image upload failed."
msgstr "Le téléversement a échoué."
-#: ../../mod/profile_photo.php:436
+#: ../../mod/profile_photo.php:439
#, php-format
msgid "Image size reduction [%s] failed."
msgstr "La réduction de taille [%s] a échoué."
-#: ../../mod/blocks.php:66
-msgid "Block Name"
-msgstr "Nom du Bloc"
+#: ../../mod/connect.php:56 ../../mod/connect.php:104
+msgid "Continue"
+msgstr "Continuer"
+
+#: ../../mod/connect.php:85
+msgid "Premium Channel Setup"
+msgstr "Configuration du canal VIP"
+
+#: ../../mod/connect.php:87
+msgid "Enable premium channel connection restrictions"
+msgstr "Activer les restrictions liées au canal VIP"
+
+#: ../../mod/connect.php:88
+msgid ""
+"Please enter your restrictions or conditions, such as paypal receipt, usage "
+"guidelines, etc."
+msgstr "Merci de saisir les restrictions et/ou conditions - reçu Paypal, transaction Bitcoin, ligne de conduite, ..."
+
+#: ../../mod/connect.php:90 ../../mod/connect.php:110
+msgid ""
+"This channel may require additional steps or acknowledgement of the "
+"following conditions prior to connecting:"
+msgstr "Avant d'autoriser la mise en relation, ce canal attire votre attention sur les conditions suivantes&nbsp;:"
+
+#: ../../mod/connect.php:91
+msgid ""
+"Potential connections will then see the following text before proceeding:"
+msgstr "Les relations potentielles verront ce qui suit avant de pouvoir continuer&nbsp;:"
+
+#: ../../mod/connect.php:92 ../../mod/connect.php:113
+msgid ""
+"By continuing, I certify that I have complied with any instructions provided"
+" on this page."
+msgstr "En continuant, je certifie que je me suis acquitté de toutes les instructions indiquées"
+
+#: ../../mod/connect.php:101
+msgid "(No specific instructions have been provided by the channel owner.)"
+msgstr "(Aucune instruction spécifique n'a été établie par le propriétaire du canal.)"
+
+#: ../../mod/connect.php:109
+msgid "Restricted or Premium Channel"
+msgstr "Canal VIP ou restreint"
+
+#: ../../mod/notifications.php:26
+msgid "Invalid request identifier."
+msgstr "Identifiant de requête invalide."
+
+#: ../../mod/notifications.php:35
+msgid "Discard"
+msgstr "Annuler"
+
+#: ../../mod/notifications.php:51 ../../mod/connedit.php:539
+msgid "Ignore"
+msgstr "Ignorer"
+
+#: ../../mod/notifications.php:94 ../../mod/notify.php:53
+msgid "No more system notifications."
+msgstr "Pas d'autre notification du système."
+
+#: ../../mod/notifications.php:98 ../../mod/notify.php:57
+msgid "System Notifications"
+msgstr "Notifications du système"
+
+#: ../../mod/connections.php:52 ../../mod/connections.php:153
+msgid "Blocked"
+msgstr "Bloqué"
+
+#: ../../mod/connections.php:57 ../../mod/connections.php:160
+msgid "Ignored"
+msgstr "Ignoré"
+
+#: ../../mod/connections.php:62 ../../mod/connections.php:174
+msgid "Hidden"
+msgstr "Caché"
+
+#: ../../mod/connections.php:67 ../../mod/connections.php:167
+msgid "Archived"
+msgstr "Archivé"
+
+#: ../../mod/connections.php:131
+msgid "Suggest new connections"
+msgstr "Suggérer de nouvelles relations"
+
+#: ../../mod/connections.php:134
+msgid "New Connections"
+msgstr "Nouvelles relations"
+
+#: ../../mod/connections.php:137
+msgid "Show pending (new) connections"
+msgstr "Voir les (nouvelles) relations en attente"
+
+#: ../../mod/connections.php:140 ../../mod/profperm.php:139
+msgid "All Connections"
+msgstr "Toutes les relations"
+
+#: ../../mod/connections.php:143
+msgid "Show all connections"
+msgstr "Voir toutes les relations"
+
+#: ../../mod/connections.php:146
+msgid "Unblocked"
+msgstr "Non bloquées"
+
+#: ../../mod/connections.php:149
+msgid "Only show unblocked connections"
+msgstr "Ne montrer que les relations non-bloquées"
+
+#: ../../mod/connections.php:156
+msgid "Only show blocked connections"
+msgstr "Ne montrer que les relations bloquées"
+
+#: ../../mod/connections.php:163
+msgid "Only show ignored connections"
+msgstr "Ne montrer que les relations ignorées"
+
+#: ../../mod/connections.php:170
+msgid "Only show archived connections"
+msgstr "Ne montrer que les relations archivées"
-#: ../../mod/profiles.php:18 ../../mod/profiles.php:165
-#: ../../mod/profiles.php:222 ../../mod/profiles.php:539
+#: ../../mod/connections.php:177
+msgid "Only show hidden connections"
+msgstr "Ne montrer que les relations cachées"
+
+#: ../../mod/connections.php:232
+#, php-format
+msgid "%1$s [%2$s]"
+msgstr "%1$s [%2$s]"
+
+#: ../../mod/connections.php:233
+msgid "Edit connection"
+msgstr "Modifier le contact"
+
+#: ../../mod/connections.php:271
+msgid "Search your connections"
+msgstr "Chercher parmi vos relations"
+
+#: ../../mod/connections.php:272
+msgid "Finding: "
+msgstr "Recherche&nbsp;:"
+
+#: ../../mod/profiles.php:18 ../../mod/profiles.php:174
+#: ../../mod/profiles.php:231 ../../mod/profiles.php:600
msgid "Profile not found."
msgstr "Profil introuvable."
@@ -4323,255 +5554,482 @@ msgstr "Profil impossible à cloner."
msgid "Profile unavailable to export."
msgstr "Impossible d'exporter le profil."
-#: ../../mod/profiles.php:232
+#: ../../mod/profiles.php:241
msgid "Profile Name is required."
msgstr "Le nom du profil est requis."
-#: ../../mod/profiles.php:354
+#: ../../mod/profiles.php:404
msgid "Marital Status"
msgstr "Statut marital"
-#: ../../mod/profiles.php:358
+#: ../../mod/profiles.php:408
msgid "Romantic Partner"
msgstr "Partenaire"
-#: ../../mod/profiles.php:362
+#: ../../mod/profiles.php:412
msgid "Likes"
msgstr "Aime"
-#: ../../mod/profiles.php:366
+#: ../../mod/profiles.php:416
msgid "Dislikes"
msgstr "Déteste"
-#: ../../mod/profiles.php:370
+#: ../../mod/profiles.php:420
msgid "Work/Employment"
msgstr "Travail/Occupation"
-#: ../../mod/profiles.php:373
+#: ../../mod/profiles.php:423
msgid "Religion"
msgstr "Religion/Croyance"
-#: ../../mod/profiles.php:377
+#: ../../mod/profiles.php:427
msgid "Political Views"
msgstr "Opinions politiques"
-#: ../../mod/profiles.php:381
+#: ../../mod/profiles.php:431 ../../mod/id.php:33
msgid "Gender"
msgstr "Sexe/Genre"
-#: ../../mod/profiles.php:385
+#: ../../mod/profiles.php:435
msgid "Sexual Preference"
msgstr "Préférence sexuelle"
-#: ../../mod/profiles.php:389
+#: ../../mod/profiles.php:439
msgid "Homepage"
msgstr "Site Internet"
-#: ../../mod/profiles.php:393
+#: ../../mod/profiles.php:443
msgid "Interests"
msgstr "Centres d'intérêt"
-#: ../../mod/profiles.php:397 ../../mod/admin.php:902
-msgid "Address"
-msgstr "Adresse"
-
-#: ../../mod/profiles.php:404 ../../mod/pubsites.php:25
+#: ../../mod/profiles.php:454 ../../mod/pubsites.php:26
msgid "Location"
msgstr "Emplacement"
-#: ../../mod/profiles.php:487
+#: ../../mod/profiles.php:537
msgid "Profile updated."
msgstr "Profil mis à jour."
-#: ../../mod/profiles.php:564
+#: ../../mod/profiles.php:626
msgid "Hide your contact/friend list from viewers of this profile?"
msgstr "Cacher vos contacts/relations aux visiteurs de ce profil?"
-#: ../../mod/profiles.php:588
+#: ../../mod/profiles.php:666
msgid "Edit Profile Details"
msgstr "Éditer les détails du profil"
-#: ../../mod/profiles.php:590
+#: ../../mod/profiles.php:668
msgid "View this profile"
msgstr "Voir le profil"
-#: ../../mod/profiles.php:592
+#: ../../mod/profiles.php:670
msgid "Change Profile Photo"
msgstr "Changer la photo du profil"
-#: ../../mod/profiles.php:593
+#: ../../mod/profiles.php:671
msgid "Create a new profile using these settings"
msgstr "Créer un nouveau profil avec ces réglages"
-#: ../../mod/profiles.php:594
+#: ../../mod/profiles.php:672
msgid "Clone this profile"
msgstr "Cloner le profil"
-#: ../../mod/profiles.php:595
+#: ../../mod/profiles.php:673
msgid "Delete this profile"
msgstr "Supprimer le profil"
-#: ../../mod/profiles.php:597
+#: ../../mod/profiles.php:675
msgid "Import profile from file"
msgstr "Importer le profil à partir d'un fichier"
-#: ../../mod/profiles.php:598
+#: ../../mod/profiles.php:676
msgid "Export profile to file"
msgstr "Exporter le profil vers un fichier."
-#: ../../mod/profiles.php:599
+#: ../../mod/profiles.php:677
msgid "Profile Name:"
msgstr "Nom du profil&nbsp;:"
-#: ../../mod/profiles.php:600
+#: ../../mod/profiles.php:678
msgid "Your Full Name:"
msgstr "Votre nom complet&nbsp;:"
-#: ../../mod/profiles.php:601
+#: ../../mod/profiles.php:679
msgid "Title/Description:"
msgstr "Titre/description&nbsp;:"
-#: ../../mod/profiles.php:602
+#: ../../mod/profiles.php:680
msgid "Your Gender:"
msgstr "Sexe/Genre&nbsp;:"
-#: ../../mod/profiles.php:603
-#, php-format
-msgid "Birthday (%s):"
-msgstr "Date de naissance (%s)&nbsp;:"
+#: ../../mod/profiles.php:681
+msgid "Birthday :"
+msgstr "Date de naissance&nbsp;:"
-#: ../../mod/profiles.php:604
+#: ../../mod/profiles.php:682
msgid "Street Address:"
msgstr "Adresse postale&nbsp;:"
-#: ../../mod/profiles.php:605
+#: ../../mod/profiles.php:683
msgid "Locality/City:"
msgstr "Ville/Localité&nbsp;:"
-#: ../../mod/profiles.php:606
+#: ../../mod/profiles.php:684
msgid "Postal/Zip Code:"
msgstr "Code postal&nbsp;:"
-#: ../../mod/profiles.php:607
+#: ../../mod/profiles.php:685
msgid "Country:"
msgstr "Pays&nbsp;:"
-#: ../../mod/profiles.php:608
+#: ../../mod/profiles.php:686
msgid "Region/State:"
msgstr "Région/Province/État&nbsp;:"
-#: ../../mod/profiles.php:609
+#: ../../mod/profiles.php:687
msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
msgstr "<span class=\"heart\">&hearts;</span>Statut marital&nbsp;:"
-#: ../../mod/profiles.php:610
+#: ../../mod/profiles.php:688
msgid "Who: (if applicable)"
msgstr "Avec&nbsp;: (si pertinent)"
-#: ../../mod/profiles.php:611
+#: ../../mod/profiles.php:689
msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
msgstr "Exemples&nbsp;: cathy123, Cathy Williams, cathy@exemple.com"
-#: ../../mod/profiles.php:612
+#: ../../mod/profiles.php:690
msgid "Since [date]:"
msgstr "Depuis [date]&nbsp;:"
-#: ../../mod/profiles.php:614
+#: ../../mod/profiles.php:692
msgid "Homepage URL:"
msgstr "URL de mon site Internet&nbsp;:"
-#: ../../mod/profiles.php:617
+#: ../../mod/profiles.php:695
msgid "Religious Views:"
msgstr "Opinions religieuses&nbsp;:"
-#: ../../mod/profiles.php:618
+#: ../../mod/profiles.php:696
msgid "Keywords:"
msgstr "Mots-clefs&nbsp;:"
-#: ../../mod/profiles.php:621
+#: ../../mod/profiles.php:699
msgid "Example: fishing photography software"
msgstr "Exemple&nbsp;: escrime photographie modélisme"
-#: ../../mod/profiles.php:622
+#: ../../mod/profiles.php:700
msgid "Used in directory listings"
msgstr "Utilisé pour le référencement dans l'annuaire"
-#: ../../mod/profiles.php:623
+#: ../../mod/profiles.php:701
msgid "Tell us about yourself..."
msgstr "Parlez nous de vous..."
-#: ../../mod/profiles.php:624
+#: ../../mod/profiles.php:702
msgid "Hobbies/Interests"
msgstr "Loisirs/Centres d'intêret"
-#: ../../mod/profiles.php:625
+#: ../../mod/profiles.php:703
msgid "Contact information and Social Networks"
msgstr "Coordonnées et réseaux sociaux"
-#: ../../mod/profiles.php:626
+#: ../../mod/profiles.php:704
msgid "My other channels"
msgstr "Mes autres canaux"
-#: ../../mod/profiles.php:627
+#: ../../mod/profiles.php:705
msgid "Musical interests"
msgstr "Goûts musicaux"
-#: ../../mod/profiles.php:628
+#: ../../mod/profiles.php:706
msgid "Books, literature"
msgstr "Littérature"
-#: ../../mod/profiles.php:629
+#: ../../mod/profiles.php:707
msgid "Television"
msgstr "Télévision"
-#: ../../mod/profiles.php:630
+#: ../../mod/profiles.php:708
msgid "Film/dance/culture/entertainment"
msgstr "Cinéma/Danse/Culture/Divertissement"
-#: ../../mod/profiles.php:631
+#: ../../mod/profiles.php:709
msgid "Love/romance"
msgstr "Amour/Romance"
-#: ../../mod/profiles.php:632
+#: ../../mod/profiles.php:710
msgid "Work/employment"
msgstr "Travail/Occupation"
-#: ../../mod/profiles.php:633
+#: ../../mod/profiles.php:711
msgid "School/education"
msgstr "Études"
-#: ../../mod/profiles.php:639
+#: ../../mod/profiles.php:717
msgid "This is your default profile."
msgstr "Voilà votre profil par défault."
-#: ../../mod/profiles.php:650 ../../mod/directory.php:143
-#: ../../mod/dirprofile.php:92
+#: ../../mod/profiles.php:728
msgid "Age: "
msgstr "Age&nbsp;:"
-#: ../../mod/profiles.php:692
+#: ../../mod/profiles.php:771
msgid "Edit/Manage Profiles"
msgstr "Éditer/gérer les profils"
-#: ../../mod/profiles.php:693
+#: ../../mod/profiles.php:772
msgid "Add profile things"
msgstr "Ajouter des choses de profil"
-#: ../../mod/profiles.php:694
+#: ../../mod/profiles.php:773
msgid "Include desirable objects in your profile"
msgstr "Incluez des objets souhaitables dans votre profil"
-#: ../../mod/bookmarks.php:38
-msgid "Bookmark added"
-msgstr "Favoris ajouté"
+#: ../../mod/connedit.php:75
+msgid "Could not access contact record."
+msgstr "Impossible d'accéder aux détails du contact."
-#: ../../mod/bookmarks.php:58
-msgid "My Bookmarks"
-msgstr "Mes Favoris"
+#: ../../mod/connedit.php:99
+msgid "Could not locate selected profile."
+msgstr "Impossible de localiser le profil sélectionné."
-#: ../../mod/bookmarks.php:69
-msgid "My Connections Bookmarks"
-msgstr "Favoris de mes relations"
+#: ../../mod/connedit.php:219
+msgid "Connection updated."
+msgstr "Connexion mise à jour."
+
+#: ../../mod/connedit.php:221
+msgid "Failed to update connection record."
+msgstr "Impossible de mettre à jour les détails de la relation."
+
+#: ../../mod/connedit.php:267
+msgid "is now connected to"
+msgstr "est maintenant connecté avec"
+
+#: ../../mod/connedit.php:392
+msgid "Could not access address book record."
+msgstr "Impossible d'accéder aux détails du carnet d'adresses."
+
+#: ../../mod/connedit.php:406
+msgid "Refresh failed - channel is currently unavailable."
+msgstr "Actualisation impossible - le canal est momentanément indisponible."
+
+#: ../../mod/connedit.php:418 ../../mod/connedit.php:430
+#: ../../mod/connedit.php:442 ../../mod/connedit.php:454
+#: ../../mod/connedit.php:470
+msgid "Unable to set address book parameters."
+msgstr "Impossible de régler les paramètres du carnet d'adresses."
+
+#: ../../mod/connedit.php:494
+msgid "Connection has been removed."
+msgstr "La relation a été supprimée"
+
+#: ../../mod/connedit.php:513
+#, php-format
+msgid "View %s's profile"
+msgstr "Voir le profil de %s"
+
+#: ../../mod/connedit.php:517
+msgid "Refresh Permissions"
+msgstr "Actualiser les permissions"
+
+#: ../../mod/connedit.php:520
+msgid "Fetch updated permissions"
+msgstr "Récupérer les permissions les plus récentes"
+
+#: ../../mod/connedit.php:524
+msgid "Recent Activity"
+msgstr "Activité récente"
+
+#: ../../mod/connedit.php:527
+msgid "View recent posts and comments"
+msgstr "Voir les contributions et commentaires récentes"
+
+#: ../../mod/connedit.php:534
+msgid "Block (or Unblock) all communications with this connection"
+msgstr "Bloquer ou débloquer toute communication avec ce contact"
+
+#: ../../mod/connedit.php:535
+msgid "This connection is blocked!"
+msgstr "Ce contact est bloqué&nbsp;!"
+
+#: ../../mod/connedit.php:539
+msgid "Unignore"
+msgstr "Ne plus ignorer"
+
+#: ../../mod/connedit.php:542
+msgid "Ignore (or Unignore) all inbound communications from this connection"
+msgstr "Ignorer ou ne plus ignorer toute communication venant de ce contact"
+
+#: ../../mod/connedit.php:543
+msgid "This connection is ignored!"
+msgstr "Ce contact est ignoré&nbsp;!"
+
+#: ../../mod/connedit.php:547
+msgid "Unarchive"
+msgstr "Ne plus archiver"
+
+#: ../../mod/connedit.php:547
+msgid "Archive"
+msgstr "Archiver"
+
+#: ../../mod/connedit.php:550
+msgid ""
+"Archive (or Unarchive) this connection - mark channel dead but keep content"
+msgstr "Archiver ou désarchiver ce contact - le marquer comme inactif mais conserver le contenu"
+
+#: ../../mod/connedit.php:551
+msgid "This connection is archived!"
+msgstr "Ce contact est archivé&nbsp;!"
+
+#: ../../mod/connedit.php:555
+msgid "Unhide"
+msgstr "Ne plus cacher"
+
+#: ../../mod/connedit.php:555
+msgid "Hide"
+msgstr "Cacher"
+
+#: ../../mod/connedit.php:558
+msgid "Hide or Unhide this connection from your other connections"
+msgstr "Cacher ou ne plus cacher ce contact vis-à-vis de vos autres contacts"
+
+#: ../../mod/connedit.php:559
+msgid "This connection is hidden!"
+msgstr "Ce contact est caché&nbsp;!"
+
+#: ../../mod/connedit.php:566
+msgid "Delete this connection"
+msgstr "Supprimer cette relation"
+
+#: ../../mod/connedit.php:647
+msgid "Approve this connection"
+msgstr "Approuver cette relation"
+
+#: ../../mod/connedit.php:647
+msgid "Accept connection to allow communication"
+msgstr "Accepter la relation pour permettre la communication"
+
+#: ../../mod/connedit.php:652
+msgid "Set Affinity"
+msgstr "Définir le degré d'affinité"
+
+#: ../../mod/connedit.php:655
+msgid "Set Profile"
+msgstr "Définir le profil"
+
+#: ../../mod/connedit.php:658
+msgid "Set Affinity & Profile"
+msgstr "Définir le degré d'affinité et le profil"
+
+#: ../../mod/connedit.php:675
+msgid "Apply these permissions automatically"
+msgstr "Appliquer ces permissions automatiquement"
+
+#: ../../mod/connedit.php:677
+msgid "This connection's address is"
+msgstr ""
+
+#: ../../mod/connedit.php:680
+msgid ""
+"The permissions indicated on this page will be applied to all new "
+"connections."
+msgstr "Les permissions indiquées sur cette page seront appliquées à tous vos nouveaux contacts."
+
+#: ../../mod/connedit.php:682
+msgid "Slide to adjust your degree of friendship"
+msgstr "Faites glisser pour ajuster le niveau de la relation"
+
+#: ../../mod/connedit.php:684
+msgid "Slide to adjust your rating"
+msgstr "Faîtes glisser pour ajuster votre note"
+
+#: ../../mod/connedit.php:685 ../../mod/connedit.php:690
+msgid "Optionally explain your rating"
+msgstr "Explication facultative de votre évaluation"
+
+#: ../../mod/connedit.php:687
+msgid "Custom Filter"
+msgstr "Filtre personnalisé"
+
+#: ../../mod/connedit.php:688
+msgid "Only import posts with this text"
+msgstr "N'importer que les publications comprenant ce texte"
+
+#: ../../mod/connedit.php:688 ../../mod/connedit.php:689
+msgid ""
+"words one per line or #tags or /patterns/, leave blank to import all posts"
+msgstr ""
+
+#: ../../mod/connedit.php:689
+msgid "Do not import posts with this text"
+msgstr "Ne pas importer les publications comprenant ce texte"
+
+#: ../../mod/connedit.php:691
+msgid "This information is public!"
+msgstr "Cette information est publique&nbsp;!"
+
+#: ../../mod/connedit.php:696
+msgid "Connection Pending Approval"
+msgstr "Contact en attente d'approbation"
+
+#: ../../mod/connedit.php:697
+msgid "Connection Request"
+msgstr "Demande de contact"
+
+#: ../../mod/connedit.php:698
+#, php-format
+msgid ""
+"(%s) would like to connect with you. Please approve this connection to allow"
+" communication."
+msgstr "(%s) veut devenir votre contact. Merci d'approuver cette demande pour permettre la communication."
+
+#: ../../mod/connedit.php:700
+msgid "Approve Later"
+msgstr "Approuver plus tard"
+
+#: ../../mod/connedit.php:703
+msgid "inherited"
+msgstr "héritée"
+
+#: ../../mod/connedit.php:705
+#, php-format
+msgid ""
+"Please choose the profile you would like to display to %s when viewing your "
+"profile securely."
+msgstr "Merci de choisir le profil que vous souhaitez montrer quand %s visite votre profil de manière authentifiée."
+
+#: ../../mod/connedit.php:707
+msgid "Their Settings"
+msgstr "Ses réglages"
+
+#: ../../mod/connedit.php:708
+msgid "My Settings"
+msgstr "Mes réglages"
+
+#: ../../mod/connedit.php:710
+msgid "Individual Permissions"
+msgstr "Permissions spécifiques"
+
+#: ../../mod/connedit.php:711
+msgid ""
+"Some permissions may be inherited from your channel's <a "
+"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
+"priority than individual settings. You can <strong>not</strong> change those"
+" settings here."
+msgstr "Certaines permissions peuvent être héritées de vos <a href=\"settings\">paramètres de confidentialité</a> de canal, lesquels sont prioritaires sur les réglages individuels. Vous pouvez modifier ces permissions ici mais cela n'aura aucun effet à moins de changer les paramètres hérités."
+
+#: ../../mod/connedit.php:712
+msgid ""
+"Some permissions may be inherited from your channel's <a "
+"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
+"priority than individual settings. You can change those settings here but "
+"they wont have any impact unless the inherited setting changes."
+msgstr "Certaines permissions peuvent être héritées de vos <a href=\"settings\">paramètres de confidentialité</a> de canal, lesquels sont prioritaires sur les réglages individuels. Vous pouvez modifier ces permissions ici mais cela n'aura aucun effet à moins de changer les paramètres hérités."
+
+#: ../../mod/connedit.php:713
+msgid "Last update:"
+msgstr "Dernière mise-à-jour&nbsp;:"
#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
msgid "Invalid profile identifier."
@@ -4589,9 +6047,92 @@ msgstr "Cliquez sur un contact pour l'ajouter ou le retirer."
msgid "Visible To"
msgstr "Visible par"
-#: ../../mod/profperm.php:139 ../../mod/connections.php:279
-msgid "All Connections"
-msgstr "Toutes les relations"
+#: ../../mod/dav.php:121
+msgid "$Projectname channel"
+msgstr "Canal $Projectname"
+
+#: ../../mod/directory.php:234
+#, php-format
+msgid "%d rating"
+msgid_plural "%d ratings"
+msgstr[0] "%d évaluations"
+msgstr[1] "%d évaluations"
+
+#: ../../mod/directory.php:245
+msgid "Gender: "
+msgstr "Sexe/genre&nbsp;:"
+
+#: ../../mod/directory.php:247
+msgid "Status: "
+msgstr "État&nbsp;:"
+
+#: ../../mod/directory.php:249
+msgid "Homepage: "
+msgstr "Site web&nbsp;:"
+
+#: ../../mod/directory.php:308 ../../mod/events.php:682
+msgid "Description:"
+msgstr "Description:"
+
+#: ../../mod/directory.php:317
+msgid "Public Forum:"
+msgstr "Forum public :"
+
+#: ../../mod/directory.php:320
+msgid "Keywords: "
+msgstr "Mots-clefs&nbsp;:"
+
+#: ../../mod/directory.php:323
+msgid "Don't suggest"
+msgstr "Ne pas suggérer"
+
+#: ../../mod/directory.php:325
+msgid "Common connections:"
+msgstr "Relations générales"
+
+#: ../../mod/directory.php:374
+msgid "Global Directory"
+msgstr "Annuaire global"
+
+#: ../../mod/directory.php:374
+msgid "Local Directory"
+msgstr "Annuaire local"
+
+#: ../../mod/directory.php:380
+msgid "Finding:"
+msgstr "Recherche&nbsp;:"
+
+#: ../../mod/directory.php:385
+msgid "next page"
+msgstr "page suivante"
+
+#: ../../mod/directory.php:385
+msgid "previous page"
+msgstr "page précédente"
+
+#: ../../mod/directory.php:386
+msgid "Sort options"
+msgstr "Options de tri"
+
+#: ../../mod/directory.php:387
+msgid "Alphabetic"
+msgstr "Alphabétique"
+
+#: ../../mod/directory.php:388
+msgid "Reverse Alphabetic"
+msgstr "Alphabétique inversé"
+
+#: ../../mod/directory.php:389
+msgid "Newest to Oldest"
+msgstr "Ordre anté-chronologique"
+
+#: ../../mod/directory.php:390
+msgid "Oldest to Newest"
+msgstr "Ordre chronologique"
+
+#: ../../mod/directory.php:407
+msgid "No entries (some entries may be hidden)."
+msgstr "Pas d'entrées (certaines peuvent être cachées)."
#: ../../mod/pubsites.php:16
msgid "Public Sites"
@@ -4599,32 +6140,269 @@ msgstr "Sites publics"
#: ../../mod/pubsites.php:19
msgid ""
-"The listed sites allow public registration into the Hubzilla. All sites in"
-" the matrix are interlinked so membership on any of them conveys membership "
-"in the matrix as a whole. Some sites may require subscription or provide "
-"tiered service plans. The provider links <strong>may</strong> provide "
-"additional details."
-msgstr "Les sites listés autorisent l'inscription pour tous. Tous sont liés entre eux, de manière à ce qu'un compte sur un seul d'entre eux soit valable sur l'ensemble de la matrice. Certains sites peuvent demander des frais de souscriptions, ou fournir des forfaits ajustés. Le lien \"fournisseur\" <strong>peut</strong> vous donner des détails supplémentaires."
+"The listed sites allow public registration for the $Projectname network. All"
+" sites in the network are interlinked so membership on any of them conveys "
+"membership in the network as a whole. Some sites may require subscription or"
+" provide tiered service plans. The provider links <strong>may</strong> "
+"provide additional details."
+msgstr "Les sites listés autorisent l'inscription publique au réseau $Projectname. Tous les sites du réseau sont interconnectés, l'inscription sur l'un quelconque d'entre eux signifie donc l'inscription sur le réseau dans son ensemble. Certains sites peuvent nécessiter une souscription ou fournir des niveaux de service différenciés. Le lien du fournisseur <strong>peut</strong> fournir plus de détails."
#: ../../mod/pubsites.php:25
+msgid "Rate this hub"
+msgstr "Noter cette instance"
+
+#: ../../mod/pubsites.php:26
msgid "Site URL"
msgstr "URL du site"
-#: ../../mod/pubsites.php:25
+#: ../../mod/pubsites.php:26
msgid "Access Type"
msgstr "Type d'accès"
-#: ../../mod/pubsites.php:25
+#: ../../mod/pubsites.php:26
msgid "Registration Policy"
msgstr "Politique d'inscription"
-#: ../../mod/channel.php:25 ../../mod/chat.php:19
-msgid "You must be logged in to see this page."
-msgstr "Vous devez vous connecter pour voir cette page."
+#: ../../mod/pubsites.php:26
+msgid "Project"
+msgstr "Projet"
-#: ../../mod/channel.php:86
-msgid "Insufficient permissions. Request redirected to profile page."
-msgstr "Permissions insuffisantes. Demande redirigée à la page du profil."
+#: ../../mod/pubsites.php:26
+msgid "View hub ratings"
+msgstr "Voir les notes de cette instance"
+
+#: ../../mod/pubsites.php:30
+msgid "Rate"
+msgstr "Noter"
+
+#: ../../mod/pubsites.php:31
+msgid "View ratings"
+msgstr "Voir les notes"
+
+#: ../../mod/dirsearch.php:21 ../../mod/regdir.php:45
+msgid "This site is not a directory server"
+msgstr "Ce site n'est pas un serveur d'annuaire"
+
+#: ../../mod/dirsearch.php:29
+msgid "This directory server requires an access token"
+msgstr "Ce serveur d'annuaire requiert un jeton d'accès"
+
+#: ../../mod/editblock.php:78 ../../mod/editblock.php:94
+#: ../../mod/editlayout.php:76 ../../mod/editpost.php:20
+#: ../../mod/editwebpage.php:77
+msgid "Item not found"
+msgstr "Élément introuvable"
+
+#: ../../mod/editblock.php:117
+msgid "Delete block?"
+msgstr "Supprimer le bloc?"
+
+#: ../../mod/editblock.php:144 ../../mod/editlayout.php:142
+#: ../../mod/editpost.php:115 ../../mod/editwebpage.php:187
+msgid "Insert YouTube video"
+msgstr "Insérer une vidéo YouTube"
+
+#: ../../mod/editblock.php:145 ../../mod/editlayout.php:143
+#: ../../mod/editpost.php:116 ../../mod/editwebpage.php:188
+msgid "Insert Vorbis [.ogg] video"
+msgstr "Insérer une vidéo Vorbis [.ogg]"
+
+#: ../../mod/editblock.php:146 ../../mod/editlayout.php:144
+#: ../../mod/editpost.php:117 ../../mod/editwebpage.php:189
+msgid "Insert Vorbis [.ogg] audio"
+msgstr "Insérer un son Vorbis [.ogg]"
+
+#: ../../mod/editblock.php:179
+msgid "Edit Block"
+msgstr "Éditer bloc"
+
+#: ../../mod/editlayout.php:111
+msgid "Delete layout?"
+msgstr "Supprimer la mise-en-page?"
+
+#: ../../mod/editlayout.php:158 ../../mod/layouts.php:124
+msgid "Layout Description (Optional)"
+msgstr "Description de la mise en page (facultatif)"
+
+#: ../../mod/editlayout.php:160 ../../mod/layouts.php:121
+#: ../../mod/layouts.php:179
+msgid "Layout Name"
+msgstr "Nom de la mise-en-page"
+
+#: ../../mod/editlayout.php:177
+msgid "Edit Layout"
+msgstr "Éditer mise-en-page"
+
+#: ../../mod/editpost.php:31
+msgid "Item is not editable"
+msgstr "Élément non-éditable"
+
+#: ../../mod/editpost.php:48
+msgid "Delete item?"
+msgstr "Supprimer l'élément?"
+
+#: ../../mod/editpost.php:158 ../../mod/rpost.php:131
+msgid "Edit post"
+msgstr "Éditer la contribution"
+
+#: ../../mod/oexchange.php:23
+msgid "Unable to find your hub."
+msgstr "Impossible de trouver votre hub."
+
+#: ../../mod/oexchange.php:37
+msgid "Post successful."
+msgstr "Contribution effectuée."
+
+#: ../../mod/editwebpage.php:152
+msgid "Delete webpage?"
+msgstr "Supprimer la page web?"
+
+#: ../../mod/editwebpage.php:173
+msgid "Page link title"
+msgstr "Titre du lien vers la page"
+
+#: ../../mod/editwebpage.php:224
+msgid "Edit Webpage"
+msgstr "Éditer page web"
+
+#: ../../mod/rate.php:157
+msgid "Website:"
+msgstr "Site web&nbsp;:"
+
+#: ../../mod/rate.php:160
+#, php-format
+msgid "Remote Channel [%s] (not yet known on this site)"
+msgstr "Canal distant [%s] (encore inconnu sur ce site)"
+
+#: ../../mod/rate.php:161
+msgid "Rating (this information is public)"
+msgstr "Evaluation (cette information est publique)"
+
+#: ../../mod/rate.php:162
+msgid "Optionally explain your rating (this information is public)"
+msgstr "Explication facultative de votre évaluation (cette information est publique)"
+
+#: ../../mod/events.php:21
+msgid "Calendar entries imported."
+msgstr "Entrées du calendrier importées."
+
+#: ../../mod/events.php:23
+msgid "No calendar entries found."
+msgstr "Aucune entrée du calendrier trouvée."
+
+#: ../../mod/events.php:101
+msgid "Event can not end before it has started."
+msgstr "La fin de l'événement ne peut être antérieure à son début."
+
+#: ../../mod/events.php:103 ../../mod/events.php:112 ../../mod/events.php:130
+msgid "Unable to generate preview."
+msgstr "Impossible de générer l'aperçu."
+
+#: ../../mod/events.php:110
+msgid "Event title and start time are required."
+msgstr "Un titre et une date de début sont requises pour l'événement."
+
+#: ../../mod/events.php:128
+msgid "Event not found."
+msgstr "Événement introuvable."
+
+#: ../../mod/events.php:426
+msgid "l, F j"
+msgstr "l j F"
+
+#: ../../mod/events.php:448
+msgid "Edit event"
+msgstr "Éditer l'événement"
+
+#: ../../mod/events.php:449
+msgid "Delete event"
+msgstr "Supprimer l'évènement"
+
+#: ../../mod/events.php:483
+msgid "calendar"
+msgstr "calendrier"
+
+#: ../../mod/events.php:504
+msgid "Create New Event"
+msgstr "Créer événement"
+
+#: ../../mod/events.php:507
+msgid "Export"
+msgstr "Exports"
+
+#: ../../mod/events.php:510
+msgid "Import"
+msgstr "Importer"
+
+#: ../../mod/events.php:541
+msgid "Event removed"
+msgstr "Événement supprimé"
+
+#: ../../mod/events.php:544
+msgid "Failed to remove event"
+msgstr "Impossible de supprimer l'événement"
+
+#: ../../mod/events.php:664
+msgid "Event details"
+msgstr "Détails de l'événement"
+
+#: ../../mod/events.php:665
+msgid "Starting date and Title are required."
+msgstr "Une date de début et un Titre sont requis."
+
+#: ../../mod/events.php:667
+msgid "Categories (comma-separated list)"
+msgstr "Catégories (séparées par des virgules)"
+
+#: ../../mod/events.php:669
+msgid "Event Starts:"
+msgstr "L'événement débute&nbsp;:"
+
+#: ../../mod/events.php:676
+msgid "Finish date/time is not known or not relevant"
+msgstr "Date/heure de fin inconnue ou sans objet"
+
+#: ../../mod/events.php:678
+msgid "Event Finishes:"
+msgstr "L'événement termine&nbsp;:"
+
+#: ../../mod/events.php:680 ../../mod/events.php:681
+msgid "Adjust for viewer timezone"
+msgstr "Ajuster au fuseau horaire du visiteur"
+
+#: ../../mod/events.php:680
+msgid ""
+"Important for events that happen in a particular place. Not practical for "
+"global holidays."
+msgstr "Important pour les événements se tenant en un lieu particulier. Pas pratique pour les vacances communes à de nombreux pays dans le monde."
+
+#: ../../mod/events.php:686
+msgid "Title:"
+msgstr "Titre:"
+
+#: ../../mod/events.php:688
+msgid "Share this event"
+msgstr "Partager cet événement"
+
+#: ../../mod/ratings.php:69
+msgid "No ratings"
+msgstr "Pas de note"
+
+#: ../../mod/ratings.php:99
+msgid "Ratings"
+msgstr "Evaluations"
+
+#: ../../mod/ratings.php:100
+msgid "Rating: "
+msgstr "Evaluation&nbsp:"
+
+#: ../../mod/ratings.php:101
+msgid "Website: "
+msgstr "Site web&nbsp;:"
+
+#: ../../mod/ratings.php:103
+msgid "Description: "
+msgstr "Description&nbsp;:"
#: ../../mod/rbmark.php:88
msgid "Select a bookmark folder"
@@ -4638,145 +6416,249 @@ msgstr "Sauver le favoris"
msgid "URL of bookmark"
msgstr "URL du favoris"
-#: ../../mod/rbmark.php:95 ../../mod/appman.php:93
-msgid "Description"
-msgstr "Description"
-
#: ../../mod/rbmark.php:99
msgid "Or enter new bookmark folder name"
msgstr "Ou entrez le nom d'un nouveau dossier"
-#: ../../mod/chat.php:167
-msgid "Room not found"
-msgstr "Salon introuvable"
+#: ../../mod/filer.php:49
+msgid "- select -"
+msgstr "- choisir -"
-#: ../../mod/chat.php:178
-msgid "Leave Room"
-msgstr "Quitter le salon"
+#: ../../mod/filestorage.php:82
+msgid "Permission Denied."
+msgstr "Permission refusée."
-#: ../../mod/chat.php:179
-msgid "Delete This Room"
-msgstr "Supprimer le salon"
+#: ../../mod/filestorage.php:98
+msgid "File not found."
+msgstr "Fichier introuvable."
-#: ../../mod/chat.php:180
-msgid "I am away right now"
-msgstr "Je suis momentanément absent"
+#: ../../mod/filestorage.php:141
+msgid "Edit file permissions"
+msgstr "Éditer les permissions du fichier"
-#: ../../mod/chat.php:181
-msgid "I am online"
-msgstr "Je suis en ligne"
+#: ../../mod/filestorage.php:150
+msgid "Set/edit permissions"
+msgstr "Définir/Édition des authorisations"
-#: ../../mod/chat.php:183
-msgid "Bookmark this room"
-msgstr "Marquer ce salon"
+#: ../../mod/filestorage.php:151
+msgid "Include all files and sub folders"
+msgstr "Inclure tous fichiers et sous-répertoires"
-#: ../../mod/chat.php:207 ../../mod/chat.php:229
-msgid "New Chatroom"
-msgstr "Nouveau salon"
+#: ../../mod/filestorage.php:152
+msgid "Return to file list"
+msgstr "Retourner à la liste des fichiers"
-#: ../../mod/chat.php:208
-msgid "Chatroom Name"
-msgstr "Nom du salon"
+#: ../../mod/filestorage.php:154
+msgid "Copy/paste this code to attach file to a post"
+msgstr "Copiez/collez ce code pour joindre le fichier à une publication"
-#: ../../mod/chat.php:225
-#, php-format
-msgid "%1$s's Chatrooms"
-msgstr "Salons de %1$s"
+#: ../../mod/filestorage.php:155
+msgid "Copy/paste this URL to link file from a web page"
+msgstr "Copiez/collez cette URL pour lier le fichier depuis une page web"
+
+#: ../../mod/filestorage.php:157
+msgid "Share this file"
+msgstr "Partager ce fichier"
+
+#: ../../mod/filestorage.php:158
+msgid "Show URL to this file"
+msgstr "Montrer l'URL de ce fichier"
-#: ../../mod/register.php:43
+#: ../../mod/filestorage.php:159
+msgid "Notify your contacts about this file"
+msgstr "Notifier vos contacts à propos de ce fichier"
+
+#: ../../mod/follow.php:25
+msgid "Channel added."
+msgstr "Canal ajouté."
+
+#: ../../mod/register.php:44
msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
msgstr "Nombre d'inscriptions quotidiennes dépassé. Merci de recommencer demain."
-#: ../../mod/register.php:49
+#: ../../mod/register.php:50
msgid ""
"Please indicate acceptance of the Terms of Service. Registration failed."
msgstr "Merci d'indiquer votre adhésion aux Règles du Service. L'inscription a échoué."
-#: ../../mod/register.php:83
+#: ../../mod/register.php:84
msgid "Passwords do not match."
msgstr "Les mots de passe ne concordent pas."
-#: ../../mod/register.php:116
+#: ../../mod/register.php:117
msgid ""
"Registration successful. Please check your email for validation "
"instructions."
msgstr "Inscription réussie. Merci de vérifier vos courriels pour valider votre compte."
-#: ../../mod/register.php:122
+#: ../../mod/register.php:123
msgid "Your registration is pending approval by the site owner."
msgstr "Votre inscription est en attente de l'approbation d'un administrateur."
-#: ../../mod/register.php:125
+#: ../../mod/register.php:126
msgid "Your registration can not be processed."
msgstr "Votre inscription ne peut être traîtée."
-#: ../../mod/register.php:162
+#: ../../mod/register.php:163
msgid "Registration on this site/hub is by approval only."
msgstr "L'inscription sur cette instance/ce site est soumis à une modération."
-#: ../../mod/register.php:163
+#: ../../mod/register.php:164
msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
msgstr "<a href=\"pubsites\">S'inscrire sur un site/hub affilié</a>"
-#: ../../mod/register.php:171
+#: ../../mod/register.php:174
msgid ""
"This site has exceeded the number of allowed daily account registrations. "
"Please try again tomorrow."
msgstr "Ce site a dépassé le nombre de création de compte autorisé par jour. Merci de recommencer demain."
-#: ../../mod/register.php:182
+#: ../../mod/register.php:185
msgid "Terms of Service"
msgstr "Règles du Service"
-#: ../../mod/register.php:188
+#: ../../mod/register.php:191
#, php-format
msgid "I accept the %s for this website"
msgstr "J'accepte %s de ce site"
-#: ../../mod/register.php:190
+#: ../../mod/register.php:193
#, php-format
msgid "I am over 13 years of age and accept the %s for this website"
msgstr "J'ai plus de 13 ans et j'accepte les %s de ce site"
-#: ../../mod/register.php:204 ../../mod/admin.php:452
-msgid "Registration"
-msgstr "Inscription"
-
-#: ../../mod/register.php:209
+#: ../../mod/register.php:212
msgid "Membership on this site is by invitation only."
msgstr "L'inscription à ce site se fait uniquement sur invitation."
-#: ../../mod/register.php:210
+#: ../../mod/register.php:213
msgid "Please enter your invitation code"
msgstr "Merci de saisir votre code d'invitation"
-#: ../../mod/register.php:213
+#: ../../mod/register.php:216
msgid "Your email address"
msgstr "Votre adresse de courriel"
-#: ../../mod/register.php:214
+#: ../../mod/register.php:217
msgid "Choose a password"
msgstr "Choisissez un mot de passe"
-#: ../../mod/register.php:215
+#: ../../mod/register.php:218
msgid "Please re-enter your password"
msgstr "Confirmez-le"
-#: ../../mod/chatsvc.php:111
-msgid "Away"
-msgstr "Absent"
+#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
+msgid "Contact not found."
+msgstr "Contact introuvable."
-#: ../../mod/chatsvc.php:115
-msgid "Online"
-msgstr "En ligne"
+#: ../../mod/fsuggest.php:63
+msgid "Friend suggestion sent."
+msgstr "Suggestion d'amitié/relation envoyée."
+
+#: ../../mod/fsuggest.php:97
+msgid "Suggest Friends"
+msgstr "Suggérer une relation"
+
+#: ../../mod/fsuggest.php:99
+#, php-format
+msgid "Suggest a friend for %s"
+msgstr "Suggérer une relation à %s"
-#: ../../mod/regmod.php:12
+#: ../../mod/regmod.php:11
msgid "Please login."
msgstr "Merci de vous connecter."
-#: ../../mod/cloud.php:126
-msgid "Hubzilla - Guests: Username: {your email address}, Password: +++"
-msgstr "Matrice Rouge - Pour les invités: Nom d'utilisateur = {votre courriel}, Mot de passe = +++"
+#: ../../mod/group.php:20
+msgid "Collection created."
+msgstr "Collection créée."
+
+#: ../../mod/group.php:26
+msgid "Could not create collection."
+msgstr "Impossible de créer la collection."
+
+#: ../../mod/group.php:54
+msgid "Collection updated."
+msgstr "Collection mise-à-jour."
+
+#: ../../mod/group.php:86
+msgid "Create a collection of channels."
+msgstr "Créez une collection de canaux."
+
+#: ../../mod/group.php:87 ../../mod/group.php:183
+msgid "Collection Name: "
+msgstr "Nom de la collection&nbsp;:"
+
+#: ../../mod/group.php:89 ../../mod/group.php:186
+msgid "Members are visible to other channels"
+msgstr "Les membres sont visibles par les autres canaux"
+
+#: ../../mod/group.php:107
+msgid "Collection removed."
+msgstr "Collection supprimée."
+
+#: ../../mod/group.php:109
+msgid "Unable to remove collection."
+msgstr "Impossible de supprimer la collection."
+
+#: ../../mod/group.php:182
+msgid "Collection Editor"
+msgstr "Éditeur de collection"
+
+#: ../../mod/removeaccount.php:30
+msgid ""
+"Account removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Il est impossible de supprimer un compte à l'intérieur de 48 heures après avoir changé le mot de passe d'un compte."
+
+#: ../../mod/removeaccount.php:57
+msgid "Remove This Account"
+msgstr "Supprimer ce Compte"
+
+#: ../../mod/removeaccount.php:58 ../../mod/removeme.php:58
+msgid "WARNING: "
+msgstr "ATTENTION&nbsp;:"
+
+#: ../../mod/removeaccount.php:58
+msgid ""
+"This account and all its channels will be completely removed from the "
+"network. "
+msgstr "Ce compte et tous ses canaux seront entièrement supprimés du réseau."
+
+#: ../../mod/removeaccount.php:58 ../../mod/removeme.php:58
+msgid "This action is permanent and can not be undone!"
+msgstr "Cette action est permanente et irréversible&nbsp;!"
+
+#: ../../mod/removeaccount.php:59 ../../mod/removeme.php:59
+msgid "Please enter your password for verification:"
+msgstr "Merci de re-saisir votre mot de passe pour vérification&nbsp;:"
+
+#: ../../mod/removeaccount.php:60
+msgid ""
+"Remove this account, all its channels and all its channel clones from the "
+"network"
+msgstr "Supprimer ce compte, tous ses canaux et tous les clones sur la matrice."
+
+#: ../../mod/removeaccount.php:60
+msgid ""
+"By default only the instances of the channels located on this hub will be "
+"removed from the network"
+msgstr "Par défault, seuls les instances de canaux situés sur ce hub seront supprimer de la matrice."
+
+#: ../../mod/removeaccount.php:61 ../../mod/settings.php:720
+msgid "Remove Account"
+msgstr "Supprimer le compte"
+
+#: ../../mod/help.php:49 ../../mod/help.php:55 ../../mod/help.php:61
+msgid "Help:"
+msgstr "Aide&nbsp;:"
+
+#: ../../mod/help.php:76 ../../index.php:242
+msgid "Not Found"
+msgstr "Introuvable"
+
+#: ../../mod/help.php:100
+msgid "$Projectname Documentation"
+msgstr "Documentation $Projectname"
#: ../../mod/removeme.php:29
msgid ""
@@ -4789,14 +6671,8 @@ msgid "Remove This Channel"
msgstr "Supprimer ce Canal"
#: ../../mod/removeme.php:58
-msgid ""
-"This will completely remove this channel from the network. Once this has "
-"been done it is not recoverable."
-msgstr "Ceci effacera complètement le canal du réseau. Une fois effacé, un canal ne PEUT PAS être récupéré."
-
-#: ../../mod/removeme.php:59 ../../mod/removeaccount.php:59
-msgid "Please enter your password for verification:"
-msgstr "Merci de re-saisir votre mot de passe pour vérification&nbsp;:"
+msgid "This channel will be completely removed from the network. "
+msgstr "Ce canal sera complètement supprimé du réseau."
#: ../../mod/removeme.php:60
msgid "Remove this channel and all its clones from the network"
@@ -4808,1265 +6684,1499 @@ msgid ""
"removed from the network"
msgstr "Par défaut, seule l'instance du canal présente sur ce hub sera supprimée du réseau"
-#: ../../mod/removeme.php:61
+#: ../../mod/removeme.php:61 ../../mod/settings.php:1137
msgid "Remove Channel"
msgstr "Enlever le canal"
-#: ../../mod/common.php:10
-msgid "No channel."
-msgstr "Pas de canal."
-
-#: ../../mod/common.php:39
-msgid "Common connections"
-msgstr "Relations communes"
+#: ../../mod/home.php:58 ../../mod/home.php:66 ../../mod/siteinfo.php:155
+msgid "$Projectname"
+msgstr "$Projectname"
-#: ../../mod/common.php:44
-msgid "No connections in common."
-msgstr "Pas de relation en commun."
+#: ../../mod/home.php:75
+#, php-format
+msgid "Welcome to %s"
+msgstr "Bienvenue sur %s"
-#: ../../mod/rmagic.php:38
+#: ../../mod/rmagic.php:40
msgid ""
"We encountered a problem while logging in with the OpenID you provided. "
"Please check the correct spelling of the ID."
msgstr "Nous avons rencontré un problème avec l'OpenID que vous nous avez fourni. Merci de vérifier que l'ID est bien saisi."
-#: ../../mod/rmagic.php:38
+#: ../../mod/rmagic.php:40
msgid "The error message was:"
msgstr "Le message d'erreur était&nbsp;:"
-#: ../../mod/rmagic.php:42
+#: ../../mod/rmagic.php:44
msgid "Authentication failed."
msgstr "Échec de l'authentification."
-#: ../../mod/rmagic.php:82
+#: ../../mod/rmagic.php:84
msgid "Remote Authentication"
msgstr "Authentification distante"
-#: ../../mod/rmagic.php:83
+#: ../../mod/rmagic.php:85
msgid "Enter your channel address (e.g. channel@example.com)"
msgstr "Entrez l'adresse de votre canal (p.ex. moncanal@monsite.com)"
-#: ../../mod/rmagic.php:84
+#: ../../mod/rmagic.php:86
msgid "Authenticate"
msgstr "Authentifier"
-#: ../../mod/connect.php:55 ../../mod/connect.php:103
-msgid "Continue"
-msgstr "Continuer"
+#: ../../mod/id.php:11
+msgid "First Name"
+msgstr "Prénom"
-#: ../../mod/connect.php:84
-msgid "Premium Channel Setup"
-msgstr "Configuration du canal VIP"
+#: ../../mod/id.php:12
+msgid "Last Name"
+msgstr "Nom de famille"
-#: ../../mod/connect.php:86
-msgid "Enable premium channel connection restrictions"
-msgstr "Activer les restrictions liées au canal VIP"
+#: ../../mod/id.php:13
+msgid "Nickname"
+msgstr "Surnom"
-#: ../../mod/connect.php:87
+#: ../../mod/id.php:14
+msgid "Full Name"
+msgstr "Nom complet"
+
+#: ../../mod/id.php:20
+msgid "Profile Photo 16px"
+msgstr "Photo de profil 16px"
+
+#: ../../mod/id.php:21
+msgid "Profile Photo 32px"
+msgstr "Photo de profil 32px"
+
+#: ../../mod/id.php:22
+msgid "Profile Photo 48px"
+msgstr "Photo de profil 48px"
+
+#: ../../mod/id.php:23
+msgid "Profile Photo 64px"
+msgstr "Photo de profil 64px"
+
+#: ../../mod/id.php:24
+msgid "Profile Photo 80px"
+msgstr "Photo de profil 80px"
+
+#: ../../mod/id.php:25
+msgid "Profile Photo 128px"
+msgstr "Photo de profil 128px"
+
+#: ../../mod/id.php:26
+msgid "Timezone"
+msgstr "Fuseau horaire"
+
+#: ../../mod/id.php:27
+msgid "Homepage URL"
+msgstr "URL de mon site Internet&nbsp;:"
+
+#: ../../mod/id.php:29
+msgid "Birth Year"
+msgstr "Année de naissance"
+
+#: ../../mod/id.php:30
+msgid "Birth Month"
+msgstr "Mois de naissance"
+
+#: ../../mod/id.php:31
+msgid "Birth Day"
+msgstr "Jour de naissance"
+
+#: ../../mod/id.php:32
+msgid "Birthdate"
+msgstr "Date de naissance"
+
+#: ../../mod/impel.php:191
+#, php-format
+msgid "%s element installed"
+msgstr "Elément %s installé"
+
+#: ../../mod/impel.php:194
+#, php-format
+msgid "%s element installation failed"
+msgstr "L'installation de l'élément %s a échoué"
+
+#: ../../mod/search.php:206
+#, php-format
+msgid "Items tagged with: %s"
+msgstr "Eléments étiquetés avec&nbsp;: %s"
+
+#: ../../mod/search.php:208
+#, php-format
+msgid "Search results for: %s"
+msgstr "Résultats de recherche pour&nbsp;: %s"
+
+#: ../../mod/import.php:25
+#, php-format
+msgid "Your service plan only allows %d channels."
+msgstr "Votre forfait n'autorise que %d canaux."
+
+#: ../../mod/import.php:60
+msgid "Nothing to import."
+msgstr "Rien à importer."
+
+#: ../../mod/import.php:84
+msgid "Unable to download data from old server"
+msgstr "Impossible de récupérer les données de l'ancien serveur"
+
+#: ../../mod/import.php:90
+msgid "Imported file is empty."
+msgstr "Le fichier importé est vide."
+
+#: ../../mod/import.php:110
+msgid "The data provided is not compatible with this project."
+msgstr ""
+
+#: ../../mod/import.php:115
+#, php-format
+msgid "Warning: Database versions differ by %1$d updates."
+msgstr "Attention&nbsp;: les versions de bases de données diffèrent de %1$d mises à jour."
+
+#: ../../mod/import.php:135
msgid ""
-"Please enter your restrictions or conditions, such as paypal receipt, usage "
-"guidelines, etc."
-msgstr "Merci de saisir les restrictions et/ou conditions - reçu Paypal, transaction Bitcoin, ligne de conduite, ..."
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "Impossible de créer un doublon d'un identifiant de canal. L'import a échoué."
+
+#: ../../mod/import.php:176
+msgid "Channel clone failed. Import failed."
+msgstr "Le clonage du canal a échoué. L'import a échoué."
+
+#: ../../mod/import.php:186
+msgid "Cloned channel not found. Import failed."
+msgstr "Le canal cloné n'a pas été trouvé. L'import a échoué."
+
+#: ../../mod/import.php:574
+msgid "You must be logged in to use this feature."
+msgstr "Vous devez vous connecter pour utiliser cette fonctionnalité."
+
+#: ../../mod/import.php:579
+msgid "Import Channel"
+msgstr "Importation de canal"
-#: ../../mod/connect.php:89 ../../mod/connect.php:109
+#: ../../mod/import.php:580
msgid ""
-"This channel may require additional steps or acknowledgement of the "
-"following conditions prior to connecting:"
-msgstr "Avant d'autoriser la mise en relation, ce canal attire votre attention sur les conditions suivantes&nbsp;:"
+"Use this form to import an existing channel from a different server/hub. You"
+" may retrieve the channel identity from the old server/hub via the network "
+"or provide an export file."
+msgstr "Utilisez ce formulaire pour importer un canal existant sur un autre serveur. Vous pouvez récupérer l'identité du canal sur l'ancien serveur directement par le réseau, ou bien fournir un fichier d'export/import."
+
+#: ../../mod/import.php:581
+msgid "File to Upload"
+msgstr "Fichier à envoyer"
-#: ../../mod/connect.php:90
+#: ../../mod/import.php:582
+msgid "Or provide the old server/hub details"
+msgstr "Ou fournissez les détails de l'ancien serveur"
+
+#: ../../mod/import.php:583
+msgid "Your old identity address (xyz@example.com)"
+msgstr "Votre ancienne identité (zyx@exemple.com)"
+
+#: ../../mod/import.php:584
+msgid "Your old login email address"
+msgstr "Votre ancienne adresse de courriel"
+
+#: ../../mod/import.php:585
+msgid "Your old login password"
+msgstr "Votre ancien mot de passe"
+
+#: ../../mod/import.php:586
msgid ""
-"Potential connections will then see the following text before proceeding:"
-msgstr "Les relations potentielles verront ce qui suit avant de pouvoir continuer&nbsp;:"
+"For either option, please choose whether to make this hub your new primary "
+"address, or whether your old location should continue this role. You will be"
+" able to post from either location, but only one can be marked as the "
+"primary location for files, photos, and media."
+msgstr "Quelle que soit l'option choisie, merci de décider si cette nouvelle adresse sera la primaire, ou si votre ancienne adresse continuera à jouer ce rôle. Vous pourrez publier depuis l'adresse de votre choix, mais une seule peut être déclarée comme stockage primaire de vos fichiers/photos/media."
-#: ../../mod/connect.php:91 ../../mod/connect.php:112
+#: ../../mod/import.php:587
+msgid "Make this hub my primary location"
+msgstr "Faire de ce hub l'adresse principale de ce canal"
+
+#: ../../mod/import.php:588
msgid ""
-"By continuing, I certify that I have complied with any instructions provided"
-" on this page."
-msgstr "En continuant, je certifie que je me suis acquitté de toutes les instructions indiquées"
+"Import existing posts if possible (experimental - limited by available "
+"memory"
+msgstr "Importer les publications existantes si possible (expérimental - limité par la mémoire disponible)"
-#: ../../mod/connect.php:100
-msgid "(No specific instructions have been provided by the channel owner.)"
-msgstr "(Aucune instruction spécifique n'a été établie par le propriétaire du canal.)"
+#: ../../mod/import.php:589
+msgid ""
+"This process may take several minutes to complete. Please submit the form "
+"only once and leave this page open until finished."
+msgstr "Ce processus peut prendre plusieurs minutes. Merci de ne valider le formulaire qu'une seule fois et de laisser cette page ouverte jusqu'à la fin."
-#: ../../mod/connect.php:108
-msgid "Restricted or Premium Channel"
-msgstr "Canal VIP ou restreint"
+#: ../../mod/service_limits.php:19
+msgid "No service class restrictions found."
+msgstr "Aucune restriction de classe de service trouvée."
-#: ../../mod/network.php:79
-msgid "No such group"
-msgstr "Groupe introuvable"
+#: ../../mod/invite.php:25
+msgid "Total invitation limit exceeded."
+msgstr "Limite du nombre total d'invitation dépassée."
-#: ../../mod/network.php:118
-msgid "Search Results For:"
-msgstr "Résultats de recherche pour&nbsp;:"
+#: ../../mod/invite.php:49
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s&nbsp: adresse courriel invalide."
-#: ../../mod/network.php:172
-msgid "Collection is empty"
-msgstr "Collection vide"
+#: ../../mod/invite.php:76
+msgid "Please join us on Red"
+msgstr "Rejoignez-nous sur la Matrice Rouge"
-#: ../../mod/network.php:180
-msgid "Collection: "
-msgstr "Collection&nbsp;:"
+#: ../../mod/invite.php:87
+msgid "Invitation limit exceeded. Please contact your site administrator."
+msgstr "Limite d'invitations dépassée. Merci de contacter l'administration de votre site."
-#: ../../mod/network.php:193
-msgid "Connection: "
-msgstr "Relation&nbsp;:"
+#: ../../mod/invite.php:92
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s&nbsp;: Échec dans la livraison du message."
-#: ../../mod/network.php:196
-msgid "Invalid connection."
-msgstr "Relation invalide."
+#: ../../mod/invite.php:96
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d message envoyé."
+msgstr[1] "%d messages envoyés."
-#: ../../mod/connections.php:37 ../../mod/connedit.php:64
-msgid "Could not access contact record."
-msgstr "Impossible d'accéder aux détails du contact."
+#: ../../mod/invite.php:115
+msgid "You have no more invitations available"
+msgstr "Vous ne disposez plus d'aucune invitation"
-#: ../../mod/connections.php:51 ../../mod/connedit.php:78
-msgid "Could not locate selected profile."
-msgstr "Impossible de localiser le profil sélectionné."
+#: ../../mod/invite.php:129
+msgid "Send invitations"
+msgstr "Envoyer des invitations"
-#: ../../mod/connections.php:94 ../../mod/connedit.php:132
-msgid "Connection updated."
-msgstr "Connexion mise à jour."
+#: ../../mod/invite.php:130
+msgid "Enter email addresses, one per line:"
+msgstr "Entrez les adresses de courriel, une par ligne&nbsp;:"
-#: ../../mod/connections.php:96 ../../mod/connedit.php:134
-msgid "Failed to update connection record."
-msgstr "Impossible de mettre à jour les détails de la relation."
+#: ../../mod/invite.php:132
+msgid "Please join my community on $Projectname."
+msgstr "Rejoignez ma communauté sur $Projectname."
-#: ../../mod/connections.php:191 ../../mod/connections.php:292
-msgid "Blocked"
-msgstr "Bloqué"
+#: ../../mod/invite.php:134
+msgid "You will need to supply this invitation code: "
+msgstr "Vous aurez besoin de fournir le code suivant:"
-#: ../../mod/connections.php:196 ../../mod/connections.php:299
-msgid "Ignored"
-msgstr "Ignoré"
+#: ../../mod/invite.php:135
+msgid ""
+"1. Register at any $Projectname location (they are all inter-connected)"
+msgstr "1. Enregistrez-vous sur n'importe quel serveur $Projectname (ils sont tous inter-connectés)"
-#: ../../mod/connections.php:201 ../../mod/connections.php:313
-msgid "Hidden"
-msgstr "Caché"
+#: ../../mod/invite.php:137
+msgid "2. Enter my $Projectname network address into the site searchbar."
+msgstr "2. Saisissez l'adresse de mon canal $Projectname dans la barre de recherche du site."
-#: ../../mod/connections.php:206 ../../mod/connections.php:306
-msgid "Archived"
-msgstr "Archivé"
+#: ../../mod/invite.php:138
+msgid "or visit "
+msgstr "ou visitez"
-#: ../../mod/connections.php:230 ../../mod/connections.php:245
-msgid "All"
-msgstr "Tout"
+#: ../../mod/invite.php:140
+msgid "3. Click [Connect]"
+msgstr "3. Click sur [Ajouter]"
-#: ../../mod/connections.php:270
-msgid "Suggest new connections"
-msgstr "Suggérer de nouvelles relations"
+#: ../../mod/settings.php:76
+msgid "Name is required"
+msgstr "Le nom est requis"
-#: ../../mod/connections.php:273
-msgid "New Connections"
-msgstr "Nouvelles relations"
+#: ../../mod/settings.php:80
+msgid "Key and Secret are required"
+msgstr "Clef et secret sont requis"
-#: ../../mod/connections.php:276
-msgid "Show pending (new) connections"
-msgstr "Voir les (nouvelles) relations en attente"
+#: ../../mod/settings.php:130
+msgid "Diaspora Policy Settings updated."
+msgstr ""
-#: ../../mod/connections.php:282
-msgid "Show all connections"
-msgstr "Voir toutes les relations"
+#: ../../mod/settings.php:238
+msgid "Passwords do not match. Password unchanged."
+msgstr "Les deux saisies du mot de passe ne correspondent pas. Il n'a donc pas été changé."
-#: ../../mod/connections.php:285
-msgid "Unblocked"
-msgstr "Non bloquées"
+#: ../../mod/settings.php:242
+msgid "Empty passwords are not allowed. Password unchanged."
+msgstr "Le mot de passe ne peut pas être vide. Il n'a donc pas été changé."
-#: ../../mod/connections.php:288
-msgid "Only show unblocked connections"
-msgstr "Ne montrer que les relations non-bloquées"
+#: ../../mod/settings.php:256
+msgid "Password changed."
+msgstr "Le mot de passe a été changé."
-#: ../../mod/connections.php:295
-msgid "Only show blocked connections"
-msgstr "Ne montrer que les relations bloquées"
+#: ../../mod/settings.php:258
+msgid "Password update failed. Please try again."
+msgstr "La mise-à-jour du mot de passe a échoué. Merci de recommencer."
-#: ../../mod/connections.php:302
-msgid "Only show ignored connections"
-msgstr "Ne montrer que les relations ignorées"
+#: ../../mod/settings.php:272
+msgid "Not valid email."
+msgstr "Adresse de courriel non-valide."
-#: ../../mod/connections.php:309
-msgid "Only show archived connections"
-msgstr "Ne montrer que les relations archivées"
+#: ../../mod/settings.php:275
+msgid "Protected email address. Cannot change to that email."
+msgstr "Adresse de courriel protégée. Impossible de l'utiliser."
-#: ../../mod/connections.php:316
-msgid "Only show hidden connections"
-msgstr "Ne montrer que les relations cachées"
+#: ../../mod/settings.php:284
+msgid "System failure storing new email. Please try again."
+msgstr "Défaillance système lors du stockage de la nouvelle adresse de courriel. Merci de ré-essayer."
-#: ../../mod/connections.php:368
-#, php-format
-msgid "%1$s [%2$s]"
-msgstr "%1$s [%2$s]"
+#: ../../mod/settings.php:523
+msgid "Settings updated."
+msgstr "Réglages sauvegardés."
-#: ../../mod/connections.php:369
-msgid "Edit contact"
-msgstr "Éditer contact"
+#: ../../mod/settings.php:587 ../../mod/settings.php:613
+#: ../../mod/settings.php:649
+msgid "Add application"
+msgstr "Ajouter une application"
-#: ../../mod/connections.php:390
-msgid "Search your connections"
-msgstr "Chercher parmi vos relations"
+#: ../../mod/settings.php:590
+msgid "Name of application"
+msgstr "Nom de l'application"
-#: ../../mod/connections.php:391
-msgid "Finding: "
-msgstr "Recherche&nbsp;:"
+#: ../../mod/settings.php:591 ../../mod/settings.php:617
+msgid "Consumer Key"
+msgstr "Clef de consommateur"
-#: ../../mod/rpost.php:97 ../../mod/editpost.php:42
-msgid "Edit post"
-msgstr "Éditer la contribution"
+#: ../../mod/settings.php:591 ../../mod/settings.php:592
+msgid "Automatically generated - change if desired. Max length 20"
+msgstr "Généré automatiquement - à changer si besoin. Longueur maximale 20 caractères."
-#: ../../mod/connedit.php:181
-msgid "is now connected to"
-msgstr "est maintenant connecté avec"
+#: ../../mod/settings.php:592 ../../mod/settings.php:618
+msgid "Consumer Secret"
+msgstr "Secret de consommateur"
-#: ../../mod/connedit.php:274
-msgid "Could not access address book record."
-msgstr "Impossible d'accéder aux détails du carnet d'adresses."
+#: ../../mod/settings.php:593 ../../mod/settings.php:619
+msgid "Redirect"
+msgstr "Redirection"
-#: ../../mod/connedit.php:288
-msgid "Refresh failed - channel is currently unavailable."
-msgstr "Actualisation impossible - le canal est momentanément indisponible."
+#: ../../mod/settings.php:593
+msgid ""
+"Redirect URI - leave blank unless your application specifically requires "
+"this"
+msgstr "URI de redirection - laissez blanc, sauf si l'application a demandé autrement"
-#: ../../mod/connedit.php:295
-msgid "Channel has been unblocked"
-msgstr "Le canal n'est plus bloqué"
+#: ../../mod/settings.php:594 ../../mod/settings.php:620
+msgid "Icon url"
+msgstr "URL de l'icône"
-#: ../../mod/connedit.php:296
-msgid "Channel has been blocked"
-msgstr "Le canal est bloqué"
+#: ../../mod/settings.php:594
+msgid "Optional"
+msgstr "Facultatif"
-#: ../../mod/connedit.php:300 ../../mod/connedit.php:312
-#: ../../mod/connedit.php:324 ../../mod/connedit.php:336
-#: ../../mod/connedit.php:352
-msgid "Unable to set address book parameters."
-msgstr "Impossible de régler les paramètres du carnet d'adresses."
+#: ../../mod/settings.php:605
+msgid "You can't edit this application."
+msgstr "Vous ne pouvez pas éditer cette application."
-#: ../../mod/connedit.php:307
-msgid "Channel has been unignored"
-msgstr "Le canal n'est plus ignoré"
+#: ../../mod/settings.php:648
+msgid "Connected Apps"
+msgstr "Applications connectées"
-#: ../../mod/connedit.php:308
-msgid "Channel has been ignored"
-msgstr "Le canal est ignoré"
+#: ../../mod/settings.php:652
+msgid "Client key starts with"
+msgstr "La clef partagée commence par"
-#: ../../mod/connedit.php:319
-msgid "Channel has been unarchived"
-msgstr "Le canal n'est plus archivé"
+#: ../../mod/settings.php:653
+msgid "No name"
+msgstr "Sans nom"
-#: ../../mod/connedit.php:320
-msgid "Channel has been archived"
-msgstr "Le canal est archivé"
+#: ../../mod/settings.php:654
+msgid "Remove authorization"
+msgstr "Révoquer l'autorisation"
-#: ../../mod/connedit.php:331
-msgid "Channel has been unhidden"
-msgstr "Le canal n'est plus caché"
+#: ../../mod/settings.php:668
+msgid "No feature settings configured"
+msgstr "Pas de fonctionnalité à configurer"
-#: ../../mod/connedit.php:332
-msgid "Channel has been hidden"
-msgstr "Le canal est caché"
+#: ../../mod/settings.php:685
+msgid "Feature/Addon Settings"
+msgstr "Paramètres des extensions/greffons"
-#: ../../mod/connedit.php:347
-msgid "Channel has been approved"
-msgstr "Le canal est approuvé"
+#: ../../mod/settings.php:687
+msgid "Settings for the built-in Diaspora emulator"
+msgstr ""
-#: ../../mod/connedit.php:348
-msgid "Channel has been unapproved"
-msgstr "Le canal n'est plus approuvé"
+#: ../../mod/settings.php:688
+msgid "Allow any Diaspora member to comment on your public posts"
+msgstr ""
-#: ../../mod/connedit.php:376
-msgid "Connection has been removed."
-msgstr "La relation a été supprimée"
+#: ../../mod/settings.php:689
+msgid "Enable the Diaspora protocol for this channel"
+msgstr ""
+
+#: ../../mod/settings.php:690
+msgid "Diaspora Policy Settings"
+msgstr ""
+
+#: ../../mod/settings.php:691
+msgid "Prevent your hashtags from being redirected to other sites"
+msgstr ""
+
+#: ../../mod/settings.php:715
+msgid "Account Settings"
+msgstr "Compte"
-#: ../../mod/connedit.php:396
+#: ../../mod/settings.php:716
+msgid "Enter New Password:"
+msgstr "Nouveau mot de passe&nbsp;:"
+
+#: ../../mod/settings.php:717
+msgid "Confirm New Password:"
+msgstr "Confirmer le nouveau mot de passe&nbsp;:"
+
+#: ../../mod/settings.php:717
+msgid "Leave password fields blank unless changing"
+msgstr "Laissez les mots de passe vides si vous ne voulez pas les modifier"
+
+#: ../../mod/settings.php:719 ../../mod/settings.php:1057
+msgid "Email Address:"
+msgstr "Adresse de courriel&nbsp;:"
+
+#: ../../mod/settings.php:721
+msgid "Remove this account including all its channels"
+msgstr "Supprimer ce compte et tous ses canaux"
+
+#: ../../mod/settings.php:737
+msgid "Off"
+msgstr "Inactif"
+
+#: ../../mod/settings.php:737
+msgid "On"
+msgstr "Actif"
+
+#: ../../mod/settings.php:744
+msgid "Additional Features"
+msgstr "Fonctionnalités additionnelles"
+
+#: ../../mod/settings.php:768
+msgid "Connector Settings"
+msgstr "Connecteurs"
+
+#: ../../mod/settings.php:807
+msgid "No special theme for mobile devices"
+msgstr "Pas de thème spécifique aux périphériques mobiles"
+
+#: ../../mod/settings.php:810
#, php-format
-msgid "View %s's profile"
-msgstr "Voir le profil de %s"
+msgid "%s - (Experimental)"
+msgstr "%s - (Expérimental)"
-#: ../../mod/connedit.php:400
-msgid "Refresh Permissions"
-msgstr "Actualiser les permissions"
+#: ../../mod/settings.php:849
+msgid "Display Settings"
+msgstr "Affichage"
-#: ../../mod/connedit.php:403
-msgid "Fetch updated permissions"
-msgstr "Récupérer les permissions les plus récentes"
+#: ../../mod/settings.php:850
+msgid "Theme Settings"
+msgstr "Paramètres du thème"
-#: ../../mod/connedit.php:407
-msgid "Recent Activity"
-msgstr "Activité récente"
+#: ../../mod/settings.php:851
+msgid "Custom Theme Settings"
+msgstr "Paramètres personnels du thème"
-#: ../../mod/connedit.php:410
-msgid "View recent posts and comments"
-msgstr "Voir les contributions et commentaires récentes"
+#: ../../mod/settings.php:852
+msgid "Content Settings"
+msgstr "Paramètres liés au contenu"
-#: ../../mod/connedit.php:414 ../../mod/connedit.php:557
-#: ../../mod/admin.php:769
-msgid "Unblock"
-msgstr "Débloquer"
+#: ../../mod/settings.php:858
+msgid "Display Theme:"
+msgstr "Thème&nbsp;:"
-#: ../../mod/connedit.php:414 ../../mod/connedit.php:557
-#: ../../mod/admin.php:768
-msgid "Block"
-msgstr "Bloquer"
+#: ../../mod/settings.php:859
+msgid "Mobile Theme:"
+msgstr "Thème mobile&nbsp;:"
-#: ../../mod/connedit.php:417
-msgid "Block or Unblock this connection"
-msgstr "Bloquer ou Débloquer cette relation"
+#: ../../mod/settings.php:860
+msgid "Enable user zoom on mobile devices"
+msgstr "Permettre à l'usager d'un mobile d'agrandir le contenu"
-#: ../../mod/connedit.php:421 ../../mod/connedit.php:558
-msgid "Unignore"
-msgstr "Ne plus ignorer"
+#: ../../mod/settings.php:861
+msgid "Update browser every xx seconds"
+msgstr "Rafraîchir le navigateur toutes les xx secondes"
-#: ../../mod/connedit.php:421 ../../mod/connedit.php:558
-#: ../../mod/notifications.php:51
-msgid "Ignore"
-msgstr "Ignorer"
+#: ../../mod/settings.php:861
+msgid "Minimum of 10 seconds, no maximum"
+msgstr "Minimum 10 secondes, pas de maximum"
-#: ../../mod/connedit.php:424
-msgid "Ignore or Unignore this connection"
-msgstr "Ignorer ou ne plus ignorer cette relation"
+#: ../../mod/settings.php:862
+msgid "Maximum number of conversations to load at any time:"
+msgstr "Nombre maximal de conversations pouvant être chargées en même temps&nbsp;:"
-#: ../../mod/connedit.php:427
-msgid "Unarchive"
-msgstr "Ne plus archiver"
+#: ../../mod/settings.php:862
+msgid "Maximum of 100 items"
+msgstr "100 éléments au maximum"
-#: ../../mod/connedit.php:427
-msgid "Archive"
-msgstr "Archiver"
+#: ../../mod/settings.php:863
+msgid "Show emoticons (smilies) as images"
+msgstr "Remplacer les émoticônes (smileys) par des images"
-#: ../../mod/connedit.php:430
-msgid "Archive or Unarchive this connection"
-msgstr "Archiver ou ne plus archiver cette relation"
+#: ../../mod/settings.php:864
+msgid "Link post titles to source"
+msgstr "Lier les titres des publications à leur source"
-#: ../../mod/connedit.php:433
-msgid "Unhide"
-msgstr "Ne plus cacher"
+#: ../../mod/settings.php:865
+msgid "System Page Layout Editor - (advanced)"
+msgstr "Agencements des pages système - (avancé)"
-#: ../../mod/connedit.php:433
-msgid "Hide"
-msgstr "Cacher"
+#: ../../mod/settings.php:868
+msgid "Use blog/list mode on channel page"
+msgstr "Utiliser le mode blog/liste sur la page du canal"
-#: ../../mod/connedit.php:436
-msgid "Hide or Unhide this connection"
-msgstr "Cacher ou ne plus cacher cette relation"
+#: ../../mod/settings.php:868 ../../mod/settings.php:869
+msgid "(comments displayed separately)"
+msgstr "(commentaires affichés séparément)"
-#: ../../mod/connedit.php:443
-msgid "Delete this connection"
-msgstr "Supprimer cette relation"
+#: ../../mod/settings.php:869
+msgid "Use blog/list mode on matrix page"
+msgstr "Utiliser le mode blog/liste sur la page de la matrice"
-#: ../../mod/connedit.php:486 ../../mod/connedit.php:515
-msgid "Approve this connection"
-msgstr "Approuver cette relation"
+#: ../../mod/settings.php:870
+msgid "Channel page max height of content (in pixels)"
+msgstr "Hauteur maximale du contenu pour la page du canal (en pixels)"
-#: ../../mod/connedit.php:486
-msgid "Accept connection to allow communication"
-msgstr "Accepter la relation pour permettre la communication"
+#: ../../mod/settings.php:870 ../../mod/settings.php:871
+msgid "click to expand content exceeding this height"
+msgstr "cliquer pour dérouler le contenu dépassant cette limite"
-#: ../../mod/connedit.php:502
-msgid "Automatic Permissions Settings"
-msgstr "Permissions automatiques"
+#: ../../mod/settings.php:871
+msgid "Matrix page max height of content (in pixels)"
+msgstr "Hauteur maximale du contenu pour la page du réseau (en pixels)"
-#: ../../mod/connedit.php:502
-#, php-format
-msgid "Connections: settings for %s"
-msgstr "Relations&nbsp;: réglages pour %s"
+#: ../../mod/settings.php:905
+msgid "Nobody except yourself"
+msgstr "Personne sauf vous"
+
+#: ../../mod/settings.php:906
+msgid "Only those you specifically allow"
+msgstr "Seulement ceux que vous autorisez spécifiquement"
+
+#: ../../mod/settings.php:907
+msgid "Approved connections"
+msgstr "Contacts Approuvés"
+
+#: ../../mod/settings.php:908
+msgid "Any connections"
+msgstr "Tous les contacts"
+
+#: ../../mod/settings.php:909
+msgid "Anybody on this website"
+msgstr "Tous les utilisateurs du hub"
+
+#: ../../mod/settings.php:910
+msgid "Anybody in this network"
+msgstr "Tous les utilisateurs sur ce réseau"
+
+#: ../../mod/settings.php:911
+msgid "Anybody authenticated"
+msgstr "Tous les utilisateurs authentifiés"
+
+#: ../../mod/settings.php:912
+msgid "Anybody on the internet"
+msgstr "Tous les utilisateurs d'Internet"
+
+#: ../../mod/settings.php:986
+msgid "Publish your default profile in the network directory"
+msgstr "Publier votre profil par défaut dans l'annuaire du réseau"
+
+#: ../../mod/settings.php:991
+msgid "Allow us to suggest you as a potential friend to new members?"
+msgstr "Nous autoriser à vous suggérer comme relation potentielle aux nouveaux membres?"
+
+#: ../../mod/settings.php:1000
+msgid "Your channel address is"
+msgstr "Voici l'adresse de votre canal"
+
+#: ../../mod/settings.php:1048
+msgid "Channel Settings"
+msgstr "Canal"
+
+#: ../../mod/settings.php:1055
+msgid "Basic Settings"
+msgstr "Basique"
-#: ../../mod/connedit.php:506
+#: ../../mod/settings.php:1058
+msgid "Your Timezone:"
+msgstr "Fureau Horaire&nbsp;:"
+
+#: ../../mod/settings.php:1059
+msgid "Default Post Location:"
+msgstr "Emplacement géographique par défaut&nbsp;:"
+
+#: ../../mod/settings.php:1059
+msgid "Geographical location to display on your posts"
+msgstr "Emplacement géographique à afficher sur vos publications"
+
+#: ../../mod/settings.php:1060
+msgid "Use Browser Location:"
+msgstr "Utiliser la géolocalisation fournie par le navigateur&nbsp;:"
+
+#: ../../mod/settings.php:1062
+msgid "Adult Content"
+msgstr "Contenu \"adulte\""
+
+#: ../../mod/settings.php:1062
msgid ""
-"When receiving a channel introduction, any permissions provided here will be"
-" applied to the new connection automatically and the introduction approved. "
-"Leave this page if you do not wish to use this feature."
-msgstr "Pour chaque introduction reçue, toutes les permissions définies ici seront appliquées aux nouvelles relations automatiquement, et l'introduction sera approuvée. Laissez cette page telle quelle si vous ne souhaitez pas utiliser ce mécanisme."
+"This channel frequently or regularly publishes adult content. (Please tag "
+"any adult material and/or nudity with #NSFW)"
+msgstr "Ce canal publie plus ou moins fréquemment du contenu pour adultes. (Merci d'indiquer tout contenu pour adulte ou potentiellement choquant avec l'étiquette <em>#NSFW</em> - Not Safe For Work)"
-#: ../../mod/connedit.php:508
-msgid "Slide to adjust your degree of friendship"
-msgstr "Faites glisser pour ajuster le niveau de la relation"
+#: ../../mod/settings.php:1064
+msgid "Security and Privacy Settings"
+msgstr "Réglages de Sécurité et vie privée"
-#: ../../mod/connedit.php:514
-msgid "inherited"
-msgstr "héritée"
+#: ../../mod/settings.php:1066
+msgid "Your permissions are already configured. Click to view/adjust"
+msgstr "Vous permissions sont déjà paramétrées. Cliquer pour voir/ajuster"
-#: ../../mod/connedit.php:516
-msgid "Connection has no individual permissions!"
-msgstr "Cette relation n'a aucune permission spécifique!"
+#: ../../mod/settings.php:1068
+msgid "Hide my online presence"
+msgstr "Cacher ma présence en ligne"
-#: ../../mod/connedit.php:517
+#: ../../mod/settings.php:1068
+msgid "Prevents displaying in your profile that you are online"
+msgstr "Cacher votre statut (en ligne/hors ligne) sur votre profil"
+
+#: ../../mod/settings.php:1070
+msgid "Simple Privacy Settings:"
+msgstr "Réglages simples&nbsp;:"
+
+#: ../../mod/settings.php:1071
+msgid ""
+"Very Public - <em>extremely permissive (should be used with caution)</em>"
+msgstr "Très public - <em>extrèmement permissif (à n'utiliser qu'en connaissance de cause)</em>"
+
+#: ../../mod/settings.php:1072
msgid ""
-"This may be appropriate based on your <a href=\"settings\">privacy "
-"settings</a>, though you may wish to review the \"Advanced Permissions\"."
-msgstr "Ceci devrait correspondre à vos <a href=\"settings\">réglages de vie privée</a>, mais vous pouvez toujours contrôler les \"Permissions avancées\"."
+"Typical - <em>default public, privacy when desired (similar to social "
+"network permissions but with improved privacy)</em>"
+msgstr "Classique - <em>public par défaut, privé en cas de besoin (comparable dans le principe aux réseaux sociaux centralisés, avec un mode privé plus efficace)</em>"
+
+#: ../../mod/settings.php:1073
+msgid "Private - <em>default private, never open or public</em>"
+msgstr "Privé - <em>privé par défaut, jamais ouvert ni public</em>"
-#: ../../mod/connedit.php:519
-msgid "Profile Visibility"
-msgstr "Visibilité du profil"
+#: ../../mod/settings.php:1074
+msgid "Blocked - <em>default blocked to/from everybody</em>"
+msgstr "Bloqué - <em>par défaut, bloqué de/vers tout le monde</em>"
-#: ../../mod/connedit.php:520
-#, php-format
+#: ../../mod/settings.php:1076
+msgid "Allow others to tag your posts"
+msgstr "Autoriser les autres à \"étiqueté\" vos publications"
+
+#: ../../mod/settings.php:1076
msgid ""
-"Please choose the profile you would like to display to %s when viewing your "
-"profile securely."
-msgstr "Merci de choisir le profil que vous souhaitez montrer quand %s visite votre profil de manière authentifiée."
+"Often used by the community to retro-actively flag inappropriate content"
+msgstr "Souvent utilisé par la communauté pour distinguer le contenu innaproprié"
-#: ../../mod/connedit.php:521
-msgid "Contact Information / Notes"
-msgstr "Notes / Information de contact"
+#: ../../mod/settings.php:1078
+msgid "Advanced Privacy Settings"
+msgstr "Réglages avancés"
-#: ../../mod/connedit.php:522
-msgid "Edit contact notes"
-msgstr "Éditer les notes du contact"
+#: ../../mod/settings.php:1080
+msgid "Expire other channel content after this many days"
+msgstr "Faire expirer le contenu des autres canaux après n jours"
-#: ../../mod/connedit.php:524
-msgid "Their Settings"
-msgstr "Ses réglages"
+#: ../../mod/settings.php:1080
+msgid "0 or blank prevents expiration"
+msgstr "0, ou vide, pour ne pas faire expirer"
-#: ../../mod/connedit.php:525
-msgid "My Settings"
-msgstr "Mes réglages"
+#: ../../mod/settings.php:1081
+msgid "Maximum Friend Requests/Day:"
+msgstr "Nombre maximum de mises en relation par jour&nbsp;:"
-#: ../../mod/connedit.php:527
-msgid "Clear/Disable Automatic Permissions"
-msgstr "Effacer/Désactiver les Permissions Automatiques"
+#: ../../mod/settings.php:1081
+msgid "May reduce spam activity"
+msgstr "Contribue à réduire l'impact des indésirables"
-#: ../../mod/connedit.php:528
-msgid "Forum Members"
-msgstr "Membres du forum"
+#: ../../mod/settings.php:1082
+msgid "Default Post Permissions"
+msgstr "Permissions par défaut des publications"
-#: ../../mod/connedit.php:529
-msgid "Soapbox"
-msgstr "Blogue"
+#: ../../mod/settings.php:1083 ../../mod/mitem.php:155 ../../mod/mitem.php:227
+msgid "(click to open/close)"
+msgstr "(cliquer pour ouvrir/fermer)"
-#: ../../mod/connedit.php:530
-msgid "Full Sharing (typical social network permissions)"
-msgstr "Partage Complet (fonctionnement habituel des réseaux sociaux)"
+#: ../../mod/settings.php:1087
+msgid "Channel permissions category:"
+msgstr "Catégorie de permissions du canal&nbsp;:"
-#: ../../mod/connedit.php:531
-msgid "Cautious Sharing "
-msgstr "Partage modéré"
+#: ../../mod/settings.php:1093
+msgid "Maximum private messages per day from unknown people:"
+msgstr "Nombre maximum de messages privés émanant d'inconnus, par jour&nbsp;:"
-#: ../../mod/connedit.php:532
-msgid "Follow Only"
-msgstr "Suivre uniquement"
+#: ../../mod/settings.php:1093
+msgid "Useful to reduce spamming"
+msgstr "Utile pour réduire les indésirables"
-#: ../../mod/connedit.php:533
-msgid "Individual Permissions"
-msgstr "Permissions spécifiques"
+#: ../../mod/settings.php:1096
+msgid "Notification Settings"
+msgstr "Notifications"
-#: ../../mod/connedit.php:534
-msgid ""
-"Some permissions may be inherited from your channel <a "
-"href=\"settings\">privacy settings</a>, which have higher priority than "
-"individual settings. Changing those inherited settings on this page will "
-"have no effect."
-msgstr "Certaines permissions peuvent être héritées de vos <a href=\"settings\">réglages de vie privée</a>, lesquels sont prioritaires sur les réglages spécifiques. Changer ces permissions héritées sur la présente page n'aura aucun effet."
+#: ../../mod/settings.php:1097
+msgid "By default post a status message when:"
+msgstr "Par défaut, publier un statut quand:"
-#: ../../mod/connedit.php:535
-msgid "Advanced Permissions"
-msgstr "Permissions avancées"
+#: ../../mod/settings.php:1098
+msgid "accepting a friend request"
+msgstr "vous acceptez une mise en relation"
-#: ../../mod/connedit.php:536
-msgid "Simple Permissions (select one and submit)"
-msgstr "Permissions simples (en choisir une, puis valider)"
+#: ../../mod/settings.php:1099
+msgid "joining a forum/community"
+msgstr "vous joignez un forum ou à une communauté"
-#: ../../mod/connedit.php:540
-#, php-format
-msgid "Visit %s's profile - %s"
-msgstr "Visiter le profil de %s - %s"
+#: ../../mod/settings.php:1100
+msgid "making an <em>interesting</em> profile change"
+msgstr "vous faites une modification <em>intéressante</em> de votre profil"
-#: ../../mod/connedit.php:541
-msgid "Block/Unblock contact"
-msgstr "Bloquer/Débloquer le contact"
+#: ../../mod/settings.php:1101
+msgid "Send a notification email when:"
+msgstr "Envoyer un courriel de notification quand&nbsp;:"
-#: ../../mod/connedit.php:542
-msgid "Ignore contact"
-msgstr "Ignorer le contact"
+#: ../../mod/settings.php:1102
+msgid "You receive a connection request"
+msgstr "Vous recevez une demande de mise en relation"
-#: ../../mod/connedit.php:543
-msgid "Repair URL settings"
-msgstr "Réparer les réglages d'URL"
+#: ../../mod/settings.php:1103
+msgid "Your connections are confirmed"
+msgstr "Vous relations sont confirmées"
-#: ../../mod/connedit.php:544
-msgid "View conversations"
-msgstr "Voir les conversations"
+#: ../../mod/settings.php:1104
+msgid "Someone writes on your profile wall"
+msgstr "Quelqu'un a écrit sur votre mur"
-#: ../../mod/connedit.php:546
-msgid "Delete contact"
-msgstr "Supprimer le contact"
+#: ../../mod/settings.php:1105
+msgid "Someone writes a followup comment"
+msgstr "Quelqu'un a commenté sur vos publications"
-#: ../../mod/connedit.php:549
-msgid "Last update:"
-msgstr "Dernière mise à jour&nbsp;:"
+#: ../../mod/settings.php:1106
+msgid "You receive a private message"
+msgstr "Vous recevez un message privé"
-#: ../../mod/connedit.php:551
-msgid "Update public posts"
-msgstr "Mettre à jour les publications"
+#: ../../mod/settings.php:1107
+msgid "You receive a friend suggestion"
+msgstr "Vous recevez une suggestion d'amitié/relation"
-#: ../../mod/connedit.php:553
-msgid "Update now"
-msgstr "Mettre à jour maintenant"
+#: ../../mod/settings.php:1108
+msgid "You are tagged in a post"
+msgstr "Vous êtes étiqueté dans une publication"
-#: ../../mod/connedit.php:559
-msgid "Currently blocked"
-msgstr "Actuellement bloqué"
+#: ../../mod/settings.php:1109
+msgid "You are poked/prodded/etc. in a post"
+msgstr "Vous êtes cogné/pointé/etc. dans une publication"
-#: ../../mod/connedit.php:560
-msgid "Currently ignored"
-msgstr "Actuellement ignoré"
+#: ../../mod/settings.php:1112
+msgid "Show visual notifications including:"
+msgstr "Afficher des notifications visuelles y compris&nbsp;:"
-#: ../../mod/connedit.php:561
-msgid "Currently archived"
-msgstr "Actuellement archivé"
+#: ../../mod/settings.php:1114
+msgid "Unseen matrix activity"
+msgstr "Activité non-vue sur la matrice"
-#: ../../mod/connedit.php:562
-msgid "Currently pending"
-msgstr "Actuellement en attente"
+#: ../../mod/settings.php:1115
+msgid "Unseen channel activity"
+msgstr "Activité non-vue sur le canal"
-#: ../../mod/connedit.php:563
-msgid "Hide this contact from others"
-msgstr "Dissimuler ce contact aux autres"
+#: ../../mod/settings.php:1116
+msgid "Unseen private messages"
+msgstr "Messages privés non-vus"
-#: ../../mod/connedit.php:563
-msgid ""
-"Replies/likes to your public posts <strong>may</strong> still be visible"
-msgstr "Les réponses et autres réactions à vos contributions publiques <strong>pourraient</strong> être toujours visibles"
+#: ../../mod/settings.php:1116 ../../mod/settings.php:1121
+#: ../../mod/settings.php:1122 ../../mod/settings.php:1123
+msgid "Recommended"
+msgstr "Recommandé"
-#: ../../mod/delegate.php:95
-msgid "No potential page delegates located."
-msgstr "Aucun délégué potentiel n'a été trouvé pour cette page."
+#: ../../mod/settings.php:1117
+msgid "Upcoming events"
+msgstr "Événements à venir"
-#: ../../mod/delegate.php:121
-msgid "Delegate Page Management"
-msgstr "Gestion des délégués de la page"
+#: ../../mod/settings.php:1118
+msgid "Events today"
+msgstr "Événements aujourd'hui"
-#: ../../mod/delegate.php:123
-msgid ""
-"Delegates are able to manage all aspects of this account/page except for "
-"basic account settings. Please do not delegate your personal account to "
-"anybody that you do not trust completely."
-msgstr "Les délégués sont capables de gérer tous les aspects de ce compte ou de cette page, à l'exception des réglages basiques du compte. Merci de ne déléguer votre compte personnel qu'à quelqu'un en qui vous avez une confiance aveugle."
+#: ../../mod/settings.php:1119
+msgid "Upcoming birthdays"
+msgstr "Anniversaires à venir"
-#: ../../mod/delegate.php:124
-msgid "Existing Page Managers"
-msgstr "Actuels gestionnaires de pages"
+#: ../../mod/settings.php:1119
+msgid "Not available in all themes"
+msgstr "Pas disponible dans tous les thèmes"
-#: ../../mod/delegate.php:126
-msgid "Existing Page Delegates"
-msgstr "Actuels délégués"
+#: ../../mod/settings.php:1120
+msgid "System (personal) notifications"
+msgstr "Notifications système (personnelles)"
-#: ../../mod/delegate.php:128
-msgid "Potential Delegates"
-msgstr "Délégués potentiels"
+#: ../../mod/settings.php:1121
+msgid "System info messages"
+msgstr "Messages d'info système"
-#: ../../mod/delegate.php:130 ../../mod/photos.php:912 ../../mod/tagrm.php:93
-msgid "Remove"
-msgstr "Retirer"
+#: ../../mod/settings.php:1122
+msgid "System critical alerts"
+msgstr "Alertes critiques systèmes"
-#: ../../mod/delegate.php:131
-msgid "Add"
-msgstr "Ajouter"
+#: ../../mod/settings.php:1123
+msgid "New connections"
+msgstr "Nouvelles relations"
-#: ../../mod/delegate.php:132
-msgid "No entries."
-msgstr "Aucune entrée."
+#: ../../mod/settings.php:1124
+msgid "System Registrations"
+msgstr "Inscriptions systèmes"
-#: ../../mod/search.php:13 ../../mod/directory.php:15
-#: ../../mod/dirprofile.php:9 ../../mod/display.php:9 ../../mod/photos.php:443
-#: ../../mod/viewconnections.php:17
-msgid "Public access denied."
-msgstr "Accès public refusé."
+#: ../../mod/settings.php:1125
+msgid ""
+"Also show new wall posts, private messages and connections under Notices"
+msgstr "Montrer également les nouvelles publications sur mur, messages privés et relations dans Notices"
-#: ../../mod/directory.php:146 ../../mod/dirprofile.php:95
-msgid "Gender: "
-msgstr "Sexe/genre&nbsp;:"
+#: ../../mod/settings.php:1127
+msgid "Notify me of events this many days in advance"
+msgstr "Me prévenir d’événements à venir tant de jours en avance"
-#: ../../mod/directory.php:223
-msgid "Finding:"
-msgstr "Recherche&nbsp;:"
+#: ../../mod/settings.php:1127
+msgid "Must be greater than 0"
+msgstr "Doit être supérieur à 0"
-#: ../../mod/directory.php:239
-msgid "No entries (some entries may be hidden)."
-msgstr "Pas d'entrées (certaines peuvent être cachées)."
+#: ../../mod/settings.php:1129
+msgid "Advanced Account/Page Type Settings"
+msgstr "Type de page/Compte (avancé)"
-#: ../../mod/dirprofile.php:108
-msgid "Status: "
-msgstr "État&nbsp;:"
+#: ../../mod/settings.php:1130
+msgid "Change the behaviour of this account for special situations"
+msgstr "Modifie le comportement de ce compte pour certains cas particuliers"
-#: ../../mod/dirprofile.php:109
-msgid "Sexual Preference: "
-msgstr "Orientation sexuelle&nbsp;:"
+#: ../../mod/settings.php:1133
+msgid ""
+"Please enable expert mode (in <a href=\"settings/features\">Settings > "
+"Additional features</a>) to adjust!"
+msgstr "Mode expert requis (<a href=\"settings/features\">Réglages > Fonctions supplémentaires</a>) svp ajuster!"
-#: ../../mod/dirprofile.php:111
-msgid "Homepage: "
-msgstr "Site web&nbsp;:"
+#: ../../mod/settings.php:1134
+msgid "Miscellaneous Settings"
+msgstr "Divers"
-#: ../../mod/dirprofile.php:112
-msgid "Hometown: "
-msgstr "Ville natale&nbsp;:"
+#: ../../mod/settings.php:1136
+msgid "Personal menu to display in your channel pages"
+msgstr "Menu personnel tel qu'il apparaîtra sur les pages de votre canal"
-#: ../../mod/dirprofile.php:114
-msgid "About: "
-msgstr "À propos&nbsp;:"
+#: ../../mod/settings.php:1138
+msgid "Remove this channel."
+msgstr "Supprimer ce canal"
-#: ../../mod/dirprofile.php:162
-msgid "Keywords: "
-msgstr "Mots-clefs&nbsp;:"
+#: ../../mod/item.php:174
+msgid "Unable to locate original post."
+msgstr "Impossible de localiser la publication initiale."
-#: ../../mod/dirsearch.php:21
-msgid "This site is not a directory server"
-msgstr "Ce site n'est pas un serveur d'annuaire"
+#: ../../mod/item.php:440
+msgid "Empty post discarded."
+msgstr "Publication vide annulée."
-#: ../../mod/home.php:81
-msgid "Hubzilla - &quot;The Network&quot;"
-msgstr "La Matrice Rouge - &quot;LE Réseau&quot;"
+#: ../../mod/item.php:480
+msgid "Executable content type not permitted to this channel."
+msgstr "Les contenus de type 'exécutable' ne sont pas autorisés sur ce canal."
-#: ../../mod/home.php:94
+#: ../../mod/item.php:914
+msgid "System error. Post not saved."
+msgstr "Erreur système. Publication non sauvegardée."
+
+#: ../../mod/item.php:1146
+msgid "Unable to obtain post information from database."
+msgstr "Impossible d'obtenir les informations de publication depuis la base de données."
+
+#: ../../mod/item.php:1153
#, php-format
-msgid "Welcome to %s"
-msgstr "Bienvenue sur %s"
+msgid "You have reached your limit of %1$.0f top level posts."
+msgstr "Vous avez atteint votre limite de %1$.0f contributions \"racine\"."
+
+#: ../../mod/item.php:1160
+#, php-format
+msgid "You have reached your limit of %1$.0f webpages."
+msgstr "Vous avez atteint votre limite de %1$.0f pages web."
-#: ../../mod/setup.php:162
-msgid "Hubzilla Server - Setup"
-msgstr "Serveur de la Matrice Rouge - Configuration"
+#: ../../mod/setup.php:187
+msgid "$Projectname Server - Setup"
+msgstr "Serveur $Projectname - configuration"
-#: ../../mod/setup.php:168
+#: ../../mod/setup.php:191
msgid "Could not connect to database."
msgstr "Impossible de se connecter à la base de données."
-#: ../../mod/setup.php:172
+#: ../../mod/setup.php:195
msgid ""
"Could not connect to specified site URL. Possible SSL certificate or DNS "
"issue."
msgstr "Impossible de se connecter au site par l'URL indiquée. Problème potentiel de certificat SSL/TLS ou de DNS."
-#: ../../mod/setup.php:179
+#: ../../mod/setup.php:202
msgid "Could not create table."
msgstr "Impossible de créer la table."
-#: ../../mod/setup.php:185
+#: ../../mod/setup.php:207
msgid "Your site database has been installed."
msgstr "La base de données de votre site a été installée."
-#: ../../mod/setup.php:190
+#: ../../mod/setup.php:211
msgid ""
-"You may need to import the file \"install/database.sql\" manually using "
-"phpmyadmin or mysql."
-msgstr "Vous pourriez avoir besoin d'importer le fichier \"install/database.sql\" manuellement via phpmyadmin ou mysql."
+"You may need to import the file \"install/schema_xxx.sql\" manually using a "
+"database client."
+msgstr "Vous pourriez avoir besoin d'importer le fichier \"install/schema_xxx.sql\" manuellement via un client de base de données (ex: phpmyadmin)."
-#: ../../mod/setup.php:191 ../../mod/setup.php:260 ../../mod/setup.php:655
+#: ../../mod/setup.php:212 ../../mod/setup.php:280 ../../mod/setup.php:730
msgid "Please see the file \"install/INSTALL.txt\"."
msgstr "Merci de consulter le fichier \"install/INSTALL.txt\"."
-#: ../../mod/setup.php:257
+#: ../../mod/setup.php:277
msgid "System check"
msgstr "Vérification du système"
-#: ../../mod/setup.php:261 ../../mod/events.php:399
-msgid "Next"
-msgstr "Suivant"
-
-#: ../../mod/setup.php:262
+#: ../../mod/setup.php:282
msgid "Check again"
msgstr "Re-vérifier"
-#: ../../mod/setup.php:284
+#: ../../mod/setup.php:304
msgid "Database connection"
msgstr "Connexion à la base de données"
-#: ../../mod/setup.php:285
+#: ../../mod/setup.php:305
msgid ""
-"In order to install Hubzilla we need to know how to connect to your "
+"In order to install $Projectname we need to know how to connect to your "
"database."
-msgstr "Pour installer la Matrice Rouge, nous avons besoin de savoir comment contacter votre base de données."
+msgstr "Pour installer $Projectname, nous avons besoin de savoir comment se connecter à votre base de données."
-#: ../../mod/setup.php:286
+#: ../../mod/setup.php:306
msgid ""
"Please contact your hosting provider or site administrator if you have "
"questions about these settings."
msgstr "Merci de contacter votre prestataire d'hébergement ou votre administrateur système si vous avez des doutes à propos de ces paramètres."
-#: ../../mod/setup.php:287
+#: ../../mod/setup.php:307
msgid ""
"The database you specify below should already exist. If it does not, please "
"create it before continuing."
msgstr "La base de données que vous allez spécifier doit exister. Si ce n'est pas déjà le cas, merci de la créer avant de continuer."
-#: ../../mod/setup.php:291
+#: ../../mod/setup.php:311
msgid "Database Server Name"
msgstr "Nom du serveur de la base de données"
-#: ../../mod/setup.php:291
+#: ../../mod/setup.php:311
msgid "Default is localhost"
msgstr "Par défaut, localhost"
-#: ../../mod/setup.php:292
+#: ../../mod/setup.php:312
msgid "Database Port"
msgstr "Port du serveur"
-#: ../../mod/setup.php:292
+#: ../../mod/setup.php:312
msgid "Communication port number - use 0 for default"
msgstr "Numéro TCP du port - utilisez 0 pour la valeur par défaut"
-#: ../../mod/setup.php:293
+#: ../../mod/setup.php:313
msgid "Database Login Name"
msgstr "Identifiant de connexion à la Base de Données"
-#: ../../mod/setup.php:294
+#: ../../mod/setup.php:314
msgid "Database Login Password"
msgstr "Mot de passe de connexion à la Base de Données"
-#: ../../mod/setup.php:295
+#: ../../mod/setup.php:315
msgid "Database Name"
msgstr "Nom de la Base de Données"
-#: ../../mod/setup.php:297 ../../mod/setup.php:339
+#: ../../mod/setup.php:316
+msgid "Database Type"
+msgstr "Type de base de données"
+
+#: ../../mod/setup.php:318 ../../mod/setup.php:359
msgid "Site administrator email address"
msgstr "Adresse de courriel de l'administrateur du site"
-#: ../../mod/setup.php:297 ../../mod/setup.php:339
+#: ../../mod/setup.php:318 ../../mod/setup.php:359
msgid ""
"Your account email address must match this in order to use the web admin "
"panel."
msgstr "Votre compte devra utiliser la même adresse de courriel pour pouvoir utiliser l'administration web."
-#: ../../mod/setup.php:298 ../../mod/setup.php:341
+#: ../../mod/setup.php:319 ../../mod/setup.php:361
msgid "Website URL"
msgstr "URL du site"
-#: ../../mod/setup.php:298 ../../mod/setup.php:341
+#: ../../mod/setup.php:319 ../../mod/setup.php:361
msgid "Please use SSL (https) URL if available."
msgstr "Merci d'utiliser SSL/TLS (https) autant que possible."
-#: ../../mod/setup.php:301 ../../mod/setup.php:344
+#: ../../mod/setup.php:321 ../../mod/setup.php:363
msgid "Please select a default timezone for your website"
msgstr "Merci de choisir une zone de temps (fuseau horaire) pour votre site"
-#: ../../mod/setup.php:328
+#: ../../mod/setup.php:348
msgid "Site settings"
msgstr "Réglages du site"
-#: ../../mod/setup.php:387
+#: ../../mod/setup.php:413
msgid "Could not find a command line version of PHP in the web server PATH."
msgstr "Impossible de trouver une version CLI de PHP dans le PATH du serveur web."
-#: ../../mod/setup.php:388
+#: ../../mod/setup.php:414
msgid ""
"If you don't have a command line version of PHP installed on server, you "
"will not be able to run background polling via cron."
-msgstr "En l'absence de version CLI de PHP sur votre serveur, vous ne pourrez pas utiliser la mise à jour en arrière-plan via cron."
+msgstr "En l'absence de version CLI de PHP sur votre serveur, vous ne pourrez pas utiliser la mise-à-jour en arrière-plan via cron."
-#: ../../mod/setup.php:392
+#: ../../mod/setup.php:418
msgid "PHP executable path"
msgstr "Chemin vers l'éxecutable PHP"
-#: ../../mod/setup.php:392
+#: ../../mod/setup.php:418
msgid ""
"Enter full path to php executable. You can leave this blank to continue the "
"installation."
msgstr "Entrez le chemin complet vers l'exécutable php. Vous pouvez continuer l'installation sans."
-#: ../../mod/setup.php:397
+#: ../../mod/setup.php:423
msgid "Command line PHP"
msgstr "PHP en ligne de commande (CLI)"
-#: ../../mod/setup.php:406
+#: ../../mod/setup.php:432
msgid ""
"The command line version of PHP on your system does not have "
"\"register_argc_argv\" enabled."
msgstr "La version CLI de PHP sur votre système n'a pas l'option \"register_argc_argv\" activée."
-#: ../../mod/setup.php:407
+#: ../../mod/setup.php:433
msgid "This is required for message delivery to work."
msgstr "Elle est nécessaire pour la livraison de messages."
-#: ../../mod/setup.php:409
+#: ../../mod/setup.php:436
msgid "PHP register_argc_argv"
msgstr "PHP register_argc_argv"
-#: ../../mod/setup.php:430
+#: ../../mod/setup.php:454
+#, php-format
+msgid ""
+"Your max allowed total upload size is set to %s. Maximum size of one file to"
+" upload is set to %s. You are allowed to upload up to %d files at once."
+msgstr "Votre taille de téléversement maximale totale autorisée est fixée à %s. La taille maximale d'un seul fichier à téléverser est fixée à %s. Vous pouvez téléverser jusqu'à %d fichier(s) à la fois."
+
+#: ../../mod/setup.php:459
+msgid "You can adjust these settings in the servers php.ini."
+msgstr "Vous pouvez ajuster ces paramètres dans le php.ini du serveur."
+
+#: ../../mod/setup.php:461
+msgid "PHP upload limits"
+msgstr "Limites de téléversement de PHP"
+
+#: ../../mod/setup.php:484
msgid ""
"Error: the \"openssl_pkey_new\" function on this system is not able to "
"generate encryption keys"
msgstr "Erreur&nbsp;: la fonction \"openssl_pkey_new\" de ce système n'est pas capable de générer des clefs de chiffrement"
-#: ../../mod/setup.php:431
+#: ../../mod/setup.php:485
msgid ""
"If running under Windows, please see "
"\"http://www.php.net/manual/en/openssl.installation.php\"."
msgstr "Si vous êtes sur un serveur Windows, merci de consulter \"http://www.php.net/manual/fr/openssl.installation.php\"."
-#: ../../mod/setup.php:433
+#: ../../mod/setup.php:488
msgid "Generate encryption keys"
msgstr "Générer les clefs de chiffrement"
-#: ../../mod/setup.php:440
+#: ../../mod/setup.php:500
msgid "libCurl PHP module"
msgstr "module PHP libCurl"
-#: ../../mod/setup.php:441
+#: ../../mod/setup.php:501
msgid "GD graphics PHP module"
msgstr "module PHP GD graphics"
-#: ../../mod/setup.php:442
+#: ../../mod/setup.php:502
msgid "OpenSSL PHP module"
msgstr "module PHP OpenSSL"
-#: ../../mod/setup.php:443
-msgid "mysqli PHP module"
-msgstr "module PHP mysqli"
+#: ../../mod/setup.php:503
+msgid "mysqli or postgres PHP module"
+msgstr "module PHP postgres ou mysqli"
-#: ../../mod/setup.php:444
+#: ../../mod/setup.php:504
msgid "mb_string PHP module"
msgstr "module PHP mb_string"
-#: ../../mod/setup.php:445
+#: ../../mod/setup.php:505
msgid "mcrypt PHP module"
msgstr "module PHP mcrypt"
-#: ../../mod/setup.php:450 ../../mod/setup.php:452
+#: ../../mod/setup.php:506
+msgid "xml PHP module"
+msgstr "module PHP xml"
+
+#: ../../mod/setup.php:510 ../../mod/setup.php:512
msgid "Apache mod_rewrite module"
msgstr "module Apache mod_rewrite"
-#: ../../mod/setup.php:450
+#: ../../mod/setup.php:510
msgid ""
"Error: Apache webserver mod-rewrite module is required but not installed."
msgstr "Erreur&nbsp;: le module mod-rewrite du serveur web Apache est requis, mais pas installé."
-#: ../../mod/setup.php:456 ../../mod/setup.php:459
+#: ../../mod/setup.php:516 ../../mod/setup.php:519
msgid "proc_open"
msgstr "proc_open"
-#: ../../mod/setup.php:456
+#: ../../mod/setup.php:516
msgid ""
"Error: proc_open is required but is either not installed or has been "
"disabled in php.ini"
msgstr "Erreur&nbsp;: proc_open est requis, mais soit n'est pas installé, soit est désactivé dans le php.ini"
-#: ../../mod/setup.php:464
+#: ../../mod/setup.php:524
msgid "Error: libCURL PHP module required but not installed."
msgstr "Erreur&nbsp;: le module libCURL de PHP est requis, mais pas installé."
-#: ../../mod/setup.php:468
+#: ../../mod/setup.php:528
msgid ""
"Error: GD graphics PHP module with JPEG support required but not installed."
msgstr "Erreur&nbsp;: le module GD de PHP (avec support JPEG) est requis, mais pas installé."
-#: ../../mod/setup.php:472
+#: ../../mod/setup.php:532
msgid "Error: openssl PHP module required but not installed."
msgstr "Erreur&nbsp;: le module openssl de PHP est requis, mais pas installé."
-#: ../../mod/setup.php:476
-msgid "Error: mysqli PHP module required but not installed."
-msgstr "Erreur&nbsp;: le module mysqli de PHP est requis, mais pas installé."
+#: ../../mod/setup.php:536
+msgid ""
+"Error: mysqli or postgres PHP module required but neither are installed."
+msgstr "Erreur&nbsp;: un module PHP mysqli ou postgres est requis, mais aucun des deux n'est installé."
-#: ../../mod/setup.php:480
+#: ../../mod/setup.php:540
msgid "Error: mb_string PHP module required but not installed."
msgstr "Erreur&nbsp;: le module mb_string de PHP est requis, mais pas installé."
-#: ../../mod/setup.php:484
+#: ../../mod/setup.php:544
msgid "Error: mcrypt PHP module required but not installed."
msgstr "Erreur&nbsp;: le module mcrypt de PHP est requis, mais pas installé."
-#: ../../mod/setup.php:500
+#: ../../mod/setup.php:548
+msgid "Error: xml PHP module required for DAV but not installed."
+msgstr "Erreur&nbsp;: le module xml de PHP est requis pour le DAV, mais pas installé."
+
+#: ../../mod/setup.php:566
msgid ""
"The web installer needs to be able to create a file called \".htconfig.php\""
" in the top folder of your web server and it is unable to do so."
msgstr "L'installeur web a besoin de créer un fichier \".htconfig.php\" à la racine de votre serveur web, mais en est incapable."
-#: ../../mod/setup.php:501
+#: ../../mod/setup.php:567
msgid ""
"This is most often a permission setting, as the web server may not be able "
"to write files in your folder - even if you can."
msgstr "C'est généralement lié à un problème de droits, à cause duquel le serveur web est interdit d'écriture dans le répertoire concerné - alors que votre propre utilisateur a le droit."
-#: ../../mod/setup.php:502
+#: ../../mod/setup.php:568
msgid ""
"At the end of this procedure, we will give you a text to save in a file "
"named .htconfig.php in your Red top folder."
msgstr "Au terme de cette procédure, nous vous transmettrons un texte à sauvegarder dans un fichier nommé .htconfig.php, à la racine de votre installation de La Matrice Rouge."
-#: ../../mod/setup.php:503
+#: ../../mod/setup.php:569
msgid ""
"You can alternatively skip this procedure and perform a manual installation."
" Please see the file \"install/INSTALL.txt\" for instructions."
msgstr "Autrement, vous pouvez contourner toute cette procédure et réaliser l'installation manuellement. Merci de consulter le fichier \"install/INSTALL.txt\" pour les instructions détaillées."
-#: ../../mod/setup.php:506
+#: ../../mod/setup.php:572
msgid ".htconfig.php is writable"
msgstr "Le fichier .htconfig.php est accessible en écriture"
-#: ../../mod/setup.php:516
+#: ../../mod/setup.php:586
msgid ""
"Red uses the Smarty3 template engine to render its web views. Smarty3 "
"compiles templates to PHP to speed up rendering."
msgstr "La Matrice Rouge utilise le moteur de template Smarty3 pour mettre son contenu en forme. Smarty3 compile ses modèles vers du PHP natif pour accélérer le rendu."
-#: ../../mod/setup.php:517
+#: ../../mod/setup.php:587
#, php-format
msgid ""
"In order to store these compiled templates, the web server needs to have "
"write access to the directory %s under the Red top level folder."
msgstr "Pour utiliser ces modèles, le serveur doit avoir le droits d'écrire dans le dossier %s."
-#: ../../mod/setup.php:518 ../../mod/setup.php:536
+#: ../../mod/setup.php:588 ../../mod/setup.php:609
msgid ""
"Please ensure that the user that your web server runs as (e.g. www-data) has"
" write access to this folder."
msgstr "Merci de vous assurer que l'utilisateur sous lequel le serveur web tourne (le plus souvent, www-data) a bien l'autorisation d'écrire dans ce répertoire."
-#: ../../mod/setup.php:519
+#: ../../mod/setup.php:589
#, php-format
msgid ""
"Note: as a security measure, you should give the web server write access to "
"%s only--not the template files (.tpl) that it contains."
msgstr "Note: Comme mesure de sécurité, assurez vous de donner les droits d'écriture sur %s au serveur web uniquement. Éviter de définir les permissions sur les fichiers individuels (.tpl)."
-#: ../../mod/setup.php:522
+#: ../../mod/setup.php:592
#, php-format
msgid "%s is writable"
msgstr "Permission d'écriture sur %s activée"
-#: ../../mod/setup.php:535
+#: ../../mod/setup.php:608
msgid ""
"Red uses the store directory to save uploaded files. The web server needs to"
" have write access to the store directory under the Red top level folder"
msgstr "Red utilise le répertoire 'store' - situé à la racine de votre installation de la Matrice Rouge - pour sauvegarder les fichiers envoyés. Le serveur web aura donc besoin de pouvoir y écrire."
-#: ../../mod/setup.php:539
+#: ../../mod/setup.php:612
msgid "store is writable"
msgstr "'store' est accessible en écriture"
-#: ../../mod/setup.php:569
+#: ../../mod/setup.php:645
msgid ""
"SSL certificate cannot be validated. Fix certificate or disable https access"
" to this site."
msgstr "Le certificat SSL/TLS n'a pas pu être validé. Merci de le corriger, ou de désactiver l'accès https à ce site."
-#: ../../mod/setup.php:570
+#: ../../mod/setup.php:646
msgid ""
"If you have https access to your website or allow connections to TCP port "
"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
"NOT use self-signed certificates!"
msgstr "Si votre serveur supporte les connections encryptées SSL ou s'il permet les connections sur le port TCP 443 (le port utilisé par le protocole https), vous DEVEZ utiliser un certificat valide. Vous ne DEVEZ PAS utiliser un certificat que vous avez vous-mêmes signé!"
-#: ../../mod/setup.php:571
+#: ../../mod/setup.php:647
msgid ""
"This restriction is incorporated because public posts from you may for "
"example contain references to images on your own hub."
msgstr "Nous avons ajouté cette contrainte pour éviter que vos publications publiques ne fassent référence à des images sur votre propre hub."
-#: ../../mod/setup.php:572
+#: ../../mod/setup.php:648
msgid ""
"If your certificate is not recognized, members of other sites (who may "
"themselves have valid certificates) will get a warning message on their own "
"site complaining about security issues."
msgstr "Si votre certificat n'est pas reconnu, les membres des autres sites (avec certificats valides) recevront des messages d'avertissement sur leur propre sites."
-#: ../../mod/setup.php:573
+#: ../../mod/setup.php:649
msgid ""
"This can cause usability issues elsewhere (not just on your own site) so we "
"must insist on this requirement."
msgstr "Pour des raisons de compatibilité (sur l'ensemble de la matrice) nous nous devons d'insister sur ce prérequis."
-#: ../../mod/setup.php:574
+#: ../../mod/setup.php:650
msgid ""
"Providers are available that issue free certificates which are browser-"
"valid."
msgstr "Il existe une plusieurs autorités de certification qui vous fourniront gratuitement un certificat valide."
-#: ../../mod/setup.php:576
+#: ../../mod/setup.php:652
msgid "SSL certificate validation"
msgstr "Validation du certificat SSL/TLS"
-#: ../../mod/setup.php:582
+#: ../../mod/setup.php:658
msgid ""
-"Url rewrite in .htaccess is not working. Check your server configuration."
-msgstr "La réécriture d'URL définie dans le .htaccess ne fonctionne pas. Merci de vérifier la configuration de votre serveur web."
+"Url rewrite in .htaccess is not working. Check your server "
+"configuration.Test: "
+msgstr "La réécriture d'URL définie dans le .htaccess ne fonctionne pase. Vérifiez votre configuration serveur. Test&nbsp;:"
-#: ../../mod/setup.php:584
+#: ../../mod/setup.php:661
msgid "Url rewrite is working"
msgstr "La réécriture d'URL fonctionne"
-#: ../../mod/setup.php:594
+#: ../../mod/setup.php:670
msgid ""
"The database configuration file \".htconfig.php\" could not be written. "
"Please use the enclosed text to create a configuration file in your web "
"server root."
msgstr "Le fichier de configuration de la base de données - \".htconfig.php\" - ne peut être écrit. Merci de copier le texte généré dans un fichier à ce nom, à la racine de votre serveur web."
-#: ../../mod/setup.php:618
+#: ../../mod/setup.php:694
msgid "Errors encountered creating database tables."
msgstr "Erreurs rencontrées pendant la création de tables de BD."
-#: ../../mod/setup.php:653
+#: ../../mod/setup.php:728
msgid "<h1>What next</h1>"
msgstr "<h1>Et maintenant</h1>"
-#: ../../mod/setup.php:654
+#: ../../mod/setup.php:729
msgid ""
"IMPORTANT: You will need to [manually] setup a scheduled task for the "
"poller."
-msgstr "IMPORTANT&nbsp;: Vous devez créer [manuellement] une tâche planifiée pour les mises à jour."
+msgstr "IMPORTANT&nbsp;: Vous devez créer [manuellement] une tâche planifiée pour les mises-à-jour."
-#: ../../mod/editblock.php:8 ../../mod/editblock.php:27
-#: ../../mod/editblock.php:53 ../../mod/editlayout.php:36
-#: ../../mod/editpost.php:20 ../../mod/editwebpage.php:32
-msgid "Item not found"
-msgstr "Élément introuvable"
+#: ../../mod/layouts.php:176
+msgid "Comanche page description language help"
+msgstr "Aide sur le langage de description de page Comanche"
-#: ../../mod/editblock.php:77
-msgid "Edit Block"
-msgstr "Éditer bloc"
+#: ../../mod/layouts.php:180
+msgid "Layout Description"
+msgstr "Description de la mise en page"
-#: ../../mod/editblock.php:87
-msgid "Delete block?"
-msgstr "Supprimer le bloc?"
+#: ../../mod/layouts.php:185
+msgid "Download PDL file"
+msgstr "Télécharger le fichier PDL"
-#: ../../mod/editblock.php:115 ../../mod/editlayout.php:110
-#: ../../mod/editpost.php:116 ../../mod/editwebpage.php:147
-msgid "Insert YouTube video"
-msgstr "Insérer une vidéo YouTube"
+#: ../../mod/sharedwithme.php:94
+msgid "Files: shared with me"
+msgstr "Fichiers&nbsp;: partagés avec moi"
-#: ../../mod/editblock.php:116 ../../mod/editlayout.php:111
-#: ../../mod/editpost.php:117 ../../mod/editwebpage.php:148
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Insérer une vidéo Vorbis [.ogg]"
+#: ../../mod/sharedwithme.php:96
+msgid "NEW"
+msgstr "NOUVEAU"
-#: ../../mod/editblock.php:117 ../../mod/editlayout.php:112
-#: ../../mod/editpost.php:118 ../../mod/editwebpage.php:149
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Insérer un son Vorbis [.ogg]"
+#: ../../mod/sharedwithme.php:99
+msgid "Remove all files"
+msgstr "Supprimer tous les fichiers"
-#: ../../mod/editblock.php:153
-msgid "Delete Block"
-msgstr "Supprimer le bloc"
+#: ../../mod/sharedwithme.php:100
+msgid "Remove this file"
+msgstr "Supprimer ce fichier"
-#: ../../mod/pdledit.php:13
-msgid "Layout updated."
-msgstr "Agencement pris-en-compte."
+#: ../../mod/like.php:15
+msgid "Like/Dislike"
+msgstr "J'aime/Je Déteste"
-#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
-msgid "Edit System Page Description"
-msgstr "Éditer la description"
+#: ../../mod/like.php:20
+msgid "This action is restricted to members."
+msgstr "Cette action est réservée aux membres."
-#: ../../mod/pdledit.php:48
-msgid "Layout not found."
-msgstr "Agencement introuvable."
+#: ../../mod/like.php:21
+msgid ""
+"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a "
+"href=\"register\">register as a new $Projectname member</a> to continue."
+msgstr "S'il vous plait, <a href=\"rmagic\">identifiez vous avec votre identifant de $Projectname </a> ou <a href=\"register\">inscrivez vous pour un nouveau $Projectname </a> pour continuer."
-#: ../../mod/pdledit.php:54
-msgid "Module Name:"
-msgstr "Nom du module&nbsp;:"
+#: ../../mod/like.php:101 ../../mod/like.php:128 ../../mod/like.php:166
+msgid "Invalid request."
+msgstr "Requête invalide."
-#: ../../mod/pdledit.php:55 ../../mod/layouts.php:59
-msgid "Layout Help"
-msgstr "Aide à la mise en page"
+#: ../../mod/like.php:143
+msgid "thing"
+msgstr "chose"
-#: ../../mod/editlayout.php:72
-msgid "Edit Layout"
-msgstr "Éditer mise-en-page"
+#: ../../mod/like.php:189
+msgid "Channel unavailable."
+msgstr "Canal indisponible."
-#: ../../mod/editlayout.php:82
-msgid "Delete layout?"
-msgstr "Supprimer la mise-en-page?"
+#: ../../mod/like.php:231
+msgid "Previous action reversed."
+msgstr "Action précédente annulée."
-#: ../../mod/editlayout.php:146
-msgid "Delete Layout"
-msgstr "Supprimer mise-en-page"
+#: ../../mod/like.php:401
+#, php-format
+msgid "%1$s agrees with %2$s's %3$s"
+msgstr "%1$s approuve %3$s de %2$s"
-#: ../../mod/editpost.php:31
-msgid "Item is not editable"
-msgstr "Élément non-éditable"
+#: ../../mod/like.php:403
+#, php-format
+msgid "%1$s doesn't agree with %2$s's %3$s"
+msgstr "%1$s n'est pas d'accord avec %2$s's %3$s"
-#: ../../mod/editpost.php:53
-msgid "Delete item?"
-msgstr "Supprimer l'élément?"
+#: ../../mod/like.php:405
+#, php-format
+msgid "%1$s abstains from a decision on %2$s's %3$s"
+msgstr "%1$s s'abstient de toute décision sur le %3$s de %2$s"
-#: ../../mod/editwebpage.php:106
-msgid "Edit Webpage"
-msgstr "Éditer page web"
+#: ../../mod/like.php:407
+#, php-format
+msgid "%1$s is attending %2$s's %3$s"
+msgstr "%1$s participe en ce moment à %3$s de %2$s"
-#: ../../mod/editwebpage.php:116
-msgid "Delete webpage?"
-msgstr "Supprimer la page web?"
+#: ../../mod/like.php:409
+#, php-format
+msgid "%1$s is not attending %2$s's %3$s"
+msgstr "%1$s ne participe pas à %3$s de %2$s"
-#: ../../mod/editwebpage.php:186
-msgid "Delete Webpage"
-msgstr "Supprimer page web"
+#: ../../mod/like.php:411
+#, php-format
+msgid "%1$s may attend %2$s's %3$s"
+msgstr "%1$s participe peut-être à %3$s de %2$s"
+
+#: ../../mod/like.php:507
+msgid "Action completed."
+msgstr "Action complétée."
+
+#: ../../mod/like.php:508
+msgid "Thank you."
+msgstr "Merci."
-#: ../../mod/siteinfo.php:57
+#: ../../mod/siteinfo.php:112
#, php-format
msgid "Version %s"
msgstr "Version %s"
-#: ../../mod/siteinfo.php:76
+#: ../../mod/siteinfo.php:133
msgid "Installed plugins/addons/apps:"
msgstr "Extensions/applications installées&nbsp;:"
-#: ../../mod/siteinfo.php:89
+#: ../../mod/siteinfo.php:146
msgid "No installed plugins/addons/apps"
msgstr "Aucune extension/application installée"
-#: ../../mod/siteinfo.php:97
-msgid "Red"
-msgstr "Rouge"
-
-#: ../../mod/siteinfo.php:98
+#: ../../mod/siteinfo.php:156
msgid ""
-"This is a hub of the Hubzilla - a global cooperative network of "
+"This is a hub of $Projectname - a global cooperative network of "
"decentralized privacy enhanced websites."
-msgstr "Ceci est un serveur de la Matrice Rouge - un réseau collaboratif de plusieurs serveurs qui assurent la protection de votre vie privée notamment par la décentralisation de votre identité."
+msgstr "Ceci est un serveur $Projectname - un réseau collaboratif mondial de serveurs décentralisés à la confidentialité améliorée."
-#: ../../mod/siteinfo.php:101
+#: ../../mod/siteinfo.php:158
+msgid "Tag: "
+msgstr "Tag:"
+
+#: ../../mod/siteinfo.php:160
+msgid "Last background fetch: "
+msgstr "Dernière récupération en tâche de fond&nbsp;:"
+
+#: ../../mod/siteinfo.php:163
msgid "Running at web location"
msgstr "Installée sur"
-#: ../../mod/siteinfo.php:102
+#: ../../mod/siteinfo.php:164
msgid ""
-"Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more "
-"about the Hubzilla."
-msgstr "Merci de visiter <a href=\"http://getzot.com\">GetZot.com</a> pour en apprendre davantage sur la Matrice Rouge."
+"Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more "
+"about $Projectname."
+msgstr "Merci de visiter <a href=\"http://hubzilla.org\">hubzilla.org</a> pour en apprendre davantage sur $Projectname."
-#: ../../mod/siteinfo.php:103
+#: ../../mod/siteinfo.php:165
msgid "Bug reports and issues: please visit"
msgstr "Pour remonter bogues et problèmes, merci de visiter"
-#: ../../mod/siteinfo.php:106
+#: ../../mod/siteinfo.php:167
+msgid "$projectname issues"
+msgstr "Problèmes $projectname"
+
+#: ../../mod/siteinfo.php:168
msgid ""
-"Suggestions, praise, etc. - please email \"hubzilla\" at librelist - dot "
+"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
"com"
-msgstr "Suggestions, demandes, etc. - merci de vous adresser à \"hubzilla\" à librelist - point com"
+msgstr "Suggestions, demandes, etc. - merci de vous adresser à \"redmatrix\" à librelist - point com"
-#: ../../mod/siteinfo.php:108
+#: ../../mod/siteinfo.php:170
msgid "Site Administrators"
msgstr "Administrateurs du site"
-#: ../../mod/photos.php:77
-msgid "Page owner information could not be retrieved."
-msgstr "Impossible d'obtenir des informations sur le propriétaire de la page."
-
-#: ../../mod/photos.php:97
-msgid "Album not found."
-msgstr "Album introuvable."
-
-#: ../../mod/photos.php:119 ../../mod/photos.php:675
-msgid "Delete Album"
-msgstr "Supprimer album"
-
-#: ../../mod/photos.php:159 ../../mod/photos.php:963
-msgid "Delete Photo"
-msgstr "Supprimer photo"
-
-#: ../../mod/photos.php:453
-msgid "No photos selected"
-msgstr "Aucune photo selectionnée"
-
-#: ../../mod/photos.php:500
-msgid "Access to this item is restricted."
-msgstr "L'accès à l'élément est restreint."
-
-#: ../../mod/photos.php:574
-#, php-format
-msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."
-msgstr "Vous avez utilisé %1$.2f mégaoctets sur les %2$.2f autorisés pour le stockage des photos."
-
-#: ../../mod/photos.php:577
-#, php-format
-msgid "You have used %1$.2f Mbytes of photo storage."
-msgstr "Vous avez utilisé %1$.2f mégaoctets pour le stockage des photos."
-
-#: ../../mod/photos.php:596
-msgid "Upload Photos"
-msgstr "Téléverser des photos"
-
-#: ../../mod/photos.php:600 ../../mod/photos.php:670
-msgid "New album name: "
-msgstr "Créer un album&nbsp;:"
-
-#: ../../mod/photos.php:601
-msgid "or existing album name: "
-msgstr "ou choisir un album existant&nbsp;:"
-
-#: ../../mod/photos.php:602
-msgid "Do not show a status post for this upload"
-msgstr "Ne pas publier de statut pour cet envoi"
-
-#: ../../mod/photos.php:622
-msgid "Album name could not be decoded"
-msgstr "Le nom de l'Album n'a pu être décodé"
-
-#: ../../mod/photos.php:659 ../../mod/photos.php:681 ../../mod/photos.php:1135
-#: ../../mod/photos.php:1150
-msgid "Contact Photos"
-msgstr "Photos de contact"
-
-#: ../../mod/photos.php:685
-msgid "Edit Album"
-msgstr "Éditer l'album"
-
-#: ../../mod/photos.php:691
-msgid "Show Newest First"
-msgstr "Ordre anté-chronologique"
-
-#: ../../mod/photos.php:693
-msgid "Show Oldest First"
-msgstr "Ordre chronologique"
-
-#: ../../mod/photos.php:736 ../../mod/photos.php:1182
-msgid "View Photo"
-msgstr "Voir la photo"
-
-#: ../../mod/photos.php:782
-msgid "Permission denied. Access to this item may be restricted."
-msgstr "Permission refusée. L'accès à cet élément peut avoir été restreint."
-
-#: ../../mod/photos.php:784
-msgid "Photo not available"
-msgstr "Photo indisponible"
-
-#: ../../mod/photos.php:844
-msgid "Use as profile photo"
-msgstr "Utiliser comme photo du profil"
-
-#: ../../mod/photos.php:868
-msgid "View Full Size"
-msgstr "Voir en taille réelle"
-
-#: ../../mod/photos.php:946
-msgid "Edit photo"
-msgstr "Éditer la photo"
-
-#: ../../mod/photos.php:948
-msgid "Rotate CW (right)"
-msgstr "Rotation horaire (droite)"
+#: ../../mod/lockview.php:37
+msgid "Remote privacy information not available."
+msgstr "Les informations de vie privée à distance ne sont pas disponibles."
-#: ../../mod/photos.php:949
-msgid "Rotate CCW (left)"
-msgstr "Rotation anti-horaire (gauche)"
+#: ../../mod/lockview.php:58
+msgid "Visible to:"
+msgstr "Visible par&nbsp;:"
-#: ../../mod/photos.php:952
-msgid "New album name"
-msgstr "Nouveau nom d'album&nbsp;:"
+#: ../../mod/locs.php:21 ../../mod/locs.php:52
+msgid "Location not found."
+msgstr "Emplacement introuvable."
-#: ../../mod/photos.php:955
-msgid "Caption"
-msgstr "Titre/légende"
+#: ../../mod/locs.php:56
+msgid "Primary location cannot be removed."
+msgstr ""
-#: ../../mod/photos.php:957
-msgid "Add a Tag"
-msgstr "Ajouter une étiquette"
+#: ../../mod/locs.php:88
+msgid "No locations found."
+msgstr "Emplacement(s) introuvable."
-#: ../../mod/photos.php:960
-msgid ""
-"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-msgstr "Exemple&nbsp;: @bob, @Barbara_Jensen, @jim@exemple.com, #Ile_de_France, #marathon"
+#: ../../mod/locs.php:101
+msgid "Manage Channel Locations"
+msgstr "Gérer les emplacements des canaux"
-#: ../../mod/photos.php:1113
-msgid "In This Photo:"
-msgstr "Dans cette photo&nbsp;:"
+#: ../../mod/locs.php:102
+msgid "Location (address)"
+msgstr "Emplacement (adresse)"
-#: ../../mod/photos.php:1188
-msgid "View Album"
-msgstr "Voir l'album"
+#: ../../mod/locs.php:103
+msgid "Primary Location"
+msgstr "Emplacement primaire"
-#: ../../mod/photos.php:1197
-msgid "Recent Photos"
-msgstr "Photos récentes"
+#: ../../mod/locs.php:104
+msgid "Drop location"
+msgstr "Abandonner l'emplacement"
#: ../../mod/sources.php:32
msgid "Failed to create source. No channel selected."
@@ -6107,7 +8217,7 @@ msgid "Leave blank to import all public content"
msgstr "Laissez en blanc pour importer tout le contenu public"
#: ../../mod/sources.php:103 ../../mod/sources.php:137
-#: ../../mod/new_channel.php:110
+#: ../../mod/new_channel.php:112
msgid "Channel Name"
msgstr "Nom du Canal"
@@ -6131,1606 +8241,634 @@ msgstr "Source supprimée"
msgid "Unable to remove source."
msgstr "Impossible de supprimer la source."
-#: ../../mod/filer.php:49
-msgid "- select -"
-msgstr "- choisir -"
-
-#: ../../mod/events.php:72
-msgid "Event title and start time are required."
-msgstr "Un titre et une date de début sont requises pour l'événement."
-
-#: ../../mod/events.php:86
-msgid "Event not found."
-msgstr "Événement introuvable."
-
-#: ../../mod/events.php:329
-msgid "l, F j"
-msgstr "l j F"
-
-#: ../../mod/events.php:351
-msgid "Edit event"
-msgstr "Éditer l'événement"
-
-#: ../../mod/events.php:397
-msgid "Create New Event"
-msgstr "Créer événement"
-
-#: ../../mod/events.php:398
-msgid "Previous"
-msgstr "Précédent"
-
-#: ../../mod/events.php:469
-msgid "hour:minute"
-msgstr "heure:minute"
-
-#: ../../mod/events.php:489
-msgid "Event details"
-msgstr "Détails de l'événement"
-
-#: ../../mod/events.php:490
-#, php-format
-msgid "Format is %s %s. Starting date and Title are required."
-msgstr "Le format est %s %s. Date de début et titre obligatoires."
-
-#: ../../mod/events.php:492
-msgid "Event Starts:"
-msgstr "L'événement débute&nbsp;:"
-
-#: ../../mod/events.php:492 ../../mod/events.php:506 ../../mod/appman.php:91
-#: ../../mod/appman.php:92
-msgid "Required"
-msgstr "Requis"
-
-#: ../../mod/events.php:495
-msgid "Finish date/time is not known or not relevant"
-msgstr "Date/heure de fin inconnue ou sans objet"
-
-#: ../../mod/events.php:497
-msgid "Event Finishes:"
-msgstr "L'événement termine&nbsp;:"
-
-#: ../../mod/events.php:500
-msgid "Adjust for viewer timezone"
-msgstr "Ajuster au fuseau horaire du visiteur"
-
-#: ../../mod/events.php:502
-msgid "Description:"
-msgstr "Description:"
-
-#: ../../mod/events.php:506
-msgid "Title:"
-msgstr "Titre:"
-
-#: ../../mod/events.php:508
-msgid "Share this event"
-msgstr "Partager cet événement"
-
-#: ../../mod/filestorage.php:68
-msgid "Permission Denied."
-msgstr "Permission refusée."
-
-#: ../../mod/filestorage.php:85
-msgid "File not found."
-msgstr "Fichier introuvable."
-
-#: ../../mod/filestorage.php:122
-msgid "Edit file permissions"
-msgstr "Éditer les permissions du fichier"
-
-#: ../../mod/filestorage.php:131
-msgid "Set/edit permissions"
-msgstr "Définir/Édition des authorisations"
-
-#: ../../mod/filestorage.php:132
-msgid "Include all files and sub folders"
-msgstr "Inclure tous fichiers et sous-répertoires"
-
-#: ../../mod/filestorage.php:133
-msgid "Return to file list"
-msgstr "Retourner à la liste des fichiers"
-
-#: ../../mod/filestorage.php:135
-msgid "Copy/paste this code to attach file to a post"
-msgstr "Copiez/collez ce code pour joindre le fichier à une publication"
-
-#: ../../mod/filestorage.php:136
-msgid "Copy/paste this URL to link file from a web page"
-msgstr "Copiez/collez cette URL pour lier le fichier depuis une page web"
+#: ../../mod/lostpass.php:15
+msgid "No valid account found."
+msgstr "Aucun compte valide trouvé."
-#: ../../mod/follow.php:25
-msgid "Channel added."
-msgstr "Canal ajouté."
+#: ../../mod/lostpass.php:29
+msgid "Password reset request issued. Check your email."
+msgstr "Réinitialisation du mot de passe demandée. Vérifiez vos courriels."
-#: ../../mod/subthread.php:103
+#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:103
#, php-format
-msgid "%1$s is following %2$s's %3$s"
-msgstr "%1$s suit %3$s de %2$s"
-
-#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
-msgid "Contact not found."
-msgstr "Contact introuvable."
-
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
-msgstr "Suggestion d'amitié/relation envoyée."
-
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
-msgstr "Suggérer une relation"
+msgid "Site Member (%s)"
+msgstr "Membre du site (%s)"
-#: ../../mod/fsuggest.php:99
+#: ../../mod/lostpass.php:40
#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Suggérer une relation à %s"
+msgid "Password reset requested at %s"
+msgstr "Demande de réinitialisation du mot de passe sur %s"
-#: ../../mod/suggest.php:35
+#: ../../mod/lostpass.php:63
msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
-msgstr "Pas de suggestions pour l'instant. Si le site est récent, merci de re-tenter dans 24 heures."
-
-#: ../../mod/group.php:20
-msgid "Collection created."
-msgstr "Collection créée."
-
-#: ../../mod/group.php:26
-msgid "Could not create collection."
-msgstr "Impossible de créer la collection."
-
-#: ../../mod/group.php:54
-msgid "Collection updated."
-msgstr "Collection mise à jour."
-
-#: ../../mod/group.php:86
-msgid "Create a collection of channels."
-msgstr "Créez une collection de canaux."
-
-#: ../../mod/group.php:87 ../../mod/group.php:183
-msgid "Collection Name: "
-msgstr "Nom de la collection&nbsp;:"
-
-#: ../../mod/group.php:89 ../../mod/group.php:186
-msgid "Members are visible to other channels"
-msgstr "Les membres sont visibles par les autres canaux"
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "La demande n'a pas pu être vérifiée. (Peut-être l'avez vous déjà utilisée.) La réinitialisation a échoué."
-#: ../../mod/group.php:107
-msgid "Collection removed."
-msgstr "Collection supprimée."
+#: ../../mod/lostpass.php:86 ../../boot.php:1559
+msgid "Password Reset"
+msgstr "Réinitialiser le mot de passe"
-#: ../../mod/group.php:109
-msgid "Unable to remove collection."
-msgstr "Impossible de supprimer la collection."
+#: ../../mod/lostpass.php:87
+msgid "Your password has been reset as requested."
+msgstr "Votre mot de passe a bien été réinitialisé."
-#: ../../mod/group.php:182
-msgid "Collection Editor"
-msgstr "Éditeur de collection"
+#: ../../mod/lostpass.php:88
+msgid "Your new password is"
+msgstr "Votre nouveau mot de passe est"
-#: ../../mod/group.php:196
-msgid "Members"
-msgstr "Membres"
+#: ../../mod/lostpass.php:89
+msgid "Save or copy your new password - and then"
+msgstr "Sauvez-le ou copiez-le, puis"
-#: ../../mod/group.php:198
-msgid "All Connected Channels"
-msgstr "Tous canaux connectés"
+#: ../../mod/lostpass.php:90
+msgid "click here to login"
+msgstr "cliquez ici pour vous connecter"
-#: ../../mod/group.php:233
-msgid "Click on a channel to add or remove."
-msgstr "Cliquer sur un canal pour l'ajouter ou le supprimer"
+#: ../../mod/lostpass.php:91
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Votre mot de passe peut être changé depuis la page des <em>Réglages</em> une fois connecté."
-#: ../../mod/tagger.php:98
+#: ../../mod/lostpass.php:108
#, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
-msgstr "%1$s a étiqueté le %3$s de %2$s par %4$s"
-
-#: ../../mod/help.php:43 ../../mod/help.php:49 ../../mod/help.php:55
-msgid "Help:"
-msgstr "Aide&nbsp;:"
-
-#: ../../mod/help.php:69 ../../index.php:233
-msgid "Not Found"
-msgstr "Introuvable"
-
-#: ../../mod/tagrm.php:41
-msgid "Tag removed"
-msgstr "Étiquette retirée"
-
-#: ../../mod/tagrm.php:79
-msgid "Remove Item Tag"
-msgstr "Retirer une étiquette à l'élément"
-
-#: ../../mod/tagrm.php:81
-msgid "Select a tag to remove: "
-msgstr "Étiquette à retirer&nbsp;:"
-
-#: ../../mod/admin.php:52
-msgid "Theme settings updated."
-msgstr "Réglages du thème sauvegardés."
-
-#: ../../mod/admin.php:97 ../../mod/admin.php:450
-msgid "Site"
-msgstr "Site"
-
-#: ../../mod/admin.php:98
-msgid "Accounts"
-msgstr "Comptes"
-
-#: ../../mod/admin.php:99 ../../mod/admin.php:894
-msgid "Channels"
-msgstr "Canaux"
-
-#: ../../mod/admin.php:100 ../../mod/admin.php:985 ../../mod/admin.php:1027
-msgid "Plugins"
-msgstr "Extensions"
-
-#: ../../mod/admin.php:101 ../../mod/admin.php:1190 ../../mod/admin.php:1226
-msgid "Themes"
-msgstr "Thèmes"
-
-#: ../../mod/admin.php:102 ../../mod/admin.php:550
-msgid "Server"
-msgstr "Serveur"
-
-#: ../../mod/admin.php:103
-msgid "Profile Config"
-msgstr "Configurations du profil"
-
-#: ../../mod/admin.php:104
-msgid "DB updates"
-msgstr "MàJ BD"
-
-#: ../../mod/admin.php:118 ../../mod/admin.php:125 ../../mod/admin.php:1313
-msgid "Logs"
-msgstr "Journaux"
-
-#: ../../mod/admin.php:124
-msgid "Plugin Features"
-msgstr "Fonctionnalités liées aux extensions"
-
-#: ../../mod/admin.php:126
-msgid "User registrations waiting for confirmation"
-msgstr "Inscriptions en attente"
-
-#: ../../mod/admin.php:206
-msgid "Message queues"
-msgstr "File des messages"
-
-#: ../../mod/admin.php:211 ../../mod/admin.php:449 ../../mod/admin.php:549
-#: ../../mod/admin.php:758 ../../mod/admin.php:893 ../../mod/admin.php:984
-#: ../../mod/admin.php:1026 ../../mod/admin.php:1189 ../../mod/admin.php:1225
-#: ../../mod/admin.php:1312
-msgid "Administration"
-msgstr "Administration"
-
-#: ../../mod/admin.php:212
-msgid "Summary"
-msgstr "Résumé"
-
-#: ../../mod/admin.php:214
-msgid "Registered users"
-msgstr "Utilisateurs inscrits"
-
-#: ../../mod/admin.php:216 ../../mod/admin.php:553
-msgid "Pending registrations"
-msgstr "Inscriptions en attente"
-
-#: ../../mod/admin.php:217
-msgid "Version"
-msgstr "Version"
-
-#: ../../mod/admin.php:219 ../../mod/admin.php:554
-msgid "Active plugins"
-msgstr "Extensions actives"
-
-#: ../../mod/admin.php:370
-msgid "Site settings updated."
-msgstr "Réglages du site sauvegardés."
-
-#: ../../mod/admin.php:401
-msgid "No special theme for accessibility"
-msgstr "Pas de thème spécifique pour l'accessibilité"
-
-#: ../../mod/admin.php:430
-msgid "Yes - with approval"
-msgstr "Oui - avec approbation"
-
-#: ../../mod/admin.php:436
-msgid "My site is not a public server"
-msgstr "Mon site n'est pas un serveur publique"
-
-#: ../../mod/admin.php:437
-msgid "My site has paid access only"
-msgstr "Mon site est payant"
-
-#: ../../mod/admin.php:438
-msgid "My site has free access only"
-msgstr "Mon site est gratuit"
-
-#: ../../mod/admin.php:439
-msgid "My site offers free accounts with optional paid upgrades"
-msgstr "Mon site offre des comptes gratuits avec des ajouts payants"
-
-#: ../../mod/admin.php:453
-msgid "File upload"
-msgstr "Envoi de fichier"
-
-#: ../../mod/admin.php:454
-msgid "Policies"
-msgstr "Stratégies"
-
-#: ../../mod/admin.php:459
-msgid "Site name"
-msgstr "Nom du site"
-
-#: ../../mod/admin.php:460
-msgid "Banner/Logo"
-msgstr "Bannière/logo"
+msgid "Your password has changed at %s"
+msgstr "Votre mot de passe de %s a été changé"
-#: ../../mod/admin.php:461
-msgid "Administrator Information"
-msgstr "Informations sur l'administrateur"
+#: ../../mod/lostpass.php:123
+msgid "Forgot your Password?"
+msgstr "Mot de passe oublié?"
-#: ../../mod/admin.php:461
+#: ../../mod/lostpass.php:124
msgid ""
-"Contact information for site administrators. Displayed on siteinfo page. "
-"BBCode can be used here"
-msgstr "Coordonnées de l'administrateur du site. Affichée sur la page 'siteinfo'. Vous pouvez utiliser du BBCode ici"
-
-#: ../../mod/admin.php:462
-msgid "System language"
-msgstr "Langue du système"
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Saisissez votre adresse de courriel, et validez, pour réinitialiser votre mot de passe. Vérifiez ensuite votre boîte à lettres pour la suite des instructions."
-#: ../../mod/admin.php:463
-msgid "System theme"
-msgstr "Thème du système"
+#: ../../mod/lostpass.php:125
+msgid "Email Address"
+msgstr "Adresse de courriel"
-#: ../../mod/admin.php:463
-msgid ""
-"Default system theme - may be over-ridden by user profiles - <a href='#' "
-"id='cnftheme'>change theme settings</a>"
-msgstr "Thème par défaut - il peut être changé pour chaque profil utilisateur - <a href='#' id='cnftheme'>modifier le thème</a>"
+#: ../../mod/lostpass.php:126
+msgid "Reset"
+msgstr "Réinitialiser"
-#: ../../mod/admin.php:464
-msgid "Mobile system theme"
-msgstr "Thème système pour mobile"
+#: ../../mod/menu.php:45
+msgid "Unable to update menu."
+msgstr "Impossible de mettre le menu à jour."
-#: ../../mod/admin.php:464
-msgid "Theme for mobile devices"
-msgstr "Thème dédié aux périphériques mobiles"
+#: ../../mod/menu.php:56
+msgid "Unable to create menu."
+msgstr "Impossible de créer le menu."
-#: ../../mod/admin.php:465
-msgid "Accessibility system theme"
-msgstr "Thème système pour l'accessibilité"
+#: ../../mod/menu.php:92 ../../mod/menu.php:104
+msgid "Menu Name"
+msgstr "Nom du menu"
-#: ../../mod/admin.php:465
-msgid "Accessibility theme"
-msgstr "Thème pour l'accessibilité"
+#: ../../mod/menu.php:92
+msgid "Unique name (not visible on webpage) - required"
+msgstr "Nom unique (non visible sur la page web) - requis"
-#: ../../mod/admin.php:466
-msgid "Channel to use for this website's static pages"
-msgstr "Canal à utiliser pour les pages statiques de ce site"
+#: ../../mod/menu.php:93 ../../mod/menu.php:105
+msgid "Menu Title"
+msgstr "Titre du menu"
-#: ../../mod/admin.php:466
-msgid "Site Channel"
-msgstr "Canal de ce HUB"
+#: ../../mod/menu.php:93
+msgid "Visible on webpage - leave empty for no title"
+msgstr "Visible pour la page web - laisser vide pour qu'il n'y ait pas de titre"
-#: ../../mod/admin.php:468
-msgid "Maximum image size"
-msgstr "Taille maximale des images"
+#: ../../mod/menu.php:94
+msgid "Allow Bookmarks"
+msgstr "Autoriser l'usage de favoris"
-#: ../../mod/admin.php:468
-msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
-msgstr "Taille maximum, en octets, des images envoyées. Par défaut 0, soit sans limite."
+#: ../../mod/menu.php:94 ../../mod/menu.php:151
+msgid "Menu may be used to store saved bookmarks"
+msgstr "Le menu pourra être utilisé pour stocker des favoris"
-#: ../../mod/admin.php:469
-msgid "Does this site allow new member registration?"
-msgstr "Est-ce que l'enregistrement de nouveau membres sur ce site est autorisé?"
+#: ../../mod/menu.php:95 ../../mod/menu.php:153
+msgid "Submit and proceed"
+msgstr "Valider et continuer"
-#: ../../mod/admin.php:470
-msgid "Which best describes the types of account offered by this hub?"
-msgstr "Choisissez le type de comptes offert sur ce hub?"
+#: ../../mod/menu.php:107
+msgid "Drop"
+msgstr "Supprimer"
-#: ../../mod/admin.php:471
-msgid "Register text"
-msgstr "Texte d'inscription"
+#: ../../mod/menu.php:111
+msgid "Bookmarks allowed"
+msgstr "Favoris autorisés"
-#: ../../mod/admin.php:471
-msgid "Will be displayed prominently on the registration page."
-msgstr "Sera affiché de manière bien visible sur le formulaire d'inscription."
+#: ../../mod/menu.php:113
+msgid "Delete this menu"
+msgstr "Supprimer ce menu"
-#: ../../mod/admin.php:472
-msgid "Accounts abandoned after x days"
-msgstr "Les comptes sont abandonnés après x jours"
+#: ../../mod/menu.php:114 ../../mod/menu.php:148
+msgid "Edit menu contents"
+msgstr "Éditer le contenu du menu"
-#: ../../mod/admin.php:472
-msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
-msgstr "Pour éviter de gaspiller les ressources du système en essayer de mettre à jour des comptes abandonnés. Mettez 0 pour ne pas avoir de limite de temps."
+#: ../../mod/menu.php:115
+msgid "Edit this menu"
+msgstr "Éditer le menu"
-#: ../../mod/admin.php:473
-msgid "Allowed friend domains"
-msgstr "Domaines amicaux"
+#: ../../mod/menu.php:130
+msgid "Menu could not be deleted."
+msgstr "Impossible de supprimer le menu."
-#: ../../mod/admin.php:473
-msgid ""
-"Comma separated list of domains which are allowed to establish friendships "
-"with this site. Wildcards are accepted. Empty to allow any domains"
-msgstr "Liste de noms de domaines - séparés par des virgules - pour lesquels ce site acceptera les demandes d'amitié ou de mise en relation. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines."
+#: ../../mod/menu.php:138 ../../mod/mitem.php:24
+msgid "Menu not found."
+msgstr "Menu introuvable."
-#: ../../mod/admin.php:474
-msgid "Allowed email domains"
-msgstr "Domaines de courriels amicaux"
+#: ../../mod/menu.php:143
+msgid "Edit Menu"
+msgstr "Éditer le menu"
-#: ../../mod/admin.php:474
-msgid ""
-"Comma separated list of domains which are allowed in email addresses for "
-"registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains"
-msgstr "Liste de noms de domaines - séparés par des virgules - dont les adresses de courriel seront autorisées lors de l'inscription à ce site. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines."
+#: ../../mod/menu.php:147
+msgid "Add or remove entries to this menu"
+msgstr "Ajouter/supprimer des entrées à ce menu"
-#: ../../mod/admin.php:475
-msgid "Block public"
-msgstr "Bloquer public"
+#: ../../mod/menu.php:149
+msgid "Menu name"
+msgstr "Nom du menu"
-#: ../../mod/admin.php:475
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently logged in."
-msgstr "Cocher pour interdire tout accès public, y compris aux pages marquées comme publiques, aux visiteurs anonymes."
+#: ../../mod/menu.php:149
+msgid "Must be unique, only seen by you"
+msgstr "Doit être unique, ne sera vu que par vous"
-#: ../../mod/admin.php:476
-msgid "Force publish"
-msgstr "Forcer publication"
+#: ../../mod/menu.php:150
+msgid "Menu title"
+msgstr "Titre du menu"
-#: ../../mod/admin.php:476
-msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
-msgstr "Cocher pour forcer la publication de tous les profils du site dans l'annuaire."
+#: ../../mod/menu.php:150
+msgid "Menu title as seen by others"
+msgstr "Titre du menu tel que vu par les visiteurs"
-#: ../../mod/admin.php:477
-msgid "Disable discovery tab"
-msgstr "Désactiver l'onglet \"À découvrir\""
+#: ../../mod/menu.php:151
+msgid "Allow bookmarks"
+msgstr "Autoriser l'usage de favoris"
-#: ../../mod/admin.php:477
-msgid ""
-"Remove the tab in the network view with public content pulled from sources "
-"chosen for this site."
-msgstr "Ne pas afficher d'onglet avec des contenus publics automatiquement rassemblées depuis des sources choisies pour ce site."
+#: ../../mod/menu.php:160 ../../mod/mitem.php:116 ../../mod/xchan.php:37
+msgid "Not found."
+msgstr "Introuvable."
-#: ../../mod/admin.php:478
-msgid "No login on Homepage"
-msgstr "Pas de connexion depuis la page d'accueil"
+#: ../../mod/message.php:41
+msgid "Conversation removed."
+msgstr "Conversation supprimée."
-#: ../../mod/admin.php:478
-msgid ""
-"Check to hide the login form from your sites homepage when visitors arrive "
-"who are not logged in (e.g. when you put the content of the homepage in via "
-"the site channel)."
-msgstr "Cocher pour ne pas montrer le formulaire de connexion sur la page d'accueil (typiquement, pour quand vous utilisez la page d'accueil pour afficher du contenu via le canal du site)."
+#: ../../mod/message.php:56
+msgid "No messages."
+msgstr "Pas de message."
-#: ../../mod/admin.php:480
-msgid "Proxy user"
-msgstr "Utilisateurs du proxy"
+#: ../../mod/message.php:74
+msgid "D, d M Y - g:i A"
+msgstr "D d Y - H:i"
-#: ../../mod/admin.php:481
-msgid "Proxy URL"
-msgstr "URL du proxy (visiter @proxy-list)"
+#: ../../mod/mitem.php:48
+msgid "Unable to create element."
+msgstr "Impossible de créer l'entrée."
-#: ../../mod/admin.php:482
-msgid "Network timeout"
-msgstr "Délai maximal du réseau"
+#: ../../mod/mitem.php:72
+msgid "Unable to update menu element."
+msgstr "Impossible de mettre l'entrée de menu à jour."
-#: ../../mod/admin.php:482
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
-msgstr "En secondes. Mettre à 0 pour ne pas avoir de délai maximal (pas recommandé)."
+#: ../../mod/mitem.php:88
+msgid "Unable to add menu element."
+msgstr "Impossible d'ajouter l'entrée de menu."
-#: ../../mod/admin.php:483
-msgid "Delivery interval"
-msgstr "Intervalle de distribution"
+#: ../../mod/mitem.php:154 ../../mod/mitem.php:226
+msgid "Menu Item Permissions"
+msgstr "Permissions de l'entrée de menu"
-#: ../../mod/admin.php:483
-msgid ""
-"Delay background delivery processes by this many seconds to reduce system "
-"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
-"for large dedicated servers."
-msgstr "Temporise le processus de distribution de tant de secondes pour réduire la charge sur le système. Valeurs recommandées&nbsp;: 4-5 pour les serveurs mutualisés, 2-3 pour les VPS. 0-1 pour les gros serveurs dédiés."
+#: ../../mod/mitem.php:157 ../../mod/mitem.php:173
+msgid "Link Name"
+msgstr "Nom du lien"
-#: ../../mod/admin.php:484
-msgid "Poll interval"
-msgstr "Intervalle de scrutation"
+#: ../../mod/mitem.php:158 ../../mod/mitem.php:231
+msgid "Link or Submenu Target"
+msgstr "Lien ou sous-menu cible"
-#: ../../mod/admin.php:484
-msgid ""
-"Delay background polling processes by this many seconds to reduce system "
-"load. If 0, use delivery interval."
-msgstr "Temporise le processus de scrutation en tâche de fond de tant de secondes, pour réduire la charge. Si 0, utilise l'intervalle de distribution."
+#: ../../mod/mitem.php:158
+msgid "Enter URL of the link or select a menu name to create a submenu"
+msgstr "Entrez l'URL du lien ou sélectionnez un nom de menu pour créer un sous-menu"
-#: ../../mod/admin.php:485
-msgid "Maximum Load Average"
-msgstr "Charge moyenne maximale"
+#: ../../mod/mitem.php:159 ../../mod/mitem.php:232
+msgid "Use magic-auth if available"
+msgstr "Utiliser l'authentification distante, quand disponible"
-#: ../../mod/admin.php:485
-msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
-msgstr "Charge système maximale au-delà de laquelle distribution et scrutation sont mis en pause - par défaut 50."
+#: ../../mod/mitem.php:160 ../../mod/mitem.php:233
+msgid "Open link in new window"
+msgstr "Ouvrir le lien dans une nouvelle fenêtre"
-#: ../../mod/admin.php:541
-msgid "No server found"
-msgstr "Serveur introuvable"
+#: ../../mod/mitem.php:161 ../../mod/mitem.php:234
+msgid "Order in list"
+msgstr "Ordre dans la liste"
-#: ../../mod/admin.php:548 ../../mod/admin.php:772
-msgid "ID"
-msgstr "ID"
+#: ../../mod/mitem.php:161 ../../mod/mitem.php:234
+msgid "Higher numbers will sink to bottom of listing"
+msgstr "Les nombres les plus élevés seront descendus au bas de la liste"
-#: ../../mod/admin.php:548
-msgid "for channel"
-msgstr "pour le canal"
+#: ../../mod/mitem.php:162
+msgid "Submit and finish"
+msgstr "Vadiler et terminer"
-#: ../../mod/admin.php:548
-msgid "on server"
-msgstr "sur le serveur"
+#: ../../mod/mitem.php:163
+msgid "Submit and continue"
+msgstr "Valider et continuer"
-#: ../../mod/admin.php:548
-msgid "Status"
-msgstr "État"
+#: ../../mod/mitem.php:171
+msgid "Menu:"
+msgstr "Menu&nbsp;:"
-#: ../../mod/admin.php:569
-msgid "Update has been marked successful"
-msgstr "La mise à jour a été marquée comme réussie"
+#: ../../mod/mitem.php:174
+msgid "Link Target"
+msgstr "Cible du lien"
-#: ../../mod/admin.php:579
-#, php-format
-msgid "Executing %s failed. Check system logs."
-msgstr "L'éxecution de %s a échoué. Merci de vérifier les journaux du système."
+#: ../../mod/mitem.php:177
+msgid "Edit menu"
+msgstr "Éditer le menu"
-#: ../../mod/admin.php:582
-#, php-format
-msgid "Update %s was successfully applied."
-msgstr "La mise à jour %s a été appliquée avec succès."
+#: ../../mod/mitem.php:180
+msgid "Edit element"
+msgstr "Éditer l'entrée"
-#: ../../mod/admin.php:586
-#, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
-msgstr "La mise à jour %s n'a pas retourné d'information. Impossible de savoir si elle a réussi ou non."
+#: ../../mod/mitem.php:181
+msgid "Drop element"
+msgstr "Supprimer l'entrée"
-#: ../../mod/admin.php:589
-#, php-format
-msgid "Update function %s could not be found."
-msgstr "La fonction de mise à jour %s est introuvable."
+#: ../../mod/mitem.php:182
+msgid "New element"
+msgstr "Nouvelle entrée"
-#: ../../mod/admin.php:604
-msgid "No failed updates."
-msgstr "Aucune mise à jour défaillante."
+#: ../../mod/mitem.php:183
+msgid "Edit this menu container"
+msgstr "Éditer ce bloc de menu"
-#: ../../mod/admin.php:608
-msgid "Failed Updates"
-msgstr "Mises à jour défaillantes"
+#: ../../mod/mitem.php:184
+msgid "Add menu element"
+msgstr "Ajouter une entrée au menu"
-#: ../../mod/admin.php:610
-msgid "Mark success (if update was manually applied)"
-msgstr "Marquer comme réussie (si la mise à jour a été réalisée manuellement)"
+#: ../../mod/mitem.php:185
+msgid "Delete this menu item"
+msgstr "Supprimer cet entrée du menu"
-#: ../../mod/admin.php:611
-msgid "Attempt to execute this update step automatically"
-msgstr "Tenter de réaliser cette étape de mise à jour automatiquement"
+#: ../../mod/mitem.php:186
+msgid "Edit this menu item"
+msgstr "Éditer cette entrée du menu"
-#: ../../mod/admin.php:637
-#, php-format
-msgid "%s user blocked/unblocked"
-msgid_plural "%s users blocked/unblocked"
-msgstr[0] "%s utilisateur bloqué/débloqué"
-msgstr[1] "%s utilisateurs bloqués/débloqués"
+#: ../../mod/mitem.php:203
+msgid "Menu item not found."
+msgstr "Entrée de menu introuvable."
-#: ../../mod/admin.php:644
-#, php-format
-msgid "%s user deleted"
-msgid_plural "%s users deleted"
-msgstr[0] "%s utilisateur supprimé"
-msgstr[1] "%s utilisateurs supprimés"
+#: ../../mod/mitem.php:215
+msgid "Menu item deleted."
+msgstr "Entrée de menu supprimée."
-#: ../../mod/admin.php:675
-msgid "Account not found"
-msgstr "Compte introuvable"
+#: ../../mod/mitem.php:217
+msgid "Menu item could not be deleted."
+msgstr "Impossible de supprimer l'entrée de menu."
-#: ../../mod/admin.php:686
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Utilisateur '%s' supprimé"
+#: ../../mod/mitem.php:224
+msgid "Edit Menu Element"
+msgstr "Éditer l'entrée de menu"
-#: ../../mod/admin.php:695
-#, php-format
-msgid "User '%s' unblocked"
-msgstr "Utilisateur '%s' débloqué"
+#: ../../mod/mitem.php:230
+msgid "Link text"
+msgstr "Texte du lien"
-#: ../../mod/admin.php:695
+#: ../../mod/subthread.php:103
#, php-format
-msgid "User '%s' blocked"
-msgstr "Utilisateur '%s' bloqué"
-
-#: ../../mod/admin.php:759 ../../mod/admin.php:771
-msgid "Users"
-msgstr "Utilisateurs"
-
-#: ../../mod/admin.php:761 ../../mod/admin.php:896
-msgid "select all"
-msgstr "tout sélectionner"
-
-#: ../../mod/admin.php:762
-msgid "User registrations waiting for confirm"
-msgstr "Inscriptions en attente d'approbation"
-
-#: ../../mod/admin.php:763
-msgid "Request date"
-msgstr "Date de la demande"
-
-#: ../../mod/admin.php:764
-msgid "No registrations."
-msgstr "Pas d'inscriptions."
-
-#: ../../mod/admin.php:765
-msgid "Approve"
-msgstr "Approuver"
-
-#: ../../mod/admin.php:766
-msgid "Deny"
-msgstr "Refuser"
-
-#: ../../mod/admin.php:772
-msgid "Register date"
-msgstr "Date d'inscription"
-
-#: ../../mod/admin.php:772
-msgid "Last login"
-msgstr "Dernière connexion"
-
-#: ../../mod/admin.php:772
-msgid "Expires"
-msgstr "Expire"
-
-#: ../../mod/admin.php:772
-msgid "Service Class"
-msgstr "Classe de service"
+msgid "%1$s is following %2$s's %3$s"
+msgstr "%1$s suit %3$s de %2$s"
-#: ../../mod/admin.php:774
-msgid ""
-"Selected users will be deleted!\\n\\nEverything these users had posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Les utilisateurs sélectionnés seront supprimés!\\n\\nTout ce que ces utilisateurs ont publié sur ce site sera détruit de manière définitive!\\n\\nÊtes-vous certain?"
+#: ../../mod/mood.php:131
+msgid "Set your current mood and tell your friends"
+msgstr "Indiquez votre humeur du moment à vos amis"
-#: ../../mod/admin.php:775
+#: ../../mod/suggest.php:35
msgid ""
-"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
-"site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "L'utilisateur {0} sera supprimé!\\n\\nTout ce que cet utilisateur a publié sur ce site sera détruit de manière définitive!\\n\\nÊtes-vous certain?"
-
-#: ../../mod/admin.php:808
-#, php-format
-msgid "%s channel censored/uncensored"
-msgid_plural "%s channelss censored/uncensored"
-msgstr[0] "%s canal censuré/non-censuré"
-msgstr[1] "%s canaux censurés/non-censurés"
-
-#: ../../mod/admin.php:815
-#, php-format
-msgid "%s channel deleted"
-msgid_plural "%s channels deleted"
-msgstr[0] "%s canal supprimé"
-msgstr[1] "%s canaux supprimés"
-
-#: ../../mod/admin.php:834
-msgid "Channel not found"
-msgstr "Canal introuvable"
-
-#: ../../mod/admin.php:845
-#, php-format
-msgid "Channel '%s' deleted"
-msgstr "Canal '%s' supprimé"
-
-#: ../../mod/admin.php:855
-#, php-format
-msgid "Channel '%s' uncensored"
-msgstr "Canal '%s' non-censuré"
+"No suggestions available. If this is a new site, please try again in 24 "
+"hours."
+msgstr "Pas de suggestions pour l'instant. Si le site est récent, merci de re-tenter dans 24 heures."
-#: ../../mod/admin.php:855
+#: ../../mod/tagger.php:96
#, php-format
-msgid "Channel '%s' censored"
-msgstr "Canal '%s' censuré"
-
-#: ../../mod/admin.php:898
-msgid "Censor"
-msgstr "Censurer"
-
-#: ../../mod/admin.php:899
-msgid "Uncensor"
-msgstr "Ne plus censurer"
-
-#: ../../mod/admin.php:902
-msgid "UID"
-msgstr "UID"
+msgid "%1$s tagged %2$s's %3$s with %4$s"
+msgstr "%1$s a étiqueté le %3$s de %2$s par %4$s"
-#: ../../mod/admin.php:904
-msgid ""
-"Selected channels will be deleted!\\n\\nEverything that was posted in these "
-"channels on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Les canaux sélectionnés seront supprimés!\\n\\nTout ce qui a été publié dans ces canaux sur ce site sera définitivement supprimé!\\n\\nÊtes-vous certain?"
+#: ../../mod/tagrm.php:44 ../../mod/tagrm.php:94
+msgid "Tag removed"
+msgstr "Étiquette retirée"
-#: ../../mod/admin.php:905
-msgid ""
-"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
-"channel on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Le canal {0} sera supprimé!\\n\\nTout ce qui a été publié sur ce canal sera définitivement supprimé!\\n\\nÊtes-vous certain?"
+#: ../../mod/tagrm.php:119
+msgid "Remove Item Tag"
+msgstr "Retirer une étiquette à l'élément"
-#: ../../mod/admin.php:944
-#, php-format
-msgid "Plugin %s disabled."
-msgstr "Extension %s désactivée."
+#: ../../mod/tagrm.php:121
+msgid "Select a tag to remove: "
+msgstr "Étiquette à retirer&nbsp;:"
-#: ../../mod/admin.php:948
-#, php-format
-msgid "Plugin %s enabled."
-msgstr "Extension %s activée."
+#: ../../mod/network.php:91
+msgid "No such group"
+msgstr "Groupe introuvable"
-#: ../../mod/admin.php:958 ../../mod/admin.php:1160
-msgid "Disable"
-msgstr "Désactiver"
+#: ../../mod/network.php:129
+msgid "No such channel"
+msgstr "Canal introuvable"
-#: ../../mod/admin.php:960 ../../mod/admin.php:1162
-msgid "Enable"
-msgstr "Activer"
+#: ../../mod/network.php:143
+msgid "Search Results For:"
+msgstr "Résultats de recherche pour&nbsp;:"
-#: ../../mod/admin.php:986 ../../mod/admin.php:1191
-msgid "Toggle"
-msgstr "(Dés)activer"
+#: ../../mod/network.php:198
+msgid "Collection is empty"
+msgstr "Collection vide"
-#: ../../mod/admin.php:994 ../../mod/admin.php:1201
-msgid "Author: "
-msgstr "Auteur&nbsp;:"
+#: ../../mod/network.php:207
+msgid "Collection: "
+msgstr "Collection&nbsp;:"
-#: ../../mod/admin.php:995 ../../mod/admin.php:1202
-msgid "Maintainer: "
-msgstr "Maintenu par&nbsp;:"
+#: ../../mod/network.php:226
+msgid "Connection: "
+msgstr "Relation&nbsp;:"
-#: ../../mod/admin.php:1124
-msgid "No themes found."
-msgstr "Aucun thème trouvé."
+#: ../../mod/network.php:233
+msgid "Invalid connection."
+msgstr "Relation invalide."
-#: ../../mod/admin.php:1183
-msgid "Screenshot"
-msgstr "Aperçu"
+#: ../../mod/openid.php:26
+msgid "OpenID protocol error. No ID returned."
+msgstr "Erreur du protocole OpenID. Pas d'ID retourné."
-#: ../../mod/admin.php:1231
-msgid "[Experimental]"
-msgstr "[Expérimental]"
+#: ../../mod/new_channel.php:109
+msgid "Add a Channel"
+msgstr "Ajouter un canal"
-#: ../../mod/admin.php:1232
-msgid "[Unsupported]"
-msgstr "[Non-supporté]"
+#: ../../mod/new_channel.php:110
+msgid ""
+"A channel is your own collection of related web pages. A channel can be used"
+" to hold social network profiles, blogs, conversation groups and forums, "
+"celebrity pages, and much more. You may create as many channels as your "
+"service provider allows."
+msgstr "Un canal est une collection de pages web reliées entre elles, sous votre contrôle. Il peut contenir des profils de réseau social, des blogs, des groupes de conversation, des forums, des pages de célébrités, et bien plus encore. Vous pouvez créer autant de canaux que votre administrateur de hub vous y autorise."
-#: ../../mod/admin.php:1259
-msgid "Log settings updated."
-msgstr "Réglages du journal sauvegardés."
+#: ../../mod/new_channel.php:113
+msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "
+msgstr "Exemples&nbsp;: \"Bob Jameson\", \"Lisa et ses chevaux sauvages\", \"Football\", \"Groupe des amateurs de tir à l'arc\""
-#: ../../mod/admin.php:1315
-msgid "Clear"
-msgstr "Vider"
+#: ../../mod/new_channel.php:114
+msgid "Choose a short nickname"
+msgstr "Choisissez un alias"
-#: ../../mod/admin.php:1321
-msgid "Debugging"
-msgstr "Débogage"
+#: ../../mod/new_channel.php:115
+msgid ""
+"Your nickname will be used to create an easily remembered channel address "
+"(like an email address) which you can share with others."
+msgstr "Cet alias sera utilisé pour créer une adresse de canal, facile à retenir - un peu comme une adresse de courriel - que vous pourrez partager avec d'autres."
-#: ../../mod/admin.php:1322
-msgid "Log file"
-msgstr "Fichier du journal"
+#: ../../mod/new_channel.php:116
+msgid "Or <a href=\"import\">import an existing channel</a> from another location"
+msgstr "Ou <a href=\"import\">importez un canal existant</a> à un autre endroit"
-#: ../../mod/admin.php:1322
+#: ../../mod/new_channel.php:118
msgid ""
-"Must be writable by web server. Relative to your Red top-level directory."
-msgstr "Doit être accessible en écriture par le serveur web. Chemin relatif à la racine de votre installation de la Matrice Rouge."
+"Please choose a channel type (such as social networking or community forum) "
+"and privacy requirements so we can select the best permissions for you"
+msgstr "Veuillez choisir un type de canal (par exemple \"réseau social\" ou \"forum communautaire\") et un niveau de confidentialité afin que nous puissions choisir les meilleures autorisations pour vous"
-#: ../../mod/admin.php:1323
-msgid "Log level"
-msgstr "Niveau de journalisation"
+#: ../../mod/new_channel.php:119
+msgid "Channel Type"
+msgstr "Type de canal"
+
+#: ../../mod/new_channel.php:119
+msgid "Read more about roles"
+msgstr "En savoir plus sur les rôles"
-#: ../../mod/thing.php:98
+#: ../../mod/thing.php:94
msgid "Thing updated"
-msgstr "Chose mise à jour"
+msgstr "Chose mise-à-jour"
-#: ../../mod/thing.php:158
+#: ../../mod/thing.php:167
msgid "Object store: failed"
msgstr "Stockage de l'objet&nbsp;: échec"
-#: ../../mod/thing.php:162
+#: ../../mod/thing.php:171
msgid "Thing added"
msgstr "Chose ajoutée"
-#: ../../mod/thing.php:182
+#: ../../mod/thing.php:203
#, php-format
msgid "OBJ: %1$s %2$s %3$s"
msgstr "OBJ: %1$s %2$s %3$s"
-#: ../../mod/thing.php:234
+#: ../../mod/thing.php:254
msgid "Show Thing"
msgstr "Montrer chose"
-#: ../../mod/thing.php:241
+#: ../../mod/thing.php:261
msgid "item not found."
msgstr "élément introuvable."
-#: ../../mod/thing.php:272
+#: ../../mod/thing.php:289
msgid "Edit Thing"
msgstr "Éditer chose"
-#: ../../mod/thing.php:274 ../../mod/thing.php:321
+#: ../../mod/thing.php:291 ../../mod/thing.php:338
msgid "Select a profile"
msgstr "Choisissez un profil"
-#: ../../mod/thing.php:278 ../../mod/thing.php:324
+#: ../../mod/thing.php:295 ../../mod/thing.php:341
msgid "Post an activity"
msgstr "Publier une activité"
-#: ../../mod/thing.php:278 ../../mod/thing.php:324
+#: ../../mod/thing.php:295 ../../mod/thing.php:341
msgid "Only sends to viewers of the applicable profile"
msgstr "Envoi exclusivement au membres autorisé de ce profil"
-#: ../../mod/thing.php:280 ../../mod/thing.php:326
+#: ../../mod/thing.php:297 ../../mod/thing.php:343
msgid "Name of thing e.g. something"
msgstr "Nom de la chose, p.ex. quelque-chose"
-#: ../../mod/thing.php:282 ../../mod/thing.php:327
+#: ../../mod/thing.php:299 ../../mod/thing.php:344
msgid "URL of thing (optional)"
msgstr "URL de la chose (optionnel)"
-#: ../../mod/thing.php:284 ../../mod/thing.php:328
+#: ../../mod/thing.php:301 ../../mod/thing.php:345
msgid "URL for photo of thing (optional)"
msgstr "URL de l'image de la chose (optionnel)"
-#: ../../mod/thing.php:319
+#: ../../mod/thing.php:336
msgid "Add Thing to your Profile"
msgstr "Ajouter la chose à votre profil"
-#: ../../mod/import.php:36
-msgid "Nothing to import."
-msgstr "Rien à importer."
-
-#: ../../mod/import.php:58
-msgid "Unable to download data from old server"
-msgstr "Impossible de récupérer les données de l'ancien serveur"
-
-#: ../../mod/import.php:64
-msgid "Imported file is empty."
-msgstr "Le fichier importé est vide."
+#: ../../mod/uexport.php:50 ../../mod/uexport.php:51
+msgid "Export Channel"
+msgstr "Exporter le canal"
-#: ../../mod/import.php:88
+#: ../../mod/uexport.php:52
msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "Impossible de créer un doublon d'un identifiant de canal. L'import a échoué."
-
-#: ../../mod/import.php:106
-msgid "Channel clone failed. Import failed."
-msgstr "Le clonage du canal a échoué. L'import a échoué."
+"Export your basic channel information to a file. This acts as a backup of "
+"your connections, permissions, profile and basic data, which can be used to "
+"import your data to a new server hub, but does not contain your content."
+msgstr "Exportez les principales informations de votre canal dans un fichier. Celui-ci pourra servir de sauvegarde de vos contacts, permissions, profils et données de base. Il pourra être importé sur un nouveau hub/serveur, mais n'embarquera pas vos contenus."
-#: ../../mod/import.php:116
-msgid "Cloned channel not found. Import failed."
-msgstr "Le canal cloné n'a pas été trouvé. L'import a échoué."
-
-#: ../../mod/import.php:364
-msgid "Import completed."
-msgstr "L'import est terminé."
-
-#: ../../mod/import.php:377
-msgid "You must be logged in to use this feature."
-msgstr "Vous devez vous connecter pour utiliser cette fonctionnalité."
-
-#: ../../mod/import.php:382
-msgid "Import Channel"
-msgstr "Importation de canal"
+#: ../../mod/uexport.php:53
+msgid "Export Content"
+msgstr "Exporter le contenu"
-#: ../../mod/import.php:383
+#: ../../mod/uexport.php:54
msgid ""
-"Use this form to import an existing channel from a different server/hub. You"
-" may retrieve the channel identity from the old server/hub via the network "
-"or provide an export file. Only identity and connections/relationships will "
-"be imported. Importation of content is not yet available."
-msgstr "Utilisez ce formulaire pour importer un canal existant sur un serveur différent. Vous pouvez récupérer l'identité du canal sur l'ancien serveur directement par le réseau, ou bien fournir un fichier d'export. Seules les données d'identité et de relations seront importées. L'importation du contenu est toujours en développement."
-
-#: ../../mod/import.php:384
-msgid "File to Upload"
-msgstr "Fichier à envoyer"
-
-#: ../../mod/import.php:385
-msgid "Or provide the old server/hub details"
-msgstr "Ou fournissez les détails de l'ancien serveur"
-
-#: ../../mod/import.php:386
-msgid "Your old identity address (xyz@example.com)"
-msgstr "Votre ancienne identité (zyx@exemple.com)"
-
-#: ../../mod/import.php:387
-msgid "Your old login email address"
-msgstr "Votre ancienne adresse de courriel"
-
-#: ../../mod/import.php:388
-msgid "Your old login password"
-msgstr "Votre ancien mot de passe"
+"Export your channel information and recent content to a JSON backup that can"
+" be restored or imported to another server hub. This backs up all of your "
+"connections, permissions, profile data and several months of posts. This "
+"file may be VERY large. Please be patient - it may take several minutes for"
+" this download to begin."
+msgstr "Exportez les informations du canal et les contenus récents dans un fichier JSON. Celui-ci contiendra toutes vos relations, permissions, profils, et plusieurs mois de publications. Ce fichier peut être TRÈS gros. Armez-vous de patience - plusieurs minutes peuvent s'écouler avant que le téléchargement ne commence."
+
+#: ../../mod/uexport.php:55
+msgid "Export your posts from a given year or month:"
+msgstr ""
-#: ../../mod/import.php:389
+#: ../../mod/uexport.php:57
msgid ""
-"For either option, please choose whether to make this hub your new primary "
-"address, or whether your old location should continue this role. You will be"
-" able to post from either location, but only one can be marked as the "
-"primary location for files, photos, and media."
-msgstr "Quelle que soit l'option choisie, merci de décider si cette nouvelle adresse sera la primaire, ou si votre ancienne adresse continuera à jouer ce rôle. Vous pourrez publier depuis l'adresse de votre choix, mais une seule peut être déclarée comme stockage primaire de vos fichiers/photos/media."
-
-#: ../../mod/import.php:390
-msgid "Make this hub my primary location"
-msgstr "Faire de ce hub l'adresse principale de ce canal"
-
-#: ../../mod/invite.php:25
-msgid "Total invitation limit exceeded."
-msgstr "Limite du nombre total d'invitation dépassée."
-
-#: ../../mod/invite.php:49
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s&nbsp: adresse courriel invalide."
-
-#: ../../mod/invite.php:76
-msgid "Please join us on Red"
-msgstr "Rejoignez-nous sur la Matrice Rouge"
+"You may also export your posts and conversations for a particular year or "
+"month. Click on one of the recent years or months below."
+msgstr ""
-#: ../../mod/invite.php:87
-msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr "Limite d'invitations dépassée. Merci de contacter l'administration de votre site."
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Jan"
+msgstr "Jan"
-#: ../../mod/invite.php:92
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s&nbsp;: Échec dans la livraison du message."
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Feb"
+msgstr "Fev"
-#: ../../mod/invite.php:96
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d message envoyé."
-msgstr[1] "%d messages envoyés."
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Mar"
+msgstr "Mar"
-#: ../../mod/invite.php:115
-msgid "You have no more invitations available"
-msgstr "Vous ne disposez plus d'aucune invitation"
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Apr"
+msgstr "Avr"
-#: ../../mod/invite.php:129
-msgid "Send invitations"
-msgstr "Envoyer des invitations"
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Jun"
+msgstr "Jun"
-#: ../../mod/invite.php:130
-msgid "Enter email addresses, one per line:"
-msgstr "Entrez les adresses de courriel, une par ligne&nbsp;:"
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Jul"
+msgstr "Jul"
-#: ../../mod/invite.php:131 ../../mod/mail.php:225 ../../mod/mail.php:338
-msgid "Your message:"
-msgstr "Votre message&nbsp;:"
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Aug"
+msgstr "Aou"
-#: ../../mod/invite.php:132
-msgid "Please join my community on Hubzilla."
-msgstr "Veuillez me rejoindre sur la Matrice Rouge."
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Sep"
+msgstr "Sep"
-#: ../../mod/invite.php:134
-msgid "You will need to supply this invitation code: "
-msgstr "Vous aurez besoin de fournir le code suivant:"
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Oct"
+msgstr "Oct"
-#: ../../mod/invite.php:135
-msgid "1. Register at any Hubzilla location (they are all inter-connected)"
-msgstr "1. Enregistrez-vous sur n'importe quel serveurs ( ils sont tous inter-connectés )"
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Nov"
+msgstr "Nov"
-#: ../../mod/invite.php:137
-msgid "2. Enter my Hubzilla network address into the site searchbar."
-msgstr "2. Saisissez l'adresse de mon canal dans la barre de recherche du site."
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Dec"
+msgstr "Dec"
-#: ../../mod/invite.php:138
-msgid "or visit "
-msgstr "ou visitez"
-
-#: ../../mod/invite.php:140
-msgid "3. Click [Connect]"
-msgstr "3. Click sur [Ajouter]"
-
-#: ../../mod/item.php:146
-msgid "Unable to locate original post."
-msgstr "Impossible de localiser la publication initiale."
-
-#: ../../mod/item.php:379
-msgid "Empty post discarded."
-msgstr "Publication vide annulée."
+#: ../../mod/uexport.php:60
+msgid ""
+"If the export fails (possibly due to memory exhaustion on your server hub), "
+"please try again selecting a more limited date range."
+msgstr ""
-#: ../../mod/item.php:421
-msgid "Executable content type not permitted to this channel."
-msgstr "Les contenus de type 'exécutable' ne sont pas autorisés sur ce canal."
+#: ../../mod/uexport.php:61
+#, php-format
+msgid ""
+"Or adjust the date in your browser location bar to select other dates. For "
+"example the year 2013; <a href=\"%1$s/2013\">%1$s/2013</a> or the month "
+"September 2013; <a href=\"%1$s/2013/9\">%1$s/2013/9</a>"
+msgstr ""
-#: ../../mod/item.php:850
-msgid "System error. Post not saved."
-msgstr "Erreur système. Publication non sauvegardée."
+#: ../../mod/uexport.php:62
+msgid "Please visit"
+msgstr ""
-#: ../../mod/item.php:1302
-#, php-format
-msgid "You have reached your limit of %1$.0f top level posts."
-msgstr "Vous avez atteint votre limite de %1$.0f contributions \"racine\"."
+#: ../../mod/uexport.php:62
+msgid "on another hub to import the backup files(s)."
+msgstr ""
-#: ../../mod/item.php:1308
-#, php-format
-msgid "You have reached your limit of %1$.0f webpages."
-msgstr "Vous avez atteint votre limite de %1$.0f pages web."
+#: ../../mod/uexport.php:63
+msgid ""
+"We advise you to clone the channel on the new hub first and than to import "
+"the backup file(s) (from the same channel) in chronological order. Importing"
+" the backup files into another channel will certainly give permission "
+"issues."
+msgstr ""
#: ../../mod/update_channel.php:43 ../../mod/update_display.php:25
-#: ../../mod/update_network.php:23 ../../mod/update_search.php:46
+#: ../../mod/update_home.php:21 ../../mod/update_network.php:23
+#: ../../mod/update_public.php:21 ../../mod/update_search.php:46
msgid "[Embedded content - reload page to view]"
msgstr "[Contenu embarqué - rechargez la page pour le voir]"
-#: ../../mod/layouts.php:62
-msgid "Help with this feature"
-msgstr "Aide avec cette fonctionnalité"
-
-#: ../../mod/layouts.php:84
-msgid "Layout Name"
-msgstr "Nom de la mise-en-page"
-
-#: ../../mod/like.php:15
-msgid "Like/Dislike"
-msgstr "J'aime/Je Déteste"
-
-#: ../../mod/like.php:20
-msgid "This action is restricted to members."
-msgstr "Cette action est réservée aux membres."
-
-#: ../../mod/like.php:21
-msgid ""
-"Please <a href=\"rmagic\">login with your Hubzilla ID</a> or <a "
-"href=\"register\">register as a new Redmatrix.member</a> to continue."
-msgstr "SVP <a href=\"rmagic\">connectez-vous</a> ou <a href=\"register\">enregistrez-vous</a> pour continuer."
-
-#: ../../mod/like.php:77 ../../mod/like.php:104 ../../mod/like.php:142
-msgid "Invalid request."
-msgstr "Requête invalide."
-
-#: ../../mod/like.php:119
-msgid "thing"
-msgstr "chose"
-
-#: ../../mod/like.php:165
-msgid "Channel unavailable."
-msgstr "Canal indisponible."
-
-#: ../../mod/like.php:204
-msgid "Previous action reversed."
-msgstr "Action précédente annulée."
-
-#: ../../mod/like.php:417
-msgid "Action completed."
-msgstr "Action complétée."
-
-#: ../../mod/like.php:418
-msgid "Thank you."
-msgstr "Merci."
-
-#: ../../mod/lockview.php:35 ../../mod/lockview.php:41
-msgid "Remote privacy information not available."
-msgstr "Les informations de vie privée à distance ne sont pas disponibles."
-
-#: ../../mod/lockview.php:50
-msgid "Visible to:"
-msgstr "Visible par&nbsp;:"
-
-#: ../../mod/viewconnections.php:58
+#: ../../mod/viewconnections.php:62
msgid "No connections."
-msgstr "Pas de relation."
+msgstr "Pas de relations."
-#: ../../mod/viewconnections.php:71
+#: ../../mod/viewconnections.php:75
#, php-format
msgid "Visit %s's profile [%s]"
msgstr "Visiter le profil de %s [%s]"
-#: ../../mod/viewconnections.php:86
-msgid "View Connnections"
-msgstr "Voir les relations"
-
-#: ../../mod/lostpass.php:15
-msgid "No valid account found."
-msgstr "Aucun compte valide trouvé."
-
-#: ../../mod/lostpass.php:29
-msgid "Password reset request issued. Check your email."
-msgstr "Réinitialisation du mot de passe demandée. Vérifiez vos courriels."
-
-#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
-#, php-format
-msgid "Site Member (%s)"
-msgstr "Membre du site (%s)"
-
-#: ../../mod/lostpass.php:40
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "Demande de réinitialisation du mot de passe sur %s"
-
-#: ../../mod/lostpass.php:63
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "La demande n'a pas pu être vérifiée. (Peut-être l'avez vous déjà utilisée.) La réinitialisation a échoué."
-
-#: ../../mod/lostpass.php:85 ../../boot.php:1508
-msgid "Password Reset"
-msgstr "Réinitialiser le mot de passe"
-
-#: ../../mod/lostpass.php:86
-msgid "Your password has been reset as requested."
-msgstr "Votre mot de passe a bien été réinitialisé."
-
-#: ../../mod/lostpass.php:87
-msgid "Your new password is"
-msgstr "Votre nouveau mot de passe est"
-
-#: ../../mod/lostpass.php:88
-msgid "Save or copy your new password - and then"
-msgstr "Sauvez-le ou copiez-le, puis"
-
-#: ../../mod/lostpass.php:89
-msgid "click here to login"
-msgstr "cliquez ici pour vous connecter"
-
-#: ../../mod/lostpass.php:90
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Votre mot de passe peut être changé depuis la page des <em>Réglages</em> une fois connecté."
-
-#: ../../mod/lostpass.php:107
-#, php-format
-msgid "Your password has changed at %s"
-msgstr "Votre mot de passe de %s a été changé"
-
-#: ../../mod/lostpass.php:122
-msgid "Forgot your Password?"
-msgstr "Mot de passe oublié?"
-
-#: ../../mod/lostpass.php:123
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Saisissez votre adresse de courriel, et validez, pour réinitialiser votre mot de passe. Vérifiez ensuite votre boîte à lettres pour la suite des instructions."
-
-#: ../../mod/lostpass.php:124
-msgid "Email Address"
-msgstr "Adresse de courriel"
-
-#: ../../mod/lostpass.php:125
-msgid "Reset"
-msgstr "Réinitialiser"
-
-#: ../../mod/magic.php:70
-msgid "Hub not found."
-msgstr "Hub introuvable."
+#: ../../mod/viewsrc.php:38
+msgid "Source of Item"
+msgstr "Source de l'élément"
#: ../../mod/vote.php:97
msgid "Total votes"
-msgstr "Total des votes"
+msgstr ""
#: ../../mod/vote.php:98
msgid "Average Rating"
-msgstr "Évaluation moyenne"
-
-#: ../../mod/mail.php:33
-msgid "Unable to lookup recipient."
-msgstr "Impossible de localiser le destinataire."
-
-#: ../../mod/mail.php:41
-msgid "Unable to communicate with requested channel."
-msgstr "Impossible de communiquer avec le canal demandé."
-
-#: ../../mod/mail.php:48
-msgid "Cannot verify requested channel."
-msgstr "Impossible de vérifier le canal demandé."
-
-#: ../../mod/mail.php:74
-msgid "Selected channel has private message restrictions. Send failed."
-msgstr "Le canal choisi a des restrictions quant aux messages privés. L'envoi a échoué."
-
-#: ../../mod/mail.php:121 ../../mod/message.php:31
-msgid "Messages"
-msgstr "Messages"
-
-#: ../../mod/mail.php:132
-msgid "Message deleted."
-msgstr "Message supprimé."
-
-#: ../../mod/mail.php:149
-msgid "Message recalled."
-msgstr "Message annulé/rappelé."
-
-#: ../../mod/mail.php:215
-msgid "Send Private Message"
-msgstr "Envoyer un Message Privé"
-
-#: ../../mod/mail.php:216 ../../mod/mail.php:333
-msgid "To:"
-msgstr "À&nbsp;:"
-
-#: ../../mod/mail.php:221 ../../mod/mail.php:335
-msgid "Subject:"
-msgstr "Sujet&nbsp;:"
-
-#: ../../mod/mail.php:232
-msgid "Send"
-msgstr "Envoyer"
-
-#: ../../mod/mail.php:259
-msgid "Message not found."
-msgstr "Message introuvable."
-
-#: ../../mod/mail.php:302 ../../mod/message.php:72
-msgid "Delete message"
-msgstr "Supprimer message"
-
-#: ../../mod/mail.php:303
-msgid "Recall message"
-msgstr "Rappeler/annuler le message"
-
-#: ../../mod/mail.php:305
-msgid "Message has been recalled."
-msgstr "Le message a été rappelé."
-
-#: ../../mod/mail.php:322
-msgid "Private Conversation"
-msgstr "Conversation privée"
-
-#: ../../mod/mail.php:326
-msgid "Delete conversation"
-msgstr "Supprimer conversation"
-
-#: ../../mod/mail.php:328
-msgid ""
-"No secure communications available. You <strong>may</strong> be able to "
-"respond from the sender's profile page."
-msgstr "Aucune communication sécurisée n'est possible. Vous pourrez <strong>peut-être</strong> répondre depuis la page de profil de l'émetteur."
-
-#: ../../mod/mail.php:332
-msgid "Send Reply"
-msgstr "Envoyer une réponse"
-
-#: ../../mod/manage.php:136
-#, php-format
-msgid "You have created %1$.0f of %2$.0f allowed channels."
-msgstr "Vous avez créé %1$.0f des %2$.0f canaux autorisés."
-
-#: ../../mod/manage.php:144
-msgid "Create a new channel"
-msgstr "Créer un nouveau canal"
-
-#: ../../mod/manage.php:148
-msgid "Channel Manager"
-msgstr "Gestionnaire du canal"
-
-#: ../../mod/manage.php:149
-msgid "Current Channel"
-msgstr "Canal actif"
-
-#: ../../mod/manage.php:151
-msgid "Attach to one of your channels by selecting it."
-msgstr "Branchez-vous à l'un de vos canaux en le selectionnant."
-
-#: ../../mod/manage.php:152
-msgid "Default Channel"
-msgstr "Canal par défaut"
-
-#: ../../mod/manage.php:153
-msgid "Make Default"
-msgstr "Définir comme défaut"
-
-#: ../../mod/wall_upload.php:34
-msgid "Wall Photos"
-msgstr "Photos du mur"
-
-#: ../../mod/match.php:16
-msgid "Profile Match"
-msgstr "Profils similaires"
-
-#: ../../mod/match.php:24
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr "Aucun mot-clef à comparer. Merci d'ajouter des mots-clefs à votre profil par défaut."
-
-#: ../../mod/match.php:61
-msgid "is interested in:"
-msgstr "s'intéresse à&nbsp;:"
-
-#: ../../mod/match.php:69
-msgid "No matches"
-msgstr "Pas de correspondance"
-
-#: ../../mod/menu.php:21
-msgid "Menu updated."
-msgstr "Menu mis à jour."
-
-#: ../../mod/menu.php:25
-msgid "Unable to update menu."
-msgstr "Impossible de mettre le menu à jour."
-
-#: ../../mod/menu.php:30
-msgid "Menu created."
-msgstr "Menu créé."
-
-#: ../../mod/menu.php:34
-msgid "Unable to create menu."
-msgstr "Impossible de créer le menu."
-
-#: ../../mod/menu.php:57
-msgid "Manage Menus"
-msgstr "Gérer les menus"
-
-#: ../../mod/menu.php:60
-msgid "Drop"
-msgstr "Supprimer"
-
-#: ../../mod/menu.php:62
-msgid "Create a new menu"
-msgstr "Créer un nouveau menu"
-
-#: ../../mod/menu.php:63
-msgid "Delete this menu"
-msgstr "Supprimer ce menu"
-
-#: ../../mod/menu.php:64 ../../mod/menu.php:109
-msgid "Edit menu contents"
-msgstr "Éditer le contenu du menu"
-
-#: ../../mod/menu.php:65
-msgid "Edit this menu"
-msgstr "Éditer le menu"
-
-#: ../../mod/menu.php:80
-msgid "New Menu"
-msgstr "Nouveau menu"
-
-#: ../../mod/menu.php:81 ../../mod/menu.php:110
-msgid "Menu name"
-msgstr "Nom du menu"
-
-#: ../../mod/menu.php:81 ../../mod/menu.php:110
-msgid "Must be unique, only seen by you"
-msgstr "Doit être unique, ne sera vu que par vous"
-
-#: ../../mod/menu.php:82 ../../mod/menu.php:111
-msgid "Menu title"
-msgstr "Titre du menu"
-
-#: ../../mod/menu.php:82 ../../mod/menu.php:111
-msgid "Menu title as seen by others"
-msgstr "Titre du menu tel que vu par les visiteurs"
-
-#: ../../mod/menu.php:83 ../../mod/menu.php:112
-msgid "Allow bookmarks"
-msgstr "Autoriser l'usage de favoris"
-
-#: ../../mod/menu.php:83 ../../mod/menu.php:112
-msgid "Menu may be used to store saved bookmarks"
-msgstr "Le menu pourra être utilisé pour stocker des favoris"
-
-#: ../../mod/menu.php:98
-msgid "Menu deleted."
-msgstr "Menu supprimé."
-
-#: ../../mod/menu.php:100
-msgid "Menu could not be deleted."
-msgstr "Impossible de supprimer le menu."
-
-#: ../../mod/menu.php:106
-msgid "Edit Menu"
-msgstr "Éditer le menu"
-
-#: ../../mod/menu.php:108
-msgid "Add or remove entries to this menu"
-msgstr "Ajouter/supprimer des entrées à ce menu"
-
-#: ../../mod/message.php:41
-msgid "Conversation removed."
-msgstr "Conversation supprimée."
-
-#: ../../mod/message.php:56
-msgid "No messages."
-msgstr "Pas de message."
-
-#: ../../mod/message.php:74
-msgid "D, d M Y - g:i A"
-msgstr "D d Y - H:i"
-
-#: ../../mod/new_channel.php:107
-msgid "Add a Channel"
-msgstr "Ajouter un canal"
-
-#: ../../mod/new_channel.php:108
-msgid ""
-"A channel is your own collection of related web pages. A channel can be used"
-" to hold social network profiles, blogs, conversation groups and forums, "
-"celebrity pages, and much more. You may create as many channels as your "
-"service provider allows."
-msgstr "Un canal est une collection de pages web reliées entre elles, sous votre contrôle. Il peut contenir des profils de réseau social, des blogs, des groupes de conversation, des forums, des pages de célébrités, et bien plus encore. Vous pouvez créer autant de canaux que votre administrateur de hub vous y autorise."
-
-#: ../../mod/new_channel.php:111
-msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "
-msgstr "Exemples&nbsp;: \"Bob Jameson\", \"Lisa et ses chevaux sauvages\", \"Football\", \"Groupe des amateurs de tir à l'arc\""
-
-#: ../../mod/new_channel.php:112
-msgid "Choose a short nickname"
-msgstr "Choisissez un alias"
-
-#: ../../mod/new_channel.php:113
-msgid ""
-"Your nickname will be used to create an easily remembered channel address "
-"(like an email address) which you can share with others."
-msgstr "Cet alias sera utilisé pour créer une adresse de canal, facile à retenir - un peu comme une adresse de courriel - que vous pourrez partager avec d'autres."
-
-#: ../../mod/new_channel.php:114
-msgid "Or <a href=\"import\">import an existing channel</a> from another location"
-msgstr "Ou <a href=\"import\">importez un canal existant</a> à un autre endroit"
-
-#: ../../mod/notifications.php:26
-msgid "Invalid request identifier."
-msgstr "Identifiant de requête invalide."
-
-#: ../../mod/notifications.php:35
-msgid "Discard"
-msgstr "Annuler"
-
-#: ../../mod/notifications.php:94 ../../mod/notify.php:53
-msgid "No more system notifications."
-msgstr "Pas d'autre notification du système."
+msgstr ""
-#: ../../mod/notifications.php:98 ../../mod/notify.php:57
-msgid "System Notifications"
-msgstr "Notifications du système"
+#: ../../mod/webpages.php:191
+msgid "Page Title"
+msgstr "Titre de la page"
-#: ../../mod/oexchange.php:23
-msgid "Unable to find your hub."
-msgstr "Impossible de trouver votre hub."
+#: ../../mod/xchan.php:6
+msgid "Xchan Lookup"
+msgstr "Recherche xchan"
-#: ../../mod/oexchange.php:37
-msgid "Post successful."
-msgstr "Contribution effectuée."
+#: ../../mod/xchan.php:9
+msgid "Lookup xchan beginning with (or webbie): "
+msgstr "Recherche xchan commençant par (ou adresse \"webbie\")&nbsp;:"
#: ../../mod/zfinger.php:23
msgid "invalid target signature"
msgstr "signature de la cible invalide"
-#: ../../mod/openid.php:26
-msgid "OpenID protocol error. No ID returned."
-msgstr "Erreur du protocole OpenID. Pas d'ID retourné."
-
-#: ../../mod/appman.php:28 ../../mod/appman.php:44
-msgid "App installed."
-msgstr "Application installée."
-
-#: ../../mod/appman.php:37
-msgid "Malformed app."
-msgstr "Erreur de l'application - Malformée."
-
-#: ../../mod/appman.php:80
-msgid "Embed code"
-msgstr "Code intégré"
-
-#: ../../mod/appman.php:86
-msgid "Edit App"
-msgstr "Edition de l'Application"
-
-#: ../../mod/appman.php:86
-msgid "Create App"
-msgstr "Création d'une Application"
-
-#: ../../mod/appman.php:91
-msgid "Name of app"
-msgstr "Nom de l'application"
-
-#: ../../mod/appman.php:92
-msgid "Location (URL) of app"
-msgstr "Emplacement (Lien) vers l'application"
-
-#: ../../mod/appman.php:94
-msgid "Photo icon URL"
-msgstr "Lien (URL) de l'icône à utiliser pour cette photo"
-
-#: ../../mod/appman.php:94
-msgid "80 x 80 pixels - optional"
-msgstr "80 x 80 pixels - optionel"
-
-#: ../../mod/appman.php:95
-msgid "Version ID"
-msgstr "Version"
-
-#: ../../mod/appman.php:96
-msgid "Price of app"
-msgstr "Prix de l'application"
-
-#: ../../mod/appman.php:97
-msgid "Location (URL) to purchase app"
-msgstr "Emplacement (LIEN) pour l'achat de l'application"
-
-#: ../../mod/poll.php:64
-msgid "Poll"
-msgstr "Sondage"
-
-#: ../../mod/poll.php:69
-msgid "View Results"
-msgstr "Voir les Résultats"
-
-#: ../../mod/frphotos.php:79
-msgid "Friendica Photo Album Import"
-msgstr "Importer votre Album Photo Friendica"
-
-#: ../../mod/frphotos.php:80
-msgid "This will import all your Friendica photo albums to this Red channel."
-msgstr "Cette fonction va importer tous vos albums photos Friendica dans ce canal de la Matrice Rouge."
-
-#: ../../mod/frphotos.php:81
-msgid "Friendica Server base URL"
-msgstr "URL vers le serveur Friendica"
-
-#: ../../mod/frphotos.php:82
-msgid "Friendica Login Username"
-msgstr "Nom d'utilisateur Friendica"
-
-#: ../../mod/frphotos.php:83
-msgid "Friendica Login Password"
-msgstr "Mot de passe Friendica"
-
-#: ../../mod/removeaccount.php:30
-msgid ""
-"Account removals are not allowed within 48 hours of changing the account "
-"password."
-msgstr "Il est impossible de supprimer un compte à l'intérieur de 48 heures après avoir changé le mot de passe d'un compte."
-
-#: ../../mod/removeaccount.php:57
-msgid "Remove This Account"
-msgstr "Supprimer ce Compte"
-
-#: ../../mod/removeaccount.php:58
-msgid ""
-"This will completely remove this account including all its channels from the"
-" network. Once this has been done it is not recoverable."
-msgstr "Cette fonction va complètement supprimer le compte incluant tous ses canaux sur la matrice. Attention, cette action est irréversible."
-
-#: ../../mod/removeaccount.php:60
-msgid ""
-"Remove this account, all its channels and all its channel clones from the "
-"network"
-msgstr "Supprimer ce compte, tous ses canaux et tous les clones sur la matrice."
-
-#: ../../mod/removeaccount.php:60
-msgid ""
-"By default only the instances of the channels located on this hub will be "
-"removed from the network"
-msgstr "Par défault, seuls les instances de canaux situés sur ce hub seront supprimer de la matrice."
-
#: ../../view/theme/apw/php/config.php:202
#: ../../view/theme/apw/php/config.php:236
msgid "Schema Default"
-msgstr "Par défault"
+msgstr ""
#: ../../view/theme/apw/php/config.php:203
msgid "Sans-Serif"
-msgstr "Sans-Serif"
+msgstr "Sans empâtements"
#: ../../view/theme/apw/php/config.php:204
msgid "Monospace"
-msgstr "Monospace"
+msgstr "Chasse fixe"
#: ../../view/theme/apw/php/config.php:259
-#: ../../view/theme/blogga/php/config.php:69
-#: ../../view/theme/blogga/view/theme/blog/config.php:69
#: ../../view/theme/redbasic/php/config.php:102
msgid "Theme settings"
msgstr "Réglages du thème"
#: ../../view/theme/apw/php/config.php:260
-#: ../../view/theme/redbasic/php/config.php:103
msgid "Set scheme"
msgstr "Définir la palette de couleurs"
@@ -7749,71 +8887,71 @@ msgstr "Définir le jeu d'icônes"
#: ../../view/theme/apw/php/config.php:264
msgid "Set big shadow size, default 15px 15px 15px"
-msgstr "Définir la taille des grandes ombres, par défaut 15px 15px 15px"
+msgstr ""
#: ../../view/theme/apw/php/config.php:265
msgid "Set small shadow size, default 5px 5px 5px"
-msgstr "Définir la taille des petites ombres, par défaut 5px 5px 5px"
+msgstr ""
#: ../../view/theme/apw/php/config.php:266
msgid "Set shadow color, default #000"
-msgstr "Définir la couleur des ombres, par défaut #000"
+msgstr ""
#: ../../view/theme/apw/php/config.php:267
msgid "Set radius size, default 5px"
-msgstr "Définir le rayon des arrondis, par défaut 5px"
+msgstr ""
#: ../../view/theme/apw/php/config.php:268
msgid "Set line-height for posts and comments"
-msgstr "Définir line-height pour contributions et commentaires"
+msgstr ""
#: ../../view/theme/apw/php/config.php:269
msgid "Set background image"
-msgstr "Définir l'image d'arrière-plan"
+msgstr ""
#: ../../view/theme/apw/php/config.php:270
msgid "Set background attachment"
-msgstr "Image de fond - fichier"
+msgstr ""
#: ../../view/theme/apw/php/config.php:271
msgid "Set background color"
-msgstr "Définir la couleur d'arrière-plan"
+msgstr ""
#: ../../view/theme/apw/php/config.php:272
msgid "Set section background image"
-msgstr "Définir l'image d'arrière-plan des sections"
+msgstr ""
#: ../../view/theme/apw/php/config.php:273
msgid "Set section background color"
-msgstr "Définir la couleur d'arrière-plan des sections"
+msgstr ""
#: ../../view/theme/apw/php/config.php:274
msgid "Set color of items - use hex"
-msgstr "Définir la couleur des éléments - en héxadécimal"
+msgstr ""
#: ../../view/theme/apw/php/config.php:275
msgid "Set color of links - use hex"
-msgstr "Définir la couleur des liens - en héxadécimal"
+msgstr ""
#: ../../view/theme/apw/php/config.php:276
msgid "Set max-width for items. Default 400px"
-msgstr "Définir la largeur maximal des éléments. Par défaut, 400px"
+msgstr ""
#: ../../view/theme/apw/php/config.php:277
msgid "Set min-width for items. Default 240px"
-msgstr "Définir la largeur minimale des éléments. Par défaut, 240px"
+msgstr ""
#: ../../view/theme/apw/php/config.php:278
msgid "Set the generic content wrapper width. Default 48%"
-msgstr "Définir la largeur du contenu. Par défaut, 48%"
+msgstr ""
#: ../../view/theme/apw/php/config.php:279
msgid "Set color of fonts - use hex"
-msgstr "Définir la couleur des fontes - en héxadécimal"
+msgstr ""
#: ../../view/theme/apw/php/config.php:280
msgid "Set background-size element"
-msgstr "Définir background-size pour les éléments"
+msgstr "Taille du fond"
#: ../../view/theme/apw/php/config.php:281
msgid "Item opacity"
@@ -7855,25 +8993,14 @@ msgstr "Décalage gauche du panneau latéral"
msgid "Right offset of the aside element"
msgstr "Décalage droit du panneau latéral"
-#: ../../view/theme/blogga/php/config.php:47
-#: ../../view/theme/blogga/view/theme/blog/config.php:47
-msgid "None"
-msgstr "Aucun"
-
-#: ../../view/theme/blogga/php/config.php:70
-#: ../../view/theme/blogga/view/theme/blog/config.php:70
-msgid "Header image"
-msgstr "Image de l'entête"
-
-#: ../../view/theme/blogga/php/config.php:71
-#: ../../view/theme/blogga/view/theme/blog/config.php:71
-msgid "Header image only on profile pages"
-msgstr "Image de l'entête tel qu'elle est affichée sur la page du profil"
-
-#: ../../view/theme/redbasic/php/config.php:84
-msgid "Light (Hubzilla default)"
+#: ../../view/theme/redbasic/php/config.php:82
+msgid "Light (Red Matrix default)"
msgstr "Blanc (valeur par défaut)"
+#: ../../view/theme/redbasic/php/config.php:103
+msgid "Select scheme"
+msgstr "Définir la palette de couleurs"
+
#: ../../view/theme/redbasic/php/config.php:104
msgid "Narrow navbar"
msgstr "Barre de navigation fine"
@@ -7954,6 +9081,10 @@ msgstr "Définir la couleur de survol des icônes des éléments"
msgid "Set font-size for the entire application"
msgstr "Définir la taille de police pour l'application entière"
+#: ../../view/theme/redbasic/php/config.php:123
+msgid "Example: 14px"
+msgstr "Exemple : 14px"
+
#: ../../view/theme/redbasic/php/config.php:125
msgid "Set font-color for posts and comments"
msgstr "Définir font-colour pour les contributions et commentaires"
@@ -7967,12 +9098,16 @@ msgid "Set shadow depth of photos"
msgstr "Définir la profondeur de l'ombre des photos"
#: ../../view/theme/redbasic/php/config.php:128
-msgid "Set maximum width of conversation regions"
-msgstr "Définir la largeur maximale des conversations"
+msgid "Set maximum width of content region in pixel"
+msgstr "Définir la largeur maximale de la zone des contenus"
+
+#: ../../view/theme/redbasic/php/config.php:128
+msgid "Leave empty for default width"
+msgstr "Laissez vide pour avoir la largeur par défaut"
#: ../../view/theme/redbasic/php/config.php:129
-msgid "Center conversation regions"
-msgstr "Emplacement de la conversation - Centrer"
+msgid "Center page content"
+msgstr "Contenue de la page centrale"
#: ../../view/theme/redbasic/php/config.php:130
msgid "Set minimum opacity of nav bar - to hide it"
@@ -7986,49 +9121,51 @@ msgstr "Définir la taille de la photo de l'auteur d'une conversation"
msgid "Set size of followup author photos"
msgstr "Définir la taille de la photo de l'auteur d'une réponse"
-#: ../../view/theme/redbasic/php/config.php:133
-msgid "Sloppy photo albums"
-msgstr "Albums photo \"en biais\""
-
-#: ../../view/theme/redbasic/php/config.php:133
-msgid "Are you a clean desk or a messy desk person?"
-msgstr "Vous êtes plutôt \"bureau bien rangé\" ou \"gros foutoir\"?"
-
-#: ../../boot.php:1296
+#: ../../boot.php:1356
#, php-format
msgid "Update %s failed. See error logs."
-msgstr "La mise à jour %s a échoué. Merci de consulter les journaux d'erreur."
+msgstr "La mise-à-jour %s a échoué. Merci de consulter les journaux d'erreur."
-#: ../../boot.php:1299
+#: ../../boot.php:1359
#, php-format
msgid "Update Error at %s"
-msgstr "Erreur de mise à jour sur %s"
+msgstr "Erreur de mise-à-jour sur %s"
-#: ../../boot.php:1473
+#: ../../boot.php:1526
msgid ""
-"Create an account to access services and applications within the Hubzilla"
+"Create an account to access services and applications within the Red Matrix"
msgstr "Créez un compte pour pouvoir accéder aux services et applications de la Matrice Red"
-#: ../../boot.php:1501
+#: ../../boot.php:1554
msgid "Password"
msgstr "Mot de passe"
-#: ../../boot.php:1502
+#: ../../boot.php:1555
msgid "Remember me"
msgstr "Se souvenir de moi"
-#: ../../boot.php:1507
+#: ../../boot.php:1558
msgid "Forgot your password?"
msgstr "Mot de passe oublié?"
-#: ../../boot.php:1572
-msgid "permission denied"
-msgstr "permission refusée"
-
-#: ../../boot.php:1573
-msgid "Got Zot?"
-msgstr "Authentification magique a échouée. Êtes-vous toujours connecté à votre HUB?"
-
-#: ../../boot.php:2003
+#: ../../boot.php:2182
msgid "toggle mobile"
msgstr "(dés)activer mobile"
+
+#: ../../boot.php:2317
+msgid "Website SSL certificate is not valid. Please correct."
+msgstr "Le certificat SSL n'est pas valide. Corrigez le."
+
+#: ../../boot.php:2320
+#, php-format
+msgid "[red] Website SSL error for %s"
+msgstr "[red] Erreur SSL pour %s"
+
+#: ../../boot.php:2357
+msgid "Cron/Scheduled tasks not running."
+msgstr "Les taches planifiées ne tournent pas."
+
+#: ../../boot.php:2361
+#, php-format
+msgid "[red] Cron tasks not running on %s"
+msgstr "[red] tache planifiée n'est pas en fonction sur %s"
diff --git a/view/fr/strings.php b/view/fr/strings.php
index 4802ead50..5e17d7946 100644
--- a/view/fr/strings.php
+++ b/view/fr/strings.php
@@ -5,52 +5,107 @@ function string_plural_select_fr($n){
return ($n > 1);;
}}
;
-App::$strings["Cannot locate DNS info for database server '%s'"] = "Impossible de trouver les infos DNS du serveur de base de données '%s'";
+App::$strings["No username found in import file."] = "Aucun nom d'utilisateur dans le fichier d'import.";
+App::$strings["Unable to create a unique channel address. Import failed."] = "Impossible de créer une adresse de canal unique. Échec de l'import.";
+App::$strings["Import completed."] = "L'import est terminé.";
+App::$strings["parent"] = "retour";
+App::$strings["Collection"] = "Collection";
+App::$strings["Principal"] = "Principal";
+App::$strings["Addressbook"] = "Carnet d'adresse";
+App::$strings["Calendar"] = "Calendrier";
+App::$strings["Schedule Inbox"] = "Calendrier - Message entrants";
+App::$strings["Schedule Outbox"] = "Calendrier - Message sortants";
+App::$strings["Unknown"] = "Inconnu";
+App::$strings["%1\$s used"] = "%1\$s utilisé";
+App::$strings["%1\$s used of %2\$s (%3\$s&#37;)"] = "%1\$s utilisé de %2\$s (%3\$s&#37;)";
+App::$strings["Files"] = "Fichiers";
+App::$strings["Total"] = "Total";
+App::$strings["Shared"] = "Partagé";
+App::$strings["Create"] = "Créer";
+App::$strings["Upload"] = "Envoyer";
+App::$strings["Name"] = "Nom";
+App::$strings["Type"] = "Type";
+App::$strings["Size"] = "Taille";
+App::$strings["Last Modified"] = "Modifié le";
+App::$strings["Edit"] = "Éditer";
+App::$strings["Delete"] = "Supprimer";
+App::$strings["Create new folder"] = "Nouveau dossier";
+App::$strings["Upload file"] = "Téléverser un fichier";
+App::$strings["Cannot locate DNS info for database server '%s'"] = "Impossible de trouver les infos DNS du serveur de BD '%s'";
App::$strings["Profile Photos"] = "Photos du profil";
-App::$strings["%1\$s is now friends with %2\$s"] = "%1\$s et %2\$s sont maintenant amis.";
-App::$strings["Sharing notification from Diaspora network"] = "Partage de vos notifications du réseau Diaspora";
-App::$strings["photo"] = "photo";
-App::$strings["status"] = "le statut";
-App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s aime %3\$s de %2\$s";
-App::$strings["Attachments:"] = "Pièces jointes:";
-App::$strings["Embedded content"] = "Contenu imbriqué";
-App::$strings["Embedding disabled"] = "Imbrication désactivée";
-App::$strings["created a new post"] = "a publié";
-App::$strings["commented on %s's post"] = "a commenté la publication de %s";
-App::$strings["Site Admin"] = "Administrateur";
+App::$strings["Logout"] = "Déconnexion";
+App::$strings["End this session"] = "Mettre fin à la session";
+App::$strings["Home"] = "Canal";
+App::$strings["Your posts and conversations"] = "Vos publications et conversations";
+App::$strings["View Profile"] = "Profil";
+App::$strings["Your profile page"] = "Votre profil";
+App::$strings["Edit Profiles"] = "Éditer les profils";
+App::$strings["Manage/Edit profiles"] = "Gérer/éditer les profils";
+App::$strings["Edit Profile"] = "Éditeur de profil";
+App::$strings["Edit your profile"] = "Éditer votre profil";
+App::$strings["Photos"] = "Photos";
+App::$strings["Your photos"] = "Vos photos";
+App::$strings["Your files"] = "Vos fichiers";
+App::$strings["Chat"] = "Clavardage";
+App::$strings["Your chatrooms"] = "Vos salons";
App::$strings["Bookmarks"] = "Favoris";
-App::$strings["Address Book"] = "Carnet d'adresses";
+App::$strings["Your bookmarks"] = "Vos favoris";
+App::$strings["Webpages"] = "Pages web";
+App::$strings["Your webpages"] = "Vos pages web";
App::$strings["Login"] = "Connexion";
-App::$strings["Channel Select"] = "Changer de canal";
+App::$strings["Sign in"] = "Connexion";
+App::$strings["%s - click to logout"] = "%s - cliquer ici pour déconnecter";
+App::$strings["Remote authentication"] = "Authentification distante";
+App::$strings["Click to authenticate to your home hub"] = "S'authentifier auprès de votre hub";
+App::$strings["Home Page"] = "Page d'accueil";
+App::$strings["Register"] = "S'inscrire";
+App::$strings["Create an account"] = "Créer un compte";
+App::$strings["Help"] = "Aide";
+App::$strings["Help and documentation"] = "Aide et documentation";
+App::$strings["Apps"] = "Applications";
+App::$strings["Applications, utilities, links, games"] = "Applications, utilitaires, liens, jeux";
+App::$strings["Search"] = "Recherche";
+App::$strings["Search site content"] = "Rechercher parmi le contenu du site";
+App::$strings["Directory"] = "Annuaire";
+App::$strings["Channel Directory"] = "Annuaire des canaux";
App::$strings["Matrix"] = "Matrice";
-App::$strings["Settings"] = "Réglages";
-App::$strings["Files"] = "Fichiers";
-App::$strings["Webpages"] = "Pages web";
+App::$strings["Your matrix"] = "Votre matrice";
+App::$strings["Mark all matrix notifications seen"] = "Marquer toutes les notifications de la matrice comme vues";
App::$strings["Channel Home"] = "Mon canal";
-App::$strings["Profile"] = "Profil";
-App::$strings["Photos"] = "Photos";
-App::$strings["Events"] = "Événements";
-App::$strings["Directory"] = "Annuaire";
-App::$strings["Help"] = "Aide";
+App::$strings["Channel home"] = "Mon canal";
+App::$strings["Mark all channel notifications seen"] = "Marquer toutes les notifications du canal comme vues";
+App::$strings["Connections"] = "Relations";
+App::$strings["Notices"] = "Notifications";
+App::$strings["Notifications"] = "Notifications";
+App::$strings["See all notifications"] = "Voir toutes les notifications";
+App::$strings["Mark all system notifications seen"] = "Marquer toutes les notifications système comme vues";
App::$strings["Mail"] = "Messages";
-App::$strings["Mood"] = "Humeur";
-App::$strings["Poke"] = "Cogner";
-App::$strings["Chat"] = "Clavardage";
-App::$strings["Search"] = "Recherche";
-App::$strings["Probe"] = "Sonder";
-App::$strings["Suggest"] = "Suggérer";
-App::$strings["Random Channel"] = "Un canal au hasard";
-App::$strings["Invite"] = "Invitation";
-App::$strings["Features"] = "Fonctionalités";
-App::$strings["Language"] = "Langue";
-App::$strings["Post"] = "Envoyer";
-App::$strings["Profile Photo"] = "Photo du profil";
-App::$strings["Update"] = "Mise à jour";
-App::$strings["Install"] = "Installer";
-App::$strings["Purchase"] = "Acheter";
-App::$strings["Edit"] = "Éditer";
-App::$strings["Delete"] = "Supprimer";
-App::$strings["Unknown"] = "Inconnu";
+App::$strings["Private mail"] = "Messages privés";
+App::$strings["See all private messages"] = "Voir tous les messages privés";
+App::$strings["Mark all private messages seen"] = "Marquer tous les messages privés comme vus";
+App::$strings["Inbox"] = "Boîte de réception";
+App::$strings["Outbox"] = "Boîte d'envoi";
+App::$strings["New Message"] = "Nouveau message";
+App::$strings["Events"] = "Événements";
+App::$strings["Event Calendar"] = "Calendrier des événements";
+App::$strings["See all events"] = "Voir tous les événements";
+App::$strings["Mark all events seen"] = "Marquer tous les événements comme vus";
+App::$strings["Channel Manager"] = "Gérer les canaux";
+App::$strings["Manage Your Channels"] = "Gérer vos canaux";
+App::$strings["Settings"] = "Réglages";
+App::$strings["Account/Channel Settings"] = "Réglages du Compte/Canal";
+App::$strings["Admin"] = "Administrateur";
+App::$strings["Site Setup and Configuration"] = "Configuration du site";
+App::$strings["Loading..."] = "Chargement...";
+App::$strings["@name, #tag, content"] = "@nom, #tag, contenu";
+App::$strings["Please wait..."] = "Merci de patienter...";
+App::$strings["view full size"] = "pleine taille";
+App::$strings["\$Projectname Notification"] = "Notification de \$Projectname";
+App::$strings["\$projectname"] = "\$projectname";
+App::$strings["Thank You,"] = "Merci,";
+App::$strings["%s Administrator"] = "l'administrateur de %s";
+App::$strings["Administrator"] = "Administrateur";
+App::$strings["No Subject"] = "Pas de sujet";
App::$strings["prev"] = "préc.";
App::$strings["first"] = "premier";
App::$strings["last"] = "dernier";
@@ -64,31 +119,31 @@ App::$strings["%d Connection"] = array(
);
App::$strings["View Connections"] = "Voir les relations";
App::$strings["Save"] = "Sauver";
-App::$strings["poke"] = "cogner";
-App::$strings["poked"] = "a cogné";
+App::$strings["poke"] = "cogne";
+App::$strings["poked"] = "C'est fait cogner";
App::$strings["ping"] = "solliciter";
-App::$strings["pinged"] = "a sollicité";
-App::$strings["prod"] = "encourager";
-App::$strings["prodded"] = "a encouragé";
-App::$strings["slap"] = "gifler";
-App::$strings["slapped"] = "a giflé";
+App::$strings["pinged"] = "sollicité";
+App::$strings["prod"] = "aiguillonner";
+App::$strings["prodded"] = "aiguillonné";
+App::$strings["slap"] = "giffle";
+App::$strings["slapped"] = "gifflé";
App::$strings["finger"] = "pointer";
-App::$strings["fingered"] = "a pointé";
-App::$strings["rebuff"] = "rejeter";
-App::$strings["rebuffed"] = "a rejeté";
+App::$strings["fingered"] = "pointé";
+App::$strings["rebuff"] = "rejetter";
+App::$strings["rebuffed"] = "rejetté";
App::$strings["happy"] = "heureux";
App::$strings["sad"] = "triste";
App::$strings["mellow"] = "mélancolique";
App::$strings["tired"] = "fatigué";
App::$strings["perky"] = "impertinent";
-App::$strings["angry"] = "colérique";
+App::$strings["angry"] = "colèrique";
App::$strings["stupified"] = "stupéfié";
App::$strings["puzzled"] = "perplexe";
App::$strings["interested"] = "intéressé";
App::$strings["bitter"] = "amer";
-App::$strings["cheerful"] = "joyeux";
+App::$strings["cheerful"] = "entrain";
App::$strings["alive"] = "énergique";
-App::$strings["annoyed"] = "agacé";
+App::$strings["annoyed"] = "agaçé";
App::$strings["anxious"] = "anxieux";
App::$strings["cranky"] = "énervé";
App::$strings["disturbed"] = "perturbé";
@@ -121,28 +176,143 @@ App::$strings["bytes"] = "octets";
App::$strings["remove category"] = "supprimer la catégorie";
App::$strings["remove from file"] = "retirer du fichier";
App::$strings["Click to open/close"] = "Cliquer pour ouvrir/fermer";
-App::$strings["Link to Source"] = "Lien vers la source";
-App::$strings["Select a page layout: "] = "Choisir une mise en page&nbsp;:";
+App::$strings["Link to Source"] = "Lien vers la Source";
App::$strings["default"] = "défaut";
-App::$strings["Page content type: "] = "Type de contenu&nbsp;:";
+App::$strings["Page layout"] = "Mises en page";
+App::$strings["You can create your own with the layouts tool"] = "Créez les votres avec les outils de mise en page";
+App::$strings["Page content type"] = "Type de contenu";
App::$strings["Select an alternate language"] = "Choisir une langue alternative";
+App::$strings["photo"] = "photo";
App::$strings["event"] = "événement";
+App::$strings["status"] = "le statut";
App::$strings["comment"] = "commentaire";
App::$strings["activity"] = "activité";
-App::$strings["Design"] = "Conception";
+App::$strings["Design Tools"] = "Outils de conception";
App::$strings["Blocks"] = "Blocs";
App::$strings["Menus"] = "Menus";
App::$strings["Layouts"] = "Mises-en-page";
App::$strings["Pages"] = "Pages";
-App::$strings["New Page"] = "Nouvelle page";
-App::$strings["View"] = "Voir";
+App::$strings["Categories"] = "Catégories";
+App::$strings["System"] = "Système";
+App::$strings["Personal"] = "Personnel";
+App::$strings["Create Personal App"] = "Créer Votre Application";
+App::$strings["Edit Personal App"] = "Éditer Votre Application";
+App::$strings["Connect"] = "Ajouter";
+App::$strings["Ignore/Hide"] = "Ignorer/Cacher";
+App::$strings["Suggestions"] = "Suggestion";
+App::$strings["See more..."] = "Voir plus...";
+App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Vous avez %1$.0f des %2$.0f relations autorisées.";
+App::$strings["Add New Connection"] = "Ajouter une nouvelle relation";
+App::$strings["Enter the channel address"] = "Adresse du canal";
+App::$strings["Example: bob@example.com, http://example.com/barbara"] = "Exemple&nbsp;: bob@exemple.com, http://exemple.com/barbara";
+App::$strings["Notes"] = "Notes";
+App::$strings["Remove term"] = "Retirer le terme";
+App::$strings["Saved Searches"] = "Recherches sauvées";
+App::$strings["add"] = "ajouter";
+App::$strings["Saved Folders"] = "Dossiers sauvegardés";
+App::$strings["Everything"] = "Tout";
+App::$strings["Archives"] = "Archives";
+App::$strings["Me"] = "Moi";
+App::$strings["Family"] = "Famille";
+App::$strings["Friends"] = "Amis";
+App::$strings["Acquaintances"] = "Mes connaissances";
+App::$strings["All"] = "Tout";
+App::$strings["Refresh"] = "Actualiser";
+App::$strings["Account settings"] = "Réglages du Compte";
+App::$strings["Channel settings"] = "Réglages du Canal";
+App::$strings["Additional features"] = "Fonctions supplémentaires";
+App::$strings["Feature/Addon settings"] = "Extensions";
+App::$strings["Display settings"] = "Réglages d'affichage";
+App::$strings["Connected apps"] = "Applications connectées";
+App::$strings["Export channel"] = "Exporter le canal";
+App::$strings["Connection Default Permissions"] = "Permissions par défaut des connexions";
+App::$strings["Premium Channel Settings"] = "Canal VIP";
+App::$strings["Channel Sources"] = "Canaux sources";
+App::$strings["Messages"] = "Messages";
+App::$strings["Check Mail"] = "Vérifier le courrier";
+App::$strings["Chat Rooms"] = "Salons de clavardage";
+App::$strings["Bookmarked Chatrooms"] = "Salons favoris";
+App::$strings["Suggested Chatrooms"] = "Salons suggérés";
+App::$strings["photo/image"] = "photo/image";
+App::$strings["Rate Me"] = "Me noter";
+App::$strings["View Ratings"] = "Voir mes notes";
+App::$strings["Public Hubs"] = "Instances publiques";
+App::$strings["New window"] = "Nouvelle fenêtre";
+App::$strings["Open the selected location in a different window or browser tab"] = "Ouvrir l'emplacement dans une fenêtre (ou un onglet) différent";
+App::$strings["User '%s' deleted"] = "Utilisateur '%s' supprimé";
+App::$strings["No recipient provided."] = "Pas de destinataire.";
+App::$strings["[no subject]"] = "[sans objet]";
+App::$strings["Unable to determine sender."] = "Impossible de déterminer l'émetteur.";
+App::$strings["Stored post could not be verified."] = "Le message stocké n'a pas pu être vérifié.";
+App::$strings["Invalid data packet"] = "Paquet de données invalide";
+App::$strings["Unable to verify channel signature"] = "Impossible de vérifier la signature du canal";
+App::$strings["Unable to verify site signature for %s"] = "Impossible de vérifier la signature de site pour %s";
+App::$strings["created a new post"] = "a publié";
+App::$strings["commented on %s's post"] = "a commenté la publication de %s";
+App::$strings["Private Message"] = "Message Privé";
+App::$strings["Select"] = "Sélectionner";
+App::$strings["Save to Folder"] = "Sauvegarder dans le dossier";
+App::$strings["I will attend"] = "J'y serais";
+App::$strings["I will not attend"] = "Je n'y serais pas";
+App::$strings["I might attend"] = "J'y serais peut-être";
+App::$strings["I agree"] = "J'approuve";
+App::$strings["I disagree"] = "Je désapprouve";
+App::$strings["I abstain"] = "Je m'abstiens";
+App::$strings["View all"] = "Voir tout";
+App::$strings["__ctx:noun__ Like"] = array(
+ 0 => "J'aime",
+ 1 => "J'aime",
+);
+App::$strings["__ctx:noun__ Dislike"] = array(
+ 0 => "Je déteste",
+ 1 => "Je déteste",
+);
+App::$strings["Add Star"] = "Ajouter Étoile";
+App::$strings["Remove Star"] = "Supprimer Étoile";
+App::$strings["Toggle Star Status"] = "Changer le Statut des Étoiles";
+App::$strings["starred"] = "mis en avant";
+App::$strings["Message signature validated"] = "Signature du message validée";
+App::$strings["Message signature incorrect"] = "Signature du message incorrecte";
+App::$strings["Add Tag"] = "Ajouter une balise";
+App::$strings["I like this (toggle)"] = "J'aime (oui/non)";
+App::$strings["like"] = "aime";
+App::$strings["I don't like this (toggle)"] = "Je déteste (oui/non)";
+App::$strings["dislike"] = "déteste";
+App::$strings["Share This"] = "Partager";
+App::$strings["share"] = "partager";
+App::$strings["%d comment"] = array(
+ 0 => "%d commentaire",
+ 1 => "%d commentaires",
+);
+App::$strings["View %s's profile - %s"] = "Voir le profil de %s - %s";
+App::$strings["to"] = "à";
+App::$strings["via"] = "via";
+App::$strings["Wall-to-Wall"] = "Mur-mur";
+App::$strings["via Wall-To-Wall:"] = "par Mur-mur&nbsp;:";
+App::$strings["from %s"] = "de %s";
+App::$strings["last edited: %s"] = "dernière édition&nbsp;: %s";
+App::$strings["Expires: %s"] = "Expire&nbsp;: %s";
+App::$strings["Save Bookmarks"] = "Enregistrer un favori";
+App::$strings["Add to Calendar"] = "Ajouter au Calendrier";
+App::$strings["Mark all seen"] = "Tout marquer comme vu";
+App::$strings["__ctx:noun__ Likes"] = "Aimes";
+App::$strings["__ctx:noun__ Dislikes"] = "Détestes";
+App::$strings["Close"] = "Fermer";
+App::$strings["Please wait"] = "Merci de patienter";
+App::$strings["[+] show all"] = "[+] voir plus";
+App::$strings["This is you"] = "C'est vous";
+App::$strings["Comment"] = "Commenter";
+App::$strings["Submit"] = "Envoyer";
+App::$strings["Bold"] = "Gras";
+App::$strings["Italic"] = "Italique";
+App::$strings["Underline"] = "Souligné";
+App::$strings["Quote"] = "Citation";
+App::$strings["Code"] = "Code";
+App::$strings["Image"] = "Image";
+App::$strings["Insert Link"] = "Insérer un lien";
+App::$strings["Video"] = "Vidéo";
App::$strings["Preview"] = "Aperçu";
-App::$strings["Actions"] = "Actions";
-App::$strings["Page Link"] = "Lien vers la page";
-App::$strings["Title"] = "Titre";
-App::$strings["Created"] = "Créé";
-App::$strings["Edited"] = "Édité";
-App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Le formulaire n'est plus sécurisé, probablement parce qu'il est ouvert depuis trop longtemps (plus de 3 heures).";
+App::$strings["Encrypt text"] = "Chiffrer le texte";
App::$strings["Not a valid email address"] = "Ce n'est pas une adresse de courriel valide";
App::$strings["Your email domain is not among those allowed on this site"] = "Votre domaine de courriel ne fait pas partie de ceux autorisés par ce site";
App::$strings["Your email address is already registered at this site."] = "Votre adresse de courriel est déjà inscrite sur ce site.";
@@ -152,34 +322,47 @@ App::$strings["Please enter the required information."] = "Merci d'entrer les in
App::$strings["Failed to store account information."] = "Impossible de stocker les informations liées au compte.";
App::$strings["Registration confirmation for %s"] = "Confirmation de l'enregistrement pour %s";
App::$strings["Registration request at %s"] = "Demande d'inscription sur %s";
-App::$strings["Administrator"] = "Administrateur";
App::$strings["your registration password"] = "votre mot de passe d'inscription";
App::$strings["Registration details for %s"] = "Détails de l'inscription à %s";
App::$strings["Account approved."] = "Compte approuvé.";
App::$strings["Registration revoked for %s"] = "Inscription révoquée pour %s";
App::$strings["Account verified. Please login."] = "Compte vérifié. Veuillez vous connecter.";
-App::$strings["Permission denied."] = "Permission refusée.";
-App::$strings["Image exceeds website size limit of %lu bytes"] = "L'image dépasse la taille limite de %lu octets";
-App::$strings["Image file is empty."] = "L'image est vide.";
-App::$strings["Unable to process image"] = "Impossible de traiter l'image";
-App::$strings["Photo storage failed."] = "Le stockage de l'image a échoué.";
-App::$strings["Photo Albums"] = "Albums photo";
-App::$strings["Upload New Photos"] = "Ajouter des photos";
+App::$strings["Click here to upgrade."] = "Cliquez ici pour mettre à jour.";
+App::$strings["This action exceeds the limits set by your subscription plan."] = "Cette action outrepasserait les limites prévues par votre forfait.";
+App::$strings["This action is not available under your subscription plan."] = "Cette action n'est pas possible avec la formule choisie.";
+App::$strings["Embedded content"] = "Contenu imbriqué";
+App::$strings["Embedding disabled"] = "Imbrication désactivée";
App::$strings["Visible to your default audience"] = "Visible pour vos contacts seulement.";
-App::$strings["Show"] = "Voir plus";
+App::$strings["Show"] = "Montrer";
App::$strings["Don't show"] = "Cacher";
App::$strings["Permissions"] = "Permissions";
-App::$strings["Close"] = "Fermer";
-App::$strings[" and "] = " et ";
+App::$strings[" and "] = "et";
App::$strings["public profile"] = "profil public";
App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s a changé %2\$s en &ldquo;%3\$s&rdquo;";
-App::$strings["Visit %1\$s's %2\$s"] = "Visiter %1\$s sur %2\$s";
-App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s a mis à jour %2\$s, modifiant %3\$s.";
+App::$strings["Visit %1\$s's %2\$s"] = "Visiter %1\$s de %2\$s";
+App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s a mis-à-jour %2\$s, modifiant %3\$s.";
App::$strings["Public Timeline"] = "Fil public";
+App::$strings["Site Admin"] = "Administrateur";
+App::$strings["Address Book"] = "Carnet d'adresse";
+App::$strings["Profile"] = "Profil";
+App::$strings["Mood"] = "Humeur";
+App::$strings["Poke"] = "Cogner";
+App::$strings["Probe"] = "Sonder";
+App::$strings["Suggest"] = "Suggérer";
+App::$strings["Random Channel"] = "Un Canal au Hasard";
+App::$strings["Invite"] = "Invitation";
+App::$strings["Features"] = "Fonctionalités";
+App::$strings["Language"] = "Langue";
+App::$strings["Post"] = "Envoyer";
+App::$strings["Profile Photo"] = "Photo du Profil";
+App::$strings["Update"] = "Mise-à-jour";
+App::$strings["Install"] = "Installer";
+App::$strings["Purchase"] = "Acheter";
+App::$strings["Permission denied."] = "Permission refusée.";
App::$strings["Item was not found."] = "Élément introuvable.";
App::$strings["No source file."] = "Pas de fichier source.";
App::$strings["Cannot locate file to replace"] = "Impossible de trouver le fichier à remplacer.";
-App::$strings["Cannot locate file to revise/update"] = "Impossible de trouver le fichier à corriger/mettre à jour";
+App::$strings["Cannot locate file to revise/update"] = "Impossible de trouver le fichier à corriger/mettre-à-jour";
App::$strings["File exceeds size limit of %d"] = "Le fichier dépasse la taille limite de %d";
App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Vous avez atteint votre limite de %1$.0f méga-octets autorisés pour le stockage des pièces-jointes";
App::$strings["File upload failed. Possible system limit or action terminated."] = "Envoi du fichier impossible. Limite système ou action avortée.";
@@ -190,79 +373,37 @@ App::$strings["duplicate filename or path"] = "doublon de chemin ou de fichier";
App::$strings["Path not found."] = "Chemin introuvable.";
App::$strings["mkdir failed."] = "mkdir a échoué.";
App::$strings["database storage failed."] = "l'écriture dans la BD a échoué";
-App::$strings["Click here to upgrade."] = "Cliquez ici pour mettre à jour.";
-App::$strings["This action exceeds the limits set by your subscription plan."] = "Cette action outrepasserait les limites prévues par votre forfait.";
-App::$strings["This action is not available under your subscription plan."] = "Cette action n'est pas possible avec la formule choisie.";
+App::$strings["Logged out."] = "Deconnecté.";
+App::$strings["Failed authentication"] = "Échec de l'authentification";
+App::$strings["Login failed."] = "Échec de la connexion.";
+App::$strings["Attachments:"] = "Pièces jointes:";
App::$strings["l F d, Y \\@ g:i A"] = "l d F Y \\à G\\hi";
+App::$strings["\$Projectname event notification:"] = "Notification d'événement de \$Projectname";
App::$strings["Starts:"] = "Début&nbsp;:";
App::$strings["Finishes:"] = "Fin&nbsp;:";
App::$strings["Location:"] = "Emplacement&nbsp;:";
-App::$strings["Logout"] = "Déconnexion";
-App::$strings["End this session"] = "Mettre fin à la session";
-App::$strings["Home"] = "Canal";
-App::$strings["Your posts and conversations"] = "Vos publications et conversations";
-App::$strings["View Profile"] = "Voir profil";
-App::$strings["Your profile page"] = "Votre profil";
-App::$strings["Edit Profiles"] = "Éditer les profils";
-App::$strings["Manage/Edit profiles"] = "Gérer/éditer les profils";
-App::$strings["Edit Profile"] = "Éditer le profil";
-App::$strings["Edit your profile"] = "Éditer votre profil";
-App::$strings["Your photos"] = "Vos photos";
-App::$strings["Your files"] = "Vos fichiers";
-App::$strings["Your chatrooms"] = "Vos salons";
-App::$strings["Your bookmarks"] = "Vos favoris";
-App::$strings["Your webpages"] = "Vos pages web";
-App::$strings["Sign in"] = "Connexion";
-App::$strings["%s - click to logout"] = "%s - cliquer ici pour déconnecter";
-App::$strings["Click to authenticate to your home hub"] = "S'authentifier auprès de votre hub";
-App::$strings["Home Page"] = "Page d'accueil";
-App::$strings["Register"] = "S'inscrire";
-App::$strings["Create an account"] = "Créer un compte";
-App::$strings["Help and documentation"] = "Aide et documentation";
-App::$strings["Apps"] = "Applications";
-App::$strings["Applications, utilities, links, games"] = "Applications, utilitaires, liens, jeux";
-App::$strings["Search site content"] = "Rechercher parmi le contenu du site";
-App::$strings["Channel Locator"] = "Localisation de canaux";
-App::$strings["Your matrix"] = "Votre matrice";
-App::$strings["Mark all matrix notifications seen"] = "Marquer toutes les notifications de la matrice comme vues";
-App::$strings["Channel home"] = "Mon canal";
-App::$strings["Mark all channel notifications seen"] = "Marquer toutes les notifications du canal comme vues";
-App::$strings["Connections"] = "Relations";
-App::$strings["Notices"] = "Notifications";
-App::$strings["Notifications"] = "Notifications";
-App::$strings["See all notifications"] = "Voir toutes les notifications";
-App::$strings["Mark all system notifications seen"] = "Marquer toutes les notifications système comme vues";
-App::$strings["Private mail"] = "Messages privés";
-App::$strings["See all private messages"] = "Voir tous les messages privés";
-App::$strings["Mark all private messages seen"] = "Marquer tous les messages privés comme vus";
-App::$strings["Inbox"] = "Boîte de réception";
-App::$strings["Outbox"] = "Boîte d'envoi";
-App::$strings["New Message"] = "Nouveau message";
-App::$strings["Event Calendar"] = "Calendrier des événements";
-App::$strings["See all events"] = "Voir tous les événements";
-App::$strings["Mark all events seen"] = "Marquer tous les événements comme vus";
-App::$strings["Manage Your Channels"] = "Gérer vos canaux";
-App::$strings["Account/Channel Settings"] = "Réglages du Compte/Canal";
-App::$strings["Admin"] = "Administrateur";
-App::$strings["Site Setup and Configuration"] = "Configuration du site";
-App::$strings["Nothing new here"] = "Aucun nouveau contenu trouvé";
-App::$strings["Please wait..."] = "Merci de patienter...";
+App::$strings["Image/photo"] = "Image/photo";
+App::$strings["Encrypted content"] = "Contenu chiffré";
+App::$strings["Install %s element: "] = "Installer %s élément";
+App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Ce message contient un élément installable %s, mais vous n'avez pas l'autorisation de l'installer sur ce site.";
+App::$strings["webpage"] = "Pages web";
+App::$strings["layout"] = "Mises en page";
+App::$strings["block"] = "Bloquer";
+App::$strings["menu"] = "Menu";
+App::$strings["QR code"] = "code QR";
+App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s a écrit %2\$s qui suit %3\$s";
+App::$strings["post"] = "l'article";
+App::$strings["Different viewers will see this text differently"] = "Ce texte aura un rendu différent en fonction des navigateurs";
+App::$strings["$1 spoiler"] = "Dévoile&nbsp;: $1";
+App::$strings["$1 wrote:"] = "$1 a écrit&nbsp;:";
App::$strings["%1\$s's bookmarks"] = "Favoris de %1\$s";
-App::$strings["Tags"] = "Étiquettes";
-App::$strings["Keywords"] = "Mots-clefs";
-App::$strings["have"] = "ont";
-App::$strings["has"] = "a";
-App::$strings["want"] = "veulent";
-App::$strings["wants"] = "veut";
-App::$strings["like"] = "aime";
-App::$strings["likes"] = "aiment";
-App::$strings["dislike"] = "déteste";
-App::$strings["dislikes"] = "détestent";
-App::$strings["__ctx:noun__ Like"] = array(
- 0 => "J'aime",
- 1 => "J'aime",
-);
+App::$strings["Missing room name"] = "Il manque le nom du salon";
+App::$strings["Duplicate room name"] = "Un salon de ce nom existe déjà";
+App::$strings["Invalid room specifier."] = "Identifiant de salon invalide.";
+App::$strings["Room not found."] = "Salon introuvable.";
+App::$strings["Room is full"] = "Le salon est plein";
App::$strings["Default"] = "Défaut";
+App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Le formulaire n'est plus sécurisé, probablement parce qu'il est ouvert depuis trop longtemps (plus de 3 heures).";
App::$strings["Frequently"] = "Constamment";
App::$strings["Hourly"] = "Chaque heure";
App::$strings["Twice daily"] = "Deux fois par jour";
@@ -292,123 +433,31 @@ App::$strings["Find"] = "Trouver";
App::$strings["Channel Suggestions"] = "Canaux suggérés";
App::$strings["Random Profile"] = "Un profil au hasard";
App::$strings["Invite Friends"] = "Inviter des amis";
-App::$strings["Exammple: name=fred and country=iceland"] = "Exemple: name=fred and country=iceland";
-App::$strings["Advanced Find"] = "Recherche avancée";
-App::$strings["Saved Folders"] = "Dossiers sauvegardés";
-App::$strings["Everything"] = "Tout";
-App::$strings["Categories"] = "Catégories";
+App::$strings["Advanced example: name=fred and country=iceland"] = "Exemple avancé&nbsp;: name=fred and country=iceland";
App::$strings["%d connection in common"] = array(
0 => "%d relation en commun",
1 => "%d relations en commun",
);
App::$strings["show more"] = "montrer plus";
-App::$strings["This event has been added to your calendar."] = "Cet événement a été ajouté à votre calendrier.";
-App::$strings["Invalid data packet"] = "Paquet de données invalide";
-App::$strings["Unable to verify channel signature"] = "Impossible de vérifier la signature du canal";
-App::$strings["Unable to verify site signature for %s"] = "Impossible de vérifier la signature de site pour %s";
-App::$strings["Miscellaneous"] = "Divers";
-App::$strings["year"] = "année";
-App::$strings["month"] = "mois";
-App::$strings["day"] = "jour";
-App::$strings["never"] = "jamais";
-App::$strings["less than a second ago"] = "à l'instant";
-App::$strings["years"] = "années";
-App::$strings["months"] = "mois";
-App::$strings["week"] = "semaine";
-App::$strings["weeks"] = "semaines";
-App::$strings["days"] = "jours";
-App::$strings["hour"] = "heure";
-App::$strings["hours"] = "heures";
-App::$strings["minute"] = "minute";
-App::$strings["minutes"] = "minutes";
-App::$strings["second"] = "seconde";
-App::$strings["seconds"] = "secondes";
-App::$strings["%1\$d %2\$s ago"] = "il y a %1\$d %2\$s";
-App::$strings["%1\$s's birthday"] = "Anniversaire de %1\$s";
-App::$strings["Happy Birthday %1\$s"] = "Joyeux Anniversaire %1\$s";
-App::$strings["Sort Options"] = "Options de tri";
-App::$strings["Alphabetic"] = "Alphabétique";
-App::$strings["Reverse Alphabetic"] = "Alphabétique inversé";
-App::$strings["Newest to Oldest"] = "Anté-chronologique";
-App::$strings["Enable Safe Search"] = "Activer la recherche sûre";
-App::$strings["Disable Safe Search"] = "Désactiver la recherche sûre";
-App::$strings["Safe Mode"] = "Mode sûr";
-App::$strings["Hubzilla Notification"] = "Notification Matrice Rouge";
-App::$strings["hubzilla"] = "Matrice Rouge";
-App::$strings["Thank You,"] = "Merci,";
-App::$strings["%s Administrator"] = "l'administrateur de %s";
-App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
-App::$strings["[Red:Notify] New mail received at %s"] = "[Red:Notification] Nouveau message reçu sur %s";
-App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, vous avez reçu un message privé sur %3\$s, de la part de %2\$s.";
-App::$strings["%1\$s sent you %2\$s."] = "%1\$s vous a envoyé %2\$s.";
-App::$strings["a private message"] = "un message privé";
-App::$strings["Please visit %s to view and/or reply to your private messages."] = "Merci de visiter %s pour voir et/ou répondre à vos messages privés.";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s a commenté sur [zrl=%3\$s]%4\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s a commenté sur [zrl=%3\$s]%5\$s de %4\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s a commenté [zrl=%3\$s]votre %4\$s[/zrl]";
-App::$strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red:Notification] Commentaire de %2\$s sur conversation #%1\$d";
-App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s a commenté un élément de conversation que vous suivez.";
-App::$strings["Please visit %s to view and/or reply to the conversation."] = "Merci de visiter %s pour voir et/ou répondre sur cette conversation.";
-App::$strings["[Red:Notify] %s posted to your profile wall"] = "[Red:Notification] %s a publié sur votre profil";
-App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s a publié sur votre profil à %3\$s";
-App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s a publié sur [zrl=%3\$s]votre profil[/zrl]";
-App::$strings["[Red:Notify] %s tagged you"] = "[Red:Notification] %s vous a étiqueté";
-App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, vous avez été étiqueté sur %3\$s par %2\$s";
-App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]vous a étiqueté[/zrl].";
-App::$strings["[Red:Notify] %1\$s poked you"] = "[Red:Notification] %1\$s vous a cogné";
-App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s vous a cogné sur %3\$s";
-App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]vous a cogné[/zrl].";
-App::$strings["[Red:Notify] %s tagged your post"] = "[Red:Notification] %s a étiqueté votre publication";
-App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s a étiqueté votre publication sur %3\$s";
-App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s a étiqueté [zrl=%3\$s]votre publication[/zrl]";
-App::$strings["[Red:Notify] Introduction received"] = "[Red:Notification] Nouvelle introduction";
-App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, vous avez reçu une demande de mise en relation de '%2\$s' sur %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, vous avez reçu [zrl=%2\$s]une demande de mise en relation[/zrl] de %3\$s.";
-App::$strings["You may visit their profile at %s"] = "Vous pouvez visiter leur profil sur %s";
-App::$strings["Please visit %s to approve or reject the connection request."] = "Merci de visiter %s avant d'approuver (ou non) cette demande de relation.";
-App::$strings["[Red:Notify] Friend suggestion received"] = "[Red:Notification] Nouvelle suggestion d'amitié";
-App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, vous avez reçu une suggestion de relation de '%2\$s' à %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, avez reçu %3\$s comme [zrl=%2\$s]une suggestion de relation[/zrl] de %4\$s.";
-App::$strings["Name:"] = "Nom&nbsp;:";
-App::$strings["Photo:"] = "Photo&nbsp;:";
-App::$strings["Please visit %s to approve or reject the suggestion."] = "Merci de visiter %s pour donner suite (ou non) à cette suggestion.";
-App::$strings["[Red:Notify]"] = "[Red:Notification]";
-App::$strings["parent"] = "retour";
-App::$strings["Collection"] = "Collection";
-App::$strings["Principal"] = "Principal";
-App::$strings["Addressbook"] = "Carnet d'adresse";
-App::$strings["Calendar"] = "Calendrier";
-App::$strings["Schedule Inbox"] = "Calendrier - Message entrants";
-App::$strings["Schedule Outbox"] = "Calendrier - Message sortants";
-App::$strings["%1\$s used"] = "%1\$s utilisé";
-App::$strings["%1\$s used of %2\$s (%3\$s&#37;)"] = "%1\$s utilisé de %2\$s (%3\$s&#37;)";
-App::$strings["Name"] = "Nom";
-App::$strings["Type"] = "Type";
-App::$strings["Size"] = "Taille";
-App::$strings["Last Modified"] = "Modifié le";
-App::$strings["Total"] = "Total";
-App::$strings["Create new folder"] = "Nouveau dossier";
-App::$strings["Create"] = "Créer";
-App::$strings["Upload file"] = "Téléverser un fichier";
-App::$strings["Upload"] = "Envoyer";
App::$strings["channel"] = "canal";
+App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s aime %3\$s de %2\$s";
App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s déteste %3\$s de %2\$s";
App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s ajoute %2\$s à ses relations";
App::$strings["%1\$s poked %2\$s"] = "%1\$s a cogné %2\$s";
App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s est %2\$s";
-App::$strings["Select"] = "Sélectionner";
-App::$strings["Private Message"] = "Message Privé";
-App::$strings["Message is verified"] = "Message vérifié";
+App::$strings["__ctx:title__ Likes"] = "J'aime";
+App::$strings["__ctx:title__ Dislikes"] = "Je n'aime pas";
+App::$strings["__ctx:title__ Agree"] = "Accord";
+App::$strings["__ctx:title__ Disagree"] = "Désaccord";
+App::$strings["__ctx:title__ Abstain"] = "Abstention";
+App::$strings["__ctx:title__ Attending"] = "Participations";
+App::$strings["__ctx:title__ Not attending"] = "Non-participations";
+App::$strings["__ctx:title__ Might attend"] = "Participation possible";
App::$strings["View %s's profile @ %s"] = "Voir le profil de %s @ %s";
App::$strings["Categories:"] = "Catégories&nbsp;:";
App::$strings["Filed under:"] = "Classé sous&nbsp;:";
-App::$strings[" from %s"] = "de %s";
-App::$strings["last edited: %s"] = "dernière édition&nbsp;: %s";
-App::$strings["Expires: %s"] = "Expire&nbsp;: %s";
App::$strings["View in context"] = "Voir en contexte";
-App::$strings["Please wait"] = "Merci de patienter";
App::$strings["remove"] = "supprimer";
-App::$strings["Loading..."] = "Chargement...";
App::$strings["Delete Selected Items"] = "Supprimer les éléments selectionnés";
App::$strings["View Source"] = "Voir source";
App::$strings["Follow Thread"] = "Suivre discussion";
@@ -437,13 +486,13 @@ App::$strings["%s don't like this."] = "%s déteste ça.";
App::$strings["Visible to <strong>everybody</strong>"] = "Visible par <strong>tout le monde</strong>";
App::$strings["Please enter a link URL:"] = "Merci d'entrer l'URL d'un lien&nbsp;:";
App::$strings["Please enter a video link/URL:"] = "Merci d'entrer l'URL d'une video&nbsp;:";
-App::$strings["Please enter an audio link/URL:"] = "Merci d'entrer l'URL d'un contenu audio&nbsp;:";
+App::$strings["Please enter an audio link/URL:"] = "Merci d'entrer l'URL d'un contenu audio&nsbp;:";
App::$strings["Tag term:"] = "Étiquette&nbsp;:";
App::$strings["Save to Folder:"] = "Classer dans le dossier&nbsp;:";
App::$strings["Where are you right now?"] = "Où êtes-vous présentement?";
App::$strings["Expires YYYY-MM-DD HH:MM"] = "Expire YYYY-MM-DD HH:MM";
App::$strings["Share"] = "Partager";
-App::$strings["Page link title"] = "Titre du lien vers la page";
+App::$strings["Page link name"] = "Nom du lien vers la page";
App::$strings["Post as"] = "Publier en tant que";
App::$strings["Upload photo"] = "Téléverser une photo";
App::$strings["upload photo"] = "téléverser une photo";
@@ -457,16 +506,16 @@ App::$strings["Insert audio link"] = "Insérer un lien audio";
App::$strings["audio link"] = "lien audio";
App::$strings["Set your location"] = "Spécifier votre emplacement géographique";
App::$strings["set location"] = "spécifier l'emplacement géographique";
+App::$strings["Toggle voting"] = "(Dés)activer le vote";
App::$strings["Clear browser location"] = "Nettoyer l'emplacement géographique du navigateur";
App::$strings["clear location"] = "nettoyer l'emplacement géographique";
-App::$strings["Set title"] = "Spécifier le titre";
-App::$strings["Categories (comma-separated list)"] = "Catégories (séparées par des virgules)";
+App::$strings["Title (optional)"] = "Titre (facultatif)";
+App::$strings["Categories (optional, comma-separated list)"] = "Catégories (facultatives, séparées par des virgules)";
App::$strings["Permission settings"] = "Permissions";
App::$strings["permissions"] = "permissions";
App::$strings["Public post"] = "Contenu public";
App::$strings["Example: bob@example.com, mary@example.com"] = "Exemple: robert@exemple.com, marie@exemple.com";
App::$strings["Set expiration date"] = "Définir la date d'expiration";
-App::$strings["Encrypt text"] = "Chiffrer le texte";
App::$strings["OK"] = "Ok";
App::$strings["Cancel"] = "Annuler";
App::$strings["Discover"] = "À découvrir";
@@ -475,7 +524,6 @@ App::$strings["Commented Order"] = "Commentaires Récents";
App::$strings["Sort by Comment Date"] = "Trier par date de dernier commentaire";
App::$strings["Posted Order"] = "Publications Récentes";
App::$strings["Sort by Post Date"] = "Trier par date de publication";
-App::$strings["Personal"] = "Personnel";
App::$strings["Posts that mention or involve you"] = "Publications qui vous mentionnent ou vous concernent d'une manière ou d'une autre";
App::$strings["New"] = "Nouveautés";
App::$strings["Activity Stream - by date"] = "Flux d'activité - par date";
@@ -487,10 +535,105 @@ App::$strings["Channel"] = "Canal";
App::$strings["Status Messages and Posts"] = "Messages d'état et contributions";
App::$strings["About"] = "À propos";
App::$strings["Profile Details"] = "Détails du profil";
+App::$strings["Photo Albums"] = "Albums photo";
App::$strings["Files and Storage"] = "Fichiers et Stockage";
App::$strings["Chatrooms"] = "Salons de clavardage";
App::$strings["Saved Bookmarks"] = "Favoris sauvegardés";
App::$strings["Manage Webpages"] = "Gérer les pages web";
+App::$strings["__ctx:noun__ Attending"] = array(
+ 0 => "Participation",
+ 1 => "Participations",
+);
+App::$strings["__ctx:noun__ Not Attending"] = array(
+ 0 => "Non-participation",
+ 1 => "Non-participations",
+);
+App::$strings["__ctx:noun__ Undecided"] = array(
+ 0 => "Indécis",
+ 1 => "",
+);
+App::$strings["__ctx:noun__ Agree"] = array(
+ 0 => "D'accord",
+ 1 => "D'accord",
+);
+App::$strings["__ctx:noun__ Disagree"] = array(
+ 0 => "Pas d'accord",
+ 1 => "Pas d'accord",
+);
+App::$strings["__ctx:noun__ Abstain"] = array(
+ 0 => "Sans opinion",
+ 1 => "Sans opinion",
+);
+App::$strings["Miscellaneous"] = "Divers";
+App::$strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-JJ ou MM-JJ";
+App::$strings["Required"] = "Requis";
+App::$strings["never"] = "jamais";
+App::$strings["less than a second ago"] = "à l'instant";
+App::$strings["year"] = "année";
+App::$strings["years"] = "années";
+App::$strings["month"] = "mois";
+App::$strings["months"] = "mois";
+App::$strings["week"] = "semaine";
+App::$strings["weeks"] = "semaines";
+App::$strings["day"] = "jour";
+App::$strings["days"] = "jours";
+App::$strings["hour"] = "heure";
+App::$strings["hours"] = "heures";
+App::$strings["minute"] = "minute";
+App::$strings["minutes"] = "minutes";
+App::$strings["second"] = "seconde";
+App::$strings["seconds"] = "secondes";
+App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "il y a %1\$d %2\$s";
+App::$strings["%1\$s's birthday"] = "Anniversaire de %1\$s";
+App::$strings["Happy Birthday %1\$s"] = "Joyeux Anniversaire %1\$s";
+App::$strings["Please choose"] = "Merci de choisir";
+App::$strings["Agree"] = "D'accord";
+App::$strings["Disagree"] = "Pas d'accord";
+App::$strings["Abstain"] = "Abstention";
+App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Le surnom contient des caractères interdits, ou est déjà pris sur ce site.";
+App::$strings["Directory Options"] = "Options d'annuaire";
+App::$strings["Safe Mode"] = "Mode sûr";
+App::$strings["No"] = "Non";
+App::$strings["Yes"] = "Oui";
+App::$strings["Public Forums Only"] = "Seulement les forums publics";
+App::$strings["This Website Only"] = "Juste ce site";
+App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
+App::$strings["[Red:Notify] New mail received at %s"] = "[Red:Notification] Nouveau message reçu sur %s";
+App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, vous avez reçu un message privé sur %3\$s, de la part de %2\$s.";
+App::$strings["%1\$s sent you %2\$s."] = "%1\$s vous a envoyé %2\$s.";
+App::$strings["a private message"] = "un message privé";
+App::$strings["Please visit %s to view and/or reply to your private messages."] = "Merci de visiter %s pour voir et/ou répondre à vos messages privés.";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s a commenté sur [zrl=%3\$s]%4\$s[/zrl]";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s a commenté sur [zrl=%3\$s]%5\$s de %4\$s[/zrl]";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s a commenté [zrl=%3\$s]votre %4\$s[/zrl]";
+App::$strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red:Notification] Commentaire de %2\$s sur conversation #%1\$d";
+App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s a commenté un élément de conversation que vous suivez.";
+App::$strings["Please visit %s to view and/or reply to the conversation."] = "Merci de visiter %s pour voir et/ou répondre sur cette conversation.";
+App::$strings["[Red:Notify] %s posted to your profile wall"] = "[Matrice Rouge:Notification] %s a publié sur votre profil";
+App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s a publié sur votre profil à %3\$s";
+App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s a publié sur [zrl=%3\$s]votre profil[/zrl]";
+App::$strings["[Red:Notify] %s tagged you"] = "[Red:Notification] %s vous a étiqueté";
+App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, vous avez été étiqueté sur %3\$s par %2\$s";
+App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]vous a étiqueté[/zrl].";
+App::$strings["[Red:Notify] %1\$s poked you"] = "[Red:Notification] %1\$s vous a cogné";
+App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, vous avez été cogné/pointé/sollicité par %2\$s sur %3\$s";
+App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]vous a cogné[/zrl].";
+App::$strings["[Red:Notify] %s tagged your post"] = "[Matrice Rouge:Notification] %s a étiqueté votre publication";
+App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s a étiqueté votre publication sur %3\$s";
+App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s a étiqueté [zrl=%3\$s]votre publication[/zrl]";
+App::$strings["[Red:Notify] Introduction received"] = "[Red:Notification] Nouvelle introduction";
+App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, vous avez reçu une demande de mise en relation de '%2\$s' sur %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, vous avez reçu [zrl=%2\$s]une demande de mise en relation[/zrl] de %3\$s.";
+App::$strings["You may visit their profile at %s"] = "Vous pouvez visiter leur profil sur %s";
+App::$strings["Please visit %s to approve or reject the connection request."] = "Merci de visiter %s avant d'approuver (ou non) cette demande de relation.";
+App::$strings["[Red:Notify] Friend suggestion received"] = "[Matrice Rouge:Notification] Nouvelle suggestion d'amitié";
+App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, vous avez reçu une suggestion de relation de '%2\$s' à %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, avez reçu %3\$s comme [zrl=%2\$s]une suggestion de relation[/zrl] de %4\$s.";
+App::$strings["Name:"] = "Nom&nbsp;:";
+App::$strings["Photo:"] = "Photo&nbsp;:";
+App::$strings["Please visit %s to approve or reject the suggestion."] = "Merci de visiter %s pour donner suite (ou non) à cette suggestion.";
+App::$strings["[Red:Notify]"] = "[Red:Notification]";
+App::$strings["This event has been added to your calendar."] = "Cet événement a été ajouté à votre calendrier.";
App::$strings["General Features"] = "Fonctionnalités générales";
App::$strings["Content Expiration"] = "Expiration de contenu";
App::$strings["Remove posts/comments and/or private messages at a future time"] = "Supprimer les contributions/commentaires et/ou messages privés plus tard";
@@ -504,8 +647,10 @@ App::$strings["Web Pages"] = "Pages web";
App::$strings["Provide managed web pages on your channel"] = "Fournir des pages web, sous votre contrôle, sur votre canal";
App::$strings["Private Notes"] = "Notes privées";
App::$strings["Enables a tool to store notes and reminders"] = "Active un outil pour stocker notes et mémos";
-App::$strings["Extended Identity Sharing"] = "Partage d'identité étendue";
-App::$strings["Share your identity with all websites on the internet. When disabled, identity is only shared with sites in the matrix."] = "Partage votre identité avec tous les sites web du Monde. Si décoché, l'identité sera seulement partagée avec les sites de la matrice.";
+App::$strings["Navigation Channel Select"] = "Sélection du canal par la navigation";
+App::$strings["Change channels directly from within the navigation dropdown menu"] = "Changez de canal directement depuis le menu de navigation";
+App::$strings["Photo Location"] = "Localisation des photos";
+App::$strings["If location data is available on uploaded photos, link this to a map."] = "Si des informations géographiques sont présentes dans les images téléversées, les afficher sur une carte.";
App::$strings["Expert Mode"] = "Mode expert";
App::$strings["Enable Expert Mode to provide advanced configuration options"] = "Activer le mode expert pour accéder aux options avancées";
App::$strings["Premium Channel"] = "Canal VIP";
@@ -513,18 +658,18 @@ App::$strings["Allows you to set restrictions and terms on those that connect wi
App::$strings["Post Composition Features"] = "Fonctionnalités de composition";
App::$strings["Use Markdown"] = "Utiliser Markdown";
App::$strings["Allow use of \"Markdown\" to format posts"] = "Authoriser l'usage de \"Markdown\" pour le format des partages";
-App::$strings["Post Preview"] = "Aperçu avant publication";
-App::$strings["Allow previewing posts and comments before publishing them"] = "Permettre de prévisualiser les publications/commentaires";
-App::$strings["Channel Sources"] = "Canaux sources";
+App::$strings["Large Photos"] = "Grandes photos";
+App::$strings["Include large (640px) photo thumbnails in posts. If not enabled, use small (320px) photo thumbnails"] = "Inclure une version large (640px) des aperçus dans les publications. Si désactivé, seulement inclure des aperçus de 320px.";
App::$strings["Automatically import channel content from other channels or feeds"] = "Importe automatiquement le contenus d'autres canaux ou flux dans le canal en cours";
App::$strings["Even More Encryption"] = "Encore plus de chiffrement";
App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Permettre le chiffrement - optionnel - du contenu de bout-en-bout au moyen d'un secret partagé";
+App::$strings["Enable voting tools"] = "Activer les outils de vote";
+App::$strings["Provide a class of post which others can vote on"] = "Fournit un type de publication sur lequel les utilisateurs peuvent se prononcer";
App::$strings["Network and Stream Filtering"] = "Filtrage du réseau et des flux";
App::$strings["Search by Date"] = "Chercher par date";
App::$strings["Ability to select posts by date ranges"] = "Pouvoir choisir des publications par date";
App::$strings["Collections Filter"] = "Filtre des collections";
App::$strings["Enable widget to display Network posts only from selected collections"] = "Activer une boîte qui permet de filtrer les publications du réseau parmi les collections selectionnées";
-App::$strings["Saved Searches"] = "Recherches sauvées";
App::$strings["Save search terms for re-use"] = "Sauver des termes de recherche pour utilisation ultérieure";
App::$strings["Network Personal Tab"] = "Onglet \"réseau personnel\"";
App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Activer un onglet affichant seulement les publications du réseau sur lesquelles vous êtes intervenu";
@@ -532,11 +677,11 @@ App::$strings["Network New Tab"] = "Onglet \"nouveautés réseau\"";
App::$strings["Enable tab to display all new Network activity"] = "Activer un onglet avec toute activité récente sur le réseau";
App::$strings["Affinity Tool"] = "Gérer l'affinité";
App::$strings["Filter stream activity by depth of relationships"] = "Filtrer le flux d'activité en fonction de la profondeur des relations";
+App::$strings["Connection Filtering"] = "Filtrage de connexions";
+App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filtrez les publications par leurs connexions, d'après des mots clés";
App::$strings["Suggest Channels"] = "Suggérer des canaux";
App::$strings["Show channel suggestions"] = "Montrer les suggestions de canaux";
App::$strings["Post/Comment Tools"] = "Gérer les publications/commentaires";
-App::$strings["Edit Sent Posts"] = "Éditer les publications envoyées";
-App::$strings["Edit and correct posts and comments after sending"] = "Permettre d'éditer/corriger les publications/commentaires après envoi";
App::$strings["Tagging"] = "Étiquettes";
App::$strings["Ability to tag existing posts"] = "Permettre de marquer les publications existantes";
App::$strings["Post Categories"] = "Catégoriser les publications";
@@ -552,51 +697,29 @@ App::$strings["Channel is blocked on this site."] = "Ce canal est bloqué sur ce
App::$strings["Channel location missing."] = "Emplacement du canal introuvable.";
App::$strings["Response from remote channel was incomplete."] = "La réponse du canal distant était incomplète.";
App::$strings["Channel was deleted and no longer exists."] = "Le canal a été supprimé et n'existe plus.";
+App::$strings["Protocol disabled."] = "Protocole désactivé.";
+App::$strings["Protocol blocked for this channel."] = "Protocole bloqué pour ce canal.";
App::$strings["Channel discovery failed."] = "La tentative d'accéder au canal a échouée.";
App::$strings["local account not found."] = "compte local introuvable.";
App::$strings["Cannot connect to yourself."] = "Ne peut pas se connecter à vous.";
-App::$strings["Missing room name"] = "Il manque le nom du salon";
-App::$strings["Duplicate room name"] = "Un salon de ce nom existe déjà";
-App::$strings["Invalid room specifier."] = "Identifiant de salon invalide.";
-App::$strings["Room not found."] = "Salon introuvable.";
-App::$strings["Room is full"] = "Le salon est plein";
-App::$strings["Permission denied"] = "Accès refusé";
-App::$strings["(Unknown)"] = "(Inconnu)";
-App::$strings["Visible to anybody on the internet."] = "Visible à tout le monde sur internet.";
-App::$strings["Visible to you only."] = "Visible pour vous seulement.";
-App::$strings["Visible to anybody in this network."] = "Visible sur toute la Matrice.";
-App::$strings["Visible to anybody authenticated."] = "Visible aux utilisateurs authentifiés.";
-App::$strings["Visible to anybody on %s."] = "Visible pour tous sur %s.";
-App::$strings["Visible to all connections."] = "Visible pour tous les contacts.";
-App::$strings["Visible to approved connections."] = "Visible aux contacts approuvés.";
-App::$strings["Item not found."] = "Élément introuvable.";
-App::$strings["Collection not found."] = "Collection introuvable.";
-App::$strings["Collection is empty."] = "Collection vide.";
-App::$strings["Collection: %s"] = "Collection&nbsp;: %s";
-App::$strings["Connection: %s"] = "Relation&nbsp;: %s";
-App::$strings["Connection not found."] = "Relation introuvable.";
App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un groupe supprimé portant ce nom a été ressuscité. Les permissions liées aux éléments existants <strong>peuvent</strong> s'appliquer au groupe et aux membres futurs. Si ce n'est pas ce que vous attendiez, merci de recréer un nouveau groupe avec un nom différent.";
App::$strings["Default privacy group for new contacts"] = "Groupe de confidentialité par défaut pour les nouveaux contacts";
App::$strings["All Channels"] = "Tous canaux";
App::$strings["edit"] = "éditer";
App::$strings["Collections"] = "Collections";
App::$strings["Edit collection"] = "Éditer collection";
-App::$strings["Create a new collection"] = "Créer une nouvelle collection";
+App::$strings["Add new collection"] = "Ajouter une nouvelle collection";
App::$strings["Channels not in any collection"] = "Ces canaux ne sont dans aucune collection";
-App::$strings["add"] = "ajouter";
App::$strings["Unable to obtain identity information from database"] = "Impossible d'obtenir les données d'identité depuis la base de données";
App::$strings["Empty name"] = "Nom vide";
App::$strings["Name too long"] = "Nom trop long";
App::$strings["No account identifier"] = "Pas d'identifiant de compte";
App::$strings["Nickname is required."] = "Un surnom est requis.";
App::$strings["Reserved nickname. Please choose another."] = "Pseudonyme réservé. Merci d'en choisir un autre.";
-App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Le surnom contient des caractères interdits, ou est déjà pris sur ce site.";
App::$strings["Unable to retrieve created identity"] = "Impossible de récupérer l'identité créée";
App::$strings["Default Profile"] = "Profil par défaut";
-App::$strings["Friends"] = "Amis";
App::$strings["Requested channel is not available."] = "Canal demandé non-disponible.";
App::$strings["Requested profile is not available."] = "Profil demandé inaccessible.";
-App::$strings["Connect"] = "Ajouter";
App::$strings["Change profile photo"] = "Changer la photo du profil";
App::$strings["Profiles"] = "Profils";
App::$strings["Manage/edit profiles"] = "Gérer/éditer les profils";
@@ -625,7 +748,7 @@ App::$strings["Age:"] = "Age&nbsp;:";
App::$strings["for %1\$d %2\$s"] = "depuis %1\$d %2\$s";
App::$strings["Sexual Preference:"] = "Orientation sexuelle&nbsp;:";
App::$strings["Hometown:"] = "Ville natale&nbsp;:";
-App::$strings["Tags:"] = "Étiquettes&nbsp;:";
+App::$strings["Tags:"] = "Étiquettes:";
App::$strings["Political Views:"] = "Opinions politiques&nbsp;:";
App::$strings["Religion:"] = "Religion&nbsp;:";
App::$strings["About:"] = "À propos&nbsp;:";
@@ -637,95 +760,27 @@ App::$strings["My other channels:"] = "Mes autres canaux&nbsp;:";
App::$strings["Musical interests:"] = "Goûts musicaux&nbsp;:";
App::$strings["Books, literature:"] = "Lectures, goûts littéraires&nbsp;:";
App::$strings["Television:"] = "Télévision&nbsp;:";
-App::$strings["Film/dance/culture/entertainment:"] = "Cinéma/danse/culture/divertissement&nbsp;:";
+App::$strings["Film/dance/culture/entertainment:"] = "Cinéma/danse/culture/divertissement&nsbp;:";
App::$strings["Love/Romance:"] = "Vie sentimentale/amoureuse&nbsp;:";
App::$strings["Work/employment:"] = "Travail&nbsp;:";
App::$strings["School/education:"] = "Cursus&nbsp;:";
App::$strings["Like this thing"] = "J'aime ceci";
-App::$strings["view full size"] = "pleine taille";
-App::$strings["Image/photo"] = "Image/photo";
-App::$strings["Encrypted content"] = "Contenu chiffré";
-App::$strings["QR code"] = "code QR";
-App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s a écrit %2\$s qui suit %3\$s";
-App::$strings["post"] = "l'article";
-App::$strings["$1 wrote:"] = "$1 a écrit&nbsp;:";
-App::$strings["No recipient provided."] = "Pas de destinataire.";
-App::$strings["[no subject]"] = "[sans objet]";
-App::$strings["Unable to determine sender."] = "Impossible de déterminer l'émetteur.";
-App::$strings["Stored post could not be verified."] = "Le message stocké n'a pas pu être vérifié.";
-App::$strings["System"] = "Système";
-App::$strings["Create Personal App"] = "Créer Votre Application";
-App::$strings["Edit Personal App"] = "Éditer Votre Application";
-App::$strings["Ignore/Hide"] = "Ignorer/Cacher";
-App::$strings["Suggestions"] = "Suggestion";
-App::$strings["See more..."] = "Voir plus...";
-App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Vous avez %1$.0f des %2$.0f relations autorisées.";
-App::$strings["Add New Connection"] = "Ajouter une nouvelle relation";
-App::$strings["Enter the channel address"] = "Adresse du canal";
-App::$strings["Example: bob@example.com, http://example.com/barbara"] = "Exemple&nbsp;: bob@exemple.com, http://exemple.com/barbara";
-App::$strings["Notes"] = "Notes";
-App::$strings["Remove term"] = "Retirer le terme";
-App::$strings["Archives"] = "Archives";
-App::$strings["Refresh"] = "Actualiser";
-App::$strings["Me"] = "Moi";
-App::$strings["Best Friends"] = "Mes meilleurs amis";
-App::$strings["Co-workers"] = "Mes collègues";
-App::$strings["Former Friends"] = "Mes anciens amis";
-App::$strings["Acquaintances"] = "Mes connaissances";
-App::$strings["Everybody"] = "Tout le monde";
-App::$strings["Account settings"] = "Réglages du Compte";
-App::$strings["Channel settings"] = "Réglages du Canal";
-App::$strings["Additional features"] = "Fonctions supplémentaires";
-App::$strings["Feature settings"] = "Extensions";
-App::$strings["Display settings"] = "Réglages d'affichage";
-App::$strings["Connected apps"] = "Applications connectées";
-App::$strings["Export channel"] = "Exporter le canal";
-App::$strings["Automatic Permissions (Advanced)"] = "Permissions automatiques (avancé)";
-App::$strings["Premium Channel Settings"] = "Canal VIP";
-App::$strings["Check Mail"] = "Vérifier le courrier";
-App::$strings["Chat Rooms"] = "Salons de clavardage";
-App::$strings["Bookmarked Chatrooms"] = "Salons favoris";
-App::$strings["Suggested Chatrooms"] = "Salons suggérés";
-App::$strings["Save to Folder"] = "Sauvegarder dans le dossier";
-App::$strings["View all"] = "Voir tout";
-App::$strings["__ctx:noun__ Dislike"] = array(
- 0 => "Je déteste",
- 1 => "Je déteste",
-);
-App::$strings["Add Star"] = "Ajouter Étoile";
-App::$strings["Remove Star"] = "Supprimer Étoile";
-App::$strings["Toggle Star Status"] = "Changer le Statut des Étoiles";
-App::$strings["starred"] = "mis en avant";
-App::$strings["Add Tag"] = "Ajouter une balise";
-App::$strings["I like this (toggle)"] = "J'aime (oui/non)";
-App::$strings["I don't like this (toggle)"] = "Je déteste (oui/non)";
-App::$strings["Share This"] = "Partager";
-App::$strings["share"] = "partager";
-App::$strings["View %s's profile - %s"] = "Voir le profil de %s - %s";
-App::$strings["to"] = "à";
-App::$strings["via"] = "via";
-App::$strings["Wall-to-Wall"] = "Mur-mur";
-App::$strings["via Wall-To-Wall:"] = "par Mur-mur&nbsp;:";
-App::$strings["Save Bookmarks"] = "Enregistrer les favoris";
-App::$strings["Add to Calendar"] = "Ajouter au Calendrier";
-App::$strings["__ctx:noun__ Likes"] = "Aimes";
-App::$strings["__ctx:noun__ Dislikes"] = "Détestes";
-App::$strings["%d comment"] = array(
- 0 => "%d commentaire",
- 1 => "%d commentaires",
-);
-App::$strings["[+] show all"] = "[+] voir plus";
-App::$strings["This is you"] = "C'est vous";
-App::$strings["Comment"] = "Commenter";
-App::$strings["Submit"] = "Envoyer";
-App::$strings["Bold"] = "Gras";
-App::$strings["Italic"] = "Italique";
-App::$strings["Underline"] = "Souligné";
-App::$strings["Quote"] = "Citation";
-App::$strings["Code"] = "Code";
-App::$strings["Image"] = "Image";
-App::$strings["Link"] = "Lien/URL";
-App::$strings["Video"] = "Vidéo";
+App::$strings["Permission denied"] = "Accès refusé";
+App::$strings["(Unknown)"] = "(Inconnu)";
+App::$strings["Visible to anybody on the internet."] = "Visible à tout le monde sur internet.";
+App::$strings["Visible to you only."] = "Visible pour vous seulement.";
+App::$strings["Visible to anybody in this network."] = "Visible sur toute la Matrice.";
+App::$strings["Visible to anybody authenticated."] = "Visible aux usagers authentifiés.";
+App::$strings["Visible to anybody on %s."] = "Visible pour tous sur %s.";
+App::$strings["Visible to all connections."] = "Visible pour tous les contacts.";
+App::$strings["Visible to approved connections."] = "Visible aux contacts approuvés.";
+App::$strings["Visible to specific connections."] = "Visible à certaines connexions.";
+App::$strings["Item not found."] = "Élément introuvable.";
+App::$strings["Collection not found."] = "Collection introuvable.";
+App::$strings["Collection is empty."] = "Collection vide.";
+App::$strings["Collection: %s"] = "Collection&nbsp;: %s";
+App::$strings["Connection: %s"] = "Relation&nbsp;: %s";
+App::$strings["Connection not found."] = "Relation introuvable.";
App::$strings["Delete this item?"] = "Supprimer cet élément?";
App::$strings["[-] show less"] = "[-] montrer moins";
App::$strings["[+] expand"] = "[+] déplier";
@@ -735,11 +790,17 @@ App::$strings["Passwords do not match"] = "Les mots de passe ne correspondent pa
App::$strings["everybody"] = "tout le monde";
App::$strings["Secret Passphrase"] = "Phrase de passe secrète";
App::$strings["Passphrase hint"] = "Indice pour la phrase de passe";
-App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Note&nbsp;: Les permissions ont changé, mais n'ont pas encore été soumises.";
+App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Note&nbsp;: Les permissions ont changées, mais n'ont pas encore été sauvées.";
App::$strings["close all"] = "fermer tout";
-App::$strings["timeago.prefixAgo"] = "Il y a";
+App::$strings["Nothing new here"] = "Aucun nouveau contenu trouvé";
+App::$strings["Rate This Channel (this is public)"] = "Noter ce canal (publiquement)";
+App::$strings["Rating"] = "Note";
+App::$strings["Describe (optional)"] = "Description (facultative)";
+App::$strings["Please enter a link URL"] = "Merci d'insérer une URL";
+App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Changements en attente. Voulez-vous vraiment quitter cette page?";
+App::$strings["timeago.prefixAgo"] = "timeago.prefixAgo";
App::$strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
-App::$strings["ago"] = " ";
+App::$strings["ago"] = "auparavant";
App::$strings["from now"] = "de maintenant";
App::$strings["less than a minute"] = "moins d'une minute";
App::$strings["about a minute"] = "environ une minute";
@@ -754,8 +815,59 @@ App::$strings["about a year"] = "environ un an";
App::$strings["%d years"] = "%d années";
App::$strings[" "] = " ";
App::$strings["timeago.numbers"] = "timeago.numbers";
-App::$strings["New window"] = "Nouvelle fenêtre";
-App::$strings["Open the selected location in a different window or browser tab"] = "Ouvrir l'emplacement dans une fenêtre (ou un onglet) différent";
+App::$strings["New Page"] = "Nouvelle page";
+App::$strings["View"] = "Voir";
+App::$strings["Actions"] = "Actions";
+App::$strings["Page Link"] = "Lien vers la page";
+App::$strings["Title"] = "Titre";
+App::$strings["Created"] = "Créé";
+App::$strings["Edited"] = "Édité";
+App::$strings["Can view my normal stream and posts"] = "Peut voir les publications sur mon canal et ses partages.";
+App::$strings["Can view my default channel profile"] = "Peut voir le profil du canal par défaut.";
+App::$strings["Can view my photo albums"] = "Peut voir mon album photos";
+App::$strings["Can view my connections"] = "Peut voir mes connections";
+App::$strings["Can view my file storage"] = "Peut voir mes fichiers en partage";
+App::$strings["Can view my webpages"] = "Peut voir mes sites-web";
+App::$strings["Can send me their channel stream and posts"] = "Peut m'envoyer le flux et les publications de leur canal";
+App::$strings["Can post on my channel page (\"wall\")"] = "Peut poster sur la page de mon canal (\"mur\")";
+App::$strings["Can comment on or like my posts"] = "Peuvent commenter et/ou aimer mes publications";
+App::$strings["Can send me private mail messages"] = "Peut m'envoyer des messages privés";
+App::$strings["Can post photos to my photo albums"] = "Peut ajouter des photos à mes albums";
+App::$strings["Can like/dislike stuff"] = "Peuvent aimer/détester";
+App::$strings["Profiles and things other than posts/comments"] = "Profils et autres excluant les publications/commentaires.";
+App::$strings["Can forward to all my channel contacts via post @mentions"] = "Peut faire suivre à tous les contacts du mon canal via @truc";
+App::$strings["Advanced - useful for creating group forum channels"] = "Avancé - utile seulement pour les canaux de type \"forum/groupe\"";
+App::$strings["Can chat with me (when available)"] = "Peut discuter avec moi (sous réserve de disponibilité)";
+App::$strings["Can write to my file storage"] = "Peut écrire dans mon partage de fichiers";
+App::$strings["Can edit my webpages"] = "Peut modifier mes sites-web";
+App::$strings["Can source my public posts in derived channels"] = "Peut rediriger mes publications publiques dans des canaux dérivés";
+App::$strings["Somewhat advanced - very useful in open communities"] = "Plutôt avancé - très utile dans les communautés ouvertes";
+App::$strings["Can administer my channel resources"] = "Peut administrer les ressources de mon canal";
+App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Très avancé. Ne pas toucher, sauf si vous savez VRAIMENT ce que vous faites";
+App::$strings["Social Networking"] = "Réseau social";
+App::$strings["Mostly Public"] = "Surtout public";
+App::$strings["Restricted"] = "Accès restreint";
+App::$strings["Private"] = "Privé";
+App::$strings["Community Forum"] = "Forum communautaire";
+App::$strings["Feed Republish"] = "Republication de flux";
+App::$strings["Special Purpose"] = "Utilisation spécifique";
+App::$strings["Celebrity/Soapbox"] = "Page de célébrité/tribune";
+App::$strings["Group Repository"] = "Espace de groupe";
+App::$strings["Other"] = "Autre";
+App::$strings["Custom/Expert Mode"] = "Mode expert/spécifique";
+App::$strings["Image exceeds website size limit of %lu bytes"] = "L'image dépasse la taille limite de %lu octets";
+App::$strings["Image file is empty."] = "L'image est vide.";
+App::$strings["Unable to process image"] = "Impossible de traiter l'image";
+App::$strings["Photo storage failed."] = "Le stockage de l'image a échoué.";
+App::$strings["Upload New Photos"] = "Ajouter des photos";
+App::$strings["Tags"] = "Étiquettes";
+App::$strings["Keywords"] = "Mots-clefs";
+App::$strings["have"] = "ont";
+App::$strings["has"] = "a";
+App::$strings["want"] = "veulent";
+App::$strings["wants"] = "veut";
+App::$strings["likes"] = "aiment";
+App::$strings["dislikes"] = "détestent";
App::$strings["Male"] = "Masculin";
App::$strings["Female"] = "Féminin";
App::$strings["Currently Male"] = "Actuellement masculin";
@@ -768,7 +880,6 @@ App::$strings["Transsexual"] = "Transsexuel";
App::$strings["Hermaphrodite"] = "Hermaphrodite";
App::$strings["Neuter"] = "Neutre";
App::$strings["Non-specific"] = "Rien de spécifique";
-App::$strings["Other"] = "Autre";
App::$strings["Undecided"] = "Indécis";
App::$strings["Males"] = "Hommes";
App::$strings["Females"] = "Femmes";
@@ -813,191 +924,342 @@ App::$strings["Uncertain"] = "Incertain";
App::$strings["It's complicated"] = "C'est compliqué";
App::$strings["Don't care"] = "S'en fiche";
App::$strings["Ask me"] = "Me demander";
-App::$strings["Logged out."] = "Deconnecté.";
-App::$strings["Failed authentication"] = "Échec de l'authentification";
-App::$strings["Login failed."] = "Échec de la connexion.";
-App::$strings["Can view my normal stream and posts"] = "Peut voir les publications sur mon canal et ses partages.";
-App::$strings["Can view my default channel profile"] = "Peut voir le profil du canal par défaut.";
-App::$strings["Can view my photo albums"] = "Peut voir mon album photos";
-App::$strings["Can view my connections"] = "Peut voir mes connections";
-App::$strings["Can view my file storage"] = "Peut voir mes fichiers en partage";
-App::$strings["Can view my webpages"] = "Peut voir mes sites-web";
-App::$strings["Can send me their channel stream and posts"] = "Peut m'envoyer le flux et les publications de leur canal";
-App::$strings["Can post on my channel page (\"wall\")"] = "Peut poster sur la page de mon canal (\"mur\")";
-App::$strings["Can comment on or like my posts"] = "Peuvent commenter et/ou aimer mes publications";
-App::$strings["Can send me private mail messages"] = "Peut m'envoyer des messages privés";
-App::$strings["Can post photos to my photo albums"] = "Peut ajouter des photos à mes albums";
-App::$strings["Can like/dislike stuff"] = "Peuvent aimer/détester";
-App::$strings["Profiles and things other than posts/comments"] = "Profils et autres excluant les publications/commentaires.";
-App::$strings["Can forward to all my channel contacts via post @mentions"] = "Peut faire suivre à tous les contacts du mon canal via @truc";
-App::$strings["Advanced - useful for creating group forum channels"] = "Avancé - utile seulement pour les canaux de type \"forum/groupe\"";
-App::$strings["Can chat with me (when available)"] = "Peut discuter avec moi (sous réserve de disponibilité)";
-App::$strings["Can write to my file storage"] = "Peut écrire dans mon partage de fichiers";
-App::$strings["Can edit my webpages"] = "Peut modifier mes sites-web";
-App::$strings["Can source my public posts in derived channels"] = "Peut rediriger mes publications publiques dans des canaux dérivés";
-App::$strings["Somewhat advanced - very useful in open communities"] = "Plutôt avancé - très utile dans les communautés ouvertes";
-App::$strings["Can administer my channel resources"] = "Peut administrer les ressources de mon canal";
-App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Très avancé. Ne pas toucher, sauf si vous savez VRAIMENT ce que vous faites";
-App::$strings["Set your current mood and tell your friends"] = "Indiquez votre humeur du moment à vos amis";
-App::$strings["Menu not found."] = "Menu introuvable.";
-App::$strings["Menu element updated."] = "Entrée de menu mis à jour.";
-App::$strings["Unable to update menu element."] = "Impossible de mettre l'entrée de menu à jour.";
-App::$strings["Menu element added."] = "Entrée de menu ajouté.";
-App::$strings["Unable to add menu element."] = "Impossible d'ajouter l'entrée de menu.";
-App::$strings["Not found."] = "Introuvable.";
-App::$strings["Manage Menu Elements"] = "Gérer les entrées de menu";
-App::$strings["Edit menu"] = "Éditer le menu";
-App::$strings["Edit element"] = "Éditer l'entrée";
-App::$strings["Drop element"] = "Supprimer l'entrée";
-App::$strings["New element"] = "Nouvelle entrée";
-App::$strings["Edit this menu container"] = "Éditer ce bloc de menu";
-App::$strings["Add menu element"] = "Ajouter une entrée au menu";
-App::$strings["Delete this menu item"] = "Supprimer cet entrée du menu";
-App::$strings["Edit this menu item"] = "Éditer cette entrée du menu";
-App::$strings["New Menu Element"] = "Nouvelle entrée de menu";
-App::$strings["Menu Item Permissions"] = "Permissions de l'entrée de menu";
-App::$strings["(click to open/close)"] = "(cliquer pour ouvrir/fermer)";
-App::$strings["Link text"] = "Texte du lien";
-App::$strings["URL of link"] = "URL du lien";
-App::$strings["Use Red magic-auth if available"] = "Utiliser l'authentification magique, lorsque disponible";
-App::$strings["Open link in new window"] = "Ouvrir le lien dans une nouvelle fenêtre";
-App::$strings["Order in list"] = "Ordre dans la liste";
-App::$strings["Higher numbers will sink to bottom of listing"] = "Les nombres les plus élevés seront descendus au bas de la liste";
-App::$strings["Menu item not found."] = "Entrée de menu introuvable.";
-App::$strings["Menu item deleted."] = "Entrée de menu supprimée.";
-App::$strings["Menu item could not be deleted."] = "Impossible de supprimer l'entrée de menu.";
-App::$strings["Edit Menu Element"] = "Éditer l'entrée de menu";
-App::$strings["Modify"] = "Modifier";
+App::$strings["Unable to lookup recipient."] = "Impossible de localiser le destinataire.";
+App::$strings["Unable to communicate with requested channel."] = "Impossible de communiquer avec le canal demandé.";
+App::$strings["Cannot verify requested channel."] = "Impossible de vérifier le canal demandé.";
+App::$strings["Selected channel has private message restrictions. Send failed."] = "Le canal choisi a des restrictions quant aux messages privés. L'envoi a échoué.";
+App::$strings["Message deleted."] = "Message supprimé.";
+App::$strings["Message recalled."] = "Message annulé/rappelé.";
+App::$strings["Send Private Message"] = "Envoyer un Message Privé";
+App::$strings["To:"] = "À&nbsp;:";
+App::$strings["Subject:"] = "Sujet&nbsp;:";
+App::$strings["Your message:"] = "Votre message&nbsp;:";
+App::$strings["Send"] = "Envoyer";
+App::$strings["Message not found."] = "Message introuvable.";
+App::$strings["Delete message"] = "Supprimer message";
+App::$strings["Recall message"] = "Rappeler/annuler le message";
+App::$strings["Message has been recalled."] = "Le message a été rappelé.";
+App::$strings["Private Conversation"] = "Conversation privée";
+App::$strings["Delete conversation"] = "Supprimer conversation";
+App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Aucune communication sécurisée n'est possible. Vous pourrez <strong>peut-être</strong> répondre depuis la page de profil de l'émetteur.";
+App::$strings["Send Reply"] = "Envoyer une réponse";
+App::$strings["Hub not found."] = "Hub introuvable.";
+App::$strings["Some blurb about what to do when you're new here"] = "Quelques mots sur quoi faire quand on est nouveau ici";
+App::$strings["Invalid item."] = "Élément invalide.";
+App::$strings["Channel not found."] = "Canal introuvable.";
+App::$strings["Page not found."] = "Page introuvable.";
+App::$strings["Lorem Ipsum"] = "";
+App::$strings["network"] = "réseau";
+App::$strings["RSS"] = "RSS";
+App::$strings["Theme settings updated."] = "Réglages du thème sauvegardés.";
+App::$strings["Site"] = "Site";
+App::$strings["Accounts"] = "Comptes";
+App::$strings["Channels"] = "Canaux";
+App::$strings["Plugins"] = "Extensions";
+App::$strings["Themes"] = "Thèmes";
+App::$strings["Inspect queue"] = "Analyser la file d'attente";
+App::$strings["Profile Config"] = "Configurations du profil";
+App::$strings["DB updates"] = "MàJ BD";
+App::$strings["Logs"] = "Journaux";
+App::$strings["Plugin Features"] = "Fonctionnalités liées aux extensions";
+App::$strings["User registrations waiting for confirmation"] = "Inscriptions en attente";
+App::$strings["# Accounts"] = "# Comptes";
+App::$strings["# blocked accounts"] = "# comptes bloqués";
+App::$strings["# expired accounts"] = "# comptes expirés";
+App::$strings["# expiring accounts"] = "# comptes expirant";
+App::$strings["# Channels"] = "# Canaux";
+App::$strings["# primary"] = "# primaire";
+App::$strings["# clones"] = "# clones";
+App::$strings["Message queues"] = "File des messages";
+App::$strings["Administration"] = "Administration";
+App::$strings["Summary"] = "Résumé";
+App::$strings["Registered accounts"] = "Comptes enregistrés";
+App::$strings["Pending registrations"] = "Inscriptions en attente";
+App::$strings["Registered channels"] = "Canaux enregistrés";
+App::$strings["Active plugins"] = "Extensions actives";
+App::$strings["Version"] = "Version";
+App::$strings["Site settings updated."] = "Réglages du site sauvegardés.";
+App::$strings["mobile"] = "mobile";
+App::$strings["experimental"] = "expérimental";
+App::$strings["unsupported"] = "non maintenu";
+App::$strings["Yes - with approval"] = "Oui - avec approbation";
+App::$strings["My site is not a public server"] = "Mon site n'est pas un serveur publique";
+App::$strings["My site has paid access only"] = "Mon site est payant";
+App::$strings["My site has free access only"] = "Mon site est gratuit";
+App::$strings["My site offers free accounts with optional paid upgrades"] = "Mon site offre des comptes gratuits avec des ajouts payants";
+App::$strings["Registration"] = "Inscription";
+App::$strings["File upload"] = "Envoi de fichier";
+App::$strings["Policies"] = "Stratégies";
+App::$strings["Site name"] = "Nom du site";
+App::$strings["Banner/Logo"] = "Bannière/logo";
+App::$strings["Administrator Information"] = "Informations sur l'administrateur";
+App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Coordonnées de l'administrateur du site. Affichée sur la page 'siteinfo'. Vous pouvez utiliser du BBCode ici";
+App::$strings["System language"] = "Langue du système";
+App::$strings["System theme"] = "Thème du système";
+App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Thème par défaut - il peut être changé pour chaque profil utilisateur - <a href='#' id='cnftheme'>modifier le thème</a>";
+App::$strings["Mobile system theme"] = "Thème système pour mobile";
+App::$strings["Theme for mobile devices"] = "Thème dédié aux périphériques mobiles";
+App::$strings["Enable Diaspora Protocol"] = "Activer la compatibilité Diaspora*";
+App::$strings["Communicate with Diaspora and Friendica - experimental"] = "Permet de communiquer avec Diaspora et Friendica - expérimental";
+App::$strings["Allow Feeds as Connections"] = "Autoriser les Flux (RSS) comme Relations";
+App::$strings["(Heavy system resource usage)"] = "(Impact considérable sur les ressources)";
+App::$strings["Maximum image size"] = "Taille maximale des images";
+App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Taille maximum, en octets, des images envoyées. Par défaut 0, soit sans limite.";
+App::$strings["Does this site allow new member registration?"] = "Est-ce que l'enregistrement de nouveau membres sur ce site est autorisé?";
+App::$strings["Which best describes the types of account offered by this hub?"] = "Choisissez le type de comptes offert sur ce hub?";
+App::$strings["Register text"] = "Texte d'inscription";
+App::$strings["Will be displayed prominently on the registration page."] = "Sera affiché de manière bien visible sur le formulaire d'inscription.";
+App::$strings["Site homepage to show visitors (default: login box)"] = "Page d'accueil du site à montrer aux visiteurs (par défaut&nbsp;:boîte de dialogue de connexion)";
+App::$strings["example: 'public' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file."] = "exemple&nbsp;:'public' pour montrer le flux public, 'page/sys/home' pour montrer une page système appelée 'home' ou 'include:home.html' pour inclure un fichier.";
+App::$strings["Preserve site homepage URL"] = "Garder l'adresse du site.";
+App::$strings["Present the site homepage in a frame at the original location instead of redirecting"] = "Présenter la page d'accueil du site dans un cadre à l'adresse d'origine, plutôt que de rediriger";
+App::$strings["Accounts abandoned after x days"] = "Les comptes sont abandonnés après x jours";
+App::$strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Pour éviter de gaspiller les ressources du système en essayer de mettre à jour des comptes abandonnés. Mettez 0 pour ne pas avoir de limite de temps.";
+App::$strings["Allowed friend domains"] = "Domaines amicaux";
+App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Liste de noms de domaines - séparés par des virgules - pour lesquels ce site acceptera les demandes d'amitié ou de mise en relation. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines.";
+App::$strings["Allowed email domains"] = "Domaines de courriels amicaux";
+App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Liste de noms de domaines - séparés par des virgules - dont les adresses de courriel seront autorisées lors de l'inscription à ce site. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines.";
+App::$strings["Not allowed email domains"] = "Domaines de courriel non autorisés";
+App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Liste de noms de domaines - séparés par des virgules - dont les adresses de courriel ne seront pas autorisées lors de l'inscription à ce site. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines, sauf si des domaines autorisés ont été définis.";
+App::$strings["Block public"] = "Bloquer public";
+App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Cocher pour interdire tout accès public, y compris aux pages marquées comme publiques, aux visiteurs anonymes.";
+App::$strings["Verify Email Addresses"] = "Demander vérification des adresses de courriel";
+App::$strings["Check to verify email addresses used in account registration (recommended)."] = "Cocher pour que les adresses utilisées à l'inscription soient vérifiées (recommandé).";
+App::$strings["Force publish"] = "Forcer publication";
+App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Cocher pour forcer la publication de tous les profils du site dans l'annuaire.";
+App::$strings["Disable discovery tab"] = "Désactiver l'onglet \"À découvrir\"";
+App::$strings["Remove the tab in the network view with public content pulled from sources chosen for this site."] = "Ne pas afficher d'onglet avec des contenus publics automatiquement rassemblées depuis des sources choisies pour ce site.";
+App::$strings["login on Homepage"] = "Connexion à partir de la page d'accueil";
+App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Présenter une boîte de dialogue de connexion aux visiteurs sur la page d'accueil si aucun autre contenu n'a été configuré.";
+App::$strings["Proxy user"] = "Utilisateurs du proxy";
+App::$strings["Proxy URL"] = "URL du proxy (visiter @proxy-list)";
+App::$strings["Network timeout"] = "Délai maximal du réseau";
+App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "En secondes. Mettre à 0 pour ne pas avoir de délai maximal (pas recommandé).";
+App::$strings["Delivery interval"] = "Intervalle de distribution";
+App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Temporise le processus de distribution de tant de secondes pour réduire la charge sur le système. Valeurs recommandées&nbsp;: 4-5 pour les serveurs mutualisés, 2-3 pour les VPS. 0-1 pour les gros serveurs dédiés.";
+App::$strings["Poll interval"] = "Intervalle de scrutation";
+App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Temporise le processus de scrutation en tâche de fond de tant de secondes, pour réduire la charge. Si 0, utilise l'intervalle de distribution.";
+App::$strings["Maximum Load Average"] = "Charge moyenne maximale";
+App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Charge système maximale au-delà de laquelle distribution et scrutation sont mis en pause - par défaut 50.";
+App::$strings["Expiration period in days for imported (matrix/network) content"] = "Délai d'expiration du contenu importé du réseau, en jours";
+App::$strings["0 for no expiration of imported content"] = "0 pour ne pas expirer le contenu importé";
+App::$strings["No server found"] = "Serveur introuvable";
+App::$strings["ID"] = "ID";
+App::$strings["for channel"] = "pour le canal";
+App::$strings["on server"] = "sur le serveur";
+App::$strings["Status"] = "État";
+App::$strings["Server"] = "Serveur";
+App::$strings["Update has been marked successful"] = "La mise à jour a été marquée comme réussie";
+App::$strings["Executing %s failed. Check system logs."] = "L'éxecution de %s a échoué. Merci de vérifier les journaux du système.";
+App::$strings["Update %s was successfully applied."] = "La mise à jour %s a été appliquée avec succès.";
+App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "La mise à jour %s n'a pas retourné d'information. Impossible de savoir si elle a réussi ou non.";
+App::$strings["Update function %s could not be found."] = "La fonction de mise à jour %s est introuvable.";
+App::$strings["No failed updates."] = "Aucune mise à jour défaillante.";
+App::$strings["Failed Updates"] = "Mises à jour défaillantes";
+App::$strings["Mark success (if update was manually applied)"] = "Marquer comme réussie (si la mise à jour a été réalisée manuellement)";
+App::$strings["Attempt to execute this update step automatically"] = "Tenter de réaliser cette étape de mise à jour automatiquement";
+App::$strings["Queue Statistics"] = "Statistiques de file d'attente";
+App::$strings["Total Entries"] = "Nombre d'entrées total";
+App::$strings["Priority"] = "Priorité";
+App::$strings["Destination URL"] = "URL de destination";
+App::$strings["Mark hub permanently offline"] = "Marquer le hub comme étant hors ligne de manière permanente";
+App::$strings["Empty queue for this hub"] = "Vider la file d'attente pour ce hub";
+App::$strings["Last known contact"] = "Dernier contact connu";
+App::$strings["%s account blocked/unblocked"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["%s account deleted"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["Account not found"] = "Compte introuvable";
+App::$strings["Account '%s' deleted"] = "Compte '%s' supprimé";
+App::$strings["Account '%s' blocked"] = "Compte '%s' bloqué";
+App::$strings["Account '%s' unblocked"] = "Compte '%s' débloqué";
+App::$strings["Users"] = "Utilisateurs";
+App::$strings["select all"] = "tout sélectionner";
+App::$strings["User registrations waiting for confirm"] = "Inscriptions en attente d'approbation";
+App::$strings["Request date"] = "Date de la demande";
+App::$strings["No registrations."] = "Pas d'inscriptions.";
+App::$strings["Approve"] = "Approuver";
+App::$strings["Deny"] = "Refuser";
+App::$strings["Block"] = "Bloquer";
+App::$strings["Unblock"] = "Débloquer";
+App::$strings["Register date"] = "Date d'inscription";
+App::$strings["Last login"] = "Dernière connexion";
+App::$strings["Expires"] = "Expire";
+App::$strings["Service Class"] = "Classe de service";
+App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Les comptes sélectionnés seront supprimés&nbsp;!\\n\\nTout ce que ces utilisateurs ont publié sur ce site sera détruit de manière définitive&nbsp;!\\n\\nÊtes-vous sûr&nbsp;?";
+App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Le compte {0} sera supprimé&nbsp;!\\n\\nTout ce que cet utilisateur a publié sur ce site sera détruit de manière définitive&nbsp;!\\n\\nÊtes-vous sûr&nbsp;?";
+App::$strings["%s channel censored/uncensored"] = array(
+ 0 => "censure modifiée sur %s canal",
+ 1 => "censure modifiée sur %s canaux",
+);
+App::$strings["%s channel code allowed/disallowed"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["%s channel deleted"] = array(
+ 0 => "%s canal supprimé",
+ 1 => "%s canaux supprimés",
+);
+App::$strings["Channel not found"] = "Canal introuvable";
+App::$strings["Channel '%s' deleted"] = "Canal '%s' supprimé";
+App::$strings["Channel '%s' censored"] = "Canal '%s' censuré";
+App::$strings["Channel '%s' uncensored"] = "Canal '%s' non-censuré";
+App::$strings["Channel '%s' code allowed"] = "Code autorisé pour le canal '%s'";
+App::$strings["Channel '%s' code disallowed"] = "Code interdit pour le canal '%s'";
+App::$strings["Censor"] = "Censurer";
+App::$strings["Uncensor"] = "Ne plus censurer";
+App::$strings["Allow Code"] = "Autoriser le code";
+App::$strings["Disallow Code"] = "Interdire le code";
+App::$strings["UID"] = "UID";
+App::$strings["Address"] = "Adresse";
+App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Les canaux sélectionnés seront supprimés!\\n\\nTout ce qui a été publié dans ces canaux sur ce site sera définitivement supprimé!\\n\\nÊtes-vous certain?";
+App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Le canal {0} sera supprimé!\\n\\nTout ce qui a été publié sur ce canal sera définitivement supprimé!\\n\\nÊtes-vous certain?";
+App::$strings["Plugin %s disabled."] = "Extension %s désactivée.";
+App::$strings["Plugin %s enabled."] = "Extension %s activée.";
+App::$strings["Disable"] = "Désactiver";
+App::$strings["Enable"] = "Activer";
+App::$strings["Toggle"] = "(Dés)activer";
+App::$strings["Author: "] = "Auteur&nbsp;:";
+App::$strings["Maintainer: "] = "Maintenu par&nbsp;:";
+App::$strings["No themes found."] = "Aucun thème trouvé.";
+App::$strings["Screenshot"] = "Aperçu";
+App::$strings["[Experimental]"] = "[Expérimental]";
+App::$strings["[Unsupported]"] = "[Non-supporté]";
+App::$strings["Log settings updated."] = "Réglages du journal sauvegardés.";
+App::$strings["Clear"] = "Vider";
+App::$strings["Debugging"] = "Débogage";
+App::$strings["Log file"] = "Fichier du journal";
+App::$strings["Must be writable by web server. Relative to your Red top-level directory."] = "Doit être accessible en écriture par le serveur web. Chemin relatif à la racine de votre installation de la Matrice Rouge.";
+App::$strings["Log level"] = "Niveau de journalisation";
+App::$strings["New Profile Field"] = "Nouveau champ de profil";
+App::$strings["Field nickname"] = "Nom court du champ";
+App::$strings["System name of field"] = "Nom système du champ";
+App::$strings["Input type"] = "Type de champ";
+App::$strings["Field Name"] = "Nom du champ";
+App::$strings["Label on profile pages"] = "Étiquette sur le profil";
+App::$strings["Help text"] = "Aide à la saisie";
+App::$strings["Additional info (optional)"] = "Informations additionnelles (facultatif)";
+App::$strings["Field definition not found"] = "Définition du champ non-trouvée";
+App::$strings["Edit Profile Field"] = "Éditer le champ de profil";
+App::$strings["This setting requires special processing and editing has been blocked."] = "Ce paramètre nécessité un traitement spécial, les modifications ont été bloquées.";
+App::$strings["Configuration Editor"] = "Editeur de configuration";
+App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Attention&nbsp;:modifier certains paramètres peut rendre votre canal inutilisable. Merci d'ignorer cette page à moins d'être suffisamment à l'aise de savoir comment utiliser correctement cette fonctionnalité.";
+App::$strings["Authorize application connection"] = "Autoriser l'application à se connecter";
+App::$strings["Return to your app and insert this Securty Code:"] = "Merci de retourner vers votre application, et d'y insérer ce Code de Sécurité&nbsp;:";
+App::$strings["Please login to continue."] = "Merci de vous connecter pour continuer.";
+App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Voulez-vous autoriser cette application à accéder à vos publications et contacts, et/ou à publier en votre nom?";
+App::$strings["Layout updated."] = "Agencement pris-en-compte.";
+App::$strings["Edit System Page Description"] = "Éditer la description";
+App::$strings["Layout not found."] = "Agencement introuvable.";
+App::$strings["Module Name:"] = "Nom du module&nbsp;:";
+App::$strings["Layout Help"] = "Aide à la mise en page";
+App::$strings["App installed."] = "Application installée.";
+App::$strings["Malformed app."] = "Erreur de l'application - Malformée.";
+App::$strings["Embed code"] = "Code intégré";
+App::$strings["Edit App"] = "Edition de l'Application";
+App::$strings["Create App"] = "Création d'une Application";
+App::$strings["Name of app"] = "Nom de l'application";
+App::$strings["Location (URL) of app"] = "Emplacement (Lien) vers l'application";
+App::$strings["Description"] = "Description";
+App::$strings["Photo icon URL"] = "Lien (URL) de l'icône à utiliser pour cette photo";
+App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixels - optionel";
+App::$strings["Version ID"] = "Version";
+App::$strings["Price of app"] = "Prix de l'application";
+App::$strings["Location (URL) to purchase app"] = "Emplacement (LIEN) pour l'achat de l'application";
+App::$strings["Page owner information could not be retrieved."] = "Impossible d'obtenir des informations sur le propriétaire de la page.";
+App::$strings["Album not found."] = "Album introuvable.";
+App::$strings["Delete Album"] = "Supprimer album";
+App::$strings["Delete Photo"] = "Supprimer photo";
+App::$strings["Public access denied."] = "Accès public refusé.";
+App::$strings["No photos selected"] = "Aucune photo selectionnée";
+App::$strings["Access to this item is restricted."] = "L'accès à l'élément est restreint.";
+App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "Vous avez utilisé %1$.2f mégaoctets sur les %2$.2f autorisés pour le stockage des photos.";
+App::$strings["%1$.2f MB photo storage used."] = "%1$.2f méga-octets utilisés pour le stockage des photos.";
+App::$strings["Upload Photos"] = "Téléverser des photos";
+App::$strings["Enter a new album name"] = "Entrer un nouveau nom d'album";
+App::$strings["or select an existing one (doubleclick)"] = "ou en sélectionner un existant (double-clic)";
+App::$strings["Create a status post for this upload"] = "Créer une publication de statut pour cet envoi";
+App::$strings["Album name could not be decoded"] = "Le nom de l'Album n'a pu être décodé";
+App::$strings["Contact Photos"] = "Photos de contact";
+App::$strings["Show Newest First"] = "Ordre anté-chronologique";
+App::$strings["Show Oldest First"] = "Ordre chronologique";
+App::$strings["View Photo"] = "Voir la photo";
+App::$strings["Edit Album"] = "Éditer l'album";
+App::$strings["Permission denied. Access to this item may be restricted."] = "Permission refusée. L'accès à cet élément peut avoir été restreint.";
+App::$strings["Photo not available"] = "Photo indisponible";
+App::$strings["Use as profile photo"] = "Utiliser comme photo du profil";
+App::$strings["Private Photo"] = "Photo privée";
+App::$strings["Previous"] = "Précédent";
+App::$strings["View Full Size"] = "Voir en taille réelle";
+App::$strings["Next"] = "Suivant";
+App::$strings["Remove"] = "Retirer";
+App::$strings["Edit photo"] = "Éditer la photo";
+App::$strings["Rotate CW (right)"] = "Rotation horaire (droite)";
+App::$strings["Rotate CCW (left)"] = "Rotation anti-horaire (gauche)";
+App::$strings["Caption"] = "Titre/légende";
+App::$strings["Add a Tag"] = "Ajouter une étiquette";
+App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Exemple&nbsp;: @marc, @Barbara_Jensen, @charles@exemple.com, #Ile_de_France, #marathon";
+App::$strings["Flag as adult in album view"] = "Marquer comme \"adulte\" dans l'affichage de l'album";
+App::$strings["In This Photo:"] = "Dans cette photo&nbsp;:";
+App::$strings["Map"] = "Carte";
+App::$strings["View Album"] = "Voir l'album";
+App::$strings["Recent Photos"] = "Photos récentes";
+App::$strings["Item not available."] = "Élément indisponible.";
App::$strings["sent you a private message"] = "vous a envoyé un message privé";
App::$strings["added your channel"] = "a ajouté votre canal";
App::$strings["posted an event"] = "a publié un événement";
-App::$strings["network"] = "réseau";
-App::$strings["Name is required"] = "Le nom est requis";
-App::$strings["Key and Secret are required"] = "Clef et secret sont requis";
-App::$strings["Passwords do not match. Password unchanged."] = "Les deux saisies du mot de passe ne correspondent pas. Il n'a donc pas été changé.";
-App::$strings["Empty passwords are not allowed. Password unchanged."] = "Le mot de passe ne peut pas être vide. Il n'a donc pas été changé.";
-App::$strings["Password changed."] = "Le mot de passe a été changé.";
-App::$strings["Password update failed. Please try again."] = "La mise à jour du mot de passe a échoué. Merci de recommencer.";
-App::$strings["Not valid email."] = "Adresse de courriel non-valide.";
-App::$strings["Protected email address. Cannot change to that email."] = "Adresse de courriel protégée. Impossible de l'utiliser.";
-App::$strings["System failure storing new email. Please try again."] = "Défaillance système lors du stockage de la nouvelle adresse de courriel. Merci de ré-essayer.";
-App::$strings["Settings updated."] = "Réglages sauvegardés.";
-App::$strings["Add application"] = "Ajouter une application";
-App::$strings["Name of application"] = "Nom de l'application";
-App::$strings["Consumer Key"] = "Clef de consommateur";
-App::$strings["Automatically generated - change if desired. Max length 20"] = "Généré automatiquement - à changer si besoin. Longueur maximale 20 caractères.";
-App::$strings["Consumer Secret"] = "Secret de consommateur";
-App::$strings["Redirect"] = "Redirection";
-App::$strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI de redirection - laissez blanc, sauf si l'application a demandé autrement";
-App::$strings["Icon url"] = "URL de l'icône";
-App::$strings["Optional"] = "Facultatif";
-App::$strings["You can't edit this application."] = "Vous ne pouvez pas éditer cette application.";
-App::$strings["Connected Apps"] = "Applications connectées";
-App::$strings["Client key starts with"] = "La clef partagée commence par";
-App::$strings["No name"] = "Sans nom";
-App::$strings["Remove authorization"] = "Révoquer l'autorisation";
-App::$strings["No feature settings configured"] = "Pas de fonctionnalité à configurer";
-App::$strings["Feature Settings"] = "Extensions";
-App::$strings["Account Settings"] = "Compte";
-App::$strings["Password Settings"] = "Mot de passe";
-App::$strings["New Password:"] = "Nouveau mot de passe&nbsp;:";
-App::$strings["Confirm:"] = "Confirmation&nbsp;:";
-App::$strings["Leave password fields blank unless changing"] = "Laissez les mots de passe vides si vous ne voulez pas les modifier";
-App::$strings["Email Address:"] = "Adresse de courriel&nbsp;:";
-App::$strings["Remove Account"] = "Supprimer le compte";
-App::$strings["Warning: This action is permanent and cannot be reversed."] = "Attention&nbsp;: cette action est permanente et irréversible.";
-App::$strings["Off"] = "Inactif";
-App::$strings["On"] = "Actif";
-App::$strings["Additional Features"] = "Fonctionnalités additionnelles";
-App::$strings["Connector Settings"] = "Connecteurs";
-App::$strings["No special theme for mobile devices"] = "Pas de thème spécifique aux périphériques mobiles";
-App::$strings["%s - (Experimental)"] = "%s - (Expérimental)";
-App::$strings["Display Settings"] = "Affichage";
-App::$strings["Display Theme:"] = "Thème&nbsp;:";
-App::$strings["Mobile Theme:"] = "Thème mobile&nbsp;:";
-App::$strings["Enable user zoom on mobile devices"] = "Permettre à l'utilisateur d'un mobile d'agrandir le contenu";
-App::$strings["Update browser every xx seconds"] = "Rafraîchir le navigateur toutes les xx secondes";
-App::$strings["Minimum of 10 seconds, no maximum"] = "Minimum 10 secondes, pas de maximum";
-App::$strings["Maximum number of conversations to load at any time:"] = "Nombre maximal de conversations pouvant être chargées en même temps&nbsp;:";
-App::$strings["Maximum of 100 items"] = "100 éléments au maximum";
-App::$strings["Don't show emoticons"] = "Ne pas montrer les frimousses/émoticones";
-App::$strings["System Page Layout Editor - (advanced)"] = "Agencements des pages système - (avancé)";
-App::$strings["Nobody except yourself"] = "Personne sauf vous";
-App::$strings["Only those you specifically allow"] = "Seulement ceux que vous autorisez spécifiquement";
-App::$strings["Approved connections"] = "Contacts Approuvés";
-App::$strings["Any connections"] = "Tous les contacts";
-App::$strings["Anybody on this website"] = "Tous les utilisateurs du hub";
-App::$strings["Anybody in this network"] = "Tous les utilisateurs sur ce réseau";
-App::$strings["Anybody authenticated"] = "Tous les utilisateurs authentifiés";
-App::$strings["Anybody on the internet"] = "Tous les utilisateurs d'Internet";
-App::$strings["Publish your default profile in the network directory"] = "Publier votre profil par défaut dans l'annuaire du réseau";
-App::$strings["No"] = "Non";
-App::$strings["Yes"] = "Oui";
-App::$strings["Allow us to suggest you as a potential friend to new members?"] = "Nous autoriser à vous suggérer comme relation potentielle aux nouveaux membres?";
-App::$strings["or"] = "ou";
-App::$strings["Your channel address is"] = "Voici l'adresse de votre canal";
-App::$strings["Channel Settings"] = "Canal";
-App::$strings["Basic Settings"] = "Basique";
-App::$strings["Your Timezone:"] = "Fuseau horaire&nbsp;:";
-App::$strings["Default Post Location:"] = "Emplacement géographique par défaut&nbsp;:";
-App::$strings["Geographical location to display on your posts"] = "Emplacement géographique à afficher sur vos publications";
-App::$strings["Use Browser Location:"] = "Utiliser la géolocalisation fournie par le navigateur&nbsp;:";
-App::$strings["Adult Content"] = "Contenu \"adulte\"";
-App::$strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Ce canal publie plus ou moins fréquemment du contenu pour adultes. (Merci d'indiquer tout contenu pour adulte ou potentiellement choquant avec l'étiquette <em>#NSFW</em> - Not Safe For Work)";
-App::$strings["Security and Privacy Settings"] = "Réglages de sécurité et vie privée";
-App::$strings["Hide my online presence"] = "Cacher ma présence en ligne";
-App::$strings["Prevents displaying in your profile that you are online"] = "Cacher votre statut (en ligne/hors ligne) sur votre profil";
-App::$strings["Simple Privacy Settings:"] = "Réglages simples&nbsp;:";
-App::$strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Très public - <em>extrèmement permissif (à n'utiliser qu'en connaissance de cause)</em>";
-App::$strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Classique - <em>public par défaut, privé en cas de besoin (comparable dans le principe aux réseaux sociaux centralisés, avec un mode privé plus efficace)</em>";
-App::$strings["Private - <em>default private, never open or public</em>"] = "Privé - <em>privé par défaut, jamais ouvert ni public</em>";
-App::$strings["Blocked - <em>default blocked to/from everybody</em>"] = "Bloqué - <em>par défaut, bloqué de/vers tout le monde</em>";
-App::$strings["Allow others to tag your posts"] = "Autoriser les autres à \"étiqueter\" vos publications";
-App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "Souvent utilisé par la communauté pour distinguer le contenu innaproprié";
-App::$strings["Advanced Privacy Settings"] = "Réglages avancés";
-App::$strings["Expire other channel content after this many days"] = "Faire expirer le contenu des autres canaux après n jours";
-App::$strings["0 or blank prevents expiration"] = "0, ou vide, pour ne pas faire expirer";
-App::$strings["Maximum Friend Requests/Day:"] = "Nombre maximum de mises en relation par jour&nbsp;:";
-App::$strings["May reduce spam activity"] = "Contribue à réduire l'impact des indésirables";
-App::$strings["Default Post Permissions"] = "Permissions par défaut des publications";
-App::$strings["Maximum private messages per day from unknown people:"] = "Nombre maximum de messages privés émanant d'inconnus, par jour&nbsp;:";
-App::$strings["Useful to reduce spamming"] = "Utile pour réduire les indésirables";
-App::$strings["Notification Settings"] = "Notifications";
-App::$strings["By default post a status message when:"] = "Par défaut, publier un statut quand:";
-App::$strings["accepting a friend request"] = "vous acceptez une mise en relation";
-App::$strings["joining a forum/community"] = "vous joignez un forum ou à une communauté";
-App::$strings["making an <em>interesting</em> profile change"] = "vous faites une modification <em>intéressante</em> de votre profil";
-App::$strings["Send a notification email when:"] = "Envoyer un courriel de notification quand&nbsp;:";
-App::$strings["You receive a connection request"] = "Vous recevez une demande de mise en relation";
-App::$strings["Your connections are confirmed"] = "Vous relations sont confirmées";
-App::$strings["Someone writes on your profile wall"] = "Quelqu'un a écrit sur votre mur";
-App::$strings["Someone writes a followup comment"] = "Quelqu'un a commenté sur vos publications";
-App::$strings["You receive a private message"] = "Vous recevez un message privé";
-App::$strings["You receive a friend suggestion"] = "Vous recevez une suggestion d'amitié/relation";
-App::$strings["You are tagged in a post"] = "Vous êtes étiqueté dans une publication";
-App::$strings["You are poked/prodded/etc. in a post"] = "Vous êtes cogné/encouragé/etc. dans une publication";
-App::$strings["Advanced Account/Page Type Settings"] = "Type de page/Compte (avancé)";
-App::$strings["Change the behaviour of this account for special situations"] = "Modifie le comportement de ce compte pour certains cas particuliers";
-App::$strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "Mode expert requis (<a href=\"settings/features\">Réglages > Fonctions supplémentaires</a>) svp ajuster!";
-App::$strings["Miscellaneous Settings"] = "Divers";
-App::$strings["Personal menu to display in your channel pages"] = "Menu personnel tel qu'il apparaîtra sur les pages de votre canal";
-App::$strings["Remove this channel"] = "Supprimer ce canal";
-App::$strings["Poke/Prod"] = "Cogner/Encourager";
-App::$strings["poke, prod or do other things to somebody"] = "Cogner, encourager, et autres choses à faire à quelqu'un";
+App::$strings["Block Name"] = "Nom du Bloc";
+App::$strings["Block Title"] = "Titre du bloc";
+App::$strings["Poke/Prod"] = "Cogner/Solliciter";
+App::$strings["poke, prod or do other things to somebody"] = "Cogner, pointer, et autres choses à faire à quelqu'un";
App::$strings["Recipient"] = "Destinataire";
App::$strings["Choose what you wish to do to recipient"] = "Choisir quoi lui faire";
App::$strings["Make this post private"] = "Rendre cette contribution privée";
-App::$strings["Authorize application connection"] = "Autoriser l'application à se connecter";
-App::$strings["Return to your app and insert this Securty Code:"] = "Merci de retourner vers votre application, et d'y insérer ce Code de Sécurité&nbsp;:";
-App::$strings["Please login to continue."] = "Merci de vous connecter pour continuer.";
-App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Voulez-vous autoriser cette application à accéder à vos publications et contacts, et/ou à publier en votre nom?";
+App::$strings["Bookmark added"] = "Favoris ajouté";
+App::$strings["My Bookmarks"] = "Mes Favoris";
+App::$strings["My Connections Bookmarks"] = "Favoris de mes relations";
+App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Vous avez créé %1$.0f des %2$.0f canaux autorisés.";
+App::$strings["Create a new channel"] = "Créer un nouveau canal";
+App::$strings["Current Channel"] = "Canal actif";
+App::$strings["Switch to one of your channels by selecting it."] = "Pour changer de canal, sélectionner en un";
+App::$strings["Default Channel"] = "Canal par défaut";
+App::$strings["Make Default"] = "Définir comme défaut";
+App::$strings["%d new messages"] = "%d nouveaux messages";
+App::$strings["%d new introductions"] = "%d nouvelles introductions";
+App::$strings["Delegated Channels"] = "Canaux délégués";
+App::$strings["Profile Match"] = "Profils similaires";
+App::$strings["No keywords to match. Please add keywords to your default profile."] = "Aucun mot-clef à comparer. Merci d'ajouter des mots-clefs à votre profil par défaut.";
+App::$strings["is interested in:"] = "s'intéresse à&nbsp;:";
+App::$strings["No matches"] = "Pas de correspondance";
+App::$strings["Members"] = "Membres";
+App::$strings["All Connected Channels"] = "Tous canaux connectés";
+App::$strings["Click on a channel to add or remove."] = "Cliquer sur un canal pour l'ajouter ou le supprimer";
+App::$strings["Poll"] = "";
+App::$strings["View Results"] = "Voir les résultats";
+App::$strings["You must be logged in to see this page."] = "Vous devez vous connecter pour voir cette page.";
+App::$strings["Insufficient permissions. Request redirected to profile page."] = "Permissions insuffisantes. Demande redirigée à la page du profil.";
App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Authentification magique bloquée. Vous êtes connecté sur ce site localement. Merci de vous en déconnecter et réessayer.";
App::$strings["Welcome %s. Remote authentication successful."] = "Bienvenue %s. L'authentification magique a fonctionné.";
-App::$strings["Item not available."] = "Élément indisponible.";
+App::$strings["Room not found"] = "Salon introuvable";
+App::$strings["Leave Room"] = "Quitter le salon";
+App::$strings["Delete This Room"] = "Supprimer le salon";
+App::$strings["I am away right now"] = "Je suis momentanément absent";
+App::$strings["I am online"] = "Je suis en ligne";
+App::$strings["Bookmark this room"] = "Marquer ce salon";
+App::$strings["New Chatroom"] = "Nouveau salon";
+App::$strings["Chatroom Name"] = "Nom du salon";
+App::$strings["%1\$s's Chatrooms"] = "Salons de %1\$s";
+App::$strings["Away"] = "Absent";
+App::$strings["Online"] = "En ligne";
App::$strings["Fetching URL returns error: %1\$s"] = "Récupération d'URL échouée&nbsp;: %1\$s";
-App::$strings["Invalid item."] = "Élément invalide.";
-App::$strings["Channel not found."] = "Canal introuvable.";
-App::$strings["Page not found."] = "Page introuvable.";
+App::$strings["\$Projectname - Guests: Username: {your email address}, Password: +++"] = "";
+App::$strings["No channel."] = "Pas de canal.";
+App::$strings["Common connections"] = "Relations communes";
+App::$strings["No connections in common."] = "Pas de relations en commun.";
App::$strings["Image uploaded but image cropping failed."] = "L'image a été téléversée, mais le recadrage a échoué.";
App::$strings["Image resize failed."] = "Le redimensionnement de l'image a échoué.";
App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Shirt-rechargez votre page, ou videz le cache du navigateur si la photo ne s'affiche pas immédiatement.";
@@ -1007,6 +1269,7 @@ App::$strings["Photo not available."] = "Photo inaccessible.";
App::$strings["Upload File:"] = "Fichier&nbsp;:";
App::$strings["Select a profile:"] = "Choisir un profil&nbsp;:";
App::$strings["Upload Profile Photo"] = "Téléverser une photo de profil";
+App::$strings["or"] = "ou";
App::$strings["skip this step"] = "passer cette étape";
App::$strings["select a photo from your photo albums"] = "choisir une photo dans vos albums";
App::$strings["Crop Image"] = "Recadrer l'image";
@@ -1015,7 +1278,39 @@ App::$strings["Done Editing"] = "J'ai terminé";
App::$strings["Image uploaded successfully."] = "Image téléversée avec succès.";
App::$strings["Image upload failed."] = "Le téléversement a échoué.";
App::$strings["Image size reduction [%s] failed."] = "La réduction de taille [%s] a échoué.";
-App::$strings["Block Name"] = "Nom du Bloc";
+App::$strings["Continue"] = "Continuer";
+App::$strings["Premium Channel Setup"] = "Configuration du canal VIP";
+App::$strings["Enable premium channel connection restrictions"] = "Activer les restrictions liées au canal VIP";
+App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Merci de saisir les restrictions et/ou conditions - reçu Paypal, transaction Bitcoin, ligne de conduite, ...";
+App::$strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Avant d'autoriser la mise en relation, ce canal attire votre attention sur les conditions suivantes&nbsp;:";
+App::$strings["Potential connections will then see the following text before proceeding:"] = "Les relations potentielles verront ce qui suit avant de pouvoir continuer&nbsp;:";
+App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "En continuant, je certifie que je me suis acquitté de toutes les instructions indiquées";
+App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(Aucune instruction spécifique n'a été établie par le propriétaire du canal.)";
+App::$strings["Restricted or Premium Channel"] = "Canal VIP ou restreint";
+App::$strings["Invalid request identifier."] = "Identifiant de requête invalide.";
+App::$strings["Discard"] = "Annuler";
+App::$strings["Ignore"] = "Ignorer";
+App::$strings["No more system notifications."] = "Pas d'autre notification du système.";
+App::$strings["System Notifications"] = "Notifications du système";
+App::$strings["Blocked"] = "Bloqué";
+App::$strings["Ignored"] = "Ignoré";
+App::$strings["Hidden"] = "Caché";
+App::$strings["Archived"] = "Archivé";
+App::$strings["Suggest new connections"] = "Suggérer de nouvelles relations";
+App::$strings["New Connections"] = "Nouvelles relations";
+App::$strings["Show pending (new) connections"] = "Voir les (nouvelles) relations en attente";
+App::$strings["All Connections"] = "Toutes les relations";
+App::$strings["Show all connections"] = "Voir toutes les relations";
+App::$strings["Unblocked"] = "Non bloquées";
+App::$strings["Only show unblocked connections"] = "Ne montrer que les relations non-bloquées";
+App::$strings["Only show blocked connections"] = "Ne montrer que les relations bloquées";
+App::$strings["Only show ignored connections"] = "Ne montrer que les relations ignorées";
+App::$strings["Only show archived connections"] = "Ne montrer que les relations archivées";
+App::$strings["Only show hidden connections"] = "Ne montrer que les relations cachées";
+App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
+App::$strings["Edit connection"] = "Modifier le contact";
+App::$strings["Search your connections"] = "Chercher parmi vos relations";
+App::$strings["Finding: "] = "Recherche&nbsp;:";
App::$strings["Profile not found."] = "Profil introuvable.";
App::$strings["Profile deleted."] = "Profil supprimé.";
App::$strings["Profile-"] = "Profil-";
@@ -1034,7 +1329,6 @@ App::$strings["Gender"] = "Sexe/Genre";
App::$strings["Sexual Preference"] = "Préférence sexuelle";
App::$strings["Homepage"] = "Site Internet";
App::$strings["Interests"] = "Centres d'intérêt";
-App::$strings["Address"] = "Adresse";
App::$strings["Location"] = "Emplacement";
App::$strings["Profile updated."] = "Profil mis à jour.";
App::$strings["Hide your contact/friend list from viewers of this profile?"] = "Cacher vos contacts/relations aux visiteurs de ce profil?";
@@ -1050,7 +1344,7 @@ App::$strings["Profile Name:"] = "Nom du profil&nbsp;:";
App::$strings["Your Full Name:"] = "Votre nom complet&nbsp;:";
App::$strings["Title/Description:"] = "Titre/description&nbsp;:";
App::$strings["Your Gender:"] = "Sexe/Genre&nbsp;:";
-App::$strings["Birthday (%s):"] = "Date de naissance (%s)&nbsp;:";
+App::$strings["Birthday :"] = "Date de naissance&nbsp;:";
App::$strings["Street Address:"] = "Adresse postale&nbsp;:";
App::$strings["Locality/City:"] = "Ville/Localité&nbsp;:";
App::$strings["Postal/Zip Code:"] = "Code postal&nbsp;:";
@@ -1081,219 +1375,447 @@ App::$strings["Age: "] = "Age&nbsp;:";
App::$strings["Edit/Manage Profiles"] = "Éditer/gérer les profils";
App::$strings["Add profile things"] = "Ajouter des choses de profil";
App::$strings["Include desirable objects in your profile"] = "Incluez des objets souhaitables dans votre profil";
-App::$strings["Bookmark added"] = "Favoris ajouté";
-App::$strings["My Bookmarks"] = "Mes Favoris";
-App::$strings["My Connections Bookmarks"] = "Favoris de mes relations";
+App::$strings["Could not access contact record."] = "Impossible d'accéder aux détails du contact.";
+App::$strings["Could not locate selected profile."] = "Impossible de localiser le profil sélectionné.";
+App::$strings["Connection updated."] = "Connexion mise à jour.";
+App::$strings["Failed to update connection record."] = "Impossible de mettre à jour les détails de la relation.";
+App::$strings["is now connected to"] = "est maintenant connecté avec";
+App::$strings["Could not access address book record."] = "Impossible d'accéder aux détails du carnet d'adresses.";
+App::$strings["Refresh failed - channel is currently unavailable."] = "Actualisation impossible - le canal est momentanément indisponible.";
+App::$strings["Unable to set address book parameters."] = "Impossible de régler les paramètres du carnet d'adresses.";
+App::$strings["Connection has been removed."] = "La relation a été supprimée";
+App::$strings["View %s's profile"] = "Voir le profil de %s";
+App::$strings["Refresh Permissions"] = "Actualiser les permissions";
+App::$strings["Fetch updated permissions"] = "Récupérer les permissions les plus récentes";
+App::$strings["Recent Activity"] = "Activité récente";
+App::$strings["View recent posts and comments"] = "Voir les contributions et commentaires récentes";
+App::$strings["Block (or Unblock) all communications with this connection"] = "Bloquer ou débloquer toute communication avec ce contact";
+App::$strings["This connection is blocked!"] = "Ce contact est bloqué&nbsp;!";
+App::$strings["Unignore"] = "Ne plus ignorer";
+App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Ignorer ou ne plus ignorer toute communication venant de ce contact";
+App::$strings["This connection is ignored!"] = "Ce contact est ignoré&nbsp;!";
+App::$strings["Unarchive"] = "Ne plus archiver";
+App::$strings["Archive"] = "Archiver";
+App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Archiver ou désarchiver ce contact - le marquer comme inactif mais conserver le contenu";
+App::$strings["This connection is archived!"] = "Ce contact est archivé&nbsp;!";
+App::$strings["Unhide"] = "Ne plus cacher";
+App::$strings["Hide"] = "Cacher";
+App::$strings["Hide or Unhide this connection from your other connections"] = "Cacher ou ne plus cacher ce contact vis-à-vis de vos autres contacts";
+App::$strings["This connection is hidden!"] = "Ce contact est caché&nbsp;!";
+App::$strings["Delete this connection"] = "Supprimer cette relation";
+App::$strings["Approve this connection"] = "Approuver cette relation";
+App::$strings["Accept connection to allow communication"] = "Accepter la relation pour permettre la communication";
+App::$strings["Set Affinity"] = "Définir le degré d'affinité";
+App::$strings["Set Profile"] = "Définir le profil";
+App::$strings["Set Affinity & Profile"] = "Définir le degré d'affinité et le profil";
+App::$strings["Apply these permissions automatically"] = "Appliquer ces permissions automatiquement";
+App::$strings["This connection's address is"] = "";
+App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Les permissions indiquées sur cette page seront appliquées à tous vos nouveaux contacts.";
+App::$strings["Slide to adjust your degree of friendship"] = "Faites glisser pour ajuster le niveau de la relation";
+App::$strings["Slide to adjust your rating"] = "Faîtes glisser pour ajuster votre note";
+App::$strings["Optionally explain your rating"] = "Explication facultative de votre évaluation";
+App::$strings["Custom Filter"] = "Filtre personnalisé";
+App::$strings["Only import posts with this text"] = "N'importer que les publications comprenant ce texte";
+App::$strings["words one per line or #tags or /patterns/, leave blank to import all posts"] = "";
+App::$strings["Do not import posts with this text"] = "Ne pas importer les publications comprenant ce texte";
+App::$strings["This information is public!"] = "Cette information est publique&nbsp;!";
+App::$strings["Connection Pending Approval"] = "Contact en attente d'approbation";
+App::$strings["Connection Request"] = "Demande de contact";
+App::$strings["(%s) would like to connect with you. Please approve this connection to allow communication."] = "(%s) veut devenir votre contact. Merci d'approuver cette demande pour permettre la communication.";
+App::$strings["Approve Later"] = "Approuver plus tard";
+App::$strings["inherited"] = "héritée";
+App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Merci de choisir le profil que vous souhaitez montrer quand %s visite votre profil de manière authentifiée.";
+App::$strings["Their Settings"] = "Ses réglages";
+App::$strings["My Settings"] = "Mes réglages";
+App::$strings["Individual Permissions"] = "Permissions spécifiques";
+App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Certaines permissions peuvent être héritées de vos <a href=\"settings\">paramètres de confidentialité</a> de canal, lesquels sont prioritaires sur les réglages individuels. Vous pouvez modifier ces permissions ici mais cela n'aura aucun effet à moins de changer les paramètres hérités.";
+App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Certaines permissions peuvent être héritées de vos <a href=\"settings\">paramètres de confidentialité</a> de canal, lesquels sont prioritaires sur les réglages individuels. Vous pouvez modifier ces permissions ici mais cela n'aura aucun effet à moins de changer les paramètres hérités.";
+App::$strings["Last update:"] = "Dernière mise-à-jour&nbsp;:";
App::$strings["Invalid profile identifier."] = "Identifiant de profil invalide.";
App::$strings["Profile Visibility Editor"] = "Éditeur de visibilité de profil";
App::$strings["Click on a contact to add or remove."] = "Cliquez sur un contact pour l'ajouter ou le retirer.";
App::$strings["Visible To"] = "Visible par";
-App::$strings["All Connections"] = "Toutes les relations";
+App::$strings["\$Projectname channel"] = "Canal \$Projectname";
+App::$strings["%d rating"] = array(
+ 0 => "%d évaluations",
+ 1 => "%d évaluations",
+);
+App::$strings["Gender: "] = "Sexe/genre&nbsp;:";
+App::$strings["Status: "] = "État&nbsp;:";
+App::$strings["Homepage: "] = "Site web&nbsp;:";
+App::$strings["Description:"] = "Description:";
+App::$strings["Public Forum:"] = "Forum public :";
+App::$strings["Keywords: "] = "Mots-clefs&nbsp;:";
+App::$strings["Don't suggest"] = "Ne pas suggérer";
+App::$strings["Common connections:"] = "Relations générales";
+App::$strings["Global Directory"] = "Annuaire global";
+App::$strings["Local Directory"] = "Annuaire local";
+App::$strings["Finding:"] = "Recherche&nbsp;:";
+App::$strings["next page"] = "page suivante";
+App::$strings["previous page"] = "page précédente";
+App::$strings["Sort options"] = "Options de tri";
+App::$strings["Alphabetic"] = "Alphabétique";
+App::$strings["Reverse Alphabetic"] = "Alphabétique inversé";
+App::$strings["Newest to Oldest"] = "Ordre anté-chronologique";
+App::$strings["Oldest to Newest"] = "Ordre chronologique";
+App::$strings["No entries (some entries may be hidden)."] = "Pas d'entrées (certaines peuvent être cachées).";
App::$strings["Public Sites"] = "Sites publics";
-App::$strings["The listed sites allow public registration into the Hubzilla. All sites in the matrix are interlinked so membership on any of them conveys membership in the matrix as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Les sites listés autorisent l'inscription pour tous. Tous sont liés entre eux, de manière à ce qu'un compte sur un seul d'entre eux soit valable sur l'ensemble de la matrice. Certains sites peuvent demander des frais de souscriptions, ou fournir des forfaits ajustés. Le lien \"fournisseur\" <strong>peut</strong> vous donner des détails supplémentaires.";
+App::$strings["The listed sites allow public registration for the \$Projectname network. All sites in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Les sites listés autorisent l'inscription publique au réseau \$Projectname. Tous les sites du réseau sont interconnectés, l'inscription sur l'un quelconque d'entre eux signifie donc l'inscription sur le réseau dans son ensemble. Certains sites peuvent nécessiter une souscription ou fournir des niveaux de service différenciés. Le lien du fournisseur <strong>peut</strong> fournir plus de détails.";
+App::$strings["Rate this hub"] = "Noter cette instance";
App::$strings["Site URL"] = "URL du site";
App::$strings["Access Type"] = "Type d'accès";
App::$strings["Registration Policy"] = "Politique d'inscription";
-App::$strings["You must be logged in to see this page."] = "Vous devez vous connecter pour voir cette page.";
-App::$strings["Insufficient permissions. Request redirected to profile page."] = "Permissions insuffisantes. Demande redirigée à la page du profil.";
+App::$strings["Project"] = "Projet";
+App::$strings["View hub ratings"] = "Voir les notes de cette instance";
+App::$strings["Rate"] = "Noter";
+App::$strings["View ratings"] = "Voir les notes";
+App::$strings["This site is not a directory server"] = "Ce site n'est pas un serveur d'annuaire";
+App::$strings["This directory server requires an access token"] = "Ce serveur d'annuaire requiert un jeton d'accès";
+App::$strings["Item not found"] = "Élément introuvable";
+App::$strings["Delete block?"] = "Supprimer le bloc?";
+App::$strings["Insert YouTube video"] = "Insérer une vidéo YouTube";
+App::$strings["Insert Vorbis [.ogg] video"] = "Insérer une vidéo Vorbis [.ogg]";
+App::$strings["Insert Vorbis [.ogg] audio"] = "Insérer un son Vorbis [.ogg]";
+App::$strings["Edit Block"] = "Éditer bloc";
+App::$strings["Delete layout?"] = "Supprimer la mise-en-page?";
+App::$strings["Layout Description (Optional)"] = "Description de la mise en page (facultatif)";
+App::$strings["Layout Name"] = "Nom de la mise-en-page";
+App::$strings["Edit Layout"] = "Éditer mise-en-page";
+App::$strings["Item is not editable"] = "Élément non-éditable";
+App::$strings["Delete item?"] = "Supprimer l'élément?";
+App::$strings["Edit post"] = "Éditer la contribution";
+App::$strings["Unable to find your hub."] = "Impossible de trouver votre hub.";
+App::$strings["Post successful."] = "Contribution effectuée.";
+App::$strings["Delete webpage?"] = "Supprimer la page web?";
+App::$strings["Page link title"] = "Titre du lien vers la page";
+App::$strings["Edit Webpage"] = "Éditer page web";
+App::$strings["Website:"] = "Site web&nbsp;:";
+App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Canal distant [%s] (encore inconnu sur ce site)";
+App::$strings["Rating (this information is public)"] = "Evaluation (cette information est publique)";
+App::$strings["Optionally explain your rating (this information is public)"] = "Explication facultative de votre évaluation (cette information est publique)";
+App::$strings["Calendar entries imported."] = "Entrées du calendrier importées.";
+App::$strings["No calendar entries found."] = "Aucune entrée du calendrier trouvée.";
+App::$strings["Event can not end before it has started."] = "La fin de l'événement ne peut être antérieure à son début.";
+App::$strings["Unable to generate preview."] = "Impossible de générer l'aperçu.";
+App::$strings["Event title and start time are required."] = "Un titre et une date de début sont requises pour l'événement.";
+App::$strings["Event not found."] = "Événement introuvable.";
+App::$strings["l, F j"] = "l j F";
+App::$strings["Edit event"] = "Éditer l'événement";
+App::$strings["Delete event"] = "Supprimer l'évènement";
+App::$strings["calendar"] = "calendrier";
+App::$strings["Create New Event"] = "Créer événement";
+App::$strings["Export"] = "Exports";
+App::$strings["Import"] = "Importer";
+App::$strings["Event removed"] = "Événement supprimé";
+App::$strings["Failed to remove event"] = "Impossible de supprimer l'événement";
+App::$strings["Event details"] = "Détails de l'événement";
+App::$strings["Starting date and Title are required."] = "Une date de début et un Titre sont requis.";
+App::$strings["Categories (comma-separated list)"] = "Catégories (séparées par des virgules)";
+App::$strings["Event Starts:"] = "L'événement débute&nbsp;:";
+App::$strings["Finish date/time is not known or not relevant"] = "Date/heure de fin inconnue ou sans objet";
+App::$strings["Event Finishes:"] = "L'événement termine&nbsp;:";
+App::$strings["Adjust for viewer timezone"] = "Ajuster au fuseau horaire du visiteur";
+App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Important pour les événements se tenant en un lieu particulier. Pas pratique pour les vacances communes à de nombreux pays dans le monde.";
+App::$strings["Title:"] = "Titre:";
+App::$strings["Share this event"] = "Partager cet événement";
+App::$strings["No ratings"] = "Pas de note";
+App::$strings["Ratings"] = "Evaluations";
+App::$strings["Rating: "] = "Evaluation&nbsp:";
+App::$strings["Website: "] = "Site web&nbsp;:";
+App::$strings["Description: "] = "Description&nbsp;:";
App::$strings["Select a bookmark folder"] = "Choisir un dossier de favoris";
App::$strings["Save Bookmark"] = "Sauver le favoris";
App::$strings["URL of bookmark"] = "URL du favoris";
-App::$strings["Description"] = "Description";
App::$strings["Or enter new bookmark folder name"] = "Ou entrez le nom d'un nouveau dossier";
-App::$strings["Room not found"] = "Salon introuvable";
-App::$strings["Leave Room"] = "Quitter le salon";
-App::$strings["Delete This Room"] = "Supprimer le salon";
-App::$strings["I am away right now"] = "Je suis momentanément absent";
-App::$strings["I am online"] = "Je suis en ligne";
-App::$strings["Bookmark this room"] = "Marquer ce salon";
-App::$strings["New Chatroom"] = "Nouveau salon";
-App::$strings["Chatroom Name"] = "Nom du salon";
-App::$strings["%1\$s's Chatrooms"] = "Salons de %1\$s";
+App::$strings["- select -"] = "- choisir -";
+App::$strings["Permission Denied."] = "Permission refusée.";
+App::$strings["File not found."] = "Fichier introuvable.";
+App::$strings["Edit file permissions"] = "Éditer les permissions du fichier";
+App::$strings["Set/edit permissions"] = "Définir/Édition des authorisations";
+App::$strings["Include all files and sub folders"] = "Inclure tous fichiers et sous-répertoires";
+App::$strings["Return to file list"] = "Retourner à la liste des fichiers";
+App::$strings["Copy/paste this code to attach file to a post"] = "Copiez/collez ce code pour joindre le fichier à une publication";
+App::$strings["Copy/paste this URL to link file from a web page"] = "Copiez/collez cette URL pour lier le fichier depuis une page web";
+App::$strings["Share this file"] = "Partager ce fichier";
+App::$strings["Show URL to this file"] = "Montrer l'URL de ce fichier";
+App::$strings["Notify your contacts about this file"] = "Notifier vos contacts à propos de ce fichier";
+App::$strings["Channel added."] = "Canal ajouté.";
App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Nombre d'inscriptions quotidiennes dépassé. Merci de recommencer demain.";
App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Merci d'indiquer votre adhésion aux Règles du Service. L'inscription a échoué.";
App::$strings["Passwords do not match."] = "Les mots de passe ne concordent pas.";
App::$strings["Registration successful. Please check your email for validation instructions."] = "Inscription réussie. Merci de vérifier vos courriels pour valider votre compte.";
App::$strings["Your registration is pending approval by the site owner."] = "Votre inscription est en attente de l'approbation d'un administrateur.";
App::$strings["Your registration can not be processed."] = "Votre inscription ne peut être traîtée.";
-App::$strings["Registration on this site/hub is by approval only."] = "L'inscription sur cette instance/ce site est soumise à une modération.";
+App::$strings["Registration on this site/hub is by approval only."] = "L'inscription sur cette instance/ce site est soumis à une modération.";
App::$strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">S'inscrire sur un site/hub affilié</a>";
App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Ce site a dépassé le nombre de création de compte autorisé par jour. Merci de recommencer demain.";
App::$strings["Terms of Service"] = "Règles du Service";
App::$strings["I accept the %s for this website"] = "J'accepte %s de ce site";
App::$strings["I am over 13 years of age and accept the %s for this website"] = "J'ai plus de 13 ans et j'accepte les %s de ce site";
-App::$strings["Registration"] = "Inscription";
App::$strings["Membership on this site is by invitation only."] = "L'inscription à ce site se fait uniquement sur invitation.";
App::$strings["Please enter your invitation code"] = "Merci de saisir votre code d'invitation";
App::$strings["Your email address"] = "Votre adresse de courriel";
App::$strings["Choose a password"] = "Choisissez un mot de passe";
App::$strings["Please re-enter your password"] = "Confirmez-le";
-App::$strings["Away"] = "Absent";
-App::$strings["Online"] = "En ligne";
+App::$strings["Contact not found."] = "Contact introuvable.";
+App::$strings["Friend suggestion sent."] = "Suggestion d'amitié/relation envoyée.";
+App::$strings["Suggest Friends"] = "Suggérer une relation";
+App::$strings["Suggest a friend for %s"] = "Suggérer une relation à %s";
App::$strings["Please login."] = "Merci de vous connecter.";
-App::$strings["Hubzilla - Guests: Username: {your email address}, Password: +++"] = "Matrice Rouge - Pour les invités: Nom d'utilisateur = {votre courriel}, Mot de passe = +++";
+App::$strings["Collection created."] = "Collection créée.";
+App::$strings["Could not create collection."] = "Impossible de créer la collection.";
+App::$strings["Collection updated."] = "Collection mise-à-jour.";
+App::$strings["Create a collection of channels."] = "Créez une collection de canaux.";
+App::$strings["Collection Name: "] = "Nom de la collection&nbsp;:";
+App::$strings["Members are visible to other channels"] = "Les membres sont visibles par les autres canaux";
+App::$strings["Collection removed."] = "Collection supprimée.";
+App::$strings["Unable to remove collection."] = "Impossible de supprimer la collection.";
+App::$strings["Collection Editor"] = "Éditeur de collection";
+App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "Il est impossible de supprimer un compte à l'intérieur de 48 heures après avoir changé le mot de passe d'un compte.";
+App::$strings["Remove This Account"] = "Supprimer ce Compte";
+App::$strings["WARNING: "] = "ATTENTION&nbsp;:";
+App::$strings["This account and all its channels will be completely removed from the network. "] = "Ce compte et tous ses canaux seront entièrement supprimés du réseau.";
+App::$strings["This action is permanent and can not be undone!"] = "Cette action est permanente et irréversible&nbsp;!";
+App::$strings["Please enter your password for verification:"] = "Merci de re-saisir votre mot de passe pour vérification&nbsp;:";
+App::$strings["Remove this account, all its channels and all its channel clones from the network"] = "Supprimer ce compte, tous ses canaux et tous les clones sur la matrice.";
+App::$strings["By default only the instances of the channels located on this hub will be removed from the network"] = "Par défault, seuls les instances de canaux situés sur ce hub seront supprimer de la matrice.";
+App::$strings["Remove Account"] = "Supprimer le compte";
+App::$strings["Help:"] = "Aide&nbsp;:";
+App::$strings["Not Found"] = "Introuvable";
+App::$strings["\$Projectname Documentation"] = "Documentation \$Projectname";
App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "Il est impossible de supprimer un canal à l'intérieur de 48 heures après avoir changé le mot de passe d'un compte.";
App::$strings["Remove This Channel"] = "Supprimer ce Canal";
-App::$strings["This will completely remove this channel from the network. Once this has been done it is not recoverable."] = "Ceci effacera complètement le canal du réseau. Une fois effacé, un canal ne PEUT PAS être récupéré.";
-App::$strings["Please enter your password for verification:"] = "Merci de re-saisir votre mot de passe pour vérification&nbsp;:";
+App::$strings["This channel will be completely removed from the network. "] = "Ce canal sera complètement supprimé du réseau.";
App::$strings["Remove this channel and all its clones from the network"] = "Supprimer ce canal ainsi que tous ses clones sur la matrice";
App::$strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Par défaut, seule l'instance du canal présente sur ce hub sera supprimée du réseau";
App::$strings["Remove Channel"] = "Enlever le canal";
-App::$strings["No channel."] = "Pas de canal.";
-App::$strings["Common connections"] = "Relations communes";
-App::$strings["No connections in common."] = "Pas de relation en commun.";
+App::$strings["\$Projectname"] = "\$Projectname";
+App::$strings["Welcome to %s"] = "Bienvenue sur %s";
App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Nous avons rencontré un problème avec l'OpenID que vous nous avez fourni. Merci de vérifier que l'ID est bien saisi.";
App::$strings["The error message was:"] = "Le message d'erreur était&nbsp;:";
App::$strings["Authentication failed."] = "Échec de l'authentification.";
App::$strings["Remote Authentication"] = "Authentification distante";
App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Entrez l'adresse de votre canal (p.ex. moncanal@monsite.com)";
App::$strings["Authenticate"] = "Authentifier";
-App::$strings["Continue"] = "Continuer";
-App::$strings["Premium Channel Setup"] = "Configuration du canal VIP";
-App::$strings["Enable premium channel connection restrictions"] = "Activer les restrictions liées au canal VIP";
-App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Merci de saisir les restrictions et/ou conditions - reçu Paypal, transaction Bitcoin, ligne de conduite, ...";
-App::$strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Avant d'autoriser la mise en relation, ce canal attire votre attention sur les conditions suivantes&nbsp;:";
-App::$strings["Potential connections will then see the following text before proceeding:"] = "Les relations potentielles verront ce qui suit avant de pouvoir continuer&nbsp;:";
-App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "En continuant, je certifie que je me suis acquitté de toutes les instructions indiquées";
-App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(Aucune instruction spécifique n'a été établie par le propriétaire du canal.)";
-App::$strings["Restricted or Premium Channel"] = "Canal VIP ou restreint";
-App::$strings["No such group"] = "Groupe introuvable";
-App::$strings["Search Results For:"] = "Résultats de recherche pour&nbsp;:";
-App::$strings["Collection is empty"] = "Collection vide";
-App::$strings["Collection: "] = "Collection&nbsp;:";
-App::$strings["Connection: "] = "Relation&nbsp;:";
-App::$strings["Invalid connection."] = "Relation invalide.";
-App::$strings["Could not access contact record."] = "Impossible d'accéder aux détails du contact.";
-App::$strings["Could not locate selected profile."] = "Impossible de localiser le profil sélectionné.";
-App::$strings["Connection updated."] = "Connexion mise à jour.";
-App::$strings["Failed to update connection record."] = "Impossible de mettre à jour les détails de la relation.";
-App::$strings["Blocked"] = "Bloqué";
-App::$strings["Ignored"] = "Ignoré";
-App::$strings["Hidden"] = "Caché";
-App::$strings["Archived"] = "Archivé";
-App::$strings["All"] = "Tout";
-App::$strings["Suggest new connections"] = "Suggérer de nouvelles relations";
-App::$strings["New Connections"] = "Nouvelles relations";
-App::$strings["Show pending (new) connections"] = "Voir les (nouvelles) relations en attente";
-App::$strings["Show all connections"] = "Voir toutes les relations";
-App::$strings["Unblocked"] = "Non bloquées";
-App::$strings["Only show unblocked connections"] = "Ne montrer que les relations non-bloquées";
-App::$strings["Only show blocked connections"] = "Ne montrer que les relations bloquées";
-App::$strings["Only show ignored connections"] = "Ne montrer que les relations ignorées";
-App::$strings["Only show archived connections"] = "Ne montrer que les relations archivées";
-App::$strings["Only show hidden connections"] = "Ne montrer que les relations cachées";
-App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-App::$strings["Edit contact"] = "Éditer contact";
-App::$strings["Search your connections"] = "Chercher parmi vos relations";
-App::$strings["Finding: "] = "Recherche&nbsp;:";
-App::$strings["Edit post"] = "Éditer la contribution";
-App::$strings["is now connected to"] = "est maintenant connecté avec";
-App::$strings["Could not access address book record."] = "Impossible d'accéder aux détails du carnet d'adresses.";
-App::$strings["Refresh failed - channel is currently unavailable."] = "Actualisation impossible - le canal est momentanément indisponible.";
-App::$strings["Channel has been unblocked"] = "Le canal n'est plus bloqué";
-App::$strings["Channel has been blocked"] = "Le canal est bloqué";
-App::$strings["Unable to set address book parameters."] = "Impossible de régler les paramètres du carnet d'adresses.";
-App::$strings["Channel has been unignored"] = "Le canal n'est plus ignoré";
-App::$strings["Channel has been ignored"] = "Le canal est ignoré";
-App::$strings["Channel has been unarchived"] = "Le canal n'est plus archivé";
-App::$strings["Channel has been archived"] = "Le canal est archivé";
-App::$strings["Channel has been unhidden"] = "Le canal n'est plus caché";
-App::$strings["Channel has been hidden"] = "Le canal est caché";
-App::$strings["Channel has been approved"] = "Le canal est approuvé";
-App::$strings["Channel has been unapproved"] = "Le canal n'est plus approuvé";
-App::$strings["Connection has been removed."] = "La relation a été supprimée";
-App::$strings["View %s's profile"] = "Voir le profil de %s";
-App::$strings["Refresh Permissions"] = "Actualiser les permissions";
-App::$strings["Fetch updated permissions"] = "Récupérer les permissions les plus récentes";
-App::$strings["Recent Activity"] = "Activité récente";
-App::$strings["View recent posts and comments"] = "Voir les contributions et commentaires récentes";
-App::$strings["Unblock"] = "Débloquer";
-App::$strings["Block"] = "Bloquer";
-App::$strings["Block or Unblock this connection"] = "Bloquer ou Débloquer cette relation";
-App::$strings["Unignore"] = "Ne plus ignorer";
-App::$strings["Ignore"] = "Ignorer";
-App::$strings["Ignore or Unignore this connection"] = "Ignorer ou ne plus ignorer cette relation";
-App::$strings["Unarchive"] = "Ne plus archiver";
-App::$strings["Archive"] = "Archiver";
-App::$strings["Archive or Unarchive this connection"] = "Archiver ou ne plus archiver cette relation";
-App::$strings["Unhide"] = "Ne plus cacher";
-App::$strings["Hide"] = "Cacher";
-App::$strings["Hide or Unhide this connection"] = "Cacher ou ne plus cacher cette relation";
-App::$strings["Delete this connection"] = "Supprimer cette relation";
-App::$strings["Approve this connection"] = "Approuver cette relation";
-App::$strings["Accept connection to allow communication"] = "Accepter la relation pour permettre la communication";
-App::$strings["Automatic Permissions Settings"] = "Permissions automatiques";
-App::$strings["Connections: settings for %s"] = "Relations&nbsp;: réglages pour %s";
-App::$strings["When receiving a channel introduction, any permissions provided here will be applied to the new connection automatically and the introduction approved. Leave this page if you do not wish to use this feature."] = "Pour chaque introduction reçue, toutes les permissions définies ici seront appliquées aux nouvelles relations automatiquement, et l'introduction sera approuvée. Laissez cette page telle quelle si vous ne souhaitez pas utiliser ce mécanisme.";
-App::$strings["Slide to adjust your degree of friendship"] = "Faites glisser pour ajuster le niveau de la relation";
-App::$strings["inherited"] = "héritée";
-App::$strings["Connection has no individual permissions!"] = "Cette relation n'a aucune permission spécifique!";
-App::$strings["This may be appropriate based on your <a href=\"settings\">privacy settings</a>, though you may wish to review the \"Advanced Permissions\"."] = "Ceci devrait correspondre à vos <a href=\"settings\">réglages de vie privée</a>, mais vous pouvez toujours contrôler les \"Permissions avancées\".";
-App::$strings["Profile Visibility"] = "Visibilité du profil";
-App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Merci de choisir le profil que vous souhaitez montrer quand %s visite votre profil de manière authentifiée.";
-App::$strings["Contact Information / Notes"] = "Notes / Information de contact";
-App::$strings["Edit contact notes"] = "Éditer les notes du contact";
-App::$strings["Their Settings"] = "Ses réglages";
-App::$strings["My Settings"] = "Mes réglages";
-App::$strings["Clear/Disable Automatic Permissions"] = "Effacer/Désactiver les Permissions Automatiques";
-App::$strings["Forum Members"] = "Membres du forum";
-App::$strings["Soapbox"] = "Blogue";
-App::$strings["Full Sharing (typical social network permissions)"] = "Partage Complet (fonctionnement habituel des réseaux sociaux)";
-App::$strings["Cautious Sharing "] = "Partage modéré";
-App::$strings["Follow Only"] = "Suivre uniquement";
-App::$strings["Individual Permissions"] = "Permissions spécifiques";
-App::$strings["Some permissions may be inherited from your channel <a href=\"settings\">privacy settings</a>, which have higher priority than individual settings. Changing those inherited settings on this page will have no effect."] = "Certaines permissions peuvent être héritées de vos <a href=\"settings\">réglages de vie privée</a>, lesquels sont prioritaires sur les réglages spécifiques. Changer ces permissions héritées sur la présente page n'aura aucun effet.";
-App::$strings["Advanced Permissions"] = "Permissions avancées";
-App::$strings["Simple Permissions (select one and submit)"] = "Permissions simples (en choisir une, puis valider)";
-App::$strings["Visit %s's profile - %s"] = "Visiter le profil de %s - %s";
-App::$strings["Block/Unblock contact"] = "Bloquer/Débloquer le contact";
-App::$strings["Ignore contact"] = "Ignorer le contact";
-App::$strings["Repair URL settings"] = "Réparer les réglages d'URL";
-App::$strings["View conversations"] = "Voir les conversations";
-App::$strings["Delete contact"] = "Supprimer le contact";
-App::$strings["Last update:"] = "Dernière mise à jour&nbsp;:";
-App::$strings["Update public posts"] = "Mettre à jour les publications";
-App::$strings["Update now"] = "Mettre à jour maintenant";
-App::$strings["Currently blocked"] = "Actuellement bloqué";
-App::$strings["Currently ignored"] = "Actuellement ignoré";
-App::$strings["Currently archived"] = "Actuellement archivé";
-App::$strings["Currently pending"] = "Actuellement en attente";
-App::$strings["Hide this contact from others"] = "Dissimuler ce contact aux autres";
-App::$strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Les réponses et autres réactions à vos contributions publiques <strong>pourraient</strong> être toujours visibles";
-App::$strings["No potential page delegates located."] = "Aucun délégué potentiel n'a été trouvé pour cette page.";
-App::$strings["Delegate Page Management"] = "Gestion des délégués de la page";
-App::$strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "Les délégués sont capables de gérer tous les aspects de ce compte ou de cette page, à l'exception des réglages basiques du compte. Merci de ne déléguer votre compte personnel qu'à quelqu'un en qui vous avez une confiance aveugle.";
-App::$strings["Existing Page Managers"] = "Actuels gestionnaires de pages";
-App::$strings["Existing Page Delegates"] = "Actuels délégués";
-App::$strings["Potential Delegates"] = "Délégués potentiels";
-App::$strings["Remove"] = "Retirer";
-App::$strings["Add"] = "Ajouter";
-App::$strings["No entries."] = "Aucune entrée.";
-App::$strings["Public access denied."] = "Accès public refusé.";
-App::$strings["Gender: "] = "Sexe/genre&nbsp;:";
-App::$strings["Finding:"] = "Recherche&nbsp;:";
-App::$strings["No entries (some entries may be hidden)."] = "Pas d'entrées (certaines peuvent être cachées).";
-App::$strings["Status: "] = "État&nbsp;:";
-App::$strings["Sexual Preference: "] = "Orientation sexuelle&nbsp;:";
-App::$strings["Homepage: "] = "Site web&nbsp;:";
-App::$strings["Hometown: "] = "Ville natale&nbsp;:";
-App::$strings["About: "] = "À propos&nbsp;:";
-App::$strings["Keywords: "] = "Mots-clefs&nbsp;:";
-App::$strings["This site is not a directory server"] = "Ce site n'est pas un serveur d'annuaire";
-App::$strings["Hubzilla - &quot;The Network&quot;"] = "La Matrice Rouge - &quot;LE Réseau&quot;";
-App::$strings["Welcome to %s"] = "Bienvenue sur %s";
-App::$strings["Hubzilla Server - Setup"] = "Serveur de la Matrice Rouge - Configuration";
+App::$strings["First Name"] = "Prénom";
+App::$strings["Last Name"] = "Nom de famille";
+App::$strings["Nickname"] = "Surnom";
+App::$strings["Full Name"] = "Nom complet";
+App::$strings["Profile Photo 16px"] = "Photo de profil 16px";
+App::$strings["Profile Photo 32px"] = "Photo de profil 32px";
+App::$strings["Profile Photo 48px"] = "Photo de profil 48px";
+App::$strings["Profile Photo 64px"] = "Photo de profil 64px";
+App::$strings["Profile Photo 80px"] = "Photo de profil 80px";
+App::$strings["Profile Photo 128px"] = "Photo de profil 128px";
+App::$strings["Timezone"] = "Fuseau horaire";
+App::$strings["Homepage URL"] = "URL de mon site Internet&nbsp;:";
+App::$strings["Birth Year"] = "Année de naissance";
+App::$strings["Birth Month"] = "Mois de naissance";
+App::$strings["Birth Day"] = "Jour de naissance";
+App::$strings["Birthdate"] = "Date de naissance";
+App::$strings["%s element installed"] = "Elément %s installé";
+App::$strings["%s element installation failed"] = "L'installation de l'élément %s a échoué";
+App::$strings["Items tagged with: %s"] = "Eléments étiquetés avec&nbsp;: %s";
+App::$strings["Search results for: %s"] = "Résultats de recherche pour&nbsp;: %s";
+App::$strings["Your service plan only allows %d channels."] = "Votre forfait n'autorise que %d canaux.";
+App::$strings["Nothing to import."] = "Rien à importer.";
+App::$strings["Unable to download data from old server"] = "Impossible de récupérer les données de l'ancien serveur";
+App::$strings["Imported file is empty."] = "Le fichier importé est vide.";
+App::$strings["The data provided is not compatible with this project."] = "";
+App::$strings["Warning: Database versions differ by %1\$d updates."] = "Attention&nbsp;: les versions de bases de données diffèrent de %1\$d mises à jour.";
+App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Impossible de créer un doublon d'un identifiant de canal. L'import a échoué.";
+App::$strings["Channel clone failed. Import failed."] = "Le clonage du canal a échoué. L'import a échoué.";
+App::$strings["Cloned channel not found. Import failed."] = "Le canal cloné n'a pas été trouvé. L'import a échoué.";
+App::$strings["You must be logged in to use this feature."] = "Vous devez vous connecter pour utiliser cette fonctionnalité.";
+App::$strings["Import Channel"] = "Importation de canal";
+App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "Utilisez ce formulaire pour importer un canal existant sur un autre serveur. Vous pouvez récupérer l'identité du canal sur l'ancien serveur directement par le réseau, ou bien fournir un fichier d'export/import.";
+App::$strings["File to Upload"] = "Fichier à envoyer";
+App::$strings["Or provide the old server/hub details"] = "Ou fournissez les détails de l'ancien serveur";
+App::$strings["Your old identity address (xyz@example.com)"] = "Votre ancienne identité (zyx@exemple.com)";
+App::$strings["Your old login email address"] = "Votre ancienne adresse de courriel";
+App::$strings["Your old login password"] = "Votre ancien mot de passe";
+App::$strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Quelle que soit l'option choisie, merci de décider si cette nouvelle adresse sera la primaire, ou si votre ancienne adresse continuera à jouer ce rôle. Vous pourrez publier depuis l'adresse de votre choix, mais une seule peut être déclarée comme stockage primaire de vos fichiers/photos/media.";
+App::$strings["Make this hub my primary location"] = "Faire de ce hub l'adresse principale de ce canal";
+App::$strings["Import existing posts if possible (experimental - limited by available memory"] = "Importer les publications existantes si possible (expérimental - limité par la mémoire disponible)";
+App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Ce processus peut prendre plusieurs minutes. Merci de ne valider le formulaire qu'une seule fois et de laisser cette page ouverte jusqu'à la fin.";
+App::$strings["No service class restrictions found."] = "Aucune restriction de classe de service trouvée.";
+App::$strings["Total invitation limit exceeded."] = "Limite du nombre total d'invitation dépassée.";
+App::$strings["%s : Not a valid email address."] = "%s&nbsp: adresse courriel invalide.";
+App::$strings["Please join us on Red"] = "Rejoignez-nous sur la Matrice Rouge";
+App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Limite d'invitations dépassée. Merci de contacter l'administration de votre site.";
+App::$strings["%s : Message delivery failed."] = "%s&nbsp;: Échec dans la livraison du message.";
+App::$strings["%d message sent."] = array(
+ 0 => "%d message envoyé.",
+ 1 => "%d messages envoyés.",
+);
+App::$strings["You have no more invitations available"] = "Vous ne disposez plus d'aucune invitation";
+App::$strings["Send invitations"] = "Envoyer des invitations";
+App::$strings["Enter email addresses, one per line:"] = "Entrez les adresses de courriel, une par ligne&nbsp;:";
+App::$strings["Please join my community on \$Projectname."] = "Rejoignez ma communauté sur \$Projectname.";
+App::$strings["You will need to supply this invitation code: "] = "Vous aurez besoin de fournir le code suivant:";
+App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Enregistrez-vous sur n'importe quel serveur \$Projectname (ils sont tous inter-connectés)";
+App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Saisissez l'adresse de mon canal \$Projectname dans la barre de recherche du site.";
+App::$strings["or visit "] = "ou visitez";
+App::$strings["3. Click [Connect]"] = "3. Click sur [Ajouter]";
+App::$strings["Name is required"] = "Le nom est requis";
+App::$strings["Key and Secret are required"] = "Clef et secret sont requis";
+App::$strings["Diaspora Policy Settings updated."] = "";
+App::$strings["Passwords do not match. Password unchanged."] = "Les deux saisies du mot de passe ne correspondent pas. Il n'a donc pas été changé.";
+App::$strings["Empty passwords are not allowed. Password unchanged."] = "Le mot de passe ne peut pas être vide. Il n'a donc pas été changé.";
+App::$strings["Password changed."] = "Le mot de passe a été changé.";
+App::$strings["Password update failed. Please try again."] = "La mise-à-jour du mot de passe a échoué. Merci de recommencer.";
+App::$strings["Not valid email."] = "Adresse de courriel non-valide.";
+App::$strings["Protected email address. Cannot change to that email."] = "Adresse de courriel protégée. Impossible de l'utiliser.";
+App::$strings["System failure storing new email. Please try again."] = "Défaillance système lors du stockage de la nouvelle adresse de courriel. Merci de ré-essayer.";
+App::$strings["Settings updated."] = "Réglages sauvegardés.";
+App::$strings["Add application"] = "Ajouter une application";
+App::$strings["Name of application"] = "Nom de l'application";
+App::$strings["Consumer Key"] = "Clef de consommateur";
+App::$strings["Automatically generated - change if desired. Max length 20"] = "Généré automatiquement - à changer si besoin. Longueur maximale 20 caractères.";
+App::$strings["Consumer Secret"] = "Secret de consommateur";
+App::$strings["Redirect"] = "Redirection";
+App::$strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI de redirection - laissez blanc, sauf si l'application a demandé autrement";
+App::$strings["Icon url"] = "URL de l'icône";
+App::$strings["Optional"] = "Facultatif";
+App::$strings["You can't edit this application."] = "Vous ne pouvez pas éditer cette application.";
+App::$strings["Connected Apps"] = "Applications connectées";
+App::$strings["Client key starts with"] = "La clef partagée commence par";
+App::$strings["No name"] = "Sans nom";
+App::$strings["Remove authorization"] = "Révoquer l'autorisation";
+App::$strings["No feature settings configured"] = "Pas de fonctionnalité à configurer";
+App::$strings["Feature/Addon Settings"] = "Paramètres des extensions/greffons";
+App::$strings["Settings for the built-in Diaspora emulator"] = "";
+App::$strings["Allow any Diaspora member to comment on your public posts"] = "";
+App::$strings["Enable the Diaspora protocol for this channel"] = "";
+App::$strings["Diaspora Policy Settings"] = "";
+App::$strings["Prevent your hashtags from being redirected to other sites"] = "";
+App::$strings["Account Settings"] = "Compte";
+App::$strings["Enter New Password:"] = "Nouveau mot de passe&nbsp;:";
+App::$strings["Confirm New Password:"] = "Confirmer le nouveau mot de passe&nbsp;:";
+App::$strings["Leave password fields blank unless changing"] = "Laissez les mots de passe vides si vous ne voulez pas les modifier";
+App::$strings["Email Address:"] = "Adresse de courriel&nbsp;:";
+App::$strings["Remove this account including all its channels"] = "Supprimer ce compte et tous ses canaux";
+App::$strings["Off"] = "Inactif";
+App::$strings["On"] = "Actif";
+App::$strings["Additional Features"] = "Fonctionnalités additionnelles";
+App::$strings["Connector Settings"] = "Connecteurs";
+App::$strings["No special theme for mobile devices"] = "Pas de thème spécifique aux périphériques mobiles";
+App::$strings["%s - (Experimental)"] = "%s - (Expérimental)";
+App::$strings["Display Settings"] = "Affichage";
+App::$strings["Theme Settings"] = "Paramètres du thème";
+App::$strings["Custom Theme Settings"] = "Paramètres personnels du thème";
+App::$strings["Content Settings"] = "Paramètres liés au contenu";
+App::$strings["Display Theme:"] = "Thème&nbsp;:";
+App::$strings["Mobile Theme:"] = "Thème mobile&nbsp;:";
+App::$strings["Enable user zoom on mobile devices"] = "Permettre à l'usager d'un mobile d'agrandir le contenu";
+App::$strings["Update browser every xx seconds"] = "Rafraîchir le navigateur toutes les xx secondes";
+App::$strings["Minimum of 10 seconds, no maximum"] = "Minimum 10 secondes, pas de maximum";
+App::$strings["Maximum number of conversations to load at any time:"] = "Nombre maximal de conversations pouvant être chargées en même temps&nbsp;:";
+App::$strings["Maximum of 100 items"] = "100 éléments au maximum";
+App::$strings["Show emoticons (smilies) as images"] = "Remplacer les émoticônes (smileys) par des images";
+App::$strings["Link post titles to source"] = "Lier les titres des publications à leur source";
+App::$strings["System Page Layout Editor - (advanced)"] = "Agencements des pages système - (avancé)";
+App::$strings["Use blog/list mode on channel page"] = "Utiliser le mode blog/liste sur la page du canal";
+App::$strings["(comments displayed separately)"] = "(commentaires affichés séparément)";
+App::$strings["Use blog/list mode on matrix page"] = "Utiliser le mode blog/liste sur la page de la matrice";
+App::$strings["Channel page max height of content (in pixels)"] = "Hauteur maximale du contenu pour la page du canal (en pixels)";
+App::$strings["click to expand content exceeding this height"] = "cliquer pour dérouler le contenu dépassant cette limite";
+App::$strings["Matrix page max height of content (in pixels)"] = "Hauteur maximale du contenu pour la page du réseau (en pixels)";
+App::$strings["Nobody except yourself"] = "Personne sauf vous";
+App::$strings["Only those you specifically allow"] = "Seulement ceux que vous autorisez spécifiquement";
+App::$strings["Approved connections"] = "Contacts Approuvés";
+App::$strings["Any connections"] = "Tous les contacts";
+App::$strings["Anybody on this website"] = "Tous les utilisateurs du hub";
+App::$strings["Anybody in this network"] = "Tous les utilisateurs sur ce réseau";
+App::$strings["Anybody authenticated"] = "Tous les utilisateurs authentifiés";
+App::$strings["Anybody on the internet"] = "Tous les utilisateurs d'Internet";
+App::$strings["Publish your default profile in the network directory"] = "Publier votre profil par défaut dans l'annuaire du réseau";
+App::$strings["Allow us to suggest you as a potential friend to new members?"] = "Nous autoriser à vous suggérer comme relation potentielle aux nouveaux membres?";
+App::$strings["Your channel address is"] = "Voici l'adresse de votre canal";
+App::$strings["Channel Settings"] = "Canal";
+App::$strings["Basic Settings"] = "Basique";
+App::$strings["Your Timezone:"] = "Fureau Horaire&nbsp;:";
+App::$strings["Default Post Location:"] = "Emplacement géographique par défaut&nbsp;:";
+App::$strings["Geographical location to display on your posts"] = "Emplacement géographique à afficher sur vos publications";
+App::$strings["Use Browser Location:"] = "Utiliser la géolocalisation fournie par le navigateur&nbsp;:";
+App::$strings["Adult Content"] = "Contenu \"adulte\"";
+App::$strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Ce canal publie plus ou moins fréquemment du contenu pour adultes. (Merci d'indiquer tout contenu pour adulte ou potentiellement choquant avec l'étiquette <em>#NSFW</em> - Not Safe For Work)";
+App::$strings["Security and Privacy Settings"] = "Réglages de Sécurité et vie privée";
+App::$strings["Your permissions are already configured. Click to view/adjust"] = "Vous permissions sont déjà paramétrées. Cliquer pour voir/ajuster";
+App::$strings["Hide my online presence"] = "Cacher ma présence en ligne";
+App::$strings["Prevents displaying in your profile that you are online"] = "Cacher votre statut (en ligne/hors ligne) sur votre profil";
+App::$strings["Simple Privacy Settings:"] = "Réglages simples&nbsp;:";
+App::$strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Très public - <em>extrèmement permissif (à n'utiliser qu'en connaissance de cause)</em>";
+App::$strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Classique - <em>public par défaut, privé en cas de besoin (comparable dans le principe aux réseaux sociaux centralisés, avec un mode privé plus efficace)</em>";
+App::$strings["Private - <em>default private, never open or public</em>"] = "Privé - <em>privé par défaut, jamais ouvert ni public</em>";
+App::$strings["Blocked - <em>default blocked to/from everybody</em>"] = "Bloqué - <em>par défaut, bloqué de/vers tout le monde</em>";
+App::$strings["Allow others to tag your posts"] = "Autoriser les autres à \"étiqueté\" vos publications";
+App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "Souvent utilisé par la communauté pour distinguer le contenu innaproprié";
+App::$strings["Advanced Privacy Settings"] = "Réglages avancés";
+App::$strings["Expire other channel content after this many days"] = "Faire expirer le contenu des autres canaux après n jours";
+App::$strings["0 or blank prevents expiration"] = "0, ou vide, pour ne pas faire expirer";
+App::$strings["Maximum Friend Requests/Day:"] = "Nombre maximum de mises en relation par jour&nbsp;:";
+App::$strings["May reduce spam activity"] = "Contribue à réduire l'impact des indésirables";
+App::$strings["Default Post Permissions"] = "Permissions par défaut des publications";
+App::$strings["(click to open/close)"] = "(cliquer pour ouvrir/fermer)";
+App::$strings["Channel permissions category:"] = "Catégorie de permissions du canal&nbsp;:";
+App::$strings["Maximum private messages per day from unknown people:"] = "Nombre maximum de messages privés émanant d'inconnus, par jour&nbsp;:";
+App::$strings["Useful to reduce spamming"] = "Utile pour réduire les indésirables";
+App::$strings["Notification Settings"] = "Notifications";
+App::$strings["By default post a status message when:"] = "Par défaut, publier un statut quand:";
+App::$strings["accepting a friend request"] = "vous acceptez une mise en relation";
+App::$strings["joining a forum/community"] = "vous joignez un forum ou à une communauté";
+App::$strings["making an <em>interesting</em> profile change"] = "vous faites une modification <em>intéressante</em> de votre profil";
+App::$strings["Send a notification email when:"] = "Envoyer un courriel de notification quand&nbsp;:";
+App::$strings["You receive a connection request"] = "Vous recevez une demande de mise en relation";
+App::$strings["Your connections are confirmed"] = "Vous relations sont confirmées";
+App::$strings["Someone writes on your profile wall"] = "Quelqu'un a écrit sur votre mur";
+App::$strings["Someone writes a followup comment"] = "Quelqu'un a commenté sur vos publications";
+App::$strings["You receive a private message"] = "Vous recevez un message privé";
+App::$strings["You receive a friend suggestion"] = "Vous recevez une suggestion d'amitié/relation";
+App::$strings["You are tagged in a post"] = "Vous êtes étiqueté dans une publication";
+App::$strings["You are poked/prodded/etc. in a post"] = "Vous êtes cogné/pointé/etc. dans une publication";
+App::$strings["Show visual notifications including:"] = "Afficher des notifications visuelles y compris&nbsp;:";
+App::$strings["Unseen matrix activity"] = "Activité non-vue sur la matrice";
+App::$strings["Unseen channel activity"] = "Activité non-vue sur le canal";
+App::$strings["Unseen private messages"] = "Messages privés non-vus";
+App::$strings["Recommended"] = "Recommandé";
+App::$strings["Upcoming events"] = "Événements à venir";
+App::$strings["Events today"] = "Événements aujourd'hui";
+App::$strings["Upcoming birthdays"] = "Anniversaires à venir";
+App::$strings["Not available in all themes"] = "Pas disponible dans tous les thèmes";
+App::$strings["System (personal) notifications"] = "Notifications système (personnelles)";
+App::$strings["System info messages"] = "Messages d'info système";
+App::$strings["System critical alerts"] = "Alertes critiques systèmes";
+App::$strings["New connections"] = "Nouvelles relations";
+App::$strings["System Registrations"] = "Inscriptions systèmes";
+App::$strings["Also show new wall posts, private messages and connections under Notices"] = "Montrer également les nouvelles publications sur mur, messages privés et relations dans Notices";
+App::$strings["Notify me of events this many days in advance"] = "Me prévenir d’événements à venir tant de jours en avance";
+App::$strings["Must be greater than 0"] = "Doit être supérieur à 0";
+App::$strings["Advanced Account/Page Type Settings"] = "Type de page/Compte (avancé)";
+App::$strings["Change the behaviour of this account for special situations"] = "Modifie le comportement de ce compte pour certains cas particuliers";
+App::$strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "Mode expert requis (<a href=\"settings/features\">Réglages > Fonctions supplémentaires</a>) svp ajuster!";
+App::$strings["Miscellaneous Settings"] = "Divers";
+App::$strings["Personal menu to display in your channel pages"] = "Menu personnel tel qu'il apparaîtra sur les pages de votre canal";
+App::$strings["Remove this channel."] = "Supprimer ce canal";
+App::$strings["Unable to locate original post."] = "Impossible de localiser la publication initiale.";
+App::$strings["Empty post discarded."] = "Publication vide annulée.";
+App::$strings["Executable content type not permitted to this channel."] = "Les contenus de type 'exécutable' ne sont pas autorisés sur ce canal.";
+App::$strings["System error. Post not saved."] = "Erreur système. Publication non sauvegardée.";
+App::$strings["Unable to obtain post information from database."] = "Impossible d'obtenir les informations de publication depuis la base de données.";
+App::$strings["You have reached your limit of %1$.0f top level posts."] = "Vous avez atteint votre limite de %1$.0f contributions \"racine\".";
+App::$strings["You have reached your limit of %1$.0f webpages."] = "Vous avez atteint votre limite de %1$.0f pages web.";
+App::$strings["\$Projectname Server - Setup"] = "Serveur \$Projectname - configuration";
App::$strings["Could not connect to database."] = "Impossible de se connecter à la base de données.";
App::$strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "Impossible de se connecter au site par l'URL indiquée. Problème potentiel de certificat SSL/TLS ou de DNS.";
App::$strings["Could not create table."] = "Impossible de créer la table.";
App::$strings["Your site database has been installed."] = "La base de données de votre site a été installée.";
-App::$strings["You may need to import the file \"install/database.sql\" manually using phpmyadmin or mysql."] = "Vous pourriez avoir besoin d'importer le fichier \"install/database.sql\" manuellement via phpmyadmin ou mysql.";
+App::$strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "Vous pourriez avoir besoin d'importer le fichier \"install/schema_xxx.sql\" manuellement via un client de base de données (ex: phpmyadmin).";
App::$strings["Please see the file \"install/INSTALL.txt\"."] = "Merci de consulter le fichier \"install/INSTALL.txt\".";
App::$strings["System check"] = "Vérification du système";
-App::$strings["Next"] = "Suivant";
App::$strings["Check again"] = "Re-vérifier";
App::$strings["Database connection"] = "Connexion à la base de données";
-App::$strings["In order to install Hubzilla we need to know how to connect to your database."] = "Pour installer la Matrice Rouge, nous avons besoin de savoir comment contacter votre base de données.";
+App::$strings["In order to install \$Projectname we need to know how to connect to your database."] = "Pour installer \$Projectname, nous avons besoin de savoir comment se connecter à votre base de données.";
App::$strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Merci de contacter votre prestataire d'hébergement ou votre administrateur système si vous avez des doutes à propos de ces paramètres.";
App::$strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "La base de données que vous allez spécifier doit exister. Si ce n'est pas déjà le cas, merci de la créer avant de continuer.";
App::$strings["Database Server Name"] = "Nom du serveur de la base de données";
@@ -1303,6 +1825,7 @@ App::$strings["Communication port number - use 0 for default"] = "Numéro TCP du
App::$strings["Database Login Name"] = "Identifiant de connexion à la Base de Données";
App::$strings["Database Login Password"] = "Mot de passe de connexion à la Base de Données";
App::$strings["Database Name"] = "Nom de la Base de Données";
+App::$strings["Database Type"] = "Type de base de données";
App::$strings["Site administrator email address"] = "Adresse de courriel de l'administrateur du site";
App::$strings["Your account email address must match this in order to use the web admin panel."] = "Votre compte devra utiliser la même adresse de courriel pour pouvoir utiliser l'administration web.";
App::$strings["Website URL"] = "URL du site";
@@ -1310,22 +1833,26 @@ App::$strings["Please use SSL (https) URL if available."] = "Merci d'utiliser SS
App::$strings["Please select a default timezone for your website"] = "Merci de choisir une zone de temps (fuseau horaire) pour votre site";
App::$strings["Site settings"] = "Réglages du site";
App::$strings["Could not find a command line version of PHP in the web server PATH."] = "Impossible de trouver une version CLI de PHP dans le PATH du serveur web.";
-App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "En l'absence de version CLI de PHP sur votre serveur, vous ne pourrez pas utiliser la mise à jour en arrière-plan via cron.";
+App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "En l'absence de version CLI de PHP sur votre serveur, vous ne pourrez pas utiliser la mise-à-jour en arrière-plan via cron.";
App::$strings["PHP executable path"] = "Chemin vers l'éxecutable PHP";
App::$strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Entrez le chemin complet vers l'exécutable php. Vous pouvez continuer l'installation sans.";
App::$strings["Command line PHP"] = "PHP en ligne de commande (CLI)";
App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "La version CLI de PHP sur votre système n'a pas l'option \"register_argc_argv\" activée.";
App::$strings["This is required for message delivery to work."] = "Elle est nécessaire pour la livraison de messages.";
App::$strings["PHP register_argc_argv"] = "PHP register_argc_argv";
+App::$strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "Votre taille de téléversement maximale totale autorisée est fixée à %s. La taille maximale d'un seul fichier à téléverser est fixée à %s. Vous pouvez téléverser jusqu'à %d fichier(s) à la fois.";
+App::$strings["You can adjust these settings in the servers php.ini."] = "Vous pouvez ajuster ces paramètres dans le php.ini du serveur.";
+App::$strings["PHP upload limits"] = "Limites de téléversement de PHP";
App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Erreur&nbsp;: la fonction \"openssl_pkey_new\" de ce système n'est pas capable de générer des clefs de chiffrement";
App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Si vous êtes sur un serveur Windows, merci de consulter \"http://www.php.net/manual/fr/openssl.installation.php\".";
App::$strings["Generate encryption keys"] = "Générer les clefs de chiffrement";
App::$strings["libCurl PHP module"] = "module PHP libCurl";
App::$strings["GD graphics PHP module"] = "module PHP GD graphics";
App::$strings["OpenSSL PHP module"] = "module PHP OpenSSL";
-App::$strings["mysqli PHP module"] = "module PHP mysqli";
+App::$strings["mysqli or postgres PHP module"] = "module PHP postgres ou mysqli";
App::$strings["mb_string PHP module"] = "module PHP mb_string";
App::$strings["mcrypt PHP module"] = "module PHP mcrypt";
+App::$strings["xml PHP module"] = "module PHP xml";
App::$strings["Apache mod_rewrite module"] = "module Apache mod_rewrite";
App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Erreur&nbsp;: le module mod-rewrite du serveur web Apache est requis, mais pas installé.";
App::$strings["proc_open"] = "proc_open";
@@ -1333,10 +1860,11 @@ App::$strings["Error: proc_open is required but is either not installed or has b
App::$strings["Error: libCURL PHP module required but not installed."] = "Erreur&nbsp;: le module libCURL de PHP est requis, mais pas installé.";
App::$strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Erreur&nbsp;: le module GD de PHP (avec support JPEG) est requis, mais pas installé.";
App::$strings["Error: openssl PHP module required but not installed."] = "Erreur&nbsp;: le module openssl de PHP est requis, mais pas installé.";
-App::$strings["Error: mysqli PHP module required but not installed."] = "Erreur&nbsp;: le module mysqli de PHP est requis, mais pas installé.";
+App::$strings["Error: mysqli or postgres PHP module required but neither are installed."] = "Erreur&nbsp;: un module PHP mysqli ou postgres est requis, mais aucun des deux n'est installé.";
App::$strings["Error: mb_string PHP module required but not installed."] = "Erreur&nbsp;: le module mb_string de PHP est requis, mais pas installé.";
App::$strings["Error: mcrypt PHP module required but not installed."] = "Erreur&nbsp;: le module mcrypt de PHP est requis, mais pas installé.";
-App::$strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "L'installeur web a besoin de créer un fichier \".htconfig.php\" à la racine de votre serveur web, mais en est incapable.";
+App::$strings["Error: xml PHP module required for DAV but not installed."] = "Erreur&nbsp;: le module xml de PHP est requis pour le DAV, mais pas installé.";
+App::$strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "L'installeur web a besoin de créer un fichier \".htconfig.php\" à la racine de votre serveur web, mais en est incapable.";
App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "C'est généralement lié à un problème de droits, à cause duquel le serveur web est interdit d'écriture dans le répertoire concerné - alors que votre propre utilisateur a le droit.";
App::$strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Au terme de cette procédure, nous vous transmettrons un texte à sauvegarder dans un fichier nommé .htconfig.php, à la racine de votre installation de La Matrice Rouge.";
App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Autrement, vous pouvez contourner toute cette procédure et réaliser l'installation manuellement. Merci de consulter le fichier \"install/INSTALL.txt\" pour les instructions détaillées.";
@@ -1355,74 +1883,55 @@ App::$strings["If your certificate is not recognized, members of other sites (wh
App::$strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Pour des raisons de compatibilité (sur l'ensemble de la matrice) nous nous devons d'insister sur ce prérequis.";
App::$strings["Providers are available that issue free certificates which are browser-valid."] = "Il existe une plusieurs autorités de certification qui vous fourniront gratuitement un certificat valide.";
App::$strings["SSL certificate validation"] = "Validation du certificat SSL/TLS";
-App::$strings["Url rewrite in .htaccess is not working. Check your server configuration."] = "La réécriture d'URL définie dans le .htaccess ne fonctionne pas. Merci de vérifier la configuration de votre serveur web.";
+App::$strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "La réécriture d'URL définie dans le .htaccess ne fonctionne pase. Vérifiez votre configuration serveur. Test&nbsp;:";
App::$strings["Url rewrite is working"] = "La réécriture d'URL fonctionne";
App::$strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Le fichier de configuration de la base de données - \".htconfig.php\" - ne peut être écrit. Merci de copier le texte généré dans un fichier à ce nom, à la racine de votre serveur web.";
App::$strings["Errors encountered creating database tables."] = "Erreurs rencontrées pendant la création de tables de BD.";
App::$strings["<h1>What next</h1>"] = "<h1>Et maintenant</h1>";
-App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANT&nbsp;: Vous devez créer [manuellement] une tâche planifiée pour les mises à jour.";
-App::$strings["Item not found"] = "Élément introuvable";
-App::$strings["Edit Block"] = "Éditer bloc";
-App::$strings["Delete block?"] = "Supprimer le bloc?";
-App::$strings["Insert YouTube video"] = "Insérer une vidéo YouTube";
-App::$strings["Insert Vorbis [.ogg] video"] = "Insérer une vidéo Vorbis [.ogg]";
-App::$strings["Insert Vorbis [.ogg] audio"] = "Insérer un son Vorbis [.ogg]";
-App::$strings["Delete Block"] = "Supprimer le bloc";
-App::$strings["Layout updated."] = "Agencement pris-en-compte.";
-App::$strings["Edit System Page Description"] = "Éditer la description";
-App::$strings["Layout not found."] = "Agencement introuvable.";
-App::$strings["Module Name:"] = "Nom du module&nbsp;:";
-App::$strings["Layout Help"] = "Aide à la mise en page";
-App::$strings["Edit Layout"] = "Éditer mise-en-page";
-App::$strings["Delete layout?"] = "Supprimer la mise-en-page?";
-App::$strings["Delete Layout"] = "Supprimer mise-en-page";
-App::$strings["Item is not editable"] = "Élément non-éditable";
-App::$strings["Delete item?"] = "Supprimer l'élément?";
-App::$strings["Edit Webpage"] = "Éditer page web";
-App::$strings["Delete webpage?"] = "Supprimer la page web?";
-App::$strings["Delete Webpage"] = "Supprimer page web";
+App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANT&nbsp;: Vous devez créer [manuellement] une tâche planifiée pour les mises-à-jour.";
+App::$strings["Comanche page description language help"] = "Aide sur le langage de description de page Comanche";
+App::$strings["Layout Description"] = "Description de la mise en page";
+App::$strings["Download PDL file"] = "Télécharger le fichier PDL";
+App::$strings["Files: shared with me"] = "Fichiers&nbsp;: partagés avec moi";
+App::$strings["NEW"] = "NOUVEAU";
+App::$strings["Remove all files"] = "Supprimer tous les fichiers";
+App::$strings["Remove this file"] = "Supprimer ce fichier";
+App::$strings["Like/Dislike"] = "J'aime/Je Déteste";
+App::$strings["This action is restricted to members."] = "Cette action est réservée aux membres.";
+App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "S'il vous plait, <a href=\"rmagic\">identifiez vous avec votre identifant de \$Projectname </a> ou <a href=\"register\">inscrivez vous pour un nouveau \$Projectname </a> pour continuer.";
+App::$strings["Invalid request."] = "Requête invalide.";
+App::$strings["thing"] = "chose";
+App::$strings["Channel unavailable."] = "Canal indisponible.";
+App::$strings["Previous action reversed."] = "Action précédente annulée.";
+App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s approuve %3\$s de %2\$s";
+App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s n'est pas d'accord avec %2\$s's %3\$s";
+App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s s'abstient de toute décision sur le %3\$s de %2\$s";
+App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%1\$s participe en ce moment à %3\$s de %2\$s";
+App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s ne participe pas à %3\$s de %2\$s";
+App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s participe peut-être à %3\$s de %2\$s";
+App::$strings["Action completed."] = "Action complétée.";
+App::$strings["Thank you."] = "Merci.";
App::$strings["Version %s"] = "Version %s";
App::$strings["Installed plugins/addons/apps:"] = "Extensions/applications installées&nbsp;:";
App::$strings["No installed plugins/addons/apps"] = "Aucune extension/application installée";
-App::$strings["Red"] = "Rouge";
-App::$strings["This is a hub of the Hubzilla - a global cooperative network of decentralized privacy enhanced websites."] = "Ceci est un serveur de la Matrice Rouge - un réseau collaboratif de plusieurs serveurs qui assurent la protection de votre vie privée notamment par la décentralisation de votre identité.";
+App::$strings["This is a hub of \$Projectname - a global cooperative network of decentralized privacy enhanced websites."] = "Ceci est un serveur \$Projectname - un réseau collaboratif mondial de serveurs décentralisés à la confidentialité améliorée.";
+App::$strings["Tag: "] = "Tag:";
+App::$strings["Last background fetch: "] = "Dernière récupération en tâche de fond&nbsp;:";
App::$strings["Running at web location"] = "Installée sur";
-App::$strings["Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more about the Hubzilla."] = "Merci de visiter <a href=\"http://getzot.com\">GetZot.com</a> pour en apprendre davantage sur la Matrice Rouge.";
+App::$strings["Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more about \$Projectname."] = "Merci de visiter <a href=\"http://hubzilla.org\">hubzilla.org</a> pour en apprendre davantage sur \$Projectname.";
App::$strings["Bug reports and issues: please visit"] = "Pour remonter bogues et problèmes, merci de visiter";
-App::$strings["Suggestions, praise, etc. - please email \"hubzilla\" at librelist - dot com"] = "Suggestions, demandes, etc. - merci de vous adresser à \"hubzilla\" à librelist - point com";
+App::$strings["\$projectname issues"] = "Problèmes \$projectname";
+App::$strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Suggestions, demandes, etc. - merci de vous adresser à \"redmatrix\" à librelist - point com";
App::$strings["Site Administrators"] = "Administrateurs du site";
-App::$strings["Page owner information could not be retrieved."] = "Impossible d'obtenir des informations sur le propriétaire de la page.";
-App::$strings["Album not found."] = "Album introuvable.";
-App::$strings["Delete Album"] = "Supprimer album";
-App::$strings["Delete Photo"] = "Supprimer photo";
-App::$strings["No photos selected"] = "Aucune photo selectionnée";
-App::$strings["Access to this item is restricted."] = "L'accès à l'élément est restreint.";
-App::$strings["You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."] = "Vous avez utilisé %1$.2f mégaoctets sur les %2$.2f autorisés pour le stockage des photos.";
-App::$strings["You have used %1$.2f Mbytes of photo storage."] = "Vous avez utilisé %1$.2f mégaoctets pour le stockage des photos.";
-App::$strings["Upload Photos"] = "Téléverser des photos";
-App::$strings["New album name: "] = "Créer un album&nbsp;:";
-App::$strings["or existing album name: "] = "ou choisir un album existant&nbsp;:";
-App::$strings["Do not show a status post for this upload"] = "Ne pas publier de statut pour cet envoi";
-App::$strings["Album name could not be decoded"] = "Le nom de l'Album n'a pu être décodé";
-App::$strings["Contact Photos"] = "Photos de contact";
-App::$strings["Edit Album"] = "Éditer l'album";
-App::$strings["Show Newest First"] = "Ordre anté-chronologique";
-App::$strings["Show Oldest First"] = "Ordre chronologique";
-App::$strings["View Photo"] = "Voir la photo";
-App::$strings["Permission denied. Access to this item may be restricted."] = "Permission refusée. L'accès à cet élément peut avoir été restreint.";
-App::$strings["Photo not available"] = "Photo indisponible";
-App::$strings["Use as profile photo"] = "Utiliser comme photo du profil";
-App::$strings["View Full Size"] = "Voir en taille réelle";
-App::$strings["Edit photo"] = "Éditer la photo";
-App::$strings["Rotate CW (right)"] = "Rotation horaire (droite)";
-App::$strings["Rotate CCW (left)"] = "Rotation anti-horaire (gauche)";
-App::$strings["New album name"] = "Nouveau nom d'album&nbsp;:";
-App::$strings["Caption"] = "Titre/légende";
-App::$strings["Add a Tag"] = "Ajouter une étiquette";
-App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Exemple&nbsp;: @bob, @Barbara_Jensen, @jim@exemple.com, #Ile_de_France, #marathon";
-App::$strings["In This Photo:"] = "Dans cette photo&nbsp;:";
-App::$strings["View Album"] = "Voir l'album";
-App::$strings["Recent Photos"] = "Photos récentes";
+App::$strings["Remote privacy information not available."] = "Les informations de vie privée à distance ne sont pas disponibles.";
+App::$strings["Visible to:"] = "Visible par&nbsp;:";
+App::$strings["Location not found."] = "Emplacement introuvable.";
+App::$strings["Primary location cannot be removed."] = "";
+App::$strings["No locations found."] = "Emplacement(s) introuvable.";
+App::$strings["Manage Channel Locations"] = "Gérer les emplacements des canaux";
+App::$strings["Location (address)"] = "Emplacement (adresse)";
+App::$strings["Primary Location"] = "Emplacement primaire";
+App::$strings["Drop location"] = "Abandonner l'emplacement";
App::$strings["Failed to create source. No channel selected."] = "Impossible de créer la source. Aucun canal selectionné.";
App::$strings["Source created."] = "Source créée.";
App::$strings["Source updated."] = "Source mise à jour.";
@@ -1438,274 +1947,6 @@ App::$strings["Edit Source"] = "Éditer la source";
App::$strings["Delete Source"] = "Supprimer la source";
App::$strings["Source removed"] = "Source supprimée";
App::$strings["Unable to remove source."] = "Impossible de supprimer la source.";
-App::$strings["- select -"] = "- choisir -";
-App::$strings["Event title and start time are required."] = "Un titre et une date de début sont requises pour l'événement.";
-App::$strings["Event not found."] = "Événement introuvable.";
-App::$strings["l, F j"] = "l j F";
-App::$strings["Edit event"] = "Éditer l'événement";
-App::$strings["Create New Event"] = "Créer événement";
-App::$strings["Previous"] = "Précédent";
-App::$strings["hour:minute"] = "heure:minute";
-App::$strings["Event details"] = "Détails de l'événement";
-App::$strings["Format is %s %s. Starting date and Title are required."] = "Le format est %s %s. Date de début et titre obligatoires.";
-App::$strings["Event Starts:"] = "L'événement débute&nbsp;:";
-App::$strings["Required"] = "Requis";
-App::$strings["Finish date/time is not known or not relevant"] = "Date/heure de fin inconnue ou sans objet";
-App::$strings["Event Finishes:"] = "L'événement termine&nbsp;:";
-App::$strings["Adjust for viewer timezone"] = "Ajuster au fuseau horaire du visiteur";
-App::$strings["Description:"] = "Description:";
-App::$strings["Title:"] = "Titre:";
-App::$strings["Share this event"] = "Partager cet événement";
-App::$strings["Permission Denied."] = "Permission refusée.";
-App::$strings["File not found."] = "Fichier introuvable.";
-App::$strings["Edit file permissions"] = "Éditer les permissions du fichier";
-App::$strings["Set/edit permissions"] = "Définir/Édition des authorisations";
-App::$strings["Include all files and sub folders"] = "Inclure tous fichiers et sous-répertoires";
-App::$strings["Return to file list"] = "Retourner à la liste des fichiers";
-App::$strings["Copy/paste this code to attach file to a post"] = "Copiez/collez ce code pour joindre le fichier à une publication";
-App::$strings["Copy/paste this URL to link file from a web page"] = "Copiez/collez cette URL pour lier le fichier depuis une page web";
-App::$strings["Channel added."] = "Canal ajouté.";
-App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s suit %3\$s de %2\$s";
-App::$strings["Contact not found."] = "Contact introuvable.";
-App::$strings["Friend suggestion sent."] = "Suggestion d'amitié/relation envoyée.";
-App::$strings["Suggest Friends"] = "Suggérer une relation";
-App::$strings["Suggest a friend for %s"] = "Suggérer une relation à %s";
-App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Pas de suggestions pour l'instant. Si le site est récent, merci de re-tenter dans 24 heures.";
-App::$strings["Collection created."] = "Collection créée.";
-App::$strings["Could not create collection."] = "Impossible de créer la collection.";
-App::$strings["Collection updated."] = "Collection mise à jour.";
-App::$strings["Create a collection of channels."] = "Créez une collection de canaux.";
-App::$strings["Collection Name: "] = "Nom de la collection&nbsp;:";
-App::$strings["Members are visible to other channels"] = "Les membres sont visibles par les autres canaux";
-App::$strings["Collection removed."] = "Collection supprimée.";
-App::$strings["Unable to remove collection."] = "Impossible de supprimer la collection.";
-App::$strings["Collection Editor"] = "Éditeur de collection";
-App::$strings["Members"] = "Membres";
-App::$strings["All Connected Channels"] = "Tous canaux connectés";
-App::$strings["Click on a channel to add or remove."] = "Cliquer sur un canal pour l'ajouter ou le supprimer";
-App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s a étiqueté le %3\$s de %2\$s par %4\$s";
-App::$strings["Help:"] = "Aide&nbsp;:";
-App::$strings["Not Found"] = "Introuvable";
-App::$strings["Tag removed"] = "Étiquette retirée";
-App::$strings["Remove Item Tag"] = "Retirer une étiquette à l'élément";
-App::$strings["Select a tag to remove: "] = "Étiquette à retirer&nbsp;:";
-App::$strings["Theme settings updated."] = "Réglages du thème sauvegardés.";
-App::$strings["Site"] = "Site";
-App::$strings["Accounts"] = "Comptes";
-App::$strings["Channels"] = "Canaux";
-App::$strings["Plugins"] = "Extensions";
-App::$strings["Themes"] = "Thèmes";
-App::$strings["Server"] = "Serveur";
-App::$strings["Profile Config"] = "Configurations du profil";
-App::$strings["DB updates"] = "MàJ BD";
-App::$strings["Logs"] = "Journaux";
-App::$strings["Plugin Features"] = "Fonctionnalités liées aux extensions";
-App::$strings["User registrations waiting for confirmation"] = "Inscriptions en attente";
-App::$strings["Message queues"] = "File des messages";
-App::$strings["Administration"] = "Administration";
-App::$strings["Summary"] = "Résumé";
-App::$strings["Registered users"] = "Utilisateurs inscrits";
-App::$strings["Pending registrations"] = "Inscriptions en attente";
-App::$strings["Version"] = "Version";
-App::$strings["Active plugins"] = "Extensions actives";
-App::$strings["Site settings updated."] = "Réglages du site sauvegardés.";
-App::$strings["No special theme for accessibility"] = "Pas de thème spécifique pour l'accessibilité";
-App::$strings["Yes - with approval"] = "Oui - avec approbation";
-App::$strings["My site is not a public server"] = "Mon site n'est pas un serveur public";
-App::$strings["My site has paid access only"] = "Mon site est payant";
-App::$strings["My site has free access only"] = "Mon site est gratuit";
-App::$strings["My site offers free accounts with optional paid upgrades"] = "Mon site offre des comptes gratuits avec des ajouts payants";
-App::$strings["File upload"] = "Envoi de fichier";
-App::$strings["Policies"] = "Stratégies";
-App::$strings["Site name"] = "Nom du site";
-App::$strings["Banner/Logo"] = "Bannière/logo";
-App::$strings["Administrator Information"] = "Informations sur l'administrateur";
-App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Coordonnées de l'administrateur du site. Affichée sur la page 'siteinfo'. Vous pouvez utiliser du BBCode ici";
-App::$strings["System language"] = "Langue du système";
-App::$strings["System theme"] = "Thème du système";
-App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Thème par défaut - il peut être changé pour chaque profil utilisateur - <a href='#' id='cnftheme'>modifier le thème</a>";
-App::$strings["Mobile system theme"] = "Thème système pour mobile";
-App::$strings["Theme for mobile devices"] = "Thème dédié aux périphériques mobiles";
-App::$strings["Accessibility system theme"] = "Thème système pour l'accessibilité";
-App::$strings["Accessibility theme"] = "Thème pour l'accessibilité";
-App::$strings["Channel to use for this website's static pages"] = "Canal à utiliser pour les pages statiques de ce site";
-App::$strings["Site Channel"] = "Canal de ce HUB";
-App::$strings["Maximum image size"] = "Taille maximale des images";
-App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Taille maximum, en octets, des images envoyées. Par défaut 0, soit sans limite.";
-App::$strings["Does this site allow new member registration?"] = "Est-ce que l'enregistrement de nouveau membres sur ce site est autorisé?";
-App::$strings["Which best describes the types of account offered by this hub?"] = "Choisissez le type de comptes offert sur ce hub?";
-App::$strings["Register text"] = "Texte d'inscription";
-App::$strings["Will be displayed prominently on the registration page."] = "Sera affiché de manière bien visible sur le formulaire d'inscription.";
-App::$strings["Accounts abandoned after x days"] = "Les comptes sont abandonnés après x jours";
-App::$strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Pour éviter de gaspiller les ressources du système en essayer de mettre à jour des comptes abandonnés. Mettez 0 pour ne pas avoir de limite de temps.";
-App::$strings["Allowed friend domains"] = "Domaines amicaux";
-App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Liste de noms de domaines - séparés par des virgules - pour lesquels ce site acceptera les demandes d'amitié ou de mise en relation. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines.";
-App::$strings["Allowed email domains"] = "Domaines de courriels amicaux";
-App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Liste de noms de domaines - séparés par des virgules - dont les adresses de courriel seront autorisées lors de l'inscription à ce site. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines.";
-App::$strings["Block public"] = "Bloquer public";
-App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Cocher pour interdire tout accès public, y compris aux pages marquées comme publiques, aux visiteurs anonymes.";
-App::$strings["Force publish"] = "Forcer publication";
-App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Cocher pour forcer la publication de tous les profils du site dans l'annuaire.";
-App::$strings["Disable discovery tab"] = "Désactiver l'onglet \"À découvrir\"";
-App::$strings["Remove the tab in the network view with public content pulled from sources chosen for this site."] = "Ne pas afficher d'onglet avec des contenus publics automatiquement rassemblées depuis des sources choisies pour ce site.";
-App::$strings["No login on Homepage"] = "Pas de connexion depuis la page d'accueil";
-App::$strings["Check to hide the login form from your sites homepage when visitors arrive who are not logged in (e.g. when you put the content of the homepage in via the site channel)."] = "Cocher pour ne pas montrer le formulaire de connexion sur la page d'accueil (typiquement, pour quand vous utilisez la page d'accueil pour afficher du contenu via le canal du site).";
-App::$strings["Proxy user"] = "Utilisateurs du proxy";
-App::$strings["Proxy URL"] = "URL du proxy (visiter @proxy-list)";
-App::$strings["Network timeout"] = "Délai maximal du réseau";
-App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "En secondes. Mettre à 0 pour ne pas avoir de délai maximal (pas recommandé).";
-App::$strings["Delivery interval"] = "Intervalle de distribution";
-App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Temporise le processus de distribution de tant de secondes pour réduire la charge sur le système. Valeurs recommandées&nbsp;: 4-5 pour les serveurs mutualisés, 2-3 pour les VPS. 0-1 pour les gros serveurs dédiés.";
-App::$strings["Poll interval"] = "Intervalle de scrutation";
-App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Temporise le processus de scrutation en tâche de fond de tant de secondes, pour réduire la charge. Si 0, utilise l'intervalle de distribution.";
-App::$strings["Maximum Load Average"] = "Charge moyenne maximale";
-App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Charge système maximale au-delà de laquelle distribution et scrutation sont mis en pause - par défaut 50.";
-App::$strings["No server found"] = "Serveur introuvable";
-App::$strings["ID"] = "ID";
-App::$strings["for channel"] = "pour le canal";
-App::$strings["on server"] = "sur le serveur";
-App::$strings["Status"] = "État";
-App::$strings["Update has been marked successful"] = "La mise à jour a été marquée comme réussie";
-App::$strings["Executing %s failed. Check system logs."] = "L'éxecution de %s a échoué. Merci de vérifier les journaux du système.";
-App::$strings["Update %s was successfully applied."] = "La mise à jour %s a été appliquée avec succès.";
-App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "La mise à jour %s n'a pas retourné d'information. Impossible de savoir si elle a réussi ou non.";
-App::$strings["Update function %s could not be found."] = "La fonction de mise à jour %s est introuvable.";
-App::$strings["No failed updates."] = "Aucune mise à jour défaillante.";
-App::$strings["Failed Updates"] = "Mises à jour défaillantes";
-App::$strings["Mark success (if update was manually applied)"] = "Marquer comme réussie (si la mise à jour a été réalisée manuellement)";
-App::$strings["Attempt to execute this update step automatically"] = "Tenter de réaliser cette étape de mise à jour automatiquement";
-App::$strings["%s user blocked/unblocked"] = array(
- 0 => "%s utilisateur bloqué/débloqué",
- 1 => "%s utilisateurs bloqués/débloqués",
-);
-App::$strings["%s user deleted"] = array(
- 0 => "%s utilisateur supprimé",
- 1 => "%s utilisateurs supprimés",
-);
-App::$strings["Account not found"] = "Compte introuvable";
-App::$strings["User '%s' deleted"] = "Utilisateur '%s' supprimé";
-App::$strings["User '%s' unblocked"] = "Utilisateur '%s' débloqué";
-App::$strings["User '%s' blocked"] = "Utilisateur '%s' bloqué";
-App::$strings["Users"] = "Utilisateurs";
-App::$strings["select all"] = "tout sélectionner";
-App::$strings["User registrations waiting for confirm"] = "Inscriptions en attente d'approbation";
-App::$strings["Request date"] = "Date de la demande";
-App::$strings["No registrations."] = "Pas d'inscriptions.";
-App::$strings["Approve"] = "Approuver";
-App::$strings["Deny"] = "Refuser";
-App::$strings["Register date"] = "Date d'inscription";
-App::$strings["Last login"] = "Dernière connexion";
-App::$strings["Expires"] = "Expire";
-App::$strings["Service Class"] = "Classe de service";
-App::$strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Les utilisateurs sélectionnés seront supprimés!\\n\\nTout ce que ces utilisateurs ont publié sur ce site sera détruit de manière définitive!\\n\\nÊtes-vous certain?";
-App::$strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "L'utilisateur {0} sera supprimé!\\n\\nTout ce que cet utilisateur a publié sur ce site sera détruit de manière définitive!\\n\\nÊtes-vous certain?";
-App::$strings["%s channel censored/uncensored"] = array(
- 0 => "%s canal censuré/non-censuré",
- 1 => "%s canaux censurés/non-censurés",
-);
-App::$strings["%s channel deleted"] = array(
- 0 => "%s canal supprimé",
- 1 => "%s canaux supprimés",
-);
-App::$strings["Channel not found"] = "Canal introuvable";
-App::$strings["Channel '%s' deleted"] = "Canal '%s' supprimé";
-App::$strings["Channel '%s' uncensored"] = "Canal '%s' non-censuré";
-App::$strings["Channel '%s' censored"] = "Canal '%s' censuré";
-App::$strings["Censor"] = "Censurer";
-App::$strings["Uncensor"] = "Ne plus censurer";
-App::$strings["UID"] = "UID";
-App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Les canaux sélectionnés seront supprimés!\\n\\nTout ce qui a été publié dans ces canaux sur ce site sera définitivement supprimé!\\n\\nÊtes-vous certain?";
-App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Le canal {0} sera supprimé!\\n\\nTout ce qui a été publié sur ce canal sera définitivement supprimé!\\n\\nÊtes-vous certain?";
-App::$strings["Plugin %s disabled."] = "Extension %s désactivée.";
-App::$strings["Plugin %s enabled."] = "Extension %s activée.";
-App::$strings["Disable"] = "Désactiver";
-App::$strings["Enable"] = "Activer";
-App::$strings["Toggle"] = "(Dés)activer";
-App::$strings["Author: "] = "Auteur&nbsp;:";
-App::$strings["Maintainer: "] = "Maintenu par&nbsp;:";
-App::$strings["No themes found."] = "Aucun thème trouvé.";
-App::$strings["Screenshot"] = "Aperçu";
-App::$strings["[Experimental]"] = "[Expérimental]";
-App::$strings["[Unsupported]"] = "[Non-supporté]";
-App::$strings["Log settings updated."] = "Réglages du journal sauvegardés.";
-App::$strings["Clear"] = "Vider";
-App::$strings["Debugging"] = "Débogage";
-App::$strings["Log file"] = "Fichier du journal";
-App::$strings["Must be writable by web server. Relative to your Red top-level directory."] = "Doit être accessible en écriture par le serveur web. Chemin relatif à la racine de votre installation de la Matrice Rouge.";
-App::$strings["Log level"] = "Niveau de journalisation";
-App::$strings["Thing updated"] = "Chose mise à jour";
-App::$strings["Object store: failed"] = "Stockage de l'objet&nbsp;: échec";
-App::$strings["Thing added"] = "Chose ajoutée";
-App::$strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
-App::$strings["Show Thing"] = "Montrer chose";
-App::$strings["item not found."] = "élément introuvable.";
-App::$strings["Edit Thing"] = "Éditer chose";
-App::$strings["Select a profile"] = "Choisissez un profil";
-App::$strings["Post an activity"] = "Publier une activité";
-App::$strings["Only sends to viewers of the applicable profile"] = "Envoi exclusivement au membres autorisé de ce profil";
-App::$strings["Name of thing e.g. something"] = "Nom de la chose, p.ex. quelque-chose";
-App::$strings["URL of thing (optional)"] = "URL de la chose (optionnel)";
-App::$strings["URL for photo of thing (optional)"] = "URL de l'image de la chose (optionnel)";
-App::$strings["Add Thing to your Profile"] = "Ajouter la chose à votre profil";
-App::$strings["Nothing to import."] = "Rien à importer.";
-App::$strings["Unable to download data from old server"] = "Impossible de récupérer les données de l'ancien serveur";
-App::$strings["Imported file is empty."] = "Le fichier importé est vide.";
-App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Impossible de créer un doublon d'un identifiant de canal. L'import a échoué.";
-App::$strings["Channel clone failed. Import failed."] = "Le clonage du canal a échoué. L'import a échoué.";
-App::$strings["Cloned channel not found. Import failed."] = "Le canal cloné n'a pas été trouvé. L'import a échoué.";
-App::$strings["Import completed."] = "L'import est terminé.";
-App::$strings["You must be logged in to use this feature."] = "Vous devez vous connecter pour utiliser cette fonctionnalité.";
-App::$strings["Import Channel"] = "Importation de canal";
-App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file. Only identity and connections/relationships will be imported. Importation of content is not yet available."] = "Utilisez ce formulaire pour importer un canal existant sur un serveur différent. Vous pouvez récupérer l'identité du canal sur l'ancien serveur directement par le réseau, ou bien fournir un fichier d'export. Seules les données d'identité et de relations seront importées. L'importation du contenu est toujours en développement.";
-App::$strings["File to Upload"] = "Fichier à envoyer";
-App::$strings["Or provide the old server/hub details"] = "Ou fournissez les détails de l'ancien serveur";
-App::$strings["Your old identity address (xyz@example.com)"] = "Votre ancienne identité (zyx@exemple.com)";
-App::$strings["Your old login email address"] = "Votre ancienne adresse de courriel";
-App::$strings["Your old login password"] = "Votre ancien mot de passe";
-App::$strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Quelle que soit l'option choisie, merci de décider si cette nouvelle adresse sera la primaire, ou si votre ancienne adresse continuera à jouer ce rôle. Vous pourrez publier depuis l'adresse de votre choix, mais une seule peut être déclarée comme stockage primaire de vos fichiers/photos/media.";
-App::$strings["Make this hub my primary location"] = "Faire de ce hub l'adresse principale de ce canal";
-App::$strings["Total invitation limit exceeded."] = "Limite du nombre total d'invitation dépassée.";
-App::$strings["%s : Not a valid email address."] = "%s&nbsp: adresse courriel invalide.";
-App::$strings["Please join us on Red"] = "Rejoignez-nous sur la Matrice Rouge";
-App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Limite d'invitations dépassée. Merci de contacter l'administration de votre site.";
-App::$strings["%s : Message delivery failed."] = "%s&nbsp;: Échec dans la livraison du message.";
-App::$strings["%d message sent."] = array(
- 0 => "%d message envoyé.",
- 1 => "%d messages envoyés.",
-);
-App::$strings["You have no more invitations available"] = "Vous ne disposez plus d'aucune invitation";
-App::$strings["Send invitations"] = "Envoyer des invitations";
-App::$strings["Enter email addresses, one per line:"] = "Entrez les adresses de courriel, une par ligne&nbsp;:";
-App::$strings["Your message:"] = "Votre message&nbsp;:";
-App::$strings["Please join my community on Hubzilla."] = "Veuillez me rejoindre sur la Matrice Rouge.";
-App::$strings["You will need to supply this invitation code: "] = "Vous aurez besoin de fournir le code suivant:";
-App::$strings["1. Register at any Hubzilla location (they are all inter-connected)"] = "1. Enregistrez-vous sur n'importe quel serveurs ( ils sont tous inter-connectés )";
-App::$strings["2. Enter my Hubzilla network address into the site searchbar."] = "2. Saisissez l'adresse de mon canal dans la barre de recherche du site.";
-App::$strings["or visit "] = "ou visitez";
-App::$strings["3. Click [Connect]"] = "3. Click sur [Ajouter]";
-App::$strings["Unable to locate original post."] = "Impossible de localiser la publication initiale.";
-App::$strings["Empty post discarded."] = "Publication vide annulée.";
-App::$strings["Executable content type not permitted to this channel."] = "Les contenus de type 'exécutable' ne sont pas autorisés sur ce canal.";
-App::$strings["System error. Post not saved."] = "Erreur système. Publication non sauvegardée.";
-App::$strings["You have reached your limit of %1$.0f top level posts."] = "Vous avez atteint votre limite de %1$.0f contributions \"racine\".";
-App::$strings["You have reached your limit of %1$.0f webpages."] = "Vous avez atteint votre limite de %1$.0f pages web.";
-App::$strings["[Embedded content - reload page to view]"] = "[Contenu embarqué - rechargez la page pour le voir]";
-App::$strings["Help with this feature"] = "Aide avec cette fonctionnalité";
-App::$strings["Layout Name"] = "Nom de la mise-en-page";
-App::$strings["Like/Dislike"] = "J'aime/Je Déteste";
-App::$strings["This action is restricted to members."] = "Cette action est réservée aux membres.";
-App::$strings["Please <a href=\"rmagic\">login with your Hubzilla ID</a> or <a href=\"register\">register as a new Redmatrix.member</a> to continue."] = "SVP <a href=\"rmagic\">connectez-vous</a> ou <a href=\"register\">enregistrez-vous</a> pour continuer.";
-App::$strings["Invalid request."] = "Requête invalide.";
-App::$strings["thing"] = "chose";
-App::$strings["Channel unavailable."] = "Canal indisponible.";
-App::$strings["Previous action reversed."] = "Action précédente annulée.";
-App::$strings["Action completed."] = "Action complétée.";
-App::$strings["Thank you."] = "Merci.";
-App::$strings["Remote privacy information not available."] = "Les informations de vie privée à distance ne sont pas disponibles.";
-App::$strings["Visible to:"] = "Visible par&nbsp;:";
-App::$strings["No connections."] = "Pas de relation.";
-App::$strings["Visit %s's profile [%s]"] = "Visiter le profil de %s [%s]";
-App::$strings["View Connnections"] = "Voir les relations";
App::$strings["No valid account found."] = "Aucun compte valide trouvé.";
App::$strings["Password reset request issued. Check your email."] = "Réinitialisation du mot de passe demandée. Vérifiez vos courriels.";
App::$strings["Site Member (%s)"] = "Membre du site (%s)";
@@ -1722,127 +1963,156 @@ App::$strings["Forgot your Password?"] = "Mot de passe oublié?";
App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Saisissez votre adresse de courriel, et validez, pour réinitialiser votre mot de passe. Vérifiez ensuite votre boîte à lettres pour la suite des instructions.";
App::$strings["Email Address"] = "Adresse de courriel";
App::$strings["Reset"] = "Réinitialiser";
-App::$strings["Hub not found."] = "Hub introuvable.";
-App::$strings["Total votes"] = "Total des votes";
-App::$strings["Average Rating"] = "Évaluation moyenne";
-App::$strings["Unable to lookup recipient."] = "Impossible de localiser le destinataire.";
-App::$strings["Unable to communicate with requested channel."] = "Impossible de communiquer avec le canal demandé.";
-App::$strings["Cannot verify requested channel."] = "Impossible de vérifier le canal demandé.";
-App::$strings["Selected channel has private message restrictions. Send failed."] = "Le canal choisi a des restrictions quant aux messages privés. L'envoi a échoué.";
-App::$strings["Messages"] = "Messages";
-App::$strings["Message deleted."] = "Message supprimé.";
-App::$strings["Message recalled."] = "Message annulé/rappelé.";
-App::$strings["Send Private Message"] = "Envoyer un Message Privé";
-App::$strings["To:"] = "À&nbsp;:";
-App::$strings["Subject:"] = "Sujet&nbsp;:";
-App::$strings["Send"] = "Envoyer";
-App::$strings["Message not found."] = "Message introuvable.";
-App::$strings["Delete message"] = "Supprimer message";
-App::$strings["Recall message"] = "Rappeler/annuler le message";
-App::$strings["Message has been recalled."] = "Le message a été rappelé.";
-App::$strings["Private Conversation"] = "Conversation privée";
-App::$strings["Delete conversation"] = "Supprimer conversation";
-App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Aucune communication sécurisée n'est possible. Vous pourrez <strong>peut-être</strong> répondre depuis la page de profil de l'émetteur.";
-App::$strings["Send Reply"] = "Envoyer une réponse";
-App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Vous avez créé %1$.0f des %2$.0f canaux autorisés.";
-App::$strings["Create a new channel"] = "Créer un nouveau canal";
-App::$strings["Channel Manager"] = "Gestionnaire du canal";
-App::$strings["Current Channel"] = "Canal actif";
-App::$strings["Attach to one of your channels by selecting it."] = "Branchez-vous à l'un de vos canaux en le selectionnant.";
-App::$strings["Default Channel"] = "Canal par défaut";
-App::$strings["Make Default"] = "Définir comme défaut";
-App::$strings["Wall Photos"] = "Photos du mur";
-App::$strings["Profile Match"] = "Profils similaires";
-App::$strings["No keywords to match. Please add keywords to your default profile."] = "Aucun mot-clef à comparer. Merci d'ajouter des mots-clefs à votre profil par défaut.";
-App::$strings["is interested in:"] = "s'intéresse à&nbsp;:";
-App::$strings["No matches"] = "Pas de correspondance";
-App::$strings["Menu updated."] = "Menu mis à jour.";
App::$strings["Unable to update menu."] = "Impossible de mettre le menu à jour.";
-App::$strings["Menu created."] = "Menu créé.";
App::$strings["Unable to create menu."] = "Impossible de créer le menu.";
-App::$strings["Manage Menus"] = "Gérer les menus";
+App::$strings["Menu Name"] = "Nom du menu";
+App::$strings["Unique name (not visible on webpage) - required"] = "Nom unique (non visible sur la page web) - requis";
+App::$strings["Menu Title"] = "Titre du menu";
+App::$strings["Visible on webpage - leave empty for no title"] = "Visible pour la page web - laisser vide pour qu'il n'y ait pas de titre";
+App::$strings["Allow Bookmarks"] = "Autoriser l'usage de favoris";
+App::$strings["Menu may be used to store saved bookmarks"] = "Le menu pourra être utilisé pour stocker des favoris";
+App::$strings["Submit and proceed"] = "Valider et continuer";
App::$strings["Drop"] = "Supprimer";
-App::$strings["Create a new menu"] = "Créer un nouveau menu";
+App::$strings["Bookmarks allowed"] = "Favoris autorisés";
App::$strings["Delete this menu"] = "Supprimer ce menu";
App::$strings["Edit menu contents"] = "Éditer le contenu du menu";
App::$strings["Edit this menu"] = "Éditer le menu";
-App::$strings["New Menu"] = "Nouveau menu";
+App::$strings["Menu could not be deleted."] = "Impossible de supprimer le menu.";
+App::$strings["Menu not found."] = "Menu introuvable.";
+App::$strings["Edit Menu"] = "Éditer le menu";
+App::$strings["Add or remove entries to this menu"] = "Ajouter/supprimer des entrées à ce menu";
App::$strings["Menu name"] = "Nom du menu";
App::$strings["Must be unique, only seen by you"] = "Doit être unique, ne sera vu que par vous";
App::$strings["Menu title"] = "Titre du menu";
App::$strings["Menu title as seen by others"] = "Titre du menu tel que vu par les visiteurs";
App::$strings["Allow bookmarks"] = "Autoriser l'usage de favoris";
-App::$strings["Menu may be used to store saved bookmarks"] = "Le menu pourra être utilisé pour stocker des favoris";
-App::$strings["Menu deleted."] = "Menu supprimé.";
-App::$strings["Menu could not be deleted."] = "Impossible de supprimer le menu.";
-App::$strings["Edit Menu"] = "Éditer le menu";
-App::$strings["Add or remove entries to this menu"] = "Ajouter/supprimer des entrées à ce menu";
+App::$strings["Not found."] = "Introuvable.";
App::$strings["Conversation removed."] = "Conversation supprimée.";
App::$strings["No messages."] = "Pas de message.";
App::$strings["D, d M Y - g:i A"] = "D d Y - H:i";
+App::$strings["Unable to create element."] = "Impossible de créer l'entrée.";
+App::$strings["Unable to update menu element."] = "Impossible de mettre l'entrée de menu à jour.";
+App::$strings["Unable to add menu element."] = "Impossible d'ajouter l'entrée de menu.";
+App::$strings["Menu Item Permissions"] = "Permissions de l'entrée de menu";
+App::$strings["Link Name"] = "Nom du lien";
+App::$strings["Link or Submenu Target"] = "Lien ou sous-menu cible";
+App::$strings["Enter URL of the link or select a menu name to create a submenu"] = "Entrez l'URL du lien ou sélectionnez un nom de menu pour créer un sous-menu";
+App::$strings["Use magic-auth if available"] = "Utiliser l'authentification distante, quand disponible";
+App::$strings["Open link in new window"] = "Ouvrir le lien dans une nouvelle fenêtre";
+App::$strings["Order in list"] = "Ordre dans la liste";
+App::$strings["Higher numbers will sink to bottom of listing"] = "Les nombres les plus élevés seront descendus au bas de la liste";
+App::$strings["Submit and finish"] = "Vadiler et terminer";
+App::$strings["Submit and continue"] = "Valider et continuer";
+App::$strings["Menu:"] = "Menu&nbsp;:";
+App::$strings["Link Target"] = "Cible du lien";
+App::$strings["Edit menu"] = "Éditer le menu";
+App::$strings["Edit element"] = "Éditer l'entrée";
+App::$strings["Drop element"] = "Supprimer l'entrée";
+App::$strings["New element"] = "Nouvelle entrée";
+App::$strings["Edit this menu container"] = "Éditer ce bloc de menu";
+App::$strings["Add menu element"] = "Ajouter une entrée au menu";
+App::$strings["Delete this menu item"] = "Supprimer cet entrée du menu";
+App::$strings["Edit this menu item"] = "Éditer cette entrée du menu";
+App::$strings["Menu item not found."] = "Entrée de menu introuvable.";
+App::$strings["Menu item deleted."] = "Entrée de menu supprimée.";
+App::$strings["Menu item could not be deleted."] = "Impossible de supprimer l'entrée de menu.";
+App::$strings["Edit Menu Element"] = "Éditer l'entrée de menu";
+App::$strings["Link text"] = "Texte du lien";
+App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s suit %3\$s de %2\$s";
+App::$strings["Set your current mood and tell your friends"] = "Indiquez votre humeur du moment à vos amis";
+App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Pas de suggestions pour l'instant. Si le site est récent, merci de re-tenter dans 24 heures.";
+App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s a étiqueté le %3\$s de %2\$s par %4\$s";
+App::$strings["Tag removed"] = "Étiquette retirée";
+App::$strings["Remove Item Tag"] = "Retirer une étiquette à l'élément";
+App::$strings["Select a tag to remove: "] = "Étiquette à retirer&nbsp;:";
+App::$strings["No such group"] = "Groupe introuvable";
+App::$strings["No such channel"] = "Canal introuvable";
+App::$strings["Search Results For:"] = "Résultats de recherche pour&nbsp;:";
+App::$strings["Collection is empty"] = "Collection vide";
+App::$strings["Collection: "] = "Collection&nbsp;:";
+App::$strings["Connection: "] = "Relation&nbsp;:";
+App::$strings["Invalid connection."] = "Relation invalide.";
+App::$strings["OpenID protocol error. No ID returned."] = "Erreur du protocole OpenID. Pas d'ID retourné.";
App::$strings["Add a Channel"] = "Ajouter un canal";
App::$strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "Un canal est une collection de pages web reliées entre elles, sous votre contrôle. Il peut contenir des profils de réseau social, des blogs, des groupes de conversation, des forums, des pages de célébrités, et bien plus encore. Vous pouvez créer autant de canaux que votre administrateur de hub vous y autorise.";
App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Exemples&nbsp;: \"Bob Jameson\", \"Lisa et ses chevaux sauvages\", \"Football\", \"Groupe des amateurs de tir à l'arc\"";
App::$strings["Choose a short nickname"] = "Choisissez un alias";
App::$strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "Cet alias sera utilisé pour créer une adresse de canal, facile à retenir - un peu comme une adresse de courriel - que vous pourrez partager avec d'autres.";
App::$strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "Ou <a href=\"import\">importez un canal existant</a> à un autre endroit";
-App::$strings["Invalid request identifier."] = "Identifiant de requête invalide.";
-App::$strings["Discard"] = "Annuler";
-App::$strings["No more system notifications."] = "Pas d'autre notification du système.";
-App::$strings["System Notifications"] = "Notifications du système";
-App::$strings["Unable to find your hub."] = "Impossible de trouver votre hub.";
-App::$strings["Post successful."] = "Contribution effectuée.";
+App::$strings["Please choose a channel type (such as social networking or community forum) and privacy requirements so we can select the best permissions for you"] = "Veuillez choisir un type de canal (par exemple \"réseau social\" ou \"forum communautaire\") et un niveau de confidentialité afin que nous puissions choisir les meilleures autorisations pour vous";
+App::$strings["Channel Type"] = "Type de canal";
+App::$strings["Read more about roles"] = "En savoir plus sur les rôles";
+App::$strings["Thing updated"] = "Chose mise-à-jour";
+App::$strings["Object store: failed"] = "Stockage de l'objet&nbsp;: échec";
+App::$strings["Thing added"] = "Chose ajoutée";
+App::$strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
+App::$strings["Show Thing"] = "Montrer chose";
+App::$strings["item not found."] = "élément introuvable.";
+App::$strings["Edit Thing"] = "Éditer chose";
+App::$strings["Select a profile"] = "Choisissez un profil";
+App::$strings["Post an activity"] = "Publier une activité";
+App::$strings["Only sends to viewers of the applicable profile"] = "Envoi exclusivement au membres autorisé de ce profil";
+App::$strings["Name of thing e.g. something"] = "Nom de la chose, p.ex. quelque-chose";
+App::$strings["URL of thing (optional)"] = "URL de la chose (optionnel)";
+App::$strings["URL for photo of thing (optional)"] = "URL de l'image de la chose (optionnel)";
+App::$strings["Add Thing to your Profile"] = "Ajouter la chose à votre profil";
+App::$strings["Export Channel"] = "Exporter le canal";
+App::$strings["Export your basic channel information to a file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new server hub, but does not contain your content."] = "Exportez les principales informations de votre canal dans un fichier. Celui-ci pourra servir de sauvegarde de vos contacts, permissions, profils et données de base. Il pourra être importé sur un nouveau hub/serveur, mais n'embarquera pas vos contenus.";
+App::$strings["Export Content"] = "Exporter le contenu";
+App::$strings["Export your channel information and recent content to a JSON backup that can be restored or imported to another server hub. This backs up all of your connections, permissions, profile data and several months of posts. This file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Exportez les informations du canal et les contenus récents dans un fichier JSON. Celui-ci contiendra toutes vos relations, permissions, profils, et plusieurs mois de publications. Ce fichier peut être TRÈS gros. Armez-vous de patience - plusieurs minutes peuvent s'écouler avant que le téléchargement ne commence.";
+App::$strings["Export your posts from a given year or month:"] = "";
+App::$strings["You may also export your posts and conversations for a particular year or month. Click on one of the recent years or months below."] = "";
+App::$strings["Jan"] = "Jan";
+App::$strings["Feb"] = "Fev";
+App::$strings["Mar"] = "Mar";
+App::$strings["Apr"] = "Avr";
+App::$strings["Jun"] = "Jun";
+App::$strings["Jul"] = "Jul";
+App::$strings["Aug"] = "Aou";
+App::$strings["Sep"] = "Sep";
+App::$strings["Oct"] = "Oct";
+App::$strings["Nov"] = "Nov";
+App::$strings["Dec"] = "Dec";
+App::$strings["If the export fails (possibly due to memory exhaustion on your server hub), please try again selecting a more limited date range."] = "";
+App::$strings["Or adjust the date in your browser location bar to select other dates. For example the year 2013; <a href=\"%1\$s/2013\">%1\$s/2013</a> or the month September 2013; <a href=\"%1\$s/2013/9\">%1\$s/2013/9</a>"] = "";
+App::$strings["Please visit"] = "";
+App::$strings["on another hub to import the backup files(s)."] = "";
+App::$strings["We advise you to clone the channel on the new hub first and than to import the backup file(s) (from the same channel) in chronological order. Importing the backup files into another channel will certainly give permission issues."] = "";
+App::$strings["[Embedded content - reload page to view]"] = "[Contenu embarqué - rechargez la page pour le voir]";
+App::$strings["No connections."] = "Pas de relations.";
+App::$strings["Visit %s's profile [%s]"] = "Visiter le profil de %s [%s]";
+App::$strings["Source of Item"] = "Source de l'élément";
+App::$strings["Total votes"] = "";
+App::$strings["Average Rating"] = "";
+App::$strings["Page Title"] = "Titre de la page";
+App::$strings["Xchan Lookup"] = "Recherche xchan";
+App::$strings["Lookup xchan beginning with (or webbie): "] = "Recherche xchan commençant par (ou adresse \"webbie\")&nbsp;:";
App::$strings["invalid target signature"] = "signature de la cible invalide";
-App::$strings["OpenID protocol error. No ID returned."] = "Erreur du protocole OpenID. Pas d'ID retourné.";
-App::$strings["App installed."] = "Application installée.";
-App::$strings["Malformed app."] = "Erreur de l'application - Malformée.";
-App::$strings["Embed code"] = "Code intégré";
-App::$strings["Edit App"] = "Edition de l'Application";
-App::$strings["Create App"] = "Création d'une Application";
-App::$strings["Name of app"] = "Nom de l'application";
-App::$strings["Location (URL) of app"] = "Emplacement (Lien) vers l'application";
-App::$strings["Photo icon URL"] = "Lien (URL) de l'icône à utiliser pour cette photo";
-App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixels - optionel";
-App::$strings["Version ID"] = "Version";
-App::$strings["Price of app"] = "Prix de l'application";
-App::$strings["Location (URL) to purchase app"] = "Emplacement (LIEN) pour l'achat de l'application";
-App::$strings["Poll"] = "Sondage";
-App::$strings["View Results"] = "Voir les Résultats";
-App::$strings["Friendica Photo Album Import"] = "Importer votre Album Photo Friendica";
-App::$strings["This will import all your Friendica photo albums to this Red channel."] = "Cette fonction va importer tous vos albums photos Friendica dans ce canal de la Matrice Rouge.";
-App::$strings["Friendica Server base URL"] = "URL vers le serveur Friendica";
-App::$strings["Friendica Login Username"] = "Nom d'utilisateur Friendica";
-App::$strings["Friendica Login Password"] = "Mot de passe Friendica";
-App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "Il est impossible de supprimer un compte à l'intérieur de 48 heures après avoir changé le mot de passe d'un compte.";
-App::$strings["Remove This Account"] = "Supprimer ce Compte";
-App::$strings["This will completely remove this account including all its channels from the network. Once this has been done it is not recoverable."] = "Cette fonction va complètement supprimer le compte incluant tous ses canaux sur la matrice. Attention, cette action est irréversible.";
-App::$strings["Remove this account, all its channels and all its channel clones from the network"] = "Supprimer ce compte, tous ses canaux et tous les clones sur la matrice.";
-App::$strings["By default only the instances of the channels located on this hub will be removed from the network"] = "Par défault, seuls les instances de canaux situés sur ce hub seront supprimer de la matrice.";
-App::$strings["Schema Default"] = "Par défault";
-App::$strings["Sans-Serif"] = "Sans-Serif";
-App::$strings["Monospace"] = "Monospace";
+App::$strings["Schema Default"] = "";
+App::$strings["Sans-Serif"] = "Sans empâtements";
+App::$strings["Monospace"] = "Chasse fixe";
App::$strings["Theme settings"] = "Réglages du thème";
App::$strings["Set scheme"] = "Définir la palette de couleurs";
App::$strings["Set font-size for posts and comments"] = "Définir font-size pour contribution et commentaires";
App::$strings["Set font face"] = "Définir la fonte";
App::$strings["Set iconset"] = "Définir le jeu d'icônes";
-App::$strings["Set big shadow size, default 15px 15px 15px"] = "Définir la taille des grandes ombres, par défaut 15px 15px 15px";
-App::$strings["Set small shadow size, default 5px 5px 5px"] = "Définir la taille des petites ombres, par défaut 5px 5px 5px";
-App::$strings["Set shadow color, default #000"] = "Définir la couleur des ombres, par défaut #000";
-App::$strings["Set radius size, default 5px"] = "Définir le rayon des arrondis, par défaut 5px";
-App::$strings["Set line-height for posts and comments"] = "Définir line-height pour contributions et commentaires";
-App::$strings["Set background image"] = "Définir l'image d'arrière-plan";
-App::$strings["Set background attachment"] = "Image de fond - fichier";
-App::$strings["Set background color"] = "Définir la couleur d'arrière-plan";
-App::$strings["Set section background image"] = "Définir l'image d'arrière-plan des sections";
-App::$strings["Set section background color"] = "Définir la couleur d'arrière-plan des sections";
-App::$strings["Set color of items - use hex"] = "Définir la couleur des éléments - en héxadécimal";
-App::$strings["Set color of links - use hex"] = "Définir la couleur des liens - en héxadécimal";
-App::$strings["Set max-width for items. Default 400px"] = "Définir la largeur maximal des éléments. Par défaut, 400px";
-App::$strings["Set min-width for items. Default 240px"] = "Définir la largeur minimale des éléments. Par défaut, 240px";
-App::$strings["Set the generic content wrapper width. Default 48%"] = "Définir la largeur du contenu. Par défaut, 48%";
-App::$strings["Set color of fonts - use hex"] = "Définir la couleur des fontes - en héxadécimal";
-App::$strings["Set background-size element"] = "Définir background-size pour les éléments";
+App::$strings["Set big shadow size, default 15px 15px 15px"] = "";
+App::$strings["Set small shadow size, default 5px 5px 5px"] = "";
+App::$strings["Set shadow color, default #000"] = "";
+App::$strings["Set radius size, default 5px"] = "";
+App::$strings["Set line-height for posts and comments"] = "";
+App::$strings["Set background image"] = "";
+App::$strings["Set background attachment"] = "";
+App::$strings["Set background color"] = "";
+App::$strings["Set section background image"] = "";
+App::$strings["Set section background color"] = "";
+App::$strings["Set color of items - use hex"] = "";
+App::$strings["Set color of links - use hex"] = "";
+App::$strings["Set max-width for items. Default 400px"] = "";
+App::$strings["Set min-width for items. Default 240px"] = "";
+App::$strings["Set the generic content wrapper width. Default 48%"] = "";
+App::$strings["Set color of fonts - use hex"] = "";
+App::$strings["Set background-size element"] = "Taille du fond";
App::$strings["Item opacity"] = "Opacité des éléments";
App::$strings["Display post previews only"] = "Afficher seulement l'aperçu des contributions";
App::$strings["Display side bar on channel page"] = "Afficher le panneau latéral sur la page du canal";
@@ -1853,10 +2123,8 @@ App::$strings["Right offset of the section element"] = "Décalage droit de l'él
App::$strings["Section width"] = "Largeur de la section";
App::$strings["Left offset of the aside"] = "Décalage gauche du panneau latéral";
App::$strings["Right offset of the aside element"] = "Décalage droit du panneau latéral";
-App::$strings["None"] = "Aucun";
-App::$strings["Header image"] = "Image de l'entête";
-App::$strings["Header image only on profile pages"] = "Image de l'entête tel qu'elle est affichée sur la page du profil";
-App::$strings["Light (Hubzilla default)"] = "Blanc (valeur par défaut)";
+App::$strings["Light (Red Matrix default)"] = "Blanc (valeur par défaut)";
+App::$strings["Select scheme"] = "Définir la palette de couleurs";
App::$strings["Narrow navbar"] = "Barre de navigation fine";
App::$strings["Navigation bar background color"] = "Couleur de fond de la barre de navigation";
App::$strings["Navigation bar gradient top color"] = "Gradient de la barre de navigation HAUT";
@@ -1877,22 +2145,24 @@ App::$strings["Set the indent for comments"] = "Indentation des commentaires";
App::$strings["Set the basic color for item icons"] = "Définir la couleur de base pour les icônes des éléments";
App::$strings["Set the hover color for item icons"] = "Définir la couleur de survol des icônes des éléments";
App::$strings["Set font-size for the entire application"] = "Définir la taille de police pour l'application entière";
+App::$strings["Example: 14px"] = "Exemple : 14px";
App::$strings["Set font-color for posts and comments"] = "Définir font-colour pour les contributions et commentaires";
App::$strings["Set radius of corners"] = "Définir le rayon des arrondis";
App::$strings["Set shadow depth of photos"] = "Définir la profondeur de l'ombre des photos";
-App::$strings["Set maximum width of conversation regions"] = "Définir la largeur maximale des conversations";
-App::$strings["Center conversation regions"] = "Emplacement de la conversation - Centrer";
+App::$strings["Set maximum width of content region in pixel"] = "Définir la largeur maximale de la zone des contenus";
+App::$strings["Leave empty for default width"] = "Laissez vide pour avoir la largeur par défaut";
+App::$strings["Center page content"] = "Contenue de la page centrale";
App::$strings["Set minimum opacity of nav bar - to hide it"] = "Définir l'opacité minimum du bandeau de navigation - pour le cacher";
App::$strings["Set size of conversation author photo"] = "Définir la taille de la photo de l'auteur d'une conversation";
App::$strings["Set size of followup author photos"] = "Définir la taille de la photo de l'auteur d'une réponse";
-App::$strings["Sloppy photo albums"] = "Albums photo \"en biais\"";
-App::$strings["Are you a clean desk or a messy desk person?"] = "Vous êtes plutôt \"bureau bien rangé\" ou \"gros foutoir\"?";
-App::$strings["Update %s failed. See error logs."] = "La mise à jour %s a échoué. Merci de consulter les journaux d'erreur.";
-App::$strings["Update Error at %s"] = "Erreur de mise à jour sur %s";
-App::$strings["Create an account to access services and applications within the Hubzilla"] = "Créez un compte pour pouvoir accéder aux services et applications de la Matrice Red";
+App::$strings["Update %s failed. See error logs."] = "La mise-à-jour %s a échoué. Merci de consulter les journaux d'erreur.";
+App::$strings["Update Error at %s"] = "Erreur de mise-à-jour sur %s";
+App::$strings["Create an account to access services and applications within the Red Matrix"] = "Créez un compte pour pouvoir accéder aux services et applications de la Matrice Red";
App::$strings["Password"] = "Mot de passe";
App::$strings["Remember me"] = "Se souvenir de moi";
App::$strings["Forgot your password?"] = "Mot de passe oublié?";
-App::$strings["permission denied"] = "permission refusée";
-App::$strings["Got Zot?"] = "Authentification magique a échouée. Êtes-vous toujours connecté à votre HUB?";
App::$strings["toggle mobile"] = "(dés)activer mobile";
+App::$strings["Website SSL certificate is not valid. Please correct."] = "Le certificat SSL n'est pas valide. Corrigez le.";
+App::$strings["[red] Website SSL error for %s"] = "[red] Erreur SSL pour %s";
+App::$strings["Cron/Scheduled tasks not running."] = "Les taches planifiées ne tournent pas.";
+App::$strings["[red] Cron tasks not running on %s"] = "[red] tache planifiée n'est pas en fonction sur %s";
diff --git a/view/he/strings.php b/view/he/strings.php
new file mode 100644
index 000000000..cd071e377
--- /dev/null
+++ b/view/he/strings.php
@@ -0,0 +1,2168 @@
+<?php
+
+if(! function_exists("string_plural_select_he")) {
+function string_plural_select_he($n){
+ return ($n != 1);;
+}}
+;
+App::$strings["No username found in import file."] = "";
+App::$strings["Unable to create a unique channel address. Import failed."] = "";
+App::$strings["Import completed."] = "×™×‘×•× ×”×•×©×œ×.";
+App::$strings["parent"] = "הורה";
+App::$strings["Collection"] = "×וסף";
+App::$strings["Principal"] = "";
+App::$strings["Addressbook"] = "פנקס כתובות";
+App::$strings["Calendar"] = "לוח שנה";
+App::$strings["Schedule Inbox"] = "";
+App::$strings["Schedule Outbox"] = "";
+App::$strings["Unknown"] = "";
+App::$strings["%1\$s used"] = "";
+App::$strings["%1\$s used of %2\$s (%3\$s&#37;)"] = "";
+App::$strings["Files"] = "קבצי×";
+App::$strings["Total"] = "סה״כ";
+App::$strings["Shared"] = "";
+App::$strings["Create"] = "צור";
+App::$strings["Upload"] = "העל××”";
+App::$strings["Name"] = "ש×";
+App::$strings["Type"] = "טיפוס";
+App::$strings["Size"] = "גודל";
+App::$strings["Last Modified"] = "שונה ל×חרונה";
+App::$strings["Edit"] = "ערוך";
+App::$strings["Delete"] = "מחק";
+App::$strings["Create new folder"] = "צור תיקייה חדשה";
+App::$strings["Upload file"] = "העלה קובץ";
+App::$strings["Cannot locate DNS info for database server '%s'"] = "×œ× × ×™×ª×Ÿ ל×תר מידע DNS עבור שרת מסד × ×ª×•× ×™× '%s'";
+App::$strings["Profile Photos"] = "תצלומי פרופיל";
+App::$strings["Logout"] = "יצי××”";
+App::$strings["End this session"] = "×¡×™×™× ×ת סשן ×–×”";
+App::$strings["Home"] = "בית";
+App::$strings["Your posts and conversations"] = "";
+App::$strings["View Profile"] = "";
+App::$strings["Your profile page"] = "";
+App::$strings["Edit Profiles"] = "";
+App::$strings["Manage/Edit profiles"] = "";
+App::$strings["Edit Profile"] = "ערוך פרופיל";
+App::$strings["Edit your profile"] = "ערוך ×ת הפרופיל שלך";
+App::$strings["Photos"] = "תצלומי×";
+App::$strings["Your photos"] = "×”×ª×¦×œ×•×ž×™× ×©×œ×š";
+App::$strings["Your files"] = "×”×§×‘×¦×™× ×©×œ×š";
+App::$strings["Chat"] = "שיחה";
+App::$strings["Your chatrooms"] = "החדרי שיחה שלך";
+App::$strings["Bookmarks"] = "סימניות";
+App::$strings["Your bookmarks"] = "הסימניות שלך";
+App::$strings["Webpages"] = "עמודי רשת";
+App::$strings["Your webpages"] = "העמודי רשת שלך";
+App::$strings["Login"] = "כניסה";
+App::$strings["Sign in"] = "התחברות";
+App::$strings["%s - click to logout"] = "%s - לחץ כדי להתנתק";
+App::$strings["Remote authentication"] = "×ימות מרוחק";
+App::$strings["Click to authenticate to your home hub"] = "";
+App::$strings["Home Page"] = "עמוד בית";
+App::$strings["Register"] = "הרשמה";
+App::$strings["Create an account"] = "צור חשבון";
+App::$strings["Help"] = "עזרה";
+App::$strings["Help and documentation"] = "עזרה ותיעוד";
+App::$strings["Apps"] = "×פליקציות";
+App::$strings["Applications, utilities, links, games"] = "";
+App::$strings["Search"] = "חיפוש";
+App::$strings["Search site content"] = "";
+App::$strings["Directory"] = "ספרייה";
+App::$strings["Channel Directory"] = "ערוץ ספרייה";
+App::$strings["Matrix"] = "מטריצה";
+App::$strings["Your matrix"] = "המטריצה שלך";
+App::$strings["Mark all matrix notifications seen"] = "סמן ×ת כל התר×ות המטריצה כנקר×ו";
+App::$strings["Channel Home"] = "ערוץ בית";
+App::$strings["Channel home"] = "ערוץ בית";
+App::$strings["Mark all channel notifications seen"] = "סמן ×ת כל התר×ות הערוץ כנקר×ו";
+App::$strings["Connections"] = "חיבורי×";
+App::$strings["Notices"] = "הודעות";
+App::$strings["Notifications"] = "התר×ות";
+App::$strings["See all notifications"] = "צפה בכל ההתר×ות";
+App::$strings["Mark all system notifications seen"] = "סמן ×ת כל התר×ות המערכת כנקר×ו";
+App::$strings["Mail"] = "דו×ר";
+App::$strings["Private mail"] = "דו×ר פרטי";
+App::$strings["See all private messages"] = "צפה בכל ההודעות הפרטיות";
+App::$strings["Mark all private messages seen"] = "סמן ×ת כל ההודעות הפרטיות כנקר×ו";
+App::$strings["Inbox"] = "תיבה נכנסת";
+App::$strings["Outbox"] = "תיבה יוצ×ת";
+App::$strings["New Message"] = "הודעה חדשה";
+App::$strings["Events"] = "×ירועי×";
+App::$strings["Event Calendar"] = "לוח שנה ×ירועי×";
+App::$strings["See all events"] = "ר××” ×ת כל ×”×ירועי×";
+App::$strings["Mark all events seen"] = "סמן ×ת כל ×”××™×¨×•×¢×™× ×›× ×§×¨×ו";
+App::$strings["Channel Manager"] = "מנהל ערוץ";
+App::$strings["Manage Your Channels"] = "נהל ×ת ×”×¢×¨×•×¦×™× ×©×œ×š";
+App::$strings["Settings"] = "הגדרות";
+App::$strings["Account/Channel Settings"] = "הגדרות חשבון/ערוץ";
+App::$strings["Admin"] = "מנהל";
+App::$strings["Site Setup and Configuration"] = "הבניית והגדרת ×תר";
+App::$strings["Loading..."] = "כעת טוען...";
+App::$strings["@name, #tag, content"] = "@ש×, #תגית, תוכן";
+App::$strings["Please wait..."] = "×× × ×”×ž×ª×Ÿ...";
+App::$strings["view full size"] = "";
+App::$strings["\$Projectname Notification"] = "";
+App::$strings["\$projectname"] = "";
+App::$strings["Thank You,"] = "תודה,";
+App::$strings["%s Administrator"] = "הנהלת %s";
+App::$strings["Administrator"] = "מנהל";
+App::$strings["No Subject"] = "×ין נוש×";
+App::$strings["prev"] = "קוד×";
+App::$strings["first"] = "ר×שון";
+App::$strings["last"] = "×חרון";
+App::$strings["next"] = "הב×";
+App::$strings["older"] = "ישן יותר";
+App::$strings["newer"] = "חדש יותר";
+App::$strings["No connections"] = "×ין חיבורי×";
+App::$strings["%d Connection"] = array(
+ 0 => "חיבור %d",
+ 1 => "%d חיבורי×",
+);
+App::$strings["View Connections"] = "צפה בחיבורי×";
+App::$strings["Save"] = "שמור";
+App::$strings["poke"] = "";
+App::$strings["poked"] = "";
+App::$strings["ping"] = "";
+App::$strings["pinged"] = "";
+App::$strings["prod"] = "";
+App::$strings["prodded"] = "";
+App::$strings["slap"] = "";
+App::$strings["slapped"] = "";
+App::$strings["finger"] = "";
+App::$strings["fingered"] = "";
+App::$strings["rebuff"] = "";
+App::$strings["rebuffed"] = "";
+App::$strings["happy"] = "שמח";
+App::$strings["sad"] = "עצוב";
+App::$strings["mellow"] = "מתון";
+App::$strings["tired"] = "×¢×™×™×£";
+App::$strings["perky"] = "חצוף";
+App::$strings["angry"] = "כועס";
+App::$strings["stupified"] = "";
+App::$strings["puzzled"] = "נבוך";
+App::$strings["interested"] = "מגלה עניין";
+App::$strings["bitter"] = "מר";
+App::$strings["cheerful"] = "עליז";
+App::$strings["alive"] = "×—×™";
+App::$strings["annoyed"] = "נרגז";
+App::$strings["anxious"] = "נרגז";
+App::$strings["cranky"] = "נרגז";
+App::$strings["disturbed"] = "מופרע";
+App::$strings["frustrated"] = "מתוסכל";
+App::$strings["depressed"] = "מדוכ×";
+App::$strings["motivated"] = "מונע";
+App::$strings["relaxed"] = "רגוע";
+App::$strings["surprised"] = "מופתע";
+App::$strings["Monday"] = "×™×•× ×©× ×™";
+App::$strings["Tuesday"] = "×™×•× ×©×œ×™×©×™";
+App::$strings["Wednesday"] = "×™×•× ×¨×‘×™×¢×™";
+App::$strings["Thursday"] = "×™×•× ×—×ž×™×©×™";
+App::$strings["Friday"] = "×™×•× ×©×™×©×™";
+App::$strings["Saturday"] = "×™×•× ×©×‘×ª";
+App::$strings["Sunday"] = "×™×•× ×¨×שון";
+App::$strings["January"] = "ינו×ר";
+App::$strings["February"] = "פברו×ר";
+App::$strings["March"] = "מרץ";
+App::$strings["April"] = "×פריל";
+App::$strings["May"] = "מ××™";
+App::$strings["June"] = "יוני";
+App::$strings["July"] = "יולי";
+App::$strings["August"] = "×וגוסט";
+App::$strings["September"] = "ספטמבר";
+App::$strings["October"] = "×וקטובר";
+App::$strings["November"] = "נובמבר";
+App::$strings["December"] = "דצמבר";
+App::$strings["unknown.???"] = "";
+App::$strings["bytes"] = "בייטי×";
+App::$strings["remove category"] = "";
+App::$strings["remove from file"] = "";
+App::$strings["Click to open/close"] = "לחץ כדי לפתוח/לסגור";
+App::$strings["Link to Source"] = "";
+App::$strings["default"] = "ברירת מחדל";
+App::$strings["Page layout"] = "";
+App::$strings["You can create your own with the layouts tool"] = "";
+App::$strings["Page content type"] = "";
+App::$strings["Select an alternate language"] = "";
+App::$strings["photo"] = "תצלו×";
+App::$strings["event"] = "×ירוע";
+App::$strings["status"] = "סטטוס";
+App::$strings["comment"] = "תגובה";
+App::$strings["activity"] = "פעילות";
+App::$strings["Design Tools"] = "";
+App::$strings["Blocks"] = "";
+App::$strings["Menus"] = "תפריטי×";
+App::$strings["Layouts"] = "";
+App::$strings["Pages"] = "עמודי×";
+App::$strings["Categories"] = "קטגוריות";
+App::$strings["System"] = "מערכת";
+App::$strings["Personal"] = "×ישי";
+App::$strings["Create Personal App"] = "צור ×פליקציה ×ישית";
+App::$strings["Edit Personal App"] = "ערוך ×פליקציה ×ישית";
+App::$strings["Connect"] = "התחבר";
+App::$strings["Ignore/Hide"] = "התעל×/הסתר";
+App::$strings["Suggestions"] = "הצעות";
+App::$strings["See more..."] = "צפה בעוד...";
+App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "";
+App::$strings["Add New Connection"] = "";
+App::$strings["Enter the channel address"] = "";
+App::$strings["Example: bob@example.com, http://example.com/barbara"] = "";
+App::$strings["Notes"] = "תזכירי×";
+App::$strings["Remove term"] = "";
+App::$strings["Saved Searches"] = "";
+App::$strings["add"] = "להוסיף";
+App::$strings["Saved Folders"] = "";
+App::$strings["Everything"] = "כל דבר";
+App::$strings["Archives"] = "×רכיוני×";
+App::$strings["Me"] = "×× ×™";
+App::$strings["Family"] = "משפחה";
+App::$strings["Friends"] = "חברי×";
+App::$strings["Acquaintances"] = "מכרי×";
+App::$strings["All"] = "הכל";
+App::$strings["Refresh"] = "רענן";
+App::$strings["Account settings"] = "הגדרות חשבון";
+App::$strings["Channel settings"] = "הגדרות ערוץ";
+App::$strings["Additional features"] = "תכונות נוספות";
+App::$strings["Feature/Addon settings"] = "";
+App::$strings["Display settings"] = "הגדרות תצוגה";
+App::$strings["Connected apps"] = "×פליקציות מחוברות";
+App::$strings["Export channel"] = "×™×¦× ×¢×¨×•×¥";
+App::$strings["Connection Default Permissions"] = "";
+App::$strings["Premium Channel Settings"] = "";
+App::$strings["Channel Sources"] = "מקורות ערוץ";
+App::$strings["Messages"] = "הודעות";
+App::$strings["Check Mail"] = "בדוק דו×ר";
+App::$strings["Chat Rooms"] = "חדרי שיחה";
+App::$strings["Bookmarked Chatrooms"] = "חדרי שיחה מסומני×";
+App::$strings["Suggested Chatrooms"] = "חדרי שיחה מוצעי×";
+App::$strings["photo/image"] = "תצלו×/תמונה";
+App::$strings["Rate Me"] = "דרג ×ותי";
+App::$strings["View Ratings"] = "צפה בדירוגי×";
+App::$strings["Public Hubs"] = "×ž×•×§×“×™× ×¤×•×ž×‘×™×™×";
+App::$strings["New window"] = "חלון חדש";
+App::$strings["Open the selected location in a different window or browser tab"] = "פתח ×ת ×”×ž×™×§×•× ×”× ×‘×—×¨ בתוך חלון ×ו סימניית דפדפן ×חרי×";
+App::$strings["User '%s' deleted"] = "משתמש '%s' נמחק";
+App::$strings["No recipient provided."] = "";
+App::$strings["[no subject]"] = "[×ין נוש×]";
+App::$strings["Unable to determine sender."] = "";
+App::$strings["Stored post could not be verified."] = "";
+App::$strings["Invalid data packet"] = "";
+App::$strings["Unable to verify channel signature"] = "";
+App::$strings["Unable to verify site signature for %s"] = "";
+App::$strings["created a new post"] = "צור פוסט חדש";
+App::$strings["commented on %s's post"] = "הגיב/ה על פוסט של %s";
+App::$strings["Private Message"] = "הודעה פרטית";
+App::$strings["Select"] = "בחר";
+App::$strings["Save to Folder"] = "שמור לתיקייה";
+App::$strings["I will attend"] = "×× ×™ ×ופיע";
+App::$strings["I will not attend"] = "×× ×™ ×œ× ×ופיע";
+App::$strings["I might attend"] = "×× ×™ עשוי/×” להופיע";
+App::$strings["I agree"] = "×× ×™ מסכי×/×”";
+App::$strings["I disagree"] = "×× ×™ ×œ× ×ž×¡×›×™×/×”";
+App::$strings["I abstain"] = "×× ×™ נמנע/ת";
+App::$strings["View all"] = "צפה בכול×";
+App::$strings["__ctx:noun__ Like"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["__ctx:noun__ Dislike"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["Add Star"] = "הוסף כוכב";
+App::$strings["Remove Star"] = "הסר כוכב";
+App::$strings["Toggle Star Status"] = "";
+App::$strings["starred"] = "";
+App::$strings["Message signature validated"] = "";
+App::$strings["Message signature incorrect"] = "";
+App::$strings["Add Tag"] = "הוסף תגית";
+App::$strings["I like this (toggle)"] = "×הבתי ×ת ×–×” (החלף)";
+App::$strings["like"] = "";
+App::$strings["I don't like this (toggle)"] = "×œ× ×הבתי ×ת ×–×” (החלף)";
+App::$strings["dislike"] = "";
+App::$strings["Share This"] = "שתף ×–×ת";
+App::$strings["share"] = "שתף";
+App::$strings["%d comment"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["View %s's profile - %s"] = "";
+App::$strings["to"] = "×ל";
+App::$strings["via"] = "";
+App::$strings["Wall-to-Wall"] = "";
+App::$strings["via Wall-To-Wall:"] = "";
+App::$strings["from %s"] = "";
+App::$strings["last edited: %s"] = "";
+App::$strings["Expires: %s"] = "";
+App::$strings["Save Bookmarks"] = "";
+App::$strings["Add to Calendar"] = "";
+App::$strings["Mark all seen"] = "סמן ×ת הכל כנקר×ו";
+App::$strings["__ctx:noun__ Likes"] = "";
+App::$strings["__ctx:noun__ Dislikes"] = "";
+App::$strings["Close"] = "סגור";
+App::$strings["Please wait"] = "×× × ×”×ž×ª×Ÿ";
+App::$strings["[+] show all"] = "[+] הצג הכל";
+App::$strings["This is you"] = "×–×” ×ת/×”";
+App::$strings["Comment"] = "תגובה";
+App::$strings["Submit"] = "שלח";
+App::$strings["Bold"] = "מובלט";
+App::$strings["Italic"] = "נטוי";
+App::$strings["Underline"] = "קו תחתון";
+App::$strings["Quote"] = "ציטוט";
+App::$strings["Code"] = "קוד";
+App::$strings["Image"] = "תמונה";
+App::$strings["Insert Link"] = "הכנס קישור";
+App::$strings["Video"] = "ויד×ו";
+App::$strings["Preview"] = "תצוגה מקדימה";
+App::$strings["Encrypt text"] = "הצפן טקסט";
+App::$strings["Not a valid email address"] = "כתובת דו×״ל ×œ× ×ª×§×™× ×”";
+App::$strings["Your email domain is not among those allowed on this site"] = "";
+App::$strings["Your email address is already registered at this site."] = "";
+App::$strings["An invitation is required."] = "נדרשת הזמנה.";
+App::$strings["Invitation could not be verified."] = "×ימות הזמנה ×œ× ×”×ª×פשר.";
+App::$strings["Please enter the required information."] = "×× × ×”×–×Ÿ ×ת המידע הנחוץ.";
+App::$strings["Failed to store account information."] = "נכשל ל×חסן מידע חשבון.";
+App::$strings["Registration confirmation for %s"] = "×ימות ×¨×™×©×•× ×¢×‘×•×¨ %s";
+App::$strings["Registration request at %s"] = "בקשת ×¨×™×©×•× ×צל %s";
+App::$strings["your registration password"] = "סיסמת ×¨×™×©×•× ×©×œ×š";
+App::$strings["Registration details for %s"] = "פרטי ×¨×™×©×•× ×¢×‘×•×¨ %s";
+App::$strings["Account approved."] = "חשבון ×ושר.";
+App::$strings["Registration revoked for %s"] = "×¨×™×©×•× ×‘×•×˜×œ עבור %s";
+App::$strings["Account verified. Please login."] = "חשבון ×ומת. ×× × ×”×ª×—×‘×¨.";
+App::$strings["Click here to upgrade."] = "לחץ ×›×ן כדי לשדרג.";
+App::$strings["This action exceeds the limits set by your subscription plan."] = "";
+App::$strings["This action is not available under your subscription plan."] = "";
+App::$strings["Embedded content"] = "";
+App::$strings["Embedding disabled"] = "";
+App::$strings["Visible to your default audience"] = "";
+App::$strings["Show"] = "הצג";
+App::$strings["Don't show"] = "×ל תציג";
+App::$strings["Permissions"] = "הרש×ות";
+App::$strings[" and "] = " ×•×’× ";
+App::$strings["public profile"] = "פרופיל פומבי";
+App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "";
+App::$strings["Visit %1\$s's %2\$s"] = "";
+App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "";
+App::$strings["Public Timeline"] = "ציר זמן פומבי";
+App::$strings["Site Admin"] = "מנהל ×תר";
+App::$strings["Address Book"] = "פנקס כתובות";
+App::$strings["Profile"] = "פרופיל";
+App::$strings["Mood"] = "מצב רוח";
+App::$strings["Poke"] = "";
+App::$strings["Probe"] = "";
+App::$strings["Suggest"] = "הצע";
+App::$strings["Random Channel"] = "";
+App::$strings["Invite"] = "הזמן";
+App::$strings["Features"] = "תכונות";
+App::$strings["Language"] = "שפה";
+App::$strings["Post"] = "פוסט";
+App::$strings["Profile Photo"] = "×ª×¦×œ×•× ×¤×¨×•×¤×™×œ";
+App::$strings["Update"] = "עדכן";
+App::$strings["Install"] = "התקן";
+App::$strings["Purchase"] = "רכוש";
+App::$strings["Permission denied."] = "הרש××” נדחתה.";
+App::$strings["Item was not found."] = "פריט ×œ× × ×ž×¦×.";
+App::$strings["No source file."] = "×ין קובץ מקור.";
+App::$strings["Cannot locate file to replace"] = "";
+App::$strings["Cannot locate file to revise/update"] = "";
+App::$strings["File exceeds size limit of %d"] = "";
+App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "";
+App::$strings["File upload failed. Possible system limit or action terminated."] = "";
+App::$strings["Stored file could not be verified. Upload failed."] = "";
+App::$strings["Path not available."] = "נתיב ×œ× ×–×ž×™×Ÿ.";
+App::$strings["Empty pathname"] = "";
+App::$strings["duplicate filename or path"] = "";
+App::$strings["Path not found."] = "נתיב ×œ× × ×ž×¦×.";
+App::$strings["mkdir failed."] = "mkdir נכשל.";
+App::$strings["database storage failed."] = "";
+App::$strings["Logged out."] = "מנותק.";
+App::$strings["Failed authentication"] = "×ימות נכשל";
+App::$strings["Login failed."] = "התחברות נכשלה.";
+App::$strings["Attachments:"] = "תצריפי×:";
+App::$strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
+App::$strings["\$Projectname event notification:"] = "";
+App::$strings["Starts:"] = "מתחיל:";
+App::$strings["Finishes:"] = "נגמר:";
+App::$strings["Location:"] = "מיקו×:";
+App::$strings["Image/photo"] = "תמונה/תצלו×";
+App::$strings["Encrypted content"] = "תוכן מוצפן";
+App::$strings["Install %s element: "] = "";
+App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "";
+App::$strings["webpage"] = "עמוד רשת";
+App::$strings["layout"] = "";
+App::$strings["block"] = "";
+App::$strings["menu"] = "תפריט";
+App::$strings["QR code"] = "קוד QR";
+App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "";
+App::$strings["post"] = "פוסט";
+App::$strings["Different viewers will see this text differently"] = "";
+App::$strings["$1 spoiler"] = "";
+App::$strings["$1 wrote:"] = "$1 כתב(ה):";
+App::$strings["%1\$s's bookmarks"] = "";
+App::$strings["Missing room name"] = "";
+App::$strings["Duplicate room name"] = "";
+App::$strings["Invalid room specifier."] = "";
+App::$strings["Room not found."] = "חדר ×œ× × ×ž×¦×.";
+App::$strings["Room is full"] = "חדר מל×";
+App::$strings["Default"] = "ברירת מחדל";
+App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "";
+App::$strings["Frequently"] = "ב×ופן תדיר";
+App::$strings["Hourly"] = "כל שעה";
+App::$strings["Twice daily"] = "×¤×¢×ž×™×™× ×‘×™×•×";
+App::$strings["Daily"] = "יומי";
+App::$strings["Weekly"] = "שבועי";
+App::$strings["Monthly"] = "חודשי";
+App::$strings["Friendica"] = "Friendica";
+App::$strings["OStatus"] = "OStatus";
+App::$strings["RSS/Atom"] = "RSS/Atom";
+App::$strings["Email"] = "דו×״ל";
+App::$strings["Diaspora"] = "Diaspora";
+App::$strings["Facebook"] = "פייסבוק";
+App::$strings["Zot!"] = "Zot!";
+App::$strings["LinkedIn"] = "LinkedIn";
+App::$strings["XMPP/IM"] = "XMPP/IM";
+App::$strings["MySpace"] = "MySpace";
+App::$strings["%d invitation available"] = array(
+ 0 => "הזמנה %d זמינה",
+ 1 => "%d הזמנות זמינות",
+);
+App::$strings["Advanced"] = "מתקד×";
+App::$strings["Find Channels"] = "×ž×¦× ×¢×¨×•×¦×™×";
+App::$strings["Enter name or interest"] = "הזן ×©× ×ו עניין";
+App::$strings["Connect/Follow"] = "התחבר/עקוב";
+App::$strings["Examples: Robert Morgenstein, Fishing"] = "";
+App::$strings["Find"] = "מצ×";
+App::$strings["Channel Suggestions"] = "הצעות ערוץ";
+App::$strings["Random Profile"] = "פרופיל ×קר××™";
+App::$strings["Invite Friends"] = "הזמן חברי×";
+App::$strings["Advanced example: name=fred and country=iceland"] = "×“×•×’×ž× ×ž×ª×§×“×ž×ª: name=פרד ×•×’× country=×יסלנד";
+App::$strings["%d connection in common"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["show more"] = "הצג עוד";
+App::$strings["channel"] = "ערוץ";
+App::$strings["%1\$s likes %2\$s's %3\$s"] = "";
+App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "";
+App::$strings["%1\$s is now connected with %2\$s"] = "";
+App::$strings["%1\$s poked %2\$s"] = "";
+App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "";
+App::$strings["__ctx:title__ Likes"] = "";
+App::$strings["__ctx:title__ Dislikes"] = "";
+App::$strings["__ctx:title__ Agree"] = "מסכי×";
+App::$strings["__ctx:title__ Disagree"] = "×œ× ×ž×¡×›×™×";
+App::$strings["__ctx:title__ Abstain"] = "נמנע";
+App::$strings["__ctx:title__ Attending"] = "נוכח";
+App::$strings["__ctx:title__ Not attending"] = "×œ× × ×•×›×—";
+App::$strings["__ctx:title__ Might attend"] = "עשוי להיווכח";
+App::$strings["View %s's profile @ %s"] = "";
+App::$strings["Categories:"] = "קטגוריות:";
+App::$strings["Filed under:"] = "תויק תחת:";
+App::$strings["View in context"] = "";
+App::$strings["remove"] = "להסיר";
+App::$strings["Delete Selected Items"] = "";
+App::$strings["View Source"] = "צפה במקור";
+App::$strings["Follow Thread"] = "עקוב שרשור";
+App::$strings["View Status"] = "צפה בסטטוס";
+App::$strings["View Photos"] = "צפה בתצלומי×";
+App::$strings["Matrix Activity"] = "פעילות מטריצה";
+App::$strings["Edit Contact"] = "ערוך ×יש קשר";
+App::$strings["Send PM"] = "שלח הודעה פרטית";
+App::$strings["%s likes this."] = "";
+App::$strings["%s doesn't like this."] = "";
+App::$strings["<span %1\$s>%2\$d people</span> like this."] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["and"] = "";
+App::$strings[", and %d other people"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["%s like this."] = "";
+App::$strings["%s don't like this."] = "";
+App::$strings["Visible to <strong>everybody</strong>"] = "";
+App::$strings["Please enter a link URL:"] = "";
+App::$strings["Please enter a video link/URL:"] = "";
+App::$strings["Please enter an audio link/URL:"] = "";
+App::$strings["Tag term:"] = "";
+App::$strings["Save to Folder:"] = "שמור לתיקייה:";
+App::$strings["Where are you right now?"] = "";
+App::$strings["Expires YYYY-MM-DD HH:MM"] = "";
+App::$strings["Share"] = "שתף";
+App::$strings["Page link name"] = "";
+App::$strings["Post as"] = "";
+App::$strings["Upload photo"] = "העלה תצלו×";
+App::$strings["upload photo"] = "העלה תצלו×";
+App::$strings["Attach file"] = "צרף קובץ";
+App::$strings["attach file"] = "צרף קובץ";
+App::$strings["Insert web link"] = "הכנס קישור רשת";
+App::$strings["web link"] = "קישור רשת";
+App::$strings["Insert video link"] = "הכנס קישור ויד×ו";
+App::$strings["video link"] = "קישור ויד×ו";
+App::$strings["Insert audio link"] = "הכנס קישור ×ודיו";
+App::$strings["audio link"] = "קישור ×ודיו";
+App::$strings["Set your location"] = "";
+App::$strings["set location"] = "";
+App::$strings["Toggle voting"] = "";
+App::$strings["Clear browser location"] = "";
+App::$strings["clear location"] = "";
+App::$strings["Title (optional)"] = "";
+App::$strings["Categories (optional, comma-separated list)"] = "";
+App::$strings["Permission settings"] = "";
+App::$strings["permissions"] = "הרש×ות";
+App::$strings["Public post"] = "";
+App::$strings["Example: bob@example.com, mary@example.com"] = "";
+App::$strings["Set expiration date"] = "";
+App::$strings["OK"] = "×ישור";
+App::$strings["Cancel"] = "ביטול";
+App::$strings["Discover"] = "";
+App::$strings["Imported public streams"] = "";
+App::$strings["Commented Order"] = "";
+App::$strings["Sort by Comment Date"] = "";
+App::$strings["Posted Order"] = "";
+App::$strings["Sort by Post Date"] = "";
+App::$strings["Posts that mention or involve you"] = "";
+App::$strings["New"] = "חדש";
+App::$strings["Activity Stream - by date"] = "";
+App::$strings["Starred"] = "";
+App::$strings["Favourite Posts"] = "";
+App::$strings["Spam"] = "ספ××";
+App::$strings["Posts flagged as SPAM"] = "×¤×•×¡×˜×™× ×ž×¡×•×ž× ×™× ×‘×ª×•×¨ ספ××";
+App::$strings["Channel"] = "ערוץ";
+App::$strings["Status Messages and Posts"] = "הודעות ופרסומי סטטוס";
+App::$strings["About"] = "×ודות";
+App::$strings["Profile Details"] = "פרטי פרופיל";
+App::$strings["Photo Albums"] = "×לבומי תמונה";
+App::$strings["Files and Storage"] = "×§×‘×¦×™× ×•×חסון";
+App::$strings["Chatrooms"] = "חדרי שיחה";
+App::$strings["Saved Bookmarks"] = "סימניות שמורות";
+App::$strings["Manage Webpages"] = "נהל עמודי רשת";
+App::$strings["__ctx:noun__ Attending"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["__ctx:noun__ Not Attending"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["__ctx:noun__ Undecided"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["__ctx:noun__ Agree"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["__ctx:noun__ Disagree"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["__ctx:noun__ Abstain"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["Miscellaneous"] = "שונות";
+App::$strings["YYYY-MM-DD or MM-DD"] = "YYYY-MM-DD ×ו MM-DD";
+App::$strings["Required"] = "דָרוּש×";
+App::$strings["never"] = "×œ×¢×•×œ× ×œ×";
+App::$strings["less than a second ago"] = "לפני פחות משניה";
+App::$strings["year"] = "שנה";
+App::$strings["years"] = "שני×";
+App::$strings["month"] = "חודש";
+App::$strings["months"] = "חודשי×";
+App::$strings["week"] = "שבוע";
+App::$strings["weeks"] = "שבועות";
+App::$strings["day"] = "יו×";
+App::$strings["days"] = "ימי×";
+App::$strings["hour"] = "שעה";
+App::$strings["hours"] = "שעות";
+App::$strings["minute"] = "דקה";
+App::$strings["minutes"] = "דקות";
+App::$strings["second"] = "שניה";
+App::$strings["seconds"] = "שניות";
+App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "לפני %1\$d %2\$s";
+App::$strings["%1\$s's birthday"] = "";
+App::$strings["Happy Birthday %1\$s"] = "";
+App::$strings["Please choose"] = "לבחירתך";
+App::$strings["Agree"] = "מסכי×/×”";
+App::$strings["Disagree"] = "×œ× ×ž×¡×›×™×/×”";
+App::$strings["Abstain"] = "נמנע/ת";
+App::$strings["Nickname has unsupported characters or is already being used on this site."] = "";
+App::$strings["Directory Options"] = "";
+App::$strings["Safe Mode"] = "מצב בטוח";
+App::$strings["No"] = "ל×";
+App::$strings["Yes"] = "כן";
+App::$strings["Public Forums Only"] = "";
+App::$strings["This Website Only"] = "";
+App::$strings["%s <!item_type!>"] = "";
+App::$strings["[Red:Notify] New mail received at %s"] = "";
+App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "";
+App::$strings["%1\$s sent you %2\$s."] = "";
+App::$strings["a private message"] = "הודעה פרטית";
+App::$strings["Please visit %s to view and/or reply to your private messages."] = "";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "";
+App::$strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "";
+App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "";
+App::$strings["Please visit %s to view and/or reply to the conversation."] = "";
+App::$strings["[Red:Notify] %s posted to your profile wall"] = "";
+App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "";
+App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "";
+App::$strings["[Red:Notify] %s tagged you"] = "";
+App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "";
+App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "";
+App::$strings["[Red:Notify] %1\$s poked you"] = "";
+App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "";
+App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "";
+App::$strings["[Red:Notify] %s tagged your post"] = "";
+App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "";
+App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "";
+App::$strings["[Red:Notify] Introduction received"] = "";
+App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "";
+App::$strings["You may visit their profile at %s"] = "";
+App::$strings["Please visit %s to approve or reject the connection request."] = "";
+App::$strings["[Red:Notify] Friend suggestion received"] = "";
+App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "";
+App::$strings["Name:"] = "ש×:";
+App::$strings["Photo:"] = "תצלו×:";
+App::$strings["Please visit %s to approve or reject the suggestion."] = "";
+App::$strings["[Red:Notify]"] = "";
+App::$strings["This event has been added to your calendar."] = "×ירוע ×–×” התווסף ללוח שנה שלך.";
+App::$strings["General Features"] = "";
+App::$strings["Content Expiration"] = "";
+App::$strings["Remove posts/comments and/or private messages at a future time"] = "";
+App::$strings["Multiple Profiles"] = "";
+App::$strings["Ability to create multiple profiles"] = "";
+App::$strings["Advanced Profiles"] = "";
+App::$strings["Additional profile sections and selections"] = "";
+App::$strings["Profile Import/Export"] = "";
+App::$strings["Save and load profile details across sites/channels"] = "";
+App::$strings["Web Pages"] = "עמודי רשת";
+App::$strings["Provide managed web pages on your channel"] = "";
+App::$strings["Private Notes"] = "";
+App::$strings["Enables a tool to store notes and reminders"] = "";
+App::$strings["Navigation Channel Select"] = "";
+App::$strings["Change channels directly from within the navigation dropdown menu"] = "";
+App::$strings["Photo Location"] = "×ž×™×§×•× ×ª×¦×œ×•×";
+App::$strings["If location data is available on uploaded photos, link this to a map."] = "";
+App::$strings["Expert Mode"] = "מצב מומחה";
+App::$strings["Enable Expert Mode to provide advanced configuration options"] = "";
+App::$strings["Premium Channel"] = "";
+App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "";
+App::$strings["Post Composition Features"] = "";
+App::$strings["Use Markdown"] = "";
+App::$strings["Allow use of \"Markdown\" to format posts"] = "";
+App::$strings["Large Photos"] = "";
+App::$strings["Include large (640px) photo thumbnails in posts. If not enabled, use small (320px) photo thumbnails"] = "";
+App::$strings["Automatically import channel content from other channels or feeds"] = "";
+App::$strings["Even More Encryption"] = "";
+App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "";
+App::$strings["Enable voting tools"] = "";
+App::$strings["Provide a class of post which others can vote on"] = "";
+App::$strings["Network and Stream Filtering"] = "";
+App::$strings["Search by Date"] = "חפש לפי ת×ריך";
+App::$strings["Ability to select posts by date ranges"] = "מסנן ×וספי×";
+App::$strings["Collections Filter"] = "מסנן ×וספי×";
+App::$strings["Enable widget to display Network posts only from selected collections"] = "";
+App::$strings["Save search terms for re-use"] = "";
+App::$strings["Network Personal Tab"] = "";
+App::$strings["Enable tab to display only Network posts that you've interacted on"] = "";
+App::$strings["Network New Tab"] = "";
+App::$strings["Enable tab to display all new Network activity"] = "";
+App::$strings["Affinity Tool"] = "";
+App::$strings["Filter stream activity by depth of relationships"] = "";
+App::$strings["Connection Filtering"] = "";
+App::$strings["Filter incoming posts from connections based on keywords/content"] = "";
+App::$strings["Suggest Channels"] = "";
+App::$strings["Show channel suggestions"] = "";
+App::$strings["Post/Comment Tools"] = "";
+App::$strings["Tagging"] = "";
+App::$strings["Ability to tag existing posts"] = "";
+App::$strings["Post Categories"] = "";
+App::$strings["Add categories to your posts"] = "";
+App::$strings["Ability to file posts under folders"] = "";
+App::$strings["Dislike Posts"] = "";
+App::$strings["Ability to dislike posts/comments"] = "";
+App::$strings["Star Posts"] = "";
+App::$strings["Ability to mark special posts with a star indicator"] = "";
+App::$strings["Tag Cloud"] = "";
+App::$strings["Provide a personal tag cloud on your channel page"] = "";
+App::$strings["Channel is blocked on this site."] = "";
+App::$strings["Channel location missing."] = "";
+App::$strings["Response from remote channel was incomplete."] = "";
+App::$strings["Channel was deleted and no longer exists."] = "";
+App::$strings["Protocol disabled."] = "";
+App::$strings["Protocol blocked for this channel."] = "";
+App::$strings["Channel discovery failed."] = "";
+App::$strings["local account not found."] = "";
+App::$strings["Cannot connect to yourself."] = "";
+App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "";
+App::$strings["Default privacy group for new contacts"] = "";
+App::$strings["All Channels"] = "כל הערוצי×";
+App::$strings["edit"] = "ערוך";
+App::$strings["Collections"] = "×וספי×";
+App::$strings["Edit collection"] = "ערוך ×וסף";
+App::$strings["Add new collection"] = "הוסף ×וסף חדש";
+App::$strings["Channels not in any collection"] = "";
+App::$strings["Unable to obtain identity information from database"] = "";
+App::$strings["Empty name"] = "×©× ×¨×™×§";
+App::$strings["Name too long"] = "×©× ×רוך מדי";
+App::$strings["No account identifier"] = "×ין מזהה חשבון";
+App::$strings["Nickname is required."] = "נדרש ×©× ×›×™× ×•×™.";
+App::$strings["Reserved nickname. Please choose another."] = "";
+App::$strings["Unable to retrieve created identity"] = "";
+App::$strings["Default Profile"] = "פרופיל שגרתי";
+App::$strings["Requested channel is not available."] = "";
+App::$strings["Requested profile is not available."] = "";
+App::$strings["Change profile photo"] = "";
+App::$strings["Profiles"] = "פרופילי×";
+App::$strings["Manage/edit profiles"] = "";
+App::$strings["Create New Profile"] = "צור פרופיל חדש";
+App::$strings["Profile Image"] = "תמונת פרופיל";
+App::$strings["visible to everybody"] = "";
+App::$strings["Edit visibility"] = "";
+App::$strings["Gender:"] = "מין:";
+App::$strings["Status:"] = "מצב:";
+App::$strings["Homepage:"] = "עמוד בית:";
+App::$strings["Online Now"] = "מקוון כעת";
+App::$strings["g A l F d"] = "";
+App::$strings["F d"] = "";
+App::$strings["[today]"] = "[היו×]";
+App::$strings["Birthday Reminders"] = "";
+App::$strings["Birthdays this week:"] = "";
+App::$strings["[No description]"] = "[×ין תי×ור]";
+App::$strings["Event Reminders"] = "";
+App::$strings["Events this week:"] = "";
+App::$strings["Full Name:"] = "×©× ×ž×œ×:";
+App::$strings["Like this channel"] = "";
+App::$strings["j F, Y"] = "";
+App::$strings["j F"] = "";
+App::$strings["Birthday:"] = "×™×•× ×”×•×œ×“×ª:";
+App::$strings["Age:"] = "גיל:";
+App::$strings["for %1\$d %2\$s"] = "";
+App::$strings["Sexual Preference:"] = "העדפה מינית:";
+App::$strings["Hometown:"] = "עיר מגורי×:";
+App::$strings["Tags:"] = "תגיות:";
+App::$strings["Political Views:"] = "השקפות פוליטיות:";
+App::$strings["Religion:"] = "דת:";
+App::$strings["About:"] = "×ודות:";
+App::$strings["Hobbies/Interests:"] = "תחביבי×/עניין:";
+App::$strings["Likes:"] = "×והב:";
+App::$strings["Dislikes:"] = "שונ×:";
+App::$strings["Contact information and Social Networks:"] = "";
+App::$strings["My other channels:"] = "";
+App::$strings["Musical interests:"] = "";
+App::$strings["Books, literature:"] = "";
+App::$strings["Television:"] = "טלוויזיה:";
+App::$strings["Film/dance/culture/entertainment:"] = "";
+App::$strings["Love/Romance:"] = "";
+App::$strings["Work/employment:"] = "";
+App::$strings["School/education:"] = "";
+App::$strings["Like this thing"] = "";
+App::$strings["Permission denied"] = "";
+App::$strings["(Unknown)"] = "(×œ× ×™×“×•×¢)";
+App::$strings["Visible to anybody on the internet."] = "נר××” לכל ×חד ב×ינטרנט.";
+App::$strings["Visible to you only."] = "נר××” לך בלבד.";
+App::$strings["Visible to anybody in this network."] = "נר××” לכל ×חד ברשת זו.";
+App::$strings["Visible to anybody authenticated."] = "נר××” לכל מי ×©×”×•× ×ž×ומת.";
+App::$strings["Visible to anybody on %s."] = "נר××” לכל ×חד ×צל %s.";
+App::$strings["Visible to all connections."] = "נר××” לכל החיבורי×.";
+App::$strings["Visible to approved connections."] = "נר××” ×œ×—×™×‘×•×¨×™× ×ž×ושרי×.";
+App::$strings["Visible to specific connections."] = "נר××” ×œ×—×™×‘×•×¨×™× ×ž×¡×•×™×ž×™×.";
+App::$strings["Item not found."] = "פריט ×œ× × ×ž×¦×.";
+App::$strings["Collection not found."] = "×וסף ×œ× × ×ž×¦×.";
+App::$strings["Collection is empty."] = "×וסף הינו ריק.";
+App::$strings["Collection: %s"] = "×וסף: %s";
+App::$strings["Connection: %s"] = "חיבור: %s";
+App::$strings["Connection not found."] = "חיבור ×œ× × ×ž×¦×.";
+App::$strings["Delete this item?"] = "למחוק ×ת פריט ×–×”?";
+App::$strings["[-] show less"] = "[-] הצג פחות";
+App::$strings["[+] expand"] = "[+] הרחב";
+App::$strings["[-] collapse"] = "[-] צמצ×";
+App::$strings["Password too short"] = "סיסמה קצרה מדי";
+App::$strings["Passwords do not match"] = "סיסמ×ות ×œ× ×ª×•×מות";
+App::$strings["everybody"] = "כול×";
+App::$strings["Secret Passphrase"] = "מימרת סיסמה סודית";
+App::$strings["Passphrase hint"] = "";
+App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "";
+App::$strings["close all"] = "סגור הכל";
+App::$strings["Nothing new here"] = "×ין דבר חדש ×›×ן";
+App::$strings["Rate This Channel (this is public)"] = "";
+App::$strings["Rating"] = "";
+App::$strings["Describe (optional)"] = "ת×ר (רשות)";
+App::$strings["Please enter a link URL"] = "";
+App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "";
+App::$strings["timeago.prefixAgo"] = "timeago.prefixAgo";
+App::$strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
+App::$strings["ago"] = "לפני";
+App::$strings["from now"] = "מעכשיו";
+App::$strings["less than a minute"] = "פחות מדקה";
+App::$strings["about a minute"] = "דקה לערך";
+App::$strings["%d minutes"] = "%d דקות";
+App::$strings["about an hour"] = "שעה לערך";
+App::$strings["about %d hours"] = " %d שעות לערך";
+App::$strings["a day"] = "יו×";
+App::$strings["%d days"] = "%d ימי×";
+App::$strings["about a month"] = "חודש לערך";
+App::$strings["%d months"] = "%d חודשי×";
+App::$strings["about a year"] = "שנה לערך";
+App::$strings["%d years"] = "%d שני×";
+App::$strings[" "] = " ";
+App::$strings["timeago.numbers"] = "timeago.numbers";
+App::$strings["New Page"] = "עמוד חדש";
+App::$strings["View"] = "תצוגה";
+App::$strings["Actions"] = "פעולות";
+App::$strings["Page Link"] = "קישור עמוד";
+App::$strings["Title"] = "כותרת";
+App::$strings["Created"] = "נוצר";
+App::$strings["Edited"] = "נערך";
+App::$strings["Can view my normal stream and posts"] = "";
+App::$strings["Can view my default channel profile"] = "";
+App::$strings["Can view my photo albums"] = "";
+App::$strings["Can view my connections"] = "";
+App::$strings["Can view my file storage"] = "";
+App::$strings["Can view my webpages"] = "";
+App::$strings["Can send me their channel stream and posts"] = "";
+App::$strings["Can post on my channel page (\"wall\")"] = "";
+App::$strings["Can comment on or like my posts"] = "";
+App::$strings["Can send me private mail messages"] = "";
+App::$strings["Can post photos to my photo albums"] = "";
+App::$strings["Can like/dislike stuff"] = "";
+App::$strings["Profiles and things other than posts/comments"] = "";
+App::$strings["Can forward to all my channel contacts via post @mentions"] = "";
+App::$strings["Advanced - useful for creating group forum channels"] = "";
+App::$strings["Can chat with me (when available)"] = "";
+App::$strings["Can write to my file storage"] = "";
+App::$strings["Can edit my webpages"] = "";
+App::$strings["Can source my public posts in derived channels"] = "";
+App::$strings["Somewhat advanced - very useful in open communities"] = "";
+App::$strings["Can administer my channel resources"] = "";
+App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "";
+App::$strings["Social Networking"] = "רשת חברתית";
+App::$strings["Mostly Public"] = "";
+App::$strings["Restricted"] = "";
+App::$strings["Private"] = "פרטי";
+App::$strings["Community Forum"] = "";
+App::$strings["Feed Republish"] = "";
+App::$strings["Special Purpose"] = "";
+App::$strings["Celebrity/Soapbox"] = "";
+App::$strings["Group Repository"] = "";
+App::$strings["Other"] = "×חר";
+App::$strings["Custom/Expert Mode"] = "";
+App::$strings["Image exceeds website size limit of %lu bytes"] = "";
+App::$strings["Image file is empty."] = "";
+App::$strings["Unable to process image"] = "";
+App::$strings["Photo storage failed."] = "";
+App::$strings["Upload New Photos"] = "העלה ×ª×¦×œ×•×ž×™× ×—×“×©×™×";
+App::$strings["Tags"] = "תגיות";
+App::$strings["Keywords"] = "מילות מפתח";
+App::$strings["have"] = "";
+App::$strings["has"] = "";
+App::$strings["want"] = "";
+App::$strings["wants"] = "";
+App::$strings["likes"] = "";
+App::$strings["dislikes"] = "";
+App::$strings["Male"] = "זכר";
+App::$strings["Female"] = "נקבה";
+App::$strings["Currently Male"] = "כעת זכר";
+App::$strings["Currently Female"] = "כעת נקבה";
+App::$strings["Mostly Male"] = "בעיקר זכר";
+App::$strings["Mostly Female"] = "בעיקר נקבה";
+App::$strings["Transgender"] = "טרנסג׳נדר";
+App::$strings["Intersex"] = "בין מיני";
+App::$strings["Transsexual"] = "טרנסקסו×ל";
+App::$strings["Hermaphrodite"] = "×נדרוגיני";
+App::$strings["Neuter"] = "ניטר×לי";
+App::$strings["Non-specific"] = "";
+App::$strings["Undecided"] = "";
+App::$strings["Males"] = "זכרי×";
+App::$strings["Females"] = "נקבות";
+App::$strings["Gay"] = "הומו";
+App::$strings["Lesbian"] = "לסבית";
+App::$strings["No Preference"] = "×ין העדפה";
+App::$strings["Bisexual"] = "דו מיני";
+App::$strings["Autosexual"] = "";
+App::$strings["Abstinent"] = "";
+App::$strings["Virgin"] = "בתול/ה";
+App::$strings["Deviant"] = "סוטה";
+App::$strings["Fetish"] = "פטיש";
+App::$strings["Oodles"] = "המון";
+App::$strings["Nonsexual"] = "×œ× ×ž×™× ×™";
+App::$strings["Single"] = "רווק/ה";
+App::$strings["Lonely"] = "בודד";
+App::$strings["Available"] = "זמין";
+App::$strings["Unavailable"] = "×œ× ×¤× ×•×™/×”";
+App::$strings["Has crush"] = "";
+App::$strings["Infatuated"] = "מוקס×/ת";
+App::$strings["Dating"] = "";
+App::$strings["Unfaithful"] = "×œ× × ×מן/×”";
+App::$strings["Sex Addict"] = "מכור/ה למין";
+App::$strings["Friends/Benefits"] = "";
+App::$strings["Casual"] = "×רעי/ת";
+App::$strings["Engaged"] = "מ×ורס/ת";
+App::$strings["Married"] = "נישו×ין";
+App::$strings["Imaginarily married"] = "נישו×ין דמיוניי×";
+App::$strings["Partners"] = "";
+App::$strings["Cohabiting"] = "×—×™×™× ×™×—×“×™×•";
+App::$strings["Common law"] = "";
+App::$strings["Happy"] = "שמח";
+App::$strings["Not looking"] = "×œ× ×ž×—×¤×©/ת";
+App::$strings["Swinger"] = "בליין/ית";
+App::$strings["Betrayed"] = "נבגד/ת";
+App::$strings["Separated"] = "פרוד/ה";
+App::$strings["Unstable"] = "בלתי יציב";
+App::$strings["Divorced"] = "גירושין";
+App::$strings["Imaginarily divorced"] = "גירושין דמיוניי×";
+App::$strings["Widowed"] = "×למן/×”";
+App::$strings["Uncertain"] = "";
+App::$strings["It's complicated"] = "זה מורכב";
+App::$strings["Don't care"] = "×œ× ×ž×©× ×”";
+App::$strings["Ask me"] = "תש×לו ×ותי";
+App::$strings["Unable to lookup recipient."] = "";
+App::$strings["Unable to communicate with requested channel."] = "";
+App::$strings["Cannot verify requested channel."] = "";
+App::$strings["Selected channel has private message restrictions. Send failed."] = "";
+App::$strings["Message deleted."] = "הודעה נמחקה.";
+App::$strings["Message recalled."] = "הודעה הוחזרה.";
+App::$strings["Send Private Message"] = "שלח הודעה פרטית";
+App::$strings["To:"] = "לכבוד:";
+App::$strings["Subject:"] = "נוש×:";
+App::$strings["Your message:"] = "הודעתך:";
+App::$strings["Send"] = "שלח";
+App::$strings["Message not found."] = "הודעה ×œ× × ×ž×¦××”.";
+App::$strings["Delete message"] = "מחק הודעה";
+App::$strings["Recall message"] = "בטל הודעה";
+App::$strings["Message has been recalled."] = "";
+App::$strings["Private Conversation"] = "";
+App::$strings["Delete conversation"] = "מחק דיון";
+App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "";
+App::$strings["Send Reply"] = "שלח משוב";
+App::$strings["Hub not found."] = "";
+App::$strings["Some blurb about what to do when you're new here"] = "";
+App::$strings["Invalid item."] = "פריט שגוי.";
+App::$strings["Channel not found."] = "";
+App::$strings["Page not found."] = "עמוד ×œ× × ×ž×¦×.";
+App::$strings["Lorem Ipsum"] = "";
+App::$strings["network"] = "רשת";
+App::$strings["RSS"] = "RSS";
+App::$strings["Theme settings updated."] = "";
+App::$strings["Site"] = "×תר";
+App::$strings["Accounts"] = "חשבונות";
+App::$strings["Channels"] = "ערוצי×";
+App::$strings["Plugins"] = "תוספות";
+App::$strings["Themes"] = "ערכות נוש×";
+App::$strings["Inspect queue"] = "";
+App::$strings["Profile Config"] = "";
+App::$strings["DB updates"] = "";
+App::$strings["Logs"] = "יומני×";
+App::$strings["Plugin Features"] = "";
+App::$strings["User registrations waiting for confirmation"] = "";
+App::$strings["# Accounts"] = "# חשבונות";
+App::$strings["# blocked accounts"] = "# חשבונות חסומי×";
+App::$strings["# expired accounts"] = "";
+App::$strings["# expiring accounts"] = "";
+App::$strings["# Channels"] = "# ערוצי×";
+App::$strings["# primary"] = "";
+App::$strings["# clones"] = "# שיבוטי×";
+App::$strings["Message queues"] = "";
+App::$strings["Administration"] = "הנהלה";
+App::$strings["Summary"] = "סיכו×";
+App::$strings["Registered accounts"] = "חשבונות רשומי×";
+App::$strings["Pending registrations"] = "";
+App::$strings["Registered channels"] = "×¢×¨×•×¦×™× ×¨×©×•×ž×™×";
+App::$strings["Active plugins"] = "×ª×•×¡×¤×™× ×¤×¢×™×œ×™×";
+App::$strings["Version"] = "גרס×";
+App::$strings["Site settings updated."] = "";
+App::$strings["mobile"] = "";
+App::$strings["experimental"] = "";
+App::$strings["unsupported"] = "";
+App::$strings["Yes - with approval"] = "";
+App::$strings["My site is not a public server"] = "";
+App::$strings["My site has paid access only"] = "";
+App::$strings["My site has free access only"] = "";
+App::$strings["My site offers free accounts with optional paid upgrades"] = "";
+App::$strings["Registration"] = "רישו×";
+App::$strings["File upload"] = "";
+App::$strings["Policies"] = "מדינויות";
+App::$strings["Site name"] = "×©× ×תר";
+App::$strings["Banner/Logo"] = "";
+App::$strings["Administrator Information"] = "מידע מנהל";
+App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "";
+App::$strings["System language"] = "שפת מערכת";
+App::$strings["System theme"] = "מוטיב מערכת";
+App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "";
+App::$strings["Mobile system theme"] = "";
+App::$strings["Theme for mobile devices"] = "";
+App::$strings["Enable Diaspora Protocol"] = "×פשר פרוטוקול Diaspora";
+App::$strings["Communicate with Diaspora and Friendica - experimental"] = "";
+App::$strings["Allow Feeds as Connections"] = "";
+App::$strings["(Heavy system resource usage)"] = "";
+App::$strings["Maximum image size"] = "";
+App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "";
+App::$strings["Does this site allow new member registration?"] = "";
+App::$strings["Which best describes the types of account offered by this hub?"] = "";
+App::$strings["Register text"] = "";
+App::$strings["Will be displayed prominently on the registration page."] = "";
+App::$strings["Site homepage to show visitors (default: login box)"] = "";
+App::$strings["example: 'public' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file."] = "";
+App::$strings["Preserve site homepage URL"] = "";
+App::$strings["Present the site homepage in a frame at the original location instead of redirecting"] = "";
+App::$strings["Accounts abandoned after x days"] = "";
+App::$strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "";
+App::$strings["Allowed friend domains"] = "";
+App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "";
+App::$strings["Allowed email domains"] = "";
+App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "";
+App::$strings["Not allowed email domains"] = "";
+App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "";
+App::$strings["Block public"] = "";
+App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "";
+App::$strings["Verify Email Addresses"] = "";
+App::$strings["Check to verify email addresses used in account registration (recommended)."] = "";
+App::$strings["Force publish"] = "";
+App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "";
+App::$strings["Disable discovery tab"] = "";
+App::$strings["Remove the tab in the network view with public content pulled from sources chosen for this site."] = "";
+App::$strings["login on Homepage"] = "";
+App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "";
+App::$strings["Proxy user"] = "";
+App::$strings["Proxy URL"] = "";
+App::$strings["Network timeout"] = "";
+App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "";
+App::$strings["Delivery interval"] = "";
+App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "";
+App::$strings["Poll interval"] = "";
+App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "";
+App::$strings["Maximum Load Average"] = "";
+App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "";
+App::$strings["Expiration period in days for imported (matrix/network) content"] = "";
+App::$strings["0 for no expiration of imported content"] = "";
+App::$strings["No server found"] = "×œ× × ×ž×¦× ×©×¨×ª";
+App::$strings["ID"] = "מזהה";
+App::$strings["for channel"] = "לערוץ";
+App::$strings["on server"] = "בשרת";
+App::$strings["Status"] = "מצב";
+App::$strings["Server"] = "שרת";
+App::$strings["Update has been marked successful"] = "";
+App::$strings["Executing %s failed. Check system logs."] = "";
+App::$strings["Update %s was successfully applied."] = "";
+App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "";
+App::$strings["Update function %s could not be found."] = "";
+App::$strings["No failed updates."] = "";
+App::$strings["Failed Updates"] = "";
+App::$strings["Mark success (if update was manually applied)"] = "";
+App::$strings["Attempt to execute this update step automatically"] = "";
+App::$strings["Queue Statistics"] = "";
+App::$strings["Total Entries"] = "";
+App::$strings["Priority"] = "עדיפות";
+App::$strings["Destination URL"] = "";
+App::$strings["Mark hub permanently offline"] = "";
+App::$strings["Empty queue for this hub"] = "";
+App::$strings["Last known contact"] = "";
+App::$strings["%s account blocked/unblocked"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["%s account deleted"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["Account not found"] = "חשבון ×œ× × ×ž×¦×";
+App::$strings["Account '%s' deleted"] = "חשבון '%s' נמחק";
+App::$strings["Account '%s' blocked"] = "חשבון '%s' נחס×";
+App::$strings["Account '%s' unblocked"] = "חשבון '%s' נפתח";
+App::$strings["Users"] = "משתמשי×";
+App::$strings["select all"] = "בחר הכל";
+App::$strings["User registrations waiting for confirm"] = "הרשמות משתמש ×שר ממתינות ל×ישור";
+App::$strings["Request date"] = "";
+App::$strings["No registrations."] = "×ין הרשמות.";
+App::$strings["Approve"] = "";
+App::$strings["Deny"] = "ל×סור";
+App::$strings["Block"] = "חסו×";
+App::$strings["Unblock"] = "בטל חסימה";
+App::$strings["Register date"] = "";
+App::$strings["Last login"] = "";
+App::$strings["Expires"] = "";
+App::$strings["Service Class"] = "";
+App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "";
+App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "";
+App::$strings["%s channel censored/uncensored"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["%s channel code allowed/disallowed"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["%s channel deleted"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["Channel not found"] = "ערוץ ×œ× × ×ž×¦×";
+App::$strings["Channel '%s' deleted"] = "";
+App::$strings["Channel '%s' censored"] = "";
+App::$strings["Channel '%s' uncensored"] = "";
+App::$strings["Channel '%s' code allowed"] = "";
+App::$strings["Channel '%s' code disallowed"] = "";
+App::$strings["Censor"] = "";
+App::$strings["Uncensor"] = "";
+App::$strings["Allow Code"] = "";
+App::$strings["Disallow Code"] = "";
+App::$strings["UID"] = "";
+App::$strings["Address"] = "כתובת";
+App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "";
+App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "";
+App::$strings["Plugin %s disabled."] = "";
+App::$strings["Plugin %s enabled."] = "";
+App::$strings["Disable"] = "";
+App::$strings["Enable"] = "";
+App::$strings["Toggle"] = "";
+App::$strings["Author: "] = "מחבר: ";
+App::$strings["Maintainer: "] = "מתחזק: ";
+App::$strings["No themes found."] = "×œ× × ×ž×¦×ו מוטיבי×.";
+App::$strings["Screenshot"] = "×¦×™×œ×•× ×ž×¡×š";
+App::$strings["[Experimental]"] = "[ניסיוני]";
+App::$strings["[Unsupported]"] = "[×œ× × ×ª×ž×š]";
+App::$strings["Log settings updated."] = "";
+App::$strings["Clear"] = "טהר";
+App::$strings["Debugging"] = "דיב××’";
+App::$strings["Log file"] = "קובץ יומן";
+App::$strings["Must be writable by web server. Relative to your Red top-level directory."] = "";
+App::$strings["Log level"] = "";
+App::$strings["New Profile Field"] = "";
+App::$strings["Field nickname"] = "";
+App::$strings["System name of field"] = "";
+App::$strings["Input type"] = "טיפוס קלט";
+App::$strings["Field Name"] = "×©× ×©×“×”";
+App::$strings["Label on profile pages"] = "";
+App::$strings["Help text"] = "טקסט עזרה";
+App::$strings["Additional info (optional)"] = "מידע נוסף (רשות)";
+App::$strings["Field definition not found"] = "";
+App::$strings["Edit Profile Field"] = "";
+App::$strings["This setting requires special processing and editing has been blocked."] = "";
+App::$strings["Configuration Editor"] = "עורך תצורה";
+App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "";
+App::$strings["Authorize application connection"] = "";
+App::$strings["Return to your app and insert this Securty Code:"] = "";
+App::$strings["Please login to continue."] = "×× × ×”×ª×—×‘×¨ כדי להמשיך.";
+App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "";
+App::$strings["Layout updated."] = "";
+App::$strings["Edit System Page Description"] = "";
+App::$strings["Layout not found."] = "";
+App::$strings["Module Name:"] = "";
+App::$strings["Layout Help"] = "";
+App::$strings["App installed."] = "×פליקציה מותקנת.";
+App::$strings["Malformed app."] = "×פליקציה פגומה.";
+App::$strings["Embed code"] = "";
+App::$strings["Edit App"] = "ערוך ×פליקציה";
+App::$strings["Create App"] = "צור ×פליקציה";
+App::$strings["Name of app"] = "×©× ×©×œ ×פליקציה";
+App::$strings["Location (URL) of app"] = "";
+App::$strings["Description"] = "תי×ור";
+App::$strings["Photo icon URL"] = "";
+App::$strings["80 x 80 pixels - optional"] = "";
+App::$strings["Version ID"] = "";
+App::$strings["Price of app"] = "";
+App::$strings["Location (URL) to purchase app"] = "";
+App::$strings["Page owner information could not be retrieved."] = "";
+App::$strings["Album not found."] = "××œ×‘×•× ×œ× × ×ž×¦×.";
+App::$strings["Delete Album"] = "מחק ×לבו×";
+App::$strings["Delete Photo"] = "מחק תצלו×";
+App::$strings["Public access denied."] = "";
+App::$strings["No photos selected"] = "×œ× × ×‘×—×¨×• תצלומי×";
+App::$strings["Access to this item is restricted."] = "";
+App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "";
+App::$strings["%1$.2f MB photo storage used."] = "";
+App::$strings["Upload Photos"] = "העלה תצלומי×";
+App::$strings["Enter a new album name"] = "הזן ×©× ××œ×‘×•× ×—×“×©";
+App::$strings["or select an existing one (doubleclick)"] = "×ו בחר ב×חד ×§×™×™× (לחיצה כפולה)";
+App::$strings["Create a status post for this upload"] = "";
+App::$strings["Album name could not be decoded"] = "";
+App::$strings["Contact Photos"] = "תצלומי ×יש קשר";
+App::$strings["Show Newest First"] = "";
+App::$strings["Show Oldest First"] = "";
+App::$strings["View Photo"] = "צפה בתצלו×";
+App::$strings["Edit Album"] = "ערוך ×לבו×";
+App::$strings["Permission denied. Access to this item may be restricted."] = "";
+App::$strings["Photo not available"] = "×ª×¦×œ×•× ×œ× ×–×ž×™×Ÿ";
+App::$strings["Use as profile photo"] = "";
+App::$strings["Private Photo"] = "×ª×¦×œ×•× ×¤×¨×˜×™";
+App::$strings["Previous"] = "קוד×";
+App::$strings["View Full Size"] = "";
+App::$strings["Next"] = "הב×";
+App::$strings["Remove"] = "הסר";
+App::$strings["Edit photo"] = "ערוך תצלו×";
+App::$strings["Rotate CW (right)"] = "";
+App::$strings["Rotate CCW (left)"] = "";
+App::$strings["Caption"] = "דברי הסבר";
+App::$strings["Add a Tag"] = "הוסף תגית";
+App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "";
+App::$strings["Flag as adult in album view"] = "";
+App::$strings["In This Photo:"] = "";
+App::$strings["Map"] = "מפה";
+App::$strings["View Album"] = "";
+App::$strings["Recent Photos"] = "";
+App::$strings["Item not available."] = "פריט ×œ× × ×ž×¦×.";
+App::$strings["sent you a private message"] = "";
+App::$strings["added your channel"] = "";
+App::$strings["posted an event"] = "";
+App::$strings["Block Name"] = "";
+App::$strings["Block Title"] = "";
+App::$strings["Poke/Prod"] = "דחוף/עורר";
+App::$strings["poke, prod or do other things to somebody"] = "דחוף, עורר ×ו עשה ×“×‘×¨×™× ××—×¨×™× ×œ×ž×™×©×”×•";
+App::$strings["Recipient"] = "";
+App::$strings["Choose what you wish to do to recipient"] = "";
+App::$strings["Make this post private"] = "";
+App::$strings["Bookmark added"] = "סימנייה התווספה";
+App::$strings["My Bookmarks"] = "הסימניות שלי";
+App::$strings["My Connections Bookmarks"] = "סימניות ×”×—×™×‘×•×¨×™× ×©×œ×™";
+App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "";
+App::$strings["Create a new channel"] = "צור ערוץ חדש";
+App::$strings["Current Channel"] = "ערוץ נוכחי";
+App::$strings["Switch to one of your channels by selecting it."] = "";
+App::$strings["Default Channel"] = "ערוץ שגרתי";
+App::$strings["Make Default"] = "הפוך לשגרתי";
+App::$strings["%d new messages"] = "%d הודעות חדשות";
+App::$strings["%d new introductions"] = "";
+App::$strings["Delegated Channels"] = "";
+App::$strings["Profile Match"] = "";
+App::$strings["No keywords to match. Please add keywords to your default profile."] = "";
+App::$strings["is interested in:"] = "";
+App::$strings["No matches"] = "";
+App::$strings["Members"] = "חברי×";
+App::$strings["All Connected Channels"] = "";
+App::$strings["Click on a channel to add or remove."] = "";
+App::$strings["Poll"] = "הצבעה";
+App::$strings["View Results"] = "צפה בתוצ×ות";
+App::$strings["You must be logged in to see this page."] = "";
+App::$strings["Insufficient permissions. Request redirected to profile page."] = "";
+App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "";
+App::$strings["Welcome %s. Remote authentication successful."] = "";
+App::$strings["Room not found"] = "";
+App::$strings["Leave Room"] = "עזוב חדר";
+App::$strings["Delete This Room"] = "מחק ×ת חדר ×–×”";
+App::$strings["I am away right now"] = "×× ×™ נעדר/ת ברגע ×–×”";
+App::$strings["I am online"] = "×× ×™ במצב מקוון";
+App::$strings["Bookmark this room"] = "סמן ×ת חדר ×–×”";
+App::$strings["New Chatroom"] = "חדר שיחה חדש";
+App::$strings["Chatroom Name"] = "×©× ×—×“×¨ שיחה";
+App::$strings["%1\$s's Chatrooms"] = "חדרי שיחה של %1\$s";
+App::$strings["Away"] = "נעדר";
+App::$strings["Online"] = "מקוון";
+App::$strings["Fetching URL returns error: %1\$s"] = "";
+App::$strings["\$Projectname - Guests: Username: {your email address}, Password: +++"] = "";
+App::$strings["No channel."] = "×ין ערוץ.";
+App::$strings["Common connections"] = "×—×™×‘×•×¨×™× ×ž×¦×•×™×™×";
+App::$strings["No connections in common."] = "";
+App::$strings["Image uploaded but image cropping failed."] = "";
+App::$strings["Image resize failed."] = "";
+App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "";
+App::$strings["Image exceeds size limit of %d"] = "";
+App::$strings["Unable to process image."] = "";
+App::$strings["Photo not available."] = "×ª×¦×œ×•× ×œ× ×–×ž×™×Ÿ.";
+App::$strings["Upload File:"] = "העלה קובץ:";
+App::$strings["Select a profile:"] = "בחר פרופיל:";
+App::$strings["Upload Profile Photo"] = "";
+App::$strings["or"] = "×ו";
+App::$strings["skip this step"] = "דלג על צעד זה";
+App::$strings["select a photo from your photo albums"] = "";
+App::$strings["Crop Image"] = "";
+App::$strings["Please adjust the image cropping for optimum viewing."] = "";
+App::$strings["Done Editing"] = "";
+App::$strings["Image uploaded successfully."] = "";
+App::$strings["Image upload failed."] = "";
+App::$strings["Image size reduction [%s] failed."] = "";
+App::$strings["Continue"] = "המשך";
+App::$strings["Premium Channel Setup"] = "";
+App::$strings["Enable premium channel connection restrictions"] = "";
+App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "";
+App::$strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "";
+App::$strings["Potential connections will then see the following text before proceeding:"] = "";
+App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "";
+App::$strings["(No specific instructions have been provided by the channel owner.)"] = "";
+App::$strings["Restricted or Premium Channel"] = "";
+App::$strings["Invalid request identifier."] = "";
+App::$strings["Discard"] = "";
+App::$strings["Ignore"] = "התעלמות";
+App::$strings["No more system notifications."] = "";
+App::$strings["System Notifications"] = "";
+App::$strings["Blocked"] = "";
+App::$strings["Ignored"] = "";
+App::$strings["Hidden"] = "מוסתר";
+App::$strings["Archived"] = "";
+App::$strings["Suggest new connections"] = "";
+App::$strings["New Connections"] = "×—×™×‘×•×¨×™× ×—×“×©×™×";
+App::$strings["Show pending (new) connections"] = "";
+App::$strings["All Connections"] = "כל החיבורי×";
+App::$strings["Show all connections"] = "";
+App::$strings["Unblocked"] = "";
+App::$strings["Only show unblocked connections"] = "";
+App::$strings["Only show blocked connections"] = "";
+App::$strings["Only show ignored connections"] = "";
+App::$strings["Only show archived connections"] = "";
+App::$strings["Only show hidden connections"] = "";
+App::$strings["%1\$s [%2\$s]"] = "";
+App::$strings["Edit connection"] = "";
+App::$strings["Search your connections"] = "";
+App::$strings["Finding: "] = "";
+App::$strings["Profile not found."] = "פרופיל ×œ× × ×ž×¦×.";
+App::$strings["Profile deleted."] = "פרופיל נמחק.";
+App::$strings["Profile-"] = "פרופיל-";
+App::$strings["New profile created."] = "פרופיל חדש נוצר.";
+App::$strings["Profile unavailable to clone."] = "";
+App::$strings["Profile unavailable to export."] = "";
+App::$strings["Profile Name is required."] = "";
+App::$strings["Marital Status"] = "";
+App::$strings["Romantic Partner"] = "";
+App::$strings["Likes"] = "";
+App::$strings["Dislikes"] = "";
+App::$strings["Work/Employment"] = "";
+App::$strings["Religion"] = "דת";
+App::$strings["Political Views"] = "השקפות פוליטיות";
+App::$strings["Gender"] = "מין";
+App::$strings["Sexual Preference"] = "העדפה מינית";
+App::$strings["Homepage"] = "עמוד בית";
+App::$strings["Interests"] = "";
+App::$strings["Location"] = "מיקו×";
+App::$strings["Profile updated."] = "";
+App::$strings["Hide your contact/friend list from viewers of this profile?"] = "";
+App::$strings["Edit Profile Details"] = "";
+App::$strings["View this profile"] = "";
+App::$strings["Change Profile Photo"] = "";
+App::$strings["Create a new profile using these settings"] = "";
+App::$strings["Clone this profile"] = "שבט ×ת פרופיל ×–×”";
+App::$strings["Delete this profile"] = "מחק ×ת פרופיל ×–×”";
+App::$strings["Import profile from file"] = "";
+App::$strings["Export profile to file"] = "";
+App::$strings["Profile Name:"] = "×©× ×¤×¨×•×¤×™×œ:";
+App::$strings["Your Full Name:"] = "שמך המל×:";
+App::$strings["Title/Description:"] = "כותרת/תי×ור:";
+App::$strings["Your Gender:"] = "המין שלך:";
+App::$strings["Birthday :"] = "×™×•× ×”×•×œ×“×ª:";
+App::$strings["Street Address:"] = "כתובת רחוב:";
+App::$strings["Locality/City:"] = "";
+App::$strings["Postal/Zip Code:"] = "";
+App::$strings["Country:"] = "×רץ:";
+App::$strings["Region/State:"] = "";
+App::$strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "";
+App::$strings["Who: (if applicable)"] = "";
+App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "";
+App::$strings["Since [date]:"] = "";
+App::$strings["Homepage URL:"] = "";
+App::$strings["Religious Views:"] = "";
+App::$strings["Keywords:"] = "מילות מפתח:";
+App::$strings["Example: fishing photography software"] = "";
+App::$strings["Used in directory listings"] = "";
+App::$strings["Tell us about yourself..."] = "";
+App::$strings["Hobbies/Interests"] = "";
+App::$strings["Contact information and Social Networks"] = "";
+App::$strings["My other channels"] = "";
+App::$strings["Musical interests"] = "";
+App::$strings["Books, literature"] = "";
+App::$strings["Television"] = "טלוויזיה";
+App::$strings["Film/dance/culture/entertainment"] = "";
+App::$strings["Love/romance"] = "";
+App::$strings["Work/employment"] = "";
+App::$strings["School/education"] = "";
+App::$strings["This is your default profile."] = "";
+App::$strings["Age: "] = "גיל: ";
+App::$strings["Edit/Manage Profiles"] = "";
+App::$strings["Add profile things"] = "";
+App::$strings["Include desirable objects in your profile"] = "";
+App::$strings["Could not access contact record."] = "";
+App::$strings["Could not locate selected profile."] = "";
+App::$strings["Connection updated."] = "";
+App::$strings["Failed to update connection record."] = "";
+App::$strings["is now connected to"] = "";
+App::$strings["Could not access address book record."] = "";
+App::$strings["Refresh failed - channel is currently unavailable."] = "";
+App::$strings["Unable to set address book parameters."] = "";
+App::$strings["Connection has been removed."] = "";
+App::$strings["View %s's profile"] = "";
+App::$strings["Refresh Permissions"] = "";
+App::$strings["Fetch updated permissions"] = "";
+App::$strings["Recent Activity"] = "";
+App::$strings["View recent posts and comments"] = "";
+App::$strings["Block (or Unblock) all communications with this connection"] = "";
+App::$strings["This connection is blocked!"] = "";
+App::$strings["Unignore"] = "";
+App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "";
+App::$strings["This connection is ignored!"] = "";
+App::$strings["Unarchive"] = "";
+App::$strings["Archive"] = "";
+App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "";
+App::$strings["This connection is archived!"] = "";
+App::$strings["Unhide"] = "";
+App::$strings["Hide"] = "הסתר";
+App::$strings["Hide or Unhide this connection from your other connections"] = "";
+App::$strings["This connection is hidden!"] = "חיבור זה הינו מוסתר!";
+App::$strings["Delete this connection"] = "מחק ×ת חיבור ×–×”";
+App::$strings["Approve this connection"] = "×שר ×ת חיבור ×–×”";
+App::$strings["Accept connection to allow communication"] = "×שר חיבור כדי להתיר תקשורת";
+App::$strings["Set Affinity"] = "";
+App::$strings["Set Profile"] = "";
+App::$strings["Set Affinity & Profile"] = "";
+App::$strings["Apply these permissions automatically"] = "";
+App::$strings["This connection's address is"] = "";
+App::$strings["The permissions indicated on this page will be applied to all new connections."] = "";
+App::$strings["Slide to adjust your degree of friendship"] = "";
+App::$strings["Slide to adjust your rating"] = "";
+App::$strings["Optionally explain your rating"] = "";
+App::$strings["Custom Filter"] = "";
+App::$strings["Only import posts with this text"] = "";
+App::$strings["words one per line or #tags or /patterns/, leave blank to import all posts"] = "";
+App::$strings["Do not import posts with this text"] = "";
+App::$strings["This information is public!"] = "";
+App::$strings["Connection Pending Approval"] = "";
+App::$strings["Connection Request"] = "";
+App::$strings["(%s) would like to connect with you. Please approve this connection to allow communication."] = "";
+App::$strings["Approve Later"] = "";
+App::$strings["inherited"] = "";
+App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "";
+App::$strings["Their Settings"] = "ההגדרות שלה×";
+App::$strings["My Settings"] = "ההגדרות שלי";
+App::$strings["Individual Permissions"] = "";
+App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "";
+App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "";
+App::$strings["Last update:"] = "";
+App::$strings["Invalid profile identifier."] = "";
+App::$strings["Profile Visibility Editor"] = "";
+App::$strings["Click on a contact to add or remove."] = "";
+App::$strings["Visible To"] = "";
+App::$strings["\$Projectname channel"] = "ערוץ \$Projectname";
+App::$strings["%d rating"] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["Gender: "] = "מין: ";
+App::$strings["Status: "] = "מצב: ";
+App::$strings["Homepage: "] = "עמוד בית: ";
+App::$strings["Description:"] = "תי×ור:";
+App::$strings["Public Forum:"] = "×¤×•×¨×•× ×¤×•×ž×‘×™:";
+App::$strings["Keywords: "] = "מילות מפתח: ";
+App::$strings["Don't suggest"] = "×ל תציע";
+App::$strings["Common connections:"] = "×—×™×‘×•×¨×™× ×©×›×™×—×™×:";
+App::$strings["Global Directory"] = "ספרייה גלובלית";
+App::$strings["Local Directory"] = "ספרייה מקומית";
+App::$strings["Finding:"] = "";
+App::$strings["next page"] = "עמוד הב×";
+App::$strings["previous page"] = "עמוד קוד×";
+App::$strings["Sort options"] = "×פשרויות מיון";
+App::$strings["Alphabetic"] = "×לפבתי";
+App::$strings["Reverse Alphabetic"] = "";
+App::$strings["Newest to Oldest"] = "";
+App::$strings["Oldest to Newest"] = "";
+App::$strings["No entries (some entries may be hidden)."] = "";
+App::$strings["Public Sites"] = "";
+App::$strings["The listed sites allow public registration for the \$Projectname network. All sites in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "";
+App::$strings["Rate this hub"] = "";
+App::$strings["Site URL"] = "URL ×תר";
+App::$strings["Access Type"] = "טיפוס גישה";
+App::$strings["Registration Policy"] = "מדיניות רישו×";
+App::$strings["Project"] = "פרויקט";
+App::$strings["View hub ratings"] = "";
+App::$strings["Rate"] = "";
+App::$strings["View ratings"] = "";
+App::$strings["This site is not a directory server"] = "";
+App::$strings["This directory server requires an access token"] = "";
+App::$strings["Item not found"] = "פריט ×œ× × ×ž×¦×";
+App::$strings["Delete block?"] = "";
+App::$strings["Insert YouTube video"] = "הכנס ויד×ו YouTube";
+App::$strings["Insert Vorbis [.ogg] video"] = "הכנס ויד×ו Vorbis [.ogg]&lrm;";
+App::$strings["Insert Vorbis [.ogg] audio"] = "הכנס ×ודיו Vorbis [.ogg]&lrm;";
+App::$strings["Edit Block"] = "";
+App::$strings["Delete layout?"] = "";
+App::$strings["Layout Description (Optional)"] = "";
+App::$strings["Layout Name"] = "";
+App::$strings["Edit Layout"] = "";
+App::$strings["Item is not editable"] = "פריט ×ינו עריך.";
+App::$strings["Delete item?"] = "למחוק פריט?";
+App::$strings["Edit post"] = "ערוך פוסט";
+App::$strings["Unable to find your hub."] = "";
+App::$strings["Post successful."] = "";
+App::$strings["Delete webpage?"] = "למחוק עמוד רשת?";
+App::$strings["Page link title"] = "";
+App::$strings["Edit Webpage"] = "ערוך עמוד רשת";
+App::$strings["Website:"] = "×תר רשת:";
+App::$strings["Remote Channel [%s] (not yet known on this site)"] = "";
+App::$strings["Rating (this information is public)"] = "";
+App::$strings["Optionally explain your rating (this information is public)"] = "";
+App::$strings["Calendar entries imported."] = "";
+App::$strings["No calendar entries found."] = "";
+App::$strings["Event can not end before it has started."] = "";
+App::$strings["Unable to generate preview."] = "";
+App::$strings["Event title and start time are required."] = "";
+App::$strings["Event not found."] = "×ירוע ×œ× × ×ž×¦×.";
+App::$strings["l, F j"] = "l, F j";
+App::$strings["Edit event"] = "ערוך ×ירוע";
+App::$strings["Delete event"] = "מחק ×ירוע";
+App::$strings["calendar"] = "לוח שנה";
+App::$strings["Create New Event"] = "צור ×ירוע חדש";
+App::$strings["Export"] = "יצ×";
+App::$strings["Import"] = "יב×";
+App::$strings["Event removed"] = "×ירוע הוסר";
+App::$strings["Failed to remove event"] = "נכשל להסיר ×ירוע";
+App::$strings["Event details"] = "פרטי ×ירוע";
+App::$strings["Starting date and Title are required."] = "";
+App::$strings["Categories (comma-separated list)"] = "";
+App::$strings["Event Starts:"] = "×ירוע מתחיל:";
+App::$strings["Finish date/time is not known or not relevant"] = "";
+App::$strings["Event Finishes:"] = "×ירוע מסתיי×:";
+App::$strings["Adjust for viewer timezone"] = "";
+App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "";
+App::$strings["Title:"] = "כותרת:";
+App::$strings["Share this event"] = "שתף ×ת ×ירוע ×–×”";
+App::$strings["No ratings"] = "";
+App::$strings["Ratings"] = "";
+App::$strings["Rating: "] = "";
+App::$strings["Website: "] = "×תר רשת:";
+App::$strings["Description: "] = "תי×ור: ";
+App::$strings["Select a bookmark folder"] = "";
+App::$strings["Save Bookmark"] = "";
+App::$strings["URL of bookmark"] = "";
+App::$strings["Or enter new bookmark folder name"] = "";
+App::$strings["- select -"] = "- בחר -";
+App::$strings["Permission Denied."] = "";
+App::$strings["File not found."] = "קובץ ×œ× × ×ž×¦×.";
+App::$strings["Edit file permissions"] = "";
+App::$strings["Set/edit permissions"] = "";
+App::$strings["Include all files and sub folders"] = "";
+App::$strings["Return to file list"] = "";
+App::$strings["Copy/paste this code to attach file to a post"] = "";
+App::$strings["Copy/paste this URL to link file from a web page"] = "";
+App::$strings["Share this file"] = "שתף ×ת קובץ ×–×”";
+App::$strings["Show URL to this file"] = "הצג URL לקובץ זה";
+App::$strings["Notify your contacts about this file"] = "";
+App::$strings["Channel added."] = "";
+App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "";
+App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "";
+App::$strings["Passwords do not match."] = "";
+App::$strings["Registration successful. Please check your email for validation instructions."] = "";
+App::$strings["Your registration is pending approval by the site owner."] = "";
+App::$strings["Your registration can not be processed."] = "";
+App::$strings["Registration on this site/hub is by approval only."] = "";
+App::$strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "";
+App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "";
+App::$strings["Terms of Service"] = "תנ××™ שימוש";
+App::$strings["I accept the %s for this website"] = "×× ×™ מקבל ×ת ×”%s ל×תר רשת ×–×”";
+App::$strings["I am over 13 years of age and accept the %s for this website"] = "גילי מעל 13 שנה ו×× ×™ מקבל ×ת ×”%s ל×תר רשת ×–×”";
+App::$strings["Membership on this site is by invitation only."] = "";
+App::$strings["Please enter your invitation code"] = "";
+App::$strings["Your email address"] = "כתובת דו×״ל שלך";
+App::$strings["Choose a password"] = "בחר סיסמה";
+App::$strings["Please re-enter your password"] = "בבקשה הזן שוב ×ת סיסמתך";
+App::$strings["Contact not found."] = "×יש קשר ×œ× × ×ž×¦×.";
+App::$strings["Friend suggestion sent."] = "";
+App::$strings["Suggest Friends"] = "";
+App::$strings["Suggest a friend for %s"] = "";
+App::$strings["Please login."] = "×× × ×”×ª×—×‘×¨.";
+App::$strings["Collection created."] = "";
+App::$strings["Could not create collection."] = "";
+App::$strings["Collection updated."] = "";
+App::$strings["Create a collection of channels."] = "";
+App::$strings["Collection Name: "] = "×©× ×וסף: ";
+App::$strings["Members are visible to other channels"] = "";
+App::$strings["Collection removed."] = "×וסף הוסר.";
+App::$strings["Unable to remove collection."] = "×œ× ×ž×¡×•×’×œ להסיר ×וסף.";
+App::$strings["Collection Editor"] = "";
+App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "";
+App::$strings["Remove This Account"] = "הסר ×ת חשבון ×–×”";
+App::$strings["WARNING: "] = "×זהרה: ";
+App::$strings["This account and all its channels will be completely removed from the network. "] = "";
+App::$strings["This action is permanent and can not be undone!"] = "";
+App::$strings["Please enter your password for verification:"] = "";
+App::$strings["Remove this account, all its channels and all its channel clones from the network"] = "";
+App::$strings["By default only the instances of the channels located on this hub will be removed from the network"] = "";
+App::$strings["Remove Account"] = "הסר חשבון";
+App::$strings["Help:"] = "עזרה:";
+App::$strings["Not Found"] = "×œ× × ×ž×¦×";
+App::$strings["\$Projectname Documentation"] = "תיעוד \$Projectname";
+App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "";
+App::$strings["Remove This Channel"] = "";
+App::$strings["This channel will be completely removed from the network. "] = "";
+App::$strings["Remove this channel and all its clones from the network"] = "";
+App::$strings["By default only the instance of the channel located on this hub will be removed from the network"] = "";
+App::$strings["Remove Channel"] = "הסר ערוץ";
+App::$strings["\$Projectname"] = "\$Projectname";
+App::$strings["Welcome to %s"] = "×‘×¨×•×›×™× ×”×‘××™× ×ל %s";
+App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "";
+App::$strings["The error message was:"] = "";
+App::$strings["Authentication failed."] = "";
+App::$strings["Remote Authentication"] = "";
+App::$strings["Enter your channel address (e.g. channel@example.com)"] = "";
+App::$strings["Authenticate"] = "";
+App::$strings["First Name"] = "×©× ×¤×¨×˜×™";
+App::$strings["Last Name"] = "×©× ×ž×©×¤×—×”";
+App::$strings["Nickname"] = "×©× ×›×™× ×•×™";
+App::$strings["Full Name"] = "×©× ×ž×œ×";
+App::$strings["Profile Photo 16px"] = "";
+App::$strings["Profile Photo 32px"] = "";
+App::$strings["Profile Photo 48px"] = "";
+App::$strings["Profile Photo 64px"] = "";
+App::$strings["Profile Photo 80px"] = "";
+App::$strings["Profile Photo 128px"] = "";
+App::$strings["Timezone"] = "";
+App::$strings["Homepage URL"] = "";
+App::$strings["Birth Year"] = "שנת הולדת";
+App::$strings["Birth Month"] = "חודש הולדת";
+App::$strings["Birth Day"] = "×™×•× ×”×•×œ×“×ª";
+App::$strings["Birthdate"] = "×™×•× ×”×•×œ×“×ª";
+App::$strings["%s element installed"] = "";
+App::$strings["%s element installation failed"] = "";
+App::$strings["Items tagged with: %s"] = "";
+App::$strings["Search results for: %s"] = "";
+App::$strings["Your service plan only allows %d channels."] = "";
+App::$strings["Nothing to import."] = "×ין דבר ליב×.";
+App::$strings["Unable to download data from old server"] = "";
+App::$strings["Imported file is empty."] = "";
+App::$strings["The data provided is not compatible with this project."] = "";
+App::$strings["Warning: Database versions differ by %1\$d updates."] = "";
+App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "";
+App::$strings["Channel clone failed. Import failed."] = "";
+App::$strings["Cloned channel not found. Import failed."] = "";
+App::$strings["You must be logged in to use this feature."] = "";
+App::$strings["Import Channel"] = "";
+App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "";
+App::$strings["File to Upload"] = "";
+App::$strings["Or provide the old server/hub details"] = "";
+App::$strings["Your old identity address (xyz@example.com)"] = "";
+App::$strings["Your old login email address"] = "";
+App::$strings["Your old login password"] = "";
+App::$strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "";
+App::$strings["Make this hub my primary location"] = "";
+App::$strings["Import existing posts if possible (experimental - limited by available memory"] = "";
+App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "";
+App::$strings["No service class restrictions found."] = "";
+App::$strings["Total invitation limit exceeded."] = "";
+App::$strings["%s : Not a valid email address."] = "";
+App::$strings["Please join us on Red"] = "";
+App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "";
+App::$strings["%s : Message delivery failed."] = "";
+App::$strings["%d message sent."] = array(
+ 0 => "",
+ 1 => "",
+);
+App::$strings["You have no more invitations available"] = "";
+App::$strings["Send invitations"] = "שלח הזמנות";
+App::$strings["Enter email addresses, one per line:"] = "הזן כתובות דו×״ל, ×חת בכל שורה:";
+App::$strings["Please join my community on \$Projectname."] = "";
+App::$strings["You will need to supply this invitation code: "] = "";
+App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "";
+App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "";
+App::$strings["or visit "] = "×ו בקר ";
+App::$strings["3. Click [Connect]"] = "3. לחץ [התחבר]";
+App::$strings["Name is required"] = "נדרש ש×";
+App::$strings["Key and Secret are required"] = "";
+App::$strings["Diaspora Policy Settings updated."] = "הגדרות פוליסת Diaspora עודכנו.";
+App::$strings["Passwords do not match. Password unchanged."] = "";
+App::$strings["Empty passwords are not allowed. Password unchanged."] = "";
+App::$strings["Password changed."] = "סיסמה שונתה.";
+App::$strings["Password update failed. Please try again."] = "עדכון סיסמה נכשל. ×× × × ×¡×” שוב.";
+App::$strings["Not valid email."] = "×œ× ×“×•×״ל תקף.";
+App::$strings["Protected email address. Cannot change to that email."] = "כתובת דו×״ל מוגנת. ×œ× ×ž×¡×•×’×œ לשנות לדו×״ל ×–×”.";
+App::$strings["System failure storing new email. Please try again."] = "";
+App::$strings["Settings updated."] = "הגדרות עודכנו.";
+App::$strings["Add application"] = "הוסף ×פליקציה";
+App::$strings["Name of application"] = "×©× ×©×œ ×פליקציה";
+App::$strings["Consumer Key"] = "מפתח צרכן";
+App::$strings["Automatically generated - change if desired. Max length 20"] = "";
+App::$strings["Consumer Secret"] = "סוד צרכן";
+App::$strings["Redirect"] = "";
+App::$strings["Redirect URI - leave blank unless your application specifically requires this"] = "";
+App::$strings["Icon url"] = "";
+App::$strings["Optional"] = "";
+App::$strings["You can't edit this application."] = "";
+App::$strings["Connected Apps"] = "×פליקציות מחוברות";
+App::$strings["Client key starts with"] = "";
+App::$strings["No name"] = "×ין ש×";
+App::$strings["Remove authorization"] = "";
+App::$strings["No feature settings configured"] = "";
+App::$strings["Feature/Addon Settings"] = "";
+App::$strings["Settings for the built-in Diaspora emulator"] = "";
+App::$strings["Allow any Diaspora member to comment on your public posts"] = "";
+App::$strings["Enable the Diaspora protocol for this channel"] = "";
+App::$strings["Diaspora Policy Settings"] = "";
+App::$strings["Prevent your hashtags from being redirected to other sites"] = "";
+App::$strings["Account Settings"] = "הגדרות חשבון";
+App::$strings["Enter New Password:"] = "הזן סיסמה חדשה:";
+App::$strings["Confirm New Password:"] = "×מת סיסמה חדשה:";
+App::$strings["Leave password fields blank unless changing"] = "";
+App::$strings["Email Address:"] = "כתובת דו×״ל:";
+App::$strings["Remove this account including all its channels"] = "";
+App::$strings["Off"] = "";
+App::$strings["On"] = "";
+App::$strings["Additional Features"] = "";
+App::$strings["Connector Settings"] = "";
+App::$strings["No special theme for mobile devices"] = "";
+App::$strings["%s - (Experimental)"] = "";
+App::$strings["Display Settings"] = "";
+App::$strings["Theme Settings"] = "";
+App::$strings["Custom Theme Settings"] = "";
+App::$strings["Content Settings"] = "";
+App::$strings["Display Theme:"] = "";
+App::$strings["Mobile Theme:"] = "";
+App::$strings["Enable user zoom on mobile devices"] = "";
+App::$strings["Update browser every xx seconds"] = "";
+App::$strings["Minimum of 10 seconds, no maximum"] = "";
+App::$strings["Maximum number of conversations to load at any time:"] = "";
+App::$strings["Maximum of 100 items"] = "";
+App::$strings["Show emoticons (smilies) as images"] = "";
+App::$strings["Link post titles to source"] = "";
+App::$strings["System Page Layout Editor - (advanced)"] = "";
+App::$strings["Use blog/list mode on channel page"] = "";
+App::$strings["(comments displayed separately)"] = "";
+App::$strings["Use blog/list mode on matrix page"] = "";
+App::$strings["Channel page max height of content (in pixels)"] = "";
+App::$strings["click to expand content exceeding this height"] = "";
+App::$strings["Matrix page max height of content (in pixels)"] = "";
+App::$strings["Nobody except yourself"] = "";
+App::$strings["Only those you specifically allow"] = "";
+App::$strings["Approved connections"] = "";
+App::$strings["Any connections"] = "";
+App::$strings["Anybody on this website"] = "";
+App::$strings["Anybody in this network"] = "";
+App::$strings["Anybody authenticated"] = "";
+App::$strings["Anybody on the internet"] = "";
+App::$strings["Publish your default profile in the network directory"] = "";
+App::$strings["Allow us to suggest you as a potential friend to new members?"] = "";
+App::$strings["Your channel address is"] = "";
+App::$strings["Channel Settings"] = "הגדרות ערוץ";
+App::$strings["Basic Settings"] = "הגדרות בסיסיות";
+App::$strings["Your Timezone:"] = "";
+App::$strings["Default Post Location:"] = "";
+App::$strings["Geographical location to display on your posts"] = "";
+App::$strings["Use Browser Location:"] = "";
+App::$strings["Adult Content"] = "תוכן מבוגרי×";
+App::$strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "";
+App::$strings["Security and Privacy Settings"] = "";
+App::$strings["Your permissions are already configured. Click to view/adjust"] = "";
+App::$strings["Hide my online presence"] = "";
+App::$strings["Prevents displaying in your profile that you are online"] = "";
+App::$strings["Simple Privacy Settings:"] = "";
+App::$strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "";
+App::$strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "";
+App::$strings["Private - <em>default private, never open or public</em>"] = "";
+App::$strings["Blocked - <em>default blocked to/from everybody</em>"] = "";
+App::$strings["Allow others to tag your posts"] = "";
+App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "";
+App::$strings["Advanced Privacy Settings"] = "הגדרות פרטיות מתקדמות";
+App::$strings["Expire other channel content after this many days"] = "";
+App::$strings["0 or blank prevents expiration"] = "";
+App::$strings["Maximum Friend Requests/Day:"] = "";
+App::$strings["May reduce spam activity"] = "";
+App::$strings["Default Post Permissions"] = "";
+App::$strings["(click to open/close)"] = "(לחץ כדי לפתוח/לסגור)";
+App::$strings["Channel permissions category:"] = "";
+App::$strings["Maximum private messages per day from unknown people:"] = "";
+App::$strings["Useful to reduce spamming"] = "";
+App::$strings["Notification Settings"] = "הגדרות התר××”";
+App::$strings["By default post a status message when:"] = "";
+App::$strings["accepting a friend request"] = "";
+App::$strings["joining a forum/community"] = "";
+App::$strings["making an <em>interesting</em> profile change"] = "";
+App::$strings["Send a notification email when:"] = "";
+App::$strings["You receive a connection request"] = "";
+App::$strings["Your connections are confirmed"] = "";
+App::$strings["Someone writes on your profile wall"] = "";
+App::$strings["Someone writes a followup comment"] = "";
+App::$strings["You receive a private message"] = "";
+App::$strings["You receive a friend suggestion"] = "";
+App::$strings["You are tagged in a post"] = "";
+App::$strings["You are poked/prodded/etc. in a post"] = "";
+App::$strings["Show visual notifications including:"] = "";
+App::$strings["Unseen matrix activity"] = "פעילות מטריצה ×œ× × ×¨×ית";
+App::$strings["Unseen channel activity"] = "פעילות ערוץ ×œ× × ×¨×ית";
+App::$strings["Unseen private messages"] = "הודעות ערוץ ×œ× × ×¨×ות";
+App::$strings["Recommended"] = "";
+App::$strings["Upcoming events"] = "";
+App::$strings["Events today"] = "";
+App::$strings["Upcoming birthdays"] = "";
+App::$strings["Not available in all themes"] = "";
+App::$strings["System (personal) notifications"] = "";
+App::$strings["System info messages"] = "";
+App::$strings["System critical alerts"] = "";
+App::$strings["New connections"] = "×—×™×‘×•×¨×™× ×—×“×©×™×";
+App::$strings["System Registrations"] = "הרשמות מערכת";
+App::$strings["Also show new wall posts, private messages and connections under Notices"] = "";
+App::$strings["Notify me of events this many days in advance"] = "";
+App::$strings["Must be greater than 0"] = "";
+App::$strings["Advanced Account/Page Type Settings"] = "";
+App::$strings["Change the behaviour of this account for special situations"] = "";
+App::$strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "";
+App::$strings["Miscellaneous Settings"] = "";
+App::$strings["Personal menu to display in your channel pages"] = "";
+App::$strings["Remove this channel."] = "הסר ×ת ערוץ ×–×”.";
+App::$strings["Unable to locate original post."] = "×œ× ×ž×¡×•×’×œ ל×תר פוסט מקורי.";
+App::$strings["Empty post discarded."] = "";
+App::$strings["Executable content type not permitted to this channel."] = "";
+App::$strings["System error. Post not saved."] = "";
+App::$strings["Unable to obtain post information from database."] = "";
+App::$strings["You have reached your limit of %1$.0f top level posts."] = "";
+App::$strings["You have reached your limit of %1$.0f webpages."] = "";
+App::$strings["\$Projectname Server - Setup"] = "";
+App::$strings["Could not connect to database."] = "";
+App::$strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "";
+App::$strings["Could not create table."] = "";
+App::$strings["Your site database has been installed."] = "";
+App::$strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "";
+App::$strings["Please see the file \"install/INSTALL.txt\"."] = "";
+App::$strings["System check"] = "";
+App::$strings["Check again"] = "בדוק שוב";
+App::$strings["Database connection"] = "חיבור מסד נתוני×";
+App::$strings["In order to install \$Projectname we need to know how to connect to your database."] = "";
+App::$strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "";
+App::$strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "";
+App::$strings["Database Server Name"] = "";
+App::$strings["Default is localhost"] = "";
+App::$strings["Database Port"] = "פורט מסד נתוני×";
+App::$strings["Communication port number - use 0 for default"] = "";
+App::$strings["Database Login Name"] = "";
+App::$strings["Database Login Password"] = "";
+App::$strings["Database Name"] = "×©× ×ž×¡×“ נתוני×";
+App::$strings["Database Type"] = "טיפוס מסד נתוני×";
+App::$strings["Site administrator email address"] = "";
+App::$strings["Your account email address must match this in order to use the web admin panel."] = "";
+App::$strings["Website URL"] = "";
+App::$strings["Please use SSL (https) URL if available."] = "";
+App::$strings["Please select a default timezone for your website"] = "";
+App::$strings["Site settings"] = "הגדרות ×תר";
+App::$strings["Could not find a command line version of PHP in the web server PATH."] = "";
+App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "";
+App::$strings["PHP executable path"] = "";
+App::$strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "";
+App::$strings["Command line PHP"] = "";
+App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "";
+App::$strings["This is required for message delivery to work."] = "";
+App::$strings["PHP register_argc_argv"] = "";
+App::$strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "";
+App::$strings["You can adjust these settings in the servers php.ini."] = "";
+App::$strings["PHP upload limits"] = "";
+App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "";
+App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "";
+App::$strings["Generate encryption keys"] = "";
+App::$strings["libCurl PHP module"] = "";
+App::$strings["GD graphics PHP module"] = "";
+App::$strings["OpenSSL PHP module"] = "";
+App::$strings["mysqli or postgres PHP module"] = "";
+App::$strings["mb_string PHP module"] = "";
+App::$strings["mcrypt PHP module"] = "";
+App::$strings["xml PHP module"] = "";
+App::$strings["Apache mod_rewrite module"] = "";
+App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "";
+App::$strings["proc_open"] = "";
+App::$strings["Error: proc_open is required but is either not installed or has been disabled in php.ini"] = "";
+App::$strings["Error: libCURL PHP module required but not installed."] = "";
+App::$strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "";
+App::$strings["Error: openssl PHP module required but not installed."] = "";
+App::$strings["Error: mysqli or postgres PHP module required but neither are installed."] = "";
+App::$strings["Error: mb_string PHP module required but not installed."] = "";
+App::$strings["Error: mcrypt PHP module required but not installed."] = "";
+App::$strings["Error: xml PHP module required for DAV but not installed."] = "";
+App::$strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "";
+App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "";
+App::$strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "";
+App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "";
+App::$strings[".htconfig.php is writable"] = ".htconfig.php הינו כתיב";
+App::$strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "";
+App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "";
+App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "";
+App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "";
+App::$strings["%s is writable"] = "%s הינו כתיב";
+App::$strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "";
+App::$strings["store is writable"] = "";
+App::$strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "";
+App::$strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "";
+App::$strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "";
+App::$strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "";
+App::$strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "";
+App::$strings["Providers are available that issue free certificates which are browser-valid."] = "";
+App::$strings["SSL certificate validation"] = "הוכחת תקפות של תעודת SSL";
+App::$strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "";
+App::$strings["Url rewrite is working"] = "";
+App::$strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "";
+App::$strings["Errors encountered creating database tables."] = "";
+App::$strings["<h1>What next</h1>"] = "<h1>מה הל××”</h1>";
+App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "";
+App::$strings["Comanche page description language help"] = "";
+App::$strings["Layout Description"] = "";
+App::$strings["Download PDL file"] = "הורד קובץ PDL";
+App::$strings["Files: shared with me"] = "";
+App::$strings["NEW"] = "חדש";
+App::$strings["Remove all files"] = "הסר ×ת כל הקבצי×";
+App::$strings["Remove this file"] = "הסר ×ת קובץ ×–×”";
+App::$strings["Like/Dislike"] = "";
+App::$strings["This action is restricted to members."] = "";
+App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "";
+App::$strings["Invalid request."] = "בקשה שגויה.";
+App::$strings["thing"] = "דבר";
+App::$strings["Channel unavailable."] = "עמוד ×œ× ×–×ž×™×Ÿ.";
+App::$strings["Previous action reversed."] = "";
+App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "";
+App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "";
+App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "";
+App::$strings["%1\$s is attending %2\$s's %3\$s"] = "";
+App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "";
+App::$strings["%1\$s may attend %2\$s's %3\$s"] = "";
+App::$strings["Action completed."] = "פעולה הושלמה.";
+App::$strings["Thank you."] = "תודה.";
+App::$strings["Version %s"] = "";
+App::$strings["Installed plugins/addons/apps:"] = "";
+App::$strings["No installed plugins/addons/apps"] = "";
+App::$strings["This is a hub of \$Projectname - a global cooperative network of decentralized privacy enhanced websites."] = "";
+App::$strings["Tag: "] = "תגית: ";
+App::$strings["Last background fetch: "] = "";
+App::$strings["Running at web location"] = "";
+App::$strings["Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more about \$Projectname."] = "";
+App::$strings["Bug reports and issues: please visit"] = "";
+App::$strings["\$projectname issues"] = "סוגיות \$projectname";
+App::$strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "";
+App::$strings["Site Administrators"] = "מנהלי ×תר";
+App::$strings["Remote privacy information not available."] = "";
+App::$strings["Visible to:"] = "";
+App::$strings["Location not found."] = "×ž×™×§×•× ×œ× × ×ž×¦×.";
+App::$strings["Primary location cannot be removed."] = "";
+App::$strings["No locations found."] = "×œ× × ×ž×¦×ו מיקומי×.";
+App::$strings["Manage Channel Locations"] = "";
+App::$strings["Location (address)"] = "×ž×™×§×•× (כתובת)";
+App::$strings["Primary Location"] = "";
+App::$strings["Drop location"] = "";
+App::$strings["Failed to create source. No channel selected."] = "";
+App::$strings["Source created."] = "";
+App::$strings["Source updated."] = "";
+App::$strings["*"] = "*";
+App::$strings["Manage remote sources of content for your channel."] = "";
+App::$strings["New Source"] = "מקור חדש";
+App::$strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "";
+App::$strings["Only import content with these words (one per line)"] = "";
+App::$strings["Leave blank to import all public content"] = "";
+App::$strings["Channel Name"] = "×©× ×¢×¨×•×¥";
+App::$strings["Source not found."] = "מקור ×œ× × ×ž×¦×.";
+App::$strings["Edit Source"] = "ערוך מקור";
+App::$strings["Delete Source"] = "מחק מקור";
+App::$strings["Source removed"] = "מקור הוסר";
+App::$strings["Unable to remove source."] = "";
+App::$strings["No valid account found."] = "";
+App::$strings["Password reset request issued. Check your email."] = "";
+App::$strings["Site Member (%s)"] = "חבר ×תר (%s)";
+App::$strings["Password reset requested at %s"] = "";
+App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "";
+App::$strings["Password Reset"] = "×יפוס סיסמה";
+App::$strings["Your password has been reset as requested."] = "";
+App::$strings["Your new password is"] = "הסיסמה החדשה שלך ×”×™×";
+App::$strings["Save or copy your new password - and then"] = "";
+App::$strings["click here to login"] = "לחץ ×›×ן כדי להיכנס";
+App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "";
+App::$strings["Your password has changed at %s"] = "";
+App::$strings["Forgot your Password?"] = "שכחת ×ת הסיסמה שלך?";
+App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "";
+App::$strings["Email Address"] = "כתובת דו×״ל";
+App::$strings["Reset"] = "×פס";
+App::$strings["Unable to update menu."] = "";
+App::$strings["Unable to create menu."] = "";
+App::$strings["Menu Name"] = "×©× ×ª×¤×¨×™×˜";
+App::$strings["Unique name (not visible on webpage) - required"] = "";
+App::$strings["Menu Title"] = "כותרת תפריט";
+App::$strings["Visible on webpage - leave empty for no title"] = "";
+App::$strings["Allow Bookmarks"] = "";
+App::$strings["Menu may be used to store saved bookmarks"] = "";
+App::$strings["Submit and proceed"] = "";
+App::$strings["Drop"] = "";
+App::$strings["Bookmarks allowed"] = "";
+App::$strings["Delete this menu"] = "";
+App::$strings["Edit menu contents"] = "ערוך תכני תפריט";
+App::$strings["Edit this menu"] = "ערוך ×ת תפריט ×–×”";
+App::$strings["Menu could not be deleted."] = "תפריט ×œ× ×™×›×•×œ ×”×™×” להימחק.";
+App::$strings["Menu not found."] = "תפריט ×œ× × ×ž×¦×.";
+App::$strings["Edit Menu"] = "ערוך תפריט";
+App::$strings["Add or remove entries to this menu"] = "";
+App::$strings["Menu name"] = "×©× ×ª×¤×¨×™×˜";
+App::$strings["Must be unique, only seen by you"] = "";
+App::$strings["Menu title"] = "כותרת תפריט";
+App::$strings["Menu title as seen by others"] = "";
+App::$strings["Allow bookmarks"] = "";
+App::$strings["Not found."] = "×œ× × ×ž×¦×.";
+App::$strings["Conversation removed."] = "";
+App::$strings["No messages."] = "×ין הודעות.";
+App::$strings["D, d M Y - g:i A"] = "";
+App::$strings["Unable to create element."] = "";
+App::$strings["Unable to update menu element."] = "";
+App::$strings["Unable to add menu element."] = "";
+App::$strings["Menu Item Permissions"] = "";
+App::$strings["Link Name"] = "×©× ×§×™×©×•×¨";
+App::$strings["Link or Submenu Target"] = "";
+App::$strings["Enter URL of the link or select a menu name to create a submenu"] = "";
+App::$strings["Use magic-auth if available"] = "";
+App::$strings["Open link in new window"] = "פתח בתוך חלון חדש";
+App::$strings["Order in list"] = "";
+App::$strings["Higher numbers will sink to bottom of listing"] = "";
+App::$strings["Submit and finish"] = "";
+App::$strings["Submit and continue"] = "";
+App::$strings["Menu:"] = "תפריט:";
+App::$strings["Link Target"] = "";
+App::$strings["Edit menu"] = "ערוך תפריט";
+App::$strings["Edit element"] = "ערוך ×למנט";
+App::$strings["Drop element"] = "";
+App::$strings["New element"] = "×למנט חדש";
+App::$strings["Edit this menu container"] = "";
+App::$strings["Add menu element"] = "";
+App::$strings["Delete this menu item"] = "";
+App::$strings["Edit this menu item"] = "";
+App::$strings["Menu item not found."] = "";
+App::$strings["Menu item deleted."] = "";
+App::$strings["Menu item could not be deleted."] = "";
+App::$strings["Edit Menu Element"] = "";
+App::$strings["Link text"] = "";
+App::$strings["%1\$s is following %2\$s's %3\$s"] = "";
+App::$strings["Set your current mood and tell your friends"] = "";
+App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "";
+App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "";
+App::$strings["Tag removed"] = "";
+App::$strings["Remove Item Tag"] = "";
+App::$strings["Select a tag to remove: "] = "";
+App::$strings["No such group"] = "";
+App::$strings["No such channel"] = "";
+App::$strings["Search Results For:"] = "";
+App::$strings["Collection is empty"] = "";
+App::$strings["Collection: "] = "×וסף: ";
+App::$strings["Connection: "] = "חיבור: ";
+App::$strings["Invalid connection."] = "חיבור שגוי.";
+App::$strings["OpenID protocol error. No ID returned."] = "";
+App::$strings["Add a Channel"] = "הוסף ערוץ";
+App::$strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "";
+App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "";
+App::$strings["Choose a short nickname"] = "";
+App::$strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "";
+App::$strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "";
+App::$strings["Please choose a channel type (such as social networking or community forum) and privacy requirements so we can select the best permissions for you"] = "";
+App::$strings["Channel Type"] = "טיפוס ערוץ";
+App::$strings["Read more about roles"] = "";
+App::$strings["Thing updated"] = "";
+App::$strings["Object store: failed"] = "";
+App::$strings["Thing added"] = "";
+App::$strings["OBJ: %1\$s %2\$s %3\$s"] = "";
+App::$strings["Show Thing"] = "";
+App::$strings["item not found."] = "פריט ×œ× × ×ž×¦×";
+App::$strings["Edit Thing"] = "";
+App::$strings["Select a profile"] = "בחר פרופיל";
+App::$strings["Post an activity"] = "×¤×¨×¡× ×¤×¢×™×œ×•×ª";
+App::$strings["Only sends to viewers of the applicable profile"] = "";
+App::$strings["Name of thing e.g. something"] = "";
+App::$strings["URL of thing (optional)"] = "";
+App::$strings["URL for photo of thing (optional)"] = "";
+App::$strings["Add Thing to your Profile"] = "";
+App::$strings["Export Channel"] = "";
+App::$strings["Export your basic channel information to a file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new server hub, but does not contain your content."] = "";
+App::$strings["Export Content"] = "";
+App::$strings["Export your channel information and recent content to a JSON backup that can be restored or imported to another server hub. This backs up all of your connections, permissions, profile data and several months of posts. This file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "";
+App::$strings["Export your posts from a given year or month:"] = "";
+App::$strings["You may also export your posts and conversations for a particular year or month. Click on one of the recent years or months below."] = "";
+App::$strings["Jan"] = "";
+App::$strings["Feb"] = "";
+App::$strings["Mar"] = "";
+App::$strings["Apr"] = "";
+App::$strings["Jun"] = "";
+App::$strings["Jul"] = "";
+App::$strings["Aug"] = "";
+App::$strings["Sep"] = "";
+App::$strings["Oct"] = "";
+App::$strings["Nov"] = "";
+App::$strings["Dec"] = "";
+App::$strings["If the export fails (possibly due to memory exhaustion on your server hub), please try again selecting a more limited date range."] = "";
+App::$strings["Or adjust the date in your browser location bar to select other dates. For example the year 2013; <a href=\"%1\$s/2013\">%1\$s/2013</a> or the month September 2013; <a href=\"%1\$s/2013/9\">%1\$s/2013/9</a>"] = "";
+App::$strings["Please visit"] = "×× × ×‘×§×¨";
+App::$strings["on another hub to import the backup files(s)."] = "";
+App::$strings["We advise you to clone the channel on the new hub first and than to import the backup file(s) (from the same channel) in chronological order. Importing the backup files into another channel will certainly give permission issues."] = "";
+App::$strings["[Embedded content - reload page to view]"] = "";
+App::$strings["No connections."] = "×ין חיבורי×.";
+App::$strings["Visit %s's profile [%s]"] = "";
+App::$strings["Source of Item"] = "";
+App::$strings["Total votes"] = "";
+App::$strings["Average Rating"] = "";
+App::$strings["Page Title"] = "כותרת עמוד";
+App::$strings["Xchan Lookup"] = "";
+App::$strings["Lookup xchan beginning with (or webbie): "] = "";
+App::$strings["invalid target signature"] = "";
+App::$strings["Schema Default"] = "";
+App::$strings["Sans-Serif"] = "";
+App::$strings["Monospace"] = "";
+App::$strings["Theme settings"] = "";
+App::$strings["Set scheme"] = "";
+App::$strings["Set font-size for posts and comments"] = "";
+App::$strings["Set font face"] = "";
+App::$strings["Set iconset"] = "";
+App::$strings["Set big shadow size, default 15px 15px 15px"] = "";
+App::$strings["Set small shadow size, default 5px 5px 5px"] = "";
+App::$strings["Set shadow color, default #000"] = "";
+App::$strings["Set radius size, default 5px"] = "";
+App::$strings["Set line-height for posts and comments"] = "";
+App::$strings["Set background image"] = "";
+App::$strings["Set background attachment"] = "";
+App::$strings["Set background color"] = "";
+App::$strings["Set section background image"] = "";
+App::$strings["Set section background color"] = "";
+App::$strings["Set color of items - use hex"] = "";
+App::$strings["Set color of links - use hex"] = "";
+App::$strings["Set max-width for items. Default 400px"] = "";
+App::$strings["Set min-width for items. Default 240px"] = "";
+App::$strings["Set the generic content wrapper width. Default 48%"] = "";
+App::$strings["Set color of fonts - use hex"] = "";
+App::$strings["Set background-size element"] = "";
+App::$strings["Item opacity"] = "";
+App::$strings["Display post previews only"] = "";
+App::$strings["Display side bar on channel page"] = "";
+App::$strings["Colour of the navigation bar"] = "";
+App::$strings["Item float"] = "";
+App::$strings["Left offset of the section element"] = "";
+App::$strings["Right offset of the section element"] = "";
+App::$strings["Section width"] = "";
+App::$strings["Left offset of the aside"] = "";
+App::$strings["Right offset of the aside element"] = "";
+App::$strings["Light (Red Matrix default)"] = "";
+App::$strings["Select scheme"] = "";
+App::$strings["Narrow navbar"] = "";
+App::$strings["Navigation bar background color"] = "";
+App::$strings["Navigation bar gradient top color"] = "";
+App::$strings["Navigation bar gradient bottom color"] = "";
+App::$strings["Navigation active button gradient top color"] = "";
+App::$strings["Navigation active button gradient bottom color"] = "";
+App::$strings["Navigation bar border color "] = "";
+App::$strings["Navigation bar icon color "] = "";
+App::$strings["Navigation bar active icon color "] = "";
+App::$strings["link color"] = "צבע קישור";
+App::$strings["Set font-color for banner"] = "";
+App::$strings["Set the background color"] = "";
+App::$strings["Set the background image"] = "";
+App::$strings["Set the background color of items"] = "";
+App::$strings["Set the background color of comments"] = "";
+App::$strings["Set the border color of comments"] = "";
+App::$strings["Set the indent for comments"] = "";
+App::$strings["Set the basic color for item icons"] = "";
+App::$strings["Set the hover color for item icons"] = "";
+App::$strings["Set font-size for the entire application"] = "";
+App::$strings["Example: 14px"] = "";
+App::$strings["Set font-color for posts and comments"] = "";
+App::$strings["Set radius of corners"] = "";
+App::$strings["Set shadow depth of photos"] = "";
+App::$strings["Set maximum width of content region in pixel"] = "";
+App::$strings["Leave empty for default width"] = "";
+App::$strings["Center page content"] = "";
+App::$strings["Set minimum opacity of nav bar - to hide it"] = "";
+App::$strings["Set size of conversation author photo"] = "";
+App::$strings["Set size of followup author photos"] = "";
+App::$strings["Update %s failed. See error logs."] = "";
+App::$strings["Update Error at %s"] = "";
+App::$strings["Create an account to access services and applications within the Red Matrix"] = "";
+App::$strings["Password"] = "סיסמה";
+App::$strings["Remember me"] = "זכור ×ותי";
+App::$strings["Forgot your password?"] = "שכחת ×ת הסיסמה שלך?";
+App::$strings["toggle mobile"] = "";
+App::$strings["Website SSL certificate is not valid. Please correct."] = "";
+App::$strings["[red] Website SSL error for %s"] = "";
+App::$strings["Cron/Scheduled tasks not running."] = "";
+App::$strings["[red] Cron tasks not running on %s"] = "";
diff --git a/view/it/hmessages.po b/view/it/hmessages.po
index 975f99e1c..447fb3c2f 100644
--- a/view/it/hmessages.po
+++ b/view/it/hmessages.po
@@ -10,9 +10,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-04-08 00:03-0700\n"
-"PO-Revision-Date: 2016-04-15 07:06+0000\n"
-"Last-Translator: Paolo Wave <pynolo@tarine.net>\n"
+"POT-Creation-Date: 2016-06-10 00:02-0700\n"
+"PO-Revision-Date: 2016-06-10 09:14+0000\n"
+"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/Friendica/red-matrix/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -20,23 +20,11 @@ msgstr ""
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../../Zotlabs/Zot/Auth.php:140
-msgid ""
-"Remote authentication blocked. You are logged into this site locally. Please"
-" logout and retry."
-msgstr "L'autenticazione tramite il tuo hub non è disponibile. Puoi provare a disconnetterti per tentare di nuovo."
-
-#: ../../Zotlabs/Zot/Auth.php:248 ../../mod/openid.php:72
-#: ../../mod/openid.php:179
-#, php-format
-msgid "Welcome %s. Remote authentication successful."
-msgstr "Ciao %s. L'accesso tramite il tuo hub è avvenuto con successo."
-
#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:239
msgid "parent"
msgstr "cartella superiore"
-#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2633
+#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2620
msgid "Collection"
msgstr "Cartella"
@@ -60,16 +48,16 @@ msgstr "Appuntamenti ricevuti"
msgid "Schedule Outbox"
msgstr "Appuntamenti inviati"
-#: ../../Zotlabs/Storage/Browser.php:164 ../../include/widgets.php:1457
-#: ../../include/apps.php:360 ../../include/apps.php:415
-#: ../../include/conversation.php:1037 ../../mod/photos.php:793
-#: ../../mod/photos.php:1237
+#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Module/Photos.php:798
+#: ../../Zotlabs/Module/Photos.php:1243 ../../Zotlabs/Lib/Apps.php:486
+#: ../../Zotlabs/Lib/Apps.php:561 ../../include/widgets.php:1505
+#: ../../include/conversation.php:1032
msgid "Unknown"
msgstr "Sconosciuto"
-#: ../../Zotlabs/Storage/Browser.php:226 ../../include/apps.php:135
-#: ../../include/conversation.php:1654 ../../include/nav.php:93
-#: ../../mod/fbrowser.php:109
+#: ../../Zotlabs/Storage/Browser.php:226 ../../Zotlabs/Module/Fbrowser.php:85
+#: ../../Zotlabs/Lib/Apps.php:216 ../../include/nav.php:93
+#: ../../include/conversation.php:1639
msgid "Files"
msgstr "Archivio file"
@@ -81,22 +69,24 @@ msgstr "Totale"
msgid "Shared"
msgstr "Condiviso"
-#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:303
-#: ../../mod/blocks.php:152 ../../mod/layouts.php:175 ../../mod/menu.php:114
-#: ../../mod/new_channel.php:138 ../../mod/webpages.php:182
+#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:306
+#: ../../Zotlabs/Module/Blocks.php:156 ../../Zotlabs/Module/Layouts.php:182
+#: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/New_channel.php:142
+#: ../../Zotlabs/Module/Webpages.php:186
msgid "Create"
msgstr "Crea"
-#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:305
-#: ../../include/widgets.php:1470 ../../mod/photos.php:820
-#: ../../mod/photos.php:1361 ../../mod/profile_photo.php:401
-#: ../../mod/cover_photo.php:353
+#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:308
+#: ../../Zotlabs/Module/Cover_photo.php:357
+#: ../../Zotlabs/Module/Photos.php:825 ../../Zotlabs/Module/Photos.php:1364
+#: ../../Zotlabs/Module/Profile_photo.php:368 ../../include/widgets.php:1518
msgid "Upload"
msgstr "Carica"
-#: ../../Zotlabs/Storage/Browser.php:235 ../../mod/chat.php:241
-#: ../../mod/admin.php:1158 ../../mod/settings.php:599
-#: ../../mod/settings.php:625 ../../mod/sharedwithme.php:95
+#: ../../Zotlabs/Storage/Browser.php:235 ../../Zotlabs/Module/Chat.php:247
+#: ../../Zotlabs/Module/Admin.php:1223 ../../Zotlabs/Module/Settings.php:592
+#: ../../Zotlabs/Module/Settings.php:618
+#: ../../Zotlabs/Module/Sharedwithme.php:99
msgid "Name"
msgstr "Nome"
@@ -104,4851 +94,785 @@ msgstr "Nome"
msgid "Type"
msgstr "Tipo"
-#: ../../Zotlabs/Storage/Browser.php:237 ../../include/text.php:1293
-#: ../../mod/sharedwithme.php:97
+#: ../../Zotlabs/Storage/Browser.php:237
+#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1344
msgid "Size"
msgstr "Dimensione"
-#: ../../Zotlabs/Storage/Browser.php:238 ../../mod/sharedwithme.php:98
+#: ../../Zotlabs/Storage/Browser.php:238
+#: ../../Zotlabs/Module/Sharedwithme.php:102
msgid "Last Modified"
msgstr "Ultima modifica"
-#: ../../Zotlabs/Storage/Browser.php:240 ../../include/ItemObject.php:100
-#: ../../include/apps.php:259 ../../include/page_widgets.php:8
-#: ../../include/page_widgets.php:36 ../../include/identity.php:931
-#: ../../include/identity.php:935 ../../include/menu.php:108
-#: ../../mod/blocks.php:153 ../../mod/connections.php:286
-#: ../../mod/connections.php:306 ../../mod/editblock.php:135
-#: ../../mod/editlayout.php:134 ../../mod/editpost.php:112
-#: ../../mod/editwebpage.php:176 ../../mod/layouts.php:183
-#: ../../mod/menu.php:108 ../../mod/admin.php:1767 ../../mod/settings.php:659
-#: ../../mod/thing.php:256 ../../mod/webpages.php:183
+#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Blocks.php:157
+#: ../../Zotlabs/Module/Editblock.php:109
+#: ../../Zotlabs/Module/Connections.php:290
+#: ../../Zotlabs/Module/Connections.php:310
+#: ../../Zotlabs/Module/Editpost.php:84
+#: ../../Zotlabs/Module/Editlayout.php:113
+#: ../../Zotlabs/Module/Editwebpage.php:146
+#: ../../Zotlabs/Module/Layouts.php:190 ../../Zotlabs/Module/Menu.php:112
+#: ../../Zotlabs/Module/Admin.php:2113 ../../Zotlabs/Module/Settings.php:652
+#: ../../Zotlabs/Module/Thing.php:260 ../../Zotlabs/Module/Webpages.php:187
+#: ../../Zotlabs/Lib/Apps.php:337 ../../Zotlabs/Lib/ThreadItem.php:106
+#: ../../include/channel.php:937 ../../include/channel.php:941
+#: ../../include/menu.php:108 ../../include/page_widgets.php:8
+#: ../../include/page_widgets.php:36
msgid "Edit"
msgstr "Modifica"
-#: ../../Zotlabs/Storage/Browser.php:241 ../../include/ItemObject.php:120
-#: ../../include/apps.php:260 ../../include/conversation.php:657
-#: ../../mod/blocks.php:155 ../../mod/connections.php:259
-#: ../../mod/connedit.php:569 ../../mod/editblock.php:181
-#: ../../mod/editlayout.php:179 ../../mod/editwebpage.php:223
-#: ../../mod/group.php:173 ../../mod/photos.php:1168 ../../mod/admin.php:993
-#: ../../mod/admin.php:1152 ../../mod/admin.php:1768
-#: ../../mod/settings.php:660 ../../mod/thing.php:257
-#: ../../mod/webpages.php:185
+#: ../../Zotlabs/Storage/Browser.php:241 ../../Zotlabs/Module/Blocks.php:159
+#: ../../Zotlabs/Module/Connedit.php:572
+#: ../../Zotlabs/Module/Editblock.php:134
+#: ../../Zotlabs/Module/Connections.php:263
+#: ../../Zotlabs/Module/Editlayout.php:136
+#: ../../Zotlabs/Module/Editwebpage.php:170 ../../Zotlabs/Module/Group.php:177
+#: ../../Zotlabs/Module/Photos.php:1173 ../../Zotlabs/Module/Admin.php:1039
+#: ../../Zotlabs/Module/Admin.php:1213 ../../Zotlabs/Module/Admin.php:2114
+#: ../../Zotlabs/Module/Settings.php:653 ../../Zotlabs/Module/Thing.php:261
+#: ../../Zotlabs/Module/Webpages.php:189 ../../Zotlabs/Lib/Apps.php:338
+#: ../../Zotlabs/Lib/ThreadItem.php:126 ../../include/conversation.php:657
msgid "Delete"
msgstr "Elimina"
-#: ../../Zotlabs/Storage/Browser.php:282
+#: ../../Zotlabs/Storage/Browser.php:285
#, php-format
msgid "You are using %1$s of your available file storage."
msgstr "Stai usando %1$s dello spazio disponibile per i tuoi file."
-#: ../../Zotlabs/Storage/Browser.php:287
+#: ../../Zotlabs/Storage/Browser.php:290
#, php-format
msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
msgstr "Stai usando %1$s di %2$s che hai a disposizione per i file. (%3$s&#37;)"
-#: ../../Zotlabs/Storage/Browser.php:299
+#: ../../Zotlabs/Storage/Browser.php:302
msgid "WARNING:"
msgstr "ATTENZIONE:"
-#: ../../Zotlabs/Storage/Browser.php:302
+#: ../../Zotlabs/Storage/Browser.php:305
msgid "Create new folder"
msgstr "Nuova cartella"
-#: ../../Zotlabs/Storage/Browser.php:304
+#: ../../Zotlabs/Storage/Browser.php:307
msgid "Upload file"
msgstr "Carica un file"
-#: ../../Zotlabs/Web/Router.php:47 ../../include/attach.php:141
-#: ../../include/attach.php:189 ../../include/attach.php:252
-#: ../../include/attach.php:266 ../../include/attach.php:273
-#: ../../include/attach.php:338 ../../include/attach.php:352
-#: ../../include/attach.php:359 ../../include/attach.php:437
-#: ../../include/attach.php:895 ../../include/attach.php:966
-#: ../../include/attach.php:1118 ../../include/items.php:4671
-#: ../../include/photos.php:29 ../../include/chat.php:133
-#: ../../mod/achievements.php:30 ../../mod/api.php:26 ../../mod/api.php:31
-#: ../../mod/appman.php:66 ../../mod/authtest.php:13 ../../mod/block.php:22
-#: ../../mod/block.php:72 ../../mod/blocks.php:69 ../../mod/blocks.php:76
-#: ../../mod/bookmarks.php:48 ../../mod/channel.php:100
-#: ../../mod/channel.php:217 ../../mod/channel.php:257 ../../mod/chat.php:94
-#: ../../mod/chat.php:99 ../../mod/common.php:35 ../../mod/connections.php:29
-#: ../../mod/connedit.php:362 ../../mod/editblock.php:65
-#: ../../mod/editlayout.php:63 ../../mod/editlayout.php:87
-#: ../../mod/editpost.php:13 ../../mod/editwebpage.php:64
-#: ../../mod/editwebpage.php:86 ../../mod/editwebpage.php:101
-#: ../../mod/editwebpage.php:125 ../../mod/events.php:260
-#: ../../mod/filestorage.php:18 ../../mod/filestorage.php:73
-#: ../../mod/filestorage.php:88 ../../mod/filestorage.php:115
-#: ../../mod/fsuggest.php:78 ../../mod/group.php:9 ../../mod/id.php:71
-#: ../../mod/invite.php:13 ../../mod/invite.php:87 ../../mod/item.php:206
-#: ../../mod/item.php:214 ../../mod/item.php:1069 ../../mod/layouts.php:69
-#: ../../mod/layouts.php:76 ../../mod/layouts.php:87 ../../mod/like.php:177
-#: ../../mod/locs.php:83 ../../mod/mail.php:126 ../../mod/manage.php:6
-#: ../../mod/menu.php:74 ../../mod/message.php:16 ../../mod/mitem.php:111
-#: ../../mod/mood.php:112 ../../mod/network.php:12
-#: ../../mod/new_channel.php:73 ../../mod/new_channel.php:100
-#: ../../mod/notifications.php:66 ../../mod/page.php:31 ../../mod/page.php:86
-#: ../../mod/pdledit.php:22 ../../mod/photos.php:70 ../../mod/poke.php:133
-#: ../../mod/profile.php:64 ../../mod/profile.php:72
-#: ../../mod/profile_photo.php:289 ../../mod/profile_photo.php:302
-#: ../../mod/profiles.php:198 ../../mod/profiles.php:596
-#: ../../mod/rate.php:111 ../../mod/register.php:73 ../../mod/regmod.php:17
-#: ../../mod/service_limits.php:7 ../../mod/settings.php:579
-#: ../../mod/setup.php:233 ../../mod/sharedwithme.php:7
-#: ../../mod/sources.php:66 ../../mod/suggest.php:26 ../../mod/thing.php:270
-#: ../../mod/thing.php:290 ../../mod/thing.php:327
-#: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27
-#: ../../mod/viewsrc.php:14 ../../mod/webpages.php:69
-#: ../../mod/cover_photo.php:273 ../../mod/cover_photo.php:286
-#: ../../index.php:185
+#: ../../Zotlabs/Web/WebServer.php:120 ../../Zotlabs/Module/Dreport.php:10
+#: ../../Zotlabs/Module/Dreport.php:49 ../../Zotlabs/Module/Group.php:72
+#: ../../Zotlabs/Module/Like.php:284 ../../Zotlabs/Module/Import_items.php:112
+#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:62
+#: ../../include/items.php:385
+msgid "Permission denied"
+msgstr "Permesso negato"
+
+#: ../../Zotlabs/Web/WebServer.php:121 ../../Zotlabs/Web/Router.php:65
+#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Blocks.php:73
+#: ../../Zotlabs/Module/Blocks.php:80 ../../Zotlabs/Module/Channel.php:105
+#: ../../Zotlabs/Module/Channel.php:226 ../../Zotlabs/Module/Channel.php:267
+#: ../../Zotlabs/Module/Chat.php:100 ../../Zotlabs/Module/Chat.php:105
+#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Block.php:26
+#: ../../Zotlabs/Module/Block.php:76 ../../Zotlabs/Module/Bookmarks.php:61
+#: ../../Zotlabs/Module/Connedit.php:366 ../../Zotlabs/Module/Editblock.php:67
+#: ../../Zotlabs/Module/Common.php:39 ../../Zotlabs/Module/Connections.php:33
+#: ../../Zotlabs/Module/Cover_photo.php:277
+#: ../../Zotlabs/Module/Cover_photo.php:290
+#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Events.php:265
+#: ../../Zotlabs/Module/Editlayout.php:67
+#: ../../Zotlabs/Module/Editlayout.php:90
+#: ../../Zotlabs/Module/Editwebpage.php:69
+#: ../../Zotlabs/Module/Editwebpage.php:90
+#: ../../Zotlabs/Module/Editwebpage.php:105
+#: ../../Zotlabs/Module/Editwebpage.php:127 ../../Zotlabs/Module/Group.php:13
+#: ../../Zotlabs/Module/Api.php:13 ../../Zotlabs/Module/Api.php:18
+#: ../../Zotlabs/Module/Filestorage.php:24
+#: ../../Zotlabs/Module/Filestorage.php:79
+#: ../../Zotlabs/Module/Filestorage.php:94
+#: ../../Zotlabs/Module/Filestorage.php:121 ../../Zotlabs/Module/Item.php:210
+#: ../../Zotlabs/Module/Item.php:218 ../../Zotlabs/Module/Item.php:1070
+#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78
+#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Id.php:76
+#: ../../Zotlabs/Module/Like.php:181 ../../Zotlabs/Module/Invite.php:17
+#: ../../Zotlabs/Module/Invite.php:91 ../../Zotlabs/Module/Locs.php:87
+#: ../../Zotlabs/Module/Mail.php:129 ../../Zotlabs/Module/Manage.php:10
+#: ../../Zotlabs/Module/Menu.php:78 ../../Zotlabs/Module/Message.php:18
+#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Network.php:17
+#: ../../Zotlabs/Module/Mitem.php:115 ../../Zotlabs/Module/New_channel.php:77
+#: ../../Zotlabs/Module/New_channel.php:104
+#: ../../Zotlabs/Module/Notifications.php:70
+#: ../../Zotlabs/Module/Photos.php:75 ../../Zotlabs/Module/Page.php:35
+#: ../../Zotlabs/Module/Page.php:90 ../../Zotlabs/Module/Pdledit.php:26
+#: ../../Zotlabs/Module/Poke.php:137 ../../Zotlabs/Module/Profile.php:68
+#: ../../Zotlabs/Module/Profile.php:76 ../../Zotlabs/Module/Profiles.php:203
+#: ../../Zotlabs/Module/Profiles.php:601
+#: ../../Zotlabs/Module/Profile_photo.php:256
+#: ../../Zotlabs/Module/Profile_photo.php:269
+#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Appman.php:75
+#: ../../Zotlabs/Module/Register.php:77 ../../Zotlabs/Module/Regmod.php:21
+#: ../../Zotlabs/Module/Service_limits.php:11
+#: ../../Zotlabs/Module/Settings.php:572 ../../Zotlabs/Module/Setup.php:215
+#: ../../Zotlabs/Module/Sharedwithme.php:11
+#: ../../Zotlabs/Module/Sources.php:74 ../../Zotlabs/Module/Suggest.php:30
+#: ../../Zotlabs/Module/Thing.php:274 ../../Zotlabs/Module/Thing.php:294
+#: ../../Zotlabs/Module/Thing.php:331
+#: ../../Zotlabs/Module/Viewconnections.php:25
+#: ../../Zotlabs/Module/Viewconnections.php:30
+#: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Webpages.php:74
+#: ../../Zotlabs/Lib/Chatroom.php:137 ../../include/items.php:3438
+#: ../../include/attach.php:141 ../../include/attach.php:189
+#: ../../include/attach.php:252 ../../include/attach.php:266
+#: ../../include/attach.php:273 ../../include/attach.php:338
+#: ../../include/attach.php:352 ../../include/attach.php:359
+#: ../../include/attach.php:437 ../../include/attach.php:895
+#: ../../include/attach.php:966 ../../include/attach.php:1118
+#: ../../include/photos.php:27
msgid "Permission denied."
msgstr "Permesso negato."
-#: ../../Zotlabs/Web/Router.php:105 ../../mod/help.php:231
+#: ../../Zotlabs/Web/Router.php:146 ../../Zotlabs/Module/Help.php:94
msgid "Not Found"
msgstr "Non disponibile"
-#: ../../Zotlabs/Web/Router.php:108 ../../mod/block.php:75
-#: ../../mod/display.php:110 ../../mod/help.php:234 ../../mod/page.php:89
+#: ../../Zotlabs/Web/Router.php:149 ../../Zotlabs/Module/Block.php:79
+#: ../../Zotlabs/Module/Display.php:117 ../../Zotlabs/Module/Help.php:97
+#: ../../Zotlabs/Module/Page.php:93
msgid "Page not found."
msgstr "Pagina non trovata."
-#: ../../include/ItemObject.php:89 ../../include/conversation.php:664
-msgid "Private Message"
-msgstr "Messaggio privato"
-
-#: ../../include/ItemObject.php:126 ../../include/conversation.php:656
-msgid "Select"
-msgstr "Scegli"
-
-#: ../../include/ItemObject.php:130
-msgid "Save to Folder"
-msgstr "Salva nella cartella"
-
-#: ../../include/ItemObject.php:151
-msgid "I will attend"
-msgstr "Parteciperò"
-
-#: ../../include/ItemObject.php:151
-msgid "I will not attend"
-msgstr "Non parteciperò"
-
-#: ../../include/ItemObject.php:151
-msgid "I might attend"
-msgstr "Forse parteciperò"
-
-#: ../../include/ItemObject.php:161
-msgid "I agree"
-msgstr "Sono d'accordo"
-
-#: ../../include/ItemObject.php:161
-msgid "I disagree"
-msgstr "Non sono d'accordo"
-
-#: ../../include/ItemObject.php:161
-msgid "I abstain"
-msgstr "Mi astengo"
-
-#: ../../include/ItemObject.php:175 ../../include/ItemObject.php:187
-#: ../../include/conversation.php:1733 ../../mod/photos.php:1121
-#: ../../mod/photos.php:1133
-msgid "View all"
-msgstr "Vedi tutto"
-
-#: ../../include/ItemObject.php:179 ../../include/conversation.php:1757
-#: ../../include/taxonomy.php:415 ../../include/identity.php:1298
-#: ../../mod/photos.php:1125
-msgctxt "noun"
-msgid "Like"
-msgid_plural "Likes"
-msgstr[0] "Mi piace"
-msgstr[1] "Mi piace"
-
-#: ../../include/ItemObject.php:184 ../../include/conversation.php:1760
-#: ../../mod/photos.php:1130
-msgctxt "noun"
-msgid "Dislike"
-msgid_plural "Dislikes"
-msgstr[0] "Non mi piace"
-msgstr[1] "Non mi piace"
-
-#: ../../include/ItemObject.php:212
-msgid "Add Star"
-msgstr "Aggiungi ai preferiti"
-
-#: ../../include/ItemObject.php:213
-msgid "Remove Star"
-msgstr "Rimuovi dai preferiti"
-
-#: ../../include/ItemObject.php:214
-msgid "Toggle Star Status"
-msgstr "Attiva/disattiva preferito"
-
-#: ../../include/ItemObject.php:218
-msgid "starred"
-msgstr "preferito"
-
-#: ../../include/ItemObject.php:227 ../../include/conversation.php:671
-msgid "Message signature validated"
-msgstr "Messaggio con firma verificata"
-
-#: ../../include/ItemObject.php:228 ../../include/conversation.php:672
-msgid "Message signature incorrect"
-msgstr "Massaggio con firma non corretta"
-
-#: ../../include/ItemObject.php:236
-msgid "Add Tag"
-msgstr "Aggiungi un tag"
-
-#: ../../include/ItemObject.php:254 ../../mod/photos.php:1065
-msgid "I like this (toggle)"
-msgstr "Attiva/disattiva Mi piace"
-
-#: ../../include/ItemObject.php:254 ../../include/taxonomy.php:328
-msgid "like"
-msgstr "mi piace"
-
-#: ../../include/ItemObject.php:255 ../../mod/photos.php:1066
-msgid "I don't like this (toggle)"
-msgstr "Attiva/disattiva Non mi piace"
-
-#: ../../include/ItemObject.php:255 ../../include/taxonomy.php:329
-msgid "dislike"
-msgstr "non mi piace"
-
-#: ../../include/ItemObject.php:259
-msgid "Share This"
-msgstr "Condividi"
-
-#: ../../include/ItemObject.php:259
-msgid "share"
-msgstr "condividi"
-
-#: ../../include/ItemObject.php:268
-msgid "Delivery Report"
-msgstr "Rapporto di trasmissione"
-
-#: ../../include/ItemObject.php:286
-#, php-format
-msgid "%d comment"
-msgid_plural "%d comments"
-msgstr[0] "%d commento"
-msgstr[1] "%d commenti"
-
-#: ../../include/ItemObject.php:315 ../../include/ItemObject.php:316
-#, php-format
-msgid "View %s's profile - %s"
-msgstr "Guarda il profilo di %s - %s"
-
-#: ../../include/ItemObject.php:319
-msgid "to"
-msgstr "a"
-
-#: ../../include/ItemObject.php:320
-msgid "via"
-msgstr "via"
-
-#: ../../include/ItemObject.php:321
-msgid "Wall-to-Wall"
-msgstr "Da bacheca a bacheca"
-
-#: ../../include/ItemObject.php:322
-msgid "via Wall-To-Wall:"
-msgstr "da bacheca a bacheca:"
-
-#: ../../include/ItemObject.php:334 ../../include/conversation.php:719
-#, php-format
-msgid "from %s"
-msgstr "da %s"
-
-#: ../../include/ItemObject.php:337 ../../include/conversation.php:722
-#, php-format
-msgid "last edited: %s"
-msgstr "ultima modifica: %s"
-
-#: ../../include/ItemObject.php:338 ../../include/conversation.php:723
-#, php-format
-msgid "Expires: %s"
-msgstr "Scadenza: %s"
-
-#: ../../include/ItemObject.php:362
-msgid "Save Bookmarks"
-msgstr "Salva segnalibro"
-
-#: ../../include/ItemObject.php:363
-msgid "Add to Calendar"
-msgstr "Aggiungi al calendario"
-
-#: ../../include/ItemObject.php:372
-msgid "Mark all seen"
-msgstr "Marca tutto come letto"
-
-#: ../../include/ItemObject.php:378 ../../mod/photos.php:1251
-msgctxt "noun"
-msgid "Likes"
-msgstr "Mi piace"
-
-#: ../../include/ItemObject.php:379 ../../mod/photos.php:1252
-msgctxt "noun"
-msgid "Dislikes"
-msgstr "Non mi piace"
-
-#: ../../include/ItemObject.php:384 ../../include/acl_selectors.php:252
-#: ../../mod/photos.php:1257
-msgid "Close"
-msgstr "Chiudi"
-
-#: ../../include/ItemObject.php:389 ../../include/conversation.php:740
-#: ../../include/conversation.php:1242 ../../mod/editblock.php:150
-#: ../../mod/editlayout.php:148 ../../mod/editpost.php:129
-#: ../../mod/editwebpage.php:190 ../../mod/photos.php:1068
-msgid "Please wait"
-msgstr "Attendere"
-
-#: ../../include/ItemObject.php:413 ../../include/js_strings.php:7
-msgid "[+] show all"
-msgstr "[+] mostra tutto"
-
-#: ../../include/ItemObject.php:700 ../../mod/photos.php:1084
-#: ../../mod/photos.php:1202
-msgid "This is you"
-msgstr "Questo sei tu"
-
-#: ../../include/ItemObject.php:702 ../../include/js_strings.php:6
-#: ../../mod/photos.php:1086 ../../mod/photos.php:1204
-msgid "Comment"
-msgstr "Commento"
-
-#: ../../include/ItemObject.php:703 ../../include/widgets.php:708
-#: ../../include/widgets.php:720 ../../include/js_strings.php:22
-#: ../../mod/appman.php:99 ../../mod/chat.php:190 ../../mod/chat.php:232
-#: ../../mod/connect.php:93 ../../mod/connedit.php:729
-#: ../../mod/events.php:468 ../../mod/events.php:665
-#: ../../mod/filestorage.php:156 ../../mod/fsuggest.php:108
-#: ../../mod/group.php:81 ../../mod/import.php:549
-#: ../../mod/import_items.php:116 ../../mod/invite.php:142
-#: ../../mod/locs.php:117 ../../mod/mail.php:380 ../../mod/mitem.php:231
-#: ../../mod/mood.php:135 ../../mod/pconfig.php:108 ../../mod/pdledit.php:62
-#: ../../mod/photos.php:672 ../../mod/photos.php:1047
-#: ../../mod/photos.php:1087 ../../mod/photos.php:1205 ../../mod/admin.php:457
-#: ../../mod/admin.php:646 ../../mod/admin.php:721 ../../mod/admin.php:986
-#: ../../mod/admin.php:1150 ../../mod/admin.php:1326 ../../mod/admin.php:1521
-#: ../../mod/admin.php:1606 ../../mod/admin.php:1770 ../../mod/poke.php:182
-#: ../../mod/profiles.php:687 ../../mod/rate.php:168
-#: ../../mod/settings.php:597 ../../mod/settings.php:710
-#: ../../mod/settings.php:738 ../../mod/settings.php:761
-#: ../../mod/settings.php:849 ../../mod/settings.php:1041
-#: ../../mod/setup.php:336 ../../mod/setup.php:377 ../../mod/sources.php:104
-#: ../../mod/sources.php:138 ../../mod/thing.php:312 ../../mod/thing.php:358
-#: ../../mod/xchan.php:11 ../../mod/cal.php:332
-#: ../../view/theme/redbasic/php/config.php:99
-msgid "Submit"
-msgstr "Salva"
-
-#: ../../include/ItemObject.php:704 ../../include/conversation.php:1214
-#: ../../mod/editblock.php:136 ../../mod/editlayout.php:135
-#: ../../mod/editpost.php:113 ../../mod/editwebpage.php:177
-msgid "Bold"
-msgstr "Grassetto"
-
-#: ../../include/ItemObject.php:705 ../../include/conversation.php:1215
-#: ../../mod/editblock.php:137 ../../mod/editlayout.php:136
-#: ../../mod/editpost.php:114 ../../mod/editwebpage.php:178
-msgid "Italic"
-msgstr "Corsivo"
-
-#: ../../include/ItemObject.php:706 ../../include/conversation.php:1216
-#: ../../mod/editblock.php:138 ../../mod/editlayout.php:137
-#: ../../mod/editpost.php:115 ../../mod/editwebpage.php:179
-msgid "Underline"
-msgstr "Sottolineato"
-
-#: ../../include/ItemObject.php:707 ../../include/conversation.php:1217
-#: ../../mod/editblock.php:139 ../../mod/editlayout.php:138
-#: ../../mod/editpost.php:116 ../../mod/editwebpage.php:180
-msgid "Quote"
-msgstr "Citazione"
-
-#: ../../include/ItemObject.php:708 ../../include/conversation.php:1218
-#: ../../mod/editblock.php:140 ../../mod/editlayout.php:139
-#: ../../mod/editpost.php:117 ../../mod/editwebpage.php:181
-msgid "Code"
-msgstr "Codice"
-
-#: ../../include/ItemObject.php:709
-msgid "Image"
-msgstr "Immagine"
-
-#: ../../include/ItemObject.php:710
-msgid "Insert Link"
-msgstr "Collegamento"
-
-#: ../../include/ItemObject.php:711
-msgid "Video"
-msgstr "Video"
-
-#: ../../include/ItemObject.php:712 ../../include/conversation.php:1184
-#: ../../include/page_widgets.php:40 ../../mod/editblock.php:171
-#: ../../mod/editpost.php:149 ../../mod/editwebpage.php:212
-#: ../../mod/events.php:465 ../../mod/photos.php:1088
-#: ../../mod/webpages.php:190
-msgid "Preview"
-msgstr "Anteprima"
-
-#: ../../include/ItemObject.php:715 ../../include/conversation.php:1272
-#: ../../mod/chat.php:200 ../../mod/editpost.php:157 ../../mod/mail.php:255
-#: ../../mod/mail.php:385
-msgid "Encrypt text"
-msgstr "Cifratura del messaggio"
-
-#: ../../include/Import/import_diaspora.php:17
-msgid "No username found in import file."
-msgstr "Impossibile trovare il nome utente nel file da importare."
-
-#: ../../include/Import/import_diaspora.php:42 ../../include/import.php:44
-msgid "Unable to create a unique channel address. Import failed."
-msgstr "Impossibile creare un indirizzo univoco per il canale. L'import è fallito."
-
-#: ../../include/Import/import_diaspora.php:143 ../../mod/import.php:509
-msgid "Import completed."
-msgstr "L'importazione è terminata con successo."
-
-#: ../../include/widgets.php:46 ../../include/contact_widgets.php:95
-#: ../../include/taxonomy.php:282
-msgid "Categories"
-msgstr "Categorie"
-
-#: ../../include/widgets.php:102 ../../include/nav.php:159
-#: ../../mod/apps.php:36
-msgid "Apps"
-msgstr "App"
-
-#: ../../include/widgets.php:103
-msgid "System"
-msgstr "Sistema"
-
-#: ../../include/widgets.php:105 ../../include/conversation.php:1541
-#: ../../mod/profiles.php:696
-msgid "Personal"
-msgstr "Personali"
-
-#: ../../include/widgets.php:106
-msgid "Create Personal App"
-msgstr "Crea app personale"
-
-#: ../../include/widgets.php:107
-msgid "Edit Personal App"
-msgstr "Modifica app personale"
-
-#: ../../include/widgets.php:147 ../../include/widgets.php:184
-#: ../../include/conversation.php:961 ../../include/identity.php:1008
-#: ../../include/Contact.php:101 ../../mod/directory.php:321
-#: ../../mod/match.php:64 ../../mod/suggest.php:52
-msgid "Connect"
-msgstr "Aggiungi"
-
-#: ../../include/widgets.php:149 ../../mod/suggest.php:54
-msgid "Ignore/Hide"
-msgstr "Ignora/nascondi"
-
-#: ../../include/widgets.php:154
-msgid "Suggestions"
-msgstr "Suggerimenti"
-
-#: ../../include/widgets.php:155
-msgid "See more..."
-msgstr "Altro..."
-
-#: ../../include/widgets.php:175
-#, php-format
-msgid "You have %1$.0f of %2$.0f allowed connections."
-msgstr "Hai attivato %1$.0f delle %2$.0f connessioni permesse."
-
-#: ../../include/widgets.php:181
-msgid "Add New Connection"
-msgstr "Aggiungi un contatto"
-
-#: ../../include/widgets.php:182
-msgid "Enter channel address"
-msgstr "Indirizzo del canale"
-
-#: ../../include/widgets.php:183
-msgid "Examples: bob@example.com, https://example.com/barbara"
-msgstr "Per esempio: bob@example.com, https://example.com/barbara"
-
-#: ../../include/widgets.php:199
-msgid "Notes"
-msgstr "Note"
-
-#: ../../include/widgets.php:201 ../../include/text.php:905
-#: ../../include/text.php:917 ../../mod/filer.php:49 ../../mod/admin.php:1687
-#: ../../mod/admin.php:1707 ../../mod/rbmark.php:28 ../../mod/rbmark.php:100
-msgid "Save"
-msgstr "Salva"
-
-#: ../../include/widgets.php:273
-msgid "Remove term"
-msgstr "Rimuovi termine"
-
-#: ../../include/widgets.php:281 ../../include/features.php:84
-msgid "Saved Searches"
-msgstr "Ricerche salvate"
-
-#: ../../include/widgets.php:282 ../../include/group.php:316
-msgid "add"
-msgstr "aggiungi"
-
-#: ../../include/widgets.php:310 ../../include/contact_widgets.php:57
-#: ../../include/features.php:97
-msgid "Saved Folders"
-msgstr "Cartelle salvate"
-
-#: ../../include/widgets.php:313 ../../include/contact_widgets.php:60
-#: ../../include/contact_widgets.php:98
-msgid "Everything"
-msgstr "Tutto"
-
-#: ../../include/widgets.php:354
-msgid "Archives"
-msgstr "Archivi"
-
-#: ../../include/widgets.php:444 ../../mod/connedit.php:589
-msgid "Me"
-msgstr "Me"
-
-#: ../../include/widgets.php:445 ../../mod/connedit.php:590
-msgid "Family"
-msgstr "Famiglia"
-
-#: ../../include/widgets.php:446 ../../include/profile_selectors.php:80
-#: ../../include/identity.php:389 ../../include/identity.php:390
-#: ../../include/identity.php:397 ../../mod/connedit.php:591
-#: ../../mod/settings.php:349 ../../mod/settings.php:353
-#: ../../mod/settings.php:354 ../../mod/settings.php:357
-#: ../../mod/settings.php:368
-msgid "Friends"
-msgstr "Amici"
-
-#: ../../include/widgets.php:447 ../../mod/connedit.php:592
-msgid "Acquaintances"
-msgstr "Conoscenti"
-
-#: ../../include/widgets.php:448 ../../mod/connections.php:88
-#: ../../mod/connections.php:103 ../../mod/connedit.php:593
-msgid "All"
-msgstr "Tutti"
-
-#: ../../include/widgets.php:467
-msgid "Refresh"
-msgstr "Aggiorna"
-
-#: ../../include/widgets.php:507
-msgid "Account settings"
-msgstr "Il tuo account"
-
-#: ../../include/widgets.php:513
-msgid "Channel settings"
-msgstr "Impostazioni del canale"
-
-#: ../../include/widgets.php:522
-msgid "Additional features"
-msgstr "Funzionalità opzionali"
-
-#: ../../include/widgets.php:529
-msgid "Feature/Addon settings"
-msgstr "Componenti aggiuntivi"
-
-#: ../../include/widgets.php:535
-msgid "Display settings"
-msgstr "Aspetto"
-
-#: ../../include/widgets.php:542
-msgid "Manage locations"
-msgstr "Gestione repliche"
-
-#: ../../include/widgets.php:551
-msgid "Export channel"
-msgstr "Esporta il canale"
-
-#: ../../include/widgets.php:558
-msgid "Connected apps"
-msgstr "App connesse"
-
-#: ../../include/widgets.php:565 ../../mod/connedit.php:701
-msgid "Connection Default Permissions"
-msgstr "Permessi predefiniti dei nuovi contatti"
-
-#: ../../include/widgets.php:573
-msgid "Premium Channel Settings"
-msgstr "Canale premium - impostazioni"
-
-#: ../../include/widgets.php:581 ../../include/features.php:71
-#: ../../mod/sources.php:88
-msgid "Channel Sources"
-msgstr "Sorgenti del canale"
-
-#: ../../include/widgets.php:589 ../../include/apps.php:134
-#: ../../include/nav.php:205 ../../mod/admin.php:1266 ../../mod/admin.php:1488
-msgid "Settings"
-msgstr "Impostazioni"
-
-#: ../../include/widgets.php:602
-msgid "Private Mail Menu"
-msgstr "Menu messaggi privati"
-
-#: ../../include/widgets.php:604
-msgid "Combined View"
-msgstr "Vista combinata"
-
-#: ../../include/widgets.php:609 ../../include/nav.php:193
-msgid "Inbox"
-msgstr "In arrivo"
-
-#: ../../include/widgets.php:614 ../../include/nav.php:194
-msgid "Outbox"
-msgstr "Inviati"
-
-#: ../../include/widgets.php:619 ../../include/nav.php:195
-msgid "New Message"
-msgstr "Nuovo messaggio"
-
-#: ../../include/widgets.php:636 ../../include/widgets.php:648
-msgid "Conversations"
-msgstr "Conversazioni"
-
-#: ../../include/widgets.php:640
-msgid "Received Messages"
-msgstr "Ricevuti"
-
-#: ../../include/widgets.php:644
-msgid "Sent Messages"
-msgstr "Inviati"
-
-#: ../../include/widgets.php:658
-msgid "No messages."
-msgstr "Nessun messaggio."
-
-#: ../../include/widgets.php:676
-msgid "Delete conversation"
-msgstr "Elimina la conversazione"
-
-#: ../../include/widgets.php:702
-msgid "Events Menu"
-msgstr "Menu eventi"
-
-#: ../../include/widgets.php:703
-msgid "Day View"
-msgstr "Eventi del giorno"
-
-#: ../../include/widgets.php:704
-msgid "Week View"
-msgstr "Eventi della settimana"
-
-#: ../../include/widgets.php:705
-msgid "Month View"
-msgstr "Eventi del mese"
-
-#: ../../include/widgets.php:706 ../../mod/events.php:661
-#: ../../mod/cal.php:328
-msgid "Export"
-msgstr "Esporta"
-
-#: ../../include/widgets.php:707 ../../mod/events.php:664
-#: ../../mod/cal.php:331
-msgid "Import"
-msgstr "Importa"
-
-#: ../../include/widgets.php:717
-msgid "Events Tools"
-msgstr "Gestione eventi"
-
-#: ../../include/widgets.php:718
-msgid "Export Calendar"
-msgstr "Esporta calendario"
-
-#: ../../include/widgets.php:719
-msgid "Import Calendar"
-msgstr "Importa calendario"
-
-#: ../../include/widgets.php:794 ../../include/conversation.php:1678
-#: ../../include/conversation.php:1681
-msgid "Chatrooms"
-msgstr "Chat"
-
-#: ../../include/widgets.php:798
-msgid "Overview"
-msgstr "Riepilogo"
-
-#: ../../include/widgets.php:805
-msgid "Chat Members"
-msgstr "Partecipanti"
-
-#: ../../include/widgets.php:828
-msgid "Bookmarked Chatrooms"
-msgstr "Chat nei segnalibri"
-
-#: ../../include/widgets.php:851
-msgid "Suggested Chatrooms"
-msgstr "Chat suggerite"
-
-#: ../../include/widgets.php:996 ../../include/widgets.php:1108
-msgid "photo/image"
-msgstr "foto/immagine"
-
-#: ../../include/widgets.php:1051
-msgid "Click to show more"
-msgstr "Clicca per mostrare tutto"
-
-#: ../../include/widgets.php:1202
-msgid "Rating Tools"
-msgstr "Valutazione"
-
-#: ../../include/widgets.php:1206 ../../include/widgets.php:1208
-msgid "Rate Me"
-msgstr "Valutami"
-
-#: ../../include/widgets.php:1211
-msgid "View Ratings"
-msgstr "Vedi le valutazioni ricevute"
-
-#: ../../include/widgets.php:1222 ../../mod/pubsites.php:18
-msgid "Public Hubs"
-msgstr "Hub pubblici"
-
-#: ../../include/widgets.php:1268
-msgid "Forums"
-msgstr "Forum"
-
-#: ../../include/widgets.php:1297
-msgid "Tasks"
-msgstr "Attività"
-
-#: ../../include/widgets.php:1306
-msgid "Documentation"
-msgstr "Guida"
-
-#: ../../include/widgets.php:1308
-msgid "Project/Site Information"
-msgstr "Informazioni sul sito/progetto"
-
-#: ../../include/widgets.php:1309
-msgid "For Members"
-msgstr "Per gli utenti"
-
-#: ../../include/widgets.php:1310
-msgid "For Administrators"
-msgstr "Per gli amministratori"
-
-#: ../../include/widgets.php:1311
-msgid "For Developers"
-msgstr "Per sviluppatori"
-
-#: ../../include/widgets.php:1334 ../../mod/admin.php:456
-msgid "Site"
-msgstr "Sito"
-
-#: ../../include/widgets.php:1335
-msgid "Accounts"
-msgstr "Account"
-
-#: ../../include/widgets.php:1335 ../../include/widgets.php:1373
-msgid "Member registrations waiting for confirmation"
-msgstr "Richieste in attesa di conferma"
-
-#: ../../include/widgets.php:1336 ../../mod/admin.php:1149
-msgid "Channels"
-msgstr "Canali"
-
-#: ../../include/widgets.php:1337 ../../mod/admin.php:710
-msgid "Security"
-msgstr "Sicurezza"
-
-#: ../../include/widgets.php:1338 ../../include/apps.php:152
-msgid "Features"
-msgstr "Funzionalità"
-
-#: ../../include/widgets.php:1339 ../../mod/admin.php:1264
-#: ../../mod/admin.php:1325
-msgid "Plugins"
-msgstr "Plugin"
-
-#: ../../include/widgets.php:1340 ../../mod/admin.php:1486
-#: ../../mod/admin.php:1520
-msgid "Themes"
-msgstr "Temi"
-
-#: ../../include/widgets.php:1341
-msgid "Inspect queue"
-msgstr "Coda di attesa"
-
-#: ../../include/widgets.php:1342 ../../mod/admin.php:1760
-msgid "Profile Fields"
-msgstr "Campi del profilo"
-
-#: ../../include/widgets.php:1343
-msgid "DB updates"
-msgstr "Aggiornamenti al DB"
-
-#: ../../include/widgets.php:1361 ../../include/widgets.php:1371
-#: ../../mod/admin.php:1605
-msgid "Logs"
-msgstr "Log"
-
-#: ../../include/widgets.php:1368 ../../include/nav.php:213
-msgid "Admin"
-msgstr "Amministrazione"
-
-#: ../../include/widgets.php:1369
-msgid "Plugin Features"
-msgstr "Plugin"
-
-#: ../../include/widgets.php:1451 ../../mod/photos.php:787
-#: ../../mod/photos.php:1328
-msgid "View Photo"
-msgstr "Guarda la foto"
-
-#: ../../include/widgets.php:1468 ../../mod/photos.php:818
-msgid "Edit Album"
-msgstr "Modifica album"
-
-#: ../../include/activities.php:42
-msgid " and "
-msgstr "e"
-
-#: ../../include/activities.php:50
-msgid "public profile"
-msgstr "profilo pubblico"
-
-#: ../../include/activities.php:59
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s ha cambiato %2$s in &ldquo;%3$s&rdquo;"
-
-#: ../../include/activities.php:60
-#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Guarda %2$s di %1$s "
-
-#: ../../include/activities.php:63
-#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s ha aggiornato %2$s cambiando %3$s."
-
-#: ../../include/api.php:1336
-msgid "Public Timeline"
-msgstr "Diario pubblico"
-
-#: ../../include/apps.php:128
-msgid "Site Admin"
-msgstr "Amministrazione sito"
-
-#: ../../include/apps.php:129 ../../include/conversation.php:1691
-#: ../../include/nav.php:102
-msgid "Bookmarks"
-msgstr "Segnalibri"
-
-#: ../../include/apps.php:130
-msgid "Address Book"
-msgstr "Rubrica"
-
-#: ../../include/apps.php:131 ../../include/nav.php:110 ../../boot.php:1580
-msgid "Login"
-msgstr "Accedi"
-
-#: ../../include/apps.php:132 ../../include/nav.php:203
-#: ../../mod/manage.php:158
-msgid "Channel Manager"
-msgstr "Gestione canali"
-
-#: ../../include/apps.php:133 ../../include/nav.php:176
-msgid "Grid"
-msgstr "Rete"
-
-#: ../../include/apps.php:136 ../../include/conversation.php:1701
-#: ../../include/nav.php:106 ../../mod/webpages.php:180
-msgid "Webpages"
-msgstr "Pagine web"
-
-#: ../../include/apps.php:137 ../../include/nav.php:179
-msgid "Channel Home"
-msgstr "Bacheca del canale"
-
-#: ../../include/apps.php:138 ../../include/identity.php:1389
-#: ../../mod/profperm.php:112
-msgid "Profile"
-msgstr "Profilo"
-
-#: ../../include/apps.php:139 ../../include/conversation.php:1647
-#: ../../include/nav.php:92 ../../mod/fbrowser.php:25
-msgid "Photos"
-msgstr "Foto"
-
-#: ../../include/apps.php:140 ../../include/conversation.php:1664
-#: ../../include/conversation.php:1667 ../../include/nav.php:198
-msgid "Events"
-msgstr "Eventi"
-
-#: ../../include/apps.php:141 ../../include/nav.php:164
-msgid "Directory"
-msgstr "Elenchi pubblici dei canali"
-
-#: ../../include/apps.php:142 ../../include/nav.php:155 ../../mod/help.php:222
-#: ../../mod/help.php:227 ../../mod/layouts.php:176
-msgid "Help"
-msgstr "Guida"
-
-#: ../../include/apps.php:143 ../../include/nav.php:190
-msgid "Mail"
-msgstr "Messaggi"
-
-#: ../../include/apps.php:144 ../../mod/mood.php:131
-msgid "Mood"
-msgstr "Umore"
-
-#: ../../include/apps.php:145 ../../include/conversation.php:965
-#: ../../mod/poke.php:164
-msgid "Poke"
-msgstr "Poke"
-
-#: ../../include/apps.php:146 ../../include/nav.php:96
-msgid "Chat"
-msgstr "Chat"
-
-#: ../../include/apps.php:147 ../../include/nav.php:161
-#: ../../include/text.php:904 ../../include/text.php:916
-#: ../../mod/connections.php:302 ../../mod/search.php:40
-msgid "Search"
-msgstr "Cerca"
-
-#: ../../include/apps.php:148
-msgid "Probe"
-msgstr "Diagnostica"
-
-#: ../../include/apps.php:149
-msgid "Suggest"
-msgstr "Suggerisci"
-
-#: ../../include/apps.php:150
-msgid "Random Channel"
-msgstr "Canale casuale"
-
-#: ../../include/apps.php:151
-msgid "Invite"
-msgstr "Invita"
-
-#: ../../include/apps.php:153 ../../mod/id.php:28
-msgid "Language"
-msgstr "Lingua"
-
-#: ../../include/apps.php:154
-msgid "Post"
-msgstr "Post"
-
-#: ../../include/apps.php:155 ../../mod/id.php:17 ../../mod/id.php:18
-#: ../../mod/id.php:19
-msgid "Profile Photo"
-msgstr "Foto del profilo"
-
-#: ../../include/apps.php:252 ../../mod/settings.php:84
-#: ../../mod/settings.php:623
-msgid "Update"
-msgstr "Aggiorna"
-
-#: ../../include/apps.php:252
-msgid "Install"
-msgstr "Installa"
-
-#: ../../include/apps.php:257
-msgid "Purchase"
-msgstr "Acquista"
-
-#: ../../include/auth.php:105
-msgid "Logged out."
-msgstr "Uscita effettuata."
-
-#: ../../include/auth.php:246
-msgid "Failed authentication"
-msgstr "Autenticazione fallita"
-
-#: ../../include/auth.php:260 ../../mod/openid.php:189
-msgid "Login failed."
-msgstr "Accesso fallito."
-
-#: ../../include/bbcode.php:123 ../../include/bbcode.php:803
-#: ../../include/bbcode.php:806 ../../include/bbcode.php:811
-#: ../../include/bbcode.php:814 ../../include/bbcode.php:817
-#: ../../include/bbcode.php:820 ../../include/bbcode.php:825
-#: ../../include/bbcode.php:828 ../../include/bbcode.php:833
-#: ../../include/bbcode.php:836 ../../include/bbcode.php:839
-#: ../../include/bbcode.php:842
-msgid "Image/photo"
-msgstr "Immagine"
-
-#: ../../include/bbcode.php:162 ../../include/bbcode.php:853
-msgid "Encrypted content"
-msgstr "Contenuto cifrato"
-
-#: ../../include/bbcode.php:179
-#, php-format
-msgid "Install %s element: "
-msgstr "Installa l'elemento %s:"
-
-#: ../../include/bbcode.php:183
-#, php-format
-msgid ""
-"This post contains an installable %s element, however you lack permissions "
-"to install it on this site."
-msgstr "Questo post contiene un elemento %s installabile, tuttavia non hai i permessi necessari per l'installazione."
-
-#: ../../include/bbcode.php:193 ../../mod/impel.php:37
-msgid "webpage"
-msgstr "pagina web"
-
-#: ../../include/bbcode.php:196 ../../mod/impel.php:47
-msgid "layout"
-msgstr "layout"
-
-#: ../../include/bbcode.php:199 ../../mod/impel.php:42
-msgid "block"
-msgstr "block"
-
-#: ../../include/bbcode.php:202 ../../mod/impel.php:54
-msgid "menu"
-msgstr "menu"
-
-#: ../../include/bbcode.php:257
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s ha scritto %2$s %3$s"
-
-#: ../../include/bbcode.php:259 ../../mod/tagger.php:51
-msgid "post"
-msgstr "il post"
-
-#: ../../include/bbcode.php:547
-msgid "Different viewers will see this text differently"
-msgstr "Ad altri questo testo potrebbe apparire in modo differente"
-
-#: ../../include/bbcode.php:764
-msgid "$1 spoiler"
-msgstr "$1 spoiler"
-
-#: ../../include/bbcode.php:791
-msgid "$1 wrote:"
-msgstr "$1 ha scritto:"
-
-#: ../../include/bb2diaspora.php:376
-msgid "Attachments:"
-msgstr "Allegati:"
-
-#: ../../include/bb2diaspora.php:465 ../../include/event.php:22
-#: ../../include/text.php:1437
-msgid "l F d, Y \\@ g:i A"
-msgstr "l d F Y \\@ G:i"
-
-#: ../../include/bb2diaspora.php:467
-msgid "$Projectname event notification:"
-msgstr "Notifica evento $Projectname:"
-
-#: ../../include/bb2diaspora.php:471 ../../include/event.php:30
-#: ../../include/text.php:1441
-msgid "Starts:"
-msgstr "Inizio:"
-
-#: ../../include/bb2diaspora.php:479 ../../include/event.php:40
-#: ../../include/text.php:1445
-msgid "Finishes:"
-msgstr "Fine:"
-
-#: ../../include/bb2diaspora.php:487 ../../include/event.php:52
-#: ../../include/identity.php:1023 ../../include/text.php:1452
-#: ../../mod/directory.php:307
-msgid "Location:"
-msgstr "Luogo:"
-
-#: ../../include/bookmarks.php:35
-#, php-format
-msgid "%1$s's bookmarks"
-msgstr "I segnalibri di %1$s"
-
-#: ../../include/zot.php:680
-msgid "Invalid data packet"
-msgstr "Dati ricevuti non validi"
-
-#: ../../include/zot.php:696
-msgid "Unable to verify channel signature"
-msgstr "Impossibile verificare la firma elettronica del canale"
-
-#: ../../include/zot.php:2332
-#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Impossibile verificare la firma elettronica del sito %s"
-
-#: ../../include/zot.php:3670
-msgid "invalid target signature"
-msgstr "la firma ricevuta non è valida"
-
-#: ../../include/contact_widgets.php:14
-#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "%d invito disponibile"
-msgstr[1] "%d inviti disponibili"
-
-#: ../../include/contact_widgets.php:19 ../../mod/admin.php:461
-msgid "Advanced"
-msgstr "Avanzate"
-
-#: ../../include/contact_widgets.php:22
-msgid "Find Channels"
-msgstr "Ricerca canali"
-
-#: ../../include/contact_widgets.php:23
-msgid "Enter name or interest"
-msgstr "Scrivi un nome o un interesse"
-
-#: ../../include/contact_widgets.php:24
-msgid "Connect/Follow"
-msgstr "Aggiungi"
-
-#: ../../include/contact_widgets.php:25
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Per esempio: Mario Rossi, Pesca"
-
-#: ../../include/contact_widgets.php:26 ../../mod/connections.php:305
-#: ../../mod/directory.php:384 ../../mod/directory.php:389
-msgid "Find"
-msgstr "Cerca"
-
-#: ../../include/contact_widgets.php:27 ../../mod/directory.php:388
-#: ../../mod/suggest.php:60
-msgid "Channel Suggestions"
-msgstr "Canali suggeriti"
-
-#: ../../include/contact_widgets.php:29
-msgid "Random Profile"
-msgstr "Profilo casuale"
-
-#: ../../include/contact_widgets.php:30
-msgid "Invite Friends"
-msgstr "Invita amici"
-
-#: ../../include/contact_widgets.php:32
-msgid "Advanced example: name=fred and country=iceland"
-msgstr "Per esempio: name=mario e country=italy"
-
-#: ../../include/contact_widgets.php:128
-#, php-format
-msgid "%d connection in common"
-msgid_plural "%d connections in common"
-msgstr[0] "%d contatto in comune"
-msgstr[1] "%d contatti in comune"
-
-#: ../../include/contact_widgets.php:133
-msgid "show more"
-msgstr "mostra tutto"
-
-#: ../../include/dir_fns.php:139
-msgid "Directory Options"
-msgstr "Visibilità negli elenchi pubblici"
-
-#: ../../include/dir_fns.php:141
-msgid "Safe Mode"
-msgstr "Modalità SafeSearch"
-
-#: ../../include/dir_fns.php:141 ../../include/dir_fns.php:142
-#: ../../include/dir_fns.php:143 ../../mod/api.php:102
-#: ../../mod/connedit.php:375 ../../mod/connedit.php:653
-#: ../../mod/events.php:454 ../../mod/events.php:455 ../../mod/events.php:464
-#: ../../mod/filestorage.php:151 ../../mod/filestorage.php:159
-#: ../../mod/menu.php:96 ../../mod/menu.php:153 ../../mod/mitem.php:154
-#: ../../mod/mitem.php:155 ../../mod/mitem.php:228 ../../mod/mitem.php:229
-#: ../../mod/photos.php:661 ../../mod/admin.php:425 ../../mod/profiles.php:647
-#: ../../mod/removeme.php:60 ../../mod/settings.php:588
-#: ../../view/theme/redbasic/php/config.php:105
-#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1584
-msgid "No"
-msgstr "No"
-
-#: ../../include/dir_fns.php:141 ../../include/dir_fns.php:142
-#: ../../include/dir_fns.php:143 ../../mod/api.php:101
-#: ../../mod/connedit.php:375 ../../mod/events.php:454
-#: ../../mod/events.php:455 ../../mod/events.php:464
-#: ../../mod/filestorage.php:151 ../../mod/filestorage.php:159
-#: ../../mod/menu.php:96 ../../mod/menu.php:153 ../../mod/mitem.php:154
-#: ../../mod/mitem.php:155 ../../mod/mitem.php:228 ../../mod/mitem.php:229
-#: ../../mod/photos.php:661 ../../mod/admin.php:427 ../../mod/profiles.php:647
-#: ../../mod/removeme.php:60 ../../mod/settings.php:588
-#: ../../view/theme/redbasic/php/config.php:105
-#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1584
-msgid "Yes"
-msgstr "Sì"
-
-#: ../../include/dir_fns.php:142
-msgid "Public Forums Only"
-msgstr "Solo forum pubblici"
-
-#: ../../include/dir_fns.php:143
-msgid "This Website Only"
-msgstr "Solo in questo sito"
-
-#: ../../include/enotify.php:57 ../../include/network.php:1827
-msgid "$Projectname Notification"
-msgstr "Notifica $Projectname"
-
-#: ../../include/enotify.php:58 ../../include/network.php:1828
-msgid "$projectname"
-msgstr "$projectname"
-
-#: ../../include/enotify.php:60 ../../include/network.php:1830
-msgid "Thank You,"
-msgstr "Grazie,"
-
-#: ../../include/enotify.php:62 ../../include/network.php:1832
-#, php-format
-msgid "%s Administrator"
-msgstr "L'amministratore di %s"
-
-#: ../../include/enotify.php:96
-#, php-format
-msgid "%s <!item_type!>"
-msgstr "%s <!item_type!>"
-
-#: ../../include/enotify.php:100
-#, php-format
-msgid "[Hubzilla:Notify] New mail received at %s"
-msgstr "[Hubzilla] Nuovo messaggio su %s"
-
-#: ../../include/enotify.php:102
-#, php-format
-msgid "%1$s, %2$s sent you a new private message at %3$s."
-msgstr "%1$s, %2$s ti ha mandato un messaggio privato su %3$s."
-
-#: ../../include/enotify.php:103
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s ti ha mandato %2$s."
-
-#: ../../include/enotify.php:103
-msgid "a private message"
-msgstr "un messaggio privato"
-
-#: ../../include/enotify.php:104
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Visita %s per leggere i tuoi messaggi privati e rispondere."
-
-#: ../../include/enotify.php:160
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
-msgstr "%1$s, %2$s ha commentato [zrl=%3$s]%4$s[/zrl]"
-
-#: ../../include/enotify.php:168
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
-msgstr "%1$s, %2$s ha commentato [zrl=%3$s]%5$s di %4$s[/zrl]"
-
-#: ../../include/enotify.php:177
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s ha commentato [zrl=%3$s]%4$s che hai creato[/zrl]"
-
-#: ../../include/enotify.php:188
-#, php-format
-msgid "[Hubzilla:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Hubzilla] Nuovo commento di %2$s alla conversazione #%1$d"
-
-#: ../../include/enotify.php:189
-#, php-format
-msgid "%1$s, %2$s commented on an item/conversation you have been following."
-msgstr "%1$s, %2$s ha commentato un elemento che stavi seguendo."
-
-#: ../../include/enotify.php:192 ../../include/enotify.php:207
-#: ../../include/enotify.php:233 ../../include/enotify.php:251
-#: ../../include/enotify.php:265
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Visita %s per leggere o commentare la conversazione."
-
-#: ../../include/enotify.php:198
-#, php-format
-msgid "[Hubzilla:Notify] %s posted to your profile wall"
-msgstr "[Hubzilla] %s ha scritto sulla tua bacheca"
-
-#: ../../include/enotify.php:200
-#, php-format
-msgid "%1$s, %2$s posted to your profile wall at %3$s"
-msgstr "%1$s, %2$s ha scritto sulla bacheca del tuo profilo su %3$s"
-
-#: ../../include/enotify.php:202
-#, php-format
-msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
-msgstr "%1$s, %2$s ha scritto sulla [zrl=%3$s]tua bacheca[/zrl]"
-
-#: ../../include/enotify.php:226
-#, php-format
-msgid "[Hubzilla:Notify] %s tagged you"
-msgstr "[Hubzilla] %s ti ha taggato"
-
-#: ../../include/enotify.php:227
-#, php-format
-msgid "%1$s, %2$s tagged you at %3$s"
-msgstr "%1$s, %2$s ti ha taggato su %3$s"
-
-#: ../../include/enotify.php:228
-#, php-format
-msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%3$s]ti ha taggato[/zrl]."
-
-#: ../../include/enotify.php:240
-#, php-format
-msgid "[Hubzilla:Notify] %1$s poked you"
-msgstr "[Hubzilla] %1$s ti ha mandato un poke"
-
-#: ../../include/enotify.php:241
-#, php-format
-msgid "%1$s, %2$s poked you at %3$s"
-msgstr "%1$s, %2$s ti ha mandato un poke su %3$s"
-
-#: ../../include/enotify.php:242
-#, php-format
-msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%2$s]ti ha mandato un poke[/zrl]."
-
-#: ../../include/enotify.php:258
-#, php-format
-msgid "[Hubzilla:Notify] %s tagged your post"
-msgstr "[Hubzilla] %s ha taggato il tuo post"
-
-#: ../../include/enotify.php:259
-#, php-format
-msgid "%1$s, %2$s tagged your post at %3$s"
-msgstr "%1$s, %2$s ha taggato il tuo post su %3$s"
-
-#: ../../include/enotify.php:260
-#, php-format
-msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
-msgstr "%1$s, %2$s ha taggato [zrl=%3$s]il tuo post[/zrl]"
-
-#: ../../include/enotify.php:272
-msgid "[Hubzilla:Notify] Introduction received"
-msgstr "[Hubzilla] Hai una richiesta di amicizia"
-
-#: ../../include/enotify.php:273
-#, php-format
-msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
-msgstr "%1$s, hai ricevuto una richiesta di entrare in contatto da '%2$s' su %3$s"
-
-#: ../../include/enotify.php:274
-#, php-format
+#: ../../Zotlabs/Zot/Auth.php:138
msgid ""
-"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
-msgstr "%1$s, hai ricevuto una [zrl=%2$s]richiesta di entrare in contatto[/zrl] da %3$s."
-
-#: ../../include/enotify.php:278 ../../include/enotify.php:297
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "Puoi visitare il suo profilo su %s"
-
-#: ../../include/enotify.php:280
-#, php-format
-msgid "Please visit %s to approve or reject the connection request."
-msgstr "Visita %s per approvare o rifiutare la richiesta di entrare in contatto."
-
-#: ../../include/enotify.php:287
-msgid "[Hubzilla:Notify] Friend suggestion received"
-msgstr "[Hubzilla] Ti è stato suggerito un amico"
-
-#: ../../include/enotify.php:288
-#, php-format
-msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
-msgstr "%1$s, ti è stato suggerito un amico da '%2$s' su %3$s"
-
-#: ../../include/enotify.php:289
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
-"%4$s."
-msgstr "%1$s, %4$s ti [zrl=%2$s]ha suggerito %3$s[/zrl] come amico."
-
-#: ../../include/enotify.php:295
-msgid "Name:"
-msgstr "Nome:"
-
-#: ../../include/enotify.php:296
-msgid "Photo:"
-msgstr "Foto:"
-
-#: ../../include/enotify.php:299
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Visita %s per approvare o rifiutare il suggerimento."
-
-#: ../../include/enotify.php:514
-msgid "[Hubzilla:Notify]"
-msgstr "[Hubzilla]"
-
-#: ../../include/conversation.php:120 ../../include/text.php:1967
-#: ../../mod/like.php:367 ../../mod/subthread.php:83 ../../mod/tagger.php:43
-msgid "photo"
-msgstr "la foto"
-
-#: ../../include/conversation.php:123 ../../include/event.php:915
-#: ../../include/text.php:1970 ../../mod/events.php:249 ../../mod/like.php:369
-#: ../../mod/tagger.php:47
-msgid "event"
-msgstr "l'evento"
-
-#: ../../include/conversation.php:126 ../../mod/like.php:113
-msgid "channel"
-msgstr "il canale"
-
-#: ../../include/conversation.php:148 ../../include/text.php:1973
-#: ../../mod/like.php:367 ../../mod/subthread.php:83
-msgid "status"
-msgstr "il messaggio di stato"
-
-#: ../../include/conversation.php:150 ../../include/text.php:1975
-#: ../../mod/tagger.php:53
-msgid "comment"
-msgstr "il commento"
-
-#: ../../include/conversation.php:164 ../../mod/like.php:416
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "A %1$s piace %3$s di %2$s"
-
-#: ../../include/conversation.php:167 ../../mod/like.php:418
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr "A %1$s non piace %3$s di %2$s"
-
-#: ../../include/conversation.php:204
-#, php-format
-msgid "%1$s is now connected with %2$s"
-msgstr "%1$s adesso è connesso con %2$s"
-
-#: ../../include/conversation.php:239
-#, php-format
-msgid "%1$s poked %2$s"
-msgstr "%1$s ha mandato un poke a %2$s"
-
-#: ../../include/conversation.php:243 ../../include/text.php:992
-#: ../../include/text.php:997
-msgid "poked"
-msgstr "ha mandato un poke"
-
-#: ../../include/conversation.php:260 ../../mod/mood.php:63
-#, php-format
-msgctxt "mood"
-msgid "%1$s is %2$s"
-msgstr "%1$s è %2$s"
-
-#: ../../include/conversation.php:574 ../../mod/photos.php:1102
-msgctxt "title"
-msgid "Likes"
-msgstr "Mi piace"
-
-#: ../../include/conversation.php:574 ../../mod/photos.php:1102
-msgctxt "title"
-msgid "Dislikes"
-msgstr "Non mi piace"
-
-#: ../../include/conversation.php:575 ../../mod/photos.php:1103
-msgctxt "title"
-msgid "Agree"
-msgstr "D'accordo"
-
-#: ../../include/conversation.php:575 ../../mod/photos.php:1103
-msgctxt "title"
-msgid "Disagree"
-msgstr "Non d'accordo"
-
-#: ../../include/conversation.php:575 ../../mod/photos.php:1103
-msgctxt "title"
-msgid "Abstain"
-msgstr "Astenuti"
-
-#: ../../include/conversation.php:576 ../../mod/photos.php:1104
-msgctxt "title"
-msgid "Attending"
-msgstr "Partecipano"
-
-#: ../../include/conversation.php:576 ../../mod/photos.php:1104
-msgctxt "title"
-msgid "Not attending"
-msgstr "Non partecipano"
-
-#: ../../include/conversation.php:576 ../../mod/photos.php:1104
-msgctxt "title"
-msgid "Might attend"
-msgstr "Forse partecipano"
-
-#: ../../include/conversation.php:691
-#, php-format
-msgid "View %s's profile @ %s"
-msgstr "Vedi il profilo di %s @ %s"
-
-#: ../../include/conversation.php:710
-msgid "Categories:"
-msgstr "Categorie:"
-
-#: ../../include/conversation.php:711
-msgid "Filed under:"
-msgstr "Classificato come:"
-
-#: ../../include/conversation.php:738
-msgid "View in context"
-msgstr "Vedi nel contesto"
-
-#: ../../include/conversation.php:850
-msgid "remove"
-msgstr "rimuovi"
-
-#: ../../include/conversation.php:854 ../../include/nav.php:244
-msgid "Loading..."
-msgstr "Caricamento in corso..."
-
-#: ../../include/conversation.php:855
-msgid "Delete Selected Items"
-msgstr "Elimina gli oggetti selezionati"
-
-#: ../../include/conversation.php:953
-msgid "View Source"
-msgstr "Vedi il sorgente"
-
-#: ../../include/conversation.php:954
-msgid "Follow Thread"
-msgstr "Segui la discussione"
-
-#: ../../include/conversation.php:955
-msgid "Unfollow Thread"
-msgstr "Non seguire la discussione"
-
-#: ../../include/conversation.php:959 ../../include/nav.php:86
-#: ../../mod/connedit.php:516
-msgid "View Profile"
-msgstr "Profilo"
-
-#: ../../include/conversation.php:960
-msgid "Activity/Posts"
-msgstr "Attività e Post"
-
-#: ../../include/conversation.php:962
-msgid "Edit Connection"
-msgstr "Modifica il contatto"
-
-#: ../../include/conversation.php:963
-msgid "Message"
-msgstr "Messaggio"
-
-#: ../../include/conversation.php:964 ../../mod/pubsites.php:27
-#: ../../mod/ratings.php:99
-msgid "Ratings"
-msgstr "Valutazioni"
-
-#: ../../include/conversation.php:1080
-#, php-format
-msgid "%s likes this."
-msgstr "Piace a %s."
-
-#: ../../include/conversation.php:1080
-#, php-format
-msgid "%s doesn't like this."
-msgstr "Non piace a %s."
-
-#: ../../include/conversation.php:1084
-#, php-format
-msgid "<span %1$s>%2$d people</span> like this."
-msgid_plural "<span %1$s>%2$d people</span> like this."
-msgstr[0] ""
-msgstr[1] "Piace a <span %1$s>%2$d persone</span>."
-
-#: ../../include/conversation.php:1086
-#, php-format
-msgid "<span %1$s>%2$d people</span> don't like this."
-msgid_plural "<span %1$s>%2$d people</span> don't like this."
-msgstr[0] ""
-msgstr[1] "Non piace a <span %1$s>%2$d persone</span>."
-
-#: ../../include/conversation.php:1092
-msgid "and"
-msgstr "e"
-
-#: ../../include/conversation.php:1095
-#, php-format
-msgid ", and %d other people"
-msgid_plural ", and %d other people"
-msgstr[0] ""
-msgstr[1] "e altre %d persone"
-
-#: ../../include/conversation.php:1096
-#, php-format
-msgid "%s like this."
-msgstr "Piace a %s."
-
-#: ../../include/conversation.php:1096
-#, php-format
-msgid "%s don't like this."
-msgstr "Non piace a %s."
-
-#: ../../include/conversation.php:1169
-msgid "Visible to <strong>everybody</strong>"
-msgstr "Visibile a <strong>tutti</strong>"
-
-#: ../../include/conversation.php:1170 ../../mod/chat.php:199
-#: ../../mod/mail.php:202 ../../mod/mail.php:316
-msgid "Please enter a link URL:"
-msgstr "Inserisci l'indirizzo del link:"
-
-#: ../../include/conversation.php:1171
-msgid "Please enter a video link/URL:"
-msgstr "Inserisci l'indirizzo del video:"
-
-#: ../../include/conversation.php:1172
-msgid "Please enter an audio link/URL:"
-msgstr "Inserisci l'indirizzo dell'audio:"
-
-#: ../../include/conversation.php:1173
-msgid "Tag term:"
-msgstr "Tag:"
-
-#: ../../include/conversation.php:1174 ../../mod/filer.php:48
-msgid "Save to Folder:"
-msgstr "Salva nella cartella:"
-
-#: ../../include/conversation.php:1175
-msgid "Where are you right now?"
-msgstr "Dove sei ora?"
-
-#: ../../include/conversation.php:1176 ../../mod/editpost.php:56
-#: ../../mod/mail.php:203 ../../mod/mail.php:317
-msgid "Expires YYYY-MM-DD HH:MM"
-msgstr "Scade il YYYY-MM-DD HH:MM"
-
-#: ../../include/conversation.php:1207 ../../mod/blocks.php:154
-#: ../../mod/layouts.php:184 ../../mod/photos.php:1067
-#: ../../mod/webpages.php:184
-msgid "Share"
-msgstr "Condividi"
-
-#: ../../include/conversation.php:1209
-msgid "Page link name"
-msgstr "Nome del link alla pagina"
-
-#: ../../include/conversation.php:1212
-msgid "Post as"
-msgstr "Pubblica come "
-
-#: ../../include/conversation.php:1219 ../../mod/editblock.php:142
-#: ../../mod/editlayout.php:140 ../../mod/editpost.php:118
-#: ../../mod/editwebpage.php:182
-msgid "Upload photo"
-msgstr "Carica foto"
-
-#: ../../include/conversation.php:1220
-msgid "upload photo"
-msgstr "carica foto"
-
-#: ../../include/conversation.php:1221 ../../mod/editblock.php:143
-#: ../../mod/editlayout.php:141 ../../mod/editpost.php:119
-#: ../../mod/editwebpage.php:183 ../../mod/mail.php:248 ../../mod/mail.php:378
-msgid "Attach file"
-msgstr "Allega file"
-
-#: ../../include/conversation.php:1222
-msgid "attach file"
-msgstr "allega file"
-
-#: ../../include/conversation.php:1223 ../../mod/chat.php:201
-#: ../../mod/editblock.php:144 ../../mod/editlayout.php:142
-#: ../../mod/editpost.php:120 ../../mod/editwebpage.php:184
-#: ../../mod/mail.php:249 ../../mod/mail.php:379
-msgid "Insert web link"
-msgstr "Inserisci un indirizzo web"
-
-#: ../../include/conversation.php:1224
-msgid "web link"
-msgstr "link web"
-
-#: ../../include/conversation.php:1225
-msgid "Insert video link"
-msgstr "Inserisci l'indirizzo del video"
-
-#: ../../include/conversation.php:1226
-msgid "video link"
-msgstr "link video"
-
-#: ../../include/conversation.php:1227
-msgid "Insert audio link"
-msgstr "Inserisci l'indirizzo dell'audio"
-
-#: ../../include/conversation.php:1228
-msgid "audio link"
-msgstr "link audio"
-
-#: ../../include/conversation.php:1229 ../../mod/editblock.php:148
-#: ../../mod/editlayout.php:146 ../../mod/editpost.php:124
-#: ../../mod/editwebpage.php:188
-msgid "Set your location"
-msgstr "La tua località"
-
-#: ../../include/conversation.php:1230
-msgid "set location"
-msgstr "la tua località"
-
-#: ../../include/conversation.php:1231 ../../mod/editpost.php:126
-msgid "Toggle voting"
-msgstr "Abilita/disabilita il voto"
-
-#: ../../include/conversation.php:1234 ../../mod/editblock.php:149
-#: ../../mod/editlayout.php:147 ../../mod/editpost.php:125
-#: ../../mod/editwebpage.php:189
-msgid "Clear browser location"
-msgstr "Rimuovi la località data dal browser"
-
-#: ../../include/conversation.php:1235
-msgid "clear location"
-msgstr "rimuovi la località"
-
-#: ../../include/conversation.php:1237 ../../mod/editblock.php:162
-#: ../../mod/editpost.php:141 ../../mod/editwebpage.php:205
-msgid "Title (optional)"
-msgstr "Titolo (facoltativo)"
-
-#: ../../include/conversation.php:1241 ../../mod/editblock.php:165
-#: ../../mod/editlayout.php:163 ../../mod/editpost.php:143
-#: ../../mod/editwebpage.php:207
-msgid "Categories (optional, comma-separated list)"
-msgstr "Categorie (facoltative, lista separata da virgole)"
-
-#: ../../include/conversation.php:1243 ../../mod/editblock.php:151
-#: ../../mod/editlayout.php:149 ../../mod/editpost.php:130
-#: ../../mod/editwebpage.php:191 ../../mod/events.php:466
-msgid "Permission settings"
-msgstr "Permessi dei tuoi contatti"
-
-#: ../../include/conversation.php:1244
-msgid "permissions"
-msgstr "permessi"
-
-#: ../../include/conversation.php:1252 ../../mod/editblock.php:159
-#: ../../mod/editlayout.php:156 ../../mod/editpost.php:138
-#: ../../mod/editwebpage.php:200
-msgid "Public post"
-msgstr "Post pubblico"
-
-#: ../../include/conversation.php:1254 ../../mod/editblock.php:166
-#: ../../mod/editlayout.php:164 ../../mod/editpost.php:144
-#: ../../mod/editwebpage.php:208
-msgid "Example: bob@example.com, mary@example.com"
-msgstr "Per esempio: mario@esempio.com, simona@esempio.com"
-
-#: ../../include/conversation.php:1267 ../../mod/editblock.php:176
-#: ../../mod/editlayout.php:173 ../../mod/editpost.php:155
-#: ../../mod/editwebpage.php:217 ../../mod/mail.php:253 ../../mod/mail.php:383
-msgid "Set expiration date"
-msgstr "Data di scadenza"
-
-#: ../../include/conversation.php:1270
-msgid "Set publish date"
-msgstr "Data di uscita programmata"
-
-#: ../../include/conversation.php:1274 ../../mod/editpost.php:159
-msgid "OK"
-msgstr "OK"
-
-#: ../../include/conversation.php:1275 ../../mod/editpost.php:160
-#: ../../mod/fbrowser.php:77 ../../mod/fbrowser.php:112
-#: ../../mod/settings.php:598 ../../mod/settings.php:624
-#: ../../mod/tagrm.php:11 ../../mod/tagrm.php:134
-msgid "Cancel"
-msgstr "Annulla"
-
-#: ../../include/conversation.php:1518
-msgid "Discover"
-msgstr "Scopri"
-
-#: ../../include/conversation.php:1521
-msgid "Imported public streams"
-msgstr "Contenuti pubblici importati"
-
-#: ../../include/conversation.php:1526
-msgid "Commented Order"
-msgstr "Commenti recenti"
-
-#: ../../include/conversation.php:1529
-msgid "Sort by Comment Date"
-msgstr "Per data del commento"
-
-#: ../../include/conversation.php:1533
-msgid "Posted Order"
-msgstr "Post recenti"
-
-#: ../../include/conversation.php:1536
-msgid "Sort by Post Date"
-msgstr "Per data di creazione"
-
-#: ../../include/conversation.php:1544
-msgid "Posts that mention or involve you"
-msgstr "Post che ti riguardano"
-
-#: ../../include/conversation.php:1550 ../../mod/connections.php:72
-#: ../../mod/connections.php:82 ../../mod/menu.php:112
-msgid "New"
-msgstr "Novità"
-
-#: ../../include/conversation.php:1553
-msgid "Activity Stream - by date"
-msgstr "Elenco attività - per data"
-
-#: ../../include/conversation.php:1559
-msgid "Starred"
-msgstr "Preferiti"
-
-#: ../../include/conversation.php:1562
-msgid "Favourite Posts"
-msgstr "Post preferiti"
-
-#: ../../include/conversation.php:1569
-msgid "Spam"
-msgstr "Spam"
-
-#: ../../include/conversation.php:1572
-msgid "Posts flagged as SPAM"
-msgstr "Post marcati come spam"
-
-#: ../../include/conversation.php:1626 ../../mod/admin.php:1157
-msgid "Channel"
-msgstr "Canale"
-
-#: ../../include/conversation.php:1629
-msgid "Status Messages and Posts"
-msgstr "Post e messaggi di stato"
-
-#: ../../include/conversation.php:1638
-msgid "About"
-msgstr "Informazioni"
-
-#: ../../include/conversation.php:1641
-msgid "Profile Details"
-msgstr "Dettagli del profilo"
-
-#: ../../include/conversation.php:1650 ../../include/photos.php:506
-msgid "Photo Albums"
-msgstr "Album foto"
-
-#: ../../include/conversation.php:1657
-msgid "Files and Storage"
-msgstr "Archivio file"
-
-#: ../../include/conversation.php:1694
-msgid "Saved Bookmarks"
-msgstr "Segnalibri salvati"
-
-#: ../../include/conversation.php:1704
-msgid "Manage Webpages"
-msgstr "Gestisci le pagine web"
-
-#: ../../include/conversation.php:1763
-msgctxt "noun"
-msgid "Attending"
-msgid_plural "Attending"
-msgstr[0] "Partecipa"
-msgstr[1] "Partecipano"
-
-#: ../../include/conversation.php:1766
-msgctxt "noun"
-msgid "Not Attending"
-msgid_plural "Not Attending"
-msgstr[0] "Non partecipa"
-msgstr[1] "Non partecipano"
-
-#: ../../include/conversation.php:1769
-msgctxt "noun"
-msgid "Undecided"
-msgid_plural "Undecided"
-msgstr[0] "Indeciso"
-msgstr[1] "Indecisi"
-
-#: ../../include/conversation.php:1772
-msgctxt "noun"
-msgid "Agree"
-msgid_plural "Agrees"
-msgstr[0] "D'accordo"
-msgstr[1] "D'accordo"
-
-#: ../../include/conversation.php:1775
-msgctxt "noun"
-msgid "Disagree"
-msgid_plural "Disagrees"
-msgstr[0] "Non d'accordo"
-msgstr[1] "Non d'accordo"
-
-#: ../../include/conversation.php:1778
-msgctxt "noun"
-msgid "Abstain"
-msgid_plural "Abstains"
-msgstr[0] "Astenuto"
-msgstr[1] "Astenuti"
-
-#: ../../include/dba/dba_driver.php:141
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "Non trovo le informazioni DNS per il database server '%s'"
-
-#: ../../include/follow.php:28
-msgid "Channel is blocked on this site."
-msgstr "Il canale è bloccato per questo sito."
-
-#: ../../include/follow.php:33
-msgid "Channel location missing."
-msgstr "Manca l'indirizzo del canale."
-
-#: ../../include/follow.php:82
-msgid "Response from remote channel was incomplete."
-msgstr "La risposta dal canale non è completa."
-
-#: ../../include/follow.php:99
-msgid "Channel was deleted and no longer exists."
-msgstr "Il canale è stato rimosso e non esiste più."
-
-#: ../../include/follow.php:155 ../../include/follow.php:191
-msgid "Protocol disabled."
-msgstr "Protocollo disabilitato."
-
-#: ../../include/follow.php:179
-msgid "Channel discovery failed."
-msgstr "La ricerca del canale non ha avuto successo."
-
-#: ../../include/follow.php:217
-msgid "Cannot connect to yourself."
-msgstr "Non puoi connetterti a te stesso."
-
-#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1579
-msgid "Logout"
-msgstr "Esci"
-
-#: ../../include/nav.php:82 ../../include/nav.php:113
-msgid "End this session"
-msgstr "Chiudi questa sessione"
-
-#: ../../include/nav.php:85 ../../include/nav.php:144
-msgid "Home"
-msgstr "Bacheca"
-
-#: ../../include/nav.php:85
-msgid "Your posts and conversations"
-msgstr "I tuoi post e conversazioni"
-
-#: ../../include/nav.php:86
-msgid "Your profile page"
-msgstr "Il tuo profilo"
-
-#: ../../include/nav.php:88 ../../include/identity.php:931
-#: ../../mod/profiles.php:776
-msgid "Edit Profiles"
-msgstr "Modifica i tuoi profili"
-
-#: ../../include/nav.php:88
-msgid "Manage/Edit profiles"
-msgstr "Gestisci i tuoi profili"
-
-#: ../../include/nav.php:90 ../../include/identity.php:935
-msgid "Edit Profile"
-msgstr "Modifica il profilo"
-
-#: ../../include/nav.php:90
-msgid "Edit your profile"
-msgstr "Modifica il tuo profilo"
-
-#: ../../include/nav.php:92
-msgid "Your photos"
-msgstr "Le tue foto"
-
-#: ../../include/nav.php:93
-msgid "Your files"
-msgstr "I tuoi file"
-
-#: ../../include/nav.php:96
-msgid "Your chatrooms"
-msgstr "Le tue chat"
-
-#: ../../include/nav.php:102
-msgid "Your bookmarks"
-msgstr "I tuoi segnalibri"
-
-#: ../../include/nav.php:106
-msgid "Your webpages"
-msgstr "Le tue pagine web"
-
-#: ../../include/nav.php:110
-msgid "Sign in"
-msgstr "Accedi"
-
-#: ../../include/nav.php:127
-#, php-format
-msgid "%s - click to logout"
-msgstr "%s - clicca per uscire"
-
-#: ../../include/nav.php:130
-msgid "Remote authentication"
-msgstr "Accedi dal tuo hub"
-
-#: ../../include/nav.php:130
-msgid "Click to authenticate to your home hub"
-msgstr "Clicca per farti riconoscere dal tuo hub principale"
-
-#: ../../include/nav.php:144
-msgid "Home Page"
-msgstr "Bacheca"
-
-#: ../../include/nav.php:148 ../../mod/register.php:258 ../../boot.php:1562
-msgid "Register"
-msgstr "Registrati"
-
-#: ../../include/nav.php:148
-msgid "Create an account"
-msgstr "Crea un account"
-
-#: ../../include/nav.php:155
-msgid "Help and documentation"
-msgstr "Guida e documentazione"
-
-#: ../../include/nav.php:159
-msgid "Applications, utilities, links, games"
-msgstr "Applicazioni, utilità, link, giochi"
-
-#: ../../include/nav.php:161
-msgid "Search site @name, #tag, ?docs, content"
-msgstr "Cerca nel sito per @nome, #tag, ?guida o per contenuto"
-
-#: ../../include/nav.php:164
-msgid "Channel Directory"
-msgstr "Elenchi pubblici dei canali"
-
-#: ../../include/nav.php:176
-msgid "Your grid"
-msgstr "La tua rete"
-
-#: ../../include/nav.php:177
-msgid "Mark all grid notifications seen"
-msgstr "Segna come lette le notifiche della tua rete"
-
-#: ../../include/nav.php:179
-msgid "Channel home"
-msgstr "Bacheca del canale"
-
-#: ../../include/nav.php:180
-msgid "Mark all channel notifications seen"
-msgstr "Segna come lette le notifiche del canale"
-
-#: ../../include/nav.php:183 ../../include/text.php:834
-#: ../../mod/connections.php:298
-msgid "Connections"
-msgstr "Contatti"
-
-#: ../../include/nav.php:186
-msgid "Notices"
-msgstr "Avvisi"
-
-#: ../../include/nav.php:186
-msgid "Notifications"
-msgstr "Notifiche"
-
-#: ../../include/nav.php:187
-msgid "See all notifications"
-msgstr "Vedi tutte le notifiche"
-
-#: ../../include/nav.php:188 ../../mod/notifications.php:99
-msgid "Mark all system notifications seen"
-msgstr "Segna come lette le notifiche di sistema"
-
-#: ../../include/nav.php:190
-msgid "Private mail"
-msgstr "Messaggi privati"
-
-#: ../../include/nav.php:191
-msgid "See all private messages"
-msgstr "Guarda tutti i messaggi privati"
-
-#: ../../include/nav.php:192
-msgid "Mark all private messages seen"
-msgstr "Segna come letti tutti i messaggi privati"
-
-#: ../../include/nav.php:198
-msgid "Event Calendar"
-msgstr "Calendario"
-
-#: ../../include/nav.php:199
-msgid "See all events"
-msgstr "Guarda tutti gli eventi"
-
-#: ../../include/nav.php:200
-msgid "Mark all events seen"
-msgstr "Marca come letti tutti gli eventi"
-
-#: ../../include/nav.php:203
-msgid "Manage Your Channels"
-msgstr "Gestisci i tuoi canali"
-
-#: ../../include/nav.php:205
-msgid "Account/Channel Settings"
-msgstr "Impostazioni dell'account e del canale"
-
-#: ../../include/nav.php:213
-msgid "Site Setup and Configuration"
-msgstr "Installazione e configurazione del sito"
-
-#: ../../include/nav.php:249
-msgid "@name, #tag, ?doc, content"
-msgstr "@nome, #tag, ?guida, contenuto"
-
-#: ../../include/nav.php:250
-msgid "Please wait..."
-msgstr "Attendere..."
-
-#: ../../include/js_strings.php:5
-msgid "Delete this item?"
-msgstr "Eliminare questo elemento?"
-
-#: ../../include/js_strings.php:8
-msgid "[-] show less"
-msgstr "[-] riduci"
-
-#: ../../include/js_strings.php:9
-msgid "[+] expand"
-msgstr "[+] mostra tutto"
-
-#: ../../include/js_strings.php:10
-msgid "[-] collapse"
-msgstr "[-] riduci"
-
-#: ../../include/js_strings.php:11
-msgid "Password too short"
-msgstr "Password troppo corta"
-
-#: ../../include/js_strings.php:12
-msgid "Passwords do not match"
-msgstr "Le password non corrispondono"
-
-#: ../../include/js_strings.php:13 ../../mod/photos.php:41
-#: ../../mod/cal.php:37
-msgid "everybody"
-msgstr "tutti"
-
-#: ../../include/js_strings.php:14
-msgid "Secret Passphrase"
-msgstr "Parola chiave per decifrare"
-
-#: ../../include/js_strings.php:15
-msgid "Passphrase hint"
-msgstr "Suggerimento per la parola chiave"
-
-#: ../../include/js_strings.php:16
-msgid "Notice: Permissions have changed but have not yet been submitted."
-msgstr "Nota: i permessi sono stati modificati ma non ancora salvati."
-
-#: ../../include/js_strings.php:17
-msgid "close all"
-msgstr "chiudi tutto"
-
-#: ../../include/js_strings.php:18
-msgid "Nothing new here"
-msgstr "Niente di nuovo qui"
-
-#: ../../include/js_strings.php:19
-msgid "Rate This Channel (this is public)"
-msgstr "Valuta questo canale (visibile a tutti)"
-
-#: ../../include/js_strings.php:20 ../../mod/connedit.php:712
-#: ../../mod/rate.php:157
-msgid "Rating"
-msgstr "Valutazioni"
-
-#: ../../include/js_strings.php:21
-msgid "Describe (optional)"
-msgstr "Descrizione (facoltativa)"
-
-#: ../../include/js_strings.php:23
-msgid "Please enter a link URL"
-msgstr "Inserisci l'URL di un link"
-
-#: ../../include/js_strings.php:24
-msgid "Unsaved changes. Are you sure you wish to leave this page?"
-msgstr "Non hai salvato i cambiamenti. Vuoi davvero lasciare questa pagina?"
-
-#: ../../include/js_strings.php:25 ../../mod/events.php:459
-#: ../../mod/locs.php:113 ../../mod/profiles.php:472
-#: ../../mod/profiles.php:697 ../../mod/pubsites.php:36
-msgid "Location"
-msgstr "Posizione geografica"
-
-#: ../../include/js_strings.php:27
-msgid "timeago.prefixAgo"
-msgstr "timeago.prefixAgo"
-
-#: ../../include/js_strings.php:28
-msgid "timeago.prefixFromNow"
-msgstr "timeago.prefixFromNow"
-
-#: ../../include/js_strings.php:29
-msgid "ago"
-msgstr "fa"
-
-#: ../../include/js_strings.php:30
-msgid "from now"
-msgstr "da adesso"
-
-#: ../../include/js_strings.php:31
-msgid "less than a minute"
-msgstr "meno di un minuto"
-
-#: ../../include/js_strings.php:32
-msgid "about a minute"
-msgstr "circa un minuto"
-
-#: ../../include/js_strings.php:33
-#, php-format
-msgid "%d minutes"
-msgstr "%d minuti"
-
-#: ../../include/js_strings.php:34
-msgid "about an hour"
-msgstr "circa un’ora"
-
-#: ../../include/js_strings.php:35
-#, php-format
-msgid "about %d hours"
-msgstr "circa %d ore"
-
-#: ../../include/js_strings.php:36
-msgid "a day"
-msgstr "un giorno"
-
-#: ../../include/js_strings.php:37
-#, php-format
-msgid "%d days"
-msgstr "%d giorni"
-
-#: ../../include/js_strings.php:38
-msgid "about a month"
-msgstr "circa un mese"
-
-#: ../../include/js_strings.php:39
-#, php-format
-msgid "%d months"
-msgstr "%d mesi"
-
-#: ../../include/js_strings.php:40
-msgid "about a year"
-msgstr "circa un anno"
-
-#: ../../include/js_strings.php:41
-#, php-format
-msgid "%d years"
-msgstr "%d anni"
-
-#: ../../include/js_strings.php:42
-msgid " "
-msgstr " "
-
-#: ../../include/js_strings.php:43
-msgid "timeago.numbers"
-msgstr "timeago.numbers"
-
-#: ../../include/js_strings.php:45 ../../include/text.php:1210
-msgid "January"
-msgstr "gennaio"
-
-#: ../../include/js_strings.php:46 ../../include/text.php:1210
-msgid "February"
-msgstr "febbraio"
-
-#: ../../include/js_strings.php:47 ../../include/text.php:1210
-msgid "March"
-msgstr "marzo"
-
-#: ../../include/js_strings.php:48 ../../include/text.php:1210
-msgid "April"
-msgstr "aprile"
-
-#: ../../include/js_strings.php:49
-msgctxt "long"
-msgid "May"
-msgstr "maggio"
-
-#: ../../include/js_strings.php:50 ../../include/text.php:1210
-msgid "June"
-msgstr "giugno"
-
-#: ../../include/js_strings.php:51 ../../include/text.php:1210
-msgid "July"
-msgstr "luglio"
-
-#: ../../include/js_strings.php:52 ../../include/text.php:1210
-msgid "August"
-msgstr "agosto"
-
-#: ../../include/js_strings.php:53 ../../include/text.php:1210
-msgid "September"
-msgstr "settembre"
-
-#: ../../include/js_strings.php:54 ../../include/text.php:1210
-msgid "October"
-msgstr "ottobre"
-
-#: ../../include/js_strings.php:55 ../../include/text.php:1210
-msgid "November"
-msgstr "novembre"
-
-#: ../../include/js_strings.php:56 ../../include/text.php:1210
-msgid "December"
-msgstr "dicembre"
-
-#: ../../include/js_strings.php:57
-msgid "Jan"
-msgstr "Gen"
-
-#: ../../include/js_strings.php:58
-msgid "Feb"
-msgstr "Feb"
-
-#: ../../include/js_strings.php:59
-msgid "Mar"
-msgstr "Mar"
-
-#: ../../include/js_strings.php:60
-msgid "Apr"
-msgstr "Apr"
-
-#: ../../include/js_strings.php:61
-msgctxt "short"
-msgid "May"
-msgstr "maggio"
-
-#: ../../include/js_strings.php:62
-msgid "Jun"
-msgstr "Mag"
-
-#: ../../include/js_strings.php:63
-msgid "Jul"
-msgstr "Giu"
-
-#: ../../include/js_strings.php:64
-msgid "Aug"
-msgstr "Ago"
-
-#: ../../include/js_strings.php:65
-msgid "Sep"
-msgstr "Set"
-
-#: ../../include/js_strings.php:66
-msgid "Oct"
-msgstr "Ott"
-
-#: ../../include/js_strings.php:67
-msgid "Nov"
-msgstr "Nov"
-
-#: ../../include/js_strings.php:68
-msgid "Dec"
-msgstr "Dic"
-
-#: ../../include/js_strings.php:69 ../../include/text.php:1206
-msgid "Sunday"
-msgstr "domenica"
-
-#: ../../include/js_strings.php:70 ../../include/text.php:1206
-msgid "Monday"
-msgstr "lunedì"
-
-#: ../../include/js_strings.php:71 ../../include/text.php:1206
-msgid "Tuesday"
-msgstr "martedì"
-
-#: ../../include/js_strings.php:72 ../../include/text.php:1206
-msgid "Wednesday"
-msgstr "mercoledì"
-
-#: ../../include/js_strings.php:73 ../../include/text.php:1206
-msgid "Thursday"
-msgstr "giovedì"
-
-#: ../../include/js_strings.php:74 ../../include/text.php:1206
-msgid "Friday"
-msgstr "venerdì"
-
-#: ../../include/js_strings.php:75 ../../include/text.php:1206
-msgid "Saturday"
-msgstr "sabato"
-
-#: ../../include/js_strings.php:76
-msgid "Sun"
-msgstr "Dom"
-
-#: ../../include/js_strings.php:77
-msgid "Mon"
-msgstr "Lun"
-
-#: ../../include/js_strings.php:78
-msgid "Tue"
-msgstr "Mar"
-
-#: ../../include/js_strings.php:79
-msgid "Wed"
-msgstr "Mer"
-
-#: ../../include/js_strings.php:80
-msgid "Thu"
-msgstr "Gio"
-
-#: ../../include/js_strings.php:81
-msgid "Fri"
-msgstr "Ven"
-
-#: ../../include/js_strings.php:82
-msgid "Sat"
-msgstr "Sab"
-
-#: ../../include/js_strings.php:83
-msgctxt "calendar"
-msgid "today"
-msgstr "oggi"
-
-#: ../../include/js_strings.php:84
-msgctxt "calendar"
-msgid "month"
-msgstr "mese"
-
-#: ../../include/js_strings.php:85
-msgctxt "calendar"
-msgid "week"
-msgstr "settimana"
-
-#: ../../include/js_strings.php:86
-msgctxt "calendar"
-msgid "day"
-msgstr "giorno"
-
-#: ../../include/js_strings.php:87
-msgctxt "calendar"
-msgid "All day"
-msgstr "Tutto il giorno"
-
-#: ../../include/network.php:659
-msgid "view full size"
-msgstr "guarda nelle dimensioni reali"
-
-#: ../../include/network.php:1875 ../../include/account.php:317
-#: ../../include/account.php:344 ../../include/account.php:404
-msgid "Administrator"
-msgstr "Amministratore"
-
-#: ../../include/network.php:1889
-msgid "No Subject"
-msgstr "Nessun titolo"
-
-#: ../../include/oembed.php:267
-msgid "Embedded content"
-msgstr "Contenuti incorporati"
-
-#: ../../include/oembed.php:276
-msgid "Embedding disabled"
-msgstr "Disabilita la creazione di contenuti incorporati"
-
-#: ../../include/notify.php:20
-msgid "created a new post"
-msgstr "Ha creato un nuovo post"
+"Remote authentication blocked. You are logged into this site locally. Please"
+" logout and retry."
+msgstr "L'autenticazione tramite il tuo hub non è disponibile. Puoi provare a disconnetterti per tentare di nuovo."
-#: ../../include/notify.php:21
+#: ../../Zotlabs/Zot/Auth.php:246 ../../Zotlabs/Module/Openid.php:76
+#: ../../Zotlabs/Module/Openid.php:183
#, php-format
-msgid "commented on %s's post"
-msgstr "ha commentato il post di %s"
+msgid "Welcome %s. Remote authentication successful."
+msgstr "Ciao %s. L'accesso tramite il tuo hub è avvenuto con successo."
-#: ../../include/page_widgets.php:6
-msgid "New Page"
-msgstr "Nuova pagina web"
+#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Blocks.php:33
+#: ../../Zotlabs/Module/Connect.php:17 ../../Zotlabs/Module/Editblock.php:31
+#: ../../Zotlabs/Module/Editlayout.php:31
+#: ../../Zotlabs/Module/Editwebpage.php:33
+#: ../../Zotlabs/Module/Filestorage.php:60 ../../Zotlabs/Module/Hcard.php:12
+#: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Profile.php:20
+#: ../../Zotlabs/Module/Webpages.php:34 ../../include/channel.php:837
+msgid "Requested profile is not available."
+msgstr "Il profilo richiesto non è disponibile."
-#: ../../include/page_widgets.php:39 ../../mod/blocks.php:159
-#: ../../mod/layouts.php:188 ../../mod/pubsites.php:42
-#: ../../mod/webpages.php:189
-msgid "View"
-msgstr "Guarda"
+#: ../../Zotlabs/Module/Achievements.php:38
+msgid "Some blurb about what to do when you're new here"
+msgstr "Qualche suggerimento per i nuovi utenti su cosa fare"
-#: ../../include/page_widgets.php:41 ../../mod/webpages.php:191
-msgid "Actions"
-msgstr "Azioni"
+#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:152
+#: ../../Zotlabs/Module/Editblock.php:108
+msgid "Block Name"
+msgstr "Nome del block"
-#: ../../include/page_widgets.php:42 ../../mod/webpages.php:192
-msgid "Page Link"
-msgstr "Link alla pagina"
+#: ../../Zotlabs/Module/Blocks.php:151 ../../include/text.php:2265
+msgid "Blocks"
+msgstr "Block"
-#: ../../include/page_widgets.php:43
-msgid "Title"
-msgstr "Titolo"
+#: ../../Zotlabs/Module/Blocks.php:153
+msgid "Block Title"
+msgstr "Titolo del block"
-#: ../../include/page_widgets.php:44 ../../mod/blocks.php:150
-#: ../../mod/layouts.php:181 ../../mod/menu.php:110 ../../mod/webpages.php:194
+#: ../../Zotlabs/Module/Blocks.php:154 ../../Zotlabs/Module/Layouts.php:188
+#: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Webpages.php:198
+#: ../../include/page_widgets.php:44
msgid "Created"
msgstr "Creato"
-#: ../../include/page_widgets.php:45 ../../mod/blocks.php:151
-#: ../../mod/layouts.php:182 ../../mod/menu.php:111 ../../mod/webpages.php:195
+#: ../../Zotlabs/Module/Blocks.php:155 ../../Zotlabs/Module/Layouts.php:189
+#: ../../Zotlabs/Module/Menu.php:115 ../../Zotlabs/Module/Webpages.php:199
+#: ../../include/page_widgets.php:45
msgid "Edited"
msgstr "Modificato"
-#: ../../include/photo/photo_driver.php:722 ../../mod/photos.php:94
-#: ../../mod/photos.php:738 ../../mod/profile_photo.php:147
-#: ../../mod/profile_photo.php:239 ../../mod/profile_photo.php:327
-msgid "Profile Photos"
-msgstr "Foto del profilo"
-
-#: ../../include/datetime.php:48 ../../mod/profiles.php:699
-msgid "Miscellaneous"
-msgstr "Altro"
-
-#: ../../include/datetime.php:136
-msgid "Birthday"
-msgstr "Compleanno"
-
-#: ../../include/datetime.php:138
-msgid "Age: "
-msgstr "Età:"
-
-#: ../../include/datetime.php:140
-msgid "YYYY-MM-DD or MM-DD"
-msgstr "AAAA-MM-GG oppure MM-GG"
-
-#: ../../include/datetime.php:246 ../../mod/appman.php:91
-#: ../../mod/appman.php:92 ../../mod/events.php:444 ../../mod/events.php:449
-#: ../../mod/profiles.php:708 ../../mod/profiles.php:712
-msgid "Required"
-msgstr "Obbligatorio"
-
-#: ../../include/datetime.php:273 ../../boot.php:2411
-msgid "never"
-msgstr "mai"
-
-#: ../../include/datetime.php:279
-msgid "less than a second ago"
-msgstr "meno di un secondo fa"
-
-#: ../../include/datetime.php:297
-#, php-format
-msgctxt "e.g. 22 hours ago, 1 minute ago"
-msgid "%1$d %2$s ago"
-msgstr "%1$d %2$s fa"
-
-#: ../../include/datetime.php:308
-msgctxt "relative_date"
-msgid "year"
-msgid_plural "years"
-msgstr[0] "anno"
-msgstr[1] "anni"
-
-#: ../../include/datetime.php:311
-msgctxt "relative_date"
-msgid "month"
-msgid_plural "months"
-msgstr[0] "mese"
-msgstr[1] "mesi"
-
-#: ../../include/datetime.php:314
-msgctxt "relative_date"
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "settimana"
-msgstr[1] "settimane"
-
-#: ../../include/datetime.php:317
-msgctxt "relative_date"
-msgid "day"
-msgid_plural "days"
-msgstr[0] "giorno"
-msgstr[1] "giorni"
-
-#: ../../include/datetime.php:320
-msgctxt "relative_date"
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "ora"
-msgstr[1] "ore"
-
-#: ../../include/datetime.php:323
-msgctxt "relative_date"
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minuto"
-msgstr[1] "minuti"
-
-#: ../../include/datetime.php:326
-msgctxt "relative_date"
-msgid "second"
-msgid_plural "seconds"
-msgstr[0] "secondo"
-msgstr[1] "secondi"
-
-#: ../../include/datetime.php:563
-#, php-format
-msgid "%1$s's birthday"
-msgstr "Compleanno di %1$s"
-
-#: ../../include/datetime.php:564
-#, php-format
-msgid "Happy Birthday %1$s"
-msgstr "Buon compleanno %1$s"
-
-#: ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23 ../../mod/id.php:103
-msgid "Male"
-msgstr "Maschio"
-
-#: ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23 ../../mod/id.php:105
-msgid "Female"
-msgstr "Femmina"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Male"
-msgstr "Al momento maschio"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Female"
-msgstr "Al momento femmina"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Male"
-msgstr "Prevalentemente maschio"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Female"
-msgstr "Prevalentemente femmina"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transgender"
-msgstr "Transgender"
-
-#: ../../include/profile_selectors.php:6
-msgid "Intersex"
-msgstr "Intersex"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transsexual"
-msgstr "Transessuale"
-
-#: ../../include/profile_selectors.php:6
-msgid "Hermaphrodite"
-msgstr "Ermafrodito"
-
-#: ../../include/profile_selectors.php:6
-msgid "Neuter"
-msgstr "Neutro"
-
-#: ../../include/profile_selectors.php:6
-msgid "Non-specific"
-msgstr "Non specificato"
-
-#: ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
-#: ../../include/profile_selectors.php:61
-#: ../../include/profile_selectors.php:97 ../../include/permissions.php:881
-msgid "Other"
-msgstr "Altro"
-
-#: ../../include/profile_selectors.php:6
-msgid "Undecided"
-msgstr "Indeciso"
-
-#: ../../include/profile_selectors.php:42
-#: ../../include/profile_selectors.php:61
-msgid "Males"
-msgstr "Maschi"
-
-#: ../../include/profile_selectors.php:42
-#: ../../include/profile_selectors.php:61
-msgid "Females"
-msgstr "Femmine"
-
-#: ../../include/profile_selectors.php:42
-msgid "Gay"
-msgstr "Gay"
-
-#: ../../include/profile_selectors.php:42
-msgid "Lesbian"
-msgstr "Lesbica"
-
-#: ../../include/profile_selectors.php:42
-msgid "No Preference"
-msgstr "Senza preferenza"
-
-#: ../../include/profile_selectors.php:42
-msgid "Bisexual"
-msgstr "Bisessuale"
-
-#: ../../include/profile_selectors.php:42
-msgid "Autosexual"
-msgstr "Autosessuale"
-
-#: ../../include/profile_selectors.php:42
-msgid "Abstinent"
-msgstr "Astinente"
-
-#: ../../include/profile_selectors.php:42
-msgid "Virgin"
-msgstr "Vergine"
-
-#: ../../include/profile_selectors.php:42
-msgid "Deviant"
-msgstr "Deviato"
-
-#: ../../include/profile_selectors.php:42
-msgid "Fetish"
-msgstr "Feticista"
-
-#: ../../include/profile_selectors.php:42
-msgid "Oodles"
-msgstr "Un sacco"
-
-#: ../../include/profile_selectors.php:42
-msgid "Nonsexual"
-msgstr "Asessuato"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Single"
-msgstr "Single"
-
-#: ../../include/profile_selectors.php:80
-msgid "Lonely"
-msgstr "Da solo"
-
-#: ../../include/profile_selectors.php:80
-msgid "Available"
-msgstr "Disponibile"
-
-#: ../../include/profile_selectors.php:80
-msgid "Unavailable"
-msgstr "Non disponibile"
-
-#: ../../include/profile_selectors.php:80
-msgid "Has crush"
-msgstr "Ha una cotta"
-
-#: ../../include/profile_selectors.php:80
-msgid "Infatuated"
-msgstr "Infatuato/a"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Dating"
-msgstr "Disponibile a un incontro"
-
-#: ../../include/profile_selectors.php:80
-msgid "Unfaithful"
-msgstr "Infedele"
-
-#: ../../include/profile_selectors.php:80
-msgid "Sex Addict"
-msgstr "Sesso-dipendente"
-
-#: ../../include/profile_selectors.php:80
-msgid "Friends/Benefits"
-msgstr "Amici con qualcosa in più"
-
-#: ../../include/profile_selectors.php:80
-msgid "Casual"
-msgstr "Casual"
-
-#: ../../include/profile_selectors.php:80
-msgid "Engaged"
-msgstr "Impegnato"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Married"
-msgstr "Sposato/a"
-
-#: ../../include/profile_selectors.php:80
-msgid "Imaginarily married"
-msgstr "Con matrimonio immaginario"
-
-#: ../../include/profile_selectors.php:80
-msgid "Partners"
-msgstr "Partner"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Cohabiting"
-msgstr "Convivente"
-
-#: ../../include/profile_selectors.php:80
-msgid "Common law"
-msgstr "Matrimonio regolare"
-
-#: ../../include/profile_selectors.php:80
-msgid "Happy"
-msgstr "Felice"
-
-#: ../../include/profile_selectors.php:80
-msgid "Not looking"
-msgstr "Non in cerca"
-
-#: ../../include/profile_selectors.php:80
-msgid "Swinger"
-msgstr "Scambista"
-
-#: ../../include/profile_selectors.php:80
-msgid "Betrayed"
-msgstr "Tradito/a"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Separated"
-msgstr "Separato/a"
-
-#: ../../include/profile_selectors.php:80
-msgid "Unstable"
-msgstr "Instabile"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Divorced"
-msgstr "Divorziato/a"
-
-#: ../../include/profile_selectors.php:80
-msgid "Imaginarily divorced"
-msgstr "Sogna il divorzio"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Widowed"
-msgstr "Vedovo/a"
-
-#: ../../include/profile_selectors.php:80
-msgid "Uncertain"
-msgstr "Incerto/a"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "It's complicated"
-msgstr "Relazione complicata"
-
-#: ../../include/profile_selectors.php:80
-msgid "Don't care"
-msgstr "Chi se ne frega"
-
-#: ../../include/profile_selectors.php:80
-msgid "Ask me"
-msgstr "Chiedimelo"
-
-#: ../../include/comanche.php:34 ../../mod/admin.php:366
-msgid "Default"
-msgstr "Predefinito"
-
-#: ../../include/event.php:779
-msgid "This event has been added to your calendar."
-msgstr "Questo evento è stato aggiunto al tuo calendario"
-
-#: ../../include/event.php:978
-msgid "Not specified"
-msgstr "Non specificato"
-
-#: ../../include/event.php:979
-msgid "Needs Action"
-msgstr "Necessita di un intervento"
-
-#: ../../include/event.php:980
-msgid "Completed"
-msgstr "Completato"
-
-#: ../../include/event.php:981
-msgid "In Process"
-msgstr "In corso"
-
-#: ../../include/event.php:982
-msgid "Cancelled"
-msgstr "Annullato"
-
-#: ../../include/contact_selectors.php:56
-msgid "Frequently"
-msgstr "Frequentemente"
-
-#: ../../include/contact_selectors.php:57
-msgid "Hourly"
-msgstr "Ogni ora"
-
-#: ../../include/contact_selectors.php:58
-msgid "Twice daily"
-msgstr "Due volte al giorno"
-
-#: ../../include/contact_selectors.php:59
-msgid "Daily"
-msgstr "Ogni giorno"
-
-#: ../../include/contact_selectors.php:60
-msgid "Weekly"
-msgstr "Ogni settimana"
-
-#: ../../include/contact_selectors.php:61
-msgid "Monthly"
-msgstr "Ogni mese"
-
-#: ../../include/contact_selectors.php:76
-#: ../../include/contact_selectors.php:77
-msgid "Friendica"
-msgstr "Friendica"
-
-#: ../../include/contact_selectors.php:78
-msgid "OStatus"
-msgstr "OStatus"
-
-#: ../../include/contact_selectors.php:79
-msgid "GNU-Social"
-msgstr "GNU-Social"
-
-#: ../../include/contact_selectors.php:80
-msgid "RSS/Atom"
-msgstr "RSS/Atom"
-
-#: ../../include/contact_selectors.php:81 ../../mod/id.php:15
-#: ../../mod/id.php:16 ../../mod/admin.php:989 ../../mod/admin.php:998
-#: ../../boot.php:1582
-msgid "Email"
-msgstr "Email"
-
-#: ../../include/contact_selectors.php:82
-msgid "Diaspora"
-msgstr "Diaspora"
-
-#: ../../include/contact_selectors.php:83
-msgid "Facebook"
-msgstr "Facebook"
-
-#: ../../include/contact_selectors.php:84
-msgid "Zot"
-msgstr "Zot"
-
-#: ../../include/contact_selectors.php:85
-msgid "LinkedIn"
-msgstr "LinkedIn"
-
-#: ../../include/contact_selectors.php:86
-msgid "XMPP/IM"
-msgstr "XMPP/IM"
-
-#: ../../include/contact_selectors.php:87
-msgid "MySpace"
-msgstr "MySpace"
-
-#: ../../include/taxonomy.php:240 ../../include/taxonomy.php:261
-msgid "Tags"
-msgstr "Tag"
-
-#: ../../include/taxonomy.php:305
-msgid "Keywords"
-msgstr "Parole chiave"
-
-#: ../../include/taxonomy.php:326
-msgid "have"
-msgstr "ho"
-
-#: ../../include/taxonomy.php:326
-msgid "has"
-msgstr "ha"
-
-#: ../../include/taxonomy.php:327
-msgid "want"
-msgstr "voglio"
-
-#: ../../include/taxonomy.php:327
-msgid "wants"
-msgstr "vuole"
-
-#: ../../include/taxonomy.php:328
-msgid "likes"
-msgstr "gli piace"
-
-#: ../../include/taxonomy.php:329
-msgid "dislikes"
-msgstr "non gli piace"
-
-#: ../../include/attach.php:247 ../../include/attach.php:333
-msgid "Item was not found."
-msgstr "Elemento non trovato."
-
-#: ../../include/attach.php:497
-msgid "No source file."
-msgstr "Nessun file di origine."
-
-#: ../../include/attach.php:519
-msgid "Cannot locate file to replace"
-msgstr "Il file da sostituire non è stato trovato"
-
-#: ../../include/attach.php:537
-msgid "Cannot locate file to revise/update"
-msgstr "Il file da aggiornare non è stato trovato"
-
-#: ../../include/attach.php:672
-#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "Il file supera la dimensione massima di %d"
-
-#: ../../include/attach.php:686
-#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
-msgstr "Hai raggiunto il limite complessivo di %1$.0f Mbytes per gli allegati."
-
-#: ../../include/attach.php:842
-msgid "File upload failed. Possible system limit or action terminated."
-msgstr "Caricamento file fallito, potrebbe essere stato interrotto o potrebbe aver superato lo spazio assegnato."
-
-#: ../../include/attach.php:855
-msgid "Stored file could not be verified. Upload failed."
-msgstr "Il file non può essere verificato. Caricamento fallito."
-
-#: ../../include/attach.php:909 ../../include/attach.php:925
-msgid "Path not available."
-msgstr "Percorso non disponibile."
-
-#: ../../include/attach.php:971 ../../include/attach.php:1123
-msgid "Empty pathname"
-msgstr "Il percorso del file è vuoto"
-
-#: ../../include/attach.php:997
-msgid "duplicate filename or path"
-msgstr "il file o il percorso del file è duplicato"
-
-#: ../../include/attach.php:1019
-msgid "Path not found."
-msgstr "Percorso del file non trovato."
-
-#: ../../include/attach.php:1077
-msgid "mkdir failed."
-msgstr "mkdir fallito."
-
-#: ../../include/attach.php:1081
-msgid "database storage failed."
-msgstr "scrittura su database fallita."
-
-#: ../../include/attach.php:1129
-msgid "Empty path"
-msgstr "La posizione è vuota"
-
-#: ../../include/features.php:48
-msgid "General Features"
-msgstr "Funzionalità di base"
-
-#: ../../include/features.php:50
-msgid "Content Expiration"
-msgstr "Scadenza"
-
-#: ../../include/features.php:50
-msgid "Remove posts/comments and/or private messages at a future time"
-msgstr "Elimina i post, i commenti o i messaggi privati dopo un lasso di tempo"
-
-#: ../../include/features.php:51
-msgid "Multiple Profiles"
-msgstr "Profili multipli"
-
-#: ../../include/features.php:51
-msgid "Ability to create multiple profiles"
-msgstr "Abilitazione a creare profili multipli"
-
-#: ../../include/features.php:52
-msgid "Advanced Profiles"
-msgstr "Profili avanzati"
-
-#: ../../include/features.php:52
-msgid "Additional profile sections and selections"
-msgstr "Informazioni aggiuntive del profilo"
-
-#: ../../include/features.php:53
-msgid "Profile Import/Export"
-msgstr "Importa/esporta il profilo"
-
-#: ../../include/features.php:53
-msgid "Save and load profile details across sites/channels"
-msgstr "Salva o ripristina le informazioni del profilo su siti diversi"
-
-#: ../../include/features.php:54
-msgid "Web Pages"
-msgstr "Pagine web"
-
-#: ../../include/features.php:54
-msgid "Provide managed web pages on your channel"
-msgstr "Attiva la creazione di pagine web sul tuo canale"
-
-#: ../../include/features.php:55
-msgid "Hide Rating"
-msgstr "Nascondi le valutazioni"
-
-#: ../../include/features.php:55
-msgid ""
-"Hide the rating buttons on your channel and profile pages. Note: People can "
-"still rate you somewhere else."
-msgstr "Nascondi i bottoni delle valutazioni sul tuo canale e sul profilo. Nota: le persone potranno comunque esprimere una valutazione altrove."
-
-#: ../../include/features.php:56
-msgid "Private Notes"
-msgstr "Note private"
-
-#: ../../include/features.php:56
-msgid "Enables a tool to store notes and reminders (note: not encrypted)"
-msgstr "Abilita il riquadro per scrivere annotazioni (in chiaro)"
-
-#: ../../include/features.php:57
-msgid "Navigation Channel Select"
-msgstr "Scegli il canale attivo dal menu"
-
-#: ../../include/features.php:57
-msgid "Change channels directly from within the navigation dropdown menu"
-msgstr "Scegli il canale attivo direttamente dal menu di navigazione"
-
-#: ../../include/features.php:58
-msgid "Photo Location"
-msgstr "Posizione geografica"
-
-#: ../../include/features.php:58
-msgid "If location data is available on uploaded photos, link this to a map."
-msgstr "Collega la foto a una mappa quando contiene indicazioni geografiche."
-
-#: ../../include/features.php:59
-msgid "Access Controlled Chatrooms"
-msgstr "Chat ad accesso riservato"
-
-#: ../../include/features.php:59
-msgid "Provide chatrooms and chat services with access control."
-msgstr "Il servizio di chat con accesso riservato"
-
-#: ../../include/features.php:60
-msgid "Smart Birthdays"
-msgstr "Compleanni intelligenti"
-
-#: ../../include/features.php:60
-msgid ""
-"Make birthday events timezone aware in case your friends are scattered "
-"across the planet."
-msgstr "I compleanni saranno segnalati in base al fuso orario, utile se hai amici sparsi per il mondo."
-
-#: ../../include/features.php:61
-msgid "Expert Mode"
-msgstr "Modalità esperto"
-
-#: ../../include/features.php:61
-msgid "Enable Expert Mode to provide advanced configuration options"
-msgstr "Abilita la modalità esperto per vedere le opzioni di configurazione avanzate"
-
-#: ../../include/features.php:62
-msgid "Premium Channel"
-msgstr "Canale premium"
-
-#: ../../include/features.php:62
-msgid ""
-"Allows you to set restrictions and terms on those that connect with your "
-"channel"
-msgstr "Ti permette di impostare restrizioni e termini d'uso per il canale"
-
-#: ../../include/features.php:67
-msgid "Post Composition Features"
-msgstr "Modalità di scrittura post"
-
-#: ../../include/features.php:70
-msgid "Large Photos"
-msgstr "Foto grandi"
-
-#: ../../include/features.php:70
-msgid ""
-"Include large (1024px) photo thumbnails in posts. If not enabled, use small "
-"(640px) photo thumbnails"
-msgstr "Includi anteprime grandi per le foto dei tuoi post (1024px). Altrimenti saranno mostrate anteprime più piccole (640px)"
-
-#: ../../include/features.php:71
-msgid "Automatically import channel content from other channels or feeds"
-msgstr "Importa automaticamente il contenuto del canale da altri canali o feed"
-
-#: ../../include/features.php:72
-msgid "Even More Encryption"
-msgstr "Cifratura addizionale"
-
-#: ../../include/features.php:72
-msgid ""
-"Allow optional encryption of content end-to-end with a shared secret key"
-msgstr "Rendi possibile la crifratura aggiuntiva tra mittente e destinatario usando una parola chiave conosciuta a entrambi"
-
-#: ../../include/features.php:73
-msgid "Enable Voting Tools"
-msgstr "Permetti i post con votazione"
-
-#: ../../include/features.php:73
-msgid "Provide a class of post which others can vote on"
-msgstr "Rende possibile la creazione di post in cui sarà possibile votare"
-
-#: ../../include/features.php:74
-msgid "Delayed Posting"
-msgstr "Pubblicazione ritardata"
-
-#: ../../include/features.php:74
-msgid "Allow posts to be published at a later date"
-msgstr "Per scegliere una data e un'ora a cui far uscire i post"
-
-#: ../../include/features.php:75
-msgid "Suppress Duplicate Posts/Comments"
-msgstr "Impedisci post e commenti duplicati"
-
-#: ../../include/features.php:75
-msgid ""
-"Prevent posts with identical content to be published with less than two "
-"minutes in between submissions."
-msgstr "Scarta post e commenti se sono identici ad altri inviati meno di due minuti prima."
-
-#: ../../include/features.php:81
-msgid "Network and Stream Filtering"
-msgstr "Filtraggio dei contenuti"
-
-#: ../../include/features.php:82
-msgid "Search by Date"
-msgstr "Ricerca per data"
-
-#: ../../include/features.php:82
-msgid "Ability to select posts by date ranges"
-msgstr "Per selezionare i post in un intervallo tra date"
-
-#: ../../include/features.php:83 ../../include/group.php:311
-msgid "Privacy Groups"
-msgstr "Gruppi di canali"
-
-#: ../../include/features.php:83
-msgid "Enable management and selection of privacy groups"
-msgstr "Abilita i gruppi di canali"
-
-#: ../../include/features.php:84
-msgid "Save search terms for re-use"
-msgstr "Salva i termini delle ricerche per poterle ripetere"
-
-#: ../../include/features.php:85
-msgid "Network Personal Tab"
-msgstr "Attività personale"
-
-#: ../../include/features.php:85
-msgid "Enable tab to display only Network posts that you've interacted on"
-msgstr "Abilita il link per mostrare solamente i contenuti con cui hai interagito"
-
-#: ../../include/features.php:86
-msgid "Network New Tab"
-msgstr "Contenuti nuovi"
-
-#: ../../include/features.php:86
-msgid "Enable tab to display all new Network activity"
-msgstr "Abilita il link per visualizzare solo i nuovi contenuti"
-
-#: ../../include/features.php:87
-msgid "Affinity Tool"
-msgstr "Filtro per affinità"
-
-#: ../../include/features.php:87
-msgid "Filter stream activity by depth of relationships"
-msgstr "Permette di selezionare i contenuti in base al livello di amicizia"
-
-#: ../../include/features.php:88
-msgid "Connection Filtering"
-msgstr "Filtro sui contatti"
-
-#: ../../include/features.php:88
-msgid "Filter incoming posts from connections based on keywords/content"
-msgstr "Filtra i post che ricevi con parole chiave"
-
-#: ../../include/features.php:89
-msgid "Suggest Channels"
-msgstr "Suggerisci canali"
-
-#: ../../include/features.php:89
-msgid "Show channel suggestions"
-msgstr "Mostra alcuni canali che potrebbero interessarti"
-
-#: ../../include/features.php:94
-msgid "Post/Comment Tools"
-msgstr "Gestione post e commenti"
-
-#: ../../include/features.php:95
-msgid "Community Tagging"
-msgstr "Tag della comunità"
-
-#: ../../include/features.php:95
-msgid "Ability to tag existing posts"
-msgstr "Permetti l'aggiunta di tag su post già esistenti"
-
-#: ../../include/features.php:96
-msgid "Post Categories"
-msgstr "Categorie dei post"
-
-#: ../../include/features.php:96
-msgid "Add categories to your posts"
-msgstr "Abilita le categorie per i tuoi post"
-
-#: ../../include/features.php:97
-msgid "Ability to file posts under folders"
-msgstr "Abilita la raccolta dei tuoi articoli in cartelle"
-
-#: ../../include/features.php:98
-msgid "Dislike Posts"
-msgstr "Non mi piace"
-
-#: ../../include/features.php:98
-msgid "Ability to dislike posts/comments"
-msgstr "Abilità la funzionalità \"non mi piace\" per i tuoi post"
-
-#: ../../include/features.php:99
-msgid "Star Posts"
-msgstr "Post con stella"
-
-#: ../../include/features.php:99
-msgid "Ability to mark special posts with a star indicator"
-msgstr "Mostra la stella per segnare i post preferiti"
-
-#: ../../include/features.php:100
-msgid "Tag Cloud"
-msgstr "Nuvola di tag"
-
-#: ../../include/features.php:100
-msgid "Provide a personal tag cloud on your channel page"
-msgstr "Mostra la nuvola dei tag che usi di più sulla pagina del tuo canale"
-
-#: ../../include/identity.php:32
-msgid "Unable to obtain identity information from database"
-msgstr "Impossibile ottenere le informazioni di identificazione dal database"
-
-#: ../../include/identity.php:66
-msgid "Empty name"
-msgstr "Nome vuoto"
-
-#: ../../include/identity.php:69
-msgid "Name too long"
-msgstr "Nome troppo lungo"
-
-#: ../../include/identity.php:180
-msgid "No account identifier"
-msgstr "Account senza identificativo"
-
-#: ../../include/identity.php:192
-msgid "Nickname is required."
-msgstr "Il nome dell'account è obbligatorio."
-
-#: ../../include/identity.php:206
-msgid "Reserved nickname. Please choose another."
-msgstr "Nome utente riservato. Per favore scegline un altro."
-
-#: ../../include/identity.php:211
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "Il nome dell'account è già in uso oppure ha dei caratteri non supportati."
-
-#: ../../include/identity.php:287
-msgid "Unable to retrieve created identity"
-msgstr "Impossibile caricare l'identità creata"
-
-#: ../../include/identity.php:345
-msgid "Default Profile"
-msgstr "Profilo predefinito"
-
-#: ../../include/identity.php:784
-msgid "Requested channel is not available."
-msgstr "Il canale che cerchi non è disponibile."
-
-#: ../../include/identity.php:830 ../../mod/achievements.php:11
-#: ../../mod/blocks.php:29 ../../mod/connect.php:13 ../../mod/editblock.php:29
-#: ../../mod/editlayout.php:27 ../../mod/editwebpage.php:28
-#: ../../mod/filestorage.php:54 ../../mod/hcard.php:8 ../../mod/layouts.php:29
-#: ../../mod/profile.php:16 ../../mod/webpages.php:29
-msgid "Requested profile is not available."
-msgstr "Il profilo richiesto non è disponibile."
-
-#: ../../include/identity.php:924 ../../mod/profiles.php:691
-msgid "Change profile photo"
-msgstr "Cambia la foto del profilo"
-
-#: ../../include/identity.php:932
-msgid "Create New Profile"
-msgstr "Crea un nuovo profilo"
-
-#: ../../include/identity.php:949 ../../mod/profiles.php:766
-msgid "Profile Image"
-msgstr "Immagine del profilo"
-
-#: ../../include/identity.php:952
-msgid "Visible to everybody"
-msgstr "Visibile a tutti"
-
-#: ../../include/identity.php:953 ../../mod/profiles.php:689
-#: ../../mod/profiles.php:770
-msgid "Edit visibility"
-msgstr "Cambia la visibilità"
-
-#: ../../include/identity.php:1027 ../../include/identity.php:1282
-msgid "Gender:"
-msgstr "Sesso:"
-
-#: ../../include/identity.php:1028 ../../include/identity.php:1326
-msgid "Status:"
-msgstr "Stato:"
-
-#: ../../include/identity.php:1029 ../../include/identity.php:1337
-msgid "Homepage:"
-msgstr "Home page:"
-
-#: ../../include/identity.php:1030
-msgid "Online Now"
-msgstr "Online adesso"
-
-#: ../../include/identity.php:1117 ../../include/identity.php:1193
-#: ../../mod/ping.php:318
-msgid "g A l F d"
-msgstr "g A l d F"
-
-#: ../../include/identity.php:1118 ../../include/identity.php:1194
-msgid "F d"
-msgstr "d F"
-
-#: ../../include/identity.php:1163 ../../include/identity.php:1233
-#: ../../mod/ping.php:341
-msgid "[today]"
-msgstr "[oggi]"
-
-#: ../../include/identity.php:1174
-msgid "Birthday Reminders"
-msgstr "Promemoria compleanni"
-
-#: ../../include/identity.php:1175
-msgid "Birthdays this week:"
-msgstr "Compleanni questa settimana:"
-
-#: ../../include/identity.php:1226
-msgid "[No description]"
-msgstr "[Nessuna descrizione]"
-
-#: ../../include/identity.php:1244
-msgid "Event Reminders"
-msgstr "Promemoria"
-
-#: ../../include/identity.php:1245
-msgid "Events this week:"
-msgstr "Eventi della settimana:"
-
-#: ../../include/identity.php:1280 ../../mod/settings.php:1047
-msgid "Full Name:"
-msgstr "Nome completo:"
-
-#: ../../include/identity.php:1287
-msgid "Like this channel"
-msgstr "Mi piace questo canale"
-
-#: ../../include/identity.php:1311
-msgid "j F, Y"
-msgstr "j F Y"
-
-#: ../../include/identity.php:1312
-msgid "j F"
-msgstr "j F"
-
-#: ../../include/identity.php:1319
-msgid "Birthday:"
-msgstr "Compleanno:"
-
-#: ../../include/identity.php:1323 ../../mod/directory.php:302
-msgid "Age:"
-msgstr "Età:"
-
-#: ../../include/identity.php:1332
-#, php-format
-msgid "for %1$d %2$s"
-msgstr "per %1$d %2$s"
-
-#: ../../include/identity.php:1335
-msgid "Sexual Preference:"
-msgstr "Preferenze sessuali:"
-
-#: ../../include/identity.php:1339 ../../mod/directory.php:318
-msgid "Hometown:"
-msgstr "Città dove vivo:"
-
-#: ../../include/identity.php:1341
-msgid "Tags:"
-msgstr "Tag:"
-
-#: ../../include/identity.php:1343
-msgid "Political Views:"
-msgstr "Orientamento politico:"
-
-#: ../../include/identity.php:1345
-msgid "Religion:"
-msgstr "Religione:"
-
-#: ../../include/identity.php:1347 ../../mod/directory.php:320
-msgid "About:"
-msgstr "Informazioni:"
-
-#: ../../include/identity.php:1349
-msgid "Hobbies/Interests:"
-msgstr "Interessi e hobby:"
-
-#: ../../include/identity.php:1351
-msgid "Likes:"
-msgstr "Mi piace:"
-
-#: ../../include/identity.php:1353
-msgid "Dislikes:"
-msgstr "Non mi piace:"
-
-#: ../../include/identity.php:1355
-msgid "Contact information and Social Networks:"
-msgstr "Contatti e social network:"
-
-#: ../../include/identity.php:1357
-msgid "My other channels:"
-msgstr "I miei altri canali:"
-
-#: ../../include/identity.php:1359
-msgid "Musical interests:"
-msgstr "Gusti musicali:"
-
-#: ../../include/identity.php:1361
-msgid "Books, literature:"
-msgstr "Libri, letteratura:"
-
-#: ../../include/identity.php:1363
-msgid "Television:"
-msgstr "Televisione:"
-
-#: ../../include/identity.php:1365
-msgid "Film/dance/culture/entertainment:"
-msgstr "Film, danza, cultura, intrattenimento:"
-
-#: ../../include/identity.php:1367
-msgid "Love/Romance:"
-msgstr "Amore:"
-
-#: ../../include/identity.php:1369
-msgid "Work/employment:"
-msgstr "Lavoro:"
-
-#: ../../include/identity.php:1371
-msgid "School/education:"
-msgstr "Scuola:"
-
-#: ../../include/identity.php:1391
-msgid "Like this thing"
-msgstr "Mi piace"
-
-#: ../../include/identity.php:1801 ../../mod/cover_photo.php:236
-msgid "cover photo"
-msgstr "Copertina del canale"
-
-#: ../../include/import.php:23
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "Non posso creare un canale con un identificativo che già esiste su questo sistema. L'importazione è fallita."
-
-#: ../../include/import.php:70
-msgid "Channel clone failed. Import failed."
-msgstr "Impossibile clonare il canale. L'importazione è fallita."
-
-#: ../../include/import.php:80 ../../mod/import.php:146
-msgid "Cloned channel not found. Import failed."
-msgstr "Impossibile trovare il canale clonato. L'importazione è fallita."
-
-#: ../../include/items.php:423 ../../mod/dreport.php:6
-#: ../../mod/dreport.php:45 ../../mod/group.php:68
-#: ../../mod/import_items.php:108 ../../mod/like.php:280
-#: ../../mod/profperm.php:23 ../../mod/subthread.php:58 ../../index.php:184
-msgid "Permission denied"
-msgstr "Permesso negato"
-
-#: ../../include/items.php:1138 ../../include/items.php:1183
-msgid "(Unknown)"
-msgstr "(Sconosciuto)"
-
-#: ../../include/items.php:1382
-msgid "Visible to anybody on the internet."
-msgstr "Visibile a chiunque su internet."
-
-#: ../../include/items.php:1384
-msgid "Visible to you only."
-msgstr "Visibile solo a te."
-
-#: ../../include/items.php:1386
-msgid "Visible to anybody in this network."
-msgstr "Visibile a tutti su questa rete."
-
-#: ../../include/items.php:1388
-msgid "Visible to anybody authenticated."
-msgstr "Visibile a chiunque sia autenticato."
-
-#: ../../include/items.php:1390
-#, php-format
-msgid "Visible to anybody on %s."
-msgstr "Visibile a tutti su %s."
-
-#: ../../include/items.php:1392
-msgid "Visible to all connections."
-msgstr "Visibile a tutti coloro che ti seguono."
-
-#: ../../include/items.php:1394
-msgid "Visible to approved connections."
-msgstr "Visibile ai contatti approvati."
-
-#: ../../include/items.php:1396
-msgid "Visible to specific connections."
-msgstr "Visibile ad alcuni contatti scelti."
-
-#: ../../include/items.php:4592 ../../mod/display.php:36
-#: ../../mod/filestorage.php:27 ../../mod/admin.php:141
-#: ../../mod/admin.php:1189 ../../mod/admin.php:1434 ../../mod/thing.php:85
-#: ../../mod/viewsrc.php:20
-msgid "Item not found."
-msgstr "Elemento non trovato."
-
-#: ../../include/items.php:5126 ../../mod/group.php:38 ../../mod/group.php:137
-msgid "Privacy group not found."
-msgstr "Gruppo di canali non trovato."
-
-#: ../../include/items.php:5142
-msgid "Privacy group is empty."
-msgstr "Gruppo di canali vuoto."
-
-#: ../../include/items.php:5149
-#, php-format
-msgid "Privacy group: %s"
-msgstr "Gruppo di canali: %s"
-
-#: ../../include/items.php:5159 ../../mod/connedit.php:701
-#, php-format
-msgid "Connection: %s"
-msgstr "Contatto: %s"
-
-#: ../../include/items.php:5161
-msgid "Connection not found."
-msgstr "Contatto non trovato."
-
-#: ../../include/items.php:5587 ../../mod/cover_photo.php:229
-msgid "female"
-msgstr "femmina"
-
-#: ../../include/items.php:5588 ../../mod/cover_photo.php:230
-#, php-format
-msgid "%1$s updated her %2$s"
-msgstr "Aggiornamento: %2$s di %1$s"
-
-#: ../../include/items.php:5589 ../../mod/cover_photo.php:231
-msgid "male"
-msgstr "maschio"
-
-#: ../../include/items.php:5590 ../../mod/cover_photo.php:232
-#, php-format
-msgid "%1$s updated his %2$s"
-msgstr "Aggiornamento: %2$s di %1$s"
-
-#: ../../include/items.php:5592 ../../mod/cover_photo.php:234
-#, php-format
-msgid "%1$s updated their %2$s"
-msgstr "Aggiornamento: %2$s di %1$s"
-
-#: ../../include/items.php:5594
-msgid "profile photo"
-msgstr "foto del profilo"
-
-#: ../../include/group.php:26
-msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "Un gruppo di canali con lo stesso nome esisteva in precedenza ed è stato ripristinato. I vecchi permessi saranno applicati ai nuovi canali. Se non vuoi che ciò accada, devi creare un gruppo con un nome diverso."
-
-#: ../../include/group.php:248
-msgid "Add new connections to this privacy group"
-msgstr "Aggiungi nuovi contatti a questo gruppo di canali"
-
-#: ../../include/group.php:267 ../../mod/admin.php:998
-msgid "All Channels"
-msgstr "Tutti i canali"
-
-#: ../../include/group.php:289
-msgid "edit"
-msgstr "modifica"
-
-#: ../../include/group.php:312
-msgid "Edit group"
-msgstr "Modifica il gruppo"
-
-#: ../../include/group.php:313
-msgid "Add privacy group"
-msgstr "Crea un gruppo di canali"
-
-#: ../../include/group.php:314
-msgid "Channels not in any privacy group"
-msgstr "Canali che non sono in nessun gruppo"
-
-#: ../../include/photos.php:112
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "L'immagine supera il limite massimo di %lu bytes"
-
-#: ../../include/photos.php:119
-msgid "Image file is empty."
-msgstr "Il file dell'immagine è vuoto."
-
-#: ../../include/photos.php:146 ../../mod/profile_photo.php:225
-#: ../../mod/cover_photo.php:164
-msgid "Unable to process image"
-msgstr "Impossibile elaborare l'immagine"
-
-#: ../../include/photos.php:257
-msgid "Photo storage failed."
-msgstr "Impossibile salvare la foto."
-
-#: ../../include/photos.php:297
-msgid "a new photo"
-msgstr "una nuova foto"
-
-#: ../../include/photos.php:301
-#, php-format
-msgctxt "photo_upload"
-msgid "%1$s posted %2$s to %3$s"
-msgstr "%1$s ha pubblicato %2$s su %3$s"
-
-#: ../../include/photos.php:510
-msgid "Upload New Photos"
-msgstr "Carica nuove foto"
-
-#: ../../include/text.php:394
-msgid "prev"
-msgstr "prec"
-
-#: ../../include/text.php:396
-msgid "first"
-msgstr "inizio"
-
-#: ../../include/text.php:425
-msgid "last"
-msgstr "fine"
-
-#: ../../include/text.php:428
-msgid "next"
-msgstr "succ"
-
-#: ../../include/text.php:438
-msgid "older"
-msgstr "più recenti"
-
-#: ../../include/text.php:440
-msgid "newer"
-msgstr "più nuovi"
-
-#: ../../include/text.php:822
-msgid "No connections"
-msgstr "Nessun contatto"
-
-#: ../../include/text.php:847
-#, php-format
-msgid "View all %s connections"
-msgstr "Mostra tutti i %s contatti"
-
-#: ../../include/text.php:992 ../../include/text.php:997
-msgid "poke"
-msgstr "poke"
-
-#: ../../include/text.php:998
-msgid "ping"
-msgstr "ping"
-
-#: ../../include/text.php:998
-msgid "pinged"
-msgstr "ha effettuato un ping"
-
-#: ../../include/text.php:999
-msgid "prod"
-msgstr "spintone"
-
-#: ../../include/text.php:999
-msgid "prodded"
-msgstr "ha ricevuto uno spintone"
-
-#: ../../include/text.php:1000
-msgid "slap"
-msgstr "schiaffo"
-
-#: ../../include/text.php:1000
-msgid "slapped"
-msgstr "ha ricevuto uno schiaffo"
-
-#: ../../include/text.php:1001
-msgid "finger"
-msgstr "finger"
-
-#: ../../include/text.php:1001
-msgid "fingered"
-msgstr "ha ricevuto un finger"
-
-#: ../../include/text.php:1002
-msgid "rebuff"
-msgstr "rifiuto"
-
-#: ../../include/text.php:1002
-msgid "rebuffed"
-msgstr "ha ricevuto un rifiuto"
-
-#: ../../include/text.php:1014
-msgid "happy"
-msgstr "felice"
-
-#: ../../include/text.php:1015
-msgid "sad"
-msgstr "triste"
-
-#: ../../include/text.php:1016
-msgid "mellow"
-msgstr "calmo"
-
-#: ../../include/text.php:1017
-msgid "tired"
-msgstr "stanco"
-
-#: ../../include/text.php:1018
-msgid "perky"
-msgstr "vivace"
-
-#: ../../include/text.php:1019
-msgid "angry"
-msgstr "arrabbiato"
-
-#: ../../include/text.php:1020
-msgid "stupefied"
-msgstr "stupito"
-
-#: ../../include/text.php:1021
-msgid "puzzled"
-msgstr "confuso"
-
-#: ../../include/text.php:1022
-msgid "interested"
-msgstr "attento"
-
-#: ../../include/text.php:1023
-msgid "bitter"
-msgstr "amaro"
-
-#: ../../include/text.php:1024
-msgid "cheerful"
-msgstr "allegro"
-
-#: ../../include/text.php:1025
-msgid "alive"
-msgstr "vivace"
-
-#: ../../include/text.php:1026
-msgid "annoyed"
-msgstr "seccato"
-
-#: ../../include/text.php:1027
-msgid "anxious"
-msgstr "ansioso"
-
-#: ../../include/text.php:1028
-msgid "cranky"
-msgstr "irritabile"
-
-#: ../../include/text.php:1029
-msgid "disturbed"
-msgstr "turbato"
-
-#: ../../include/text.php:1030
-msgid "frustrated"
-msgstr "frustrato"
-
-#: ../../include/text.php:1031
-msgid "depressed"
-msgstr "in depressione"
-
-#: ../../include/text.php:1032
-msgid "motivated"
-msgstr "motivato"
-
-#: ../../include/text.php:1033
-msgid "relaxed"
-msgstr "rilassato"
-
-#: ../../include/text.php:1034
-msgid "surprised"
-msgstr "sorpreso"
-
-#: ../../include/text.php:1210
-msgid "May"
-msgstr "Mag"
-
-#: ../../include/text.php:1287 ../../include/text.php:1291
-msgid "Unknown Attachment"
-msgstr "Allegato non riconoscuto"
+#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:191
+#: ../../Zotlabs/Module/Photos.php:1072 ../../Zotlabs/Module/Webpages.php:188
+#: ../../include/conversation.php:1208
+msgid "Share"
+msgstr "Condividi"
-#: ../../include/text.php:1293
-msgid "unknown"
-msgstr "sconosciuta"
+#: ../../Zotlabs/Module/Blocks.php:163 ../../Zotlabs/Module/Layouts.php:195
+#: ../../Zotlabs/Module/Pubsites.php:47 ../../Zotlabs/Module/Webpages.php:193
+#: ../../include/page_widgets.php:39
+msgid "View"
+msgstr "Guarda"
-#: ../../include/text.php:1329
-msgid "remove category"
-msgstr "rimuovi la categoria"
+#: ../../Zotlabs/Module/Cal.php:62 ../../Zotlabs/Module/Block.php:43
+#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Wall_upload.php:33
+msgid "Channel not found."
+msgstr "Canale non trovato."
-#: ../../include/text.php:1406
-msgid "remove from file"
-msgstr "rimuovi dal file"
+#: ../../Zotlabs/Module/Cal.php:69
+msgid "Permissions denied."
+msgstr "Permesso negato."
-#: ../../include/text.php:1548 ../../include/text.php:1559
-msgid "Click to open/close"
-msgstr "Clicca per aprire/chiudere"
+#: ../../Zotlabs/Module/Cal.php:259 ../../Zotlabs/Module/Events.php:588
+msgid "l, F j"
+msgstr "l j F"
-#: ../../include/text.php:1743 ../../mod/events.php:630 ../../mod/cal.php:302
+#: ../../Zotlabs/Module/Cal.php:308 ../../Zotlabs/Module/Events.php:637
+#: ../../include/text.php:1732
msgid "Link to Source"
msgstr "Link al sito d'origine"
-#: ../../include/text.php:1764 ../../include/text.php:1836
-msgid "default"
-msgstr "predefinito"
-
-#: ../../include/text.php:1772
-msgid "Page layout"
-msgstr "Layout della pagina"
-
-#: ../../include/text.php:1772
-msgid "You can create your own with the layouts tool"
-msgstr "Puoi creare un tuo layout dalla configurazione delle pagine web"
-
-#: ../../include/text.php:1814
-msgid "Page content type"
-msgstr "Tipo di contenuto della pagina"
-
-#: ../../include/text.php:1848
-msgid "Select an alternate language"
-msgstr "Seleziona una lingua diversa"
-
-#: ../../include/text.php:1980
-msgid "activity"
-msgstr "l'attività"
-
-#: ../../include/text.php:2275
-msgid "Design Tools"
-msgstr "Strumenti di design"
-
-#: ../../include/text.php:2278 ../../mod/blocks.php:147
-msgid "Blocks"
-msgstr "Block"
-
-#: ../../include/text.php:2279 ../../mod/menu.php:103
-msgid "Menus"
-msgstr "Menù"
-
-#: ../../include/text.php:2280 ../../mod/layouts.php:174
-msgid "Layouts"
-msgstr "Layout"
-
-#: ../../include/text.php:2281
-msgid "Pages"
-msgstr "Pagine"
-
-#: ../../include/message.php:20
-msgid "No recipient provided."
-msgstr "Devi scegliere un destinatario."
-
-#: ../../include/message.php:25
-msgid "[no subject]"
-msgstr "[nessun titolo]"
-
-#: ../../include/message.php:45
-msgid "Unable to determine sender."
-msgstr "Impossibile determinare il mittente."
-
-#: ../../include/message.php:222
-msgid "Stored post could not be verified."
-msgstr "Non è stato possibile verificare il post."
-
-#: ../../include/permissions.php:26
-msgid "Can view my normal stream and posts"
-msgstr "Può vedere i miei contenuti e i post normali"
-
-#: ../../include/permissions.php:27
-msgid "Can view my default channel profile"
-msgstr "Può vedere il profilo predefinito del canale"
-
-#: ../../include/permissions.php:28
-msgid "Can view my connections"
-msgstr "Può vedere i miei contatti"
-
-#: ../../include/permissions.php:29
-msgid "Can view my file storage and photos"
-msgstr "Può vedere il mio archivio file e foto"
-
-#: ../../include/permissions.php:30
-msgid "Can view my webpages"
-msgstr "Può vedere le mie pagine web"
-
-#: ../../include/permissions.php:33
-msgid "Can send me their channel stream and posts"
-msgstr "È tra i canali che seguo"
-
-#: ../../include/permissions.php:34
-msgid "Can post on my channel page (\"wall\")"
-msgstr "Può scrivere sulla bacheca del mio canale"
-
-#: ../../include/permissions.php:35
-msgid "Can comment on or like my posts"
-msgstr "Può commentare o aggiungere \"mi piace\" ai miei post"
-
-#: ../../include/permissions.php:36
-msgid "Can send me private mail messages"
-msgstr "Può inviarmi messaggi privati"
-
-#: ../../include/permissions.php:37
-msgid "Can like/dislike stuff"
-msgstr "Può aggiungere \"mi piace\" a tutto il resto"
-
-#: ../../include/permissions.php:37
-msgid "Profiles and things other than posts/comments"
-msgstr "Può aggiungere \"mi piace\" a tutto ciò che non riguarda i post, come per esempio il profilo"
-
-#: ../../include/permissions.php:39
-msgid "Can forward to all my channel contacts via post @mentions"
-msgstr "Può inoltrare post a tutti i contatti del canale tramite una @menzione"
-
-#: ../../include/permissions.php:39
-msgid "Advanced - useful for creating group forum channels"
-msgstr "Impostazione avanzata - utile per creare un canale-forum di discussione"
-
-#: ../../include/permissions.php:40
-msgid "Can chat with me (when available)"
-msgstr "Può aprire una chat con me (se disponibile)"
-
-#: ../../include/permissions.php:41
-msgid "Can write to my file storage and photos"
-msgstr "Può modificare il mio archivio file e foto"
-
-#: ../../include/permissions.php:42
-msgid "Can edit my webpages"
-msgstr "Può modificare le mie pagine web"
-
-#: ../../include/permissions.php:44
-msgid "Can source my public posts in derived channels"
-msgstr "Può usare i miei post pubblici per creare canali derivati"
-
-#: ../../include/permissions.php:44
-msgid "Somewhat advanced - very useful in open communities"
-msgstr "Piuttosto avanzato - molto utile nelle comunità aperte"
-
-#: ../../include/permissions.php:46
-msgid "Can administer my channel resources"
-msgstr "Può amministrare i contenuti del mio canale"
-
-#: ../../include/permissions.php:46
-msgid ""
-"Extremely advanced. Leave this alone unless you know what you are doing"
-msgstr "Impostazione pericolosa - lasciare il valore predefinito se non si è assolutamente sicuri"
-
-#: ../../include/permissions.php:877
-msgid "Social Networking"
-msgstr "Social network"
-
-#: ../../include/permissions.php:877
-msgid "Social - Mostly Public"
-msgstr "Social - Prevalentemente pubblico"
-
-#: ../../include/permissions.php:877
-msgid "Social - Restricted"
-msgstr "Social - Con restrizioni"
-
-#: ../../include/permissions.php:877
-msgid "Social - Private"
-msgstr "Social - Privato"
-
-#: ../../include/permissions.php:878
-msgid "Community Forum"
-msgstr "Forum di discussione"
-
-#: ../../include/permissions.php:878
-msgid "Forum - Mostly Public"
-msgstr "Social - Prevalentemente pubblico"
-
-#: ../../include/permissions.php:878
-msgid "Forum - Restricted"
-msgstr "Forum - Con restrizioni"
-
-#: ../../include/permissions.php:878
-msgid "Forum - Private"
-msgstr "Forum - Privato"
-
-#: ../../include/permissions.php:879
-msgid "Feed Republish"
-msgstr "Aggregatore di feed esterni"
-
-#: ../../include/permissions.php:879
-msgid "Feed - Mostly Public"
-msgstr "Feed - Prevalentemente pubblico"
-
-#: ../../include/permissions.php:879
-msgid "Feed - Restricted"
-msgstr "Feed - Con restrizioni"
-
-#: ../../include/permissions.php:880
-msgid "Special Purpose"
-msgstr "Per finalità speciali"
-
-#: ../../include/permissions.php:880
-msgid "Special - Celebrity/Soapbox"
-msgstr "Speciale - Pagina per fan"
-
-#: ../../include/permissions.php:880
-msgid "Special - Group Repository"
-msgstr "Speciale - Repository di gruppo"
-
-#: ../../include/permissions.php:881
-msgid "Custom/Expert Mode"
-msgstr "Personalizzazione per esperti"
-
-#: ../../include/security.php:383
-msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "I controlli di sicurezza sono falliti. Probabilmente è accaduto perché la pagina è stata tenuta aperta troppo a lungo (ore?) prima di inviare il contenuto."
-
-#: ../../include/account.php:28
-msgid "Not a valid email address"
-msgstr "Email non valida"
-
-#: ../../include/account.php:30
-msgid "Your email domain is not among those allowed on this site"
-msgstr "Il dominio della tua email attualmente non è permesso su questo sito"
-
-#: ../../include/account.php:36
-msgid "Your email address is already registered at this site."
-msgstr "La tua email è già registrata su questo sito."
-
-#: ../../include/account.php:68
-msgid "An invitation is required."
-msgstr "È necessario un invito."
-
-#: ../../include/account.php:72
-msgid "Invitation could not be verified."
-msgstr "L'invito non può essere verificato."
-
-#: ../../include/account.php:122
-msgid "Please enter the required information."
-msgstr "Inserisci le informazioni richieste."
-
-#: ../../include/account.php:189
-msgid "Failed to store account information."
-msgstr "Non è stato possibile salvare le informazioni del tuo account."
-
-#: ../../include/account.php:249
-#, php-format
-msgid "Registration confirmation for %s"
-msgstr "Registrazione di %s confermata"
-
-#: ../../include/account.php:315
-#, php-format
-msgid "Registration request at %s"
-msgstr "Richiesta di registrazione su %s"
-
-#: ../../include/account.php:339
-msgid "your registration password"
-msgstr "la password di registrazione"
-
-#: ../../include/account.php:342 ../../include/account.php:402
-#, php-format
-msgid "Registration details for %s"
-msgstr "Dettagli della registrazione di %s"
-
-#: ../../include/account.php:414
-msgid "Account approved."
-msgstr "Account approvato."
-
-#: ../../include/account.php:454
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registrazione revocata per %s"
-
-#: ../../include/account.php:506
-msgid "Account verified. Please login."
-msgstr "Registrazione verificata. Adesso puoi effettuare login."
-
-#: ../../include/account.php:719 ../../include/account.php:721
-msgid "Click here to upgrade."
-msgstr "Clicca qui per aggiornare."
-
-#: ../../include/account.php:727
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Questa operazione supera i limiti del tuo abbonamento."
-
-#: ../../include/account.php:732
-msgid "This action is not available under your subscription plan."
-msgstr "Questa operazione non è prevista dal tuo abbonamento."
-
-#: ../../include/acl_selectors.php:218
-msgid "Visible to your default audience"
-msgstr "Visibile secondo le impostazioni predefinite"
-
-#: ../../include/acl_selectors.php:243
-msgid "Show"
-msgstr "Mostra"
-
-#: ../../include/acl_selectors.php:244
-msgid "Don't show"
-msgstr "Non mostrare"
-
-#: ../../include/acl_selectors.php:249
-msgid "Other networks and post services"
-msgstr "Invio ad altre reti o a siti esterni"
-
-#: ../../include/acl_selectors.php:251 ../../mod/chat.php:229
-#: ../../mod/filestorage.php:147 ../../mod/photos.php:666
-#: ../../mod/photos.php:1040 ../../mod/thing.php:309 ../../mod/thing.php:355
-msgid "Permissions"
-msgstr "Permessi"
-
-#: ../../include/chat.php:23
-msgid "Missing room name"
-msgstr "Chat senza nome"
-
-#: ../../include/chat.php:32
-msgid "Duplicate room name"
-msgstr "Il nome della chat è duplicato"
-
-#: ../../include/chat.php:82 ../../include/chat.php:90
-msgid "Invalid room specifier."
-msgstr "Il nome della chat non è valido."
-
-#: ../../include/chat.php:122
-msgid "Room not found."
-msgstr "Chat non trovata."
-
-#: ../../include/chat.php:143
-msgid "Room is full"
-msgstr "La chat è al completo"
-
-#: ../../include/Contact.php:118
-msgid "New window"
-msgstr "Nuova finestra"
-
-#: ../../include/Contact.php:119
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Apri l'indirizzo selezionato in una nuova scheda o finestra"
-
-#: ../../include/Contact.php:237
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Utente '%s' eliminato"
-
-#: ../../mod/achievements.php:34
-msgid "Some blurb about what to do when you're new here"
-msgstr "Qualche suggerimento per i nuovi utenti su cosa fare"
-
-#: ../../mod/acl.php:221
-msgid "network"
-msgstr "rete"
-
-#: ../../mod/acl.php:231
-msgid "RSS"
-msgstr "RSS"
-
-#: ../../mod/api.php:74 ../../mod/api.php:98
-msgid "Authorize application connection"
-msgstr "Autorizza la app"
-
-#: ../../mod/api.php:75
-msgid "Return to your app and insert this Securty Code:"
-msgstr "Torna alla app e inserisci questo codice di sicurezza:"
-
-#: ../../mod/api.php:85
-msgid "Please login to continue."
-msgstr "Accedi al sito per continuare."
-
-#: ../../mod/api.php:100
-msgid ""
-"Do you want to authorize this application to access your posts and contacts,"
-" and/or create new posts for you?"
-msgstr "Vuoi autorizzare questa app ad accedere ai messaggi e ai contatti o creare nuovi messaggi per te?"
-
-#: ../../mod/appman.php:28 ../../mod/appman.php:44
-msgid "App installed."
-msgstr "App installata"
-
-#: ../../mod/appman.php:37
-msgid "Malformed app."
-msgstr "L'app contiene errori"
-
-#: ../../mod/appman.php:80
-msgid "Embed code"
-msgstr "Inserisci il codice"
-
-#: ../../mod/appman.php:86
-msgid "Edit App"
-msgstr "Modifica app"
-
-#: ../../mod/appman.php:86
-msgid "Create App"
-msgstr "Crea una app"
-
-#: ../../mod/appman.php:91
-msgid "Name of app"
-msgstr "Nome app"
-
-#: ../../mod/appman.php:92
-msgid "Location (URL) of app"
-msgstr "Indirizzo (URL) della app"
-
-#: ../../mod/appman.php:93 ../../mod/events.php:457 ../../mod/rbmark.php:97
-msgid "Description"
-msgstr "Descrizione"
-
-#: ../../mod/appman.php:94
-msgid "Photo icon URL"
-msgstr "URL icona"
-
-#: ../../mod/appman.php:94
-msgid "80 x 80 pixels - optional"
-msgstr "80 x 80 pixel - facoltativa"
-
-#: ../../mod/appman.php:95
-msgid "Version ID"
-msgstr "ID versione"
-
-#: ../../mod/appman.php:96
-msgid "Price of app"
-msgstr "Prezzo app"
-
-#: ../../mod/appman.php:97
-msgid "Location (URL) to purchase app"
-msgstr "Indirizzo (URL) per acquistare la app"
-
-#: ../../mod/attach.php:9
-msgid "Item not available."
-msgstr "Elemento non disponibile."
+#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:665
+msgid "Edit Event"
+msgstr "Modifica l'evento"
-#: ../../mod/block.php:27 ../../mod/page.php:36
-msgid "Invalid item."
-msgstr "Elemento non valido."
+#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:665
+msgid "Create Event"
+msgstr "Crea un evento"
-#: ../../mod/block.php:39 ../../mod/page.php:52 ../../mod/wall_upload.php:29
-#: ../../mod/cal.php:56
-msgid "Channel not found."
-msgstr "Canale non trovato."
+#: ../../Zotlabs/Module/Cal.php:332 ../../Zotlabs/Module/Cal.php:339
+#: ../../Zotlabs/Module/Events.php:666 ../../Zotlabs/Module/Events.php:673
+#: ../../Zotlabs/Module/Photos.php:949
+msgid "Previous"
+msgstr "Precendente"
-#: ../../mod/blocks.php:95 ../../mod/blocks.php:148
-msgid "Block Name"
-msgstr "Nome del block"
+#: ../../Zotlabs/Module/Cal.php:333 ../../Zotlabs/Module/Cal.php:340
+#: ../../Zotlabs/Module/Events.php:667 ../../Zotlabs/Module/Events.php:674
+#: ../../Zotlabs/Module/Photos.php:958 ../../Zotlabs/Module/Setup.php:267
+msgid "Next"
+msgstr "Successivo"
-#: ../../mod/blocks.php:149
-msgid "Block Title"
-msgstr "Titolo del block"
+#: ../../Zotlabs/Module/Cal.php:334 ../../Zotlabs/Module/Events.php:668
+#: ../../include/widgets.php:755
+msgid "Export"
+msgstr "Esporta"
-#: ../../mod/bookmarks.php:40
-msgid "Bookmark added"
-msgstr "Segnalibro aggiunto"
+#: ../../Zotlabs/Module/Cal.php:337 ../../Zotlabs/Module/Events.php:671
+#: ../../include/widgets.php:756
+msgid "Import"
+msgstr "Importa"
-#: ../../mod/bookmarks.php:62
-msgid "My Bookmarks"
-msgstr "I miei segnalibri"
+#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Chat.php:196
+#: ../../Zotlabs/Module/Chat.php:238 ../../Zotlabs/Module/Connect.php:98
+#: ../../Zotlabs/Module/Connedit.php:731 ../../Zotlabs/Module/Events.php:475
+#: ../../Zotlabs/Module/Events.php:672 ../../Zotlabs/Module/Group.php:85
+#: ../../Zotlabs/Module/Filestorage.php:162
+#: ../../Zotlabs/Module/Import.php:550
+#: ../../Zotlabs/Module/Import_items.php:120
+#: ../../Zotlabs/Module/Invite.php:146 ../../Zotlabs/Module/Locs.php:121
+#: ../../Zotlabs/Module/Mail.php:378 ../../Zotlabs/Module/Mood.php:139
+#: ../../Zotlabs/Module/Mitem.php:235 ../../Zotlabs/Module/Photos.php:677
+#: ../../Zotlabs/Module/Photos.php:1052 ../../Zotlabs/Module/Photos.php:1092
+#: ../../Zotlabs/Module/Photos.php:1210 ../../Zotlabs/Module/Pconfig.php:107
+#: ../../Zotlabs/Module/Pdledit.php:66 ../../Zotlabs/Module/Poke.php:186
+#: ../../Zotlabs/Module/Profiles.php:687 ../../Zotlabs/Module/Rate.php:170
+#: ../../Zotlabs/Module/Admin.php:492 ../../Zotlabs/Module/Admin.php:688
+#: ../../Zotlabs/Module/Admin.php:771 ../../Zotlabs/Module/Admin.php:1032
+#: ../../Zotlabs/Module/Admin.php:1211 ../../Zotlabs/Module/Admin.php:1421
+#: ../../Zotlabs/Module/Admin.php:1648 ../../Zotlabs/Module/Admin.php:1733
+#: ../../Zotlabs/Module/Admin.php:2116 ../../Zotlabs/Module/Appman.php:126
+#: ../../Zotlabs/Module/Settings.php:590 ../../Zotlabs/Module/Settings.php:703
+#: ../../Zotlabs/Module/Settings.php:731 ../../Zotlabs/Module/Settings.php:754
+#: ../../Zotlabs/Module/Settings.php:842
+#: ../../Zotlabs/Module/Settings.php:1034 ../../Zotlabs/Module/Setup.php:312
+#: ../../Zotlabs/Module/Setup.php:353 ../../Zotlabs/Module/Sources.php:114
+#: ../../Zotlabs/Module/Sources.php:149 ../../Zotlabs/Module/Thing.php:316
+#: ../../Zotlabs/Module/Thing.php:362 ../../Zotlabs/Module/Xchan.php:15
+#: ../../Zotlabs/Lib/ThreadItem.php:710 ../../include/widgets.php:757
+#: ../../include/widgets.php:769 ../../include/js_strings.php:22
+#: ../../view/theme/redbasic/php/config.php:99
+msgid "Submit"
+msgstr "Salva"
-#: ../../mod/bookmarks.php:73
-msgid "My Connections Bookmarks"
-msgstr "I segnalibri dei miei contatti"
+#: ../../Zotlabs/Module/Cal.php:341 ../../Zotlabs/Module/Events.php:675
+msgid "Today"
+msgstr "Oggi"
-#: ../../mod/channel.php:25 ../../mod/chat.php:19
+#: ../../Zotlabs/Module/Channel.php:29 ../../Zotlabs/Module/Chat.php:25
msgid "You must be logged in to see this page."
msgstr "Devi aver effettuato l'accesso per vedere questa pagina."
-#: ../../mod/channel.php:37
+#: ../../Zotlabs/Module/Channel.php:41
msgid "Posts and comments"
msgstr "Post e commenti"
-#: ../../mod/channel.php:38
+#: ../../Zotlabs/Module/Channel.php:42
msgid "Only posts"
msgstr "Solo post"
-#: ../../mod/channel.php:97
+#: ../../Zotlabs/Module/Channel.php:102
msgid "Insufficient permissions. Request redirected to profile page."
msgstr "Permessi insufficienti. Sarà visualizzata la pagina del profilo."
-#: ../../mod/channel.php:131 ../../mod/network.php:169 ../../mod/rpost.php:114
-msgid "Public"
-msgstr "Pubblico"
-
-#: ../../mod/chat.php:175
+#: ../../Zotlabs/Module/Chat.php:181
msgid "Room not found"
msgstr "Chat non trovata"
-#: ../../mod/chat.php:191
+#: ../../Zotlabs/Module/Chat.php:197
msgid "Leave Room"
msgstr "Lascia la chat"
-#: ../../mod/chat.php:192
+#: ../../Zotlabs/Module/Chat.php:198
msgid "Delete Room"
msgstr "Elimina questa chat"
-#: ../../mod/chat.php:193
+#: ../../Zotlabs/Module/Chat.php:199
msgid "I am away right now"
msgstr "Non sono presente"
-#: ../../mod/chat.php:194
+#: ../../Zotlabs/Module/Chat.php:200
msgid "I am online"
msgstr "Sono online"
-#: ../../mod/chat.php:196
+#: ../../Zotlabs/Module/Chat.php:202
msgid "Bookmark this room"
msgstr "Aggiungi questa chat ai segnalibri"
-#: ../../mod/chat.php:212
+#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Mail.php:205
+#: ../../Zotlabs/Module/Mail.php:314 ../../include/conversation.php:1176
+msgid "Please enter a link URL:"
+msgstr "Inserisci l'indirizzo del link:"
+
+#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Module/Mail.php:258
+#: ../../Zotlabs/Module/Mail.php:383 ../../Zotlabs/Lib/ThreadItem.php:722
+#: ../../include/conversation.php:1256
+msgid "Encrypt text"
+msgstr "Cifratura del messaggio"
+
+#: ../../Zotlabs/Module/Chat.php:207 ../../Zotlabs/Module/Editblock.php:111
+#: ../../Zotlabs/Module/Editwebpage.php:147 ../../Zotlabs/Module/Mail.php:252
+#: ../../Zotlabs/Module/Mail.php:377 ../../include/conversation.php:1143
+msgid "Insert web link"
+msgstr "Inserisci un indirizzo web"
+
+#: ../../Zotlabs/Module/Chat.php:218
msgid "Feature disabled."
msgstr "Funzionalità disattivata."
-#: ../../mod/chat.php:226
+#: ../../Zotlabs/Module/Chat.php:232
msgid "New Chatroom"
msgstr "Nuova chat"
-#: ../../mod/chat.php:227
+#: ../../Zotlabs/Module/Chat.php:233
msgid "Chatroom name"
msgstr "Nome chat"
-#: ../../mod/chat.php:228
+#: ../../Zotlabs/Module/Chat.php:234
msgid "Expiration of chats (minutes)"
msgstr "Scadenza dei messaggi della chat (minuti)"
-#: ../../mod/chat.php:240
+#: ../../Zotlabs/Module/Chat.php:235 ../../Zotlabs/Module/Filestorage.php:153
+#: ../../Zotlabs/Module/Photos.php:671 ../../Zotlabs/Module/Photos.php:1045
+#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:359
+#: ../../include/acl_selectors.php:283
+msgid "Permissions"
+msgstr "Permessi"
+
+#: ../../Zotlabs/Module/Chat.php:246
#, php-format
msgid "%1$s's Chatrooms"
msgstr "Le chat di %1$s"
-#: ../../mod/chat.php:245
+#: ../../Zotlabs/Module/Chat.php:251
msgid "No chatrooms available"
msgstr "Nessuna chat disponibile"
-#: ../../mod/chat.php:246 ../../mod/manage.php:137 ../../mod/profiles.php:777
+#: ../../Zotlabs/Module/Chat.php:252 ../../Zotlabs/Module/Manage.php:143
+#: ../../Zotlabs/Module/Profiles.php:778
msgid "Create New"
msgstr "Crea nuova"
-#: ../../mod/chat.php:249
+#: ../../Zotlabs/Module/Chat.php:255
msgid "Expiration"
msgstr "Scadenza"
-#: ../../mod/chat.php:250
+#: ../../Zotlabs/Module/Chat.php:256
msgid "min"
msgstr "min"
-#: ../../mod/chatsvc.php:111
+#: ../../Zotlabs/Module/Chatsvc.php:117
msgid "Away"
msgstr "Assente"
-#: ../../mod/chatsvc.php:116
+#: ../../Zotlabs/Module/Chatsvc.php:122
msgid "Online"
msgstr "Online"
-#: ../../mod/common.php:10
-msgid "No channel."
-msgstr "Nessun canale."
+#: ../../Zotlabs/Module/Block.php:31 ../../Zotlabs/Module/Page.php:40
+msgid "Invalid item."
+msgstr "Elemento non valido."
-#: ../../mod/common.php:39
-msgid "Common connections"
-msgstr "Contatti in comune"
+#: ../../Zotlabs/Module/Bookmarks.php:53
+msgid "Bookmark added"
+msgstr "Segnalibro aggiunto"
-#: ../../mod/common.php:44
-msgid "No connections in common."
-msgstr "Nessun contatto in comune."
+#: ../../Zotlabs/Module/Bookmarks.php:75
+msgid "My Bookmarks"
+msgstr "I miei segnalibri"
-#: ../../mod/connect.php:56 ../../mod/connect.php:104
+#: ../../Zotlabs/Module/Bookmarks.php:86
+msgid "My Connections Bookmarks"
+msgstr "I segnalibri dei miei contatti"
+
+#: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109
msgid "Continue"
msgstr "Continua"
-#: ../../mod/connect.php:85
+#: ../../Zotlabs/Module/Connect.php:90
msgid "Premium Channel Setup"
msgstr "Canale premium - configurazione"
-#: ../../mod/connect.php:87
+#: ../../Zotlabs/Module/Connect.php:92
msgid "Enable premium channel connection restrictions"
msgstr "Abilita le restrizioni del canale premium"
-#: ../../mod/connect.php:88
+#: ../../Zotlabs/Module/Connect.php:93
msgid ""
"Please enter your restrictions or conditions, such as paypal receipt, usage "
"guidelines, etc."
msgstr "Scrivi le condizioni d'uso e le restrizioni di questo canale, come per esempio le linee guida, il sistema di pagamento, ecc."
-#: ../../mod/connect.php:90 ../../mod/connect.php:110
+#: ../../Zotlabs/Module/Connect.php:95 ../../Zotlabs/Module/Connect.php:115
msgid ""
"This channel may require additional steps or acknowledgement of the "
"following conditions prior to connecting:"
msgstr "Prima di connetterti a questo canale è necessario che tu accetti le seguenti condizioni:"
-#: ../../mod/connect.php:91
+#: ../../Zotlabs/Module/Connect.php:96
msgid ""
"Potential connections will then see the following text before proceeding:"
msgstr "Il testo seguente comparirà a chi vorrà seguire il canale:"
-#: ../../mod/connect.php:92 ../../mod/connect.php:113
+#: ../../Zotlabs/Module/Connect.php:97 ../../Zotlabs/Module/Connect.php:118
msgid ""
"By continuing, I certify that I have complied with any instructions provided"
" on this page."
msgstr "Continuando dichiaro di aver seguito tutte le indicazioni e le istruzioni fornite in questa pagina."
-#: ../../mod/connect.php:101
+#: ../../Zotlabs/Module/Connect.php:106
msgid "(No specific instructions have been provided by the channel owner.)"
msgstr "(Il gestore del canale non ha fornito istruzioni specifiche)"
-#: ../../mod/connect.php:109
+#: ../../Zotlabs/Module/Connect.php:114
msgid "Restricted or Premium Channel"
msgstr "Canale premium - con restrizioni"
-#: ../../mod/connections.php:52 ../../mod/connections.php:157
-#: ../../mod/connections.php:238
-msgid "Blocked"
-msgstr "Bloccati"
-
-#: ../../mod/connections.php:57 ../../mod/connections.php:164
-#: ../../mod/connections.php:237
-msgid "Ignored"
-msgstr "Ignorati"
-
-#: ../../mod/connections.php:62 ../../mod/connections.php:178
-#: ../../mod/connections.php:236
-msgid "Hidden"
-msgstr "Nascosti"
-
-#: ../../mod/connections.php:67 ../../mod/connections.php:171
-#: ../../mod/connections.php:235
-msgid "Archived"
-msgstr "Archiviati"
-
-#: ../../mod/connections.php:134
-msgid "New Connections"
-msgstr "Nuovi contatti"
-
-#: ../../mod/connections.php:137
-msgid "Show pending (new) connections"
-msgstr "Richieste di contatto in attesa"
-
-#: ../../mod/connections.php:141 ../../mod/profperm.php:139
-msgid "All Connections"
-msgstr "Tutti i contatti"
-
-#: ../../mod/connections.php:144
-msgid "Show all connections"
-msgstr "Mostra tutti i contatti"
-
-#: ../../mod/connections.php:160
-msgid "Only show blocked connections"
-msgstr "Mostra solo i contatti bloccati"
-
-#: ../../mod/connections.php:167
-msgid "Only show ignored connections"
-msgstr "Mostra solo i contatti ignorati"
-
-#: ../../mod/connections.php:174
-msgid "Only show archived connections"
-msgstr "Mostra solo i contatti archiviati"
-
-#: ../../mod/connections.php:181
-msgid "Only show hidden connections"
-msgstr "Mostra solo i contatti nascosti"
-
-#: ../../mod/connections.php:234
-msgid "Pending approval"
-msgstr "In attesa di conferma"
-
-#: ../../mod/connections.php:250
-#, php-format
-msgid "%1$s [%2$s]"
-msgstr "%1$s [%2$s]"
-
-#: ../../mod/connections.php:251
-msgid "Edit connection"
-msgstr "Modifica il contatto"
-
-#: ../../mod/connections.php:252
-msgid "Delete connection"
-msgstr "Elimina il contatto"
-
-#: ../../mod/connections.php:261
-msgid "Channel address"
-msgstr "Indirizzo del canale"
-
-#: ../../mod/connections.php:263
-msgid "Network"
-msgstr "Network"
-
-#: ../../mod/connections.php:266 ../../mod/admin.php:668
-msgid "Status"
-msgstr "Stato"
-
-#: ../../mod/connections.php:268
-msgid "Connected"
-msgstr "In contatto"
-
-#: ../../mod/connections.php:270
-msgid "Approve connection"
-msgstr "Approva questo contatto"
-
-#: ../../mod/connections.php:271 ../../mod/admin.php:991
-msgid "Approve"
-msgstr "Approva"
-
-#: ../../mod/connections.php:272
-msgid "Ignore connection"
-msgstr "Ignora il contatto"
-
-#: ../../mod/connections.php:273 ../../mod/connedit.php:545
-#: ../../mod/notifications.php:51
-msgid "Ignore"
-msgstr "Ignora"
-
-#: ../../mod/connections.php:274
-msgid "Recent activity"
-msgstr "Attività recenti"
-
-#: ../../mod/connections.php:303
-msgid "Search your connections"
-msgstr "Cerca tra i contatti"
-
-#: ../../mod/connections.php:304
-msgid "Connections search"
-msgstr "Ricerca tra i contatti"
-
-#: ../../mod/connedit.php:75
+#: ../../Zotlabs/Module/Connedit.php:80
msgid "Could not access contact record."
msgstr "Non è possibile accedere alle informazioni sul contatto."
-#: ../../mod/connedit.php:99
+#: ../../Zotlabs/Module/Connedit.php:104
msgid "Could not locate selected profile."
msgstr "Non riesco a trovare il profilo selezionato."
-#: ../../mod/connedit.php:223
+#: ../../Zotlabs/Module/Connedit.php:227
msgid "Connection updated."
msgstr "Contatto aggiornato."
-#: ../../mod/connedit.php:225
+#: ../../Zotlabs/Module/Connedit.php:229
msgid "Failed to update connection record."
msgstr "Impossibile aggiornare le informazioni del contatto."
-#: ../../mod/connedit.php:272
+#: ../../Zotlabs/Module/Connedit.php:276
msgid "is now connected to"
msgstr "ha come nuovo contatto"
-#: ../../mod/connedit.php:407
+#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Connedit.php:654
+#: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:460
+#: ../../Zotlabs/Module/Events.php:469 ../../Zotlabs/Module/Api.php:89
+#: ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Menu.php:100
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
+#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Admin.php:459
+#: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707
+msgid "No"
+msgstr "No"
+
+#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Events.php:459
+#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:469
+#: ../../Zotlabs/Module/Api.php:88 ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Menu.php:100
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
+#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Admin.php:461
+#: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707
+msgid "Yes"
+msgstr "Sì"
+
+#: ../../Zotlabs/Module/Connedit.php:411
msgid "Could not access address book record."
msgstr "Impossibile accedere alle informazioni della rubrica."
-#: ../../mod/connedit.php:421
+#: ../../Zotlabs/Module/Connedit.php:425
msgid "Refresh failed - channel is currently unavailable."
msgstr "Il canale non è disponibile - impossibile aggiornare."
-#: ../../mod/connedit.php:436 ../../mod/connedit.php:445
-#: ../../mod/connedit.php:454 ../../mod/connedit.php:463
-#: ../../mod/connedit.php:476
+#: ../../Zotlabs/Module/Connedit.php:440 ../../Zotlabs/Module/Connedit.php:449
+#: ../../Zotlabs/Module/Connedit.php:458 ../../Zotlabs/Module/Connedit.php:467
+#: ../../Zotlabs/Module/Connedit.php:480
msgid "Unable to set address book parameters."
msgstr "Impossibile impostare i parametri della rubrica."
-#: ../../mod/connedit.php:500
+#: ../../Zotlabs/Module/Connedit.php:503
msgid "Connection has been removed."
msgstr "Il contatto è stato rimosso."
-#: ../../mod/connedit.php:519
+#: ../../Zotlabs/Module/Connedit.php:519 ../../Zotlabs/Lib/Apps.php:219
+#: ../../include/nav.php:86 ../../include/conversation.php:954
+msgid "View Profile"
+msgstr "Profilo"
+
+#: ../../Zotlabs/Module/Connedit.php:522
#, php-format
msgid "View %s's profile"
msgstr "Guarda il profilo di %s"
-#: ../../mod/connedit.php:523
+#: ../../Zotlabs/Module/Connedit.php:526
msgid "Refresh Permissions"
msgstr "Modifica i permessi"
-#: ../../mod/connedit.php:526
+#: ../../Zotlabs/Module/Connedit.php:529
msgid "Fetch updated permissions"
msgstr "Guarda e modifica i permessi assegnati"
-#: ../../mod/connedit.php:530
+#: ../../Zotlabs/Module/Connedit.php:533
msgid "Recent Activity"
msgstr "Attività recenti"
-#: ../../mod/connedit.php:533
+#: ../../Zotlabs/Module/Connedit.php:536
msgid "View recent posts and comments"
msgstr "Leggi i post recenti e i commenti"
-#: ../../mod/connedit.php:537 ../../mod/admin.php:995
+#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1041
msgid "Unblock"
msgstr "Sblocca"
-#: ../../mod/connedit.php:537 ../../mod/admin.php:994
+#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1040
msgid "Block"
msgstr "Blocca"
-#: ../../mod/connedit.php:540
+#: ../../Zotlabs/Module/Connedit.php:543
msgid "Block (or Unblock) all communications with this connection"
msgstr "Blocca ogni interazione con questo contatto (abilita/disabilita)"
-#: ../../mod/connedit.php:541
+#: ../../Zotlabs/Module/Connedit.php:544
msgid "This connection is blocked!"
msgstr "Questa connessione è tra quelle bloccate!"
-#: ../../mod/connedit.php:545
+#: ../../Zotlabs/Module/Connedit.php:548
msgid "Unignore"
msgstr "Non ignorare"
-#: ../../mod/connedit.php:548
+#: ../../Zotlabs/Module/Connedit.php:548
+#: ../../Zotlabs/Module/Connections.php:277
+#: ../../Zotlabs/Module/Notifications.php:55
+msgid "Ignore"
+msgstr "Ignora"
+
+#: ../../Zotlabs/Module/Connedit.php:551
msgid "Ignore (or Unignore) all inbound communications from this connection"
msgstr "Ignora tutte le comunicazioni in arrivo da questo contatto (abilita/disabilita)"
-#: ../../mod/connedit.php:549
+#: ../../Zotlabs/Module/Connedit.php:552
msgid "This connection is ignored!"
msgstr "Questa connessione è tra quelle ignorate!"
-#: ../../mod/connedit.php:553
+#: ../../Zotlabs/Module/Connedit.php:556
msgid "Unarchive"
msgstr "Non archiviare"
-#: ../../mod/connedit.php:553
+#: ../../Zotlabs/Module/Connedit.php:556
msgid "Archive"
msgstr "Archivia"
-#: ../../mod/connedit.php:556
+#: ../../Zotlabs/Module/Connedit.php:559
msgid ""
"Archive (or Unarchive) this connection - mark channel dead but keep content"
msgstr "Archivia questo contatto (abilita/disabilita) - segna il canale come non più attivo ma ne conserva i contenuti"
-#: ../../mod/connedit.php:557
+#: ../../Zotlabs/Module/Connedit.php:560
msgid "This connection is archived!"
msgstr "Questa connessione è tra quelle archiviate!"
-#: ../../mod/connedit.php:561
+#: ../../Zotlabs/Module/Connedit.php:564
msgid "Unhide"
msgstr "Non nascondere"
-#: ../../mod/connedit.php:561
+#: ../../Zotlabs/Module/Connedit.php:564
msgid "Hide"
msgstr "Nascondi"
-#: ../../mod/connedit.php:564
+#: ../../Zotlabs/Module/Connedit.php:567
msgid "Hide or Unhide this connection from your other connections"
msgstr "Nascondi questo contatto a tutti gli altri (abilita/disabilita)"
-#: ../../mod/connedit.php:565
+#: ../../Zotlabs/Module/Connedit.php:568
msgid "This connection is hidden!"
msgstr "Questa connessione è tra quelle nascoste!"
-#: ../../mod/connedit.php:572
+#: ../../Zotlabs/Module/Connedit.php:575
msgid "Delete this connection"
msgstr "Elimina questo contatto"
-#: ../../mod/connedit.php:653
+#: ../../Zotlabs/Module/Connedit.php:590 ../../include/widgets.php:493
+msgid "Me"
+msgstr "Me"
+
+#: ../../Zotlabs/Module/Connedit.php:591 ../../include/widgets.php:494
+msgid "Family"
+msgstr "Famiglia"
+
+#: ../../Zotlabs/Module/Connedit.php:592 ../../Zotlabs/Module/Settings.php:342
+#: ../../Zotlabs/Module/Settings.php:346 ../../Zotlabs/Module/Settings.php:347
+#: ../../Zotlabs/Module/Settings.php:350 ../../Zotlabs/Module/Settings.php:361
+#: ../../include/widgets.php:495 ../../include/selectors.php:123
+#: ../../include/channel.php:389 ../../include/channel.php:390
+#: ../../include/channel.php:397
+msgid "Friends"
+msgstr "Amici"
+
+#: ../../Zotlabs/Module/Connedit.php:593 ../../include/widgets.php:496
+msgid "Acquaintances"
+msgstr "Conoscenti"
+
+#: ../../Zotlabs/Module/Connedit.php:594
+#: ../../Zotlabs/Module/Connections.php:92
+#: ../../Zotlabs/Module/Connections.php:107 ../../include/widgets.php:497
+msgid "All"
+msgstr "Tutti"
+
+#: ../../Zotlabs/Module/Connedit.php:654
msgid "Approve this connection"
msgstr "Approva questo contatto"
-#: ../../mod/connedit.php:653
+#: ../../Zotlabs/Module/Connedit.php:654
msgid "Accept connection to allow communication"
msgstr "Entra in contatto per poter comunicare"
-#: ../../mod/connedit.php:658
+#: ../../Zotlabs/Module/Connedit.php:659
msgid "Set Affinity"
msgstr "Scegli l'affinità"
-#: ../../mod/connedit.php:661
+#: ../../Zotlabs/Module/Connedit.php:662
msgid "Set Profile"
msgstr "Scegli il profilo da mostrare"
-#: ../../mod/connedit.php:664
+#: ../../Zotlabs/Module/Connedit.php:665
msgid "Set Affinity & Profile"
msgstr "Affinità e profilo"
-#: ../../mod/connedit.php:697
+#: ../../Zotlabs/Module/Connedit.php:698
msgid "none"
msgstr "--"
-#: ../../mod/connedit.php:702
+#: ../../Zotlabs/Module/Connedit.php:702 ../../include/widgets.php:614
+msgid "Connection Default Permissions"
+msgstr "Permessi predefiniti dei nuovi contatti"
+
+#: ../../Zotlabs/Module/Connedit.php:702 ../../include/items.php:3926
+#, php-format
+msgid "Connection: %s"
+msgstr "Contatto: %s"
+
+#: ../../Zotlabs/Module/Connedit.php:703
msgid "Apply these permissions automatically"
msgstr "Applica automaticamente questi permessi"
-#: ../../mod/connedit.php:702
+#: ../../Zotlabs/Module/Connedit.php:703
msgid "Connection requests will be approved without your interaction"
msgstr "Le richieste di entrare in contatto saranno approvate in automatico"
-#: ../../mod/connedit.php:704
+#: ../../Zotlabs/Module/Connedit.php:705
msgid "This connection's primary address is"
msgstr "Indirizzo primario di questo canale"
-#: ../../mod/connedit.php:705
+#: ../../Zotlabs/Module/Connedit.php:706
msgid "Available locations:"
msgstr "Indirizzi disponibili"
-#: ../../mod/connedit.php:709
+#: ../../Zotlabs/Module/Connedit.php:710
msgid ""
"The permissions indicated on this page will be applied to all new "
"connections."
msgstr "I permessi indicati su questa pagina saranno applicati a tutti i nuovi contatti da ora in poi."
-#: ../../mod/connedit.php:711
+#: ../../Zotlabs/Module/Connedit.php:711
+msgid "Connection Tools"
+msgstr "Gestione dei contatti"
+
+#: ../../Zotlabs/Module/Connedit.php:713
msgid "Slide to adjust your degree of friendship"
msgstr "Trascina per restringere il grado di amicizia da mostrare"
-#: ../../mod/connedit.php:713
+#: ../../Zotlabs/Module/Connedit.php:714 ../../Zotlabs/Module/Rate.php:159
+#: ../../include/js_strings.php:20
+msgid "Rating"
+msgstr "Valutazioni"
+
+#: ../../Zotlabs/Module/Connedit.php:715
msgid "Slide to adjust your rating"
msgstr "Trascina per cambiare la tua valutazione"
-#: ../../mod/connedit.php:714 ../../mod/connedit.php:719
+#: ../../Zotlabs/Module/Connedit.php:716 ../../Zotlabs/Module/Connedit.php:721
msgid "Optionally explain your rating"
msgstr "Commento facoltativo"
-#: ../../mod/connedit.php:716
+#: ../../Zotlabs/Module/Connedit.php:718
msgid "Custom Filter"
msgstr "Filtro personalizzato"
-#: ../../mod/connedit.php:717
+#: ../../Zotlabs/Module/Connedit.php:719
msgid "Only import posts with this text"
msgstr "Importa solo i post che contengono queste parole chiave"
-#: ../../mod/connedit.php:717 ../../mod/connedit.php:718
+#: ../../Zotlabs/Module/Connedit.php:719 ../../Zotlabs/Module/Connedit.php:720
msgid ""
"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
"all posts"
msgstr "per ogni riga: parole, #tag, /pattern/ o lang=xx , lascia vuoto per importare tutto"
-#: ../../mod/connedit.php:718
+#: ../../Zotlabs/Module/Connedit.php:720
msgid "Do not import posts with this text"
msgstr "Non importare i post con queste parole chiave"
-#: ../../mod/connedit.php:720
+#: ../../Zotlabs/Module/Connedit.php:722
msgid "This information is public!"
msgstr "Questa informazione è pubblica!"
-#: ../../mod/connedit.php:725
+#: ../../Zotlabs/Module/Connedit.php:727
msgid "Connection Pending Approval"
msgstr "Contatti in attesa di approvazione"
-#: ../../mod/connedit.php:728
+#: ../../Zotlabs/Module/Connedit.php:730
msgid "inherited"
msgstr "derivato"
-#: ../../mod/connedit.php:730
+#: ../../Zotlabs/Module/Connedit.php:732
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr "Seleziona il profilo che vuoi mostrare a %s dopo che ha effettuato l'accesso."
-#: ../../mod/connedit.php:732
+#: ../../Zotlabs/Module/Connedit.php:734
msgid "Their Settings"
msgstr "Permessi concessi a te"
-#: ../../mod/connedit.php:733
+#: ../../Zotlabs/Module/Connedit.php:735
msgid "My Settings"
msgstr "Permessi che concedo"
-#: ../../mod/connedit.php:735
+#: ../../Zotlabs/Module/Connedit.php:737
msgid "Individual Permissions"
msgstr "Permessi individuali"
-#: ../../mod/connedit.php:736
+#: ../../Zotlabs/Module/Connedit.php:738
msgid ""
"Some permissions may be inherited from your channel's <a "
"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
@@ -4956,7 +880,7 @@ msgid ""
" settings here."
msgstr "Alcuni permessi derivano dalle <a href=\"settings\"><strong>impostazioni di privacy</strong></a> del tuo canale, che hanno priorità assoluta su qualsiasi altra impostazione scelta per i singoli contatti. Da questa pagina <strong>non</strong> puoi cambiarle."
-#: ../../mod/connedit.php:737
+#: ../../Zotlabs/Module/Connedit.php:739
msgid ""
"Some permissions may be inherited from your channel's <a "
"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
@@ -4964,660 +888,916 @@ msgid ""
"they wont have any impact unless the inherited setting changes."
msgstr "Alcuni permessi derivano dalle <a href=\"settings\"><strong>impostazioni di privacy</strong></a> del tuo canale, che hanno priorità assoluta su qualsiasi altra impostazione scelta per i singoli contatti. Le personalizzazioni che effettuerai qui potrebbero non essere effettive a meno che tu non cambi le impostazioni generali."
-#: ../../mod/connedit.php:738
+#: ../../Zotlabs/Module/Connedit.php:740
msgid "Last update:"
msgstr "Ultimo aggiornamento:"
-#: ../../mod/dav.php:121
-msgid "$Projectname channel"
-msgstr "Canale $Projectname"
-
-#: ../../mod/directory.php:59 ../../mod/display.php:13
-#: ../../mod/photos.php:517 ../../mod/ratings.php:82 ../../mod/search.php:13
-#: ../../mod/viewconnections.php:17
+#: ../../Zotlabs/Module/Directory.php:63 ../../Zotlabs/Module/Display.php:17
+#: ../../Zotlabs/Module/Photos.php:522 ../../Zotlabs/Module/Ratings.php:86
+#: ../../Zotlabs/Module/Search.php:17
+#: ../../Zotlabs/Module/Viewconnections.php:20
msgid "Public access denied."
msgstr "Accesso pubblico negato."
-#: ../../mod/directory.php:239
+#: ../../Zotlabs/Module/Directory.php:243
#, php-format
msgid "%d rating"
msgid_plural "%d ratings"
msgstr[0] "%d valutazione"
msgstr[1] "%d valutazioni"
-#: ../../mod/directory.php:250
+#: ../../Zotlabs/Module/Directory.php:254
msgid "Gender: "
msgstr "Sesso:"
-#: ../../mod/directory.php:252
+#: ../../Zotlabs/Module/Directory.php:256
msgid "Status: "
msgstr "Stato:"
-#: ../../mod/directory.php:254
+#: ../../Zotlabs/Module/Directory.php:258
msgid "Homepage: "
msgstr "Homepage:"
-#: ../../mod/directory.php:313
+#: ../../Zotlabs/Module/Directory.php:306 ../../include/channel.php:1183
+msgid "Age:"
+msgstr "Età:"
+
+#: ../../Zotlabs/Module/Directory.php:311 ../../include/event.php:52
+#: ../../include/event.php:84 ../../include/channel.php:1027
+#: ../../include/bb2diaspora.php:507
+msgid "Location:"
+msgstr "Luogo:"
+
+#: ../../Zotlabs/Module/Directory.php:317
msgid "Description:"
msgstr "Descrizione:"
-#: ../../mod/directory.php:322
+#: ../../Zotlabs/Module/Directory.php:322 ../../include/channel.php:1199
+msgid "Hometown:"
+msgstr "Città dove vivo:"
+
+#: ../../Zotlabs/Module/Directory.php:324 ../../include/channel.php:1207
+msgid "About:"
+msgstr "Informazioni:"
+
+#: ../../Zotlabs/Module/Directory.php:325 ../../Zotlabs/Module/Match.php:68
+#: ../../Zotlabs/Module/Suggest.php:56 ../../include/widgets.php:147
+#: ../../include/widgets.php:184 ../../include/connections.php:78
+#: ../../include/conversation.php:956 ../../include/channel.php:1012
+msgid "Connect"
+msgstr "Aggiungi"
+
+#: ../../Zotlabs/Module/Directory.php:326
msgid "Public Forum:"
msgstr "Forum pubblico:"
-#: ../../mod/directory.php:325
+#: ../../Zotlabs/Module/Directory.php:329
msgid "Keywords: "
msgstr "Parole chiave:"
-#: ../../mod/directory.php:328
+#: ../../Zotlabs/Module/Directory.php:332
msgid "Don't suggest"
msgstr "Non fornire suggerimenti"
-#: ../../mod/directory.php:330
+#: ../../Zotlabs/Module/Directory.php:334
msgid "Common connections:"
msgstr "Contatti in comune:"
-#: ../../mod/directory.php:379
+#: ../../Zotlabs/Module/Directory.php:383
msgid "Global Directory"
msgstr "Elenchi pubblici globali"
-#: ../../mod/directory.php:379
+#: ../../Zotlabs/Module/Directory.php:383
msgid "Local Directory"
msgstr "Elenco canali su questo hub"
-#: ../../mod/directory.php:385
+#: ../../Zotlabs/Module/Directory.php:388
+#: ../../Zotlabs/Module/Directory.php:393
+#: ../../Zotlabs/Module/Connections.php:309
+#: ../../include/contact_widgets.php:23
+msgid "Find"
+msgstr "Cerca"
+
+#: ../../Zotlabs/Module/Directory.php:389
msgid "Finding:"
msgstr "Ricerca:"
-#: ../../mod/directory.php:390
+#: ../../Zotlabs/Module/Directory.php:392 ../../Zotlabs/Module/Suggest.php:64
+#: ../../include/contact_widgets.php:24
+msgid "Channel Suggestions"
+msgstr "Canali suggeriti"
+
+#: ../../Zotlabs/Module/Directory.php:394
msgid "next page"
msgstr "pagina successiva"
-#: ../../mod/directory.php:390
+#: ../../Zotlabs/Module/Directory.php:394
msgid "previous page"
msgstr "pagina precedente"
-#: ../../mod/directory.php:391
+#: ../../Zotlabs/Module/Directory.php:395
msgid "Sort options"
msgstr "Opzioni di ordinamento"
-#: ../../mod/directory.php:392
+#: ../../Zotlabs/Module/Directory.php:396
msgid "Alphabetic"
msgstr "Alfabetico"
-#: ../../mod/directory.php:393
+#: ../../Zotlabs/Module/Directory.php:397
msgid "Reverse Alphabetic"
msgstr "Alfabetico inverso"
-#: ../../mod/directory.php:394
+#: ../../Zotlabs/Module/Directory.php:398
msgid "Newest to Oldest"
msgstr "Prima i più recenti"
-#: ../../mod/directory.php:395
+#: ../../Zotlabs/Module/Directory.php:399
msgid "Oldest to Newest"
msgstr "Prima i più vecchi"
-#: ../../mod/directory.php:412
+#: ../../Zotlabs/Module/Directory.php:416
msgid "No entries (some entries may be hidden)."
msgstr "Nessun risultato (qualche elemento potrebbe essere nascosto)."
-#: ../../mod/dirsearch.php:21 ../../mod/regdir.php:45
-msgid "This site is not a directory server"
-msgstr "Questo non è un directory server"
+#: ../../Zotlabs/Module/Display.php:40 ../../Zotlabs/Module/Filestorage.php:33
+#: ../../Zotlabs/Module/Admin.php:164 ../../Zotlabs/Module/Admin.php:1255
+#: ../../Zotlabs/Module/Admin.php:1561 ../../Zotlabs/Module/Thing.php:89
+#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:3359
+msgid "Item not found."
+msgstr "Elemento non trovato."
-#: ../../mod/dirsearch.php:29
-msgid "This directory server requires an access token"
-msgstr "Questo directory server necessita di un token di autenticazione"
+#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95
+#: ../../Zotlabs/Module/Editpost.php:24 ../../Zotlabs/Module/Editlayout.php:79
+#: ../../Zotlabs/Module/Editwebpage.php:81
+msgid "Item not found"
+msgstr "Elemento non trovato"
-#: ../../mod/dreport.php:23
-msgid "Invalid message"
-msgstr "Messaggio non valido"
+#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1228
+msgid "Title (optional)"
+msgstr "Titolo (facoltativo)"
-#: ../../mod/dreport.php:55
-msgid "no results"
-msgstr "nessun risultato"
+#: ../../Zotlabs/Module/Editblock.php:133
+msgid "Edit Block"
+msgstr "Modifica il block"
+
+#: ../../Zotlabs/Module/Common.php:14
+msgid "No channel."
+msgstr "Nessun canale."
+
+#: ../../Zotlabs/Module/Common.php:43
+msgid "Common connections"
+msgstr "Contatti in comune"
+
+#: ../../Zotlabs/Module/Common.php:48
+msgid "No connections in common."
+msgstr "Nessun contatto in comune."
+
+#: ../../Zotlabs/Module/Connections.php:56
+#: ../../Zotlabs/Module/Connections.php:161
+#: ../../Zotlabs/Module/Connections.php:242
+msgid "Blocked"
+msgstr "Bloccati"
+
+#: ../../Zotlabs/Module/Connections.php:61
+#: ../../Zotlabs/Module/Connections.php:168
+#: ../../Zotlabs/Module/Connections.php:241
+msgid "Ignored"
+msgstr "Ignorati"
+
+#: ../../Zotlabs/Module/Connections.php:66
+#: ../../Zotlabs/Module/Connections.php:182
+#: ../../Zotlabs/Module/Connections.php:240
+msgid "Hidden"
+msgstr "Nascosti"
+
+#: ../../Zotlabs/Module/Connections.php:71
+#: ../../Zotlabs/Module/Connections.php:175
+#: ../../Zotlabs/Module/Connections.php:239
+msgid "Archived"
+msgstr "Archiviati"
+
+#: ../../Zotlabs/Module/Connections.php:76
+#: ../../Zotlabs/Module/Connections.php:86 ../../Zotlabs/Module/Menu.php:116
+#: ../../include/conversation.php:1535
+msgid "New"
+msgstr "Novità"
+
+#: ../../Zotlabs/Module/Connections.php:138
+msgid "New Connections"
+msgstr "Nuovi contatti"
+
+#: ../../Zotlabs/Module/Connections.php:141
+msgid "Show pending (new) connections"
+msgstr "Richieste di contatto in attesa"
+
+#: ../../Zotlabs/Module/Connections.php:145
+#: ../../Zotlabs/Module/Profperm.php:144
+msgid "All Connections"
+msgstr "Tutti i contatti"
+
+#: ../../Zotlabs/Module/Connections.php:148
+msgid "Show all connections"
+msgstr "Mostra tutti i contatti"
+
+#: ../../Zotlabs/Module/Connections.php:164
+msgid "Only show blocked connections"
+msgstr "Mostra solo i contatti bloccati"
+
+#: ../../Zotlabs/Module/Connections.php:171
+msgid "Only show ignored connections"
+msgstr "Mostra solo i contatti ignorati"
-#: ../../mod/dreport.php:60
+#: ../../Zotlabs/Module/Connections.php:178
+msgid "Only show archived connections"
+msgstr "Mostra solo i contatti archiviati"
+
+#: ../../Zotlabs/Module/Connections.php:185
+msgid "Only show hidden connections"
+msgstr "Mostra solo i contatti nascosti"
+
+#: ../../Zotlabs/Module/Connections.php:238
+msgid "Pending approval"
+msgstr "In attesa di conferma"
+
+#: ../../Zotlabs/Module/Connections.php:254
#, php-format
-msgid "Delivery report for %1$s"
-msgstr "Rapporto di consegna - %1$s"
+msgid "%1$s [%2$s]"
+msgstr "%1$s [%2$s]"
-#: ../../mod/dreport.php:74
-msgid "channel sync processed"
-msgstr "sincronizzazione del canale effettuata"
+#: ../../Zotlabs/Module/Connections.php:255
+msgid "Edit connection"
+msgstr "Modifica il contatto"
-#: ../../mod/dreport.php:78
-msgid "queued"
-msgstr "in coda"
+#: ../../Zotlabs/Module/Connections.php:256
+msgid "Delete connection"
+msgstr "Elimina il contatto"
-#: ../../mod/dreport.php:82
-msgid "posted"
-msgstr "inviato"
+#: ../../Zotlabs/Module/Connections.php:265
+msgid "Channel address"
+msgstr "Indirizzo del canale"
-#: ../../mod/dreport.php:86
-msgid "accepted for delivery"
-msgstr "accettato per la spedizione"
+#: ../../Zotlabs/Module/Connections.php:267
+msgid "Network"
+msgstr "Network"
-#: ../../mod/dreport.php:90
-msgid "updated"
-msgstr "aggiornato"
+#: ../../Zotlabs/Module/Connections.php:270 ../../Zotlabs/Module/Admin.php:710
+msgid "Status"
+msgstr "Stato"
-#: ../../mod/dreport.php:93
-msgid "update ignored"
-msgstr "aggiornamento ignorato"
+#: ../../Zotlabs/Module/Connections.php:272
+msgid "Connected"
+msgstr "In contatto"
-#: ../../mod/dreport.php:96
-msgid "permission denied"
-msgstr "permessi non sufficienti"
+#: ../../Zotlabs/Module/Connections.php:274
+msgid "Approve connection"
+msgstr "Approva questo contatto"
-#: ../../mod/dreport.php:100
-msgid "recipient not found"
-msgstr "Destinatario non trovato"
+#: ../../Zotlabs/Module/Connections.php:275
+#: ../../Zotlabs/Module/Admin.php:1037
+msgid "Approve"
+msgstr "Approva"
-#: ../../mod/dreport.php:103
-msgid "mail recalled"
-msgstr "messaggio richiamato dal mittente"
+#: ../../Zotlabs/Module/Connections.php:276
+msgid "Ignore connection"
+msgstr "Ignora il contatto"
-#: ../../mod/dreport.php:106
-msgid "duplicate mail received"
-msgstr "ricevuto messaggio duplicato"
+#: ../../Zotlabs/Module/Connections.php:278
+msgid "Recent activity"
+msgstr "Attività recenti"
-#: ../../mod/dreport.php:109
-msgid "mail delivered"
-msgstr "messaggio recapitato"
+#: ../../Zotlabs/Module/Connections.php:302 ../../Zotlabs/Lib/Apps.php:208
+#: ../../include/text.php:875 ../../include/nav.php:186
+msgid "Connections"
+msgstr "Contatti"
-#: ../../mod/editblock.php:78 ../../mod/editblock.php:94
-#: ../../mod/editlayout.php:76 ../../mod/editpost.php:20
-#: ../../mod/editwebpage.php:77
-msgid "Item not found"
-msgstr "Elemento non trovato"
+#: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44
+#: ../../Zotlabs/Lib/Apps.php:228 ../../include/text.php:945
+#: ../../include/text.php:957 ../../include/nav.php:165
+#: ../../include/acl_selectors.php:276
+msgid "Search"
+msgstr "Cerca"
-#: ../../mod/editblock.php:118
-msgid "Delete block?"
-msgstr "Vuoi eliminare questo block?"
+#: ../../Zotlabs/Module/Connections.php:307
+msgid "Search your connections"
+msgstr "Cerca tra i contatti"
-#: ../../mod/editblock.php:145 ../../mod/editlayout.php:143
-#: ../../mod/editpost.php:121 ../../mod/editwebpage.php:185
-msgid "Insert YouTube video"
-msgstr "Inserisci video da YouTube"
+#: ../../Zotlabs/Module/Connections.php:308
+msgid "Connections search"
+msgstr "Ricerca tra i contatti"
-#: ../../mod/editblock.php:146 ../../mod/editlayout.php:144
-#: ../../mod/editpost.php:122 ../../mod/editwebpage.php:186
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Inserisci video Vorbis [.ogg]"
+#: ../../Zotlabs/Module/Cover_photo.php:58
+#: ../../Zotlabs/Module/Profile_photo.php:79
+msgid "Image uploaded but image cropping failed."
+msgstr "L'immagine è stata caricata, ma il non è stato possibile ritagliarla."
-#: ../../mod/editblock.php:147 ../../mod/editlayout.php:145
-#: ../../mod/editpost.php:123 ../../mod/editwebpage.php:187
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Inserisci audio Vorbis [.ogg]"
+#: ../../Zotlabs/Module/Cover_photo.php:134
+#: ../../Zotlabs/Module/Cover_photo.php:181
+msgid "Cover Photos"
+msgstr "Copertine del canale"
-#: ../../mod/editblock.php:180
-msgid "Edit Block"
-msgstr "Modifica il block"
+#: ../../Zotlabs/Module/Cover_photo.php:154
+#: ../../Zotlabs/Module/Profile_photo.php:133
+msgid "Image resize failed."
+msgstr "Il ridimensionamento dell'immagine è fallito."
-#: ../../mod/editlayout.php:112
-msgid "Delete layout?"
-msgstr "Vuoi eliminare questo layout?"
+#: ../../Zotlabs/Module/Cover_photo.php:168
+#: ../../Zotlabs/Module/Profile_photo.php:192 ../../include/photos.php:144
+msgid "Unable to process image"
+msgstr "Impossibile elaborare l'immagine"
-#: ../../mod/editlayout.php:159 ../../mod/layouts.php:124
-msgid "Layout Description (Optional)"
-msgstr "Descrizione del layout (facoltativa)"
+#: ../../Zotlabs/Module/Cover_photo.php:192
+#: ../../Zotlabs/Module/Profile_photo.php:217
+msgid "Image upload failed."
+msgstr "Il caricamento dell'immagine è fallito."
-#: ../../mod/editlayout.php:161 ../../mod/layouts.php:121
-#: ../../mod/layouts.php:179
-msgid "Layout Name"
-msgstr "Nome layout"
+#: ../../Zotlabs/Module/Cover_photo.php:210
+#: ../../Zotlabs/Module/Profile_photo.php:236
+msgid "Unable to process image."
+msgstr "Impossibile elaborare l'immagine."
-#: ../../mod/editlayout.php:178
-msgid "Edit Layout"
-msgstr "Modifica il layout"
+#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4270
+msgid "female"
+msgstr "femmina"
-#: ../../mod/editpost.php:31
-msgid "Item is not editable"
-msgstr "L'elemento non è modificabile"
+#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4271
+#, php-format
+msgid "%1$s updated her %2$s"
+msgstr "Aggiornamento: %2$s di %1$s"
-#: ../../mod/editpost.php:57
-msgid "Delete item?"
-msgstr "Eliminare questo elemento?"
+#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4272
+msgid "male"
+msgstr "maschio"
-#: ../../mod/editpost.php:164 ../../mod/rpost.php:128
-msgid "Edit post"
-msgstr "Modifica post"
+#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4273
+#, php-format
+msgid "%1$s updated his %2$s"
+msgstr "Aggiornamento: %2$s di %1$s"
+
+#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4275
+#, php-format
+msgid "%1$s updated their %2$s"
+msgstr "Aggiornamento: %2$s di %1$s"
-#: ../../mod/editwebpage.php:153
-msgid "Delete webpage?"
-msgstr "Vuoi eliminare questa pagina web?"
+#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1661
+msgid "cover photo"
+msgstr "Copertina del canale"
-#: ../../mod/editwebpage.php:172
-msgid "Page link title"
-msgstr "Link del titolo"
+#: ../../Zotlabs/Module/Cover_photo.php:303
+#: ../../Zotlabs/Module/Cover_photo.php:318
+#: ../../Zotlabs/Module/Profile_photo.php:283
+#: ../../Zotlabs/Module/Profile_photo.php:324
+msgid "Photo not available."
+msgstr "Foto non disponibile."
-#: ../../mod/editwebpage.php:222
-msgid "Edit Webpage"
-msgstr "Modifica la pagina web"
+#: ../../Zotlabs/Module/Cover_photo.php:354
+#: ../../Zotlabs/Module/Profile_photo.php:365
+msgid "Upload File:"
+msgstr "Carica un file:"
+
+#: ../../Zotlabs/Module/Cover_photo.php:355
+#: ../../Zotlabs/Module/Profile_photo.php:366
+msgid "Select a profile:"
+msgstr "Seleziona un profilo:"
+
+#: ../../Zotlabs/Module/Cover_photo.php:356
+msgid "Upload Cover Photo"
+msgstr "Carica una copertina"
+
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+#: ../../Zotlabs/Module/Settings.php:985
+msgid "or"
+msgstr "o"
+
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+msgid "skip this step"
+msgstr "salta questo passaggio"
+
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+msgid "select a photo from your photo albums"
+msgstr "seleziona una foto dai tuoi album"
-#: ../../mod/events.php:21
+#: ../../Zotlabs/Module/Cover_photo.php:377
+#: ../../Zotlabs/Module/Profile_photo.php:390
+msgid "Crop Image"
+msgstr "Ritaglia immagine"
+
+#: ../../Zotlabs/Module/Cover_photo.php:378
+#: ../../Zotlabs/Module/Profile_photo.php:391
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Ritaglia l'immagine per migliorarne la visualizzazione."
+
+#: ../../Zotlabs/Module/Cover_photo.php:380
+#: ../../Zotlabs/Module/Profile_photo.php:393
+msgid "Done Editing"
+msgstr "Modifica terminata"
+
+#: ../../Zotlabs/Module/Editpost.php:35
+msgid "Item is not editable"
+msgstr "L'elemento non è modificabile"
+
+#: ../../Zotlabs/Module/Editpost.php:106 ../../Zotlabs/Module/Rpost.php:135
+msgid "Edit post"
+msgstr "Modifica post"
+
+#: ../../Zotlabs/Module/Events.php:26
msgid "Calendar entries imported."
msgstr "Le voci del calendario sono state importate."
-#: ../../mod/events.php:23
+#: ../../Zotlabs/Module/Events.php:28
msgid "No calendar entries found."
msgstr "Non sono state trovate voci del calendario."
-#: ../../mod/events.php:100
+#: ../../Zotlabs/Module/Events.php:105
msgid "Event can not end before it has started."
msgstr "Un evento non può terminare prima del suo inizio."
-#: ../../mod/events.php:102 ../../mod/events.php:111 ../../mod/events.php:131
+#: ../../Zotlabs/Module/Events.php:107 ../../Zotlabs/Module/Events.php:116
+#: ../../Zotlabs/Module/Events.php:136
msgid "Unable to generate preview."
msgstr "Impossibile creare un'anteprima."
-#: ../../mod/events.php:109
+#: ../../Zotlabs/Module/Events.php:114
msgid "Event title and start time are required."
msgstr "Sono necessari il titolo e l'ora d'inizio dell'evento."
-#: ../../mod/events.php:129 ../../mod/events.php:254
+#: ../../Zotlabs/Module/Events.php:134 ../../Zotlabs/Module/Events.php:259
msgid "Event not found."
msgstr "Evento non trovato."
-#: ../../mod/events.php:444
+#: ../../Zotlabs/Module/Events.php:254 ../../Zotlabs/Module/Like.php:373
+#: ../../Zotlabs/Module/Tagger.php:51 ../../include/event.php:949
+#: ../../include/text.php:1943 ../../include/conversation.php:123
+msgid "event"
+msgstr "l'evento"
+
+#: ../../Zotlabs/Module/Events.php:449
msgid "Edit event title"
msgstr "Modifica il titolo dell'evento"
-#: ../../mod/events.php:444
+#: ../../Zotlabs/Module/Events.php:449
msgid "Event title"
msgstr "Titolo dell'evento"
-#: ../../mod/events.php:446
+#: ../../Zotlabs/Module/Events.php:449 ../../Zotlabs/Module/Events.php:454
+#: ../../Zotlabs/Module/Profiles.php:709 ../../Zotlabs/Module/Profiles.php:713
+#: ../../Zotlabs/Module/Appman.php:115 ../../Zotlabs/Module/Appman.php:116
+#: ../../include/datetime.php:245
+msgid "Required"
+msgstr "Obbligatorio"
+
+#: ../../Zotlabs/Module/Events.php:451
msgid "Categories (comma-separated list)"
msgstr "Categorie (separate da virgola)"
-#: ../../mod/events.php:447
+#: ../../Zotlabs/Module/Events.php:452
msgid "Edit Category"
msgstr "Modifica la categoria"
-#: ../../mod/events.php:447
+#: ../../Zotlabs/Module/Events.php:452
msgid "Category"
msgstr "Categoria"
-#: ../../mod/events.php:450
+#: ../../Zotlabs/Module/Events.php:455
msgid "Edit start date and time"
msgstr "Modifica data/ora di inizio"
-#: ../../mod/events.php:450
+#: ../../Zotlabs/Module/Events.php:455
msgid "Start date and time"
msgstr "Data e ora di inizio"
-#: ../../mod/events.php:451 ../../mod/events.php:454
+#: ../../Zotlabs/Module/Events.php:456 ../../Zotlabs/Module/Events.php:459
msgid "Finish date and time are not known or not relevant"
msgstr "La data e l'ora di fine non sono necessarie"
-#: ../../mod/events.php:453
+#: ../../Zotlabs/Module/Events.php:458
msgid "Edit finish date and time"
msgstr "Modifica data/ora di fine"
-#: ../../mod/events.php:453
+#: ../../Zotlabs/Module/Events.php:458
msgid "Finish date and time"
msgstr "Data e ora di fine"
-#: ../../mod/events.php:455 ../../mod/events.php:456
+#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:461
msgid "Adjust for viewer timezone"
msgstr "Adatta al fuso orario di chi legge"
-#: ../../mod/events.php:455
+#: ../../Zotlabs/Module/Events.php:460
msgid ""
"Important for events that happen in a particular place. Not practical for "
"global holidays."
msgstr "Importante per eventi che avvengono online ma con un certo fuso orario."
-#: ../../mod/events.php:457
+#: ../../Zotlabs/Module/Events.php:462
msgid "Edit Description"
msgstr "Modifica la descrizione"
-#: ../../mod/events.php:459
+#: ../../Zotlabs/Module/Events.php:462 ../../Zotlabs/Module/Appman.php:117
+#: ../../Zotlabs/Module/Rbmark.php:101
+msgid "Description"
+msgstr "Descrizione"
+
+#: ../../Zotlabs/Module/Events.php:464
msgid "Edit Location"
msgstr "Modifica il luogo"
-#: ../../mod/events.php:462 ../../mod/events.php:464
+#: ../../Zotlabs/Module/Events.php:464 ../../Zotlabs/Module/Locs.php:117
+#: ../../Zotlabs/Module/Profiles.php:477 ../../Zotlabs/Module/Profiles.php:698
+#: ../../Zotlabs/Module/Pubsites.php:41 ../../include/js_strings.php:25
+msgid "Location"
+msgstr "Posizione geografica"
+
+#: ../../Zotlabs/Module/Events.php:467 ../../Zotlabs/Module/Events.php:469
msgid "Share this event"
msgstr "Condividi questo evento"
-#: ../../mod/events.php:469
+#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Photos.php:1093
+#: ../../Zotlabs/Module/Webpages.php:194 ../../Zotlabs/Lib/ThreadItem.php:719
+#: ../../include/conversation.php:1187 ../../include/page_widgets.php:40
+msgid "Preview"
+msgstr "Anteprima"
+
+#: ../../Zotlabs/Module/Events.php:471 ../../include/conversation.php:1232
+msgid "Permission settings"
+msgstr "Permessi dei tuoi contatti"
+
+#: ../../Zotlabs/Module/Events.php:476
msgid "Advanced Options"
msgstr "Opzioni avanzate"
-#: ../../mod/events.php:581 ../../mod/cal.php:253
-msgid "l, F j"
-msgstr "l j F"
-
-#: ../../mod/events.php:603
+#: ../../Zotlabs/Module/Events.php:610
msgid "Edit event"
msgstr "Modifica l'evento"
-#: ../../mod/events.php:605
+#: ../../Zotlabs/Module/Events.php:612
msgid "Delete event"
msgstr "Elimina l'evento"
-#: ../../mod/events.php:639
+#: ../../Zotlabs/Module/Events.php:646
msgid "calendar"
msgstr "calendario"
-#: ../../mod/events.php:658 ../../mod/cal.php:325
-msgid "Edit Event"
-msgstr "Modifica l'evento"
-
-#: ../../mod/events.php:658 ../../mod/cal.php:325
-msgid "Create Event"
-msgstr "Crea un evento"
-
-#: ../../mod/events.php:659 ../../mod/events.php:666 ../../mod/photos.php:944
-#: ../../mod/cal.php:326 ../../mod/cal.php:333
-msgid "Previous"
-msgstr "Precendente"
-
-#: ../../mod/events.php:660 ../../mod/events.php:667 ../../mod/photos.php:953
-#: ../../mod/setup.php:291 ../../mod/cal.php:327 ../../mod/cal.php:334
-msgid "Next"
-msgstr "Successivo"
-
-#: ../../mod/events.php:668 ../../mod/cal.php:335
-msgid "Today"
-msgstr "Oggi"
-
-#: ../../mod/events.php:699
+#: ../../Zotlabs/Module/Events.php:706
msgid "Event removed"
msgstr "Evento eliminato"
-#: ../../mod/events.php:702
+#: ../../Zotlabs/Module/Events.php:709
msgid "Failed to remove event"
msgstr "Impossibile eliminare l'evento"
-#: ../../mod/ffsapi.php:8
-msgid "Share content from Firefox to $Projectname"
-msgstr "Condividi i contenuti su $Projectname da Firefox"
+#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:220
+#: ../../include/nav.php:92 ../../include/conversation.php:1632
+msgid "Photos"
+msgstr "Foto"
-#: ../../mod/ffsapi.php:11
-msgid "Activate the Firefox $Projectname provider"
-msgstr "Attiva Firefox Share per $Projectname"
+#: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88
+#: ../../Zotlabs/Module/Admin.php:1406 ../../Zotlabs/Module/Settings.php:591
+#: ../../Zotlabs/Module/Settings.php:617 ../../Zotlabs/Module/Tagrm.php:15
+#: ../../Zotlabs/Module/Tagrm.php:138 ../../include/conversation.php:1259
+msgid "Cancel"
+msgstr "Annulla"
+
+#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49
+msgid "This site is not a directory server"
+msgstr "Questo non è un directory server"
+
+#: ../../Zotlabs/Module/Dirsearch.php:33
+msgid "This directory server requires an access token"
+msgstr "Questo directory server necessita di un token di autenticazione"
+
+#: ../../Zotlabs/Module/Filer.php:52
+msgid "Save to Folder:"
+msgstr "Salva nella cartella:"
-#: ../../mod/filer.php:48
+#: ../../Zotlabs/Module/Filer.php:52
msgid "- select -"
msgstr "- scegli -"
-#: ../../mod/filestorage.php:82
-msgid "Permission Denied."
-msgstr "Permesso negato."
+#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Admin.php:2033
+#: ../../Zotlabs/Module/Admin.php:2053 ../../Zotlabs/Module/Rbmark.php:32
+#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/text.php:946
+#: ../../include/text.php:958 ../../include/widgets.php:201
+msgid "Save"
+msgstr "Salva"
-#: ../../mod/filestorage.php:98
-msgid "File not found."
-msgstr "File non trovato."
+#: ../../Zotlabs/Module/Dreport.php:27
+msgid "Invalid message"
+msgstr "Messaggio non valido"
-#: ../../mod/filestorage.php:141
-msgid "Edit file permissions"
-msgstr "Modifica i permessi del file"
+#: ../../Zotlabs/Module/Dreport.php:59
+msgid "no results"
+msgstr "nessun risultato"
-#: ../../mod/filestorage.php:150
-msgid "Set/edit permissions"
-msgstr "Modifica i permessi"
+#: ../../Zotlabs/Module/Dreport.php:64
+#, php-format
+msgid "Delivery report for %1$s"
+msgstr "Rapporto di consegna - %1$s"
-#: ../../mod/filestorage.php:151
-msgid "Include all files and sub folders"
-msgstr "Includi tutti i file e le sottocartelle"
+#: ../../Zotlabs/Module/Dreport.php:78
+msgid "channel sync processed"
+msgstr "sincronizzazione del canale effettuata"
-#: ../../mod/filestorage.php:152
-msgid "Return to file list"
-msgstr "Torna all'elenco dei file"
+#: ../../Zotlabs/Module/Dreport.php:82
+msgid "queued"
+msgstr "in coda"
-#: ../../mod/filestorage.php:154
-msgid "Copy/paste this code to attach file to a post"
-msgstr "Copia/incolla questo codice per far comparire il file in un post"
+#: ../../Zotlabs/Module/Dreport.php:86
+msgid "posted"
+msgstr "inviato"
-#: ../../mod/filestorage.php:155
-msgid "Copy/paste this URL to link file from a web page"
-msgstr "Copia/incolla questo indirizzo in una pagina web per avere un link al file"
+#: ../../Zotlabs/Module/Dreport.php:90
+msgid "accepted for delivery"
+msgstr "accettato per la spedizione"
-#: ../../mod/filestorage.php:157
-msgid "Share this file"
-msgstr "Condividi questo file"
+#: ../../Zotlabs/Module/Dreport.php:94
+msgid "updated"
+msgstr "aggiornato"
-#: ../../mod/filestorage.php:158
-msgid "Show URL to this file"
-msgstr "Mostra l'URL del file"
+#: ../../Zotlabs/Module/Dreport.php:97
+msgid "update ignored"
+msgstr "aggiornamento ignorato"
-#: ../../mod/filestorage.php:159
-msgid "Notify your contacts about this file"
-msgstr "Notifica ai contatti che hai caricato questo file"
+#: ../../Zotlabs/Module/Dreport.php:100
+msgid "permission denied"
+msgstr "permessi non sufficienti"
-#: ../../mod/follow.php:27
-msgid "Channel added."
-msgstr "Canale aggiunto."
+#: ../../Zotlabs/Module/Dreport.php:104
+msgid "recipient not found"
+msgstr "Destinatario non trovato"
-#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
-msgid "Contact not found."
-msgstr "Contatto non trovato."
+#: ../../Zotlabs/Module/Dreport.php:107
+msgid "mail recalled"
+msgstr "messaggio richiamato dal mittente"
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
-msgstr "Suggerimento di amicizia inviato."
+#: ../../Zotlabs/Module/Dreport.php:110
+msgid "duplicate mail received"
+msgstr "ricevuto messaggio duplicato"
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
-msgstr "Suggerisci amici"
+#: ../../Zotlabs/Module/Dreport.php:113
+msgid "mail delivered"
+msgstr "messaggio recapitato"
-#: ../../mod/fsuggest.php:99
-#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Suggerisci un amico a %s"
+#: ../../Zotlabs/Module/Editlayout.php:126
+#: ../../Zotlabs/Module/Layouts.php:127 ../../Zotlabs/Module/Layouts.php:186
+msgid "Layout Name"
+msgstr "Nome layout"
+
+#: ../../Zotlabs/Module/Editlayout.php:127
+#: ../../Zotlabs/Module/Layouts.php:130
+msgid "Layout Description (Optional)"
+msgstr "Descrizione del layout (facoltativa)"
+
+#: ../../Zotlabs/Module/Editlayout.php:135
+msgid "Edit Layout"
+msgstr "Modifica il layout"
+
+#: ../../Zotlabs/Module/Editwebpage.php:143
+msgid "Page link"
+msgstr "Link alla pagina"
+
+#: ../../Zotlabs/Module/Editwebpage.php:169
+msgid "Edit Webpage"
+msgstr "Modifica la pagina web"
+
+#: ../../Zotlabs/Module/Follow.php:34
+msgid "Channel added."
+msgstr "Canale aggiunto."
+
+#: ../../Zotlabs/Module/Acl.php:227
+msgid "network"
+msgstr "rete"
+
+#: ../../Zotlabs/Module/Acl.php:237
+msgid "RSS"
+msgstr "RSS"
-#: ../../mod/group.php:20
+#: ../../Zotlabs/Module/Group.php:24
msgid "Privacy group created."
msgstr "Gruppo di canali creato."
-#: ../../mod/group.php:26
+#: ../../Zotlabs/Module/Group.php:30
msgid "Could not create privacy group."
msgstr "Impossibile creare il gruppo di canali."
-#: ../../mod/group.php:54
+#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141
+#: ../../include/items.php:3893
+msgid "Privacy group not found."
+msgstr "Gruppo di canali non trovato."
+
+#: ../../Zotlabs/Module/Group.php:58
msgid "Privacy group updated."
msgstr "Gruppo di canali aggiornato."
-#: ../../mod/group.php:86
+#: ../../Zotlabs/Module/Group.php:90
msgid "Create a group of channels."
msgstr "Crea un gruppo di canali."
-#: ../../mod/group.php:87 ../../mod/group.php:180
+#: ../../Zotlabs/Module/Group.php:91 ../../Zotlabs/Module/Group.php:184
msgid "Privacy group name: "
msgstr "Nome del gruppo di canali:"
-#: ../../mod/group.php:89 ../../mod/group.php:183
+#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Group.php:187
msgid "Members are visible to other channels"
msgstr "I membri potranno vedere gli altri canali del gruppo"
-#: ../../mod/group.php:107
+#: ../../Zotlabs/Module/Group.php:111
msgid "Privacy group removed."
msgstr "Gruppo di canali rimosso."
-#: ../../mod/group.php:109
+#: ../../Zotlabs/Module/Group.php:113
msgid "Unable to remove privacy group."
msgstr "Impossibile rimuovere il gruppo di canali."
-#: ../../mod/group.php:179
+#: ../../Zotlabs/Module/Group.php:183
msgid "Privacy group editor"
msgstr "Editor dei gruppi di canali"
-#: ../../mod/group.php:193
+#: ../../Zotlabs/Module/Group.php:197
msgid "Members"
msgstr "Membri"
-#: ../../mod/group.php:195
+#: ../../Zotlabs/Module/Group.php:199
msgid "All Connected Channels"
msgstr "Tutti i canali connessi"
-#: ../../mod/group.php:227
+#: ../../Zotlabs/Module/Group.php:231
msgid "Click on a channel to add or remove."
msgstr "Clicca su un canale per aggiungerlo o rimuoverlo."
-#: ../../mod/help.php:163
-msgid "Documentation Search"
-msgstr "Ricerca nella guida"
-
-#: ../../mod/help.php:204 ../../mod/help.php:210 ../../mod/help.php:216
-msgid "Help:"
-msgstr "Guida:"
+#: ../../Zotlabs/Module/Ffsapi.php:12
+msgid "Share content from Firefox to $Projectname"
+msgstr "Condividi i contenuti su $Projectname da Firefox"
-#: ../../mod/help.php:257
-msgid "$Projectname Documentation"
-msgstr "Guida di $Projectname"
+#: ../../Zotlabs/Module/Ffsapi.php:15
+msgid "Activate the Firefox $Projectname provider"
+msgstr "Attiva Firefox Share per $Projectname"
-#: ../../mod/home.php:57 ../../mod/home.php:65 ../../mod/siteinfo.php:61
-msgid "$Projectname"
-msgstr "$Projectname"
+#: ../../Zotlabs/Module/Api.php:61 ../../Zotlabs/Module/Api.php:85
+msgid "Authorize application connection"
+msgstr "Autorizza la app"
-#: ../../mod/home.php:75
-#, php-format
-msgid "Welcome to %s"
-msgstr "%s ti dà il benvenuto"
+#: ../../Zotlabs/Module/Api.php:62
+msgid "Return to your app and insert this Securty Code:"
+msgstr "Torna alla app e inserisci questo codice di sicurezza:"
-#: ../../mod/id.php:11
-msgid "First Name"
-msgstr "Nome"
+#: ../../Zotlabs/Module/Api.php:72
+msgid "Please login to continue."
+msgstr "Accedi al sito per continuare."
-#: ../../mod/id.php:12
-msgid "Last Name"
-msgstr "Cognome"
+#: ../../Zotlabs/Module/Api.php:87
+msgid ""
+"Do you want to authorize this application to access your posts and contacts,"
+" and/or create new posts for you?"
+msgstr "Vuoi autorizzare questa app ad accedere ai messaggi e ai contatti o creare nuovi messaggi per te?"
-#: ../../mod/id.php:13
-msgid "Nickname"
-msgstr "Nick"
+#: ../../Zotlabs/Module/Help.php:26
+msgid "Documentation Search"
+msgstr "Ricerca nella guida"
-#: ../../mod/id.php:14
-msgid "Full Name"
-msgstr "Nome e cognome"
+#: ../../Zotlabs/Module/Help.php:67 ../../Zotlabs/Module/Help.php:73
+#: ../../Zotlabs/Module/Help.php:79
+msgid "Help:"
+msgstr "Guida:"
-#: ../../mod/id.php:20
-msgid "Profile Photo 16px"
-msgstr "Foto del profilo 16px"
+#: ../../Zotlabs/Module/Help.php:85 ../../Zotlabs/Module/Help.php:90
+#: ../../Zotlabs/Module/Layouts.php:183 ../../Zotlabs/Lib/Apps.php:223
+#: ../../include/nav.php:159
+msgid "Help"
+msgstr "Guida"
-#: ../../mod/id.php:21
-msgid "Profile Photo 32px"
-msgstr "Foto del profilo 32px"
+#: ../../Zotlabs/Module/Help.php:120
+msgid "$Projectname Documentation"
+msgstr "Guida di $Projectname"
-#: ../../mod/id.php:22
-msgid "Profile Photo 48px"
-msgstr "Foto del profilo 48px"
+#: ../../Zotlabs/Module/Filestorage.php:88
+msgid "Permission Denied."
+msgstr "Permesso negato."
-#: ../../mod/id.php:23
-msgid "Profile Photo 64px"
-msgstr "Foto del profilo 64px"
+#: ../../Zotlabs/Module/Filestorage.php:104
+msgid "File not found."
+msgstr "File non trovato."
-#: ../../mod/id.php:24
-msgid "Profile Photo 80px"
-msgstr "Foto del profilo 80px"
+#: ../../Zotlabs/Module/Filestorage.php:147
+msgid "Edit file permissions"
+msgstr "Modifica i permessi del file"
-#: ../../mod/id.php:25
-msgid "Profile Photo 128px"
-msgstr "Foto del profilo 128px"
+#: ../../Zotlabs/Module/Filestorage.php:156
+msgid "Set/edit permissions"
+msgstr "Modifica i permessi"
-#: ../../mod/id.php:26
-msgid "Timezone"
-msgstr "Fuso orario"
+#: ../../Zotlabs/Module/Filestorage.php:157
+msgid "Include all files and sub folders"
+msgstr "Includi tutti i file e le sottocartelle"
-#: ../../mod/id.php:27 ../../mod/profiles.php:730
-msgid "Homepage URL"
-msgstr "Indirizzo home page"
+#: ../../Zotlabs/Module/Filestorage.php:158
+msgid "Return to file list"
+msgstr "Torna all'elenco dei file"
-#: ../../mod/id.php:29
-msgid "Birth Year"
-msgstr "Anno di nascita"
+#: ../../Zotlabs/Module/Filestorage.php:160
+msgid "Copy/paste this code to attach file to a post"
+msgstr "Copia/incolla questo codice per far comparire il file in un post"
-#: ../../mod/id.php:30
-msgid "Birth Month"
-msgstr "Mese di nascita"
+#: ../../Zotlabs/Module/Filestorage.php:161
+msgid "Copy/paste this URL to link file from a web page"
+msgstr "Copia/incolla questo indirizzo in una pagina web per avere un link al file"
-#: ../../mod/id.php:31
-msgid "Birth Day"
-msgstr "Giorno di nascita"
+#: ../../Zotlabs/Module/Filestorage.php:163
+msgid "Share this file"
+msgstr "Condividi questo file"
-#: ../../mod/id.php:32
-msgid "Birthdate"
-msgstr "Data di nascita"
+#: ../../Zotlabs/Module/Filestorage.php:164
+msgid "Show URL to this file"
+msgstr "Mostra l'URL del file"
-#: ../../mod/id.php:33 ../../mod/profiles.php:449
-msgid "Gender"
-msgstr "Sesso"
+#: ../../Zotlabs/Module/Filestorage.php:165
+msgid "Notify your contacts about this file"
+msgstr "Notifica ai contatti che hai caricato questo file"
-#: ../../mod/impel.php:192
-#, php-format
-msgid "%s element installed"
-msgstr "%s elemento installato"
+#: ../../Zotlabs/Module/Apps.php:47 ../../include/widgets.php:102
+#: ../../include/nav.php:163
+msgid "Apps"
+msgstr "App"
-#: ../../mod/impel.php:195
-#, php-format
-msgid "%s element installation failed"
-msgstr "Elementi con installazione fallita: %s"
+#: ../../Zotlabs/Module/Attach.php:13
+msgid "Item not available."
+msgstr "Elemento non disponibile."
-#: ../../mod/import.php:28
+#: ../../Zotlabs/Module/Import.php:32
#, php-format
msgid "Your service plan only allows %d channels."
msgstr "Il tuo account permette di creare al massimo %d canali."
-#: ../../mod/import.php:66 ../../mod/import_items.php:38
+#: ../../Zotlabs/Module/Import.php:70 ../../Zotlabs/Module/Import_items.php:42
msgid "Nothing to import."
msgstr "Non c'è niente da importare."
-#: ../../mod/import.php:90 ../../mod/import_items.php:62
+#: ../../Zotlabs/Module/Import.php:94 ../../Zotlabs/Module/Import_items.php:66
msgid "Unable to download data from old server"
msgstr "Impossibile importare i dati dal vecchio hub"
-#: ../../mod/import.php:96 ../../mod/import_items.php:68
+#: ../../Zotlabs/Module/Import.php:100
+#: ../../Zotlabs/Module/Import_items.php:72
msgid "Imported file is empty."
msgstr "Il file da importare è vuoto."
-#: ../../mod/import.php:118 ../../mod/import_items.php:82
+#: ../../Zotlabs/Module/Import.php:122
+#: ../../Zotlabs/Module/Import_items.php:86
#, php-format
msgid "Warning: Database versions differ by %1$d updates."
msgstr "Attenzione: le versioni di database differiscono di %1$d aggiornamenti."
-#: ../../mod/import.php:156
+#: ../../Zotlabs/Module/Import.php:150 ../../include/import.php:86
+msgid "Cloned channel not found. Import failed."
+msgstr "Impossibile trovare il canale clonato. L'importazione è fallita."
+
+#: ../../Zotlabs/Module/Import.php:160
msgid "No channel. Import failed."
msgstr "Nessun canale. Import fallito."
-#: ../../mod/import.php:531
+#: ../../Zotlabs/Module/Import.php:510
+#: ../../include/Import/import_diaspora.php:142
+msgid "Import completed."
+msgstr "L'importazione è terminata con successo."
+
+#: ../../Zotlabs/Module/Import.php:532
msgid "You must be logged in to use this feature."
msgstr "Per questa funzionalità devi aver effettuato l'accesso."
-#: ../../mod/import.php:536
+#: ../../Zotlabs/Module/Import.php:537
msgid "Import Channel"
msgstr "Importa un canale"
-#: ../../mod/import.php:537
+#: ../../Zotlabs/Module/Import.php:538
msgid ""
"Use this form to import an existing channel from a different server/hub. You"
" may retrieve the channel identity from the old server/hub via the network "
"or provide an export file."
msgstr "Usa questo modulo per importare un tuo canale da un altro hub. Puoi ottenere i dati identificativi del canale direttamente dall'altro hub oppure tramite un file esportato in precedenza."
-#: ../../mod/import.php:538 ../../mod/import_items.php:115
+#: ../../Zotlabs/Module/Import.php:539
+#: ../../Zotlabs/Module/Import_items.php:119
msgid "File to Upload"
msgstr "File da caricare"
-#: ../../mod/import.php:539
+#: ../../Zotlabs/Module/Import.php:540
msgid "Or provide the old server/hub details"
msgstr "Oppure fornisci i dettagli del vecchio hub"
-#: ../../mod/import.php:540
+#: ../../Zotlabs/Module/Import.php:541
msgid "Your old identity address (xyz@example.com)"
msgstr "Il tuo vecchio identificativo (per esempio pippo@esempio.com)"
-#: ../../mod/import.php:541
+#: ../../Zotlabs/Module/Import.php:542
msgid "Your old login email address"
msgstr "L'email che usavi per accedere sul vecchio hub"
-#: ../../mod/import.php:542
+#: ../../Zotlabs/Module/Import.php:543
msgid "Your old login password"
msgstr "La password per il vecchio hub"
-#: ../../mod/import.php:543
+#: ../../Zotlabs/Module/Import.php:544
msgid ""
"For either option, please choose whether to make this hub your new primary "
"address, or whether your old location should continue this role. You will be"
@@ -5625,3760 +1805,4382 @@ msgid ""
"primary location for files, photos, and media."
msgstr "Scegli se vuoi spostare il tuo indirizzo primario su questo hub, oppure se preferisci che quello vecchio resti tale. Potrai pubblicare da entrambi i hub, ma solamente uno sarà indicato come la posizione su cui risiedono i tuoi file, foto, ecc."
-#: ../../mod/import.php:544
+#: ../../Zotlabs/Module/Import.php:545
msgid "Make this hub my primary location"
msgstr "Rendi questo hub il mio indirizzo primario"
-#: ../../mod/import.php:545
+#: ../../Zotlabs/Module/Import.php:546
msgid ""
"Import existing posts if possible (experimental - limited by available "
"memory"
msgstr "Importa i contenuti pubblicati, se possibile (sperimentale)"
-#: ../../mod/import.php:546
+#: ../../Zotlabs/Module/Import.php:547
msgid ""
"This process may take several minutes to complete. Please submit the form "
"only once and leave this page open until finished."
msgstr "Questa funzione potrebbe impiegare molto tempo a terminare. Per favore lanciala *una volta sola* e resta su questa pagina finché non avrà finito."
-#: ../../mod/import_items.php:98
-msgid "Import completed"
-msgstr "Importazione completata"
-
-#: ../../mod/import_items.php:113
-msgid "Import Items"
-msgstr "Importa i contenuti"
-
-#: ../../mod/import_items.php:114
-msgid ""
-"Use this form to import existing posts and content from an export file."
-msgstr "Usa questa funzionalità per importare i vecchi contenuti e i post da un file esportato in precedenza."
-
-#: ../../mod/invite.php:25
-msgid "Total invitation limit exceeded."
-msgstr "Hai superato il numero massimo di inviti."
-
-#: ../../mod/invite.php:49
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s: non è un indirizzo email valido."
-
-#: ../../mod/invite.php:59
-msgid "Please join us on $Projectname"
-msgstr "Unisciti a noi su $Projectname"
-
-#: ../../mod/invite.php:70
-msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr "Hai superato il numero massimo di inviti. Contatta l'amministratore se necessario."
-
-#: ../../mod/invite.php:75
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s: la consegna del messaggio è fallita."
-
-#: ../../mod/invite.php:79
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d messaggio inviato."
-msgstr[1] "%d messaggi inviati."
-
-#: ../../mod/invite.php:98
-msgid "You have no more invitations available"
-msgstr "Non hai altri inviti disponibili"
-
-#: ../../mod/invite.php:129
-msgid "Send invitations"
-msgstr "Spedisci inviti"
-
-#: ../../mod/invite.php:130
-msgid "Enter email addresses, one per line:"
-msgstr "Inserisci gli indirizzi email, uno per riga:"
-
-#: ../../mod/invite.php:131 ../../mod/mail.php:246
-msgid "Your message:"
-msgstr "Il tuo messaggio:"
-
-#: ../../mod/invite.php:132
-msgid "Please join my community on $Projectname."
-msgstr "Entra nella mia comunità su $Projectname."
-
-#: ../../mod/invite.php:134
-msgid "You will need to supply this invitation code:"
-msgstr "Dovrai fornire questo codice invito:"
-
-#: ../../mod/invite.php:135
-msgid ""
-"1. Register at any $Projectname location (they are all inter-connected)"
-msgstr "1. Registrati su qualsiasi server $Projectname (sono tutti interconnessi)"
-
-#: ../../mod/invite.php:137
-msgid "2. Enter my $Projectname network address into the site searchbar."
-msgstr "2. Inserisci il mio indirizzo $Projectname nel riquadro di ricerca del sito."
-
-#: ../../mod/invite.php:138
-msgid "or visit"
-msgstr "oppure visita"
-
-#: ../../mod/invite.php:140
-msgid "3. Click [Connect]"
-msgstr "3. Clicca su [Aggiungi]"
-
-#: ../../mod/item.php:174
+#: ../../Zotlabs/Module/Item.php:178
msgid "Unable to locate original post."
msgstr "Impossibile trovare il messaggio originale."
-#: ../../mod/item.php:423
+#: ../../Zotlabs/Module/Item.php:427
msgid "Empty post discarded."
msgstr "Il post vuoto è stato ignorato."
-#: ../../mod/item.php:463
+#: ../../Zotlabs/Module/Item.php:467
msgid "Executable content type not permitted to this channel."
msgstr "I contenuti eseguibili non sono permessi su questo canale."
-#: ../../mod/item.php:843
+#: ../../Zotlabs/Module/Item.php:847
msgid "Duplicate post suppressed."
msgstr "I post duplicati sono scartati."
-#: ../../mod/item.php:973
+#: ../../Zotlabs/Module/Item.php:977
msgid "System error. Post not saved."
msgstr "Errore di sistema. Post non salvato."
-#: ../../mod/item.php:1240
+#: ../../Zotlabs/Module/Item.php:1241
msgid "Unable to obtain post information from database."
msgstr "Impossibile caricare il post dal database."
-#: ../../mod/item.php:1247
+#: ../../Zotlabs/Module/Item.php:1248
#, php-format
msgid "You have reached your limit of %1$.0f top level posts."
msgstr "Hai raggiunto il limite massimo di %1$.0f post sulla pagina principale."
-#: ../../mod/item.php:1254
+#: ../../Zotlabs/Module/Item.php:1255
#, php-format
msgid "You have reached your limit of %1$.0f webpages."
msgstr "Hai raggiunto il limite massimo di %1$.0f pagine web."
-#: ../../mod/layouts.php:176
+#: ../../Zotlabs/Module/Layouts.php:181 ../../include/text.php:2267
+msgid "Layouts"
+msgstr "Layout"
+
+#: ../../Zotlabs/Module/Layouts.php:183
msgid "Comanche page description language help"
msgstr "Guida di Comanche Page Description Language"
-#: ../../mod/layouts.php:180
+#: ../../Zotlabs/Module/Layouts.php:187
msgid "Layout Description"
msgstr "Descrizione del layout"
-#: ../../mod/layouts.php:185
+#: ../../Zotlabs/Module/Layouts.php:192
msgid "Download PDL file"
msgstr "Scarica il file PDL"
-#: ../../mod/like.php:15
+#: ../../Zotlabs/Module/Home.php:61 ../../Zotlabs/Module/Home.php:69
+#: ../../Zotlabs/Module/Siteinfo.php:65
+msgid "$Projectname"
+msgstr "$Projectname"
+
+#: ../../Zotlabs/Module/Home.php:79
+#, php-format
+msgid "Welcome to %s"
+msgstr "%s ti dà il benvenuto"
+
+#: ../../Zotlabs/Module/Id.php:13
+msgid "First Name"
+msgstr "Nome"
+
+#: ../../Zotlabs/Module/Id.php:14
+msgid "Last Name"
+msgstr "Cognome"
+
+#: ../../Zotlabs/Module/Id.php:15
+msgid "Nickname"
+msgstr "Nick"
+
+#: ../../Zotlabs/Module/Id.php:16
+msgid "Full Name"
+msgstr "Nome e cognome"
+
+#: ../../Zotlabs/Module/Id.php:17 ../../Zotlabs/Module/Id.php:18
+#: ../../Zotlabs/Module/Admin.php:1035 ../../Zotlabs/Module/Admin.php:1047
+#: ../../include/network.php:2151 ../../boot.php:1705
+msgid "Email"
+msgstr "Email"
+
+#: ../../Zotlabs/Module/Id.php:19 ../../Zotlabs/Module/Id.php:20
+#: ../../Zotlabs/Module/Id.php:21 ../../Zotlabs/Lib/Apps.php:236
+msgid "Profile Photo"
+msgstr "Foto del profilo"
+
+#: ../../Zotlabs/Module/Id.php:22
+msgid "Profile Photo 16px"
+msgstr "Foto del profilo 16px"
+
+#: ../../Zotlabs/Module/Id.php:23
+msgid "Profile Photo 32px"
+msgstr "Foto del profilo 32px"
+
+#: ../../Zotlabs/Module/Id.php:24
+msgid "Profile Photo 48px"
+msgstr "Foto del profilo 48px"
+
+#: ../../Zotlabs/Module/Id.php:25
+msgid "Profile Photo 64px"
+msgstr "Foto del profilo 64px"
+
+#: ../../Zotlabs/Module/Id.php:26
+msgid "Profile Photo 80px"
+msgstr "Foto del profilo 80px"
+
+#: ../../Zotlabs/Module/Id.php:27
+msgid "Profile Photo 128px"
+msgstr "Foto del profilo 128px"
+
+#: ../../Zotlabs/Module/Id.php:28
+msgid "Timezone"
+msgstr "Fuso orario"
+
+#: ../../Zotlabs/Module/Id.php:29 ../../Zotlabs/Module/Profiles.php:731
+msgid "Homepage URL"
+msgstr "Indirizzo home page"
+
+#: ../../Zotlabs/Module/Id.php:30 ../../Zotlabs/Lib/Apps.php:234
+msgid "Language"
+msgstr "Lingua"
+
+#: ../../Zotlabs/Module/Id.php:31
+msgid "Birth Year"
+msgstr "Anno di nascita"
+
+#: ../../Zotlabs/Module/Id.php:32
+msgid "Birth Month"
+msgstr "Mese di nascita"
+
+#: ../../Zotlabs/Module/Id.php:33
+msgid "Birth Day"
+msgstr "Giorno di nascita"
+
+#: ../../Zotlabs/Module/Id.php:34
+msgid "Birthdate"
+msgstr "Data di nascita"
+
+#: ../../Zotlabs/Module/Id.php:35 ../../Zotlabs/Module/Profiles.php:454
+msgid "Gender"
+msgstr "Sesso"
+
+#: ../../Zotlabs/Module/Id.php:108 ../../include/selectors.php:49
+#: ../../include/selectors.php:66
+msgid "Male"
+msgstr "Maschio"
+
+#: ../../Zotlabs/Module/Id.php:110 ../../include/selectors.php:49
+#: ../../include/selectors.php:66
+msgid "Female"
+msgstr "Femmina"
+
+#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:192
+msgid "webpage"
+msgstr "pagina web"
+
+#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:198
+msgid "block"
+msgstr "block"
+
+#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:195
+msgid "layout"
+msgstr "layout"
+
+#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:201
+msgid "menu"
+msgstr "menu"
+
+#: ../../Zotlabs/Module/Impel.php:196
+#, php-format
+msgid "%s element installed"
+msgstr "%s elemento installato"
+
+#: ../../Zotlabs/Module/Impel.php:199
+#, php-format
+msgid "%s element installation failed"
+msgstr "Elementi con installazione fallita: %s"
+
+#: ../../Zotlabs/Module/Like.php:19
msgid "Like/Dislike"
msgstr "Mi piace/Non mi piace"
-#: ../../mod/like.php:20
+#: ../../Zotlabs/Module/Like.php:24
msgid "This action is restricted to members."
msgstr "Questa funzionalità è riservata agli iscritti."
-#: ../../mod/like.php:21
+#: ../../Zotlabs/Module/Like.php:25
msgid ""
"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a "
"href=\"register\">register as a new $Projectname member</a> to continue."
msgstr "Per continuare devi <a href=\"rmagic\">accedere con il tuo identificativo $Projectname</a> o <a href=\"register\">registrarti come nuovo utente $Projectname</a>."
-#: ../../mod/like.php:101 ../../mod/like.php:127 ../../mod/like.php:165
+#: ../../Zotlabs/Module/Like.php:105 ../../Zotlabs/Module/Like.php:131
+#: ../../Zotlabs/Module/Like.php:169
msgid "Invalid request."
msgstr "Richiesta non valida."
-#: ../../mod/like.php:142
+#: ../../Zotlabs/Module/Like.php:117 ../../include/conversation.php:126
+msgid "channel"
+msgstr "il canale"
+
+#: ../../Zotlabs/Module/Like.php:146
msgid "thing"
msgstr "Oggetto"
-#: ../../mod/like.php:188
+#: ../../Zotlabs/Module/Like.php:192
msgid "Channel unavailable."
msgstr "Canale non trovato."
-#: ../../mod/like.php:236
+#: ../../Zotlabs/Module/Like.php:240
msgid "Previous action reversed."
msgstr "Il comando precedente è stato annullato."
-#: ../../mod/like.php:420
+#: ../../Zotlabs/Module/Like.php:371 ../../Zotlabs/Module/Subthread.php:87
+#: ../../Zotlabs/Module/Tagger.php:47 ../../include/text.php:1940
+#: ../../include/conversation.php:120
+msgid "photo"
+msgstr "la foto"
+
+#: ../../Zotlabs/Module/Like.php:371 ../../Zotlabs/Module/Subthread.php:87
+#: ../../include/text.php:1946 ../../include/conversation.php:148
+msgid "status"
+msgstr "il messaggio di stato"
+
+#: ../../Zotlabs/Module/Like.php:420 ../../include/conversation.php:164
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "A %1$s piace %3$s di %2$s"
+
+#: ../../Zotlabs/Module/Like.php:422 ../../include/conversation.php:167
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
+msgstr "A %1$s non piace %3$s di %2$s"
+
+#: ../../Zotlabs/Module/Like.php:424
#, php-format
msgid "%1$s agrees with %2$s's %3$s"
msgstr "%3$s di %2$s: %1$s è d'accordo"
-#: ../../mod/like.php:422
+#: ../../Zotlabs/Module/Like.php:426
#, php-format
msgid "%1$s doesn't agree with %2$s's %3$s"
msgstr "%3$s di %2$s: %1$s non è d'accordo"
-#: ../../mod/like.php:424
+#: ../../Zotlabs/Module/Like.php:428
#, php-format
msgid "%1$s abstains from a decision on %2$s's %3$s"
msgstr "%3$s di %2$s: %1$s non si esprime"
-#: ../../mod/like.php:426
+#: ../../Zotlabs/Module/Like.php:430
#, php-format
msgid "%1$s is attending %2$s's %3$s"
msgstr "%3$s di %2$s: %1$s partecipa"
-#: ../../mod/like.php:428
+#: ../../Zotlabs/Module/Like.php:432
#, php-format
msgid "%1$s is not attending %2$s's %3$s"
msgstr "%3$s di %2$s: %1$s non partecipa"
-#: ../../mod/like.php:430
+#: ../../Zotlabs/Module/Like.php:434
#, php-format
msgid "%1$s may attend %2$s's %3$s"
msgstr "%3$s di %2$s: %1$s forse partecipa"
-#: ../../mod/like.php:533
+#: ../../Zotlabs/Module/Like.php:537
msgid "Action completed."
msgstr "Comando completato."
-#: ../../mod/like.php:534
+#: ../../Zotlabs/Module/Like.php:538
msgid "Thank you."
msgstr "Grazie."
-#: ../../mod/lockview.php:57
+#: ../../Zotlabs/Module/Import_items.php:102
+msgid "Import completed"
+msgstr "Importazione completata"
+
+#: ../../Zotlabs/Module/Import_items.php:117
+msgid "Import Items"
+msgstr "Importa i contenuti"
+
+#: ../../Zotlabs/Module/Import_items.php:118
+msgid ""
+"Use this form to import existing posts and content from an export file."
+msgstr "Usa questa funzionalità per importare i vecchi contenuti e i post da un file esportato in precedenza."
+
+#: ../../Zotlabs/Module/Invite.php:29
+msgid "Total invitation limit exceeded."
+msgstr "Hai superato il numero massimo di inviti."
+
+#: ../../Zotlabs/Module/Invite.php:53
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s: non è un indirizzo email valido."
+
+#: ../../Zotlabs/Module/Invite.php:63
+msgid "Please join us on $Projectname"
+msgstr "Unisciti a noi su $Projectname"
+
+#: ../../Zotlabs/Module/Invite.php:74
+msgid "Invitation limit exceeded. Please contact your site administrator."
+msgstr "Hai superato il numero massimo di inviti. Contatta l'amministratore se necessario."
+
+#: ../../Zotlabs/Module/Invite.php:79
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s: la consegna del messaggio è fallita."
+
+#: ../../Zotlabs/Module/Invite.php:83
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d messaggio inviato."
+msgstr[1] "%d messaggi inviati."
+
+#: ../../Zotlabs/Module/Invite.php:102
+msgid "You have no more invitations available"
+msgstr "Non hai altri inviti disponibili"
+
+#: ../../Zotlabs/Module/Invite.php:133
+msgid "Send invitations"
+msgstr "Spedisci inviti"
+
+#: ../../Zotlabs/Module/Invite.php:134
+msgid "Enter email addresses, one per line:"
+msgstr "Inserisci gli indirizzi email, uno per riga:"
+
+#: ../../Zotlabs/Module/Invite.php:135 ../../Zotlabs/Module/Mail.php:249
+msgid "Your message:"
+msgstr "Il tuo messaggio:"
+
+#: ../../Zotlabs/Module/Invite.php:136
+msgid "Please join my community on $Projectname."
+msgstr "Entra nella mia comunità su $Projectname."
+
+#: ../../Zotlabs/Module/Invite.php:138
+msgid "You will need to supply this invitation code:"
+msgstr "Dovrai fornire questo codice invito:"
+
+#: ../../Zotlabs/Module/Invite.php:139
+msgid ""
+"1. Register at any $Projectname location (they are all inter-connected)"
+msgstr "1. Registrati su qualsiasi server $Projectname (sono tutti interconnessi)"
+
+#: ../../Zotlabs/Module/Invite.php:141
+msgid "2. Enter my $Projectname network address into the site searchbar."
+msgstr "2. Inserisci il mio indirizzo $Projectname nel riquadro di ricerca del sito."
+
+#: ../../Zotlabs/Module/Invite.php:142
+msgid "or visit"
+msgstr "oppure visita"
+
+#: ../../Zotlabs/Module/Invite.php:144
+msgid "3. Click [Connect]"
+msgstr "3. Clicca su [Aggiungi]"
+
+#: ../../Zotlabs/Module/Lockview.php:61
msgid "Remote privacy information not available."
msgstr "Le informazioni remote sulla privacy non sono disponibili."
-#: ../../mod/lockview.php:78
+#: ../../Zotlabs/Module/Lockview.php:82
msgid "Visible to:"
msgstr "Visibile a:"
-#: ../../mod/locs.php:21 ../../mod/locs.php:50
+#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54
msgid "Location not found."
msgstr "Indirizzo non trovato."
-#: ../../mod/locs.php:58
+#: ../../Zotlabs/Module/Locs.php:62
msgid "Location lookup failed."
msgstr "La ricerca dell'indirizzo è fallita."
-#: ../../mod/locs.php:62
+#: ../../Zotlabs/Module/Locs.php:66
msgid ""
"Please select another location to become primary before removing the primary"
" location."
msgstr "Prima di rimuovere il tuo canale primario assicurati di avere scelto una sua copia (clone) come primaria."
-#: ../../mod/locs.php:91
+#: ../../Zotlabs/Module/Locs.php:95
msgid "Syncing locations"
msgstr "Sincronizzazione tra hub"
-#: ../../mod/locs.php:101
+#: ../../Zotlabs/Module/Locs.php:105
msgid "No locations found."
msgstr "Nessun indirizzo trovato."
-#: ../../mod/locs.php:112
+#: ../../Zotlabs/Module/Locs.php:116
msgid "Manage Channel Locations"
msgstr "Modifica gli indirizzi del canale"
-#: ../../mod/locs.php:114 ../../mod/admin.php:1158 ../../mod/profiles.php:465
+#: ../../Zotlabs/Module/Locs.php:118 ../../Zotlabs/Module/Profiles.php:470
+#: ../../Zotlabs/Module/Admin.php:1224
msgid "Address"
msgstr "Indirizzo"
-#: ../../mod/locs.php:115
+#: ../../Zotlabs/Module/Locs.php:119
msgid "Primary"
msgstr "Primario"
-#: ../../mod/locs.php:116 ../../mod/menu.php:109
+#: ../../Zotlabs/Module/Locs.php:120 ../../Zotlabs/Module/Menu.php:113
msgid "Drop"
msgstr "Elimina"
-#: ../../mod/locs.php:118
+#: ../../Zotlabs/Module/Locs.php:122
msgid "Sync Now"
msgstr "Sincronizza ora"
-#: ../../mod/locs.php:119
+#: ../../Zotlabs/Module/Locs.php:123
msgid "Please wait several minutes between consecutive operations."
msgstr "Si raccomanda di attendere alcuni minuti prima di effettuare una nuova sincronizzazione."
-#: ../../mod/locs.php:120
+#: ../../Zotlabs/Module/Locs.php:124
msgid ""
"When possible, drop a location by logging into that website/hub and removing"
" your channel."
msgstr "Quando possibile, riduci il numero di cloni del tuo canale effettuando il login sul relativo hub e rimuovendoli."
-#: ../../mod/locs.php:121
+#: ../../Zotlabs/Module/Locs.php:125
msgid "Use this form to drop the location if the hub is no longer operating."
msgstr "Usa questo modulo per abbandonare un canale su un hub che non è più funzionante."
-#: ../../mod/ping.php:260
-msgid "sent you a private message"
-msgstr "ti ha inviato un messaggio privato"
-
-#: ../../mod/ping.php:308
-msgid "added your channel"
-msgstr "ha aggiunto il tuo canale"
-
-#: ../../mod/ping.php:350
-msgid "posted an event"
-msgstr "ha creato un evento"
-
-#: ../../mod/magic.php:69
+#: ../../Zotlabs/Module/Magic.php:71
msgid "Hub not found."
msgstr "Hub non trovato."
-#: ../../mod/mail.php:34
+#: ../../Zotlabs/Module/Mail.php:38
msgid "Unable to lookup recipient."
msgstr "Impossibile associare un destinatario."
-#: ../../mod/mail.php:42
+#: ../../Zotlabs/Module/Mail.php:45
msgid "Unable to communicate with requested channel."
msgstr "Impossibile comunicare con il canale richiesto."
-#: ../../mod/mail.php:49
+#: ../../Zotlabs/Module/Mail.php:52
msgid "Cannot verify requested channel."
msgstr "Impossibile verificare il canale richiesto."
-#: ../../mod/mail.php:75
+#: ../../Zotlabs/Module/Mail.php:78
msgid "Selected channel has private message restrictions. Send failed."
msgstr "Il canale ha delle regole restrittive per la ricezione dei messaggi privati. Invio fallito."
-#: ../../mod/mail.php:140
+#: ../../Zotlabs/Module/Mail.php:143
msgid "Messages"
msgstr "Messaggi"
-#: ../../mod/mail.php:175
+#: ../../Zotlabs/Module/Mail.php:178
msgid "Message recalled."
msgstr "Messaggio revocato."
-#: ../../mod/mail.php:188
+#: ../../Zotlabs/Module/Mail.php:191
msgid "Conversation removed."
msgstr "Conversazione rimossa."
-#: ../../mod/mail.php:231
+#: ../../Zotlabs/Module/Mail.php:206 ../../Zotlabs/Module/Mail.php:315
+msgid "Expires YYYY-MM-DD HH:MM"
+msgstr "Scade il YYYY-MM-DD HH:MM"
+
+#: ../../Zotlabs/Module/Mail.php:234
msgid "Requested channel is not in this network"
msgstr "Il canale cercato non è in questa rete"
-#: ../../mod/mail.php:239
+#: ../../Zotlabs/Module/Mail.php:242
msgid "Send Private Message"
msgstr "Invia un messaggio privato"
-#: ../../mod/mail.php:240 ../../mod/mail.php:370
+#: ../../Zotlabs/Module/Mail.php:243 ../../Zotlabs/Module/Mail.php:368
msgid "To:"
msgstr "A:"
-#: ../../mod/mail.php:243 ../../mod/mail.php:372
+#: ../../Zotlabs/Module/Mail.php:246 ../../Zotlabs/Module/Mail.php:370
msgid "Subject:"
msgstr "Oggetto:"
-#: ../../mod/mail.php:250
+#: ../../Zotlabs/Module/Mail.php:251 ../../Zotlabs/Module/Mail.php:376
+#: ../../include/conversation.php:1220
+msgid "Attach file"
+msgstr "Allega file"
+
+#: ../../Zotlabs/Module/Mail.php:253
msgid "Send"
msgstr "Invia"
-#: ../../mod/mail.php:342
+#: ../../Zotlabs/Module/Mail.php:256 ../../Zotlabs/Module/Mail.php:381
+#: ../../include/conversation.php:1251
+msgid "Set expiration date"
+msgstr "Data di scadenza"
+
+#: ../../Zotlabs/Module/Mail.php:340
msgid "Delete message"
msgstr "Elimina il messaggio"
-#: ../../mod/mail.php:343
+#: ../../Zotlabs/Module/Mail.php:341
msgid "Delivery report"
msgstr "Rapporto di trasmissione"
-#: ../../mod/mail.php:344
+#: ../../Zotlabs/Module/Mail.php:342
msgid "Recall message"
msgstr "Revoca il messaggio"
-#: ../../mod/mail.php:346
+#: ../../Zotlabs/Module/Mail.php:344
msgid "Message has been recalled."
msgstr "Il messaggio è stato revocato."
-#: ../../mod/mail.php:363
+#: ../../Zotlabs/Module/Mail.php:361
msgid "Delete Conversation"
msgstr "Elimina la conversazione"
-#: ../../mod/mail.php:365
+#: ../../Zotlabs/Module/Mail.php:363
msgid ""
"No secure communications available. You <strong>may</strong> be able to "
"respond from the sender's profile page."
msgstr "Non è disponibile alcun modo sicuro di comunicare con questo canale. <strong>Se possibile</strong>, prova a rispondere direttamente dalla pagina del profilo del mittente."
-#: ../../mod/mail.php:369
+#: ../../Zotlabs/Module/Mail.php:367
msgid "Send Reply"
msgstr "Invia la risposta"
-#: ../../mod/mail.php:374
+#: ../../Zotlabs/Module/Mail.php:372
#, php-format
msgid "Your message for %s (%s):"
msgstr "Il tuo messaggio per %s (%s):"
-#: ../../mod/manage.php:130 ../../mod/new_channel.php:117
+#: ../../Zotlabs/Module/Manage.php:136
+#: ../../Zotlabs/Module/New_channel.php:121
#, php-format
msgid "You have created %1$.0f of %2$.0f allowed channels."
msgstr "Hai creato %1$.0f dei %2$.0f canali permessi."
-#: ../../mod/manage.php:137
+#: ../../Zotlabs/Module/Manage.php:143
msgid "Create a new channel"
msgstr "Crea un nuovo canale"
-#: ../../mod/manage.php:159
+#: ../../Zotlabs/Module/Manage.php:164 ../../Zotlabs/Lib/Apps.php:213
+#: ../../include/nav.php:206
+msgid "Channel Manager"
+msgstr "Gestione canali"
+
+#: ../../Zotlabs/Module/Manage.php:165
msgid "Current Channel"
msgstr "Canale attuale"
-#: ../../mod/manage.php:161
+#: ../../Zotlabs/Module/Manage.php:167
msgid "Switch to one of your channels by selecting it."
msgstr "Seleziona l'altro canale a cui vuoi passare."
-#: ../../mod/manage.php:162
+#: ../../Zotlabs/Module/Manage.php:168
msgid "Default Channel"
msgstr "Canale predefinito"
-#: ../../mod/manage.php:163
+#: ../../Zotlabs/Module/Manage.php:169
msgid "Make Default"
msgstr "Rendi predefinito"
-#: ../../mod/manage.php:166
+#: ../../Zotlabs/Module/Manage.php:172
#, php-format
msgid "%d new messages"
msgstr "%d nuovi messaggi"
-#: ../../mod/manage.php:167
+#: ../../Zotlabs/Module/Manage.php:173
#, php-format
msgid "%d new introductions"
msgstr "%d nuove richieste di entrare in contatto"
-#: ../../mod/manage.php:169
+#: ../../Zotlabs/Module/Manage.php:175
msgid "Delegated Channel"
msgstr "Canale delegato"
-#: ../../mod/match.php:22
-msgid "Profile Match"
-msgstr "Profili corrispondenti"
+#: ../../Zotlabs/Module/Lostpass.php:19
+msgid "No valid account found."
+msgstr "Nessun account valido trovato."
-#: ../../mod/match.php:31
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr "Non hai scritto parole chiave. Aggiungi parole chiave al tuo profilo predefinito per comparire nelle ricerche."
+#: ../../Zotlabs/Module/Lostpass.php:33
+msgid "Password reset request issued. Check your email."
+msgstr "La richiesta per reimpostare la password è stata inviata. Controlla la tua email."
-#: ../../mod/match.php:63
-msgid "is interested in:"
-msgstr "interessi personali:"
+#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:107
+#, php-format
+msgid "Site Member (%s)"
+msgstr "Utente del sito (%s)"
-#: ../../mod/match.php:70
-msgid "No matches"
-msgstr "Nessun risultato"
+#: ../../Zotlabs/Module/Lostpass.php:44
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "È stato richiesto di reimpostare password su %s"
+
+#: ../../Zotlabs/Module/Lostpass.php:67
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "La richiesta non può essere verificata (potresti averla già usata precedentemente). La password non sarà reimpostata."
+
+#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1711
+msgid "Password Reset"
+msgstr "Reimposta la password"
+
+#: ../../Zotlabs/Module/Lostpass.php:91
+msgid "Your password has been reset as requested."
+msgstr "La password è stata reimpostata come richiesto."
+
+#: ../../Zotlabs/Module/Lostpass.php:92
+msgid "Your new password is"
+msgstr "La tua nuova password è"
+
+#: ../../Zotlabs/Module/Lostpass.php:93
+msgid "Save or copy your new password - and then"
+msgstr "Salva o copia la tua nuova password, quindi"
+
+#: ../../Zotlabs/Module/Lostpass.php:94
+msgid "click here to login"
+msgstr "clicca qui per accedere"
+
+#: ../../Zotlabs/Module/Lostpass.php:95
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Puoi cambiare la tua password dalla pagina delle <em>Impostazioni</em> dopo aver effettuato l'accesso."
+
+#: ../../Zotlabs/Module/Lostpass.php:112
+#, php-format
+msgid "Your password has changed at %s"
+msgstr "La tua password su %s è cambiata"
+
+#: ../../Zotlabs/Module/Lostpass.php:127
+msgid "Forgot your Password?"
+msgstr "Hai dimenticato la password?"
-#: ../../mod/menu.php:45
+#: ../../Zotlabs/Module/Lostpass.php:128
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Inserisci il tuo indirizzo email per reimpostare la password. Dopo aver inviato la richiesta, controlla l'email e troverai le istruzioni per continuare."
+
+#: ../../Zotlabs/Module/Lostpass.php:129
+msgid "Email Address"
+msgstr "Indirizzo email"
+
+#: ../../Zotlabs/Module/Lostpass.php:130
+msgid "Reset"
+msgstr "Reimposta"
+
+#: ../../Zotlabs/Module/Menu.php:49
msgid "Unable to update menu."
msgstr "Impossibile aggiornare il menù."
-#: ../../mod/menu.php:56
+#: ../../Zotlabs/Module/Menu.php:60
msgid "Unable to create menu."
msgstr "Impossibile creare il menù."
-#: ../../mod/menu.php:94 ../../mod/menu.php:106
+#: ../../Zotlabs/Module/Menu.php:98 ../../Zotlabs/Module/Menu.php:110
msgid "Menu Name"
msgstr "Nome del menu"
-#: ../../mod/menu.php:94
+#: ../../Zotlabs/Module/Menu.php:98
msgid "Unique name (not visible on webpage) - required"
msgstr "Nome unico (non visibile sulla pagina) - obbligatorio"
-#: ../../mod/menu.php:95 ../../mod/menu.php:107
+#: ../../Zotlabs/Module/Menu.php:99 ../../Zotlabs/Module/Menu.php:111
msgid "Menu Title"
msgstr "Titolo del menu"
-#: ../../mod/menu.php:95
+#: ../../Zotlabs/Module/Menu.php:99
msgid "Visible on webpage - leave empty for no title"
msgstr "Visibile sulla pagina - lascia vuoto per non avere un titolo"
-#: ../../mod/menu.php:96
+#: ../../Zotlabs/Module/Menu.php:100
msgid "Allow Bookmarks"
msgstr "Permetti i segnalibri"
-#: ../../mod/menu.php:96 ../../mod/menu.php:153
+#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157
msgid "Menu may be used to store saved bookmarks"
msgstr "Puoi salvare i segnalibri nei menù"
-#: ../../mod/menu.php:97 ../../mod/menu.php:155
+#: ../../Zotlabs/Module/Menu.php:101 ../../Zotlabs/Module/Menu.php:159
msgid "Submit and proceed"
msgstr "Salva e procedi"
-#: ../../mod/menu.php:113
+#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2266
+msgid "Menus"
+msgstr "Menù"
+
+#: ../../Zotlabs/Module/Menu.php:117
msgid "Bookmarks allowed"
msgstr "Permetti segnalibri"
-#: ../../mod/menu.php:115
+#: ../../Zotlabs/Module/Menu.php:119
msgid "Delete this menu"
msgstr "Elimina questo menù"
-#: ../../mod/menu.php:116 ../../mod/menu.php:150
+#: ../../Zotlabs/Module/Menu.php:120 ../../Zotlabs/Module/Menu.php:154
msgid "Edit menu contents"
msgstr "Modifica i contenuti del menù"
-#: ../../mod/menu.php:117
+#: ../../Zotlabs/Module/Menu.php:121
msgid "Edit this menu"
msgstr "Modifica questo menù"
-#: ../../mod/menu.php:132
+#: ../../Zotlabs/Module/Menu.php:136
msgid "Menu could not be deleted."
msgstr "Il menù non può essere eliminato."
-#: ../../mod/menu.php:140 ../../mod/mitem.php:24
+#: ../../Zotlabs/Module/Menu.php:144 ../../Zotlabs/Module/Mitem.php:28
msgid "Menu not found."
msgstr "Menù non trovato."
-#: ../../mod/menu.php:145
+#: ../../Zotlabs/Module/Menu.php:149
msgid "Edit Menu"
msgstr "Modifica menù"
-#: ../../mod/menu.php:149
+#: ../../Zotlabs/Module/Menu.php:153
msgid "Add or remove entries to this menu"
msgstr "Aggiungi o rimuovi elementi di questo menù"
-#: ../../mod/menu.php:151
+#: ../../Zotlabs/Module/Menu.php:155
msgid "Menu name"
msgstr "Nome del menù"
-#: ../../mod/menu.php:151
+#: ../../Zotlabs/Module/Menu.php:155
msgid "Must be unique, only seen by you"
msgstr "Deve essere unico, lo vedrai solo tu"
-#: ../../mod/menu.php:152
+#: ../../Zotlabs/Module/Menu.php:156
msgid "Menu title"
msgstr "Titolo del menù"
-#: ../../mod/menu.php:152
+#: ../../Zotlabs/Module/Menu.php:156
msgid "Menu title as seen by others"
msgstr "Titolo del menù come comparirà a tutti"
-#: ../../mod/menu.php:153
+#: ../../Zotlabs/Module/Menu.php:157
msgid "Allow bookmarks"
msgstr "Permetti l'invio di segnalibri"
-#: ../../mod/menu.php:162 ../../mod/mitem.php:116 ../../mod/xchan.php:37
+#: ../../Zotlabs/Module/Menu.php:166 ../../Zotlabs/Module/Mitem.php:120
+#: ../../Zotlabs/Module/Xchan.php:41
msgid "Not found."
msgstr "Non trovato."
-#: ../../mod/mitem.php:48
+#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:260
+#, php-format
+msgctxt "mood"
+msgid "%1$s is %2$s"
+msgstr "%1$s è %2$s"
+
+#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:225
+msgid "Mood"
+msgstr "Umore"
+
+#: ../../Zotlabs/Module/Mood.php:136
+msgid "Set your current mood and tell your friends"
+msgstr "Scegli il tuo umore attuale per mostrarlo agli amici"
+
+#: ../../Zotlabs/Module/Match.php:26
+msgid "Profile Match"
+msgstr "Profili corrispondenti"
+
+#: ../../Zotlabs/Module/Match.php:35
+msgid "No keywords to match. Please add keywords to your default profile."
+msgstr "Non hai scritto parole chiave. Aggiungi parole chiave al tuo profilo predefinito per comparire nelle ricerche."
+
+#: ../../Zotlabs/Module/Match.php:67
+msgid "is interested in:"
+msgstr "interessi personali:"
+
+#: ../../Zotlabs/Module/Match.php:74
+msgid "No matches"
+msgstr "Nessun risultato"
+
+#: ../../Zotlabs/Module/Network.php:96
+msgid "No such group"
+msgstr "Impossibile trovare il gruppo di canali"
+
+#: ../../Zotlabs/Module/Network.php:136
+msgid "No such channel"
+msgstr "Canale sconosciuto"
+
+#: ../../Zotlabs/Module/Network.php:141
+msgid "forum"
+msgstr "forum"
+
+#: ../../Zotlabs/Module/Network.php:153
+msgid "Search Results For:"
+msgstr "Cerca risultati con:"
+
+#: ../../Zotlabs/Module/Network.php:217
+msgid "Privacy group is empty"
+msgstr "Il gruppo di canali è vuoto"
+
+#: ../../Zotlabs/Module/Network.php:226
+msgid "Privacy group: "
+msgstr "Gruppo di canali:"
+
+#: ../../Zotlabs/Module/Network.php:252
+msgid "Invalid connection."
+msgstr "Contatto non valido."
+
+#: ../../Zotlabs/Module/Notify.php:57
+#: ../../Zotlabs/Module/Notifications.php:98
+msgid "No more system notifications."
+msgstr "Non ci sono nuove notifiche di sistema."
+
+#: ../../Zotlabs/Module/Notify.php:61
+#: ../../Zotlabs/Module/Notifications.php:102
+msgid "System Notifications"
+msgstr "Notifiche di sistema"
+
+#: ../../Zotlabs/Module/Mitem.php:52
msgid "Unable to create element."
msgstr "Impossibile creare l'elemento."
-#: ../../mod/mitem.php:72
+#: ../../Zotlabs/Module/Mitem.php:76
msgid "Unable to update menu element."
msgstr "Non è possibile aggiornare l'elemento del menù."
-#: ../../mod/mitem.php:88
+#: ../../Zotlabs/Module/Mitem.php:92
msgid "Unable to add menu element."
msgstr "Impossibile aggiungere l'elemento al menù."
-#: ../../mod/mitem.php:149 ../../mod/mitem.php:222
+#: ../../Zotlabs/Module/Mitem.php:153 ../../Zotlabs/Module/Mitem.php:226
msgid "Menu Item Permissions"
msgstr "Permessi del menu"
-#: ../../mod/mitem.php:150 ../../mod/mitem.php:223 ../../mod/settings.php:1075
+#: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:227
+#: ../../Zotlabs/Module/Settings.php:1068
msgid "(click to open/close)"
msgstr "(clicca per aprire/chiudere)"
-#: ../../mod/mitem.php:152 ../../mod/mitem.php:168
+#: ../../Zotlabs/Module/Mitem.php:156 ../../Zotlabs/Module/Mitem.php:172
msgid "Link Name"
msgstr "Nome link"
-#: ../../mod/mitem.php:153 ../../mod/mitem.php:227
+#: ../../Zotlabs/Module/Mitem.php:157 ../../Zotlabs/Module/Mitem.php:231
msgid "Link or Submenu Target"
msgstr "Azione del link o del sottomenu"
-#: ../../mod/mitem.php:153
+#: ../../Zotlabs/Module/Mitem.php:157
msgid "Enter URL of the link or select a menu name to create a submenu"
msgstr "Inserisci l'indirizzo del link o scegli il nome di un sottomenu"
-#: ../../mod/mitem.php:154 ../../mod/mitem.php:228
+#: ../../Zotlabs/Module/Mitem.php:158 ../../Zotlabs/Module/Mitem.php:232
msgid "Use magic-auth if available"
msgstr "Usa l'autenticazione tramite il tuo hub, se disponibile"
-#: ../../mod/mitem.php:155 ../../mod/mitem.php:229
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:233
msgid "Open link in new window"
msgstr "Apri il link in una nuova finestra"
-#: ../../mod/mitem.php:156 ../../mod/mitem.php:230
+#: ../../Zotlabs/Module/Mitem.php:160 ../../Zotlabs/Module/Mitem.php:234
msgid "Order in list"
msgstr "Ordine dell'elenco"
-#: ../../mod/mitem.php:156 ../../mod/mitem.php:230
+#: ../../Zotlabs/Module/Mitem.php:160 ../../Zotlabs/Module/Mitem.php:234
msgid "Higher numbers will sink to bottom of listing"
msgstr "I numeri più alti andranno in fondo all'elenco"
-#: ../../mod/mitem.php:157
+#: ../../Zotlabs/Module/Mitem.php:161
msgid "Submit and finish"
msgstr "Salva e termina"
-#: ../../mod/mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:162
msgid "Submit and continue"
msgstr "Salva e continua"
-#: ../../mod/mitem.php:166
+#: ../../Zotlabs/Module/Mitem.php:170
msgid "Menu:"
msgstr "Menu:"
-#: ../../mod/mitem.php:169
+#: ../../Zotlabs/Module/Mitem.php:173
msgid "Link Target"
msgstr "Destinazione link"
-#: ../../mod/mitem.php:172
+#: ../../Zotlabs/Module/Mitem.php:176
msgid "Edit menu"
msgstr "Modifica il menù"
-#: ../../mod/mitem.php:175
+#: ../../Zotlabs/Module/Mitem.php:179
msgid "Edit element"
msgstr "Modifica l'elemento"
-#: ../../mod/mitem.php:176
+#: ../../Zotlabs/Module/Mitem.php:180
msgid "Drop element"
msgstr "Elimina l'elemento"
-#: ../../mod/mitem.php:177
+#: ../../Zotlabs/Module/Mitem.php:181
msgid "New element"
msgstr "Nuovo elemento"
-#: ../../mod/mitem.php:178
+#: ../../Zotlabs/Module/Mitem.php:182
msgid "Edit this menu container"
msgstr "Modifica il contenitore del menù"
-#: ../../mod/mitem.php:179
+#: ../../Zotlabs/Module/Mitem.php:183
msgid "Add menu element"
msgstr "Aggiungi un elemento al menù"
-#: ../../mod/mitem.php:180
+#: ../../Zotlabs/Module/Mitem.php:184
msgid "Delete this menu item"
msgstr "Elimina questo elemento del menù"
-#: ../../mod/mitem.php:181
+#: ../../Zotlabs/Module/Mitem.php:185
msgid "Edit this menu item"
msgstr "Modifica questo elemento del menù"
-#: ../../mod/mitem.php:198
+#: ../../Zotlabs/Module/Mitem.php:202
msgid "Menu item not found."
msgstr "L'elemento del menù non è stato trovato."
-#: ../../mod/mitem.php:211
+#: ../../Zotlabs/Module/Mitem.php:215
msgid "Menu item deleted."
msgstr "L'elemento del menù è stato eliminato."
-#: ../../mod/mitem.php:213
+#: ../../Zotlabs/Module/Mitem.php:217
msgid "Menu item could not be deleted."
msgstr "L'elemento del menù non può essere eliminato."
-#: ../../mod/mitem.php:220
+#: ../../Zotlabs/Module/Mitem.php:224
msgid "Edit Menu Element"
msgstr "Modifica l'elemento del menù"
-#: ../../mod/mitem.php:226
+#: ../../Zotlabs/Module/Mitem.php:230
msgid "Link text"
msgstr "Testo del link"
-#: ../../mod/mood.php:132
-msgid "Set your current mood and tell your friends"
-msgstr "Scegli il tuo umore attuale per mostrarlo agli amici"
-
-#: ../../mod/network.php:91
-msgid "No such group"
-msgstr "Impossibile trovare il gruppo di canali"
-
-#: ../../mod/network.php:131
-msgid "No such channel"
-msgstr "Canale sconosciuto"
-
-#: ../../mod/network.php:136
-msgid "forum"
-msgstr "forum"
-
-#: ../../mod/network.php:148
-msgid "Search Results For:"
-msgstr "Cerca risultati con:"
-
-#: ../../mod/network.php:209
-msgid "Privacy group is empty"
-msgstr "Il gruppo di canali è vuoto"
-
-#: ../../mod/network.php:218
-msgid "Privacy group: "
-msgstr "Gruppo di canali:"
-
-#: ../../mod/network.php:244
-msgid "Invalid connection."
-msgstr "Contatto non valido."
-
-#: ../../mod/new_channel.php:124 ../../mod/register.php:227
+#: ../../Zotlabs/Module/New_channel.php:128
+#: ../../Zotlabs/Module/Register.php:231
msgid "Name or caption"
msgstr "Nome o titolo"
-#: ../../mod/new_channel.php:124 ../../mod/register.php:227
+#: ../../Zotlabs/Module/New_channel.php:128
+#: ../../Zotlabs/Module/Register.php:231
msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""
msgstr "Per esempio: \"Mario Rossi\", \"Lisa e le sue ricette\", \"Il campionato\", \"Il gruppo di escursionismo\""
-#: ../../mod/new_channel.php:126 ../../mod/register.php:229
+#: ../../Zotlabs/Module/New_channel.php:130
+#: ../../Zotlabs/Module/Register.php:233
msgid "Choose a short nickname"
msgstr "Scegli un nome breve"
-#: ../../mod/new_channel.php:126 ../../mod/register.php:229
+#: ../../Zotlabs/Module/New_channel.php:130
+#: ../../Zotlabs/Module/Register.php:233
#, php-format
msgid ""
"Your nickname will be used to create an easy to remember channel address "
"e.g. nickname%s"
msgstr "Il nome breve sarà usato per creare un indirizzo facile da ricordare per il tuo canale, per esempio nickname%s"
-#: ../../mod/new_channel.php:128 ../../mod/register.php:231
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:235
msgid "Channel role and privacy"
msgstr "Tipo di canale e privacy"
-#: ../../mod/new_channel.php:128 ../../mod/register.php:231
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:235
msgid "Select a channel role with your privacy requirements."
msgstr "Scegli il tipo di canale che vuoi e la privacy da applicare."
-#: ../../mod/new_channel.php:128 ../../mod/register.php:231
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:235
msgid "Read more about roles"
msgstr "Maggiori informazioni sui ruoli"
-#: ../../mod/new_channel.php:131
+#: ../../Zotlabs/Module/New_channel.php:135
msgid "Create Channel"
msgstr "Crea un canale"
-#: ../../mod/new_channel.php:132
+#: ../../Zotlabs/Module/New_channel.php:136
msgid ""
"A channel is your identity on this network. It can represent a person, a "
"blog, or a forum to name a few. Channels can make connections with other "
"channels to share information with highly detailed permissions."
msgstr "Un canale è la tua identità su questa rete. Può rappresentare una persona, un blog o un forum, per esempio. Il tuo canale può essere in contatto con altri canali per condividere contenuti con permessi anche molto dettagliati."
-#: ../../mod/new_channel.php:133
+#: ../../Zotlabs/Module/New_channel.php:137
msgid ""
"or <a href=\"import\">import an existing channel</a> from another location."
msgstr "oppure <a href=\"import\">importa un canale esistente</a> da un altro server/hub."
-#: ../../mod/notifications.php:26
+#: ../../Zotlabs/Module/Notifications.php:30
msgid "Invalid request identifier."
msgstr "L'identificativo della richiesta non è valido."
-#: ../../mod/notifications.php:35
+#: ../../Zotlabs/Module/Notifications.php:39
msgid "Discard"
msgstr "Rifiuta"
-#: ../../mod/notifications.php:94 ../../mod/notify.php:53
-msgid "No more system notifications."
-msgstr "Non ci sono nuove notifiche di sistema."
-
-#: ../../mod/notifications.php:98 ../../mod/notify.php:57
-msgid "System Notifications"
-msgstr "Notifiche di sistema"
-
-#: ../../mod/oexchange.php:23
-msgid "Unable to find your hub."
-msgstr "Impossibile raggiungere il tuo hub."
-
-#: ../../mod/oexchange.php:37
-msgid "Post successful."
-msgstr "Inviato!"
-
-#: ../../mod/openid.php:26
-msgid "OpenID protocol error. No ID returned."
-msgstr "Errore del protocollo OpenID. Nessun ID ricevuto in risposta."
-
-#: ../../mod/page.php:129
-msgid ""
-"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
-"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
-" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
-"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
-"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
-"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-
-#: ../../mod/pconfig.php:27 ../../mod/pconfig.php:60
-msgid "This setting requires special processing and editing has been blocked."
-msgstr "Questa impostazione è bloccata, richiede criteri di modifica speciali"
-
-#: ../../mod/pconfig.php:49
-msgid "Configuration Editor"
-msgstr "Editor di configurazione"
-
-#: ../../mod/pconfig.php:50
-msgid ""
-"Warning: Changing some settings could render your channel inoperable. Please"
-" leave this page unless you are comfortable with and knowledgeable about how"
-" to correctly use this feature."
-msgstr "Attenzione: alcune delle impostazioni, se cambiate, potrebbero rendere questo canale non funzionante. Lascia questa pagina a meno che tu non sappia con assoluta certezza quali modifiche effettuare."
-
-#: ../../mod/pdledit.php:14
-msgid "Layout updated."
-msgstr "Layout aggiornato."
-
-#: ../../mod/pdledit.php:30 ../../mod/pdledit.php:57
-msgid "Edit System Page Description"
-msgstr "Modifica i layout di sistema"
-
-#: ../../mod/pdledit.php:52
-msgid "Layout not found."
-msgstr "Layout non trovato."
-
-#: ../../mod/pdledit.php:58
-msgid "Module Name:"
-msgstr "Nome del modulo:"
-
-#: ../../mod/pdledit.php:59
-msgid "Layout Help"
-msgstr "Guida al layout"
+#: ../../Zotlabs/Module/Notifications.php:103 ../../include/nav.php:191
+msgid "Mark all system notifications seen"
+msgstr "Segna come lette le notifiche di sistema"
-#: ../../mod/photos.php:79
+#: ../../Zotlabs/Module/Photos.php:84
msgid "Page owner information could not be retrieved."
msgstr "Impossibile ottenere informazioni sul proprietario della pagina."
-#: ../../mod/photos.php:100 ../../mod/photos.php:144
+#: ../../Zotlabs/Module/Photos.php:99 ../../Zotlabs/Module/Photos.php:743
+#: ../../Zotlabs/Module/Profile_photo.php:114
+#: ../../Zotlabs/Module/Profile_photo.php:206
+#: ../../Zotlabs/Module/Profile_photo.php:294
+#: ../../include/photo/photo_driver.php:718
+msgid "Profile Photos"
+msgstr "Foto del profilo"
+
+#: ../../Zotlabs/Module/Photos.php:105 ../../Zotlabs/Module/Photos.php:149
msgid "Album not found."
msgstr "Album non trovato."
-#: ../../mod/photos.php:127
+#: ../../Zotlabs/Module/Photos.php:132
msgid "Delete Album"
msgstr "Elimina album"
-#: ../../mod/photos.php:148
+#: ../../Zotlabs/Module/Photos.php:153
msgid ""
"Multiple storage folders exist with this album name, but within different "
"directories. Please remove the desired folder or folders using the Files "
"manager"
msgstr "Esistono più archivi con il nome di quest'album, ma dentro cartelle diverse. Per favore rimuovili dall'Archivio file "
-#: ../../mod/photos.php:205 ../../mod/photos.php:1048
+#: ../../Zotlabs/Module/Photos.php:210 ../../Zotlabs/Module/Photos.php:1053
msgid "Delete Photo"
msgstr "Elimina foto"
-#: ../../mod/photos.php:528
+#: ../../Zotlabs/Module/Photos.php:533
msgid "No photos selected"
msgstr "Nessuna foto selezionata"
-#: ../../mod/photos.php:577
+#: ../../Zotlabs/Module/Photos.php:582
msgid "Access to this item is restricted."
msgstr "Questo elemento non è visibile a tutti."
-#: ../../mod/photos.php:616
+#: ../../Zotlabs/Module/Photos.php:621
#, php-format
msgid "%1$.2f MB of %2$.2f MB photo storage used."
msgstr "Hai usato %1$.2f Mb dei %2$.2f Mb di spazio disponibile."
-#: ../../mod/photos.php:619
+#: ../../Zotlabs/Module/Photos.php:624
#, php-format
msgid "%1$.2f MB photo storage used."
msgstr "Hai usato %1$.2f Mb del tuo spazio disponibile."
-#: ../../mod/photos.php:655
+#: ../../Zotlabs/Module/Photos.php:660
msgid "Upload Photos"
msgstr "Carica foto"
-#: ../../mod/photos.php:659
+#: ../../Zotlabs/Module/Photos.php:664
msgid "Enter an album name"
msgstr "Scegli il nome dell'album"
-#: ../../mod/photos.php:660
+#: ../../Zotlabs/Module/Photos.php:665
msgid "or select an existing album (doubleclick)"
msgstr "o seleziona un album esistente (doppio click)"
-#: ../../mod/photos.php:661
+#: ../../Zotlabs/Module/Photos.php:666
msgid "Create a status post for this upload"
msgstr "Pubblica sulla bacheca"
-#: ../../mod/photos.php:662
+#: ../../Zotlabs/Module/Photos.php:667
msgid "Caption (optional):"
msgstr "Titolo (facoltativo):"
-#: ../../mod/photos.php:663
+#: ../../Zotlabs/Module/Photos.php:668
msgid "Description (optional):"
msgstr "Descrizione (facoltativa):"
-#: ../../mod/photos.php:690
+#: ../../Zotlabs/Module/Photos.php:695
msgid "Album name could not be decoded"
msgstr "Non è stato possibile leggere il nome dell'album"
-#: ../../mod/photos.php:738 ../../mod/photos.php:1278
-#: ../../mod/photos.php:1295
+#: ../../Zotlabs/Module/Photos.php:743
msgid "Contact Photos"
msgstr "Foto dei contatti"
-#: ../../mod/photos.php:761
+#: ../../Zotlabs/Module/Photos.php:766
msgid "Show Newest First"
msgstr "Prima i più recenti"
-#: ../../mod/photos.php:763
+#: ../../Zotlabs/Module/Photos.php:768
msgid "Show Oldest First"
msgstr "Prima i più vecchi"
-#: ../../mod/photos.php:865
+#: ../../Zotlabs/Module/Photos.php:792 ../../Zotlabs/Module/Photos.php:1331
+#: ../../include/widgets.php:1499
+msgid "View Photo"
+msgstr "Guarda la foto"
+
+#: ../../Zotlabs/Module/Photos.php:823 ../../include/widgets.php:1516
+msgid "Edit Album"
+msgstr "Modifica album"
+
+#: ../../Zotlabs/Module/Photos.php:870
msgid "Permission denied. Access to this item may be restricted."
msgstr "Permesso negato. L'accesso a questo elemento può essere stato limitato."
-#: ../../mod/photos.php:867
+#: ../../Zotlabs/Module/Photos.php:872
msgid "Photo not available"
msgstr "Foto non disponibile"
-#: ../../mod/photos.php:925
+#: ../../Zotlabs/Module/Photos.php:930
msgid "Use as profile photo"
msgstr "Usa come foto del profilo"
-#: ../../mod/photos.php:926
+#: ../../Zotlabs/Module/Photos.php:931
msgid "Use as cover photo"
msgstr "Usa come copertina del canale"
-#: ../../mod/photos.php:933
+#: ../../Zotlabs/Module/Photos.php:938
msgid "Private Photo"
msgstr "Foto privata"
-#: ../../mod/photos.php:948
+#: ../../Zotlabs/Module/Photos.php:953
msgid "View Full Size"
msgstr "Vedi nelle dimensioni originali"
-#: ../../mod/photos.php:993 ../../mod/tagrm.php:133
+#: ../../Zotlabs/Module/Photos.php:998 ../../Zotlabs/Module/Admin.php:1437
+#: ../../Zotlabs/Module/Tagrm.php:137
msgid "Remove"
msgstr "Rimuovi"
-#: ../../mod/photos.php:1027
+#: ../../Zotlabs/Module/Photos.php:1032
msgid "Edit photo"
msgstr "Modifica la foto"
-#: ../../mod/photos.php:1029
+#: ../../Zotlabs/Module/Photos.php:1034
msgid "Rotate CW (right)"
msgstr "Ruota (senso orario)"
-#: ../../mod/photos.php:1030
+#: ../../Zotlabs/Module/Photos.php:1035
msgid "Rotate CCW (left)"
msgstr "Ruota (senso antiorario)"
-#: ../../mod/photos.php:1033
+#: ../../Zotlabs/Module/Photos.php:1038
msgid "Enter a new album name"
msgstr "Inserisci il nome del nuovo album"
-#: ../../mod/photos.php:1034
+#: ../../Zotlabs/Module/Photos.php:1039
msgid "or select an existing one (doubleclick)"
msgstr "o seleziona uno esistente (doppio click)"
-#: ../../mod/photos.php:1037
+#: ../../Zotlabs/Module/Photos.php:1042
msgid "Caption"
msgstr "Didascalia"
-#: ../../mod/photos.php:1039
+#: ../../Zotlabs/Module/Photos.php:1044
msgid "Add a Tag"
msgstr "Aggiungi tag"
-#: ../../mod/photos.php:1043
+#: ../../Zotlabs/Module/Photos.php:1048
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
msgstr "Esempio: @bob, @Barbara_Jensen, @jim@example.com"
-#: ../../mod/photos.php:1046
+#: ../../Zotlabs/Module/Photos.php:1051
msgid "Flag as adult in album view"
msgstr "Marca come 'per adulti'"
-#: ../../mod/photos.php:1238
+#: ../../Zotlabs/Module/Photos.php:1070 ../../Zotlabs/Lib/ThreadItem.php:261
+msgid "I like this (toggle)"
+msgstr "Attiva/disattiva Mi piace"
+
+#: ../../Zotlabs/Module/Photos.php:1071 ../../Zotlabs/Lib/ThreadItem.php:262
+msgid "I don't like this (toggle)"
+msgstr "Attiva/disattiva Non mi piace"
+
+#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:397
+#: ../../include/conversation.php:740
+msgid "Please wait"
+msgstr "Attendere"
+
+#: ../../Zotlabs/Module/Photos.php:1089 ../../Zotlabs/Module/Photos.php:1207
+#: ../../Zotlabs/Lib/ThreadItem.php:707
+msgid "This is you"
+msgstr "Questo sei tu"
+
+#: ../../Zotlabs/Module/Photos.php:1091 ../../Zotlabs/Module/Photos.php:1209
+#: ../../Zotlabs/Lib/ThreadItem.php:709 ../../include/js_strings.php:6
+msgid "Comment"
+msgstr "Commento"
+
+#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574
+msgctxt "title"
+msgid "Likes"
+msgstr "Mi piace"
+
+#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574
+msgctxt "title"
+msgid "Dislikes"
+msgstr "Non mi piace"
+
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
+msgctxt "title"
+msgid "Agree"
+msgstr "D'accordo"
+
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
+msgctxt "title"
+msgid "Disagree"
+msgstr "Non d'accordo"
+
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
+msgctxt "title"
+msgid "Abstain"
+msgstr "Astenuti"
+
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
+msgctxt "title"
+msgid "Attending"
+msgstr "Partecipano"
+
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
+msgctxt "title"
+msgid "Not attending"
+msgstr "Non partecipano"
+
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
+msgctxt "title"
+msgid "Might attend"
+msgstr "Forse partecipano"
+
+#: ../../Zotlabs/Module/Photos.php:1126 ../../Zotlabs/Module/Photos.php:1138
+#: ../../Zotlabs/Lib/ThreadItem.php:181 ../../Zotlabs/Lib/ThreadItem.php:193
+#: ../../include/conversation.php:1717
+msgid "View all"
+msgstr "Vedi tutto"
+
+#: ../../Zotlabs/Module/Photos.php:1130 ../../Zotlabs/Lib/ThreadItem.php:185
+#: ../../include/taxonomy.php:403 ../../include/conversation.php:1741
+#: ../../include/channel.php:1158
+msgctxt "noun"
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] "Mi piace"
+msgstr[1] "Mi piace"
+
+#: ../../Zotlabs/Module/Photos.php:1135 ../../Zotlabs/Lib/ThreadItem.php:190
+#: ../../include/conversation.php:1744
+msgctxt "noun"
+msgid "Dislike"
+msgid_plural "Dislikes"
+msgstr[0] "Non mi piace"
+msgstr[1] "Non mi piace"
+
+#: ../../Zotlabs/Module/Photos.php:1235
+msgid "Photo Tools"
+msgstr "Gestione delle foto"
+
+#: ../../Zotlabs/Module/Photos.php:1244
msgid "In This Photo:"
msgstr "In questa foto:"
-#: ../../mod/photos.php:1243
+#: ../../Zotlabs/Module/Photos.php:1249
msgid "Map"
msgstr "Mappa"
-#: ../../mod/photos.php:1334
+#: ../../Zotlabs/Module/Photos.php:1257 ../../Zotlabs/Lib/ThreadItem.php:386
+msgctxt "noun"
+msgid "Likes"
+msgstr "Mi piace"
+
+#: ../../Zotlabs/Module/Photos.php:1258 ../../Zotlabs/Lib/ThreadItem.php:387
+msgctxt "noun"
+msgid "Dislikes"
+msgstr "Non mi piace"
+
+#: ../../Zotlabs/Module/Photos.php:1263 ../../Zotlabs/Lib/ThreadItem.php:392
+#: ../../include/acl_selectors.php:285
+msgid "Close"
+msgstr "Chiudi"
+
+#: ../../Zotlabs/Module/Photos.php:1337
msgid "View Album"
msgstr "Guarda l'album"
-#: ../../mod/photos.php:1345 ../../mod/photos.php:1358
-#: ../../mod/photos.php:1359
+#: ../../Zotlabs/Module/Photos.php:1348 ../../Zotlabs/Module/Photos.php:1361
+#: ../../Zotlabs/Module/Photos.php:1362
msgid "Recent Photos"
msgstr "Foto recenti"
-#: ../../mod/admin.php:54
+#: ../../Zotlabs/Module/Ping.php:265
+msgid "sent you a private message"
+msgstr "ti ha inviato un messaggio privato"
+
+#: ../../Zotlabs/Module/Ping.php:313
+msgid "added your channel"
+msgstr "ha aggiunto il tuo canale"
+
+#: ../../Zotlabs/Module/Ping.php:323
+msgid "g A l F d"
+msgstr "g A l d F"
+
+#: ../../Zotlabs/Module/Ping.php:346
+msgid "[today]"
+msgstr "[oggi]"
+
+#: ../../Zotlabs/Module/Ping.php:355
+msgid "posted an event"
+msgstr "ha creato un evento"
+
+#: ../../Zotlabs/Module/Oexchange.php:27
+msgid "Unable to find your hub."
+msgstr "Impossibile raggiungere il tuo hub."
+
+#: ../../Zotlabs/Module/Oexchange.php:41
+msgid "Post successful."
+msgstr "Inviato!"
+
+#: ../../Zotlabs/Module/Openid.php:30
+msgid "OpenID protocol error. No ID returned."
+msgstr "Errore del protocollo OpenID. Nessun ID ricevuto in risposta."
+
+#: ../../Zotlabs/Module/Openid.php:193 ../../include/auth.php:226
+msgid "Login failed."
+msgstr "Accesso fallito."
+
+#: ../../Zotlabs/Module/Page.php:133
+msgid ""
+"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
+"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
+" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
+"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
+"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
+"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+
+#: ../../Zotlabs/Module/Pconfig.php:26 ../../Zotlabs/Module/Pconfig.php:59
+msgid "This setting requires special processing and editing has been blocked."
+msgstr "Questa impostazione è bloccata, richiede criteri di modifica speciali"
+
+#: ../../Zotlabs/Module/Pconfig.php:48
+msgid "Configuration Editor"
+msgstr "Editor di configurazione"
+
+#: ../../Zotlabs/Module/Pconfig.php:49
+msgid ""
+"Warning: Changing some settings could render your channel inoperable. Please"
+" leave this page unless you are comfortable with and knowledgeable about how"
+" to correctly use this feature."
+msgstr "Attenzione: alcune delle impostazioni, se cambiate, potrebbero rendere questo canale non funzionante. Lascia questa pagina a meno che tu non sappia con assoluta certezza quali modifiche effettuare."
+
+#: ../../Zotlabs/Module/Pdledit.php:18
+msgid "Layout updated."
+msgstr "Layout aggiornato."
+
+#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Pdledit.php:61
+msgid "Edit System Page Description"
+msgstr "Modifica i layout di sistema"
+
+#: ../../Zotlabs/Module/Pdledit.php:56
+msgid "Layout not found."
+msgstr "Layout non trovato."
+
+#: ../../Zotlabs/Module/Pdledit.php:62
+msgid "Module Name:"
+msgstr "Nome del modulo:"
+
+#: ../../Zotlabs/Module/Pdledit.php:63
+msgid "Layout Help"
+msgstr "Guida al layout"
+
+#: ../../Zotlabs/Module/Poke.php:168 ../../Zotlabs/Lib/Apps.php:226
+#: ../../include/conversation.php:960
+msgid "Poke"
+msgstr "Poke"
+
+#: ../../Zotlabs/Module/Poke.php:169
+msgid "Poke somebody"
+msgstr "Manda un poke"
+
+#: ../../Zotlabs/Module/Poke.php:172
+msgid "Poke/Prod"
+msgstr "Poke/Prod"
+
+#: ../../Zotlabs/Module/Poke.php:173
+msgid "Poke, prod or do other things to somebody"
+msgstr "Manda un poke o altro a qualcuno"
+
+#: ../../Zotlabs/Module/Poke.php:180
+msgid "Recipient"
+msgstr "Destinatario"
+
+#: ../../Zotlabs/Module/Poke.php:181
+msgid "Choose what you wish to do to recipient"
+msgstr "Scegli cosa vuoi inviare al destinatario"
+
+#: ../../Zotlabs/Module/Poke.php:184 ../../Zotlabs/Module/Poke.php:185
+msgid "Make this post private"
+msgstr "Rendi privato questo post"
+
+#: ../../Zotlabs/Module/Probe.php:30 ../../Zotlabs/Module/Probe.php:34
+#, php-format
+msgid "Fetching URL returns error: %1$s"
+msgstr "La chiamata all'URL restituisce questo errore: %1$s"
+
+#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:189
+#: ../../Zotlabs/Module/Profiles.php:246 ../../Zotlabs/Module/Profiles.php:625
+msgid "Profile not found."
+msgstr "Profilo non trovato."
+
+#: ../../Zotlabs/Module/Profiles.php:44
+msgid "Profile deleted."
+msgstr "Profilo eliminato."
+
+#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:104
+msgid "Profile-"
+msgstr "Profilo-"
+
+#: ../../Zotlabs/Module/Profiles.php:89 ../../Zotlabs/Module/Profiles.php:132
+msgid "New profile created."
+msgstr "Il nuovo profilo è stato creato."
+
+#: ../../Zotlabs/Module/Profiles.php:110
+msgid "Profile unavailable to clone."
+msgstr "Impossibile duplicare il profilo."
+
+#: ../../Zotlabs/Module/Profiles.php:151
+msgid "Profile unavailable to export."
+msgstr "Il profilo non è disponibile per l'export."
+
+#: ../../Zotlabs/Module/Profiles.php:256
+msgid "Profile Name is required."
+msgstr "Il nome del profilo è obbligatorio."
+
+#: ../../Zotlabs/Module/Profiles.php:427
+msgid "Marital Status"
+msgstr "Stato sentimentale"
+
+#: ../../Zotlabs/Module/Profiles.php:431
+msgid "Romantic Partner"
+msgstr "Partner affettivo"
+
+#: ../../Zotlabs/Module/Profiles.php:435 ../../Zotlabs/Module/Profiles.php:736
+msgid "Likes"
+msgstr "Mi piace"
+
+#: ../../Zotlabs/Module/Profiles.php:439 ../../Zotlabs/Module/Profiles.php:737
+msgid "Dislikes"
+msgstr "Non mi piace"
+
+#: ../../Zotlabs/Module/Profiles.php:443 ../../Zotlabs/Module/Profiles.php:744
+msgid "Work/Employment"
+msgstr "Lavoro/impiego"
+
+#: ../../Zotlabs/Module/Profiles.php:446
+msgid "Religion"
+msgstr "Religione"
+
+#: ../../Zotlabs/Module/Profiles.php:450
+msgid "Political Views"
+msgstr "Orientamento politico"
+
+#: ../../Zotlabs/Module/Profiles.php:458
+msgid "Sexual Preference"
+msgstr "Preferenze sessuali"
+
+#: ../../Zotlabs/Module/Profiles.php:462
+msgid "Homepage"
+msgstr "Home page"
+
+#: ../../Zotlabs/Module/Profiles.php:466
+msgid "Interests"
+msgstr "Interessi"
+
+#: ../../Zotlabs/Module/Profiles.php:560
+msgid "Profile updated."
+msgstr "Profilo aggiornato."
+
+#: ../../Zotlabs/Module/Profiles.php:644
+msgid "Hide your connections list from viewers of this profile"
+msgstr "Nascondi la tua lista di contatti ai visitatori di questo profilo"
+
+#: ../../Zotlabs/Module/Profiles.php:686
+msgid "Edit Profile Details"
+msgstr "Modifica i dettagli del profilo"
+
+#: ../../Zotlabs/Module/Profiles.php:688
+msgid "View this profile"
+msgstr "Guarda questo profilo"
+
+#: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:771
+#: ../../include/channel.php:959
+msgid "Edit visibility"
+msgstr "Cambia la visibilità"
+
+#: ../../Zotlabs/Module/Profiles.php:690
+msgid "Profile Tools"
+msgstr "Gestione del profilo"
+
+#: ../../Zotlabs/Module/Profiles.php:691
+msgid "Change cover photo"
+msgstr "Cambia la copertina del canale"
+
+#: ../../Zotlabs/Module/Profiles.php:692 ../../include/channel.php:930
+msgid "Change profile photo"
+msgstr "Cambia la foto del profilo"
+
+#: ../../Zotlabs/Module/Profiles.php:693
+msgid "Create a new profile using these settings"
+msgstr "Crea un nuovo profilo usando queste impostazioni"
+
+#: ../../Zotlabs/Module/Profiles.php:694
+msgid "Clone this profile"
+msgstr "Clona questo profilo"
+
+#: ../../Zotlabs/Module/Profiles.php:695
+msgid "Delete this profile"
+msgstr "Elimina questo profilo"
+
+#: ../../Zotlabs/Module/Profiles.php:696
+msgid "Add profile things"
+msgstr "Aggiungi oggetti al profilo"
+
+#: ../../Zotlabs/Module/Profiles.php:697 ../../include/widgets.php:105
+#: ../../include/conversation.php:1526
+msgid "Personal"
+msgstr "Personali"
+
+#: ../../Zotlabs/Module/Profiles.php:699
+msgid "Relation"
+msgstr "Relazione"
+
+#: ../../Zotlabs/Module/Profiles.php:700 ../../include/datetime.php:48
+msgid "Miscellaneous"
+msgstr "Altro"
+
+#: ../../Zotlabs/Module/Profiles.php:702
+msgid "Import profile from file"
+msgstr "Importa il profilo da un file"
+
+#: ../../Zotlabs/Module/Profiles.php:703
+msgid "Export profile to file"
+msgstr "Esporta il profilo in un file"
+
+#: ../../Zotlabs/Module/Profiles.php:704
+msgid "Your gender"
+msgstr "Sesso"
+
+#: ../../Zotlabs/Module/Profiles.php:705
+msgid "Marital status"
+msgstr "Stato civile"
+
+#: ../../Zotlabs/Module/Profiles.php:706
+msgid "Sexual preference"
+msgstr "Preferenze sessuali"
+
+#: ../../Zotlabs/Module/Profiles.php:709
+msgid "Profile name"
+msgstr "Nome del profilo"
+
+#: ../../Zotlabs/Module/Profiles.php:711
+msgid "This is your default profile."
+msgstr "Questo è il tuo profilo predefinito."
+
+#: ../../Zotlabs/Module/Profiles.php:713
+msgid "Your full name"
+msgstr "Il tuo nome completo"
+
+#: ../../Zotlabs/Module/Profiles.php:714
+msgid "Title/Description"
+msgstr "Titolo/descrizione"
+
+#: ../../Zotlabs/Module/Profiles.php:717
+msgid "Street address"
+msgstr "Indirizzo (via/piazza)"
+
+#: ../../Zotlabs/Module/Profiles.php:718
+msgid "Locality/City"
+msgstr "Località"
+
+#: ../../Zotlabs/Module/Profiles.php:719
+msgid "Region/State"
+msgstr "Regione/stato"
+
+#: ../../Zotlabs/Module/Profiles.php:720
+msgid "Postal/Zip code"
+msgstr "CAP"
+
+#: ../../Zotlabs/Module/Profiles.php:721
+msgid "Country"
+msgstr "Nazione"
+
+#: ../../Zotlabs/Module/Profiles.php:726
+msgid "Who (if applicable)"
+msgstr "Con chi (se possibile)"
+
+#: ../../Zotlabs/Module/Profiles.php:726
+msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
+msgstr "Per esempio: cathy123, Cathy Williams, cathy@example.com"
+
+#: ../../Zotlabs/Module/Profiles.php:727
+msgid "Since (date)"
+msgstr "dal (data)"
+
+#: ../../Zotlabs/Module/Profiles.php:730
+msgid "Tell us about yourself"
+msgstr "Raccontaci di te..."
+
+#: ../../Zotlabs/Module/Profiles.php:732
+msgid "Hometown"
+msgstr "Città dove vivo"
+
+#: ../../Zotlabs/Module/Profiles.php:733
+msgid "Political views"
+msgstr "Orientamento politico"
+
+#: ../../Zotlabs/Module/Profiles.php:734
+msgid "Religious views"
+msgstr "Orientamento religioso"
+
+#: ../../Zotlabs/Module/Profiles.php:735
+msgid "Keywords used in directory listings"
+msgstr "Parole chiavi mostrate nell'elenco dei canali"
+
+#: ../../Zotlabs/Module/Profiles.php:735
+msgid "Example: fishing photography software"
+msgstr "Per esempio: pesca fotografia programmazione"
+
+#: ../../Zotlabs/Module/Profiles.php:738
+msgid "Musical interests"
+msgstr "Interessi musicali"
+
+#: ../../Zotlabs/Module/Profiles.php:739
+msgid "Books, literature"
+msgstr "Libri, letteratura"
+
+#: ../../Zotlabs/Module/Profiles.php:740
+msgid "Television"
+msgstr "Televisione"
+
+#: ../../Zotlabs/Module/Profiles.php:741
+msgid "Film/Dance/Culture/Entertainment"
+msgstr "Film, danza, cultura, intrattenimento"
+
+#: ../../Zotlabs/Module/Profiles.php:742
+msgid "Hobbies/Interests"
+msgstr "Hobby/interessi"
+
+#: ../../Zotlabs/Module/Profiles.php:743
+msgid "Love/Romance"
+msgstr "Amore"
+
+#: ../../Zotlabs/Module/Profiles.php:745
+msgid "School/Education"
+msgstr "Scuola/educazione"
+
+#: ../../Zotlabs/Module/Profiles.php:746
+msgid "Contact information and social networks"
+msgstr "Contatti e social network"
+
+#: ../../Zotlabs/Module/Profiles.php:747
+msgid "My other channels"
+msgstr "I miei altri canali"
+
+#: ../../Zotlabs/Module/Profiles.php:767 ../../include/channel.php:955
+msgid "Profile Image"
+msgstr "Immagine del profilo"
+
+#: ../../Zotlabs/Module/Profiles.php:777 ../../include/nav.php:88
+#: ../../include/channel.php:937
+msgid "Edit Profiles"
+msgstr "Modifica i tuoi profili"
+
+#: ../../Zotlabs/Module/Profile_photo.php:179
+msgid ""
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Forza l'aggiornamento della pagina o cancella la cache del browser se la nuova foto non viene visualizzata immediatamente."
+
+#: ../../Zotlabs/Module/Profile_photo.php:367
+msgid "Upload Profile Photo"
+msgstr "Carica la foto del profilo"
+
+#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63
+msgid "Invalid profile identifier."
+msgstr "Indentificativo del profilo non valido."
+
+#: ../../Zotlabs/Module/Profperm.php:115
+msgid "Profile Visibility Editor"
+msgstr "Modifica la visibilità del profilo"
+
+#: ../../Zotlabs/Module/Profperm.php:117 ../../include/channel.php:1249
+msgid "Profile"
+msgstr "Profilo"
+
+#: ../../Zotlabs/Module/Profperm.php:119
+msgid "Click on a contact to add or remove."
+msgstr "Clicca su un contatto per aggiungerlo o rimuoverlo."
+
+#: ../../Zotlabs/Module/Profperm.php:128
+msgid "Visible To"
+msgstr "Visibile a"
+
+#: ../../Zotlabs/Module/Pubsites.php:22 ../../include/widgets.php:1270
+msgid "Public Hubs"
+msgstr "Hub pubblici"
+
+#: ../../Zotlabs/Module/Pubsites.php:25
+msgid ""
+"The listed hubs allow public registration for the $Projectname network. All "
+"hubs in the network are interlinked so membership on any of them conveys "
+"membership in the network as a whole. Some hubs may require subscription or "
+"provide tiered service plans. The hub itself <strong>may</strong> provide "
+"additional details."
+msgstr "I siti elencati permettono la registrazione libera sulla rete $Projectname. Tutti questi hub sono interconnessi, quindi essere iscritti su uno equivale a una registrazione su tutta la rete. Alcuni siti potrebbero richiedere un abbonamento o dei servizi a pagamento. Per maggiori dettagli visita gli indirizzi nell'elenco."
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Hub URL"
+msgstr "URL del hub"
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Access Type"
+msgstr "Tipo di accesso"
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Registration Policy"
+msgstr "Politica di registrazione"
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Stats"
+msgstr ""
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Software"
+msgstr "Software"
+
+#: ../../Zotlabs/Module/Pubsites.php:31 ../../Zotlabs/Module/Ratings.php:103
+#: ../../include/conversation.php:959
+msgid "Ratings"
+msgstr "Valutazioni"
+
+#: ../../Zotlabs/Module/Pubsites.php:38
+msgid "Rate"
+msgstr "Valuta"
+
+#: ../../Zotlabs/Module/Rate.php:160
+msgid "Website:"
+msgstr "Sito web:"
+
+#: ../../Zotlabs/Module/Rate.php:163
+#, php-format
+msgid "Remote Channel [%s] (not yet known on this site)"
+msgstr "Canale remoto [%s] (non ancora conosciuto da questo sito)"
+
+#: ../../Zotlabs/Module/Rate.php:164
+msgid "Rating (this information is public)"
+msgstr "Valutazione (visibile a tutti)"
+
+#: ../../Zotlabs/Module/Rate.php:165
+msgid "Optionally explain your rating (this information is public)"
+msgstr "Commento alla valutazione (facoltativo, visibile a tutti)"
+
+#: ../../Zotlabs/Module/Ratings.php:73
+msgid "No ratings"
+msgstr "Nessuna valutazione"
+
+#: ../../Zotlabs/Module/Ratings.php:104
+msgid "Rating: "
+msgstr "Valutazione:"
+
+#: ../../Zotlabs/Module/Ratings.php:105
+msgid "Website: "
+msgstr "Sito web:"
+
+#: ../../Zotlabs/Module/Ratings.php:107
+msgid "Description: "
+msgstr "Descrizione:"
+
+#: ../../Zotlabs/Module/Admin.php:77
msgid "Theme settings updated."
msgstr "Le impostazioni del tema sono state aggiornate."
-#: ../../mod/admin.php:174
+#: ../../Zotlabs/Module/Admin.php:197
msgid "# Accounts"
msgstr "# account"
-#: ../../mod/admin.php:175
+#: ../../Zotlabs/Module/Admin.php:198
msgid "# blocked accounts"
msgstr "# account bloccati"
-#: ../../mod/admin.php:176
+#: ../../Zotlabs/Module/Admin.php:199
msgid "# expired accounts"
msgstr "# account scaduti"
-#: ../../mod/admin.php:177
+#: ../../Zotlabs/Module/Admin.php:200
msgid "# expiring accounts"
msgstr "# account in scadenza"
-#: ../../mod/admin.php:188
+#: ../../Zotlabs/Module/Admin.php:211
msgid "# Channels"
msgstr "# canali"
-#: ../../mod/admin.php:189
+#: ../../Zotlabs/Module/Admin.php:212
msgid "# primary"
msgstr "# primari"
-#: ../../mod/admin.php:190
+#: ../../Zotlabs/Module/Admin.php:213
msgid "# clones"
msgstr "# cloni"
-#: ../../mod/admin.php:196
+#: ../../Zotlabs/Module/Admin.php:219
msgid "Message queues"
msgstr "Coda messaggi in uscita"
-#: ../../mod/admin.php:212 ../../mod/admin.php:455 ../../mod/admin.php:669
-#: ../../mod/admin.php:709 ../../mod/admin.php:984 ../../mod/admin.php:1148
-#: ../../mod/admin.php:1263 ../../mod/admin.php:1324 ../../mod/admin.php:1485
-#: ../../mod/admin.php:1519 ../../mod/admin.php:1604
+#: ../../Zotlabs/Module/Admin.php:236
+msgid "Your software should be updated"
+msgstr "Il tuo software ha bisogno di essere aggiornato"
+
+#: ../../Zotlabs/Module/Admin.php:241 ../../Zotlabs/Module/Admin.php:490
+#: ../../Zotlabs/Module/Admin.php:711 ../../Zotlabs/Module/Admin.php:755
+#: ../../Zotlabs/Module/Admin.php:1030 ../../Zotlabs/Module/Admin.php:1209
+#: ../../Zotlabs/Module/Admin.php:1329 ../../Zotlabs/Module/Admin.php:1419
+#: ../../Zotlabs/Module/Admin.php:1612 ../../Zotlabs/Module/Admin.php:1646
+#: ../../Zotlabs/Module/Admin.php:1731
msgid "Administration"
msgstr "Amministrazione"
-#: ../../mod/admin.php:213
+#: ../../Zotlabs/Module/Admin.php:242
msgid "Summary"
msgstr "Riepilogo"
-#: ../../mod/admin.php:216
+#: ../../Zotlabs/Module/Admin.php:245
msgid "Registered accounts"
msgstr "Account creati"
-#: ../../mod/admin.php:217 ../../mod/admin.php:673
+#: ../../Zotlabs/Module/Admin.php:246 ../../Zotlabs/Module/Admin.php:715
msgid "Pending registrations"
msgstr "Registrazioni da approvare"
-#: ../../mod/admin.php:218
+#: ../../Zotlabs/Module/Admin.php:247
msgid "Registered channels"
msgstr "Canali creati"
-#: ../../mod/admin.php:219 ../../mod/admin.php:674
+#: ../../Zotlabs/Module/Admin.php:248 ../../Zotlabs/Module/Admin.php:716
msgid "Active plugins"
msgstr "Plugin attivi"
-#: ../../mod/admin.php:220
+#: ../../Zotlabs/Module/Admin.php:249
msgid "Version"
msgstr "Versione"
-#: ../../mod/admin.php:339
+#: ../../Zotlabs/Module/Admin.php:250
+msgid "Repository version (master)"
+msgstr "Versione del repository (master)"
+
+#: ../../Zotlabs/Module/Admin.php:251
+msgid "Repository version (dev)"
+msgstr "Versione del repository (dev)"
+
+#: ../../Zotlabs/Module/Admin.php:373
msgid "Site settings updated."
msgstr "Impostazioni del sito salvate correttamente."
-#: ../../mod/admin.php:376 ../../mod/settings.php:805
+#: ../../Zotlabs/Module/Admin.php:400 ../../include/text.php:2841
+msgid "Default"
+msgstr "Predefinito"
+
+#: ../../Zotlabs/Module/Admin.php:410 ../../Zotlabs/Module/Settings.php:798
msgid "mobile"
msgstr "mobile"
-#: ../../mod/admin.php:378
+#: ../../Zotlabs/Module/Admin.php:412
msgid "experimental"
msgstr "sperimentale"
-#: ../../mod/admin.php:380
+#: ../../Zotlabs/Module/Admin.php:414
msgid "unsupported"
msgstr "non supportato"
-#: ../../mod/admin.php:426
+#: ../../Zotlabs/Module/Admin.php:460
msgid "Yes - with approval"
msgstr "Sì - con approvazione"
-#: ../../mod/admin.php:432
+#: ../../Zotlabs/Module/Admin.php:466
msgid "My site is not a public server"
msgstr "Non è un server pubblico"
-#: ../../mod/admin.php:433
+#: ../../Zotlabs/Module/Admin.php:467
msgid "My site has paid access only"
msgstr "È un servizio a pagamento"
-#: ../../mod/admin.php:434
+#: ../../Zotlabs/Module/Admin.php:468
msgid "My site has free access only"
msgstr "È un servizio gratuito"
-#: ../../mod/admin.php:435
+#: ../../Zotlabs/Module/Admin.php:469
msgid "My site offers free accounts with optional paid upgrades"
msgstr "È un servizio gratuito con opzioni aggiuntive a pagamento"
-#: ../../mod/admin.php:458 ../../mod/register.php:241
+#: ../../Zotlabs/Module/Admin.php:491 ../../include/widgets.php:1382
+msgid "Site"
+msgstr "Sito"
+
+#: ../../Zotlabs/Module/Admin.php:493 ../../Zotlabs/Module/Register.php:245
msgid "Registration"
msgstr "Registrazione"
-#: ../../mod/admin.php:459
+#: ../../Zotlabs/Module/Admin.php:494
msgid "File upload"
msgstr "Caricamento file"
-#: ../../mod/admin.php:460
+#: ../../Zotlabs/Module/Admin.php:495
msgid "Policies"
msgstr "Politiche"
-#: ../../mod/admin.php:465
+#: ../../Zotlabs/Module/Admin.php:496 ../../include/contact_widgets.php:16
+msgid "Advanced"
+msgstr "Avanzate"
+
+#: ../../Zotlabs/Module/Admin.php:500
msgid "Site name"
msgstr "Nome del sito"
-#: ../../mod/admin.php:466
+#: ../../Zotlabs/Module/Admin.php:501
msgid "Banner/Logo"
msgstr "Banner o logo"
-#: ../../mod/admin.php:467
+#: ../../Zotlabs/Module/Admin.php:502
msgid "Administrator Information"
msgstr "Informazioni sull'amministratore"
-#: ../../mod/admin.php:467
+#: ../../Zotlabs/Module/Admin.php:502
msgid ""
"Contact information for site administrators. Displayed on siteinfo page. "
"BBCode can be used here"
msgstr "Informazioni per contattare gli amministratori del sito. Saranno mostrate sulla pagina di informazioni. È consentito il BBcode"
-#: ../../mod/admin.php:468
+#: ../../Zotlabs/Module/Admin.php:503
msgid "System language"
msgstr "Lingua di sistema"
-#: ../../mod/admin.php:469
+#: ../../Zotlabs/Module/Admin.php:504
msgid "System theme"
msgstr "Tema di sistema"
-#: ../../mod/admin.php:469
+#: ../../Zotlabs/Module/Admin.php:504
msgid ""
"Default system theme - may be over-ridden by user profiles - <a href='#' "
"id='cnftheme'>change theme settings</a>"
msgstr "Il tema di sistema può essere cambiato dai profili dei singoli utenti - <a href='#' id='cnftheme'>Cambia le impostazioni del tema</a>"
-#: ../../mod/admin.php:470
+#: ../../Zotlabs/Module/Admin.php:505
msgid "Mobile system theme"
msgstr "Tema di sistema per dispositivi mobili"
-#: ../../mod/admin.php:470
+#: ../../Zotlabs/Module/Admin.php:505
msgid "Theme for mobile devices"
msgstr "Tema per i dispositivi mobili"
-#: ../../mod/admin.php:472
+#: ../../Zotlabs/Module/Admin.php:507
msgid "Allow Feeds as Connections"
msgstr "Permetti di aggiungere i feed come contatti"
-#: ../../mod/admin.php:472
+#: ../../Zotlabs/Module/Admin.php:507
msgid "(Heavy system resource usage)"
msgstr "(Uso intenso delle risorse di sistema!)"
-#: ../../mod/admin.php:473
+#: ../../Zotlabs/Module/Admin.php:508
msgid "Maximum image size"
msgstr "Dimensione massima immagini"
-#: ../../mod/admin.php:473
+#: ../../Zotlabs/Module/Admin.php:508
msgid ""
"Maximum size in bytes of uploaded images. Default is 0, which means no "
"limits."
msgstr "Massima dimensione in byte delle immagini caricate. Il default è 0, cioè nessun limite."
-#: ../../mod/admin.php:474
+#: ../../Zotlabs/Module/Admin.php:509
msgid "Does this site allow new member registration?"
msgstr "Questo sito permette a nuovi utenti di registrarsi?"
-#: ../../mod/admin.php:475
+#: ../../Zotlabs/Module/Admin.php:510
msgid "Invitation only"
msgstr "Solo con invito"
-#: ../../mod/admin.php:475
+#: ../../Zotlabs/Module/Admin.php:510
msgid ""
"Only allow new member registrations with an invitation code. Above register "
"policy must be set to Yes."
msgstr "La registrazione è permessa solo a chi possiede un codice di invito. Funziona solo se la possibilità di registrarsi è impostata a 'Sì'."
-#: ../../mod/admin.php:476
+#: ../../Zotlabs/Module/Admin.php:511
msgid "Which best describes the types of account offered by this hub?"
msgstr "Come descriveresti il tipo di servizio proposto da questo server?"
-#: ../../mod/admin.php:477
+#: ../../Zotlabs/Module/Admin.php:512
msgid "Register text"
msgstr "Testo di registrazione"
-#: ../../mod/admin.php:477
+#: ../../Zotlabs/Module/Admin.php:512
msgid "Will be displayed prominently on the registration page."
msgstr "Sarà mostrato ben visibile nella pagina di registrazione."
-#: ../../mod/admin.php:478
+#: ../../Zotlabs/Module/Admin.php:513
msgid "Site homepage to show visitors (default: login box)"
msgstr "Homepage del sito da mostrare ai navigatori (predefinito: modulo di login)"
-#: ../../mod/admin.php:478
+#: ../../Zotlabs/Module/Admin.php:513
msgid ""
"example: 'public' to show public stream, 'page/sys/home' to show a system "
"webpage called 'home' or 'include:home.html' to include a file."
msgstr "esempio: 'public' per mostrare i contenuti pubblici degli utenti, 'page/sys/home' per mostrare la pagina web definita come 'home' oppure 'include:home.html' per mostrare il contenuto di un file."
-#: ../../mod/admin.php:479
+#: ../../Zotlabs/Module/Admin.php:514
msgid "Preserve site homepage URL"
msgstr "Conserva l'URL della homepage"
-#: ../../mod/admin.php:479
+#: ../../Zotlabs/Module/Admin.php:514
msgid ""
"Present the site homepage in a frame at the original location instead of "
"redirecting"
msgstr "Presenta la homepage del sito in un frame all'indirizzo attuale invece di un redirect."
-#: ../../mod/admin.php:480
+#: ../../Zotlabs/Module/Admin.php:515
msgid "Accounts abandoned after x days"
msgstr "Account abbandonati dopo X giorni"
-#: ../../mod/admin.php:480
+#: ../../Zotlabs/Module/Admin.php:515
msgid ""
"Will not waste system resources polling external sites for abandonded "
"accounts. Enter 0 for no time limit."
msgstr "Eviterà di sprecare risorse di sistema controllando se i siti esterni hanno account abbandonati. Immettere 0 per non imporre nessun limite di tempo."
-#: ../../mod/admin.php:481
+#: ../../Zotlabs/Module/Admin.php:516
msgid "Allowed friend domains"
msgstr "Domini fidati e consentiti"
-#: ../../mod/admin.php:481
+#: ../../Zotlabs/Module/Admin.php:516
msgid ""
"Comma separated list of domains which are allowed to establish friendships "
"with this site. Wildcards are accepted. Empty to allow any domains"
msgstr "Elenco separato da virgola dei domini che possono stabilire amicizie con questo sito. Sono accettati caratteri jolly. Lascia vuoto per accettare connessioni da qualsiasi dominio."
-#: ../../mod/admin.php:482
+#: ../../Zotlabs/Module/Admin.php:517
msgid "Allowed email domains"
msgstr "Domini email consentiti"
-#: ../../mod/admin.php:482
+#: ../../Zotlabs/Module/Admin.php:517
msgid ""
"Comma separated list of domains which are allowed in email addresses for "
"registrations to this site. Wildcards are accepted. Empty to allow any "
"domains"
msgstr "Elenco separato da virgola dei domini permessi come indirizzi email in fase di registrazione. Sono accettati caratteri jolly. Lascia vuoto per accettare qualsiasi dominio email"
-#: ../../mod/admin.php:483
+#: ../../Zotlabs/Module/Admin.php:518
msgid "Not allowed email domains"
msgstr "Domini email non consentiti"
-#: ../../mod/admin.php:483
+#: ../../Zotlabs/Module/Admin.php:518
msgid ""
"Comma separated list of domains which are not allowed in email addresses for"
" registrations to this site. Wildcards are accepted. Empty to allow any "
"domains, unless allowed domains have been defined."
msgstr "Elenco separato da virgola dei domini permessi come indirizzi email in fase di registrazione a questo sito. Sono accettati caratteri jolly. Lascalo vuoto per accettare qualsiasi dominio."
-#: ../../mod/admin.php:484
+#: ../../Zotlabs/Module/Admin.php:519
msgid "Verify Email Addresses"
msgstr "Verifica l'indirizzo email"
-#: ../../mod/admin.php:484
+#: ../../Zotlabs/Module/Admin.php:519
msgid ""
"Check to verify email addresses used in account registration (recommended)."
msgstr "Attiva per richiedere la verifica degli indirizzi email dei nuovi utenti (consigliato)."
-#: ../../mod/admin.php:485
+#: ../../Zotlabs/Module/Admin.php:520
msgid "Force publish"
msgstr "Forza la publicazione del profilo"
-#: ../../mod/admin.php:485
+#: ../../Zotlabs/Module/Admin.php:520
msgid ""
"Check to force all profiles on this site to be listed in the site directory."
msgstr "Seleziona per pubblicare sui directory server <strong>tutti</strong> i profili registrati su questo sito."
-#: ../../mod/admin.php:486
+#: ../../Zotlabs/Module/Admin.php:521
msgid "Import Public Streams"
msgstr "Suggerisci contenuti pubblici della rete Hubzilla"
-#: ../../mod/admin.php:486
+#: ../../Zotlabs/Module/Admin.php:521
msgid ""
"Import and allow access to public content pulled from other sites. Warning: "
"this content is unmoderated."
msgstr "Suggerisci e visualizza i post pubblici presenti su altri siti Hubzilla. Attenzione: i contenuti potrebbero essere inappropriati perché non sottoposti a moderazione."
-#: ../../mod/admin.php:487
-msgid "login on Homepage"
-msgstr "Mostra il login sulla homepage"
+#: ../../Zotlabs/Module/Admin.php:522
+msgid "Login on Homepage"
+msgstr "Login sulla homepage"
-#: ../../mod/admin.php:487
+#: ../../Zotlabs/Module/Admin.php:522
msgid ""
"Present a login box to visitors on the home page if no other content has "
"been configured."
msgstr "Presenta il modulo di login ai visitatori sulla homepage in mancanza di altri contenuti."
-#: ../../mod/admin.php:489
+#: ../../Zotlabs/Module/Admin.php:523
+msgid "Enable context help"
+msgstr "Abilita la guida contestuale"
+
+#: ../../Zotlabs/Module/Admin.php:523
+msgid ""
+"Display contextual help for the current page when the help button is "
+"pressed."
+msgstr "Quando è premuto il bottone della guida mostra quella della pagina corrente"
+
+#: ../../Zotlabs/Module/Admin.php:525
msgid "Directory Server URL"
msgstr "URL del directory server"
-#: ../../mod/admin.php:489
+#: ../../Zotlabs/Module/Admin.php:525
msgid "Default directory server"
msgstr "Directory server predefinito"
-#: ../../mod/admin.php:491
+#: ../../Zotlabs/Module/Admin.php:527
msgid "Proxy user"
msgstr "Utente proxy"
-#: ../../mod/admin.php:492
+#: ../../Zotlabs/Module/Admin.php:528
msgid "Proxy URL"
msgstr "URL proxy"
-#: ../../mod/admin.php:493
+#: ../../Zotlabs/Module/Admin.php:529
msgid "Network timeout"
msgstr "Timeout rete"
-#: ../../mod/admin.php:493
+#: ../../Zotlabs/Module/Admin.php:529
msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
msgstr "Valore in secondi. Imposta a 0 per illimitato (sconsigliato)."
-#: ../../mod/admin.php:494
+#: ../../Zotlabs/Module/Admin.php:530
msgid "Delivery interval"
msgstr "Recapito ritardato"
-#: ../../mod/admin.php:494
+#: ../../Zotlabs/Module/Admin.php:530
msgid ""
"Delay background delivery processes by this many seconds to reduce system "
"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
"for large dedicated servers."
msgstr "Numero di secondi di cui può essere ritardato il recapito, per ridurre il carico di sistema. Consigliati: 4-5 secondi per hosting condiviso, 2-3 per i VPS, 0-1 per grandi server dedicati."
-#: ../../mod/admin.php:495
+#: ../../Zotlabs/Module/Admin.php:531
msgid "Deliveries per process"
msgstr "Tentativi di recapito per processo"
-#: ../../mod/admin.php:495
+#: ../../Zotlabs/Module/Admin.php:531
msgid ""
"Number of deliveries to attempt in a single operating system process. Adjust"
" if necessary to tune system performance. Recommend: 1-5."
msgstr "Numero di tentativi di recapito da tentare per ciascun processo. Può essere modificato per migliorare le performance di sistema. Raccomandato: 1-5"
-#: ../../mod/admin.php:496
+#: ../../Zotlabs/Module/Admin.php:532
msgid "Poll interval"
msgstr "Intervallo di polling"
-#: ../../mod/admin.php:496
+#: ../../Zotlabs/Module/Admin.php:532
msgid ""
"Delay background polling processes by this many seconds to reduce system "
"load. If 0, use delivery interval."
msgstr "Numero di secondi di cui può essere ritardato il polling in background, per ridurre il carico del sistema. Se 0, verrà usato lo stesso valore del 'Recapito ritardato'."
-#: ../../mod/admin.php:497
+#: ../../Zotlabs/Module/Admin.php:533
msgid "Maximum Load Average"
msgstr "Carico massimo medio"
-#: ../../mod/admin.php:497
+#: ../../Zotlabs/Module/Admin.php:533
msgid ""
"Maximum system load before delivery and poll processes are deferred - "
"default 50."
msgstr "Carico di sistema massimo perché i processi di recapito e polling siano ritardati - il valore predefinito è 50."
-#: ../../mod/admin.php:498
+#: ../../Zotlabs/Module/Admin.php:534
msgid "Expiration period in days for imported (grid/network) content"
msgstr "Scadenza dei contenuti importati da altri siti (in giorni)"
-#: ../../mod/admin.php:498
+#: ../../Zotlabs/Module/Admin.php:534
msgid "0 for no expiration of imported content"
msgstr "0 per non avere scadenza"
-#: ../../mod/admin.php:635 ../../mod/admin.php:636 ../../mod/settings.php:729
+#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:678
+#: ../../Zotlabs/Module/Settings.php:722
msgid "Off"
msgstr "Off"
-#: ../../mod/admin.php:635 ../../mod/admin.php:636 ../../mod/settings.php:729
+#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:678
+#: ../../Zotlabs/Module/Settings.php:722
msgid "On"
msgstr "On"
-#: ../../mod/admin.php:636
+#: ../../Zotlabs/Module/Admin.php:678
#, php-format
msgid "Lock feature %s"
msgstr "Rendi non modificabile %s"
-#: ../../mod/admin.php:644
+#: ../../Zotlabs/Module/Admin.php:686
msgid "Manage Additional Features"
msgstr "Funzionalità opzionali"
-#: ../../mod/admin.php:661
+#: ../../Zotlabs/Module/Admin.php:703
msgid "No server found"
msgstr "Server non trovato"
-#: ../../mod/admin.php:668 ../../mod/admin.php:998
+#: ../../Zotlabs/Module/Admin.php:710 ../../Zotlabs/Module/Admin.php:1046
msgid "ID"
msgstr "ID"
-#: ../../mod/admin.php:668
+#: ../../Zotlabs/Module/Admin.php:710
msgid "for channel"
msgstr "per il canale"
-#: ../../mod/admin.php:668
+#: ../../Zotlabs/Module/Admin.php:710
msgid "on server"
msgstr "sul server"
-#: ../../mod/admin.php:670
+#: ../../Zotlabs/Module/Admin.php:712
msgid "Server"
msgstr "Server"
-#: ../../mod/admin.php:712
+#: ../../Zotlabs/Module/Admin.php:746
+msgid ""
+"By default, unfiltered HTML is allowed in embedded media. This is inherently"
+" insecure."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:749
+msgid ""
+"The recommended setting is to only allow unfiltered HTML from the following "
+"sites:"
+msgstr "L'impostazione consigliata è di permettere HTML non filtrato solo dai siti seguenti:"
+
+#: ../../Zotlabs/Module/Admin.php:750
+msgid ""
+"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br"
+" />https://vimeo.com/<br />https://soundcloud.com/<br />"
+msgstr "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"
+
+#: ../../Zotlabs/Module/Admin.php:751
+msgid ""
+"All other embedded content will be filtered, <strong>unless</strong> "
+"embedded content from that site is explicitly blocked."
+msgstr "Tutti gli altri contenuti incorporati saranno filtrati <strong>a meno che</strong> il contenuto incorporato di quel sito non venga esplicitamente bloccato."
+
+#: ../../Zotlabs/Module/Admin.php:756 ../../include/widgets.php:1385
+msgid "Security"
+msgstr "Sicurezza"
+
+#: ../../Zotlabs/Module/Admin.php:758
msgid "Block public"
msgstr "Blocca pagine pubbliche"
-#: ../../mod/admin.php:712
+#: ../../Zotlabs/Module/Admin.php:758
msgid ""
"Check to block public access to all otherwise public personal pages on this "
"site unless you are currently authenticated."
msgstr "Seleziona per impedire di vedere le pagine personali di questo sito a chi non ha effettuato l'accesso."
-#: ../../mod/admin.php:713
+#: ../../Zotlabs/Module/Admin.php:759
+msgid "Set \"Transport Security\" HTTP header"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:760
+msgid "Set \"Content Security Policy\" HTTP header"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:761
msgid "Allow communications only from these sites"
msgstr "Permetti la comunicazione solo da questi siti"
-#: ../../mod/admin.php:713
+#: ../../Zotlabs/Module/Admin.php:761
msgid ""
"One site per line. Leave empty to allow communication from anywhere by "
"default"
msgstr "Un sito per riga. Lascia vuoto per permettere la comunicazione con tutti"
-#: ../../mod/admin.php:714
+#: ../../Zotlabs/Module/Admin.php:762
msgid "Block communications from these sites"
msgstr "Blocca la comunicazione da questi siti"
-#: ../../mod/admin.php:715
+#: ../../Zotlabs/Module/Admin.php:763
msgid "Allow communications only from these channels"
msgstr "Permetti la comunicazione solo da questi canali"
-#: ../../mod/admin.php:715
+#: ../../Zotlabs/Module/Admin.php:763
msgid ""
"One channel (hash) per line. Leave empty to allow from any channel by "
"default"
msgstr "Un canale (hash) per riga. Lascia vuoto per comunicare con tutti i canali"
-#: ../../mod/admin.php:716
+#: ../../Zotlabs/Module/Admin.php:764
msgid "Block communications from these channels"
msgstr "Blocca la comunicazione da questi canali"
-#: ../../mod/admin.php:717
-msgid "Allow embedded HTML content only from these domains"
-msgstr "Permetti i contenuti incorporati HTML solo da questi domini"
+#: ../../Zotlabs/Module/Admin.php:765
+msgid "Only allow embeds from secure (SSL) websites and links."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:766
+msgid "Allow unfiltered embedded HTML content only from these domains"
+msgstr ""
-#: ../../mod/admin.php:717
-msgid "One site per line. Leave empty to allow from any site by default"
-msgstr "Un sito per riga. Lascia vuoto per permettere sempre i contenuti incorporati"
+#: ../../Zotlabs/Module/Admin.php:766
+msgid "One site per line. By default embedded content is filtered."
+msgstr ""
-#: ../../mod/admin.php:718
+#: ../../Zotlabs/Module/Admin.php:767
msgid "Block embedded HTML from these domains"
msgstr "Blocca i contenuti incorporati HTML da questi domini"
-#: ../../mod/admin.php:720
-msgid "Cooperative embed security"
-msgstr "Sicurezza cooperativa sui contenuti incorporati"
-
-#: ../../mod/admin.php:720
-msgid "Enable to share embed security with other compatible sites/hubs"
-msgstr "Abilita la condivisione con altri siti/hub delle informazioni di sicurezza sui contenuti incorporati"
-
-#: ../../mod/admin.php:735
+#: ../../Zotlabs/Module/Admin.php:785
msgid "Update has been marked successful"
msgstr "L'aggiornamento è stato marcato come eseguito."
-#: ../../mod/admin.php:745
+#: ../../Zotlabs/Module/Admin.php:795
#, php-format
msgid "Executing %s failed. Check system logs."
msgstr "Fallita l'esecuzione di %s. Maggiori informazioni sui log di sistema."
-#: ../../mod/admin.php:748
+#: ../../Zotlabs/Module/Admin.php:798
#, php-format
msgid "Update %s was successfully applied."
msgstr "L'aggiornamento %s è terminato correttamente."
-#: ../../mod/admin.php:752
+#: ../../Zotlabs/Module/Admin.php:802
#, php-format
msgid "Update %s did not return a status. Unknown if it succeeded."
msgstr "L'aggiornamento %s non ha dato risposta. Impossibile determinare se è terminato correttamente."
-#: ../../mod/admin.php:755
+#: ../../Zotlabs/Module/Admin.php:805
#, php-format
msgid "Update function %s could not be found."
msgstr "Impossibile trovare la funzione di aggiornamento %s"
-#: ../../mod/admin.php:771
+#: ../../Zotlabs/Module/Admin.php:821
msgid "No failed updates."
msgstr "Nessun aggiornamento fallito."
-#: ../../mod/admin.php:775
+#: ../../Zotlabs/Module/Admin.php:825
msgid "Failed Updates"
msgstr "Aggiornamenti falliti."
-#: ../../mod/admin.php:777
+#: ../../Zotlabs/Module/Admin.php:827
msgid "Mark success (if update was manually applied)"
msgstr "Marca come eseguito (se applicato manualmente)."
-#: ../../mod/admin.php:778
+#: ../../Zotlabs/Module/Admin.php:828
msgid "Attempt to execute this update step automatically"
msgstr "Tenta di eseguire in automatico questo passaggio dell'aggiornamento."
-#: ../../mod/admin.php:809
+#: ../../Zotlabs/Module/Admin.php:859
msgid "Queue Statistics"
msgstr "Statistiche della coda"
-#: ../../mod/admin.php:810
+#: ../../Zotlabs/Module/Admin.php:860
msgid "Total Entries"
msgstr "Totale"
-#: ../../mod/admin.php:811
+#: ../../Zotlabs/Module/Admin.php:861
msgid "Priority"
msgstr "Priorità"
-#: ../../mod/admin.php:812
+#: ../../Zotlabs/Module/Admin.php:862
msgid "Destination URL"
msgstr "URL di destinazione"
-#: ../../mod/admin.php:813
+#: ../../Zotlabs/Module/Admin.php:863
msgid "Mark hub permanently offline"
msgstr "Questo hub è definitivamente offline"
-#: ../../mod/admin.php:814
+#: ../../Zotlabs/Module/Admin.php:864
msgid "Empty queue for this hub"
msgstr "Svuota la coda per questo hub"
-#: ../../mod/admin.php:815
+#: ../../Zotlabs/Module/Admin.php:865
msgid "Last known contact"
msgstr "Ultimo scambio dati"
-#: ../../mod/admin.php:851
+#: ../../Zotlabs/Module/Admin.php:901
#, php-format
msgid "%s account blocked/unblocked"
msgid_plural "%s account blocked/unblocked"
msgstr[0] "Modificato il blocco su %s account"
msgstr[1] "Modificato il blocco verso %s"
-#: ../../mod/admin.php:859
+#: ../../Zotlabs/Module/Admin.php:908
#, php-format
msgid "%s account deleted"
msgid_plural "%s accounts deleted"
msgstr[0] "%s account eliminato"
msgstr[1] "%s account eliminati"
-#: ../../mod/admin.php:895
+#: ../../Zotlabs/Module/Admin.php:944
msgid "Account not found"
msgstr "Account non trovato"
-#: ../../mod/admin.php:907
+#: ../../Zotlabs/Module/Admin.php:955
#, php-format
msgid "Account '%s' deleted"
msgstr "Account '%s' eliminato"
-#: ../../mod/admin.php:915
+#: ../../Zotlabs/Module/Admin.php:963
#, php-format
msgid "Account '%s' blocked"
msgstr "Aggiunto un blocco verso '%s'"
-#: ../../mod/admin.php:923
+#: ../../Zotlabs/Module/Admin.php:971
#, php-format
msgid "Account '%s' unblocked"
msgstr "Rimosso il blocco verso '%s'"
-#: ../../mod/admin.php:985 ../../mod/admin.php:997
-msgid "Users"
-msgstr "Utenti"
+#: ../../Zotlabs/Module/Admin.php:1031 ../../Zotlabs/Module/Admin.php:1044
+#: ../../include/widgets.php:1383
+msgid "Accounts"
+msgstr "Account"
-#: ../../mod/admin.php:987 ../../mod/admin.php:1151
+#: ../../Zotlabs/Module/Admin.php:1033 ../../Zotlabs/Module/Admin.php:1212
msgid "select all"
msgstr "seleziona tutti"
-#: ../../mod/admin.php:988
-msgid "User registrations waiting for confirm"
-msgstr "Richieste di registrazione in attesa di conferma"
+#: ../../Zotlabs/Module/Admin.php:1034
+msgid "Registrations waiting for confirm"
+msgstr ""
-#: ../../mod/admin.php:989
+#: ../../Zotlabs/Module/Admin.php:1035
msgid "Request date"
msgstr "Data richiesta"
-#: ../../mod/admin.php:990
+#: ../../Zotlabs/Module/Admin.php:1036
msgid "No registrations."
msgstr "Nessuna registrazione."
-#: ../../mod/admin.php:992
+#: ../../Zotlabs/Module/Admin.php:1038
msgid "Deny"
msgstr "Nega"
-#: ../../mod/admin.php:998
+#: ../../Zotlabs/Module/Admin.php:1048 ../../include/group.php:267
+msgid "All Channels"
+msgstr "Tutti i canali"
+
+#: ../../Zotlabs/Module/Admin.php:1049
msgid "Register date"
msgstr "Data registrazione"
-#: ../../mod/admin.php:998
+#: ../../Zotlabs/Module/Admin.php:1050
msgid "Last login"
msgstr "Ultimo accesso"
-#: ../../mod/admin.php:998
+#: ../../Zotlabs/Module/Admin.php:1051
msgid "Expires"
msgstr "Con scadenza"
-#: ../../mod/admin.php:998
+#: ../../Zotlabs/Module/Admin.php:1052
msgid "Service Class"
msgstr "Classe dell'account"
-#: ../../mod/admin.php:1000
+#: ../../Zotlabs/Module/Admin.php:1054
msgid ""
"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
" on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Gli account selezionati saranno eliminati!\\n\\nTutto ciò che hanno caricato o pubblicato su questo sito sarà eliminato definitivamente!\\n\\nVuoi confermare?"
-#: ../../mod/admin.php:1001
+#: ../../Zotlabs/Module/Admin.php:1055
msgid ""
"The account {0} will be deleted!\\n\\nEverything this account has posted on "
"this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "L'account {0} sarà eliminato!\\n\\nTutto ciò che ha caricato o pubblicato su questo sito sarà eliminato definitivamente!\\n\\nVuoi confermare?"
-#: ../../mod/admin.php:1037
+#: ../../Zotlabs/Module/Admin.php:1091
#, php-format
msgid "%s channel censored/uncensored"
msgid_plural "%s channels censored/uncensored"
msgstr[0] "Censura modificata per %s canale"
msgstr[1] "Censura modificata per %s canali"
-#: ../../mod/admin.php:1046
+#: ../../Zotlabs/Module/Admin.php:1100
#, php-format
msgid "%s channel code allowed/disallowed"
msgid_plural "%s channels code allowed/disallowed"
msgstr[0] "%s canale permette/non permette codice nei contenuti"
msgstr[1] "%s canali permettono/non permettono codice nei contenuti"
-#: ../../mod/admin.php:1053
+#: ../../Zotlabs/Module/Admin.php:1106
#, php-format
msgid "%s channel deleted"
msgid_plural "%s channels deleted"
msgstr[0] "%s canale è stato rimosso"
msgstr[1] "%s canali sono stati rimossi"
-#: ../../mod/admin.php:1073
+#: ../../Zotlabs/Module/Admin.php:1126
msgid "Channel not found"
msgstr "Canale non trovato"
-#: ../../mod/admin.php:1084
+#: ../../Zotlabs/Module/Admin.php:1136
#, php-format
msgid "Channel '%s' deleted"
msgstr "Il canale '%s' è stato rimosso"
-#: ../../mod/admin.php:1096
+#: ../../Zotlabs/Module/Admin.php:1148
#, php-format
msgid "Channel '%s' censored"
msgstr "Applicata una censura al canale '%s'"
-#: ../../mod/admin.php:1096
+#: ../../Zotlabs/Module/Admin.php:1148
#, php-format
msgid "Channel '%s' uncensored"
msgstr "Rimossa la censura dal canale '%s'"
-#: ../../mod/admin.php:1107
+#: ../../Zotlabs/Module/Admin.php:1159
#, php-format
msgid "Channel '%s' code allowed"
msgstr "Il canale '%s' permette codice nei contenuti"
-#: ../../mod/admin.php:1107
+#: ../../Zotlabs/Module/Admin.php:1159
#, php-format
msgid "Channel '%s' code disallowed"
msgstr "Il canale '%s' non permette codice nei contenuti"
-#: ../../mod/admin.php:1153
+#: ../../Zotlabs/Module/Admin.php:1210 ../../include/widgets.php:1384
+msgid "Channels"
+msgstr "Canali"
+
+#: ../../Zotlabs/Module/Admin.php:1214
msgid "Censor"
msgstr "Applica censura"
-#: ../../mod/admin.php:1154
+#: ../../Zotlabs/Module/Admin.php:1215
msgid "Uncensor"
msgstr "Rimuovi censura"
-#: ../../mod/admin.php:1155
+#: ../../Zotlabs/Module/Admin.php:1216
msgid "Allow Code"
msgstr "Permetti codice"
-#: ../../mod/admin.php:1156
+#: ../../Zotlabs/Module/Admin.php:1217
msgid "Disallow Code"
msgstr "Non permettere codice"
-#: ../../mod/admin.php:1158
+#: ../../Zotlabs/Module/Admin.php:1218 ../../include/conversation.php:1611
+msgid "Channel"
+msgstr "Canale"
+
+#: ../../Zotlabs/Module/Admin.php:1222
msgid "UID"
msgstr "UID"
-#: ../../mod/admin.php:1160
+#: ../../Zotlabs/Module/Admin.php:1226
msgid ""
"Selected channels will be deleted!\\n\\nEverything that was posted in these "
"channels on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "I canali selezionati saranno rimossi!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questi canali sarà irreversibilmente eliminato!\\n\\nVuoi confermare?"
-#: ../../mod/admin.php:1161
+#: ../../Zotlabs/Module/Admin.php:1227
msgid ""
"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
"channel on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Il canale {0} sarà rimosso!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questo canale sarà irreversibilmente eliminato!\\n\\nVuoi confermare?"
-#: ../../mod/admin.php:1218
+#: ../../Zotlabs/Module/Admin.php:1284
#, php-format
msgid "Plugin %s disabled."
msgstr "Plugin %s non attivo."
-#: ../../mod/admin.php:1222
+#: ../../Zotlabs/Module/Admin.php:1288
#, php-format
msgid "Plugin %s enabled."
msgstr "Plugin %s attivo."
-#: ../../mod/admin.php:1232 ../../mod/admin.php:1458
+#: ../../Zotlabs/Module/Admin.php:1298 ../../Zotlabs/Module/Admin.php:1585
msgid "Disable"
msgstr "Disattiva"
-#: ../../mod/admin.php:1235 ../../mod/admin.php:1460
+#: ../../Zotlabs/Module/Admin.php:1301 ../../Zotlabs/Module/Admin.php:1587
msgid "Enable"
msgstr "Attiva"
-#: ../../mod/admin.php:1265 ../../mod/admin.php:1487
+#: ../../Zotlabs/Module/Admin.php:1330 ../../Zotlabs/Module/Admin.php:1420
+#: ../../include/widgets.php:1387
+msgid "Plugins"
+msgstr "Plugin"
+
+#: ../../Zotlabs/Module/Admin.php:1331 ../../Zotlabs/Module/Admin.php:1614
msgid "Toggle"
msgstr "Attiva/disattiva"
-#: ../../mod/admin.php:1273 ../../mod/admin.php:1497
+#: ../../Zotlabs/Module/Admin.php:1332 ../../Zotlabs/Module/Admin.php:1615
+#: ../../Zotlabs/Lib/Apps.php:215 ../../include/widgets.php:638
+#: ../../include/nav.php:208
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: ../../Zotlabs/Module/Admin.php:1339 ../../Zotlabs/Module/Admin.php:1624
msgid "Author: "
msgstr "Autore:"
-#: ../../mod/admin.php:1274 ../../mod/admin.php:1498
+#: ../../Zotlabs/Module/Admin.php:1340 ../../Zotlabs/Module/Admin.php:1625
msgid "Maintainer: "
msgstr "Gestore:"
-#: ../../mod/admin.php:1275
+#: ../../Zotlabs/Module/Admin.php:1341
msgid "Minimum project version: "
msgstr "Minima versione hubzilla"
-#: ../../mod/admin.php:1276
+#: ../../Zotlabs/Module/Admin.php:1342
msgid "Maximum project version: "
msgstr "Massima versione hubzilla"
-#: ../../mod/admin.php:1277
+#: ../../Zotlabs/Module/Admin.php:1343
msgid "Minimum PHP version: "
msgstr "Minima versione PHP:"
-#: ../../mod/admin.php:1278
+#: ../../Zotlabs/Module/Admin.php:1344
msgid "Requires: "
msgstr "Necessita di:"
-#: ../../mod/admin.php:1279 ../../mod/admin.php:1330
+#: ../../Zotlabs/Module/Admin.php:1345 ../../Zotlabs/Module/Admin.php:1425
msgid "Disabled - version incompatibility"
msgstr "Disabilitato - incompatibilità di versione"
-#: ../../mod/admin.php:1423
+#: ../../Zotlabs/Module/Admin.php:1394
+msgid "Enter the public git repository URL of the plugin repo."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1395
+msgid "Plugin repo git URL"
+msgstr "URL git del repository del plugin"
+
+#: ../../Zotlabs/Module/Admin.php:1396
+msgid "Custom repo name"
+msgstr "Nome repository personalizzato"
+
+#: ../../Zotlabs/Module/Admin.php:1396
+msgid "(optional)"
+msgstr "(facoltativo)"
+
+#: ../../Zotlabs/Module/Admin.php:1397
+msgid "Download Plugin Repo"
+msgstr "Scarica il repository del plugin"
+
+#: ../../Zotlabs/Module/Admin.php:1404
+msgid "Install new repo"
+msgstr "Installa un nuovo repository"
+
+#: ../../Zotlabs/Module/Admin.php:1405 ../../Zotlabs/Lib/Apps.php:330
+msgid "Install"
+msgstr "Installa"
+
+#: ../../Zotlabs/Module/Admin.php:1427
+msgid "Manage Repos"
+msgstr "Gestisci i repsitory"
+
+#: ../../Zotlabs/Module/Admin.php:1428
+msgid "Installed Plugin Repositories"
+msgstr "Repository per i plugin installati"
+
+#: ../../Zotlabs/Module/Admin.php:1429
+msgid "Install a New Plugin Repository"
+msgstr "Installa un nuovo repository per i plugin"
+
+#: ../../Zotlabs/Module/Admin.php:1435 ../../Zotlabs/Module/Settings.php:77
+#: ../../Zotlabs/Module/Settings.php:616 ../../Zotlabs/Lib/Apps.php:330
+msgid "Update"
+msgstr "Aggiorna"
+
+#: ../../Zotlabs/Module/Admin.php:1436
+msgid "Switch branch"
+msgstr "Cambia branch"
+
+#: ../../Zotlabs/Module/Admin.php:1550
msgid "No themes found."
msgstr "Nessun tema trovato."
-#: ../../mod/admin.php:1479
+#: ../../Zotlabs/Module/Admin.php:1606
msgid "Screenshot"
msgstr "Istantanea dello schermo"
-#: ../../mod/admin.php:1525
+#: ../../Zotlabs/Module/Admin.php:1613 ../../Zotlabs/Module/Admin.php:1647
+#: ../../include/widgets.php:1388
+msgid "Themes"
+msgstr "Temi"
+
+#: ../../Zotlabs/Module/Admin.php:1652
msgid "[Experimental]"
msgstr "[Sperimentale]"
-#: ../../mod/admin.php:1526
+#: ../../Zotlabs/Module/Admin.php:1653
msgid "[Unsupported]"
msgstr "[Non supportato]"
-#: ../../mod/admin.php:1550
+#: ../../Zotlabs/Module/Admin.php:1677
msgid "Log settings updated."
msgstr "Impostazioni di log aggiornate."
-#: ../../mod/admin.php:1607
+#: ../../Zotlabs/Module/Admin.php:1732 ../../include/widgets.php:1409
+#: ../../include/widgets.php:1419
+msgid "Logs"
+msgstr "Log"
+
+#: ../../Zotlabs/Module/Admin.php:1734
msgid "Clear"
msgstr "Pulisci"
-#: ../../mod/admin.php:1613
+#: ../../Zotlabs/Module/Admin.php:1740
msgid "Debugging"
msgstr "Debugging"
-#: ../../mod/admin.php:1614
+#: ../../Zotlabs/Module/Admin.php:1741
msgid "Log file"
msgstr "File di log"
-#: ../../mod/admin.php:1614
+#: ../../Zotlabs/Module/Admin.php:1741
msgid ""
-"Must be writable by web server. Relative to your Red top-level directory."
-msgstr "Deve essere scrivibile dal web server. La posizione è relativa alla cartella dove è installato Hubzilla."
+"Must be writable by web server. Relative to your top-level webserver "
+"directory."
+msgstr ""
-#: ../../mod/admin.php:1615
+#: ../../Zotlabs/Module/Admin.php:1742
msgid "Log level"
msgstr "Livello di log"
-#: ../../mod/admin.php:1682
+#: ../../Zotlabs/Module/Admin.php:2028
msgid "New Profile Field"
msgstr "Nuovo campo del profilo"
-#: ../../mod/admin.php:1683 ../../mod/admin.php:1703
+#: ../../Zotlabs/Module/Admin.php:2029 ../../Zotlabs/Module/Admin.php:2049
msgid "Field nickname"
msgstr "Nome breve del campo"
-#: ../../mod/admin.php:1683 ../../mod/admin.php:1703
+#: ../../Zotlabs/Module/Admin.php:2029 ../../Zotlabs/Module/Admin.php:2049
msgid "System name of field"
msgstr "Nome di sistema del campo"
-#: ../../mod/admin.php:1684 ../../mod/admin.php:1704
+#: ../../Zotlabs/Module/Admin.php:2030 ../../Zotlabs/Module/Admin.php:2050
msgid "Input type"
msgstr "Tipo di dati"
-#: ../../mod/admin.php:1685 ../../mod/admin.php:1705
+#: ../../Zotlabs/Module/Admin.php:2031 ../../Zotlabs/Module/Admin.php:2051
msgid "Field Name"
msgstr "Nome del campo"
-#: ../../mod/admin.php:1685 ../../mod/admin.php:1705
+#: ../../Zotlabs/Module/Admin.php:2031 ../../Zotlabs/Module/Admin.php:2051
msgid "Label on profile pages"
msgstr "Etichetta da mostrare sulla pagina del profilo"
-#: ../../mod/admin.php:1686 ../../mod/admin.php:1706
+#: ../../Zotlabs/Module/Admin.php:2032 ../../Zotlabs/Module/Admin.php:2052
msgid "Help text"
msgstr "Testo di aiuto"
-#: ../../mod/admin.php:1686 ../../mod/admin.php:1706
+#: ../../Zotlabs/Module/Admin.php:2032 ../../Zotlabs/Module/Admin.php:2052
msgid "Additional info (optional)"
msgstr "Informazioni aggiuntive (facoltative)"
-#: ../../mod/admin.php:1696
+#: ../../Zotlabs/Module/Admin.php:2042
msgid "Field definition not found"
msgstr "Impossibile trovare la definizione del campo"
-#: ../../mod/admin.php:1702
+#: ../../Zotlabs/Module/Admin.php:2048
msgid "Edit Profile Field"
msgstr "Modifica campo del profilo"
-#: ../../mod/admin.php:1761
+#: ../../Zotlabs/Module/Admin.php:2106 ../../include/widgets.php:1390
+msgid "Profile Fields"
+msgstr "Campi del profilo"
+
+#: ../../Zotlabs/Module/Admin.php:2107
msgid "Basic Profile Fields"
msgstr "Campi base del profilo"
-#: ../../mod/admin.php:1762
+#: ../../Zotlabs/Module/Admin.php:2108
msgid "Advanced Profile Fields"
msgstr "Campi avanzati del profilo"
-#: ../../mod/admin.php:1762
+#: ../../Zotlabs/Module/Admin.php:2108
msgid "(In addition to basic fields)"
msgstr "(In aggiunta ai campi di base)"
-#: ../../mod/admin.php:1764
+#: ../../Zotlabs/Module/Admin.php:2110
msgid "All available fields"
msgstr "Tutti i campi disponibili"
-#: ../../mod/admin.php:1765
+#: ../../Zotlabs/Module/Admin.php:2111
msgid "Custom Fields"
msgstr "Campi personalizzati"
-#: ../../mod/admin.php:1769
+#: ../../Zotlabs/Module/Admin.php:2115
msgid "Create Custom Field"
msgstr "Aggiungi campo personalizzato"
-#: ../../mod/poke.php:165
-msgid "Poke somebody"
-msgstr "Manda un poke"
-
-#: ../../mod/poke.php:168
-msgid "Poke/Prod"
-msgstr "Poke/Prod"
-
-#: ../../mod/poke.php:169
-msgid "Poke, prod or do other things to somebody"
-msgstr "Manda un poke o altro a qualcuno"
-
-#: ../../mod/poke.php:176
-msgid "Recipient"
-msgstr "Destinatario"
-
-#: ../../mod/poke.php:177
-msgid "Choose what you wish to do to recipient"
-msgstr "Scegli cosa vuoi inviare al destinatario"
-
-#: ../../mod/poke.php:180 ../../mod/poke.php:181
-msgid "Make this post private"
-msgstr "Rendi privato questo post"
-
-#: ../../mod/probe.php:24 ../../mod/probe.php:30
-#, php-format
-msgid "Fetching URL returns error: %1$s"
-msgstr "La chiamata all'URL restituisce questo errore: %1$s"
-
-#: ../../mod/profile_photo.php:112 ../../mod/cover_photo.php:54
-msgid "Image uploaded but image cropping failed."
-msgstr "L'immagine è stata caricata, ma il non è stato possibile ritagliarla."
-
-#: ../../mod/profile_photo.php:166 ../../mod/cover_photo.php:150
-msgid "Image resize failed."
-msgstr "Il ridimensionamento dell'immagine è fallito."
-
-#: ../../mod/profile_photo.php:212
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Forza l'aggiornamento della pagina o cancella la cache del browser se la nuova foto non viene visualizzata immediatamente."
-
-#: ../../mod/profile_photo.php:250 ../../mod/cover_photo.php:188
-msgid "Image upload failed."
-msgstr "Il caricamento dell'immagine è fallito."
-
-#: ../../mod/profile_photo.php:269 ../../mod/cover_photo.php:206
-msgid "Unable to process image."
-msgstr "Impossibile elaborare l'immagine."
-
-#: ../../mod/profile_photo.php:316 ../../mod/profile_photo.php:357
-#: ../../mod/cover_photo.php:299 ../../mod/cover_photo.php:314
-msgid "Photo not available."
-msgstr "Foto non disponibile."
-
-#: ../../mod/profile_photo.php:398 ../../mod/cover_photo.php:350
-msgid "Upload File:"
-msgstr "Carica un file:"
-
-#: ../../mod/profile_photo.php:399 ../../mod/cover_photo.php:351
-msgid "Select a profile:"
-msgstr "Seleziona un profilo:"
-
-#: ../../mod/profile_photo.php:400
-msgid "Upload Profile Photo"
-msgstr "Carica la foto del profilo"
-
-#: ../../mod/profile_photo.php:407 ../../mod/settings.php:992
-#: ../../mod/cover_photo.php:357
-msgid "or"
-msgstr "o"
-
-#: ../../mod/profile_photo.php:407 ../../mod/cover_photo.php:357
-msgid "skip this step"
-msgstr "salta questo passaggio"
-
-#: ../../mod/profile_photo.php:407 ../../mod/cover_photo.php:357
-msgid "select a photo from your photo albums"
-msgstr "seleziona una foto dai tuoi album"
-
-#: ../../mod/profile_photo.php:423 ../../mod/cover_photo.php:373
-msgid "Crop Image"
-msgstr "Ritaglia immagine"
-
-#: ../../mod/profile_photo.php:424 ../../mod/cover_photo.php:374
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Ritaglia l'immagine per migliorarne la visualizzazione."
-
-#: ../../mod/profile_photo.php:426 ../../mod/cover_photo.php:376
-msgid "Done Editing"
-msgstr "Modifica terminata"
-
-#: ../../mod/profiles.php:19 ../../mod/profiles.php:184
-#: ../../mod/profiles.php:241 ../../mod/profiles.php:620
-msgid "Profile not found."
-msgstr "Profilo non trovato."
-
-#: ../../mod/profiles.php:39
-msgid "Profile deleted."
-msgstr "Profilo eliminato."
-
-#: ../../mod/profiles.php:63 ../../mod/profiles.php:99
-msgid "Profile-"
-msgstr "Profilo-"
-
-#: ../../mod/profiles.php:84 ../../mod/profiles.php:127
-msgid "New profile created."
-msgstr "Il nuovo profilo è stato creato."
-
-#: ../../mod/profiles.php:105
-msgid "Profile unavailable to clone."
-msgstr "Impossibile duplicare il profilo."
-
-#: ../../mod/profiles.php:146
-msgid "Profile unavailable to export."
-msgstr "Il profilo non è disponibile per l'export."
-
-#: ../../mod/profiles.php:251
-msgid "Profile Name is required."
-msgstr "Il nome del profilo è obbligatorio."
-
-#: ../../mod/profiles.php:422
-msgid "Marital Status"
-msgstr "Stato sentimentale"
-
-#: ../../mod/profiles.php:426
-msgid "Romantic Partner"
-msgstr "Partner affettivo"
-
-#: ../../mod/profiles.php:430 ../../mod/profiles.php:735
-msgid "Likes"
-msgstr "Mi piace"
-
-#: ../../mod/profiles.php:434 ../../mod/profiles.php:736
-msgid "Dislikes"
-msgstr "Non mi piace"
-
-#: ../../mod/profiles.php:438 ../../mod/profiles.php:743
-msgid "Work/Employment"
-msgstr "Lavoro/impiego"
-
-#: ../../mod/profiles.php:441
-msgid "Religion"
-msgstr "Religione"
-
-#: ../../mod/profiles.php:445
-msgid "Political Views"
-msgstr "Orientamento politico"
-
-#: ../../mod/profiles.php:453
-msgid "Sexual Preference"
-msgstr "Preferenze sessuali"
-
-#: ../../mod/profiles.php:457
-msgid "Homepage"
-msgstr "Home page"
-
-#: ../../mod/profiles.php:461
-msgid "Interests"
-msgstr "Interessi"
-
-#: ../../mod/profiles.php:555
-msgid "Profile updated."
-msgstr "Profilo aggiornato."
-
-#: ../../mod/profiles.php:644
-msgid "Hide your connections list from viewers of this profile"
-msgstr "Nascondi la tua lista di contatti ai visitatori di questo profilo"
-
-#: ../../mod/profiles.php:686
-msgid "Edit Profile Details"
-msgstr "Modifica i dettagli del profilo"
-
-#: ../../mod/profiles.php:688
-msgid "View this profile"
-msgstr "Guarda questo profilo"
-
-#: ../../mod/profiles.php:690
-msgid "Change cover photo"
-msgstr "Cambia la copertina del canale"
-
-#: ../../mod/profiles.php:692
-msgid "Create a new profile using these settings"
-msgstr "Crea un nuovo profilo usando queste impostazioni"
-
-#: ../../mod/profiles.php:693
-msgid "Clone this profile"
-msgstr "Clona questo profilo"
-
-#: ../../mod/profiles.php:694
-msgid "Delete this profile"
-msgstr "Elimina questo profilo"
-
-#: ../../mod/profiles.php:695
-msgid "Add profile things"
-msgstr "Aggiungi oggetti al profilo"
-
-#: ../../mod/profiles.php:698
-msgid "Relation"
-msgstr "Relazione"
-
-#: ../../mod/profiles.php:701
-msgid "Import profile from file"
-msgstr "Importa il profilo da un file"
-
-#: ../../mod/profiles.php:702
-msgid "Export profile to file"
-msgstr "Esporta il profilo in un file"
-
-#: ../../mod/profiles.php:703
-msgid "Your gender"
-msgstr "Sesso"
-
-#: ../../mod/profiles.php:704
-msgid "Marital status"
-msgstr "Stato civile"
-
-#: ../../mod/profiles.php:705
-msgid "Sexual preference"
-msgstr "Preferenze sessuali"
-
-#: ../../mod/profiles.php:708
-msgid "Profile name"
-msgstr "Nome del profilo"
-
-#: ../../mod/profiles.php:710
-msgid "This is your default profile."
-msgstr "Questo è il tuo profilo predefinito."
-
-#: ../../mod/profiles.php:712
-msgid "Your full name"
-msgstr "Il tuo nome completo"
-
-#: ../../mod/profiles.php:713
-msgid "Title/Description"
-msgstr "Titolo/descrizione"
-
-#: ../../mod/profiles.php:716
-msgid "Street address"
-msgstr "Indirizzo (via/piazza)"
-
-#: ../../mod/profiles.php:717
-msgid "Locality/City"
-msgstr "Località"
-
-#: ../../mod/profiles.php:718
-msgid "Region/State"
-msgstr "Regione/stato"
-
-#: ../../mod/profiles.php:719
-msgid "Postal/Zip code"
-msgstr "CAP"
-
-#: ../../mod/profiles.php:720
-msgid "Country"
-msgstr "Nazione"
-
-#: ../../mod/profiles.php:725
-msgid "Who (if applicable)"
-msgstr "Con chi (se possibile)"
-
-#: ../../mod/profiles.php:725
-msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
-msgstr "Per esempio: cathy123, Cathy Williams, cathy@example.com"
-
-#: ../../mod/profiles.php:726
-msgid "Since (date)"
-msgstr "dal (data)"
-
-#: ../../mod/profiles.php:729
-msgid "Tell us about yourself"
-msgstr "Raccontaci di te..."
-
-#: ../../mod/profiles.php:731
-msgid "Hometown"
-msgstr "Città dove vivo"
-
-#: ../../mod/profiles.php:732
-msgid "Political views"
-msgstr "Orientamento politico"
-
-#: ../../mod/profiles.php:733
-msgid "Religious views"
-msgstr "Orientamento religioso"
-
-#: ../../mod/profiles.php:734
-msgid "Keywords used in directory listings"
-msgstr "Parole chiavi mostrate nell'elenco dei canali"
-
-#: ../../mod/profiles.php:734
-msgid "Example: fishing photography software"
-msgstr "Per esempio: pesca fotografia programmazione"
-
-#: ../../mod/profiles.php:737
-msgid "Musical interests"
-msgstr "Interessi musicali"
-
-#: ../../mod/profiles.php:738
-msgid "Books, literature"
-msgstr "Libri, letteratura"
-
-#: ../../mod/profiles.php:739
-msgid "Television"
-msgstr "Televisione"
-
-#: ../../mod/profiles.php:740
-msgid "Film/Dance/Culture/Entertainment"
-msgstr "Film, danza, cultura, intrattenimento"
-
-#: ../../mod/profiles.php:741
-msgid "Hobbies/Interests"
-msgstr "Hobby/interessi"
-
-#: ../../mod/profiles.php:742
-msgid "Love/Romance"
-msgstr "Amore"
-
-#: ../../mod/profiles.php:744
-msgid "School/Education"
-msgstr "Scuola/educazione"
-
-#: ../../mod/profiles.php:745
-msgid "Contact information and social networks"
-msgstr "Contatti e social network"
-
-#: ../../mod/profiles.php:746
-msgid "My other channels"
-msgstr "I miei altri canali"
-
-#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
-msgid "Invalid profile identifier."
-msgstr "Indentificativo del profilo non valido."
-
-#: ../../mod/profperm.php:110
-msgid "Profile Visibility Editor"
-msgstr "Modifica la visibilità del profilo"
-
-#: ../../mod/profperm.php:114
-msgid "Click on a contact to add or remove."
-msgstr "Clicca su un contatto per aggiungerlo o rimuoverlo."
-
-#: ../../mod/profperm.php:123
-msgid "Visible To"
-msgstr "Visibile a"
-
-#: ../../mod/pubsites.php:21
-msgid ""
-"The listed hubs allow public registration for the $Projectname network. All "
-"hubs in the network are interlinked so membership on any of them conveys "
-"membership in the network as a whole. Some hubs may require subscription or "
-"provide tiered service plans. The hub itself <strong>may</strong> provide "
-"additional details."
-msgstr "I siti elencati permettono la registrazione libera sulla rete $Projectname. Tutti questi hub sono interconnessi, quindi essere iscritti su uno equivale a una registrazione su tutta la rete. Alcuni siti potrebbero richiedere un abbonamento o dei servizi a pagamento. Per maggiori dettagli visita gli indirizzi nell'elenco."
+#: ../../Zotlabs/Module/Appman.php:37 ../../Zotlabs/Module/Appman.php:53
+msgid "App installed."
+msgstr "App installata"
-#: ../../mod/pubsites.php:27
-msgid "Hub URL"
-msgstr "URL del hub"
+#: ../../Zotlabs/Module/Appman.php:46
+msgid "Malformed app."
+msgstr "L'app contiene errori"
-#: ../../mod/pubsites.php:27
-msgid "Access Type"
-msgstr "Tipo di accesso"
+#: ../../Zotlabs/Module/Appman.php:104
+msgid "Embed code"
+msgstr "Inserisci il codice"
-#: ../../mod/pubsites.php:27
-msgid "Registration Policy"
-msgstr "Politica di registrazione"
+#: ../../Zotlabs/Module/Appman.php:110 ../../include/widgets.php:107
+msgid "Edit App"
+msgstr "Modifica app"
-#: ../../mod/pubsites.php:33
-msgid "Rate"
-msgstr "Valuta"
+#: ../../Zotlabs/Module/Appman.php:110
+msgid "Create App"
+msgstr "Crea una app"
-#: ../../mod/rate.php:158
-msgid "Website:"
-msgstr "Sito web:"
+#: ../../Zotlabs/Module/Appman.php:115
+msgid "Name of app"
+msgstr "Nome app"
-#: ../../mod/rate.php:161
-#, php-format
-msgid "Remote Channel [%s] (not yet known on this site)"
-msgstr "Canale remoto [%s] (non ancora conosciuto da questo sito)"
+#: ../../Zotlabs/Module/Appman.php:116
+msgid "Location (URL) of app"
+msgstr "Indirizzo (URL) della app"
-#: ../../mod/rate.php:162
-msgid "Rating (this information is public)"
-msgstr "Valutazione (visibile a tutti)"
+#: ../../Zotlabs/Module/Appman.php:118
+msgid "Photo icon URL"
+msgstr "URL icona"
-#: ../../mod/rate.php:163
-msgid "Optionally explain your rating (this information is public)"
-msgstr "Commento alla valutazione (facoltativo, visibile a tutti)"
+#: ../../Zotlabs/Module/Appman.php:118
+msgid "80 x 80 pixels - optional"
+msgstr "80 x 80 pixel - facoltativa"
-#: ../../mod/ratings.php:69
-msgid "No ratings"
-msgstr "Nessuna valutazione"
+#: ../../Zotlabs/Module/Appman.php:119
+msgid "Categories (optional, comma separated list)"
+msgstr "Categorie (facoltative, lista separata da virgole)"
-#: ../../mod/ratings.php:100
-msgid "Rating: "
-msgstr "Valutazione:"
+#: ../../Zotlabs/Module/Appman.php:120
+msgid "Version ID"
+msgstr "ID versione"
-#: ../../mod/ratings.php:101
-msgid "Website: "
-msgstr "Sito web:"
+#: ../../Zotlabs/Module/Appman.php:121
+msgid "Price of app"
+msgstr "Prezzo app"
-#: ../../mod/ratings.php:103
-msgid "Description: "
-msgstr "Descrizione:"
+#: ../../Zotlabs/Module/Appman.php:122
+msgid "Location (URL) to purchase app"
+msgstr "Indirizzo (URL) per acquistare la app"
-#: ../../mod/rbmark.php:90
+#: ../../Zotlabs/Module/Rbmark.php:94
msgid "Select a bookmark folder"
msgstr "Scegli una cartella di segnalibri"
-#: ../../mod/rbmark.php:95
+#: ../../Zotlabs/Module/Rbmark.php:99
msgid "Save Bookmark"
msgstr "Salva segnalibro"
-#: ../../mod/rbmark.php:96
+#: ../../Zotlabs/Module/Rbmark.php:100
msgid "URL of bookmark"
msgstr "URL del segnalibro"
-#: ../../mod/rbmark.php:101
+#: ../../Zotlabs/Module/Rbmark.php:105
msgid "Or enter new bookmark folder name"
msgstr "O inserisci il nome di una nuova cartella di segnalibri"
-#: ../../mod/register.php:45
+#: ../../Zotlabs/Module/Register.php:49
msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
msgstr "È stato superato il numero massimo giornaliero di registrazioni a questo sito. Riprova domani!"
-#: ../../mod/register.php:51
+#: ../../Zotlabs/Module/Register.php:55
msgid ""
"Please indicate acceptance of the Terms of Service. Registration failed."
msgstr "Impossibile proseguire. Devi prima accettare le Condizioni d'Uso del servizio."
-#: ../../mod/register.php:85
+#: ../../Zotlabs/Module/Register.php:89
msgid "Passwords do not match."
msgstr "Le password non corrispondono."
-#: ../../mod/register.php:127
+#: ../../Zotlabs/Module/Register.php:131
msgid ""
"Registration successful. Please check your email for validation "
"instructions."
msgstr "La registrazione è terminata correttamente. Per continuare controlla l'email che ti è stata inviata."
-#: ../../mod/register.php:133
+#: ../../Zotlabs/Module/Register.php:137
msgid "Your registration is pending approval by the site owner."
msgstr "La tua richiesta è in attesa di approvazione da parte dell'amministratore di questo hub."
-#: ../../mod/register.php:136
+#: ../../Zotlabs/Module/Register.php:140
msgid "Your registration can not be processed."
msgstr "La tua registrazione non puo' essere processata."
-#: ../../mod/register.php:180
+#: ../../Zotlabs/Module/Register.php:184
msgid "Registration on this hub is disabled."
msgstr "Su questo hub la registrazione non è permessa."
-#: ../../mod/register.php:189
+#: ../../Zotlabs/Module/Register.php:193
msgid "Registration on this hub is by approval only."
msgstr "La registrazione su questo hub è soggetta ad approvazione."
-#: ../../mod/register.php:190
+#: ../../Zotlabs/Module/Register.php:194
msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>"
msgstr "<a href=\"pubsites\">Registrati su un altro server hubzilla.</a>"
-#: ../../mod/register.php:200
+#: ../../Zotlabs/Module/Register.php:204
msgid ""
"This site has exceeded the number of allowed daily account registrations. "
"Please try again tomorrow."
msgstr "Questo hub ha superato il numero di registrazioni giornaliere consentite. Prova di nuovo domani."
-#: ../../mod/register.php:211
+#: ../../Zotlabs/Module/Register.php:215
msgid "Terms of Service"
msgstr "Condizioni d'Uso"
-#: ../../mod/register.php:217
+#: ../../Zotlabs/Module/Register.php:221
#, php-format
msgid "I accept the %s for this website"
msgstr "Accetto le %s di questo sito"
-#: ../../mod/register.php:219
+#: ../../Zotlabs/Module/Register.php:223
#, php-format
msgid "I am over 13 years of age and accept the %s for this website"
msgstr "Ho più di 13 anni e accetto le %s di questo sito"
-#: ../../mod/register.php:223
+#: ../../Zotlabs/Module/Register.php:227
msgid "Your email address"
msgstr "Il tuo indirizzo email"
-#: ../../mod/register.php:224
+#: ../../Zotlabs/Module/Register.php:228
msgid "Choose a password"
msgstr "Scegli una password"
-#: ../../mod/register.php:225
+#: ../../Zotlabs/Module/Register.php:229
msgid "Please re-enter your password"
msgstr "Ripeti la password per verifica"
-#: ../../mod/register.php:226
+#: ../../Zotlabs/Module/Register.php:230
msgid "Please enter your invitation code"
msgstr "Inserisci il codice dell'invito"
-#: ../../mod/register.php:232
+#: ../../Zotlabs/Module/Register.php:236
msgid "no"
msgstr "no"
-#: ../../mod/register.php:232
+#: ../../Zotlabs/Module/Register.php:236
msgid "yes"
msgstr "sì"
-#: ../../mod/register.php:246
+#: ../../Zotlabs/Module/Register.php:250
msgid "Membership on this site is by invitation only."
msgstr "Per registrarsi su questo hub è necessario un invito."
-#: ../../mod/register.php:258
+#: ../../Zotlabs/Module/Register.php:262 ../../include/nav.php:147
+#: ../../boot.php:1685
+msgid "Register"
+msgstr "Registrati"
+
+#: ../../Zotlabs/Module/Register.php:262
msgid "Proceed to create your first channel"
msgstr "Continua e crea il tuo primo canale"
-#: ../../mod/regmod.php:11
+#: ../../Zotlabs/Module/Regmod.php:15
msgid "Please login."
msgstr "Effettua l'accesso."
-#: ../../mod/removeaccount.php:30
+#: ../../Zotlabs/Module/Removeaccount.php:34
msgid ""
"Account removals are not allowed within 48 hours of changing the account "
"password."
msgstr "Non è possibile eliminare il tuo account prima di 48 ore dall'ultimo cambio password."
-#: ../../mod/removeaccount.php:57
+#: ../../Zotlabs/Module/Removeaccount.php:56
msgid "Remove This Account"
msgstr "Elimina questo account"
-#: ../../mod/removeaccount.php:58 ../../mod/removeme.php:58
+#: ../../Zotlabs/Module/Removeaccount.php:57
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "WARNING: "
msgstr "ATTENZIONE:"
-#: ../../mod/removeaccount.php:58
+#: ../../Zotlabs/Module/Removeaccount.php:57
msgid ""
"This account and all its channels will be completely removed from the "
"network. "
msgstr "Questo account e tutti i suoi canali saranno completamente eliminati dalla rete."
-#: ../../mod/removeaccount.php:58 ../../mod/removeme.php:58
+#: ../../Zotlabs/Module/Removeaccount.php:57
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "This action is permanent and can not be undone!"
msgstr "Questo comando è definitivo e non può essere annullato!"
-#: ../../mod/removeaccount.php:59 ../../mod/removeme.php:59
+#: ../../Zotlabs/Module/Removeaccount.php:58
+#: ../../Zotlabs/Module/Removeme.php:60
msgid "Please enter your password for verification:"
msgstr "Inserisci la tua password per verifica:"
-#: ../../mod/removeaccount.php:60
+#: ../../Zotlabs/Module/Removeaccount.php:59
msgid ""
"Remove this account, all its channels and all its channel clones from the "
"network"
msgstr "Elimina dalla rete questo account, tutti i suoi canali e ANCHE tutti gli eventuali canali clonati."
-#: ../../mod/removeaccount.php:60
+#: ../../Zotlabs/Module/Removeaccount.php:59
msgid ""
"By default only the instances of the channels located on this hub will be "
"removed from the network"
msgstr "A meno che tu non lo richieda espressamente, solo i canali presenti su questo hub saranno rimossi dalla rete."
-#: ../../mod/removeaccount.php:61 ../../mod/settings.php:712
+#: ../../Zotlabs/Module/Removeaccount.php:60
+#: ../../Zotlabs/Module/Settings.php:705
msgid "Remove Account"
msgstr "Elimina l'account"
-#: ../../mod/removeme.php:29
+#: ../../Zotlabs/Module/Removeme.php:33
msgid ""
"Channel removals are not allowed within 48 hours of changing the account "
"password."
msgstr "Non è possibile eliminare un canale prima di 48 ore dall'ultimo cambio password."
-#: ../../mod/removeme.php:57
+#: ../../Zotlabs/Module/Removeme.php:58
msgid "Remove This Channel"
msgstr "Elimina questo canale"
-#: ../../mod/removeme.php:58
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "This channel will be completely removed from the network. "
msgstr "Questo canale sarà completamente eliminato dalla rete."
-#: ../../mod/removeme.php:60
+#: ../../Zotlabs/Module/Removeme.php:61
msgid "Remove this channel and all its clones from the network"
msgstr "Elimina questo canale e tutti i suoi cloni dalla rete"
-#: ../../mod/removeme.php:60
+#: ../../Zotlabs/Module/Removeme.php:61
msgid ""
"By default only the instance of the channel located on this hub will be "
"removed from the network"
msgstr "L'impostazione predefinita è che sia eliminata solo l'istanza del canale presente su questo hub, non gli eventuali cloni"
-#: ../../mod/removeme.php:61 ../../mod/settings.php:1131
+#: ../../Zotlabs/Module/Removeme.php:62 ../../Zotlabs/Module/Settings.php:1124
msgid "Remove Channel"
msgstr "Elimina questo canale"
-#: ../../mod/rmagic.php:40
+#: ../../Zotlabs/Module/Rmagic.php:44
msgid ""
"We encountered a problem while logging in with the OpenID you provided. "
"Please check the correct spelling of the ID."
msgstr "Non è possibile effettuare login con l'OpenID che hai fornito. Per favore controlla che sia scritto correttamente."
-#: ../../mod/rmagic.php:40
+#: ../../Zotlabs/Module/Rmagic.php:44
msgid "The error message was:"
msgstr "Messaggio di errore ricevuto:"
-#: ../../mod/rmagic.php:44
+#: ../../Zotlabs/Module/Rmagic.php:48
msgid "Authentication failed."
msgstr "Autenticazione fallita."
-#: ../../mod/rmagic.php:84
+#: ../../Zotlabs/Module/Rmagic.php:88
msgid "Remote Authentication"
msgstr "Accedi tramite il tuo hub"
-#: ../../mod/rmagic.php:85
+#: ../../Zotlabs/Module/Rmagic.php:89
msgid "Enter your channel address (e.g. channel@example.com)"
msgstr "Inserisci l'indirizzo del tuo canale (ad esempio lucia@esempio.com)"
-#: ../../mod/rmagic.php:86
+#: ../../Zotlabs/Module/Rmagic.php:90
msgid "Authenticate"
msgstr "Accedi"
-#: ../../mod/search.php:212
+#: ../../Zotlabs/Module/Search.php:216
#, php-format
msgid "Items tagged with: %s"
msgstr "Elementi taggati con: %s"
-#: ../../mod/search.php:214
+#: ../../Zotlabs/Module/Search.php:218
#, php-format
msgid "Search results for: %s"
msgstr "Risultati ricerca: %s"
-#: ../../mod/service_limits.php:19
+#: ../../Zotlabs/Module/Service_limits.php:23
msgid "No service class restrictions found."
msgstr "Non esistono restrizioni su questa classe di account."
-#: ../../mod/settings.php:76
+#: ../../Zotlabs/Module/Settings.php:69
msgid "Name is required"
msgstr "Il nome è obbligatorio"
-#: ../../mod/settings.php:80
+#: ../../Zotlabs/Module/Settings.php:73
msgid "Key and Secret are required"
msgstr "Key e Secret sono richiesti"
-#: ../../mod/settings.php:232
+#: ../../Zotlabs/Module/Settings.php:225
msgid "Not valid email."
msgstr "Email non valida."
-#: ../../mod/settings.php:235
+#: ../../Zotlabs/Module/Settings.php:228
msgid "Protected email address. Cannot change to that email."
msgstr "È un indirizzo email riservato. Non puoi sceglierlo."
-#: ../../mod/settings.php:244
+#: ../../Zotlabs/Module/Settings.php:237
msgid "System failure storing new email. Please try again."
msgstr "Errore di sistema. Non è stato possibile memorizzare il tuo messaggio, riprova per favore."
-#: ../../mod/settings.php:261
+#: ../../Zotlabs/Module/Settings.php:254
msgid "Password verification failed."
msgstr "Verifica della password fallita."
-#: ../../mod/settings.php:268
+#: ../../Zotlabs/Module/Settings.php:261
msgid "Passwords do not match. Password unchanged."
msgstr "Le password non corrispondono. Password non cambiata."
-#: ../../mod/settings.php:272
+#: ../../Zotlabs/Module/Settings.php:265
msgid "Empty passwords are not allowed. Password unchanged."
msgstr "Le password non possono essere vuote. Password non cambiata."
-#: ../../mod/settings.php:286
+#: ../../Zotlabs/Module/Settings.php:279
msgid "Password changed."
msgstr "Password cambiata."
-#: ../../mod/settings.php:288
+#: ../../Zotlabs/Module/Settings.php:281
msgid "Password update failed. Please try again."
msgstr "Modifica password fallita. Prova ancora."
-#: ../../mod/settings.php:532
+#: ../../Zotlabs/Module/Settings.php:525
msgid "Settings updated."
msgstr "Impostazioni aggiornate."
-#: ../../mod/settings.php:596 ../../mod/settings.php:622
-#: ../../mod/settings.php:658
+#: ../../Zotlabs/Module/Settings.php:589 ../../Zotlabs/Module/Settings.php:615
+#: ../../Zotlabs/Module/Settings.php:651
msgid "Add application"
msgstr "Aggiungi una app"
-#: ../../mod/settings.php:599
+#: ../../Zotlabs/Module/Settings.php:592
msgid "Name of application"
msgstr "Nome dell'applicazione"
-#: ../../mod/settings.php:600 ../../mod/settings.php:626
+#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:619
msgid "Consumer Key"
msgstr "Consumer Key"
-#: ../../mod/settings.php:600 ../../mod/settings.php:601
+#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:594
msgid "Automatically generated - change if desired. Max length 20"
msgstr "Generato automaticamente - è possibile cambiarlo. Lunghezza massima 20"
-#: ../../mod/settings.php:601 ../../mod/settings.php:627
+#: ../../Zotlabs/Module/Settings.php:594 ../../Zotlabs/Module/Settings.php:620
msgid "Consumer Secret"
msgstr "Consumer Secret"
-#: ../../mod/settings.php:602 ../../mod/settings.php:628
+#: ../../Zotlabs/Module/Settings.php:595 ../../Zotlabs/Module/Settings.php:621
msgid "Redirect"
msgstr "Redirect"
-#: ../../mod/settings.php:602
+#: ../../Zotlabs/Module/Settings.php:595
msgid ""
"Redirect URI - leave blank unless your application specifically requires "
"this"
msgstr "URI di riderezione - lasciare vuoto se non richiesto specificamente dall'applicazione"
-#: ../../mod/settings.php:603 ../../mod/settings.php:629
+#: ../../Zotlabs/Module/Settings.php:596 ../../Zotlabs/Module/Settings.php:622
msgid "Icon url"
msgstr "Url icona"
-#: ../../mod/settings.php:603
+#: ../../Zotlabs/Module/Settings.php:596 ../../Zotlabs/Module/Sources.php:112
+#: ../../Zotlabs/Module/Sources.php:147
msgid "Optional"
msgstr "Facoltativo"
-#: ../../mod/settings.php:614
+#: ../../Zotlabs/Module/Settings.php:607
msgid "Application not found."
msgstr "Applicazione non trovata."
-#: ../../mod/settings.php:657
+#: ../../Zotlabs/Module/Settings.php:650
msgid "Connected Apps"
msgstr "App connesse"
-#: ../../mod/settings.php:661
+#: ../../Zotlabs/Module/Settings.php:654
msgid "Client key starts with"
msgstr "La client key inizia con"
-#: ../../mod/settings.php:662
+#: ../../Zotlabs/Module/Settings.php:655
msgid "No name"
msgstr "Nessun nome"
-#: ../../mod/settings.php:663
+#: ../../Zotlabs/Module/Settings.php:656
msgid "Remove authorization"
msgstr "Revoca l'autorizzazione"
-#: ../../mod/settings.php:676
+#: ../../Zotlabs/Module/Settings.php:669
msgid "No feature settings configured"
msgstr "Non hai componenti aggiuntivi da personalizzare"
-#: ../../mod/settings.php:683
+#: ../../Zotlabs/Module/Settings.php:676
msgid "Feature/Addon Settings"
msgstr "Impostazioni dei componenti aggiuntivi"
-#: ../../mod/settings.php:706
+#: ../../Zotlabs/Module/Settings.php:699
msgid "Account Settings"
msgstr "Il tuo account"
-#: ../../mod/settings.php:707
+#: ../../Zotlabs/Module/Settings.php:700
msgid "Current Password"
msgstr "Password attuale"
-#: ../../mod/settings.php:708
+#: ../../Zotlabs/Module/Settings.php:701
msgid "Enter New Password"
msgstr "Nuova password"
-#: ../../mod/settings.php:709
+#: ../../Zotlabs/Module/Settings.php:702
msgid "Confirm New Password"
msgstr "Conferma la nuova password"
-#: ../../mod/settings.php:709
+#: ../../Zotlabs/Module/Settings.php:702
msgid "Leave password fields blank unless changing"
msgstr "Lascia vuoti questi campi per non cambiare la password"
-#: ../../mod/settings.php:711 ../../mod/settings.php:1048
+#: ../../Zotlabs/Module/Settings.php:704
+#: ../../Zotlabs/Module/Settings.php:1041
msgid "Email Address:"
msgstr "Indirizzo email:"
-#: ../../mod/settings.php:713
+#: ../../Zotlabs/Module/Settings.php:706
msgid "Remove this account including all its channels"
msgstr "Elimina questo account e tutti i suoi canali"
-#: ../../mod/settings.php:736
+#: ../../Zotlabs/Module/Settings.php:729
msgid "Additional Features"
msgstr "Funzionalità opzionali"
-#: ../../mod/settings.php:760
+#: ../../Zotlabs/Module/Settings.php:753
msgid "Connector Settings"
msgstr "Impostazioni del connettore"
-#: ../../mod/settings.php:799
+#: ../../Zotlabs/Module/Settings.php:792
msgid "No special theme for mobile devices"
msgstr "Nessun tema per dispositivi mobili"
-#: ../../mod/settings.php:802
+#: ../../Zotlabs/Module/Settings.php:795
#, php-format
msgid "%s - (Experimental)"
msgstr "%s - (Sperimentale)"
-#: ../../mod/settings.php:844
+#: ../../Zotlabs/Module/Settings.php:837
msgid "Display Settings"
msgstr "Aspetto"
-#: ../../mod/settings.php:845
+#: ../../Zotlabs/Module/Settings.php:838
msgid "Theme Settings"
msgstr "Impostazioni del tema"
-#: ../../mod/settings.php:846
+#: ../../Zotlabs/Module/Settings.php:839
msgid "Custom Theme Settings"
msgstr "Personalizzazione del tema"
-#: ../../mod/settings.php:847
+#: ../../Zotlabs/Module/Settings.php:840
msgid "Content Settings"
msgstr "Impostazioni dei contenuti"
-#: ../../mod/settings.php:853
+#: ../../Zotlabs/Module/Settings.php:846
msgid "Display Theme:"
msgstr "Tema per schermi medio grandi:"
-#: ../../mod/settings.php:854
+#: ../../Zotlabs/Module/Settings.php:847
msgid "Mobile Theme:"
msgstr "Tema per dispositivi mobili:"
-#: ../../mod/settings.php:855
+#: ../../Zotlabs/Module/Settings.php:848
msgid "Preload images before rendering the page"
msgstr "Anticipa il caricamento delle immagini prima del rendering della pagina"
-#: ../../mod/settings.php:855
+#: ../../Zotlabs/Module/Settings.php:848
msgid ""
"The subjective page load time will be longer but the page will be ready when"
" displayed"
msgstr "Il tempo di caricamento della pagina sarà più lungo ma sarà mostrato il rendering completo"
-#: ../../mod/settings.php:856
+#: ../../Zotlabs/Module/Settings.php:849
msgid "Enable user zoom on mobile devices"
msgstr "Attiva la possibilità di fare zoom sui dispositivi mobili"
-#: ../../mod/settings.php:857
+#: ../../Zotlabs/Module/Settings.php:850
msgid "Update browser every xx seconds"
msgstr "Aggiorna il browser ogni x secondi"
-#: ../../mod/settings.php:857
+#: ../../Zotlabs/Module/Settings.php:850
msgid "Minimum of 10 seconds, no maximum"
msgstr "Minimo 10 secondi, nessun limite massimo"
-#: ../../mod/settings.php:858
+#: ../../Zotlabs/Module/Settings.php:851
msgid "Maximum number of conversations to load at any time:"
msgstr "Massimo numero di conversazioni da mostrare ogni volta:"
-#: ../../mod/settings.php:858
+#: ../../Zotlabs/Module/Settings.php:851
msgid "Maximum of 100 items"
msgstr "Massimo 100"
-#: ../../mod/settings.php:859
+#: ../../Zotlabs/Module/Settings.php:852
msgid "Show emoticons (smilies) as images"
msgstr "Mostra le faccine (smilies) come immagini"
-#: ../../mod/settings.php:860
+#: ../../Zotlabs/Module/Settings.php:853
msgid "Link post titles to source"
msgstr "Il link del titolo di un post porta al sito originale"
-#: ../../mod/settings.php:861
+#: ../../Zotlabs/Module/Settings.php:854
msgid "System Page Layout Editor - (advanced)"
msgstr "Modifica i layout di sistema (avanzato)"
-#: ../../mod/settings.php:864
+#: ../../Zotlabs/Module/Settings.php:857
msgid "Use blog/list mode on channel page"
msgstr "Mostra il canale nella modalità blog"
-#: ../../mod/settings.php:864 ../../mod/settings.php:865
+#: ../../Zotlabs/Module/Settings.php:857 ../../Zotlabs/Module/Settings.php:858
msgid "(comments displayed separately)"
msgstr "(i commenti sono mostrati separatamente)"
-#: ../../mod/settings.php:865
+#: ../../Zotlabs/Module/Settings.php:858
msgid "Use blog/list mode on grid page"
msgstr "Mostra la tua rete in modalità blog"
-#: ../../mod/settings.php:866
+#: ../../Zotlabs/Module/Settings.php:859
msgid "Channel page max height of content (in pixels)"
msgstr "Altezza massima dei contenuti del canale (in pixel)"
-#: ../../mod/settings.php:866 ../../mod/settings.php:867
+#: ../../Zotlabs/Module/Settings.php:859 ../../Zotlabs/Module/Settings.php:860
msgid "click to expand content exceeding this height"
msgstr "dovrai cliccare sul post per mostrare i contenuti di dimensioni maggiori"
-#: ../../mod/settings.php:867
+#: ../../Zotlabs/Module/Settings.php:860
msgid "Grid page max height of content (in pixels)"
msgstr "Altezza massima dei contenuti della tua rete (in pixel)"
-#: ../../mod/settings.php:901
+#: ../../Zotlabs/Module/Settings.php:894
msgid "Nobody except yourself"
msgstr "Nessuno tranne te"
-#: ../../mod/settings.php:902
+#: ../../Zotlabs/Module/Settings.php:895
msgid "Only those you specifically allow"
msgstr "Solo chi riceve il mio permesso"
-#: ../../mod/settings.php:903
+#: ../../Zotlabs/Module/Settings.php:896
msgid "Approved connections"
msgstr "Contatti approvati"
-#: ../../mod/settings.php:904
+#: ../../Zotlabs/Module/Settings.php:897
msgid "Any connections"
msgstr "Tutti i contatti"
-#: ../../mod/settings.php:905
+#: ../../Zotlabs/Module/Settings.php:898
msgid "Anybody on this website"
msgstr "Chiunque su questo hub"
-#: ../../mod/settings.php:906
+#: ../../Zotlabs/Module/Settings.php:899
msgid "Anybody in this network"
msgstr "Chiunque su questa rete"
-#: ../../mod/settings.php:907
+#: ../../Zotlabs/Module/Settings.php:900
msgid "Anybody authenticated"
msgstr "Chiunque abbia effettuato l'accesso"
-#: ../../mod/settings.php:908
+#: ../../Zotlabs/Module/Settings.php:901
msgid "Anybody on the internet"
msgstr "Chiunque su internet"
-#: ../../mod/settings.php:983
+#: ../../Zotlabs/Module/Settings.php:976
msgid "Publish your default profile in the network directory"
msgstr "Mostra il mio profilo predefinito negli elenchi pubblici dei canali"
-#: ../../mod/settings.php:988
+#: ../../Zotlabs/Module/Settings.php:981
msgid "Allow us to suggest you as a potential friend to new members?"
msgstr "Vuoi essere suggerito come amico ai nuovi membri?"
-#: ../../mod/settings.php:997
+#: ../../Zotlabs/Module/Settings.php:990
msgid "Your channel address is"
msgstr "L'indirizzo del tuo canale è"
-#: ../../mod/settings.php:1039
+#: ../../Zotlabs/Module/Settings.php:1032
msgid "Channel Settings"
msgstr "Impostazioni del canale"
-#: ../../mod/settings.php:1046
+#: ../../Zotlabs/Module/Settings.php:1039
msgid "Basic Settings"
msgstr "Impostazioni di base"
-#: ../../mod/settings.php:1049
+#: ../../Zotlabs/Module/Settings.php:1040 ../../include/channel.php:1140
+msgid "Full Name:"
+msgstr "Nome completo:"
+
+#: ../../Zotlabs/Module/Settings.php:1042
msgid "Your Timezone:"
msgstr "Il tuo fuso orario:"
-#: ../../mod/settings.php:1050
+#: ../../Zotlabs/Module/Settings.php:1043
msgid "Default Post Location:"
msgstr "Località predefinita:"
-#: ../../mod/settings.php:1050
+#: ../../Zotlabs/Module/Settings.php:1043
msgid "Geographical location to display on your posts"
msgstr "La posizione geografica da mostrare sui tuoi post"
-#: ../../mod/settings.php:1051
+#: ../../Zotlabs/Module/Settings.php:1044
msgid "Use Browser Location:"
msgstr "Usa la località rilevata dal browser:"
-#: ../../mod/settings.php:1053
+#: ../../Zotlabs/Module/Settings.php:1046
msgid "Adult Content"
msgstr "Contenuto per adulti"
-#: ../../mod/settings.php:1053
+#: ../../Zotlabs/Module/Settings.php:1046
msgid ""
"This channel frequently or regularly publishes adult content. (Please tag "
"any adult material and/or nudity with #NSFW)"
msgstr "Questo canale pubblica frequentemente contenuto per adulti. (I contenuti per adulti vanno taggati #NSFW - Not Safe For Work)"
-#: ../../mod/settings.php:1055
+#: ../../Zotlabs/Module/Settings.php:1048
msgid "Security and Privacy Settings"
msgstr "Impostazioni di sicurezza e privacy"
-#: ../../mod/settings.php:1058
+#: ../../Zotlabs/Module/Settings.php:1051
msgid "Your permissions are already configured. Click to view/adjust"
msgstr "I tuoi permessi sono già stati configurati. Clicca per vederli o modificarli"
-#: ../../mod/settings.php:1060
+#: ../../Zotlabs/Module/Settings.php:1053
msgid "Hide my online presence"
msgstr "Nascondi la mia presenza online"
-#: ../../mod/settings.php:1060
+#: ../../Zotlabs/Module/Settings.php:1053
msgid "Prevents displaying in your profile that you are online"
msgstr "Non mostrare sul tuo profilo quando sei online"
-#: ../../mod/settings.php:1062
+#: ../../Zotlabs/Module/Settings.php:1055
msgid "Simple Privacy Settings:"
msgstr "Impostazioni di privacy semplificate"
-#: ../../mod/settings.php:1063
+#: ../../Zotlabs/Module/Settings.php:1056
msgid ""
"Very Public - <em>extremely permissive (should be used with caution)</em>"
msgstr "Tutto pubblico - <em>estremamente permissivo (da usare con cautela)</em>"
-#: ../../mod/settings.php:1064
+#: ../../Zotlabs/Module/Settings.php:1057
msgid ""
"Typical - <em>default public, privacy when desired (similar to social "
"network permissions but with improved privacy)</em>"
msgstr "Standard - <em>contenuti normalmente pubblici, ma anche privati se necessario (simile ai social network ma con privacy migliorata)</em>"
-#: ../../mod/settings.php:1065
+#: ../../Zotlabs/Module/Settings.php:1058
msgid "Private - <em>default private, never open or public</em>"
msgstr "Privato - <em>contenuti normalmente privati, nulla è aperto o pubblico</em>"
-#: ../../mod/settings.php:1066
+#: ../../Zotlabs/Module/Settings.php:1059
msgid "Blocked - <em>default blocked to/from everybody</em>"
msgstr "Bloccato - <em>bloccato in invio e ricezione dei contenuti</em>"
-#: ../../mod/settings.php:1068
+#: ../../Zotlabs/Module/Settings.php:1061
msgid "Allow others to tag your posts"
msgstr "Permetti ad altri di taggare i tuoi post"
-#: ../../mod/settings.php:1068
+#: ../../Zotlabs/Module/Settings.php:1061
msgid ""
"Often used by the community to retro-actively flag inappropriate content"
msgstr "Usato spesso dalla comunità per marcare contenuti inappropriati già esistenti"
-#: ../../mod/settings.php:1070
+#: ../../Zotlabs/Module/Settings.php:1063
msgid "Advanced Privacy Settings"
msgstr "Impostazioni di privacy avanzate"
-#: ../../mod/settings.php:1072
+#: ../../Zotlabs/Module/Settings.php:1065
msgid "Expire other channel content after this many days"
msgstr "Giorni dopo cui mettere in scadenza gli altri contenuti del canale"
-#: ../../mod/settings.php:1072
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "0 or blank to use the website limit."
+msgstr "0 o vuoto per usare i valori predefiniti."
+
+#: ../../Zotlabs/Module/Settings.php:1065
#, php-format
-msgid ""
-"0 or blank to use the website limit. The website expires after %d days."
-msgstr "0 o vuoto per usare i valori predefiniti. Per questo sito la scadenza è %d giorni. "
+msgid "This website expires after %d days."
+msgstr "Per questo sito la scadenza è %d giorni. "
+
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "This website does not expire imported content."
+msgstr "I contenuti di questo sito non hanno scadenza."
+
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "The website limit takes precedence if lower than your limit."
+msgstr ""
-#: ../../mod/settings.php:1073
+#: ../../Zotlabs/Module/Settings.php:1066
msgid "Maximum Friend Requests/Day:"
msgstr "Numero massimo giornaliero di richieste di amicizia:"
-#: ../../mod/settings.php:1073
+#: ../../Zotlabs/Module/Settings.php:1066
msgid "May reduce spam activity"
msgstr "Serve a ridurre lo spam"
-#: ../../mod/settings.php:1074
-msgid "Default Post Permissions"
-msgstr "Permessi predefiniti per i post"
+#: ../../Zotlabs/Module/Settings.php:1067
+msgid "Default Post and Publish Permissions"
+msgstr ""
+
+#: ../../Zotlabs/Module/Settings.php:1069
+msgid "Use my default audience setting for the type of object published"
+msgstr ""
-#: ../../mod/settings.php:1079
+#: ../../Zotlabs/Module/Settings.php:1072
msgid "Channel permissions category:"
msgstr "Categorie di permessi dei canali:"
-#: ../../mod/settings.php:1085
+#: ../../Zotlabs/Module/Settings.php:1078
msgid "Maximum private messages per day from unknown people:"
msgstr "Numero massimo giornaliero di messaggi privati da utenti sconosciuti:"
-#: ../../mod/settings.php:1085
+#: ../../Zotlabs/Module/Settings.php:1078
msgid "Useful to reduce spamming"
msgstr "Serve e ridurre lo spam"
-#: ../../mod/settings.php:1088
+#: ../../Zotlabs/Module/Settings.php:1081
msgid "Notification Settings"
msgstr "Impostazioni di notifica"
-#: ../../mod/settings.php:1089
+#: ../../Zotlabs/Module/Settings.php:1082
msgid "By default post a status message when:"
msgstr "Pubblica un messaggio di stato quando:"
-#: ../../mod/settings.php:1090
+#: ../../Zotlabs/Module/Settings.php:1083
msgid "accepting a friend request"
msgstr "accetto una nuova amicizia"
-#: ../../mod/settings.php:1091
+#: ../../Zotlabs/Module/Settings.php:1084
msgid "joining a forum/community"
msgstr "entro a far parte di un forum"
-#: ../../mod/settings.php:1092
+#: ../../Zotlabs/Module/Settings.php:1085
msgid "making an <em>interesting</em> profile change"
msgstr "faccio un cambiamento <em>interessante</em> al mio profilo"
-#: ../../mod/settings.php:1093
+#: ../../Zotlabs/Module/Settings.php:1086
msgid "Send a notification email when:"
msgstr "Invia una email di notifica quando:"
-#: ../../mod/settings.php:1094
+#: ../../Zotlabs/Module/Settings.php:1087
msgid "You receive a connection request"
msgstr "Ricevi una richiesta di entrare in contatto"
-#: ../../mod/settings.php:1095
+#: ../../Zotlabs/Module/Settings.php:1088
msgid "Your connections are confirmed"
msgstr "I tuoi contatti sono confermati"
-#: ../../mod/settings.php:1096
+#: ../../Zotlabs/Module/Settings.php:1089
msgid "Someone writes on your profile wall"
msgstr "Qualcuno scrive sulla tua bacheca"
-#: ../../mod/settings.php:1097
+#: ../../Zotlabs/Module/Settings.php:1090
msgid "Someone writes a followup comment"
msgstr "Qualcuno scrive un commento dopo di te"
-#: ../../mod/settings.php:1098
+#: ../../Zotlabs/Module/Settings.php:1091
msgid "You receive a private message"
msgstr "Ricevi un messaggio privato"
-#: ../../mod/settings.php:1099
+#: ../../Zotlabs/Module/Settings.php:1092
msgid "You receive a friend suggestion"
msgstr "Ti viene suggerito un amico"
-#: ../../mod/settings.php:1100
+#: ../../Zotlabs/Module/Settings.php:1093
msgid "You are tagged in a post"
msgstr "Sei taggato in un post"
-#: ../../mod/settings.php:1101
+#: ../../Zotlabs/Module/Settings.php:1094
msgid "You are poked/prodded/etc. in a post"
msgstr "Ricevi un poke in un post"
-#: ../../mod/settings.php:1104
+#: ../../Zotlabs/Module/Settings.php:1097
msgid "Show visual notifications including:"
msgstr "Mostra queste notifiche a schermo:"
-#: ../../mod/settings.php:1106
+#: ../../Zotlabs/Module/Settings.php:1099
msgid "Unseen grid activity"
msgstr "Nuove attività nella rete"
-#: ../../mod/settings.php:1107
+#: ../../Zotlabs/Module/Settings.php:1100
msgid "Unseen channel activity"
msgstr "Novità nei canali"
-#: ../../mod/settings.php:1108
+#: ../../Zotlabs/Module/Settings.php:1101
msgid "Unseen private messages"
msgstr "Nuovi messaggi privati"
-#: ../../mod/settings.php:1108 ../../mod/settings.php:1113
-#: ../../mod/settings.php:1114 ../../mod/settings.php:1115
+#: ../../Zotlabs/Module/Settings.php:1101
+#: ../../Zotlabs/Module/Settings.php:1106
+#: ../../Zotlabs/Module/Settings.php:1107
+#: ../../Zotlabs/Module/Settings.php:1108
msgid "Recommended"
msgstr "Consigliato"
-#: ../../mod/settings.php:1109
+#: ../../Zotlabs/Module/Settings.php:1102
msgid "Upcoming events"
msgstr "Prossimi eventi"
-#: ../../mod/settings.php:1110
+#: ../../Zotlabs/Module/Settings.php:1103
msgid "Events today"
msgstr "Eventi di oggi"
-#: ../../mod/settings.php:1111
+#: ../../Zotlabs/Module/Settings.php:1104
msgid "Upcoming birthdays"
msgstr "Prossimi compleanni"
-#: ../../mod/settings.php:1111
+#: ../../Zotlabs/Module/Settings.php:1104
msgid "Not available in all themes"
msgstr "Non disponibile in tutti i temi"
-#: ../../mod/settings.php:1112
+#: ../../Zotlabs/Module/Settings.php:1105
msgid "System (personal) notifications"
msgstr "Notifiche personali dal sistema"
-#: ../../mod/settings.php:1113
+#: ../../Zotlabs/Module/Settings.php:1106
msgid "System info messages"
msgstr "Notifiche di sistema"
-#: ../../mod/settings.php:1114
+#: ../../Zotlabs/Module/Settings.php:1107
msgid "System critical alerts"
msgstr "Avvisi critici di sistema"
-#: ../../mod/settings.php:1115
+#: ../../Zotlabs/Module/Settings.php:1108
msgid "New connections"
msgstr "Nuovi contatti"
-#: ../../mod/settings.php:1116
+#: ../../Zotlabs/Module/Settings.php:1109
msgid "System Registrations"
msgstr "Registrazioni"
-#: ../../mod/settings.php:1117
+#: ../../Zotlabs/Module/Settings.php:1110
msgid ""
"Also show new wall posts, private messages and connections under Notices"
msgstr "Mostra negli avvisi anche i nuovi post, i messaggi privati e i nuovi contatti"
-#: ../../mod/settings.php:1119
+#: ../../Zotlabs/Module/Settings.php:1112
msgid "Notify me of events this many days in advance"
msgstr "Giorni di anticipo per notificare gli eventi"
-#: ../../mod/settings.php:1119
+#: ../../Zotlabs/Module/Settings.php:1112
msgid "Must be greater than 0"
msgstr "Maggiore di 0"
-#: ../../mod/settings.php:1121
+#: ../../Zotlabs/Module/Settings.php:1114
msgid "Advanced Account/Page Type Settings"
msgstr "Impostazioni avanzate"
-#: ../../mod/settings.php:1122
+#: ../../Zotlabs/Module/Settings.php:1115
msgid "Change the behaviour of this account for special situations"
msgstr "Cambia il funzionamento di questo account per necessità particolari"
-#: ../../mod/settings.php:1125
+#: ../../Zotlabs/Module/Settings.php:1118
msgid ""
"Please enable expert mode (in <a href=\"settings/features\">Settings > "
"Additional features</a>) to adjust!"
msgstr "Abilita la modalità esperto per fare cambiamenti! (in <a href=\"settings/features\">Impostazioni > Funzionalità opzionali</a>)"
-#: ../../mod/settings.php:1126
+#: ../../Zotlabs/Module/Settings.php:1119
msgid "Miscellaneous Settings"
msgstr "Impostazioni varie"
-#: ../../mod/settings.php:1127
+#: ../../Zotlabs/Module/Settings.php:1120
msgid "Default photo upload folder"
msgstr "Cartella predefinita per le foto caricate"
-#: ../../mod/settings.php:1127 ../../mod/settings.php:1128
+#: ../../Zotlabs/Module/Settings.php:1120
+#: ../../Zotlabs/Module/Settings.php:1121
msgid "%Y - current year, %m - current month"
msgstr "%Y - anno corrente, %m - mese corrente"
-#: ../../mod/settings.php:1128
+#: ../../Zotlabs/Module/Settings.php:1121
msgid "Default file upload folder"
msgstr "Cartella predefinita per i file caricati"
-#: ../../mod/settings.php:1130
+#: ../../Zotlabs/Module/Settings.php:1123
msgid "Personal menu to display in your channel pages"
msgstr "Menu personale da mostrare sulle pagine del tuo canale"
-#: ../../mod/settings.php:1132
+#: ../../Zotlabs/Module/Settings.php:1125
msgid "Remove this channel."
msgstr "Elimina questo canale."
-#: ../../mod/settings.php:1133
+#: ../../Zotlabs/Module/Settings.php:1126
msgid "Firefox Share $Projectname provider"
msgstr "Attiva Firefox Share per $Projectname"
-#: ../../mod/settings.php:1134
+#: ../../Zotlabs/Module/Settings.php:1127
msgid "Start calendar week on monday"
msgstr "La settimana inizia il lunedì"
-#: ../../mod/setup.php:197
+#: ../../Zotlabs/Module/Setup.php:179
msgid "$Projectname Server - Setup"
msgstr "Server $Projectname - Installazione"
-#: ../../mod/setup.php:201
+#: ../../Zotlabs/Module/Setup.php:183
msgid "Could not connect to database."
msgstr " Impossibile connettersi al database."
-#: ../../mod/setup.php:205
+#: ../../Zotlabs/Module/Setup.php:187
msgid ""
"Could not connect to specified site URL. Possible SSL certificate or DNS "
"issue."
msgstr "Non è possibile raggiungere l'indirizzo del sito specificato. Potrebbe essere un problema di SSL o DNS."
-#: ../../mod/setup.php:212
+#: ../../Zotlabs/Module/Setup.php:194
msgid "Could not create table."
msgstr "Impossibile creare le tabelle."
-#: ../../mod/setup.php:217
+#: ../../Zotlabs/Module/Setup.php:199
msgid "Your site database has been installed."
msgstr "Il database del sito è stato installato."
-#: ../../mod/setup.php:221
+#: ../../Zotlabs/Module/Setup.php:203
msgid ""
"You may need to import the file \"install/schema_xxx.sql\" manually using a "
"database client."
msgstr "Potresti dover importare il file 'install/schema_xxx.sql' manualmente usando un client per collegarti al db."
-#: ../../mod/setup.php:222 ../../mod/setup.php:290 ../../mod/setup.php:740
+#: ../../Zotlabs/Module/Setup.php:204 ../../Zotlabs/Module/Setup.php:266
+#: ../../Zotlabs/Module/Setup.php:721
msgid "Please see the file \"install/INSTALL.txt\"."
msgstr "Leggi il file 'install/INSTALL.txt'."
-#: ../../mod/setup.php:287
+#: ../../Zotlabs/Module/Setup.php:263
msgid "System check"
msgstr "Verifica del sistema"
-#: ../../mod/setup.php:292
+#: ../../Zotlabs/Module/Setup.php:268
msgid "Check again"
msgstr "Verifica di nuovo"
-#: ../../mod/setup.php:314
+#: ../../Zotlabs/Module/Setup.php:290
msgid "Database connection"
msgstr "Connessione al database"
-#: ../../mod/setup.php:315
+#: ../../Zotlabs/Module/Setup.php:291
msgid ""
"In order to install $Projectname we need to know how to connect to your "
"database."
msgstr "Per poter installare $Projectname è necessario fornire i parametri di connessione al tuo database."
-#: ../../mod/setup.php:316
+#: ../../Zotlabs/Module/Setup.php:292
msgid ""
"Please contact your hosting provider or site administrator if you have "
"questions about these settings."
msgstr "Contatta il tuo fornitore di hosting o l'amministratore del sito se hai domande su queste impostazioni."
-#: ../../mod/setup.php:317
+#: ../../Zotlabs/Module/Setup.php:293
msgid ""
"The database you specify below should already exist. If it does not, please "
"create it before continuing."
msgstr "Il database deve già esistere. Se non esiste, crealo prima di continuare."
-#: ../../mod/setup.php:321
+#: ../../Zotlabs/Module/Setup.php:297
msgid "Database Server Name"
msgstr "Server del database"
-#: ../../mod/setup.php:321
+#: ../../Zotlabs/Module/Setup.php:297
msgid "Default is 127.0.0.1"
msgstr "Il valore predefinito è 127.0.0.1"
-#: ../../mod/setup.php:322
+#: ../../Zotlabs/Module/Setup.php:298
msgid "Database Port"
msgstr "Port del database"
-#: ../../mod/setup.php:322
+#: ../../Zotlabs/Module/Setup.php:298
msgid "Communication port number - use 0 for default"
msgstr "Scrivi 0 per usare il valore standard"
-#: ../../mod/setup.php:323
+#: ../../Zotlabs/Module/Setup.php:299
msgid "Database Login Name"
msgstr "Utente database"
-#: ../../mod/setup.php:324
+#: ../../Zotlabs/Module/Setup.php:300
msgid "Database Login Password"
msgstr "Password database"
-#: ../../mod/setup.php:325
+#: ../../Zotlabs/Module/Setup.php:301
msgid "Database Name"
msgstr "Nome database"
-#: ../../mod/setup.php:326
+#: ../../Zotlabs/Module/Setup.php:302
msgid "Database Type"
msgstr "Tipo database"
-#: ../../mod/setup.php:328 ../../mod/setup.php:368
+#: ../../Zotlabs/Module/Setup.php:304 ../../Zotlabs/Module/Setup.php:344
msgid "Site administrator email address"
msgstr "Indirizzo email dell'amministratore del hub"
-#: ../../mod/setup.php:328 ../../mod/setup.php:368
+#: ../../Zotlabs/Module/Setup.php:304 ../../Zotlabs/Module/Setup.php:344
msgid ""
"Your account email address must match this in order to use the web admin "
"panel."
msgstr "Il tuo indirizzo email deve corrispondere a questo per poter usare il pannello di amministrazione di Hubzilla."
-#: ../../mod/setup.php:329 ../../mod/setup.php:370
+#: ../../Zotlabs/Module/Setup.php:305 ../../Zotlabs/Module/Setup.php:346
msgid "Website URL"
msgstr "URL completo del sito"
-#: ../../mod/setup.php:329 ../../mod/setup.php:370
+#: ../../Zotlabs/Module/Setup.php:305 ../../Zotlabs/Module/Setup.php:346
msgid "Please use SSL (https) URL if available."
msgstr "Se disponibile, usa l'indirizzo SSL (https)."
-#: ../../mod/setup.php:330 ../../mod/setup.php:373
+#: ../../Zotlabs/Module/Setup.php:306 ../../Zotlabs/Module/Setup.php:349
msgid "Please select a default timezone for your website"
msgstr "Seleziona il fuso orario predefinito per il tuo hub"
-#: ../../mod/setup.php:357
+#: ../../Zotlabs/Module/Setup.php:333
msgid "Site settings"
msgstr "Impostazioni del hub"
-#: ../../mod/setup.php:371
+#: ../../Zotlabs/Module/Setup.php:347
msgid "Enable $Projectname <strong>advanced</strong> features?"
msgstr "Vuoi attivare le funzionalità <strong>avanzate</strong> di $Projectname?"
-#: ../../mod/setup.php:371
+#: ../../Zotlabs/Module/Setup.php:347
msgid ""
"Some advanced features, while useful - may be best suited for technically "
"proficient audiences"
msgstr "Alcune funzionalità avanzate, per quanto utili, potrebbero essere adatte solo a un pubblico tecnicamente preparato."
-#: ../../mod/setup.php:423
+#: ../../Zotlabs/Module/Setup.php:388
+msgid "PHP version 5.5 or greater is required."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:389
+msgid "PHP version"
+msgstr "Versione PHP"
+
+#: ../../Zotlabs/Module/Setup.php:404
msgid "Could not find a command line version of PHP in the web server PATH."
msgstr "Non è possibile trovare la versione di PHP da riga di comando nel PATH del server web"
-#: ../../mod/setup.php:424
+#: ../../Zotlabs/Module/Setup.php:405
msgid ""
"If you don't have a command line version of PHP installed on server, you "
"will not be able to run background polling via cron."
msgstr "Se non hai installata la versione di PHP da riga di comando non potrai attivare il polling in background tramite cron."
-#: ../../mod/setup.php:428
+#: ../../Zotlabs/Module/Setup.php:409
msgid "PHP executable path"
msgstr "Path del comando PHP"
-#: ../../mod/setup.php:428
+#: ../../Zotlabs/Module/Setup.php:409
msgid ""
"Enter full path to php executable. You can leave this blank to continue the "
"installation."
msgstr "Inserisci il percorso dell'eseguibile PHP. Puoi lasciarlo vuoto per continuare l'installazione."
-#: ../../mod/setup.php:433
+#: ../../Zotlabs/Module/Setup.php:414
msgid "Command line PHP"
msgstr "PHP da riga di comando"
-#: ../../mod/setup.php:442
+#: ../../Zotlabs/Module/Setup.php:423
msgid ""
"The command line version of PHP on your system does not have "
"\"register_argc_argv\" enabled."
msgstr "La versione da riga di comando di PHP nel sistema non ha abilitato \"register_argc_argv\"."
-#: ../../mod/setup.php:443
+#: ../../Zotlabs/Module/Setup.php:424
msgid "This is required for message delivery to work."
msgstr "E' necessario perché funzioni la consegna dei messaggi."
-#: ../../mod/setup.php:446
+#: ../../Zotlabs/Module/Setup.php:427
msgid "PHP register_argc_argv"
msgstr "PHP register_argc_argv"
-#: ../../mod/setup.php:464
+#: ../../Zotlabs/Module/Setup.php:445
#, php-format
msgid ""
"Your max allowed total upload size is set to %s. Maximum size of one file to"
" upload is set to %s. You are allowed to upload up to %d files at once."
msgstr "La dimensione massima di un caricamento è impostata a %s. Il singolo file non può superare %s. Ti è permesso caricare max %d file per volta."
-#: ../../mod/setup.php:469
+#: ../../Zotlabs/Module/Setup.php:450
msgid "You can adjust these settings in the servers php.ini."
msgstr "Puoi regolare queste impostazioni sul server in php.ini"
-#: ../../mod/setup.php:471
+#: ../../Zotlabs/Module/Setup.php:452
msgid "PHP upload limits"
msgstr "Limiti PHP in upload"
-#: ../../mod/setup.php:494
+#: ../../Zotlabs/Module/Setup.php:475
msgid ""
"Error: the \"openssl_pkey_new\" function on this system is not able to "
"generate encryption keys"
msgstr "Errore: la funzione \"openssl_pkey_new\" su questo sistema non è in grado di generare le chiavi di cifratura"
-#: ../../mod/setup.php:495
+#: ../../Zotlabs/Module/Setup.php:476
msgid ""
"If running under Windows, please see "
"\"http://www.php.net/manual/en/openssl.installation.php\"."
msgstr "Se stai usando un server windows, guarda \"http://www.php.net/manual/en/openssl.installation.php\"."
-#: ../../mod/setup.php:498
+#: ../../Zotlabs/Module/Setup.php:479
msgid "Generate encryption keys"
msgstr "Genera chiavi di cifratura"
-#: ../../mod/setup.php:510
+#: ../../Zotlabs/Module/Setup.php:491
msgid "libCurl PHP module"
msgstr "modulo PHP libCurl"
-#: ../../mod/setup.php:511
+#: ../../Zotlabs/Module/Setup.php:492
msgid "GD graphics PHP module"
msgstr "modulo PHP GD graphics"
-#: ../../mod/setup.php:512
+#: ../../Zotlabs/Module/Setup.php:493
msgid "OpenSSL PHP module"
msgstr "modulo PHP OpenSSL"
-#: ../../mod/setup.php:513
+#: ../../Zotlabs/Module/Setup.php:494
msgid "mysqli or postgres PHP module"
msgstr "modulo PHP per mysqli oppure prostgres"
-#: ../../mod/setup.php:514
+#: ../../Zotlabs/Module/Setup.php:495
msgid "mb_string PHP module"
msgstr "modulo PHP mb_string"
-#: ../../mod/setup.php:515
+#: ../../Zotlabs/Module/Setup.php:496
msgid "mcrypt PHP module"
msgstr "modulo PHP mcrypt"
-#: ../../mod/setup.php:516
+#: ../../Zotlabs/Module/Setup.php:497
msgid "xml PHP module"
msgstr "modulo xml PHP"
-#: ../../mod/setup.php:520 ../../mod/setup.php:522
+#: ../../Zotlabs/Module/Setup.php:501 ../../Zotlabs/Module/Setup.php:503
msgid "Apache mod_rewrite module"
msgstr "modulo Apache mod_rewrite"
-#: ../../mod/setup.php:520
+#: ../../Zotlabs/Module/Setup.php:501
msgid ""
"Error: Apache webserver mod-rewrite module is required but not installed."
msgstr "Errore: il modulo mod-rewrite di Apache è richiesto ma non installato"
-#: ../../mod/setup.php:526 ../../mod/setup.php:529
+#: ../../Zotlabs/Module/Setup.php:507 ../../Zotlabs/Module/Setup.php:510
msgid "proc_open"
msgstr "proc_open"
-#: ../../mod/setup.php:526
+#: ../../Zotlabs/Module/Setup.php:507
msgid ""
"Error: proc_open is required but is either not installed or has been "
"disabled in php.ini"
msgstr "Errore: proc_open è richiesto ma non è installato o è disabilitato in php.ini"
-#: ../../mod/setup.php:534
+#: ../../Zotlabs/Module/Setup.php:515
msgid "Error: libCURL PHP module required but not installed."
msgstr "Errore: il modulo libCURL di PHP è richiesto ma non installato."
-#: ../../mod/setup.php:538
+#: ../../Zotlabs/Module/Setup.php:519
msgid ""
"Error: GD graphics PHP module with JPEG support required but not installed."
msgstr "Errore: Il modulo GD graphics di PHP con supporto a JPEG è richiesto ma non installato."
-#: ../../mod/setup.php:542
+#: ../../Zotlabs/Module/Setup.php:523
msgid "Error: openssl PHP module required but not installed."
msgstr "Errore: il modulo openssl di PHP è richiesto ma non installato."
-#: ../../mod/setup.php:546
+#: ../../Zotlabs/Module/Setup.php:527
msgid ""
"Error: mysqli or postgres PHP module required but neither are installed."
msgstr "Errore: il modulo PHP per mysqli o postgres è richiesto ma non installato"
-#: ../../mod/setup.php:550
+#: ../../Zotlabs/Module/Setup.php:531
msgid "Error: mb_string PHP module required but not installed."
msgstr "Errore: il modulo PHP mb_string è richiesto ma non installato."
-#: ../../mod/setup.php:554
+#: ../../Zotlabs/Module/Setup.php:535
msgid "Error: mcrypt PHP module required but not installed."
msgstr "Errore: il modulo PHP mcrypt è richiesto ma non installato."
-#: ../../mod/setup.php:558
+#: ../../Zotlabs/Module/Setup.php:539
msgid "Error: xml PHP module required for DAV but not installed."
msgstr "Errore: il modulo xml PHP è richiesto per DAV ma non è installato."
-#: ../../mod/setup.php:576
+#: ../../Zotlabs/Module/Setup.php:557
msgid ""
"The web installer needs to be able to create a file called \".htconfig.php\""
" in the top folder of your web server and it is unable to do so."
msgstr "L'installazione web deve poter creare un file chiamato \".htconfig.php\" nella cartella di Hubzilla ma non è in grado di farlo."
-#: ../../mod/setup.php:577
+#: ../../Zotlabs/Module/Setup.php:558
msgid ""
"This is most often a permission setting, as the web server may not be able "
"to write files in your folder - even if you can."
msgstr "Spesso ciò è dovuto ai permessi di accesso al disco: il web server potrebbe non aver diritto di scrivere il file nella cartella, anche se tu puoi."
-#: ../../mod/setup.php:578
+#: ../../Zotlabs/Module/Setup.php:559
msgid ""
"At the end of this procedure, we will give you a text to save in a file "
"named .htconfig.php in your Red top folder."
msgstr "Alla fine di questa procedura ti sarà dato il testo da salvare in un file di nome .htconfig.php dentro la cartella principale di Hubzilla."
-#: ../../mod/setup.php:579
+#: ../../Zotlabs/Module/Setup.php:560
msgid ""
"You can alternatively skip this procedure and perform a manual installation."
" Please see the file \"install/INSTALL.txt\" for instructions."
msgstr "Puoi anche saltare questa procedura ed effettuare un'installazione manuale. Guarda il file 'install/INSTALL.txt' per le istruzioni."
-#: ../../mod/setup.php:582
+#: ../../Zotlabs/Module/Setup.php:563
msgid ".htconfig.php is writable"
msgstr ".htconfig.php è scrivibile"
-#: ../../mod/setup.php:596
+#: ../../Zotlabs/Module/Setup.php:577
msgid ""
"Red uses the Smarty3 template engine to render its web views. Smarty3 "
"compiles templates to PHP to speed up rendering."
msgstr "Hubzilla usa il sistema Smarty3 per costruire i suoi template grafici. Smarty3 è molto veloce perché compila i template delle pagine direttamente in PHP."
-#: ../../mod/setup.php:597
+#: ../../Zotlabs/Module/Setup.php:578
#, php-format
msgid ""
"In order to store these compiled templates, the web server needs to have "
-"write access to the directory %s under the Red top level folder."
-msgstr "Per poter memorizzare i template compilati, il web server deve avere accesso in scrittura a %s sotto la cartella di installazione di Hubzilla."
+"write access to the directory %s under the top level web folder."
+msgstr ""
-#: ../../mod/setup.php:598 ../../mod/setup.php:619
+#: ../../Zotlabs/Module/Setup.php:579 ../../Zotlabs/Module/Setup.php:600
msgid ""
"Please ensure that the user that your web server runs as (e.g. www-data) has"
" write access to this folder."
msgstr "Assicurati che il tuo web server sia in esecuzione con un utente che ha diritto di scrittura su quella cartella (ad esempio www-data)."
-#: ../../mod/setup.php:599
+#: ../../Zotlabs/Module/Setup.php:580
#, php-format
msgid ""
"Note: as a security measure, you should give the web server write access to "
"%s only--not the template files (.tpl) that it contains."
msgstr "Nota bene: come precauzione, dovresti dare i diritti di scrittura solamente su %s e non sui file template (.tpl) che contiene."
-#: ../../mod/setup.php:602
+#: ../../Zotlabs/Module/Setup.php:583
#, php-format
msgid "%s is writable"
msgstr "%s è scrivibile"
-#: ../../mod/setup.php:618
+#: ../../Zotlabs/Module/Setup.php:599
msgid ""
"Red uses the store directory to save uploaded files. The web server needs to"
" have write access to the store directory under the Red top level folder"
msgstr "Hubzilla salva i file caricati nella cartella \"store\" sul server. Il server deve avere i diritti di scrittura su quella cartella che si trova dentro l'installazione di RedMatrix"
-#: ../../mod/setup.php:622
+#: ../../Zotlabs/Module/Setup.php:603
msgid "store is writable"
msgstr "l'archivio è scrivibile"
-#: ../../mod/setup.php:655
+#: ../../Zotlabs/Module/Setup.php:636
msgid ""
"SSL certificate cannot be validated. Fix certificate or disable https access"
" to this site."
msgstr "Il certificato SSL non può essere validato. Correggi l'errore o disabilita l'accesso https al sito."
-#: ../../mod/setup.php:656
+#: ../../Zotlabs/Module/Setup.php:637
msgid ""
"If you have https access to your website or allow connections to TCP port "
"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
"NOT use self-signed certificates!"
msgstr "Se abiliti https per il tuo sito o permetti connessioni TCP su port 443 (quella di https), DEVI usare un certificato riconosciuto dai browser internet. NON DEVI usare certificati self-signed generati da te!"
-#: ../../mod/setup.php:657
+#: ../../Zotlabs/Module/Setup.php:638
msgid ""
"This restriction is incorporated because public posts from you may for "
"example contain references to images on your own hub."
msgstr "Questa restrizione è necessaria perché i tuoi post pubblici potrebbero contenere riferimenti a immagini sul tuo server."
-#: ../../mod/setup.php:658
+#: ../../Zotlabs/Module/Setup.php:639
msgid ""
"If your certificate is not recognized, members of other sites (who may "
"themselves have valid certificates) will get a warning message on their own "
"site complaining about security issues."
msgstr "Se il tuo certificato non è riconosciuto, gli utenti che ti seguono da altri siti (che avranno certificati validi) riceveranno gravi avvisi di sicurezza dal browser."
-#: ../../mod/setup.php:659
+#: ../../Zotlabs/Module/Setup.php:640
msgid ""
"This can cause usability issues elsewhere (not just on your own site) so we "
"must insist on this requirement."
msgstr "Ciò può creare seri problemi di usabilità (non solo sul tuo sito), quindi dobbiamo insistere su questo punto."
-#: ../../mod/setup.php:660
+#: ../../Zotlabs/Module/Setup.php:641
msgid ""
"Providers are available that issue free certificates which are browser-"
"valid."
msgstr "Eventualmente, considera che esistono provider che rilasciano certificati gratuiti riconosciuti dai browser."
-#: ../../mod/setup.php:662
+#: ../../Zotlabs/Module/Setup.php:643
msgid "SSL certificate validation"
msgstr "Validazione del certificato SSL"
-#: ../../mod/setup.php:668
+#: ../../Zotlabs/Module/Setup.php:649
msgid ""
"Url rewrite in .htaccess is not working. Check your server "
"configuration.Test: "
msgstr "In .htaccess la funzionalità url rewrite non funziona. Controlla la configurazione del server. Test:"
-#: ../../mod/setup.php:671
+#: ../../Zotlabs/Module/Setup.php:652
msgid "Url rewrite is working"
msgstr "Url rewrite funziona correttamente"
-#: ../../mod/setup.php:680
+#: ../../Zotlabs/Module/Setup.php:661
msgid ""
"The database configuration file \".htconfig.php\" could not be written. "
"Please use the enclosed text to create a configuration file in your web "
"server root."
msgstr "Il file di configurazione del database \".htconfig.php\" non puo' essere scritto. Usa il testo qui di seguito per creare questo file di configurazione nella cartella principale del tuo sito."
-#: ../../mod/setup.php:704
+#: ../../Zotlabs/Module/Setup.php:685
msgid "Errors encountered creating database tables."
msgstr "La creazione delle tabelle del database ha generato errori."
-#: ../../mod/setup.php:738
+#: ../../Zotlabs/Module/Setup.php:719
msgid "<h1>What next</h1>"
msgstr "<h1>I prossimi passi</h1>"
-#: ../../mod/setup.php:739
+#: ../../Zotlabs/Module/Setup.php:720
msgid ""
"IMPORTANT: You will need to [manually] setup a scheduled task for the "
"poller."
msgstr "IMPORTANTE: Devi creare [manualmente] la pianificazione del polling."
-#: ../../mod/lostpass.php:15
-msgid "No valid account found."
-msgstr "Nessun account valido trovato."
-
-#: ../../mod/lostpass.php:29
-msgid "Password reset request issued. Check your email."
-msgstr "La richiesta per reimpostare la password è stata inviata. Controlla la tua email."
-
-#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:103
-#, php-format
-msgid "Site Member (%s)"
-msgstr "Utente del sito (%s)"
-
-#: ../../mod/lostpass.php:40
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "È stato richiesto di reimpostare password su %s"
-
-#: ../../mod/lostpass.php:63
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "La richiesta non può essere verificata (potresti averla già usata precedentemente). La password non sarà reimpostata."
-
-#: ../../mod/lostpass.php:86 ../../boot.php:1588
-msgid "Password Reset"
-msgstr "Reimposta la password"
-
-#: ../../mod/lostpass.php:87
-msgid "Your password has been reset as requested."
-msgstr "La password è stata reimpostata come richiesto."
-
-#: ../../mod/lostpass.php:88
-msgid "Your new password is"
-msgstr "La tua nuova password è"
-
-#: ../../mod/lostpass.php:89
-msgid "Save or copy your new password - and then"
-msgstr "Salva o copia la tua nuova password, quindi"
-
-#: ../../mod/lostpass.php:90
-msgid "click here to login"
-msgstr "clicca qui per accedere"
-
-#: ../../mod/lostpass.php:91
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Puoi cambiare la tua password dalla pagina delle <em>Impostazioni</em> dopo aver effettuato l'accesso."
-
-#: ../../mod/lostpass.php:108
-#, php-format
-msgid "Your password has changed at %s"
-msgstr "La tua password su %s è cambiata"
-
-#: ../../mod/lostpass.php:123
-msgid "Forgot your Password?"
-msgstr "Hai dimenticato la password?"
-
-#: ../../mod/lostpass.php:124
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Inserisci il tuo indirizzo email per reimpostare la password. Dopo aver inviato la richiesta, controlla l'email e troverai le istruzioni per continuare."
-
-#: ../../mod/lostpass.php:125
-msgid "Email Address"
-msgstr "Indirizzo email"
-
-#: ../../mod/lostpass.php:126
-msgid "Reset"
-msgstr "Reimposta"
-
-#: ../../mod/sharedwithme.php:94
+#: ../../Zotlabs/Module/Sharedwithme.php:98
msgid "Files: shared with me"
msgstr "File: condivisi con me"
-#: ../../mod/sharedwithme.php:96
+#: ../../Zotlabs/Module/Sharedwithme.php:100
msgid "NEW"
msgstr "NOVITÀ"
-#: ../../mod/sharedwithme.php:99
+#: ../../Zotlabs/Module/Sharedwithme.php:103
msgid "Remove all files"
msgstr "Elimina tutti i file"
-#: ../../mod/sharedwithme.php:100
+#: ../../Zotlabs/Module/Sharedwithme.php:104
msgid "Remove this file"
msgstr "Elimina questo file"
-#: ../../mod/siteinfo.php:15
+#: ../../Zotlabs/Module/Siteinfo.php:19
#, php-format
msgid "Version %s"
msgstr "Versione %s"
-#: ../../mod/siteinfo.php:36
+#: ../../Zotlabs/Module/Siteinfo.php:40
msgid "Installed plugins/addons/apps:"
msgstr "App e componenti installati:"
-#: ../../mod/siteinfo.php:49
+#: ../../Zotlabs/Module/Siteinfo.php:53
msgid "No installed plugins/addons/apps"
msgstr "Nessuna app o componente installato"
-#: ../../mod/siteinfo.php:62
+#: ../../Zotlabs/Module/Siteinfo.php:66
msgid ""
"This is a hub of $Projectname - a global cooperative network of "
"decentralized privacy enhanced websites."
msgstr "Questo è un hub di $Projectname - una rete cooperativa e decentralizzata di siti ad elevata privacy. "
-#: ../../mod/siteinfo.php:64
+#: ../../Zotlabs/Module/Siteinfo.php:68
msgid "Tag: "
msgstr "Tag: "
-#: ../../mod/siteinfo.php:66
+#: ../../Zotlabs/Module/Siteinfo.php:70
msgid "Last background fetch: "
msgstr "Ultima acquisizione:"
-#: ../../mod/siteinfo.php:68
+#: ../../Zotlabs/Module/Siteinfo.php:72
msgid "Current load average: "
msgstr "Carico medio attuale:"
-#: ../../mod/siteinfo.php:71
+#: ../../Zotlabs/Module/Siteinfo.php:75
msgid "Running at web location"
msgstr "In esecuzione sull'indirizzo web"
-#: ../../mod/siteinfo.php:72
+#: ../../Zotlabs/Module/Siteinfo.php:76
msgid ""
"Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more "
"about $Projectname."
msgstr "Visita <a href=\"http://hubzilla.org\">hubzilla.org</a> per maggiori informazioni su $Projectname."
-#: ../../mod/siteinfo.php:73
+#: ../../Zotlabs/Module/Siteinfo.php:77
msgid "Bug reports and issues: please visit"
msgstr "Per segnalare bug e problemi: visita"
-#: ../../mod/siteinfo.php:75
+#: ../../Zotlabs/Module/Siteinfo.php:79
msgid "$projectname issues"
msgstr "Problematiche note su $projectname"
-#: ../../mod/siteinfo.php:76
+#: ../../Zotlabs/Module/Siteinfo.php:80
msgid ""
"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
"com"
msgstr "Per consigli, ringraziamenti, ecc. - scrivi a \"redmatrix\" at librelist - dot com"
-#: ../../mod/siteinfo.php:78
+#: ../../Zotlabs/Module/Siteinfo.php:82
msgid "Site Administrators"
msgstr "Amministratori del sito"
-#: ../../mod/sources.php:32
+#: ../../Zotlabs/Module/Sources.php:37
msgid "Failed to create source. No channel selected."
msgstr "Impossibile creare la sorgente. Nessun canale selezionato."
-#: ../../mod/sources.php:45
+#: ../../Zotlabs/Module/Sources.php:51
msgid "Source created."
msgstr "Sorgente creata."
-#: ../../mod/sources.php:57
+#: ../../Zotlabs/Module/Sources.php:64
msgid "Source updated."
msgstr "Sorgente aggiornata."
-#: ../../mod/sources.php:82
+#: ../../Zotlabs/Module/Sources.php:90
msgid "*"
msgstr "*"
-#: ../../mod/sources.php:89
+#: ../../Zotlabs/Module/Sources.php:96 ../../include/widgets.php:630
+#: ../../include/features.php:71
+msgid "Channel Sources"
+msgstr "Sorgenti del canale"
+
+#: ../../Zotlabs/Module/Sources.php:97
msgid "Manage remote sources of content for your channel."
msgstr "Gestisci le sorgenti dei contenuti del tuo canale."
-#: ../../mod/sources.php:90 ../../mod/sources.php:100
+#: ../../Zotlabs/Module/Sources.php:98 ../../Zotlabs/Module/Sources.php:108
msgid "New Source"
msgstr "Nuova sorgente"
-#: ../../mod/sources.php:101 ../../mod/sources.php:133
+#: ../../Zotlabs/Module/Sources.php:109 ../../Zotlabs/Module/Sources.php:143
msgid ""
"Import all or selected content from the following channel into this channel "
"and distribute it according to your channel settings."
msgstr "Importa nel tuo canale tutti o una parte dei contenuti dal canale seguente."
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
+#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
msgid "Only import content with these words (one per line)"
msgstr "Importa solo i contenuti che hanno queste parole (una per riga)"
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
+#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
msgid "Leave blank to import all public content"
msgstr "Lascia vuoto per importare tutti i contenuti pubblici"
-#: ../../mod/sources.php:103 ../../mod/sources.php:137
+#: ../../Zotlabs/Module/Sources.php:111 ../../Zotlabs/Module/Sources.php:148
msgid "Channel Name"
msgstr "Nome del canale"
-#: ../../mod/sources.php:123 ../../mod/sources.php:150
+#: ../../Zotlabs/Module/Sources.php:112 ../../Zotlabs/Module/Sources.php:147
+msgid ""
+"Add the following categories to posts imported from this source (comma "
+"separated)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Sources.php:133 ../../Zotlabs/Module/Sources.php:161
msgid "Source not found."
msgstr "Sorgente non trovata."
-#: ../../mod/sources.php:130
+#: ../../Zotlabs/Module/Sources.php:140
msgid "Edit Source"
msgstr "Modifica la sorgente"
-#: ../../mod/sources.php:131
+#: ../../Zotlabs/Module/Sources.php:141
msgid "Delete Source"
msgstr "Elimina la sorgente"
-#: ../../mod/sources.php:158
+#: ../../Zotlabs/Module/Sources.php:169
msgid "Source removed"
msgstr "Sorgente eliminata"
-#: ../../mod/sources.php:160
+#: ../../Zotlabs/Module/Sources.php:171
msgid "Unable to remove source."
msgstr "Impossibile rimuovere la sorgente."
-#: ../../mod/subthread.php:114
+#: ../../Zotlabs/Module/Subthread.php:118
#, php-format
msgid "%1$s is following %2$s's %3$s"
msgstr "%1$s sta seguendo %3$s di %2$s"
-#: ../../mod/subthread.php:116
+#: ../../Zotlabs/Module/Subthread.php:120
#, php-format
msgid "%1$s stopped following %2$s's %3$s"
msgstr "%1$s non segue più %3$s di %2$s"
-#: ../../mod/suggest.php:35
+#: ../../Zotlabs/Module/Suggest.php:39
msgid ""
"No suggestions available. If this is a new site, please try again in 24 "
"hours."
msgstr "Nessun suggerimento disponibile. Se questo sito è nuovo, riprova tra 24 ore."
-#: ../../mod/tagger.php:96
+#: ../../Zotlabs/Module/Suggest.php:58 ../../include/widgets.php:149
+msgid "Ignore/Hide"
+msgstr "Ignora/nascondi"
+
+#: ../../Zotlabs/Module/Tagger.php:55 ../../include/bbcode.php:256
+msgid "post"
+msgstr "il post"
+
+#: ../../Zotlabs/Module/Tagger.php:57 ../../include/text.php:1948
+#: ../../include/conversation.php:150
+msgid "comment"
+msgstr "il commento"
+
+#: ../../Zotlabs/Module/Tagger.php:100
#, php-format
msgid "%1$s tagged %2$s's %3$s with %4$s"
msgstr "%1$s ha taggato %3$s di %2$s con %4$s"
-#: ../../mod/tagrm.php:44 ../../mod/tagrm.php:94
+#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98
msgid "Tag removed"
msgstr "Tag rimosso"
-#: ../../mod/tagrm.php:119
+#: ../../Zotlabs/Module/Tagrm.php:123
msgid "Remove Item Tag"
msgstr "Rimuovi il tag"
-#: ../../mod/tagrm.php:121
+#: ../../Zotlabs/Module/Tagrm.php:125
msgid "Select a tag to remove: "
msgstr "Seleziona un tag da rimuovere: "
-#: ../../mod/thing.php:110
+#: ../../Zotlabs/Module/Thing.php:114
msgid "Thing updated"
msgstr "L'oggetto è stato aggiornato"
-#: ../../mod/thing.php:162
+#: ../../Zotlabs/Module/Thing.php:166
msgid "Object store: failed"
msgstr "Impossibile memorizzare l'oggetto."
-#: ../../mod/thing.php:166
+#: ../../Zotlabs/Module/Thing.php:170
msgid "Thing added"
msgstr "L'Oggetto è stato aggiunto"
-#: ../../mod/thing.php:192
+#: ../../Zotlabs/Module/Thing.php:196
#, php-format
msgid "OBJ: %1$s %2$s %3$s"
msgstr "OBJ: %1$s %2$s %3$s"
-#: ../../mod/thing.php:255
+#: ../../Zotlabs/Module/Thing.php:259
msgid "Show Thing"
msgstr "Mostra l'oggetto"
-#: ../../mod/thing.php:262
+#: ../../Zotlabs/Module/Thing.php:266
msgid "item not found."
msgstr "non trovato."
-#: ../../mod/thing.php:295
+#: ../../Zotlabs/Module/Thing.php:299
msgid "Edit Thing"
msgstr "Modifica l'oggetto"
-#: ../../mod/thing.php:297 ../../mod/thing.php:347
+#: ../../Zotlabs/Module/Thing.php:301 ../../Zotlabs/Module/Thing.php:351
msgid "Select a profile"
msgstr "Scegli un profilo"
-#: ../../mod/thing.php:301 ../../mod/thing.php:350
+#: ../../Zotlabs/Module/Thing.php:305 ../../Zotlabs/Module/Thing.php:354
msgid "Post an activity"
msgstr "Pubblica un'attività"
-#: ../../mod/thing.php:301 ../../mod/thing.php:350
+#: ../../Zotlabs/Module/Thing.php:305 ../../Zotlabs/Module/Thing.php:354
msgid "Only sends to viewers of the applicable profile"
msgstr "Invia solo a chi può vedere il profilo scelto"
-#: ../../mod/thing.php:303 ../../mod/thing.php:352
+#: ../../Zotlabs/Module/Thing.php:307 ../../Zotlabs/Module/Thing.php:356
msgid "Name of thing e.g. something"
msgstr "Nome dell'oggetto"
-#: ../../mod/thing.php:305 ../../mod/thing.php:353
+#: ../../Zotlabs/Module/Thing.php:309 ../../Zotlabs/Module/Thing.php:357
msgid "URL of thing (optional)"
msgstr "Indirizzo web dell'oggetto (facoltativo)"
-#: ../../mod/thing.php:307 ../../mod/thing.php:354
+#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:358
msgid "URL for photo of thing (optional)"
msgstr "Indirizzo di un'immagine dell'oggetto (facoltativo)"
-#: ../../mod/thing.php:345
+#: ../../Zotlabs/Module/Thing.php:349
msgid "Add Thing to your Profile"
msgstr "Aggiungi l'oggetto al tuo profilo"
-#: ../../mod/uexport.php:51 ../../mod/uexport.php:52
+#: ../../Zotlabs/Module/Uexport.php:55 ../../Zotlabs/Module/Uexport.php:56
msgid "Export Channel"
msgstr "Esporta il canale"
-#: ../../mod/uexport.php:53
+#: ../../Zotlabs/Module/Uexport.php:57
msgid ""
"Export your basic channel information to a file. This acts as a backup of "
"your connections, permissions, profile and basic data, which can be used to "
"import your data to a new server hub, but does not contain your content."
msgstr "Esporta le informazioni di base del canale in un file. In pratica è un salvataggio delle tue connessioni, dei permessi che hai assegnato e del tuo profilo che così potrà essere importato su un altro server/hub. Il file non includerà i tuoi post e altri contenuti che hai creato o caricato."
-#: ../../mod/uexport.php:54
+#: ../../Zotlabs/Module/Uexport.php:58
msgid "Export Content"
msgstr "Esporta i contenuti"
-#: ../../mod/uexport.php:55
+#: ../../Zotlabs/Module/Uexport.php:59
msgid ""
"Export your channel information and recent content to a JSON backup that can"
" be restored or imported to another server hub. This backs up all of your "
@@ -9387,11 +6189,11 @@ msgid ""
" this download to begin."
msgstr "Esporta il tuo canale e i contenuti recenti in un file di salvataggio che potrà essere importato su un altro server/hub. Sarà un backup dei tuoi contatti, dei permessi che hai assegnato, dei dati del profilo e dei post degli ultimi mesi. Il file potrebbe essere MOLTO grande. Sarà necessario attendere con pazienza - saranno necessari molti minuti prima che inizi lo scaricamento."
-#: ../../mod/uexport.php:56
+#: ../../Zotlabs/Module/Uexport.php:60
msgid "Export your posts from a given year."
msgstr "Esporta i tuoi post a partire dall'anno scelto."
-#: ../../mod/uexport.php:58
+#: ../../Zotlabs/Module/Uexport.php:62
msgid ""
"You may also export your posts and conversations for a particular year or "
"month. Adjust the date in your browser location bar to select other dates. "
@@ -9399,21 +6201,21 @@ msgid ""
"please try again selecting a more limited date range."
msgstr "Puoi anche esportare post e conversazioni di un particolare anno o mese. Modifica la data nella barra dell'indirizzo del browser per scegliere date differenti. Se l'esportazione dovesse fallire (la memoria sul server potrebbe non bastare), riprova scegliendo un intervallo più breve tra le date."
-#: ../../mod/uexport.php:59
+#: ../../Zotlabs/Module/Uexport.php:63
#, php-format
msgid ""
"To select all posts for a given year, such as this year, visit <a "
"href=\"%1$s\">%2$s</a>"
msgstr "Per selezionare tutti i post di un anno, come per esempio quello in corso, visita <a href=\"%1$s\">%2$s</a> "
-#: ../../mod/uexport.php:60
+#: ../../Zotlabs/Module/Uexport.php:64
#, php-format
msgid ""
"To select all posts for a given month, such as January of this year, visit "
"<a href=\"%1$s\">%2$s</a>"
msgstr "Per selezionare tutti post di un dato mese, come per esempio gennaio di quest'anno, visita <a href=\"%1$s\">%2$s</a>"
-#: ../../mod/uexport.php:61
+#: ../../Zotlabs/Module/Uexport.php:65
#, php-format
msgid ""
"These content files may be imported or restored by visiting <a "
@@ -9421,46 +6223,3414 @@ msgid ""
" please import or restore these in date order (oldest first)."
msgstr "Questi contenuti potranno essere importati o ripristinati visitando <a href=\"%1$s\">%2$s</a> su qualsiasi sito/hub dove è presente il tuo canale. Per mantenere l'ordinamento originale fai attenzione ad importare i file secondo la data (prima il più vecchio)"
-#: ../../mod/viewconnections.php:59
+#: ../../Zotlabs/Module/Viewconnections.php:62
msgid "No connections."
msgstr "Nessun contatto."
-#: ../../mod/viewconnections.php:72
+#: ../../Zotlabs/Module/Viewconnections.php:75
#, php-format
msgid "Visit %s's profile [%s]"
msgstr "Visita il profilo di %s [%s]"
-#: ../../mod/viewconnections.php:101
+#: ../../Zotlabs/Module/Viewconnections.php:104
msgid "View Connections"
msgstr "Elenco contatti"
-#: ../../mod/viewsrc.php:40
+#: ../../Zotlabs/Module/Viewsrc.php:44
msgid "Source of Item"
msgstr "Sorgente"
-#: ../../mod/webpages.php:193
+#: ../../Zotlabs/Module/Webpages.php:184 ../../Zotlabs/Lib/Apps.php:217
+#: ../../include/nav.php:106 ../../include/conversation.php:1685
+msgid "Webpages"
+msgstr "Pagine web"
+
+#: ../../Zotlabs/Module/Webpages.php:195 ../../include/page_widgets.php:41
+msgid "Actions"
+msgstr "Azioni"
+
+#: ../../Zotlabs/Module/Webpages.php:196 ../../include/page_widgets.php:42
+msgid "Page Link"
+msgstr "Link alla pagina"
+
+#: ../../Zotlabs/Module/Webpages.php:197
msgid "Page Title"
msgstr "Titolo della pagina"
-#: ../../mod/xchan.php:6
+#: ../../Zotlabs/Module/Xchan.php:10
msgid "Xchan Lookup"
msgstr "Ricerca canale"
-#: ../../mod/xchan.php:9
+#: ../../Zotlabs/Module/Xchan.php:13
msgid "Lookup xchan beginning with (or webbie): "
msgstr "Cerca un canale (o un webbie) che inizia per:"
-#: ../../mod/cover_photo.php:130 ../../mod/cover_photo.php:177
-msgid "Cover Photos"
-msgstr "Copertine del canale"
+#: ../../Zotlabs/Lib/Apps.php:204
+msgid "Site Admin"
+msgstr "Amministrazione sito"
-#: ../../mod/cover_photo.php:352
-msgid "Upload Cover Photo"
-msgstr "Carica una copertina"
+#: ../../Zotlabs/Lib/Apps.php:205
+msgid "Bug Report"
+msgstr "Bug Report"
-#: ../../mod/cal.php:63
-msgid "Permissions denied."
-msgstr "Permesso negato."
+#: ../../Zotlabs/Lib/Apps.php:206
+msgid "View Bookmarks"
+msgstr "Vedi i segnalibri"
+
+#: ../../Zotlabs/Lib/Apps.php:207
+msgid "My Chatrooms"
+msgstr "Le mie aree chat"
+
+#: ../../Zotlabs/Lib/Apps.php:209
+msgid "Firefox Share"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Apps.php:210
+msgid "Remote Diagnostics"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Apps.php:211 ../../include/features.php:89
+msgid "Suggest Channels"
+msgstr "Suggerisci canali"
+
+#: ../../Zotlabs/Lib/Apps.php:212 ../../include/nav.php:110
+#: ../../boot.php:1703
+msgid "Login"
+msgstr "Accedi"
+
+#: ../../Zotlabs/Lib/Apps.php:214 ../../include/nav.php:179
+msgid "Grid"
+msgstr "Rete"
+
+#: ../../Zotlabs/Lib/Apps.php:218 ../../include/nav.php:182
+msgid "Channel Home"
+msgstr "Bacheca del canale"
+
+#: ../../Zotlabs/Lib/Apps.php:221 ../../include/nav.php:201
+#: ../../include/conversation.php:1649 ../../include/conversation.php:1652
+msgid "Events"
+msgstr "Eventi"
+
+#: ../../Zotlabs/Lib/Apps.php:222 ../../include/nav.php:167
+msgid "Directory"
+msgstr "Elenchi pubblici dei canali"
+
+#: ../../Zotlabs/Lib/Apps.php:224 ../../include/nav.php:193
+msgid "Mail"
+msgstr "Messaggi"
+
+#: ../../Zotlabs/Lib/Apps.php:227 ../../include/nav.php:96
+msgid "Chat"
+msgstr "Chat"
+
+#: ../../Zotlabs/Lib/Apps.php:229
+msgid "Probe"
+msgstr "Diagnostica"
+
+#: ../../Zotlabs/Lib/Apps.php:230
+msgid "Suggest"
+msgstr "Suggerisci"
+
+#: ../../Zotlabs/Lib/Apps.php:231
+msgid "Random Channel"
+msgstr "Canale casuale"
+
+#: ../../Zotlabs/Lib/Apps.php:232
+msgid "Invite"
+msgstr "Invita"
+
+#: ../../Zotlabs/Lib/Apps.php:233 ../../include/widgets.php:1386
+msgid "Features"
+msgstr "Funzionalità"
+
+#: ../../Zotlabs/Lib/Apps.php:235
+msgid "Post"
+msgstr "Post"
+
+#: ../../Zotlabs/Lib/Apps.php:335
+msgid "Purchase"
+msgstr "Acquista"
+
+#: ../../Zotlabs/Lib/Chatroom.php:27
+msgid "Missing room name"
+msgstr "Chat senza nome"
+
+#: ../../Zotlabs/Lib/Chatroom.php:36
+msgid "Duplicate room name"
+msgstr "Il nome della chat è duplicato"
+
+#: ../../Zotlabs/Lib/Chatroom.php:86 ../../Zotlabs/Lib/Chatroom.php:94
+msgid "Invalid room specifier."
+msgstr "Il nome della chat non è valido."
+
+#: ../../Zotlabs/Lib/Chatroom.php:126
+msgid "Room not found."
+msgstr "Chat non trovata."
+
+#: ../../Zotlabs/Lib/Chatroom.php:147
+msgid "Room is full"
+msgstr "La chat è al completo"
+
+#: ../../Zotlabs/Lib/Enotify.php:60 ../../include/network.php:1823
+msgid "$Projectname Notification"
+msgstr "Notifica $Projectname"
+
+#: ../../Zotlabs/Lib/Enotify.php:61 ../../include/network.php:1824
+msgid "$projectname"
+msgstr "$projectname"
+
+#: ../../Zotlabs/Lib/Enotify.php:63 ../../include/network.php:1826
+msgid "Thank You,"
+msgstr "Grazie,"
+
+#: ../../Zotlabs/Lib/Enotify.php:65 ../../include/network.php:1828
+#, php-format
+msgid "%s Administrator"
+msgstr "L'amministratore di %s"
+
+#: ../../Zotlabs/Lib/Enotify.php:100
+#, php-format
+msgid "%s <!item_type!>"
+msgstr "%s <!item_type!>"
+
+#: ../../Zotlabs/Lib/Enotify.php:104
+#, php-format
+msgid "[Hubzilla:Notify] New mail received at %s"
+msgstr "[Hubzilla] Nuovo messaggio su %s"
+
+#: ../../Zotlabs/Lib/Enotify.php:106
+#, php-format
+msgid "%1$s, %2$s sent you a new private message at %3$s."
+msgstr "%1$s, %2$s ti ha mandato un messaggio privato su %3$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:107
+#, php-format
+msgid "%1$s sent you %2$s."
+msgstr "%1$s ti ha mandato %2$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:107
+msgid "a private message"
+msgstr "un messaggio privato"
+
+#: ../../Zotlabs/Lib/Enotify.php:108
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
+msgstr "Visita %s per leggere i tuoi messaggi privati e rispondere."
+
+#: ../../Zotlabs/Lib/Enotify.php:164
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
+msgstr "%1$s, %2$s ha commentato [zrl=%3$s]%4$s[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:172
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
+msgstr "%1$s, %2$s ha commentato [zrl=%3$s]%5$s di %4$s[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:181
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
+msgstr "%1$s, %2$s ha commentato [zrl=%3$s]%4$s che hai creato[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:192
+#, php-format
+msgid "[Hubzilla:Notify] Comment to conversation #%1$d by %2$s"
+msgstr "[Hubzilla] Nuovo commento di %2$s alla conversazione #%1$d"
+
+#: ../../Zotlabs/Lib/Enotify.php:193
+#, php-format
+msgid "%1$s, %2$s commented on an item/conversation you have been following."
+msgstr "%1$s, %2$s ha commentato un elemento che stavi seguendo."
+
+#: ../../Zotlabs/Lib/Enotify.php:196 ../../Zotlabs/Lib/Enotify.php:211
+#: ../../Zotlabs/Lib/Enotify.php:237 ../../Zotlabs/Lib/Enotify.php:255
+#: ../../Zotlabs/Lib/Enotify.php:269
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
+msgstr "Visita %s per leggere o commentare la conversazione."
+
+#: ../../Zotlabs/Lib/Enotify.php:202
+#, php-format
+msgid "[Hubzilla:Notify] %s posted to your profile wall"
+msgstr "[Hubzilla] %s ha scritto sulla tua bacheca"
+
+#: ../../Zotlabs/Lib/Enotify.php:204
+#, php-format
+msgid "%1$s, %2$s posted to your profile wall at %3$s"
+msgstr "%1$s, %2$s ha scritto sulla bacheca del tuo profilo su %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:206
+#, php-format
+msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
+msgstr "%1$s, %2$s ha scritto sulla [zrl=%3$s]tua bacheca[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:230
+#, php-format
+msgid "[Hubzilla:Notify] %s tagged you"
+msgstr "[Hubzilla] %s ti ha taggato"
+
+#: ../../Zotlabs/Lib/Enotify.php:231
+#, php-format
+msgid "%1$s, %2$s tagged you at %3$s"
+msgstr "%1$s, %2$s ti ha taggato su %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:232
+#, php-format
+msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%3$s]ti ha taggato[/zrl]."
+
+#: ../../Zotlabs/Lib/Enotify.php:244
+#, php-format
+msgid "[Hubzilla:Notify] %1$s poked you"
+msgstr "[Hubzilla] %1$s ti ha mandato un poke"
+
+#: ../../Zotlabs/Lib/Enotify.php:245
+#, php-format
+msgid "%1$s, %2$s poked you at %3$s"
+msgstr "%1$s, %2$s ti ha mandato un poke su %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:246
+#, php-format
+msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%2$s]ti ha mandato un poke[/zrl]."
+
+#: ../../Zotlabs/Lib/Enotify.php:262
+#, php-format
+msgid "[Hubzilla:Notify] %s tagged your post"
+msgstr "[Hubzilla] %s ha taggato il tuo post"
+
+#: ../../Zotlabs/Lib/Enotify.php:263
+#, php-format
+msgid "%1$s, %2$s tagged your post at %3$s"
+msgstr "%1$s, %2$s ha taggato il tuo post su %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:264
+#, php-format
+msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+msgstr "%1$s, %2$s ha taggato [zrl=%3$s]il tuo post[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:276
+msgid "[Hubzilla:Notify] Introduction received"
+msgstr "[Hubzilla] Hai una richiesta di amicizia"
+
+#: ../../Zotlabs/Lib/Enotify.php:277
+#, php-format
+msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
+msgstr "%1$s, hai ricevuto una richiesta di entrare in contatto da '%2$s' su %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:278
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
+msgstr "%1$s, hai ricevuto una [zrl=%2$s]richiesta di entrare in contatto[/zrl] da %3$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:282 ../../Zotlabs/Lib/Enotify.php:301
+#, php-format
+msgid "You may visit their profile at %s"
+msgstr "Puoi visitare il suo profilo su %s"
+
+#: ../../Zotlabs/Lib/Enotify.php:284
+#, php-format
+msgid "Please visit %s to approve or reject the connection request."
+msgstr "Visita %s per approvare o rifiutare la richiesta di entrare in contatto."
+
+#: ../../Zotlabs/Lib/Enotify.php:291
+msgid "[Hubzilla:Notify] Friend suggestion received"
+msgstr "[Hubzilla] Ti è stato suggerito un amico"
+
+#: ../../Zotlabs/Lib/Enotify.php:292
+#, php-format
+msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
+msgstr "%1$s, ti è stato suggerito un amico da '%2$s' su %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:293
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
+"%4$s."
+msgstr "%1$s, %4$s ti [zrl=%2$s]ha suggerito %3$s[/zrl] come amico."
+
+#: ../../Zotlabs/Lib/Enotify.php:299
+msgid "Name:"
+msgstr "Nome:"
+
+#: ../../Zotlabs/Lib/Enotify.php:300
+msgid "Photo:"
+msgstr "Foto:"
+
+#: ../../Zotlabs/Lib/Enotify.php:303
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
+msgstr "Visita %s per approvare o rifiutare il suggerimento."
+
+#: ../../Zotlabs/Lib/Enotify.php:518
+msgid "[Hubzilla:Notify]"
+msgstr "[Hubzilla]"
+
+#: ../../Zotlabs/Lib/Enotify.php:667
+msgid "created a new post"
+msgstr "Ha creato un nuovo post"
+
+#: ../../Zotlabs/Lib/Enotify.php:668
+#, php-format
+msgid "commented on %s's post"
+msgstr "ha commentato il post di %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:95 ../../include/conversation.php:664
+msgid "Private Message"
+msgstr "Messaggio privato"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:132 ../../include/conversation.php:656
+msgid "Select"
+msgstr "Scegli"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:136
+msgid "Save to Folder"
+msgstr "Salva nella cartella"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:157
+msgid "I will attend"
+msgstr "Parteciperò"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:157
+msgid "I will not attend"
+msgstr "Non parteciperò"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:157
+msgid "I might attend"
+msgstr "Forse parteciperò"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:167
+msgid "I agree"
+msgstr "Sono d'accordo"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:167
+msgid "I disagree"
+msgstr "Non sono d'accordo"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:167
+msgid "I abstain"
+msgstr "Mi astengo"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:218
+msgid "Add Star"
+msgstr "Aggiungi ai preferiti"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:219
+msgid "Remove Star"
+msgstr "Rimuovi dai preferiti"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:220
+msgid "Toggle Star Status"
+msgstr "Attiva/disattiva preferito"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:224
+msgid "starred"
+msgstr "preferito"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:234 ../../include/conversation.php:671
+msgid "Message signature validated"
+msgstr "Messaggio con firma verificata"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:235 ../../include/conversation.php:672
+msgid "Message signature incorrect"
+msgstr "Massaggio con firma non corretta"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:243
+msgid "Add Tag"
+msgstr "Aggiungi un tag"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:261 ../../include/taxonomy.php:316
+msgid "like"
+msgstr "mi piace"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:262 ../../include/taxonomy.php:317
+msgid "dislike"
+msgstr "non mi piace"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:266
+msgid "Share This"
+msgstr "Condividi"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:266
+msgid "share"
+msgstr "condividi"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:275
+msgid "Delivery Report"
+msgstr "Rapporto di trasmissione"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:293
+#, php-format
+msgid "%d comment"
+msgid_plural "%d comments"
+msgstr[0] "%d commento"
+msgstr[1] "%d commenti"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:322 ../../Zotlabs/Lib/ThreadItem.php:323
+#, php-format
+msgid "View %s's profile - %s"
+msgstr "Guarda il profilo di %s - %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:326
+msgid "to"
+msgstr "a"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:327
+msgid "via"
+msgstr "via"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:328
+msgid "Wall-to-Wall"
+msgstr "Da bacheca a bacheca"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:329
+msgid "via Wall-To-Wall:"
+msgstr "da bacheca a bacheca:"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:341 ../../include/conversation.php:719
+#, php-format
+msgid "from %s"
+msgstr "da %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:344 ../../include/conversation.php:722
+#, php-format
+msgid "last edited: %s"
+msgstr "ultima modifica: %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:345 ../../include/conversation.php:723
+#, php-format
+msgid "Expires: %s"
+msgstr "Scadenza: %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:370
+msgid "Save Bookmarks"
+msgstr "Salva segnalibro"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:371
+msgid "Add to Calendar"
+msgstr "Aggiungi al calendario"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:380
+msgid "Mark all seen"
+msgstr "Marca tutto come letto"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:421 ../../include/js_strings.php:7
+msgid "[+] show all"
+msgstr "[+] mostra tutto"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:711 ../../include/conversation.php:1215
+msgid "Bold"
+msgstr "Grassetto"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:712 ../../include/conversation.php:1216
+msgid "Italic"
+msgstr "Corsivo"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:713 ../../include/conversation.php:1217
+msgid "Underline"
+msgstr "Sottolineato"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:714 ../../include/conversation.php:1218
+msgid "Quote"
+msgstr "Citazione"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:715 ../../include/conversation.php:1219
+msgid "Code"
+msgstr "Codice"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:716
+msgid "Image"
+msgstr "Immagine"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:717
+msgid "Insert Link"
+msgstr "Collegamento"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:718
+msgid "Video"
+msgstr "Video"
+
+#: ../../include/Import/import_diaspora.php:16
+msgid "No username found in import file."
+msgstr "Impossibile trovare il nome utente nel file da importare."
+
+#: ../../include/Import/import_diaspora.php:41 ../../include/import.php:50
+msgid "Unable to create a unique channel address. Import failed."
+msgstr "Impossibile creare un indirizzo univoco per il canale. L'import è fallito."
+
+#: ../../include/dba/dba_driver.php:171
+#, php-format
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr "Non trovo le informazioni DNS per il database server '%s'"
+
+#: ../../include/taxonomy.php:188 ../../include/taxonomy.php:270
+#: ../../include/widgets.php:46 ../../include/widgets.php:429
+#: ../../include/contact_widgets.php:91
+msgid "Categories"
+msgstr "Categorie"
+
+#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249
+msgid "Tags"
+msgstr "Tag"
+
+#: ../../include/taxonomy.php:293
+msgid "Keywords"
+msgstr "Parole chiave"
+
+#: ../../include/taxonomy.php:314
+msgid "have"
+msgstr "ho"
+
+#: ../../include/taxonomy.php:314
+msgid "has"
+msgstr "ha"
+
+#: ../../include/taxonomy.php:315
+msgid "want"
+msgstr "voglio"
+
+#: ../../include/taxonomy.php:315
+msgid "wants"
+msgstr "vuole"
+
+#: ../../include/taxonomy.php:316
+msgid "likes"
+msgstr "gli piace"
+
+#: ../../include/taxonomy.php:317
+msgid "dislikes"
+msgstr "non gli piace"
+
+#: ../../include/event.php:22 ../../include/event.php:69
+#: ../../include/bb2diaspora.php:485
+msgid "l F d, Y \\@ g:i A"
+msgstr "l d F Y \\@ G:i"
+
+#: ../../include/event.php:30 ../../include/event.php:73
+#: ../../include/bb2diaspora.php:491
+msgid "Starts:"
+msgstr "Inizio:"
+
+#: ../../include/event.php:40 ../../include/event.php:77
+#: ../../include/bb2diaspora.php:499
+msgid "Finishes:"
+msgstr "Fine:"
+
+#: ../../include/event.php:812
+msgid "This event has been added to your calendar."
+msgstr "Questo evento è stato aggiunto al tuo calendario"
+
+#: ../../include/event.php:1012
+msgid "Not specified"
+msgstr "Non specificato"
+
+#: ../../include/event.php:1013
+msgid "Needs Action"
+msgstr "Necessita di un intervento"
+
+#: ../../include/event.php:1014
+msgid "Completed"
+msgstr "Completato"
+
+#: ../../include/event.php:1015
+msgid "In Process"
+msgstr "In corso"
+
+#: ../../include/event.php:1016
+msgid "Cancelled"
+msgstr "Annullato"
+
+#: ../../include/import.php:29
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "Non posso creare un canale con un identificativo che già esiste su questo sistema. L'importazione è fallita."
+
+#: ../../include/import.php:76
+msgid "Channel clone failed. Import failed."
+msgstr "Impossibile clonare il canale. L'importazione è fallita."
+
+#: ../../include/items.php:892 ../../include/items.php:937
+msgid "(Unknown)"
+msgstr "(Sconosciuto)"
+
+#: ../../include/items.php:1136
+msgid "Visible to anybody on the internet."
+msgstr "Visibile a chiunque su internet."
+
+#: ../../include/items.php:1138
+msgid "Visible to you only."
+msgstr "Visibile solo a te."
+
+#: ../../include/items.php:1140
+msgid "Visible to anybody in this network."
+msgstr "Visibile a tutti su questa rete."
+
+#: ../../include/items.php:1142
+msgid "Visible to anybody authenticated."
+msgstr "Visibile a chiunque sia autenticato."
+
+#: ../../include/items.php:1144
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Visibile a tutti su %s."
+
+#: ../../include/items.php:1146
+msgid "Visible to all connections."
+msgstr "Visibile a tutti coloro che ti seguono."
+
+#: ../../include/items.php:1148
+msgid "Visible to approved connections."
+msgstr "Visibile ai contatti approvati."
+
+#: ../../include/items.php:1150
+msgid "Visible to specific connections."
+msgstr "Visibile ad alcuni contatti scelti."
+
+#: ../../include/items.php:3909
+msgid "Privacy group is empty."
+msgstr "Gruppo di canali vuoto."
+
+#: ../../include/items.php:3916
+#, php-format
+msgid "Privacy group: %s"
+msgstr "Gruppo di canali: %s"
+
+#: ../../include/items.php:3928
+msgid "Connection not found."
+msgstr "Contatto non trovato."
+
+#: ../../include/items.php:4277
+msgid "profile photo"
+msgstr "foto del profilo"
+
+#: ../../include/message.php:20
+msgid "No recipient provided."
+msgstr "Devi scegliere un destinatario."
+
+#: ../../include/message.php:25
+msgid "[no subject]"
+msgstr "[nessun titolo]"
+
+#: ../../include/message.php:45
+msgid "Unable to determine sender."
+msgstr "Impossibile determinare il mittente."
+
+#: ../../include/message.php:222
+msgid "Stored post could not be verified."
+msgstr "Non è stato possibile verificare il post."
+
+#: ../../include/text.php:428
+msgid "prev"
+msgstr "prec"
+
+#: ../../include/text.php:430
+msgid "first"
+msgstr "inizio"
+
+#: ../../include/text.php:459
+msgid "last"
+msgstr "fine"
+
+#: ../../include/text.php:462
+msgid "next"
+msgstr "succ"
+
+#: ../../include/text.php:472
+msgid "older"
+msgstr "più recenti"
+
+#: ../../include/text.php:474
+msgid "newer"
+msgstr "più nuovi"
+
+#: ../../include/text.php:863
+msgid "No connections"
+msgstr "Nessun contatto"
+
+#: ../../include/text.php:888
+#, php-format
+msgid "View all %s connections"
+msgstr "Mostra tutti i %s contatti"
+
+#: ../../include/text.php:1033 ../../include/text.php:1038
+msgid "poke"
+msgstr "poke"
+
+#: ../../include/text.php:1033 ../../include/text.php:1038
+#: ../../include/conversation.php:243
+msgid "poked"
+msgstr "ha mandato un poke"
+
+#: ../../include/text.php:1039
+msgid "ping"
+msgstr "ping"
+
+#: ../../include/text.php:1039
+msgid "pinged"
+msgstr "ha effettuato un ping"
+
+#: ../../include/text.php:1040
+msgid "prod"
+msgstr "spintone"
+
+#: ../../include/text.php:1040
+msgid "prodded"
+msgstr "ha ricevuto uno spintone"
+
+#: ../../include/text.php:1041
+msgid "slap"
+msgstr "schiaffo"
+
+#: ../../include/text.php:1041
+msgid "slapped"
+msgstr "ha ricevuto uno schiaffo"
+
+#: ../../include/text.php:1042
+msgid "finger"
+msgstr "finger"
+
+#: ../../include/text.php:1042
+msgid "fingered"
+msgstr "ha ricevuto un finger"
+
+#: ../../include/text.php:1043
+msgid "rebuff"
+msgstr "rifiuto"
+
+#: ../../include/text.php:1043
+msgid "rebuffed"
+msgstr "ha ricevuto un rifiuto"
+
+#: ../../include/text.php:1055
+msgid "happy"
+msgstr "felice"
+
+#: ../../include/text.php:1056
+msgid "sad"
+msgstr "triste"
+
+#: ../../include/text.php:1057
+msgid "mellow"
+msgstr "calmo"
+
+#: ../../include/text.php:1058
+msgid "tired"
+msgstr "stanco"
+
+#: ../../include/text.php:1059
+msgid "perky"
+msgstr "vivace"
+
+#: ../../include/text.php:1060
+msgid "angry"
+msgstr "arrabbiato"
+
+#: ../../include/text.php:1061
+msgid "stupefied"
+msgstr "stupito"
+
+#: ../../include/text.php:1062
+msgid "puzzled"
+msgstr "confuso"
+
+#: ../../include/text.php:1063
+msgid "interested"
+msgstr "attento"
+
+#: ../../include/text.php:1064
+msgid "bitter"
+msgstr "amaro"
+
+#: ../../include/text.php:1065
+msgid "cheerful"
+msgstr "allegro"
+
+#: ../../include/text.php:1066
+msgid "alive"
+msgstr "vivace"
+
+#: ../../include/text.php:1067
+msgid "annoyed"
+msgstr "seccato"
+
+#: ../../include/text.php:1068
+msgid "anxious"
+msgstr "ansioso"
+
+#: ../../include/text.php:1069
+msgid "cranky"
+msgstr "irritabile"
+
+#: ../../include/text.php:1070
+msgid "disturbed"
+msgstr "turbato"
+
+#: ../../include/text.php:1071
+msgid "frustrated"
+msgstr "frustrato"
+
+#: ../../include/text.php:1072
+msgid "depressed"
+msgstr "in depressione"
+
+#: ../../include/text.php:1073
+msgid "motivated"
+msgstr "motivato"
+
+#: ../../include/text.php:1074
+msgid "relaxed"
+msgstr "rilassato"
+
+#: ../../include/text.php:1075
+msgid "surprised"
+msgstr "sorpreso"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:70
+msgid "Monday"
+msgstr "lunedì"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:71
+msgid "Tuesday"
+msgstr "martedì"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:72
+msgid "Wednesday"
+msgstr "mercoledì"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:73
+msgid "Thursday"
+msgstr "giovedì"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:74
+msgid "Friday"
+msgstr "venerdì"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:75
+msgid "Saturday"
+msgstr "sabato"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:69
+msgid "Sunday"
+msgstr "domenica"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:45
+msgid "January"
+msgstr "gennaio"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:46
+msgid "February"
+msgstr "febbraio"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:47
+msgid "March"
+msgstr "marzo"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:48
+msgid "April"
+msgstr "aprile"
+
+#: ../../include/text.php:1261
+msgid "May"
+msgstr "Mag"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:50
+msgid "June"
+msgstr "giugno"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:51
+msgid "July"
+msgstr "luglio"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:52
+msgid "August"
+msgstr "agosto"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:53
+msgid "September"
+msgstr "settembre"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:54
+msgid "October"
+msgstr "ottobre"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:55
+msgid "November"
+msgstr "novembre"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:56
+msgid "December"
+msgstr "dicembre"
+
+#: ../../include/text.php:1338 ../../include/text.php:1342
+msgid "Unknown Attachment"
+msgstr "Allegato non riconoscuto"
+
+#: ../../include/text.php:1344
+msgid "unknown"
+msgstr "sconosciuta"
+
+#: ../../include/text.php:1380
+msgid "remove category"
+msgstr "rimuovi la categoria"
+
+#: ../../include/text.php:1457
+msgid "remove from file"
+msgstr "rimuovi dal file"
+
+#: ../../include/text.php:1753 ../../include/text.php:1824
+msgid "default"
+msgstr "predefinito"
+
+#: ../../include/text.php:1761
+msgid "Page layout"
+msgstr "Layout della pagina"
+
+#: ../../include/text.php:1761
+msgid "You can create your own with the layouts tool"
+msgstr "Puoi creare un tuo layout dalla configurazione delle pagine web"
+
+#: ../../include/text.php:1803
+msgid "Page content type"
+msgstr "Tipo di contenuto della pagina"
+
+#: ../../include/text.php:1836
+msgid "Select an alternate language"
+msgstr "Seleziona una lingua diversa"
+
+#: ../../include/text.php:1953
+msgid "activity"
+msgstr "l'attività"
+
+#: ../../include/text.php:2262
+msgid "Design Tools"
+msgstr "Strumenti di design"
+
+#: ../../include/text.php:2268
+msgid "Pages"
+msgstr "Pagine"
+
+#: ../../include/widgets.php:103
+msgid "System"
+msgstr "Sistema"
+
+#: ../../include/widgets.php:106
+msgid "New App"
+msgstr "Nuova app"
+
+#: ../../include/widgets.php:154
+msgid "Suggestions"
+msgstr "Suggerimenti"
+
+#: ../../include/widgets.php:155
+msgid "See more..."
+msgstr "Altro..."
+
+#: ../../include/widgets.php:175
+#, php-format
+msgid "You have %1$.0f of %2$.0f allowed connections."
+msgstr "Hai attivato %1$.0f delle %2$.0f connessioni permesse."
+
+#: ../../include/widgets.php:181
+msgid "Add New Connection"
+msgstr "Aggiungi un contatto"
+
+#: ../../include/widgets.php:182
+msgid "Enter channel address"
+msgstr "Indirizzo del canale"
+
+#: ../../include/widgets.php:183
+msgid "Examples: bob@example.com, https://example.com/barbara"
+msgstr "Per esempio: bob@example.com, https://example.com/barbara"
+
+#: ../../include/widgets.php:199
+msgid "Notes"
+msgstr "Note"
+
+#: ../../include/widgets.php:273
+msgid "Remove term"
+msgstr "Rimuovi termine"
+
+#: ../../include/widgets.php:281 ../../include/features.php:84
+msgid "Saved Searches"
+msgstr "Ricerche salvate"
+
+#: ../../include/widgets.php:282 ../../include/group.php:316
+msgid "add"
+msgstr "aggiungi"
+
+#: ../../include/widgets.php:310 ../../include/contact_widgets.php:53
+#: ../../include/features.php:98
+msgid "Saved Folders"
+msgstr "Cartelle salvate"
+
+#: ../../include/widgets.php:313 ../../include/widgets.php:432
+#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94
+msgid "Everything"
+msgstr "Tutto"
+
+#: ../../include/widgets.php:354
+msgid "Archives"
+msgstr "Archivi"
+
+#: ../../include/widgets.php:516
+msgid "Refresh"
+msgstr "Aggiorna"
+
+#: ../../include/widgets.php:556
+msgid "Account settings"
+msgstr "Il tuo account"
+
+#: ../../include/widgets.php:562
+msgid "Channel settings"
+msgstr "Impostazioni del canale"
+
+#: ../../include/widgets.php:571
+msgid "Additional features"
+msgstr "Funzionalità opzionali"
+
+#: ../../include/widgets.php:578
+msgid "Feature/Addon settings"
+msgstr "Componenti aggiuntivi"
+
+#: ../../include/widgets.php:584
+msgid "Display settings"
+msgstr "Aspetto"
+
+#: ../../include/widgets.php:591
+msgid "Manage locations"
+msgstr "Gestione repliche"
+
+#: ../../include/widgets.php:600
+msgid "Export channel"
+msgstr "Esporta il canale"
+
+#: ../../include/widgets.php:607
+msgid "Connected apps"
+msgstr "App connesse"
+
+#: ../../include/widgets.php:622
+msgid "Premium Channel Settings"
+msgstr "Canale premium - impostazioni"
+
+#: ../../include/widgets.php:651
+msgid "Private Mail Menu"
+msgstr "Menu messaggi privati"
+
+#: ../../include/widgets.php:653
+msgid "Combined View"
+msgstr "Vista combinata"
+
+#: ../../include/widgets.php:658 ../../include/nav.php:196
+msgid "Inbox"
+msgstr "In arrivo"
+
+#: ../../include/widgets.php:663 ../../include/nav.php:197
+msgid "Outbox"
+msgstr "Inviati"
+
+#: ../../include/widgets.php:668 ../../include/nav.php:198
+msgid "New Message"
+msgstr "Nuovo messaggio"
+
+#: ../../include/widgets.php:685 ../../include/widgets.php:697
+msgid "Conversations"
+msgstr "Conversazioni"
+
+#: ../../include/widgets.php:689
+msgid "Received Messages"
+msgstr "Ricevuti"
+
+#: ../../include/widgets.php:693
+msgid "Sent Messages"
+msgstr "Inviati"
+
+#: ../../include/widgets.php:707
+msgid "No messages."
+msgstr "Nessun messaggio."
+
+#: ../../include/widgets.php:725
+msgid "Delete conversation"
+msgstr "Elimina la conversazione"
+
+#: ../../include/widgets.php:751
+msgid "Events Menu"
+msgstr "Menu eventi"
+
+#: ../../include/widgets.php:752
+msgid "Day View"
+msgstr "Eventi del giorno"
+
+#: ../../include/widgets.php:753
+msgid "Week View"
+msgstr "Eventi della settimana"
+
+#: ../../include/widgets.php:754
+msgid "Month View"
+msgstr "Eventi del mese"
+
+#: ../../include/widgets.php:766
+msgid "Events Tools"
+msgstr "Gestione eventi"
+
+#: ../../include/widgets.php:767
+msgid "Export Calendar"
+msgstr "Esporta calendario"
+
+#: ../../include/widgets.php:768
+msgid "Import Calendar"
+msgstr "Importa calendario"
+
+#: ../../include/widgets.php:842 ../../include/conversation.php:1662
+#: ../../include/conversation.php:1665
+msgid "Chatrooms"
+msgstr "Chat"
+
+#: ../../include/widgets.php:846
+msgid "Overview"
+msgstr "Riepilogo"
+
+#: ../../include/widgets.php:853
+msgid "Chat Members"
+msgstr "Partecipanti"
+
+#: ../../include/widgets.php:876
+msgid "Bookmarked Chatrooms"
+msgstr "Chat nei segnalibri"
+
+#: ../../include/widgets.php:899
+msgid "Suggested Chatrooms"
+msgstr "Chat suggerite"
+
+#: ../../include/widgets.php:1044 ../../include/widgets.php:1156
+msgid "photo/image"
+msgstr "foto/immagine"
+
+#: ../../include/widgets.php:1099
+msgid "Click to show more"
+msgstr "Clicca per mostrare tutto"
+
+#: ../../include/widgets.php:1250
+msgid "Rating Tools"
+msgstr "Valutazione"
+
+#: ../../include/widgets.php:1254 ../../include/widgets.php:1256
+msgid "Rate Me"
+msgstr "Valutami"
+
+#: ../../include/widgets.php:1259
+msgid "View Ratings"
+msgstr "Vedi le valutazioni ricevute"
+
+#: ../../include/widgets.php:1316
+msgid "Forums"
+msgstr "Forum"
+
+#: ../../include/widgets.php:1345
+msgid "Tasks"
+msgstr "Attività"
+
+#: ../../include/widgets.php:1354
+msgid "Documentation"
+msgstr "Guida"
+
+#: ../../include/widgets.php:1356
+msgid "Project/Site Information"
+msgstr "Informazioni sul sito/progetto"
+
+#: ../../include/widgets.php:1357
+msgid "For Members"
+msgstr "Per gli utenti"
+
+#: ../../include/widgets.php:1358
+msgid "For Administrators"
+msgstr "Per gli amministratori"
+
+#: ../../include/widgets.php:1359
+msgid "For Developers"
+msgstr "Per sviluppatori"
+
+#: ../../include/widgets.php:1383 ../../include/widgets.php:1421
+msgid "Member registrations waiting for confirmation"
+msgstr "Richieste in attesa di conferma"
+
+#: ../../include/widgets.php:1389
+msgid "Inspect queue"
+msgstr "Coda di attesa"
+
+#: ../../include/widgets.php:1391
+msgid "DB updates"
+msgstr "Aggiornamenti al DB"
+
+#: ../../include/widgets.php:1416 ../../include/nav.php:216
+msgid "Admin"
+msgstr "Amministrazione"
+
+#: ../../include/widgets.php:1417
+msgid "Plugin Features"
+msgstr "Plugin"
+
+#: ../../include/follow.php:27
+msgid "Channel is blocked on this site."
+msgstr "Il canale è bloccato per questo sito."
+
+#: ../../include/follow.php:32
+msgid "Channel location missing."
+msgstr "Manca l'indirizzo del canale."
+
+#: ../../include/follow.php:81
+msgid "Response from remote channel was incomplete."
+msgstr "La risposta dal canale non è completa."
+
+#: ../../include/follow.php:98
+msgid "Channel was deleted and no longer exists."
+msgstr "Il canale è stato rimosso e non esiste più."
+
+#: ../../include/follow.php:154 ../../include/follow.php:190
+msgid "Protocol disabled."
+msgstr "Protocollo disabilitato."
+
+#: ../../include/follow.php:178
+msgid "Channel discovery failed."
+msgstr "La ricerca del canale non ha avuto successo."
+
+#: ../../include/follow.php:216
+msgid "Cannot connect to yourself."
+msgstr "Non puoi connetterti a te stesso."
+
+#: ../../include/bookmarks.php:35
+#, php-format
+msgid "%1$s's bookmarks"
+msgstr "I segnalibri di %1$s"
+
+#: ../../include/api.php:1336
+msgid "Public Timeline"
+msgstr "Diario pubblico"
+
+#: ../../include/bbcode.php:123 ../../include/bbcode.php:844
+#: ../../include/bbcode.php:847 ../../include/bbcode.php:852
+#: ../../include/bbcode.php:855 ../../include/bbcode.php:858
+#: ../../include/bbcode.php:861 ../../include/bbcode.php:866
+#: ../../include/bbcode.php:869 ../../include/bbcode.php:874
+#: ../../include/bbcode.php:877 ../../include/bbcode.php:880
+#: ../../include/bbcode.php:883
+msgid "Image/photo"
+msgstr "Immagine"
+
+#: ../../include/bbcode.php:162 ../../include/bbcode.php:894
+msgid "Encrypted content"
+msgstr "Contenuto cifrato"
+
+#: ../../include/bbcode.php:178
+#, php-format
+msgid "Install %s element: "
+msgstr "Installa l'elemento %s:"
+
+#: ../../include/bbcode.php:182
+#, php-format
+msgid ""
+"This post contains an installable %s element, however you lack permissions "
+"to install it on this site."
+msgstr "Questo post contiene un elemento %s installabile, tuttavia non hai i permessi necessari per l'installazione."
+
+#: ../../include/bbcode.php:254
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s ha scritto %2$s %3$s"
+
+#: ../../include/bbcode.php:331 ../../include/bbcode.php:339
+msgid "Click to open/close"
+msgstr "Clicca per aprire/chiudere"
+
+#: ../../include/bbcode.php:339
+msgid "spoiler"
+msgstr "spoiler"
+
+#: ../../include/bbcode.php:585
+msgid "Different viewers will see this text differently"
+msgstr "Ad altri questo testo potrebbe apparire in modo differente"
+
+#: ../../include/bbcode.php:832
+msgid "$1 wrote:"
+msgstr "$1 ha scritto:"
+
+#: ../../include/dir_fns.php:141
+msgid "Directory Options"
+msgstr "Visibilità negli elenchi pubblici"
+
+#: ../../include/dir_fns.php:143
+msgid "Safe Mode"
+msgstr "Modalità SafeSearch"
+
+#: ../../include/dir_fns.php:144
+msgid "Public Forums Only"
+msgstr "Solo forum pubblici"
+
+#: ../../include/dir_fns.php:145
+msgid "This Website Only"
+msgstr "Solo in questo sito"
+
+#: ../../include/security.php:383
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "I controlli di sicurezza sono falliti. Probabilmente è accaduto perché la pagina è stata tenuta aperta troppo a lungo (ore?) prima di inviare il contenuto."
+
+#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1702
+msgid "Logout"
+msgstr "Esci"
+
+#: ../../include/nav.php:82 ../../include/nav.php:113
+msgid "End this session"
+msgstr "Chiudi questa sessione"
+
+#: ../../include/nav.php:85 ../../include/nav.php:144
+msgid "Home"
+msgstr "Bacheca"
+
+#: ../../include/nav.php:85
+msgid "Your posts and conversations"
+msgstr "I tuoi post e conversazioni"
+
+#: ../../include/nav.php:86
+msgid "Your profile page"
+msgstr "Il tuo profilo"
+
+#: ../../include/nav.php:88
+msgid "Manage/Edit profiles"
+msgstr "Gestisci i tuoi profili"
+
+#: ../../include/nav.php:90 ../../include/channel.php:941
+msgid "Edit Profile"
+msgstr "Modifica il profilo"
+
+#: ../../include/nav.php:90
+msgid "Edit your profile"
+msgstr "Modifica il tuo profilo"
+
+#: ../../include/nav.php:92
+msgid "Your photos"
+msgstr "Le tue foto"
+
+#: ../../include/nav.php:93
+msgid "Your files"
+msgstr "I tuoi file"
+
+#: ../../include/nav.php:96
+msgid "Your chatrooms"
+msgstr "Le tue chat"
+
+#: ../../include/nav.php:102 ../../include/conversation.php:1675
+msgid "Bookmarks"
+msgstr "Segnalibri"
+
+#: ../../include/nav.php:102
+msgid "Your bookmarks"
+msgstr "I tuoi segnalibri"
+
+#: ../../include/nav.php:106
+msgid "Your webpages"
+msgstr "Le tue pagine web"
+
+#: ../../include/nav.php:110
+msgid "Sign in"
+msgstr "Accedi"
+
+#: ../../include/nav.php:127
+#, php-format
+msgid "%s - click to logout"
+msgstr "%s - clicca per uscire"
+
+#: ../../include/nav.php:130
+msgid "Remote authentication"
+msgstr "Accedi dal tuo hub"
+
+#: ../../include/nav.php:130
+msgid "Click to authenticate to your home hub"
+msgstr "Clicca per farti riconoscere dal tuo hub principale"
+
+#: ../../include/nav.php:144
+msgid "Home Page"
+msgstr "Bacheca"
+
+#: ../../include/nav.php:147
+msgid "Create an account"
+msgstr "Crea un account"
+
+#: ../../include/nav.php:159
+msgid "Help and documentation"
+msgstr "Guida e documentazione"
+
+#: ../../include/nav.php:163
+msgid "Applications, utilities, links, games"
+msgstr "Applicazioni, utilità, link, giochi"
+
+#: ../../include/nav.php:165
+msgid "Search site @name, #tag, ?docs, content"
+msgstr "Cerca nel sito per @nome, #tag, ?guida o per contenuto"
+
+#: ../../include/nav.php:167
+msgid "Channel Directory"
+msgstr "Elenchi pubblici dei canali"
+
+#: ../../include/nav.php:179
+msgid "Your grid"
+msgstr "La tua rete"
+
+#: ../../include/nav.php:180
+msgid "Mark all grid notifications seen"
+msgstr "Segna come lette le notifiche della tua rete"
+
+#: ../../include/nav.php:182
+msgid "Channel home"
+msgstr "Bacheca del canale"
+
+#: ../../include/nav.php:183
+msgid "Mark all channel notifications seen"
+msgstr "Segna come lette le notifiche del canale"
+
+#: ../../include/nav.php:189
+msgid "Notices"
+msgstr "Avvisi"
+
+#: ../../include/nav.php:189
+msgid "Notifications"
+msgstr "Notifiche"
+
+#: ../../include/nav.php:190
+msgid "See all notifications"
+msgstr "Vedi tutte le notifiche"
+
+#: ../../include/nav.php:193
+msgid "Private mail"
+msgstr "Messaggi privati"
+
+#: ../../include/nav.php:194
+msgid "See all private messages"
+msgstr "Guarda tutti i messaggi privati"
+
+#: ../../include/nav.php:195
+msgid "Mark all private messages seen"
+msgstr "Segna come letti tutti i messaggi privati"
+
+#: ../../include/nav.php:201
+msgid "Event Calendar"
+msgstr "Calendario"
+
+#: ../../include/nav.php:202
+msgid "See all events"
+msgstr "Guarda tutti gli eventi"
+
+#: ../../include/nav.php:203
+msgid "Mark all events seen"
+msgstr "Marca come letti tutti gli eventi"
+
+#: ../../include/nav.php:206
+msgid "Manage Your Channels"
+msgstr "Gestisci i tuoi canali"
+
+#: ../../include/nav.php:208
+msgid "Account/Channel Settings"
+msgstr "Impostazioni dell'account e del canale"
+
+#: ../../include/nav.php:216
+msgid "Site Setup and Configuration"
+msgstr "Installazione e configurazione del sito"
+
+#: ../../include/nav.php:247 ../../include/conversation.php:851
+msgid "Loading..."
+msgstr "Caricamento in corso..."
+
+#: ../../include/nav.php:252
+msgid "@name, #tag, ?doc, content"
+msgstr "@nome, #tag, ?guida, contenuto"
+
+#: ../../include/nav.php:253
+msgid "Please wait..."
+msgstr "Attendere..."
+
+#: ../../include/connections.php:95
+msgid "New window"
+msgstr "Nuova finestra"
+
+#: ../../include/connections.php:96
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Apri l'indirizzo selezionato in una nuova scheda o finestra"
+
+#: ../../include/connections.php:214
+#, php-format
+msgid "User '%s' deleted"
+msgstr "Utente '%s' eliminato"
+
+#: ../../include/contact_widgets.php:11
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "%d invito disponibile"
+msgstr[1] "%d inviti disponibili"
+
+#: ../../include/contact_widgets.php:19
+msgid "Find Channels"
+msgstr "Ricerca canali"
+
+#: ../../include/contact_widgets.php:20
+msgid "Enter name or interest"
+msgstr "Scrivi un nome o un interesse"
+
+#: ../../include/contact_widgets.php:21
+msgid "Connect/Follow"
+msgstr "Aggiungi"
+
+#: ../../include/contact_widgets.php:22
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "Per esempio: Mario Rossi, Pesca"
+
+#: ../../include/contact_widgets.php:26
+msgid "Random Profile"
+msgstr "Profilo casuale"
+
+#: ../../include/contact_widgets.php:27
+msgid "Invite Friends"
+msgstr "Invita amici"
+
+#: ../../include/contact_widgets.php:29
+msgid "Advanced example: name=fred and country=iceland"
+msgstr "Per esempio: name=mario e country=italy"
+
+#: ../../include/contact_widgets.php:122
+#, php-format
+msgid "%d connection in common"
+msgid_plural "%d connections in common"
+msgstr[0] "%d contatto in comune"
+msgstr[1] "%d contatti in comune"
+
+#: ../../include/contact_widgets.php:127
+msgid "show more"
+msgstr "mostra tutto"
+
+#: ../../include/conversation.php:204
+#, php-format
+msgid "%1$s is now connected with %2$s"
+msgstr "%1$s adesso è connesso con %2$s"
+
+#: ../../include/conversation.php:239
+#, php-format
+msgid "%1$s poked %2$s"
+msgstr "%1$s ha mandato un poke a %2$s"
+
+#: ../../include/conversation.php:691
+#, php-format
+msgid "View %s's profile @ %s"
+msgstr "Vedi il profilo di %s @ %s"
+
+#: ../../include/conversation.php:710
+msgid "Categories:"
+msgstr "Categorie:"
+
+#: ../../include/conversation.php:711
+msgid "Filed under:"
+msgstr "Classificato come:"
+
+#: ../../include/conversation.php:738
+msgid "View in context"
+msgstr "Vedi nel contesto"
+
+#: ../../include/conversation.php:847
+msgid "remove"
+msgstr "rimuovi"
+
+#: ../../include/conversation.php:852
+msgid "Delete Selected Items"
+msgstr "Elimina gli oggetti selezionati"
+
+#: ../../include/conversation.php:948
+msgid "View Source"
+msgstr "Vedi il sorgente"
+
+#: ../../include/conversation.php:949
+msgid "Follow Thread"
+msgstr "Segui la discussione"
+
+#: ../../include/conversation.php:950
+msgid "Unfollow Thread"
+msgstr "Non seguire la discussione"
+
+#: ../../include/conversation.php:955
+msgid "Activity/Posts"
+msgstr "Attività e Post"
+
+#: ../../include/conversation.php:957
+msgid "Edit Connection"
+msgstr "Modifica il contatto"
+
+#: ../../include/conversation.php:958
+msgid "Message"
+msgstr "Messaggio"
+
+#: ../../include/conversation.php:1075
+#, php-format
+msgid "%s likes this."
+msgstr "Piace a %s."
+
+#: ../../include/conversation.php:1075
+#, php-format
+msgid "%s doesn't like this."
+msgstr "Non piace a %s."
+
+#: ../../include/conversation.php:1079
+#, php-format
+msgid "<span %1$s>%2$d people</span> like this."
+msgid_plural "<span %1$s>%2$d people</span> like this."
+msgstr[0] ""
+msgstr[1] "Piace a <span %1$s>%2$d persone</span>."
+
+#: ../../include/conversation.php:1081
+#, php-format
+msgid "<span %1$s>%2$d people</span> don't like this."
+msgid_plural "<span %1$s>%2$d people</span> don't like this."
+msgstr[0] ""
+msgstr[1] "Non piace a <span %1$s>%2$d persone</span>."
+
+#: ../../include/conversation.php:1087
+msgid "and"
+msgstr "e"
+
+#: ../../include/conversation.php:1090
+#, php-format
+msgid ", and %d other people"
+msgid_plural ", and %d other people"
+msgstr[0] ""
+msgstr[1] "e altre %d persone"
+
+#: ../../include/conversation.php:1091
+#, php-format
+msgid "%s like this."
+msgstr "Piace a %s."
+
+#: ../../include/conversation.php:1091
+#, php-format
+msgid "%s don't like this."
+msgstr "Non piace a %s."
+
+#: ../../include/conversation.php:1130
+msgid "Set your location"
+msgstr "La tua località"
+
+#: ../../include/conversation.php:1131
+msgid "Clear browser location"
+msgstr "Rimuovi la località data dal browser"
+
+#: ../../include/conversation.php:1177
+msgid "Tag term:"
+msgstr "Tag:"
+
+#: ../../include/conversation.php:1178
+msgid "Where are you right now?"
+msgstr "Dove sei ora?"
+
+#: ../../include/conversation.php:1210
+msgid "Page link name"
+msgstr "Nome del link alla pagina"
+
+#: ../../include/conversation.php:1213
+msgid "Post as"
+msgstr "Pubblica come "
+
+#: ../../include/conversation.php:1223
+msgid "Toggle voting"
+msgstr "Abilita/disabilita il voto"
+
+#: ../../include/conversation.php:1231
+msgid "Categories (optional, comma-separated list)"
+msgstr "Categorie (facoltative, lista separata da virgole)"
+
+#: ../../include/conversation.php:1254
+msgid "Set publish date"
+msgstr "Data di uscita programmata"
+
+#: ../../include/conversation.php:1258
+msgid "OK"
+msgstr "OK"
+
+#: ../../include/conversation.php:1503
+msgid "Discover"
+msgstr "Scopri"
+
+#: ../../include/conversation.php:1506
+msgid "Imported public streams"
+msgstr "Contenuti pubblici importati"
+
+#: ../../include/conversation.php:1511
+msgid "Commented Order"
+msgstr "Commenti recenti"
+
+#: ../../include/conversation.php:1514
+msgid "Sort by Comment Date"
+msgstr "Per data del commento"
+
+#: ../../include/conversation.php:1518
+msgid "Posted Order"
+msgstr "Post recenti"
+
+#: ../../include/conversation.php:1521
+msgid "Sort by Post Date"
+msgstr "Per data di creazione"
+
+#: ../../include/conversation.php:1529
+msgid "Posts that mention or involve you"
+msgstr "Post che ti riguardano"
+
+#: ../../include/conversation.php:1538
+msgid "Activity Stream - by date"
+msgstr "Elenco attività - per data"
+
+#: ../../include/conversation.php:1544
+msgid "Starred"
+msgstr "Preferiti"
+
+#: ../../include/conversation.php:1547
+msgid "Favourite Posts"
+msgstr "Post preferiti"
+
+#: ../../include/conversation.php:1554
+msgid "Spam"
+msgstr "Spam"
+
+#: ../../include/conversation.php:1557
+msgid "Posts flagged as SPAM"
+msgstr "Post marcati come spam"
+
+#: ../../include/conversation.php:1614
+msgid "Status Messages and Posts"
+msgstr "Post e messaggi di stato"
+
+#: ../../include/conversation.php:1623
+msgid "About"
+msgstr "Informazioni"
+
+#: ../../include/conversation.php:1626
+msgid "Profile Details"
+msgstr "Dettagli del profilo"
+
+#: ../../include/conversation.php:1635 ../../include/photos.php:502
+msgid "Photo Albums"
+msgstr "Album foto"
+
+#: ../../include/conversation.php:1642
+msgid "Files and Storage"
+msgstr "Archivio file"
+
+#: ../../include/conversation.php:1678
+msgid "Saved Bookmarks"
+msgstr "Segnalibri salvati"
+
+#: ../../include/conversation.php:1688
+msgid "Manage Webpages"
+msgstr "Gestisci le pagine web"
+
+#: ../../include/conversation.php:1747
+msgctxt "noun"
+msgid "Attending"
+msgid_plural "Attending"
+msgstr[0] "Partecipa"
+msgstr[1] "Partecipano"
+
+#: ../../include/conversation.php:1750
+msgctxt "noun"
+msgid "Not Attending"
+msgid_plural "Not Attending"
+msgstr[0] "Non partecipa"
+msgstr[1] "Non partecipano"
+
+#: ../../include/conversation.php:1753
+msgctxt "noun"
+msgid "Undecided"
+msgid_plural "Undecided"
+msgstr[0] "Indeciso"
+msgstr[1] "Indecisi"
+
+#: ../../include/conversation.php:1756
+msgctxt "noun"
+msgid "Agree"
+msgid_plural "Agrees"
+msgstr[0] "D'accordo"
+msgstr[1] "D'accordo"
+
+#: ../../include/conversation.php:1759
+msgctxt "noun"
+msgid "Disagree"
+msgid_plural "Disagrees"
+msgstr[0] "Non d'accordo"
+msgstr[1] "Non d'accordo"
+
+#: ../../include/conversation.php:1762
+msgctxt "noun"
+msgid "Abstain"
+msgid_plural "Abstains"
+msgstr[0] "Astenuto"
+msgstr[1] "Astenuti"
+
+#: ../../include/selectors.php:30
+msgid "Frequently"
+msgstr "Frequentemente"
+
+#: ../../include/selectors.php:31
+msgid "Hourly"
+msgstr "Ogni ora"
+
+#: ../../include/selectors.php:32
+msgid "Twice daily"
+msgstr "Due volte al giorno"
+
+#: ../../include/selectors.php:33
+msgid "Daily"
+msgstr "Ogni giorno"
+
+#: ../../include/selectors.php:34
+msgid "Weekly"
+msgstr "Ogni settimana"
+
+#: ../../include/selectors.php:35
+msgid "Monthly"
+msgstr "Ogni mese"
+
+#: ../../include/selectors.php:49
+msgid "Currently Male"
+msgstr "Al momento maschio"
+
+#: ../../include/selectors.php:49
+msgid "Currently Female"
+msgstr "Al momento femmina"
+
+#: ../../include/selectors.php:49
+msgid "Mostly Male"
+msgstr "Prevalentemente maschio"
+
+#: ../../include/selectors.php:49
+msgid "Mostly Female"
+msgstr "Prevalentemente femmina"
+
+#: ../../include/selectors.php:49
+msgid "Transgender"
+msgstr "Transgender"
+
+#: ../../include/selectors.php:49
+msgid "Intersex"
+msgstr "Intersex"
+
+#: ../../include/selectors.php:49
+msgid "Transsexual"
+msgstr "Transessuale"
+
+#: ../../include/selectors.php:49
+msgid "Hermaphrodite"
+msgstr "Ermafrodito"
+
+#: ../../include/selectors.php:49
+msgid "Neuter"
+msgstr "Neutro"
+
+#: ../../include/selectors.php:49
+msgid "Non-specific"
+msgstr "Non specificato"
+
+#: ../../include/selectors.php:49 ../../include/selectors.php:66
+#: ../../include/selectors.php:104 ../../include/selectors.php:140
+#: ../../include/permissions.php:881
+msgid "Other"
+msgstr "Altro"
+
+#: ../../include/selectors.php:49
+msgid "Undecided"
+msgstr "Indeciso"
+
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Males"
+msgstr "Maschi"
+
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Females"
+msgstr "Femmine"
+
+#: ../../include/selectors.php:85
+msgid "Gay"
+msgstr "Gay"
+
+#: ../../include/selectors.php:85
+msgid "Lesbian"
+msgstr "Lesbica"
+
+#: ../../include/selectors.php:85
+msgid "No Preference"
+msgstr "Senza preferenza"
+
+#: ../../include/selectors.php:85
+msgid "Bisexual"
+msgstr "Bisessuale"
+
+#: ../../include/selectors.php:85
+msgid "Autosexual"
+msgstr "Autosessuale"
+
+#: ../../include/selectors.php:85
+msgid "Abstinent"
+msgstr "Astinente"
+
+#: ../../include/selectors.php:85
+msgid "Virgin"
+msgstr "Vergine"
+
+#: ../../include/selectors.php:85
+msgid "Deviant"
+msgstr "Deviato"
+
+#: ../../include/selectors.php:85
+msgid "Fetish"
+msgstr "Feticista"
+
+#: ../../include/selectors.php:85
+msgid "Oodles"
+msgstr "Un sacco"
+
+#: ../../include/selectors.php:85
+msgid "Nonsexual"
+msgstr "Asessuato"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Single"
+msgstr "Single"
+
+#: ../../include/selectors.php:123
+msgid "Lonely"
+msgstr "Da solo"
+
+#: ../../include/selectors.php:123
+msgid "Available"
+msgstr "Disponibile"
+
+#: ../../include/selectors.php:123
+msgid "Unavailable"
+msgstr "Non disponibile"
+
+#: ../../include/selectors.php:123
+msgid "Has crush"
+msgstr "Ha una cotta"
+
+#: ../../include/selectors.php:123
+msgid "Infatuated"
+msgstr "Infatuato/a"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Dating"
+msgstr "Disponibile a un incontro"
+
+#: ../../include/selectors.php:123
+msgid "Unfaithful"
+msgstr "Infedele"
+
+#: ../../include/selectors.php:123
+msgid "Sex Addict"
+msgstr "Sesso-dipendente"
+
+#: ../../include/selectors.php:123
+msgid "Friends/Benefits"
+msgstr "Amici con qualcosa in più"
+
+#: ../../include/selectors.php:123
+msgid "Casual"
+msgstr "Casual"
+
+#: ../../include/selectors.php:123
+msgid "Engaged"
+msgstr "Impegnato"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Married"
+msgstr "Sposato/a"
+
+#: ../../include/selectors.php:123
+msgid "Imaginarily married"
+msgstr "Con matrimonio immaginario"
+
+#: ../../include/selectors.php:123
+msgid "Partners"
+msgstr "Partner"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Cohabiting"
+msgstr "Convivente"
+
+#: ../../include/selectors.php:123
+msgid "Common law"
+msgstr "Matrimonio regolare"
+
+#: ../../include/selectors.php:123
+msgid "Happy"
+msgstr "Felice"
+
+#: ../../include/selectors.php:123
+msgid "Not looking"
+msgstr "Non in cerca"
+
+#: ../../include/selectors.php:123
+msgid "Swinger"
+msgstr "Scambista"
+
+#: ../../include/selectors.php:123
+msgid "Betrayed"
+msgstr "Tradito/a"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Separated"
+msgstr "Separato/a"
+
+#: ../../include/selectors.php:123
+msgid "Unstable"
+msgstr "Instabile"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Divorced"
+msgstr "Divorziato/a"
+
+#: ../../include/selectors.php:123
+msgid "Imaginarily divorced"
+msgstr "Sogna il divorzio"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Widowed"
+msgstr "Vedovo/a"
+
+#: ../../include/selectors.php:123
+msgid "Uncertain"
+msgstr "Incerto/a"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "It's complicated"
+msgstr "Relazione complicata"
+
+#: ../../include/selectors.php:123
+msgid "Don't care"
+msgstr "Chi se ne frega"
+
+#: ../../include/selectors.php:123
+msgid "Ask me"
+msgstr "Chiedimelo"
+
+#: ../../include/PermissionDescription.php:31
+#: ../../include/acl_selectors.php:232
+msgid "Visible to your default audience"
+msgstr "Visibile secondo le impostazioni predefinite"
+
+#: ../../include/PermissionDescription.php:115
+#: ../../include/acl_selectors.php:268
+msgid "Only me"
+msgstr "Solo io"
+
+#: ../../include/PermissionDescription.php:116
+msgid "Public"
+msgstr "Pubblico"
+
+#: ../../include/PermissionDescription.php:117
+msgid "Anybody in the $Projectname network"
+msgstr "Tutti sulla rete $Projectname"
+
+#: ../../include/PermissionDescription.php:118
+#, php-format
+msgid "Any account on %s"
+msgstr "Tutti gli account su %s"
+
+#: ../../include/PermissionDescription.php:119
+msgid "Any of my connections"
+msgstr "Chiunque tra i miei contatti"
+
+#: ../../include/PermissionDescription.php:120
+msgid "Only connections I specifically allow"
+msgstr "Solo chi riceve il mio permesso"
+
+#: ../../include/PermissionDescription.php:121
+msgid "Anybody authenticated (could include visitors from other networks)"
+msgstr "Chiunque sia autenticato (inclusi visitatori di altre reti)"
+
+#: ../../include/PermissionDescription.php:122
+msgid "Any connections including those who haven't yet been approved"
+msgstr "Tutti i contatti inclusi quelli non ancora approvati"
+
+#: ../../include/PermissionDescription.php:161
+msgid ""
+"This is your default setting for the audience of your normal stream, and "
+"posts."
+msgstr ""
+
+#: ../../include/PermissionDescription.php:162
+msgid ""
+"This is your default setting for who can view your default channel profile"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:163
+msgid "This is your default setting for who can view your connections"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:164
+msgid ""
+"This is your default setting for who can view your file storage and photos"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:165
+msgid "This is your default setting for the audience of your webpages"
+msgstr ""
+
+#: ../../include/account.php:28
+msgid "Not a valid email address"
+msgstr "Email non valida"
+
+#: ../../include/account.php:30
+msgid "Your email domain is not among those allowed on this site"
+msgstr "Il dominio della tua email attualmente non è permesso su questo sito"
+
+#: ../../include/account.php:36
+msgid "Your email address is already registered at this site."
+msgstr "La tua email è già registrata su questo sito."
+
+#: ../../include/account.php:68
+msgid "An invitation is required."
+msgstr "È necessario un invito."
+
+#: ../../include/account.php:72
+msgid "Invitation could not be verified."
+msgstr "L'invito non può essere verificato."
+
+#: ../../include/account.php:122
+msgid "Please enter the required information."
+msgstr "Inserisci le informazioni richieste."
+
+#: ../../include/account.php:189
+msgid "Failed to store account information."
+msgstr "Non è stato possibile salvare le informazioni del tuo account."
+
+#: ../../include/account.php:249
+#, php-format
+msgid "Registration confirmation for %s"
+msgstr "Registrazione di %s confermata"
+
+#: ../../include/account.php:315
+#, php-format
+msgid "Registration request at %s"
+msgstr "Richiesta di registrazione su %s"
+
+#: ../../include/account.php:317 ../../include/account.php:344
+#: ../../include/account.php:404 ../../include/network.php:1871
+msgid "Administrator"
+msgstr "Amministratore"
+
+#: ../../include/account.php:339
+msgid "your registration password"
+msgstr "la password di registrazione"
+
+#: ../../include/account.php:342 ../../include/account.php:402
+#, php-format
+msgid "Registration details for %s"
+msgstr "Dettagli della registrazione di %s"
+
+#: ../../include/account.php:414
+msgid "Account approved."
+msgstr "Account approvato."
+
+#: ../../include/account.php:454
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Registrazione revocata per %s"
+
+#: ../../include/account.php:506
+msgid "Account verified. Please login."
+msgstr "Registrazione verificata. Adesso puoi effettuare login."
+
+#: ../../include/account.php:723 ../../include/account.php:725
+msgid "Click here to upgrade."
+msgstr "Clicca qui per aggiornare."
+
+#: ../../include/account.php:731
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Questa operazione supera i limiti del tuo abbonamento."
+
+#: ../../include/account.php:736
+msgid "This action is not available under your subscription plan."
+msgstr "Questa operazione non è prevista dal tuo abbonamento."
+
+#: ../../include/attach.php:247 ../../include/attach.php:333
+msgid "Item was not found."
+msgstr "Elemento non trovato."
+
+#: ../../include/attach.php:497
+msgid "No source file."
+msgstr "Nessun file di origine."
+
+#: ../../include/attach.php:519
+msgid "Cannot locate file to replace"
+msgstr "Il file da sostituire non è stato trovato"
+
+#: ../../include/attach.php:537
+msgid "Cannot locate file to revise/update"
+msgstr "Il file da aggiornare non è stato trovato"
+
+#: ../../include/attach.php:672
+#, php-format
+msgid "File exceeds size limit of %d"
+msgstr "Il file supera la dimensione massima di %d"
+
+#: ../../include/attach.php:686
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+msgstr "Hai raggiunto il limite complessivo di %1$.0f Mbytes per gli allegati."
+
+#: ../../include/attach.php:842
+msgid "File upload failed. Possible system limit or action terminated."
+msgstr "Caricamento file fallito, potrebbe essere stato interrotto o potrebbe aver superato lo spazio assegnato."
+
+#: ../../include/attach.php:855
+msgid "Stored file could not be verified. Upload failed."
+msgstr "Il file non può essere verificato. Caricamento fallito."
+
+#: ../../include/attach.php:909 ../../include/attach.php:925
+msgid "Path not available."
+msgstr "Percorso non disponibile."
+
+#: ../../include/attach.php:971 ../../include/attach.php:1123
+msgid "Empty pathname"
+msgstr "Il percorso del file è vuoto"
+
+#: ../../include/attach.php:997
+msgid "duplicate filename or path"
+msgstr "il file o il percorso del file è duplicato"
+
+#: ../../include/attach.php:1019
+msgid "Path not found."
+msgstr "Percorso del file non trovato."
+
+#: ../../include/attach.php:1077
+msgid "mkdir failed."
+msgstr "mkdir fallito."
+
+#: ../../include/attach.php:1081
+msgid "database storage failed."
+msgstr "scrittura su database fallita."
+
+#: ../../include/attach.php:1129
+msgid "Empty path"
+msgstr "La posizione è vuota"
+
+#: ../../include/channel.php:32
+msgid "Unable to obtain identity information from database"
+msgstr "Impossibile ottenere le informazioni di identificazione dal database"
+
+#: ../../include/channel.php:66
+msgid "Empty name"
+msgstr "Nome vuoto"
+
+#: ../../include/channel.php:69
+msgid "Name too long"
+msgstr "Nome troppo lungo"
+
+#: ../../include/channel.php:180
+msgid "No account identifier"
+msgstr "Account senza identificativo"
+
+#: ../../include/channel.php:192
+msgid "Nickname is required."
+msgstr "Il nome dell'account è obbligatorio."
+
+#: ../../include/channel.php:206
+msgid "Reserved nickname. Please choose another."
+msgstr "Nome utente riservato. Per favore scegline un altro."
+
+#: ../../include/channel.php:211
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "Il nome dell'account è già in uso oppure ha dei caratteri non supportati."
+
+#: ../../include/channel.php:287
+msgid "Unable to retrieve created identity"
+msgstr "Impossibile caricare l'identità creata"
+
+#: ../../include/channel.php:345
+msgid "Default Profile"
+msgstr "Profilo predefinito"
+
+#: ../../include/channel.php:791
+msgid "Requested channel is not available."
+msgstr "Il canale che cerchi non è disponibile."
+
+#: ../../include/channel.php:938
+msgid "Create New Profile"
+msgstr "Crea un nuovo profilo"
+
+#: ../../include/channel.php:958
+msgid "Visible to everybody"
+msgstr "Visibile a tutti"
+
+#: ../../include/channel.php:1031 ../../include/channel.php:1142
+msgid "Gender:"
+msgstr "Sesso:"
+
+#: ../../include/channel.php:1032 ../../include/channel.php:1186
+msgid "Status:"
+msgstr "Stato:"
+
+#: ../../include/channel.php:1033 ../../include/channel.php:1197
+msgid "Homepage:"
+msgstr "Home page:"
+
+#: ../../include/channel.php:1034
+msgid "Online Now"
+msgstr "Online adesso"
+
+#: ../../include/channel.php:1147
+msgid "Like this channel"
+msgstr "Mi piace questo canale"
+
+#: ../../include/channel.php:1171
+msgid "j F, Y"
+msgstr "j F Y"
+
+#: ../../include/channel.php:1172
+msgid "j F"
+msgstr "j F"
+
+#: ../../include/channel.php:1179
+msgid "Birthday:"
+msgstr "Compleanno:"
+
+#: ../../include/channel.php:1192
+#, php-format
+msgid "for %1$d %2$s"
+msgstr "per %1$d %2$s"
+
+#: ../../include/channel.php:1195
+msgid "Sexual Preference:"
+msgstr "Preferenze sessuali:"
+
+#: ../../include/channel.php:1201
+msgid "Tags:"
+msgstr "Tag:"
+
+#: ../../include/channel.php:1203
+msgid "Political Views:"
+msgstr "Orientamento politico:"
+
+#: ../../include/channel.php:1205
+msgid "Religion:"
+msgstr "Religione:"
+
+#: ../../include/channel.php:1209
+msgid "Hobbies/Interests:"
+msgstr "Interessi e hobby:"
+
+#: ../../include/channel.php:1211
+msgid "Likes:"
+msgstr "Mi piace:"
+
+#: ../../include/channel.php:1213
+msgid "Dislikes:"
+msgstr "Non mi piace:"
+
+#: ../../include/channel.php:1215
+msgid "Contact information and Social Networks:"
+msgstr "Contatti e social network:"
+
+#: ../../include/channel.php:1217
+msgid "My other channels:"
+msgstr "I miei altri canali:"
+
+#: ../../include/channel.php:1219
+msgid "Musical interests:"
+msgstr "Gusti musicali:"
+
+#: ../../include/channel.php:1221
+msgid "Books, literature:"
+msgstr "Libri, letteratura:"
+
+#: ../../include/channel.php:1223
+msgid "Television:"
+msgstr "Televisione:"
+
+#: ../../include/channel.php:1225
+msgid "Film/dance/culture/entertainment:"
+msgstr "Film, danza, cultura, intrattenimento:"
+
+#: ../../include/channel.php:1227
+msgid "Love/Romance:"
+msgstr "Amore:"
+
+#: ../../include/channel.php:1229
+msgid "Work/employment:"
+msgstr "Lavoro:"
+
+#: ../../include/channel.php:1231
+msgid "School/education:"
+msgstr "Scuola:"
+
+#: ../../include/channel.php:1251
+msgid "Like this thing"
+msgstr "Mi piace"
+
+#: ../../include/features.php:48
+msgid "General Features"
+msgstr "Funzionalità di base"
+
+#: ../../include/features.php:50
+msgid "Content Expiration"
+msgstr "Scadenza"
+
+#: ../../include/features.php:50
+msgid "Remove posts/comments and/or private messages at a future time"
+msgstr "Elimina i post, i commenti o i messaggi privati dopo un lasso di tempo"
+
+#: ../../include/features.php:51
+msgid "Multiple Profiles"
+msgstr "Profili multipli"
+
+#: ../../include/features.php:51
+msgid "Ability to create multiple profiles"
+msgstr "Abilitazione a creare profili multipli"
+
+#: ../../include/features.php:52
+msgid "Advanced Profiles"
+msgstr "Profili avanzati"
+
+#: ../../include/features.php:52
+msgid "Additional profile sections and selections"
+msgstr "Informazioni aggiuntive del profilo"
+
+#: ../../include/features.php:53
+msgid "Profile Import/Export"
+msgstr "Importa/esporta il profilo"
+
+#: ../../include/features.php:53
+msgid "Save and load profile details across sites/channels"
+msgstr "Salva o ripristina le informazioni del profilo su siti diversi"
+
+#: ../../include/features.php:54
+msgid "Web Pages"
+msgstr "Pagine web"
+
+#: ../../include/features.php:54
+msgid "Provide managed web pages on your channel"
+msgstr "Attiva la creazione di pagine web sul tuo canale"
+
+#: ../../include/features.php:55
+msgid "Hide Rating"
+msgstr "Nascondi le valutazioni"
+
+#: ../../include/features.php:55
+msgid ""
+"Hide the rating buttons on your channel and profile pages. Note: People can "
+"still rate you somewhere else."
+msgstr "Nascondi i bottoni delle valutazioni sul tuo canale e sul profilo. Nota: le persone potranno comunque esprimere una valutazione altrove."
+
+#: ../../include/features.php:56
+msgid "Private Notes"
+msgstr "Note private"
+
+#: ../../include/features.php:56
+msgid "Enables a tool to store notes and reminders (note: not encrypted)"
+msgstr "Abilita il riquadro per scrivere annotazioni (in chiaro)"
+
+#: ../../include/features.php:57
+msgid "Navigation Channel Select"
+msgstr "Scegli il canale attivo dal menu"
+
+#: ../../include/features.php:57
+msgid "Change channels directly from within the navigation dropdown menu"
+msgstr "Scegli il canale attivo direttamente dal menu di navigazione"
+
+#: ../../include/features.php:58
+msgid "Photo Location"
+msgstr "Posizione geografica"
+
+#: ../../include/features.php:58
+msgid "If location data is available on uploaded photos, link this to a map."
+msgstr "Collega la foto a una mappa quando contiene indicazioni geografiche."
+
+#: ../../include/features.php:59
+msgid "Access Controlled Chatrooms"
+msgstr "Chat ad accesso riservato"
+
+#: ../../include/features.php:59
+msgid "Provide chatrooms and chat services with access control."
+msgstr "Il servizio di chat con accesso riservato"
+
+#: ../../include/features.php:60
+msgid "Smart Birthdays"
+msgstr "Compleanni intelligenti"
+
+#: ../../include/features.php:60
+msgid ""
+"Make birthday events timezone aware in case your friends are scattered "
+"across the planet."
+msgstr "I compleanni saranno segnalati in base al fuso orario, utile se hai amici sparsi per il mondo."
+
+#: ../../include/features.php:61
+msgid "Expert Mode"
+msgstr "Modalità esperto"
+
+#: ../../include/features.php:61
+msgid "Enable Expert Mode to provide advanced configuration options"
+msgstr "Abilita la modalità esperto per vedere le opzioni di configurazione avanzate"
+
+#: ../../include/features.php:62
+msgid "Premium Channel"
+msgstr "Canale premium"
+
+#: ../../include/features.php:62
+msgid ""
+"Allows you to set restrictions and terms on those that connect with your "
+"channel"
+msgstr "Ti permette di impostare restrizioni e termini d'uso per il canale"
+
+#: ../../include/features.php:67
+msgid "Post Composition Features"
+msgstr "Modalità di scrittura post"
+
+#: ../../include/features.php:70
+msgid "Large Photos"
+msgstr "Foto grandi"
+
+#: ../../include/features.php:70
+msgid ""
+"Include large (1024px) photo thumbnails in posts. If not enabled, use small "
+"(640px) photo thumbnails"
+msgstr "Includi anteprime grandi per le foto dei tuoi post (1024px). Altrimenti saranno mostrate anteprime più piccole (640px)"
+
+#: ../../include/features.php:71
+msgid "Automatically import channel content from other channels or feeds"
+msgstr "Importa automaticamente il contenuto del canale da altri canali o feed"
+
+#: ../../include/features.php:72
+msgid "Even More Encryption"
+msgstr "Cifratura addizionale"
+
+#: ../../include/features.php:72
+msgid ""
+"Allow optional encryption of content end-to-end with a shared secret key"
+msgstr "Rendi possibile la crifratura aggiuntiva tra mittente e destinatario usando una parola chiave conosciuta a entrambi"
+
+#: ../../include/features.php:73
+msgid "Enable Voting Tools"
+msgstr "Permetti i post con votazione"
+
+#: ../../include/features.php:73
+msgid "Provide a class of post which others can vote on"
+msgstr "Rende possibile la creazione di post in cui sarà possibile votare"
+
+#: ../../include/features.php:74
+msgid "Delayed Posting"
+msgstr "Pubblicazione ritardata"
+
+#: ../../include/features.php:74
+msgid "Allow posts to be published at a later date"
+msgstr "Per scegliere una data e un'ora a cui far uscire i post"
+
+#: ../../include/features.php:75
+msgid "Suppress Duplicate Posts/Comments"
+msgstr "Impedisci post e commenti duplicati"
+
+#: ../../include/features.php:75
+msgid ""
+"Prevent posts with identical content to be published with less than two "
+"minutes in between submissions."
+msgstr "Scarta post e commenti se sono identici ad altri inviati meno di due minuti prima."
+
+#: ../../include/features.php:81
+msgid "Network and Stream Filtering"
+msgstr "Filtraggio dei contenuti"
+
+#: ../../include/features.php:82
+msgid "Search by Date"
+msgstr "Ricerca per data"
+
+#: ../../include/features.php:82
+msgid "Ability to select posts by date ranges"
+msgstr "Per selezionare i post in un intervallo tra date"
+
+#: ../../include/features.php:83 ../../include/group.php:311
+msgid "Privacy Groups"
+msgstr "Gruppi di canali"
+
+#: ../../include/features.php:83
+msgid "Enable management and selection of privacy groups"
+msgstr "Abilita i gruppi di canali"
+
+#: ../../include/features.php:84
+msgid "Save search terms for re-use"
+msgstr "Salva i termini delle ricerche per poterle ripetere"
+
+#: ../../include/features.php:85
+msgid "Network Personal Tab"
+msgstr "Attività personale"
+
+#: ../../include/features.php:85
+msgid "Enable tab to display only Network posts that you've interacted on"
+msgstr "Abilita il link per mostrare solamente i contenuti con cui hai interagito"
+
+#: ../../include/features.php:86
+msgid "Network New Tab"
+msgstr "Contenuti nuovi"
+
+#: ../../include/features.php:86
+msgid "Enable tab to display all new Network activity"
+msgstr "Abilita il link per visualizzare solo i nuovi contenuti"
+
+#: ../../include/features.php:87
+msgid "Affinity Tool"
+msgstr "Filtro per affinità"
+
+#: ../../include/features.php:87
+msgid "Filter stream activity by depth of relationships"
+msgstr "Permette di selezionare i contenuti in base al livello di amicizia"
+
+#: ../../include/features.php:88
+msgid "Connection Filtering"
+msgstr "Filtro sui contatti"
+
+#: ../../include/features.php:88
+msgid "Filter incoming posts from connections based on keywords/content"
+msgstr "Filtra i post che ricevi con parole chiave"
+
+#: ../../include/features.php:89
+msgid "Show channel suggestions"
+msgstr "Mostra alcuni canali che potrebbero interessarti"
+
+#: ../../include/features.php:94
+msgid "Post/Comment Tools"
+msgstr "Gestione post e commenti"
+
+#: ../../include/features.php:95
+msgid "Community Tagging"
+msgstr "Tag della comunità"
+
+#: ../../include/features.php:95
+msgid "Ability to tag existing posts"
+msgstr "Permetti l'aggiunta di tag su post già esistenti"
+
+#: ../../include/features.php:96
+msgid "Post Categories"
+msgstr "Categorie dei post"
+
+#: ../../include/features.php:96
+msgid "Add categories to your posts"
+msgstr "Abilita le categorie per i tuoi post"
+
+#: ../../include/features.php:97
+msgid "Emoji Reactions"
+msgstr ""
+
+#: ../../include/features.php:97
+msgid "Add emoji reaction ability to posts"
+msgstr ""
+
+#: ../../include/features.php:98
+msgid "Ability to file posts under folders"
+msgstr "Abilita la raccolta dei tuoi articoli in cartelle"
+
+#: ../../include/features.php:99
+msgid "Dislike Posts"
+msgstr "Non mi piace"
+
+#: ../../include/features.php:99
+msgid "Ability to dislike posts/comments"
+msgstr "Abilità la funzionalità \"non mi piace\" per i tuoi post"
+
+#: ../../include/features.php:100
+msgid "Star Posts"
+msgstr "Post con stella"
+
+#: ../../include/features.php:100
+msgid "Ability to mark special posts with a star indicator"
+msgstr "Mostra la stella per segnare i post preferiti"
+
+#: ../../include/features.php:101
+msgid "Tag Cloud"
+msgstr "Nuvola di tag"
+
+#: ../../include/features.php:101
+msgid "Provide a personal tag cloud on your channel page"
+msgstr "Mostra la nuvola dei tag che usi di più sulla pagina del tuo canale"
+
+#: ../../include/oembed.php:324
+msgid "Embedded content"
+msgstr "Contenuti incorporati"
+
+#: ../../include/oembed.php:333
+msgid "Embedding disabled"
+msgstr "Disabilita la creazione di contenuti incorporati"
+
+#: ../../include/acl_selectors.php:271
+msgid "Who can see this?"
+msgstr "Chi può vederlo?"
+
+#: ../../include/acl_selectors.php:272
+msgid "Custom selection"
+msgstr "Selezione personalizzata"
+
+#: ../../include/acl_selectors.php:273
+msgid ""
+"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit"
+" the scope of \"Show\"."
+msgstr ""
+
+#: ../../include/acl_selectors.php:274
+msgid "Show"
+msgstr "Mostra"
+
+#: ../../include/acl_selectors.php:275
+msgid "Don't show"
+msgstr "Non mostrare"
+
+#: ../../include/acl_selectors.php:281
+msgid "Other networks and post services"
+msgstr "Invio ad altre reti o a siti esterni"
+
+#: ../../include/acl_selectors.php:311
+#, php-format
+msgid ""
+"Post permissions %s cannot be changed %s after a post is shared.</br />These"
+" permissions set who is allowed to view the post."
+msgstr ""
+
+#: ../../include/auth.php:105
+msgid "Logged out."
+msgstr "Uscita effettuata."
+
+#: ../../include/auth.php:212
+msgid "Failed authentication"
+msgstr "Autenticazione fallita"
+
+#: ../../include/datetime.php:135
+msgid "Birthday"
+msgstr "Compleanno"
+
+#: ../../include/datetime.php:137
+msgid "Age: "
+msgstr "Età:"
+
+#: ../../include/datetime.php:139
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "AAAA-MM-GG oppure MM-GG"
+
+#: ../../include/datetime.php:272 ../../boot.php:2470
+msgid "never"
+msgstr "mai"
+
+#: ../../include/datetime.php:278
+msgid "less than a second ago"
+msgstr "meno di un secondo fa"
+
+#: ../../include/datetime.php:296
+#, php-format
+msgctxt "e.g. 22 hours ago, 1 minute ago"
+msgid "%1$d %2$s ago"
+msgstr "%1$d %2$s fa"
+
+#: ../../include/datetime.php:307
+msgctxt "relative_date"
+msgid "year"
+msgid_plural "years"
+msgstr[0] "anno"
+msgstr[1] "anni"
+
+#: ../../include/datetime.php:310
+msgctxt "relative_date"
+msgid "month"
+msgid_plural "months"
+msgstr[0] "mese"
+msgstr[1] "mesi"
+
+#: ../../include/datetime.php:313
+msgctxt "relative_date"
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "settimana"
+msgstr[1] "settimane"
+
+#: ../../include/datetime.php:316
+msgctxt "relative_date"
+msgid "day"
+msgid_plural "days"
+msgstr[0] "giorno"
+msgstr[1] "giorni"
+
+#: ../../include/datetime.php:319
+msgctxt "relative_date"
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "ora"
+msgstr[1] "ore"
+
+#: ../../include/datetime.php:322
+msgctxt "relative_date"
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minuto"
+msgstr[1] "minuti"
+
+#: ../../include/datetime.php:325
+msgctxt "relative_date"
+msgid "second"
+msgid_plural "seconds"
+msgstr[0] "secondo"
+msgstr[1] "secondi"
+
+#: ../../include/datetime.php:562
+#, php-format
+msgid "%1$s's birthday"
+msgstr "Compleanno di %1$s"
+
+#: ../../include/datetime.php:563
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Buon compleanno %1$s"
+
+#: ../../include/group.php:26
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
+msgstr "Un gruppo di canali con lo stesso nome esisteva in precedenza ed è stato ripristinato. I vecchi permessi saranno applicati ai nuovi canali. Se non vuoi che ciò accada, devi creare un gruppo con un nome diverso."
+
+#: ../../include/group.php:248
+msgid "Add new connections to this privacy group"
+msgstr "Aggiungi nuovi contatti a questo gruppo di canali"
+
+#: ../../include/group.php:289
+msgid "edit"
+msgstr "modifica"
+
+#: ../../include/group.php:312
+msgid "Edit group"
+msgstr "Modifica il gruppo"
+
+#: ../../include/group.php:313
+msgid "Add privacy group"
+msgstr "Crea un gruppo di canali"
+
+#: ../../include/group.php:314
+msgid "Channels not in any privacy group"
+msgstr "Canali che non sono in nessun gruppo"
+
+#: ../../include/js_strings.php:5
+msgid "Delete this item?"
+msgstr "Eliminare questo elemento?"
+
+#: ../../include/js_strings.php:8
+msgid "[-] show less"
+msgstr "[-] riduci"
+
+#: ../../include/js_strings.php:9
+msgid "[+] expand"
+msgstr "[+] mostra tutto"
+
+#: ../../include/js_strings.php:10
+msgid "[-] collapse"
+msgstr "[-] riduci"
+
+#: ../../include/js_strings.php:11
+msgid "Password too short"
+msgstr "Password troppo corta"
+
+#: ../../include/js_strings.php:12
+msgid "Passwords do not match"
+msgstr "Le password non corrispondono"
+
+#: ../../include/js_strings.php:13
+msgid "everybody"
+msgstr "tutti"
+
+#: ../../include/js_strings.php:14
+msgid "Secret Passphrase"
+msgstr "Parola chiave per decifrare"
+
+#: ../../include/js_strings.php:15
+msgid "Passphrase hint"
+msgstr "Suggerimento per la parola chiave"
+
+#: ../../include/js_strings.php:16
+msgid "Notice: Permissions have changed but have not yet been submitted."
+msgstr "Nota: i permessi sono stati modificati ma non ancora salvati."
+
+#: ../../include/js_strings.php:17
+msgid "close all"
+msgstr "chiudi tutto"
+
+#: ../../include/js_strings.php:18
+msgid "Nothing new here"
+msgstr "Niente di nuovo qui"
+
+#: ../../include/js_strings.php:19
+msgid "Rate This Channel (this is public)"
+msgstr "Valuta questo canale (visibile a tutti)"
+
+#: ../../include/js_strings.php:21
+msgid "Describe (optional)"
+msgstr "Descrizione (facoltativa)"
+
+#: ../../include/js_strings.php:23
+msgid "Please enter a link URL"
+msgstr "Inserisci l'URL di un link"
+
+#: ../../include/js_strings.php:24
+msgid "Unsaved changes. Are you sure you wish to leave this page?"
+msgstr "Non hai salvato i cambiamenti. Vuoi davvero lasciare questa pagina?"
+
+#: ../../include/js_strings.php:27
+msgid "timeago.prefixAgo"
+msgstr "timeago.prefixAgo"
+
+#: ../../include/js_strings.php:28
+msgid "timeago.prefixFromNow"
+msgstr "timeago.prefixFromNow"
+
+#: ../../include/js_strings.php:29
+msgid "ago"
+msgstr "fa"
+
+#: ../../include/js_strings.php:30
+msgid "from now"
+msgstr "da adesso"
+
+#: ../../include/js_strings.php:31
+msgid "less than a minute"
+msgstr "meno di un minuto"
+
+#: ../../include/js_strings.php:32
+msgid "about a minute"
+msgstr "circa un minuto"
+
+#: ../../include/js_strings.php:33
+#, php-format
+msgid "%d minutes"
+msgstr "%d minuti"
+
+#: ../../include/js_strings.php:34
+msgid "about an hour"
+msgstr "circa un’ora"
+
+#: ../../include/js_strings.php:35
+#, php-format
+msgid "about %d hours"
+msgstr "circa %d ore"
+
+#: ../../include/js_strings.php:36
+msgid "a day"
+msgstr "un giorno"
+
+#: ../../include/js_strings.php:37
+#, php-format
+msgid "%d days"
+msgstr "%d giorni"
+
+#: ../../include/js_strings.php:38
+msgid "about a month"
+msgstr "circa un mese"
+
+#: ../../include/js_strings.php:39
+#, php-format
+msgid "%d months"
+msgstr "%d mesi"
+
+#: ../../include/js_strings.php:40
+msgid "about a year"
+msgstr "circa un anno"
+
+#: ../../include/js_strings.php:41
+#, php-format
+msgid "%d years"
+msgstr "%d anni"
+
+#: ../../include/js_strings.php:42
+msgid " "
+msgstr " "
+
+#: ../../include/js_strings.php:43
+msgid "timeago.numbers"
+msgstr "timeago.numbers"
+
+#: ../../include/js_strings.php:49
+msgctxt "long"
+msgid "May"
+msgstr "maggio"
+
+#: ../../include/js_strings.php:57
+msgid "Jan"
+msgstr "Gen"
+
+#: ../../include/js_strings.php:58
+msgid "Feb"
+msgstr "Feb"
+
+#: ../../include/js_strings.php:59
+msgid "Mar"
+msgstr "Mar"
+
+#: ../../include/js_strings.php:60
+msgid "Apr"
+msgstr "Apr"
+
+#: ../../include/js_strings.php:61
+msgctxt "short"
+msgid "May"
+msgstr "maggio"
+
+#: ../../include/js_strings.php:62
+msgid "Jun"
+msgstr "Mag"
+
+#: ../../include/js_strings.php:63
+msgid "Jul"
+msgstr "Giu"
+
+#: ../../include/js_strings.php:64
+msgid "Aug"
+msgstr "Ago"
+
+#: ../../include/js_strings.php:65
+msgid "Sep"
+msgstr "Set"
+
+#: ../../include/js_strings.php:66
+msgid "Oct"
+msgstr "Ott"
+
+#: ../../include/js_strings.php:67
+msgid "Nov"
+msgstr "Nov"
+
+#: ../../include/js_strings.php:68
+msgid "Dec"
+msgstr "Dic"
+
+#: ../../include/js_strings.php:76
+msgid "Sun"
+msgstr "Dom"
+
+#: ../../include/js_strings.php:77
+msgid "Mon"
+msgstr "Lun"
+
+#: ../../include/js_strings.php:78
+msgid "Tue"
+msgstr "Mar"
+
+#: ../../include/js_strings.php:79
+msgid "Wed"
+msgstr "Mer"
+
+#: ../../include/js_strings.php:80
+msgid "Thu"
+msgstr "Gio"
+
+#: ../../include/js_strings.php:81
+msgid "Fri"
+msgstr "Ven"
+
+#: ../../include/js_strings.php:82
+msgid "Sat"
+msgstr "Sab"
+
+#: ../../include/js_strings.php:83
+msgctxt "calendar"
+msgid "today"
+msgstr "oggi"
+
+#: ../../include/js_strings.php:84
+msgctxt "calendar"
+msgid "month"
+msgstr "mese"
+
+#: ../../include/js_strings.php:85
+msgctxt "calendar"
+msgid "week"
+msgstr "settimana"
+
+#: ../../include/js_strings.php:86
+msgctxt "calendar"
+msgid "day"
+msgstr "giorno"
+
+#: ../../include/js_strings.php:87
+msgctxt "calendar"
+msgid "All day"
+msgstr "Tutto il giorno"
+
+#: ../../include/network.php:657
+msgid "view full size"
+msgstr "guarda nelle dimensioni reali"
+
+#: ../../include/network.php:1885
+msgid "No Subject"
+msgstr "Nessun titolo"
+
+#: ../../include/network.php:2146 ../../include/network.php:2147
+msgid "Friendica"
+msgstr "Friendica"
+
+#: ../../include/network.php:2148
+msgid "OStatus"
+msgstr "OStatus"
+
+#: ../../include/network.php:2149
+msgid "GNU-Social"
+msgstr "GNU-Social"
+
+#: ../../include/network.php:2150
+msgid "RSS/Atom"
+msgstr "RSS/Atom"
+
+#: ../../include/network.php:2152
+msgid "Diaspora"
+msgstr "Diaspora"
+
+#: ../../include/network.php:2153
+msgid "Facebook"
+msgstr "Facebook"
+
+#: ../../include/network.php:2154
+msgid "Zot"
+msgstr "Zot"
+
+#: ../../include/network.php:2155
+msgid "LinkedIn"
+msgstr "LinkedIn"
+
+#: ../../include/network.php:2156
+msgid "XMPP/IM"
+msgstr "XMPP/IM"
+
+#: ../../include/network.php:2157
+msgid "MySpace"
+msgstr "MySpace"
+
+#: ../../include/photos.php:110
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "L'immagine supera il limite massimo di %lu bytes"
+
+#: ../../include/photos.php:117
+msgid "Image file is empty."
+msgstr "Il file dell'immagine è vuoto."
+
+#: ../../include/photos.php:255
+msgid "Photo storage failed."
+msgstr "Impossibile salvare la foto."
+
+#: ../../include/photos.php:295
+msgid "a new photo"
+msgstr "una nuova foto"
+
+#: ../../include/photos.php:299
+#, php-format
+msgctxt "photo_upload"
+msgid "%1$s posted %2$s to %3$s"
+msgstr "%1$s ha pubblicato %2$s su %3$s"
+
+#: ../../include/photos.php:506
+msgid "Upload New Photos"
+msgstr "Carica nuove foto"
+
+#: ../../include/zot.php:699
+msgid "Invalid data packet"
+msgstr "Dati ricevuti non validi"
+
+#: ../../include/zot.php:715
+msgid "Unable to verify channel signature"
+msgstr "Impossibile verificare la firma elettronica del canale"
+
+#: ../../include/zot.php:2363
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr "Impossibile verificare la firma elettronica del sito %s"
+
+#: ../../include/zot.php:3712
+msgid "invalid target signature"
+msgstr "la firma ricevuta non è valida"
+
+#: ../../include/page_widgets.php:6
+msgid "New Page"
+msgstr "Nuova pagina web"
+
+#: ../../include/page_widgets.php:43
+msgid "Title"
+msgstr "Titolo"
+
+#: ../../include/permissions.php:26
+msgid "Can view my normal stream and posts"
+msgstr "Può vedere i miei contenuti e i post normali"
+
+#: ../../include/permissions.php:27
+msgid "Can view my default channel profile"
+msgstr "Può vedere il profilo predefinito del canale"
+
+#: ../../include/permissions.php:28
+msgid "Can view my connections"
+msgstr "Può vedere i miei contatti"
+
+#: ../../include/permissions.php:29
+msgid "Can view my file storage and photos"
+msgstr "Può vedere il mio archivio file e foto"
+
+#: ../../include/permissions.php:30
+msgid "Can view my webpages"
+msgstr "Può vedere le mie pagine web"
+
+#: ../../include/permissions.php:33
+msgid "Can send me their channel stream and posts"
+msgstr "È tra i canali che seguo"
+
+#: ../../include/permissions.php:34
+msgid "Can post on my channel page (\"wall\")"
+msgstr "Può scrivere sulla bacheca del mio canale"
+
+#: ../../include/permissions.php:35
+msgid "Can comment on or like my posts"
+msgstr "Può commentare o aggiungere \"mi piace\" ai miei post"
+
+#: ../../include/permissions.php:36
+msgid "Can send me private mail messages"
+msgstr "Può inviarmi messaggi privati"
+
+#: ../../include/permissions.php:37
+msgid "Can like/dislike stuff"
+msgstr "Può aggiungere \"mi piace\" a tutto il resto"
+
+#: ../../include/permissions.php:37
+msgid "Profiles and things other than posts/comments"
+msgstr "Può aggiungere \"mi piace\" a tutto ciò che non riguarda i post, come per esempio il profilo"
+
+#: ../../include/permissions.php:39
+msgid "Can forward to all my channel contacts via post @mentions"
+msgstr "Può inoltrare post a tutti i contatti del canale tramite una @menzione"
+
+#: ../../include/permissions.php:39
+msgid "Advanced - useful for creating group forum channels"
+msgstr "Impostazione avanzata - utile per creare un canale-forum di discussione"
+
+#: ../../include/permissions.php:40
+msgid "Can chat with me (when available)"
+msgstr "Può aprire una chat con me (se disponibile)"
+
+#: ../../include/permissions.php:41
+msgid "Can write to my file storage and photos"
+msgstr "Può modificare il mio archivio file e foto"
+
+#: ../../include/permissions.php:42
+msgid "Can edit my webpages"
+msgstr "Può modificare le mie pagine web"
+
+#: ../../include/permissions.php:44
+msgid "Can source my public posts in derived channels"
+msgstr "Può usare i miei post pubblici per creare canali derivati"
+
+#: ../../include/permissions.php:44
+msgid "Somewhat advanced - very useful in open communities"
+msgstr "Piuttosto avanzato - molto utile nelle comunità aperte"
+
+#: ../../include/permissions.php:46
+msgid "Can administer my channel resources"
+msgstr "Può amministrare i contenuti del mio canale"
+
+#: ../../include/permissions.php:46
+msgid ""
+"Extremely advanced. Leave this alone unless you know what you are doing"
+msgstr "Impostazione pericolosa - lasciare il valore predefinito se non si è assolutamente sicuri"
+
+#: ../../include/permissions.php:877
+msgid "Social Networking"
+msgstr "Social network"
+
+#: ../../include/permissions.php:877
+msgid "Social - Mostly Public"
+msgstr "Social - Prevalentemente pubblico"
+
+#: ../../include/permissions.php:877
+msgid "Social - Restricted"
+msgstr "Social - Con restrizioni"
+
+#: ../../include/permissions.php:877
+msgid "Social - Private"
+msgstr "Social - Privato"
+
+#: ../../include/permissions.php:878
+msgid "Community Forum"
+msgstr "Forum di discussione"
+
+#: ../../include/permissions.php:878
+msgid "Forum - Mostly Public"
+msgstr "Social - Prevalentemente pubblico"
+
+#: ../../include/permissions.php:878
+msgid "Forum - Restricted"
+msgstr "Forum - Con restrizioni"
+
+#: ../../include/permissions.php:878
+msgid "Forum - Private"
+msgstr "Forum - Privato"
+
+#: ../../include/permissions.php:879
+msgid "Feed Republish"
+msgstr "Aggregatore di feed esterni"
+
+#: ../../include/permissions.php:879
+msgid "Feed - Mostly Public"
+msgstr "Feed - Prevalentemente pubblico"
+
+#: ../../include/permissions.php:879
+msgid "Feed - Restricted"
+msgstr "Feed - Con restrizioni"
+
+#: ../../include/permissions.php:880
+msgid "Special Purpose"
+msgstr "Per finalità speciali"
+
+#: ../../include/permissions.php:880
+msgid "Special - Celebrity/Soapbox"
+msgstr "Speciale - Pagina per fan"
+
+#: ../../include/permissions.php:880
+msgid "Special - Group Repository"
+msgstr "Speciale - Repository di gruppo"
+
+#: ../../include/permissions.php:881
+msgid "Custom/Expert Mode"
+msgstr "Personalizzazione per esperti"
+
+#: ../../include/activities.php:41
+msgid " and "
+msgstr "e"
+
+#: ../../include/activities.php:49
+msgid "public profile"
+msgstr "profilo pubblico"
+
+#: ../../include/activities.php:58
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s ha cambiato %2$s in &ldquo;%3$s&rdquo;"
+
+#: ../../include/activities.php:59
+#, php-format
+msgid "Visit %1$s's %2$s"
+msgstr "Guarda %2$s di %1$s "
+
+#: ../../include/activities.php:62
+#, php-format
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s ha aggiornato %2$s cambiando %3$s."
+
+#: ../../include/bb2diaspora.php:398
+msgid "Attachments:"
+msgstr "Allegati:"
+
+#: ../../include/bb2diaspora.php:487
+msgid "$Projectname event notification:"
+msgstr "Notifica evento $Projectname:"
#: ../../view/theme/redbasic/php/config.php:82
msgid "Focus (Hubzilla default)"
@@ -9598,51 +9768,62 @@ msgstr "Dimensione foto dell'autore della conversazione"
msgid "Set size of followup author photos"
msgstr "Dimensione foto dei partecipanti alla conversazione"
-#: ../../boot.php:1388
+#: ../../boot.php:1162
+#, php-format
+msgctxt "opensearch"
+msgid "Search %1$s (%2$s)"
+msgstr "Cerca %1$s (%2$s)"
+
+#: ../../boot.php:1162
+msgctxt "opensearch"
+msgid "$Projectname"
+msgstr "$Projectname"
+
+#: ../../boot.php:1480
#, php-format
msgid "Update %s failed. See error logs."
msgstr "%s: aggiornamento fallito. Controlla i log di errore."
-#: ../../boot.php:1391
+#: ../../boot.php:1483
#, php-format
msgid "Update Error at %s"
msgstr "Errore di aggiornamento su %s"
-#: ../../boot.php:1561
+#: ../../boot.php:1684
msgid ""
"Create an account to access services and applications within the Hubzilla"
msgstr "Registrati per accedere ai servizi e alle applicazioni di Hubzilla"
-#: ../../boot.php:1583
+#: ../../boot.php:1706
msgid "Password"
msgstr "Password"
-#: ../../boot.php:1584
+#: ../../boot.php:1707
msgid "Remember me"
msgstr "Resta connesso"
-#: ../../boot.php:1587
+#: ../../boot.php:1710
msgid "Forgot your password?"
msgstr "Hai dimenticato la password?"
-#: ../../boot.php:2217
+#: ../../boot.php:2276
msgid "toggle mobile"
msgstr "attiva/disattiva versione mobile"
-#: ../../boot.php:2370
+#: ../../boot.php:2425
msgid "Website SSL certificate is not valid. Please correct."
msgstr "Il certificato SSL del sito non è valido. Si prega di intervenire."
-#: ../../boot.php:2373
+#: ../../boot.php:2428
#, php-format
msgid "[hubzilla] Website SSL error for %s"
msgstr "[hubzilla] Errore SSL su %s"
-#: ../../boot.php:2410
+#: ../../boot.php:2469
msgid "Cron/Scheduled tasks not running."
msgstr "Processi cron non avviati."
-#: ../../boot.php:2414
+#: ../../boot.php:2473
#, php-format
msgid "[hubzilla] Cron tasks not running on %s"
msgstr "[hubzilla] Cron non è stato eseguito %s"
diff --git a/view/it/hstrings.php b/view/it/hstrings.php
index 116c44ee8..1abdad30e 100644
--- a/view/it/hstrings.php
+++ b/view/it/hstrings.php
@@ -5,8 +5,6 @@ function string_plural_select_it($n){
return ($n != 1);;
}}
;
-App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "L'autenticazione tramite il tuo hub non è disponibile. Puoi provare a disconnetterti per tentare di nuovo.";
-App::$strings["Welcome %s. Remote authentication successful."] = "Ciao %s. L'accesso tramite il tuo hub è avvenuto con successo.";
App::$strings["parent"] = "cartella superiore";
App::$strings["Collection"] = "Cartella";
App::$strings["Principal"] = "Principale";
@@ -31,1048 +29,51 @@ App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s&#37;)
App::$strings["WARNING:"] = "ATTENZIONE:";
App::$strings["Create new folder"] = "Nuova cartella";
App::$strings["Upload file"] = "Carica un file";
+App::$strings["Permission denied"] = "Permesso negato";
App::$strings["Permission denied."] = "Permesso negato.";
App::$strings["Not Found"] = "Non disponibile";
App::$strings["Page not found."] = "Pagina non trovata.";
-App::$strings["Private Message"] = "Messaggio privato";
-App::$strings["Select"] = "Scegli";
-App::$strings["Save to Folder"] = "Salva nella cartella";
-App::$strings["I will attend"] = "Parteciperò";
-App::$strings["I will not attend"] = "Non parteciperò";
-App::$strings["I might attend"] = "Forse parteciperò";
-App::$strings["I agree"] = "Sono d'accordo";
-App::$strings["I disagree"] = "Non sono d'accordo";
-App::$strings["I abstain"] = "Mi astengo";
-App::$strings["View all"] = "Vedi tutto";
-App::$strings["__ctx:noun__ Like"] = array(
- 0 => "Mi piace",
- 1 => "Mi piace",
-);
-App::$strings["__ctx:noun__ Dislike"] = array(
- 0 => "Non mi piace",
- 1 => "Non mi piace",
-);
-App::$strings["Add Star"] = "Aggiungi ai preferiti";
-App::$strings["Remove Star"] = "Rimuovi dai preferiti";
-App::$strings["Toggle Star Status"] = "Attiva/disattiva preferito";
-App::$strings["starred"] = "preferito";
-App::$strings["Message signature validated"] = "Messaggio con firma verificata";
-App::$strings["Message signature incorrect"] = "Massaggio con firma non corretta";
-App::$strings["Add Tag"] = "Aggiungi un tag";
-App::$strings["I like this (toggle)"] = "Attiva/disattiva Mi piace";
-App::$strings["like"] = "mi piace";
-App::$strings["I don't like this (toggle)"] = "Attiva/disattiva Non mi piace";
-App::$strings["dislike"] = "non mi piace";
-App::$strings["Share This"] = "Condividi";
-App::$strings["share"] = "condividi";
-App::$strings["Delivery Report"] = "Rapporto di trasmissione";
-App::$strings["%d comment"] = array(
- 0 => "%d commento",
- 1 => "%d commenti",
-);
-App::$strings["View %s's profile - %s"] = "Guarda il profilo di %s - %s";
-App::$strings["to"] = "a";
-App::$strings["via"] = "via";
-App::$strings["Wall-to-Wall"] = "Da bacheca a bacheca";
-App::$strings["via Wall-To-Wall:"] = "da bacheca a bacheca:";
-App::$strings["from %s"] = "da %s";
-App::$strings["last edited: %s"] = "ultima modifica: %s";
-App::$strings["Expires: %s"] = "Scadenza: %s";
-App::$strings["Save Bookmarks"] = "Salva segnalibro";
-App::$strings["Add to Calendar"] = "Aggiungi al calendario";
-App::$strings["Mark all seen"] = "Marca tutto come letto";
-App::$strings["__ctx:noun__ Likes"] = "Mi piace";
-App::$strings["__ctx:noun__ Dislikes"] = "Non mi piace";
-App::$strings["Close"] = "Chiudi";
-App::$strings["Please wait"] = "Attendere";
-App::$strings["[+] show all"] = "[+] mostra tutto";
-App::$strings["This is you"] = "Questo sei tu";
-App::$strings["Comment"] = "Commento";
-App::$strings["Submit"] = "Salva";
-App::$strings["Bold"] = "Grassetto";
-App::$strings["Italic"] = "Corsivo";
-App::$strings["Underline"] = "Sottolineato";
-App::$strings["Quote"] = "Citazione";
-App::$strings["Code"] = "Codice";
-App::$strings["Image"] = "Immagine";
-App::$strings["Insert Link"] = "Collegamento";
-App::$strings["Video"] = "Video";
-App::$strings["Preview"] = "Anteprima";
-App::$strings["Encrypt text"] = "Cifratura del messaggio";
-App::$strings["No username found in import file."] = "Impossibile trovare il nome utente nel file da importare.";
-App::$strings["Unable to create a unique channel address. Import failed."] = "Impossibile creare un indirizzo univoco per il canale. L'import è fallito.";
-App::$strings["Import completed."] = "L'importazione è terminata con successo.";
-App::$strings["Categories"] = "Categorie";
-App::$strings["Apps"] = "App";
-App::$strings["System"] = "Sistema";
-App::$strings["Personal"] = "Personali";
-App::$strings["Create Personal App"] = "Crea app personale";
-App::$strings["Edit Personal App"] = "Modifica app personale";
-App::$strings["Connect"] = "Aggiungi";
-App::$strings["Ignore/Hide"] = "Ignora/nascondi";
-App::$strings["Suggestions"] = "Suggerimenti";
-App::$strings["See more..."] = "Altro...";
-App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Hai attivato %1$.0f delle %2$.0f connessioni permesse.";
-App::$strings["Add New Connection"] = "Aggiungi un contatto";
-App::$strings["Enter channel address"] = "Indirizzo del canale";
-App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Per esempio: bob@example.com, https://example.com/barbara";
-App::$strings["Notes"] = "Note";
-App::$strings["Save"] = "Salva";
-App::$strings["Remove term"] = "Rimuovi termine";
-App::$strings["Saved Searches"] = "Ricerche salvate";
-App::$strings["add"] = "aggiungi";
-App::$strings["Saved Folders"] = "Cartelle salvate";
-App::$strings["Everything"] = "Tutto";
-App::$strings["Archives"] = "Archivi";
-App::$strings["Me"] = "Me";
-App::$strings["Family"] = "Famiglia";
-App::$strings["Friends"] = "Amici";
-App::$strings["Acquaintances"] = "Conoscenti";
-App::$strings["All"] = "Tutti";
-App::$strings["Refresh"] = "Aggiorna";
-App::$strings["Account settings"] = "Il tuo account";
-App::$strings["Channel settings"] = "Impostazioni del canale";
-App::$strings["Additional features"] = "Funzionalità opzionali";
-App::$strings["Feature/Addon settings"] = "Componenti aggiuntivi";
-App::$strings["Display settings"] = "Aspetto";
-App::$strings["Manage locations"] = "Gestione repliche";
-App::$strings["Export channel"] = "Esporta il canale";
-App::$strings["Connected apps"] = "App connesse";
-App::$strings["Connection Default Permissions"] = "Permessi predefiniti dei nuovi contatti";
-App::$strings["Premium Channel Settings"] = "Canale premium - impostazioni";
-App::$strings["Channel Sources"] = "Sorgenti del canale";
-App::$strings["Settings"] = "Impostazioni";
-App::$strings["Private Mail Menu"] = "Menu messaggi privati";
-App::$strings["Combined View"] = "Vista combinata";
-App::$strings["Inbox"] = "In arrivo";
-App::$strings["Outbox"] = "Inviati";
-App::$strings["New Message"] = "Nuovo messaggio";
-App::$strings["Conversations"] = "Conversazioni";
-App::$strings["Received Messages"] = "Ricevuti";
-App::$strings["Sent Messages"] = "Inviati";
-App::$strings["No messages."] = "Nessun messaggio.";
-App::$strings["Delete conversation"] = "Elimina la conversazione";
-App::$strings["Events Menu"] = "Menu eventi";
-App::$strings["Day View"] = "Eventi del giorno";
-App::$strings["Week View"] = "Eventi della settimana";
-App::$strings["Month View"] = "Eventi del mese";
-App::$strings["Export"] = "Esporta";
-App::$strings["Import"] = "Importa";
-App::$strings["Events Tools"] = "Gestione eventi";
-App::$strings["Export Calendar"] = "Esporta calendario";
-App::$strings["Import Calendar"] = "Importa calendario";
-App::$strings["Chatrooms"] = "Chat";
-App::$strings["Overview"] = "Riepilogo";
-App::$strings["Chat Members"] = "Partecipanti";
-App::$strings["Bookmarked Chatrooms"] = "Chat nei segnalibri";
-App::$strings["Suggested Chatrooms"] = "Chat suggerite";
-App::$strings["photo/image"] = "foto/immagine";
-App::$strings["Click to show more"] = "Clicca per mostrare tutto";
-App::$strings["Rating Tools"] = "Valutazione";
-App::$strings["Rate Me"] = "Valutami";
-App::$strings["View Ratings"] = "Vedi le valutazioni ricevute";
-App::$strings["Public Hubs"] = "Hub pubblici";
-App::$strings["Forums"] = "Forum";
-App::$strings["Tasks"] = "Attività";
-App::$strings["Documentation"] = "Guida";
-App::$strings["Project/Site Information"] = "Informazioni sul sito/progetto";
-App::$strings["For Members"] = "Per gli utenti";
-App::$strings["For Administrators"] = "Per gli amministratori";
-App::$strings["For Developers"] = "Per sviluppatori";
-App::$strings["Site"] = "Sito";
-App::$strings["Accounts"] = "Account";
-App::$strings["Member registrations waiting for confirmation"] = "Richieste in attesa di conferma";
-App::$strings["Channels"] = "Canali";
-App::$strings["Security"] = "Sicurezza";
-App::$strings["Features"] = "Funzionalità";
-App::$strings["Plugins"] = "Plugin";
-App::$strings["Themes"] = "Temi";
-App::$strings["Inspect queue"] = "Coda di attesa";
-App::$strings["Profile Fields"] = "Campi del profilo";
-App::$strings["DB updates"] = "Aggiornamenti al DB";
-App::$strings["Logs"] = "Log";
-App::$strings["Admin"] = "Amministrazione";
-App::$strings["Plugin Features"] = "Plugin";
-App::$strings["View Photo"] = "Guarda la foto";
-App::$strings["Edit Album"] = "Modifica album";
-App::$strings[" and "] = "e";
-App::$strings["public profile"] = "profilo pubblico";
-App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s ha cambiato %2\$s in &ldquo;%3\$s&rdquo;";
-App::$strings["Visit %1\$s's %2\$s"] = "Guarda %2\$s di %1\$s ";
-App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s ha aggiornato %2\$s cambiando %3\$s.";
-App::$strings["Public Timeline"] = "Diario pubblico";
-App::$strings["Site Admin"] = "Amministrazione sito";
-App::$strings["Bookmarks"] = "Segnalibri";
-App::$strings["Address Book"] = "Rubrica";
-App::$strings["Login"] = "Accedi";
-App::$strings["Channel Manager"] = "Gestione canali";
-App::$strings["Grid"] = "Rete";
-App::$strings["Webpages"] = "Pagine web";
-App::$strings["Channel Home"] = "Bacheca del canale";
-App::$strings["Profile"] = "Profilo";
-App::$strings["Photos"] = "Foto";
-App::$strings["Events"] = "Eventi";
-App::$strings["Directory"] = "Elenchi pubblici dei canali";
-App::$strings["Help"] = "Guida";
-App::$strings["Mail"] = "Messaggi";
-App::$strings["Mood"] = "Umore";
-App::$strings["Poke"] = "Poke";
-App::$strings["Chat"] = "Chat";
-App::$strings["Search"] = "Cerca";
-App::$strings["Probe"] = "Diagnostica";
-App::$strings["Suggest"] = "Suggerisci";
-App::$strings["Random Channel"] = "Canale casuale";
-App::$strings["Invite"] = "Invita";
-App::$strings["Language"] = "Lingua";
-App::$strings["Post"] = "Post";
-App::$strings["Profile Photo"] = "Foto del profilo";
-App::$strings["Update"] = "Aggiorna";
-App::$strings["Install"] = "Installa";
-App::$strings["Purchase"] = "Acquista";
-App::$strings["Logged out."] = "Uscita effettuata.";
-App::$strings["Failed authentication"] = "Autenticazione fallita";
-App::$strings["Login failed."] = "Accesso fallito.";
-App::$strings["Image/photo"] = "Immagine";
-App::$strings["Encrypted content"] = "Contenuto cifrato";
-App::$strings["Install %s element: "] = "Installa l'elemento %s:";
-App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Questo post contiene un elemento %s installabile, tuttavia non hai i permessi necessari per l'installazione.";
-App::$strings["webpage"] = "pagina web";
-App::$strings["layout"] = "layout";
-App::$strings["block"] = "block";
-App::$strings["menu"] = "menu";
-App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s ha scritto %2\$s %3\$s";
-App::$strings["post"] = "il post";
-App::$strings["Different viewers will see this text differently"] = "Ad altri questo testo potrebbe apparire in modo differente";
-App::$strings["$1 spoiler"] = "$1 spoiler";
-App::$strings["$1 wrote:"] = "$1 ha scritto:";
-App::$strings["Attachments:"] = "Allegati:";
-App::$strings["l F d, Y \\@ g:i A"] = "l d F Y \\@ G:i";
-App::$strings["\$Projectname event notification:"] = "Notifica evento \$Projectname:";
-App::$strings["Starts:"] = "Inizio:";
-App::$strings["Finishes:"] = "Fine:";
-App::$strings["Location:"] = "Luogo:";
-App::$strings["%1\$s's bookmarks"] = "I segnalibri di %1\$s";
-App::$strings["Invalid data packet"] = "Dati ricevuti non validi";
-App::$strings["Unable to verify channel signature"] = "Impossibile verificare la firma elettronica del canale";
-App::$strings["Unable to verify site signature for %s"] = "Impossibile verificare la firma elettronica del sito %s";
-App::$strings["invalid target signature"] = "la firma ricevuta non è valida";
-App::$strings["%d invitation available"] = array(
- 0 => "%d invito disponibile",
- 1 => "%d inviti disponibili",
-);
-App::$strings["Advanced"] = "Avanzate";
-App::$strings["Find Channels"] = "Ricerca canali";
-App::$strings["Enter name or interest"] = "Scrivi un nome o un interesse";
-App::$strings["Connect/Follow"] = "Aggiungi";
-App::$strings["Examples: Robert Morgenstein, Fishing"] = "Per esempio: Mario Rossi, Pesca";
-App::$strings["Find"] = "Cerca";
-App::$strings["Channel Suggestions"] = "Canali suggeriti";
-App::$strings["Random Profile"] = "Profilo casuale";
-App::$strings["Invite Friends"] = "Invita amici";
-App::$strings["Advanced example: name=fred and country=iceland"] = "Per esempio: name=mario e country=italy";
-App::$strings["%d connection in common"] = array(
- 0 => "%d contatto in comune",
- 1 => "%d contatti in comune",
-);
-App::$strings["show more"] = "mostra tutto";
-App::$strings["Directory Options"] = "Visibilità negli elenchi pubblici";
-App::$strings["Safe Mode"] = "Modalità SafeSearch";
-App::$strings["No"] = "No";
-App::$strings["Yes"] = "Sì";
-App::$strings["Public Forums Only"] = "Solo forum pubblici";
-App::$strings["This Website Only"] = "Solo in questo sito";
-App::$strings["\$Projectname Notification"] = "Notifica \$Projectname";
-App::$strings["\$projectname"] = "\$projectname";
-App::$strings["Thank You,"] = "Grazie,";
-App::$strings["%s Administrator"] = "L'amministratore di %s";
-App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
-App::$strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla] Nuovo messaggio su %s";
-App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s ti ha mandato un messaggio privato su %3\$s.";
-App::$strings["%1\$s sent you %2\$s."] = "%1\$s ti ha mandato %2\$s.";
-App::$strings["a private message"] = "un messaggio privato";
-App::$strings["Please visit %s to view and/or reply to your private messages."] = "Visita %s per leggere i tuoi messaggi privati e rispondere.";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s ha commentato [zrl=%3\$s]%4\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s ha commentato [zrl=%3\$s]%5\$s di %4\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s ha commentato [zrl=%3\$s]%4\$s che hai creato[/zrl]";
-App::$strings["[Hubzilla:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Hubzilla] Nuovo commento di %2\$s alla conversazione #%1\$d";
-App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s ha commentato un elemento che stavi seguendo.";
-App::$strings["Please visit %s to view and/or reply to the conversation."] = "Visita %s per leggere o commentare la conversazione.";
-App::$strings["[Hubzilla:Notify] %s posted to your profile wall"] = "[Hubzilla] %s ha scritto sulla tua bacheca";
-App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s ha scritto sulla bacheca del tuo profilo su %3\$s";
-App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s ha scritto sulla [zrl=%3\$s]tua bacheca[/zrl]";
-App::$strings["[Hubzilla:Notify] %s tagged you"] = "[Hubzilla] %s ti ha taggato";
-App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s ti ha taggato su %3\$s";
-App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]ti ha taggato[/zrl].";
-App::$strings["[Hubzilla:Notify] %1\$s poked you"] = "[Hubzilla] %1\$s ti ha mandato un poke";
-App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s ti ha mandato un poke su %3\$s";
-App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]ti ha mandato un poke[/zrl].";
-App::$strings["[Hubzilla:Notify] %s tagged your post"] = "[Hubzilla] %s ha taggato il tuo post";
-App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s ha taggato il tuo post su %3\$s";
-App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s ha taggato [zrl=%3\$s]il tuo post[/zrl]";
-App::$strings["[Hubzilla:Notify] Introduction received"] = "[Hubzilla] Hai una richiesta di amicizia";
-App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, hai ricevuto una richiesta di entrare in contatto da '%2\$s' su %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, hai ricevuto una [zrl=%2\$s]richiesta di entrare in contatto[/zrl] da %3\$s.";
-App::$strings["You may visit their profile at %s"] = "Puoi visitare il suo profilo su %s";
-App::$strings["Please visit %s to approve or reject the connection request."] = "Visita %s per approvare o rifiutare la richiesta di entrare in contatto.";
-App::$strings["[Hubzilla:Notify] Friend suggestion received"] = "[Hubzilla] Ti è stato suggerito un amico";
-App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, ti è stato suggerito un amico da '%2\$s' su %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, %4\$s ti [zrl=%2\$s]ha suggerito %3\$s[/zrl] come amico.";
-App::$strings["Name:"] = "Nome:";
-App::$strings["Photo:"] = "Foto:";
-App::$strings["Please visit %s to approve or reject the suggestion."] = "Visita %s per approvare o rifiutare il suggerimento.";
-App::$strings["[Hubzilla:Notify]"] = "[Hubzilla]";
-App::$strings["photo"] = "la foto";
-App::$strings["event"] = "l'evento";
-App::$strings["channel"] = "il canale";
-App::$strings["status"] = "il messaggio di stato";
-App::$strings["comment"] = "il commento";
-App::$strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s piace %3\$s di %2\$s";
-App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s non piace %3\$s di %2\$s";
-App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s adesso è connesso con %2\$s";
-App::$strings["%1\$s poked %2\$s"] = "%1\$s ha mandato un poke a %2\$s";
-App::$strings["poked"] = "ha mandato un poke";
-App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s è %2\$s";
-App::$strings["__ctx:title__ Likes"] = "Mi piace";
-App::$strings["__ctx:title__ Dislikes"] = "Non mi piace";
-App::$strings["__ctx:title__ Agree"] = "D'accordo";
-App::$strings["__ctx:title__ Disagree"] = "Non d'accordo";
-App::$strings["__ctx:title__ Abstain"] = "Astenuti";
-App::$strings["__ctx:title__ Attending"] = "Partecipano";
-App::$strings["__ctx:title__ Not attending"] = "Non partecipano";
-App::$strings["__ctx:title__ Might attend"] = "Forse partecipano";
-App::$strings["View %s's profile @ %s"] = "Vedi il profilo di %s @ %s";
-App::$strings["Categories:"] = "Categorie:";
-App::$strings["Filed under:"] = "Classificato come:";
-App::$strings["View in context"] = "Vedi nel contesto";
-App::$strings["remove"] = "rimuovi";
-App::$strings["Loading..."] = "Caricamento in corso...";
-App::$strings["Delete Selected Items"] = "Elimina gli oggetti selezionati";
-App::$strings["View Source"] = "Vedi il sorgente";
-App::$strings["Follow Thread"] = "Segui la discussione";
-App::$strings["Unfollow Thread"] = "Non seguire la discussione";
-App::$strings["View Profile"] = "Profilo";
-App::$strings["Activity/Posts"] = "Attività e Post";
-App::$strings["Edit Connection"] = "Modifica il contatto";
-App::$strings["Message"] = "Messaggio";
-App::$strings["Ratings"] = "Valutazioni";
-App::$strings["%s likes this."] = "Piace a %s.";
-App::$strings["%s doesn't like this."] = "Non piace a %s.";
-App::$strings["<span %1\$s>%2\$d people</span> like this."] = array(
- 0 => "",
- 1 => "Piace a <span %1\$s>%2\$d persone</span>.",
-);
-App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
- 0 => "",
- 1 => "Non piace a <span %1\$s>%2\$d persone</span>.",
-);
-App::$strings["and"] = "e";
-App::$strings[", and %d other people"] = array(
- 0 => "",
- 1 => "e altre %d persone",
-);
-App::$strings["%s like this."] = "Piace a %s.";
-App::$strings["%s don't like this."] = "Non piace a %s.";
-App::$strings["Visible to <strong>everybody</strong>"] = "Visibile a <strong>tutti</strong>";
-App::$strings["Please enter a link URL:"] = "Inserisci l'indirizzo del link:";
-App::$strings["Please enter a video link/URL:"] = "Inserisci l'indirizzo del video:";
-App::$strings["Please enter an audio link/URL:"] = "Inserisci l'indirizzo dell'audio:";
-App::$strings["Tag term:"] = "Tag:";
-App::$strings["Save to Folder:"] = "Salva nella cartella:";
-App::$strings["Where are you right now?"] = "Dove sei ora?";
-App::$strings["Expires YYYY-MM-DD HH:MM"] = "Scade il YYYY-MM-DD HH:MM";
-App::$strings["Share"] = "Condividi";
-App::$strings["Page link name"] = "Nome del link alla pagina";
-App::$strings["Post as"] = "Pubblica come ";
-App::$strings["Upload photo"] = "Carica foto";
-App::$strings["upload photo"] = "carica foto";
-App::$strings["Attach file"] = "Allega file";
-App::$strings["attach file"] = "allega file";
-App::$strings["Insert web link"] = "Inserisci un indirizzo web";
-App::$strings["web link"] = "link web";
-App::$strings["Insert video link"] = "Inserisci l'indirizzo del video";
-App::$strings["video link"] = "link video";
-App::$strings["Insert audio link"] = "Inserisci l'indirizzo dell'audio";
-App::$strings["audio link"] = "link audio";
-App::$strings["Set your location"] = "La tua località";
-App::$strings["set location"] = "la tua località";
-App::$strings["Toggle voting"] = "Abilita/disabilita il voto";
-App::$strings["Clear browser location"] = "Rimuovi la località data dal browser";
-App::$strings["clear location"] = "rimuovi la località";
-App::$strings["Title (optional)"] = "Titolo (facoltativo)";
-App::$strings["Categories (optional, comma-separated list)"] = "Categorie (facoltative, lista separata da virgole)";
-App::$strings["Permission settings"] = "Permessi dei tuoi contatti";
-App::$strings["permissions"] = "permessi";
-App::$strings["Public post"] = "Post pubblico";
-App::$strings["Example: bob@example.com, mary@example.com"] = "Per esempio: mario@esempio.com, simona@esempio.com";
-App::$strings["Set expiration date"] = "Data di scadenza";
-App::$strings["Set publish date"] = "Data di uscita programmata";
-App::$strings["OK"] = "OK";
-App::$strings["Cancel"] = "Annulla";
-App::$strings["Discover"] = "Scopri";
-App::$strings["Imported public streams"] = "Contenuti pubblici importati";
-App::$strings["Commented Order"] = "Commenti recenti";
-App::$strings["Sort by Comment Date"] = "Per data del commento";
-App::$strings["Posted Order"] = "Post recenti";
-App::$strings["Sort by Post Date"] = "Per data di creazione";
-App::$strings["Posts that mention or involve you"] = "Post che ti riguardano";
-App::$strings["New"] = "Novità";
-App::$strings["Activity Stream - by date"] = "Elenco attività - per data";
-App::$strings["Starred"] = "Preferiti";
-App::$strings["Favourite Posts"] = "Post preferiti";
-App::$strings["Spam"] = "Spam";
-App::$strings["Posts flagged as SPAM"] = "Post marcati come spam";
-App::$strings["Channel"] = "Canale";
-App::$strings["Status Messages and Posts"] = "Post e messaggi di stato";
-App::$strings["About"] = "Informazioni";
-App::$strings["Profile Details"] = "Dettagli del profilo";
-App::$strings["Photo Albums"] = "Album foto";
-App::$strings["Files and Storage"] = "Archivio file";
-App::$strings["Saved Bookmarks"] = "Segnalibri salvati";
-App::$strings["Manage Webpages"] = "Gestisci le pagine web";
-App::$strings["__ctx:noun__ Attending"] = array(
- 0 => "Partecipa",
- 1 => "Partecipano",
-);
-App::$strings["__ctx:noun__ Not Attending"] = array(
- 0 => "Non partecipa",
- 1 => "Non partecipano",
-);
-App::$strings["__ctx:noun__ Undecided"] = array(
- 0 => "Indeciso",
- 1 => "Indecisi",
-);
-App::$strings["__ctx:noun__ Agree"] = array(
- 0 => "D'accordo",
- 1 => "D'accordo",
-);
-App::$strings["__ctx:noun__ Disagree"] = array(
- 0 => "Non d'accordo",
- 1 => "Non d'accordo",
-);
-App::$strings["__ctx:noun__ Abstain"] = array(
- 0 => "Astenuto",
- 1 => "Astenuti",
-);
-App::$strings["Cannot locate DNS info for database server '%s'"] = "Non trovo le informazioni DNS per il database server '%s'";
-App::$strings["Channel is blocked on this site."] = "Il canale è bloccato per questo sito.";
-App::$strings["Channel location missing."] = "Manca l'indirizzo del canale.";
-App::$strings["Response from remote channel was incomplete."] = "La risposta dal canale non è completa.";
-App::$strings["Channel was deleted and no longer exists."] = "Il canale è stato rimosso e non esiste più.";
-App::$strings["Protocol disabled."] = "Protocollo disabilitato.";
-App::$strings["Channel discovery failed."] = "La ricerca del canale non ha avuto successo.";
-App::$strings["Cannot connect to yourself."] = "Non puoi connetterti a te stesso.";
-App::$strings["Logout"] = "Esci";
-App::$strings["End this session"] = "Chiudi questa sessione";
-App::$strings["Home"] = "Bacheca";
-App::$strings["Your posts and conversations"] = "I tuoi post e conversazioni";
-App::$strings["Your profile page"] = "Il tuo profilo";
-App::$strings["Edit Profiles"] = "Modifica i tuoi profili";
-App::$strings["Manage/Edit profiles"] = "Gestisci i tuoi profili";
-App::$strings["Edit Profile"] = "Modifica il profilo";
-App::$strings["Edit your profile"] = "Modifica il tuo profilo";
-App::$strings["Your photos"] = "Le tue foto";
-App::$strings["Your files"] = "I tuoi file";
-App::$strings["Your chatrooms"] = "Le tue chat";
-App::$strings["Your bookmarks"] = "I tuoi segnalibri";
-App::$strings["Your webpages"] = "Le tue pagine web";
-App::$strings["Sign in"] = "Accedi";
-App::$strings["%s - click to logout"] = "%s - clicca per uscire";
-App::$strings["Remote authentication"] = "Accedi dal tuo hub";
-App::$strings["Click to authenticate to your home hub"] = "Clicca per farti riconoscere dal tuo hub principale";
-App::$strings["Home Page"] = "Bacheca";
-App::$strings["Register"] = "Registrati";
-App::$strings["Create an account"] = "Crea un account";
-App::$strings["Help and documentation"] = "Guida e documentazione";
-App::$strings["Applications, utilities, links, games"] = "Applicazioni, utilità, link, giochi";
-App::$strings["Search site @name, #tag, ?docs, content"] = "Cerca nel sito per @nome, #tag, ?guida o per contenuto";
-App::$strings["Channel Directory"] = "Elenchi pubblici dei canali";
-App::$strings["Your grid"] = "La tua rete";
-App::$strings["Mark all grid notifications seen"] = "Segna come lette le notifiche della tua rete";
-App::$strings["Channel home"] = "Bacheca del canale";
-App::$strings["Mark all channel notifications seen"] = "Segna come lette le notifiche del canale";
-App::$strings["Connections"] = "Contatti";
-App::$strings["Notices"] = "Avvisi";
-App::$strings["Notifications"] = "Notifiche";
-App::$strings["See all notifications"] = "Vedi tutte le notifiche";
-App::$strings["Mark all system notifications seen"] = "Segna come lette le notifiche di sistema";
-App::$strings["Private mail"] = "Messaggi privati";
-App::$strings["See all private messages"] = "Guarda tutti i messaggi privati";
-App::$strings["Mark all private messages seen"] = "Segna come letti tutti i messaggi privati";
-App::$strings["Event Calendar"] = "Calendario";
-App::$strings["See all events"] = "Guarda tutti gli eventi";
-App::$strings["Mark all events seen"] = "Marca come letti tutti gli eventi";
-App::$strings["Manage Your Channels"] = "Gestisci i tuoi canali";
-App::$strings["Account/Channel Settings"] = "Impostazioni dell'account e del canale";
-App::$strings["Site Setup and Configuration"] = "Installazione e configurazione del sito";
-App::$strings["@name, #tag, ?doc, content"] = "@nome, #tag, ?guida, contenuto";
-App::$strings["Please wait..."] = "Attendere...";
-App::$strings["Delete this item?"] = "Eliminare questo elemento?";
-App::$strings["[-] show less"] = "[-] riduci";
-App::$strings["[+] expand"] = "[+] mostra tutto";
-App::$strings["[-] collapse"] = "[-] riduci";
-App::$strings["Password too short"] = "Password troppo corta";
-App::$strings["Passwords do not match"] = "Le password non corrispondono";
-App::$strings["everybody"] = "tutti";
-App::$strings["Secret Passphrase"] = "Parola chiave per decifrare";
-App::$strings["Passphrase hint"] = "Suggerimento per la parola chiave";
-App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Nota: i permessi sono stati modificati ma non ancora salvati.";
-App::$strings["close all"] = "chiudi tutto";
-App::$strings["Nothing new here"] = "Niente di nuovo qui";
-App::$strings["Rate This Channel (this is public)"] = "Valuta questo canale (visibile a tutti)";
-App::$strings["Rating"] = "Valutazioni";
-App::$strings["Describe (optional)"] = "Descrizione (facoltativa)";
-App::$strings["Please enter a link URL"] = "Inserisci l'URL di un link";
-App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Non hai salvato i cambiamenti. Vuoi davvero lasciare questa pagina?";
-App::$strings["Location"] = "Posizione geografica";
-App::$strings["timeago.prefixAgo"] = "timeago.prefixAgo";
-App::$strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
-App::$strings["ago"] = "fa";
-App::$strings["from now"] = "da adesso";
-App::$strings["less than a minute"] = "meno di un minuto";
-App::$strings["about a minute"] = "circa un minuto";
-App::$strings["%d minutes"] = "%d minuti";
-App::$strings["about an hour"] = "circa un’ora";
-App::$strings["about %d hours"] = "circa %d ore";
-App::$strings["a day"] = "un giorno";
-App::$strings["%d days"] = "%d giorni";
-App::$strings["about a month"] = "circa un mese";
-App::$strings["%d months"] = "%d mesi";
-App::$strings["about a year"] = "circa un anno";
-App::$strings["%d years"] = "%d anni";
-App::$strings[" "] = " ";
-App::$strings["timeago.numbers"] = "timeago.numbers";
-App::$strings["January"] = "gennaio";
-App::$strings["February"] = "febbraio";
-App::$strings["March"] = "marzo";
-App::$strings["April"] = "aprile";
-App::$strings["__ctx:long__ May"] = "maggio";
-App::$strings["June"] = "giugno";
-App::$strings["July"] = "luglio";
-App::$strings["August"] = "agosto";
-App::$strings["September"] = "settembre";
-App::$strings["October"] = "ottobre";
-App::$strings["November"] = "novembre";
-App::$strings["December"] = "dicembre";
-App::$strings["Jan"] = "Gen";
-App::$strings["Feb"] = "Feb";
-App::$strings["Mar"] = "Mar";
-App::$strings["Apr"] = "Apr";
-App::$strings["__ctx:short__ May"] = "maggio";
-App::$strings["Jun"] = "Mag";
-App::$strings["Jul"] = "Giu";
-App::$strings["Aug"] = "Ago";
-App::$strings["Sep"] = "Set";
-App::$strings["Oct"] = "Ott";
-App::$strings["Nov"] = "Nov";
-App::$strings["Dec"] = "Dic";
-App::$strings["Sunday"] = "domenica";
-App::$strings["Monday"] = "lunedì";
-App::$strings["Tuesday"] = "martedì";
-App::$strings["Wednesday"] = "mercoledì";
-App::$strings["Thursday"] = "giovedì";
-App::$strings["Friday"] = "venerdì";
-App::$strings["Saturday"] = "sabato";
-App::$strings["Sun"] = "Dom";
-App::$strings["Mon"] = "Lun";
-App::$strings["Tue"] = "Mar";
-App::$strings["Wed"] = "Mer";
-App::$strings["Thu"] = "Gio";
-App::$strings["Fri"] = "Ven";
-App::$strings["Sat"] = "Sab";
-App::$strings["__ctx:calendar__ today"] = "oggi";
-App::$strings["__ctx:calendar__ month"] = "mese";
-App::$strings["__ctx:calendar__ week"] = "settimana";
-App::$strings["__ctx:calendar__ day"] = "giorno";
-App::$strings["__ctx:calendar__ All day"] = "Tutto il giorno";
-App::$strings["view full size"] = "guarda nelle dimensioni reali";
-App::$strings["Administrator"] = "Amministratore";
-App::$strings["No Subject"] = "Nessun titolo";
-App::$strings["Embedded content"] = "Contenuti incorporati";
-App::$strings["Embedding disabled"] = "Disabilita la creazione di contenuti incorporati";
-App::$strings["created a new post"] = "Ha creato un nuovo post";
-App::$strings["commented on %s's post"] = "ha commentato il post di %s";
-App::$strings["New Page"] = "Nuova pagina web";
-App::$strings["View"] = "Guarda";
-App::$strings["Actions"] = "Azioni";
-App::$strings["Page Link"] = "Link alla pagina";
-App::$strings["Title"] = "Titolo";
-App::$strings["Created"] = "Creato";
-App::$strings["Edited"] = "Modificato";
-App::$strings["Profile Photos"] = "Foto del profilo";
-App::$strings["Miscellaneous"] = "Altro";
-App::$strings["Birthday"] = "Compleanno";
-App::$strings["Age: "] = "Età:";
-App::$strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-GG oppure MM-GG";
-App::$strings["Required"] = "Obbligatorio";
-App::$strings["never"] = "mai";
-App::$strings["less than a second ago"] = "meno di un secondo fa";
-App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "%1\$d %2\$s fa";
-App::$strings["__ctx:relative_date__ year"] = array(
- 0 => "anno",
- 1 => "anni",
-);
-App::$strings["__ctx:relative_date__ month"] = array(
- 0 => "mese",
- 1 => "mesi",
-);
-App::$strings["__ctx:relative_date__ week"] = array(
- 0 => "settimana",
- 1 => "settimane",
-);
-App::$strings["__ctx:relative_date__ day"] = array(
- 0 => "giorno",
- 1 => "giorni",
-);
-App::$strings["__ctx:relative_date__ hour"] = array(
- 0 => "ora",
- 1 => "ore",
-);
-App::$strings["__ctx:relative_date__ minute"] = array(
- 0 => "minuto",
- 1 => "minuti",
-);
-App::$strings["__ctx:relative_date__ second"] = array(
- 0 => "secondo",
- 1 => "secondi",
-);
-App::$strings["%1\$s's birthday"] = "Compleanno di %1\$s";
-App::$strings["Happy Birthday %1\$s"] = "Buon compleanno %1\$s";
-App::$strings["Male"] = "Maschio";
-App::$strings["Female"] = "Femmina";
-App::$strings["Currently Male"] = "Al momento maschio";
-App::$strings["Currently Female"] = "Al momento femmina";
-App::$strings["Mostly Male"] = "Prevalentemente maschio";
-App::$strings["Mostly Female"] = "Prevalentemente femmina";
-App::$strings["Transgender"] = "Transgender";
-App::$strings["Intersex"] = "Intersex";
-App::$strings["Transsexual"] = "Transessuale";
-App::$strings["Hermaphrodite"] = "Ermafrodito";
-App::$strings["Neuter"] = "Neutro";
-App::$strings["Non-specific"] = "Non specificato";
-App::$strings["Other"] = "Altro";
-App::$strings["Undecided"] = "Indeciso";
-App::$strings["Males"] = "Maschi";
-App::$strings["Females"] = "Femmine";
-App::$strings["Gay"] = "Gay";
-App::$strings["Lesbian"] = "Lesbica";
-App::$strings["No Preference"] = "Senza preferenza";
-App::$strings["Bisexual"] = "Bisessuale";
-App::$strings["Autosexual"] = "Autosessuale";
-App::$strings["Abstinent"] = "Astinente";
-App::$strings["Virgin"] = "Vergine";
-App::$strings["Deviant"] = "Deviato";
-App::$strings["Fetish"] = "Feticista";
-App::$strings["Oodles"] = "Un sacco";
-App::$strings["Nonsexual"] = "Asessuato";
-App::$strings["Single"] = "Single";
-App::$strings["Lonely"] = "Da solo";
-App::$strings["Available"] = "Disponibile";
-App::$strings["Unavailable"] = "Non disponibile";
-App::$strings["Has crush"] = "Ha una cotta";
-App::$strings["Infatuated"] = "Infatuato/a";
-App::$strings["Dating"] = "Disponibile a un incontro";
-App::$strings["Unfaithful"] = "Infedele";
-App::$strings["Sex Addict"] = "Sesso-dipendente";
-App::$strings["Friends/Benefits"] = "Amici con qualcosa in più";
-App::$strings["Casual"] = "Casual";
-App::$strings["Engaged"] = "Impegnato";
-App::$strings["Married"] = "Sposato/a";
-App::$strings["Imaginarily married"] = "Con matrimonio immaginario";
-App::$strings["Partners"] = "Partner";
-App::$strings["Cohabiting"] = "Convivente";
-App::$strings["Common law"] = "Matrimonio regolare";
-App::$strings["Happy"] = "Felice";
-App::$strings["Not looking"] = "Non in cerca";
-App::$strings["Swinger"] = "Scambista";
-App::$strings["Betrayed"] = "Tradito/a";
-App::$strings["Separated"] = "Separato/a";
-App::$strings["Unstable"] = "Instabile";
-App::$strings["Divorced"] = "Divorziato/a";
-App::$strings["Imaginarily divorced"] = "Sogna il divorzio";
-App::$strings["Widowed"] = "Vedovo/a";
-App::$strings["Uncertain"] = "Incerto/a";
-App::$strings["It's complicated"] = "Relazione complicata";
-App::$strings["Don't care"] = "Chi se ne frega";
-App::$strings["Ask me"] = "Chiedimelo";
-App::$strings["Default"] = "Predefinito";
-App::$strings["This event has been added to your calendar."] = "Questo evento è stato aggiunto al tuo calendario";
-App::$strings["Not specified"] = "Non specificato";
-App::$strings["Needs Action"] = "Necessita di un intervento";
-App::$strings["Completed"] = "Completato";
-App::$strings["In Process"] = "In corso";
-App::$strings["Cancelled"] = "Annullato";
-App::$strings["Frequently"] = "Frequentemente";
-App::$strings["Hourly"] = "Ogni ora";
-App::$strings["Twice daily"] = "Due volte al giorno";
-App::$strings["Daily"] = "Ogni giorno";
-App::$strings["Weekly"] = "Ogni settimana";
-App::$strings["Monthly"] = "Ogni mese";
-App::$strings["Friendica"] = "Friendica";
-App::$strings["OStatus"] = "OStatus";
-App::$strings["GNU-Social"] = "GNU-Social";
-App::$strings["RSS/Atom"] = "RSS/Atom";
-App::$strings["Email"] = "Email";
-App::$strings["Diaspora"] = "Diaspora";
-App::$strings["Facebook"] = "Facebook";
-App::$strings["Zot"] = "Zot";
-App::$strings["LinkedIn"] = "LinkedIn";
-App::$strings["XMPP/IM"] = "XMPP/IM";
-App::$strings["MySpace"] = "MySpace";
-App::$strings["Tags"] = "Tag";
-App::$strings["Keywords"] = "Parole chiave";
-App::$strings["have"] = "ho";
-App::$strings["has"] = "ha";
-App::$strings["want"] = "voglio";
-App::$strings["wants"] = "vuole";
-App::$strings["likes"] = "gli piace";
-App::$strings["dislikes"] = "non gli piace";
-App::$strings["Item was not found."] = "Elemento non trovato.";
-App::$strings["No source file."] = "Nessun file di origine.";
-App::$strings["Cannot locate file to replace"] = "Il file da sostituire non è stato trovato";
-App::$strings["Cannot locate file to revise/update"] = "Il file da aggiornare non è stato trovato";
-App::$strings["File exceeds size limit of %d"] = "Il file supera la dimensione massima di %d";
-App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Hai raggiunto il limite complessivo di %1$.0f Mbytes per gli allegati.";
-App::$strings["File upload failed. Possible system limit or action terminated."] = "Caricamento file fallito, potrebbe essere stato interrotto o potrebbe aver superato lo spazio assegnato.";
-App::$strings["Stored file could not be verified. Upload failed."] = "Il file non può essere verificato. Caricamento fallito.";
-App::$strings["Path not available."] = "Percorso non disponibile.";
-App::$strings["Empty pathname"] = "Il percorso del file è vuoto";
-App::$strings["duplicate filename or path"] = "il file o il percorso del file è duplicato";
-App::$strings["Path not found."] = "Percorso del file non trovato.";
-App::$strings["mkdir failed."] = "mkdir fallito.";
-App::$strings["database storage failed."] = "scrittura su database fallita.";
-App::$strings["Empty path"] = "La posizione è vuota";
-App::$strings["General Features"] = "Funzionalità di base";
-App::$strings["Content Expiration"] = "Scadenza";
-App::$strings["Remove posts/comments and/or private messages at a future time"] = "Elimina i post, i commenti o i messaggi privati dopo un lasso di tempo";
-App::$strings["Multiple Profiles"] = "Profili multipli";
-App::$strings["Ability to create multiple profiles"] = "Abilitazione a creare profili multipli";
-App::$strings["Advanced Profiles"] = "Profili avanzati";
-App::$strings["Additional profile sections and selections"] = "Informazioni aggiuntive del profilo";
-App::$strings["Profile Import/Export"] = "Importa/esporta il profilo";
-App::$strings["Save and load profile details across sites/channels"] = "Salva o ripristina le informazioni del profilo su siti diversi";
-App::$strings["Web Pages"] = "Pagine web";
-App::$strings["Provide managed web pages on your channel"] = "Attiva la creazione di pagine web sul tuo canale";
-App::$strings["Hide Rating"] = "Nascondi le valutazioni";
-App::$strings["Hide the rating buttons on your channel and profile pages. Note: People can still rate you somewhere else."] = "Nascondi i bottoni delle valutazioni sul tuo canale e sul profilo. Nota: le persone potranno comunque esprimere una valutazione altrove.";
-App::$strings["Private Notes"] = "Note private";
-App::$strings["Enables a tool to store notes and reminders (note: not encrypted)"] = "Abilita il riquadro per scrivere annotazioni (in chiaro)";
-App::$strings["Navigation Channel Select"] = "Scegli il canale attivo dal menu";
-App::$strings["Change channels directly from within the navigation dropdown menu"] = "Scegli il canale attivo direttamente dal menu di navigazione";
-App::$strings["Photo Location"] = "Posizione geografica";
-App::$strings["If location data is available on uploaded photos, link this to a map."] = "Collega la foto a una mappa quando contiene indicazioni geografiche.";
-App::$strings["Access Controlled Chatrooms"] = "Chat ad accesso riservato";
-App::$strings["Provide chatrooms and chat services with access control."] = "Il servizio di chat con accesso riservato";
-App::$strings["Smart Birthdays"] = "Compleanni intelligenti";
-App::$strings["Make birthday events timezone aware in case your friends are scattered across the planet."] = "I compleanni saranno segnalati in base al fuso orario, utile se hai amici sparsi per il mondo.";
-App::$strings["Expert Mode"] = "Modalità esperto";
-App::$strings["Enable Expert Mode to provide advanced configuration options"] = "Abilita la modalità esperto per vedere le opzioni di configurazione avanzate";
-App::$strings["Premium Channel"] = "Canale premium";
-App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Ti permette di impostare restrizioni e termini d'uso per il canale";
-App::$strings["Post Composition Features"] = "Modalità di scrittura post";
-App::$strings["Large Photos"] = "Foto grandi";
-App::$strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Includi anteprime grandi per le foto dei tuoi post (1024px). Altrimenti saranno mostrate anteprime più piccole (640px)";
-App::$strings["Automatically import channel content from other channels or feeds"] = "Importa automaticamente il contenuto del canale da altri canali o feed";
-App::$strings["Even More Encryption"] = "Cifratura addizionale";
-App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Rendi possibile la crifratura aggiuntiva tra mittente e destinatario usando una parola chiave conosciuta a entrambi";
-App::$strings["Enable Voting Tools"] = "Permetti i post con votazione";
-App::$strings["Provide a class of post which others can vote on"] = "Rende possibile la creazione di post in cui sarà possibile votare";
-App::$strings["Delayed Posting"] = "Pubblicazione ritardata";
-App::$strings["Allow posts to be published at a later date"] = "Per scegliere una data e un'ora a cui far uscire i post";
-App::$strings["Suppress Duplicate Posts/Comments"] = "Impedisci post e commenti duplicati";
-App::$strings["Prevent posts with identical content to be published with less than two minutes in between submissions."] = "Scarta post e commenti se sono identici ad altri inviati meno di due minuti prima.";
-App::$strings["Network and Stream Filtering"] = "Filtraggio dei contenuti";
-App::$strings["Search by Date"] = "Ricerca per data";
-App::$strings["Ability to select posts by date ranges"] = "Per selezionare i post in un intervallo tra date";
-App::$strings["Privacy Groups"] = "Gruppi di canali";
-App::$strings["Enable management and selection of privacy groups"] = "Abilita i gruppi di canali";
-App::$strings["Save search terms for re-use"] = "Salva i termini delle ricerche per poterle ripetere";
-App::$strings["Network Personal Tab"] = "Attività personale";
-App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Abilita il link per mostrare solamente i contenuti con cui hai interagito";
-App::$strings["Network New Tab"] = "Contenuti nuovi";
-App::$strings["Enable tab to display all new Network activity"] = "Abilita il link per visualizzare solo i nuovi contenuti";
-App::$strings["Affinity Tool"] = "Filtro per affinità";
-App::$strings["Filter stream activity by depth of relationships"] = "Permette di selezionare i contenuti in base al livello di amicizia";
-App::$strings["Connection Filtering"] = "Filtro sui contatti";
-App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filtra i post che ricevi con parole chiave";
-App::$strings["Suggest Channels"] = "Suggerisci canali";
-App::$strings["Show channel suggestions"] = "Mostra alcuni canali che potrebbero interessarti";
-App::$strings["Post/Comment Tools"] = "Gestione post e commenti";
-App::$strings["Community Tagging"] = "Tag della comunità";
-App::$strings["Ability to tag existing posts"] = "Permetti l'aggiunta di tag su post già esistenti";
-App::$strings["Post Categories"] = "Categorie dei post";
-App::$strings["Add categories to your posts"] = "Abilita le categorie per i tuoi post";
-App::$strings["Ability to file posts under folders"] = "Abilita la raccolta dei tuoi articoli in cartelle";
-App::$strings["Dislike Posts"] = "Non mi piace";
-App::$strings["Ability to dislike posts/comments"] = "Abilità la funzionalità \"non mi piace\" per i tuoi post";
-App::$strings["Star Posts"] = "Post con stella";
-App::$strings["Ability to mark special posts with a star indicator"] = "Mostra la stella per segnare i post preferiti";
-App::$strings["Tag Cloud"] = "Nuvola di tag";
-App::$strings["Provide a personal tag cloud on your channel page"] = "Mostra la nuvola dei tag che usi di più sulla pagina del tuo canale";
-App::$strings["Unable to obtain identity information from database"] = "Impossibile ottenere le informazioni di identificazione dal database";
-App::$strings["Empty name"] = "Nome vuoto";
-App::$strings["Name too long"] = "Nome troppo lungo";
-App::$strings["No account identifier"] = "Account senza identificativo";
-App::$strings["Nickname is required."] = "Il nome dell'account è obbligatorio.";
-App::$strings["Reserved nickname. Please choose another."] = "Nome utente riservato. Per favore scegline un altro.";
-App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Il nome dell'account è già in uso oppure ha dei caratteri non supportati.";
-App::$strings["Unable to retrieve created identity"] = "Impossibile caricare l'identità creata";
-App::$strings["Default Profile"] = "Profilo predefinito";
-App::$strings["Requested channel is not available."] = "Il canale che cerchi non è disponibile.";
+App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "L'autenticazione tramite il tuo hub non è disponibile. Puoi provare a disconnetterti per tentare di nuovo.";
+App::$strings["Welcome %s. Remote authentication successful."] = "Ciao %s. L'accesso tramite il tuo hub è avvenuto con successo.";
App::$strings["Requested profile is not available."] = "Il profilo richiesto non è disponibile.";
-App::$strings["Change profile photo"] = "Cambia la foto del profilo";
-App::$strings["Create New Profile"] = "Crea un nuovo profilo";
-App::$strings["Profile Image"] = "Immagine del profilo";
-App::$strings["Visible to everybody"] = "Visibile a tutti";
-App::$strings["Edit visibility"] = "Cambia la visibilità";
-App::$strings["Gender:"] = "Sesso:";
-App::$strings["Status:"] = "Stato:";
-App::$strings["Homepage:"] = "Home page:";
-App::$strings["Online Now"] = "Online adesso";
-App::$strings["g A l F d"] = "g A l d F";
-App::$strings["F d"] = "d F";
-App::$strings["[today]"] = "[oggi]";
-App::$strings["Birthday Reminders"] = "Promemoria compleanni";
-App::$strings["Birthdays this week:"] = "Compleanni questa settimana:";
-App::$strings["[No description]"] = "[Nessuna descrizione]";
-App::$strings["Event Reminders"] = "Promemoria";
-App::$strings["Events this week:"] = "Eventi della settimana:";
-App::$strings["Full Name:"] = "Nome completo:";
-App::$strings["Like this channel"] = "Mi piace questo canale";
-App::$strings["j F, Y"] = "j F Y";
-App::$strings["j F"] = "j F";
-App::$strings["Birthday:"] = "Compleanno:";
-App::$strings["Age:"] = "Età:";
-App::$strings["for %1\$d %2\$s"] = "per %1\$d %2\$s";
-App::$strings["Sexual Preference:"] = "Preferenze sessuali:";
-App::$strings["Hometown:"] = "Città dove vivo:";
-App::$strings["Tags:"] = "Tag:";
-App::$strings["Political Views:"] = "Orientamento politico:";
-App::$strings["Religion:"] = "Religione:";
-App::$strings["About:"] = "Informazioni:";
-App::$strings["Hobbies/Interests:"] = "Interessi e hobby:";
-App::$strings["Likes:"] = "Mi piace:";
-App::$strings["Dislikes:"] = "Non mi piace:";
-App::$strings["Contact information and Social Networks:"] = "Contatti e social network:";
-App::$strings["My other channels:"] = "I miei altri canali:";
-App::$strings["Musical interests:"] = "Gusti musicali:";
-App::$strings["Books, literature:"] = "Libri, letteratura:";
-App::$strings["Television:"] = "Televisione:";
-App::$strings["Film/dance/culture/entertainment:"] = "Film, danza, cultura, intrattenimento:";
-App::$strings["Love/Romance:"] = "Amore:";
-App::$strings["Work/employment:"] = "Lavoro:";
-App::$strings["School/education:"] = "Scuola:";
-App::$strings["Like this thing"] = "Mi piace";
-App::$strings["cover photo"] = "Copertina del canale";
-App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Non posso creare un canale con un identificativo che già esiste su questo sistema. L'importazione è fallita.";
-App::$strings["Channel clone failed. Import failed."] = "Impossibile clonare il canale. L'importazione è fallita.";
-App::$strings["Cloned channel not found. Import failed."] = "Impossibile trovare il canale clonato. L'importazione è fallita.";
-App::$strings["Permission denied"] = "Permesso negato";
-App::$strings["(Unknown)"] = "(Sconosciuto)";
-App::$strings["Visible to anybody on the internet."] = "Visibile a chiunque su internet.";
-App::$strings["Visible to you only."] = "Visibile solo a te.";
-App::$strings["Visible to anybody in this network."] = "Visibile a tutti su questa rete.";
-App::$strings["Visible to anybody authenticated."] = "Visibile a chiunque sia autenticato.";
-App::$strings["Visible to anybody on %s."] = "Visibile a tutti su %s.";
-App::$strings["Visible to all connections."] = "Visibile a tutti coloro che ti seguono.";
-App::$strings["Visible to approved connections."] = "Visibile ai contatti approvati.";
-App::$strings["Visible to specific connections."] = "Visibile ad alcuni contatti scelti.";
-App::$strings["Item not found."] = "Elemento non trovato.";
-App::$strings["Privacy group not found."] = "Gruppo di canali non trovato.";
-App::$strings["Privacy group is empty."] = "Gruppo di canali vuoto.";
-App::$strings["Privacy group: %s"] = "Gruppo di canali: %s";
-App::$strings["Connection: %s"] = "Contatto: %s";
-App::$strings["Connection not found."] = "Contatto non trovato.";
-App::$strings["female"] = "femmina";
-App::$strings["%1\$s updated her %2\$s"] = "Aggiornamento: %2\$s di %1\$s";
-App::$strings["male"] = "maschio";
-App::$strings["%1\$s updated his %2\$s"] = "Aggiornamento: %2\$s di %1\$s";
-App::$strings["%1\$s updated their %2\$s"] = "Aggiornamento: %2\$s di %1\$s";
-App::$strings["profile photo"] = "foto del profilo";
-App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un gruppo di canali con lo stesso nome esisteva in precedenza ed è stato ripristinato. I vecchi permessi saranno applicati ai nuovi canali. Se non vuoi che ciò accada, devi creare un gruppo con un nome diverso.";
-App::$strings["Add new connections to this privacy group"] = "Aggiungi nuovi contatti a questo gruppo di canali";
-App::$strings["All Channels"] = "Tutti i canali";
-App::$strings["edit"] = "modifica";
-App::$strings["Edit group"] = "Modifica il gruppo";
-App::$strings["Add privacy group"] = "Crea un gruppo di canali";
-App::$strings["Channels not in any privacy group"] = "Canali che non sono in nessun gruppo";
-App::$strings["Image exceeds website size limit of %lu bytes"] = "L'immagine supera il limite massimo di %lu bytes";
-App::$strings["Image file is empty."] = "Il file dell'immagine è vuoto.";
-App::$strings["Unable to process image"] = "Impossibile elaborare l'immagine";
-App::$strings["Photo storage failed."] = "Impossibile salvare la foto.";
-App::$strings["a new photo"] = "una nuova foto";
-App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s ha pubblicato %2\$s su %3\$s";
-App::$strings["Upload New Photos"] = "Carica nuove foto";
-App::$strings["prev"] = "prec";
-App::$strings["first"] = "inizio";
-App::$strings["last"] = "fine";
-App::$strings["next"] = "succ";
-App::$strings["older"] = "più recenti";
-App::$strings["newer"] = "più nuovi";
-App::$strings["No connections"] = "Nessun contatto";
-App::$strings["View all %s connections"] = "Mostra tutti i %s contatti";
-App::$strings["poke"] = "poke";
-App::$strings["ping"] = "ping";
-App::$strings["pinged"] = "ha effettuato un ping";
-App::$strings["prod"] = "spintone";
-App::$strings["prodded"] = "ha ricevuto uno spintone";
-App::$strings["slap"] = "schiaffo";
-App::$strings["slapped"] = "ha ricevuto uno schiaffo";
-App::$strings["finger"] = "finger";
-App::$strings["fingered"] = "ha ricevuto un finger";
-App::$strings["rebuff"] = "rifiuto";
-App::$strings["rebuffed"] = "ha ricevuto un rifiuto";
-App::$strings["happy"] = "felice";
-App::$strings["sad"] = "triste";
-App::$strings["mellow"] = "calmo";
-App::$strings["tired"] = "stanco";
-App::$strings["perky"] = "vivace";
-App::$strings["angry"] = "arrabbiato";
-App::$strings["stupefied"] = "stupito";
-App::$strings["puzzled"] = "confuso";
-App::$strings["interested"] = "attento";
-App::$strings["bitter"] = "amaro";
-App::$strings["cheerful"] = "allegro";
-App::$strings["alive"] = "vivace";
-App::$strings["annoyed"] = "seccato";
-App::$strings["anxious"] = "ansioso";
-App::$strings["cranky"] = "irritabile";
-App::$strings["disturbed"] = "turbato";
-App::$strings["frustrated"] = "frustrato";
-App::$strings["depressed"] = "in depressione";
-App::$strings["motivated"] = "motivato";
-App::$strings["relaxed"] = "rilassato";
-App::$strings["surprised"] = "sorpreso";
-App::$strings["May"] = "Mag";
-App::$strings["Unknown Attachment"] = "Allegato non riconoscuto";
-App::$strings["unknown"] = "sconosciuta";
-App::$strings["remove category"] = "rimuovi la categoria";
-App::$strings["remove from file"] = "rimuovi dal file";
-App::$strings["Click to open/close"] = "Clicca per aprire/chiudere";
-App::$strings["Link to Source"] = "Link al sito d'origine";
-App::$strings["default"] = "predefinito";
-App::$strings["Page layout"] = "Layout della pagina";
-App::$strings["You can create your own with the layouts tool"] = "Puoi creare un tuo layout dalla configurazione delle pagine web";
-App::$strings["Page content type"] = "Tipo di contenuto della pagina";
-App::$strings["Select an alternate language"] = "Seleziona una lingua diversa";
-App::$strings["activity"] = "l'attività";
-App::$strings["Design Tools"] = "Strumenti di design";
-App::$strings["Blocks"] = "Block";
-App::$strings["Menus"] = "Menù";
-App::$strings["Layouts"] = "Layout";
-App::$strings["Pages"] = "Pagine";
-App::$strings["No recipient provided."] = "Devi scegliere un destinatario.";
-App::$strings["[no subject]"] = "[nessun titolo]";
-App::$strings["Unable to determine sender."] = "Impossibile determinare il mittente.";
-App::$strings["Stored post could not be verified."] = "Non è stato possibile verificare il post.";
-App::$strings["Can view my normal stream and posts"] = "Può vedere i miei contenuti e i post normali";
-App::$strings["Can view my default channel profile"] = "Può vedere il profilo predefinito del canale";
-App::$strings["Can view my connections"] = "Può vedere i miei contatti";
-App::$strings["Can view my file storage and photos"] = "Può vedere il mio archivio file e foto";
-App::$strings["Can view my webpages"] = "Può vedere le mie pagine web";
-App::$strings["Can send me their channel stream and posts"] = "È tra i canali che seguo";
-App::$strings["Can post on my channel page (\"wall\")"] = "Può scrivere sulla bacheca del mio canale";
-App::$strings["Can comment on or like my posts"] = "Può commentare o aggiungere \"mi piace\" ai miei post";
-App::$strings["Can send me private mail messages"] = "Può inviarmi messaggi privati";
-App::$strings["Can like/dislike stuff"] = "Può aggiungere \"mi piace\" a tutto il resto";
-App::$strings["Profiles and things other than posts/comments"] = "Può aggiungere \"mi piace\" a tutto ciò che non riguarda i post, come per esempio il profilo";
-App::$strings["Can forward to all my channel contacts via post @mentions"] = "Può inoltrare post a tutti i contatti del canale tramite una @menzione";
-App::$strings["Advanced - useful for creating group forum channels"] = "Impostazione avanzata - utile per creare un canale-forum di discussione";
-App::$strings["Can chat with me (when available)"] = "Può aprire una chat con me (se disponibile)";
-App::$strings["Can write to my file storage and photos"] = "Può modificare il mio archivio file e foto";
-App::$strings["Can edit my webpages"] = "Può modificare le mie pagine web";
-App::$strings["Can source my public posts in derived channels"] = "Può usare i miei post pubblici per creare canali derivati";
-App::$strings["Somewhat advanced - very useful in open communities"] = "Piuttosto avanzato - molto utile nelle comunità aperte";
-App::$strings["Can administer my channel resources"] = "Può amministrare i contenuti del mio canale";
-App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Impostazione pericolosa - lasciare il valore predefinito se non si è assolutamente sicuri";
-App::$strings["Social Networking"] = "Social network";
-App::$strings["Social - Mostly Public"] = "Social - Prevalentemente pubblico";
-App::$strings["Social - Restricted"] = "Social - Con restrizioni";
-App::$strings["Social - Private"] = "Social - Privato";
-App::$strings["Community Forum"] = "Forum di discussione";
-App::$strings["Forum - Mostly Public"] = "Social - Prevalentemente pubblico";
-App::$strings["Forum - Restricted"] = "Forum - Con restrizioni";
-App::$strings["Forum - Private"] = "Forum - Privato";
-App::$strings["Feed Republish"] = "Aggregatore di feed esterni";
-App::$strings["Feed - Mostly Public"] = "Feed - Prevalentemente pubblico";
-App::$strings["Feed - Restricted"] = "Feed - Con restrizioni";
-App::$strings["Special Purpose"] = "Per finalità speciali";
-App::$strings["Special - Celebrity/Soapbox"] = "Speciale - Pagina per fan";
-App::$strings["Special - Group Repository"] = "Speciale - Repository di gruppo";
-App::$strings["Custom/Expert Mode"] = "Personalizzazione per esperti";
-App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "I controlli di sicurezza sono falliti. Probabilmente è accaduto perché la pagina è stata tenuta aperta troppo a lungo (ore?) prima di inviare il contenuto.";
-App::$strings["Not a valid email address"] = "Email non valida";
-App::$strings["Your email domain is not among those allowed on this site"] = "Il dominio della tua email attualmente non è permesso su questo sito";
-App::$strings["Your email address is already registered at this site."] = "La tua email è già registrata su questo sito.";
-App::$strings["An invitation is required."] = "È necessario un invito.";
-App::$strings["Invitation could not be verified."] = "L'invito non può essere verificato.";
-App::$strings["Please enter the required information."] = "Inserisci le informazioni richieste.";
-App::$strings["Failed to store account information."] = "Non è stato possibile salvare le informazioni del tuo account.";
-App::$strings["Registration confirmation for %s"] = "Registrazione di %s confermata";
-App::$strings["Registration request at %s"] = "Richiesta di registrazione su %s";
-App::$strings["your registration password"] = "la password di registrazione";
-App::$strings["Registration details for %s"] = "Dettagli della registrazione di %s";
-App::$strings["Account approved."] = "Account approvato.";
-App::$strings["Registration revoked for %s"] = "Registrazione revocata per %s";
-App::$strings["Account verified. Please login."] = "Registrazione verificata. Adesso puoi effettuare login.";
-App::$strings["Click here to upgrade."] = "Clicca qui per aggiornare.";
-App::$strings["This action exceeds the limits set by your subscription plan."] = "Questa operazione supera i limiti del tuo abbonamento.";
-App::$strings["This action is not available under your subscription plan."] = "Questa operazione non è prevista dal tuo abbonamento.";
-App::$strings["Visible to your default audience"] = "Visibile secondo le impostazioni predefinite";
-App::$strings["Show"] = "Mostra";
-App::$strings["Don't show"] = "Non mostrare";
-App::$strings["Other networks and post services"] = "Invio ad altre reti o a siti esterni";
-App::$strings["Permissions"] = "Permessi";
-App::$strings["Missing room name"] = "Chat senza nome";
-App::$strings["Duplicate room name"] = "Il nome della chat è duplicato";
-App::$strings["Invalid room specifier."] = "Il nome della chat non è valido.";
-App::$strings["Room not found."] = "Chat non trovata.";
-App::$strings["Room is full"] = "La chat è al completo";
-App::$strings["New window"] = "Nuova finestra";
-App::$strings["Open the selected location in a different window or browser tab"] = "Apri l'indirizzo selezionato in una nuova scheda o finestra";
-App::$strings["User '%s' deleted"] = "Utente '%s' eliminato";
App::$strings["Some blurb about what to do when you're new here"] = "Qualche suggerimento per i nuovi utenti su cosa fare";
-App::$strings["network"] = "rete";
-App::$strings["RSS"] = "RSS";
-App::$strings["Authorize application connection"] = "Autorizza la app";
-App::$strings["Return to your app and insert this Securty Code:"] = "Torna alla app e inserisci questo codice di sicurezza:";
-App::$strings["Please login to continue."] = "Accedi al sito per continuare.";
-App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Vuoi autorizzare questa app ad accedere ai messaggi e ai contatti o creare nuovi messaggi per te?";
-App::$strings["App installed."] = "App installata";
-App::$strings["Malformed app."] = "L'app contiene errori";
-App::$strings["Embed code"] = "Inserisci il codice";
-App::$strings["Edit App"] = "Modifica app";
-App::$strings["Create App"] = "Crea una app";
-App::$strings["Name of app"] = "Nome app";
-App::$strings["Location (URL) of app"] = "Indirizzo (URL) della app";
-App::$strings["Description"] = "Descrizione";
-App::$strings["Photo icon URL"] = "URL icona";
-App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixel - facoltativa";
-App::$strings["Version ID"] = "ID versione";
-App::$strings["Price of app"] = "Prezzo app";
-App::$strings["Location (URL) to purchase app"] = "Indirizzo (URL) per acquistare la app";
-App::$strings["Item not available."] = "Elemento non disponibile.";
-App::$strings["Invalid item."] = "Elemento non valido.";
-App::$strings["Channel not found."] = "Canale non trovato.";
App::$strings["Block Name"] = "Nome del block";
+App::$strings["Blocks"] = "Block";
App::$strings["Block Title"] = "Titolo del block";
-App::$strings["Bookmark added"] = "Segnalibro aggiunto";
-App::$strings["My Bookmarks"] = "I miei segnalibri";
-App::$strings["My Connections Bookmarks"] = "I segnalibri dei miei contatti";
+App::$strings["Created"] = "Creato";
+App::$strings["Edited"] = "Modificato";
+App::$strings["Share"] = "Condividi";
+App::$strings["View"] = "Guarda";
+App::$strings["Channel not found."] = "Canale non trovato.";
+App::$strings["Permissions denied."] = "Permesso negato.";
+App::$strings["l, F j"] = "l j F";
+App::$strings["Link to Source"] = "Link al sito d'origine";
+App::$strings["Edit Event"] = "Modifica l'evento";
+App::$strings["Create Event"] = "Crea un evento";
+App::$strings["Previous"] = "Precendente";
+App::$strings["Next"] = "Successivo";
+App::$strings["Export"] = "Esporta";
+App::$strings["Import"] = "Importa";
+App::$strings["Submit"] = "Salva";
+App::$strings["Today"] = "Oggi";
App::$strings["You must be logged in to see this page."] = "Devi aver effettuato l'accesso per vedere questa pagina.";
App::$strings["Posts and comments"] = "Post e commenti";
App::$strings["Only posts"] = "Solo post";
App::$strings["Insufficient permissions. Request redirected to profile page."] = "Permessi insufficienti. Sarà visualizzata la pagina del profilo.";
-App::$strings["Public"] = "Pubblico";
App::$strings["Room not found"] = "Chat non trovata";
App::$strings["Leave Room"] = "Lascia la chat";
App::$strings["Delete Room"] = "Elimina questa chat";
App::$strings["I am away right now"] = "Non sono presente";
App::$strings["I am online"] = "Sono online";
App::$strings["Bookmark this room"] = "Aggiungi questa chat ai segnalibri";
+App::$strings["Please enter a link URL:"] = "Inserisci l'indirizzo del link:";
+App::$strings["Encrypt text"] = "Cifratura del messaggio";
+App::$strings["Insert web link"] = "Inserisci un indirizzo web";
App::$strings["Feature disabled."] = "Funzionalità disattivata.";
App::$strings["New Chatroom"] = "Nuova chat";
App::$strings["Chatroom name"] = "Nome chat";
App::$strings["Expiration of chats (minutes)"] = "Scadenza dei messaggi della chat (minuti)";
+App::$strings["Permissions"] = "Permessi";
App::$strings["%1\$s's Chatrooms"] = "Le chat di %1\$s";
App::$strings["No chatrooms available"] = "Nessuna chat disponibile";
App::$strings["Create New"] = "Crea nuova";
@@ -1080,9 +81,10 @@ App::$strings["Expiration"] = "Scadenza";
App::$strings["min"] = "min";
App::$strings["Away"] = "Assente";
App::$strings["Online"] = "Online";
-App::$strings["No channel."] = "Nessun canale.";
-App::$strings["Common connections"] = "Contatti in comune";
-App::$strings["No connections in common."] = "Nessun contatto in comune.";
+App::$strings["Invalid item."] = "Elemento non valido.";
+App::$strings["Bookmark added"] = "Segnalibro aggiunto";
+App::$strings["My Bookmarks"] = "I miei segnalibri";
+App::$strings["My Connections Bookmarks"] = "I segnalibri dei miei contatti";
App::$strings["Continue"] = "Continua";
App::$strings["Premium Channel Setup"] = "Canale premium - configurazione";
App::$strings["Enable premium channel connection restrictions"] = "Abilita le restrizioni del canale premium";
@@ -1092,42 +94,18 @@ App::$strings["Potential connections will then see the following text before pro
App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Continuando dichiaro di aver seguito tutte le indicazioni e le istruzioni fornite in questa pagina.";
App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(Il gestore del canale non ha fornito istruzioni specifiche)";
App::$strings["Restricted or Premium Channel"] = "Canale premium - con restrizioni";
-App::$strings["Blocked"] = "Bloccati";
-App::$strings["Ignored"] = "Ignorati";
-App::$strings["Hidden"] = "Nascosti";
-App::$strings["Archived"] = "Archiviati";
-App::$strings["New Connections"] = "Nuovi contatti";
-App::$strings["Show pending (new) connections"] = "Richieste di contatto in attesa";
-App::$strings["All Connections"] = "Tutti i contatti";
-App::$strings["Show all connections"] = "Mostra tutti i contatti";
-App::$strings["Only show blocked connections"] = "Mostra solo i contatti bloccati";
-App::$strings["Only show ignored connections"] = "Mostra solo i contatti ignorati";
-App::$strings["Only show archived connections"] = "Mostra solo i contatti archiviati";
-App::$strings["Only show hidden connections"] = "Mostra solo i contatti nascosti";
-App::$strings["Pending approval"] = "In attesa di conferma";
-App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-App::$strings["Edit connection"] = "Modifica il contatto";
-App::$strings["Delete connection"] = "Elimina il contatto";
-App::$strings["Channel address"] = "Indirizzo del canale";
-App::$strings["Network"] = "Network";
-App::$strings["Status"] = "Stato";
-App::$strings["Connected"] = "In contatto";
-App::$strings["Approve connection"] = "Approva questo contatto";
-App::$strings["Approve"] = "Approva";
-App::$strings["Ignore connection"] = "Ignora il contatto";
-App::$strings["Ignore"] = "Ignora";
-App::$strings["Recent activity"] = "Attività recenti";
-App::$strings["Search your connections"] = "Cerca tra i contatti";
-App::$strings["Connections search"] = "Ricerca tra i contatti";
App::$strings["Could not access contact record."] = "Non è possibile accedere alle informazioni sul contatto.";
App::$strings["Could not locate selected profile."] = "Non riesco a trovare il profilo selezionato.";
App::$strings["Connection updated."] = "Contatto aggiornato.";
App::$strings["Failed to update connection record."] = "Impossibile aggiornare le informazioni del contatto.";
App::$strings["is now connected to"] = "ha come nuovo contatto";
+App::$strings["No"] = "No";
+App::$strings["Yes"] = "Sì";
App::$strings["Could not access address book record."] = "Impossibile accedere alle informazioni della rubrica.";
App::$strings["Refresh failed - channel is currently unavailable."] = "Il canale non è disponibile - impossibile aggiornare.";
App::$strings["Unable to set address book parameters."] = "Impossibile impostare i parametri della rubrica.";
App::$strings["Connection has been removed."] = "Il contatto è stato rimosso.";
+App::$strings["View Profile"] = "Profilo";
App::$strings["View %s's profile"] = "Guarda il profilo di %s";
App::$strings["Refresh Permissions"] = "Modifica i permessi";
App::$strings["Fetch updated permissions"] = "Guarda e modifica i permessi assegnati";
@@ -1138,6 +116,7 @@ App::$strings["Block"] = "Blocca";
App::$strings["Block (or Unblock) all communications with this connection"] = "Blocca ogni interazione con questo contatto (abilita/disabilita)";
App::$strings["This connection is blocked!"] = "Questa connessione è tra quelle bloccate!";
App::$strings["Unignore"] = "Non ignorare";
+App::$strings["Ignore"] = "Ignora";
App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Ignora tutte le comunicazioni in arrivo da questo contatto (abilita/disabilita)";
App::$strings["This connection is ignored!"] = "Questa connessione è tra quelle ignorate!";
App::$strings["Unarchive"] = "Non archiviare";
@@ -1149,18 +128,27 @@ App::$strings["Hide"] = "Nascondi";
App::$strings["Hide or Unhide this connection from your other connections"] = "Nascondi questo contatto a tutti gli altri (abilita/disabilita)";
App::$strings["This connection is hidden!"] = "Questa connessione è tra quelle nascoste!";
App::$strings["Delete this connection"] = "Elimina questo contatto";
+App::$strings["Me"] = "Me";
+App::$strings["Family"] = "Famiglia";
+App::$strings["Friends"] = "Amici";
+App::$strings["Acquaintances"] = "Conoscenti";
+App::$strings["All"] = "Tutti";
App::$strings["Approve this connection"] = "Approva questo contatto";
App::$strings["Accept connection to allow communication"] = "Entra in contatto per poter comunicare";
App::$strings["Set Affinity"] = "Scegli l'affinità";
App::$strings["Set Profile"] = "Scegli il profilo da mostrare";
App::$strings["Set Affinity & Profile"] = "Affinità e profilo";
App::$strings["none"] = "--";
+App::$strings["Connection Default Permissions"] = "Permessi predefiniti dei nuovi contatti";
+App::$strings["Connection: %s"] = "Contatto: %s";
App::$strings["Apply these permissions automatically"] = "Applica automaticamente questi permessi";
App::$strings["Connection requests will be approved without your interaction"] = "Le richieste di entrare in contatto saranno approvate in automatico";
App::$strings["This connection's primary address is"] = "Indirizzo primario di questo canale";
App::$strings["Available locations:"] = "Indirizzi disponibili";
App::$strings["The permissions indicated on this page will be applied to all new connections."] = "I permessi indicati su questa pagina saranno applicati a tutti i nuovi contatti da ora in poi.";
+App::$strings["Connection Tools"] = "Gestione dei contatti";
App::$strings["Slide to adjust your degree of friendship"] = "Trascina per restringere il grado di amicizia da mostrare";
+App::$strings["Rating"] = "Valutazioni";
App::$strings["Slide to adjust your rating"] = "Trascina per cambiare la tua valutazione";
App::$strings["Optionally explain your rating"] = "Commento facoltativo";
App::$strings["Custom Filter"] = "Filtro personalizzato";
@@ -1177,7 +165,6 @@ App::$strings["Individual Permissions"] = "Permessi individuali";
App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Alcuni permessi derivano dalle <a href=\"settings\"><strong>impostazioni di privacy</strong></a> del tuo canale, che hanno priorità assoluta su qualsiasi altra impostazione scelta per i singoli contatti. Da questa pagina <strong>non</strong> puoi cambiarle.";
App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Alcuni permessi derivano dalle <a href=\"settings\"><strong>impostazioni di privacy</strong></a> del tuo canale, che hanno priorità assoluta su qualsiasi altra impostazione scelta per i singoli contatti. Le personalizzazioni che effettuerai qui potrebbero non essere effettive a meno che tu non cambi le impostazioni generali.";
App::$strings["Last update:"] = "Ultimo aggiornamento:";
-App::$strings["\$Projectname channel"] = "Canale \$Projectname";
App::$strings["Public access denied."] = "Accesso pubblico negato.";
App::$strings["%d rating"] = array(
0 => "%d valutazione",
@@ -1186,14 +173,21 @@ App::$strings["%d rating"] = array(
App::$strings["Gender: "] = "Sesso:";
App::$strings["Status: "] = "Stato:";
App::$strings["Homepage: "] = "Homepage:";
+App::$strings["Age:"] = "Età:";
+App::$strings["Location:"] = "Luogo:";
App::$strings["Description:"] = "Descrizione:";
+App::$strings["Hometown:"] = "Città dove vivo:";
+App::$strings["About:"] = "Informazioni:";
+App::$strings["Connect"] = "Aggiungi";
App::$strings["Public Forum:"] = "Forum pubblico:";
App::$strings["Keywords: "] = "Parole chiave:";
App::$strings["Don't suggest"] = "Non fornire suggerimenti";
App::$strings["Common connections:"] = "Contatti in comune:";
App::$strings["Global Directory"] = "Elenchi pubblici globali";
App::$strings["Local Directory"] = "Elenco canali su questo hub";
+App::$strings["Find"] = "Cerca";
App::$strings["Finding:"] = "Ricerca:";
+App::$strings["Channel Suggestions"] = "Canali suggeriti";
App::$strings["next page"] = "pagina successiva";
App::$strings["previous page"] = "pagina precedente";
App::$strings["Sort options"] = "Opzioni di ordinamento";
@@ -1202,46 +196,76 @@ App::$strings["Reverse Alphabetic"] = "Alfabetico inverso";
App::$strings["Newest to Oldest"] = "Prima i più recenti";
App::$strings["Oldest to Newest"] = "Prima i più vecchi";
App::$strings["No entries (some entries may be hidden)."] = "Nessun risultato (qualche elemento potrebbe essere nascosto).";
-App::$strings["This site is not a directory server"] = "Questo non è un directory server";
-App::$strings["This directory server requires an access token"] = "Questo directory server necessita di un token di autenticazione";
-App::$strings["Invalid message"] = "Messaggio non valido";
-App::$strings["no results"] = "nessun risultato";
-App::$strings["Delivery report for %1\$s"] = "Rapporto di consegna - %1\$s";
-App::$strings["channel sync processed"] = "sincronizzazione del canale effettuata";
-App::$strings["queued"] = "in coda";
-App::$strings["posted"] = "inviato";
-App::$strings["accepted for delivery"] = "accettato per la spedizione";
-App::$strings["updated"] = "aggiornato";
-App::$strings["update ignored"] = "aggiornamento ignorato";
-App::$strings["permission denied"] = "permessi non sufficienti";
-App::$strings["recipient not found"] = "Destinatario non trovato";
-App::$strings["mail recalled"] = "messaggio richiamato dal mittente";
-App::$strings["duplicate mail received"] = "ricevuto messaggio duplicato";
-App::$strings["mail delivered"] = "messaggio recapitato";
+App::$strings["Item not found."] = "Elemento non trovato.";
App::$strings["Item not found"] = "Elemento non trovato";
-App::$strings["Delete block?"] = "Vuoi eliminare questo block?";
-App::$strings["Insert YouTube video"] = "Inserisci video da YouTube";
-App::$strings["Insert Vorbis [.ogg] video"] = "Inserisci video Vorbis [.ogg]";
-App::$strings["Insert Vorbis [.ogg] audio"] = "Inserisci audio Vorbis [.ogg]";
+App::$strings["Title (optional)"] = "Titolo (facoltativo)";
App::$strings["Edit Block"] = "Modifica il block";
-App::$strings["Delete layout?"] = "Vuoi eliminare questo layout?";
-App::$strings["Layout Description (Optional)"] = "Descrizione del layout (facoltativa)";
-App::$strings["Layout Name"] = "Nome layout";
-App::$strings["Edit Layout"] = "Modifica il layout";
+App::$strings["No channel."] = "Nessun canale.";
+App::$strings["Common connections"] = "Contatti in comune";
+App::$strings["No connections in common."] = "Nessun contatto in comune.";
+App::$strings["Blocked"] = "Bloccati";
+App::$strings["Ignored"] = "Ignorati";
+App::$strings["Hidden"] = "Nascosti";
+App::$strings["Archived"] = "Archiviati";
+App::$strings["New"] = "Novità";
+App::$strings["New Connections"] = "Nuovi contatti";
+App::$strings["Show pending (new) connections"] = "Richieste di contatto in attesa";
+App::$strings["All Connections"] = "Tutti i contatti";
+App::$strings["Show all connections"] = "Mostra tutti i contatti";
+App::$strings["Only show blocked connections"] = "Mostra solo i contatti bloccati";
+App::$strings["Only show ignored connections"] = "Mostra solo i contatti ignorati";
+App::$strings["Only show archived connections"] = "Mostra solo i contatti archiviati";
+App::$strings["Only show hidden connections"] = "Mostra solo i contatti nascosti";
+App::$strings["Pending approval"] = "In attesa di conferma";
+App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
+App::$strings["Edit connection"] = "Modifica il contatto";
+App::$strings["Delete connection"] = "Elimina il contatto";
+App::$strings["Channel address"] = "Indirizzo del canale";
+App::$strings["Network"] = "Network";
+App::$strings["Status"] = "Stato";
+App::$strings["Connected"] = "In contatto";
+App::$strings["Approve connection"] = "Approva questo contatto";
+App::$strings["Approve"] = "Approva";
+App::$strings["Ignore connection"] = "Ignora il contatto";
+App::$strings["Recent activity"] = "Attività recenti";
+App::$strings["Connections"] = "Contatti";
+App::$strings["Search"] = "Cerca";
+App::$strings["Search your connections"] = "Cerca tra i contatti";
+App::$strings["Connections search"] = "Ricerca tra i contatti";
+App::$strings["Image uploaded but image cropping failed."] = "L'immagine è stata caricata, ma il non è stato possibile ritagliarla.";
+App::$strings["Cover Photos"] = "Copertine del canale";
+App::$strings["Image resize failed."] = "Il ridimensionamento dell'immagine è fallito.";
+App::$strings["Unable to process image"] = "Impossibile elaborare l'immagine";
+App::$strings["Image upload failed."] = "Il caricamento dell'immagine è fallito.";
+App::$strings["Unable to process image."] = "Impossibile elaborare l'immagine.";
+App::$strings["female"] = "femmina";
+App::$strings["%1\$s updated her %2\$s"] = "Aggiornamento: %2\$s di %1\$s";
+App::$strings["male"] = "maschio";
+App::$strings["%1\$s updated his %2\$s"] = "Aggiornamento: %2\$s di %1\$s";
+App::$strings["%1\$s updated their %2\$s"] = "Aggiornamento: %2\$s di %1\$s";
+App::$strings["cover photo"] = "Copertina del canale";
+App::$strings["Photo not available."] = "Foto non disponibile.";
+App::$strings["Upload File:"] = "Carica un file:";
+App::$strings["Select a profile:"] = "Seleziona un profilo:";
+App::$strings["Upload Cover Photo"] = "Carica una copertina";
+App::$strings["or"] = "o";
+App::$strings["skip this step"] = "salta questo passaggio";
+App::$strings["select a photo from your photo albums"] = "seleziona una foto dai tuoi album";
+App::$strings["Crop Image"] = "Ritaglia immagine";
+App::$strings["Please adjust the image cropping for optimum viewing."] = "Ritaglia l'immagine per migliorarne la visualizzazione.";
+App::$strings["Done Editing"] = "Modifica terminata";
App::$strings["Item is not editable"] = "L'elemento non è modificabile";
-App::$strings["Delete item?"] = "Eliminare questo elemento?";
App::$strings["Edit post"] = "Modifica post";
-App::$strings["Delete webpage?"] = "Vuoi eliminare questa pagina web?";
-App::$strings["Page link title"] = "Link del titolo";
-App::$strings["Edit Webpage"] = "Modifica la pagina web";
App::$strings["Calendar entries imported."] = "Le voci del calendario sono state importate.";
App::$strings["No calendar entries found."] = "Non sono state trovate voci del calendario.";
App::$strings["Event can not end before it has started."] = "Un evento non può terminare prima del suo inizio.";
App::$strings["Unable to generate preview."] = "Impossibile creare un'anteprima.";
App::$strings["Event title and start time are required."] = "Sono necessari il titolo e l'ora d'inizio dell'evento.";
App::$strings["Event not found."] = "Evento non trovato.";
+App::$strings["event"] = "l'evento";
App::$strings["Edit event title"] = "Modifica il titolo dell'evento";
App::$strings["Event title"] = "Titolo dell'evento";
+App::$strings["Required"] = "Obbligatorio";
App::$strings["Categories (comma-separated list)"] = "Categorie (separate da virgola)";
App::$strings["Edit Category"] = "Modifica la categoria";
App::$strings["Category"] = "Categoria";
@@ -1253,41 +277,50 @@ App::$strings["Finish date and time"] = "Data e ora di fine";
App::$strings["Adjust for viewer timezone"] = "Adatta al fuso orario di chi legge";
App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Importante per eventi che avvengono online ma con un certo fuso orario.";
App::$strings["Edit Description"] = "Modifica la descrizione";
+App::$strings["Description"] = "Descrizione";
App::$strings["Edit Location"] = "Modifica il luogo";
+App::$strings["Location"] = "Posizione geografica";
App::$strings["Share this event"] = "Condividi questo evento";
+App::$strings["Preview"] = "Anteprima";
+App::$strings["Permission settings"] = "Permessi dei tuoi contatti";
App::$strings["Advanced Options"] = "Opzioni avanzate";
-App::$strings["l, F j"] = "l j F";
App::$strings["Edit event"] = "Modifica l'evento";
App::$strings["Delete event"] = "Elimina l'evento";
App::$strings["calendar"] = "calendario";
-App::$strings["Edit Event"] = "Modifica l'evento";
-App::$strings["Create Event"] = "Crea un evento";
-App::$strings["Previous"] = "Precendente";
-App::$strings["Next"] = "Successivo";
-App::$strings["Today"] = "Oggi";
App::$strings["Event removed"] = "Evento eliminato";
App::$strings["Failed to remove event"] = "Impossibile eliminare l'evento";
-App::$strings["Share content from Firefox to \$Projectname"] = "Condividi i contenuti su \$Projectname da Firefox";
-App::$strings["Activate the Firefox \$Projectname provider"] = "Attiva Firefox Share per \$Projectname";
+App::$strings["Photos"] = "Foto";
+App::$strings["Cancel"] = "Annulla";
+App::$strings["This site is not a directory server"] = "Questo non è un directory server";
+App::$strings["This directory server requires an access token"] = "Questo directory server necessita di un token di autenticazione";
+App::$strings["Save to Folder:"] = "Salva nella cartella:";
App::$strings["- select -"] = "- scegli -";
-App::$strings["Permission Denied."] = "Permesso negato.";
-App::$strings["File not found."] = "File non trovato.";
-App::$strings["Edit file permissions"] = "Modifica i permessi del file";
-App::$strings["Set/edit permissions"] = "Modifica i permessi";
-App::$strings["Include all files and sub folders"] = "Includi tutti i file e le sottocartelle";
-App::$strings["Return to file list"] = "Torna all'elenco dei file";
-App::$strings["Copy/paste this code to attach file to a post"] = "Copia/incolla questo codice per far comparire il file in un post";
-App::$strings["Copy/paste this URL to link file from a web page"] = "Copia/incolla questo indirizzo in una pagina web per avere un link al file";
-App::$strings["Share this file"] = "Condividi questo file";
-App::$strings["Show URL to this file"] = "Mostra l'URL del file";
-App::$strings["Notify your contacts about this file"] = "Notifica ai contatti che hai caricato questo file";
+App::$strings["Save"] = "Salva";
+App::$strings["Invalid message"] = "Messaggio non valido";
+App::$strings["no results"] = "nessun risultato";
+App::$strings["Delivery report for %1\$s"] = "Rapporto di consegna - %1\$s";
+App::$strings["channel sync processed"] = "sincronizzazione del canale effettuata";
+App::$strings["queued"] = "in coda";
+App::$strings["posted"] = "inviato";
+App::$strings["accepted for delivery"] = "accettato per la spedizione";
+App::$strings["updated"] = "aggiornato";
+App::$strings["update ignored"] = "aggiornamento ignorato";
+App::$strings["permission denied"] = "permessi non sufficienti";
+App::$strings["recipient not found"] = "Destinatario non trovato";
+App::$strings["mail recalled"] = "messaggio richiamato dal mittente";
+App::$strings["duplicate mail received"] = "ricevuto messaggio duplicato";
+App::$strings["mail delivered"] = "messaggio recapitato";
+App::$strings["Layout Name"] = "Nome layout";
+App::$strings["Layout Description (Optional)"] = "Descrizione del layout (facoltativa)";
+App::$strings["Edit Layout"] = "Modifica il layout";
+App::$strings["Page link"] = "Link alla pagina";
+App::$strings["Edit Webpage"] = "Modifica la pagina web";
App::$strings["Channel added."] = "Canale aggiunto.";
-App::$strings["Contact not found."] = "Contatto non trovato.";
-App::$strings["Friend suggestion sent."] = "Suggerimento di amicizia inviato.";
-App::$strings["Suggest Friends"] = "Suggerisci amici";
-App::$strings["Suggest a friend for %s"] = "Suggerisci un amico a %s";
+App::$strings["network"] = "rete";
+App::$strings["RSS"] = "RSS";
App::$strings["Privacy group created."] = "Gruppo di canali creato.";
App::$strings["Could not create privacy group."] = "Impossibile creare il gruppo di canali.";
+App::$strings["Privacy group not found."] = "Gruppo di canali non trovato.";
App::$strings["Privacy group updated."] = "Gruppo di canali aggiornato.";
App::$strings["Create a group of channels."] = "Crea un gruppo di canali.";
App::$strings["Privacy group name: "] = "Nome del gruppo di canali:";
@@ -1298,36 +331,37 @@ App::$strings["Privacy group editor"] = "Editor dei gruppi di canali";
App::$strings["Members"] = "Membri";
App::$strings["All Connected Channels"] = "Tutti i canali connessi";
App::$strings["Click on a channel to add or remove."] = "Clicca su un canale per aggiungerlo o rimuoverlo.";
+App::$strings["Share content from Firefox to \$Projectname"] = "Condividi i contenuti su \$Projectname da Firefox";
+App::$strings["Activate the Firefox \$Projectname provider"] = "Attiva Firefox Share per \$Projectname";
+App::$strings["Authorize application connection"] = "Autorizza la app";
+App::$strings["Return to your app and insert this Securty Code:"] = "Torna alla app e inserisci questo codice di sicurezza:";
+App::$strings["Please login to continue."] = "Accedi al sito per continuare.";
+App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Vuoi autorizzare questa app ad accedere ai messaggi e ai contatti o creare nuovi messaggi per te?";
App::$strings["Documentation Search"] = "Ricerca nella guida";
App::$strings["Help:"] = "Guida:";
+App::$strings["Help"] = "Guida";
App::$strings["\$Projectname Documentation"] = "Guida di \$Projectname";
-App::$strings["\$Projectname"] = "\$Projectname";
-App::$strings["Welcome to %s"] = "%s ti dà il benvenuto";
-App::$strings["First Name"] = "Nome";
-App::$strings["Last Name"] = "Cognome";
-App::$strings["Nickname"] = "Nick";
-App::$strings["Full Name"] = "Nome e cognome";
-App::$strings["Profile Photo 16px"] = "Foto del profilo 16px";
-App::$strings["Profile Photo 32px"] = "Foto del profilo 32px";
-App::$strings["Profile Photo 48px"] = "Foto del profilo 48px";
-App::$strings["Profile Photo 64px"] = "Foto del profilo 64px";
-App::$strings["Profile Photo 80px"] = "Foto del profilo 80px";
-App::$strings["Profile Photo 128px"] = "Foto del profilo 128px";
-App::$strings["Timezone"] = "Fuso orario";
-App::$strings["Homepage URL"] = "Indirizzo home page";
-App::$strings["Birth Year"] = "Anno di nascita";
-App::$strings["Birth Month"] = "Mese di nascita";
-App::$strings["Birth Day"] = "Giorno di nascita";
-App::$strings["Birthdate"] = "Data di nascita";
-App::$strings["Gender"] = "Sesso";
-App::$strings["%s element installed"] = "%s elemento installato";
-App::$strings["%s element installation failed"] = "Elementi con installazione fallita: %s";
+App::$strings["Permission Denied."] = "Permesso negato.";
+App::$strings["File not found."] = "File non trovato.";
+App::$strings["Edit file permissions"] = "Modifica i permessi del file";
+App::$strings["Set/edit permissions"] = "Modifica i permessi";
+App::$strings["Include all files and sub folders"] = "Includi tutti i file e le sottocartelle";
+App::$strings["Return to file list"] = "Torna all'elenco dei file";
+App::$strings["Copy/paste this code to attach file to a post"] = "Copia/incolla questo codice per far comparire il file in un post";
+App::$strings["Copy/paste this URL to link file from a web page"] = "Copia/incolla questo indirizzo in una pagina web per avere un link al file";
+App::$strings["Share this file"] = "Condividi questo file";
+App::$strings["Show URL to this file"] = "Mostra l'URL del file";
+App::$strings["Notify your contacts about this file"] = "Notifica ai contatti che hai caricato questo file";
+App::$strings["Apps"] = "App";
+App::$strings["Item not available."] = "Elemento non disponibile.";
App::$strings["Your service plan only allows %d channels."] = "Il tuo account permette di creare al massimo %d canali.";
App::$strings["Nothing to import."] = "Non c'è niente da importare.";
App::$strings["Unable to download data from old server"] = "Impossibile importare i dati dal vecchio hub";
App::$strings["Imported file is empty."] = "Il file da importare è vuoto.";
App::$strings["Warning: Database versions differ by %1\$d updates."] = "Attenzione: le versioni di database differiscono di %1\$d aggiornamenti.";
+App::$strings["Cloned channel not found. Import failed."] = "Impossibile trovare il canale clonato. L'importazione è fallita.";
App::$strings["No channel. Import failed."] = "Nessun canale. Import fallito.";
+App::$strings["Import completed."] = "L'importazione è terminata con successo.";
App::$strings["You must be logged in to use this feature."] = "Per questa funzionalità devi aver effettuato l'accesso.";
App::$strings["Import Channel"] = "Importa un canale";
App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "Usa questo modulo per importare un tuo canale da un altro hub. Puoi ottenere i dati identificativi del canale direttamente dall'altro hub oppure tramite un file esportato in precedenza.";
@@ -1340,28 +374,6 @@ App::$strings["For either option, please choose whether to make this hub your ne
App::$strings["Make this hub my primary location"] = "Rendi questo hub il mio indirizzo primario";
App::$strings["Import existing posts if possible (experimental - limited by available memory"] = "Importa i contenuti pubblicati, se possibile (sperimentale)";
App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Questa funzione potrebbe impiegare molto tempo a terminare. Per favore lanciala *una volta sola* e resta su questa pagina finché non avrà finito.";
-App::$strings["Import completed"] = "Importazione completata";
-App::$strings["Import Items"] = "Importa i contenuti";
-App::$strings["Use this form to import existing posts and content from an export file."] = "Usa questa funzionalità per importare i vecchi contenuti e i post da un file esportato in precedenza.";
-App::$strings["Total invitation limit exceeded."] = "Hai superato il numero massimo di inviti.";
-App::$strings["%s : Not a valid email address."] = "%s: non è un indirizzo email valido.";
-App::$strings["Please join us on \$Projectname"] = "Unisciti a noi su \$Projectname";
-App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Hai superato il numero massimo di inviti. Contatta l'amministratore se necessario.";
-App::$strings["%s : Message delivery failed."] = "%s: la consegna del messaggio è fallita.";
-App::$strings["%d message sent."] = array(
- 0 => "%d messaggio inviato.",
- 1 => "%d messaggi inviati.",
-);
-App::$strings["You have no more invitations available"] = "Non hai altri inviti disponibili";
-App::$strings["Send invitations"] = "Spedisci inviti";
-App::$strings["Enter email addresses, one per line:"] = "Inserisci gli indirizzi email, uno per riga:";
-App::$strings["Your message:"] = "Il tuo messaggio:";
-App::$strings["Please join my community on \$Projectname."] = "Entra nella mia comunità su \$Projectname.";
-App::$strings["You will need to supply this invitation code:"] = "Dovrai fornire questo codice invito:";
-App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Registrati su qualsiasi server \$Projectname (sono tutti interconnessi)";
-App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Inserisci il mio indirizzo \$Projectname nel riquadro di ricerca del sito.";
-App::$strings["or visit"] = "oppure visita";
-App::$strings["3. Click [Connect]"] = "3. Clicca su [Aggiungi]";
App::$strings["Unable to locate original post."] = "Impossibile trovare il messaggio originale.";
App::$strings["Empty post discarded."] = "Il post vuoto è stato ignorato.";
App::$strings["Executable content type not permitted to this channel."] = "I contenuti eseguibili non sono permessi su questo canale.";
@@ -1370,16 +382,52 @@ App::$strings["System error. Post not saved."] = "Errore di sistema. Post non sa
App::$strings["Unable to obtain post information from database."] = "Impossibile caricare il post dal database.";
App::$strings["You have reached your limit of %1$.0f top level posts."] = "Hai raggiunto il limite massimo di %1$.0f post sulla pagina principale.";
App::$strings["You have reached your limit of %1$.0f webpages."] = "Hai raggiunto il limite massimo di %1$.0f pagine web.";
+App::$strings["Layouts"] = "Layout";
App::$strings["Comanche page description language help"] = "Guida di Comanche Page Description Language";
App::$strings["Layout Description"] = "Descrizione del layout";
App::$strings["Download PDL file"] = "Scarica il file PDL";
+App::$strings["\$Projectname"] = "\$Projectname";
+App::$strings["Welcome to %s"] = "%s ti dà il benvenuto";
+App::$strings["First Name"] = "Nome";
+App::$strings["Last Name"] = "Cognome";
+App::$strings["Nickname"] = "Nick";
+App::$strings["Full Name"] = "Nome e cognome";
+App::$strings["Email"] = "Email";
+App::$strings["Profile Photo"] = "Foto del profilo";
+App::$strings["Profile Photo 16px"] = "Foto del profilo 16px";
+App::$strings["Profile Photo 32px"] = "Foto del profilo 32px";
+App::$strings["Profile Photo 48px"] = "Foto del profilo 48px";
+App::$strings["Profile Photo 64px"] = "Foto del profilo 64px";
+App::$strings["Profile Photo 80px"] = "Foto del profilo 80px";
+App::$strings["Profile Photo 128px"] = "Foto del profilo 128px";
+App::$strings["Timezone"] = "Fuso orario";
+App::$strings["Homepage URL"] = "Indirizzo home page";
+App::$strings["Language"] = "Lingua";
+App::$strings["Birth Year"] = "Anno di nascita";
+App::$strings["Birth Month"] = "Mese di nascita";
+App::$strings["Birth Day"] = "Giorno di nascita";
+App::$strings["Birthdate"] = "Data di nascita";
+App::$strings["Gender"] = "Sesso";
+App::$strings["Male"] = "Maschio";
+App::$strings["Female"] = "Femmina";
+App::$strings["webpage"] = "pagina web";
+App::$strings["block"] = "block";
+App::$strings["layout"] = "layout";
+App::$strings["menu"] = "menu";
+App::$strings["%s element installed"] = "%s elemento installato";
+App::$strings["%s element installation failed"] = "Elementi con installazione fallita: %s";
App::$strings["Like/Dislike"] = "Mi piace/Non mi piace";
App::$strings["This action is restricted to members."] = "Questa funzionalità è riservata agli iscritti.";
App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "Per continuare devi <a href=\"rmagic\">accedere con il tuo identificativo \$Projectname</a> o <a href=\"register\">registrarti come nuovo utente \$Projectname</a>.";
App::$strings["Invalid request."] = "Richiesta non valida.";
+App::$strings["channel"] = "il canale";
App::$strings["thing"] = "Oggetto";
App::$strings["Channel unavailable."] = "Canale non trovato.";
App::$strings["Previous action reversed."] = "Il comando precedente è stato annullato.";
+App::$strings["photo"] = "la foto";
+App::$strings["status"] = "il messaggio di stato";
+App::$strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s piace %3\$s di %2\$s";
+App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s non piace %3\$s di %2\$s";
App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%3\$s di %2\$s: %1\$s è d'accordo";
App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%3\$s di %2\$s: %1\$s non è d'accordo";
App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%3\$s di %2\$s: %1\$s non si esprime";
@@ -1388,6 +436,28 @@ App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%3\$s di %2\$s: %1\$s n
App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%3\$s di %2\$s: %1\$s forse partecipa";
App::$strings["Action completed."] = "Comando completato.";
App::$strings["Thank you."] = "Grazie.";
+App::$strings["Import completed"] = "Importazione completata";
+App::$strings["Import Items"] = "Importa i contenuti";
+App::$strings["Use this form to import existing posts and content from an export file."] = "Usa questa funzionalità per importare i vecchi contenuti e i post da un file esportato in precedenza.";
+App::$strings["Total invitation limit exceeded."] = "Hai superato il numero massimo di inviti.";
+App::$strings["%s : Not a valid email address."] = "%s: non è un indirizzo email valido.";
+App::$strings["Please join us on \$Projectname"] = "Unisciti a noi su \$Projectname";
+App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Hai superato il numero massimo di inviti. Contatta l'amministratore se necessario.";
+App::$strings["%s : Message delivery failed."] = "%s: la consegna del messaggio è fallita.";
+App::$strings["%d message sent."] = array(
+ 0 => "%d messaggio inviato.",
+ 1 => "%d messaggi inviati.",
+);
+App::$strings["You have no more invitations available"] = "Non hai altri inviti disponibili";
+App::$strings["Send invitations"] = "Spedisci inviti";
+App::$strings["Enter email addresses, one per line:"] = "Inserisci gli indirizzi email, uno per riga:";
+App::$strings["Your message:"] = "Il tuo messaggio:";
+App::$strings["Please join my community on \$Projectname."] = "Entra nella mia comunità su \$Projectname.";
+App::$strings["You will need to supply this invitation code:"] = "Dovrai fornire questo codice invito:";
+App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Registrati su qualsiasi server \$Projectname (sono tutti interconnessi)";
+App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Inserisci il mio indirizzo \$Projectname nel riquadro di ricerca del sito.";
+App::$strings["or visit"] = "oppure visita";
+App::$strings["3. Click [Connect]"] = "3. Clicca su [Aggiungi]";
App::$strings["Remote privacy information not available."] = "Le informazioni remote sulla privacy non sono disponibili.";
App::$strings["Visible to:"] = "Visibile a:";
App::$strings["Location not found."] = "Indirizzo non trovato.";
@@ -1403,9 +473,6 @@ App::$strings["Sync Now"] = "Sincronizza ora";
App::$strings["Please wait several minutes between consecutive operations."] = "Si raccomanda di attendere alcuni minuti prima di effettuare una nuova sincronizzazione.";
App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Quando possibile, riduci il numero di cloni del tuo canale effettuando il login sul relativo hub e rimuovendoli.";
App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Usa questo modulo per abbandonare un canale su un hub che non è più funzionante.";
-App::$strings["sent you a private message"] = "ti ha inviato un messaggio privato";
-App::$strings["added your channel"] = "ha aggiunto il tuo canale";
-App::$strings["posted an event"] = "ha creato un evento";
App::$strings["Hub not found."] = "Hub non trovato.";
App::$strings["Unable to lookup recipient."] = "Impossibile associare un destinatario.";
App::$strings["Unable to communicate with requested channel."] = "Impossibile comunicare con il canale richiesto.";
@@ -1414,11 +481,14 @@ App::$strings["Selected channel has private message restrictions. Send failed."]
App::$strings["Messages"] = "Messaggi";
App::$strings["Message recalled."] = "Messaggio revocato.";
App::$strings["Conversation removed."] = "Conversazione rimossa.";
+App::$strings["Expires YYYY-MM-DD HH:MM"] = "Scade il YYYY-MM-DD HH:MM";
App::$strings["Requested channel is not in this network"] = "Il canale cercato non è in questa rete";
App::$strings["Send Private Message"] = "Invia un messaggio privato";
App::$strings["To:"] = "A:";
App::$strings["Subject:"] = "Oggetto:";
+App::$strings["Attach file"] = "Allega file";
App::$strings["Send"] = "Invia";
+App::$strings["Set expiration date"] = "Data di scadenza";
App::$strings["Delete message"] = "Elimina il messaggio";
App::$strings["Delivery report"] = "Rapporto di trasmissione";
App::$strings["Recall message"] = "Revoca il messaggio";
@@ -1429,6 +499,7 @@ App::$strings["Send Reply"] = "Invia la risposta";
App::$strings["Your message for %s (%s):"] = "Il tuo messaggio per %s (%s):";
App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Hai creato %1$.0f dei %2$.0f canali permessi.";
App::$strings["Create a new channel"] = "Crea un nuovo canale";
+App::$strings["Channel Manager"] = "Gestione canali";
App::$strings["Current Channel"] = "Canale attuale";
App::$strings["Switch to one of your channels by selecting it."] = "Seleziona l'altro canale a cui vuoi passare.";
App::$strings["Default Channel"] = "Canale predefinito";
@@ -1436,10 +507,22 @@ App::$strings["Make Default"] = "Rendi predefinito";
App::$strings["%d new messages"] = "%d nuovi messaggi";
App::$strings["%d new introductions"] = "%d nuove richieste di entrare in contatto";
App::$strings["Delegated Channel"] = "Canale delegato";
-App::$strings["Profile Match"] = "Profili corrispondenti";
-App::$strings["No keywords to match. Please add keywords to your default profile."] = "Non hai scritto parole chiave. Aggiungi parole chiave al tuo profilo predefinito per comparire nelle ricerche.";
-App::$strings["is interested in:"] = "interessi personali:";
-App::$strings["No matches"] = "Nessun risultato";
+App::$strings["No valid account found."] = "Nessun account valido trovato.";
+App::$strings["Password reset request issued. Check your email."] = "La richiesta per reimpostare la password è stata inviata. Controlla la tua email.";
+App::$strings["Site Member (%s)"] = "Utente del sito (%s)";
+App::$strings["Password reset requested at %s"] = "È stato richiesto di reimpostare password su %s";
+App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La richiesta non può essere verificata (potresti averla già usata precedentemente). La password non sarà reimpostata.";
+App::$strings["Password Reset"] = "Reimposta la password";
+App::$strings["Your password has been reset as requested."] = "La password è stata reimpostata come richiesto.";
+App::$strings["Your new password is"] = "La tua nuova password è";
+App::$strings["Save or copy your new password - and then"] = "Salva o copia la tua nuova password, quindi";
+App::$strings["click here to login"] = "clicca qui per accedere";
+App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Puoi cambiare la tua password dalla pagina delle <em>Impostazioni</em> dopo aver effettuato l'accesso.";
+App::$strings["Your password has changed at %s"] = "La tua password su %s è cambiata";
+App::$strings["Forgot your Password?"] = "Hai dimenticato la password?";
+App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Inserisci il tuo indirizzo email per reimpostare la password. Dopo aver inviato la richiesta, controlla l'email e troverai le istruzioni per continuare.";
+App::$strings["Email Address"] = "Indirizzo email";
+App::$strings["Reset"] = "Reimposta";
App::$strings["Unable to update menu."] = "Impossibile aggiornare il menù.";
App::$strings["Unable to create menu."] = "Impossibile creare il menù.";
App::$strings["Menu Name"] = "Nome del menu";
@@ -1449,6 +532,7 @@ App::$strings["Visible on webpage - leave empty for no title"] = "Visibile sulla
App::$strings["Allow Bookmarks"] = "Permetti i segnalibri";
App::$strings["Menu may be used to store saved bookmarks"] = "Puoi salvare i segnalibri nei menù";
App::$strings["Submit and proceed"] = "Salva e procedi";
+App::$strings["Menus"] = "Menù";
App::$strings["Bookmarks allowed"] = "Permetti segnalibri";
App::$strings["Delete this menu"] = "Elimina questo menù";
App::$strings["Edit menu contents"] = "Modifica i contenuti del menù";
@@ -1463,6 +547,22 @@ App::$strings["Menu title"] = "Titolo del menù";
App::$strings["Menu title as seen by others"] = "Titolo del menù come comparirà a tutti";
App::$strings["Allow bookmarks"] = "Permetti l'invio di segnalibri";
App::$strings["Not found."] = "Non trovato.";
+App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s è %2\$s";
+App::$strings["Mood"] = "Umore";
+App::$strings["Set your current mood and tell your friends"] = "Scegli il tuo umore attuale per mostrarlo agli amici";
+App::$strings["Profile Match"] = "Profili corrispondenti";
+App::$strings["No keywords to match. Please add keywords to your default profile."] = "Non hai scritto parole chiave. Aggiungi parole chiave al tuo profilo predefinito per comparire nelle ricerche.";
+App::$strings["is interested in:"] = "interessi personali:";
+App::$strings["No matches"] = "Nessun risultato";
+App::$strings["No such group"] = "Impossibile trovare il gruppo di canali";
+App::$strings["No such channel"] = "Canale sconosciuto";
+App::$strings["forum"] = "forum";
+App::$strings["Search Results For:"] = "Cerca risultati con:";
+App::$strings["Privacy group is empty"] = "Il gruppo di canali è vuoto";
+App::$strings["Privacy group: "] = "Gruppo di canali:";
+App::$strings["Invalid connection."] = "Contatto non valido.";
+App::$strings["No more system notifications."] = "Non ci sono nuove notifiche di sistema.";
+App::$strings["System Notifications"] = "Notifiche di sistema";
App::$strings["Unable to create element."] = "Impossibile creare l'elemento.";
App::$strings["Unable to update menu element."] = "Non è possibile aggiornare l'elemento del menù.";
App::$strings["Unable to add menu element."] = "Impossibile aggiungere l'elemento al menù.";
@@ -1492,14 +592,6 @@ App::$strings["Menu item deleted."] = "L'elemento del menù è stato eliminato."
App::$strings["Menu item could not be deleted."] = "L'elemento del menù non può essere eliminato.";
App::$strings["Edit Menu Element"] = "Modifica l'elemento del menù";
App::$strings["Link text"] = "Testo del link";
-App::$strings["Set your current mood and tell your friends"] = "Scegli il tuo umore attuale per mostrarlo agli amici";
-App::$strings["No such group"] = "Impossibile trovare il gruppo di canali";
-App::$strings["No such channel"] = "Canale sconosciuto";
-App::$strings["forum"] = "forum";
-App::$strings["Search Results For:"] = "Cerca risultati con:";
-App::$strings["Privacy group is empty"] = "Il gruppo di canali è vuoto";
-App::$strings["Privacy group: "] = "Gruppo di canali:";
-App::$strings["Invalid connection."] = "Contatto non valido.";
App::$strings["Name or caption"] = "Nome o titolo";
App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""] = "Per esempio: \"Mario Rossi\", \"Lisa e le sue ricette\", \"Il campionato\", \"Il gruppo di escursionismo\"";
App::$strings["Choose a short nickname"] = "Scegli un nome breve";
@@ -1512,21 +604,9 @@ App::$strings["A channel is your identity on this network. It can represent a pe
App::$strings["or <a href=\"import\">import an existing channel</a> from another location."] = "oppure <a href=\"import\">importa un canale esistente</a> da un altro server/hub.";
App::$strings["Invalid request identifier."] = "L'identificativo della richiesta non è valido.";
App::$strings["Discard"] = "Rifiuta";
-App::$strings["No more system notifications."] = "Non ci sono nuove notifiche di sistema.";
-App::$strings["System Notifications"] = "Notifiche di sistema";
-App::$strings["Unable to find your hub."] = "Impossibile raggiungere il tuo hub.";
-App::$strings["Post successful."] = "Inviato!";
-App::$strings["OpenID protocol error. No ID returned."] = "Errore del protocollo OpenID. Nessun ID ricevuto in risposta.";
-App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
-App::$strings["This setting requires special processing and editing has been blocked."] = "Questa impostazione è bloccata, richiede criteri di modifica speciali";
-App::$strings["Configuration Editor"] = "Editor di configurazione";
-App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Attenzione: alcune delle impostazioni, se cambiate, potrebbero rendere questo canale non funzionante. Lascia questa pagina a meno che tu non sappia con assoluta certezza quali modifiche effettuare.";
-App::$strings["Layout updated."] = "Layout aggiornato.";
-App::$strings["Edit System Page Description"] = "Modifica i layout di sistema";
-App::$strings["Layout not found."] = "Layout non trovato.";
-App::$strings["Module Name:"] = "Nome del modulo:";
-App::$strings["Layout Help"] = "Guida al layout";
+App::$strings["Mark all system notifications seen"] = "Segna come lette le notifiche di sistema";
App::$strings["Page owner information could not be retrieved."] = "Impossibile ottenere informazioni sul proprietario della pagina.";
+App::$strings["Profile Photos"] = "Foto del profilo";
App::$strings["Album not found."] = "Album non trovato.";
App::$strings["Delete Album"] = "Elimina album";
App::$strings["Multiple storage folders exist with this album name, but within different directories. Please remove the desired folder or folders using the Files manager"] = "Esistono più archivi con il nome di quest'album, ma dentro cartelle diverse. Per favore rimuovili dall'Archivio file ";
@@ -1545,6 +625,8 @@ App::$strings["Album name could not be decoded"] = "Non è stato possibile legge
App::$strings["Contact Photos"] = "Foto dei contatti";
App::$strings["Show Newest First"] = "Prima i più recenti";
App::$strings["Show Oldest First"] = "Prima i più vecchi";
+App::$strings["View Photo"] = "Guarda la foto";
+App::$strings["Edit Album"] = "Modifica album";
App::$strings["Permission denied. Access to this item may be restricted."] = "Permesso negato. L'accesso a questo elemento può essere stato limitato.";
App::$strings["Photo not available"] = "Foto non disponibile";
App::$strings["Use as profile photo"] = "Usa come foto del profilo";
@@ -1561,10 +643,152 @@ App::$strings["Caption"] = "Didascalia";
App::$strings["Add a Tag"] = "Aggiungi tag";
App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Esempio: @bob, @Barbara_Jensen, @jim@example.com";
App::$strings["Flag as adult in album view"] = "Marca come 'per adulti'";
+App::$strings["I like this (toggle)"] = "Attiva/disattiva Mi piace";
+App::$strings["I don't like this (toggle)"] = "Attiva/disattiva Non mi piace";
+App::$strings["Please wait"] = "Attendere";
+App::$strings["This is you"] = "Questo sei tu";
+App::$strings["Comment"] = "Commento";
+App::$strings["__ctx:title__ Likes"] = "Mi piace";
+App::$strings["__ctx:title__ Dislikes"] = "Non mi piace";
+App::$strings["__ctx:title__ Agree"] = "D'accordo";
+App::$strings["__ctx:title__ Disagree"] = "Non d'accordo";
+App::$strings["__ctx:title__ Abstain"] = "Astenuti";
+App::$strings["__ctx:title__ Attending"] = "Partecipano";
+App::$strings["__ctx:title__ Not attending"] = "Non partecipano";
+App::$strings["__ctx:title__ Might attend"] = "Forse partecipano";
+App::$strings["View all"] = "Vedi tutto";
+App::$strings["__ctx:noun__ Like"] = array(
+ 0 => "Mi piace",
+ 1 => "Mi piace",
+);
+App::$strings["__ctx:noun__ Dislike"] = array(
+ 0 => "Non mi piace",
+ 1 => "Non mi piace",
+);
+App::$strings["Photo Tools"] = "Gestione delle foto";
App::$strings["In This Photo:"] = "In questa foto:";
App::$strings["Map"] = "Mappa";
+App::$strings["__ctx:noun__ Likes"] = "Mi piace";
+App::$strings["__ctx:noun__ Dislikes"] = "Non mi piace";
+App::$strings["Close"] = "Chiudi";
App::$strings["View Album"] = "Guarda l'album";
App::$strings["Recent Photos"] = "Foto recenti";
+App::$strings["sent you a private message"] = "ti ha inviato un messaggio privato";
+App::$strings["added your channel"] = "ha aggiunto il tuo canale";
+App::$strings["g A l F d"] = "g A l d F";
+App::$strings["[today]"] = "[oggi]";
+App::$strings["posted an event"] = "ha creato un evento";
+App::$strings["Unable to find your hub."] = "Impossibile raggiungere il tuo hub.";
+App::$strings["Post successful."] = "Inviato!";
+App::$strings["OpenID protocol error. No ID returned."] = "Errore del protocollo OpenID. Nessun ID ricevuto in risposta.";
+App::$strings["Login failed."] = "Accesso fallito.";
+App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
+App::$strings["This setting requires special processing and editing has been blocked."] = "Questa impostazione è bloccata, richiede criteri di modifica speciali";
+App::$strings["Configuration Editor"] = "Editor di configurazione";
+App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Attenzione: alcune delle impostazioni, se cambiate, potrebbero rendere questo canale non funzionante. Lascia questa pagina a meno che tu non sappia con assoluta certezza quali modifiche effettuare.";
+App::$strings["Layout updated."] = "Layout aggiornato.";
+App::$strings["Edit System Page Description"] = "Modifica i layout di sistema";
+App::$strings["Layout not found."] = "Layout non trovato.";
+App::$strings["Module Name:"] = "Nome del modulo:";
+App::$strings["Layout Help"] = "Guida al layout";
+App::$strings["Poke"] = "Poke";
+App::$strings["Poke somebody"] = "Manda un poke";
+App::$strings["Poke/Prod"] = "Poke/Prod";
+App::$strings["Poke, prod or do other things to somebody"] = "Manda un poke o altro a qualcuno";
+App::$strings["Recipient"] = "Destinatario";
+App::$strings["Choose what you wish to do to recipient"] = "Scegli cosa vuoi inviare al destinatario";
+App::$strings["Make this post private"] = "Rendi privato questo post";
+App::$strings["Fetching URL returns error: %1\$s"] = "La chiamata all'URL restituisce questo errore: %1\$s";
+App::$strings["Profile not found."] = "Profilo non trovato.";
+App::$strings["Profile deleted."] = "Profilo eliminato.";
+App::$strings["Profile-"] = "Profilo-";
+App::$strings["New profile created."] = "Il nuovo profilo è stato creato.";
+App::$strings["Profile unavailable to clone."] = "Impossibile duplicare il profilo.";
+App::$strings["Profile unavailable to export."] = "Il profilo non è disponibile per l'export.";
+App::$strings["Profile Name is required."] = "Il nome del profilo è obbligatorio.";
+App::$strings["Marital Status"] = "Stato sentimentale";
+App::$strings["Romantic Partner"] = "Partner affettivo";
+App::$strings["Likes"] = "Mi piace";
+App::$strings["Dislikes"] = "Non mi piace";
+App::$strings["Work/Employment"] = "Lavoro/impiego";
+App::$strings["Religion"] = "Religione";
+App::$strings["Political Views"] = "Orientamento politico";
+App::$strings["Sexual Preference"] = "Preferenze sessuali";
+App::$strings["Homepage"] = "Home page";
+App::$strings["Interests"] = "Interessi";
+App::$strings["Profile updated."] = "Profilo aggiornato.";
+App::$strings["Hide your connections list from viewers of this profile"] = "Nascondi la tua lista di contatti ai visitatori di questo profilo";
+App::$strings["Edit Profile Details"] = "Modifica i dettagli del profilo";
+App::$strings["View this profile"] = "Guarda questo profilo";
+App::$strings["Edit visibility"] = "Cambia la visibilità";
+App::$strings["Profile Tools"] = "Gestione del profilo";
+App::$strings["Change cover photo"] = "Cambia la copertina del canale";
+App::$strings["Change profile photo"] = "Cambia la foto del profilo";
+App::$strings["Create a new profile using these settings"] = "Crea un nuovo profilo usando queste impostazioni";
+App::$strings["Clone this profile"] = "Clona questo profilo";
+App::$strings["Delete this profile"] = "Elimina questo profilo";
+App::$strings["Add profile things"] = "Aggiungi oggetti al profilo";
+App::$strings["Personal"] = "Personali";
+App::$strings["Relation"] = "Relazione";
+App::$strings["Miscellaneous"] = "Altro";
+App::$strings["Import profile from file"] = "Importa il profilo da un file";
+App::$strings["Export profile to file"] = "Esporta il profilo in un file";
+App::$strings["Your gender"] = "Sesso";
+App::$strings["Marital status"] = "Stato civile";
+App::$strings["Sexual preference"] = "Preferenze sessuali";
+App::$strings["Profile name"] = "Nome del profilo";
+App::$strings["This is your default profile."] = "Questo è il tuo profilo predefinito.";
+App::$strings["Your full name"] = "Il tuo nome completo";
+App::$strings["Title/Description"] = "Titolo/descrizione";
+App::$strings["Street address"] = "Indirizzo (via/piazza)";
+App::$strings["Locality/City"] = "Località";
+App::$strings["Region/State"] = "Regione/stato";
+App::$strings["Postal/Zip code"] = "CAP";
+App::$strings["Country"] = "Nazione";
+App::$strings["Who (if applicable)"] = "Con chi (se possibile)";
+App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Per esempio: cathy123, Cathy Williams, cathy@example.com";
+App::$strings["Since (date)"] = "dal (data)";
+App::$strings["Tell us about yourself"] = "Raccontaci di te...";
+App::$strings["Hometown"] = "Città dove vivo";
+App::$strings["Political views"] = "Orientamento politico";
+App::$strings["Religious views"] = "Orientamento religioso";
+App::$strings["Keywords used in directory listings"] = "Parole chiavi mostrate nell'elenco dei canali";
+App::$strings["Example: fishing photography software"] = "Per esempio: pesca fotografia programmazione";
+App::$strings["Musical interests"] = "Interessi musicali";
+App::$strings["Books, literature"] = "Libri, letteratura";
+App::$strings["Television"] = "Televisione";
+App::$strings["Film/Dance/Culture/Entertainment"] = "Film, danza, cultura, intrattenimento";
+App::$strings["Hobbies/Interests"] = "Hobby/interessi";
+App::$strings["Love/Romance"] = "Amore";
+App::$strings["School/Education"] = "Scuola/educazione";
+App::$strings["Contact information and social networks"] = "Contatti e social network";
+App::$strings["My other channels"] = "I miei altri canali";
+App::$strings["Profile Image"] = "Immagine del profilo";
+App::$strings["Edit Profiles"] = "Modifica i tuoi profili";
+App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Forza l'aggiornamento della pagina o cancella la cache del browser se la nuova foto non viene visualizzata immediatamente.";
+App::$strings["Upload Profile Photo"] = "Carica la foto del profilo";
+App::$strings["Invalid profile identifier."] = "Indentificativo del profilo non valido.";
+App::$strings["Profile Visibility Editor"] = "Modifica la visibilità del profilo";
+App::$strings["Profile"] = "Profilo";
+App::$strings["Click on a contact to add or remove."] = "Clicca su un contatto per aggiungerlo o rimuoverlo.";
+App::$strings["Visible To"] = "Visibile a";
+App::$strings["Public Hubs"] = "Hub pubblici";
+App::$strings["The listed hubs allow public registration for the \$Projectname network. All hubs in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some hubs may require subscription or provide tiered service plans. The hub itself <strong>may</strong> provide additional details."] = "I siti elencati permettono la registrazione libera sulla rete \$Projectname. Tutti questi hub sono interconnessi, quindi essere iscritti su uno equivale a una registrazione su tutta la rete. Alcuni siti potrebbero richiedere un abbonamento o dei servizi a pagamento. Per maggiori dettagli visita gli indirizzi nell'elenco.";
+App::$strings["Hub URL"] = "URL del hub";
+App::$strings["Access Type"] = "Tipo di accesso";
+App::$strings["Registration Policy"] = "Politica di registrazione";
+App::$strings["Stats"] = "";
+App::$strings["Software"] = "Software";
+App::$strings["Ratings"] = "Valutazioni";
+App::$strings["Rate"] = "Valuta";
+App::$strings["Website:"] = "Sito web:";
+App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Canale remoto [%s] (non ancora conosciuto da questo sito)";
+App::$strings["Rating (this information is public)"] = "Valutazione (visibile a tutti)";
+App::$strings["Optionally explain your rating (this information is public)"] = "Commento alla valutazione (facoltativo, visibile a tutti)";
+App::$strings["No ratings"] = "Nessuna valutazione";
+App::$strings["Rating: "] = "Valutazione:";
+App::$strings["Website: "] = "Sito web:";
+App::$strings["Description: "] = "Descrizione:";
App::$strings["Theme settings updated."] = "Le impostazioni del tema sono state aggiornate.";
App::$strings["# Accounts"] = "# account";
App::$strings["# blocked accounts"] = "# account bloccati";
@@ -1574,6 +798,7 @@ App::$strings["# Channels"] = "# canali";
App::$strings["# primary"] = "# primari";
App::$strings["# clones"] = "# cloni";
App::$strings["Message queues"] = "Coda messaggi in uscita";
+App::$strings["Your software should be updated"] = "Il tuo software ha bisogno di essere aggiornato";
App::$strings["Administration"] = "Amministrazione";
App::$strings["Summary"] = "Riepilogo";
App::$strings["Registered accounts"] = "Account creati";
@@ -1581,7 +806,10 @@ App::$strings["Pending registrations"] = "Registrazioni da approvare";
App::$strings["Registered channels"] = "Canali creati";
App::$strings["Active plugins"] = "Plugin attivi";
App::$strings["Version"] = "Versione";
+App::$strings["Repository version (master)"] = "Versione del repository (master)";
+App::$strings["Repository version (dev)"] = "Versione del repository (dev)";
App::$strings["Site settings updated."] = "Impostazioni del sito salvate correttamente.";
+App::$strings["Default"] = "Predefinito";
App::$strings["mobile"] = "mobile";
App::$strings["experimental"] = "sperimentale";
App::$strings["unsupported"] = "non supportato";
@@ -1590,9 +818,11 @@ App::$strings["My site is not a public server"] = "Non è un server pubblico";
App::$strings["My site has paid access only"] = "È un servizio a pagamento";
App::$strings["My site has free access only"] = "È un servizio gratuito";
App::$strings["My site offers free accounts with optional paid upgrades"] = "È un servizio gratuito con opzioni aggiuntive a pagamento";
+App::$strings["Site"] = "Sito";
App::$strings["Registration"] = "Registrazione";
App::$strings["File upload"] = "Caricamento file";
App::$strings["Policies"] = "Politiche";
+App::$strings["Advanced"] = "Avanzate";
App::$strings["Site name"] = "Nome del sito";
App::$strings["Banner/Logo"] = "Banner o logo";
App::$strings["Administrator Information"] = "Informazioni sull'amministratore";
@@ -1630,8 +860,10 @@ App::$strings["Force publish"] = "Forza la publicazione del profilo";
App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Seleziona per pubblicare sui directory server <strong>tutti</strong> i profili registrati su questo sito.";
App::$strings["Import Public Streams"] = "Suggerisci contenuti pubblici della rete Hubzilla";
App::$strings["Import and allow access to public content pulled from other sites. Warning: this content is unmoderated."] = "Suggerisci e visualizza i post pubblici presenti su altri siti Hubzilla. Attenzione: i contenuti potrebbero essere inappropriati perché non sottoposti a moderazione.";
-App::$strings["login on Homepage"] = "Mostra il login sulla homepage";
+App::$strings["Login on Homepage"] = "Login sulla homepage";
App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Presenta il modulo di login ai visitatori sulla homepage in mancanza di altri contenuti.";
+App::$strings["Enable context help"] = "Abilita la guida contestuale";
+App::$strings["Display contextual help for the current page when the help button is pressed."] = "Quando è premuto il bottone della guida mostra quella della pagina corrente";
App::$strings["Directory Server URL"] = "URL del directory server";
App::$strings["Default directory server"] = "Directory server predefinito";
App::$strings["Proxy user"] = "Utente proxy";
@@ -1657,19 +889,25 @@ App::$strings["ID"] = "ID";
App::$strings["for channel"] = "per il canale";
App::$strings["on server"] = "sul server";
App::$strings["Server"] = "Server";
+App::$strings["By default, unfiltered HTML is allowed in embedded media. This is inherently insecure."] = "";
+App::$strings["The recommended setting is to only allow unfiltered HTML from the following sites:"] = "L'impostazione consigliata è di permettere HTML non filtrato solo dai siti seguenti:";
+App::$strings["https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"] = "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />";
+App::$strings["All other embedded content will be filtered, <strong>unless</strong> embedded content from that site is explicitly blocked."] = "Tutti gli altri contenuti incorporati saranno filtrati <strong>a meno che</strong> il contenuto incorporato di quel sito non venga esplicitamente bloccato.";
+App::$strings["Security"] = "Sicurezza";
App::$strings["Block public"] = "Blocca pagine pubbliche";
App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "Seleziona per impedire di vedere le pagine personali di questo sito a chi non ha effettuato l'accesso.";
+App::$strings["Set \"Transport Security\" HTTP header"] = "";
+App::$strings["Set \"Content Security Policy\" HTTP header"] = "";
App::$strings["Allow communications only from these sites"] = "Permetti la comunicazione solo da questi siti";
App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Un sito per riga. Lascia vuoto per permettere la comunicazione con tutti";
App::$strings["Block communications from these sites"] = "Blocca la comunicazione da questi siti";
App::$strings["Allow communications only from these channels"] = "Permetti la comunicazione solo da questi canali";
App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "Un canale (hash) per riga. Lascia vuoto per comunicare con tutti i canali";
App::$strings["Block communications from these channels"] = "Blocca la comunicazione da questi canali";
-App::$strings["Allow embedded HTML content only from these domains"] = "Permetti i contenuti incorporati HTML solo da questi domini";
-App::$strings["One site per line. Leave empty to allow from any site by default"] = "Un sito per riga. Lascia vuoto per permettere sempre i contenuti incorporati";
+App::$strings["Only allow embeds from secure (SSL) websites and links."] = "";
+App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "";
+App::$strings["One site per line. By default embedded content is filtered."] = "";
App::$strings["Block embedded HTML from these domains"] = "Blocca i contenuti incorporati HTML da questi domini";
-App::$strings["Cooperative embed security"] = "Sicurezza cooperativa sui contenuti incorporati";
-App::$strings["Enable to share embed security with other compatible sites/hubs"] = "Abilita la condivisione con altri siti/hub delle informazioni di sicurezza sui contenuti incorporati";
App::$strings["Update has been marked successful"] = "L'aggiornamento è stato marcato come eseguito.";
App::$strings["Executing %s failed. Check system logs."] = "Fallita l'esecuzione di %s. Maggiori informazioni sui log di sistema.";
App::$strings["Update %s was successfully applied."] = "L'aggiornamento %s è terminato correttamente.";
@@ -1698,12 +936,13 @@ App::$strings["Account not found"] = "Account non trovato";
App::$strings["Account '%s' deleted"] = "Account '%s' eliminato";
App::$strings["Account '%s' blocked"] = "Aggiunto un blocco verso '%s'";
App::$strings["Account '%s' unblocked"] = "Rimosso il blocco verso '%s'";
-App::$strings["Users"] = "Utenti";
+App::$strings["Accounts"] = "Account";
App::$strings["select all"] = "seleziona tutti";
-App::$strings["User registrations waiting for confirm"] = "Richieste di registrazione in attesa di conferma";
+App::$strings["Registrations waiting for confirm"] = "";
App::$strings["Request date"] = "Data richiesta";
App::$strings["No registrations."] = "Nessuna registrazione.";
App::$strings["Deny"] = "Nega";
+App::$strings["All Channels"] = "Tutti i canali";
App::$strings["Register date"] = "Data registrazione";
App::$strings["Last login"] = "Ultimo accesso";
App::$strings["Expires"] = "Con scadenza";
@@ -1728,10 +967,12 @@ App::$strings["Channel '%s' censored"] = "Applicata una censura al canale '%s'";
App::$strings["Channel '%s' uncensored"] = "Rimossa la censura dal canale '%s'";
App::$strings["Channel '%s' code allowed"] = "Il canale '%s' permette codice nei contenuti";
App::$strings["Channel '%s' code disallowed"] = "Il canale '%s' non permette codice nei contenuti";
+App::$strings["Channels"] = "Canali";
App::$strings["Censor"] = "Applica censura";
App::$strings["Uncensor"] = "Rimuovi censura";
App::$strings["Allow Code"] = "Permetti codice";
App::$strings["Disallow Code"] = "Non permettere codice";
+App::$strings["Channel"] = "Canale";
App::$strings["UID"] = "UID";
App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "I canali selezionati saranno rimossi!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questi canali sarà irreversibilmente eliminato!\\n\\nVuoi confermare?";
App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Il canale {0} sarà rimosso!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questo canale sarà irreversibilmente eliminato!\\n\\nVuoi confermare?";
@@ -1739,7 +980,9 @@ App::$strings["Plugin %s disabled."] = "Plugin %s non attivo.";
App::$strings["Plugin %s enabled."] = "Plugin %s attivo.";
App::$strings["Disable"] = "Disattiva";
App::$strings["Enable"] = "Attiva";
+App::$strings["Plugins"] = "Plugin";
App::$strings["Toggle"] = "Attiva/disattiva";
+App::$strings["Settings"] = "Impostazioni";
App::$strings["Author: "] = "Autore:";
App::$strings["Maintainer: "] = "Gestore:";
App::$strings["Minimum project version: "] = "Minima versione hubzilla";
@@ -1747,15 +990,29 @@ App::$strings["Maximum project version: "] = "Massima versione hubzilla";
App::$strings["Minimum PHP version: "] = "Minima versione PHP:";
App::$strings["Requires: "] = "Necessita di:";
App::$strings["Disabled - version incompatibility"] = "Disabilitato - incompatibilità di versione";
+App::$strings["Enter the public git repository URL of the plugin repo."] = "";
+App::$strings["Plugin repo git URL"] = "URL git del repository del plugin";
+App::$strings["Custom repo name"] = "Nome repository personalizzato";
+App::$strings["(optional)"] = "(facoltativo)";
+App::$strings["Download Plugin Repo"] = "Scarica il repository del plugin";
+App::$strings["Install new repo"] = "Installa un nuovo repository";
+App::$strings["Install"] = "Installa";
+App::$strings["Manage Repos"] = "Gestisci i repsitory";
+App::$strings["Installed Plugin Repositories"] = "Repository per i plugin installati";
+App::$strings["Install a New Plugin Repository"] = "Installa un nuovo repository per i plugin";
+App::$strings["Update"] = "Aggiorna";
+App::$strings["Switch branch"] = "Cambia branch";
App::$strings["No themes found."] = "Nessun tema trovato.";
App::$strings["Screenshot"] = "Istantanea dello schermo";
+App::$strings["Themes"] = "Temi";
App::$strings["[Experimental]"] = "[Sperimentale]";
App::$strings["[Unsupported]"] = "[Non supportato]";
App::$strings["Log settings updated."] = "Impostazioni di log aggiornate.";
+App::$strings["Logs"] = "Log";
App::$strings["Clear"] = "Pulisci";
App::$strings["Debugging"] = "Debugging";
App::$strings["Log file"] = "File di log";
-App::$strings["Must be writable by web server. Relative to your Red top-level directory."] = "Deve essere scrivibile dal web server. La posizione è relativa alla cartella dove è installato Hubzilla.";
+App::$strings["Must be writable by web server. Relative to your top-level webserver directory."] = "";
App::$strings["Log level"] = "Livello di log";
App::$strings["New Profile Field"] = "Nuovo campo del profilo";
App::$strings["Field nickname"] = "Nome breve del campo";
@@ -1767,110 +1024,26 @@ App::$strings["Help text"] = "Testo di aiuto";
App::$strings["Additional info (optional)"] = "Informazioni aggiuntive (facoltative)";
App::$strings["Field definition not found"] = "Impossibile trovare la definizione del campo";
App::$strings["Edit Profile Field"] = "Modifica campo del profilo";
+App::$strings["Profile Fields"] = "Campi del profilo";
App::$strings["Basic Profile Fields"] = "Campi base del profilo";
App::$strings["Advanced Profile Fields"] = "Campi avanzati del profilo";
App::$strings["(In addition to basic fields)"] = "(In aggiunta ai campi di base)";
App::$strings["All available fields"] = "Tutti i campi disponibili";
App::$strings["Custom Fields"] = "Campi personalizzati";
App::$strings["Create Custom Field"] = "Aggiungi campo personalizzato";
-App::$strings["Poke somebody"] = "Manda un poke";
-App::$strings["Poke/Prod"] = "Poke/Prod";
-App::$strings["Poke, prod or do other things to somebody"] = "Manda un poke o altro a qualcuno";
-App::$strings["Recipient"] = "Destinatario";
-App::$strings["Choose what you wish to do to recipient"] = "Scegli cosa vuoi inviare al destinatario";
-App::$strings["Make this post private"] = "Rendi privato questo post";
-App::$strings["Fetching URL returns error: %1\$s"] = "La chiamata all'URL restituisce questo errore: %1\$s";
-App::$strings["Image uploaded but image cropping failed."] = "L'immagine è stata caricata, ma il non è stato possibile ritagliarla.";
-App::$strings["Image resize failed."] = "Il ridimensionamento dell'immagine è fallito.";
-App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Forza l'aggiornamento della pagina o cancella la cache del browser se la nuova foto non viene visualizzata immediatamente.";
-App::$strings["Image upload failed."] = "Il caricamento dell'immagine è fallito.";
-App::$strings["Unable to process image."] = "Impossibile elaborare l'immagine.";
-App::$strings["Photo not available."] = "Foto non disponibile.";
-App::$strings["Upload File:"] = "Carica un file:";
-App::$strings["Select a profile:"] = "Seleziona un profilo:";
-App::$strings["Upload Profile Photo"] = "Carica la foto del profilo";
-App::$strings["or"] = "o";
-App::$strings["skip this step"] = "salta questo passaggio";
-App::$strings["select a photo from your photo albums"] = "seleziona una foto dai tuoi album";
-App::$strings["Crop Image"] = "Ritaglia immagine";
-App::$strings["Please adjust the image cropping for optimum viewing."] = "Ritaglia l'immagine per migliorarne la visualizzazione.";
-App::$strings["Done Editing"] = "Modifica terminata";
-App::$strings["Profile not found."] = "Profilo non trovato.";
-App::$strings["Profile deleted."] = "Profilo eliminato.";
-App::$strings["Profile-"] = "Profilo-";
-App::$strings["New profile created."] = "Il nuovo profilo è stato creato.";
-App::$strings["Profile unavailable to clone."] = "Impossibile duplicare il profilo.";
-App::$strings["Profile unavailable to export."] = "Il profilo non è disponibile per l'export.";
-App::$strings["Profile Name is required."] = "Il nome del profilo è obbligatorio.";
-App::$strings["Marital Status"] = "Stato sentimentale";
-App::$strings["Romantic Partner"] = "Partner affettivo";
-App::$strings["Likes"] = "Mi piace";
-App::$strings["Dislikes"] = "Non mi piace";
-App::$strings["Work/Employment"] = "Lavoro/impiego";
-App::$strings["Religion"] = "Religione";
-App::$strings["Political Views"] = "Orientamento politico";
-App::$strings["Sexual Preference"] = "Preferenze sessuali";
-App::$strings["Homepage"] = "Home page";
-App::$strings["Interests"] = "Interessi";
-App::$strings["Profile updated."] = "Profilo aggiornato.";
-App::$strings["Hide your connections list from viewers of this profile"] = "Nascondi la tua lista di contatti ai visitatori di questo profilo";
-App::$strings["Edit Profile Details"] = "Modifica i dettagli del profilo";
-App::$strings["View this profile"] = "Guarda questo profilo";
-App::$strings["Change cover photo"] = "Cambia la copertina del canale";
-App::$strings["Create a new profile using these settings"] = "Crea un nuovo profilo usando queste impostazioni";
-App::$strings["Clone this profile"] = "Clona questo profilo";
-App::$strings["Delete this profile"] = "Elimina questo profilo";
-App::$strings["Add profile things"] = "Aggiungi oggetti al profilo";
-App::$strings["Relation"] = "Relazione";
-App::$strings["Import profile from file"] = "Importa il profilo da un file";
-App::$strings["Export profile to file"] = "Esporta il profilo in un file";
-App::$strings["Your gender"] = "Sesso";
-App::$strings["Marital status"] = "Stato civile";
-App::$strings["Sexual preference"] = "Preferenze sessuali";
-App::$strings["Profile name"] = "Nome del profilo";
-App::$strings["This is your default profile."] = "Questo è il tuo profilo predefinito.";
-App::$strings["Your full name"] = "Il tuo nome completo";
-App::$strings["Title/Description"] = "Titolo/descrizione";
-App::$strings["Street address"] = "Indirizzo (via/piazza)";
-App::$strings["Locality/City"] = "Località";
-App::$strings["Region/State"] = "Regione/stato";
-App::$strings["Postal/Zip code"] = "CAP";
-App::$strings["Country"] = "Nazione";
-App::$strings["Who (if applicable)"] = "Con chi (se possibile)";
-App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Per esempio: cathy123, Cathy Williams, cathy@example.com";
-App::$strings["Since (date)"] = "dal (data)";
-App::$strings["Tell us about yourself"] = "Raccontaci di te...";
-App::$strings["Hometown"] = "Città dove vivo";
-App::$strings["Political views"] = "Orientamento politico";
-App::$strings["Religious views"] = "Orientamento religioso";
-App::$strings["Keywords used in directory listings"] = "Parole chiavi mostrate nell'elenco dei canali";
-App::$strings["Example: fishing photography software"] = "Per esempio: pesca fotografia programmazione";
-App::$strings["Musical interests"] = "Interessi musicali";
-App::$strings["Books, literature"] = "Libri, letteratura";
-App::$strings["Television"] = "Televisione";
-App::$strings["Film/Dance/Culture/Entertainment"] = "Film, danza, cultura, intrattenimento";
-App::$strings["Hobbies/Interests"] = "Hobby/interessi";
-App::$strings["Love/Romance"] = "Amore";
-App::$strings["School/Education"] = "Scuola/educazione";
-App::$strings["Contact information and social networks"] = "Contatti e social network";
-App::$strings["My other channels"] = "I miei altri canali";
-App::$strings["Invalid profile identifier."] = "Indentificativo del profilo non valido.";
-App::$strings["Profile Visibility Editor"] = "Modifica la visibilità del profilo";
-App::$strings["Click on a contact to add or remove."] = "Clicca su un contatto per aggiungerlo o rimuoverlo.";
-App::$strings["Visible To"] = "Visibile a";
-App::$strings["The listed hubs allow public registration for the \$Projectname network. All hubs in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some hubs may require subscription or provide tiered service plans. The hub itself <strong>may</strong> provide additional details."] = "I siti elencati permettono la registrazione libera sulla rete \$Projectname. Tutti questi hub sono interconnessi, quindi essere iscritti su uno equivale a una registrazione su tutta la rete. Alcuni siti potrebbero richiedere un abbonamento o dei servizi a pagamento. Per maggiori dettagli visita gli indirizzi nell'elenco.";
-App::$strings["Hub URL"] = "URL del hub";
-App::$strings["Access Type"] = "Tipo di accesso";
-App::$strings["Registration Policy"] = "Politica di registrazione";
-App::$strings["Rate"] = "Valuta";
-App::$strings["Website:"] = "Sito web:";
-App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Canale remoto [%s] (non ancora conosciuto da questo sito)";
-App::$strings["Rating (this information is public)"] = "Valutazione (visibile a tutti)";
-App::$strings["Optionally explain your rating (this information is public)"] = "Commento alla valutazione (facoltativo, visibile a tutti)";
-App::$strings["No ratings"] = "Nessuna valutazione";
-App::$strings["Rating: "] = "Valutazione:";
-App::$strings["Website: "] = "Sito web:";
-App::$strings["Description: "] = "Descrizione:";
+App::$strings["App installed."] = "App installata";
+App::$strings["Malformed app."] = "L'app contiene errori";
+App::$strings["Embed code"] = "Inserisci il codice";
+App::$strings["Edit App"] = "Modifica app";
+App::$strings["Create App"] = "Crea una app";
+App::$strings["Name of app"] = "Nome app";
+App::$strings["Location (URL) of app"] = "Indirizzo (URL) della app";
+App::$strings["Photo icon URL"] = "URL icona";
+App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixel - facoltativa";
+App::$strings["Categories (optional, comma separated list)"] = "Categorie (facoltative, lista separata da virgole)";
+App::$strings["Version ID"] = "ID versione";
+App::$strings["Price of app"] = "Prezzo app";
+App::$strings["Location (URL) to purchase app"] = "Indirizzo (URL) per acquistare la app";
App::$strings["Select a bookmark folder"] = "Scegli una cartella di segnalibri";
App::$strings["Save Bookmark"] = "Salva segnalibro";
App::$strings["URL of bookmark"] = "URL del segnalibro";
@@ -1895,6 +1068,7 @@ App::$strings["Please enter your invitation code"] = "Inserisci il codice dell'i
App::$strings["no"] = "no";
App::$strings["yes"] = "sì";
App::$strings["Membership on this site is by invitation only."] = "Per registrarsi su questo hub è necessario un invito.";
+App::$strings["Register"] = "Registrati";
App::$strings["Proceed to create your first channel"] = "Continua e crea il tuo primo canale";
App::$strings["Please login."] = "Effettua l'accesso.";
App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "Non è possibile eliminare il tuo account prima di 48 ore dall'ultimo cambio password.";
@@ -1994,6 +1168,7 @@ App::$strings["Allow us to suggest you as a potential friend to new members?"] =
App::$strings["Your channel address is"] = "L'indirizzo del tuo canale è";
App::$strings["Channel Settings"] = "Impostazioni del canale";
App::$strings["Basic Settings"] = "Impostazioni di base";
+App::$strings["Full Name:"] = "Nome completo:";
App::$strings["Your Timezone:"] = "Il tuo fuso orario:";
App::$strings["Default Post Location:"] = "Località predefinita:";
App::$strings["Geographical location to display on your posts"] = "La posizione geografica da mostrare sui tuoi post";
@@ -2013,10 +1188,14 @@ App::$strings["Allow others to tag your posts"] = "Permetti ad altri di taggare
App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "Usato spesso dalla comunità per marcare contenuti inappropriati già esistenti";
App::$strings["Advanced Privacy Settings"] = "Impostazioni di privacy avanzate";
App::$strings["Expire other channel content after this many days"] = "Giorni dopo cui mettere in scadenza gli altri contenuti del canale";
-App::$strings["0 or blank to use the website limit. The website expires after %d days."] = "0 o vuoto per usare i valori predefiniti. Per questo sito la scadenza è %d giorni. ";
+App::$strings["0 or blank to use the website limit."] = "0 o vuoto per usare i valori predefiniti.";
+App::$strings["This website expires after %d days."] = "Per questo sito la scadenza è %d giorni. ";
+App::$strings["This website does not expire imported content."] = "I contenuti di questo sito non hanno scadenza.";
+App::$strings["The website limit takes precedence if lower than your limit."] = "";
App::$strings["Maximum Friend Requests/Day:"] = "Numero massimo giornaliero di richieste di amicizia:";
App::$strings["May reduce spam activity"] = "Serve a ridurre lo spam";
-App::$strings["Default Post Permissions"] = "Permessi predefiniti per i post";
+App::$strings["Default Post and Publish Permissions"] = "";
+App::$strings["Use my default audience setting for the type of object published"] = "";
App::$strings["Channel permissions category:"] = "Categorie di permessi dei canali:";
App::$strings["Maximum private messages per day from unknown people:"] = "Numero massimo giornaliero di messaggi privati da utenti sconosciuti:";
App::$strings["Useful to reduce spamming"] = "Serve e ridurre lo spam";
@@ -2091,6 +1270,8 @@ App::$strings["Please select a default timezone for your website"] = "Seleziona
App::$strings["Site settings"] = "Impostazioni del hub";
App::$strings["Enable \$Projectname <strong>advanced</strong> features?"] = "Vuoi attivare le funzionalità <strong>avanzate</strong> di \$Projectname?";
App::$strings["Some advanced features, while useful - may be best suited for technically proficient audiences"] = "Alcune funzionalità avanzate, per quanto utili, potrebbero essere adatte solo a un pubblico tecnicamente preparato.";
+App::$strings["PHP version 5.5 or greater is required."] = "";
+App::$strings["PHP version"] = "Versione PHP";
App::$strings["Could not find a command line version of PHP in the web server PATH."] = "Non è possibile trovare la versione di PHP da riga di comando nel PATH del server web";
App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Se non hai installata la versione di PHP da riga di comando non potrai attivare il polling in background tramite cron.";
App::$strings["PHP executable path"] = "Path del comando PHP";
@@ -2129,7 +1310,7 @@ App::$strings["At the end of this procedure, we will give you a text to save in
App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Puoi anche saltare questa procedura ed effettuare un'installazione manuale. Guarda il file 'install/INSTALL.txt' per le istruzioni.";
App::$strings[".htconfig.php is writable"] = ".htconfig.php è scrivibile";
App::$strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Hubzilla usa il sistema Smarty3 per costruire i suoi template grafici. Smarty3 è molto veloce perché compila i template delle pagine direttamente in PHP.";
-App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "Per poter memorizzare i template compilati, il web server deve avere accesso in scrittura a %s sotto la cartella di installazione di Hubzilla.";
+App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder."] = "";
App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Assicurati che il tuo web server sia in esecuzione con un utente che ha diritto di scrittura su quella cartella (ad esempio www-data).";
App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Nota bene: come precauzione, dovresti dare i diritti di scrittura solamente su %s e non sui file template (.tpl) che contiene.";
App::$strings["%s is writable"] = "%s è scrivibile";
@@ -2148,22 +1329,6 @@ App::$strings["The database configuration file \".htconfig.php\" could not be wr
App::$strings["Errors encountered creating database tables."] = "La creazione delle tabelle del database ha generato errori.";
App::$strings["<h1>What next</h1>"] = "<h1>I prossimi passi</h1>";
App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANTE: Devi creare [manualmente] la pianificazione del polling.";
-App::$strings["No valid account found."] = "Nessun account valido trovato.";
-App::$strings["Password reset request issued. Check your email."] = "La richiesta per reimpostare la password è stata inviata. Controlla la tua email.";
-App::$strings["Site Member (%s)"] = "Utente del sito (%s)";
-App::$strings["Password reset requested at %s"] = "È stato richiesto di reimpostare password su %s";
-App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La richiesta non può essere verificata (potresti averla già usata precedentemente). La password non sarà reimpostata.";
-App::$strings["Password Reset"] = "Reimposta la password";
-App::$strings["Your password has been reset as requested."] = "La password è stata reimpostata come richiesto.";
-App::$strings["Your new password is"] = "La tua nuova password è";
-App::$strings["Save or copy your new password - and then"] = "Salva o copia la tua nuova password, quindi";
-App::$strings["click here to login"] = "clicca qui per accedere";
-App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Puoi cambiare la tua password dalla pagina delle <em>Impostazioni</em> dopo aver effettuato l'accesso.";
-App::$strings["Your password has changed at %s"] = "La tua password su %s è cambiata";
-App::$strings["Forgot your Password?"] = "Hai dimenticato la password?";
-App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Inserisci il tuo indirizzo email per reimpostare la password. Dopo aver inviato la richiesta, controlla l'email e troverai le istruzioni per continuare.";
-App::$strings["Email Address"] = "Indirizzo email";
-App::$strings["Reset"] = "Reimposta";
App::$strings["Files: shared with me"] = "File: condivisi con me";
App::$strings["NEW"] = "NOVITÀ";
App::$strings["Remove all files"] = "Elimina tutti i file";
@@ -2185,12 +1350,14 @@ App::$strings["Failed to create source. No channel selected."] = "Impossibile cr
App::$strings["Source created."] = "Sorgente creata.";
App::$strings["Source updated."] = "Sorgente aggiornata.";
App::$strings["*"] = "*";
+App::$strings["Channel Sources"] = "Sorgenti del canale";
App::$strings["Manage remote sources of content for your channel."] = "Gestisci le sorgenti dei contenuti del tuo canale.";
App::$strings["New Source"] = "Nuova sorgente";
App::$strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importa nel tuo canale tutti o una parte dei contenuti dal canale seguente.";
App::$strings["Only import content with these words (one per line)"] = "Importa solo i contenuti che hanno queste parole (una per riga)";
App::$strings["Leave blank to import all public content"] = "Lascia vuoto per importare tutti i contenuti pubblici";
App::$strings["Channel Name"] = "Nome del canale";
+App::$strings["Add the following categories to posts imported from this source (comma separated)"] = "";
App::$strings["Source not found."] = "Sorgente non trovata.";
App::$strings["Edit Source"] = "Modifica la sorgente";
App::$strings["Delete Source"] = "Elimina la sorgente";
@@ -2199,6 +1366,9 @@ App::$strings["Unable to remove source."] = "Impossibile rimuovere la sorgente."
App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s sta seguendo %3\$s di %2\$s";
App::$strings["%1\$s stopped following %2\$s's %3\$s"] = "%1\$s non segue più %3\$s di %2\$s";
App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Nessun suggerimento disponibile. Se questo sito è nuovo, riprova tra 24 ore.";
+App::$strings["Ignore/Hide"] = "Ignora/nascondi";
+App::$strings["post"] = "il post";
+App::$strings["comment"] = "il commento";
App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha taggato %3\$s di %2\$s con %4\$s";
App::$strings["Tag removed"] = "Tag rimosso";
App::$strings["Remove Item Tag"] = "Rimuovi il tag";
@@ -2230,12 +1400,861 @@ App::$strings["No connections."] = "Nessun contatto.";
App::$strings["Visit %s's profile [%s]"] = "Visita il profilo di %s [%s]";
App::$strings["View Connections"] = "Elenco contatti";
App::$strings["Source of Item"] = "Sorgente";
+App::$strings["Webpages"] = "Pagine web";
+App::$strings["Actions"] = "Azioni";
+App::$strings["Page Link"] = "Link alla pagina";
App::$strings["Page Title"] = "Titolo della pagina";
App::$strings["Xchan Lookup"] = "Ricerca canale";
App::$strings["Lookup xchan beginning with (or webbie): "] = "Cerca un canale (o un webbie) che inizia per:";
-App::$strings["Cover Photos"] = "Copertine del canale";
-App::$strings["Upload Cover Photo"] = "Carica una copertina";
-App::$strings["Permissions denied."] = "Permesso negato.";
+App::$strings["Site Admin"] = "Amministrazione sito";
+App::$strings["Bug Report"] = "Bug Report";
+App::$strings["View Bookmarks"] = "Vedi i segnalibri";
+App::$strings["My Chatrooms"] = "Le mie aree chat";
+App::$strings["Firefox Share"] = "";
+App::$strings["Remote Diagnostics"] = "";
+App::$strings["Suggest Channels"] = "Suggerisci canali";
+App::$strings["Login"] = "Accedi";
+App::$strings["Grid"] = "Rete";
+App::$strings["Channel Home"] = "Bacheca del canale";
+App::$strings["Events"] = "Eventi";
+App::$strings["Directory"] = "Elenchi pubblici dei canali";
+App::$strings["Mail"] = "Messaggi";
+App::$strings["Chat"] = "Chat";
+App::$strings["Probe"] = "Diagnostica";
+App::$strings["Suggest"] = "Suggerisci";
+App::$strings["Random Channel"] = "Canale casuale";
+App::$strings["Invite"] = "Invita";
+App::$strings["Features"] = "Funzionalità";
+App::$strings["Post"] = "Post";
+App::$strings["Purchase"] = "Acquista";
+App::$strings["Missing room name"] = "Chat senza nome";
+App::$strings["Duplicate room name"] = "Il nome della chat è duplicato";
+App::$strings["Invalid room specifier."] = "Il nome della chat non è valido.";
+App::$strings["Room not found."] = "Chat non trovata.";
+App::$strings["Room is full"] = "La chat è al completo";
+App::$strings["\$Projectname Notification"] = "Notifica \$Projectname";
+App::$strings["\$projectname"] = "\$projectname";
+App::$strings["Thank You,"] = "Grazie,";
+App::$strings["%s Administrator"] = "L'amministratore di %s";
+App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
+App::$strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla] Nuovo messaggio su %s";
+App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s ti ha mandato un messaggio privato su %3\$s.";
+App::$strings["%1\$s sent you %2\$s."] = "%1\$s ti ha mandato %2\$s.";
+App::$strings["a private message"] = "un messaggio privato";
+App::$strings["Please visit %s to view and/or reply to your private messages."] = "Visita %s per leggere i tuoi messaggi privati e rispondere.";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s ha commentato [zrl=%3\$s]%4\$s[/zrl]";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s ha commentato [zrl=%3\$s]%5\$s di %4\$s[/zrl]";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s ha commentato [zrl=%3\$s]%4\$s che hai creato[/zrl]";
+App::$strings["[Hubzilla:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Hubzilla] Nuovo commento di %2\$s alla conversazione #%1\$d";
+App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s ha commentato un elemento che stavi seguendo.";
+App::$strings["Please visit %s to view and/or reply to the conversation."] = "Visita %s per leggere o commentare la conversazione.";
+App::$strings["[Hubzilla:Notify] %s posted to your profile wall"] = "[Hubzilla] %s ha scritto sulla tua bacheca";
+App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s ha scritto sulla bacheca del tuo profilo su %3\$s";
+App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s ha scritto sulla [zrl=%3\$s]tua bacheca[/zrl]";
+App::$strings["[Hubzilla:Notify] %s tagged you"] = "[Hubzilla] %s ti ha taggato";
+App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s ti ha taggato su %3\$s";
+App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]ti ha taggato[/zrl].";
+App::$strings["[Hubzilla:Notify] %1\$s poked you"] = "[Hubzilla] %1\$s ti ha mandato un poke";
+App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s ti ha mandato un poke su %3\$s";
+App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]ti ha mandato un poke[/zrl].";
+App::$strings["[Hubzilla:Notify] %s tagged your post"] = "[Hubzilla] %s ha taggato il tuo post";
+App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s ha taggato il tuo post su %3\$s";
+App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s ha taggato [zrl=%3\$s]il tuo post[/zrl]";
+App::$strings["[Hubzilla:Notify] Introduction received"] = "[Hubzilla] Hai una richiesta di amicizia";
+App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, hai ricevuto una richiesta di entrare in contatto da '%2\$s' su %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, hai ricevuto una [zrl=%2\$s]richiesta di entrare in contatto[/zrl] da %3\$s.";
+App::$strings["You may visit their profile at %s"] = "Puoi visitare il suo profilo su %s";
+App::$strings["Please visit %s to approve or reject the connection request."] = "Visita %s per approvare o rifiutare la richiesta di entrare in contatto.";
+App::$strings["[Hubzilla:Notify] Friend suggestion received"] = "[Hubzilla] Ti è stato suggerito un amico";
+App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, ti è stato suggerito un amico da '%2\$s' su %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, %4\$s ti [zrl=%2\$s]ha suggerito %3\$s[/zrl] come amico.";
+App::$strings["Name:"] = "Nome:";
+App::$strings["Photo:"] = "Foto:";
+App::$strings["Please visit %s to approve or reject the suggestion."] = "Visita %s per approvare o rifiutare il suggerimento.";
+App::$strings["[Hubzilla:Notify]"] = "[Hubzilla]";
+App::$strings["created a new post"] = "Ha creato un nuovo post";
+App::$strings["commented on %s's post"] = "ha commentato il post di %s";
+App::$strings["Private Message"] = "Messaggio privato";
+App::$strings["Select"] = "Scegli";
+App::$strings["Save to Folder"] = "Salva nella cartella";
+App::$strings["I will attend"] = "Parteciperò";
+App::$strings["I will not attend"] = "Non parteciperò";
+App::$strings["I might attend"] = "Forse parteciperò";
+App::$strings["I agree"] = "Sono d'accordo";
+App::$strings["I disagree"] = "Non sono d'accordo";
+App::$strings["I abstain"] = "Mi astengo";
+App::$strings["Add Star"] = "Aggiungi ai preferiti";
+App::$strings["Remove Star"] = "Rimuovi dai preferiti";
+App::$strings["Toggle Star Status"] = "Attiva/disattiva preferito";
+App::$strings["starred"] = "preferito";
+App::$strings["Message signature validated"] = "Messaggio con firma verificata";
+App::$strings["Message signature incorrect"] = "Massaggio con firma non corretta";
+App::$strings["Add Tag"] = "Aggiungi un tag";
+App::$strings["like"] = "mi piace";
+App::$strings["dislike"] = "non mi piace";
+App::$strings["Share This"] = "Condividi";
+App::$strings["share"] = "condividi";
+App::$strings["Delivery Report"] = "Rapporto di trasmissione";
+App::$strings["%d comment"] = array(
+ 0 => "%d commento",
+ 1 => "%d commenti",
+);
+App::$strings["View %s's profile - %s"] = "Guarda il profilo di %s - %s";
+App::$strings["to"] = "a";
+App::$strings["via"] = "via";
+App::$strings["Wall-to-Wall"] = "Da bacheca a bacheca";
+App::$strings["via Wall-To-Wall:"] = "da bacheca a bacheca:";
+App::$strings["from %s"] = "da %s";
+App::$strings["last edited: %s"] = "ultima modifica: %s";
+App::$strings["Expires: %s"] = "Scadenza: %s";
+App::$strings["Save Bookmarks"] = "Salva segnalibro";
+App::$strings["Add to Calendar"] = "Aggiungi al calendario";
+App::$strings["Mark all seen"] = "Marca tutto come letto";
+App::$strings["[+] show all"] = "[+] mostra tutto";
+App::$strings["Bold"] = "Grassetto";
+App::$strings["Italic"] = "Corsivo";
+App::$strings["Underline"] = "Sottolineato";
+App::$strings["Quote"] = "Citazione";
+App::$strings["Code"] = "Codice";
+App::$strings["Image"] = "Immagine";
+App::$strings["Insert Link"] = "Collegamento";
+App::$strings["Video"] = "Video";
+App::$strings["No username found in import file."] = "Impossibile trovare il nome utente nel file da importare.";
+App::$strings["Unable to create a unique channel address. Import failed."] = "Impossibile creare un indirizzo univoco per il canale. L'import è fallito.";
+App::$strings["Cannot locate DNS info for database server '%s'"] = "Non trovo le informazioni DNS per il database server '%s'";
+App::$strings["Categories"] = "Categorie";
+App::$strings["Tags"] = "Tag";
+App::$strings["Keywords"] = "Parole chiave";
+App::$strings["have"] = "ho";
+App::$strings["has"] = "ha";
+App::$strings["want"] = "voglio";
+App::$strings["wants"] = "vuole";
+App::$strings["likes"] = "gli piace";
+App::$strings["dislikes"] = "non gli piace";
+App::$strings["l F d, Y \\@ g:i A"] = "l d F Y \\@ G:i";
+App::$strings["Starts:"] = "Inizio:";
+App::$strings["Finishes:"] = "Fine:";
+App::$strings["This event has been added to your calendar."] = "Questo evento è stato aggiunto al tuo calendario";
+App::$strings["Not specified"] = "Non specificato";
+App::$strings["Needs Action"] = "Necessita di un intervento";
+App::$strings["Completed"] = "Completato";
+App::$strings["In Process"] = "In corso";
+App::$strings["Cancelled"] = "Annullato";
+App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Non posso creare un canale con un identificativo che già esiste su questo sistema. L'importazione è fallita.";
+App::$strings["Channel clone failed. Import failed."] = "Impossibile clonare il canale. L'importazione è fallita.";
+App::$strings["(Unknown)"] = "(Sconosciuto)";
+App::$strings["Visible to anybody on the internet."] = "Visibile a chiunque su internet.";
+App::$strings["Visible to you only."] = "Visibile solo a te.";
+App::$strings["Visible to anybody in this network."] = "Visibile a tutti su questa rete.";
+App::$strings["Visible to anybody authenticated."] = "Visibile a chiunque sia autenticato.";
+App::$strings["Visible to anybody on %s."] = "Visibile a tutti su %s.";
+App::$strings["Visible to all connections."] = "Visibile a tutti coloro che ti seguono.";
+App::$strings["Visible to approved connections."] = "Visibile ai contatti approvati.";
+App::$strings["Visible to specific connections."] = "Visibile ad alcuni contatti scelti.";
+App::$strings["Privacy group is empty."] = "Gruppo di canali vuoto.";
+App::$strings["Privacy group: %s"] = "Gruppo di canali: %s";
+App::$strings["Connection not found."] = "Contatto non trovato.";
+App::$strings["profile photo"] = "foto del profilo";
+App::$strings["No recipient provided."] = "Devi scegliere un destinatario.";
+App::$strings["[no subject]"] = "[nessun titolo]";
+App::$strings["Unable to determine sender."] = "Impossibile determinare il mittente.";
+App::$strings["Stored post could not be verified."] = "Non è stato possibile verificare il post.";
+App::$strings["prev"] = "prec";
+App::$strings["first"] = "inizio";
+App::$strings["last"] = "fine";
+App::$strings["next"] = "succ";
+App::$strings["older"] = "più recenti";
+App::$strings["newer"] = "più nuovi";
+App::$strings["No connections"] = "Nessun contatto";
+App::$strings["View all %s connections"] = "Mostra tutti i %s contatti";
+App::$strings["poke"] = "poke";
+App::$strings["poked"] = "ha mandato un poke";
+App::$strings["ping"] = "ping";
+App::$strings["pinged"] = "ha effettuato un ping";
+App::$strings["prod"] = "spintone";
+App::$strings["prodded"] = "ha ricevuto uno spintone";
+App::$strings["slap"] = "schiaffo";
+App::$strings["slapped"] = "ha ricevuto uno schiaffo";
+App::$strings["finger"] = "finger";
+App::$strings["fingered"] = "ha ricevuto un finger";
+App::$strings["rebuff"] = "rifiuto";
+App::$strings["rebuffed"] = "ha ricevuto un rifiuto";
+App::$strings["happy"] = "felice";
+App::$strings["sad"] = "triste";
+App::$strings["mellow"] = "calmo";
+App::$strings["tired"] = "stanco";
+App::$strings["perky"] = "vivace";
+App::$strings["angry"] = "arrabbiato";
+App::$strings["stupefied"] = "stupito";
+App::$strings["puzzled"] = "confuso";
+App::$strings["interested"] = "attento";
+App::$strings["bitter"] = "amaro";
+App::$strings["cheerful"] = "allegro";
+App::$strings["alive"] = "vivace";
+App::$strings["annoyed"] = "seccato";
+App::$strings["anxious"] = "ansioso";
+App::$strings["cranky"] = "irritabile";
+App::$strings["disturbed"] = "turbato";
+App::$strings["frustrated"] = "frustrato";
+App::$strings["depressed"] = "in depressione";
+App::$strings["motivated"] = "motivato";
+App::$strings["relaxed"] = "rilassato";
+App::$strings["surprised"] = "sorpreso";
+App::$strings["Monday"] = "lunedì";
+App::$strings["Tuesday"] = "martedì";
+App::$strings["Wednesday"] = "mercoledì";
+App::$strings["Thursday"] = "giovedì";
+App::$strings["Friday"] = "venerdì";
+App::$strings["Saturday"] = "sabato";
+App::$strings["Sunday"] = "domenica";
+App::$strings["January"] = "gennaio";
+App::$strings["February"] = "febbraio";
+App::$strings["March"] = "marzo";
+App::$strings["April"] = "aprile";
+App::$strings["May"] = "Mag";
+App::$strings["June"] = "giugno";
+App::$strings["July"] = "luglio";
+App::$strings["August"] = "agosto";
+App::$strings["September"] = "settembre";
+App::$strings["October"] = "ottobre";
+App::$strings["November"] = "novembre";
+App::$strings["December"] = "dicembre";
+App::$strings["Unknown Attachment"] = "Allegato non riconoscuto";
+App::$strings["unknown"] = "sconosciuta";
+App::$strings["remove category"] = "rimuovi la categoria";
+App::$strings["remove from file"] = "rimuovi dal file";
+App::$strings["default"] = "predefinito";
+App::$strings["Page layout"] = "Layout della pagina";
+App::$strings["You can create your own with the layouts tool"] = "Puoi creare un tuo layout dalla configurazione delle pagine web";
+App::$strings["Page content type"] = "Tipo di contenuto della pagina";
+App::$strings["Select an alternate language"] = "Seleziona una lingua diversa";
+App::$strings["activity"] = "l'attività";
+App::$strings["Design Tools"] = "Strumenti di design";
+App::$strings["Pages"] = "Pagine";
+App::$strings["System"] = "Sistema";
+App::$strings["New App"] = "Nuova app";
+App::$strings["Suggestions"] = "Suggerimenti";
+App::$strings["See more..."] = "Altro...";
+App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Hai attivato %1$.0f delle %2$.0f connessioni permesse.";
+App::$strings["Add New Connection"] = "Aggiungi un contatto";
+App::$strings["Enter channel address"] = "Indirizzo del canale";
+App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Per esempio: bob@example.com, https://example.com/barbara";
+App::$strings["Notes"] = "Note";
+App::$strings["Remove term"] = "Rimuovi termine";
+App::$strings["Saved Searches"] = "Ricerche salvate";
+App::$strings["add"] = "aggiungi";
+App::$strings["Saved Folders"] = "Cartelle salvate";
+App::$strings["Everything"] = "Tutto";
+App::$strings["Archives"] = "Archivi";
+App::$strings["Refresh"] = "Aggiorna";
+App::$strings["Account settings"] = "Il tuo account";
+App::$strings["Channel settings"] = "Impostazioni del canale";
+App::$strings["Additional features"] = "Funzionalità opzionali";
+App::$strings["Feature/Addon settings"] = "Componenti aggiuntivi";
+App::$strings["Display settings"] = "Aspetto";
+App::$strings["Manage locations"] = "Gestione repliche";
+App::$strings["Export channel"] = "Esporta il canale";
+App::$strings["Connected apps"] = "App connesse";
+App::$strings["Premium Channel Settings"] = "Canale premium - impostazioni";
+App::$strings["Private Mail Menu"] = "Menu messaggi privati";
+App::$strings["Combined View"] = "Vista combinata";
+App::$strings["Inbox"] = "In arrivo";
+App::$strings["Outbox"] = "Inviati";
+App::$strings["New Message"] = "Nuovo messaggio";
+App::$strings["Conversations"] = "Conversazioni";
+App::$strings["Received Messages"] = "Ricevuti";
+App::$strings["Sent Messages"] = "Inviati";
+App::$strings["No messages."] = "Nessun messaggio.";
+App::$strings["Delete conversation"] = "Elimina la conversazione";
+App::$strings["Events Menu"] = "Menu eventi";
+App::$strings["Day View"] = "Eventi del giorno";
+App::$strings["Week View"] = "Eventi della settimana";
+App::$strings["Month View"] = "Eventi del mese";
+App::$strings["Events Tools"] = "Gestione eventi";
+App::$strings["Export Calendar"] = "Esporta calendario";
+App::$strings["Import Calendar"] = "Importa calendario";
+App::$strings["Chatrooms"] = "Chat";
+App::$strings["Overview"] = "Riepilogo";
+App::$strings["Chat Members"] = "Partecipanti";
+App::$strings["Bookmarked Chatrooms"] = "Chat nei segnalibri";
+App::$strings["Suggested Chatrooms"] = "Chat suggerite";
+App::$strings["photo/image"] = "foto/immagine";
+App::$strings["Click to show more"] = "Clicca per mostrare tutto";
+App::$strings["Rating Tools"] = "Valutazione";
+App::$strings["Rate Me"] = "Valutami";
+App::$strings["View Ratings"] = "Vedi le valutazioni ricevute";
+App::$strings["Forums"] = "Forum";
+App::$strings["Tasks"] = "Attività";
+App::$strings["Documentation"] = "Guida";
+App::$strings["Project/Site Information"] = "Informazioni sul sito/progetto";
+App::$strings["For Members"] = "Per gli utenti";
+App::$strings["For Administrators"] = "Per gli amministratori";
+App::$strings["For Developers"] = "Per sviluppatori";
+App::$strings["Member registrations waiting for confirmation"] = "Richieste in attesa di conferma";
+App::$strings["Inspect queue"] = "Coda di attesa";
+App::$strings["DB updates"] = "Aggiornamenti al DB";
+App::$strings["Admin"] = "Amministrazione";
+App::$strings["Plugin Features"] = "Plugin";
+App::$strings["Channel is blocked on this site."] = "Il canale è bloccato per questo sito.";
+App::$strings["Channel location missing."] = "Manca l'indirizzo del canale.";
+App::$strings["Response from remote channel was incomplete."] = "La risposta dal canale non è completa.";
+App::$strings["Channel was deleted and no longer exists."] = "Il canale è stato rimosso e non esiste più.";
+App::$strings["Protocol disabled."] = "Protocollo disabilitato.";
+App::$strings["Channel discovery failed."] = "La ricerca del canale non ha avuto successo.";
+App::$strings["Cannot connect to yourself."] = "Non puoi connetterti a te stesso.";
+App::$strings["%1\$s's bookmarks"] = "I segnalibri di %1\$s";
+App::$strings["Public Timeline"] = "Diario pubblico";
+App::$strings["Image/photo"] = "Immagine";
+App::$strings["Encrypted content"] = "Contenuto cifrato";
+App::$strings["Install %s element: "] = "Installa l'elemento %s:";
+App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Questo post contiene un elemento %s installabile, tuttavia non hai i permessi necessari per l'installazione.";
+App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s ha scritto %2\$s %3\$s";
+App::$strings["Click to open/close"] = "Clicca per aprire/chiudere";
+App::$strings["spoiler"] = "spoiler";
+App::$strings["Different viewers will see this text differently"] = "Ad altri questo testo potrebbe apparire in modo differente";
+App::$strings["$1 wrote:"] = "$1 ha scritto:";
+App::$strings["Directory Options"] = "Visibilità negli elenchi pubblici";
+App::$strings["Safe Mode"] = "Modalità SafeSearch";
+App::$strings["Public Forums Only"] = "Solo forum pubblici";
+App::$strings["This Website Only"] = "Solo in questo sito";
+App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "I controlli di sicurezza sono falliti. Probabilmente è accaduto perché la pagina è stata tenuta aperta troppo a lungo (ore?) prima di inviare il contenuto.";
+App::$strings["Logout"] = "Esci";
+App::$strings["End this session"] = "Chiudi questa sessione";
+App::$strings["Home"] = "Bacheca";
+App::$strings["Your posts and conversations"] = "I tuoi post e conversazioni";
+App::$strings["Your profile page"] = "Il tuo profilo";
+App::$strings["Manage/Edit profiles"] = "Gestisci i tuoi profili";
+App::$strings["Edit Profile"] = "Modifica il profilo";
+App::$strings["Edit your profile"] = "Modifica il tuo profilo";
+App::$strings["Your photos"] = "Le tue foto";
+App::$strings["Your files"] = "I tuoi file";
+App::$strings["Your chatrooms"] = "Le tue chat";
+App::$strings["Bookmarks"] = "Segnalibri";
+App::$strings["Your bookmarks"] = "I tuoi segnalibri";
+App::$strings["Your webpages"] = "Le tue pagine web";
+App::$strings["Sign in"] = "Accedi";
+App::$strings["%s - click to logout"] = "%s - clicca per uscire";
+App::$strings["Remote authentication"] = "Accedi dal tuo hub";
+App::$strings["Click to authenticate to your home hub"] = "Clicca per farti riconoscere dal tuo hub principale";
+App::$strings["Home Page"] = "Bacheca";
+App::$strings["Create an account"] = "Crea un account";
+App::$strings["Help and documentation"] = "Guida e documentazione";
+App::$strings["Applications, utilities, links, games"] = "Applicazioni, utilità, link, giochi";
+App::$strings["Search site @name, #tag, ?docs, content"] = "Cerca nel sito per @nome, #tag, ?guida o per contenuto";
+App::$strings["Channel Directory"] = "Elenchi pubblici dei canali";
+App::$strings["Your grid"] = "La tua rete";
+App::$strings["Mark all grid notifications seen"] = "Segna come lette le notifiche della tua rete";
+App::$strings["Channel home"] = "Bacheca del canale";
+App::$strings["Mark all channel notifications seen"] = "Segna come lette le notifiche del canale";
+App::$strings["Notices"] = "Avvisi";
+App::$strings["Notifications"] = "Notifiche";
+App::$strings["See all notifications"] = "Vedi tutte le notifiche";
+App::$strings["Private mail"] = "Messaggi privati";
+App::$strings["See all private messages"] = "Guarda tutti i messaggi privati";
+App::$strings["Mark all private messages seen"] = "Segna come letti tutti i messaggi privati";
+App::$strings["Event Calendar"] = "Calendario";
+App::$strings["See all events"] = "Guarda tutti gli eventi";
+App::$strings["Mark all events seen"] = "Marca come letti tutti gli eventi";
+App::$strings["Manage Your Channels"] = "Gestisci i tuoi canali";
+App::$strings["Account/Channel Settings"] = "Impostazioni dell'account e del canale";
+App::$strings["Site Setup and Configuration"] = "Installazione e configurazione del sito";
+App::$strings["Loading..."] = "Caricamento in corso...";
+App::$strings["@name, #tag, ?doc, content"] = "@nome, #tag, ?guida, contenuto";
+App::$strings["Please wait..."] = "Attendere...";
+App::$strings["New window"] = "Nuova finestra";
+App::$strings["Open the selected location in a different window or browser tab"] = "Apri l'indirizzo selezionato in una nuova scheda o finestra";
+App::$strings["User '%s' deleted"] = "Utente '%s' eliminato";
+App::$strings["%d invitation available"] = array(
+ 0 => "%d invito disponibile",
+ 1 => "%d inviti disponibili",
+);
+App::$strings["Find Channels"] = "Ricerca canali";
+App::$strings["Enter name or interest"] = "Scrivi un nome o un interesse";
+App::$strings["Connect/Follow"] = "Aggiungi";
+App::$strings["Examples: Robert Morgenstein, Fishing"] = "Per esempio: Mario Rossi, Pesca";
+App::$strings["Random Profile"] = "Profilo casuale";
+App::$strings["Invite Friends"] = "Invita amici";
+App::$strings["Advanced example: name=fred and country=iceland"] = "Per esempio: name=mario e country=italy";
+App::$strings["%d connection in common"] = array(
+ 0 => "%d contatto in comune",
+ 1 => "%d contatti in comune",
+);
+App::$strings["show more"] = "mostra tutto";
+App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s adesso è connesso con %2\$s";
+App::$strings["%1\$s poked %2\$s"] = "%1\$s ha mandato un poke a %2\$s";
+App::$strings["View %s's profile @ %s"] = "Vedi il profilo di %s @ %s";
+App::$strings["Categories:"] = "Categorie:";
+App::$strings["Filed under:"] = "Classificato come:";
+App::$strings["View in context"] = "Vedi nel contesto";
+App::$strings["remove"] = "rimuovi";
+App::$strings["Delete Selected Items"] = "Elimina gli oggetti selezionati";
+App::$strings["View Source"] = "Vedi il sorgente";
+App::$strings["Follow Thread"] = "Segui la discussione";
+App::$strings["Unfollow Thread"] = "Non seguire la discussione";
+App::$strings["Activity/Posts"] = "Attività e Post";
+App::$strings["Edit Connection"] = "Modifica il contatto";
+App::$strings["Message"] = "Messaggio";
+App::$strings["%s likes this."] = "Piace a %s.";
+App::$strings["%s doesn't like this."] = "Non piace a %s.";
+App::$strings["<span %1\$s>%2\$d people</span> like this."] = array(
+ 0 => "",
+ 1 => "Piace a <span %1\$s>%2\$d persone</span>.",
+);
+App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
+ 0 => "",
+ 1 => "Non piace a <span %1\$s>%2\$d persone</span>.",
+);
+App::$strings["and"] = "e";
+App::$strings[", and %d other people"] = array(
+ 0 => "",
+ 1 => "e altre %d persone",
+);
+App::$strings["%s like this."] = "Piace a %s.";
+App::$strings["%s don't like this."] = "Non piace a %s.";
+App::$strings["Set your location"] = "La tua località";
+App::$strings["Clear browser location"] = "Rimuovi la località data dal browser";
+App::$strings["Tag term:"] = "Tag:";
+App::$strings["Where are you right now?"] = "Dove sei ora?";
+App::$strings["Page link name"] = "Nome del link alla pagina";
+App::$strings["Post as"] = "Pubblica come ";
+App::$strings["Toggle voting"] = "Abilita/disabilita il voto";
+App::$strings["Categories (optional, comma-separated list)"] = "Categorie (facoltative, lista separata da virgole)";
+App::$strings["Set publish date"] = "Data di uscita programmata";
+App::$strings["OK"] = "OK";
+App::$strings["Discover"] = "Scopri";
+App::$strings["Imported public streams"] = "Contenuti pubblici importati";
+App::$strings["Commented Order"] = "Commenti recenti";
+App::$strings["Sort by Comment Date"] = "Per data del commento";
+App::$strings["Posted Order"] = "Post recenti";
+App::$strings["Sort by Post Date"] = "Per data di creazione";
+App::$strings["Posts that mention or involve you"] = "Post che ti riguardano";
+App::$strings["Activity Stream - by date"] = "Elenco attività - per data";
+App::$strings["Starred"] = "Preferiti";
+App::$strings["Favourite Posts"] = "Post preferiti";
+App::$strings["Spam"] = "Spam";
+App::$strings["Posts flagged as SPAM"] = "Post marcati come spam";
+App::$strings["Status Messages and Posts"] = "Post e messaggi di stato";
+App::$strings["About"] = "Informazioni";
+App::$strings["Profile Details"] = "Dettagli del profilo";
+App::$strings["Photo Albums"] = "Album foto";
+App::$strings["Files and Storage"] = "Archivio file";
+App::$strings["Saved Bookmarks"] = "Segnalibri salvati";
+App::$strings["Manage Webpages"] = "Gestisci le pagine web";
+App::$strings["__ctx:noun__ Attending"] = array(
+ 0 => "Partecipa",
+ 1 => "Partecipano",
+);
+App::$strings["__ctx:noun__ Not Attending"] = array(
+ 0 => "Non partecipa",
+ 1 => "Non partecipano",
+);
+App::$strings["__ctx:noun__ Undecided"] = array(
+ 0 => "Indeciso",
+ 1 => "Indecisi",
+);
+App::$strings["__ctx:noun__ Agree"] = array(
+ 0 => "D'accordo",
+ 1 => "D'accordo",
+);
+App::$strings["__ctx:noun__ Disagree"] = array(
+ 0 => "Non d'accordo",
+ 1 => "Non d'accordo",
+);
+App::$strings["__ctx:noun__ Abstain"] = array(
+ 0 => "Astenuto",
+ 1 => "Astenuti",
+);
+App::$strings["Frequently"] = "Frequentemente";
+App::$strings["Hourly"] = "Ogni ora";
+App::$strings["Twice daily"] = "Due volte al giorno";
+App::$strings["Daily"] = "Ogni giorno";
+App::$strings["Weekly"] = "Ogni settimana";
+App::$strings["Monthly"] = "Ogni mese";
+App::$strings["Currently Male"] = "Al momento maschio";
+App::$strings["Currently Female"] = "Al momento femmina";
+App::$strings["Mostly Male"] = "Prevalentemente maschio";
+App::$strings["Mostly Female"] = "Prevalentemente femmina";
+App::$strings["Transgender"] = "Transgender";
+App::$strings["Intersex"] = "Intersex";
+App::$strings["Transsexual"] = "Transessuale";
+App::$strings["Hermaphrodite"] = "Ermafrodito";
+App::$strings["Neuter"] = "Neutro";
+App::$strings["Non-specific"] = "Non specificato";
+App::$strings["Other"] = "Altro";
+App::$strings["Undecided"] = "Indeciso";
+App::$strings["Males"] = "Maschi";
+App::$strings["Females"] = "Femmine";
+App::$strings["Gay"] = "Gay";
+App::$strings["Lesbian"] = "Lesbica";
+App::$strings["No Preference"] = "Senza preferenza";
+App::$strings["Bisexual"] = "Bisessuale";
+App::$strings["Autosexual"] = "Autosessuale";
+App::$strings["Abstinent"] = "Astinente";
+App::$strings["Virgin"] = "Vergine";
+App::$strings["Deviant"] = "Deviato";
+App::$strings["Fetish"] = "Feticista";
+App::$strings["Oodles"] = "Un sacco";
+App::$strings["Nonsexual"] = "Asessuato";
+App::$strings["Single"] = "Single";
+App::$strings["Lonely"] = "Da solo";
+App::$strings["Available"] = "Disponibile";
+App::$strings["Unavailable"] = "Non disponibile";
+App::$strings["Has crush"] = "Ha una cotta";
+App::$strings["Infatuated"] = "Infatuato/a";
+App::$strings["Dating"] = "Disponibile a un incontro";
+App::$strings["Unfaithful"] = "Infedele";
+App::$strings["Sex Addict"] = "Sesso-dipendente";
+App::$strings["Friends/Benefits"] = "Amici con qualcosa in più";
+App::$strings["Casual"] = "Casual";
+App::$strings["Engaged"] = "Impegnato";
+App::$strings["Married"] = "Sposato/a";
+App::$strings["Imaginarily married"] = "Con matrimonio immaginario";
+App::$strings["Partners"] = "Partner";
+App::$strings["Cohabiting"] = "Convivente";
+App::$strings["Common law"] = "Matrimonio regolare";
+App::$strings["Happy"] = "Felice";
+App::$strings["Not looking"] = "Non in cerca";
+App::$strings["Swinger"] = "Scambista";
+App::$strings["Betrayed"] = "Tradito/a";
+App::$strings["Separated"] = "Separato/a";
+App::$strings["Unstable"] = "Instabile";
+App::$strings["Divorced"] = "Divorziato/a";
+App::$strings["Imaginarily divorced"] = "Sogna il divorzio";
+App::$strings["Widowed"] = "Vedovo/a";
+App::$strings["Uncertain"] = "Incerto/a";
+App::$strings["It's complicated"] = "Relazione complicata";
+App::$strings["Don't care"] = "Chi se ne frega";
+App::$strings["Ask me"] = "Chiedimelo";
+App::$strings["Visible to your default audience"] = "Visibile secondo le impostazioni predefinite";
+App::$strings["Only me"] = "Solo io";
+App::$strings["Public"] = "Pubblico";
+App::$strings["Anybody in the \$Projectname network"] = "Tutti sulla rete \$Projectname";
+App::$strings["Any account on %s"] = "Tutti gli account su %s";
+App::$strings["Any of my connections"] = "Chiunque tra i miei contatti";
+App::$strings["Only connections I specifically allow"] = "Solo chi riceve il mio permesso";
+App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Chiunque sia autenticato (inclusi visitatori di altre reti)";
+App::$strings["Any connections including those who haven't yet been approved"] = "Tutti i contatti inclusi quelli non ancora approvati";
+App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "";
+App::$strings["This is your default setting for who can view your default channel profile"] = "";
+App::$strings["This is your default setting for who can view your connections"] = "";
+App::$strings["This is your default setting for who can view your file storage and photos"] = "";
+App::$strings["This is your default setting for the audience of your webpages"] = "";
+App::$strings["Not a valid email address"] = "Email non valida";
+App::$strings["Your email domain is not among those allowed on this site"] = "Il dominio della tua email attualmente non è permesso su questo sito";
+App::$strings["Your email address is already registered at this site."] = "La tua email è già registrata su questo sito.";
+App::$strings["An invitation is required."] = "È necessario un invito.";
+App::$strings["Invitation could not be verified."] = "L'invito non può essere verificato.";
+App::$strings["Please enter the required information."] = "Inserisci le informazioni richieste.";
+App::$strings["Failed to store account information."] = "Non è stato possibile salvare le informazioni del tuo account.";
+App::$strings["Registration confirmation for %s"] = "Registrazione di %s confermata";
+App::$strings["Registration request at %s"] = "Richiesta di registrazione su %s";
+App::$strings["Administrator"] = "Amministratore";
+App::$strings["your registration password"] = "la password di registrazione";
+App::$strings["Registration details for %s"] = "Dettagli della registrazione di %s";
+App::$strings["Account approved."] = "Account approvato.";
+App::$strings["Registration revoked for %s"] = "Registrazione revocata per %s";
+App::$strings["Account verified. Please login."] = "Registrazione verificata. Adesso puoi effettuare login.";
+App::$strings["Click here to upgrade."] = "Clicca qui per aggiornare.";
+App::$strings["This action exceeds the limits set by your subscription plan."] = "Questa operazione supera i limiti del tuo abbonamento.";
+App::$strings["This action is not available under your subscription plan."] = "Questa operazione non è prevista dal tuo abbonamento.";
+App::$strings["Item was not found."] = "Elemento non trovato.";
+App::$strings["No source file."] = "Nessun file di origine.";
+App::$strings["Cannot locate file to replace"] = "Il file da sostituire non è stato trovato";
+App::$strings["Cannot locate file to revise/update"] = "Il file da aggiornare non è stato trovato";
+App::$strings["File exceeds size limit of %d"] = "Il file supera la dimensione massima di %d";
+App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Hai raggiunto il limite complessivo di %1$.0f Mbytes per gli allegati.";
+App::$strings["File upload failed. Possible system limit or action terminated."] = "Caricamento file fallito, potrebbe essere stato interrotto o potrebbe aver superato lo spazio assegnato.";
+App::$strings["Stored file could not be verified. Upload failed."] = "Il file non può essere verificato. Caricamento fallito.";
+App::$strings["Path not available."] = "Percorso non disponibile.";
+App::$strings["Empty pathname"] = "Il percorso del file è vuoto";
+App::$strings["duplicate filename or path"] = "il file o il percorso del file è duplicato";
+App::$strings["Path not found."] = "Percorso del file non trovato.";
+App::$strings["mkdir failed."] = "mkdir fallito.";
+App::$strings["database storage failed."] = "scrittura su database fallita.";
+App::$strings["Empty path"] = "La posizione è vuota";
+App::$strings["Unable to obtain identity information from database"] = "Impossibile ottenere le informazioni di identificazione dal database";
+App::$strings["Empty name"] = "Nome vuoto";
+App::$strings["Name too long"] = "Nome troppo lungo";
+App::$strings["No account identifier"] = "Account senza identificativo";
+App::$strings["Nickname is required."] = "Il nome dell'account è obbligatorio.";
+App::$strings["Reserved nickname. Please choose another."] = "Nome utente riservato. Per favore scegline un altro.";
+App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Il nome dell'account è già in uso oppure ha dei caratteri non supportati.";
+App::$strings["Unable to retrieve created identity"] = "Impossibile caricare l'identità creata";
+App::$strings["Default Profile"] = "Profilo predefinito";
+App::$strings["Requested channel is not available."] = "Il canale che cerchi non è disponibile.";
+App::$strings["Create New Profile"] = "Crea un nuovo profilo";
+App::$strings["Visible to everybody"] = "Visibile a tutti";
+App::$strings["Gender:"] = "Sesso:";
+App::$strings["Status:"] = "Stato:";
+App::$strings["Homepage:"] = "Home page:";
+App::$strings["Online Now"] = "Online adesso";
+App::$strings["Like this channel"] = "Mi piace questo canale";
+App::$strings["j F, Y"] = "j F Y";
+App::$strings["j F"] = "j F";
+App::$strings["Birthday:"] = "Compleanno:";
+App::$strings["for %1\$d %2\$s"] = "per %1\$d %2\$s";
+App::$strings["Sexual Preference:"] = "Preferenze sessuali:";
+App::$strings["Tags:"] = "Tag:";
+App::$strings["Political Views:"] = "Orientamento politico:";
+App::$strings["Religion:"] = "Religione:";
+App::$strings["Hobbies/Interests:"] = "Interessi e hobby:";
+App::$strings["Likes:"] = "Mi piace:";
+App::$strings["Dislikes:"] = "Non mi piace:";
+App::$strings["Contact information and Social Networks:"] = "Contatti e social network:";
+App::$strings["My other channels:"] = "I miei altri canali:";
+App::$strings["Musical interests:"] = "Gusti musicali:";
+App::$strings["Books, literature:"] = "Libri, letteratura:";
+App::$strings["Television:"] = "Televisione:";
+App::$strings["Film/dance/culture/entertainment:"] = "Film, danza, cultura, intrattenimento:";
+App::$strings["Love/Romance:"] = "Amore:";
+App::$strings["Work/employment:"] = "Lavoro:";
+App::$strings["School/education:"] = "Scuola:";
+App::$strings["Like this thing"] = "Mi piace";
+App::$strings["General Features"] = "Funzionalità di base";
+App::$strings["Content Expiration"] = "Scadenza";
+App::$strings["Remove posts/comments and/or private messages at a future time"] = "Elimina i post, i commenti o i messaggi privati dopo un lasso di tempo";
+App::$strings["Multiple Profiles"] = "Profili multipli";
+App::$strings["Ability to create multiple profiles"] = "Abilitazione a creare profili multipli";
+App::$strings["Advanced Profiles"] = "Profili avanzati";
+App::$strings["Additional profile sections and selections"] = "Informazioni aggiuntive del profilo";
+App::$strings["Profile Import/Export"] = "Importa/esporta il profilo";
+App::$strings["Save and load profile details across sites/channels"] = "Salva o ripristina le informazioni del profilo su siti diversi";
+App::$strings["Web Pages"] = "Pagine web";
+App::$strings["Provide managed web pages on your channel"] = "Attiva la creazione di pagine web sul tuo canale";
+App::$strings["Hide Rating"] = "Nascondi le valutazioni";
+App::$strings["Hide the rating buttons on your channel and profile pages. Note: People can still rate you somewhere else."] = "Nascondi i bottoni delle valutazioni sul tuo canale e sul profilo. Nota: le persone potranno comunque esprimere una valutazione altrove.";
+App::$strings["Private Notes"] = "Note private";
+App::$strings["Enables a tool to store notes and reminders (note: not encrypted)"] = "Abilita il riquadro per scrivere annotazioni (in chiaro)";
+App::$strings["Navigation Channel Select"] = "Scegli il canale attivo dal menu";
+App::$strings["Change channels directly from within the navigation dropdown menu"] = "Scegli il canale attivo direttamente dal menu di navigazione";
+App::$strings["Photo Location"] = "Posizione geografica";
+App::$strings["If location data is available on uploaded photos, link this to a map."] = "Collega la foto a una mappa quando contiene indicazioni geografiche.";
+App::$strings["Access Controlled Chatrooms"] = "Chat ad accesso riservato";
+App::$strings["Provide chatrooms and chat services with access control."] = "Il servizio di chat con accesso riservato";
+App::$strings["Smart Birthdays"] = "Compleanni intelligenti";
+App::$strings["Make birthday events timezone aware in case your friends are scattered across the planet."] = "I compleanni saranno segnalati in base al fuso orario, utile se hai amici sparsi per il mondo.";
+App::$strings["Expert Mode"] = "Modalità esperto";
+App::$strings["Enable Expert Mode to provide advanced configuration options"] = "Abilita la modalità esperto per vedere le opzioni di configurazione avanzate";
+App::$strings["Premium Channel"] = "Canale premium";
+App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Ti permette di impostare restrizioni e termini d'uso per il canale";
+App::$strings["Post Composition Features"] = "Modalità di scrittura post";
+App::$strings["Large Photos"] = "Foto grandi";
+App::$strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Includi anteprime grandi per le foto dei tuoi post (1024px). Altrimenti saranno mostrate anteprime più piccole (640px)";
+App::$strings["Automatically import channel content from other channels or feeds"] = "Importa automaticamente il contenuto del canale da altri canali o feed";
+App::$strings["Even More Encryption"] = "Cifratura addizionale";
+App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Rendi possibile la crifratura aggiuntiva tra mittente e destinatario usando una parola chiave conosciuta a entrambi";
+App::$strings["Enable Voting Tools"] = "Permetti i post con votazione";
+App::$strings["Provide a class of post which others can vote on"] = "Rende possibile la creazione di post in cui sarà possibile votare";
+App::$strings["Delayed Posting"] = "Pubblicazione ritardata";
+App::$strings["Allow posts to be published at a later date"] = "Per scegliere una data e un'ora a cui far uscire i post";
+App::$strings["Suppress Duplicate Posts/Comments"] = "Impedisci post e commenti duplicati";
+App::$strings["Prevent posts with identical content to be published with less than two minutes in between submissions."] = "Scarta post e commenti se sono identici ad altri inviati meno di due minuti prima.";
+App::$strings["Network and Stream Filtering"] = "Filtraggio dei contenuti";
+App::$strings["Search by Date"] = "Ricerca per data";
+App::$strings["Ability to select posts by date ranges"] = "Per selezionare i post in un intervallo tra date";
+App::$strings["Privacy Groups"] = "Gruppi di canali";
+App::$strings["Enable management and selection of privacy groups"] = "Abilita i gruppi di canali";
+App::$strings["Save search terms for re-use"] = "Salva i termini delle ricerche per poterle ripetere";
+App::$strings["Network Personal Tab"] = "Attività personale";
+App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Abilita il link per mostrare solamente i contenuti con cui hai interagito";
+App::$strings["Network New Tab"] = "Contenuti nuovi";
+App::$strings["Enable tab to display all new Network activity"] = "Abilita il link per visualizzare solo i nuovi contenuti";
+App::$strings["Affinity Tool"] = "Filtro per affinità";
+App::$strings["Filter stream activity by depth of relationships"] = "Permette di selezionare i contenuti in base al livello di amicizia";
+App::$strings["Connection Filtering"] = "Filtro sui contatti";
+App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filtra i post che ricevi con parole chiave";
+App::$strings["Show channel suggestions"] = "Mostra alcuni canali che potrebbero interessarti";
+App::$strings["Post/Comment Tools"] = "Gestione post e commenti";
+App::$strings["Community Tagging"] = "Tag della comunità";
+App::$strings["Ability to tag existing posts"] = "Permetti l'aggiunta di tag su post già esistenti";
+App::$strings["Post Categories"] = "Categorie dei post";
+App::$strings["Add categories to your posts"] = "Abilita le categorie per i tuoi post";
+App::$strings["Emoji Reactions"] = "";
+App::$strings["Add emoji reaction ability to posts"] = "";
+App::$strings["Ability to file posts under folders"] = "Abilita la raccolta dei tuoi articoli in cartelle";
+App::$strings["Dislike Posts"] = "Non mi piace";
+App::$strings["Ability to dislike posts/comments"] = "Abilità la funzionalità \"non mi piace\" per i tuoi post";
+App::$strings["Star Posts"] = "Post con stella";
+App::$strings["Ability to mark special posts with a star indicator"] = "Mostra la stella per segnare i post preferiti";
+App::$strings["Tag Cloud"] = "Nuvola di tag";
+App::$strings["Provide a personal tag cloud on your channel page"] = "Mostra la nuvola dei tag che usi di più sulla pagina del tuo canale";
+App::$strings["Embedded content"] = "Contenuti incorporati";
+App::$strings["Embedding disabled"] = "Disabilita la creazione di contenuti incorporati";
+App::$strings["Who can see this?"] = "Chi può vederlo?";
+App::$strings["Custom selection"] = "Selezione personalizzata";
+App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "";
+App::$strings["Show"] = "Mostra";
+App::$strings["Don't show"] = "Non mostrare";
+App::$strings["Other networks and post services"] = "Invio ad altre reti o a siti esterni";
+App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "";
+App::$strings["Logged out."] = "Uscita effettuata.";
+App::$strings["Failed authentication"] = "Autenticazione fallita";
+App::$strings["Birthday"] = "Compleanno";
+App::$strings["Age: "] = "Età:";
+App::$strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-GG oppure MM-GG";
+App::$strings["never"] = "mai";
+App::$strings["less than a second ago"] = "meno di un secondo fa";
+App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "%1\$d %2\$s fa";
+App::$strings["__ctx:relative_date__ year"] = array(
+ 0 => "anno",
+ 1 => "anni",
+);
+App::$strings["__ctx:relative_date__ month"] = array(
+ 0 => "mese",
+ 1 => "mesi",
+);
+App::$strings["__ctx:relative_date__ week"] = array(
+ 0 => "settimana",
+ 1 => "settimane",
+);
+App::$strings["__ctx:relative_date__ day"] = array(
+ 0 => "giorno",
+ 1 => "giorni",
+);
+App::$strings["__ctx:relative_date__ hour"] = array(
+ 0 => "ora",
+ 1 => "ore",
+);
+App::$strings["__ctx:relative_date__ minute"] = array(
+ 0 => "minuto",
+ 1 => "minuti",
+);
+App::$strings["__ctx:relative_date__ second"] = array(
+ 0 => "secondo",
+ 1 => "secondi",
+);
+App::$strings["%1\$s's birthday"] = "Compleanno di %1\$s";
+App::$strings["Happy Birthday %1\$s"] = "Buon compleanno %1\$s";
+App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un gruppo di canali con lo stesso nome esisteva in precedenza ed è stato ripristinato. I vecchi permessi saranno applicati ai nuovi canali. Se non vuoi che ciò accada, devi creare un gruppo con un nome diverso.";
+App::$strings["Add new connections to this privacy group"] = "Aggiungi nuovi contatti a questo gruppo di canali";
+App::$strings["edit"] = "modifica";
+App::$strings["Edit group"] = "Modifica il gruppo";
+App::$strings["Add privacy group"] = "Crea un gruppo di canali";
+App::$strings["Channels not in any privacy group"] = "Canali che non sono in nessun gruppo";
+App::$strings["Delete this item?"] = "Eliminare questo elemento?";
+App::$strings["[-] show less"] = "[-] riduci";
+App::$strings["[+] expand"] = "[+] mostra tutto";
+App::$strings["[-] collapse"] = "[-] riduci";
+App::$strings["Password too short"] = "Password troppo corta";
+App::$strings["Passwords do not match"] = "Le password non corrispondono";
+App::$strings["everybody"] = "tutti";
+App::$strings["Secret Passphrase"] = "Parola chiave per decifrare";
+App::$strings["Passphrase hint"] = "Suggerimento per la parola chiave";
+App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Nota: i permessi sono stati modificati ma non ancora salvati.";
+App::$strings["close all"] = "chiudi tutto";
+App::$strings["Nothing new here"] = "Niente di nuovo qui";
+App::$strings["Rate This Channel (this is public)"] = "Valuta questo canale (visibile a tutti)";
+App::$strings["Describe (optional)"] = "Descrizione (facoltativa)";
+App::$strings["Please enter a link URL"] = "Inserisci l'URL di un link";
+App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Non hai salvato i cambiamenti. Vuoi davvero lasciare questa pagina?";
+App::$strings["timeago.prefixAgo"] = "timeago.prefixAgo";
+App::$strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
+App::$strings["ago"] = "fa";
+App::$strings["from now"] = "da adesso";
+App::$strings["less than a minute"] = "meno di un minuto";
+App::$strings["about a minute"] = "circa un minuto";
+App::$strings["%d minutes"] = "%d minuti";
+App::$strings["about an hour"] = "circa un’ora";
+App::$strings["about %d hours"] = "circa %d ore";
+App::$strings["a day"] = "un giorno";
+App::$strings["%d days"] = "%d giorni";
+App::$strings["about a month"] = "circa un mese";
+App::$strings["%d months"] = "%d mesi";
+App::$strings["about a year"] = "circa un anno";
+App::$strings["%d years"] = "%d anni";
+App::$strings[" "] = " ";
+App::$strings["timeago.numbers"] = "timeago.numbers";
+App::$strings["__ctx:long__ May"] = "maggio";
+App::$strings["Jan"] = "Gen";
+App::$strings["Feb"] = "Feb";
+App::$strings["Mar"] = "Mar";
+App::$strings["Apr"] = "Apr";
+App::$strings["__ctx:short__ May"] = "maggio";
+App::$strings["Jun"] = "Mag";
+App::$strings["Jul"] = "Giu";
+App::$strings["Aug"] = "Ago";
+App::$strings["Sep"] = "Set";
+App::$strings["Oct"] = "Ott";
+App::$strings["Nov"] = "Nov";
+App::$strings["Dec"] = "Dic";
+App::$strings["Sun"] = "Dom";
+App::$strings["Mon"] = "Lun";
+App::$strings["Tue"] = "Mar";
+App::$strings["Wed"] = "Mer";
+App::$strings["Thu"] = "Gio";
+App::$strings["Fri"] = "Ven";
+App::$strings["Sat"] = "Sab";
+App::$strings["__ctx:calendar__ today"] = "oggi";
+App::$strings["__ctx:calendar__ month"] = "mese";
+App::$strings["__ctx:calendar__ week"] = "settimana";
+App::$strings["__ctx:calendar__ day"] = "giorno";
+App::$strings["__ctx:calendar__ All day"] = "Tutto il giorno";
+App::$strings["view full size"] = "guarda nelle dimensioni reali";
+App::$strings["No Subject"] = "Nessun titolo";
+App::$strings["Friendica"] = "Friendica";
+App::$strings["OStatus"] = "OStatus";
+App::$strings["GNU-Social"] = "GNU-Social";
+App::$strings["RSS/Atom"] = "RSS/Atom";
+App::$strings["Diaspora"] = "Diaspora";
+App::$strings["Facebook"] = "Facebook";
+App::$strings["Zot"] = "Zot";
+App::$strings["LinkedIn"] = "LinkedIn";
+App::$strings["XMPP/IM"] = "XMPP/IM";
+App::$strings["MySpace"] = "MySpace";
+App::$strings["Image exceeds website size limit of %lu bytes"] = "L'immagine supera il limite massimo di %lu bytes";
+App::$strings["Image file is empty."] = "Il file dell'immagine è vuoto.";
+App::$strings["Photo storage failed."] = "Impossibile salvare la foto.";
+App::$strings["a new photo"] = "una nuova foto";
+App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s ha pubblicato %2\$s su %3\$s";
+App::$strings["Upload New Photos"] = "Carica nuove foto";
+App::$strings["Invalid data packet"] = "Dati ricevuti non validi";
+App::$strings["Unable to verify channel signature"] = "Impossibile verificare la firma elettronica del canale";
+App::$strings["Unable to verify site signature for %s"] = "Impossibile verificare la firma elettronica del sito %s";
+App::$strings["invalid target signature"] = "la firma ricevuta non è valida";
+App::$strings["New Page"] = "Nuova pagina web";
+App::$strings["Title"] = "Titolo";
+App::$strings["Can view my normal stream and posts"] = "Può vedere i miei contenuti e i post normali";
+App::$strings["Can view my default channel profile"] = "Può vedere il profilo predefinito del canale";
+App::$strings["Can view my connections"] = "Può vedere i miei contatti";
+App::$strings["Can view my file storage and photos"] = "Può vedere il mio archivio file e foto";
+App::$strings["Can view my webpages"] = "Può vedere le mie pagine web";
+App::$strings["Can send me their channel stream and posts"] = "È tra i canali che seguo";
+App::$strings["Can post on my channel page (\"wall\")"] = "Può scrivere sulla bacheca del mio canale";
+App::$strings["Can comment on or like my posts"] = "Può commentare o aggiungere \"mi piace\" ai miei post";
+App::$strings["Can send me private mail messages"] = "Può inviarmi messaggi privati";
+App::$strings["Can like/dislike stuff"] = "Può aggiungere \"mi piace\" a tutto il resto";
+App::$strings["Profiles and things other than posts/comments"] = "Può aggiungere \"mi piace\" a tutto ciò che non riguarda i post, come per esempio il profilo";
+App::$strings["Can forward to all my channel contacts via post @mentions"] = "Può inoltrare post a tutti i contatti del canale tramite una @menzione";
+App::$strings["Advanced - useful for creating group forum channels"] = "Impostazione avanzata - utile per creare un canale-forum di discussione";
+App::$strings["Can chat with me (when available)"] = "Può aprire una chat con me (se disponibile)";
+App::$strings["Can write to my file storage and photos"] = "Può modificare il mio archivio file e foto";
+App::$strings["Can edit my webpages"] = "Può modificare le mie pagine web";
+App::$strings["Can source my public posts in derived channels"] = "Può usare i miei post pubblici per creare canali derivati";
+App::$strings["Somewhat advanced - very useful in open communities"] = "Piuttosto avanzato - molto utile nelle comunità aperte";
+App::$strings["Can administer my channel resources"] = "Può amministrare i contenuti del mio canale";
+App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Impostazione pericolosa - lasciare il valore predefinito se non si è assolutamente sicuri";
+App::$strings["Social Networking"] = "Social network";
+App::$strings["Social - Mostly Public"] = "Social - Prevalentemente pubblico";
+App::$strings["Social - Restricted"] = "Social - Con restrizioni";
+App::$strings["Social - Private"] = "Social - Privato";
+App::$strings["Community Forum"] = "Forum di discussione";
+App::$strings["Forum - Mostly Public"] = "Social - Prevalentemente pubblico";
+App::$strings["Forum - Restricted"] = "Forum - Con restrizioni";
+App::$strings["Forum - Private"] = "Forum - Privato";
+App::$strings["Feed Republish"] = "Aggregatore di feed esterni";
+App::$strings["Feed - Mostly Public"] = "Feed - Prevalentemente pubblico";
+App::$strings["Feed - Restricted"] = "Feed - Con restrizioni";
+App::$strings["Special Purpose"] = "Per finalità speciali";
+App::$strings["Special - Celebrity/Soapbox"] = "Speciale - Pagina per fan";
+App::$strings["Special - Group Repository"] = "Speciale - Repository di gruppo";
+App::$strings["Custom/Expert Mode"] = "Personalizzazione per esperti";
+App::$strings[" and "] = "e";
+App::$strings["public profile"] = "profilo pubblico";
+App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s ha cambiato %2\$s in &ldquo;%3\$s&rdquo;";
+App::$strings["Visit %1\$s's %2\$s"] = "Guarda %2\$s di %1\$s ";
+App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s ha aggiornato %2\$s cambiando %3\$s.";
+App::$strings["Attachments:"] = "Allegati:";
+App::$strings["\$Projectname event notification:"] = "Notifica evento \$Projectname:";
App::$strings["Focus (Hubzilla default)"] = "Focus (predefinito)";
App::$strings["Theme settings"] = "Impostazioni del tema";
App::$strings["Select scheme"] = "Scegli uno schema";
@@ -2270,6 +2289,8 @@ App::$strings["Left align page content"] = "Allinea a sinistra il contenuto dell
App::$strings["Set minimum opacity of nav bar - to hide it"] = "Opacità minima della barra di navigazione - per nasconderla";
App::$strings["Set size of conversation author photo"] = "Dimensione foto dell'autore della conversazione";
App::$strings["Set size of followup author photos"] = "Dimensione foto dei partecipanti alla conversazione";
+App::$strings["__ctx:opensearch__ Search %1\$s (%2\$s)"] = "Cerca %1\$s (%2\$s)";
+App::$strings["__ctx:opensearch__ \$Projectname"] = "\$Projectname";
App::$strings["Update %s failed. See error logs."] = "%s: aggiornamento fallito. Controlla i log di errore.";
App::$strings["Update Error at %s"] = "Errore di aggiornamento su %s";
App::$strings["Create an account to access services and applications within the Hubzilla"] = "Registrati per accedere ai servizi e alle applicazioni di Hubzilla";
diff --git a/view/it/htconfig.tpl b/view/it/htconfig.tpl
index d0a799cf6..802b31b49 100644
--- a/view/it/htconfig.tpl
+++ b/view/it/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/it/messages.po b/view/it/messages.po
index 5efed0fd8..8f9008998 100644
--- a/view/it/messages.po
+++ b/view/it/messages.po
@@ -3,19 +3,20 @@
# This file is distributed under the same license as the Red package.
#
# Translators:
+# Davide Pesenti <mrjive@mrjive.it>, 2016
# fabrixxm <fabrix.xm@gmail.com>, 2011
# fabrixxm <fabrix.xm@gmail.com>, 2011-2012
# Francesco Apruzzese <cescoap@gmail.com>, 2012-2013
# ufic <marco@carnazzo.it>, 2012
-# tuscanhobbit <pynolo@tarine.net>, 2012
-# tuscanhobbit <pynolo@tarine.net>, 2013-2015
+# Paolo Wave <pynolo@tarine.net>, 2012
+# Paolo Wave <pynolo@tarine.net>, 2013-2015
msgid ""
msgstr ""
"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-17 16:47-0700\n"
-"PO-Revision-Date: 2015-10-24 10:03+0000\n"
-"Last-Translator: tuscanhobbit <pynolo@tarine.net>\n"
+"POT-Creation-Date: 2016-05-20 00:01-0700\n"
+"PO-Revision-Date: 2016-03-09 09:28+0000\n"
+"Last-Translator: Davide Pesenti <mrjive@mrjive.it>\n"
"Language-Team: Italian (http://www.transifex.com/Friendica/red-matrix/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -23,104 +24,6 @@ msgstr ""
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../../include/dba/dba_driver.php:141
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "Non trovo le informazioni DNS per il database server '%s'"
-
-#: ../../include/photo/photo_driver.php:687 ../../mod/profile_photo.php:143
-#: ../../mod/profile_photo.php:302 ../../mod/profile_photo.php:424
-#: ../../mod/photos.php:92 ../../mod/photos.php:637
-msgid "Profile Photos"
-msgstr "Foto del profilo"
-
-#: ../../include/menu.php:107 ../../include/page_widgets.php:8
-#: ../../include/page_widgets.php:36 ../../include/RedDAV/RedBrowser.php:266
-#: ../../include/ItemObject.php:100 ../../include/apps.php:254
-#: ../../mod/webpages.php:181 ../../mod/thing.php:255
-#: ../../mod/connections.php:242 ../../mod/connections.php:255
-#: ../../mod/connections.php:274 ../../mod/blocks.php:153
-#: ../../mod/editpost.php:106 ../../mod/editlayout.php:133
-#: ../../mod/editwebpage.php:178 ../../mod/editblock.php:134
-#: ../../mod/menu.php:106 ../../mod/settings.php:650 ../../mod/layouts.php:183
-msgid "Edit"
-msgstr "Modifica"
-
-#: ../../include/contact_selectors.php:56
-msgid "Frequently"
-msgstr "Frequentemente"
-
-#: ../../include/contact_selectors.php:57
-msgid "Hourly"
-msgstr "Ogni ora"
-
-#: ../../include/contact_selectors.php:58
-msgid "Twice daily"
-msgstr "Due volte al giorno"
-
-#: ../../include/contact_selectors.php:59
-msgid "Daily"
-msgstr "Ogni giorno"
-
-#: ../../include/contact_selectors.php:60
-msgid "Weekly"
-msgstr "Ogni settimana"
-
-#: ../../include/contact_selectors.php:61
-msgid "Monthly"
-msgstr "Ogni mese"
-
-#: ../../include/contact_selectors.php:76
-msgid "Friendica"
-msgstr "Friendica"
-
-#: ../../include/contact_selectors.php:77
-msgid "OStatus"
-msgstr "OStatus"
-
-#: ../../include/contact_selectors.php:78
-msgid "RSS/Atom"
-msgstr "RSS/Atom"
-
-#: ../../include/contact_selectors.php:79 ../../mod/admin.php:822
-#: ../../mod/admin.php:831 ../../mod/id.php:15 ../../mod/id.php:16
-#: ../../boot.php:1552
-msgid "Email"
-msgstr "Email"
-
-#: ../../include/contact_selectors.php:80
-msgid "Diaspora"
-msgstr "Diaspora"
-
-#: ../../include/contact_selectors.php:81
-msgid "Facebook"
-msgstr "Facebook"
-
-#: ../../include/contact_selectors.php:82
-msgid "Zot!"
-msgstr "Zot!"
-
-#: ../../include/contact_selectors.php:83
-msgid "LinkedIn"
-msgstr "LinkedIn"
-
-#: ../../include/contact_selectors.php:84
-msgid "XMPP/IM"
-msgstr "XMPP/IM"
-
-#: ../../include/contact_selectors.php:85
-msgid "MySpace"
-msgstr "MySpace"
-
-#: ../../include/notify.php:23
-msgid "created a new post"
-msgstr "Ha creato un nuovo post"
-
-#: ../../include/notify.php:24
-#, php-format
-msgid "commented on %s's post"
-msgstr "ha commentato il post di %s"
-
#: ../../include/Import/import_diaspora.php:17
msgid "No username found in import file."
msgstr "Impossibile trovare il nome utente nel file da importare."
@@ -133,478 +36,446 @@ msgstr "Impossibile creare un indirizzo univoco per il canale. L'import è falli
msgid "Import completed."
msgstr "L'importazione è terminata con successo!"
-#: ../../include/group.php:26
-msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "È stato ripristinato un insieme con lo stesso nome che era stato eliminato in precedenza. I permessi già presenti <strong>potrebbero</strong> rimanere validi per i nuovi canali. Se non vuoi che ciò accada, devi creare un altro insieme con un nome diverso."
-
-#: ../../include/group.php:235
-msgid "Default privacy group for new contacts"
-msgstr "Insieme predefinito per i canali che inizi a seguire"
-
-#: ../../include/group.php:254 ../../mod/admin.php:831
-msgid "All Channels"
-msgstr "Tutti i canali"
+#: ../../include/RedDAV/RedBrowser.php:107
+#: ../../include/RedDAV/RedBrowser.php:265
+msgid "parent"
+msgstr "cartella superiore"
-#: ../../include/group.php:276
-msgid "edit"
-msgstr "modifica"
+#: ../../include/RedDAV/RedBrowser.php:131 ../../include/text.php:2561
+msgid "Collection"
+msgstr "Cartella"
-#: ../../include/group.php:298
-msgid "Collections"
-msgstr "Insiemi di canali"
+#: ../../include/RedDAV/RedBrowser.php:134
+msgid "Principal"
+msgstr "Principale"
-#: ../../include/group.php:299
-msgid "Edit collection"
-msgstr "Modifica l'insieme di canali"
+#: ../../include/RedDAV/RedBrowser.php:137
+msgid "Addressbook"
+msgstr "Rubrica"
-#: ../../include/group.php:300
-msgid "Add new collection"
-msgstr "Nuovo insieme"
+#: ../../include/RedDAV/RedBrowser.php:140
+msgid "Calendar"
+msgstr "Calendario"
-#: ../../include/group.php:301
-msgid "Channels not in any collection"
-msgstr "Canali che non sono in un insieme"
+#: ../../include/RedDAV/RedBrowser.php:143
+msgid "Schedule Inbox"
+msgstr "Appuntamenti ricevuti"
-#: ../../include/group.php:303 ../../include/widgets.php:275
-msgid "add"
-msgstr "aggiungi"
+#: ../../include/RedDAV/RedBrowser.php:146
+msgid "Schedule Outbox"
+msgstr "Appuntamenti inviati"
-#: ../../include/account.php:27
-msgid "Not a valid email address"
-msgstr "Email non valida"
+#: ../../include/RedDAV/RedBrowser.php:164 ../../include/apps.php:336
+#: ../../include/apps.php:387 ../../include/conversation.php:1030
+#: ../../mod/photos.php:693 ../../mod/photos.php:1131
+msgid "Unknown"
+msgstr "Sconosciuto"
-#: ../../include/account.php:29
-msgid "Your email domain is not among those allowed on this site"
-msgstr "Il dominio della tua email attualmente non è permesso su questo sito"
+#: ../../include/RedDAV/RedBrowser.php:227
+#, php-format
+msgid "%1$s used"
+msgstr "%1$s occupati"
-#: ../../include/account.php:35
-msgid "Your email address is already registered at this site."
-msgstr "La tua email è già registrata su questo sito."
+#: ../../include/RedDAV/RedBrowser.php:232
+#, php-format
+msgid "%1$s used of %2$s (%3$s&#37;)"
+msgstr "%1$s occupati di %2$s (%3$s&#37;)"
-#: ../../include/account.php:67
-msgid "An invitation is required."
-msgstr "È necessario un invito."
+#: ../../include/RedDAV/RedBrowser.php:251 ../../include/nav.php:98
+#: ../../include/apps.php:135 ../../include/conversation.php:1620
+#: ../../mod/fbrowser.php:114
+msgid "Files"
+msgstr "Archivio file"
-#: ../../include/account.php:71
-msgid "Invitation could not be verified."
-msgstr "L'invito non può essere verificato."
+#: ../../include/RedDAV/RedBrowser.php:253
+msgid "Total"
+msgstr "Totale"
-#: ../../include/account.php:121
-msgid "Please enter the required information."
-msgstr "Inserisci le informazioni richieste."
+#: ../../include/RedDAV/RedBrowser.php:255
+msgid "Shared"
+msgstr "Condiviso"
-#: ../../include/account.php:188
-msgid "Failed to store account information."
-msgstr "Non è stato possibile salvare le informazioni del tuo account."
+#: ../../include/RedDAV/RedBrowser.php:256
+#: ../../include/RedDAV/RedBrowser.php:303 ../../mod/blocks.php:152
+#: ../../mod/layouts.php:175 ../../mod/menu.php:112
+#: ../../mod/new_channel.php:121 ../../mod/webpages.php:180
+msgid "Create"
+msgstr "Crea"
-#: ../../include/account.php:246
-#, php-format
-msgid "Registration confirmation for %s"
-msgstr "Registrazione di %s confermata"
+#: ../../include/RedDAV/RedBrowser.php:257
+#: ../../include/RedDAV/RedBrowser.php:305 ../../mod/photos.php:718
+#: ../../mod/photos.php:1248 ../../mod/profile_photo.php:362
+msgid "Upload"
+msgstr "Carica"
-#: ../../include/account.php:312
-#, php-format
-msgid "Registration request at %s"
-msgstr "Richiesta di registrazione su %s"
+#: ../../include/RedDAV/RedBrowser.php:261 ../../mod/admin.php:994
+#: ../../mod/settings.php:590 ../../mod/settings.php:616
+#: ../../mod/sharedwithme.php:95
+msgid "Name"
+msgstr "Nome"
-#: ../../include/account.php:314 ../../include/account.php:341
-#: ../../include/account.php:401 ../../include/network.php:1632
-msgid "Administrator"
-msgstr "Amministratore"
+#: ../../include/RedDAV/RedBrowser.php:262
+msgid "Type"
+msgstr "Tipo"
-#: ../../include/account.php:336
-msgid "your registration password"
-msgstr "la password di registrazione"
+#: ../../include/RedDAV/RedBrowser.php:263 ../../mod/sharedwithme.php:97
+msgid "Size"
+msgstr "Dimensione"
-#: ../../include/account.php:339 ../../include/account.php:399
-#, php-format
-msgid "Registration details for %s"
-msgstr "Dettagli della registrazione di %s"
+#: ../../include/RedDAV/RedBrowser.php:264 ../../mod/sharedwithme.php:98
+msgid "Last Modified"
+msgstr "Ultima modifica"
-#: ../../include/account.php:408
-msgid "Account approved."
-msgstr "Account approvato."
+#: ../../include/RedDAV/RedBrowser.php:266 ../../include/ItemObject.php:100
+#: ../../include/apps.php:254 ../../include/menu.php:108
+#: ../../include/page_widgets.php:8 ../../include/page_widgets.php:36
+#: ../../mod/blocks.php:153 ../../mod/connections.php:242
+#: ../../mod/connections.php:255 ../../mod/connections.php:274
+#: ../../mod/editblock.php:134 ../../mod/editlayout.php:133
+#: ../../mod/editpost.php:106 ../../mod/editwebpage.php:178
+#: ../../mod/settings.php:650 ../../mod/layouts.php:183 ../../mod/menu.php:106
+#: ../../mod/thing.php:255 ../../mod/webpages.php:181
+msgid "Edit"
+msgstr "Modifica"
-#: ../../include/account.php:447
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registrazione revocata per %s"
+#: ../../include/RedDAV/RedBrowser.php:267 ../../include/ItemObject.php:120
+#: ../../include/apps.php:255 ../../include/conversation.php:671
+#: ../../mod/admin.php:826 ../../mod/admin.php:988 ../../mod/photos.php:1062
+#: ../../mod/blocks.php:155 ../../mod/connedit.php:563
+#: ../../mod/editblock.php:180 ../../mod/editlayout.php:178
+#: ../../mod/editwebpage.php:225 ../../mod/group.php:176
+#: ../../mod/settings.php:651 ../../mod/thing.php:256
+#: ../../mod/webpages.php:183
+msgid "Delete"
+msgstr "Elimina"
-#: ../../include/account.php:492
-msgid "Account verified. Please login."
-msgstr "Registrazione verificata. Adesso puoi effettuare login."
+#: ../../include/RedDAV/RedBrowser.php:302
+msgid "Create new folder"
+msgstr "Crea una nuova cartella"
-#: ../../include/account.php:705 ../../include/account.php:707
-msgid "Click here to upgrade."
-msgstr "Clicca qui per aggiornare."
+#: ../../include/RedDAV/RedBrowser.php:304
+msgid "Upload file"
+msgstr "Carica un file"
-#: ../../include/account.php:713
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Questa operazione supera i limiti del tuo abbonamento."
+#: ../../include/dba/dba_driver.php:141
+#, php-format
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr "Non trovo le informazioni DNS per il database server '%s'"
-#: ../../include/account.php:718
-msgid "This action is not available under your subscription plan."
-msgstr "Questa operazione non è prevista dal tuo abbonamento."
+#: ../../include/photo/photo_driver.php:703 ../../mod/photos.php:92
+#: ../../mod/photos.php:637 ../../mod/profile_photo.php:143
+#: ../../mod/profile_photo.php:302 ../../mod/profile_photo.php:424
+msgid "Profile Photos"
+msgstr "Foto del profilo"
-#: ../../include/datetime.php:48
-msgid "Miscellaneous"
-msgstr "Altro"
+#: ../../include/nav.php:87 ../../include/nav.php:120 ../../boot.php:1550
+msgid "Logout"
+msgstr "Esci"
-#: ../../include/datetime.php:132
-msgid "YYYY-MM-DD or MM-DD"
-msgstr "AAAA-MM-GG oppure MM-GG"
+#: ../../include/nav.php:87 ../../include/nav.php:120
+msgid "End this session"
+msgstr "Chiudi questa sessione"
-#: ../../include/datetime.php:235 ../../mod/events.php:672
-#: ../../mod/appman.php:91 ../../mod/appman.php:92
-msgid "Required"
-msgstr "Obbligatorio"
+#: ../../include/nav.php:90 ../../include/nav.php:151
+msgid "Home"
+msgstr "Bacheca"
-#: ../../include/datetime.php:262 ../../boot.php:2353
-msgid "never"
-msgstr "mai"
+#: ../../include/nav.php:90
+msgid "Your posts and conversations"
+msgstr "I tuoi post e conversazioni"
-#: ../../include/datetime.php:268
-msgid "less than a second ago"
-msgstr "meno di un secondo fa"
+#: ../../include/nav.php:91 ../../include/conversation.php:953
+#: ../../mod/connedit.php:510
+msgid "View Profile"
+msgstr "Profilo"
-#: ../../include/datetime.php:271
-msgid "year"
-msgstr "anno"
+#: ../../include/nav.php:91
+msgid "Your profile page"
+msgstr "Il tuo profilo"
-#: ../../include/datetime.php:271
-msgid "years"
-msgstr "anni"
+#: ../../include/nav.php:93
+msgid "Edit Profiles"
+msgstr "Modifica i profili"
-#: ../../include/datetime.php:272
-msgid "month"
-msgstr "mese"
+#: ../../include/nav.php:93
+msgid "Manage/Edit profiles"
+msgstr "Gestisci/modifica i profili"
-#: ../../include/datetime.php:272
-msgid "months"
-msgstr "mesi"
+#: ../../include/nav.php:95 ../../include/identity.php:979
+msgid "Edit Profile"
+msgstr "Modifica il profilo"
-#: ../../include/datetime.php:273
-msgid "week"
-msgstr "settimana"
+#: ../../include/nav.php:95
+msgid "Edit your profile"
+msgstr "Modifica il profilo"
-#: ../../include/datetime.php:273
-msgid "weeks"
-msgstr "settimane"
+#: ../../include/nav.php:97 ../../include/apps.php:139
+#: ../../include/conversation.php:1611 ../../mod/fbrowser.php:25
+msgid "Photos"
+msgstr "Foto"
-#: ../../include/datetime.php:274
-msgid "day"
-msgstr "giorno"
+#: ../../include/nav.php:97
+msgid "Your photos"
+msgstr "Le tue foto"
-#: ../../include/datetime.php:274
-msgid "days"
-msgstr "giorni"
+#: ../../include/nav.php:98
+msgid "Your files"
+msgstr "I tuoi file"
-#: ../../include/datetime.php:275
-msgid "hour"
-msgstr "ora"
+#: ../../include/nav.php:103 ../../include/apps.php:146
+msgid "Chat"
+msgstr "Area chat"
-#: ../../include/datetime.php:275
-msgid "hours"
-msgstr "ore"
+#: ../../include/nav.php:103
+msgid "Your chatrooms"
+msgstr "Le tue aree chat"
-#: ../../include/datetime.php:276
-msgid "minute"
-msgstr "minuto"
+#: ../../include/nav.php:109 ../../include/apps.php:129
+#: ../../include/conversation.php:1646
+msgid "Bookmarks"
+msgstr "Segnalibri"
-#: ../../include/datetime.php:276
-msgid "minutes"
-msgstr "minuti"
+#: ../../include/nav.php:109
+msgid "Your bookmarks"
+msgstr "I tuoi segnalibri"
-#: ../../include/datetime.php:277
-msgid "second"
-msgstr "secondo"
+#: ../../include/nav.php:113 ../../include/apps.php:136
+#: ../../include/conversation.php:1656 ../../mod/webpages.php:178
+msgid "Webpages"
+msgstr "Pagine web"
-#: ../../include/datetime.php:277
-msgid "seconds"
-msgstr "secondi"
+#: ../../include/nav.php:113
+msgid "Your webpages"
+msgstr "Le tue pagine web"
-#: ../../include/datetime.php:285
-#, php-format
-msgctxt "e.g. 22 hours ago, 1 minute ago"
-msgid "%1$d %2$s ago"
-msgstr "%1$d %2$s fa"
+#: ../../include/nav.php:117 ../../include/apps.php:131 ../../boot.php:1551
+msgid "Login"
+msgstr "Accedi"
-#: ../../include/datetime.php:519
-#, php-format
-msgid "%1$s's birthday"
-msgstr "Compleanno di %1$s"
+#: ../../include/nav.php:117
+msgid "Sign in"
+msgstr "Accedi"
-#: ../../include/datetime.php:520
+#: ../../include/nav.php:134
#, php-format
-msgid "Happy Birthday %1$s"
-msgstr "Buon compleanno %1$s"
-
-#: ../../include/dir_fns.php:126
-msgid "Directory Options"
-msgstr "Opzioni elenco pubblico"
-
-#: ../../include/dir_fns.php:128
-msgid "Safe Mode"
-msgstr "Modalità SafeSearch"
+msgid "%s - click to logout"
+msgstr "%s - clicca per uscire"
-#: ../../include/dir_fns.php:128 ../../include/dir_fns.php:129
-#: ../../include/dir_fns.php:130 ../../mod/api.php:106
-#: ../../mod/photos.php:568 ../../mod/mitem.php:159 ../../mod/mitem.php:160
-#: ../../mod/mitem.php:232 ../../mod/mitem.php:233 ../../mod/menu.php:94
-#: ../../mod/menu.php:151 ../../mod/filestorage.php:151
-#: ../../mod/filestorage.php:159 ../../mod/admin.php:428
-#: ../../mod/settings.php:579 ../../mod/removeme.php:60
-#: ../../mod/connedit.php:647 ../../mod/connedit.php:675
-#: ../../view/theme/redbasic/php/config.php:104
-#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1554
-msgid "No"
-msgstr "No"
+#: ../../include/nav.php:137
+msgid "Remote authentication"
+msgstr "Accedi dal tuo hub"
-#: ../../include/dir_fns.php:128 ../../include/dir_fns.php:129
-#: ../../include/dir_fns.php:130 ../../mod/api.php:105
-#: ../../mod/photos.php:568 ../../mod/mitem.php:159 ../../mod/mitem.php:160
-#: ../../mod/mitem.php:232 ../../mod/mitem.php:233 ../../mod/menu.php:94
-#: ../../mod/menu.php:151 ../../mod/filestorage.php:151
-#: ../../mod/filestorage.php:159 ../../mod/admin.php:430
-#: ../../mod/settings.php:579 ../../mod/removeme.php:60
-#: ../../view/theme/redbasic/php/config.php:104
-#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1554
-msgid "Yes"
-msgstr "Si"
+#: ../../include/nav.php:137
+msgid "Click to authenticate to your home hub"
+msgstr "Accedi tramite il tuo hub principale"
-#: ../../include/dir_fns.php:129
-msgid "Public Forums Only"
-msgstr "Solo forum pubblici"
+#: ../../include/nav.php:151
+msgid "Home Page"
+msgstr "Bacheca"
-#: ../../include/dir_fns.php:130
-msgid "This Website Only"
-msgstr "Solo in questo sito"
+#: ../../include/nav.php:155 ../../mod/register.php:224 ../../boot.php:1527
+msgid "Register"
+msgstr "Iscriviti"
-#: ../../include/page_widgets.php:6
-msgid "New Page"
-msgstr "Nuova pagina web"
+#: ../../include/nav.php:155
+msgid "Create an account"
+msgstr "Crea un account"
-#: ../../include/page_widgets.php:39 ../../mod/webpages.php:187
-#: ../../mod/blocks.php:159 ../../mod/layouts.php:188
-msgid "View"
-msgstr "Guarda"
+#: ../../include/nav.php:160 ../../include/apps.php:142 ../../mod/help.php:67
+#: ../../mod/help.php:72 ../../mod/layouts.php:176
+msgid "Help"
+msgstr "Guida"
-#: ../../include/page_widgets.php:40 ../../include/ItemObject.php:677
-#: ../../include/conversation.php:1166 ../../mod/webpages.php:188
-#: ../../mod/events.php:690 ../../mod/editpost.php:143
-#: ../../mod/photos.php:982 ../../mod/editwebpage.php:214
-#: ../../mod/editblock.php:170
-msgid "Preview"
-msgstr "Anteprima"
+#: ../../include/nav.php:160
+msgid "Help and documentation"
+msgstr "Guida e documentazione"
-#: ../../include/page_widgets.php:41 ../../mod/webpages.php:189
-msgid "Actions"
-msgstr "Azioni"
+#: ../../include/nav.php:163 ../../include/widgets.php:91
+#: ../../mod/apps.php:36
+msgid "Apps"
+msgstr "Apps"
-#: ../../include/page_widgets.php:42 ../../mod/webpages.php:190
-msgid "Page Link"
-msgstr "Link alla pagina"
+#: ../../include/nav.php:163
+msgid "Applications, utilities, links, games"
+msgstr "Applicazioni, utilità, link, giochi"
-#: ../../include/page_widgets.php:43
-msgid "Title"
-msgstr "Titolo"
+#: ../../include/nav.php:165 ../../include/text.php:914
+#: ../../include/text.php:926 ../../include/apps.php:147
+#: ../../mod/search.php:38
+msgid "Search"
+msgstr "Cerca"
-#: ../../include/page_widgets.php:44 ../../mod/webpages.php:192
-#: ../../mod/blocks.php:150 ../../mod/menu.php:108 ../../mod/layouts.php:181
-msgid "Created"
-msgstr "Creato"
+#: ../../include/nav.php:165
+msgid "Search site content"
+msgstr "Cerca nel sito"
-#: ../../include/page_widgets.php:45 ../../mod/webpages.php:193
-#: ../../mod/blocks.php:151 ../../mod/menu.php:109 ../../mod/layouts.php:182
-msgid "Edited"
-msgstr "Modificato"
+#: ../../include/nav.php:168 ../../include/apps.php:141
+msgid "Directory"
+msgstr "Elenco pubblico"
-#: ../../include/api.php:1267
-msgid "Public Timeline"
-msgstr "Diario pubblico"
+#: ../../include/nav.php:168
+msgid "Channel Directory"
+msgstr "Elenco pubblico canali"
-#: ../../include/comanche.php:34 ../../mod/admin.php:390
-#: ../../view/theme/apw/php/config.php:185
-msgid "Default"
-msgstr "Predefinito"
+#: ../../include/nav.php:180 ../../include/apps.php:133
+msgid "Matrix"
+msgstr "RedMatrix"
-#: ../../include/js_strings.php:5
-msgid "Delete this item?"
-msgstr "Eliminare questo elemento?"
+#: ../../include/nav.php:180
+msgid "Your matrix"
+msgstr "La tua rete"
-#: ../../include/js_strings.php:6 ../../include/ItemObject.php:667
-#: ../../mod/photos.php:980 ../../mod/photos.php:1098
-msgid "Comment"
-msgstr "Commento"
+#: ../../include/nav.php:181
+msgid "Mark all matrix notifications seen"
+msgstr "Segna come lette le notifiche della tua rete"
-#: ../../include/js_strings.php:7 ../../include/ItemObject.php:384
-msgid "[+] show all"
-msgstr "[+] mostra tutto"
+#: ../../include/nav.php:183 ../../include/apps.php:137
+msgid "Channel Home"
+msgstr "Bacheca del canale"
-#: ../../include/js_strings.php:8
-msgid "[-] show less"
-msgstr "[-] riduci"
+#: ../../include/nav.php:183
+msgid "Channel home"
+msgstr "Bacheca del canale"
-#: ../../include/js_strings.php:9
-msgid "[+] expand"
-msgstr "[+] mostra tutto"
+#: ../../include/nav.php:184
+msgid "Mark all channel notifications seen"
+msgstr "Segna come lette le notifiche del canale"
-#: ../../include/js_strings.php:10
-msgid "[-] collapse"
-msgstr "[-] riduci"
+#: ../../include/nav.php:187 ../../mod/connections.php:267
+msgid "Connections"
+msgstr "Contatti"
-#: ../../include/js_strings.php:11
-msgid "Password too short"
-msgstr "Password troppo corta"
+#: ../../include/nav.php:190
+msgid "Notices"
+msgstr "Avvisi"
-#: ../../include/js_strings.php:12
-msgid "Passwords do not match"
-msgstr "Le password non corrispondono"
+#: ../../include/nav.php:190
+msgid "Notifications"
+msgstr "Notifiche"
-#: ../../include/js_strings.php:13 ../../mod/photos.php:40
-msgid "everybody"
-msgstr "tutti"
+#: ../../include/nav.php:191
+msgid "See all notifications"
+msgstr "Vedi tutte le notifiche"
-#: ../../include/js_strings.php:14
-msgid "Secret Passphrase"
-msgstr "Chiave segreta"
+#: ../../include/nav.php:192 ../../mod/notifications.php:99
+msgid "Mark all system notifications seen"
+msgstr "Segna come lette le notifiche di sistema"
-#: ../../include/js_strings.php:15
-msgid "Passphrase hint"
-msgstr "Suggerimento per la chiave segreta"
+#: ../../include/nav.php:194 ../../include/apps.php:143
+msgid "Mail"
+msgstr "Messaggi"
-#: ../../include/js_strings.php:16
-msgid "Notice: Permissions have changed but have not yet been submitted."
-msgstr "Nota: i permessi sono stati modificati ma non ancora salvati."
+#: ../../include/nav.php:194
+msgid "Private mail"
+msgstr "Messaggi privati"
-#: ../../include/js_strings.php:17
-msgid "close all"
-msgstr "chiudi tutto"
+#: ../../include/nav.php:195
+msgid "See all private messages"
+msgstr "Guarda tutti i messaggi privati"
-#: ../../include/js_strings.php:18
-msgid "Nothing new here"
-msgstr "Niente di nuovo qui"
+#: ../../include/nav.php:196
+msgid "Mark all private messages seen"
+msgstr "Segna come letti tutti i messaggi privati"
-#: ../../include/js_strings.php:19
-msgid "Rate This Channel (this is public)"
-msgstr "Valuta questo canale (visibile a tutti)"
+#: ../../include/nav.php:197
+msgid "Inbox"
+msgstr "In arrivo"
-#: ../../include/js_strings.php:20 ../../mod/rate.php:156
-#: ../../mod/connedit.php:683
-msgid "Rating"
-msgstr "Valutazioni"
+#: ../../include/nav.php:198
+msgid "Outbox"
+msgstr "Inviati"
-#: ../../include/js_strings.php:21
-msgid "Describe (optional)"
-msgstr "Descrizione (facoltativa)"
+#: ../../include/nav.php:199 ../../include/widgets.php:577
+msgid "New Message"
+msgstr "Nuovo messaggio"
-#: ../../include/js_strings.php:22 ../../include/ItemObject.php:668
-#: ../../mod/xchan.php:11 ../../mod/connect.php:93 ../../mod/thing.php:303
-#: ../../mod/thing.php:346 ../../mod/events.php:511 ../../mod/events.php:693
-#: ../../mod/group.php:81 ../../mod/photos.php:577 ../../mod/photos.php:654
-#: ../../mod/photos.php:941 ../../mod/photos.php:981 ../../mod/photos.php:1099
-#: ../../mod/pdledit.php:58 ../../mod/import.php:592 ../../mod/chat.php:177
-#: ../../mod/chat.php:211 ../../mod/mitem.php:235 ../../mod/rate.php:167
-#: ../../mod/invite.php:142 ../../mod/locs.php:105 ../../mod/sources.php:104
-#: ../../mod/sources.php:138 ../../mod/filestorage.php:156
-#: ../../mod/fsuggest.php:108 ../../mod/poke.php:166
-#: ../../mod/profiles.php:667 ../../mod/setup.php:327 ../../mod/setup.php:367
-#: ../../mod/admin.php:453 ../../mod/admin.php:819 ../../mod/admin.php:986
-#: ../../mod/admin.php:1118 ../../mod/admin.php:1312 ../../mod/admin.php:1397
-#: ../../mod/settings.php:588 ../../mod/settings.php:692
-#: ../../mod/settings.php:718 ../../mod/settings.php:746
-#: ../../mod/settings.php:769 ../../mod/settings.php:854
-#: ../../mod/settings.php:1050 ../../mod/mood.php:134
-#: ../../mod/connedit.php:704 ../../mod/mail.php:355 ../../mod/appman.php:99
-#: ../../mod/pconfig.php:108 ../../mod/poll.php:68
-#: ../../mod/bulksetclose.php:24 ../../view/theme/apw/php/config.php:256
-#: ../../view/theme/redbasic/php/config.php:99
-msgid "Submit"
-msgstr "Salva"
+#: ../../include/nav.php:202 ../../include/apps.php:140
+#: ../../mod/events.php:503
+msgid "Events"
+msgstr "Eventi"
-#: ../../include/js_strings.php:23
-msgid "Please enter a link URL"
-msgstr "Inserisci l'URL di un link"
+#: ../../include/nav.php:202
+msgid "Event Calendar"
+msgstr "Calendario"
-#: ../../include/js_strings.php:24
-msgid "Unsaved changes. Are you sure you wish to leave this page?"
-msgstr "Non hai salvato i cambiamenti. Vuoi davvero lasciare questa pagina?"
+#: ../../include/nav.php:203
+msgid "See all events"
+msgstr "Guarda tutti gli eventi"
-#: ../../include/js_strings.php:26
-msgid "timeago.prefixAgo"
-msgstr "timeago.prefixAgo"
+#: ../../include/nav.php:204
+msgid "Mark all events seen"
+msgstr "Marca come letti tutti gli eventi"
-#: ../../include/js_strings.php:27
-msgid "timeago.prefixFromNow"
-msgstr "timeago.prefixFromNow"
+#: ../../include/nav.php:206 ../../include/apps.php:132
+#: ../../mod/manage.php:166
+msgid "Channel Manager"
+msgstr "Gestione canali"
-#: ../../include/js_strings.php:28
-msgid "ago"
-msgstr "fa"
+#: ../../include/nav.php:206
+msgid "Manage Your Channels"
+msgstr "Gestisci i tuoi canali"
-#: ../../include/js_strings.php:29
-msgid "from now"
-msgstr "da adesso"
+#: ../../include/nav.php:208 ../../include/widgets.php:556
+#: ../../include/apps.php:134 ../../mod/admin.php:1079
+#: ../../mod/admin.php:1279
+msgid "Settings"
+msgstr "Impostazioni"
-#: ../../include/js_strings.php:30
-msgid "less than a minute"
-msgstr "meno di un minuto"
+#: ../../include/nav.php:208
+msgid "Account/Channel Settings"
+msgstr "Impostazioni dell'account e del canale"
-#: ../../include/js_strings.php:31
-msgid "about a minute"
-msgstr "circa un minuto"
+#: ../../include/nav.php:216 ../../mod/admin.php:120
+msgid "Admin"
+msgstr "Amministrazione"
-#: ../../include/js_strings.php:32
-#, php-format
-msgid "%d minutes"
-msgstr "%d minuti"
+#: ../../include/nav.php:216
+msgid "Site Setup and Configuration"
+msgstr "Installazione e configurazione del sito"
-#: ../../include/js_strings.php:33
-msgid "about an hour"
-msgstr "circa un’ora"
+#: ../../include/nav.php:247 ../../include/conversation.php:861
+msgid "Loading..."
+msgstr "Caricamento in corso..."
-#: ../../include/js_strings.php:34
-#, php-format
-msgid "about %d hours"
-msgstr "circa %d ore"
+#: ../../include/nav.php:252
+msgid "@name, #tag, content"
+msgstr "@nome, #tag, testo"
-#: ../../include/js_strings.php:35
-msgid "a day"
-msgstr "un giorno"
+#: ../../include/nav.php:253
+msgid "Please wait..."
+msgstr "Attendere..."
-#: ../../include/js_strings.php:36
-#, php-format
-msgid "%d days"
-msgstr "%d giorni"
+#: ../../include/network.php:650
+msgid "view full size"
+msgstr "guarda nelle dimensioni reali"
-#: ../../include/js_strings.php:37
-msgid "about a month"
-msgstr "circa un mese"
+#: ../../include/network.php:1600 ../../include/enotify.php:58
+msgid "$Projectname Notification"
+msgstr "Notifica $Projectname"
-#: ../../include/js_strings.php:38
-#, php-format
-msgid "%d months"
-msgstr "%d mesi"
+#: ../../include/network.php:1601 ../../include/diaspora.php:2526
+#: ../../include/diaspora.php:2537 ../../include/enotify.php:59
+#: ../../mod/p.php:46
+msgid "$projectname"
+msgstr "$projectname"
-#: ../../include/js_strings.php:39
-msgid "about a year"
-msgstr "circa un anno"
+#: ../../include/network.php:1603 ../../include/enotify.php:61
+msgid "Thank You,"
+msgstr "Grazie,"
-#: ../../include/js_strings.php:40
+#: ../../include/network.php:1605 ../../include/enotify.php:63
#, php-format
-msgid "%d years"
-msgstr "%d anni"
+msgid "%s Administrator"
+msgstr "L'amministratore di %s"
-#: ../../include/js_strings.php:41
-msgid " "
-msgstr " "
+#: ../../include/network.php:1647 ../../include/account.php:314
+#: ../../include/account.php:341 ../../include/account.php:401
+msgid "Administrator"
+msgstr "Amministratore"
-#: ../../include/js_strings.php:42
-msgid "timeago.numbers"
-msgstr "timeago.numbers"
+#: ../../include/network.php:1661
+msgid "No Subject"
+msgstr "Nessun titolo"
#: ../../include/text.php:391
msgid "prev"
@@ -645,16 +516,10 @@ msgstr[1] "%d contatti"
msgid "View Connections"
msgstr "Elenco contatti"
-#: ../../include/text.php:914 ../../include/text.php:926
-#: ../../include/nav.php:165 ../../include/apps.php:147
-#: ../../mod/search.php:38
-msgid "Search"
-msgstr "Cerca"
-
#: ../../include/text.php:915 ../../include/text.php:927
-#: ../../include/widgets.php:192 ../../mod/rbmark.php:28
-#: ../../mod/rbmark.php:98 ../../mod/filer.php:50 ../../mod/admin.php:1457
-#: ../../mod/admin.php:1477
+#: ../../include/widgets.php:192 ../../mod/admin.php:1457
+#: ../../mod/admin.php:1477 ../../mod/rbmark.php:28 ../../mod/rbmark.php:98
+#: ../../mod/filer.php:50
msgid "Save"
msgstr "Salva"
@@ -664,7 +529,7 @@ msgstr "poke"
#: ../../include/text.php:990 ../../include/conversation.php:243
msgid "poked"
-msgstr "ha ricevuto un poke"
+msgstr "ha mandato un poke"
#: ../../include/text.php:991
msgid "ping"
@@ -883,486 +748,86 @@ msgstr "rimuovi la categoria"
msgid "remove from file"
msgstr "rimuovi dal file"
-#: ../../include/text.php:1494 ../../include/text.php:1505
+#: ../../include/text.php:1506 ../../include/text.php:1517
msgid "Click to open/close"
msgstr "Clicca per aprire/chiudere"
-#: ../../include/text.php:1661 ../../mod/events.php:474
+#: ../../include/text.php:1673 ../../mod/events.php:474
msgid "Link to Source"
msgstr "Link al sito d'origine"
-#: ../../include/text.php:1682 ../../include/text.php:1753
+#: ../../include/text.php:1694 ../../include/text.php:1765
msgid "default"
msgstr "predefinito"
-#: ../../include/text.php:1690
+#: ../../include/text.php:1702
msgid "Page layout"
msgstr "Layout della pagina"
-#: ../../include/text.php:1690
+#: ../../include/text.php:1702
msgid "You can create your own with the layouts tool"
msgstr "Con la configurazione del layout puoi crearne uno tuo"
-#: ../../include/text.php:1731
+#: ../../include/text.php:1743
msgid "Page content type"
msgstr "Tipo di contenuto della pagina"
-#: ../../include/text.php:1765
+#: ../../include/text.php:1777
msgid "Select an alternate language"
msgstr "Seleziona una lingua diversa"
-#: ../../include/text.php:1884 ../../include/diaspora.php:2119
-#: ../../include/conversation.php:120 ../../mod/like.php:349
+#: ../../include/text.php:1896 ../../include/conversation.php:120
+#: ../../include/diaspora.php:2123 ../../mod/like.php:349
#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
#: ../../mod/tagger.php:43
msgid "photo"
msgstr "la foto"
-#: ../../include/text.php:1887 ../../include/conversation.php:123
+#: ../../include/text.php:1899 ../../include/conversation.php:123
#: ../../mod/like.php:351 ../../mod/tagger.php:47
msgid "event"
msgstr "l'evento"
-#: ../../include/text.php:1890 ../../include/diaspora.php:2119
-#: ../../include/conversation.php:148 ../../mod/like.php:349
+#: ../../include/text.php:1902 ../../include/conversation.php:148
+#: ../../include/diaspora.php:2123 ../../mod/like.php:349
#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
msgid "status"
msgstr "il messaggio di stato"
-#: ../../include/text.php:1892 ../../include/conversation.php:150
+#: ../../include/text.php:1904 ../../include/conversation.php:150
#: ../../mod/tagger.php:53
msgid "comment"
msgstr "il commento"
-#: ../../include/text.php:1897
+#: ../../include/text.php:1909
msgid "activity"
msgstr "l'attività"
-#: ../../include/text.php:2192
+#: ../../include/text.php:2204
msgid "Design Tools"
msgstr "Strumenti di design"
-#: ../../include/text.php:2195 ../../mod/blocks.php:147
+#: ../../include/text.php:2207 ../../mod/blocks.php:147
msgid "Blocks"
msgstr "Riquadri"
-#: ../../include/text.php:2196 ../../mod/menu.php:101
+#: ../../include/text.php:2208 ../../mod/menu.php:101
msgid "Menus"
msgstr "Menù"
-#: ../../include/text.php:2197 ../../mod/layouts.php:174
+#: ../../include/text.php:2209 ../../mod/layouts.php:174
msgid "Layouts"
msgstr "Layout"
-#: ../../include/text.php:2198
+#: ../../include/text.php:2210
msgid "Pages"
msgstr "Pagine"
-#: ../../include/text.php:2549 ../../include/RedDAV/RedBrowser.php:131
-msgid "Collection"
-msgstr "Cartella"
-
-#: ../../include/RedDAV/RedBrowser.php:107
-#: ../../include/RedDAV/RedBrowser.php:265
-msgid "parent"
-msgstr "cartella superiore"
-
-#: ../../include/RedDAV/RedBrowser.php:134
-msgid "Principal"
-msgstr "Principale"
-
-#: ../../include/RedDAV/RedBrowser.php:137
-msgid "Addressbook"
-msgstr "Rubrica"
-
-#: ../../include/RedDAV/RedBrowser.php:140
-msgid "Calendar"
-msgstr "Calendario"
-
-#: ../../include/RedDAV/RedBrowser.php:143
-msgid "Schedule Inbox"
-msgstr "Appuntamenti ricevuti"
-
-#: ../../include/RedDAV/RedBrowser.php:146
-msgid "Schedule Outbox"
-msgstr "Appuntamenti inviati"
-
-#: ../../include/RedDAV/RedBrowser.php:164 ../../include/conversation.php:1030
-#: ../../include/apps.php:336 ../../include/apps.php:387
-#: ../../mod/photos.php:693 ../../mod/photos.php:1131
-msgid "Unknown"
-msgstr "Sconosciuto"
-
-#: ../../include/RedDAV/RedBrowser.php:227
-#, php-format
-msgid "%1$s used"
-msgstr "%1$s occupati"
-
-#: ../../include/RedDAV/RedBrowser.php:232
-#, php-format
-msgid "%1$s used of %2$s (%3$s&#37;)"
-msgstr "%1$s occupati di %2$s (%3$s&#37;)"
-
-#: ../../include/RedDAV/RedBrowser.php:251 ../../include/nav.php:98
-#: ../../include/conversation.php:1620 ../../include/apps.php:135
-#: ../../mod/fbrowser.php:114
-msgid "Files"
-msgstr "Archivio file"
-
-#: ../../include/RedDAV/RedBrowser.php:253
-msgid "Total"
-msgstr "Totale"
-
-#: ../../include/RedDAV/RedBrowser.php:255
-msgid "Shared"
-msgstr "Condiviso"
-
-#: ../../include/RedDAV/RedBrowser.php:256
-#: ../../include/RedDAV/RedBrowser.php:303 ../../mod/webpages.php:180
-#: ../../mod/blocks.php:152 ../../mod/menu.php:112
-#: ../../mod/new_channel.php:121 ../../mod/layouts.php:175
-msgid "Create"
-msgstr "Crea"
-
-#: ../../include/RedDAV/RedBrowser.php:257
-#: ../../include/RedDAV/RedBrowser.php:305 ../../mod/profile_photo.php:362
-#: ../../mod/photos.php:718 ../../mod/photos.php:1248
-msgid "Upload"
-msgstr "Carica"
-
-#: ../../include/RedDAV/RedBrowser.php:261 ../../mod/admin.php:994
-#: ../../mod/settings.php:590 ../../mod/settings.php:616
-#: ../../mod/sharedwithme.php:95
-msgid "Name"
-msgstr "Nome"
-
-#: ../../include/RedDAV/RedBrowser.php:262
-msgid "Type"
-msgstr "Tipo"
-
-#: ../../include/RedDAV/RedBrowser.php:263 ../../mod/sharedwithme.php:97
-msgid "Size"
-msgstr "Dimensione"
-
-#: ../../include/RedDAV/RedBrowser.php:264 ../../mod/sharedwithme.php:98
-msgid "Last Modified"
-msgstr "Ultima modifica"
-
-#: ../../include/RedDAV/RedBrowser.php:267 ../../include/ItemObject.php:120
-#: ../../include/conversation.php:671 ../../include/apps.php:255
-#: ../../mod/webpages.php:183 ../../mod/thing.php:256 ../../mod/group.php:176
-#: ../../mod/blocks.php:155 ../../mod/photos.php:1062
-#: ../../mod/editlayout.php:178 ../../mod/editwebpage.php:225
-#: ../../mod/editblock.php:180 ../../mod/admin.php:826 ../../mod/admin.php:988
-#: ../../mod/settings.php:651 ../../mod/connedit.php:563
-msgid "Delete"
-msgstr "Elimina"
-
-#: ../../include/RedDAV/RedBrowser.php:302
-msgid "Create new folder"
-msgstr "Crea una nuova cartella"
-
-#: ../../include/RedDAV/RedBrowser.php:304
-msgid "Upload file"
-msgstr "Carica un file"
-
-#: ../../include/bookmarks.php:35
-#, php-format
-msgid "%1$s's bookmarks"
-msgstr "I segnalibri di %1$s"
-
-#: ../../include/network.php:635
-msgid "view full size"
-msgstr "guarda nelle dimensioni reali"
-
-#: ../../include/network.php:1585 ../../include/enotify.php:58
-msgid "$Projectname Notification"
-msgstr "Notifica $Projectname"
-
-#: ../../include/network.php:1586 ../../include/enotify.php:59
-#: ../../include/diaspora.php:2522 ../../include/diaspora.php:2533
-#: ../../mod/p.php:46
-msgid "$projectname"
-msgstr "$projectname"
-
-#: ../../include/network.php:1588 ../../include/enotify.php:61
-msgid "Thank You,"
-msgstr "Grazie,"
-
-#: ../../include/network.php:1590 ../../include/enotify.php:63
-#, php-format
-msgid "%s Administrator"
-msgstr "L'amministratore di %s"
-
-#: ../../include/network.php:1646
-msgid "No Subject"
-msgstr "Nessun titolo"
-
-#: ../../include/features.php:38
-msgid "General Features"
-msgstr "Funzionalità di base"
-
-#: ../../include/features.php:40
-msgid "Content Expiration"
-msgstr "Scadenza"
-
-#: ../../include/features.php:40
-msgid "Remove posts/comments and/or private messages at a future time"
-msgstr "Elimina i post, i commenti o i messaggi privati dopo un lasso di tempo"
-
-#: ../../include/features.php:41
-msgid "Multiple Profiles"
-msgstr "Profili multipli"
-
-#: ../../include/features.php:41
-msgid "Ability to create multiple profiles"
-msgstr "Abilitazione a creare profili multipli"
-
-#: ../../include/features.php:42
-msgid "Advanced Profiles"
-msgstr "Profili avanzati"
-
-#: ../../include/features.php:42
-msgid "Additional profile sections and selections"
-msgstr "Informazioni aggiuntive del profilo"
-
-#: ../../include/features.php:43
-msgid "Profile Import/Export"
-msgstr "Importa/esporta il profilo"
-
-#: ../../include/features.php:43
-msgid "Save and load profile details across sites/channels"
-msgstr "Salva o ripristina le informazioni del profilo su canali o siti diversi"
-
-#: ../../include/features.php:44
-msgid "Web Pages"
-msgstr "Pagine web"
-
-#: ../../include/features.php:44
-msgid "Provide managed web pages on your channel"
-msgstr "Attiva la creazione di pagine web sul tuo canale"
-
-#: ../../include/features.php:45
-msgid "Private Notes"
-msgstr "Note private"
-
-#: ../../include/features.php:45
-msgid "Enables a tool to store notes and reminders"
-msgstr "Abilita il riquadro per scrivere annotazioni"
-
-#: ../../include/features.php:46
-msgid "Navigation Channel Select"
-msgstr "Scegli il canale attivo dal menu"
-
-#: ../../include/features.php:46
-msgid "Change channels directly from within the navigation dropdown menu"
-msgstr "Scegli il canale attivo direttamente dal menu di navigazione"
-
-#: ../../include/features.php:47
-msgid "Photo Location"
-msgstr "Posizione geografica"
-
-#: ../../include/features.php:47
-msgid "If location data is available on uploaded photos, link this to a map."
-msgstr "Collega la foto a una mappa quando contiene indicazioni geografiche."
-
-#: ../../include/features.php:49
-msgid "Expert Mode"
-msgstr "Modalità esperto"
-
-#: ../../include/features.php:49
-msgid "Enable Expert Mode to provide advanced configuration options"
-msgstr "Abilita la modalità esperto per vedere le opzioni di configurazione avanzate"
-
-#: ../../include/features.php:50
-msgid "Premium Channel"
-msgstr "Canale premium"
-
-#: ../../include/features.php:50
-msgid ""
-"Allows you to set restrictions and terms on those that connect with your "
-"channel"
-msgstr "Ti permette di impostare delle restrizioni e dei termini d'uso a chi segue il canale"
-
-#: ../../include/features.php:55
-msgid "Post Composition Features"
-msgstr "Modalità di scrittura post"
-
-#: ../../include/features.php:57
-msgid "Use Markdown"
-msgstr "Usa il markdown"
-
-#: ../../include/features.php:57
-msgid "Allow use of \"Markdown\" to format posts"
-msgstr "Consenti l'uso del markdown per formattare i post"
-
-#: ../../include/features.php:58
-msgid "Large Photos"
-msgstr "Foto grandi"
-
-#: ../../include/features.php:58
-msgid ""
-"Include large (640px) photo thumbnails in posts. If not enabled, use small "
-"(320px) photo thumbnails"
-msgstr "Includi anteprime grandi delle foto nei post (640px). Se disabilitato le anteprime saranno piccole (320px)"
-
-#: ../../include/features.php:59 ../../include/widgets.php:548
-#: ../../mod/sources.php:88
-msgid "Channel Sources"
-msgstr "Sorgenti del canale"
-
-#: ../../include/features.php:59
-msgid "Automatically import channel content from other channels or feeds"
-msgstr "Importa automaticamente il contenuto del canale da altri canali o feed"
-
-#: ../../include/features.php:60
-msgid "Even More Encryption"
-msgstr "Crittografia addizionale"
-
-#: ../../include/features.php:60
-msgid ""
-"Allow optional encryption of content end-to-end with a shared secret key"
-msgstr "Rendi possibile la crittografia tra mittente e destinatario che condividono una chiave segreta"
-
-#: ../../include/features.php:61
-msgid "Enable voting tools"
-msgstr "Permetti i post con votazione"
-
-#: ../../include/features.php:61
-msgid "Provide a class of post which others can vote on"
-msgstr "Rende possibile la creazione di post in cui sarà possibile votare"
-
-#: ../../include/features.php:67
-msgid "Network and Stream Filtering"
-msgstr "Filtraggio dei contenuti"
-
-#: ../../include/features.php:68
-msgid "Search by Date"
-msgstr "Ricerca per data"
-
-#: ../../include/features.php:68
-msgid "Ability to select posts by date ranges"
-msgstr "Per selezionare i post in un intervallo tra date"
-
-#: ../../include/features.php:69
-msgid "Collections Filter"
-msgstr "Filtra per insiemi di canali"
-
-#: ../../include/features.php:69
-msgid "Enable widget to display Network posts only from selected collections"
-msgstr "Mostra il riquadro per filtrare i post di certi insiemi di canali"
-
-#: ../../include/features.php:70 ../../include/widgets.php:274
-msgid "Saved Searches"
-msgstr "Ricerche salvate"
-
-#: ../../include/features.php:70
-msgid "Save search terms for re-use"
-msgstr "Salva i termini delle ricerche per poterle ripetere"
-
-#: ../../include/features.php:71
-msgid "Network Personal Tab"
-msgstr "Attività personale"
-
-#: ../../include/features.php:71
-msgid "Enable tab to display only Network posts that you've interacted on"
-msgstr "Abilita il link per mostrare solamente i contenuti con cui hai interagito"
-
-#: ../../include/features.php:72
-msgid "Network New Tab"
-msgstr "Contenuti nuovi"
-
-#: ../../include/features.php:72
-msgid "Enable tab to display all new Network activity"
-msgstr "Abilita il link per visualizzare solo i nuovi contenuti"
-
-#: ../../include/features.php:73
-msgid "Affinity Tool"
-msgstr "Filtro per affinità"
-
-#: ../../include/features.php:73
-msgid "Filter stream activity by depth of relationships"
-msgstr "Permette di selezionare i contenuti in base al livello di amicizia"
-
-#: ../../include/features.php:74
-msgid "Connection Filtering"
-msgstr "Filtro sui contatti"
-
-#: ../../include/features.php:74
-msgid "Filter incoming posts from connections based on keywords/content"
-msgstr "Filtra con delle parole chiave i post che ricevi"
-
-#: ../../include/features.php:75
-msgid "Suggest Channels"
-msgstr "Suggerisci canali"
-
-#: ../../include/features.php:75
-msgid "Show channel suggestions"
-msgstr "Mostra alcuni canali che potrebbero interessarti"
-
-#: ../../include/features.php:80
-msgid "Post/Comment Tools"
-msgstr "Gestione post e commenti"
-
-#: ../../include/features.php:81
-msgid "Tagging"
-msgstr "Tag"
-
-#: ../../include/features.php:81
-msgid "Ability to tag existing posts"
-msgstr "Permetti l'aggiunta di tag su post già esistenti"
-
-#: ../../include/features.php:82
-msgid "Post Categories"
-msgstr "Categorie dei post"
-
-#: ../../include/features.php:82
-msgid "Add categories to your posts"
-msgstr "Abilita le categorie per i tuoi post"
-
-#: ../../include/features.php:83 ../../include/widgets.php:304
-#: ../../include/contact_widgets.php:57
-msgid "Saved Folders"
-msgstr "Cartelle salvate"
-
-#: ../../include/features.php:83
-msgid "Ability to file posts under folders"
-msgstr "Abilita la raccolta dei tuoi articoli in post"
-
-#: ../../include/features.php:84
-msgid "Dislike Posts"
-msgstr "Non mi piace"
-
-#: ../../include/features.php:84
-msgid "Ability to dislike posts/comments"
-msgstr "Abilità la funzionalità \"non mi piace\" per i tuoi post"
-
-#: ../../include/features.php:85
-msgid "Star Posts"
-msgstr "Post con stella"
-
-#: ../../include/features.php:85
-msgid "Ability to mark special posts with a star indicator"
-msgstr "Mostra la stella per segnare i post preferiti"
-
-#: ../../include/features.php:86
-msgid "Tag Cloud"
-msgstr "Nuvola di tag"
-
-#: ../../include/features.php:86
-msgid "Provide a personal tag cloud on your channel page"
-msgstr "Mostra la nuvola dei tag che usi di più sulla pagina del tuo canale"
-
-#: ../../include/widgets.php:35 ../../include/taxonomy.php:264
-#: ../../include/contact_widgets.php:92
+#: ../../include/widgets.php:35 ../../include/contact_widgets.php:92
+#: ../../include/taxonomy.php:264
msgid "Categories"
msgstr "Categorie"
-#: ../../include/widgets.php:91 ../../include/nav.php:163
-#: ../../mod/apps.php:36
-msgid "Apps"
-msgstr "Apps"
-
#: ../../include/widgets.php:92
msgid "System"
msgstr "Sistema"
@@ -1381,8 +846,8 @@ msgstr "Modifica una app personale"
#: ../../include/widgets.php:136 ../../include/widgets.php:175
#: ../../include/Contact.php:107 ../../include/conversation.php:956
-#: ../../include/identity.php:956 ../../mod/directory.php:316
-#: ../../mod/match.php:64 ../../mod/suggest.php:52
+#: ../../include/identity.php:956 ../../mod/match.php:64
+#: ../../mod/directory.php:316 ../../mod/suggest.php:52
msgid "Connect"
msgstr "Aggiungi"
@@ -1423,6 +888,19 @@ msgstr "Note"
msgid "Remove term"
msgstr "Rimuovi termine"
+#: ../../include/widgets.php:274 ../../include/features.php:70
+msgid "Saved Searches"
+msgstr "Ricerche salvate"
+
+#: ../../include/widgets.php:275 ../../include/group.php:303
+msgid "add"
+msgstr "aggiungi"
+
+#: ../../include/widgets.php:304 ../../include/contact_widgets.php:57
+#: ../../include/features.php:83
+msgid "Saved Folders"
+msgstr "Cartelle salvate"
+
#: ../../include/widgets.php:307 ../../include/contact_widgets.php:60
#: ../../include/contact_widgets.php:95
msgid "Everything"
@@ -1442,10 +920,10 @@ msgstr "Famiglia"
#: ../../include/widgets.php:431 ../../include/identity.php:394
#: ../../include/identity.php:395 ../../include/identity.php:402
-#: ../../include/profile_selectors.php:80 ../../mod/settings.php:345
-#: ../../mod/settings.php:349 ../../mod/settings.php:350
-#: ../../mod/settings.php:353 ../../mod/settings.php:364
-#: ../../mod/connedit.php:585
+#: ../../include/profile_selectors.php:80 ../../mod/connedit.php:585
+#: ../../mod/settings.php:345 ../../mod/settings.php:349
+#: ../../mod/settings.php:350 ../../mod/settings.php:353
+#: ../../mod/settings.php:364
msgid "Friends"
msgstr "Amici"
@@ -1498,14 +976,13 @@ msgstr "Permessi predefiniti dei nuovi contatti"
msgid "Premium Channel Settings"
msgstr "Canale premium - impostazioni"
-#: ../../include/widgets.php:556 ../../include/nav.php:208
-#: ../../include/apps.php:134 ../../mod/admin.php:1079
-#: ../../mod/admin.php:1279
-msgid "Settings"
-msgstr "Impostazioni"
+#: ../../include/widgets.php:548 ../../include/features.php:59
+#: ../../mod/sources.php:88
+msgid "Channel Sources"
+msgstr "Sorgenti del canale"
-#: ../../include/widgets.php:569 ../../mod/message.php:31
-#: ../../mod/mail.php:128
+#: ../../include/widgets.php:569 ../../mod/mail.php:128
+#: ../../mod/message.php:31
msgid "Messages"
msgstr "Messaggi"
@@ -1513,10 +990,6 @@ msgstr "Messaggi"
msgid "Check Mail"
msgstr "Controlla i messaggi"
-#: ../../include/widgets.php:577 ../../include/nav.php:199
-msgid "New Message"
-msgstr "Nuovo messaggio"
-
#: ../../include/widgets.php:652
msgid "Chat Rooms"
msgstr "Aree chat attive"
@@ -1545,206 +1018,18 @@ msgstr "Vedi le valutazioni ricevute"
msgid "Public Hubs"
msgstr "Hub pubblici"
-#: ../../include/event.php:22 ../../include/bb2diaspora.php:459
-msgid "l F d, Y \\@ g:i A"
-msgstr "l d F Y \\@ G:i"
-
-#: ../../include/event.php:30 ../../include/bb2diaspora.php:465
-msgid "Starts:"
-msgstr "Inizio:"
-
-#: ../../include/event.php:40 ../../include/bb2diaspora.php:473
-msgid "Finishes:"
-msgstr "Fine:"
-
-#: ../../include/event.php:50 ../../include/bb2diaspora.php:481
-#: ../../include/identity.php:1007 ../../mod/directory.php:302
-#: ../../mod/events.php:684
-msgid "Location:"
-msgstr "Luogo:"
-
-#: ../../include/event.php:549
-msgid "This event has been added to your calendar."
-msgstr "Questo evento è stato aggiunto al tuo calendario"
-
-#: ../../include/enotify.php:96
-#, php-format
-msgid "%s <!item_type!>"
-msgstr "%s <!item_type!>"
-
-#: ../../include/enotify.php:100
-#, php-format
-msgid "[Red:Notify] New mail received at %s"
-msgstr "[RedMatrix] Nuovo messaggio su %s"
-
-#: ../../include/enotify.php:102
-#, php-format
-msgid "%1$s, %2$s sent you a new private message at %3$s."
-msgstr "%1$s, %2$s ti ha mandato un messaggio privato su %3$s."
-
-#: ../../include/enotify.php:103
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s ti ha mandato %2$s."
-
-#: ../../include/enotify.php:103
-msgid "a private message"
-msgstr "un messaggio privato"
-
-#: ../../include/enotify.php:104
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Visita %s per leggere i tuoi messaggi privati e rispondere."
-
-#: ../../include/enotify.php:158
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
-msgstr "%1$s, %2$s ha commentato [zrl=%3$s]%4$s[/zrl]"
-
-#: ../../include/enotify.php:166
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
-msgstr "%1$s, %2$s ha commentato [zrl=%3$s]%5$s di %4$s[/zrl]"
-
-#: ../../include/enotify.php:175
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s ha commentato [zrl=%3$s]%4$s che hai creato[/zrl]"
-
-#: ../../include/enotify.php:186
-#, php-format
-msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[RedMatrix] Nuovo commento di %2$s alla conversazione #%1$d"
-
-#: ../../include/enotify.php:187
-#, php-format
-msgid "%1$s, %2$s commented on an item/conversation you have been following."
-msgstr "%1$s, %2$s ha commentato un elemento che stavi seguendo."
-
-#: ../../include/enotify.php:190 ../../include/enotify.php:205
-#: ../../include/enotify.php:231 ../../include/enotify.php:249
-#: ../../include/enotify.php:263
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Visita %s per leggere o commentare la conversazione."
-
-#: ../../include/enotify.php:196
-#, php-format
-msgid "[Red:Notify] %s posted to your profile wall"
-msgstr "[RedMatrix] %s ha scritto sulla tua bacheca"
-
-#: ../../include/enotify.php:198
-#, php-format
-msgid "%1$s, %2$s posted to your profile wall at %3$s"
-msgstr "%1$s, %2$s ha scritto sulla bacheca del tuo profilo su %3$s"
-
-#: ../../include/enotify.php:200
-#, php-format
-msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
-msgstr "%1$s, %2$s ha scritto sulla [zrl=%3$s]tua bacheca[/zrl]"
-
-#: ../../include/enotify.php:224
-#, php-format
-msgid "[Red:Notify] %s tagged you"
-msgstr "[RedMatrix] %s ti ha taggato"
-
-#: ../../include/enotify.php:225
-#, php-format
-msgid "%1$s, %2$s tagged you at %3$s"
-msgstr "%1$s, %2$s ti ha taggato su %3$s"
-
-#: ../../include/enotify.php:226
-#, php-format
-msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%3$s]ti ha taggato[/zrl]."
-
-#: ../../include/enotify.php:238
-#, php-format
-msgid "[Red:Notify] %1$s poked you"
-msgstr "[RedMatrix] %1$s ti ha mandato un poke"
-
-#: ../../include/enotify.php:239
-#, php-format
-msgid "%1$s, %2$s poked you at %3$s"
-msgstr "%1$s, %2$s ti ha mandato un poke su %3$s"
-
-#: ../../include/enotify.php:240
-#, php-format
-msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%2$s]ti ha mandato un poke[/zrl]."
-
-#: ../../include/enotify.php:256
-#, php-format
-msgid "[Red:Notify] %s tagged your post"
-msgstr "[RedMatrix] %s ha taggato il tuo post"
-
-#: ../../include/enotify.php:257
-#, php-format
-msgid "%1$s, %2$s tagged your post at %3$s"
-msgstr "%1$s, %2$s ha taggato il tuo post su %3$s"
-
-#: ../../include/enotify.php:258
-#, php-format
-msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
-msgstr "%1$s, %2$s ha taggato [zrl=%3$s]il tuo post[/zrl]"
-
-#: ../../include/enotify.php:270
-msgid "[Red:Notify] Introduction received"
-msgstr "[RedMatrix] Hai una richiesta di amicizia"
-
-#: ../../include/enotify.php:271
-#, php-format
-msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
-msgstr "%1$s, hai ricevuto una richiesta di entrare in contatto da '%2$s' su %3$s"
-
-#: ../../include/enotify.php:272
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
-msgstr "%1$s, hai ricevuto una [zrl=%2$s]richiesta di entrare in contatto[/zrl] da %3$s."
-
-#: ../../include/enotify.php:276 ../../include/enotify.php:295
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "Puoi visitare il suo profilo su %s"
-
-#: ../../include/enotify.php:278
-#, php-format
-msgid "Please visit %s to approve or reject the connection request."
-msgstr "Visita %s per approvare o rifiutare la richiesta di entrare in contatto."
-
-#: ../../include/enotify.php:285
-msgid "[Red:Notify] Friend suggestion received"
-msgstr "[RedMatrix] Ti è stato suggerito un amico"
-
-#: ../../include/enotify.php:286
-#, php-format
-msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
-msgstr "%1$s, ti è stato suggerito un amico da '%2$s' su %3$s"
-
-#: ../../include/enotify.php:287
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
-"%4$s."
-msgstr "%1$s, %4$s ti [zrl=%2$s]ha suggerito %3$s[/zrl] come amico."
-
-#: ../../include/enotify.php:293
-msgid "Name:"
-msgstr "Nome:"
+#: ../../include/Contact.php:124
+msgid "New window"
+msgstr "Nuova finestra"
-#: ../../include/enotify.php:294
-msgid "Photo:"
-msgstr "Foto:"
+#: ../../include/Contact.php:125
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Apri l'indirizzo selezionato in una nuova scheda o finestra"
-#: ../../include/enotify.php:297
+#: ../../include/Contact.php:212
#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Visita %s per approvare o rifiutare il suggerimento."
-
-#: ../../include/enotify.php:508
-msgid "[Red:Notify]"
-msgstr "[RedMatrix]"
+msgid "User '%s' deleted"
+msgstr "Utente '%s' eliminato"
#: ../../include/message.php:18
msgid "No recipient provided."
@@ -1762,63 +1047,27 @@ msgstr "Impossibile determinare il mittente."
msgid "Stored post could not be verified."
msgstr "Non è stato possibile verificare il post."
-#: ../../include/diaspora.php:2148 ../../include/conversation.php:164
-#: ../../mod/like.php:397
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "A %1$s piace %3$s di %2$s"
-
-#: ../../include/diaspora.php:2494
-msgid "Please choose"
-msgstr "La tua scelta"
-
-#: ../../include/diaspora.php:2496
-msgid "Agree"
-msgstr "Sono d'accordo"
-
-#: ../../include/diaspora.php:2498
-msgid "Disagree"
-msgstr "Non sono d'accordo"
-
-#: ../../include/diaspora.php:2500
-msgid "Abstain"
-msgstr "Mi astengo"
-
-#: ../../include/follow.php:28
-msgid "Channel is blocked on this site."
-msgstr "Il canale è bloccato per questo sito."
-
-#: ../../include/follow.php:33
-msgid "Channel location missing."
-msgstr "Manca l'indirizzo del canale."
-
-#: ../../include/follow.php:83
-msgid "Response from remote channel was incomplete."
-msgstr "La risposta dal canale non è completa."
-
-#: ../../include/follow.php:100
-msgid "Channel was deleted and no longer exists."
-msgstr "Il canale è stato rimosso e non esiste più."
-
-#: ../../include/follow.php:135 ../../include/follow.php:206
-msgid "Protocol disabled."
-msgstr "Protocollo disabilitato."
+#: ../../include/zot.php:685
+msgid "Invalid data packet"
+msgstr "Dati non validi"
-#: ../../include/follow.php:144
-msgid "Protocol blocked for this channel."
-msgstr "Protocollo bloccato per questo canale."
+#: ../../include/zot.php:701
+msgid "Unable to verify channel signature"
+msgstr "Impossibile verificare la firma elettronica del canale"
-#: ../../include/follow.php:179
-msgid "Channel discovery failed."
-msgstr "La ricerca del canale non ha avuto successo."
+#: ../../include/zot.php:2209
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr "Impossibile verificare la firma elettronica del sito %s"
-#: ../../include/follow.php:195
-msgid "local account not found."
-msgstr "l'account locale non è stato trovato."
+#: ../../include/notify.php:23
+msgid "created a new post"
+msgstr "Ha creato un nuovo post"
-#: ../../include/follow.php:224
-msgid "Cannot connect to yourself."
-msgstr "Non puoi connetterti a te stesso."
+#: ../../include/notify.php:24
+#, php-format
+msgid "commented on %s's post"
+msgstr "ha commentato il post di %s"
#: ../../include/ItemObject.php:89 ../../include/conversation.php:678
msgid "Private Message"
@@ -1862,8 +1111,8 @@ msgstr "Mi astengo"
msgid "View all"
msgstr "Vedi tutto"
-#: ../../include/ItemObject.php:179 ../../include/taxonomy.php:396
-#: ../../include/conversation.php:1712 ../../include/identity.php:1266
+#: ../../include/ItemObject.php:179 ../../include/conversation.php:1712
+#: ../../include/identity.php:1266 ../../include/taxonomy.php:396
#: ../../mod/photos.php:1019
msgctxt "noun"
msgid "Like"
@@ -1931,467 +1180,603 @@ msgstr "Condividi"
msgid "share"
msgstr "condividi"
-#: ../../include/ItemObject.php:276
+#: ../../include/ItemObject.php:277
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
msgstr[0] "%d commento"
msgstr[1] "%d commenti"
-#: ../../include/ItemObject.php:294 ../../include/ItemObject.php:295
+#: ../../include/ItemObject.php:295 ../../include/ItemObject.php:296
#, php-format
msgid "View %s's profile - %s"
msgstr "Guarda il profilo di %s - %s"
-#: ../../include/ItemObject.php:298
+#: ../../include/ItemObject.php:299
msgid "to"
msgstr "a"
-#: ../../include/ItemObject.php:299
+#: ../../include/ItemObject.php:300
msgid "via"
msgstr "via"
-#: ../../include/ItemObject.php:300
+#: ../../include/ItemObject.php:301
msgid "Wall-to-Wall"
msgstr "Da bacheca a bacheca"
-#: ../../include/ItemObject.php:301
+#: ../../include/ItemObject.php:302
msgid "via Wall-To-Wall:"
msgstr "da bacheca a bacheca:"
-#: ../../include/ItemObject.php:312 ../../include/conversation.php:727
+#: ../../include/ItemObject.php:313 ../../include/conversation.php:727
#, php-format
msgid "from %s"
msgstr "da %s"
-#: ../../include/ItemObject.php:315 ../../include/conversation.php:730
+#: ../../include/ItemObject.php:316 ../../include/conversation.php:730
#, php-format
msgid "last edited: %s"
msgstr "ultima modifica: %s"
-#: ../../include/ItemObject.php:316 ../../include/conversation.php:731
+#: ../../include/ItemObject.php:317 ../../include/conversation.php:731
#, php-format
msgid "Expires: %s"
msgstr "Scadenza: %s"
-#: ../../include/ItemObject.php:337
+#: ../../include/ItemObject.php:338
msgid "Save Bookmarks"
msgstr "Salva segnalibro"
-#: ../../include/ItemObject.php:338
+#: ../../include/ItemObject.php:339
msgid "Add to Calendar"
msgstr "Aggiungi al calendario"
-#: ../../include/ItemObject.php:347
+#: ../../include/ItemObject.php:348
msgid "Mark all seen"
msgstr "Marca tutto come letto"
-#: ../../include/ItemObject.php:353 ../../mod/photos.php:1145
+#: ../../include/ItemObject.php:354 ../../mod/photos.php:1145
msgctxt "noun"
msgid "Likes"
msgstr "Mi piace"
-#: ../../include/ItemObject.php:354 ../../mod/photos.php:1146
+#: ../../include/ItemObject.php:355 ../../mod/photos.php:1146
msgctxt "noun"
msgid "Dislikes"
msgstr "Non mi piace"
-#: ../../include/ItemObject.php:359 ../../include/acl_selectors.php:249
+#: ../../include/ItemObject.php:360 ../../include/acl_selectors.php:249
#: ../../mod/photos.php:1151
msgid "Close"
msgstr "Chiudi"
-#: ../../include/ItemObject.php:364 ../../include/conversation.php:748
-#: ../../include/conversation.php:1220 ../../mod/editpost.php:123
-#: ../../mod/photos.php:962 ../../mod/editlayout.php:147
-#: ../../mod/editwebpage.php:192 ../../mod/editblock.php:149
-#: ../../mod/mail.php:241 ../../mod/mail.php:356
+#: ../../include/ItemObject.php:365 ../../include/conversation.php:748
+#: ../../include/conversation.php:1220 ../../mod/mail.php:241
+#: ../../mod/mail.php:356 ../../mod/photos.php:962 ../../mod/editblock.php:149
+#: ../../mod/editlayout.php:147 ../../mod/editpost.php:123
+#: ../../mod/editwebpage.php:192
msgid "Please wait"
msgstr "Attendere"
-#: ../../include/ItemObject.php:665 ../../mod/photos.php:978
+#: ../../include/ItemObject.php:385 ../../include/js_strings.php:7
+msgid "[+] show all"
+msgstr "[+] mostra tutto"
+
+#: ../../include/ItemObject.php:666 ../../mod/photos.php:978
#: ../../mod/photos.php:1096
msgid "This is you"
msgstr "Questo sei tu"
-#: ../../include/ItemObject.php:669 ../../include/conversation.php:1192
-#: ../../mod/editpost.php:107 ../../mod/editlayout.php:134
-#: ../../mod/editwebpage.php:179 ../../mod/editblock.php:135
+#: ../../include/ItemObject.php:668 ../../include/js_strings.php:6
+#: ../../mod/photos.php:980 ../../mod/photos.php:1098
+msgid "Comment"
+msgstr "Commento"
+
+#: ../../include/ItemObject.php:669 ../../include/js_strings.php:22
+#: ../../mod/mail.php:355 ../../mod/admin.php:453 ../../mod/admin.php:819
+#: ../../mod/admin.php:986 ../../mod/admin.php:1118 ../../mod/admin.php:1312
+#: ../../mod/admin.php:1397 ../../mod/pconfig.php:108 ../../mod/pdledit.php:58
+#: ../../mod/appman.php:99 ../../mod/photos.php:577 ../../mod/photos.php:654
+#: ../../mod/photos.php:941 ../../mod/photos.php:981 ../../mod/photos.php:1099
+#: ../../mod/poke.php:166 ../../mod/bulksetclose.php:24 ../../mod/poll.php:68
+#: ../../mod/chat.php:177 ../../mod/chat.php:211 ../../mod/connect.php:93
+#: ../../mod/profiles.php:667 ../../mod/connedit.php:704
+#: ../../mod/rate.php:167 ../../mod/events.php:511 ../../mod/events.php:693
+#: ../../mod/filestorage.php:156 ../../mod/fsuggest.php:108
+#: ../../mod/group.php:81 ../../mod/import.php:592 ../../mod/invite.php:142
+#: ../../mod/settings.php:588 ../../mod/settings.php:692
+#: ../../mod/settings.php:718 ../../mod/settings.php:746
+#: ../../mod/settings.php:769 ../../mod/settings.php:854
+#: ../../mod/settings.php:1050 ../../mod/setup.php:327 ../../mod/setup.php:367
+#: ../../mod/locs.php:105 ../../mod/sources.php:104 ../../mod/sources.php:138
+#: ../../mod/mitem.php:235 ../../mod/mood.php:134 ../../mod/thing.php:303
+#: ../../mod/thing.php:346 ../../mod/xchan.php:11
+#: ../../view/theme/apw/php/config.php:256
+#: ../../view/theme/redbasic/php/config.php:99
+msgid "Submit"
+msgstr "Salva"
+
+#: ../../include/ItemObject.php:670 ../../include/conversation.php:1192
+#: ../../mod/editblock.php:135 ../../mod/editlayout.php:134
+#: ../../mod/editpost.php:107 ../../mod/editwebpage.php:179
msgid "Bold"
msgstr "Grassetto"
-#: ../../include/ItemObject.php:670 ../../include/conversation.php:1193
-#: ../../mod/editpost.php:108 ../../mod/editlayout.php:135
-#: ../../mod/editwebpage.php:180 ../../mod/editblock.php:136
+#: ../../include/ItemObject.php:671 ../../include/conversation.php:1193
+#: ../../mod/editblock.php:136 ../../mod/editlayout.php:135
+#: ../../mod/editpost.php:108 ../../mod/editwebpage.php:180
msgid "Italic"
msgstr "Corsivo"
-#: ../../include/ItemObject.php:671 ../../include/conversation.php:1194
-#: ../../mod/editpost.php:109 ../../mod/editlayout.php:136
-#: ../../mod/editwebpage.php:181 ../../mod/editblock.php:137
+#: ../../include/ItemObject.php:672 ../../include/conversation.php:1194
+#: ../../mod/editblock.php:137 ../../mod/editlayout.php:136
+#: ../../mod/editpost.php:109 ../../mod/editwebpage.php:181
msgid "Underline"
msgstr "Sottolineato"
-#: ../../include/ItemObject.php:672 ../../include/conversation.php:1195
-#: ../../mod/editpost.php:110 ../../mod/editlayout.php:137
-#: ../../mod/editwebpage.php:182 ../../mod/editblock.php:138
+#: ../../include/ItemObject.php:673 ../../include/conversation.php:1195
+#: ../../mod/editblock.php:138 ../../mod/editlayout.php:137
+#: ../../mod/editpost.php:110 ../../mod/editwebpage.php:182
msgid "Quote"
msgstr "Citazione"
-#: ../../include/ItemObject.php:673 ../../include/conversation.php:1196
-#: ../../mod/editpost.php:111 ../../mod/editlayout.php:138
-#: ../../mod/editwebpage.php:183 ../../mod/editblock.php:139
+#: ../../include/ItemObject.php:674 ../../include/conversation.php:1196
+#: ../../mod/editblock.php:139 ../../mod/editlayout.php:138
+#: ../../mod/editpost.php:111 ../../mod/editwebpage.php:183
msgid "Code"
msgstr "Codice"
-#: ../../include/ItemObject.php:674
+#: ../../include/ItemObject.php:675
msgid "Image"
msgstr "Immagine"
-#: ../../include/ItemObject.php:675
+#: ../../include/ItemObject.php:676
msgid "Insert Link"
msgstr "Collegamento"
-#: ../../include/ItemObject.php:676
+#: ../../include/ItemObject.php:677
msgid "Video"
msgstr "Video"
-#: ../../include/ItemObject.php:680 ../../include/conversation.php:1247
-#: ../../mod/editpost.php:151 ../../mod/mail.php:247 ../../mod/mail.php:361
+#: ../../include/ItemObject.php:678 ../../include/conversation.php:1166
+#: ../../include/page_widgets.php:40 ../../mod/photos.php:982
+#: ../../mod/editblock.php:170 ../../mod/editpost.php:143
+#: ../../mod/editwebpage.php:214 ../../mod/events.php:690
+#: ../../mod/webpages.php:188
+msgid "Preview"
+msgstr "Anteprima"
+
+#: ../../include/ItemObject.php:681 ../../include/conversation.php:1247
+#: ../../mod/mail.php:247 ../../mod/mail.php:361 ../../mod/editpost.php:151
msgid "Encrypt text"
msgstr "Crittografia del testo"
-#: ../../include/Contact.php:124
-msgid "New window"
-msgstr "Nuova finestra"
+#: ../../include/account.php:27
+msgid "Not a valid email address"
+msgstr "Email non valida"
-#: ../../include/Contact.php:125
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Apri l'indirizzo selezionato in una nuova scheda o finestra"
+#: ../../include/account.php:29
+msgid "Your email domain is not among those allowed on this site"
+msgstr "Il dominio della tua email attualmente non è permesso su questo sito"
-#: ../../include/Contact.php:212
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Utente '%s' eliminato"
+#: ../../include/account.php:35
+msgid "Your email address is already registered at this site."
+msgstr "La tua email è già registrata su questo sito."
-#: ../../include/bb2diaspora.php:373
-msgid "Attachments:"
-msgstr "Allegati:"
+#: ../../include/account.php:67
+msgid "An invitation is required."
+msgstr "È necessario un invito."
-#: ../../include/bb2diaspora.php:461
-msgid "$Projectname event notification:"
-msgstr "Notifica evento $Projectname:"
+#: ../../include/account.php:71
+msgid "Invitation could not be verified."
+msgstr "L'invito non può essere verificato."
-#: ../../include/nav.php:87 ../../include/nav.php:120 ../../boot.php:1549
-msgid "Logout"
-msgstr "Esci"
+#: ../../include/account.php:121
+msgid "Please enter the required information."
+msgstr "Inserisci le informazioni richieste."
-#: ../../include/nav.php:87 ../../include/nav.php:120
-msgid "End this session"
-msgstr "Chiudi questa sessione"
+#: ../../include/account.php:188
+msgid "Failed to store account information."
+msgstr "Non è stato possibile salvare le informazioni del tuo account."
-#: ../../include/nav.php:90 ../../include/nav.php:151
-msgid "Home"
-msgstr "Bacheca"
+#: ../../include/account.php:246
+#, php-format
+msgid "Registration confirmation for %s"
+msgstr "Registrazione di %s confermata"
-#: ../../include/nav.php:90
-msgid "Your posts and conversations"
-msgstr "I tuoi post e conversazioni"
+#: ../../include/account.php:312
+#, php-format
+msgid "Registration request at %s"
+msgstr "Richiesta di registrazione su %s"
-#: ../../include/nav.php:91 ../../include/conversation.php:953
-#: ../../mod/connedit.php:510
-msgid "View Profile"
-msgstr "Profilo"
+#: ../../include/account.php:336
+msgid "your registration password"
+msgstr "la password di registrazione"
-#: ../../include/nav.php:91
-msgid "Your profile page"
-msgstr "Il tuo profilo"
+#: ../../include/account.php:339 ../../include/account.php:399
+#, php-format
+msgid "Registration details for %s"
+msgstr "Dettagli della registrazione di %s"
-#: ../../include/nav.php:93
-msgid "Edit Profiles"
-msgstr "Modifica i profili"
+#: ../../include/account.php:408
+msgid "Account approved."
+msgstr "Account approvato."
-#: ../../include/nav.php:93
-msgid "Manage/Edit profiles"
-msgstr "Gestisci/modifica i profili"
+#: ../../include/account.php:447
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Registrazione revocata per %s"
-#: ../../include/nav.php:95 ../../include/identity.php:979
-msgid "Edit Profile"
-msgstr "Modifica il profilo"
+#: ../../include/account.php:492
+msgid "Account verified. Please login."
+msgstr "Registrazione verificata. Adesso puoi effettuare login."
-#: ../../include/nav.php:95
-msgid "Edit your profile"
-msgstr "Modifica il profilo"
+#: ../../include/account.php:705 ../../include/account.php:707
+msgid "Click here to upgrade."
+msgstr "Clicca qui per aggiornare."
-#: ../../include/nav.php:97 ../../include/conversation.php:1611
-#: ../../include/apps.php:139 ../../mod/fbrowser.php:25
-msgid "Photos"
-msgstr "Foto"
+#: ../../include/account.php:713
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Questa operazione supera i limiti del tuo abbonamento."
-#: ../../include/nav.php:97
-msgid "Your photos"
-msgstr "Le tue foto"
+#: ../../include/account.php:718
+msgid "This action is not available under your subscription plan."
+msgstr "Questa operazione non è prevista dal tuo abbonamento."
-#: ../../include/nav.php:98
-msgid "Your files"
-msgstr "I tuoi file"
+#: ../../include/oembed.php:183
+msgid "Embedded content"
+msgstr "Contenuti incorporati"
-#: ../../include/nav.php:103 ../../include/apps.php:146
-msgid "Chat"
-msgstr "Area chat"
+#: ../../include/oembed.php:192
+msgid "Embedding disabled"
+msgstr "Disabilita la creazione di contenuti incorporati"
-#: ../../include/nav.php:103
-msgid "Your chatrooms"
-msgstr "Le tue aree chat"
+#: ../../include/acl_selectors.php:240
+msgid "Visible to your default audience"
+msgstr "Visibile secondo le impostazioni predefinite"
-#: ../../include/nav.php:109 ../../include/conversation.php:1646
-#: ../../include/apps.php:129
-msgid "Bookmarks"
-msgstr "Segnalibri"
+#: ../../include/acl_selectors.php:241
+msgid "Show"
+msgstr "Mostra"
-#: ../../include/nav.php:109
-msgid "Your bookmarks"
-msgstr "I tuoi segnalibri"
+#: ../../include/acl_selectors.php:242
+msgid "Don't show"
+msgstr "Non mostrare"
-#: ../../include/nav.php:113 ../../include/conversation.php:1656
-#: ../../include/apps.php:136 ../../mod/webpages.php:178
-msgid "Webpages"
-msgstr "Pagine web"
+#: ../../include/acl_selectors.php:248 ../../mod/photos.php:571
+#: ../../mod/photos.php:934 ../../mod/chat.php:209 ../../mod/events.php:691
+#: ../../mod/filestorage.php:147
+msgid "Permissions"
+msgstr "Permessi"
-#: ../../include/nav.php:113
-msgid "Your webpages"
-msgstr "Le tue pagine web"
+#: ../../include/activities.php:39
+msgid " and "
+msgstr "e"
-#: ../../include/nav.php:117 ../../include/apps.php:131 ../../boot.php:1550
-msgid "Login"
-msgstr "Accedi"
+#: ../../include/activities.php:47
+msgid "public profile"
+msgstr "profilo pubblico"
-#: ../../include/nav.php:117
-msgid "Sign in"
-msgstr "Accedi"
+#: ../../include/activities.php:56
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s ha cambiato %2$s in &ldquo;%3$s&rdquo;"
-#: ../../include/nav.php:134
+#: ../../include/activities.php:57
#, php-format
-msgid "%s - click to logout"
-msgstr "%s - clicca per uscire"
+msgid "Visit %1$s's %2$s"
+msgstr "Guarda %2$s di %1$s "
-#: ../../include/nav.php:137
-msgid "Remote authentication"
-msgstr "Accedi dal tuo hub"
+#: ../../include/activities.php:60
+#, php-format
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s ha aggiornato %2$s cambiando %3$s."
-#: ../../include/nav.php:137
-msgid "Click to authenticate to your home hub"
-msgstr "Accedi tramite il tuo hub principale"
+#: ../../include/api.php:1178
+msgid "Public Timeline"
+msgstr "Diario pubblico"
-#: ../../include/nav.php:151
-msgid "Home Page"
-msgstr "Bacheca"
+#: ../../include/apps.php:128
+msgid "Site Admin"
+msgstr "Amministrazione sito"
-#: ../../include/nav.php:155 ../../mod/register.php:224 ../../boot.php:1526
-msgid "Register"
-msgstr "Iscriviti"
+#: ../../include/apps.php:130
+msgid "Address Book"
+msgstr "Rubrica"
-#: ../../include/nav.php:155
-msgid "Create an account"
-msgstr "Crea un account"
+#: ../../include/apps.php:138 ../../include/identity.php:1240
+#: ../../include/identity.php:1357 ../../mod/profperm.php:112
+msgid "Profile"
+msgstr "Profilo"
-#: ../../include/nav.php:160 ../../include/apps.php:142 ../../mod/help.php:67
-#: ../../mod/help.php:72 ../../mod/layouts.php:176
-msgid "Help"
-msgstr "Guida"
+#: ../../include/apps.php:144 ../../mod/mood.php:130
+msgid "Mood"
+msgstr "Umore"
-#: ../../include/nav.php:160
-msgid "Help and documentation"
-msgstr "Guida e documentazione"
+#: ../../include/apps.php:145 ../../include/conversation.php:959
+msgid "Poke"
+msgstr "Poke"
-#: ../../include/nav.php:163
-msgid "Applications, utilities, links, games"
-msgstr "Applicazioni, utilità, link, giochi"
+#: ../../include/apps.php:148
+msgid "Probe"
+msgstr "Diagnostica"
-#: ../../include/nav.php:165
-msgid "Search site content"
-msgstr "Cerca nel sito"
+#: ../../include/apps.php:149
+msgid "Suggest"
+msgstr "Suggerisci"
-#: ../../include/nav.php:168 ../../include/apps.php:141
-msgid "Directory"
-msgstr "Elenco pubblico"
+#: ../../include/apps.php:150
+msgid "Random Channel"
+msgstr "Canale casuale"
-#: ../../include/nav.php:168
-msgid "Channel Directory"
-msgstr "Elenco pubblico canali"
+#: ../../include/apps.php:151
+msgid "Invite"
+msgstr "Invita"
-#: ../../include/nav.php:180 ../../include/apps.php:133
-msgid "Matrix"
-msgstr "RedMatrix"
+#: ../../include/apps.php:152
+msgid "Features"
+msgstr "Funzionalità"
-#: ../../include/nav.php:180
-msgid "Your matrix"
-msgstr "La tua rete"
+#: ../../include/apps.php:153 ../../mod/id.php:28
+msgid "Language"
+msgstr "Lingua"
-#: ../../include/nav.php:181
-msgid "Mark all matrix notifications seen"
-msgstr "Segna come lette le notifiche della tua rete"
+#: ../../include/apps.php:154
+msgid "Post"
+msgstr "Post"
-#: ../../include/nav.php:183 ../../include/apps.php:137
-msgid "Channel Home"
-msgstr "Bacheca del canale"
+#: ../../include/apps.php:155 ../../mod/id.php:17 ../../mod/id.php:18
+#: ../../mod/id.php:19
+msgid "Profile Photo"
+msgstr "Foto del profilo"
-#: ../../include/nav.php:183
-msgid "Channel home"
-msgstr "Bacheca del canale"
+#: ../../include/apps.php:247 ../../mod/settings.php:84
+#: ../../mod/settings.php:614
+msgid "Update"
+msgstr "Aggiorna"
-#: ../../include/nav.php:184
-msgid "Mark all channel notifications seen"
-msgstr "Segna come lette le notifiche del canale"
+#: ../../include/apps.php:247
+msgid "Install"
+msgstr "Installa"
-#: ../../include/nav.php:187 ../../mod/connections.php:267
-msgid "Connections"
-msgstr "Contatti"
+#: ../../include/apps.php:252
+msgid "Purchase"
+msgstr "Acquista"
-#: ../../include/nav.php:190
-msgid "Notices"
-msgstr "Avvisi"
+#: ../../include/attach.php:137 ../../include/attach.php:184
+#: ../../include/attach.php:247 ../../include/attach.php:261
+#: ../../include/attach.php:305 ../../include/attach.php:319
+#: ../../include/attach.php:350 ../../include/attach.php:546
+#: ../../include/attach.php:618 ../../include/chat.php:131
+#: ../../include/items.php:4383 ../../include/photos.php:26
+#: ../../mod/mail.php:114 ../../mod/achievements.php:30 ../../mod/page.php:31
+#: ../../mod/page.php:86 ../../mod/api.php:26 ../../mod/api.php:31
+#: ../../mod/pdledit.php:21 ../../mod/appman.php:66 ../../mod/photos.php:69
+#: ../../mod/authtest.php:13 ../../mod/block.php:22 ../../mod/block.php:72
+#: ../../mod/blocks.php:69 ../../mod/blocks.php:76 ../../mod/poke.php:128
+#: ../../mod/bookmarks.php:46 ../../mod/manage.php:6 ../../mod/channel.php:100
+#: ../../mod/channel.php:219 ../../mod/channel.php:262 ../../mod/chat.php:90
+#: ../../mod/chat.php:95 ../../mod/profile.php:64 ../../mod/profile.php:72
+#: ../../mod/common.php:35 ../../mod/profile_photo.php:264
+#: ../../mod/profile_photo.php:277 ../../mod/notifications.php:66
+#: ../../mod/connections.php:29 ../../mod/profiles.php:188
+#: ../../mod/profiles.php:576 ../../mod/connedit.php:348
+#: ../../mod/editblock.php:65 ../../mod/editlayout.php:63
+#: ../../mod/editlayout.php:87 ../../mod/editpost.php:13
+#: ../../mod/editwebpage.php:64 ../../mod/editwebpage.php:86
+#: ../../mod/editwebpage.php:101 ../../mod/editwebpage.php:125
+#: ../../mod/rate.php:110 ../../mod/events.php:249
+#: ../../mod/filestorage.php:18 ../../mod/filestorage.php:73
+#: ../../mod/filestorage.php:88 ../../mod/filestorage.php:115
+#: ../../mod/register.php:72 ../../mod/fsuggest.php:78 ../../mod/regmod.php:17
+#: ../../mod/group.php:9 ../../mod/id.php:71 ../../mod/service_limits.php:7
+#: ../../mod/invite.php:13 ../../mod/invite.php:104 ../../mod/settings.php:570
+#: ../../mod/item.php:206 ../../mod/item.php:214 ../../mod/item.php:1005
+#: ../../mod/setup.php:223 ../../mod/layouts.php:69 ../../mod/layouts.php:76
+#: ../../mod/layouts.php:87 ../../mod/sharedwithme.php:7
+#: ../../mod/like.php:178 ../../mod/locs.php:77 ../../mod/sources.php:66
+#: ../../mod/menu.php:72 ../../mod/message.php:16 ../../mod/mitem.php:111
+#: ../../mod/mood.php:111 ../../mod/suggest.php:26 ../../mod/network.php:12
+#: ../../mod/new_channel.php:68 ../../mod/new_channel.php:99
+#: ../../mod/thing.php:269 ../../mod/thing.php:284 ../../mod/thing.php:318
+#: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27
+#: ../../mod/viewsrc.php:14 ../../mod/webpages.php:69 ../../index.php:186
+#: ../../index.php:397
+msgid "Permission denied."
+msgstr "Permesso negato."
-#: ../../include/nav.php:190
-msgid "Notifications"
-msgstr "Notifiche"
+#: ../../include/attach.php:242 ../../include/attach.php:300
+msgid "Item was not found."
+msgstr "Elemento non trovato."
-#: ../../include/nav.php:191
-msgid "See all notifications"
-msgstr "Vedi tutte le notifiche"
+#: ../../include/attach.php:363
+msgid "No source file."
+msgstr "Nessun file di origine."
-#: ../../include/nav.php:192 ../../mod/notifications.php:99
-msgid "Mark all system notifications seen"
-msgstr "Segna come lette le notifiche di sistema"
+#: ../../include/attach.php:381
+msgid "Cannot locate file to replace"
+msgstr "Il file da sostituire non è stato trovato"
-#: ../../include/nav.php:194 ../../include/apps.php:143
-msgid "Mail"
-msgstr "Messaggi"
+#: ../../include/attach.php:399
+msgid "Cannot locate file to revise/update"
+msgstr "Il file da aggiornare non è stato trovato"
-#: ../../include/nav.php:194
-msgid "Private mail"
-msgstr "Messaggi privati"
+#: ../../include/attach.php:410
+#, php-format
+msgid "File exceeds size limit of %d"
+msgstr "Il file supera la dimensione massima di %d"
-#: ../../include/nav.php:195
-msgid "See all private messages"
-msgstr "Guarda tutti i messaggi privati"
+#: ../../include/attach.php:422
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+msgstr "Hai raggiunto il limite complessivo di %1$.0f Mbytes per gli allegati."
-#: ../../include/nav.php:196
-msgid "Mark all private messages seen"
-msgstr "Segna come letti tutti i messaggi privati"
+#: ../../include/attach.php:505
+msgid "File upload failed. Possible system limit or action terminated."
+msgstr "Caricamento file fallito, potrebbe essere stato interrotto o potrebbe aver superato lo spazio assegnato."
-#: ../../include/nav.php:197
-msgid "Inbox"
-msgstr "In arrivo"
+#: ../../include/attach.php:517
+msgid "Stored file could not be verified. Upload failed."
+msgstr "Il file non può essere verificato. Caricamento fallito."
-#: ../../include/nav.php:198
-msgid "Outbox"
-msgstr "Inviati"
+#: ../../include/attach.php:561 ../../include/attach.php:578
+msgid "Path not available."
+msgstr "Percorso non disponibile."
-#: ../../include/nav.php:202 ../../include/apps.php:140
-#: ../../mod/events.php:503
-msgid "Events"
-msgstr "Eventi"
+#: ../../include/attach.php:623
+msgid "Empty pathname"
+msgstr "Il percorso del file è vuoto"
-#: ../../include/nav.php:202
-msgid "Event Calendar"
-msgstr "Calendario"
+#: ../../include/attach.php:639
+msgid "duplicate filename or path"
+msgstr "il file o il percorso del file è duplicato"
-#: ../../include/nav.php:203
-msgid "See all events"
-msgstr "Guarda tutti gli eventi"
+#: ../../include/attach.php:663
+msgid "Path not found."
+msgstr "Percorso del file non trovato."
-#: ../../include/nav.php:204
-msgid "Mark all events seen"
-msgstr "Marca come letti tutti gli eventi"
+#: ../../include/attach.php:714
+msgid "mkdir failed."
+msgstr "mkdir fallito."
-#: ../../include/nav.php:206 ../../include/apps.php:132
-#: ../../mod/manage.php:166
-msgid "Channel Manager"
-msgstr "Gestione canali"
+#: ../../include/attach.php:718
+msgid "database storage failed."
+msgstr "scrittura su database fallita."
-#: ../../include/nav.php:206
-msgid "Manage Your Channels"
-msgstr "Gestisci i tuoi canali"
+#: ../../include/auth.php:131
+msgid "Logged out."
+msgstr "Uscita effettuata."
-#: ../../include/nav.php:208
-msgid "Account/Channel Settings"
-msgstr "Impostazioni dell'account e del canale"
+#: ../../include/auth.php:272
+msgid "Failed authentication"
+msgstr "Autenticazione fallita"
-#: ../../include/nav.php:216 ../../mod/admin.php:120
-msgid "Admin"
-msgstr "Amministrazione"
+#: ../../include/auth.php:286 ../../mod/openid.php:190
+msgid "Login failed."
+msgstr "Accesso fallito."
-#: ../../include/nav.php:216
-msgid "Site Setup and Configuration"
-msgstr "Installazione e configurazione del sito"
+#: ../../include/bb2diaspora.php:373
+msgid "Attachments:"
+msgstr "Allegati:"
-#: ../../include/nav.php:247 ../../include/conversation.php:861
-msgid "Loading..."
-msgstr "Caricamento in corso..."
+#: ../../include/bb2diaspora.php:459 ../../include/event.php:22
+msgid "l F d, Y \\@ g:i A"
+msgstr "l d F Y \\@ G:i"
-#: ../../include/nav.php:252
-msgid "@name, #tag, content"
-msgstr "@nome, #tag, testo"
+#: ../../include/bb2diaspora.php:461
+msgid "$Projectname event notification:"
+msgstr "Notifica evento $Projectname:"
-#: ../../include/nav.php:253
-msgid "Please wait..."
-msgstr "Attendere..."
+#: ../../include/bb2diaspora.php:465 ../../include/event.php:30
+msgid "Starts:"
+msgstr "Inizio:"
-#: ../../include/taxonomy.php:222 ../../include/taxonomy.php:243
-msgid "Tags"
-msgstr "Tag"
+#: ../../include/bb2diaspora.php:473 ../../include/event.php:40
+msgid "Finishes:"
+msgstr "Fine:"
-#: ../../include/taxonomy.php:287
-msgid "Keywords"
-msgstr "Parole chiave"
+#: ../../include/bb2diaspora.php:481 ../../include/event.php:50
+#: ../../include/identity.php:1007 ../../mod/directory.php:302
+#: ../../mod/events.php:684
+msgid "Location:"
+msgstr "Luogo:"
-#: ../../include/taxonomy.php:308
-msgid "have"
-msgstr "ho"
+#: ../../include/bbcode.php:122 ../../include/bbcode.php:768
+#: ../../include/bbcode.php:771 ../../include/bbcode.php:776
+#: ../../include/bbcode.php:779 ../../include/bbcode.php:782
+#: ../../include/bbcode.php:785 ../../include/bbcode.php:790
+#: ../../include/bbcode.php:793 ../../include/bbcode.php:798
+#: ../../include/bbcode.php:801 ../../include/bbcode.php:804
+#: ../../include/bbcode.php:807
+msgid "Image/photo"
+msgstr "Immagine"
-#: ../../include/taxonomy.php:308
-msgid "has"
-msgstr "ha"
+#: ../../include/bbcode.php:161 ../../include/bbcode.php:818
+msgid "Encrypted content"
+msgstr "Contenuto crittografato"
-#: ../../include/taxonomy.php:309
-msgid "want"
-msgstr "voglio"
+#: ../../include/bbcode.php:178
+#, php-format
+msgid "Install %s element: "
+msgstr "Installa l'elemento %s:"
-#: ../../include/taxonomy.php:309
-msgid "wants"
-msgstr "vuole"
+#: ../../include/bbcode.php:182
+#, php-format
+msgid ""
+"This post contains an installable %s element, however you lack permissions "
+"to install it on this site."
+msgstr "Questo post contiene un elemento %s installabile, tuttavia non hai i permessi necessari per l'installazione."
-#: ../../include/taxonomy.php:310
-msgid "likes"
-msgstr "gli piace"
+#: ../../include/bbcode.php:192 ../../mod/impel.php:37
+msgid "webpage"
+msgstr "pagina web"
-#: ../../include/taxonomy.php:311
-msgid "dislikes"
-msgstr "non gli piace"
+#: ../../include/bbcode.php:195 ../../mod/impel.php:47
+msgid "layout"
+msgstr "layout"
-#: ../../include/activities.php:39
-msgid " and "
-msgstr "e"
+#: ../../include/bbcode.php:198 ../../mod/impel.php:42
+msgid "block"
+msgstr "riquadro"
-#: ../../include/activities.php:47
-msgid "public profile"
-msgstr "profilo pubblico"
+#: ../../include/bbcode.php:201 ../../mod/impel.php:54
+msgid "menu"
+msgstr "menu"
-#: ../../include/activities.php:56
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s ha cambiato %2$s in &ldquo;%3$s&rdquo;"
+#: ../../include/bbcode.php:215
+msgid "QR code"
+msgstr "QR code"
-#: ../../include/activities.php:57
+#: ../../include/bbcode.php:266
#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Guarda %2$s di %1$s "
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s ha scritto %2$s %3$s"
-#: ../../include/activities.php:60
+#: ../../include/bbcode.php:268 ../../mod/tagger.php:51
+msgid "post"
+msgstr "il post"
+
+#: ../../include/bbcode.php:518
+msgid "Different viewers will see this text differently"
+msgstr "Ad altri questo testo potrebbe apparire in modo differente"
+
+#: ../../include/bbcode.php:729
+msgid "$1 spoiler"
+msgstr "$1 spoiler"
+
+#: ../../include/bbcode.php:756
+msgid "$1 wrote:"
+msgstr "$1 ha scritto:"
+
+#: ../../include/bookmarks.php:35
#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s ha aggiornato %2$s cambiando %3$s."
+msgid "%1$s's bookmarks"
+msgstr "I segnalibri di %1$s"
+
+#: ../../include/chat.php:23
+msgid "Missing room name"
+msgstr "Area chat senza nome"
+
+#: ../../include/chat.php:32
+msgid "Duplicate room name"
+msgstr "Il nome dell'area chat è duplicato"
+
+#: ../../include/chat.php:82 ../../include/chat.php:90
+msgid "Invalid room specifier."
+msgstr "Il nome dell'area chat non è valido."
+
+#: ../../include/chat.php:120
+msgid "Room not found."
+msgstr "Area chat non trovata."
+
+#: ../../include/chat.php:141
+msgid "Room is full"
+msgstr "L'area chat è al completo"
+
+#: ../../include/comanche.php:34 ../../mod/admin.php:390
+#: ../../view/theme/apw/php/config.php:185
+msgid "Default"
+msgstr "Predefinito"
#: ../../include/security.php:349
msgid ""
@@ -2399,148 +1784,142 @@ msgid ""
"form has been opened for too long (>3 hours) before submitting it."
msgstr "I controlli di sicurezza sono falliti. Probabilmente è accaduto perché la pagina è stata tenuta aperta troppo a lungo (ore?) prima di inviare il contenuto."
-#: ../../include/permissions.php:26
-msgid "Can view my normal stream and posts"
-msgstr "Può vedere i miei contenuti e i post normali"
-
-#: ../../include/permissions.php:27
-msgid "Can view my default channel profile"
-msgstr "Può vedere il profilo predefinito del canale"
-
-#: ../../include/permissions.php:28
-msgid "Can view my photo albums"
-msgstr "Può vedere i miei album fotografici"
-
-#: ../../include/permissions.php:29
-msgid "Can view my connections"
-msgstr "Può vedere i miei contatti"
-
-#: ../../include/permissions.php:30
-msgid "Can view my file storage"
-msgstr "Può vedere i miei file condivisi"
+#: ../../include/contact_selectors.php:56
+msgid "Frequently"
+msgstr "Frequentemente"
-#: ../../include/permissions.php:31
-msgid "Can view my webpages"
-msgstr "Può vedere le mie pagine web"
+#: ../../include/contact_selectors.php:57
+msgid "Hourly"
+msgstr "Ogni ora"
-#: ../../include/permissions.php:34
-msgid "Can send me their channel stream and posts"
-msgstr "È tra i canali che seguo"
+#: ../../include/contact_selectors.php:58
+msgid "Twice daily"
+msgstr "Due volte al giorno"
-#: ../../include/permissions.php:35
-msgid "Can post on my channel page (\"wall\")"
-msgstr "Può scrivere sulla bacheca del mio canale"
+#: ../../include/contact_selectors.php:59
+msgid "Daily"
+msgstr "Ogni giorno"
-#: ../../include/permissions.php:36
-msgid "Can comment on or like my posts"
-msgstr "Può commentare o aggiungere \"mi piace\" ai miei post"
+#: ../../include/contact_selectors.php:60
+msgid "Weekly"
+msgstr "Ogni settimana"
-#: ../../include/permissions.php:37
-msgid "Can send me private mail messages"
-msgstr "Può inviarmi messaggi privati"
+#: ../../include/contact_selectors.php:61
+msgid "Monthly"
+msgstr "Ogni mese"
-#: ../../include/permissions.php:38
-msgid "Can post photos to my photo albums"
-msgstr "Può aggiungere foto ai miei album"
+#: ../../include/contact_selectors.php:76
+msgid "Friendica"
+msgstr "Friendica"
-#: ../../include/permissions.php:39
-msgid "Can like/dislike stuff"
-msgstr "Può aggiungere \"mi piace\""
+#: ../../include/contact_selectors.php:77
+msgid "OStatus"
+msgstr "OStatus"
-#: ../../include/permissions.php:39
-msgid "Profiles and things other than posts/comments"
-msgstr "Profili e tutto ciò che non è post o commenti"
+#: ../../include/contact_selectors.php:78
+msgid "RSS/Atom"
+msgstr "RSS/Atom"
-#: ../../include/permissions.php:41
-msgid "Can forward to all my channel contacts via post @mentions"
-msgstr "Può inoltrare post a tutti i contatti del canale tramite una @menzione"
+#: ../../include/contact_selectors.php:79 ../../mod/admin.php:822
+#: ../../mod/admin.php:831 ../../mod/id.php:15 ../../mod/id.php:16
+#: ../../boot.php:1553
+msgid "Email"
+msgstr "Email"
-#: ../../include/permissions.php:41
-msgid "Advanced - useful for creating group forum channels"
-msgstr "Impostazione avanzata - utile per creare un canale-forum di discussione"
+#: ../../include/contact_selectors.php:80
+msgid "Diaspora"
+msgstr "Diaspora"
-#: ../../include/permissions.php:42
-msgid "Can chat with me (when available)"
-msgstr "Può aprire una chat con me (se disponibile)"
+#: ../../include/contact_selectors.php:81
+msgid "Facebook"
+msgstr "Facebook"
-#: ../../include/permissions.php:43
-msgid "Can write to my file storage"
-msgstr "Può scrivere sul mio archivio file"
+#: ../../include/contact_selectors.php:82
+msgid "Zot!"
+msgstr "Zot!"
-#: ../../include/permissions.php:44
-msgid "Can edit my webpages"
-msgstr "Può modificare le mie pagine web"
+#: ../../include/contact_selectors.php:83
+msgid "LinkedIn"
+msgstr "LinkedIn"
-#: ../../include/permissions.php:46
-msgid "Can source my public posts in derived channels"
-msgstr "Può usare i miei post pubblici per creare canali derivati"
+#: ../../include/contact_selectors.php:84
+msgid "XMPP/IM"
+msgstr "XMPP/IM"
-#: ../../include/permissions.php:46
-msgid "Somewhat advanced - very useful in open communities"
-msgstr "Piuttosto avanzato - molto utile nelle comunità aperte"
+#: ../../include/contact_selectors.php:85
+msgid "MySpace"
+msgstr "MySpace"
-#: ../../include/permissions.php:48
-msgid "Can administer my channel resources"
-msgstr "Può amministrare i contenuti del mio canale"
+#: ../../include/contact_widgets.php:14
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "%d invito disponibile"
+msgstr[1] "%d inviti disponibili"
-#: ../../include/permissions.php:48
-msgid ""
-"Extremely advanced. Leave this alone unless you know what you are doing"
-msgstr "Impostazione pericolosa - lasciare il valore predefinito se non si è assolutamente sicuri"
+#: ../../include/contact_widgets.php:19 ../../mod/admin.php:457
+msgid "Advanced"
+msgstr "Avanzate"
-#: ../../include/permissions.php:893
-msgid "Social Networking"
-msgstr "Social network"
+#: ../../include/contact_widgets.php:22
+msgid "Find Channels"
+msgstr "Ricerca canali"
-#: ../../include/permissions.php:893 ../../include/permissions.php:894
-#: ../../include/permissions.php:895
-msgid "Mostly Public"
-msgstr "Prevalentemente pubblico"
+#: ../../include/contact_widgets.php:23
+msgid "Enter name or interest"
+msgstr "Scrivi un nome o un interesse"
-#: ../../include/permissions.php:893 ../../include/permissions.php:894
-#: ../../include/permissions.php:895
-msgid "Restricted"
-msgstr "Con restrizioni"
+#: ../../include/contact_widgets.php:24
+msgid "Connect/Follow"
+msgstr "Aggiungi"
-#: ../../include/permissions.php:893 ../../include/permissions.php:894
-msgid "Private"
-msgstr "Privato"
+#: ../../include/contact_widgets.php:25
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "Per esempio: Mario Rossi, Pesca"
-#: ../../include/permissions.php:894
-msgid "Community Forum"
-msgstr "Forum di discussione"
+#: ../../include/contact_widgets.php:26 ../../mod/connections.php:273
+#: ../../mod/directory.php:379 ../../mod/directory.php:384
+msgid "Find"
+msgstr "Cerca"
-#: ../../include/permissions.php:895
-msgid "Feed Republish"
-msgstr "Aggregatore di feed esterni"
+#: ../../include/contact_widgets.php:27 ../../mod/directory.php:383
+#: ../../mod/suggest.php:60
+msgid "Channel Suggestions"
+msgstr "Canali suggeriti"
-#: ../../include/permissions.php:896
-msgid "Special Purpose"
-msgstr "Per finalità speciali"
+#: ../../include/contact_widgets.php:29
+msgid "Random Profile"
+msgstr "Profilo casuale"
-#: ../../include/permissions.php:896
-msgid "Celebrity/Soapbox"
-msgstr "Pagina per fan"
+#: ../../include/contact_widgets.php:30
+msgid "Invite Friends"
+msgstr "Invita amici"
-#: ../../include/permissions.php:896
-msgid "Group Repository"
-msgstr "Repository di gruppo"
+#: ../../include/contact_widgets.php:32
+msgid "Advanced example: name=fred and country=iceland"
+msgstr "Per esempio: name=mario e country=italy"
-#: ../../include/permissions.php:897 ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
-#: ../../include/profile_selectors.php:61
-#: ../../include/profile_selectors.php:97
-msgid "Other"
-msgstr "Altro"
+#: ../../include/contact_widgets.php:125
+#, php-format
+msgid "%d connection in common"
+msgid_plural "%d connections in common"
+msgstr[0] "%d contatto in comune"
+msgstr[1] "%d contatti in comune"
-#: ../../include/permissions.php:897
-msgid "Custom/Expert Mode"
-msgstr "Personalizzazione per esperti"
+#: ../../include/contact_widgets.php:130
+msgid "show more"
+msgstr "mostra tutto"
#: ../../include/conversation.php:126 ../../mod/like.php:113
msgid "channel"
msgstr "canale"
+#: ../../include/conversation.php:164 ../../include/diaspora.php:2152
+#: ../../mod/like.php:397
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "A %1$s piace %3$s di %2$s"
+
#: ../../include/conversation.php:167 ../../mod/like.php:399
#, php-format
msgid "%1$s doesn't like %2$s's %3$s"
@@ -2655,10 +2034,6 @@ msgstr "Modifica il contatto"
msgid "Send PM"
msgstr "Invia messaggio privato"
-#: ../../include/conversation.php:959 ../../include/apps.php:145
-msgid "Poke"
-msgstr "Poke"
-
#: ../../include/conversation.php:1073
#, php-format
msgid "%s likes this."
@@ -2733,13 +2108,14 @@ msgstr "Salva nella cartella:"
msgid "Where are you right now?"
msgstr "Dove sei ora?"
-#: ../../include/conversation.php:1158 ../../mod/editpost.php:47
-#: ../../mod/mail.php:175 ../../mod/mail.php:290
+#: ../../include/conversation.php:1158 ../../mod/mail.php:175
+#: ../../mod/mail.php:290 ../../mod/editpost.php:47
msgid "Expires YYYY-MM-DD HH:MM"
msgstr "Scade il YYYY-MM-DD HH:MM"
-#: ../../include/conversation.php:1185 ../../mod/webpages.php:182
-#: ../../mod/blocks.php:154 ../../mod/photos.php:961 ../../mod/layouts.php:184
+#: ../../include/conversation.php:1185 ../../mod/photos.php:961
+#: ../../mod/blocks.php:154 ../../mod/layouts.php:184
+#: ../../mod/webpages.php:182
msgid "Share"
msgstr "Condividi"
@@ -2751,9 +2127,10 @@ msgstr "Nome del link alla pagina"
msgid "Post as"
msgstr "Pubblica come "
-#: ../../include/conversation.php:1197 ../../mod/editpost.php:112
-#: ../../mod/editlayout.php:139 ../../mod/editwebpage.php:184
-#: ../../mod/editblock.php:141 ../../mod/mail.php:238 ../../mod/mail.php:352
+#: ../../include/conversation.php:1197 ../../mod/mail.php:238
+#: ../../mod/mail.php:352 ../../mod/editblock.php:141
+#: ../../mod/editlayout.php:139 ../../mod/editpost.php:112
+#: ../../mod/editwebpage.php:184
msgid "Upload photo"
msgstr "Carica foto"
@@ -2761,9 +2138,10 @@ msgstr "Carica foto"
msgid "upload photo"
msgstr "carica foto"
-#: ../../include/conversation.php:1199 ../../mod/editpost.php:113
-#: ../../mod/editlayout.php:140 ../../mod/editwebpage.php:185
-#: ../../mod/editblock.php:142 ../../mod/mail.php:239 ../../mod/mail.php:353
+#: ../../include/conversation.php:1199 ../../mod/mail.php:239
+#: ../../mod/mail.php:353 ../../mod/editblock.php:142
+#: ../../mod/editlayout.php:140 ../../mod/editpost.php:113
+#: ../../mod/editwebpage.php:185
msgid "Attach file"
msgstr "Allega file"
@@ -2771,9 +2149,10 @@ msgstr "Allega file"
msgid "attach file"
msgstr "allega file"
-#: ../../include/conversation.php:1201 ../../mod/editpost.php:114
-#: ../../mod/editlayout.php:141 ../../mod/editwebpage.php:186
-#: ../../mod/editblock.php:143 ../../mod/mail.php:240 ../../mod/mail.php:354
+#: ../../include/conversation.php:1201 ../../mod/mail.php:240
+#: ../../mod/mail.php:354 ../../mod/editblock.php:143
+#: ../../mod/editlayout.php:141 ../../mod/editpost.php:114
+#: ../../mod/editwebpage.php:186
msgid "Insert web link"
msgstr "Inserisci un indirizzo web"
@@ -2797,9 +2176,9 @@ msgstr "Inserisci l'indirizzo di un audio"
msgid "audio link"
msgstr "link audio"
-#: ../../include/conversation.php:1207 ../../mod/editpost.php:118
-#: ../../mod/editlayout.php:145 ../../mod/editwebpage.php:190
-#: ../../mod/editblock.php:147
+#: ../../include/conversation.php:1207 ../../mod/editblock.php:147
+#: ../../mod/editlayout.php:145 ../../mod/editpost.php:118
+#: ../../mod/editwebpage.php:190
msgid "Set your location"
msgstr "La tua località"
@@ -2811,9 +2190,9 @@ msgstr "la tua località"
msgid "Toggle voting"
msgstr "Abilita/disabilita il voto"
-#: ../../include/conversation.php:1212 ../../mod/editpost.php:119
-#: ../../mod/editlayout.php:146 ../../mod/editwebpage.php:191
-#: ../../mod/editblock.php:148
+#: ../../include/conversation.php:1212 ../../mod/editblock.php:148
+#: ../../mod/editlayout.php:146 ../../mod/editpost.php:119
+#: ../../mod/editwebpage.php:191
msgid "Clear browser location"
msgstr "Rimuovi la località data dal browser"
@@ -2821,20 +2200,20 @@ msgstr "Rimuovi la località data dal browser"
msgid "clear location"
msgstr "rimuovi la località"
-#: ../../include/conversation.php:1215 ../../mod/editpost.php:135
-#: ../../mod/editwebpage.php:207 ../../mod/editblock.php:161
+#: ../../include/conversation.php:1215 ../../mod/editblock.php:161
+#: ../../mod/editpost.php:135 ../../mod/editwebpage.php:207
msgid "Title (optional)"
msgstr "Titolo (opzionale)"
-#: ../../include/conversation.php:1219 ../../mod/editpost.php:137
-#: ../../mod/editlayout.php:162 ../../mod/editwebpage.php:209
-#: ../../mod/editblock.php:164
+#: ../../include/conversation.php:1219 ../../mod/editblock.php:164
+#: ../../mod/editlayout.php:162 ../../mod/editpost.php:137
+#: ../../mod/editwebpage.php:209
msgid "Categories (optional, comma-separated list)"
msgstr "Categorie (lista separata da virgole)"
-#: ../../include/conversation.php:1221 ../../mod/editpost.php:124
-#: ../../mod/editlayout.php:148 ../../mod/editwebpage.php:193
-#: ../../mod/editblock.php:150
+#: ../../include/conversation.php:1221 ../../mod/editblock.php:150
+#: ../../mod/editlayout.php:148 ../../mod/editpost.php:124
+#: ../../mod/editwebpage.php:193
msgid "Permission settings"
msgstr "Impostazioni permessi"
@@ -2842,33 +2221,34 @@ msgstr "Impostazioni permessi"
msgid "permissions"
msgstr "permessi"
-#: ../../include/conversation.php:1230 ../../mod/editpost.php:132
-#: ../../mod/editlayout.php:155 ../../mod/editwebpage.php:202
-#: ../../mod/editblock.php:158
+#: ../../include/conversation.php:1230 ../../mod/editblock.php:158
+#: ../../mod/editlayout.php:155 ../../mod/editpost.php:132
+#: ../../mod/editwebpage.php:202
msgid "Public post"
msgstr "Post pubblico"
-#: ../../include/conversation.php:1232 ../../mod/editpost.php:138
-#: ../../mod/editlayout.php:163 ../../mod/editwebpage.php:210
-#: ../../mod/editblock.php:165
+#: ../../include/conversation.php:1232 ../../mod/editblock.php:165
+#: ../../mod/editlayout.php:163 ../../mod/editpost.php:138
+#: ../../mod/editwebpage.php:210
msgid "Example: bob@example.com, mary@example.com"
msgstr "Per esempio: mario@esempio.com, simona@esempio.com"
-#: ../../include/conversation.php:1245 ../../mod/editpost.php:149
-#: ../../mod/editlayout.php:172 ../../mod/editwebpage.php:219
-#: ../../mod/editblock.php:175 ../../mod/mail.php:245 ../../mod/mail.php:359
+#: ../../include/conversation.php:1245 ../../mod/mail.php:245
+#: ../../mod/mail.php:359 ../../mod/editblock.php:175
+#: ../../mod/editlayout.php:172 ../../mod/editpost.php:149
+#: ../../mod/editwebpage.php:219
msgid "Set expiration date"
msgstr "Data di scadenza"
-#: ../../include/conversation.php:1249 ../../mod/events.php:674
-#: ../../mod/editpost.php:153
+#: ../../include/conversation.php:1249 ../../mod/editpost.php:153
+#: ../../mod/events.php:674
msgid "OK"
msgstr "OK"
-#: ../../include/conversation.php:1250 ../../mod/tagrm.php:11
-#: ../../mod/tagrm.php:134 ../../mod/events.php:673 ../../mod/fbrowser.php:82
-#: ../../mod/fbrowser.php:117 ../../mod/editpost.php:154
-#: ../../mod/settings.php:589 ../../mod/settings.php:615
+#: ../../include/conversation.php:1250 ../../mod/editpost.php:154
+#: ../../mod/events.php:673 ../../mod/fbrowser.php:82
+#: ../../mod/fbrowser.php:117 ../../mod/settings.php:589
+#: ../../mod/settings.php:615 ../../mod/tagrm.php:11 ../../mod/tagrm.php:134
msgid "Cancel"
msgstr "Annulla"
@@ -3003,290 +2383,653 @@ msgid_plural "Abstains"
msgstr[0] "Astenuto"
msgstr[1] "Astenuti"
-#: ../../include/items.php:413 ../../mod/like.php:273
-#: ../../mod/subthread.php:49 ../../mod/group.php:68 ../../mod/profperm.php:23
-#: ../../mod/bulksetclose.php:11 ../../index.php:392
-msgid "Permission denied"
-msgstr "Permesso negato"
+#: ../../include/datetime.php:48
+msgid "Miscellaneous"
+msgstr "Altro"
-#: ../../include/items.php:1101 ../../include/items.php:1147
-msgid "(Unknown)"
-msgstr "(Sconosciuto)"
+#: ../../include/datetime.php:132
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "AAAA-MM-GG oppure MM-GG"
-#: ../../include/items.php:1373
-msgid "Visible to anybody on the internet."
-msgstr "Visibile a chiunque su internet."
+#: ../../include/datetime.php:235 ../../mod/appman.php:91
+#: ../../mod/appman.php:92 ../../mod/events.php:672
+msgid "Required"
+msgstr "Obbligatorio"
-#: ../../include/items.php:1375
-msgid "Visible to you only."
-msgstr "Visibile solo a te."
+#: ../../include/datetime.php:262 ../../boot.php:2358
+msgid "never"
+msgstr "mai"
-#: ../../include/items.php:1377
-msgid "Visible to anybody in this network."
-msgstr "Visibile a tutti su questa rete."
+#: ../../include/datetime.php:268
+msgid "less than a second ago"
+msgstr "meno di un secondo fa"
-#: ../../include/items.php:1379
-msgid "Visible to anybody authenticated."
-msgstr "Visibile a chiunque sia autenticato."
+#: ../../include/datetime.php:271
+msgid "year"
+msgstr "anno"
-#: ../../include/items.php:1381
-#, php-format
-msgid "Visible to anybody on %s."
-msgstr "Visibile a tutti in %s."
+#: ../../include/datetime.php:271
+msgid "years"
+msgstr "anni"
-#: ../../include/items.php:1383
-msgid "Visible to all connections."
-msgstr "Visibile a tutti coloro che ti seguono."
+#: ../../include/datetime.php:272
+msgid "month"
+msgstr "mese"
-#: ../../include/items.php:1385
-msgid "Visible to approved connections."
-msgstr "Visibile ai contatti approvati."
+#: ../../include/datetime.php:272
+msgid "months"
+msgstr "mesi"
-#: ../../include/items.php:1387
-msgid "Visible to specific connections."
-msgstr "Visibile ad alcuni contatti scelti."
+#: ../../include/datetime.php:273
+msgid "week"
+msgstr "settimana"
-#: ../../include/items.php:4310 ../../mod/thing.php:74
-#: ../../mod/filestorage.php:27 ../../mod/viewsrc.php:20
-#: ../../mod/admin.php:167 ../../mod/admin.php:1025 ../../mod/admin.php:1225
-#: ../../mod/display.php:36
-msgid "Item not found."
-msgstr "Elemento non trovato."
+#: ../../include/datetime.php:273
+msgid "weeks"
+msgstr "settimane"
-#: ../../include/items.php:4383 ../../include/attach.php:137
-#: ../../include/attach.php:184 ../../include/attach.php:247
-#: ../../include/attach.php:261 ../../include/attach.php:305
-#: ../../include/attach.php:319 ../../include/attach.php:350
-#: ../../include/attach.php:546 ../../include/attach.php:618
-#: ../../include/chat.php:131 ../../include/photos.php:26
-#: ../../mod/profile.php:64 ../../mod/profile.php:72
-#: ../../mod/achievements.php:30 ../../mod/manage.php:6 ../../mod/api.php:26
-#: ../../mod/api.php:31 ../../mod/webpages.php:69 ../../mod/thing.php:269
-#: ../../mod/thing.php:284 ../../mod/thing.php:318
-#: ../../mod/profile_photo.php:264 ../../mod/profile_photo.php:277
-#: ../../mod/block.php:22 ../../mod/block.php:72 ../../mod/like.php:178
-#: ../../mod/events.php:249 ../../mod/group.php:9 ../../mod/item.php:206
-#: ../../mod/item.php:214 ../../mod/item.php:1005 ../../mod/network.php:12
-#: ../../mod/common.php:35 ../../mod/connections.php:29
-#: ../../mod/blocks.php:69 ../../mod/blocks.php:76 ../../mod/editpost.php:13
-#: ../../mod/photos.php:69 ../../mod/pdledit.php:21 ../../mod/authtest.php:13
-#: ../../mod/editlayout.php:63 ../../mod/editlayout.php:87
-#: ../../mod/chat.php:90 ../../mod/chat.php:95 ../../mod/mitem.php:111
-#: ../../mod/editwebpage.php:64 ../../mod/editwebpage.php:86
-#: ../../mod/editwebpage.php:101 ../../mod/editwebpage.php:125
-#: ../../mod/rate.php:110 ../../mod/editblock.php:65 ../../mod/invite.php:13
-#: ../../mod/invite.php:104 ../../mod/locs.php:77 ../../mod/sources.php:66
-#: ../../mod/menu.php:72 ../../mod/filestorage.php:18
-#: ../../mod/filestorage.php:73 ../../mod/filestorage.php:88
-#: ../../mod/filestorage.php:115 ../../mod/fsuggest.php:78
-#: ../../mod/poke.php:128 ../../mod/profiles.php:188
-#: ../../mod/profiles.php:576 ../../mod/viewsrc.php:14 ../../mod/setup.php:223
-#: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27
-#: ../../mod/register.php:72 ../../mod/settings.php:570 ../../mod/id.php:71
-#: ../../mod/message.php:16 ../../mod/mood.php:111 ../../mod/connedit.php:348
-#: ../../mod/mail.php:114 ../../mod/notifications.php:66
-#: ../../mod/regmod.php:17 ../../mod/new_channel.php:68
-#: ../../mod/new_channel.php:99 ../../mod/appman.php:66
-#: ../../mod/layouts.php:69 ../../mod/layouts.php:76 ../../mod/layouts.php:87
-#: ../../mod/page.php:31 ../../mod/page.php:86 ../../mod/bookmarks.php:46
-#: ../../mod/channel.php:100 ../../mod/channel.php:219
-#: ../../mod/channel.php:262 ../../mod/suggest.php:26
-#: ../../mod/service_limits.php:7 ../../mod/sharedwithme.php:7
-#: ../../index.php:182 ../../index.php:393
-msgid "Permission denied."
-msgstr "Permesso negato."
+#: ../../include/datetime.php:274
+msgid "day"
+msgstr "giorno"
-#: ../../include/items.php:4787 ../../mod/group.php:38 ../../mod/group.php:140
-#: ../../mod/bulksetclose.php:51
-msgid "Collection not found."
-msgstr "Insieme di canali non trovato."
+#: ../../include/datetime.php:274
+msgid "days"
+msgstr "giorni"
-#: ../../include/items.php:4803
-msgid "Collection is empty."
-msgstr "L'insieme di canali è vuoto."
+#: ../../include/datetime.php:275
+msgid "hour"
+msgstr "ora"
-#: ../../include/items.php:4810
+#: ../../include/datetime.php:275
+msgid "hours"
+msgstr "ore"
+
+#: ../../include/datetime.php:276
+msgid "minute"
+msgstr "minuto"
+
+#: ../../include/datetime.php:276
+msgid "minutes"
+msgstr "minuti"
+
+#: ../../include/datetime.php:277
+msgid "second"
+msgstr "secondo"
+
+#: ../../include/datetime.php:277
+msgid "seconds"
+msgstr "secondi"
+
+#: ../../include/datetime.php:285
#, php-format
-msgid "Collection: %s"
-msgstr "Insieme: %s"
+msgctxt "e.g. 22 hours ago, 1 minute ago"
+msgid "%1$d %2$s ago"
+msgstr "%1$d %2$s fa"
-#: ../../include/items.php:4820 ../../mod/connedit.php:674
+#: ../../include/datetime.php:519
#, php-format
-msgid "Connection: %s"
-msgstr "Contatto: %s"
+msgid "%1$s's birthday"
+msgstr "Compleanno di %1$s"
-#: ../../include/items.php:4822
-msgid "Connection not found."
-msgstr "Contatto non trovato."
+#: ../../include/datetime.php:520
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Buon compleanno %1$s"
-#: ../../include/zot.php:684
-msgid "Invalid data packet"
-msgstr "Dati non validi"
+#: ../../include/diaspora.php:2498
+msgid "Please choose"
+msgstr "La tua scelta"
-#: ../../include/zot.php:700
-msgid "Unable to verify channel signature"
-msgstr "Impossibile verificare la firma elettronica del canale"
+#: ../../include/diaspora.php:2500
+msgid "Agree"
+msgstr "Sono d'accordo"
+
+#: ../../include/diaspora.php:2502
+msgid "Disagree"
+msgstr "Non sono d'accordo"
+
+#: ../../include/diaspora.php:2504
+msgid "Abstain"
+msgstr "Mi astengo"
-#: ../../include/zot.php:2208
+#: ../../include/dimport.php:34 ../../include/identity.php:217
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "Il nome dell'account è già in uso oppure ha dei caratteri non supportati."
+
+#: ../../include/dir_fns.php:126
+msgid "Directory Options"
+msgstr "Opzioni elenco pubblico"
+
+#: ../../include/dir_fns.php:128
+msgid "Safe Mode"
+msgstr "Modalità SafeSearch"
+
+#: ../../include/dir_fns.php:128 ../../include/dir_fns.php:129
+#: ../../include/dir_fns.php:130 ../../mod/admin.php:428 ../../mod/api.php:106
+#: ../../mod/photos.php:568 ../../mod/connedit.php:647
+#: ../../mod/connedit.php:675 ../../mod/filestorage.php:151
+#: ../../mod/filestorage.php:159 ../../mod/removeme.php:60
+#: ../../mod/settings.php:579 ../../mod/menu.php:94 ../../mod/menu.php:151
+#: ../../mod/mitem.php:159 ../../mod/mitem.php:160 ../../mod/mitem.php:232
+#: ../../mod/mitem.php:233 ../../view/theme/redbasic/php/config.php:104
+#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1555
+msgid "No"
+msgstr "No"
+
+#: ../../include/dir_fns.php:128 ../../include/dir_fns.php:129
+#: ../../include/dir_fns.php:130 ../../mod/admin.php:430 ../../mod/api.php:105
+#: ../../mod/photos.php:568 ../../mod/filestorage.php:151
+#: ../../mod/filestorage.php:159 ../../mod/removeme.php:60
+#: ../../mod/settings.php:579 ../../mod/menu.php:94 ../../mod/menu.php:151
+#: ../../mod/mitem.php:159 ../../mod/mitem.php:160 ../../mod/mitem.php:232
+#: ../../mod/mitem.php:233 ../../view/theme/redbasic/php/config.php:104
+#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1555
+msgid "Yes"
+msgstr "Si"
+
+#: ../../include/dir_fns.php:129
+msgid "Public Forums Only"
+msgstr "Solo forum pubblici"
+
+#: ../../include/dir_fns.php:130
+msgid "This Website Only"
+msgstr "Solo in questo sito"
+
+#: ../../include/enotify.php:96
#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Impossibile verificare la firma elettronica del sito %s"
+msgid "%s <!item_type!>"
+msgstr "%s <!item_type!>"
-#: ../../include/oembed.php:183
-msgid "Embedded content"
-msgstr "Contenuti incorporati"
+#: ../../include/enotify.php:100
+#, php-format
+msgid "[Red:Notify] New mail received at %s"
+msgstr "[RedMatrix] Nuovo messaggio su %s"
-#: ../../include/oembed.php:192
-msgid "Embedding disabled"
-msgstr "Disabilita la creazione di contenuti incorporati"
+#: ../../include/enotify.php:102
+#, php-format
+msgid "%1$s, %2$s sent you a new private message at %3$s."
+msgstr "%1$s, %2$s ti ha mandato un messaggio privato su %3$s."
-#: ../../include/auth.php:131
-msgid "Logged out."
-msgstr "Uscita effettuata."
+#: ../../include/enotify.php:103
+#, php-format
+msgid "%1$s sent you %2$s."
+msgstr "%1$s ti ha mandato %2$s."
-#: ../../include/auth.php:272
-msgid "Failed authentication"
-msgstr "Autenticazione fallita"
+#: ../../include/enotify.php:103
+msgid "a private message"
+msgstr "un messaggio privato"
-#: ../../include/auth.php:286 ../../mod/openid.php:190
-msgid "Login failed."
-msgstr "Accesso fallito."
+#: ../../include/enotify.php:104
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
+msgstr "Visita %s per leggere i tuoi messaggi privati e rispondere."
-#: ../../include/contact_widgets.php:14
+#: ../../include/enotify.php:158
#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "%d invito disponibile"
-msgstr[1] "%d inviti disponibili"
+msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
+msgstr "%1$s, %2$s ha commentato [zrl=%3$s]%4$s[/zrl]"
-#: ../../include/contact_widgets.php:19 ../../mod/admin.php:457
-msgid "Advanced"
-msgstr "Avanzate"
+#: ../../include/enotify.php:166
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
+msgstr "%1$s, %2$s ha commentato [zrl=%3$s]%5$s di %4$s[/zrl]"
-#: ../../include/contact_widgets.php:22
-msgid "Find Channels"
-msgstr "Ricerca canali"
+#: ../../include/enotify.php:175
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
+msgstr "%1$s, %2$s ha commentato [zrl=%3$s]%4$s che hai creato[/zrl]"
-#: ../../include/contact_widgets.php:23
-msgid "Enter name or interest"
-msgstr "Scrivi un nome o un interesse"
+#: ../../include/enotify.php:186
+#, php-format
+msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
+msgstr "[RedMatrix] Nuovo commento di %2$s alla conversazione #%1$d"
-#: ../../include/contact_widgets.php:24
-msgid "Connect/Follow"
-msgstr "Aggiungi"
+#: ../../include/enotify.php:187
+#, php-format
+msgid "%1$s, %2$s commented on an item/conversation you have been following."
+msgstr "%1$s, %2$s ha commentato un elemento che stavi seguendo."
-#: ../../include/contact_widgets.php:25
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Per esempio: Mario Rossi, Pesca"
+#: ../../include/enotify.php:190 ../../include/enotify.php:205
+#: ../../include/enotify.php:231 ../../include/enotify.php:249
+#: ../../include/enotify.php:263
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
+msgstr "Visita %s per leggere o commentare la conversazione."
-#: ../../include/contact_widgets.php:26 ../../mod/directory.php:379
-#: ../../mod/directory.php:384 ../../mod/connections.php:273
-msgid "Find"
-msgstr "Cerca"
+#: ../../include/enotify.php:196
+#, php-format
+msgid "[Red:Notify] %s posted to your profile wall"
+msgstr "[RedMatrix] %s ha scritto sulla tua bacheca"
-#: ../../include/contact_widgets.php:27 ../../mod/directory.php:383
-#: ../../mod/suggest.php:60
-msgid "Channel Suggestions"
-msgstr "Canali suggeriti"
+#: ../../include/enotify.php:198
+#, php-format
+msgid "%1$s, %2$s posted to your profile wall at %3$s"
+msgstr "%1$s, %2$s ha scritto sulla bacheca del tuo profilo su %3$s"
-#: ../../include/contact_widgets.php:29
-msgid "Random Profile"
-msgstr "Profilo casuale"
+#: ../../include/enotify.php:200
+#, php-format
+msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
+msgstr "%1$s, %2$s ha scritto sulla [zrl=%3$s]tua bacheca[/zrl]"
-#: ../../include/contact_widgets.php:30
-msgid "Invite Friends"
-msgstr "Invita amici"
+#: ../../include/enotify.php:224
+#, php-format
+msgid "[Red:Notify] %s tagged you"
+msgstr "[RedMatrix] %s ti ha taggato"
-#: ../../include/contact_widgets.php:32
-msgid "Advanced example: name=fred and country=iceland"
-msgstr "Per esempio: name=mario e country=italy"
+#: ../../include/enotify.php:225
+#, php-format
+msgid "%1$s, %2$s tagged you at %3$s"
+msgstr "%1$s, %2$s ti ha taggato su %3$s"
-#: ../../include/contact_widgets.php:125
+#: ../../include/enotify.php:226
#, php-format
-msgid "%d connection in common"
-msgid_plural "%d connections in common"
-msgstr[0] "%d contatto in comune"
-msgstr[1] "%d contatti in comune"
+msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%3$s]ti ha taggato[/zrl]."
-#: ../../include/contact_widgets.php:130
-msgid "show more"
-msgstr "mostra tutto"
+#: ../../include/enotify.php:238
+#, php-format
+msgid "[Red:Notify] %1$s poked you"
+msgstr "[RedMatrix] %1$s ti ha mandato un poke"
-#: ../../include/acl_selectors.php:240
-msgid "Visible to your default audience"
-msgstr "Visibile secondo le impostazioni predefinite"
+#: ../../include/enotify.php:239
+#, php-format
+msgid "%1$s, %2$s poked you at %3$s"
+msgstr "%1$s, %2$s ti ha mandato un poke su %3$s"
-#: ../../include/acl_selectors.php:241
-msgid "Show"
-msgstr "Mostra"
+#: ../../include/enotify.php:240
+#, php-format
+msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%2$s]ti ha mandato un poke[/zrl]."
-#: ../../include/acl_selectors.php:242
-msgid "Don't show"
-msgstr "Non mostrare"
+#: ../../include/enotify.php:256
+#, php-format
+msgid "[Red:Notify] %s tagged your post"
+msgstr "[RedMatrix] %s ha taggato il tuo post"
-#: ../../include/acl_selectors.php:248 ../../mod/events.php:691
-#: ../../mod/photos.php:571 ../../mod/photos.php:934 ../../mod/chat.php:209
-#: ../../mod/filestorage.php:147
-msgid "Permissions"
-msgstr "Permessi"
+#: ../../include/enotify.php:257
+#, php-format
+msgid "%1$s, %2$s tagged your post at %3$s"
+msgstr "%1$s, %2$s ha taggato il tuo post su %3$s"
-#: ../../include/attach.php:242 ../../include/attach.php:300
-msgid "Item was not found."
-msgstr "Elemento non trovato."
+#: ../../include/enotify.php:258
+#, php-format
+msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+msgstr "%1$s, %2$s ha taggato [zrl=%3$s]il tuo post[/zrl]"
-#: ../../include/attach.php:363
-msgid "No source file."
-msgstr "Nessun file di origine."
+#: ../../include/enotify.php:270
+msgid "[Red:Notify] Introduction received"
+msgstr "[RedMatrix] Hai una richiesta di amicizia"
-#: ../../include/attach.php:381
-msgid "Cannot locate file to replace"
-msgstr "Il file da sostituire non è stato trovato"
+#: ../../include/enotify.php:271
+#, php-format
+msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
+msgstr "%1$s, hai ricevuto una richiesta di entrare in contatto da '%2$s' su %3$s"
-#: ../../include/attach.php:399
-msgid "Cannot locate file to revise/update"
-msgstr "Il file da aggiornare non è stato trovato"
+#: ../../include/enotify.php:272
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
+msgstr "%1$s, hai ricevuto una [zrl=%2$s]richiesta di entrare in contatto[/zrl] da %3$s."
-#: ../../include/attach.php:410
+#: ../../include/enotify.php:276 ../../include/enotify.php:295
#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "Il file supera la dimensione massima di %d"
+msgid "You may visit their profile at %s"
+msgstr "Puoi visitare il suo profilo su %s"
-#: ../../include/attach.php:422
+#: ../../include/enotify.php:278
#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
-msgstr "Hai raggiunto il limite complessivo di %1$.0f Mbytes per gli allegati."
+msgid "Please visit %s to approve or reject the connection request."
+msgstr "Visita %s per approvare o rifiutare la richiesta di entrare in contatto."
-#: ../../include/attach.php:505
-msgid "File upload failed. Possible system limit or action terminated."
-msgstr "Caricamento file fallito, potrebbe essere stato interrotto o potrebbe aver superato lo spazio assegnato."
+#: ../../include/enotify.php:285
+msgid "[Red:Notify] Friend suggestion received"
+msgstr "[RedMatrix] Ti è stato suggerito un amico"
-#: ../../include/attach.php:517
-msgid "Stored file could not be verified. Upload failed."
-msgstr "Il file non può essere verificato. Caricamento fallito."
+#: ../../include/enotify.php:286
+#, php-format
+msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
+msgstr "%1$s, ti è stato suggerito un amico da '%2$s' su %3$s"
-#: ../../include/attach.php:561 ../../include/attach.php:578
-msgid "Path not available."
-msgstr "Percorso non disponibile."
+#: ../../include/enotify.php:287
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
+"%4$s."
+msgstr "%1$s, %4$s ti [zrl=%2$s]ha suggerito %3$s[/zrl] come amico."
-#: ../../include/attach.php:623
-msgid "Empty pathname"
-msgstr "Il percorso del file è vuoto"
+#: ../../include/enotify.php:293
+msgid "Name:"
+msgstr "Nome:"
-#: ../../include/attach.php:639
-msgid "duplicate filename or path"
-msgstr "il file o il percorso del file è duplicato"
+#: ../../include/enotify.php:294
+msgid "Photo:"
+msgstr "Foto:"
-#: ../../include/attach.php:663
-msgid "Path not found."
-msgstr "Percorso del file non trovato."
+#: ../../include/enotify.php:297
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
+msgstr "Visita %s per approvare o rifiutare il suggerimento."
-#: ../../include/attach.php:714
-msgid "mkdir failed."
-msgstr "mkdir fallito."
+#: ../../include/enotify.php:508
+msgid "[Red:Notify]"
+msgstr "[RedMatrix]"
-#: ../../include/attach.php:718
-msgid "database storage failed."
-msgstr "scrittura su database fallita."
+#: ../../include/event.php:549
+msgid "This event has been added to your calendar."
+msgstr "Questo evento è stato aggiunto al tuo calendario"
+
+#: ../../include/features.php:38
+msgid "General Features"
+msgstr "Funzionalità di base"
+
+#: ../../include/features.php:40
+msgid "Content Expiration"
+msgstr "Scadenza"
+
+#: ../../include/features.php:40
+msgid "Remove posts/comments and/or private messages at a future time"
+msgstr "Elimina i post, i commenti o i messaggi privati dopo un lasso di tempo"
+
+#: ../../include/features.php:41
+msgid "Multiple Profiles"
+msgstr "Profili multipli"
+
+#: ../../include/features.php:41
+msgid "Ability to create multiple profiles"
+msgstr "Abilitazione a creare profili multipli"
+
+#: ../../include/features.php:42
+msgid "Advanced Profiles"
+msgstr "Profili avanzati"
+
+#: ../../include/features.php:42
+msgid "Additional profile sections and selections"
+msgstr "Informazioni aggiuntive del profilo"
+
+#: ../../include/features.php:43
+msgid "Profile Import/Export"
+msgstr "Importa/esporta il profilo"
+
+#: ../../include/features.php:43
+msgid "Save and load profile details across sites/channels"
+msgstr "Salva o ripristina le informazioni del profilo su canali o siti diversi"
+
+#: ../../include/features.php:44
+msgid "Web Pages"
+msgstr "Pagine web"
+
+#: ../../include/features.php:44
+msgid "Provide managed web pages on your channel"
+msgstr "Attiva la creazione di pagine web sul tuo canale"
+
+#: ../../include/features.php:45
+msgid "Private Notes"
+msgstr "Note private"
+
+#: ../../include/features.php:45
+msgid "Enables a tool to store notes and reminders"
+msgstr "Abilita il riquadro per scrivere annotazioni"
+
+#: ../../include/features.php:46
+msgid "Navigation Channel Select"
+msgstr "Scegli il canale attivo dal menu"
+
+#: ../../include/features.php:46
+msgid "Change channels directly from within the navigation dropdown menu"
+msgstr "Scegli il canale attivo direttamente dal menu di navigazione"
+
+#: ../../include/features.php:47
+msgid "Photo Location"
+msgstr "Posizione geografica"
+
+#: ../../include/features.php:47
+msgid "If location data is available on uploaded photos, link this to a map."
+msgstr "Collega la foto a una mappa quando contiene indicazioni geografiche."
+
+#: ../../include/features.php:49
+msgid "Expert Mode"
+msgstr "Modalità esperto"
+
+#: ../../include/features.php:49
+msgid "Enable Expert Mode to provide advanced configuration options"
+msgstr "Abilita la modalità esperto per vedere le opzioni di configurazione avanzate"
+
+#: ../../include/features.php:50
+msgid "Premium Channel"
+msgstr "Canale premium"
+
+#: ../../include/features.php:50
+msgid ""
+"Allows you to set restrictions and terms on those that connect with your "
+"channel"
+msgstr "Ti permette di impostare delle restrizioni e dei termini d'uso a chi segue il canale"
+
+#: ../../include/features.php:55
+msgid "Post Composition Features"
+msgstr "Modalità di scrittura post"
+
+#: ../../include/features.php:57
+msgid "Use Markdown"
+msgstr "Usa il markdown"
+
+#: ../../include/features.php:57
+msgid "Allow use of \"Markdown\" to format posts"
+msgstr "Consenti l'uso del markdown per formattare i post"
+
+#: ../../include/features.php:58
+msgid "Large Photos"
+msgstr "Foto grandi"
+
+#: ../../include/features.php:58
+msgid ""
+"Include large (640px) photo thumbnails in posts. If not enabled, use small "
+"(320px) photo thumbnails"
+msgstr "Includi anteprime grandi delle foto nei post (640px). Se disabilitato le anteprime saranno piccole (320px)"
+
+#: ../../include/features.php:59
+msgid "Automatically import channel content from other channels or feeds"
+msgstr "Importa automaticamente il contenuto del canale da altri canali o feed"
+
+#: ../../include/features.php:60
+msgid "Even More Encryption"
+msgstr "Crittografia addizionale"
+
+#: ../../include/features.php:60
+msgid ""
+"Allow optional encryption of content end-to-end with a shared secret key"
+msgstr "Rendi possibile la crittografia tra mittente e destinatario che condividono una chiave segreta"
+
+#: ../../include/features.php:61
+msgid "Enable voting tools"
+msgstr "Permetti i post con votazione"
+
+#: ../../include/features.php:61
+msgid "Provide a class of post which others can vote on"
+msgstr "Rende possibile la creazione di post in cui sarà possibile votare"
+
+#: ../../include/features.php:67
+msgid "Network and Stream Filtering"
+msgstr "Filtraggio dei contenuti"
+
+#: ../../include/features.php:68
+msgid "Search by Date"
+msgstr "Ricerca per data"
+
+#: ../../include/features.php:68
+msgid "Ability to select posts by date ranges"
+msgstr "Per selezionare i post in un intervallo tra date"
+
+#: ../../include/features.php:69
+msgid "Collections Filter"
+msgstr "Filtra per insiemi di canali"
+
+#: ../../include/features.php:69
+msgid "Enable widget to display Network posts only from selected collections"
+msgstr "Mostra il riquadro per filtrare i post di certi insiemi di canali"
+
+#: ../../include/features.php:70
+msgid "Save search terms for re-use"
+msgstr "Salva i termini delle ricerche per poterle ripetere"
+
+#: ../../include/features.php:71
+msgid "Network Personal Tab"
+msgstr "Attività personale"
+
+#: ../../include/features.php:71
+msgid "Enable tab to display only Network posts that you've interacted on"
+msgstr "Abilita il link per mostrare solamente i contenuti con cui hai interagito"
+
+#: ../../include/features.php:72
+msgid "Network New Tab"
+msgstr "Contenuti nuovi"
+
+#: ../../include/features.php:72
+msgid "Enable tab to display all new Network activity"
+msgstr "Abilita il link per visualizzare solo i nuovi contenuti"
+
+#: ../../include/features.php:73
+msgid "Affinity Tool"
+msgstr "Filtro per affinità"
+
+#: ../../include/features.php:73
+msgid "Filter stream activity by depth of relationships"
+msgstr "Permette di selezionare i contenuti in base al livello di amicizia"
+
+#: ../../include/features.php:74
+msgid "Connection Filtering"
+msgstr "Filtro sui contatti"
+
+#: ../../include/features.php:74
+msgid "Filter incoming posts from connections based on keywords/content"
+msgstr "Filtra con delle parole chiave i post che ricevi"
+
+#: ../../include/features.php:75
+msgid "Suggest Channels"
+msgstr "Suggerisci canali"
+
+#: ../../include/features.php:75
+msgid "Show channel suggestions"
+msgstr "Mostra alcuni canali che potrebbero interessarti"
+
+#: ../../include/features.php:80
+msgid "Post/Comment Tools"
+msgstr "Gestione post e commenti"
+
+#: ../../include/features.php:81
+msgid "Tagging"
+msgstr "Tag"
+
+#: ../../include/features.php:81
+msgid "Ability to tag existing posts"
+msgstr "Permetti l'aggiunta di tag su post già esistenti"
+
+#: ../../include/features.php:82
+msgid "Post Categories"
+msgstr "Categorie dei post"
+
+#: ../../include/features.php:82
+msgid "Add categories to your posts"
+msgstr "Abilita le categorie per i tuoi post"
+
+#: ../../include/features.php:83
+msgid "Ability to file posts under folders"
+msgstr "Abilita la raccolta dei tuoi articoli in post"
+
+#: ../../include/features.php:84
+msgid "Dislike Posts"
+msgstr "Non mi piace"
+
+#: ../../include/features.php:84
+msgid "Ability to dislike posts/comments"
+msgstr "Abilità la funzionalità \"non mi piace\" per i tuoi post"
+
+#: ../../include/features.php:85
+msgid "Star Posts"
+msgstr "Post con stella"
+
+#: ../../include/features.php:85
+msgid "Ability to mark special posts with a star indicator"
+msgstr "Mostra la stella per segnare i post preferiti"
+
+#: ../../include/features.php:86
+msgid "Tag Cloud"
+msgstr "Nuvola di tag"
+
+#: ../../include/features.php:86
+msgid "Provide a personal tag cloud on your channel page"
+msgstr "Mostra la nuvola dei tag che usi di più sulla pagina del tuo canale"
+
+#: ../../include/follow.php:28
+msgid "Channel is blocked on this site."
+msgstr "Il canale è bloccato per questo sito."
+
+#: ../../include/follow.php:33
+msgid "Channel location missing."
+msgstr "Manca l'indirizzo del canale."
+
+#: ../../include/follow.php:83
+msgid "Response from remote channel was incomplete."
+msgstr "La risposta dal canale non è completa."
+
+#: ../../include/follow.php:100
+msgid "Channel was deleted and no longer exists."
+msgstr "Il canale è stato rimosso e non esiste più."
+
+#: ../../include/follow.php:135 ../../include/follow.php:206
+msgid "Protocol disabled."
+msgstr "Protocollo disabilitato."
+
+#: ../../include/follow.php:144
+msgid "Protocol blocked for this channel."
+msgstr "Protocollo bloccato per questo canale."
+
+#: ../../include/follow.php:179
+msgid "Channel discovery failed."
+msgstr "La ricerca del canale non ha avuto successo."
+
+#: ../../include/follow.php:195
+msgid "local account not found."
+msgstr "l'account locale non è stato trovato."
+
+#: ../../include/follow.php:224
+msgid "Cannot connect to yourself."
+msgstr "Non puoi connetterti a te stesso."
+
+#: ../../include/group.php:26
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
+msgstr "È stato ripristinato un insieme con lo stesso nome che era stato eliminato in precedenza. I permessi già presenti <strong>potrebbero</strong> rimanere validi per i nuovi canali. Se non vuoi che ciò accada, devi creare un altro insieme con un nome diverso."
+
+#: ../../include/group.php:235
+msgid "Default privacy group for new contacts"
+msgstr "Insieme predefinito per i canali che inizi a seguire"
+
+#: ../../include/group.php:254 ../../mod/admin.php:831
+msgid "All Channels"
+msgstr "Tutti i canali"
+
+#: ../../include/group.php:276
+msgid "edit"
+msgstr "modifica"
+
+#: ../../include/group.php:298
+msgid "Collections"
+msgstr "Insiemi di canali"
+
+#: ../../include/group.php:299
+msgid "Edit collection"
+msgstr "Modifica l'insieme di canali"
+
+#: ../../include/group.php:300
+msgid "Add new collection"
+msgstr "Nuovo insieme"
+
+#: ../../include/group.php:301
+msgid "Channels not in any collection"
+msgstr "Canali che non sono in un insieme"
#: ../../include/identity.php:33
msgid "Unable to obtain identity information from database"
@@ -3312,11 +3055,6 @@ msgstr "Il nome dell'account è obbligatorio."
msgid "Reserved nickname. Please choose another."
msgstr "Nome utente riservato. Per favore scegline un altro."
-#: ../../include/identity.php:217 ../../include/dimport.php:34
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "Il nome dell'account è già in uso oppure ha dei caratteri non supportati."
-
#: ../../include/identity.php:292
msgid "Unable to retrieve created identity"
msgstr "Impossibile caricare l'identità creata"
@@ -3329,12 +3067,11 @@ msgstr "Profilo predefinito"
msgid "Requested channel is not available."
msgstr "Il canale che cerchi non è disponibile."
-#: ../../include/identity.php:806 ../../mod/profile.php:16
-#: ../../mod/achievements.php:11 ../../mod/webpages.php:29
-#: ../../mod/connect.php:13 ../../mod/hcard.php:8 ../../mod/blocks.php:29
-#: ../../mod/editlayout.php:27 ../../mod/editwebpage.php:28
-#: ../../mod/editblock.php:29 ../../mod/filestorage.php:54
-#: ../../mod/layouts.php:29
+#: ../../include/identity.php:806 ../../mod/achievements.php:11
+#: ../../mod/blocks.php:29 ../../mod/profile.php:16 ../../mod/connect.php:13
+#: ../../mod/editblock.php:29 ../../mod/editlayout.php:27
+#: ../../mod/editwebpage.php:28 ../../mod/filestorage.php:54
+#: ../../mod/hcard.php:8 ../../mod/layouts.php:29 ../../mod/webpages.php:29
msgid "Requested profile is not available."
msgstr "Il profilo richiesto non è disponibile."
@@ -3417,11 +3154,6 @@ msgstr "Promemoria"
msgid "Events this week:"
msgstr "Eventi di questa settimana:"
-#: ../../include/identity.php:1240 ../../include/identity.php:1357
-#: ../../include/apps.php:138 ../../mod/profperm.php:112
-msgid "Profile"
-msgstr "Profilo"
-
#: ../../include/identity.php:1248 ../../mod/settings.php:1056
msgid "Full Name:"
msgstr "Nome completo:"
@@ -3455,8 +3187,8 @@ msgstr "per %1$d %2$s"
msgid "Sexual Preference:"
msgstr "Preferenze sessuali:"
-#: ../../include/identity.php:1307 ../../mod/directory.php:313
-#: ../../mod/profiles.php:693
+#: ../../include/identity.php:1307 ../../mod/profiles.php:693
+#: ../../mod/directory.php:313
msgid "Hometown:"
msgstr "Città dove vivo:"
@@ -3528,6 +3260,443 @@ msgstr "Scuola:"
msgid "Like this thing"
msgstr "Mi piace questo Oggetto"
+#: ../../include/items.php:413 ../../mod/bulksetclose.php:11
+#: ../../mod/profperm.php:23 ../../mod/group.php:68 ../../mod/like.php:273
+#: ../../mod/subthread.php:49 ../../index.php:396
+msgid "Permission denied"
+msgstr "Permesso negato"
+
+#: ../../include/items.php:1101 ../../include/items.php:1147
+msgid "(Unknown)"
+msgstr "(Sconosciuto)"
+
+#: ../../include/items.php:1373
+msgid "Visible to anybody on the internet."
+msgstr "Visibile a chiunque su internet."
+
+#: ../../include/items.php:1375
+msgid "Visible to you only."
+msgstr "Visibile solo a te."
+
+#: ../../include/items.php:1377
+msgid "Visible to anybody in this network."
+msgstr "Visibile a tutti su questa rete."
+
+#: ../../include/items.php:1379
+msgid "Visible to anybody authenticated."
+msgstr "Visibile a chiunque sia autenticato."
+
+#: ../../include/items.php:1381
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Visibile a tutti in %s."
+
+#: ../../include/items.php:1383
+msgid "Visible to all connections."
+msgstr "Visibile a tutti coloro che ti seguono."
+
+#: ../../include/items.php:1385
+msgid "Visible to approved connections."
+msgstr "Visibile ai contatti approvati."
+
+#: ../../include/items.php:1387
+msgid "Visible to specific connections."
+msgstr "Visibile ad alcuni contatti scelti."
+
+#: ../../include/items.php:4310 ../../mod/admin.php:167
+#: ../../mod/admin.php:1025 ../../mod/admin.php:1225 ../../mod/display.php:36
+#: ../../mod/filestorage.php:27 ../../mod/thing.php:74
+#: ../../mod/viewsrc.php:20
+msgid "Item not found."
+msgstr "Elemento non trovato."
+
+#: ../../include/items.php:4787 ../../mod/bulksetclose.php:51
+#: ../../mod/group.php:38 ../../mod/group.php:140
+msgid "Collection not found."
+msgstr "Insieme di canali non trovato."
+
+#: ../../include/items.php:4803
+msgid "Collection is empty."
+msgstr "L'insieme di canali è vuoto."
+
+#: ../../include/items.php:4810
+#, php-format
+msgid "Collection: %s"
+msgstr "Insieme: %s"
+
+#: ../../include/items.php:4820 ../../mod/connedit.php:674
+#, php-format
+msgid "Connection: %s"
+msgstr "Contatto: %s"
+
+#: ../../include/items.php:4822
+msgid "Connection not found."
+msgstr "Contatto non trovato."
+
+#: ../../include/js_strings.php:5
+msgid "Delete this item?"
+msgstr "Eliminare questo elemento?"
+
+#: ../../include/js_strings.php:8
+msgid "[-] show less"
+msgstr "[-] riduci"
+
+#: ../../include/js_strings.php:9
+msgid "[+] expand"
+msgstr "[+] mostra tutto"
+
+#: ../../include/js_strings.php:10
+msgid "[-] collapse"
+msgstr "[-] riduci"
+
+#: ../../include/js_strings.php:11
+msgid "Password too short"
+msgstr "Password troppo corta"
+
+#: ../../include/js_strings.php:12
+msgid "Passwords do not match"
+msgstr "Le password non corrispondono"
+
+#: ../../include/js_strings.php:13 ../../mod/photos.php:40
+msgid "everybody"
+msgstr "tutti"
+
+#: ../../include/js_strings.php:14
+msgid "Secret Passphrase"
+msgstr "Chiave segreta"
+
+#: ../../include/js_strings.php:15
+msgid "Passphrase hint"
+msgstr "Suggerimento per la chiave segreta"
+
+#: ../../include/js_strings.php:16
+msgid "Notice: Permissions have changed but have not yet been submitted."
+msgstr "Nota: i permessi sono stati modificati ma non ancora salvati."
+
+#: ../../include/js_strings.php:17
+msgid "close all"
+msgstr "chiudi tutto"
+
+#: ../../include/js_strings.php:18
+msgid "Nothing new here"
+msgstr "Niente di nuovo qui"
+
+#: ../../include/js_strings.php:19
+msgid "Rate This Channel (this is public)"
+msgstr "Valuta questo canale (visibile a tutti)"
+
+#: ../../include/js_strings.php:20 ../../mod/connedit.php:683
+#: ../../mod/rate.php:156
+msgid "Rating"
+msgstr "Valutazioni"
+
+#: ../../include/js_strings.php:21
+msgid "Describe (optional)"
+msgstr "Descrizione (facoltativa)"
+
+#: ../../include/js_strings.php:23
+msgid "Please enter a link URL"
+msgstr "Inserisci l'URL di un link"
+
+#: ../../include/js_strings.php:24
+msgid "Unsaved changes. Are you sure you wish to leave this page?"
+msgstr "Non hai salvato i cambiamenti. Vuoi davvero lasciare questa pagina?"
+
+#: ../../include/js_strings.php:26
+msgid "timeago.prefixAgo"
+msgstr "timeago.prefixAgo"
+
+#: ../../include/js_strings.php:27
+msgid "timeago.prefixFromNow"
+msgstr "timeago.prefixFromNow"
+
+#: ../../include/js_strings.php:28
+msgid "ago"
+msgstr "fa"
+
+#: ../../include/js_strings.php:29
+msgid "from now"
+msgstr "da adesso"
+
+#: ../../include/js_strings.php:30
+msgid "less than a minute"
+msgstr "meno di un minuto"
+
+#: ../../include/js_strings.php:31
+msgid "about a minute"
+msgstr "circa un minuto"
+
+#: ../../include/js_strings.php:32
+#, php-format
+msgid "%d minutes"
+msgstr "%d minuti"
+
+#: ../../include/js_strings.php:33
+msgid "about an hour"
+msgstr "circa un’ora"
+
+#: ../../include/js_strings.php:34
+#, php-format
+msgid "about %d hours"
+msgstr "circa %d ore"
+
+#: ../../include/js_strings.php:35
+msgid "a day"
+msgstr "un giorno"
+
+#: ../../include/js_strings.php:36
+#, php-format
+msgid "%d days"
+msgstr "%d giorni"
+
+#: ../../include/js_strings.php:37
+msgid "about a month"
+msgstr "circa un mese"
+
+#: ../../include/js_strings.php:38
+#, php-format
+msgid "%d months"
+msgstr "%d mesi"
+
+#: ../../include/js_strings.php:39
+msgid "about a year"
+msgstr "circa un anno"
+
+#: ../../include/js_strings.php:40
+#, php-format
+msgid "%d years"
+msgstr "%d anni"
+
+#: ../../include/js_strings.php:41
+msgid " "
+msgstr " "
+
+#: ../../include/js_strings.php:42
+msgid "timeago.numbers"
+msgstr "timeago.numbers"
+
+#: ../../include/page_widgets.php:6
+msgid "New Page"
+msgstr "Nuova pagina web"
+
+#: ../../include/page_widgets.php:39 ../../mod/blocks.php:159
+#: ../../mod/layouts.php:188 ../../mod/webpages.php:187
+msgid "View"
+msgstr "Guarda"
+
+#: ../../include/page_widgets.php:41 ../../mod/webpages.php:189
+msgid "Actions"
+msgstr "Azioni"
+
+#: ../../include/page_widgets.php:42 ../../mod/webpages.php:190
+msgid "Page Link"
+msgstr "Link alla pagina"
+
+#: ../../include/page_widgets.php:43
+msgid "Title"
+msgstr "Titolo"
+
+#: ../../include/page_widgets.php:44 ../../mod/blocks.php:150
+#: ../../mod/layouts.php:181 ../../mod/menu.php:108 ../../mod/webpages.php:192
+msgid "Created"
+msgstr "Creato"
+
+#: ../../include/page_widgets.php:45 ../../mod/blocks.php:151
+#: ../../mod/layouts.php:182 ../../mod/menu.php:109 ../../mod/webpages.php:193
+msgid "Edited"
+msgstr "Modificato"
+
+#: ../../include/permissions.php:26
+msgid "Can view my normal stream and posts"
+msgstr "Può vedere i miei contenuti e i post normali"
+
+#: ../../include/permissions.php:27
+msgid "Can view my default channel profile"
+msgstr "Può vedere il profilo predefinito del canale"
+
+#: ../../include/permissions.php:28
+msgid "Can view my photo albums"
+msgstr "Può vedere i miei album fotografici"
+
+#: ../../include/permissions.php:29
+msgid "Can view my connections"
+msgstr "Può vedere i miei contatti"
+
+#: ../../include/permissions.php:30
+msgid "Can view my file storage"
+msgstr "Può vedere i miei file condivisi"
+
+#: ../../include/permissions.php:31
+msgid "Can view my webpages"
+msgstr "Può vedere le mie pagine web"
+
+#: ../../include/permissions.php:34
+msgid "Can send me their channel stream and posts"
+msgstr "È tra i canali che seguo"
+
+#: ../../include/permissions.php:35
+msgid "Can post on my channel page (\"wall\")"
+msgstr "Può scrivere sulla bacheca del mio canale"
+
+#: ../../include/permissions.php:36
+msgid "Can comment on or like my posts"
+msgstr "Può commentare o aggiungere \"mi piace\" ai miei post"
+
+#: ../../include/permissions.php:37
+msgid "Can send me private mail messages"
+msgstr "Può inviarmi messaggi privati"
+
+#: ../../include/permissions.php:38
+msgid "Can post photos to my photo albums"
+msgstr "Può aggiungere foto ai miei album"
+
+#: ../../include/permissions.php:39
+msgid "Can like/dislike stuff"
+msgstr "Può aggiungere \"mi piace\""
+
+#: ../../include/permissions.php:39
+msgid "Profiles and things other than posts/comments"
+msgstr "Profili e tutto ciò che non è post o commenti"
+
+#: ../../include/permissions.php:41
+msgid "Can forward to all my channel contacts via post @mentions"
+msgstr "Può inoltrare post a tutti i contatti del canale tramite una @menzione"
+
+#: ../../include/permissions.php:41
+msgid "Advanced - useful for creating group forum channels"
+msgstr "Impostazione avanzata - utile per creare un canale-forum di discussione"
+
+#: ../../include/permissions.php:42
+msgid "Can chat with me (when available)"
+msgstr "Può aprire una chat con me (se disponibile)"
+
+#: ../../include/permissions.php:43
+msgid "Can write to my file storage"
+msgstr "Può scrivere sul mio archivio file"
+
+#: ../../include/permissions.php:44
+msgid "Can edit my webpages"
+msgstr "Può modificare le mie pagine web"
+
+#: ../../include/permissions.php:46
+msgid "Can source my public posts in derived channels"
+msgstr "Può usare i miei post pubblici per creare canali derivati"
+
+#: ../../include/permissions.php:46
+msgid "Somewhat advanced - very useful in open communities"
+msgstr "Piuttosto avanzato - molto utile nelle comunità aperte"
+
+#: ../../include/permissions.php:48
+msgid "Can administer my channel resources"
+msgstr "Può amministrare i contenuti del mio canale"
+
+#: ../../include/permissions.php:48
+msgid ""
+"Extremely advanced. Leave this alone unless you know what you are doing"
+msgstr "Impostazione pericolosa - lasciare il valore predefinito se non si è assolutamente sicuri"
+
+#: ../../include/permissions.php:893
+msgid "Social Networking"
+msgstr "Social network"
+
+#: ../../include/permissions.php:893 ../../include/permissions.php:894
+#: ../../include/permissions.php:895
+msgid "Mostly Public"
+msgstr "Prevalentemente pubblico"
+
+#: ../../include/permissions.php:893 ../../include/permissions.php:894
+#: ../../include/permissions.php:895
+msgid "Restricted"
+msgstr "Con restrizioni"
+
+#: ../../include/permissions.php:893 ../../include/permissions.php:894
+msgid "Private"
+msgstr "Privato"
+
+#: ../../include/permissions.php:894
+msgid "Community Forum"
+msgstr "Forum di discussione"
+
+#: ../../include/permissions.php:895
+msgid "Feed Republish"
+msgstr "Aggregatore di feed esterni"
+
+#: ../../include/permissions.php:896
+msgid "Special Purpose"
+msgstr "Per finalità speciali"
+
+#: ../../include/permissions.php:896
+msgid "Celebrity/Soapbox"
+msgstr "Pagina per fan"
+
+#: ../../include/permissions.php:896
+msgid "Group Repository"
+msgstr "Repository di gruppo"
+
+#: ../../include/permissions.php:897 ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:61
+#: ../../include/profile_selectors.php:97
+msgid "Other"
+msgstr "Altro"
+
+#: ../../include/permissions.php:897
+msgid "Custom/Expert Mode"
+msgstr "Personalizzazione per esperti"
+
+#: ../../include/photos.php:94
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "L'immagine supera il limite massimo di %lu bytes"
+
+#: ../../include/photos.php:101
+msgid "Image file is empty."
+msgstr "Il file dell'immagine è vuoto."
+
+#: ../../include/photos.php:128 ../../mod/profile_photo.php:217
+msgid "Unable to process image"
+msgstr "Impossibile elaborare l'immagine"
+
+#: ../../include/photos.php:199
+msgid "Photo storage failed."
+msgstr "Impossibile caricare la foto."
+
+#: ../../include/photos.php:363
+msgid "Upload New Photos"
+msgstr "Carica nuove foto"
+
+#: ../../include/taxonomy.php:222 ../../include/taxonomy.php:243
+msgid "Tags"
+msgstr "Tag"
+
+#: ../../include/taxonomy.php:287
+msgid "Keywords"
+msgstr "Parole chiave"
+
+#: ../../include/taxonomy.php:308
+msgid "have"
+msgstr "ho"
+
+#: ../../include/taxonomy.php:308
+msgid "has"
+msgstr "ha"
+
+#: ../../include/taxonomy.php:309
+msgid "want"
+msgstr "voglio"
+
+#: ../../include/taxonomy.php:309
+msgid "wants"
+msgstr "vuole"
+
+#: ../../include/taxonomy.php:310
+msgid "likes"
+msgstr "gli piace"
+
+#: ../../include/taxonomy.php:311
+msgid "dislikes"
+msgstr "non gli piace"
+
#: ../../include/profile_selectors.php:6
#: ../../include/profile_selectors.php:23 ../../mod/id.php:103
msgid "Male"
@@ -3764,1090 +3933,1013 @@ msgstr "Chi se ne frega"
msgid "Ask me"
msgstr "Chiedimelo"
-#: ../../include/apps.php:128
-msgid "Site Admin"
-msgstr "Amministrazione sito"
+#: ../../mod/mail.php:33
+msgid "Unable to lookup recipient."
+msgstr "Impossibile associare un destinatario."
-#: ../../include/apps.php:130
-msgid "Address Book"
-msgstr "Rubrica"
+#: ../../mod/mail.php:41
+msgid "Unable to communicate with requested channel."
+msgstr "Impossibile comunicare con il canale richiesto."
-#: ../../include/apps.php:144 ../../mod/mood.php:130
-msgid "Mood"
-msgstr "Umore"
+#: ../../mod/mail.php:48
+msgid "Cannot verify requested channel."
+msgstr "Impossibile verificare il canale richiesto."
-#: ../../include/apps.php:148
-msgid "Probe"
-msgstr "Diagnostica"
+#: ../../mod/mail.php:74
+msgid "Selected channel has private message restrictions. Send failed."
+msgstr "Il canale ha delle regole restrittive per la ricezione dei messaggi privati. Invio fallito."
-#: ../../include/apps.php:149
-msgid "Suggest"
-msgstr "Suggerisci"
+#: ../../mod/mail.php:139
+msgid "Message deleted."
+msgstr "Messaggio eliminato."
-#: ../../include/apps.php:150
-msgid "Random Channel"
-msgstr "Canale casuale"
+#: ../../mod/mail.php:156
+msgid "Message recalled."
+msgstr "Messaggio revocato."
-#: ../../include/apps.php:151
-msgid "Invite"
-msgstr "Invita"
+#: ../../mod/mail.php:225
+msgid "Send Private Message"
+msgstr "Invia un messaggio privato"
-#: ../../include/apps.php:152
-msgid "Features"
-msgstr "Funzionalità"
+#: ../../mod/mail.php:226 ../../mod/mail.php:343
+msgid "To:"
+msgstr "A:"
-#: ../../include/apps.php:153 ../../mod/id.php:28
-msgid "Language"
-msgstr "Lingua"
+#: ../../mod/mail.php:231 ../../mod/mail.php:345
+msgid "Subject:"
+msgstr "Oggetto:"
-#: ../../include/apps.php:154
-msgid "Post"
-msgstr "Post"
+#: ../../mod/mail.php:235 ../../mod/mail.php:348 ../../mod/invite.php:131
+msgid "Your message:"
+msgstr "Il tuo messaggio:"
-#: ../../include/apps.php:155 ../../mod/id.php:17 ../../mod/id.php:18
-#: ../../mod/id.php:19
-msgid "Profile Photo"
-msgstr "Foto del profilo"
+#: ../../mod/mail.php:242
+msgid "Send"
+msgstr "Invia"
-#: ../../include/apps.php:247 ../../mod/settings.php:84
-#: ../../mod/settings.php:614
-msgid "Update"
-msgstr "Aggiorna"
+#: ../../mod/mail.php:269
+msgid "Message not found."
+msgstr "Messaggio non trovato."
-#: ../../include/apps.php:247
-msgid "Install"
-msgstr "Installa"
+#: ../../mod/mail.php:312
+msgid "Delete message"
+msgstr "Elimina il messaggio"
-#: ../../include/apps.php:252
-msgid "Purchase"
-msgstr "Acquista"
+#: ../../mod/mail.php:313
+msgid "Recall message"
+msgstr "Revoca il messaggio"
-#: ../../include/bbcode.php:122 ../../include/bbcode.php:768
-#: ../../include/bbcode.php:771 ../../include/bbcode.php:776
-#: ../../include/bbcode.php:779 ../../include/bbcode.php:782
-#: ../../include/bbcode.php:785 ../../include/bbcode.php:790
-#: ../../include/bbcode.php:793 ../../include/bbcode.php:798
-#: ../../include/bbcode.php:801 ../../include/bbcode.php:804
-#: ../../include/bbcode.php:807
-msgid "Image/photo"
-msgstr "Immagine"
+#: ../../mod/mail.php:315
+msgid "Message has been recalled."
+msgstr "Il messaggio è stato revocato."
-#: ../../include/bbcode.php:161 ../../include/bbcode.php:818
-msgid "Encrypted content"
-msgstr "Contenuto crittografato"
+#: ../../mod/mail.php:332
+msgid "Private Conversation"
+msgstr "Conversazione privata"
-#: ../../include/bbcode.php:178
-#, php-format
-msgid "Install %s element: "
-msgstr "Installa l'elemento %s:"
+#: ../../mod/mail.php:336 ../../mod/message.php:72
+msgid "Delete conversation"
+msgstr "Elimina la conversazione"
-#: ../../include/bbcode.php:182
-#, php-format
+#: ../../mod/mail.php:338
msgid ""
-"This post contains an installable %s element, however you lack permissions "
-"to install it on this site."
-msgstr "Questo post contiene un elemento %s installabile, tuttavia non hai i permessi necessari per l'installazione."
-
-#: ../../include/bbcode.php:192 ../../mod/impel.php:37
-msgid "webpage"
-msgstr "pagina web"
-
-#: ../../include/bbcode.php:195 ../../mod/impel.php:47
-msgid "layout"
-msgstr "layout"
-
-#: ../../include/bbcode.php:198 ../../mod/impel.php:42
-msgid "block"
-msgstr "riquadro"
-
-#: ../../include/bbcode.php:201 ../../mod/impel.php:54
-msgid "menu"
-msgstr "menu"
-
-#: ../../include/bbcode.php:215
-msgid "QR code"
-msgstr "QR code"
-
-#: ../../include/bbcode.php:266
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s ha scritto %2$s %3$s"
+"No secure communications available. You <strong>may</strong> be able to "
+"respond from the sender's profile page."
+msgstr "Non è disponibile alcuna tecnologia per comunicare in modo sicuro. <strong>Se possibile</strong>, prova a rispondere direttamente dalla pagina del profilo del mittente."
-#: ../../include/bbcode.php:268 ../../mod/tagger.php:51
-msgid "post"
-msgstr "il post"
+#: ../../mod/mail.php:342
+msgid "Send Reply"
+msgstr "Invia la risposta"
-#: ../../include/bbcode.php:518
-msgid "Different viewers will see this text differently"
-msgstr "Ad altri questo testo potrebbe apparire in modo differente"
+#: ../../mod/magic.php:69
+msgid "Hub not found."
+msgstr "Server non trovato."
-#: ../../include/bbcode.php:729
-msgid "$1 spoiler"
-msgstr "$1 spoiler"
+#: ../../mod/achievements.php:34
+msgid "Some blurb about what to do when you're new here"
+msgstr "Qualche suggerimento per i nuovi utenti su cosa fare"
-#: ../../include/bbcode.php:756
-msgid "$1 wrote:"
-msgstr "$1 ha scritto:"
+#: ../../mod/page.php:36 ../../mod/block.php:27
+msgid "Invalid item."
+msgstr "Elemento non valido."
-#: ../../include/chat.php:23
-msgid "Missing room name"
-msgstr "Area chat senza nome"
+#: ../../mod/page.php:52 ../../mod/block.php:39 ../../mod/wall_upload.php:29
+msgid "Channel not found."
+msgstr "Canale non trovato."
-#: ../../include/chat.php:32
-msgid "Duplicate room name"
-msgstr "Il nome dell'area chat è duplicato"
+#: ../../mod/page.php:89 ../../mod/block.php:75 ../../mod/display.php:110
+#: ../../mod/help.php:79 ../../index.php:245
+msgid "Page not found."
+msgstr "Pagina non trovata."
-#: ../../include/chat.php:82 ../../include/chat.php:90
-msgid "Invalid room specifier."
-msgstr "Il nome dell'area chat non è valido."
+#: ../../mod/page.php:126
+msgid "Lorem Ipsum"
+msgstr "Lorem Ipsum"
-#: ../../include/chat.php:120
-msgid "Room not found."
-msgstr "Area chat non trovata."
+#: ../../mod/acl.php:231
+msgid "network"
+msgstr "rete"
-#: ../../include/chat.php:141
-msgid "Room is full"
-msgstr "L'area chat è al completo"
+#: ../../mod/acl.php:241
+msgid "RSS"
+msgstr "RSS"
-#: ../../include/photos.php:94
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "L'immagine supera il limite massimo di %lu bytes"
+#: ../../mod/admin.php:52
+msgid "Theme settings updated."
+msgstr "Le impostazioni del tema sono state aggiornate."
-#: ../../include/photos.php:101
-msgid "Image file is empty."
-msgstr "Il file dell'immagine è vuoto."
+#: ../../mod/admin.php:93 ../../mod/admin.php:452
+msgid "Site"
+msgstr "Sito"
-#: ../../include/photos.php:128 ../../mod/profile_photo.php:217
-msgid "Unable to process image"
-msgstr "Impossibile elaborare l'immagine"
+#: ../../mod/admin.php:94
+msgid "Accounts"
+msgstr "Account"
-#: ../../include/photos.php:199
-msgid "Photo storage failed."
-msgstr "Impossibile caricare la foto."
+#: ../../mod/admin.php:95 ../../mod/admin.php:985
+msgid "Channels"
+msgstr "Canali"
-#: ../../include/photos.php:363
-msgid "Upload New Photos"
-msgstr "Carica nuove foto"
+#: ../../mod/admin.php:96 ../../mod/admin.php:1077 ../../mod/admin.php:1117
+msgid "Plugins"
+msgstr "Plugin"
-#: ../../mod/achievements.php:34
-msgid "Some blurb about what to do when you're new here"
-msgstr "Qualche suggerimento per i nuovi utenti su cosa fare"
+#: ../../mod/admin.php:97 ../../mod/admin.php:1277 ../../mod/admin.php:1311
+msgid "Themes"
+msgstr "Temi"
-#: ../../mod/manage.php:136
-#, php-format
-msgid "You have created %1$.0f of %2$.0f allowed channels."
-msgstr "Hai creato %1$.0f dei %2$.0f canali permessi."
+#: ../../mod/admin.php:98
+msgid "Inspect queue"
+msgstr "Coda di attesa"
-#: ../../mod/manage.php:144
-msgid "Create a new channel"
-msgstr "Crea un nuovo canale"
+#: ../../mod/admin.php:100
+msgid "Profile Config"
+msgstr "Configurazione del profilo"
-#: ../../mod/manage.php:167
-msgid "Current Channel"
-msgstr "Canale attuale"
+#: ../../mod/admin.php:101
+msgid "DB updates"
+msgstr "Aggiornamenti al DB"
-#: ../../mod/manage.php:169
-msgid "Switch to one of your channels by selecting it."
-msgstr "Per passare a un altro tuo canale selezionalo."
+#: ../../mod/admin.php:115 ../../mod/admin.php:122 ../../mod/admin.php:1396
+msgid "Logs"
+msgstr "Log"
-#: ../../mod/manage.php:170
-msgid "Default Channel"
-msgstr "Canale predefinito"
+#: ../../mod/admin.php:121
+msgid "Plugin Features"
+msgstr "Plugin"
-#: ../../mod/manage.php:171
-msgid "Make Default"
-msgstr "Rendi predefinito"
+#: ../../mod/admin.php:123
+msgid "User registrations waiting for confirmation"
+msgstr "Registrazioni in attesa"
-#: ../../mod/manage.php:174
-#, php-format
-msgid "%d new messages"
-msgstr "%d nuovi messaggi"
+#: ../../mod/admin.php:200
+msgid "# Accounts"
+msgstr "# account"
-#: ../../mod/manage.php:175
-#, php-format
-msgid "%d new introductions"
-msgstr "%d nuove richieste di entrare in contatto"
+#: ../../mod/admin.php:201
+msgid "# blocked accounts"
+msgstr "# account bloccati"
-#: ../../mod/manage.php:177
-msgid "Delegated Channels"
-msgstr "Canali delegati"
+#: ../../mod/admin.php:202
+msgid "# expired accounts"
+msgstr "# account scaduti"
-#: ../../mod/directory.php:59 ../../mod/photos.php:441 ../../mod/search.php:13
-#: ../../mod/ratings.php:82 ../../mod/viewconnections.php:17
-#: ../../mod/display.php:13
-msgid "Public access denied."
-msgstr "Accesso pubblico negato."
+#: ../../mod/admin.php:203
+msgid "# expiring accounts"
+msgstr "# account in scadenza"
-#: ../../mod/directory.php:234
-#, php-format
-msgid "%d rating"
-msgid_plural "%d ratings"
-msgstr[0] "%d valutazione"
-msgstr[1] "%d valutazioni"
+#: ../../mod/admin.php:216
+msgid "# Channels"
+msgstr "# canali"
-#: ../../mod/directory.php:245
-msgid "Gender: "
-msgstr "Sesso:"
+#: ../../mod/admin.php:217
+msgid "# primary"
+msgstr "# primari"
-#: ../../mod/directory.php:247
-msgid "Status: "
-msgstr "Stato:"
+#: ../../mod/admin.php:218
+msgid "# clones"
+msgstr "# cloni"
-#: ../../mod/directory.php:249
-msgid "Homepage: "
-msgstr "Homepage:"
+#: ../../mod/admin.php:224
+msgid "Message queues"
+msgstr "Coda messaggi in uscita"
-#: ../../mod/directory.php:308 ../../mod/events.php:682
-msgid "Description:"
-msgstr "Descrizione:"
+#: ../../mod/admin.php:240 ../../mod/admin.php:451 ../../mod/admin.php:548
+#: ../../mod/admin.php:817 ../../mod/admin.php:984 ../../mod/admin.php:1076
+#: ../../mod/admin.php:1116 ../../mod/admin.php:1276 ../../mod/admin.php:1310
+#: ../../mod/admin.php:1395
+msgid "Administration"
+msgstr "Amministrazione"
-#: ../../mod/directory.php:317
-msgid "Public Forum:"
-msgstr "Forum pubblico:"
+#: ../../mod/admin.php:241
+msgid "Summary"
+msgstr "Riepilogo"
-#: ../../mod/directory.php:320
-msgid "Keywords: "
-msgstr "Parole chiave:"
+#: ../../mod/admin.php:244
+msgid "Registered accounts"
+msgstr "Account creati"
-#: ../../mod/directory.php:323
-msgid "Don't suggest"
-msgstr "Non fornire suggerimenti"
+#: ../../mod/admin.php:245 ../../mod/admin.php:552
+msgid "Pending registrations"
+msgstr "Registrazioni da approvare"
-#: ../../mod/directory.php:325
-msgid "Common connections:"
-msgstr "Contatti in comune:"
+#: ../../mod/admin.php:246
+msgid "Registered channels"
+msgstr "Canali creati"
-#: ../../mod/directory.php:374
-msgid "Global Directory"
-msgstr "Elenco globale dei canali"
+#: ../../mod/admin.php:247 ../../mod/admin.php:553
+msgid "Active plugins"
+msgstr "Plugin attivi"
-#: ../../mod/directory.php:374
-msgid "Local Directory"
-msgstr "Elenco canali su questo server"
+#: ../../mod/admin.php:248
+msgid "Version"
+msgstr "Versione"
-#: ../../mod/directory.php:380
-msgid "Finding:"
-msgstr "Ricerca:"
+#: ../../mod/admin.php:363
+msgid "Site settings updated."
+msgstr "Impostazioni del sito salvate correttamente."
-#: ../../mod/directory.php:385
-msgid "next page"
-msgstr "pagina successiva"
+#: ../../mod/admin.php:400 ../../mod/settings.php:813
+msgid "mobile"
+msgstr "mobile"
-#: ../../mod/directory.php:385
-msgid "previous page"
-msgstr "pagina precedente"
+#: ../../mod/admin.php:402
+msgid "experimental"
+msgstr "sperimentale"
-#: ../../mod/directory.php:386
-msgid "Sort options"
-msgstr "Opzioni di ordinamento"
+#: ../../mod/admin.php:404
+msgid "unsupported"
+msgstr "non supportato"
-#: ../../mod/directory.php:387
-msgid "Alphabetic"
-msgstr "Alfabetico"
+#: ../../mod/admin.php:429
+msgid "Yes - with approval"
+msgstr "Sì - con approvazione"
-#: ../../mod/directory.php:388
-msgid "Reverse Alphabetic"
-msgstr "Alfabetico inverso"
+#: ../../mod/admin.php:435
+msgid "My site is not a public server"
+msgstr "Non è un server pubblico"
-#: ../../mod/directory.php:389
-msgid "Newest to Oldest"
-msgstr "Prima i più recenti"
+#: ../../mod/admin.php:436
+msgid "My site has paid access only"
+msgstr "È un servizio a pagamento"
-#: ../../mod/directory.php:390
-msgid "Oldest to Newest"
-msgstr "Prima i più vecchi"
+#: ../../mod/admin.php:437
+msgid "My site has free access only"
+msgstr "È un servizio gratuito"
-#: ../../mod/directory.php:407
-msgid "No entries (some entries may be hidden)."
-msgstr "Nessun risultato (qualche elemento potrebbe essere nascosto)."
+#: ../../mod/admin.php:438
+msgid "My site offers free accounts with optional paid upgrades"
+msgstr "È un servizio gratuito con opzioni aggiuntive a pagamento"
-#: ../../mod/xchan.php:6
-msgid "Xchan Lookup"
-msgstr "Ricerca canale"
+#: ../../mod/admin.php:454 ../../mod/register.php:207
+msgid "Registration"
+msgstr "Registrazione"
-#: ../../mod/xchan.php:9
-msgid "Lookup xchan beginning with (or webbie): "
-msgstr "Cerca un canale (o un webbie) che inizia per:"
+#: ../../mod/admin.php:455
+msgid "File upload"
+msgstr "Caricamento file"
-#: ../../mod/xchan.php:37 ../../mod/mitem.php:116 ../../mod/menu.php:160
-msgid "Not found."
-msgstr "Non trovato."
+#: ../../mod/admin.php:456
+msgid "Policies"
+msgstr "Politiche"
-#: ../../mod/api.php:76 ../../mod/api.php:102
-msgid "Authorize application connection"
-msgstr "Autorizza la app"
+#: ../../mod/admin.php:461
+msgid "Site name"
+msgstr "Nome del sito"
-#: ../../mod/api.php:77
-msgid "Return to your app and insert this Securty Code:"
-msgstr "Torna alla app e inserisci questo codice di sicurezza:"
+#: ../../mod/admin.php:462
+msgid "Banner/Logo"
+msgstr "Banner o logo"
-#: ../../mod/api.php:89
-msgid "Please login to continue."
-msgstr "Accedi al sito per continuare."
+#: ../../mod/admin.php:463
+msgid "Administrator Information"
+msgstr "Informazioni sull'amministratore"
-#: ../../mod/api.php:104
+#: ../../mod/admin.php:463
msgid ""
-"Do you want to authorize this application to access your posts and contacts,"
-" and/or create new posts for you?"
-msgstr "Vuoi autorizzare questa app ad accedere ai messaggi e ai contatti o creare nuovi messaggi per te?"
-
-#: ../../mod/webpages.php:191
-msgid "Page Title"
-msgstr "Titolo della pagina"
-
-#: ../../mod/follow.php:25
-msgid "Channel added."
-msgstr "Canale aggiunto."
+"Contact information for site administrators. Displayed on siteinfo page. "
+"BBCode can be used here"
+msgstr "Informazioni per contattare gli amministratori del sito. Saranno mostrate sulla pagina di informazioni. È consentito il BBcode"
-#: ../../mod/tagrm.php:44 ../../mod/tagrm.php:94
-msgid "Tag removed"
-msgstr "Tag rimosso"
+#: ../../mod/admin.php:464
+msgid "System language"
+msgstr "Lingua di sistema"
-#: ../../mod/tagrm.php:119
-msgid "Remove Item Tag"
-msgstr "Rimuovi il tag"
+#: ../../mod/admin.php:465
+msgid "System theme"
+msgstr "Tema di sistema"
-#: ../../mod/tagrm.php:121
-msgid "Select a tag to remove: "
-msgstr "Seleziona un tag da rimuovere: "
+#: ../../mod/admin.php:465
+msgid ""
+"Default system theme - may be over-ridden by user profiles - <a href='#' "
+"id='cnftheme'>change theme settings</a>"
+msgstr "Il tema di sistema può essere cambiato dai profili dei singoli utenti - <a href='#' id='cnftheme'>Cambia le impostazioni del tema</a>"
-#: ../../mod/tagrm.php:133 ../../mod/photos.php:887
-msgid "Remove"
-msgstr "Rimuovi"
+#: ../../mod/admin.php:466
+msgid "Mobile system theme"
+msgstr "Tema di sistema per dispositivi mobili"
-#: ../../mod/connect.php:56 ../../mod/connect.php:104
-msgid "Continue"
-msgstr "Continua"
+#: ../../mod/admin.php:466
+msgid "Theme for mobile devices"
+msgstr "Tema per i dispositivi mobili"
-#: ../../mod/connect.php:85
-msgid "Premium Channel Setup"
-msgstr "Canale premium - installazione"
+#: ../../mod/admin.php:468
+msgid "Enable Diaspora Protocol"
+msgstr "Abilita la comunicazione con Diaspora"
-#: ../../mod/connect.php:87
-msgid "Enable premium channel connection restrictions"
-msgstr "Abilita le restrizioni del canale premium"
+#: ../../mod/admin.php:468
+msgid "Communicate with Diaspora and Friendica - experimental"
+msgstr "Sperimentale - per comunicare con Diaspora e Friendica"
-#: ../../mod/connect.php:88
-msgid ""
-"Please enter your restrictions or conditions, such as paypal receipt, usage "
-"guidelines, etc."
-msgstr "Scrivi le condizioni d'uso e le restrizioni di questo canale, come per esempio le linee guida, il sistema di pagamento, ecc."
+#: ../../mod/admin.php:469
+msgid "Allow Feeds as Connections"
+msgstr "Permetti di aggiungere i feed come contatti"
-#: ../../mod/connect.php:90 ../../mod/connect.php:110
-msgid ""
-"This channel may require additional steps or acknowledgement of the "
-"following conditions prior to connecting:"
-msgstr "Prima di connetterti a questo canale è necessario che tu accetti le seguenti condizioni:"
+#: ../../mod/admin.php:469
+msgid "(Heavy system resource usage)"
+msgstr "(Uso intenso delle risorse di sistema!)"
-#: ../../mod/connect.php:91
-msgid ""
-"Potential connections will then see the following text before proceeding:"
-msgstr "Il testo seguente comparirà a chi vorrà seguire il canale:"
+#: ../../mod/admin.php:470
+msgid "Maximum image size"
+msgstr "Dimensione massima immagini"
-#: ../../mod/connect.php:92 ../../mod/connect.php:113
+#: ../../mod/admin.php:470
msgid ""
-"By continuing, I certify that I have complied with any instructions provided"
-" on this page."
-msgstr "Continuando dichiaro di aver seguito tutte le indicazioni e le istruzioni fornite in questa pagina."
-
-#: ../../mod/connect.php:101
-msgid "(No specific instructions have been provided by the channel owner.)"
-msgstr "(Il gestore del canale non ha fornito istruzioni specifiche)"
-
-#: ../../mod/connect.php:109
-msgid "Restricted or Premium Channel"
-msgstr "Canale premium - con restrizioni"
-
-#: ../../mod/thing.php:94
-msgid "Thing updated"
-msgstr "L'Oggetto è stato aggiornato"
+"Maximum size in bytes of uploaded images. Default is 0, which means no "
+"limits."
+msgstr "Massima dimensione in byte delle immagini caricate. Il default è 0, cioè nessun limite."
-#: ../../mod/thing.php:167
-msgid "Object store: failed"
-msgstr "Impossibile memorizzare l'oggetto."
+#: ../../mod/admin.php:471
+msgid "Does this site allow new member registration?"
+msgstr "Questo sito permette a nuovi utenti di registrarsi?"
-#: ../../mod/thing.php:171
-msgid "Thing added"
-msgstr "L'Oggetto è stato aggiunto"
+#: ../../mod/admin.php:472
+msgid "Which best describes the types of account offered by this hub?"
+msgstr "Come descriveresti il tipo di servizio proposto da questo server?"
-#: ../../mod/thing.php:203
-#, php-format
-msgid "OBJ: %1$s %2$s %3$s"
-msgstr "OBJ: %1$s %2$s %3$s"
+#: ../../mod/admin.php:473
+msgid "Register text"
+msgstr "Testo di registrazione"
-#: ../../mod/thing.php:254
-msgid "Show Thing"
-msgstr "Mostra l'Oggetto"
+#: ../../mod/admin.php:473
+msgid "Will be displayed prominently on the registration page."
+msgstr "Sarà mostrato ben visibile nella pagina di registrazione."
-#: ../../mod/thing.php:261
-msgid "item not found."
-msgstr "non trovato."
+#: ../../mod/admin.php:474
+msgid "Site homepage to show visitors (default: login box)"
+msgstr "Homepage del sito da mostrare ai navigatori (predefinito: modulo di login)"
-#: ../../mod/thing.php:289
-msgid "Edit Thing"
-msgstr "Modifica l'Oggetto"
+#: ../../mod/admin.php:474
+msgid ""
+"example: 'public' to show public stream, 'page/sys/home' to show a system "
+"webpage called 'home' or 'include:home.html' to include a file."
+msgstr "esempio: 'public' per mostrare i contenuti pubblici degli utenti, 'page/sys/home' per mostrare la pagina web definita come 'home' oppure 'include:home.html' per mostrare il contenuto di un file."
-#: ../../mod/thing.php:291 ../../mod/thing.php:338
-msgid "Select a profile"
-msgstr "Scegli un profilo"
+#: ../../mod/admin.php:475
+msgid "Preserve site homepage URL"
+msgstr "Conserva l'URL della homepage"
-#: ../../mod/thing.php:295 ../../mod/thing.php:341
-msgid "Post an activity"
-msgstr "Pubblica un'attività"
+#: ../../mod/admin.php:475
+msgid ""
+"Present the site homepage in a frame at the original location instead of "
+"redirecting"
+msgstr "Presenta la homepage del sito in un frame all'indirizzo attuale invece di un redirect."
-#: ../../mod/thing.php:295 ../../mod/thing.php:341
-msgid "Only sends to viewers of the applicable profile"
-msgstr "Invia solo a chi segue il relativo canale"
+#: ../../mod/admin.php:476
+msgid "Accounts abandoned after x days"
+msgstr "Account abbandonati dopo X giorni"
-#: ../../mod/thing.php:297 ../../mod/thing.php:343
-msgid "Name of thing e.g. something"
-msgstr "Nome dell'Oggetto"
+#: ../../mod/admin.php:476
+msgid ""
+"Will not waste system resources polling external sites for abandonded "
+"accounts. Enter 0 for no time limit."
+msgstr "Eviterà di sprecare risorse di sistema controllando se i siti esterni hanno account abbandonati. Immettere 0 per non imporre nessun limite di tempo."
-#: ../../mod/thing.php:299 ../../mod/thing.php:344
-msgid "URL of thing (optional)"
-msgstr "Indirizzo web dell'Oggetto (opzionale)"
+#: ../../mod/admin.php:477
+msgid "Allowed friend domains"
+msgstr "Domini fidati e consentiti"
-#: ../../mod/thing.php:301 ../../mod/thing.php:345
-msgid "URL for photo of thing (optional)"
-msgstr "Indirizzo di un'immagine dell'Oggetto (facoltativo)"
+#: ../../mod/admin.php:477
+msgid ""
+"Comma separated list of domains which are allowed to establish friendships "
+"with this site. Wildcards are accepted. Empty to allow any domains"
+msgstr "Elenco separato da virglola dei domini che possono stabilire amicizie con questo sito. Sono accettati caratteri jolly. Lascia vuoto per accettare connessioni da qualsiasi dominio."
-#: ../../mod/thing.php:336
-msgid "Add Thing to your Profile"
-msgstr "Aggiungi l'Oggetto al tuo profilo"
+#: ../../mod/admin.php:478
+msgid "Allowed email domains"
+msgstr "Domini email consentiti"
-#: ../../mod/attach.php:9
-msgid "Item not available."
-msgstr "Elemento non disponibile."
+#: ../../mod/admin.php:478
+msgid ""
+"Comma separated list of domains which are allowed in email addresses for "
+"registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains"
+msgstr "Elenco separato da virgola dei domini permessi come indirizzi email in fase di registrazione. Sono accettati caratteri jolly. Lascia vuoto per accettare qualsiasi dominio email"
-#: ../../mod/probe.php:24 ../../mod/probe.php:30
-#, php-format
-msgid "Fetching URL returns error: %1$s"
-msgstr "La chiamata all'URL restituisce questo errore: %1$s"
+#: ../../mod/admin.php:479
+msgid "Not allowed email domains"
+msgstr "Domini email non consentiti"
-#: ../../mod/profile_photo.php:108
-msgid "Image uploaded but image cropping failed."
-msgstr "L'immagine è stata caricata, ma il non è stato possibile ritagliarla."
+#: ../../mod/admin.php:479
+msgid ""
+"Comma separated list of domains which are not allowed in email addresses for"
+" registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains, unless allowed domains have been defined."
+msgstr "Elenco separato da virgola dei domini permessi come indirizzi email in fase di registrazione a questo sito. Sono accettati caratteri jolly. Lascalo vuoto per accettare qualsiasi dominio."
-#: ../../mod/profile_photo.php:162
-msgid "Image resize failed."
-msgstr "Il ridimensionamento dell'immagine è fallito."
+#: ../../mod/admin.php:480
+msgid "Block public"
+msgstr "Blocca pagine pubbliche"
-#: ../../mod/profile_photo.php:206
+#: ../../mod/admin.php:480
msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Ricarica la pagina con shift+F5 o cancella la cache del browser se la nuova foto non viene mostrata immediatamente."
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently logged in."
+msgstr "Seleziona per impedire di vedere le pagine personali di questo sito a chi non ha effettuato l'accesso."
-#: ../../mod/profile_photo.php:233
-#, php-format
-msgid "Image exceeds size limit of %d"
-msgstr "La dimensione dell'immagine supera il limite di %d"
+#: ../../mod/admin.php:481
+msgid "Verify Email Addresses"
+msgstr "Verifica l'indirizzo email"
-#: ../../mod/profile_photo.php:242
-msgid "Unable to process image."
-msgstr "Impossibile elaborare l'immagine."
+#: ../../mod/admin.php:481
+msgid ""
+"Check to verify email addresses used in account registration (recommended)."
+msgstr "Attiva per richiedere la verifica degli indirizzi email dei nuovi utenti (consigliato)."
-#: ../../mod/profile_photo.php:291 ../../mod/profile_photo.php:340
-msgid "Photo not available."
-msgstr "Foto non disponibile."
+#: ../../mod/admin.php:482
+msgid "Force publish"
+msgstr "Forza la publicazione del profilo"
-#: ../../mod/profile_photo.php:359
-msgid "Upload File:"
-msgstr "Carica un file:"
+#: ../../mod/admin.php:482
+msgid ""
+"Check to force all profiles on this site to be listed in the site directory."
+msgstr "Seleziona per mostrare nell'elenco pubblico <strong>tutti</strong> i profili registrati su questo sito."
-#: ../../mod/profile_photo.php:360
-msgid "Select a profile:"
-msgstr "Seleziona un profilo:"
+#: ../../mod/admin.php:483
+msgid "Disable discovery tab"
+msgstr "Disabilita la funzione 'scopri'"
-#: ../../mod/profile_photo.php:361
-msgid "Upload Profile Photo"
-msgstr "Carica la foto del profilo"
+#: ../../mod/admin.php:483
+msgid ""
+"Remove the tab in the network view with public content pulled from sources "
+"chosen for this site."
+msgstr "Nell'area della rete personale non comparirà più la scheda con i contenuti acquisiti da altri siti."
-#: ../../mod/profile_photo.php:366 ../../mod/settings.php:995
-msgid "or"
-msgstr "o"
+#: ../../mod/admin.php:484
+msgid "login on Homepage"
+msgstr "Mostra il login sulla homepage"
-#: ../../mod/profile_photo.php:366
-msgid "skip this step"
-msgstr "salta questo passaggio"
+#: ../../mod/admin.php:484
+msgid ""
+"Present a login box to visitors on the home page if no other content has "
+"been configured."
+msgstr "Presenta il modulo di login ai visitatori sulla homepage in mancanza di altri contenuti."
-#: ../../mod/profile_photo.php:366
-msgid "select a photo from your photo albums"
-msgstr "seleziona una foto dai tuoi album"
+#: ../../mod/admin.php:486
+msgid "Proxy user"
+msgstr "Utente proxy"
-#: ../../mod/profile_photo.php:382
-msgid "Crop Image"
-msgstr "Ritaglia immagine"
+#: ../../mod/admin.php:487
+msgid "Proxy URL"
+msgstr "URL proxy"
-#: ../../mod/profile_photo.php:383
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Ritaglia l'immagine per migliorarne la visualizzazione."
+#: ../../mod/admin.php:488
+msgid "Network timeout"
+msgstr "Timeout rete"
-#: ../../mod/profile_photo.php:385
-msgid "Done Editing"
-msgstr "Modifica terminata"
+#: ../../mod/admin.php:488
+msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+msgstr "Valore in secondi. Imposta a 0 per illimitato (sconsigliato)."
-#: ../../mod/profile_photo.php:428
-msgid "Image uploaded successfully."
-msgstr "Immagine caricata con successo."
+#: ../../mod/admin.php:489
+msgid "Delivery interval"
+msgstr "Recapito ritardato"
-#: ../../mod/profile_photo.php:430
-msgid "Image upload failed."
-msgstr "Il caricamento dell'immagine è fallito."
+#: ../../mod/admin.php:489
+msgid ""
+"Delay background delivery processes by this many seconds to reduce system "
+"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
+"for large dedicated servers."
+msgstr "Numero di secondi di cui può essere ritardato il recapito, per ridurre il carico di sistema. Consigliati: 4-5 secondi per hosting condiviso, 2-3 per i VPS, 0-1 per grandi server dedicati."
-#: ../../mod/profile_photo.php:439
-#, php-format
-msgid "Image size reduction [%s] failed."
-msgstr "Il ridimensionamento del'immagine [%s] è fallito."
+#: ../../mod/admin.php:490
+msgid "Poll interval"
+msgstr "Intervallo di polling"
-#: ../../mod/block.php:27 ../../mod/page.php:36
-msgid "Invalid item."
-msgstr "Elemento non valido."
+#: ../../mod/admin.php:490
+msgid ""
+"Delay background polling processes by this many seconds to reduce system "
+"load. If 0, use delivery interval."
+msgstr "Numero di secondi di cui può essere ritardato il polling in background, per ridurre il carico del sistema. Se 0, verrà usato lo stesso valore del 'Recapito ritardato'."
-#: ../../mod/block.php:39 ../../mod/wall_upload.php:29 ../../mod/page.php:52
-msgid "Channel not found."
-msgstr "Canale non trovato."
+#: ../../mod/admin.php:491
+msgid "Maximum Load Average"
+msgstr "Carico massimo medio"
-#: ../../mod/block.php:75 ../../mod/display.php:110 ../../mod/help.php:79
-#: ../../mod/page.php:89 ../../index.php:241
-msgid "Page not found."
-msgstr "Pagina non trovata."
+#: ../../mod/admin.php:491
+msgid ""
+"Maximum system load before delivery and poll processes are deferred - "
+"default 50."
+msgstr "Carico di sistema massimo perché i processi di recapito e polling siano ritardati - il valore predefinito è 50."
-#: ../../mod/like.php:15
-msgid "Like/Dislike"
-msgstr "Mi piace/Non mi piace"
+#: ../../mod/admin.php:492
+msgid "Expiration period in days for imported (matrix/network) content"
+msgstr "Scadenza dei contenuti importati da altri siti (in giorni)"
-#: ../../mod/like.php:20
-msgid "This action is restricted to members."
-msgstr "Questa funzionalità è riservata agli iscritti."
+#: ../../mod/admin.php:492
+msgid "0 for no expiration of imported content"
+msgstr "0 per non avere scadenza"
-#: ../../mod/like.php:21
-msgid ""
-"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a "
-"href=\"register\">register as a new $Projectname member</a> to continue."
-msgstr "Per continuare devi <a href=\"rmagic\">accedere con il tuo identificativo $Projectname</a> o <a href=\"register\">registrarti come nuovo utente $Projectname</a>."
+#: ../../mod/admin.php:540
+msgid "No server found"
+msgstr "Server non trovato"
-#: ../../mod/like.php:101 ../../mod/like.php:128 ../../mod/like.php:166
-msgid "Invalid request."
-msgstr "Richiesta non valida."
+#: ../../mod/admin.php:547 ../../mod/admin.php:831
+msgid "ID"
+msgstr "ID"
-#: ../../mod/like.php:143
-msgid "thing"
-msgstr "Oggetto"
+#: ../../mod/admin.php:547
+msgid "for channel"
+msgstr "per canale"
-#: ../../mod/like.php:189
-msgid "Channel unavailable."
-msgstr "Canale non trovato."
+#: ../../mod/admin.php:547
+msgid "on server"
+msgstr "sul server"
-#: ../../mod/like.php:231
-msgid "Previous action reversed."
-msgstr "Il comando precedente è stato annullato."
+#: ../../mod/admin.php:547
+msgid "Status"
+msgstr "Stato"
-#: ../../mod/like.php:401
-#, php-format
-msgid "%1$s agrees with %2$s's %3$s"
-msgstr "%3$s di %2$s: %1$s è d'accordo"
+#: ../../mod/admin.php:549
+msgid "Server"
+msgstr "Server"
-#: ../../mod/like.php:403
-#, php-format
-msgid "%1$s doesn't agree with %2$s's %3$s"
-msgstr "%3$s di %2$s: %1$s non è d'accordo"
+#: ../../mod/admin.php:566
+msgid "Update has been marked successful"
+msgstr "L'aggiornamento è stato marcato come eseguito."
-#: ../../mod/like.php:405
+#: ../../mod/admin.php:576
#, php-format
-msgid "%1$s abstains from a decision on %2$s's %3$s"
-msgstr "%3$s di %2$s: %1$s non ha preso una decisione"
+msgid "Executing %s failed. Check system logs."
+msgstr "Fallita l'esecuzione di %s. Maggiori informazioni sui log di sistema."
-#: ../../mod/like.php:407
+#: ../../mod/admin.php:579
#, php-format
-msgid "%1$s is attending %2$s's %3$s"
-msgstr "%3$s di %2$s: %1$s partecipa"
+msgid "Update %s was successfully applied."
+msgstr "L'aggiornamento %s è terminato correttamente."
-#: ../../mod/like.php:409
+#: ../../mod/admin.php:583
#, php-format
-msgid "%1$s is not attending %2$s's %3$s"
-msgstr "%3$s di %2$s: %1$s non partecipa"
+msgid "Update %s did not return a status. Unknown if it succeeded."
+msgstr "L'aggiornamento %s non ha dato risposta. Impossibile determinare se è terminato correttamente."
-#: ../../mod/like.php:411
+#: ../../mod/admin.php:586
#, php-format
-msgid "%1$s may attend %2$s's %3$s"
-msgstr "%3$s di %2$s: %1$s forse partecipa"
-
-#: ../../mod/like.php:507
-msgid "Action completed."
-msgstr "Comando completato."
+msgid "Update function %s could not be found."
+msgstr "Impossibile trovare la funzione di aggiornamento %s"
-#: ../../mod/like.php:508
-msgid "Thank you."
-msgstr "Grazie."
+#: ../../mod/admin.php:602
+msgid "No failed updates."
+msgstr "Nessun aggiornamento fallito."
-#: ../../mod/events.php:21
-msgid "Calendar entries imported."
-msgstr "Le voci del calendario sono state importate."
+#: ../../mod/admin.php:606
+msgid "Failed Updates"
+msgstr "Aggiornamenti falliti."
-#: ../../mod/events.php:23
-msgid "No calendar entries found."
-msgstr "Non sono state trovate voci del calendario."
+#: ../../mod/admin.php:608
+msgid "Mark success (if update was manually applied)"
+msgstr "Marca come eseguito (se applicato manualmente)."
-#: ../../mod/events.php:101
-msgid "Event can not end before it has started."
-msgstr "Un evento non può terminare prima del suo inizio."
+#: ../../mod/admin.php:609
+msgid "Attempt to execute this update step automatically"
+msgstr "Tenta di eseguire in automatico questo passaggio dell'aggiornamento."
-#: ../../mod/events.php:103 ../../mod/events.php:112 ../../mod/events.php:130
-msgid "Unable to generate preview."
-msgstr "Impossibile creare un'anteprima."
+#: ../../mod/admin.php:641
+msgid "Queue Statistics"
+msgstr "Statistiche della coda"
-#: ../../mod/events.php:110
-msgid "Event title and start time are required."
-msgstr "Sono necessari il titolo e l'ora d'inizio dell'evento."
+#: ../../mod/admin.php:642
+msgid "Total Entries"
+msgstr "Totale"
-#: ../../mod/events.php:128
-msgid "Event not found."
-msgstr "Evento non trovato."
+#: ../../mod/admin.php:643
+msgid "Priority"
+msgstr "Priorità"
-#: ../../mod/events.php:426
-msgid "l, F j"
-msgstr "l j F"
+#: ../../mod/admin.php:644
+msgid "Destination URL"
+msgstr "URL di destinazione"
-#: ../../mod/events.php:448
-msgid "Edit event"
-msgstr "Modifica l'evento"
+#: ../../mod/admin.php:645
+msgid "Mark hub permanently offline"
+msgstr "Questo hub è definitivamente offline"
-#: ../../mod/events.php:449
-msgid "Delete event"
-msgstr "Elimina l'evento"
+#: ../../mod/admin.php:646
+msgid "Empty queue for this hub"
+msgstr "Svuota la coda per questo hub"
-#: ../../mod/events.php:483
-msgid "calendar"
-msgstr "calendario"
+#: ../../mod/admin.php:647
+msgid "Last known contact"
+msgstr "Ultimo scambio dati"
-#: ../../mod/events.php:504
-msgid "Create New Event"
-msgstr "Crea un nuovo evento"
+#: ../../mod/admin.php:683
+#, php-format
+msgid "%s account blocked/unblocked"
+msgid_plural "%s account blocked/unblocked"
+msgstr[0] "Modificato il blocco su %s account"
+msgstr[1] "Modificato il blocco verso %s"
-#: ../../mod/events.php:505 ../../mod/photos.php:839
-msgid "Previous"
-msgstr "Precendente"
+#: ../../mod/admin.php:691
+#, php-format
+msgid "%s account deleted"
+msgid_plural "%s accounts deleted"
+msgstr[0] "%s account eliminato"
+msgstr[1] "%s account eliminati"
-#: ../../mod/events.php:506 ../../mod/photos.php:848 ../../mod/setup.php:281
-msgid "Next"
-msgstr "Successivo"
+#: ../../mod/admin.php:727
+msgid "Account not found"
+msgstr "Account non trovato"
-#: ../../mod/events.php:507
-msgid "Export"
-msgstr "Esporta"
+#: ../../mod/admin.php:739
+#, php-format
+msgid "Account '%s' deleted"
+msgstr "Account '%s' eliminato"
-#: ../../mod/events.php:510
-msgid "Import"
-msgstr "Importa"
+#: ../../mod/admin.php:747
+#, php-format
+msgid "Account '%s' blocked"
+msgstr "Aggiunto un blocco verso '%s'"
-#: ../../mod/events.php:541
-msgid "Event removed"
-msgstr "Evento eliminato"
+#: ../../mod/admin.php:755
+#, php-format
+msgid "Account '%s' unblocked"
+msgstr "Rimosso il blocco verso '%s'"
-#: ../../mod/events.php:544
-msgid "Failed to remove event"
-msgstr "Impossibile eliminare l'evento"
+#: ../../mod/admin.php:818 ../../mod/admin.php:830
+msgid "Users"
+msgstr "Utenti"
-#: ../../mod/events.php:664
-msgid "Event details"
-msgstr "Dettagli evento"
+#: ../../mod/admin.php:820 ../../mod/admin.php:987
+msgid "select all"
+msgstr "seleziona tutti"
-#: ../../mod/events.php:665
-msgid "Starting date and Title are required."
-msgstr "Titolo e data d'inizio sono obbligatori."
+#: ../../mod/admin.php:821
+msgid "User registrations waiting for confirm"
+msgstr "Richieste di registrazione in attesa di conferma"
-#: ../../mod/events.php:667
-msgid "Categories (comma-separated list)"
-msgstr "Categorie (separate da virgola)"
+#: ../../mod/admin.php:822
+msgid "Request date"
+msgstr "Data richiesta"
-#: ../../mod/events.php:669
-msgid "Event Starts:"
-msgstr "Inizio:"
+#: ../../mod/admin.php:823
+msgid "No registrations."
+msgstr "Nessuna registrazione."
-#: ../../mod/events.php:676
-msgid "Finish date/time is not known or not relevant"
-msgstr "La data/ora di fine non è rilevante"
+#: ../../mod/admin.php:824 ../../mod/connedit.php:699
+msgid "Approve"
+msgstr "Approva"
-#: ../../mod/events.php:678
-msgid "Event Finishes:"
-msgstr "Fine:"
+#: ../../mod/admin.php:825
+msgid "Deny"
+msgstr "Nega"
-#: ../../mod/events.php:680 ../../mod/events.php:681
-msgid "Adjust for viewer timezone"
-msgstr "Adatta al fuso orario di chi legge"
+#: ../../mod/admin.php:827 ../../mod/connedit.php:531
+msgid "Block"
+msgstr "Blocca"
-#: ../../mod/events.php:680
-msgid ""
-"Important for events that happen in a particular place. Not practical for "
-"global holidays."
-msgstr "Importante per eventi che avvengono in base all'orario di un luogo particolare."
+#: ../../mod/admin.php:828 ../../mod/connedit.php:531
+msgid "Unblock"
+msgstr "Sblocca"
-#: ../../mod/events.php:686
-msgid "Title:"
-msgstr "Titolo:"
+#: ../../mod/admin.php:831
+msgid "Register date"
+msgstr "Data registrazione"
-#: ../../mod/events.php:688
-msgid "Share this event"
-msgstr "Condividi questo evento"
+#: ../../mod/admin.php:831
+msgid "Last login"
+msgstr "Ultimo accesso"
-#: ../../mod/subthread.php:103
-#, php-format
-msgid "%1$s is following %2$s's %3$s"
-msgstr "%1$s sta seguendo %3$s di %2$s"
+#: ../../mod/admin.php:831
+msgid "Expires"
+msgstr "Con scadenza"
-#: ../../mod/pubsites.php:16
-msgid "Public Sites"
-msgstr "Siti pubblici"
+#: ../../mod/admin.php:831
+msgid "Service Class"
+msgstr "Classe dell'account"
-#: ../../mod/pubsites.php:19
+#: ../../mod/admin.php:833
msgid ""
-"The listed sites allow public registration for the $Projectname network. All"
-" sites in the network are interlinked so membership on any of them conveys "
-"membership in the network as a whole. Some sites may require subscription or"
-" provide tiered service plans. The provider links <strong>may</strong> "
-"provide additional details."
-msgstr "I siti elencati permettono la registrazione libera sulla rete $Projectname. Tutti questi hub sono interconnessi, quindi essere iscritti su uno equivale a una registrazione su tutta la rete. Alcuni siti potrebbero richiedere un abbonamento o dei servizi a pagamento. Per maggiori dettagli visita gli indirizzi nell'elenco."
-
-#: ../../mod/pubsites.php:25
-msgid "Rate this hub"
-msgstr "Valuta questo hub"
-
-#: ../../mod/pubsites.php:26
-msgid "Site URL"
-msgstr "URL del sito"
-
-#: ../../mod/pubsites.php:26
-msgid "Access Type"
-msgstr "Tipo di accesso"
-
-#: ../../mod/pubsites.php:26
-msgid "Registration Policy"
-msgstr "Politica di registrazione"
-
-#: ../../mod/pubsites.php:26 ../../mod/profiles.php:454
-msgid "Location"
-msgstr "Posizione geografica"
-
-#: ../../mod/pubsites.php:26
-msgid "View hub ratings"
-msgstr "Vedi le valutazioni del hub"
-
-#: ../../mod/pubsites.php:30
-msgid "Rate"
-msgstr "Valuta"
-
-#: ../../mod/pubsites.php:31
-msgid "View ratings"
-msgstr "Vedi le valutazioni"
-
-#: ../../mod/rpost.php:131 ../../mod/editpost.php:158
-msgid "Edit post"
-msgstr "Modifica post"
-
-#: ../../mod/dav.php:121
-msgid "$Projectname channel"
-msgstr "Canale $Projectname"
+"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
+" on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Gli account selezionati saranno eliminati!\\n\\nTutto ciò che hanno caricato o pubblicato su questo sito sarà eliminato definitivamente!\\n\\nVuoi confermare?"
-#: ../../mod/group.php:20
-msgid "Collection created."
-msgstr "L'insieme di canali è stato creato."
+#: ../../mod/admin.php:834
+msgid ""
+"The account {0} will be deleted!\\n\\nEverything this account has posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "L'account {0} sarà eliminato!\\n\\nTutto ciò che ha caricato o pubblicato su questo sito sarà eliminato definitivamente!\\n\\nVuoi confermare?"
-#: ../../mod/group.php:26
-msgid "Could not create collection."
-msgstr "Impossibile creare l'insieme."
+#: ../../mod/admin.php:870
+#, php-format
+msgid "%s channel censored/uncensored"
+msgid_plural "%s channels censored/uncensored"
+msgstr[0] "Censura modificata per %s canale"
+msgstr[1] "Censura modificata per %s canali"
-#: ../../mod/group.php:54
-msgid "Collection updated."
-msgstr "Insieme aggiornato."
+#: ../../mod/admin.php:879
+#, php-format
+msgid "%s channel code allowed/disallowed"
+msgid_plural "%s channels code allowed/disallowed"
+msgstr[0] "%s canale permette/non permette codice nei contenuti"
+msgstr[1] "%s canali permettono/non permettono codice nei contenuti"
-#: ../../mod/group.php:86
-msgid "Create a collection of channels."
-msgstr "Crea un insieme di canali."
+#: ../../mod/admin.php:886
+#, php-format
+msgid "%s channel deleted"
+msgid_plural "%s channels deleted"
+msgstr[0] "%s canale è stato rimosso"
+msgstr[1] "%s canali sono stati rimossi"
-#: ../../mod/group.php:87 ../../mod/group.php:183
-msgid "Collection Name: "
-msgstr "Nome dell'insieme:"
+#: ../../mod/admin.php:906
+msgid "Channel not found"
+msgstr "Canale non trovato"
-#: ../../mod/group.php:89 ../../mod/group.php:186
-msgid "Members are visible to other channels"
-msgstr "I membri potranno vedere gli altri canali dell'insieme"
+#: ../../mod/admin.php:917
+#, php-format
+msgid "Channel '%s' deleted"
+msgstr "Il canale '%s' è stato rimosso"
-#: ../../mod/group.php:107
-msgid "Collection removed."
-msgstr "Insieme rimosso."
+#: ../../mod/admin.php:929
+#, php-format
+msgid "Channel '%s' censored"
+msgstr "Applicata una censura al canale '%s'"
-#: ../../mod/group.php:109
-msgid "Unable to remove collection."
-msgstr "Impossibile rimuovere l'insieme."
+#: ../../mod/admin.php:929
+#, php-format
+msgid "Channel '%s' uncensored"
+msgstr "Rimossa la censura dal canale '%s'"
-#: ../../mod/group.php:182
-msgid "Collection Editor"
-msgstr "Modifica l'insieme"
+#: ../../mod/admin.php:940
+#, php-format
+msgid "Channel '%s' code allowed"
+msgstr "Il canale '%s' permette codice nei contenuti"
-#: ../../mod/group.php:196 ../../mod/bulksetclose.php:89
-msgid "Members"
-msgstr "Membri"
+#: ../../mod/admin.php:940
+#, php-format
+msgid "Channel '%s' code disallowed"
+msgstr "Il canale '%s' non permette codice nei contenuti"
-#: ../../mod/group.php:198 ../../mod/bulksetclose.php:91
-msgid "All Connected Channels"
-msgstr "Tutti i canali connessi"
+#: ../../mod/admin.php:989
+msgid "Censor"
+msgstr "Applica una censura"
-#: ../../mod/group.php:233 ../../mod/bulksetclose.php:126
-msgid "Click on a channel to add or remove."
-msgstr "Clicca su un canale per aggiungerlo o rimuoverlo."
+#: ../../mod/admin.php:990
+msgid "Uncensor"
+msgstr "Rimuovi la censura"
-#: ../../mod/siteinfo.php:112
-#, php-format
-msgid "Version %s"
-msgstr "Versione %s"
+#: ../../mod/admin.php:991
+msgid "Allow Code"
+msgstr "Permetti codice nei contenuti"
-#: ../../mod/siteinfo.php:133
-msgid "Installed plugins/addons/apps:"
-msgstr "App e componenti installati:"
+#: ../../mod/admin.php:992
+msgid "Disallow Code"
+msgstr "Non permettere codice nei contenuti"
-#: ../../mod/siteinfo.php:146
-msgid "No installed plugins/addons/apps"
-msgstr "Nessuna app o componente installato"
+#: ../../mod/admin.php:994
+msgid "UID"
+msgstr "UID"
-#: ../../mod/siteinfo.php:155 ../../mod/home.php:58 ../../mod/home.php:66
-msgid "$Projectname"
-msgstr "$Projectname"
+#: ../../mod/admin.php:994 ../../mod/profiles.php:447
+msgid "Address"
+msgstr "Indirizzo"
-#: ../../mod/siteinfo.php:156
+#: ../../mod/admin.php:996
msgid ""
-"This is a hub of $Projectname - a global cooperative network of "
-"decentralized privacy enhanced websites."
-msgstr "Questo è un hub di $Projectname - una rete cooperativa e decentralizzata di siti ad elevata privacy. "
-
-#: ../../mod/siteinfo.php:158
-msgid "Tag: "
-msgstr "Tag: "
+"Selected channels will be deleted!\\n\\nEverything that was posted in these "
+"channels on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "I canali selezionati saranno rimossi!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questi canali sarà irreversibilmente eliminato!\\n\\nVuoi confermare?"
-#: ../../mod/siteinfo.php:160
-msgid "Last background fetch: "
-msgstr "Ultima acquisizione:"
+#: ../../mod/admin.php:997
+msgid ""
+"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
+"channel on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Il canale {0} sarà rimosso!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questo canale sarà irreversibilmente eliminato!\\n\\nVuoi confermare?"
-#: ../../mod/siteinfo.php:163
-msgid "Running at web location"
-msgstr "In esecuzione sull'indirizzo web"
+#: ../../mod/admin.php:1037
+#, php-format
+msgid "Plugin %s disabled."
+msgstr "Plugin %s non attivo."
-#: ../../mod/siteinfo.php:164
-msgid ""
-"Please visit <a href=\"https://redmatrix.me\">redmatrix.me</a> to learn more"
-" about $Projectname."
-msgstr "Visita <a href=\"https://redmatrix.me\">RedMatrix.me</a> per scoprire di più su $Projectname."
+#: ../../mod/admin.php:1041
+#, php-format
+msgid "Plugin %s enabled."
+msgstr "Plugin %s attivo."
-#: ../../mod/siteinfo.php:165
-msgid "Bug reports and issues: please visit"
-msgstr "Per segnalare bug e problemi: visita"
+#: ../../mod/admin.php:1051 ../../mod/admin.php:1249
+msgid "Disable"
+msgstr "Disattiva"
-#: ../../mod/siteinfo.php:167
-msgid "$projectname issues"
-msgstr "Problematiche note su $projectname"
+#: ../../mod/admin.php:1054 ../../mod/admin.php:1251
+msgid "Enable"
+msgstr "Attiva"
-#: ../../mod/siteinfo.php:168
-msgid ""
-"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
-"com"
-msgstr "Per consigli, ringraziamenti, ecc. - scrivi a \"redmatrix\" at librelist - dot com"
+#: ../../mod/admin.php:1078 ../../mod/admin.php:1278
+msgid "Toggle"
+msgstr "Attiva/disattiva"
-#: ../../mod/siteinfo.php:170
-msgid "Site Administrators"
-msgstr "Amministratori del sito"
+#: ../../mod/admin.php:1086 ../../mod/admin.php:1288
+msgid "Author: "
+msgstr "Autore:"
-#: ../../mod/item.php:174
-msgid "Unable to locate original post."
-msgstr "Impossibile trovare il messaggio originale."
+#: ../../mod/admin.php:1087 ../../mod/admin.php:1289
+msgid "Maintainer: "
+msgstr "Gestore:"
-#: ../../mod/item.php:440
-msgid "Empty post discarded."
-msgstr "Il post vuoto è stato ignorato."
+#: ../../mod/admin.php:1214
+msgid "No themes found."
+msgstr "Nessun tema trovato."
-#: ../../mod/item.php:480
-msgid "Executable content type not permitted to this channel."
-msgstr "I contenuti eseguibili non sono permessi su questo canale."
+#: ../../mod/admin.php:1270
+msgid "Screenshot"
+msgstr "Istantanea dello schermo"
-#: ../../mod/item.php:914
-msgid "System error. Post not saved."
-msgstr "Errore di sistema. Post non salvato."
+#: ../../mod/admin.php:1316
+msgid "[Experimental]"
+msgstr "[Sperimentale]"
-#: ../../mod/item.php:1146
-msgid "Unable to obtain post information from database."
-msgstr "Impossibile caricare il post dal database."
+#: ../../mod/admin.php:1317
+msgid "[Unsupported]"
+msgstr "[Non supportato]"
-#: ../../mod/item.php:1153
-#, php-format
-msgid "You have reached your limit of %1$.0f top level posts."
-msgstr "Hai raggiunto il limite massimo di %1$.0f post sulla pagina principale."
+#: ../../mod/admin.php:1341
+msgid "Log settings updated."
+msgstr "Impostazioni di log aggiornate."
-#: ../../mod/item.php:1160
-#, php-format
-msgid "You have reached your limit of %1$.0f webpages."
-msgstr "Hai raggiunto il limite massimo di %1$.0f pagine web."
+#: ../../mod/admin.php:1398
+msgid "Clear"
+msgstr "Pulisci"
-#: ../../mod/network.php:91
-msgid "No such group"
-msgstr "Impossibile trovare l'insieme"
+#: ../../mod/admin.php:1404
+msgid "Debugging"
+msgstr "Debugging"
-#: ../../mod/network.php:129
-msgid "No such channel"
-msgstr "Canale sconosciuto"
+#: ../../mod/admin.php:1405
+msgid "Log file"
+msgstr "File di log"
-#: ../../mod/network.php:143
-msgid "Search Results For:"
-msgstr "Cerca risultati con:"
+#: ../../mod/admin.php:1405
+msgid ""
+"Must be writable by web server. Relative to your Red top-level directory."
+msgstr "Deve essere scrivibile dal web server. La posizione è relativa alla cartella dove è installato RedMatrix."
-#: ../../mod/network.php:198
-msgid "Collection is empty"
-msgstr "L'insieme di canali è vuoto"
+#: ../../mod/admin.php:1406
+msgid "Log level"
+msgstr "Livello di log"
-#: ../../mod/network.php:207
-msgid "Collection: "
-msgstr "Insieme:"
+#: ../../mod/admin.php:1452
+msgid "New Profile Field"
+msgstr "Nuovo campo del profilo"
-#: ../../mod/network.php:226
-msgid "Connection: "
-msgstr "Contatto:"
+#: ../../mod/admin.php:1453 ../../mod/admin.php:1473
+msgid "Field nickname"
+msgstr "Nome breve del campo"
-#: ../../mod/network.php:233
-msgid "Invalid connection."
-msgstr "Contatto non valido."
+#: ../../mod/admin.php:1453 ../../mod/admin.php:1473
+msgid "System name of field"
+msgstr "Nome di sistema del campo"
-#: ../../mod/common.php:10
-msgid "No channel."
-msgstr "Nessun canale."
+#: ../../mod/admin.php:1454 ../../mod/admin.php:1474
+msgid "Input type"
+msgstr "Tipo di dati"
-#: ../../mod/common.php:39
-msgid "Common connections"
-msgstr "Contatti in comune"
+#: ../../mod/admin.php:1455 ../../mod/admin.php:1475
+msgid "Field Name"
+msgstr "Nome del campo"
-#: ../../mod/common.php:44
-msgid "No connections in common."
-msgstr "Nessun contatto in comune."
+#: ../../mod/admin.php:1455 ../../mod/admin.php:1475
+msgid "Label on profile pages"
+msgstr "Etichetta da mostrare sulla pagina del profilo"
-#: ../../mod/regdir.php:45 ../../mod/dirsearch.php:21
-msgid "This site is not a directory server"
-msgstr "Questo sito non è un server di elenchi pubblici"
+#: ../../mod/admin.php:1456 ../../mod/admin.php:1476
+msgid "Help text"
+msgstr "Testo di aiuto"
-#: ../../mod/connections.php:52 ../../mod/connections.php:153
-msgid "Blocked"
-msgstr "Bloccati"
+#: ../../mod/admin.php:1456 ../../mod/admin.php:1476
+msgid "Additional info (optional)"
+msgstr "Informazioni aggiuntive (opzionali)"
-#: ../../mod/connections.php:57 ../../mod/connections.php:160
-msgid "Ignored"
-msgstr "Ignorati"
+#: ../../mod/admin.php:1466
+msgid "Field definition not found"
+msgstr "Impossibile trovare la definizione del campo"
-#: ../../mod/connections.php:62 ../../mod/connections.php:174
-msgid "Hidden"
-msgstr "Nascosti"
+#: ../../mod/admin.php:1472
+msgid "Edit Profile Field"
+msgstr "Modifica campo del profilo"
-#: ../../mod/connections.php:67 ../../mod/connections.php:167
-msgid "Archived"
-msgstr "Archiviati"
+#: ../../mod/pconfig.php:27 ../../mod/pconfig.php:60
+msgid "This setting requires special processing and editing has been blocked."
+msgstr "Questa impostazione è bloccata, richiede criteri di modifica speciali"
-#: ../../mod/connections.php:131
-msgid "Suggest new connections"
-msgstr "Suggerisci nuovi contatti"
+#: ../../mod/pconfig.php:49
+msgid "Configuration Editor"
+msgstr "Editor di configurazione"
-#: ../../mod/connections.php:134
-msgid "New Connections"
-msgstr "Nuovi contatti"
+#: ../../mod/pconfig.php:50
+msgid ""
+"Warning: Changing some settings could render your channel inoperable. Please"
+" leave this page unless you are comfortable with and knowledgeable about how"
+" to correctly use this feature."
+msgstr "Attenzione: alcune delle impostazioni, se cambiate, potrebbero rendere questo canale non funzionante. Lascia questa pagina a meno che tu non sappia con assoluta certezza quali modifiche effettuare."
-#: ../../mod/connections.php:137
-msgid "Show pending (new) connections"
-msgstr "Richieste di contatto in attesa"
+#: ../../mod/api.php:76 ../../mod/api.php:102
+msgid "Authorize application connection"
+msgstr "Autorizza la app"
-#: ../../mod/connections.php:140 ../../mod/profperm.php:139
-msgid "All Connections"
-msgstr "Tutti i contatti"
+#: ../../mod/api.php:77
+msgid "Return to your app and insert this Securty Code:"
+msgstr "Torna alla app e inserisci questo codice di sicurezza:"
-#: ../../mod/connections.php:143
-msgid "Show all connections"
-msgstr "Mostra tutti i contatti"
+#: ../../mod/api.php:89
+msgid "Please login to continue."
+msgstr "Accedi al sito per continuare."
-#: ../../mod/connections.php:146
-msgid "Unblocked"
-msgstr "Non bloccati"
+#: ../../mod/api.php:104
+msgid ""
+"Do you want to authorize this application to access your posts and contacts,"
+" and/or create new posts for you?"
+msgstr "Vuoi autorizzare questa app ad accedere ai messaggi e ai contatti o creare nuovi messaggi per te?"
-#: ../../mod/connections.php:149
-msgid "Only show unblocked connections"
-msgstr "Mostra solo i contatti non bloccati"
+#: ../../mod/pdledit.php:13
+msgid "Layout updated."
+msgstr "Layout aggiornato."
-#: ../../mod/connections.php:156
-msgid "Only show blocked connections"
-msgstr "Mostra solo i contatti bloccati"
+#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
+msgid "Edit System Page Description"
+msgstr "Modifica i layout di sistema"
-#: ../../mod/connections.php:163
-msgid "Only show ignored connections"
-msgstr "Mostra solo i contatti ignorati"
+#: ../../mod/pdledit.php:48
+msgid "Layout not found."
+msgstr "Layout non trovato."
-#: ../../mod/connections.php:170
-msgid "Only show archived connections"
-msgstr "Mostra solo i contatti archiviati"
+#: ../../mod/pdledit.php:54
+msgid "Module Name:"
+msgstr "Nome del modulo:"
-#: ../../mod/connections.php:177
-msgid "Only show hidden connections"
-msgstr "Mostra solo i contatti nascosti"
+#: ../../mod/pdledit.php:55
+msgid "Layout Help"
+msgstr "Guida al layout"
-#: ../../mod/connections.php:232
-#, php-format
-msgid "%1$s [%2$s]"
-msgstr "%1$s [%2$s]"
+#: ../../mod/appman.php:28 ../../mod/appman.php:44
+msgid "App installed."
+msgstr "App installata"
-#: ../../mod/connections.php:233
-msgid "Edit connection"
-msgstr "Modifica il contatto"
+#: ../../mod/appman.php:37
+msgid "Malformed app."
+msgstr "App non corretta"
-#: ../../mod/connections.php:271
-msgid "Search your connections"
-msgstr "Cerca tra i contatti"
+#: ../../mod/appman.php:80
+msgid "Embed code"
+msgstr "Inserisci del codice"
-#: ../../mod/connections.php:272
-msgid "Finding: "
-msgstr "Ricerca: "
+#: ../../mod/appman.php:86
+msgid "Edit App"
+msgstr "Modifica app"
-#: ../../mod/blocks.php:95 ../../mod/blocks.php:148
-msgid "Block Name"
-msgstr "Nome del riquadro"
+#: ../../mod/appman.php:86
+msgid "Create App"
+msgstr "Crea una app"
-#: ../../mod/blocks.php:149
-msgid "Block Title"
-msgstr "Nome del riquadro"
+#: ../../mod/appman.php:91
+msgid "Name of app"
+msgstr "Nome app"
-#: ../../mod/editpost.php:20 ../../mod/editlayout.php:76
-#: ../../mod/editwebpage.php:77 ../../mod/editblock.php:78
-#: ../../mod/editblock.php:94
-msgid "Item not found"
-msgstr "Elemento non trovato"
+#: ../../mod/appman.php:92
+msgid "Location (URL) of app"
+msgstr "Indirizzo (URL) della app"
-#: ../../mod/editpost.php:31
-msgid "Item is not editable"
-msgstr "L'elemento non è modificabile"
+#: ../../mod/appman.php:93 ../../mod/rbmark.php:95
+msgid "Description"
+msgstr "Descrizione"
-#: ../../mod/editpost.php:48
-msgid "Delete item?"
-msgstr "Eliminare questo elemento?"
+#: ../../mod/appman.php:94
+msgid "Photo icon URL"
+msgstr "URL icona"
-#: ../../mod/editpost.php:115 ../../mod/editlayout.php:142
-#: ../../mod/editwebpage.php:187 ../../mod/editblock.php:144
-msgid "Insert YouTube video"
-msgstr "Inserisci video da YouTube"
+#: ../../mod/appman.php:94
+msgid "80 x 80 pixels - optional"
+msgstr "80 x 80 pixel - facoltativa"
-#: ../../mod/editpost.php:116 ../../mod/editlayout.php:143
-#: ../../mod/editwebpage.php:188 ../../mod/editblock.php:145
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Inserisci video Vorbis [.ogg]"
+#: ../../mod/appman.php:95
+msgid "Version ID"
+msgstr "ID versione"
-#: ../../mod/editpost.php:117 ../../mod/editlayout.php:144
-#: ../../mod/editwebpage.php:189 ../../mod/editblock.php:146
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Inserisci audio Vorbis [.ogg]"
+#: ../../mod/appman.php:96
+msgid "Price of app"
+msgstr "Prezzo app"
-#: ../../mod/cloud.php:120
-msgid "$Projectname - Guests: Username: {your email address}, Password: +++"
-msgstr "Login su $Projectname. Username: {la tua email}, Password: {la tua password} "
+#: ../../mod/appman.php:97
+msgid "Location (URL) to purchase app"
+msgstr "Indirizzo (URL) per acquistare la app"
#: ../../mod/photos.php:78
msgid "Page owner information could not be retrieved."
@@ -4865,6 +4957,12 @@ msgstr "Elimina album"
msgid "Delete Photo"
msgstr "Elimina foto"
+#: ../../mod/photos.php:441 ../../mod/directory.php:59
+#: ../../mod/display.php:13 ../../mod/ratings.php:82 ../../mod/search.php:13
+#: ../../mod/viewconnections.php:17
+msgid "Public access denied."
+msgstr "Accesso pubblico negato."
+
#: ../../mod/photos.php:452
msgid "No photos selected"
msgstr "Nessuna foto selezionata"
@@ -4940,10 +5038,22 @@ msgstr "Usa come foto del profilo"
msgid "Private Photo"
msgstr "Foto privata"
+#: ../../mod/photos.php:839 ../../mod/events.php:505
+msgid "Previous"
+msgstr "Precendente"
+
#: ../../mod/photos.php:843
msgid "View Full Size"
msgstr "Vedi nelle dimensioni originali"
+#: ../../mod/photos.php:848 ../../mod/events.php:506 ../../mod/setup.php:281
+msgid "Next"
+msgstr "Successivo"
+
+#: ../../mod/photos.php:887 ../../mod/tagrm.php:133
+msgid "Remove"
+msgstr "Rimuovi"
+
#: ../../mod/photos.php:921
msgid "Edit photo"
msgstr "Modifica la foto"
@@ -4988,218 +5098,155 @@ msgstr "Guarda l'album"
msgid "Recent Photos"
msgstr "Foto recenti"
-#: ../../mod/search.php:206
-#, php-format
-msgid "Items tagged with: %s"
-msgstr "Elementi taggati con: %s"
-
-#: ../../mod/search.php:208
-#, php-format
-msgid "Search results for: %s"
-msgstr "Risultati ricerca: %s"
-
-#: ../../mod/match.php:22
-msgid "Profile Match"
-msgstr "Profili corrispondenti"
-
-#: ../../mod/match.php:31
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr "Non hai scritto parole chiave. Aggiungi parole chiave al tuo profilo predefinito per comparire nelle ricerche."
+#: ../../mod/attach.php:9
+msgid "Item not available."
+msgstr "Elemento non disponibile."
-#: ../../mod/match.php:63
-msgid "is interested in:"
-msgstr "interessi personali:"
+#: ../../mod/ping.php:263
+msgid "sent you a private message"
+msgstr "ti ha inviato un messaggio privato"
-#: ../../mod/match.php:70
-msgid "No matches"
-msgstr "Nessun risultato"
+#: ../../mod/ping.php:314
+msgid "added your channel"
+msgstr "ha aggiunto il tuo canale"
-#: ../../mod/chatsvc.php:111
-msgid "Away"
-msgstr "Assente"
+#: ../../mod/ping.php:355
+msgid "posted an event"
+msgstr "ha creato un evento"
-#: ../../mod/chatsvc.php:115
-msgid "Online"
-msgstr "Online"
+#: ../../mod/blocks.php:95 ../../mod/blocks.php:148
+msgid "Block Name"
+msgstr "Nome del riquadro"
-#: ../../mod/rbmark.php:88
-msgid "Select a bookmark folder"
-msgstr "Scegli una cartella di segnalibri"
+#: ../../mod/blocks.php:149
+msgid "Block Title"
+msgstr "Nome del riquadro"
-#: ../../mod/rbmark.php:93
-msgid "Save Bookmark"
-msgstr "Salva segnalibro"
+#: ../../mod/poke.php:159
+msgid "Poke/Prod"
+msgstr "Poke/Prod"
-#: ../../mod/rbmark.php:94
-msgid "URL of bookmark"
-msgstr "URL del segnalibro"
+#: ../../mod/poke.php:160
+msgid "poke, prod or do other things to somebody"
+msgstr "Manda un poke, un prod o altro"
-#: ../../mod/rbmark.php:95 ../../mod/appman.php:93
-msgid "Description"
-msgstr "Descrizione"
+#: ../../mod/poke.php:161
+msgid "Recipient"
+msgstr "Destinatario"
-#: ../../mod/rbmark.php:99
-msgid "Or enter new bookmark folder name"
-msgstr "O inserisci il nome di una nuova cartella di segnalibri"
+#: ../../mod/poke.php:162
+msgid "Choose what you wish to do to recipient"
+msgstr "Scegli cosa vuoi inviare al destinatario"
-#: ../../mod/notify.php:53 ../../mod/notifications.php:94
-msgid "No more system notifications."
-msgstr "Non ci sono nuove notifiche di sistema."
+#: ../../mod/poke.php:165
+msgid "Make this post private"
+msgstr "Rendi privato questo post"
-#: ../../mod/notify.php:57 ../../mod/notifications.php:98
-msgid "System Notifications"
-msgstr "Notifiche di sistema"
+#: ../../mod/bookmarks.php:38
+msgid "Bookmark added"
+msgstr "Segnalibro aggiunto"
-#: ../../mod/acl.php:231
-msgid "network"
-msgstr "rete"
+#: ../../mod/bookmarks.php:60
+msgid "My Bookmarks"
+msgstr "I miei segnalibri"
-#: ../../mod/acl.php:241
-msgid "RSS"
-msgstr "RSS"
+#: ../../mod/bookmarks.php:71
+msgid "My Connections Bookmarks"
+msgstr "I segnalibri dei miei contatti"
-#: ../../mod/pdledit.php:13
-msgid "Layout updated."
-msgstr "Layout aggiornato."
+#: ../../mod/manage.php:136
+#, php-format
+msgid "You have created %1$.0f of %2$.0f allowed channels."
+msgstr "Hai creato %1$.0f dei %2$.0f canali permessi."
-#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
-msgid "Edit System Page Description"
-msgstr "Modifica i layout di sistema"
+#: ../../mod/manage.php:144
+msgid "Create a new channel"
+msgstr "Crea un nuovo canale"
-#: ../../mod/pdledit.php:48
-msgid "Layout not found."
-msgstr "Layout non trovato."
+#: ../../mod/manage.php:167
+msgid "Current Channel"
+msgstr "Canale attuale"
-#: ../../mod/pdledit.php:54
-msgid "Module Name:"
-msgstr "Nome del modulo:"
+#: ../../mod/manage.php:169
+msgid "Switch to one of your channels by selecting it."
+msgstr "Per passare a un altro tuo canale selezionalo."
-#: ../../mod/pdledit.php:55
-msgid "Layout Help"
-msgstr "Guida al layout"
+#: ../../mod/manage.php:170
+msgid "Default Channel"
+msgstr "Canale predefinito"
-#: ../../mod/filer.php:49
-msgid "- select -"
-msgstr "- scegli -"
+#: ../../mod/manage.php:171
+msgid "Make Default"
+msgstr "Rendi predefinito"
-#: ../../mod/import.php:25
+#: ../../mod/manage.php:174
#, php-format
-msgid "Your service plan only allows %d channels."
-msgstr "Il tuo account permette di creare al massimo %d canali."
-
-#: ../../mod/import.php:60
-msgid "Nothing to import."
-msgstr "Non c'è niente da importare."
-
-#: ../../mod/import.php:84
-msgid "Unable to download data from old server"
-msgstr "Impossibile importare i dati dal vecchio server"
-
-#: ../../mod/import.php:90
-msgid "Imported file is empty."
-msgstr "Il file da importare è vuoto."
-
-#: ../../mod/import.php:110
-msgid "The data provided is not compatible with this project."
-msgstr "I dati forniti non sono compatibili con questo hub."
+msgid "%d new messages"
+msgstr "%d nuovi messaggi"
-#: ../../mod/import.php:115
+#: ../../mod/manage.php:175
#, php-format
-msgid "Warning: Database versions differ by %1$d updates."
-msgstr "Attenzione: le versioni di database differiscono di %1$d aggiornamenti."
-
-#: ../../mod/import.php:135
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "Non posso creare un canale con un identificativo che già esiste su questo sistema. L'importazione è fallita."
-
-#: ../../mod/import.php:176
-msgid "Channel clone failed. Import failed."
-msgstr "Impossibile clonare il canale. L'importazione è fallita."
+msgid "%d new introductions"
+msgstr "%d nuove richieste di entrare in contatto"
-#: ../../mod/import.php:186
-msgid "Cloned channel not found. Import failed."
-msgstr "Impossibile trovare il canale clonato. L'importazione è fallita."
+#: ../../mod/manage.php:177
+msgid "Delegated Channels"
+msgstr "Canali delegati"
-#: ../../mod/import.php:574
-msgid "You must be logged in to use this feature."
-msgstr "Per questa funzionalità devi aver effettuato l'accesso."
+#: ../../mod/match.php:22
+msgid "Profile Match"
+msgstr "Profili corrispondenti"
-#: ../../mod/import.php:579
-msgid "Import Channel"
-msgstr "Importa un canale"
+#: ../../mod/match.php:31
+msgid "No keywords to match. Please add keywords to your default profile."
+msgstr "Non hai scritto parole chiave. Aggiungi parole chiave al tuo profilo predefinito per comparire nelle ricerche."
-#: ../../mod/import.php:580
-msgid ""
-"Use this form to import an existing channel from a different server/hub. You"
-" may retrieve the channel identity from the old server/hub via the network "
-"or provide an export file."
-msgstr "Usa questo modulo per importare un tuo canale da un altro server/hub. Puoi ottenere i dati identificativi del canale direttamente dall'altro server/hub oppure tramite un file esportato in precedenza."
+#: ../../mod/match.php:63
+msgid "is interested in:"
+msgstr "interessi personali:"
-#: ../../mod/import.php:581
-msgid "File to Upload"
-msgstr "File da caricare"
+#: ../../mod/match.php:70
+msgid "No matches"
+msgstr "Nessun risultato"
-#: ../../mod/import.php:582
-msgid "Or provide the old server/hub details"
-msgstr "Oppure fornisci i dettagli del vecchio server/hub"
+#: ../../mod/bulksetclose.php:89 ../../mod/group.php:196
+msgid "Members"
+msgstr "Membri"
-#: ../../mod/import.php:583
-msgid "Your old identity address (xyz@example.com)"
-msgstr "Il tuo vecchio identificativo (per esempio pippo@esempio.com)"
+#: ../../mod/bulksetclose.php:91 ../../mod/group.php:198
+msgid "All Connected Channels"
+msgstr "Tutti i canali connessi"
-#: ../../mod/import.php:584
-msgid "Your old login email address"
-msgstr "L'email che usavi per accedere sul vecchio server"
+#: ../../mod/bulksetclose.php:126 ../../mod/group.php:233
+msgid "Click on a channel to add or remove."
+msgstr "Clicca su un canale per aggiungerlo o rimuoverlo."
-#: ../../mod/import.php:585
-msgid "Your old login password"
-msgstr "La password per il vecchio server"
+#: ../../mod/poll.php:64
+msgid "Poll"
+msgstr "Sondaggio"
-#: ../../mod/import.php:586
-msgid ""
-"For either option, please choose whether to make this hub your new primary "
-"address, or whether your old location should continue this role. You will be"
-" able to post from either location, but only one can be marked as the "
-"primary location for files, photos, and media."
-msgstr "Scegli se vuoi spostare il tuo indirizzo primario su questo server, oppure se preferisci che quello vecchio resti tale. Potrai pubblicare da entrambi i server, ma solamente uno sarà indicato come posizione in cui risiedono i tuoi file, foto, ecc."
+#: ../../mod/poll.php:69
+msgid "View Results"
+msgstr "Guarda i risultati"
-#: ../../mod/import.php:587
-msgid "Make this hub my primary location"
-msgstr "Rendi questo server il mio indirizzo primario"
+#: ../../mod/channel.php:25 ../../mod/chat.php:19
+msgid "You must be logged in to see this page."
+msgstr "Devi aver effettuato l'accesso per vedere questa pagina."
-#: ../../mod/import.php:588
-msgid ""
-"Import existing posts if possible (experimental - limited by available "
-"memory"
-msgstr "Importa i contenuti pubblicati, se possibile (sperimentale)"
+#: ../../mod/channel.php:97
+msgid "Insufficient permissions. Request redirected to profile page."
+msgstr "Permessi insufficienti. Sarà visualizzata la pagina del profilo."
-#: ../../mod/import.php:589
+#: ../../mod/post.php:236
msgid ""
-"This process may take several minutes to complete. Please submit the form "
-"only once and leave this page open until finished."
-msgstr "Questa funzione potrebbe impiegare molto tempo a terminare. Per favore lanciala *una volta sola* e resta su questa pagina finché non avrà finito."
-
-#: ../../mod/editlayout.php:111
-msgid "Delete layout?"
-msgstr "Vuoi eliminare questo layout?"
-
-#: ../../mod/editlayout.php:158 ../../mod/layouts.php:124
-msgid "Layout Description (Optional)"
-msgstr "Descrizione del layout (facoltativa)"
-
-#: ../../mod/editlayout.php:160 ../../mod/layouts.php:121
-#: ../../mod/layouts.php:179
-msgid "Layout Name"
-msgstr "Nome layout"
-
-#: ../../mod/editlayout.php:177
-msgid "Edit Layout"
-msgstr "Modifica il layout"
+"Remote authentication blocked. You are logged into this site locally. Please"
+" logout and retry."
+msgstr "L'autenticazione magica dal tuo hub non è disponibile. Puoi provare a disconnetterti per tentare di nuovo."
-#: ../../mod/chat.php:19 ../../mod/channel.php:25
-msgid "You must be logged in to see this page."
-msgstr "Devi aver effettuato l'accesso per vedere questa pagina."
+#: ../../mod/post.php:287 ../../mod/openid.php:72 ../../mod/openid.php:180
+#, php-format
+msgid "Welcome %s. Remote authentication successful."
+msgstr "Ciao %s. L'accesso tramite il tuo hub è avvenuto con successo."
#: ../../mod/chat.php:167
msgid "Room not found"
@@ -5238,599 +5285,250 @@ msgstr "Nome dell'area chat"
msgid "%1$s's Chatrooms"
msgstr "Le aree chat di %1$s"
-#: ../../mod/mitem.php:24 ../../mod/menu.php:138
-msgid "Menu not found."
-msgstr "Menù non trovato."
-
-#: ../../mod/mitem.php:48
-msgid "Unable to create element."
-msgstr "Impossibile creare l'elemento."
-
-#: ../../mod/mitem.php:72
-msgid "Unable to update menu element."
-msgstr "Non è possibile aggiornare l'elemento del menù."
-
-#: ../../mod/mitem.php:88
-msgid "Unable to add menu element."
-msgstr "Impossibile aggiungere l'elemento al menù."
-
-#: ../../mod/mitem.php:154 ../../mod/mitem.php:226
-msgid "Menu Item Permissions"
-msgstr "Permessi del menu"
-
-#: ../../mod/mitem.php:155 ../../mod/mitem.php:227 ../../mod/settings.php:1083
-msgid "(click to open/close)"
-msgstr "(clicca per aprire/chiudere)"
-
-#: ../../mod/mitem.php:157 ../../mod/mitem.php:173
-msgid "Link Name"
-msgstr "Nome link"
-
-#: ../../mod/mitem.php:158 ../../mod/mitem.php:231
-msgid "Link or Submenu Target"
-msgstr "Destinazione del link o del sottomenu"
-
-#: ../../mod/mitem.php:158
-msgid "Enter URL of the link or select a menu name to create a submenu"
-msgstr "Inserisci l'indirizzo del link o scegli il nome di un sottomenu"
-
-#: ../../mod/mitem.php:159 ../../mod/mitem.php:232
-msgid "Use magic-auth if available"
-msgstr "Usa l'autenticazione magica se disponibile"
-
-#: ../../mod/mitem.php:160 ../../mod/mitem.php:233
-msgid "Open link in new window"
-msgstr "Apri il link in una nuova finestra"
-
-#: ../../mod/mitem.php:161 ../../mod/mitem.php:234
-msgid "Order in list"
-msgstr "Ordine dell'elenco"
-
-#: ../../mod/mitem.php:161 ../../mod/mitem.php:234
-msgid "Higher numbers will sink to bottom of listing"
-msgstr "I numeri più alti andranno in fondo all'elenco"
-
-#: ../../mod/mitem.php:162
-msgid "Submit and finish"
-msgstr "Salva e termina"
-
-#: ../../mod/mitem.php:163
-msgid "Submit and continue"
-msgstr "Salva e continua"
-
-#: ../../mod/mitem.php:171
-msgid "Menu:"
-msgstr "Menu:"
-
-#: ../../mod/mitem.php:174
-msgid "Link Target"
-msgstr "Destinazione link"
-
-#: ../../mod/mitem.php:177
-msgid "Edit menu"
-msgstr "Modifica il menù"
-
-#: ../../mod/mitem.php:180
-msgid "Edit element"
-msgstr "Modifica l'elemento"
-
-#: ../../mod/mitem.php:181
-msgid "Drop element"
-msgstr "Elimina l'elemento"
-
-#: ../../mod/mitem.php:182
-msgid "New element"
-msgstr "Nuovo elemento"
-
-#: ../../mod/mitem.php:183
-msgid "Edit this menu container"
-msgstr "Modifica il contenitore del menù"
-
-#: ../../mod/mitem.php:184
-msgid "Add menu element"
-msgstr "Aggiungi un elemento al menù"
-
-#: ../../mod/mitem.php:185
-msgid "Delete this menu item"
-msgstr "Elimina questo elemento del menù"
-
-#: ../../mod/mitem.php:186
-msgid "Edit this menu item"
-msgstr "Modifica questo elemento del menù"
-
-#: ../../mod/mitem.php:203
-msgid "Menu item not found."
-msgstr "L'elemento del menù non è stato trovato."
-
-#: ../../mod/mitem.php:215
-msgid "Menu item deleted."
-msgstr "L'elemento del menù è stato eliminato."
-
-#: ../../mod/mitem.php:217
-msgid "Menu item could not be deleted."
-msgstr "L'elemento del menù non può essere eliminato."
-
-#: ../../mod/mitem.php:224
-msgid "Edit Menu Element"
-msgstr "Modifica l'elemento del menù"
-
-#: ../../mod/mitem.php:230
-msgid "Link text"
-msgstr "Testo del link"
-
-#: ../../mod/editwebpage.php:152
-msgid "Delete webpage?"
-msgstr "Vuoi eliminare questa pagina web?"
-
-#: ../../mod/editwebpage.php:173
-msgid "Page link title"
-msgstr "Link del titolo"
-
-#: ../../mod/editwebpage.php:224
-msgid "Edit Webpage"
-msgstr "Modifica la pagina web"
-
-#: ../../mod/dirsearch.php:29
-msgid "This directory server requires an access token"
-msgstr "Questo server di elenchi pubblici necessita di un token di autenticazione"
-
-#: ../../mod/lostpass.php:15
-msgid "No valid account found."
-msgstr "Nessun account valido trovato."
-
-#: ../../mod/lostpass.php:29
-msgid "Password reset request issued. Check your email."
-msgstr "La richiesta per reimpostare la password è stata inviata. Controlla la tua email."
+#: ../../mod/chatsvc.php:111
+msgid "Away"
+msgstr "Assente"
-#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:103
-#, php-format
-msgid "Site Member (%s)"
-msgstr "Utente del sito (%s)"
+#: ../../mod/chatsvc.php:115
+msgid "Online"
+msgstr "Online"
-#: ../../mod/lostpass.php:40
+#: ../../mod/probe.php:24 ../../mod/probe.php:30
#, php-format
-msgid "Password reset requested at %s"
-msgstr "È stato richiesto di reimpostare password su %s"
+msgid "Fetching URL returns error: %1$s"
+msgstr "La chiamata all'URL restituisce questo errore: %1$s"
-#: ../../mod/lostpass.php:63
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "La richiesta non può essere verificata (potresti averla già usata precedentemente). La password non sarà reimpostata."
+#: ../../mod/cloud.php:120
+msgid "$Projectname - Guests: Username: {your email address}, Password: +++"
+msgstr "Login su $Projectname. Username: {la tua email}, Password: {la tua password} "
-#: ../../mod/lostpass.php:86 ../../boot.php:1558
-msgid "Password Reset"
-msgstr "Reimposta la password"
+#: ../../mod/common.php:10
+msgid "No channel."
+msgstr "Nessun canale."
-#: ../../mod/lostpass.php:87
-msgid "Your password has been reset as requested."
-msgstr "La password è stata reimpostata come richiesto."
+#: ../../mod/common.php:39
+msgid "Common connections"
+msgstr "Contatti in comune"
-#: ../../mod/lostpass.php:88
-msgid "Your new password is"
-msgstr "La tua nuova password è"
+#: ../../mod/common.php:44
+msgid "No connections in common."
+msgstr "Nessun contatto in comune."
-#: ../../mod/lostpass.php:89
-msgid "Save or copy your new password - and then"
-msgstr "Salva o copia la tua nuova password, quindi"
+#: ../../mod/profile_photo.php:108
+msgid "Image uploaded but image cropping failed."
+msgstr "L'immagine è stata caricata, ma il non è stato possibile ritagliarla."
-#: ../../mod/lostpass.php:90
-msgid "click here to login"
-msgstr "clicca qui per accedere"
+#: ../../mod/profile_photo.php:162
+msgid "Image resize failed."
+msgstr "Il ridimensionamento dell'immagine è fallito."
-#: ../../mod/lostpass.php:91
+#: ../../mod/profile_photo.php:206
msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Puoi cambiare la tua password dalla pagina delle <em>Impostazioni</em> dopo aver effettuato l'accesso."
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Ricarica la pagina con shift+F5 o cancella la cache del browser se la nuova foto non viene mostrata immediatamente."
-#: ../../mod/lostpass.php:108
+#: ../../mod/profile_photo.php:233
#, php-format
-msgid "Your password has changed at %s"
-msgstr "La tua password su %s è cambiata"
-
-#: ../../mod/lostpass.php:123
-msgid "Forgot your Password?"
-msgstr "Hai dimenticato la password?"
-
-#: ../../mod/lostpass.php:124
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Inserisci il tuo indirizzo email per reimpostare la password. Dopo aver inviato la richiesta, controlla l'email e troverai le istruzioni per continuare."
+msgid "Image exceeds size limit of %d"
+msgstr "La dimensione dell'immagine supera il limite di %d"
-#: ../../mod/lostpass.php:125
-msgid "Email Address"
-msgstr "Indirizzo email"
+#: ../../mod/profile_photo.php:242
+msgid "Unable to process image."
+msgstr "Impossibile elaborare l'immagine."
-#: ../../mod/lostpass.php:126
-msgid "Reset"
-msgstr "Reimposta"
+#: ../../mod/profile_photo.php:291 ../../mod/profile_photo.php:340
+msgid "Photo not available."
+msgstr "Foto non disponibile."
-#: ../../mod/rate.php:157
-msgid "Website:"
-msgstr "Sito web:"
+#: ../../mod/profile_photo.php:359
+msgid "Upload File:"
+msgstr "Carica un file:"
-#: ../../mod/rate.php:160
-#, php-format
-msgid "Remote Channel [%s] (not yet known on this site)"
-msgstr "Canale remoto [%s] (non ancora conosciuto da questo sito)"
+#: ../../mod/profile_photo.php:360
+msgid "Select a profile:"
+msgstr "Seleziona un profilo:"
-#: ../../mod/rate.php:161
-msgid "Rating (this information is public)"
-msgstr "Valutazione (visibile a tutti)"
+#: ../../mod/profile_photo.php:361
+msgid "Upload Profile Photo"
+msgstr "Carica la foto del profilo"
-#: ../../mod/rate.php:162
-msgid "Optionally explain your rating (this information is public)"
-msgstr "Commento alla valutazione (facoltativo, visibile a tutti)"
+#: ../../mod/profile_photo.php:366 ../../mod/settings.php:995
+msgid "or"
+msgstr "o"
-#: ../../mod/editblock.php:117
-msgid "Delete block?"
-msgstr "Vuoi eliminare questo riquadro?"
+#: ../../mod/profile_photo.php:366
+msgid "skip this step"
+msgstr "salta questo passaggio"
-#: ../../mod/editblock.php:179
-msgid "Edit Block"
-msgstr "Modifica il riquadro"
+#: ../../mod/profile_photo.php:366
+msgid "select a photo from your photo albums"
+msgstr "seleziona una foto dai tuoi album"
-#: ../../mod/invite.php:25
-msgid "Total invitation limit exceeded."
-msgstr "Hai superato il numero massimo di inviti."
+#: ../../mod/profile_photo.php:382
+msgid "Crop Image"
+msgstr "Ritaglia immagine"
-#: ../../mod/invite.php:49
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s: non è un indirizzo email valido."
+#: ../../mod/profile_photo.php:383
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Ritaglia l'immagine per migliorarne la visualizzazione."
-#: ../../mod/invite.php:76
-msgid "Please join us on Red"
-msgstr "Vieni con noi su RedMatrix"
+#: ../../mod/profile_photo.php:385
+msgid "Done Editing"
+msgstr "Modifica terminata"
-#: ../../mod/invite.php:87
-msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr "Hai superato il numero massimo di inviti. Contatta l'amministratore se necessario."
+#: ../../mod/profile_photo.php:428
+msgid "Image uploaded successfully."
+msgstr "Immagine caricata con successo."
-#: ../../mod/invite.php:92
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s: la consegna del messaggio è fallita."
+#: ../../mod/profile_photo.php:430
+msgid "Image upload failed."
+msgstr "Il caricamento dell'immagine è fallito."
-#: ../../mod/invite.php:96
+#: ../../mod/profile_photo.php:439
#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d messaggio inviato."
-msgstr[1] "%d messaggi inviati."
-
-#: ../../mod/invite.php:115
-msgid "You have no more invitations available"
-msgstr "Non hai altri inviti disponibili"
-
-#: ../../mod/invite.php:129
-msgid "Send invitations"
-msgstr "Spedisci inviti"
-
-#: ../../mod/invite.php:130
-msgid "Enter email addresses, one per line:"
-msgstr "Inserisci gli indirizzi email, uno per riga:"
+msgid "Image size reduction [%s] failed."
+msgstr "Il ridimensionamento del'immagine [%s] è fallito."
-#: ../../mod/invite.php:131 ../../mod/mail.php:235 ../../mod/mail.php:348
-msgid "Your message:"
-msgstr "Il tuo messaggio:"
+#: ../../mod/connect.php:56 ../../mod/connect.php:104
+msgid "Continue"
+msgstr "Continua"
-#: ../../mod/invite.php:132
-msgid "Please join my community on $Projectname."
-msgstr "Entra nella mia comunità su $Projectname."
+#: ../../mod/connect.php:85
+msgid "Premium Channel Setup"
+msgstr "Canale premium - installazione"
-#: ../../mod/invite.php:134
-msgid "You will need to supply this invitation code: "
-msgstr "Dovrai fornire questo codice di invito:"
+#: ../../mod/connect.php:87
+msgid "Enable premium channel connection restrictions"
+msgstr "Abilita le restrizioni del canale premium"
-#: ../../mod/invite.php:135
+#: ../../mod/connect.php:88
msgid ""
-"1. Register at any $Projectname location (they are all inter-connected)"
-msgstr "1. Registrati su qualsiasi server $Projectname (sono tutti interconnessi)"
-
-#: ../../mod/invite.php:137
-msgid "2. Enter my $Projectname network address into the site searchbar."
-msgstr "2. Inserisci il mio indirizzo $Projectname nel riquadro di ricerca del sito."
-
-#: ../../mod/invite.php:138
-msgid "or visit "
-msgstr "oppure visita "
-
-#: ../../mod/invite.php:140
-msgid "3. Click [Connect]"
-msgstr "3. Clicca su [Aggiungi]"
-
-#: ../../mod/locs.php:21 ../../mod/locs.php:52
-msgid "Location not found."
-msgstr "Indirizzo non trovato."
-
-#: ../../mod/locs.php:56
-msgid "Primary location cannot be removed."
-msgstr "L'indirizzo principale non può essere rimosso."
-
-#: ../../mod/locs.php:88
-msgid "No locations found."
-msgstr "Nessun indirizzo trovato."
-
-#: ../../mod/locs.php:101
-msgid "Manage Channel Locations"
-msgstr "Modifica gli indirizzi del canale"
-
-#: ../../mod/locs.php:102
-msgid "Location (address)"
-msgstr "Indirizzo"
-
-#: ../../mod/locs.php:103
-msgid "Primary Location"
-msgstr "Indirizzo primario"
-
-#: ../../mod/locs.php:104
-msgid "Drop location"
-msgstr "Elimina un indirizzo"
-
-#: ../../mod/sources.php:32
-msgid "Failed to create source. No channel selected."
-msgstr "Impossibile creare la sorgente. Nessun canale selezionato."
-
-#: ../../mod/sources.php:45
-msgid "Source created."
-msgstr "Sorgente creata."
-
-#: ../../mod/sources.php:57
-msgid "Source updated."
-msgstr "Sorgente aggiornata."
-
-#: ../../mod/sources.php:82
-msgid "*"
-msgstr "*"
-
-#: ../../mod/sources.php:89
-msgid "Manage remote sources of content for your channel."
-msgstr "Gestisci le sorgenti dei contenuti del tuo canale."
-
-#: ../../mod/sources.php:90 ../../mod/sources.php:100
-msgid "New Source"
-msgstr "Nuova sorgente"
+"Please enter your restrictions or conditions, such as paypal receipt, usage "
+"guidelines, etc."
+msgstr "Scrivi le condizioni d'uso e le restrizioni di questo canale, come per esempio le linee guida, il sistema di pagamento, ecc."
-#: ../../mod/sources.php:101 ../../mod/sources.php:133
+#: ../../mod/connect.php:90 ../../mod/connect.php:110
msgid ""
-"Import all or selected content from the following channel into this channel "
-"and distribute it according to your channel settings."
-msgstr "Importa nel tuo canale tutti o una parte dei contenuti dal canale seguente."
-
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Only import content with these words (one per line)"
-msgstr "Importa solo i contenuti che hanno queste parole (una per riga)"
-
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Leave blank to import all public content"
-msgstr "Lascia vuoto per importare tutti i contenuti pubblici"
-
-#: ../../mod/sources.php:103 ../../mod/sources.php:137
-#: ../../mod/new_channel.php:112
-msgid "Channel Name"
-msgstr "Nome del canale"
-
-#: ../../mod/sources.php:123 ../../mod/sources.php:150
-msgid "Source not found."
-msgstr "Sorgente non trovata."
-
-#: ../../mod/sources.php:130
-msgid "Edit Source"
-msgstr "Modifica la sorgente"
-
-#: ../../mod/sources.php:131
-msgid "Delete Source"
-msgstr "Elimina la sorgente"
-
-#: ../../mod/sources.php:158
-msgid "Source removed"
-msgstr "Sorgente eliminata"
-
-#: ../../mod/sources.php:160
-msgid "Unable to remove source."
-msgstr "Impossibile rimuovere la sorgente."
-
-#: ../../mod/menu.php:45
-msgid "Unable to update menu."
-msgstr "Impossibile aggiornare il menù."
-
-#: ../../mod/menu.php:56
-msgid "Unable to create menu."
-msgstr "Impossibile creare il menù."
-
-#: ../../mod/menu.php:92 ../../mod/menu.php:104
-msgid "Menu Name"
-msgstr "Nome del menu"
-
-#: ../../mod/menu.php:92
-msgid "Unique name (not visible on webpage) - required"
-msgstr "Nome unico (non visibile sulla pagina) - obbligatorio"
-
-#: ../../mod/menu.php:93 ../../mod/menu.php:105
-msgid "Menu Title"
-msgstr "Titolo del menu"
-
-#: ../../mod/menu.php:93
-msgid "Visible on webpage - leave empty for no title"
-msgstr "Visibile sulla pagina - lascia vuoto per non avere un titolo"
-
-#: ../../mod/menu.php:94
-msgid "Allow Bookmarks"
-msgstr "Permetti i segnalibri"
-
-#: ../../mod/menu.php:94 ../../mod/menu.php:151
-msgid "Menu may be used to store saved bookmarks"
-msgstr "Puoi salvare i segnalibri nei menù"
-
-#: ../../mod/menu.php:95 ../../mod/menu.php:153
-msgid "Submit and proceed"
-msgstr "Salva e procedi"
-
-#: ../../mod/menu.php:107
-msgid "Drop"
-msgstr "Elimina"
-
-#: ../../mod/menu.php:111
-msgid "Bookmarks allowed"
-msgstr "Permetti segnalibri"
-
-#: ../../mod/menu.php:113
-msgid "Delete this menu"
-msgstr "Elimina questo menù"
+"This channel may require additional steps or acknowledgement of the "
+"following conditions prior to connecting:"
+msgstr "Prima di connetterti a questo canale è necessario che tu accetti le seguenti condizioni:"
-#: ../../mod/menu.php:114 ../../mod/menu.php:148
-msgid "Edit menu contents"
-msgstr "Modifica i contenuti del menù"
+#: ../../mod/connect.php:91
+msgid ""
+"Potential connections will then see the following text before proceeding:"
+msgstr "Il testo seguente comparirà a chi vorrà seguire il canale:"
-#: ../../mod/menu.php:115
-msgid "Edit this menu"
-msgstr "Modifica questo menù"
+#: ../../mod/connect.php:92 ../../mod/connect.php:113
+msgid ""
+"By continuing, I certify that I have complied with any instructions provided"
+" on this page."
+msgstr "Continuando dichiaro di aver seguito tutte le indicazioni e le istruzioni fornite in questa pagina."
-#: ../../mod/menu.php:130
-msgid "Menu could not be deleted."
-msgstr "Il menù non può essere eliminato."
+#: ../../mod/connect.php:101
+msgid "(No specific instructions have been provided by the channel owner.)"
+msgstr "(Il gestore del canale non ha fornito istruzioni specifiche)"
-#: ../../mod/menu.php:143
-msgid "Edit Menu"
-msgstr "Modifica menù"
+#: ../../mod/connect.php:109
+msgid "Restricted or Premium Channel"
+msgstr "Canale premium - con restrizioni"
-#: ../../mod/menu.php:147
-msgid "Add or remove entries to this menu"
-msgstr "Aggiungi o rimuovi elementi di questo menù"
+#: ../../mod/notifications.php:26
+msgid "Invalid request identifier."
+msgstr "L'identificativo della richiesta non è valido."
-#: ../../mod/menu.php:149
-msgid "Menu name"
-msgstr "Nome del menù"
+#: ../../mod/notifications.php:35
+msgid "Discard"
+msgstr "Rifiuta"
-#: ../../mod/menu.php:149
-msgid "Must be unique, only seen by you"
-msgstr "Deve essere unico, lo vedrai solo tu"
+#: ../../mod/notifications.php:51 ../../mod/connedit.php:539
+msgid "Ignore"
+msgstr "Ignora"
-#: ../../mod/menu.php:150
-msgid "Menu title"
-msgstr "Titolo del menù"
+#: ../../mod/notifications.php:94 ../../mod/notify.php:53
+msgid "No more system notifications."
+msgstr "Non ci sono nuove notifiche di sistema."
-#: ../../mod/menu.php:150
-msgid "Menu title as seen by others"
-msgstr "Titolo del menù come comparirà a tutti"
+#: ../../mod/notifications.php:98 ../../mod/notify.php:57
+msgid "System Notifications"
+msgstr "Notifiche di sistema"
-#: ../../mod/menu.php:151
-msgid "Allow bookmarks"
-msgstr "Permetti l'invio di segnalibri"
+#: ../../mod/connections.php:52 ../../mod/connections.php:153
+msgid "Blocked"
+msgstr "Bloccati"
-#: ../../mod/filestorage.php:82
-msgid "Permission Denied."
-msgstr "Permesso negato."
+#: ../../mod/connections.php:57 ../../mod/connections.php:160
+msgid "Ignored"
+msgstr "Ignorati"
-#: ../../mod/filestorage.php:98
-msgid "File not found."
-msgstr "File non trovato."
+#: ../../mod/connections.php:62 ../../mod/connections.php:174
+msgid "Hidden"
+msgstr "Nascosti"
-#: ../../mod/filestorage.php:141
-msgid "Edit file permissions"
-msgstr "Modifica i permessi del file"
+#: ../../mod/connections.php:67 ../../mod/connections.php:167
+msgid "Archived"
+msgstr "Archiviati"
-#: ../../mod/filestorage.php:150
-msgid "Set/edit permissions"
-msgstr "Modifica i permessi"
+#: ../../mod/connections.php:131
+msgid "Suggest new connections"
+msgstr "Suggerisci nuovi contatti"
-#: ../../mod/filestorage.php:151
-msgid "Include all files and sub folders"
-msgstr "Includi tutti i file e le sottocartelle"
+#: ../../mod/connections.php:134
+msgid "New Connections"
+msgstr "Nuovi contatti"
-#: ../../mod/filestorage.php:152
-msgid "Return to file list"
-msgstr "Torna all'elenco dei file"
+#: ../../mod/connections.php:137
+msgid "Show pending (new) connections"
+msgstr "Richieste di contatto in attesa"
-#: ../../mod/filestorage.php:154
-msgid "Copy/paste this code to attach file to a post"
-msgstr "Copia/incolla questo codice per far comparire il file in un post"
+#: ../../mod/connections.php:140 ../../mod/profperm.php:139
+msgid "All Connections"
+msgstr "Tutti i contatti"
-#: ../../mod/filestorage.php:155
-msgid "Copy/paste this URL to link file from a web page"
-msgstr "Copia/incolla questo indirizzo in una pagina web per avere un link al file"
+#: ../../mod/connections.php:143
+msgid "Show all connections"
+msgstr "Mostra tutti i contatti"
-#: ../../mod/filestorage.php:157
-msgid "Share this file"
-msgstr "Condividi questo file"
+#: ../../mod/connections.php:146
+msgid "Unblocked"
+msgstr "Non bloccati"
-#: ../../mod/filestorage.php:158
-msgid "Show URL to this file"
-msgstr "Mostra l'URL del file"
+#: ../../mod/connections.php:149
+msgid "Only show unblocked connections"
+msgstr "Mostra solo i contatti non bloccati"
-#: ../../mod/filestorage.php:159
-msgid "Notify your contacts about this file"
-msgstr "Notifica ai contatti che hai caricato questo file"
+#: ../../mod/connections.php:156
+msgid "Only show blocked connections"
+msgstr "Mostra solo i contatti bloccati"
-#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
-msgid "Contact not found."
-msgstr "Contatto non trovato."
+#: ../../mod/connections.php:163
+msgid "Only show ignored connections"
+msgstr "Mostra solo i contatti ignorati"
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
-msgstr "Suggerimento di amicizia inviato."
+#: ../../mod/connections.php:170
+msgid "Only show archived connections"
+msgstr "Mostra solo i contatti archiviati"
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
-msgstr "Suggerisci amici"
+#: ../../mod/connections.php:177
+msgid "Only show hidden connections"
+msgstr "Mostra solo i contatti nascosti"
-#: ../../mod/fsuggest.php:99
+#: ../../mod/connections.php:232
#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Suggerisci un amico a %s"
-
-#: ../../mod/magic.php:69
-msgid "Hub not found."
-msgstr "Server non trovato."
-
-#: ../../mod/poke.php:159
-msgid "Poke/Prod"
-msgstr "Poke/Prod"
-
-#: ../../mod/poke.php:160
-msgid "poke, prod or do other things to somebody"
-msgstr "Manda un poke, un prod o altro"
-
-#: ../../mod/poke.php:161
-msgid "Recipient"
-msgstr "Destinatario"
-
-#: ../../mod/poke.php:162
-msgid "Choose what you wish to do to recipient"
-msgstr "Scegli cosa vuoi inviare al destinatario"
-
-#: ../../mod/poke.php:165
-msgid "Make this post private"
-msgstr "Rendi privato questo post"
-
-#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
-msgid "Invalid profile identifier."
-msgstr "Indentificativo del profilo non valido."
-
-#: ../../mod/profperm.php:110
-msgid "Profile Visibility Editor"
-msgstr "Modifica la visibilità del profilo"
-
-#: ../../mod/profperm.php:114
-msgid "Click on a contact to add or remove."
-msgstr "Clicca su un contatto per aggiungerlo o rimuoverlo."
+msgid "%1$s [%2$s]"
+msgstr "%1$s [%2$s]"
-#: ../../mod/profperm.php:123
-msgid "Visible To"
-msgstr "Visibile a"
+#: ../../mod/connections.php:233
+msgid "Edit connection"
+msgstr "Modifica il contatto"
-#: ../../mod/impel.php:191
-#, php-format
-msgid "%s element installed"
-msgstr "%s elemento installato"
+#: ../../mod/connections.php:271
+msgid "Search your connections"
+msgstr "Cerca tra i contatti"
-#: ../../mod/impel.php:194
-#, php-format
-msgid "%s element installation failed"
-msgstr "Elementi con installazione fallita: %s"
+#: ../../mod/connections.php:272
+msgid "Finding: "
+msgstr "Ricerca: "
#: ../../mod/profiles.php:18 ../../mod/profiles.php:174
#: ../../mod/profiles.php:231 ../../mod/profiles.php:600
@@ -5905,9 +5603,9 @@ msgstr "Home page"
msgid "Interests"
msgstr "Interessi"
-#: ../../mod/profiles.php:447 ../../mod/admin.php:994
-msgid "Address"
-msgstr "Indirizzo"
+#: ../../mod/profiles.php:454 ../../mod/pubsites.php:26
+msgid "Location"
+msgstr "Posizione geografica"
#: ../../mod/profiles.php:537
msgid "Profile updated."
@@ -6089,1260 +5787,691 @@ msgstr "Aggiungi Oggetti al profilo"
msgid "Include desirable objects in your profile"
msgstr "Aggiungi oggetti interessanti al tuo profilo"
-#: ../../mod/ratings.php:69
-msgid "No ratings"
-msgstr "Nessuna valutazione"
-
-#: ../../mod/ratings.php:99
-msgid "Ratings"
-msgstr "Valutazioni"
-
-#: ../../mod/ratings.php:100
-msgid "Rating: "
-msgstr "Valutazione:"
-
-#: ../../mod/ratings.php:101
-msgid "Website: "
-msgstr "Sito web:"
-
-#: ../../mod/ratings.php:103
-msgid "Description: "
-msgstr "Descrizione:"
-
-#: ../../mod/viewsrc.php:38
-msgid "Source of Item"
-msgstr "Sorgente"
-
-#: ../../mod/setup.php:187
-msgid "$Projectname Server - Setup"
-msgstr "Server $Projectname - Installazione"
-
-#: ../../mod/setup.php:191
-msgid "Could not connect to database."
-msgstr " Impossibile connettersi al database."
-
-#: ../../mod/setup.php:195
-msgid ""
-"Could not connect to specified site URL. Possible SSL certificate or DNS "
-"issue."
-msgstr "Non è possibile raggiungere l'indirizzo del sito specificato. Potrebbe essere un problema di SSL o DNS."
-
-#: ../../mod/setup.php:202
-msgid "Could not create table."
-msgstr "Impossibile creare le tabelle."
-
-#: ../../mod/setup.php:207
-msgid "Your site database has been installed."
-msgstr "Il database del sito è stato installato."
-
-#: ../../mod/setup.php:211
-msgid ""
-"You may need to import the file \"install/schema_xxx.sql\" manually using a "
-"database client."
-msgstr "Potresti dover importare il file 'install/schema_xxx.sql' manualmente usando un client per collegarti al db."
-
-#: ../../mod/setup.php:212 ../../mod/setup.php:280 ../../mod/setup.php:730
-msgid "Please see the file \"install/INSTALL.txt\"."
-msgstr "Leggi il file 'install/INSTALL.txt'."
-
-#: ../../mod/setup.php:277
-msgid "System check"
-msgstr "Verifica del sistema"
-
-#: ../../mod/setup.php:282
-msgid "Check again"
-msgstr "Verifica di nuovo"
-
-#: ../../mod/setup.php:304
-msgid "Database connection"
-msgstr "Connessione al database"
-
-#: ../../mod/setup.php:305
-msgid ""
-"In order to install $Projectname we need to know how to connect to your "
-"database."
-msgstr "Per poter installare $Projectname è necessario fornire i parametri di connessione al tuo database."
-
-#: ../../mod/setup.php:306
-msgid ""
-"Please contact your hosting provider or site administrator if you have "
-"questions about these settings."
-msgstr "Contatta il tuo fornitore di hosting o l'amministratore del sito se hai domande su queste impostazioni."
-
-#: ../../mod/setup.php:307
-msgid ""
-"The database you specify below should already exist. If it does not, please "
-"create it before continuing."
-msgstr "Il database deve già esistere. Se non esiste, crealo prima di continuare."
-
-#: ../../mod/setup.php:311
-msgid "Database Server Name"
-msgstr "Server del database"
-
-#: ../../mod/setup.php:311
-msgid "Default is localhost"
-msgstr "'localhost' è il predefinito"
-
-#: ../../mod/setup.php:312
-msgid "Database Port"
-msgstr "Port del database"
-
-#: ../../mod/setup.php:312
-msgid "Communication port number - use 0 for default"
-msgstr "Scrivi 0 per usare il valore standard"
-
-#: ../../mod/setup.php:313
-msgid "Database Login Name"
-msgstr "Utente database"
-
-#: ../../mod/setup.php:314
-msgid "Database Login Password"
-msgstr "Password utente database"
+#: ../../mod/connedit.php:75
+msgid "Could not access contact record."
+msgstr "Non è possibile accedere alle informazioni sul contatto."
-#: ../../mod/setup.php:315
-msgid "Database Name"
-msgstr "Nome database"
+#: ../../mod/connedit.php:99
+msgid "Could not locate selected profile."
+msgstr "Non riesco a trovare il profilo selezionato."
-#: ../../mod/setup.php:316
-msgid "Database Type"
-msgstr "Tipo database"
+#: ../../mod/connedit.php:219
+msgid "Connection updated."
+msgstr "Contatto aggiornato."
-#: ../../mod/setup.php:318 ../../mod/setup.php:359
-msgid "Site administrator email address"
-msgstr "Indirizzo email dell'amministratore del sito"
+#: ../../mod/connedit.php:221
+msgid "Failed to update connection record."
+msgstr "Impossibile aggiornare le informazioni del contatto."
-#: ../../mod/setup.php:318 ../../mod/setup.php:359
-msgid ""
-"Your account email address must match this in order to use the web admin "
-"panel."
-msgstr "Il tuo indirizzo email deve corrispondere a questo per poter usare il pannello di amministrazione web."
+#: ../../mod/connedit.php:267
+msgid "is now connected to"
+msgstr "ha come nuovo contatto"
-#: ../../mod/setup.php:319 ../../mod/setup.php:361
-msgid "Website URL"
-msgstr "URL completo del sito"
+#: ../../mod/connedit.php:392
+msgid "Could not access address book record."
+msgstr "Impossibile accedere alle informazioni della rubrica."
-#: ../../mod/setup.php:319 ../../mod/setup.php:361
-msgid "Please use SSL (https) URL if available."
-msgstr "Se disponibile, usa l'indirizzo SSL (https)."
+#: ../../mod/connedit.php:406
+msgid "Refresh failed - channel is currently unavailable."
+msgstr "Il canale non è disponibile - impossibile aggiornare."
-#: ../../mod/setup.php:321 ../../mod/setup.php:363
-msgid "Please select a default timezone for your website"
-msgstr "Seleziona il fuso orario predefinito per il tuo sito web"
+#: ../../mod/connedit.php:418 ../../mod/connedit.php:430
+#: ../../mod/connedit.php:442 ../../mod/connedit.php:454
+#: ../../mod/connedit.php:470
+msgid "Unable to set address book parameters."
+msgstr "Impossibile impostare i parametri della rubrica."
-#: ../../mod/setup.php:348
-msgid "Site settings"
-msgstr "Impostazioni del sito"
+#: ../../mod/connedit.php:494
+msgid "Connection has been removed."
+msgstr "Il contatto è stato rimosso."
-#: ../../mod/setup.php:413
-msgid "Could not find a command line version of PHP in the web server PATH."
-msgstr "Non è possibile trovare la versione di PHP da riga di comando nel PATH del server web"
+#: ../../mod/connedit.php:513
+#, php-format
+msgid "View %s's profile"
+msgstr "Guarda il profilo di %s"
-#: ../../mod/setup.php:414
-msgid ""
-"If you don't have a command line version of PHP installed on server, you "
-"will not be able to run background polling via cron."
-msgstr "Se non hai installata la versione di PHP da riga di comando non potrai attivare il polling in background tramite cron."
+#: ../../mod/connedit.php:517
+msgid "Refresh Permissions"
+msgstr "Modifica i permessi"
-#: ../../mod/setup.php:418
-msgid "PHP executable path"
-msgstr "Path del comando PHP"
+#: ../../mod/connedit.php:520
+msgid "Fetch updated permissions"
+msgstr "Guarda e modifica i permessi assegnati"
-#: ../../mod/setup.php:418
-msgid ""
-"Enter full path to php executable. You can leave this blank to continue the "
-"installation."
-msgstr "Inserisci il percorso dell'eseguibile PHP. Puoi lasciarlo vuoto per continuare l'installazione."
+#: ../../mod/connedit.php:524
+msgid "Recent Activity"
+msgstr "Attività recenti"
-#: ../../mod/setup.php:423
-msgid "Command line PHP"
-msgstr "PHP da riga di comando"
+#: ../../mod/connedit.php:527
+msgid "View recent posts and comments"
+msgstr "Leggi i post recenti e i commenti"
-#: ../../mod/setup.php:432
-msgid ""
-"The command line version of PHP on your system does not have "
-"\"register_argc_argv\" enabled."
-msgstr "La versione da riga di comando di PHP nel sistema non ha abilitato \"register_argc_argv\"."
+#: ../../mod/connedit.php:534
+msgid "Block (or Unblock) all communications with this connection"
+msgstr "Blocca ogni interazione con questo contatto (abilita/disabilita)"
-#: ../../mod/setup.php:433
-msgid "This is required for message delivery to work."
-msgstr "E' necessario perché funzioni la consegna dei messaggi."
+#: ../../mod/connedit.php:535
+msgid "This connection is blocked!"
+msgstr "Questa connessione è tra quelle bloccate!"
-#: ../../mod/setup.php:436
-msgid "PHP register_argc_argv"
-msgstr "PHP register_argc_argv"
+#: ../../mod/connedit.php:539
+msgid "Unignore"
+msgstr "Non ignorare"
-#: ../../mod/setup.php:454
-#, php-format
-msgid ""
-"Your max allowed total upload size is set to %s. Maximum size of one file to"
-" upload is set to %s. You are allowed to upload up to %d files at once."
-msgstr "La dimensione massima di un caricamento è impostata a %s. Il singolo file non può superare %s. Ti è permesso caricare max %d file per volta."
+#: ../../mod/connedit.php:542
+msgid "Ignore (or Unignore) all inbound communications from this connection"
+msgstr "Ignora tutte le comunicazioni in arrivo da questo contatto (abilita/disabilita)"
-#: ../../mod/setup.php:459
-msgid "You can adjust these settings in the servers php.ini."
-msgstr "Puoi regolare queste impostazioni sul server in php.ini"
+#: ../../mod/connedit.php:543
+msgid "This connection is ignored!"
+msgstr "Questa connessione è tra quelle ignorate!"
-#: ../../mod/setup.php:461
-msgid "PHP upload limits"
-msgstr "Limiti PHP in upload"
+#: ../../mod/connedit.php:547
+msgid "Unarchive"
+msgstr "Non archiviare"
-#: ../../mod/setup.php:484
-msgid ""
-"Error: the \"openssl_pkey_new\" function on this system is not able to "
-"generate encryption keys"
-msgstr "Errore: la funzione \"openssl_pkey_new\" su questo sistema non è in grado di generare le chiavi di criptazione"
+#: ../../mod/connedit.php:547
+msgid "Archive"
+msgstr "Archivia"
-#: ../../mod/setup.php:485
+#: ../../mod/connedit.php:550
msgid ""
-"If running under Windows, please see "
-"\"http://www.php.net/manual/en/openssl.installation.php\"."
-msgstr "Se stai usando un server windows, guarda \"http://www.php.net/manual/en/openssl.installation.php\"."
+"Archive (or Unarchive) this connection - mark channel dead but keep content"
+msgstr "Archivia questo contatto (abilita/disabilita) - segna il canale come non più attivo ma ne conserva i contenuti"
-#: ../../mod/setup.php:488
-msgid "Generate encryption keys"
-msgstr "Genera chiavi di criptazione"
+#: ../../mod/connedit.php:551
+msgid "This connection is archived!"
+msgstr "Questa connessione è tra quelle archiviate!"
-#: ../../mod/setup.php:500
-msgid "libCurl PHP module"
-msgstr "modulo PHP libCurl"
+#: ../../mod/connedit.php:555
+msgid "Unhide"
+msgstr "Non nascondere"
-#: ../../mod/setup.php:501
-msgid "GD graphics PHP module"
-msgstr "modulo PHP GD graphics"
+#: ../../mod/connedit.php:555
+msgid "Hide"
+msgstr "Nascondi"
-#: ../../mod/setup.php:502
-msgid "OpenSSL PHP module"
-msgstr "modulo PHP OpenSSL"
+#: ../../mod/connedit.php:558
+msgid "Hide or Unhide this connection from your other connections"
+msgstr "Nascondi questo contatto a tutti gli altri (abilita/disabilita)"
-#: ../../mod/setup.php:503
-msgid "mysqli or postgres PHP module"
-msgstr "modulo PHP per mysqli oppure prostgres"
+#: ../../mod/connedit.php:559
+msgid "This connection is hidden!"
+msgstr "Questa connessione è tra quelle nascoste!"
-#: ../../mod/setup.php:504
-msgid "mb_string PHP module"
-msgstr "modulo PHP mb_string"
+#: ../../mod/connedit.php:566
+msgid "Delete this connection"
+msgstr "Elimina questo contatto"
-#: ../../mod/setup.php:505
-msgid "mcrypt PHP module"
-msgstr "modulo PHP mcrypt"
+#: ../../mod/connedit.php:647
+msgid "Approve this connection"
+msgstr "Approva questo contatto"
-#: ../../mod/setup.php:506
-msgid "xml PHP module"
-msgstr "modulo xml PHP"
+#: ../../mod/connedit.php:647
+msgid "Accept connection to allow communication"
+msgstr "Entra in contatto per poter comunicare"
-#: ../../mod/setup.php:510 ../../mod/setup.php:512
-msgid "Apache mod_rewrite module"
-msgstr "modulo Apache mod_rewrite"
+#: ../../mod/connedit.php:652
+msgid "Set Affinity"
+msgstr "Scegli l'affinità"
-#: ../../mod/setup.php:510
-msgid ""
-"Error: Apache webserver mod-rewrite module is required but not installed."
-msgstr "Errore: il modulo mod-rewrite di Apache è richiesto ma non installato"
+#: ../../mod/connedit.php:655
+msgid "Set Profile"
+msgstr "Scegli il profilo da mostrare"
-#: ../../mod/setup.php:516 ../../mod/setup.php:519
-msgid "proc_open"
-msgstr "proc_open"
+#: ../../mod/connedit.php:658
+msgid "Set Affinity & Profile"
+msgstr "Affinità e profilo"
-#: ../../mod/setup.php:516
-msgid ""
-"Error: proc_open is required but is either not installed or has been "
-"disabled in php.ini"
-msgstr "Errore: proc_open è richiesto ma non è installato o è disabilitato in php.ini"
+#: ../../mod/connedit.php:675
+msgid "Apply these permissions automatically"
+msgstr "Applica automaticamente questi permessi"
-#: ../../mod/setup.php:524
-msgid "Error: libCURL PHP module required but not installed."
-msgstr "Errore: il modulo libCURL di PHP è richiesto ma non installato."
+#: ../../mod/connedit.php:677
+msgid "This connection's address is"
+msgstr "Indirizzo di questo contatto"
-#: ../../mod/setup.php:528
+#: ../../mod/connedit.php:680
msgid ""
-"Error: GD graphics PHP module with JPEG support required but not installed."
-msgstr "Errore: Il modulo GD graphics di PHP con supporto a JPEG è richiesto ma non installato."
-
-#: ../../mod/setup.php:532
-msgid "Error: openssl PHP module required but not installed."
-msgstr "Errore: il modulo openssl di PHP è richiesto ma non installato."
+"The permissions indicated on this page will be applied to all new "
+"connections."
+msgstr "I permessi indicati su questa pagina saranno applicati a tutti i nuovi contatti da ora in poi."
-#: ../../mod/setup.php:536
-msgid ""
-"Error: mysqli or postgres PHP module required but neither are installed."
-msgstr "Errore: il modulo PHP per mysqli o postgres è richiesto ma non installato"
+#: ../../mod/connedit.php:682
+msgid "Slide to adjust your degree of friendship"
+msgstr "Trascina per restringere il grado di amicizia da mostrare"
-#: ../../mod/setup.php:540
-msgid "Error: mb_string PHP module required but not installed."
-msgstr "Errore: il modulo PHP mb_string è richiesto ma non installato."
+#: ../../mod/connedit.php:684
+msgid "Slide to adjust your rating"
+msgstr "Trascina per cambiare la tua valutazione"
-#: ../../mod/setup.php:544
-msgid "Error: mcrypt PHP module required but not installed."
-msgstr "Errore: il modulo PHP mcrypt è richiesto ma non installato."
+#: ../../mod/connedit.php:685 ../../mod/connedit.php:690
+msgid "Optionally explain your rating"
+msgstr "Commento opzionale"
-#: ../../mod/setup.php:548
-msgid "Error: xml PHP module required for DAV but not installed."
-msgstr "Errore: il modulo xml PHP è richiesto per DAV ma non è installato."
+#: ../../mod/connedit.php:687
+msgid "Custom Filter"
+msgstr "Filtro personalizzato"
-#: ../../mod/setup.php:566
-msgid ""
-"The web installer needs to be able to create a file called \".htconfig.php\""
-" in the top folder of your web server and it is unable to do so."
-msgstr "L'installazione web deve poter creare un file chiamato \".htconfig.php\" nella cartella di RedMatrix ma non è in grado di farlo."
+#: ../../mod/connedit.php:688
+msgid "Only import posts with this text"
+msgstr "Importa solo i post che contengono questo testo"
-#: ../../mod/setup.php:567
+#: ../../mod/connedit.php:688 ../../mod/connedit.php:689
msgid ""
-"This is most often a permission setting, as the web server may not be able "
-"to write files in your folder - even if you can."
-msgstr "Spesso ciò è dovuto ai permessi di accesso al disco: il web server potrebbe non aver diritto di scrivere il file nella cartella, anche se tu puoi."
+"words one per line or #tags or /patterns/, leave blank to import all posts"
+msgstr "una parola per riga, oppure #tag o /pattern/ oppure lascia vuoto per importare tutto"
-#: ../../mod/setup.php:568
-msgid ""
-"At the end of this procedure, we will give you a text to save in a file "
-"named .htconfig.php in your Red top folder."
-msgstr "Alla fine di questa procedura ti sarà dato il testo da salvare in un file di nome .htconfig.php dentro la cartella principale di RedMatrix."
+#: ../../mod/connedit.php:689
+msgid "Do not import posts with this text"
+msgstr "Non importare i post con questo testo"
-#: ../../mod/setup.php:569
-msgid ""
-"You can alternatively skip this procedure and perform a manual installation."
-" Please see the file \"install/INSTALL.txt\" for instructions."
-msgstr "Puoi anche saltare questa procedura ed effettuare un'installazione manuale. Guarda il file 'install/INSTALL.txt' per le istruzioni."
+#: ../../mod/connedit.php:691
+msgid "This information is public!"
+msgstr "Questa informazione è pubblica!"
-#: ../../mod/setup.php:572
-msgid ".htconfig.php is writable"
-msgstr ".htconfig.php è scrivibile"
+#: ../../mod/connedit.php:696
+msgid "Connection Pending Approval"
+msgstr "Contatti in attesa di approvazione"
-#: ../../mod/setup.php:586
-msgid ""
-"Red uses the Smarty3 template engine to render its web views. Smarty3 "
-"compiles templates to PHP to speed up rendering."
-msgstr "Red usa il sistema Smarty3 per costruire i suoi template grafici. Smarty3 è molto veloce perché compila i template delle pagine direttamente in PHP."
+#: ../../mod/connedit.php:697
+msgid "Connection Request"
+msgstr "Richiesta di entrare in contatto"
-#: ../../mod/setup.php:587
+#: ../../mod/connedit.php:698
#, php-format
msgid ""
-"In order to store these compiled templates, the web server needs to have "
-"write access to the directory %s under the Red top level folder."
-msgstr "Per poter memorizzare i template compilati, il web server deve avere accesso in scrittura a %s sotto la cartella di installazione di RedMatrix."
+"(%s) would like to connect with you. Please approve this connection to allow"
+" communication."
+msgstr "(%s) vorrebbe entrare in contatto con te. Per permettere la comunicazione è necessario che tu approvi."
-#: ../../mod/setup.php:588 ../../mod/setup.php:609
-msgid ""
-"Please ensure that the user that your web server runs as (e.g. www-data) has"
-" write access to this folder."
-msgstr "Assicurati che il tuo web server sia in esecuzione da parte di un utente che ha diritto di scrittura su quella cartella (ad esempio www-data)."
+#: ../../mod/connedit.php:700
+msgid "Approve Later"
+msgstr "Approva più tardi"
-#: ../../mod/setup.php:589
-#, php-format
-msgid ""
-"Note: as a security measure, you should give the web server write access to "
-"%s only--not the template files (.tpl) that it contains."
-msgstr "Nota bene: come precauzione, dovresti dare i diritti di scrittura solamente su %s e non sui file template (.tpl) che contiene."
+#: ../../mod/connedit.php:703
+msgid "inherited"
+msgstr "derivato"
-#: ../../mod/setup.php:592
+#: ../../mod/connedit.php:705
#, php-format
-msgid "%s is writable"
-msgstr "%s è scrivibile"
-
-#: ../../mod/setup.php:608
-msgid ""
-"Red uses the store directory to save uploaded files. The web server needs to"
-" have write access to the store directory under the Red top level folder"
-msgstr "RedMatrix salva i file caricati nella cartella \"store\" sul server. Il server deve avere i diritti di scrittura su quella cartella che si trova dentro l'installazione di RedMatrix"
-
-#: ../../mod/setup.php:612
-msgid "store is writable"
-msgstr "l'archivio è scrivibile"
-
-#: ../../mod/setup.php:645
-msgid ""
-"SSL certificate cannot be validated. Fix certificate or disable https access"
-" to this site."
-msgstr "Il certificato SSL non può essere validato. Correggi l'errore o disabilita l'accesso https al sito."
-
-#: ../../mod/setup.php:646
-msgid ""
-"If you have https access to your website or allow connections to TCP port "
-"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
-"NOT use self-signed certificates!"
-msgstr "Se abiliti https per il tuo sito o permetti connessioni TCP su port 443 (quella di https), DEVI usare un certificato riconosciuto dai browser internet. NON DEVI usare certificati generati da te!"
-
-#: ../../mod/setup.php:647
-msgid ""
-"This restriction is incorporated because public posts from you may for "
-"example contain references to images on your own hub."
-msgstr "Questa restrizione è necessaria perché i tuoi post pubblici potrebbero contenere riferimenti a immagini sul tuo server."
-
-#: ../../mod/setup.php:648
msgid ""
-"If your certificate is not recognized, members of other sites (who may "
-"themselves have valid certificates) will get a warning message on their own "
-"site complaining about security issues."
-msgstr "Se il tuo certificato non è riconosciuto, gli utenti che ti seguono da altri siti (che avranno certificati validi) riceveranno gravi avvisi di sicurezza dal browser."
+"Please choose the profile you would like to display to %s when viewing your "
+"profile securely."
+msgstr "Seleziona il profilo che vuoi mostrare a %s quando visita il tuo profilo in modo sicuro."
-#: ../../mod/setup.php:649
-msgid ""
-"This can cause usability issues elsewhere (not just on your own site) so we "
-"must insist on this requirement."
-msgstr "Ciò può creare seri problemi di usabilità (non solo sul tuo sito), quindi dobbiamo insistere su questo punto."
+#: ../../mod/connedit.php:707
+msgid "Their Settings"
+msgstr "Permessi concessi a te"
-#: ../../mod/setup.php:650
-msgid ""
-"Providers are available that issue free certificates which are browser-"
-"valid."
-msgstr "Eventualmente, considera che esistono provider che rilasciano certificati gratuiti riconosciuti dai browser."
+#: ../../mod/connedit.php:708
+msgid "My Settings"
+msgstr "I permessi che concedo"
-#: ../../mod/setup.php:652
-msgid "SSL certificate validation"
-msgstr "Validazione del certificato SSL"
+#: ../../mod/connedit.php:710
+msgid "Individual Permissions"
+msgstr "Permessi individuali"
-#: ../../mod/setup.php:658
+#: ../../mod/connedit.php:711
msgid ""
-"Url rewrite in .htaccess is not working. Check your server "
-"configuration.Test: "
-msgstr "In .htaccess la funzionalità url rewrite non funziona. Controlla la configurazione del server. Test:"
-
-#: ../../mod/setup.php:661
-msgid "Url rewrite is working"
-msgstr "Url rewrite funziona correttamente"
+"Some permissions may be inherited from your channel's <a "
+"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
+"priority than individual settings. You can <strong>not</strong> change those"
+" settings here."
+msgstr "Alcuni permessi derivano dalle <a href=\"settings\"><strong>impostazioni di privacy</strong></a> del tuo canale, che hanno priorità assoluta su qualsiasi altra impostazione scelta per i singoli contatti. Da questa pagina <strong>non</strong> puoi cambiarle."
-#: ../../mod/setup.php:670
+#: ../../mod/connedit.php:712
msgid ""
-"The database configuration file \".htconfig.php\" could not be written. "
-"Please use the enclosed text to create a configuration file in your web "
-"server root."
-msgstr "Il file di configurazione del database \".htconfig.php\" non puo' essere scritto. Usa il testo qui di seguito per creare questo file di configurazione nella cartella principale del tuo sito."
-
-#: ../../mod/setup.php:694
-msgid "Errors encountered creating database tables."
-msgstr "La creazione delle tabelle del database ha generato errori."
+"Some permissions may be inherited from your channel's <a "
+"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
+"priority than individual settings. You can change those settings here but "
+"they wont have any impact unless the inherited setting changes."
+msgstr "Alcuni permessi derivano dalle <a href=\"settings\"><strong>impostazioni di privacy</strong></a> del tuo canale, che hanno priorità assoluta su qualsiasi altra impostazione scelta per i singoli contatti. Le personalizzazioni che effettuerai qui potrebbero non essere effettive a meno che tu non cambi proprio le impostazioni generali."
-#: ../../mod/setup.php:728
-msgid "<h1>What next</h1>"
-msgstr "<h1>I prossimi passi</h1>"
+#: ../../mod/connedit.php:713
+msgid "Last update:"
+msgstr "Ultimo aggiornamento:"
-#: ../../mod/setup.php:729
-msgid ""
-"IMPORTANT: You will need to [manually] setup a scheduled task for the "
-"poller."
-msgstr "IMPORTANTE: Devi creare [manualmente] la pianificazione del polling."
+#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
+msgid "Invalid profile identifier."
+msgstr "Indentificativo del profilo non valido."
-#: ../../mod/openid.php:26
-msgid "OpenID protocol error. No ID returned."
-msgstr "Errore del protocollo OpenID. Nessun ID ricevuto in risposta."
+#: ../../mod/profperm.php:110
+msgid "Profile Visibility Editor"
+msgstr "Modifica la visibilità del profilo"
-#: ../../mod/openid.php:72 ../../mod/openid.php:180 ../../mod/post.php:287
-#, php-format
-msgid "Welcome %s. Remote authentication successful."
-msgstr "Ciao %s. L'accesso tramite il tuo hub è avvenuto con successo."
+#: ../../mod/profperm.php:114
+msgid "Click on a contact to add or remove."
+msgstr "Clicca su un contatto per aggiungerlo o rimuoverlo."
-#: ../../mod/tagger.php:96
-#, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
-msgstr "%1$s ha taggato %3$s di %2$s con %4$s"
+#: ../../mod/profperm.php:123
+msgid "Visible To"
+msgstr "Visibile a"
-#: ../../mod/viewconnections.php:62
-msgid "No connections."
-msgstr "Nessun contatto."
+#: ../../mod/dav.php:121
+msgid "$Projectname channel"
+msgstr "Canale $Projectname"
-#: ../../mod/viewconnections.php:75
+#: ../../mod/directory.php:234
#, php-format
-msgid "Visit %s's profile [%s]"
-msgstr "Visita il profilo di %s [%s]"
-
-#: ../../mod/zfinger.php:23
-msgid "invalid target signature"
-msgstr "la firma ricevuta non è valida"
-
-#: ../../mod/admin.php:52
-msgid "Theme settings updated."
-msgstr "Le impostazioni del tema sono state aggiornate."
-
-#: ../../mod/admin.php:93 ../../mod/admin.php:452
-msgid "Site"
-msgstr "Sito"
-
-#: ../../mod/admin.php:94
-msgid "Accounts"
-msgstr "Account"
-
-#: ../../mod/admin.php:95 ../../mod/admin.php:985
-msgid "Channels"
-msgstr "Canali"
-
-#: ../../mod/admin.php:96 ../../mod/admin.php:1077 ../../mod/admin.php:1117
-msgid "Plugins"
-msgstr "Plugin"
-
-#: ../../mod/admin.php:97 ../../mod/admin.php:1277 ../../mod/admin.php:1311
-msgid "Themes"
-msgstr "Temi"
-
-#: ../../mod/admin.php:98
-msgid "Inspect queue"
-msgstr "Coda di attesa"
-
-#: ../../mod/admin.php:100
-msgid "Profile Config"
-msgstr "Configurazione del profilo"
-
-#: ../../mod/admin.php:101
-msgid "DB updates"
-msgstr "Aggiornamenti al DB"
-
-#: ../../mod/admin.php:115 ../../mod/admin.php:122 ../../mod/admin.php:1396
-msgid "Logs"
-msgstr "Log"
-
-#: ../../mod/admin.php:121
-msgid "Plugin Features"
-msgstr "Plugin"
-
-#: ../../mod/admin.php:123
-msgid "User registrations waiting for confirmation"
-msgstr "Registrazioni in attesa"
-
-#: ../../mod/admin.php:200
-msgid "# Accounts"
-msgstr "# account"
-
-#: ../../mod/admin.php:201
-msgid "# blocked accounts"
-msgstr "# account bloccati"
-
-#: ../../mod/admin.php:202
-msgid "# expired accounts"
-msgstr "# account scaduti"
-
-#: ../../mod/admin.php:203
-msgid "# expiring accounts"
-msgstr "# account in scadenza"
-
-#: ../../mod/admin.php:216
-msgid "# Channels"
-msgstr "# canali"
-
-#: ../../mod/admin.php:217
-msgid "# primary"
-msgstr "# primari"
-
-#: ../../mod/admin.php:218
-msgid "# clones"
-msgstr "# cloni"
-
-#: ../../mod/admin.php:224
-msgid "Message queues"
-msgstr "Coda messaggi in uscita"
-
-#: ../../mod/admin.php:240 ../../mod/admin.php:451 ../../mod/admin.php:548
-#: ../../mod/admin.php:817 ../../mod/admin.php:984 ../../mod/admin.php:1076
-#: ../../mod/admin.php:1116 ../../mod/admin.php:1276 ../../mod/admin.php:1310
-#: ../../mod/admin.php:1395
-msgid "Administration"
-msgstr "Amministrazione"
-
-#: ../../mod/admin.php:241
-msgid "Summary"
-msgstr "Riepilogo"
-
-#: ../../mod/admin.php:244
-msgid "Registered accounts"
-msgstr "Account creati"
-
-#: ../../mod/admin.php:245 ../../mod/admin.php:552
-msgid "Pending registrations"
-msgstr "Registrazioni da approvare"
-
-#: ../../mod/admin.php:246
-msgid "Registered channels"
-msgstr "Canali creati"
-
-#: ../../mod/admin.php:247 ../../mod/admin.php:553
-msgid "Active plugins"
-msgstr "Plugin attivi"
-
-#: ../../mod/admin.php:248
-msgid "Version"
-msgstr "Versione"
-
-#: ../../mod/admin.php:363
-msgid "Site settings updated."
-msgstr "Impostazioni del sito salvate correttamente."
-
-#: ../../mod/admin.php:400 ../../mod/settings.php:813
-msgid "mobile"
-msgstr "mobile"
-
-#: ../../mod/admin.php:402
-msgid "experimental"
-msgstr "sperimentale"
-
-#: ../../mod/admin.php:404
-msgid "unsupported"
-msgstr "non supportato"
-
-#: ../../mod/admin.php:429
-msgid "Yes - with approval"
-msgstr "Sì - con approvazione"
-
-#: ../../mod/admin.php:435
-msgid "My site is not a public server"
-msgstr "Non è un server pubblico"
-
-#: ../../mod/admin.php:436
-msgid "My site has paid access only"
-msgstr "È un servizio a pagamento"
-
-#: ../../mod/admin.php:437
-msgid "My site has free access only"
-msgstr "È un servizio gratuito"
-
-#: ../../mod/admin.php:438
-msgid "My site offers free accounts with optional paid upgrades"
-msgstr "È un servizio gratuito con opzioni aggiuntive a pagamento"
-
-#: ../../mod/admin.php:454 ../../mod/register.php:207
-msgid "Registration"
-msgstr "Registrazione"
-
-#: ../../mod/admin.php:455
-msgid "File upload"
-msgstr "Caricamento file"
-
-#: ../../mod/admin.php:456
-msgid "Policies"
-msgstr "Politiche"
-
-#: ../../mod/admin.php:461
-msgid "Site name"
-msgstr "Nome del sito"
-
-#: ../../mod/admin.php:462
-msgid "Banner/Logo"
-msgstr "Banner o logo"
-
-#: ../../mod/admin.php:463
-msgid "Administrator Information"
-msgstr "Informazioni sull'amministratore"
-
-#: ../../mod/admin.php:463
-msgid ""
-"Contact information for site administrators. Displayed on siteinfo page. "
-"BBCode can be used here"
-msgstr "Informazioni per contattare gli amministratori del sito. Saranno mostrate sulla pagina di informazioni. È consentito il BBcode"
-
-#: ../../mod/admin.php:464
-msgid "System language"
-msgstr "Lingua di sistema"
-
-#: ../../mod/admin.php:465
-msgid "System theme"
-msgstr "Tema di sistema"
-
-#: ../../mod/admin.php:465
-msgid ""
-"Default system theme - may be over-ridden by user profiles - <a href='#' "
-"id='cnftheme'>change theme settings</a>"
-msgstr "Il tema di sistema può essere cambiato dai profili dei singoli utenti - <a href='#' id='cnftheme'>Cambia le impostazioni del tema</a>"
-
-#: ../../mod/admin.php:466
-msgid "Mobile system theme"
-msgstr "Tema di sistema per dispositivi mobili"
-
-#: ../../mod/admin.php:466
-msgid "Theme for mobile devices"
-msgstr "Tema per i dispositivi mobili"
-
-#: ../../mod/admin.php:468
-msgid "Enable Diaspora Protocol"
-msgstr "Abilita la comunicazione con Diaspora"
-
-#: ../../mod/admin.php:468
-msgid "Communicate with Diaspora and Friendica - experimental"
-msgstr "Sperimentale - per comunicare con Diaspora e Friendica"
-
-#: ../../mod/admin.php:469
-msgid "Allow Feeds as Connections"
-msgstr "Permetti di aggiungere i feed come contatti"
-
-#: ../../mod/admin.php:469
-msgid "(Heavy system resource usage)"
-msgstr "(Uso intenso delle risorse di sistema!)"
-
-#: ../../mod/admin.php:470
-msgid "Maximum image size"
-msgstr "Dimensione massima immagini"
-
-#: ../../mod/admin.php:470
-msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
-msgstr "Massima dimensione in byte delle immagini caricate. Il default è 0, cioè nessun limite."
-
-#: ../../mod/admin.php:471
-msgid "Does this site allow new member registration?"
-msgstr "Questo sito permette a nuovi utenti di registrarsi?"
-
-#: ../../mod/admin.php:472
-msgid "Which best describes the types of account offered by this hub?"
-msgstr "Come descriveresti il tipo di servizio proposto da questo server?"
-
-#: ../../mod/admin.php:473
-msgid "Register text"
-msgstr "Testo di registrazione"
-
-#: ../../mod/admin.php:473
-msgid "Will be displayed prominently on the registration page."
-msgstr "Sarà mostrato ben visibile nella pagina di registrazione."
-
-#: ../../mod/admin.php:474
-msgid "Site homepage to show visitors (default: login box)"
-msgstr "Homepage del sito da mostrare ai navigatori (predefinito: modulo di login)"
-
-#: ../../mod/admin.php:474
-msgid ""
-"example: 'public' to show public stream, 'page/sys/home' to show a system "
-"webpage called 'home' or 'include:home.html' to include a file."
-msgstr "esempio: 'public' per mostrare i contenuti pubblici degli utenti, 'page/sys/home' per mostrare la pagina web definita come 'home' oppure 'include:home.html' per mostrare il contenuto di un file."
-
-#: ../../mod/admin.php:475
-msgid "Preserve site homepage URL"
-msgstr "Conserva l'URL della homepage"
-
-#: ../../mod/admin.php:475
-msgid ""
-"Present the site homepage in a frame at the original location instead of "
-"redirecting"
-msgstr "Presenta la homepage del sito in un frame all'indirizzo attuale invece di un redirect."
-
-#: ../../mod/admin.php:476
-msgid "Accounts abandoned after x days"
-msgstr "Account abbandonati dopo X giorni"
-
-#: ../../mod/admin.php:476
-msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
-msgstr "Eviterà di sprecare risorse di sistema controllando se i siti esterni hanno account abbandonati. Immettere 0 per non imporre nessun limite di tempo."
-
-#: ../../mod/admin.php:477
-msgid "Allowed friend domains"
-msgstr "Domini fidati e consentiti"
-
-#: ../../mod/admin.php:477
-msgid ""
-"Comma separated list of domains which are allowed to establish friendships "
-"with this site. Wildcards are accepted. Empty to allow any domains"
-msgstr "Elenco separato da virglola dei domini che possono stabilire amicizie con questo sito. Sono accettati caratteri jolly. Lascia vuoto per accettare connessioni da qualsiasi dominio."
-
-#: ../../mod/admin.php:478
-msgid "Allowed email domains"
-msgstr "Domini email consentiti"
-
-#: ../../mod/admin.php:478
-msgid ""
-"Comma separated list of domains which are allowed in email addresses for "
-"registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains"
-msgstr "Elenco separato da virgola dei domini permessi come indirizzi email in fase di registrazione. Sono accettati caratteri jolly. Lascia vuoto per accettare qualsiasi dominio email"
-
-#: ../../mod/admin.php:479
-msgid "Not allowed email domains"
-msgstr "Domini email non consentiti"
+msgid "%d rating"
+msgid_plural "%d ratings"
+msgstr[0] "%d valutazione"
+msgstr[1] "%d valutazioni"
-#: ../../mod/admin.php:479
-msgid ""
-"Comma separated list of domains which are not allowed in email addresses for"
-" registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains, unless allowed domains have been defined."
-msgstr "Elenco separato da virgola dei domini permessi come indirizzi email in fase di registrazione a questo sito. Sono accettati caratteri jolly. Lascalo vuoto per accettare qualsiasi dominio."
+#: ../../mod/directory.php:245
+msgid "Gender: "
+msgstr "Sesso:"
-#: ../../mod/admin.php:480
-msgid "Block public"
-msgstr "Blocca pagine pubbliche"
+#: ../../mod/directory.php:247
+msgid "Status: "
+msgstr "Stato:"
-#: ../../mod/admin.php:480
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently logged in."
-msgstr "Seleziona per impedire di vedere le pagine personali di questo sito a chi non ha effettuato l'accesso."
+#: ../../mod/directory.php:249
+msgid "Homepage: "
+msgstr "Homepage:"
-#: ../../mod/admin.php:481
-msgid "Verify Email Addresses"
-msgstr "Verifica l'indirizzo email"
+#: ../../mod/directory.php:308 ../../mod/events.php:682
+msgid "Description:"
+msgstr "Descrizione:"
-#: ../../mod/admin.php:481
-msgid ""
-"Check to verify email addresses used in account registration (recommended)."
-msgstr "Attiva per richiedere la verifica degli indirizzi email dei nuovi utenti (consigliato)."
+#: ../../mod/directory.php:317
+msgid "Public Forum:"
+msgstr "Forum pubblico:"
-#: ../../mod/admin.php:482
-msgid "Force publish"
-msgstr "Forza la publicazione del profilo"
+#: ../../mod/directory.php:320
+msgid "Keywords: "
+msgstr "Parole chiave:"
-#: ../../mod/admin.php:482
-msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
-msgstr "Seleziona per mostrare nell'elenco pubblico <strong>tutti</strong> i profili registrati su questo sito."
+#: ../../mod/directory.php:323
+msgid "Don't suggest"
+msgstr "Non fornire suggerimenti"
-#: ../../mod/admin.php:483
-msgid "Disable discovery tab"
-msgstr "Disabilita la funzione 'scopri'"
+#: ../../mod/directory.php:325
+msgid "Common connections:"
+msgstr "Contatti in comune:"
-#: ../../mod/admin.php:483
-msgid ""
-"Remove the tab in the network view with public content pulled from sources "
-"chosen for this site."
-msgstr "Nell'area della rete personale non comparirà più la scheda con i contenuti acquisiti da altri siti."
+#: ../../mod/directory.php:374
+msgid "Global Directory"
+msgstr "Elenco globale dei canali"
-#: ../../mod/admin.php:484
-msgid "login on Homepage"
-msgstr "Mostra il login sulla homepage"
+#: ../../mod/directory.php:374
+msgid "Local Directory"
+msgstr "Elenco canali su questo server"
-#: ../../mod/admin.php:484
-msgid ""
-"Present a login box to visitors on the home page if no other content has "
-"been configured."
-msgstr "Presenta il modulo di login ai visitatori sulla homepage in mancanza di altri contenuti."
+#: ../../mod/directory.php:380
+msgid "Finding:"
+msgstr "Ricerca:"
-#: ../../mod/admin.php:486
-msgid "Proxy user"
-msgstr "Utente proxy"
+#: ../../mod/directory.php:385
+msgid "next page"
+msgstr "pagina successiva"
-#: ../../mod/admin.php:487
-msgid "Proxy URL"
-msgstr "URL proxy"
+#: ../../mod/directory.php:385
+msgid "previous page"
+msgstr "pagina precedente"
-#: ../../mod/admin.php:488
-msgid "Network timeout"
-msgstr "Timeout rete"
+#: ../../mod/directory.php:386
+msgid "Sort options"
+msgstr "Opzioni di ordinamento"
-#: ../../mod/admin.php:488
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
-msgstr "Valore in secondi. Imposta a 0 per illimitato (sconsigliato)."
+#: ../../mod/directory.php:387
+msgid "Alphabetic"
+msgstr "Alfabetico"
-#: ../../mod/admin.php:489
-msgid "Delivery interval"
-msgstr "Recapito ritardato"
+#: ../../mod/directory.php:388
+msgid "Reverse Alphabetic"
+msgstr "Alfabetico inverso"
-#: ../../mod/admin.php:489
-msgid ""
-"Delay background delivery processes by this many seconds to reduce system "
-"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
-"for large dedicated servers."
-msgstr "Numero di secondi di cui può essere ritardato il recapito, per ridurre il carico di sistema. Consigliati: 4-5 secondi per hosting condiviso, 2-3 per i VPS, 0-1 per grandi server dedicati."
+#: ../../mod/directory.php:389
+msgid "Newest to Oldest"
+msgstr "Prima i più recenti"
-#: ../../mod/admin.php:490
-msgid "Poll interval"
-msgstr "Intervallo di polling"
+#: ../../mod/directory.php:390
+msgid "Oldest to Newest"
+msgstr "Prima i più vecchi"
-#: ../../mod/admin.php:490
-msgid ""
-"Delay background polling processes by this many seconds to reduce system "
-"load. If 0, use delivery interval."
-msgstr "Numero di secondi di cui può essere ritardato il polling in background, per ridurre il carico del sistema. Se 0, verrà usato lo stesso valore del 'Recapito ritardato'."
+#: ../../mod/directory.php:407
+msgid "No entries (some entries may be hidden)."
+msgstr "Nessun risultato (qualche elemento potrebbe essere nascosto)."
-#: ../../mod/admin.php:491
-msgid "Maximum Load Average"
-msgstr "Carico massimo medio"
+#: ../../mod/pubsites.php:16
+msgid "Public Sites"
+msgstr "Siti pubblici"
-#: ../../mod/admin.php:491
+#: ../../mod/pubsites.php:19
msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
-msgstr "Carico di sistema massimo perché i processi di recapito e polling siano ritardati - il valore predefinito è 50."
+"The listed sites allow public registration for the $Projectname network. All"
+" sites in the network are interlinked so membership on any of them conveys "
+"membership in the network as a whole. Some sites may require subscription or"
+" provide tiered service plans. The provider links <strong>may</strong> "
+"provide additional details."
+msgstr "I siti elencati permettono la registrazione libera sulla rete $Projectname. Tutti questi hub sono interconnessi, quindi essere iscritti su uno equivale a una registrazione su tutta la rete. Alcuni siti potrebbero richiedere un abbonamento o dei servizi a pagamento. Per maggiori dettagli visita gli indirizzi nell'elenco."
-#: ../../mod/admin.php:492
-msgid "Expiration period in days for imported (matrix/network) content"
-msgstr "Scadenza dei contenuti importati da altri siti (in giorni)"
+#: ../../mod/pubsites.php:25
+msgid "Rate this hub"
+msgstr "Valuta questo hub"
-#: ../../mod/admin.php:492
-msgid "0 for no expiration of imported content"
-msgstr "0 per non avere scadenza"
+#: ../../mod/pubsites.php:26
+msgid "Site URL"
+msgstr "URL del sito"
-#: ../../mod/admin.php:540
-msgid "No server found"
-msgstr "Server non trovato"
+#: ../../mod/pubsites.php:26
+msgid "Access Type"
+msgstr "Tipo di accesso"
-#: ../../mod/admin.php:547 ../../mod/admin.php:831
-msgid "ID"
-msgstr "ID"
+#: ../../mod/pubsites.php:26
+msgid "Registration Policy"
+msgstr "Politica di registrazione"
-#: ../../mod/admin.php:547
-msgid "for channel"
-msgstr "per canale"
+#: ../../mod/pubsites.php:26
+msgid "Project"
+msgstr "Progetto"
-#: ../../mod/admin.php:547
-msgid "on server"
-msgstr "sul server"
+#: ../../mod/pubsites.php:26
+msgid "View hub ratings"
+msgstr "Vedi le valutazioni del hub"
-#: ../../mod/admin.php:547
-msgid "Status"
-msgstr "Stato"
+#: ../../mod/pubsites.php:30
+msgid "Rate"
+msgstr "Valuta"
-#: ../../mod/admin.php:549
-msgid "Server"
-msgstr "Server"
+#: ../../mod/pubsites.php:31
+msgid "View ratings"
+msgstr "Vedi le valutazioni"
-#: ../../mod/admin.php:566
-msgid "Update has been marked successful"
-msgstr "L'aggiornamento è stato marcato come eseguito."
+#: ../../mod/dirsearch.php:21 ../../mod/regdir.php:45
+msgid "This site is not a directory server"
+msgstr "Questo sito non è un server di elenchi pubblici"
-#: ../../mod/admin.php:576
-#, php-format
-msgid "Executing %s failed. Check system logs."
-msgstr "Fallita l'esecuzione di %s. Maggiori informazioni sui log di sistema."
+#: ../../mod/dirsearch.php:29
+msgid "This directory server requires an access token"
+msgstr "Questo server di elenchi pubblici necessita di un token di autenticazione"
-#: ../../mod/admin.php:579
-#, php-format
-msgid "Update %s was successfully applied."
-msgstr "L'aggiornamento %s è terminato correttamente."
+#: ../../mod/editblock.php:78 ../../mod/editblock.php:94
+#: ../../mod/editlayout.php:76 ../../mod/editpost.php:20
+#: ../../mod/editwebpage.php:77
+msgid "Item not found"
+msgstr "Elemento non trovato"
-#: ../../mod/admin.php:583
-#, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
-msgstr "L'aggiornamento %s non ha dato risposta. Impossibile determinare se è terminato correttamente."
+#: ../../mod/editblock.php:117
+msgid "Delete block?"
+msgstr "Vuoi eliminare questo riquadro?"
-#: ../../mod/admin.php:586
-#, php-format
-msgid "Update function %s could not be found."
-msgstr "Impossibile trovare la funzione di aggiornamento %s"
+#: ../../mod/editblock.php:144 ../../mod/editlayout.php:142
+#: ../../mod/editpost.php:115 ../../mod/editwebpage.php:187
+msgid "Insert YouTube video"
+msgstr "Inserisci video da YouTube"
-#: ../../mod/admin.php:602
-msgid "No failed updates."
-msgstr "Nessun aggiornamento fallito."
+#: ../../mod/editblock.php:145 ../../mod/editlayout.php:143
+#: ../../mod/editpost.php:116 ../../mod/editwebpage.php:188
+msgid "Insert Vorbis [.ogg] video"
+msgstr "Inserisci video Vorbis [.ogg]"
-#: ../../mod/admin.php:606
-msgid "Failed Updates"
-msgstr "Aggiornamenti falliti."
+#: ../../mod/editblock.php:146 ../../mod/editlayout.php:144
+#: ../../mod/editpost.php:117 ../../mod/editwebpage.php:189
+msgid "Insert Vorbis [.ogg] audio"
+msgstr "Inserisci audio Vorbis [.ogg]"
-#: ../../mod/admin.php:608
-msgid "Mark success (if update was manually applied)"
-msgstr "Marca come eseguito (se applicato manualmente)."
+#: ../../mod/editblock.php:179
+msgid "Edit Block"
+msgstr "Modifica il riquadro"
-#: ../../mod/admin.php:609
-msgid "Attempt to execute this update step automatically"
-msgstr "Tenta di eseguire in automatico questo passaggio dell'aggiornamento."
+#: ../../mod/editlayout.php:111
+msgid "Delete layout?"
+msgstr "Vuoi eliminare questo layout?"
-#: ../../mod/admin.php:641
-msgid "Queue Statistics"
-msgstr "Statistiche della coda"
+#: ../../mod/editlayout.php:158 ../../mod/layouts.php:124
+msgid "Layout Description (Optional)"
+msgstr "Descrizione del layout (facoltativa)"
-#: ../../mod/admin.php:642
-msgid "Total Entries"
-msgstr "Totale"
+#: ../../mod/editlayout.php:160 ../../mod/layouts.php:121
+#: ../../mod/layouts.php:179
+msgid "Layout Name"
+msgstr "Nome layout"
-#: ../../mod/admin.php:643
-msgid "Priority"
-msgstr "Priorità"
+#: ../../mod/editlayout.php:177
+msgid "Edit Layout"
+msgstr "Modifica il layout"
-#: ../../mod/admin.php:644
-msgid "Destination URL"
-msgstr "URL di destinazione"
+#: ../../mod/editpost.php:31
+msgid "Item is not editable"
+msgstr "L'elemento non è modificabile"
-#: ../../mod/admin.php:645
-msgid "Mark hub permanently offline"
-msgstr "Questo hub è definitivamente offline"
+#: ../../mod/editpost.php:48
+msgid "Delete item?"
+msgstr "Eliminare questo elemento?"
-#: ../../mod/admin.php:646
-msgid "Empty queue for this hub"
-msgstr "Svuota la coda per questo hub"
+#: ../../mod/editpost.php:158 ../../mod/rpost.php:131
+msgid "Edit post"
+msgstr "Modifica post"
-#: ../../mod/admin.php:647
-msgid "Last known contact"
-msgstr "Ultimo scambio dati"
+#: ../../mod/oexchange.php:23
+msgid "Unable to find your hub."
+msgstr "Impossibile raggiungere il tuo hub."
-#: ../../mod/admin.php:683
-#, php-format
-msgid "%s account blocked/unblocked"
-msgid_plural "%s account blocked/unblocked"
-msgstr[0] "Modificato il blocco su %s account"
-msgstr[1] "Modificato il blocco verso %s"
+#: ../../mod/oexchange.php:37
+msgid "Post successful."
+msgstr "Inviato!"
-#: ../../mod/admin.php:691
-#, php-format
-msgid "%s account deleted"
-msgid_plural "%s accounts deleted"
-msgstr[0] "%s account eliminato"
-msgstr[1] "%s account eliminati"
+#: ../../mod/editwebpage.php:152
+msgid "Delete webpage?"
+msgstr "Vuoi eliminare questa pagina web?"
-#: ../../mod/admin.php:727
-msgid "Account not found"
-msgstr "Account non trovato"
+#: ../../mod/editwebpage.php:173
+msgid "Page link title"
+msgstr "Link del titolo"
-#: ../../mod/admin.php:739
-#, php-format
-msgid "Account '%s' deleted"
-msgstr "Account '%s' eliminato"
+#: ../../mod/editwebpage.php:224
+msgid "Edit Webpage"
+msgstr "Modifica la pagina web"
-#: ../../mod/admin.php:747
-#, php-format
-msgid "Account '%s' blocked"
-msgstr "Aggiunto un blocco verso '%s'"
+#: ../../mod/rate.php:157
+msgid "Website:"
+msgstr "Sito web:"
-#: ../../mod/admin.php:755
+#: ../../mod/rate.php:160
#, php-format
-msgid "Account '%s' unblocked"
-msgstr "Rimosso il blocco verso '%s'"
-
-#: ../../mod/admin.php:818 ../../mod/admin.php:830
-msgid "Users"
-msgstr "Utenti"
-
-#: ../../mod/admin.php:820 ../../mod/admin.php:987
-msgid "select all"
-msgstr "seleziona tutti"
-
-#: ../../mod/admin.php:821
-msgid "User registrations waiting for confirm"
-msgstr "Richieste di registrazione in attesa di conferma"
-
-#: ../../mod/admin.php:822
-msgid "Request date"
-msgstr "Data richiesta"
-
-#: ../../mod/admin.php:823
-msgid "No registrations."
-msgstr "Nessuna registrazione."
-
-#: ../../mod/admin.php:824 ../../mod/connedit.php:699
-msgid "Approve"
-msgstr "Approva"
+msgid "Remote Channel [%s] (not yet known on this site)"
+msgstr "Canale remoto [%s] (non ancora conosciuto da questo sito)"
-#: ../../mod/admin.php:825
-msgid "Deny"
-msgstr "Nega"
+#: ../../mod/rate.php:161
+msgid "Rating (this information is public)"
+msgstr "Valutazione (visibile a tutti)"
-#: ../../mod/admin.php:827 ../../mod/connedit.php:531
-msgid "Block"
-msgstr "Blocca"
+#: ../../mod/rate.php:162
+msgid "Optionally explain your rating (this information is public)"
+msgstr "Commento alla valutazione (facoltativo, visibile a tutti)"
-#: ../../mod/admin.php:828 ../../mod/connedit.php:531
-msgid "Unblock"
-msgstr "Sblocca"
+#: ../../mod/events.php:21
+msgid "Calendar entries imported."
+msgstr "Le voci del calendario sono state importate."
-#: ../../mod/admin.php:831
-msgid "Register date"
-msgstr "Data registrazione"
+#: ../../mod/events.php:23
+msgid "No calendar entries found."
+msgstr "Non sono state trovate voci del calendario."
-#: ../../mod/admin.php:831
-msgid "Last login"
-msgstr "Ultimo accesso"
+#: ../../mod/events.php:101
+msgid "Event can not end before it has started."
+msgstr "Un evento non può terminare prima del suo inizio."
-#: ../../mod/admin.php:831
-msgid "Expires"
-msgstr "Con scadenza"
+#: ../../mod/events.php:103 ../../mod/events.php:112 ../../mod/events.php:130
+msgid "Unable to generate preview."
+msgstr "Impossibile creare un'anteprima."
-#: ../../mod/admin.php:831
-msgid "Service Class"
-msgstr "Classe dell'account"
+#: ../../mod/events.php:110
+msgid "Event title and start time are required."
+msgstr "Sono necessari il titolo e l'ora d'inizio dell'evento."
-#: ../../mod/admin.php:833
-msgid ""
-"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
-" on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Gli account selezionati saranno eliminati!\\n\\nTutto ciò che hanno caricato o pubblicato su questo sito sarà eliminato definitivamente!\\n\\nVuoi confermare?"
+#: ../../mod/events.php:128
+msgid "Event not found."
+msgstr "Evento non trovato."
-#: ../../mod/admin.php:834
-msgid ""
-"The account {0} will be deleted!\\n\\nEverything this account has posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "L'account {0} sarà eliminato!\\n\\nTutto ciò che ha caricato o pubblicato su questo sito sarà eliminato definitivamente!\\n\\nVuoi confermare?"
+#: ../../mod/events.php:426
+msgid "l, F j"
+msgstr "l j F"
-#: ../../mod/admin.php:870
-#, php-format
-msgid "%s channel censored/uncensored"
-msgid_plural "%s channels censored/uncensored"
-msgstr[0] "Censura modificata per %s canale"
-msgstr[1] "Censura modificata per %s canali"
+#: ../../mod/events.php:448
+msgid "Edit event"
+msgstr "Modifica l'evento"
-#: ../../mod/admin.php:879
-#, php-format
-msgid "%s channel code allowed/disallowed"
-msgid_plural "%s channels code allowed/disallowed"
-msgstr[0] "%s canale permette/non permette codice nei contenuti"
-msgstr[1] "%s canali permettono/non permettono codice nei contenuti"
+#: ../../mod/events.php:449
+msgid "Delete event"
+msgstr "Elimina l'evento"
-#: ../../mod/admin.php:886
-#, php-format
-msgid "%s channel deleted"
-msgid_plural "%s channels deleted"
-msgstr[0] "%s canale è stato rimosso"
-msgstr[1] "%s canali sono stati rimossi"
+#: ../../mod/events.php:483
+msgid "calendar"
+msgstr "calendario"
-#: ../../mod/admin.php:906
-msgid "Channel not found"
-msgstr "Canale non trovato"
+#: ../../mod/events.php:504
+msgid "Create New Event"
+msgstr "Crea un nuovo evento"
-#: ../../mod/admin.php:917
-#, php-format
-msgid "Channel '%s' deleted"
-msgstr "Il canale '%s' è stato rimosso"
+#: ../../mod/events.php:507
+msgid "Export"
+msgstr "Esporta"
-#: ../../mod/admin.php:929
-#, php-format
-msgid "Channel '%s' censored"
-msgstr "Applicata una censura al canale '%s'"
+#: ../../mod/events.php:510
+msgid "Import"
+msgstr "Importa"
-#: ../../mod/admin.php:929
-#, php-format
-msgid "Channel '%s' uncensored"
-msgstr "Rimossa la censura dal canale '%s'"
+#: ../../mod/events.php:541
+msgid "Event removed"
+msgstr "Evento eliminato"
-#: ../../mod/admin.php:940
-#, php-format
-msgid "Channel '%s' code allowed"
-msgstr "Il canale '%s' permette codice nei contenuti"
+#: ../../mod/events.php:544
+msgid "Failed to remove event"
+msgstr "Impossibile eliminare l'evento"
-#: ../../mod/admin.php:940
-#, php-format
-msgid "Channel '%s' code disallowed"
-msgstr "Il canale '%s' non permette codice nei contenuti"
+#: ../../mod/events.php:664
+msgid "Event details"
+msgstr "Dettagli evento"
-#: ../../mod/admin.php:989
-msgid "Censor"
-msgstr "Applica una censura"
+#: ../../mod/events.php:665
+msgid "Starting date and Title are required."
+msgstr "Titolo e data d'inizio sono obbligatori."
-#: ../../mod/admin.php:990
-msgid "Uncensor"
-msgstr "Rimuovi la censura"
+#: ../../mod/events.php:667
+msgid "Categories (comma-separated list)"
+msgstr "Categorie (separate da virgola)"
-#: ../../mod/admin.php:991
-msgid "Allow Code"
-msgstr "Permetti codice nei contenuti"
+#: ../../mod/events.php:669
+msgid "Event Starts:"
+msgstr "Inizio:"
-#: ../../mod/admin.php:992
-msgid "Disallow Code"
-msgstr "Non permettere codice nei contenuti"
+#: ../../mod/events.php:676
+msgid "Finish date/time is not known or not relevant"
+msgstr "La data/ora di fine non è rilevante"
-#: ../../mod/admin.php:994
-msgid "UID"
-msgstr "UID"
+#: ../../mod/events.php:678
+msgid "Event Finishes:"
+msgstr "Fine:"
-#: ../../mod/admin.php:996
-msgid ""
-"Selected channels will be deleted!\\n\\nEverything that was posted in these "
-"channels on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "I canali selezionati saranno rimossi!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questi canali sarà irreversibilmente eliminato!\\n\\nVuoi confermare?"
+#: ../../mod/events.php:680 ../../mod/events.php:681
+msgid "Adjust for viewer timezone"
+msgstr "Adatta al fuso orario di chi legge"
-#: ../../mod/admin.php:997
+#: ../../mod/events.php:680
msgid ""
-"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
-"channel on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Il canale {0} sarà rimosso!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questo canale sarà irreversibilmente eliminato!\\n\\nVuoi confermare?"
-
-#: ../../mod/admin.php:1037
-#, php-format
-msgid "Plugin %s disabled."
-msgstr "Plugin %s non attivo."
-
-#: ../../mod/admin.php:1041
-#, php-format
-msgid "Plugin %s enabled."
-msgstr "Plugin %s attivo."
-
-#: ../../mod/admin.php:1051 ../../mod/admin.php:1249
-msgid "Disable"
-msgstr "Disattiva"
-
-#: ../../mod/admin.php:1054 ../../mod/admin.php:1251
-msgid "Enable"
-msgstr "Attiva"
-
-#: ../../mod/admin.php:1078 ../../mod/admin.php:1278
-msgid "Toggle"
-msgstr "Attiva/disattiva"
+"Important for events that happen in a particular place. Not practical for "
+"global holidays."
+msgstr "Importante per eventi che avvengono in base all'orario di un luogo particolare."
-#: ../../mod/admin.php:1086 ../../mod/admin.php:1288
-msgid "Author: "
-msgstr "Autore:"
+#: ../../mod/events.php:686
+msgid "Title:"
+msgstr "Titolo:"
-#: ../../mod/admin.php:1087 ../../mod/admin.php:1289
-msgid "Maintainer: "
-msgstr "Gestore:"
+#: ../../mod/events.php:688
+msgid "Share this event"
+msgstr "Condividi questo evento"
-#: ../../mod/admin.php:1214
-msgid "No themes found."
-msgstr "Nessun tema trovato."
+#: ../../mod/ratings.php:69
+msgid "No ratings"
+msgstr "Nessuna valutazione"
-#: ../../mod/admin.php:1270
-msgid "Screenshot"
-msgstr "Istantanea dello schermo"
+#: ../../mod/ratings.php:99
+msgid "Ratings"
+msgstr "Valutazioni"
-#: ../../mod/admin.php:1316
-msgid "[Experimental]"
-msgstr "[Sperimentale]"
+#: ../../mod/ratings.php:100
+msgid "Rating: "
+msgstr "Valutazione:"
-#: ../../mod/admin.php:1317
-msgid "[Unsupported]"
-msgstr "[Non supportato]"
+#: ../../mod/ratings.php:101
+msgid "Website: "
+msgstr "Sito web:"
-#: ../../mod/admin.php:1341
-msgid "Log settings updated."
-msgstr "Impostazioni di log aggiornate."
+#: ../../mod/ratings.php:103
+msgid "Description: "
+msgstr "Descrizione:"
-#: ../../mod/admin.php:1398
-msgid "Clear"
-msgstr "Pulisci"
+#: ../../mod/rbmark.php:88
+msgid "Select a bookmark folder"
+msgstr "Scegli una cartella di segnalibri"
-#: ../../mod/admin.php:1404
-msgid "Debugging"
-msgstr "Debugging"
+#: ../../mod/rbmark.php:93
+msgid "Save Bookmark"
+msgstr "Salva segnalibro"
-#: ../../mod/admin.php:1405
-msgid "Log file"
-msgstr "File di log"
+#: ../../mod/rbmark.php:94
+msgid "URL of bookmark"
+msgstr "URL del segnalibro"
-#: ../../mod/admin.php:1405
-msgid ""
-"Must be writable by web server. Relative to your Red top-level directory."
-msgstr "Deve essere scrivibile dal web server. La posizione è relativa alla cartella dove è installato RedMatrix."
+#: ../../mod/rbmark.php:99
+msgid "Or enter new bookmark folder name"
+msgstr "O inserisci il nome di una nuova cartella di segnalibri"
-#: ../../mod/admin.php:1406
-msgid "Log level"
-msgstr "Livello di log"
+#: ../../mod/filer.php:49
+msgid "- select -"
+msgstr "- scegli -"
-#: ../../mod/admin.php:1452
-msgid "New Profile Field"
-msgstr "Nuovo campo del profilo"
+#: ../../mod/filestorage.php:82
+msgid "Permission Denied."
+msgstr "Permesso negato."
-#: ../../mod/admin.php:1453 ../../mod/admin.php:1473
-msgid "Field nickname"
-msgstr "Nome breve del campo"
+#: ../../mod/filestorage.php:98
+msgid "File not found."
+msgstr "File non trovato."
-#: ../../mod/admin.php:1453 ../../mod/admin.php:1473
-msgid "System name of field"
-msgstr "Nome di sistema del campo"
+#: ../../mod/filestorage.php:141
+msgid "Edit file permissions"
+msgstr "Modifica i permessi del file"
-#: ../../mod/admin.php:1454 ../../mod/admin.php:1474
-msgid "Input type"
-msgstr "Tipo di dati"
+#: ../../mod/filestorage.php:150
+msgid "Set/edit permissions"
+msgstr "Modifica i permessi"
-#: ../../mod/admin.php:1455 ../../mod/admin.php:1475
-msgid "Field Name"
-msgstr "Nome del campo"
+#: ../../mod/filestorage.php:151
+msgid "Include all files and sub folders"
+msgstr "Includi tutti i file e le sottocartelle"
-#: ../../mod/admin.php:1455 ../../mod/admin.php:1475
-msgid "Label on profile pages"
-msgstr "Etichetta da mostrare sulla pagina del profilo"
+#: ../../mod/filestorage.php:152
+msgid "Return to file list"
+msgstr "Torna all'elenco dei file"
-#: ../../mod/admin.php:1456 ../../mod/admin.php:1476
-msgid "Help text"
-msgstr "Testo di aiuto"
+#: ../../mod/filestorage.php:154
+msgid "Copy/paste this code to attach file to a post"
+msgstr "Copia/incolla questo codice per far comparire il file in un post"
-#: ../../mod/admin.php:1456 ../../mod/admin.php:1476
-msgid "Additional info (optional)"
-msgstr "Informazioni aggiuntive (opzionali)"
+#: ../../mod/filestorage.php:155
+msgid "Copy/paste this URL to link file from a web page"
+msgstr "Copia/incolla questo indirizzo in una pagina web per avere un link al file"
-#: ../../mod/admin.php:1466
-msgid "Field definition not found"
-msgstr "Impossibile trovare la definizione del campo"
+#: ../../mod/filestorage.php:157
+msgid "Share this file"
+msgstr "Condividi questo file"
-#: ../../mod/admin.php:1472
-msgid "Edit Profile Field"
-msgstr "Modifica campo del profilo"
+#: ../../mod/filestorage.php:158
+msgid "Show URL to this file"
+msgstr "Mostra l'URL del file"
-#: ../../mod/oexchange.php:23
-msgid "Unable to find your hub."
-msgstr "Impossibile raggiungere il tuo hub."
+#: ../../mod/filestorage.php:159
+msgid "Notify your contacts about this file"
+msgstr "Notifica ai contatti che hai caricato questo file"
-#: ../../mod/oexchange.php:37
-msgid "Post successful."
-msgstr "Inviato!"
+#: ../../mod/follow.php:25
+msgid "Channel added."
+msgstr "Canale aggiunto."
#: ../../mod/register.php:44
msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
@@ -7419,6 +6548,63 @@ msgstr "Scegli una password"
msgid "Please re-enter your password"
msgstr "Ripeti la password per verifica"
+#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
+msgid "Contact not found."
+msgstr "Contatto non trovato."
+
+#: ../../mod/fsuggest.php:63
+msgid "Friend suggestion sent."
+msgstr "Suggerimento di amicizia inviato."
+
+#: ../../mod/fsuggest.php:97
+msgid "Suggest Friends"
+msgstr "Suggerisci amici"
+
+#: ../../mod/fsuggest.php:99
+#, php-format
+msgid "Suggest a friend for %s"
+msgstr "Suggerisci un amico a %s"
+
+#: ../../mod/regmod.php:11
+msgid "Please login."
+msgstr "Effettua l'accesso."
+
+#: ../../mod/group.php:20
+msgid "Collection created."
+msgstr "L'insieme di canali è stato creato."
+
+#: ../../mod/group.php:26
+msgid "Could not create collection."
+msgstr "Impossibile creare l'insieme."
+
+#: ../../mod/group.php:54
+msgid "Collection updated."
+msgstr "Insieme aggiornato."
+
+#: ../../mod/group.php:86
+msgid "Create a collection of channels."
+msgstr "Crea un insieme di canali."
+
+#: ../../mod/group.php:87 ../../mod/group.php:183
+msgid "Collection Name: "
+msgstr "Nome dell'insieme:"
+
+#: ../../mod/group.php:89 ../../mod/group.php:186
+msgid "Members are visible to other channels"
+msgstr "I membri potranno vedere gli altri canali dell'insieme"
+
+#: ../../mod/group.php:107
+msgid "Collection removed."
+msgstr "Insieme rimosso."
+
+#: ../../mod/group.php:109
+msgid "Unable to remove collection."
+msgstr "Impossibile rimuovere l'insieme."
+
+#: ../../mod/group.php:182
+msgid "Collection Editor"
+msgstr "Modifica l'insieme"
+
#: ../../mod/removeaccount.php:30
msgid ""
"Account removals are not allowed within 48 hours of changing the account "
@@ -7467,7 +6653,7 @@ msgstr "Elimina l'account"
msgid "Help:"
msgstr "Guida:"
-#: ../../mod/help.php:76 ../../index.php:238
+#: ../../mod/help.php:76 ../../index.php:242
msgid "Not Found"
msgstr "Non disponibile"
@@ -7475,19 +6661,320 @@ msgstr "Non disponibile"
msgid "$Projectname Documentation"
msgstr "Documentazione $Projectname"
-#: ../../mod/update_channel.php:43 ../../mod/update_display.php:25
-#: ../../mod/update_network.php:23 ../../mod/update_search.php:46
-#: ../../mod/update_home.php:21 ../../mod/update_public.php:21
-msgid "[Embedded content - reload page to view]"
-msgstr "[Contenuto incorporato - ricarica la pagina per visualizzarlo correttamente]"
+#: ../../mod/removeme.php:29
+msgid ""
+"Channel removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Non è possibile eliminare un canale prima di 48 ore dall'ultimo cambio password."
-#: ../../mod/lockview.php:37
-msgid "Remote privacy information not available."
-msgstr "Le informazioni remote sulla privacy non sono disponibili."
+#: ../../mod/removeme.php:57
+msgid "Remove This Channel"
+msgstr "Elimina questo canale"
-#: ../../mod/lockview.php:58
-msgid "Visible to:"
-msgstr "Visibile a:"
+#: ../../mod/removeme.php:58
+msgid "This channel will be completely removed from the network. "
+msgstr "Questo canale sarà completamente eliminato dalla rete."
+
+#: ../../mod/removeme.php:60
+msgid "Remove this channel and all its clones from the network"
+msgstr "Rimuovi questo canale e tutti i suoi cloni dalla rete"
+
+#: ../../mod/removeme.php:60
+msgid ""
+"By default only the instance of the channel located on this hub will be "
+"removed from the network"
+msgstr "L'impostazione predefinita è che sia eliminata solo l'istanza del canale presente su questo hub, non gli eventuali cloni"
+
+#: ../../mod/removeme.php:61 ../../mod/settings.php:1137
+msgid "Remove Channel"
+msgstr "Elimina questo canale"
+
+#: ../../mod/home.php:58 ../../mod/home.php:66 ../../mod/siteinfo.php:155
+msgid "$Projectname"
+msgstr "$Projectname"
+
+#: ../../mod/home.php:75
+#, php-format
+msgid "Welcome to %s"
+msgstr "%s ti dà il benvenuto"
+
+#: ../../mod/rmagic.php:40
+msgid ""
+"We encountered a problem while logging in with the OpenID you provided. "
+"Please check the correct spelling of the ID."
+msgstr "Non è possibile effettuare login con l'OpenID che hai fornito. Per favore controlla che sia scritto correttamente."
+
+#: ../../mod/rmagic.php:40
+msgid "The error message was:"
+msgstr "Messaggio di errore ricevuto:"
+
+#: ../../mod/rmagic.php:44
+msgid "Authentication failed."
+msgstr "Autenticazione fallita."
+
+#: ../../mod/rmagic.php:84
+msgid "Remote Authentication"
+msgstr "Accedi dal tuo hub"
+
+#: ../../mod/rmagic.php:85
+msgid "Enter your channel address (e.g. channel@example.com)"
+msgstr "Inserisci l'indirizzo del tuo canale (ad esempio lucia@esempio.com)"
+
+#: ../../mod/rmagic.php:86
+msgid "Authenticate"
+msgstr "Accedi"
+
+#: ../../mod/id.php:11
+msgid "First Name"
+msgstr "Nome"
+
+#: ../../mod/id.php:12
+msgid "Last Name"
+msgstr "Cognome"
+
+#: ../../mod/id.php:13
+msgid "Nickname"
+msgstr "Nick"
+
+#: ../../mod/id.php:14
+msgid "Full Name"
+msgstr "Nome e cognome"
+
+#: ../../mod/id.php:20
+msgid "Profile Photo 16px"
+msgstr "Foto del profilo 16px"
+
+#: ../../mod/id.php:21
+msgid "Profile Photo 32px"
+msgstr "Foto del profilo 32px"
+
+#: ../../mod/id.php:22
+msgid "Profile Photo 48px"
+msgstr "Foto del profilo 48px"
+
+#: ../../mod/id.php:23
+msgid "Profile Photo 64px"
+msgstr "Foto del profilo 64px"
+
+#: ../../mod/id.php:24
+msgid "Profile Photo 80px"
+msgstr "Foto del profilo 80px"
+
+#: ../../mod/id.php:25
+msgid "Profile Photo 128px"
+msgstr "Foto del profilo 128px"
+
+#: ../../mod/id.php:26
+msgid "Timezone"
+msgstr "Fuso orario"
+
+#: ../../mod/id.php:27
+msgid "Homepage URL"
+msgstr "Indirizzo home page"
+
+#: ../../mod/id.php:29
+msgid "Birth Year"
+msgstr "Anno di nascita"
+
+#: ../../mod/id.php:30
+msgid "Birth Month"
+msgstr "Mese di nascita"
+
+#: ../../mod/id.php:31
+msgid "Birth Day"
+msgstr "Giorno di nascita"
+
+#: ../../mod/id.php:32
+msgid "Birthdate"
+msgstr "Data di nascita"
+
+#: ../../mod/impel.php:191
+#, php-format
+msgid "%s element installed"
+msgstr "%s elemento installato"
+
+#: ../../mod/impel.php:194
+#, php-format
+msgid "%s element installation failed"
+msgstr "Elementi con installazione fallita: %s"
+
+#: ../../mod/search.php:206
+#, php-format
+msgid "Items tagged with: %s"
+msgstr "Elementi taggati con: %s"
+
+#: ../../mod/search.php:208
+#, php-format
+msgid "Search results for: %s"
+msgstr "Risultati ricerca: %s"
+
+#: ../../mod/import.php:25
+#, php-format
+msgid "Your service plan only allows %d channels."
+msgstr "Il tuo account permette di creare al massimo %d canali."
+
+#: ../../mod/import.php:60
+msgid "Nothing to import."
+msgstr "Non c'è niente da importare."
+
+#: ../../mod/import.php:84
+msgid "Unable to download data from old server"
+msgstr "Impossibile importare i dati dal vecchio server"
+
+#: ../../mod/import.php:90
+msgid "Imported file is empty."
+msgstr "Il file da importare è vuoto."
+
+#: ../../mod/import.php:110
+msgid "The data provided is not compatible with this project."
+msgstr "I dati forniti non sono compatibili con questo hub."
+
+#: ../../mod/import.php:115
+#, php-format
+msgid "Warning: Database versions differ by %1$d updates."
+msgstr "Attenzione: le versioni di database differiscono di %1$d aggiornamenti."
+
+#: ../../mod/import.php:135
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "Non posso creare un canale con un identificativo che già esiste su questo sistema. L'importazione è fallita."
+
+#: ../../mod/import.php:176
+msgid "Channel clone failed. Import failed."
+msgstr "Impossibile clonare il canale. L'importazione è fallita."
+
+#: ../../mod/import.php:186
+msgid "Cloned channel not found. Import failed."
+msgstr "Impossibile trovare il canale clonato. L'importazione è fallita."
+
+#: ../../mod/import.php:574
+msgid "You must be logged in to use this feature."
+msgstr "Per questa funzionalità devi aver effettuato l'accesso."
+
+#: ../../mod/import.php:579
+msgid "Import Channel"
+msgstr "Importa un canale"
+
+#: ../../mod/import.php:580
+msgid ""
+"Use this form to import an existing channel from a different server/hub. You"
+" may retrieve the channel identity from the old server/hub via the network "
+"or provide an export file."
+msgstr "Usa questo modulo per importare un tuo canale da un altro server/hub. Puoi ottenere i dati identificativi del canale direttamente dall'altro server/hub oppure tramite un file esportato in precedenza."
+
+#: ../../mod/import.php:581
+msgid "File to Upload"
+msgstr "File da caricare"
+
+#: ../../mod/import.php:582
+msgid "Or provide the old server/hub details"
+msgstr "Oppure fornisci i dettagli del vecchio server/hub"
+
+#: ../../mod/import.php:583
+msgid "Your old identity address (xyz@example.com)"
+msgstr "Il tuo vecchio identificativo (per esempio pippo@esempio.com)"
+
+#: ../../mod/import.php:584
+msgid "Your old login email address"
+msgstr "L'email che usavi per accedere sul vecchio server"
+
+#: ../../mod/import.php:585
+msgid "Your old login password"
+msgstr "La password per il vecchio server"
+
+#: ../../mod/import.php:586
+msgid ""
+"For either option, please choose whether to make this hub your new primary "
+"address, or whether your old location should continue this role. You will be"
+" able to post from either location, but only one can be marked as the "
+"primary location for files, photos, and media."
+msgstr "Scegli se vuoi spostare il tuo indirizzo primario su questo server, oppure se preferisci che quello vecchio resti tale. Potrai pubblicare da entrambi i server, ma solamente uno sarà indicato come posizione in cui risiedono i tuoi file, foto, ecc."
+
+#: ../../mod/import.php:587
+msgid "Make this hub my primary location"
+msgstr "Rendi questo server il mio indirizzo primario"
+
+#: ../../mod/import.php:588
+msgid ""
+"Import existing posts if possible (experimental - limited by available "
+"memory"
+msgstr "Importa i contenuti pubblicati, se possibile (sperimentale)"
+
+#: ../../mod/import.php:589
+msgid ""
+"This process may take several minutes to complete. Please submit the form "
+"only once and leave this page open until finished."
+msgstr "Questa funzione potrebbe impiegare molto tempo a terminare. Per favore lanciala *una volta sola* e resta su questa pagina finché non avrà finito."
+
+#: ../../mod/service_limits.php:19
+msgid "No service class restrictions found."
+msgstr "Non esistono restrizioni su questa classe di account."
+
+#: ../../mod/invite.php:25
+msgid "Total invitation limit exceeded."
+msgstr "Hai superato il numero massimo di inviti."
+
+#: ../../mod/invite.php:49
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s: non è un indirizzo email valido."
+
+#: ../../mod/invite.php:76
+msgid "Please join us on Red"
+msgstr "Vieni con noi su RedMatrix"
+
+#: ../../mod/invite.php:87
+msgid "Invitation limit exceeded. Please contact your site administrator."
+msgstr "Hai superato il numero massimo di inviti. Contatta l'amministratore se necessario."
+
+#: ../../mod/invite.php:92
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s: la consegna del messaggio è fallita."
+
+#: ../../mod/invite.php:96
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d messaggio inviato."
+msgstr[1] "%d messaggi inviati."
+
+#: ../../mod/invite.php:115
+msgid "You have no more invitations available"
+msgstr "Non hai altri inviti disponibili"
+
+#: ../../mod/invite.php:129
+msgid "Send invitations"
+msgstr "Spedisci inviti"
+
+#: ../../mod/invite.php:130
+msgid "Enter email addresses, one per line:"
+msgstr "Inserisci gli indirizzi email, uno per riga:"
+
+#: ../../mod/invite.php:132
+msgid "Please join my community on $Projectname."
+msgstr "Entra nella mia comunità su $Projectname."
+
+#: ../../mod/invite.php:134
+msgid "You will need to supply this invitation code: "
+msgstr "Dovrai fornire questo codice di invito:"
+
+#: ../../mod/invite.php:135
+msgid ""
+"1. Register at any $Projectname location (they are all inter-connected)"
+msgstr "1. Registrati su qualsiasi server $Projectname (sono tutti interconnessi)"
+
+#: ../../mod/invite.php:137
+msgid "2. Enter my $Projectname network address into the site searchbar."
+msgstr "2. Inserisci il mio indirizzo $Projectname nel riquadro di ricerca del sito."
+
+#: ../../mod/invite.php:138
+msgid "or visit "
+msgstr "oppure visita "
+
+#: ../../mod/invite.php:140
+msgid "3. Click [Connect]"
+msgstr "3. Clicca su [Aggiungi]"
#: ../../mod/settings.php:76
msgid "Name is required"
@@ -7899,6 +7386,10 @@ msgstr "Serve e ridurre lo spam"
msgid "Default Post Permissions"
msgstr "Permessi predefiniti per i post"
+#: ../../mod/settings.php:1083 ../../mod/mitem.php:155 ../../mod/mitem.php:227
+msgid "(click to open/close)"
+msgstr "(clicca per aprire/chiudere)"
+
#: ../../mod/settings.php:1087
msgid "Channel permissions category:"
msgstr "Categorie di permessi dei canali:"
@@ -8059,600 +7550,1054 @@ msgstr "Impostazioni varie"
msgid "Personal menu to display in your channel pages"
msgstr "Menu personale da mostrare sulle pagine del tuo canale"
-#: ../../mod/settings.php:1137 ../../mod/removeme.php:61
-msgid "Remove Channel"
-msgstr "Elimina questo canale"
-
#: ../../mod/settings.php:1138
msgid "Remove this channel."
msgstr "Elimina questo canale."
-#: ../../mod/id.php:11
-msgid "First Name"
-msgstr "Nome"
+#: ../../mod/item.php:174
+msgid "Unable to locate original post."
+msgstr "Impossibile trovare il messaggio originale."
-#: ../../mod/id.php:12
-msgid "Last Name"
-msgstr "Cognome"
+#: ../../mod/item.php:440
+msgid "Empty post discarded."
+msgstr "Il post vuoto è stato ignorato."
-#: ../../mod/id.php:13
-msgid "Nickname"
-msgstr "Nick"
+#: ../../mod/item.php:480
+msgid "Executable content type not permitted to this channel."
+msgstr "I contenuti eseguibili non sono permessi su questo canale."
-#: ../../mod/id.php:14
-msgid "Full Name"
-msgstr "Nome e cognome"
+#: ../../mod/item.php:914
+msgid "System error. Post not saved."
+msgstr "Errore di sistema. Post non salvato."
-#: ../../mod/id.php:20
-msgid "Profile Photo 16px"
-msgstr "Foto del profilo 16px"
+#: ../../mod/item.php:1146
+msgid "Unable to obtain post information from database."
+msgstr "Impossibile caricare il post dal database."
-#: ../../mod/id.php:21
-msgid "Profile Photo 32px"
-msgstr "Foto del profilo 32px"
+#: ../../mod/item.php:1153
+#, php-format
+msgid "You have reached your limit of %1$.0f top level posts."
+msgstr "Hai raggiunto il limite massimo di %1$.0f post sulla pagina principale."
-#: ../../mod/id.php:22
-msgid "Profile Photo 48px"
-msgstr "Foto del profilo 48px"
+#: ../../mod/item.php:1160
+#, php-format
+msgid "You have reached your limit of %1$.0f webpages."
+msgstr "Hai raggiunto il limite massimo di %1$.0f pagine web."
-#: ../../mod/id.php:23
-msgid "Profile Photo 64px"
-msgstr "Foto del profilo 64px"
+#: ../../mod/setup.php:187
+msgid "$Projectname Server - Setup"
+msgstr "Server $Projectname - Installazione"
-#: ../../mod/id.php:24
-msgid "Profile Photo 80px"
-msgstr "Foto del profilo 80px"
+#: ../../mod/setup.php:191
+msgid "Could not connect to database."
+msgstr " Impossibile connettersi al database."
-#: ../../mod/id.php:25
-msgid "Profile Photo 128px"
-msgstr "Foto del profilo 128px"
+#: ../../mod/setup.php:195
+msgid ""
+"Could not connect to specified site URL. Possible SSL certificate or DNS "
+"issue."
+msgstr "Non è possibile raggiungere l'indirizzo del sito specificato. Potrebbe essere un problema di SSL o DNS."
-#: ../../mod/id.php:26
-msgid "Timezone"
-msgstr "Fuso orario"
+#: ../../mod/setup.php:202
+msgid "Could not create table."
+msgstr "Impossibile creare le tabelle."
-#: ../../mod/id.php:27
-msgid "Homepage URL"
-msgstr "Indirizzo home page"
+#: ../../mod/setup.php:207
+msgid "Your site database has been installed."
+msgstr "Il database del sito è stato installato."
-#: ../../mod/id.php:29
-msgid "Birth Year"
-msgstr "Anno di nascita"
+#: ../../mod/setup.php:211
+msgid ""
+"You may need to import the file \"install/schema_xxx.sql\" manually using a "
+"database client."
+msgstr "Potresti dover importare il file 'install/schema_xxx.sql' manualmente usando un client per collegarti al db."
-#: ../../mod/id.php:30
-msgid "Birth Month"
-msgstr "Mese di nascita"
+#: ../../mod/setup.php:212 ../../mod/setup.php:280 ../../mod/setup.php:730
+msgid "Please see the file \"install/INSTALL.txt\"."
+msgstr "Leggi il file 'install/INSTALL.txt'."
-#: ../../mod/id.php:31
-msgid "Birth Day"
-msgstr "Giorno di nascita"
+#: ../../mod/setup.php:277
+msgid "System check"
+msgstr "Verifica del sistema"
-#: ../../mod/id.php:32
-msgid "Birthdate"
-msgstr "Data di nascita"
+#: ../../mod/setup.php:282
+msgid "Check again"
+msgstr "Verifica di nuovo"
-#: ../../mod/message.php:41
-msgid "Conversation removed."
-msgstr "Conversazione rimossa."
+#: ../../mod/setup.php:304
+msgid "Database connection"
+msgstr "Connessione al database"
-#: ../../mod/message.php:56
-msgid "No messages."
-msgstr "Nessun messaggio."
+#: ../../mod/setup.php:305
+msgid ""
+"In order to install $Projectname we need to know how to connect to your "
+"database."
+msgstr "Per poter installare $Projectname è necessario fornire i parametri di connessione al tuo database."
-#: ../../mod/message.php:72 ../../mod/mail.php:336
-msgid "Delete conversation"
-msgstr "Elimina la conversazione"
+#: ../../mod/setup.php:306
+msgid ""
+"Please contact your hosting provider or site administrator if you have "
+"questions about these settings."
+msgstr "Contatta il tuo fornitore di hosting o l'amministratore del sito se hai domande su queste impostazioni."
-#: ../../mod/message.php:74
-msgid "D, d M Y - g:i A"
-msgstr "D d M Y - G:i"
+#: ../../mod/setup.php:307
+msgid ""
+"The database you specify below should already exist. If it does not, please "
+"create it before continuing."
+msgstr "Il database deve già esistere. Se non esiste, crealo prima di continuare."
-#: ../../mod/uexport.php:50 ../../mod/uexport.php:51
-msgid "Export Channel"
-msgstr "Esporta il canale"
+#: ../../mod/setup.php:311
+msgid "Database Server Name"
+msgstr "Server del database"
-#: ../../mod/uexport.php:52
+#: ../../mod/setup.php:311
+msgid "Default is localhost"
+msgstr "'localhost' è il predefinito"
+
+#: ../../mod/setup.php:312
+msgid "Database Port"
+msgstr "Port del database"
+
+#: ../../mod/setup.php:312
+msgid "Communication port number - use 0 for default"
+msgstr "Scrivi 0 per usare il valore standard"
+
+#: ../../mod/setup.php:313
+msgid "Database Login Name"
+msgstr "Utente database"
+
+#: ../../mod/setup.php:314
+msgid "Database Login Password"
+msgstr "Password utente database"
+
+#: ../../mod/setup.php:315
+msgid "Database Name"
+msgstr "Nome database"
+
+#: ../../mod/setup.php:316
+msgid "Database Type"
+msgstr "Tipo database"
+
+#: ../../mod/setup.php:318 ../../mod/setup.php:359
+msgid "Site administrator email address"
+msgstr "Indirizzo email dell'amministratore del sito"
+
+#: ../../mod/setup.php:318 ../../mod/setup.php:359
msgid ""
-"Export your basic channel information to a file. This acts as a backup of "
-"your connections, permissions, profile and basic data, which can be used to "
-"import your data to a new server hub, but does not contain your content."
-msgstr "Esporta le informazioni di base del canale in un file. In pratica è un salvataggio delle tue connessioni, dei permessi che hai assegnato e del tuo profilo che così potrà essere importato su un altro server/hub. Il file non includerà i tuoi post e altri contenuti che hai creato o caricato."
+"Your account email address must match this in order to use the web admin "
+"panel."
+msgstr "Il tuo indirizzo email deve corrispondere a questo per poter usare il pannello di amministrazione web."
-#: ../../mod/uexport.php:53
-msgid "Export Content"
-msgstr "Esporta i contenuti"
+#: ../../mod/setup.php:319 ../../mod/setup.php:361
+msgid "Website URL"
+msgstr "URL completo del sito"
-#: ../../mod/uexport.php:54
+#: ../../mod/setup.php:319 ../../mod/setup.php:361
+msgid "Please use SSL (https) URL if available."
+msgstr "Se disponibile, usa l'indirizzo SSL (https)."
+
+#: ../../mod/setup.php:321 ../../mod/setup.php:363
+msgid "Please select a default timezone for your website"
+msgstr "Seleziona il fuso orario predefinito per il tuo sito web"
+
+#: ../../mod/setup.php:348
+msgid "Site settings"
+msgstr "Impostazioni del sito"
+
+#: ../../mod/setup.php:413
+msgid "Could not find a command line version of PHP in the web server PATH."
+msgstr "Non è possibile trovare la versione di PHP da riga di comando nel PATH del server web"
+
+#: ../../mod/setup.php:414
msgid ""
-"Export your channel information and recent content to a JSON backup that can"
-" be restored or imported to another server hub. This backs up all of your "
-"connections, permissions, profile data and several months of posts. This "
-"file may be VERY large. Please be patient - it may take several minutes for"
-" this download to begin."
-msgstr "Esporta il tuo canale e i contenuti recenti in un file di salvataggio che potrà essere importato su un altro server/hub. Sarà un backup dei tuoi contatti, dei permessi che hai assegnato, dei dati del profilo e dei post degli ultimi mesi. Il file potrebbe essere MOLTO grande. Sarà necessario attendere con pazienza - saranno necessari molti minuti prima che inizi lo scaricamento."
+"If you don't have a command line version of PHP installed on server, you "
+"will not be able to run background polling via cron."
+msgstr "Se non hai installata la versione di PHP da riga di comando non potrai attivare il polling in background tramite cron."
-#: ../../mod/uexport.php:55
-msgid "Export your posts from a given year or month:"
-msgstr "Puoi anche esportare i post relativi a un certo mese o anno"
+#: ../../mod/setup.php:418
+msgid "PHP executable path"
+msgstr "Path del comando PHP"
-#: ../../mod/uexport.php:57
+#: ../../mod/setup.php:418
msgid ""
-"You may also export your posts and conversations for a particular year or "
-"month. Click on one of the recent years or months below."
-msgstr "Puoi anche esportare i tuoi post e le conversazioni di un certo mese o anno. Clicca qua sotto su un mese o su un anno recente."
+"Enter full path to php executable. You can leave this blank to continue the "
+"installation."
+msgstr "Inserisci il percorso dell'eseguibile PHP. Puoi lasciarlo vuoto per continuare l'installazione."
-#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
-msgid "Jan"
-msgstr "Gen"
+#: ../../mod/setup.php:423
+msgid "Command line PHP"
+msgstr "PHP da riga di comando"
-#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
-msgid "Feb"
-msgstr "Feb"
+#: ../../mod/setup.php:432
+msgid ""
+"The command line version of PHP on your system does not have "
+"\"register_argc_argv\" enabled."
+msgstr "La versione da riga di comando di PHP nel sistema non ha abilitato \"register_argc_argv\"."
-#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
-msgid "Mar"
-msgstr "Mar"
+#: ../../mod/setup.php:433
+msgid "This is required for message delivery to work."
+msgstr "E' necessario perché funzioni la consegna dei messaggi."
-#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
-msgid "Apr"
-msgstr "Apr"
+#: ../../mod/setup.php:436
+msgid "PHP register_argc_argv"
+msgstr "PHP register_argc_argv"
-#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
-msgid "Jun"
-msgstr "Giu"
+#: ../../mod/setup.php:454
+#, php-format
+msgid ""
+"Your max allowed total upload size is set to %s. Maximum size of one file to"
+" upload is set to %s. You are allowed to upload up to %d files at once."
+msgstr "La dimensione massima di un caricamento è impostata a %s. Il singolo file non può superare %s. Ti è permesso caricare max %d file per volta."
-#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
-msgid "Jul"
-msgstr "Lug"
+#: ../../mod/setup.php:459
+msgid "You can adjust these settings in the servers php.ini."
+msgstr "Puoi regolare queste impostazioni sul server in php.ini"
-#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
-msgid "Aug"
-msgstr "Ago"
+#: ../../mod/setup.php:461
+msgid "PHP upload limits"
+msgstr "Limiti PHP in upload"
-#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
-msgid "Sep"
-msgstr "Set"
+#: ../../mod/setup.php:484
+msgid ""
+"Error: the \"openssl_pkey_new\" function on this system is not able to "
+"generate encryption keys"
+msgstr "Errore: la funzione \"openssl_pkey_new\" su questo sistema non è in grado di generare le chiavi di criptazione"
-#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
-msgid "Oct"
-msgstr "Ott"
+#: ../../mod/setup.php:485
+msgid ""
+"If running under Windows, please see "
+"\"http://www.php.net/manual/en/openssl.installation.php\"."
+msgstr "Se stai usando un server windows, guarda \"http://www.php.net/manual/en/openssl.installation.php\"."
-#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
-msgid "Nov"
-msgstr "Nov"
+#: ../../mod/setup.php:488
+msgid "Generate encryption keys"
+msgstr "Genera chiavi di criptazione"
-#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
-msgid "Dec"
-msgstr "Dic"
+#: ../../mod/setup.php:500
+msgid "libCurl PHP module"
+msgstr "modulo PHP libCurl"
-#: ../../mod/uexport.php:60
+#: ../../mod/setup.php:501
+msgid "GD graphics PHP module"
+msgstr "modulo PHP GD graphics"
+
+#: ../../mod/setup.php:502
+msgid "OpenSSL PHP module"
+msgstr "modulo PHP OpenSSL"
+
+#: ../../mod/setup.php:503
+msgid "mysqli or postgres PHP module"
+msgstr "modulo PHP per mysqli oppure prostgres"
+
+#: ../../mod/setup.php:504
+msgid "mb_string PHP module"
+msgstr "modulo PHP mb_string"
+
+#: ../../mod/setup.php:505
+msgid "mcrypt PHP module"
+msgstr "modulo PHP mcrypt"
+
+#: ../../mod/setup.php:506
+msgid "xml PHP module"
+msgstr "modulo xml PHP"
+
+#: ../../mod/setup.php:510 ../../mod/setup.php:512
+msgid "Apache mod_rewrite module"
+msgstr "modulo Apache mod_rewrite"
+
+#: ../../mod/setup.php:510
msgid ""
-"If the export fails (possibly due to memory exhaustion on your server hub), "
-"please try again selecting a more limited date range."
-msgstr "Se l'esportazione fallisce (di solito è per mancanza di memoria sullo hub), puoi provare nuovamente, ma scegliendo un intervallo di date più stretto."
+"Error: Apache webserver mod-rewrite module is required but not installed."
+msgstr "Errore: il modulo mod-rewrite di Apache è richiesto ma non installato"
-#: ../../mod/uexport.php:61
-#, php-format
+#: ../../mod/setup.php:516 ../../mod/setup.php:519
+msgid "proc_open"
+msgstr "proc_open"
+
+#: ../../mod/setup.php:516
msgid ""
-"Or adjust the date in your browser location bar to select other dates. For "
-"example the year 2013; <a href=\"%1$s/2013\">%1$s/2013</a> or the month "
-"September 2013; <a href=\"%1$s/2013/9\">%1$s/2013/9</a>"
-msgstr "Oppure cambia le date nella barra degli indirizzi del tuo browser per selezionare altre date. Per esempio, l'anno 2013; <a href=\"%1$s/2013\">%1$s/2013</a> o il mese di settembre 2013; <a href=\"%1$s/2013/9\">%1$s/2013/9</a>"
+"Error: proc_open is required but is either not installed or has been "
+"disabled in php.ini"
+msgstr "Errore: proc_open è richiesto ma non è installato o è disabilitato in php.ini"
-#: ../../mod/uexport.php:62
-msgid "Please visit"
-msgstr "Visita"
+#: ../../mod/setup.php:524
+msgid "Error: libCURL PHP module required but not installed."
+msgstr "Errore: il modulo libCURL di PHP è richiesto ma non installato."
-#: ../../mod/uexport.php:62
-msgid "on another hub to import the backup files(s)."
-msgstr "su un altro hub per importare il backup."
+#: ../../mod/setup.php:528
+msgid ""
+"Error: GD graphics PHP module with JPEG support required but not installed."
+msgstr "Errore: Il modulo GD graphics di PHP con supporto a JPEG è richiesto ma non installato."
-#: ../../mod/uexport.php:63
+#: ../../mod/setup.php:532
+msgid "Error: openssl PHP module required but not installed."
+msgstr "Errore: il modulo openssl di PHP è richiesto ma non installato."
+
+#: ../../mod/setup.php:536
msgid ""
-"We advise you to clone the channel on the new hub first and than to import "
-"the backup file(s) (from the same channel) in chronological order. Importing"
-" the backup files into another channel will certainly give permission "
-"issues."
-msgstr "Il consiglio è di clonare per prima cosa il canale sul nuovo hub e poi importare i file di backup creati dal canale originale in ordine cronologico. Importare contenuti di canali differenti darà sicuramente problemi sui diritti."
+"Error: mysqli or postgres PHP module required but neither are installed."
+msgstr "Errore: il modulo PHP per mysqli o postgres è richiesto ma non installato"
-#: ../../mod/mood.php:131
-msgid "Set your current mood and tell your friends"
-msgstr "Scegli il tuo umore attuale per mostrarlo agli amici"
+#: ../../mod/setup.php:540
+msgid "Error: mb_string PHP module required but not installed."
+msgstr "Errore: il modulo PHP mb_string è richiesto ma non installato."
-#: ../../mod/vote.php:97
-msgid "Total votes"
-msgstr "Totale voti"
+#: ../../mod/setup.php:544
+msgid "Error: mcrypt PHP module required but not installed."
+msgstr "Errore: il modulo PHP mcrypt è richiesto ma non installato."
-#: ../../mod/vote.php:98
-msgid "Average Rating"
-msgstr "Valutazione media"
+#: ../../mod/setup.php:548
+msgid "Error: xml PHP module required for DAV but not installed."
+msgstr "Errore: il modulo xml PHP è richiesto per DAV ma non è installato."
-#: ../../mod/removeme.php:29
+#: ../../mod/setup.php:566
msgid ""
-"Channel removals are not allowed within 48 hours of changing the account "
-"password."
-msgstr "Non è possibile eliminare un canale prima di 48 ore dall'ultimo cambio password."
+"The web installer needs to be able to create a file called \".htconfig.php\""
+" in the top folder of your web server and it is unable to do so."
+msgstr "L'installazione web deve poter creare un file chiamato \".htconfig.php\" nella cartella di RedMatrix ma non è in grado di farlo."
-#: ../../mod/removeme.php:57
-msgid "Remove This Channel"
-msgstr "Elimina questo canale"
+#: ../../mod/setup.php:567
+msgid ""
+"This is most often a permission setting, as the web server may not be able "
+"to write files in your folder - even if you can."
+msgstr "Spesso ciò è dovuto ai permessi di accesso al disco: il web server potrebbe non aver diritto di scrivere il file nella cartella, anche se tu puoi."
-#: ../../mod/removeme.php:58
-msgid "This channel will be completely removed from the network. "
-msgstr "Questo canale sarà completamente eliminato dalla rete."
+#: ../../mod/setup.php:568
+msgid ""
+"At the end of this procedure, we will give you a text to save in a file "
+"named .htconfig.php in your Red top folder."
+msgstr "Alla fine di questa procedura ti sarà dato il testo da salvare in un file di nome .htconfig.php dentro la cartella principale di RedMatrix."
-#: ../../mod/removeme.php:60
-msgid "Remove this channel and all its clones from the network"
-msgstr "Rimuovi questo canale e tutti i suoi cloni dalla rete"
+#: ../../mod/setup.php:569
+msgid ""
+"You can alternatively skip this procedure and perform a manual installation."
+" Please see the file \"install/INSTALL.txt\" for instructions."
+msgstr "Puoi anche saltare questa procedura ed effettuare un'installazione manuale. Guarda il file 'install/INSTALL.txt' per le istruzioni."
-#: ../../mod/removeme.php:60
+#: ../../mod/setup.php:572
+msgid ".htconfig.php is writable"
+msgstr ".htconfig.php è scrivibile"
+
+#: ../../mod/setup.php:586
msgid ""
-"By default only the instance of the channel located on this hub will be "
-"removed from the network"
-msgstr "L'impostazione predefinita è che sia eliminata solo l'istanza del canale presente su questo hub, non gli eventuali cloni"
+"Red uses the Smarty3 template engine to render its web views. Smarty3 "
+"compiles templates to PHP to speed up rendering."
+msgstr "Red usa il sistema Smarty3 per costruire i suoi template grafici. Smarty3 è molto veloce perché compila i template delle pagine direttamente in PHP."
-#: ../../mod/connedit.php:75
-msgid "Could not access contact record."
-msgstr "Non è possibile accedere alle informazioni sul contatto."
+#: ../../mod/setup.php:587
+#, php-format
+msgid ""
+"In order to store these compiled templates, the web server needs to have "
+"write access to the directory %s under the Red top level folder."
+msgstr "Per poter memorizzare i template compilati, il web server deve avere accesso in scrittura a %s sotto la cartella di installazione di RedMatrix."
-#: ../../mod/connedit.php:99
-msgid "Could not locate selected profile."
-msgstr "Non riesco a trovare il profilo selezionato."
+#: ../../mod/setup.php:588 ../../mod/setup.php:609
+msgid ""
+"Please ensure that the user that your web server runs as (e.g. www-data) has"
+" write access to this folder."
+msgstr "Assicurati che il tuo web server sia in esecuzione da parte di un utente che ha diritto di scrittura su quella cartella (ad esempio www-data)."
-#: ../../mod/connedit.php:219
-msgid "Connection updated."
-msgstr "Contatto aggiornato."
+#: ../../mod/setup.php:589
+#, php-format
+msgid ""
+"Note: as a security measure, you should give the web server write access to "
+"%s only--not the template files (.tpl) that it contains."
+msgstr "Nota bene: come precauzione, dovresti dare i diritti di scrittura solamente su %s e non sui file template (.tpl) che contiene."
-#: ../../mod/connedit.php:221
-msgid "Failed to update connection record."
-msgstr "Impossibile aggiornare le informazioni del contatto."
+#: ../../mod/setup.php:592
+#, php-format
+msgid "%s is writable"
+msgstr "%s è scrivibile"
-#: ../../mod/connedit.php:267
-msgid "is now connected to"
-msgstr "ha come nuovo contatto"
+#: ../../mod/setup.php:608
+msgid ""
+"Red uses the store directory to save uploaded files. The web server needs to"
+" have write access to the store directory under the Red top level folder"
+msgstr "RedMatrix salva i file caricati nella cartella \"store\" sul server. Il server deve avere i diritti di scrittura su quella cartella che si trova dentro l'installazione di RedMatrix"
-#: ../../mod/connedit.php:392
-msgid "Could not access address book record."
-msgstr "Impossibile accedere alle informazioni della rubrica."
+#: ../../mod/setup.php:612
+msgid "store is writable"
+msgstr "l'archivio è scrivibile"
-#: ../../mod/connedit.php:406
-msgid "Refresh failed - channel is currently unavailable."
-msgstr "Il canale non è disponibile - impossibile aggiornare."
+#: ../../mod/setup.php:645
+msgid ""
+"SSL certificate cannot be validated. Fix certificate or disable https access"
+" to this site."
+msgstr "Il certificato SSL non può essere validato. Correggi l'errore o disabilita l'accesso https al sito."
-#: ../../mod/connedit.php:418 ../../mod/connedit.php:430
-#: ../../mod/connedit.php:442 ../../mod/connedit.php:454
-#: ../../mod/connedit.php:470
-msgid "Unable to set address book parameters."
-msgstr "Impossibile impostare i parametri della rubrica."
+#: ../../mod/setup.php:646
+msgid ""
+"If you have https access to your website or allow connections to TCP port "
+"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
+"NOT use self-signed certificates!"
+msgstr "Se abiliti https per il tuo sito o permetti connessioni TCP su port 443 (quella di https), DEVI usare un certificato riconosciuto dai browser internet. NON DEVI usare certificati generati da te!"
-#: ../../mod/connedit.php:494
-msgid "Connection has been removed."
-msgstr "Il contatto è stato rimosso."
+#: ../../mod/setup.php:647
+msgid ""
+"This restriction is incorporated because public posts from you may for "
+"example contain references to images on your own hub."
+msgstr "Questa restrizione è necessaria perché i tuoi post pubblici potrebbero contenere riferimenti a immagini sul tuo server."
-#: ../../mod/connedit.php:513
-#, php-format
-msgid "View %s's profile"
-msgstr "Guarda il profilo di %s"
+#: ../../mod/setup.php:648
+msgid ""
+"If your certificate is not recognized, members of other sites (who may "
+"themselves have valid certificates) will get a warning message on their own "
+"site complaining about security issues."
+msgstr "Se il tuo certificato non è riconosciuto, gli utenti che ti seguono da altri siti (che avranno certificati validi) riceveranno gravi avvisi di sicurezza dal browser."
-#: ../../mod/connedit.php:517
-msgid "Refresh Permissions"
-msgstr "Modifica i permessi"
+#: ../../mod/setup.php:649
+msgid ""
+"This can cause usability issues elsewhere (not just on your own site) so we "
+"must insist on this requirement."
+msgstr "Ciò può creare seri problemi di usabilità (non solo sul tuo sito), quindi dobbiamo insistere su questo punto."
-#: ../../mod/connedit.php:520
-msgid "Fetch updated permissions"
-msgstr "Guarda e modifica i permessi assegnati"
+#: ../../mod/setup.php:650
+msgid ""
+"Providers are available that issue free certificates which are browser-"
+"valid."
+msgstr "Eventualmente, considera che esistono provider che rilasciano certificati gratuiti riconosciuti dai browser."
-#: ../../mod/connedit.php:524
-msgid "Recent Activity"
-msgstr "Attività recenti"
+#: ../../mod/setup.php:652
+msgid "SSL certificate validation"
+msgstr "Validazione del certificato SSL"
-#: ../../mod/connedit.php:527
-msgid "View recent posts and comments"
-msgstr "Leggi i post recenti e i commenti"
+#: ../../mod/setup.php:658
+msgid ""
+"Url rewrite in .htaccess is not working. Check your server "
+"configuration.Test: "
+msgstr "In .htaccess la funzionalità url rewrite non funziona. Controlla la configurazione del server. Test:"
-#: ../../mod/connedit.php:534
-msgid "Block (or Unblock) all communications with this connection"
-msgstr "Blocca ogni interazione con questo contatto (abilita/disabilita)"
+#: ../../mod/setup.php:661
+msgid "Url rewrite is working"
+msgstr "Url rewrite funziona correttamente"
-#: ../../mod/connedit.php:535
-msgid "This connection is blocked!"
-msgstr "Questa connessione è tra quelle bloccate!"
+#: ../../mod/setup.php:670
+msgid ""
+"The database configuration file \".htconfig.php\" could not be written. "
+"Please use the enclosed text to create a configuration file in your web "
+"server root."
+msgstr "Il file di configurazione del database \".htconfig.php\" non puo' essere scritto. Usa il testo qui di seguito per creare questo file di configurazione nella cartella principale del tuo sito."
-#: ../../mod/connedit.php:539
-msgid "Unignore"
-msgstr "Non ignorare"
+#: ../../mod/setup.php:694
+msgid "Errors encountered creating database tables."
+msgstr "La creazione delle tabelle del database ha generato errori."
-#: ../../mod/connedit.php:539 ../../mod/notifications.php:51
-msgid "Ignore"
-msgstr "Ignora"
+#: ../../mod/setup.php:728
+msgid "<h1>What next</h1>"
+msgstr "<h1>I prossimi passi</h1>"
-#: ../../mod/connedit.php:542
-msgid "Ignore (or Unignore) all inbound communications from this connection"
-msgstr "Ignora tutte le comunicazioni in arrivo da questo contatto (abilita/disabilita)"
+#: ../../mod/setup.php:729
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the "
+"poller."
+msgstr "IMPORTANTE: Devi creare [manualmente] la pianificazione del polling."
-#: ../../mod/connedit.php:543
-msgid "This connection is ignored!"
-msgstr "Questa connessione è tra quelle ignorate!"
+#: ../../mod/layouts.php:176
+msgid "Comanche page description language help"
+msgstr "Guida di Comanche Page Description Language"
-#: ../../mod/connedit.php:547
-msgid "Unarchive"
-msgstr "Non archiviare"
+#: ../../mod/layouts.php:180
+msgid "Layout Description"
+msgstr "Descrizione del layout"
-#: ../../mod/connedit.php:547
-msgid "Archive"
-msgstr "Archivia"
+#: ../../mod/layouts.php:185
+msgid "Download PDL file"
+msgstr "Scarica il file PDL"
-#: ../../mod/connedit.php:550
+#: ../../mod/sharedwithme.php:94
+msgid "Files: shared with me"
+msgstr "File: condivisi con me"
+
+#: ../../mod/sharedwithme.php:96
+msgid "NEW"
+msgstr "NOVITÀ"
+
+#: ../../mod/sharedwithme.php:99
+msgid "Remove all files"
+msgstr "Elimina tutti i file"
+
+#: ../../mod/sharedwithme.php:100
+msgid "Remove this file"
+msgstr "Elimina questo file"
+
+#: ../../mod/like.php:15
+msgid "Like/Dislike"
+msgstr "Mi piace/Non mi piace"
+
+#: ../../mod/like.php:20
+msgid "This action is restricted to members."
+msgstr "Questa funzionalità è riservata agli iscritti."
+
+#: ../../mod/like.php:21
msgid ""
-"Archive (or Unarchive) this connection - mark channel dead but keep content"
-msgstr "Archivia questo contatto (abilita/disabilita) - segna il canale come non più attivo ma ne conserva i contenuti"
+"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a "
+"href=\"register\">register as a new $Projectname member</a> to continue."
+msgstr "Per continuare devi <a href=\"rmagic\">accedere con il tuo identificativo $Projectname</a> o <a href=\"register\">registrarti come nuovo utente $Projectname</a>."
-#: ../../mod/connedit.php:551
-msgid "This connection is archived!"
-msgstr "Questa connessione è tra quelle archiviate!"
+#: ../../mod/like.php:101 ../../mod/like.php:128 ../../mod/like.php:166
+msgid "Invalid request."
+msgstr "Richiesta non valida."
-#: ../../mod/connedit.php:555
-msgid "Unhide"
-msgstr "Non nascondere"
+#: ../../mod/like.php:143
+msgid "thing"
+msgstr "Oggetto"
-#: ../../mod/connedit.php:555
-msgid "Hide"
-msgstr "Nascondi"
+#: ../../mod/like.php:189
+msgid "Channel unavailable."
+msgstr "Canale non trovato."
-#: ../../mod/connedit.php:558
-msgid "Hide or Unhide this connection from your other connections"
-msgstr "Nascondi questo contatto a tutti gli altri (abilita/disabilita)"
+#: ../../mod/like.php:231
+msgid "Previous action reversed."
+msgstr "Il comando precedente è stato annullato."
-#: ../../mod/connedit.php:559
-msgid "This connection is hidden!"
-msgstr "Questa connessione è tra quelle nascoste!"
+#: ../../mod/like.php:401
+#, php-format
+msgid "%1$s agrees with %2$s's %3$s"
+msgstr "%3$s di %2$s: %1$s è d'accordo"
-#: ../../mod/connedit.php:566
-msgid "Delete this connection"
-msgstr "Elimina questo contatto"
+#: ../../mod/like.php:403
+#, php-format
+msgid "%1$s doesn't agree with %2$s's %3$s"
+msgstr "%3$s di %2$s: %1$s non è d'accordo"
-#: ../../mod/connedit.php:647
-msgid "Approve this connection"
-msgstr "Approva questo contatto"
+#: ../../mod/like.php:405
+#, php-format
+msgid "%1$s abstains from a decision on %2$s's %3$s"
+msgstr "%3$s di %2$s: %1$s non ha preso una decisione"
-#: ../../mod/connedit.php:647
-msgid "Accept connection to allow communication"
-msgstr "Entra in contatto per poter comunicare"
+#: ../../mod/like.php:407
+#, php-format
+msgid "%1$s is attending %2$s's %3$s"
+msgstr "%3$s di %2$s: %1$s partecipa"
-#: ../../mod/connedit.php:652
-msgid "Set Affinity"
-msgstr "Scegli l'affinità"
+#: ../../mod/like.php:409
+#, php-format
+msgid "%1$s is not attending %2$s's %3$s"
+msgstr "%3$s di %2$s: %1$s non partecipa"
-#: ../../mod/connedit.php:655
-msgid "Set Profile"
-msgstr "Scegli il profilo da mostrare"
+#: ../../mod/like.php:411
+#, php-format
+msgid "%1$s may attend %2$s's %3$s"
+msgstr "%3$s di %2$s: %1$s forse partecipa"
-#: ../../mod/connedit.php:658
-msgid "Set Affinity & Profile"
-msgstr "Affinità e profilo"
+#: ../../mod/like.php:507
+msgid "Action completed."
+msgstr "Comando completato."
-#: ../../mod/connedit.php:675
-msgid "Apply these permissions automatically"
-msgstr "Applica automaticamente questi permessi"
+#: ../../mod/like.php:508
+msgid "Thank you."
+msgstr "Grazie."
-#: ../../mod/connedit.php:677
-msgid "This connection's address is"
-msgstr "Indirizzo di questo contatto"
+#: ../../mod/siteinfo.php:112
+#, php-format
+msgid "Version %s"
+msgstr "Versione %s"
-#: ../../mod/connedit.php:680
+#: ../../mod/siteinfo.php:133
+msgid "Installed plugins/addons/apps:"
+msgstr "App e componenti installati:"
+
+#: ../../mod/siteinfo.php:146
+msgid "No installed plugins/addons/apps"
+msgstr "Nessuna app o componente installato"
+
+#: ../../mod/siteinfo.php:156
msgid ""
-"The permissions indicated on this page will be applied to all new "
-"connections."
-msgstr "I permessi indicati su questa pagina saranno applicati a tutti i nuovi contatti da ora in poi."
+"This is a hub of $Projectname - a global cooperative network of "
+"decentralized privacy enhanced websites."
+msgstr "Questo è un hub di $Projectname - una rete cooperativa e decentralizzata di siti ad elevata privacy. "
-#: ../../mod/connedit.php:682
-msgid "Slide to adjust your degree of friendship"
-msgstr "Trascina per restringere il grado di amicizia da mostrare"
+#: ../../mod/siteinfo.php:158
+msgid "Tag: "
+msgstr "Tag: "
-#: ../../mod/connedit.php:684
-msgid "Slide to adjust your rating"
-msgstr "Trascina per cambiare la tua valutazione"
+#: ../../mod/siteinfo.php:160
+msgid "Last background fetch: "
+msgstr "Ultima acquisizione:"
-#: ../../mod/connedit.php:685 ../../mod/connedit.php:690
-msgid "Optionally explain your rating"
-msgstr "Commento opzionale"
+#: ../../mod/siteinfo.php:163
+msgid "Running at web location"
+msgstr "In esecuzione sull'indirizzo web"
-#: ../../mod/connedit.php:687
-msgid "Custom Filter"
-msgstr "Filtro personalizzato"
+#: ../../mod/siteinfo.php:164
+msgid ""
+"Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more "
+"about $Projectname."
+msgstr "Visita <a href=\"http://hubzilla.org\">hubzilla.org</a> per maggiori informazioni su $Projectname."
-#: ../../mod/connedit.php:688
-msgid "Only import posts with this text"
-msgstr "Importa solo i post che contengono questo testo"
+#: ../../mod/siteinfo.php:165
+msgid "Bug reports and issues: please visit"
+msgstr "Per segnalare bug e problemi: visita"
-#: ../../mod/connedit.php:688 ../../mod/connedit.php:689
+#: ../../mod/siteinfo.php:167
+msgid "$projectname issues"
+msgstr "Problematiche note su $projectname"
+
+#: ../../mod/siteinfo.php:168
msgid ""
-"words one per line or #tags or /patterns/, leave blank to import all posts"
-msgstr "una parola per riga, oppure #tag o /pattern/ oppure lascia vuoto per importare tutto"
+"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
+"com"
+msgstr "Per consigli, ringraziamenti, ecc. - scrivi a \"redmatrix\" at librelist - dot com"
-#: ../../mod/connedit.php:689
-msgid "Do not import posts with this text"
-msgstr "Non importare i post con questo testo"
+#: ../../mod/siteinfo.php:170
+msgid "Site Administrators"
+msgstr "Amministratori del sito"
-#: ../../mod/connedit.php:691
-msgid "This information is public!"
-msgstr "Questa informazione è pubblica!"
+#: ../../mod/lockview.php:37
+msgid "Remote privacy information not available."
+msgstr "Le informazioni remote sulla privacy non sono disponibili."
-#: ../../mod/connedit.php:696
-msgid "Connection Pending Approval"
-msgstr "Contatti in attesa di approvazione"
+#: ../../mod/lockview.php:58
+msgid "Visible to:"
+msgstr "Visibile a:"
-#: ../../mod/connedit.php:697
-msgid "Connection Request"
-msgstr "Richiesta di entrare in contatto"
+#: ../../mod/locs.php:21 ../../mod/locs.php:52
+msgid "Location not found."
+msgstr "Indirizzo non trovato."
-#: ../../mod/connedit.php:698
-#, php-format
+#: ../../mod/locs.php:56
+msgid "Primary location cannot be removed."
+msgstr "L'indirizzo principale non può essere rimosso."
+
+#: ../../mod/locs.php:88
+msgid "No locations found."
+msgstr "Nessun indirizzo trovato."
+
+#: ../../mod/locs.php:101
+msgid "Manage Channel Locations"
+msgstr "Modifica gli indirizzi del canale"
+
+#: ../../mod/locs.php:102
+msgid "Location (address)"
+msgstr "Indirizzo"
+
+#: ../../mod/locs.php:103
+msgid "Primary Location"
+msgstr "Indirizzo primario"
+
+#: ../../mod/locs.php:104
+msgid "Drop location"
+msgstr "Elimina un indirizzo"
+
+#: ../../mod/sources.php:32
+msgid "Failed to create source. No channel selected."
+msgstr "Impossibile creare la sorgente. Nessun canale selezionato."
+
+#: ../../mod/sources.php:45
+msgid "Source created."
+msgstr "Sorgente creata."
+
+#: ../../mod/sources.php:57
+msgid "Source updated."
+msgstr "Sorgente aggiornata."
+
+#: ../../mod/sources.php:82
+msgid "*"
+msgstr "*"
+
+#: ../../mod/sources.php:89
+msgid "Manage remote sources of content for your channel."
+msgstr "Gestisci le sorgenti dei contenuti del tuo canale."
+
+#: ../../mod/sources.php:90 ../../mod/sources.php:100
+msgid "New Source"
+msgstr "Nuova sorgente"
+
+#: ../../mod/sources.php:101 ../../mod/sources.php:133
msgid ""
-"(%s) would like to connect with you. Please approve this connection to allow"
-" communication."
-msgstr "(%s) vorrebbe entrare in contatto con te. Per permettere la comunicazione è necessario che tu approvi."
+"Import all or selected content from the following channel into this channel "
+"and distribute it according to your channel settings."
+msgstr "Importa nel tuo canale tutti o una parte dei contenuti dal canale seguente."
-#: ../../mod/connedit.php:700
-msgid "Approve Later"
-msgstr "Approva più tardi"
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Only import content with these words (one per line)"
+msgstr "Importa solo i contenuti che hanno queste parole (una per riga)"
-#: ../../mod/connedit.php:703
-msgid "inherited"
-msgstr "derivato"
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Leave blank to import all public content"
+msgstr "Lascia vuoto per importare tutti i contenuti pubblici"
-#: ../../mod/connedit.php:705
+#: ../../mod/sources.php:103 ../../mod/sources.php:137
+#: ../../mod/new_channel.php:112
+msgid "Channel Name"
+msgstr "Nome del canale"
+
+#: ../../mod/sources.php:123 ../../mod/sources.php:150
+msgid "Source not found."
+msgstr "Sorgente non trovata."
+
+#: ../../mod/sources.php:130
+msgid "Edit Source"
+msgstr "Modifica la sorgente"
+
+#: ../../mod/sources.php:131
+msgid "Delete Source"
+msgstr "Elimina la sorgente"
+
+#: ../../mod/sources.php:158
+msgid "Source removed"
+msgstr "Sorgente eliminata"
+
+#: ../../mod/sources.php:160
+msgid "Unable to remove source."
+msgstr "Impossibile rimuovere la sorgente."
+
+#: ../../mod/lostpass.php:15
+msgid "No valid account found."
+msgstr "Nessun account valido trovato."
+
+#: ../../mod/lostpass.php:29
+msgid "Password reset request issued. Check your email."
+msgstr "La richiesta per reimpostare la password è stata inviata. Controlla la tua email."
+
+#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:103
+#, php-format
+msgid "Site Member (%s)"
+msgstr "Utente del sito (%s)"
+
+#: ../../mod/lostpass.php:40
#, php-format
+msgid "Password reset requested at %s"
+msgstr "È stato richiesto di reimpostare password su %s"
+
+#: ../../mod/lostpass.php:63
msgid ""
-"Please choose the profile you would like to display to %s when viewing your "
-"profile securely."
-msgstr "Seleziona il profilo che vuoi mostrare a %s quando visita il tuo profilo in modo sicuro."
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "La richiesta non può essere verificata (potresti averla già usata precedentemente). La password non sarà reimpostata."
-#: ../../mod/connedit.php:707
-msgid "Their Settings"
-msgstr "Permessi concessi a te"
+#: ../../mod/lostpass.php:86 ../../boot.php:1559
+msgid "Password Reset"
+msgstr "Reimposta la password"
-#: ../../mod/connedit.php:708
-msgid "My Settings"
-msgstr "I permessi che concedo"
+#: ../../mod/lostpass.php:87
+msgid "Your password has been reset as requested."
+msgstr "La password è stata reimpostata come richiesto."
-#: ../../mod/connedit.php:710
-msgid "Individual Permissions"
-msgstr "Permessi individuali"
+#: ../../mod/lostpass.php:88
+msgid "Your new password is"
+msgstr "La tua nuova password è"
-#: ../../mod/connedit.php:711
-msgid ""
-"Some permissions may be inherited from your channel's <a "
-"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
-"priority than individual settings. You can <strong>not</strong> change those"
-" settings here."
-msgstr "Alcuni permessi derivano dalle <a href=\"settings\"><strong>impostazioni di privacy</strong></a> del tuo canale, che hanno priorità assoluta su qualsiasi altra impostazione scelta per i singoli contatti. Da questa pagina <strong>non</strong> puoi cambiarle."
+#: ../../mod/lostpass.php:89
+msgid "Save or copy your new password - and then"
+msgstr "Salva o copia la tua nuova password, quindi"
-#: ../../mod/connedit.php:712
+#: ../../mod/lostpass.php:90
+msgid "click here to login"
+msgstr "clicca qui per accedere"
+
+#: ../../mod/lostpass.php:91
msgid ""
-"Some permissions may be inherited from your channel's <a "
-"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
-"priority than individual settings. You can change those settings here but "
-"they wont have any impact unless the inherited setting changes."
-msgstr "Alcuni permessi derivano dalle <a href=\"settings\"><strong>impostazioni di privacy</strong></a> del tuo canale, che hanno priorità assoluta su qualsiasi altra impostazione scelta per i singoli contatti. Le personalizzazioni che effettuerai qui potrebbero non essere effettive a meno che tu non cambi proprio le impostazioni generali."
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Puoi cambiare la tua password dalla pagina delle <em>Impostazioni</em> dopo aver effettuato l'accesso."
-#: ../../mod/connedit.php:713
-msgid "Last update:"
-msgstr "Ultimo aggiornamento:"
+#: ../../mod/lostpass.php:108
+#, php-format
+msgid "Your password has changed at %s"
+msgstr "La tua password su %s è cambiata"
-#: ../../mod/rmagic.php:40
+#: ../../mod/lostpass.php:123
+msgid "Forgot your Password?"
+msgstr "Hai dimenticato la password?"
+
+#: ../../mod/lostpass.php:124
msgid ""
-"We encountered a problem while logging in with the OpenID you provided. "
-"Please check the correct spelling of the ID."
-msgstr "Non è possibile effettuare login con l'OpenID che hai fornito. Per favore controlla che sia scritto correttamente."
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Inserisci il tuo indirizzo email per reimpostare la password. Dopo aver inviato la richiesta, controlla l'email e troverai le istruzioni per continuare."
-#: ../../mod/rmagic.php:40
-msgid "The error message was:"
-msgstr "Messaggio di errore ricevuto:"
+#: ../../mod/lostpass.php:125
+msgid "Email Address"
+msgstr "Indirizzo email"
-#: ../../mod/rmagic.php:44
-msgid "Authentication failed."
-msgstr "Autenticazione fallita."
+#: ../../mod/lostpass.php:126
+msgid "Reset"
+msgstr "Reimposta"
-#: ../../mod/rmagic.php:84
-msgid "Remote Authentication"
-msgstr "Accedi dal tuo hub"
+#: ../../mod/menu.php:45
+msgid "Unable to update menu."
+msgstr "Impossibile aggiornare il menù."
-#: ../../mod/rmagic.php:85
-msgid "Enter your channel address (e.g. channel@example.com)"
-msgstr "Inserisci l'indirizzo del tuo canale (ad esempio lucia@esempio.com)"
+#: ../../mod/menu.php:56
+msgid "Unable to create menu."
+msgstr "Impossibile creare il menù."
-#: ../../mod/rmagic.php:86
-msgid "Authenticate"
-msgstr "Accedi"
+#: ../../mod/menu.php:92 ../../mod/menu.php:104
+msgid "Menu Name"
+msgstr "Nome del menu"
-#: ../../mod/mail.php:33
-msgid "Unable to lookup recipient."
-msgstr "Impossibile associare un destinatario."
+#: ../../mod/menu.php:92
+msgid "Unique name (not visible on webpage) - required"
+msgstr "Nome unico (non visibile sulla pagina) - obbligatorio"
-#: ../../mod/mail.php:41
-msgid "Unable to communicate with requested channel."
-msgstr "Impossibile comunicare con il canale richiesto."
+#: ../../mod/menu.php:93 ../../mod/menu.php:105
+msgid "Menu Title"
+msgstr "Titolo del menu"
-#: ../../mod/mail.php:48
-msgid "Cannot verify requested channel."
-msgstr "Impossibile verificare il canale richiesto."
+#: ../../mod/menu.php:93
+msgid "Visible on webpage - leave empty for no title"
+msgstr "Visibile sulla pagina - lascia vuoto per non avere un titolo"
-#: ../../mod/mail.php:74
-msgid "Selected channel has private message restrictions. Send failed."
-msgstr "Il canale ha delle regole restrittive per la ricezione dei messaggi privati. Invio fallito."
+#: ../../mod/menu.php:94
+msgid "Allow Bookmarks"
+msgstr "Permetti i segnalibri"
-#: ../../mod/mail.php:139
-msgid "Message deleted."
-msgstr "Messaggio eliminato."
+#: ../../mod/menu.php:94 ../../mod/menu.php:151
+msgid "Menu may be used to store saved bookmarks"
+msgstr "Puoi salvare i segnalibri nei menù"
-#: ../../mod/mail.php:156
-msgid "Message recalled."
-msgstr "Messaggio revocato."
+#: ../../mod/menu.php:95 ../../mod/menu.php:153
+msgid "Submit and proceed"
+msgstr "Salva e procedi"
-#: ../../mod/mail.php:225
-msgid "Send Private Message"
-msgstr "Invia un messaggio privato"
+#: ../../mod/menu.php:107
+msgid "Drop"
+msgstr "Elimina"
-#: ../../mod/mail.php:226 ../../mod/mail.php:343
-msgid "To:"
-msgstr "A:"
+#: ../../mod/menu.php:111
+msgid "Bookmarks allowed"
+msgstr "Permetti segnalibri"
-#: ../../mod/mail.php:231 ../../mod/mail.php:345
-msgid "Subject:"
-msgstr "Oggetto:"
+#: ../../mod/menu.php:113
+msgid "Delete this menu"
+msgstr "Elimina questo menù"
-#: ../../mod/mail.php:242
-msgid "Send"
-msgstr "Invia"
+#: ../../mod/menu.php:114 ../../mod/menu.php:148
+msgid "Edit menu contents"
+msgstr "Modifica i contenuti del menù"
-#: ../../mod/mail.php:269
-msgid "Message not found."
-msgstr "Messaggio non trovato."
+#: ../../mod/menu.php:115
+msgid "Edit this menu"
+msgstr "Modifica questo menù"
-#: ../../mod/mail.php:312
-msgid "Delete message"
-msgstr "Elimina il messaggio"
+#: ../../mod/menu.php:130
+msgid "Menu could not be deleted."
+msgstr "Il menù non può essere eliminato."
-#: ../../mod/mail.php:313
-msgid "Recall message"
-msgstr "Revoca il messaggio"
+#: ../../mod/menu.php:138 ../../mod/mitem.php:24
+msgid "Menu not found."
+msgstr "Menù non trovato."
-#: ../../mod/mail.php:315
-msgid "Message has been recalled."
-msgstr "Il messaggio è stato revocato."
+#: ../../mod/menu.php:143
+msgid "Edit Menu"
+msgstr "Modifica menù"
-#: ../../mod/mail.php:332
-msgid "Private Conversation"
-msgstr "Conversazione privata"
+#: ../../mod/menu.php:147
+msgid "Add or remove entries to this menu"
+msgstr "Aggiungi o rimuovi elementi di questo menù"
-#: ../../mod/mail.php:338
-msgid ""
-"No secure communications available. You <strong>may</strong> be able to "
-"respond from the sender's profile page."
-msgstr "Non è disponibile alcuna tecnologia per comunicare in modo sicuro. <strong>Se possibile</strong>, prova a rispondere direttamente dalla pagina del profilo del mittente."
+#: ../../mod/menu.php:149
+msgid "Menu name"
+msgstr "Nome del menù"
-#: ../../mod/mail.php:342
-msgid "Send Reply"
-msgstr "Invia la risposta"
+#: ../../mod/menu.php:149
+msgid "Must be unique, only seen by you"
+msgstr "Deve essere unico, lo vedrai solo tu"
-#: ../../mod/notifications.php:26
-msgid "Invalid request identifier."
-msgstr "L'identificativo della richiesta non è valido."
+#: ../../mod/menu.php:150
+msgid "Menu title"
+msgstr "Titolo del menù"
-#: ../../mod/notifications.php:35
-msgid "Discard"
-msgstr "Rifiuta"
+#: ../../mod/menu.php:150
+msgid "Menu title as seen by others"
+msgstr "Titolo del menù come comparirà a tutti"
-#: ../../mod/regmod.php:11
-msgid "Please login."
-msgstr "Effettua l'accesso."
+#: ../../mod/menu.php:151
+msgid "Allow bookmarks"
+msgstr "Permetti l'invio di segnalibri"
-#: ../../mod/post.php:236
+#: ../../mod/menu.php:160 ../../mod/mitem.php:116 ../../mod/xchan.php:37
+msgid "Not found."
+msgstr "Non trovato."
+
+#: ../../mod/message.php:41
+msgid "Conversation removed."
+msgstr "Conversazione rimossa."
+
+#: ../../mod/message.php:56
+msgid "No messages."
+msgstr "Nessun messaggio."
+
+#: ../../mod/message.php:74
+msgid "D, d M Y - g:i A"
+msgstr "D d M Y - G:i"
+
+#: ../../mod/mitem.php:48
+msgid "Unable to create element."
+msgstr "Impossibile creare l'elemento."
+
+#: ../../mod/mitem.php:72
+msgid "Unable to update menu element."
+msgstr "Non è possibile aggiornare l'elemento del menù."
+
+#: ../../mod/mitem.php:88
+msgid "Unable to add menu element."
+msgstr "Impossibile aggiungere l'elemento al menù."
+
+#: ../../mod/mitem.php:154 ../../mod/mitem.php:226
+msgid "Menu Item Permissions"
+msgstr "Permessi del menu"
+
+#: ../../mod/mitem.php:157 ../../mod/mitem.php:173
+msgid "Link Name"
+msgstr "Nome link"
+
+#: ../../mod/mitem.php:158 ../../mod/mitem.php:231
+msgid "Link or Submenu Target"
+msgstr "Destinazione del link o del sottomenu"
+
+#: ../../mod/mitem.php:158
+msgid "Enter URL of the link or select a menu name to create a submenu"
+msgstr "Inserisci l'indirizzo del link o scegli il nome di un sottomenu"
+
+#: ../../mod/mitem.php:159 ../../mod/mitem.php:232
+msgid "Use magic-auth if available"
+msgstr "Usa l'autenticazione magica se disponibile"
+
+#: ../../mod/mitem.php:160 ../../mod/mitem.php:233
+msgid "Open link in new window"
+msgstr "Apri il link in una nuova finestra"
+
+#: ../../mod/mitem.php:161 ../../mod/mitem.php:234
+msgid "Order in list"
+msgstr "Ordine dell'elenco"
+
+#: ../../mod/mitem.php:161 ../../mod/mitem.php:234
+msgid "Higher numbers will sink to bottom of listing"
+msgstr "I numeri più alti andranno in fondo all'elenco"
+
+#: ../../mod/mitem.php:162
+msgid "Submit and finish"
+msgstr "Salva e termina"
+
+#: ../../mod/mitem.php:163
+msgid "Submit and continue"
+msgstr "Salva e continua"
+
+#: ../../mod/mitem.php:171
+msgid "Menu:"
+msgstr "Menu:"
+
+#: ../../mod/mitem.php:174
+msgid "Link Target"
+msgstr "Destinazione link"
+
+#: ../../mod/mitem.php:177
+msgid "Edit menu"
+msgstr "Modifica il menù"
+
+#: ../../mod/mitem.php:180
+msgid "Edit element"
+msgstr "Modifica l'elemento"
+
+#: ../../mod/mitem.php:181
+msgid "Drop element"
+msgstr "Elimina l'elemento"
+
+#: ../../mod/mitem.php:182
+msgid "New element"
+msgstr "Nuovo elemento"
+
+#: ../../mod/mitem.php:183
+msgid "Edit this menu container"
+msgstr "Modifica il contenitore del menù"
+
+#: ../../mod/mitem.php:184
+msgid "Add menu element"
+msgstr "Aggiungi un elemento al menù"
+
+#: ../../mod/mitem.php:185
+msgid "Delete this menu item"
+msgstr "Elimina questo elemento del menù"
+
+#: ../../mod/mitem.php:186
+msgid "Edit this menu item"
+msgstr "Modifica questo elemento del menù"
+
+#: ../../mod/mitem.php:203
+msgid "Menu item not found."
+msgstr "L'elemento del menù non è stato trovato."
+
+#: ../../mod/mitem.php:215
+msgid "Menu item deleted."
+msgstr "L'elemento del menù è stato eliminato."
+
+#: ../../mod/mitem.php:217
+msgid "Menu item could not be deleted."
+msgstr "L'elemento del menù non può essere eliminato."
+
+#: ../../mod/mitem.php:224
+msgid "Edit Menu Element"
+msgstr "Modifica l'elemento del menù"
+
+#: ../../mod/mitem.php:230
+msgid "Link text"
+msgstr "Testo del link"
+
+#: ../../mod/subthread.php:103
+#, php-format
+msgid "%1$s is following %2$s's %3$s"
+msgstr "%1$s sta seguendo %3$s di %2$s"
+
+#: ../../mod/mood.php:131
+msgid "Set your current mood and tell your friends"
+msgstr "Scegli il tuo umore attuale per mostrarlo agli amici"
+
+#: ../../mod/suggest.php:35
msgid ""
-"Remote authentication blocked. You are logged into this site locally. Please"
-" logout and retry."
-msgstr "L'autenticazione magica dal tuo hub non è disponibile. Puoi provare a disconnetterti per tentare di nuovo."
+"No suggestions available. If this is a new site, please try again in 24 "
+"hours."
+msgstr "Nessun suggerimento disponibile. Se questo sito è nuovo, riprova tra 24 ore."
+
+#: ../../mod/tagger.php:96
+#, php-format
+msgid "%1$s tagged %2$s's %3$s with %4$s"
+msgstr "%1$s ha taggato %3$s di %2$s con %4$s"
+
+#: ../../mod/tagrm.php:44 ../../mod/tagrm.php:94
+msgid "Tag removed"
+msgstr "Tag rimosso"
+
+#: ../../mod/tagrm.php:119
+msgid "Remove Item Tag"
+msgstr "Rimuovi il tag"
+
+#: ../../mod/tagrm.php:121
+msgid "Select a tag to remove: "
+msgstr "Seleziona un tag da rimuovere: "
+
+#: ../../mod/network.php:91
+msgid "No such group"
+msgstr "Impossibile trovare l'insieme"
+
+#: ../../mod/network.php:129
+msgid "No such channel"
+msgstr "Canale sconosciuto"
+
+#: ../../mod/network.php:143
+msgid "Search Results For:"
+msgstr "Cerca risultati con:"
+
+#: ../../mod/network.php:198
+msgid "Collection is empty"
+msgstr "L'insieme di canali è vuoto"
+
+#: ../../mod/network.php:207
+msgid "Collection: "
+msgstr "Insieme:"
+
+#: ../../mod/network.php:226
+msgid "Connection: "
+msgstr "Contatto:"
+
+#: ../../mod/network.php:233
+msgid "Invalid connection."
+msgstr "Contatto non valido."
+
+#: ../../mod/openid.php:26
+msgid "OpenID protocol error. No ID returned."
+msgstr "Errore del protocollo OpenID. Nessun ID ricevuto in risposta."
#: ../../mod/new_channel.php:109
msgid "Add a Channel"
@@ -8698,151 +8643,213 @@ msgstr "Tipo di canale"
msgid "Read more about roles"
msgstr "Maggiori informazioni sui ruoli"
-#: ../../mod/appman.php:28 ../../mod/appman.php:44
-msgid "App installed."
-msgstr "App installata"
+#: ../../mod/thing.php:94
+msgid "Thing updated"
+msgstr "L'Oggetto è stato aggiornato"
-#: ../../mod/appman.php:37
-msgid "Malformed app."
-msgstr "App non corretta"
+#: ../../mod/thing.php:167
+msgid "Object store: failed"
+msgstr "Impossibile memorizzare l'oggetto."
-#: ../../mod/appman.php:80
-msgid "Embed code"
-msgstr "Inserisci del codice"
+#: ../../mod/thing.php:171
+msgid "Thing added"
+msgstr "L'Oggetto è stato aggiunto"
-#: ../../mod/appman.php:86
-msgid "Edit App"
-msgstr "Modifica app"
+#: ../../mod/thing.php:203
+#, php-format
+msgid "OBJ: %1$s %2$s %3$s"
+msgstr "OBJ: %1$s %2$s %3$s"
-#: ../../mod/appman.php:86
-msgid "Create App"
-msgstr "Crea una app"
+#: ../../mod/thing.php:254
+msgid "Show Thing"
+msgstr "Mostra l'Oggetto"
-#: ../../mod/appman.php:91
-msgid "Name of app"
-msgstr "Nome app"
+#: ../../mod/thing.php:261
+msgid "item not found."
+msgstr "non trovato."
-#: ../../mod/appman.php:92
-msgid "Location (URL) of app"
-msgstr "Indirizzo (URL) della app"
+#: ../../mod/thing.php:289
+msgid "Edit Thing"
+msgstr "Modifica l'Oggetto"
-#: ../../mod/appman.php:94
-msgid "Photo icon URL"
-msgstr "URL icona"
+#: ../../mod/thing.php:291 ../../mod/thing.php:338
+msgid "Select a profile"
+msgstr "Scegli un profilo"
-#: ../../mod/appman.php:94
-msgid "80 x 80 pixels - optional"
-msgstr "80 x 80 pixel - facoltativa"
+#: ../../mod/thing.php:295 ../../mod/thing.php:341
+msgid "Post an activity"
+msgstr "Pubblica un'attività"
-#: ../../mod/appman.php:95
-msgid "Version ID"
-msgstr "ID versione"
+#: ../../mod/thing.php:295 ../../mod/thing.php:341
+msgid "Only sends to viewers of the applicable profile"
+msgstr "Invia solo a chi segue il relativo canale"
-#: ../../mod/appman.php:96
-msgid "Price of app"
-msgstr "Prezzo app"
+#: ../../mod/thing.php:297 ../../mod/thing.php:343
+msgid "Name of thing e.g. something"
+msgstr "Nome dell'Oggetto"
-#: ../../mod/appman.php:97
-msgid "Location (URL) to purchase app"
-msgstr "Indirizzo (URL) per acquistare la app"
+#: ../../mod/thing.php:299 ../../mod/thing.php:344
+msgid "URL of thing (optional)"
+msgstr "Indirizzo web dell'Oggetto (opzionale)"
-#: ../../mod/ping.php:263
-msgid "sent you a private message"
-msgstr "ti ha inviato un messaggio privato"
+#: ../../mod/thing.php:301 ../../mod/thing.php:345
+msgid "URL for photo of thing (optional)"
+msgstr "Indirizzo di un'immagine dell'Oggetto (facoltativo)"
-#: ../../mod/ping.php:314
-msgid "added your channel"
-msgstr "ha aggiunto il tuo canale"
+#: ../../mod/thing.php:336
+msgid "Add Thing to your Profile"
+msgstr "Aggiungi l'Oggetto al tuo profilo"
-#: ../../mod/ping.php:355
-msgid "posted an event"
-msgstr "ha creato un evento"
+#: ../../mod/uexport.php:50 ../../mod/uexport.php:51
+msgid "Export Channel"
+msgstr "Esporta il canale"
-#: ../../mod/layouts.php:176
-msgid "Comanche page description language help"
-msgstr "Guida di Comanche Page Description Language"
+#: ../../mod/uexport.php:52
+msgid ""
+"Export your basic channel information to a file. This acts as a backup of "
+"your connections, permissions, profile and basic data, which can be used to "
+"import your data to a new server hub, but does not contain your content."
+msgstr "Esporta le informazioni di base del canale in un file. In pratica è un salvataggio delle tue connessioni, dei permessi che hai assegnato e del tuo profilo che così potrà essere importato su un altro server/hub. Il file non includerà i tuoi post e altri contenuti che hai creato o caricato."
-#: ../../mod/layouts.php:180
-msgid "Layout Description"
-msgstr "Descrizione del layout"
+#: ../../mod/uexport.php:53
+msgid "Export Content"
+msgstr "Esporta i contenuti"
-#: ../../mod/layouts.php:185
-msgid "Download PDL file"
-msgstr "Scarica il file PDL"
+#: ../../mod/uexport.php:54
+msgid ""
+"Export your channel information and recent content to a JSON backup that can"
+" be restored or imported to another server hub. This backs up all of your "
+"connections, permissions, profile data and several months of posts. This "
+"file may be VERY large. Please be patient - it may take several minutes for"
+" this download to begin."
+msgstr "Esporta il tuo canale e i contenuti recenti in un file di salvataggio che potrà essere importato su un altro server/hub. Sarà un backup dei tuoi contatti, dei permessi che hai assegnato, dei dati del profilo e dei post degli ultimi mesi. Il file potrebbe essere MOLTO grande. Sarà necessario attendere con pazienza - saranno necessari molti minuti prima che inizi lo scaricamento."
-#: ../../mod/home.php:75
-#, php-format
-msgid "Welcome to %s"
-msgstr "%s ti dà il benvenuto"
+#: ../../mod/uexport.php:55
+msgid "Export your posts from a given year or month:"
+msgstr "Puoi anche esportare i post relativi a un certo mese o anno"
-#: ../../mod/page.php:126
-msgid "Lorem Ipsum"
-msgstr "Lorem Ipsum"
+#: ../../mod/uexport.php:57
+msgid ""
+"You may also export your posts and conversations for a particular year or "
+"month. Click on one of the recent years or months below."
+msgstr "Puoi anche esportare i tuoi post e le conversazioni di un certo mese o anno. Clicca qua sotto su un mese o su un anno recente."
-#: ../../mod/bookmarks.php:38
-msgid "Bookmark added"
-msgstr "Segnalibro aggiunto"
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Jan"
+msgstr "Gen"
-#: ../../mod/bookmarks.php:60
-msgid "My Bookmarks"
-msgstr "I miei segnalibri"
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Feb"
+msgstr "Feb"
-#: ../../mod/bookmarks.php:71
-msgid "My Connections Bookmarks"
-msgstr "I segnalibri dei miei contatti"
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Mar"
+msgstr "Mar"
-#: ../../mod/channel.php:97
-msgid "Insufficient permissions. Request redirected to profile page."
-msgstr "Permessi insufficienti. Sarà visualizzata la pagina del profilo."
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Apr"
+msgstr "Apr"
-#: ../../mod/pconfig.php:27 ../../mod/pconfig.php:60
-msgid "This setting requires special processing and editing has been blocked."
-msgstr "Questa impostazione è bloccata, richiede criteri di modifica speciali"
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Jun"
+msgstr "Giu"
-#: ../../mod/pconfig.php:49
-msgid "Configuration Editor"
-msgstr "Editor di configurazione"
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Jul"
+msgstr "Lug"
-#: ../../mod/pconfig.php:50
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Aug"
+msgstr "Ago"
+
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Sep"
+msgstr "Set"
+
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Oct"
+msgstr "Ott"
+
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Nov"
+msgstr "Nov"
+
+#: ../../mod/uexport.php:58 ../../mod/uexport.php:59
+msgid "Dec"
+msgstr "Dic"
+
+#: ../../mod/uexport.php:60
msgid ""
-"Warning: Changing some settings could render your channel inoperable. Please"
-" leave this page unless you are comfortable with and knowledgeable about how"
-" to correctly use this feature."
-msgstr "Attenzione: alcune delle impostazioni, se cambiate, potrebbero rendere questo canale non funzionante. Lascia questa pagina a meno che tu non sappia con assoluta certezza quali modifiche effettuare."
+"If the export fails (possibly due to memory exhaustion on your server hub), "
+"please try again selecting a more limited date range."
+msgstr "Se l'esportazione fallisce (di solito è per mancanza di memoria sullo hub), puoi provare nuovamente, ma scegliendo un intervallo di date più stretto."
-#: ../../mod/suggest.php:35
+#: ../../mod/uexport.php:61
+#, php-format
msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
-msgstr "Nessun suggerimento disponibile. Se questo sito è nuovo, riprova tra 24 ore."
+"Or adjust the date in your browser location bar to select other dates. For "
+"example the year 2013; <a href=\"%1$s/2013\">%1$s/2013</a> or the month "
+"September 2013; <a href=\"%1$s/2013/9\">%1$s/2013/9</a>"
+msgstr "Oppure cambia le date nella barra degli indirizzi del tuo browser per selezionare altre date. Per esempio, l'anno 2013; <a href=\"%1$s/2013\">%1$s/2013</a> o il mese di settembre 2013; <a href=\"%1$s/2013/9\">%1$s/2013/9</a>"
-#: ../../mod/poll.php:64
-msgid "Poll"
-msgstr "Sondaggio"
+#: ../../mod/uexport.php:62
+msgid "Please visit"
+msgstr "Visita"
-#: ../../mod/poll.php:69
-msgid "View Results"
-msgstr "Guarda i risultati"
+#: ../../mod/uexport.php:62
+msgid "on another hub to import the backup files(s)."
+msgstr "su un altro hub per importare il backup."
-#: ../../mod/service_limits.php:19
-msgid "No service class restrictions found."
-msgstr "Non esistono restrizioni su questa classe di account."
+#: ../../mod/uexport.php:63
+msgid ""
+"We advise you to clone the channel on the new hub first and than to import "
+"the backup file(s) (from the same channel) in chronological order. Importing"
+" the backup files into another channel will certainly give permission "
+"issues."
+msgstr "Il consiglio è di clonare per prima cosa il canale sul nuovo hub e poi importare i file di backup creati dal canale originale in ordine cronologico. Importare contenuti di canali differenti darà sicuramente problemi sui diritti."
-#: ../../mod/sharedwithme.php:94
-msgid "Files: shared with me"
-msgstr "File: condivisi con me"
+#: ../../mod/update_channel.php:43 ../../mod/update_display.php:25
+#: ../../mod/update_home.php:21 ../../mod/update_network.php:23
+#: ../../mod/update_public.php:21 ../../mod/update_search.php:46
+msgid "[Embedded content - reload page to view]"
+msgstr "[Contenuto incorporato - ricarica la pagina per visualizzarlo correttamente]"
-#: ../../mod/sharedwithme.php:96
-msgid "NEW"
-msgstr "NOVITÀ"
+#: ../../mod/viewconnections.php:62
+msgid "No connections."
+msgstr "Nessun contatto."
-#: ../../mod/sharedwithme.php:99
-msgid "Remove all files"
-msgstr "Elimina tutti i file"
+#: ../../mod/viewconnections.php:75
+#, php-format
+msgid "Visit %s's profile [%s]"
+msgstr "Visita il profilo di %s [%s]"
-#: ../../mod/sharedwithme.php:100
-msgid "Remove this file"
-msgstr "Elimina questo file"
+#: ../../mod/viewsrc.php:38
+msgid "Source of Item"
+msgstr "Sorgente"
+
+#: ../../mod/vote.php:97
+msgid "Total votes"
+msgstr "Totale voti"
+
+#: ../../mod/vote.php:98
+msgid "Average Rating"
+msgstr "Valutazione media"
+
+#: ../../mod/webpages.php:191
+msgid "Page Title"
+msgstr "Titolo della pagina"
+
+#: ../../mod/xchan.php:6
+msgid "Xchan Lookup"
+msgstr "Ricerca canale"
+
+#: ../../mod/xchan.php:9
+msgid "Lookup xchan beginning with (or webbie): "
+msgstr "Cerca un canale (o un webbie) che inizia per:"
+
+#: ../../mod/zfinger.php:23
+msgid "invalid target signature"
+msgstr "la firma ricevuta non è valida"
#: ../../view/theme/apw/php/config.php:202
#: ../../view/theme/apw/php/config.php:236
@@ -9115,51 +9122,51 @@ msgstr "Dimensione foto dell'autore della conversazione"
msgid "Set size of followup author photos"
msgstr "Dimensione foto dei partecipanti alla conversazione"
-#: ../../boot.php:1355
+#: ../../boot.php:1356
#, php-format
msgid "Update %s failed. See error logs."
msgstr "%s: aggiornamento fallito. Controlla i log di errore."
-#: ../../boot.php:1358
+#: ../../boot.php:1359
#, php-format
msgid "Update Error at %s"
msgstr "Errore di aggiornamento su %s"
-#: ../../boot.php:1525
+#: ../../boot.php:1526
msgid ""
"Create an account to access services and applications within the Red Matrix"
msgstr "Registrati per accedere ai servizi e alle applicazioni di RedMatrix"
-#: ../../boot.php:1553
+#: ../../boot.php:1554
msgid "Password"
msgstr "Password"
-#: ../../boot.php:1554
+#: ../../boot.php:1555
msgid "Remember me"
msgstr "Resta connesso"
-#: ../../boot.php:1557
+#: ../../boot.php:1558
msgid "Forgot your password?"
msgstr "Hai dimenticato la password?"
-#: ../../boot.php:2177
+#: ../../boot.php:2182
msgid "toggle mobile"
msgstr "attiva/disattiva versione mobile"
-#: ../../boot.php:2312
+#: ../../boot.php:2317
msgid "Website SSL certificate is not valid. Please correct."
msgstr "Il certificato SSL del sito non è valido. Si prega di intervenire."
-#: ../../boot.php:2315
+#: ../../boot.php:2320
#, php-format
msgid "[red] Website SSL error for %s"
msgstr "[red] Errore SSL %s "
-#: ../../boot.php:2352
+#: ../../boot.php:2357
msgid "Cron/Scheduled tasks not running."
msgstr "Processi/cron non avviati."
-#: ../../boot.php:2356
+#: ../../boot.php:2361
#, php-format
msgid "[red] Cron tasks not running on %s"
msgstr "[red] Processi cron non avviati su %s"
diff --git a/view/it/strings.php b/view/it/strings.php
index 9723f77ff..da31a9a0c 100644
--- a/view/it/strings.php
+++ b/view/it/strings.php
@@ -5,122 +5,9 @@ function string_plural_select_it($n){
return ($n != 1);;
}}
;
-App::$strings["Cannot locate DNS info for database server '%s'"] = "Non trovo le informazioni DNS per il database server '%s'";
-App::$strings["Profile Photos"] = "Foto del profilo";
-App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "I controlli di sicurezza sono falliti. Probabilmente è accaduto perché la pagina è stata tenuta aperta troppo a lungo (ore?) prima di inviare il contenuto.";
-App::$strings["created a new post"] = "Ha creato un nuovo articolo";
-App::$strings["commented on %s's post"] = "ha commentato l'articolo di %s";
-App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "È stato ripristinato un insieme con lo stesso nome che era stato eliminato in precedenza. I permessi già presenti <strong>potrebbero</strong> rimanere validi per i nuovi canali. Se non vuoi che ciò accada, devi creare un altro insieme con un nome diverso.";
-App::$strings["Default privacy group for new contacts"] = "Insieme predefinito per i canali che inizi a seguire";
-App::$strings["All Channels"] = "Tutti i canali";
-App::$strings["edit"] = "modifica";
-App::$strings["Collections"] = "Insiemi di canali";
-App::$strings["Edit collection"] = "Modifica l'insieme di canali";
-App::$strings["Add new collection"] = "Nuovo insieme";
-App::$strings["Channels not in any collection"] = "Canali che non sono in un insieme";
-App::$strings["add"] = "aggiungi";
-App::$strings["Not a valid email address"] = "Email non valida";
-App::$strings["Your email domain is not among those allowed on this site"] = "Il dominio della tua email attualmente non è permesso su questo sito";
-App::$strings["Your email address is already registered at this site."] = "La tua email è già registrata su questo sito.";
-App::$strings["An invitation is required."] = "È necessario un invito.";
-App::$strings["Invitation could not be verified."] = "L'invito non può essere verificato.";
-App::$strings["Please enter the required information."] = "Inserisci le informazioni richieste.";
-App::$strings["Failed to store account information."] = "Non è stato possibile salvare le informazioni del tuo account.";
-App::$strings["Registration confirmation for %s"] = "Registrazione di %s confermata";
-App::$strings["Registration request at %s"] = "Richiesta di registrazione su %s";
-App::$strings["Administrator"] = "Amministratore";
-App::$strings["your registration password"] = "la password di registrazione";
-App::$strings["Registration details for %s"] = "Dettagli della registrazione di %s";
-App::$strings["Account approved."] = "Account approvato.";
-App::$strings["Registration revoked for %s"] = "Registrazione revocata per %s";
-App::$strings["Account verified. Please login."] = "Registrazione verificata. Adesso puoi effettuare login.";
-App::$strings["Click here to upgrade."] = "Clicca qui per aggiornare.";
-App::$strings["This action exceeds the limits set by your subscription plan."] = "Questa operazione supera i limiti del tuo abbonamento.";
-App::$strings["This action is not available under your subscription plan."] = "Questa operazione non è prevista dal tuo abbonamento.";
-App::$strings["Miscellaneous"] = "Altro";
-App::$strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-GG oppure MM-GG";
-App::$strings["Required"] = "Obbligatorio";
-App::$strings["never"] = "mai";
-App::$strings["less than a second ago"] = "meno di un secondo fa";
-App::$strings["year"] = "anno";
-App::$strings["years"] = "anni";
-App::$strings["month"] = "mese";
-App::$strings["months"] = "mesi";
-App::$strings["week"] = "settimana";
-App::$strings["weeks"] = "settimane";
-App::$strings["day"] = "giorno";
-App::$strings["days"] = "giorni";
-App::$strings["hour"] = "ora";
-App::$strings["hours"] = "ore";
-App::$strings["minute"] = "minuto";
-App::$strings["minutes"] = "minuti";
-App::$strings["second"] = "secondo";
-App::$strings["seconds"] = "secondi";
-App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "%1\$d %2\$s fa";
-App::$strings["%1\$s's birthday"] = "Compleanno di %1\$s";
-App::$strings["Happy Birthday %1\$s"] = "Buon compleanno %1\$s";
-App::$strings["New Page"] = "Nuova pagina web";
-App::$strings["Edit"] = "Modifica";
-App::$strings["View"] = "Guarda";
-App::$strings["Preview"] = "Anteprima";
-App::$strings["Actions"] = "Azioni";
-App::$strings["Page Link"] = "Link alla pagina";
-App::$strings["Title"] = "Titolo";
-App::$strings["Created"] = "Creato";
-App::$strings["Edited"] = "Modificato";
-App::$strings["Public Timeline"] = "Diario pubblico";
-App::$strings["Default"] = "Predefinito";
-App::$strings["Directory Options"] = "Opzioni elenco pubblico";
-App::$strings["Alphabetic"] = "Alfabetico";
-App::$strings["Reverse Alphabetic"] = "Alfabetico inverso";
-App::$strings["Newest to Oldest"] = "Prima i più recenti";
-App::$strings["Oldest to Newest"] = "Prima i più vecchi";
-App::$strings["Sort"] = "Ordinamento";
-App::$strings["Safe Mode"] = "Modalità SafeSearch";
-App::$strings["Public Forums Only"] = "Solo forum pubblici";
-App::$strings["This Website Only"] = "Solo in questo sito";
-App::$strings["l F d, Y \\@ g:i A"] = "l d F Y \\@ G:i";
-App::$strings["Starts:"] = "Inizio:";
-App::$strings["Finishes:"] = "Fine:";
-App::$strings["Location:"] = "Luogo:";
-App::$strings["This event has been added to your calendar."] = "Questo evento è stato aggiunto al tuo calendario";
-App::$strings["Delete this item?"] = "Eliminare questo elemento?";
-App::$strings["Comment"] = "Commento";
-App::$strings["[+] show all"] = "[+] mostra tutto";
-App::$strings["[-] show less"] = "[-] riduci";
-App::$strings["[+] expand"] = "[+] mostra tutto";
-App::$strings["[-] collapse"] = "[-] riduci";
-App::$strings["Password too short"] = "Password troppo corta";
-App::$strings["Passwords do not match"] = "Le password non corrispondono";
-App::$strings["everybody"] = "tutti";
-App::$strings["Secret Passphrase"] = "Chiave segreta";
-App::$strings["Passphrase hint"] = "Suggerimento per la chiave segreta";
-App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Nota: i permessi sono stati modificati ma non ancora salvati.";
-App::$strings["close all"] = "chiudi tutto";
-App::$strings["Nothing new here"] = "Niente di nuovo qui";
-App::$strings["Rate This Channel (this is public)"] = "Valuta questo canale (visibile a tutti)";
-App::$strings["Rating"] = "Valutazioni";
-App::$strings["Describe (optional)"] = "Descrizione (facoltativa)";
-App::$strings["Submit"] = "Salva";
-App::$strings["Please enter a link URL"] = "Inserisci l'URL di un link";
-App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Non hai salvato i cambiamenti. Vuoi davvero lasciare questa pagina?";
-App::$strings["timeago.prefixAgo"] = "timeago.prefixAgo";
-App::$strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
-App::$strings["ago"] = "fa";
-App::$strings["from now"] = "da adesso";
-App::$strings["less than a minute"] = "meno di un minuto";
-App::$strings["about a minute"] = "circa un minuto";
-App::$strings["%d minutes"] = "%d minuti";
-App::$strings["about an hour"] = "circa un’ora";
-App::$strings["about %d hours"] = "circa %d ore";
-App::$strings["a day"] = "un giorno";
-App::$strings["%d days"] = "%d giorni";
-App::$strings["about a month"] = "circa un mese";
-App::$strings["%d months"] = "%d mesi";
-App::$strings["about a year"] = "circa un anno";
-App::$strings["%d years"] = "%d anni";
-App::$strings[" "] = " ";
-App::$strings["timeago.numbers"] = "timeago.numbers";
+App::$strings["No username found in import file."] = "Impossibile trovare il nome utente nel file da importare.";
+App::$strings["Unable to create a unique channel address. Import failed."] = "Impossibile creare un indirizzo univoco per il canale. L'import è fallito.";
+App::$strings["Import completed."] = "L'importazione è terminata con successo!";
App::$strings["parent"] = "cartella superiore";
App::$strings["Collection"] = "Cartella";
App::$strings["Principal"] = "Principale";
@@ -140,73 +27,172 @@ App::$strings["Name"] = "Nome";
App::$strings["Type"] = "Tipo";
App::$strings["Size"] = "Dimensione";
App::$strings["Last Modified"] = "Ultima modifica";
+App::$strings["Edit"] = "Modifica";
App::$strings["Delete"] = "Elimina";
App::$strings["Create new folder"] = "Crea una nuova cartella";
App::$strings["Upload file"] = "Carica un file";
-App::$strings["%1\$s's bookmarks"] = "I segnalibri di %1\$s";
+App::$strings["Cannot locate DNS info for database server '%s'"] = "Non trovo le informazioni DNS per il database server '%s'";
+App::$strings["Profile Photos"] = "Foto del profilo";
+App::$strings["Logout"] = "Esci";
+App::$strings["End this session"] = "Chiudi questa sessione";
+App::$strings["Home"] = "Bacheca";
+App::$strings["Your posts and conversations"] = "I tuoi post e conversazioni";
+App::$strings["View Profile"] = "Profilo";
+App::$strings["Your profile page"] = "Il tuo profilo";
+App::$strings["Edit Profiles"] = "Modifica i profili";
+App::$strings["Manage/Edit profiles"] = "Gestisci/modifica i profili";
+App::$strings["Edit Profile"] = "Modifica il profilo";
+App::$strings["Edit your profile"] = "Modifica il profilo";
+App::$strings["Photos"] = "Foto";
+App::$strings["Your photos"] = "Le tue foto";
+App::$strings["Your files"] = "I tuoi file";
+App::$strings["Chat"] = "Area chat";
+App::$strings["Your chatrooms"] = "Le tue aree chat";
+App::$strings["Bookmarks"] = "Segnalibri";
+App::$strings["Your bookmarks"] = "I tuoi segnalibri";
+App::$strings["Webpages"] = "Pagine web";
+App::$strings["Your webpages"] = "Le tue pagine web";
+App::$strings["Login"] = "Accedi";
+App::$strings["Sign in"] = "Accedi";
+App::$strings["%s - click to logout"] = "%s - clicca per uscire";
+App::$strings["Remote authentication"] = "Accedi dal tuo hub";
+App::$strings["Click to authenticate to your home hub"] = "Accedi tramite il tuo hub principale";
+App::$strings["Home Page"] = "Bacheca";
+App::$strings["Register"] = "Iscriviti";
+App::$strings["Create an account"] = "Crea un account";
+App::$strings["Help"] = "Guida";
+App::$strings["Help and documentation"] = "Guida e documentazione";
+App::$strings["Apps"] = "Apps";
+App::$strings["Applications, utilities, links, games"] = "Applicazioni, utilità, link, giochi";
+App::$strings["Search"] = "Cerca";
+App::$strings["Search site content"] = "Cerca nel sito";
+App::$strings["Directory"] = "Elenco pubblico";
+App::$strings["Channel Directory"] = "Elenco pubblico canali";
+App::$strings["Matrix"] = "RedMatrix";
+App::$strings["Your matrix"] = "La tua rete";
+App::$strings["Mark all matrix notifications seen"] = "Segna come lette le notifiche della tua rete";
+App::$strings["Channel Home"] = "Bacheca del canale";
+App::$strings["Channel home"] = "Bacheca del canale";
+App::$strings["Mark all channel notifications seen"] = "Segna come lette le notifiche del canale";
+App::$strings["Connections"] = "Contatti";
+App::$strings["Notices"] = "Avvisi";
+App::$strings["Notifications"] = "Notifiche";
+App::$strings["See all notifications"] = "Vedi tutte le notifiche";
+App::$strings["Mark all system notifications seen"] = "Segna come lette le notifiche di sistema";
+App::$strings["Mail"] = "Messaggi";
+App::$strings["Private mail"] = "Messaggi privati";
+App::$strings["See all private messages"] = "Guarda tutti i messaggi privati";
+App::$strings["Mark all private messages seen"] = "Segna come letti tutti i messaggi privati";
+App::$strings["Inbox"] = "In arrivo";
+App::$strings["Outbox"] = "Inviati";
+App::$strings["New Message"] = "Nuovo messaggio";
+App::$strings["Events"] = "Eventi";
+App::$strings["Event Calendar"] = "Calendario";
+App::$strings["See all events"] = "Guarda tutti gli eventi";
+App::$strings["Mark all events seen"] = "Marca come letti tutti gli eventi";
+App::$strings["Channel Manager"] = "Gestione canali";
+App::$strings["Manage Your Channels"] = "Gestisci i tuoi canali";
+App::$strings["Settings"] = "Impostazioni";
+App::$strings["Account/Channel Settings"] = "Impostazioni dell'account e del canale";
+App::$strings["Admin"] = "Amministrazione";
+App::$strings["Site Setup and Configuration"] = "Installazione e configurazione del sito";
+App::$strings["Loading..."] = "Caricamento in corso...";
+App::$strings["@name, #tag, content"] = "@nome, #tag, testo";
+App::$strings["Please wait..."] = "Attendere...";
App::$strings["view full size"] = "guarda nelle dimensioni reali";
-App::$strings["General Features"] = "Funzionalità di base";
-App::$strings["Content Expiration"] = "Scadenza";
-App::$strings["Remove posts/comments and/or private messages at a future time"] = "Elimina gli articoli, i commenti o i messaggi privati dopo un lasso di tempo";
-App::$strings["Multiple Profiles"] = "Profili multipli";
-App::$strings["Ability to create multiple profiles"] = "Abilitazione a creare profili multipli";
-App::$strings["Advanced Profiles"] = "Profili avanzati";
-App::$strings["Additional profile sections and selections"] = "Informazioni aggiuntive del profilo";
-App::$strings["Profile Import/Export"] = "Importa/esporta il profilo";
-App::$strings["Save and load profile details across sites/channels"] = "Salva o ripristina le informazioni del profilo su canali o siti diversi";
-App::$strings["Web Pages"] = "Pagine web";
-App::$strings["Provide managed web pages on your channel"] = "Attiva la creazione di pagine web sul tuo canale";
-App::$strings["Private Notes"] = "Note private";
-App::$strings["Enables a tool to store notes and reminders"] = "Abilita il riquadro per scrivere annotazioni";
-App::$strings["Navigation Channel Select"] = "Scegli il canale attivo dal menu";
-App::$strings["Change channels directly from within the navigation dropdown menu"] = "Scegli il canale attivo direttamente dal menu di navigazione";
-App::$strings["Photo Location"] = "Posizione geografica";
-App::$strings["If location data is available on uploaded photos, link this to a map."] = "Collega la foto a una mappa quando contiene indicazioni geografiche.";
-App::$strings["Expert Mode"] = "Modalità esperto";
-App::$strings["Enable Expert Mode to provide advanced configuration options"] = "Abilita la modalità esperto per vedere le opzioni di configurazione avanzate";
-App::$strings["Premium Channel"] = "Canale premium";
-App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Ti permette di impostare delle restrizioni e dei termini d'uso a chi segue il canale";
-App::$strings["Post Composition Features"] = "Modalità di scrittura articoli";
-App::$strings["Use Markdown"] = "Usa il markdown";
-App::$strings["Allow use of \"Markdown\" to format posts"] = "Consenti l'uso del markdown per formattare gli articoli";
-App::$strings["Large Photos"] = "Foto grandi";
-App::$strings["Include large (640px) photo thumbnails in posts. If not enabled, use small (320px) photo thumbnails"] = "Includi anteprime grandi delle foto nei post (640px). Se disabilitato le anteprime saranno piccole (320px)";
-App::$strings["Channel Sources"] = "Sorgenti del canale";
-App::$strings["Automatically import channel content from other channels or feeds"] = "Importa automaticamente il contenuto del canale da altri canali o feed";
-App::$strings["Even More Encryption"] = "Crittografia addizionale";
-App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Rendi possibile la crittografia tra mittente e destinatario che condividono una chiave segreta";
-App::$strings["Enable voting tools"] = "Permetti i post con votazione";
-App::$strings["Provide a class of post which others can vote on"] = "Rende possibile la creazione di articoli in cui sarà possibile votare";
-App::$strings["Network and Stream Filtering"] = "Filtraggio dei contenuti";
-App::$strings["Search by Date"] = "Ricerca per data";
-App::$strings["Ability to select posts by date ranges"] = "Per selezionare gli articoli in un intervallo tra date";
-App::$strings["Collections Filter"] = "Filtra per insiemi di canali";
-App::$strings["Enable widget to display Network posts only from selected collections"] = "Mostra il riquadro per filtrare gli articoli di certi insiemi di canali";
-App::$strings["Saved Searches"] = "Ricerche salvate";
-App::$strings["Save search terms for re-use"] = "Salva i termini delle ricerche per poterle ripetere";
-App::$strings["Network Personal Tab"] = "Attività personale";
-App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Abilita il link per mostrare solamente i contenuti con cui hai interagito";
-App::$strings["Network New Tab"] = "Contenuti nuovi";
-App::$strings["Enable tab to display all new Network activity"] = "Abilita il link per visualizzare solo i nuovi contenuti";
-App::$strings["Affinity Tool"] = "Filtro per affinità";
-App::$strings["Filter stream activity by depth of relationships"] = "Permette di selezionare i contenuti in base al livello di amicizia";
-App::$strings["Suggest Channels"] = "Suggerisci canali";
-App::$strings["Show channel suggestions"] = "Mostra alcuni canali che potrebbero interessarti";
-App::$strings["Post/Comment Tools"] = "Gestione articoli e commenti";
-App::$strings["Tagging"] = "Tag";
-App::$strings["Ability to tag existing posts"] = "Permetti l'aggiunta di tag su articoli già esistenti";
-App::$strings["Post Categories"] = "Categorie degli articoli";
-App::$strings["Add categories to your posts"] = "Abilita le categorie per i tuoi articoli";
-App::$strings["Saved Folders"] = "Cartelle salvate";
-App::$strings["Ability to file posts under folders"] = "Abilita la raccolta dei tuoi articoli in cartelle";
-App::$strings["Dislike Posts"] = "Non mi piace";
-App::$strings["Ability to dislike posts/comments"] = "Abilità la funzionalità \"non mi piace\" per i tuoi articoli";
-App::$strings["Star Posts"] = "Articoli stella (preferiti)";
-App::$strings["Ability to mark special posts with a star indicator"] = "Mostra la stella per scegliere gli articoli preferiti";
-App::$strings["Tag Cloud"] = "Nuvola di tag";
-App::$strings["Provide a personal tag cloud on your channel page"] = "Mostra la nuvola dei tag che usi di più sulla pagina del tuo canale";
+App::$strings["\$Projectname Notification"] = "Notifica \$Projectname";
+App::$strings["\$projectname"] = "\$projectname";
+App::$strings["Thank You,"] = "Grazie,";
+App::$strings["%s Administrator"] = "L'amministratore di %s";
+App::$strings["Administrator"] = "Amministratore";
+App::$strings["No Subject"] = "Nessun titolo";
+App::$strings["prev"] = "prec";
+App::$strings["first"] = "inizio";
+App::$strings["last"] = "fine";
+App::$strings["next"] = "succ";
+App::$strings["older"] = "più recenti";
+App::$strings["newer"] = "più nuovi";
+App::$strings["No connections"] = "Nessun contatto";
+App::$strings["%d Connection"] = array(
+ 0 => "%d contatto",
+ 1 => "%d contatti",
+);
+App::$strings["View Connections"] = "Elenco contatti";
+App::$strings["Save"] = "Salva";
+App::$strings["poke"] = "poke";
+App::$strings["poked"] = "ha mandato un poke";
+App::$strings["ping"] = "ping";
+App::$strings["pinged"] = "ha ricevuto un ping";
+App::$strings["prod"] = "spintone";
+App::$strings["prodded"] = "ha ricevuto uno spintone";
+App::$strings["slap"] = "schiaffo";
+App::$strings["slapped"] = "ha ricevuto uno schiaffo";
+App::$strings["finger"] = "finger";
+App::$strings["fingered"] = "ha ricevuto un finger";
+App::$strings["rebuff"] = "rifiuto";
+App::$strings["rebuffed"] = "ha ricevuto un rifiuto";
+App::$strings["happy"] = "felice";
+App::$strings["sad"] = "triste";
+App::$strings["mellow"] = "calmo";
+App::$strings["tired"] = "stanco";
+App::$strings["perky"] = "vivace";
+App::$strings["angry"] = "arrabbiato";
+App::$strings["stupified"] = "stordito";
+App::$strings["puzzled"] = "confuso";
+App::$strings["interested"] = "attento";
+App::$strings["bitter"] = "amaro";
+App::$strings["cheerful"] = "allegro";
+App::$strings["alive"] = "vivace";
+App::$strings["annoyed"] = "seccato";
+App::$strings["anxious"] = "ansioso";
+App::$strings["cranky"] = "irritabile";
+App::$strings["disturbed"] = "turbato";
+App::$strings["frustrated"] = "frustrato";
+App::$strings["depressed"] = "in depressione";
+App::$strings["motivated"] = "motivato";
+App::$strings["relaxed"] = "rilassato";
+App::$strings["surprised"] = "sorpreso";
+App::$strings["Monday"] = "lunedì";
+App::$strings["Tuesday"] = "martedì";
+App::$strings["Wednesday"] = "mercoledì";
+App::$strings["Thursday"] = "giovedì";
+App::$strings["Friday"] = "venerdì";
+App::$strings["Saturday"] = "sabato";
+App::$strings["Sunday"] = "domenica";
+App::$strings["January"] = "gennaio";
+App::$strings["February"] = "febbraio";
+App::$strings["March"] = "marzo";
+App::$strings["April"] = "aprile";
+App::$strings["May"] = "maggio";
+App::$strings["June"] = "giugno";
+App::$strings["July"] = "luglio";
+App::$strings["August"] = "agosto";
+App::$strings["September"] = "settembre";
+App::$strings["October"] = "ottobre";
+App::$strings["November"] = "novembre";
+App::$strings["December"] = "dicembre";
+App::$strings["unknown.???"] = "sconosciuto???";
+App::$strings["bytes"] = "byte";
+App::$strings["remove category"] = "rimuovi la categoria";
+App::$strings["remove from file"] = "rimuovi dal file";
+App::$strings["Click to open/close"] = "Clicca per aprire/chiudere";
+App::$strings["Link to Source"] = "Link al sito d'origine";
+App::$strings["default"] = "predefinito";
+App::$strings["Page layout"] = "Layout della pagina";
+App::$strings["You can create your own with the layouts tool"] = "Con la configurazione del layout puoi crearne uno tuo";
+App::$strings["Page content type"] = "Tipo di contenuto della pagina";
+App::$strings["Select an alternate language"] = "Seleziona una lingua diversa";
+App::$strings["photo"] = "la foto";
+App::$strings["event"] = "l'evento";
+App::$strings["status"] = "il messaggio di stato";
+App::$strings["comment"] = "il commento";
+App::$strings["activity"] = "l'attività";
+App::$strings["Design Tools"] = "Strumenti di design";
+App::$strings["Blocks"] = "Riquadri";
+App::$strings["Menus"] = "Menù";
+App::$strings["Layouts"] = "Layout";
+App::$strings["Pages"] = "Pagine";
App::$strings["Categories"] = "Categorie";
-App::$strings["Apps"] = "Apps";
App::$strings["System"] = "Sistema";
App::$strings["Personal"] = "Personali";
App::$strings["Create Personal App"] = "Crea una app personale";
@@ -220,8 +206,10 @@ App::$strings["Add New Connection"] = "Aggiungi un contatto";
App::$strings["Enter the channel address"] = "Scrivi l'indirizzo del canale";
App::$strings["Example: bob@example.com, http://example.com/barbara"] = "Per esempio: mario@pippo.it oppure http://pluto.com/barbara";
App::$strings["Notes"] = "Note";
-App::$strings["Save"] = "Salva";
App::$strings["Remove term"] = "Rimuovi termine";
+App::$strings["Saved Searches"] = "Ricerche salvate";
+App::$strings["add"] = "aggiungi";
+App::$strings["Saved Folders"] = "Cartelle salvate";
App::$strings["Everything"] = "Tutto";
App::$strings["Archives"] = "Archivi";
App::$strings["Me"] = "Io";
@@ -239,10 +227,9 @@ App::$strings["Connected apps"] = "App connesse";
App::$strings["Export channel"] = "Esporta il canale";
App::$strings["Connection Default Permissions"] = "Permessi predefiniti dei nuovi contatti";
App::$strings["Premium Channel Settings"] = "Canale premium - impostazioni";
-App::$strings["Settings"] = "Impostazioni";
+App::$strings["Channel Sources"] = "Sorgenti del canale";
App::$strings["Messages"] = "Messaggi";
App::$strings["Check Mail"] = "Controlla i messaggi";
-App::$strings["New Message"] = "Nuovo messaggio";
App::$strings["Chat Rooms"] = "Aree chat attive";
App::$strings["Bookmarked Chatrooms"] = "Aree chat nei segnalibri";
App::$strings["Suggested Chatrooms"] = "Aree chat suggerite";
@@ -250,74 +237,18 @@ App::$strings["photo/image"] = "foto/immagine";
App::$strings["Rate Me"] = "Valutami";
App::$strings["View Ratings"] = "Vedi le valutazioni ricevute";
App::$strings["Public Hubs"] = "Hub pubblici";
-App::$strings["Hubzilla Notification"] = "Notifica di Hubzilla";
-App::$strings["hubzilla"] = "Hubzilla";
-App::$strings["Thank You,"] = "Grazie,";
-App::$strings["%s Administrator"] = "L'amministratore di %s";
-App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
-App::$strings["[Red:Notify] New mail received at %s"] = "[Hubzilla] Nuovo messaggio su %s";
-App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s ti ha mandato un messaggio privato su %3\$s.";
-App::$strings["%1\$s sent you %2\$s."] = "%1\$s ti ha mandato %2\$s.";
-App::$strings["a private message"] = "un messaggio privato";
-App::$strings["Please visit %s to view and/or reply to your private messages."] = "Visita %s per leggere i tuoi messaggi privati e rispondere.";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s ha commentato [zrl=%3\$s]%4\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s ha commentato [zrl=%3\$s]%5\$s di %4\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s ha commentato [zrl=%3\$s]%4\$s che hai creato[/zrl]";
-App::$strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Hubzilla] Nuovo commento di %2\$s alla conversazione #%1\$d";
-App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s ha commentato un elemento che stavi seguendo.";
-App::$strings["Please visit %s to view and/or reply to the conversation."] = "Visita %s per leggere o commentare la conversazione.";
-App::$strings["[Red:Notify] %s posted to your profile wall"] = "[Hubzilla] %s ha scritto sulla tua bacheca";
-App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s ha scritto sulla bacheca del tuo profilo su %3\$s";
-App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s ha scritto sulla [zrl=%3\$s]tua bacheca[/zrl]";
-App::$strings["[Red:Notify] %s tagged you"] = "[Hubzilla] %s ti ha taggato";
-App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s ti ha taggato su %3\$s";
-App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]ti ha taggato[/zrl].";
-App::$strings["[Red:Notify] %1\$s poked you"] = "[Hubzilla] %1\$s ti ha mandato un poke";
-App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s ti ha mandato un poke su %3\$s";
-App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]ti ha mandato un poke[/zrl].";
-App::$strings["[Red:Notify] %s tagged your post"] = "[Hubzilla] %s ha taggato il tuo articolo";
-App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s ha taggato il tuo articolo su %3\$s";
-App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s ha taggato [zrl=%3\$s]il tuo articolo[/zrl]";
-App::$strings["[Red:Notify] Introduction received"] = "[Hubzilla] Hai una richiesta di amicizia";
-App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, hai ricevuto una richiesta di entrare in contatto da '%2\$s' su %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, hai ricevuto una [zrl=%2\$s]richiesta di entrare in contatto[/zrl] da %3\$s.";
-App::$strings["You may visit their profile at %s"] = "Puoi visitare il suo profilo su %s";
-App::$strings["Please visit %s to approve or reject the connection request."] = "Visita %s per approvare o rifiutare la richiesta di entrare in contatto.";
-App::$strings["[Red:Notify] Friend suggestion received"] = "[Hubzilla] Ti è stato suggerito un amico";
-App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, ti è stato suggerito un amico da '%2\$s' su %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, %4\$s ti [zrl=%2\$s]ha suggerito %3\$s[/zrl] come amico.";
-App::$strings["Name:"] = "Nome:";
-App::$strings["Photo:"] = "Foto:";
-App::$strings["Please visit %s to approve or reject the suggestion."] = "Visita %s per approvare o rifiutare il suggerimento.";
-App::$strings["[Red:Notify]"] = "[Hubzilla]";
-App::$strings["Frequently"] = "Frequentemente";
-App::$strings["Hourly"] = "Ogni ora";
-App::$strings["Twice daily"] = "Due volte al giorno";
-App::$strings["Daily"] = "Ogni giorno";
-App::$strings["Weekly"] = "Ogni settimana";
-App::$strings["Monthly"] = "Ogni mese";
-App::$strings["Friendica"] = "Friendica";
-App::$strings["OStatus"] = "OStatus";
-App::$strings["RSS/Atom"] = "RSS/Atom";
-App::$strings["Email"] = "Email";
-App::$strings["Diaspora"] = "Diaspora";
-App::$strings["Facebook"] = "Facebook";
-App::$strings["Zot!"] = "Zot!";
-App::$strings["LinkedIn"] = "LinkedIn";
-App::$strings["XMPP/IM"] = "XMPP/IM";
-App::$strings["MySpace"] = "MySpace";
+App::$strings["New window"] = "Nuova finestra";
+App::$strings["Open the selected location in a different window or browser tab"] = "Apri l'indirizzo selezionato in una nuova scheda o finestra";
+App::$strings["User '%s' deleted"] = "Utente '%s' eliminato";
App::$strings["No recipient provided."] = "Devi scegliere un destinatario.";
App::$strings["[no subject]"] = "[nessun titolo]";
App::$strings["Unable to determine sender."] = "Impossibile determinare il mittente.";
-App::$strings["Stored post could not be verified."] = "Non è stato possibile verificare l'articolo inserito.";
-App::$strings["Channel is blocked on this site."] = "Il canale è bloccato per questo sito.";
-App::$strings["Channel location missing."] = "Manca l'indirizzo del canale.";
-App::$strings["Response from remote channel was incomplete."] = "La risposta dal canale non è completa.";
-App::$strings["Channel was deleted and no longer exists."] = "Il canale è stato rimosso e non esiste più.";
-App::$strings["Protocol disabled."] = "Protocollo disabilitato.";
-App::$strings["Channel discovery failed."] = "La ricerca del canale non ha avuto successo.";
-App::$strings["local account not found."] = "l'account locale non è stato trovato.";
-App::$strings["Cannot connect to yourself."] = "Non puoi connetterti a te stesso.";
+App::$strings["Stored post could not be verified."] = "Non è stato possibile verificare il post.";
+App::$strings["Invalid data packet"] = "Dati non validi";
+App::$strings["Unable to verify channel signature"] = "Impossibile verificare la firma elettronica del canale";
+App::$strings["Unable to verify site signature for %s"] = "Impossibile verificare la firma elettronica del sito %s";
+App::$strings["created a new post"] = "Ha creato un nuovo post";
+App::$strings["commented on %s's post"] = "ha commentato il post di %s";
App::$strings["Private Message"] = "Messaggio privato";
App::$strings["Select"] = "Seleziona";
App::$strings["Save to Folder"] = "Salva nella cartella";
@@ -368,7 +299,10 @@ App::$strings["__ctx:noun__ Likes"] = "Mi piace";
App::$strings["__ctx:noun__ Dislikes"] = "Non mi piace";
App::$strings["Close"] = "Chiudi";
App::$strings["Please wait"] = "Attendere";
+App::$strings["[+] show all"] = "[+] mostra tutto";
App::$strings["This is you"] = "Questo sei tu";
+App::$strings["Comment"] = "Commento";
+App::$strings["Submit"] = "Salva";
App::$strings["Bold"] = "Grassetto";
App::$strings["Italic"] = "Corsivo";
App::$strings["Underline"] = "Sottolineato";
@@ -377,232 +311,134 @@ App::$strings["Code"] = "Codice";
App::$strings["Image"] = "Immagine";
App::$strings["Insert Link"] = "Collegamento";
App::$strings["Video"] = "Video";
+App::$strings["Preview"] = "Anteprima";
App::$strings["Encrypt text"] = "Crittografia del testo";
-App::$strings["New window"] = "Nuova finestra";
-App::$strings["Open the selected location in a different window or browser tab"] = "Apri l'indirizzo selezionato in una nuova scheda o finestra";
-App::$strings["User '%s' deleted"] = "Utente '%s' eliminato";
-App::$strings["Attachments:"] = "Allegati:";
-App::$strings["Hubzilla event notification:"] = "Notifica eventi Hubzilla:";
-App::$strings["prev"] = "prec";
-App::$strings["first"] = "inizio";
-App::$strings["last"] = "fine";
-App::$strings["next"] = "succ";
-App::$strings["older"] = "più recenti";
-App::$strings["newer"] = "più nuovi";
-App::$strings["No connections"] = "Nessun contatto";
-App::$strings["%d Connection"] = array(
- 0 => "%d contatto",
- 1 => "%d contatti",
-);
-App::$strings["View Connections"] = "Elenco contatti";
-App::$strings["Search"] = "Cerca";
-App::$strings["poke"] = "poke";
-App::$strings["poked"] = "ha ricevuto un poke";
-App::$strings["ping"] = "ping";
-App::$strings["pinged"] = "ha ricevuto un ping";
-App::$strings["prod"] = "spintone";
-App::$strings["prodded"] = "ha ricevuto uno spintone";
-App::$strings["slap"] = "schiaffo";
-App::$strings["slapped"] = "ha ricevuto uno schiaffo";
-App::$strings["finger"] = "finger";
-App::$strings["fingered"] = "ha ricevuto un finger";
-App::$strings["rebuff"] = "rifiuto";
-App::$strings["rebuffed"] = "ha ricevuto un rifiuto";
-App::$strings["happy"] = "felice";
-App::$strings["sad"] = "triste";
-App::$strings["mellow"] = "calmo";
-App::$strings["tired"] = "stanco";
-App::$strings["perky"] = "vivace";
-App::$strings["angry"] = "arrabbiato";
-App::$strings["stupified"] = "stordito";
-App::$strings["puzzled"] = "confuso";
-App::$strings["interested"] = "attento";
-App::$strings["bitter"] = "amaro";
-App::$strings["cheerful"] = "allegro";
-App::$strings["alive"] = "vivace";
-App::$strings["annoyed"] = "seccato";
-App::$strings["anxious"] = "ansioso";
-App::$strings["cranky"] = "irritabile";
-App::$strings["disturbed"] = "turbato";
-App::$strings["frustrated"] = "frustrato";
-App::$strings["depressed"] = "in depressione";
-App::$strings["motivated"] = "motivato";
-App::$strings["relaxed"] = "rilassato";
-App::$strings["surprised"] = "sorpreso";
-App::$strings["Monday"] = "lunedì";
-App::$strings["Tuesday"] = "martedì";
-App::$strings["Wednesday"] = "mercoledì";
-App::$strings["Thursday"] = "giovedì";
-App::$strings["Friday"] = "venerdì";
-App::$strings["Saturday"] = "sabato";
-App::$strings["Sunday"] = "domenica";
-App::$strings["January"] = "gennaio";
-App::$strings["February"] = "febbraio";
-App::$strings["March"] = "marzo";
-App::$strings["April"] = "aprile";
-App::$strings["May"] = "maggio";
-App::$strings["June"] = "giugno";
-App::$strings["July"] = "luglio";
-App::$strings["August"] = "agosto";
-App::$strings["September"] = "settembre";
-App::$strings["October"] = "ottobre";
-App::$strings["November"] = "novembre";
-App::$strings["December"] = "dicembre";
-App::$strings["unknown.???"] = "sconosciuto???";
-App::$strings["bytes"] = "byte";
-App::$strings["remove category"] = "rimuovi la categoria";
-App::$strings["remove from file"] = "rimuovi dal file";
-App::$strings["Click to open/close"] = "Clicca per aprire/chiudere";
-App::$strings["Link to Source"] = "Link al sito d'origine";
-App::$strings["default"] = "predefinito";
-App::$strings["Page layout"] = "Layout della pagina";
-App::$strings["You can create your own with the layouts tool"] = "Con gli strumenti di design puoi creare il tuo";
-App::$strings["Page content type"] = "Tipo di contenuto della pagina";
-App::$strings["Select an alternate language"] = "Seleziona una lingua diversa";
-App::$strings["photo"] = "la foto";
-App::$strings["event"] = "l'evento";
-App::$strings["status"] = "il messaggio di stato";
-App::$strings["comment"] = "il commento";
-App::$strings["activity"] = "l'attività";
-App::$strings["Design Tools"] = "Strumenti di design";
-App::$strings["Blocks"] = "Riquadri";
-App::$strings["Menus"] = "Menù";
-App::$strings["Layouts"] = "Layout";
-App::$strings["Pages"] = "Pagine";
-App::$strings["Logout"] = "Esci";
-App::$strings["End this session"] = "Chiudi questa sessione";
-App::$strings["Home"] = "Bacheca";
-App::$strings["Your posts and conversations"] = "I tuoi articoli e conversazioni";
-App::$strings["View Profile"] = "Profilo";
-App::$strings["Your profile page"] = "Il tuo profilo";
-App::$strings["Edit Profiles"] = "Modifica i profili";
-App::$strings["Manage/Edit profiles"] = "Gestisci/modifica i profili";
-App::$strings["Edit Profile"] = "Modifica il profilo";
-App::$strings["Edit your profile"] = "Modifica il profilo";
-App::$strings["Photos"] = "Foto";
-App::$strings["Your photos"] = "Le tue foto";
-App::$strings["Your files"] = "I tuoi file";
-App::$strings["Chat"] = "Area chat";
-App::$strings["Your chatrooms"] = "Le tue aree chat";
-App::$strings["Bookmarks"] = "Segnalibri";
-App::$strings["Your bookmarks"] = "I tuoi segnalibri";
-App::$strings["Webpages"] = "Pagine web";
-App::$strings["Your webpages"] = "Le tue pagine web";
-App::$strings["Login"] = "Accedi";
-App::$strings["Sign in"] = "Accedi";
-App::$strings["%s - click to logout"] = "%s - clicca per uscire";
-App::$strings["Remote authentication"] = "Autenticazione magica dal tuo server";
-App::$strings["Click to authenticate to your home hub"] = "Clicca per autenticarti sul tuo server principale";
-App::$strings["Home Page"] = "Bacheca";
-App::$strings["Register"] = "Iscriviti";
-App::$strings["Create an account"] = "Crea un account";
-App::$strings["Help"] = "Guida";
-App::$strings["Help and documentation"] = "Guida e documentazione";
-App::$strings["Applications, utilities, links, games"] = "Applicazioni, utilità, link, giochi";
-App::$strings["Search site content"] = "Cerca nel sito";
-App::$strings["Directory"] = "Elenco pubblico";
-App::$strings["Channel Directory"] = "Elenco pubblico canali";
-App::$strings["Matrix"] = "Hubzilla";
-App::$strings["Your matrix"] = "La tua rete";
-App::$strings["Mark all matrix notifications seen"] = "Segna come lette le notifiche della tua rete";
-App::$strings["Channel Home"] = "Bacheca del canale";
-App::$strings["Channel home"] = "Bacheca del canale";
-App::$strings["Mark all channel notifications seen"] = "Segna come lette le notifiche del canale";
-App::$strings["Connections"] = "Contatti";
-App::$strings["Notices"] = "Avvisi";
-App::$strings["Notifications"] = "Notifiche";
-App::$strings["See all notifications"] = "Vedi tutte le notifiche";
-App::$strings["Mark all system notifications seen"] = "Segna come lette le notifiche di sistema";
-App::$strings["Mail"] = "Messaggi";
-App::$strings["Private mail"] = "Messaggi privati";
-App::$strings["See all private messages"] = "Guarda tutti i messaggi privati";
-App::$strings["Mark all private messages seen"] = "Segna come letti tutti i messaggi privati";
-App::$strings["Inbox"] = "In arrivo";
-App::$strings["Outbox"] = "Inviati";
-App::$strings["Events"] = "Eventi";
-App::$strings["Event Calendar"] = "Calendario";
-App::$strings["See all events"] = "Guarda tutti gli eventi";
-App::$strings["Mark all events seen"] = "Marca come letti tutti gli eventi";
-App::$strings["Channel Manager"] = "Gestione canali";
-App::$strings["Manage Your Channels"] = "Gestisci i tuoi canali";
-App::$strings["Account/Channel Settings"] = "Impostazioni dell'account e del canale";
-App::$strings["Admin"] = "Amministrazione";
-App::$strings["Site Setup and Configuration"] = "Installazione e configurazione del sito";
-App::$strings["Loading..."] = "Caricamento in corso...";
-App::$strings["@name, #tag, content"] = "@nome, #tag, testo";
-App::$strings["Please wait..."] = "Attendere...";
-App::$strings["Tags"] = "Tag";
-App::$strings["Keywords"] = "Parole chiave";
-App::$strings["have"] = "ho";
-App::$strings["has"] = "ha";
-App::$strings["want"] = "voglio";
-App::$strings["wants"] = "vuole";
-App::$strings["likes"] = "gli piace";
-App::$strings["dislikes"] = "non gli piace";
+App::$strings["Not a valid email address"] = "Email non valida";
+App::$strings["Your email domain is not among those allowed on this site"] = "Il dominio della tua email attualmente non è permesso su questo sito";
+App::$strings["Your email address is already registered at this site."] = "La tua email è già registrata su questo sito.";
+App::$strings["An invitation is required."] = "È necessario un invito.";
+App::$strings["Invitation could not be verified."] = "L'invito non può essere verificato.";
+App::$strings["Please enter the required information."] = "Inserisci le informazioni richieste.";
+App::$strings["Failed to store account information."] = "Non è stato possibile salvare le informazioni del tuo account.";
+App::$strings["Registration confirmation for %s"] = "Registrazione di %s confermata";
+App::$strings["Registration request at %s"] = "Richiesta di registrazione su %s";
+App::$strings["your registration password"] = "la password di registrazione";
+App::$strings["Registration details for %s"] = "Dettagli della registrazione di %s";
+App::$strings["Account approved."] = "Account approvato.";
+App::$strings["Registration revoked for %s"] = "Registrazione revocata per %s";
+App::$strings["Account verified. Please login."] = "Registrazione verificata. Adesso puoi effettuare login.";
+App::$strings["Click here to upgrade."] = "Clicca qui per aggiornare.";
+App::$strings["This action exceeds the limits set by your subscription plan."] = "Questa operazione supera i limiti del tuo abbonamento.";
+App::$strings["This action is not available under your subscription plan."] = "Questa operazione non è prevista dal tuo abbonamento.";
+App::$strings["Embedded content"] = "Contenuti incorporati";
+App::$strings["Embedding disabled"] = "Disabilita la creazione di contenuti incorporati";
+App::$strings["Visible to your default audience"] = "Visibile secondo le impostazioni predefinite";
+App::$strings["Show"] = "Mostra";
+App::$strings["Don't show"] = "Non mostrare";
+App::$strings["Permissions"] = "Permessi";
App::$strings[" and "] = "e";
App::$strings["public profile"] = "profilo pubblico";
App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s ha cambiato %2\$s in &ldquo;%3\$s&rdquo;";
App::$strings["Visit %1\$s's %2\$s"] = "Guarda %2\$s di %1\$s ";
App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s ha aggiornato %2\$s cambiando %3\$s.";
+App::$strings["Public Timeline"] = "Diario pubblico";
+App::$strings["Site Admin"] = "Amministrazione sito";
+App::$strings["Address Book"] = "Rubrica";
+App::$strings["Profile"] = "Profilo";
+App::$strings["Mood"] = "Umore";
+App::$strings["Poke"] = "Poke";
+App::$strings["Probe"] = "Diagnostica";
+App::$strings["Suggest"] = "Suggerisci";
+App::$strings["Random Channel"] = "Canale casuale";
+App::$strings["Invite"] = "Invita";
+App::$strings["Features"] = "Funzionalità";
+App::$strings["Language"] = "Lingua";
+App::$strings["Post"] = "Post";
+App::$strings["Profile Photo"] = "Foto del profilo";
+App::$strings["Update"] = "Aggiorna";
+App::$strings["Install"] = "Installa";
+App::$strings["Purchase"] = "Acquista";
+App::$strings["Permission denied."] = "Permesso negato.";
+App::$strings["Item was not found."] = "Elemento non trovato.";
+App::$strings["No source file."] = "Nessun file di origine.";
+App::$strings["Cannot locate file to replace"] = "Il file da sostituire non è stato trovato";
+App::$strings["Cannot locate file to revise/update"] = "Il file da aggiornare non è stato trovato";
+App::$strings["File exceeds size limit of %d"] = "Il file supera la dimensione massima di %d";
+App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Hai raggiunto il limite complessivo di %1$.0f Mbytes per gli allegati.";
+App::$strings["File upload failed. Possible system limit or action terminated."] = "Caricamento file fallito, potrebbe essere stato interrotto o potrebbe aver superato lo spazio assegnato.";
+App::$strings["Stored file could not be verified. Upload failed."] = "Il file non può essere verificato. Caricamento fallito.";
+App::$strings["Path not available."] = "Percorso non disponibile.";
+App::$strings["Empty pathname"] = "Il percorso del file è vuoto";
+App::$strings["duplicate filename or path"] = "il file o il percorso del file è duplicato";
+App::$strings["Path not found."] = "Percorso del file non trovato.";
+App::$strings["mkdir failed."] = "mkdir fallito.";
+App::$strings["database storage failed."] = "scrittura su database fallita.";
+App::$strings["Logged out."] = "Uscita effettuata.";
+App::$strings["Failed authentication"] = "Autenticazione fallita";
+App::$strings["Login failed."] = "Accesso fallito.";
+App::$strings["Attachments:"] = "Allegati:";
+App::$strings["l F d, Y \\@ g:i A"] = "l d F Y \\@ G:i";
+App::$strings["\$Projectname event notification:"] = "Notifica evento \$Projectname:";
+App::$strings["Starts:"] = "Inizio:";
+App::$strings["Finishes:"] = "Fine:";
+App::$strings["Location:"] = "Luogo:";
App::$strings["Image/photo"] = "Immagine";
App::$strings["Encrypted content"] = "Contenuto crittografato";
-App::$strings["Install design element: "] = "Installa il componente di design:";
+App::$strings["Install %s element: "] = "Installa l'elemento %s:";
+App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Questo post contiene un elemento %s installabile, tuttavia non hai i permessi necessari per l'installazione.";
+App::$strings["webpage"] = "pagina web";
+App::$strings["layout"] = "layout";
+App::$strings["block"] = "riquadro";
+App::$strings["menu"] = "menu";
App::$strings["QR code"] = "QR code";
App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s ha scritto %2\$s %3\$s";
-App::$strings["post"] = "l'articolo";
+App::$strings["post"] = "il post";
App::$strings["Different viewers will see this text differently"] = "Ad altri questo testo potrebbe apparire in modo differente";
App::$strings["$1 spoiler"] = "$1 spoiler";
App::$strings["$1 wrote:"] = "$1 ha scritto:";
-App::$strings["Permission denied"] = "Permesso negato";
-App::$strings["(Unknown)"] = "(Sconosciuto)";
-App::$strings["Visible to anybody on the internet."] = "Visibile a chiunque su internet.";
-App::$strings["Visible to you only."] = "Visibile solo a te.";
-App::$strings["Visible to anybody in this network."] = "Visibile a tutti su questa rete.";
-App::$strings["Visible to anybody authenticated."] = "Visibile a chiunque sia autenticato.";
-App::$strings["Visible to anybody on %s."] = "Visibile a tutti in %s.";
-App::$strings["Visible to all connections."] = "Visibile a tutti coloro che ti seguono.";
-App::$strings["Visible to approved connections."] = "Visibile ai contatti approvati.";
-App::$strings["Visible to specific connections."] = "Visibile ad alcuni contatti scelti.";
-App::$strings["Item not found."] = "Elemento non trovato.";
-App::$strings["Permission denied."] = "Permesso negato.";
-App::$strings["Collection not found."] = "Insieme di canali non trovato.";
-App::$strings["Collection is empty."] = "L'insieme di canali è vuoto.";
-App::$strings["Collection: %s"] = "Insieme: %s";
-App::$strings["Connection: %s"] = "Contatto: %s";
-App::$strings["Connection not found."] = "Contatto non trovato.";
-App::$strings["Can view my normal stream and posts"] = "Può vedere i miei contenuti e articoli normali";
-App::$strings["Can view my default channel profile"] = "Può vedere il profilo predefinito del canale";
-App::$strings["Can view my photo albums"] = "Può vedere i miei album fotografici";
-App::$strings["Can view my connections"] = "Può vedere i miei contatti";
-App::$strings["Can view my file storage"] = "Può vedere i miei file condivisi";
-App::$strings["Can view my webpages"] = "Può vedere le mie pagine web";
-App::$strings["Can send me their channel stream and posts"] = "È tra i canali che seguo";
-App::$strings["Can post on my channel page (\"wall\")"] = "Può scrivere sulla bacheca del mio canale";
-App::$strings["Can comment on or like my posts"] = "Può commentare o aggiungere \"mi piace\" ai miei articoli";
-App::$strings["Can send me private mail messages"] = "Può inviarmi messaggi privati";
-App::$strings["Can post photos to my photo albums"] = "Può aggiungere foto ai miei album";
-App::$strings["Can like/dislike stuff"] = "Può aggiungere \"mi piace\"";
-App::$strings["Profiles and things other than posts/comments"] = "Profili e tutto ciò che non è articoli e commenti";
-App::$strings["Can forward to all my channel contacts via post @mentions"] = "Può inoltrare articoli a tutti i contatti del canale tramite una @menzione";
-App::$strings["Advanced - useful for creating group forum channels"] = "Impostazione avanzata - utile per creare un canale-forum di discussione";
-App::$strings["Can chat with me (when available)"] = "Può aprire una chat con me (se disponibile)";
-App::$strings["Can write to my file storage"] = "Può scrivere sul mio archivio file";
-App::$strings["Can edit my webpages"] = "Può modificare le mie pagine web";
-App::$strings["Can source my public posts in derived channels"] = "Può usare i miei articoli pubblici per creare canali derivati";
-App::$strings["Somewhat advanced - very useful in open communities"] = "Piuttosto avanzato - molto utile nelle comunità aperte";
-App::$strings["Can administer my channel resources"] = "Può amministrare i contenuti del mio canale";
-App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Impostazione pericolosa - lasciare il valore predefinito se non si è assolutamente sicuri";
-App::$strings["Social Networking"] = "Social network";
-App::$strings["Mostly Public"] = "Prevalentemente pubblico";
-App::$strings["Restricted"] = "Con restrizioni";
-App::$strings["Private"] = "Privato";
-App::$strings["Community Forum"] = "Forum di discussione";
-App::$strings["Feed Republish"] = "Aggregatore di feed esterni";
-App::$strings["Special Purpose"] = "Per finalità speciali";
-App::$strings["Celebrity/Soapbox"] = "Pagina per fan";
-App::$strings["Group Repository"] = "Repository di gruppo";
-App::$strings["Other"] = "Altro";
-App::$strings["Custom/Expert Mode"] = "Personalizzazione per esperti";
+App::$strings["%1\$s's bookmarks"] = "I segnalibri di %1\$s";
+App::$strings["Missing room name"] = "Area chat senza nome";
+App::$strings["Duplicate room name"] = "Il nome dell'area chat è duplicato";
+App::$strings["Invalid room specifier."] = "Il nome dell'area chat non è valido.";
+App::$strings["Room not found."] = "Area chat non trovata.";
+App::$strings["Room is full"] = "L'area chat è al completo";
+App::$strings["Default"] = "Predefinito";
+App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "I controlli di sicurezza sono falliti. Probabilmente è accaduto perché la pagina è stata tenuta aperta troppo a lungo (ore?) prima di inviare il contenuto.";
+App::$strings["Frequently"] = "Frequentemente";
+App::$strings["Hourly"] = "Ogni ora";
+App::$strings["Twice daily"] = "Due volte al giorno";
+App::$strings["Daily"] = "Ogni giorno";
+App::$strings["Weekly"] = "Ogni settimana";
+App::$strings["Monthly"] = "Ogni mese";
+App::$strings["Friendica"] = "Friendica";
+App::$strings["OStatus"] = "OStatus";
+App::$strings["RSS/Atom"] = "RSS/Atom";
+App::$strings["Email"] = "Email";
+App::$strings["Diaspora"] = "Diaspora";
+App::$strings["Facebook"] = "Facebook";
+App::$strings["Zot!"] = "Zot!";
+App::$strings["LinkedIn"] = "LinkedIn";
+App::$strings["XMPP/IM"] = "XMPP/IM";
+App::$strings["MySpace"] = "MySpace";
+App::$strings["%d invitation available"] = array(
+ 0 => "%d invito disponibile",
+ 1 => "%d inviti disponibili",
+);
+App::$strings["Advanced"] = "Avanzate";
+App::$strings["Find Channels"] = "Ricerca canali";
+App::$strings["Enter name or interest"] = "Scrivi un nome o un interesse";
+App::$strings["Connect/Follow"] = "Aggiungi";
+App::$strings["Examples: Robert Morgenstein, Fishing"] = "Per esempio: Mario Rossi, Pesca";
+App::$strings["Find"] = "Cerca";
+App::$strings["Channel Suggestions"] = "Canali suggeriti";
+App::$strings["Random Profile"] = "Profilo casuale";
+App::$strings["Invite Friends"] = "Invita amici";
+App::$strings["Advanced example: name=fred and country=iceland"] = "Per esempio: name=mario e country=italy";
+App::$strings["%d connection in common"] = array(
+ 0 => "%d contatto in comune",
+ 1 => "%d contatti in comune",
+);
+App::$strings["show more"] = "mostra tutto";
App::$strings["channel"] = "canale";
App::$strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s piace %3\$s di %2\$s";
App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s non piace %3\$s di %2\$s";
@@ -630,7 +466,6 @@ App::$strings["View Photos"] = "Guarda le foto";
App::$strings["Matrix Activity"] = "Attività nella tua rete";
App::$strings["Edit Contact"] = "Modifica il contatto";
App::$strings["Send PM"] = "Invia messaggio privato";
-App::$strings["Poke"] = "Poke";
App::$strings["%s likes this."] = "Piace a %s.";
App::$strings["%s doesn't like this."] = "Non piace a %s.";
App::$strings["<span %1\$s>%2\$d people</span> like this."] = array(
@@ -678,7 +513,7 @@ App::$strings["Title (optional)"] = "Titolo (opzionale)";
App::$strings["Categories (optional, comma-separated list)"] = "Categorie (lista separata da virgole)";
App::$strings["Permission settings"] = "Impostazioni permessi";
App::$strings["permissions"] = "permessi";
-App::$strings["Public post"] = "Articolo pubblico";
+App::$strings["Public post"] = "Post pubblico";
App::$strings["Example: bob@example.com, mary@example.com"] = "Per esempio: mario@esempio.com, simona@esempio.com";
App::$strings["Set expiration date"] = "Data di scadenza";
App::$strings["OK"] = "OK";
@@ -687,17 +522,17 @@ App::$strings["Discover"] = "Scopri";
App::$strings["Imported public streams"] = "Contenuti pubblici importati";
App::$strings["Commented Order"] = "Ultimi commenti";
App::$strings["Sort by Comment Date"] = "Per data del commento";
-App::$strings["Posted Order"] = "Ultimi articoli";
+App::$strings["Posted Order"] = "Ultimi post";
App::$strings["Sort by Post Date"] = "Per data di creazione";
-App::$strings["Posts that mention or involve you"] = "Articoli che ti riguardano o ti menzionano";
+App::$strings["Posts that mention or involve you"] = "Post che ti riguardano o ti menzionano";
App::$strings["New"] = "Novità";
App::$strings["Activity Stream - by date"] = "Elenco attività - per data";
App::$strings["Starred"] = "Preferiti";
-App::$strings["Favourite Posts"] = "Articoli preferiti";
+App::$strings["Favourite Posts"] = "Post preferiti";
App::$strings["Spam"] = "Spam";
-App::$strings["Posts flagged as SPAM"] = "Articoli marcati come spam";
+App::$strings["Posts flagged as SPAM"] = "Post marcati come spam";
App::$strings["Channel"] = "Canale";
-App::$strings["Status Messages and Posts"] = "Articoli e messaggi di stato";
+App::$strings["Status Messages and Posts"] = "Post e messaggi di stato";
App::$strings["About"] = "Informazioni";
App::$strings["Profile Details"] = "Dettagli del profilo";
App::$strings["Photo Albums"] = "Album foto";
@@ -729,63 +564,158 @@ App::$strings["__ctx:noun__ Abstain"] = array(
0 => "Astenuto",
1 => "Astenuti",
);
-App::$strings["Image exceeds website size limit of %lu bytes"] = "L'immagine supera il limite massimo di %lu bytes";
-App::$strings["Image file is empty."] = "Il file dell'immagine è vuoto.";
-App::$strings["Unable to process image"] = "Impossibile elaborare l'immagine";
-App::$strings["Photo storage failed."] = "Impossibile caricare la foto.";
-App::$strings["Upload New Photos"] = "Carica nuove foto";
-App::$strings["Invalid data packet"] = "Dati non validi";
-App::$strings["Unable to verify channel signature"] = "Impossibile verificare la firma elettronica del canale";
-App::$strings["Unable to verify site signature for %s"] = "Impossibile verificare la firma elettronica del sito %s";
-App::$strings["Embedded content"] = "Contenuti incorporati";
-App::$strings["Embedding disabled"] = "Disabilita la creazione di contenuti incorporati";
-App::$strings["Logged out."] = "Uscita effettuata.";
-App::$strings["Failed authentication"] = "Autenticazione fallita";
-App::$strings["Login failed."] = "Accesso fallito.";
-App::$strings["%d invitation available"] = array(
- 0 => "%d invito disponibile",
- 1 => "%d inviti disponibili",
-);
-App::$strings["Advanced"] = "Avanzate";
-App::$strings["Find Channels"] = "Ricerca canali";
-App::$strings["Enter name or interest"] = "Scrivi un nome o un interesse";
-App::$strings["Connect/Follow"] = "Aggiungi";
-App::$strings["Examples: Robert Morgenstein, Fishing"] = "Per esempio: Mario Rossi, Pesca";
-App::$strings["Find"] = "Cerca";
-App::$strings["Channel Suggestions"] = "Canali suggeriti";
-App::$strings["Random Profile"] = "Profilo casuale";
-App::$strings["Invite Friends"] = "Invita amici";
-App::$strings["Advanced example: name=fred and country=iceland"] = "Per esempio: name=mario e country=italy";
-App::$strings["%d connection in common"] = array(
- 0 => "%d contatto in comune",
- 1 => "%d contatti in comune",
-);
-App::$strings["show more"] = "mostra tutto";
-App::$strings["Visible to your default audience"] = "Visibile secondo le impostazioni predefinite";
-App::$strings["Show"] = "Mostra";
-App::$strings["Don't show"] = "Non mostrare";
-App::$strings["Permissions"] = "Permessi";
-App::$strings["Item was not found."] = "Elemento non trovato.";
-App::$strings["No source file."] = "Nessun file di origine.";
-App::$strings["Cannot locate file to replace"] = "Il file da sostituire non è stato trovato";
-App::$strings["Cannot locate file to revise/update"] = "Il file da aggiornare non è stato trovato";
-App::$strings["File exceeds size limit of %d"] = "Il file supera la dimensione massima di %d";
-App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Hai raggiunto il limite complessivo di %1$.0f Mbytes per gli allegati.";
-App::$strings["File upload failed. Possible system limit or action terminated."] = "Caricamento file fallito, potrebbe essere stato interrotto o potrebbe aver superato lo spazio assegnato.";
-App::$strings["Stored file could not be verified. Upload failed."] = "Il file non può essere verificato. Caricamento fallito.";
-App::$strings["Path not available."] = "Percorso non disponibile.";
-App::$strings["Empty pathname"] = "Il percorso del file è vuoto";
-App::$strings["duplicate filename or path"] = "il file o il percorso del file è duplicato";
-App::$strings["Path not found."] = "Percorso del file non trovato.";
-App::$strings["mkdir failed."] = "mkdir fallito.";
-App::$strings["database storage failed."] = "scrittura su database fallita.";
+App::$strings["Miscellaneous"] = "Altro";
+App::$strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-GG oppure MM-GG";
+App::$strings["Required"] = "Obbligatorio";
+App::$strings["never"] = "mai";
+App::$strings["less than a second ago"] = "meno di un secondo fa";
+App::$strings["year"] = "anno";
+App::$strings["years"] = "anni";
+App::$strings["month"] = "mese";
+App::$strings["months"] = "mesi";
+App::$strings["week"] = "settimana";
+App::$strings["weeks"] = "settimane";
+App::$strings["day"] = "giorno";
+App::$strings["days"] = "giorni";
+App::$strings["hour"] = "ora";
+App::$strings["hours"] = "ore";
+App::$strings["minute"] = "minuto";
+App::$strings["minutes"] = "minuti";
+App::$strings["second"] = "secondo";
+App::$strings["seconds"] = "secondi";
+App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "%1\$d %2\$s fa";
+App::$strings["%1\$s's birthday"] = "Compleanno di %1\$s";
+App::$strings["Happy Birthday %1\$s"] = "Buon compleanno %1\$s";
+App::$strings["Please choose"] = "La tua scelta";
+App::$strings["Agree"] = "Sono d'accordo";
+App::$strings["Disagree"] = "Non sono d'accordo";
+App::$strings["Abstain"] = "Mi astengo";
+App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Il nome dell'account è già in uso oppure ha dei caratteri non supportati.";
+App::$strings["Directory Options"] = "Opzioni elenco pubblico";
+App::$strings["Safe Mode"] = "Modalità SafeSearch";
+App::$strings["No"] = "No";
+App::$strings["Yes"] = "Si";
+App::$strings["Public Forums Only"] = "Solo forum pubblici";
+App::$strings["This Website Only"] = "Solo in questo sito";
+App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
+App::$strings["[Red:Notify] New mail received at %s"] = "[RedMatrix] Nuovo messaggio su %s";
+App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s ti ha mandato un messaggio privato su %3\$s.";
+App::$strings["%1\$s sent you %2\$s."] = "%1\$s ti ha mandato %2\$s.";
+App::$strings["a private message"] = "un messaggio privato";
+App::$strings["Please visit %s to view and/or reply to your private messages."] = "Visita %s per leggere i tuoi messaggi privati e rispondere.";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s ha commentato [zrl=%3\$s]%4\$s[/zrl]";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s ha commentato [zrl=%3\$s]%5\$s di %4\$s[/zrl]";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s ha commentato [zrl=%3\$s]%4\$s che hai creato[/zrl]";
+App::$strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[RedMatrix] Nuovo commento di %2\$s alla conversazione #%1\$d";
+App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s ha commentato un elemento che stavi seguendo.";
+App::$strings["Please visit %s to view and/or reply to the conversation."] = "Visita %s per leggere o commentare la conversazione.";
+App::$strings["[Red:Notify] %s posted to your profile wall"] = "[RedMatrix] %s ha scritto sulla tua bacheca";
+App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s ha scritto sulla bacheca del tuo profilo su %3\$s";
+App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s ha scritto sulla [zrl=%3\$s]tua bacheca[/zrl]";
+App::$strings["[Red:Notify] %s tagged you"] = "[RedMatrix] %s ti ha taggato";
+App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s ti ha taggato su %3\$s";
+App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]ti ha taggato[/zrl].";
+App::$strings["[Red:Notify] %1\$s poked you"] = "[RedMatrix] %1\$s ti ha mandato un poke";
+App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s ti ha mandato un poke su %3\$s";
+App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]ti ha mandato un poke[/zrl].";
+App::$strings["[Red:Notify] %s tagged your post"] = "[RedMatrix] %s ha taggato il tuo post";
+App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s ha taggato il tuo post su %3\$s";
+App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s ha taggato [zrl=%3\$s]il tuo post[/zrl]";
+App::$strings["[Red:Notify] Introduction received"] = "[RedMatrix] Hai una richiesta di amicizia";
+App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, hai ricevuto una richiesta di entrare in contatto da '%2\$s' su %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, hai ricevuto una [zrl=%2\$s]richiesta di entrare in contatto[/zrl] da %3\$s.";
+App::$strings["You may visit their profile at %s"] = "Puoi visitare il suo profilo su %s";
+App::$strings["Please visit %s to approve or reject the connection request."] = "Visita %s per approvare o rifiutare la richiesta di entrare in contatto.";
+App::$strings["[Red:Notify] Friend suggestion received"] = "[RedMatrix] Ti è stato suggerito un amico";
+App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, ti è stato suggerito un amico da '%2\$s' su %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, %4\$s ti [zrl=%2\$s]ha suggerito %3\$s[/zrl] come amico.";
+App::$strings["Name:"] = "Nome:";
+App::$strings["Photo:"] = "Foto:";
+App::$strings["Please visit %s to approve or reject the suggestion."] = "Visita %s per approvare o rifiutare il suggerimento.";
+App::$strings["[Red:Notify]"] = "[RedMatrix]";
+App::$strings["This event has been added to your calendar."] = "Questo evento è stato aggiunto al tuo calendario";
+App::$strings["General Features"] = "Funzionalità di base";
+App::$strings["Content Expiration"] = "Scadenza";
+App::$strings["Remove posts/comments and/or private messages at a future time"] = "Elimina i post, i commenti o i messaggi privati dopo un lasso di tempo";
+App::$strings["Multiple Profiles"] = "Profili multipli";
+App::$strings["Ability to create multiple profiles"] = "Abilitazione a creare profili multipli";
+App::$strings["Advanced Profiles"] = "Profili avanzati";
+App::$strings["Additional profile sections and selections"] = "Informazioni aggiuntive del profilo";
+App::$strings["Profile Import/Export"] = "Importa/esporta il profilo";
+App::$strings["Save and load profile details across sites/channels"] = "Salva o ripristina le informazioni del profilo su canali o siti diversi";
+App::$strings["Web Pages"] = "Pagine web";
+App::$strings["Provide managed web pages on your channel"] = "Attiva la creazione di pagine web sul tuo canale";
+App::$strings["Private Notes"] = "Note private";
+App::$strings["Enables a tool to store notes and reminders"] = "Abilita il riquadro per scrivere annotazioni";
+App::$strings["Navigation Channel Select"] = "Scegli il canale attivo dal menu";
+App::$strings["Change channels directly from within the navigation dropdown menu"] = "Scegli il canale attivo direttamente dal menu di navigazione";
+App::$strings["Photo Location"] = "Posizione geografica";
+App::$strings["If location data is available on uploaded photos, link this to a map."] = "Collega la foto a una mappa quando contiene indicazioni geografiche.";
+App::$strings["Expert Mode"] = "Modalità esperto";
+App::$strings["Enable Expert Mode to provide advanced configuration options"] = "Abilita la modalità esperto per vedere le opzioni di configurazione avanzate";
+App::$strings["Premium Channel"] = "Canale premium";
+App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Ti permette di impostare delle restrizioni e dei termini d'uso a chi segue il canale";
+App::$strings["Post Composition Features"] = "Modalità di scrittura post";
+App::$strings["Use Markdown"] = "Usa il markdown";
+App::$strings["Allow use of \"Markdown\" to format posts"] = "Consenti l'uso del markdown per formattare i post";
+App::$strings["Large Photos"] = "Foto grandi";
+App::$strings["Include large (640px) photo thumbnails in posts. If not enabled, use small (320px) photo thumbnails"] = "Includi anteprime grandi delle foto nei post (640px). Se disabilitato le anteprime saranno piccole (320px)";
+App::$strings["Automatically import channel content from other channels or feeds"] = "Importa automaticamente il contenuto del canale da altri canali o feed";
+App::$strings["Even More Encryption"] = "Crittografia addizionale";
+App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Rendi possibile la crittografia tra mittente e destinatario che condividono una chiave segreta";
+App::$strings["Enable voting tools"] = "Permetti i post con votazione";
+App::$strings["Provide a class of post which others can vote on"] = "Rende possibile la creazione di post in cui sarà possibile votare";
+App::$strings["Network and Stream Filtering"] = "Filtraggio dei contenuti";
+App::$strings["Search by Date"] = "Ricerca per data";
+App::$strings["Ability to select posts by date ranges"] = "Per selezionare i post in un intervallo tra date";
+App::$strings["Collections Filter"] = "Filtra per insiemi di canali";
+App::$strings["Enable widget to display Network posts only from selected collections"] = "Mostra il riquadro per filtrare i post di certi insiemi di canali";
+App::$strings["Save search terms for re-use"] = "Salva i termini delle ricerche per poterle ripetere";
+App::$strings["Network Personal Tab"] = "Attività personale";
+App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Abilita il link per mostrare solamente i contenuti con cui hai interagito";
+App::$strings["Network New Tab"] = "Contenuti nuovi";
+App::$strings["Enable tab to display all new Network activity"] = "Abilita il link per visualizzare solo i nuovi contenuti";
+App::$strings["Affinity Tool"] = "Filtro per affinità";
+App::$strings["Filter stream activity by depth of relationships"] = "Permette di selezionare i contenuti in base al livello di amicizia";
+App::$strings["Connection Filtering"] = "Filtro sui contatti";
+App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filtra con delle parole chiave i post che ricevi";
+App::$strings["Suggest Channels"] = "Suggerisci canali";
+App::$strings["Show channel suggestions"] = "Mostra alcuni canali che potrebbero interessarti";
+App::$strings["Post/Comment Tools"] = "Gestione post e commenti";
+App::$strings["Tagging"] = "Tag";
+App::$strings["Ability to tag existing posts"] = "Permetti l'aggiunta di tag su post già esistenti";
+App::$strings["Post Categories"] = "Categorie dei post";
+App::$strings["Add categories to your posts"] = "Abilita le categorie per i tuoi post";
+App::$strings["Ability to file posts under folders"] = "Abilita la raccolta dei tuoi articoli in post";
+App::$strings["Dislike Posts"] = "Non mi piace";
+App::$strings["Ability to dislike posts/comments"] = "Abilità la funzionalità \"non mi piace\" per i tuoi post";
+App::$strings["Star Posts"] = "Post con stella";
+App::$strings["Ability to mark special posts with a star indicator"] = "Mostra la stella per segnare i post preferiti";
+App::$strings["Tag Cloud"] = "Nuvola di tag";
+App::$strings["Provide a personal tag cloud on your channel page"] = "Mostra la nuvola dei tag che usi di più sulla pagina del tuo canale";
+App::$strings["Channel is blocked on this site."] = "Il canale è bloccato per questo sito.";
+App::$strings["Channel location missing."] = "Manca l'indirizzo del canale.";
+App::$strings["Response from remote channel was incomplete."] = "La risposta dal canale non è completa.";
+App::$strings["Channel was deleted and no longer exists."] = "Il canale è stato rimosso e non esiste più.";
+App::$strings["Protocol disabled."] = "Protocollo disabilitato.";
+App::$strings["Protocol blocked for this channel."] = "Protocollo bloccato per questo canale.";
+App::$strings["Channel discovery failed."] = "La ricerca del canale non ha avuto successo.";
+App::$strings["local account not found."] = "l'account locale non è stato trovato.";
+App::$strings["Cannot connect to yourself."] = "Non puoi connetterti a te stesso.";
+App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "È stato ripristinato un insieme con lo stesso nome che era stato eliminato in precedenza. I permessi già presenti <strong>potrebbero</strong> rimanere validi per i nuovi canali. Se non vuoi che ciò accada, devi creare un altro insieme con un nome diverso.";
+App::$strings["Default privacy group for new contacts"] = "Insieme predefinito per i canali che inizi a seguire";
+App::$strings["All Channels"] = "Tutti i canali";
+App::$strings["edit"] = "modifica";
+App::$strings["Collections"] = "Insiemi di canali";
+App::$strings["Edit collection"] = "Modifica l'insieme di canali";
+App::$strings["Add new collection"] = "Nuovo insieme";
+App::$strings["Channels not in any collection"] = "Canali che non sono in un insieme";
App::$strings["Unable to obtain identity information from database"] = "Impossibile ottenere le informazioni di identificazione dal database";
App::$strings["Empty name"] = "Nome vuoto";
App::$strings["Name too long"] = "Nome troppo lungo";
App::$strings["No account identifier"] = "Account senza identificativo";
App::$strings["Nickname is required."] = "Il nome dell'account è obbligatorio.";
App::$strings["Reserved nickname. Please choose another."] = "Nome utente riservato. Per favore scegline un altro.";
-App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Il nome dell'account è già in uso oppure ha dei caratteri non supportati.";
App::$strings["Unable to retrieve created identity"] = "Impossibile caricare l'identità creata";
App::$strings["Default Profile"] = "Profilo predefinito";
App::$strings["Requested channel is not available."] = "Il canale che cerchi non è disponibile.";
@@ -809,7 +739,6 @@ App::$strings["Birthdays this week:"] = "Compleanni questa settimana:";
App::$strings["[No description]"] = "[Nessuna descrizione]";
App::$strings["Event Reminders"] = "Promemoria";
App::$strings["Events this week:"] = "Eventi di questa settimana:";
-App::$strings["Profile"] = "Profilo";
App::$strings["Full Name:"] = "Nome completo:";
App::$strings["Like this channel"] = "Mi piace questo canale";
App::$strings["j F, Y"] = "j F Y";
@@ -836,6 +765,109 @@ App::$strings["Love/Romance:"] = "Amore:";
App::$strings["Work/employment:"] = "Lavoro:";
App::$strings["School/education:"] = "Scuola:";
App::$strings["Like this thing"] = "Mi piace questo Oggetto";
+App::$strings["Permission denied"] = "Permesso negato";
+App::$strings["(Unknown)"] = "(Sconosciuto)";
+App::$strings["Visible to anybody on the internet."] = "Visibile a chiunque su internet.";
+App::$strings["Visible to you only."] = "Visibile solo a te.";
+App::$strings["Visible to anybody in this network."] = "Visibile a tutti su questa rete.";
+App::$strings["Visible to anybody authenticated."] = "Visibile a chiunque sia autenticato.";
+App::$strings["Visible to anybody on %s."] = "Visibile a tutti in %s.";
+App::$strings["Visible to all connections."] = "Visibile a tutti coloro che ti seguono.";
+App::$strings["Visible to approved connections."] = "Visibile ai contatti approvati.";
+App::$strings["Visible to specific connections."] = "Visibile ad alcuni contatti scelti.";
+App::$strings["Item not found."] = "Elemento non trovato.";
+App::$strings["Collection not found."] = "Insieme di canali non trovato.";
+App::$strings["Collection is empty."] = "L'insieme di canali è vuoto.";
+App::$strings["Collection: %s"] = "Insieme: %s";
+App::$strings["Connection: %s"] = "Contatto: %s";
+App::$strings["Connection not found."] = "Contatto non trovato.";
+App::$strings["Delete this item?"] = "Eliminare questo elemento?";
+App::$strings["[-] show less"] = "[-] riduci";
+App::$strings["[+] expand"] = "[+] mostra tutto";
+App::$strings["[-] collapse"] = "[-] riduci";
+App::$strings["Password too short"] = "Password troppo corta";
+App::$strings["Passwords do not match"] = "Le password non corrispondono";
+App::$strings["everybody"] = "tutti";
+App::$strings["Secret Passphrase"] = "Chiave segreta";
+App::$strings["Passphrase hint"] = "Suggerimento per la chiave segreta";
+App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Nota: i permessi sono stati modificati ma non ancora salvati.";
+App::$strings["close all"] = "chiudi tutto";
+App::$strings["Nothing new here"] = "Niente di nuovo qui";
+App::$strings["Rate This Channel (this is public)"] = "Valuta questo canale (visibile a tutti)";
+App::$strings["Rating"] = "Valutazioni";
+App::$strings["Describe (optional)"] = "Descrizione (facoltativa)";
+App::$strings["Please enter a link URL"] = "Inserisci l'URL di un link";
+App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Non hai salvato i cambiamenti. Vuoi davvero lasciare questa pagina?";
+App::$strings["timeago.prefixAgo"] = "timeago.prefixAgo";
+App::$strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
+App::$strings["ago"] = "fa";
+App::$strings["from now"] = "da adesso";
+App::$strings["less than a minute"] = "meno di un minuto";
+App::$strings["about a minute"] = "circa un minuto";
+App::$strings["%d minutes"] = "%d minuti";
+App::$strings["about an hour"] = "circa un’ora";
+App::$strings["about %d hours"] = "circa %d ore";
+App::$strings["a day"] = "un giorno";
+App::$strings["%d days"] = "%d giorni";
+App::$strings["about a month"] = "circa un mese";
+App::$strings["%d months"] = "%d mesi";
+App::$strings["about a year"] = "circa un anno";
+App::$strings["%d years"] = "%d anni";
+App::$strings[" "] = " ";
+App::$strings["timeago.numbers"] = "timeago.numbers";
+App::$strings["New Page"] = "Nuova pagina web";
+App::$strings["View"] = "Guarda";
+App::$strings["Actions"] = "Azioni";
+App::$strings["Page Link"] = "Link alla pagina";
+App::$strings["Title"] = "Titolo";
+App::$strings["Created"] = "Creato";
+App::$strings["Edited"] = "Modificato";
+App::$strings["Can view my normal stream and posts"] = "Può vedere i miei contenuti e i post normali";
+App::$strings["Can view my default channel profile"] = "Può vedere il profilo predefinito del canale";
+App::$strings["Can view my photo albums"] = "Può vedere i miei album fotografici";
+App::$strings["Can view my connections"] = "Può vedere i miei contatti";
+App::$strings["Can view my file storage"] = "Può vedere i miei file condivisi";
+App::$strings["Can view my webpages"] = "Può vedere le mie pagine web";
+App::$strings["Can send me their channel stream and posts"] = "È tra i canali che seguo";
+App::$strings["Can post on my channel page (\"wall\")"] = "Può scrivere sulla bacheca del mio canale";
+App::$strings["Can comment on or like my posts"] = "Può commentare o aggiungere \"mi piace\" ai miei post";
+App::$strings["Can send me private mail messages"] = "Può inviarmi messaggi privati";
+App::$strings["Can post photos to my photo albums"] = "Può aggiungere foto ai miei album";
+App::$strings["Can like/dislike stuff"] = "Può aggiungere \"mi piace\"";
+App::$strings["Profiles and things other than posts/comments"] = "Profili e tutto ciò che non è post o commenti";
+App::$strings["Can forward to all my channel contacts via post @mentions"] = "Può inoltrare post a tutti i contatti del canale tramite una @menzione";
+App::$strings["Advanced - useful for creating group forum channels"] = "Impostazione avanzata - utile per creare un canale-forum di discussione";
+App::$strings["Can chat with me (when available)"] = "Può aprire una chat con me (se disponibile)";
+App::$strings["Can write to my file storage"] = "Può scrivere sul mio archivio file";
+App::$strings["Can edit my webpages"] = "Può modificare le mie pagine web";
+App::$strings["Can source my public posts in derived channels"] = "Può usare i miei post pubblici per creare canali derivati";
+App::$strings["Somewhat advanced - very useful in open communities"] = "Piuttosto avanzato - molto utile nelle comunità aperte";
+App::$strings["Can administer my channel resources"] = "Può amministrare i contenuti del mio canale";
+App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Impostazione pericolosa - lasciare il valore predefinito se non si è assolutamente sicuri";
+App::$strings["Social Networking"] = "Social network";
+App::$strings["Mostly Public"] = "Prevalentemente pubblico";
+App::$strings["Restricted"] = "Con restrizioni";
+App::$strings["Private"] = "Privato";
+App::$strings["Community Forum"] = "Forum di discussione";
+App::$strings["Feed Republish"] = "Aggregatore di feed esterni";
+App::$strings["Special Purpose"] = "Per finalità speciali";
+App::$strings["Celebrity/Soapbox"] = "Pagina per fan";
+App::$strings["Group Repository"] = "Repository di gruppo";
+App::$strings["Other"] = "Altro";
+App::$strings["Custom/Expert Mode"] = "Personalizzazione per esperti";
+App::$strings["Image exceeds website size limit of %lu bytes"] = "L'immagine supera il limite massimo di %lu bytes";
+App::$strings["Image file is empty."] = "Il file dell'immagine è vuoto.";
+App::$strings["Unable to process image"] = "Impossibile elaborare l'immagine";
+App::$strings["Photo storage failed."] = "Impossibile caricare la foto.";
+App::$strings["Upload New Photos"] = "Carica nuove foto";
+App::$strings["Tags"] = "Tag";
+App::$strings["Keywords"] = "Parole chiave";
+App::$strings["have"] = "ho";
+App::$strings["has"] = "ha";
+App::$strings["want"] = "voglio";
+App::$strings["wants"] = "vuole";
+App::$strings["likes"] = "gli piace";
+App::$strings["dislikes"] = "non gli piace";
App::$strings["Male"] = "Maschio";
App::$strings["Female"] = "Femmina";
App::$strings["Currently Male"] = "Al momento maschio";
@@ -892,26 +924,304 @@ App::$strings["Uncertain"] = "Incerto/a";
App::$strings["It's complicated"] = "Relazione complicata";
App::$strings["Don't care"] = "Chi se ne frega";
App::$strings["Ask me"] = "Chiedimelo";
-App::$strings["Site Admin"] = "Amministrazione sito";
-App::$strings["Address Book"] = "Rubrica";
-App::$strings["Mood"] = "Umore";
-App::$strings["Probe"] = "Diagnostica";
-App::$strings["Suggest"] = "Suggerisci";
-App::$strings["Random Channel"] = "Canale casuale";
-App::$strings["Invite"] = "Invita";
-App::$strings["Features"] = "Funzionalità";
-App::$strings["Language"] = "Lingua";
-App::$strings["Post"] = "Articolo";
-App::$strings["Profile Photo"] = "Foto del profilo";
-App::$strings["Update"] = "Aggiorna";
-App::$strings["Install"] = "Installa";
-App::$strings["Purchase"] = "Acquista";
-App::$strings["Missing room name"] = "Area chat senza nome";
-App::$strings["Duplicate room name"] = "Il nome dell'area chat è duplicato";
-App::$strings["Invalid room specifier."] = "Il nome dell'area chat non è valido.";
-App::$strings["Room not found."] = "Area chat non trovata.";
-App::$strings["Room is full"] = "L'area chat è al completo";
+App::$strings["Unable to lookup recipient."] = "Impossibile associare un destinatario.";
+App::$strings["Unable to communicate with requested channel."] = "Impossibile comunicare con il canale richiesto.";
+App::$strings["Cannot verify requested channel."] = "Impossibile verificare il canale richiesto.";
+App::$strings["Selected channel has private message restrictions. Send failed."] = "Il canale ha delle regole restrittive per la ricezione dei messaggi privati. Invio fallito.";
+App::$strings["Message deleted."] = "Messaggio eliminato.";
+App::$strings["Message recalled."] = "Messaggio revocato.";
+App::$strings["Send Private Message"] = "Invia un messaggio privato";
+App::$strings["To:"] = "A:";
+App::$strings["Subject:"] = "Oggetto:";
+App::$strings["Your message:"] = "Il tuo messaggio:";
+App::$strings["Send"] = "Invia";
+App::$strings["Message not found."] = "Messaggio non trovato.";
+App::$strings["Delete message"] = "Elimina il messaggio";
+App::$strings["Recall message"] = "Revoca il messaggio";
+App::$strings["Message has been recalled."] = "Il messaggio è stato revocato.";
+App::$strings["Private Conversation"] = "Conversazione privata";
+App::$strings["Delete conversation"] = "Elimina la conversazione";
+App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Non è disponibile alcuna tecnologia per comunicare in modo sicuro. <strong>Se possibile</strong>, prova a rispondere direttamente dalla pagina del profilo del mittente.";
+App::$strings["Send Reply"] = "Invia la risposta";
+App::$strings["Hub not found."] = "Server non trovato.";
App::$strings["Some blurb about what to do when you're new here"] = "Qualche suggerimento per i nuovi utenti su cosa fare";
+App::$strings["Invalid item."] = "Elemento non valido.";
+App::$strings["Channel not found."] = "Canale non trovato.";
+App::$strings["Page not found."] = "Pagina non trovata.";
+App::$strings["Lorem Ipsum"] = "Lorem Ipsum";
+App::$strings["network"] = "rete";
+App::$strings["RSS"] = "RSS";
+App::$strings["Theme settings updated."] = "Le impostazioni del tema sono state aggiornate.";
+App::$strings["Site"] = "Sito";
+App::$strings["Accounts"] = "Account";
+App::$strings["Channels"] = "Canali";
+App::$strings["Plugins"] = "Plugin";
+App::$strings["Themes"] = "Temi";
+App::$strings["Inspect queue"] = "Coda di attesa";
+App::$strings["Profile Config"] = "Configurazione del profilo";
+App::$strings["DB updates"] = "Aggiornamenti al DB";
+App::$strings["Logs"] = "Log";
+App::$strings["Plugin Features"] = "Plugin";
+App::$strings["User registrations waiting for confirmation"] = "Registrazioni in attesa";
+App::$strings["# Accounts"] = "# account";
+App::$strings["# blocked accounts"] = "# account bloccati";
+App::$strings["# expired accounts"] = "# account scaduti";
+App::$strings["# expiring accounts"] = "# account in scadenza";
+App::$strings["# Channels"] = "# canali";
+App::$strings["# primary"] = "# primari";
+App::$strings["# clones"] = "# cloni";
+App::$strings["Message queues"] = "Coda messaggi in uscita";
+App::$strings["Administration"] = "Amministrazione";
+App::$strings["Summary"] = "Riepilogo";
+App::$strings["Registered accounts"] = "Account creati";
+App::$strings["Pending registrations"] = "Registrazioni da approvare";
+App::$strings["Registered channels"] = "Canali creati";
+App::$strings["Active plugins"] = "Plugin attivi";
+App::$strings["Version"] = "Versione";
+App::$strings["Site settings updated."] = "Impostazioni del sito salvate correttamente.";
+App::$strings["mobile"] = "mobile";
+App::$strings["experimental"] = "sperimentale";
+App::$strings["unsupported"] = "non supportato";
+App::$strings["Yes - with approval"] = "Sì - con approvazione";
+App::$strings["My site is not a public server"] = "Non è un server pubblico";
+App::$strings["My site has paid access only"] = "È un servizio a pagamento";
+App::$strings["My site has free access only"] = "È un servizio gratuito";
+App::$strings["My site offers free accounts with optional paid upgrades"] = "È un servizio gratuito con opzioni aggiuntive a pagamento";
+App::$strings["Registration"] = "Registrazione";
+App::$strings["File upload"] = "Caricamento file";
+App::$strings["Policies"] = "Politiche";
+App::$strings["Site name"] = "Nome del sito";
+App::$strings["Banner/Logo"] = "Banner o logo";
+App::$strings["Administrator Information"] = "Informazioni sull'amministratore";
+App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Informazioni per contattare gli amministratori del sito. Saranno mostrate sulla pagina di informazioni. È consentito il BBcode";
+App::$strings["System language"] = "Lingua di sistema";
+App::$strings["System theme"] = "Tema di sistema";
+App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Il tema di sistema può essere cambiato dai profili dei singoli utenti - <a href='#' id='cnftheme'>Cambia le impostazioni del tema</a>";
+App::$strings["Mobile system theme"] = "Tema di sistema per dispositivi mobili";
+App::$strings["Theme for mobile devices"] = "Tema per i dispositivi mobili";
+App::$strings["Enable Diaspora Protocol"] = "Abilita la comunicazione con Diaspora";
+App::$strings["Communicate with Diaspora and Friendica - experimental"] = "Sperimentale - per comunicare con Diaspora e Friendica";
+App::$strings["Allow Feeds as Connections"] = "Permetti di aggiungere i feed come contatti";
+App::$strings["(Heavy system resource usage)"] = "(Uso intenso delle risorse di sistema!)";
+App::$strings["Maximum image size"] = "Dimensione massima immagini";
+App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Massima dimensione in byte delle immagini caricate. Il default è 0, cioè nessun limite.";
+App::$strings["Does this site allow new member registration?"] = "Questo sito permette a nuovi utenti di registrarsi?";
+App::$strings["Which best describes the types of account offered by this hub?"] = "Come descriveresti il tipo di servizio proposto da questo server?";
+App::$strings["Register text"] = "Testo di registrazione";
+App::$strings["Will be displayed prominently on the registration page."] = "Sarà mostrato ben visibile nella pagina di registrazione.";
+App::$strings["Site homepage to show visitors (default: login box)"] = "Homepage del sito da mostrare ai navigatori (predefinito: modulo di login)";
+App::$strings["example: 'public' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file."] = "esempio: 'public' per mostrare i contenuti pubblici degli utenti, 'page/sys/home' per mostrare la pagina web definita come 'home' oppure 'include:home.html' per mostrare il contenuto di un file.";
+App::$strings["Preserve site homepage URL"] = "Conserva l'URL della homepage";
+App::$strings["Present the site homepage in a frame at the original location instead of redirecting"] = "Presenta la homepage del sito in un frame all'indirizzo attuale invece di un redirect.";
+App::$strings["Accounts abandoned after x days"] = "Account abbandonati dopo X giorni";
+App::$strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Eviterà di sprecare risorse di sistema controllando se i siti esterni hanno account abbandonati. Immettere 0 per non imporre nessun limite di tempo.";
+App::$strings["Allowed friend domains"] = "Domini fidati e consentiti";
+App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Elenco separato da virglola dei domini che possono stabilire amicizie con questo sito. Sono accettati caratteri jolly. Lascia vuoto per accettare connessioni da qualsiasi dominio.";
+App::$strings["Allowed email domains"] = "Domini email consentiti";
+App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Elenco separato da virgola dei domini permessi come indirizzi email in fase di registrazione. Sono accettati caratteri jolly. Lascia vuoto per accettare qualsiasi dominio email";
+App::$strings["Not allowed email domains"] = "Domini email non consentiti";
+App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Elenco separato da virgola dei domini permessi come indirizzi email in fase di registrazione a questo sito. Sono accettati caratteri jolly. Lascalo vuoto per accettare qualsiasi dominio.";
+App::$strings["Block public"] = "Blocca pagine pubbliche";
+App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Seleziona per impedire di vedere le pagine personali di questo sito a chi non ha effettuato l'accesso.";
+App::$strings["Verify Email Addresses"] = "Verifica l'indirizzo email";
+App::$strings["Check to verify email addresses used in account registration (recommended)."] = "Attiva per richiedere la verifica degli indirizzi email dei nuovi utenti (consigliato).";
+App::$strings["Force publish"] = "Forza la publicazione del profilo";
+App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Seleziona per mostrare nell'elenco pubblico <strong>tutti</strong> i profili registrati su questo sito.";
+App::$strings["Disable discovery tab"] = "Disabilita la funzione 'scopri'";
+App::$strings["Remove the tab in the network view with public content pulled from sources chosen for this site."] = "Nell'area della rete personale non comparirà più la scheda con i contenuti acquisiti da altri siti.";
+App::$strings["login on Homepage"] = "Mostra il login sulla homepage";
+App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Presenta il modulo di login ai visitatori sulla homepage in mancanza di altri contenuti.";
+App::$strings["Proxy user"] = "Utente proxy";
+App::$strings["Proxy URL"] = "URL proxy";
+App::$strings["Network timeout"] = "Timeout rete";
+App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valore in secondi. Imposta a 0 per illimitato (sconsigliato).";
+App::$strings["Delivery interval"] = "Recapito ritardato";
+App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Numero di secondi di cui può essere ritardato il recapito, per ridurre il carico di sistema. Consigliati: 4-5 secondi per hosting condiviso, 2-3 per i VPS, 0-1 per grandi server dedicati.";
+App::$strings["Poll interval"] = "Intervallo di polling";
+App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Numero di secondi di cui può essere ritardato il polling in background, per ridurre il carico del sistema. Se 0, verrà usato lo stesso valore del 'Recapito ritardato'.";
+App::$strings["Maximum Load Average"] = "Carico massimo medio";
+App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Carico di sistema massimo perché i processi di recapito e polling siano ritardati - il valore predefinito è 50.";
+App::$strings["Expiration period in days for imported (matrix/network) content"] = "Scadenza dei contenuti importati da altri siti (in giorni)";
+App::$strings["0 for no expiration of imported content"] = "0 per non avere scadenza";
+App::$strings["No server found"] = "Server non trovato";
+App::$strings["ID"] = "ID";
+App::$strings["for channel"] = "per canale";
+App::$strings["on server"] = "sul server";
+App::$strings["Status"] = "Stato";
+App::$strings["Server"] = "Server";
+App::$strings["Update has been marked successful"] = "L'aggiornamento è stato marcato come eseguito.";
+App::$strings["Executing %s failed. Check system logs."] = "Fallita l'esecuzione di %s. Maggiori informazioni sui log di sistema.";
+App::$strings["Update %s was successfully applied."] = "L'aggiornamento %s è terminato correttamente.";
+App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "L'aggiornamento %s non ha dato risposta. Impossibile determinare se è terminato correttamente.";
+App::$strings["Update function %s could not be found."] = "Impossibile trovare la funzione di aggiornamento %s";
+App::$strings["No failed updates."] = "Nessun aggiornamento fallito.";
+App::$strings["Failed Updates"] = "Aggiornamenti falliti.";
+App::$strings["Mark success (if update was manually applied)"] = "Marca come eseguito (se applicato manualmente).";
+App::$strings["Attempt to execute this update step automatically"] = "Tenta di eseguire in automatico questo passaggio dell'aggiornamento.";
+App::$strings["Queue Statistics"] = "Statistiche della coda";
+App::$strings["Total Entries"] = "Totale";
+App::$strings["Priority"] = "Priorità";
+App::$strings["Destination URL"] = "URL di destinazione";
+App::$strings["Mark hub permanently offline"] = "Questo hub è definitivamente offline";
+App::$strings["Empty queue for this hub"] = "Svuota la coda per questo hub";
+App::$strings["Last known contact"] = "Ultimo scambio dati";
+App::$strings["%s account blocked/unblocked"] = array(
+ 0 => "Modificato il blocco su %s account",
+ 1 => "Modificato il blocco verso %s",
+);
+App::$strings["%s account deleted"] = array(
+ 0 => "%s account eliminato",
+ 1 => "%s account eliminati",
+);
+App::$strings["Account not found"] = "Account non trovato";
+App::$strings["Account '%s' deleted"] = "Account '%s' eliminato";
+App::$strings["Account '%s' blocked"] = "Aggiunto un blocco verso '%s'";
+App::$strings["Account '%s' unblocked"] = "Rimosso il blocco verso '%s'";
+App::$strings["Users"] = "Utenti";
+App::$strings["select all"] = "seleziona tutti";
+App::$strings["User registrations waiting for confirm"] = "Richieste di registrazione in attesa di conferma";
+App::$strings["Request date"] = "Data richiesta";
+App::$strings["No registrations."] = "Nessuna registrazione.";
+App::$strings["Approve"] = "Approva";
+App::$strings["Deny"] = "Nega";
+App::$strings["Block"] = "Blocca";
+App::$strings["Unblock"] = "Sblocca";
+App::$strings["Register date"] = "Data registrazione";
+App::$strings["Last login"] = "Ultimo accesso";
+App::$strings["Expires"] = "Con scadenza";
+App::$strings["Service Class"] = "Classe dell'account";
+App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Gli account selezionati saranno eliminati!\\n\\nTutto ciò che hanno caricato o pubblicato su questo sito sarà eliminato definitivamente!\\n\\nVuoi confermare?";
+App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "L'account {0} sarà eliminato!\\n\\nTutto ciò che ha caricato o pubblicato su questo sito sarà eliminato definitivamente!\\n\\nVuoi confermare?";
+App::$strings["%s channel censored/uncensored"] = array(
+ 0 => "Censura modificata per %s canale",
+ 1 => "Censura modificata per %s canali",
+);
+App::$strings["%s channel code allowed/disallowed"] = array(
+ 0 => "%s canale permette/non permette codice nei contenuti",
+ 1 => "%s canali permettono/non permettono codice nei contenuti",
+);
+App::$strings["%s channel deleted"] = array(
+ 0 => "%s canale è stato rimosso",
+ 1 => "%s canali sono stati rimossi",
+);
+App::$strings["Channel not found"] = "Canale non trovato";
+App::$strings["Channel '%s' deleted"] = "Il canale '%s' è stato rimosso";
+App::$strings["Channel '%s' censored"] = "Applicata una censura al canale '%s'";
+App::$strings["Channel '%s' uncensored"] = "Rimossa la censura dal canale '%s'";
+App::$strings["Channel '%s' code allowed"] = "Il canale '%s' permette codice nei contenuti";
+App::$strings["Channel '%s' code disallowed"] = "Il canale '%s' non permette codice nei contenuti";
+App::$strings["Censor"] = "Applica una censura";
+App::$strings["Uncensor"] = "Rimuovi la censura";
+App::$strings["Allow Code"] = "Permetti codice nei contenuti";
+App::$strings["Disallow Code"] = "Non permettere codice nei contenuti";
+App::$strings["UID"] = "UID";
+App::$strings["Address"] = "Indirizzo";
+App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "I canali selezionati saranno rimossi!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questi canali sarà irreversibilmente eliminato!\\n\\nVuoi confermare?";
+App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Il canale {0} sarà rimosso!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questo canale sarà irreversibilmente eliminato!\\n\\nVuoi confermare?";
+App::$strings["Plugin %s disabled."] = "Plugin %s non attivo.";
+App::$strings["Plugin %s enabled."] = "Plugin %s attivo.";
+App::$strings["Disable"] = "Disattiva";
+App::$strings["Enable"] = "Attiva";
+App::$strings["Toggle"] = "Attiva/disattiva";
+App::$strings["Author: "] = "Autore:";
+App::$strings["Maintainer: "] = "Gestore:";
+App::$strings["No themes found."] = "Nessun tema trovato.";
+App::$strings["Screenshot"] = "Istantanea dello schermo";
+App::$strings["[Experimental]"] = "[Sperimentale]";
+App::$strings["[Unsupported]"] = "[Non supportato]";
+App::$strings["Log settings updated."] = "Impostazioni di log aggiornate.";
+App::$strings["Clear"] = "Pulisci";
+App::$strings["Debugging"] = "Debugging";
+App::$strings["Log file"] = "File di log";
+App::$strings["Must be writable by web server. Relative to your Red top-level directory."] = "Deve essere scrivibile dal web server. La posizione è relativa alla cartella dove è installato RedMatrix.";
+App::$strings["Log level"] = "Livello di log";
+App::$strings["New Profile Field"] = "Nuovo campo del profilo";
+App::$strings["Field nickname"] = "Nome breve del campo";
+App::$strings["System name of field"] = "Nome di sistema del campo";
+App::$strings["Input type"] = "Tipo di dati";
+App::$strings["Field Name"] = "Nome del campo";
+App::$strings["Label on profile pages"] = "Etichetta da mostrare sulla pagina del profilo";
+App::$strings["Help text"] = "Testo di aiuto";
+App::$strings["Additional info (optional)"] = "Informazioni aggiuntive (opzionali)";
+App::$strings["Field definition not found"] = "Impossibile trovare la definizione del campo";
+App::$strings["Edit Profile Field"] = "Modifica campo del profilo";
+App::$strings["This setting requires special processing and editing has been blocked."] = "Questa impostazione è bloccata, richiede criteri di modifica speciali";
+App::$strings["Configuration Editor"] = "Editor di configurazione";
+App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Attenzione: alcune delle impostazioni, se cambiate, potrebbero rendere questo canale non funzionante. Lascia questa pagina a meno che tu non sappia con assoluta certezza quali modifiche effettuare.";
+App::$strings["Authorize application connection"] = "Autorizza la app";
+App::$strings["Return to your app and insert this Securty Code:"] = "Torna alla app e inserisci questo codice di sicurezza:";
+App::$strings["Please login to continue."] = "Accedi al sito per continuare.";
+App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Vuoi autorizzare questa app ad accedere ai messaggi e ai contatti o creare nuovi messaggi per te?";
+App::$strings["Layout updated."] = "Layout aggiornato.";
+App::$strings["Edit System Page Description"] = "Modifica i layout di sistema";
+App::$strings["Layout not found."] = "Layout non trovato.";
+App::$strings["Module Name:"] = "Nome del modulo:";
+App::$strings["Layout Help"] = "Guida al layout";
+App::$strings["App installed."] = "App installata";
+App::$strings["Malformed app."] = "App non corretta";
+App::$strings["Embed code"] = "Inserisci del codice";
+App::$strings["Edit App"] = "Modifica app";
+App::$strings["Create App"] = "Crea una app";
+App::$strings["Name of app"] = "Nome app";
+App::$strings["Location (URL) of app"] = "Indirizzo (URL) della app";
+App::$strings["Description"] = "Descrizione";
+App::$strings["Photo icon URL"] = "URL icona";
+App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixel - facoltativa";
+App::$strings["Version ID"] = "ID versione";
+App::$strings["Price of app"] = "Prezzo app";
+App::$strings["Location (URL) to purchase app"] = "Indirizzo (URL) per acquistare la app";
+App::$strings["Page owner information could not be retrieved."] = "Impossibile ottenere informazioni sul proprietario della pagina.";
+App::$strings["Album not found."] = "Album non trovato.";
+App::$strings["Delete Album"] = "Elimina album";
+App::$strings["Delete Photo"] = "Elimina foto";
+App::$strings["Public access denied."] = "Accesso pubblico negato.";
+App::$strings["No photos selected"] = "Nessuna foto selezionata";
+App::$strings["Access to this item is restricted."] = "Questo elemento non è visibile a tutti.";
+App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "Hai usato %1$.2f Mb dei %2$.2f Mb di spazio disponibile.";
+App::$strings["%1$.2f MB photo storage used."] = "Hai usato %1$.2f Mb del tuo spazio disponibile.";
+App::$strings["Upload Photos"] = "Carica foto";
+App::$strings["Enter a new album name"] = "Inserisci il nome di un nuovo album";
+App::$strings["or select an existing one (doubleclick)"] = "o seleziona uno esistente (doppio click)";
+App::$strings["Create a status post for this upload"] = "Pubblica l'oggetto caricato sulla bacheca";
+App::$strings["Album name could not be decoded"] = "Non è stato possibile leggere il nome dell'album";
+App::$strings["Contact Photos"] = "Foto dei contatti";
+App::$strings["Show Newest First"] = "Prima i più recenti";
+App::$strings["Show Oldest First"] = "Prima i più vecchi";
+App::$strings["View Photo"] = "Guarda la foto";
+App::$strings["Edit Album"] = "Modifica album";
+App::$strings["Permission denied. Access to this item may be restricted."] = "Permesso negato. L'accesso a questo elemento può essere stato limitato.";
+App::$strings["Photo not available"] = "Foto non disponibile";
+App::$strings["Use as profile photo"] = "Usa come foto del profilo";
+App::$strings["Private Photo"] = "Foto privata";
+App::$strings["Previous"] = "Precendente";
+App::$strings["View Full Size"] = "Vedi nelle dimensioni originali";
+App::$strings["Next"] = "Successivo";
+App::$strings["Remove"] = "Rimuovi";
+App::$strings["Edit photo"] = "Modifica la foto";
+App::$strings["Rotate CW (right)"] = "Ruota (senso orario)";
+App::$strings["Rotate CCW (left)"] = "Ruota (senso antiorario)";
+App::$strings["Caption"] = "Titolo";
+App::$strings["Add a Tag"] = "Aggiungi tag";
+App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Esempio: @bob, @Barbara_Jensen, @jim@example.com";
+App::$strings["Flag as adult in album view"] = "Marca come 'per adulti'";
+App::$strings["In This Photo:"] = "In questa foto:";
+App::$strings["Map"] = "Mappa";
+App::$strings["View Album"] = "Guarda l'album";
+App::$strings["Recent Photos"] = "Foto recenti";
+App::$strings["Item not available."] = "Elemento non disponibile.";
+App::$strings["sent you a private message"] = "ti ha inviato un messaggio privato";
+App::$strings["added your channel"] = "ha aggiunto il tuo canale";
+App::$strings["posted an event"] = "ha creato un evento";
+App::$strings["Block Name"] = "Nome del riquadro";
+App::$strings["Block Title"] = "Nome del riquadro";
+App::$strings["Poke/Prod"] = "Poke/Prod";
+App::$strings["poke, prod or do other things to somebody"] = "Manda un poke, un prod o altro";
+App::$strings["Recipient"] = "Destinatario";
+App::$strings["Choose what you wish to do to recipient"] = "Scegli cosa vuoi inviare al destinatario";
+App::$strings["Make this post private"] = "Rendi privato questo post";
+App::$strings["Bookmark added"] = "Segnalibro aggiunto";
+App::$strings["My Bookmarks"] = "I miei segnalibri";
+App::$strings["My Connections Bookmarks"] = "I segnalibri dei miei contatti";
App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Hai creato %1$.0f dei %2$.0f canali permessi.";
App::$strings["Create a new channel"] = "Crea un nuovo canale";
App::$strings["Current Channel"] = "Canale attuale";
@@ -921,6 +1231,432 @@ App::$strings["Make Default"] = "Rendi predefinito";
App::$strings["%d new messages"] = "%d nuovi messaggi";
App::$strings["%d new introductions"] = "%d nuove richieste di entrare in contatto";
App::$strings["Delegated Channels"] = "Canali delegati";
+App::$strings["Profile Match"] = "Profili corrispondenti";
+App::$strings["No keywords to match. Please add keywords to your default profile."] = "Non hai scritto parole chiave. Aggiungi parole chiave al tuo profilo predefinito per comparire nelle ricerche.";
+App::$strings["is interested in:"] = "interessi personali:";
+App::$strings["No matches"] = "Nessun risultato";
+App::$strings["Members"] = "Membri";
+App::$strings["All Connected Channels"] = "Tutti i canali connessi";
+App::$strings["Click on a channel to add or remove."] = "Clicca su un canale per aggiungerlo o rimuoverlo.";
+App::$strings["Poll"] = "Sondaggio";
+App::$strings["View Results"] = "Guarda i risultati";
+App::$strings["You must be logged in to see this page."] = "Devi aver effettuato l'accesso per vedere questa pagina.";
+App::$strings["Insufficient permissions. Request redirected to profile page."] = "Permessi insufficienti. Sarà visualizzata la pagina del profilo.";
+App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "L'autenticazione magica dal tuo hub non è disponibile. Puoi provare a disconnetterti per tentare di nuovo.";
+App::$strings["Welcome %s. Remote authentication successful."] = "Ciao %s. L'accesso tramite il tuo hub è avvenuto con successo.";
+App::$strings["Room not found"] = "Area chat non trovata";
+App::$strings["Leave Room"] = "Lascia l'area chat";
+App::$strings["Delete This Room"] = "Elimina questa chat";
+App::$strings["I am away right now"] = "Non sono presente";
+App::$strings["I am online"] = "Sono online";
+App::$strings["Bookmark this room"] = "Aggiungi l'area chat ai segnalibri";
+App::$strings["New Chatroom"] = "Nuova area chat";
+App::$strings["Chatroom Name"] = "Nome dell'area chat";
+App::$strings["%1\$s's Chatrooms"] = "Le aree chat di %1\$s";
+App::$strings["Away"] = "Assente";
+App::$strings["Online"] = "Online";
+App::$strings["Fetching URL returns error: %1\$s"] = "La chiamata all'URL restituisce questo errore: %1\$s";
+App::$strings["\$Projectname - Guests: Username: {your email address}, Password: +++"] = "Login su \$Projectname. Username: {la tua email}, Password: {la tua password} ";
+App::$strings["No channel."] = "Nessun canale.";
+App::$strings["Common connections"] = "Contatti in comune";
+App::$strings["No connections in common."] = "Nessun contatto in comune.";
+App::$strings["Image uploaded but image cropping failed."] = "L'immagine è stata caricata, ma il non è stato possibile ritagliarla.";
+App::$strings["Image resize failed."] = "Il ridimensionamento dell'immagine è fallito.";
+App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Ricarica la pagina con shift+F5 o cancella la cache del browser se la nuova foto non viene mostrata immediatamente.";
+App::$strings["Image exceeds size limit of %d"] = "La dimensione dell'immagine supera il limite di %d";
+App::$strings["Unable to process image."] = "Impossibile elaborare l'immagine.";
+App::$strings["Photo not available."] = "Foto non disponibile.";
+App::$strings["Upload File:"] = "Carica un file:";
+App::$strings["Select a profile:"] = "Seleziona un profilo:";
+App::$strings["Upload Profile Photo"] = "Carica la foto del profilo";
+App::$strings["or"] = "o";
+App::$strings["skip this step"] = "salta questo passaggio";
+App::$strings["select a photo from your photo albums"] = "seleziona una foto dai tuoi album";
+App::$strings["Crop Image"] = "Ritaglia immagine";
+App::$strings["Please adjust the image cropping for optimum viewing."] = "Ritaglia l'immagine per migliorarne la visualizzazione.";
+App::$strings["Done Editing"] = "Modifica terminata";
+App::$strings["Image uploaded successfully."] = "Immagine caricata con successo.";
+App::$strings["Image upload failed."] = "Il caricamento dell'immagine è fallito.";
+App::$strings["Image size reduction [%s] failed."] = "Il ridimensionamento del'immagine [%s] è fallito.";
+App::$strings["Continue"] = "Continua";
+App::$strings["Premium Channel Setup"] = "Canale premium - installazione";
+App::$strings["Enable premium channel connection restrictions"] = "Abilita le restrizioni del canale premium";
+App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Scrivi le condizioni d'uso e le restrizioni di questo canale, come per esempio le linee guida, il sistema di pagamento, ecc.";
+App::$strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Prima di connetterti a questo canale è necessario che tu accetti le seguenti condizioni:";
+App::$strings["Potential connections will then see the following text before proceeding:"] = "Il testo seguente comparirà a chi vorrà seguire il canale:";
+App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Continuando dichiaro di aver seguito tutte le indicazioni e le istruzioni fornite in questa pagina.";
+App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(Il gestore del canale non ha fornito istruzioni specifiche)";
+App::$strings["Restricted or Premium Channel"] = "Canale premium - con restrizioni";
+App::$strings["Invalid request identifier."] = "L'identificativo della richiesta non è valido.";
+App::$strings["Discard"] = "Rifiuta";
+App::$strings["Ignore"] = "Ignora";
+App::$strings["No more system notifications."] = "Non ci sono nuove notifiche di sistema.";
+App::$strings["System Notifications"] = "Notifiche di sistema";
+App::$strings["Blocked"] = "Bloccati";
+App::$strings["Ignored"] = "Ignorati";
+App::$strings["Hidden"] = "Nascosti";
+App::$strings["Archived"] = "Archiviati";
+App::$strings["Suggest new connections"] = "Suggerisci nuovi contatti";
+App::$strings["New Connections"] = "Nuovi contatti";
+App::$strings["Show pending (new) connections"] = "Richieste di contatto in attesa";
+App::$strings["All Connections"] = "Tutti i contatti";
+App::$strings["Show all connections"] = "Mostra tutti i contatti";
+App::$strings["Unblocked"] = "Non bloccati";
+App::$strings["Only show unblocked connections"] = "Mostra solo i contatti non bloccati";
+App::$strings["Only show blocked connections"] = "Mostra solo i contatti bloccati";
+App::$strings["Only show ignored connections"] = "Mostra solo i contatti ignorati";
+App::$strings["Only show archived connections"] = "Mostra solo i contatti archiviati";
+App::$strings["Only show hidden connections"] = "Mostra solo i contatti nascosti";
+App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
+App::$strings["Edit connection"] = "Modifica il contatto";
+App::$strings["Search your connections"] = "Cerca tra i contatti";
+App::$strings["Finding: "] = "Ricerca: ";
+App::$strings["Profile not found."] = "Profilo non trovato.";
+App::$strings["Profile deleted."] = "Profilo eliminato.";
+App::$strings["Profile-"] = "Profilo-";
+App::$strings["New profile created."] = "Il nuovo profilo è stato creato.";
+App::$strings["Profile unavailable to clone."] = "Impossibile duplicare il profilo.";
+App::$strings["Profile unavailable to export."] = "Il profilo non è disponibile per l'export.";
+App::$strings["Profile Name is required."] = "Il nome del profilo è obbligatorio .";
+App::$strings["Marital Status"] = "Stato sentimentale";
+App::$strings["Romantic Partner"] = "Partner affettivo";
+App::$strings["Likes"] = "Mi piace";
+App::$strings["Dislikes"] = "Non mi piace";
+App::$strings["Work/Employment"] = "Lavoro/impiego";
+App::$strings["Religion"] = "Religione";
+App::$strings["Political Views"] = "Orientamento politico";
+App::$strings["Gender"] = "Sesso";
+App::$strings["Sexual Preference"] = "Preferenze sessuali";
+App::$strings["Homepage"] = "Home page";
+App::$strings["Interests"] = "Interessi";
+App::$strings["Location"] = "Posizione geografica";
+App::$strings["Profile updated."] = "Profilo aggiornato.";
+App::$strings["Hide your contact/friend list from viewers of this profile?"] = "Nascondi la tua lista di contatti/amici ai visitatori di questo profilo?";
+App::$strings["Edit Profile Details"] = "Modifica i dettagli del profilo";
+App::$strings["View this profile"] = "Guarda questo profilo";
+App::$strings["Change Profile Photo"] = "Cambia la foto del profilo";
+App::$strings["Create a new profile using these settings"] = "Crea un nuovo profilo usando queste impostazioni";
+App::$strings["Clone this profile"] = "Clona questo profilo";
+App::$strings["Delete this profile"] = "Elimina questo profilo";
+App::$strings["Import profile from file"] = "Importa il profilo da un file";
+App::$strings["Export profile to file"] = "Esporta il profilo in un file";
+App::$strings["Profile Name:"] = "Nome del profilo:";
+App::$strings["Your Full Name:"] = "Il tuo nome completo:";
+App::$strings["Title/Description:"] = "Titolo/descrizione:";
+App::$strings["Your Gender:"] = "Sesso:";
+App::$strings["Birthday :"] = "Compleanno:";
+App::$strings["Street Address:"] = "Indirizzo (via/piazza):";
+App::$strings["Locality/City:"] = "Località:";
+App::$strings["Postal/Zip Code:"] = "CAP:";
+App::$strings["Country:"] = "Nazione:";
+App::$strings["Region/State:"] = "Regione/stato:";
+App::$strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Stato sentimentale:";
+App::$strings["Who: (if applicable)"] = "Con chi: (se possibile)";
+App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Per esempio: cathy123, Cathy Williams, cathy@example.com";
+App::$strings["Since [date]:"] = "dal [data]:";
+App::$strings["Homepage URL:"] = "Indirizzo home page:";
+App::$strings["Religious Views:"] = "Orientamento religioso:";
+App::$strings["Keywords:"] = "Parole chiave, tag:";
+App::$strings["Example: fishing photography software"] = "Per esempio: pesca fotografia programmazione";
+App::$strings["Used in directory listings"] = "Visibile nell'elenco pubblico di canali";
+App::$strings["Tell us about yourself..."] = "Raccontaci di te...";
+App::$strings["Hobbies/Interests"] = "Hobby/interessi";
+App::$strings["Contact information and Social Networks"] = "Contatti personali e i tuoi social network";
+App::$strings["My other channels"] = "I miei altri canali";
+App::$strings["Musical interests"] = "Interessi musicali";
+App::$strings["Books, literature"] = "Libri, letteratura";
+App::$strings["Television"] = "Televisione";
+App::$strings["Film/dance/culture/entertainment"] = "Film/danza/cultura/intrattenimento";
+App::$strings["Love/romance"] = "Amore";
+App::$strings["Work/employment"] = "Lavoro/impiego";
+App::$strings["School/education"] = "Scuola/educazione";
+App::$strings["This is your default profile."] = "Questo è il tuo profilo predefinito.";
+App::$strings["Age: "] = "Età:";
+App::$strings["Edit/Manage Profiles"] = "Modifica/gestisci i profili";
+App::$strings["Add profile things"] = "Aggiungi Oggetti al profilo";
+App::$strings["Include desirable objects in your profile"] = "Aggiungi oggetti interessanti al tuo profilo";
+App::$strings["Could not access contact record."] = "Non è possibile accedere alle informazioni sul contatto.";
+App::$strings["Could not locate selected profile."] = "Non riesco a trovare il profilo selezionato.";
+App::$strings["Connection updated."] = "Contatto aggiornato.";
+App::$strings["Failed to update connection record."] = "Impossibile aggiornare le informazioni del contatto.";
+App::$strings["is now connected to"] = "ha come nuovo contatto";
+App::$strings["Could not access address book record."] = "Impossibile accedere alle informazioni della rubrica.";
+App::$strings["Refresh failed - channel is currently unavailable."] = "Il canale non è disponibile - impossibile aggiornare.";
+App::$strings["Unable to set address book parameters."] = "Impossibile impostare i parametri della rubrica.";
+App::$strings["Connection has been removed."] = "Il contatto è stato rimosso.";
+App::$strings["View %s's profile"] = "Guarda il profilo di %s";
+App::$strings["Refresh Permissions"] = "Modifica i permessi";
+App::$strings["Fetch updated permissions"] = "Guarda e modifica i permessi assegnati";
+App::$strings["Recent Activity"] = "Attività recenti";
+App::$strings["View recent posts and comments"] = "Leggi i post recenti e i commenti";
+App::$strings["Block (or Unblock) all communications with this connection"] = "Blocca ogni interazione con questo contatto (abilita/disabilita)";
+App::$strings["This connection is blocked!"] = "Questa connessione è tra quelle bloccate!";
+App::$strings["Unignore"] = "Non ignorare";
+App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Ignora tutte le comunicazioni in arrivo da questo contatto (abilita/disabilita)";
+App::$strings["This connection is ignored!"] = "Questa connessione è tra quelle ignorate!";
+App::$strings["Unarchive"] = "Non archiviare";
+App::$strings["Archive"] = "Archivia";
+App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Archivia questo contatto (abilita/disabilita) - segna il canale come non più attivo ma ne conserva i contenuti";
+App::$strings["This connection is archived!"] = "Questa connessione è tra quelle archiviate!";
+App::$strings["Unhide"] = "Non nascondere";
+App::$strings["Hide"] = "Nascondi";
+App::$strings["Hide or Unhide this connection from your other connections"] = "Nascondi questo contatto a tutti gli altri (abilita/disabilita)";
+App::$strings["This connection is hidden!"] = "Questa connessione è tra quelle nascoste!";
+App::$strings["Delete this connection"] = "Elimina questo contatto";
+App::$strings["Approve this connection"] = "Approva questo contatto";
+App::$strings["Accept connection to allow communication"] = "Entra in contatto per poter comunicare";
+App::$strings["Set Affinity"] = "Scegli l'affinità";
+App::$strings["Set Profile"] = "Scegli il profilo da mostrare";
+App::$strings["Set Affinity & Profile"] = "Affinità e profilo";
+App::$strings["Apply these permissions automatically"] = "Applica automaticamente questi permessi";
+App::$strings["This connection's address is"] = "Indirizzo di questo contatto";
+App::$strings["The permissions indicated on this page will be applied to all new connections."] = "I permessi indicati su questa pagina saranno applicati a tutti i nuovi contatti da ora in poi.";
+App::$strings["Slide to adjust your degree of friendship"] = "Trascina per restringere il grado di amicizia da mostrare";
+App::$strings["Slide to adjust your rating"] = "Trascina per cambiare la tua valutazione";
+App::$strings["Optionally explain your rating"] = "Commento opzionale";
+App::$strings["Custom Filter"] = "Filtro personalizzato";
+App::$strings["Only import posts with this text"] = "Importa solo i post che contengono questo testo";
+App::$strings["words one per line or #tags or /patterns/, leave blank to import all posts"] = "una parola per riga, oppure #tag o /pattern/ oppure lascia vuoto per importare tutto";
+App::$strings["Do not import posts with this text"] = "Non importare i post con questo testo";
+App::$strings["This information is public!"] = "Questa informazione è pubblica!";
+App::$strings["Connection Pending Approval"] = "Contatti in attesa di approvazione";
+App::$strings["Connection Request"] = "Richiesta di entrare in contatto";
+App::$strings["(%s) would like to connect with you. Please approve this connection to allow communication."] = "(%s) vorrebbe entrare in contatto con te. Per permettere la comunicazione è necessario che tu approvi.";
+App::$strings["Approve Later"] = "Approva più tardi";
+App::$strings["inherited"] = "derivato";
+App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Seleziona il profilo che vuoi mostrare a %s quando visita il tuo profilo in modo sicuro.";
+App::$strings["Their Settings"] = "Permessi concessi a te";
+App::$strings["My Settings"] = "I permessi che concedo";
+App::$strings["Individual Permissions"] = "Permessi individuali";
+App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Alcuni permessi derivano dalle <a href=\"settings\"><strong>impostazioni di privacy</strong></a> del tuo canale, che hanno priorità assoluta su qualsiasi altra impostazione scelta per i singoli contatti. Da questa pagina <strong>non</strong> puoi cambiarle.";
+App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Alcuni permessi derivano dalle <a href=\"settings\"><strong>impostazioni di privacy</strong></a> del tuo canale, che hanno priorità assoluta su qualsiasi altra impostazione scelta per i singoli contatti. Le personalizzazioni che effettuerai qui potrebbero non essere effettive a meno che tu non cambi proprio le impostazioni generali.";
+App::$strings["Last update:"] = "Ultimo aggiornamento:";
+App::$strings["Invalid profile identifier."] = "Indentificativo del profilo non valido.";
+App::$strings["Profile Visibility Editor"] = "Modifica la visibilità del profilo";
+App::$strings["Click on a contact to add or remove."] = "Clicca su un contatto per aggiungerlo o rimuoverlo.";
+App::$strings["Visible To"] = "Visibile a";
+App::$strings["\$Projectname channel"] = "Canale \$Projectname";
+App::$strings["%d rating"] = array(
+ 0 => "%d valutazione",
+ 1 => "%d valutazioni",
+);
+App::$strings["Gender: "] = "Sesso:";
+App::$strings["Status: "] = "Stato:";
+App::$strings["Homepage: "] = "Homepage:";
+App::$strings["Description:"] = "Descrizione:";
+App::$strings["Public Forum:"] = "Forum pubblico:";
+App::$strings["Keywords: "] = "Parole chiave:";
+App::$strings["Don't suggest"] = "Non fornire suggerimenti";
+App::$strings["Common connections:"] = "Contatti in comune:";
+App::$strings["Global Directory"] = "Elenco globale dei canali";
+App::$strings["Local Directory"] = "Elenco canali su questo server";
+App::$strings["Finding:"] = "Ricerca:";
+App::$strings["next page"] = "pagina successiva";
+App::$strings["previous page"] = "pagina precedente";
+App::$strings["Sort options"] = "Opzioni di ordinamento";
+App::$strings["Alphabetic"] = "Alfabetico";
+App::$strings["Reverse Alphabetic"] = "Alfabetico inverso";
+App::$strings["Newest to Oldest"] = "Prima i più recenti";
+App::$strings["Oldest to Newest"] = "Prima i più vecchi";
+App::$strings["No entries (some entries may be hidden)."] = "Nessun risultato (qualche elemento potrebbe essere nascosto).";
+App::$strings["Public Sites"] = "Siti pubblici";
+App::$strings["The listed sites allow public registration for the \$Projectname network. All sites in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "I siti elencati permettono la registrazione libera sulla rete \$Projectname. Tutti questi hub sono interconnessi, quindi essere iscritti su uno equivale a una registrazione su tutta la rete. Alcuni siti potrebbero richiedere un abbonamento o dei servizi a pagamento. Per maggiori dettagli visita gli indirizzi nell'elenco.";
+App::$strings["Rate this hub"] = "Valuta questo hub";
+App::$strings["Site URL"] = "URL del sito";
+App::$strings["Access Type"] = "Tipo di accesso";
+App::$strings["Registration Policy"] = "Politica di registrazione";
+App::$strings["Project"] = "Progetto";
+App::$strings["View hub ratings"] = "Vedi le valutazioni del hub";
+App::$strings["Rate"] = "Valuta";
+App::$strings["View ratings"] = "Vedi le valutazioni";
+App::$strings["This site is not a directory server"] = "Questo sito non è un server di elenchi pubblici";
+App::$strings["This directory server requires an access token"] = "Questo server di elenchi pubblici necessita di un token di autenticazione";
+App::$strings["Item not found"] = "Elemento non trovato";
+App::$strings["Delete block?"] = "Vuoi eliminare questo riquadro?";
+App::$strings["Insert YouTube video"] = "Inserisci video da YouTube";
+App::$strings["Insert Vorbis [.ogg] video"] = "Inserisci video Vorbis [.ogg]";
+App::$strings["Insert Vorbis [.ogg] audio"] = "Inserisci audio Vorbis [.ogg]";
+App::$strings["Edit Block"] = "Modifica il riquadro";
+App::$strings["Delete layout?"] = "Vuoi eliminare questo layout?";
+App::$strings["Layout Description (Optional)"] = "Descrizione del layout (facoltativa)";
+App::$strings["Layout Name"] = "Nome layout";
+App::$strings["Edit Layout"] = "Modifica il layout";
+App::$strings["Item is not editable"] = "L'elemento non è modificabile";
+App::$strings["Delete item?"] = "Eliminare questo elemento?";
+App::$strings["Edit post"] = "Modifica post";
+App::$strings["Unable to find your hub."] = "Impossibile raggiungere il tuo hub.";
+App::$strings["Post successful."] = "Inviato!";
+App::$strings["Delete webpage?"] = "Vuoi eliminare questa pagina web?";
+App::$strings["Page link title"] = "Link del titolo";
+App::$strings["Edit Webpage"] = "Modifica la pagina web";
+App::$strings["Website:"] = "Sito web:";
+App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Canale remoto [%s] (non ancora conosciuto da questo sito)";
+App::$strings["Rating (this information is public)"] = "Valutazione (visibile a tutti)";
+App::$strings["Optionally explain your rating (this information is public)"] = "Commento alla valutazione (facoltativo, visibile a tutti)";
+App::$strings["Calendar entries imported."] = "Le voci del calendario sono state importate.";
+App::$strings["No calendar entries found."] = "Non sono state trovate voci del calendario.";
+App::$strings["Event can not end before it has started."] = "Un evento non può terminare prima del suo inizio.";
+App::$strings["Unable to generate preview."] = "Impossibile creare un'anteprima.";
+App::$strings["Event title and start time are required."] = "Sono necessari il titolo e l'ora d'inizio dell'evento.";
+App::$strings["Event not found."] = "Evento non trovato.";
+App::$strings["l, F j"] = "l j F";
+App::$strings["Edit event"] = "Modifica l'evento";
+App::$strings["Delete event"] = "Elimina l'evento";
+App::$strings["calendar"] = "calendario";
+App::$strings["Create New Event"] = "Crea un nuovo evento";
+App::$strings["Export"] = "Esporta";
+App::$strings["Import"] = "Importa";
+App::$strings["Event removed"] = "Evento eliminato";
+App::$strings["Failed to remove event"] = "Impossibile eliminare l'evento";
+App::$strings["Event details"] = "Dettagli evento";
+App::$strings["Starting date and Title are required."] = "Titolo e data d'inizio sono obbligatori.";
+App::$strings["Categories (comma-separated list)"] = "Categorie (separate da virgola)";
+App::$strings["Event Starts:"] = "Inizio:";
+App::$strings["Finish date/time is not known or not relevant"] = "La data/ora di fine non è rilevante";
+App::$strings["Event Finishes:"] = "Fine:";
+App::$strings["Adjust for viewer timezone"] = "Adatta al fuso orario di chi legge";
+App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Importante per eventi che avvengono in base all'orario di un luogo particolare.";
+App::$strings["Title:"] = "Titolo:";
+App::$strings["Share this event"] = "Condividi questo evento";
+App::$strings["No ratings"] = "Nessuna valutazione";
+App::$strings["Ratings"] = "Valutazioni";
+App::$strings["Rating: "] = "Valutazione:";
+App::$strings["Website: "] = "Sito web:";
+App::$strings["Description: "] = "Descrizione:";
+App::$strings["Select a bookmark folder"] = "Scegli una cartella di segnalibri";
+App::$strings["Save Bookmark"] = "Salva segnalibro";
+App::$strings["URL of bookmark"] = "URL del segnalibro";
+App::$strings["Or enter new bookmark folder name"] = "O inserisci il nome di una nuova cartella di segnalibri";
+App::$strings["- select -"] = "- scegli -";
+App::$strings["Permission Denied."] = "Permesso negato.";
+App::$strings["File not found."] = "File non trovato.";
+App::$strings["Edit file permissions"] = "Modifica i permessi del file";
+App::$strings["Set/edit permissions"] = "Modifica i permessi";
+App::$strings["Include all files and sub folders"] = "Includi tutti i file e le sottocartelle";
+App::$strings["Return to file list"] = "Torna all'elenco dei file";
+App::$strings["Copy/paste this code to attach file to a post"] = "Copia/incolla questo codice per far comparire il file in un post";
+App::$strings["Copy/paste this URL to link file from a web page"] = "Copia/incolla questo indirizzo in una pagina web per avere un link al file";
+App::$strings["Share this file"] = "Condividi questo file";
+App::$strings["Show URL to this file"] = "Mostra l'URL del file";
+App::$strings["Notify your contacts about this file"] = "Notifica ai contatti che hai caricato questo file";
+App::$strings["Channel added."] = "Canale aggiunto.";
+App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "È stato superato il numero massimo giornaliero di registrazioni a questo sito. Riprova domani!";
+App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Impossibile proseguire. Devi prima accettare le Condizioni d'Uso del servizio.";
+App::$strings["Passwords do not match."] = "Le password non corrispondono.";
+App::$strings["Registration successful. Please check your email for validation instructions."] = "La registrazione è terminata correttamente. Per continuare controlla l'email che ti è stata inviata.";
+App::$strings["Your registration is pending approval by the site owner."] = "La tua richiesta è in attesa di approvazione da parte dell'amministratore del sito.";
+App::$strings["Your registration can not be processed."] = "La tua registrazione non puo' essere processata.";
+App::$strings["Registration on this site/hub is by approval only."] = "La registrazione su questo sito è soggetta ad approvazione.";
+App::$strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">Registrati su un altro server affiliato</a>";
+App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Questo sito ha superato il numero di registrazioni giornaliere consentite. Prova di nuovo domani.";
+App::$strings["Terms of Service"] = "Condizioni d'Uso";
+App::$strings["I accept the %s for this website"] = "Accetto le %s di questo sito";
+App::$strings["I am over 13 years of age and accept the %s for this website"] = "Ho più di 13 anni e accetto le %s di questo sito";
+App::$strings["Membership on this site is by invitation only."] = "Per registrarsi su questo sito è necessario un invito.";
+App::$strings["Please enter your invitation code"] = "Inserisci il codice dell'invito";
+App::$strings["Your email address"] = "Il tuo indirizzo email";
+App::$strings["Choose a password"] = "Scegli una password";
+App::$strings["Please re-enter your password"] = "Ripeti la password per verifica";
+App::$strings["Contact not found."] = "Contatto non trovato.";
+App::$strings["Friend suggestion sent."] = "Suggerimento di amicizia inviato.";
+App::$strings["Suggest Friends"] = "Suggerisci amici";
+App::$strings["Suggest a friend for %s"] = "Suggerisci un amico a %s";
+App::$strings["Please login."] = "Effettua l'accesso.";
+App::$strings["Collection created."] = "L'insieme di canali è stato creato.";
+App::$strings["Could not create collection."] = "Impossibile creare l'insieme.";
+App::$strings["Collection updated."] = "Insieme aggiornato.";
+App::$strings["Create a collection of channels."] = "Crea un insieme di canali.";
+App::$strings["Collection Name: "] = "Nome dell'insieme:";
+App::$strings["Members are visible to other channels"] = "I membri potranno vedere gli altri canali dell'insieme";
+App::$strings["Collection removed."] = "Insieme rimosso.";
+App::$strings["Unable to remove collection."] = "Impossibile rimuovere l'insieme.";
+App::$strings["Collection Editor"] = "Modifica l'insieme";
+App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "Non è possibile eliminare il tuo account prima di 48 ore dall'ultimo cambio password.";
+App::$strings["Remove This Account"] = "Elimina questo account";
+App::$strings["WARNING: "] = "ATTENZIONE:";
+App::$strings["This account and all its channels will be completely removed from the network. "] = "Questo account e tutti i suoi canali saranno completamente eliminati dalla rete.";
+App::$strings["This action is permanent and can not be undone!"] = "Questo comando è definitivo e non può essere annullato!";
+App::$strings["Please enter your password for verification:"] = "Inserisci la tua password per verifica:";
+App::$strings["Remove this account, all its channels and all its channel clones from the network"] = "Elimina dalla rete questo account, tutti i suoi canali e ANCHE tutti gli eventuali canali clonati.";
+App::$strings["By default only the instances of the channels located on this hub will be removed from the network"] = "A meno che tu non lo richieda espressamente, solo i canali presenti su questo server saranno rimossi dalla rete.";
+App::$strings["Remove Account"] = "Elimina l'account";
+App::$strings["Help:"] = "Guida:";
+App::$strings["Not Found"] = "Non disponibile";
+App::$strings["\$Projectname Documentation"] = "Documentazione \$Projectname";
+App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "Non è possibile eliminare un canale prima di 48 ore dall'ultimo cambio password.";
+App::$strings["Remove This Channel"] = "Elimina questo canale";
+App::$strings["This channel will be completely removed from the network. "] = "Questo canale sarà completamente eliminato dalla rete.";
+App::$strings["Remove this channel and all its clones from the network"] = "Rimuovi questo canale e tutti i suoi cloni dalla rete";
+App::$strings["By default only the instance of the channel located on this hub will be removed from the network"] = "L'impostazione predefinita è che sia eliminata solo l'istanza del canale presente su questo hub, non gli eventuali cloni";
+App::$strings["Remove Channel"] = "Elimina questo canale";
+App::$strings["\$Projectname"] = "\$Projectname";
+App::$strings["Welcome to %s"] = "%s ti dà il benvenuto";
+App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Non è possibile effettuare login con l'OpenID che hai fornito. Per favore controlla che sia scritto correttamente.";
+App::$strings["The error message was:"] = "Messaggio di errore ricevuto:";
+App::$strings["Authentication failed."] = "Autenticazione fallita.";
+App::$strings["Remote Authentication"] = "Accedi dal tuo hub";
+App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Inserisci l'indirizzo del tuo canale (ad esempio lucia@esempio.com)";
+App::$strings["Authenticate"] = "Accedi";
+App::$strings["First Name"] = "Nome";
+App::$strings["Last Name"] = "Cognome";
+App::$strings["Nickname"] = "Nick";
+App::$strings["Full Name"] = "Nome e cognome";
+App::$strings["Profile Photo 16px"] = "Foto del profilo 16px";
+App::$strings["Profile Photo 32px"] = "Foto del profilo 32px";
+App::$strings["Profile Photo 48px"] = "Foto del profilo 48px";
+App::$strings["Profile Photo 64px"] = "Foto del profilo 64px";
+App::$strings["Profile Photo 80px"] = "Foto del profilo 80px";
+App::$strings["Profile Photo 128px"] = "Foto del profilo 128px";
+App::$strings["Timezone"] = "Fuso orario";
+App::$strings["Homepage URL"] = "Indirizzo home page";
+App::$strings["Birth Year"] = "Anno di nascita";
+App::$strings["Birth Month"] = "Mese di nascita";
+App::$strings["Birth Day"] = "Giorno di nascita";
+App::$strings["Birthdate"] = "Data di nascita";
+App::$strings["%s element installed"] = "%s elemento installato";
+App::$strings["%s element installation failed"] = "Elementi con installazione fallita: %s";
+App::$strings["Items tagged with: %s"] = "Elementi taggati con: %s";
+App::$strings["Search results for: %s"] = "Risultati ricerca: %s";
+App::$strings["Your service plan only allows %d channels."] = "Il tuo account permette di creare al massimo %d canali.";
+App::$strings["Nothing to import."] = "Non c'è niente da importare.";
+App::$strings["Unable to download data from old server"] = "Impossibile importare i dati dal vecchio server";
+App::$strings["Imported file is empty."] = "Il file da importare è vuoto.";
+App::$strings["The data provided is not compatible with this project."] = "I dati forniti non sono compatibili con questo hub.";
+App::$strings["Warning: Database versions differ by %1\$d updates."] = "Attenzione: le versioni di database differiscono di %1\$d aggiornamenti.";
+App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Non posso creare un canale con un identificativo che già esiste su questo sistema. L'importazione è fallita.";
+App::$strings["Channel clone failed. Import failed."] = "Impossibile clonare il canale. L'importazione è fallita.";
+App::$strings["Cloned channel not found. Import failed."] = "Impossibile trovare il canale clonato. L'importazione è fallita.";
+App::$strings["You must be logged in to use this feature."] = "Per questa funzionalità devi aver effettuato l'accesso.";
+App::$strings["Import Channel"] = "Importa un canale";
+App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "Usa questo modulo per importare un tuo canale da un altro server/hub. Puoi ottenere i dati identificativi del canale direttamente dall'altro server/hub oppure tramite un file esportato in precedenza.";
+App::$strings["File to Upload"] = "File da caricare";
+App::$strings["Or provide the old server/hub details"] = "Oppure fornisci i dettagli del vecchio server/hub";
+App::$strings["Your old identity address (xyz@example.com)"] = "Il tuo vecchio identificativo (per esempio pippo@esempio.com)";
+App::$strings["Your old login email address"] = "L'email che usavi per accedere sul vecchio server";
+App::$strings["Your old login password"] = "La password per il vecchio server";
+App::$strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Scegli se vuoi spostare il tuo indirizzo primario su questo server, oppure se preferisci che quello vecchio resti tale. Potrai pubblicare da entrambi i server, ma solamente uno sarà indicato come posizione in cui risiedono i tuoi file, foto, ecc.";
+App::$strings["Make this hub my primary location"] = "Rendi questo server il mio indirizzo primario";
+App::$strings["Import existing posts if possible (experimental - limited by available memory"] = "Importa i contenuti pubblicati, se possibile (sperimentale)";
+App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Questa funzione potrebbe impiegare molto tempo a terminare. Per favore lanciala *una volta sola* e resta su questa pagina finché non avrà finito.";
+App::$strings["No service class restrictions found."] = "Non esistono restrizioni su questa classe di account.";
+App::$strings["Total invitation limit exceeded."] = "Hai superato il numero massimo di inviti.";
+App::$strings["%s : Not a valid email address."] = "%s: non è un indirizzo email valido.";
+App::$strings["Please join us on Red"] = "Vieni con noi su RedMatrix";
+App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Hai superato il numero massimo di inviti. Contatta l'amministratore se necessario.";
+App::$strings["%s : Message delivery failed."] = "%s: la consegna del messaggio è fallita.";
+App::$strings["%d message sent."] = array(
+ 0 => "%d messaggio inviato.",
+ 1 => "%d messaggi inviati.",
+);
+App::$strings["You have no more invitations available"] = "Non hai altri inviti disponibili";
+App::$strings["Send invitations"] = "Spedisci inviti";
+App::$strings["Enter email addresses, one per line:"] = "Inserisci gli indirizzi email, uno per riga:";
+App::$strings["Please join my community on \$Projectname."] = "Entra nella mia comunità su \$Projectname.";
+App::$strings["You will need to supply this invitation code: "] = "Dovrai fornire questo codice di invito:";
+App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Registrati su qualsiasi server \$Projectname (sono tutti interconnessi)";
+App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Inserisci il mio indirizzo \$Projectname nel riquadro di ricerca del sito.";
+App::$strings["or visit "] = "oppure visita ";
+App::$strings["3. Click [Connect]"] = "3. Clicca su [Aggiungi]";
App::$strings["Name is required"] = "Il nome è obbligatorio";
App::$strings["Key and Secret are required"] = "Key e Secret sono richiesti";
App::$strings["Diaspora Policy Settings updated."] = "Le regole per Diaspora sono state aggiornate.";
@@ -932,8 +1668,6 @@ App::$strings["Not valid email."] = "Email non valida.";
App::$strings["Protected email address. Cannot change to that email."] = "È un indirizzo email riservato. Non puoi sceglierlo.";
App::$strings["System failure storing new email. Please try again."] = "Errore di sistema. Non è stato possibile memorizzare il tuo messaggio, riprova per favore.";
App::$strings["Settings updated."] = "Impostazioni aggiornate.";
-App::$strings["No"] = "No";
-App::$strings["Yes"] = "Si";
App::$strings["Add application"] = "Aggiungi una app";
App::$strings["Name of application"] = "Nome dell'applicazione";
App::$strings["Consumer Key"] = "Consumer Key";
@@ -952,6 +1686,7 @@ App::$strings["No feature settings configured"] = "Non hai componenti aggiuntivi
App::$strings["Feature/Addon Settings"] = "Impostazioni dei componenti aggiuntivi";
App::$strings["Settings for the built-in Diaspora emulator"] = "Interconnessione con Diaspora";
App::$strings["Allow any Diaspora member to comment on your public posts"] = "Permetti a tutti gli utenti di Diaspora di commentare i tuoi post pubblici";
+App::$strings["Enable the Diaspora protocol for this channel"] = "Abilita il protocollo Diaspora per questo canale";
App::$strings["Diaspora Policy Settings"] = "Regole per Diaspora";
App::$strings["Prevent your hashtags from being redirected to other sites"] = "Impedisci che i tuoi #tag puntino su altri siti";
App::$strings["Account Settings"] = "Il tuo account";
@@ -959,7 +1694,6 @@ App::$strings["Enter New Password:"] = "Inserisci la nuova password:";
App::$strings["Confirm New Password:"] = "Conferma la nuova password:";
App::$strings["Leave password fields blank unless changing"] = "Lascia questi campi in bianco per non cambiare la password";
App::$strings["Email Address:"] = "Indirizzo email:";
-App::$strings["Remove Account"] = "Elimina l'account";
App::$strings["Remove this account including all its channels"] = "Elimina questo account e tutti i suoi canali";
App::$strings["Off"] = "Off";
App::$strings["On"] = "On";
@@ -967,8 +1701,10 @@ App::$strings["Additional Features"] = "Funzionalità opzionali";
App::$strings["Connector Settings"] = "Impostazioni del connettore";
App::$strings["No special theme for mobile devices"] = "Nessun tema per dispositivi mobili";
App::$strings["%s - (Experimental)"] = "%s - (Sperimentale)";
-App::$strings["mobile"] = "mobile";
App::$strings["Display Settings"] = "Aspetto";
+App::$strings["Theme Settings"] = "Impostazioni del tema";
+App::$strings["Custom Theme Settings"] = "Personalizzazione del tema";
+App::$strings["Content Settings"] = "Impostazioni dei contenuti";
App::$strings["Display Theme:"] = "Tema per schermi medio grandi:";
App::$strings["Mobile Theme:"] = "Tema per dispositivi mobili:";
App::$strings["Enable user zoom on mobile devices"] = "Attiva la possibilità di fare zoom sui dispositivi mobili";
@@ -977,7 +1713,7 @@ App::$strings["Minimum of 10 seconds, no maximum"] = "Minimo 10 secondi, nessun
App::$strings["Maximum number of conversations to load at any time:"] = "Massimo numero di conversazioni da mostrare ogni volta:";
App::$strings["Maximum of 100 items"] = "Massimo 100";
App::$strings["Show emoticons (smilies) as images"] = "Mostra le faccine (smilies) come immagini";
-App::$strings["Link post titles to source"] = "Il link del titolo di un articolo porta al sito originale";
+App::$strings["Link post titles to source"] = "Il link del titolo di un post porta al sito originale";
App::$strings["System Page Layout Editor - (advanced)"] = "Modifica i layout di sistema (avanzato)";
App::$strings["Use blog/list mode on channel page"] = "Mostra il canale nella modalità blog";
App::$strings["(comments displayed separately)"] = "(i commenti sono mostrati separatamente)";
@@ -991,11 +1727,10 @@ App::$strings["Approved connections"] = "Contatti approvati";
App::$strings["Any connections"] = "Tutti i contatti";
App::$strings["Anybody on this website"] = "Chiunque su questo sito";
App::$strings["Anybody in this network"] = "Chiunque su Red";
-App::$strings["Anybody authenticated"] = "Chiunque sia autenticato";
+App::$strings["Anybody authenticated"] = "Chiunque abbia effettuato l'accesso";
App::$strings["Anybody on the internet"] = "Chiunque su internet";
App::$strings["Publish your default profile in the network directory"] = "Mostra il mio profilo predefinito nell'elenco pubblico dei canali";
App::$strings["Allow us to suggest you as a potential friend to new members?"] = "Vuoi essere suggerito come amico ai nuovi membri?";
-App::$strings["or"] = "o";
App::$strings["Your channel address is"] = "L'indirizzo del tuo canale è";
App::$strings["Channel Settings"] = "Impostazioni del canale";
App::$strings["Basic Settings"] = "Impostazioni di base";
@@ -1014,14 +1749,14 @@ App::$strings["Very Public - <em>extremely permissive (should be used with cauti
App::$strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Standard - <em>contenuti normalmente pubblici, ma anche privati se necessario (simile ai social network ma con privacy migliorata)</em>";
App::$strings["Private - <em>default private, never open or public</em>"] = "Privato - <em>contenuti normalmente privati, nulla è aperto o pubblico</em>";
App::$strings["Blocked - <em>default blocked to/from everybody</em>"] = "Bloccato - <em>bloccato in invio e ricezione dei contenuti</em>";
-App::$strings["Allow others to tag your posts"] = "Permetti ad altri di taggare i tuoi articoli";
+App::$strings["Allow others to tag your posts"] = "Permetti ad altri di taggare i tuoi post";
App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "Usato spesso dalla comunità per marcare contenuti inappropriati già esistenti";
App::$strings["Advanced Privacy Settings"] = "Impostazioni di privacy avanzate";
App::$strings["Expire other channel content after this many days"] = "Giorni dopo cui mettere in scadenza gli altri contenuti del canale";
App::$strings["0 or blank prevents expiration"] = "Lascia vuoto oppure 0 per non impostare scadenze";
App::$strings["Maximum Friend Requests/Day:"] = "Numero massimo giornaliero di richieste di amicizia:";
App::$strings["May reduce spam activity"] = "Serve e ridurre lo spam";
-App::$strings["Default Post Permissions"] = "Permessi predefiniti per gli articoli";
+App::$strings["Default Post Permissions"] = "Permessi predefiniti per i post";
App::$strings["(click to open/close)"] = "(clicca per aprire/chiudere)";
App::$strings["Channel permissions category:"] = "Categorie di permessi dei canali:";
App::$strings["Maximum private messages per day from unknown people:"] = "Numero massimo giornaliero di messaggi privati da utenti sconosciuti:";
@@ -1035,11 +1770,11 @@ App::$strings["Send a notification email when:"] = "Invia una email di notifica
App::$strings["You receive a connection request"] = "Ricevi una richiesta di entrare in contatto";
App::$strings["Your connections are confirmed"] = "I tuoi contatti sono confermati";
App::$strings["Someone writes on your profile wall"] = "Qualcuno scrive sulla tua bacheca";
-App::$strings["Someone writes a followup comment"] = "Qualcuno scrive un commento a un tuo articolo";
+App::$strings["Someone writes a followup comment"] = "Qualcuno scrive un commento dopo di te";
App::$strings["You receive a private message"] = "Ricevi un messaggio privato";
App::$strings["You receive a friend suggestion"] = "Ti viene suggerito un amico";
-App::$strings["You are tagged in a post"] = "Sei taggato in un articolo";
-App::$strings["You are poked/prodded/etc. in a post"] = "Ricevi un poke in un articolo";
+App::$strings["You are tagged in a post"] = "Sei taggato in un post";
+App::$strings["You are poked/prodded/etc. in a post"] = "Ricevi un poke in un post";
App::$strings["Show visual notifications including:"] = "Mostra queste notifiche a schermo:";
App::$strings["Unseen matrix activity"] = "Nuove attività nella rete";
App::$strings["Unseen channel activity"] = "Novità nei canali";
@@ -1054,7 +1789,7 @@ App::$strings["System info messages"] = "Notifiche di sistema";
App::$strings["System critical alerts"] = "Avvisi critici di sistema";
App::$strings["New connections"] = "Nuovi contatti";
App::$strings["System Registrations"] = "Registrazioni";
-App::$strings["Also show new wall posts, private messages and connections under Notices"] = "Mostra negli avvisi anche i nuovi articoli, i messaggi privati e i nuovi contatti";
+App::$strings["Also show new wall posts, private messages and connections under Notices"] = "Mostra negli avvisi anche i nuovi post, i messaggi privati e i nuovi contatti";
App::$strings["Notify me of events this many days in advance"] = "Giorni di anticipo per notificare gli eventi";
App::$strings["Must be greater than 0"] = "Maggiore di 0";
App::$strings["Advanced Account/Page Type Settings"] = "Impostazioni avanzate";
@@ -1062,146 +1797,15 @@ App::$strings["Change the behaviour of this account for special situations"] = "
App::$strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "Abilita la modalità esperto per fare cambiamenti! (in <a href=\"settings/features\">Impostazioni > Funzionalità opzionali</a>)";
App::$strings["Miscellaneous Settings"] = "Impostazioni varie";
App::$strings["Personal menu to display in your channel pages"] = "Menu personale da mostrare sulle pagine del tuo canale";
-App::$strings["Remove Channel"] = "Elimina questo canale";
App::$strings["Remove this channel."] = "Elimina questo canale.";
-App::$strings["Xchan Lookup"] = "Ricerca canale";
-App::$strings["Lookup xchan beginning with (or webbie): "] = "Cerca un canale (o un webbie) che inizia per:";
-App::$strings["Not found."] = "Non trovato.";
-App::$strings["Authorize application connection"] = "Autorizza la app";
-App::$strings["Return to your app and insert this Securty Code:"] = "Torna alla app e inserisci questo codice di sicurezza:";
-App::$strings["Please login to continue."] = "Accedi al sito per continuare.";
-App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Vuoi autorizzare questa app ad accedere ai messaggi e ai contatti o creare nuovi messaggi per te?";
-App::$strings["Channel added."] = "Canale aggiunto.";
-App::$strings["Tag removed"] = "Tag rimosso";
-App::$strings["Remove Item Tag"] = "Rimuovi il tag";
-App::$strings["Select a tag to remove: "] = "Seleziona un tag da rimuovere: ";
-App::$strings["Remove"] = "Rimuovi";
-App::$strings["Continue"] = "Continua";
-App::$strings["Premium Channel Setup"] = "Canale premium - installazione";
-App::$strings["Enable premium channel connection restrictions"] = "Abilita le restrizioni del canale premium";
-App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Scrivi le condizioni d'uso e le restrizioni di questo canale, come per esempio le linee guida, il sistema di pagamento, ecc.";
-App::$strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Prima di connetterti a questo canale è necessario che tu accetti le seguenti condizioni:";
-App::$strings["Potential connections will then see the following text before proceeding:"] = "Il testo seguente comparirà a chi vorrà seguire il canale:";
-App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Continuando dichiaro di aver seguito tutte le indicazioni e le istruzioni fornite in questa pagina.";
-App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(Il gestore del canale non ha fornito istruzioni specifiche)";
-App::$strings["Restricted or Premium Channel"] = "Canale premium - con restrizioni";
-App::$strings["Thing updated"] = "L'Oggetto è stato aggiornato";
-App::$strings["Object store: failed"] = "Impossibile memorizzare l'oggetto.";
-App::$strings["Thing added"] = "L'Oggetto è stato aggiunto";
-App::$strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
-App::$strings["Show Thing"] = "Mostra l'Oggetto";
-App::$strings["item not found."] = "non trovato.";
-App::$strings["Edit Thing"] = "Modifica l'Oggetto";
-App::$strings["Select a profile"] = "Scegli un profilo";
-App::$strings["Post an activity"] = "Pubblica un'attività";
-App::$strings["Only sends to viewers of the applicable profile"] = "Invia solo a chi segue il relativo canale";
-App::$strings["Name of thing e.g. something"] = "Nome dell'Oggetto";
-App::$strings["URL of thing (optional)"] = "Indirizzo web dell'Oggetto (opzionale)";
-App::$strings["URL for photo of thing (optional)"] = "Indirizzo di un'immagine dell'Oggetto (facoltativo)";
-App::$strings["Add Thing to your Profile"] = "Aggiungi l'Oggetto al tuo profilo";
-App::$strings["Item not available."] = "Elemento non disponibile.";
-App::$strings["Fetching URL returns error: %1\$s"] = "La chiamata all'URL restituisce questo errore: %1\$s";
-App::$strings["Hubzilla - &quot;The Network&quot;"] = "Hubzilla - &quot;La tua rete&quot;";
-App::$strings["Welcome to %s"] = "%s ti dà il benvenuto";
-App::$strings["Image uploaded but image cropping failed."] = "L'immagine è stata caricata, ma il non è stato possibile ritagliarla.";
-App::$strings["Image resize failed."] = "Il ridimensionamento dell'immagine è fallito.";
-App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Ricarica la pagina con shift+F5 o cancella la cache del browser se la nuova foto non viene mostrata immediatamente.";
-App::$strings["Image exceeds size limit of %d"] = "La dimensione dell'immagine supera il limite di %d";
-App::$strings["Unable to process image."] = "Impossibile elaborare l'immagine.";
-App::$strings["Photo not available."] = "Foto non disponibile.";
-App::$strings["Upload File:"] = "Carica un file:";
-App::$strings["Select a profile:"] = "Seleziona un profilo:";
-App::$strings["Upload Profile Photo"] = "Carica la foto del profilo";
-App::$strings["skip this step"] = "salta questo passaggio";
-App::$strings["select a photo from your photo albums"] = "seleziona una foto dai tuoi album";
-App::$strings["Crop Image"] = "Ritaglia immagine";
-App::$strings["Please adjust the image cropping for optimum viewing."] = "Ritaglia l'immagine per migliorarne la visualizzazione.";
-App::$strings["Done Editing"] = "Modifica terminata";
-App::$strings["Image uploaded successfully."] = "Immagine caricata con successo.";
-App::$strings["Image upload failed."] = "Il caricamento dell'immagine è fallito.";
-App::$strings["Image size reduction [%s] failed."] = "Il ridimensionamento del'immagine [%s] è fallito.";
-App::$strings["Invalid item."] = "Elemento non valido.";
-App::$strings["Channel not found."] = "Canale non trovato.";
-App::$strings["Page not found."] = "Pagina non trovata.";
-App::$strings["Like/Dislike"] = "Mi piace/Non mi piace";
-App::$strings["This action is restricted to members."] = "Questa funzionalità è riservata agli iscritti.";
-App::$strings["Please <a href=\"rmagic\">login with your Hubzilla ID</a> or <a href=\"register\">register as a new Redmatrix.member</a> to continue."] = "Per favore <a href=\"rmagic\">accedi con il tuo identificativo Hubzilla</a> o <a href=\"register\">registrati su Hubzilla</a> per continuare.";
-App::$strings["Invalid request."] = "Richiesta non valida.";
-App::$strings["thing"] = "Oggetto";
-App::$strings["Channel unavailable."] = "Canale non trovato.";
-App::$strings["Previous action reversed."] = "Il comando precedente è stato annullato.";
-App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%3\$s di %2\$s: %1\$s è d'accordo";
-App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%3\$s di %2\$s: %1\$s non è d'accordo";
-App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%3\$s di %2\$s: %1\$s non ha preso una decisione";
-App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%3\$s di %2\$s: %1\$s partecipa";
-App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%3\$s di %2\$s: %1\$s non partecipa";
-App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%3\$s di %2\$s: %1\$s forse partecipa";
-App::$strings["Action completed."] = "Comando completato.";
-App::$strings["Thank you."] = "Grazie.";
-App::$strings["Event can not end before it has started."] = "Un evento non può terminare prima del suo inizio.";
-App::$strings["Unable to generate preview."] = "Impossibile creare un'anteprima.";
-App::$strings["Event title and start time are required."] = "Sono necessari il titolo e l'ora d'inizio dell'evento.";
-App::$strings["Event not found."] = "Evento non trovato.";
-App::$strings["l, F j"] = "l j F";
-App::$strings["Edit event"] = "Modifica l'evento";
-App::$strings["Delete event"] = "Elimina l'evento";
-App::$strings["Create New Event"] = "Crea un nuovo evento";
-App::$strings["Previous"] = "Precendente";
-App::$strings["Next"] = "Successivo";
-App::$strings["Export"] = "Esporta";
-App::$strings["Event removed"] = "Evento eliminato";
-App::$strings["Failed to remove event"] = "Impossibile eliminare l'evento";
-App::$strings["Event details"] = "Dettagli evento";
-App::$strings["Starting date and Title are required."] = "Titolo e data d'inizio sono obbligatori.";
-App::$strings["Categories (comma-separated list)"] = "Categorie (separate da virgola)";
-App::$strings["Event Starts:"] = "Inizio:";
-App::$strings["Finish date/time is not known or not relevant"] = "La data/ora di fine non è rilevante";
-App::$strings["Event Finishes:"] = "Fine:";
-App::$strings["Adjust for viewer timezone"] = "Adatta al fuso orario di chi legge";
-App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Importante per eventi che avvengono in base all'orario di un luogo particolare.";
-App::$strings["Description:"] = "Descrizione:";
-App::$strings["Title:"] = "Titolo:";
-App::$strings["Share this event"] = "Condividi questo evento";
-App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s sta seguendo %3\$s di %2\$s";
-App::$strings["Public Sites"] = "Siti pubblici";
-App::$strings["The listed sites allow public registration into the Hubzilla. All sites in the matrix are interlinked so membership on any of them conveys membership in the matrix as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Gli indirizzi elencati permettono la registrazione su Hubzilla. Tutti i siti di questa rete sono interconnessi, quindi essere registrati su uno è come essere registrati ovunque. Alcuni potrebbero richiedere un'iscrizione a pagamento o prevedere diverse tipologie di abbonamento. Eventualmente potrai trovare maggiori informazioni visitando ciascun sito.";
-App::$strings["Rate this hub"] = "Valuta questo hub";
-App::$strings["Site URL"] = "URL del sito";
-App::$strings["Access Type"] = "Tipo di accesso";
-App::$strings["Registration Policy"] = "Politica di registrazione";
-App::$strings["Location"] = "Posizione geografica";
-App::$strings["View hub ratings"] = "Vedi le valutazioni del hub";
-App::$strings["Rate"] = "Valuta";
-App::$strings["View ratings"] = "Vedi le valutazioni";
-App::$strings["Edit post"] = "Modifica articolo";
-App::$strings["Hubzilla channel"] = "Canale Hubzilla";
-App::$strings["Collection created."] = "L'insieme di canali è stato creato.";
-App::$strings["Could not create collection."] = "Impossibile creare l'insieme.";
-App::$strings["Collection updated."] = "Insieme aggiornato.";
-App::$strings["Create a collection of channels."] = "Crea un insieme di canali.";
-App::$strings["Collection Name: "] = "Nome dell'insieme:";
-App::$strings["Members are visible to other channels"] = "I membri potranno vedere gli altri canali dell'insieme";
-App::$strings["Collection removed."] = "Insieme rimosso.";
-App::$strings["Unable to remove collection."] = "Impossibile rimuovere l'insieme.";
-App::$strings["Collection Editor"] = "Modifica l'insieme";
-App::$strings["Members"] = "Membri";
-App::$strings["All Connected Channels"] = "Tutti i canali connessi";
-App::$strings["Click on a channel to add or remove."] = "Clicca su un canale per aggiungerlo o rimuoverlo.";
-App::$strings["Version %s"] = "Versione %s";
-App::$strings["Installed plugins/addons/apps:"] = "App e componenti installati:";
-App::$strings["No installed plugins/addons/apps"] = "Nessuna app o componente installato";
-App::$strings["Red"] = "Hubzilla";
-App::$strings["This is a hub of hubzilla - a global cooperative network of decentralized privacy enhanced websites."] = "Questo è un hub di Hubzilla - una rete cooperativa e decentralizzata di siti ad elevata privacy. ";
-App::$strings["Tag: "] = "Tag: ";
-App::$strings["Last background fetch: "] = "Ultima acquisizione:";
-App::$strings["Running at web location"] = "In esecuzione sull'indirizzo web";
-App::$strings["Please visit <a href=\"https://redmatrix.me\">redmatrix.me</a> to learn more about the Hubzilla."] = "Visita <a href=\"https://redmatrix.me\">Redmatrix.me</a> per scoprire cosa è Hubzilla.";
-App::$strings["Bug reports and issues: please visit"] = "Per segnalare bug e problemi: visita";
-App::$strings["Suggestions, praise, etc. - please email \"hubzilla\" at librelist - dot com"] = "Per consigli, ringraziamenti, ecc. - scrivi a \"hubzilla\" at librelist - dot com";
-App::$strings["Site Administrators"] = "Amministratori del sito";
-App::$strings["Help:"] = "Guida:";
-App::$strings["Not Found"] = "Non disponibile";
-App::$strings["Hubzilla Server - Setup"] = "Hubzilla Server - Installazione";
+App::$strings["Unable to locate original post."] = "Impossibile trovare il messaggio originale.";
+App::$strings["Empty post discarded."] = "Il post vuoto è stato ignorato.";
+App::$strings["Executable content type not permitted to this channel."] = "I contenuti eseguibili non sono permessi su questo canale.";
+App::$strings["System error. Post not saved."] = "Errore di sistema. Post non salvato.";
+App::$strings["Unable to obtain post information from database."] = "Impossibile caricare il post dal database.";
+App::$strings["You have reached your limit of %1$.0f top level posts."] = "Hai raggiunto il limite massimo di %1$.0f post sulla pagina principale.";
+App::$strings["You have reached your limit of %1$.0f webpages."] = "Hai raggiunto il limite massimo di %1$.0f pagine web.";
+App::$strings["\$Projectname Server - Setup"] = "Server \$Projectname - Installazione";
App::$strings["Could not connect to database."] = " Impossibile connettersi al database.";
App::$strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "Non è possibile raggiungere l'indirizzo del sito specificato. Potrebbe essere un problema di SSL o DNS.";
App::$strings["Could not create table."] = "Impossibile creare le tabelle.";
@@ -1211,7 +1815,7 @@ App::$strings["Please see the file \"install/INSTALL.txt\"."] = "Leggi il file '
App::$strings["System check"] = "Verifica del sistema";
App::$strings["Check again"] = "Verifica di nuovo";
App::$strings["Database connection"] = "Connessione al database";
-App::$strings["In order to install Hubzilla we need to know how to connect to your database."] = "Per installare Hubzilla è necessario conoscere i parametri di connessione al database.";
+App::$strings["In order to install \$Projectname we need to know how to connect to your database."] = "Per poter installare \$Projectname è necessario fornire i parametri di connessione al tuo database.";
App::$strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Contatta il tuo fornitore di hosting o l'amministratore del sito se hai domande su queste impostazioni.";
App::$strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "Il database deve già esistere. Se non esiste, crealo prima di continuare.";
App::$strings["Database Server Name"] = "Server del database";
@@ -1236,6 +1840,9 @@ App::$strings["Command line PHP"] = "PHP da riga di comando";
App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "La versione da riga di comando di PHP nel sistema non ha abilitato \"register_argc_argv\".";
App::$strings["This is required for message delivery to work."] = "E' necessario perché funzioni la consegna dei messaggi.";
App::$strings["PHP register_argc_argv"] = "PHP register_argc_argv";
+App::$strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "La dimensione massima di un caricamento è impostata a %s. Il singolo file non può superare %s. Ti è permesso caricare max %d file per volta.";
+App::$strings["You can adjust these settings in the servers php.ini."] = "Puoi regolare queste impostazioni sul server in php.ini";
+App::$strings["PHP upload limits"] = "Limiti PHP in upload";
App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Errore: la funzione \"openssl_pkey_new\" su questo sistema non è in grado di generare le chiavi di criptazione";
App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Se stai usando un server windows, guarda \"http://www.php.net/manual/en/openssl.installation.php\".";
App::$strings["Generate encryption keys"] = "Genera chiavi di criptazione";
@@ -1245,6 +1852,7 @@ App::$strings["OpenSSL PHP module"] = "modulo PHP OpenSSL";
App::$strings["mysqli or postgres PHP module"] = "modulo PHP per mysqli oppure prostgres";
App::$strings["mb_string PHP module"] = "modulo PHP mb_string";
App::$strings["mcrypt PHP module"] = "modulo PHP mcrypt";
+App::$strings["xml PHP module"] = "modulo xml PHP";
App::$strings["Apache mod_rewrite module"] = "modulo Apache mod_rewrite";
App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Errore: il modulo mod-rewrite di Apache è richiesto ma non installato";
App::$strings["proc_open"] = "proc_open";
@@ -1255,17 +1863,18 @@ App::$strings["Error: openssl PHP module required but not installed."] = "Errore
App::$strings["Error: mysqli or postgres PHP module required but neither are installed."] = "Errore: il modulo PHP per mysqli o postgres è richiesto ma non installato";
App::$strings["Error: mb_string PHP module required but not installed."] = "Errore: il modulo PHP mb_string è richiesto ma non installato.";
App::$strings["Error: mcrypt PHP module required but not installed."] = "Errore: il modulo PHP mcrypt è richiesto ma non installato.";
-App::$strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "L'installazione web deve poter creare un file chiamato \".htconfig.php\" nella cartella di Hubzilla ma non è in grado di farlo.";
+App::$strings["Error: xml PHP module required for DAV but not installed."] = "Errore: il modulo xml PHP è richiesto per DAV ma non è installato.";
+App::$strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "L'installazione web deve poter creare un file chiamato \".htconfig.php\" nella cartella di RedMatrix ma non è in grado di farlo.";
App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Spesso ciò è dovuto ai permessi di accesso al disco: il web server potrebbe non aver diritto di scrivere il file nella cartella, anche se tu puoi.";
-App::$strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Alla fine di questa procedura ti sarà dato il testo da salvare in un file di nome .htconfig.php dentro la cartella principale di Hubzilla.";
+App::$strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Alla fine di questa procedura ti sarà dato il testo da salvare in un file di nome .htconfig.php dentro la cartella principale di RedMatrix.";
App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Puoi anche saltare questa procedura ed effettuare un'installazione manuale. Guarda il file 'install/INSTALL.txt' per le istruzioni.";
App::$strings[".htconfig.php is writable"] = ".htconfig.php è scrivibile";
App::$strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red usa il sistema Smarty3 per costruire i suoi template grafici. Smarty3 è molto veloce perché compila i template delle pagine direttamente in PHP.";
-App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "Per poter memorizzare i template compilati, il web server deve avere accesso in scrittura a %s sotto la cartella di installazione di Hubzilla.";
+App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "Per poter memorizzare i template compilati, il web server deve avere accesso in scrittura a %s sotto la cartella di installazione di RedMatrix.";
App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Assicurati che il tuo web server sia in esecuzione da parte di un utente che ha diritto di scrittura su quella cartella (ad esempio www-data).";
App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Nota bene: come precauzione, dovresti dare i diritti di scrittura solamente su %s e non sui file template (.tpl) che contiene.";
App::$strings["%s is writable"] = "%s è scrivibile";
-App::$strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "Hubzilla salva i file caricati nella cartella \"store\" sul server. Il server deve avere i diritti di scrittura su quella cartella che si trova dentro l'installazione di Hubzilla";
+App::$strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "RedMatrix salva i file caricati nella cartella \"store\" sul server. Il server deve avere i diritti di scrittura su quella cartella che si trova dentro l'installazione di RedMatrix";
App::$strings["store is writable"] = "l'archivio è scrivibile";
App::$strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "Il certificato SSL non può essere validato. Correggi l'errore o disabilita l'accesso https al sito.";
App::$strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Se abiliti https per il tuo sito o permetti connessioni TCP su port 443 (quella di https), DEVI usare un certificato riconosciuto dai browser internet. NON DEVI usare certificati generati da te!";
@@ -1280,177 +1889,42 @@ App::$strings["The database configuration file \".htconfig.php\" could not be wr
App::$strings["Errors encountered creating database tables."] = "La creazione delle tabelle del database ha generato errori.";
App::$strings["<h1>What next</h1>"] = "<h1>I prossimi passi</h1>";
App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANTE: Devi creare [manualmente] la pianificazione del polling.";
-App::$strings["No channel."] = "Nessun canale.";
-App::$strings["Common connections"] = "Contatti in comune";
-App::$strings["No connections in common."] = "Nessun contatto in comune.";
-App::$strings["This site is not a directory server"] = "Questo sito non è un server di elenchi pubblici";
-App::$strings["Could not access contact record."] = "Non è possibile accedere alle informazioni sul contatto.";
-App::$strings["Could not locate selected profile."] = "Non riesco a trovare il profilo selezionato.";
-App::$strings["Connection updated."] = "Contatto aggiornato.";
-App::$strings["Failed to update connection record."] = "Impossibile aggiornare le informazioni del contatto.";
-App::$strings["Blocked"] = "Bloccati";
-App::$strings["Ignored"] = "Ignorati";
-App::$strings["Hidden"] = "Nascosti";
-App::$strings["Archived"] = "Archiviati";
-App::$strings["Suggest new connections"] = "Suggerisci nuovi contatti";
-App::$strings["New Connections"] = "Nuovi contatti";
-App::$strings["Show pending (new) connections"] = "Richieste di contatto in attesa";
-App::$strings["All Connections"] = "Tutti i contatti";
-App::$strings["Show all connections"] = "Mostra tutti i contatti";
-App::$strings["Unblocked"] = "Non bloccati";
-App::$strings["Only show unblocked connections"] = "Mostra solo i contatti non bloccati";
-App::$strings["Only show blocked connections"] = "Mostra solo i contatti bloccati";
-App::$strings["Only show ignored connections"] = "Mostra solo i contatti ignorati";
-App::$strings["Only show archived connections"] = "Mostra solo i contatti archiviati";
-App::$strings["Only show hidden connections"] = "Mostra solo i contatti nascosti";
-App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-App::$strings["Edit connection"] = "Modifica il contatto";
-App::$strings["Search your connections"] = "Cerca tra i contatti";
-App::$strings["Finding: "] = "Ricerca: ";
-App::$strings["webpage"] = "pagina web";
-App::$strings["block"] = "riquadro";
-App::$strings["layout"] = "layout";
-App::$strings["%s element installed"] = "%s elemento installato";
-App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha taggato %3\$s di %2\$s con %4\$s";
-App::$strings["Hubzilla - Guests: Username: {your email address}, Password: +++"] = "Accesso a Hubzilla. {Inserisci l'email con cui sei registrato e la password.}";
-App::$strings["Page owner information could not be retrieved."] = "Impossibile ottenere informazioni sul proprietario della pagina.";
-App::$strings["Album not found."] = "Album non trovato.";
-App::$strings["Delete Album"] = "Elimina album";
-App::$strings["Delete Photo"] = "Elimina foto";
-App::$strings["Public access denied."] = "Accesso pubblico negato.";
-App::$strings["No photos selected"] = "Nessuna foto selezionata";
-App::$strings["Access to this item is restricted."] = "Questo elemento non è visibile a tutti.";
-App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "Hai usato %1$.2f Mb dei %2$.2f Mb di spazio disponibile.";
-App::$strings["%1$.2f MB photo storage used."] = "Hai usato %1$.2f Mb del tuo spazio disponibile.";
-App::$strings["Upload Photos"] = "Carica foto";
-App::$strings["Enter a new album name"] = "Inserisci il nome di un nuovo album";
-App::$strings["or select an existing one (doubleclick)"] = "o seleziona uno esistente (doppio click)";
-App::$strings["Create a status post for this upload"] = "Pubblica l'oggetto caricato sulla bacheca";
-App::$strings["Album name could not be decoded"] = "Non è stato possibile leggere il nome dell'album";
-App::$strings["Contact Photos"] = "Foto dei contatti";
-App::$strings["Show Newest First"] = "Prima i più recenti";
-App::$strings["Show Oldest First"] = "Prima i più vecchi";
-App::$strings["View Photo"] = "Guarda la foto";
-App::$strings["Edit Album"] = "Modifica album";
-App::$strings["Permission denied. Access to this item may be restricted."] = "Permesso negato. L'accesso a questo elemento può essere stato limitato.";
-App::$strings["Photo not available"] = "Foto non disponibile";
-App::$strings["Use as profile photo"] = "Usa come foto del profilo";
-App::$strings["Private Photo"] = "Foto privata";
-App::$strings["View Full Size"] = "Vedi nelle dimensioni originali";
-App::$strings["Edit photo"] = "Modifica la foto";
-App::$strings["Rotate CW (right)"] = "Ruota (senso orario)";
-App::$strings["Rotate CCW (left)"] = "Ruota (senso antiorario)";
-App::$strings["Caption"] = "Titolo";
-App::$strings["Add a Tag"] = "Aggiungi tag";
-App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Esempio: @bob, @Barbara_Jensen, @jim@example.com";
-App::$strings["Flag as adult in album view"] = "Marca come 'per adulti'";
-App::$strings["In This Photo:"] = "In questa foto:";
-App::$strings["Map"] = "Mappa";
-App::$strings["View Album"] = "Guarda l'album";
-App::$strings["Recent Photos"] = "Foto recenti";
-App::$strings["Profile Match"] = "Profili corrispondenti";
-App::$strings["No keywords to match. Please add keywords to your default profile."] = "Non hai scritto parole chiave. Aggiungi parole chiave al tuo profilo predefinito per comparire nelle ricerche.";
-App::$strings["is interested in:"] = "interessi personali:";
-App::$strings["No matches"] = "Nessun risultato";
-App::$strings["Away"] = "Assente";
-App::$strings["Online"] = "Online";
-App::$strings["Select a bookmark folder"] = "Scegli una cartella di segnalibri";
-App::$strings["Save Bookmark"] = "Salva segnalibro";
-App::$strings["URL of bookmark"] = "URL del segnalibro";
-App::$strings["Description"] = "Descrizione";
-App::$strings["Or enter new bookmark folder name"] = "O inserisci il nome di una nuova cartella di segnalibri";
-App::$strings["No more system notifications."] = "Non ci sono nuove notifiche di sistema.";
-App::$strings["System Notifications"] = "Notifiche di sistema";
-App::$strings["network"] = "rete";
-App::$strings["RSS"] = "RSS";
-App::$strings["Layout updated."] = "Layout aggiornato.";
-App::$strings["Edit System Page Description"] = "Modifica i layout di sistema";
-App::$strings["Layout not found."] = "Layout non trovato.";
-App::$strings["Module Name:"] = "Nome del modulo:";
-App::$strings["Layout Help"] = "Guida al layout";
-App::$strings["- select -"] = "- scegli -";
-App::$strings["Your service plan only allows %d channels."] = "Il tuo account permette di creare al massimo %d canali.";
-App::$strings["Nothing to import."] = "Non c'è niente da importare.";
-App::$strings["Unable to download data from old server"] = "Impossibile importare i dati dal vecchio server";
-App::$strings["Imported file is empty."] = "Il file da importare è vuoto.";
-App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Non posso creare un canale con un identificativo che già esiste su questo sistema. L'importazione è fallita.";
-App::$strings["Unable to create a unique channel address. Import failed."] = "Impossibile creare un indirizzo univoco per il canale. L'import è fallito.";
-App::$strings["Channel clone failed. Import failed."] = "Impossibile clonare il canale. L'importazione è fallita.";
-App::$strings["Cloned channel not found. Import failed."] = "Impossibile trovare il canale clonato. L'importazione è fallita.";
-App::$strings["Import completed."] = "L'importazione è terminata con successo!";
-App::$strings["You must be logged in to use this feature."] = "Per questa funzionalità devi aver effettuato l'accesso.";
-App::$strings["Import Channel"] = "Importa un canale";
-App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file. Only identity and connections/relationships will be imported. Importation of content is not yet available."] = "Usa questo modulo per importare un tuo canale da un altro server/hub. Puoi scaricare i dati identificativi del canale direttamente dall'altro server/hub oppure tramite un file che hai esportato. Saranno importati solamente l'identità e i contatti. L'importazione dei contenuti non è ancora disponibile.";
-App::$strings["File to Upload"] = "File da caricare";
-App::$strings["Or provide the old server/hub details"] = "Oppure fornisci i dettagli del vecchio server/hub";
-App::$strings["Your old identity address (xyz@example.com)"] = "Il tuo vecchio identificativo (per esempio pippo@esempio.com)";
-App::$strings["Your old login email address"] = "L'email che usavi per accedere sul vecchio server";
-App::$strings["Your old login password"] = "La password per il vecchio server";
-App::$strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Scegli se vuoi spostare il tuo indirizzo primario su questo server, oppure se preferisci che quello vecchio resti tale. Potrai pubblicare da entrambi i server, ma solamente uno sarà indicato come posizione in cui risiedono i tuoi file, foto, ecc.";
-App::$strings["Make this hub my primary location"] = "Rendi questo server il mio indirizzo primario";
-App::$strings["Import existing posts if possible"] = "Importazione dei post esistenti, se possibile";
-App::$strings["Item not found"] = "Elemento non trovato";
-App::$strings["Edit Layout"] = "Modifica il layout";
-App::$strings["Delete layout?"] = "Vuoi eliminare questo layout?";
-App::$strings["Insert YouTube video"] = "Inserisci video da YouTube";
-App::$strings["Insert Vorbis [.ogg] video"] = "Inserisci video Vorbis [.ogg]";
-App::$strings["Insert Vorbis [.ogg] audio"] = "Inserisci audio Vorbis [.ogg]";
-App::$strings["Delete Layout"] = "Elimina il layout";
-App::$strings["You must be logged in to see this page."] = "Devi aver effettuato l'accesso per vedere questa pagina.";
-App::$strings["Room not found"] = "Area chat non trovata";
-App::$strings["Leave Room"] = "Lascia l'area chat";
-App::$strings["Delete This Room"] = "Elimina questa area chat";
-App::$strings["I am away right now"] = "Non sono presente";
-App::$strings["I am online"] = "Sono online";
-App::$strings["Bookmark this room"] = "Aggiungi l'area chat ai segnalibri";
-App::$strings["New Chatroom"] = "Nuova area chat";
-App::$strings["Chatroom Name"] = "Nome dell'area chat";
-App::$strings["%1\$s's Chatrooms"] = "Le aree chat di %1\$s";
-App::$strings["Delete webpage?"] = "Vuoi eliminare questa pagina web?";
-App::$strings["Page link title"] = "Link del titolo";
-App::$strings["Edit Webpage"] = "Modifica la pagina web";
-App::$strings["This directory server requires an access token"] = "Questo server di elenchi pubblici necessita di un token di autenticazione";
-App::$strings["No valid account found."] = "Nessun account valido trovato.";
-App::$strings["Password reset request issued. Check your email."] = "La richiesta per reimpostare la password è stata inviata. Controlla la tua email.";
-App::$strings["Site Member (%s)"] = "Utente del sito (%s)";
-App::$strings["Password reset requested at %s"] = "È stato richiesto di reimpostare password su %s";
-App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La richiesta non può essere verificata (potresti averla già usata precedentemente). La password non sarà reimpostata.";
-App::$strings["Password Reset"] = "Reimposta la password";
-App::$strings["Your password has been reset as requested."] = "La password è stata reimpostata come richiesto.";
-App::$strings["Your new password is"] = "La tua nuova password è";
-App::$strings["Save or copy your new password - and then"] = "Salva o copia la tua nuova password, quindi";
-App::$strings["click here to login"] = "clicca qui per accedere";
-App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Puoi cambiare la tua password dalla pagina delle <em>Impostazioni</em> dopo aver effettuato l'accesso.";
-App::$strings["Your password has changed at %s"] = "La tua password su %s è cambiata";
-App::$strings["Forgot your Password?"] = "Hai dimenticato la password?";
-App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Inserisci il tuo indirizzo email per reimpostare la password. Dopo aver inviato la richiesta, controlla l'email e troverai le istruzioni per continuare.";
-App::$strings["Email Address"] = "Indirizzo email";
-App::$strings["Reset"] = "Reimposta";
-App::$strings["Website:"] = "Sito web:";
-App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Canale remoto [%s] (non ancora conosciuto da questo sito)";
-App::$strings["Rating (this information is public)"] = "Valutazione (visibile a tutti)";
-App::$strings["Optionally explain your rating (this information is public)"] = "Commento alla valutazione (facoltativo, visibile a tutti)";
-App::$strings["Item is not editable"] = "L'elemento non è modificabile";
-App::$strings["Delete item?"] = "Eliminare questo elemento?";
-App::$strings["Total invitation limit exceeded."] = "Hai superato il numero massimo di inviti.";
-App::$strings["%s : Not a valid email address."] = "%s: non è un indirizzo email valido.";
-App::$strings["Please join us on Red"] = "Vieni con noi su Hubzilla";
-App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Hai superato il numero massimo di inviti. Contatta l'amministratore se necessario.";
-App::$strings["%s : Message delivery failed."] = "%s: la consegna del messaggio è fallita.";
-App::$strings["%d message sent."] = array(
- 0 => "%d messaggio inviato.",
- 1 => "%d messaggi inviati.",
-);
-App::$strings["You have no more invitations available"] = "Non hai altri inviti disponibili";
-App::$strings["Send invitations"] = "Spedisci inviti";
-App::$strings["Enter email addresses, one per line:"] = "Inserisci gli indirizzi email, uno per riga:";
-App::$strings["Your message:"] = "Il tuo messaggio:";
-App::$strings["Please join my community on Hubzilla."] = "Entra a far parte della mia comunità su Hubzilla.";
-App::$strings["You will need to supply this invitation code: "] = "Dovrai fornire questo codice di invito:";
-App::$strings["1. Register at any Hubzilla location (they are all inter-connected)"] = "1. Registrati su un qualsiasi sito Hubzilla (sono tutti interconnessi)";
-App::$strings["2. Enter my Hubzilla network address into the site searchbar."] = "2. Inserisci il mio indirizzo Hubzilla nella barra di ricerca che compare nella pagina.";
-App::$strings["or visit "] = "oppure visita ";
-App::$strings["3. Click [Connect]"] = "3. Clicca su [Aggiungi]";
+App::$strings["Comanche page description language help"] = "Guida di Comanche Page Description Language";
+App::$strings["Layout Description"] = "Descrizione del layout";
+App::$strings["Download PDL file"] = "Scarica il file PDL";
+App::$strings["Files: shared with me"] = "File: condivisi con me";
+App::$strings["NEW"] = "NOVITÀ";
+App::$strings["Remove all files"] = "Elimina tutti i file";
+App::$strings["Remove this file"] = "Elimina questo file";
+App::$strings["Like/Dislike"] = "Mi piace/Non mi piace";
+App::$strings["This action is restricted to members."] = "Questa funzionalità è riservata agli iscritti.";
+App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "Per continuare devi <a href=\"rmagic\">accedere con il tuo identificativo \$Projectname</a> o <a href=\"register\">registrarti come nuovo utente \$Projectname</a>.";
+App::$strings["Invalid request."] = "Richiesta non valida.";
+App::$strings["thing"] = "Oggetto";
+App::$strings["Channel unavailable."] = "Canale non trovato.";
+App::$strings["Previous action reversed."] = "Il comando precedente è stato annullato.";
+App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%3\$s di %2\$s: %1\$s è d'accordo";
+App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%3\$s di %2\$s: %1\$s non è d'accordo";
+App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%3\$s di %2\$s: %1\$s non ha preso una decisione";
+App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%3\$s di %2\$s: %1\$s partecipa";
+App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%3\$s di %2\$s: %1\$s non partecipa";
+App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%3\$s di %2\$s: %1\$s forse partecipa";
+App::$strings["Action completed."] = "Comando completato.";
+App::$strings["Thank you."] = "Grazie.";
+App::$strings["Version %s"] = "Versione %s";
+App::$strings["Installed plugins/addons/apps:"] = "App e componenti installati:";
+App::$strings["No installed plugins/addons/apps"] = "Nessuna app o componente installato";
+App::$strings["This is a hub of \$Projectname - a global cooperative network of decentralized privacy enhanced websites."] = "Questo è un hub di \$Projectname - una rete cooperativa e decentralizzata di siti ad elevata privacy. ";
+App::$strings["Tag: "] = "Tag: ";
+App::$strings["Last background fetch: "] = "Ultima acquisizione:";
+App::$strings["Running at web location"] = "In esecuzione sull'indirizzo web";
+App::$strings["Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more about \$Projectname."] = "Visita <a href=\"http://hubzilla.org\">hubzilla.org</a> per maggiori informazioni su \$Projectname.";
+App::$strings["Bug reports and issues: please visit"] = "Per segnalare bug e problemi: visita";
+App::$strings["\$projectname issues"] = "Problematiche note su \$projectname";
+App::$strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Per consigli, ringraziamenti, ecc. - scrivi a \"redmatrix\" at librelist - dot com";
+App::$strings["Site Administrators"] = "Amministratori del sito";
+App::$strings["Remote privacy information not available."] = "Le informazioni remote sulla privacy non sono disponibili.";
+App::$strings["Visible to:"] = "Visibile a:";
App::$strings["Location not found."] = "Indirizzo non trovato.";
App::$strings["Primary location cannot be removed."] = "L'indirizzo principale non può essere rimosso.";
App::$strings["No locations found."] = "Nessun indirizzo trovato.";
@@ -1473,13 +1947,29 @@ App::$strings["Edit Source"] = "Modifica la sorgente";
App::$strings["Delete Source"] = "Elimina la sorgente";
App::$strings["Source removed"] = "Sorgente eliminata";
App::$strings["Unable to remove source."] = "Impossibile rimuovere la sorgente.";
+App::$strings["No valid account found."] = "Nessun account valido trovato.";
+App::$strings["Password reset request issued. Check your email."] = "La richiesta per reimpostare la password è stata inviata. Controlla la tua email.";
+App::$strings["Site Member (%s)"] = "Utente del sito (%s)";
+App::$strings["Password reset requested at %s"] = "È stato richiesto di reimpostare password su %s";
+App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La richiesta non può essere verificata (potresti averla già usata precedentemente). La password non sarà reimpostata.";
+App::$strings["Password Reset"] = "Reimposta la password";
+App::$strings["Your password has been reset as requested."] = "La password è stata reimpostata come richiesto.";
+App::$strings["Your new password is"] = "La tua nuova password è";
+App::$strings["Save or copy your new password - and then"] = "Salva o copia la tua nuova password, quindi";
+App::$strings["click here to login"] = "clicca qui per accedere";
+App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Puoi cambiare la tua password dalla pagina delle <em>Impostazioni</em> dopo aver effettuato l'accesso.";
+App::$strings["Your password has changed at %s"] = "La tua password su %s è cambiata";
+App::$strings["Forgot your Password?"] = "Hai dimenticato la password?";
+App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Inserisci il tuo indirizzo email per reimpostare la password. Dopo aver inviato la richiesta, controlla l'email e troverai le istruzioni per continuare.";
+App::$strings["Email Address"] = "Indirizzo email";
+App::$strings["Reset"] = "Reimposta";
App::$strings["Unable to update menu."] = "Impossibile aggiornare il menù.";
App::$strings["Unable to create menu."] = "Impossibile creare il menù.";
App::$strings["Menu Name"] = "Nome del menu";
-App::$strings["Unique name (not visible on webpage) - required"] = "Identificativo unico (non visibile sulla pagina) - obbligatorio";
+App::$strings["Unique name (not visible on webpage) - required"] = "Nome unico (non visibile sulla pagina) - obbligatorio";
App::$strings["Menu Title"] = "Titolo del menu";
App::$strings["Visible on webpage - leave empty for no title"] = "Visibile sulla pagina - lascia vuoto per non avere un titolo";
-App::$strings["Allow Bookmarks"] = "Permetti l'aggiunta ai segnalibri";
+App::$strings["Allow Bookmarks"] = "Permetti i segnalibri";
App::$strings["Menu may be used to store saved bookmarks"] = "Puoi salvare i segnalibri nei menù";
App::$strings["Submit and proceed"] = "Salva e procedi";
App::$strings["Drop"] = "Elimina";
@@ -1496,116 +1986,25 @@ App::$strings["Must be unique, only seen by you"] = "Deve essere unico, lo vedra
App::$strings["Menu title"] = "Titolo del menù";
App::$strings["Menu title as seen by others"] = "Titolo del menù come comparirà a tutti";
App::$strings["Allow bookmarks"] = "Permetti l'invio di segnalibri";
-App::$strings["Modify"] = "Modifica";
-App::$strings["Permission Denied."] = "Permesso negato.";
-App::$strings["File not found."] = "File non trovato.";
-App::$strings["Edit file permissions"] = "Modifica i permessi del file";
-App::$strings["Set/edit permissions"] = "Modifica i permessi";
-App::$strings["Include all files and sub folders"] = "Includi tutti i file e le sottocartelle";
-App::$strings["Return to file list"] = "Torna all'elenco dei file";
-App::$strings["Copy/paste this code to attach file to a post"] = "Copia/incolla questo codice per far comparire il file in un articolo";
-App::$strings["Copy/paste this URL to link file from a web page"] = "Copia/incolla questo indirizzo in una pagina web per avere un link al file";
-App::$strings["Share this file"] = "Condividi questo file";
-App::$strings["Show URL to this file"] = "Mostra l'URL del file";
-App::$strings["Notify your contacts about this file"] = "Notifica ai tuoi contatti che hai caricato il file";
-App::$strings["Contact not found."] = "Contatto non trovato.";
-App::$strings["Friend suggestion sent."] = "Suggerimento di amicizia inviato.";
-App::$strings["Suggest Friends"] = "Suggerisci amici";
-App::$strings["Suggest a friend for %s"] = "Suggerisci un amico a %s";
-App::$strings["Hub not found."] = "Server non trovato.";
-App::$strings["Poke/Prod"] = "Poke/Prod";
-App::$strings["poke, prod or do other things to somebody"] = "Manda un poke, un prod o altro";
-App::$strings["Recipient"] = "Destinatario";
-App::$strings["Choose what you wish to do to recipient"] = "Scegli cosa vuoi inviare al destinatario";
-App::$strings["Make this post private"] = "Rendi privato questo articolo";
-App::$strings["Invalid profile identifier."] = "Indentificativo del profilo non valido.";
-App::$strings["Profile Visibility Editor"] = "Modifica la visibilità del profilo";
-App::$strings["Click on a contact to add or remove."] = "Clicca su un contatto per aggiungerlo o rimuoverlo.";
-App::$strings["Visible To"] = "Visibile a";
-App::$strings["Page Title"] = "Titolo della pagina";
-App::$strings["Profile not found."] = "Profilo non trovato.";
-App::$strings["Profile deleted."] = "Profilo eliminato.";
-App::$strings["Profile-"] = "Profilo-";
-App::$strings["New profile created."] = "Il nuovo profilo è stato creato.";
-App::$strings["Profile unavailable to clone."] = "Impossibile duplicare il profilo.";
-App::$strings["Profile unavailable to export."] = "Il profilo non è disponibile per l'export.";
-App::$strings["Profile Name is required."] = "Il nome del profilo è obbligatorio .";
-App::$strings["Marital Status"] = "Stato sentimentale";
-App::$strings["Romantic Partner"] = "Partner affettivo";
-App::$strings["Likes"] = "Mi piace";
-App::$strings["Dislikes"] = "Non mi piace";
-App::$strings["Work/Employment"] = "Lavoro/impiego";
-App::$strings["Religion"] = "Religione";
-App::$strings["Political Views"] = "Orientamento politico";
-App::$strings["Gender"] = "Sesso";
-App::$strings["Sexual Preference"] = "Preferenze sessuali";
-App::$strings["Homepage"] = "Home page";
-App::$strings["Interests"] = "Interessi";
-App::$strings["Address"] = "Indirizzo";
-App::$strings["Profile updated."] = "Profilo aggiornato.";
-App::$strings["Hide your contact/friend list from viewers of this profile?"] = "Nascondi la tua lista di contatti/amici ai visitatori di questo profilo?";
-App::$strings["Edit Profile Details"] = "Modifica i dettagli del profilo";
-App::$strings["View this profile"] = "Guarda questo profilo";
-App::$strings["Change Profile Photo"] = "Cambia la foto del profilo";
-App::$strings["Create a new profile using these settings"] = "Crea un nuovo profilo usando queste impostazioni";
-App::$strings["Clone this profile"] = "Clona questo profilo";
-App::$strings["Delete this profile"] = "Elimina questo profilo";
-App::$strings["Import profile from file"] = "Importa il profilo da un file";
-App::$strings["Export profile to file"] = "Esporta il profilo in un file";
-App::$strings["Profile Name:"] = "Nome del profilo:";
-App::$strings["Your Full Name:"] = "Il tuo nome completo:";
-App::$strings["Title/Description:"] = "Titolo/descrizione:";
-App::$strings["Your Gender:"] = "Sesso:";
-App::$strings["Birthday :"] = "Compleanno:";
-App::$strings["Street Address:"] = "Indirizzo (via/piazza):";
-App::$strings["Locality/City:"] = "Località:";
-App::$strings["Postal/Zip Code:"] = "CAP:";
-App::$strings["Country:"] = "Nazione:";
-App::$strings["Region/State:"] = "Regione/stato:";
-App::$strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Stato sentimentale:";
-App::$strings["Who: (if applicable)"] = "Con chi: (se possibile)";
-App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Per esempio: cathy123, Cathy Williams, cathy@example.com";
-App::$strings["Since [date]:"] = "dal [data]:";
-App::$strings["Homepage URL:"] = "Indirizzo home page:";
-App::$strings["Religious Views:"] = "Orientamento religioso:";
-App::$strings["Keywords:"] = "Parole chiave, tag:";
-App::$strings["Example: fishing photography software"] = "Per esempio: pesca fotografia programmazione";
-App::$strings["Used in directory listings"] = "Visibile nell'elenco pubblico di canali";
-App::$strings["Tell us about yourself..."] = "Raccontaci di te...";
-App::$strings["Hobbies/Interests"] = "Hobby/interessi";
-App::$strings["Contact information and Social Networks"] = "Contatti personali e i tuoi social network";
-App::$strings["My other channels"] = "I miei altri canali";
-App::$strings["Musical interests"] = "Interessi musicali";
-App::$strings["Books, literature"] = "Libri, letteratura";
-App::$strings["Television"] = "Televisione";
-App::$strings["Film/dance/culture/entertainment"] = "Film/danza/cultura/intrattenimento";
-App::$strings["Love/romance"] = "Amore";
-App::$strings["Work/employment"] = "Lavoro/impiego";
-App::$strings["School/education"] = "Scuola/educazione";
-App::$strings["This is your default profile."] = "Questo è il tuo profilo predefinito.";
-App::$strings["Age: "] = "Età:";
-App::$strings["Edit/Manage Profiles"] = "Modifica/gestisci i profili";
-App::$strings["Add profile things"] = "Aggiungi Oggetti al profilo";
-App::$strings["Include desirable objects in your profile"] = "Aggiungi oggetti interessanti al tuo profilo";
-App::$strings["No ratings"] = "Nessuna valutazione";
-App::$strings["Ratings"] = "Valutazioni";
-App::$strings["Rating: "] = "Valutazione:";
-App::$strings["Website: "] = "Sito web:";
-App::$strings["Description: "] = "Descrizione:";
-App::$strings["Source of Item"] = "Sorgente";
+App::$strings["Not found."] = "Non trovato.";
+App::$strings["Conversation removed."] = "Conversazione rimossa.";
+App::$strings["No messages."] = "Nessun messaggio.";
+App::$strings["D, d M Y - g:i A"] = "D d M Y - G:i";
App::$strings["Unable to create element."] = "Impossibile creare l'elemento.";
App::$strings["Unable to update menu element."] = "Non è possibile aggiornare l'elemento del menù.";
App::$strings["Unable to add menu element."] = "Impossibile aggiungere l'elemento al menù.";
App::$strings["Menu Item Permissions"] = "Permessi del menu";
App::$strings["Link Name"] = "Nome link";
-App::$strings["Link Target"] = "Destinazione link";
-App::$strings["Use Hubzilla magic-auth if available"] = "Usa l'autenticazione magica di Hubzilla, se disponibile";
+App::$strings["Link or Submenu Target"] = "Destinazione del link o del sottomenu";
+App::$strings["Enter URL of the link or select a menu name to create a submenu"] = "Inserisci l'indirizzo del link o scegli il nome di un sottomenu";
+App::$strings["Use magic-auth if available"] = "Usa l'autenticazione magica se disponibile";
App::$strings["Open link in new window"] = "Apri il link in una nuova finestra";
App::$strings["Order in list"] = "Ordine dell'elenco";
App::$strings["Higher numbers will sink to bottom of listing"] = "I numeri più alti andranno in fondo all'elenco";
App::$strings["Submit and finish"] = "Salva e termina";
App::$strings["Submit and continue"] = "Salva e continua";
App::$strings["Menu:"] = "Menu:";
+App::$strings["Link Target"] = "Destinazione link";
App::$strings["Edit menu"] = "Modifica il menù";
App::$strings["Edit element"] = "Modifica l'elemento";
App::$strings["Drop element"] = "Elimina l'elemento";
@@ -1619,460 +2018,112 @@ App::$strings["Menu item deleted."] = "L'elemento del menù è stato eliminato."
App::$strings["Menu item could not be deleted."] = "L'elemento del menù non può essere eliminato.";
App::$strings["Edit Menu Element"] = "Modifica l'elemento del menù";
App::$strings["Link text"] = "Testo del link";
-App::$strings["URL of link"] = "Indirizzo del link";
-App::$strings["OpenID protocol error. No ID returned."] = "Errore del protocollo OpenID. Nessun ID ricevuto in risposta.";
-App::$strings["Welcome %s. Remote authentication successful."] = "Ciao %s. L'autenticazione magica è avvenuta con successo.";
-App::$strings["%d rating"] = array(
- 0 => "%d valutazione",
- 1 => "%d valutazioni",
-);
-App::$strings["Gender: "] = "Sesso:";
-App::$strings["Status: "] = "Stato:";
-App::$strings["Homepage: "] = "Homepage:";
-App::$strings["Hometown: "] = "Città dove vivo:";
-App::$strings["About: "] = "Informazioni:";
-App::$strings["Public Forum:"] = "Forum pubblico:";
-App::$strings["Keywords: "] = "Parole chiave:";
-App::$strings["Common connections: %s"] = "Contatti in comune: %s";
-App::$strings["Finding:"] = "Ricerca:";
-App::$strings["next page"] = "pagina successiva";
-App::$strings["previous page"] = "pagina precedente";
-App::$strings["No entries (some entries may be hidden)."] = "Nessun risultato (qualche elemento potrebbe essere nascosto).";
-App::$strings["Export Channel"] = "Esporta il canale";
-App::$strings["Export your basic channel information to a small file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new hub, but\tdoes not contain your content."] = "Esporta le informazioni di base del tuo canale in un piccolo file. E' utile per avere un salvataggio di sicurezza dei tuoi contatti, del tuo profilo ed altre informazioni fondamentali. Può essere usato per importare il tuo canale su un nuovo server, ma\tnon include i contenuti, per esempio articoli e foto.";
-App::$strings["Export Content"] = "Esporta i contenuti";
-App::$strings["Export your channel information and all the content to a JSON backup. This backs up all of your connections, permissions, profile data and all of your content, but is generally not suitable for importing a channel to a new hub as this file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Esporta i dati del canale e i contenuti in un file in formato JSON. E' un salvataggio dei tuoi contatti, dei dati del profilo e anche di tutti i contenuti. Questa non è la soluzione opportuna per importare il tuo canale su un nuovo server, visto che il file potrebbe avere dimensioni NOTEVOLI. Devi pazientare - ci vorranno alcuni minuti per raccogliere i dati prima che inizi lo scaricamento.";
-App::$strings["No connections."] = "Nessun contatto.";
-App::$strings["Visit %s's profile [%s]"] = "Visita il profilo di %s [%s]";
-App::$strings["invalid target signature"] = "la firma ricevuta non è valida";
-App::$strings["Theme settings updated."] = "Le impostazioni del tema sono state aggiornate.";
-App::$strings["Site"] = "Sito";
-App::$strings["Accounts"] = "Account";
-App::$strings["Channels"] = "Canali";
-App::$strings["Plugins"] = "Plugin";
-App::$strings["Themes"] = "Temi";
-App::$strings["Inspect queue"] = "Coda di attesa";
-App::$strings["Profile Config"] = "Configurazione del profilo";
-App::$strings["DB updates"] = "Aggiornamenti al DB";
-App::$strings["Logs"] = "Log";
-App::$strings["Plugin Features"] = "Plugin";
-App::$strings["User registrations waiting for confirmation"] = "Registrazioni in attesa";
-App::$strings["# Accounts"] = "# account";
-App::$strings["# blocked accounts"] = "# account bloccati";
-App::$strings["# expired accounts"] = "# account scaduti";
-App::$strings["# expiring accounts"] = "# account in scadenza";
-App::$strings["# Channels"] = "# canali";
-App::$strings["# primary"] = "# primari";
-App::$strings["# clones"] = "# cloni";
-App::$strings["Message queues"] = "Coda messaggi in uscita";
-App::$strings["Administration"] = "Amministrazione";
-App::$strings["Summary"] = "Riepilogo";
-App::$strings["Registered accounts"] = "Account creati";
-App::$strings["Pending registrations"] = "Registrazioni da approvare";
-App::$strings["Registered channels"] = "Canali creati";
-App::$strings["Active plugins"] = "Plugin attivi";
-App::$strings["Version"] = "Versione";
-App::$strings["Site settings updated."] = "Impostazioni del sito salvate correttamente.";
-App::$strings["experimental"] = "sperimentale";
-App::$strings["unsupported"] = "non supportato";
-App::$strings["Yes - with approval"] = "Sì - con approvazione";
-App::$strings["My site is not a public server"] = "Non è un server pubblico";
-App::$strings["My site has paid access only"] = "È un servizio a pagamento";
-App::$strings["My site has free access only"] = "È un servizio gratuito";
-App::$strings["My site offers free accounts with optional paid upgrades"] = "È un servizio gratuito con opzioni aggiuntive a pagamento";
-App::$strings["Registration"] = "Registrazione";
-App::$strings["File upload"] = "Caricamento file";
-App::$strings["Policies"] = "Politiche";
-App::$strings["Site name"] = "Nome del sito";
-App::$strings["Banner/Logo"] = "Banner o logo";
-App::$strings["Administrator Information"] = "Informazioni sull'amministratore";
-App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Informazioni per contattare gli amministratori del sito. Saranno mostrate sulla pagina di informazioni. È consentito il BBcode";
-App::$strings["System language"] = "Lingua di sistema";
-App::$strings["System theme"] = "Tema di sistema";
-App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Il tema di sistema può essere cambiato dai profili dei singoli utenti - <a href='#' id='cnftheme'>Cambia le impostazioni del tema</a>";
-App::$strings["Mobile system theme"] = "Tema di sistema per dispositivi mobili";
-App::$strings["Theme for mobile devices"] = "Tema per i dispositivi mobili";
-App::$strings["Enable Diaspora Protocol"] = "Abilita la comunicazione con Diaspora";
-App::$strings["Communicate with Diaspora and Friendica - experimental"] = "Sperimentale - per comunicare con Diaspora e Friendica";
-App::$strings["Allow Feeds as Connections"] = "Permetti di aggiungere i feed come contatti";
-App::$strings["(Heavy system resource usage)"] = "(Uso intenso delle risorse di sistema!)";
-App::$strings["Maximum image size"] = "Dimensione massima immagini";
-App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Massima dimensione in byte delle immagini caricate. Il default è 0, cioè nessun limite.";
-App::$strings["Does this site allow new member registration?"] = "Questo sito permette a nuovi utenti di registrarsi?";
-App::$strings["Which best describes the types of account offered by this hub?"] = "Come descriveresti il tipo di servizio proposto da questo server?";
-App::$strings["Register text"] = "Testo di registrazione";
-App::$strings["Will be displayed prominently on the registration page."] = "Sarà mostrato ben visibile nella pagina di registrazione.";
-App::$strings["Accounts abandoned after x days"] = "Account abbandonati dopo X giorni";
-App::$strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Eviterà di sprecare risorse di sistema controllando se i siti esterni hanno account abbandonati. Immettere 0 per non imporre nessun limite di tempo.";
-App::$strings["Allowed friend domains"] = "Domini fidati e consentiti";
-App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Elenco separato da virglola dei domini che possono stabilire amicizie con questo sito. Sono accettati caratteri jolly. Lascia vuoto per accettare connessioni da qualsiasi dominio.";
-App::$strings["Allowed email domains"] = "Domini email consentiti";
-App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Elenco separato da virgola dei domini permessi come indirizzi email in fase di registrazione. Sono accettati caratteri jolly. Lascia vuoto per accettare qualsiasi dominio email";
-App::$strings["Not allowed email domains"] = "Domini email non consentiti";
-App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Elenco separato da virgola dei domini permessi come indirizzi email in fase di registrazione a questo sito. Sono accettati caratteri jolly. Lascalo vuoto per accettare qualsiasi dominio.";
-App::$strings["Block public"] = "Blocca pagine pubbliche";
-App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Seleziona per impedire di vedere le pagine personali di questo sito a chi non ha effettuato l'accesso.";
-App::$strings["Verify Email Addresses"] = "Verifica l'indirizzo email";
-App::$strings["Check to verify email addresses used in account registration (recommended)."] = "Attiva per richiedere la verifica degli indirizzi email dei nuovi utenti (consigliato).";
-App::$strings["Force publish"] = "Forza la publicazione del profilo";
-App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Seleziona per mostrare nell'elenco pubblico <strong>tutti</strong> i profili registrati su questo sito.";
-App::$strings["Disable discovery tab"] = "Disabilita la funzione 'scopri'";
-App::$strings["Remove the tab in the network view with public content pulled from sources chosen for this site."] = "Nell'area della rete personale non comparirà più la scheda con i contenuti acquisiti da altri siti.";
-App::$strings["No login on Homepage"] = "Non mostrare il login sulla homepage";
-App::$strings["Check to hide the login form from your sites homepage when visitors arrive who are not logged in (e.g. when you put the content of the homepage in via the site channel)."] = "Per nascondere la possibilità di fare login ai visitatori (per esempio, quando il contenuto della homepage del sito è alimentato da un canale).";
-App::$strings["Proxy user"] = "Utente proxy";
-App::$strings["Proxy URL"] = "URL proxy";
-App::$strings["Network timeout"] = "Timeout rete";
-App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valore in secondi. Imposta a 0 per illimitato (sconsigliato).";
-App::$strings["Delivery interval"] = "Recapito ritardato";
-App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Numero di secondi di cui può essere ritardato il recapito, per ridurre il carico di sistema. Consigliati: 4-5 secondi per hosting condiviso, 2-3 per i VPS, 0-1 per grandi server dedicati.";
-App::$strings["Poll interval"] = "Intervallo di polling";
-App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Numero di secondi di cui può essere ritardato il polling in background, per ridurre il carico del sistema. Se 0, verrà usato lo stesso valore del 'Recapito ritardato'.";
-App::$strings["Maximum Load Average"] = "Carico massimo medio";
-App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Carico di sistema massimo perché i processi di recapito e polling siano ritardati - il valore predefinito è 50.";
-App::$strings["Expiration period in days for imported (matrix/network) content"] = "Scadenza dei contenuti importati da altri siti (in giorni)";
-App::$strings["0 for no expiration of imported content"] = "0 per non avere scadenza";
-App::$strings["No server found"] = "Server non trovato";
-App::$strings["ID"] = "ID";
-App::$strings["for channel"] = "per canale";
-App::$strings["on server"] = "sul server";
-App::$strings["Status"] = "Stato";
-App::$strings["Server"] = "Server";
-App::$strings["Update has been marked successful"] = "L'aggiornamento è stato marcato come eseguito.";
-App::$strings["Executing %s failed. Check system logs."] = "Fallita l'esecuzione di %s. Maggiori informazioni sui log di sistema.";
-App::$strings["Update %s was successfully applied."] = "L'aggiornamento %s è terminato correttamente.";
-App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "L'aggiornamento %s non ha dato risposta. Impossibile determinare se è terminato correttamente.";
-App::$strings["Update function %s could not be found."] = "Impossibile trovare la funzione di aggiornamento %s";
-App::$strings["No failed updates."] = "Nessun aggiornamento fallito.";
-App::$strings["Failed Updates"] = "Aggiornamenti falliti.";
-App::$strings["Mark success (if update was manually applied)"] = "Marca come eseguito (se applicato manualmente).";
-App::$strings["Attempt to execute this update step automatically"] = "Tenta di eseguire in automatico questo passaggio dell'aggiornamento.";
-App::$strings["Queue Statistics"] = "Statistiche della coda";
-App::$strings["Total Entries"] = "Totale";
-App::$strings["Priority"] = "Priorità";
-App::$strings["Destination URL"] = "URL di destinazione";
-App::$strings["Mark hub permanently offline"] = "Questo hub è definitivamente offline";
-App::$strings["Empty queue for this hub"] = "Svuota la coda per questo hub";
-App::$strings["Last known contact"] = "Ultimo scambio dati";
-App::$strings["%s user blocked/unblocked"] = array(
- 0 => "%s utente bloccato/sbloccato",
- 1 => "%s utenti bloccati/sbloccati",
-);
-App::$strings["%s user deleted"] = array(
- 0 => "%s utente cancellato",
- 1 => "%s utenti cancellati",
-);
-App::$strings["Account not found"] = "Account non trovato";
-App::$strings["User '%s' blocked"] = "Utente '%s' bloccato";
-App::$strings["User '%s' unblocked"] = "Utente '%s' sbloccato";
-App::$strings["Users"] = "Utenti";
-App::$strings["select all"] = "seleziona tutti";
-App::$strings["User registrations waiting for confirm"] = "Richieste di registrazione in attesa di conferma";
-App::$strings["Request date"] = "Data richiesta";
-App::$strings["No registrations."] = "Nessuna registrazione.";
-App::$strings["Approve"] = "Approva";
-App::$strings["Deny"] = "Nega";
-App::$strings["Block"] = "Blocca";
-App::$strings["Unblock"] = "Sblocca";
-App::$strings["Register date"] = "Data registrazione";
-App::$strings["Last login"] = "Ultimo accesso";
-App::$strings["Expires"] = "Con scadenza";
-App::$strings["Service Class"] = "Classe dell'account";
-App::$strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Gli utenti selezionati saranno eliminati!\\n\\nTutto quello che gli utenti hanno pubblicato su questo sito sarà permanentemente eliminato!\\n\\nConfermi?";
-App::$strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "L'utente {0} sarà eliminato!\\n\\nTutto quello che ha pubblicato su questo sito sarà permanentemente eliminato!\\n\\nConfermi?";
-App::$strings["%s channel censored/uncensored"] = array(
- 0 => "Censura modificata per %s canale",
- 1 => "Censura modificata per %s canali",
-);
-App::$strings["%s channel deleted"] = array(
- 0 => "%s canale è stato rimosso",
- 1 => "%s canali sono stati rimossi",
-);
-App::$strings["Channel not found"] = "Canale non trovato";
-App::$strings["Channel '%s' deleted"] = "Il canale '%s' è stato rimosso";
-App::$strings["Channel '%s' uncensored"] = "Rimossa la censura dal canale '%s'";
-App::$strings["Channel '%s' censored"] = "Applicata una censura al canale '%s'";
-App::$strings["Censor"] = "Applica una censura";
-App::$strings["Uncensor"] = "Rimuovi la censura";
-App::$strings["UID"] = "UID";
-App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "I canali selezionati saranno rimossi!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questi canali sarà irreversibilmente eliminato!\\n\\nVuoi confermare?";
-App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Il canale {0} sarà rimosso!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questo canale sarà irreversibilmente eliminato!\\n\\nVuoi confermare?";
-App::$strings["Plugin %s disabled."] = "Plugin %s non attivo.";
-App::$strings["Plugin %s enabled."] = "Plugin %s attivo.";
-App::$strings["Disable"] = "Disattiva";
-App::$strings["Enable"] = "Attiva";
-App::$strings["Toggle"] = "Attiva/disattiva";
-App::$strings["Author: "] = "Autore:";
-App::$strings["Maintainer: "] = "Gestore:";
-App::$strings["No themes found."] = "Nessun tema trovato.";
-App::$strings["Screenshot"] = "Istantanea dello schermo";
-App::$strings["[Experimental]"] = "[Sperimentale]";
-App::$strings["[Unsupported]"] = "[Non supportato]";
-App::$strings["Log settings updated."] = "Impostazioni di log aggiornate.";
-App::$strings["Clear"] = "Pulisci";
-App::$strings["Debugging"] = "Debugging";
-App::$strings["Log file"] = "File di log";
-App::$strings["Must be writable by web server. Relative to your Red top-level directory."] = "Deve essere scrivibile dal web server. La posizione è relativa alla cartella dove è installato Hubzilla.";
-App::$strings["Log level"] = "Livello di log";
-App::$strings["New Profile Field"] = "Nuovo campo del profilo";
-App::$strings["Field nickname"] = "Nome breve del campo";
-App::$strings["System name of field"] = "Nome di sistema del campo";
-App::$strings["Input type"] = "Tipo di dati";
-App::$strings["Field Name"] = "Nome del campo";
-App::$strings["Label on profile pages"] = "Etichetta da mostrare sulla pagina del profilo";
-App::$strings["Help text"] = "Testo di aiuto";
-App::$strings["Additional info (optional)"] = "Informazioni aggiuntive (opzionali)";
-App::$strings["Field definition not found"] = "Impossibile trovare la definizione del campo";
-App::$strings["Edit Profile Field"] = "Modifica campo del profilo";
-App::$strings["Unable to find your hub."] = "Impossibile raggiungere il tuo hub.";
-App::$strings["Post successful."] = "Inviato!";
-App::$strings["Edit Block"] = "Modifica il riquadro";
-App::$strings["Delete block?"] = "Vuoi eliminare questo riquadro?";
-App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "È stato superato il numero massimo giornaliero di registrazioni a questo sito. Riprova domani!";
-App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Impossibile proseguire. Devi prima accettare le Condizioni d'Uso del servizio.";
-App::$strings["Passwords do not match."] = "Le password non corrispondono.";
-App::$strings["Registration successful. Please check your email for validation instructions."] = "La registrazione è terminata correttamente. Per continuare controlla l'email che ti è stata inviata.";
-App::$strings["Your registration is pending approval by the site owner."] = "La tua richiesta è in attesa di approvazione da parte dell'amministratore del sito.";
-App::$strings["Your registration can not be processed."] = "La tua registrazione non puo' essere processata.";
-App::$strings["Registration on this site/hub is by approval only."] = "La registrazione su questo sito è soggetta ad approvazione.";
-App::$strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">Registrati su un altro server affiliato</a>";
-App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Questo sito ha superato il numero di registrazioni giornaliere consentite. Prova di nuovo domani.";
-App::$strings["Terms of Service"] = "Condizioni d'Uso";
-App::$strings["I accept the %s for this website"] = "Accetto le %s di questo sito";
-App::$strings["I am over 13 years of age and accept the %s for this website"] = "Ho più di 13 anni e accetto le %s di questo sito";
-App::$strings["Membership on this site is by invitation only."] = "Per registrarsi su questo sito è necessario un invito.";
-App::$strings["Please enter your invitation code"] = "Inserisci il codice dell'invito";
-App::$strings["Your email address"] = "Il tuo indirizzo email";
-App::$strings["Choose a password"] = "Scegli una password";
-App::$strings["Please re-enter your password"] = "Ripeti la password per verifica";
-App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "Non è possibile eliminare il tuo account prima di 48 ore dall'ultimo cambio password.";
-App::$strings["Remove This Account"] = "Elimina questo account";
-App::$strings["WARNING: "] = "ATTENZIONE:";
-App::$strings["This account and all its channels will be completely removed from the network. "] = "Questo account e tutti i suoi canali saranno completamente eliminati dalla rete.";
-App::$strings["This action is permanent and can not be undone!"] = "Questo comando è definitivo e non può essere annullato!";
-App::$strings["Please enter your password for verification:"] = "Inserisci la tua password per verifica:";
-App::$strings["Remove this account, all its channels and all its channel clones from the network"] = "Elimina dalla rete questo account, tutti i suoi canali e ANCHE tutti gli eventuali canali clonati.";
-App::$strings["By default only the instances of the channels located on this hub will be removed from the network"] = "A meno che tu non lo richieda espressamente, solo i canali presenti su questo server saranno rimossi dalla rete.";
-App::$strings["Unable to locate original post."] = "Impossibile trovare il messaggio originale.";
-App::$strings["Empty post discarded."] = "L'articolo vuoto è stato ignorato.";
-App::$strings["Executable content type not permitted to this channel."] = "I contenuti eseguibili non sono permessi su questo canale.";
-App::$strings["System error. Post not saved."] = "Errore di sistema. Articolo non salvato.";
-App::$strings["Unable to obtain post information from database."] = "Impossibile caricare l'articolo dal database.";
-App::$strings["You have reached your limit of %1$.0f top level posts."] = "Hai raggiunto il limite massimo di %1$.0f articoli sulla pagina principale.";
-App::$strings["You have reached your limit of %1$.0f webpages."] = "Hai raggiunto il limite massimo di %1$.0f pagine web.";
-App::$strings["[Embedded content - reload page to view]"] = "[Contenuto incorporato - ricarica la pagina per visualizzarlo correttamente]";
-App::$strings["Remote privacy information not available."] = "Le informazioni remote sulla privacy non sono disponibili.";
-App::$strings["Visible to:"] = "Visibile a:";
-App::$strings["Block Name"] = "Nome del riquadro";
-App::$strings["First Name"] = "Nome";
-App::$strings["Last Name"] = "Cognome";
-App::$strings["Nickname"] = "Nick";
-App::$strings["Full Name"] = "Nome e cognome";
-App::$strings["Profile Photo 16px"] = "Foto del profilo 16px";
-App::$strings["Profile Photo 32px"] = "Foto del profilo 32px";
-App::$strings["Profile Photo 48px"] = "Foto del profilo 48px";
-App::$strings["Profile Photo 64px"] = "Foto del profilo 64px";
-App::$strings["Profile Photo 80px"] = "Foto del profilo 80px";
-App::$strings["Profile Photo 128px"] = "Foto del profilo 128px";
-App::$strings["Timezone"] = "Fuso orario";
-App::$strings["Homepage URL"] = "Indirizzo home page";
-App::$strings["Birth Year"] = "Anno di nascita";
-App::$strings["Birth Month"] = "Mese di nascita";
-App::$strings["Birth Day"] = "Giorno di nascita";
-App::$strings["Birthdate"] = "Data di nascita";
-App::$strings["Conversation removed."] = "Conversazione rimossa.";
-App::$strings["No messages."] = "Nessun messaggio.";
-App::$strings["Delete conversation"] = "Elimina la conversazione";
-App::$strings["D, d M Y - g:i A"] = "D d M Y - G:i";
-App::$strings["Help with this feature"] = "La guida per questa funzionalità";
-App::$strings["Layout Name"] = "Nome layout";
-App::$strings["Comanche page description language help"] = "Guida di Comanche Page Description Language";
+App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s sta seguendo %3\$s di %2\$s";
App::$strings["Set your current mood and tell your friends"] = "Scegli il tuo umore attuale per mostrarlo agli amici";
-App::$strings["Total votes"] = "Voti totali";
-App::$strings["Average Rating"] = "Valutazione media";
-App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "Non è possibile eliminare un canale prima di 48 ore dall'ultimo cambio password.";
-App::$strings["Remove This Channel"] = "Elimina questo canale";
-App::$strings["This channel will be completely removed from the network. "] = "Questo canale sarà completamente eliminato dalla rete.";
-App::$strings["Remove this channel and all its clones from the network"] = "Rimuovi questo canale e tutti i suoi cloni dalla rete";
-App::$strings["By default only the instance of the channel located on this hub will be removed from the network"] = "L'impostazione predefinita è che sia eliminata solo l'istanza del canale presente su questo hub, non gli eventuali cloni";
-App::$strings["is now connected to"] = "ha come nuovo contatto";
-App::$strings["Could not access address book record."] = "Impossibile accedere alle informazioni della rubrica.";
-App::$strings["Refresh failed - channel is currently unavailable."] = "Il canale non è disponibile - impossibile aggiornare.";
-App::$strings["Channel has been unblocked"] = "Il canale è stato sbloccato";
-App::$strings["Channel has been blocked"] = "Il canale è stato bloccato";
-App::$strings["Unable to set address book parameters."] = "Impossibile impostare i parametri della rubrica.";
-App::$strings["Channel has been unignored"] = "Il canale non sarà più ignorato";
-App::$strings["Channel has been ignored"] = "Il canale sarà ignorato";
-App::$strings["Channel has been unarchived"] = "Il canale non è più archiviato";
-App::$strings["Channel has been archived"] = "Il canale è stato archiviato";
-App::$strings["Channel has been unhidden"] = "Il canale non è più nascosto";
-App::$strings["Channel has been hidden"] = "Il canale è stato nascosto";
-App::$strings["Channel has been approved"] = "Il canale è stato approvato";
-App::$strings["Channel has been unapproved"] = "Il canale non è più approvato";
-App::$strings["Connection has been removed."] = "Il contatto è stato rimosso.";
-App::$strings["View %s's profile"] = "Guarda il profilo di %s";
-App::$strings["Refresh Permissions"] = "Modifica i permessi";
-App::$strings["Fetch updated permissions"] = "Guarda e modifica i permessi assegnati";
-App::$strings["Recent Activity"] = "Attività recenti";
-App::$strings["View recent posts and comments"] = "Leggi i post recenti e i commenti";
-App::$strings["Block (or Unblock) all communications with this connection"] = "Blocca ogni interazione con questo contatto (abilita/disabilita)";
-App::$strings["Unignore"] = "Non ignorare";
-App::$strings["Ignore"] = "Ignora";
-App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Ignora tutte le comunicazioni in arrivo da questo contatto (abilita/disabilita)";
-App::$strings["Unarchive"] = "Non archiviare";
-App::$strings["Archive"] = "Archivia";
-App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Archivia questo contatto (abilita/disabilita) - segna il canale come non più attivo ma ne conserva i contenuti";
-App::$strings["Unhide"] = "Non nascondere";
-App::$strings["Hide"] = "Nascondi";
-App::$strings["Hide or Unhide this connection from your other connections"] = "Nascondi questo contatto a tutti gli altri (abilita/disabilita)";
-App::$strings["Delete this connection"] = "Elimina questo contatto";
-App::$strings["Approve this connection"] = "Approva questo contatto";
-App::$strings["Accept connection to allow communication"] = "Entra in contatto per poter comunicare";
-App::$strings["Connections: settings for %s"] = "Contatti: impostazioni per %s";
-App::$strings["Apply these permissions automatically"] = "Applica automaticamente questi permessi";
-App::$strings["Apply the permissions indicated on this page to all new connections."] = "Applica i permessi indicati su questa pagina a tutti i nuovi contatti.";
-App::$strings["Slide to adjust your degree of friendship"] = "Trascina per restringere il grado di amicizia da mostrare";
-App::$strings["Default permissions for your channel type have (just) been applied. They have not yet been submitted. Please review the permissions on this page and make any desired changes at this time. This new connection may <em>not</em> be able to communicate with you until you submit this page, which will install and apply the selected permissions."] = "I tuoi nuovi contatti potrebbero <em>non</em> essere abilitati a comunicare con te finché non salverai questa pagina (perché non hai permessi impostati). Sono stati selezionati i permessi standard per il tipo di canale che hai scelto. Non sono stati ancora salvati però. Puoi verificare le impostazioni e fare i cambiamenti che preferisci prima di salvare. ";
-App::$strings["inherited"] = "derivato";
-App::$strings["Connection has no individual permissions!"] = "Non hai assegnato permessi individuali a questo contatto!";
-App::$strings["This may be appropriate based on your <a href=\"settings\">privacy settings</a>, though you may wish to review the \"Advanced Permissions\"."] = "Questo corrisponde alle tue <a href='settings'>impostazioni di privacy</a>, ma puoi anche dare un'occhiata ai 'Permessi avanzati' per opzioni più dettagliate.";
-App::$strings["Profile Visibility"] = "Visibilità del profilo";
-App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Seleziona il profilo che vuoi mostrare a %s quando visita il tuo profilo in modo sicuro.";
-App::$strings["Contact Information / Notes"] = "Informazioni e annotazioni sul contatto";
-App::$strings["Edit contact notes"] = "Modifica le informazioni sul contatto";
-App::$strings["Their Settings"] = "Permessi concessi a te";
-App::$strings["My Settings"] = "I permessi che concedo";
-App::$strings["Default permissions for this channel type have (just) been applied. They have <em>not</em> been saved and there are currently no stored default permissions. Please review/edit the applied settings and click [Submit] to finalize."] = "A questo canale sono stati applicati i permessi predefiniti ma <em>non</em> sono stati salvati. In realtà non esistono ancora dei permessi predefiniti da usare su questo sito. Controlla e verifica le impostazioni, [Salva] per confermare.";
-App::$strings["Clear/Disable Automatic Permissions"] = "Rimuovi/disabilita i permessi automatici";
-App::$strings["Forum Members"] = "Membro di un forum";
-App::$strings["Soapbox"] = "Comunicati e annunci";
-App::$strings["Full Sharing (typical social network permissions)"] = "Condivisione completa (permessi tipici dei social network)";
-App::$strings["Cautious Sharing "] = "Condivisione prudente";
-App::$strings["Follow Only"] = "Follower";
-App::$strings["Individual Permissions"] = "Permessi individuali";
-App::$strings["Some permissions may be inherited from your channel <a href=\"settings\">privacy settings</a>, which have higher priority than individual settings. Changing those inherited settings on this page will have no effect."] = "I permessi nelle <a href=\"settings\">impostazioni di privacy</a> hanno priorità su quelli mostrati in questa pagina. Non avrà alcun effetto cambiarli qui, se sono indicati come derivati.";
-App::$strings["Advanced Permissions"] = "Permessi avanzati";
-App::$strings["Simple Permissions (select one and submit)"] = "Permessi semplificati (seleziona e salva)";
-App::$strings["Visit %s's profile - %s"] = "Guarda il profilo di %s - %s";
-App::$strings["Block/Unblock contact"] = "Blocca/sblocca contatto";
-App::$strings["Ignore contact"] = "Ignora il contatto";
-App::$strings["Repair URL settings"] = "Ripara le impostazioni URL";
-App::$strings["View conversations"] = "Leggi le conversazioni";
-App::$strings["Delete contact"] = "Elimina contatto";
-App::$strings["Last update:"] = "Ultimo aggiornamento:";
-App::$strings["Update public posts"] = "Aggiorna gli articoli pubblici";
-App::$strings["Update now"] = "Aggiorna adesso";
-App::$strings["Currently blocked"] = "Attualmente bloccato";
-App::$strings["Currently ignored"] = "Attualmente ignorato";
-App::$strings["Currently archived"] = "Attualmente archiviato";
-App::$strings["Currently pending"] = "Attualmente da approvare";
-App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Non è possibile effettuare login con l'OpenID che hai fornito. Per favore controlla che sia scritto correttamente.";
-App::$strings["The error message was:"] = "Messaggio di errore ricevuto:";
-App::$strings["Authentication failed."] = "Autenticazione fallita.";
-App::$strings["Remote Authentication"] = "Autenticazione a distanza";
-App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Inserisci l'indirizzo del tuo canale (ad esempio lucia@esempio.com)";
-App::$strings["Authenticate"] = "Autenticazione";
-App::$strings["Unable to lookup recipient."] = "Impossibile associare un destinatario.";
-App::$strings["Unable to communicate with requested channel."] = "Impossibile comunicare con il canale richiesto.";
-App::$strings["Cannot verify requested channel."] = "Impossibile verificare il canale richiesto.";
-App::$strings["Selected channel has private message restrictions. Send failed."] = "Il canale ha delle regole restrittive per la ricezione dei messaggi privati. Invio fallito.";
-App::$strings["Message deleted."] = "Messaggio eliminato.";
-App::$strings["Message recalled."] = "Messaggio revocato.";
-App::$strings["Send Private Message"] = "Invia un messaggio privato";
-App::$strings["To:"] = "A:";
-App::$strings["Subject:"] = "Oggetto:";
-App::$strings["Send"] = "Invia";
-App::$strings["Message not found."] = "Messaggio non trovato.";
-App::$strings["Delete message"] = "Elimina il messaggio";
-App::$strings["Recall message"] = "Revoca il messaggio";
-App::$strings["Message has been recalled."] = "Il messaggio è stato revocato.";
-App::$strings["Private Conversation"] = "Conversazione privata";
-App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Non è disponibile alcuna tecnologia per comunicare in modo sicuro. <strong>Se possibile</strong>, prova a rispondere direttamente dalla pagina del profilo del mittente.";
-App::$strings["Send Reply"] = "Invia la risposta";
-App::$strings["Invalid request identifier."] = "L'identificativo della richiesta non è valido.";
-App::$strings["Discard"] = "Rifiuta";
-App::$strings["Please login."] = "Effettua l'accesso.";
-App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "L'autenticazione magica dal tuo sito non è disponibile. Hai accesso solamente a questo sito. Puoi provare a disconnetterti per tentare di nuovo.";
+App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Nessun suggerimento disponibile. Se questo sito è nuovo, riprova tra 24 ore.";
+App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha taggato %3\$s di %2\$s con %4\$s";
+App::$strings["Tag removed"] = "Tag rimosso";
+App::$strings["Remove Item Tag"] = "Rimuovi il tag";
+App::$strings["Select a tag to remove: "] = "Seleziona un tag da rimuovere: ";
+App::$strings["No such group"] = "Impossibile trovare l'insieme";
+App::$strings["No such channel"] = "Canale sconosciuto";
+App::$strings["Search Results For:"] = "Cerca risultati con:";
+App::$strings["Collection is empty"] = "L'insieme di canali è vuoto";
+App::$strings["Collection: "] = "Insieme:";
+App::$strings["Connection: "] = "Contatto:";
+App::$strings["Invalid connection."] = "Contatto non valido.";
+App::$strings["OpenID protocol error. No ID returned."] = "Errore del protocollo OpenID. Nessun ID ricevuto in risposta.";
App::$strings["Add a Channel"] = "Aggiungi un canale";
App::$strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "I contenuti che pubblichi sono mostrati nel tuo \"canale\". Un canale può essere usato come bacheca personale, come blog, oppure può essere un forum di discussione, un gruppo di interesse, una pagina di celebrità e molto altro. Puoi creare tanti canali quanti ne permette il tuo sito.";
App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Per esempio: \"Mario Rossi\", \"Lisa e le sue ricette\", \"Il campionato\", \"Il gruppo di escursionismo\"";
App::$strings["Choose a short nickname"] = "Scegli un nome breve";
App::$strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "Il nome breve sarà usato per creare un indirizzo facile da ricordare per il tuo canale (simile a una email). Così potrai condividerlo e gli altri potranno trovarti.";
App::$strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "Oppure <a href=\"import\">importa un tuo canale esistente</a> da un altro server/hub";
-App::$strings["Please choose a channel type (such as social networking or community forum) and privacy requirements so we can select the best permissions for you"] = "Descrivi il tipo di canale che vorresti creare (per esempio se ti interessa più usarlo come social network, come un forum di discussione...) e il tipo di privacy che preferisci. Hubzilla sceglierà per te i permessi più adatti.";
+App::$strings["Please choose a channel type (such as social networking or community forum) and privacy requirements so we can select the best permissions for you"] = "Descrivi il tipo di canale che vorresti creare (per esempio se ti interessa più usarlo come social network, come un forum di discussione...) e il tipo di privacy che preferisci. RedMatrix sceglierà per te i permessi più adatti.";
App::$strings["Channel Type"] = "Tipo di canale";
App::$strings["Read more about roles"] = "Maggiori informazioni sui ruoli";
-App::$strings["App installed."] = "App installata";
-App::$strings["Malformed app."] = "App non corretta";
-App::$strings["Embed code"] = "Inserisci del codice";
-App::$strings["Edit App"] = "Modifica app";
-App::$strings["Create App"] = "Crea una app";
-App::$strings["Name of app"] = "Nome app";
-App::$strings["Location (URL) of app"] = "Indirizzo (URL) della app";
-App::$strings["Photo icon URL"] = "URL icona";
-App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixel - facoltativa";
-App::$strings["Version ID"] = "ID versione";
-App::$strings["Price of app"] = "Prezzo app";
-App::$strings["Location (URL) to purchase app"] = "Indirizzo (URL) per acquistare la app";
-App::$strings["sent you a private message"] = "ti ha inviato un messaggio privato";
-App::$strings["added your channel"] = "ha aggiunto il tuo canale";
-App::$strings["posted an event"] = "ha creato un evento";
-App::$strings["No such group"] = "Impossibile trovare l'insieme";
-App::$strings["No such channel"] = "Canale sconosciuto";
-App::$strings["Search Results For:"] = "Cerca risultati con:";
-App::$strings["Collection is empty"] = "L'insieme di canali è vuoto";
-App::$strings["Collection: "] = "Insieme:";
-App::$strings["Connection: "] = "Contatto:";
-App::$strings["Invalid connection."] = "Contatto non valido.";
-App::$strings["Ipsum Lorem"] = "Ipsum Lorem";
-App::$strings["Bookmark added"] = "Segnalibro aggiunto";
-App::$strings["My Bookmarks"] = "I miei segnalibri";
-App::$strings["My Connections Bookmarks"] = "I segnalibri dei miei contatti";
-App::$strings["Insufficient permissions. Request redirected to profile page."] = "Permessi insufficienti. Sarà visualizzata la pagina del profilo.";
-App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Nessun suggerimento disponibile. Se questo sito è nuovo, riprova tra 24 ore.";
-App::$strings["Poll"] = "Sondaggio";
-App::$strings["View Results"] = "Guarda i risultati";
-App::$strings["No service class restrictions found."] = "Non esistono restrizioni su questa classe di account.";
-App::$strings["Files: shared with me"] = "File: condivisi con me";
-App::$strings["NEW"] = "NOVITÀ";
-App::$strings["Remove all files"] = "Elimina tutti i file";
-App::$strings["Remove this file"] = "Elimina questo file";
+App::$strings["Thing updated"] = "L'Oggetto è stato aggiornato";
+App::$strings["Object store: failed"] = "Impossibile memorizzare l'oggetto.";
+App::$strings["Thing added"] = "L'Oggetto è stato aggiunto";
+App::$strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
+App::$strings["Show Thing"] = "Mostra l'Oggetto";
+App::$strings["item not found."] = "non trovato.";
+App::$strings["Edit Thing"] = "Modifica l'Oggetto";
+App::$strings["Select a profile"] = "Scegli un profilo";
+App::$strings["Post an activity"] = "Pubblica un'attività";
+App::$strings["Only sends to viewers of the applicable profile"] = "Invia solo a chi segue il relativo canale";
+App::$strings["Name of thing e.g. something"] = "Nome dell'Oggetto";
+App::$strings["URL of thing (optional)"] = "Indirizzo web dell'Oggetto (opzionale)";
+App::$strings["URL for photo of thing (optional)"] = "Indirizzo di un'immagine dell'Oggetto (facoltativo)";
+App::$strings["Add Thing to your Profile"] = "Aggiungi l'Oggetto al tuo profilo";
+App::$strings["Export Channel"] = "Esporta il canale";
+App::$strings["Export your basic channel information to a file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new server hub, but does not contain your content."] = "Esporta le informazioni di base del canale in un file. In pratica è un salvataggio delle tue connessioni, dei permessi che hai assegnato e del tuo profilo che così potrà essere importato su un altro server/hub. Il file non includerà i tuoi post e altri contenuti che hai creato o caricato.";
+App::$strings["Export Content"] = "Esporta i contenuti";
+App::$strings["Export your channel information and recent content to a JSON backup that can be restored or imported to another server hub. This backs up all of your connections, permissions, profile data and several months of posts. This file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Esporta il tuo canale e i contenuti recenti in un file di salvataggio che potrà essere importato su un altro server/hub. Sarà un backup dei tuoi contatti, dei permessi che hai assegnato, dei dati del profilo e dei post degli ultimi mesi. Il file potrebbe essere MOLTO grande. Sarà necessario attendere con pazienza - saranno necessari molti minuti prima che inizi lo scaricamento.";
+App::$strings["Export your posts from a given year or month:"] = "Puoi anche esportare i post relativi a un certo mese o anno";
+App::$strings["You may also export your posts and conversations for a particular year or month. Click on one of the recent years or months below."] = "Puoi anche esportare i tuoi post e le conversazioni di un certo mese o anno. Clicca qua sotto su un mese o su un anno recente.";
+App::$strings["Jan"] = "Gen";
+App::$strings["Feb"] = "Feb";
+App::$strings["Mar"] = "Mar";
+App::$strings["Apr"] = "Apr";
+App::$strings["Jun"] = "Giu";
+App::$strings["Jul"] = "Lug";
+App::$strings["Aug"] = "Ago";
+App::$strings["Sep"] = "Set";
+App::$strings["Oct"] = "Ott";
+App::$strings["Nov"] = "Nov";
+App::$strings["Dec"] = "Dic";
+App::$strings["If the export fails (possibly due to memory exhaustion on your server hub), please try again selecting a more limited date range."] = "Se l'esportazione fallisce (di solito è per mancanza di memoria sullo hub), puoi provare nuovamente, ma scegliendo un intervallo di date più stretto.";
+App::$strings["Or adjust the date in your browser location bar to select other dates. For example the year 2013; <a href=\"%1\$s/2013\">%1\$s/2013</a> or the month September 2013; <a href=\"%1\$s/2013/9\">%1\$s/2013/9</a>"] = "Oppure cambia le date nella barra degli indirizzi del tuo browser per selezionare altre date. Per esempio, l'anno 2013; <a href=\"%1\$s/2013\">%1\$s/2013</a> o il mese di settembre 2013; <a href=\"%1\$s/2013/9\">%1\$s/2013/9</a>";
+App::$strings["Please visit"] = "Visita";
+App::$strings["on another hub to import the backup files(s)."] = "su un altro hub per importare il backup.";
+App::$strings["We advise you to clone the channel on the new hub first and than to import the backup file(s) (from the same channel) in chronological order. Importing the backup files into another channel will certainly give permission issues."] = "Il consiglio è di clonare per prima cosa il canale sul nuovo hub e poi importare i file di backup creati dal canale originale in ordine cronologico. Importare contenuti di canali differenti darà sicuramente problemi sui diritti.";
+App::$strings["[Embedded content - reload page to view]"] = "[Contenuto incorporato - ricarica la pagina per visualizzarlo correttamente]";
+App::$strings["No connections."] = "Nessun contatto.";
+App::$strings["Visit %s's profile [%s]"] = "Visita il profilo di %s [%s]";
+App::$strings["Source of Item"] = "Sorgente";
+App::$strings["Total votes"] = "Totale voti";
+App::$strings["Average Rating"] = "Valutazione media";
+App::$strings["Page Title"] = "Titolo della pagina";
+App::$strings["Xchan Lookup"] = "Ricerca canale";
+App::$strings["Lookup xchan beginning with (or webbie): "] = "Cerca un canale (o un webbie) che inizia per:";
+App::$strings["invalid target signature"] = "la firma ricevuta non è valida";
App::$strings["Schema Default"] = "Schema predefinito";
-App::$strings["Sans-Serif"] = "Sans-serif";
+App::$strings["Sans-Serif"] = "Sans-Serif";
App::$strings["Monospace"] = "Monospace";
App::$strings["Theme settings"] = "Impostazioni del tema";
App::$strings["Set scheme"] = "Schema";
-App::$strings["Set font-size for posts and comments"] = "Dimensioni del carattere per articoli e commenti";
+App::$strings["Set font-size for posts and comments"] = "Dimensioni del carattere per post e commenti";
App::$strings["Set font face"] = "Tipo di carattere";
-App::$strings["Set iconset"] = "Icone";
+App::$strings["Set iconset"] = "Set di icone";
App::$strings["Set big shadow size, default 15px 15px 15px"] = "Ombra grande, predefinita 15px 15px 15px";
App::$strings["Set small shadow size, default 5px 5px 5px"] = "Ombra piccola, predefinita 5px 5px 5px";
App::$strings["Set shadow color, default #000"] = "Colore dell'ombra, predefinito #000";
App::$strings["Set radius size, default 5px"] = "Raggio degli angoli, predefinito 5px";
-App::$strings["Set line-height for posts and comments"] = "Altezza della riga per articoli e commenti";
+App::$strings["Set line-height for posts and comments"] = "Altezza della riga per post e commenti";
App::$strings["Set background image"] = "Immagine di sfondo";
-App::$strings["Set background attachment"] = "Allega uno sfondo";
+App::$strings["Set background attachment"] = "Imposta un allegato di sfondo";
App::$strings["Set background color"] = "Colore di sfondo";
-App::$strings["Set section background image"] = "Immagine di sfondo della sezione";
-App::$strings["Set section background color"] = "Colore di sfondo dell'area principale";
+App::$strings["Set section background image"] = "Immagine di sfondo dei contenuti";
+App::$strings["Set section background color"] = "Colore di sfondo dei contenuti";
App::$strings["Set color of items - use hex"] = "Colore degli elementi della pagina - esadecimale";
App::$strings["Set color of links - use hex"] = "Colore dei link - esadecimale";
-App::$strings["Set max-width for items. Default 400px"] = "Larghezza massima degli elementi della pagina. Predefinita: 400px";
-App::$strings["Set min-width for items. Default 240px"] = "Larghezza minima degli elementi della pagina. Predefinita: 240px";
-App::$strings["Set the generic content wrapper width. Default 48%"] = "Larghezza di tutta l'area dei contenuti. Predefinita: 48%";
+App::$strings["Set max-width for items. Default 400px"] = "Larghezza massima degli elementi della pagina. Predefinita 400px";
+App::$strings["Set min-width for items. Default 240px"] = "Larghezza minima degli elementi della pagina. Predefinita 240px";
+App::$strings["Set the generic content wrapper width. Default 48%"] = "Larghezza dell'area dei contenuti. Predefinita: 48%";
App::$strings["Set color of fonts - use hex"] = "Colore dei caratteri - esadecimale";
-App::$strings["Set background-size element"] = "Background-size element";
+App::$strings["Set background-size element"] = "Background-size";
App::$strings["Item opacity"] = "Opacità degli elementi della pagina";
-App::$strings["Display post previews only"] = "Mostra le anteprime solo degli articoli";
+App::$strings["Display post previews only"] = "Mostra l'anteprima solo dei post";
App::$strings["Display side bar on channel page"] = "Mostra la colonna laterale sulla pagina del canale";
App::$strings["Colour of the navigation bar"] = "Colore della barra di navigazione";
App::$strings["Item float"] = "Float degli oggetti della pagina";
-App::$strings["Left offset of the section element"] = "Margine sinistro dell'area principale";
-App::$strings["Right offset of the section element"] = "Margine destro dell'area principale";
-App::$strings["Section width"] = "Larghezza dell'area principale";
-App::$strings["Left offset of the aside"] = "Margine sinistro della colonna laterale";
-App::$strings["Right offset of the aside element"] = "Margine destro della colonna laterale";
-App::$strings["Light (Hubzilla default)"] = "Light (predefinito)";
+App::$strings["Left offset of the section element"] = "Margine sinistro dei contenuti";
+App::$strings["Right offset of the section element"] = "Margine destro dei contenuti";
+App::$strings["Section width"] = "Larghezza dei contenuti";
+App::$strings["Left offset of the aside"] = "Margine sinistro nella colonna laterale";
+App::$strings["Right offset of the aside element"] = "Margine destro nella colonna laterale";
+App::$strings["Light (Red Matrix default)"] = "Light (predefinito)";
App::$strings["Select scheme"] = "Scegli uno schema";
App::$strings["Narrow navbar"] = "Barra di navigazione ristretta";
App::$strings["Navigation bar background color"] = "Barra di navigazione: Colore di sfondo";
@@ -2095,7 +2146,7 @@ App::$strings["Set the basic color for item icons"] = "Colore di base per le ico
App::$strings["Set the hover color for item icons"] = "Colore per le icone in mouse-over";
App::$strings["Set font-size for the entire application"] = "Dimensione font per tutto il sito";
App::$strings["Example: 14px"] = "Esempio: 14px";
-App::$strings["Set font-color for posts and comments"] = "Imposta il colore del carattere per articoli e commenti";
+App::$strings["Set font-color for posts and comments"] = "Imposta il colore del carattere per post e commenti";
App::$strings["Set radius of corners"] = "Raggio degli angoli stondati";
App::$strings["Set shadow depth of photos"] = "Profondità dell'ombra delle foto";
App::$strings["Set maximum width of content region in pixel"] = "Larghezza massima dell'area dei contenuti in pixel";
@@ -2106,7 +2157,7 @@ App::$strings["Set size of conversation author photo"] = "Dimensione foto dell'a
App::$strings["Set size of followup author photos"] = "Dimensione foto dei partecipanti alla conversazione";
App::$strings["Update %s failed. See error logs."] = "%s: aggiornamento fallito. Controlla i log di errore.";
App::$strings["Update Error at %s"] = "Errore di aggiornamento su %s";
-App::$strings["Create an account to access services and applications within the Hubzilla"] = "Registrati per accedere ai servizi e alle applicazioni di Hubzilla";
+App::$strings["Create an account to access services and applications within the Red Matrix"] = "Registrati per accedere ai servizi e alle applicazioni di RedMatrix";
App::$strings["Password"] = "Password";
App::$strings["Remember me"] = "Resta connesso";
App::$strings["Forgot your password?"] = "Hai dimenticato la password?";
@@ -2114,5 +2165,4 @@ App::$strings["toggle mobile"] = "attiva/disattiva versione mobile";
App::$strings["Website SSL certificate is not valid. Please correct."] = "Il certificato SSL del sito non è valido. Si prega di intervenire.";
App::$strings["[red] Website SSL error for %s"] = "[red] Errore SSL %s ";
App::$strings["Cron/Scheduled tasks not running."] = "Processi/cron non avviati.";
-App::$strings["[red] Cron tasks not running on %s"] = "[red] Processi non avviati su %s";
-App::$strings["Source of Item"] = "Sorgente dell'Elemento";
+App::$strings["[red] Cron tasks not running on %s"] = "[red] Processi cron non avviati su %s";
diff --git a/view/js/acl.js b/view/js/acl.js
index 162ada764..79699c589 100644
--- a/view/js/acl.js
+++ b/view/js/acl.js
@@ -11,30 +11,50 @@ function ACL(backend_url, preset) {
that.deny_cid = (preset[2] || []);
that.deny_gid = (preset[3] || []);
that.group_uids = [];
- that.nw = 4; //items per row. should be calulated from #acl-list.width
+ that.info = $("#acl-info");
+ that.list = $("#acl-list");
that.list_content = $("#acl-list-content");
that.item_tpl = unescape($(".acl-list-item[rel=acl-template]").html());
that.showall = $("#acl-showall");
+ that.onlyme = $("#acl-onlyme");
that.showlimited = $("#acl-showlimited");
+ that.acl_select = $("#acl-select");
+
+ that.preset = preset;
+ that.self = [];
// set the initial ACL lists in case the enclosing form gets submitted before the ajax loader completes.
that.on_submit();
- if (preset.length === 0) that.showall.removeClass("btn-default").addClass("btn-warning");
-
/*events*/
$(document).ready(function() {
- that.showall.click(that.on_showall);
- that.showlimited.click(that.on_showlimited);
- $(document).on('click','.acl-button-show',that.on_button_show);
- $(document).on('click','.acl-button-hide',that.on_button_hide);
- $("#acl-search").keypress(that.on_search);
-
- /* startup! */
- that.get(0,15000);
- that.on_submit();
+
+ that.acl_select.change(function(event) {
+ var option = that.acl_select.val();
+
+ if(option == 'public') { // public
+ that.on_showall(event);
+ }
+
+ if(option == 'onlyme') { // limited to one self
+ that.on_onlyme(event);
+ }
+
+ if(option == 'limited') { // limited to custom selection
+ that.on_showlimited(event);
+ }
+ });
+
+ $(document).on('click','.acl-button-show',that.on_button_show);
+ $(document).on('click','.acl-button-hide',that.on_button_hide);
+
+ $("#acl-search").keypress(that.on_search);
+
+ /* startup! */
+ that.get(0,15000);
+ that.on_submit();
});
}
@@ -72,33 +92,53 @@ ACL.prototype.on_search = function(event) {
that.kp_timer = setTimeout( that.search, 1000);
};
-ACL.prototype.on_showall = function(event) {
-
+ACL.prototype.on_onlyme = function(event) {
// preventDefault() isn't called here as we want state changes from update_view() to be applied to the radiobutton
event.stopPropagation();
- if (that.showall.hasClass("btn-warning")) {
- return false;
- }
- that.showall.removeClass("btn-default").addClass("btn-warning");
+ that.allow_cid = [that.self[0]];
+ that.allow_gid = [];
+ that.deny_cid = [];
+ that.deny_gid = [];
+
+ that.update_view(event.target.value);
+ that.on_submit();
+
+ return true; // return true so that state changes from update_view() will be applied
+};
+
+ACL.prototype.on_showall = function(event) {
+ // preventDefault() isn't called here as we want state changes from update_view() to be applied to the radiobutton
+ event.stopPropagation();
that.allow_cid = [];
that.allow_gid = [];
that.deny_cid = [];
that.deny_gid = [];
- that.update_view();
+ that.update_view(event.target.value);
that.on_submit();
return true; // return true so that state changes from update_view() will be applied
};
ACL.prototype.on_showlimited = function(event) {
- // Prevent the radiobutton from being selected, as the showlimited radiobutton
- // option is selected only by selecting show or hide options on channels or groups.
- event.preventDefault();
+ // preventDefault() isn't called here as we want state changes from update_view() to be applied to the radiobutton
event.stopPropagation();
- return false;
+
+ if(that.preset[0].length === 0 && that.preset[1].length === 0 && that.preset[2].length === 0 && that.preset[3].length === 0) {
+ that.preset[0] = [that.self[0]];
+ }
+
+ that.allow_cid = (that.preset[0] || []);
+ that.allow_gid = (that.preset[1] || []);
+ that.deny_cid = (that.preset[2] || []);
+ that.deny_gid = (that.preset[3] || []);
+
+ that.update_view(event.target.value);
+ that.on_submit();
+
+ return true; // return true so that state changes from update_view() will be applied
}
ACL.prototype.on_selectall = function(event) {
@@ -199,33 +239,43 @@ ACL.prototype.set_deny = function(itemid) {
that.update_view();
};
-ACL.prototype.update_radiobuttons = function(isPublic) {
-
- that.showall.prop('checked', isPublic);
- that.showlimited.prop('checked', !isPublic);
- that.showlimited.prop('disabled', isPublic);
+ACL.prototype.update_select = function(preset) {
+ that.showall.prop('selected', preset === 'public');
+ that.onlyme.prop('selected', preset === 'onlyme');
+ that.showlimited.prop('selected', preset === 'limited');
};
-ACL.prototype.update_view = function() {
- if (that.allow_gid.length === 0 && that.allow_cid.length === 0 &&
- that.deny_gid.length === 0 && that.deny_cid.length === 0) {
- // btn-warning indicates that the permissions are public, it was chosen because
- // that.showall used to be a normal button, which btn-warning is a bootstrap style for.
- that.showall.removeClass("btn-default").addClass("btn-warning");
- that.update_radiobuttons(true);
+ACL.prototype.update_view = function(value) {
+
+ if (that.allow_gid.length === 0 && that.allow_cid.length === 0 && that.deny_gid.length === 0 && that.deny_cid.length === 0) {
+ that.list.hide(); //hide acl-list
+ that.info.show(); //show acl-info
+ that.update_select('public');
- /* jot acl */
- $('#jot-perms-icon, #dialog-perms-icon').removeClass('fa-lock').addClass('fa-unlock');
- $('#jot-public').show();
- $('.profile-jot-net input').attr('disabled', false);
+ /* jot acl */
+ $('#jot-perms-icon, #dialog-perms-icon').removeClass('fa-lock').addClass('fa-unlock');
+ $('.profile-jot-net input').attr('disabled', false);
+
+ }
+
+ // if value != 'onlyme' we should fall through this one
+ else if (that.allow_gid.length === 0 && that.allow_cid.length === 1 && that.allow_cid[0] === that.self[0] && that.deny_gid.length === 0 && that.deny_cid.length === 0 && value === 'onlyme') {
+ that.list.hide(); //hide acl-list if
+ that.info.hide(); //show acl-info
+ that.update_select('onlyme');
+
+ /* jot acl */
+ $('#jot-perms-icon, #dialog-perms-icon').removeClass('fa-unlock').addClass('fa-lock');
+ $('.profile-jot-net input').attr('disabled', 'disabled');
+ }
- } else {
- that.showall.removeClass("btn-warning").addClass("btn-default");
- that.update_radiobuttons(false);
+ else {
+ that.list.show(); //show acl-list
+ that.info.hide(); //hide acl-info
+ that.update_select('limited');
/* jot acl */
$('#jot-perms-icon, #dialog-perms-icon').removeClass('fa-unlock').addClass('fa-lock');
- $('#jot-public').hide();
$('.profile-jot-net input').attr('disabled', 'disabled');
}
@@ -300,12 +350,11 @@ ACL.prototype.get = function(start, count, search) {
};
ACL.prototype.populate = function(data) {
- var height = Math.ceil(data.items.length / that.nw) * 42;
- that.list_content.height(height);
$(data.items).each(function(){
html = "<div class='acl-list-item {4} {7} {5}' title='{6}' id='{2}{3}'>"+that.item_tpl+"</div>";
html = html.format(this.photo, this.name, this.type, this.xid, '', this.self, this.link, this.taggable);
if (this.uids !== undefined) that.group_uids[this.xid] = this.uids;
+ if (this.self === 'abook-self') that.self[0] = this.xid;
//console.log(html);
that.list_content.append(html);
});
diff --git a/view/js/autocomplete.js b/view/js/autocomplete.js
index 33d825b55..59a9ed355 100644
--- a/view/js/autocomplete.js
+++ b/view/js/autocomplete.js
@@ -183,7 +183,7 @@ function string2bb(element) {
};
smilies = {
- match: /(^|\s)(:[a-z]{2,})$/,
+ match: /(^|\s)(:[a-z_:]{2,})$/,
index: 2,
search: function(term, callback) { $.getJSON('/smilies/json').done(function(data) { callback($.map(data, function(entry) { return entry.text.indexOf(term) === 0 ? entry : null; })); }); },
template: function(item) { return item.icon + item.text; },
diff --git a/view/js/main.js b/view/js/main.js
index 15a6b4b8d..f279417d9 100644
--- a/view/js/main.js
+++ b/view/js/main.js
@@ -321,22 +321,6 @@ $(function() {
return false;
}
}
- if(event.keyCode == '34') {
- if((pageHasMoreContent) && (! loadingPage)) {
- $('#more').hide();
- $('#no-more').hide();
-
- next_page++;
- scroll_next = true;
- loadingPage = true;
-
- if(($('.directory-end').length == 0) && ($('.photos-end').length == 0))
- liveUpdate();
- else
- pageUpdate();
- return true;
- }
- }
if(event.keyCode == '19' || (event.ctrlKey && event.which == '32')) {
event.preventDefault();
diff --git a/view/nb-no/hmessages.po b/view/nb-no/hmessages.po
index e4a6f6127..bcb926d90 100644
--- a/view/nb-no/hmessages.po
+++ b/view/nb-no/hmessages.po
@@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-26 00:03-0800\n"
-"PO-Revision-Date: 2016-03-05 13:01+0000\n"
-"Last-Translator: Haakon Meland Eriksen <haakon.eriksen@far.no>\n"
+"POT-Creation-Date: 2016-06-10 00:02-0700\n"
+"PO-Revision-Date: 2016-06-10 09:14+0000\n"
+"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
"Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/Friendica/red-matrix/language/nb_NO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -18,23 +18,11 @@ msgstr ""
"Language: nb_NO\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../../Zotlabs/Zot/Auth.php:140
-msgid ""
-"Remote authentication blocked. You are logged into this site locally. Please"
-" logout and retry."
-msgstr "Fjernautentisering blokkert. Du er logget inn på dette nettstedet lokalt. Vennligst logg ut og prøv på nytt."
-
-#: ../../Zotlabs/Zot/Auth.php:248 ../../mod/openid.php:72
-#: ../../mod/openid.php:179
-#, php-format
-msgid "Welcome %s. Remote authentication successful."
-msgstr "Velkommen %s. Ekstern autentisering er vellykket."
-
#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:239
msgid "parent"
msgstr "opp et nivå"
-#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2614
+#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2620
msgid "Collection"
msgstr "Samling"
@@ -58,16 +46,16 @@ msgstr "Tidsplan innboks"
msgid "Schedule Outbox"
msgstr "Tidsplan utboks"
-#: ../../Zotlabs/Storage/Browser.php:164 ../../include/apps.php:360
-#: ../../include/apps.php:415 ../../include/widgets.php:1410
-#: ../../include/conversation.php:1037 ../../mod/photos.php:766
-#: ../../mod/photos.php:1209
+#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Module/Photos.php:798
+#: ../../Zotlabs/Module/Photos.php:1243 ../../Zotlabs/Lib/Apps.php:486
+#: ../../Zotlabs/Lib/Apps.php:561 ../../include/widgets.php:1505
+#: ../../include/conversation.php:1032
msgid "Unknown"
msgstr "Ukjent"
-#: ../../Zotlabs/Storage/Browser.php:226 ../../include/apps.php:135
-#: ../../include/nav.php:93 ../../include/conversation.php:1648
-#: ../../mod/fbrowser.php:109
+#: ../../Zotlabs/Storage/Browser.php:226 ../../Zotlabs/Module/Fbrowser.php:85
+#: ../../Zotlabs/Lib/Apps.php:216 ../../include/nav.php:93
+#: ../../include/conversation.php:1639
msgid "Files"
msgstr "Filer"
@@ -79,22 +67,24 @@ msgstr "Totalt"
msgid "Shared"
msgstr "Delt"
-#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:303
-#: ../../mod/blocks.php:152 ../../mod/layouts.php:175 ../../mod/menu.php:114
-#: ../../mod/new_channel.php:138 ../../mod/webpages.php:182
+#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:306
+#: ../../Zotlabs/Module/Blocks.php:156 ../../Zotlabs/Module/Layouts.php:182
+#: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/New_channel.php:142
+#: ../../Zotlabs/Module/Webpages.php:186
msgid "Create"
msgstr "Lag"
-#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:305
-#: ../../include/widgets.php:1423 ../../mod/photos.php:793
-#: ../../mod/photos.php:1333 ../../mod/profile_photo.php:401
-#: ../../mod/cover_photo.php:353
+#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:308
+#: ../../Zotlabs/Module/Cover_photo.php:357
+#: ../../Zotlabs/Module/Photos.php:825 ../../Zotlabs/Module/Photos.php:1364
+#: ../../Zotlabs/Module/Profile_photo.php:368 ../../include/widgets.php:1518
msgid "Upload"
msgstr "Last opp"
-#: ../../Zotlabs/Storage/Browser.php:235 ../../mod/admin.php:1158
-#: ../../mod/settings.php:599 ../../mod/settings.php:625
-#: ../../mod/sharedwithme.php:95
+#: ../../Zotlabs/Storage/Browser.php:235 ../../Zotlabs/Module/Chat.php:247
+#: ../../Zotlabs/Module/Admin.php:1223 ../../Zotlabs/Module/Settings.php:592
+#: ../../Zotlabs/Module/Settings.php:618
+#: ../../Zotlabs/Module/Sharedwithme.php:99
msgid "Name"
msgstr "Navn"
@@ -102,4790 +92,785 @@ msgstr "Navn"
msgid "Type"
msgstr "Type"
-#: ../../Zotlabs/Storage/Browser.php:237 ../../include/text.php:1274
-#: ../../mod/sharedwithme.php:97
+#: ../../Zotlabs/Storage/Browser.php:237
+#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1344
msgid "Size"
msgstr "Størrelse"
-#: ../../Zotlabs/Storage/Browser.php:238 ../../mod/sharedwithme.php:98
+#: ../../Zotlabs/Storage/Browser.php:238
+#: ../../Zotlabs/Module/Sharedwithme.php:102
msgid "Last Modified"
msgstr "Sist endret"
-#: ../../Zotlabs/Storage/Browser.php:240 ../../include/apps.php:259
-#: ../../include/page_widgets.php:8 ../../include/page_widgets.php:36
-#: ../../include/menu.php:108 ../../include/identity.php:1352
-#: ../../include/ItemObject.php:100 ../../mod/blocks.php:153
-#: ../../mod/connections.php:286 ../../mod/connections.php:306
-#: ../../mod/editblock.php:135 ../../mod/editlayout.php:134
-#: ../../mod/editpost.php:112 ../../mod/editwebpage.php:176
-#: ../../mod/layouts.php:183 ../../mod/menu.php:108 ../../mod/settings.php:659
-#: ../../mod/thing.php:256 ../../mod/webpages.php:183
+#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Blocks.php:157
+#: ../../Zotlabs/Module/Editblock.php:109
+#: ../../Zotlabs/Module/Connections.php:290
+#: ../../Zotlabs/Module/Connections.php:310
+#: ../../Zotlabs/Module/Editpost.php:84
+#: ../../Zotlabs/Module/Editlayout.php:113
+#: ../../Zotlabs/Module/Editwebpage.php:146
+#: ../../Zotlabs/Module/Layouts.php:190 ../../Zotlabs/Module/Menu.php:112
+#: ../../Zotlabs/Module/Admin.php:2113 ../../Zotlabs/Module/Settings.php:652
+#: ../../Zotlabs/Module/Thing.php:260 ../../Zotlabs/Module/Webpages.php:187
+#: ../../Zotlabs/Lib/Apps.php:337 ../../Zotlabs/Lib/ThreadItem.php:106
+#: ../../include/channel.php:937 ../../include/channel.php:941
+#: ../../include/menu.php:108 ../../include/page_widgets.php:8
+#: ../../include/page_widgets.php:36
msgid "Edit"
msgstr "Endre"
-#: ../../Zotlabs/Storage/Browser.php:241 ../../include/apps.php:260
-#: ../../include/conversation.php:657 ../../include/ItemObject.php:120
-#: ../../mod/blocks.php:155 ../../mod/connections.php:259
-#: ../../mod/connedit.php:562 ../../mod/editblock.php:181
-#: ../../mod/editlayout.php:179 ../../mod/editwebpage.php:223
-#: ../../mod/group.php:173 ../../mod/photos.php:1140 ../../mod/admin.php:993
-#: ../../mod/admin.php:1152 ../../mod/settings.php:660 ../../mod/thing.php:257
-#: ../../mod/webpages.php:185
+#: ../../Zotlabs/Storage/Browser.php:241 ../../Zotlabs/Module/Blocks.php:159
+#: ../../Zotlabs/Module/Connedit.php:572
+#: ../../Zotlabs/Module/Editblock.php:134
+#: ../../Zotlabs/Module/Connections.php:263
+#: ../../Zotlabs/Module/Editlayout.php:136
+#: ../../Zotlabs/Module/Editwebpage.php:170 ../../Zotlabs/Module/Group.php:177
+#: ../../Zotlabs/Module/Photos.php:1173 ../../Zotlabs/Module/Admin.php:1039
+#: ../../Zotlabs/Module/Admin.php:1213 ../../Zotlabs/Module/Admin.php:2114
+#: ../../Zotlabs/Module/Settings.php:653 ../../Zotlabs/Module/Thing.php:261
+#: ../../Zotlabs/Module/Webpages.php:189 ../../Zotlabs/Lib/Apps.php:338
+#: ../../Zotlabs/Lib/ThreadItem.php:126 ../../include/conversation.php:657
msgid "Delete"
msgstr "Slett"
-#: ../../Zotlabs/Storage/Browser.php:282
+#: ../../Zotlabs/Storage/Browser.php:285
#, php-format
msgid "You are using %1$s of your available file storage."
msgstr "Du bruker %1$s av din tilgjengelige lagringsplass."
-#: ../../Zotlabs/Storage/Browser.php:287
+#: ../../Zotlabs/Storage/Browser.php:290
#, php-format
msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
msgstr "Du bruker %1$s av %2$s tilgjengelig lagringsplass (%3$s&#37;)"
-#: ../../Zotlabs/Storage/Browser.php:299
+#: ../../Zotlabs/Storage/Browser.php:302
msgid "WARNING:"
msgstr "ADVARSEL:"
-#: ../../Zotlabs/Storage/Browser.php:302
+#: ../../Zotlabs/Storage/Browser.php:305
msgid "Create new folder"
msgstr "Lag ny mappe"
-#: ../../Zotlabs/Storage/Browser.php:304
+#: ../../Zotlabs/Storage/Browser.php:307
msgid "Upload file"
msgstr "Last opp fil"
-#: ../../Zotlabs/Web/Router.php:45 ../../include/attach.php:140
-#: ../../include/attach.php:188 ../../include/attach.php:251
-#: ../../include/attach.php:265 ../../include/attach.php:272
-#: ../../include/attach.php:337 ../../include/attach.php:351
-#: ../../include/attach.php:358 ../../include/attach.php:436
-#: ../../include/attach.php:888 ../../include/attach.php:959
-#: ../../include/attach.php:1111 ../../include/chat.php:133
-#: ../../include/photos.php:29 ../../include/items.php:4575
-#: ../../index.php:180 ../../mod/achievements.php:30 ../../mod/api.php:26
-#: ../../mod/api.php:31 ../../mod/appman.php:66 ../../mod/authtest.php:13
-#: ../../mod/block.php:22 ../../mod/block.php:72 ../../mod/blocks.php:69
-#: ../../mod/blocks.php:76 ../../mod/bookmarks.php:48
-#: ../../mod/channel.php:100 ../../mod/channel.php:217
-#: ../../mod/channel.php:257 ../../mod/chat.php:94 ../../mod/chat.php:99
-#: ../../mod/common.php:35 ../../mod/connections.php:29
-#: ../../mod/connedit.php:355 ../../mod/editblock.php:65
-#: ../../mod/editlayout.php:63 ../../mod/editlayout.php:87
-#: ../../mod/editpost.php:13 ../../mod/editwebpage.php:64
-#: ../../mod/editwebpage.php:86 ../../mod/editwebpage.php:101
-#: ../../mod/editwebpage.php:125 ../../mod/events.php:260
-#: ../../mod/filestorage.php:18 ../../mod/filestorage.php:73
-#: ../../mod/filestorage.php:88 ../../mod/filestorage.php:115
-#: ../../mod/fsuggest.php:78 ../../mod/group.php:9 ../../mod/id.php:71
-#: ../../mod/invite.php:13 ../../mod/invite.php:87 ../../mod/item.php:206
-#: ../../mod/item.php:214 ../../mod/item.php:1056 ../../mod/layouts.php:69
-#: ../../mod/layouts.php:76 ../../mod/layouts.php:87 ../../mod/like.php:177
-#: ../../mod/locs.php:83 ../../mod/mail.php:126 ../../mod/manage.php:6
-#: ../../mod/menu.php:74 ../../mod/message.php:16 ../../mod/mitem.php:111
-#: ../../mod/mood.php:112 ../../mod/network.php:12
-#: ../../mod/new_channel.php:73 ../../mod/new_channel.php:100
-#: ../../mod/notifications.php:66 ../../mod/page.php:31 ../../mod/page.php:86
-#: ../../mod/pdledit.php:22 ../../mod/photos.php:70 ../../mod/poke.php:133
-#: ../../mod/profile.php:64 ../../mod/profile.php:72
-#: ../../mod/profile_photo.php:289 ../../mod/profile_photo.php:302
-#: ../../mod/profiles.php:198 ../../mod/profiles.php:584
-#: ../../mod/rate.php:111 ../../mod/register.php:73 ../../mod/regmod.php:17
-#: ../../mod/service_limits.php:7 ../../mod/settings.php:579
-#: ../../mod/setup.php:230 ../../mod/sharedwithme.php:7
-#: ../../mod/sources.php:66 ../../mod/suggest.php:26 ../../mod/thing.php:270
-#: ../../mod/thing.php:290 ../../mod/thing.php:327
-#: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27
-#: ../../mod/viewsrc.php:14 ../../mod/webpages.php:69
-#: ../../mod/cover_photo.php:273 ../../mod/cover_photo.php:286
+#: ../../Zotlabs/Web/WebServer.php:120 ../../Zotlabs/Module/Dreport.php:10
+#: ../../Zotlabs/Module/Dreport.php:49 ../../Zotlabs/Module/Group.php:72
+#: ../../Zotlabs/Module/Like.php:284 ../../Zotlabs/Module/Import_items.php:112
+#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:62
+#: ../../include/items.php:385
+msgid "Permission denied"
+msgstr "Tillatelse avvist"
+
+#: ../../Zotlabs/Web/WebServer.php:121 ../../Zotlabs/Web/Router.php:65
+#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Blocks.php:73
+#: ../../Zotlabs/Module/Blocks.php:80 ../../Zotlabs/Module/Channel.php:105
+#: ../../Zotlabs/Module/Channel.php:226 ../../Zotlabs/Module/Channel.php:267
+#: ../../Zotlabs/Module/Chat.php:100 ../../Zotlabs/Module/Chat.php:105
+#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Block.php:26
+#: ../../Zotlabs/Module/Block.php:76 ../../Zotlabs/Module/Bookmarks.php:61
+#: ../../Zotlabs/Module/Connedit.php:366 ../../Zotlabs/Module/Editblock.php:67
+#: ../../Zotlabs/Module/Common.php:39 ../../Zotlabs/Module/Connections.php:33
+#: ../../Zotlabs/Module/Cover_photo.php:277
+#: ../../Zotlabs/Module/Cover_photo.php:290
+#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Events.php:265
+#: ../../Zotlabs/Module/Editlayout.php:67
+#: ../../Zotlabs/Module/Editlayout.php:90
+#: ../../Zotlabs/Module/Editwebpage.php:69
+#: ../../Zotlabs/Module/Editwebpage.php:90
+#: ../../Zotlabs/Module/Editwebpage.php:105
+#: ../../Zotlabs/Module/Editwebpage.php:127 ../../Zotlabs/Module/Group.php:13
+#: ../../Zotlabs/Module/Api.php:13 ../../Zotlabs/Module/Api.php:18
+#: ../../Zotlabs/Module/Filestorage.php:24
+#: ../../Zotlabs/Module/Filestorage.php:79
+#: ../../Zotlabs/Module/Filestorage.php:94
+#: ../../Zotlabs/Module/Filestorage.php:121 ../../Zotlabs/Module/Item.php:210
+#: ../../Zotlabs/Module/Item.php:218 ../../Zotlabs/Module/Item.php:1070
+#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78
+#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Id.php:76
+#: ../../Zotlabs/Module/Like.php:181 ../../Zotlabs/Module/Invite.php:17
+#: ../../Zotlabs/Module/Invite.php:91 ../../Zotlabs/Module/Locs.php:87
+#: ../../Zotlabs/Module/Mail.php:129 ../../Zotlabs/Module/Manage.php:10
+#: ../../Zotlabs/Module/Menu.php:78 ../../Zotlabs/Module/Message.php:18
+#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Network.php:17
+#: ../../Zotlabs/Module/Mitem.php:115 ../../Zotlabs/Module/New_channel.php:77
+#: ../../Zotlabs/Module/New_channel.php:104
+#: ../../Zotlabs/Module/Notifications.php:70
+#: ../../Zotlabs/Module/Photos.php:75 ../../Zotlabs/Module/Page.php:35
+#: ../../Zotlabs/Module/Page.php:90 ../../Zotlabs/Module/Pdledit.php:26
+#: ../../Zotlabs/Module/Poke.php:137 ../../Zotlabs/Module/Profile.php:68
+#: ../../Zotlabs/Module/Profile.php:76 ../../Zotlabs/Module/Profiles.php:203
+#: ../../Zotlabs/Module/Profiles.php:601
+#: ../../Zotlabs/Module/Profile_photo.php:256
+#: ../../Zotlabs/Module/Profile_photo.php:269
+#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Appman.php:75
+#: ../../Zotlabs/Module/Register.php:77 ../../Zotlabs/Module/Regmod.php:21
+#: ../../Zotlabs/Module/Service_limits.php:11
+#: ../../Zotlabs/Module/Settings.php:572 ../../Zotlabs/Module/Setup.php:215
+#: ../../Zotlabs/Module/Sharedwithme.php:11
+#: ../../Zotlabs/Module/Sources.php:74 ../../Zotlabs/Module/Suggest.php:30
+#: ../../Zotlabs/Module/Thing.php:274 ../../Zotlabs/Module/Thing.php:294
+#: ../../Zotlabs/Module/Thing.php:331
+#: ../../Zotlabs/Module/Viewconnections.php:25
+#: ../../Zotlabs/Module/Viewconnections.php:30
+#: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Webpages.php:74
+#: ../../Zotlabs/Lib/Chatroom.php:137 ../../include/items.php:3438
+#: ../../include/attach.php:141 ../../include/attach.php:189
+#: ../../include/attach.php:252 ../../include/attach.php:266
+#: ../../include/attach.php:273 ../../include/attach.php:338
+#: ../../include/attach.php:352 ../../include/attach.php:359
+#: ../../include/attach.php:437 ../../include/attach.php:895
+#: ../../include/attach.php:966 ../../include/attach.php:1118
+#: ../../include/photos.php:27
msgid "Permission denied."
msgstr "Tillatelse avslått."
-#: ../../Zotlabs/Web/Router.php:101 ../../mod/help.php:217
+#: ../../Zotlabs/Web/Router.php:146 ../../Zotlabs/Module/Help.php:94
msgid "Not Found"
msgstr "Ikke funnet"
-#: ../../Zotlabs/Web/Router.php:104 ../../mod/block.php:75
-#: ../../mod/display.php:110 ../../mod/help.php:220 ../../mod/page.php:89
+#: ../../Zotlabs/Web/Router.php:149 ../../Zotlabs/Module/Block.php:79
+#: ../../Zotlabs/Module/Display.php:117 ../../Zotlabs/Module/Help.php:97
+#: ../../Zotlabs/Module/Page.php:93
msgid "Page not found."
msgstr "Siden ikke funnet."
-#: ../../include/Contact.php:101 ../../include/widgets.php:147
-#: ../../include/widgets.php:185 ../../include/identity.php:954
-#: ../../include/conversation.php:961 ../../mod/directory.php:321
-#: ../../mod/match.php:64 ../../mod/suggest.php:52
-msgid "Connect"
-msgstr "Koble"
-
-#: ../../include/Contact.php:118
-msgid "New window"
-msgstr "Nytt vindu"
-
-#: ../../include/Contact.php:119
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Ã…pne det valgte stedet i et annet vindu eller nettleser-fane"
-
-#: ../../include/Contact.php:237
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Brukeren '%s' er slettet"
-
-#: ../../include/Import/import_diaspora.php:17
-msgid "No username found in import file."
-msgstr "Ingen brukernavn ble funnet i importfilen."
-
-#: ../../include/Import/import_diaspora.php:42 ../../include/import.php:44
-msgid "Unable to create a unique channel address. Import failed."
-msgstr "Klarte ikke å lage en unik kanaladresse. Import mislyktes."
-
-#: ../../include/Import/import_diaspora.php:143 ../../mod/import.php:496
-msgid "Import completed."
-msgstr "Import ferdig."
-
-#: ../../include/account.php:28
-msgid "Not a valid email address"
-msgstr "Ikke en gyldig e-postadresse"
-
-#: ../../include/account.php:30
-msgid "Your email domain is not among those allowed on this site"
-msgstr "Ditt e-postdomene er ikke blant de som er tillatt på dette stedet"
-
-#: ../../include/account.php:36
-msgid "Your email address is already registered at this site."
-msgstr "Din e-postadresse er allerede registrert på dette nettstedet."
-
-#: ../../include/account.php:68
-msgid "An invitation is required."
-msgstr "En invitasjon er påkrevd."
-
-#: ../../include/account.php:72
-msgid "Invitation could not be verified."
-msgstr "Invitasjon kunne ikke bekreftes."
-
-#: ../../include/account.php:122
-msgid "Please enter the required information."
-msgstr "Vennligst skriv inn nødvendig informasjon."
-
-#: ../../include/account.php:189
-msgid "Failed to store account information."
-msgstr "Mislyktes med å lagre kontoinformasjon."
-
-#: ../../include/account.php:249
-#, php-format
-msgid "Registration confirmation for %s"
-msgstr "Registreringsbekreftelse for %s"
-
-#: ../../include/account.php:315
-#, php-format
-msgid "Registration request at %s"
-msgstr "Registreringsforespørsel hos %s"
-
-#: ../../include/account.php:317 ../../include/account.php:344
-#: ../../include/account.php:404 ../../include/network.php:1660
-msgid "Administrator"
-msgstr "Administrator"
-
-#: ../../include/account.php:339
-msgid "your registration password"
-msgstr "ditt registreringspassord"
-
-#: ../../include/account.php:342 ../../include/account.php:402
-#, php-format
-msgid "Registration details for %s"
-msgstr "Registreringsdetaljer for %s"
-
-#: ../../include/account.php:414
-msgid "Account approved."
-msgstr "Konto godkjent."
-
-#: ../../include/account.php:454
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registrering trukket tilbake for %s"
-
-#: ../../include/account.php:506
-msgid "Account verified. Please login."
-msgstr "Konto bekreftet. Vennligst logg inn."
-
-#: ../../include/account.php:719 ../../include/account.php:721
-msgid "Click here to upgrade."
-msgstr "Klikk her for å oppgradere."
-
-#: ../../include/account.php:727
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Denne handlingen går utenfor grensene satt i din abonnementsplan."
-
-#: ../../include/account.php:732
-msgid "This action is not available under your subscription plan."
-msgstr "Denne handlingen er ikke tilgjengelig i din abonnementsplan."
-
-#: ../../include/acl_selectors.php:218
-msgid "Visible to your default audience"
-msgstr "Synlig for ditt standard publikum"
-
-#: ../../include/acl_selectors.php:243
-msgid "Show"
-msgstr "Vis"
-
-#: ../../include/acl_selectors.php:244
-msgid "Don't show"
-msgstr "Ikke vis"
-
-#: ../../include/acl_selectors.php:249
-msgid "Other networks and post services"
-msgstr "Andre nettverk og innleggstjenester"
-
-#: ../../include/acl_selectors.php:251 ../../mod/chat.php:211
-#: ../../mod/filestorage.php:147 ../../mod/photos.php:639
-#: ../../mod/photos.php:1012 ../../mod/thing.php:309 ../../mod/thing.php:355
-msgid "Permissions"
-msgstr "Tillatelser"
-
-#: ../../include/acl_selectors.php:252 ../../include/ItemObject.php:384
-#: ../../mod/photos.php:1229
-msgid "Close"
-msgstr "Lukk"
-
-#: ../../include/activities.php:42
-msgid " and "
-msgstr "og"
-
-#: ../../include/activities.php:50
-msgid "public profile"
-msgstr "offentlig profil"
-
-#: ../../include/activities.php:59
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s endret %2$s til &ldquo;%3$s&rdquo;"
-
-#: ../../include/activities.php:60
-#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Besøk %1$s sitt %2$s"
-
-#: ../../include/activities.php:63
-#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s har oppdatert %2$s, endret %3$s."
-
-#: ../../include/api.php:1336
-msgid "Public Timeline"
-msgstr "Offentlig tidslinje"
-
-#: ../../include/apps.php:128
-msgid "Site Admin"
-msgstr "Nettstedsadministrator"
-
-#: ../../include/apps.php:129 ../../include/nav.php:104
-#: ../../include/conversation.php:1685
-msgid "Bookmarks"
-msgstr "Bokmerker"
-
-#: ../../include/apps.php:130
-msgid "Address Book"
-msgstr "Adressebok"
-
-#: ../../include/apps.php:131 ../../include/nav.php:112 ../../boot.php:1543
-msgid "Login"
-msgstr "Logg inn"
-
-#: ../../include/apps.php:132 ../../include/nav.php:203
-#: ../../mod/manage.php:162
-msgid "Channel Manager"
-msgstr "Kanalstyring"
-
-#: ../../include/apps.php:133 ../../include/nav.php:176
-msgid "Grid"
-msgstr "Nett"
-
-#: ../../include/apps.php:134 ../../include/nav.php:205
-#: ../../include/widgets.php:580 ../../mod/admin.php:1266
-#: ../../mod/admin.php:1488
-msgid "Settings"
-msgstr "Innstillinger"
-
-#: ../../include/apps.php:136 ../../include/nav.php:108
-#: ../../include/conversation.php:1695 ../../mod/webpages.php:180
-msgid "Webpages"
-msgstr "Websider"
-
-#: ../../include/apps.php:137 ../../include/nav.php:179
-msgid "Channel Home"
-msgstr "Kanalhjem"
-
-#: ../../include/apps.php:138 ../../include/identity.php:1359
-#: ../../mod/profperm.php:112
-msgid "Profile"
-msgstr "Profil"
-
-#: ../../include/apps.php:139 ../../include/nav.php:92
-#: ../../include/conversation.php:1641 ../../mod/fbrowser.php:25
-msgid "Photos"
-msgstr "Bilder"
-
-#: ../../include/apps.php:140 ../../include/nav.php:198
-#: ../../include/conversation.php:1658 ../../include/conversation.php:1661
-msgid "Events"
-msgstr "Hendelser"
-
-#: ../../include/apps.php:141 ../../include/nav.php:164
-msgid "Directory"
-msgstr "Katalog"
-
-#: ../../include/apps.php:142 ../../include/nav.php:155 ../../mod/help.php:208
-#: ../../mod/help.php:213 ../../mod/layouts.php:176
-msgid "Help"
-msgstr "Hjelp"
-
-#: ../../include/apps.php:143 ../../include/nav.php:190
-msgid "Mail"
-msgstr "Melding"
-
-#: ../../include/apps.php:144 ../../mod/mood.php:131
-msgid "Mood"
-msgstr "Stemning"
-
-#: ../../include/apps.php:145 ../../include/conversation.php:965
-#: ../../mod/poke.php:164
-msgid "Poke"
-msgstr "Prikk"
-
-#: ../../include/apps.php:146 ../../include/nav.php:98
-msgid "Chat"
-msgstr "Chat"
-
-#: ../../include/apps.php:147 ../../include/nav.php:161
-#: ../../include/text.php:885 ../../include/text.php:897
-#: ../../mod/connections.php:302 ../../mod/search.php:40
-msgid "Search"
-msgstr "Søk"
-
-#: ../../include/apps.php:148
-msgid "Probe"
-msgstr "Undersøk"
-
-#: ../../include/apps.php:149
-msgid "Suggest"
-msgstr "Forreslå"
-
-#: ../../include/apps.php:150
-msgid "Random Channel"
-msgstr "Tilfeldig kanal"
-
-#: ../../include/apps.php:151
-msgid "Invite"
-msgstr "Inviter"
-
-#: ../../include/apps.php:152 ../../include/widgets.php:1296
-msgid "Features"
-msgstr "Funksjoner"
-
-#: ../../include/apps.php:153 ../../mod/id.php:28
-msgid "Language"
-msgstr "Språk"
-
-#: ../../include/apps.php:154
-msgid "Post"
-msgstr "Innlegg"
-
-#: ../../include/apps.php:155 ../../mod/id.php:17 ../../mod/id.php:18
-#: ../../mod/id.php:19
-msgid "Profile Photo"
-msgstr "Profilbilde"
-
-#: ../../include/apps.php:252 ../../mod/settings.php:84
-#: ../../mod/settings.php:623
-msgid "Update"
-msgstr "Oppdater"
-
-#: ../../include/apps.php:252
-msgid "Install"
-msgstr "Installer"
-
-#: ../../include/apps.php:257
-msgid "Purchase"
-msgstr "Kjøp"
-
-#: ../../include/attach.php:246 ../../include/attach.php:332
-msgid "Item was not found."
-msgstr "Elementet ble ikke funnet."
-
-#: ../../include/attach.php:496
-msgid "No source file."
-msgstr "Ingen kildefil."
-
-#: ../../include/attach.php:518
-msgid "Cannot locate file to replace"
-msgstr "Kan ikke finne filen som skal byttes ut"
-
-#: ../../include/attach.php:536
-msgid "Cannot locate file to revise/update"
-msgstr "Finner ikke filen som skal revideres/oppdateres"
-
-#: ../../include/attach.php:671
-#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "Filens størrelse overgår grensen på %d"
-
-#: ../../include/attach.php:685
-#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
-msgstr "Du har nådd din lagringsgrense for vedlegg på %1$.0f Mbytes."
-
-#: ../../include/attach.php:841
-msgid "File upload failed. Possible system limit or action terminated."
-msgstr "Mislyktes med å laste opp filen. Mulig systemgrense eller handling avbrutt."
-
-#: ../../include/attach.php:854
-msgid "Stored file could not be verified. Upload failed."
-msgstr "Lagret fil kunne ikke bekreftes. Opplasting mislyktes."
-
-#: ../../include/attach.php:902 ../../include/attach.php:918
-msgid "Path not available."
-msgstr "Stien er ikke tilgjengelig."
-
-#: ../../include/attach.php:964 ../../include/attach.php:1116
-msgid "Empty pathname"
-msgstr "Tomt sti-navn"
-
-#: ../../include/attach.php:990
-msgid "duplicate filename or path"
-msgstr "duplikat av filnavn eller sti"
-
-#: ../../include/attach.php:1012
-msgid "Path not found."
-msgstr "Stien ble ikke funnet."
-
-#: ../../include/attach.php:1070
-msgid "mkdir failed."
-msgstr "mkdir mislyktes."
-
-#: ../../include/attach.php:1074
-msgid "database storage failed."
-msgstr "databaselagring mislyktes."
-
-#: ../../include/attach.php:1122
-msgid "Empty path"
-msgstr "Tom sti"
-
-#: ../../include/auth.php:132
-msgid "Logged out."
-msgstr "Logget ut."
-
-#: ../../include/auth.php:273
-msgid "Failed authentication"
-msgstr "Mislykket autentisering"
-
-#: ../../include/auth.php:287 ../../mod/openid.php:189
-msgid "Login failed."
-msgstr "Innlogging mislyktes."
-
-#: ../../include/bb2diaspora.php:376
-msgid "Attachments:"
-msgstr "Vedlegg:"
-
-#: ../../include/bb2diaspora.php:465 ../../include/event.php:22
-#: ../../include/text.php:1418
-msgid "l F d, Y \\@ g:i A"
-msgstr "l F d, Y \\@ g:i A"
-
-#: ../../include/bb2diaspora.php:467
-msgid "$Projectname event notification:"
-msgstr "$Projectname hendelsesvarsling:"
-
-#: ../../include/bb2diaspora.php:471 ../../include/event.php:30
-#: ../../include/text.php:1422
-msgid "Starts:"
-msgstr "Starter:"
-
-#: ../../include/bb2diaspora.php:479 ../../include/event.php:40
-#: ../../include/text.php:1426
-msgid "Finishes:"
-msgstr "Slutter:"
-
-#: ../../include/bb2diaspora.php:487 ../../include/event.php:52
-#: ../../include/text.php:1433 ../../include/identity.php:1005
-#: ../../mod/directory.php:307
-msgid "Location:"
-msgstr "Plassering:"
-
-#: ../../include/bbcode.php:123 ../../include/bbcode.php:794
-#: ../../include/bbcode.php:797 ../../include/bbcode.php:802
-#: ../../include/bbcode.php:805 ../../include/bbcode.php:808
-#: ../../include/bbcode.php:811 ../../include/bbcode.php:816
-#: ../../include/bbcode.php:819 ../../include/bbcode.php:824
-#: ../../include/bbcode.php:827 ../../include/bbcode.php:830
-#: ../../include/bbcode.php:833
-msgid "Image/photo"
-msgstr "Bilde/fotografi"
-
-#: ../../include/bbcode.php:162 ../../include/bbcode.php:844
-msgid "Encrypted content"
-msgstr "Kryptert innhold"
-
-#: ../../include/bbcode.php:179
-#, php-format
-msgid "Install %s element: "
-msgstr "Installer %s element:"
-
-#: ../../include/bbcode.php:183
-#, php-format
+#: ../../Zotlabs/Zot/Auth.php:138
msgid ""
-"This post contains an installable %s element, however you lack permissions "
-"to install it on this site."
-msgstr "Dette innlegget inneholder det installerbare elementet %s, men du mangler tillatelse til å installere det på dette nettstedet."
-
-#: ../../include/bbcode.php:193 ../../mod/impel.php:37
-msgid "webpage"
-msgstr "nettside"
-
-#: ../../include/bbcode.php:196 ../../mod/impel.php:47
-msgid "layout"
-msgstr "layout"
-
-#: ../../include/bbcode.php:199 ../../mod/impel.php:42
-msgid "block"
-msgstr "byggekloss"
-
-#: ../../include/bbcode.php:202 ../../mod/impel.php:54
-msgid "menu"
-msgstr "meny"
-
-#: ../../include/bbcode.php:257
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s skrev følgende %2$s %3$s"
-
-#: ../../include/bbcode.php:259 ../../mod/tagger.php:51
-msgid "post"
-msgstr "innlegg"
-
-#: ../../include/bbcode.php:547
-msgid "Different viewers will see this text differently"
-msgstr "Denne teksten vil se forskjellig ut for ulike besøkende"
-
-#: ../../include/bbcode.php:755
-msgid "$1 spoiler"
-msgstr "$1 avsløring"
-
-#: ../../include/bbcode.php:782
-msgid "$1 wrote:"
-msgstr "$1 skrev:"
-
-#: ../../include/bookmarks.php:35
-#, php-format
-msgid "%1$s's bookmarks"
-msgstr "%1$s sine bokmerker"
-
-#: ../../include/chat.php:23
-msgid "Missing room name"
-msgstr "Mangler romnavn"
-
-#: ../../include/chat.php:32
-msgid "Duplicate room name"
-msgstr "Duplikat romnavn"
-
-#: ../../include/chat.php:82 ../../include/chat.php:90
-msgid "Invalid room specifier."
-msgstr "Ugyldig rom-spesifisering"
-
-#: ../../include/chat.php:122
-msgid "Room not found."
-msgstr "Rommet ble ikke funnet."
-
-#: ../../include/chat.php:143
-msgid "Room is full"
-msgstr "Rommet er fullt"
-
-#: ../../include/comanche.php:34 ../../mod/admin.php:366
-msgid "Default"
-msgstr "Standard"
-
-#: ../../include/contact_widgets.php:14
-#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "%d invitasjon tilgjengelig"
-msgstr[1] "%d invitasjoner tilgjengelig"
-
-#: ../../include/contact_widgets.php:19 ../../mod/admin.php:461
-msgid "Advanced"
-msgstr "Avansert"
-
-#: ../../include/contact_widgets.php:22
-msgid "Find Channels"
-msgstr "Finn kanaler"
-
-#: ../../include/contact_widgets.php:23
-msgid "Enter name or interest"
-msgstr "Skriv navn eller interesse"
-
-#: ../../include/contact_widgets.php:24
-msgid "Connect/Follow"
-msgstr "Forbindelse/Følg"
-
-#: ../../include/contact_widgets.php:25
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Eksempler: Ola Nordmann, fisking"
-
-#: ../../include/contact_widgets.php:26 ../../mod/connections.php:305
-#: ../../mod/directory.php:384 ../../mod/directory.php:389
-msgid "Find"
-msgstr "Finn"
-
-#: ../../include/contact_widgets.php:27 ../../mod/directory.php:388
-#: ../../mod/suggest.php:60
-msgid "Channel Suggestions"
-msgstr "Kanalforslag"
-
-#: ../../include/contact_widgets.php:29
-msgid "Random Profile"
-msgstr "Tilfeldig profil"
-
-#: ../../include/contact_widgets.php:30
-msgid "Invite Friends"
-msgstr "Inviter venner"
-
-#: ../../include/contact_widgets.php:32
-msgid "Advanced example: name=fred and country=iceland"
-msgstr "Avansert eksempel: navn=fred og land=island"
-
-#: ../../include/contact_widgets.php:57 ../../include/features.php:96
-#: ../../include/widgets.php:314
-msgid "Saved Folders"
-msgstr "Lagrede mapper"
-
-#: ../../include/contact_widgets.php:60 ../../include/contact_widgets.php:98
-#: ../../include/widgets.php:317
-msgid "Everything"
-msgstr "Alt"
-
-#: ../../include/contact_widgets.php:95 ../../include/taxonomy.php:282
-#: ../../include/widgets.php:46
-msgid "Categories"
-msgstr "Kategorier"
-
-#: ../../include/contact_widgets.php:128
-#, php-format
-msgid "%d connection in common"
-msgid_plural "%d connections in common"
-msgstr[0] "%d forbindelse felles"
-msgstr[1] "%d forbindelser felles"
-
-#: ../../include/contact_widgets.php:133
-msgid "show more"
-msgstr "vis mer"
-
-#: ../../include/dba/dba_driver.php:141
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "Kan ikke finne DNS-informasjon om databasetjener '%s'"
-
-#: ../../include/dir_fns.php:139
-msgid "Directory Options"
-msgstr "Kataloginnstillinger"
-
-#: ../../include/dir_fns.php:141
-msgid "Safe Mode"
-msgstr "Trygt modus"
-
-#: ../../include/dir_fns.php:141 ../../include/dir_fns.php:142
-#: ../../include/dir_fns.php:143 ../../mod/api.php:102
-#: ../../mod/connedit.php:368 ../../mod/connedit.php:646
-#: ../../mod/events.php:454 ../../mod/events.php:455 ../../mod/events.php:464
-#: ../../mod/filestorage.php:151 ../../mod/filestorage.php:159
-#: ../../mod/menu.php:96 ../../mod/menu.php:153 ../../mod/mitem.php:154
-#: ../../mod/mitem.php:155 ../../mod/mitem.php:228 ../../mod/mitem.php:229
-#: ../../mod/photos.php:634 ../../mod/admin.php:425 ../../mod/removeme.php:60
-#: ../../mod/settings.php:588 ../../view/theme/redbasic/php/config.php:104
-#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1547
-msgid "No"
-msgstr "Nei"
-
-#: ../../include/dir_fns.php:141 ../../include/dir_fns.php:142
-#: ../../include/dir_fns.php:143 ../../mod/api.php:101
-#: ../../mod/connedit.php:368 ../../mod/events.php:454
-#: ../../mod/events.php:455 ../../mod/events.php:464
-#: ../../mod/filestorage.php:151 ../../mod/filestorage.php:159
-#: ../../mod/menu.php:96 ../../mod/menu.php:153 ../../mod/mitem.php:154
-#: ../../mod/mitem.php:155 ../../mod/mitem.php:228 ../../mod/mitem.php:229
-#: ../../mod/photos.php:634 ../../mod/admin.php:427 ../../mod/removeme.php:60
-#: ../../mod/settings.php:588 ../../view/theme/redbasic/php/config.php:104
-#: ../../view/theme/redbasic/php/config.php:129 ../../boot.php:1547
-msgid "Yes"
-msgstr "Ja"
-
-#: ../../include/dir_fns.php:142
-msgid "Public Forums Only"
-msgstr "Bare offentlige forum"
-
-#: ../../include/dir_fns.php:143
-msgid "This Website Only"
-msgstr "Kun dette nettstedet"
-
-#: ../../include/event.php:779
-msgid "This event has been added to your calendar."
-msgstr "Denne hendelsen er lagt til i din kalender."
-
-#: ../../include/event.php:915 ../../include/text.php:1951
-#: ../../include/conversation.php:123 ../../mod/events.php:249
-#: ../../mod/like.php:363 ../../mod/tagger.php:47
-msgid "event"
-msgstr "hendelse"
-
-#: ../../include/event.php:978
-msgid "Not specified"
-msgstr "Ikke spesifisert"
-
-#: ../../include/event.php:979
-msgid "Needs Action"
-msgstr "Trenger handling"
-
-#: ../../include/event.php:980
-msgid "Completed"
-msgstr "Ferdig"
-
-#: ../../include/event.php:981
-msgid "In Process"
-msgstr "Igang"
-
-#: ../../include/event.php:982
-msgid "Cancelled"
-msgstr "Avbrutt"
-
-#: ../../include/follow.php:28
-msgid "Channel is blocked on this site."
-msgstr "Kanalen er blokkert på dette nettstedet."
-
-#: ../../include/follow.php:33
-msgid "Channel location missing."
-msgstr "Kanalplassering mangler."
-
-#: ../../include/follow.php:82
-msgid "Response from remote channel was incomplete."
-msgstr "Svaret fra den andre kanalen var ikke komplett."
-
-#: ../../include/follow.php:99
-msgid "Channel was deleted and no longer exists."
-msgstr "Kanalen er slettet og finnes ikke lenger."
-
-#: ../../include/follow.php:153 ../../include/follow.php:183
-msgid "Protocol disabled."
-msgstr "Protokollen er avskrudd."
-
-#: ../../include/follow.php:173
-msgid "Channel discovery failed."
-msgstr "Kanaloppdagelse mislyktes."
-
-#: ../../include/follow.php:199
-msgid "local account not found."
-msgstr "lokal konto ble ikke funnet."
-
-#: ../../include/follow.php:224
-msgid "Cannot connect to yourself."
-msgstr "Kan ikke lage forbindelse med deg selv."
-
-#: ../../include/import.php:23
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "Kan ikke lage en kopi av kanal-identifikatoren på dette systemet. Import mislyktes."
-
-#: ../../include/import.php:70
-msgid "Channel clone failed. Import failed."
-msgstr "Kanalkloning mislyktes. Import mislyktes."
-
-#: ../../include/import.php:80 ../../mod/import.php:148
-msgid "Cloned channel not found. Import failed."
-msgstr "Klonet kanal ble ikke funnet. Import mislyktes."
-
-#: ../../include/js_strings.php:5
-msgid "Delete this item?"
-msgstr "Slett dette elementet?"
-
-#: ../../include/js_strings.php:6 ../../include/ItemObject.php:702
-#: ../../mod/photos.php:1058 ../../mod/photos.php:1176
-msgid "Comment"
-msgstr "Kommentar"
-
-#: ../../include/js_strings.php:7 ../../include/ItemObject.php:413
-msgid "[+] show all"
-msgstr "[+] Vis alle"
-
-#: ../../include/js_strings.php:8
-msgid "[-] show less"
-msgstr "[-] Vis mindre"
-
-#: ../../include/js_strings.php:9
-msgid "[+] expand"
-msgstr "[+] Utvid"
-
-#: ../../include/js_strings.php:10
-msgid "[-] collapse"
-msgstr "[-] Lukk"
-
-#: ../../include/js_strings.php:11
-msgid "Password too short"
-msgstr "Passordet er for kort"
-
-#: ../../include/js_strings.php:12
-msgid "Passwords do not match"
-msgstr "Passordene er ikke like"
-
-#: ../../include/js_strings.php:13 ../../mod/photos.php:41
-#: ../../mod/cal.php:37
-msgid "everybody"
-msgstr "alle"
-
-#: ../../include/js_strings.php:14
-msgid "Secret Passphrase"
-msgstr "Hemmelig passordsetning"
-
-#: ../../include/js_strings.php:15
-msgid "Passphrase hint"
-msgstr "Hint om passordsetning"
-
-#: ../../include/js_strings.php:16
-msgid "Notice: Permissions have changed but have not yet been submitted."
-msgstr "Varsel: Tillatelser har blitt endret, men de har ennå ikke blitt sendt inn."
-
-#: ../../include/js_strings.php:17
-msgid "close all"
-msgstr "Lukk alle"
-
-#: ../../include/js_strings.php:18
-msgid "Nothing new here"
-msgstr "Ikke noe nytt her"
-
-#: ../../include/js_strings.php:19
-msgid "Rate This Channel (this is public)"
-msgstr "Vurder denne kanalen (dette er offentlig)"
-
-#: ../../include/js_strings.php:20 ../../mod/connedit.php:705
-#: ../../mod/rate.php:157
-msgid "Rating"
-msgstr "Vurdering"
-
-#: ../../include/js_strings.php:21
-msgid "Describe (optional)"
-msgstr "Beskriv (valgfritt)"
-
-#: ../../include/js_strings.php:22 ../../include/widgets.php:702
-#: ../../include/widgets.php:714 ../../include/ItemObject.php:703
-#: ../../mod/appman.php:99 ../../mod/chat.php:184 ../../mod/chat.php:213
-#: ../../mod/connect.php:93 ../../mod/connedit.php:722
-#: ../../mod/events.php:468 ../../mod/events.php:665
-#: ../../mod/filestorage.php:156 ../../mod/fsuggest.php:108
-#: ../../mod/group.php:81 ../../mod/import.php:536
-#: ../../mod/import_items.php:116 ../../mod/invite.php:142
-#: ../../mod/locs.php:116 ../../mod/mail.php:380 ../../mod/mitem.php:231
-#: ../../mod/mood.php:135 ../../mod/pconfig.php:108 ../../mod/pdledit.php:62
-#: ../../mod/photos.php:645 ../../mod/photos.php:1019
-#: ../../mod/photos.php:1059 ../../mod/photos.php:1177 ../../mod/admin.php:457
-#: ../../mod/admin.php:646 ../../mod/admin.php:721 ../../mod/admin.php:986
-#: ../../mod/admin.php:1150 ../../mod/admin.php:1326 ../../mod/admin.php:1521
-#: ../../mod/admin.php:1606 ../../mod/poke.php:182 ../../mod/profiles.php:675
-#: ../../mod/rate.php:168 ../../mod/settings.php:597
-#: ../../mod/settings.php:710 ../../mod/settings.php:738
-#: ../../mod/settings.php:761 ../../mod/settings.php:849
-#: ../../mod/settings.php:1041 ../../mod/setup.php:333 ../../mod/setup.php:374
-#: ../../mod/sources.php:104 ../../mod/sources.php:138 ../../mod/thing.php:312
-#: ../../mod/thing.php:358 ../../mod/xchan.php:11 ../../mod/cal.php:332
-#: ../../view/theme/redbasic/php/config.php:99
-msgid "Submit"
-msgstr "Send"
-
-#: ../../include/js_strings.php:23
-msgid "Please enter a link URL"
-msgstr "Vennligst skriv inn en lenke URL:"
-
-#: ../../include/js_strings.php:24
-msgid "Unsaved changes. Are you sure you wish to leave this page?"
-msgstr "Endringene er ikke lagret. Er du sikker på at du ønsker å forlate denne siden?"
-
-#: ../../include/js_strings.php:25 ../../mod/events.php:459
-#: ../../mod/profiles.php:464 ../../mod/pubsites.php:36
-msgid "Location"
-msgstr "Plassering"
-
-#: ../../include/js_strings.php:27
-msgid "timeago.prefixAgo"
-msgstr "timeago.prefixAgo"
-
-#: ../../include/js_strings.php:28
-msgid "timeago.prefixFromNow"
-msgstr "timeago.prefixFromNow"
-
-#: ../../include/js_strings.php:29
-msgid "ago"
-msgstr "siden"
-
-#: ../../include/js_strings.php:30
-msgid "from now"
-msgstr "fra nå"
-
-#: ../../include/js_strings.php:31
-msgid "less than a minute"
-msgstr "mindre enn ett minutt"
-
-#: ../../include/js_strings.php:32
-msgid "about a minute"
-msgstr "omtrent et minutt"
-
-#: ../../include/js_strings.php:33
-#, php-format
-msgid "%d minutes"
-msgstr "%d minutter"
-
-#: ../../include/js_strings.php:34
-msgid "about an hour"
-msgstr "omtrent en time"
-
-#: ../../include/js_strings.php:35
-#, php-format
-msgid "about %d hours"
-msgstr "omtrent %d timer"
-
-#: ../../include/js_strings.php:36
-msgid "a day"
-msgstr "en dag"
-
-#: ../../include/js_strings.php:37
-#, php-format
-msgid "%d days"
-msgstr "%d dager"
-
-#: ../../include/js_strings.php:38
-msgid "about a month"
-msgstr "omtrent en måned"
-
-#: ../../include/js_strings.php:39
-#, php-format
-msgid "%d months"
-msgstr "%d måneder"
-
-#: ../../include/js_strings.php:40
-msgid "about a year"
-msgstr "omtrent et år"
-
-#: ../../include/js_strings.php:41
-#, php-format
-msgid "%d years"
-msgstr "%d år"
-
-#: ../../include/js_strings.php:42
-msgid " "
-msgstr " "
-
-#: ../../include/js_strings.php:43
-msgid "timeago.numbers"
-msgstr "timeago.numbers"
-
-#: ../../include/js_strings.php:45 ../../include/text.php:1191
-msgid "January"
-msgstr "januar"
-
-#: ../../include/js_strings.php:46 ../../include/text.php:1191
-msgid "February"
-msgstr "februar"
-
-#: ../../include/js_strings.php:47 ../../include/text.php:1191
-msgid "March"
-msgstr "mars"
-
-#: ../../include/js_strings.php:48 ../../include/text.php:1191
-msgid "April"
-msgstr "april"
-
-#: ../../include/js_strings.php:49
-msgctxt "long"
-msgid "May"
-msgstr "mai"
-
-#: ../../include/js_strings.php:50 ../../include/text.php:1191
-msgid "June"
-msgstr "juni"
-
-#: ../../include/js_strings.php:51 ../../include/text.php:1191
-msgid "July"
-msgstr "juli"
-
-#: ../../include/js_strings.php:52 ../../include/text.php:1191
-msgid "August"
-msgstr "august"
-
-#: ../../include/js_strings.php:53 ../../include/text.php:1191
-msgid "September"
-msgstr "september"
-
-#: ../../include/js_strings.php:54 ../../include/text.php:1191
-msgid "October"
-msgstr "oktober"
-
-#: ../../include/js_strings.php:55 ../../include/text.php:1191
-msgid "November"
-msgstr "november"
-
-#: ../../include/js_strings.php:56 ../../include/text.php:1191
-msgid "December"
-msgstr "desember"
-
-#: ../../include/js_strings.php:57
-msgid "Jan"
-msgstr "Jan"
-
-#: ../../include/js_strings.php:58
-msgid "Feb"
-msgstr "Feb"
-
-#: ../../include/js_strings.php:59
-msgid "Mar"
-msgstr "Mar"
-
-#: ../../include/js_strings.php:60
-msgid "Apr"
-msgstr "Apr"
-
-#: ../../include/js_strings.php:61
-msgctxt "short"
-msgid "May"
-msgstr "mai"
-
-#: ../../include/js_strings.php:62
-msgid "Jun"
-msgstr "Jun"
-
-#: ../../include/js_strings.php:63
-msgid "Jul"
-msgstr "Jul"
-
-#: ../../include/js_strings.php:64
-msgid "Aug"
-msgstr "Aug"
-
-#: ../../include/js_strings.php:65
-msgid "Sep"
-msgstr "Sep"
-
-#: ../../include/js_strings.php:66
-msgid "Oct"
-msgstr "Okt"
-
-#: ../../include/js_strings.php:67
-msgid "Nov"
-msgstr "Nov"
-
-#: ../../include/js_strings.php:68
-msgid "Dec"
-msgstr "Des"
-
-#: ../../include/js_strings.php:69 ../../include/text.php:1187
-msgid "Sunday"
-msgstr "søndag"
-
-#: ../../include/js_strings.php:70 ../../include/text.php:1187
-msgid "Monday"
-msgstr "mandag"
-
-#: ../../include/js_strings.php:71 ../../include/text.php:1187
-msgid "Tuesday"
-msgstr "tirsdag"
-
-#: ../../include/js_strings.php:72 ../../include/text.php:1187
-msgid "Wednesday"
-msgstr "onsdag"
-
-#: ../../include/js_strings.php:73 ../../include/text.php:1187
-msgid "Thursday"
-msgstr "torsdag"
-
-#: ../../include/js_strings.php:74 ../../include/text.php:1187
-msgid "Friday"
-msgstr "fredag"
-
-#: ../../include/js_strings.php:75 ../../include/text.php:1187
-msgid "Saturday"
-msgstr "lørdag"
-
-#: ../../include/js_strings.php:76
-msgid "Sun"
-msgstr "Søn"
-
-#: ../../include/js_strings.php:77
-msgid "Mon"
-msgstr "Man"
-
-#: ../../include/js_strings.php:78
-msgid "Tue"
-msgstr "Tirs"
-
-#: ../../include/js_strings.php:79
-msgid "Wed"
-msgstr "Ons"
-
-#: ../../include/js_strings.php:80
-msgid "Thu"
-msgstr "Tors"
-
-#: ../../include/js_strings.php:81
-msgid "Fri"
-msgstr "Fre"
-
-#: ../../include/js_strings.php:82
-msgid "Sat"
-msgstr "Lør"
-
-#: ../../include/js_strings.php:83
-msgctxt "calendar"
-msgid "today"
-msgstr "idag"
-
-#: ../../include/js_strings.php:84
-msgctxt "calendar"
-msgid "month"
-msgstr "måned"
-
-#: ../../include/js_strings.php:85
-msgctxt "calendar"
-msgid "week"
-msgstr "uke"
-
-#: ../../include/js_strings.php:86
-msgctxt "calendar"
-msgid "day"
-msgstr "dag"
-
-#: ../../include/js_strings.php:87
-msgctxt "calendar"
-msgid "All day"
-msgstr "Hele dagen"
-
-#: ../../include/message.php:20
-msgid "No recipient provided."
-msgstr "Ingen mottaker angitt."
-
-#: ../../include/message.php:25
-msgid "[no subject]"
-msgstr "[ikke noe emne]"
-
-#: ../../include/message.php:45
-msgid "Unable to determine sender."
-msgstr "Kan ikke avgjøre avsender."
-
-#: ../../include/message.php:222
-msgid "Stored post could not be verified."
-msgstr "Lagret innlegg kunne ikke bekreftes."
-
-#: ../../include/nav.php:82 ../../include/nav.php:115 ../../boot.php:1542
-msgid "Logout"
-msgstr "Logg ut"
-
-#: ../../include/nav.php:82 ../../include/nav.php:115
-msgid "End this session"
-msgstr "Avslutt denne økten"
-
-#: ../../include/nav.php:85 ../../include/nav.php:146
-msgid "Home"
-msgstr "Hjem"
-
-#: ../../include/nav.php:85
-msgid "Your posts and conversations"
-msgstr "Dine innlegg og samtaler"
-
-#: ../../include/nav.php:86 ../../include/conversation.php:959
-#: ../../mod/connedit.php:509
-msgid "View Profile"
-msgstr "Vis profil"
-
-#: ../../include/nav.php:86
-msgid "Your profile page"
-msgstr "Din profilside"
-
-#: ../../include/nav.php:88
-msgid "Edit Profiles"
-msgstr "Endre profiler"
-
-#: ../../include/nav.php:88
-msgid "Manage/Edit profiles"
-msgstr "HÃ¥ndter/endre profiler"
-
-#: ../../include/nav.php:90 ../../include/identity.php:977
-msgid "Edit Profile"
-msgstr "Endre profil"
-
-#: ../../include/nav.php:90
-msgid "Edit your profile"
-msgstr "Endre din profil"
-
-#: ../../include/nav.php:92
-msgid "Your photos"
-msgstr "Dine bilder"
-
-#: ../../include/nav.php:93
-msgid "Your files"
-msgstr "Dine filer"
-
-#: ../../include/nav.php:98
-msgid "Your chatrooms"
-msgstr "Dine chatterom"
-
-#: ../../include/nav.php:104
-msgid "Your bookmarks"
-msgstr "Dine bokmerker"
-
-#: ../../include/nav.php:108
-msgid "Your webpages"
-msgstr "Dine websider"
-
-#: ../../include/nav.php:112
-msgid "Sign in"
-msgstr "Logg på"
-
-#: ../../include/nav.php:129
-#, php-format
-msgid "%s - click to logout"
-msgstr "%s - klikk for å logge ut"
-
-#: ../../include/nav.php:132
-msgid "Remote authentication"
-msgstr "Fjernautentisering"
-
-#: ../../include/nav.php:132
-msgid "Click to authenticate to your home hub"
-msgstr "Klikk for å godkjennes mot din hjemme-hub"
-
-#: ../../include/nav.php:146
-msgid "Home Page"
-msgstr "Hjemmeside"
-
-#: ../../include/nav.php:150 ../../mod/register.php:258 ../../boot.php:1525
-msgid "Register"
-msgstr "Registrer"
-
-#: ../../include/nav.php:150
-msgid "Create an account"
-msgstr "Lag en konto"
-
-#: ../../include/nav.php:155
-msgid "Help and documentation"
-msgstr "Hjelp og dokumentasjon"
-
-#: ../../include/nav.php:159 ../../include/widgets.php:102
-#: ../../mod/apps.php:36
-msgid "Apps"
-msgstr "Apper"
-
-#: ../../include/nav.php:159
-msgid "Applications, utilities, links, games"
-msgstr "Programmer, verktøy, lenker, spill"
-
-#: ../../include/nav.php:161
-msgid "Search site @name, #tag, ?docs, content"
-msgstr "Søk nettstedet for @navn, #merkelapp, ?dokumentasjon, innhold"
-
-#: ../../include/nav.php:164
-msgid "Channel Directory"
-msgstr "Kanalkatalog"
-
-#: ../../include/nav.php:176
-msgid "Your grid"
-msgstr "Ditt nett"
-
-#: ../../include/nav.php:177
-msgid "Mark all grid notifications seen"
-msgstr "Marker alle nettvarsler som sett"
-
-#: ../../include/nav.php:179
-msgid "Channel home"
-msgstr "Kanalhjem"
-
-#: ../../include/nav.php:180
-msgid "Mark all channel notifications seen"
-msgstr "Merk alle kanalvarsler som sett"
-
-#: ../../include/nav.php:183 ../../include/text.php:815
-#: ../../mod/connections.php:298
-msgid "Connections"
-msgstr "Forbindelser"
-
-#: ../../include/nav.php:186
-msgid "Notices"
-msgstr "Varsel"
-
-#: ../../include/nav.php:186
-msgid "Notifications"
-msgstr "Varsler"
-
-#: ../../include/nav.php:187
-msgid "See all notifications"
-msgstr "Se alle varsler"
-
-#: ../../include/nav.php:188 ../../mod/notifications.php:99
-msgid "Mark all system notifications seen"
-msgstr "Merk alle systemvarsler som sett"
-
-#: ../../include/nav.php:190
-msgid "Private mail"
-msgstr "Privat post"
-
-#: ../../include/nav.php:191
-msgid "See all private messages"
-msgstr "Se alle private meldinger"
-
-#: ../../include/nav.php:192
-msgid "Mark all private messages seen"
-msgstr "Merk alle private meldinger som sett"
-
-#: ../../include/nav.php:193 ../../include/widgets.php:601
-msgid "Inbox"
-msgstr "Innboks"
-
-#: ../../include/nav.php:194 ../../include/widgets.php:606
-msgid "Outbox"
-msgstr "Utboks"
-
-#: ../../include/nav.php:195 ../../include/widgets.php:611
-msgid "New Message"
-msgstr "Ny melding"
-
-#: ../../include/nav.php:198
-msgid "Event Calendar"
-msgstr "Kalender"
-
-#: ../../include/nav.php:199
-msgid "See all events"
-msgstr "Se alle hendelser"
-
-#: ../../include/nav.php:200
-msgid "Mark all events seen"
-msgstr "Merk alle hendelser som sett"
-
-#: ../../include/nav.php:203
-msgid "Manage Your Channels"
-msgstr "HÃ¥ndter dine kanaler"
-
-#: ../../include/nav.php:205
-msgid "Account/Channel Settings"
-msgstr "Konto-/kanal-innstillinger"
-
-#: ../../include/nav.php:213 ../../include/widgets.php:1323
-msgid "Admin"
-msgstr "Administrator"
-
-#: ../../include/nav.php:213
-msgid "Site Setup and Configuration"
-msgstr "Nettstedsoppsett og -konfigurasjon"
-
-#: ../../include/nav.php:244 ../../include/conversation.php:854
-msgid "Loading..."
-msgstr "Laster..."
-
-#: ../../include/nav.php:249
-msgid "@name, #tag, ?doc, content"
-msgstr "@navn, #merkelapp, ?dokumentasjon, innhold"
-
-#: ../../include/nav.php:250
-msgid "Please wait..."
-msgstr "Vennligst vent..."
-
-#: ../../include/notify.php:20
-msgid "created a new post"
-msgstr "laget et nytt innlegg"
+"Remote authentication blocked. You are logged into this site locally. Please"
+" logout and retry."
+msgstr "Fjernautentisering blokkert. Du er logget inn på dette nettstedet lokalt. Vennligst logg ut og prøv på nytt."
-#: ../../include/notify.php:21
+#: ../../Zotlabs/Zot/Auth.php:246 ../../Zotlabs/Module/Openid.php:76
+#: ../../Zotlabs/Module/Openid.php:183
#, php-format
-msgid "commented on %s's post"
-msgstr "kommenterte på %s sitt innlegg"
-
-#: ../../include/page_widgets.php:6
-msgid "New Page"
-msgstr "Ny side"
+msgid "Welcome %s. Remote authentication successful."
+msgstr "Velkommen %s. Ekstern autentisering er vellykket."
-#: ../../include/page_widgets.php:39 ../../mod/blocks.php:159
-#: ../../mod/layouts.php:188 ../../mod/pubsites.php:42
-#: ../../mod/webpages.php:189
-msgid "View"
-msgstr "Vis"
+#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Blocks.php:33
+#: ../../Zotlabs/Module/Connect.php:17 ../../Zotlabs/Module/Editblock.php:31
+#: ../../Zotlabs/Module/Editlayout.php:31
+#: ../../Zotlabs/Module/Editwebpage.php:33
+#: ../../Zotlabs/Module/Filestorage.php:60 ../../Zotlabs/Module/Hcard.php:12
+#: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Profile.php:20
+#: ../../Zotlabs/Module/Webpages.php:34 ../../include/channel.php:837
+msgid "Requested profile is not available."
+msgstr "Forespurt profil er ikke tilgjengelig."
-#: ../../include/page_widgets.php:40 ../../include/conversation.php:1179
-#: ../../include/ItemObject.php:712 ../../mod/editblock.php:171
-#: ../../mod/editpost.php:149 ../../mod/editwebpage.php:212
-#: ../../mod/events.php:465 ../../mod/photos.php:1060
-#: ../../mod/webpages.php:190
-msgid "Preview"
-msgstr "Forhåndsvisning"
+#: ../../Zotlabs/Module/Achievements.php:38
+msgid "Some blurb about what to do when you're new here"
+msgstr "En standardtekst om hva du bør gjøre som ny her"
-#: ../../include/page_widgets.php:41 ../../mod/webpages.php:191
-msgid "Actions"
-msgstr "Handlinger"
+#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:152
+#: ../../Zotlabs/Module/Editblock.php:108
+msgid "Block Name"
+msgstr "Byggeklossens navn"
-#: ../../include/page_widgets.php:42 ../../mod/webpages.php:192
-msgid "Page Link"
-msgstr "Sidelenke"
+#: ../../Zotlabs/Module/Blocks.php:151 ../../include/text.php:2265
+msgid "Blocks"
+msgstr "Byggeklosser"
-#: ../../include/page_widgets.php:43
-msgid "Title"
-msgstr "Tittel"
+#: ../../Zotlabs/Module/Blocks.php:153
+msgid "Block Title"
+msgstr "Byggeklossens tittel"
-#: ../../include/page_widgets.php:44 ../../mod/blocks.php:150
-#: ../../mod/layouts.php:181 ../../mod/menu.php:110 ../../mod/webpages.php:194
+#: ../../Zotlabs/Module/Blocks.php:154 ../../Zotlabs/Module/Layouts.php:188
+#: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Webpages.php:198
+#: ../../include/page_widgets.php:44
msgid "Created"
msgstr "Laget"
-#: ../../include/page_widgets.php:45 ../../mod/blocks.php:151
-#: ../../mod/layouts.php:182 ../../mod/menu.php:111 ../../mod/webpages.php:195
+#: ../../Zotlabs/Module/Blocks.php:155 ../../Zotlabs/Module/Layouts.php:189
+#: ../../Zotlabs/Module/Menu.php:115 ../../Zotlabs/Module/Webpages.php:199
+#: ../../include/page_widgets.php:45
msgid "Edited"
msgstr "Endret"
-#: ../../include/photo/photo_driver.php:722 ../../mod/photos.php:94
-#: ../../mod/photos.php:711 ../../mod/profile_photo.php:147
-#: ../../mod/profile_photo.php:239 ../../mod/profile_photo.php:327
-msgid "Profile Photos"
-msgstr "Profilbilder"
-
-#: ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23 ../../mod/id.php:103
-msgid "Male"
-msgstr "Mannlig"
-
-#: ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23 ../../mod/id.php:105
-msgid "Female"
-msgstr "Kvinnelig"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Male"
-msgstr "For tiden mann"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Female"
-msgstr "For tiden kvinne"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Male"
-msgstr "For det meste mann"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Female"
-msgstr "For det meste kvinne"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transgender"
-msgstr "Transkjønnet"
-
-#: ../../include/profile_selectors.php:6
-msgid "Intersex"
-msgstr "interkjønnet"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transsexual"
-msgstr "Transseksuell"
-
-#: ../../include/profile_selectors.php:6
-msgid "Hermaphrodite"
-msgstr "Hermafroditt"
-
-#: ../../include/profile_selectors.php:6
-msgid "Neuter"
-msgstr "Intetkjønn"
-
-#: ../../include/profile_selectors.php:6
-msgid "Non-specific"
-msgstr "Ubestemt"
-
-#: ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
-#: ../../include/profile_selectors.php:61
-#: ../../include/profile_selectors.php:97 ../../include/permissions.php:871
-msgid "Other"
-msgstr "Annen"
-
-#: ../../include/profile_selectors.php:6
-msgid "Undecided"
-msgstr "Ubestemt"
-
-#: ../../include/profile_selectors.php:42
-#: ../../include/profile_selectors.php:61
-msgid "Males"
-msgstr "Menn"
-
-#: ../../include/profile_selectors.php:42
-#: ../../include/profile_selectors.php:61
-msgid "Females"
-msgstr "Kvinner"
-
-#: ../../include/profile_selectors.php:42
-msgid "Gay"
-msgstr "Homo"
-
-#: ../../include/profile_selectors.php:42
-msgid "Lesbian"
-msgstr "Lesbisk"
-
-#: ../../include/profile_selectors.php:42
-msgid "No Preference"
-msgstr "Ingen preferanse"
-
-#: ../../include/profile_selectors.php:42
-msgid "Bisexual"
-msgstr "Biseksuell"
-
-#: ../../include/profile_selectors.php:42
-msgid "Autosexual"
-msgstr "Autoseksuell"
-
-#: ../../include/profile_selectors.php:42
-msgid "Abstinent"
-msgstr "Avholdende"
-
-#: ../../include/profile_selectors.php:42
-msgid "Virgin"
-msgstr "Jomfru"
-
-#: ../../include/profile_selectors.php:42
-msgid "Deviant"
-msgstr "Avviker"
-
-#: ../../include/profile_selectors.php:42
-msgid "Fetish"
-msgstr "Fetisj"
-
-#: ../../include/profile_selectors.php:42
-msgid "Oodles"
-msgstr "Masse"
-
-#: ../../include/profile_selectors.php:42
-msgid "Nonsexual"
-msgstr "Ikke-seksuell"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Single"
-msgstr "Enslig"
-
-#: ../../include/profile_selectors.php:80
-msgid "Lonely"
-msgstr "Ensom"
-
-#: ../../include/profile_selectors.php:80
-msgid "Available"
-msgstr "Tilgjengelig"
-
-#: ../../include/profile_selectors.php:80
-msgid "Unavailable"
-msgstr "Ikke tilgjengelig"
-
-#: ../../include/profile_selectors.php:80
-msgid "Has crush"
-msgstr "Er forelsket"
-
-#: ../../include/profile_selectors.php:80
-msgid "Infatuated"
-msgstr "Betatt"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Dating"
-msgstr "Sammen med"
-
-#: ../../include/profile_selectors.php:80
-msgid "Unfaithful"
-msgstr "Utro"
-
-#: ../../include/profile_selectors.php:80
-msgid "Sex Addict"
-msgstr "Sexavhengig"
-
-#: ../../include/profile_selectors.php:80 ../../include/widgets.php:451
-#: ../../include/identity.php:390 ../../include/identity.php:391
-#: ../../include/identity.php:398 ../../mod/connedit.php:584
-#: ../../mod/settings.php:349 ../../mod/settings.php:353
-#: ../../mod/settings.php:354 ../../mod/settings.php:357
-#: ../../mod/settings.php:368
-msgid "Friends"
-msgstr "Venner"
-
-#: ../../include/profile_selectors.php:80
-msgid "Friends/Benefits"
-msgstr "Venner med frynsegoder"
-
-#: ../../include/profile_selectors.php:80
-msgid "Casual"
-msgstr "Tilfeldig"
-
-#: ../../include/profile_selectors.php:80
-msgid "Engaged"
-msgstr "Forlovet"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Married"
-msgstr "Gift"
-
-#: ../../include/profile_selectors.php:80
-msgid "Imaginarily married"
-msgstr "Gift i fantasien"
-
-#: ../../include/profile_selectors.php:80
-msgid "Partners"
-msgstr "Partnere"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Cohabiting"
-msgstr "Samboer"
-
-#: ../../include/profile_selectors.php:80
-msgid "Common law"
-msgstr "Samboer"
-
-#: ../../include/profile_selectors.php:80
-msgid "Happy"
-msgstr "Lykkelig"
-
-#: ../../include/profile_selectors.php:80
-msgid "Not looking"
-msgstr "Ikke på utkikk"
-
-#: ../../include/profile_selectors.php:80
-msgid "Swinger"
-msgstr "Partnerbytte"
-
-#: ../../include/profile_selectors.php:80
-msgid "Betrayed"
-msgstr "Bedratt"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Separated"
-msgstr "Separert"
-
-#: ../../include/profile_selectors.php:80
-msgid "Unstable"
-msgstr "Ustabilt"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Divorced"
-msgstr "Skilt"
-
-#: ../../include/profile_selectors.php:80
-msgid "Imaginarily divorced"
-msgstr "Skilt i fantasien"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Widowed"
-msgstr "Enke"
-
-#: ../../include/profile_selectors.php:80
-msgid "Uncertain"
-msgstr "Usikkert"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "It's complicated"
-msgstr "Det er komplisert"
-
-#: ../../include/profile_selectors.php:80
-msgid "Don't care"
-msgstr "Bryr meg ikke"
-
-#: ../../include/profile_selectors.php:80
-msgid "Ask me"
-msgstr "Spør meg"
-
-#: ../../include/security.php:388
-msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "Skjemaets sikkerhetspollett var ikke gyldig. Dette skjedde antakelig fordi skjemaet har vært åpnet for lenge (>3 timer) før det ble sendt inn."
-
-#: ../../include/taxonomy.php:240 ../../include/taxonomy.php:261
-msgid "Tags"
-msgstr "Merkelapper"
-
-#: ../../include/taxonomy.php:305
-msgid "Keywords"
-msgstr "Nøkkelord"
-
-#: ../../include/taxonomy.php:326
-msgid "have"
-msgstr "har"
-
-#: ../../include/taxonomy.php:326
-msgid "has"
-msgstr "har"
-
-#: ../../include/taxonomy.php:327
-msgid "want"
-msgstr "ønsker"
-
-#: ../../include/taxonomy.php:327
-msgid "wants"
-msgstr "ønsker"
-
-#: ../../include/taxonomy.php:328 ../../include/ItemObject.php:254
-msgid "like"
-msgstr "liker"
-
-#: ../../include/taxonomy.php:328
-msgid "likes"
-msgstr "liker"
-
-#: ../../include/taxonomy.php:329 ../../include/ItemObject.php:255
-msgid "dislike"
-msgstr "misliker"
-
-#: ../../include/taxonomy.php:329
-msgid "dislikes"
-msgstr "misliker"
-
-#: ../../include/taxonomy.php:415 ../../include/identity.php:1264
-#: ../../include/conversation.php:1751 ../../include/ItemObject.php:179
-#: ../../mod/photos.php:1097
-msgctxt "noun"
-msgid "Like"
-msgid_plural "Likes"
-msgstr[0] "Liker"
-msgstr[1] "Liker"
-
-#: ../../include/datetime.php:48
-msgid "Miscellaneous"
-msgstr "Forskjellig"
-
-#: ../../include/datetime.php:132
-msgid "YYYY-MM-DD or MM-DD"
-msgstr "YYYY-MM-DD eller MM-DD"
-
-#: ../../include/datetime.php:236 ../../mod/appman.php:91
-#: ../../mod/appman.php:92 ../../mod/events.php:444 ../../mod/events.php:449
-msgid "Required"
-msgstr "PÃ¥krevd"
-
-#: ../../include/datetime.php:263 ../../boot.php:2374
-msgid "never"
-msgstr "aldri"
-
-#: ../../include/datetime.php:269
-msgid "less than a second ago"
-msgstr "for mindre enn ett sekund siden"
-
-#: ../../include/datetime.php:287
-#, php-format
-msgctxt "e.g. 22 hours ago, 1 minute ago"
-msgid "%1$d %2$s ago"
-msgstr "%1$d %2$s siden"
-
-#: ../../include/datetime.php:298
-msgctxt "relative_date"
-msgid "year"
-msgid_plural "years"
-msgstr[0] "Ã¥r"
-msgstr[1] "Ã¥r"
-
-#: ../../include/datetime.php:301
-msgctxt "relative_date"
-msgid "month"
-msgid_plural "months"
-msgstr[0] "måned"
-msgstr[1] "måneder"
-
-#: ../../include/datetime.php:304
-msgctxt "relative_date"
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "uke"
-msgstr[1] "uker"
-
-#: ../../include/datetime.php:307
-msgctxt "relative_date"
-msgid "day"
-msgid_plural "days"
-msgstr[0] "dag"
-msgstr[1] "dager"
-
-#: ../../include/datetime.php:310
-msgctxt "relative_date"
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "time"
-msgstr[1] "timer"
-
-#: ../../include/datetime.php:313
-msgctxt "relative_date"
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minutt"
-msgstr[1] "minutter"
-
-#: ../../include/datetime.php:316
-msgctxt "relative_date"
-msgid "second"
-msgid_plural "seconds"
-msgstr[0] "sekund"
-msgstr[1] "sekunder"
-
-#: ../../include/datetime.php:553
-#, php-format
-msgid "%1$s's birthday"
-msgstr "%1$s sin fødselsdag"
-
-#: ../../include/datetime.php:554
-#, php-format
-msgid "Happy Birthday %1$s"
-msgstr "Gratulerer med dagen, %1$s !"
-
-#: ../../include/zot.php:675
-msgid "Invalid data packet"
-msgstr "Ugyldig datapakke"
-
-#: ../../include/zot.php:691
-msgid "Unable to verify channel signature"
-msgstr "Ikke i stand til å sjekke kanalsignaturen"
-
-#: ../../include/zot.php:2267
-#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Ikke i stand til å bekrefte signaturen til %s"
-
-#: ../../include/zot.php:3588
-msgid "invalid target signature"
-msgstr "MÃ¥lets signatur er ugyldig"
-
-#: ../../include/contact_selectors.php:56
-msgid "Frequently"
-msgstr "Ofte"
-
-#: ../../include/contact_selectors.php:57
-msgid "Hourly"
-msgstr "Hver time"
-
-#: ../../include/contact_selectors.php:58
-msgid "Twice daily"
-msgstr "To ganger daglig"
-
-#: ../../include/contact_selectors.php:59
-msgid "Daily"
-msgstr "Daglig"
-
-#: ../../include/contact_selectors.php:60
-msgid "Weekly"
-msgstr "Ukentlig"
-
-#: ../../include/contact_selectors.php:61
-msgid "Monthly"
-msgstr "MÃ¥nedlig"
-
-#: ../../include/contact_selectors.php:76
-msgid "Friendica"
-msgstr "Friendica"
-
-#: ../../include/contact_selectors.php:77
-msgid "OStatus"
-msgstr "OStatus"
-
-#: ../../include/contact_selectors.php:78
-msgid "RSS/Atom"
-msgstr "RSS/Atom"
-
-#: ../../include/contact_selectors.php:79 ../../mod/id.php:15
-#: ../../mod/id.php:16 ../../mod/admin.php:989 ../../mod/admin.php:998
-#: ../../boot.php:1545
-msgid "Email"
-msgstr "E-post"
-
-#: ../../include/contact_selectors.php:80
-msgid "Diaspora"
-msgstr "Diaspora"
-
-#: ../../include/contact_selectors.php:81
-msgid "Facebook"
-msgstr "Facebook"
-
-#: ../../include/contact_selectors.php:82
-msgid "Zot"
-msgstr "Zot"
-
-#: ../../include/contact_selectors.php:83
-msgid "LinkedIn"
-msgstr "LinkedIn"
-
-#: ../../include/contact_selectors.php:84
-msgid "XMPP/IM"
-msgstr "XMPP/IM"
-
-#: ../../include/contact_selectors.php:85
-msgid "MySpace"
-msgstr "MySpace"
-
-#: ../../include/network.php:630
-msgid "view full size"
-msgstr "vis full størrelse"
-
-#: ../../include/network.php:1612 ../../include/enotify.php:57
-msgid "$Projectname Notification"
-msgstr "$Projectname varsling"
-
-#: ../../include/network.php:1613 ../../include/enotify.php:58
-msgid "$projectname"
-msgstr "$projectname"
-
-#: ../../include/network.php:1615 ../../include/enotify.php:60
-msgid "Thank You,"
-msgstr "Tusen takk,"
-
-#: ../../include/network.php:1617 ../../include/enotify.php:62
-#, php-format
-msgid "%s Administrator"
-msgstr "%s administrator"
-
-#: ../../include/network.php:1674
-msgid "No Subject"
-msgstr "Uten emne"
-
-#: ../../include/photos.php:112
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "Bilde overstiger nettstedets størrelsesbegrensning på %lu bytes"
-
-#: ../../include/photos.php:119
-msgid "Image file is empty."
-msgstr "Bildefilen er tom."
-
-#: ../../include/photos.php:146 ../../mod/profile_photo.php:225
-#: ../../mod/cover_photo.php:164
-msgid "Unable to process image"
-msgstr "Kan ikke behandle bildet"
-
-#: ../../include/photos.php:257
-msgid "Photo storage failed."
-msgstr "Bildelagring mislyktes."
-
-#: ../../include/photos.php:297
-msgid "a new photo"
-msgstr "et nytt bilde"
-
-#: ../../include/photos.php:301
-#, php-format
-msgctxt "photo_upload"
-msgid "%1$s posted %2$s to %3$s"
-msgstr "%1$s la inn %2$s til %3$s"
-
-#: ../../include/photos.php:506 ../../include/conversation.php:1644
-msgid "Photo Albums"
-msgstr "Fotoalbum"
-
-#: ../../include/photos.php:510
-msgid "Upload New Photos"
-msgstr "Last opp nye bilder"
-
-#: ../../include/features.php:48
-msgid "General Features"
-msgstr "Generelle funksjoner"
-
-#: ../../include/features.php:50
-msgid "Content Expiration"
-msgstr "Innholdet utløper"
-
-#: ../../include/features.php:50
-msgid "Remove posts/comments and/or private messages at a future time"
-msgstr "Fjern innlegg/kommentarer og/eller private meldinger på et angitt tidspunkt i fremtiden"
-
-#: ../../include/features.php:51
-msgid "Multiple Profiles"
-msgstr "Flere profiler"
-
-#: ../../include/features.php:51
-msgid "Ability to create multiple profiles"
-msgstr "Mulig å lage flere profiler"
-
-#: ../../include/features.php:52
-msgid "Advanced Profiles"
-msgstr "Avanserte profiler"
-
-#: ../../include/features.php:52
-msgid "Additional profile sections and selections"
-msgstr "Ytterlige seksjoner og utvalg til profilen"
-
-#: ../../include/features.php:53
-msgid "Profile Import/Export"
-msgstr "Profil-import/-eksport"
-
-#: ../../include/features.php:53
-msgid "Save and load profile details across sites/channels"
-msgstr "Lagre og åpne profildetaljer på tvers av nettsteder/kanaler"
-
-#: ../../include/features.php:54
-msgid "Web Pages"
-msgstr "Web-sider"
-
-#: ../../include/features.php:54
-msgid "Provide managed web pages on your channel"
-msgstr "Tilby kontrollerte web-sider på din kanal"
-
-#: ../../include/features.php:55
-msgid "Hide Rating"
-msgstr "Skjul vurdering"
-
-#: ../../include/features.php:55
-msgid ""
-"Hide the rating buttons on your channel and profile pages. Note: People can "
-"still rate you somewhere else."
-msgstr "Skjul vurderingsknappene for din kanal og profilsider. Merknad: folk kan fortsatt vurdere deg et annet sted."
-
-#: ../../include/features.php:56
-msgid "Private Notes"
-msgstr "Private merknader"
-
-#: ../../include/features.php:56
-msgid "Enables a tool to store notes and reminders (note: not encrypted)"
-msgstr "Skru på et verktøy for å lagre notater og påminnelser (merknad: ikke kryptert)"
-
-#: ../../include/features.php:57
-msgid "Navigation Channel Select"
-msgstr "Navigasjon kanalvalg"
-
-#: ../../include/features.php:57
-msgid "Change channels directly from within the navigation dropdown menu"
-msgstr "Endre kanaler direkte fra navigasjonsmenyen"
-
-#: ../../include/features.php:58
-msgid "Photo Location"
-msgstr "Bildeplassering"
-
-#: ../../include/features.php:58
-msgid "If location data is available on uploaded photos, link this to a map."
-msgstr "Hvis plasseringsdata er tilgjengelige i opplastede bilder, plasser dette på et kart."
-
-#: ../../include/features.php:60
-msgid "Expert Mode"
-msgstr "Ekspertmodus"
-
-#: ../../include/features.php:60
-msgid "Enable Expert Mode to provide advanced configuration options"
-msgstr "Skru på Ekspertmodus for å tilby avanserte konfigurasjonsvalg"
-
-#: ../../include/features.php:61
-msgid "Premium Channel"
-msgstr "Premiumkanal"
-
-#: ../../include/features.php:61
-msgid ""
-"Allows you to set restrictions and terms on those that connect with your "
-"channel"
-msgstr "Lar deg angi restriksjoner og betingelser for de som kobler seg til din kanal"
-
-#: ../../include/features.php:66
-msgid "Post Composition Features"
-msgstr "Funksjoner for å lage innlegg"
-
-#: ../../include/features.php:68
-msgid "Use Markdown"
-msgstr "Bruk Markdown"
-
-#: ../../include/features.php:68
-msgid "Allow use of \"Markdown\" to format posts"
-msgstr "Tillat bruk av \"Markdown\" til formatering av innlegg"
-
-#: ../../include/features.php:69
-msgid "Large Photos"
-msgstr "Store bilder"
-
-#: ../../include/features.php:69
-msgid ""
-"Include large (1024px) photo thumbnails in posts. If not enabled, use small "
-"(640px) photo thumbnails"
-msgstr "Inkluder store (1024px) småbilder i innlegg. Hvis denne ikke er påskrudd, bruk små (640px) småbilder."
-
-#: ../../include/features.php:70 ../../include/widgets.php:572
-#: ../../mod/sources.php:88
-msgid "Channel Sources"
-msgstr "Kanalkilder"
-
-#: ../../include/features.php:70
-msgid "Automatically import channel content from other channels or feeds"
-msgstr "Automatisk import av kanalinnhold fra andre kanaler eller strømmer"
-
-#: ../../include/features.php:71
-msgid "Even More Encryption"
-msgstr "Enda mer kryptering"
-
-#: ../../include/features.php:71
-msgid ""
-"Allow optional encryption of content end-to-end with a shared secret key"
-msgstr "Tillat valgfri kryptering av innhold ende-til-ende via en delt hemmelig nøkkel"
-
-#: ../../include/features.php:72
-msgid "Enable Voting Tools"
-msgstr "Skru på verktøy for å stemme"
-
-#: ../../include/features.php:72
-msgid "Provide a class of post which others can vote on"
-msgstr "Tilby en type innlegg som andre kan stemme på"
-
-#: ../../include/features.php:73
-msgid "Delayed Posting"
-msgstr "Tidfest publisering"
-
-#: ../../include/features.php:73
-msgid "Allow posts to be published at a later date"
-msgstr "Tillat innlegg å bli publisert på et senere tidspunkt"
-
-#: ../../include/features.php:74
-msgid "Suppress Duplicate Posts/Comments"
-msgstr "Forhindre duplikat av innlegg/kommentarer"
-
-#: ../../include/features.php:74
-msgid ""
-"Prevent posts with identical content to be published with less than two "
-"minutes in between submissions."
-msgstr "Forhindre innlegg med identisk innhold fra å bli publisert hvis det er mindre enn to minutter mellom innsendingene."
-
-#: ../../include/features.php:80
-msgid "Network and Stream Filtering"
-msgstr "Nettverk- og strømfiltrering"
-
-#: ../../include/features.php:81
-msgid "Search by Date"
-msgstr "Søk etter dato"
-
-#: ../../include/features.php:81
-msgid "Ability to select posts by date ranges"
-msgstr "Mulighet for å velge innlegg etter datoområde"
-
-#: ../../include/features.php:82 ../../include/group.php:295
-msgid "Privacy Groups"
-msgstr "Personverngrupper"
-
-#: ../../include/features.php:82
-msgid "Enable management and selection of privacy groups"
-msgstr "Skru på håndtering og valg av personverngrupper"
-
-#: ../../include/features.php:83 ../../include/widgets.php:284
-msgid "Saved Searches"
-msgstr "Lagrede søk"
-
-#: ../../include/features.php:83
-msgid "Save search terms for re-use"
-msgstr "Lagre søkeuttrykk for senere bruk"
-
-#: ../../include/features.php:84
-msgid "Network Personal Tab"
-msgstr "Nettverk personlig fane"
-
-#: ../../include/features.php:84
-msgid "Enable tab to display only Network posts that you've interacted on"
-msgstr "Skru på fane for å bare vise Nettverksinnlegg som du har deltatt i"
-
-#: ../../include/features.php:85
-msgid "Network New Tab"
-msgstr "Nettverk Ny fane"
-
-#: ../../include/features.php:85
-msgid "Enable tab to display all new Network activity"
-msgstr "Skru på fane for å vise all ny nettverksaktivitet"
-
-#: ../../include/features.php:86
-msgid "Affinity Tool"
-msgstr "Nærhetsverktøy"
-
-#: ../../include/features.php:86
-msgid "Filter stream activity by depth of relationships"
-msgstr "Filtrer strømaktiviteten etter releasjonsdybde"
-
-#: ../../include/features.php:87
-msgid "Connection Filtering"
-msgstr "Filtrer forbindelser"
-
-#: ../../include/features.php:87
-msgid "Filter incoming posts from connections based on keywords/content"
-msgstr "Filtrer innkommende innlegg fra forbindelser basert på nøkkelord/innhold"
-
-#: ../../include/features.php:88
-msgid "Suggest Channels"
-msgstr "Foreslå kanaler"
-
-#: ../../include/features.php:88
-msgid "Show channel suggestions"
-msgstr "Vis kanalforslag"
-
-#: ../../include/features.php:93
-msgid "Post/Comment Tools"
-msgstr "Innlegg-/Kommentar-verktøy"
-
-#: ../../include/features.php:94
-msgid "Community Tagging"
-msgstr "Felleskapsmerkelapper"
-
-#: ../../include/features.php:94
-msgid "Ability to tag existing posts"
-msgstr "Mulighet til å merke eksisterende meldinger"
-
-#: ../../include/features.php:95
-msgid "Post Categories"
-msgstr "Innleggskategorier"
-
-#: ../../include/features.php:95
-msgid "Add categories to your posts"
-msgstr "Legg kategorier til dine innlegg"
-
-#: ../../include/features.php:96
-msgid "Ability to file posts under folders"
-msgstr "Mulighet til å sortere innlegg i mapper"
-
-#: ../../include/features.php:97
-msgid "Dislike Posts"
-msgstr "Mislik innlegg"
-
-#: ../../include/features.php:97
-msgid "Ability to dislike posts/comments"
-msgstr "Mulighet til å mislike innlegg/kommentarer"
-
-#: ../../include/features.php:98
-msgid "Star Posts"
-msgstr "Stjerneinnlegg"
-
-#: ../../include/features.php:98
-msgid "Ability to mark special posts with a star indicator"
-msgstr "Mulighet til å merke spesielle innlegg med en stjerne"
-
-#: ../../include/features.php:99
-msgid "Tag Cloud"
-msgstr "Merkelappsky"
-
-#: ../../include/features.php:99
-msgid "Provide a personal tag cloud on your channel page"
-msgstr "Tilby en personlig merkelappsky på din kanalside"
-
-#: ../../include/widgets.php:103
-msgid "System"
-msgstr "System"
-
-#: ../../include/widgets.php:105 ../../include/conversation.php:1536
-msgid "Personal"
-msgstr "Personlig"
-
-#: ../../include/widgets.php:106
-msgid "Create Personal App"
-msgstr "Lag personlig app"
-
-#: ../../include/widgets.php:107
-msgid "Edit Personal App"
-msgstr "Endre personlig app"
-
-#: ../../include/widgets.php:149 ../../mod/suggest.php:54
-msgid "Ignore/Hide"
-msgstr "Ignorer/Skjul"
-
-#: ../../include/widgets.php:154
-msgid "Suggestions"
-msgstr "Forslag"
-
-#: ../../include/widgets.php:155
-msgid "See more..."
-msgstr "Se mer..."
-
-#: ../../include/widgets.php:176
-#, php-format
-msgid "You have %1$.0f of %2$.0f allowed connections."
-msgstr "Du har %1$.0f av %2$.0f tillate forbindelser."
-
-#: ../../include/widgets.php:182
-msgid "Add New Connection"
-msgstr "Legg til ny forbindelse"
-
-#: ../../include/widgets.php:183
-msgid "Enter channel address"
-msgstr "Skriv kanaladressen"
-
-#: ../../include/widgets.php:184
-msgid "Examples: bob@example.com, https://example.com/barbara"
-msgstr "Eksempel: ola@eksempel.no, https://eksempel.no/kari"
-
-#: ../../include/widgets.php:200
-msgid "Notes"
-msgstr "Merknader"
-
-#: ../../include/widgets.php:202 ../../include/text.php:886
-#: ../../include/text.php:898 ../../mod/filer.php:49 ../../mod/admin.php:1666
-#: ../../mod/admin.php:1686 ../../mod/rbmark.php:28 ../../mod/rbmark.php:100
-msgid "Save"
-msgstr "Lagre"
-
-#: ../../include/widgets.php:276
-msgid "Remove term"
-msgstr "Fjern begrep"
-
-#: ../../include/widgets.php:285 ../../include/group.php:300
-msgid "add"
-msgstr "legg til"
-
-#: ../../include/widgets.php:359
-msgid "Archives"
-msgstr "Arkiv"
-
-#: ../../include/widgets.php:449 ../../mod/connedit.php:582
-msgid "Me"
-msgstr "Meg"
-
-#: ../../include/widgets.php:450 ../../mod/connedit.php:583
-msgid "Family"
-msgstr "Familie"
-
-#: ../../include/widgets.php:452 ../../mod/connedit.php:585
-msgid "Acquaintances"
-msgstr "Bekjente"
-
-#: ../../include/widgets.php:453 ../../mod/connections.php:88
-#: ../../mod/connections.php:103 ../../mod/connedit.php:586
-msgid "All"
-msgstr "Alle"
-
-#: ../../include/widgets.php:472
-msgid "Refresh"
-msgstr "Forny"
-
-#: ../../include/widgets.php:506
-msgid "Account settings"
-msgstr "Kontoinnstillinger"
-
-#: ../../include/widgets.php:512
-msgid "Channel settings"
-msgstr "Kanalinnstillinger"
-
-#: ../../include/widgets.php:521
-msgid "Additional features"
-msgstr "Tilleggsfunksjoner"
-
-#: ../../include/widgets.php:528
-msgid "Feature/Addon settings"
-msgstr "Funksjons-/Tilleggsinnstillinger"
-
-#: ../../include/widgets.php:534
-msgid "Display settings"
-msgstr "Visningsinnstillinger"
-
-#: ../../include/widgets.php:540
-msgid "Connected apps"
-msgstr "Tilkoblede app-er"
-
-#: ../../include/widgets.php:548
-msgid "Export channel"
-msgstr "Eksporter kanal"
-
-#: ../../include/widgets.php:556 ../../mod/connedit.php:694
-msgid "Connection Default Permissions"
-msgstr "Forbindelsens standard tillatelser"
-
-#: ../../include/widgets.php:564
-msgid "Premium Channel Settings"
-msgstr "Premiumkanal-innstillinger"
-
-#: ../../include/widgets.php:594
-msgid "Private Mail Menu"
-msgstr "Meny for privat post"
-
-#: ../../include/widgets.php:596
-msgid "Combined View"
-msgstr "Kombinert visning"
+#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:191
+#: ../../Zotlabs/Module/Photos.php:1072 ../../Zotlabs/Module/Webpages.php:188
+#: ../../include/conversation.php:1208
+msgid "Share"
+msgstr "Del"
-#: ../../include/widgets.php:630 ../../include/widgets.php:642
-msgid "Conversations"
-msgstr "Samtaler"
+#: ../../Zotlabs/Module/Blocks.php:163 ../../Zotlabs/Module/Layouts.php:195
+#: ../../Zotlabs/Module/Pubsites.php:47 ../../Zotlabs/Module/Webpages.php:193
+#: ../../include/page_widgets.php:39
+msgid "View"
+msgstr "Vis"
-#: ../../include/widgets.php:634
-msgid "Received Messages"
-msgstr "Mottatte meldinger"
+#: ../../Zotlabs/Module/Cal.php:62 ../../Zotlabs/Module/Block.php:43
+#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Wall_upload.php:33
+msgid "Channel not found."
+msgstr "Kanalen ble ikke funnet."
-#: ../../include/widgets.php:638
-msgid "Sent Messages"
-msgstr "Sendte meldinger"
+#: ../../Zotlabs/Module/Cal.php:69
+msgid "Permissions denied."
+msgstr "Tillatelse avvist."
-#: ../../include/widgets.php:652
-msgid "No messages."
-msgstr "Ingen meldinger."
+#: ../../Zotlabs/Module/Cal.php:259 ../../Zotlabs/Module/Events.php:588
+msgid "l, F j"
+msgstr "l, F j"
-#: ../../include/widgets.php:670
-msgid "Delete conversation"
-msgstr "Slett samtale"
+#: ../../Zotlabs/Module/Cal.php:308 ../../Zotlabs/Module/Events.php:637
+#: ../../include/text.php:1732
+msgid "Link to Source"
+msgstr "Lenke til kilde"
-#: ../../include/widgets.php:696
-msgid "Events Menu"
-msgstr "Meny for hendelser"
+#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:665
+msgid "Edit Event"
+msgstr "Endre hendelse"
-#: ../../include/widgets.php:697
-msgid "Day View"
-msgstr "Dag"
+#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:665
+msgid "Create Event"
+msgstr "Lag hendelse"
-#: ../../include/widgets.php:698
-msgid "Week View"
-msgstr "Uke"
+#: ../../Zotlabs/Module/Cal.php:332 ../../Zotlabs/Module/Cal.php:339
+#: ../../Zotlabs/Module/Events.php:666 ../../Zotlabs/Module/Events.php:673
+#: ../../Zotlabs/Module/Photos.php:949
+msgid "Previous"
+msgstr "Forrige"
-#: ../../include/widgets.php:699
-msgid "Month View"
-msgstr "MÃ¥ned"
+#: ../../Zotlabs/Module/Cal.php:333 ../../Zotlabs/Module/Cal.php:340
+#: ../../Zotlabs/Module/Events.php:667 ../../Zotlabs/Module/Events.php:674
+#: ../../Zotlabs/Module/Photos.php:958 ../../Zotlabs/Module/Setup.php:267
+msgid "Next"
+msgstr "Neste"
-#: ../../include/widgets.php:700 ../../mod/events.php:661
-#: ../../mod/cal.php:328
+#: ../../Zotlabs/Module/Cal.php:334 ../../Zotlabs/Module/Events.php:668
+#: ../../include/widgets.php:755
msgid "Export"
msgstr "Eksport"
-#: ../../include/widgets.php:701 ../../mod/events.php:664
-#: ../../mod/cal.php:331
+#: ../../Zotlabs/Module/Cal.php:337 ../../Zotlabs/Module/Events.php:671
+#: ../../include/widgets.php:756
msgid "Import"
msgstr "Importer"
-#: ../../include/widgets.php:711
-msgid "Events Tools"
-msgstr "Kalenderverktøy"
-
-#: ../../include/widgets.php:712
-msgid "Export Calendar"
-msgstr "Eksporter kalender"
-
-#: ../../include/widgets.php:713
-msgid "Import Calendar"
-msgstr "Importer kalender"
-
-#: ../../include/widgets.php:787
-msgid "Chat Rooms"
-msgstr "Chatrom"
-
-#: ../../include/widgets.php:807
-msgid "Bookmarked Chatrooms"
-msgstr "Bokmerkede chatrom"
-
-#: ../../include/widgets.php:827
-msgid "Suggested Chatrooms"
-msgstr "Foreslåtte chatrom"
-
-#: ../../include/widgets.php:972 ../../include/widgets.php:1062
-msgid "photo/image"
-msgstr "foto/bilde"
-
-#: ../../include/widgets.php:1156
-msgid "Rating Tools"
-msgstr "Vurderingsverktøy"
-
-#: ../../include/widgets.php:1160 ../../include/widgets.php:1162
-msgid "Rate Me"
-msgstr "Vurder meg"
-
-#: ../../include/widgets.php:1165
-msgid "View Ratings"
-msgstr "Vis vurderinger"
-
-#: ../../include/widgets.php:1176 ../../mod/pubsites.php:18
-msgid "Public Hubs"
-msgstr "Offentlige huber"
-
-#: ../../include/widgets.php:1224
-msgid "Forums"
-msgstr "Forum"
-
-#: ../../include/widgets.php:1253
-msgid "Tasks"
-msgstr "Oppgaver"
-
-#: ../../include/widgets.php:1262
-msgid "Documentation"
-msgstr "Dokumentasjon"
-
-#: ../../include/widgets.php:1264
-msgid "Project/Site Information"
-msgstr "Prosjekt-/Nettstedsinformasjon"
-
-#: ../../include/widgets.php:1265
-msgid "For Members"
-msgstr "For medlemmer"
-
-#: ../../include/widgets.php:1266
-msgid "For Administrators"
-msgstr "For administratorer"
-
-#: ../../include/widgets.php:1267
-msgid "For Developers"
-msgstr "For utviklere"
-
-#: ../../include/widgets.php:1292 ../../mod/admin.php:456
-msgid "Site"
-msgstr "Nettsted"
-
-#: ../../include/widgets.php:1293
-msgid "Accounts"
-msgstr "Kontoer"
-
-#: ../../include/widgets.php:1294 ../../mod/admin.php:1149
-msgid "Channels"
-msgstr "Kanaler"
-
-#: ../../include/widgets.php:1295 ../../mod/admin.php:710
-msgid "Security"
-msgstr "Sikkerhet"
-
-#: ../../include/widgets.php:1297 ../../mod/admin.php:1264
-#: ../../mod/admin.php:1325
-msgid "Plugins"
-msgstr "Tilleggsfunksjoner"
-
-#: ../../include/widgets.php:1298 ../../mod/admin.php:1486
-#: ../../mod/admin.php:1520
-msgid "Themes"
-msgstr "Temaer"
-
-#: ../../include/widgets.php:1299
-msgid "Inspect queue"
-msgstr "Inspiser kø"
-
-#: ../../include/widgets.php:1300
-msgid "Profile Config"
-msgstr "Profilinnstillinger"
-
-#: ../../include/widgets.php:1301
-msgid "DB updates"
-msgstr "Databaseoppdateringer"
-
-#: ../../include/widgets.php:1319 ../../include/widgets.php:1325
-#: ../../mod/admin.php:1605
-msgid "Logs"
-msgstr "Logger"
-
-#: ../../include/widgets.php:1324
-msgid "Plugin Features"
-msgstr "Tilleggsfunksjoner"
-
-#: ../../include/widgets.php:1326
-msgid "User registrations waiting for confirmation"
-msgstr "Brukerregistreringer som venter på bekreftelse"
-
-#: ../../include/widgets.php:1404 ../../mod/photos.php:760
-#: ../../mod/photos.php:1300
-msgid "View Photo"
-msgstr "Vis foto"
-
-#: ../../include/widgets.php:1421 ../../mod/photos.php:791
-msgid "Edit Album"
-msgstr "Endre album"
-
-#: ../../include/text.php:394
-msgid "prev"
-msgstr "forrige"
-
-#: ../../include/text.php:396
-msgid "first"
-msgstr "første"
-
-#: ../../include/text.php:425
-msgid "last"
-msgstr "siste"
-
-#: ../../include/text.php:428
-msgid "next"
-msgstr "neste"
-
-#: ../../include/text.php:438
-msgid "older"
-msgstr "eldre"
-
-#: ../../include/text.php:440
-msgid "newer"
-msgstr "nyere"
-
-#: ../../include/text.php:803
-msgid "No connections"
-msgstr "Ingen forbindelser"
-
-#: ../../include/text.php:828
-#, php-format
-msgid "View all %s connections"
-msgstr "Vis alle %s forbindelser"
-
-#: ../../include/text.php:973 ../../include/text.php:978
-msgid "poke"
-msgstr "prikk"
-
-#: ../../include/text.php:973 ../../include/text.php:978
-#: ../../include/conversation.php:243
-msgid "poked"
-msgstr "prikket"
-
-#: ../../include/text.php:979
-msgid "ping"
-msgstr "varsle"
-
-#: ../../include/text.php:979
-msgid "pinged"
-msgstr "varslet"
-
-#: ../../include/text.php:980
-msgid "prod"
-msgstr "oppildne"
-
-#: ../../include/text.php:980
-msgid "prodded"
-msgstr "oppildnet"
-
-#: ../../include/text.php:981
-msgid "slap"
-msgstr "daske"
-
-#: ../../include/text.php:981
-msgid "slapped"
-msgstr "dasket"
-
-#: ../../include/text.php:982
-msgid "finger"
-msgstr "fingre"
-
-#: ../../include/text.php:982
-msgid "fingered"
-msgstr "fingret"
-
-#: ../../include/text.php:983
-msgid "rebuff"
-msgstr "tilbakevise"
-
-#: ../../include/text.php:983
-msgid "rebuffed"
-msgstr "tilbakeviste"
-
-#: ../../include/text.php:995
-msgid "happy"
-msgstr "glad"
-
-#: ../../include/text.php:996
-msgid "sad"
-msgstr "trist"
-
-#: ../../include/text.php:997
-msgid "mellow"
-msgstr "dempet"
-
-#: ../../include/text.php:998
-msgid "tired"
-msgstr "trøtt"
-
-#: ../../include/text.php:999
-msgid "perky"
-msgstr "oppkvikket"
-
-#: ../../include/text.php:1000
-msgid "angry"
-msgstr "sint"
-
-#: ../../include/text.php:1001
-msgid "stupefied"
-msgstr "lamslått"
-
-#: ../../include/text.php:1002
-msgid "puzzled"
-msgstr "forundret"
-
-#: ../../include/text.php:1003
-msgid "interested"
-msgstr "interessert"
-
-#: ../../include/text.php:1004
-msgid "bitter"
-msgstr "bitter"
-
-#: ../../include/text.php:1005
-msgid "cheerful"
-msgstr "munter"
-
-#: ../../include/text.php:1006
-msgid "alive"
-msgstr "levende"
-
-#: ../../include/text.php:1007
-msgid "annoyed"
-msgstr "irritert"
-
-#: ../../include/text.php:1008
-msgid "anxious"
-msgstr "nervøs"
-
-#: ../../include/text.php:1009
-msgid "cranky"
-msgstr "gretten"
-
-#: ../../include/text.php:1010
-msgid "disturbed"
-msgstr "foruroliget"
-
-#: ../../include/text.php:1011
-msgid "frustrated"
-msgstr "frustrert"
-
-#: ../../include/text.php:1012
-msgid "depressed"
-msgstr "lei seg"
-
-#: ../../include/text.php:1013
-msgid "motivated"
-msgstr "motivert"
-
-#: ../../include/text.php:1014
-msgid "relaxed"
-msgstr "avslappet"
-
-#: ../../include/text.php:1015
-msgid "surprised"
-msgstr "overrasket"
-
-#: ../../include/text.php:1191
-msgid "May"
-msgstr "mai"
-
-#: ../../include/text.php:1268 ../../include/text.php:1272
-msgid "Unknown Attachment"
-msgstr "Ukjent vedlegg"
-
-#: ../../include/text.php:1274
-msgid "unknown"
-msgstr "ukjent"
-
-#: ../../include/text.php:1310
-msgid "remove category"
-msgstr "fjern kategori"
-
-#: ../../include/text.php:1387
-msgid "remove from file"
-msgstr "fjern fra fil"
-
-#: ../../include/text.php:1529 ../../include/text.php:1540
-msgid "Click to open/close"
-msgstr "Klikk for å åpne/lukke"
-
-#: ../../include/text.php:1724 ../../mod/events.php:630 ../../mod/cal.php:302
-msgid "Link to Source"
-msgstr "Lenke til kilde"
-
-#: ../../include/text.php:1745 ../../include/text.php:1817
-msgid "default"
-msgstr "standard"
-
-#: ../../include/text.php:1753
-msgid "Page layout"
-msgstr "Sidens layout"
-
-#: ../../include/text.php:1753
-msgid "You can create your own with the layouts tool"
-msgstr "Du kan lage din egen med layout-verktøyet"
-
-#: ../../include/text.php:1795
-msgid "Page content type"
-msgstr "Sidens innholdstype"
-
-#: ../../include/text.php:1829
-msgid "Select an alternate language"
-msgstr "Velg et annet språk"
-
-#: ../../include/text.php:1948 ../../include/conversation.php:120
-#: ../../mod/like.php:361 ../../mod/subthread.php:83 ../../mod/tagger.php:43
-msgid "photo"
-msgstr "foto"
-
-#: ../../include/text.php:1954 ../../include/conversation.php:148
-#: ../../mod/like.php:361 ../../mod/subthread.php:83
-msgid "status"
-msgstr "status"
-
-#: ../../include/text.php:1956 ../../include/conversation.php:150
-#: ../../mod/tagger.php:53
-msgid "comment"
-msgstr "kommentar"
-
-#: ../../include/text.php:1961
-msgid "activity"
-msgstr "aktivitet"
-
-#: ../../include/text.php:2256
-msgid "Design Tools"
-msgstr "Designverktøy"
-
-#: ../../include/text.php:2259 ../../mod/blocks.php:147
-msgid "Blocks"
-msgstr "Byggeklosser"
-
-#: ../../include/text.php:2260 ../../mod/menu.php:103
-msgid "Menus"
-msgstr "Menyer"
-
-#: ../../include/text.php:2261 ../../mod/layouts.php:174
-msgid "Layouts"
-msgstr "Layout"
-
-#: ../../include/text.php:2262
-msgid "Pages"
-msgstr "Sider"
-
-#: ../../include/group.php:26
-msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "En slettet gruppe med dette navnet ble gjenopprettet. Eksisterende tillatelser for elementet <strong>kan</strong> gjelde for denne gruppen og fremtidige medlemmer. Hvis du ønsket noe annet, vennligst lag en ny gruppe med et annet navn."
-
-#: ../../include/group.php:232
-msgid "Add new connections to this privacy group"
-msgstr "Legg nye forbindelser i denne personverngruppen"
-
-#: ../../include/group.php:251 ../../mod/admin.php:998
-msgid "All Channels"
-msgstr "Alle kanaler"
-
-#: ../../include/group.php:273
-msgid "edit"
-msgstr "endre"
-
-#: ../../include/group.php:296
-msgid "Edit group"
-msgstr "Endre gruppe"
-
-#: ../../include/group.php:297
-msgid "Add privacy group"
-msgstr "Legg til personverngruppe"
-
-#: ../../include/group.php:298
-msgid "Channels not in any privacy group"
-msgstr "Kanaler uten personverngruppe"
-
-#: ../../include/enotify.php:96
-#, php-format
-msgid "%s <!item_type!>"
-msgstr "%s <!item_type!>"
-
-#: ../../include/enotify.php:100
-#, php-format
-msgid "[Hubzilla:Notify] New mail received at %s"
-msgstr "[Hubzilla:Notify] Ny melding mottatt hos %s"
-
-#: ../../include/enotify.php:102
-#, php-format
-msgid "%1$s, %2$s sent you a new private message at %3$s."
-msgstr "%1$s, %2$s sendte deg en ny privat melding på %3$s."
-
-#: ../../include/enotify.php:103
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s sendte deg %2$s."
-
-#: ../../include/enotify.php:103
-msgid "a private message"
-msgstr "en privat melding"
-
-#: ../../include/enotify.php:104
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Vennligst besøk %s for å se og/eller svare på dine private meldinger."
-
-#: ../../include/enotify.php:160
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
-msgstr "%1$s, %2$s kommenterte på [zrl=%3$s]a %4$s[/zrl]"
-
-#: ../../include/enotify.php:168
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
-msgstr "%1$s, %2$s kommenterte på [zrl=%3$s]%4$s's %5$s[/zrl]"
-
-#: ../../include/enotify.php:177
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s kommenterte på [zrl=%3$s]din %4$s[/zrl]"
-
-#: ../../include/enotify.php:188
-#, php-format
-msgid "[Hubzilla:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Hubzilla:Notify] Kommentar til samtale #%1$d av %2$s"
-
-#: ../../include/enotify.php:189
-#, php-format
-msgid "%1$s, %2$s commented on an item/conversation you have been following."
-msgstr "%1$s, %2$s kommenterte på et element eller en samtale du følger"
-
-#: ../../include/enotify.php:192 ../../include/enotify.php:207
-#: ../../include/enotify.php:233 ../../include/enotify.php:251
-#: ../../include/enotify.php:265
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Vennligst besøk %s for å se og/eller svare i samtalen"
-
-#: ../../include/enotify.php:198
-#, php-format
-msgid "[Hubzilla:Notify] %s posted to your profile wall"
-msgstr "[Hubzilla:Notify] %s skrev et innlegg på din profilvegg"
-
-#: ../../include/enotify.php:200
-#, php-format
-msgid "%1$s, %2$s posted to your profile wall at %3$s"
-msgstr "%1$s, %2$s skrev et innlegg på din profilvegg på %3$s"
-
-#: ../../include/enotify.php:202
-#, php-format
-msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
-msgstr "%1$s, %2$s skrev et innlegg på [zrl=%3$s]din vegg[/zrl]"
-
-#: ../../include/enotify.php:226
-#, php-format
-msgid "[Hubzilla:Notify] %s tagged you"
-msgstr "[Hubzilla:Notify] %s merket deg"
-
-#: ../../include/enotify.php:227
-#, php-format
-msgid "%1$s, %2$s tagged you at %3$s"
-msgstr "%1$s, %2$s merket deg på %3$s"
-
-#: ../../include/enotify.php:228
-#, php-format
-msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%3$s]merket deg[/zrl]."
-
-#: ../../include/enotify.php:240
-#, php-format
-msgid "[Hubzilla:Notify] %1$s poked you"
-msgstr "[Hubzilla:Notify] %1$s prikket deg"
-
-#: ../../include/enotify.php:241
-#, php-format
-msgid "%1$s, %2$s poked you at %3$s"
-msgstr "%1$s, %2$s dyttet deg på %3$s"
-
-#: ../../include/enotify.php:242
-#, php-format
-msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%2$s]dyttet deg[/zrl]."
-
-#: ../../include/enotify.php:258
-#, php-format
-msgid "[Hubzilla:Notify] %s tagged your post"
-msgstr "[Hubzilla:Notify] %s merket ditt innlegg"
-
-#: ../../include/enotify.php:259
-#, php-format
-msgid "%1$s, %2$s tagged your post at %3$s"
-msgstr "%1$s, %2$s merket ditt innlegg på %3$s"
-
-#: ../../include/enotify.php:260
-#, php-format
-msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
-msgstr "%1$s, %2$s merket [zrl=%3$s]ditt innlegg[/zrl]"
-
-#: ../../include/enotify.php:272
-msgid "[Hubzilla:Notify] Introduction received"
-msgstr "[Hubzilla:Notify] Introduksjon mottatt"
-
-#: ../../include/enotify.php:273
-#, php-format
-msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
-msgstr "%1$s, du har mottatt en ny forespørsel om forbindelse fra '%2$s' hos %3$s"
-
-#: ../../include/enotify.php:274
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
-msgstr "%1$s, du mottok [zrl=%2$s]en ny forespørsel om forbindelse[/zrl] fra %3$s."
-
-#: ../../include/enotify.php:278 ../../include/enotify.php:297
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "Du kan besøke profilen deres på %s"
-
-#: ../../include/enotify.php:280
-#, php-format
-msgid "Please visit %s to approve or reject the connection request."
-msgstr "Vennligst besøk %s for å godkjenne eller avslå forespørselen om forbindelse."
-
-#: ../../include/enotify.php:287
-msgid "[Hubzilla:Notify] Friend suggestion received"
-msgstr "[Hubzilla:Notify] Venneforslag mottatt"
-
-#: ../../include/enotify.php:288
-#, php-format
-msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
-msgstr "%1$s, du har mottatt en venneforespørsel fra '%2$s' hos %3$s"
-
-#: ../../include/enotify.php:289
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
-"%4$s."
-msgstr "%1$s, du har mottatt [zrl=%2$s]et venneforslaget[/zrl] angående %3$s fra %4$s. "
-
-#: ../../include/enotify.php:295
-msgid "Name:"
-msgstr "Navn:"
-
-#: ../../include/enotify.php:296
-msgid "Photo:"
-msgstr "Bilde:"
-
-#: ../../include/enotify.php:299
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Vennligst besøk %s for å godkjenne eller avslå dette forslaget."
-
-#: ../../include/enotify.php:514
-msgid "[Hubzilla:Notify]"
-msgstr "[Hubzilla:Notify]"
-
-#: ../../include/identity.php:32
-msgid "Unable to obtain identity information from database"
-msgstr "Klarer ikke å få tak i identitetsinformasjon fra databasen"
-
-#: ../../include/identity.php:66
-msgid "Empty name"
-msgstr "Mangler navn"
-
-#: ../../include/identity.php:69
-msgid "Name too long"
-msgstr "Navnet er for langt"
-
-#: ../../include/identity.php:181
-msgid "No account identifier"
-msgstr "Ingen kontoidentifikator"
-
-#: ../../include/identity.php:193
-msgid "Nickname is required."
-msgstr "Kallenavn er påkrevd."
-
-#: ../../include/identity.php:207
-msgid "Reserved nickname. Please choose another."
-msgstr "Reservert kallenavn. Vennligst velg et annet."
-
-#: ../../include/identity.php:212
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "Kallenavnet inneholder tegn som ikke er støttet eller det er allerede i bruk på dette nettstedet."
-
-#: ../../include/identity.php:288
-msgid "Unable to retrieve created identity"
-msgstr "Klarer ikke å hente den lagede identiteten"
-
-#: ../../include/identity.php:346
-msgid "Default Profile"
-msgstr "Standardprofil"
-
-#: ../../include/identity.php:772
-msgid "Requested channel is not available."
-msgstr "Forespurt kanal er ikke tilgjengelig."
-
-#: ../../include/identity.php:818 ../../mod/achievements.php:11
-#: ../../mod/blocks.php:29 ../../mod/connect.php:13 ../../mod/editblock.php:29
-#: ../../mod/editlayout.php:27 ../../mod/editwebpage.php:28
-#: ../../mod/filestorage.php:54 ../../mod/hcard.php:8 ../../mod/layouts.php:29
-#: ../../mod/profile.php:16 ../../mod/webpages.php:29
-msgid "Requested profile is not available."
-msgstr "Forespurt profil er ikke tilgjengelig."
-
-#: ../../include/identity.php:967 ../../mod/profiles.php:782
-msgid "Change profile photo"
-msgstr "Endre profilbilde"
-
-#: ../../include/identity.php:973
-msgid "Profiles"
-msgstr "Profiler"
-
-#: ../../include/identity.php:973
-msgid "Manage/edit profiles"
-msgstr "HÃ¥ndtere/endre profiler"
-
-#: ../../include/identity.php:974 ../../mod/profiles.php:783
-msgid "Create New Profile"
-msgstr "Lag ny profil"
-
-#: ../../include/identity.php:989 ../../mod/profiles.php:794
-msgid "Profile Image"
-msgstr "Profilbilde"
-
-#: ../../include/identity.php:992
-msgid "visible to everybody"
-msgstr "synlig for alle"
-
-#: ../../include/identity.php:993 ../../mod/profiles.php:677
-#: ../../mod/profiles.php:798
-msgid "Edit visibility"
-msgstr "Endre synlighet"
-
-#: ../../include/identity.php:1009 ../../include/identity.php:1248
-msgid "Gender:"
-msgstr "Kjønn:"
-
-#: ../../include/identity.php:1010 ../../include/identity.php:1292
-msgid "Status:"
-msgstr "Status:"
-
-#: ../../include/identity.php:1011 ../../include/identity.php:1303
-msgid "Homepage:"
-msgstr "Hjemmeside:"
-
-#: ../../include/identity.php:1012
-msgid "Online Now"
-msgstr "Online nå"
-
-#: ../../include/identity.php:1099 ../../include/identity.php:1177
-#: ../../mod/ping.php:318
-msgid "g A l F d"
-msgstr "g A l F d"
-
-#: ../../include/identity.php:1100 ../../include/identity.php:1178
-msgid "F d"
-msgstr "F d"
-
-#: ../../include/identity.php:1145 ../../include/identity.php:1217
-#: ../../mod/ping.php:341
-msgid "[today]"
-msgstr "[idag]"
-
-#: ../../include/identity.php:1156
-msgid "Birthday Reminders"
-msgstr "Fødselsdagspåminnnelser"
-
-#: ../../include/identity.php:1157
-msgid "Birthdays this week:"
-msgstr "Fødselsdager denne uken:"
-
-#: ../../include/identity.php:1210
-msgid "[No description]"
-msgstr "[Ingen beskrivelse]"
-
-#: ../../include/identity.php:1228
-msgid "Event Reminders"
-msgstr "Hendelsespåminnelser"
-
-#: ../../include/identity.php:1229
-msgid "Events this week:"
-msgstr "Hendelser denne uken:"
-
-#: ../../include/identity.php:1246 ../../mod/settings.php:1047
-msgid "Full Name:"
-msgstr "Fullt navn:"
-
-#: ../../include/identity.php:1253
-msgid "Like this channel"
-msgstr "Lik denne kanalen"
-
-#: ../../include/identity.php:1277
-msgid "j F, Y"
-msgstr "j F, Y"
-
-#: ../../include/identity.php:1278
-msgid "j F"
-msgstr "j F"
-
-#: ../../include/identity.php:1285
-msgid "Birthday:"
-msgstr "Fødselsdag:"
-
-#: ../../include/identity.php:1289 ../../mod/directory.php:302
-msgid "Age:"
-msgstr "Alder:"
-
-#: ../../include/identity.php:1298
-#, php-format
-msgid "for %1$d %2$s"
-msgstr "for %1$d %2$s"
-
-#: ../../include/identity.php:1301 ../../mod/profiles.php:699
-msgid "Sexual Preference:"
-msgstr "Seksuell preferanse:"
-
-#: ../../include/identity.php:1305 ../../mod/directory.php:318
-#: ../../mod/profiles.php:701
-msgid "Hometown:"
-msgstr "Hjemby:"
-
-#: ../../include/identity.php:1307
-msgid "Tags:"
-msgstr "Merkelapper:"
-
-#: ../../include/identity.php:1309 ../../mod/profiles.php:702
-msgid "Political Views:"
-msgstr "Politiske synspunkter:"
-
-#: ../../include/identity.php:1311
-msgid "Religion:"
-msgstr "Religion:"
-
-#: ../../include/identity.php:1313 ../../mod/directory.php:320
-msgid "About:"
-msgstr "Om:"
-
-#: ../../include/identity.php:1315
-msgid "Hobbies/Interests:"
-msgstr "Hobbyer/interesser:"
-
-#: ../../include/identity.php:1317 ../../mod/profiles.php:705
-msgid "Likes:"
-msgstr "Liker:"
-
-#: ../../include/identity.php:1319 ../../mod/profiles.php:706
-msgid "Dislikes:"
-msgstr "Misliker:"
-
-#: ../../include/identity.php:1321
-msgid "Contact information and Social Networks:"
-msgstr "Kontaktinformasjon og sosiale nettverk:"
-
-#: ../../include/identity.php:1323
-msgid "My other channels:"
-msgstr "Mine andre kanaler:"
-
-#: ../../include/identity.php:1325
-msgid "Musical interests:"
-msgstr "Musikkinteresse:"
-
-#: ../../include/identity.php:1327
-msgid "Books, literature:"
-msgstr "Bøker, litteratur:"
-
-#: ../../include/identity.php:1329
-msgid "Television:"
-msgstr "TV:"
-
-#: ../../include/identity.php:1331
-msgid "Film/dance/culture/entertainment:"
-msgstr "Film/dans/kultur/underholdning:"
-
-#: ../../include/identity.php:1333
-msgid "Love/Romance:"
-msgstr "Kjærlighet/romantikk:"
-
-#: ../../include/identity.php:1335
-msgid "Work/employment:"
-msgstr "Arbeid/sysselsetting:"
-
-#: ../../include/identity.php:1337
-msgid "School/education:"
-msgstr "Skole/utdannelse:"
-
-#: ../../include/identity.php:1361
-msgid "Like this thing"
-msgstr "Lik denne tingen"
-
-#: ../../include/identity.php:1770 ../../mod/cover_photo.php:236
-msgid "cover photo"
-msgstr "forsidebilde"
-
-#: ../../include/oembed.php:267
-msgid "Embedded content"
-msgstr "Innebygget innhold"
-
-#: ../../include/oembed.php:276
-msgid "Embedding disabled"
-msgstr "Innbygging avskrudd"
-
-#: ../../include/conversation.php:126 ../../mod/like.php:113
-msgid "channel"
-msgstr "kanal"
-
-#: ../../include/conversation.php:164 ../../mod/like.php:410
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s liker %2$s sin %3$s"
-
-#: ../../include/conversation.php:167 ../../mod/like.php:412
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr "%1$s liker ikke %2$s sin %3$s"
-
-#: ../../include/conversation.php:204
-#, php-format
-msgid "%1$s is now connected with %2$s"
-msgstr "%1$s er nå forbundet med %2$s"
-
-#: ../../include/conversation.php:239
-#, php-format
-msgid "%1$s poked %2$s"
-msgstr "%1$s prikket %2$s"
-
-#: ../../include/conversation.php:260 ../../mod/mood.php:63
-#, php-format
-msgctxt "mood"
-msgid "%1$s is %2$s"
-msgstr "%1$s er %2$s"
-
-#: ../../include/conversation.php:574 ../../mod/photos.php:1074
-msgctxt "title"
-msgid "Likes"
-msgstr "Liker"
-
-#: ../../include/conversation.php:574 ../../mod/photos.php:1074
-msgctxt "title"
-msgid "Dislikes"
-msgstr "Liker ikke"
-
-#: ../../include/conversation.php:575 ../../mod/photos.php:1075
-msgctxt "title"
-msgid "Agree"
-msgstr "Enig"
-
-#: ../../include/conversation.php:575 ../../mod/photos.php:1075
-msgctxt "title"
-msgid "Disagree"
-msgstr "Uenig"
-
-#: ../../include/conversation.php:575 ../../mod/photos.php:1075
-msgctxt "title"
-msgid "Abstain"
-msgstr "Avstår"
-
-#: ../../include/conversation.php:576 ../../mod/photos.php:1076
-msgctxt "title"
-msgid "Attending"
-msgstr "Deltar"
-
-#: ../../include/conversation.php:576 ../../mod/photos.php:1076
-msgctxt "title"
-msgid "Not attending"
-msgstr "Deltar ikke"
-
-#: ../../include/conversation.php:576 ../../mod/photos.php:1076
-msgctxt "title"
-msgid "Might attend"
-msgstr "Deltar kanskje"
-
-#: ../../include/conversation.php:656 ../../include/ItemObject.php:126
-msgid "Select"
-msgstr "Velg"
-
-#: ../../include/conversation.php:664 ../../include/ItemObject.php:89
-msgid "Private Message"
-msgstr "Privat melding"
-
-#: ../../include/conversation.php:671 ../../include/ItemObject.php:227
-msgid "Message signature validated"
-msgstr "Innleggets signatur er bekreftet"
-
-#: ../../include/conversation.php:672 ../../include/ItemObject.php:228
-msgid "Message signature incorrect"
-msgstr "Innleggets signatur er feil"
-
-#: ../../include/conversation.php:691
-#, php-format
-msgid "View %s's profile @ %s"
-msgstr "Vis %s sin profile @ %s"
-
-#: ../../include/conversation.php:710
-msgid "Categories:"
-msgstr "Kategorier:"
-
-#: ../../include/conversation.php:711
-msgid "Filed under:"
-msgstr "Sortert under:"
-
-#: ../../include/conversation.php:719 ../../include/ItemObject.php:334
-#, php-format
-msgid "from %s"
-msgstr "fra %s"
-
-#: ../../include/conversation.php:722 ../../include/ItemObject.php:337
-#, php-format
-msgid "last edited: %s"
-msgstr "sist endret: %s"
-
-#: ../../include/conversation.php:723 ../../include/ItemObject.php:338
-#, php-format
-msgid "Expires: %s"
-msgstr "Utløper: %s"
-
-#: ../../include/conversation.php:738
-msgid "View in context"
-msgstr "Vis i sammenheng"
-
-#: ../../include/conversation.php:740 ../../include/conversation.php:1237
-#: ../../include/ItemObject.php:389 ../../mod/editblock.php:150
-#: ../../mod/editlayout.php:148 ../../mod/editpost.php:129
-#: ../../mod/editwebpage.php:190 ../../mod/photos.php:1040
-msgid "Please wait"
-msgstr "Vennligst vent"
-
-#: ../../include/conversation.php:850
-msgid "remove"
-msgstr "fjern"
-
-#: ../../include/conversation.php:855
-msgid "Delete Selected Items"
-msgstr "Slett valgte elementer"
-
-#: ../../include/conversation.php:953
-msgid "View Source"
-msgstr "Vis kilde"
-
-#: ../../include/conversation.php:954
-msgid "Follow Thread"
-msgstr "Følg tråd"
-
-#: ../../include/conversation.php:955
-msgid "Unfollow Thread"
-msgstr "Ikke følg tråd"
-
-#: ../../include/conversation.php:960
-msgid "Activity/Posts"
-msgstr "Aktivitet/Innlegg"
-
-#: ../../include/conversation.php:962
-msgid "Edit Connection"
-msgstr "Endre forbindelse"
-
-#: ../../include/conversation.php:963
-msgid "Message"
-msgstr "Melding"
-
-#: ../../include/conversation.php:964 ../../mod/pubsites.php:27
-#: ../../mod/ratings.php:99
-msgid "Ratings"
-msgstr "Vurderinger"
-
-#: ../../include/conversation.php:1080
-#, php-format
-msgid "%s likes this."
-msgstr "%s liker dette."
-
-#: ../../include/conversation.php:1080
-#, php-format
-msgid "%s doesn't like this."
-msgstr "%s liker ikke dette."
-
-#: ../../include/conversation.php:1084
-#, php-format
-msgid "<span %1$s>%2$d people</span> like this."
-msgid_plural "<span %1$s>%2$d people</span> like this."
-msgstr[0] "<span %1$s>%2$d person</span> liker dette."
-msgstr[1] "<span %1$s>%2$d personer</span> liker dette."
-
-#: ../../include/conversation.php:1086
-#, php-format
-msgid "<span %1$s>%2$d people</span> don't like this."
-msgid_plural "<span %1$s>%2$d people</span> don't like this."
-msgstr[0] "<span %1$s>%2$d person</span> liker ikke dette."
-msgstr[1] "<span %1$s>%2$d personer</span> liker ikke dette."
-
-#: ../../include/conversation.php:1092
-msgid "and"
-msgstr "og"
-
-#: ../../include/conversation.php:1095
-#, php-format
-msgid ", and %d other people"
-msgid_plural ", and %d other people"
-msgstr[0] ", og %d annen person"
-msgstr[1] ", og %d andre personer"
-
-#: ../../include/conversation.php:1096
-#, php-format
-msgid "%s like this."
-msgstr "%s liker dette."
-
-#: ../../include/conversation.php:1096
-#, php-format
-msgid "%s don't like this."
-msgstr "%s liker ikke dette."
-
-#: ../../include/conversation.php:1164
-msgid "Visible to <strong>everybody</strong>"
-msgstr "Synlig for <strong>alle</strong>"
-
-#: ../../include/conversation.php:1165 ../../mod/mail.php:202
-#: ../../mod/mail.php:316
-msgid "Please enter a link URL:"
-msgstr "Vennligst skriv inn en lenke URL:"
-
-#: ../../include/conversation.php:1166
-msgid "Please enter a video link/URL:"
-msgstr "Vennligst skriv en videolenke/URL:"
-
-#: ../../include/conversation.php:1167
-msgid "Please enter an audio link/URL:"
-msgstr "Vennligst skriv en lydlenke/URL:"
-
-#: ../../include/conversation.php:1168
-msgid "Tag term:"
-msgstr "Merkelapp:"
-
-#: ../../include/conversation.php:1169 ../../mod/filer.php:48
-msgid "Save to Folder:"
-msgstr "Lagre til mappe:"
-
-#: ../../include/conversation.php:1170
-msgid "Where are you right now?"
-msgstr "Hvor er du akkurat nå?"
-
-#: ../../include/conversation.php:1171 ../../mod/editpost.php:56
-#: ../../mod/mail.php:203 ../../mod/mail.php:317
-msgid "Expires YYYY-MM-DD HH:MM"
-msgstr "Utløper YYYY-MM-DD HH:MM"
-
-#: ../../include/conversation.php:1202 ../../mod/blocks.php:154
-#: ../../mod/layouts.php:184 ../../mod/photos.php:1039
-#: ../../mod/webpages.php:184
-msgid "Share"
-msgstr "Del"
-
-#: ../../include/conversation.php:1204
-msgid "Page link name"
-msgstr "Sidens lenkenavn"
-
-#: ../../include/conversation.php:1207
-msgid "Post as"
-msgstr "Lag innlegg som"
-
-#: ../../include/conversation.php:1209 ../../include/ItemObject.php:704
-#: ../../mod/editblock.php:136 ../../mod/editlayout.php:135
-#: ../../mod/editpost.php:113 ../../mod/editwebpage.php:177
-msgid "Bold"
-msgstr "Uthevet"
-
-#: ../../include/conversation.php:1210 ../../include/ItemObject.php:705
-#: ../../mod/editblock.php:137 ../../mod/editlayout.php:136
-#: ../../mod/editpost.php:114 ../../mod/editwebpage.php:178
-msgid "Italic"
-msgstr "Kursiv"
-
-#: ../../include/conversation.php:1211 ../../include/ItemObject.php:706
-#: ../../mod/editblock.php:138 ../../mod/editlayout.php:137
-#: ../../mod/editpost.php:115 ../../mod/editwebpage.php:179
-msgid "Underline"
-msgstr "Understreket"
-
-#: ../../include/conversation.php:1212 ../../include/ItemObject.php:707
-#: ../../mod/editblock.php:139 ../../mod/editlayout.php:138
-#: ../../mod/editpost.php:116 ../../mod/editwebpage.php:180
-msgid "Quote"
-msgstr "Sitat"
-
-#: ../../include/conversation.php:1213 ../../include/ItemObject.php:708
-#: ../../mod/editblock.php:140 ../../mod/editlayout.php:139
-#: ../../mod/editpost.php:117 ../../mod/editwebpage.php:181
-msgid "Code"
-msgstr "Kode"
-
-#: ../../include/conversation.php:1214 ../../mod/editblock.php:142
-#: ../../mod/editlayout.php:140 ../../mod/editpost.php:118
-#: ../../mod/editwebpage.php:182
-msgid "Upload photo"
-msgstr "Last opp bilde"
-
-#: ../../include/conversation.php:1215
-msgid "upload photo"
-msgstr "last opp bilde"
-
-#: ../../include/conversation.php:1216 ../../mod/editblock.php:143
-#: ../../mod/editlayout.php:141 ../../mod/editpost.php:119
-#: ../../mod/editwebpage.php:183 ../../mod/mail.php:248 ../../mod/mail.php:378
-msgid "Attach file"
-msgstr "Legg ved fil"
-
-#: ../../include/conversation.php:1217
-msgid "attach file"
-msgstr "legg ved fil"
-
-#: ../../include/conversation.php:1218 ../../mod/editblock.php:144
-#: ../../mod/editlayout.php:142 ../../mod/editpost.php:120
-#: ../../mod/editwebpage.php:184 ../../mod/mail.php:249 ../../mod/mail.php:379
-msgid "Insert web link"
-msgstr "Sett inn web-lenke"
-
-#: ../../include/conversation.php:1219
-msgid "web link"
-msgstr "web-lenke"
-
-#: ../../include/conversation.php:1220
-msgid "Insert video link"
-msgstr "Sett inn videolenke"
-
-#: ../../include/conversation.php:1221
-msgid "video link"
-msgstr "videolenke"
-
-#: ../../include/conversation.php:1222
-msgid "Insert audio link"
-msgstr "Sett inn lenke til lyd"
-
-#: ../../include/conversation.php:1223
-msgid "audio link"
-msgstr "lenke til lyd"
-
-#: ../../include/conversation.php:1224 ../../mod/editblock.php:148
-#: ../../mod/editlayout.php:146 ../../mod/editpost.php:124
-#: ../../mod/editwebpage.php:188
-msgid "Set your location"
-msgstr "Angi din plassering"
-
-#: ../../include/conversation.php:1225
-msgid "set location"
-msgstr "angi plassering"
-
-#: ../../include/conversation.php:1226 ../../mod/editpost.php:126
-msgid "Toggle voting"
-msgstr "Skru av eller på stemming"
-
-#: ../../include/conversation.php:1229 ../../mod/editblock.php:149
-#: ../../mod/editlayout.php:147 ../../mod/editpost.php:125
-#: ../../mod/editwebpage.php:189
-msgid "Clear browser location"
-msgstr "Fjern nettleserplassering"
-
-#: ../../include/conversation.php:1230
-msgid "clear location"
-msgstr "fjern plassering"
-
-#: ../../include/conversation.php:1232 ../../mod/editblock.php:162
-#: ../../mod/editpost.php:141 ../../mod/editwebpage.php:205
-msgid "Title (optional)"
-msgstr "Tittel (valgfri)"
-
-#: ../../include/conversation.php:1236 ../../mod/editblock.php:165
-#: ../../mod/editlayout.php:163 ../../mod/editpost.php:143
-#: ../../mod/editwebpage.php:207
-msgid "Categories (optional, comma-separated list)"
-msgstr "Kategorier (valgfri, kommaseparert liste)"
-
-#: ../../include/conversation.php:1238 ../../mod/editblock.php:151
-#: ../../mod/editlayout.php:149 ../../mod/editpost.php:130
-#: ../../mod/editwebpage.php:191 ../../mod/events.php:466
-msgid "Permission settings"
-msgstr "Tillatelser - innstillinger"
-
-#: ../../include/conversation.php:1239
-msgid "permissions"
-msgstr "tillatelser"
-
-#: ../../include/conversation.php:1247 ../../mod/editblock.php:159
-#: ../../mod/editlayout.php:156 ../../mod/editpost.php:138
-#: ../../mod/editwebpage.php:200
-msgid "Public post"
-msgstr "Offentlig innlegg"
-
-#: ../../include/conversation.php:1249 ../../mod/editblock.php:166
-#: ../../mod/editlayout.php:164 ../../mod/editpost.php:144
-#: ../../mod/editwebpage.php:208
-msgid "Example: bob@example.com, mary@example.com"
-msgstr "Eksempel: ola@eksempel.no, kari@eksempel.no"
-
-#: ../../include/conversation.php:1262 ../../mod/editblock.php:176
-#: ../../mod/editlayout.php:173 ../../mod/editpost.php:155
-#: ../../mod/editwebpage.php:217 ../../mod/mail.php:253 ../../mod/mail.php:383
-msgid "Set expiration date"
-msgstr "Angi utløpsdato"
-
-#: ../../include/conversation.php:1265
-msgid "Set publish date"
-msgstr "Angi publiseringsdato"
-
-#: ../../include/conversation.php:1267 ../../include/ItemObject.php:715
-#: ../../mod/editpost.php:157 ../../mod/mail.php:255 ../../mod/mail.php:385
-msgid "Encrypt text"
-msgstr "Krypter tekst"
-
-#: ../../include/conversation.php:1269 ../../mod/editpost.php:159
-msgid "OK"
-msgstr "OK"
-
-#: ../../include/conversation.php:1270 ../../mod/editpost.php:160
-#: ../../mod/fbrowser.php:77 ../../mod/fbrowser.php:112
-#: ../../mod/settings.php:598 ../../mod/settings.php:624
-#: ../../mod/tagrm.php:11 ../../mod/tagrm.php:134
-msgid "Cancel"
-msgstr "Avbryt"
-
-#: ../../include/conversation.php:1513
-msgid "Discover"
-msgstr "Oppdage"
-
-#: ../../include/conversation.php:1516
-msgid "Imported public streams"
-msgstr "Importerte offentlige strømmer"
-
-#: ../../include/conversation.php:1521
-msgid "Commented Order"
-msgstr "Kommentert"
-
-#: ../../include/conversation.php:1524
-msgid "Sort by Comment Date"
-msgstr "Sorter etter kommentert dato"
-
-#: ../../include/conversation.php:1528
-msgid "Posted Order"
-msgstr "Lagt inn"
-
-#: ../../include/conversation.php:1531
-msgid "Sort by Post Date"
-msgstr "Sorter etter innleggsdato"
-
-#: ../../include/conversation.php:1539
-msgid "Posts that mention or involve you"
-msgstr "Innlegg som nevner eller involverer deg"
-
-#: ../../include/conversation.php:1545 ../../mod/connections.php:72
-#: ../../mod/connections.php:82 ../../mod/menu.php:112
-msgid "New"
-msgstr "Nye"
-
-#: ../../include/conversation.php:1548
-msgid "Activity Stream - by date"
-msgstr "Aktivitetsstrøm - etter dato"
-
-#: ../../include/conversation.php:1554
-msgid "Starred"
-msgstr "Stjerne"
-
-#: ../../include/conversation.php:1557
-msgid "Favourite Posts"
-msgstr "Favorittinnlegg"
-
-#: ../../include/conversation.php:1564
-msgid "Spam"
-msgstr "Søppel"
-
-#: ../../include/conversation.php:1567
-msgid "Posts flagged as SPAM"
-msgstr "Innlegg merket som SØPPEL"
-
-#: ../../include/conversation.php:1620 ../../mod/admin.php:1157
-msgid "Channel"
-msgstr "Kanal"
-
-#: ../../include/conversation.php:1623
-msgid "Status Messages and Posts"
-msgstr "Statusmeldinger og -innlegg"
-
-#: ../../include/conversation.php:1632
-msgid "About"
-msgstr "Om"
-
-#: ../../include/conversation.php:1635
-msgid "Profile Details"
-msgstr "Profildetaljer"
-
-#: ../../include/conversation.php:1651
-msgid "Files and Storage"
-msgstr "Filer og lagring"
-
-#: ../../include/conversation.php:1672 ../../include/conversation.php:1675
-msgid "Chatrooms"
-msgstr "Chatrom"
-
-#: ../../include/conversation.php:1688
-msgid "Saved Bookmarks"
-msgstr "Lagrede bokmerker"
-
-#: ../../include/conversation.php:1698
-msgid "Manage Webpages"
-msgstr "HÃ¥ndtere websider"
-
-#: ../../include/conversation.php:1727 ../../include/ItemObject.php:175
-#: ../../include/ItemObject.php:187 ../../mod/photos.php:1093
-#: ../../mod/photos.php:1105
-msgid "View all"
-msgstr "Vis alle"
-
-#: ../../include/conversation.php:1754 ../../include/ItemObject.php:184
-#: ../../mod/photos.php:1102
-msgctxt "noun"
-msgid "Dislike"
-msgid_plural "Dislikes"
-msgstr[0] "Liker ikke"
-msgstr[1] "Liker ikke"
-
-#: ../../include/conversation.php:1757
-msgctxt "noun"
-msgid "Attending"
-msgid_plural "Attending"
-msgstr[0] "Deltar"
-msgstr[1] "Deltar"
-
-#: ../../include/conversation.php:1760
-msgctxt "noun"
-msgid "Not Attending"
-msgid_plural "Not Attending"
-msgstr[0] "Deltar ikke"
-msgstr[1] "Deltar ikke"
-
-#: ../../include/conversation.php:1763
-msgctxt "noun"
-msgid "Undecided"
-msgid_plural "Undecided"
-msgstr[0] "Ikke bestemt"
-msgstr[1] "Ikke bestemt"
-
-#: ../../include/conversation.php:1766
-msgctxt "noun"
-msgid "Agree"
-msgid_plural "Agrees"
-msgstr[0] "Enig"
-msgstr[1] "Enige"
-
-#: ../../include/conversation.php:1769
-msgctxt "noun"
-msgid "Disagree"
-msgid_plural "Disagrees"
-msgstr[0] "Uenig"
-msgstr[1] "Uenige"
-
-#: ../../include/conversation.php:1772
-msgctxt "noun"
-msgid "Abstain"
-msgid_plural "Abstains"
-msgstr[0] "Avstår"
-msgstr[1] "Avstår"
-
-#: ../../include/ItemObject.php:130
-msgid "Save to Folder"
-msgstr "Lagre i mappe"
-
-#: ../../include/ItemObject.php:151
-msgid "I will attend"
-msgstr "Jeg vil delta"
-
-#: ../../include/ItemObject.php:151
-msgid "I will not attend"
-msgstr "Jeg deltar ikke"
-
-#: ../../include/ItemObject.php:151
-msgid "I might attend"
-msgstr "Jeg vil kanskje delta"
-
-#: ../../include/ItemObject.php:161
-msgid "I agree"
-msgstr "Jeg er enig"
-
-#: ../../include/ItemObject.php:161
-msgid "I disagree"
-msgstr "Jeg er uenig"
-
-#: ../../include/ItemObject.php:161
-msgid "I abstain"
-msgstr "Jeg avstår"
-
-#: ../../include/ItemObject.php:212
-msgid "Add Star"
-msgstr "Legg til stjerne"
-
-#: ../../include/ItemObject.php:213
-msgid "Remove Star"
-msgstr "Fjern stjerne"
-
-#: ../../include/ItemObject.php:214
-msgid "Toggle Star Status"
-msgstr "Skru av og på stjernestatus"
-
-#: ../../include/ItemObject.php:218
-msgid "starred"
-msgstr "stjernemerket"
-
-#: ../../include/ItemObject.php:236
-msgid "Add Tag"
-msgstr "Legg til merkelapp"
-
-#: ../../include/ItemObject.php:254 ../../mod/photos.php:1037
-msgid "I like this (toggle)"
-msgstr "Jeg liker dette (skru av og på)"
-
-#: ../../include/ItemObject.php:255 ../../mod/photos.php:1038
-msgid "I don't like this (toggle)"
-msgstr "Jeg liker ikke dette (skru av og på)"
-
-#: ../../include/ItemObject.php:259
-msgid "Share This"
-msgstr "Del dette"
-
-#: ../../include/ItemObject.php:259
-msgid "share"
-msgstr "del"
-
-#: ../../include/ItemObject.php:268
-msgid "Delivery Report"
-msgstr "Leveringsrapport"
-
-#: ../../include/ItemObject.php:286
-#, php-format
-msgid "%d comment"
-msgid_plural "%d comments"
-msgstr[0] "%d kommentar"
-msgstr[1] "%d kommentarer"
-
-#: ../../include/ItemObject.php:315 ../../include/ItemObject.php:316
-#, php-format
-msgid "View %s's profile - %s"
-msgstr "Vis %s sin profil - %s"
-
-#: ../../include/ItemObject.php:319
-msgid "to"
-msgstr "til"
-
-#: ../../include/ItemObject.php:320
-msgid "via"
-msgstr "via"
-
-#: ../../include/ItemObject.php:321
-msgid "Wall-to-Wall"
-msgstr "vegg-til-vegg"
-
-#: ../../include/ItemObject.php:322
-msgid "via Wall-To-Wall:"
-msgstr "via vegg-til-vegg:"
-
-#: ../../include/ItemObject.php:362
-msgid "Save Bookmarks"
-msgstr "Lagre bokmerker"
-
-#: ../../include/ItemObject.php:363
-msgid "Add to Calendar"
-msgstr "Legg til i kalender"
-
-#: ../../include/ItemObject.php:372
-msgid "Mark all seen"
-msgstr "Merk alle som sett"
-
-#: ../../include/ItemObject.php:378 ../../mod/photos.php:1223
-msgctxt "noun"
-msgid "Likes"
-msgstr "Liker"
-
-#: ../../include/ItemObject.php:379 ../../mod/photos.php:1224
-msgctxt "noun"
-msgid "Dislikes"
-msgstr "Liker ikke"
-
-#: ../../include/ItemObject.php:700 ../../mod/photos.php:1056
-#: ../../mod/photos.php:1174
-msgid "This is you"
-msgstr "Dette er deg"
-
-#: ../../include/ItemObject.php:709
-msgid "Image"
-msgstr "Bilde"
-
-#: ../../include/ItemObject.php:710
-msgid "Insert Link"
-msgstr "Sett inn lenke"
-
-#: ../../include/ItemObject.php:711
-msgid "Video"
-msgstr "Video"
-
-#: ../../include/permissions.php:26
-msgid "Can view my normal stream and posts"
-msgstr "Kan se min normale strøm og innlegg"
-
-#: ../../include/permissions.php:27
-msgid "Can view my default channel profile"
-msgstr "Kan se min standard kanalprofil"
-
-#: ../../include/permissions.php:28
-msgid "Can view my connections"
-msgstr "Kan se mine forbindelser"
-
-#: ../../include/permissions.php:29
-msgid "Can view my file storage and photos"
-msgstr "Kan se mine filer og bilder"
-
-#: ../../include/permissions.php:30
-msgid "Can view my webpages"
-msgstr "Kan se mine websider"
-
-#: ../../include/permissions.php:33
-msgid "Can send me their channel stream and posts"
-msgstr "Kan sende meg deres kanalstrøm og innlegg"
-
-#: ../../include/permissions.php:34
-msgid "Can post on my channel page (\"wall\")"
-msgstr "Kan lage innlegg på min kanalside (\"vegg\")"
-
-#: ../../include/permissions.php:35
-msgid "Can comment on or like my posts"
-msgstr "Kan kommentere på eller like mine innlegg"
-
-#: ../../include/permissions.php:36
-msgid "Can send me private mail messages"
-msgstr "Kan sende meg private meldinger"
-
-#: ../../include/permissions.php:37
-msgid "Can like/dislike stuff"
-msgstr "Kan like/ikke like forskjellige greier"
-
-#: ../../include/permissions.php:37
-msgid "Profiles and things other than posts/comments"
-msgstr "Profiler og andre ting enn innlegg/kommentarer"
-
-#: ../../include/permissions.php:39
-msgid "Can forward to all my channel contacts via post @mentions"
-msgstr "Kan videresende til alle mine kanalkontakter via @navn i innlegg"
-
-#: ../../include/permissions.php:39
-msgid "Advanced - useful for creating group forum channels"
-msgstr "Avansert - nyttig for å lage forumkanaler for grupper"
-
-#: ../../include/permissions.php:40
-msgid "Can chat with me (when available)"
-msgstr "Kan chatte/sende lynmeldinger til meg (når tilgjengelig)"
-
-#: ../../include/permissions.php:41
-msgid "Can write to my file storage and photos"
-msgstr "Kan skrive til mitt lager for filer og bilder"
-
-#: ../../include/permissions.php:42
-msgid "Can edit my webpages"
-msgstr "Kan endre mine websider"
-
-#: ../../include/permissions.php:44
-msgid "Can source my public posts in derived channels"
-msgstr "Kan bruke mine offentlige innlegg som kanalkilde i egne kanaler"
-
-#: ../../include/permissions.php:44
-msgid "Somewhat advanced - very useful in open communities"
-msgstr "Litt avansert - svært nyttig i åpne fellesskap"
-
-#: ../../include/permissions.php:46
-msgid "Can administer my channel resources"
-msgstr "Kan administrere mine kanalressurser"
-
-#: ../../include/permissions.php:46
-msgid ""
-"Extremely advanced. Leave this alone unless you know what you are doing"
-msgstr "Ekstremt avansert. La dette være med mindre du vet hva du gjør"
-
-#: ../../include/permissions.php:867
-msgid "Social Networking"
-msgstr "Sosialt nettverk"
-
-#: ../../include/permissions.php:867
-msgid "Social - Mostly Public"
-msgstr "Sosial - ganske offentlig"
-
-#: ../../include/permissions.php:867
-msgid "Social - Restricted"
-msgstr "Sosial - begrenset"
-
-#: ../../include/permissions.php:867
-msgid "Social - Private"
-msgstr "Sosial - privat"
-
-#: ../../include/permissions.php:868
-msgid "Community Forum"
-msgstr "Forum for fellesskap"
-
-#: ../../include/permissions.php:868
-msgid "Forum - Mostly Public"
-msgstr "Forum - ganske offentlig"
-
-#: ../../include/permissions.php:868
-msgid "Forum - Restricted"
-msgstr "Forum - begrenset"
-
-#: ../../include/permissions.php:868
-msgid "Forum - Private"
-msgstr "Forum - privat"
-
-#: ../../include/permissions.php:869
-msgid "Feed Republish"
-msgstr "Republisering av strømmet innhold"
-
-#: ../../include/permissions.php:869
-msgid "Feed - Mostly Public"
-msgstr "Strøm - ganske offentlig"
-
-#: ../../include/permissions.php:869
-msgid "Feed - Restricted"
-msgstr "Strøm - begrenset"
-
-#: ../../include/permissions.php:870
-msgid "Special Purpose"
-msgstr "Spesiell bruk"
-
-#: ../../include/permissions.php:870
-msgid "Special - Celebrity/Soapbox"
-msgstr "Spesiell - kjendis/talerstol"
-
-#: ../../include/permissions.php:870
-msgid "Special - Group Repository"
-msgstr "Spesiell - gruppelager"
-
-#: ../../include/permissions.php:871
-msgid "Custom/Expert Mode"
-msgstr "Tilpasset/Ekspertmodus"
-
-#: ../../include/items.php:423 ../../index.php:179 ../../mod/dreport.php:6
-#: ../../mod/dreport.php:45 ../../mod/group.php:68
-#: ../../mod/import_items.php:108 ../../mod/like.php:280
-#: ../../mod/profperm.php:23 ../../mod/subthread.php:58
-msgid "Permission denied"
-msgstr "Tillatelse avvist"
-
-#: ../../include/items.php:1138 ../../include/items.php:1184
-msgid "(Unknown)"
-msgstr "(Ukjent)"
-
-#: ../../include/items.php:1384
-msgid "Visible to anybody on the internet."
-msgstr "Synlig for enhver på Internett."
-
-#: ../../include/items.php:1386
-msgid "Visible to you only."
-msgstr "Synlig bare for deg."
-
-#: ../../include/items.php:1388
-msgid "Visible to anybody in this network."
-msgstr "Synlig for enhver i dette nettverket."
-
-#: ../../include/items.php:1390
-msgid "Visible to anybody authenticated."
-msgstr "Synlig for enhver som er autentisert."
-
-#: ../../include/items.php:1392
-#, php-format
-msgid "Visible to anybody on %s."
-msgstr "Synlig for alle på %s."
-
-#: ../../include/items.php:1394
-msgid "Visible to all connections."
-msgstr "Synlig for alle forbindelser."
-
-#: ../../include/items.php:1396
-msgid "Visible to approved connections."
-msgstr "Synlig for godkjente forbindelser."
-
-#: ../../include/items.php:1398
-msgid "Visible to specific connections."
-msgstr "Synlig for spesifikke forbindelser."
-
-#: ../../include/items.php:4496 ../../mod/display.php:36
-#: ../../mod/filestorage.php:27 ../../mod/admin.php:141
-#: ../../mod/admin.php:1189 ../../mod/admin.php:1434 ../../mod/thing.php:85
-#: ../../mod/viewsrc.php:20
-msgid "Item not found."
-msgstr "Elementet ble ikke funnet."
-
-#: ../../include/items.php:5032 ../../mod/group.php:38 ../../mod/group.php:137
-msgid "Privacy group not found."
-msgstr "Personverngruppen ble ikke funnet"
-
-#: ../../include/items.php:5048
-msgid "Privacy group is empty."
-msgstr "Personverngruppen er tom."
-
-#: ../../include/items.php:5055
-#, php-format
-msgid "Privacy group: %s"
-msgstr "Personverngruppe: %s"
-
-#: ../../include/items.php:5065 ../../mod/connedit.php:694
-#, php-format
-msgid "Connection: %s"
-msgstr "Forbindelse: %s"
-
-#: ../../include/items.php:5067
-msgid "Connection not found."
-msgstr "Forbindelsen ble ikke funnet."
-
-#: ../../include/items.php:5493 ../../mod/cover_photo.php:229
-msgid "female"
-msgstr "kvinne"
-
-#: ../../include/items.php:5494 ../../mod/cover_photo.php:230
-#, php-format
-msgid "%1$s updated her %2$s"
-msgstr "%1$s oppdaterte %2$s sitt"
-
-#: ../../include/items.php:5495 ../../mod/cover_photo.php:231
-msgid "male"
-msgstr "mann"
-
-#: ../../include/items.php:5496 ../../mod/cover_photo.php:232
-#, php-format
-msgid "%1$s updated his %2$s"
-msgstr "%1$s oppdaterte %2$s sitt"
-
-#: ../../include/items.php:5498 ../../mod/cover_photo.php:234
-#, php-format
-msgid "%1$s updated their %2$s"
-msgstr "%1$s oppdaterte %2$s deres"
-
-#: ../../include/items.php:5500
-msgid "profile photo"
-msgstr "profilbilde"
-
-#: ../../mod/achievements.php:34
-msgid "Some blurb about what to do when you're new here"
-msgstr "En standardtekst om hva du bør gjøre som ny her"
-
-#: ../../mod/acl.php:222
-msgid "network"
-msgstr "nettverk"
-
-#: ../../mod/acl.php:232
-msgid "RSS"
-msgstr "RSS"
-
-#: ../../mod/api.php:74 ../../mod/api.php:98
-msgid "Authorize application connection"
-msgstr "Tillat programforbindelse"
-
-#: ../../mod/api.php:75
-msgid "Return to your app and insert this Securty Code:"
-msgstr "GÃ¥ tilbake til din app og legg inn denne sikkerhetskoden:"
-
-#: ../../mod/api.php:85
-msgid "Please login to continue."
-msgstr "Vennligst logg inn for å fortsette."
-
-#: ../../mod/api.php:100
-msgid ""
-"Do you want to authorize this application to access your posts and contacts,"
-" and/or create new posts for you?"
-msgstr "Vil du tillate dette programmet å få tilgang til dine innlegg og kontakter, og/eller lage nye innlegg for deg?"
-
-#: ../../mod/appman.php:28 ../../mod/appman.php:44
-msgid "App installed."
-msgstr "App installert."
-
-#: ../../mod/appman.php:37
-msgid "Malformed app."
-msgstr "Feil oppsett for app-en."
-
-#: ../../mod/appman.php:80
-msgid "Embed code"
-msgstr "Innbyggingskode"
-
-#: ../../mod/appman.php:86
-msgid "Edit App"
-msgstr "Endre app"
-
-#: ../../mod/appman.php:86
-msgid "Create App"
-msgstr "Lag app"
-
-#: ../../mod/appman.php:91
-msgid "Name of app"
-msgstr "Navn på app"
-
-#: ../../mod/appman.php:92
-msgid "Location (URL) of app"
-msgstr "Plassering (URL) til app"
-
-#: ../../mod/appman.php:93 ../../mod/events.php:457 ../../mod/rbmark.php:97
-msgid "Description"
-msgstr "Beskrivelse"
-
-#: ../../mod/appman.php:94
-msgid "Photo icon URL"
-msgstr "Bildeikon URL"
-
-#: ../../mod/appman.php:94
-msgid "80 x 80 pixels - optional"
-msgstr "80 x80 pixler - valgfritt"
-
-#: ../../mod/appman.php:95
-msgid "Version ID"
-msgstr "Versjons-ID"
-
-#: ../../mod/appman.php:96
-msgid "Price of app"
-msgstr "Pris på app"
-
-#: ../../mod/appman.php:97
-msgid "Location (URL) to purchase app"
-msgstr "Plassering (URL) for å kjøpe app"
-
-#: ../../mod/attach.php:9
-msgid "Item not available."
-msgstr "Elementet er ikke tilgjengelig."
-
-#: ../../mod/block.php:27 ../../mod/page.php:36
-msgid "Invalid item."
-msgstr "Ugyldig element."
-
-#: ../../mod/block.php:39 ../../mod/page.php:52 ../../mod/wall_upload.php:29
-#: ../../mod/cal.php:56
-msgid "Channel not found."
-msgstr "Kanalen ble ikke funnet."
-
-#: ../../mod/blocks.php:95 ../../mod/blocks.php:148
-msgid "Block Name"
-msgstr "Byggeklossens navn"
-
-#: ../../mod/blocks.php:149
-msgid "Block Title"
-msgstr "Byggeklossens tittel"
-
-#: ../../mod/bookmarks.php:40
-msgid "Bookmark added"
-msgstr "Bokmerke lagt til"
-
-#: ../../mod/bookmarks.php:62
-msgid "My Bookmarks"
-msgstr "Mine bokmerker"
+#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Chat.php:196
+#: ../../Zotlabs/Module/Chat.php:238 ../../Zotlabs/Module/Connect.php:98
+#: ../../Zotlabs/Module/Connedit.php:731 ../../Zotlabs/Module/Events.php:475
+#: ../../Zotlabs/Module/Events.php:672 ../../Zotlabs/Module/Group.php:85
+#: ../../Zotlabs/Module/Filestorage.php:162
+#: ../../Zotlabs/Module/Import.php:550
+#: ../../Zotlabs/Module/Import_items.php:120
+#: ../../Zotlabs/Module/Invite.php:146 ../../Zotlabs/Module/Locs.php:121
+#: ../../Zotlabs/Module/Mail.php:378 ../../Zotlabs/Module/Mood.php:139
+#: ../../Zotlabs/Module/Mitem.php:235 ../../Zotlabs/Module/Photos.php:677
+#: ../../Zotlabs/Module/Photos.php:1052 ../../Zotlabs/Module/Photos.php:1092
+#: ../../Zotlabs/Module/Photos.php:1210 ../../Zotlabs/Module/Pconfig.php:107
+#: ../../Zotlabs/Module/Pdledit.php:66 ../../Zotlabs/Module/Poke.php:186
+#: ../../Zotlabs/Module/Profiles.php:687 ../../Zotlabs/Module/Rate.php:170
+#: ../../Zotlabs/Module/Admin.php:492 ../../Zotlabs/Module/Admin.php:688
+#: ../../Zotlabs/Module/Admin.php:771 ../../Zotlabs/Module/Admin.php:1032
+#: ../../Zotlabs/Module/Admin.php:1211 ../../Zotlabs/Module/Admin.php:1421
+#: ../../Zotlabs/Module/Admin.php:1648 ../../Zotlabs/Module/Admin.php:1733
+#: ../../Zotlabs/Module/Admin.php:2116 ../../Zotlabs/Module/Appman.php:126
+#: ../../Zotlabs/Module/Settings.php:590 ../../Zotlabs/Module/Settings.php:703
+#: ../../Zotlabs/Module/Settings.php:731 ../../Zotlabs/Module/Settings.php:754
+#: ../../Zotlabs/Module/Settings.php:842
+#: ../../Zotlabs/Module/Settings.php:1034 ../../Zotlabs/Module/Setup.php:312
+#: ../../Zotlabs/Module/Setup.php:353 ../../Zotlabs/Module/Sources.php:114
+#: ../../Zotlabs/Module/Sources.php:149 ../../Zotlabs/Module/Thing.php:316
+#: ../../Zotlabs/Module/Thing.php:362 ../../Zotlabs/Module/Xchan.php:15
+#: ../../Zotlabs/Lib/ThreadItem.php:710 ../../include/widgets.php:757
+#: ../../include/widgets.php:769 ../../include/js_strings.php:22
+#: ../../view/theme/redbasic/php/config.php:99
+msgid "Submit"
+msgstr "Send"
-#: ../../mod/bookmarks.php:73
-msgid "My Connections Bookmarks"
-msgstr "Mine forbindelsers bokmerker"
+#: ../../Zotlabs/Module/Cal.php:341 ../../Zotlabs/Module/Events.php:675
+msgid "Today"
+msgstr "Idag"
-#: ../../mod/channel.php:25 ../../mod/chat.php:19
+#: ../../Zotlabs/Module/Channel.php:29 ../../Zotlabs/Module/Chat.php:25
msgid "You must be logged in to see this page."
msgstr "Du må være innloegget for å se denne siden."
-#: ../../mod/channel.php:97
+#: ../../Zotlabs/Module/Channel.php:41
+msgid "Posts and comments"
+msgstr ""
+
+#: ../../Zotlabs/Module/Channel.php:42
+msgid "Only posts"
+msgstr ""
+
+#: ../../Zotlabs/Module/Channel.php:102
msgid "Insufficient permissions. Request redirected to profile page."
msgstr "Utilstrekkelig tillatelse. Forespørsel omdirigert til profilsiden."
-#: ../../mod/channel.php:131 ../../mod/network.php:169 ../../mod/rpost.php:114
-msgid "Public"
-msgstr "Offentlig"
-
-#: ../../mod/chat.php:174
+#: ../../Zotlabs/Module/Chat.php:181
msgid "Room not found"
msgstr "Rommet ble ikke funnet"
-#: ../../mod/chat.php:185
+#: ../../Zotlabs/Module/Chat.php:197
msgid "Leave Room"
msgstr "Forlat rom"
-#: ../../mod/chat.php:186
-msgid "Delete This Room"
-msgstr "Slett dette rommet"
+#: ../../Zotlabs/Module/Chat.php:198
+msgid "Delete Room"
+msgstr ""
-#: ../../mod/chat.php:187
+#: ../../Zotlabs/Module/Chat.php:199
msgid "I am away right now"
msgstr "Jeg er borte akkurat nå"
-#: ../../mod/chat.php:188
+#: ../../Zotlabs/Module/Chat.php:200
msgid "I am online"
msgstr "Jeg er online"
-#: ../../mod/chat.php:190
+#: ../../Zotlabs/Module/Chat.php:202
msgid "Bookmark this room"
msgstr "Bokmerk dette rommet"
-#: ../../mod/chat.php:208 ../../mod/chat.php:231
+#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Mail.php:205
+#: ../../Zotlabs/Module/Mail.php:314 ../../include/conversation.php:1176
+msgid "Please enter a link URL:"
+msgstr "Vennligst skriv inn en lenke URL:"
+
+#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Module/Mail.php:258
+#: ../../Zotlabs/Module/Mail.php:383 ../../Zotlabs/Lib/ThreadItem.php:722
+#: ../../include/conversation.php:1256
+msgid "Encrypt text"
+msgstr "Krypter tekst"
+
+#: ../../Zotlabs/Module/Chat.php:207 ../../Zotlabs/Module/Editblock.php:111
+#: ../../Zotlabs/Module/Editwebpage.php:147 ../../Zotlabs/Module/Mail.php:252
+#: ../../Zotlabs/Module/Mail.php:377 ../../include/conversation.php:1143
+msgid "Insert web link"
+msgstr "Sett inn web-lenke"
+
+#: ../../Zotlabs/Module/Chat.php:218
+msgid "Feature disabled."
+msgstr ""
+
+#: ../../Zotlabs/Module/Chat.php:232
msgid "New Chatroom"
msgstr "Nytt chatrom"
-#: ../../mod/chat.php:209
-msgid "Chatroom Name"
-msgstr "Navn på chatrom"
+#: ../../Zotlabs/Module/Chat.php:233
+msgid "Chatroom name"
+msgstr ""
-#: ../../mod/chat.php:210
+#: ../../Zotlabs/Module/Chat.php:234
msgid "Expiration of chats (minutes)"
msgstr "Chat utgår (antall minutter)"
-#: ../../mod/chat.php:227
+#: ../../Zotlabs/Module/Chat.php:235 ../../Zotlabs/Module/Filestorage.php:153
+#: ../../Zotlabs/Module/Photos.php:671 ../../Zotlabs/Module/Photos.php:1045
+#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:359
+#: ../../include/acl_selectors.php:283
+msgid "Permissions"
+msgstr "Tillatelser"
+
+#: ../../Zotlabs/Module/Chat.php:246
#, php-format
msgid "%1$s's Chatrooms"
msgstr "%1$s sine chatrom"
-#: ../../mod/chatsvc.php:111
+#: ../../Zotlabs/Module/Chat.php:251
+msgid "No chatrooms available"
+msgstr ""
+
+#: ../../Zotlabs/Module/Chat.php:252 ../../Zotlabs/Module/Manage.php:143
+#: ../../Zotlabs/Module/Profiles.php:778
+msgid "Create New"
+msgstr ""
+
+#: ../../Zotlabs/Module/Chat.php:255
+msgid "Expiration"
+msgstr ""
+
+#: ../../Zotlabs/Module/Chat.php:256
+msgid "min"
+msgstr ""
+
+#: ../../Zotlabs/Module/Chatsvc.php:117
msgid "Away"
msgstr "Borte"
-#: ../../mod/chatsvc.php:115
+#: ../../Zotlabs/Module/Chatsvc.php:122
msgid "Online"
msgstr "Online"
-#: ../../mod/common.php:10
-msgid "No channel."
-msgstr "Ingen kanal."
+#: ../../Zotlabs/Module/Block.php:31 ../../Zotlabs/Module/Page.php:40
+msgid "Invalid item."
+msgstr "Ugyldig element."
-#: ../../mod/common.php:39
-msgid "Common connections"
-msgstr "Felles forbindelser"
+#: ../../Zotlabs/Module/Bookmarks.php:53
+msgid "Bookmark added"
+msgstr "Bokmerke lagt til"
-#: ../../mod/common.php:44
-msgid "No connections in common."
-msgstr "Ingen forbindelser felles."
+#: ../../Zotlabs/Module/Bookmarks.php:75
+msgid "My Bookmarks"
+msgstr "Mine bokmerker"
+
+#: ../../Zotlabs/Module/Bookmarks.php:86
+msgid "My Connections Bookmarks"
+msgstr "Mine forbindelsers bokmerker"
-#: ../../mod/connect.php:56 ../../mod/connect.php:104
+#: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109
msgid "Continue"
msgstr "Fortsett"
-#: ../../mod/connect.php:85
+#: ../../Zotlabs/Module/Connect.php:90
msgid "Premium Channel Setup"
msgstr "Premiumkanal-oppsett"
-#: ../../mod/connect.php:87
+#: ../../Zotlabs/Module/Connect.php:92
msgid "Enable premium channel connection restrictions"
msgstr "Slå på restriksjoner for forbindelse med premiumkanal"
-#: ../../mod/connect.php:88
+#: ../../Zotlabs/Module/Connect.php:93
msgid ""
"Please enter your restrictions or conditions, such as paypal receipt, usage "
"guidelines, etc."
msgstr "Vennligst skriv dine restriksjoner og betingelser, slik som PayPal-kvittering, retningslinjer for bruk, og så videre."
-#: ../../mod/connect.php:90 ../../mod/connect.php:110
+#: ../../Zotlabs/Module/Connect.php:95 ../../Zotlabs/Module/Connect.php:115
msgid ""
"This channel may require additional steps or acknowledgement of the "
"following conditions prior to connecting:"
msgstr "Denne kanalen kan kreve ytterligere steg og bekreftelse av følgende betingelser før tilkobling:"
-#: ../../mod/connect.php:91
+#: ../../Zotlabs/Module/Connect.php:96
msgid ""
"Potential connections will then see the following text before proceeding:"
msgstr "Potensielle forbindelser vil da se følgende tekst før de går videre:"
-#: ../../mod/connect.php:92 ../../mod/connect.php:113
+#: ../../Zotlabs/Module/Connect.php:97 ../../Zotlabs/Module/Connect.php:118
msgid ""
"By continuing, I certify that I have complied with any instructions provided"
" on this page."
msgstr "Ved å fortsette bekrefter jeg at jeg har oppfylt alle instruksjoner gitt på denne siden."
-#: ../../mod/connect.php:101
+#: ../../Zotlabs/Module/Connect.php:106
msgid "(No specific instructions have been provided by the channel owner.)"
msgstr "(Ingen spesifikke instruksjoner er gitt av kanaleieren.)"
-#: ../../mod/connect.php:109
+#: ../../Zotlabs/Module/Connect.php:114
msgid "Restricted or Premium Channel"
msgstr "Begrenset kanal eller premiumkanal"
-#: ../../mod/connections.php:52 ../../mod/connections.php:157
-#: ../../mod/connections.php:238
-msgid "Blocked"
-msgstr "Blokkert"
-
-#: ../../mod/connections.php:57 ../../mod/connections.php:164
-#: ../../mod/connections.php:237
-msgid "Ignored"
-msgstr "Ignorert"
-
-#: ../../mod/connections.php:62 ../../mod/connections.php:178
-#: ../../mod/connections.php:236
-msgid "Hidden"
-msgstr "Skjult"
-
-#: ../../mod/connections.php:67 ../../mod/connections.php:171
-#: ../../mod/connections.php:235
-msgid "Archived"
-msgstr "Arkivert"
-
-#: ../../mod/connections.php:134
-msgid "New Connections"
-msgstr "Nye forbindelser"
-
-#: ../../mod/connections.php:137
-msgid "Show pending (new) connections"
-msgstr "Vis ventende (nye) forbindelser"
-
-#: ../../mod/connections.php:141 ../../mod/profperm.php:139
-msgid "All Connections"
-msgstr "Alle forbindelser"
-
-#: ../../mod/connections.php:144
-msgid "Show all connections"
-msgstr "Vis alle forbindelser"
-
-#: ../../mod/connections.php:160
-msgid "Only show blocked connections"
-msgstr "Vis bare forbindelser som er blokkert"
-
-#: ../../mod/connections.php:167
-msgid "Only show ignored connections"
-msgstr "Vis bare ignorerte forbindelser"
-
-#: ../../mod/connections.php:174
-msgid "Only show archived connections"
-msgstr "Vis bare arkiverte forbindelser"
-
-#: ../../mod/connections.php:181
-msgid "Only show hidden connections"
-msgstr "Vis bare skjulte forbindelser"
-
-#: ../../mod/connections.php:234
-msgid "Pending approval"
-msgstr "Venter på godkjenning"
-
-#: ../../mod/connections.php:250
-#, php-format
-msgid "%1$s [%2$s]"
-msgstr "%1$s [%2$s]"
-
-#: ../../mod/connections.php:251
-msgid "Edit connection"
-msgstr "Endre forbindelse"
-
-#: ../../mod/connections.php:252
-msgid "Delete connection"
-msgstr "Slett forbindelse"
-
-#: ../../mod/connections.php:261
-msgid "Channel address"
-msgstr "Kanaladresse"
-
-#: ../../mod/connections.php:263
-msgid "Network"
-msgstr "Nettverk"
-
-#: ../../mod/connections.php:266 ../../mod/admin.php:668
-msgid "Status"
-msgstr "Status"
-
-#: ../../mod/connections.php:268
-msgid "Connected"
-msgstr "Forbundet"
-
-#: ../../mod/connections.php:270
-msgid "Approve connection"
-msgstr "Godkjenn forbindelse"
-
-#: ../../mod/connections.php:271 ../../mod/admin.php:991
-msgid "Approve"
-msgstr "Godkjenn"
-
-#: ../../mod/connections.php:272
-msgid "Ignore connection"
-msgstr "Ignorer forbindelse"
-
-#: ../../mod/connections.php:273 ../../mod/connedit.php:538
-#: ../../mod/notifications.php:51
-msgid "Ignore"
-msgstr "Ignorer"
-
-#: ../../mod/connections.php:274
-msgid "Recent activity"
-msgstr "Nylig aktivitet"
-
-#: ../../mod/connections.php:303
-msgid "Search your connections"
-msgstr "Søk blant dine forbindelser"
-
-#: ../../mod/connections.php:304
-msgid "Connections search"
-msgstr "Søk blant forbindelser"
-
-#: ../../mod/connedit.php:75
+#: ../../Zotlabs/Module/Connedit.php:80
msgid "Could not access contact record."
msgstr "Fikk ikke tilgang til kontaktinformasjonen."
-#: ../../mod/connedit.php:99
+#: ../../Zotlabs/Module/Connedit.php:104
msgid "Could not locate selected profile."
msgstr "Fant ikke valgt profil."
-#: ../../mod/connedit.php:223
+#: ../../Zotlabs/Module/Connedit.php:227
msgid "Connection updated."
msgstr "Forbindelsen er oppdatert."
-#: ../../mod/connedit.php:225
+#: ../../Zotlabs/Module/Connedit.php:229
msgid "Failed to update connection record."
msgstr "Mislyktes med å oppdatere forbindelsesinformasjonen."
-#: ../../mod/connedit.php:272
+#: ../../Zotlabs/Module/Connedit.php:276
msgid "is now connected to"
msgstr "er nå forbundet til"
-#: ../../mod/connedit.php:400
+#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Connedit.php:654
+#: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:460
+#: ../../Zotlabs/Module/Events.php:469 ../../Zotlabs/Module/Api.php:89
+#: ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Menu.php:100
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
+#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Admin.php:459
+#: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707
+msgid "No"
+msgstr "Nei"
+
+#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Events.php:459
+#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:469
+#: ../../Zotlabs/Module/Api.php:88 ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Menu.php:100
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
+#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Admin.php:461
+#: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707
+msgid "Yes"
+msgstr "Ja"
+
+#: ../../Zotlabs/Module/Connedit.php:411
msgid "Could not access address book record."
msgstr "Fikk ikke tilgang til informasjonen i adresseboken."
-#: ../../mod/connedit.php:414
+#: ../../Zotlabs/Module/Connedit.php:425
msgid "Refresh failed - channel is currently unavailable."
msgstr "Oppfrisking mislyktes - kanalen er for øyeblikket utilgjengelig."
-#: ../../mod/connedit.php:429 ../../mod/connedit.php:438
-#: ../../mod/connedit.php:447 ../../mod/connedit.php:456
-#: ../../mod/connedit.php:469
+#: ../../Zotlabs/Module/Connedit.php:440 ../../Zotlabs/Module/Connedit.php:449
+#: ../../Zotlabs/Module/Connedit.php:458 ../../Zotlabs/Module/Connedit.php:467
+#: ../../Zotlabs/Module/Connedit.php:480
msgid "Unable to set address book parameters."
msgstr "Ikke i stand til å angi parametre for adresseboken."
-#: ../../mod/connedit.php:493
+#: ../../Zotlabs/Module/Connedit.php:503
msgid "Connection has been removed."
msgstr "Forbindelsen har blitt fjernet."
-#: ../../mod/connedit.php:512
+#: ../../Zotlabs/Module/Connedit.php:519 ../../Zotlabs/Lib/Apps.php:219
+#: ../../include/nav.php:86 ../../include/conversation.php:954
+msgid "View Profile"
+msgstr "Vis profil"
+
+#: ../../Zotlabs/Module/Connedit.php:522
#, php-format
msgid "View %s's profile"
msgstr "Vis %s sin profil"
-#: ../../mod/connedit.php:516
+#: ../../Zotlabs/Module/Connedit.php:526
msgid "Refresh Permissions"
msgstr "Oppfrisk tillatelser"
-#: ../../mod/connedit.php:519
+#: ../../Zotlabs/Module/Connedit.php:529
msgid "Fetch updated permissions"
msgstr "Hent oppdaterte tillatelser"
-#: ../../mod/connedit.php:523
+#: ../../Zotlabs/Module/Connedit.php:533
msgid "Recent Activity"
msgstr "Nylig aktivitet"
-#: ../../mod/connedit.php:526
+#: ../../Zotlabs/Module/Connedit.php:536
msgid "View recent posts and comments"
msgstr "Vis nylige innlegg og kommentarer"
-#: ../../mod/connedit.php:530 ../../mod/admin.php:995
+#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1041
msgid "Unblock"
msgstr "Ikke blokker lenger"
-#: ../../mod/connedit.php:530 ../../mod/admin.php:994
+#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1040
msgid "Block"
msgstr "Blokker"
-#: ../../mod/connedit.php:533
+#: ../../Zotlabs/Module/Connedit.php:543
msgid "Block (or Unblock) all communications with this connection"
msgstr "Blokker eller fjern blokkering av all kommunikasjon med denne forbindelsen"
-#: ../../mod/connedit.php:534
+#: ../../Zotlabs/Module/Connedit.php:544
msgid "This connection is blocked!"
msgstr "Denne forbindelsen er blokkert!"
-#: ../../mod/connedit.php:538
+#: ../../Zotlabs/Module/Connedit.php:548
msgid "Unignore"
msgstr "Ikke ignorer lenger"
-#: ../../mod/connedit.php:541
+#: ../../Zotlabs/Module/Connedit.php:548
+#: ../../Zotlabs/Module/Connections.php:277
+#: ../../Zotlabs/Module/Notifications.php:55
+msgid "Ignore"
+msgstr "Ignorer"
+
+#: ../../Zotlabs/Module/Connedit.php:551
msgid "Ignore (or Unignore) all inbound communications from this connection"
msgstr "Ignorer eller fjern ignorering av all inngående kommunikasjon fra denne forbindelsen"
-#: ../../mod/connedit.php:542
+#: ../../Zotlabs/Module/Connedit.php:552
msgid "This connection is ignored!"
msgstr "Denne forbindelsen er ignorert!"
-#: ../../mod/connedit.php:546
+#: ../../Zotlabs/Module/Connedit.php:556
msgid "Unarchive"
msgstr "Ikke arkiver lenger"
-#: ../../mod/connedit.php:546
+#: ../../Zotlabs/Module/Connedit.php:556
msgid "Archive"
msgstr "Arkiver"
-#: ../../mod/connedit.php:549
+#: ../../Zotlabs/Module/Connedit.php:559
msgid ""
"Archive (or Unarchive) this connection - mark channel dead but keep content"
msgstr "Arkiver eller fjern arkivering av denne forbindelsen - marker kanal som død, men behold innhold"
-#: ../../mod/connedit.php:550
+#: ../../Zotlabs/Module/Connedit.php:560
msgid "This connection is archived!"
msgstr "Denne forbindelsen er arkivert!"
-#: ../../mod/connedit.php:554
+#: ../../Zotlabs/Module/Connedit.php:564
msgid "Unhide"
msgstr "Ikke skjul lenger"
-#: ../../mod/connedit.php:554
+#: ../../Zotlabs/Module/Connedit.php:564
msgid "Hide"
msgstr "Skjul"
-#: ../../mod/connedit.php:557
+#: ../../Zotlabs/Module/Connedit.php:567
msgid "Hide or Unhide this connection from your other connections"
msgstr "Skjul eller fjern skjuling av denne forbindelsen fra dine andre forbindelser"
-#: ../../mod/connedit.php:558
+#: ../../Zotlabs/Module/Connedit.php:568
msgid "This connection is hidden!"
msgstr "Denne forbindelsen er skjult!"
-#: ../../mod/connedit.php:565
+#: ../../Zotlabs/Module/Connedit.php:575
msgid "Delete this connection"
msgstr "Slett denne forbindelsen"
-#: ../../mod/connedit.php:646
+#: ../../Zotlabs/Module/Connedit.php:590 ../../include/widgets.php:493
+msgid "Me"
+msgstr "Meg"
+
+#: ../../Zotlabs/Module/Connedit.php:591 ../../include/widgets.php:494
+msgid "Family"
+msgstr "Familie"
+
+#: ../../Zotlabs/Module/Connedit.php:592 ../../Zotlabs/Module/Settings.php:342
+#: ../../Zotlabs/Module/Settings.php:346 ../../Zotlabs/Module/Settings.php:347
+#: ../../Zotlabs/Module/Settings.php:350 ../../Zotlabs/Module/Settings.php:361
+#: ../../include/widgets.php:495 ../../include/selectors.php:123
+#: ../../include/channel.php:389 ../../include/channel.php:390
+#: ../../include/channel.php:397
+msgid "Friends"
+msgstr "Venner"
+
+#: ../../Zotlabs/Module/Connedit.php:593 ../../include/widgets.php:496
+msgid "Acquaintances"
+msgstr "Bekjente"
+
+#: ../../Zotlabs/Module/Connedit.php:594
+#: ../../Zotlabs/Module/Connections.php:92
+#: ../../Zotlabs/Module/Connections.php:107 ../../include/widgets.php:497
+msgid "All"
+msgstr "Alle"
+
+#: ../../Zotlabs/Module/Connedit.php:654
msgid "Approve this connection"
msgstr "Godta denne forbindelsen"
-#: ../../mod/connedit.php:646
+#: ../../Zotlabs/Module/Connedit.php:654
msgid "Accept connection to allow communication"
msgstr "Godta denne forbindelsen for å tillate kommunikasjon"
-#: ../../mod/connedit.php:651
+#: ../../Zotlabs/Module/Connedit.php:659
msgid "Set Affinity"
msgstr "Angi nærhet"
-#: ../../mod/connedit.php:654
+#: ../../Zotlabs/Module/Connedit.php:662
msgid "Set Profile"
msgstr "Angi profil"
-#: ../../mod/connedit.php:657
+#: ../../Zotlabs/Module/Connedit.php:665
msgid "Set Affinity & Profile"
msgstr "Angi nærhet og profil"
-#: ../../mod/connedit.php:690
+#: ../../Zotlabs/Module/Connedit.php:698
msgid "none"
msgstr "ingen"
-#: ../../mod/connedit.php:695
+#: ../../Zotlabs/Module/Connedit.php:702 ../../include/widgets.php:614
+msgid "Connection Default Permissions"
+msgstr "Forbindelsens standard tillatelser"
+
+#: ../../Zotlabs/Module/Connedit.php:702 ../../include/items.php:3926
+#, php-format
+msgid "Connection: %s"
+msgstr "Forbindelse: %s"
+
+#: ../../Zotlabs/Module/Connedit.php:703
msgid "Apply these permissions automatically"
msgstr "Bruk disse tillatelsene automatisk"
-#: ../../mod/connedit.php:695
+#: ../../Zotlabs/Module/Connedit.php:703
msgid "Connection requests will be approved without your interaction"
msgstr "Forespørsler om forbindelse vil bli godkjent automatisk"
-#: ../../mod/connedit.php:697
+#: ../../Zotlabs/Module/Connedit.php:705
msgid "This connection's primary address is"
msgstr "Denne forbindelsens primære adresse er"
-#: ../../mod/connedit.php:698
+#: ../../Zotlabs/Module/Connedit.php:706
msgid "Available locations:"
msgstr "Tilgjengelige plasseringer:"
-#: ../../mod/connedit.php:702
+#: ../../Zotlabs/Module/Connedit.php:710
msgid ""
"The permissions indicated on this page will be applied to all new "
"connections."
msgstr "Tillatelsene angitt på denne siden gjøres gjeldende for alle nye forbindelser."
-#: ../../mod/connedit.php:704
+#: ../../Zotlabs/Module/Connedit.php:711
+msgid "Connection Tools"
+msgstr ""
+
+#: ../../Zotlabs/Module/Connedit.php:713
msgid "Slide to adjust your degree of friendship"
msgstr "Flytt for å justere din grad av vennskap"
-#: ../../mod/connedit.php:706
+#: ../../Zotlabs/Module/Connedit.php:714 ../../Zotlabs/Module/Rate.php:159
+#: ../../include/js_strings.php:20
+msgid "Rating"
+msgstr "Vurdering"
+
+#: ../../Zotlabs/Module/Connedit.php:715
msgid "Slide to adjust your rating"
msgstr "Flytt for å justere din vurdering"
-#: ../../mod/connedit.php:707 ../../mod/connedit.php:712
+#: ../../Zotlabs/Module/Connedit.php:716 ../../Zotlabs/Module/Connedit.php:721
msgid "Optionally explain your rating"
msgstr "Velg om du vil forklare vurderingen"
-#: ../../mod/connedit.php:709
+#: ../../Zotlabs/Module/Connedit.php:718
msgid "Custom Filter"
msgstr "Tilpasset filter"
-#: ../../mod/connedit.php:710
+#: ../../Zotlabs/Module/Connedit.php:719
msgid "Only import posts with this text"
msgstr "Bare importer innlegg med disse ordene"
-#: ../../mod/connedit.php:710 ../../mod/connedit.php:711
+#: ../../Zotlabs/Module/Connedit.php:719 ../../Zotlabs/Module/Connedit.php:720
msgid ""
"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
"all posts"
msgstr "ord per linje eller #merkelapper eller /mønster/ eller språk lang=xx, la stå blankt for å importere alle innlegg"
-#: ../../mod/connedit.php:711
+#: ../../Zotlabs/Module/Connedit.php:720
msgid "Do not import posts with this text"
msgstr "Ikke importer innlegg med denne teksten"
-#: ../../mod/connedit.php:713
+#: ../../Zotlabs/Module/Connedit.php:722
msgid "This information is public!"
msgstr "Denne informasjonen er offentlig!"
-#: ../../mod/connedit.php:718
+#: ../../Zotlabs/Module/Connedit.php:727
msgid "Connection Pending Approval"
msgstr "Forbindelse venter på godkjenning"
-#: ../../mod/connedit.php:721
+#: ../../Zotlabs/Module/Connedit.php:730
msgid "inherited"
msgstr "arvet"
-#: ../../mod/connedit.php:723
+#: ../../Zotlabs/Module/Connedit.php:732
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr "Vennligst velg profilen du ønsker å vise %s når profilen din ses på en sikret måte. "
-#: ../../mod/connedit.php:725
+#: ../../Zotlabs/Module/Connedit.php:734
msgid "Their Settings"
msgstr "Deres innstillinger"
-#: ../../mod/connedit.php:726
+#: ../../Zotlabs/Module/Connedit.php:735
msgid "My Settings"
msgstr "Mine innstillinger"
-#: ../../mod/connedit.php:728
+#: ../../Zotlabs/Module/Connedit.php:737
msgid "Individual Permissions"
msgstr "Individuelle tillatelser"
-#: ../../mod/connedit.php:729
+#: ../../Zotlabs/Module/Connedit.php:738
msgid ""
"Some permissions may be inherited from your channel's <a "
"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
@@ -4893,7 +878,7 @@ msgid ""
" settings here."
msgstr "Noen tillatelser kan være arvet fra din kanals <a ref=\"settings\"><strong>personverninnstillinger</strong></a>, som har høyere prioritet enn individuelle innstillinger. Du kan <strong>ikke</strong> endre arvede innstillingene her."
-#: ../../mod/connedit.php:730
+#: ../../Zotlabs/Module/Connedit.php:739
msgid ""
"Some permissions may be inherited from your channel's <a "
"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
@@ -4901,664 +886,916 @@ msgid ""
"they wont have any impact unless the inherited setting changes."
msgstr "Noen tillatelser kan være arvet fra din kanals <a ref=\"settings\"><strong>personverninnstillinger</strong></a>, som har høyere prioritet enn individuelle innstillinger. Du kan endre disse innstillingene her, men de vil ikke få noen effekt før de arvede innstillingene endres."
-#: ../../mod/connedit.php:731
+#: ../../Zotlabs/Module/Connedit.php:740
msgid "Last update:"
msgstr "Siste oppdatering:"
-#: ../../mod/dav.php:121
-msgid "$Projectname channel"
-msgstr "$Projectname-kanal"
-
-#: ../../mod/directory.php:59 ../../mod/display.php:13
-#: ../../mod/photos.php:490 ../../mod/ratings.php:82 ../../mod/search.php:13
-#: ../../mod/viewconnections.php:17
+#: ../../Zotlabs/Module/Directory.php:63 ../../Zotlabs/Module/Display.php:17
+#: ../../Zotlabs/Module/Photos.php:522 ../../Zotlabs/Module/Ratings.php:86
+#: ../../Zotlabs/Module/Search.php:17
+#: ../../Zotlabs/Module/Viewconnections.php:20
msgid "Public access denied."
msgstr "Offentlig tilgang avvist."
-#: ../../mod/directory.php:239
+#: ../../Zotlabs/Module/Directory.php:243
#, php-format
msgid "%d rating"
msgid_plural "%d ratings"
msgstr[0] "%d vurdering"
msgstr[1] "%d vurderinger"
-#: ../../mod/directory.php:250
+#: ../../Zotlabs/Module/Directory.php:254
msgid "Gender: "
msgstr "Kjønn:"
-#: ../../mod/directory.php:252
+#: ../../Zotlabs/Module/Directory.php:256
msgid "Status: "
msgstr "Status:"
-#: ../../mod/directory.php:254
+#: ../../Zotlabs/Module/Directory.php:258
msgid "Homepage: "
msgstr "Hjemmeside:"
-#: ../../mod/directory.php:313
+#: ../../Zotlabs/Module/Directory.php:306 ../../include/channel.php:1183
+msgid "Age:"
+msgstr "Alder:"
+
+#: ../../Zotlabs/Module/Directory.php:311 ../../include/event.php:52
+#: ../../include/event.php:84 ../../include/channel.php:1027
+#: ../../include/bb2diaspora.php:507
+msgid "Location:"
+msgstr "Plassering:"
+
+#: ../../Zotlabs/Module/Directory.php:317
msgid "Description:"
msgstr "Beskrivelse:"
-#: ../../mod/directory.php:322
+#: ../../Zotlabs/Module/Directory.php:322 ../../include/channel.php:1199
+msgid "Hometown:"
+msgstr "Hjemby:"
+
+#: ../../Zotlabs/Module/Directory.php:324 ../../include/channel.php:1207
+msgid "About:"
+msgstr "Om:"
+
+#: ../../Zotlabs/Module/Directory.php:325 ../../Zotlabs/Module/Match.php:68
+#: ../../Zotlabs/Module/Suggest.php:56 ../../include/widgets.php:147
+#: ../../include/widgets.php:184 ../../include/connections.php:78
+#: ../../include/conversation.php:956 ../../include/channel.php:1012
+msgid "Connect"
+msgstr "Koble"
+
+#: ../../Zotlabs/Module/Directory.php:326
msgid "Public Forum:"
msgstr "Offentlig forum:"
-#: ../../mod/directory.php:325
+#: ../../Zotlabs/Module/Directory.php:329
msgid "Keywords: "
msgstr "Nøkkelord:"
-#: ../../mod/directory.php:328
+#: ../../Zotlabs/Module/Directory.php:332
msgid "Don't suggest"
msgstr "Ikke foreslå"
-#: ../../mod/directory.php:330
+#: ../../Zotlabs/Module/Directory.php:334
msgid "Common connections:"
msgstr "Felles forbindelser:"
-#: ../../mod/directory.php:379
+#: ../../Zotlabs/Module/Directory.php:383
msgid "Global Directory"
msgstr "Global katalog"
-#: ../../mod/directory.php:379
+#: ../../Zotlabs/Module/Directory.php:383
msgid "Local Directory"
msgstr "Lokal katalog"
-#: ../../mod/directory.php:385
+#: ../../Zotlabs/Module/Directory.php:388
+#: ../../Zotlabs/Module/Directory.php:393
+#: ../../Zotlabs/Module/Connections.php:309
+#: ../../include/contact_widgets.php:23
+msgid "Find"
+msgstr "Finn"
+
+#: ../../Zotlabs/Module/Directory.php:389
msgid "Finding:"
msgstr "Finner:"
-#: ../../mod/directory.php:390
+#: ../../Zotlabs/Module/Directory.php:392 ../../Zotlabs/Module/Suggest.php:64
+#: ../../include/contact_widgets.php:24
+msgid "Channel Suggestions"
+msgstr "Kanalforslag"
+
+#: ../../Zotlabs/Module/Directory.php:394
msgid "next page"
msgstr "Neste side"
-#: ../../mod/directory.php:390
+#: ../../Zotlabs/Module/Directory.php:394
msgid "previous page"
msgstr "Forrige side"
-#: ../../mod/directory.php:391
+#: ../../Zotlabs/Module/Directory.php:395
msgid "Sort options"
msgstr "Sorteringsvalg"
-#: ../../mod/directory.php:392
+#: ../../Zotlabs/Module/Directory.php:396
msgid "Alphabetic"
msgstr "Alfabetisk"
-#: ../../mod/directory.php:393
+#: ../../Zotlabs/Module/Directory.php:397
msgid "Reverse Alphabetic"
msgstr "Omvendt alfabetisk"
-#: ../../mod/directory.php:394
+#: ../../Zotlabs/Module/Directory.php:398
msgid "Newest to Oldest"
msgstr "Nyest til eldst"
-#: ../../mod/directory.php:395
+#: ../../Zotlabs/Module/Directory.php:399
msgid "Oldest to Newest"
msgstr "Eldst til nyest"
-#: ../../mod/directory.php:412
+#: ../../Zotlabs/Module/Directory.php:416
msgid "No entries (some entries may be hidden)."
msgstr "Ingen oppføringer (noen oppføringer kan være skjult)."
-#: ../../mod/dirsearch.php:21 ../../mod/regdir.php:45
-msgid "This site is not a directory server"
-msgstr "Dette nettstedet er ikke en katalogtjener"
+#: ../../Zotlabs/Module/Display.php:40 ../../Zotlabs/Module/Filestorage.php:33
+#: ../../Zotlabs/Module/Admin.php:164 ../../Zotlabs/Module/Admin.php:1255
+#: ../../Zotlabs/Module/Admin.php:1561 ../../Zotlabs/Module/Thing.php:89
+#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:3359
+msgid "Item not found."
+msgstr "Elementet ble ikke funnet."
-#: ../../mod/dirsearch.php:29
-msgid "This directory server requires an access token"
-msgstr "Denne katalogtjeneren krever en tilgangsnøkkel (access token)"
+#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95
+#: ../../Zotlabs/Module/Editpost.php:24 ../../Zotlabs/Module/Editlayout.php:79
+#: ../../Zotlabs/Module/Editwebpage.php:81
+msgid "Item not found"
+msgstr "Elementet ble ikke funnet."
-#: ../../mod/dreport.php:23
-msgid "Invalid message"
-msgstr "Ugyldig melding"
+#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1228
+msgid "Title (optional)"
+msgstr "Tittel (valgfri)"
-#: ../../mod/dreport.php:55
-msgid "no results"
-msgstr "ingen resultater"
+#: ../../Zotlabs/Module/Editblock.php:133
+msgid "Edit Block"
+msgstr "Endre byggekloss"
+
+#: ../../Zotlabs/Module/Common.php:14
+msgid "No channel."
+msgstr "Ingen kanal."
+
+#: ../../Zotlabs/Module/Common.php:43
+msgid "Common connections"
+msgstr "Felles forbindelser"
+
+#: ../../Zotlabs/Module/Common.php:48
+msgid "No connections in common."
+msgstr "Ingen forbindelser felles."
+
+#: ../../Zotlabs/Module/Connections.php:56
+#: ../../Zotlabs/Module/Connections.php:161
+#: ../../Zotlabs/Module/Connections.php:242
+msgid "Blocked"
+msgstr "Blokkert"
+
+#: ../../Zotlabs/Module/Connections.php:61
+#: ../../Zotlabs/Module/Connections.php:168
+#: ../../Zotlabs/Module/Connections.php:241
+msgid "Ignored"
+msgstr "Ignorert"
-#: ../../mod/dreport.php:60
+#: ../../Zotlabs/Module/Connections.php:66
+#: ../../Zotlabs/Module/Connections.php:182
+#: ../../Zotlabs/Module/Connections.php:240
+msgid "Hidden"
+msgstr "Skjult"
+
+#: ../../Zotlabs/Module/Connections.php:71
+#: ../../Zotlabs/Module/Connections.php:175
+#: ../../Zotlabs/Module/Connections.php:239
+msgid "Archived"
+msgstr "Arkivert"
+
+#: ../../Zotlabs/Module/Connections.php:76
+#: ../../Zotlabs/Module/Connections.php:86 ../../Zotlabs/Module/Menu.php:116
+#: ../../include/conversation.php:1535
+msgid "New"
+msgstr "Nye"
+
+#: ../../Zotlabs/Module/Connections.php:138
+msgid "New Connections"
+msgstr "Nye forbindelser"
+
+#: ../../Zotlabs/Module/Connections.php:141
+msgid "Show pending (new) connections"
+msgstr "Vis ventende (nye) forbindelser"
+
+#: ../../Zotlabs/Module/Connections.php:145
+#: ../../Zotlabs/Module/Profperm.php:144
+msgid "All Connections"
+msgstr "Alle forbindelser"
+
+#: ../../Zotlabs/Module/Connections.php:148
+msgid "Show all connections"
+msgstr "Vis alle forbindelser"
+
+#: ../../Zotlabs/Module/Connections.php:164
+msgid "Only show blocked connections"
+msgstr "Vis bare forbindelser som er blokkert"
+
+#: ../../Zotlabs/Module/Connections.php:171
+msgid "Only show ignored connections"
+msgstr "Vis bare ignorerte forbindelser"
+
+#: ../../Zotlabs/Module/Connections.php:178
+msgid "Only show archived connections"
+msgstr "Vis bare arkiverte forbindelser"
+
+#: ../../Zotlabs/Module/Connections.php:185
+msgid "Only show hidden connections"
+msgstr "Vis bare skjulte forbindelser"
+
+#: ../../Zotlabs/Module/Connections.php:238
+msgid "Pending approval"
+msgstr "Venter på godkjenning"
+
+#: ../../Zotlabs/Module/Connections.php:254
#, php-format
-msgid "Delivery report for %1$s"
-msgstr "Leveringsrapport for %1$s"
+msgid "%1$s [%2$s]"
+msgstr "%1$s [%2$s]"
-#: ../../mod/dreport.php:74
-msgid "channel sync processed"
-msgstr "Kanalsynkronisering er behandlet"
+#: ../../Zotlabs/Module/Connections.php:255
+msgid "Edit connection"
+msgstr "Endre forbindelse"
-#: ../../mod/dreport.php:78
-msgid "queued"
-msgstr "lagt i kø"
+#: ../../Zotlabs/Module/Connections.php:256
+msgid "Delete connection"
+msgstr "Slett forbindelse"
-#: ../../mod/dreport.php:82
-msgid "posted"
-msgstr "lagt inn"
+#: ../../Zotlabs/Module/Connections.php:265
+msgid "Channel address"
+msgstr "Kanaladresse"
-#: ../../mod/dreport.php:86
-msgid "accepted for delivery"
-msgstr "akseptert for levering"
+#: ../../Zotlabs/Module/Connections.php:267
+msgid "Network"
+msgstr "Nettverk"
-#: ../../mod/dreport.php:90
-msgid "updated"
-msgstr "oppdatert"
+#: ../../Zotlabs/Module/Connections.php:270 ../../Zotlabs/Module/Admin.php:710
+msgid "Status"
+msgstr "Status"
-#: ../../mod/dreport.php:93
-msgid "update ignored"
-msgstr "oppdatering ignorert"
+#: ../../Zotlabs/Module/Connections.php:272
+msgid "Connected"
+msgstr "Forbundet"
-#: ../../mod/dreport.php:96
-msgid "permission denied"
-msgstr "tillatelse avvist"
+#: ../../Zotlabs/Module/Connections.php:274
+msgid "Approve connection"
+msgstr "Godkjenn forbindelse"
-#: ../../mod/dreport.php:100
-msgid "recipient not found"
-msgstr "mottaker ble ikke funnet"
+#: ../../Zotlabs/Module/Connections.php:275
+#: ../../Zotlabs/Module/Admin.php:1037
+msgid "Approve"
+msgstr "Godkjenn"
-#: ../../mod/dreport.php:103
-msgid "mail recalled"
-msgstr "melding tilbakekalt"
+#: ../../Zotlabs/Module/Connections.php:276
+msgid "Ignore connection"
+msgstr "Ignorer forbindelse"
-#: ../../mod/dreport.php:106
-msgid "duplicate mail received"
-msgstr "duplikat av melding mottatt"
+#: ../../Zotlabs/Module/Connections.php:278
+msgid "Recent activity"
+msgstr "Nylig aktivitet"
-#: ../../mod/dreport.php:109
-msgid "mail delivered"
-msgstr "melding mottatt"
+#: ../../Zotlabs/Module/Connections.php:302 ../../Zotlabs/Lib/Apps.php:208
+#: ../../include/text.php:875 ../../include/nav.php:186
+msgid "Connections"
+msgstr "Forbindelser"
-#: ../../mod/editblock.php:78 ../../mod/editblock.php:94
-#: ../../mod/editlayout.php:76 ../../mod/editpost.php:20
-#: ../../mod/editwebpage.php:77
-msgid "Item not found"
-msgstr "Elementet ble ikke funnet."
+#: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44
+#: ../../Zotlabs/Lib/Apps.php:228 ../../include/text.php:945
+#: ../../include/text.php:957 ../../include/nav.php:165
+#: ../../include/acl_selectors.php:276
+msgid "Search"
+msgstr "Søk"
-#: ../../mod/editblock.php:118
-msgid "Delete block?"
-msgstr "Slett byggeklossen?"
+#: ../../Zotlabs/Module/Connections.php:307
+msgid "Search your connections"
+msgstr "Søk blant dine forbindelser"
-#: ../../mod/editblock.php:145 ../../mod/editlayout.php:143
-#: ../../mod/editpost.php:121 ../../mod/editwebpage.php:185
-msgid "Insert YouTube video"
-msgstr "Sett inn YouTube-video"
+#: ../../Zotlabs/Module/Connections.php:308
+msgid "Connections search"
+msgstr "Søk blant forbindelser"
-#: ../../mod/editblock.php:146 ../../mod/editlayout.php:144
-#: ../../mod/editpost.php:122 ../../mod/editwebpage.php:186
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Sett inn Vorbis [.ogg] video"
+#: ../../Zotlabs/Module/Cover_photo.php:58
+#: ../../Zotlabs/Module/Profile_photo.php:79
+msgid "Image uploaded but image cropping failed."
+msgstr "Bildet ble lastet opp, men beskjæring av bildet mislyktes."
-#: ../../mod/editblock.php:147 ../../mod/editlayout.php:145
-#: ../../mod/editpost.php:123 ../../mod/editwebpage.php:187
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Legg i"
+#: ../../Zotlabs/Module/Cover_photo.php:134
+#: ../../Zotlabs/Module/Cover_photo.php:181
+msgid "Cover Photos"
+msgstr "Forsidebilder"
-#: ../../mod/editblock.php:180
-msgid "Edit Block"
-msgstr "Endre byggekloss"
+#: ../../Zotlabs/Module/Cover_photo.php:154
+#: ../../Zotlabs/Module/Profile_photo.php:133
+msgid "Image resize failed."
+msgstr "Endring av bildestørrelse mislyktes."
-#: ../../mod/editlayout.php:112
-msgid "Delete layout?"
-msgstr "Slett layout?"
+#: ../../Zotlabs/Module/Cover_photo.php:168
+#: ../../Zotlabs/Module/Profile_photo.php:192 ../../include/photos.php:144
+msgid "Unable to process image"
+msgstr "Kan ikke behandle bildet"
-#: ../../mod/editlayout.php:159 ../../mod/layouts.php:124
-msgid "Layout Description (Optional)"
-msgstr "Layoutens beskrivelse (valgfritt)"
+#: ../../Zotlabs/Module/Cover_photo.php:192
+#: ../../Zotlabs/Module/Profile_photo.php:217
+msgid "Image upload failed."
+msgstr "Opplasting av bildet mislyktes."
-#: ../../mod/editlayout.php:161 ../../mod/layouts.php:121
-#: ../../mod/layouts.php:179
-msgid "Layout Name"
-msgstr "Layout-navn"
+#: ../../Zotlabs/Module/Cover_photo.php:210
+#: ../../Zotlabs/Module/Profile_photo.php:236
+msgid "Unable to process image."
+msgstr "Kan ikke behandle bildet."
-#: ../../mod/editlayout.php:178
-msgid "Edit Layout"
-msgstr "Endre layout"
+#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4270
+msgid "female"
+msgstr "kvinne"
-#: ../../mod/editpost.php:31
-msgid "Item is not editable"
-msgstr "Elementet kan ikke endres"
+#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4271
+#, php-format
+msgid "%1$s updated her %2$s"
+msgstr "%1$s oppdaterte %2$s sitt"
-#: ../../mod/editpost.php:57
-msgid "Delete item?"
-msgstr "Slett element?"
+#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4272
+msgid "male"
+msgstr "mann"
-#: ../../mod/editpost.php:164 ../../mod/rpost.php:128
-msgid "Edit post"
-msgstr "Endre innlegg"
+#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4273
+#, php-format
+msgid "%1$s updated his %2$s"
+msgstr "%1$s oppdaterte %2$s sitt"
-#: ../../mod/editwebpage.php:153
-msgid "Delete webpage?"
-msgstr "Slett webside?"
+#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4275
+#, php-format
+msgid "%1$s updated their %2$s"
+msgstr "%1$s oppdaterte %2$s deres"
-#: ../../mod/editwebpage.php:172
-msgid "Page link title"
-msgstr "Sidens lenketittel"
+#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1661
+msgid "cover photo"
+msgstr "forsidebilde"
-#: ../../mod/editwebpage.php:222
-msgid "Edit Webpage"
-msgstr "Endre webside"
+#: ../../Zotlabs/Module/Cover_photo.php:303
+#: ../../Zotlabs/Module/Cover_photo.php:318
+#: ../../Zotlabs/Module/Profile_photo.php:283
+#: ../../Zotlabs/Module/Profile_photo.php:324
+msgid "Photo not available."
+msgstr "Bildet er ikke tilgjengelig."
+
+#: ../../Zotlabs/Module/Cover_photo.php:354
+#: ../../Zotlabs/Module/Profile_photo.php:365
+msgid "Upload File:"
+msgstr "Last opp fil:"
+
+#: ../../Zotlabs/Module/Cover_photo.php:355
+#: ../../Zotlabs/Module/Profile_photo.php:366
+msgid "Select a profile:"
+msgstr "Velg en profil:"
+
+#: ../../Zotlabs/Module/Cover_photo.php:356
+msgid "Upload Cover Photo"
+msgstr "Last opp forsidebilde"
+
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+#: ../../Zotlabs/Module/Settings.php:985
+msgid "or"
+msgstr "eller"
+
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+msgid "skip this step"
+msgstr "hopp over dette steget"
+
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+msgid "select a photo from your photo albums"
+msgstr "velg et bilde fra dine fotoalbum"
+
+#: ../../Zotlabs/Module/Cover_photo.php:377
+#: ../../Zotlabs/Module/Profile_photo.php:390
+msgid "Crop Image"
+msgstr "Beskjær bildet"
-#: ../../mod/events.php:21
+#: ../../Zotlabs/Module/Cover_photo.php:378
+#: ../../Zotlabs/Module/Profile_photo.php:391
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Vennligst juster bildebeskjæringen for optimal visning."
+
+#: ../../Zotlabs/Module/Cover_photo.php:380
+#: ../../Zotlabs/Module/Profile_photo.php:393
+msgid "Done Editing"
+msgstr "Avslutt redigering"
+
+#: ../../Zotlabs/Module/Editpost.php:35
+msgid "Item is not editable"
+msgstr "Elementet kan ikke endres"
+
+#: ../../Zotlabs/Module/Editpost.php:106 ../../Zotlabs/Module/Rpost.php:135
+msgid "Edit post"
+msgstr "Endre innlegg"
+
+#: ../../Zotlabs/Module/Events.php:26
msgid "Calendar entries imported."
msgstr "Kalenderhendelsene er importert."
-#: ../../mod/events.php:23
+#: ../../Zotlabs/Module/Events.php:28
msgid "No calendar entries found."
msgstr "Ingen kalenderhendelser funnet."
-#: ../../mod/events.php:100
+#: ../../Zotlabs/Module/Events.php:105
msgid "Event can not end before it has started."
msgstr "Hendelsen kan ikke slutte før den starter."
-#: ../../mod/events.php:102 ../../mod/events.php:111 ../../mod/events.php:131
+#: ../../Zotlabs/Module/Events.php:107 ../../Zotlabs/Module/Events.php:116
+#: ../../Zotlabs/Module/Events.php:136
msgid "Unable to generate preview."
msgstr "Klarer ikke å lage forhåndsvisning."
-#: ../../mod/events.php:109
+#: ../../Zotlabs/Module/Events.php:114
msgid "Event title and start time are required."
msgstr "Hendelsestittel og starttidspunkt er påkrevd."
-#: ../../mod/events.php:129 ../../mod/events.php:254
+#: ../../Zotlabs/Module/Events.php:134 ../../Zotlabs/Module/Events.php:259
msgid "Event not found."
msgstr "Hendelsen ble ikke funnet."
-#: ../../mod/events.php:444
+#: ../../Zotlabs/Module/Events.php:254 ../../Zotlabs/Module/Like.php:373
+#: ../../Zotlabs/Module/Tagger.php:51 ../../include/event.php:949
+#: ../../include/text.php:1943 ../../include/conversation.php:123
+msgid "event"
+msgstr "hendelse"
+
+#: ../../Zotlabs/Module/Events.php:449
msgid "Edit event title"
msgstr "Endre tittel på hendelse"
-#: ../../mod/events.php:444
+#: ../../Zotlabs/Module/Events.php:449
msgid "Event title"
msgstr "Tittel på hendelse"
-#: ../../mod/events.php:446
+#: ../../Zotlabs/Module/Events.php:449 ../../Zotlabs/Module/Events.php:454
+#: ../../Zotlabs/Module/Profiles.php:709 ../../Zotlabs/Module/Profiles.php:713
+#: ../../Zotlabs/Module/Appman.php:115 ../../Zotlabs/Module/Appman.php:116
+#: ../../include/datetime.php:245
+msgid "Required"
+msgstr "PÃ¥krevd"
+
+#: ../../Zotlabs/Module/Events.php:451
msgid "Categories (comma-separated list)"
msgstr "Kategorier (kommaseparert liste)"
-#: ../../mod/events.php:447
+#: ../../Zotlabs/Module/Events.php:452
msgid "Edit Category"
msgstr "Endre kategori"
-#: ../../mod/events.php:447
+#: ../../Zotlabs/Module/Events.php:452
msgid "Category"
msgstr "Kategori"
-#: ../../mod/events.php:450
+#: ../../Zotlabs/Module/Events.php:455
msgid "Edit start date and time"
msgstr "Endre startdato og tidspunkt"
-#: ../../mod/events.php:450
+#: ../../Zotlabs/Module/Events.php:455
msgid "Start date and time"
msgstr "Startdato og tidspunkt"
-#: ../../mod/events.php:451 ../../mod/events.php:454
+#: ../../Zotlabs/Module/Events.php:456 ../../Zotlabs/Module/Events.php:459
msgid "Finish date and time are not known or not relevant"
msgstr "Sluttdato og tidspunkt er ikke kjent eller ikke relevant"
-#: ../../mod/events.php:453
+#: ../../Zotlabs/Module/Events.php:458
msgid "Edit finish date and time"
msgstr "Endre sluttdato og tidspunkt"
-#: ../../mod/events.php:453
+#: ../../Zotlabs/Module/Events.php:458
msgid "Finish date and time"
msgstr "Sluttdato og tidspunkt"
-#: ../../mod/events.php:455 ../../mod/events.php:456
+#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:461
msgid "Adjust for viewer timezone"
msgstr "Juster i forhold til tilskuerens tidssone"
-#: ../../mod/events.php:455
+#: ../../Zotlabs/Module/Events.php:460
msgid ""
"Important for events that happen in a particular place. Not practical for "
"global holidays."
msgstr "Viktig for hendelser som skjer på et bestemt sted. Ikke praktisk for globale ferier eller fridager."
-#: ../../mod/events.php:457
+#: ../../Zotlabs/Module/Events.php:462
msgid "Edit Description"
msgstr "Endre beskrivelse"
-#: ../../mod/events.php:459
+#: ../../Zotlabs/Module/Events.php:462 ../../Zotlabs/Module/Appman.php:117
+#: ../../Zotlabs/Module/Rbmark.php:101
+msgid "Description"
+msgstr "Beskrivelse"
+
+#: ../../Zotlabs/Module/Events.php:464
msgid "Edit Location"
msgstr "Endre plassering"
-#: ../../mod/events.php:462 ../../mod/events.php:464
+#: ../../Zotlabs/Module/Events.php:464 ../../Zotlabs/Module/Locs.php:117
+#: ../../Zotlabs/Module/Profiles.php:477 ../../Zotlabs/Module/Profiles.php:698
+#: ../../Zotlabs/Module/Pubsites.php:41 ../../include/js_strings.php:25
+msgid "Location"
+msgstr "Plassering"
+
+#: ../../Zotlabs/Module/Events.php:467 ../../Zotlabs/Module/Events.php:469
msgid "Share this event"
msgstr "Del denne hendelsen"
-#: ../../mod/events.php:469
+#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Photos.php:1093
+#: ../../Zotlabs/Module/Webpages.php:194 ../../Zotlabs/Lib/ThreadItem.php:719
+#: ../../include/conversation.php:1187 ../../include/page_widgets.php:40
+msgid "Preview"
+msgstr "Forhåndsvisning"
+
+#: ../../Zotlabs/Module/Events.php:471 ../../include/conversation.php:1232
+msgid "Permission settings"
+msgstr "Tillatelser - innstillinger"
+
+#: ../../Zotlabs/Module/Events.php:476
msgid "Advanced Options"
msgstr "Avanserte alternativer"
-#: ../../mod/events.php:581 ../../mod/cal.php:253
-msgid "l, F j"
-msgstr "l, F j"
-
-#: ../../mod/events.php:603
+#: ../../Zotlabs/Module/Events.php:610
msgid "Edit event"
msgstr "Endre hendelse"
-#: ../../mod/events.php:605
+#: ../../Zotlabs/Module/Events.php:612
msgid "Delete event"
msgstr "Slett hendelse"
-#: ../../mod/events.php:639
+#: ../../Zotlabs/Module/Events.php:646
msgid "calendar"
msgstr "kalender"
-#: ../../mod/events.php:658 ../../mod/cal.php:325
-msgid "Edit Event"
-msgstr "Endre hendelse"
-
-#: ../../mod/events.php:658 ../../mod/cal.php:325
-msgid "Create Event"
-msgstr "Lag hendelse"
-
-#: ../../mod/events.php:659 ../../mod/events.php:666 ../../mod/photos.php:916
-#: ../../mod/cal.php:326 ../../mod/cal.php:333
-msgid "Previous"
-msgstr "Forrige"
-
-#: ../../mod/events.php:660 ../../mod/events.php:667 ../../mod/photos.php:925
-#: ../../mod/setup.php:288 ../../mod/cal.php:327 ../../mod/cal.php:334
-msgid "Next"
-msgstr "Neste"
-
-#: ../../mod/events.php:668 ../../mod/cal.php:335
-msgid "Today"
-msgstr "Idag"
-
-#: ../../mod/events.php:699
+#: ../../Zotlabs/Module/Events.php:706
msgid "Event removed"
msgstr "Hendelse slettet"
-#: ../../mod/events.php:702
+#: ../../Zotlabs/Module/Events.php:709
msgid "Failed to remove event"
msgstr "Mislyktes med å slette hendelse"
-#: ../../mod/ffsapi.php:8
-msgid "Share content from Firefox to $Projectname"
-msgstr "Del innhold fra Firefox til $Projectname"
+#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:220
+#: ../../include/nav.php:92 ../../include/conversation.php:1632
+msgid "Photos"
+msgstr "Bilder"
-#: ../../mod/ffsapi.php:11
-msgid "Activate the Firefox $Projectname provider"
-msgstr "Skru på Firefox $Projectname tilbyderen"
+#: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88
+#: ../../Zotlabs/Module/Admin.php:1406 ../../Zotlabs/Module/Settings.php:591
+#: ../../Zotlabs/Module/Settings.php:617 ../../Zotlabs/Module/Tagrm.php:15
+#: ../../Zotlabs/Module/Tagrm.php:138 ../../include/conversation.php:1259
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49
+msgid "This site is not a directory server"
+msgstr "Dette nettstedet er ikke en katalogtjener"
-#: ../../mod/filer.php:48
+#: ../../Zotlabs/Module/Dirsearch.php:33
+msgid "This directory server requires an access token"
+msgstr "Denne katalogtjeneren krever en tilgangsnøkkel (access token)"
+
+#: ../../Zotlabs/Module/Filer.php:52
+msgid "Save to Folder:"
+msgstr "Lagre til mappe:"
+
+#: ../../Zotlabs/Module/Filer.php:52
msgid "- select -"
msgstr "- velg -"
-#: ../../mod/filestorage.php:82
-msgid "Permission Denied."
-msgstr "Tillatelse avvist."
+#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Admin.php:2033
+#: ../../Zotlabs/Module/Admin.php:2053 ../../Zotlabs/Module/Rbmark.php:32
+#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/text.php:946
+#: ../../include/text.php:958 ../../include/widgets.php:201
+msgid "Save"
+msgstr "Lagre"
-#: ../../mod/filestorage.php:98
-msgid "File not found."
-msgstr "Filen ble ikke funnet."
+#: ../../Zotlabs/Module/Dreport.php:27
+msgid "Invalid message"
+msgstr "Ugyldig melding"
-#: ../../mod/filestorage.php:141
-msgid "Edit file permissions"
-msgstr "Endre filtillatelser"
+#: ../../Zotlabs/Module/Dreport.php:59
+msgid "no results"
+msgstr "ingen resultater"
-#: ../../mod/filestorage.php:150
-msgid "Set/edit permissions"
-msgstr "Angi/endre tillatelser"
+#: ../../Zotlabs/Module/Dreport.php:64
+#, php-format
+msgid "Delivery report for %1$s"
+msgstr "Leveringsrapport for %1$s"
-#: ../../mod/filestorage.php:151
-msgid "Include all files and sub folders"
-msgstr "Inkluder alle filer og undermapper"
+#: ../../Zotlabs/Module/Dreport.php:78
+msgid "channel sync processed"
+msgstr "Kanalsynkronisering er behandlet"
-#: ../../mod/filestorage.php:152
-msgid "Return to file list"
-msgstr "GÃ¥ tilbake til filoversikten"
+#: ../../Zotlabs/Module/Dreport.php:82
+msgid "queued"
+msgstr "lagt i kø"
-#: ../../mod/filestorage.php:154
-msgid "Copy/paste this code to attach file to a post"
-msgstr "Kopier og lim inn denne koden for å legge til filen i et innlegg"
+#: ../../Zotlabs/Module/Dreport.php:86
+msgid "posted"
+msgstr "lagt inn"
-#: ../../mod/filestorage.php:155
-msgid "Copy/paste this URL to link file from a web page"
-msgstr "Kopier og lim inn denne URL-en for å lenke til filen fra en webside"
+#: ../../Zotlabs/Module/Dreport.php:90
+msgid "accepted for delivery"
+msgstr "akseptert for levering"
-#: ../../mod/filestorage.php:157
-msgid "Share this file"
-msgstr "Del denne filen"
+#: ../../Zotlabs/Module/Dreport.php:94
+msgid "updated"
+msgstr "oppdatert"
-#: ../../mod/filestorage.php:158
-msgid "Show URL to this file"
-msgstr "Vis URLen til denne filen"
+#: ../../Zotlabs/Module/Dreport.php:97
+msgid "update ignored"
+msgstr "oppdatering ignorert"
-#: ../../mod/filestorage.php:159
-msgid "Notify your contacts about this file"
-msgstr "Varsle dine kontakter om denne filen"
+#: ../../Zotlabs/Module/Dreport.php:100
+msgid "permission denied"
+msgstr "tillatelse avvist"
-#: ../../mod/follow.php:25
-msgid "Channel added."
-msgstr "Kanal lagt til."
+#: ../../Zotlabs/Module/Dreport.php:104
+msgid "recipient not found"
+msgstr "mottaker ble ikke funnet"
-#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
-msgid "Contact not found."
-msgstr "Kontakten ble ikke funnet."
+#: ../../Zotlabs/Module/Dreport.php:107
+msgid "mail recalled"
+msgstr "melding tilbakekalt"
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
-msgstr "Venneforespørsel sendt."
+#: ../../Zotlabs/Module/Dreport.php:110
+msgid "duplicate mail received"
+msgstr "duplikat av melding mottatt"
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
-msgstr "Foreslå venner"
+#: ../../Zotlabs/Module/Dreport.php:113
+msgid "mail delivered"
+msgstr "melding mottatt"
-#: ../../mod/fsuggest.php:99
-#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Foreslå en venn for %s"
+#: ../../Zotlabs/Module/Editlayout.php:126
+#: ../../Zotlabs/Module/Layouts.php:127 ../../Zotlabs/Module/Layouts.php:186
+msgid "Layout Name"
+msgstr "Layout-navn"
+
+#: ../../Zotlabs/Module/Editlayout.php:127
+#: ../../Zotlabs/Module/Layouts.php:130
+msgid "Layout Description (Optional)"
+msgstr "Layoutens beskrivelse (valgfritt)"
+
+#: ../../Zotlabs/Module/Editlayout.php:135
+msgid "Edit Layout"
+msgstr "Endre layout"
+
+#: ../../Zotlabs/Module/Editwebpage.php:143
+msgid "Page link"
+msgstr ""
+
+#: ../../Zotlabs/Module/Editwebpage.php:169
+msgid "Edit Webpage"
+msgstr "Endre webside"
+
+#: ../../Zotlabs/Module/Follow.php:34
+msgid "Channel added."
+msgstr "Kanal lagt til."
-#: ../../mod/group.php:20
+#: ../../Zotlabs/Module/Acl.php:227
+msgid "network"
+msgstr "nettverk"
+
+#: ../../Zotlabs/Module/Acl.php:237
+msgid "RSS"
+msgstr "RSS"
+
+#: ../../Zotlabs/Module/Group.php:24
msgid "Privacy group created."
msgstr "Personverngruppen er opprettet."
-#: ../../mod/group.php:26
+#: ../../Zotlabs/Module/Group.php:30
msgid "Could not create privacy group."
msgstr "Kunne ikke opprette personverngruppen."
-#: ../../mod/group.php:54
+#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141
+#: ../../include/items.php:3893
+msgid "Privacy group not found."
+msgstr "Personverngruppen ble ikke funnet"
+
+#: ../../Zotlabs/Module/Group.php:58
msgid "Privacy group updated."
msgstr "Personverngruppen er oppdatert."
-#: ../../mod/group.php:86
+#: ../../Zotlabs/Module/Group.php:90
msgid "Create a group of channels."
msgstr "Lag en gruppe av kanaler."
-#: ../../mod/group.php:87 ../../mod/group.php:180
+#: ../../Zotlabs/Module/Group.php:91 ../../Zotlabs/Module/Group.php:184
msgid "Privacy group name: "
msgstr "Personverngruppens navn:"
-#: ../../mod/group.php:89 ../../mod/group.php:183
+#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Group.php:187
msgid "Members are visible to other channels"
msgstr "Medlemmer er synlig for andre kanaler"
-#: ../../mod/group.php:107
+#: ../../Zotlabs/Module/Group.php:111
msgid "Privacy group removed."
msgstr "Personverngruppen er fjernet."
-#: ../../mod/group.php:109
+#: ../../Zotlabs/Module/Group.php:113
msgid "Unable to remove privacy group."
msgstr "Ikke i stand til å fjerne personverngruppen."
-#: ../../mod/group.php:179
+#: ../../Zotlabs/Module/Group.php:183
msgid "Privacy group editor"
msgstr "Personverngruppebehandler"
-#: ../../mod/group.php:193
+#: ../../Zotlabs/Module/Group.php:197
msgid "Members"
msgstr "Medlemmer"
-#: ../../mod/group.php:195
+#: ../../Zotlabs/Module/Group.php:199
msgid "All Connected Channels"
msgstr "Alle tilkoblede kanaler"
-#: ../../mod/group.php:227
+#: ../../Zotlabs/Module/Group.php:231
msgid "Click on a channel to add or remove."
msgstr "Klikk på en kanal for å legge til eller fjerne."
-#: ../../mod/help.php:149
-msgid "Documentation Search"
-msgstr "Søk i dokumentasjon"
-
-#: ../../mod/help.php:190 ../../mod/help.php:196 ../../mod/help.php:202
-msgid "Help:"
-msgstr "Hjelp:"
+#: ../../Zotlabs/Module/Ffsapi.php:12
+msgid "Share content from Firefox to $Projectname"
+msgstr "Del innhold fra Firefox til $Projectname"
-#: ../../mod/help.php:243
-msgid "$Projectname Documentation"
-msgstr "$Projectname dokumentasjon"
+#: ../../Zotlabs/Module/Ffsapi.php:15
+msgid "Activate the Firefox $Projectname provider"
+msgstr "Skru på Firefox $Projectname tilbyderen"
-#: ../../mod/home.php:57 ../../mod/home.php:65 ../../mod/siteinfo.php:61
-msgid "$Projectname"
-msgstr "$Projectname"
+#: ../../Zotlabs/Module/Api.php:61 ../../Zotlabs/Module/Api.php:85
+msgid "Authorize application connection"
+msgstr "Tillat programforbindelse"
-#: ../../mod/home.php:75
-#, php-format
-msgid "Welcome to %s"
-msgstr "Velkommen til %s"
+#: ../../Zotlabs/Module/Api.php:62
+msgid "Return to your app and insert this Securty Code:"
+msgstr "GÃ¥ tilbake til din app og legg inn denne sikkerhetskoden:"
-#: ../../mod/id.php:11
-msgid "First Name"
-msgstr "Fornavn"
+#: ../../Zotlabs/Module/Api.php:72
+msgid "Please login to continue."
+msgstr "Vennligst logg inn for å fortsette."
-#: ../../mod/id.php:12
-msgid "Last Name"
-msgstr "Etternavn"
+#: ../../Zotlabs/Module/Api.php:87
+msgid ""
+"Do you want to authorize this application to access your posts and contacts,"
+" and/or create new posts for you?"
+msgstr "Vil du tillate dette programmet å få tilgang til dine innlegg og kontakter, og/eller lage nye innlegg for deg?"
-#: ../../mod/id.php:13
-msgid "Nickname"
-msgstr "Kallenavn"
+#: ../../Zotlabs/Module/Help.php:26
+msgid "Documentation Search"
+msgstr "Søk i dokumentasjon"
-#: ../../mod/id.php:14
-msgid "Full Name"
-msgstr "Fullt navn"
+#: ../../Zotlabs/Module/Help.php:67 ../../Zotlabs/Module/Help.php:73
+#: ../../Zotlabs/Module/Help.php:79
+msgid "Help:"
+msgstr "Hjelp:"
-#: ../../mod/id.php:20
-msgid "Profile Photo 16px"
-msgstr "Profilbilde 16px"
+#: ../../Zotlabs/Module/Help.php:85 ../../Zotlabs/Module/Help.php:90
+#: ../../Zotlabs/Module/Layouts.php:183 ../../Zotlabs/Lib/Apps.php:223
+#: ../../include/nav.php:159
+msgid "Help"
+msgstr "Hjelp"
-#: ../../mod/id.php:21
-msgid "Profile Photo 32px"
-msgstr "Profilbilde 32px"
+#: ../../Zotlabs/Module/Help.php:120
+msgid "$Projectname Documentation"
+msgstr "$Projectname dokumentasjon"
-#: ../../mod/id.php:22
-msgid "Profile Photo 48px"
-msgstr "Profilbilde 48px"
+#: ../../Zotlabs/Module/Filestorage.php:88
+msgid "Permission Denied."
+msgstr "Tillatelse avvist."
-#: ../../mod/id.php:23
-msgid "Profile Photo 64px"
-msgstr "Profilbilde 64px"
+#: ../../Zotlabs/Module/Filestorage.php:104
+msgid "File not found."
+msgstr "Filen ble ikke funnet."
-#: ../../mod/id.php:24
-msgid "Profile Photo 80px"
-msgstr "Profilbilde 80px"
+#: ../../Zotlabs/Module/Filestorage.php:147
+msgid "Edit file permissions"
+msgstr "Endre filtillatelser"
-#: ../../mod/id.php:25
-msgid "Profile Photo 128px"
-msgstr "Profilbilde 128px"
+#: ../../Zotlabs/Module/Filestorage.php:156
+msgid "Set/edit permissions"
+msgstr "Angi/endre tillatelser"
-#: ../../mod/id.php:26
-msgid "Timezone"
-msgstr "Tidssone"
+#: ../../Zotlabs/Module/Filestorage.php:157
+msgid "Include all files and sub folders"
+msgstr "Inkluder alle filer og undermapper"
-#: ../../mod/id.php:27
-msgid "Homepage URL"
-msgstr "Hjemmeside URL"
+#: ../../Zotlabs/Module/Filestorage.php:158
+msgid "Return to file list"
+msgstr "GÃ¥ tilbake til filoversikten"
-#: ../../mod/id.php:29
-msgid "Birth Year"
-msgstr "Fødselsår"
+#: ../../Zotlabs/Module/Filestorage.php:160
+msgid "Copy/paste this code to attach file to a post"
+msgstr "Kopier og lim inn denne koden for å legge til filen i et innlegg"
-#: ../../mod/id.php:30
-msgid "Birth Month"
-msgstr "Fødselsmåne"
+#: ../../Zotlabs/Module/Filestorage.php:161
+msgid "Copy/paste this URL to link file from a web page"
+msgstr "Kopier og lim inn denne URL-en for å lenke til filen fra en webside"
-#: ../../mod/id.php:31
-msgid "Birth Day"
-msgstr "Fødselsdag"
+#: ../../Zotlabs/Module/Filestorage.php:163
+msgid "Share this file"
+msgstr "Del denne filen"
-#: ../../mod/id.php:32
-msgid "Birthdate"
-msgstr "Fødselsdato"
+#: ../../Zotlabs/Module/Filestorage.php:164
+msgid "Show URL to this file"
+msgstr "Vis URLen til denne filen"
-#: ../../mod/id.php:33 ../../mod/profiles.php:441
-msgid "Gender"
-msgstr "Kjønn"
+#: ../../Zotlabs/Module/Filestorage.php:165
+msgid "Notify your contacts about this file"
+msgstr "Varsle dine kontakter om denne filen"
-#: ../../mod/impel.php:192
-#, php-format
-msgid "%s element installed"
-msgstr "%s element installert"
+#: ../../Zotlabs/Module/Apps.php:47 ../../include/widgets.php:102
+#: ../../include/nav.php:163
+msgid "Apps"
+msgstr "Apper"
-#: ../../mod/impel.php:195
-#, php-format
-msgid "%s element installation failed"
-msgstr "Installasjon av %s-element mislyktes"
+#: ../../Zotlabs/Module/Attach.php:13
+msgid "Item not available."
+msgstr "Elementet er ikke tilgjengelig."
-#: ../../mod/import.php:28
+#: ../../Zotlabs/Module/Import.php:32
#, php-format
msgid "Your service plan only allows %d channels."
msgstr "Din tjenesteplan tillater bare %d kanaler."
-#: ../../mod/import.php:66 ../../mod/import_items.php:38
+#: ../../Zotlabs/Module/Import.php:70 ../../Zotlabs/Module/Import_items.php:42
msgid "Nothing to import."
msgstr "Ingenting å importere."
-#: ../../mod/import.php:90 ../../mod/import_items.php:62
+#: ../../Zotlabs/Module/Import.php:94 ../../Zotlabs/Module/Import_items.php:66
msgid "Unable to download data from old server"
msgstr "Ikke i stand til å laste ned data fra gammel tjener"
-#: ../../mod/import.php:96 ../../mod/import_items.php:68
+#: ../../Zotlabs/Module/Import.php:100
+#: ../../Zotlabs/Module/Import_items.php:72
msgid "Imported file is empty."
msgstr "Importert fil er tom."
-#: ../../mod/import.php:119 ../../mod/import_items.php:82
+#: ../../Zotlabs/Module/Import.php:122
+#: ../../Zotlabs/Module/Import_items.php:86
#, php-format
msgid "Warning: Database versions differ by %1$d updates."
msgstr "Advarsel: databaseversjoner avviker med %1$d oppdateringer."
-#: ../../mod/import.php:124
-msgid "Server platform is not compatible. Operation not permitted."
-msgstr "Tjenerplattformen er ikke kompatibel. Handlingen er ikke tillatt."
+#: ../../Zotlabs/Module/Import.php:150 ../../include/import.php:86
+msgid "Cloned channel not found. Import failed."
+msgstr "Klonet kanal ble ikke funnet. Import mislyktes."
-#: ../../mod/import.php:158
+#: ../../Zotlabs/Module/Import.php:160
msgid "No channel. Import failed."
msgstr "Ingen kanal. Import mislyktes."
-#: ../../mod/import.php:518
+#: ../../Zotlabs/Module/Import.php:510
+#: ../../include/Import/import_diaspora.php:142
+msgid "Import completed."
+msgstr "Import ferdig."
+
+#: ../../Zotlabs/Module/Import.php:532
msgid "You must be logged in to use this feature."
msgstr "Du må være innlogget for å bruke denne funksjonen."
-#: ../../mod/import.php:523
+#: ../../Zotlabs/Module/Import.php:537
msgid "Import Channel"
msgstr "Importer kanal"
-#: ../../mod/import.php:524
+#: ../../Zotlabs/Module/Import.php:538
msgid ""
"Use this form to import an existing channel from a different server/hub. You"
" may retrieve the channel identity from the old server/hub via the network "
"or provide an export file."
msgstr "Bruk dette skjemaet for å importere en eksisterende kanal fra en annen tjener/hub. Du kan hente inn kanalidentiteten fra den gamle tjeneren/huben via nettverket eller ved å bruke en eksportfil."
-#: ../../mod/import.php:525 ../../mod/import_items.php:115
+#: ../../Zotlabs/Module/Import.php:539
+#: ../../Zotlabs/Module/Import_items.php:119
msgid "File to Upload"
msgstr "Fil som skal lastes opp"
-#: ../../mod/import.php:526
+#: ../../Zotlabs/Module/Import.php:540
msgid "Or provide the old server/hub details"
msgstr "Eller oppgi detaljene fra den gamle tjeneren/hub-en"
-#: ../../mod/import.php:527
+#: ../../Zotlabs/Module/Import.php:541
msgid "Your old identity address (xyz@example.com)"
msgstr "Din gamle identitetsadresse (xyz@example.com)"
-#: ../../mod/import.php:528
+#: ../../Zotlabs/Module/Import.php:542
msgid "Your old login email address"
msgstr "Din gamle innloggings e-postadresse"
-#: ../../mod/import.php:529
+#: ../../Zotlabs/Module/Import.php:543
msgid "Your old login password"
msgstr "Ditt gamle innloggingspassord"
-#: ../../mod/import.php:530
+#: ../../Zotlabs/Module/Import.php:544
msgid ""
"For either option, please choose whether to make this hub your new primary "
"address, or whether your old location should continue this role. You will be"
@@ -5566,3745 +1803,4382 @@ msgid ""
"primary location for files, photos, and media."
msgstr "Enten du tar det ene eller det andre valget, vennligst angi om du vil at denne hubben skal være din nye primære adresse, eller om din gamle plassering skal fortsette å ha denne rollen. Du kan lage innlegg fra den ene eller den andre plasseringen, men bare en av dem kan markeres som den primære plasseringen for filer, bilder og media."
-#: ../../mod/import.php:531
+#: ../../Zotlabs/Module/Import.php:545
msgid "Make this hub my primary location"
msgstr "Gjør dette nettstedet til min primære plassering"
-#: ../../mod/import.php:532
+#: ../../Zotlabs/Module/Import.php:546
msgid ""
"Import existing posts if possible (experimental - limited by available "
"memory"
msgstr "Importer eksisterende innlegg om mulig (eksperimentelt - begrenset av tilgjengelig minne)"
-#: ../../mod/import.php:533
+#: ../../Zotlabs/Module/Import.php:547
msgid ""
"This process may take several minutes to complete. Please submit the form "
"only once and leave this page open until finished."
msgstr "Denne prosessen kan ta flere minutter å fullføre. Vennligst send inn dette skjemaet bare en gang og la siden være åpen inntil den er ferdig."
-#: ../../mod/import_items.php:98
-msgid "Import completed"
-msgstr "Import ferdig"
-
-#: ../../mod/import_items.php:113
-msgid "Import Items"
-msgstr "Importer elementer"
-
-#: ../../mod/import_items.php:114
-msgid ""
-"Use this form to import existing posts and content from an export file."
-msgstr "Bruk dette skjemaet for å importere eksisterende innlegg og innhold fra en eksportfil."
-
-#: ../../mod/invite.php:25
-msgid "Total invitation limit exceeded."
-msgstr "Grensen for totalt antall invitasjoner er overskredet."
-
-#: ../../mod/invite.php:49
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s : ikke en gyldig e-postadresse."
-
-#: ../../mod/invite.php:59
-msgid "Please join us on $Projectname"
-msgstr "Bli med oss på $Projectname"
-
-#: ../../mod/invite.php:70
-msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr "Invitasjonsgrensen er overskredet. Vennligst kontakt administratoren ved ditt nettsted."
-
-#: ../../mod/invite.php:75
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s : meldingslevering feilet."
-
-#: ../../mod/invite.php:79
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d melding sendt."
-msgstr[1] "%d meldinger sendt."
-
-#: ../../mod/invite.php:98
-msgid "You have no more invitations available"
-msgstr "Du har ikke flere invitasjoner tilgjengelig"
-
-#: ../../mod/invite.php:129
-msgid "Send invitations"
-msgstr "Send invitasjoner"
-
-#: ../../mod/invite.php:130
-msgid "Enter email addresses, one per line:"
-msgstr "Skriv e-postadresser, en per linje:"
-
-#: ../../mod/invite.php:131 ../../mod/mail.php:246
-msgid "Your message:"
-msgstr "Din melding:"
-
-#: ../../mod/invite.php:132
-msgid "Please join my community on $Projectname."
-msgstr "Du er velkommen til å bli med i mitt fellesskap på $Projectname."
-
-#: ../../mod/invite.php:134
-msgid "You will need to supply this invitation code:"
-msgstr "Du må oppgi denne invitasjonskoden:"
-
-#: ../../mod/invite.php:135
-msgid ""
-"1. Register at any $Projectname location (they are all inter-connected)"
-msgstr "1. Registrer ved enhver $Projectname-lokasjon (de er alle forbundet med hverandre)"
-
-#: ../../mod/invite.php:137
-msgid "2. Enter my $Projectname network address into the site searchbar."
-msgstr "2. Skriv inn min $Projectname-adresse i nettstedets søkefelt."
-
-#: ../../mod/invite.php:138
-msgid "or visit"
-msgstr "eller besøke"
-
-#: ../../mod/invite.php:140
-msgid "3. Click [Connect]"
-msgstr "3. Klikk [Forbindelse]"
-
-#: ../../mod/item.php:174
+#: ../../Zotlabs/Module/Item.php:178
msgid "Unable to locate original post."
msgstr "Ikke i stand til å finne opprinnelig innlegg."
-#: ../../mod/item.php:423
+#: ../../Zotlabs/Module/Item.php:427
msgid "Empty post discarded."
msgstr "Tomt innlegg forkastet."
-#: ../../mod/item.php:463
+#: ../../Zotlabs/Module/Item.php:467
msgid "Executable content type not permitted to this channel."
msgstr "Kjørbar innholdstype er ikke tillat for denne kanalen."
-#: ../../mod/item.php:830
+#: ../../Zotlabs/Module/Item.php:847
msgid "Duplicate post suppressed."
msgstr "Duplikat av innlegg forhindret."
-#: ../../mod/item.php:960
+#: ../../Zotlabs/Module/Item.php:977
msgid "System error. Post not saved."
msgstr "Systemfeil. Innlegg ble ikke lagret."
-#: ../../mod/item.php:1227
+#: ../../Zotlabs/Module/Item.php:1241
msgid "Unable to obtain post information from database."
msgstr "Ikke i stand til å få tak i informasjon om innlegg fra databasen."
-#: ../../mod/item.php:1234
+#: ../../Zotlabs/Module/Item.php:1248
#, php-format
msgid "You have reached your limit of %1$.0f top level posts."
msgstr "Du har nådd din grense på %1$.0f startinnlegg."
-#: ../../mod/item.php:1241
+#: ../../Zotlabs/Module/Item.php:1255
#, php-format
msgid "You have reached your limit of %1$.0f webpages."
msgstr "Du har nådd din grense på %1$.0f websider."
-#: ../../mod/layouts.php:176
+#: ../../Zotlabs/Module/Layouts.php:181 ../../include/text.php:2267
+msgid "Layouts"
+msgstr "Layout"
+
+#: ../../Zotlabs/Module/Layouts.php:183
msgid "Comanche page description language help"
msgstr "Hjelp med Comanche sidebeskrivelsesspråk"
-#: ../../mod/layouts.php:180
+#: ../../Zotlabs/Module/Layouts.php:187
msgid "Layout Description"
msgstr "Layout-beskrivelse"
-#: ../../mod/layouts.php:185
+#: ../../Zotlabs/Module/Layouts.php:192
msgid "Download PDL file"
msgstr "Last ned PDL-fil"
-#: ../../mod/like.php:15
+#: ../../Zotlabs/Module/Home.php:61 ../../Zotlabs/Module/Home.php:69
+#: ../../Zotlabs/Module/Siteinfo.php:65
+msgid "$Projectname"
+msgstr "$Projectname"
+
+#: ../../Zotlabs/Module/Home.php:79
+#, php-format
+msgid "Welcome to %s"
+msgstr "Velkommen til %s"
+
+#: ../../Zotlabs/Module/Id.php:13
+msgid "First Name"
+msgstr "Fornavn"
+
+#: ../../Zotlabs/Module/Id.php:14
+msgid "Last Name"
+msgstr "Etternavn"
+
+#: ../../Zotlabs/Module/Id.php:15
+msgid "Nickname"
+msgstr "Kallenavn"
+
+#: ../../Zotlabs/Module/Id.php:16
+msgid "Full Name"
+msgstr "Fullt navn"
+
+#: ../../Zotlabs/Module/Id.php:17 ../../Zotlabs/Module/Id.php:18
+#: ../../Zotlabs/Module/Admin.php:1035 ../../Zotlabs/Module/Admin.php:1047
+#: ../../include/network.php:2151 ../../boot.php:1705
+msgid "Email"
+msgstr "E-post"
+
+#: ../../Zotlabs/Module/Id.php:19 ../../Zotlabs/Module/Id.php:20
+#: ../../Zotlabs/Module/Id.php:21 ../../Zotlabs/Lib/Apps.php:236
+msgid "Profile Photo"
+msgstr "Profilbilde"
+
+#: ../../Zotlabs/Module/Id.php:22
+msgid "Profile Photo 16px"
+msgstr "Profilbilde 16px"
+
+#: ../../Zotlabs/Module/Id.php:23
+msgid "Profile Photo 32px"
+msgstr "Profilbilde 32px"
+
+#: ../../Zotlabs/Module/Id.php:24
+msgid "Profile Photo 48px"
+msgstr "Profilbilde 48px"
+
+#: ../../Zotlabs/Module/Id.php:25
+msgid "Profile Photo 64px"
+msgstr "Profilbilde 64px"
+
+#: ../../Zotlabs/Module/Id.php:26
+msgid "Profile Photo 80px"
+msgstr "Profilbilde 80px"
+
+#: ../../Zotlabs/Module/Id.php:27
+msgid "Profile Photo 128px"
+msgstr "Profilbilde 128px"
+
+#: ../../Zotlabs/Module/Id.php:28
+msgid "Timezone"
+msgstr "Tidssone"
+
+#: ../../Zotlabs/Module/Id.php:29 ../../Zotlabs/Module/Profiles.php:731
+msgid "Homepage URL"
+msgstr "Hjemmeside URL"
+
+#: ../../Zotlabs/Module/Id.php:30 ../../Zotlabs/Lib/Apps.php:234
+msgid "Language"
+msgstr "Språk"
+
+#: ../../Zotlabs/Module/Id.php:31
+msgid "Birth Year"
+msgstr "Fødselsår"
+
+#: ../../Zotlabs/Module/Id.php:32
+msgid "Birth Month"
+msgstr "Fødselsmåne"
+
+#: ../../Zotlabs/Module/Id.php:33
+msgid "Birth Day"
+msgstr "Fødselsdag"
+
+#: ../../Zotlabs/Module/Id.php:34
+msgid "Birthdate"
+msgstr "Fødselsdato"
+
+#: ../../Zotlabs/Module/Id.php:35 ../../Zotlabs/Module/Profiles.php:454
+msgid "Gender"
+msgstr "Kjønn"
+
+#: ../../Zotlabs/Module/Id.php:108 ../../include/selectors.php:49
+#: ../../include/selectors.php:66
+msgid "Male"
+msgstr "Mannlig"
+
+#: ../../Zotlabs/Module/Id.php:110 ../../include/selectors.php:49
+#: ../../include/selectors.php:66
+msgid "Female"
+msgstr "Kvinnelig"
+
+#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:192
+msgid "webpage"
+msgstr "nettside"
+
+#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:198
+msgid "block"
+msgstr "byggekloss"
+
+#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:195
+msgid "layout"
+msgstr "layout"
+
+#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:201
+msgid "menu"
+msgstr "meny"
+
+#: ../../Zotlabs/Module/Impel.php:196
+#, php-format
+msgid "%s element installed"
+msgstr "%s element installert"
+
+#: ../../Zotlabs/Module/Impel.php:199
+#, php-format
+msgid "%s element installation failed"
+msgstr "Installasjon av %s-element mislyktes"
+
+#: ../../Zotlabs/Module/Like.php:19
msgid "Like/Dislike"
msgstr "Liker/Liker ikke"
-#: ../../mod/like.php:20
+#: ../../Zotlabs/Module/Like.php:24
msgid "This action is restricted to members."
msgstr "Denne handlingen er begrenset til medlemmer."
-#: ../../mod/like.php:21
+#: ../../Zotlabs/Module/Like.php:25
msgid ""
"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a "
"href=\"register\">register as a new $Projectname member</a> to continue."
msgstr "Vennligst <a href=\"rmagic\">logg inn med din $Projectname ID</a> eller <a href=\"register\">registrer deg som et nytt $Projectname-medlem</a> for å fortsette"
-#: ../../mod/like.php:101 ../../mod/like.php:127 ../../mod/like.php:165
+#: ../../Zotlabs/Module/Like.php:105 ../../Zotlabs/Module/Like.php:131
+#: ../../Zotlabs/Module/Like.php:169
msgid "Invalid request."
msgstr "Ugyldig forespørsel."
-#: ../../mod/like.php:142
+#: ../../Zotlabs/Module/Like.php:117 ../../include/conversation.php:126
+msgid "channel"
+msgstr "kanal"
+
+#: ../../Zotlabs/Module/Like.php:146
msgid "thing"
msgstr "ting"
-#: ../../mod/like.php:188
+#: ../../Zotlabs/Module/Like.php:192
msgid "Channel unavailable."
msgstr "Kanalen er utilgjengelig."
-#: ../../mod/like.php:236
+#: ../../Zotlabs/Module/Like.php:240
msgid "Previous action reversed."
msgstr "Forrige handling er omgjort."
-#: ../../mod/like.php:414
+#: ../../Zotlabs/Module/Like.php:371 ../../Zotlabs/Module/Subthread.php:87
+#: ../../Zotlabs/Module/Tagger.php:47 ../../include/text.php:1940
+#: ../../include/conversation.php:120
+msgid "photo"
+msgstr "foto"
+
+#: ../../Zotlabs/Module/Like.php:371 ../../Zotlabs/Module/Subthread.php:87
+#: ../../include/text.php:1946 ../../include/conversation.php:148
+msgid "status"
+msgstr "status"
+
+#: ../../Zotlabs/Module/Like.php:420 ../../include/conversation.php:164
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "%1$s liker %2$s sin %3$s"
+
+#: ../../Zotlabs/Module/Like.php:422 ../../include/conversation.php:167
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
+msgstr "%1$s liker ikke %2$s sin %3$s"
+
+#: ../../Zotlabs/Module/Like.php:424
#, php-format
msgid "%1$s agrees with %2$s's %3$s"
msgstr "%1$s er enig med %2$s sin %3$s"
-#: ../../mod/like.php:416
+#: ../../Zotlabs/Module/Like.php:426
#, php-format
msgid "%1$s doesn't agree with %2$s's %3$s"
msgstr "%1$s er ikke enig med %2$s sin %3$s"
-#: ../../mod/like.php:418
+#: ../../Zotlabs/Module/Like.php:428
#, php-format
msgid "%1$s abstains from a decision on %2$s's %3$s"
msgstr "%1$s avstår fra å mene noe om %2$s sin %3$s"
-#: ../../mod/like.php:420
+#: ../../Zotlabs/Module/Like.php:430
#, php-format
msgid "%1$s is attending %2$s's %3$s"
msgstr "%1$s deltar på %2$ss %3$s"
-#: ../../mod/like.php:422
+#: ../../Zotlabs/Module/Like.php:432
#, php-format
msgid "%1$s is not attending %2$s's %3$s"
msgstr "%1$s deltar ikke på %2$ss %3$s"
-#: ../../mod/like.php:424
+#: ../../Zotlabs/Module/Like.php:434
#, php-format
msgid "%1$s may attend %2$s's %3$s"
msgstr "%1$s deltar kanskje på %2$ss %3$s"
-#: ../../mod/like.php:527
+#: ../../Zotlabs/Module/Like.php:537
msgid "Action completed."
msgstr "Handling ferdig."
-#: ../../mod/like.php:528
+#: ../../Zotlabs/Module/Like.php:538
msgid "Thank you."
msgstr "Tusen takk."
-#: ../../mod/lockview.php:37
+#: ../../Zotlabs/Module/Import_items.php:102
+msgid "Import completed"
+msgstr "Import ferdig"
+
+#: ../../Zotlabs/Module/Import_items.php:117
+msgid "Import Items"
+msgstr "Importer elementer"
+
+#: ../../Zotlabs/Module/Import_items.php:118
+msgid ""
+"Use this form to import existing posts and content from an export file."
+msgstr "Bruk dette skjemaet for å importere eksisterende innlegg og innhold fra en eksportfil."
+
+#: ../../Zotlabs/Module/Invite.php:29
+msgid "Total invitation limit exceeded."
+msgstr "Grensen for totalt antall invitasjoner er overskredet."
+
+#: ../../Zotlabs/Module/Invite.php:53
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s : ikke en gyldig e-postadresse."
+
+#: ../../Zotlabs/Module/Invite.php:63
+msgid "Please join us on $Projectname"
+msgstr "Bli med oss på $Projectname"
+
+#: ../../Zotlabs/Module/Invite.php:74
+msgid "Invitation limit exceeded. Please contact your site administrator."
+msgstr "Invitasjonsgrensen er overskredet. Vennligst kontakt administratoren ved ditt nettsted."
+
+#: ../../Zotlabs/Module/Invite.php:79
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s : meldingslevering feilet."
+
+#: ../../Zotlabs/Module/Invite.php:83
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d melding sendt."
+msgstr[1] "%d meldinger sendt."
+
+#: ../../Zotlabs/Module/Invite.php:102
+msgid "You have no more invitations available"
+msgstr "Du har ikke flere invitasjoner tilgjengelig"
+
+#: ../../Zotlabs/Module/Invite.php:133
+msgid "Send invitations"
+msgstr "Send invitasjoner"
+
+#: ../../Zotlabs/Module/Invite.php:134
+msgid "Enter email addresses, one per line:"
+msgstr "Skriv e-postadresser, en per linje:"
+
+#: ../../Zotlabs/Module/Invite.php:135 ../../Zotlabs/Module/Mail.php:249
+msgid "Your message:"
+msgstr "Din melding:"
+
+#: ../../Zotlabs/Module/Invite.php:136
+msgid "Please join my community on $Projectname."
+msgstr "Du er velkommen til å bli med i mitt fellesskap på $Projectname."
+
+#: ../../Zotlabs/Module/Invite.php:138
+msgid "You will need to supply this invitation code:"
+msgstr "Du må oppgi denne invitasjonskoden:"
+
+#: ../../Zotlabs/Module/Invite.php:139
+msgid ""
+"1. Register at any $Projectname location (they are all inter-connected)"
+msgstr "1. Registrer ved enhver $Projectname-lokasjon (de er alle forbundet med hverandre)"
+
+#: ../../Zotlabs/Module/Invite.php:141
+msgid "2. Enter my $Projectname network address into the site searchbar."
+msgstr "2. Skriv inn min $Projectname-adresse i nettstedets søkefelt."
+
+#: ../../Zotlabs/Module/Invite.php:142
+msgid "or visit"
+msgstr "eller besøke"
+
+#: ../../Zotlabs/Module/Invite.php:144
+msgid "3. Click [Connect]"
+msgstr "3. Klikk [Forbindelse]"
+
+#: ../../Zotlabs/Module/Lockview.php:61
msgid "Remote privacy information not available."
msgstr "Ekstern personverninformasjon er ikke tilgjengelig."
-#: ../../mod/lockview.php:58
+#: ../../Zotlabs/Module/Lockview.php:82
msgid "Visible to:"
msgstr "Synlig for:"
-#: ../../mod/locs.php:21 ../../mod/locs.php:50
+#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54
msgid "Location not found."
msgstr "Plassering er ikke funnet."
-#: ../../mod/locs.php:58
+#: ../../Zotlabs/Module/Locs.php:62
msgid "Location lookup failed."
msgstr "Oppslag på plassering mislyktes."
-#: ../../mod/locs.php:62
+#: ../../Zotlabs/Module/Locs.php:66
msgid ""
"Please select another location to become primary before removing the primary"
" location."
msgstr "Vennligst velg en annen plassering som primær før du sletter gjeldende primære plassering."
-#: ../../mod/locs.php:91
+#: ../../Zotlabs/Module/Locs.php:95
msgid "Syncing locations"
msgstr "Synkroniserer plasseringer"
-#: ../../mod/locs.php:101
+#: ../../Zotlabs/Module/Locs.php:105
msgid "No locations found."
msgstr "Ingen plasseringer ble funnet."
-#: ../../mod/locs.php:112
+#: ../../Zotlabs/Module/Locs.php:116
msgid "Manage Channel Locations"
msgstr "HÃ¥ndter kanalplasseringer"
-#: ../../mod/locs.php:113
-msgid "Location (address)"
-msgstr "Plassering (adresse)"
+#: ../../Zotlabs/Module/Locs.php:118 ../../Zotlabs/Module/Profiles.php:470
+#: ../../Zotlabs/Module/Admin.php:1224
+msgid "Address"
+msgstr "Adresse"
-#: ../../mod/locs.php:114
-msgid "Primary Location"
-msgstr "Hovedplassering"
+#: ../../Zotlabs/Module/Locs.php:119
+msgid "Primary"
+msgstr ""
-#: ../../mod/locs.php:115
-msgid "Drop location"
-msgstr "Slett plassering"
+#: ../../Zotlabs/Module/Locs.php:120 ../../Zotlabs/Module/Menu.php:113
+msgid "Drop"
+msgstr "Slett"
-#: ../../mod/locs.php:117
-msgid "Sync now"
-msgstr "Synkroniser nå"
+#: ../../Zotlabs/Module/Locs.php:122
+msgid "Sync Now"
+msgstr ""
-#: ../../mod/locs.php:118
+#: ../../Zotlabs/Module/Locs.php:123
msgid "Please wait several minutes between consecutive operations."
msgstr "Vennligst vent flere minutter mellom hver etterfølgende operasjon."
-#: ../../mod/locs.php:119
+#: ../../Zotlabs/Module/Locs.php:124
msgid ""
"When possible, drop a location by logging into that website/hub and removing"
" your channel."
msgstr "Når mulig, fjern en plassering ved å logge inn på det nettstedet eller den hub-en og fjern din kanal."
-#: ../../mod/locs.php:120
+#: ../../Zotlabs/Module/Locs.php:125
msgid "Use this form to drop the location if the hub is no longer operating."
msgstr "Bruk dette skjemaet for å fjerne plasseringen hvis huben ikke er i drift lenger."
-#: ../../mod/ping.php:260
-msgid "sent you a private message"
-msgstr "sendte deg en privat melding"
-
-#: ../../mod/ping.php:308
-msgid "added your channel"
-msgstr "la til din kanal"
-
-#: ../../mod/ping.php:350
-msgid "posted an event"
-msgstr "la ut en hendelse"
-
-#: ../../mod/magic.php:69
+#: ../../Zotlabs/Module/Magic.php:71
msgid "Hub not found."
msgstr "Hubben ble ikke funnet."
-#: ../../mod/mail.php:34
+#: ../../Zotlabs/Module/Mail.php:38
msgid "Unable to lookup recipient."
msgstr "Ikke i stand til å slå opp mottaker."
-#: ../../mod/mail.php:42
+#: ../../Zotlabs/Module/Mail.php:45
msgid "Unable to communicate with requested channel."
msgstr "Ikke i stand til å kommunisere med forespurt kanal."
-#: ../../mod/mail.php:49
+#: ../../Zotlabs/Module/Mail.php:52
msgid "Cannot verify requested channel."
msgstr "Kan ikke bekrefte forespurt kanal."
-#: ../../mod/mail.php:75
+#: ../../Zotlabs/Module/Mail.php:78
msgid "Selected channel has private message restrictions. Send failed."
msgstr "Valgt kanal har restriksjoner for private meldinger. Sending feilet."
-#: ../../mod/mail.php:140
+#: ../../Zotlabs/Module/Mail.php:143
msgid "Messages"
msgstr "Meldinger"
-#: ../../mod/mail.php:175
+#: ../../Zotlabs/Module/Mail.php:178
msgid "Message recalled."
msgstr "Innlegg tilbakekalt."
-#: ../../mod/mail.php:188
+#: ../../Zotlabs/Module/Mail.php:191
msgid "Conversation removed."
msgstr "Samtale fjernet."
-#: ../../mod/mail.php:231
+#: ../../Zotlabs/Module/Mail.php:206 ../../Zotlabs/Module/Mail.php:315
+msgid "Expires YYYY-MM-DD HH:MM"
+msgstr "Utløper YYYY-MM-DD HH:MM"
+
+#: ../../Zotlabs/Module/Mail.php:234
msgid "Requested channel is not in this network"
msgstr "Forespurt kanal er ikke tilgjengelig i dette nettverket."
-#: ../../mod/mail.php:239
+#: ../../Zotlabs/Module/Mail.php:242
msgid "Send Private Message"
msgstr "Send privat melding"
-#: ../../mod/mail.php:240 ../../mod/mail.php:370
+#: ../../Zotlabs/Module/Mail.php:243 ../../Zotlabs/Module/Mail.php:368
msgid "To:"
msgstr "Til:"
-#: ../../mod/mail.php:243 ../../mod/mail.php:372
+#: ../../Zotlabs/Module/Mail.php:246 ../../Zotlabs/Module/Mail.php:370
msgid "Subject:"
msgstr "Emne:"
-#: ../../mod/mail.php:250
+#: ../../Zotlabs/Module/Mail.php:251 ../../Zotlabs/Module/Mail.php:376
+#: ../../include/conversation.php:1220
+msgid "Attach file"
+msgstr "Legg ved fil"
+
+#: ../../Zotlabs/Module/Mail.php:253
msgid "Send"
msgstr "Send"
-#: ../../mod/mail.php:342
+#: ../../Zotlabs/Module/Mail.php:256 ../../Zotlabs/Module/Mail.php:381
+#: ../../include/conversation.php:1251
+msgid "Set expiration date"
+msgstr "Angi utløpsdato"
+
+#: ../../Zotlabs/Module/Mail.php:340
msgid "Delete message"
msgstr "Slett melding"
-#: ../../mod/mail.php:343
+#: ../../Zotlabs/Module/Mail.php:341
msgid "Delivery report"
msgstr "Leveringsrapport"
-#: ../../mod/mail.php:344
+#: ../../Zotlabs/Module/Mail.php:342
msgid "Recall message"
msgstr "Tilbakekall innlegg"
-#: ../../mod/mail.php:346
+#: ../../Zotlabs/Module/Mail.php:344
msgid "Message has been recalled."
msgstr "Innlegget har blitt tilbakekalt."
-#: ../../mod/mail.php:363
+#: ../../Zotlabs/Module/Mail.php:361
msgid "Delete Conversation"
msgstr "Slett samtale"
-#: ../../mod/mail.php:365
+#: ../../Zotlabs/Module/Mail.php:363
msgid ""
"No secure communications available. You <strong>may</strong> be able to "
"respond from the sender's profile page."
msgstr "Ingen sikret kommunikasjon tilgjengelig. Du kan <strong>muligens</strong> greie å svare via senderens profilside."
-#: ../../mod/mail.php:369
+#: ../../Zotlabs/Module/Mail.php:367
msgid "Send Reply"
msgstr "Send svar"
-#: ../../mod/mail.php:374
+#: ../../Zotlabs/Module/Mail.php:372
#, php-format
msgid "Your message for %s (%s):"
msgstr "Din melding til %s (%s):"
-#: ../../mod/manage.php:130 ../../mod/new_channel.php:117
+#: ../../Zotlabs/Module/Manage.php:136
+#: ../../Zotlabs/Module/New_channel.php:121
#, php-format
msgid "You have created %1$.0f of %2$.0f allowed channels."
msgstr "Du har laget %1$.0f av %2$.0f tillatte kanaler."
-#: ../../mod/manage.php:138
+#: ../../Zotlabs/Module/Manage.php:143
msgid "Create a new channel"
msgstr "Lag en ny kanal"
-#: ../../mod/manage.php:163
+#: ../../Zotlabs/Module/Manage.php:164 ../../Zotlabs/Lib/Apps.php:213
+#: ../../include/nav.php:206
+msgid "Channel Manager"
+msgstr "Kanalstyring"
+
+#: ../../Zotlabs/Module/Manage.php:165
msgid "Current Channel"
msgstr "Gjeldende kanal"
-#: ../../mod/manage.php:165
+#: ../../Zotlabs/Module/Manage.php:167
msgid "Switch to one of your channels by selecting it."
msgstr "Bytt til en av dine kanaler ved å velge den."
-#: ../../mod/manage.php:166
+#: ../../Zotlabs/Module/Manage.php:168
msgid "Default Channel"
msgstr "Standardkanal"
-#: ../../mod/manage.php:167
+#: ../../Zotlabs/Module/Manage.php:169
msgid "Make Default"
msgstr "Gjør til standard"
-#: ../../mod/manage.php:170
+#: ../../Zotlabs/Module/Manage.php:172
#, php-format
msgid "%d new messages"
msgstr "%d nye meldinger"
-#: ../../mod/manage.php:171
+#: ../../Zotlabs/Module/Manage.php:173
#, php-format
msgid "%d new introductions"
msgstr "%d nye introduksjoner"
-#: ../../mod/manage.php:173
-msgid "Delegated Channels"
-msgstr "Delegerte kanaler"
+#: ../../Zotlabs/Module/Manage.php:175
+msgid "Delegated Channel"
+msgstr ""
-#: ../../mod/match.php:22
-msgid "Profile Match"
-msgstr "Profiltreff"
+#: ../../Zotlabs/Module/Lostpass.php:19
+msgid "No valid account found."
+msgstr "Ingen gyldig konto funnet."
-#: ../../mod/match.php:31
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr "Ingen nøkkelord å sammenlikne. Vennligst legg til nøkkelord til din standardprofil."
+#: ../../Zotlabs/Module/Lostpass.php:33
+msgid "Password reset request issued. Check your email."
+msgstr "Forespørsel om å tilbakestille passord er mottatt. Sjekk e-posten din."
-#: ../../mod/match.php:63
-msgid "is interested in:"
-msgstr "er interessert i:"
+#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:107
+#, php-format
+msgid "Site Member (%s)"
+msgstr "Nettstedsmedlem (%s)"
-#: ../../mod/match.php:70
-msgid "No matches"
-msgstr "Ingen treff"
+#: ../../Zotlabs/Module/Lostpass.php:44
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "Forespurt om å tilbakestille passord hos %s"
+
+#: ../../Zotlabs/Module/Lostpass.php:67
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "Forespørsel kunne ikke bekreftes. (Du kan ha sendt den inn tidligere.) Tilbakestilling av passord mislyktes."
+
+#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1711
+msgid "Password Reset"
+msgstr "Tilbakestill passord"
+
+#: ../../Zotlabs/Module/Lostpass.php:91
+msgid "Your password has been reset as requested."
+msgstr "Ditt passord har blitt tilbakestilt som forespurt."
+
+#: ../../Zotlabs/Module/Lostpass.php:92
+msgid "Your new password is"
+msgstr "Ditt nye passord er"
-#: ../../mod/menu.php:45
+#: ../../Zotlabs/Module/Lostpass.php:93
+msgid "Save or copy your new password - and then"
+msgstr "Lagre eller kopier ditt nye passord, og deretter kan du"
+
+#: ../../Zotlabs/Module/Lostpass.php:94
+msgid "click here to login"
+msgstr "klikke her for å logge inn"
+
+#: ../../Zotlabs/Module/Lostpass.php:95
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Ditt passord kan endres på siden <em>Innstillinger</em> etter vellykket innlogging."
+
+#: ../../Zotlabs/Module/Lostpass.php:112
+#, php-format
+msgid "Your password has changed at %s"
+msgstr "Ditt passord er endret hos %s"
+
+#: ../../Zotlabs/Module/Lostpass.php:127
+msgid "Forgot your Password?"
+msgstr "Glemt passord ditt?"
+
+#: ../../Zotlabs/Module/Lostpass.php:128
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Skriv e-postadressen din og send inn for å tilbakestille passordet ditt. Sjekk deretter din e-post for videre instruksjoner."
+
+#: ../../Zotlabs/Module/Lostpass.php:129
+msgid "Email Address"
+msgstr "E-postadresse"
+
+#: ../../Zotlabs/Module/Lostpass.php:130
+msgid "Reset"
+msgstr "Tilbakestill"
+
+#: ../../Zotlabs/Module/Menu.php:49
msgid "Unable to update menu."
msgstr "Ikke i stand til å oppdatere meny."
-#: ../../mod/menu.php:56
+#: ../../Zotlabs/Module/Menu.php:60
msgid "Unable to create menu."
msgstr "Ikke i stand til å lage meny."
-#: ../../mod/menu.php:94 ../../mod/menu.php:106
+#: ../../Zotlabs/Module/Menu.php:98 ../../Zotlabs/Module/Menu.php:110
msgid "Menu Name"
msgstr "Menynavn"
-#: ../../mod/menu.php:94
+#: ../../Zotlabs/Module/Menu.php:98
msgid "Unique name (not visible on webpage) - required"
msgstr "Unikt navn (ikke synlig på websiden) - påkrevet"
-#: ../../mod/menu.php:95 ../../mod/menu.php:107
+#: ../../Zotlabs/Module/Menu.php:99 ../../Zotlabs/Module/Menu.php:111
msgid "Menu Title"
msgstr "Menytittel"
-#: ../../mod/menu.php:95
+#: ../../Zotlabs/Module/Menu.php:99
msgid "Visible on webpage - leave empty for no title"
msgstr "Synlig på websiden - la stå tomt for ingen tittel"
-#: ../../mod/menu.php:96
+#: ../../Zotlabs/Module/Menu.php:100
msgid "Allow Bookmarks"
msgstr "Tillat bokmerker"
-#: ../../mod/menu.php:96 ../../mod/menu.php:153
+#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157
msgid "Menu may be used to store saved bookmarks"
msgstr "Menyen kan brukes til å lagre lagrede bokmerker"
-#: ../../mod/menu.php:97 ../../mod/menu.php:155
+#: ../../Zotlabs/Module/Menu.php:101 ../../Zotlabs/Module/Menu.php:159
msgid "Submit and proceed"
msgstr "Send inn og fortsett"
-#: ../../mod/menu.php:109
-msgid "Drop"
-msgstr "Slett"
+#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2266
+msgid "Menus"
+msgstr "Menyer"
-#: ../../mod/menu.php:113
+#: ../../Zotlabs/Module/Menu.php:117
msgid "Bookmarks allowed"
msgstr "Bokmerker tillatt"
-#: ../../mod/menu.php:115
+#: ../../Zotlabs/Module/Menu.php:119
msgid "Delete this menu"
msgstr "Slett denne menyen"
-#: ../../mod/menu.php:116 ../../mod/menu.php:150
+#: ../../Zotlabs/Module/Menu.php:120 ../../Zotlabs/Module/Menu.php:154
msgid "Edit menu contents"
msgstr "Endre menyinnholdet"
-#: ../../mod/menu.php:117
+#: ../../Zotlabs/Module/Menu.php:121
msgid "Edit this menu"
msgstr "Endre denne menyen"
-#: ../../mod/menu.php:132
+#: ../../Zotlabs/Module/Menu.php:136
msgid "Menu could not be deleted."
msgstr "Menyen kunne ikke bli slettet."
-#: ../../mod/menu.php:140 ../../mod/mitem.php:24
+#: ../../Zotlabs/Module/Menu.php:144 ../../Zotlabs/Module/Mitem.php:28
msgid "Menu not found."
msgstr "Menyen ble ikke funnet."
-#: ../../mod/menu.php:145
+#: ../../Zotlabs/Module/Menu.php:149
msgid "Edit Menu"
msgstr "Endre meny"
-#: ../../mod/menu.php:149
+#: ../../Zotlabs/Module/Menu.php:153
msgid "Add or remove entries to this menu"
msgstr "Legg til eller fjern punkter i denne menyen"
-#: ../../mod/menu.php:151
+#: ../../Zotlabs/Module/Menu.php:155
msgid "Menu name"
msgstr "Menynavn"
-#: ../../mod/menu.php:151
+#: ../../Zotlabs/Module/Menu.php:155
msgid "Must be unique, only seen by you"
msgstr "Må være unik, ses bare av deg"
-#: ../../mod/menu.php:152
+#: ../../Zotlabs/Module/Menu.php:156
msgid "Menu title"
msgstr "Menytittel"
-#: ../../mod/menu.php:152
+#: ../../Zotlabs/Module/Menu.php:156
msgid "Menu title as seen by others"
msgstr "Menytittelen andre ser"
-#: ../../mod/menu.php:153
+#: ../../Zotlabs/Module/Menu.php:157
msgid "Allow bookmarks"
msgstr "Tillat bokmerker"
-#: ../../mod/menu.php:162 ../../mod/mitem.php:116 ../../mod/xchan.php:37
+#: ../../Zotlabs/Module/Menu.php:166 ../../Zotlabs/Module/Mitem.php:120
+#: ../../Zotlabs/Module/Xchan.php:41
msgid "Not found."
msgstr "Ikke funnet."
-#: ../../mod/mitem.php:48
+#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:260
+#, php-format
+msgctxt "mood"
+msgid "%1$s is %2$s"
+msgstr "%1$s er %2$s"
+
+#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:225
+msgid "Mood"
+msgstr "Stemning"
+
+#: ../../Zotlabs/Module/Mood.php:136
+msgid "Set your current mood and tell your friends"
+msgstr "Angi ditt nåværende humør og fortell dine venner"
+
+#: ../../Zotlabs/Module/Match.php:26
+msgid "Profile Match"
+msgstr "Profiltreff"
+
+#: ../../Zotlabs/Module/Match.php:35
+msgid "No keywords to match. Please add keywords to your default profile."
+msgstr "Ingen nøkkelord å sammenlikne. Vennligst legg til nøkkelord til din standardprofil."
+
+#: ../../Zotlabs/Module/Match.php:67
+msgid "is interested in:"
+msgstr "er interessert i:"
+
+#: ../../Zotlabs/Module/Match.php:74
+msgid "No matches"
+msgstr "Ingen treff"
+
+#: ../../Zotlabs/Module/Network.php:96
+msgid "No such group"
+msgstr "Gruppen finnes ikke"
+
+#: ../../Zotlabs/Module/Network.php:136
+msgid "No such channel"
+msgstr "Ingen slik kanal"
+
+#: ../../Zotlabs/Module/Network.php:141
+msgid "forum"
+msgstr "forum"
+
+#: ../../Zotlabs/Module/Network.php:153
+msgid "Search Results For:"
+msgstr "Søkeresultat for:"
+
+#: ../../Zotlabs/Module/Network.php:217
+msgid "Privacy group is empty"
+msgstr "Personverngruppen er tom"
+
+#: ../../Zotlabs/Module/Network.php:226
+msgid "Privacy group: "
+msgstr "Personverngruppe:"
+
+#: ../../Zotlabs/Module/Network.php:252
+msgid "Invalid connection."
+msgstr "Ugyldig forbindelse."
+
+#: ../../Zotlabs/Module/Notify.php:57
+#: ../../Zotlabs/Module/Notifications.php:98
+msgid "No more system notifications."
+msgstr "Ingen flere systemvarsler."
+
+#: ../../Zotlabs/Module/Notify.php:61
+#: ../../Zotlabs/Module/Notifications.php:102
+msgid "System Notifications"
+msgstr "Systemvarsler"
+
+#: ../../Zotlabs/Module/Mitem.php:52
msgid "Unable to create element."
msgstr "Klarer ikke å lage element."
-#: ../../mod/mitem.php:72
+#: ../../Zotlabs/Module/Mitem.php:76
msgid "Unable to update menu element."
msgstr "Ikke i stand til å oppdatere menyelement."
-#: ../../mod/mitem.php:88
+#: ../../Zotlabs/Module/Mitem.php:92
msgid "Unable to add menu element."
msgstr "Ikke i stand til å legge til menyelement."
-#: ../../mod/mitem.php:149 ../../mod/mitem.php:222
+#: ../../Zotlabs/Module/Mitem.php:153 ../../Zotlabs/Module/Mitem.php:226
msgid "Menu Item Permissions"
msgstr "Menyelement Tillatelser"
-#: ../../mod/mitem.php:150 ../../mod/mitem.php:223 ../../mod/settings.php:1075
+#: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:227
+#: ../../Zotlabs/Module/Settings.php:1068
msgid "(click to open/close)"
msgstr "(klikk for å åpne/lukke)"
-#: ../../mod/mitem.php:152 ../../mod/mitem.php:168
+#: ../../Zotlabs/Module/Mitem.php:156 ../../Zotlabs/Module/Mitem.php:172
msgid "Link Name"
msgstr "Lenkenavn"
-#: ../../mod/mitem.php:153 ../../mod/mitem.php:227
+#: ../../Zotlabs/Module/Mitem.php:157 ../../Zotlabs/Module/Mitem.php:231
msgid "Link or Submenu Target"
msgstr "Lenke- eller undermeny-mål"
-#: ../../mod/mitem.php:153
+#: ../../Zotlabs/Module/Mitem.php:157
msgid "Enter URL of the link or select a menu name to create a submenu"
msgstr "Skriv URL-en til lenken eller velg et menynavn for å lage en undermeny"
-#: ../../mod/mitem.php:154 ../../mod/mitem.php:228
+#: ../../Zotlabs/Module/Mitem.php:158 ../../Zotlabs/Module/Mitem.php:232
msgid "Use magic-auth if available"
msgstr "Bruk magic-autent hvis mulig"
-#: ../../mod/mitem.php:155 ../../mod/mitem.php:229
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:233
msgid "Open link in new window"
msgstr "Ã…pne lenke i nytt vindu"
-#: ../../mod/mitem.php:156 ../../mod/mitem.php:230
+#: ../../Zotlabs/Module/Mitem.php:160 ../../Zotlabs/Module/Mitem.php:234
msgid "Order in list"
msgstr "Ordne i liste"
-#: ../../mod/mitem.php:156 ../../mod/mitem.php:230
+#: ../../Zotlabs/Module/Mitem.php:160 ../../Zotlabs/Module/Mitem.php:234
msgid "Higher numbers will sink to bottom of listing"
msgstr "Høyere tall vil synke mot bunnen av listen"
-#: ../../mod/mitem.php:157
+#: ../../Zotlabs/Module/Mitem.php:161
msgid "Submit and finish"
msgstr "Send inn og avslutt"
-#: ../../mod/mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:162
msgid "Submit and continue"
msgstr "Send inn og fortsett"
-#: ../../mod/mitem.php:166
+#: ../../Zotlabs/Module/Mitem.php:170
msgid "Menu:"
msgstr "Meny:"
-#: ../../mod/mitem.php:169
+#: ../../Zotlabs/Module/Mitem.php:173
msgid "Link Target"
msgstr "Lenkemål"
-#: ../../mod/mitem.php:172
+#: ../../Zotlabs/Module/Mitem.php:176
msgid "Edit menu"
msgstr "Endre meny"
-#: ../../mod/mitem.php:175
+#: ../../Zotlabs/Module/Mitem.php:179
msgid "Edit element"
msgstr "Endre element"
-#: ../../mod/mitem.php:176
+#: ../../Zotlabs/Module/Mitem.php:180
msgid "Drop element"
msgstr "Slett element"
-#: ../../mod/mitem.php:177
+#: ../../Zotlabs/Module/Mitem.php:181
msgid "New element"
msgstr "Nytt element"
-#: ../../mod/mitem.php:178
+#: ../../Zotlabs/Module/Mitem.php:182
msgid "Edit this menu container"
msgstr "Endre denne menybeholderen"
-#: ../../mod/mitem.php:179
+#: ../../Zotlabs/Module/Mitem.php:183
msgid "Add menu element"
msgstr "Legg til menyelement"
-#: ../../mod/mitem.php:180
+#: ../../Zotlabs/Module/Mitem.php:184
msgid "Delete this menu item"
msgstr "Slett dette menyelementet"
-#: ../../mod/mitem.php:181
+#: ../../Zotlabs/Module/Mitem.php:185
msgid "Edit this menu item"
msgstr "Endre dette menyelementet"
-#: ../../mod/mitem.php:198
+#: ../../Zotlabs/Module/Mitem.php:202
msgid "Menu item not found."
msgstr "Menyelement ble ikke funnet."
-#: ../../mod/mitem.php:211
+#: ../../Zotlabs/Module/Mitem.php:215
msgid "Menu item deleted."
msgstr "Menyelement slettet."
-#: ../../mod/mitem.php:213
+#: ../../Zotlabs/Module/Mitem.php:217
msgid "Menu item could not be deleted."
msgstr "Menyelement kunne ikke bli slettet."
-#: ../../mod/mitem.php:220
+#: ../../Zotlabs/Module/Mitem.php:224
msgid "Edit Menu Element"
msgstr "Endre menyelement"
-#: ../../mod/mitem.php:226
+#: ../../Zotlabs/Module/Mitem.php:230
msgid "Link text"
msgstr "Lenketekst"
-#: ../../mod/mood.php:132
-msgid "Set your current mood and tell your friends"
-msgstr "Angi ditt nåværende humør og fortell dine venner"
-
-#: ../../mod/network.php:91
-msgid "No such group"
-msgstr "Gruppen finnes ikke"
-
-#: ../../mod/network.php:131
-msgid "No such channel"
-msgstr "Ingen slik kanal"
-
-#: ../../mod/network.php:136
-msgid "forum"
-msgstr "forum"
-
-#: ../../mod/network.php:148
-msgid "Search Results For:"
-msgstr "Søkeresultat for:"
-
-#: ../../mod/network.php:207
-msgid "Privacy group is empty"
-msgstr "Personverngruppen er tom"
-
-#: ../../mod/network.php:216
-msgid "Privacy group: "
-msgstr "Personverngruppe:"
-
-#: ../../mod/network.php:242
-msgid "Invalid connection."
-msgstr "Ugyldig forbindelse."
-
-#: ../../mod/new_channel.php:124 ../../mod/register.php:227
+#: ../../Zotlabs/Module/New_channel.php:128
+#: ../../Zotlabs/Module/Register.php:231
msgid "Name or caption"
msgstr "Navn eller overskrift"
-#: ../../mod/new_channel.php:124 ../../mod/register.php:227
+#: ../../Zotlabs/Module/New_channel.php:128
+#: ../../Zotlabs/Module/Register.php:231
msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""
msgstr "Eksempel: \"Ola Nordmann\", \"Lisa og hestene hennes\", \"Fotball\", \"Sykkelgruppa\""
-#: ../../mod/new_channel.php:126 ../../mod/register.php:229
+#: ../../Zotlabs/Module/New_channel.php:130
+#: ../../Zotlabs/Module/Register.php:233
msgid "Choose a short nickname"
msgstr "Velg et kort kallenavn"
-#: ../../mod/new_channel.php:126 ../../mod/register.php:229
+#: ../../Zotlabs/Module/New_channel.php:130
+#: ../../Zotlabs/Module/Register.php:233
#, php-format
msgid ""
"Your nickname will be used to create an easy to remember channel address "
"e.g. nickname%s"
msgstr "Ditt kallenavn brukes til å lage en kanaladresse som er enkel å huske, for eksempel kallenavn%s"
-#: ../../mod/new_channel.php:128 ../../mod/register.php:231
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:235
msgid "Channel role and privacy"
msgstr "Kanalrolle og personvern"
-#: ../../mod/new_channel.php:128 ../../mod/register.php:231
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:235
msgid "Select a channel role with your privacy requirements."
msgstr "Velg en kanalrolle for ditt personvernbehov."
-#: ../../mod/new_channel.php:128 ../../mod/register.php:231
+#: ../../Zotlabs/Module/New_channel.php:132
+#: ../../Zotlabs/Module/Register.php:235
msgid "Read more about roles"
msgstr "Les mer om roller"
-#: ../../mod/new_channel.php:131
+#: ../../Zotlabs/Module/New_channel.php:135
msgid "Create Channel"
msgstr "Lag kanal"
-#: ../../mod/new_channel.php:132
+#: ../../Zotlabs/Module/New_channel.php:136
msgid ""
"A channel is your identity on this network. It can represent a person, a "
"blog, or a forum to name a few. Channels can make connections with other "
"channels to share information with highly detailed permissions."
msgstr "En kanal er din identitet i dette nettverket. Den kan representere en person, en blogg eller et forum for å nevne noe. Kanaler kan ha forbindelser til andre kanaler for å dele informasjon, og med svært detaljerte tillatelser."
-#: ../../mod/new_channel.php:133
+#: ../../Zotlabs/Module/New_channel.php:137
msgid ""
"or <a href=\"import\">import an existing channel</a> from another location."
msgstr "eller <a href=\"import\">importer en eksisterende kanal</a> fra et annet sted."
-#: ../../mod/notifications.php:26
+#: ../../Zotlabs/Module/Notifications.php:30
msgid "Invalid request identifier."
msgstr "Ugyldig forespørselsidentifikator."
-#: ../../mod/notifications.php:35
+#: ../../Zotlabs/Module/Notifications.php:39
msgid "Discard"
msgstr "Forkast"
-#: ../../mod/notifications.php:94 ../../mod/notify.php:53
-msgid "No more system notifications."
-msgstr "Ingen flere systemvarsler."
-
-#: ../../mod/notifications.php:98 ../../mod/notify.php:57
-msgid "System Notifications"
-msgstr "Systemvarsler"
-
-#: ../../mod/oexchange.php:23
-msgid "Unable to find your hub."
-msgstr "Ikke i stand til å finne hubben din."
-
-#: ../../mod/oexchange.php:37
-msgid "Post successful."
-msgstr "Innlegg vellykket."
-
-#: ../../mod/openid.php:26
-msgid "OpenID protocol error. No ID returned."
-msgstr "OpenID protokollfeil. Ingen ID ble returnert."
-
-#: ../../mod/page.php:126
-msgid ""
-"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
-"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
-" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
-"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
-"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
-"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-
-#: ../../mod/pconfig.php:27 ../../mod/pconfig.php:60
-msgid "This setting requires special processing and editing has been blocked."
-msgstr "Denne innstillingen krever spesiell behandling og redigering har blitt blokkert."
-
-#: ../../mod/pconfig.php:49
-msgid "Configuration Editor"
-msgstr "Konfigurasjonsbehandler"
-
-#: ../../mod/pconfig.php:50
-msgid ""
-"Warning: Changing some settings could render your channel inoperable. Please"
-" leave this page unless you are comfortable with and knowledgeable about how"
-" to correctly use this feature."
-msgstr "Advarsel: kanalen din kan slutte å virke ved endring av enkelte innstillinger. Vennligst forlat denne siden med mindre du er komfortabel med dette og vet hvordan du bruker denne funksjonen riktig."
-
-#: ../../mod/pdledit.php:14
-msgid "Layout updated."
-msgstr "Layout er oppdatert."
-
-#: ../../mod/pdledit.php:30 ../../mod/pdledit.php:57
-msgid "Edit System Page Description"
-msgstr "Endre beskrivelsen av systemsiden"
-
-#: ../../mod/pdledit.php:52
-msgid "Layout not found."
-msgstr "Layouten ble ikke funnet."
-
-#: ../../mod/pdledit.php:58
-msgid "Module Name:"
-msgstr "Modulnavn:"
-
-#: ../../mod/pdledit.php:59
-msgid "Layout Help"
-msgstr "Layout-hjelp"
+#: ../../Zotlabs/Module/Notifications.php:103 ../../include/nav.php:191
+msgid "Mark all system notifications seen"
+msgstr "Merk alle systemvarsler som sett"
-#: ../../mod/photos.php:79
+#: ../../Zotlabs/Module/Photos.php:84
msgid "Page owner information could not be retrieved."
msgstr "Informasjon om sideeier kunne ikke hentes."
-#: ../../mod/photos.php:100
+#: ../../Zotlabs/Module/Photos.php:99 ../../Zotlabs/Module/Photos.php:743
+#: ../../Zotlabs/Module/Profile_photo.php:114
+#: ../../Zotlabs/Module/Profile_photo.php:206
+#: ../../Zotlabs/Module/Profile_photo.php:294
+#: ../../include/photo/photo_driver.php:718
+msgid "Profile Photos"
+msgstr "Profilbilder"
+
+#: ../../Zotlabs/Module/Photos.php:105 ../../Zotlabs/Module/Photos.php:149
msgid "Album not found."
msgstr "Albumet ble ikke funnet."
-#: ../../mod/photos.php:127
+#: ../../Zotlabs/Module/Photos.php:132
msgid "Delete Album"
msgstr "Slett album"
-#: ../../mod/photos.php:171 ../../mod/photos.php:1020
+#: ../../Zotlabs/Module/Photos.php:153
+msgid ""
+"Multiple storage folders exist with this album name, but within different "
+"directories. Please remove the desired folder or folders using the Files "
+"manager"
+msgstr ""
+
+#: ../../Zotlabs/Module/Photos.php:210 ../../Zotlabs/Module/Photos.php:1053
msgid "Delete Photo"
msgstr "Slett bilde"
-#: ../../mod/photos.php:501
+#: ../../Zotlabs/Module/Photos.php:533
msgid "No photos selected"
msgstr "Ingen bilder valgt"
-#: ../../mod/photos.php:550
+#: ../../Zotlabs/Module/Photos.php:582
msgid "Access to this item is restricted."
msgstr "Tilgang til dette elementet er begrenset."
-#: ../../mod/photos.php:589
+#: ../../Zotlabs/Module/Photos.php:621
#, php-format
msgid "%1$.2f MB of %2$.2f MB photo storage used."
msgstr "%1$.2f MB av %2$.2f MB lagringsplass til bilder er brukt."
-#: ../../mod/photos.php:592
+#: ../../Zotlabs/Module/Photos.php:624
#, php-format
msgid "%1$.2f MB photo storage used."
msgstr "%1$.2f MB lagringsplass til bilder er brukt."
-#: ../../mod/photos.php:628
+#: ../../Zotlabs/Module/Photos.php:660
msgid "Upload Photos"
msgstr "Last opp bilder"
-#: ../../mod/photos.php:632
+#: ../../Zotlabs/Module/Photos.php:664
msgid "Enter an album name"
msgstr "Skriv et albumnavn"
-#: ../../mod/photos.php:633
+#: ../../Zotlabs/Module/Photos.php:665
msgid "or select an existing album (doubleclick)"
msgstr "eller velg et eksisterende album (dobbeltklikk)"
-#: ../../mod/photos.php:634
+#: ../../Zotlabs/Module/Photos.php:666
msgid "Create a status post for this upload"
msgstr "Lag et statusinnlegg for denne opplastingen"
-#: ../../mod/photos.php:635
+#: ../../Zotlabs/Module/Photos.php:667
msgid "Caption (optional):"
msgstr "Bildetekst (valgfritt):"
-#: ../../mod/photos.php:636
+#: ../../Zotlabs/Module/Photos.php:668
msgid "Description (optional):"
msgstr "Beskrivelse (valgfritt):"
-#: ../../mod/photos.php:663
+#: ../../Zotlabs/Module/Photos.php:695
msgid "Album name could not be decoded"
msgstr "Albumnavnet kunne ikke dekodes"
-#: ../../mod/photos.php:711 ../../mod/photos.php:1250
-#: ../../mod/photos.php:1267
+#: ../../Zotlabs/Module/Photos.php:743
msgid "Contact Photos"
msgstr "Kontaktbilder"
-#: ../../mod/photos.php:734
+#: ../../Zotlabs/Module/Photos.php:766
msgid "Show Newest First"
msgstr "Vis nyeste først"
-#: ../../mod/photos.php:736
+#: ../../Zotlabs/Module/Photos.php:768
msgid "Show Oldest First"
msgstr "Vis eldste først"
-#: ../../mod/photos.php:838
+#: ../../Zotlabs/Module/Photos.php:792 ../../Zotlabs/Module/Photos.php:1331
+#: ../../include/widgets.php:1499
+msgid "View Photo"
+msgstr "Vis foto"
+
+#: ../../Zotlabs/Module/Photos.php:823 ../../include/widgets.php:1516
+msgid "Edit Album"
+msgstr "Endre album"
+
+#: ../../Zotlabs/Module/Photos.php:870
msgid "Permission denied. Access to this item may be restricted."
msgstr "Tillatelse avvist. Tilgang til dette elementet kan være begrenset."
-#: ../../mod/photos.php:840
+#: ../../Zotlabs/Module/Photos.php:872
msgid "Photo not available"
msgstr "Bilde er utilgjengelig"
-#: ../../mod/photos.php:898
+#: ../../Zotlabs/Module/Photos.php:930
msgid "Use as profile photo"
msgstr "Bruk som profilbilde"
-#: ../../mod/photos.php:905
+#: ../../Zotlabs/Module/Photos.php:931
+msgid "Use as cover photo"
+msgstr ""
+
+#: ../../Zotlabs/Module/Photos.php:938
msgid "Private Photo"
msgstr "Privat bilde"
-#: ../../mod/photos.php:920
+#: ../../Zotlabs/Module/Photos.php:953
msgid "View Full Size"
msgstr "Vis i full størrelse"
-#: ../../mod/photos.php:965 ../../mod/tagrm.php:133
+#: ../../Zotlabs/Module/Photos.php:998 ../../Zotlabs/Module/Admin.php:1437
+#: ../../Zotlabs/Module/Tagrm.php:137
msgid "Remove"
msgstr "Fjern"
-#: ../../mod/photos.php:999
+#: ../../Zotlabs/Module/Photos.php:1032
msgid "Edit photo"
msgstr "Endre bilde"
-#: ../../mod/photos.php:1001
+#: ../../Zotlabs/Module/Photos.php:1034
msgid "Rotate CW (right)"
msgstr "Roter med klokka (mot høyre)"
-#: ../../mod/photos.php:1002
+#: ../../Zotlabs/Module/Photos.php:1035
msgid "Rotate CCW (left)"
msgstr "Roter mot klokka (venstre)"
-#: ../../mod/photos.php:1005
+#: ../../Zotlabs/Module/Photos.php:1038
msgid "Enter a new album name"
msgstr "Skriv et nytt albumnavn"
-#: ../../mod/photos.php:1006
+#: ../../Zotlabs/Module/Photos.php:1039
msgid "or select an existing one (doubleclick)"
msgstr "eller velg et eksisterende album (dobbeltklikk)"
-#: ../../mod/photos.php:1009
+#: ../../Zotlabs/Module/Photos.php:1042
msgid "Caption"
msgstr "Overskrift"
-#: ../../mod/photos.php:1011
+#: ../../Zotlabs/Module/Photos.php:1044
msgid "Add a Tag"
msgstr "Legg til merkelapp"
-#: ../../mod/photos.php:1015
+#: ../../Zotlabs/Module/Photos.php:1048
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
msgstr "Eksempel: @bob, @Barbara_Jensen, @jim@example.com"
-#: ../../mod/photos.php:1018
+#: ../../Zotlabs/Module/Photos.php:1051
msgid "Flag as adult in album view"
msgstr "Flag som voksent i albumvisning"
-#: ../../mod/photos.php:1210
+#: ../../Zotlabs/Module/Photos.php:1070 ../../Zotlabs/Lib/ThreadItem.php:261
+msgid "I like this (toggle)"
+msgstr "Jeg liker dette (skru av og på)"
+
+#: ../../Zotlabs/Module/Photos.php:1071 ../../Zotlabs/Lib/ThreadItem.php:262
+msgid "I don't like this (toggle)"
+msgstr "Jeg liker ikke dette (skru av og på)"
+
+#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:397
+#: ../../include/conversation.php:740
+msgid "Please wait"
+msgstr "Vennligst vent"
+
+#: ../../Zotlabs/Module/Photos.php:1089 ../../Zotlabs/Module/Photos.php:1207
+#: ../../Zotlabs/Lib/ThreadItem.php:707
+msgid "This is you"
+msgstr "Dette er deg"
+
+#: ../../Zotlabs/Module/Photos.php:1091 ../../Zotlabs/Module/Photos.php:1209
+#: ../../Zotlabs/Lib/ThreadItem.php:709 ../../include/js_strings.php:6
+msgid "Comment"
+msgstr "Kommentar"
+
+#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574
+msgctxt "title"
+msgid "Likes"
+msgstr "Liker"
+
+#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574
+msgctxt "title"
+msgid "Dislikes"
+msgstr "Liker ikke"
+
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
+msgctxt "title"
+msgid "Agree"
+msgstr "Enig"
+
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
+msgctxt "title"
+msgid "Disagree"
+msgstr "Uenig"
+
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
+msgctxt "title"
+msgid "Abstain"
+msgstr "Avstår"
+
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
+msgctxt "title"
+msgid "Attending"
+msgstr "Deltar"
+
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
+msgctxt "title"
+msgid "Not attending"
+msgstr "Deltar ikke"
+
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
+msgctxt "title"
+msgid "Might attend"
+msgstr "Deltar kanskje"
+
+#: ../../Zotlabs/Module/Photos.php:1126 ../../Zotlabs/Module/Photos.php:1138
+#: ../../Zotlabs/Lib/ThreadItem.php:181 ../../Zotlabs/Lib/ThreadItem.php:193
+#: ../../include/conversation.php:1717
+msgid "View all"
+msgstr "Vis alle"
+
+#: ../../Zotlabs/Module/Photos.php:1130 ../../Zotlabs/Lib/ThreadItem.php:185
+#: ../../include/taxonomy.php:403 ../../include/conversation.php:1741
+#: ../../include/channel.php:1158
+msgctxt "noun"
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] "Liker"
+msgstr[1] "Liker"
+
+#: ../../Zotlabs/Module/Photos.php:1135 ../../Zotlabs/Lib/ThreadItem.php:190
+#: ../../include/conversation.php:1744
+msgctxt "noun"
+msgid "Dislike"
+msgid_plural "Dislikes"
+msgstr[0] "Liker ikke"
+msgstr[1] "Liker ikke"
+
+#: ../../Zotlabs/Module/Photos.php:1235
+msgid "Photo Tools"
+msgstr ""
+
+#: ../../Zotlabs/Module/Photos.php:1244
msgid "In This Photo:"
msgstr "I dette bildet:"
-#: ../../mod/photos.php:1215
+#: ../../Zotlabs/Module/Photos.php:1249
msgid "Map"
msgstr "Kart"
-#: ../../mod/photos.php:1306
+#: ../../Zotlabs/Module/Photos.php:1257 ../../Zotlabs/Lib/ThreadItem.php:386
+msgctxt "noun"
+msgid "Likes"
+msgstr "Liker"
+
+#: ../../Zotlabs/Module/Photos.php:1258 ../../Zotlabs/Lib/ThreadItem.php:387
+msgctxt "noun"
+msgid "Dislikes"
+msgstr "Liker ikke"
+
+#: ../../Zotlabs/Module/Photos.php:1263 ../../Zotlabs/Lib/ThreadItem.php:392
+#: ../../include/acl_selectors.php:285
+msgid "Close"
+msgstr "Lukk"
+
+#: ../../Zotlabs/Module/Photos.php:1337
msgid "View Album"
msgstr "Vis album"
-#: ../../mod/photos.php:1317 ../../mod/photos.php:1330
-#: ../../mod/photos.php:1331
+#: ../../Zotlabs/Module/Photos.php:1348 ../../Zotlabs/Module/Photos.php:1361
+#: ../../Zotlabs/Module/Photos.php:1362
msgid "Recent Photos"
msgstr "Nye bilder"
-#: ../../mod/admin.php:54
+#: ../../Zotlabs/Module/Ping.php:265
+msgid "sent you a private message"
+msgstr "sendte deg en privat melding"
+
+#: ../../Zotlabs/Module/Ping.php:313
+msgid "added your channel"
+msgstr "la til din kanal"
+
+#: ../../Zotlabs/Module/Ping.php:323
+msgid "g A l F d"
+msgstr "g A l F d"
+
+#: ../../Zotlabs/Module/Ping.php:346
+msgid "[today]"
+msgstr "[idag]"
+
+#: ../../Zotlabs/Module/Ping.php:355
+msgid "posted an event"
+msgstr "la ut en hendelse"
+
+#: ../../Zotlabs/Module/Oexchange.php:27
+msgid "Unable to find your hub."
+msgstr "Ikke i stand til å finne hubben din."
+
+#: ../../Zotlabs/Module/Oexchange.php:41
+msgid "Post successful."
+msgstr "Innlegg vellykket."
+
+#: ../../Zotlabs/Module/Openid.php:30
+msgid "OpenID protocol error. No ID returned."
+msgstr "OpenID protokollfeil. Ingen ID ble returnert."
+
+#: ../../Zotlabs/Module/Openid.php:193 ../../include/auth.php:226
+msgid "Login failed."
+msgstr "Innlogging mislyktes."
+
+#: ../../Zotlabs/Module/Page.php:133
+msgid ""
+"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
+"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
+" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
+"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
+"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
+"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+
+#: ../../Zotlabs/Module/Pconfig.php:26 ../../Zotlabs/Module/Pconfig.php:59
+msgid "This setting requires special processing and editing has been blocked."
+msgstr "Denne innstillingen krever spesiell behandling og redigering har blitt blokkert."
+
+#: ../../Zotlabs/Module/Pconfig.php:48
+msgid "Configuration Editor"
+msgstr "Konfigurasjonsbehandler"
+
+#: ../../Zotlabs/Module/Pconfig.php:49
+msgid ""
+"Warning: Changing some settings could render your channel inoperable. Please"
+" leave this page unless you are comfortable with and knowledgeable about how"
+" to correctly use this feature."
+msgstr "Advarsel: kanalen din kan slutte å virke ved endring av enkelte innstillinger. Vennligst forlat denne siden med mindre du er komfortabel med dette og vet hvordan du bruker denne funksjonen riktig."
+
+#: ../../Zotlabs/Module/Pdledit.php:18
+msgid "Layout updated."
+msgstr "Layout er oppdatert."
+
+#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Pdledit.php:61
+msgid "Edit System Page Description"
+msgstr "Endre beskrivelsen av systemsiden"
+
+#: ../../Zotlabs/Module/Pdledit.php:56
+msgid "Layout not found."
+msgstr "Layouten ble ikke funnet."
+
+#: ../../Zotlabs/Module/Pdledit.php:62
+msgid "Module Name:"
+msgstr "Modulnavn:"
+
+#: ../../Zotlabs/Module/Pdledit.php:63
+msgid "Layout Help"
+msgstr "Layout-hjelp"
+
+#: ../../Zotlabs/Module/Poke.php:168 ../../Zotlabs/Lib/Apps.php:226
+#: ../../include/conversation.php:960
+msgid "Poke"
+msgstr "Prikk"
+
+#: ../../Zotlabs/Module/Poke.php:169
+msgid "Poke somebody"
+msgstr "Dult noen"
+
+#: ../../Zotlabs/Module/Poke.php:172
+msgid "Poke/Prod"
+msgstr "Prikke/oppildne"
+
+#: ../../Zotlabs/Module/Poke.php:173
+msgid "Poke, prod or do other things to somebody"
+msgstr "Dult, prikk eller gjør andre ting med noen"
+
+#: ../../Zotlabs/Module/Poke.php:180
+msgid "Recipient"
+msgstr "Mottaker"
+
+#: ../../Zotlabs/Module/Poke.php:181
+msgid "Choose what you wish to do to recipient"
+msgstr "Velg hva du ønsker å gjøre med mottakeren"
+
+#: ../../Zotlabs/Module/Poke.php:184 ../../Zotlabs/Module/Poke.php:185
+msgid "Make this post private"
+msgstr "Gjør dette innlegget privat"
+
+#: ../../Zotlabs/Module/Probe.php:30 ../../Zotlabs/Module/Probe.php:34
+#, php-format
+msgid "Fetching URL returns error: %1$s"
+msgstr "Henting av URL gir følgende feil: %1$s"
+
+#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:189
+#: ../../Zotlabs/Module/Profiles.php:246 ../../Zotlabs/Module/Profiles.php:625
+msgid "Profile not found."
+msgstr "Profilen ble ikke funnet."
+
+#: ../../Zotlabs/Module/Profiles.php:44
+msgid "Profile deleted."
+msgstr "Profilen er slettet."
+
+#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:104
+msgid "Profile-"
+msgstr "Profil-"
+
+#: ../../Zotlabs/Module/Profiles.php:89 ../../Zotlabs/Module/Profiles.php:132
+msgid "New profile created."
+msgstr "Ny profil opprettet."
+
+#: ../../Zotlabs/Module/Profiles.php:110
+msgid "Profile unavailable to clone."
+msgstr "Profilen er utilgjengelig for klonen."
+
+#: ../../Zotlabs/Module/Profiles.php:151
+msgid "Profile unavailable to export."
+msgstr "Profilen er utilgjengelig for eksport."
+
+#: ../../Zotlabs/Module/Profiles.php:256
+msgid "Profile Name is required."
+msgstr "Profilnavn er påkrevd."
+
+#: ../../Zotlabs/Module/Profiles.php:427
+msgid "Marital Status"
+msgstr "Sivilstand"
+
+#: ../../Zotlabs/Module/Profiles.php:431
+msgid "Romantic Partner"
+msgstr "Romantisk partner"
+
+#: ../../Zotlabs/Module/Profiles.php:435 ../../Zotlabs/Module/Profiles.php:736
+msgid "Likes"
+msgstr "Liker"
+
+#: ../../Zotlabs/Module/Profiles.php:439 ../../Zotlabs/Module/Profiles.php:737
+msgid "Dislikes"
+msgstr "Liker ikke"
+
+#: ../../Zotlabs/Module/Profiles.php:443 ../../Zotlabs/Module/Profiles.php:744
+msgid "Work/Employment"
+msgstr "Arbeid/sysselsetting"
+
+#: ../../Zotlabs/Module/Profiles.php:446
+msgid "Religion"
+msgstr "Religion"
+
+#: ../../Zotlabs/Module/Profiles.php:450
+msgid "Political Views"
+msgstr "Politiske synspunkter"
+
+#: ../../Zotlabs/Module/Profiles.php:458
+msgid "Sexual Preference"
+msgstr "Seksuelle preferanser"
+
+#: ../../Zotlabs/Module/Profiles.php:462
+msgid "Homepage"
+msgstr "Hjemmeside"
+
+#: ../../Zotlabs/Module/Profiles.php:466
+msgid "Interests"
+msgstr "Interesser"
+
+#: ../../Zotlabs/Module/Profiles.php:560
+msgid "Profile updated."
+msgstr "Profilen er oppdatert."
+
+#: ../../Zotlabs/Module/Profiles.php:644
+msgid "Hide your connections list from viewers of this profile"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:686
+msgid "Edit Profile Details"
+msgstr "Endre profildetaljer"
+
+#: ../../Zotlabs/Module/Profiles.php:688
+msgid "View this profile"
+msgstr "Vis denne profilen"
+
+#: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:771
+#: ../../include/channel.php:959
+msgid "Edit visibility"
+msgstr "Endre synlighet"
+
+#: ../../Zotlabs/Module/Profiles.php:690
+msgid "Profile Tools"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:691
+msgid "Change cover photo"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:692 ../../include/channel.php:930
+msgid "Change profile photo"
+msgstr "Endre profilbilde"
+
+#: ../../Zotlabs/Module/Profiles.php:693
+msgid "Create a new profile using these settings"
+msgstr "Lag en ny profil ved å bruke disse innstillingene"
+
+#: ../../Zotlabs/Module/Profiles.php:694
+msgid "Clone this profile"
+msgstr "Klon denne profilen"
+
+#: ../../Zotlabs/Module/Profiles.php:695
+msgid "Delete this profile"
+msgstr "Slett denne profilen"
+
+#: ../../Zotlabs/Module/Profiles.php:696
+msgid "Add profile things"
+msgstr "Legg til profilting"
+
+#: ../../Zotlabs/Module/Profiles.php:697 ../../include/widgets.php:105
+#: ../../include/conversation.php:1526
+msgid "Personal"
+msgstr "Personlig"
+
+#: ../../Zotlabs/Module/Profiles.php:699
+msgid "Relation"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:700 ../../include/datetime.php:48
+msgid "Miscellaneous"
+msgstr "Forskjellig"
+
+#: ../../Zotlabs/Module/Profiles.php:702
+msgid "Import profile from file"
+msgstr "Importer profil fra fil"
+
+#: ../../Zotlabs/Module/Profiles.php:703
+msgid "Export profile to file"
+msgstr "Eksporter profil til fil"
+
+#: ../../Zotlabs/Module/Profiles.php:704
+msgid "Your gender"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:705
+msgid "Marital status"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:706
+msgid "Sexual preference"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:709
+msgid "Profile name"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:711
+msgid "This is your default profile."
+msgstr "Dette er din standardprofil."
+
+#: ../../Zotlabs/Module/Profiles.php:713
+msgid "Your full name"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:714
+msgid "Title/Description"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:717
+msgid "Street address"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:718
+msgid "Locality/City"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:719
+msgid "Region/State"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:720
+msgid "Postal/Zip code"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:721
+msgid "Country"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:726
+msgid "Who (if applicable)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:726
+msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
+msgstr "Eksempler: kari123, Kari Villiamsen, kari@example.com"
+
+#: ../../Zotlabs/Module/Profiles.php:727
+msgid "Since (date)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:730
+msgid "Tell us about yourself"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:732
+msgid "Hometown"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:733
+msgid "Political views"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:734
+msgid "Religious views"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:735
+msgid "Keywords used in directory listings"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:735
+msgid "Example: fishing photography software"
+msgstr "Eksempel: fisking fotografering programvare"
+
+#: ../../Zotlabs/Module/Profiles.php:738
+msgid "Musical interests"
+msgstr "Musikkinteresser"
+
+#: ../../Zotlabs/Module/Profiles.php:739
+msgid "Books, literature"
+msgstr "Bøker, litteratur"
+
+#: ../../Zotlabs/Module/Profiles.php:740
+msgid "Television"
+msgstr "TV/fjernsyn"
+
+#: ../../Zotlabs/Module/Profiles.php:741
+msgid "Film/Dance/Culture/Entertainment"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:742
+msgid "Hobbies/Interests"
+msgstr "Hobbier/Interesser"
+
+#: ../../Zotlabs/Module/Profiles.php:743
+msgid "Love/Romance"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:745
+msgid "School/Education"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:746
+msgid "Contact information and social networks"
+msgstr ""
+
+#: ../../Zotlabs/Module/Profiles.php:747
+msgid "My other channels"
+msgstr "Mine andre kanaler"
+
+#: ../../Zotlabs/Module/Profiles.php:767 ../../include/channel.php:955
+msgid "Profile Image"
+msgstr "Profilbilde"
+
+#: ../../Zotlabs/Module/Profiles.php:777 ../../include/nav.php:88
+#: ../../include/channel.php:937
+msgid "Edit Profiles"
+msgstr "Endre profiler"
+
+#: ../../Zotlabs/Module/Profile_photo.php:179
+msgid ""
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Hold nede Shift-knappen og last siden på nytt eller tøm nettleserens mellomlager hvis det nye bildet ikke vises umiddelbart."
+
+#: ../../Zotlabs/Module/Profile_photo.php:367
+msgid "Upload Profile Photo"
+msgstr "Last opp profilbilde:"
+
+#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63
+msgid "Invalid profile identifier."
+msgstr "Ugyldig profil-identifikator."
+
+#: ../../Zotlabs/Module/Profperm.php:115
+msgid "Profile Visibility Editor"
+msgstr "Endre profilsynlighet"
+
+#: ../../Zotlabs/Module/Profperm.php:117 ../../include/channel.php:1249
+msgid "Profile"
+msgstr "Profil"
+
+#: ../../Zotlabs/Module/Profperm.php:119
+msgid "Click on a contact to add or remove."
+msgstr "Klikk på en kontakt for å legge til eller fjerne."
+
+#: ../../Zotlabs/Module/Profperm.php:128
+msgid "Visible To"
+msgstr "Synlig for"
+
+#: ../../Zotlabs/Module/Pubsites.php:22 ../../include/widgets.php:1270
+msgid "Public Hubs"
+msgstr "Offentlige huber"
+
+#: ../../Zotlabs/Module/Pubsites.php:25
+msgid ""
+"The listed hubs allow public registration for the $Projectname network. All "
+"hubs in the network are interlinked so membership on any of them conveys "
+"membership in the network as a whole. Some hubs may require subscription or "
+"provide tiered service plans. The hub itself <strong>may</strong> provide "
+"additional details."
+msgstr "Nettstedene på listen tillater offentlig registrering i $Projectname-nettverket. Alle nettsteder i nettverket er forbundet så medlemskap på enhver av dem formidler medlemskap i nettverket som helhet. Noen nettsteder kan kreve abonnement eller tilby lagdelte tjenesteavtaler. Nettstedene selv <strong>kan</strong> gi tilleggsopplysninger."
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Hub URL"
+msgstr "Nettstedets URL"
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Access Type"
+msgstr "Tilgangstype"
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Registration Policy"
+msgstr "Retningslinjer for registrering"
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Stats"
+msgstr ""
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Software"
+msgstr ""
+
+#: ../../Zotlabs/Module/Pubsites.php:31 ../../Zotlabs/Module/Ratings.php:103
+#: ../../include/conversation.php:959
+msgid "Ratings"
+msgstr "Vurderinger"
+
+#: ../../Zotlabs/Module/Pubsites.php:38
+msgid "Rate"
+msgstr "Vurder"
+
+#: ../../Zotlabs/Module/Rate.php:160
+msgid "Website:"
+msgstr "Nettsted:"
+
+#: ../../Zotlabs/Module/Rate.php:163
+#, php-format
+msgid "Remote Channel [%s] (not yet known on this site)"
+msgstr "Fjerntliggende kanal [%s] (foreløpig ikke kjent på dette nettstedet)"
+
+#: ../../Zotlabs/Module/Rate.php:164
+msgid "Rating (this information is public)"
+msgstr "Vurdering (denne informasjonen er offentlig)"
+
+#: ../../Zotlabs/Module/Rate.php:165
+msgid "Optionally explain your rating (this information is public)"
+msgstr "Velg om du vil forklare din vurdering (denne informasjonen er offentlig)"
+
+#: ../../Zotlabs/Module/Ratings.php:73
+msgid "No ratings"
+msgstr "Ingen vurderinger"
+
+#: ../../Zotlabs/Module/Ratings.php:104
+msgid "Rating: "
+msgstr "Vurdering:"
+
+#: ../../Zotlabs/Module/Ratings.php:105
+msgid "Website: "
+msgstr "Nettsted:"
+
+#: ../../Zotlabs/Module/Ratings.php:107
+msgid "Description: "
+msgstr "Beskrivelse:"
+
+#: ../../Zotlabs/Module/Admin.php:77
msgid "Theme settings updated."
msgstr "Temainnstillinger er oppdatert."
-#: ../../mod/admin.php:174
+#: ../../Zotlabs/Module/Admin.php:197
msgid "# Accounts"
msgstr "# Kontoer"
-#: ../../mod/admin.php:175
+#: ../../Zotlabs/Module/Admin.php:198
msgid "# blocked accounts"
msgstr "# blokkerte kontoer"
-#: ../../mod/admin.php:176
+#: ../../Zotlabs/Module/Admin.php:199
msgid "# expired accounts"
msgstr "# utgåtte kontoer"
-#: ../../mod/admin.php:177
+#: ../../Zotlabs/Module/Admin.php:200
msgid "# expiring accounts"
msgstr "# kontoer som holder på å gå ut"
-#: ../../mod/admin.php:188
+#: ../../Zotlabs/Module/Admin.php:211
msgid "# Channels"
msgstr "# Kanaler"
-#: ../../mod/admin.php:189
+#: ../../Zotlabs/Module/Admin.php:212
msgid "# primary"
msgstr "# hoved"
-#: ../../mod/admin.php:190
+#: ../../Zotlabs/Module/Admin.php:213
msgid "# clones"
msgstr "# kloner"
-#: ../../mod/admin.php:196
+#: ../../Zotlabs/Module/Admin.php:219
msgid "Message queues"
msgstr "Meldingskøer"
-#: ../../mod/admin.php:212 ../../mod/admin.php:455 ../../mod/admin.php:669
-#: ../../mod/admin.php:709 ../../mod/admin.php:984 ../../mod/admin.php:1148
-#: ../../mod/admin.php:1263 ../../mod/admin.php:1324 ../../mod/admin.php:1485
-#: ../../mod/admin.php:1519 ../../mod/admin.php:1604
+#: ../../Zotlabs/Module/Admin.php:236
+msgid "Your software should be updated"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:241 ../../Zotlabs/Module/Admin.php:490
+#: ../../Zotlabs/Module/Admin.php:711 ../../Zotlabs/Module/Admin.php:755
+#: ../../Zotlabs/Module/Admin.php:1030 ../../Zotlabs/Module/Admin.php:1209
+#: ../../Zotlabs/Module/Admin.php:1329 ../../Zotlabs/Module/Admin.php:1419
+#: ../../Zotlabs/Module/Admin.php:1612 ../../Zotlabs/Module/Admin.php:1646
+#: ../../Zotlabs/Module/Admin.php:1731
msgid "Administration"
msgstr "Administrasjon"
-#: ../../mod/admin.php:213
+#: ../../Zotlabs/Module/Admin.php:242
msgid "Summary"
msgstr "Sammendrag"
-#: ../../mod/admin.php:216
+#: ../../Zotlabs/Module/Admin.php:245
msgid "Registered accounts"
msgstr "Registrerte kontoer"
-#: ../../mod/admin.php:217 ../../mod/admin.php:673
+#: ../../Zotlabs/Module/Admin.php:246 ../../Zotlabs/Module/Admin.php:715
msgid "Pending registrations"
msgstr "Ventende registreringer"
-#: ../../mod/admin.php:218
+#: ../../Zotlabs/Module/Admin.php:247
msgid "Registered channels"
msgstr "Registrerte kanaler"
-#: ../../mod/admin.php:219 ../../mod/admin.php:674
+#: ../../Zotlabs/Module/Admin.php:248 ../../Zotlabs/Module/Admin.php:716
msgid "Active plugins"
msgstr "Aktive tilleggsfunksjoner"
-#: ../../mod/admin.php:220
+#: ../../Zotlabs/Module/Admin.php:249
msgid "Version"
msgstr "Versjon"
-#: ../../mod/admin.php:339
+#: ../../Zotlabs/Module/Admin.php:250
+msgid "Repository version (master)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:251
+msgid "Repository version (dev)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:373
msgid "Site settings updated."
msgstr "Nettstedsinnstillinger er oppdatert."
-#: ../../mod/admin.php:376 ../../mod/settings.php:805
+#: ../../Zotlabs/Module/Admin.php:400 ../../include/text.php:2841
+msgid "Default"
+msgstr "Standard"
+
+#: ../../Zotlabs/Module/Admin.php:410 ../../Zotlabs/Module/Settings.php:798
msgid "mobile"
msgstr "mobil"
-#: ../../mod/admin.php:378
+#: ../../Zotlabs/Module/Admin.php:412
msgid "experimental"
msgstr "eksperimentell"
-#: ../../mod/admin.php:380
+#: ../../Zotlabs/Module/Admin.php:414
msgid "unsupported"
msgstr "ikke støttet"
-#: ../../mod/admin.php:426
+#: ../../Zotlabs/Module/Admin.php:460
msgid "Yes - with approval"
msgstr "Ja - med godkjenning"
-#: ../../mod/admin.php:432
+#: ../../Zotlabs/Module/Admin.php:466
msgid "My site is not a public server"
msgstr "Mitt nettsted er ikke en offentlig tjeneste"
-#: ../../mod/admin.php:433
+#: ../../Zotlabs/Module/Admin.php:467
msgid "My site has paid access only"
msgstr "Mitt nettsted gir kun tilgang mot betaling"
-#: ../../mod/admin.php:434
+#: ../../Zotlabs/Module/Admin.php:468
msgid "My site has free access only"
msgstr "Mitt nettsted har kun gratis tilgang"
-#: ../../mod/admin.php:435
+#: ../../Zotlabs/Module/Admin.php:469
msgid "My site offers free accounts with optional paid upgrades"
msgstr "Mitt nettsted tilbyr gratis konto med valgfri oppgradering til betalt tjeneste"
-#: ../../mod/admin.php:458 ../../mod/register.php:241
+#: ../../Zotlabs/Module/Admin.php:491 ../../include/widgets.php:1382
+msgid "Site"
+msgstr "Nettsted"
+
+#: ../../Zotlabs/Module/Admin.php:493 ../../Zotlabs/Module/Register.php:245
msgid "Registration"
msgstr "Registrering"
-#: ../../mod/admin.php:459
+#: ../../Zotlabs/Module/Admin.php:494
msgid "File upload"
msgstr "Last opp fil"
-#: ../../mod/admin.php:460
+#: ../../Zotlabs/Module/Admin.php:495
msgid "Policies"
msgstr "Retningslinjer"
-#: ../../mod/admin.php:465
+#: ../../Zotlabs/Module/Admin.php:496 ../../include/contact_widgets.php:16
+msgid "Advanced"
+msgstr "Avansert"
+
+#: ../../Zotlabs/Module/Admin.php:500
msgid "Site name"
msgstr "Nettstedets navn"
-#: ../../mod/admin.php:466
+#: ../../Zotlabs/Module/Admin.php:501
msgid "Banner/Logo"
msgstr "Banner/Logo"
-#: ../../mod/admin.php:467
+#: ../../Zotlabs/Module/Admin.php:502
msgid "Administrator Information"
msgstr "Administratorinformasjon"
-#: ../../mod/admin.php:467
+#: ../../Zotlabs/Module/Admin.php:502
msgid ""
"Contact information for site administrators. Displayed on siteinfo page. "
"BBCode can be used here"
msgstr "Kontaktinformasjon til nettstedsadministratorer. Vises på siteinfo-siden. BBCode kan brukes her"
-#: ../../mod/admin.php:468
+#: ../../Zotlabs/Module/Admin.php:503
msgid "System language"
msgstr "Systemspråk"
-#: ../../mod/admin.php:469
+#: ../../Zotlabs/Module/Admin.php:504
msgid "System theme"
msgstr "Systemtema"
-#: ../../mod/admin.php:469
+#: ../../Zotlabs/Module/Admin.php:504
msgid ""
"Default system theme - may be over-ridden by user profiles - <a href='#' "
"id='cnftheme'>change theme settings</a>"
msgstr "Standard systemtema - kan overstyres av brukerprofiler - <a href='#' id='cnftheme'>endre temainnstillinger</a>"
-#: ../../mod/admin.php:470
+#: ../../Zotlabs/Module/Admin.php:505
msgid "Mobile system theme"
msgstr "Mobilt systemtema"
-#: ../../mod/admin.php:470
+#: ../../Zotlabs/Module/Admin.php:505
msgid "Theme for mobile devices"
msgstr "Tema for mobile enheter"
-#: ../../mod/admin.php:472
+#: ../../Zotlabs/Module/Admin.php:507
msgid "Allow Feeds as Connections"
msgstr "Tillat strømmer som forbindelser"
-#: ../../mod/admin.php:472
+#: ../../Zotlabs/Module/Admin.php:507
msgid "(Heavy system resource usage)"
msgstr "(Tung bruk av systemressurser)"
-#: ../../mod/admin.php:473
+#: ../../Zotlabs/Module/Admin.php:508
msgid "Maximum image size"
msgstr "Største bildestørrelse"
-#: ../../mod/admin.php:473
+#: ../../Zotlabs/Module/Admin.php:508
msgid ""
"Maximum size in bytes of uploaded images. Default is 0, which means no "
"limits."
msgstr "Største størrelse i bytes for opplastede bilder. Standard er 0, som betyr ubegrenset."
-#: ../../mod/admin.php:474
+#: ../../Zotlabs/Module/Admin.php:509
msgid "Does this site allow new member registration?"
msgstr "Tillater dette nettstedet registrering av nye medlemmer?"
-#: ../../mod/admin.php:475
+#: ../../Zotlabs/Module/Admin.php:510
msgid "Invitation only"
msgstr "Kun inviterte"
-#: ../../mod/admin.php:475
+#: ../../Zotlabs/Module/Admin.php:510
msgid ""
"Only allow new member registrations with an invitation code. Above register "
"policy must be set to Yes."
msgstr "Tillat bare nye medlemsregistreringer med en invitasjonskode. Ovenstående retningslinjer for registrering må være satt til Ja."
-#: ../../mod/admin.php:476
+#: ../../Zotlabs/Module/Admin.php:511
msgid "Which best describes the types of account offered by this hub?"
msgstr "Hvilket alternativ beskriver best hva slags kontotype som tilbys av dette nettstedet/denne hubben?"
-#: ../../mod/admin.php:477
+#: ../../Zotlabs/Module/Admin.php:512
msgid "Register text"
msgstr "Registreringstekst"
-#: ../../mod/admin.php:477
+#: ../../Zotlabs/Module/Admin.php:512
msgid "Will be displayed prominently on the registration page."
msgstr "Vil bli vist på en fremtredende måte på registreringssiden."
-#: ../../mod/admin.php:478
+#: ../../Zotlabs/Module/Admin.php:513
msgid "Site homepage to show visitors (default: login box)"
msgstr "Nettstedets hjemmeside som vises til besøkende (standard: innloggingsboks)"
-#: ../../mod/admin.php:478
+#: ../../Zotlabs/Module/Admin.php:513
msgid ""
"example: 'public' to show public stream, 'page/sys/home' to show a system "
"webpage called 'home' or 'include:home.html' to include a file."
msgstr "eksempel: 'public' for å vise offentlig strøm av innlegg, 'page/sys/home/ for å vise en system-webside called 'home\" eller 'include:home.html' for å inkludere en fil."
-#: ../../mod/admin.php:479
+#: ../../Zotlabs/Module/Admin.php:514
msgid "Preserve site homepage URL"
msgstr "Bevar URL-en til nettstedets hjemmeside"
-#: ../../mod/admin.php:479
+#: ../../Zotlabs/Module/Admin.php:514
msgid ""
"Present the site homepage in a frame at the original location instead of "
"redirecting"
msgstr "Presenter hjemmesiden til nettstedet i en ramme fra den opprinnelige plasseringen i stedet for å omdirigere"
-#: ../../mod/admin.php:480
+#: ../../Zotlabs/Module/Admin.php:515
msgid "Accounts abandoned after x days"
msgstr "Kontoer forlatt etter x dager"
-#: ../../mod/admin.php:480
+#: ../../Zotlabs/Module/Admin.php:515
msgid ""
"Will not waste system resources polling external sites for abandonded "
"accounts. Enter 0 for no time limit."
msgstr "Vil ikke kaste bort systemressurser på å spørre eksterne nettsteder etter forlatte kontoer. Skriv 0 for å ikke sette noen tidsgrense."
-#: ../../mod/admin.php:481
+#: ../../Zotlabs/Module/Admin.php:516
msgid "Allowed friend domains"
msgstr "Tillatte vennedomener"
-#: ../../mod/admin.php:481
+#: ../../Zotlabs/Module/Admin.php:516
msgid ""
"Comma separated list of domains which are allowed to establish friendships "
"with this site. Wildcards are accepted. Empty to allow any domains"
msgstr "Kommaseparert liste over domener som har lov til å etablere vennskap med dette nettstedet. Jokertegn er akseptert. Tøm for å tillate alle domener."
-#: ../../mod/admin.php:482
+#: ../../Zotlabs/Module/Admin.php:517
msgid "Allowed email domains"
msgstr "Tillate e-postdomener"
-#: ../../mod/admin.php:482
+#: ../../Zotlabs/Module/Admin.php:517
msgid ""
"Comma separated list of domains which are allowed in email addresses for "
"registrations to this site. Wildcards are accepted. Empty to allow any "
"domains"
msgstr "Kommaseparert liste med domener som er tillatt i e-postadresser ved registrering på dette nettstedet. Jokertegn er akseptert. Tomt betyr at alle domener er tillatt"
-#: ../../mod/admin.php:483
+#: ../../Zotlabs/Module/Admin.php:518
msgid "Not allowed email domains"
msgstr "Ikke tillatte e-postdomener"
-#: ../../mod/admin.php:483
+#: ../../Zotlabs/Module/Admin.php:518
msgid ""
"Comma separated list of domains which are not allowed in email addresses for"
" registrations to this site. Wildcards are accepted. Empty to allow any "
"domains, unless allowed domains have been defined."
msgstr "Kommaseparert liste med domener som ikke er tillatt i e-postadresser ved registrering på dette nettstedet. Jokertegn er akseptert. Tomt betyr at alle domener er tillatt, med mindre tillate domener er blitt definert."
-#: ../../mod/admin.php:484
+#: ../../Zotlabs/Module/Admin.php:519
msgid "Verify Email Addresses"
msgstr "Bekreft e-postadresser"
-#: ../../mod/admin.php:484
+#: ../../Zotlabs/Module/Admin.php:519
msgid ""
"Check to verify email addresses used in account registration (recommended)."
msgstr "Sett hake for å sjekke e-postadresser brukt ved kontoregistrering (anbefales)."
-#: ../../mod/admin.php:485
+#: ../../Zotlabs/Module/Admin.php:520
msgid "Force publish"
msgstr "Tving publisering"
-#: ../../mod/admin.php:485
+#: ../../Zotlabs/Module/Admin.php:520
msgid ""
"Check to force all profiles on this site to be listed in the site directory."
msgstr "Kryss av for å tvinge alle profiler på dette nettstedet til å bli oppført i nettstedet sin katalog."
-#: ../../mod/admin.php:486
+#: ../../Zotlabs/Module/Admin.php:521
msgid "Import Public Streams"
msgstr "Importer offentlige innholdsstrømmer"
-#: ../../mod/admin.php:486
+#: ../../Zotlabs/Module/Admin.php:521
msgid ""
"Import and allow access to public content pulled from other sites. Warning: "
"this content is unmoderated."
msgstr "Importer og gi tilgang til offentlig innhold trukket inn fra andre nettsteder. Advarsel: dette innholdet er ikke moderert."
-#: ../../mod/admin.php:487
-msgid "login on Homepage"
-msgstr "Logg inn på hjemmesiden"
+#: ../../Zotlabs/Module/Admin.php:522
+msgid "Login on Homepage"
+msgstr ""
-#: ../../mod/admin.php:487
+#: ../../Zotlabs/Module/Admin.php:522
msgid ""
"Present a login box to visitors on the home page if no other content has "
"been configured."
msgstr "Presenter en innloggingsboks til besøkende på hjemmesiden hvis ikke noe annet innhold har blitt konfigurert."
-#: ../../mod/admin.php:489
+#: ../../Zotlabs/Module/Admin.php:523
+msgid "Enable context help"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:523
+msgid ""
+"Display contextual help for the current page when the help button is "
+"pressed."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:525
msgid "Directory Server URL"
msgstr "Katalogtjener URL"
-#: ../../mod/admin.php:489
+#: ../../Zotlabs/Module/Admin.php:525
msgid "Default directory server"
msgstr "Standard katalogtjener"
-#: ../../mod/admin.php:491
+#: ../../Zotlabs/Module/Admin.php:527
msgid "Proxy user"
msgstr "Brukernavn mellomtjener"
-#: ../../mod/admin.php:492
+#: ../../Zotlabs/Module/Admin.php:528
msgid "Proxy URL"
msgstr "Mellomtjener URL"
-#: ../../mod/admin.php:493
+#: ../../Zotlabs/Module/Admin.php:529
msgid "Network timeout"
msgstr "Nettverk tidsavbrudd"
-#: ../../mod/admin.php:493
+#: ../../Zotlabs/Module/Admin.php:529
msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
msgstr "Verdien i sekunder. Skriv 0 for ubegrenset (ikke anbefalt)."
-#: ../../mod/admin.php:494
+#: ../../Zotlabs/Module/Admin.php:530
msgid "Delivery interval"
msgstr "Leveringsinterval"
-#: ../../mod/admin.php:494
+#: ../../Zotlabs/Module/Admin.php:530
msgid ""
"Delay background delivery processes by this many seconds to reduce system "
"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
"for large dedicated servers."
msgstr "Forsink leveringsprosessene i bakgrunnen med dette antall sekunder for å redusere systembelastningen. Anbefaling: 4-5 for delte tjenere, 2-3 for virtuelle tjenere, 0-1 for større dedikerte tjenere."
-#: ../../mod/admin.php:495
+#: ../../Zotlabs/Module/Admin.php:531
msgid "Deliveries per process"
msgstr "Leveranser per prosess"
-#: ../../mod/admin.php:495
+#: ../../Zotlabs/Module/Admin.php:531
msgid ""
"Number of deliveries to attempt in a single operating system process. Adjust"
" if necessary to tune system performance. Recommend: 1-5."
msgstr "Antall leveranser som forsøkes i en enkelt operativsystemprosess. Juster om nødvendig for å fininnstille systemets yteevne. Anbefaling: 1-5."
-#: ../../mod/admin.php:496
+#: ../../Zotlabs/Module/Admin.php:532
msgid "Poll interval"
msgstr "Spørreintervall"
-#: ../../mod/admin.php:496
+#: ../../Zotlabs/Module/Admin.php:532
msgid ""
"Delay background polling processes by this many seconds to reduce system "
"load. If 0, use delivery interval."
msgstr "Forsink spørreprosessene i bakgrunnen med dette antall sekunder for å redusere systembelastningen. Hvis 0, bruk dette leveringsintervallet."
-#: ../../mod/admin.php:497
+#: ../../Zotlabs/Module/Admin.php:533
msgid "Maximum Load Average"
msgstr "Største belastningsgjennomsnitt"
-#: ../../mod/admin.php:497
+#: ../../Zotlabs/Module/Admin.php:533
msgid ""
"Maximum system load before delivery and poll processes are deferred - "
"default 50."
msgstr "Største systembelastning før leverings- og spørreprosesser blir utsatt - standard 50."
-#: ../../mod/admin.php:498
+#: ../../Zotlabs/Module/Admin.php:534
msgid "Expiration period in days for imported (grid/network) content"
msgstr "Antall dager før importert innhold (nettet/nettverk) utgår"
-#: ../../mod/admin.php:498
+#: ../../Zotlabs/Module/Admin.php:534
msgid "0 for no expiration of imported content"
msgstr "0 dersom importert innhold ikke skal utgå"
-#: ../../mod/admin.php:635 ../../mod/admin.php:636 ../../mod/settings.php:729
+#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:678
+#: ../../Zotlabs/Module/Settings.php:722
msgid "Off"
msgstr "Av"
-#: ../../mod/admin.php:635 ../../mod/admin.php:636 ../../mod/settings.php:729
+#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:678
+#: ../../Zotlabs/Module/Settings.php:722
msgid "On"
msgstr "PÃ¥"
-#: ../../mod/admin.php:636
+#: ../../Zotlabs/Module/Admin.php:678
#, php-format
msgid "Lock feature %s"
msgstr "LÃ¥s funksjon %s"
-#: ../../mod/admin.php:644
+#: ../../Zotlabs/Module/Admin.php:686
msgid "Manage Additional Features"
msgstr "HÃ¥ndter tilleggsfunksjoner"
-#: ../../mod/admin.php:661
+#: ../../Zotlabs/Module/Admin.php:703
msgid "No server found"
msgstr "Ingen tjener funnet"
-#: ../../mod/admin.php:668 ../../mod/admin.php:998
+#: ../../Zotlabs/Module/Admin.php:710 ../../Zotlabs/Module/Admin.php:1046
msgid "ID"
msgstr "ID"
-#: ../../mod/admin.php:668
+#: ../../Zotlabs/Module/Admin.php:710
msgid "for channel"
msgstr "for kanalen"
-#: ../../mod/admin.php:668
+#: ../../Zotlabs/Module/Admin.php:710
msgid "on server"
msgstr "på tjener"
-#: ../../mod/admin.php:670
+#: ../../Zotlabs/Module/Admin.php:712
msgid "Server"
msgstr "Tjener"
-#: ../../mod/admin.php:712
+#: ../../Zotlabs/Module/Admin.php:746
+msgid ""
+"By default, unfiltered HTML is allowed in embedded media. This is inherently"
+" insecure."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:749
+msgid ""
+"The recommended setting is to only allow unfiltered HTML from the following "
+"sites:"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:750
+msgid ""
+"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br"
+" />https://vimeo.com/<br />https://soundcloud.com/<br />"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:751
+msgid ""
+"All other embedded content will be filtered, <strong>unless</strong> "
+"embedded content from that site is explicitly blocked."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:756 ../../include/widgets.php:1385
+msgid "Security"
+msgstr "Sikkerhet"
+
+#: ../../Zotlabs/Module/Admin.php:758
msgid "Block public"
msgstr "Blokker offentlig tilgang"
-#: ../../mod/admin.php:712
+#: ../../Zotlabs/Module/Admin.php:758
msgid ""
"Check to block public access to all otherwise public personal pages on this "
"site unless you are currently authenticated."
msgstr "Kryss av for å blokkere tilgang til alle personlige sider som ellers ville vært offentlig tilgjengelige på dette nettstedet med mindre du er logget inn."
-#: ../../mod/admin.php:713
+#: ../../Zotlabs/Module/Admin.php:759
+msgid "Set \"Transport Security\" HTTP header"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:760
+msgid "Set \"Content Security Policy\" HTTP header"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:761
msgid "Allow communications only from these sites"
msgstr "Tillat kommunikasjon med bare disse nettstedene"
-#: ../../mod/admin.php:713
+#: ../../Zotlabs/Module/Admin.php:761
msgid ""
"One site per line. Leave empty to allow communication from anywhere by "
"default"
msgstr "Et nettsted per linje. La det stå tomt for å tillate kommunikasjon med ethvert nettsted som standard"
-#: ../../mod/admin.php:714
+#: ../../Zotlabs/Module/Admin.php:762
msgid "Block communications from these sites"
msgstr "Blokker kommunikasjon fra disse nettstedene"
-#: ../../mod/admin.php:715
+#: ../../Zotlabs/Module/Admin.php:763
msgid "Allow communications only from these channels"
msgstr "Tillat kommunikasjon med bare disse kanalene"
-#: ../../mod/admin.php:715
+#: ../../Zotlabs/Module/Admin.php:763
msgid ""
"One channel (hash) per line. Leave empty to allow from any channel by "
"default"
msgstr "En kanal (hash) per linje. La det stå tomt for å tillate enhver kanal som standard"
-#: ../../mod/admin.php:716
+#: ../../Zotlabs/Module/Admin.php:764
msgid "Block communications from these channels"
msgstr "Blokker kommunikasjon fra disse kanalene"
-#: ../../mod/admin.php:717
-msgid "Allow embedded HTML content only from these domains"
-msgstr "Tillat innebygget HTML-innhold fra bare disse domenene"
+#: ../../Zotlabs/Module/Admin.php:765
+msgid "Only allow embeds from secure (SSL) websites and links."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:766
+msgid "Allow unfiltered embedded HTML content only from these domains"
+msgstr ""
-#: ../../mod/admin.php:717
-msgid "One site per line. Leave empty to allow from any site by default"
-msgstr "Et nettsted per linje. La stå tomt for å tillate ethvert nettsted som standard"
+#: ../../Zotlabs/Module/Admin.php:766
+msgid "One site per line. By default embedded content is filtered."
+msgstr ""
-#: ../../mod/admin.php:718
+#: ../../Zotlabs/Module/Admin.php:767
msgid "Block embedded HTML from these domains"
msgstr "Blokker innbygget HTML fra disse domenene"
-#: ../../mod/admin.php:720
-msgid "Cooperative embed security"
-msgstr "Kooperativ innebyggingssikkerhet"
-
-#: ../../mod/admin.php:720
-msgid "Enable to share embed security with other compatible sites/hubs"
-msgstr "Skru på deling av innebyggingssikkerhet med andre kompatible nettsteder/hubber"
-
-#: ../../mod/admin.php:735
+#: ../../Zotlabs/Module/Admin.php:785
msgid "Update has been marked successful"
msgstr "Oppdateringen har blitt merket som en suksess"
-#: ../../mod/admin.php:745
+#: ../../Zotlabs/Module/Admin.php:795
#, php-format
msgid "Executing %s failed. Check system logs."
msgstr "Utføring av %s feilet. Sjekk systemlogger."
-#: ../../mod/admin.php:748
+#: ../../Zotlabs/Module/Admin.php:798
#, php-format
msgid "Update %s was successfully applied."
msgstr "Oppdatering %s ble gjennomført med suksess."
-#: ../../mod/admin.php:752
+#: ../../Zotlabs/Module/Admin.php:802
#, php-format
msgid "Update %s did not return a status. Unknown if it succeeded."
msgstr "Oppdatering %s returnerte ingen status. Det er ukjent om den ble vellykket."
-#: ../../mod/admin.php:755
+#: ../../Zotlabs/Module/Admin.php:805
#, php-format
msgid "Update function %s could not be found."
msgstr "Oppdatering av funksjon %s kunne ikke finnes."
-#: ../../mod/admin.php:771
+#: ../../Zotlabs/Module/Admin.php:821
msgid "No failed updates."
msgstr "Ingen mislykkede oppdateringer."
-#: ../../mod/admin.php:775
+#: ../../Zotlabs/Module/Admin.php:825
msgid "Failed Updates"
msgstr "Mislykkede oppdateringer"
-#: ../../mod/admin.php:777
+#: ../../Zotlabs/Module/Admin.php:827
msgid "Mark success (if update was manually applied)"
msgstr "Marker suksess (hvis oppdateringen ble gjennomført manuelt)"
-#: ../../mod/admin.php:778
+#: ../../Zotlabs/Module/Admin.php:828
msgid "Attempt to execute this update step automatically"
msgstr "Prøv å gjennomføre dette oppdateringstrinnet automatisk"
-#: ../../mod/admin.php:809
+#: ../../Zotlabs/Module/Admin.php:859
msgid "Queue Statistics"
msgstr "Køstatistikk"
-#: ../../mod/admin.php:810
+#: ../../Zotlabs/Module/Admin.php:860
msgid "Total Entries"
msgstr "Totalt antall oppføringer"
-#: ../../mod/admin.php:811
+#: ../../Zotlabs/Module/Admin.php:861
msgid "Priority"
msgstr "Prioritet"
-#: ../../mod/admin.php:812
+#: ../../Zotlabs/Module/Admin.php:862
msgid "Destination URL"
msgstr "MÃ¥l-URL"
-#: ../../mod/admin.php:813
+#: ../../Zotlabs/Module/Admin.php:863
msgid "Mark hub permanently offline"
msgstr "Merk hub som permanent offline"
-#: ../../mod/admin.php:814
+#: ../../Zotlabs/Module/Admin.php:864
msgid "Empty queue for this hub"
msgstr "Tøm køen for denne hubben"
-#: ../../mod/admin.php:815
+#: ../../Zotlabs/Module/Admin.php:865
msgid "Last known contact"
msgstr "Siste kjente kontakt"
-#: ../../mod/admin.php:851
+#: ../../Zotlabs/Module/Admin.php:901
#, php-format
msgid "%s account blocked/unblocked"
msgid_plural "%s account blocked/unblocked"
msgstr[0] "%s konto blokkert/ikke blokkert lenger"
msgstr[1] "%s kontoer blokkert/ikke blokkert lenger"
-#: ../../mod/admin.php:859
+#: ../../Zotlabs/Module/Admin.php:908
#, php-format
msgid "%s account deleted"
msgid_plural "%s accounts deleted"
msgstr[0] "%s konto slettet"
msgstr[1] "%s kontoer slettet"
-#: ../../mod/admin.php:895
+#: ../../Zotlabs/Module/Admin.php:944
msgid "Account not found"
msgstr "Kontoen ble ikke funnet"
-#: ../../mod/admin.php:907
+#: ../../Zotlabs/Module/Admin.php:955
#, php-format
msgid "Account '%s' deleted"
msgstr "Kontoen '%s' slettet"
-#: ../../mod/admin.php:915
+#: ../../Zotlabs/Module/Admin.php:963
#, php-format
msgid "Account '%s' blocked"
msgstr "Kontoen '%s' blokkert"
-#: ../../mod/admin.php:923
+#: ../../Zotlabs/Module/Admin.php:971
#, php-format
msgid "Account '%s' unblocked"
msgstr "Kontoen '%s' er ikke blokkert lenger"
-#: ../../mod/admin.php:985 ../../mod/admin.php:997
-msgid "Users"
-msgstr "Brukere"
+#: ../../Zotlabs/Module/Admin.php:1031 ../../Zotlabs/Module/Admin.php:1044
+#: ../../include/widgets.php:1383
+msgid "Accounts"
+msgstr "Kontoer"
-#: ../../mod/admin.php:987 ../../mod/admin.php:1151
+#: ../../Zotlabs/Module/Admin.php:1033 ../../Zotlabs/Module/Admin.php:1212
msgid "select all"
msgstr "velg alle"
-#: ../../mod/admin.php:988
-msgid "User registrations waiting for confirm"
-msgstr "Brukerregistreringer som venter på bekreftelse"
+#: ../../Zotlabs/Module/Admin.php:1034
+msgid "Registrations waiting for confirm"
+msgstr ""
-#: ../../mod/admin.php:989
+#: ../../Zotlabs/Module/Admin.php:1035
msgid "Request date"
msgstr "Dato for forespørsel"
-#: ../../mod/admin.php:990
+#: ../../Zotlabs/Module/Admin.php:1036
msgid "No registrations."
msgstr "Ingen registreringer."
-#: ../../mod/admin.php:992
+#: ../../Zotlabs/Module/Admin.php:1038
msgid "Deny"
msgstr "Avslå"
-#: ../../mod/admin.php:998
+#: ../../Zotlabs/Module/Admin.php:1048 ../../include/group.php:267
+msgid "All Channels"
+msgstr "Alle kanaler"
+
+#: ../../Zotlabs/Module/Admin.php:1049
msgid "Register date"
msgstr "Registreringsdato"
-#: ../../mod/admin.php:998
+#: ../../Zotlabs/Module/Admin.php:1050
msgid "Last login"
msgstr "Siste innlogging"
-#: ../../mod/admin.php:998
+#: ../../Zotlabs/Module/Admin.php:1051
msgid "Expires"
msgstr "Utløper"
-#: ../../mod/admin.php:998
+#: ../../Zotlabs/Module/Admin.php:1052
msgid "Service Class"
msgstr "Tjenesteklasse"
-#: ../../mod/admin.php:1000
+#: ../../Zotlabs/Module/Admin.php:1054
msgid ""
"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
" on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Valgte kontoer vil bli slettet!\\n\\nAlt disse kontoene har lagt inn på dette nettstedet vil bli slettet permanent!\\n\\nEr du sikker på at du vil slette disse valgte kontoene?"
-#: ../../mod/admin.php:1001
+#: ../../Zotlabs/Module/Admin.php:1055
msgid ""
"The account {0} will be deleted!\\n\\nEverything this account has posted on "
"this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Kontoen {0} vl bli slettet!\\n\\nAlt denne kontoen har lagt inn på dette nettstedet vil bli slettet permanent!\\n\\nEr du sikker på at du vil slette denne kontoen?"
-#: ../../mod/admin.php:1037
+#: ../../Zotlabs/Module/Admin.php:1091
#, php-format
msgid "%s channel censored/uncensored"
msgid_plural "%s channels censored/uncensored"
msgstr[0] "%s kanal er sensurert/ikke sensurert lenger"
msgstr[1] "%s kanaler er sensurert/ikke sensurert lenger"
-#: ../../mod/admin.php:1046
+#: ../../Zotlabs/Module/Admin.php:1100
#, php-format
msgid "%s channel code allowed/disallowed"
msgid_plural "%s channels code allowed/disallowed"
msgstr[0] "%s kanal med kode tillatt/ikke tillatt"
msgstr[1] "%s kanaler med kode tillatt/ikke tillatt"
-#: ../../mod/admin.php:1053
+#: ../../Zotlabs/Module/Admin.php:1106
#, php-format
msgid "%s channel deleted"
msgid_plural "%s channels deleted"
msgstr[0] "%s kanal slettet"
msgstr[1] "%s kanaler slettet"
-#: ../../mod/admin.php:1073
+#: ../../Zotlabs/Module/Admin.php:1126
msgid "Channel not found"
msgstr "Kanalen ble ikke funnet"
-#: ../../mod/admin.php:1084
+#: ../../Zotlabs/Module/Admin.php:1136
#, php-format
msgid "Channel '%s' deleted"
msgstr "Kanalen '%s' er slettet"
-#: ../../mod/admin.php:1096
+#: ../../Zotlabs/Module/Admin.php:1148
#, php-format
msgid "Channel '%s' censored"
msgstr "Kanalen '%s' er sensurert"
-#: ../../mod/admin.php:1096
+#: ../../Zotlabs/Module/Admin.php:1148
#, php-format
msgid "Channel '%s' uncensored"
msgstr "Kanalen '%s' er ikke sensurert lenger"
-#: ../../mod/admin.php:1107
+#: ../../Zotlabs/Module/Admin.php:1159
#, php-format
msgid "Channel '%s' code allowed"
msgstr "Kanal '%s' kode tillatt"
-#: ../../mod/admin.php:1107
+#: ../../Zotlabs/Module/Admin.php:1159
#, php-format
msgid "Channel '%s' code disallowed"
msgstr "Kanal '%s' kode ikke tillatt"
-#: ../../mod/admin.php:1153
+#: ../../Zotlabs/Module/Admin.php:1210 ../../include/widgets.php:1384
+msgid "Channels"
+msgstr "Kanaler"
+
+#: ../../Zotlabs/Module/Admin.php:1214
msgid "Censor"
msgstr "Sensurer"
-#: ../../mod/admin.php:1154
+#: ../../Zotlabs/Module/Admin.php:1215
msgid "Uncensor"
msgstr "Ikke sensurer lenger"
-#: ../../mod/admin.php:1155
+#: ../../Zotlabs/Module/Admin.php:1216
msgid "Allow Code"
msgstr "Tillat kode"
-#: ../../mod/admin.php:1156
+#: ../../Zotlabs/Module/Admin.php:1217
msgid "Disallow Code"
msgstr "Ikke tillat kode"
-#: ../../mod/admin.php:1158
+#: ../../Zotlabs/Module/Admin.php:1218 ../../include/conversation.php:1611
+msgid "Channel"
+msgstr "Kanal"
+
+#: ../../Zotlabs/Module/Admin.php:1222
msgid "UID"
msgstr "UID"
-#: ../../mod/admin.php:1158 ../../mod/profiles.php:457
-msgid "Address"
-msgstr "Adresse"
-
-#: ../../mod/admin.php:1160
+#: ../../Zotlabs/Module/Admin.php:1226
msgid ""
"Selected channels will be deleted!\\n\\nEverything that was posted in these "
"channels on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Valgte kanaler vil bli slettet!\\n\\nAlt innhold som er lagt inn i disse kanalene på dette nettstedet vil bli slettet for alltid!\\n\\nEr du sikker på at du vil slette disse kanalene med alt innhold?"
-#: ../../mod/admin.php:1161
+#: ../../Zotlabs/Module/Admin.php:1227
msgid ""
"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
"channel on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Kanalen {0} vil bli slettet!\\n\\nAlt innhold som er lagt inn i denne kanalen på dettet nettstedet vil bli slettet for alltid!\\n\\nEr du sikker på at du vil slette denne kanalen med alt innhold?"
-#: ../../mod/admin.php:1218
+#: ../../Zotlabs/Module/Admin.php:1284
#, php-format
msgid "Plugin %s disabled."
msgstr "Tilleggsfunksjonen %s er avskrudd."
-#: ../../mod/admin.php:1222
+#: ../../Zotlabs/Module/Admin.php:1288
#, php-format
msgid "Plugin %s enabled."
msgstr "Tilleggsfunksjonen %s er påskrudd."
-#: ../../mod/admin.php:1232 ../../mod/admin.php:1458
+#: ../../Zotlabs/Module/Admin.php:1298 ../../Zotlabs/Module/Admin.php:1585
msgid "Disable"
msgstr "Skru av"
-#: ../../mod/admin.php:1235 ../../mod/admin.php:1460
+#: ../../Zotlabs/Module/Admin.php:1301 ../../Zotlabs/Module/Admin.php:1587
msgid "Enable"
msgstr "Skru på"
-#: ../../mod/admin.php:1265 ../../mod/admin.php:1487
+#: ../../Zotlabs/Module/Admin.php:1330 ../../Zotlabs/Module/Admin.php:1420
+#: ../../include/widgets.php:1387
+msgid "Plugins"
+msgstr "Tilleggsfunksjoner"
+
+#: ../../Zotlabs/Module/Admin.php:1331 ../../Zotlabs/Module/Admin.php:1614
msgid "Toggle"
msgstr "Skru av og på"
-#: ../../mod/admin.php:1273 ../../mod/admin.php:1497
+#: ../../Zotlabs/Module/Admin.php:1332 ../../Zotlabs/Module/Admin.php:1615
+#: ../../Zotlabs/Lib/Apps.php:215 ../../include/widgets.php:638
+#: ../../include/nav.php:208
+msgid "Settings"
+msgstr "Innstillinger"
+
+#: ../../Zotlabs/Module/Admin.php:1339 ../../Zotlabs/Module/Admin.php:1624
msgid "Author: "
msgstr "Forfatter:"
-#: ../../mod/admin.php:1274 ../../mod/admin.php:1498
+#: ../../Zotlabs/Module/Admin.php:1340 ../../Zotlabs/Module/Admin.php:1625
msgid "Maintainer: "
msgstr "Vedlikeholder:"
-#: ../../mod/admin.php:1275
+#: ../../Zotlabs/Module/Admin.php:1341
msgid "Minimum project version: "
msgstr "Minimum prosjektversjon:"
-#: ../../mod/admin.php:1276
+#: ../../Zotlabs/Module/Admin.php:1342
msgid "Maximum project version: "
msgstr "Maksimum prosjektversjon:"
-#: ../../mod/admin.php:1277
+#: ../../Zotlabs/Module/Admin.php:1343
msgid "Minimum PHP version: "
msgstr "Minimum PHP-versjon:"
-#: ../../mod/admin.php:1278
+#: ../../Zotlabs/Module/Admin.php:1344
msgid "Requires: "
msgstr "Krever:"
-#: ../../mod/admin.php:1279 ../../mod/admin.php:1330
+#: ../../Zotlabs/Module/Admin.php:1345 ../../Zotlabs/Module/Admin.php:1425
msgid "Disabled - version incompatibility"
msgstr "Skrudd av - versjonsinkompatibilitet"
-#: ../../mod/admin.php:1423
+#: ../../Zotlabs/Module/Admin.php:1394
+msgid "Enter the public git repository URL of the plugin repo."
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1395
+msgid "Plugin repo git URL"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1396
+msgid "Custom repo name"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1396
+msgid "(optional)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1397
+msgid "Download Plugin Repo"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1404
+msgid "Install new repo"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1405 ../../Zotlabs/Lib/Apps.php:330
+msgid "Install"
+msgstr "Installer"
+
+#: ../../Zotlabs/Module/Admin.php:1427
+msgid "Manage Repos"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1428
+msgid "Installed Plugin Repositories"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1429
+msgid "Install a New Plugin Repository"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1435 ../../Zotlabs/Module/Settings.php:77
+#: ../../Zotlabs/Module/Settings.php:616 ../../Zotlabs/Lib/Apps.php:330
+msgid "Update"
+msgstr "Oppdater"
+
+#: ../../Zotlabs/Module/Admin.php:1436
+msgid "Switch branch"
+msgstr ""
+
+#: ../../Zotlabs/Module/Admin.php:1550
msgid "No themes found."
msgstr "Ingen temaer er funnet."
-#: ../../mod/admin.php:1479
+#: ../../Zotlabs/Module/Admin.php:1606
msgid "Screenshot"
msgstr "Skjermbilde"
-#: ../../mod/admin.php:1525
+#: ../../Zotlabs/Module/Admin.php:1613 ../../Zotlabs/Module/Admin.php:1647
+#: ../../include/widgets.php:1388
+msgid "Themes"
+msgstr "Temaer"
+
+#: ../../Zotlabs/Module/Admin.php:1652
msgid "[Experimental]"
msgstr "[Eksperimentelt]"
-#: ../../mod/admin.php:1526
+#: ../../Zotlabs/Module/Admin.php:1653
msgid "[Unsupported]"
msgstr "[Ingen støtte]"
-#: ../../mod/admin.php:1550
+#: ../../Zotlabs/Module/Admin.php:1677
msgid "Log settings updated."
msgstr "Logginnstillinger er oppdatert."
-#: ../../mod/admin.php:1607
+#: ../../Zotlabs/Module/Admin.php:1732 ../../include/widgets.php:1409
+#: ../../include/widgets.php:1419
+msgid "Logs"
+msgstr "Logger"
+
+#: ../../Zotlabs/Module/Admin.php:1734
msgid "Clear"
msgstr "Tøm"
-#: ../../mod/admin.php:1613
+#: ../../Zotlabs/Module/Admin.php:1740
msgid "Debugging"
msgstr "Feilsøking"
-#: ../../mod/admin.php:1614
+#: ../../Zotlabs/Module/Admin.php:1741
msgid "Log file"
msgstr "Loggfil"
-#: ../../mod/admin.php:1614
+#: ../../Zotlabs/Module/Admin.php:1741
msgid ""
-"Must be writable by web server. Relative to your Red top-level directory."
-msgstr "Må kunne skrives til av webtjenesten. Relativ til din Red sin toppnivåkatalog."
+"Must be writable by web server. Relative to your top-level webserver "
+"directory."
+msgstr ""
-#: ../../mod/admin.php:1615
+#: ../../Zotlabs/Module/Admin.php:1742
msgid "Log level"
msgstr "Loggnivå"
-#: ../../mod/admin.php:1661
+#: ../../Zotlabs/Module/Admin.php:2028
msgid "New Profile Field"
msgstr "Nytt profilfelt"
-#: ../../mod/admin.php:1662 ../../mod/admin.php:1682
+#: ../../Zotlabs/Module/Admin.php:2029 ../../Zotlabs/Module/Admin.php:2049
msgid "Field nickname"
msgstr "Feltets kallenavn"
-#: ../../mod/admin.php:1662 ../../mod/admin.php:1682
+#: ../../Zotlabs/Module/Admin.php:2029 ../../Zotlabs/Module/Admin.php:2049
msgid "System name of field"
msgstr "Systemnavnet til feltet"
-#: ../../mod/admin.php:1663 ../../mod/admin.php:1683
+#: ../../Zotlabs/Module/Admin.php:2030 ../../Zotlabs/Module/Admin.php:2050
msgid "Input type"
msgstr "Inndata-type"
-#: ../../mod/admin.php:1664 ../../mod/admin.php:1684
+#: ../../Zotlabs/Module/Admin.php:2031 ../../Zotlabs/Module/Admin.php:2051
msgid "Field Name"
msgstr "Feltnavn"
-#: ../../mod/admin.php:1664 ../../mod/admin.php:1684
+#: ../../Zotlabs/Module/Admin.php:2031 ../../Zotlabs/Module/Admin.php:2051
msgid "Label on profile pages"
msgstr "Merkelapp på profilsider"
-#: ../../mod/admin.php:1665 ../../mod/admin.php:1685
+#: ../../Zotlabs/Module/Admin.php:2032 ../../Zotlabs/Module/Admin.php:2052
msgid "Help text"
msgstr "Hjelpetekst"
-#: ../../mod/admin.php:1665 ../../mod/admin.php:1685
+#: ../../Zotlabs/Module/Admin.php:2032 ../../Zotlabs/Module/Admin.php:2052
msgid "Additional info (optional)"
msgstr "Tilleggsinformasjon (valgfritt)"
-#: ../../mod/admin.php:1675
+#: ../../Zotlabs/Module/Admin.php:2042
msgid "Field definition not found"
msgstr "Feltdefinisjonen ble ikke funnet"
-#: ../../mod/admin.php:1681
+#: ../../Zotlabs/Module/Admin.php:2048
msgid "Edit Profile Field"
msgstr "Endre profilfelt"
-#: ../../mod/poke.php:165
-msgid "Poke somebody"
-msgstr "Dult noen"
-
-#: ../../mod/poke.php:168
-msgid "Poke/Prod"
-msgstr "Prikke/oppildne"
-
-#: ../../mod/poke.php:169
-msgid "Poke, prod or do other things to somebody"
-msgstr "Dult, prikk eller gjør andre ting med noen"
-
-#: ../../mod/poke.php:176
-msgid "Recipient"
-msgstr "Mottaker"
-
-#: ../../mod/poke.php:177
-msgid "Choose what you wish to do to recipient"
-msgstr "Velg hva du ønsker å gjøre med mottakeren"
-
-#: ../../mod/poke.php:180 ../../mod/poke.php:181
-msgid "Make this post private"
-msgstr "Gjør dette innlegget privat"
-
-#: ../../mod/probe.php:24 ../../mod/probe.php:30
-#, php-format
-msgid "Fetching URL returns error: %1$s"
-msgstr "Henting av URL gir følgende feil: %1$s"
-
-#: ../../mod/profile_photo.php:112 ../../mod/cover_photo.php:54
-msgid "Image uploaded but image cropping failed."
-msgstr "Bildet ble lastet opp, men beskjæring av bildet mislyktes."
-
-#: ../../mod/profile_photo.php:166 ../../mod/cover_photo.php:150
-msgid "Image resize failed."
-msgstr "Endring av bildestørrelse mislyktes."
-
-#: ../../mod/profile_photo.php:212
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Hold nede Shift-knappen og last siden på nytt eller tøm nettleserens mellomlager hvis det nye bildet ikke vises umiddelbart."
-
-#: ../../mod/profile_photo.php:250 ../../mod/cover_photo.php:188
-msgid "Image upload failed."
-msgstr "Opplasting av bildet mislyktes."
-
-#: ../../mod/profile_photo.php:269 ../../mod/cover_photo.php:206
-msgid "Unable to process image."
-msgstr "Kan ikke behandle bildet."
-
-#: ../../mod/profile_photo.php:316 ../../mod/profile_photo.php:357
-#: ../../mod/cover_photo.php:299 ../../mod/cover_photo.php:314
-msgid "Photo not available."
-msgstr "Bildet er ikke tilgjengelig."
-
-#: ../../mod/profile_photo.php:398 ../../mod/cover_photo.php:350
-msgid "Upload File:"
-msgstr "Last opp fil:"
-
-#: ../../mod/profile_photo.php:399 ../../mod/cover_photo.php:351
-msgid "Select a profile:"
-msgstr "Velg en profil:"
-
-#: ../../mod/profile_photo.php:400
-msgid "Upload Profile Photo"
-msgstr "Last opp profilbilde:"
-
-#: ../../mod/profile_photo.php:407 ../../mod/settings.php:992
-#: ../../mod/cover_photo.php:357
-msgid "or"
-msgstr "eller"
-
-#: ../../mod/profile_photo.php:407 ../../mod/cover_photo.php:357
-msgid "skip this step"
-msgstr "hopp over dette steget"
-
-#: ../../mod/profile_photo.php:407 ../../mod/cover_photo.php:357
-msgid "select a photo from your photo albums"
-msgstr "velg et bilde fra dine fotoalbum"
-
-#: ../../mod/profile_photo.php:423 ../../mod/cover_photo.php:373
-msgid "Crop Image"
-msgstr "Beskjær bildet"
-
-#: ../../mod/profile_photo.php:424 ../../mod/cover_photo.php:374
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Vennligst juster bildebeskjæringen for optimal visning."
-
-#: ../../mod/profile_photo.php:426 ../../mod/cover_photo.php:376
-msgid "Done Editing"
-msgstr "Avslutt redigering"
-
-#: ../../mod/profiles.php:19 ../../mod/profiles.php:184
-#: ../../mod/profiles.php:241 ../../mod/profiles.php:608
-msgid "Profile not found."
-msgstr "Profilen ble ikke funnet."
-
-#: ../../mod/profiles.php:39
-msgid "Profile deleted."
-msgstr "Profilen er slettet."
-
-#: ../../mod/profiles.php:63 ../../mod/profiles.php:99
-msgid "Profile-"
-msgstr "Profil-"
-
-#: ../../mod/profiles.php:84 ../../mod/profiles.php:127
-msgid "New profile created."
-msgstr "Ny profil opprettet."
-
-#: ../../mod/profiles.php:105
-msgid "Profile unavailable to clone."
-msgstr "Profilen er utilgjengelig for klonen."
-
-#: ../../mod/profiles.php:146
-msgid "Profile unavailable to export."
-msgstr "Profilen er utilgjengelig for eksport."
-
-#: ../../mod/profiles.php:251
-msgid "Profile Name is required."
-msgstr "Profilnavn er påkrevd."
-
-#: ../../mod/profiles.php:414
-msgid "Marital Status"
-msgstr "Sivilstand"
-
-#: ../../mod/profiles.php:418
-msgid "Romantic Partner"
-msgstr "Romantisk partner"
-
-#: ../../mod/profiles.php:422
-msgid "Likes"
-msgstr "Liker"
-
-#: ../../mod/profiles.php:426
-msgid "Dislikes"
-msgstr "Liker ikke"
-
-#: ../../mod/profiles.php:430
-msgid "Work/Employment"
-msgstr "Arbeid/sysselsetting"
-
-#: ../../mod/profiles.php:433
-msgid "Religion"
-msgstr "Religion"
-
-#: ../../mod/profiles.php:437
-msgid "Political Views"
-msgstr "Politiske synspunkter"
-
-#: ../../mod/profiles.php:445
-msgid "Sexual Preference"
-msgstr "Seksuelle preferanser"
-
-#: ../../mod/profiles.php:449
-msgid "Homepage"
-msgstr "Hjemmeside"
-
-#: ../../mod/profiles.php:453
-msgid "Interests"
-msgstr "Interesser"
-
-#: ../../mod/profiles.php:547
-msgid "Profile updated."
-msgstr "Profilen er oppdatert."
-
-#: ../../mod/profiles.php:634
-msgid "Hide your contact/friend list from viewers of this profile?"
-msgstr "Skjul kontakt-/vennelisten din fra de som ser på denne profilen?"
-
-#: ../../mod/profiles.php:674
-msgid "Edit Profile Details"
-msgstr "Endre profildetaljer"
-
-#: ../../mod/profiles.php:676
-msgid "View this profile"
-msgstr "Vis denne profilen"
-
-#: ../../mod/profiles.php:678
-msgid "Change Profile Photo"
-msgstr "Endre profilbilde"
-
-#: ../../mod/profiles.php:679
-msgid "Create a new profile using these settings"
-msgstr "Lag en ny profil ved å bruke disse innstillingene"
-
-#: ../../mod/profiles.php:680
-msgid "Clone this profile"
-msgstr "Klon denne profilen"
-
-#: ../../mod/profiles.php:681
-msgid "Delete this profile"
-msgstr "Slett denne profilen"
-
-#: ../../mod/profiles.php:683
-msgid "Import profile from file"
-msgstr "Importer profil fra fil"
-
-#: ../../mod/profiles.php:684
-msgid "Export profile to file"
-msgstr "Eksporter profil til fil"
-
-#: ../../mod/profiles.php:685
-msgid "Profile Name:"
-msgstr "Profilnavn:"
-
-#: ../../mod/profiles.php:686
-msgid "Your Full Name:"
-msgstr "Ditt fulle navn:"
-
-#: ../../mod/profiles.php:687
-msgid "Title/Description:"
-msgstr "Tittel/Beskrivelse:"
-
-#: ../../mod/profiles.php:688
-msgid "Your Gender:"
-msgstr "Ditt kjønn:"
-
-#: ../../mod/profiles.php:689
-msgid "Birthday :"
-msgstr "Fødselsdag:"
-
-#: ../../mod/profiles.php:690
-msgid "Street Address:"
-msgstr "Gateadresse:"
-
-#: ../../mod/profiles.php:691
-msgid "Locality/City:"
-msgstr "Sted/By:"
-
-#: ../../mod/profiles.php:692
-msgid "Postal/Zip Code:"
-msgstr "Postnummer/ZIP-kode:"
-
-#: ../../mod/profiles.php:693
-msgid "Country:"
-msgstr "Land:"
-
-#: ../../mod/profiles.php:694
-msgid "Region/State:"
-msgstr "Region/fylke:"
-
-#: ../../mod/profiles.php:695
-msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
-msgstr "<span class=\"heart\">&hearts;</span> Sivilstand:"
-
-#: ../../mod/profiles.php:696
-msgid "Who: (if applicable)"
-msgstr "Hvem: (hvis det er aktuelt) "
-
-#: ../../mod/profiles.php:697
-msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
-msgstr "Eksempler: kari123, Kari Villiamsen, kari@example.com"
-
-#: ../../mod/profiles.php:698
-msgid "Since [date]:"
-msgstr "Siden [dato]:"
-
-#: ../../mod/profiles.php:700
-msgid "Homepage URL:"
-msgstr "Hjemmeside URL:"
-
-#: ../../mod/profiles.php:703
-msgid "Religious Views:"
-msgstr "Religiøse synspunkter:"
-
-#: ../../mod/profiles.php:704
-msgid "Keywords:"
-msgstr "Nøkkelord:"
-
-#: ../../mod/profiles.php:707
-msgid "Example: fishing photography software"
-msgstr "Eksempel: fisking fotografering programvare"
-
-#: ../../mod/profiles.php:708
-msgid "Used in directory listings"
-msgstr "Brukt i katalogoppføringer"
-
-#: ../../mod/profiles.php:709
-msgid "Tell us about yourself..."
-msgstr "Fortell oss om deg selv..."
-
-#: ../../mod/profiles.php:710
-msgid "Hobbies/Interests"
-msgstr "Hobbier/Interesser"
-
-#: ../../mod/profiles.php:711
-msgid "Contact information and Social Networks"
-msgstr "Kontaktinformasjon og sosiale nettverk"
-
-#: ../../mod/profiles.php:712
-msgid "My other channels"
-msgstr "Mine andre kanaler"
-
-#: ../../mod/profiles.php:713
-msgid "Musical interests"
-msgstr "Musikkinteresser"
-
-#: ../../mod/profiles.php:714
-msgid "Books, literature"
-msgstr "Bøker, litteratur"
-
-#: ../../mod/profiles.php:715
-msgid "Television"
-msgstr "TV/fjernsyn"
-
-#: ../../mod/profiles.php:716
-msgid "Film/dance/culture/entertainment"
-msgstr "Film/dans/kultur/underholdning"
-
-#: ../../mod/profiles.php:717
-msgid "Love/romance"
-msgstr "Kjærlighet/romantikk"
-
-#: ../../mod/profiles.php:718
-msgid "Work/employment"
-msgstr "Arbeid/sysselsetting"
-
-#: ../../mod/profiles.php:719
-msgid "School/education"
-msgstr "Skole/utdanning"
-
-#: ../../mod/profiles.php:725
-msgid "This is your default profile."
-msgstr "Dette er din standardprofil."
-
-#: ../../mod/profiles.php:736
-msgid "Age: "
-msgstr "Alder:"
-
-#: ../../mod/profiles.php:779
-msgid "Edit/Manage Profiles"
-msgstr "Endre/håndter profiler"
+#: ../../Zotlabs/Module/Admin.php:2106 ../../include/widgets.php:1390
+msgid "Profile Fields"
+msgstr ""
-#: ../../mod/profiles.php:780
-msgid "Add profile things"
-msgstr "Legg til profilting"
+#: ../../Zotlabs/Module/Admin.php:2107
+msgid "Basic Profile Fields"
+msgstr ""
-#: ../../mod/profiles.php:781
-msgid "Include desirable objects in your profile"
-msgstr "Inkluder ønskverdige objekter i din profil"
+#: ../../Zotlabs/Module/Admin.php:2108
+msgid "Advanced Profile Fields"
+msgstr ""
-#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
-msgid "Invalid profile identifier."
-msgstr "Ugyldig profil-identifikator."
+#: ../../Zotlabs/Module/Admin.php:2108
+msgid "(In addition to basic fields)"
+msgstr ""
-#: ../../mod/profperm.php:110
-msgid "Profile Visibility Editor"
-msgstr "Endre profilsynlighet"
+#: ../../Zotlabs/Module/Admin.php:2110
+msgid "All available fields"
+msgstr ""
-#: ../../mod/profperm.php:114
-msgid "Click on a contact to add or remove."
-msgstr "Klikk på en kontakt for å legge til eller fjerne."
+#: ../../Zotlabs/Module/Admin.php:2111
+msgid "Custom Fields"
+msgstr ""
-#: ../../mod/profperm.php:123
-msgid "Visible To"
-msgstr "Synlig for"
+#: ../../Zotlabs/Module/Admin.php:2115
+msgid "Create Custom Field"
+msgstr ""
-#: ../../mod/pubsites.php:21
-msgid ""
-"The listed hubs allow public registration for the $Projectname network. All "
-"hubs in the network are interlinked so membership on any of them conveys "
-"membership in the network as a whole. Some hubs may require subscription or "
-"provide tiered service plans. The hub itself <strong>may</strong> provide "
-"additional details."
-msgstr "Nettstedene på listen tillater offentlig registrering i $Projectname-nettverket. Alle nettsteder i nettverket er forbundet så medlemskap på enhver av dem formidler medlemskap i nettverket som helhet. Noen nettsteder kan kreve abonnement eller tilby lagdelte tjenesteavtaler. Nettstedene selv <strong>kan</strong> gi tilleggsopplysninger."
+#: ../../Zotlabs/Module/Appman.php:37 ../../Zotlabs/Module/Appman.php:53
+msgid "App installed."
+msgstr "App installert."
-#: ../../mod/pubsites.php:27
-msgid "Hub URL"
-msgstr "Nettstedets URL"
+#: ../../Zotlabs/Module/Appman.php:46
+msgid "Malformed app."
+msgstr "Feil oppsett for app-en."
-#: ../../mod/pubsites.php:27
-msgid "Access Type"
-msgstr "Tilgangstype"
+#: ../../Zotlabs/Module/Appman.php:104
+msgid "Embed code"
+msgstr "Innbyggingskode"
-#: ../../mod/pubsites.php:27
-msgid "Registration Policy"
-msgstr "Retningslinjer for registrering"
+#: ../../Zotlabs/Module/Appman.php:110 ../../include/widgets.php:107
+msgid "Edit App"
+msgstr "Endre app"
-#: ../../mod/pubsites.php:33
-msgid "Rate"
-msgstr "Vurder"
+#: ../../Zotlabs/Module/Appman.php:110
+msgid "Create App"
+msgstr "Lag app"
-#: ../../mod/rate.php:158
-msgid "Website:"
-msgstr "Nettsted:"
+#: ../../Zotlabs/Module/Appman.php:115
+msgid "Name of app"
+msgstr "Navn på app"
-#: ../../mod/rate.php:161
-#, php-format
-msgid "Remote Channel [%s] (not yet known on this site)"
-msgstr "Fjerntliggende kanal [%s] (foreløpig ikke kjent på dette nettstedet)"
+#: ../../Zotlabs/Module/Appman.php:116
+msgid "Location (URL) of app"
+msgstr "Plassering (URL) til app"
-#: ../../mod/rate.php:162
-msgid "Rating (this information is public)"
-msgstr "Vurdering (denne informasjonen er offentlig)"
+#: ../../Zotlabs/Module/Appman.php:118
+msgid "Photo icon URL"
+msgstr "Bildeikon URL"
-#: ../../mod/rate.php:163
-msgid "Optionally explain your rating (this information is public)"
-msgstr "Velg om du vil forklare din vurdering (denne informasjonen er offentlig)"
+#: ../../Zotlabs/Module/Appman.php:118
+msgid "80 x 80 pixels - optional"
+msgstr "80 x80 pixler - valgfritt"
-#: ../../mod/ratings.php:69
-msgid "No ratings"
-msgstr "Ingen vurderinger"
+#: ../../Zotlabs/Module/Appman.php:119
+msgid "Categories (optional, comma separated list)"
+msgstr ""
-#: ../../mod/ratings.php:100
-msgid "Rating: "
-msgstr "Vurdering:"
+#: ../../Zotlabs/Module/Appman.php:120
+msgid "Version ID"
+msgstr "Versjons-ID"
-#: ../../mod/ratings.php:101
-msgid "Website: "
-msgstr "Nettsted:"
+#: ../../Zotlabs/Module/Appman.php:121
+msgid "Price of app"
+msgstr "Pris på app"
-#: ../../mod/ratings.php:103
-msgid "Description: "
-msgstr "Beskrivelse:"
+#: ../../Zotlabs/Module/Appman.php:122
+msgid "Location (URL) to purchase app"
+msgstr "Plassering (URL) for å kjøpe app"
-#: ../../mod/rbmark.php:90
+#: ../../Zotlabs/Module/Rbmark.php:94
msgid "Select a bookmark folder"
msgstr "Velg en bokmerkemappe"
-#: ../../mod/rbmark.php:95
+#: ../../Zotlabs/Module/Rbmark.php:99
msgid "Save Bookmark"
msgstr "Lagre bokmerke"
-#: ../../mod/rbmark.php:96
+#: ../../Zotlabs/Module/Rbmark.php:100
msgid "URL of bookmark"
msgstr "URL-en til bokmerket"
-#: ../../mod/rbmark.php:101
+#: ../../Zotlabs/Module/Rbmark.php:105
msgid "Or enter new bookmark folder name"
msgstr "Eller skriv nytt navn på bokmerkemappe"
-#: ../../mod/register.php:45
+#: ../../Zotlabs/Module/Register.php:49
msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
msgstr "Antallet daglige registreringer ved nettstedet er overskredet. Vær vennlig å prøve igjen imorgen."
-#: ../../mod/register.php:51
+#: ../../Zotlabs/Module/Register.php:55
msgid ""
"Please indicate acceptance of the Terms of Service. Registration failed."
msgstr "Vennligst angi at tjenesteavtalen er akseptert. Registrering mislyktes."
-#: ../../mod/register.php:85
+#: ../../Zotlabs/Module/Register.php:89
msgid "Passwords do not match."
msgstr "Passordene er ikke like."
-#: ../../mod/register.php:127
+#: ../../Zotlabs/Module/Register.php:131
msgid ""
"Registration successful. Please check your email for validation "
"instructions."
msgstr "Registreringen er vellykket. Vennligst sjekk e-posten din for å bekrefte opprettelsen."
-#: ../../mod/register.php:133
+#: ../../Zotlabs/Module/Register.php:137
msgid "Your registration is pending approval by the site owner."
msgstr "Din registrering venter på godkjenning av nettstedets eier."
-#: ../../mod/register.php:136
+#: ../../Zotlabs/Module/Register.php:140
msgid "Your registration can not be processed."
msgstr "Din registrering kan ikke behandles."
-#: ../../mod/register.php:180
+#: ../../Zotlabs/Module/Register.php:184
msgid "Registration on this hub is disabled."
msgstr "Registrering ved dette nettstedet er skrudd av."
-#: ../../mod/register.php:189
+#: ../../Zotlabs/Module/Register.php:193
msgid "Registration on this hub is by approval only."
msgstr "Registrering ved dette nettstedet skjer på godkjenning."
-#: ../../mod/register.php:190
+#: ../../Zotlabs/Module/Register.php:194
msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>"
msgstr "<a href=\"pubsites\">Registrer ved et annet tilsluttet nettsted.</a>"
-#: ../../mod/register.php:200
+#: ../../Zotlabs/Module/Register.php:204
msgid ""
"This site has exceeded the number of allowed daily account registrations. "
"Please try again tomorrow."
msgstr "Dette nettstedet har overskredet antallet tillate kontoregistreringer per dag. Vennligst prøv igjen imorgen."
-#: ../../mod/register.php:211
+#: ../../Zotlabs/Module/Register.php:215
msgid "Terms of Service"
msgstr "Tjenesteavtale"
-#: ../../mod/register.php:217
+#: ../../Zotlabs/Module/Register.php:221
#, php-format
msgid "I accept the %s for this website"
msgstr "Jeg godtar %s for dette nettstedet"
-#: ../../mod/register.php:219
+#: ../../Zotlabs/Module/Register.php:223
#, php-format
msgid "I am over 13 years of age and accept the %s for this website"
msgstr "Jeg er over 13 år gammel og aksepterer %s for dette nettstedet."
-#: ../../mod/register.php:223
+#: ../../Zotlabs/Module/Register.php:227
msgid "Your email address"
msgstr "Din e-postadresse"
-#: ../../mod/register.php:224
+#: ../../Zotlabs/Module/Register.php:228
msgid "Choose a password"
msgstr "Velg et passord"
-#: ../../mod/register.php:225
+#: ../../Zotlabs/Module/Register.php:229
msgid "Please re-enter your password"
msgstr "Vennligst skriv ditt passord en gang til"
-#: ../../mod/register.php:226
+#: ../../Zotlabs/Module/Register.php:230
msgid "Please enter your invitation code"
msgstr "Vennligst skriv din invitasjonskode"
-#: ../../mod/register.php:232
+#: ../../Zotlabs/Module/Register.php:236
msgid "no"
msgstr "nei"
-#: ../../mod/register.php:232
+#: ../../Zotlabs/Module/Register.php:236
msgid "yes"
msgstr "ja"
-#: ../../mod/register.php:246
+#: ../../Zotlabs/Module/Register.php:250
msgid "Membership on this site is by invitation only."
msgstr "Medlemskap ved dette nettstedet skjer kun via invitasjon."
-#: ../../mod/register.php:258
+#: ../../Zotlabs/Module/Register.php:262 ../../include/nav.php:147
+#: ../../boot.php:1685
+msgid "Register"
+msgstr "Registrer"
+
+#: ../../Zotlabs/Module/Register.php:262
msgid "Proceed to create your first channel"
msgstr "Gå videre for å lage din første kanal"
-#: ../../mod/regmod.php:11
+#: ../../Zotlabs/Module/Regmod.php:15
msgid "Please login."
msgstr "Vennligst logg inn."
-#: ../../mod/removeaccount.php:30
+#: ../../Zotlabs/Module/Removeaccount.php:34
msgid ""
"Account removals are not allowed within 48 hours of changing the account "
"password."
msgstr "Sletting av kontoer er ikke tillatt innen 48 timer etter endring av kontopassordet."
-#: ../../mod/removeaccount.php:57
+#: ../../Zotlabs/Module/Removeaccount.php:56
msgid "Remove This Account"
msgstr "Slett denne kontoen"
-#: ../../mod/removeaccount.php:58 ../../mod/removeme.php:58
+#: ../../Zotlabs/Module/Removeaccount.php:57
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "WARNING: "
msgstr "ADVARSEL:"
-#: ../../mod/removeaccount.php:58
+#: ../../Zotlabs/Module/Removeaccount.php:57
msgid ""
"This account and all its channels will be completely removed from the "
"network. "
msgstr "Denne kontoen og alle dens kanaler vil bli fullstendig fjernet fra nettverket."
-#: ../../mod/removeaccount.php:58 ../../mod/removeme.php:58
+#: ../../Zotlabs/Module/Removeaccount.php:57
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "This action is permanent and can not be undone!"
msgstr "Denne handlingen er permanent og kan ikke angres!"
-#: ../../mod/removeaccount.php:59 ../../mod/removeme.php:59
+#: ../../Zotlabs/Module/Removeaccount.php:58
+#: ../../Zotlabs/Module/Removeme.php:60
msgid "Please enter your password for verification:"
msgstr "Vennligst skriv ditt passord for å få bekreftelse:"
-#: ../../mod/removeaccount.php:60
+#: ../../Zotlabs/Module/Removeaccount.php:59
msgid ""
"Remove this account, all its channels and all its channel clones from the "
"network"
msgstr "Slett denne kontoen, alle dens kanaler og alle dens kanalkloner fra dette nettverket"
-#: ../../mod/removeaccount.php:60
+#: ../../Zotlabs/Module/Removeaccount.php:59
msgid ""
"By default only the instances of the channels located on this hub will be "
"removed from the network"
msgstr "Som standard vil bare forekomster av kanalene lokalisert på denne hubben bli slettet fra nettverket"
-#: ../../mod/removeaccount.php:61 ../../mod/settings.php:712
+#: ../../Zotlabs/Module/Removeaccount.php:60
+#: ../../Zotlabs/Module/Settings.php:705
msgid "Remove Account"
msgstr "Slett konto"
-#: ../../mod/removeme.php:29
+#: ../../Zotlabs/Module/Removeme.php:33
msgid ""
"Channel removals are not allowed within 48 hours of changing the account "
"password."
msgstr "Fjerning av kanaler er ikke tillatt innen 48 timer etter endring av kontopassordet."
-#: ../../mod/removeme.php:57
+#: ../../Zotlabs/Module/Removeme.php:58
msgid "Remove This Channel"
msgstr "Fjern denne kanalen"
-#: ../../mod/removeme.php:58
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "This channel will be completely removed from the network. "
msgstr "Denne kanalen vil bli fullstendig fjernet fra nettverket."
-#: ../../mod/removeme.php:60
+#: ../../Zotlabs/Module/Removeme.php:61
msgid "Remove this channel and all its clones from the network"
msgstr "Fjern denne kanalen og alle dens kloner fra nettverket"
-#: ../../mod/removeme.php:60
+#: ../../Zotlabs/Module/Removeme.php:61
msgid ""
"By default only the instance of the channel located on this hub will be "
"removed from the network"
msgstr "Som standard vil bare forekomsten av denne kanalen lokalisert på denne hubben bli fjernet fra nettverket"
-#: ../../mod/removeme.php:61 ../../mod/settings.php:1131
+#: ../../Zotlabs/Module/Removeme.php:62 ../../Zotlabs/Module/Settings.php:1124
msgid "Remove Channel"
msgstr "Fjern kanal"
-#: ../../mod/rmagic.php:40
+#: ../../Zotlabs/Module/Rmagic.php:44
msgid ""
"We encountered a problem while logging in with the OpenID you provided. "
"Please check the correct spelling of the ID."
msgstr "Vi støtte på et problem under innloggingen med din OpenID. Vennligst sjekk at ID-en er stavet riktig."
-#: ../../mod/rmagic.php:40
+#: ../../Zotlabs/Module/Rmagic.php:44
msgid "The error message was:"
msgstr "Feilmeldingen var:"
-#: ../../mod/rmagic.php:44
+#: ../../Zotlabs/Module/Rmagic.php:48
msgid "Authentication failed."
msgstr "Autentisering mislyktes."
-#: ../../mod/rmagic.php:84
+#: ../../Zotlabs/Module/Rmagic.php:88
msgid "Remote Authentication"
msgstr "Fjernautentisering"
-#: ../../mod/rmagic.php:85
+#: ../../Zotlabs/Module/Rmagic.php:89
msgid "Enter your channel address (e.g. channel@example.com)"
msgstr "Skriv din kanaladresse (for eksempel channel@exampel.com)"
-#: ../../mod/rmagic.php:86
+#: ../../Zotlabs/Module/Rmagic.php:90
msgid "Authenticate"
msgstr "Autentiser"
-#: ../../mod/search.php:212
+#: ../../Zotlabs/Module/Search.php:216
#, php-format
msgid "Items tagged with: %s"
msgstr "Elementer merket med: %s"
-#: ../../mod/search.php:214
+#: ../../Zotlabs/Module/Search.php:218
#, php-format
msgid "Search results for: %s"
msgstr "Søkeresultater for: %s"
-#: ../../mod/service_limits.php:19
+#: ../../Zotlabs/Module/Service_limits.php:23
msgid "No service class restrictions found."
msgstr "Ingen restriksjoner er funnet i tjenesteklasse."
-#: ../../mod/settings.php:76
+#: ../../Zotlabs/Module/Settings.php:69
msgid "Name is required"
msgstr "Navn er påkrevd"
-#: ../../mod/settings.php:80
+#: ../../Zotlabs/Module/Settings.php:73
msgid "Key and Secret are required"
msgstr "Nøkkel og hemmelighet er påkrevd"
-#: ../../mod/settings.php:232
+#: ../../Zotlabs/Module/Settings.php:225
msgid "Not valid email."
msgstr "Ikke gyldig e-post."
-#: ../../mod/settings.php:235
+#: ../../Zotlabs/Module/Settings.php:228
msgid "Protected email address. Cannot change to that email."
msgstr "Beskyttet e-postadresse. Kan ikke endre til den e-postadressen."
-#: ../../mod/settings.php:244
+#: ../../Zotlabs/Module/Settings.php:237
msgid "System failure storing new email. Please try again."
msgstr "Systemfeil ved lagring av ny e-post. Vennligst prøv igjen."
-#: ../../mod/settings.php:261
+#: ../../Zotlabs/Module/Settings.php:254
msgid "Password verification failed."
msgstr "Passordbekreftelsen mislyktes."
-#: ../../mod/settings.php:268
+#: ../../Zotlabs/Module/Settings.php:261
msgid "Passwords do not match. Password unchanged."
msgstr "Passordene stemmer ikke overens. Passord uforandret."
-#: ../../mod/settings.php:272
+#: ../../Zotlabs/Module/Settings.php:265
msgid "Empty passwords are not allowed. Password unchanged."
msgstr "Tomme passord er ikke tillatt. Passord uforandret."
-#: ../../mod/settings.php:286
+#: ../../Zotlabs/Module/Settings.php:279
msgid "Password changed."
msgstr "Passord endret."
-#: ../../mod/settings.php:288
+#: ../../Zotlabs/Module/Settings.php:281
msgid "Password update failed. Please try again."
msgstr "Passord oppdatering mislyktes. Vennligst prøv igjen."
-#: ../../mod/settings.php:532
+#: ../../Zotlabs/Module/Settings.php:525
msgid "Settings updated."
msgstr "Innstillinger oppdatert."
-#: ../../mod/settings.php:596 ../../mod/settings.php:622
-#: ../../mod/settings.php:658
+#: ../../Zotlabs/Module/Settings.php:589 ../../Zotlabs/Module/Settings.php:615
+#: ../../Zotlabs/Module/Settings.php:651
msgid "Add application"
msgstr "Legg til program"
-#: ../../mod/settings.php:599
+#: ../../Zotlabs/Module/Settings.php:592
msgid "Name of application"
msgstr "Navn på program"
-#: ../../mod/settings.php:600 ../../mod/settings.php:626
+#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:619
msgid "Consumer Key"
msgstr "Consumer Key"
-#: ../../mod/settings.php:600 ../../mod/settings.php:601
+#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:594
msgid "Automatically generated - change if desired. Max length 20"
msgstr "Automatisk laget - kan endres om du vil. Største lengde 20"
-#: ../../mod/settings.php:601 ../../mod/settings.php:627
+#: ../../Zotlabs/Module/Settings.php:594 ../../Zotlabs/Module/Settings.php:620
msgid "Consumer Secret"
msgstr "Consumer Secret"
-#: ../../mod/settings.php:602 ../../mod/settings.php:628
+#: ../../Zotlabs/Module/Settings.php:595 ../../Zotlabs/Module/Settings.php:621
msgid "Redirect"
msgstr "Omdirigering"
-#: ../../mod/settings.php:602
+#: ../../Zotlabs/Module/Settings.php:595
msgid ""
"Redirect URI - leave blank unless your application specifically requires "
"this"
msgstr "Omdirigerings-URI - la stå tomt hvis ikke ditt program spesifikt krever dette"
-#: ../../mod/settings.php:603 ../../mod/settings.php:629
+#: ../../Zotlabs/Module/Settings.php:596 ../../Zotlabs/Module/Settings.php:622
msgid "Icon url"
msgstr "Ikon-URL"
-#: ../../mod/settings.php:603
+#: ../../Zotlabs/Module/Settings.php:596 ../../Zotlabs/Module/Sources.php:112
+#: ../../Zotlabs/Module/Sources.php:147
msgid "Optional"
msgstr "Valgfritt"
-#: ../../mod/settings.php:614
+#: ../../Zotlabs/Module/Settings.php:607
msgid "Application not found."
msgstr "Programmet ble ikke funnet."
-#: ../../mod/settings.php:657
+#: ../../Zotlabs/Module/Settings.php:650
msgid "Connected Apps"
msgstr "Tilkoblede app-er"
-#: ../../mod/settings.php:661
+#: ../../Zotlabs/Module/Settings.php:654
msgid "Client key starts with"
msgstr "Klientnøkkel starter med"
-#: ../../mod/settings.php:662
+#: ../../Zotlabs/Module/Settings.php:655
msgid "No name"
msgstr "Ikke noe navn"
-#: ../../mod/settings.php:663
+#: ../../Zotlabs/Module/Settings.php:656
msgid "Remove authorization"
msgstr "Fjern tillatelse"
-#: ../../mod/settings.php:676
+#: ../../Zotlabs/Module/Settings.php:669
msgid "No feature settings configured"
msgstr "Ingen funksjonsinnstillinger er konfigurert"
-#: ../../mod/settings.php:683
+#: ../../Zotlabs/Module/Settings.php:676
msgid "Feature/Addon Settings"
msgstr "Funksjons-/Tilleggsinnstillinger"
-#: ../../mod/settings.php:706
+#: ../../Zotlabs/Module/Settings.php:699
msgid "Account Settings"
msgstr "Kontoinnstillinger"
-#: ../../mod/settings.php:707
+#: ../../Zotlabs/Module/Settings.php:700
msgid "Current Password"
msgstr "Nåværende passord"
-#: ../../mod/settings.php:708
+#: ../../Zotlabs/Module/Settings.php:701
msgid "Enter New Password"
msgstr "Skriv nytt passord"
-#: ../../mod/settings.php:709
+#: ../../Zotlabs/Module/Settings.php:702
msgid "Confirm New Password"
msgstr "Bekreft nytt passord"
-#: ../../mod/settings.php:709
+#: ../../Zotlabs/Module/Settings.php:702
msgid "Leave password fields blank unless changing"
msgstr "La passordfeltene stå blanke om det ikke skal endres"
-#: ../../mod/settings.php:711 ../../mod/settings.php:1048
+#: ../../Zotlabs/Module/Settings.php:704
+#: ../../Zotlabs/Module/Settings.php:1041
msgid "Email Address:"
msgstr "E-postadresse:"
-#: ../../mod/settings.php:713
+#: ../../Zotlabs/Module/Settings.php:706
msgid "Remove this account including all its channels"
msgstr "Slett denne kontoen inkludert alle dens kanaler"
-#: ../../mod/settings.php:736
+#: ../../Zotlabs/Module/Settings.php:729
msgid "Additional Features"
msgstr "Ekstra funksjoner"
-#: ../../mod/settings.php:760
+#: ../../Zotlabs/Module/Settings.php:753
msgid "Connector Settings"
msgstr "Koblingsinnstillinger"
-#: ../../mod/settings.php:799
+#: ../../Zotlabs/Module/Settings.php:792
msgid "No special theme for mobile devices"
msgstr "Ikke noe spesielt tema for mobile enheter"
-#: ../../mod/settings.php:802
+#: ../../Zotlabs/Module/Settings.php:795
#, php-format
msgid "%s - (Experimental)"
msgstr "%s - (Eksperimentelt)"
-#: ../../mod/settings.php:844
+#: ../../Zotlabs/Module/Settings.php:837
msgid "Display Settings"
msgstr "Visningsinnstillinger"
-#: ../../mod/settings.php:845
+#: ../../Zotlabs/Module/Settings.php:838
msgid "Theme Settings"
msgstr "Temainnstillinger"
-#: ../../mod/settings.php:846
+#: ../../Zotlabs/Module/Settings.php:839
msgid "Custom Theme Settings"
msgstr "Tilpassede temainnstillinger"
-#: ../../mod/settings.php:847
+#: ../../Zotlabs/Module/Settings.php:840
msgid "Content Settings"
msgstr "Innholdsinnstillinger"
-#: ../../mod/settings.php:853
+#: ../../Zotlabs/Module/Settings.php:846
msgid "Display Theme:"
msgstr "Visningstema:"
-#: ../../mod/settings.php:854
+#: ../../Zotlabs/Module/Settings.php:847
msgid "Mobile Theme:"
msgstr "Mobiltema:"
-#: ../../mod/settings.php:855
+#: ../../Zotlabs/Module/Settings.php:848
msgid "Preload images before rendering the page"
msgstr "Last inn bildene før gjengivelsen av siden"
-#: ../../mod/settings.php:855
+#: ../../Zotlabs/Module/Settings.php:848
msgid ""
"The subjective page load time will be longer but the page will be ready when"
" displayed"
msgstr "Den personlige opplevelsen av lastetiden vil være lenger, men siden vil være klar når den vises"
-#: ../../mod/settings.php:856
+#: ../../Zotlabs/Module/Settings.php:849
msgid "Enable user zoom on mobile devices"
msgstr "Skru på brukerstyrt zoom på mobile enheter"
-#: ../../mod/settings.php:857
+#: ../../Zotlabs/Module/Settings.php:850
msgid "Update browser every xx seconds"
msgstr "Oppdater nettleser hvert xx sekunder"
-#: ../../mod/settings.php:857
+#: ../../Zotlabs/Module/Settings.php:850
msgid "Minimum of 10 seconds, no maximum"
msgstr "Minimum 10 sekunder, ikke noe maksimum"
-#: ../../mod/settings.php:858
+#: ../../Zotlabs/Module/Settings.php:851
msgid "Maximum number of conversations to load at any time:"
msgstr "Maksimalt antall samtaler å laste samtidig:"
-#: ../../mod/settings.php:858
+#: ../../Zotlabs/Module/Settings.php:851
msgid "Maximum of 100 items"
msgstr "Maksimum 100 elementer"
-#: ../../mod/settings.php:859
+#: ../../Zotlabs/Module/Settings.php:852
msgid "Show emoticons (smilies) as images"
msgstr "Vis emoticons (smilefjes) som bilder"
-#: ../../mod/settings.php:860
+#: ../../Zotlabs/Module/Settings.php:853
msgid "Link post titles to source"
msgstr "Lenk innleggets tittel til kilden"
-#: ../../mod/settings.php:861
+#: ../../Zotlabs/Module/Settings.php:854
msgid "System Page Layout Editor - (advanced)"
msgstr "Systemsidens layoutbehandler - (avansert)"
-#: ../../mod/settings.php:864
+#: ../../Zotlabs/Module/Settings.php:857
msgid "Use blog/list mode on channel page"
msgstr "Bruk blogg-/listemodus på kanalsiden"
-#: ../../mod/settings.php:864 ../../mod/settings.php:865
+#: ../../Zotlabs/Module/Settings.php:857 ../../Zotlabs/Module/Settings.php:858
msgid "(comments displayed separately)"
msgstr "(kommentarer vist separat)"
-#: ../../mod/settings.php:865
+#: ../../Zotlabs/Module/Settings.php:858
msgid "Use blog/list mode on grid page"
msgstr "Bruk blogg-/liste-modus på nettverkssiden"
-#: ../../mod/settings.php:866
+#: ../../Zotlabs/Module/Settings.php:859
msgid "Channel page max height of content (in pixels)"
msgstr "Kanalsidens makshøyde for innhold (i pixler)"
-#: ../../mod/settings.php:866 ../../mod/settings.php:867
+#: ../../Zotlabs/Module/Settings.php:859 ../../Zotlabs/Module/Settings.php:860
msgid "click to expand content exceeding this height"
msgstr "klikk for å utvide innhold som overstiger denne høyden"
-#: ../../mod/settings.php:867
+#: ../../Zotlabs/Module/Settings.php:860
msgid "Grid page max height of content (in pixels)"
msgstr "Nettverkssidens makshøyde for innhold (i piksler)"
-#: ../../mod/settings.php:901
+#: ../../Zotlabs/Module/Settings.php:894
msgid "Nobody except yourself"
msgstr "Ingen unntatt deg selv"
-#: ../../mod/settings.php:902
+#: ../../Zotlabs/Module/Settings.php:895
msgid "Only those you specifically allow"
msgstr "Bare de du spesifikt tillater"
-#: ../../mod/settings.php:903
+#: ../../Zotlabs/Module/Settings.php:896
msgid "Approved connections"
msgstr "Godkjente forbindelser"
-#: ../../mod/settings.php:904
+#: ../../Zotlabs/Module/Settings.php:897
msgid "Any connections"
msgstr "Enhver forbindelse"
-#: ../../mod/settings.php:905
+#: ../../Zotlabs/Module/Settings.php:898
msgid "Anybody on this website"
msgstr "Enhver ved dette nettstedet"
-#: ../../mod/settings.php:906
+#: ../../Zotlabs/Module/Settings.php:899
msgid "Anybody in this network"
msgstr "Enhver i dette nettverket"
-#: ../../mod/settings.php:907
+#: ../../Zotlabs/Module/Settings.php:900
msgid "Anybody authenticated"
msgstr "Enhver som er autentisert"
-#: ../../mod/settings.php:908
+#: ../../Zotlabs/Module/Settings.php:901
msgid "Anybody on the internet"
msgstr "Enhver på Internett"
-#: ../../mod/settings.php:983
+#: ../../Zotlabs/Module/Settings.php:976
msgid "Publish your default profile in the network directory"
msgstr "Publiser din standardprofil i nettverkskatalogen"
-#: ../../mod/settings.php:988
+#: ../../Zotlabs/Module/Settings.php:981
msgid "Allow us to suggest you as a potential friend to new members?"
msgstr "Tillat oss å foreslå deg som en mulig venn til nye medlemmer?"
-#: ../../mod/settings.php:997
+#: ../../Zotlabs/Module/Settings.php:990
msgid "Your channel address is"
msgstr "Din kanaladresse er"
-#: ../../mod/settings.php:1039
+#: ../../Zotlabs/Module/Settings.php:1032
msgid "Channel Settings"
msgstr "Kanalinnstillinger"
-#: ../../mod/settings.php:1046
+#: ../../Zotlabs/Module/Settings.php:1039
msgid "Basic Settings"
msgstr "Grunninnstillinger"
-#: ../../mod/settings.php:1049
+#: ../../Zotlabs/Module/Settings.php:1040 ../../include/channel.php:1140
+msgid "Full Name:"
+msgstr "Fullt navn:"
+
+#: ../../Zotlabs/Module/Settings.php:1042
msgid "Your Timezone:"
msgstr "Din tidssone:"
-#: ../../mod/settings.php:1050
+#: ../../Zotlabs/Module/Settings.php:1043
msgid "Default Post Location:"
msgstr "Standard plassering ved innlegg:"
-#: ../../mod/settings.php:1050
+#: ../../Zotlabs/Module/Settings.php:1043
msgid "Geographical location to display on your posts"
msgstr "Geografisk plassering som vises på dine innlegg"
-#: ../../mod/settings.php:1051
+#: ../../Zotlabs/Module/Settings.php:1044
msgid "Use Browser Location:"
msgstr "Bruk nettleseren sin plassering:"
-#: ../../mod/settings.php:1053
+#: ../../Zotlabs/Module/Settings.php:1046
msgid "Adult Content"
msgstr "Voksent innhold"
-#: ../../mod/settings.php:1053
+#: ../../Zotlabs/Module/Settings.php:1046
msgid ""
"This channel frequently or regularly publishes adult content. (Please tag "
"any adult material and/or nudity with #NSFW)"
msgstr "Denne kanalen vil ofte eller jevnlig publisere voksent innhold. (Vennligst merk alt voksent materiale og/eller nakenhet med #NSFW)"
-#: ../../mod/settings.php:1055
+#: ../../Zotlabs/Module/Settings.php:1048
msgid "Security and Privacy Settings"
msgstr "Sikkerhets- og personverninnstillinger"
-#: ../../mod/settings.php:1058
+#: ../../Zotlabs/Module/Settings.php:1051
msgid "Your permissions are already configured. Click to view/adjust"
msgstr "Dine tillatelser er allerede satt. Klikk for å se/justere."
-#: ../../mod/settings.php:1060
+#: ../../Zotlabs/Module/Settings.php:1053
msgid "Hide my online presence"
msgstr "Skjul min tilstedeværelse online"
-#: ../../mod/settings.php:1060
+#: ../../Zotlabs/Module/Settings.php:1053
msgid "Prevents displaying in your profile that you are online"
msgstr "Forhindrer visning på din profil av at du er online "
-#: ../../mod/settings.php:1062
+#: ../../Zotlabs/Module/Settings.php:1055
msgid "Simple Privacy Settings:"
msgstr "Enkle personverninnstillinger:"
-#: ../../mod/settings.php:1063
+#: ../../Zotlabs/Module/Settings.php:1056
msgid ""
"Very Public - <em>extremely permissive (should be used with caution)</em>"
msgstr "Svært offentlig - <em>ekstremt åpent (bør brukes med varsomhet)</em>"
-#: ../../mod/settings.php:1064
+#: ../../Zotlabs/Module/Settings.php:1057
msgid ""
"Typical - <em>default public, privacy when desired (similar to social "
"network permissions but with improved privacy)</em>"
msgstr "Typisk - <em>standard er offentlig, personvern når ønsket (likner på tillatelser i sosiale nettverk, men med forbedret personvern)</em>"
-#: ../../mod/settings.php:1065
+#: ../../Zotlabs/Module/Settings.php:1058
msgid "Private - <em>default private, never open or public</em>"
msgstr "Privat - <em>standard er privat, aldri åpen eller offentlig</em>"
-#: ../../mod/settings.php:1066
+#: ../../Zotlabs/Module/Settings.php:1059
msgid "Blocked - <em>default blocked to/from everybody</em>"
msgstr "Blokkert - <em>standard blokkert til/fra alle</em>"
-#: ../../mod/settings.php:1068
+#: ../../Zotlabs/Module/Settings.php:1061
msgid "Allow others to tag your posts"
msgstr "Tillat andre å merke dine innlegg"
-#: ../../mod/settings.php:1068
+#: ../../Zotlabs/Module/Settings.php:1061
msgid ""
"Often used by the community to retro-actively flag inappropriate content"
msgstr "Ofte brukt av fellesskapet for å merke upassende innhold i etterkant"
-#: ../../mod/settings.php:1070
+#: ../../Zotlabs/Module/Settings.php:1063
msgid "Advanced Privacy Settings"
msgstr "Avanserte personverninnstillinger"
-#: ../../mod/settings.php:1072
+#: ../../Zotlabs/Module/Settings.php:1065
msgid "Expire other channel content after this many days"
msgstr "Annet kanal innhold utløper etter så mange dager"
-#: ../../mod/settings.php:1072
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "0 or blank to use the website limit."
+msgstr ""
+
+#: ../../Zotlabs/Module/Settings.php:1065
#, php-format
-msgid ""
-"0 or blank to use the website limit. The website expires after %d days."
-msgstr "0 eller ikke noe for å bruke nettstedets grense. Nettstedet utløper etter %d dager."
+msgid "This website expires after %d days."
+msgstr ""
+
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "This website does not expire imported content."
+msgstr ""
+
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "The website limit takes precedence if lower than your limit."
+msgstr ""
-#: ../../mod/settings.php:1073
+#: ../../Zotlabs/Module/Settings.php:1066
msgid "Maximum Friend Requests/Day:"
msgstr "Maksimalt antall venneforespørsler per dag:"
-#: ../../mod/settings.php:1073
+#: ../../Zotlabs/Module/Settings.php:1066
msgid "May reduce spam activity"
msgstr "Kan redusere søppelpostaktivitet"
-#: ../../mod/settings.php:1074
-msgid "Default Post Permissions"
-msgstr "Standard innleggstillatelser"
+#: ../../Zotlabs/Module/Settings.php:1067
+msgid "Default Post and Publish Permissions"
+msgstr ""
+
+#: ../../Zotlabs/Module/Settings.php:1069
+msgid "Use my default audience setting for the type of object published"
+msgstr ""
-#: ../../mod/settings.php:1079
+#: ../../Zotlabs/Module/Settings.php:1072
msgid "Channel permissions category:"
msgstr "Kategori med kanaltillatelser:"
-#: ../../mod/settings.php:1085
+#: ../../Zotlabs/Module/Settings.php:1078
msgid "Maximum private messages per day from unknown people:"
msgstr "Maksimalt antall private meldinger per dag fra ukjente personer:"
-#: ../../mod/settings.php:1085
+#: ../../Zotlabs/Module/Settings.php:1078
msgid "Useful to reduce spamming"
msgstr "Nyttig for å redusere søppelpost"
-#: ../../mod/settings.php:1088
+#: ../../Zotlabs/Module/Settings.php:1081
msgid "Notification Settings"
msgstr "Varslingsinnstillinger"
-#: ../../mod/settings.php:1089
+#: ../../Zotlabs/Module/Settings.php:1082
msgid "By default post a status message when:"
msgstr "Legg inn en statusmelding når du:"
-#: ../../mod/settings.php:1090
+#: ../../Zotlabs/Module/Settings.php:1083
msgid "accepting a friend request"
msgstr "aksepterer en venneforespørsel"
-#: ../../mod/settings.php:1091
+#: ../../Zotlabs/Module/Settings.php:1084
msgid "joining a forum/community"
msgstr "blir med i et forum/miljø"
-#: ../../mod/settings.php:1092
+#: ../../Zotlabs/Module/Settings.php:1085
msgid "making an <em>interesting</em> profile change"
msgstr "gjør en <em>interessant</em> profilendring"
-#: ../../mod/settings.php:1093
+#: ../../Zotlabs/Module/Settings.php:1086
msgid "Send a notification email when:"
msgstr "Send en varsel-e-post når:"
-#: ../../mod/settings.php:1094
+#: ../../Zotlabs/Module/Settings.php:1087
msgid "You receive a connection request"
msgstr "Du har mottatt en forespørsel om forbindelse"
-#: ../../mod/settings.php:1095
+#: ../../Zotlabs/Module/Settings.php:1088
msgid "Your connections are confirmed"
msgstr "Dine forbindelser er bekreftet"
-#: ../../mod/settings.php:1096
+#: ../../Zotlabs/Module/Settings.php:1089
msgid "Someone writes on your profile wall"
msgstr "Noen skriver på din profilvegg"
-#: ../../mod/settings.php:1097
+#: ../../Zotlabs/Module/Settings.php:1090
msgid "Someone writes a followup comment"
msgstr "Noen skriver en oppfølgende kommentar"
-#: ../../mod/settings.php:1098
+#: ../../Zotlabs/Module/Settings.php:1091
msgid "You receive a private message"
msgstr "Du mottar en privat melding"
-#: ../../mod/settings.php:1099
+#: ../../Zotlabs/Module/Settings.php:1092
msgid "You receive a friend suggestion"
msgstr "Du mottok et venneforslag"
-#: ../../mod/settings.php:1100
+#: ../../Zotlabs/Module/Settings.php:1093
msgid "You are tagged in a post"
msgstr "Du merkes i et innlegg"
-#: ../../mod/settings.php:1101
+#: ../../Zotlabs/Module/Settings.php:1094
msgid "You are poked/prodded/etc. in a post"
msgstr "Du ble prikket/oppildnet/og så vider i et innlegg"
-#: ../../mod/settings.php:1104
+#: ../../Zotlabs/Module/Settings.php:1097
msgid "Show visual notifications including:"
msgstr "Vis visuelle varslinger om:"
-#: ../../mod/settings.php:1106
+#: ../../Zotlabs/Module/Settings.php:1099
msgid "Unseen grid activity"
msgstr "Usett nettverksaktivitet"
-#: ../../mod/settings.php:1107
+#: ../../Zotlabs/Module/Settings.php:1100
msgid "Unseen channel activity"
msgstr "Usett kanalaktivitet"
-#: ../../mod/settings.php:1108
+#: ../../Zotlabs/Module/Settings.php:1101
msgid "Unseen private messages"
msgstr "Usette private meldinger"
-#: ../../mod/settings.php:1108 ../../mod/settings.php:1113
-#: ../../mod/settings.php:1114 ../../mod/settings.php:1115
+#: ../../Zotlabs/Module/Settings.php:1101
+#: ../../Zotlabs/Module/Settings.php:1106
+#: ../../Zotlabs/Module/Settings.php:1107
+#: ../../Zotlabs/Module/Settings.php:1108
msgid "Recommended"
msgstr "Anbefalt"
-#: ../../mod/settings.php:1109
+#: ../../Zotlabs/Module/Settings.php:1102
msgid "Upcoming events"
msgstr "Kommende hendelser"
-#: ../../mod/settings.php:1110
+#: ../../Zotlabs/Module/Settings.php:1103
msgid "Events today"
msgstr "Hendelser idag"
-#: ../../mod/settings.php:1111
+#: ../../Zotlabs/Module/Settings.php:1104
msgid "Upcoming birthdays"
msgstr "Kommende fødselsdager"
-#: ../../mod/settings.php:1111
+#: ../../Zotlabs/Module/Settings.php:1104
msgid "Not available in all themes"
msgstr "Ikke tilgjengelig i alle temaer"
-#: ../../mod/settings.php:1112
+#: ../../Zotlabs/Module/Settings.php:1105
msgid "System (personal) notifications"
msgstr "System (personlige) varslinger"
-#: ../../mod/settings.php:1113
+#: ../../Zotlabs/Module/Settings.php:1106
msgid "System info messages"
msgstr "System infomeldinger"
-#: ../../mod/settings.php:1114
+#: ../../Zotlabs/Module/Settings.php:1107
msgid "System critical alerts"
msgstr "System kritiske varsel"
-#: ../../mod/settings.php:1115
+#: ../../Zotlabs/Module/Settings.php:1108
msgid "New connections"
msgstr "Nye forbindelser"
-#: ../../mod/settings.php:1116
+#: ../../Zotlabs/Module/Settings.php:1109
msgid "System Registrations"
msgstr "Systemregistreringer"
-#: ../../mod/settings.php:1117
+#: ../../Zotlabs/Module/Settings.php:1110
msgid ""
"Also show new wall posts, private messages and connections under Notices"
msgstr "Vis også nye vegginnlegg, private meldinger og forbindelser under Varsler"
-#: ../../mod/settings.php:1119
+#: ../../Zotlabs/Module/Settings.php:1112
msgid "Notify me of events this many days in advance"
msgstr "Varsle meg om hendelser dette antall dager på forhånd"
-#: ../../mod/settings.php:1119
+#: ../../Zotlabs/Module/Settings.php:1112
msgid "Must be greater than 0"
msgstr "Må være større enn 0"
-#: ../../mod/settings.php:1121
+#: ../../Zotlabs/Module/Settings.php:1114
msgid "Advanced Account/Page Type Settings"
msgstr "Avanserte innstillinger for konto/sidetype"
-#: ../../mod/settings.php:1122
+#: ../../Zotlabs/Module/Settings.php:1115
msgid "Change the behaviour of this account for special situations"
msgstr "Endre oppførselen til denne kontoen i spesielle situasjoner"
-#: ../../mod/settings.php:1125
+#: ../../Zotlabs/Module/Settings.php:1118
msgid ""
"Please enable expert mode (in <a href=\"settings/features\">Settings > "
"Additional features</a>) to adjust!"
msgstr "Vennligst skru på ekspertmodus (under <a href=\"settings/features\">Innstillinger > Ekstra funksjoner</a>) for å justere!"
-#: ../../mod/settings.php:1126
+#: ../../Zotlabs/Module/Settings.php:1119
msgid "Miscellaneous Settings"
msgstr "Diverse innstillinger"
-#: ../../mod/settings.php:1127
+#: ../../Zotlabs/Module/Settings.php:1120
msgid "Default photo upload folder"
msgstr "Standard mappe for opplasting av bilder"
-#: ../../mod/settings.php:1127 ../../mod/settings.php:1128
+#: ../../Zotlabs/Module/Settings.php:1120
+#: ../../Zotlabs/Module/Settings.php:1121
msgid "%Y - current year, %m - current month"
msgstr "%Y - nåværende år, %m - nåværende måned"
-#: ../../mod/settings.php:1128
+#: ../../Zotlabs/Module/Settings.php:1121
msgid "Default file upload folder"
msgstr "Standard mappe for opplasting av filer"
-#: ../../mod/settings.php:1130
+#: ../../Zotlabs/Module/Settings.php:1123
msgid "Personal menu to display in your channel pages"
msgstr "Personlig meny som kan vises på dine kanalsider"
-#: ../../mod/settings.php:1132
+#: ../../Zotlabs/Module/Settings.php:1125
msgid "Remove this channel."
msgstr "Fjern denne kanalen."
-#: ../../mod/settings.php:1133
+#: ../../Zotlabs/Module/Settings.php:1126
msgid "Firefox Share $Projectname provider"
msgstr "$Projectname Firefox Share tilbyder"
-#: ../../mod/settings.php:1134
+#: ../../Zotlabs/Module/Settings.php:1127
msgid "Start calendar week on monday"
msgstr "Start uken med mandag i kalenderen"
-#: ../../mod/setup.php:194
+#: ../../Zotlabs/Module/Setup.php:179
msgid "$Projectname Server - Setup"
msgstr "$Projectname-tjener - oppsett"
-#: ../../mod/setup.php:198
+#: ../../Zotlabs/Module/Setup.php:183
msgid "Could not connect to database."
msgstr "Fikk ikke kontakt med databasen."
-#: ../../mod/setup.php:202
+#: ../../Zotlabs/Module/Setup.php:187
msgid ""
"Could not connect to specified site URL. Possible SSL certificate or DNS "
"issue."
msgstr "Fikk ikke kontakt med det angitte nettstedets URL. Problemet kan muligens skyldes SSL-sertifikatet eller DNS."
-#: ../../mod/setup.php:209
+#: ../../Zotlabs/Module/Setup.php:194
msgid "Could not create table."
msgstr "Kunne ikke lage tabellen."
-#: ../../mod/setup.php:214
+#: ../../Zotlabs/Module/Setup.php:199
msgid "Your site database has been installed."
msgstr "Databasen til ditt nettsted har blitt installert."
-#: ../../mod/setup.php:218
+#: ../../Zotlabs/Module/Setup.php:203
msgid ""
"You may need to import the file \"install/schema_xxx.sql\" manually using a "
"database client."
msgstr "Du må kanskje importere filen \"install/schmea_xxx.sql\" manuelt ved å bruke en databaseklient."
-#: ../../mod/setup.php:219 ../../mod/setup.php:287 ../../mod/setup.php:737
+#: ../../Zotlabs/Module/Setup.php:204 ../../Zotlabs/Module/Setup.php:266
+#: ../../Zotlabs/Module/Setup.php:721
msgid "Please see the file \"install/INSTALL.txt\"."
msgstr "Vennligst les filen \"install/INSTALL.txt\"."
-#: ../../mod/setup.php:284
+#: ../../Zotlabs/Module/Setup.php:263
msgid "System check"
msgstr "Systemsjekk"
-#: ../../mod/setup.php:289
+#: ../../Zotlabs/Module/Setup.php:268
msgid "Check again"
msgstr "Sjekk igjen"
-#: ../../mod/setup.php:311
+#: ../../Zotlabs/Module/Setup.php:290
msgid "Database connection"
msgstr "Databaseforbindelse"
-#: ../../mod/setup.php:312
+#: ../../Zotlabs/Module/Setup.php:291
msgid ""
"In order to install $Projectname we need to know how to connect to your "
"database."
msgstr "For å installere $Projectname må du oppgi hvordan din database kan kontaktes."
-#: ../../mod/setup.php:313
+#: ../../Zotlabs/Module/Setup.php:292
msgid ""
"Please contact your hosting provider or site administrator if you have "
"questions about these settings."
msgstr "Vennligst kontakt din nettstedstilbyder eller nettstedsadministrator hvis du har spørsmål om disse innstillingene."
-#: ../../mod/setup.php:314
+#: ../../Zotlabs/Module/Setup.php:293
msgid ""
"The database you specify below should already exist. If it does not, please "
"create it before continuing."
msgstr "Databasen du oppgir nedenfor må finnes på forhånd. Hvis den ikke finnes, vennligst lag den før du fortsetter."
-#: ../../mod/setup.php:318
+#: ../../Zotlabs/Module/Setup.php:297
msgid "Database Server Name"
msgstr "Navn på databasetjener"
-#: ../../mod/setup.php:318
+#: ../../Zotlabs/Module/Setup.php:297
msgid "Default is 127.0.0.1"
msgstr "Standard er 127.0.0.1"
-#: ../../mod/setup.php:319
+#: ../../Zotlabs/Module/Setup.php:298
msgid "Database Port"
msgstr "Databaseport"
-#: ../../mod/setup.php:319
+#: ../../Zotlabs/Module/Setup.php:298
msgid "Communication port number - use 0 for default"
msgstr "Kommunikasjonsportnummer - bruk 0 for standard"
-#: ../../mod/setup.php:320
+#: ../../Zotlabs/Module/Setup.php:299
msgid "Database Login Name"
msgstr "Database innloggingsnavn"
-#: ../../mod/setup.php:321
+#: ../../Zotlabs/Module/Setup.php:300
msgid "Database Login Password"
msgstr "Database innloggingspassord"
-#: ../../mod/setup.php:322
+#: ../../Zotlabs/Module/Setup.php:301
msgid "Database Name"
msgstr "Databasenavn"
-#: ../../mod/setup.php:323
+#: ../../Zotlabs/Module/Setup.php:302
msgid "Database Type"
msgstr "Databasetype"
-#: ../../mod/setup.php:325 ../../mod/setup.php:365
+#: ../../Zotlabs/Module/Setup.php:304 ../../Zotlabs/Module/Setup.php:344
msgid "Site administrator email address"
msgstr "E-postadressen til administrator ved nettstedet"
-#: ../../mod/setup.php:325 ../../mod/setup.php:365
+#: ../../Zotlabs/Module/Setup.php:304 ../../Zotlabs/Module/Setup.php:344
msgid ""
"Your account email address must match this in order to use the web admin "
"panel."
msgstr "Din konto sin e-postadresse må være lik denne for å kunne bruke web-administrasjonspanelet."
-#: ../../mod/setup.php:326 ../../mod/setup.php:367
+#: ../../Zotlabs/Module/Setup.php:305 ../../Zotlabs/Module/Setup.php:346
msgid "Website URL"
msgstr "Nettstedets URL"
-#: ../../mod/setup.php:326 ../../mod/setup.php:367
+#: ../../Zotlabs/Module/Setup.php:305 ../../Zotlabs/Module/Setup.php:346
msgid "Please use SSL (https) URL if available."
msgstr "Vennligst bruk SSL (https) URL hvis tilgjengelig."
-#: ../../mod/setup.php:327 ../../mod/setup.php:370
+#: ../../Zotlabs/Module/Setup.php:306 ../../Zotlabs/Module/Setup.php:349
msgid "Please select a default timezone for your website"
msgstr "Vennligst velg en standard tidssone for ditt nettsted"
-#: ../../mod/setup.php:354
+#: ../../Zotlabs/Module/Setup.php:333
msgid "Site settings"
msgstr "Nettstedets innstillinger"
-#: ../../mod/setup.php:368
+#: ../../Zotlabs/Module/Setup.php:347
msgid "Enable $Projectname <strong>advanced</strong> features?"
msgstr "Skru på <strong>avanserte</strong egenskaper i $Projectname ?"
-#: ../../mod/setup.php:368
+#: ../../Zotlabs/Module/Setup.php:347
msgid ""
"Some advanced features, while useful - may be best suited for technically "
"proficient audiences"
msgstr "Noen avanserte egenskaper, som - selv om de er nyttige - kanskje passer bedre for et teknisk kyndig publikum. "
-#: ../../mod/setup.php:420
+#: ../../Zotlabs/Module/Setup.php:388
+msgid "PHP version 5.5 or greater is required."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:389
+msgid "PHP version"
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:404
msgid "Could not find a command line version of PHP in the web server PATH."
msgstr "Fant ikke en kommandolinjeversjon av PHP i webtjenerens sti (PATH)."
-#: ../../mod/setup.php:421
+#: ../../Zotlabs/Module/Setup.php:405
msgid ""
"If you don't have a command line version of PHP installed on server, you "
"will not be able to run background polling via cron."
msgstr "Hvis du ikke har en kommandolinjeversjon av PHP installert på tjeneren, så vil du ikke kunne kjøre bakgrunnshenting via cron."
-#: ../../mod/setup.php:425
+#: ../../Zotlabs/Module/Setup.php:409
msgid "PHP executable path"
msgstr "PHP-kjørefilens sti"
-#: ../../mod/setup.php:425
+#: ../../Zotlabs/Module/Setup.php:409
msgid ""
"Enter full path to php executable. You can leave this blank to continue the "
"installation."
msgstr "Skriv full sti til kjørefilen for PHP. Du kan la denne stå blank for å fortsette installasjonen."
-#: ../../mod/setup.php:430
+#: ../../Zotlabs/Module/Setup.php:414
msgid "Command line PHP"
msgstr "Kommandolinje PHP"
-#: ../../mod/setup.php:439
+#: ../../Zotlabs/Module/Setup.php:423
msgid ""
"The command line version of PHP on your system does not have "
"\"register_argc_argv\" enabled."
msgstr "Kommandolinjeversjonen av PHP på ditt system har ikke \"register_argc_argv\" påskrudd."
-#: ../../mod/setup.php:440
+#: ../../Zotlabs/Module/Setup.php:424
msgid "This is required for message delivery to work."
msgstr "Dette er påkrevd for at meldingslevering skal virke."
-#: ../../mod/setup.php:443
+#: ../../Zotlabs/Module/Setup.php:427
msgid "PHP register_argc_argv"
msgstr "PHP register_argc_argv"
-#: ../../mod/setup.php:461
+#: ../../Zotlabs/Module/Setup.php:445
#, php-format
msgid ""
"Your max allowed total upload size is set to %s. Maximum size of one file to"
" upload is set to %s. You are allowed to upload up to %d files at once."
msgstr "Den største totale opplastingsstørrelsen du er tillatt er satt til %s. Filstørrelsen på en enkelt fil er satt til å maksimalt være %s. Du har lov til å laste opp inntil %d filer samtidig."
-#: ../../mod/setup.php:466
+#: ../../Zotlabs/Module/Setup.php:450
msgid "You can adjust these settings in the servers php.ini."
msgstr "Du kan justere disse innstillingene i tjenerens php.ini."
-#: ../../mod/setup.php:468
+#: ../../Zotlabs/Module/Setup.php:452
msgid "PHP upload limits"
msgstr "PHP opplastingsgrenser"
-#: ../../mod/setup.php:491
+#: ../../Zotlabs/Module/Setup.php:475
msgid ""
"Error: the \"openssl_pkey_new\" function on this system is not able to "
"generate encryption keys"
msgstr "Feil: \"openssl_pkey_new\"-funksjonen på dette systemet er ikke i stand til å lage krypteringsnøkler"
-#: ../../mod/setup.php:492
+#: ../../Zotlabs/Module/Setup.php:476
msgid ""
"If running under Windows, please see "
"\"http://www.php.net/manual/en/openssl.installation.php\"."
msgstr "Ved kjøring på Windows, vennligst se \"http://www.php.net/manual/en/openssl.installation.php\"."
-#: ../../mod/setup.php:495
+#: ../../Zotlabs/Module/Setup.php:479
msgid "Generate encryption keys"
msgstr "Lag krypteringsnøkler"
-#: ../../mod/setup.php:507
+#: ../../Zotlabs/Module/Setup.php:491
msgid "libCurl PHP module"
msgstr "libCurl PHP-modul"
-#: ../../mod/setup.php:508
+#: ../../Zotlabs/Module/Setup.php:492
msgid "GD graphics PHP module"
msgstr "GD graphics PHP-modul"
-#: ../../mod/setup.php:509
+#: ../../Zotlabs/Module/Setup.php:493
msgid "OpenSSL PHP module"
msgstr "OpenSSL PHP-modul"
-#: ../../mod/setup.php:510
+#: ../../Zotlabs/Module/Setup.php:494
msgid "mysqli or postgres PHP module"
msgstr "MySQLi eller Postgres PHP modul"
-#: ../../mod/setup.php:511
+#: ../../Zotlabs/Module/Setup.php:495
msgid "mb_string PHP module"
msgstr "mb_string PHP-modul"
-#: ../../mod/setup.php:512
+#: ../../Zotlabs/Module/Setup.php:496
msgid "mcrypt PHP module"
msgstr "mcrypt PHP-modul"
-#: ../../mod/setup.php:513
+#: ../../Zotlabs/Module/Setup.php:497
msgid "xml PHP module"
msgstr "XML PHP modul"
-#: ../../mod/setup.php:517 ../../mod/setup.php:519
+#: ../../Zotlabs/Module/Setup.php:501 ../../Zotlabs/Module/Setup.php:503
msgid "Apache mod_rewrite module"
msgstr "Apache mod_rewrite-modul"
-#: ../../mod/setup.php:517
+#: ../../Zotlabs/Module/Setup.php:501
msgid ""
"Error: Apache webserver mod-rewrite module is required but not installed."
msgstr "Feil: Apache web-tjenerens mod-rewrite-modul er påkrevd, men ikke installert."
-#: ../../mod/setup.php:523 ../../mod/setup.php:526
+#: ../../Zotlabs/Module/Setup.php:507 ../../Zotlabs/Module/Setup.php:510
msgid "proc_open"
msgstr "proc_open"
-#: ../../mod/setup.php:523
+#: ../../Zotlabs/Module/Setup.php:507
msgid ""
"Error: proc_open is required but is either not installed or has been "
"disabled in php.ini"
msgstr "Feil: proc_open er påkrevd, men er enten ikke installert eller har blitt avskrudd i php.ini"
-#: ../../mod/setup.php:531
+#: ../../Zotlabs/Module/Setup.php:515
msgid "Error: libCURL PHP module required but not installed."
msgstr "Feil: libCURL PHP-modul er påkrevd, men er ikke installert."
-#: ../../mod/setup.php:535
+#: ../../Zotlabs/Module/Setup.php:519
msgid ""
"Error: GD graphics PHP module with JPEG support required but not installed."
msgstr "Feil: GD graphics PHP-modul med JPEG-støtte er påkrevd, men er ikke installert."
-#: ../../mod/setup.php:539
+#: ../../Zotlabs/Module/Setup.php:523
msgid "Error: openssl PHP module required but not installed."
msgstr "Feil: openssl PHP-modul er påkrevd, men er ikke installert."
-#: ../../mod/setup.php:543
+#: ../../Zotlabs/Module/Setup.php:527
msgid ""
"Error: mysqli or postgres PHP module required but neither are installed."
msgstr "Feil: mysqli eller postgres PHP modul er påkrevd, men ingen av dem er installert."
-#: ../../mod/setup.php:547
+#: ../../Zotlabs/Module/Setup.php:531
msgid "Error: mb_string PHP module required but not installed."
msgstr "Feil: mb_string PHP-modul er påkrevd, men er ikke installert."
-#: ../../mod/setup.php:551
+#: ../../Zotlabs/Module/Setup.php:535
msgid "Error: mcrypt PHP module required but not installed."
msgstr "Feil: mcrypt PHP-modul er påkrevd, men er ikke installert."
-#: ../../mod/setup.php:555
+#: ../../Zotlabs/Module/Setup.php:539
msgid "Error: xml PHP module required for DAV but not installed."
msgstr "Feil: XML PHP modul er påkrevet for DAV, men den er ikke installert."
-#: ../../mod/setup.php:573
+#: ../../Zotlabs/Module/Setup.php:557
msgid ""
"The web installer needs to be able to create a file called \".htconfig.php\""
" in the top folder of your web server and it is unable to do so."
msgstr "Web-installasjonen må kunne lage en fil kalt \".htconfig.php\" i toppkatalogen til web-tjeneren din, men dette får den ikke til."
-#: ../../mod/setup.php:574
+#: ../../Zotlabs/Module/Setup.php:558
msgid ""
"This is most often a permission setting, as the web server may not be able "
"to write files in your folder - even if you can."
msgstr "Dette er oftest tillatelsesinnstilling, ettersom webtjeneren kanskje kan skrive til filer i din mappe - selv om du kan."
-#: ../../mod/setup.php:575
+#: ../../Zotlabs/Module/Setup.php:559
msgid ""
"At the end of this procedure, we will give you a text to save in a file "
"named .htconfig.php in your Red top folder."
msgstr "På slutten av denne prosedyren vil vi gi deg en tekst til å lagre i en fil kalt .htconfig.php i toppkatalogen til din Red."
-#: ../../mod/setup.php:576
+#: ../../Zotlabs/Module/Setup.php:560
msgid ""
"You can alternatively skip this procedure and perform a manual installation."
" Please see the file \"install/INSTALL.txt\" for instructions."
msgstr "Alternativt, så kan du hoppe over denne prosedyren og gjennomføre en manuell installasjon. Vennligst se filen \"install/INSTALL.txt\" for instruksjoner."
-#: ../../mod/setup.php:579
+#: ../../Zotlabs/Module/Setup.php:563
msgid ".htconfig.php is writable"
msgstr ".htconfig.php kan skrives til"
-#: ../../mod/setup.php:593
+#: ../../Zotlabs/Module/Setup.php:577
msgid ""
"Red uses the Smarty3 template engine to render its web views. Smarty3 "
"compiles templates to PHP to speed up rendering."
msgstr "Red bruker malmotoren Smarty3 for å gjengi sine webvisninger. Smarty3 kompilerer malene om til PHP for å framskynde gjengivelsen."
-#: ../../mod/setup.php:594
+#: ../../Zotlabs/Module/Setup.php:578
#, php-format
msgid ""
"In order to store these compiled templates, the web server needs to have "
-"write access to the directory %s under the Red top level folder."
-msgstr "For å kunne lagre disse kompilerte malene, så må webtjeneren ha skrivetilgang til katalogen %s under Red sin hovedmappe."
+"write access to the directory %s under the top level web folder."
+msgstr ""
-#: ../../mod/setup.php:595 ../../mod/setup.php:616
+#: ../../Zotlabs/Module/Setup.php:579 ../../Zotlabs/Module/Setup.php:600
msgid ""
"Please ensure that the user that your web server runs as (e.g. www-data) has"
" write access to this folder."
msgstr "Vennligst sikre at brukeren som din web-tjeneste kjører som (for eksempel www-data) har skrivetilgang til denne katalogen."
-#: ../../mod/setup.php:596
+#: ../../Zotlabs/Module/Setup.php:580
#, php-format
msgid ""
"Note: as a security measure, you should give the web server write access to "
"%s only--not the template files (.tpl) that it contains."
msgstr "Merknad: som et sikkerhetstiltak bør du bare gi webtjerenn skrivetilgang til %s - ikke til malfilene (.tpl) som den inneholder."
-#: ../../mod/setup.php:599
+#: ../../Zotlabs/Module/Setup.php:583
#, php-format
msgid "%s is writable"
msgstr "%s kan skrives til"
-#: ../../mod/setup.php:615
+#: ../../Zotlabs/Module/Setup.php:599
msgid ""
"Red uses the store directory to save uploaded files. The web server needs to"
" have write access to the store directory under the Red top level folder"
msgstr "Red bruker lagringsmappen for å lagre opplastede filer. Webtjeneren trenger å ha skrivetilgang til lagringsmappen under Red sin toppnivåmappe."
-#: ../../mod/setup.php:619
+#: ../../Zotlabs/Module/Setup.php:603
msgid "store is writable"
msgstr "lageret kan skrives til"
-#: ../../mod/setup.php:652
+#: ../../Zotlabs/Module/Setup.php:636
msgid ""
"SSL certificate cannot be validated. Fix certificate or disable https access"
" to this site."
msgstr "SSL-sertifikatet kan ikke kontrolleres. Fiks sertifikatet eller skru av https tilgang til dette nettstedet."
-#: ../../mod/setup.php:653
+#: ../../Zotlabs/Module/Setup.php:637
msgid ""
"If you have https access to your website or allow connections to TCP port "
"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
"NOT use self-signed certificates!"
msgstr "Hvis du har HTTPS-tilgang til ditt nettsted eller tillater forbindelser til TCP port 443 (HTTPS-porten), så MÅ du bruke nettlesergodkjent sertifkater. Du MÅ IKKE bruke egensignert sertifikater!"
-#: ../../mod/setup.php:654
+#: ../../Zotlabs/Module/Setup.php:638
msgid ""
"This restriction is incorporated because public posts from you may for "
"example contain references to images on your own hub."
msgstr "Denne begrensningen er tatt inn fordi offentlige innlegg fra deg kan for eksempel inneholde referanser til bilder på din egen hub."
-#: ../../mod/setup.php:655
+#: ../../Zotlabs/Module/Setup.php:639
msgid ""
"If your certificate is not recognized, members of other sites (who may "
"themselves have valid certificates) will get a warning message on their own "
"site complaining about security issues."
msgstr "Hvis sertifikatet ditt ikke gjenkjennes, så vil medlemmer på andre nettsteder (som selv kan ha godkjente sertifikater) få en beskjed med en advarsel på deres eget nettsted som klager over sikkerhetsproblemer."
-#: ../../mod/setup.php:656
+#: ../../Zotlabs/Module/Setup.php:640
msgid ""
"This can cause usability issues elsewhere (not just on your own site) so we "
"must insist on this requirement."
msgstr "Dette kan gi problemer med brukervennlighet (ikke bare på ditt eget nettsted), så vi må insistere på dette kravet."
-#: ../../mod/setup.php:657
+#: ../../Zotlabs/Module/Setup.php:641
msgid ""
"Providers are available that issue free certificates which are browser-"
"valid."
msgstr "Det finnes tilbydere som utsteder gratis sertifikater som er gyldige i nettlesere."
-#: ../../mod/setup.php:659
+#: ../../Zotlabs/Module/Setup.php:643
msgid "SSL certificate validation"
msgstr "SSL sertifikat-kontroll"
-#: ../../mod/setup.php:665
+#: ../../Zotlabs/Module/Setup.php:649
msgid ""
"Url rewrite in .htaccess is not working. Check your server "
"configuration.Test: "
msgstr "URL omskriving (rewrite) i .htaccess virker ikke. Sjekk konfigurasjonen til tjeneren din. Test:"
-#: ../../mod/setup.php:668
+#: ../../Zotlabs/Module/Setup.php:652
msgid "Url rewrite is working"
msgstr "URL rewrite virker"
-#: ../../mod/setup.php:677
+#: ../../Zotlabs/Module/Setup.php:661
msgid ""
"The database configuration file \".htconfig.php\" could not be written. "
"Please use the enclosed text to create a configuration file in your web "
"server root."
msgstr "Databasekonfigurasjonsfilen \".htconfig.php\" kunne ikke skrives. Vennligst bruk den medfølgende teksten for å lage en konfigurasjonsfil i toppkatalogen av din web-tjener."
-#: ../../mod/setup.php:701
+#: ../../Zotlabs/Module/Setup.php:685
msgid "Errors encountered creating database tables."
msgstr "Feil oppstod under opprettelsen av databasetabeller."
-#: ../../mod/setup.php:735
+#: ../../Zotlabs/Module/Setup.php:719
msgid "<h1>What next</h1>"
msgstr "<h1>Hva gjenstår</h1>"
-#: ../../mod/setup.php:736
+#: ../../Zotlabs/Module/Setup.php:720
msgid ""
"IMPORTANT: You will need to [manually] setup a scheduled task for the "
"poller."
msgstr "VIKTIG: Du må [manuelt] sette opp en automatisert tidfestet oppgave til bakgrunnshenteren."
-#: ../../mod/lostpass.php:15
-msgid "No valid account found."
-msgstr "Ingen gyldig konto funnet."
-
-#: ../../mod/lostpass.php:29
-msgid "Password reset request issued. Check your email."
-msgstr "Forespørsel om å tilbakestille passord er mottatt. Sjekk e-posten din."
-
-#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:103
-#, php-format
-msgid "Site Member (%s)"
-msgstr "Nettstedsmedlem (%s)"
-
-#: ../../mod/lostpass.php:40
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "Forespurt om å tilbakestille passord hos %s"
-
-#: ../../mod/lostpass.php:63
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "Forespørsel kunne ikke bekreftes. (Du kan ha sendt den inn tidligere.) Tilbakestilling av passord mislyktes."
-
-#: ../../mod/lostpass.php:86 ../../boot.php:1551
-msgid "Password Reset"
-msgstr "Tilbakestill passord"
-
-#: ../../mod/lostpass.php:87
-msgid "Your password has been reset as requested."
-msgstr "Ditt passord har blitt tilbakestilt som forespurt."
-
-#: ../../mod/lostpass.php:88
-msgid "Your new password is"
-msgstr "Ditt nye passord er"
-
-#: ../../mod/lostpass.php:89
-msgid "Save or copy your new password - and then"
-msgstr "Lagre eller kopier ditt nye passord, og deretter kan du"
-
-#: ../../mod/lostpass.php:90
-msgid "click here to login"
-msgstr "klikke her for å logge inn"
-
-#: ../../mod/lostpass.php:91
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Ditt passord kan endres på siden <em>Innstillinger</em> etter vellykket innlogging."
-
-#: ../../mod/lostpass.php:108
-#, php-format
-msgid "Your password has changed at %s"
-msgstr "Ditt passord er endret hos %s"
-
-#: ../../mod/lostpass.php:123
-msgid "Forgot your Password?"
-msgstr "Glemt passord ditt?"
-
-#: ../../mod/lostpass.php:124
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Skriv e-postadressen din og send inn for å tilbakestille passordet ditt. Sjekk deretter din e-post for videre instruksjoner."
-
-#: ../../mod/lostpass.php:125
-msgid "Email Address"
-msgstr "E-postadresse"
-
-#: ../../mod/lostpass.php:126
-msgid "Reset"
-msgstr "Tilbakestill"
-
-#: ../../mod/sharedwithme.php:94
+#: ../../Zotlabs/Module/Sharedwithme.php:98
msgid "Files: shared with me"
msgstr "Filer: delt med meg"
-#: ../../mod/sharedwithme.php:96
+#: ../../Zotlabs/Module/Sharedwithme.php:100
msgid "NEW"
msgstr "NY"
-#: ../../mod/sharedwithme.php:99
+#: ../../Zotlabs/Module/Sharedwithme.php:103
msgid "Remove all files"
msgstr "Fjern alle filer"
-#: ../../mod/sharedwithme.php:100
+#: ../../Zotlabs/Module/Sharedwithme.php:104
msgid "Remove this file"
msgstr "Fjern denne filen"
-#: ../../mod/siteinfo.php:15
+#: ../../Zotlabs/Module/Siteinfo.php:19
#, php-format
msgid "Version %s"
msgstr "Versjon %s"
-#: ../../mod/siteinfo.php:36
+#: ../../Zotlabs/Module/Siteinfo.php:40
msgid "Installed plugins/addons/apps:"
msgstr "Installerte tilleggsfunksjoner/tillegg/apper:"
-#: ../../mod/siteinfo.php:49
+#: ../../Zotlabs/Module/Siteinfo.php:53
msgid "No installed plugins/addons/apps"
msgstr "Ingen installerte tilleggsfunksjoner/tillegg/apper"
-#: ../../mod/siteinfo.php:62
+#: ../../Zotlabs/Module/Siteinfo.php:66
msgid ""
"This is a hub of $Projectname - a global cooperative network of "
"decentralized privacy enhanced websites."
msgstr "Dette er en $Projectname-hub - et globalt samhandlende nettverk av desentraliserte nettsteder med innbygget personvern."
-#: ../../mod/siteinfo.php:64
+#: ../../Zotlabs/Module/Siteinfo.php:68
msgid "Tag: "
msgstr "Merkelapp:"
-#: ../../mod/siteinfo.php:66
+#: ../../Zotlabs/Module/Siteinfo.php:70
msgid "Last background fetch: "
msgstr "Siste innhenting i bakgrunnen:"
-#: ../../mod/siteinfo.php:68
+#: ../../Zotlabs/Module/Siteinfo.php:72
msgid "Current load average: "
msgstr "Gjeldende belastningsgjennomsnitt:"
-#: ../../mod/siteinfo.php:71
+#: ../../Zotlabs/Module/Siteinfo.php:75
msgid "Running at web location"
msgstr "Kjører på webplasseringen"
-#: ../../mod/siteinfo.php:72
+#: ../../Zotlabs/Module/Siteinfo.php:76
msgid ""
"Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more "
"about $Projectname."
msgstr "Vennligst besøk <a href=\"http://hubzilla.org\">hubzilla.org</a> for å lære mer om $Projectname."
-#: ../../mod/siteinfo.php:73
+#: ../../Zotlabs/Module/Siteinfo.php:77
msgid "Bug reports and issues: please visit"
msgstr "Feilmeldinger og feilretting: vennligst besøk"
-#: ../../mod/siteinfo.php:75
+#: ../../Zotlabs/Module/Siteinfo.php:79
msgid "$projectname issues"
msgstr "$projectname problemer"
-#: ../../mod/siteinfo.php:76
+#: ../../Zotlabs/Module/Siteinfo.php:80
msgid ""
"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
"com"
msgstr "Forslag, ros og så videre - vennligst e-post \"redmatrix\" hos librelist - punktum com"
-#: ../../mod/siteinfo.php:78
+#: ../../Zotlabs/Module/Siteinfo.php:82
msgid "Site Administrators"
msgstr "Nettstedsadministratorer"
-#: ../../mod/sources.php:32
+#: ../../Zotlabs/Module/Sources.php:37
msgid "Failed to create source. No channel selected."
msgstr "Mislyktes med å lage kilde. Ingen kanal er valgt."
-#: ../../mod/sources.php:45
+#: ../../Zotlabs/Module/Sources.php:51
msgid "Source created."
msgstr "Kilden er laget."
-#: ../../mod/sources.php:57
+#: ../../Zotlabs/Module/Sources.php:64
msgid "Source updated."
msgstr "Kilden er oppdatert."
-#: ../../mod/sources.php:82
+#: ../../Zotlabs/Module/Sources.php:90
msgid "*"
msgstr "*"
-#: ../../mod/sources.php:89
+#: ../../Zotlabs/Module/Sources.php:96 ../../include/widgets.php:630
+#: ../../include/features.php:71
+msgid "Channel Sources"
+msgstr "Kanalkilder"
+
+#: ../../Zotlabs/Module/Sources.php:97
msgid "Manage remote sources of content for your channel."
msgstr "HÃ¥ndtere eksterne innholdskilder til din kanal."
-#: ../../mod/sources.php:90 ../../mod/sources.php:100
+#: ../../Zotlabs/Module/Sources.php:98 ../../Zotlabs/Module/Sources.php:108
msgid "New Source"
msgstr "Ny kilde"
-#: ../../mod/sources.php:101 ../../mod/sources.php:133
+#: ../../Zotlabs/Module/Sources.php:109 ../../Zotlabs/Module/Sources.php:143
msgid ""
"Import all or selected content from the following channel into this channel "
"and distribute it according to your channel settings."
msgstr "Importer alt eller et utvalgt av innhold fra følgende kanal inn i denne kanalen og distribuer det i henhold til dine egne kanalinnstillinger."
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
+#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
msgid "Only import content with these words (one per line)"
msgstr "Bare importer innhold med disse ordene (ett ord per linje)"
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
+#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
msgid "Leave blank to import all public content"
msgstr "La stå tomt for å importere alt offentlig innhold"
-#: ../../mod/sources.php:103 ../../mod/sources.php:137
+#: ../../Zotlabs/Module/Sources.php:111 ../../Zotlabs/Module/Sources.php:148
msgid "Channel Name"
msgstr "Kanalnavn"
-#: ../../mod/sources.php:123 ../../mod/sources.php:150
+#: ../../Zotlabs/Module/Sources.php:112 ../../Zotlabs/Module/Sources.php:147
+msgid ""
+"Add the following categories to posts imported from this source (comma "
+"separated)"
+msgstr ""
+
+#: ../../Zotlabs/Module/Sources.php:133 ../../Zotlabs/Module/Sources.php:161
msgid "Source not found."
msgstr "Kilden ble ikke funnet."
-#: ../../mod/sources.php:130
+#: ../../Zotlabs/Module/Sources.php:140
msgid "Edit Source"
msgstr "Endre kilde"
-#: ../../mod/sources.php:131
+#: ../../Zotlabs/Module/Sources.php:141
msgid "Delete Source"
msgstr "Slett kilde"
-#: ../../mod/sources.php:158
+#: ../../Zotlabs/Module/Sources.php:169
msgid "Source removed"
msgstr "Kilden er fjernet"
-#: ../../mod/sources.php:160
+#: ../../Zotlabs/Module/Sources.php:171
msgid "Unable to remove source."
msgstr "Ikke i stand til å fjerne kilde."
-#: ../../mod/subthread.php:114
+#: ../../Zotlabs/Module/Subthread.php:118
#, php-format
msgid "%1$s is following %2$s's %3$s"
msgstr "%1$s følger %2$s sin %3$s"
-#: ../../mod/subthread.php:116
+#: ../../Zotlabs/Module/Subthread.php:120
#, php-format
msgid "%1$s stopped following %2$s's %3$s"
msgstr "%1$s stopped å følge %2$s sin %3$s"
-#: ../../mod/suggest.php:35
+#: ../../Zotlabs/Module/Suggest.php:39
msgid ""
"No suggestions available. If this is a new site, please try again in 24 "
"hours."
msgstr "Ingen forslag tilgjengelige. Hvis dette er et nytt nettsted, vennligst prøv igjen om 24 timer."
-#: ../../mod/tagger.php:96
+#: ../../Zotlabs/Module/Suggest.php:58 ../../include/widgets.php:149
+msgid "Ignore/Hide"
+msgstr "Ignorer/Skjul"
+
+#: ../../Zotlabs/Module/Tagger.php:55 ../../include/bbcode.php:256
+msgid "post"
+msgstr "innlegg"
+
+#: ../../Zotlabs/Module/Tagger.php:57 ../../include/text.php:1948
+#: ../../include/conversation.php:150
+msgid "comment"
+msgstr "kommentar"
+
+#: ../../Zotlabs/Module/Tagger.php:100
#, php-format
msgid "%1$s tagged %2$s's %3$s with %4$s"
msgstr "%1$s merket %3$s til %2$s med %4$s"
-#: ../../mod/tagrm.php:44 ../../mod/tagrm.php:94
+#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98
msgid "Tag removed"
msgstr "Merkelapp fjernet"
-#: ../../mod/tagrm.php:119
+#: ../../Zotlabs/Module/Tagrm.php:123
msgid "Remove Item Tag"
msgstr "Fjern merkelapp fra element"
-#: ../../mod/tagrm.php:121
+#: ../../Zotlabs/Module/Tagrm.php:125
msgid "Select a tag to remove: "
msgstr "Velg merkelapp å fjerne:"
-#: ../../mod/thing.php:110
+#: ../../Zotlabs/Module/Thing.php:114
msgid "Thing updated"
msgstr "Tingen er oppdatert"
-#: ../../mod/thing.php:162
+#: ../../Zotlabs/Module/Thing.php:166
msgid "Object store: failed"
msgstr "Objektlagring: mislyktes"
-#: ../../mod/thing.php:166
+#: ../../Zotlabs/Module/Thing.php:170
msgid "Thing added"
msgstr "Ting lagt til"
-#: ../../mod/thing.php:192
+#: ../../Zotlabs/Module/Thing.php:196
#, php-format
msgid "OBJ: %1$s %2$s %3$s"
msgstr "OBJ: %1$s %2$s %3$s"
-#: ../../mod/thing.php:255
+#: ../../Zotlabs/Module/Thing.php:259
msgid "Show Thing"
msgstr "Vis ting"
-#: ../../mod/thing.php:262
+#: ../../Zotlabs/Module/Thing.php:266
msgid "item not found."
msgstr "element ble ikke funnet."
-#: ../../mod/thing.php:295
+#: ../../Zotlabs/Module/Thing.php:299
msgid "Edit Thing"
msgstr "Endre ting"
-#: ../../mod/thing.php:297 ../../mod/thing.php:347
+#: ../../Zotlabs/Module/Thing.php:301 ../../Zotlabs/Module/Thing.php:351
msgid "Select a profile"
msgstr "Velg en profil"
-#: ../../mod/thing.php:301 ../../mod/thing.php:350
+#: ../../Zotlabs/Module/Thing.php:305 ../../Zotlabs/Module/Thing.php:354
msgid "Post an activity"
msgstr "Legg inn en aktivitet"
-#: ../../mod/thing.php:301 ../../mod/thing.php:350
+#: ../../Zotlabs/Module/Thing.php:305 ../../Zotlabs/Module/Thing.php:354
msgid "Only sends to viewers of the applicable profile"
msgstr "Sender bare til seere av den aktuelle profilen"
-#: ../../mod/thing.php:303 ../../mod/thing.php:352
+#: ../../Zotlabs/Module/Thing.php:307 ../../Zotlabs/Module/Thing.php:356
msgid "Name of thing e.g. something"
msgstr "Navn på ting for eksempel noe"
-#: ../../mod/thing.php:305 ../../mod/thing.php:353
+#: ../../Zotlabs/Module/Thing.php:309 ../../Zotlabs/Module/Thing.php:357
msgid "URL of thing (optional)"
msgstr "URL til ting (valgfritt)"
-#: ../../mod/thing.php:307 ../../mod/thing.php:354
+#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:358
msgid "URL for photo of thing (optional)"
msgstr "URL til bilde av ting (valgfritt)"
-#: ../../mod/thing.php:345
+#: ../../Zotlabs/Module/Thing.php:349
msgid "Add Thing to your Profile"
msgstr "Legg til ting i din profil"
-#: ../../mod/uexport.php:51 ../../mod/uexport.php:52
+#: ../../Zotlabs/Module/Uexport.php:55 ../../Zotlabs/Module/Uexport.php:56
msgid "Export Channel"
msgstr "Eksporter kanal"
-#: ../../mod/uexport.php:53
+#: ../../Zotlabs/Module/Uexport.php:57
msgid ""
"Export your basic channel information to a file. This acts as a backup of "
"your connections, permissions, profile and basic data, which can be used to "
"import your data to a new server hub, but does not contain your content."
msgstr "Eksporter grunnleggende informasjon om kanalen din til en fil. Denne er en sikkerhetskopi av dine forbindelser, tillatelser, profil og grunnleggende data, som kan brukes til å importere dine data til en ny hub, men den tar ikke med innholdet."
-#: ../../mod/uexport.php:54
+#: ../../Zotlabs/Module/Uexport.php:58
msgid "Export Content"
msgstr "Eksporter innhold"
-#: ../../mod/uexport.php:55
+#: ../../Zotlabs/Module/Uexport.php:59
msgid ""
"Export your channel information and recent content to a JSON backup that can"
" be restored or imported to another server hub. This backs up all of your "
@@ -9313,11 +6187,11 @@ msgid ""
" this download to begin."
msgstr "Eksporter din kanalinformasjon og det nyeste innholdet til en JSON-sikkerhetskopi, som kan gjenopprettes eller importeres til en annen hub. Denne lager en sikkerhetskopi av alle dine forbindelser, tillatelser, profildata og flere måneder av innholdet ditt. Denne filen kan være SVÆRT stor. Vennligst vær tålmodig - det kan ta flere minutter før denne nedlastningen begynner."
-#: ../../mod/uexport.php:56
+#: ../../Zotlabs/Module/Uexport.php:60
msgid "Export your posts from a given year."
msgstr "Eksporter dine innlegg fra et bestemt år"
-#: ../../mod/uexport.php:58
+#: ../../Zotlabs/Module/Uexport.php:62
msgid ""
"You may also export your posts and conversations for a particular year or "
"month. Adjust the date in your browser location bar to select other dates. "
@@ -9325,21 +6199,21 @@ msgid ""
"please try again selecting a more limited date range."
msgstr "Du kan også eksportere dine innlegg og samtaler for et bestemt år eller måned. Juster datoen i din nettlesers adresselinje for å velge andre datoer. Hvis eksporten feiler (muligens på grunn av utilstrekkelig minne på din hub), vennligst prøv igjen med et mer begrenset datoområde."
-#: ../../mod/uexport.php:59
+#: ../../Zotlabs/Module/Uexport.php:63
#, php-format
msgid ""
"To select all posts for a given year, such as this year, visit <a "
"href=\"%1$s\">%2$s</a>"
msgstr "For å velge alle innlegg for et gitt år, slik som iår, besøk <a href=\"%1$s\">%2$s</a>"
-#: ../../mod/uexport.php:60
+#: ../../Zotlabs/Module/Uexport.php:64
#, php-format
msgid ""
"To select all posts for a given month, such as January of this year, visit "
"<a href=\"%1$s\">%2$s</a>"
msgstr "For å velge alle innlegg fra en gitt måned, slik som januar i år, besøk <a href=\"%1$s\">%2$s</a>"
-#: ../../mod/uexport.php:61
+#: ../../Zotlabs/Module/Uexport.php:65
#, php-format
msgid ""
"These content files may be imported or restored by visiting <a "
@@ -9347,228 +6221,3607 @@ msgid ""
" please import or restore these in date order (oldest first)."
msgstr "Disse innholdsfilene kan importeres eller gjenopprettes ved å besøke <a href=\"%1$s\">%2$s</a> på ethvert nettsted som inneholder din kanal. For best resultat, vennligst importer eller gjenopprett disse etter dato (eldste først)."
-#: ../../mod/viewconnections.php:59
+#: ../../Zotlabs/Module/Viewconnections.php:62
msgid "No connections."
msgstr "Ingen forbindelser."
-#: ../../mod/viewconnections.php:72
+#: ../../Zotlabs/Module/Viewconnections.php:75
#, php-format
msgid "Visit %s's profile [%s]"
msgstr "Besøk %s sin profil [%s]"
-#: ../../mod/viewconnections.php:101
+#: ../../Zotlabs/Module/Viewconnections.php:104
msgid "View Connections"
msgstr "Vis forbindelser"
-#: ../../mod/viewsrc.php:40
+#: ../../Zotlabs/Module/Viewsrc.php:44
msgid "Source of Item"
msgstr "Kilde til element"
-#: ../../mod/webpages.php:193
+#: ../../Zotlabs/Module/Webpages.php:184 ../../Zotlabs/Lib/Apps.php:217
+#: ../../include/nav.php:106 ../../include/conversation.php:1685
+msgid "Webpages"
+msgstr "Websider"
+
+#: ../../Zotlabs/Module/Webpages.php:195 ../../include/page_widgets.php:41
+msgid "Actions"
+msgstr "Handlinger"
+
+#: ../../Zotlabs/Module/Webpages.php:196 ../../include/page_widgets.php:42
+msgid "Page Link"
+msgstr "Sidelenke"
+
+#: ../../Zotlabs/Module/Webpages.php:197
msgid "Page Title"
msgstr "Sidetittel"
-#: ../../mod/xchan.php:6
+#: ../../Zotlabs/Module/Xchan.php:10
msgid "Xchan Lookup"
msgstr "Xchan oppslag"
-#: ../../mod/xchan.php:9
+#: ../../Zotlabs/Module/Xchan.php:13
msgid "Lookup xchan beginning with (or webbie): "
msgstr "Slå opp xchan som begynner med (eller webbie):"
-#: ../../mod/cover_photo.php:130 ../../mod/cover_photo.php:177
-msgid "Cover Photos"
-msgstr "Forsidebilder"
+#: ../../Zotlabs/Lib/Apps.php:204
+msgid "Site Admin"
+msgstr "Nettstedsadministrator"
-#: ../../mod/cover_photo.php:352
-msgid "Upload Cover Photo"
-msgstr "Last opp forsidebilde"
+#: ../../Zotlabs/Lib/Apps.php:205
+msgid "Bug Report"
+msgstr ""
-#: ../../mod/cal.php:63
-msgid "Permissions denied."
-msgstr "Tillatelse avvist."
+#: ../../Zotlabs/Lib/Apps.php:206
+msgid "View Bookmarks"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Apps.php:207
+msgid "My Chatrooms"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Apps.php:209
+msgid "Firefox Share"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Apps.php:210
+msgid "Remote Diagnostics"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Apps.php:211 ../../include/features.php:89
+msgid "Suggest Channels"
+msgstr "Foreslå kanaler"
+
+#: ../../Zotlabs/Lib/Apps.php:212 ../../include/nav.php:110
+#: ../../boot.php:1703
+msgid "Login"
+msgstr "Logg inn"
+
+#: ../../Zotlabs/Lib/Apps.php:214 ../../include/nav.php:179
+msgid "Grid"
+msgstr "Nett"
+
+#: ../../Zotlabs/Lib/Apps.php:218 ../../include/nav.php:182
+msgid "Channel Home"
+msgstr "Kanalhjem"
+
+#: ../../Zotlabs/Lib/Apps.php:221 ../../include/nav.php:201
+#: ../../include/conversation.php:1649 ../../include/conversation.php:1652
+msgid "Events"
+msgstr "Hendelser"
+
+#: ../../Zotlabs/Lib/Apps.php:222 ../../include/nav.php:167
+msgid "Directory"
+msgstr "Katalog"
+
+#: ../../Zotlabs/Lib/Apps.php:224 ../../include/nav.php:193
+msgid "Mail"
+msgstr "Melding"
+
+#: ../../Zotlabs/Lib/Apps.php:227 ../../include/nav.php:96
+msgid "Chat"
+msgstr "Chat"
+
+#: ../../Zotlabs/Lib/Apps.php:229
+msgid "Probe"
+msgstr "Undersøk"
+
+#: ../../Zotlabs/Lib/Apps.php:230
+msgid "Suggest"
+msgstr "Forreslå"
+
+#: ../../Zotlabs/Lib/Apps.php:231
+msgid "Random Channel"
+msgstr "Tilfeldig kanal"
+
+#: ../../Zotlabs/Lib/Apps.php:232
+msgid "Invite"
+msgstr "Inviter"
+
+#: ../../Zotlabs/Lib/Apps.php:233 ../../include/widgets.php:1386
+msgid "Features"
+msgstr "Funksjoner"
+
+#: ../../Zotlabs/Lib/Apps.php:235
+msgid "Post"
+msgstr "Innlegg"
+
+#: ../../Zotlabs/Lib/Apps.php:335
+msgid "Purchase"
+msgstr "Kjøp"
+
+#: ../../Zotlabs/Lib/Chatroom.php:27
+msgid "Missing room name"
+msgstr "Mangler romnavn"
+
+#: ../../Zotlabs/Lib/Chatroom.php:36
+msgid "Duplicate room name"
+msgstr "Duplikat romnavn"
+
+#: ../../Zotlabs/Lib/Chatroom.php:86 ../../Zotlabs/Lib/Chatroom.php:94
+msgid "Invalid room specifier."
+msgstr "Ugyldig rom-spesifisering"
+
+#: ../../Zotlabs/Lib/Chatroom.php:126
+msgid "Room not found."
+msgstr "Rommet ble ikke funnet."
+
+#: ../../Zotlabs/Lib/Chatroom.php:147
+msgid "Room is full"
+msgstr "Rommet er fullt"
+
+#: ../../Zotlabs/Lib/Enotify.php:60 ../../include/network.php:1823
+msgid "$Projectname Notification"
+msgstr "$Projectname varsling"
+
+#: ../../Zotlabs/Lib/Enotify.php:61 ../../include/network.php:1824
+msgid "$projectname"
+msgstr "$projectname"
+
+#: ../../Zotlabs/Lib/Enotify.php:63 ../../include/network.php:1826
+msgid "Thank You,"
+msgstr "Tusen takk,"
+
+#: ../../Zotlabs/Lib/Enotify.php:65 ../../include/network.php:1828
+#, php-format
+msgid "%s Administrator"
+msgstr "%s administrator"
+
+#: ../../Zotlabs/Lib/Enotify.php:100
+#, php-format
+msgid "%s <!item_type!>"
+msgstr "%s <!item_type!>"
+
+#: ../../Zotlabs/Lib/Enotify.php:104
+#, php-format
+msgid "[Hubzilla:Notify] New mail received at %s"
+msgstr "[Hubzilla:Notify] Ny melding mottatt hos %s"
+
+#: ../../Zotlabs/Lib/Enotify.php:106
+#, php-format
+msgid "%1$s, %2$s sent you a new private message at %3$s."
+msgstr "%1$s, %2$s sendte deg en ny privat melding på %3$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:107
+#, php-format
+msgid "%1$s sent you %2$s."
+msgstr "%1$s sendte deg %2$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:107
+msgid "a private message"
+msgstr "en privat melding"
+
+#: ../../Zotlabs/Lib/Enotify.php:108
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
+msgstr "Vennligst besøk %s for å se og/eller svare på dine private meldinger."
+
+#: ../../Zotlabs/Lib/Enotify.php:164
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
+msgstr "%1$s, %2$s kommenterte på [zrl=%3$s]a %4$s[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:172
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
+msgstr "%1$s, %2$s kommenterte på [zrl=%3$s]%4$s's %5$s[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:181
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
+msgstr "%1$s, %2$s kommenterte på [zrl=%3$s]din %4$s[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:192
+#, php-format
+msgid "[Hubzilla:Notify] Comment to conversation #%1$d by %2$s"
+msgstr "[Hubzilla:Notify] Kommentar til samtale #%1$d av %2$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:193
+#, php-format
+msgid "%1$s, %2$s commented on an item/conversation you have been following."
+msgstr "%1$s, %2$s kommenterte på et element eller en samtale du følger"
+
+#: ../../Zotlabs/Lib/Enotify.php:196 ../../Zotlabs/Lib/Enotify.php:211
+#: ../../Zotlabs/Lib/Enotify.php:237 ../../Zotlabs/Lib/Enotify.php:255
+#: ../../Zotlabs/Lib/Enotify.php:269
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
+msgstr "Vennligst besøk %s for å se og/eller svare i samtalen"
+
+#: ../../Zotlabs/Lib/Enotify.php:202
+#, php-format
+msgid "[Hubzilla:Notify] %s posted to your profile wall"
+msgstr "[Hubzilla:Notify] %s skrev et innlegg på din profilvegg"
+
+#: ../../Zotlabs/Lib/Enotify.php:204
+#, php-format
+msgid "%1$s, %2$s posted to your profile wall at %3$s"
+msgstr "%1$s, %2$s skrev et innlegg på din profilvegg på %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:206
+#, php-format
+msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
+msgstr "%1$s, %2$s skrev et innlegg på [zrl=%3$s]din vegg[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:230
+#, php-format
+msgid "[Hubzilla:Notify] %s tagged you"
+msgstr "[Hubzilla:Notify] %s merket deg"
+
+#: ../../Zotlabs/Lib/Enotify.php:231
+#, php-format
+msgid "%1$s, %2$s tagged you at %3$s"
+msgstr "%1$s, %2$s merket deg på %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:232
+#, php-format
+msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%3$s]merket deg[/zrl]."
+
+#: ../../Zotlabs/Lib/Enotify.php:244
+#, php-format
+msgid "[Hubzilla:Notify] %1$s poked you"
+msgstr "[Hubzilla:Notify] %1$s prikket deg"
+
+#: ../../Zotlabs/Lib/Enotify.php:245
+#, php-format
+msgid "%1$s, %2$s poked you at %3$s"
+msgstr "%1$s, %2$s dyttet deg på %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:246
+#, php-format
+msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%2$s]dyttet deg[/zrl]."
+
+#: ../../Zotlabs/Lib/Enotify.php:262
+#, php-format
+msgid "[Hubzilla:Notify] %s tagged your post"
+msgstr "[Hubzilla:Notify] %s merket ditt innlegg"
+
+#: ../../Zotlabs/Lib/Enotify.php:263
+#, php-format
+msgid "%1$s, %2$s tagged your post at %3$s"
+msgstr "%1$s, %2$s merket ditt innlegg på %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:264
+#, php-format
+msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+msgstr "%1$s, %2$s merket [zrl=%3$s]ditt innlegg[/zrl]"
+
+#: ../../Zotlabs/Lib/Enotify.php:276
+msgid "[Hubzilla:Notify] Introduction received"
+msgstr "[Hubzilla:Notify] Introduksjon mottatt"
+
+#: ../../Zotlabs/Lib/Enotify.php:277
+#, php-format
+msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
+msgstr "%1$s, du har mottatt en ny forespørsel om forbindelse fra '%2$s' hos %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:278
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
+msgstr "%1$s, du mottok [zrl=%2$s]en ny forespørsel om forbindelse[/zrl] fra %3$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:282 ../../Zotlabs/Lib/Enotify.php:301
+#, php-format
+msgid "You may visit their profile at %s"
+msgstr "Du kan besøke profilen deres på %s"
+
+#: ../../Zotlabs/Lib/Enotify.php:284
+#, php-format
+msgid "Please visit %s to approve or reject the connection request."
+msgstr "Vennligst besøk %s for å godkjenne eller avslå forespørselen om forbindelse."
+
+#: ../../Zotlabs/Lib/Enotify.php:291
+msgid "[Hubzilla:Notify] Friend suggestion received"
+msgstr "[Hubzilla:Notify] Venneforslag mottatt"
+
+#: ../../Zotlabs/Lib/Enotify.php:292
+#, php-format
+msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
+msgstr "%1$s, du har mottatt en venneforespørsel fra '%2$s' hos %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:293
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
+"%4$s."
+msgstr "%1$s, du har mottatt [zrl=%2$s]et venneforslaget[/zrl] angående %3$s fra %4$s. "
+
+#: ../../Zotlabs/Lib/Enotify.php:299
+msgid "Name:"
+msgstr "Navn:"
+
+#: ../../Zotlabs/Lib/Enotify.php:300
+msgid "Photo:"
+msgstr "Bilde:"
+
+#: ../../Zotlabs/Lib/Enotify.php:303
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
+msgstr "Vennligst besøk %s for å godkjenne eller avslå dette forslaget."
+
+#: ../../Zotlabs/Lib/Enotify.php:518
+msgid "[Hubzilla:Notify]"
+msgstr "[Hubzilla:Notify]"
+
+#: ../../Zotlabs/Lib/Enotify.php:667
+msgid "created a new post"
+msgstr "laget et nytt innlegg"
+
+#: ../../Zotlabs/Lib/Enotify.php:668
+#, php-format
+msgid "commented on %s's post"
+msgstr "kommenterte på %s sitt innlegg"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:95 ../../include/conversation.php:664
+msgid "Private Message"
+msgstr "Privat melding"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:132 ../../include/conversation.php:656
+msgid "Select"
+msgstr "Velg"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:136
+msgid "Save to Folder"
+msgstr "Lagre i mappe"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:157
+msgid "I will attend"
+msgstr "Jeg vil delta"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:157
+msgid "I will not attend"
+msgstr "Jeg deltar ikke"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:157
+msgid "I might attend"
+msgstr "Jeg vil kanskje delta"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:167
+msgid "I agree"
+msgstr "Jeg er enig"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:167
+msgid "I disagree"
+msgstr "Jeg er uenig"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:167
+msgid "I abstain"
+msgstr "Jeg avstår"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:218
+msgid "Add Star"
+msgstr "Legg til stjerne"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:219
+msgid "Remove Star"
+msgstr "Fjern stjerne"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:220
+msgid "Toggle Star Status"
+msgstr "Skru av og på stjernestatus"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:224
+msgid "starred"
+msgstr "stjernemerket"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:234 ../../include/conversation.php:671
+msgid "Message signature validated"
+msgstr "Innleggets signatur er bekreftet"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:235 ../../include/conversation.php:672
+msgid "Message signature incorrect"
+msgstr "Innleggets signatur er feil"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:243
+msgid "Add Tag"
+msgstr "Legg til merkelapp"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:261 ../../include/taxonomy.php:316
+msgid "like"
+msgstr "liker"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:262 ../../include/taxonomy.php:317
+msgid "dislike"
+msgstr "misliker"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:266
+msgid "Share This"
+msgstr "Del dette"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:266
+msgid "share"
+msgstr "del"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:275
+msgid "Delivery Report"
+msgstr "Leveringsrapport"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:293
+#, php-format
+msgid "%d comment"
+msgid_plural "%d comments"
+msgstr[0] "%d kommentar"
+msgstr[1] "%d kommentarer"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:322 ../../Zotlabs/Lib/ThreadItem.php:323
+#, php-format
+msgid "View %s's profile - %s"
+msgstr "Vis %s sin profil - %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:326
+msgid "to"
+msgstr "til"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:327
+msgid "via"
+msgstr "via"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:328
+msgid "Wall-to-Wall"
+msgstr "vegg-til-vegg"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:329
+msgid "via Wall-To-Wall:"
+msgstr "via vegg-til-vegg:"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:341 ../../include/conversation.php:719
+#, php-format
+msgid "from %s"
+msgstr "fra %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:344 ../../include/conversation.php:722
+#, php-format
+msgid "last edited: %s"
+msgstr "sist endret: %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:345 ../../include/conversation.php:723
+#, php-format
+msgid "Expires: %s"
+msgstr "Utløper: %s"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:370
+msgid "Save Bookmarks"
+msgstr "Lagre bokmerker"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:371
+msgid "Add to Calendar"
+msgstr "Legg til i kalender"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:380
+msgid "Mark all seen"
+msgstr "Merk alle som sett"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:421 ../../include/js_strings.php:7
+msgid "[+] show all"
+msgstr "[+] Vis alle"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:711 ../../include/conversation.php:1215
+msgid "Bold"
+msgstr "Uthevet"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:712 ../../include/conversation.php:1216
+msgid "Italic"
+msgstr "Kursiv"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:713 ../../include/conversation.php:1217
+msgid "Underline"
+msgstr "Understreket"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:714 ../../include/conversation.php:1218
+msgid "Quote"
+msgstr "Sitat"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:715 ../../include/conversation.php:1219
+msgid "Code"
+msgstr "Kode"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:716
+msgid "Image"
+msgstr "Bilde"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:717
+msgid "Insert Link"
+msgstr "Sett inn lenke"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:718
+msgid "Video"
+msgstr "Video"
+
+#: ../../include/Import/import_diaspora.php:16
+msgid "No username found in import file."
+msgstr "Ingen brukernavn ble funnet i importfilen."
+
+#: ../../include/Import/import_diaspora.php:41 ../../include/import.php:50
+msgid "Unable to create a unique channel address. Import failed."
+msgstr "Klarte ikke å lage en unik kanaladresse. Import mislyktes."
+
+#: ../../include/dba/dba_driver.php:171
+#, php-format
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr "Kan ikke finne DNS-informasjon om databasetjener '%s'"
+
+#: ../../include/taxonomy.php:188 ../../include/taxonomy.php:270
+#: ../../include/widgets.php:46 ../../include/widgets.php:429
+#: ../../include/contact_widgets.php:91
+msgid "Categories"
+msgstr "Kategorier"
+
+#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249
+msgid "Tags"
+msgstr "Merkelapper"
+
+#: ../../include/taxonomy.php:293
+msgid "Keywords"
+msgstr "Nøkkelord"
+
+#: ../../include/taxonomy.php:314
+msgid "have"
+msgstr "har"
+
+#: ../../include/taxonomy.php:314
+msgid "has"
+msgstr "har"
+
+#: ../../include/taxonomy.php:315
+msgid "want"
+msgstr "ønsker"
+
+#: ../../include/taxonomy.php:315
+msgid "wants"
+msgstr "ønsker"
+
+#: ../../include/taxonomy.php:316
+msgid "likes"
+msgstr "liker"
+
+#: ../../include/taxonomy.php:317
+msgid "dislikes"
+msgstr "misliker"
+
+#: ../../include/event.php:22 ../../include/event.php:69
+#: ../../include/bb2diaspora.php:485
+msgid "l F d, Y \\@ g:i A"
+msgstr "l F d, Y \\@ g:i A"
+
+#: ../../include/event.php:30 ../../include/event.php:73
+#: ../../include/bb2diaspora.php:491
+msgid "Starts:"
+msgstr "Starter:"
+
+#: ../../include/event.php:40 ../../include/event.php:77
+#: ../../include/bb2diaspora.php:499
+msgid "Finishes:"
+msgstr "Slutter:"
+
+#: ../../include/event.php:812
+msgid "This event has been added to your calendar."
+msgstr "Denne hendelsen er lagt til i din kalender."
+
+#: ../../include/event.php:1012
+msgid "Not specified"
+msgstr "Ikke spesifisert"
+
+#: ../../include/event.php:1013
+msgid "Needs Action"
+msgstr "Trenger handling"
+
+#: ../../include/event.php:1014
+msgid "Completed"
+msgstr "Ferdig"
+
+#: ../../include/event.php:1015
+msgid "In Process"
+msgstr "Igang"
+
+#: ../../include/event.php:1016
+msgid "Cancelled"
+msgstr "Avbrutt"
+
+#: ../../include/import.php:29
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "Kan ikke lage en kopi av kanal-identifikatoren på dette systemet. Import mislyktes."
+
+#: ../../include/import.php:76
+msgid "Channel clone failed. Import failed."
+msgstr "Kanalkloning mislyktes. Import mislyktes."
+
+#: ../../include/items.php:892 ../../include/items.php:937
+msgid "(Unknown)"
+msgstr "(Ukjent)"
+
+#: ../../include/items.php:1136
+msgid "Visible to anybody on the internet."
+msgstr "Synlig for enhver på Internett."
+
+#: ../../include/items.php:1138
+msgid "Visible to you only."
+msgstr "Synlig bare for deg."
+
+#: ../../include/items.php:1140
+msgid "Visible to anybody in this network."
+msgstr "Synlig for enhver i dette nettverket."
+
+#: ../../include/items.php:1142
+msgid "Visible to anybody authenticated."
+msgstr "Synlig for enhver som er autentisert."
+
+#: ../../include/items.php:1144
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Synlig for alle på %s."
+
+#: ../../include/items.php:1146
+msgid "Visible to all connections."
+msgstr "Synlig for alle forbindelser."
+
+#: ../../include/items.php:1148
+msgid "Visible to approved connections."
+msgstr "Synlig for godkjente forbindelser."
+
+#: ../../include/items.php:1150
+msgid "Visible to specific connections."
+msgstr "Synlig for spesifikke forbindelser."
+
+#: ../../include/items.php:3909
+msgid "Privacy group is empty."
+msgstr "Personverngruppen er tom."
+
+#: ../../include/items.php:3916
+#, php-format
+msgid "Privacy group: %s"
+msgstr "Personverngruppe: %s"
+
+#: ../../include/items.php:3928
+msgid "Connection not found."
+msgstr "Forbindelsen ble ikke funnet."
+
+#: ../../include/items.php:4277
+msgid "profile photo"
+msgstr "profilbilde"
+
+#: ../../include/message.php:20
+msgid "No recipient provided."
+msgstr "Ingen mottaker angitt."
+
+#: ../../include/message.php:25
+msgid "[no subject]"
+msgstr "[ikke noe emne]"
+
+#: ../../include/message.php:45
+msgid "Unable to determine sender."
+msgstr "Kan ikke avgjøre avsender."
+
+#: ../../include/message.php:222
+msgid "Stored post could not be verified."
+msgstr "Lagret innlegg kunne ikke bekreftes."
+
+#: ../../include/text.php:428
+msgid "prev"
+msgstr "forrige"
+
+#: ../../include/text.php:430
+msgid "first"
+msgstr "første"
+
+#: ../../include/text.php:459
+msgid "last"
+msgstr "siste"
+
+#: ../../include/text.php:462
+msgid "next"
+msgstr "neste"
+
+#: ../../include/text.php:472
+msgid "older"
+msgstr "eldre"
+
+#: ../../include/text.php:474
+msgid "newer"
+msgstr "nyere"
+
+#: ../../include/text.php:863
+msgid "No connections"
+msgstr "Ingen forbindelser"
+
+#: ../../include/text.php:888
+#, php-format
+msgid "View all %s connections"
+msgstr "Vis alle %s forbindelser"
+
+#: ../../include/text.php:1033 ../../include/text.php:1038
+msgid "poke"
+msgstr "prikk"
+
+#: ../../include/text.php:1033 ../../include/text.php:1038
+#: ../../include/conversation.php:243
+msgid "poked"
+msgstr "prikket"
+
+#: ../../include/text.php:1039
+msgid "ping"
+msgstr "varsle"
+
+#: ../../include/text.php:1039
+msgid "pinged"
+msgstr "varslet"
+
+#: ../../include/text.php:1040
+msgid "prod"
+msgstr "oppildne"
+
+#: ../../include/text.php:1040
+msgid "prodded"
+msgstr "oppildnet"
+
+#: ../../include/text.php:1041
+msgid "slap"
+msgstr "daske"
+
+#: ../../include/text.php:1041
+msgid "slapped"
+msgstr "dasket"
+
+#: ../../include/text.php:1042
+msgid "finger"
+msgstr "fingre"
+
+#: ../../include/text.php:1042
+msgid "fingered"
+msgstr "fingret"
+
+#: ../../include/text.php:1043
+msgid "rebuff"
+msgstr "tilbakevise"
+
+#: ../../include/text.php:1043
+msgid "rebuffed"
+msgstr "tilbakeviste"
+
+#: ../../include/text.php:1055
+msgid "happy"
+msgstr "glad"
+
+#: ../../include/text.php:1056
+msgid "sad"
+msgstr "trist"
+
+#: ../../include/text.php:1057
+msgid "mellow"
+msgstr "dempet"
+
+#: ../../include/text.php:1058
+msgid "tired"
+msgstr "trøtt"
+
+#: ../../include/text.php:1059
+msgid "perky"
+msgstr "oppkvikket"
+
+#: ../../include/text.php:1060
+msgid "angry"
+msgstr "sint"
+
+#: ../../include/text.php:1061
+msgid "stupefied"
+msgstr "lamslått"
+
+#: ../../include/text.php:1062
+msgid "puzzled"
+msgstr "forundret"
+
+#: ../../include/text.php:1063
+msgid "interested"
+msgstr "interessert"
+
+#: ../../include/text.php:1064
+msgid "bitter"
+msgstr "bitter"
+
+#: ../../include/text.php:1065
+msgid "cheerful"
+msgstr "munter"
+
+#: ../../include/text.php:1066
+msgid "alive"
+msgstr "levende"
+
+#: ../../include/text.php:1067
+msgid "annoyed"
+msgstr "irritert"
+
+#: ../../include/text.php:1068
+msgid "anxious"
+msgstr "nervøs"
+
+#: ../../include/text.php:1069
+msgid "cranky"
+msgstr "gretten"
+
+#: ../../include/text.php:1070
+msgid "disturbed"
+msgstr "foruroliget"
+
+#: ../../include/text.php:1071
+msgid "frustrated"
+msgstr "frustrert"
+
+#: ../../include/text.php:1072
+msgid "depressed"
+msgstr "lei seg"
+
+#: ../../include/text.php:1073
+msgid "motivated"
+msgstr "motivert"
+
+#: ../../include/text.php:1074
+msgid "relaxed"
+msgstr "avslappet"
+
+#: ../../include/text.php:1075
+msgid "surprised"
+msgstr "overrasket"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:70
+msgid "Monday"
+msgstr "mandag"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:71
+msgid "Tuesday"
+msgstr "tirsdag"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:72
+msgid "Wednesday"
+msgstr "onsdag"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:73
+msgid "Thursday"
+msgstr "torsdag"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:74
+msgid "Friday"
+msgstr "fredag"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:75
+msgid "Saturday"
+msgstr "lørdag"
+
+#: ../../include/text.php:1257 ../../include/js_strings.php:69
+msgid "Sunday"
+msgstr "søndag"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:45
+msgid "January"
+msgstr "januar"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:46
+msgid "February"
+msgstr "februar"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:47
+msgid "March"
+msgstr "mars"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:48
+msgid "April"
+msgstr "april"
+
+#: ../../include/text.php:1261
+msgid "May"
+msgstr "mai"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:50
+msgid "June"
+msgstr "juni"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:51
+msgid "July"
+msgstr "juli"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:52
+msgid "August"
+msgstr "august"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:53
+msgid "September"
+msgstr "september"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:54
+msgid "October"
+msgstr "oktober"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:55
+msgid "November"
+msgstr "november"
+
+#: ../../include/text.php:1261 ../../include/js_strings.php:56
+msgid "December"
+msgstr "desember"
+
+#: ../../include/text.php:1338 ../../include/text.php:1342
+msgid "Unknown Attachment"
+msgstr "Ukjent vedlegg"
+
+#: ../../include/text.php:1344
+msgid "unknown"
+msgstr "ukjent"
+
+#: ../../include/text.php:1380
+msgid "remove category"
+msgstr "fjern kategori"
+
+#: ../../include/text.php:1457
+msgid "remove from file"
+msgstr "fjern fra fil"
+
+#: ../../include/text.php:1753 ../../include/text.php:1824
+msgid "default"
+msgstr "standard"
+
+#: ../../include/text.php:1761
+msgid "Page layout"
+msgstr "Sidens layout"
+
+#: ../../include/text.php:1761
+msgid "You can create your own with the layouts tool"
+msgstr "Du kan lage din egen med layout-verktøyet"
+
+#: ../../include/text.php:1803
+msgid "Page content type"
+msgstr "Sidens innholdstype"
+
+#: ../../include/text.php:1836
+msgid "Select an alternate language"
+msgstr "Velg et annet språk"
+
+#: ../../include/text.php:1953
+msgid "activity"
+msgstr "aktivitet"
+
+#: ../../include/text.php:2262
+msgid "Design Tools"
+msgstr "Designverktøy"
+
+#: ../../include/text.php:2268
+msgid "Pages"
+msgstr "Sider"
+
+#: ../../include/widgets.php:103
+msgid "System"
+msgstr "System"
+
+#: ../../include/widgets.php:106
+msgid "New App"
+msgstr ""
+
+#: ../../include/widgets.php:154
+msgid "Suggestions"
+msgstr "Forslag"
+
+#: ../../include/widgets.php:155
+msgid "See more..."
+msgstr "Se mer..."
+
+#: ../../include/widgets.php:175
+#, php-format
+msgid "You have %1$.0f of %2$.0f allowed connections."
+msgstr "Du har %1$.0f av %2$.0f tillate forbindelser."
+
+#: ../../include/widgets.php:181
+msgid "Add New Connection"
+msgstr "Legg til ny forbindelse"
+
+#: ../../include/widgets.php:182
+msgid "Enter channel address"
+msgstr "Skriv kanaladressen"
+
+#: ../../include/widgets.php:183
+msgid "Examples: bob@example.com, https://example.com/barbara"
+msgstr "Eksempel: ola@eksempel.no, https://eksempel.no/kari"
+
+#: ../../include/widgets.php:199
+msgid "Notes"
+msgstr "Merknader"
+
+#: ../../include/widgets.php:273
+msgid "Remove term"
+msgstr "Fjern begrep"
+
+#: ../../include/widgets.php:281 ../../include/features.php:84
+msgid "Saved Searches"
+msgstr "Lagrede søk"
+
+#: ../../include/widgets.php:282 ../../include/group.php:316
+msgid "add"
+msgstr "legg til"
+
+#: ../../include/widgets.php:310 ../../include/contact_widgets.php:53
+#: ../../include/features.php:98
+msgid "Saved Folders"
+msgstr "Lagrede mapper"
+
+#: ../../include/widgets.php:313 ../../include/widgets.php:432
+#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94
+msgid "Everything"
+msgstr "Alt"
+
+#: ../../include/widgets.php:354
+msgid "Archives"
+msgstr "Arkiv"
+
+#: ../../include/widgets.php:516
+msgid "Refresh"
+msgstr "Forny"
+
+#: ../../include/widgets.php:556
+msgid "Account settings"
+msgstr "Kontoinnstillinger"
+
+#: ../../include/widgets.php:562
+msgid "Channel settings"
+msgstr "Kanalinnstillinger"
+
+#: ../../include/widgets.php:571
+msgid "Additional features"
+msgstr "Tilleggsfunksjoner"
+
+#: ../../include/widgets.php:578
+msgid "Feature/Addon settings"
+msgstr "Funksjons-/Tilleggsinnstillinger"
+
+#: ../../include/widgets.php:584
+msgid "Display settings"
+msgstr "Visningsinnstillinger"
+
+#: ../../include/widgets.php:591
+msgid "Manage locations"
+msgstr ""
+
+#: ../../include/widgets.php:600
+msgid "Export channel"
+msgstr "Eksporter kanal"
+
+#: ../../include/widgets.php:607
+msgid "Connected apps"
+msgstr "Tilkoblede app-er"
+
+#: ../../include/widgets.php:622
+msgid "Premium Channel Settings"
+msgstr "Premiumkanal-innstillinger"
+
+#: ../../include/widgets.php:651
+msgid "Private Mail Menu"
+msgstr "Meny for privat post"
+
+#: ../../include/widgets.php:653
+msgid "Combined View"
+msgstr "Kombinert visning"
+
+#: ../../include/widgets.php:658 ../../include/nav.php:196
+msgid "Inbox"
+msgstr "Innboks"
+
+#: ../../include/widgets.php:663 ../../include/nav.php:197
+msgid "Outbox"
+msgstr "Utboks"
+
+#: ../../include/widgets.php:668 ../../include/nav.php:198
+msgid "New Message"
+msgstr "Ny melding"
+
+#: ../../include/widgets.php:685 ../../include/widgets.php:697
+msgid "Conversations"
+msgstr "Samtaler"
+
+#: ../../include/widgets.php:689
+msgid "Received Messages"
+msgstr "Mottatte meldinger"
+
+#: ../../include/widgets.php:693
+msgid "Sent Messages"
+msgstr "Sendte meldinger"
+
+#: ../../include/widgets.php:707
+msgid "No messages."
+msgstr "Ingen meldinger."
+
+#: ../../include/widgets.php:725
+msgid "Delete conversation"
+msgstr "Slett samtale"
+
+#: ../../include/widgets.php:751
+msgid "Events Menu"
+msgstr "Meny for hendelser"
+
+#: ../../include/widgets.php:752
+msgid "Day View"
+msgstr "Dag"
+
+#: ../../include/widgets.php:753
+msgid "Week View"
+msgstr "Uke"
+
+#: ../../include/widgets.php:754
+msgid "Month View"
+msgstr "MÃ¥ned"
+
+#: ../../include/widgets.php:766
+msgid "Events Tools"
+msgstr "Kalenderverktøy"
+
+#: ../../include/widgets.php:767
+msgid "Export Calendar"
+msgstr "Eksporter kalender"
+
+#: ../../include/widgets.php:768
+msgid "Import Calendar"
+msgstr "Importer kalender"
+
+#: ../../include/widgets.php:842 ../../include/conversation.php:1662
+#: ../../include/conversation.php:1665
+msgid "Chatrooms"
+msgstr "Chatrom"
+
+#: ../../include/widgets.php:846
+msgid "Overview"
+msgstr ""
+
+#: ../../include/widgets.php:853
+msgid "Chat Members"
+msgstr ""
+
+#: ../../include/widgets.php:876
+msgid "Bookmarked Chatrooms"
+msgstr "Bokmerkede chatrom"
+
+#: ../../include/widgets.php:899
+msgid "Suggested Chatrooms"
+msgstr "Foreslåtte chatrom"
+
+#: ../../include/widgets.php:1044 ../../include/widgets.php:1156
+msgid "photo/image"
+msgstr "foto/bilde"
+
+#: ../../include/widgets.php:1099
+msgid "Click to show more"
+msgstr ""
+
+#: ../../include/widgets.php:1250
+msgid "Rating Tools"
+msgstr "Vurderingsverktøy"
+
+#: ../../include/widgets.php:1254 ../../include/widgets.php:1256
+msgid "Rate Me"
+msgstr "Vurder meg"
+
+#: ../../include/widgets.php:1259
+msgid "View Ratings"
+msgstr "Vis vurderinger"
+
+#: ../../include/widgets.php:1316
+msgid "Forums"
+msgstr "Forum"
+
+#: ../../include/widgets.php:1345
+msgid "Tasks"
+msgstr "Oppgaver"
+
+#: ../../include/widgets.php:1354
+msgid "Documentation"
+msgstr "Dokumentasjon"
+
+#: ../../include/widgets.php:1356
+msgid "Project/Site Information"
+msgstr "Prosjekt-/Nettstedsinformasjon"
+
+#: ../../include/widgets.php:1357
+msgid "For Members"
+msgstr "For medlemmer"
+
+#: ../../include/widgets.php:1358
+msgid "For Administrators"
+msgstr "For administratorer"
+
+#: ../../include/widgets.php:1359
+msgid "For Developers"
+msgstr "For utviklere"
+
+#: ../../include/widgets.php:1383 ../../include/widgets.php:1421
+msgid "Member registrations waiting for confirmation"
+msgstr ""
+
+#: ../../include/widgets.php:1389
+msgid "Inspect queue"
+msgstr "Inspiser kø"
+
+#: ../../include/widgets.php:1391
+msgid "DB updates"
+msgstr "Databaseoppdateringer"
+
+#: ../../include/widgets.php:1416 ../../include/nav.php:216
+msgid "Admin"
+msgstr "Administrator"
+
+#: ../../include/widgets.php:1417
+msgid "Plugin Features"
+msgstr "Tilleggsfunksjoner"
+
+#: ../../include/follow.php:27
+msgid "Channel is blocked on this site."
+msgstr "Kanalen er blokkert på dette nettstedet."
+
+#: ../../include/follow.php:32
+msgid "Channel location missing."
+msgstr "Kanalplassering mangler."
+
+#: ../../include/follow.php:81
+msgid "Response from remote channel was incomplete."
+msgstr "Svaret fra den andre kanalen var ikke komplett."
+
+#: ../../include/follow.php:98
+msgid "Channel was deleted and no longer exists."
+msgstr "Kanalen er slettet og finnes ikke lenger."
+
+#: ../../include/follow.php:154 ../../include/follow.php:190
+msgid "Protocol disabled."
+msgstr "Protokollen er avskrudd."
+
+#: ../../include/follow.php:178
+msgid "Channel discovery failed."
+msgstr "Kanaloppdagelse mislyktes."
+
+#: ../../include/follow.php:216
+msgid "Cannot connect to yourself."
+msgstr "Kan ikke lage forbindelse med deg selv."
+
+#: ../../include/bookmarks.php:35
+#, php-format
+msgid "%1$s's bookmarks"
+msgstr "%1$s sine bokmerker"
+
+#: ../../include/api.php:1336
+msgid "Public Timeline"
+msgstr "Offentlig tidslinje"
+
+#: ../../include/bbcode.php:123 ../../include/bbcode.php:844
+#: ../../include/bbcode.php:847 ../../include/bbcode.php:852
+#: ../../include/bbcode.php:855 ../../include/bbcode.php:858
+#: ../../include/bbcode.php:861 ../../include/bbcode.php:866
+#: ../../include/bbcode.php:869 ../../include/bbcode.php:874
+#: ../../include/bbcode.php:877 ../../include/bbcode.php:880
+#: ../../include/bbcode.php:883
+msgid "Image/photo"
+msgstr "Bilde/fotografi"
+
+#: ../../include/bbcode.php:162 ../../include/bbcode.php:894
+msgid "Encrypted content"
+msgstr "Kryptert innhold"
+
+#: ../../include/bbcode.php:178
+#, php-format
+msgid "Install %s element: "
+msgstr "Installer %s element:"
+
+#: ../../include/bbcode.php:182
+#, php-format
+msgid ""
+"This post contains an installable %s element, however you lack permissions "
+"to install it on this site."
+msgstr "Dette innlegget inneholder det installerbare elementet %s, men du mangler tillatelse til å installere det på dette nettstedet."
+
+#: ../../include/bbcode.php:254
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s skrev følgende %2$s %3$s"
+
+#: ../../include/bbcode.php:331 ../../include/bbcode.php:339
+msgid "Click to open/close"
+msgstr "Klikk for å åpne/lukke"
+
+#: ../../include/bbcode.php:339
+msgid "spoiler"
+msgstr ""
+
+#: ../../include/bbcode.php:585
+msgid "Different viewers will see this text differently"
+msgstr "Denne teksten vil se forskjellig ut for ulike besøkende"
+
+#: ../../include/bbcode.php:832
+msgid "$1 wrote:"
+msgstr "$1 skrev:"
+
+#: ../../include/dir_fns.php:141
+msgid "Directory Options"
+msgstr "Kataloginnstillinger"
+
+#: ../../include/dir_fns.php:143
+msgid "Safe Mode"
+msgstr "Trygt modus"
+
+#: ../../include/dir_fns.php:144
+msgid "Public Forums Only"
+msgstr "Bare offentlige forum"
+
+#: ../../include/dir_fns.php:145
+msgid "This Website Only"
+msgstr "Kun dette nettstedet"
+
+#: ../../include/security.php:383
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "Skjemaets sikkerhetspollett var ikke gyldig. Dette skjedde antakelig fordi skjemaet har vært åpnet for lenge (>3 timer) før det ble sendt inn."
+
+#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1702
+msgid "Logout"
+msgstr "Logg ut"
+
+#: ../../include/nav.php:82 ../../include/nav.php:113
+msgid "End this session"
+msgstr "Avslutt denne økten"
+
+#: ../../include/nav.php:85 ../../include/nav.php:144
+msgid "Home"
+msgstr "Hjem"
+
+#: ../../include/nav.php:85
+msgid "Your posts and conversations"
+msgstr "Dine innlegg og samtaler"
+
+#: ../../include/nav.php:86
+msgid "Your profile page"
+msgstr "Din profilside"
+
+#: ../../include/nav.php:88
+msgid "Manage/Edit profiles"
+msgstr "HÃ¥ndter/endre profiler"
+
+#: ../../include/nav.php:90 ../../include/channel.php:941
+msgid "Edit Profile"
+msgstr "Endre profil"
+
+#: ../../include/nav.php:90
+msgid "Edit your profile"
+msgstr "Endre din profil"
+
+#: ../../include/nav.php:92
+msgid "Your photos"
+msgstr "Dine bilder"
+
+#: ../../include/nav.php:93
+msgid "Your files"
+msgstr "Dine filer"
+
+#: ../../include/nav.php:96
+msgid "Your chatrooms"
+msgstr "Dine chatterom"
+
+#: ../../include/nav.php:102 ../../include/conversation.php:1675
+msgid "Bookmarks"
+msgstr "Bokmerker"
+
+#: ../../include/nav.php:102
+msgid "Your bookmarks"
+msgstr "Dine bokmerker"
+
+#: ../../include/nav.php:106
+msgid "Your webpages"
+msgstr "Dine websider"
+
+#: ../../include/nav.php:110
+msgid "Sign in"
+msgstr "Logg på"
+
+#: ../../include/nav.php:127
+#, php-format
+msgid "%s - click to logout"
+msgstr "%s - klikk for å logge ut"
+
+#: ../../include/nav.php:130
+msgid "Remote authentication"
+msgstr "Fjernautentisering"
+
+#: ../../include/nav.php:130
+msgid "Click to authenticate to your home hub"
+msgstr "Klikk for å godkjennes mot din hjemme-hub"
+
+#: ../../include/nav.php:144
+msgid "Home Page"
+msgstr "Hjemmeside"
+
+#: ../../include/nav.php:147
+msgid "Create an account"
+msgstr "Lag en konto"
+
+#: ../../include/nav.php:159
+msgid "Help and documentation"
+msgstr "Hjelp og dokumentasjon"
+
+#: ../../include/nav.php:163
+msgid "Applications, utilities, links, games"
+msgstr "Programmer, verktøy, lenker, spill"
+
+#: ../../include/nav.php:165
+msgid "Search site @name, #tag, ?docs, content"
+msgstr "Søk nettstedet for @navn, #merkelapp, ?dokumentasjon, innhold"
+
+#: ../../include/nav.php:167
+msgid "Channel Directory"
+msgstr "Kanalkatalog"
+
+#: ../../include/nav.php:179
+msgid "Your grid"
+msgstr "Ditt nett"
+
+#: ../../include/nav.php:180
+msgid "Mark all grid notifications seen"
+msgstr "Marker alle nettvarsler som sett"
+
+#: ../../include/nav.php:182
+msgid "Channel home"
+msgstr "Kanalhjem"
+
+#: ../../include/nav.php:183
+msgid "Mark all channel notifications seen"
+msgstr "Merk alle kanalvarsler som sett"
+
+#: ../../include/nav.php:189
+msgid "Notices"
+msgstr "Varsel"
+
+#: ../../include/nav.php:189
+msgid "Notifications"
+msgstr "Varsler"
+
+#: ../../include/nav.php:190
+msgid "See all notifications"
+msgstr "Se alle varsler"
+
+#: ../../include/nav.php:193
+msgid "Private mail"
+msgstr "Privat post"
+
+#: ../../include/nav.php:194
+msgid "See all private messages"
+msgstr "Se alle private meldinger"
+
+#: ../../include/nav.php:195
+msgid "Mark all private messages seen"
+msgstr "Merk alle private meldinger som sett"
+
+#: ../../include/nav.php:201
+msgid "Event Calendar"
+msgstr "Kalender"
+
+#: ../../include/nav.php:202
+msgid "See all events"
+msgstr "Se alle hendelser"
+
+#: ../../include/nav.php:203
+msgid "Mark all events seen"
+msgstr "Merk alle hendelser som sett"
+
+#: ../../include/nav.php:206
+msgid "Manage Your Channels"
+msgstr "HÃ¥ndter dine kanaler"
+
+#: ../../include/nav.php:208
+msgid "Account/Channel Settings"
+msgstr "Konto-/kanal-innstillinger"
+
+#: ../../include/nav.php:216
+msgid "Site Setup and Configuration"
+msgstr "Nettstedsoppsett og -konfigurasjon"
+
+#: ../../include/nav.php:247 ../../include/conversation.php:851
+msgid "Loading..."
+msgstr "Laster..."
+
+#: ../../include/nav.php:252
+msgid "@name, #tag, ?doc, content"
+msgstr "@navn, #merkelapp, ?dokumentasjon, innhold"
+
+#: ../../include/nav.php:253
+msgid "Please wait..."
+msgstr "Vennligst vent..."
+
+#: ../../include/connections.php:95
+msgid "New window"
+msgstr "Nytt vindu"
+
+#: ../../include/connections.php:96
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Ã…pne det valgte stedet i et annet vindu eller nettleser-fane"
+
+#: ../../include/connections.php:214
+#, php-format
+msgid "User '%s' deleted"
+msgstr "Brukeren '%s' er slettet"
+
+#: ../../include/contact_widgets.php:11
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "%d invitasjon tilgjengelig"
+msgstr[1] "%d invitasjoner tilgjengelig"
+
+#: ../../include/contact_widgets.php:19
+msgid "Find Channels"
+msgstr "Finn kanaler"
+
+#: ../../include/contact_widgets.php:20
+msgid "Enter name or interest"
+msgstr "Skriv navn eller interesse"
+
+#: ../../include/contact_widgets.php:21
+msgid "Connect/Follow"
+msgstr "Forbindelse/Følg"
+
+#: ../../include/contact_widgets.php:22
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "Eksempler: Ola Nordmann, fisking"
+
+#: ../../include/contact_widgets.php:26
+msgid "Random Profile"
+msgstr "Tilfeldig profil"
+
+#: ../../include/contact_widgets.php:27
+msgid "Invite Friends"
+msgstr "Inviter venner"
+
+#: ../../include/contact_widgets.php:29
+msgid "Advanced example: name=fred and country=iceland"
+msgstr "Avansert eksempel: navn=fred og land=island"
+
+#: ../../include/contact_widgets.php:122
+#, php-format
+msgid "%d connection in common"
+msgid_plural "%d connections in common"
+msgstr[0] "%d forbindelse felles"
+msgstr[1] "%d forbindelser felles"
+
+#: ../../include/contact_widgets.php:127
+msgid "show more"
+msgstr "vis mer"
+
+#: ../../include/conversation.php:204
+#, php-format
+msgid "%1$s is now connected with %2$s"
+msgstr "%1$s er nå forbundet med %2$s"
+
+#: ../../include/conversation.php:239
+#, php-format
+msgid "%1$s poked %2$s"
+msgstr "%1$s prikket %2$s"
+
+#: ../../include/conversation.php:691
+#, php-format
+msgid "View %s's profile @ %s"
+msgstr "Vis %s sin profile @ %s"
+
+#: ../../include/conversation.php:710
+msgid "Categories:"
+msgstr "Kategorier:"
+
+#: ../../include/conversation.php:711
+msgid "Filed under:"
+msgstr "Sortert under:"
+
+#: ../../include/conversation.php:738
+msgid "View in context"
+msgstr "Vis i sammenheng"
+
+#: ../../include/conversation.php:847
+msgid "remove"
+msgstr "fjern"
+
+#: ../../include/conversation.php:852
+msgid "Delete Selected Items"
+msgstr "Slett valgte elementer"
+
+#: ../../include/conversation.php:948
+msgid "View Source"
+msgstr "Vis kilde"
+
+#: ../../include/conversation.php:949
+msgid "Follow Thread"
+msgstr "Følg tråd"
+
+#: ../../include/conversation.php:950
+msgid "Unfollow Thread"
+msgstr "Ikke følg tråd"
+
+#: ../../include/conversation.php:955
+msgid "Activity/Posts"
+msgstr "Aktivitet/Innlegg"
+
+#: ../../include/conversation.php:957
+msgid "Edit Connection"
+msgstr "Endre forbindelse"
+
+#: ../../include/conversation.php:958
+msgid "Message"
+msgstr "Melding"
+
+#: ../../include/conversation.php:1075
+#, php-format
+msgid "%s likes this."
+msgstr "%s liker dette."
+
+#: ../../include/conversation.php:1075
+#, php-format
+msgid "%s doesn't like this."
+msgstr "%s liker ikke dette."
+
+#: ../../include/conversation.php:1079
+#, php-format
+msgid "<span %1$s>%2$d people</span> like this."
+msgid_plural "<span %1$s>%2$d people</span> like this."
+msgstr[0] "<span %1$s>%2$d person</span> liker dette."
+msgstr[1] "<span %1$s>%2$d personer</span> liker dette."
+
+#: ../../include/conversation.php:1081
+#, php-format
+msgid "<span %1$s>%2$d people</span> don't like this."
+msgid_plural "<span %1$s>%2$d people</span> don't like this."
+msgstr[0] "<span %1$s>%2$d person</span> liker ikke dette."
+msgstr[1] "<span %1$s>%2$d personer</span> liker ikke dette."
+
+#: ../../include/conversation.php:1087
+msgid "and"
+msgstr "og"
+
+#: ../../include/conversation.php:1090
+#, php-format
+msgid ", and %d other people"
+msgid_plural ", and %d other people"
+msgstr[0] ", og %d annen person"
+msgstr[1] ", og %d andre personer"
+
+#: ../../include/conversation.php:1091
+#, php-format
+msgid "%s like this."
+msgstr "%s liker dette."
+
+#: ../../include/conversation.php:1091
+#, php-format
+msgid "%s don't like this."
+msgstr "%s liker ikke dette."
+
+#: ../../include/conversation.php:1130
+msgid "Set your location"
+msgstr "Angi din plassering"
+
+#: ../../include/conversation.php:1131
+msgid "Clear browser location"
+msgstr "Fjern nettleserplassering"
+
+#: ../../include/conversation.php:1177
+msgid "Tag term:"
+msgstr "Merkelapp:"
+
+#: ../../include/conversation.php:1178
+msgid "Where are you right now?"
+msgstr "Hvor er du akkurat nå?"
+
+#: ../../include/conversation.php:1210
+msgid "Page link name"
+msgstr "Sidens lenkenavn"
+
+#: ../../include/conversation.php:1213
+msgid "Post as"
+msgstr "Lag innlegg som"
+
+#: ../../include/conversation.php:1223
+msgid "Toggle voting"
+msgstr "Skru av eller på stemming"
+
+#: ../../include/conversation.php:1231
+msgid "Categories (optional, comma-separated list)"
+msgstr "Kategorier (valgfri, kommaseparert liste)"
+
+#: ../../include/conversation.php:1254
+msgid "Set publish date"
+msgstr "Angi publiseringsdato"
+
+#: ../../include/conversation.php:1258
+msgid "OK"
+msgstr "OK"
+
+#: ../../include/conversation.php:1503
+msgid "Discover"
+msgstr "Oppdage"
+
+#: ../../include/conversation.php:1506
+msgid "Imported public streams"
+msgstr "Importerte offentlige strømmer"
+
+#: ../../include/conversation.php:1511
+msgid "Commented Order"
+msgstr "Kommentert"
+
+#: ../../include/conversation.php:1514
+msgid "Sort by Comment Date"
+msgstr "Sorter etter kommentert dato"
+
+#: ../../include/conversation.php:1518
+msgid "Posted Order"
+msgstr "Lagt inn"
+
+#: ../../include/conversation.php:1521
+msgid "Sort by Post Date"
+msgstr "Sorter etter innleggsdato"
+
+#: ../../include/conversation.php:1529
+msgid "Posts that mention or involve you"
+msgstr "Innlegg som nevner eller involverer deg"
+
+#: ../../include/conversation.php:1538
+msgid "Activity Stream - by date"
+msgstr "Aktivitetsstrøm - etter dato"
+
+#: ../../include/conversation.php:1544
+msgid "Starred"
+msgstr "Stjerne"
+
+#: ../../include/conversation.php:1547
+msgid "Favourite Posts"
+msgstr "Favorittinnlegg"
+
+#: ../../include/conversation.php:1554
+msgid "Spam"
+msgstr "Søppel"
+
+#: ../../include/conversation.php:1557
+msgid "Posts flagged as SPAM"
+msgstr "Innlegg merket som SØPPEL"
+
+#: ../../include/conversation.php:1614
+msgid "Status Messages and Posts"
+msgstr "Statusmeldinger og -innlegg"
+
+#: ../../include/conversation.php:1623
+msgid "About"
+msgstr "Om"
+
+#: ../../include/conversation.php:1626
+msgid "Profile Details"
+msgstr "Profildetaljer"
+
+#: ../../include/conversation.php:1635 ../../include/photos.php:502
+msgid "Photo Albums"
+msgstr "Fotoalbum"
+
+#: ../../include/conversation.php:1642
+msgid "Files and Storage"
+msgstr "Filer og lagring"
+
+#: ../../include/conversation.php:1678
+msgid "Saved Bookmarks"
+msgstr "Lagrede bokmerker"
+
+#: ../../include/conversation.php:1688
+msgid "Manage Webpages"
+msgstr "HÃ¥ndtere websider"
+
+#: ../../include/conversation.php:1747
+msgctxt "noun"
+msgid "Attending"
+msgid_plural "Attending"
+msgstr[0] "Deltar"
+msgstr[1] "Deltar"
+
+#: ../../include/conversation.php:1750
+msgctxt "noun"
+msgid "Not Attending"
+msgid_plural "Not Attending"
+msgstr[0] "Deltar ikke"
+msgstr[1] "Deltar ikke"
+
+#: ../../include/conversation.php:1753
+msgctxt "noun"
+msgid "Undecided"
+msgid_plural "Undecided"
+msgstr[0] "Ikke bestemt"
+msgstr[1] "Ikke bestemt"
+
+#: ../../include/conversation.php:1756
+msgctxt "noun"
+msgid "Agree"
+msgid_plural "Agrees"
+msgstr[0] "Enig"
+msgstr[1] "Enige"
+
+#: ../../include/conversation.php:1759
+msgctxt "noun"
+msgid "Disagree"
+msgid_plural "Disagrees"
+msgstr[0] "Uenig"
+msgstr[1] "Uenige"
+
+#: ../../include/conversation.php:1762
+msgctxt "noun"
+msgid "Abstain"
+msgid_plural "Abstains"
+msgstr[0] "Avstår"
+msgstr[1] "Avstår"
+
+#: ../../include/selectors.php:30
+msgid "Frequently"
+msgstr "Ofte"
+
+#: ../../include/selectors.php:31
+msgid "Hourly"
+msgstr "Hver time"
+
+#: ../../include/selectors.php:32
+msgid "Twice daily"
+msgstr "To ganger daglig"
+
+#: ../../include/selectors.php:33
+msgid "Daily"
+msgstr "Daglig"
+
+#: ../../include/selectors.php:34
+msgid "Weekly"
+msgstr "Ukentlig"
+
+#: ../../include/selectors.php:35
+msgid "Monthly"
+msgstr "MÃ¥nedlig"
+
+#: ../../include/selectors.php:49
+msgid "Currently Male"
+msgstr "For tiden mann"
+
+#: ../../include/selectors.php:49
+msgid "Currently Female"
+msgstr "For tiden kvinne"
+
+#: ../../include/selectors.php:49
+msgid "Mostly Male"
+msgstr "For det meste mann"
+
+#: ../../include/selectors.php:49
+msgid "Mostly Female"
+msgstr "For det meste kvinne"
+
+#: ../../include/selectors.php:49
+msgid "Transgender"
+msgstr "Transkjønnet"
+
+#: ../../include/selectors.php:49
+msgid "Intersex"
+msgstr "interkjønnet"
+
+#: ../../include/selectors.php:49
+msgid "Transsexual"
+msgstr "Transseksuell"
+
+#: ../../include/selectors.php:49
+msgid "Hermaphrodite"
+msgstr "Hermafroditt"
+
+#: ../../include/selectors.php:49
+msgid "Neuter"
+msgstr "Intetkjønn"
+
+#: ../../include/selectors.php:49
+msgid "Non-specific"
+msgstr "Ubestemt"
+
+#: ../../include/selectors.php:49 ../../include/selectors.php:66
+#: ../../include/selectors.php:104 ../../include/selectors.php:140
+#: ../../include/permissions.php:881
+msgid "Other"
+msgstr "Annen"
+
+#: ../../include/selectors.php:49
+msgid "Undecided"
+msgstr "Ubestemt"
+
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Males"
+msgstr "Menn"
+
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Females"
+msgstr "Kvinner"
+
+#: ../../include/selectors.php:85
+msgid "Gay"
+msgstr "Homo"
+
+#: ../../include/selectors.php:85
+msgid "Lesbian"
+msgstr "Lesbisk"
+
+#: ../../include/selectors.php:85
+msgid "No Preference"
+msgstr "Ingen preferanse"
+
+#: ../../include/selectors.php:85
+msgid "Bisexual"
+msgstr "Biseksuell"
+
+#: ../../include/selectors.php:85
+msgid "Autosexual"
+msgstr "Autoseksuell"
+
+#: ../../include/selectors.php:85
+msgid "Abstinent"
+msgstr "Avholdende"
+
+#: ../../include/selectors.php:85
+msgid "Virgin"
+msgstr "Jomfru"
+
+#: ../../include/selectors.php:85
+msgid "Deviant"
+msgstr "Avviker"
+
+#: ../../include/selectors.php:85
+msgid "Fetish"
+msgstr "Fetisj"
+
+#: ../../include/selectors.php:85
+msgid "Oodles"
+msgstr "Masse"
+
+#: ../../include/selectors.php:85
+msgid "Nonsexual"
+msgstr "Ikke-seksuell"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Single"
+msgstr "Enslig"
+
+#: ../../include/selectors.php:123
+msgid "Lonely"
+msgstr "Ensom"
+
+#: ../../include/selectors.php:123
+msgid "Available"
+msgstr "Tilgjengelig"
+
+#: ../../include/selectors.php:123
+msgid "Unavailable"
+msgstr "Ikke tilgjengelig"
+
+#: ../../include/selectors.php:123
+msgid "Has crush"
+msgstr "Er forelsket"
+
+#: ../../include/selectors.php:123
+msgid "Infatuated"
+msgstr "Betatt"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Dating"
+msgstr "Sammen med"
+
+#: ../../include/selectors.php:123
+msgid "Unfaithful"
+msgstr "Utro"
+
+#: ../../include/selectors.php:123
+msgid "Sex Addict"
+msgstr "Sexavhengig"
+
+#: ../../include/selectors.php:123
+msgid "Friends/Benefits"
+msgstr "Venner med frynsegoder"
+
+#: ../../include/selectors.php:123
+msgid "Casual"
+msgstr "Tilfeldig"
+
+#: ../../include/selectors.php:123
+msgid "Engaged"
+msgstr "Forlovet"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Married"
+msgstr "Gift"
+
+#: ../../include/selectors.php:123
+msgid "Imaginarily married"
+msgstr "Gift i fantasien"
+
+#: ../../include/selectors.php:123
+msgid "Partners"
+msgstr "Partnere"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Cohabiting"
+msgstr "Samboer"
+
+#: ../../include/selectors.php:123
+msgid "Common law"
+msgstr "Samboer"
+
+#: ../../include/selectors.php:123
+msgid "Happy"
+msgstr "Lykkelig"
+
+#: ../../include/selectors.php:123
+msgid "Not looking"
+msgstr "Ikke på utkikk"
+
+#: ../../include/selectors.php:123
+msgid "Swinger"
+msgstr "Partnerbytte"
+
+#: ../../include/selectors.php:123
+msgid "Betrayed"
+msgstr "Bedratt"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Separated"
+msgstr "Separert"
+
+#: ../../include/selectors.php:123
+msgid "Unstable"
+msgstr "Ustabilt"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Divorced"
+msgstr "Skilt"
+
+#: ../../include/selectors.php:123
+msgid "Imaginarily divorced"
+msgstr "Skilt i fantasien"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Widowed"
+msgstr "Enke"
+
+#: ../../include/selectors.php:123
+msgid "Uncertain"
+msgstr "Usikkert"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "It's complicated"
+msgstr "Det er komplisert"
+
+#: ../../include/selectors.php:123
+msgid "Don't care"
+msgstr "Bryr meg ikke"
+
+#: ../../include/selectors.php:123
+msgid "Ask me"
+msgstr "Spør meg"
+
+#: ../../include/PermissionDescription.php:31
+#: ../../include/acl_selectors.php:232
+msgid "Visible to your default audience"
+msgstr "Synlig for ditt standard publikum"
+
+#: ../../include/PermissionDescription.php:115
+#: ../../include/acl_selectors.php:268
+msgid "Only me"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:116
+msgid "Public"
+msgstr "Offentlig"
+
+#: ../../include/PermissionDescription.php:117
+msgid "Anybody in the $Projectname network"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:118
+#, php-format
+msgid "Any account on %s"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:119
+msgid "Any of my connections"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:120
+msgid "Only connections I specifically allow"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:121
+msgid "Anybody authenticated (could include visitors from other networks)"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:122
+msgid "Any connections including those who haven't yet been approved"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:161
+msgid ""
+"This is your default setting for the audience of your normal stream, and "
+"posts."
+msgstr ""
+
+#: ../../include/PermissionDescription.php:162
+msgid ""
+"This is your default setting for who can view your default channel profile"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:163
+msgid "This is your default setting for who can view your connections"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:164
+msgid ""
+"This is your default setting for who can view your file storage and photos"
+msgstr ""
+
+#: ../../include/PermissionDescription.php:165
+msgid "This is your default setting for the audience of your webpages"
+msgstr ""
+
+#: ../../include/account.php:28
+msgid "Not a valid email address"
+msgstr "Ikke en gyldig e-postadresse"
+
+#: ../../include/account.php:30
+msgid "Your email domain is not among those allowed on this site"
+msgstr "Ditt e-postdomene er ikke blant de som er tillatt på dette stedet"
+
+#: ../../include/account.php:36
+msgid "Your email address is already registered at this site."
+msgstr "Din e-postadresse er allerede registrert på dette nettstedet."
+
+#: ../../include/account.php:68
+msgid "An invitation is required."
+msgstr "En invitasjon er påkrevd."
+
+#: ../../include/account.php:72
+msgid "Invitation could not be verified."
+msgstr "Invitasjon kunne ikke bekreftes."
+
+#: ../../include/account.php:122
+msgid "Please enter the required information."
+msgstr "Vennligst skriv inn nødvendig informasjon."
+
+#: ../../include/account.php:189
+msgid "Failed to store account information."
+msgstr "Mislyktes med å lagre kontoinformasjon."
+
+#: ../../include/account.php:249
+#, php-format
+msgid "Registration confirmation for %s"
+msgstr "Registreringsbekreftelse for %s"
+
+#: ../../include/account.php:315
+#, php-format
+msgid "Registration request at %s"
+msgstr "Registreringsforespørsel hos %s"
+
+#: ../../include/account.php:317 ../../include/account.php:344
+#: ../../include/account.php:404 ../../include/network.php:1871
+msgid "Administrator"
+msgstr "Administrator"
+
+#: ../../include/account.php:339
+msgid "your registration password"
+msgstr "ditt registreringspassord"
+
+#: ../../include/account.php:342 ../../include/account.php:402
+#, php-format
+msgid "Registration details for %s"
+msgstr "Registreringsdetaljer for %s"
+
+#: ../../include/account.php:414
+msgid "Account approved."
+msgstr "Konto godkjent."
+
+#: ../../include/account.php:454
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Registrering trukket tilbake for %s"
+
+#: ../../include/account.php:506
+msgid "Account verified. Please login."
+msgstr "Konto bekreftet. Vennligst logg inn."
+
+#: ../../include/account.php:723 ../../include/account.php:725
+msgid "Click here to upgrade."
+msgstr "Klikk her for å oppgradere."
+
+#: ../../include/account.php:731
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Denne handlingen går utenfor grensene satt i din abonnementsplan."
+
+#: ../../include/account.php:736
+msgid "This action is not available under your subscription plan."
+msgstr "Denne handlingen er ikke tilgjengelig i din abonnementsplan."
+
+#: ../../include/attach.php:247 ../../include/attach.php:333
+msgid "Item was not found."
+msgstr "Elementet ble ikke funnet."
+
+#: ../../include/attach.php:497
+msgid "No source file."
+msgstr "Ingen kildefil."
+
+#: ../../include/attach.php:519
+msgid "Cannot locate file to replace"
+msgstr "Kan ikke finne filen som skal byttes ut"
+
+#: ../../include/attach.php:537
+msgid "Cannot locate file to revise/update"
+msgstr "Finner ikke filen som skal revideres/oppdateres"
+
+#: ../../include/attach.php:672
+#, php-format
+msgid "File exceeds size limit of %d"
+msgstr "Filens størrelse overgår grensen på %d"
+
+#: ../../include/attach.php:686
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+msgstr "Du har nådd din lagringsgrense for vedlegg på %1$.0f Mbytes."
+
+#: ../../include/attach.php:842
+msgid "File upload failed. Possible system limit or action terminated."
+msgstr "Mislyktes med å laste opp filen. Mulig systemgrense eller handling avbrutt."
+
+#: ../../include/attach.php:855
+msgid "Stored file could not be verified. Upload failed."
+msgstr "Lagret fil kunne ikke bekreftes. Opplasting mislyktes."
+
+#: ../../include/attach.php:909 ../../include/attach.php:925
+msgid "Path not available."
+msgstr "Stien er ikke tilgjengelig."
+
+#: ../../include/attach.php:971 ../../include/attach.php:1123
+msgid "Empty pathname"
+msgstr "Tomt sti-navn"
+
+#: ../../include/attach.php:997
+msgid "duplicate filename or path"
+msgstr "duplikat av filnavn eller sti"
+
+#: ../../include/attach.php:1019
+msgid "Path not found."
+msgstr "Stien ble ikke funnet."
+
+#: ../../include/attach.php:1077
+msgid "mkdir failed."
+msgstr "mkdir mislyktes."
+
+#: ../../include/attach.php:1081
+msgid "database storage failed."
+msgstr "databaselagring mislyktes."
+
+#: ../../include/attach.php:1129
+msgid "Empty path"
+msgstr "Tom sti"
+
+#: ../../include/channel.php:32
+msgid "Unable to obtain identity information from database"
+msgstr "Klarer ikke å få tak i identitetsinformasjon fra databasen"
+
+#: ../../include/channel.php:66
+msgid "Empty name"
+msgstr "Mangler navn"
+
+#: ../../include/channel.php:69
+msgid "Name too long"
+msgstr "Navnet er for langt"
+
+#: ../../include/channel.php:180
+msgid "No account identifier"
+msgstr "Ingen kontoidentifikator"
+
+#: ../../include/channel.php:192
+msgid "Nickname is required."
+msgstr "Kallenavn er påkrevd."
+
+#: ../../include/channel.php:206
+msgid "Reserved nickname. Please choose another."
+msgstr "Reservert kallenavn. Vennligst velg et annet."
+
+#: ../../include/channel.php:211
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "Kallenavnet inneholder tegn som ikke er støttet eller det er allerede i bruk på dette nettstedet."
+
+#: ../../include/channel.php:287
+msgid "Unable to retrieve created identity"
+msgstr "Klarer ikke å hente den lagede identiteten"
+
+#: ../../include/channel.php:345
+msgid "Default Profile"
+msgstr "Standardprofil"
+
+#: ../../include/channel.php:791
+msgid "Requested channel is not available."
+msgstr "Forespurt kanal er ikke tilgjengelig."
+
+#: ../../include/channel.php:938
+msgid "Create New Profile"
+msgstr "Lag ny profil"
+
+#: ../../include/channel.php:958
+msgid "Visible to everybody"
+msgstr ""
+
+#: ../../include/channel.php:1031 ../../include/channel.php:1142
+msgid "Gender:"
+msgstr "Kjønn:"
+
+#: ../../include/channel.php:1032 ../../include/channel.php:1186
+msgid "Status:"
+msgstr "Status:"
+
+#: ../../include/channel.php:1033 ../../include/channel.php:1197
+msgid "Homepage:"
+msgstr "Hjemmeside:"
+
+#: ../../include/channel.php:1034
+msgid "Online Now"
+msgstr "Online nå"
+
+#: ../../include/channel.php:1147
+msgid "Like this channel"
+msgstr "Lik denne kanalen"
+
+#: ../../include/channel.php:1171
+msgid "j F, Y"
+msgstr "j F, Y"
+
+#: ../../include/channel.php:1172
+msgid "j F"
+msgstr "j F"
+
+#: ../../include/channel.php:1179
+msgid "Birthday:"
+msgstr "Fødselsdag:"
+
+#: ../../include/channel.php:1192
+#, php-format
+msgid "for %1$d %2$s"
+msgstr "for %1$d %2$s"
+
+#: ../../include/channel.php:1195
+msgid "Sexual Preference:"
+msgstr "Seksuell preferanse:"
+
+#: ../../include/channel.php:1201
+msgid "Tags:"
+msgstr "Merkelapper:"
+
+#: ../../include/channel.php:1203
+msgid "Political Views:"
+msgstr "Politiske synspunkter:"
+
+#: ../../include/channel.php:1205
+msgid "Religion:"
+msgstr "Religion:"
+
+#: ../../include/channel.php:1209
+msgid "Hobbies/Interests:"
+msgstr "Hobbyer/interesser:"
+
+#: ../../include/channel.php:1211
+msgid "Likes:"
+msgstr "Liker:"
+
+#: ../../include/channel.php:1213
+msgid "Dislikes:"
+msgstr "Misliker:"
+
+#: ../../include/channel.php:1215
+msgid "Contact information and Social Networks:"
+msgstr "Kontaktinformasjon og sosiale nettverk:"
+
+#: ../../include/channel.php:1217
+msgid "My other channels:"
+msgstr "Mine andre kanaler:"
+
+#: ../../include/channel.php:1219
+msgid "Musical interests:"
+msgstr "Musikkinteresse:"
+
+#: ../../include/channel.php:1221
+msgid "Books, literature:"
+msgstr "Bøker, litteratur:"
+
+#: ../../include/channel.php:1223
+msgid "Television:"
+msgstr "TV:"
+
+#: ../../include/channel.php:1225
+msgid "Film/dance/culture/entertainment:"
+msgstr "Film/dans/kultur/underholdning:"
+
+#: ../../include/channel.php:1227
+msgid "Love/Romance:"
+msgstr "Kjærlighet/romantikk:"
+
+#: ../../include/channel.php:1229
+msgid "Work/employment:"
+msgstr "Arbeid/sysselsetting:"
+
+#: ../../include/channel.php:1231
+msgid "School/education:"
+msgstr "Skole/utdannelse:"
+
+#: ../../include/channel.php:1251
+msgid "Like this thing"
+msgstr "Lik denne tingen"
+
+#: ../../include/features.php:48
+msgid "General Features"
+msgstr "Generelle funksjoner"
+
+#: ../../include/features.php:50
+msgid "Content Expiration"
+msgstr "Innholdet utløper"
+
+#: ../../include/features.php:50
+msgid "Remove posts/comments and/or private messages at a future time"
+msgstr "Fjern innlegg/kommentarer og/eller private meldinger på et angitt tidspunkt i fremtiden"
+
+#: ../../include/features.php:51
+msgid "Multiple Profiles"
+msgstr "Flere profiler"
+
+#: ../../include/features.php:51
+msgid "Ability to create multiple profiles"
+msgstr "Mulig å lage flere profiler"
+
+#: ../../include/features.php:52
+msgid "Advanced Profiles"
+msgstr "Avanserte profiler"
+
+#: ../../include/features.php:52
+msgid "Additional profile sections and selections"
+msgstr "Ytterlige seksjoner og utvalg til profilen"
+
+#: ../../include/features.php:53
+msgid "Profile Import/Export"
+msgstr "Profil-import/-eksport"
+
+#: ../../include/features.php:53
+msgid "Save and load profile details across sites/channels"
+msgstr "Lagre og åpne profildetaljer på tvers av nettsteder/kanaler"
+
+#: ../../include/features.php:54
+msgid "Web Pages"
+msgstr "Web-sider"
+
+#: ../../include/features.php:54
+msgid "Provide managed web pages on your channel"
+msgstr "Tilby kontrollerte web-sider på din kanal"
+
+#: ../../include/features.php:55
+msgid "Hide Rating"
+msgstr "Skjul vurdering"
+
+#: ../../include/features.php:55
+msgid ""
+"Hide the rating buttons on your channel and profile pages. Note: People can "
+"still rate you somewhere else."
+msgstr "Skjul vurderingsknappene for din kanal og profilsider. Merknad: folk kan fortsatt vurdere deg et annet sted."
+
+#: ../../include/features.php:56
+msgid "Private Notes"
+msgstr "Private merknader"
+
+#: ../../include/features.php:56
+msgid "Enables a tool to store notes and reminders (note: not encrypted)"
+msgstr "Skru på et verktøy for å lagre notater og påminnelser (merknad: ikke kryptert)"
+
+#: ../../include/features.php:57
+msgid "Navigation Channel Select"
+msgstr "Navigasjon kanalvalg"
+
+#: ../../include/features.php:57
+msgid "Change channels directly from within the navigation dropdown menu"
+msgstr "Endre kanaler direkte fra navigasjonsmenyen"
+
+#: ../../include/features.php:58
+msgid "Photo Location"
+msgstr "Bildeplassering"
+
+#: ../../include/features.php:58
+msgid "If location data is available on uploaded photos, link this to a map."
+msgstr "Hvis plasseringsdata er tilgjengelige i opplastede bilder, plasser dette på et kart."
+
+#: ../../include/features.php:59
+msgid "Access Controlled Chatrooms"
+msgstr ""
+
+#: ../../include/features.php:59
+msgid "Provide chatrooms and chat services with access control."
+msgstr ""
+
+#: ../../include/features.php:60
+msgid "Smart Birthdays"
+msgstr ""
+
+#: ../../include/features.php:60
+msgid ""
+"Make birthday events timezone aware in case your friends are scattered "
+"across the planet."
+msgstr ""
+
+#: ../../include/features.php:61
+msgid "Expert Mode"
+msgstr "Ekspertmodus"
+
+#: ../../include/features.php:61
+msgid "Enable Expert Mode to provide advanced configuration options"
+msgstr "Skru på Ekspertmodus for å tilby avanserte konfigurasjonsvalg"
+
+#: ../../include/features.php:62
+msgid "Premium Channel"
+msgstr "Premiumkanal"
+
+#: ../../include/features.php:62
+msgid ""
+"Allows you to set restrictions and terms on those that connect with your "
+"channel"
+msgstr "Lar deg angi restriksjoner og betingelser for de som kobler seg til din kanal"
+
+#: ../../include/features.php:67
+msgid "Post Composition Features"
+msgstr "Funksjoner for å lage innlegg"
+
+#: ../../include/features.php:70
+msgid "Large Photos"
+msgstr "Store bilder"
+
+#: ../../include/features.php:70
+msgid ""
+"Include large (1024px) photo thumbnails in posts. If not enabled, use small "
+"(640px) photo thumbnails"
+msgstr "Inkluder store (1024px) småbilder i innlegg. Hvis denne ikke er påskrudd, bruk små (640px) småbilder."
+
+#: ../../include/features.php:71
+msgid "Automatically import channel content from other channels or feeds"
+msgstr "Automatisk import av kanalinnhold fra andre kanaler eller strømmer"
+
+#: ../../include/features.php:72
+msgid "Even More Encryption"
+msgstr "Enda mer kryptering"
+
+#: ../../include/features.php:72
+msgid ""
+"Allow optional encryption of content end-to-end with a shared secret key"
+msgstr "Tillat valgfri kryptering av innhold ende-til-ende via en delt hemmelig nøkkel"
+
+#: ../../include/features.php:73
+msgid "Enable Voting Tools"
+msgstr "Skru på verktøy for å stemme"
+
+#: ../../include/features.php:73
+msgid "Provide a class of post which others can vote on"
+msgstr "Tilby en type innlegg som andre kan stemme på"
+
+#: ../../include/features.php:74
+msgid "Delayed Posting"
+msgstr "Tidfest publisering"
+
+#: ../../include/features.php:74
+msgid "Allow posts to be published at a later date"
+msgstr "Tillat innlegg å bli publisert på et senere tidspunkt"
+
+#: ../../include/features.php:75
+msgid "Suppress Duplicate Posts/Comments"
+msgstr "Forhindre duplikat av innlegg/kommentarer"
+
+#: ../../include/features.php:75
+msgid ""
+"Prevent posts with identical content to be published with less than two "
+"minutes in between submissions."
+msgstr "Forhindre innlegg med identisk innhold fra å bli publisert hvis det er mindre enn to minutter mellom innsendingene."
+
+#: ../../include/features.php:81
+msgid "Network and Stream Filtering"
+msgstr "Nettverk- og strømfiltrering"
+
+#: ../../include/features.php:82
+msgid "Search by Date"
+msgstr "Søk etter dato"
+
+#: ../../include/features.php:82
+msgid "Ability to select posts by date ranges"
+msgstr "Mulighet for å velge innlegg etter datoområde"
+
+#: ../../include/features.php:83 ../../include/group.php:311
+msgid "Privacy Groups"
+msgstr "Personverngrupper"
+
+#: ../../include/features.php:83
+msgid "Enable management and selection of privacy groups"
+msgstr "Skru på håndtering og valg av personverngrupper"
+
+#: ../../include/features.php:84
+msgid "Save search terms for re-use"
+msgstr "Lagre søkeuttrykk for senere bruk"
+
+#: ../../include/features.php:85
+msgid "Network Personal Tab"
+msgstr "Nettverk personlig fane"
+
+#: ../../include/features.php:85
+msgid "Enable tab to display only Network posts that you've interacted on"
+msgstr "Skru på fane for å bare vise Nettverksinnlegg som du har deltatt i"
+
+#: ../../include/features.php:86
+msgid "Network New Tab"
+msgstr "Nettverk Ny fane"
+
+#: ../../include/features.php:86
+msgid "Enable tab to display all new Network activity"
+msgstr "Skru på fane for å vise all ny nettverksaktivitet"
+
+#: ../../include/features.php:87
+msgid "Affinity Tool"
+msgstr "Nærhetsverktøy"
+
+#: ../../include/features.php:87
+msgid "Filter stream activity by depth of relationships"
+msgstr "Filtrer strømaktiviteten etter releasjonsdybde"
+
+#: ../../include/features.php:88
+msgid "Connection Filtering"
+msgstr "Filtrer forbindelser"
+
+#: ../../include/features.php:88
+msgid "Filter incoming posts from connections based on keywords/content"
+msgstr "Filtrer innkommende innlegg fra forbindelser basert på nøkkelord/innhold"
+
+#: ../../include/features.php:89
+msgid "Show channel suggestions"
+msgstr "Vis kanalforslag"
+
+#: ../../include/features.php:94
+msgid "Post/Comment Tools"
+msgstr "Innlegg-/Kommentar-verktøy"
+
+#: ../../include/features.php:95
+msgid "Community Tagging"
+msgstr "Felleskapsmerkelapper"
+
+#: ../../include/features.php:95
+msgid "Ability to tag existing posts"
+msgstr "Mulighet til å merke eksisterende meldinger"
+
+#: ../../include/features.php:96
+msgid "Post Categories"
+msgstr "Innleggskategorier"
+
+#: ../../include/features.php:96
+msgid "Add categories to your posts"
+msgstr "Legg kategorier til dine innlegg"
+
+#: ../../include/features.php:97
+msgid "Emoji Reactions"
+msgstr ""
+
+#: ../../include/features.php:97
+msgid "Add emoji reaction ability to posts"
+msgstr ""
+
+#: ../../include/features.php:98
+msgid "Ability to file posts under folders"
+msgstr "Mulighet til å sortere innlegg i mapper"
+
+#: ../../include/features.php:99
+msgid "Dislike Posts"
+msgstr "Mislik innlegg"
+
+#: ../../include/features.php:99
+msgid "Ability to dislike posts/comments"
+msgstr "Mulighet til å mislike innlegg/kommentarer"
+
+#: ../../include/features.php:100
+msgid "Star Posts"
+msgstr "Stjerneinnlegg"
+
+#: ../../include/features.php:100
+msgid "Ability to mark special posts with a star indicator"
+msgstr "Mulighet til å merke spesielle innlegg med en stjerne"
+
+#: ../../include/features.php:101
+msgid "Tag Cloud"
+msgstr "Merkelappsky"
+
+#: ../../include/features.php:101
+msgid "Provide a personal tag cloud on your channel page"
+msgstr "Tilby en personlig merkelappsky på din kanalside"
+
+#: ../../include/oembed.php:324
+msgid "Embedded content"
+msgstr "Innebygget innhold"
+
+#: ../../include/oembed.php:333
+msgid "Embedding disabled"
+msgstr "Innbygging avskrudd"
+
+#: ../../include/acl_selectors.php:271
+msgid "Who can see this?"
+msgstr ""
+
+#: ../../include/acl_selectors.php:272
+msgid "Custom selection"
+msgstr ""
+
+#: ../../include/acl_selectors.php:273
+msgid ""
+"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit"
+" the scope of \"Show\"."
+msgstr ""
+
+#: ../../include/acl_selectors.php:274
+msgid "Show"
+msgstr "Vis"
+
+#: ../../include/acl_selectors.php:275
+msgid "Don't show"
+msgstr "Ikke vis"
+
+#: ../../include/acl_selectors.php:281
+msgid "Other networks and post services"
+msgstr "Andre nettverk og innleggstjenester"
+
+#: ../../include/acl_selectors.php:311
+#, php-format
+msgid ""
+"Post permissions %s cannot be changed %s after a post is shared.</br />These"
+" permissions set who is allowed to view the post."
+msgstr ""
+
+#: ../../include/auth.php:105
+msgid "Logged out."
+msgstr "Logget ut."
+
+#: ../../include/auth.php:212
+msgid "Failed authentication"
+msgstr "Mislykket autentisering"
+
+#: ../../include/datetime.php:135
+msgid "Birthday"
+msgstr ""
+
+#: ../../include/datetime.php:137
+msgid "Age: "
+msgstr "Alder:"
+
+#: ../../include/datetime.php:139
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "YYYY-MM-DD eller MM-DD"
+
+#: ../../include/datetime.php:272 ../../boot.php:2470
+msgid "never"
+msgstr "aldri"
+
+#: ../../include/datetime.php:278
+msgid "less than a second ago"
+msgstr "for mindre enn ett sekund siden"
+
+#: ../../include/datetime.php:296
+#, php-format
+msgctxt "e.g. 22 hours ago, 1 minute ago"
+msgid "%1$d %2$s ago"
+msgstr "%1$d %2$s siden"
+
+#: ../../include/datetime.php:307
+msgctxt "relative_date"
+msgid "year"
+msgid_plural "years"
+msgstr[0] "Ã¥r"
+msgstr[1] "Ã¥r"
+
+#: ../../include/datetime.php:310
+msgctxt "relative_date"
+msgid "month"
+msgid_plural "months"
+msgstr[0] "måned"
+msgstr[1] "måneder"
+
+#: ../../include/datetime.php:313
+msgctxt "relative_date"
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "uke"
+msgstr[1] "uker"
+
+#: ../../include/datetime.php:316
+msgctxt "relative_date"
+msgid "day"
+msgid_plural "days"
+msgstr[0] "dag"
+msgstr[1] "dager"
+
+#: ../../include/datetime.php:319
+msgctxt "relative_date"
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "time"
+msgstr[1] "timer"
+
+#: ../../include/datetime.php:322
+msgctxt "relative_date"
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minutt"
+msgstr[1] "minutter"
+
+#: ../../include/datetime.php:325
+msgctxt "relative_date"
+msgid "second"
+msgid_plural "seconds"
+msgstr[0] "sekund"
+msgstr[1] "sekunder"
+
+#: ../../include/datetime.php:562
+#, php-format
+msgid "%1$s's birthday"
+msgstr "%1$s sin fødselsdag"
+
+#: ../../include/datetime.php:563
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Gratulerer med dagen, %1$s !"
+
+#: ../../include/group.php:26
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
+msgstr "En slettet gruppe med dette navnet ble gjenopprettet. Eksisterende tillatelser for elementet <strong>kan</strong> gjelde for denne gruppen og fremtidige medlemmer. Hvis du ønsket noe annet, vennligst lag en ny gruppe med et annet navn."
+
+#: ../../include/group.php:248
+msgid "Add new connections to this privacy group"
+msgstr "Legg nye forbindelser i denne personverngruppen"
+
+#: ../../include/group.php:289
+msgid "edit"
+msgstr "endre"
+
+#: ../../include/group.php:312
+msgid "Edit group"
+msgstr "Endre gruppe"
+
+#: ../../include/group.php:313
+msgid "Add privacy group"
+msgstr "Legg til personverngruppe"
+
+#: ../../include/group.php:314
+msgid "Channels not in any privacy group"
+msgstr "Kanaler uten personverngruppe"
+
+#: ../../include/js_strings.php:5
+msgid "Delete this item?"
+msgstr "Slett dette elementet?"
+
+#: ../../include/js_strings.php:8
+msgid "[-] show less"
+msgstr "[-] Vis mindre"
+
+#: ../../include/js_strings.php:9
+msgid "[+] expand"
+msgstr "[+] Utvid"
+
+#: ../../include/js_strings.php:10
+msgid "[-] collapse"
+msgstr "[-] Lukk"
+
+#: ../../include/js_strings.php:11
+msgid "Password too short"
+msgstr "Passordet er for kort"
+
+#: ../../include/js_strings.php:12
+msgid "Passwords do not match"
+msgstr "Passordene er ikke like"
+
+#: ../../include/js_strings.php:13
+msgid "everybody"
+msgstr "alle"
+
+#: ../../include/js_strings.php:14
+msgid "Secret Passphrase"
+msgstr "Hemmelig passordsetning"
+
+#: ../../include/js_strings.php:15
+msgid "Passphrase hint"
+msgstr "Hint om passordsetning"
+
+#: ../../include/js_strings.php:16
+msgid "Notice: Permissions have changed but have not yet been submitted."
+msgstr "Varsel: Tillatelser har blitt endret, men de har ennå ikke blitt sendt inn."
+
+#: ../../include/js_strings.php:17
+msgid "close all"
+msgstr "Lukk alle"
+
+#: ../../include/js_strings.php:18
+msgid "Nothing new here"
+msgstr "Ikke noe nytt her"
+
+#: ../../include/js_strings.php:19
+msgid "Rate This Channel (this is public)"
+msgstr "Vurder denne kanalen (dette er offentlig)"
+
+#: ../../include/js_strings.php:21
+msgid "Describe (optional)"
+msgstr "Beskriv (valgfritt)"
+
+#: ../../include/js_strings.php:23
+msgid "Please enter a link URL"
+msgstr "Vennligst skriv inn en lenke URL:"
+
+#: ../../include/js_strings.php:24
+msgid "Unsaved changes. Are you sure you wish to leave this page?"
+msgstr "Endringene er ikke lagret. Er du sikker på at du ønsker å forlate denne siden?"
+
+#: ../../include/js_strings.php:27
+msgid "timeago.prefixAgo"
+msgstr "timeago.prefixAgo"
+
+#: ../../include/js_strings.php:28
+msgid "timeago.prefixFromNow"
+msgstr "timeago.prefixFromNow"
+
+#: ../../include/js_strings.php:29
+msgid "ago"
+msgstr "siden"
+
+#: ../../include/js_strings.php:30
+msgid "from now"
+msgstr "fra nå"
+
+#: ../../include/js_strings.php:31
+msgid "less than a minute"
+msgstr "mindre enn ett minutt"
+
+#: ../../include/js_strings.php:32
+msgid "about a minute"
+msgstr "omtrent et minutt"
+
+#: ../../include/js_strings.php:33
+#, php-format
+msgid "%d minutes"
+msgstr "%d minutter"
+
+#: ../../include/js_strings.php:34
+msgid "about an hour"
+msgstr "omtrent en time"
+
+#: ../../include/js_strings.php:35
+#, php-format
+msgid "about %d hours"
+msgstr "omtrent %d timer"
+
+#: ../../include/js_strings.php:36
+msgid "a day"
+msgstr "en dag"
+
+#: ../../include/js_strings.php:37
+#, php-format
+msgid "%d days"
+msgstr "%d dager"
+
+#: ../../include/js_strings.php:38
+msgid "about a month"
+msgstr "omtrent en måned"
+
+#: ../../include/js_strings.php:39
+#, php-format
+msgid "%d months"
+msgstr "%d måneder"
+
+#: ../../include/js_strings.php:40
+msgid "about a year"
+msgstr "omtrent et år"
+
+#: ../../include/js_strings.php:41
+#, php-format
+msgid "%d years"
+msgstr "%d år"
+
+#: ../../include/js_strings.php:42
+msgid " "
+msgstr " "
+
+#: ../../include/js_strings.php:43
+msgid "timeago.numbers"
+msgstr "timeago.numbers"
+
+#: ../../include/js_strings.php:49
+msgctxt "long"
+msgid "May"
+msgstr "mai"
+
+#: ../../include/js_strings.php:57
+msgid "Jan"
+msgstr "Jan"
+
+#: ../../include/js_strings.php:58
+msgid "Feb"
+msgstr "Feb"
+
+#: ../../include/js_strings.php:59
+msgid "Mar"
+msgstr "Mar"
+
+#: ../../include/js_strings.php:60
+msgid "Apr"
+msgstr "Apr"
+
+#: ../../include/js_strings.php:61
+msgctxt "short"
+msgid "May"
+msgstr "mai"
+
+#: ../../include/js_strings.php:62
+msgid "Jun"
+msgstr "Jun"
+
+#: ../../include/js_strings.php:63
+msgid "Jul"
+msgstr "Jul"
+
+#: ../../include/js_strings.php:64
+msgid "Aug"
+msgstr "Aug"
+
+#: ../../include/js_strings.php:65
+msgid "Sep"
+msgstr "Sep"
+
+#: ../../include/js_strings.php:66
+msgid "Oct"
+msgstr "Okt"
+
+#: ../../include/js_strings.php:67
+msgid "Nov"
+msgstr "Nov"
+
+#: ../../include/js_strings.php:68
+msgid "Dec"
+msgstr "Des"
+
+#: ../../include/js_strings.php:76
+msgid "Sun"
+msgstr "Søn"
+
+#: ../../include/js_strings.php:77
+msgid "Mon"
+msgstr "Man"
+
+#: ../../include/js_strings.php:78
+msgid "Tue"
+msgstr "Tirs"
+
+#: ../../include/js_strings.php:79
+msgid "Wed"
+msgstr "Ons"
+
+#: ../../include/js_strings.php:80
+msgid "Thu"
+msgstr "Tors"
+
+#: ../../include/js_strings.php:81
+msgid "Fri"
+msgstr "Fre"
+
+#: ../../include/js_strings.php:82
+msgid "Sat"
+msgstr "Lør"
+
+#: ../../include/js_strings.php:83
+msgctxt "calendar"
+msgid "today"
+msgstr "idag"
+
+#: ../../include/js_strings.php:84
+msgctxt "calendar"
+msgid "month"
+msgstr "måned"
+
+#: ../../include/js_strings.php:85
+msgctxt "calendar"
+msgid "week"
+msgstr "uke"
+
+#: ../../include/js_strings.php:86
+msgctxt "calendar"
+msgid "day"
+msgstr "dag"
+
+#: ../../include/js_strings.php:87
+msgctxt "calendar"
+msgid "All day"
+msgstr "Hele dagen"
+
+#: ../../include/network.php:657
+msgid "view full size"
+msgstr "vis full størrelse"
+
+#: ../../include/network.php:1885
+msgid "No Subject"
+msgstr "Uten emne"
+
+#: ../../include/network.php:2146 ../../include/network.php:2147
+msgid "Friendica"
+msgstr "Friendica"
+
+#: ../../include/network.php:2148
+msgid "OStatus"
+msgstr "OStatus"
+
+#: ../../include/network.php:2149
+msgid "GNU-Social"
+msgstr ""
+
+#: ../../include/network.php:2150
+msgid "RSS/Atom"
+msgstr "RSS/Atom"
+
+#: ../../include/network.php:2152
+msgid "Diaspora"
+msgstr "Diaspora"
+
+#: ../../include/network.php:2153
+msgid "Facebook"
+msgstr "Facebook"
+
+#: ../../include/network.php:2154
+msgid "Zot"
+msgstr "Zot"
+
+#: ../../include/network.php:2155
+msgid "LinkedIn"
+msgstr "LinkedIn"
+
+#: ../../include/network.php:2156
+msgid "XMPP/IM"
+msgstr "XMPP/IM"
+
+#: ../../include/network.php:2157
+msgid "MySpace"
+msgstr "MySpace"
+
+#: ../../include/photos.php:110
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "Bilde overstiger nettstedets størrelsesbegrensning på %lu bytes"
+
+#: ../../include/photos.php:117
+msgid "Image file is empty."
+msgstr "Bildefilen er tom."
+
+#: ../../include/photos.php:255
+msgid "Photo storage failed."
+msgstr "Bildelagring mislyktes."
+
+#: ../../include/photos.php:295
+msgid "a new photo"
+msgstr "et nytt bilde"
+
+#: ../../include/photos.php:299
+#, php-format
+msgctxt "photo_upload"
+msgid "%1$s posted %2$s to %3$s"
+msgstr "%1$s la inn %2$s til %3$s"
+
+#: ../../include/photos.php:506
+msgid "Upload New Photos"
+msgstr "Last opp nye bilder"
+
+#: ../../include/zot.php:699
+msgid "Invalid data packet"
+msgstr "Ugyldig datapakke"
+
+#: ../../include/zot.php:715
+msgid "Unable to verify channel signature"
+msgstr "Ikke i stand til å sjekke kanalsignaturen"
+
+#: ../../include/zot.php:2363
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr "Ikke i stand til å bekrefte signaturen til %s"
+
+#: ../../include/zot.php:3712
+msgid "invalid target signature"
+msgstr "MÃ¥lets signatur er ugyldig"
+
+#: ../../include/page_widgets.php:6
+msgid "New Page"
+msgstr "Ny side"
+
+#: ../../include/page_widgets.php:43
+msgid "Title"
+msgstr "Tittel"
+
+#: ../../include/permissions.php:26
+msgid "Can view my normal stream and posts"
+msgstr "Kan se min normale strøm og innlegg"
+
+#: ../../include/permissions.php:27
+msgid "Can view my default channel profile"
+msgstr "Kan se min standard kanalprofil"
+
+#: ../../include/permissions.php:28
+msgid "Can view my connections"
+msgstr "Kan se mine forbindelser"
+
+#: ../../include/permissions.php:29
+msgid "Can view my file storage and photos"
+msgstr "Kan se mine filer og bilder"
+
+#: ../../include/permissions.php:30
+msgid "Can view my webpages"
+msgstr "Kan se mine websider"
+
+#: ../../include/permissions.php:33
+msgid "Can send me their channel stream and posts"
+msgstr "Kan sende meg deres kanalstrøm og innlegg"
+
+#: ../../include/permissions.php:34
+msgid "Can post on my channel page (\"wall\")"
+msgstr "Kan lage innlegg på min kanalside (\"vegg\")"
+
+#: ../../include/permissions.php:35
+msgid "Can comment on or like my posts"
+msgstr "Kan kommentere på eller like mine innlegg"
+
+#: ../../include/permissions.php:36
+msgid "Can send me private mail messages"
+msgstr "Kan sende meg private meldinger"
+
+#: ../../include/permissions.php:37
+msgid "Can like/dislike stuff"
+msgstr "Kan like/ikke like forskjellige greier"
+
+#: ../../include/permissions.php:37
+msgid "Profiles and things other than posts/comments"
+msgstr "Profiler og andre ting enn innlegg/kommentarer"
+
+#: ../../include/permissions.php:39
+msgid "Can forward to all my channel contacts via post @mentions"
+msgstr "Kan videresende til alle mine kanalkontakter via @navn i innlegg"
+
+#: ../../include/permissions.php:39
+msgid "Advanced - useful for creating group forum channels"
+msgstr "Avansert - nyttig for å lage forumkanaler for grupper"
+
+#: ../../include/permissions.php:40
+msgid "Can chat with me (when available)"
+msgstr "Kan chatte/sende lynmeldinger til meg (når tilgjengelig)"
+
+#: ../../include/permissions.php:41
+msgid "Can write to my file storage and photos"
+msgstr "Kan skrive til mitt lager for filer og bilder"
+
+#: ../../include/permissions.php:42
+msgid "Can edit my webpages"
+msgstr "Kan endre mine websider"
+
+#: ../../include/permissions.php:44
+msgid "Can source my public posts in derived channels"
+msgstr "Kan bruke mine offentlige innlegg som kanalkilde i egne kanaler"
+
+#: ../../include/permissions.php:44
+msgid "Somewhat advanced - very useful in open communities"
+msgstr "Litt avansert - svært nyttig i åpne fellesskap"
+
+#: ../../include/permissions.php:46
+msgid "Can administer my channel resources"
+msgstr "Kan administrere mine kanalressurser"
+
+#: ../../include/permissions.php:46
+msgid ""
+"Extremely advanced. Leave this alone unless you know what you are doing"
+msgstr "Ekstremt avansert. La dette være med mindre du vet hva du gjør"
+
+#: ../../include/permissions.php:877
+msgid "Social Networking"
+msgstr "Sosialt nettverk"
+
+#: ../../include/permissions.php:877
+msgid "Social - Mostly Public"
+msgstr "Sosial - ganske offentlig"
+
+#: ../../include/permissions.php:877
+msgid "Social - Restricted"
+msgstr "Sosial - begrenset"
+
+#: ../../include/permissions.php:877
+msgid "Social - Private"
+msgstr "Sosial - privat"
+
+#: ../../include/permissions.php:878
+msgid "Community Forum"
+msgstr "Forum for fellesskap"
+
+#: ../../include/permissions.php:878
+msgid "Forum - Mostly Public"
+msgstr "Forum - ganske offentlig"
+
+#: ../../include/permissions.php:878
+msgid "Forum - Restricted"
+msgstr "Forum - begrenset"
+
+#: ../../include/permissions.php:878
+msgid "Forum - Private"
+msgstr "Forum - privat"
+
+#: ../../include/permissions.php:879
+msgid "Feed Republish"
+msgstr "Republisering av strømmet innhold"
+
+#: ../../include/permissions.php:879
+msgid "Feed - Mostly Public"
+msgstr "Strøm - ganske offentlig"
+
+#: ../../include/permissions.php:879
+msgid "Feed - Restricted"
+msgstr "Strøm - begrenset"
+
+#: ../../include/permissions.php:880
+msgid "Special Purpose"
+msgstr "Spesiell bruk"
+
+#: ../../include/permissions.php:880
+msgid "Special - Celebrity/Soapbox"
+msgstr "Spesiell - kjendis/talerstol"
+
+#: ../../include/permissions.php:880
+msgid "Special - Group Repository"
+msgstr "Spesiell - gruppelager"
+
+#: ../../include/permissions.php:881
+msgid "Custom/Expert Mode"
+msgstr "Tilpasset/Ekspertmodus"
+
+#: ../../include/activities.php:41
+msgid " and "
+msgstr "og"
+
+#: ../../include/activities.php:49
+msgid "public profile"
+msgstr "offentlig profil"
+
+#: ../../include/activities.php:58
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s endret %2$s til &ldquo;%3$s&rdquo;"
+
+#: ../../include/activities.php:59
+#, php-format
+msgid "Visit %1$s's %2$s"
+msgstr "Besøk %1$s sitt %2$s"
+
+#: ../../include/activities.php:62
+#, php-format
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s har oppdatert %2$s, endret %3$s."
+
+#: ../../include/bb2diaspora.php:398
+msgid "Attachments:"
+msgstr "Vedlegg:"
+
+#: ../../include/bb2diaspora.php:487
+msgid "$Projectname event notification:"
+msgstr "$Projectname hendelsesvarsling:"
#: ../../view/theme/redbasic/php/config.php:82
msgid "Focus (Hubzilla default)"
msgstr "Focus (Hubzilla standardtema)"
-#: ../../view/theme/redbasic/php/config.php:102
+#: ../../view/theme/redbasic/php/config.php:103
msgid "Theme settings"
msgstr "Temainnstillinger"
-#: ../../view/theme/redbasic/php/config.php:103
+#: ../../view/theme/redbasic/php/config.php:104
msgid "Select scheme"
msgstr "Velg skjema"
-#: ../../view/theme/redbasic/php/config.php:104
+#: ../../view/theme/redbasic/php/config.php:105
msgid "Narrow navbar"
msgstr "Smal navigasjonslinje"
-#: ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:106
msgid "Navigation bar background color"
msgstr "Navigasjonslinjens bakgrunnsfarge"
-#: ../../view/theme/redbasic/php/config.php:106
+#: ../../view/theme/redbasic/php/config.php:107
msgid "Navigation bar gradient top color"
msgstr "Navigasjonslinjens graderte toppfarge"
-#: ../../view/theme/redbasic/php/config.php:107
+#: ../../view/theme/redbasic/php/config.php:108
msgid "Navigation bar gradient bottom color"
msgstr "Navigasjonslinjens graderte bunnfarge"
-#: ../../view/theme/redbasic/php/config.php:108
+#: ../../view/theme/redbasic/php/config.php:109
msgid "Navigation active button gradient top color"
msgstr "Aktiv navigasjonsknapp sin graderte toppfarge"
-#: ../../view/theme/redbasic/php/config.php:109
+#: ../../view/theme/redbasic/php/config.php:110
msgid "Navigation active button gradient bottom color"
msgstr "Aktiv navigasjonsknapp sin graderte bunnfarge"
-#: ../../view/theme/redbasic/php/config.php:110
+#: ../../view/theme/redbasic/php/config.php:111
msgid "Navigation bar border color "
msgstr "Navigasjonslinjens kantfarge"
-#: ../../view/theme/redbasic/php/config.php:111
+#: ../../view/theme/redbasic/php/config.php:112
msgid "Navigation bar icon color "
msgstr "Navigasjonslinjens ikonfarge"
-#: ../../view/theme/redbasic/php/config.php:112
+#: ../../view/theme/redbasic/php/config.php:113
msgid "Navigation bar active icon color "
msgstr "Navigasjonslinjens aktive ikoners farge"
-#: ../../view/theme/redbasic/php/config.php:113
+#: ../../view/theme/redbasic/php/config.php:114
msgid "link color"
msgstr "lenkefarge"
-#: ../../view/theme/redbasic/php/config.php:114
+#: ../../view/theme/redbasic/php/config.php:115
msgid "Set font-color for banner"
msgstr "Angi skriftfargen for banneret"
-#: ../../view/theme/redbasic/php/config.php:115
+#: ../../view/theme/redbasic/php/config.php:116
msgid "Set the background color"
msgstr "Angi bakgrunnsfargen"
-#: ../../view/theme/redbasic/php/config.php:116
+#: ../../view/theme/redbasic/php/config.php:117
msgid "Set the background image"
msgstr "Angi bakgrunnsbilde"
-#: ../../view/theme/redbasic/php/config.php:117
+#: ../../view/theme/redbasic/php/config.php:118
msgid "Set the background color of items"
msgstr "Angi bakgrunnsfargen til elementer"
-#: ../../view/theme/redbasic/php/config.php:118
+#: ../../view/theme/redbasic/php/config.php:119
msgid "Set the background color of comments"
msgstr "Angi bakgrunnsfargen til kommentarer"
-#: ../../view/theme/redbasic/php/config.php:119
+#: ../../view/theme/redbasic/php/config.php:120
msgid "Set the border color of comments"
msgstr "Angi kantfargen til kommentarer"
-#: ../../view/theme/redbasic/php/config.php:120
+#: ../../view/theme/redbasic/php/config.php:121
msgid "Set the indent for comments"
msgstr "Angi innrykket til kommentarer"
-#: ../../view/theme/redbasic/php/config.php:121
+#: ../../view/theme/redbasic/php/config.php:122
msgid "Set the basic color for item icons"
msgstr "Angi grunnfargen for elementikoner"
-#: ../../view/theme/redbasic/php/config.php:122
+#: ../../view/theme/redbasic/php/config.php:123
msgid "Set the hover color for item icons"
msgstr "Angi fargen til elementikoner ved berøring"
-#: ../../view/theme/redbasic/php/config.php:123
+#: ../../view/theme/redbasic/php/config.php:124
msgid "Set font-size for the entire application"
msgstr "Angi skriftstørrelsen for hele programmet"
-#: ../../view/theme/redbasic/php/config.php:123
+#: ../../view/theme/redbasic/php/config.php:124
msgid "Example: 14px"
msgstr "Eksempel: 14px"
-#: ../../view/theme/redbasic/php/config.php:124
+#: ../../view/theme/redbasic/php/config.php:125
msgid "Set font-size for posts and comments"
msgstr "Angi skriftstørrelse for innlegg og kommentarer"
-#: ../../view/theme/redbasic/php/config.php:125
+#: ../../view/theme/redbasic/php/config.php:126
msgid "Set font-color for posts and comments"
msgstr "Angi skriftfargen for innlegg og kommentarer"
-#: ../../view/theme/redbasic/php/config.php:126
+#: ../../view/theme/redbasic/php/config.php:127
msgid "Set radius of corners"
msgstr "Angi hjørneradius"
-#: ../../view/theme/redbasic/php/config.php:127
+#: ../../view/theme/redbasic/php/config.php:128
msgid "Set shadow depth of photos"
msgstr "Angi skyggedybden til bilder"
-#: ../../view/theme/redbasic/php/config.php:128
+#: ../../view/theme/redbasic/php/config.php:129
msgid "Set maximum width of content region in pixel"
msgstr "Angi største bredde for innholdsregionen i pixler"
-#: ../../view/theme/redbasic/php/config.php:128
+#: ../../view/theme/redbasic/php/config.php:129
msgid "Leave empty for default width"
msgstr "La feltet stå tomt for å bruke standard bredde"
-#: ../../view/theme/redbasic/php/config.php:129
+#: ../../view/theme/redbasic/php/config.php:130
msgid "Left align page content"
msgstr "Venstrejuster sideinnhold"
-#: ../../view/theme/redbasic/php/config.php:130
+#: ../../view/theme/redbasic/php/config.php:131
msgid "Set minimum opacity of nav bar - to hide it"
msgstr "Angi minste dekkevne for navigasjonslinjen - for å skjule den"
-#: ../../view/theme/redbasic/php/config.php:131
+#: ../../view/theme/redbasic/php/config.php:132
msgid "Set size of conversation author photo"
msgstr "Angi størrelsen for samtalens forfatterbilde"
-#: ../../view/theme/redbasic/php/config.php:132
+#: ../../view/theme/redbasic/php/config.php:133
msgid "Set size of followup author photos"
msgstr "Angi størrelsen på forfatterbilder ved oppfølging"
-#: ../../boot.php:1351
+#: ../../boot.php:1162
+#, php-format
+msgctxt "opensearch"
+msgid "Search %1$s (%2$s)"
+msgstr ""
+
+#: ../../boot.php:1162
+msgctxt "opensearch"
+msgid "$Projectname"
+msgstr ""
+
+#: ../../boot.php:1480
#, php-format
msgid "Update %s failed. See error logs."
msgstr "Oppdatering %s mislyktes. Se feilloggen."
-#: ../../boot.php:1354
+#: ../../boot.php:1483
#, php-format
msgid "Update Error at %s"
msgstr "Oppdateringsfeil ved %s"
-#: ../../boot.php:1524
+#: ../../boot.php:1684
msgid ""
"Create an account to access services and applications within the Hubzilla"
msgstr "Lag en konto for å få tilgang til tjenester og programmer i Hubzilla"
-#: ../../boot.php:1546
+#: ../../boot.php:1706
msgid "Password"
msgstr "Passord"
-#: ../../boot.php:1547
+#: ../../boot.php:1707
msgid "Remember me"
msgstr "Husk meg"
-#: ../../boot.php:1550
+#: ../../boot.php:1710
msgid "Forgot your password?"
msgstr "Glemt passordet ditt?"
-#: ../../boot.php:2180
+#: ../../boot.php:2276
msgid "toggle mobile"
msgstr "Skru på mobil"
-#: ../../boot.php:2333
+#: ../../boot.php:2425
msgid "Website SSL certificate is not valid. Please correct."
msgstr "Nettstedets SSL-sertifikat er ikke gyldig. Vennligst fiks dette."
-#: ../../boot.php:2336
+#: ../../boot.php:2428
#, php-format
msgid "[hubzilla] Website SSL error for %s"
msgstr "[hubzilla] SSL-feil ved nettsted hos %s"
-#: ../../boot.php:2373
+#: ../../boot.php:2469
msgid "Cron/Scheduled tasks not running."
msgstr "Cron/planlagte oppgaver kjører ikke."
-#: ../../boot.php:2377
+#: ../../boot.php:2473
#, php-format
msgid "[hubzilla] Cron tasks not running on %s"
msgstr "[hubzilla] Cron-oppgaver kjører ikke på %s"
diff --git a/view/nb-no/hstrings.php b/view/nb-no/hstrings.php
index 4327c5448..e03ba321d 100644
--- a/view/nb-no/hstrings.php
+++ b/view/nb-no/hstrings.php
@@ -5,8 +5,6 @@ function string_plural_select_nb_no($n){
return ($n != 1);;
}}
;
-App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Fjernautentisering blokkert. Du er logget inn på dette nettstedet lokalt. Vennligst logg ut og prøv på nytt.";
-App::$strings["Welcome %s. Remote authentication successful."] = "Velkommen %s. Ekstern autentisering er vellykket.";
App::$strings["parent"] = "opp et nivå";
App::$strings["Collection"] = "Samling";
App::$strings["Principal"] = "Viktigste";
@@ -31,1046 +29,62 @@ App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s&#37;)
App::$strings["WARNING:"] = "ADVARSEL:";
App::$strings["Create new folder"] = "Lag ny mappe";
App::$strings["Upload file"] = "Last opp fil";
+App::$strings["Permission denied"] = "Tillatelse avvist";
App::$strings["Permission denied."] = "Tillatelse avslått.";
App::$strings["Not Found"] = "Ikke funnet";
App::$strings["Page not found."] = "Siden ikke funnet.";
-App::$strings["Connect"] = "Koble";
-App::$strings["New window"] = "Nytt vindu";
-App::$strings["Open the selected location in a different window or browser tab"] = "Ã…pne det valgte stedet i et annet vindu eller nettleser-fane";
-App::$strings["User '%s' deleted"] = "Brukeren '%s' er slettet";
-App::$strings["No username found in import file."] = "Ingen brukernavn ble funnet i importfilen.";
-App::$strings["Unable to create a unique channel address. Import failed."] = "Klarte ikke å lage en unik kanaladresse. Import mislyktes.";
-App::$strings["Import completed."] = "Import ferdig.";
-App::$strings["Not a valid email address"] = "Ikke en gyldig e-postadresse";
-App::$strings["Your email domain is not among those allowed on this site"] = "Ditt e-postdomene er ikke blant de som er tillatt på dette stedet";
-App::$strings["Your email address is already registered at this site."] = "Din e-postadresse er allerede registrert på dette nettstedet.";
-App::$strings["An invitation is required."] = "En invitasjon er påkrevd.";
-App::$strings["Invitation could not be verified."] = "Invitasjon kunne ikke bekreftes.";
-App::$strings["Please enter the required information."] = "Vennligst skriv inn nødvendig informasjon.";
-App::$strings["Failed to store account information."] = "Mislyktes med å lagre kontoinformasjon.";
-App::$strings["Registration confirmation for %s"] = "Registreringsbekreftelse for %s";
-App::$strings["Registration request at %s"] = "Registreringsforespørsel hos %s";
-App::$strings["Administrator"] = "Administrator";
-App::$strings["your registration password"] = "ditt registreringspassord";
-App::$strings["Registration details for %s"] = "Registreringsdetaljer for %s";
-App::$strings["Account approved."] = "Konto godkjent.";
-App::$strings["Registration revoked for %s"] = "Registrering trukket tilbake for %s";
-App::$strings["Account verified. Please login."] = "Konto bekreftet. Vennligst logg inn.";
-App::$strings["Click here to upgrade."] = "Klikk her for å oppgradere.";
-App::$strings["This action exceeds the limits set by your subscription plan."] = "Denne handlingen går utenfor grensene satt i din abonnementsplan.";
-App::$strings["This action is not available under your subscription plan."] = "Denne handlingen er ikke tilgjengelig i din abonnementsplan.";
-App::$strings["Visible to your default audience"] = "Synlig for ditt standard publikum";
-App::$strings["Show"] = "Vis";
-App::$strings["Don't show"] = "Ikke vis";
-App::$strings["Other networks and post services"] = "Andre nettverk og innleggstjenester";
-App::$strings["Permissions"] = "Tillatelser";
-App::$strings["Close"] = "Lukk";
-App::$strings[" and "] = "og";
-App::$strings["public profile"] = "offentlig profil";
-App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s endret %2\$s til &ldquo;%3\$s&rdquo;";
-App::$strings["Visit %1\$s's %2\$s"] = "Besøk %1\$s sitt %2\$s";
-App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s har oppdatert %2\$s, endret %3\$s.";
-App::$strings["Public Timeline"] = "Offentlig tidslinje";
-App::$strings["Site Admin"] = "Nettstedsadministrator";
-App::$strings["Bookmarks"] = "Bokmerker";
-App::$strings["Address Book"] = "Adressebok";
-App::$strings["Login"] = "Logg inn";
-App::$strings["Channel Manager"] = "Kanalstyring";
-App::$strings["Grid"] = "Nett";
-App::$strings["Settings"] = "Innstillinger";
-App::$strings["Webpages"] = "Websider";
-App::$strings["Channel Home"] = "Kanalhjem";
-App::$strings["Profile"] = "Profil";
-App::$strings["Photos"] = "Bilder";
-App::$strings["Events"] = "Hendelser";
-App::$strings["Directory"] = "Katalog";
-App::$strings["Help"] = "Hjelp";
-App::$strings["Mail"] = "Melding";
-App::$strings["Mood"] = "Stemning";
-App::$strings["Poke"] = "Prikk";
-App::$strings["Chat"] = "Chat";
-App::$strings["Search"] = "Søk";
-App::$strings["Probe"] = "Undersøk";
-App::$strings["Suggest"] = "Forreslå";
-App::$strings["Random Channel"] = "Tilfeldig kanal";
-App::$strings["Invite"] = "Inviter";
-App::$strings["Features"] = "Funksjoner";
-App::$strings["Language"] = "Språk";
-App::$strings["Post"] = "Innlegg";
-App::$strings["Profile Photo"] = "Profilbilde";
-App::$strings["Update"] = "Oppdater";
-App::$strings["Install"] = "Installer";
-App::$strings["Purchase"] = "Kjøp";
-App::$strings["Item was not found."] = "Elementet ble ikke funnet.";
-App::$strings["No source file."] = "Ingen kildefil.";
-App::$strings["Cannot locate file to replace"] = "Kan ikke finne filen som skal byttes ut";
-App::$strings["Cannot locate file to revise/update"] = "Finner ikke filen som skal revideres/oppdateres";
-App::$strings["File exceeds size limit of %d"] = "Filens størrelse overgår grensen på %d";
-App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Du har nådd din lagringsgrense for vedlegg på %1$.0f Mbytes.";
-App::$strings["File upload failed. Possible system limit or action terminated."] = "Mislyktes med å laste opp filen. Mulig systemgrense eller handling avbrutt.";
-App::$strings["Stored file could not be verified. Upload failed."] = "Lagret fil kunne ikke bekreftes. Opplasting mislyktes.";
-App::$strings["Path not available."] = "Stien er ikke tilgjengelig.";
-App::$strings["Empty pathname"] = "Tomt sti-navn";
-App::$strings["duplicate filename or path"] = "duplikat av filnavn eller sti";
-App::$strings["Path not found."] = "Stien ble ikke funnet.";
-App::$strings["mkdir failed."] = "mkdir mislyktes.";
-App::$strings["database storage failed."] = "databaselagring mislyktes.";
-App::$strings["Empty path"] = "Tom sti";
-App::$strings["Logged out."] = "Logget ut.";
-App::$strings["Failed authentication"] = "Mislykket autentisering";
-App::$strings["Login failed."] = "Innlogging mislyktes.";
-App::$strings["Attachments:"] = "Vedlegg:";
-App::$strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
-App::$strings["\$Projectname event notification:"] = "\$Projectname hendelsesvarsling:";
-App::$strings["Starts:"] = "Starter:";
-App::$strings["Finishes:"] = "Slutter:";
-App::$strings["Location:"] = "Plassering:";
-App::$strings["Image/photo"] = "Bilde/fotografi";
-App::$strings["Encrypted content"] = "Kryptert innhold";
-App::$strings["Install %s element: "] = "Installer %s element:";
-App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Dette innlegget inneholder det installerbare elementet %s, men du mangler tillatelse til å installere det på dette nettstedet.";
-App::$strings["webpage"] = "nettside";
-App::$strings["layout"] = "layout";
-App::$strings["block"] = "byggekloss";
-App::$strings["menu"] = "meny";
-App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s skrev følgende %2\$s %3\$s";
-App::$strings["post"] = "innlegg";
-App::$strings["Different viewers will see this text differently"] = "Denne teksten vil se forskjellig ut for ulike besøkende";
-App::$strings["$1 spoiler"] = "$1 avsløring";
-App::$strings["$1 wrote:"] = "$1 skrev:";
-App::$strings["%1\$s's bookmarks"] = "%1\$s sine bokmerker";
-App::$strings["Missing room name"] = "Mangler romnavn";
-App::$strings["Duplicate room name"] = "Duplikat romnavn";
-App::$strings["Invalid room specifier."] = "Ugyldig rom-spesifisering";
-App::$strings["Room not found."] = "Rommet ble ikke funnet.";
-App::$strings["Room is full"] = "Rommet er fullt";
-App::$strings["Default"] = "Standard";
-App::$strings["%d invitation available"] = array(
- 0 => "%d invitasjon tilgjengelig",
- 1 => "%d invitasjoner tilgjengelig",
-);
-App::$strings["Advanced"] = "Avansert";
-App::$strings["Find Channels"] = "Finn kanaler";
-App::$strings["Enter name or interest"] = "Skriv navn eller interesse";
-App::$strings["Connect/Follow"] = "Forbindelse/Følg";
-App::$strings["Examples: Robert Morgenstein, Fishing"] = "Eksempler: Ola Nordmann, fisking";
-App::$strings["Find"] = "Finn";
-App::$strings["Channel Suggestions"] = "Kanalforslag";
-App::$strings["Random Profile"] = "Tilfeldig profil";
-App::$strings["Invite Friends"] = "Inviter venner";
-App::$strings["Advanced example: name=fred and country=iceland"] = "Avansert eksempel: navn=fred og land=island";
-App::$strings["Saved Folders"] = "Lagrede mapper";
-App::$strings["Everything"] = "Alt";
-App::$strings["Categories"] = "Kategorier";
-App::$strings["%d connection in common"] = array(
- 0 => "%d forbindelse felles",
- 1 => "%d forbindelser felles",
-);
-App::$strings["show more"] = "vis mer";
-App::$strings["Cannot locate DNS info for database server '%s'"] = "Kan ikke finne DNS-informasjon om databasetjener '%s'";
-App::$strings["Directory Options"] = "Kataloginnstillinger";
-App::$strings["Safe Mode"] = "Trygt modus";
-App::$strings["No"] = "Nei";
-App::$strings["Yes"] = "Ja";
-App::$strings["Public Forums Only"] = "Bare offentlige forum";
-App::$strings["This Website Only"] = "Kun dette nettstedet";
-App::$strings["This event has been added to your calendar."] = "Denne hendelsen er lagt til i din kalender.";
-App::$strings["event"] = "hendelse";
-App::$strings["Not specified"] = "Ikke spesifisert";
-App::$strings["Needs Action"] = "Trenger handling";
-App::$strings["Completed"] = "Ferdig";
-App::$strings["In Process"] = "Igang";
-App::$strings["Cancelled"] = "Avbrutt";
-App::$strings["Channel is blocked on this site."] = "Kanalen er blokkert på dette nettstedet.";
-App::$strings["Channel location missing."] = "Kanalplassering mangler.";
-App::$strings["Response from remote channel was incomplete."] = "Svaret fra den andre kanalen var ikke komplett.";
-App::$strings["Channel was deleted and no longer exists."] = "Kanalen er slettet og finnes ikke lenger.";
-App::$strings["Protocol disabled."] = "Protokollen er avskrudd.";
-App::$strings["Channel discovery failed."] = "Kanaloppdagelse mislyktes.";
-App::$strings["local account not found."] = "lokal konto ble ikke funnet.";
-App::$strings["Cannot connect to yourself."] = "Kan ikke lage forbindelse med deg selv.";
-App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kan ikke lage en kopi av kanal-identifikatoren på dette systemet. Import mislyktes.";
-App::$strings["Channel clone failed. Import failed."] = "Kanalkloning mislyktes. Import mislyktes.";
-App::$strings["Cloned channel not found. Import failed."] = "Klonet kanal ble ikke funnet. Import mislyktes.";
-App::$strings["Delete this item?"] = "Slett dette elementet?";
-App::$strings["Comment"] = "Kommentar";
-App::$strings["[+] show all"] = "[+] Vis alle";
-App::$strings["[-] show less"] = "[-] Vis mindre";
-App::$strings["[+] expand"] = "[+] Utvid";
-App::$strings["[-] collapse"] = "[-] Lukk";
-App::$strings["Password too short"] = "Passordet er for kort";
-App::$strings["Passwords do not match"] = "Passordene er ikke like";
-App::$strings["everybody"] = "alle";
-App::$strings["Secret Passphrase"] = "Hemmelig passordsetning";
-App::$strings["Passphrase hint"] = "Hint om passordsetning";
-App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Varsel: Tillatelser har blitt endret, men de har ennå ikke blitt sendt inn.";
-App::$strings["close all"] = "Lukk alle";
-App::$strings["Nothing new here"] = "Ikke noe nytt her";
-App::$strings["Rate This Channel (this is public)"] = "Vurder denne kanalen (dette er offentlig)";
-App::$strings["Rating"] = "Vurdering";
-App::$strings["Describe (optional)"] = "Beskriv (valgfritt)";
-App::$strings["Submit"] = "Send";
-App::$strings["Please enter a link URL"] = "Vennligst skriv inn en lenke URL:";
-App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Endringene er ikke lagret. Er du sikker på at du ønsker å forlate denne siden?";
-App::$strings["Location"] = "Plassering";
-App::$strings["timeago.prefixAgo"] = "timeago.prefixAgo";
-App::$strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
-App::$strings["ago"] = "siden";
-App::$strings["from now"] = "fra nå";
-App::$strings["less than a minute"] = "mindre enn ett minutt";
-App::$strings["about a minute"] = "omtrent et minutt";
-App::$strings["%d minutes"] = "%d minutter";
-App::$strings["about an hour"] = "omtrent en time";
-App::$strings["about %d hours"] = "omtrent %d timer";
-App::$strings["a day"] = "en dag";
-App::$strings["%d days"] = "%d dager";
-App::$strings["about a month"] = "omtrent en måned";
-App::$strings["%d months"] = "%d måneder";
-App::$strings["about a year"] = "omtrent et år";
-App::$strings["%d years"] = "%d år";
-App::$strings[" "] = " ";
-App::$strings["timeago.numbers"] = "timeago.numbers";
-App::$strings["January"] = "januar";
-App::$strings["February"] = "februar";
-App::$strings["March"] = "mars";
-App::$strings["April"] = "april";
-App::$strings["__ctx:long__ May"] = "mai";
-App::$strings["June"] = "juni";
-App::$strings["July"] = "juli";
-App::$strings["August"] = "august";
-App::$strings["September"] = "september";
-App::$strings["October"] = "oktober";
-App::$strings["November"] = "november";
-App::$strings["December"] = "desember";
-App::$strings["Jan"] = "Jan";
-App::$strings["Feb"] = "Feb";
-App::$strings["Mar"] = "Mar";
-App::$strings["Apr"] = "Apr";
-App::$strings["__ctx:short__ May"] = "mai";
-App::$strings["Jun"] = "Jun";
-App::$strings["Jul"] = "Jul";
-App::$strings["Aug"] = "Aug";
-App::$strings["Sep"] = "Sep";
-App::$strings["Oct"] = "Okt";
-App::$strings["Nov"] = "Nov";
-App::$strings["Dec"] = "Des";
-App::$strings["Sunday"] = "søndag";
-App::$strings["Monday"] = "mandag";
-App::$strings["Tuesday"] = "tirsdag";
-App::$strings["Wednesday"] = "onsdag";
-App::$strings["Thursday"] = "torsdag";
-App::$strings["Friday"] = "fredag";
-App::$strings["Saturday"] = "lørdag";
-App::$strings["Sun"] = "Søn";
-App::$strings["Mon"] = "Man";
-App::$strings["Tue"] = "Tirs";
-App::$strings["Wed"] = "Ons";
-App::$strings["Thu"] = "Tors";
-App::$strings["Fri"] = "Fre";
-App::$strings["Sat"] = "Lør";
-App::$strings["__ctx:calendar__ today"] = "idag";
-App::$strings["__ctx:calendar__ month"] = "måned";
-App::$strings["__ctx:calendar__ week"] = "uke";
-App::$strings["__ctx:calendar__ day"] = "dag";
-App::$strings["__ctx:calendar__ All day"] = "Hele dagen";
-App::$strings["No recipient provided."] = "Ingen mottaker angitt.";
-App::$strings["[no subject]"] = "[ikke noe emne]";
-App::$strings["Unable to determine sender."] = "Kan ikke avgjøre avsender.";
-App::$strings["Stored post could not be verified."] = "Lagret innlegg kunne ikke bekreftes.";
-App::$strings["Logout"] = "Logg ut";
-App::$strings["End this session"] = "Avslutt denne økten";
-App::$strings["Home"] = "Hjem";
-App::$strings["Your posts and conversations"] = "Dine innlegg og samtaler";
-App::$strings["View Profile"] = "Vis profil";
-App::$strings["Your profile page"] = "Din profilside";
-App::$strings["Edit Profiles"] = "Endre profiler";
-App::$strings["Manage/Edit profiles"] = "HÃ¥ndter/endre profiler";
-App::$strings["Edit Profile"] = "Endre profil";
-App::$strings["Edit your profile"] = "Endre din profil";
-App::$strings["Your photos"] = "Dine bilder";
-App::$strings["Your files"] = "Dine filer";
-App::$strings["Your chatrooms"] = "Dine chatterom";
-App::$strings["Your bookmarks"] = "Dine bokmerker";
-App::$strings["Your webpages"] = "Dine websider";
-App::$strings["Sign in"] = "Logg på";
-App::$strings["%s - click to logout"] = "%s - klikk for å logge ut";
-App::$strings["Remote authentication"] = "Fjernautentisering";
-App::$strings["Click to authenticate to your home hub"] = "Klikk for å godkjennes mot din hjemme-hub";
-App::$strings["Home Page"] = "Hjemmeside";
-App::$strings["Register"] = "Registrer";
-App::$strings["Create an account"] = "Lag en konto";
-App::$strings["Help and documentation"] = "Hjelp og dokumentasjon";
-App::$strings["Apps"] = "Apper";
-App::$strings["Applications, utilities, links, games"] = "Programmer, verktøy, lenker, spill";
-App::$strings["Search site @name, #tag, ?docs, content"] = "Søk nettstedet for @navn, #merkelapp, ?dokumentasjon, innhold";
-App::$strings["Channel Directory"] = "Kanalkatalog";
-App::$strings["Your grid"] = "Ditt nett";
-App::$strings["Mark all grid notifications seen"] = "Marker alle nettvarsler som sett";
-App::$strings["Channel home"] = "Kanalhjem";
-App::$strings["Mark all channel notifications seen"] = "Merk alle kanalvarsler som sett";
-App::$strings["Connections"] = "Forbindelser";
-App::$strings["Notices"] = "Varsel";
-App::$strings["Notifications"] = "Varsler";
-App::$strings["See all notifications"] = "Se alle varsler";
-App::$strings["Mark all system notifications seen"] = "Merk alle systemvarsler som sett";
-App::$strings["Private mail"] = "Privat post";
-App::$strings["See all private messages"] = "Se alle private meldinger";
-App::$strings["Mark all private messages seen"] = "Merk alle private meldinger som sett";
-App::$strings["Inbox"] = "Innboks";
-App::$strings["Outbox"] = "Utboks";
-App::$strings["New Message"] = "Ny melding";
-App::$strings["Event Calendar"] = "Kalender";
-App::$strings["See all events"] = "Se alle hendelser";
-App::$strings["Mark all events seen"] = "Merk alle hendelser som sett";
-App::$strings["Manage Your Channels"] = "HÃ¥ndter dine kanaler";
-App::$strings["Account/Channel Settings"] = "Konto-/kanal-innstillinger";
-App::$strings["Admin"] = "Administrator";
-App::$strings["Site Setup and Configuration"] = "Nettstedsoppsett og -konfigurasjon";
-App::$strings["Loading..."] = "Laster...";
-App::$strings["@name, #tag, ?doc, content"] = "@navn, #merkelapp, ?dokumentasjon, innhold";
-App::$strings["Please wait..."] = "Vennligst vent...";
-App::$strings["created a new post"] = "laget et nytt innlegg";
-App::$strings["commented on %s's post"] = "kommenterte på %s sitt innlegg";
-App::$strings["New Page"] = "Ny side";
-App::$strings["View"] = "Vis";
-App::$strings["Preview"] = "Forhåndsvisning";
-App::$strings["Actions"] = "Handlinger";
-App::$strings["Page Link"] = "Sidelenke";
-App::$strings["Title"] = "Tittel";
-App::$strings["Created"] = "Laget";
-App::$strings["Edited"] = "Endret";
-App::$strings["Profile Photos"] = "Profilbilder";
-App::$strings["Male"] = "Mannlig";
-App::$strings["Female"] = "Kvinnelig";
-App::$strings["Currently Male"] = "For tiden mann";
-App::$strings["Currently Female"] = "For tiden kvinne";
-App::$strings["Mostly Male"] = "For det meste mann";
-App::$strings["Mostly Female"] = "For det meste kvinne";
-App::$strings["Transgender"] = "Transkjønnet";
-App::$strings["Intersex"] = "interkjønnet";
-App::$strings["Transsexual"] = "Transseksuell";
-App::$strings["Hermaphrodite"] = "Hermafroditt";
-App::$strings["Neuter"] = "Intetkjønn";
-App::$strings["Non-specific"] = "Ubestemt";
-App::$strings["Other"] = "Annen";
-App::$strings["Undecided"] = "Ubestemt";
-App::$strings["Males"] = "Menn";
-App::$strings["Females"] = "Kvinner";
-App::$strings["Gay"] = "Homo";
-App::$strings["Lesbian"] = "Lesbisk";
-App::$strings["No Preference"] = "Ingen preferanse";
-App::$strings["Bisexual"] = "Biseksuell";
-App::$strings["Autosexual"] = "Autoseksuell";
-App::$strings["Abstinent"] = "Avholdende";
-App::$strings["Virgin"] = "Jomfru";
-App::$strings["Deviant"] = "Avviker";
-App::$strings["Fetish"] = "Fetisj";
-App::$strings["Oodles"] = "Masse";
-App::$strings["Nonsexual"] = "Ikke-seksuell";
-App::$strings["Single"] = "Enslig";
-App::$strings["Lonely"] = "Ensom";
-App::$strings["Available"] = "Tilgjengelig";
-App::$strings["Unavailable"] = "Ikke tilgjengelig";
-App::$strings["Has crush"] = "Er forelsket";
-App::$strings["Infatuated"] = "Betatt";
-App::$strings["Dating"] = "Sammen med";
-App::$strings["Unfaithful"] = "Utro";
-App::$strings["Sex Addict"] = "Sexavhengig";
-App::$strings["Friends"] = "Venner";
-App::$strings["Friends/Benefits"] = "Venner med frynsegoder";
-App::$strings["Casual"] = "Tilfeldig";
-App::$strings["Engaged"] = "Forlovet";
-App::$strings["Married"] = "Gift";
-App::$strings["Imaginarily married"] = "Gift i fantasien";
-App::$strings["Partners"] = "Partnere";
-App::$strings["Cohabiting"] = "Samboer";
-App::$strings["Common law"] = "Samboer";
-App::$strings["Happy"] = "Lykkelig";
-App::$strings["Not looking"] = "Ikke på utkikk";
-App::$strings["Swinger"] = "Partnerbytte";
-App::$strings["Betrayed"] = "Bedratt";
-App::$strings["Separated"] = "Separert";
-App::$strings["Unstable"] = "Ustabilt";
-App::$strings["Divorced"] = "Skilt";
-App::$strings["Imaginarily divorced"] = "Skilt i fantasien";
-App::$strings["Widowed"] = "Enke";
-App::$strings["Uncertain"] = "Usikkert";
-App::$strings["It's complicated"] = "Det er komplisert";
-App::$strings["Don't care"] = "Bryr meg ikke";
-App::$strings["Ask me"] = "Spør meg";
-App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Skjemaets sikkerhetspollett var ikke gyldig. Dette skjedde antakelig fordi skjemaet har vært åpnet for lenge (>3 timer) før det ble sendt inn.";
-App::$strings["Tags"] = "Merkelapper";
-App::$strings["Keywords"] = "Nøkkelord";
-App::$strings["have"] = "har";
-App::$strings["has"] = "har";
-App::$strings["want"] = "ønsker";
-App::$strings["wants"] = "ønsker";
-App::$strings["like"] = "liker";
-App::$strings["likes"] = "liker";
-App::$strings["dislike"] = "misliker";
-App::$strings["dislikes"] = "misliker";
-App::$strings["__ctx:noun__ Like"] = array(
- 0 => "Liker",
- 1 => "Liker",
-);
-App::$strings["Miscellaneous"] = "Forskjellig";
-App::$strings["YYYY-MM-DD or MM-DD"] = "YYYY-MM-DD eller MM-DD";
-App::$strings["Required"] = "PÃ¥krevd";
-App::$strings["never"] = "aldri";
-App::$strings["less than a second ago"] = "for mindre enn ett sekund siden";
-App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "%1\$d %2\$s siden";
-App::$strings["__ctx:relative_date__ year"] = array(
- 0 => "Ã¥r",
- 1 => "Ã¥r",
-);
-App::$strings["__ctx:relative_date__ month"] = array(
- 0 => "måned",
- 1 => "måneder",
-);
-App::$strings["__ctx:relative_date__ week"] = array(
- 0 => "uke",
- 1 => "uker",
-);
-App::$strings["__ctx:relative_date__ day"] = array(
- 0 => "dag",
- 1 => "dager",
-);
-App::$strings["__ctx:relative_date__ hour"] = array(
- 0 => "time",
- 1 => "timer",
-);
-App::$strings["__ctx:relative_date__ minute"] = array(
- 0 => "minutt",
- 1 => "minutter",
-);
-App::$strings["__ctx:relative_date__ second"] = array(
- 0 => "sekund",
- 1 => "sekunder",
-);
-App::$strings["%1\$s's birthday"] = "%1\$s sin fødselsdag";
-App::$strings["Happy Birthday %1\$s"] = "Gratulerer med dagen, %1\$s !";
-App::$strings["Invalid data packet"] = "Ugyldig datapakke";
-App::$strings["Unable to verify channel signature"] = "Ikke i stand til å sjekke kanalsignaturen";
-App::$strings["Unable to verify site signature for %s"] = "Ikke i stand til å bekrefte signaturen til %s";
-App::$strings["invalid target signature"] = "MÃ¥lets signatur er ugyldig";
-App::$strings["Frequently"] = "Ofte";
-App::$strings["Hourly"] = "Hver time";
-App::$strings["Twice daily"] = "To ganger daglig";
-App::$strings["Daily"] = "Daglig";
-App::$strings["Weekly"] = "Ukentlig";
-App::$strings["Monthly"] = "MÃ¥nedlig";
-App::$strings["Friendica"] = "Friendica";
-App::$strings["OStatus"] = "OStatus";
-App::$strings["RSS/Atom"] = "RSS/Atom";
-App::$strings["Email"] = "E-post";
-App::$strings["Diaspora"] = "Diaspora";
-App::$strings["Facebook"] = "Facebook";
-App::$strings["Zot"] = "Zot";
-App::$strings["LinkedIn"] = "LinkedIn";
-App::$strings["XMPP/IM"] = "XMPP/IM";
-App::$strings["MySpace"] = "MySpace";
-App::$strings["view full size"] = "vis full størrelse";
-App::$strings["\$Projectname Notification"] = "\$Projectname varsling";
-App::$strings["\$projectname"] = "\$projectname";
-App::$strings["Thank You,"] = "Tusen takk,";
-App::$strings["%s Administrator"] = "%s administrator";
-App::$strings["No Subject"] = "Uten emne";
-App::$strings["Image exceeds website size limit of %lu bytes"] = "Bilde overstiger nettstedets størrelsesbegrensning på %lu bytes";
-App::$strings["Image file is empty."] = "Bildefilen er tom.";
-App::$strings["Unable to process image"] = "Kan ikke behandle bildet";
-App::$strings["Photo storage failed."] = "Bildelagring mislyktes.";
-App::$strings["a new photo"] = "et nytt bilde";
-App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s la inn %2\$s til %3\$s";
-App::$strings["Photo Albums"] = "Fotoalbum";
-App::$strings["Upload New Photos"] = "Last opp nye bilder";
-App::$strings["General Features"] = "Generelle funksjoner";
-App::$strings["Content Expiration"] = "Innholdet utløper";
-App::$strings["Remove posts/comments and/or private messages at a future time"] = "Fjern innlegg/kommentarer og/eller private meldinger på et angitt tidspunkt i fremtiden";
-App::$strings["Multiple Profiles"] = "Flere profiler";
-App::$strings["Ability to create multiple profiles"] = "Mulig å lage flere profiler";
-App::$strings["Advanced Profiles"] = "Avanserte profiler";
-App::$strings["Additional profile sections and selections"] = "Ytterlige seksjoner og utvalg til profilen";
-App::$strings["Profile Import/Export"] = "Profil-import/-eksport";
-App::$strings["Save and load profile details across sites/channels"] = "Lagre og åpne profildetaljer på tvers av nettsteder/kanaler";
-App::$strings["Web Pages"] = "Web-sider";
-App::$strings["Provide managed web pages on your channel"] = "Tilby kontrollerte web-sider på din kanal";
-App::$strings["Hide Rating"] = "Skjul vurdering";
-App::$strings["Hide the rating buttons on your channel and profile pages. Note: People can still rate you somewhere else."] = "Skjul vurderingsknappene for din kanal og profilsider. Merknad: folk kan fortsatt vurdere deg et annet sted.";
-App::$strings["Private Notes"] = "Private merknader";
-App::$strings["Enables a tool to store notes and reminders (note: not encrypted)"] = "Skru på et verktøy for å lagre notater og påminnelser (merknad: ikke kryptert)";
-App::$strings["Navigation Channel Select"] = "Navigasjon kanalvalg";
-App::$strings["Change channels directly from within the navigation dropdown menu"] = "Endre kanaler direkte fra navigasjonsmenyen";
-App::$strings["Photo Location"] = "Bildeplassering";
-App::$strings["If location data is available on uploaded photos, link this to a map."] = "Hvis plasseringsdata er tilgjengelige i opplastede bilder, plasser dette på et kart.";
-App::$strings["Expert Mode"] = "Ekspertmodus";
-App::$strings["Enable Expert Mode to provide advanced configuration options"] = "Skru på Ekspertmodus for å tilby avanserte konfigurasjonsvalg";
-App::$strings["Premium Channel"] = "Premiumkanal";
-App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Lar deg angi restriksjoner og betingelser for de som kobler seg til din kanal";
-App::$strings["Post Composition Features"] = "Funksjoner for å lage innlegg";
-App::$strings["Use Markdown"] = "Bruk Markdown";
-App::$strings["Allow use of \"Markdown\" to format posts"] = "Tillat bruk av \"Markdown\" til formatering av innlegg";
-App::$strings["Large Photos"] = "Store bilder";
-App::$strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Inkluder store (1024px) småbilder i innlegg. Hvis denne ikke er påskrudd, bruk små (640px) småbilder.";
-App::$strings["Channel Sources"] = "Kanalkilder";
-App::$strings["Automatically import channel content from other channels or feeds"] = "Automatisk import av kanalinnhold fra andre kanaler eller strømmer";
-App::$strings["Even More Encryption"] = "Enda mer kryptering";
-App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Tillat valgfri kryptering av innhold ende-til-ende via en delt hemmelig nøkkel";
-App::$strings["Enable Voting Tools"] = "Skru på verktøy for å stemme";
-App::$strings["Provide a class of post which others can vote on"] = "Tilby en type innlegg som andre kan stemme på";
-App::$strings["Delayed Posting"] = "Tidfest publisering";
-App::$strings["Allow posts to be published at a later date"] = "Tillat innlegg å bli publisert på et senere tidspunkt";
-App::$strings["Suppress Duplicate Posts/Comments"] = "Forhindre duplikat av innlegg/kommentarer";
-App::$strings["Prevent posts with identical content to be published with less than two minutes in between submissions."] = "Forhindre innlegg med identisk innhold fra å bli publisert hvis det er mindre enn to minutter mellom innsendingene.";
-App::$strings["Network and Stream Filtering"] = "Nettverk- og strømfiltrering";
-App::$strings["Search by Date"] = "Søk etter dato";
-App::$strings["Ability to select posts by date ranges"] = "Mulighet for å velge innlegg etter datoområde";
-App::$strings["Privacy Groups"] = "Personverngrupper";
-App::$strings["Enable management and selection of privacy groups"] = "Skru på håndtering og valg av personverngrupper";
-App::$strings["Saved Searches"] = "Lagrede søk";
-App::$strings["Save search terms for re-use"] = "Lagre søkeuttrykk for senere bruk";
-App::$strings["Network Personal Tab"] = "Nettverk personlig fane";
-App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Skru på fane for å bare vise Nettverksinnlegg som du har deltatt i";
-App::$strings["Network New Tab"] = "Nettverk Ny fane";
-App::$strings["Enable tab to display all new Network activity"] = "Skru på fane for å vise all ny nettverksaktivitet";
-App::$strings["Affinity Tool"] = "Nærhetsverktøy";
-App::$strings["Filter stream activity by depth of relationships"] = "Filtrer strømaktiviteten etter releasjonsdybde";
-App::$strings["Connection Filtering"] = "Filtrer forbindelser";
-App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filtrer innkommende innlegg fra forbindelser basert på nøkkelord/innhold";
-App::$strings["Suggest Channels"] = "Foreslå kanaler";
-App::$strings["Show channel suggestions"] = "Vis kanalforslag";
-App::$strings["Post/Comment Tools"] = "Innlegg-/Kommentar-verktøy";
-App::$strings["Community Tagging"] = "Felleskapsmerkelapper";
-App::$strings["Ability to tag existing posts"] = "Mulighet til å merke eksisterende meldinger";
-App::$strings["Post Categories"] = "Innleggskategorier";
-App::$strings["Add categories to your posts"] = "Legg kategorier til dine innlegg";
-App::$strings["Ability to file posts under folders"] = "Mulighet til å sortere innlegg i mapper";
-App::$strings["Dislike Posts"] = "Mislik innlegg";
-App::$strings["Ability to dislike posts/comments"] = "Mulighet til å mislike innlegg/kommentarer";
-App::$strings["Star Posts"] = "Stjerneinnlegg";
-App::$strings["Ability to mark special posts with a star indicator"] = "Mulighet til å merke spesielle innlegg med en stjerne";
-App::$strings["Tag Cloud"] = "Merkelappsky";
-App::$strings["Provide a personal tag cloud on your channel page"] = "Tilby en personlig merkelappsky på din kanalside";
-App::$strings["System"] = "System";
-App::$strings["Personal"] = "Personlig";
-App::$strings["Create Personal App"] = "Lag personlig app";
-App::$strings["Edit Personal App"] = "Endre personlig app";
-App::$strings["Ignore/Hide"] = "Ignorer/Skjul";
-App::$strings["Suggestions"] = "Forslag";
-App::$strings["See more..."] = "Se mer...";
-App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Du har %1$.0f av %2$.0f tillate forbindelser.";
-App::$strings["Add New Connection"] = "Legg til ny forbindelse";
-App::$strings["Enter channel address"] = "Skriv kanaladressen";
-App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Eksempel: ola@eksempel.no, https://eksempel.no/kari";
-App::$strings["Notes"] = "Merknader";
-App::$strings["Save"] = "Lagre";
-App::$strings["Remove term"] = "Fjern begrep";
-App::$strings["add"] = "legg til";
-App::$strings["Archives"] = "Arkiv";
-App::$strings["Me"] = "Meg";
-App::$strings["Family"] = "Familie";
-App::$strings["Acquaintances"] = "Bekjente";
-App::$strings["All"] = "Alle";
-App::$strings["Refresh"] = "Forny";
-App::$strings["Account settings"] = "Kontoinnstillinger";
-App::$strings["Channel settings"] = "Kanalinnstillinger";
-App::$strings["Additional features"] = "Tilleggsfunksjoner";
-App::$strings["Feature/Addon settings"] = "Funksjons-/Tilleggsinnstillinger";
-App::$strings["Display settings"] = "Visningsinnstillinger";
-App::$strings["Connected apps"] = "Tilkoblede app-er";
-App::$strings["Export channel"] = "Eksporter kanal";
-App::$strings["Connection Default Permissions"] = "Forbindelsens standard tillatelser";
-App::$strings["Premium Channel Settings"] = "Premiumkanal-innstillinger";
-App::$strings["Private Mail Menu"] = "Meny for privat post";
-App::$strings["Combined View"] = "Kombinert visning";
-App::$strings["Conversations"] = "Samtaler";
-App::$strings["Received Messages"] = "Mottatte meldinger";
-App::$strings["Sent Messages"] = "Sendte meldinger";
-App::$strings["No messages."] = "Ingen meldinger.";
-App::$strings["Delete conversation"] = "Slett samtale";
-App::$strings["Events Menu"] = "Meny for hendelser";
-App::$strings["Day View"] = "Dag";
-App::$strings["Week View"] = "Uke";
-App::$strings["Month View"] = "MÃ¥ned";
-App::$strings["Export"] = "Eksport";
-App::$strings["Import"] = "Importer";
-App::$strings["Events Tools"] = "Kalenderverktøy";
-App::$strings["Export Calendar"] = "Eksporter kalender";
-App::$strings["Import Calendar"] = "Importer kalender";
-App::$strings["Chat Rooms"] = "Chatrom";
-App::$strings["Bookmarked Chatrooms"] = "Bokmerkede chatrom";
-App::$strings["Suggested Chatrooms"] = "Foreslåtte chatrom";
-App::$strings["photo/image"] = "foto/bilde";
-App::$strings["Rating Tools"] = "Vurderingsverktøy";
-App::$strings["Rate Me"] = "Vurder meg";
-App::$strings["View Ratings"] = "Vis vurderinger";
-App::$strings["Public Hubs"] = "Offentlige huber";
-App::$strings["Forums"] = "Forum";
-App::$strings["Tasks"] = "Oppgaver";
-App::$strings["Documentation"] = "Dokumentasjon";
-App::$strings["Project/Site Information"] = "Prosjekt-/Nettstedsinformasjon";
-App::$strings["For Members"] = "For medlemmer";
-App::$strings["For Administrators"] = "For administratorer";
-App::$strings["For Developers"] = "For utviklere";
-App::$strings["Site"] = "Nettsted";
-App::$strings["Accounts"] = "Kontoer";
-App::$strings["Channels"] = "Kanaler";
-App::$strings["Security"] = "Sikkerhet";
-App::$strings["Plugins"] = "Tilleggsfunksjoner";
-App::$strings["Themes"] = "Temaer";
-App::$strings["Inspect queue"] = "Inspiser kø";
-App::$strings["Profile Config"] = "Profilinnstillinger";
-App::$strings["DB updates"] = "Databaseoppdateringer";
-App::$strings["Logs"] = "Logger";
-App::$strings["Plugin Features"] = "Tilleggsfunksjoner";
-App::$strings["User registrations waiting for confirmation"] = "Brukerregistreringer som venter på bekreftelse";
-App::$strings["View Photo"] = "Vis foto";
-App::$strings["Edit Album"] = "Endre album";
-App::$strings["prev"] = "forrige";
-App::$strings["first"] = "første";
-App::$strings["last"] = "siste";
-App::$strings["next"] = "neste";
-App::$strings["older"] = "eldre";
-App::$strings["newer"] = "nyere";
-App::$strings["No connections"] = "Ingen forbindelser";
-App::$strings["View all %s connections"] = "Vis alle %s forbindelser";
-App::$strings["poke"] = "prikk";
-App::$strings["poked"] = "prikket";
-App::$strings["ping"] = "varsle";
-App::$strings["pinged"] = "varslet";
-App::$strings["prod"] = "oppildne";
-App::$strings["prodded"] = "oppildnet";
-App::$strings["slap"] = "daske";
-App::$strings["slapped"] = "dasket";
-App::$strings["finger"] = "fingre";
-App::$strings["fingered"] = "fingret";
-App::$strings["rebuff"] = "tilbakevise";
-App::$strings["rebuffed"] = "tilbakeviste";
-App::$strings["happy"] = "glad";
-App::$strings["sad"] = "trist";
-App::$strings["mellow"] = "dempet";
-App::$strings["tired"] = "trøtt";
-App::$strings["perky"] = "oppkvikket";
-App::$strings["angry"] = "sint";
-App::$strings["stupefied"] = "lamslått";
-App::$strings["puzzled"] = "forundret";
-App::$strings["interested"] = "interessert";
-App::$strings["bitter"] = "bitter";
-App::$strings["cheerful"] = "munter";
-App::$strings["alive"] = "levende";
-App::$strings["annoyed"] = "irritert";
-App::$strings["anxious"] = "nervøs";
-App::$strings["cranky"] = "gretten";
-App::$strings["disturbed"] = "foruroliget";
-App::$strings["frustrated"] = "frustrert";
-App::$strings["depressed"] = "lei seg";
-App::$strings["motivated"] = "motivert";
-App::$strings["relaxed"] = "avslappet";
-App::$strings["surprised"] = "overrasket";
-App::$strings["May"] = "mai";
-App::$strings["Unknown Attachment"] = "Ukjent vedlegg";
-App::$strings["unknown"] = "ukjent";
-App::$strings["remove category"] = "fjern kategori";
-App::$strings["remove from file"] = "fjern fra fil";
-App::$strings["Click to open/close"] = "Klikk for å åpne/lukke";
-App::$strings["Link to Source"] = "Lenke til kilde";
-App::$strings["default"] = "standard";
-App::$strings["Page layout"] = "Sidens layout";
-App::$strings["You can create your own with the layouts tool"] = "Du kan lage din egen med layout-verktøyet";
-App::$strings["Page content type"] = "Sidens innholdstype";
-App::$strings["Select an alternate language"] = "Velg et annet språk";
-App::$strings["photo"] = "foto";
-App::$strings["status"] = "status";
-App::$strings["comment"] = "kommentar";
-App::$strings["activity"] = "aktivitet";
-App::$strings["Design Tools"] = "Designverktøy";
-App::$strings["Blocks"] = "Byggeklosser";
-App::$strings["Menus"] = "Menyer";
-App::$strings["Layouts"] = "Layout";
-App::$strings["Pages"] = "Sider";
-App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "En slettet gruppe med dette navnet ble gjenopprettet. Eksisterende tillatelser for elementet <strong>kan</strong> gjelde for denne gruppen og fremtidige medlemmer. Hvis du ønsket noe annet, vennligst lag en ny gruppe med et annet navn.";
-App::$strings["Add new connections to this privacy group"] = "Legg nye forbindelser i denne personverngruppen";
-App::$strings["All Channels"] = "Alle kanaler";
-App::$strings["edit"] = "endre";
-App::$strings["Edit group"] = "Endre gruppe";
-App::$strings["Add privacy group"] = "Legg til personverngruppe";
-App::$strings["Channels not in any privacy group"] = "Kanaler uten personverngruppe";
-App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
-App::$strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla:Notify] Ny melding mottatt hos %s";
-App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s sendte deg en ny privat melding på %3\$s.";
-App::$strings["%1\$s sent you %2\$s."] = "%1\$s sendte deg %2\$s.";
-App::$strings["a private message"] = "en privat melding";
-App::$strings["Please visit %s to view and/or reply to your private messages."] = "Vennligst besøk %s for å se og/eller svare på dine private meldinger.";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s kommenterte på [zrl=%3\$s]a %4\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s kommenterte på [zrl=%3\$s]%4\$s's %5\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s kommenterte på [zrl=%3\$s]din %4\$s[/zrl]";
-App::$strings["[Hubzilla:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Hubzilla:Notify] Kommentar til samtale #%1\$d av %2\$s";
-App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s kommenterte på et element eller en samtale du følger";
-App::$strings["Please visit %s to view and/or reply to the conversation."] = "Vennligst besøk %s for å se og/eller svare i samtalen";
-App::$strings["[Hubzilla:Notify] %s posted to your profile wall"] = "[Hubzilla:Notify] %s skrev et innlegg på din profilvegg";
-App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s skrev et innlegg på din profilvegg på %3\$s";
-App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s skrev et innlegg på [zrl=%3\$s]din vegg[/zrl]";
-App::$strings["[Hubzilla:Notify] %s tagged you"] = "[Hubzilla:Notify] %s merket deg";
-App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s merket deg på %3\$s";
-App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]merket deg[/zrl].";
-App::$strings["[Hubzilla:Notify] %1\$s poked you"] = "[Hubzilla:Notify] %1\$s prikket deg";
-App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s dyttet deg på %3\$s";
-App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]dyttet deg[/zrl].";
-App::$strings["[Hubzilla:Notify] %s tagged your post"] = "[Hubzilla:Notify] %s merket ditt innlegg";
-App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s merket ditt innlegg på %3\$s";
-App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s merket [zrl=%3\$s]ditt innlegg[/zrl]";
-App::$strings["[Hubzilla:Notify] Introduction received"] = "[Hubzilla:Notify] Introduksjon mottatt";
-App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, du har mottatt en ny forespørsel om forbindelse fra '%2\$s' hos %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, du mottok [zrl=%2\$s]en ny forespørsel om forbindelse[/zrl] fra %3\$s.";
-App::$strings["You may visit their profile at %s"] = "Du kan besøke profilen deres på %s";
-App::$strings["Please visit %s to approve or reject the connection request."] = "Vennligst besøk %s for å godkjenne eller avslå forespørselen om forbindelse.";
-App::$strings["[Hubzilla:Notify] Friend suggestion received"] = "[Hubzilla:Notify] Venneforslag mottatt";
-App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, du har mottatt en venneforespørsel fra '%2\$s' hos %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, du har mottatt [zrl=%2\$s]et venneforslaget[/zrl] angående %3\$s fra %4\$s. ";
-App::$strings["Name:"] = "Navn:";
-App::$strings["Photo:"] = "Bilde:";
-App::$strings["Please visit %s to approve or reject the suggestion."] = "Vennligst besøk %s for å godkjenne eller avslå dette forslaget.";
-App::$strings["[Hubzilla:Notify]"] = "[Hubzilla:Notify]";
-App::$strings["Unable to obtain identity information from database"] = "Klarer ikke å få tak i identitetsinformasjon fra databasen";
-App::$strings["Empty name"] = "Mangler navn";
-App::$strings["Name too long"] = "Navnet er for langt";
-App::$strings["No account identifier"] = "Ingen kontoidentifikator";
-App::$strings["Nickname is required."] = "Kallenavn er påkrevd.";
-App::$strings["Reserved nickname. Please choose another."] = "Reservert kallenavn. Vennligst velg et annet.";
-App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Kallenavnet inneholder tegn som ikke er støttet eller det er allerede i bruk på dette nettstedet.";
-App::$strings["Unable to retrieve created identity"] = "Klarer ikke å hente den lagede identiteten";
-App::$strings["Default Profile"] = "Standardprofil";
-App::$strings["Requested channel is not available."] = "Forespurt kanal er ikke tilgjengelig.";
+App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Fjernautentisering blokkert. Du er logget inn på dette nettstedet lokalt. Vennligst logg ut og prøv på nytt.";
+App::$strings["Welcome %s. Remote authentication successful."] = "Velkommen %s. Ekstern autentisering er vellykket.";
App::$strings["Requested profile is not available."] = "Forespurt profil er ikke tilgjengelig.";
-App::$strings["Change profile photo"] = "Endre profilbilde";
-App::$strings["Profiles"] = "Profiler";
-App::$strings["Manage/edit profiles"] = "HÃ¥ndtere/endre profiler";
-App::$strings["Create New Profile"] = "Lag ny profil";
-App::$strings["Profile Image"] = "Profilbilde";
-App::$strings["visible to everybody"] = "synlig for alle";
-App::$strings["Edit visibility"] = "Endre synlighet";
-App::$strings["Gender:"] = "Kjønn:";
-App::$strings["Status:"] = "Status:";
-App::$strings["Homepage:"] = "Hjemmeside:";
-App::$strings["Online Now"] = "Online nå";
-App::$strings["g A l F d"] = "g A l F d";
-App::$strings["F d"] = "F d";
-App::$strings["[today]"] = "[idag]";
-App::$strings["Birthday Reminders"] = "Fødselsdagspåminnnelser";
-App::$strings["Birthdays this week:"] = "Fødselsdager denne uken:";
-App::$strings["[No description]"] = "[Ingen beskrivelse]";
-App::$strings["Event Reminders"] = "Hendelsespåminnelser";
-App::$strings["Events this week:"] = "Hendelser denne uken:";
-App::$strings["Full Name:"] = "Fullt navn:";
-App::$strings["Like this channel"] = "Lik denne kanalen";
-App::$strings["j F, Y"] = "j F, Y";
-App::$strings["j F"] = "j F";
-App::$strings["Birthday:"] = "Fødselsdag:";
-App::$strings["Age:"] = "Alder:";
-App::$strings["for %1\$d %2\$s"] = "for %1\$d %2\$s";
-App::$strings["Sexual Preference:"] = "Seksuell preferanse:";
-App::$strings["Hometown:"] = "Hjemby:";
-App::$strings["Tags:"] = "Merkelapper:";
-App::$strings["Political Views:"] = "Politiske synspunkter:";
-App::$strings["Religion:"] = "Religion:";
-App::$strings["About:"] = "Om:";
-App::$strings["Hobbies/Interests:"] = "Hobbyer/interesser:";
-App::$strings["Likes:"] = "Liker:";
-App::$strings["Dislikes:"] = "Misliker:";
-App::$strings["Contact information and Social Networks:"] = "Kontaktinformasjon og sosiale nettverk:";
-App::$strings["My other channels:"] = "Mine andre kanaler:";
-App::$strings["Musical interests:"] = "Musikkinteresse:";
-App::$strings["Books, literature:"] = "Bøker, litteratur:";
-App::$strings["Television:"] = "TV:";
-App::$strings["Film/dance/culture/entertainment:"] = "Film/dans/kultur/underholdning:";
-App::$strings["Love/Romance:"] = "Kjærlighet/romantikk:";
-App::$strings["Work/employment:"] = "Arbeid/sysselsetting:";
-App::$strings["School/education:"] = "Skole/utdannelse:";
-App::$strings["Like this thing"] = "Lik denne tingen";
-App::$strings["cover photo"] = "forsidebilde";
-App::$strings["Embedded content"] = "Innebygget innhold";
-App::$strings["Embedding disabled"] = "Innbygging avskrudd";
-App::$strings["channel"] = "kanal";
-App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s liker %2\$s sin %3\$s";
-App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s liker ikke %2\$s sin %3\$s";
-App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s er nå forbundet med %2\$s";
-App::$strings["%1\$s poked %2\$s"] = "%1\$s prikket %2\$s";
-App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s er %2\$s";
-App::$strings["__ctx:title__ Likes"] = "Liker";
-App::$strings["__ctx:title__ Dislikes"] = "Liker ikke";
-App::$strings["__ctx:title__ Agree"] = "Enig";
-App::$strings["__ctx:title__ Disagree"] = "Uenig";
-App::$strings["__ctx:title__ Abstain"] = "Avstår";
-App::$strings["__ctx:title__ Attending"] = "Deltar";
-App::$strings["__ctx:title__ Not attending"] = "Deltar ikke";
-App::$strings["__ctx:title__ Might attend"] = "Deltar kanskje";
-App::$strings["Select"] = "Velg";
-App::$strings["Private Message"] = "Privat melding";
-App::$strings["Message signature validated"] = "Innleggets signatur er bekreftet";
-App::$strings["Message signature incorrect"] = "Innleggets signatur er feil";
-App::$strings["View %s's profile @ %s"] = "Vis %s sin profile @ %s";
-App::$strings["Categories:"] = "Kategorier:";
-App::$strings["Filed under:"] = "Sortert under:";
-App::$strings["from %s"] = "fra %s";
-App::$strings["last edited: %s"] = "sist endret: %s";
-App::$strings["Expires: %s"] = "Utløper: %s";
-App::$strings["View in context"] = "Vis i sammenheng";
-App::$strings["Please wait"] = "Vennligst vent";
-App::$strings["remove"] = "fjern";
-App::$strings["Delete Selected Items"] = "Slett valgte elementer";
-App::$strings["View Source"] = "Vis kilde";
-App::$strings["Follow Thread"] = "Følg tråd";
-App::$strings["Unfollow Thread"] = "Ikke følg tråd";
-App::$strings["Activity/Posts"] = "Aktivitet/Innlegg";
-App::$strings["Edit Connection"] = "Endre forbindelse";
-App::$strings["Message"] = "Melding";
-App::$strings["Ratings"] = "Vurderinger";
-App::$strings["%s likes this."] = "%s liker dette.";
-App::$strings["%s doesn't like this."] = "%s liker ikke dette.";
-App::$strings["<span %1\$s>%2\$d people</span> like this."] = array(
- 0 => "<span %1\$s>%2\$d person</span> liker dette.",
- 1 => "<span %1\$s>%2\$d personer</span> liker dette.",
-);
-App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
- 0 => "<span %1\$s>%2\$d person</span> liker ikke dette.",
- 1 => "<span %1\$s>%2\$d personer</span> liker ikke dette.",
-);
-App::$strings["and"] = "og";
-App::$strings[", and %d other people"] = array(
- 0 => ", og %d annen person",
- 1 => ", og %d andre personer",
-);
-App::$strings["%s like this."] = "%s liker dette.";
-App::$strings["%s don't like this."] = "%s liker ikke dette.";
-App::$strings["Visible to <strong>everybody</strong>"] = "Synlig for <strong>alle</strong>";
-App::$strings["Please enter a link URL:"] = "Vennligst skriv inn en lenke URL:";
-App::$strings["Please enter a video link/URL:"] = "Vennligst skriv en videolenke/URL:";
-App::$strings["Please enter an audio link/URL:"] = "Vennligst skriv en lydlenke/URL:";
-App::$strings["Tag term:"] = "Merkelapp:";
-App::$strings["Save to Folder:"] = "Lagre til mappe:";
-App::$strings["Where are you right now?"] = "Hvor er du akkurat nå?";
-App::$strings["Expires YYYY-MM-DD HH:MM"] = "Utløper YYYY-MM-DD HH:MM";
-App::$strings["Share"] = "Del";
-App::$strings["Page link name"] = "Sidens lenkenavn";
-App::$strings["Post as"] = "Lag innlegg som";
-App::$strings["Bold"] = "Uthevet";
-App::$strings["Italic"] = "Kursiv";
-App::$strings["Underline"] = "Understreket";
-App::$strings["Quote"] = "Sitat";
-App::$strings["Code"] = "Kode";
-App::$strings["Upload photo"] = "Last opp bilde";
-App::$strings["upload photo"] = "last opp bilde";
-App::$strings["Attach file"] = "Legg ved fil";
-App::$strings["attach file"] = "legg ved fil";
-App::$strings["Insert web link"] = "Sett inn web-lenke";
-App::$strings["web link"] = "web-lenke";
-App::$strings["Insert video link"] = "Sett inn videolenke";
-App::$strings["video link"] = "videolenke";
-App::$strings["Insert audio link"] = "Sett inn lenke til lyd";
-App::$strings["audio link"] = "lenke til lyd";
-App::$strings["Set your location"] = "Angi din plassering";
-App::$strings["set location"] = "angi plassering";
-App::$strings["Toggle voting"] = "Skru av eller på stemming";
-App::$strings["Clear browser location"] = "Fjern nettleserplassering";
-App::$strings["clear location"] = "fjern plassering";
-App::$strings["Title (optional)"] = "Tittel (valgfri)";
-App::$strings["Categories (optional, comma-separated list)"] = "Kategorier (valgfri, kommaseparert liste)";
-App::$strings["Permission settings"] = "Tillatelser - innstillinger";
-App::$strings["permissions"] = "tillatelser";
-App::$strings["Public post"] = "Offentlig innlegg";
-App::$strings["Example: bob@example.com, mary@example.com"] = "Eksempel: ola@eksempel.no, kari@eksempel.no";
-App::$strings["Set expiration date"] = "Angi utløpsdato";
-App::$strings["Set publish date"] = "Angi publiseringsdato";
-App::$strings["Encrypt text"] = "Krypter tekst";
-App::$strings["OK"] = "OK";
-App::$strings["Cancel"] = "Avbryt";
-App::$strings["Discover"] = "Oppdage";
-App::$strings["Imported public streams"] = "Importerte offentlige strømmer";
-App::$strings["Commented Order"] = "Kommentert";
-App::$strings["Sort by Comment Date"] = "Sorter etter kommentert dato";
-App::$strings["Posted Order"] = "Lagt inn";
-App::$strings["Sort by Post Date"] = "Sorter etter innleggsdato";
-App::$strings["Posts that mention or involve you"] = "Innlegg som nevner eller involverer deg";
-App::$strings["New"] = "Nye";
-App::$strings["Activity Stream - by date"] = "Aktivitetsstrøm - etter dato";
-App::$strings["Starred"] = "Stjerne";
-App::$strings["Favourite Posts"] = "Favorittinnlegg";
-App::$strings["Spam"] = "Søppel";
-App::$strings["Posts flagged as SPAM"] = "Innlegg merket som SØPPEL";
-App::$strings["Channel"] = "Kanal";
-App::$strings["Status Messages and Posts"] = "Statusmeldinger og -innlegg";
-App::$strings["About"] = "Om";
-App::$strings["Profile Details"] = "Profildetaljer";
-App::$strings["Files and Storage"] = "Filer og lagring";
-App::$strings["Chatrooms"] = "Chatrom";
-App::$strings["Saved Bookmarks"] = "Lagrede bokmerker";
-App::$strings["Manage Webpages"] = "HÃ¥ndtere websider";
-App::$strings["View all"] = "Vis alle";
-App::$strings["__ctx:noun__ Dislike"] = array(
- 0 => "Liker ikke",
- 1 => "Liker ikke",
-);
-App::$strings["__ctx:noun__ Attending"] = array(
- 0 => "Deltar",
- 1 => "Deltar",
-);
-App::$strings["__ctx:noun__ Not Attending"] = array(
- 0 => "Deltar ikke",
- 1 => "Deltar ikke",
-);
-App::$strings["__ctx:noun__ Undecided"] = array(
- 0 => "Ikke bestemt",
- 1 => "Ikke bestemt",
-);
-App::$strings["__ctx:noun__ Agree"] = array(
- 0 => "Enig",
- 1 => "Enige",
-);
-App::$strings["__ctx:noun__ Disagree"] = array(
- 0 => "Uenig",
- 1 => "Uenige",
-);
-App::$strings["__ctx:noun__ Abstain"] = array(
- 0 => "Avstår",
- 1 => "Avstår",
-);
-App::$strings["Save to Folder"] = "Lagre i mappe";
-App::$strings["I will attend"] = "Jeg vil delta";
-App::$strings["I will not attend"] = "Jeg deltar ikke";
-App::$strings["I might attend"] = "Jeg vil kanskje delta";
-App::$strings["I agree"] = "Jeg er enig";
-App::$strings["I disagree"] = "Jeg er uenig";
-App::$strings["I abstain"] = "Jeg avstår";
-App::$strings["Add Star"] = "Legg til stjerne";
-App::$strings["Remove Star"] = "Fjern stjerne";
-App::$strings["Toggle Star Status"] = "Skru av og på stjernestatus";
-App::$strings["starred"] = "stjernemerket";
-App::$strings["Add Tag"] = "Legg til merkelapp";
-App::$strings["I like this (toggle)"] = "Jeg liker dette (skru av og på)";
-App::$strings["I don't like this (toggle)"] = "Jeg liker ikke dette (skru av og på)";
-App::$strings["Share This"] = "Del dette";
-App::$strings["share"] = "del";
-App::$strings["Delivery Report"] = "Leveringsrapport";
-App::$strings["%d comment"] = array(
- 0 => "%d kommentar",
- 1 => "%d kommentarer",
-);
-App::$strings["View %s's profile - %s"] = "Vis %s sin profil - %s";
-App::$strings["to"] = "til";
-App::$strings["via"] = "via";
-App::$strings["Wall-to-Wall"] = "vegg-til-vegg";
-App::$strings["via Wall-To-Wall:"] = "via vegg-til-vegg:";
-App::$strings["Save Bookmarks"] = "Lagre bokmerker";
-App::$strings["Add to Calendar"] = "Legg til i kalender";
-App::$strings["Mark all seen"] = "Merk alle som sett";
-App::$strings["__ctx:noun__ Likes"] = "Liker";
-App::$strings["__ctx:noun__ Dislikes"] = "Liker ikke";
-App::$strings["This is you"] = "Dette er deg";
-App::$strings["Image"] = "Bilde";
-App::$strings["Insert Link"] = "Sett inn lenke";
-App::$strings["Video"] = "Video";
-App::$strings["Can view my normal stream and posts"] = "Kan se min normale strøm og innlegg";
-App::$strings["Can view my default channel profile"] = "Kan se min standard kanalprofil";
-App::$strings["Can view my connections"] = "Kan se mine forbindelser";
-App::$strings["Can view my file storage and photos"] = "Kan se mine filer og bilder";
-App::$strings["Can view my webpages"] = "Kan se mine websider";
-App::$strings["Can send me their channel stream and posts"] = "Kan sende meg deres kanalstrøm og innlegg";
-App::$strings["Can post on my channel page (\"wall\")"] = "Kan lage innlegg på min kanalside (\"vegg\")";
-App::$strings["Can comment on or like my posts"] = "Kan kommentere på eller like mine innlegg";
-App::$strings["Can send me private mail messages"] = "Kan sende meg private meldinger";
-App::$strings["Can like/dislike stuff"] = "Kan like/ikke like forskjellige greier";
-App::$strings["Profiles and things other than posts/comments"] = "Profiler og andre ting enn innlegg/kommentarer";
-App::$strings["Can forward to all my channel contacts via post @mentions"] = "Kan videresende til alle mine kanalkontakter via @navn i innlegg";
-App::$strings["Advanced - useful for creating group forum channels"] = "Avansert - nyttig for å lage forumkanaler for grupper";
-App::$strings["Can chat with me (when available)"] = "Kan chatte/sende lynmeldinger til meg (når tilgjengelig)";
-App::$strings["Can write to my file storage and photos"] = "Kan skrive til mitt lager for filer og bilder";
-App::$strings["Can edit my webpages"] = "Kan endre mine websider";
-App::$strings["Can source my public posts in derived channels"] = "Kan bruke mine offentlige innlegg som kanalkilde i egne kanaler";
-App::$strings["Somewhat advanced - very useful in open communities"] = "Litt avansert - svært nyttig i åpne fellesskap";
-App::$strings["Can administer my channel resources"] = "Kan administrere mine kanalressurser";
-App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Ekstremt avansert. La dette være med mindre du vet hva du gjør";
-App::$strings["Social Networking"] = "Sosialt nettverk";
-App::$strings["Social - Mostly Public"] = "Sosial - ganske offentlig";
-App::$strings["Social - Restricted"] = "Sosial - begrenset";
-App::$strings["Social - Private"] = "Sosial - privat";
-App::$strings["Community Forum"] = "Forum for fellesskap";
-App::$strings["Forum - Mostly Public"] = "Forum - ganske offentlig";
-App::$strings["Forum - Restricted"] = "Forum - begrenset";
-App::$strings["Forum - Private"] = "Forum - privat";
-App::$strings["Feed Republish"] = "Republisering av strømmet innhold";
-App::$strings["Feed - Mostly Public"] = "Strøm - ganske offentlig";
-App::$strings["Feed - Restricted"] = "Strøm - begrenset";
-App::$strings["Special Purpose"] = "Spesiell bruk";
-App::$strings["Special - Celebrity/Soapbox"] = "Spesiell - kjendis/talerstol";
-App::$strings["Special - Group Repository"] = "Spesiell - gruppelager";
-App::$strings["Custom/Expert Mode"] = "Tilpasset/Ekspertmodus";
-App::$strings["Permission denied"] = "Tillatelse avvist";
-App::$strings["(Unknown)"] = "(Ukjent)";
-App::$strings["Visible to anybody on the internet."] = "Synlig for enhver på Internett.";
-App::$strings["Visible to you only."] = "Synlig bare for deg.";
-App::$strings["Visible to anybody in this network."] = "Synlig for enhver i dette nettverket.";
-App::$strings["Visible to anybody authenticated."] = "Synlig for enhver som er autentisert.";
-App::$strings["Visible to anybody on %s."] = "Synlig for alle på %s.";
-App::$strings["Visible to all connections."] = "Synlig for alle forbindelser.";
-App::$strings["Visible to approved connections."] = "Synlig for godkjente forbindelser.";
-App::$strings["Visible to specific connections."] = "Synlig for spesifikke forbindelser.";
-App::$strings["Item not found."] = "Elementet ble ikke funnet.";
-App::$strings["Privacy group not found."] = "Personverngruppen ble ikke funnet";
-App::$strings["Privacy group is empty."] = "Personverngruppen er tom.";
-App::$strings["Privacy group: %s"] = "Personverngruppe: %s";
-App::$strings["Connection: %s"] = "Forbindelse: %s";
-App::$strings["Connection not found."] = "Forbindelsen ble ikke funnet.";
-App::$strings["female"] = "kvinne";
-App::$strings["%1\$s updated her %2\$s"] = "%1\$s oppdaterte %2\$s sitt";
-App::$strings["male"] = "mann";
-App::$strings["%1\$s updated his %2\$s"] = "%1\$s oppdaterte %2\$s sitt";
-App::$strings["%1\$s updated their %2\$s"] = "%1\$s oppdaterte %2\$s deres";
-App::$strings["profile photo"] = "profilbilde";
App::$strings["Some blurb about what to do when you're new here"] = "En standardtekst om hva du bør gjøre som ny her";
-App::$strings["network"] = "nettverk";
-App::$strings["RSS"] = "RSS";
-App::$strings["Authorize application connection"] = "Tillat programforbindelse";
-App::$strings["Return to your app and insert this Securty Code:"] = "GÃ¥ tilbake til din app og legg inn denne sikkerhetskoden:";
-App::$strings["Please login to continue."] = "Vennligst logg inn for å fortsette.";
-App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Vil du tillate dette programmet å få tilgang til dine innlegg og kontakter, og/eller lage nye innlegg for deg?";
-App::$strings["App installed."] = "App installert.";
-App::$strings["Malformed app."] = "Feil oppsett for app-en.";
-App::$strings["Embed code"] = "Innbyggingskode";
-App::$strings["Edit App"] = "Endre app";
-App::$strings["Create App"] = "Lag app";
-App::$strings["Name of app"] = "Navn på app";
-App::$strings["Location (URL) of app"] = "Plassering (URL) til app";
-App::$strings["Description"] = "Beskrivelse";
-App::$strings["Photo icon URL"] = "Bildeikon URL";
-App::$strings["80 x 80 pixels - optional"] = "80 x80 pixler - valgfritt";
-App::$strings["Version ID"] = "Versjons-ID";
-App::$strings["Price of app"] = "Pris på app";
-App::$strings["Location (URL) to purchase app"] = "Plassering (URL) for å kjøpe app";
-App::$strings["Item not available."] = "Elementet er ikke tilgjengelig.";
-App::$strings["Invalid item."] = "Ugyldig element.";
-App::$strings["Channel not found."] = "Kanalen ble ikke funnet.";
App::$strings["Block Name"] = "Byggeklossens navn";
+App::$strings["Blocks"] = "Byggeklosser";
App::$strings["Block Title"] = "Byggeklossens tittel";
-App::$strings["Bookmark added"] = "Bokmerke lagt til";
-App::$strings["My Bookmarks"] = "Mine bokmerker";
-App::$strings["My Connections Bookmarks"] = "Mine forbindelsers bokmerker";
+App::$strings["Created"] = "Laget";
+App::$strings["Edited"] = "Endret";
+App::$strings["Share"] = "Del";
+App::$strings["View"] = "Vis";
+App::$strings["Channel not found."] = "Kanalen ble ikke funnet.";
+App::$strings["Permissions denied."] = "Tillatelse avvist.";
+App::$strings["l, F j"] = "l, F j";
+App::$strings["Link to Source"] = "Lenke til kilde";
+App::$strings["Edit Event"] = "Endre hendelse";
+App::$strings["Create Event"] = "Lag hendelse";
+App::$strings["Previous"] = "Forrige";
+App::$strings["Next"] = "Neste";
+App::$strings["Export"] = "Eksport";
+App::$strings["Import"] = "Importer";
+App::$strings["Submit"] = "Send";
+App::$strings["Today"] = "Idag";
App::$strings["You must be logged in to see this page."] = "Du må være innloegget for å se denne siden.";
+App::$strings["Posts and comments"] = "";
+App::$strings["Only posts"] = "";
App::$strings["Insufficient permissions. Request redirected to profile page."] = "Utilstrekkelig tillatelse. Forespørsel omdirigert til profilsiden.";
-App::$strings["Public"] = "Offentlig";
App::$strings["Room not found"] = "Rommet ble ikke funnet";
App::$strings["Leave Room"] = "Forlat rom";
-App::$strings["Delete This Room"] = "Slett dette rommet";
+App::$strings["Delete Room"] = "";
App::$strings["I am away right now"] = "Jeg er borte akkurat nå";
App::$strings["I am online"] = "Jeg er online";
App::$strings["Bookmark this room"] = "Bokmerk dette rommet";
+App::$strings["Please enter a link URL:"] = "Vennligst skriv inn en lenke URL:";
+App::$strings["Encrypt text"] = "Krypter tekst";
+App::$strings["Insert web link"] = "Sett inn web-lenke";
+App::$strings["Feature disabled."] = "";
App::$strings["New Chatroom"] = "Nytt chatrom";
-App::$strings["Chatroom Name"] = "Navn på chatrom";
+App::$strings["Chatroom name"] = "";
App::$strings["Expiration of chats (minutes)"] = "Chat utgår (antall minutter)";
+App::$strings["Permissions"] = "Tillatelser";
App::$strings["%1\$s's Chatrooms"] = "%1\$s sine chatrom";
+App::$strings["No chatrooms available"] = "";
+App::$strings["Create New"] = "";
+App::$strings["Expiration"] = "";
+App::$strings["min"] = "";
App::$strings["Away"] = "Borte";
App::$strings["Online"] = "Online";
-App::$strings["No channel."] = "Ingen kanal.";
-App::$strings["Common connections"] = "Felles forbindelser";
-App::$strings["No connections in common."] = "Ingen forbindelser felles.";
+App::$strings["Invalid item."] = "Ugyldig element.";
+App::$strings["Bookmark added"] = "Bokmerke lagt til";
+App::$strings["My Bookmarks"] = "Mine bokmerker";
+App::$strings["My Connections Bookmarks"] = "Mine forbindelsers bokmerker";
App::$strings["Continue"] = "Fortsett";
App::$strings["Premium Channel Setup"] = "Premiumkanal-oppsett";
App::$strings["Enable premium channel connection restrictions"] = "Slå på restriksjoner for forbindelse med premiumkanal";
@@ -1080,42 +94,18 @@ App::$strings["Potential connections will then see the following text before pro
App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Ved å fortsette bekrefter jeg at jeg har oppfylt alle instruksjoner gitt på denne siden.";
App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(Ingen spesifikke instruksjoner er gitt av kanaleieren.)";
App::$strings["Restricted or Premium Channel"] = "Begrenset kanal eller premiumkanal";
-App::$strings["Blocked"] = "Blokkert";
-App::$strings["Ignored"] = "Ignorert";
-App::$strings["Hidden"] = "Skjult";
-App::$strings["Archived"] = "Arkivert";
-App::$strings["New Connections"] = "Nye forbindelser";
-App::$strings["Show pending (new) connections"] = "Vis ventende (nye) forbindelser";
-App::$strings["All Connections"] = "Alle forbindelser";
-App::$strings["Show all connections"] = "Vis alle forbindelser";
-App::$strings["Only show blocked connections"] = "Vis bare forbindelser som er blokkert";
-App::$strings["Only show ignored connections"] = "Vis bare ignorerte forbindelser";
-App::$strings["Only show archived connections"] = "Vis bare arkiverte forbindelser";
-App::$strings["Only show hidden connections"] = "Vis bare skjulte forbindelser";
-App::$strings["Pending approval"] = "Venter på godkjenning";
-App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-App::$strings["Edit connection"] = "Endre forbindelse";
-App::$strings["Delete connection"] = "Slett forbindelse";
-App::$strings["Channel address"] = "Kanaladresse";
-App::$strings["Network"] = "Nettverk";
-App::$strings["Status"] = "Status";
-App::$strings["Connected"] = "Forbundet";
-App::$strings["Approve connection"] = "Godkjenn forbindelse";
-App::$strings["Approve"] = "Godkjenn";
-App::$strings["Ignore connection"] = "Ignorer forbindelse";
-App::$strings["Ignore"] = "Ignorer";
-App::$strings["Recent activity"] = "Nylig aktivitet";
-App::$strings["Search your connections"] = "Søk blant dine forbindelser";
-App::$strings["Connections search"] = "Søk blant forbindelser";
App::$strings["Could not access contact record."] = "Fikk ikke tilgang til kontaktinformasjonen.";
App::$strings["Could not locate selected profile."] = "Fant ikke valgt profil.";
App::$strings["Connection updated."] = "Forbindelsen er oppdatert.";
App::$strings["Failed to update connection record."] = "Mislyktes med å oppdatere forbindelsesinformasjonen.";
App::$strings["is now connected to"] = "er nå forbundet til";
+App::$strings["No"] = "Nei";
+App::$strings["Yes"] = "Ja";
App::$strings["Could not access address book record."] = "Fikk ikke tilgang til informasjonen i adresseboken.";
App::$strings["Refresh failed - channel is currently unavailable."] = "Oppfrisking mislyktes - kanalen er for øyeblikket utilgjengelig.";
App::$strings["Unable to set address book parameters."] = "Ikke i stand til å angi parametre for adresseboken.";
App::$strings["Connection has been removed."] = "Forbindelsen har blitt fjernet.";
+App::$strings["View Profile"] = "Vis profil";
App::$strings["View %s's profile"] = "Vis %s sin profil";
App::$strings["Refresh Permissions"] = "Oppfrisk tillatelser";
App::$strings["Fetch updated permissions"] = "Hent oppdaterte tillatelser";
@@ -1126,6 +116,7 @@ App::$strings["Block"] = "Blokker";
App::$strings["Block (or Unblock) all communications with this connection"] = "Blokker eller fjern blokkering av all kommunikasjon med denne forbindelsen";
App::$strings["This connection is blocked!"] = "Denne forbindelsen er blokkert!";
App::$strings["Unignore"] = "Ikke ignorer lenger";
+App::$strings["Ignore"] = "Ignorer";
App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Ignorer eller fjern ignorering av all inngående kommunikasjon fra denne forbindelsen";
App::$strings["This connection is ignored!"] = "Denne forbindelsen er ignorert!";
App::$strings["Unarchive"] = "Ikke arkiver lenger";
@@ -1137,18 +128,27 @@ App::$strings["Hide"] = "Skjul";
App::$strings["Hide or Unhide this connection from your other connections"] = "Skjul eller fjern skjuling av denne forbindelsen fra dine andre forbindelser";
App::$strings["This connection is hidden!"] = "Denne forbindelsen er skjult!";
App::$strings["Delete this connection"] = "Slett denne forbindelsen";
+App::$strings["Me"] = "Meg";
+App::$strings["Family"] = "Familie";
+App::$strings["Friends"] = "Venner";
+App::$strings["Acquaintances"] = "Bekjente";
+App::$strings["All"] = "Alle";
App::$strings["Approve this connection"] = "Godta denne forbindelsen";
App::$strings["Accept connection to allow communication"] = "Godta denne forbindelsen for å tillate kommunikasjon";
App::$strings["Set Affinity"] = "Angi nærhet";
App::$strings["Set Profile"] = "Angi profil";
App::$strings["Set Affinity & Profile"] = "Angi nærhet og profil";
App::$strings["none"] = "ingen";
+App::$strings["Connection Default Permissions"] = "Forbindelsens standard tillatelser";
+App::$strings["Connection: %s"] = "Forbindelse: %s";
App::$strings["Apply these permissions automatically"] = "Bruk disse tillatelsene automatisk";
App::$strings["Connection requests will be approved without your interaction"] = "Forespørsler om forbindelse vil bli godkjent automatisk";
App::$strings["This connection's primary address is"] = "Denne forbindelsens primære adresse er";
App::$strings["Available locations:"] = "Tilgjengelige plasseringer:";
App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Tillatelsene angitt på denne siden gjøres gjeldende for alle nye forbindelser.";
+App::$strings["Connection Tools"] = "";
App::$strings["Slide to adjust your degree of friendship"] = "Flytt for å justere din grad av vennskap";
+App::$strings["Rating"] = "Vurdering";
App::$strings["Slide to adjust your rating"] = "Flytt for å justere din vurdering";
App::$strings["Optionally explain your rating"] = "Velg om du vil forklare vurderingen";
App::$strings["Custom Filter"] = "Tilpasset filter";
@@ -1165,7 +165,6 @@ App::$strings["Individual Permissions"] = "Individuelle tillatelser";
App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Noen tillatelser kan være arvet fra din kanals <a ref=\"settings\"><strong>personverninnstillinger</strong></a>, som har høyere prioritet enn individuelle innstillinger. Du kan <strong>ikke</strong> endre arvede innstillingene her.";
App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Noen tillatelser kan være arvet fra din kanals <a ref=\"settings\"><strong>personverninnstillinger</strong></a>, som har høyere prioritet enn individuelle innstillinger. Du kan endre disse innstillingene her, men de vil ikke få noen effekt før de arvede innstillingene endres.";
App::$strings["Last update:"] = "Siste oppdatering:";
-App::$strings["\$Projectname channel"] = "\$Projectname-kanal";
App::$strings["Public access denied."] = "Offentlig tilgang avvist.";
App::$strings["%d rating"] = array(
0 => "%d vurdering",
@@ -1174,14 +173,21 @@ App::$strings["%d rating"] = array(
App::$strings["Gender: "] = "Kjønn:";
App::$strings["Status: "] = "Status:";
App::$strings["Homepage: "] = "Hjemmeside:";
+App::$strings["Age:"] = "Alder:";
+App::$strings["Location:"] = "Plassering:";
App::$strings["Description:"] = "Beskrivelse:";
+App::$strings["Hometown:"] = "Hjemby:";
+App::$strings["About:"] = "Om:";
+App::$strings["Connect"] = "Koble";
App::$strings["Public Forum:"] = "Offentlig forum:";
App::$strings["Keywords: "] = "Nøkkelord:";
App::$strings["Don't suggest"] = "Ikke foreslå";
App::$strings["Common connections:"] = "Felles forbindelser:";
App::$strings["Global Directory"] = "Global katalog";
App::$strings["Local Directory"] = "Lokal katalog";
+App::$strings["Find"] = "Finn";
App::$strings["Finding:"] = "Finner:";
+App::$strings["Channel Suggestions"] = "Kanalforslag";
App::$strings["next page"] = "Neste side";
App::$strings["previous page"] = "Forrige side";
App::$strings["Sort options"] = "Sorteringsvalg";
@@ -1190,46 +196,76 @@ App::$strings["Reverse Alphabetic"] = "Omvendt alfabetisk";
App::$strings["Newest to Oldest"] = "Nyest til eldst";
App::$strings["Oldest to Newest"] = "Eldst til nyest";
App::$strings["No entries (some entries may be hidden)."] = "Ingen oppføringer (noen oppføringer kan være skjult).";
-App::$strings["This site is not a directory server"] = "Dette nettstedet er ikke en katalogtjener";
-App::$strings["This directory server requires an access token"] = "Denne katalogtjeneren krever en tilgangsnøkkel (access token)";
-App::$strings["Invalid message"] = "Ugyldig melding";
-App::$strings["no results"] = "ingen resultater";
-App::$strings["Delivery report for %1\$s"] = "Leveringsrapport for %1\$s";
-App::$strings["channel sync processed"] = "Kanalsynkronisering er behandlet";
-App::$strings["queued"] = "lagt i kø";
-App::$strings["posted"] = "lagt inn";
-App::$strings["accepted for delivery"] = "akseptert for levering";
-App::$strings["updated"] = "oppdatert";
-App::$strings["update ignored"] = "oppdatering ignorert";
-App::$strings["permission denied"] = "tillatelse avvist";
-App::$strings["recipient not found"] = "mottaker ble ikke funnet";
-App::$strings["mail recalled"] = "melding tilbakekalt";
-App::$strings["duplicate mail received"] = "duplikat av melding mottatt";
-App::$strings["mail delivered"] = "melding mottatt";
+App::$strings["Item not found."] = "Elementet ble ikke funnet.";
App::$strings["Item not found"] = "Elementet ble ikke funnet.";
-App::$strings["Delete block?"] = "Slett byggeklossen?";
-App::$strings["Insert YouTube video"] = "Sett inn YouTube-video";
-App::$strings["Insert Vorbis [.ogg] video"] = "Sett inn Vorbis [.ogg] video";
-App::$strings["Insert Vorbis [.ogg] audio"] = "Legg i";
+App::$strings["Title (optional)"] = "Tittel (valgfri)";
App::$strings["Edit Block"] = "Endre byggekloss";
-App::$strings["Delete layout?"] = "Slett layout?";
-App::$strings["Layout Description (Optional)"] = "Layoutens beskrivelse (valgfritt)";
-App::$strings["Layout Name"] = "Layout-navn";
-App::$strings["Edit Layout"] = "Endre layout";
+App::$strings["No channel."] = "Ingen kanal.";
+App::$strings["Common connections"] = "Felles forbindelser";
+App::$strings["No connections in common."] = "Ingen forbindelser felles.";
+App::$strings["Blocked"] = "Blokkert";
+App::$strings["Ignored"] = "Ignorert";
+App::$strings["Hidden"] = "Skjult";
+App::$strings["Archived"] = "Arkivert";
+App::$strings["New"] = "Nye";
+App::$strings["New Connections"] = "Nye forbindelser";
+App::$strings["Show pending (new) connections"] = "Vis ventende (nye) forbindelser";
+App::$strings["All Connections"] = "Alle forbindelser";
+App::$strings["Show all connections"] = "Vis alle forbindelser";
+App::$strings["Only show blocked connections"] = "Vis bare forbindelser som er blokkert";
+App::$strings["Only show ignored connections"] = "Vis bare ignorerte forbindelser";
+App::$strings["Only show archived connections"] = "Vis bare arkiverte forbindelser";
+App::$strings["Only show hidden connections"] = "Vis bare skjulte forbindelser";
+App::$strings["Pending approval"] = "Venter på godkjenning";
+App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
+App::$strings["Edit connection"] = "Endre forbindelse";
+App::$strings["Delete connection"] = "Slett forbindelse";
+App::$strings["Channel address"] = "Kanaladresse";
+App::$strings["Network"] = "Nettverk";
+App::$strings["Status"] = "Status";
+App::$strings["Connected"] = "Forbundet";
+App::$strings["Approve connection"] = "Godkjenn forbindelse";
+App::$strings["Approve"] = "Godkjenn";
+App::$strings["Ignore connection"] = "Ignorer forbindelse";
+App::$strings["Recent activity"] = "Nylig aktivitet";
+App::$strings["Connections"] = "Forbindelser";
+App::$strings["Search"] = "Søk";
+App::$strings["Search your connections"] = "Søk blant dine forbindelser";
+App::$strings["Connections search"] = "Søk blant forbindelser";
+App::$strings["Image uploaded but image cropping failed."] = "Bildet ble lastet opp, men beskjæring av bildet mislyktes.";
+App::$strings["Cover Photos"] = "Forsidebilder";
+App::$strings["Image resize failed."] = "Endring av bildestørrelse mislyktes.";
+App::$strings["Unable to process image"] = "Kan ikke behandle bildet";
+App::$strings["Image upload failed."] = "Opplasting av bildet mislyktes.";
+App::$strings["Unable to process image."] = "Kan ikke behandle bildet.";
+App::$strings["female"] = "kvinne";
+App::$strings["%1\$s updated her %2\$s"] = "%1\$s oppdaterte %2\$s sitt";
+App::$strings["male"] = "mann";
+App::$strings["%1\$s updated his %2\$s"] = "%1\$s oppdaterte %2\$s sitt";
+App::$strings["%1\$s updated their %2\$s"] = "%1\$s oppdaterte %2\$s deres";
+App::$strings["cover photo"] = "forsidebilde";
+App::$strings["Photo not available."] = "Bildet er ikke tilgjengelig.";
+App::$strings["Upload File:"] = "Last opp fil:";
+App::$strings["Select a profile:"] = "Velg en profil:";
+App::$strings["Upload Cover Photo"] = "Last opp forsidebilde";
+App::$strings["or"] = "eller";
+App::$strings["skip this step"] = "hopp over dette steget";
+App::$strings["select a photo from your photo albums"] = "velg et bilde fra dine fotoalbum";
+App::$strings["Crop Image"] = "Beskjær bildet";
+App::$strings["Please adjust the image cropping for optimum viewing."] = "Vennligst juster bildebeskjæringen for optimal visning.";
+App::$strings["Done Editing"] = "Avslutt redigering";
App::$strings["Item is not editable"] = "Elementet kan ikke endres";
-App::$strings["Delete item?"] = "Slett element?";
App::$strings["Edit post"] = "Endre innlegg";
-App::$strings["Delete webpage?"] = "Slett webside?";
-App::$strings["Page link title"] = "Sidens lenketittel";
-App::$strings["Edit Webpage"] = "Endre webside";
App::$strings["Calendar entries imported."] = "Kalenderhendelsene er importert.";
App::$strings["No calendar entries found."] = "Ingen kalenderhendelser funnet.";
App::$strings["Event can not end before it has started."] = "Hendelsen kan ikke slutte før den starter.";
App::$strings["Unable to generate preview."] = "Klarer ikke å lage forhåndsvisning.";
App::$strings["Event title and start time are required."] = "Hendelsestittel og starttidspunkt er påkrevd.";
App::$strings["Event not found."] = "Hendelsen ble ikke funnet.";
+App::$strings["event"] = "hendelse";
App::$strings["Edit event title"] = "Endre tittel på hendelse";
App::$strings["Event title"] = "Tittel på hendelse";
+App::$strings["Required"] = "PÃ¥krevd";
App::$strings["Categories (comma-separated list)"] = "Kategorier (kommaseparert liste)";
App::$strings["Edit Category"] = "Endre kategori";
App::$strings["Category"] = "Kategori";
@@ -1241,41 +277,50 @@ App::$strings["Finish date and time"] = "Sluttdato og tidspunkt";
App::$strings["Adjust for viewer timezone"] = "Juster i forhold til tilskuerens tidssone";
App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Viktig for hendelser som skjer på et bestemt sted. Ikke praktisk for globale ferier eller fridager.";
App::$strings["Edit Description"] = "Endre beskrivelse";
+App::$strings["Description"] = "Beskrivelse";
App::$strings["Edit Location"] = "Endre plassering";
+App::$strings["Location"] = "Plassering";
App::$strings["Share this event"] = "Del denne hendelsen";
+App::$strings["Preview"] = "Forhåndsvisning";
+App::$strings["Permission settings"] = "Tillatelser - innstillinger";
App::$strings["Advanced Options"] = "Avanserte alternativer";
-App::$strings["l, F j"] = "l, F j";
App::$strings["Edit event"] = "Endre hendelse";
App::$strings["Delete event"] = "Slett hendelse";
App::$strings["calendar"] = "kalender";
-App::$strings["Edit Event"] = "Endre hendelse";
-App::$strings["Create Event"] = "Lag hendelse";
-App::$strings["Previous"] = "Forrige";
-App::$strings["Next"] = "Neste";
-App::$strings["Today"] = "Idag";
App::$strings["Event removed"] = "Hendelse slettet";
App::$strings["Failed to remove event"] = "Mislyktes med å slette hendelse";
-App::$strings["Share content from Firefox to \$Projectname"] = "Del innhold fra Firefox til \$Projectname";
-App::$strings["Activate the Firefox \$Projectname provider"] = "Skru på Firefox \$Projectname tilbyderen";
+App::$strings["Photos"] = "Bilder";
+App::$strings["Cancel"] = "Avbryt";
+App::$strings["This site is not a directory server"] = "Dette nettstedet er ikke en katalogtjener";
+App::$strings["This directory server requires an access token"] = "Denne katalogtjeneren krever en tilgangsnøkkel (access token)";
+App::$strings["Save to Folder:"] = "Lagre til mappe:";
App::$strings["- select -"] = "- velg -";
-App::$strings["Permission Denied."] = "Tillatelse avvist.";
-App::$strings["File not found."] = "Filen ble ikke funnet.";
-App::$strings["Edit file permissions"] = "Endre filtillatelser";
-App::$strings["Set/edit permissions"] = "Angi/endre tillatelser";
-App::$strings["Include all files and sub folders"] = "Inkluder alle filer og undermapper";
-App::$strings["Return to file list"] = "GÃ¥ tilbake til filoversikten";
-App::$strings["Copy/paste this code to attach file to a post"] = "Kopier og lim inn denne koden for å legge til filen i et innlegg";
-App::$strings["Copy/paste this URL to link file from a web page"] = "Kopier og lim inn denne URL-en for å lenke til filen fra en webside";
-App::$strings["Share this file"] = "Del denne filen";
-App::$strings["Show URL to this file"] = "Vis URLen til denne filen";
-App::$strings["Notify your contacts about this file"] = "Varsle dine kontakter om denne filen";
+App::$strings["Save"] = "Lagre";
+App::$strings["Invalid message"] = "Ugyldig melding";
+App::$strings["no results"] = "ingen resultater";
+App::$strings["Delivery report for %1\$s"] = "Leveringsrapport for %1\$s";
+App::$strings["channel sync processed"] = "Kanalsynkronisering er behandlet";
+App::$strings["queued"] = "lagt i kø";
+App::$strings["posted"] = "lagt inn";
+App::$strings["accepted for delivery"] = "akseptert for levering";
+App::$strings["updated"] = "oppdatert";
+App::$strings["update ignored"] = "oppdatering ignorert";
+App::$strings["permission denied"] = "tillatelse avvist";
+App::$strings["recipient not found"] = "mottaker ble ikke funnet";
+App::$strings["mail recalled"] = "melding tilbakekalt";
+App::$strings["duplicate mail received"] = "duplikat av melding mottatt";
+App::$strings["mail delivered"] = "melding mottatt";
+App::$strings["Layout Name"] = "Layout-navn";
+App::$strings["Layout Description (Optional)"] = "Layoutens beskrivelse (valgfritt)";
+App::$strings["Edit Layout"] = "Endre layout";
+App::$strings["Page link"] = "";
+App::$strings["Edit Webpage"] = "Endre webside";
App::$strings["Channel added."] = "Kanal lagt til.";
-App::$strings["Contact not found."] = "Kontakten ble ikke funnet.";
-App::$strings["Friend suggestion sent."] = "Venneforespørsel sendt.";
-App::$strings["Suggest Friends"] = "Foreslå venner";
-App::$strings["Suggest a friend for %s"] = "Foreslå en venn for %s";
+App::$strings["network"] = "nettverk";
+App::$strings["RSS"] = "RSS";
App::$strings["Privacy group created."] = "Personverngruppen er opprettet.";
App::$strings["Could not create privacy group."] = "Kunne ikke opprette personverngruppen.";
+App::$strings["Privacy group not found."] = "Personverngruppen ble ikke funnet";
App::$strings["Privacy group updated."] = "Personverngruppen er oppdatert.";
App::$strings["Create a group of channels."] = "Lag en gruppe av kanaler.";
App::$strings["Privacy group name: "] = "Personverngruppens navn:";
@@ -1286,37 +331,37 @@ App::$strings["Privacy group editor"] = "Personverngruppebehandler";
App::$strings["Members"] = "Medlemmer";
App::$strings["All Connected Channels"] = "Alle tilkoblede kanaler";
App::$strings["Click on a channel to add or remove."] = "Klikk på en kanal for å legge til eller fjerne.";
+App::$strings["Share content from Firefox to \$Projectname"] = "Del innhold fra Firefox til \$Projectname";
+App::$strings["Activate the Firefox \$Projectname provider"] = "Skru på Firefox \$Projectname tilbyderen";
+App::$strings["Authorize application connection"] = "Tillat programforbindelse";
+App::$strings["Return to your app and insert this Securty Code:"] = "GÃ¥ tilbake til din app og legg inn denne sikkerhetskoden:";
+App::$strings["Please login to continue."] = "Vennligst logg inn for å fortsette.";
+App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Vil du tillate dette programmet å få tilgang til dine innlegg og kontakter, og/eller lage nye innlegg for deg?";
App::$strings["Documentation Search"] = "Søk i dokumentasjon";
App::$strings["Help:"] = "Hjelp:";
+App::$strings["Help"] = "Hjelp";
App::$strings["\$Projectname Documentation"] = "\$Projectname dokumentasjon";
-App::$strings["\$Projectname"] = "\$Projectname";
-App::$strings["Welcome to %s"] = "Velkommen til %s";
-App::$strings["First Name"] = "Fornavn";
-App::$strings["Last Name"] = "Etternavn";
-App::$strings["Nickname"] = "Kallenavn";
-App::$strings["Full Name"] = "Fullt navn";
-App::$strings["Profile Photo 16px"] = "Profilbilde 16px";
-App::$strings["Profile Photo 32px"] = "Profilbilde 32px";
-App::$strings["Profile Photo 48px"] = "Profilbilde 48px";
-App::$strings["Profile Photo 64px"] = "Profilbilde 64px";
-App::$strings["Profile Photo 80px"] = "Profilbilde 80px";
-App::$strings["Profile Photo 128px"] = "Profilbilde 128px";
-App::$strings["Timezone"] = "Tidssone";
-App::$strings["Homepage URL"] = "Hjemmeside URL";
-App::$strings["Birth Year"] = "Fødselsår";
-App::$strings["Birth Month"] = "Fødselsmåne";
-App::$strings["Birth Day"] = "Fødselsdag";
-App::$strings["Birthdate"] = "Fødselsdato";
-App::$strings["Gender"] = "Kjønn";
-App::$strings["%s element installed"] = "%s element installert";
-App::$strings["%s element installation failed"] = "Installasjon av %s-element mislyktes";
+App::$strings["Permission Denied."] = "Tillatelse avvist.";
+App::$strings["File not found."] = "Filen ble ikke funnet.";
+App::$strings["Edit file permissions"] = "Endre filtillatelser";
+App::$strings["Set/edit permissions"] = "Angi/endre tillatelser";
+App::$strings["Include all files and sub folders"] = "Inkluder alle filer og undermapper";
+App::$strings["Return to file list"] = "GÃ¥ tilbake til filoversikten";
+App::$strings["Copy/paste this code to attach file to a post"] = "Kopier og lim inn denne koden for å legge til filen i et innlegg";
+App::$strings["Copy/paste this URL to link file from a web page"] = "Kopier og lim inn denne URL-en for å lenke til filen fra en webside";
+App::$strings["Share this file"] = "Del denne filen";
+App::$strings["Show URL to this file"] = "Vis URLen til denne filen";
+App::$strings["Notify your contacts about this file"] = "Varsle dine kontakter om denne filen";
+App::$strings["Apps"] = "Apper";
+App::$strings["Item not available."] = "Elementet er ikke tilgjengelig.";
App::$strings["Your service plan only allows %d channels."] = "Din tjenesteplan tillater bare %d kanaler.";
App::$strings["Nothing to import."] = "Ingenting å importere.";
App::$strings["Unable to download data from old server"] = "Ikke i stand til å laste ned data fra gammel tjener";
App::$strings["Imported file is empty."] = "Importert fil er tom.";
App::$strings["Warning: Database versions differ by %1\$d updates."] = "Advarsel: databaseversjoner avviker med %1\$d oppdateringer.";
-App::$strings["Server platform is not compatible. Operation not permitted."] = "Tjenerplattformen er ikke kompatibel. Handlingen er ikke tillatt.";
+App::$strings["Cloned channel not found. Import failed."] = "Klonet kanal ble ikke funnet. Import mislyktes.";
App::$strings["No channel. Import failed."] = "Ingen kanal. Import mislyktes.";
+App::$strings["Import completed."] = "Import ferdig.";
App::$strings["You must be logged in to use this feature."] = "Du må være innlogget for å bruke denne funksjonen.";
App::$strings["Import Channel"] = "Importer kanal";
App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "Bruk dette skjemaet for å importere en eksisterende kanal fra en annen tjener/hub. Du kan hente inn kanalidentiteten fra den gamle tjeneren/huben via nettverket eller ved å bruke en eksportfil.";
@@ -1329,28 +374,6 @@ App::$strings["For either option, please choose whether to make this hub your ne
App::$strings["Make this hub my primary location"] = "Gjør dette nettstedet til min primære plassering";
App::$strings["Import existing posts if possible (experimental - limited by available memory"] = "Importer eksisterende innlegg om mulig (eksperimentelt - begrenset av tilgjengelig minne)";
App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Denne prosessen kan ta flere minutter å fullføre. Vennligst send inn dette skjemaet bare en gang og la siden være åpen inntil den er ferdig.";
-App::$strings["Import completed"] = "Import ferdig";
-App::$strings["Import Items"] = "Importer elementer";
-App::$strings["Use this form to import existing posts and content from an export file."] = "Bruk dette skjemaet for å importere eksisterende innlegg og innhold fra en eksportfil.";
-App::$strings["Total invitation limit exceeded."] = "Grensen for totalt antall invitasjoner er overskredet.";
-App::$strings["%s : Not a valid email address."] = "%s : ikke en gyldig e-postadresse.";
-App::$strings["Please join us on \$Projectname"] = "Bli med oss på \$Projectname";
-App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Invitasjonsgrensen er overskredet. Vennligst kontakt administratoren ved ditt nettsted.";
-App::$strings["%s : Message delivery failed."] = "%s : meldingslevering feilet.";
-App::$strings["%d message sent."] = array(
- 0 => "%d melding sendt.",
- 1 => "%d meldinger sendt.",
-);
-App::$strings["You have no more invitations available"] = "Du har ikke flere invitasjoner tilgjengelig";
-App::$strings["Send invitations"] = "Send invitasjoner";
-App::$strings["Enter email addresses, one per line:"] = "Skriv e-postadresser, en per linje:";
-App::$strings["Your message:"] = "Din melding:";
-App::$strings["Please join my community on \$Projectname."] = "Du er velkommen til å bli med i mitt fellesskap på \$Projectname.";
-App::$strings["You will need to supply this invitation code:"] = "Du må oppgi denne invitasjonskoden:";
-App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Registrer ved enhver \$Projectname-lokasjon (de er alle forbundet med hverandre)";
-App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Skriv inn min \$Projectname-adresse i nettstedets søkefelt.";
-App::$strings["or visit"] = "eller besøke";
-App::$strings["3. Click [Connect]"] = "3. Klikk [Forbindelse]";
App::$strings["Unable to locate original post."] = "Ikke i stand til å finne opprinnelig innlegg.";
App::$strings["Empty post discarded."] = "Tomt innlegg forkastet.";
App::$strings["Executable content type not permitted to this channel."] = "Kjørbar innholdstype er ikke tillat for denne kanalen.";
@@ -1359,16 +382,52 @@ App::$strings["System error. Post not saved."] = "Systemfeil. Innlegg ble ikke l
App::$strings["Unable to obtain post information from database."] = "Ikke i stand til å få tak i informasjon om innlegg fra databasen.";
App::$strings["You have reached your limit of %1$.0f top level posts."] = "Du har nådd din grense på %1$.0f startinnlegg.";
App::$strings["You have reached your limit of %1$.0f webpages."] = "Du har nådd din grense på %1$.0f websider.";
+App::$strings["Layouts"] = "Layout";
App::$strings["Comanche page description language help"] = "Hjelp med Comanche sidebeskrivelsesspråk";
App::$strings["Layout Description"] = "Layout-beskrivelse";
App::$strings["Download PDL file"] = "Last ned PDL-fil";
+App::$strings["\$Projectname"] = "\$Projectname";
+App::$strings["Welcome to %s"] = "Velkommen til %s";
+App::$strings["First Name"] = "Fornavn";
+App::$strings["Last Name"] = "Etternavn";
+App::$strings["Nickname"] = "Kallenavn";
+App::$strings["Full Name"] = "Fullt navn";
+App::$strings["Email"] = "E-post";
+App::$strings["Profile Photo"] = "Profilbilde";
+App::$strings["Profile Photo 16px"] = "Profilbilde 16px";
+App::$strings["Profile Photo 32px"] = "Profilbilde 32px";
+App::$strings["Profile Photo 48px"] = "Profilbilde 48px";
+App::$strings["Profile Photo 64px"] = "Profilbilde 64px";
+App::$strings["Profile Photo 80px"] = "Profilbilde 80px";
+App::$strings["Profile Photo 128px"] = "Profilbilde 128px";
+App::$strings["Timezone"] = "Tidssone";
+App::$strings["Homepage URL"] = "Hjemmeside URL";
+App::$strings["Language"] = "Språk";
+App::$strings["Birth Year"] = "Fødselsår";
+App::$strings["Birth Month"] = "Fødselsmåne";
+App::$strings["Birth Day"] = "Fødselsdag";
+App::$strings["Birthdate"] = "Fødselsdato";
+App::$strings["Gender"] = "Kjønn";
+App::$strings["Male"] = "Mannlig";
+App::$strings["Female"] = "Kvinnelig";
+App::$strings["webpage"] = "nettside";
+App::$strings["block"] = "byggekloss";
+App::$strings["layout"] = "layout";
+App::$strings["menu"] = "meny";
+App::$strings["%s element installed"] = "%s element installert";
+App::$strings["%s element installation failed"] = "Installasjon av %s-element mislyktes";
App::$strings["Like/Dislike"] = "Liker/Liker ikke";
App::$strings["This action is restricted to members."] = "Denne handlingen er begrenset til medlemmer.";
App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "Vennligst <a href=\"rmagic\">logg inn med din \$Projectname ID</a> eller <a href=\"register\">registrer deg som et nytt \$Projectname-medlem</a> for å fortsette";
App::$strings["Invalid request."] = "Ugyldig forespørsel.";
+App::$strings["channel"] = "kanal";
App::$strings["thing"] = "ting";
App::$strings["Channel unavailable."] = "Kanalen er utilgjengelig.";
App::$strings["Previous action reversed."] = "Forrige handling er omgjort.";
+App::$strings["photo"] = "foto";
+App::$strings["status"] = "status";
+App::$strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s liker %2\$s sin %3\$s";
+App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s liker ikke %2\$s sin %3\$s";
App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%1\$s er enig med %2\$s sin %3\$s";
App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%1\$s er ikke enig med %2\$s sin %3\$s";
App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%1\$s avstår fra å mene noe om %2\$s sin %3\$s";
@@ -1377,6 +436,28 @@ App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s deltar ikke på %
App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s deltar kanskje på %2\$ss %3\$s";
App::$strings["Action completed."] = "Handling ferdig.";
App::$strings["Thank you."] = "Tusen takk.";
+App::$strings["Import completed"] = "Import ferdig";
+App::$strings["Import Items"] = "Importer elementer";
+App::$strings["Use this form to import existing posts and content from an export file."] = "Bruk dette skjemaet for å importere eksisterende innlegg og innhold fra en eksportfil.";
+App::$strings["Total invitation limit exceeded."] = "Grensen for totalt antall invitasjoner er overskredet.";
+App::$strings["%s : Not a valid email address."] = "%s : ikke en gyldig e-postadresse.";
+App::$strings["Please join us on \$Projectname"] = "Bli med oss på \$Projectname";
+App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Invitasjonsgrensen er overskredet. Vennligst kontakt administratoren ved ditt nettsted.";
+App::$strings["%s : Message delivery failed."] = "%s : meldingslevering feilet.";
+App::$strings["%d message sent."] = array(
+ 0 => "%d melding sendt.",
+ 1 => "%d meldinger sendt.",
+);
+App::$strings["You have no more invitations available"] = "Du har ikke flere invitasjoner tilgjengelig";
+App::$strings["Send invitations"] = "Send invitasjoner";
+App::$strings["Enter email addresses, one per line:"] = "Skriv e-postadresser, en per linje:";
+App::$strings["Your message:"] = "Din melding:";
+App::$strings["Please join my community on \$Projectname."] = "Du er velkommen til å bli med i mitt fellesskap på \$Projectname.";
+App::$strings["You will need to supply this invitation code:"] = "Du må oppgi denne invitasjonskoden:";
+App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Registrer ved enhver \$Projectname-lokasjon (de er alle forbundet med hverandre)";
+App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Skriv inn min \$Projectname-adresse i nettstedets søkefelt.";
+App::$strings["or visit"] = "eller besøke";
+App::$strings["3. Click [Connect]"] = "3. Klikk [Forbindelse]";
App::$strings["Remote privacy information not available."] = "Ekstern personverninformasjon er ikke tilgjengelig.";
App::$strings["Visible to:"] = "Synlig for:";
App::$strings["Location not found."] = "Plassering er ikke funnet.";
@@ -1385,16 +466,13 @@ App::$strings["Please select another location to become primary before removing
App::$strings["Syncing locations"] = "Synkroniserer plasseringer";
App::$strings["No locations found."] = "Ingen plasseringer ble funnet.";
App::$strings["Manage Channel Locations"] = "HÃ¥ndter kanalplasseringer";
-App::$strings["Location (address)"] = "Plassering (adresse)";
-App::$strings["Primary Location"] = "Hovedplassering";
-App::$strings["Drop location"] = "Slett plassering";
-App::$strings["Sync now"] = "Synkroniser nå";
+App::$strings["Address"] = "Adresse";
+App::$strings["Primary"] = "";
+App::$strings["Drop"] = "Slett";
+App::$strings["Sync Now"] = "";
App::$strings["Please wait several minutes between consecutive operations."] = "Vennligst vent flere minutter mellom hver etterfølgende operasjon.";
App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Når mulig, fjern en plassering ved å logge inn på det nettstedet eller den hub-en og fjern din kanal.";
App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Bruk dette skjemaet for å fjerne plasseringen hvis huben ikke er i drift lenger.";
-App::$strings["sent you a private message"] = "sendte deg en privat melding";
-App::$strings["added your channel"] = "la til din kanal";
-App::$strings["posted an event"] = "la ut en hendelse";
App::$strings["Hub not found."] = "Hubben ble ikke funnet.";
App::$strings["Unable to lookup recipient."] = "Ikke i stand til å slå opp mottaker.";
App::$strings["Unable to communicate with requested channel."] = "Ikke i stand til å kommunisere med forespurt kanal.";
@@ -1403,11 +481,14 @@ App::$strings["Selected channel has private message restrictions. Send failed."]
App::$strings["Messages"] = "Meldinger";
App::$strings["Message recalled."] = "Innlegg tilbakekalt.";
App::$strings["Conversation removed."] = "Samtale fjernet.";
+App::$strings["Expires YYYY-MM-DD HH:MM"] = "Utløper YYYY-MM-DD HH:MM";
App::$strings["Requested channel is not in this network"] = "Forespurt kanal er ikke tilgjengelig i dette nettverket.";
App::$strings["Send Private Message"] = "Send privat melding";
App::$strings["To:"] = "Til:";
App::$strings["Subject:"] = "Emne:";
+App::$strings["Attach file"] = "Legg ved fil";
App::$strings["Send"] = "Send";
+App::$strings["Set expiration date"] = "Angi utløpsdato";
App::$strings["Delete message"] = "Slett melding";
App::$strings["Delivery report"] = "Leveringsrapport";
App::$strings["Recall message"] = "Tilbakekall innlegg";
@@ -1418,17 +499,30 @@ App::$strings["Send Reply"] = "Send svar";
App::$strings["Your message for %s (%s):"] = "Din melding til %s (%s):";
App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Du har laget %1$.0f av %2$.0f tillatte kanaler.";
App::$strings["Create a new channel"] = "Lag en ny kanal";
+App::$strings["Channel Manager"] = "Kanalstyring";
App::$strings["Current Channel"] = "Gjeldende kanal";
App::$strings["Switch to one of your channels by selecting it."] = "Bytt til en av dine kanaler ved å velge den.";
App::$strings["Default Channel"] = "Standardkanal";
App::$strings["Make Default"] = "Gjør til standard";
App::$strings["%d new messages"] = "%d nye meldinger";
App::$strings["%d new introductions"] = "%d nye introduksjoner";
-App::$strings["Delegated Channels"] = "Delegerte kanaler";
-App::$strings["Profile Match"] = "Profiltreff";
-App::$strings["No keywords to match. Please add keywords to your default profile."] = "Ingen nøkkelord å sammenlikne. Vennligst legg til nøkkelord til din standardprofil.";
-App::$strings["is interested in:"] = "er interessert i:";
-App::$strings["No matches"] = "Ingen treff";
+App::$strings["Delegated Channel"] = "";
+App::$strings["No valid account found."] = "Ingen gyldig konto funnet.";
+App::$strings["Password reset request issued. Check your email."] = "Forespørsel om å tilbakestille passord er mottatt. Sjekk e-posten din.";
+App::$strings["Site Member (%s)"] = "Nettstedsmedlem (%s)";
+App::$strings["Password reset requested at %s"] = "Forespurt om å tilbakestille passord hos %s";
+App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Forespørsel kunne ikke bekreftes. (Du kan ha sendt den inn tidligere.) Tilbakestilling av passord mislyktes.";
+App::$strings["Password Reset"] = "Tilbakestill passord";
+App::$strings["Your password has been reset as requested."] = "Ditt passord har blitt tilbakestilt som forespurt.";
+App::$strings["Your new password is"] = "Ditt nye passord er";
+App::$strings["Save or copy your new password - and then"] = "Lagre eller kopier ditt nye passord, og deretter kan du";
+App::$strings["click here to login"] = "klikke her for å logge inn";
+App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Ditt passord kan endres på siden <em>Innstillinger</em> etter vellykket innlogging.";
+App::$strings["Your password has changed at %s"] = "Ditt passord er endret hos %s";
+App::$strings["Forgot your Password?"] = "Glemt passord ditt?";
+App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Skriv e-postadressen din og send inn for å tilbakestille passordet ditt. Sjekk deretter din e-post for videre instruksjoner.";
+App::$strings["Email Address"] = "E-postadresse";
+App::$strings["Reset"] = "Tilbakestill";
App::$strings["Unable to update menu."] = "Ikke i stand til å oppdatere meny.";
App::$strings["Unable to create menu."] = "Ikke i stand til å lage meny.";
App::$strings["Menu Name"] = "Menynavn";
@@ -1438,7 +532,7 @@ App::$strings["Visible on webpage - leave empty for no title"] = "Synlig på web
App::$strings["Allow Bookmarks"] = "Tillat bokmerker";
App::$strings["Menu may be used to store saved bookmarks"] = "Menyen kan brukes til å lagre lagrede bokmerker";
App::$strings["Submit and proceed"] = "Send inn og fortsett";
-App::$strings["Drop"] = "Slett";
+App::$strings["Menus"] = "Menyer";
App::$strings["Bookmarks allowed"] = "Bokmerker tillatt";
App::$strings["Delete this menu"] = "Slett denne menyen";
App::$strings["Edit menu contents"] = "Endre menyinnholdet";
@@ -1453,6 +547,22 @@ App::$strings["Menu title"] = "Menytittel";
App::$strings["Menu title as seen by others"] = "Menytittelen andre ser";
App::$strings["Allow bookmarks"] = "Tillat bokmerker";
App::$strings["Not found."] = "Ikke funnet.";
+App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s er %2\$s";
+App::$strings["Mood"] = "Stemning";
+App::$strings["Set your current mood and tell your friends"] = "Angi ditt nåværende humør og fortell dine venner";
+App::$strings["Profile Match"] = "Profiltreff";
+App::$strings["No keywords to match. Please add keywords to your default profile."] = "Ingen nøkkelord å sammenlikne. Vennligst legg til nøkkelord til din standardprofil.";
+App::$strings["is interested in:"] = "er interessert i:";
+App::$strings["No matches"] = "Ingen treff";
+App::$strings["No such group"] = "Gruppen finnes ikke";
+App::$strings["No such channel"] = "Ingen slik kanal";
+App::$strings["forum"] = "forum";
+App::$strings["Search Results For:"] = "Søkeresultat for:";
+App::$strings["Privacy group is empty"] = "Personverngruppen er tom";
+App::$strings["Privacy group: "] = "Personverngruppe:";
+App::$strings["Invalid connection."] = "Ugyldig forbindelse.";
+App::$strings["No more system notifications."] = "Ingen flere systemvarsler.";
+App::$strings["System Notifications"] = "Systemvarsler";
App::$strings["Unable to create element."] = "Klarer ikke å lage element.";
App::$strings["Unable to update menu element."] = "Ikke i stand til å oppdatere menyelement.";
App::$strings["Unable to add menu element."] = "Ikke i stand til å legge til menyelement.";
@@ -1482,14 +592,6 @@ App::$strings["Menu item deleted."] = "Menyelement slettet.";
App::$strings["Menu item could not be deleted."] = "Menyelement kunne ikke bli slettet.";
App::$strings["Edit Menu Element"] = "Endre menyelement";
App::$strings["Link text"] = "Lenketekst";
-App::$strings["Set your current mood and tell your friends"] = "Angi ditt nåværende humør og fortell dine venner";
-App::$strings["No such group"] = "Gruppen finnes ikke";
-App::$strings["No such channel"] = "Ingen slik kanal";
-App::$strings["forum"] = "forum";
-App::$strings["Search Results For:"] = "Søkeresultat for:";
-App::$strings["Privacy group is empty"] = "Personverngruppen er tom";
-App::$strings["Privacy group: "] = "Personverngruppe:";
-App::$strings["Invalid connection."] = "Ugyldig forbindelse.";
App::$strings["Name or caption"] = "Navn eller overskrift";
App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""] = "Eksempel: \"Ola Nordmann\", \"Lisa og hestene hennes\", \"Fotball\", \"Sykkelgruppa\"";
App::$strings["Choose a short nickname"] = "Velg et kort kallenavn";
@@ -1502,23 +604,12 @@ App::$strings["A channel is your identity on this network. It can represent a pe
App::$strings["or <a href=\"import\">import an existing channel</a> from another location."] = "eller <a href=\"import\">importer en eksisterende kanal</a> fra et annet sted.";
App::$strings["Invalid request identifier."] = "Ugyldig forespørselsidentifikator.";
App::$strings["Discard"] = "Forkast";
-App::$strings["No more system notifications."] = "Ingen flere systemvarsler.";
-App::$strings["System Notifications"] = "Systemvarsler";
-App::$strings["Unable to find your hub."] = "Ikke i stand til å finne hubben din.";
-App::$strings["Post successful."] = "Innlegg vellykket.";
-App::$strings["OpenID protocol error. No ID returned."] = "OpenID protokollfeil. Ingen ID ble returnert.";
-App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
-App::$strings["This setting requires special processing and editing has been blocked."] = "Denne innstillingen krever spesiell behandling og redigering har blitt blokkert.";
-App::$strings["Configuration Editor"] = "Konfigurasjonsbehandler";
-App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Advarsel: kanalen din kan slutte å virke ved endring av enkelte innstillinger. Vennligst forlat denne siden med mindre du er komfortabel med dette og vet hvordan du bruker denne funksjonen riktig.";
-App::$strings["Layout updated."] = "Layout er oppdatert.";
-App::$strings["Edit System Page Description"] = "Endre beskrivelsen av systemsiden";
-App::$strings["Layout not found."] = "Layouten ble ikke funnet.";
-App::$strings["Module Name:"] = "Modulnavn:";
-App::$strings["Layout Help"] = "Layout-hjelp";
+App::$strings["Mark all system notifications seen"] = "Merk alle systemvarsler som sett";
App::$strings["Page owner information could not be retrieved."] = "Informasjon om sideeier kunne ikke hentes.";
+App::$strings["Profile Photos"] = "Profilbilder";
App::$strings["Album not found."] = "Albumet ble ikke funnet.";
App::$strings["Delete Album"] = "Slett album";
+App::$strings["Multiple storage folders exist with this album name, but within different directories. Please remove the desired folder or folders using the Files manager"] = "";
App::$strings["Delete Photo"] = "Slett bilde";
App::$strings["No photos selected"] = "Ingen bilder valgt";
App::$strings["Access to this item is restricted."] = "Tilgang til dette elementet er begrenset.";
@@ -1534,9 +625,12 @@ App::$strings["Album name could not be decoded"] = "Albumnavnet kunne ikke dekod
App::$strings["Contact Photos"] = "Kontaktbilder";
App::$strings["Show Newest First"] = "Vis nyeste først";
App::$strings["Show Oldest First"] = "Vis eldste først";
+App::$strings["View Photo"] = "Vis foto";
+App::$strings["Edit Album"] = "Endre album";
App::$strings["Permission denied. Access to this item may be restricted."] = "Tillatelse avvist. Tilgang til dette elementet kan være begrenset.";
App::$strings["Photo not available"] = "Bilde er utilgjengelig";
App::$strings["Use as profile photo"] = "Bruk som profilbilde";
+App::$strings["Use as cover photo"] = "";
App::$strings["Private Photo"] = "Privat bilde";
App::$strings["View Full Size"] = "Vis i full størrelse";
App::$strings["Remove"] = "Fjern";
@@ -1549,10 +643,152 @@ App::$strings["Caption"] = "Overskrift";
App::$strings["Add a Tag"] = "Legg til merkelapp";
App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Eksempel: @bob, @Barbara_Jensen, @jim@example.com";
App::$strings["Flag as adult in album view"] = "Flag som voksent i albumvisning";
+App::$strings["I like this (toggle)"] = "Jeg liker dette (skru av og på)";
+App::$strings["I don't like this (toggle)"] = "Jeg liker ikke dette (skru av og på)";
+App::$strings["Please wait"] = "Vennligst vent";
+App::$strings["This is you"] = "Dette er deg";
+App::$strings["Comment"] = "Kommentar";
+App::$strings["__ctx:title__ Likes"] = "Liker";
+App::$strings["__ctx:title__ Dislikes"] = "Liker ikke";
+App::$strings["__ctx:title__ Agree"] = "Enig";
+App::$strings["__ctx:title__ Disagree"] = "Uenig";
+App::$strings["__ctx:title__ Abstain"] = "Avstår";
+App::$strings["__ctx:title__ Attending"] = "Deltar";
+App::$strings["__ctx:title__ Not attending"] = "Deltar ikke";
+App::$strings["__ctx:title__ Might attend"] = "Deltar kanskje";
+App::$strings["View all"] = "Vis alle";
+App::$strings["__ctx:noun__ Like"] = array(
+ 0 => "Liker",
+ 1 => "Liker",
+);
+App::$strings["__ctx:noun__ Dislike"] = array(
+ 0 => "Liker ikke",
+ 1 => "Liker ikke",
+);
+App::$strings["Photo Tools"] = "";
App::$strings["In This Photo:"] = "I dette bildet:";
App::$strings["Map"] = "Kart";
+App::$strings["__ctx:noun__ Likes"] = "Liker";
+App::$strings["__ctx:noun__ Dislikes"] = "Liker ikke";
+App::$strings["Close"] = "Lukk";
App::$strings["View Album"] = "Vis album";
App::$strings["Recent Photos"] = "Nye bilder";
+App::$strings["sent you a private message"] = "sendte deg en privat melding";
+App::$strings["added your channel"] = "la til din kanal";
+App::$strings["g A l F d"] = "g A l F d";
+App::$strings["[today]"] = "[idag]";
+App::$strings["posted an event"] = "la ut en hendelse";
+App::$strings["Unable to find your hub."] = "Ikke i stand til å finne hubben din.";
+App::$strings["Post successful."] = "Innlegg vellykket.";
+App::$strings["OpenID protocol error. No ID returned."] = "OpenID protokollfeil. Ingen ID ble returnert.";
+App::$strings["Login failed."] = "Innlogging mislyktes.";
+App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
+App::$strings["This setting requires special processing and editing has been blocked."] = "Denne innstillingen krever spesiell behandling og redigering har blitt blokkert.";
+App::$strings["Configuration Editor"] = "Konfigurasjonsbehandler";
+App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Advarsel: kanalen din kan slutte å virke ved endring av enkelte innstillinger. Vennligst forlat denne siden med mindre du er komfortabel med dette og vet hvordan du bruker denne funksjonen riktig.";
+App::$strings["Layout updated."] = "Layout er oppdatert.";
+App::$strings["Edit System Page Description"] = "Endre beskrivelsen av systemsiden";
+App::$strings["Layout not found."] = "Layouten ble ikke funnet.";
+App::$strings["Module Name:"] = "Modulnavn:";
+App::$strings["Layout Help"] = "Layout-hjelp";
+App::$strings["Poke"] = "Prikk";
+App::$strings["Poke somebody"] = "Dult noen";
+App::$strings["Poke/Prod"] = "Prikke/oppildne";
+App::$strings["Poke, prod or do other things to somebody"] = "Dult, prikk eller gjør andre ting med noen";
+App::$strings["Recipient"] = "Mottaker";
+App::$strings["Choose what you wish to do to recipient"] = "Velg hva du ønsker å gjøre med mottakeren";
+App::$strings["Make this post private"] = "Gjør dette innlegget privat";
+App::$strings["Fetching URL returns error: %1\$s"] = "Henting av URL gir følgende feil: %1\$s";
+App::$strings["Profile not found."] = "Profilen ble ikke funnet.";
+App::$strings["Profile deleted."] = "Profilen er slettet.";
+App::$strings["Profile-"] = "Profil-";
+App::$strings["New profile created."] = "Ny profil opprettet.";
+App::$strings["Profile unavailable to clone."] = "Profilen er utilgjengelig for klonen.";
+App::$strings["Profile unavailable to export."] = "Profilen er utilgjengelig for eksport.";
+App::$strings["Profile Name is required."] = "Profilnavn er påkrevd.";
+App::$strings["Marital Status"] = "Sivilstand";
+App::$strings["Romantic Partner"] = "Romantisk partner";
+App::$strings["Likes"] = "Liker";
+App::$strings["Dislikes"] = "Liker ikke";
+App::$strings["Work/Employment"] = "Arbeid/sysselsetting";
+App::$strings["Religion"] = "Religion";
+App::$strings["Political Views"] = "Politiske synspunkter";
+App::$strings["Sexual Preference"] = "Seksuelle preferanser";
+App::$strings["Homepage"] = "Hjemmeside";
+App::$strings["Interests"] = "Interesser";
+App::$strings["Profile updated."] = "Profilen er oppdatert.";
+App::$strings["Hide your connections list from viewers of this profile"] = "";
+App::$strings["Edit Profile Details"] = "Endre profildetaljer";
+App::$strings["View this profile"] = "Vis denne profilen";
+App::$strings["Edit visibility"] = "Endre synlighet";
+App::$strings["Profile Tools"] = "";
+App::$strings["Change cover photo"] = "";
+App::$strings["Change profile photo"] = "Endre profilbilde";
+App::$strings["Create a new profile using these settings"] = "Lag en ny profil ved å bruke disse innstillingene";
+App::$strings["Clone this profile"] = "Klon denne profilen";
+App::$strings["Delete this profile"] = "Slett denne profilen";
+App::$strings["Add profile things"] = "Legg til profilting";
+App::$strings["Personal"] = "Personlig";
+App::$strings["Relation"] = "";
+App::$strings["Miscellaneous"] = "Forskjellig";
+App::$strings["Import profile from file"] = "Importer profil fra fil";
+App::$strings["Export profile to file"] = "Eksporter profil til fil";
+App::$strings["Your gender"] = "";
+App::$strings["Marital status"] = "";
+App::$strings["Sexual preference"] = "";
+App::$strings["Profile name"] = "";
+App::$strings["This is your default profile."] = "Dette er din standardprofil.";
+App::$strings["Your full name"] = "";
+App::$strings["Title/Description"] = "";
+App::$strings["Street address"] = "";
+App::$strings["Locality/City"] = "";
+App::$strings["Region/State"] = "";
+App::$strings["Postal/Zip code"] = "";
+App::$strings["Country"] = "";
+App::$strings["Who (if applicable)"] = "";
+App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Eksempler: kari123, Kari Villiamsen, kari@example.com";
+App::$strings["Since (date)"] = "";
+App::$strings["Tell us about yourself"] = "";
+App::$strings["Hometown"] = "";
+App::$strings["Political views"] = "";
+App::$strings["Religious views"] = "";
+App::$strings["Keywords used in directory listings"] = "";
+App::$strings["Example: fishing photography software"] = "Eksempel: fisking fotografering programvare";
+App::$strings["Musical interests"] = "Musikkinteresser";
+App::$strings["Books, literature"] = "Bøker, litteratur";
+App::$strings["Television"] = "TV/fjernsyn";
+App::$strings["Film/Dance/Culture/Entertainment"] = "";
+App::$strings["Hobbies/Interests"] = "Hobbier/Interesser";
+App::$strings["Love/Romance"] = "";
+App::$strings["School/Education"] = "";
+App::$strings["Contact information and social networks"] = "";
+App::$strings["My other channels"] = "Mine andre kanaler";
+App::$strings["Profile Image"] = "Profilbilde";
+App::$strings["Edit Profiles"] = "Endre profiler";
+App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Hold nede Shift-knappen og last siden på nytt eller tøm nettleserens mellomlager hvis det nye bildet ikke vises umiddelbart.";
+App::$strings["Upload Profile Photo"] = "Last opp profilbilde:";
+App::$strings["Invalid profile identifier."] = "Ugyldig profil-identifikator.";
+App::$strings["Profile Visibility Editor"] = "Endre profilsynlighet";
+App::$strings["Profile"] = "Profil";
+App::$strings["Click on a contact to add or remove."] = "Klikk på en kontakt for å legge til eller fjerne.";
+App::$strings["Visible To"] = "Synlig for";
+App::$strings["Public Hubs"] = "Offentlige huber";
+App::$strings["The listed hubs allow public registration for the \$Projectname network. All hubs in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some hubs may require subscription or provide tiered service plans. The hub itself <strong>may</strong> provide additional details."] = "Nettstedene på listen tillater offentlig registrering i \$Projectname-nettverket. Alle nettsteder i nettverket er forbundet så medlemskap på enhver av dem formidler medlemskap i nettverket som helhet. Noen nettsteder kan kreve abonnement eller tilby lagdelte tjenesteavtaler. Nettstedene selv <strong>kan</strong> gi tilleggsopplysninger.";
+App::$strings["Hub URL"] = "Nettstedets URL";
+App::$strings["Access Type"] = "Tilgangstype";
+App::$strings["Registration Policy"] = "Retningslinjer for registrering";
+App::$strings["Stats"] = "";
+App::$strings["Software"] = "";
+App::$strings["Ratings"] = "Vurderinger";
+App::$strings["Rate"] = "Vurder";
+App::$strings["Website:"] = "Nettsted:";
+App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Fjerntliggende kanal [%s] (foreløpig ikke kjent på dette nettstedet)";
+App::$strings["Rating (this information is public)"] = "Vurdering (denne informasjonen er offentlig)";
+App::$strings["Optionally explain your rating (this information is public)"] = "Velg om du vil forklare din vurdering (denne informasjonen er offentlig)";
+App::$strings["No ratings"] = "Ingen vurderinger";
+App::$strings["Rating: "] = "Vurdering:";
+App::$strings["Website: "] = "Nettsted:";
+App::$strings["Description: "] = "Beskrivelse:";
App::$strings["Theme settings updated."] = "Temainnstillinger er oppdatert.";
App::$strings["# Accounts"] = "# Kontoer";
App::$strings["# blocked accounts"] = "# blokkerte kontoer";
@@ -1562,6 +798,7 @@ App::$strings["# Channels"] = "# Kanaler";
App::$strings["# primary"] = "# hoved";
App::$strings["# clones"] = "# kloner";
App::$strings["Message queues"] = "Meldingskøer";
+App::$strings["Your software should be updated"] = "";
App::$strings["Administration"] = "Administrasjon";
App::$strings["Summary"] = "Sammendrag";
App::$strings["Registered accounts"] = "Registrerte kontoer";
@@ -1569,7 +806,10 @@ App::$strings["Pending registrations"] = "Ventende registreringer";
App::$strings["Registered channels"] = "Registrerte kanaler";
App::$strings["Active plugins"] = "Aktive tilleggsfunksjoner";
App::$strings["Version"] = "Versjon";
+App::$strings["Repository version (master)"] = "";
+App::$strings["Repository version (dev)"] = "";
App::$strings["Site settings updated."] = "Nettstedsinnstillinger er oppdatert.";
+App::$strings["Default"] = "Standard";
App::$strings["mobile"] = "mobil";
App::$strings["experimental"] = "eksperimentell";
App::$strings["unsupported"] = "ikke støttet";
@@ -1578,9 +818,11 @@ App::$strings["My site is not a public server"] = "Mitt nettsted er ikke en offe
App::$strings["My site has paid access only"] = "Mitt nettsted gir kun tilgang mot betaling";
App::$strings["My site has free access only"] = "Mitt nettsted har kun gratis tilgang";
App::$strings["My site offers free accounts with optional paid upgrades"] = "Mitt nettsted tilbyr gratis konto med valgfri oppgradering til betalt tjeneste";
+App::$strings["Site"] = "Nettsted";
App::$strings["Registration"] = "Registrering";
App::$strings["File upload"] = "Last opp fil";
App::$strings["Policies"] = "Retningslinjer";
+App::$strings["Advanced"] = "Avansert";
App::$strings["Site name"] = "Nettstedets navn";
App::$strings["Banner/Logo"] = "Banner/Logo";
App::$strings["Administrator Information"] = "Administratorinformasjon";
@@ -1618,8 +860,10 @@ App::$strings["Force publish"] = "Tving publisering";
App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Kryss av for å tvinge alle profiler på dette nettstedet til å bli oppført i nettstedet sin katalog.";
App::$strings["Import Public Streams"] = "Importer offentlige innholdsstrømmer";
App::$strings["Import and allow access to public content pulled from other sites. Warning: this content is unmoderated."] = "Importer og gi tilgang til offentlig innhold trukket inn fra andre nettsteder. Advarsel: dette innholdet er ikke moderert.";
-App::$strings["login on Homepage"] = "Logg inn på hjemmesiden";
+App::$strings["Login on Homepage"] = "";
App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Presenter en innloggingsboks til besøkende på hjemmesiden hvis ikke noe annet innhold har blitt konfigurert.";
+App::$strings["Enable context help"] = "";
+App::$strings["Display contextual help for the current page when the help button is pressed."] = "";
App::$strings["Directory Server URL"] = "Katalogtjener URL";
App::$strings["Default directory server"] = "Standard katalogtjener";
App::$strings["Proxy user"] = "Brukernavn mellomtjener";
@@ -1645,19 +889,25 @@ App::$strings["ID"] = "ID";
App::$strings["for channel"] = "for kanalen";
App::$strings["on server"] = "på tjener";
App::$strings["Server"] = "Tjener";
+App::$strings["By default, unfiltered HTML is allowed in embedded media. This is inherently insecure."] = "";
+App::$strings["The recommended setting is to only allow unfiltered HTML from the following sites:"] = "";
+App::$strings["https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"] = "";
+App::$strings["All other embedded content will be filtered, <strong>unless</strong> embedded content from that site is explicitly blocked."] = "";
+App::$strings["Security"] = "Sikkerhet";
App::$strings["Block public"] = "Blokker offentlig tilgang";
App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "Kryss av for å blokkere tilgang til alle personlige sider som ellers ville vært offentlig tilgjengelige på dette nettstedet med mindre du er logget inn.";
+App::$strings["Set \"Transport Security\" HTTP header"] = "";
+App::$strings["Set \"Content Security Policy\" HTTP header"] = "";
App::$strings["Allow communications only from these sites"] = "Tillat kommunikasjon med bare disse nettstedene";
App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Et nettsted per linje. La det stå tomt for å tillate kommunikasjon med ethvert nettsted som standard";
App::$strings["Block communications from these sites"] = "Blokker kommunikasjon fra disse nettstedene";
App::$strings["Allow communications only from these channels"] = "Tillat kommunikasjon med bare disse kanalene";
App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "En kanal (hash) per linje. La det stå tomt for å tillate enhver kanal som standard";
App::$strings["Block communications from these channels"] = "Blokker kommunikasjon fra disse kanalene";
-App::$strings["Allow embedded HTML content only from these domains"] = "Tillat innebygget HTML-innhold fra bare disse domenene";
-App::$strings["One site per line. Leave empty to allow from any site by default"] = "Et nettsted per linje. La stå tomt for å tillate ethvert nettsted som standard";
+App::$strings["Only allow embeds from secure (SSL) websites and links."] = "";
+App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "";
+App::$strings["One site per line. By default embedded content is filtered."] = "";
App::$strings["Block embedded HTML from these domains"] = "Blokker innbygget HTML fra disse domenene";
-App::$strings["Cooperative embed security"] = "Kooperativ innebyggingssikkerhet";
-App::$strings["Enable to share embed security with other compatible sites/hubs"] = "Skru på deling av innebyggingssikkerhet med andre kompatible nettsteder/hubber";
App::$strings["Update has been marked successful"] = "Oppdateringen har blitt merket som en suksess";
App::$strings["Executing %s failed. Check system logs."] = "Utføring av %s feilet. Sjekk systemlogger.";
App::$strings["Update %s was successfully applied."] = "Oppdatering %s ble gjennomført med suksess.";
@@ -1686,12 +936,13 @@ App::$strings["Account not found"] = "Kontoen ble ikke funnet";
App::$strings["Account '%s' deleted"] = "Kontoen '%s' slettet";
App::$strings["Account '%s' blocked"] = "Kontoen '%s' blokkert";
App::$strings["Account '%s' unblocked"] = "Kontoen '%s' er ikke blokkert lenger";
-App::$strings["Users"] = "Brukere";
+App::$strings["Accounts"] = "Kontoer";
App::$strings["select all"] = "velg alle";
-App::$strings["User registrations waiting for confirm"] = "Brukerregistreringer som venter på bekreftelse";
+App::$strings["Registrations waiting for confirm"] = "";
App::$strings["Request date"] = "Dato for forespørsel";
App::$strings["No registrations."] = "Ingen registreringer.";
App::$strings["Deny"] = "Avslå";
+App::$strings["All Channels"] = "Alle kanaler";
App::$strings["Register date"] = "Registreringsdato";
App::$strings["Last login"] = "Siste innlogging";
App::$strings["Expires"] = "Utløper";
@@ -1716,19 +967,22 @@ App::$strings["Channel '%s' censored"] = "Kanalen '%s' er sensurert";
App::$strings["Channel '%s' uncensored"] = "Kanalen '%s' er ikke sensurert lenger";
App::$strings["Channel '%s' code allowed"] = "Kanal '%s' kode tillatt";
App::$strings["Channel '%s' code disallowed"] = "Kanal '%s' kode ikke tillatt";
+App::$strings["Channels"] = "Kanaler";
App::$strings["Censor"] = "Sensurer";
App::$strings["Uncensor"] = "Ikke sensurer lenger";
App::$strings["Allow Code"] = "Tillat kode";
App::$strings["Disallow Code"] = "Ikke tillat kode";
+App::$strings["Channel"] = "Kanal";
App::$strings["UID"] = "UID";
-App::$strings["Address"] = "Adresse";
App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Valgte kanaler vil bli slettet!\\n\\nAlt innhold som er lagt inn i disse kanalene på dette nettstedet vil bli slettet for alltid!\\n\\nEr du sikker på at du vil slette disse kanalene med alt innhold?";
App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Kanalen {0} vil bli slettet!\\n\\nAlt innhold som er lagt inn i denne kanalen på dettet nettstedet vil bli slettet for alltid!\\n\\nEr du sikker på at du vil slette denne kanalen med alt innhold?";
App::$strings["Plugin %s disabled."] = "Tilleggsfunksjonen %s er avskrudd.";
App::$strings["Plugin %s enabled."] = "Tilleggsfunksjonen %s er påskrudd.";
App::$strings["Disable"] = "Skru av";
App::$strings["Enable"] = "Skru på";
+App::$strings["Plugins"] = "Tilleggsfunksjoner";
App::$strings["Toggle"] = "Skru av og på";
+App::$strings["Settings"] = "Innstillinger";
App::$strings["Author: "] = "Forfatter:";
App::$strings["Maintainer: "] = "Vedlikeholder:";
App::$strings["Minimum project version: "] = "Minimum prosjektversjon:";
@@ -1736,15 +990,29 @@ App::$strings["Maximum project version: "] = "Maksimum prosjektversjon:";
App::$strings["Minimum PHP version: "] = "Minimum PHP-versjon:";
App::$strings["Requires: "] = "Krever:";
App::$strings["Disabled - version incompatibility"] = "Skrudd av - versjonsinkompatibilitet";
+App::$strings["Enter the public git repository URL of the plugin repo."] = "";
+App::$strings["Plugin repo git URL"] = "";
+App::$strings["Custom repo name"] = "";
+App::$strings["(optional)"] = "";
+App::$strings["Download Plugin Repo"] = "";
+App::$strings["Install new repo"] = "";
+App::$strings["Install"] = "Installer";
+App::$strings["Manage Repos"] = "";
+App::$strings["Installed Plugin Repositories"] = "";
+App::$strings["Install a New Plugin Repository"] = "";
+App::$strings["Update"] = "Oppdater";
+App::$strings["Switch branch"] = "";
App::$strings["No themes found."] = "Ingen temaer er funnet.";
App::$strings["Screenshot"] = "Skjermbilde";
+App::$strings["Themes"] = "Temaer";
App::$strings["[Experimental]"] = "[Eksperimentelt]";
App::$strings["[Unsupported]"] = "[Ingen støtte]";
App::$strings["Log settings updated."] = "Logginnstillinger er oppdatert.";
+App::$strings["Logs"] = "Logger";
App::$strings["Clear"] = "Tøm";
App::$strings["Debugging"] = "Feilsøking";
App::$strings["Log file"] = "Loggfil";
-App::$strings["Must be writable by web server. Relative to your Red top-level directory."] = "Må kunne skrives til av webtjenesten. Relativ til din Red sin toppnivåkatalog.";
+App::$strings["Must be writable by web server. Relative to your top-level webserver directory."] = "";
App::$strings["Log level"] = "Loggnivå";
App::$strings["New Profile Field"] = "Nytt profilfelt";
App::$strings["Field nickname"] = "Feltets kallenavn";
@@ -1756,107 +1024,26 @@ App::$strings["Help text"] = "Hjelpetekst";
App::$strings["Additional info (optional)"] = "Tilleggsinformasjon (valgfritt)";
App::$strings["Field definition not found"] = "Feltdefinisjonen ble ikke funnet";
App::$strings["Edit Profile Field"] = "Endre profilfelt";
-App::$strings["Poke somebody"] = "Dult noen";
-App::$strings["Poke/Prod"] = "Prikke/oppildne";
-App::$strings["Poke, prod or do other things to somebody"] = "Dult, prikk eller gjør andre ting med noen";
-App::$strings["Recipient"] = "Mottaker";
-App::$strings["Choose what you wish to do to recipient"] = "Velg hva du ønsker å gjøre med mottakeren";
-App::$strings["Make this post private"] = "Gjør dette innlegget privat";
-App::$strings["Fetching URL returns error: %1\$s"] = "Henting av URL gir følgende feil: %1\$s";
-App::$strings["Image uploaded but image cropping failed."] = "Bildet ble lastet opp, men beskjæring av bildet mislyktes.";
-App::$strings["Image resize failed."] = "Endring av bildestørrelse mislyktes.";
-App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Hold nede Shift-knappen og last siden på nytt eller tøm nettleserens mellomlager hvis det nye bildet ikke vises umiddelbart.";
-App::$strings["Image upload failed."] = "Opplasting av bildet mislyktes.";
-App::$strings["Unable to process image."] = "Kan ikke behandle bildet.";
-App::$strings["Photo not available."] = "Bildet er ikke tilgjengelig.";
-App::$strings["Upload File:"] = "Last opp fil:";
-App::$strings["Select a profile:"] = "Velg en profil:";
-App::$strings["Upload Profile Photo"] = "Last opp profilbilde:";
-App::$strings["or"] = "eller";
-App::$strings["skip this step"] = "hopp over dette steget";
-App::$strings["select a photo from your photo albums"] = "velg et bilde fra dine fotoalbum";
-App::$strings["Crop Image"] = "Beskjær bildet";
-App::$strings["Please adjust the image cropping for optimum viewing."] = "Vennligst juster bildebeskjæringen for optimal visning.";
-App::$strings["Done Editing"] = "Avslutt redigering";
-App::$strings["Profile not found."] = "Profilen ble ikke funnet.";
-App::$strings["Profile deleted."] = "Profilen er slettet.";
-App::$strings["Profile-"] = "Profil-";
-App::$strings["New profile created."] = "Ny profil opprettet.";
-App::$strings["Profile unavailable to clone."] = "Profilen er utilgjengelig for klonen.";
-App::$strings["Profile unavailable to export."] = "Profilen er utilgjengelig for eksport.";
-App::$strings["Profile Name is required."] = "Profilnavn er påkrevd.";
-App::$strings["Marital Status"] = "Sivilstand";
-App::$strings["Romantic Partner"] = "Romantisk partner";
-App::$strings["Likes"] = "Liker";
-App::$strings["Dislikes"] = "Liker ikke";
-App::$strings["Work/Employment"] = "Arbeid/sysselsetting";
-App::$strings["Religion"] = "Religion";
-App::$strings["Political Views"] = "Politiske synspunkter";
-App::$strings["Sexual Preference"] = "Seksuelle preferanser";
-App::$strings["Homepage"] = "Hjemmeside";
-App::$strings["Interests"] = "Interesser";
-App::$strings["Profile updated."] = "Profilen er oppdatert.";
-App::$strings["Hide your contact/friend list from viewers of this profile?"] = "Skjul kontakt-/vennelisten din fra de som ser på denne profilen?";
-App::$strings["Edit Profile Details"] = "Endre profildetaljer";
-App::$strings["View this profile"] = "Vis denne profilen";
-App::$strings["Change Profile Photo"] = "Endre profilbilde";
-App::$strings["Create a new profile using these settings"] = "Lag en ny profil ved å bruke disse innstillingene";
-App::$strings["Clone this profile"] = "Klon denne profilen";
-App::$strings["Delete this profile"] = "Slett denne profilen";
-App::$strings["Import profile from file"] = "Importer profil fra fil";
-App::$strings["Export profile to file"] = "Eksporter profil til fil";
-App::$strings["Profile Name:"] = "Profilnavn:";
-App::$strings["Your Full Name:"] = "Ditt fulle navn:";
-App::$strings["Title/Description:"] = "Tittel/Beskrivelse:";
-App::$strings["Your Gender:"] = "Ditt kjønn:";
-App::$strings["Birthday :"] = "Fødselsdag:";
-App::$strings["Street Address:"] = "Gateadresse:";
-App::$strings["Locality/City:"] = "Sted/By:";
-App::$strings["Postal/Zip Code:"] = "Postnummer/ZIP-kode:";
-App::$strings["Country:"] = "Land:";
-App::$strings["Region/State:"] = "Region/fylke:";
-App::$strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Sivilstand:";
-App::$strings["Who: (if applicable)"] = "Hvem: (hvis det er aktuelt) ";
-App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Eksempler: kari123, Kari Villiamsen, kari@example.com";
-App::$strings["Since [date]:"] = "Siden [dato]:";
-App::$strings["Homepage URL:"] = "Hjemmeside URL:";
-App::$strings["Religious Views:"] = "Religiøse synspunkter:";
-App::$strings["Keywords:"] = "Nøkkelord:";
-App::$strings["Example: fishing photography software"] = "Eksempel: fisking fotografering programvare";
-App::$strings["Used in directory listings"] = "Brukt i katalogoppføringer";
-App::$strings["Tell us about yourself..."] = "Fortell oss om deg selv...";
-App::$strings["Hobbies/Interests"] = "Hobbier/Interesser";
-App::$strings["Contact information and Social Networks"] = "Kontaktinformasjon og sosiale nettverk";
-App::$strings["My other channels"] = "Mine andre kanaler";
-App::$strings["Musical interests"] = "Musikkinteresser";
-App::$strings["Books, literature"] = "Bøker, litteratur";
-App::$strings["Television"] = "TV/fjernsyn";
-App::$strings["Film/dance/culture/entertainment"] = "Film/dans/kultur/underholdning";
-App::$strings["Love/romance"] = "Kjærlighet/romantikk";
-App::$strings["Work/employment"] = "Arbeid/sysselsetting";
-App::$strings["School/education"] = "Skole/utdanning";
-App::$strings["This is your default profile."] = "Dette er din standardprofil.";
-App::$strings["Age: "] = "Alder:";
-App::$strings["Edit/Manage Profiles"] = "Endre/håndter profiler";
-App::$strings["Add profile things"] = "Legg til profilting";
-App::$strings["Include desirable objects in your profile"] = "Inkluder ønskverdige objekter i din profil";
-App::$strings["Invalid profile identifier."] = "Ugyldig profil-identifikator.";
-App::$strings["Profile Visibility Editor"] = "Endre profilsynlighet";
-App::$strings["Click on a contact to add or remove."] = "Klikk på en kontakt for å legge til eller fjerne.";
-App::$strings["Visible To"] = "Synlig for";
-App::$strings["The listed hubs allow public registration for the \$Projectname network. All hubs in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some hubs may require subscription or provide tiered service plans. The hub itself <strong>may</strong> provide additional details."] = "Nettstedene på listen tillater offentlig registrering i \$Projectname-nettverket. Alle nettsteder i nettverket er forbundet så medlemskap på enhver av dem formidler medlemskap i nettverket som helhet. Noen nettsteder kan kreve abonnement eller tilby lagdelte tjenesteavtaler. Nettstedene selv <strong>kan</strong> gi tilleggsopplysninger.";
-App::$strings["Hub URL"] = "Nettstedets URL";
-App::$strings["Access Type"] = "Tilgangstype";
-App::$strings["Registration Policy"] = "Retningslinjer for registrering";
-App::$strings["Rate"] = "Vurder";
-App::$strings["Website:"] = "Nettsted:";
-App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Fjerntliggende kanal [%s] (foreløpig ikke kjent på dette nettstedet)";
-App::$strings["Rating (this information is public)"] = "Vurdering (denne informasjonen er offentlig)";
-App::$strings["Optionally explain your rating (this information is public)"] = "Velg om du vil forklare din vurdering (denne informasjonen er offentlig)";
-App::$strings["No ratings"] = "Ingen vurderinger";
-App::$strings["Rating: "] = "Vurdering:";
-App::$strings["Website: "] = "Nettsted:";
-App::$strings["Description: "] = "Beskrivelse:";
+App::$strings["Profile Fields"] = "";
+App::$strings["Basic Profile Fields"] = "";
+App::$strings["Advanced Profile Fields"] = "";
+App::$strings["(In addition to basic fields)"] = "";
+App::$strings["All available fields"] = "";
+App::$strings["Custom Fields"] = "";
+App::$strings["Create Custom Field"] = "";
+App::$strings["App installed."] = "App installert.";
+App::$strings["Malformed app."] = "Feil oppsett for app-en.";
+App::$strings["Embed code"] = "Innbyggingskode";
+App::$strings["Edit App"] = "Endre app";
+App::$strings["Create App"] = "Lag app";
+App::$strings["Name of app"] = "Navn på app";
+App::$strings["Location (URL) of app"] = "Plassering (URL) til app";
+App::$strings["Photo icon URL"] = "Bildeikon URL";
+App::$strings["80 x 80 pixels - optional"] = "80 x80 pixler - valgfritt";
+App::$strings["Categories (optional, comma separated list)"] = "";
+App::$strings["Version ID"] = "Versjons-ID";
+App::$strings["Price of app"] = "Pris på app";
+App::$strings["Location (URL) to purchase app"] = "Plassering (URL) for å kjøpe app";
App::$strings["Select a bookmark folder"] = "Velg en bokmerkemappe";
App::$strings["Save Bookmark"] = "Lagre bokmerke";
App::$strings["URL of bookmark"] = "URL-en til bokmerket";
@@ -1881,6 +1068,7 @@ App::$strings["Please enter your invitation code"] = "Vennligst skriv din invita
App::$strings["no"] = "nei";
App::$strings["yes"] = "ja";
App::$strings["Membership on this site is by invitation only."] = "Medlemskap ved dette nettstedet skjer kun via invitasjon.";
+App::$strings["Register"] = "Registrer";
App::$strings["Proceed to create your first channel"] = "Gå videre for å lage din første kanal";
App::$strings["Please login."] = "Vennligst logg inn.";
App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "Sletting av kontoer er ikke tillatt innen 48 timer etter endring av kontopassordet.";
@@ -1980,6 +1168,7 @@ App::$strings["Allow us to suggest you as a potential friend to new members?"] =
App::$strings["Your channel address is"] = "Din kanaladresse er";
App::$strings["Channel Settings"] = "Kanalinnstillinger";
App::$strings["Basic Settings"] = "Grunninnstillinger";
+App::$strings["Full Name:"] = "Fullt navn:";
App::$strings["Your Timezone:"] = "Din tidssone:";
App::$strings["Default Post Location:"] = "Standard plassering ved innlegg:";
App::$strings["Geographical location to display on your posts"] = "Geografisk plassering som vises på dine innlegg";
@@ -1999,10 +1188,14 @@ App::$strings["Allow others to tag your posts"] = "Tillat andre å merke dine in
App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "Ofte brukt av fellesskapet for å merke upassende innhold i etterkant";
App::$strings["Advanced Privacy Settings"] = "Avanserte personverninnstillinger";
App::$strings["Expire other channel content after this many days"] = "Annet kanal innhold utløper etter så mange dager";
-App::$strings["0 or blank to use the website limit. The website expires after %d days."] = "0 eller ikke noe for å bruke nettstedets grense. Nettstedet utløper etter %d dager.";
+App::$strings["0 or blank to use the website limit."] = "";
+App::$strings["This website expires after %d days."] = "";
+App::$strings["This website does not expire imported content."] = "";
+App::$strings["The website limit takes precedence if lower than your limit."] = "";
App::$strings["Maximum Friend Requests/Day:"] = "Maksimalt antall venneforespørsler per dag:";
App::$strings["May reduce spam activity"] = "Kan redusere søppelpostaktivitet";
-App::$strings["Default Post Permissions"] = "Standard innleggstillatelser";
+App::$strings["Default Post and Publish Permissions"] = "";
+App::$strings["Use my default audience setting for the type of object published"] = "";
App::$strings["Channel permissions category:"] = "Kategori med kanaltillatelser:";
App::$strings["Maximum private messages per day from unknown people:"] = "Maksimalt antall private meldinger per dag fra ukjente personer:";
App::$strings["Useful to reduce spamming"] = "Nyttig for å redusere søppelpost";
@@ -2077,6 +1270,8 @@ App::$strings["Please select a default timezone for your website"] = "Vennligst
App::$strings["Site settings"] = "Nettstedets innstillinger";
App::$strings["Enable \$Projectname <strong>advanced</strong> features?"] = "Skru på <strong>avanserte</strong egenskaper i \$Projectname ?";
App::$strings["Some advanced features, while useful - may be best suited for technically proficient audiences"] = "Noen avanserte egenskaper, som - selv om de er nyttige - kanskje passer bedre for et teknisk kyndig publikum. ";
+App::$strings["PHP version 5.5 or greater is required."] = "";
+App::$strings["PHP version"] = "";
App::$strings["Could not find a command line version of PHP in the web server PATH."] = "Fant ikke en kommandolinjeversjon av PHP i webtjenerens sti (PATH).";
App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Hvis du ikke har en kommandolinjeversjon av PHP installert på tjeneren, så vil du ikke kunne kjøre bakgrunnshenting via cron.";
App::$strings["PHP executable path"] = "PHP-kjørefilens sti";
@@ -2115,7 +1310,7 @@ App::$strings["At the end of this procedure, we will give you a text to save in
App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Alternativt, så kan du hoppe over denne prosedyren og gjennomføre en manuell installasjon. Vennligst se filen \"install/INSTALL.txt\" for instruksjoner.";
App::$strings[".htconfig.php is writable"] = ".htconfig.php kan skrives til";
App::$strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red bruker malmotoren Smarty3 for å gjengi sine webvisninger. Smarty3 kompilerer malene om til PHP for å framskynde gjengivelsen.";
-App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "For å kunne lagre disse kompilerte malene, så må webtjeneren ha skrivetilgang til katalogen %s under Red sin hovedmappe.";
+App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder."] = "";
App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Vennligst sikre at brukeren som din web-tjeneste kjører som (for eksempel www-data) har skrivetilgang til denne katalogen.";
App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Merknad: som et sikkerhetstiltak bør du bare gi webtjerenn skrivetilgang til %s - ikke til malfilene (.tpl) som den inneholder.";
App::$strings["%s is writable"] = "%s kan skrives til";
@@ -2134,22 +1329,6 @@ App::$strings["The database configuration file \".htconfig.php\" could not be wr
App::$strings["Errors encountered creating database tables."] = "Feil oppstod under opprettelsen av databasetabeller.";
App::$strings["<h1>What next</h1>"] = "<h1>Hva gjenstår</h1>";
App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "VIKTIG: Du må [manuelt] sette opp en automatisert tidfestet oppgave til bakgrunnshenteren.";
-App::$strings["No valid account found."] = "Ingen gyldig konto funnet.";
-App::$strings["Password reset request issued. Check your email."] = "Forespørsel om å tilbakestille passord er mottatt. Sjekk e-posten din.";
-App::$strings["Site Member (%s)"] = "Nettstedsmedlem (%s)";
-App::$strings["Password reset requested at %s"] = "Forespurt om å tilbakestille passord hos %s";
-App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Forespørsel kunne ikke bekreftes. (Du kan ha sendt den inn tidligere.) Tilbakestilling av passord mislyktes.";
-App::$strings["Password Reset"] = "Tilbakestill passord";
-App::$strings["Your password has been reset as requested."] = "Ditt passord har blitt tilbakestilt som forespurt.";
-App::$strings["Your new password is"] = "Ditt nye passord er";
-App::$strings["Save or copy your new password - and then"] = "Lagre eller kopier ditt nye passord, og deretter kan du";
-App::$strings["click here to login"] = "klikke her for å logge inn";
-App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Ditt passord kan endres på siden <em>Innstillinger</em> etter vellykket innlogging.";
-App::$strings["Your password has changed at %s"] = "Ditt passord er endret hos %s";
-App::$strings["Forgot your Password?"] = "Glemt passord ditt?";
-App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Skriv e-postadressen din og send inn for å tilbakestille passordet ditt. Sjekk deretter din e-post for videre instruksjoner.";
-App::$strings["Email Address"] = "E-postadresse";
-App::$strings["Reset"] = "Tilbakestill";
App::$strings["Files: shared with me"] = "Filer: delt med meg";
App::$strings["NEW"] = "NY";
App::$strings["Remove all files"] = "Fjern alle filer";
@@ -2171,12 +1350,14 @@ App::$strings["Failed to create source. No channel selected."] = "Mislyktes med
App::$strings["Source created."] = "Kilden er laget.";
App::$strings["Source updated."] = "Kilden er oppdatert.";
App::$strings["*"] = "*";
+App::$strings["Channel Sources"] = "Kanalkilder";
App::$strings["Manage remote sources of content for your channel."] = "HÃ¥ndtere eksterne innholdskilder til din kanal.";
App::$strings["New Source"] = "Ny kilde";
App::$strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importer alt eller et utvalgt av innhold fra følgende kanal inn i denne kanalen og distribuer det i henhold til dine egne kanalinnstillinger.";
App::$strings["Only import content with these words (one per line)"] = "Bare importer innhold med disse ordene (ett ord per linje)";
App::$strings["Leave blank to import all public content"] = "La stå tomt for å importere alt offentlig innhold";
App::$strings["Channel Name"] = "Kanalnavn";
+App::$strings["Add the following categories to posts imported from this source (comma separated)"] = "";
App::$strings["Source not found."] = "Kilden ble ikke funnet.";
App::$strings["Edit Source"] = "Endre kilde";
App::$strings["Delete Source"] = "Slett kilde";
@@ -2185,6 +1366,9 @@ App::$strings["Unable to remove source."] = "Ikke i stand til å fjerne kilde.";
App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s følger %2\$s sin %3\$s";
App::$strings["%1\$s stopped following %2\$s's %3\$s"] = "%1\$s stopped å følge %2\$s sin %3\$s";
App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Ingen forslag tilgjengelige. Hvis dette er et nytt nettsted, vennligst prøv igjen om 24 timer.";
+App::$strings["Ignore/Hide"] = "Ignorer/Skjul";
+App::$strings["post"] = "innlegg";
+App::$strings["comment"] = "kommentar";
App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s merket %3\$s til %2\$s med %4\$s";
App::$strings["Tag removed"] = "Merkelapp fjernet";
App::$strings["Remove Item Tag"] = "Fjern merkelapp fra element";
@@ -2216,12 +1400,861 @@ App::$strings["No connections."] = "Ingen forbindelser.";
App::$strings["Visit %s's profile [%s]"] = "Besøk %s sin profil [%s]";
App::$strings["View Connections"] = "Vis forbindelser";
App::$strings["Source of Item"] = "Kilde til element";
+App::$strings["Webpages"] = "Websider";
+App::$strings["Actions"] = "Handlinger";
+App::$strings["Page Link"] = "Sidelenke";
App::$strings["Page Title"] = "Sidetittel";
App::$strings["Xchan Lookup"] = "Xchan oppslag";
App::$strings["Lookup xchan beginning with (or webbie): "] = "Slå opp xchan som begynner med (eller webbie):";
-App::$strings["Cover Photos"] = "Forsidebilder";
-App::$strings["Upload Cover Photo"] = "Last opp forsidebilde";
-App::$strings["Permissions denied."] = "Tillatelse avvist.";
+App::$strings["Site Admin"] = "Nettstedsadministrator";
+App::$strings["Bug Report"] = "";
+App::$strings["View Bookmarks"] = "";
+App::$strings["My Chatrooms"] = "";
+App::$strings["Firefox Share"] = "";
+App::$strings["Remote Diagnostics"] = "";
+App::$strings["Suggest Channels"] = "Foreslå kanaler";
+App::$strings["Login"] = "Logg inn";
+App::$strings["Grid"] = "Nett";
+App::$strings["Channel Home"] = "Kanalhjem";
+App::$strings["Events"] = "Hendelser";
+App::$strings["Directory"] = "Katalog";
+App::$strings["Mail"] = "Melding";
+App::$strings["Chat"] = "Chat";
+App::$strings["Probe"] = "Undersøk";
+App::$strings["Suggest"] = "Forreslå";
+App::$strings["Random Channel"] = "Tilfeldig kanal";
+App::$strings["Invite"] = "Inviter";
+App::$strings["Features"] = "Funksjoner";
+App::$strings["Post"] = "Innlegg";
+App::$strings["Purchase"] = "Kjøp";
+App::$strings["Missing room name"] = "Mangler romnavn";
+App::$strings["Duplicate room name"] = "Duplikat romnavn";
+App::$strings["Invalid room specifier."] = "Ugyldig rom-spesifisering";
+App::$strings["Room not found."] = "Rommet ble ikke funnet.";
+App::$strings["Room is full"] = "Rommet er fullt";
+App::$strings["\$Projectname Notification"] = "\$Projectname varsling";
+App::$strings["\$projectname"] = "\$projectname";
+App::$strings["Thank You,"] = "Tusen takk,";
+App::$strings["%s Administrator"] = "%s administrator";
+App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
+App::$strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla:Notify] Ny melding mottatt hos %s";
+App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s sendte deg en ny privat melding på %3\$s.";
+App::$strings["%1\$s sent you %2\$s."] = "%1\$s sendte deg %2\$s.";
+App::$strings["a private message"] = "en privat melding";
+App::$strings["Please visit %s to view and/or reply to your private messages."] = "Vennligst besøk %s for å se og/eller svare på dine private meldinger.";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s kommenterte på [zrl=%3\$s]a %4\$s[/zrl]";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s kommenterte på [zrl=%3\$s]%4\$s's %5\$s[/zrl]";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s kommenterte på [zrl=%3\$s]din %4\$s[/zrl]";
+App::$strings["[Hubzilla:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Hubzilla:Notify] Kommentar til samtale #%1\$d av %2\$s";
+App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s kommenterte på et element eller en samtale du følger";
+App::$strings["Please visit %s to view and/or reply to the conversation."] = "Vennligst besøk %s for å se og/eller svare i samtalen";
+App::$strings["[Hubzilla:Notify] %s posted to your profile wall"] = "[Hubzilla:Notify] %s skrev et innlegg på din profilvegg";
+App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s skrev et innlegg på din profilvegg på %3\$s";
+App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s skrev et innlegg på [zrl=%3\$s]din vegg[/zrl]";
+App::$strings["[Hubzilla:Notify] %s tagged you"] = "[Hubzilla:Notify] %s merket deg";
+App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s merket deg på %3\$s";
+App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]merket deg[/zrl].";
+App::$strings["[Hubzilla:Notify] %1\$s poked you"] = "[Hubzilla:Notify] %1\$s prikket deg";
+App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s dyttet deg på %3\$s";
+App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]dyttet deg[/zrl].";
+App::$strings["[Hubzilla:Notify] %s tagged your post"] = "[Hubzilla:Notify] %s merket ditt innlegg";
+App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s merket ditt innlegg på %3\$s";
+App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s merket [zrl=%3\$s]ditt innlegg[/zrl]";
+App::$strings["[Hubzilla:Notify] Introduction received"] = "[Hubzilla:Notify] Introduksjon mottatt";
+App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, du har mottatt en ny forespørsel om forbindelse fra '%2\$s' hos %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, du mottok [zrl=%2\$s]en ny forespørsel om forbindelse[/zrl] fra %3\$s.";
+App::$strings["You may visit their profile at %s"] = "Du kan besøke profilen deres på %s";
+App::$strings["Please visit %s to approve or reject the connection request."] = "Vennligst besøk %s for å godkjenne eller avslå forespørselen om forbindelse.";
+App::$strings["[Hubzilla:Notify] Friend suggestion received"] = "[Hubzilla:Notify] Venneforslag mottatt";
+App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, du har mottatt en venneforespørsel fra '%2\$s' hos %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, du har mottatt [zrl=%2\$s]et venneforslaget[/zrl] angående %3\$s fra %4\$s. ";
+App::$strings["Name:"] = "Navn:";
+App::$strings["Photo:"] = "Bilde:";
+App::$strings["Please visit %s to approve or reject the suggestion."] = "Vennligst besøk %s for å godkjenne eller avslå dette forslaget.";
+App::$strings["[Hubzilla:Notify]"] = "[Hubzilla:Notify]";
+App::$strings["created a new post"] = "laget et nytt innlegg";
+App::$strings["commented on %s's post"] = "kommenterte på %s sitt innlegg";
+App::$strings["Private Message"] = "Privat melding";
+App::$strings["Select"] = "Velg";
+App::$strings["Save to Folder"] = "Lagre i mappe";
+App::$strings["I will attend"] = "Jeg vil delta";
+App::$strings["I will not attend"] = "Jeg deltar ikke";
+App::$strings["I might attend"] = "Jeg vil kanskje delta";
+App::$strings["I agree"] = "Jeg er enig";
+App::$strings["I disagree"] = "Jeg er uenig";
+App::$strings["I abstain"] = "Jeg avstår";
+App::$strings["Add Star"] = "Legg til stjerne";
+App::$strings["Remove Star"] = "Fjern stjerne";
+App::$strings["Toggle Star Status"] = "Skru av og på stjernestatus";
+App::$strings["starred"] = "stjernemerket";
+App::$strings["Message signature validated"] = "Innleggets signatur er bekreftet";
+App::$strings["Message signature incorrect"] = "Innleggets signatur er feil";
+App::$strings["Add Tag"] = "Legg til merkelapp";
+App::$strings["like"] = "liker";
+App::$strings["dislike"] = "misliker";
+App::$strings["Share This"] = "Del dette";
+App::$strings["share"] = "del";
+App::$strings["Delivery Report"] = "Leveringsrapport";
+App::$strings["%d comment"] = array(
+ 0 => "%d kommentar",
+ 1 => "%d kommentarer",
+);
+App::$strings["View %s's profile - %s"] = "Vis %s sin profil - %s";
+App::$strings["to"] = "til";
+App::$strings["via"] = "via";
+App::$strings["Wall-to-Wall"] = "vegg-til-vegg";
+App::$strings["via Wall-To-Wall:"] = "via vegg-til-vegg:";
+App::$strings["from %s"] = "fra %s";
+App::$strings["last edited: %s"] = "sist endret: %s";
+App::$strings["Expires: %s"] = "Utløper: %s";
+App::$strings["Save Bookmarks"] = "Lagre bokmerker";
+App::$strings["Add to Calendar"] = "Legg til i kalender";
+App::$strings["Mark all seen"] = "Merk alle som sett";
+App::$strings["[+] show all"] = "[+] Vis alle";
+App::$strings["Bold"] = "Uthevet";
+App::$strings["Italic"] = "Kursiv";
+App::$strings["Underline"] = "Understreket";
+App::$strings["Quote"] = "Sitat";
+App::$strings["Code"] = "Kode";
+App::$strings["Image"] = "Bilde";
+App::$strings["Insert Link"] = "Sett inn lenke";
+App::$strings["Video"] = "Video";
+App::$strings["No username found in import file."] = "Ingen brukernavn ble funnet i importfilen.";
+App::$strings["Unable to create a unique channel address. Import failed."] = "Klarte ikke å lage en unik kanaladresse. Import mislyktes.";
+App::$strings["Cannot locate DNS info for database server '%s'"] = "Kan ikke finne DNS-informasjon om databasetjener '%s'";
+App::$strings["Categories"] = "Kategorier";
+App::$strings["Tags"] = "Merkelapper";
+App::$strings["Keywords"] = "Nøkkelord";
+App::$strings["have"] = "har";
+App::$strings["has"] = "har";
+App::$strings["want"] = "ønsker";
+App::$strings["wants"] = "ønsker";
+App::$strings["likes"] = "liker";
+App::$strings["dislikes"] = "misliker";
+App::$strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
+App::$strings["Starts:"] = "Starter:";
+App::$strings["Finishes:"] = "Slutter:";
+App::$strings["This event has been added to your calendar."] = "Denne hendelsen er lagt til i din kalender.";
+App::$strings["Not specified"] = "Ikke spesifisert";
+App::$strings["Needs Action"] = "Trenger handling";
+App::$strings["Completed"] = "Ferdig";
+App::$strings["In Process"] = "Igang";
+App::$strings["Cancelled"] = "Avbrutt";
+App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kan ikke lage en kopi av kanal-identifikatoren på dette systemet. Import mislyktes.";
+App::$strings["Channel clone failed. Import failed."] = "Kanalkloning mislyktes. Import mislyktes.";
+App::$strings["(Unknown)"] = "(Ukjent)";
+App::$strings["Visible to anybody on the internet."] = "Synlig for enhver på Internett.";
+App::$strings["Visible to you only."] = "Synlig bare for deg.";
+App::$strings["Visible to anybody in this network."] = "Synlig for enhver i dette nettverket.";
+App::$strings["Visible to anybody authenticated."] = "Synlig for enhver som er autentisert.";
+App::$strings["Visible to anybody on %s."] = "Synlig for alle på %s.";
+App::$strings["Visible to all connections."] = "Synlig for alle forbindelser.";
+App::$strings["Visible to approved connections."] = "Synlig for godkjente forbindelser.";
+App::$strings["Visible to specific connections."] = "Synlig for spesifikke forbindelser.";
+App::$strings["Privacy group is empty."] = "Personverngruppen er tom.";
+App::$strings["Privacy group: %s"] = "Personverngruppe: %s";
+App::$strings["Connection not found."] = "Forbindelsen ble ikke funnet.";
+App::$strings["profile photo"] = "profilbilde";
+App::$strings["No recipient provided."] = "Ingen mottaker angitt.";
+App::$strings["[no subject]"] = "[ikke noe emne]";
+App::$strings["Unable to determine sender."] = "Kan ikke avgjøre avsender.";
+App::$strings["Stored post could not be verified."] = "Lagret innlegg kunne ikke bekreftes.";
+App::$strings["prev"] = "forrige";
+App::$strings["first"] = "første";
+App::$strings["last"] = "siste";
+App::$strings["next"] = "neste";
+App::$strings["older"] = "eldre";
+App::$strings["newer"] = "nyere";
+App::$strings["No connections"] = "Ingen forbindelser";
+App::$strings["View all %s connections"] = "Vis alle %s forbindelser";
+App::$strings["poke"] = "prikk";
+App::$strings["poked"] = "prikket";
+App::$strings["ping"] = "varsle";
+App::$strings["pinged"] = "varslet";
+App::$strings["prod"] = "oppildne";
+App::$strings["prodded"] = "oppildnet";
+App::$strings["slap"] = "daske";
+App::$strings["slapped"] = "dasket";
+App::$strings["finger"] = "fingre";
+App::$strings["fingered"] = "fingret";
+App::$strings["rebuff"] = "tilbakevise";
+App::$strings["rebuffed"] = "tilbakeviste";
+App::$strings["happy"] = "glad";
+App::$strings["sad"] = "trist";
+App::$strings["mellow"] = "dempet";
+App::$strings["tired"] = "trøtt";
+App::$strings["perky"] = "oppkvikket";
+App::$strings["angry"] = "sint";
+App::$strings["stupefied"] = "lamslått";
+App::$strings["puzzled"] = "forundret";
+App::$strings["interested"] = "interessert";
+App::$strings["bitter"] = "bitter";
+App::$strings["cheerful"] = "munter";
+App::$strings["alive"] = "levende";
+App::$strings["annoyed"] = "irritert";
+App::$strings["anxious"] = "nervøs";
+App::$strings["cranky"] = "gretten";
+App::$strings["disturbed"] = "foruroliget";
+App::$strings["frustrated"] = "frustrert";
+App::$strings["depressed"] = "lei seg";
+App::$strings["motivated"] = "motivert";
+App::$strings["relaxed"] = "avslappet";
+App::$strings["surprised"] = "overrasket";
+App::$strings["Monday"] = "mandag";
+App::$strings["Tuesday"] = "tirsdag";
+App::$strings["Wednesday"] = "onsdag";
+App::$strings["Thursday"] = "torsdag";
+App::$strings["Friday"] = "fredag";
+App::$strings["Saturday"] = "lørdag";
+App::$strings["Sunday"] = "søndag";
+App::$strings["January"] = "januar";
+App::$strings["February"] = "februar";
+App::$strings["March"] = "mars";
+App::$strings["April"] = "april";
+App::$strings["May"] = "mai";
+App::$strings["June"] = "juni";
+App::$strings["July"] = "juli";
+App::$strings["August"] = "august";
+App::$strings["September"] = "september";
+App::$strings["October"] = "oktober";
+App::$strings["November"] = "november";
+App::$strings["December"] = "desember";
+App::$strings["Unknown Attachment"] = "Ukjent vedlegg";
+App::$strings["unknown"] = "ukjent";
+App::$strings["remove category"] = "fjern kategori";
+App::$strings["remove from file"] = "fjern fra fil";
+App::$strings["default"] = "standard";
+App::$strings["Page layout"] = "Sidens layout";
+App::$strings["You can create your own with the layouts tool"] = "Du kan lage din egen med layout-verktøyet";
+App::$strings["Page content type"] = "Sidens innholdstype";
+App::$strings["Select an alternate language"] = "Velg et annet språk";
+App::$strings["activity"] = "aktivitet";
+App::$strings["Design Tools"] = "Designverktøy";
+App::$strings["Pages"] = "Sider";
+App::$strings["System"] = "System";
+App::$strings["New App"] = "";
+App::$strings["Suggestions"] = "Forslag";
+App::$strings["See more..."] = "Se mer...";
+App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Du har %1$.0f av %2$.0f tillate forbindelser.";
+App::$strings["Add New Connection"] = "Legg til ny forbindelse";
+App::$strings["Enter channel address"] = "Skriv kanaladressen";
+App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Eksempel: ola@eksempel.no, https://eksempel.no/kari";
+App::$strings["Notes"] = "Merknader";
+App::$strings["Remove term"] = "Fjern begrep";
+App::$strings["Saved Searches"] = "Lagrede søk";
+App::$strings["add"] = "legg til";
+App::$strings["Saved Folders"] = "Lagrede mapper";
+App::$strings["Everything"] = "Alt";
+App::$strings["Archives"] = "Arkiv";
+App::$strings["Refresh"] = "Forny";
+App::$strings["Account settings"] = "Kontoinnstillinger";
+App::$strings["Channel settings"] = "Kanalinnstillinger";
+App::$strings["Additional features"] = "Tilleggsfunksjoner";
+App::$strings["Feature/Addon settings"] = "Funksjons-/Tilleggsinnstillinger";
+App::$strings["Display settings"] = "Visningsinnstillinger";
+App::$strings["Manage locations"] = "";
+App::$strings["Export channel"] = "Eksporter kanal";
+App::$strings["Connected apps"] = "Tilkoblede app-er";
+App::$strings["Premium Channel Settings"] = "Premiumkanal-innstillinger";
+App::$strings["Private Mail Menu"] = "Meny for privat post";
+App::$strings["Combined View"] = "Kombinert visning";
+App::$strings["Inbox"] = "Innboks";
+App::$strings["Outbox"] = "Utboks";
+App::$strings["New Message"] = "Ny melding";
+App::$strings["Conversations"] = "Samtaler";
+App::$strings["Received Messages"] = "Mottatte meldinger";
+App::$strings["Sent Messages"] = "Sendte meldinger";
+App::$strings["No messages."] = "Ingen meldinger.";
+App::$strings["Delete conversation"] = "Slett samtale";
+App::$strings["Events Menu"] = "Meny for hendelser";
+App::$strings["Day View"] = "Dag";
+App::$strings["Week View"] = "Uke";
+App::$strings["Month View"] = "MÃ¥ned";
+App::$strings["Events Tools"] = "Kalenderverktøy";
+App::$strings["Export Calendar"] = "Eksporter kalender";
+App::$strings["Import Calendar"] = "Importer kalender";
+App::$strings["Chatrooms"] = "Chatrom";
+App::$strings["Overview"] = "";
+App::$strings["Chat Members"] = "";
+App::$strings["Bookmarked Chatrooms"] = "Bokmerkede chatrom";
+App::$strings["Suggested Chatrooms"] = "Foreslåtte chatrom";
+App::$strings["photo/image"] = "foto/bilde";
+App::$strings["Click to show more"] = "";
+App::$strings["Rating Tools"] = "Vurderingsverktøy";
+App::$strings["Rate Me"] = "Vurder meg";
+App::$strings["View Ratings"] = "Vis vurderinger";
+App::$strings["Forums"] = "Forum";
+App::$strings["Tasks"] = "Oppgaver";
+App::$strings["Documentation"] = "Dokumentasjon";
+App::$strings["Project/Site Information"] = "Prosjekt-/Nettstedsinformasjon";
+App::$strings["For Members"] = "For medlemmer";
+App::$strings["For Administrators"] = "For administratorer";
+App::$strings["For Developers"] = "For utviklere";
+App::$strings["Member registrations waiting for confirmation"] = "";
+App::$strings["Inspect queue"] = "Inspiser kø";
+App::$strings["DB updates"] = "Databaseoppdateringer";
+App::$strings["Admin"] = "Administrator";
+App::$strings["Plugin Features"] = "Tilleggsfunksjoner";
+App::$strings["Channel is blocked on this site."] = "Kanalen er blokkert på dette nettstedet.";
+App::$strings["Channel location missing."] = "Kanalplassering mangler.";
+App::$strings["Response from remote channel was incomplete."] = "Svaret fra den andre kanalen var ikke komplett.";
+App::$strings["Channel was deleted and no longer exists."] = "Kanalen er slettet og finnes ikke lenger.";
+App::$strings["Protocol disabled."] = "Protokollen er avskrudd.";
+App::$strings["Channel discovery failed."] = "Kanaloppdagelse mislyktes.";
+App::$strings["Cannot connect to yourself."] = "Kan ikke lage forbindelse med deg selv.";
+App::$strings["%1\$s's bookmarks"] = "%1\$s sine bokmerker";
+App::$strings["Public Timeline"] = "Offentlig tidslinje";
+App::$strings["Image/photo"] = "Bilde/fotografi";
+App::$strings["Encrypted content"] = "Kryptert innhold";
+App::$strings["Install %s element: "] = "Installer %s element:";
+App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Dette innlegget inneholder det installerbare elementet %s, men du mangler tillatelse til å installere det på dette nettstedet.";
+App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s skrev følgende %2\$s %3\$s";
+App::$strings["Click to open/close"] = "Klikk for å åpne/lukke";
+App::$strings["spoiler"] = "";
+App::$strings["Different viewers will see this text differently"] = "Denne teksten vil se forskjellig ut for ulike besøkende";
+App::$strings["$1 wrote:"] = "$1 skrev:";
+App::$strings["Directory Options"] = "Kataloginnstillinger";
+App::$strings["Safe Mode"] = "Trygt modus";
+App::$strings["Public Forums Only"] = "Bare offentlige forum";
+App::$strings["This Website Only"] = "Kun dette nettstedet";
+App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Skjemaets sikkerhetspollett var ikke gyldig. Dette skjedde antakelig fordi skjemaet har vært åpnet for lenge (>3 timer) før det ble sendt inn.";
+App::$strings["Logout"] = "Logg ut";
+App::$strings["End this session"] = "Avslutt denne økten";
+App::$strings["Home"] = "Hjem";
+App::$strings["Your posts and conversations"] = "Dine innlegg og samtaler";
+App::$strings["Your profile page"] = "Din profilside";
+App::$strings["Manage/Edit profiles"] = "HÃ¥ndter/endre profiler";
+App::$strings["Edit Profile"] = "Endre profil";
+App::$strings["Edit your profile"] = "Endre din profil";
+App::$strings["Your photos"] = "Dine bilder";
+App::$strings["Your files"] = "Dine filer";
+App::$strings["Your chatrooms"] = "Dine chatterom";
+App::$strings["Bookmarks"] = "Bokmerker";
+App::$strings["Your bookmarks"] = "Dine bokmerker";
+App::$strings["Your webpages"] = "Dine websider";
+App::$strings["Sign in"] = "Logg på";
+App::$strings["%s - click to logout"] = "%s - klikk for å logge ut";
+App::$strings["Remote authentication"] = "Fjernautentisering";
+App::$strings["Click to authenticate to your home hub"] = "Klikk for å godkjennes mot din hjemme-hub";
+App::$strings["Home Page"] = "Hjemmeside";
+App::$strings["Create an account"] = "Lag en konto";
+App::$strings["Help and documentation"] = "Hjelp og dokumentasjon";
+App::$strings["Applications, utilities, links, games"] = "Programmer, verktøy, lenker, spill";
+App::$strings["Search site @name, #tag, ?docs, content"] = "Søk nettstedet for @navn, #merkelapp, ?dokumentasjon, innhold";
+App::$strings["Channel Directory"] = "Kanalkatalog";
+App::$strings["Your grid"] = "Ditt nett";
+App::$strings["Mark all grid notifications seen"] = "Marker alle nettvarsler som sett";
+App::$strings["Channel home"] = "Kanalhjem";
+App::$strings["Mark all channel notifications seen"] = "Merk alle kanalvarsler som sett";
+App::$strings["Notices"] = "Varsel";
+App::$strings["Notifications"] = "Varsler";
+App::$strings["See all notifications"] = "Se alle varsler";
+App::$strings["Private mail"] = "Privat post";
+App::$strings["See all private messages"] = "Se alle private meldinger";
+App::$strings["Mark all private messages seen"] = "Merk alle private meldinger som sett";
+App::$strings["Event Calendar"] = "Kalender";
+App::$strings["See all events"] = "Se alle hendelser";
+App::$strings["Mark all events seen"] = "Merk alle hendelser som sett";
+App::$strings["Manage Your Channels"] = "HÃ¥ndter dine kanaler";
+App::$strings["Account/Channel Settings"] = "Konto-/kanal-innstillinger";
+App::$strings["Site Setup and Configuration"] = "Nettstedsoppsett og -konfigurasjon";
+App::$strings["Loading..."] = "Laster...";
+App::$strings["@name, #tag, ?doc, content"] = "@navn, #merkelapp, ?dokumentasjon, innhold";
+App::$strings["Please wait..."] = "Vennligst vent...";
+App::$strings["New window"] = "Nytt vindu";
+App::$strings["Open the selected location in a different window or browser tab"] = "Ã…pne det valgte stedet i et annet vindu eller nettleser-fane";
+App::$strings["User '%s' deleted"] = "Brukeren '%s' er slettet";
+App::$strings["%d invitation available"] = array(
+ 0 => "%d invitasjon tilgjengelig",
+ 1 => "%d invitasjoner tilgjengelig",
+);
+App::$strings["Find Channels"] = "Finn kanaler";
+App::$strings["Enter name or interest"] = "Skriv navn eller interesse";
+App::$strings["Connect/Follow"] = "Forbindelse/Følg";
+App::$strings["Examples: Robert Morgenstein, Fishing"] = "Eksempler: Ola Nordmann, fisking";
+App::$strings["Random Profile"] = "Tilfeldig profil";
+App::$strings["Invite Friends"] = "Inviter venner";
+App::$strings["Advanced example: name=fred and country=iceland"] = "Avansert eksempel: navn=fred og land=island";
+App::$strings["%d connection in common"] = array(
+ 0 => "%d forbindelse felles",
+ 1 => "%d forbindelser felles",
+);
+App::$strings["show more"] = "vis mer";
+App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s er nå forbundet med %2\$s";
+App::$strings["%1\$s poked %2\$s"] = "%1\$s prikket %2\$s";
+App::$strings["View %s's profile @ %s"] = "Vis %s sin profile @ %s";
+App::$strings["Categories:"] = "Kategorier:";
+App::$strings["Filed under:"] = "Sortert under:";
+App::$strings["View in context"] = "Vis i sammenheng";
+App::$strings["remove"] = "fjern";
+App::$strings["Delete Selected Items"] = "Slett valgte elementer";
+App::$strings["View Source"] = "Vis kilde";
+App::$strings["Follow Thread"] = "Følg tråd";
+App::$strings["Unfollow Thread"] = "Ikke følg tråd";
+App::$strings["Activity/Posts"] = "Aktivitet/Innlegg";
+App::$strings["Edit Connection"] = "Endre forbindelse";
+App::$strings["Message"] = "Melding";
+App::$strings["%s likes this."] = "%s liker dette.";
+App::$strings["%s doesn't like this."] = "%s liker ikke dette.";
+App::$strings["<span %1\$s>%2\$d people</span> like this."] = array(
+ 0 => "<span %1\$s>%2\$d person</span> liker dette.",
+ 1 => "<span %1\$s>%2\$d personer</span> liker dette.",
+);
+App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
+ 0 => "<span %1\$s>%2\$d person</span> liker ikke dette.",
+ 1 => "<span %1\$s>%2\$d personer</span> liker ikke dette.",
+);
+App::$strings["and"] = "og";
+App::$strings[", and %d other people"] = array(
+ 0 => ", og %d annen person",
+ 1 => ", og %d andre personer",
+);
+App::$strings["%s like this."] = "%s liker dette.";
+App::$strings["%s don't like this."] = "%s liker ikke dette.";
+App::$strings["Set your location"] = "Angi din plassering";
+App::$strings["Clear browser location"] = "Fjern nettleserplassering";
+App::$strings["Tag term:"] = "Merkelapp:";
+App::$strings["Where are you right now?"] = "Hvor er du akkurat nå?";
+App::$strings["Page link name"] = "Sidens lenkenavn";
+App::$strings["Post as"] = "Lag innlegg som";
+App::$strings["Toggle voting"] = "Skru av eller på stemming";
+App::$strings["Categories (optional, comma-separated list)"] = "Kategorier (valgfri, kommaseparert liste)";
+App::$strings["Set publish date"] = "Angi publiseringsdato";
+App::$strings["OK"] = "OK";
+App::$strings["Discover"] = "Oppdage";
+App::$strings["Imported public streams"] = "Importerte offentlige strømmer";
+App::$strings["Commented Order"] = "Kommentert";
+App::$strings["Sort by Comment Date"] = "Sorter etter kommentert dato";
+App::$strings["Posted Order"] = "Lagt inn";
+App::$strings["Sort by Post Date"] = "Sorter etter innleggsdato";
+App::$strings["Posts that mention or involve you"] = "Innlegg som nevner eller involverer deg";
+App::$strings["Activity Stream - by date"] = "Aktivitetsstrøm - etter dato";
+App::$strings["Starred"] = "Stjerne";
+App::$strings["Favourite Posts"] = "Favorittinnlegg";
+App::$strings["Spam"] = "Søppel";
+App::$strings["Posts flagged as SPAM"] = "Innlegg merket som SØPPEL";
+App::$strings["Status Messages and Posts"] = "Statusmeldinger og -innlegg";
+App::$strings["About"] = "Om";
+App::$strings["Profile Details"] = "Profildetaljer";
+App::$strings["Photo Albums"] = "Fotoalbum";
+App::$strings["Files and Storage"] = "Filer og lagring";
+App::$strings["Saved Bookmarks"] = "Lagrede bokmerker";
+App::$strings["Manage Webpages"] = "HÃ¥ndtere websider";
+App::$strings["__ctx:noun__ Attending"] = array(
+ 0 => "Deltar",
+ 1 => "Deltar",
+);
+App::$strings["__ctx:noun__ Not Attending"] = array(
+ 0 => "Deltar ikke",
+ 1 => "Deltar ikke",
+);
+App::$strings["__ctx:noun__ Undecided"] = array(
+ 0 => "Ikke bestemt",
+ 1 => "Ikke bestemt",
+);
+App::$strings["__ctx:noun__ Agree"] = array(
+ 0 => "Enig",
+ 1 => "Enige",
+);
+App::$strings["__ctx:noun__ Disagree"] = array(
+ 0 => "Uenig",
+ 1 => "Uenige",
+);
+App::$strings["__ctx:noun__ Abstain"] = array(
+ 0 => "Avstår",
+ 1 => "Avstår",
+);
+App::$strings["Frequently"] = "Ofte";
+App::$strings["Hourly"] = "Hver time";
+App::$strings["Twice daily"] = "To ganger daglig";
+App::$strings["Daily"] = "Daglig";
+App::$strings["Weekly"] = "Ukentlig";
+App::$strings["Monthly"] = "MÃ¥nedlig";
+App::$strings["Currently Male"] = "For tiden mann";
+App::$strings["Currently Female"] = "For tiden kvinne";
+App::$strings["Mostly Male"] = "For det meste mann";
+App::$strings["Mostly Female"] = "For det meste kvinne";
+App::$strings["Transgender"] = "Transkjønnet";
+App::$strings["Intersex"] = "interkjønnet";
+App::$strings["Transsexual"] = "Transseksuell";
+App::$strings["Hermaphrodite"] = "Hermafroditt";
+App::$strings["Neuter"] = "Intetkjønn";
+App::$strings["Non-specific"] = "Ubestemt";
+App::$strings["Other"] = "Annen";
+App::$strings["Undecided"] = "Ubestemt";
+App::$strings["Males"] = "Menn";
+App::$strings["Females"] = "Kvinner";
+App::$strings["Gay"] = "Homo";
+App::$strings["Lesbian"] = "Lesbisk";
+App::$strings["No Preference"] = "Ingen preferanse";
+App::$strings["Bisexual"] = "Biseksuell";
+App::$strings["Autosexual"] = "Autoseksuell";
+App::$strings["Abstinent"] = "Avholdende";
+App::$strings["Virgin"] = "Jomfru";
+App::$strings["Deviant"] = "Avviker";
+App::$strings["Fetish"] = "Fetisj";
+App::$strings["Oodles"] = "Masse";
+App::$strings["Nonsexual"] = "Ikke-seksuell";
+App::$strings["Single"] = "Enslig";
+App::$strings["Lonely"] = "Ensom";
+App::$strings["Available"] = "Tilgjengelig";
+App::$strings["Unavailable"] = "Ikke tilgjengelig";
+App::$strings["Has crush"] = "Er forelsket";
+App::$strings["Infatuated"] = "Betatt";
+App::$strings["Dating"] = "Sammen med";
+App::$strings["Unfaithful"] = "Utro";
+App::$strings["Sex Addict"] = "Sexavhengig";
+App::$strings["Friends/Benefits"] = "Venner med frynsegoder";
+App::$strings["Casual"] = "Tilfeldig";
+App::$strings["Engaged"] = "Forlovet";
+App::$strings["Married"] = "Gift";
+App::$strings["Imaginarily married"] = "Gift i fantasien";
+App::$strings["Partners"] = "Partnere";
+App::$strings["Cohabiting"] = "Samboer";
+App::$strings["Common law"] = "Samboer";
+App::$strings["Happy"] = "Lykkelig";
+App::$strings["Not looking"] = "Ikke på utkikk";
+App::$strings["Swinger"] = "Partnerbytte";
+App::$strings["Betrayed"] = "Bedratt";
+App::$strings["Separated"] = "Separert";
+App::$strings["Unstable"] = "Ustabilt";
+App::$strings["Divorced"] = "Skilt";
+App::$strings["Imaginarily divorced"] = "Skilt i fantasien";
+App::$strings["Widowed"] = "Enke";
+App::$strings["Uncertain"] = "Usikkert";
+App::$strings["It's complicated"] = "Det er komplisert";
+App::$strings["Don't care"] = "Bryr meg ikke";
+App::$strings["Ask me"] = "Spør meg";
+App::$strings["Visible to your default audience"] = "Synlig for ditt standard publikum";
+App::$strings["Only me"] = "";
+App::$strings["Public"] = "Offentlig";
+App::$strings["Anybody in the \$Projectname network"] = "";
+App::$strings["Any account on %s"] = "";
+App::$strings["Any of my connections"] = "";
+App::$strings["Only connections I specifically allow"] = "";
+App::$strings["Anybody authenticated (could include visitors from other networks)"] = "";
+App::$strings["Any connections including those who haven't yet been approved"] = "";
+App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "";
+App::$strings["This is your default setting for who can view your default channel profile"] = "";
+App::$strings["This is your default setting for who can view your connections"] = "";
+App::$strings["This is your default setting for who can view your file storage and photos"] = "";
+App::$strings["This is your default setting for the audience of your webpages"] = "";
+App::$strings["Not a valid email address"] = "Ikke en gyldig e-postadresse";
+App::$strings["Your email domain is not among those allowed on this site"] = "Ditt e-postdomene er ikke blant de som er tillatt på dette stedet";
+App::$strings["Your email address is already registered at this site."] = "Din e-postadresse er allerede registrert på dette nettstedet.";
+App::$strings["An invitation is required."] = "En invitasjon er påkrevd.";
+App::$strings["Invitation could not be verified."] = "Invitasjon kunne ikke bekreftes.";
+App::$strings["Please enter the required information."] = "Vennligst skriv inn nødvendig informasjon.";
+App::$strings["Failed to store account information."] = "Mislyktes med å lagre kontoinformasjon.";
+App::$strings["Registration confirmation for %s"] = "Registreringsbekreftelse for %s";
+App::$strings["Registration request at %s"] = "Registreringsforespørsel hos %s";
+App::$strings["Administrator"] = "Administrator";
+App::$strings["your registration password"] = "ditt registreringspassord";
+App::$strings["Registration details for %s"] = "Registreringsdetaljer for %s";
+App::$strings["Account approved."] = "Konto godkjent.";
+App::$strings["Registration revoked for %s"] = "Registrering trukket tilbake for %s";
+App::$strings["Account verified. Please login."] = "Konto bekreftet. Vennligst logg inn.";
+App::$strings["Click here to upgrade."] = "Klikk her for å oppgradere.";
+App::$strings["This action exceeds the limits set by your subscription plan."] = "Denne handlingen går utenfor grensene satt i din abonnementsplan.";
+App::$strings["This action is not available under your subscription plan."] = "Denne handlingen er ikke tilgjengelig i din abonnementsplan.";
+App::$strings["Item was not found."] = "Elementet ble ikke funnet.";
+App::$strings["No source file."] = "Ingen kildefil.";
+App::$strings["Cannot locate file to replace"] = "Kan ikke finne filen som skal byttes ut";
+App::$strings["Cannot locate file to revise/update"] = "Finner ikke filen som skal revideres/oppdateres";
+App::$strings["File exceeds size limit of %d"] = "Filens størrelse overgår grensen på %d";
+App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Du har nådd din lagringsgrense for vedlegg på %1$.0f Mbytes.";
+App::$strings["File upload failed. Possible system limit or action terminated."] = "Mislyktes med å laste opp filen. Mulig systemgrense eller handling avbrutt.";
+App::$strings["Stored file could not be verified. Upload failed."] = "Lagret fil kunne ikke bekreftes. Opplasting mislyktes.";
+App::$strings["Path not available."] = "Stien er ikke tilgjengelig.";
+App::$strings["Empty pathname"] = "Tomt sti-navn";
+App::$strings["duplicate filename or path"] = "duplikat av filnavn eller sti";
+App::$strings["Path not found."] = "Stien ble ikke funnet.";
+App::$strings["mkdir failed."] = "mkdir mislyktes.";
+App::$strings["database storage failed."] = "databaselagring mislyktes.";
+App::$strings["Empty path"] = "Tom sti";
+App::$strings["Unable to obtain identity information from database"] = "Klarer ikke å få tak i identitetsinformasjon fra databasen";
+App::$strings["Empty name"] = "Mangler navn";
+App::$strings["Name too long"] = "Navnet er for langt";
+App::$strings["No account identifier"] = "Ingen kontoidentifikator";
+App::$strings["Nickname is required."] = "Kallenavn er påkrevd.";
+App::$strings["Reserved nickname. Please choose another."] = "Reservert kallenavn. Vennligst velg et annet.";
+App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Kallenavnet inneholder tegn som ikke er støttet eller det er allerede i bruk på dette nettstedet.";
+App::$strings["Unable to retrieve created identity"] = "Klarer ikke å hente den lagede identiteten";
+App::$strings["Default Profile"] = "Standardprofil";
+App::$strings["Requested channel is not available."] = "Forespurt kanal er ikke tilgjengelig.";
+App::$strings["Create New Profile"] = "Lag ny profil";
+App::$strings["Visible to everybody"] = "";
+App::$strings["Gender:"] = "Kjønn:";
+App::$strings["Status:"] = "Status:";
+App::$strings["Homepage:"] = "Hjemmeside:";
+App::$strings["Online Now"] = "Online nå";
+App::$strings["Like this channel"] = "Lik denne kanalen";
+App::$strings["j F, Y"] = "j F, Y";
+App::$strings["j F"] = "j F";
+App::$strings["Birthday:"] = "Fødselsdag:";
+App::$strings["for %1\$d %2\$s"] = "for %1\$d %2\$s";
+App::$strings["Sexual Preference:"] = "Seksuell preferanse:";
+App::$strings["Tags:"] = "Merkelapper:";
+App::$strings["Political Views:"] = "Politiske synspunkter:";
+App::$strings["Religion:"] = "Religion:";
+App::$strings["Hobbies/Interests:"] = "Hobbyer/interesser:";
+App::$strings["Likes:"] = "Liker:";
+App::$strings["Dislikes:"] = "Misliker:";
+App::$strings["Contact information and Social Networks:"] = "Kontaktinformasjon og sosiale nettverk:";
+App::$strings["My other channels:"] = "Mine andre kanaler:";
+App::$strings["Musical interests:"] = "Musikkinteresse:";
+App::$strings["Books, literature:"] = "Bøker, litteratur:";
+App::$strings["Television:"] = "TV:";
+App::$strings["Film/dance/culture/entertainment:"] = "Film/dans/kultur/underholdning:";
+App::$strings["Love/Romance:"] = "Kjærlighet/romantikk:";
+App::$strings["Work/employment:"] = "Arbeid/sysselsetting:";
+App::$strings["School/education:"] = "Skole/utdannelse:";
+App::$strings["Like this thing"] = "Lik denne tingen";
+App::$strings["General Features"] = "Generelle funksjoner";
+App::$strings["Content Expiration"] = "Innholdet utløper";
+App::$strings["Remove posts/comments and/or private messages at a future time"] = "Fjern innlegg/kommentarer og/eller private meldinger på et angitt tidspunkt i fremtiden";
+App::$strings["Multiple Profiles"] = "Flere profiler";
+App::$strings["Ability to create multiple profiles"] = "Mulig å lage flere profiler";
+App::$strings["Advanced Profiles"] = "Avanserte profiler";
+App::$strings["Additional profile sections and selections"] = "Ytterlige seksjoner og utvalg til profilen";
+App::$strings["Profile Import/Export"] = "Profil-import/-eksport";
+App::$strings["Save and load profile details across sites/channels"] = "Lagre og åpne profildetaljer på tvers av nettsteder/kanaler";
+App::$strings["Web Pages"] = "Web-sider";
+App::$strings["Provide managed web pages on your channel"] = "Tilby kontrollerte web-sider på din kanal";
+App::$strings["Hide Rating"] = "Skjul vurdering";
+App::$strings["Hide the rating buttons on your channel and profile pages. Note: People can still rate you somewhere else."] = "Skjul vurderingsknappene for din kanal og profilsider. Merknad: folk kan fortsatt vurdere deg et annet sted.";
+App::$strings["Private Notes"] = "Private merknader";
+App::$strings["Enables a tool to store notes and reminders (note: not encrypted)"] = "Skru på et verktøy for å lagre notater og påminnelser (merknad: ikke kryptert)";
+App::$strings["Navigation Channel Select"] = "Navigasjon kanalvalg";
+App::$strings["Change channels directly from within the navigation dropdown menu"] = "Endre kanaler direkte fra navigasjonsmenyen";
+App::$strings["Photo Location"] = "Bildeplassering";
+App::$strings["If location data is available on uploaded photos, link this to a map."] = "Hvis plasseringsdata er tilgjengelige i opplastede bilder, plasser dette på et kart.";
+App::$strings["Access Controlled Chatrooms"] = "";
+App::$strings["Provide chatrooms and chat services with access control."] = "";
+App::$strings["Smart Birthdays"] = "";
+App::$strings["Make birthday events timezone aware in case your friends are scattered across the planet."] = "";
+App::$strings["Expert Mode"] = "Ekspertmodus";
+App::$strings["Enable Expert Mode to provide advanced configuration options"] = "Skru på Ekspertmodus for å tilby avanserte konfigurasjonsvalg";
+App::$strings["Premium Channel"] = "Premiumkanal";
+App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Lar deg angi restriksjoner og betingelser for de som kobler seg til din kanal";
+App::$strings["Post Composition Features"] = "Funksjoner for å lage innlegg";
+App::$strings["Large Photos"] = "Store bilder";
+App::$strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Inkluder store (1024px) småbilder i innlegg. Hvis denne ikke er påskrudd, bruk små (640px) småbilder.";
+App::$strings["Automatically import channel content from other channels or feeds"] = "Automatisk import av kanalinnhold fra andre kanaler eller strømmer";
+App::$strings["Even More Encryption"] = "Enda mer kryptering";
+App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Tillat valgfri kryptering av innhold ende-til-ende via en delt hemmelig nøkkel";
+App::$strings["Enable Voting Tools"] = "Skru på verktøy for å stemme";
+App::$strings["Provide a class of post which others can vote on"] = "Tilby en type innlegg som andre kan stemme på";
+App::$strings["Delayed Posting"] = "Tidfest publisering";
+App::$strings["Allow posts to be published at a later date"] = "Tillat innlegg å bli publisert på et senere tidspunkt";
+App::$strings["Suppress Duplicate Posts/Comments"] = "Forhindre duplikat av innlegg/kommentarer";
+App::$strings["Prevent posts with identical content to be published with less than two minutes in between submissions."] = "Forhindre innlegg med identisk innhold fra å bli publisert hvis det er mindre enn to minutter mellom innsendingene.";
+App::$strings["Network and Stream Filtering"] = "Nettverk- og strømfiltrering";
+App::$strings["Search by Date"] = "Søk etter dato";
+App::$strings["Ability to select posts by date ranges"] = "Mulighet for å velge innlegg etter datoområde";
+App::$strings["Privacy Groups"] = "Personverngrupper";
+App::$strings["Enable management and selection of privacy groups"] = "Skru på håndtering og valg av personverngrupper";
+App::$strings["Save search terms for re-use"] = "Lagre søkeuttrykk for senere bruk";
+App::$strings["Network Personal Tab"] = "Nettverk personlig fane";
+App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Skru på fane for å bare vise Nettverksinnlegg som du har deltatt i";
+App::$strings["Network New Tab"] = "Nettverk Ny fane";
+App::$strings["Enable tab to display all new Network activity"] = "Skru på fane for å vise all ny nettverksaktivitet";
+App::$strings["Affinity Tool"] = "Nærhetsverktøy";
+App::$strings["Filter stream activity by depth of relationships"] = "Filtrer strømaktiviteten etter releasjonsdybde";
+App::$strings["Connection Filtering"] = "Filtrer forbindelser";
+App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filtrer innkommende innlegg fra forbindelser basert på nøkkelord/innhold";
+App::$strings["Show channel suggestions"] = "Vis kanalforslag";
+App::$strings["Post/Comment Tools"] = "Innlegg-/Kommentar-verktøy";
+App::$strings["Community Tagging"] = "Felleskapsmerkelapper";
+App::$strings["Ability to tag existing posts"] = "Mulighet til å merke eksisterende meldinger";
+App::$strings["Post Categories"] = "Innleggskategorier";
+App::$strings["Add categories to your posts"] = "Legg kategorier til dine innlegg";
+App::$strings["Emoji Reactions"] = "";
+App::$strings["Add emoji reaction ability to posts"] = "";
+App::$strings["Ability to file posts under folders"] = "Mulighet til å sortere innlegg i mapper";
+App::$strings["Dislike Posts"] = "Mislik innlegg";
+App::$strings["Ability to dislike posts/comments"] = "Mulighet til å mislike innlegg/kommentarer";
+App::$strings["Star Posts"] = "Stjerneinnlegg";
+App::$strings["Ability to mark special posts with a star indicator"] = "Mulighet til å merke spesielle innlegg med en stjerne";
+App::$strings["Tag Cloud"] = "Merkelappsky";
+App::$strings["Provide a personal tag cloud on your channel page"] = "Tilby en personlig merkelappsky på din kanalside";
+App::$strings["Embedded content"] = "Innebygget innhold";
+App::$strings["Embedding disabled"] = "Innbygging avskrudd";
+App::$strings["Who can see this?"] = "";
+App::$strings["Custom selection"] = "";
+App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "";
+App::$strings["Show"] = "Vis";
+App::$strings["Don't show"] = "Ikke vis";
+App::$strings["Other networks and post services"] = "Andre nettverk og innleggstjenester";
+App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "";
+App::$strings["Logged out."] = "Logget ut.";
+App::$strings["Failed authentication"] = "Mislykket autentisering";
+App::$strings["Birthday"] = "";
+App::$strings["Age: "] = "Alder:";
+App::$strings["YYYY-MM-DD or MM-DD"] = "YYYY-MM-DD eller MM-DD";
+App::$strings["never"] = "aldri";
+App::$strings["less than a second ago"] = "for mindre enn ett sekund siden";
+App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "%1\$d %2\$s siden";
+App::$strings["__ctx:relative_date__ year"] = array(
+ 0 => "Ã¥r",
+ 1 => "Ã¥r",
+);
+App::$strings["__ctx:relative_date__ month"] = array(
+ 0 => "måned",
+ 1 => "måneder",
+);
+App::$strings["__ctx:relative_date__ week"] = array(
+ 0 => "uke",
+ 1 => "uker",
+);
+App::$strings["__ctx:relative_date__ day"] = array(
+ 0 => "dag",
+ 1 => "dager",
+);
+App::$strings["__ctx:relative_date__ hour"] = array(
+ 0 => "time",
+ 1 => "timer",
+);
+App::$strings["__ctx:relative_date__ minute"] = array(
+ 0 => "minutt",
+ 1 => "minutter",
+);
+App::$strings["__ctx:relative_date__ second"] = array(
+ 0 => "sekund",
+ 1 => "sekunder",
+);
+App::$strings["%1\$s's birthday"] = "%1\$s sin fødselsdag";
+App::$strings["Happy Birthday %1\$s"] = "Gratulerer med dagen, %1\$s !";
+App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "En slettet gruppe med dette navnet ble gjenopprettet. Eksisterende tillatelser for elementet <strong>kan</strong> gjelde for denne gruppen og fremtidige medlemmer. Hvis du ønsket noe annet, vennligst lag en ny gruppe med et annet navn.";
+App::$strings["Add new connections to this privacy group"] = "Legg nye forbindelser i denne personverngruppen";
+App::$strings["edit"] = "endre";
+App::$strings["Edit group"] = "Endre gruppe";
+App::$strings["Add privacy group"] = "Legg til personverngruppe";
+App::$strings["Channels not in any privacy group"] = "Kanaler uten personverngruppe";
+App::$strings["Delete this item?"] = "Slett dette elementet?";
+App::$strings["[-] show less"] = "[-] Vis mindre";
+App::$strings["[+] expand"] = "[+] Utvid";
+App::$strings["[-] collapse"] = "[-] Lukk";
+App::$strings["Password too short"] = "Passordet er for kort";
+App::$strings["Passwords do not match"] = "Passordene er ikke like";
+App::$strings["everybody"] = "alle";
+App::$strings["Secret Passphrase"] = "Hemmelig passordsetning";
+App::$strings["Passphrase hint"] = "Hint om passordsetning";
+App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Varsel: Tillatelser har blitt endret, men de har ennå ikke blitt sendt inn.";
+App::$strings["close all"] = "Lukk alle";
+App::$strings["Nothing new here"] = "Ikke noe nytt her";
+App::$strings["Rate This Channel (this is public)"] = "Vurder denne kanalen (dette er offentlig)";
+App::$strings["Describe (optional)"] = "Beskriv (valgfritt)";
+App::$strings["Please enter a link URL"] = "Vennligst skriv inn en lenke URL:";
+App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Endringene er ikke lagret. Er du sikker på at du ønsker å forlate denne siden?";
+App::$strings["timeago.prefixAgo"] = "timeago.prefixAgo";
+App::$strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
+App::$strings["ago"] = "siden";
+App::$strings["from now"] = "fra nå";
+App::$strings["less than a minute"] = "mindre enn ett minutt";
+App::$strings["about a minute"] = "omtrent et minutt";
+App::$strings["%d minutes"] = "%d minutter";
+App::$strings["about an hour"] = "omtrent en time";
+App::$strings["about %d hours"] = "omtrent %d timer";
+App::$strings["a day"] = "en dag";
+App::$strings["%d days"] = "%d dager";
+App::$strings["about a month"] = "omtrent en måned";
+App::$strings["%d months"] = "%d måneder";
+App::$strings["about a year"] = "omtrent et år";
+App::$strings["%d years"] = "%d år";
+App::$strings[" "] = " ";
+App::$strings["timeago.numbers"] = "timeago.numbers";
+App::$strings["__ctx:long__ May"] = "mai";
+App::$strings["Jan"] = "Jan";
+App::$strings["Feb"] = "Feb";
+App::$strings["Mar"] = "Mar";
+App::$strings["Apr"] = "Apr";
+App::$strings["__ctx:short__ May"] = "mai";
+App::$strings["Jun"] = "Jun";
+App::$strings["Jul"] = "Jul";
+App::$strings["Aug"] = "Aug";
+App::$strings["Sep"] = "Sep";
+App::$strings["Oct"] = "Okt";
+App::$strings["Nov"] = "Nov";
+App::$strings["Dec"] = "Des";
+App::$strings["Sun"] = "Søn";
+App::$strings["Mon"] = "Man";
+App::$strings["Tue"] = "Tirs";
+App::$strings["Wed"] = "Ons";
+App::$strings["Thu"] = "Tors";
+App::$strings["Fri"] = "Fre";
+App::$strings["Sat"] = "Lør";
+App::$strings["__ctx:calendar__ today"] = "idag";
+App::$strings["__ctx:calendar__ month"] = "måned";
+App::$strings["__ctx:calendar__ week"] = "uke";
+App::$strings["__ctx:calendar__ day"] = "dag";
+App::$strings["__ctx:calendar__ All day"] = "Hele dagen";
+App::$strings["view full size"] = "vis full størrelse";
+App::$strings["No Subject"] = "Uten emne";
+App::$strings["Friendica"] = "Friendica";
+App::$strings["OStatus"] = "OStatus";
+App::$strings["GNU-Social"] = "";
+App::$strings["RSS/Atom"] = "RSS/Atom";
+App::$strings["Diaspora"] = "Diaspora";
+App::$strings["Facebook"] = "Facebook";
+App::$strings["Zot"] = "Zot";
+App::$strings["LinkedIn"] = "LinkedIn";
+App::$strings["XMPP/IM"] = "XMPP/IM";
+App::$strings["MySpace"] = "MySpace";
+App::$strings["Image exceeds website size limit of %lu bytes"] = "Bilde overstiger nettstedets størrelsesbegrensning på %lu bytes";
+App::$strings["Image file is empty."] = "Bildefilen er tom.";
+App::$strings["Photo storage failed."] = "Bildelagring mislyktes.";
+App::$strings["a new photo"] = "et nytt bilde";
+App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s la inn %2\$s til %3\$s";
+App::$strings["Upload New Photos"] = "Last opp nye bilder";
+App::$strings["Invalid data packet"] = "Ugyldig datapakke";
+App::$strings["Unable to verify channel signature"] = "Ikke i stand til å sjekke kanalsignaturen";
+App::$strings["Unable to verify site signature for %s"] = "Ikke i stand til å bekrefte signaturen til %s";
+App::$strings["invalid target signature"] = "MÃ¥lets signatur er ugyldig";
+App::$strings["New Page"] = "Ny side";
+App::$strings["Title"] = "Tittel";
+App::$strings["Can view my normal stream and posts"] = "Kan se min normale strøm og innlegg";
+App::$strings["Can view my default channel profile"] = "Kan se min standard kanalprofil";
+App::$strings["Can view my connections"] = "Kan se mine forbindelser";
+App::$strings["Can view my file storage and photos"] = "Kan se mine filer og bilder";
+App::$strings["Can view my webpages"] = "Kan se mine websider";
+App::$strings["Can send me their channel stream and posts"] = "Kan sende meg deres kanalstrøm og innlegg";
+App::$strings["Can post on my channel page (\"wall\")"] = "Kan lage innlegg på min kanalside (\"vegg\")";
+App::$strings["Can comment on or like my posts"] = "Kan kommentere på eller like mine innlegg";
+App::$strings["Can send me private mail messages"] = "Kan sende meg private meldinger";
+App::$strings["Can like/dislike stuff"] = "Kan like/ikke like forskjellige greier";
+App::$strings["Profiles and things other than posts/comments"] = "Profiler og andre ting enn innlegg/kommentarer";
+App::$strings["Can forward to all my channel contacts via post @mentions"] = "Kan videresende til alle mine kanalkontakter via @navn i innlegg";
+App::$strings["Advanced - useful for creating group forum channels"] = "Avansert - nyttig for å lage forumkanaler for grupper";
+App::$strings["Can chat with me (when available)"] = "Kan chatte/sende lynmeldinger til meg (når tilgjengelig)";
+App::$strings["Can write to my file storage and photos"] = "Kan skrive til mitt lager for filer og bilder";
+App::$strings["Can edit my webpages"] = "Kan endre mine websider";
+App::$strings["Can source my public posts in derived channels"] = "Kan bruke mine offentlige innlegg som kanalkilde i egne kanaler";
+App::$strings["Somewhat advanced - very useful in open communities"] = "Litt avansert - svært nyttig i åpne fellesskap";
+App::$strings["Can administer my channel resources"] = "Kan administrere mine kanalressurser";
+App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Ekstremt avansert. La dette være med mindre du vet hva du gjør";
+App::$strings["Social Networking"] = "Sosialt nettverk";
+App::$strings["Social - Mostly Public"] = "Sosial - ganske offentlig";
+App::$strings["Social - Restricted"] = "Sosial - begrenset";
+App::$strings["Social - Private"] = "Sosial - privat";
+App::$strings["Community Forum"] = "Forum for fellesskap";
+App::$strings["Forum - Mostly Public"] = "Forum - ganske offentlig";
+App::$strings["Forum - Restricted"] = "Forum - begrenset";
+App::$strings["Forum - Private"] = "Forum - privat";
+App::$strings["Feed Republish"] = "Republisering av strømmet innhold";
+App::$strings["Feed - Mostly Public"] = "Strøm - ganske offentlig";
+App::$strings["Feed - Restricted"] = "Strøm - begrenset";
+App::$strings["Special Purpose"] = "Spesiell bruk";
+App::$strings["Special - Celebrity/Soapbox"] = "Spesiell - kjendis/talerstol";
+App::$strings["Special - Group Repository"] = "Spesiell - gruppelager";
+App::$strings["Custom/Expert Mode"] = "Tilpasset/Ekspertmodus";
+App::$strings[" and "] = "og";
+App::$strings["public profile"] = "offentlig profil";
+App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s endret %2\$s til &ldquo;%3\$s&rdquo;";
+App::$strings["Visit %1\$s's %2\$s"] = "Besøk %1\$s sitt %2\$s";
+App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s har oppdatert %2\$s, endret %3\$s.";
+App::$strings["Attachments:"] = "Vedlegg:";
+App::$strings["\$Projectname event notification:"] = "\$Projectname hendelsesvarsling:";
App::$strings["Focus (Hubzilla default)"] = "Focus (Hubzilla standardtema)";
App::$strings["Theme settings"] = "Temainnstillinger";
App::$strings["Select scheme"] = "Velg skjema";
@@ -2256,6 +2289,8 @@ App::$strings["Left align page content"] = "Venstrejuster sideinnhold";
App::$strings["Set minimum opacity of nav bar - to hide it"] = "Angi minste dekkevne for navigasjonslinjen - for å skjule den";
App::$strings["Set size of conversation author photo"] = "Angi størrelsen for samtalens forfatterbilde";
App::$strings["Set size of followup author photos"] = "Angi størrelsen på forfatterbilder ved oppfølging";
+App::$strings["__ctx:opensearch__ Search %1\$s (%2\$s)"] = "";
+App::$strings["__ctx:opensearch__ \$Projectname"] = "";
App::$strings["Update %s failed. See error logs."] = "Oppdatering %s mislyktes. Se feilloggen.";
App::$strings["Update Error at %s"] = "Oppdateringsfeil ved %s";
App::$strings["Create an account to access services and applications within the Hubzilla"] = "Lag en konto for å få tilgang til tjenester og programmer i Hubzilla";
diff --git a/view/nb-no/htconfig.tpl b/view/nb-no/htconfig.tpl
index d0a799cf6..802b31b49 100644
--- a/view/nb-no/htconfig.tpl
+++ b/view/nb-no/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/nl/hmessages.po b/view/nl/hmessages.po
index 10ca94afc..9219a1c06 100644
--- a/view/nl/hmessages.po
+++ b/view/nl/hmessages.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-04-29 00:01-0700\n"
-"PO-Revision-Date: 2016-04-30 11:56+0000\n"
+"POT-Creation-Date: 2016-06-10 00:02-0700\n"
+"PO-Revision-Date: 2016-06-10 13:57+0000\n"
"Last-Translator: jeroenpraat <jeroenpraat@xs4all.nl>\n"
"Language-Team: Dutch (http://www.transifex.com/Friendica/red-matrix/language/nl/)\n"
"MIME-Version: 1.0\n"
@@ -22,7 +22,7 @@ msgstr ""
msgid "parent"
msgstr "omhoog"
-#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2606
+#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2620
msgid "Collection"
msgstr "map"
@@ -46,16 +46,16 @@ msgstr "Planning-postvak IN"
msgid "Schedule Outbox"
msgstr "Planning-postvak UIT"
-#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Module/Photos.php:797
-#: ../../Zotlabs/Module/Photos.php:1242 ../../include/apps.php:360
-#: ../../include/apps.php:415 ../../include/conversation.php:1037
-#: ../../include/widgets.php:1457
+#: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Module/Photos.php:798
+#: ../../Zotlabs/Module/Photos.php:1243 ../../Zotlabs/Lib/Apps.php:486
+#: ../../Zotlabs/Lib/Apps.php:561 ../../include/widgets.php:1505
+#: ../../include/conversation.php:1032
msgid "Unknown"
msgstr "Onbekend"
#: ../../Zotlabs/Storage/Browser.php:226 ../../Zotlabs/Module/Fbrowser.php:85
-#: ../../include/apps.php:135 ../../include/conversation.php:1657
-#: ../../include/nav.php:93
+#: ../../Zotlabs/Lib/Apps.php:216 ../../include/nav.php:93
+#: ../../include/conversation.php:1639
msgid "Files"
msgstr "Bestanden"
@@ -67,23 +67,23 @@ msgstr "Totaal"
msgid "Shared"
msgstr "Gedeeld"
-#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:303
-#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:180
+#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:306
+#: ../../Zotlabs/Module/Blocks.php:156 ../../Zotlabs/Module/Layouts.php:182
#: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/New_channel.php:142
-#: ../../Zotlabs/Module/Webpages.php:188
+#: ../../Zotlabs/Module/Webpages.php:186
msgid "Create"
msgstr "Aanmaken"
-#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:305
+#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:308
#: ../../Zotlabs/Module/Cover_photo.php:357
-#: ../../Zotlabs/Module/Photos.php:824 ../../Zotlabs/Module/Photos.php:1366
-#: ../../Zotlabs/Module/Profile_photo.php:368 ../../include/widgets.php:1470
+#: ../../Zotlabs/Module/Photos.php:825 ../../Zotlabs/Module/Photos.php:1364
+#: ../../Zotlabs/Module/Profile_photo.php:368 ../../include/widgets.php:1518
msgid "Upload"
msgstr "Uploaden"
-#: ../../Zotlabs/Storage/Browser.php:235 ../../Zotlabs/Module/Admin.php:1166
-#: ../../Zotlabs/Module/Chat.php:245 ../../Zotlabs/Module/Settings.php:590
-#: ../../Zotlabs/Module/Settings.php:616
+#: ../../Zotlabs/Storage/Browser.php:235 ../../Zotlabs/Module/Chat.php:247
+#: ../../Zotlabs/Module/Admin.php:1223 ../../Zotlabs/Module/Settings.php:592
+#: ../../Zotlabs/Module/Settings.php:618
#: ../../Zotlabs/Module/Sharedwithme.php:99
msgid "Name"
msgstr "Naam"
@@ -93,7 +93,7 @@ msgid "Type"
msgstr "Type"
#: ../../Zotlabs/Storage/Browser.php:237
-#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1293
+#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1344
msgid "Size"
msgstr "Grootte"
@@ -102,121 +102,127 @@ msgstr "Grootte"
msgid "Last Modified"
msgstr "Laatst gewijzigd"
-#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Admin.php:1775
-#: ../../Zotlabs/Module/Blocks.php:159
+#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Blocks.php:157
+#: ../../Zotlabs/Module/Editblock.php:109
#: ../../Zotlabs/Module/Connections.php:290
#: ../../Zotlabs/Module/Connections.php:310
-#: ../../Zotlabs/Module/Editblock.php:140
-#: ../../Zotlabs/Module/Editlayout.php:139
-#: ../../Zotlabs/Module/Editpost.php:118
-#: ../../Zotlabs/Module/Editwebpage.php:181
-#: ../../Zotlabs/Module/Layouts.php:188 ../../Zotlabs/Module/Menu.php:112
-#: ../../Zotlabs/Module/Settings.php:650 ../../Zotlabs/Module/Thing.php:260
-#: ../../Zotlabs/Module/Webpages.php:189 ../../include/identity.php:930
-#: ../../include/identity.php:934 ../../include/ItemObject.php:100
-#: ../../include/apps.php:259 ../../include/menu.php:108
-#: ../../include/page_widgets.php:8 ../../include/page_widgets.php:36
+#: ../../Zotlabs/Module/Editpost.php:84
+#: ../../Zotlabs/Module/Editlayout.php:113
+#: ../../Zotlabs/Module/Editwebpage.php:146
+#: ../../Zotlabs/Module/Layouts.php:190 ../../Zotlabs/Module/Menu.php:112
+#: ../../Zotlabs/Module/Admin.php:2113 ../../Zotlabs/Module/Settings.php:652
+#: ../../Zotlabs/Module/Thing.php:260 ../../Zotlabs/Module/Webpages.php:187
+#: ../../Zotlabs/Lib/Apps.php:337 ../../Zotlabs/Lib/ThreadItem.php:106
+#: ../../include/channel.php:937 ../../include/channel.php:941
+#: ../../include/menu.php:108 ../../include/page_widgets.php:8
+#: ../../include/page_widgets.php:36
msgid "Edit"
msgstr "Bewerken"
-#: ../../Zotlabs/Storage/Browser.php:241 ../../Zotlabs/Module/Admin.php:1001
-#: ../../Zotlabs/Module/Admin.php:1160 ../../Zotlabs/Module/Admin.php:1776
-#: ../../Zotlabs/Module/Blocks.php:161
+#: ../../Zotlabs/Storage/Browser.php:241 ../../Zotlabs/Module/Blocks.php:159
+#: ../../Zotlabs/Module/Connedit.php:572
+#: ../../Zotlabs/Module/Editblock.php:134
#: ../../Zotlabs/Module/Connections.php:263
-#: ../../Zotlabs/Module/Connedit.php:573
-#: ../../Zotlabs/Module/Editblock.php:180
-#: ../../Zotlabs/Module/Editlayout.php:184
-#: ../../Zotlabs/Module/Editwebpage.php:221 ../../Zotlabs/Module/Group.php:177
-#: ../../Zotlabs/Module/Photos.php:1172 ../../Zotlabs/Module/Settings.php:651
-#: ../../Zotlabs/Module/Thing.php:261 ../../Zotlabs/Module/Webpages.php:191
-#: ../../include/ItemObject.php:120 ../../include/apps.php:260
-#: ../../include/conversation.php:657
+#: ../../Zotlabs/Module/Editlayout.php:136
+#: ../../Zotlabs/Module/Editwebpage.php:170 ../../Zotlabs/Module/Group.php:177
+#: ../../Zotlabs/Module/Photos.php:1173 ../../Zotlabs/Module/Admin.php:1039
+#: ../../Zotlabs/Module/Admin.php:1213 ../../Zotlabs/Module/Admin.php:2114
+#: ../../Zotlabs/Module/Settings.php:653 ../../Zotlabs/Module/Thing.php:261
+#: ../../Zotlabs/Module/Webpages.php:189 ../../Zotlabs/Lib/Apps.php:338
+#: ../../Zotlabs/Lib/ThreadItem.php:126 ../../include/conversation.php:657
msgid "Delete"
msgstr "Verwijderen"
-#: ../../Zotlabs/Storage/Browser.php:282
+#: ../../Zotlabs/Storage/Browser.php:285
#, php-format
msgid "You are using %1$s of your available file storage."
msgstr "Je gebruikt %1$s van de beschikbare bestandsopslag."
-#: ../../Zotlabs/Storage/Browser.php:287
+#: ../../Zotlabs/Storage/Browser.php:290
#, php-format
msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
msgstr "Je gebruikt %1$s van totaal %2$s beschikbare bestandsopslag. (%3$s&#37;)"
-#: ../../Zotlabs/Storage/Browser.php:299
+#: ../../Zotlabs/Storage/Browser.php:302
msgid "WARNING:"
msgstr "WAARSCHUWING:"
-#: ../../Zotlabs/Storage/Browser.php:302
+#: ../../Zotlabs/Storage/Browser.php:305
msgid "Create new folder"
msgstr "Nieuwe map aanmaken"
-#: ../../Zotlabs/Storage/Browser.php:304
+#: ../../Zotlabs/Storage/Browser.php:307
msgid "Upload file"
msgstr "Bestand uploaden"
-#: ../../Zotlabs/Web/Router.php:65 ../../Zotlabs/Module/Achievements.php:34
-#: ../../Zotlabs/Module/Api.php:13 ../../Zotlabs/Module/Api.php:18
-#: ../../Zotlabs/Module/Appman.php:70 ../../Zotlabs/Module/Authtest.php:16
-#: ../../Zotlabs/Module/Block.php:26 ../../Zotlabs/Module/Block.php:76
-#: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80
-#: ../../Zotlabs/Module/Bookmarks.php:61 ../../Zotlabs/Module/Channel.php:104
-#: ../../Zotlabs/Module/Channel.php:224 ../../Zotlabs/Module/Channel.php:264
-#: ../../Zotlabs/Module/Chat.php:98 ../../Zotlabs/Module/Chat.php:103
+#: ../../Zotlabs/Web/WebServer.php:120 ../../Zotlabs/Module/Dreport.php:10
+#: ../../Zotlabs/Module/Dreport.php:49 ../../Zotlabs/Module/Group.php:72
+#: ../../Zotlabs/Module/Like.php:284 ../../Zotlabs/Module/Import_items.php:112
+#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:62
+#: ../../include/items.php:385
+msgid "Permission denied"
+msgstr "Toegang geweigerd"
+
+#: ../../Zotlabs/Web/WebServer.php:121 ../../Zotlabs/Web/Router.php:65
+#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Blocks.php:73
+#: ../../Zotlabs/Module/Blocks.php:80 ../../Zotlabs/Module/Channel.php:105
+#: ../../Zotlabs/Module/Channel.php:226 ../../Zotlabs/Module/Channel.php:267
+#: ../../Zotlabs/Module/Chat.php:100 ../../Zotlabs/Module/Chat.php:105
+#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Block.php:26
+#: ../../Zotlabs/Module/Block.php:76 ../../Zotlabs/Module/Bookmarks.php:61
+#: ../../Zotlabs/Module/Connedit.php:366 ../../Zotlabs/Module/Editblock.php:67
#: ../../Zotlabs/Module/Common.php:39 ../../Zotlabs/Module/Connections.php:33
-#: ../../Zotlabs/Module/Connedit.php:366
#: ../../Zotlabs/Module/Cover_photo.php:277
#: ../../Zotlabs/Module/Cover_photo.php:290
-#: ../../Zotlabs/Module/Editblock.php:69
+#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Events.php:265
#: ../../Zotlabs/Module/Editlayout.php:67
-#: ../../Zotlabs/Module/Editlayout.php:91 ../../Zotlabs/Module/Editpost.php:17
-#: ../../Zotlabs/Module/Editwebpage.php:68
+#: ../../Zotlabs/Module/Editlayout.php:90
+#: ../../Zotlabs/Module/Editwebpage.php:69
#: ../../Zotlabs/Module/Editwebpage.php:90
#: ../../Zotlabs/Module/Editwebpage.php:105
-#: ../../Zotlabs/Module/Editwebpage.php:129
-#: ../../Zotlabs/Module/Events.php:264 ../../Zotlabs/Module/Filestorage.php:22
-#: ../../Zotlabs/Module/Filestorage.php:77
-#: ../../Zotlabs/Module/Filestorage.php:92
-#: ../../Zotlabs/Module/Filestorage.php:119
-#: ../../Zotlabs/Module/Fsuggest.php:82 ../../Zotlabs/Module/Group.php:13
-#: ../../Zotlabs/Module/Id.php:76 ../../Zotlabs/Module/Invite.php:17
-#: ../../Zotlabs/Module/Invite.php:91 ../../Zotlabs/Module/Item.php:210
+#: ../../Zotlabs/Module/Editwebpage.php:127 ../../Zotlabs/Module/Group.php:13
+#: ../../Zotlabs/Module/Api.php:13 ../../Zotlabs/Module/Api.php:18
+#: ../../Zotlabs/Module/Filestorage.php:24
+#: ../../Zotlabs/Module/Filestorage.php:79
+#: ../../Zotlabs/Module/Filestorage.php:94
+#: ../../Zotlabs/Module/Filestorage.php:121 ../../Zotlabs/Module/Item.php:210
#: ../../Zotlabs/Module/Item.php:218 ../../Zotlabs/Module/Item.php:1070
-#: ../../Zotlabs/Module/Layouts.php:73 ../../Zotlabs/Module/Layouts.php:80
-#: ../../Zotlabs/Module/Layouts.php:91 ../../Zotlabs/Module/Like.php:181
-#: ../../Zotlabs/Module/Locs.php:87 ../../Zotlabs/Module/Mail.php:130
-#: ../../Zotlabs/Module/Manage.php:10 ../../Zotlabs/Module/Menu.php:78
-#: ../../Zotlabs/Module/Message.php:20 ../../Zotlabs/Module/Mitem.php:115
-#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Network.php:16
-#: ../../Zotlabs/Module/New_channel.php:77
+#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78
+#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Id.php:76
+#: ../../Zotlabs/Module/Like.php:181 ../../Zotlabs/Module/Invite.php:17
+#: ../../Zotlabs/Module/Invite.php:91 ../../Zotlabs/Module/Locs.php:87
+#: ../../Zotlabs/Module/Mail.php:129 ../../Zotlabs/Module/Manage.php:10
+#: ../../Zotlabs/Module/Menu.php:78 ../../Zotlabs/Module/Message.php:18
+#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Network.php:17
+#: ../../Zotlabs/Module/Mitem.php:115 ../../Zotlabs/Module/New_channel.php:77
#: ../../Zotlabs/Module/New_channel.php:104
-#: ../../Zotlabs/Module/Notifications.php:70 ../../Zotlabs/Module/Page.php:35
+#: ../../Zotlabs/Module/Notifications.php:70
+#: ../../Zotlabs/Module/Photos.php:75 ../../Zotlabs/Module/Page.php:35
#: ../../Zotlabs/Module/Page.php:90 ../../Zotlabs/Module/Pdledit.php:26
-#: ../../Zotlabs/Module/Photos.php:74 ../../Zotlabs/Module/Poke.php:137
-#: ../../Zotlabs/Module/Profile.php:68 ../../Zotlabs/Module/Profile.php:76
+#: ../../Zotlabs/Module/Poke.php:137 ../../Zotlabs/Module/Profile.php:68
+#: ../../Zotlabs/Module/Profile.php:76 ../../Zotlabs/Module/Profiles.php:203
+#: ../../Zotlabs/Module/Profiles.php:601
#: ../../Zotlabs/Module/Profile_photo.php:256
#: ../../Zotlabs/Module/Profile_photo.php:269
-#: ../../Zotlabs/Module/Profiles.php:202 ../../Zotlabs/Module/Profiles.php:600
-#: ../../Zotlabs/Module/Rate.php:115 ../../Zotlabs/Module/Register.php:77
-#: ../../Zotlabs/Module/Regmod.php:21
+#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Appman.php:75
+#: ../../Zotlabs/Module/Register.php:77 ../../Zotlabs/Module/Regmod.php:21
#: ../../Zotlabs/Module/Service_limits.php:11
-#: ../../Zotlabs/Module/Settings.php:570 ../../Zotlabs/Module/Setup.php:238
+#: ../../Zotlabs/Module/Settings.php:572 ../../Zotlabs/Module/Setup.php:215
#: ../../Zotlabs/Module/Sharedwithme.php:11
-#: ../../Zotlabs/Module/Sources.php:70 ../../Zotlabs/Module/Suggest.php:30
+#: ../../Zotlabs/Module/Sources.php:74 ../../Zotlabs/Module/Suggest.php:30
#: ../../Zotlabs/Module/Thing.php:274 ../../Zotlabs/Module/Thing.php:294
#: ../../Zotlabs/Module/Thing.php:331
-#: ../../Zotlabs/Module/Viewconnections.php:26
-#: ../../Zotlabs/Module/Viewconnections.php:31
-#: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Webpages.php:73
-#: ../../include/chat.php:133 ../../include/attach.php:141
-#: ../../include/attach.php:189 ../../include/attach.php:252
-#: ../../include/attach.php:266 ../../include/attach.php:273
-#: ../../include/attach.php:338 ../../include/attach.php:352
-#: ../../include/attach.php:359 ../../include/attach.php:437
-#: ../../include/attach.php:895 ../../include/attach.php:966
-#: ../../include/attach.php:1118 ../../include/items.php:4671
-#: ../../include/photos.php:29 ../../index.php:174
+#: ../../Zotlabs/Module/Viewconnections.php:25
+#: ../../Zotlabs/Module/Viewconnections.php:30
+#: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Webpages.php:74
+#: ../../Zotlabs/Lib/Chatroom.php:137 ../../include/items.php:3438
+#: ../../include/attach.php:141 ../../include/attach.php:189
+#: ../../include/attach.php:252 ../../include/attach.php:266
+#: ../../include/attach.php:273 ../../include/attach.php:338
+#: ../../include/attach.php:352 ../../include/attach.php:359
+#: ../../include/attach.php:437 ../../include/attach.php:895
+#: ../../include/attach.php:966 ../../include/attach.php:1118
+#: ../../include/photos.php:27
msgid "Permission denied."
msgstr "Toegang geweigerd."
@@ -225,30 +231,30 @@ msgid "Not Found"
msgstr "Niet gevonden"
#: ../../Zotlabs/Web/Router.php:149 ../../Zotlabs/Module/Block.php:79
-#: ../../Zotlabs/Module/Display.php:121 ../../Zotlabs/Module/Help.php:97
+#: ../../Zotlabs/Module/Display.php:117 ../../Zotlabs/Module/Help.php:97
#: ../../Zotlabs/Module/Page.php:93
msgid "Page not found."
msgstr "Pagina niet gevonden."
-#: ../../Zotlabs/Zot/Auth.php:140
+#: ../../Zotlabs/Zot/Auth.php:138
msgid ""
"Remote authentication blocked. You are logged into this site locally. Please"
" logout and retry."
msgstr "Authenticatie op afstand geblokkeerd. Je bent lokaal op deze hub ingelogd. Uitloggen en opnieuw proberen."
-#: ../../Zotlabs/Zot/Auth.php:248 ../../Zotlabs/Module/Openid.php:76
+#: ../../Zotlabs/Zot/Auth.php:246 ../../Zotlabs/Module/Openid.php:76
#: ../../Zotlabs/Module/Openid.php:183
#, php-format
msgid "Welcome %s. Remote authentication successful."
msgstr "Welkom %s. Authenticatie op afstand geslaagd."
#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Blocks.php:33
-#: ../../Zotlabs/Module/Connect.php:17 ../../Zotlabs/Module/Editblock.php:33
+#: ../../Zotlabs/Module/Connect.php:17 ../../Zotlabs/Module/Editblock.php:31
#: ../../Zotlabs/Module/Editlayout.php:31
-#: ../../Zotlabs/Module/Editwebpage.php:32
-#: ../../Zotlabs/Module/Filestorage.php:58 ../../Zotlabs/Module/Hcard.php:12
-#: ../../Zotlabs/Module/Layouts.php:33 ../../Zotlabs/Module/Profile.php:20
-#: ../../Zotlabs/Module/Webpages.php:33 ../../include/identity.php:830
+#: ../../Zotlabs/Module/Editwebpage.php:33
+#: ../../Zotlabs/Module/Filestorage.php:60 ../../Zotlabs/Module/Hcard.php:12
+#: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Profile.php:20
+#: ../../Zotlabs/Module/Webpages.php:34 ../../include/channel.php:837
msgid "Requested profile is not available."
msgstr "Opgevraagd profiel is niet beschikbaar"
@@ -256,1546 +262,296 @@ msgstr "Opgevraagd profiel is niet beschikbaar"
msgid "Some blurb about what to do when you're new here"
msgstr "Welkom op $Projectname. Klik op de tab ontdekken of klik rechtsboven op de <a href=\"directory\">kanalengids</a>, om kanalen te vinden. Rechtsboven vind je ook <a href=\"directory\">apps</a>, waar je vrijwel alle functies van $Projectname kunt vinden. Voor <a href=\"directory\">hulp</a> met $Projectname klik je op het vraagteken."
-#: ../../Zotlabs/Module/Acl.php:225
-msgid "network"
-msgstr "netwerk"
-
-#: ../../Zotlabs/Module/Acl.php:235
-msgid "RSS"
-msgstr "RSS"
-
-#: ../../Zotlabs/Module/Admin.php:58
-msgid "Theme settings updated."
-msgstr "Thema-instellingen bijgewerkt."
-
-#: ../../Zotlabs/Module/Admin.php:145 ../../Zotlabs/Module/Admin.php:1197
-#: ../../Zotlabs/Module/Admin.php:1442 ../../Zotlabs/Module/Display.php:44
-#: ../../Zotlabs/Module/Filestorage.php:31 ../../Zotlabs/Module/Thing.php:89
-#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:4592
-msgid "Item not found."
-msgstr "Item niet gevonden."
-
-#: ../../Zotlabs/Module/Admin.php:178
-msgid "# Accounts"
-msgstr "# accounts"
-
-#: ../../Zotlabs/Module/Admin.php:179
-msgid "# blocked accounts"
-msgstr "# geblokkeerde accounts"
-
-#: ../../Zotlabs/Module/Admin.php:180
-msgid "# expired accounts"
-msgstr "# verlopen accounts"
-
-#: ../../Zotlabs/Module/Admin.php:181
-msgid "# expiring accounts"
-msgstr "# accounts die nog moeten verlopen"
-
-#: ../../Zotlabs/Module/Admin.php:192
-msgid "# Channels"
-msgstr "# Kanalen"
-
-#: ../../Zotlabs/Module/Admin.php:193
-msgid "# primary"
-msgstr "# primair"
-
-#: ../../Zotlabs/Module/Admin.php:194
-msgid "# clones"
-msgstr "# klonen"
-
-#: ../../Zotlabs/Module/Admin.php:200
-msgid "Message queues"
-msgstr "Berichtenwachtrij"
-
-#: ../../Zotlabs/Module/Admin.php:216 ../../Zotlabs/Module/Admin.php:462
-#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:717
-#: ../../Zotlabs/Module/Admin.php:992 ../../Zotlabs/Module/Admin.php:1156
-#: ../../Zotlabs/Module/Admin.php:1271 ../../Zotlabs/Module/Admin.php:1332
-#: ../../Zotlabs/Module/Admin.php:1493 ../../Zotlabs/Module/Admin.php:1527
-#: ../../Zotlabs/Module/Admin.php:1612
-msgid "Administration"
-msgstr "Beheer"
-
-#: ../../Zotlabs/Module/Admin.php:217
-msgid "Summary"
-msgstr "Samenvatting"
-
-#: ../../Zotlabs/Module/Admin.php:220
-msgid "Registered accounts"
-msgstr "Geregistreerde accounts"
-
-#: ../../Zotlabs/Module/Admin.php:221 ../../Zotlabs/Module/Admin.php:681
-msgid "Pending registrations"
-msgstr "Accounts die op goedkeuring wachten"
-
-#: ../../Zotlabs/Module/Admin.php:222
-msgid "Registered channels"
-msgstr "Geregistreerde kanalen"
-
-#: ../../Zotlabs/Module/Admin.php:223 ../../Zotlabs/Module/Admin.php:682
-msgid "Active plugins"
-msgstr "Ingeschakelde plugins"
-
-#: ../../Zotlabs/Module/Admin.php:224
-msgid "Version"
-msgstr "Versie"
-
-#: ../../Zotlabs/Module/Admin.php:345
-msgid "Site settings updated."
-msgstr "Hub-instellingen bijgewerkt."
-
-#: ../../Zotlabs/Module/Admin.php:372 ../../include/comanche.php:34
-msgid "Default"
-msgstr "Standaard"
-
-#: ../../Zotlabs/Module/Admin.php:382 ../../Zotlabs/Module/Settings.php:796
-msgid "mobile"
-msgstr "mobiel"
-
-#: ../../Zotlabs/Module/Admin.php:384
-msgid "experimental"
-msgstr "experimenteel"
-
-#: ../../Zotlabs/Module/Admin.php:386
-msgid "unsupported"
-msgstr "Niet ondersteund"
-
-#: ../../Zotlabs/Module/Admin.php:431 ../../Zotlabs/Module/Api.php:89
-#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Connedit.php:657
-#: ../../Zotlabs/Module/Events.php:458 ../../Zotlabs/Module/Events.php:459
-#: ../../Zotlabs/Module/Events.php:468
-#: ../../Zotlabs/Module/Filestorage.php:155
-#: ../../Zotlabs/Module/Filestorage.php:163 ../../Zotlabs/Module/Menu.php:100
-#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
-#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
-#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:665
-#: ../../Zotlabs/Module/Profiles.php:651 ../../Zotlabs/Module/Removeme.php:64
-#: ../../Zotlabs/Module/Settings.php:579 ../../include/dir_fns.php:141
-#: ../../include/dir_fns.php:142 ../../include/dir_fns.php:143
-#: ../../view/theme/redbasic/php/config.php:105
-#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1619
-msgid "No"
-msgstr "Nee"
-
-#: ../../Zotlabs/Module/Admin.php:432
-msgid "Yes - with approval"
-msgstr "Ja - met goedkeuring"
-
-#: ../../Zotlabs/Module/Admin.php:433 ../../Zotlabs/Module/Api.php:88
-#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Events.php:458
-#: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:468
-#: ../../Zotlabs/Module/Filestorage.php:155
-#: ../../Zotlabs/Module/Filestorage.php:163 ../../Zotlabs/Module/Menu.php:100
-#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
-#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
-#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:665
-#: ../../Zotlabs/Module/Profiles.php:651 ../../Zotlabs/Module/Removeme.php:64
-#: ../../Zotlabs/Module/Settings.php:579 ../../include/dir_fns.php:141
-#: ../../include/dir_fns.php:142 ../../include/dir_fns.php:143
-#: ../../view/theme/redbasic/php/config.php:105
-#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1619
-msgid "Yes"
-msgstr "Ja"
-
-#: ../../Zotlabs/Module/Admin.php:438
-msgid "My site is not a public server"
-msgstr "Mijn $Projectname-hub is niet openbaar"
-
-#: ../../Zotlabs/Module/Admin.php:439
-msgid "My site has paid access only"
-msgstr "Mijn $Projectname-hub kent alleen betaalde toegang"
-
-#: ../../Zotlabs/Module/Admin.php:440
-msgid "My site has free access only"
-msgstr "Mijn $Projectname-hub kent alleen gratis toegang"
-
-#: ../../Zotlabs/Module/Admin.php:441
-msgid "My site offers free accounts with optional paid upgrades"
-msgstr "Mijn $Projectname-hub biedt gratis accounts aan met betaalde uitbreidingen als optie"
-
-#: ../../Zotlabs/Module/Admin.php:463 ../../include/widgets.php:1334
-msgid "Site"
-msgstr "Hub-instellingen"
-
-#: ../../Zotlabs/Module/Admin.php:464 ../../Zotlabs/Module/Admin.php:654
-#: ../../Zotlabs/Module/Admin.php:729 ../../Zotlabs/Module/Admin.php:994
-#: ../../Zotlabs/Module/Admin.php:1158 ../../Zotlabs/Module/Admin.php:1334
-#: ../../Zotlabs/Module/Admin.php:1529 ../../Zotlabs/Module/Admin.php:1614
-#: ../../Zotlabs/Module/Admin.php:1778 ../../Zotlabs/Module/Appman.php:103
-#: ../../Zotlabs/Module/Cal.php:341 ../../Zotlabs/Module/Chat.php:194
-#: ../../Zotlabs/Module/Chat.php:236 ../../Zotlabs/Module/Connect.php:97
-#: ../../Zotlabs/Module/Connedit.php:734 ../../Zotlabs/Module/Events.php:472
-#: ../../Zotlabs/Module/Events.php:669
-#: ../../Zotlabs/Module/Filestorage.php:160
-#: ../../Zotlabs/Module/Fsuggest.php:112 ../../Zotlabs/Module/Group.php:85
-#: ../../Zotlabs/Module/Import.php:546
-#: ../../Zotlabs/Module/Import_items.php:120
-#: ../../Zotlabs/Module/Invite.php:146 ../../Zotlabs/Module/Locs.php:121
-#: ../../Zotlabs/Module/Mail.php:384 ../../Zotlabs/Module/Mitem.php:235
-#: ../../Zotlabs/Module/Mood.php:139 ../../Zotlabs/Module/Pconfig.php:107
-#: ../../Zotlabs/Module/Pdledit.php:66 ../../Zotlabs/Module/Photos.php:676
-#: ../../Zotlabs/Module/Photos.php:1051 ../../Zotlabs/Module/Photos.php:1091
-#: ../../Zotlabs/Module/Photos.php:1209 ../../Zotlabs/Module/Poke.php:186
-#: ../../Zotlabs/Module/Profiles.php:691 ../../Zotlabs/Module/Rate.php:172
-#: ../../Zotlabs/Module/Settings.php:588 ../../Zotlabs/Module/Settings.php:701
-#: ../../Zotlabs/Module/Settings.php:729 ../../Zotlabs/Module/Settings.php:752
-#: ../../Zotlabs/Module/Settings.php:840
-#: ../../Zotlabs/Module/Settings.php:1032 ../../Zotlabs/Module/Setup.php:335
-#: ../../Zotlabs/Module/Setup.php:376 ../../Zotlabs/Module/Sources.php:108
-#: ../../Zotlabs/Module/Sources.php:142 ../../Zotlabs/Module/Thing.php:316
-#: ../../Zotlabs/Module/Thing.php:362 ../../Zotlabs/Module/Xchan.php:15
-#: ../../include/ItemObject.php:703 ../../include/widgets.php:708
-#: ../../include/widgets.php:720 ../../include/js_strings.php:22
-#: ../../view/theme/redbasic/php/config.php:99
-msgid "Submit"
-msgstr "Opslaan"
-
-#: ../../Zotlabs/Module/Admin.php:465 ../../Zotlabs/Module/Register.php:245
-msgid "Registration"
-msgstr "Registratie"
-
-#: ../../Zotlabs/Module/Admin.php:466
-msgid "File upload"
-msgstr "Bestand uploaden"
-
-#: ../../Zotlabs/Module/Admin.php:467
-msgid "Policies"
-msgstr "Beleid"
-
-#: ../../Zotlabs/Module/Admin.php:468 ../../include/contact_widgets.php:19
-msgid "Advanced"
-msgstr "Geavanceerd"
-
-#: ../../Zotlabs/Module/Admin.php:472
-msgid "Site name"
-msgstr "Naam van deze $Projectname-hub"
-
-#: ../../Zotlabs/Module/Admin.php:473
-msgid "Banner/Logo"
-msgstr "Banner/logo"
-
-#: ../../Zotlabs/Module/Admin.php:474
-msgid "Administrator Information"
-msgstr "Informatie over de beheerder van deze hub"
-
-#: ../../Zotlabs/Module/Admin.php:474
-msgid ""
-"Contact information for site administrators. Displayed on siteinfo page. "
-"BBCode can be used here"
-msgstr "Contactinformatie voor hub-beheerders. Getoond op pagina met hub-informatie. Er kan hier bbcode gebruikt worden."
-
-#: ../../Zotlabs/Module/Admin.php:475
-msgid "System language"
-msgstr "Standaardtaal"
-
-#: ../../Zotlabs/Module/Admin.php:476
-msgid "System theme"
-msgstr "Standaardthema"
-
-#: ../../Zotlabs/Module/Admin.php:476
-msgid ""
-"Default system theme - may be over-ridden by user profiles - <a href='#' "
-"id='cnftheme'>change theme settings</a>"
-msgstr "Standaardthema voor $Projectname-hub (kan door lid veranderd worden) - <a href='#' id='cnftheme'>verander thema-instellingen</a>"
-
-#: ../../Zotlabs/Module/Admin.php:477
-msgid "Mobile system theme"
-msgstr "Standaardthema voor mobiel"
-
-#: ../../Zotlabs/Module/Admin.php:477
-msgid "Theme for mobile devices"
-msgstr "Thema voor mobiele apparaten"
-
-#: ../../Zotlabs/Module/Admin.php:479
-msgid "Allow Feeds as Connections"
-msgstr "Sta feeds toe als connecties"
-
-#: ../../Zotlabs/Module/Admin.php:479
-msgid "(Heavy system resource usage)"
-msgstr "(sterk negatieve invloed op systeembronnen hub)"
-
-#: ../../Zotlabs/Module/Admin.php:480
-msgid "Maximum image size"
-msgstr "Maximale grootte van afbeeldingen"
-
-#: ../../Zotlabs/Module/Admin.php:480
-msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
-msgstr "Maximale grootte in bytes voor afbeeldingen die worden geüpload. Standaard is 0, wat geen limiet betekend."
-
-#: ../../Zotlabs/Module/Admin.php:481
-msgid "Does this site allow new member registration?"
-msgstr "Staat deze hub nieuwe accounts toe?"
-
-#: ../../Zotlabs/Module/Admin.php:482
-msgid "Invitation only"
-msgstr "Alleen op uitnodiging"
-
-#: ../../Zotlabs/Module/Admin.php:482
-msgid ""
-"Only allow new member registrations with an invitation code. Above register "
-"policy must be set to Yes."
-msgstr "Sta alleen nieuwe registraties toe van mensen die een uitnodigingscode hebben. Bovenstaand accountbeleid moet op Ja staan."
-
-#: ../../Zotlabs/Module/Admin.php:483
-msgid "Which best describes the types of account offered by this hub?"
-msgstr "Wat voor soort accounts biedt deze $Projectname-hub aan? Kies wat het meest in de buurt komt."
-
-#: ../../Zotlabs/Module/Admin.php:484
-msgid "Register text"
-msgstr "Tekst tijdens registratie"
-
-#: ../../Zotlabs/Module/Admin.php:484
-msgid "Will be displayed prominently on the registration page."
-msgstr "Tekst dat op de pagina voor het registreren van nieuwe accounts wordt getoond."
-
-#: ../../Zotlabs/Module/Admin.php:485
-msgid "Site homepage to show visitors (default: login box)"
-msgstr "Homepagina van deze hub die aan bezoekers wordt getoond (standaard: inlogformulier)"
-
-#: ../../Zotlabs/Module/Admin.php:485
-msgid ""
-"example: 'public' to show public stream, 'page/sys/home' to show a system "
-"webpage called 'home' or 'include:home.html' to include a file."
-msgstr "voorbeeld: 'public' om de openbare stream te tonen, 'page/sys/home' om de webpagina 'home' van het systeemkanaal te tonen of 'include:home.html' om een gewoon bestand te gebruiken."
-
-#: ../../Zotlabs/Module/Admin.php:486
-msgid "Preserve site homepage URL"
-msgstr "Behoudt de URL van de hub (/)"
-
-#: ../../Zotlabs/Module/Admin.php:486
-msgid ""
-"Present the site homepage in a frame at the original location instead of "
-"redirecting"
-msgstr "Toon de homepagina van de hub in een frame op de oorspronkelijke locatie (/), i.p.v. een doorverwijzing naar een andere locatie (bv. .../home.html)"
-
-#: ../../Zotlabs/Module/Admin.php:487
-msgid "Accounts abandoned after x days"
-msgstr "Accounts als verlaten beschouwen na zoveel aantal dagen:"
-
-#: ../../Zotlabs/Module/Admin.php:487
-msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
-msgstr "Zal geen systeembronnen verspillen door polling van externe hubs voor verlaten accounts. Vul 0 in voor geen tijdslimiet."
-
-#: ../../Zotlabs/Module/Admin.php:488
-msgid "Allowed friend domains"
-msgstr "Toegestane domeinen"
-
-#: ../../Zotlabs/Module/Admin.php:488
-msgid ""
-"Comma separated list of domains which are allowed to establish friendships "
-"with this site. Wildcards are accepted. Empty to allow any domains"
-msgstr "Komma-gescheiden lijst van domeinen waarvan kanalen connecties kunnen aangaan met kanalen op deze $Projectname-hub. Wildcards zijn toegestaan.\nLaat leeg om alle domeinen toe te laten."
-
-#: ../../Zotlabs/Module/Admin.php:489
-msgid "Allowed email domains"
-msgstr "Toegestane e-maildomeinen"
-
-#: ../../Zotlabs/Module/Admin.php:489
-msgid ""
-"Comma separated list of domains which are allowed in email addresses for "
-"registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains"
-msgstr "Door komma's gescheiden lijst met e-maildomeinen waarvan e-mailadressen op deze hub mogen registeren. Wildcards zijn toegestaan. Laat leeg om alle domeinen toe te laten."
-
-#: ../../Zotlabs/Module/Admin.php:490
-msgid "Not allowed email domains"
-msgstr "Niet toegestane e-maildomeinen"
-
-#: ../../Zotlabs/Module/Admin.php:490
-msgid ""
-"Comma separated list of domains which are not allowed in email addresses for"
-" registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains, unless allowed domains have been defined."
-msgstr "Door komma's gescheiden lijst met e-maildomeinen waarvan e-mailadressen niet op deze hub mogen registeren. Wildcards zijn toegestaan. Laat leeg om alle domeinen toe te staan, tenzij er toegestane domeinen zijn ingesteld. "
-
-#: ../../Zotlabs/Module/Admin.php:491
-msgid "Verify Email Addresses"
-msgstr "E-mailadres verifieren"
-
-#: ../../Zotlabs/Module/Admin.php:491
-msgid ""
-"Check to verify email addresses used in account registration (recommended)."
-msgstr "Inschakelen om e-mailadressen te verifiëren die tijdens de accountregistratie worden gebruikt (aanbevolen)."
-
-#: ../../Zotlabs/Module/Admin.php:492
-msgid "Force publish"
-msgstr "Dwing kanaalvermelding af"
-
-#: ../../Zotlabs/Module/Admin.php:492
-msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
-msgstr "Vink dit aan om af te dwingen dat alle kanalen op deze hub in de kanalengids worden vermeld."
-
-#: ../../Zotlabs/Module/Admin.php:493
-msgid "Import Public Streams"
-msgstr "Openbare streams importeren"
-
-#: ../../Zotlabs/Module/Admin.php:493
-msgid ""
-"Import and allow access to public content pulled from other sites. Warning: "
-"this content is unmoderated."
-msgstr "Toegang verlenen tot openbare berichten die vanuit andere hubs worden geïmporteerd. Waarschuwing: de inhoud van deze berichten wordt niet gemodereerd."
-
-#: ../../Zotlabs/Module/Admin.php:494
-msgid "Login on Homepage"
-msgstr "Inlogformulier op de homepagina"
-
-#: ../../Zotlabs/Module/Admin.php:494
-msgid ""
-"Present a login box to visitors on the home page if no other content has "
-"been configured."
-msgstr "Toon een inlogformulier voor bezoekers op de homepagina wanneer geen andere inhoud is geconfigureerd. "
-
-#: ../../Zotlabs/Module/Admin.php:495
-msgid "Enable context help"
-msgstr "Schakel contextuele hulp in"
-
-#: ../../Zotlabs/Module/Admin.php:495
-msgid ""
-"Display contextual help for the current page when the help button is "
-"pressed."
-msgstr "Toon hulp en documentatie voor de op dat moment getoonde pagina, wanneer op de hulp-knop wordt geklikt."
-
-#: ../../Zotlabs/Module/Admin.php:497
-msgid "Directory Server URL"
-msgstr "Server-URL voor de kanalengids"
-
-#: ../../Zotlabs/Module/Admin.php:497
-msgid "Default directory server"
-msgstr "Standaardserver voor de kanalengids"
-
-#: ../../Zotlabs/Module/Admin.php:499
-msgid "Proxy user"
-msgstr "Gebruikersnaam proxy"
-
-#: ../../Zotlabs/Module/Admin.php:500
-msgid "Proxy URL"
-msgstr "Proxy-URL"
-
-#: ../../Zotlabs/Module/Admin.php:501
-msgid "Network timeout"
-msgstr "Netwerktimeout"
-
-#: ../../Zotlabs/Module/Admin.php:501
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
-msgstr "Waarde is in seconden. Zet op 0 voor onbeperkt (niet aanbevolen)"
-
-#: ../../Zotlabs/Module/Admin.php:502
-msgid "Delivery interval"
-msgstr "Afleveringsinterval"
-
-#: ../../Zotlabs/Module/Admin.php:502
-msgid ""
-"Delay background delivery processes by this many seconds to reduce system "
-"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
-"for large dedicated servers."
-msgstr "Vertraag de achtergrondprocessen voor het afleveren met een aantal seconden om de systeembelasting te verminderen. Aanbevolen: 4-5 voor shared hosts, 2-3 voor virtual private servers (VPS) en 0-1 voor grote dedicated servers."
-
-#: ../../Zotlabs/Module/Admin.php:503
-msgid "Deliveries per process"
-msgstr "Leveringen per serverproces"
-
-#: ../../Zotlabs/Module/Admin.php:503
-msgid ""
-"Number of deliveries to attempt in a single operating system process. Adjust"
-" if necessary to tune system performance. Recommend: 1-5."
-msgstr "Aantal leveringen die aan één serverproces worden meegegeven. Pas dit aan wanneer het nodig is om systeemprestaties te verbeteren. Aangeraden: 1-5"
-
-#: ../../Zotlabs/Module/Admin.php:504
-msgid "Poll interval"
-msgstr "Poll-interval"
-
-#: ../../Zotlabs/Module/Admin.php:504
-msgid ""
-"Delay background polling processes by this many seconds to reduce system "
-"load. If 0, use delivery interval."
-msgstr "De achtergrondprocessen voor het afleveren met zoveel seconden vertragen om de systeembelasting te verminderen. 0 om de afleveringsinterval te gebruiken."
-
-#: ../../Zotlabs/Module/Admin.php:505
-msgid "Maximum Load Average"
-msgstr "Maximaal gemiddelde systeembelasting"
-
-#: ../../Zotlabs/Module/Admin.php:505
-msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
-msgstr "Maximale systeembelasting voordat de afleverings- en polllingsprocessen worden uitgesteld. Standaard is 50."
-
-#: ../../Zotlabs/Module/Admin.php:506
-msgid "Expiration period in days for imported (grid/network) content"
-msgstr "Aantal dagen waarna geïmporteerde inhoud uit iemands grid/netwerk-pagina wordt verwijderd."
-
-#: ../../Zotlabs/Module/Admin.php:506
-msgid "0 for no expiration of imported content"
-msgstr "Dit geldt alleen voor inhoud van andere kanalen, dus niet voor iemands eigen kanaal. 0 voor het niet verwijderen van geïmporteerde inhoud."
-
-#: ../../Zotlabs/Module/Admin.php:643 ../../Zotlabs/Module/Admin.php:644
-#: ../../Zotlabs/Module/Settings.php:720
-msgid "Off"
-msgstr "Uit"
-
-#: ../../Zotlabs/Module/Admin.php:643 ../../Zotlabs/Module/Admin.php:644
-#: ../../Zotlabs/Module/Settings.php:720
-msgid "On"
-msgstr "Aan"
-
-#: ../../Zotlabs/Module/Admin.php:644
-#, php-format
-msgid "Lock feature %s"
-msgstr " Vergrendel de functie '%s'"
-
-#: ../../Zotlabs/Module/Admin.php:652
-msgid "Manage Additional Features"
-msgstr "Beheer - Extra functies"
-
-#: ../../Zotlabs/Module/Admin.php:669
-msgid "No server found"
-msgstr "Geen hub gevonden"
-
-#: ../../Zotlabs/Module/Admin.php:676 ../../Zotlabs/Module/Admin.php:1006
-msgid "ID"
-msgstr "ID"
-
-#: ../../Zotlabs/Module/Admin.php:676
-msgid "for channel"
-msgstr "voor kanaal"
-
-#: ../../Zotlabs/Module/Admin.php:676
-msgid "on server"
-msgstr "op hub"
-
-#: ../../Zotlabs/Module/Admin.php:676 ../../Zotlabs/Module/Connections.php:270
-msgid "Status"
-msgstr "Status"
-
-#: ../../Zotlabs/Module/Admin.php:678
-msgid "Server"
-msgstr "Hubbeheer"
-
-#: ../../Zotlabs/Module/Admin.php:718 ../../include/widgets.php:1337
-msgid "Security"
-msgstr "Beveiliging"
-
-#: ../../Zotlabs/Module/Admin.php:720
-msgid "Block public"
-msgstr "Openbare toegang blokkeren"
-
-#: ../../Zotlabs/Module/Admin.php:720
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently authenticated."
-msgstr "Vink dit aan om alle normaliter openbare persoonlijke pagina's op deze hub alleen toegankelijk te maken voor leden die zich hebben geauthenticeerd."
-
-#: ../../Zotlabs/Module/Admin.php:721
-msgid "Allow communications only from these sites"
-msgstr "Alleen communicatie met deze hubs toestaan"
-
-#: ../../Zotlabs/Module/Admin.php:721
-msgid ""
-"One site per line. Leave empty to allow communication from anywhere by "
-"default"
-msgstr "Eén hub per regel. Laat leeg om communicatie standaard met alle hubs toe te staan"
-
-#: ../../Zotlabs/Module/Admin.php:722
-msgid "Block communications from these sites"
-msgstr "Communicatie met deze hubs blokkeren"
-
-#: ../../Zotlabs/Module/Admin.php:723
-msgid "Allow communications only from these channels"
-msgstr "Sta alleen communicatie toe met deze kanalen"
-
-#: ../../Zotlabs/Module/Admin.php:723
-msgid ""
-"One channel (hash) per line. Leave empty to allow from any channel by "
-"default"
-msgstr "Eén kanaal (hash) per regel. Laat leeg om communicatie standaard met alle kanalen toe te staan"
-
-#: ../../Zotlabs/Module/Admin.php:724
-msgid "Block communications from these channels"
-msgstr "Communicatie met deze kanalen blokkeren"
-
-#: ../../Zotlabs/Module/Admin.php:725
-msgid "Allow embedded HTML content only from these domains"
-msgstr "Alleen ingesloten (embedded) HTML vanaf deze domeinen toestaan"
-
-#: ../../Zotlabs/Module/Admin.php:725
-msgid "One site per line. Leave empty to allow from any site by default"
-msgstr "Eén per regel. Laat leeg om standaard vanaf elk domein toe te staan"
-
-#: ../../Zotlabs/Module/Admin.php:726
-msgid "Block embedded HTML from these domains"
-msgstr "Ingesloten (embedded) HTML vanaf deze domeinen blokkeren"
-
-#: ../../Zotlabs/Module/Admin.php:743
-msgid "Update has been marked successful"
-msgstr "Update is als succesvol gemarkeerd"
-
-#: ../../Zotlabs/Module/Admin.php:753
-#, php-format
-msgid "Executing %s failed. Check system logs."
-msgstr "Uitvoeren van %s is mislukt. Controleer systeemlogboek."
-
-#: ../../Zotlabs/Module/Admin.php:756
-#, php-format
-msgid "Update %s was successfully applied."
-msgstr "Update %s was geslaagd."
-
-#: ../../Zotlabs/Module/Admin.php:760
-#, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
-msgstr "Update %s gaf geen melding. Het is daarom niet bekend of deze geslaagd is."
-
-#: ../../Zotlabs/Module/Admin.php:763
-#, php-format
-msgid "Update function %s could not be found."
-msgstr "Update-functie %s kon niet gevonden worden."
-
-#: ../../Zotlabs/Module/Admin.php:779
-msgid "No failed updates."
-msgstr "Geen mislukte updates."
-
-#: ../../Zotlabs/Module/Admin.php:783
-msgid "Failed Updates"
-msgstr "Mislukte updates"
-
-#: ../../Zotlabs/Module/Admin.php:785
-msgid "Mark success (if update was manually applied)"
-msgstr "Markeer als geslaagd (wanneer de update handmatig was uitgevoerd)"
-
-#: ../../Zotlabs/Module/Admin.php:786
-msgid "Attempt to execute this update step automatically"
-msgstr "Poging om deze stap van de update automatisch uit te voeren."
-
-#: ../../Zotlabs/Module/Admin.php:817
-msgid "Queue Statistics"
-msgstr "Wachtrij-statistieken"
-
-#: ../../Zotlabs/Module/Admin.php:818
-msgid "Total Entries"
-msgstr "Aantal vermeldingen"
-
-#: ../../Zotlabs/Module/Admin.php:819
-msgid "Priority"
-msgstr "Prioriteit"
-
-#: ../../Zotlabs/Module/Admin.php:820
-msgid "Destination URL"
-msgstr "Doel-URL"
-
-#: ../../Zotlabs/Module/Admin.php:821
-msgid "Mark hub permanently offline"
-msgstr "Hub als permanent offline markeren"
-
-#: ../../Zotlabs/Module/Admin.php:822
-msgid "Empty queue for this hub"
-msgstr "Berichtenwachtrij voor deze hub legen"
-
-#: ../../Zotlabs/Module/Admin.php:823
-msgid "Last known contact"
-msgstr "Voor het laatst contact"
-
-#: ../../Zotlabs/Module/Admin.php:859
-#, php-format
-msgid "%s account blocked/unblocked"
-msgid_plural "%s account blocked/unblocked"
-msgstr[0] "%s account geblokkeerd/gedeblokkeerd"
-msgstr[1] "%s accounts geblokkeerd/gedeblokkeerd"
-
-#: ../../Zotlabs/Module/Admin.php:867
-#, php-format
-msgid "%s account deleted"
-msgid_plural "%s accounts deleted"
-msgstr[0] "%s account verwijderd"
-msgstr[1] "%s accounts verwijderd"
-
-#: ../../Zotlabs/Module/Admin.php:903
-msgid "Account not found"
-msgstr "Account niet gevonden"
-
-#: ../../Zotlabs/Module/Admin.php:915
-#, php-format
-msgid "Account '%s' deleted"
-msgstr "Account '%s' verwijderd"
-
-#: ../../Zotlabs/Module/Admin.php:923
-#, php-format
-msgid "Account '%s' blocked"
-msgstr "Account '%s' geblokkeerd"
-
-#: ../../Zotlabs/Module/Admin.php:931
-#, php-format
-msgid "Account '%s' unblocked"
-msgstr "Account '%s' gedeblokkeerd"
-
-#: ../../Zotlabs/Module/Admin.php:993 ../../Zotlabs/Module/Admin.php:1005
-msgid "Users"
-msgstr "Accounts"
-
-#: ../../Zotlabs/Module/Admin.php:995 ../../Zotlabs/Module/Admin.php:1159
-msgid "select all"
-msgstr "alles selecteren"
-
-#: ../../Zotlabs/Module/Admin.php:996
-msgid "User registrations waiting for confirm"
-msgstr "Accounts die op goedkeuring wachten"
-
-#: ../../Zotlabs/Module/Admin.php:997
-msgid "Request date"
-msgstr "Tijd/datum verzoek"
-
-#: ../../Zotlabs/Module/Admin.php:997 ../../Zotlabs/Module/Admin.php:1006
-#: ../../Zotlabs/Module/Id.php:17 ../../Zotlabs/Module/Id.php:18
-#: ../../include/contact_selectors.php:81 ../../boot.php:1617
-msgid "Email"
-msgstr "E-mail"
-
-#: ../../Zotlabs/Module/Admin.php:998
-msgid "No registrations."
-msgstr "Geen verzoeken."
-
-#: ../../Zotlabs/Module/Admin.php:999 ../../Zotlabs/Module/Connections.php:275
-msgid "Approve"
-msgstr "Goedkeuren"
-
-#: ../../Zotlabs/Module/Admin.php:1000
-msgid "Deny"
-msgstr "Afkeuren"
-
-#: ../../Zotlabs/Module/Admin.php:1002 ../../Zotlabs/Module/Connedit.php:541
-msgid "Block"
-msgstr "Blokkeren"
-
-#: ../../Zotlabs/Module/Admin.php:1003 ../../Zotlabs/Module/Connedit.php:541
-msgid "Unblock"
-msgstr "Deblokkeren"
-
-#: ../../Zotlabs/Module/Admin.php:1006 ../../include/group.php:267
-msgid "All Channels"
-msgstr "Alle kanalen"
-
-#: ../../Zotlabs/Module/Admin.php:1006
-msgid "Register date"
-msgstr "Geregistreerd"
-
-#: ../../Zotlabs/Module/Admin.php:1006
-msgid "Last login"
-msgstr "Laatste keer ingelogd"
-
-#: ../../Zotlabs/Module/Admin.php:1006
-msgid "Expires"
-msgstr "Verloopt"
-
-#: ../../Zotlabs/Module/Admin.php:1006
-msgid "Service Class"
-msgstr "Abonnementen"
-
-#: ../../Zotlabs/Module/Admin.php:1008
-msgid ""
-"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
-" on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Geselecteerde accounts (met bijbehorende kanalen) worden verwijderd!\\n\\nAlles wat deze accounts op deze hub hebben gepubliceerd wordt definitief verwijderd!\\n\\Weet je het zeker?"
-
-#: ../../Zotlabs/Module/Admin.php:1009
-msgid ""
-"The account {0} will be deleted!\\n\\nEverything this account has posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Account {0} (met bijbehorende kanalen) wordt verwijderd !\\n\\nAlles wat dit account op deze hub heeft gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?"
-
-#: ../../Zotlabs/Module/Admin.php:1045
-#, php-format
-msgid "%s channel censored/uncensored"
-msgid_plural "%s channels censored/uncensored"
-msgstr[0] "%s kanaal gecensureerd/ongecensureerd"
-msgstr[1] "%s kanalen gecensureerd/ongecensureerd"
-
-#: ../../Zotlabs/Module/Admin.php:1054
-#, php-format
-msgid "%s channel code allowed/disallowed"
-msgid_plural "%s channels code allowed/disallowed"
-msgstr[0] "Scripts toegestaan/niet toegestaan voor %s kanaal"
-msgstr[1] "Scripts toegestaan/niet toegestaan voor %s kanalen"
-
-#: ../../Zotlabs/Module/Admin.php:1061
-#, php-format
-msgid "%s channel deleted"
-msgid_plural "%s channels deleted"
-msgstr[0] "%s kanaal verwijderd"
-msgstr[1] "%s kanalen verwijderd"
-
-#: ../../Zotlabs/Module/Admin.php:1081
-msgid "Channel not found"
-msgstr "Kanaal niet gevonden"
-
-#: ../../Zotlabs/Module/Admin.php:1092
-#, php-format
-msgid "Channel '%s' deleted"
-msgstr "Kanaal '%s' verwijderd"
-
-#: ../../Zotlabs/Module/Admin.php:1104
-#, php-format
-msgid "Channel '%s' censored"
-msgstr "Kanaal '%s' gecensureerd"
-
-#: ../../Zotlabs/Module/Admin.php:1104
-#, php-format
-msgid "Channel '%s' uncensored"
-msgstr "Kanaal '%s' ongecensureerd"
-
-#: ../../Zotlabs/Module/Admin.php:1115
-#, php-format
-msgid "Channel '%s' code allowed"
-msgstr "Scripts toegestaan voor kanaal '%s'"
-
-#: ../../Zotlabs/Module/Admin.php:1115
-#, php-format
-msgid "Channel '%s' code disallowed"
-msgstr "Scripts niet toegestaan voor kanaal '%s'"
-
-#: ../../Zotlabs/Module/Admin.php:1157 ../../include/widgets.php:1336
-msgid "Channels"
-msgstr "Kanalen"
-
-#: ../../Zotlabs/Module/Admin.php:1161
-msgid "Censor"
-msgstr "Censureren"
-
-#: ../../Zotlabs/Module/Admin.php:1162
-msgid "Uncensor"
-msgstr "Niet censureren"
-
-#: ../../Zotlabs/Module/Admin.php:1163
-msgid "Allow Code"
-msgstr "Scripts toestaan"
-
-#: ../../Zotlabs/Module/Admin.php:1164
-msgid "Disallow Code"
-msgstr "Scripts niet toestaan"
-
-#: ../../Zotlabs/Module/Admin.php:1165 ../../include/conversation.php:1629
-msgid "Channel"
-msgstr "Kanaal"
-
-#: ../../Zotlabs/Module/Admin.php:1166
-msgid "UID"
-msgstr "UID"
-
-#: ../../Zotlabs/Module/Admin.php:1166 ../../Zotlabs/Module/Locs.php:118
-#: ../../Zotlabs/Module/Profiles.php:469
-msgid "Address"
-msgstr "Kanaaladres"
-
-#: ../../Zotlabs/Module/Admin.php:1168
-msgid ""
-"Selected channels will be deleted!\\n\\nEverything that was posted in these "
-"channels on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Geselecteerde kanalen worden verwijderd!\\n\\nAlles wat in deze kanalen op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?"
-
-#: ../../Zotlabs/Module/Admin.php:1169
-msgid ""
-"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
-"channel on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Kanaal {0} wordt verwijderd!\\n\\nAlles wat in dit kanaal op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?"
-
-#: ../../Zotlabs/Module/Admin.php:1226
-#, php-format
-msgid "Plugin %s disabled."
-msgstr "Plugin %s uitgeschakeld."
-
-#: ../../Zotlabs/Module/Admin.php:1230
-#, php-format
-msgid "Plugin %s enabled."
-msgstr "Plugin %s ingeschakeld"
-
-#: ../../Zotlabs/Module/Admin.php:1240 ../../Zotlabs/Module/Admin.php:1466
-msgid "Disable"
-msgstr "Uitschakelen"
-
-#: ../../Zotlabs/Module/Admin.php:1243 ../../Zotlabs/Module/Admin.php:1468
-msgid "Enable"
-msgstr "Inschakelen"
-
-#: ../../Zotlabs/Module/Admin.php:1272 ../../Zotlabs/Module/Admin.php:1333
-#: ../../include/widgets.php:1339
-msgid "Plugins"
-msgstr "Plugins"
-
-#: ../../Zotlabs/Module/Admin.php:1273 ../../Zotlabs/Module/Admin.php:1495
-msgid "Toggle"
-msgstr "Omschakelen"
-
-#: ../../Zotlabs/Module/Admin.php:1274 ../../Zotlabs/Module/Admin.php:1496
-#: ../../include/apps.php:134 ../../include/widgets.php:589
-#: ../../include/nav.php:208
-msgid "Settings"
-msgstr "Instellingen"
-
-#: ../../Zotlabs/Module/Admin.php:1281 ../../Zotlabs/Module/Admin.php:1505
-msgid "Author: "
-msgstr "Auteur: "
-
-#: ../../Zotlabs/Module/Admin.php:1282 ../../Zotlabs/Module/Admin.php:1506
-msgid "Maintainer: "
-msgstr "Beheerder: "
-
-#: ../../Zotlabs/Module/Admin.php:1283
-msgid "Minimum project version: "
-msgstr "Minimum versie Hubzilla: "
-
-#: ../../Zotlabs/Module/Admin.php:1284
-msgid "Maximum project version: "
-msgstr "Maximum versie Hubzilla:"
-
-#: ../../Zotlabs/Module/Admin.php:1285
-msgid "Minimum PHP version: "
-msgstr "Minimum versie PHP: "
-
-#: ../../Zotlabs/Module/Admin.php:1286
-msgid "Requires: "
-msgstr "Vereist: "
-
-#: ../../Zotlabs/Module/Admin.php:1287 ../../Zotlabs/Module/Admin.php:1338
-msgid "Disabled - version incompatibility"
-msgstr "Uitgeschakeld - versie is incompatibel"
-
-#: ../../Zotlabs/Module/Admin.php:1431
-msgid "No themes found."
-msgstr "Geen thema's gevonden"
-
-#: ../../Zotlabs/Module/Admin.php:1487
-msgid "Screenshot"
-msgstr "Schermafdruk"
-
-#: ../../Zotlabs/Module/Admin.php:1494 ../../Zotlabs/Module/Admin.php:1528
-#: ../../include/widgets.php:1340
-msgid "Themes"
-msgstr "Thema's"
-
-#: ../../Zotlabs/Module/Admin.php:1533
-msgid "[Experimental]"
-msgstr "[Experimenteel]"
-
-#: ../../Zotlabs/Module/Admin.php:1534
-msgid "[Unsupported]"
-msgstr "[Niet ondersteund]"
-
-#: ../../Zotlabs/Module/Admin.php:1558
-msgid "Log settings updated."
-msgstr "Logboek-instellingen bijgewerkt."
-
-#: ../../Zotlabs/Module/Admin.php:1613 ../../include/widgets.php:1361
-#: ../../include/widgets.php:1371
-msgid "Logs"
-msgstr "Logboeken"
-
-#: ../../Zotlabs/Module/Admin.php:1615
-msgid "Clear"
-msgstr "Leegmaken"
-
-#: ../../Zotlabs/Module/Admin.php:1621
-msgid "Debugging"
-msgstr "Debuggen"
-
-#: ../../Zotlabs/Module/Admin.php:1622
-msgid "Log file"
-msgstr "Logbestand"
-
-#: ../../Zotlabs/Module/Admin.php:1622
-msgid ""
-"Must be writable by web server. Relative to your Red top-level directory."
-msgstr "Moet door de webserver beschrijfbaar zijn. Relatief ten opzichte van de bovenste map van je $Projectname-installatie."
-
-#: ../../Zotlabs/Module/Admin.php:1623
-msgid "Log level"
-msgstr "Logniveau"
-
-#: ../../Zotlabs/Module/Admin.php:1690
-msgid "New Profile Field"
-msgstr "Nieuw profielveld"
-
-#: ../../Zotlabs/Module/Admin.php:1691 ../../Zotlabs/Module/Admin.php:1711
-msgid "Field nickname"
-msgstr "Bijnaam voor veld"
-
-#: ../../Zotlabs/Module/Admin.php:1691 ../../Zotlabs/Module/Admin.php:1711
-msgid "System name of field"
-msgstr "Systeemnaam voor veld"
-
-#: ../../Zotlabs/Module/Admin.php:1692 ../../Zotlabs/Module/Admin.php:1712
-msgid "Input type"
-msgstr "Invoertype"
-
-#: ../../Zotlabs/Module/Admin.php:1693 ../../Zotlabs/Module/Admin.php:1713
-msgid "Field Name"
-msgstr "Veldnaam"
-
-#: ../../Zotlabs/Module/Admin.php:1693 ../../Zotlabs/Module/Admin.php:1713
-msgid "Label on profile pages"
-msgstr "Tekstlabel voor op profielpagina's"
-
-#: ../../Zotlabs/Module/Admin.php:1694 ../../Zotlabs/Module/Admin.php:1714
-msgid "Help text"
-msgstr "Helptekst"
-
-#: ../../Zotlabs/Module/Admin.php:1694 ../../Zotlabs/Module/Admin.php:1714
-msgid "Additional info (optional)"
-msgstr "Extra informatie (optioneel)"
-
-#: ../../Zotlabs/Module/Admin.php:1695 ../../Zotlabs/Module/Admin.php:1715
-#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Rbmark.php:32
-#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/text.php:905
-#: ../../include/text.php:917 ../../include/widgets.php:201
-msgid "Save"
-msgstr "Opslaan"
-
-#: ../../Zotlabs/Module/Admin.php:1704
-msgid "Field definition not found"
-msgstr "Velddefinitie niet gevonden"
-
-#: ../../Zotlabs/Module/Admin.php:1710
-msgid "Edit Profile Field"
-msgstr "Profielveld bewerken"
-
-#: ../../Zotlabs/Module/Admin.php:1768 ../../include/widgets.php:1342
-msgid "Profile Fields"
-msgstr "Profielvelden"
-
-#: ../../Zotlabs/Module/Admin.php:1769
-msgid "Basic Profile Fields"
-msgstr "Standaard profielvelden"
-
-#: ../../Zotlabs/Module/Admin.php:1770
-msgid "Advanced Profile Fields"
-msgstr "Geavanceerde profielvelden"
-
-#: ../../Zotlabs/Module/Admin.php:1770
-msgid "(In addition to basic fields)"
-msgstr "(als toevoeging op de standaard velden)"
-
-#: ../../Zotlabs/Module/Admin.php:1772
-msgid "All available fields"
-msgstr "Alle beschikbare velden"
-
-#: ../../Zotlabs/Module/Admin.php:1773
-msgid "Custom Fields"
-msgstr "Extra (handmatig toegevoegde) velden"
-
-#: ../../Zotlabs/Module/Admin.php:1777
-msgid "Create Custom Field"
-msgstr "Extra velden aanmaken"
-
-#: ../../Zotlabs/Module/Api.php:61 ../../Zotlabs/Module/Api.php:85
-msgid "Authorize application connection"
-msgstr "Geef toestemming voor applicatiekoppeling"
-
-#: ../../Zotlabs/Module/Api.php:62
-msgid "Return to your app and insert this Securty Code:"
-msgstr "Ga terug naar je app en voeg deze beveiligingscode in:"
-
-#: ../../Zotlabs/Module/Api.php:72
-msgid "Please login to continue."
-msgstr "Inloggen om verder te kunnen gaan."
-
-#: ../../Zotlabs/Module/Api.php:87
-msgid ""
-"Do you want to authorize this application to access your posts and contacts,"
-" and/or create new posts for you?"
-msgstr "Wil je deze applicatie toestemming geven om jouw berichten en connecties te zien, en/of nieuwe berichten voor jou te plaatsen?"
-
-#: ../../Zotlabs/Module/Appman.php:32 ../../Zotlabs/Module/Appman.php:48
-msgid "App installed."
-msgstr "App geïnstalleerd"
-
-#: ../../Zotlabs/Module/Appman.php:41
-msgid "Malformed app."
-msgstr "Misvormde app."
-
-#: ../../Zotlabs/Module/Appman.php:84
-msgid "Embed code"
-msgstr "Insluitcode"
-
-#: ../../Zotlabs/Module/Appman.php:90
-msgid "Edit App"
-msgstr "App bewerken"
-
-#: ../../Zotlabs/Module/Appman.php:90
-msgid "Create App"
-msgstr "App maken"
-
-#: ../../Zotlabs/Module/Appman.php:95
-msgid "Name of app"
-msgstr "Naam van app"
-
-#: ../../Zotlabs/Module/Appman.php:95 ../../Zotlabs/Module/Appman.php:96
-#: ../../Zotlabs/Module/Events.php:448 ../../Zotlabs/Module/Events.php:453
-#: ../../Zotlabs/Module/Profiles.php:713 ../../Zotlabs/Module/Profiles.php:717
-#: ../../include/datetime.php:246
-msgid "Required"
-msgstr "Vereist"
-
-#: ../../Zotlabs/Module/Appman.php:96
-msgid "Location (URL) of app"
-msgstr "Locatie (URL) van app"
-
-#: ../../Zotlabs/Module/Appman.php:97 ../../Zotlabs/Module/Events.php:461
-#: ../../Zotlabs/Module/Rbmark.php:101
-msgid "Description"
-msgstr "Omschrijving"
-
-#: ../../Zotlabs/Module/Appman.php:98
-msgid "Photo icon URL"
-msgstr "URL van pictogram"
-
-#: ../../Zotlabs/Module/Appman.php:98
-msgid "80 x 80 pixels - optional"
-msgstr "80 x 80 pixels (optioneel)"
-
-#: ../../Zotlabs/Module/Appman.php:99
-msgid "Version ID"
-msgstr "Versie-ID"
-
-#: ../../Zotlabs/Module/Appman.php:100
-msgid "Price of app"
-msgstr "Prijs van de app"
-
-#: ../../Zotlabs/Module/Appman.php:101
-msgid "Location (URL) to purchase app"
-msgstr "Locatie (URL) om de app aan te schaffen"
-
-#: ../../Zotlabs/Module/Apps.php:40 ../../include/widgets.php:102
-#: ../../include/nav.php:163
-msgid "Apps"
-msgstr "Apps"
-
-#: ../../Zotlabs/Module/Attach.php:13
-msgid "Item not available."
-msgstr "Item is niet aanwezig."
-
-#: ../../Zotlabs/Module/Block.php:31 ../../Zotlabs/Module/Page.php:40
-msgid "Invalid item."
-msgstr "Ongeldig item."
-
-#: ../../Zotlabs/Module/Block.php:43 ../../Zotlabs/Module/Cal.php:65
-#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Wall_upload.php:33
-msgid "Channel not found."
-msgstr "Kanaal niet gevonden."
-
-#: ../../Zotlabs/Module/Blocks.php:99 ../../Zotlabs/Module/Blocks.php:154
+#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:152
+#: ../../Zotlabs/Module/Editblock.php:108
msgid "Block Name"
msgstr "Bloknaam"
-#: ../../Zotlabs/Module/Blocks.php:153 ../../include/text.php:2251
+#: ../../Zotlabs/Module/Blocks.php:151 ../../include/text.php:2265
msgid "Blocks"
msgstr "Blokken"
-#: ../../Zotlabs/Module/Blocks.php:155
+#: ../../Zotlabs/Module/Blocks.php:153
msgid "Block Title"
msgstr "Bloktitel"
-#: ../../Zotlabs/Module/Blocks.php:156 ../../Zotlabs/Module/Layouts.php:186
-#: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Webpages.php:200
+#: ../../Zotlabs/Module/Blocks.php:154 ../../Zotlabs/Module/Layouts.php:188
+#: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Webpages.php:198
#: ../../include/page_widgets.php:44
msgid "Created"
msgstr "Aangemaakt"
-#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/Layouts.php:187
-#: ../../Zotlabs/Module/Menu.php:115 ../../Zotlabs/Module/Webpages.php:201
+#: ../../Zotlabs/Module/Blocks.php:155 ../../Zotlabs/Module/Layouts.php:189
+#: ../../Zotlabs/Module/Menu.php:115 ../../Zotlabs/Module/Webpages.php:199
#: ../../include/page_widgets.php:45
msgid "Edited"
msgstr "Bewerkt"
-#: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Layouts.php:189
-#: ../../Zotlabs/Module/Photos.php:1071 ../../Zotlabs/Module/Webpages.php:190
-#: ../../include/conversation.php:1209
+#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:191
+#: ../../Zotlabs/Module/Photos.php:1072 ../../Zotlabs/Module/Webpages.php:188
+#: ../../include/conversation.php:1208
msgid "Share"
msgstr "Delen"
-#: ../../Zotlabs/Module/Blocks.php:165 ../../Zotlabs/Module/Layouts.php:193
-#: ../../Zotlabs/Module/Pubsites.php:46 ../../Zotlabs/Module/Webpages.php:195
+#: ../../Zotlabs/Module/Blocks.php:163 ../../Zotlabs/Module/Layouts.php:195
+#: ../../Zotlabs/Module/Pubsites.php:47 ../../Zotlabs/Module/Webpages.php:193
#: ../../include/page_widgets.php:39
msgid "View"
msgstr "Weergeven"
-#: ../../Zotlabs/Module/Bookmarks.php:53
-msgid "Bookmark added"
-msgstr "Bladwijzer toegevoegd"
-
-#: ../../Zotlabs/Module/Bookmarks.php:75
-msgid "My Bookmarks"
-msgstr "Mijn bladwijzers"
-
-#: ../../Zotlabs/Module/Bookmarks.php:86
-msgid "My Connections Bookmarks"
-msgstr "Bladwijzers van mijn connecties"
-
-#: ../../Zotlabs/Module/Cal.php:41 ../../Zotlabs/Module/Photos.php:45
-#: ../../include/js_strings.php:13
-msgid "everybody"
-msgstr "iedereen"
+#: ../../Zotlabs/Module/Cal.php:62 ../../Zotlabs/Module/Block.php:43
+#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Wall_upload.php:33
+msgid "Channel not found."
+msgstr "Kanaal niet gevonden."
-#: ../../Zotlabs/Module/Cal.php:72
+#: ../../Zotlabs/Module/Cal.php:69
msgid "Permissions denied."
msgstr "Permissies niet toegestaan"
-#: ../../Zotlabs/Module/Cal.php:262 ../../Zotlabs/Module/Events.php:585
+#: ../../Zotlabs/Module/Cal.php:259 ../../Zotlabs/Module/Events.php:588
msgid "l, F j"
msgstr "l j F"
-#: ../../Zotlabs/Module/Cal.php:311 ../../Zotlabs/Module/Events.php:634
-#: ../../include/text.php:1714
+#: ../../Zotlabs/Module/Cal.php:308 ../../Zotlabs/Module/Events.php:637
+#: ../../include/text.php:1732
msgid "Link to Source"
msgstr "Originele locatie"
-#: ../../Zotlabs/Module/Cal.php:334 ../../Zotlabs/Module/Events.php:662
+#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:665
msgid "Edit Event"
msgstr "Gebeurtenis bewerken"
-#: ../../Zotlabs/Module/Cal.php:334 ../../Zotlabs/Module/Events.php:662
+#: ../../Zotlabs/Module/Cal.php:331 ../../Zotlabs/Module/Events.php:665
msgid "Create Event"
msgstr "Gebeurtenis aanmaken"
-#: ../../Zotlabs/Module/Cal.php:335 ../../Zotlabs/Module/Cal.php:342
-#: ../../Zotlabs/Module/Events.php:663 ../../Zotlabs/Module/Events.php:670
-#: ../../Zotlabs/Module/Photos.php:948
+#: ../../Zotlabs/Module/Cal.php:332 ../../Zotlabs/Module/Cal.php:339
+#: ../../Zotlabs/Module/Events.php:666 ../../Zotlabs/Module/Events.php:673
+#: ../../Zotlabs/Module/Photos.php:949
msgid "Previous"
msgstr "Vorige"
-#: ../../Zotlabs/Module/Cal.php:336 ../../Zotlabs/Module/Cal.php:343
-#: ../../Zotlabs/Module/Events.php:664 ../../Zotlabs/Module/Events.php:671
-#: ../../Zotlabs/Module/Photos.php:957 ../../Zotlabs/Module/Setup.php:290
+#: ../../Zotlabs/Module/Cal.php:333 ../../Zotlabs/Module/Cal.php:340
+#: ../../Zotlabs/Module/Events.php:667 ../../Zotlabs/Module/Events.php:674
+#: ../../Zotlabs/Module/Photos.php:958 ../../Zotlabs/Module/Setup.php:267
msgid "Next"
msgstr "Volgende"
-#: ../../Zotlabs/Module/Cal.php:337 ../../Zotlabs/Module/Events.php:665
-#: ../../include/widgets.php:706
+#: ../../Zotlabs/Module/Cal.php:334 ../../Zotlabs/Module/Events.php:668
+#: ../../include/widgets.php:755
msgid "Export"
msgstr "Exporteren"
-#: ../../Zotlabs/Module/Cal.php:340 ../../Zotlabs/Module/Events.php:668
-#: ../../include/widgets.php:707
+#: ../../Zotlabs/Module/Cal.php:337 ../../Zotlabs/Module/Events.php:671
+#: ../../include/widgets.php:756
msgid "Import"
msgstr "Importeren"
-#: ../../Zotlabs/Module/Cal.php:344 ../../Zotlabs/Module/Events.php:672
+#: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Chat.php:196
+#: ../../Zotlabs/Module/Chat.php:238 ../../Zotlabs/Module/Connect.php:98
+#: ../../Zotlabs/Module/Connedit.php:731 ../../Zotlabs/Module/Events.php:475
+#: ../../Zotlabs/Module/Events.php:672 ../../Zotlabs/Module/Group.php:85
+#: ../../Zotlabs/Module/Filestorage.php:162
+#: ../../Zotlabs/Module/Import.php:550
+#: ../../Zotlabs/Module/Import_items.php:120
+#: ../../Zotlabs/Module/Invite.php:146 ../../Zotlabs/Module/Locs.php:121
+#: ../../Zotlabs/Module/Mail.php:378 ../../Zotlabs/Module/Mood.php:139
+#: ../../Zotlabs/Module/Mitem.php:235 ../../Zotlabs/Module/Photos.php:677
+#: ../../Zotlabs/Module/Photos.php:1052 ../../Zotlabs/Module/Photos.php:1092
+#: ../../Zotlabs/Module/Photos.php:1210 ../../Zotlabs/Module/Pconfig.php:107
+#: ../../Zotlabs/Module/Pdledit.php:66 ../../Zotlabs/Module/Poke.php:186
+#: ../../Zotlabs/Module/Profiles.php:687 ../../Zotlabs/Module/Rate.php:170
+#: ../../Zotlabs/Module/Admin.php:492 ../../Zotlabs/Module/Admin.php:688
+#: ../../Zotlabs/Module/Admin.php:771 ../../Zotlabs/Module/Admin.php:1032
+#: ../../Zotlabs/Module/Admin.php:1211 ../../Zotlabs/Module/Admin.php:1421
+#: ../../Zotlabs/Module/Admin.php:1648 ../../Zotlabs/Module/Admin.php:1733
+#: ../../Zotlabs/Module/Admin.php:2116 ../../Zotlabs/Module/Appman.php:126
+#: ../../Zotlabs/Module/Settings.php:590 ../../Zotlabs/Module/Settings.php:703
+#: ../../Zotlabs/Module/Settings.php:731 ../../Zotlabs/Module/Settings.php:754
+#: ../../Zotlabs/Module/Settings.php:842
+#: ../../Zotlabs/Module/Settings.php:1034 ../../Zotlabs/Module/Setup.php:312
+#: ../../Zotlabs/Module/Setup.php:353 ../../Zotlabs/Module/Sources.php:114
+#: ../../Zotlabs/Module/Sources.php:149 ../../Zotlabs/Module/Thing.php:316
+#: ../../Zotlabs/Module/Thing.php:362 ../../Zotlabs/Module/Xchan.php:15
+#: ../../Zotlabs/Lib/ThreadItem.php:710 ../../include/widgets.php:757
+#: ../../include/widgets.php:769 ../../include/js_strings.php:22
+#: ../../view/theme/redbasic/php/config.php:99
+msgid "Submit"
+msgstr "Opslaan"
+
+#: ../../Zotlabs/Module/Cal.php:341 ../../Zotlabs/Module/Events.php:675
msgid "Today"
msgstr "Vandaag"
-#: ../../Zotlabs/Module/Channel.php:28 ../../Zotlabs/Module/Chat.php:23
+#: ../../Zotlabs/Module/Channel.php:29 ../../Zotlabs/Module/Chat.php:25
msgid "You must be logged in to see this page."
msgstr "Je moet zijn ingelogd om deze pagina te kunnen bekijken."
-#: ../../Zotlabs/Module/Channel.php:40
+#: ../../Zotlabs/Module/Channel.php:41
msgid "Posts and comments"
msgstr "Berichten en reacties"
-#: ../../Zotlabs/Module/Channel.php:41
+#: ../../Zotlabs/Module/Channel.php:42
msgid "Only posts"
msgstr "Alleen berichten"
-#: ../../Zotlabs/Module/Channel.php:101
+#: ../../Zotlabs/Module/Channel.php:102
msgid "Insufficient permissions. Request redirected to profile page."
msgstr "Onvoldoende permissies. Doorgestuurd naar profielpagina."
-#: ../../Zotlabs/Module/Channel.php:135 ../../Zotlabs/Module/Network.php:173
-#: ../../Zotlabs/Module/Rpost.php:118
-msgid "Public"
-msgstr "Openbaar"
-
-#: ../../Zotlabs/Module/Chat.php:179
+#: ../../Zotlabs/Module/Chat.php:181
msgid "Room not found"
msgstr "Chatkanaal niet gevonden"
-#: ../../Zotlabs/Module/Chat.php:195
+#: ../../Zotlabs/Module/Chat.php:197
msgid "Leave Room"
msgstr "Chatkanaal verlaten"
-#: ../../Zotlabs/Module/Chat.php:196
+#: ../../Zotlabs/Module/Chat.php:198
msgid "Delete Room"
msgstr "Chatkanaal verwijderen"
-#: ../../Zotlabs/Module/Chat.php:197
+#: ../../Zotlabs/Module/Chat.php:199
msgid "I am away right now"
msgstr "Ik ben momenteel afwezig"
-#: ../../Zotlabs/Module/Chat.php:198
+#: ../../Zotlabs/Module/Chat.php:200
msgid "I am online"
msgstr "Ik ben online"
-#: ../../Zotlabs/Module/Chat.php:200
+#: ../../Zotlabs/Module/Chat.php:202
msgid "Bookmark this room"
msgstr "Chatkanaal aan bladwijzers toevoegen"
-#: ../../Zotlabs/Module/Chat.php:203 ../../Zotlabs/Module/Mail.php:206
-#: ../../Zotlabs/Module/Mail.php:320 ../../include/conversation.php:1170
+#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Mail.php:205
+#: ../../Zotlabs/Module/Mail.php:314 ../../include/conversation.php:1176
msgid "Please enter a link URL:"
msgstr "Vul een URL in:"
-#: ../../Zotlabs/Module/Chat.php:204 ../../Zotlabs/Module/Editpost.php:163
-#: ../../Zotlabs/Module/Mail.php:259 ../../Zotlabs/Module/Mail.php:389
-#: ../../include/ItemObject.php:715 ../../include/conversation.php:1274
+#: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Module/Mail.php:258
+#: ../../Zotlabs/Module/Mail.php:383 ../../Zotlabs/Lib/ThreadItem.php:722
+#: ../../include/conversation.php:1256
msgid "Encrypt text"
msgstr "Tekst versleutelen"
-#: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Editblock.php:148
-#: ../../Zotlabs/Module/Editlayout.php:147
-#: ../../Zotlabs/Module/Editpost.php:126
-#: ../../Zotlabs/Module/Editwebpage.php:188 ../../Zotlabs/Module/Mail.php:253
-#: ../../Zotlabs/Module/Mail.php:383 ../../include/conversation.php:1225
+#: ../../Zotlabs/Module/Chat.php:207 ../../Zotlabs/Module/Editblock.php:111
+#: ../../Zotlabs/Module/Editwebpage.php:147 ../../Zotlabs/Module/Mail.php:252
+#: ../../Zotlabs/Module/Mail.php:377 ../../include/conversation.php:1143
msgid "Insert web link"
msgstr "Weblink invoegen"
-#: ../../Zotlabs/Module/Chat.php:216
+#: ../../Zotlabs/Module/Chat.php:218
msgid "Feature disabled."
msgstr "Functie uitgeschakeld."
-#: ../../Zotlabs/Module/Chat.php:230
+#: ../../Zotlabs/Module/Chat.php:232
msgid "New Chatroom"
msgstr "Nieuw chatkanaal"
-#: ../../Zotlabs/Module/Chat.php:231
+#: ../../Zotlabs/Module/Chat.php:233
msgid "Chatroom name"
msgstr "Naam chatkanaal"
-#: ../../Zotlabs/Module/Chat.php:232
+#: ../../Zotlabs/Module/Chat.php:234
msgid "Expiration of chats (minutes)"
msgstr "Aantal minuten voordat chatberichten worden verwijderd"
-#: ../../Zotlabs/Module/Chat.php:233 ../../Zotlabs/Module/Filestorage.php:151
-#: ../../Zotlabs/Module/Photos.php:670 ../../Zotlabs/Module/Photos.php:1044
+#: ../../Zotlabs/Module/Chat.php:235 ../../Zotlabs/Module/Filestorage.php:153
+#: ../../Zotlabs/Module/Photos.php:671 ../../Zotlabs/Module/Photos.php:1045
#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:359
-#: ../../include/acl_selectors.php:251
+#: ../../include/acl_selectors.php:283
msgid "Permissions"
msgstr "Permissies"
-#: ../../Zotlabs/Module/Chat.php:244
+#: ../../Zotlabs/Module/Chat.php:246
#, php-format
msgid "%1$s's Chatrooms"
msgstr "Chatkanalen van %1$s"
-#: ../../Zotlabs/Module/Chat.php:249
+#: ../../Zotlabs/Module/Chat.php:251
msgid "No chatrooms available"
msgstr "Geen chatkanalen beschikbaar"
-#: ../../Zotlabs/Module/Chat.php:250 ../../Zotlabs/Module/Manage.php:141
-#: ../../Zotlabs/Module/Profiles.php:782
+#: ../../Zotlabs/Module/Chat.php:252 ../../Zotlabs/Module/Manage.php:143
+#: ../../Zotlabs/Module/Profiles.php:778
msgid "Create New"
msgstr "Nieuwe aanmaken"
-#: ../../Zotlabs/Module/Chat.php:253
+#: ../../Zotlabs/Module/Chat.php:255
msgid "Expiration"
msgstr "Verloopt na"
-#: ../../Zotlabs/Module/Chat.php:254
+#: ../../Zotlabs/Module/Chat.php:256
msgid "min"
msgstr "min"
-#: ../../Zotlabs/Module/Chatsvc.php:115
+#: ../../Zotlabs/Module/Chatsvc.php:117
msgid "Away"
msgstr "Afwezig"
-#: ../../Zotlabs/Module/Chatsvc.php:120
+#: ../../Zotlabs/Module/Chatsvc.php:122
msgid "Online"
msgstr "Online"
-#: ../../Zotlabs/Module/Common.php:14
-msgid "No channel."
-msgstr "Geen kanaal."
+#: ../../Zotlabs/Module/Block.php:31 ../../Zotlabs/Module/Page.php:40
+msgid "Invalid item."
+msgstr "Ongeldig item."
-#: ../../Zotlabs/Module/Common.php:43
-msgid "Common connections"
-msgstr "Veel voorkomende connecties"
+#: ../../Zotlabs/Module/Bookmarks.php:53
+msgid "Bookmark added"
+msgstr "Bladwijzer toegevoegd"
-#: ../../Zotlabs/Module/Common.php:48
-msgid "No connections in common."
-msgstr "Geen gemeenschappelijke connecties."
+#: ../../Zotlabs/Module/Bookmarks.php:75
+msgid "My Bookmarks"
+msgstr "Mijn bladwijzers"
+
+#: ../../Zotlabs/Module/Bookmarks.php:86
+msgid "My Connections Bookmarks"
+msgstr "Bladwijzers van mijn connecties"
-#: ../../Zotlabs/Module/Connect.php:60 ../../Zotlabs/Module/Connect.php:108
+#: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109
msgid "Continue"
msgstr "Ga verder"
-#: ../../Zotlabs/Module/Connect.php:89
+#: ../../Zotlabs/Module/Connect.php:90
msgid "Premium Channel Setup"
msgstr "Instellen premiumkanaal "
-#: ../../Zotlabs/Module/Connect.php:91
+#: ../../Zotlabs/Module/Connect.php:92
msgid "Enable premium channel connection restrictions"
msgstr "Restricties voor connecties van premiumkanaal toestaan"
-#: ../../Zotlabs/Module/Connect.php:92
+#: ../../Zotlabs/Module/Connect.php:93
msgid ""
"Please enter your restrictions or conditions, such as paypal receipt, usage "
"guidelines, etc."
msgstr "Vul je restricties of voorwaarden in, zoals een paypal-afschrift, voorschriften voor leden, enz."
-#: ../../Zotlabs/Module/Connect.php:94 ../../Zotlabs/Module/Connect.php:114
+#: ../../Zotlabs/Module/Connect.php:95 ../../Zotlabs/Module/Connect.php:115
msgid ""
"This channel may require additional steps or acknowledgement of the "
"following conditions prior to connecting:"
msgstr "Dit kanaal kan extra stappen of het accepteren van de volgende voorwaarden vereisen, voordat de connectie wordt geaccepteerd:"
-#: ../../Zotlabs/Module/Connect.php:95
+#: ../../Zotlabs/Module/Connect.php:96
msgid ""
"Potential connections will then see the following text before proceeding:"
msgstr "Mogelijke connecties zullen dan de volgende tekst zien voordat ze verder kunnen:"
-#: ../../Zotlabs/Module/Connect.php:96 ../../Zotlabs/Module/Connect.php:117
+#: ../../Zotlabs/Module/Connect.php:97 ../../Zotlabs/Module/Connect.php:118
msgid ""
"By continuing, I certify that I have complied with any instructions provided"
" on this page."
msgstr "Door verder te gaan ga ik automatisch akkoord met alle voorwaarden en aanwijzingen op deze pagina."
-#: ../../Zotlabs/Module/Connect.php:105
+#: ../../Zotlabs/Module/Connect.php:106
msgid "(No specific instructions have been provided by the channel owner.)"
msgstr "(Er zijn geen speciale voorwaarden en aanwijzingen door de kanaal-eigenaar verstrekt) "
-#: ../../Zotlabs/Module/Connect.php:113
+#: ../../Zotlabs/Module/Connect.php:114
msgid "Restricted or Premium Channel"
msgstr "Beperkt of premiumkanaal"
-#: ../../Zotlabs/Module/Connections.php:56
-#: ../../Zotlabs/Module/Connections.php:161
-#: ../../Zotlabs/Module/Connections.php:242
-msgid "Blocked"
-msgstr "Geblokkeerd"
-
-#: ../../Zotlabs/Module/Connections.php:61
-#: ../../Zotlabs/Module/Connections.php:168
-#: ../../Zotlabs/Module/Connections.php:241
-msgid "Ignored"
-msgstr "Genegeerd"
-
-#: ../../Zotlabs/Module/Connections.php:66
-#: ../../Zotlabs/Module/Connections.php:182
-#: ../../Zotlabs/Module/Connections.php:240
-msgid "Hidden"
-msgstr "Verborgen"
-
-#: ../../Zotlabs/Module/Connections.php:71
-#: ../../Zotlabs/Module/Connections.php:175
-#: ../../Zotlabs/Module/Connections.php:239
-msgid "Archived"
-msgstr "Gearchiveerd"
-
-#: ../../Zotlabs/Module/Connections.php:76
-#: ../../Zotlabs/Module/Connections.php:86 ../../Zotlabs/Module/Menu.php:116
-#: ../../include/conversation.php:1553
-msgid "New"
-msgstr "Nieuw"
-
-#: ../../Zotlabs/Module/Connections.php:92
-#: ../../Zotlabs/Module/Connections.php:107
-#: ../../Zotlabs/Module/Connedit.php:597 ../../include/widgets.php:448
-msgid "All"
-msgstr "Alles"
-
-#: ../../Zotlabs/Module/Connections.php:138
-msgid "New Connections"
-msgstr "Nieuwe connecties"
-
-#: ../../Zotlabs/Module/Connections.php:141
-msgid "Show pending (new) connections"
-msgstr "Nog te accepteren (nieuwe) connecties weergeven"
-
-#: ../../Zotlabs/Module/Connections.php:145
-#: ../../Zotlabs/Module/Profperm.php:144
-msgid "All Connections"
-msgstr "Alle connecties"
-
-#: ../../Zotlabs/Module/Connections.php:148
-msgid "Show all connections"
-msgstr "Toon alle connecties"
-
-#: ../../Zotlabs/Module/Connections.php:164
-msgid "Only show blocked connections"
-msgstr "Toon alleen geblokkeerde connecties"
-
-#: ../../Zotlabs/Module/Connections.php:171
-msgid "Only show ignored connections"
-msgstr "Toon alleen genegeerde connecties"
-
-#: ../../Zotlabs/Module/Connections.php:178
-msgid "Only show archived connections"
-msgstr "Toon alleen gearchiveerde connecties"
-
-#: ../../Zotlabs/Module/Connections.php:185
-msgid "Only show hidden connections"
-msgstr "Toon alleen verborgen connecties"
-
-#: ../../Zotlabs/Module/Connections.php:238
-msgid "Pending approval"
-msgstr "Moet nog geaccepteerd worden"
-
-#: ../../Zotlabs/Module/Connections.php:254
-#, php-format
-msgid "%1$s [%2$s]"
-msgstr "%1$s [%2$s]"
-
-#: ../../Zotlabs/Module/Connections.php:255
-msgid "Edit connection"
-msgstr "Connectie bewerken"
-
-#: ../../Zotlabs/Module/Connections.php:256
-msgid "Delete connection"
-msgstr "Connectie verwijderen"
-
-#: ../../Zotlabs/Module/Connections.php:265
-msgid "Channel address"
-msgstr "Kanaaladres"
-
-#: ../../Zotlabs/Module/Connections.php:267
-msgid "Network"
-msgstr "Netwerk"
-
-#: ../../Zotlabs/Module/Connections.php:272
-msgid "Connected"
-msgstr "Verbonden"
-
-#: ../../Zotlabs/Module/Connections.php:274
-msgid "Approve connection"
-msgstr "Connectie accepteren"
-
-#: ../../Zotlabs/Module/Connections.php:276
-msgid "Ignore connection"
-msgstr "Connectie negeren"
-
-#: ../../Zotlabs/Module/Connections.php:277
-#: ../../Zotlabs/Module/Connedit.php:549
-#: ../../Zotlabs/Module/Notifications.php:55
-msgid "Ignore"
-msgstr "Negeren"
-
-#: ../../Zotlabs/Module/Connections.php:278
-msgid "Recent activity"
-msgstr "Recente activiteit"
-
-#: ../../Zotlabs/Module/Connections.php:302 ../../include/text.php:834
-#: ../../include/nav.php:186
-msgid "Connections"
-msgstr "Connecties"
-
-#: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44
-#: ../../include/text.php:904 ../../include/text.php:916
-#: ../../include/apps.php:147 ../../include/nav.php:165
-msgid "Search"
-msgstr "Zoeken"
-
-#: ../../Zotlabs/Module/Connections.php:307
-msgid "Search your connections"
-msgstr "Doorzoek jouw connecties"
-
-#: ../../Zotlabs/Module/Connections.php:308
-msgid "Connections search"
-msgstr "Connecties zoeken"
-
-#: ../../Zotlabs/Module/Connections.php:309
-#: ../../Zotlabs/Module/Directory.php:388
-#: ../../Zotlabs/Module/Directory.php:393 ../../include/contact_widgets.php:26
-msgid "Find"
-msgstr "Vinden"
-
#: ../../Zotlabs/Module/Connedit.php:80
msgid "Could not access contact record."
msgstr "Kon geen toegang krijgen tot de connectie-gegevens."
@@ -1816,6 +572,37 @@ msgstr "Bijwerken van connectie-gegevens mislukt."
msgid "is now connected to"
msgstr "is nu verbonden met"
+#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Connedit.php:654
+#: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:460
+#: ../../Zotlabs/Module/Events.php:469 ../../Zotlabs/Module/Api.php:89
+#: ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Menu.php:100
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
+#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Admin.php:459
+#: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707
+msgid "No"
+msgstr "Nee"
+
+#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Events.php:459
+#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:469
+#: ../../Zotlabs/Module/Api.php:88 ../../Zotlabs/Module/Filestorage.php:157
+#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Menu.php:100
+#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Mitem.php:158
+#: ../../Zotlabs/Module/Mitem.php:159 ../../Zotlabs/Module/Mitem.php:232
+#: ../../Zotlabs/Module/Mitem.php:233 ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Profiles.php:647 ../../Zotlabs/Module/Admin.php:461
+#: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581
+#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144
+#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707
+msgid "Yes"
+msgstr "Ja"
+
#: ../../Zotlabs/Module/Connedit.php:411
msgid "Could not access address book record."
msgstr "Kon geen toegang krijgen tot de record van de connectie."
@@ -1830,240 +617,260 @@ msgstr "Vernieuwen mislukt - kanaal is momenteel niet beschikbaar"
msgid "Unable to set address book parameters."
msgstr "Niet in staat om de parameters van connecties in te stellen."
-#: ../../Zotlabs/Module/Connedit.php:504
+#: ../../Zotlabs/Module/Connedit.php:503
msgid "Connection has been removed."
msgstr "Connectie is verwijderd"
-#: ../../Zotlabs/Module/Connedit.php:520 ../../include/conversation.php:959
-#: ../../include/nav.php:86
+#: ../../Zotlabs/Module/Connedit.php:519 ../../Zotlabs/Lib/Apps.php:219
+#: ../../include/nav.php:86 ../../include/conversation.php:954
msgid "View Profile"
msgstr "Profiel weergeven"
-#: ../../Zotlabs/Module/Connedit.php:523
+#: ../../Zotlabs/Module/Connedit.php:522
#, php-format
msgid "View %s's profile"
msgstr "Profiel van %s weergeven"
-#: ../../Zotlabs/Module/Connedit.php:527
+#: ../../Zotlabs/Module/Connedit.php:526
msgid "Refresh Permissions"
msgstr "Permissies vernieuwen"
-#: ../../Zotlabs/Module/Connedit.php:530
+#: ../../Zotlabs/Module/Connedit.php:529
msgid "Fetch updated permissions"
msgstr "Aangepaste permissies ophalen"
-#: ../../Zotlabs/Module/Connedit.php:534
+#: ../../Zotlabs/Module/Connedit.php:533
msgid "Recent Activity"
msgstr "Recente activiteit/berichten"
-#: ../../Zotlabs/Module/Connedit.php:537
+#: ../../Zotlabs/Module/Connedit.php:536
msgid "View recent posts and comments"
msgstr "Recente berichten en reacties weergeven"
-#: ../../Zotlabs/Module/Connedit.php:544
+#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1041
+msgid "Unblock"
+msgstr "Deblokkeren"
+
+#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1040
+msgid "Block"
+msgstr "Blokkeren"
+
+#: ../../Zotlabs/Module/Connedit.php:543
msgid "Block (or Unblock) all communications with this connection"
msgstr "Blokkeer (of deblokkeer) alle communicatie met deze connectie"
-#: ../../Zotlabs/Module/Connedit.php:545
+#: ../../Zotlabs/Module/Connedit.php:544
msgid "This connection is blocked!"
msgstr "Deze connectie is geblokkeerd!"
-#: ../../Zotlabs/Module/Connedit.php:549
+#: ../../Zotlabs/Module/Connedit.php:548
msgid "Unignore"
msgstr "Niet meer negeren"
-#: ../../Zotlabs/Module/Connedit.php:552
+#: ../../Zotlabs/Module/Connedit.php:548
+#: ../../Zotlabs/Module/Connections.php:277
+#: ../../Zotlabs/Module/Notifications.php:55
+msgid "Ignore"
+msgstr "Negeren"
+
+#: ../../Zotlabs/Module/Connedit.php:551
msgid "Ignore (or Unignore) all inbound communications from this connection"
msgstr "Negeer (of negeer niet meer) alle inkomende communicatie van deze connectie"
-#: ../../Zotlabs/Module/Connedit.php:553
+#: ../../Zotlabs/Module/Connedit.php:552
msgid "This connection is ignored!"
msgstr "Deze connectie wordt genegeerd!"
-#: ../../Zotlabs/Module/Connedit.php:557
+#: ../../Zotlabs/Module/Connedit.php:556
msgid "Unarchive"
msgstr "Niet meer archiveren"
-#: ../../Zotlabs/Module/Connedit.php:557
+#: ../../Zotlabs/Module/Connedit.php:556
msgid "Archive"
msgstr "Archiveren"
-#: ../../Zotlabs/Module/Connedit.php:560
+#: ../../Zotlabs/Module/Connedit.php:559
msgid ""
"Archive (or Unarchive) this connection - mark channel dead but keep content"
msgstr "Archiveer (of dearchiveer) deze connectie - markeer het kanaal als dood, maar bewaar de inhoud"
-#: ../../Zotlabs/Module/Connedit.php:561
+#: ../../Zotlabs/Module/Connedit.php:560
msgid "This connection is archived!"
msgstr "Deze connectie is gearchiveerd!"
-#: ../../Zotlabs/Module/Connedit.php:565
+#: ../../Zotlabs/Module/Connedit.php:564
msgid "Unhide"
msgstr "Niet meer verbergen"
-#: ../../Zotlabs/Module/Connedit.php:565
+#: ../../Zotlabs/Module/Connedit.php:564
msgid "Hide"
msgstr "Verbergen"
-#: ../../Zotlabs/Module/Connedit.php:568
+#: ../../Zotlabs/Module/Connedit.php:567
msgid "Hide or Unhide this connection from your other connections"
msgstr "Deze connectie verbergen (of niet meer verbergen) voor jouw andere connecties"
-#: ../../Zotlabs/Module/Connedit.php:569
+#: ../../Zotlabs/Module/Connedit.php:568
msgid "This connection is hidden!"
msgstr "Deze connectie is verborgen!"
-#: ../../Zotlabs/Module/Connedit.php:576
+#: ../../Zotlabs/Module/Connedit.php:575
msgid "Delete this connection"
msgstr "Deze connectie verwijderen"
-#: ../../Zotlabs/Module/Connedit.php:593 ../../include/widgets.php:444
+#: ../../Zotlabs/Module/Connedit.php:590 ../../include/widgets.php:493
msgid "Me"
msgstr "Ik"
-#: ../../Zotlabs/Module/Connedit.php:594 ../../include/widgets.php:445
+#: ../../Zotlabs/Module/Connedit.php:591 ../../include/widgets.php:494
msgid "Family"
msgstr "Familie"
-#: ../../Zotlabs/Module/Connedit.php:595 ../../Zotlabs/Module/Settings.php:340
-#: ../../Zotlabs/Module/Settings.php:344 ../../Zotlabs/Module/Settings.php:345
-#: ../../Zotlabs/Module/Settings.php:348 ../../Zotlabs/Module/Settings.php:359
-#: ../../include/identity.php:389 ../../include/identity.php:390
-#: ../../include/identity.php:397 ../../include/profile_selectors.php:80
-#: ../../include/widgets.php:446
+#: ../../Zotlabs/Module/Connedit.php:592 ../../Zotlabs/Module/Settings.php:342
+#: ../../Zotlabs/Module/Settings.php:346 ../../Zotlabs/Module/Settings.php:347
+#: ../../Zotlabs/Module/Settings.php:350 ../../Zotlabs/Module/Settings.php:361
+#: ../../include/widgets.php:495 ../../include/selectors.php:123
+#: ../../include/channel.php:389 ../../include/channel.php:390
+#: ../../include/channel.php:397
msgid "Friends"
msgstr "Vrienden"
-#: ../../Zotlabs/Module/Connedit.php:596 ../../include/widgets.php:447
+#: ../../Zotlabs/Module/Connedit.php:593 ../../include/widgets.php:496
msgid "Acquaintances"
msgstr "Kennissen"
-#: ../../Zotlabs/Module/Connedit.php:657
+#: ../../Zotlabs/Module/Connedit.php:594
+#: ../../Zotlabs/Module/Connections.php:92
+#: ../../Zotlabs/Module/Connections.php:107 ../../include/widgets.php:497
+msgid "All"
+msgstr "Alles"
+
+#: ../../Zotlabs/Module/Connedit.php:654
msgid "Approve this connection"
msgstr "Deze connectie accepteren"
-#: ../../Zotlabs/Module/Connedit.php:657
+#: ../../Zotlabs/Module/Connedit.php:654
msgid "Accept connection to allow communication"
msgstr "Keur deze connectie goed om communicatie toe te staan"
-#: ../../Zotlabs/Module/Connedit.php:662
+#: ../../Zotlabs/Module/Connedit.php:659
msgid "Set Affinity"
msgstr "Verwantschapsfilter instellen"
-#: ../../Zotlabs/Module/Connedit.php:665
+#: ../../Zotlabs/Module/Connedit.php:662
msgid "Set Profile"
msgstr "Profiel instellen"
-#: ../../Zotlabs/Module/Connedit.php:668
+#: ../../Zotlabs/Module/Connedit.php:665
msgid "Set Affinity & Profile"
msgstr "Verwantschapsfilter en profiel instellen"
-#: ../../Zotlabs/Module/Connedit.php:701
+#: ../../Zotlabs/Module/Connedit.php:698
msgid "none"
msgstr "geen"
-#: ../../Zotlabs/Module/Connedit.php:705 ../../include/widgets.php:565
+#: ../../Zotlabs/Module/Connedit.php:702 ../../include/widgets.php:614
msgid "Connection Default Permissions"
msgstr "Standaard permissies voor connecties"
-#: ../../Zotlabs/Module/Connedit.php:705 ../../include/items.php:5159
+#: ../../Zotlabs/Module/Connedit.php:702 ../../include/items.php:3926
#, php-format
msgid "Connection: %s"
msgstr "Connectie: %s"
-#: ../../Zotlabs/Module/Connedit.php:706
+#: ../../Zotlabs/Module/Connedit.php:703
msgid "Apply these permissions automatically"
msgstr "Deze permissies automatisch toepassen"
-#: ../../Zotlabs/Module/Connedit.php:706
+#: ../../Zotlabs/Module/Connedit.php:703
msgid "Connection requests will be approved without your interaction"
msgstr "Connectieverzoeken zullen automatisch worden geaccepteerd"
-#: ../../Zotlabs/Module/Connedit.php:708
+#: ../../Zotlabs/Module/Connedit.php:705
msgid "This connection's primary address is"
msgstr "Het primaire kanaaladres van deze connectie is"
-#: ../../Zotlabs/Module/Connedit.php:709
+#: ../../Zotlabs/Module/Connedit.php:706
msgid "Available locations:"
msgstr "Beschikbare locaties:"
-#: ../../Zotlabs/Module/Connedit.php:713
+#: ../../Zotlabs/Module/Connedit.php:710
msgid ""
"The permissions indicated on this page will be applied to all new "
"connections."
msgstr "Permissies die op deze pagina staan vermeld worden op alle nieuwe connecties toegepast."
-#: ../../Zotlabs/Module/Connedit.php:714
+#: ../../Zotlabs/Module/Connedit.php:711
msgid "Connection Tools"
msgstr "Hulpmiddelen"
-#: ../../Zotlabs/Module/Connedit.php:716
+#: ../../Zotlabs/Module/Connedit.php:713
msgid "Slide to adjust your degree of friendship"
msgstr "Schuif om te bepalen hoe goed je iemand kent en/of mag"
-#: ../../Zotlabs/Module/Connedit.php:717 ../../Zotlabs/Module/Rate.php:161
+#: ../../Zotlabs/Module/Connedit.php:714 ../../Zotlabs/Module/Rate.php:159
#: ../../include/js_strings.php:20
msgid "Rating"
msgstr "Beoordeling"
-#: ../../Zotlabs/Module/Connedit.php:718
+#: ../../Zotlabs/Module/Connedit.php:715
msgid "Slide to adjust your rating"
msgstr "Gebruik de schuif om je beoordeling te geven"
-#: ../../Zotlabs/Module/Connedit.php:719 ../../Zotlabs/Module/Connedit.php:724
+#: ../../Zotlabs/Module/Connedit.php:716 ../../Zotlabs/Module/Connedit.php:721
msgid "Optionally explain your rating"
msgstr "Verklaar jouw beoordeling (niet verplicht)"
-#: ../../Zotlabs/Module/Connedit.php:721
+#: ../../Zotlabs/Module/Connedit.php:718
msgid "Custom Filter"
msgstr "Berichtenfilter"
-#: ../../Zotlabs/Module/Connedit.php:722
+#: ../../Zotlabs/Module/Connedit.php:719
msgid "Only import posts with this text"
msgstr "Importeer alleen berichten met deze tekst"
-#: ../../Zotlabs/Module/Connedit.php:722 ../../Zotlabs/Module/Connedit.php:723
+#: ../../Zotlabs/Module/Connedit.php:719 ../../Zotlabs/Module/Connedit.php:720
msgid ""
"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
"all posts"
msgstr "woorden (één per regel), #tags, /regex/ of talen (lang=iso639-1) - laat leeg om alle berichten te importeren"
-#: ../../Zotlabs/Module/Connedit.php:723
+#: ../../Zotlabs/Module/Connedit.php:720
msgid "Do not import posts with this text"
msgstr "Importeer geen berichten met deze tekst"
-#: ../../Zotlabs/Module/Connedit.php:725
+#: ../../Zotlabs/Module/Connedit.php:722
msgid "This information is public!"
msgstr "Deze informatie is openbaar!"
-#: ../../Zotlabs/Module/Connedit.php:730
+#: ../../Zotlabs/Module/Connedit.php:727
msgid "Connection Pending Approval"
msgstr "Connectie moet nog geaccepteerd worden"
-#: ../../Zotlabs/Module/Connedit.php:733
+#: ../../Zotlabs/Module/Connedit.php:730
msgid "inherited"
msgstr "geërfd"
-#: ../../Zotlabs/Module/Connedit.php:735
+#: ../../Zotlabs/Module/Connedit.php:732
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr "Kies het profiel dat je aan %s wil tonen wanneer hij/zij ingelogd jouw profiel wil bekijken."
-#: ../../Zotlabs/Module/Connedit.php:737
+#: ../../Zotlabs/Module/Connedit.php:734
msgid "Their Settings"
msgstr "Hun instellingen"
-#: ../../Zotlabs/Module/Connedit.php:738
+#: ../../Zotlabs/Module/Connedit.php:735
msgid "My Settings"
msgstr "Mijn instellingen"
-#: ../../Zotlabs/Module/Connedit.php:740
+#: ../../Zotlabs/Module/Connedit.php:737
msgid "Individual Permissions"
msgstr "Individuele permissies"
-#: ../../Zotlabs/Module/Connedit.php:741
+#: ../../Zotlabs/Module/Connedit.php:738
msgid ""
"Some permissions may be inherited from your channel's <a "
"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
@@ -2071,7 +878,7 @@ msgid ""
" settings here."
msgstr "Sommige permissies worden mogelijk overgeërfd van de <a href=\"settings\">privacy-instellingen</a> van jouw kanaal, die een hogere prioriteit hebben dan deze individuele instellingen. Je kan je deze overgeërfde permissies hier <strong>niet</strong> veranderen."
-#: ../../Zotlabs/Module/Connedit.php:742
+#: ../../Zotlabs/Module/Connedit.php:739
msgid ""
"Some permissions may be inherited from your channel's <a "
"href=\"settings\"><strong>privacy settings</strong></a>, which have higher "
@@ -2079,127 +886,14 @@ msgid ""
"they wont have any impact unless the inherited setting changes."
msgstr "Sommige permissies worden mogelijk overgeërfd van de <a href=\"settings\">privacy-instellingen</a> van jouw kanaal, die een hogere prioriteit hebben dan deze individuele permissies. Je kan de permissies hier veranderen, maar die hebben geen effect, tenzij de overgeërfde permissies worden veranderd. "
-#: ../../Zotlabs/Module/Connedit.php:743
+#: ../../Zotlabs/Module/Connedit.php:740
msgid "Last update:"
msgstr "Laatste wijziging:"
-#: ../../Zotlabs/Module/Cover_photo.php:58
-#: ../../Zotlabs/Module/Profile_photo.php:79
-msgid "Image uploaded but image cropping failed."
-msgstr "Afbeelding geüpload, maar afbeelding kon niet worden bijgesneden. "
-
-#: ../../Zotlabs/Module/Cover_photo.php:134
-#: ../../Zotlabs/Module/Cover_photo.php:181
-msgid "Cover Photos"
-msgstr "Omslagfoto's"
-
-#: ../../Zotlabs/Module/Cover_photo.php:154
-#: ../../Zotlabs/Module/Profile_photo.php:133
-msgid "Image resize failed."
-msgstr "Afbeelding kon niet van grootte veranderd worden."
-
-#: ../../Zotlabs/Module/Cover_photo.php:168
-#: ../../Zotlabs/Module/Profile_photo.php:192 ../../include/photos.php:146
-msgid "Unable to process image"
-msgstr "Afbeelding kan niet verwerkt worden"
-
-#: ../../Zotlabs/Module/Cover_photo.php:192
-#: ../../Zotlabs/Module/Profile_photo.php:217
-msgid "Image upload failed."
-msgstr "Uploaden afbeelding mislukt"
-
-#: ../../Zotlabs/Module/Cover_photo.php:210
-#: ../../Zotlabs/Module/Profile_photo.php:236
-msgid "Unable to process image."
-msgstr "Niet in staat om afbeelding te verwerken."
-
-#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:5587
-msgid "female"
-msgstr "vrouw"
-
-#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:5588
-#, php-format
-msgid "%1$s updated her %2$s"
-msgstr "%1$s heeft haar %2$s bijgewerkt"
-
-#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:5589
-msgid "male"
-msgstr "man"
-
-#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:5590
-#, php-format
-msgid "%1$s updated his %2$s"
-msgstr "%1$s heeft zijn %2$s bijgewerkt"
-
-#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:5592
-#, php-format
-msgid "%1$s updated their %2$s"
-msgstr "De %2$s van %1$s is bijgewerkt"
-
-#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/identity.php:1800
-msgid "cover photo"
-msgstr "omslagfoto"
-
-#: ../../Zotlabs/Module/Cover_photo.php:303
-#: ../../Zotlabs/Module/Cover_photo.php:318
-#: ../../Zotlabs/Module/Profile_photo.php:283
-#: ../../Zotlabs/Module/Profile_photo.php:324
-msgid "Photo not available."
-msgstr "Foto niet beschikbaar."
-
-#: ../../Zotlabs/Module/Cover_photo.php:354
-#: ../../Zotlabs/Module/Profile_photo.php:365
-msgid "Upload File:"
-msgstr "Bestand uploaden:"
-
-#: ../../Zotlabs/Module/Cover_photo.php:355
-#: ../../Zotlabs/Module/Profile_photo.php:366
-msgid "Select a profile:"
-msgstr "Kies een profiel:"
-
-#: ../../Zotlabs/Module/Cover_photo.php:356
-msgid "Upload Cover Photo"
-msgstr "Omslagfoto uploaden"
-
-#: ../../Zotlabs/Module/Cover_photo.php:361
-#: ../../Zotlabs/Module/Profile_photo.php:374
-#: ../../Zotlabs/Module/Settings.php:983
-msgid "or"
-msgstr "of"
-
-#: ../../Zotlabs/Module/Cover_photo.php:361
-#: ../../Zotlabs/Module/Profile_photo.php:374
-msgid "skip this step"
-msgstr "sla deze stap over"
-
-#: ../../Zotlabs/Module/Cover_photo.php:361
-#: ../../Zotlabs/Module/Profile_photo.php:374
-msgid "select a photo from your photo albums"
-msgstr "Kies een foto uit jouw fotoalbums"
-
-#: ../../Zotlabs/Module/Cover_photo.php:377
-#: ../../Zotlabs/Module/Profile_photo.php:390
-msgid "Crop Image"
-msgstr "Afbeelding bijsnijden"
-
-#: ../../Zotlabs/Module/Cover_photo.php:378
-#: ../../Zotlabs/Module/Profile_photo.php:391
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Snij de afbeelding zo uit dat deze optimaal wordt weergegeven."
-
-#: ../../Zotlabs/Module/Cover_photo.php:380
-#: ../../Zotlabs/Module/Profile_photo.php:393
-msgid "Done Editing"
-msgstr "Klaar met bewerken"
-
-#: ../../Zotlabs/Module/Dav.php:127
-msgid "$Projectname channel"
-msgstr "$Projectname-kanaal"
-
-#: ../../Zotlabs/Module/Directory.php:63 ../../Zotlabs/Module/Display.php:21
-#: ../../Zotlabs/Module/Photos.php:521 ../../Zotlabs/Module/Ratings.php:86
+#: ../../Zotlabs/Module/Directory.php:63 ../../Zotlabs/Module/Display.php:17
+#: ../../Zotlabs/Module/Photos.php:522 ../../Zotlabs/Module/Ratings.php:86
#: ../../Zotlabs/Module/Search.php:17
-#: ../../Zotlabs/Module/Viewconnections.php:21
+#: ../../Zotlabs/Module/Viewconnections.php:20
msgid "Public access denied."
msgstr "Openbare toegang geweigerd."
@@ -2222,13 +916,13 @@ msgstr "Status: "
msgid "Homepage: "
msgstr "Homepage: "
-#: ../../Zotlabs/Module/Directory.php:306 ../../include/identity.php:1322
+#: ../../Zotlabs/Module/Directory.php:306 ../../include/channel.php:1183
msgid "Age:"
msgstr "Leeftijd:"
-#: ../../Zotlabs/Module/Directory.php:311 ../../include/identity.php:1022
-#: ../../include/text.php:1452 ../../include/bb2diaspora.php:509
-#: ../../include/event.php:52
+#: ../../Zotlabs/Module/Directory.php:311 ../../include/event.php:52
+#: ../../include/event.php:84 ../../include/channel.php:1027
+#: ../../include/bb2diaspora.php:507
msgid "Location:"
msgstr "Plaats:"
@@ -2236,18 +930,18 @@ msgstr "Plaats:"
msgid "Description:"
msgstr "Omschrijving:"
-#: ../../Zotlabs/Module/Directory.php:322 ../../include/identity.php:1338
+#: ../../Zotlabs/Module/Directory.php:322 ../../include/channel.php:1199
msgid "Hometown:"
msgstr "Oorspronkelijk uit:"
-#: ../../Zotlabs/Module/Directory.php:324 ../../include/identity.php:1346
+#: ../../Zotlabs/Module/Directory.php:324 ../../include/channel.php:1207
msgid "About:"
msgstr "Over:"
#: ../../Zotlabs/Module/Directory.php:325 ../../Zotlabs/Module/Match.php:68
-#: ../../Zotlabs/Module/Suggest.php:56 ../../include/identity.php:1007
-#: ../../include/conversation.php:961 ../../include/Contact.php:101
-#: ../../include/widgets.php:147 ../../include/widgets.php:184
+#: ../../Zotlabs/Module/Suggest.php:56 ../../include/widgets.php:147
+#: ../../include/widgets.php:184 ../../include/connections.php:78
+#: ../../include/conversation.php:956 ../../include/channel.php:1012
msgid "Connect"
msgstr "Verbinden"
@@ -2275,12 +969,19 @@ msgstr "Volledige kanalengids"
msgid "Local Directory"
msgstr "Lokale kanalengids"
+#: ../../Zotlabs/Module/Directory.php:388
+#: ../../Zotlabs/Module/Directory.php:393
+#: ../../Zotlabs/Module/Connections.php:309
+#: ../../include/contact_widgets.php:23
+msgid "Find"
+msgstr "Vinden"
+
#: ../../Zotlabs/Module/Directory.php:389
msgid "Finding:"
msgstr "Gezocht naar:"
#: ../../Zotlabs/Module/Directory.php:392 ../../Zotlabs/Module/Suggest.php:64
-#: ../../include/contact_widgets.php:27
+#: ../../include/contact_widgets.php:24
msgid "Channel Suggestions"
msgstr "Voorgestelde kanalen"
@@ -2316,431 +1017,455 @@ msgstr "Oud naar nieuw"
msgid "No entries (some entries may be hidden)."
msgstr "Niets gevonden (sommige kanalen kunnen verborgen zijn)."
-#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49
-msgid "This site is not a directory server"
-msgstr "Deze hub is geen kanalengidshub (directoryserver)"
+#: ../../Zotlabs/Module/Display.php:40 ../../Zotlabs/Module/Filestorage.php:33
+#: ../../Zotlabs/Module/Admin.php:164 ../../Zotlabs/Module/Admin.php:1255
+#: ../../Zotlabs/Module/Admin.php:1561 ../../Zotlabs/Module/Thing.php:89
+#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:3359
+msgid "Item not found."
+msgstr "Item niet gevonden."
-#: ../../Zotlabs/Module/Dirsearch.php:33
-msgid "This directory server requires an access token"
-msgstr "Deze kanalengidshub (directoryserver) heeft een toegangs-token nodig"
+#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95
+#: ../../Zotlabs/Module/Editpost.php:24 ../../Zotlabs/Module/Editlayout.php:79
+#: ../../Zotlabs/Module/Editwebpage.php:81
+msgid "Item not found"
+msgstr "Item niet gevonden"
-#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:49
-#: ../../Zotlabs/Module/Group.php:72 ../../Zotlabs/Module/Import_items.php:112
-#: ../../Zotlabs/Module/Like.php:284 ../../Zotlabs/Module/Profperm.php:28
-#: ../../Zotlabs/Module/Subthread.php:62 ../../include/items.php:423
-#: ../../index.php:173
-msgid "Permission denied"
-msgstr "Toegang geweigerd"
+#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1228
+msgid "Title (optional)"
+msgstr "Titel (optioneel)"
-#: ../../Zotlabs/Module/Dreport.php:27
-msgid "Invalid message"
-msgstr "Ongeldig bericht"
+#: ../../Zotlabs/Module/Editblock.php:133
+msgid "Edit Block"
+msgstr "Blok bewerken"
-#: ../../Zotlabs/Module/Dreport.php:59
-msgid "no results"
-msgstr "geen resultaten"
+#: ../../Zotlabs/Module/Common.php:14
+msgid "No channel."
+msgstr "Geen kanaal."
-#: ../../Zotlabs/Module/Dreport.php:64
-#, php-format
-msgid "Delivery report for %1$s"
-msgstr "Afleveringsrapport voor %1$s"
+#: ../../Zotlabs/Module/Common.php:43
+msgid "Common connections"
+msgstr "Veel voorkomende connecties"
-#: ../../Zotlabs/Module/Dreport.php:78
-msgid "channel sync processed"
-msgstr "kanaalsync verwerkt"
+#: ../../Zotlabs/Module/Common.php:48
+msgid "No connections in common."
+msgstr "Geen gemeenschappelijke connecties."
-#: ../../Zotlabs/Module/Dreport.php:82
-msgid "queued"
-msgstr "in wachtrij"
+#: ../../Zotlabs/Module/Connections.php:56
+#: ../../Zotlabs/Module/Connections.php:161
+#: ../../Zotlabs/Module/Connections.php:242
+msgid "Blocked"
+msgstr "Geblokkeerd"
-#: ../../Zotlabs/Module/Dreport.php:86
-msgid "posted"
-msgstr "verstuurd"
+#: ../../Zotlabs/Module/Connections.php:61
+#: ../../Zotlabs/Module/Connections.php:168
+#: ../../Zotlabs/Module/Connections.php:241
+msgid "Ignored"
+msgstr "Genegeerd"
-#: ../../Zotlabs/Module/Dreport.php:90
-msgid "accepted for delivery"
-msgstr "geaccepteerd om afgeleverd te worden"
+#: ../../Zotlabs/Module/Connections.php:66
+#: ../../Zotlabs/Module/Connections.php:182
+#: ../../Zotlabs/Module/Connections.php:240
+msgid "Hidden"
+msgstr "Verborgen"
-#: ../../Zotlabs/Module/Dreport.php:94
-msgid "updated"
-msgstr "geüpdatet"
+#: ../../Zotlabs/Module/Connections.php:71
+#: ../../Zotlabs/Module/Connections.php:175
+#: ../../Zotlabs/Module/Connections.php:239
+msgid "Archived"
+msgstr "Gearchiveerd"
-#: ../../Zotlabs/Module/Dreport.php:97
-msgid "update ignored"
-msgstr "update genegeerd"
+#: ../../Zotlabs/Module/Connections.php:76
+#: ../../Zotlabs/Module/Connections.php:86 ../../Zotlabs/Module/Menu.php:116
+#: ../../include/conversation.php:1535
+msgid "New"
+msgstr "Nieuw"
-#: ../../Zotlabs/Module/Dreport.php:100
-msgid "permission denied"
-msgstr "toegang geweigerd"
+#: ../../Zotlabs/Module/Connections.php:138
+msgid "New Connections"
+msgstr "Nieuwe connecties"
-#: ../../Zotlabs/Module/Dreport.php:104
-msgid "recipient not found"
-msgstr "ontvanger niet gevonden"
+#: ../../Zotlabs/Module/Connections.php:141
+msgid "Show pending (new) connections"
+msgstr "Nog te accepteren (nieuwe) connecties weergeven"
-#: ../../Zotlabs/Module/Dreport.php:107
-msgid "mail recalled"
-msgstr "Privébericht ingetrokken"
+#: ../../Zotlabs/Module/Connections.php:145
+#: ../../Zotlabs/Module/Profperm.php:144
+msgid "All Connections"
+msgstr "Alle connecties"
-#: ../../Zotlabs/Module/Dreport.php:110
-msgid "duplicate mail received"
-msgstr "dubbel privébericht ontvangen"
+#: ../../Zotlabs/Module/Connections.php:148
+msgid "Show all connections"
+msgstr "Toon alle connecties"
-#: ../../Zotlabs/Module/Dreport.php:113
-msgid "mail delivered"
-msgstr "privébericht afgeleverd"
+#: ../../Zotlabs/Module/Connections.php:164
+msgid "Only show blocked connections"
+msgstr "Toon alleen geblokkeerde connecties"
-#: ../../Zotlabs/Module/Editblock.php:82 ../../Zotlabs/Module/Editblock.php:98
-#: ../../Zotlabs/Module/Editlayout.php:80 ../../Zotlabs/Module/Editpost.php:24
-#: ../../Zotlabs/Module/Editwebpage.php:81
-msgid "Item not found"
-msgstr "Item niet gevonden"
+#: ../../Zotlabs/Module/Connections.php:171
+msgid "Only show ignored connections"
+msgstr "Toon alleen genegeerde connecties"
-#: ../../Zotlabs/Module/Editblock.php:122
-msgid "Delete block?"
-msgstr "Blok verwijderen"
+#: ../../Zotlabs/Module/Connections.php:178
+msgid "Only show archived connections"
+msgstr "Toon alleen gearchiveerde connecties"
-#: ../../Zotlabs/Module/Editblock.php:141
-#: ../../Zotlabs/Module/Editlayout.php:140
-#: ../../Zotlabs/Module/Editpost.php:119
-#: ../../Zotlabs/Module/Editwebpage.php:182 ../../include/ItemObject.php:704
-#: ../../include/conversation.php:1216
-msgid "Bold"
-msgstr "Vet"
+#: ../../Zotlabs/Module/Connections.php:185
+msgid "Only show hidden connections"
+msgstr "Toon alleen verborgen connecties"
-#: ../../Zotlabs/Module/Editblock.php:142
-#: ../../Zotlabs/Module/Editlayout.php:141
-#: ../../Zotlabs/Module/Editpost.php:120
-#: ../../Zotlabs/Module/Editwebpage.php:183 ../../include/ItemObject.php:705
-#: ../../include/conversation.php:1217
-msgid "Italic"
-msgstr "Cursief"
+#: ../../Zotlabs/Module/Connections.php:238
+msgid "Pending approval"
+msgstr "Moet nog geaccepteerd worden"
-#: ../../Zotlabs/Module/Editblock.php:143
-#: ../../Zotlabs/Module/Editlayout.php:142
-#: ../../Zotlabs/Module/Editpost.php:121
-#: ../../Zotlabs/Module/Editwebpage.php:184 ../../include/ItemObject.php:706
-#: ../../include/conversation.php:1218
-msgid "Underline"
-msgstr "Onderstrepen"
+#: ../../Zotlabs/Module/Connections.php:254
+#, php-format
+msgid "%1$s [%2$s]"
+msgstr "%1$s [%2$s]"
-#: ../../Zotlabs/Module/Editblock.php:144
-#: ../../Zotlabs/Module/Editlayout.php:143
-#: ../../Zotlabs/Module/Editpost.php:122
-#: ../../Zotlabs/Module/Editwebpage.php:185 ../../include/ItemObject.php:707
-#: ../../include/conversation.php:1219
-msgid "Quote"
-msgstr "Citeren"
+#: ../../Zotlabs/Module/Connections.php:255
+msgid "Edit connection"
+msgstr "Connectie bewerken"
-#: ../../Zotlabs/Module/Editblock.php:145
-#: ../../Zotlabs/Module/Editlayout.php:144
-#: ../../Zotlabs/Module/Editpost.php:123
-#: ../../Zotlabs/Module/Editwebpage.php:186 ../../include/ItemObject.php:708
-#: ../../include/conversation.php:1220
-msgid "Code"
-msgstr "Broncode"
+#: ../../Zotlabs/Module/Connections.php:256
+msgid "Delete connection"
+msgstr "Connectie verwijderen"
-#: ../../Zotlabs/Module/Editblock.php:147
-#: ../../Zotlabs/Module/Editlayout.php:146
-#: ../../Zotlabs/Module/Editpost.php:125
-#: ../../Zotlabs/Module/Editwebpage.php:187 ../../Zotlabs/Module/Mail.php:252
-#: ../../Zotlabs/Module/Mail.php:382 ../../include/conversation.php:1223
-msgid "Attach file"
-msgstr "Bestand toevoegen"
+#: ../../Zotlabs/Module/Connections.php:265
+msgid "Channel address"
+msgstr "Kanaaladres"
-#: ../../Zotlabs/Module/Editblock.php:151
-#: ../../Zotlabs/Module/Editlayout.php:154
-#: ../../Zotlabs/Module/Editpost.php:136
-#: ../../Zotlabs/Module/Editwebpage.php:191
-#: ../../Zotlabs/Module/Events.php:470 ../../include/conversation.php:1245
-msgid "Permission settings"
-msgstr "Permissies"
+#: ../../Zotlabs/Module/Connections.php:267
+msgid "Network"
+msgstr "Netwerk"
-#: ../../Zotlabs/Module/Editblock.php:159
-#: ../../Zotlabs/Module/Editlayout.php:161
-#: ../../Zotlabs/Module/Editpost.php:144
-#: ../../Zotlabs/Module/Editwebpage.php:200
-#: ../../include/conversation.php:1254
-msgid "Public post"
-msgstr "Openbaar bericht"
+#: ../../Zotlabs/Module/Connections.php:270 ../../Zotlabs/Module/Admin.php:710
+msgid "Status"
+msgstr "Status"
-#: ../../Zotlabs/Module/Editblock.php:162
-#: ../../Zotlabs/Module/Editpost.php:147
-#: ../../Zotlabs/Module/Editwebpage.php:205
-#: ../../include/conversation.php:1239
-msgid "Title (optional)"
-msgstr "Titel (optioneel)"
+#: ../../Zotlabs/Module/Connections.php:272
+msgid "Connected"
+msgstr "Verbonden"
-#: ../../Zotlabs/Module/Editblock.php:165
-#: ../../Zotlabs/Module/Editlayout.php:168
-#: ../../Zotlabs/Module/Editpost.php:149
-#: ../../Zotlabs/Module/Editwebpage.php:207
-#: ../../include/conversation.php:1243
-msgid "Categories (optional, comma-separated list)"
-msgstr "Categorieën (optioneel, door komma's gescheiden lijst)"
+#: ../../Zotlabs/Module/Connections.php:274
+msgid "Approve connection"
+msgstr "Connectie accepteren"
-#: ../../Zotlabs/Module/Editblock.php:166
-#: ../../Zotlabs/Module/Editlayout.php:169
-#: ../../Zotlabs/Module/Editpost.php:150
-#: ../../Zotlabs/Module/Editwebpage.php:208
-#: ../../include/conversation.php:1256
-msgid "Example: bob@example.com, mary@example.com"
-msgstr "Voorbeeld: bob@voorbeeld.nl, mary@voorbeeld.be"
-
-#: ../../Zotlabs/Module/Editblock.php:171
-#: ../../Zotlabs/Module/Editpost.php:155
-#: ../../Zotlabs/Module/Editwebpage.php:212
-#: ../../Zotlabs/Module/Events.php:469 ../../Zotlabs/Module/Photos.php:1092
-#: ../../Zotlabs/Module/Webpages.php:196 ../../include/ItemObject.php:712
-#: ../../include/conversation.php:1186 ../../include/page_widgets.php:40
-msgid "Preview"
-msgstr "Voorvertoning"
+#: ../../Zotlabs/Module/Connections.php:275
+#: ../../Zotlabs/Module/Admin.php:1037
+msgid "Approve"
+msgstr "Goedkeuren"
-#: ../../Zotlabs/Module/Editblock.php:179
-msgid "Edit Block"
-msgstr "Blok bewerken"
+#: ../../Zotlabs/Module/Connections.php:276
+msgid "Ignore connection"
+msgstr "Connectie negeren"
-#: ../../Zotlabs/Module/Editlayout.php:116
-msgid "Delete layout?"
-msgstr "Lay-out verwijderen?"
+#: ../../Zotlabs/Module/Connections.php:278
+msgid "Recent activity"
+msgstr "Recente activiteit"
-#: ../../Zotlabs/Module/Editlayout.php:145
-#: ../../Zotlabs/Module/Editpost.php:124 ../../include/conversation.php:1221
-msgid "Upload photo"
-msgstr "Foto uploaden"
+#: ../../Zotlabs/Module/Connections.php:302 ../../Zotlabs/Lib/Apps.php:208
+#: ../../include/text.php:875 ../../include/nav.php:186
+msgid "Connections"
+msgstr "Connecties"
-#: ../../Zotlabs/Module/Editlayout.php:148
-#: ../../Zotlabs/Module/Editpost.php:127
-msgid "Insert YouTube video"
-msgstr "YouTube-video invoegen"
+#: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44
+#: ../../Zotlabs/Lib/Apps.php:228 ../../include/text.php:945
+#: ../../include/text.php:957 ../../include/nav.php:165
+#: ../../include/acl_selectors.php:276
+msgid "Search"
+msgstr "Zoeken"
-#: ../../Zotlabs/Module/Editlayout.php:149
-#: ../../Zotlabs/Module/Editpost.php:128
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Vorbis-video [.ogg] invoegen"
+#: ../../Zotlabs/Module/Connections.php:307
+msgid "Search your connections"
+msgstr "Doorzoek jouw connecties"
-#: ../../Zotlabs/Module/Editlayout.php:150
-#: ../../Zotlabs/Module/Editpost.php:129
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Vorbis-audio [.ogg] invoegen"
+#: ../../Zotlabs/Module/Connections.php:308
+msgid "Connections search"
+msgstr "Connecties zoeken"
-#: ../../Zotlabs/Module/Editlayout.php:151
-#: ../../Zotlabs/Module/Editpost.php:130 ../../include/conversation.php:1231
-msgid "Set your location"
-msgstr "Locatie instellen"
+#: ../../Zotlabs/Module/Cover_photo.php:58
+#: ../../Zotlabs/Module/Profile_photo.php:79
+msgid "Image uploaded but image cropping failed."
+msgstr "Afbeelding geüpload, maar afbeelding kon niet worden bijgesneden. "
-#: ../../Zotlabs/Module/Editlayout.php:152
-#: ../../Zotlabs/Module/Editpost.php:131 ../../include/conversation.php:1236
-msgid "Clear browser location"
-msgstr "Locatie van webbrowser wissen"
+#: ../../Zotlabs/Module/Cover_photo.php:134
+#: ../../Zotlabs/Module/Cover_photo.php:181
+msgid "Cover Photos"
+msgstr "Omslagfoto's"
-#: ../../Zotlabs/Module/Editlayout.php:153
-#: ../../Zotlabs/Module/Editpost.php:135 ../../Zotlabs/Module/Photos.php:1072
-#: ../../include/ItemObject.php:389 ../../include/conversation.php:740
-#: ../../include/conversation.php:1244
-msgid "Please wait"
-msgstr "Even wachten"
+#: ../../Zotlabs/Module/Cover_photo.php:154
+#: ../../Zotlabs/Module/Profile_photo.php:133
+msgid "Image resize failed."
+msgstr "Afbeelding kon niet van grootte veranderd worden."
-#: ../../Zotlabs/Module/Editlayout.php:164
-#: ../../Zotlabs/Module/Layouts.php:128
-msgid "Layout Description (Optional)"
-msgstr "Lay-out-omschrijving (optioneel)"
+#: ../../Zotlabs/Module/Cover_photo.php:168
+#: ../../Zotlabs/Module/Profile_photo.php:192 ../../include/photos.php:144
+msgid "Unable to process image"
+msgstr "Afbeelding kan niet verwerkt worden"
-#: ../../Zotlabs/Module/Editlayout.php:166
-#: ../../Zotlabs/Module/Layouts.php:125 ../../Zotlabs/Module/Layouts.php:184
-msgid "Layout Name"
-msgstr "Naam lay-out"
+#: ../../Zotlabs/Module/Cover_photo.php:192
+#: ../../Zotlabs/Module/Profile_photo.php:217
+msgid "Image upload failed."
+msgstr "Uploaden afbeelding mislukt"
-#: ../../Zotlabs/Module/Editlayout.php:178
-#: ../../Zotlabs/Module/Editpost.php:161 ../../Zotlabs/Module/Mail.php:257
-#: ../../Zotlabs/Module/Mail.php:387 ../../include/conversation.php:1269
-msgid "Set expiration date"
-msgstr "Verloopdatum instellen"
+#: ../../Zotlabs/Module/Cover_photo.php:210
+#: ../../Zotlabs/Module/Profile_photo.php:236
+msgid "Unable to process image."
+msgstr "Niet in staat om afbeelding te verwerken."
-#: ../../Zotlabs/Module/Editlayout.php:183
-msgid "Edit Layout"
-msgstr "Lay-out bewerken"
+#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4270
+msgid "female"
+msgstr "vrouw"
-#: ../../Zotlabs/Module/Editpost.php:35
-msgid "Item is not editable"
-msgstr "Item is niet te bewerken"
+#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4271
+#, php-format
+msgid "%1$s updated her %2$s"
+msgstr "%1$s heeft haar %2$s bijgewerkt"
-#: ../../Zotlabs/Module/Editpost.php:60 ../../Zotlabs/Module/Mail.php:207
-#: ../../Zotlabs/Module/Mail.php:321 ../../include/conversation.php:1176
-msgid "Expires YYYY-MM-DD HH:MM"
-msgstr "Verloopt op DD-MM-YYYY om HH:MM"
+#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4272
+msgid "male"
+msgstr "man"
-#: ../../Zotlabs/Module/Editpost.php:61
-msgid "Delete item?"
-msgstr "Item verwijderen?"
+#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4273
+#, php-format
+msgid "%1$s updated his %2$s"
+msgstr "%1$s heeft zijn %2$s bijgewerkt"
-#: ../../Zotlabs/Module/Editpost.php:132 ../../include/conversation.php:1233
-msgid "Toggle voting"
-msgstr "Peiling in- of uitschakelen"
+#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4275
+#, php-format
+msgid "%1$s updated their %2$s"
+msgstr "De %2$s van %1$s is bijgewerkt"
-#: ../../Zotlabs/Module/Editpost.php:165 ../../include/conversation.php:1276
-msgid "OK"
-msgstr "OK"
+#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1661
+msgid "cover photo"
+msgstr "omslagfoto"
-#: ../../Zotlabs/Module/Editpost.php:166 ../../Zotlabs/Module/Fbrowser.php:66
-#: ../../Zotlabs/Module/Fbrowser.php:88 ../../Zotlabs/Module/Settings.php:589
-#: ../../Zotlabs/Module/Settings.php:615 ../../Zotlabs/Module/Tagrm.php:15
-#: ../../Zotlabs/Module/Tagrm.php:138 ../../include/conversation.php:1277
-msgid "Cancel"
-msgstr "Annuleren"
+#: ../../Zotlabs/Module/Cover_photo.php:303
+#: ../../Zotlabs/Module/Cover_photo.php:318
+#: ../../Zotlabs/Module/Profile_photo.php:283
+#: ../../Zotlabs/Module/Profile_photo.php:324
+msgid "Photo not available."
+msgstr "Foto niet beschikbaar."
-#: ../../Zotlabs/Module/Editpost.php:171 ../../Zotlabs/Module/Rpost.php:134
-msgid "Edit post"
-msgstr "Bericht bewerken"
+#: ../../Zotlabs/Module/Cover_photo.php:354
+#: ../../Zotlabs/Module/Profile_photo.php:365
+msgid "Upload File:"
+msgstr "Bestand uploaden:"
-#: ../../Zotlabs/Module/Editwebpage.php:157
-msgid "Delete webpage?"
-msgstr "Webpagina verwijderen?"
+#: ../../Zotlabs/Module/Cover_photo.php:355
+#: ../../Zotlabs/Module/Profile_photo.php:366
+msgid "Select a profile:"
+msgstr "Kies een profiel:"
-#: ../../Zotlabs/Module/Editwebpage.php:177
-msgid "Page link title"
-msgstr "Titel van paginalink"
+#: ../../Zotlabs/Module/Cover_photo.php:356
+msgid "Upload Cover Photo"
+msgstr "Omslagfoto uploaden"
-#: ../../Zotlabs/Module/Editwebpage.php:220
-msgid "Edit Webpage"
-msgstr "Webpagina bewerken"
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+#: ../../Zotlabs/Module/Settings.php:985
+msgid "or"
+msgstr "of"
+
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+msgid "skip this step"
+msgstr "sla deze stap over"
+
+#: ../../Zotlabs/Module/Cover_photo.php:361
+#: ../../Zotlabs/Module/Profile_photo.php:374
+msgid "select a photo from your photo albums"
+msgstr "Kies een foto uit jouw fotoalbums"
+
+#: ../../Zotlabs/Module/Cover_photo.php:377
+#: ../../Zotlabs/Module/Profile_photo.php:390
+msgid "Crop Image"
+msgstr "Afbeelding bijsnijden"
+
+#: ../../Zotlabs/Module/Cover_photo.php:378
+#: ../../Zotlabs/Module/Profile_photo.php:391
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Snij de afbeelding zo uit dat deze optimaal wordt weergegeven."
+
+#: ../../Zotlabs/Module/Cover_photo.php:380
+#: ../../Zotlabs/Module/Profile_photo.php:393
+msgid "Done Editing"
+msgstr "Klaar met bewerken"
+
+#: ../../Zotlabs/Module/Editpost.php:35
+msgid "Item is not editable"
+msgstr "Item is niet te bewerken"
+
+#: ../../Zotlabs/Module/Editpost.php:106 ../../Zotlabs/Module/Rpost.php:135
+msgid "Edit post"
+msgstr "Bericht bewerken"
-#: ../../Zotlabs/Module/Events.php:25
+#: ../../Zotlabs/Module/Events.php:26
msgid "Calendar entries imported."
msgstr "Agenda-items geïmporteerd."
-#: ../../Zotlabs/Module/Events.php:27
+#: ../../Zotlabs/Module/Events.php:28
msgid "No calendar entries found."
msgstr "Geen agenda-items gevonden."
-#: ../../Zotlabs/Module/Events.php:104
+#: ../../Zotlabs/Module/Events.php:105
msgid "Event can not end before it has started."
msgstr "Gebeurtenis kan niet eindigen voordat het is begonnen"
-#: ../../Zotlabs/Module/Events.php:106 ../../Zotlabs/Module/Events.php:115
-#: ../../Zotlabs/Module/Events.php:135
+#: ../../Zotlabs/Module/Events.php:107 ../../Zotlabs/Module/Events.php:116
+#: ../../Zotlabs/Module/Events.php:136
msgid "Unable to generate preview."
msgstr "Niet in staat om voorvertoning te genereren"
-#: ../../Zotlabs/Module/Events.php:113
+#: ../../Zotlabs/Module/Events.php:114
msgid "Event title and start time are required."
msgstr "Titel en begintijd van gebeurtenis zijn vereist."
-#: ../../Zotlabs/Module/Events.php:133 ../../Zotlabs/Module/Events.php:258
+#: ../../Zotlabs/Module/Events.php:134 ../../Zotlabs/Module/Events.php:259
msgid "Event not found."
msgstr "Gebeurtenis niet gevonden"
-#: ../../Zotlabs/Module/Events.php:253 ../../Zotlabs/Module/Like.php:373
-#: ../../Zotlabs/Module/Tagger.php:51 ../../include/text.php:1943
-#: ../../include/conversation.php:123 ../../include/event.php:915
+#: ../../Zotlabs/Module/Events.php:254 ../../Zotlabs/Module/Like.php:373
+#: ../../Zotlabs/Module/Tagger.php:51 ../../include/event.php:949
+#: ../../include/text.php:1943 ../../include/conversation.php:123
msgid "event"
msgstr "gebeurtenis"
-#: ../../Zotlabs/Module/Events.php:448
+#: ../../Zotlabs/Module/Events.php:449
msgid "Edit event title"
msgstr "Titel bewerken"
-#: ../../Zotlabs/Module/Events.php:448
+#: ../../Zotlabs/Module/Events.php:449
msgid "Event title"
msgstr "Titel"
-#: ../../Zotlabs/Module/Events.php:450
+#: ../../Zotlabs/Module/Events.php:449 ../../Zotlabs/Module/Events.php:454
+#: ../../Zotlabs/Module/Profiles.php:709 ../../Zotlabs/Module/Profiles.php:713
+#: ../../Zotlabs/Module/Appman.php:115 ../../Zotlabs/Module/Appman.php:116
+#: ../../include/datetime.php:245
+msgid "Required"
+msgstr "Vereist"
+
+#: ../../Zotlabs/Module/Events.php:451
msgid "Categories (comma-separated list)"
msgstr "Categorieën (door komma's gescheiden lijst)"
-#: ../../Zotlabs/Module/Events.php:451
+#: ../../Zotlabs/Module/Events.php:452
msgid "Edit Category"
msgstr "Categorie"
-#: ../../Zotlabs/Module/Events.php:451
+#: ../../Zotlabs/Module/Events.php:452
msgid "Category"
msgstr "Categorie"
-#: ../../Zotlabs/Module/Events.php:454
+#: ../../Zotlabs/Module/Events.php:455
msgid "Edit start date and time"
msgstr "Begindatum en -tijd bewerken"
-#: ../../Zotlabs/Module/Events.php:454
+#: ../../Zotlabs/Module/Events.php:455
msgid "Start date and time"
msgstr "Begindatum en -tijd"
-#: ../../Zotlabs/Module/Events.php:455 ../../Zotlabs/Module/Events.php:458
+#: ../../Zotlabs/Module/Events.php:456 ../../Zotlabs/Module/Events.php:459
msgid "Finish date and time are not known or not relevant"
msgstr "Einddatum en -tijd zijn niet bekend of niet van toepassing"
-#: ../../Zotlabs/Module/Events.php:457
+#: ../../Zotlabs/Module/Events.php:458
msgid "Edit finish date and time"
msgstr "Einddatum en -tijd bewerken"
-#: ../../Zotlabs/Module/Events.php:457
+#: ../../Zotlabs/Module/Events.php:458
msgid "Finish date and time"
msgstr "Einddatum en -tijd"
-#: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:460
+#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:461
msgid "Adjust for viewer timezone"
msgstr "Aanpassen aan de tijdzone van wie deze gebeurtenis bekijkt"
-#: ../../Zotlabs/Module/Events.php:459
+#: ../../Zotlabs/Module/Events.php:460
msgid ""
"Important for events that happen in a particular place. Not practical for "
"global holidays."
msgstr "Belangrijk voor gebeurtenissen die op een bepaalde locatie plaatsvinden. Niet praktisch voor wereldwijde feestdagen."
-#: ../../Zotlabs/Module/Events.php:461
+#: ../../Zotlabs/Module/Events.php:462
msgid "Edit Description"
msgstr "Omschrijving bewerken"
-#: ../../Zotlabs/Module/Events.php:463
+#: ../../Zotlabs/Module/Events.php:462 ../../Zotlabs/Module/Appman.php:117
+#: ../../Zotlabs/Module/Rbmark.php:101
+msgid "Description"
+msgstr "Omschrijving"
+
+#: ../../Zotlabs/Module/Events.php:464
msgid "Edit Location"
msgstr "Locatie bewerken"
-#: ../../Zotlabs/Module/Events.php:463 ../../Zotlabs/Module/Locs.php:117
-#: ../../Zotlabs/Module/Profiles.php:476 ../../Zotlabs/Module/Profiles.php:702
-#: ../../Zotlabs/Module/Pubsites.php:40 ../../include/js_strings.php:25
+#: ../../Zotlabs/Module/Events.php:464 ../../Zotlabs/Module/Locs.php:117
+#: ../../Zotlabs/Module/Profiles.php:477 ../../Zotlabs/Module/Profiles.php:698
+#: ../../Zotlabs/Module/Pubsites.php:41 ../../include/js_strings.php:25
msgid "Location"
msgstr "Locatie"
-#: ../../Zotlabs/Module/Events.php:466 ../../Zotlabs/Module/Events.php:468
+#: ../../Zotlabs/Module/Events.php:467 ../../Zotlabs/Module/Events.php:469
msgid "Share this event"
msgstr "Deel deze gebeurtenis"
-#: ../../Zotlabs/Module/Events.php:473
+#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Photos.php:1093
+#: ../../Zotlabs/Module/Webpages.php:194 ../../Zotlabs/Lib/ThreadItem.php:719
+#: ../../include/conversation.php:1187 ../../include/page_widgets.php:40
+msgid "Preview"
+msgstr "Voorvertoning"
+
+#: ../../Zotlabs/Module/Events.php:471 ../../include/conversation.php:1232
+msgid "Permission settings"
+msgstr "Permissies"
+
+#: ../../Zotlabs/Module/Events.php:476
msgid "Advanced Options"
msgstr "Geavanceerde opties"
-#: ../../Zotlabs/Module/Events.php:607
+#: ../../Zotlabs/Module/Events.php:610
msgid "Edit event"
msgstr "Gebeurtenis bewerken"
-#: ../../Zotlabs/Module/Events.php:609
+#: ../../Zotlabs/Module/Events.php:612
msgid "Delete event"
msgstr "Gebeurtenis verwijderen"
-#: ../../Zotlabs/Module/Events.php:643
+#: ../../Zotlabs/Module/Events.php:646
msgid "calendar"
msgstr "agenda"
-#: ../../Zotlabs/Module/Events.php:703
+#: ../../Zotlabs/Module/Events.php:706
msgid "Event removed"
msgstr "Gebeurtenis verwijderd"
-#: ../../Zotlabs/Module/Events.php:706
+#: ../../Zotlabs/Module/Events.php:709
msgid "Failed to remove event"
msgstr "Verwijderen gebeurtenis mislukt"
-#: ../../Zotlabs/Module/Fbrowser.php:29 ../../include/apps.php:139
-#: ../../include/conversation.php:1650 ../../include/nav.php:92
+#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:220
+#: ../../include/nav.php:92 ../../include/conversation.php:1632
msgid "Photos"
msgstr "Foto's"
-#: ../../Zotlabs/Module/Ffsapi.php:12
-msgid "Share content from Firefox to $Projectname"
-msgstr "Deel webpagina's vanuit Firefox met "
+#: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88
+#: ../../Zotlabs/Module/Admin.php:1406 ../../Zotlabs/Module/Settings.php:591
+#: ../../Zotlabs/Module/Settings.php:617 ../../Zotlabs/Module/Tagrm.php:15
+#: ../../Zotlabs/Module/Tagrm.php:138 ../../include/conversation.php:1259
+msgid "Cancel"
+msgstr "Annuleren"
-#: ../../Zotlabs/Module/Ffsapi.php:15
-msgid "Activate the Firefox $Projectname provider"
-msgstr "Activeer de $Projectname-service in Firefox"
+#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49
+msgid "This site is not a directory server"
+msgstr "Deze hub is geen kanalengidshub (directoryserver)"
+
+#: ../../Zotlabs/Module/Dirsearch.php:33
+msgid "This directory server requires an access token"
+msgstr "Deze kanalengidshub (directoryserver) heeft een toegangs-token nodig"
-#: ../../Zotlabs/Module/Filer.php:52 ../../include/conversation.php:1174
+#: ../../Zotlabs/Module/Filer.php:52
msgid "Save to Folder:"
msgstr "Bewaar in map: "
@@ -2748,70 +1473,103 @@ msgstr "Bewaar in map: "
msgid "- select -"
msgstr "- kies map -"
-#: ../../Zotlabs/Module/Filestorage.php:86
-msgid "Permission Denied."
-msgstr "Toegang geweigerd"
+#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Admin.php:2033
+#: ../../Zotlabs/Module/Admin.php:2053 ../../Zotlabs/Module/Rbmark.php:32
+#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/text.php:946
+#: ../../include/text.php:958 ../../include/widgets.php:201
+msgid "Save"
+msgstr "Opslaan"
-#: ../../Zotlabs/Module/Filestorage.php:102
-msgid "File not found."
-msgstr "Bestand niet gevonden."
+#: ../../Zotlabs/Module/Dreport.php:27
+msgid "Invalid message"
+msgstr "Ongeldig bericht"
-#: ../../Zotlabs/Module/Filestorage.php:145
-msgid "Edit file permissions"
-msgstr "Bestandsrechten bewerken"
+#: ../../Zotlabs/Module/Dreport.php:59
+msgid "no results"
+msgstr "geen resultaten"
-#: ../../Zotlabs/Module/Filestorage.php:154
-msgid "Set/edit permissions"
-msgstr "Rechten instellen/bewerken"
+#: ../../Zotlabs/Module/Dreport.php:64
+#, php-format
+msgid "Delivery report for %1$s"
+msgstr "Afleveringsrapport voor %1$s"
-#: ../../Zotlabs/Module/Filestorage.php:155
-msgid "Include all files and sub folders"
-msgstr "Toepassen op alle bestanden en submappen"
+#: ../../Zotlabs/Module/Dreport.php:78
+msgid "channel sync processed"
+msgstr "kanaalsync verwerkt"
-#: ../../Zotlabs/Module/Filestorage.php:156
-msgid "Return to file list"
-msgstr "Terugkeren naar bestandlijst "
+#: ../../Zotlabs/Module/Dreport.php:82
+msgid "queued"
+msgstr "in wachtrij"
-#: ../../Zotlabs/Module/Filestorage.php:158
-msgid "Copy/paste this code to attach file to a post"
-msgstr "Kopieer/plak deze code om het bestand aan een bericht te koppelen"
+#: ../../Zotlabs/Module/Dreport.php:86
+msgid "posted"
+msgstr "verstuurd"
-#: ../../Zotlabs/Module/Filestorage.php:159
-msgid "Copy/paste this URL to link file from a web page"
-msgstr "Kopieer/plak deze URL om het bestand aan een externe webpagina te koppelen"
+#: ../../Zotlabs/Module/Dreport.php:90
+msgid "accepted for delivery"
+msgstr "geaccepteerd om afgeleverd te worden"
-#: ../../Zotlabs/Module/Filestorage.php:161
-msgid "Share this file"
-msgstr "Dit bestand delen"
+#: ../../Zotlabs/Module/Dreport.php:94
+msgid "updated"
+msgstr "geüpdatet"
-#: ../../Zotlabs/Module/Filestorage.php:162
-msgid "Show URL to this file"
-msgstr "Toon URL van dit bestand"
+#: ../../Zotlabs/Module/Dreport.php:97
+msgid "update ignored"
+msgstr "update genegeerd"
-#: ../../Zotlabs/Module/Filestorage.php:163
-msgid "Notify your contacts about this file"
-msgstr "Jouw connecties over dit bestand berichten"
+#: ../../Zotlabs/Module/Dreport.php:100
+msgid "permission denied"
+msgstr "toegang geweigerd"
-#: ../../Zotlabs/Module/Follow.php:31
-msgid "Channel added."
-msgstr "Kanaal toegevoegd."
+#: ../../Zotlabs/Module/Dreport.php:104
+msgid "recipient not found"
+msgstr "ontvanger niet gevonden"
-#: ../../Zotlabs/Module/Fsuggest.php:24 ../../Zotlabs/Module/Fsuggest.php:96
-msgid "Contact not found."
-msgstr "Contact niet gevonden"
+#: ../../Zotlabs/Module/Dreport.php:107
+msgid "mail recalled"
+msgstr "Privébericht ingetrokken"
-#: ../../Zotlabs/Module/Fsuggest.php:67
-msgid "Friend suggestion sent."
-msgstr "Kanaalvoorstel verzonden."
+#: ../../Zotlabs/Module/Dreport.php:110
+msgid "duplicate mail received"
+msgstr "dubbel privébericht ontvangen"
-#: ../../Zotlabs/Module/Fsuggest.php:101
-msgid "Suggest Friends"
-msgstr "Kanalen voorstellen"
+#: ../../Zotlabs/Module/Dreport.php:113
+msgid "mail delivered"
+msgstr "privébericht afgeleverd"
-#: ../../Zotlabs/Module/Fsuggest.php:103
-#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Stel een kanaal voor aan %s"
+#: ../../Zotlabs/Module/Editlayout.php:126
+#: ../../Zotlabs/Module/Layouts.php:127 ../../Zotlabs/Module/Layouts.php:186
+msgid "Layout Name"
+msgstr "Naam lay-out"
+
+#: ../../Zotlabs/Module/Editlayout.php:127
+#: ../../Zotlabs/Module/Layouts.php:130
+msgid "Layout Description (Optional)"
+msgstr "Lay-out-omschrijving (optioneel)"
+
+#: ../../Zotlabs/Module/Editlayout.php:135
+msgid "Edit Layout"
+msgstr "Lay-out bewerken"
+
+#: ../../Zotlabs/Module/Editwebpage.php:143
+msgid "Page link"
+msgstr "Paginalink"
+
+#: ../../Zotlabs/Module/Editwebpage.php:169
+msgid "Edit Webpage"
+msgstr "Webpagina bewerken"
+
+#: ../../Zotlabs/Module/Follow.php:34
+msgid "Channel added."
+msgstr "Kanaal toegevoegd."
+
+#: ../../Zotlabs/Module/Acl.php:227
+msgid "network"
+msgstr "netwerk"
+
+#: ../../Zotlabs/Module/Acl.php:237
+msgid "RSS"
+msgstr "RSS"
#: ../../Zotlabs/Module/Group.php:24
msgid "Privacy group created."
@@ -2822,7 +1580,7 @@ msgid "Could not create privacy group."
msgstr "Kon privacygroep niet aanmaken"
#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141
-#: ../../include/items.php:5126
+#: ../../include/items.php:3893
msgid "Privacy group not found."
msgstr "Privacygroep niet gevonden"
@@ -2866,6 +1624,32 @@ msgstr "Alle kanaalconnecties"
msgid "Click on a channel to add or remove."
msgstr "Klik op een kanaal om deze toe te voegen of te verwijderen."
+#: ../../Zotlabs/Module/Ffsapi.php:12
+msgid "Share content from Firefox to $Projectname"
+msgstr "Deel webpagina's vanuit Firefox met "
+
+#: ../../Zotlabs/Module/Ffsapi.php:15
+msgid "Activate the Firefox $Projectname provider"
+msgstr "Activeer de $Projectname-service in Firefox"
+
+#: ../../Zotlabs/Module/Api.php:61 ../../Zotlabs/Module/Api.php:85
+msgid "Authorize application connection"
+msgstr "Geef toestemming voor applicatiekoppeling"
+
+#: ../../Zotlabs/Module/Api.php:62
+msgid "Return to your app and insert this Securty Code:"
+msgstr "Ga terug naar je app en voeg deze beveiligingscode in:"
+
+#: ../../Zotlabs/Module/Api.php:72
+msgid "Please login to continue."
+msgstr "Inloggen om verder te kunnen gaan."
+
+#: ../../Zotlabs/Module/Api.php:87
+msgid ""
+"Do you want to authorize this application to access your posts and contacts,"
+" and/or create new posts for you?"
+msgstr "Wil je deze applicatie toestemming geven om jouw berichten en connecties te zien, en/of nieuwe berichten voor jou te plaatsen?"
+
#: ../../Zotlabs/Module/Help.php:26
msgid "Documentation Search"
msgstr "Zoek documentatie"
@@ -2876,7 +1660,7 @@ msgid "Help:"
msgstr "Hulp:"
#: ../../Zotlabs/Module/Help.php:85 ../../Zotlabs/Module/Help.php:90
-#: ../../Zotlabs/Module/Layouts.php:181 ../../include/apps.php:142
+#: ../../Zotlabs/Module/Layouts.php:183 ../../Zotlabs/Lib/Apps.php:223
#: ../../include/nav.php:159
msgid "Help"
msgstr "Hulp"
@@ -2885,128 +1669,58 @@ msgstr "Hulp"
msgid "$Projectname Documentation"
msgstr "$Projectname-documentatie"
-#: ../../Zotlabs/Module/Home.php:61 ../../Zotlabs/Module/Home.php:69
-#: ../../Zotlabs/Module/Siteinfo.php:65
-msgid "$Projectname"
-msgstr "$Projectname"
-
-#: ../../Zotlabs/Module/Home.php:79
-#, php-format
-msgid "Welcome to %s"
-msgstr "Welkom op %s"
-
-#: ../../Zotlabs/Module/Id.php:13
-msgid "First Name"
-msgstr "Voornaam"
-
-#: ../../Zotlabs/Module/Id.php:14
-msgid "Last Name"
-msgstr "Achternaam"
-
-#: ../../Zotlabs/Module/Id.php:15
-msgid "Nickname"
-msgstr "Bijnaam"
-
-#: ../../Zotlabs/Module/Id.php:16
-msgid "Full Name"
-msgstr "Volledige naam"
-
-#: ../../Zotlabs/Module/Id.php:19 ../../Zotlabs/Module/Id.php:20
-#: ../../Zotlabs/Module/Id.php:21 ../../include/apps.php:155
-msgid "Profile Photo"
-msgstr "Profielfoto"
-
-#: ../../Zotlabs/Module/Id.php:22
-msgid "Profile Photo 16px"
-msgstr "Profielfoto 16px"
-
-#: ../../Zotlabs/Module/Id.php:23
-msgid "Profile Photo 32px"
-msgstr "Profielfoto 32px"
-
-#: ../../Zotlabs/Module/Id.php:24
-msgid "Profile Photo 48px"
-msgstr "Profielfoto 48px"
-
-#: ../../Zotlabs/Module/Id.php:25
-msgid "Profile Photo 64px"
-msgstr "Profielfoto 64px"
-
-#: ../../Zotlabs/Module/Id.php:26
-msgid "Profile Photo 80px"
-msgstr "Profielfoto 80px"
-
-#: ../../Zotlabs/Module/Id.php:27
-msgid "Profile Photo 128px"
-msgstr "Profielfoto 128px"
-
-#: ../../Zotlabs/Module/Id.php:28
-msgid "Timezone"
-msgstr "Tijdzone"
-
-#: ../../Zotlabs/Module/Id.php:29 ../../Zotlabs/Module/Profiles.php:735
-msgid "Homepage URL"
-msgstr "URL homepagina"
-
-#: ../../Zotlabs/Module/Id.php:30 ../../include/apps.php:153
-msgid "Language"
-msgstr "Taal"
-
-#: ../../Zotlabs/Module/Id.php:31
-msgid "Birth Year"
-msgstr "Geboortejaar"
+#: ../../Zotlabs/Module/Filestorage.php:88
+msgid "Permission Denied."
+msgstr "Toegang geweigerd"
-#: ../../Zotlabs/Module/Id.php:32
-msgid "Birth Month"
-msgstr "Geboortemaand"
+#: ../../Zotlabs/Module/Filestorage.php:104
+msgid "File not found."
+msgstr "Bestand niet gevonden."
-#: ../../Zotlabs/Module/Id.php:33
-msgid "Birth Day"
-msgstr "Geboortedag"
+#: ../../Zotlabs/Module/Filestorage.php:147
+msgid "Edit file permissions"
+msgstr "Bestandsrechten bewerken"
-#: ../../Zotlabs/Module/Id.php:34
-msgid "Birthdate"
-msgstr "Geboortedatum"
+#: ../../Zotlabs/Module/Filestorage.php:156
+msgid "Set/edit permissions"
+msgstr "Rechten instellen/bewerken"
-#: ../../Zotlabs/Module/Id.php:35 ../../Zotlabs/Module/Profiles.php:453
-msgid "Gender"
-msgstr "Geslacht"
+#: ../../Zotlabs/Module/Filestorage.php:157
+msgid "Include all files and sub folders"
+msgstr "Toepassen op alle bestanden en submappen"
-#: ../../Zotlabs/Module/Id.php:108 ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
-msgid "Male"
-msgstr "Man"
+#: ../../Zotlabs/Module/Filestorage.php:158
+msgid "Return to file list"
+msgstr "Terugkeren naar bestandlijst "
-#: ../../Zotlabs/Module/Id.php:110 ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
-msgid "Female"
-msgstr "Vrouw"
+#: ../../Zotlabs/Module/Filestorage.php:160
+msgid "Copy/paste this code to attach file to a post"
+msgstr "Kopieer/plak deze code om het bestand aan een bericht te koppelen"
-#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:193
-msgid "webpage"
-msgstr "Webpagina"
+#: ../../Zotlabs/Module/Filestorage.php:161
+msgid "Copy/paste this URL to link file from a web page"
+msgstr "Kopieer/plak deze URL om het bestand aan een externe webpagina te koppelen"
-#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:199
-msgid "block"
-msgstr "blok"
+#: ../../Zotlabs/Module/Filestorage.php:163
+msgid "Share this file"
+msgstr "Dit bestand delen"
-#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:196
-msgid "layout"
-msgstr "lay-out"
+#: ../../Zotlabs/Module/Filestorage.php:164
+msgid "Show URL to this file"
+msgstr "Toon URL van dit bestand"
-#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:202
-msgid "menu"
-msgstr "menu"
+#: ../../Zotlabs/Module/Filestorage.php:165
+msgid "Notify your contacts about this file"
+msgstr "Jouw connecties over dit bestand berichten"
-#: ../../Zotlabs/Module/Impel.php:196
-#, php-format
-msgid "%s element installed"
-msgstr "%s onderdeel geïnstalleerd"
+#: ../../Zotlabs/Module/Apps.php:47 ../../include/widgets.php:102
+#: ../../include/nav.php:163
+msgid "Apps"
+msgstr "Apps"
-#: ../../Zotlabs/Module/Impel.php:199
-#, php-format
-msgid "%s element installation failed"
-msgstr "Installatie %s-element mislukt"
+#: ../../Zotlabs/Module/Attach.php:13
+msgid "Item not available."
+msgstr "Item is niet aanwezig."
#: ../../Zotlabs/Module/Import.php:32
#, php-format
@@ -3032,7 +1746,7 @@ msgstr "Geïmporteerde bestand is leeg"
msgid "Warning: Database versions differ by %1$d updates."
msgstr "Waarschuwing: database-versies lopen %1$d updates achter."
-#: ../../Zotlabs/Module/Import.php:150 ../../include/import.php:80
+#: ../../Zotlabs/Module/Import.php:150 ../../include/import.php:86
msgid "Cloned channel not found. Import failed."
msgstr "Gekloond kanaal niet gevonden. Importeren mislukt."
@@ -3040,48 +1754,48 @@ msgstr "Gekloond kanaal niet gevonden. Importeren mislukt."
msgid "No channel. Import failed."
msgstr "Geen kanaal. Importeren mislukt."
-#: ../../Zotlabs/Module/Import.php:506
-#: ../../include/Import/import_diaspora.php:143
+#: ../../Zotlabs/Module/Import.php:510
+#: ../../include/Import/import_diaspora.php:142
msgid "Import completed."
msgstr "Import voltooid."
-#: ../../Zotlabs/Module/Import.php:528
+#: ../../Zotlabs/Module/Import.php:532
msgid "You must be logged in to use this feature."
msgstr "Je moet ingelogd zijn om dit onderdeel te kunnen gebruiken."
-#: ../../Zotlabs/Module/Import.php:533
+#: ../../Zotlabs/Module/Import.php:537
msgid "Import Channel"
msgstr "Kanaal importeren"
-#: ../../Zotlabs/Module/Import.php:534
+#: ../../Zotlabs/Module/Import.php:538
msgid ""
"Use this form to import an existing channel from a different server/hub. You"
" may retrieve the channel identity from the old server/hub via the network "
"or provide an export file."
msgstr "Gebruik dit formulier om een bestaand kanaal te importeren van een andere hub. Je kan de kanaal-identiteit van de oude hub via het netwerk ontvangen of een exportbestand verstrekken."
-#: ../../Zotlabs/Module/Import.php:535
+#: ../../Zotlabs/Module/Import.php:539
#: ../../Zotlabs/Module/Import_items.php:119
msgid "File to Upload"
msgstr "Bestand om te uploaden"
-#: ../../Zotlabs/Module/Import.php:536
+#: ../../Zotlabs/Module/Import.php:540
msgid "Or provide the old server/hub details"
msgstr "Of vul de gegevens van de oude hub in"
-#: ../../Zotlabs/Module/Import.php:537
+#: ../../Zotlabs/Module/Import.php:541
msgid "Your old identity address (xyz@example.com)"
msgstr "Jouw oude kanaaladres (xyz@example.com)"
-#: ../../Zotlabs/Module/Import.php:538
+#: ../../Zotlabs/Module/Import.php:542
msgid "Your old login email address"
msgstr "Het e-mailadres van je oude account"
-#: ../../Zotlabs/Module/Import.php:539
+#: ../../Zotlabs/Module/Import.php:543
msgid "Your old login password"
msgstr "Wachtwoord van jouw oude account"
-#: ../../Zotlabs/Module/Import.php:540
+#: ../../Zotlabs/Module/Import.php:544
msgid ""
"For either option, please choose whether to make this hub your new primary "
"address, or whether your old location should continue this role. You will be"
@@ -3089,105 +1803,22 @@ msgid ""
"primary location for files, photos, and media."
msgstr "Voor elke optie geldt dat je moet kiezen of je jouw primaire kanaaladres op deze hub wil instellen of dat jouw oude hub deze rol blijft vervullen."
-#: ../../Zotlabs/Module/Import.php:541
+#: ../../Zotlabs/Module/Import.php:545
msgid "Make this hub my primary location"
msgstr "Stel deze hub als mijn primaire locatie in"
-#: ../../Zotlabs/Module/Import.php:542
+#: ../../Zotlabs/Module/Import.php:546
msgid ""
"Import existing posts if possible (experimental - limited by available "
"memory"
msgstr "Importeer bestaande berichten wanneer mogelijk (experimenteel - afhankelijk van beschikbaar servergeheugen)"
-#: ../../Zotlabs/Module/Import.php:543
+#: ../../Zotlabs/Module/Import.php:547
msgid ""
"This process may take several minutes to complete. Please submit the form "
"only once and leave this page open until finished."
msgstr "Dit proces kan enkele minuten in beslag nemen. Klik maar één keer op opslaan en verlaat deze pagina niet alvorens het proces is voltooid."
-#: ../../Zotlabs/Module/Import_items.php:102
-msgid "Import completed"
-msgstr "Importeren voltooid"
-
-#: ../../Zotlabs/Module/Import_items.php:117
-msgid "Import Items"
-msgstr "Importeer items"
-
-#: ../../Zotlabs/Module/Import_items.php:118
-msgid ""
-"Use this form to import existing posts and content from an export file."
-msgstr "Gebruik dit formulier om bestaande berichten en andere inhoud vanuit een exportbestand te importeren."
-
-#: ../../Zotlabs/Module/Invite.php:29
-msgid "Total invitation limit exceeded."
-msgstr "Limiet voor aantal uitnodigingen overschreden."
-
-#: ../../Zotlabs/Module/Invite.php:53
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s : Geen geldig e-mailadres."
-
-#: ../../Zotlabs/Module/Invite.php:63
-msgid "Please join us on $Projectname"
-msgstr "Uitnodiging voor $Projectname"
-
-#: ../../Zotlabs/Module/Invite.php:74
-msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr "Limiet voor aantal uitnodigingen overschreden. Neem contact op met je hub-beheerder."
-
-#: ../../Zotlabs/Module/Invite.php:79
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s: Aflevering bericht mislukt."
-
-#: ../../Zotlabs/Module/Invite.php:83
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d bericht verzonden."
-msgstr[1] "%d berichten verzonden."
-
-#: ../../Zotlabs/Module/Invite.php:102
-msgid "You have no more invitations available"
-msgstr "Je hebt geen uitnodigingen meer beschikbaar"
-
-#: ../../Zotlabs/Module/Invite.php:133
-msgid "Send invitations"
-msgstr "Uitnodigingen verzenden"
-
-#: ../../Zotlabs/Module/Invite.php:134
-msgid "Enter email addresses, one per line:"
-msgstr "Voer e-mailadressen in, één per regel:"
-
-#: ../../Zotlabs/Module/Invite.php:135 ../../Zotlabs/Module/Mail.php:250
-msgid "Your message:"
-msgstr "Jouw bericht:"
-
-#: ../../Zotlabs/Module/Invite.php:136
-msgid "Please join my community on $Projectname."
-msgstr "Hierbij nodig ik je uit om mij, en andere vrienden en kennissen, op $Projectname te vergezellen. Lees meer over $Projectname op http://hubzilla.org"
-
-#: ../../Zotlabs/Module/Invite.php:138
-msgid "You will need to supply this invitation code:"
-msgstr "Je moet deze uitnodigingscode opgeven:"
-
-#: ../../Zotlabs/Module/Invite.php:139
-msgid ""
-"1. Register at any $Projectname location (they are all inter-connected)"
-msgstr "1. Registreer je op een willekeurige $Projectname-hub (ze zijn allemaal onderling met elkaar verbonden):"
-
-#: ../../Zotlabs/Module/Invite.php:141
-msgid "2. Enter my $Projectname network address into the site searchbar."
-msgstr "2. Nadat je bent ingelogd en een kanaal hebt aangemaakt kan je mijn $Projectname-kanaaladres in het zoekveld invullen:"
-
-#: ../../Zotlabs/Module/Invite.php:142
-msgid "or visit"
-msgstr "of bezoek"
-
-#: ../../Zotlabs/Module/Invite.php:144
-msgid "3. Click [Connect]"
-msgstr "3. Klik op [+ Verbinden]"
-
#: ../../Zotlabs/Module/Item.php:178
msgid "Unable to locate original post."
msgstr "Niet in staat om de originele locatie van het bericht te vinden. "
@@ -3222,22 +1853,151 @@ msgstr "Je hebt jouw limiet van %1$.0f berichten bereikt."
msgid "You have reached your limit of %1$.0f webpages."
msgstr "Je hebt jouw limiet van %1$.0f webpagina's bereikt."
-#: ../../Zotlabs/Module/Layouts.php:179 ../../include/text.php:2253
+#: ../../Zotlabs/Module/Layouts.php:181 ../../include/text.php:2267
msgid "Layouts"
msgstr "Lay-outs"
-#: ../../Zotlabs/Module/Layouts.php:181
+#: ../../Zotlabs/Module/Layouts.php:183
msgid "Comanche page description language help"
msgstr "Hulp met de paginabeschrijvingstaal Comanche"
-#: ../../Zotlabs/Module/Layouts.php:185
+#: ../../Zotlabs/Module/Layouts.php:187
msgid "Layout Description"
msgstr "Lay-out-omschrijving"
-#: ../../Zotlabs/Module/Layouts.php:190
+#: ../../Zotlabs/Module/Layouts.php:192
msgid "Download PDL file"
msgstr "Download PDL-bestand"
+#: ../../Zotlabs/Module/Home.php:61 ../../Zotlabs/Module/Home.php:69
+#: ../../Zotlabs/Module/Siteinfo.php:65
+msgid "$Projectname"
+msgstr "$Projectname"
+
+#: ../../Zotlabs/Module/Home.php:79
+#, php-format
+msgid "Welcome to %s"
+msgstr "Welkom op %s"
+
+#: ../../Zotlabs/Module/Id.php:13
+msgid "First Name"
+msgstr "Voornaam"
+
+#: ../../Zotlabs/Module/Id.php:14
+msgid "Last Name"
+msgstr "Achternaam"
+
+#: ../../Zotlabs/Module/Id.php:15
+msgid "Nickname"
+msgstr "Bijnaam"
+
+#: ../../Zotlabs/Module/Id.php:16
+msgid "Full Name"
+msgstr "Volledige naam"
+
+#: ../../Zotlabs/Module/Id.php:17 ../../Zotlabs/Module/Id.php:18
+#: ../../Zotlabs/Module/Admin.php:1035 ../../Zotlabs/Module/Admin.php:1047
+#: ../../include/network.php:2151 ../../boot.php:1705
+msgid "Email"
+msgstr "E-mail"
+
+#: ../../Zotlabs/Module/Id.php:19 ../../Zotlabs/Module/Id.php:20
+#: ../../Zotlabs/Module/Id.php:21 ../../Zotlabs/Lib/Apps.php:236
+msgid "Profile Photo"
+msgstr "Profielfoto"
+
+#: ../../Zotlabs/Module/Id.php:22
+msgid "Profile Photo 16px"
+msgstr "Profielfoto 16px"
+
+#: ../../Zotlabs/Module/Id.php:23
+msgid "Profile Photo 32px"
+msgstr "Profielfoto 32px"
+
+#: ../../Zotlabs/Module/Id.php:24
+msgid "Profile Photo 48px"
+msgstr "Profielfoto 48px"
+
+#: ../../Zotlabs/Module/Id.php:25
+msgid "Profile Photo 64px"
+msgstr "Profielfoto 64px"
+
+#: ../../Zotlabs/Module/Id.php:26
+msgid "Profile Photo 80px"
+msgstr "Profielfoto 80px"
+
+#: ../../Zotlabs/Module/Id.php:27
+msgid "Profile Photo 128px"
+msgstr "Profielfoto 128px"
+
+#: ../../Zotlabs/Module/Id.php:28
+msgid "Timezone"
+msgstr "Tijdzone"
+
+#: ../../Zotlabs/Module/Id.php:29 ../../Zotlabs/Module/Profiles.php:731
+msgid "Homepage URL"
+msgstr "URL homepagina"
+
+#: ../../Zotlabs/Module/Id.php:30 ../../Zotlabs/Lib/Apps.php:234
+msgid "Language"
+msgstr "Taal"
+
+#: ../../Zotlabs/Module/Id.php:31
+msgid "Birth Year"
+msgstr "Geboortejaar"
+
+#: ../../Zotlabs/Module/Id.php:32
+msgid "Birth Month"
+msgstr "Geboortemaand"
+
+#: ../../Zotlabs/Module/Id.php:33
+msgid "Birth Day"
+msgstr "Geboortedag"
+
+#: ../../Zotlabs/Module/Id.php:34
+msgid "Birthdate"
+msgstr "Geboortedatum"
+
+#: ../../Zotlabs/Module/Id.php:35 ../../Zotlabs/Module/Profiles.php:454
+msgid "Gender"
+msgstr "Geslacht"
+
+#: ../../Zotlabs/Module/Id.php:108 ../../include/selectors.php:49
+#: ../../include/selectors.php:66
+msgid "Male"
+msgstr "Man"
+
+#: ../../Zotlabs/Module/Id.php:110 ../../include/selectors.php:49
+#: ../../include/selectors.php:66
+msgid "Female"
+msgstr "Vrouw"
+
+#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:192
+msgid "webpage"
+msgstr "Webpagina"
+
+#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:198
+msgid "block"
+msgstr "blok"
+
+#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:195
+msgid "layout"
+msgstr "lay-out"
+
+#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:201
+msgid "menu"
+msgstr "menu"
+
+#: ../../Zotlabs/Module/Impel.php:196
+#, php-format
+msgid "%s element installed"
+msgstr "%s onderdeel geïnstalleerd"
+
+#: ../../Zotlabs/Module/Impel.php:199
+#, php-format
+msgid "%s element installation failed"
+msgstr "Installatie %s-element mislukt"
+
#: ../../Zotlabs/Module/Like.php:19
msgid "Like/Dislike"
msgstr "Leuk/niet leuk"
@@ -3332,6 +2092,89 @@ msgstr "Actie voltooid"
msgid "Thank you."
msgstr "Bedankt"
+#: ../../Zotlabs/Module/Import_items.php:102
+msgid "Import completed"
+msgstr "Importeren voltooid"
+
+#: ../../Zotlabs/Module/Import_items.php:117
+msgid "Import Items"
+msgstr "Importeer items"
+
+#: ../../Zotlabs/Module/Import_items.php:118
+msgid ""
+"Use this form to import existing posts and content from an export file."
+msgstr "Gebruik dit formulier om bestaande berichten en andere inhoud vanuit een exportbestand te importeren."
+
+#: ../../Zotlabs/Module/Invite.php:29
+msgid "Total invitation limit exceeded."
+msgstr "Limiet voor aantal uitnodigingen overschreden."
+
+#: ../../Zotlabs/Module/Invite.php:53
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s : Geen geldig e-mailadres."
+
+#: ../../Zotlabs/Module/Invite.php:63
+msgid "Please join us on $Projectname"
+msgstr "Uitnodiging voor $Projectname"
+
+#: ../../Zotlabs/Module/Invite.php:74
+msgid "Invitation limit exceeded. Please contact your site administrator."
+msgstr "Limiet voor aantal uitnodigingen overschreden. Neem contact op met je hub-beheerder."
+
+#: ../../Zotlabs/Module/Invite.php:79
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s: Aflevering bericht mislukt."
+
+#: ../../Zotlabs/Module/Invite.php:83
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d bericht verzonden."
+msgstr[1] "%d berichten verzonden."
+
+#: ../../Zotlabs/Module/Invite.php:102
+msgid "You have no more invitations available"
+msgstr "Je hebt geen uitnodigingen meer beschikbaar"
+
+#: ../../Zotlabs/Module/Invite.php:133
+msgid "Send invitations"
+msgstr "Uitnodigingen verzenden"
+
+#: ../../Zotlabs/Module/Invite.php:134
+msgid "Enter email addresses, one per line:"
+msgstr "Voer e-mailadressen in, één per regel:"
+
+#: ../../Zotlabs/Module/Invite.php:135 ../../Zotlabs/Module/Mail.php:249
+msgid "Your message:"
+msgstr "Jouw bericht:"
+
+#: ../../Zotlabs/Module/Invite.php:136
+msgid "Please join my community on $Projectname."
+msgstr "Hierbij nodig ik je uit om mij, en andere vrienden en kennissen, op $Projectname te vergezellen. Lees meer over $Projectname op http://hubzilla.org"
+
+#: ../../Zotlabs/Module/Invite.php:138
+msgid "You will need to supply this invitation code:"
+msgstr "Je moet deze uitnodigingscode opgeven:"
+
+#: ../../Zotlabs/Module/Invite.php:139
+msgid ""
+"1. Register at any $Projectname location (they are all inter-connected)"
+msgstr "1. Registreer je op een willekeurige $Projectname-hub (ze zijn allemaal onderling met elkaar verbonden):"
+
+#: ../../Zotlabs/Module/Invite.php:141
+msgid "2. Enter my $Projectname network address into the site searchbar."
+msgstr "2. Nadat je bent ingelogd en een kanaal hebt aangemaakt kan je mijn $Projectname-kanaaladres in het zoekveld invullen:"
+
+#: ../../Zotlabs/Module/Invite.php:142
+msgid "or visit"
+msgstr "of bezoek"
+
+#: ../../Zotlabs/Module/Invite.php:144
+msgid "3. Click [Connect]"
+msgstr "3. Klik op [+ Verbinden]"
+
#: ../../Zotlabs/Module/Lockview.php:61
msgid "Remote privacy information not available."
msgstr "Privacy-informatie op afstand niet beschikbaar."
@@ -3366,6 +2209,11 @@ msgstr "Geen locaties gevonden."
msgid "Manage Channel Locations"
msgstr "Kanaallocaties beheren"
+#: ../../Zotlabs/Module/Locs.php:118 ../../Zotlabs/Module/Profiles.php:470
+#: ../../Zotlabs/Module/Admin.php:1224
+msgid "Address"
+msgstr "Kanaaladres"
+
#: ../../Zotlabs/Module/Locs.php:119
msgid "Primary"
msgstr "Primair"
@@ -3392,80 +2240,7 @@ msgstr "Wij adviseren, wanneer dit (nog) mogelijk is, de locatie te verwijderen
msgid "Use this form to drop the location if the hub is no longer operating."
msgstr "Gebruik dit formulier om de locatie te verwijderen wanneer de hub van de kloon niet meer operationeel is."
-#: ../../Zotlabs/Module/Lostpass.php:19
-msgid "No valid account found."
-msgstr "Geen geldige account gevonden."
-
-#: ../../Zotlabs/Module/Lostpass.php:33
-msgid "Password reset request issued. Check your email."
-msgstr "Het verzoek om je wachtwoord opnieuw in te stellen is behandeld. Controleer je e-mail."
-
-#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:107
-#, php-format
-msgid "Site Member (%s)"
-msgstr "Lid van hub (%s)"
-
-#: ../../Zotlabs/Module/Lostpass.php:44
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "Verzoek tot het opnieuw instellen van een wachtwoord op %s is ingediend"
-
-#: ../../Zotlabs/Module/Lostpass.php:67
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "Het verzoek kon niet worden geverifieerd. (Mogelijk heb je al eerder een verzoek ingediend.) Opnieuw instellen van wachtwoord is mislukt."
-
-#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1623
-msgid "Password Reset"
-msgstr "Wachtwoord vergeten?"
-
-#: ../../Zotlabs/Module/Lostpass.php:91
-msgid "Your password has been reset as requested."
-msgstr "Jouw wachtwoord is opnieuw ingesteld zoals je had verzocht."
-
-#: ../../Zotlabs/Module/Lostpass.php:92
-msgid "Your new password is"
-msgstr "Jouw nieuwe wachtwoord is"
-
-#: ../../Zotlabs/Module/Lostpass.php:93
-msgid "Save or copy your new password - and then"
-msgstr "Kopieer of sla je nieuwe wachtwoord op - en"
-
-#: ../../Zotlabs/Module/Lostpass.php:94
-msgid "click here to login"
-msgstr "klik dan hier om in te loggen"
-
-#: ../../Zotlabs/Module/Lostpass.php:95
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Jouw wachtwoord kan worden veranderd onder <em>instellingen</em>, nadat je succesvol bent ingelogd."
-
-#: ../../Zotlabs/Module/Lostpass.php:112
-#, php-format
-msgid "Your password has changed at %s"
-msgstr "Jouw wachtwoord op %s is veranderd"
-
-#: ../../Zotlabs/Module/Lostpass.php:127
-msgid "Forgot your Password?"
-msgstr "Wachtwoord vergeten?"
-
-#: ../../Zotlabs/Module/Lostpass.php:128
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Voer je e-mailadres in en verstuur deze om je wachtwoord opnieuw in te stellen. Controleer hierna hier je e-mail voor verdere instructies."
-
-#: ../../Zotlabs/Module/Lostpass.php:129
-msgid "Email Address"
-msgstr "E-mailadres"
-
-#: ../../Zotlabs/Module/Lostpass.php:130
-msgid "Reset"
-msgstr "Opnieuw instellen"
-
-#: ../../Zotlabs/Module/Magic.php:73
+#: ../../Zotlabs/Module/Magic.php:71
msgid "Hub not found."
msgstr "Hub niet gevonden."
@@ -3473,145 +2248,216 @@ msgstr "Hub niet gevonden."
msgid "Unable to lookup recipient."
msgstr "Niet in staat om ontvanger op te zoeken."
-#: ../../Zotlabs/Module/Mail.php:46
+#: ../../Zotlabs/Module/Mail.php:45
msgid "Unable to communicate with requested channel."
msgstr "Niet in staat om met het aangevraagde kanaal te communiceren."
-#: ../../Zotlabs/Module/Mail.php:53
+#: ../../Zotlabs/Module/Mail.php:52
msgid "Cannot verify requested channel."
msgstr "Kan opgevraagd kanaal niet verifieren"
-#: ../../Zotlabs/Module/Mail.php:79
+#: ../../Zotlabs/Module/Mail.php:78
msgid "Selected channel has private message restrictions. Send failed."
msgstr "Gekozen kanaal heeft restricties voor privéberichten. Verzenden mislukt."
-#: ../../Zotlabs/Module/Mail.php:144
+#: ../../Zotlabs/Module/Mail.php:143
msgid "Messages"
msgstr "Berichten"
-#: ../../Zotlabs/Module/Mail.php:179
+#: ../../Zotlabs/Module/Mail.php:178
msgid "Message recalled."
msgstr "Bericht ingetrokken."
-#: ../../Zotlabs/Module/Mail.php:192
+#: ../../Zotlabs/Module/Mail.php:191
msgid "Conversation removed."
msgstr "Conversatie verwijderd"
-#: ../../Zotlabs/Module/Mail.php:235
+#: ../../Zotlabs/Module/Mail.php:206 ../../Zotlabs/Module/Mail.php:315
+msgid "Expires YYYY-MM-DD HH:MM"
+msgstr "Verloopt op DD-MM-YYYY om HH:MM"
+
+#: ../../Zotlabs/Module/Mail.php:234
msgid "Requested channel is not in this network"
msgstr "Opgevraagd kanaal is niet in dit netwerk beschikbaar"
-#: ../../Zotlabs/Module/Mail.php:243
+#: ../../Zotlabs/Module/Mail.php:242
msgid "Send Private Message"
msgstr "Privébericht versturen"
-#: ../../Zotlabs/Module/Mail.php:244 ../../Zotlabs/Module/Mail.php:374
+#: ../../Zotlabs/Module/Mail.php:243 ../../Zotlabs/Module/Mail.php:368
msgid "To:"
msgstr "Aan:"
-#: ../../Zotlabs/Module/Mail.php:247 ../../Zotlabs/Module/Mail.php:376
+#: ../../Zotlabs/Module/Mail.php:246 ../../Zotlabs/Module/Mail.php:370
msgid "Subject:"
msgstr "Onderwerp:"
-#: ../../Zotlabs/Module/Mail.php:254
+#: ../../Zotlabs/Module/Mail.php:251 ../../Zotlabs/Module/Mail.php:376
+#: ../../include/conversation.php:1220
+msgid "Attach file"
+msgstr "Bestand toevoegen"
+
+#: ../../Zotlabs/Module/Mail.php:253
msgid "Send"
msgstr "Verzenden"
-#: ../../Zotlabs/Module/Mail.php:346
+#: ../../Zotlabs/Module/Mail.php:256 ../../Zotlabs/Module/Mail.php:381
+#: ../../include/conversation.php:1251
+msgid "Set expiration date"
+msgstr "Verloopdatum instellen"
+
+#: ../../Zotlabs/Module/Mail.php:340
msgid "Delete message"
msgstr "Bericht verwijderen"
-#: ../../Zotlabs/Module/Mail.php:347
+#: ../../Zotlabs/Module/Mail.php:341
msgid "Delivery report"
msgstr "Afleveringsrapport"
-#: ../../Zotlabs/Module/Mail.php:348
+#: ../../Zotlabs/Module/Mail.php:342
msgid "Recall message"
msgstr "Bericht intrekken"
-#: ../../Zotlabs/Module/Mail.php:350
+#: ../../Zotlabs/Module/Mail.php:344
msgid "Message has been recalled."
msgstr "Bericht is ingetrokken."
-#: ../../Zotlabs/Module/Mail.php:367
+#: ../../Zotlabs/Module/Mail.php:361
msgid "Delete Conversation"
msgstr "Verwijder conversatie"
-#: ../../Zotlabs/Module/Mail.php:369
+#: ../../Zotlabs/Module/Mail.php:363
msgid ""
"No secure communications available. You <strong>may</strong> be able to "
"respond from the sender's profile page."
msgstr "Geen veilige communicatie beschikbaar. <strong>Mogelijk</strong> kan je reageren op de kanaalpagina van de afzender."
-#: ../../Zotlabs/Module/Mail.php:373
+#: ../../Zotlabs/Module/Mail.php:367
msgid "Send Reply"
msgstr "Antwoord versturen"
-#: ../../Zotlabs/Module/Mail.php:378
+#: ../../Zotlabs/Module/Mail.php:372
#, php-format
msgid "Your message for %s (%s):"
msgstr "Jouw privébericht aan %s (%s):"
-#: ../../Zotlabs/Module/Manage.php:134
+#: ../../Zotlabs/Module/Manage.php:136
#: ../../Zotlabs/Module/New_channel.php:121
#, php-format
msgid "You have created %1$.0f of %2$.0f allowed channels."
msgstr "Je hebt %1$.0f van totaal %2$.0f toegestane kanalen aangemaakt."
-#: ../../Zotlabs/Module/Manage.php:141
+#: ../../Zotlabs/Module/Manage.php:143
msgid "Create a new channel"
msgstr "Nieuw kanaal aanmaken"
-#: ../../Zotlabs/Module/Manage.php:162 ../../include/apps.php:132
+#: ../../Zotlabs/Module/Manage.php:164 ../../Zotlabs/Lib/Apps.php:213
#: ../../include/nav.php:206
msgid "Channel Manager"
msgstr "Kanaalbeheer"
-#: ../../Zotlabs/Module/Manage.php:163
+#: ../../Zotlabs/Module/Manage.php:165
msgid "Current Channel"
msgstr "Huidig kanaal"
-#: ../../Zotlabs/Module/Manage.php:165
+#: ../../Zotlabs/Module/Manage.php:167
msgid "Switch to one of your channels by selecting it."
msgstr "Activeer een van jouw andere kanalen door er op te klikken."
-#: ../../Zotlabs/Module/Manage.php:166
+#: ../../Zotlabs/Module/Manage.php:168
msgid "Default Channel"
msgstr "Standaardkanaal"
-#: ../../Zotlabs/Module/Manage.php:167
+#: ../../Zotlabs/Module/Manage.php:169
msgid "Make Default"
msgstr "Als standaard instellen"
-#: ../../Zotlabs/Module/Manage.php:170
+#: ../../Zotlabs/Module/Manage.php:172
#, php-format
msgid "%d new messages"
msgstr "%d nieuwe berichten"
-#: ../../Zotlabs/Module/Manage.php:171
+#: ../../Zotlabs/Module/Manage.php:173
#, php-format
msgid "%d new introductions"
msgstr "%d nieuwe connectieverzoeken"
-#: ../../Zotlabs/Module/Manage.php:173
+#: ../../Zotlabs/Module/Manage.php:175
msgid "Delegated Channel"
msgstr "Uitbesteed kanaal"
-#: ../../Zotlabs/Module/Match.php:26
-msgid "Profile Match"
-msgstr "Profielovereenkomst"
+#: ../../Zotlabs/Module/Lostpass.php:19
+msgid "No valid account found."
+msgstr "Geen geldige account gevonden."
-#: ../../Zotlabs/Module/Match.php:35
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr "Je hebt geen trefwoorden waarmee overeenkomsten gevonden kunnen worden. Voeg enkele trefwoorden aan je standaardprofiel toe."
+#: ../../Zotlabs/Module/Lostpass.php:33
+msgid "Password reset request issued. Check your email."
+msgstr "Het verzoek om je wachtwoord opnieuw in te stellen is behandeld. Controleer je e-mail."
-#: ../../Zotlabs/Module/Match.php:67
-msgid "is interested in:"
-msgstr "is geïnteresseerd in:"
+#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:107
+#, php-format
+msgid "Site Member (%s)"
+msgstr "Lid van hub (%s)"
-#: ../../Zotlabs/Module/Match.php:74
-msgid "No matches"
-msgstr "Geen overeenkomsten"
+#: ../../Zotlabs/Module/Lostpass.php:44
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "Verzoek tot het opnieuw instellen van een wachtwoord op %s is ingediend"
+
+#: ../../Zotlabs/Module/Lostpass.php:67
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "Het verzoek kon niet worden geverifieerd. (Mogelijk heb je al eerder een verzoek ingediend.) Opnieuw instellen van wachtwoord is mislukt."
+
+#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1711
+msgid "Password Reset"
+msgstr "Wachtwoord vergeten?"
+
+#: ../../Zotlabs/Module/Lostpass.php:91
+msgid "Your password has been reset as requested."
+msgstr "Jouw wachtwoord is opnieuw ingesteld zoals je had verzocht."
+
+#: ../../Zotlabs/Module/Lostpass.php:92
+msgid "Your new password is"
+msgstr "Jouw nieuwe wachtwoord is"
+
+#: ../../Zotlabs/Module/Lostpass.php:93
+msgid "Save or copy your new password - and then"
+msgstr "Kopieer of sla je nieuwe wachtwoord op - en"
+
+#: ../../Zotlabs/Module/Lostpass.php:94
+msgid "click here to login"
+msgstr "klik dan hier om in te loggen"
+
+#: ../../Zotlabs/Module/Lostpass.php:95
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Jouw wachtwoord kan worden veranderd onder <em>instellingen</em>, nadat je succesvol bent ingelogd."
+
+#: ../../Zotlabs/Module/Lostpass.php:112
+#, php-format
+msgid "Your password has changed at %s"
+msgstr "Jouw wachtwoord op %s is veranderd"
+
+#: ../../Zotlabs/Module/Lostpass.php:127
+msgid "Forgot your Password?"
+msgstr "Wachtwoord vergeten?"
+
+#: ../../Zotlabs/Module/Lostpass.php:128
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Voer je e-mailadres in en verstuur deze om je wachtwoord opnieuw in te stellen. Controleer hierna hier je e-mail voor verdere instructies."
+
+#: ../../Zotlabs/Module/Lostpass.php:129
+msgid "Email Address"
+msgstr "E-mailadres"
+
+#: ../../Zotlabs/Module/Lostpass.php:130
+msgid "Reset"
+msgstr "Opnieuw instellen"
#: ../../Zotlabs/Module/Menu.php:49
msgid "Unable to update menu."
@@ -3649,7 +2495,7 @@ msgstr "Menu kan gebruikt worden om bladwijzers in op te slaan"
msgid "Submit and proceed"
msgstr "Opslaan en doorgaan"
-#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2252
+#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2266
msgid "Menus"
msgstr "Menu's"
@@ -3710,6 +2556,74 @@ msgstr "Bladwijzers toestaan"
msgid "Not found."
msgstr "Niet gevonden."
+#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:260
+#, php-format
+msgctxt "mood"
+msgid "%1$s is %2$s"
+msgstr "%1$s is %2$s"
+
+#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:225
+msgid "Mood"
+msgstr "Stemming"
+
+#: ../../Zotlabs/Module/Mood.php:136
+msgid "Set your current mood and tell your friends"
+msgstr "Noteer je huidige stemming en toon het aan je connecties"
+
+#: ../../Zotlabs/Module/Match.php:26
+msgid "Profile Match"
+msgstr "Profielovereenkomst"
+
+#: ../../Zotlabs/Module/Match.php:35
+msgid "No keywords to match. Please add keywords to your default profile."
+msgstr "Je hebt geen trefwoorden waarmee overeenkomsten gevonden kunnen worden. Voeg enkele trefwoorden aan je standaardprofiel toe."
+
+#: ../../Zotlabs/Module/Match.php:67
+msgid "is interested in:"
+msgstr "is geïnteresseerd in:"
+
+#: ../../Zotlabs/Module/Match.php:74
+msgid "No matches"
+msgstr "Geen overeenkomsten"
+
+#: ../../Zotlabs/Module/Network.php:96
+msgid "No such group"
+msgstr "Collectie niet gevonden"
+
+#: ../../Zotlabs/Module/Network.php:136
+msgid "No such channel"
+msgstr "Niet zo'n kanaal"
+
+#: ../../Zotlabs/Module/Network.php:141
+msgid "forum"
+msgstr "forum"
+
+#: ../../Zotlabs/Module/Network.php:153
+msgid "Search Results For:"
+msgstr "Zoekresultaten voor:"
+
+#: ../../Zotlabs/Module/Network.php:217
+msgid "Privacy group is empty"
+msgstr "Privacygroep is leeg"
+
+#: ../../Zotlabs/Module/Network.php:226
+msgid "Privacy group: "
+msgstr "Privacygroep: "
+
+#: ../../Zotlabs/Module/Network.php:252
+msgid "Invalid connection."
+msgstr "Ongeldige connectie."
+
+#: ../../Zotlabs/Module/Notify.php:57
+#: ../../Zotlabs/Module/Notifications.php:98
+msgid "No more system notifications."
+msgstr "Geen systeemnotificaties meer."
+
+#: ../../Zotlabs/Module/Notify.php:61
+#: ../../Zotlabs/Module/Notifications.php:102
+msgid "System Notifications"
+msgstr "Systeemnotificaties"
+
#: ../../Zotlabs/Module/Mitem.php:52
msgid "Unable to create element."
msgstr "Niet in staat om onderdeel aan te maken."
@@ -3727,7 +2641,7 @@ msgid "Menu Item Permissions"
msgstr "Permissies menu-item"
#: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:227
-#: ../../Zotlabs/Module/Settings.php:1066
+#: ../../Zotlabs/Module/Settings.php:1068
msgid "(click to open/close)"
msgstr "(klik om te openen/sluiten)"
@@ -3827,48 +2741,6 @@ msgstr "Menu-element bewerken"
msgid "Link text"
msgstr "Linktekst"
-#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:260
-#, php-format
-msgctxt "mood"
-msgid "%1$s is %2$s"
-msgstr "%1$s is %2$s"
-
-#: ../../Zotlabs/Module/Mood.php:135 ../../include/apps.php:144
-msgid "Mood"
-msgstr "Stemming"
-
-#: ../../Zotlabs/Module/Mood.php:136
-msgid "Set your current mood and tell your friends"
-msgstr "Noteer je huidige stemming en toon het aan je connecties"
-
-#: ../../Zotlabs/Module/Network.php:95
-msgid "No such group"
-msgstr "Collectie niet gevonden"
-
-#: ../../Zotlabs/Module/Network.php:135
-msgid "No such channel"
-msgstr "Niet zo'n kanaal"
-
-#: ../../Zotlabs/Module/Network.php:140
-msgid "forum"
-msgstr "forum"
-
-#: ../../Zotlabs/Module/Network.php:152
-msgid "Search Results For:"
-msgstr "Zoekresultaten voor:"
-
-#: ../../Zotlabs/Module/Network.php:216
-msgid "Privacy group is empty"
-msgstr "Privacygroep is leeg"
-
-#: ../../Zotlabs/Module/Network.php:225
-msgid "Privacy group: "
-msgstr "Privacygroep: "
-
-#: ../../Zotlabs/Module/Network.php:251
-msgid "Invalid connection."
-msgstr "Ongeldige connectie."
-
#: ../../Zotlabs/Module/New_channel.php:128
#: ../../Zotlabs/Module/Register.php:231
msgid "Name or caption"
@@ -3931,385 +2803,378 @@ msgstr "Ongeldige verzoek identificator (request identifier)"
msgid "Discard"
msgstr "Annuleren"
-#: ../../Zotlabs/Module/Notifications.php:98
-#: ../../Zotlabs/Module/Notify.php:57
-msgid "No more system notifications."
-msgstr "Geen systeemnotificaties meer."
-
-#: ../../Zotlabs/Module/Notifications.php:102
-#: ../../Zotlabs/Module/Notify.php:61
-msgid "System Notifications"
-msgstr "Systeemnotificaties"
-
#: ../../Zotlabs/Module/Notifications.php:103 ../../include/nav.php:191
msgid "Mark all system notifications seen"
msgstr "Markeer alle systeemnotificaties als bekeken"
-#: ../../Zotlabs/Module/Oexchange.php:27
-msgid "Unable to find your hub."
-msgstr "Niet in staat om je hub te vinden"
-
-#: ../../Zotlabs/Module/Oexchange.php:41
-msgid "Post successful."
-msgstr "Verzenden bericht geslaagd."
-
-#: ../../Zotlabs/Module/Openid.php:30
-msgid "OpenID protocol error. No ID returned."
-msgstr "OpenID-protocolfout. Geen ID terugontvangen."
-
-#: ../../Zotlabs/Module/Openid.php:193 ../../include/auth.php:226
-msgid "Login failed."
-msgstr "Inloggen mislukt."
-
-#: ../../Zotlabs/Module/Page.php:133
-msgid ""
-"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
-"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
-" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
-"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
-"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
-"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
-
-#: ../../Zotlabs/Module/Pconfig.php:26 ../../Zotlabs/Module/Pconfig.php:59
-msgid "This setting requires special processing and editing has been blocked."
-msgstr "Deze instelling vereist een speciaal proces en bewerken is geblokkeerd."
-
-#: ../../Zotlabs/Module/Pconfig.php:48
-msgid "Configuration Editor"
-msgstr "Configuratiebewerker"
-
-#: ../../Zotlabs/Module/Pconfig.php:49
-msgid ""
-"Warning: Changing some settings could render your channel inoperable. Please"
-" leave this page unless you are comfortable with and knowledgeable about how"
-" to correctly use this feature."
-msgstr "Waarschuwing: het veranderen van sommige instellingen kunnen jouw kanaal onklaar maken. Verlaat deze pagina, tenzij je weet waar je mee bezig bent en voldoende kennis bezit over hoe je deze functies moet gebruiken. "
-
-#: ../../Zotlabs/Module/Pdledit.php:18
-msgid "Layout updated."
-msgstr "Lay-out bijgewerkt."
-
-#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Pdledit.php:61
-msgid "Edit System Page Description"
-msgstr "Systeempagina's bewerken"
-
-#: ../../Zotlabs/Module/Pdledit.php:56
-msgid "Layout not found."
-msgstr "Lay-out niet gevonden."
-
-#: ../../Zotlabs/Module/Pdledit.php:62
-msgid "Module Name:"
-msgstr "Modulenaam:"
-
-#: ../../Zotlabs/Module/Pdledit.php:63
-msgid "Layout Help"
-msgstr "Lay-out-hulp"
-
-#: ../../Zotlabs/Module/Photos.php:83
+#: ../../Zotlabs/Module/Photos.php:84
msgid "Page owner information could not be retrieved."
msgstr "Informatie over de pagina-eigenaar werd niet ontvangen."
-#: ../../Zotlabs/Module/Photos.php:98 ../../Zotlabs/Module/Photos.php:742
+#: ../../Zotlabs/Module/Photos.php:99 ../../Zotlabs/Module/Photos.php:743
#: ../../Zotlabs/Module/Profile_photo.php:114
#: ../../Zotlabs/Module/Profile_photo.php:206
#: ../../Zotlabs/Module/Profile_photo.php:294
-#: ../../include/photo/photo_driver.php:722
+#: ../../include/photo/photo_driver.php:718
msgid "Profile Photos"
msgstr "Profielfoto's"
-#: ../../Zotlabs/Module/Photos.php:104 ../../Zotlabs/Module/Photos.php:148
+#: ../../Zotlabs/Module/Photos.php:105 ../../Zotlabs/Module/Photos.php:149
msgid "Album not found."
msgstr "Album niet gevonden."
-#: ../../Zotlabs/Module/Photos.php:131
+#: ../../Zotlabs/Module/Photos.php:132
msgid "Delete Album"
msgstr "Verwijder album"
-#: ../../Zotlabs/Module/Photos.php:152
+#: ../../Zotlabs/Module/Photos.php:153
msgid ""
"Multiple storage folders exist with this album name, but within different "
"directories. Please remove the desired folder or folders using the Files "
"manager"
msgstr "Er bestaan meerdere submappen met deze albumnaam, maar verspreidt over verschillende mappen. Verwijder de gewenste map(pen) met de bestandsbeheerder."
-#: ../../Zotlabs/Module/Photos.php:209 ../../Zotlabs/Module/Photos.php:1052
+#: ../../Zotlabs/Module/Photos.php:210 ../../Zotlabs/Module/Photos.php:1053
msgid "Delete Photo"
msgstr "Verwijder foto"
-#: ../../Zotlabs/Module/Photos.php:532
+#: ../../Zotlabs/Module/Photos.php:533
msgid "No photos selected"
msgstr "Geen foto's geselecteerd"
-#: ../../Zotlabs/Module/Photos.php:581
+#: ../../Zotlabs/Module/Photos.php:582
msgid "Access to this item is restricted."
msgstr "Toegang tot dit item is beperkt."
-#: ../../Zotlabs/Module/Photos.php:620
+#: ../../Zotlabs/Module/Photos.php:621
#, php-format
msgid "%1$.2f MB of %2$.2f MB photo storage used."
msgstr "%1$.2f MB van %2$.2f MB aan foto-opslag gebruikt."
-#: ../../Zotlabs/Module/Photos.php:623
+#: ../../Zotlabs/Module/Photos.php:624
#, php-format
msgid "%1$.2f MB photo storage used."
msgstr "%1$.2f MB aan foto-opslag gebruikt."
-#: ../../Zotlabs/Module/Photos.php:659
+#: ../../Zotlabs/Module/Photos.php:660
msgid "Upload Photos"
msgstr "Foto's uploaden"
-#: ../../Zotlabs/Module/Photos.php:663
+#: ../../Zotlabs/Module/Photos.php:664
msgid "Enter an album name"
msgstr "Vul een albumnaam in"
-#: ../../Zotlabs/Module/Photos.php:664
+#: ../../Zotlabs/Module/Photos.php:665
msgid "or select an existing album (doubleclick)"
msgstr "of kies een bestaand album (dubbelklikken)"
-#: ../../Zotlabs/Module/Photos.php:665
+#: ../../Zotlabs/Module/Photos.php:666
msgid "Create a status post for this upload"
msgstr "Plaats een bericht voor deze upload."
-#: ../../Zotlabs/Module/Photos.php:666
+#: ../../Zotlabs/Module/Photos.php:667
msgid "Caption (optional):"
msgstr "Bijschrift (optioneel):"
-#: ../../Zotlabs/Module/Photos.php:667
+#: ../../Zotlabs/Module/Photos.php:668
msgid "Description (optional):"
msgstr "Omschrijving (optioneel):"
-#: ../../Zotlabs/Module/Photos.php:694
+#: ../../Zotlabs/Module/Photos.php:695
msgid "Album name could not be decoded"
msgstr "Albumnaam kon niet gedecodeerd worden"
-#: ../../Zotlabs/Module/Photos.php:742 ../../Zotlabs/Module/Photos.php:1283
-#: ../../Zotlabs/Module/Photos.php:1300
+#: ../../Zotlabs/Module/Photos.php:743
msgid "Contact Photos"
msgstr "Connectiefoto's"
-#: ../../Zotlabs/Module/Photos.php:765
+#: ../../Zotlabs/Module/Photos.php:766
msgid "Show Newest First"
msgstr "Nieuwste eerst weergeven"
-#: ../../Zotlabs/Module/Photos.php:767
+#: ../../Zotlabs/Module/Photos.php:768
msgid "Show Oldest First"
msgstr "Oudste eerst weergeven"
-#: ../../Zotlabs/Module/Photos.php:791 ../../Zotlabs/Module/Photos.php:1333
-#: ../../include/widgets.php:1451
+#: ../../Zotlabs/Module/Photos.php:792 ../../Zotlabs/Module/Photos.php:1331
+#: ../../include/widgets.php:1499
msgid "View Photo"
msgstr "Foto weergeven"
-#: ../../Zotlabs/Module/Photos.php:822 ../../include/widgets.php:1468
+#: ../../Zotlabs/Module/Photos.php:823 ../../include/widgets.php:1516
msgid "Edit Album"
msgstr "Album bewerken"
-#: ../../Zotlabs/Module/Photos.php:869
+#: ../../Zotlabs/Module/Photos.php:870
msgid "Permission denied. Access to this item may be restricted."
msgstr "Toegang geweigerd. Toegang tot dit item kan zijn beperkt."
-#: ../../Zotlabs/Module/Photos.php:871
+#: ../../Zotlabs/Module/Photos.php:872
msgid "Photo not available"
msgstr "Foto niet aanwezig"
-#: ../../Zotlabs/Module/Photos.php:929
+#: ../../Zotlabs/Module/Photos.php:930
msgid "Use as profile photo"
msgstr "Als profielfoto gebruiken"
-#: ../../Zotlabs/Module/Photos.php:930
+#: ../../Zotlabs/Module/Photos.php:931
msgid "Use as cover photo"
msgstr "Als omslagfoto gebruiken"
-#: ../../Zotlabs/Module/Photos.php:937
+#: ../../Zotlabs/Module/Photos.php:938
msgid "Private Photo"
msgstr "Privéfoto"
-#: ../../Zotlabs/Module/Photos.php:952
+#: ../../Zotlabs/Module/Photos.php:953
msgid "View Full Size"
msgstr "Volledige grootte weergeven"
-#: ../../Zotlabs/Module/Photos.php:997 ../../Zotlabs/Module/Tagrm.php:137
+#: ../../Zotlabs/Module/Photos.php:998 ../../Zotlabs/Module/Admin.php:1437
+#: ../../Zotlabs/Module/Tagrm.php:137
msgid "Remove"
msgstr "Verwijderen"
-#: ../../Zotlabs/Module/Photos.php:1031
+#: ../../Zotlabs/Module/Photos.php:1032
msgid "Edit photo"
msgstr "Foto bewerken"
-#: ../../Zotlabs/Module/Photos.php:1033
+#: ../../Zotlabs/Module/Photos.php:1034
msgid "Rotate CW (right)"
msgstr "Draai met de klok mee (naar rechts)"
-#: ../../Zotlabs/Module/Photos.php:1034
+#: ../../Zotlabs/Module/Photos.php:1035
msgid "Rotate CCW (left)"
msgstr "Draai tegen de klok in (naar links)"
-#: ../../Zotlabs/Module/Photos.php:1037
+#: ../../Zotlabs/Module/Photos.php:1038
msgid "Enter a new album name"
msgstr "Vul een nieuwe albumnaam in"
-#: ../../Zotlabs/Module/Photos.php:1038
+#: ../../Zotlabs/Module/Photos.php:1039
msgid "or select an existing one (doubleclick)"
msgstr "of kies een bestaand album (dubbelklikken)"
-#: ../../Zotlabs/Module/Photos.php:1041
+#: ../../Zotlabs/Module/Photos.php:1042
msgid "Caption"
msgstr "Bijschrift"
-#: ../../Zotlabs/Module/Photos.php:1043
+#: ../../Zotlabs/Module/Photos.php:1044
msgid "Add a Tag"
msgstr "Tag toevoegen"
-#: ../../Zotlabs/Module/Photos.php:1047
+#: ../../Zotlabs/Module/Photos.php:1048
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
msgstr "Voorbeeld: @bob, @Barbara_Jansen, @jan@voorbeeld.nl"
-#: ../../Zotlabs/Module/Photos.php:1050
+#: ../../Zotlabs/Module/Photos.php:1051
msgid "Flag as adult in album view"
msgstr "Markeer als voor volwassenen in albumweergave"
-#: ../../Zotlabs/Module/Photos.php:1069 ../../include/ItemObject.php:254
+#: ../../Zotlabs/Module/Photos.php:1070 ../../Zotlabs/Lib/ThreadItem.php:261
msgid "I like this (toggle)"
msgstr "Vind ik leuk"
-#: ../../Zotlabs/Module/Photos.php:1070 ../../include/ItemObject.php:255
+#: ../../Zotlabs/Module/Photos.php:1071 ../../Zotlabs/Lib/ThreadItem.php:262
msgid "I don't like this (toggle)"
msgstr "Vind ik niet leuk"
-#: ../../Zotlabs/Module/Photos.php:1088 ../../Zotlabs/Module/Photos.php:1206
-#: ../../include/ItemObject.php:700
+#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:397
+#: ../../include/conversation.php:740
+msgid "Please wait"
+msgstr "Even wachten"
+
+#: ../../Zotlabs/Module/Photos.php:1089 ../../Zotlabs/Module/Photos.php:1207
+#: ../../Zotlabs/Lib/ThreadItem.php:707
msgid "This is you"
msgstr "Dit ben jij"
-#: ../../Zotlabs/Module/Photos.php:1090 ../../Zotlabs/Module/Photos.php:1208
-#: ../../include/ItemObject.php:702 ../../include/js_strings.php:6
+#: ../../Zotlabs/Module/Photos.php:1091 ../../Zotlabs/Module/Photos.php:1209
+#: ../../Zotlabs/Lib/ThreadItem.php:709 ../../include/js_strings.php:6
msgid "Comment"
msgstr "Reactie"
-#: ../../Zotlabs/Module/Photos.php:1106 ../../include/conversation.php:574
+#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574
msgctxt "title"
msgid "Likes"
msgstr "vinden dit leuk"
-#: ../../Zotlabs/Module/Photos.php:1106 ../../include/conversation.php:574
+#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574
msgctxt "title"
msgid "Dislikes"
msgstr "vinden dit niet leuk"
-#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:575
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
msgctxt "title"
msgid "Agree"
msgstr "eens"
-#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:575
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
msgctxt "title"
msgid "Disagree"
msgstr "oneens"
-#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:575
+#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575
msgctxt "title"
msgid "Abstain"
msgstr "onthoudingen"
-#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:576
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
msgctxt "title"
msgid "Attending"
msgstr "aanwezig"
-#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:576
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
msgctxt "title"
msgid "Not attending"
msgstr "niet aanwezig"
-#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:576
+#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576
msgctxt "title"
msgid "Might attend"
msgstr "mogelijk aanwezig"
-#: ../../Zotlabs/Module/Photos.php:1125 ../../Zotlabs/Module/Photos.php:1137
-#: ../../include/ItemObject.php:175 ../../include/ItemObject.php:187
-#: ../../include/conversation.php:1736
+#: ../../Zotlabs/Module/Photos.php:1126 ../../Zotlabs/Module/Photos.php:1138
+#: ../../Zotlabs/Lib/ThreadItem.php:181 ../../Zotlabs/Lib/ThreadItem.php:193
+#: ../../include/conversation.php:1717
msgid "View all"
msgstr "Toon alles"
-#: ../../Zotlabs/Module/Photos.php:1129 ../../include/identity.php:1297
-#: ../../include/ItemObject.php:179 ../../include/conversation.php:1760
-#: ../../include/taxonomy.php:415
+#: ../../Zotlabs/Module/Photos.php:1130 ../../Zotlabs/Lib/ThreadItem.php:185
+#: ../../include/taxonomy.php:403 ../../include/conversation.php:1741
+#: ../../include/channel.php:1158
msgctxt "noun"
msgid "Like"
msgid_plural "Likes"
msgstr[0] "vindt dit leuk"
msgstr[1] "vinden dit leuk"
-#: ../../Zotlabs/Module/Photos.php:1134 ../../include/ItemObject.php:184
-#: ../../include/conversation.php:1763
+#: ../../Zotlabs/Module/Photos.php:1135 ../../Zotlabs/Lib/ThreadItem.php:190
+#: ../../include/conversation.php:1744
msgctxt "noun"
msgid "Dislike"
msgid_plural "Dislikes"
msgstr[0] "vindt dit niet leuk"
msgstr[1] "vinden dit niet leuk"
-#: ../../Zotlabs/Module/Photos.php:1234
+#: ../../Zotlabs/Module/Photos.php:1235
msgid "Photo Tools"
msgstr "Hulpmiddelen"
-#: ../../Zotlabs/Module/Photos.php:1243
+#: ../../Zotlabs/Module/Photos.php:1244
msgid "In This Photo:"
msgstr "Op deze foto:"
-#: ../../Zotlabs/Module/Photos.php:1248
+#: ../../Zotlabs/Module/Photos.php:1249
msgid "Map"
msgstr "Kaart"
-#: ../../Zotlabs/Module/Photos.php:1256 ../../include/ItemObject.php:378
+#: ../../Zotlabs/Module/Photos.php:1257 ../../Zotlabs/Lib/ThreadItem.php:386
msgctxt "noun"
msgid "Likes"
msgstr "vinden dit leuk"
-#: ../../Zotlabs/Module/Photos.php:1257 ../../include/ItemObject.php:379
+#: ../../Zotlabs/Module/Photos.php:1258 ../../Zotlabs/Lib/ThreadItem.php:387
msgctxt "noun"
msgid "Dislikes"
msgstr "vinden dit niet leuk"
-#: ../../Zotlabs/Module/Photos.php:1262 ../../include/ItemObject.php:384
-#: ../../include/acl_selectors.php:252
+#: ../../Zotlabs/Module/Photos.php:1263 ../../Zotlabs/Lib/ThreadItem.php:392
+#: ../../include/acl_selectors.php:285
msgid "Close"
msgstr "Sluiten"
-#: ../../Zotlabs/Module/Photos.php:1339
+#: ../../Zotlabs/Module/Photos.php:1337
msgid "View Album"
msgstr "Album weergeven"
-#: ../../Zotlabs/Module/Photos.php:1350 ../../Zotlabs/Module/Photos.php:1363
-#: ../../Zotlabs/Module/Photos.php:1364
+#: ../../Zotlabs/Module/Photos.php:1348 ../../Zotlabs/Module/Photos.php:1361
+#: ../../Zotlabs/Module/Photos.php:1362
msgid "Recent Photos"
msgstr "Recente foto's"
-#: ../../Zotlabs/Module/Ping.php:264
+#: ../../Zotlabs/Module/Ping.php:265
msgid "sent you a private message"
msgstr "stuurde jou een privébericht"
-#: ../../Zotlabs/Module/Ping.php:312
+#: ../../Zotlabs/Module/Ping.php:313
msgid "added your channel"
msgstr "voegde jouw kanaal toe"
-#: ../../Zotlabs/Module/Ping.php:322 ../../include/identity.php:1116
-#: ../../include/identity.php:1192
+#: ../../Zotlabs/Module/Ping.php:323
msgid "g A l F d"
msgstr "G:i, l d F"
-#: ../../Zotlabs/Module/Ping.php:345 ../../include/identity.php:1162
-#: ../../include/identity.php:1232
+#: ../../Zotlabs/Module/Ping.php:346
msgid "[today]"
msgstr "[vandaag]"
-#: ../../Zotlabs/Module/Ping.php:354
+#: ../../Zotlabs/Module/Ping.php:355
msgid "posted an event"
msgstr "plaatste een gebeurtenis"
-#: ../../Zotlabs/Module/Poke.php:168 ../../include/apps.php:145
-#: ../../include/conversation.php:965
+#: ../../Zotlabs/Module/Oexchange.php:27
+msgid "Unable to find your hub."
+msgstr "Niet in staat om je hub te vinden"
+
+#: ../../Zotlabs/Module/Oexchange.php:41
+msgid "Post successful."
+msgstr "Verzenden bericht geslaagd."
+
+#: ../../Zotlabs/Module/Openid.php:30
+msgid "OpenID protocol error. No ID returned."
+msgstr "OpenID-protocolfout. Geen ID terugontvangen."
+
+#: ../../Zotlabs/Module/Openid.php:193 ../../include/auth.php:226
+msgid "Login failed."
+msgstr "Inloggen mislukt."
+
+#: ../../Zotlabs/Module/Page.php:133
+msgid ""
+"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod "
+"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,"
+" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
+"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse "
+"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat "
+"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+
+#: ../../Zotlabs/Module/Pconfig.php:26 ../../Zotlabs/Module/Pconfig.php:59
+msgid "This setting requires special processing and editing has been blocked."
+msgstr "Deze instelling vereist een speciaal proces en bewerken is geblokkeerd."
+
+#: ../../Zotlabs/Module/Pconfig.php:48
+msgid "Configuration Editor"
+msgstr "Configuratiebewerker"
+
+#: ../../Zotlabs/Module/Pconfig.php:49
+msgid ""
+"Warning: Changing some settings could render your channel inoperable. Please"
+" leave this page unless you are comfortable with and knowledgeable about how"
+" to correctly use this feature."
+msgstr "Waarschuwing: het veranderen van sommige instellingen kunnen jouw kanaal onklaar maken. Verlaat deze pagina, tenzij je weet waar je mee bezig bent en voldoende kennis bezit over hoe je deze functies moet gebruiken. "
+
+#: ../../Zotlabs/Module/Pdledit.php:18
+msgid "Layout updated."
+msgstr "Lay-out bijgewerkt."
+
+#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Pdledit.php:61
+msgid "Edit System Page Description"
+msgstr "Systeempagina's bewerken"
+
+#: ../../Zotlabs/Module/Pdledit.php:56
+msgid "Layout not found."
+msgstr "Lay-out niet gevonden."
+
+#: ../../Zotlabs/Module/Pdledit.php:62
+msgid "Module Name:"
+msgstr "Modulenaam:"
+
+#: ../../Zotlabs/Module/Pdledit.php:63
+msgid "Layout Help"
+msgstr "Lay-out-hulp"
+
+#: ../../Zotlabs/Module/Poke.php:168 ../../Zotlabs/Lib/Apps.php:226
+#: ../../include/conversation.php:960
msgid "Poke"
msgstr "Aanstoten"
@@ -4337,289 +3202,289 @@ msgstr "Kies wat je met de ontvanger wil doen"
msgid "Make this post private"
msgstr "Maak dit bericht privé"
-#: ../../Zotlabs/Module/Probe.php:28 ../../Zotlabs/Module/Probe.php:34
+#: ../../Zotlabs/Module/Probe.php:30 ../../Zotlabs/Module/Probe.php:34
#, php-format
msgid "Fetching URL returns error: %1$s"
msgstr "Ophalen URL gaf een foutmelding terug: %1$s"
-#: ../../Zotlabs/Module/Profile_photo.php:179
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Vernieuw de pagina met shift+R of shift+F5, of leeg je browserbuffer, wanneer de nieuwe foto niet meteen wordt weergegeven."
-
-#: ../../Zotlabs/Module/Profile_photo.php:367
-msgid "Upload Profile Photo"
-msgstr "Profielfoto uploaden"
-
-#: ../../Zotlabs/Module/Profiles.php:23 ../../Zotlabs/Module/Profiles.php:188
-#: ../../Zotlabs/Module/Profiles.php:245 ../../Zotlabs/Module/Profiles.php:624
+#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:189
+#: ../../Zotlabs/Module/Profiles.php:246 ../../Zotlabs/Module/Profiles.php:625
msgid "Profile not found."
msgstr "Profiel niet gevonden."
-#: ../../Zotlabs/Module/Profiles.php:43
+#: ../../Zotlabs/Module/Profiles.php:44
msgid "Profile deleted."
msgstr "Profiel verwijderd."
-#: ../../Zotlabs/Module/Profiles.php:67 ../../Zotlabs/Module/Profiles.php:103
+#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:104
msgid "Profile-"
msgstr "Profiel-"
-#: ../../Zotlabs/Module/Profiles.php:88 ../../Zotlabs/Module/Profiles.php:131
+#: ../../Zotlabs/Module/Profiles.php:89 ../../Zotlabs/Module/Profiles.php:132
msgid "New profile created."
msgstr "Nieuw profiel aangemaakt."
-#: ../../Zotlabs/Module/Profiles.php:109
+#: ../../Zotlabs/Module/Profiles.php:110
msgid "Profile unavailable to clone."
msgstr "Profiel niet beschikbaar om te klonen"
-#: ../../Zotlabs/Module/Profiles.php:150
+#: ../../Zotlabs/Module/Profiles.php:151
msgid "Profile unavailable to export."
msgstr "Geen profiel beschikbaar om te exporteren"
-#: ../../Zotlabs/Module/Profiles.php:255
+#: ../../Zotlabs/Module/Profiles.php:256
msgid "Profile Name is required."
msgstr "Profielnaam is vereist"
-#: ../../Zotlabs/Module/Profiles.php:426
+#: ../../Zotlabs/Module/Profiles.php:427
msgid "Marital Status"
msgstr "Huwelijke status"
-#: ../../Zotlabs/Module/Profiles.php:430
+#: ../../Zotlabs/Module/Profiles.php:431
msgid "Romantic Partner"
msgstr "Romantische partner"
-#: ../../Zotlabs/Module/Profiles.php:434 ../../Zotlabs/Module/Profiles.php:740
+#: ../../Zotlabs/Module/Profiles.php:435 ../../Zotlabs/Module/Profiles.php:736
msgid "Likes"
msgstr "Houdt van"
-#: ../../Zotlabs/Module/Profiles.php:438 ../../Zotlabs/Module/Profiles.php:741
+#: ../../Zotlabs/Module/Profiles.php:439 ../../Zotlabs/Module/Profiles.php:737
msgid "Dislikes"
msgstr "Houdt niet van"
-#: ../../Zotlabs/Module/Profiles.php:442 ../../Zotlabs/Module/Profiles.php:748
+#: ../../Zotlabs/Module/Profiles.php:443 ../../Zotlabs/Module/Profiles.php:744
msgid "Work/Employment"
msgstr "Werk/arbeid"
-#: ../../Zotlabs/Module/Profiles.php:445
+#: ../../Zotlabs/Module/Profiles.php:446
msgid "Religion"
msgstr "Religie"
-#: ../../Zotlabs/Module/Profiles.php:449
+#: ../../Zotlabs/Module/Profiles.php:450
msgid "Political Views"
msgstr "Politieke overtuigingen"
-#: ../../Zotlabs/Module/Profiles.php:457
+#: ../../Zotlabs/Module/Profiles.php:458
msgid "Sexual Preference"
msgstr "Seksuele voorkeur"
-#: ../../Zotlabs/Module/Profiles.php:461
+#: ../../Zotlabs/Module/Profiles.php:462
msgid "Homepage"
msgstr "Homepage"
-#: ../../Zotlabs/Module/Profiles.php:465
+#: ../../Zotlabs/Module/Profiles.php:466
msgid "Interests"
msgstr "Interesses"
-#: ../../Zotlabs/Module/Profiles.php:559
+#: ../../Zotlabs/Module/Profiles.php:560
msgid "Profile updated."
msgstr "Profiel bijgewerkt"
-#: ../../Zotlabs/Module/Profiles.php:648
+#: ../../Zotlabs/Module/Profiles.php:644
msgid "Hide your connections list from viewers of this profile"
msgstr "Laat de lijst met connecties niet aan bezoekers van dit profiel zien."
-#: ../../Zotlabs/Module/Profiles.php:690
+#: ../../Zotlabs/Module/Profiles.php:686
msgid "Edit Profile Details"
msgstr "Profiel bewerken"
-#: ../../Zotlabs/Module/Profiles.php:692
+#: ../../Zotlabs/Module/Profiles.php:688
msgid "View this profile"
msgstr "Profiel weergeven"
-#: ../../Zotlabs/Module/Profiles.php:693 ../../Zotlabs/Module/Profiles.php:775
-#: ../../include/identity.php:952
+#: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:771
+#: ../../include/channel.php:959
msgid "Edit visibility"
msgstr "Zichtbaarheid bewerken"
-#: ../../Zotlabs/Module/Profiles.php:694
+#: ../../Zotlabs/Module/Profiles.php:690
msgid "Profile Tools"
msgstr "Hulpmiddelen"
-#: ../../Zotlabs/Module/Profiles.php:695
+#: ../../Zotlabs/Module/Profiles.php:691
msgid "Change cover photo"
msgstr "Omslagfoto wijzigen"
-#: ../../Zotlabs/Module/Profiles.php:696 ../../include/identity.php:923
+#: ../../Zotlabs/Module/Profiles.php:692 ../../include/channel.php:930
msgid "Change profile photo"
msgstr "Profielfoto veranderen"
-#: ../../Zotlabs/Module/Profiles.php:697
+#: ../../Zotlabs/Module/Profiles.php:693
msgid "Create a new profile using these settings"
msgstr "Een nieuw profiel aanmaken met dit profiel als basis"
-#: ../../Zotlabs/Module/Profiles.php:698
+#: ../../Zotlabs/Module/Profiles.php:694
msgid "Clone this profile"
msgstr "Dit profiel klonen"
-#: ../../Zotlabs/Module/Profiles.php:699
+#: ../../Zotlabs/Module/Profiles.php:695
msgid "Delete this profile"
msgstr "Dit profiel verwijderen"
-#: ../../Zotlabs/Module/Profiles.php:700
+#: ../../Zotlabs/Module/Profiles.php:696
msgid "Add profile things"
msgstr "Dingen aan je profiel toevoegen"
-#: ../../Zotlabs/Module/Profiles.php:701 ../../include/conversation.php:1544
-#: ../../include/widgets.php:105
+#: ../../Zotlabs/Module/Profiles.php:697 ../../include/widgets.php:105
+#: ../../include/conversation.php:1526
msgid "Personal"
msgstr "Persoonlijk"
-#: ../../Zotlabs/Module/Profiles.php:703
+#: ../../Zotlabs/Module/Profiles.php:699
msgid "Relation"
msgstr "Relatie"
-#: ../../Zotlabs/Module/Profiles.php:704 ../../include/datetime.php:48
+#: ../../Zotlabs/Module/Profiles.php:700 ../../include/datetime.php:48
msgid "Miscellaneous"
msgstr "Diversen"
-#: ../../Zotlabs/Module/Profiles.php:706
+#: ../../Zotlabs/Module/Profiles.php:702
msgid "Import profile from file"
msgstr "Profiel vanuit bestand importeren"
-#: ../../Zotlabs/Module/Profiles.php:707
+#: ../../Zotlabs/Module/Profiles.php:703
msgid "Export profile to file"
msgstr "Profiel naar bestand exporteren"
-#: ../../Zotlabs/Module/Profiles.php:708
+#: ../../Zotlabs/Module/Profiles.php:704
msgid "Your gender"
msgstr "Jouw geslacht"
-#: ../../Zotlabs/Module/Profiles.php:709
+#: ../../Zotlabs/Module/Profiles.php:705
msgid "Marital status"
msgstr "Burgerlijke staat"
-#: ../../Zotlabs/Module/Profiles.php:710
+#: ../../Zotlabs/Module/Profiles.php:706
msgid "Sexual preference"
msgstr "Seksuele voorkeur"
-#: ../../Zotlabs/Module/Profiles.php:713
+#: ../../Zotlabs/Module/Profiles.php:709
msgid "Profile name"
msgstr "Profielnaam"
-#: ../../Zotlabs/Module/Profiles.php:715
+#: ../../Zotlabs/Module/Profiles.php:711
msgid "This is your default profile."
msgstr "Dit is jouw standaardprofiel"
-#: ../../Zotlabs/Module/Profiles.php:717
+#: ../../Zotlabs/Module/Profiles.php:713
msgid "Your full name"
msgstr "Jouw volledige naam"
-#: ../../Zotlabs/Module/Profiles.php:718
+#: ../../Zotlabs/Module/Profiles.php:714
msgid "Title/Description"
msgstr "Titel/omschrijving"
-#: ../../Zotlabs/Module/Profiles.php:721
+#: ../../Zotlabs/Module/Profiles.php:717
msgid "Street address"
msgstr "Straat en huisnummer"
-#: ../../Zotlabs/Module/Profiles.php:722
+#: ../../Zotlabs/Module/Profiles.php:718
msgid "Locality/City"
msgstr "Woonplaats"
-#: ../../Zotlabs/Module/Profiles.php:723
+#: ../../Zotlabs/Module/Profiles.php:719
msgid "Region/State"
msgstr "Provincie/gewest/deelstaat"
-#: ../../Zotlabs/Module/Profiles.php:724
+#: ../../Zotlabs/Module/Profiles.php:720
msgid "Postal/Zip code"
msgstr "Postcode"
-#: ../../Zotlabs/Module/Profiles.php:725
+#: ../../Zotlabs/Module/Profiles.php:721
msgid "Country"
msgstr "Land"
-#: ../../Zotlabs/Module/Profiles.php:730
+#: ../../Zotlabs/Module/Profiles.php:726
msgid "Who (if applicable)"
msgstr "Wie (wanneer van toepassing)"
-#: ../../Zotlabs/Module/Profiles.php:730
+#: ../../Zotlabs/Module/Profiles.php:726
msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
msgstr "Voorbeelden: petra123, Petra Jansen, petra@voorbeeld.nl"
-#: ../../Zotlabs/Module/Profiles.php:731
+#: ../../Zotlabs/Module/Profiles.php:727
msgid "Since (date)"
msgstr "Sinds (datum)"
-#: ../../Zotlabs/Module/Profiles.php:734
+#: ../../Zotlabs/Module/Profiles.php:730
msgid "Tell us about yourself"
msgstr "Vertel ons iets over jezelf"
-#: ../../Zotlabs/Module/Profiles.php:736
+#: ../../Zotlabs/Module/Profiles.php:732
msgid "Hometown"
msgstr "Oorspronkelijk uit"
-#: ../../Zotlabs/Module/Profiles.php:737
+#: ../../Zotlabs/Module/Profiles.php:733
msgid "Political views"
msgstr "Politieke overtuigingen"
-#: ../../Zotlabs/Module/Profiles.php:738
+#: ../../Zotlabs/Module/Profiles.php:734
msgid "Religious views"
msgstr "Religieuze overtuigingen"
-#: ../../Zotlabs/Module/Profiles.php:739
+#: ../../Zotlabs/Module/Profiles.php:735
msgid "Keywords used in directory listings"
msgstr "Trefwoorden voor in de kanalengids"
-#: ../../Zotlabs/Module/Profiles.php:739
+#: ../../Zotlabs/Module/Profiles.php:735
msgid "Example: fishing photography software"
msgstr "Voorbeeld: muziek, fotografie, software"
-#: ../../Zotlabs/Module/Profiles.php:742
+#: ../../Zotlabs/Module/Profiles.php:738
msgid "Musical interests"
msgstr "Muzikale interesses"
-#: ../../Zotlabs/Module/Profiles.php:743
+#: ../../Zotlabs/Module/Profiles.php:739
msgid "Books, literature"
msgstr "Boeken/literatuur"
-#: ../../Zotlabs/Module/Profiles.php:744
+#: ../../Zotlabs/Module/Profiles.php:740
msgid "Television"
msgstr "Televisie"
-#: ../../Zotlabs/Module/Profiles.php:745
+#: ../../Zotlabs/Module/Profiles.php:741
msgid "Film/Dance/Culture/Entertainment"
msgstr "Film/dans/cultuur/entertainment"
-#: ../../Zotlabs/Module/Profiles.php:746
+#: ../../Zotlabs/Module/Profiles.php:742
msgid "Hobbies/Interests"
msgstr "Hobby's/interesses"
-#: ../../Zotlabs/Module/Profiles.php:747
+#: ../../Zotlabs/Module/Profiles.php:743
msgid "Love/Romance"
msgstr "Liefde/romantiek"
-#: ../../Zotlabs/Module/Profiles.php:749
+#: ../../Zotlabs/Module/Profiles.php:745
msgid "School/Education"
msgstr "School/opleiding"
-#: ../../Zotlabs/Module/Profiles.php:750
+#: ../../Zotlabs/Module/Profiles.php:746
msgid "Contact information and social networks"
msgstr "Contactinformatie en sociale netwerken"
-#: ../../Zotlabs/Module/Profiles.php:751
+#: ../../Zotlabs/Module/Profiles.php:747
msgid "My other channels"
msgstr "Mijn andere kanalen"
-#: ../../Zotlabs/Module/Profiles.php:771 ../../include/identity.php:948
+#: ../../Zotlabs/Module/Profiles.php:767 ../../include/channel.php:955
msgid "Profile Image"
msgstr "Profielfoto"
-#: ../../Zotlabs/Module/Profiles.php:781 ../../include/identity.php:930
-#: ../../include/nav.php:88
+#: ../../Zotlabs/Module/Profiles.php:777 ../../include/nav.php:88
+#: ../../include/channel.php:937
msgid "Edit Profiles"
msgstr "Bewerk profielen"
+#: ../../Zotlabs/Module/Profile_photo.php:179
+msgid ""
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Vernieuw de pagina met shift+R of shift+F5, of leeg je browserbuffer, wanneer de nieuwe foto niet meteen wordt weergegeven."
+
+#: ../../Zotlabs/Module/Profile_photo.php:367
+msgid "Upload Profile Photo"
+msgstr "Profielfoto uploaden"
+
#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63
msgid "Invalid profile identifier."
msgstr "Ongeldige profiel-identificator"
@@ -4628,8 +3493,7 @@ msgstr "Ongeldige profiel-identificator"
msgid "Profile Visibility Editor"
msgstr "Zichtbaarheid profiel "
-#: ../../Zotlabs/Module/Profperm.php:117 ../../include/identity.php:1388
-#: ../../include/apps.php:138
+#: ../../Zotlabs/Module/Profperm.php:117 ../../include/channel.php:1249
msgid "Profile"
msgstr "Profiel"
@@ -4641,7 +3505,7 @@ msgstr "Klik op een connectie om deze toe te voegen of te verwijderen"
msgid "Visible To"
msgstr "Zichtbaar voor"
-#: ../../Zotlabs/Module/Pubsites.php:22 ../../include/widgets.php:1222
+#: ../../Zotlabs/Module/Pubsites.php:22 ../../include/widgets.php:1270
msgid "Public Hubs"
msgstr "Openbare hubs"
@@ -4666,29 +3530,37 @@ msgstr "Toegangs-<br/>&nbsp;type"
msgid "Registration Policy"
msgstr "Registratie-<br/>&nbsp;beleid"
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Stats"
+msgstr "Stats"
+
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Software"
+msgstr "Software"
+
#: ../../Zotlabs/Module/Pubsites.php:31 ../../Zotlabs/Module/Ratings.php:103
-#: ../../include/conversation.php:964
+#: ../../include/conversation.php:959
msgid "Ratings"
msgstr "Beoordelingen"
-#: ../../Zotlabs/Module/Pubsites.php:37
+#: ../../Zotlabs/Module/Pubsites.php:38
msgid "Rate"
msgstr "Beoordeel"
-#: ../../Zotlabs/Module/Rate.php:162
+#: ../../Zotlabs/Module/Rate.php:160
msgid "Website:"
msgstr "Website:"
-#: ../../Zotlabs/Module/Rate.php:165
+#: ../../Zotlabs/Module/Rate.php:163
#, php-format
msgid "Remote Channel [%s] (not yet known on this site)"
msgstr "Kanaal op afstand [%s] (nog niet op deze hub bekend)"
-#: ../../Zotlabs/Module/Rate.php:166
+#: ../../Zotlabs/Module/Rate.php:164
msgid "Rating (this information is public)"
msgstr "Beoordeling (deze informatie is openbaar)"
-#: ../../Zotlabs/Module/Rate.php:167
+#: ../../Zotlabs/Module/Rate.php:165
msgid "Optionally explain your rating (this information is public)"
msgstr "Verklaar jouw beoordeling (niet verplicht, deze informatie is openbaar)"
@@ -4708,6 +3580,1073 @@ msgstr "Website: "
msgid "Description: "
msgstr "Omschrijving: "
+#: ../../Zotlabs/Module/Admin.php:77
+msgid "Theme settings updated."
+msgstr "Thema-instellingen bijgewerkt."
+
+#: ../../Zotlabs/Module/Admin.php:197
+msgid "# Accounts"
+msgstr "# accounts"
+
+#: ../../Zotlabs/Module/Admin.php:198
+msgid "# blocked accounts"
+msgstr "# geblokkeerde accounts"
+
+#: ../../Zotlabs/Module/Admin.php:199
+msgid "# expired accounts"
+msgstr "# verlopen accounts"
+
+#: ../../Zotlabs/Module/Admin.php:200
+msgid "# expiring accounts"
+msgstr "# accounts die nog moeten verlopen"
+
+#: ../../Zotlabs/Module/Admin.php:211
+msgid "# Channels"
+msgstr "# Kanalen"
+
+#: ../../Zotlabs/Module/Admin.php:212
+msgid "# primary"
+msgstr "# primair"
+
+#: ../../Zotlabs/Module/Admin.php:213
+msgid "# clones"
+msgstr "# klonen"
+
+#: ../../Zotlabs/Module/Admin.php:219
+msgid "Message queues"
+msgstr "Berichtenwachtrij"
+
+#: ../../Zotlabs/Module/Admin.php:236
+msgid "Your software should be updated"
+msgstr "Jouw software moet worden bijgewerkt "
+
+#: ../../Zotlabs/Module/Admin.php:241 ../../Zotlabs/Module/Admin.php:490
+#: ../../Zotlabs/Module/Admin.php:711 ../../Zotlabs/Module/Admin.php:755
+#: ../../Zotlabs/Module/Admin.php:1030 ../../Zotlabs/Module/Admin.php:1209
+#: ../../Zotlabs/Module/Admin.php:1329 ../../Zotlabs/Module/Admin.php:1419
+#: ../../Zotlabs/Module/Admin.php:1612 ../../Zotlabs/Module/Admin.php:1646
+#: ../../Zotlabs/Module/Admin.php:1731
+msgid "Administration"
+msgstr "Beheer"
+
+#: ../../Zotlabs/Module/Admin.php:242
+msgid "Summary"
+msgstr "Samenvatting"
+
+#: ../../Zotlabs/Module/Admin.php:245
+msgid "Registered accounts"
+msgstr "Geregistreerde accounts"
+
+#: ../../Zotlabs/Module/Admin.php:246 ../../Zotlabs/Module/Admin.php:715
+msgid "Pending registrations"
+msgstr "Accounts die op goedkeuring wachten"
+
+#: ../../Zotlabs/Module/Admin.php:247
+msgid "Registered channels"
+msgstr "Geregistreerde kanalen"
+
+#: ../../Zotlabs/Module/Admin.php:248 ../../Zotlabs/Module/Admin.php:716
+msgid "Active plugins"
+msgstr "Ingeschakelde plugins"
+
+#: ../../Zotlabs/Module/Admin.php:249
+msgid "Version"
+msgstr "Versie"
+
+#: ../../Zotlabs/Module/Admin.php:250
+msgid "Repository version (master)"
+msgstr "Versie repository (master)"
+
+#: ../../Zotlabs/Module/Admin.php:251
+msgid "Repository version (dev)"
+msgstr "Versie repository (dev)"
+
+#: ../../Zotlabs/Module/Admin.php:373
+msgid "Site settings updated."
+msgstr "Hub-instellingen bijgewerkt."
+
+#: ../../Zotlabs/Module/Admin.php:400 ../../include/text.php:2841
+msgid "Default"
+msgstr "Standaard"
+
+#: ../../Zotlabs/Module/Admin.php:410 ../../Zotlabs/Module/Settings.php:798
+msgid "mobile"
+msgstr "mobiel"
+
+#: ../../Zotlabs/Module/Admin.php:412
+msgid "experimental"
+msgstr "experimenteel"
+
+#: ../../Zotlabs/Module/Admin.php:414
+msgid "unsupported"
+msgstr "Niet ondersteund"
+
+#: ../../Zotlabs/Module/Admin.php:460
+msgid "Yes - with approval"
+msgstr "Ja - met goedkeuring"
+
+#: ../../Zotlabs/Module/Admin.php:466
+msgid "My site is not a public server"
+msgstr "Mijn $Projectname-hub is niet openbaar"
+
+#: ../../Zotlabs/Module/Admin.php:467
+msgid "My site has paid access only"
+msgstr "Mijn $Projectname-hub kent alleen betaalde toegang"
+
+#: ../../Zotlabs/Module/Admin.php:468
+msgid "My site has free access only"
+msgstr "Mijn $Projectname-hub kent alleen gratis toegang"
+
+#: ../../Zotlabs/Module/Admin.php:469
+msgid "My site offers free accounts with optional paid upgrades"
+msgstr "Mijn $Projectname-hub biedt gratis accounts aan met betaalde uitbreidingen als optie"
+
+#: ../../Zotlabs/Module/Admin.php:491 ../../include/widgets.php:1382
+msgid "Site"
+msgstr "Hub-instellingen"
+
+#: ../../Zotlabs/Module/Admin.php:493 ../../Zotlabs/Module/Register.php:245
+msgid "Registration"
+msgstr "Registratie"
+
+#: ../../Zotlabs/Module/Admin.php:494
+msgid "File upload"
+msgstr "Bestand uploaden"
+
+#: ../../Zotlabs/Module/Admin.php:495
+msgid "Policies"
+msgstr "Beleid"
+
+#: ../../Zotlabs/Module/Admin.php:496 ../../include/contact_widgets.php:16
+msgid "Advanced"
+msgstr "Geavanceerd"
+
+#: ../../Zotlabs/Module/Admin.php:500
+msgid "Site name"
+msgstr "Naam van deze $Projectname-hub"
+
+#: ../../Zotlabs/Module/Admin.php:501
+msgid "Banner/Logo"
+msgstr "Banner/logo"
+
+#: ../../Zotlabs/Module/Admin.php:502
+msgid "Administrator Information"
+msgstr "Informatie over de beheerder van deze hub"
+
+#: ../../Zotlabs/Module/Admin.php:502
+msgid ""
+"Contact information for site administrators. Displayed on siteinfo page. "
+"BBCode can be used here"
+msgstr "Contactinformatie voor hub-beheerders. Getoond op pagina met hub-informatie. Er kan hier bbcode gebruikt worden."
+
+#: ../../Zotlabs/Module/Admin.php:503
+msgid "System language"
+msgstr "Standaardtaal"
+
+#: ../../Zotlabs/Module/Admin.php:504
+msgid "System theme"
+msgstr "Standaardthema"
+
+#: ../../Zotlabs/Module/Admin.php:504
+msgid ""
+"Default system theme - may be over-ridden by user profiles - <a href='#' "
+"id='cnftheme'>change theme settings</a>"
+msgstr "Standaardthema voor $Projectname-hub (kan door lid veranderd worden) - <a href='#' id='cnftheme'>verander thema-instellingen</a>"
+
+#: ../../Zotlabs/Module/Admin.php:505
+msgid "Mobile system theme"
+msgstr "Standaardthema voor mobiel"
+
+#: ../../Zotlabs/Module/Admin.php:505
+msgid "Theme for mobile devices"
+msgstr "Thema voor mobiele apparaten"
+
+#: ../../Zotlabs/Module/Admin.php:507
+msgid "Allow Feeds as Connections"
+msgstr "Sta feeds toe als connecties"
+
+#: ../../Zotlabs/Module/Admin.php:507
+msgid "(Heavy system resource usage)"
+msgstr "(sterk negatieve invloed op systeembronnen hub)"
+
+#: ../../Zotlabs/Module/Admin.php:508
+msgid "Maximum image size"
+msgstr "Maximale grootte van afbeeldingen"
+
+#: ../../Zotlabs/Module/Admin.php:508
+msgid ""
+"Maximum size in bytes of uploaded images. Default is 0, which means no "
+"limits."
+msgstr "Maximale grootte in bytes voor afbeeldingen die worden geüpload. Standaard is 0, wat geen limiet betekend."
+
+#: ../../Zotlabs/Module/Admin.php:509
+msgid "Does this site allow new member registration?"
+msgstr "Staat deze hub nieuwe accounts toe?"
+
+#: ../../Zotlabs/Module/Admin.php:510
+msgid "Invitation only"
+msgstr "Alleen op uitnodiging"
+
+#: ../../Zotlabs/Module/Admin.php:510
+msgid ""
+"Only allow new member registrations with an invitation code. Above register "
+"policy must be set to Yes."
+msgstr "Sta alleen nieuwe registraties toe van mensen die een uitnodigingscode hebben. Bovenstaand accountbeleid moet op Ja staan."
+
+#: ../../Zotlabs/Module/Admin.php:511
+msgid "Which best describes the types of account offered by this hub?"
+msgstr "Wat voor soort accounts biedt deze $Projectname-hub aan? Kies wat het meest in de buurt komt."
+
+#: ../../Zotlabs/Module/Admin.php:512
+msgid "Register text"
+msgstr "Tekst tijdens registratie"
+
+#: ../../Zotlabs/Module/Admin.php:512
+msgid "Will be displayed prominently on the registration page."
+msgstr "Tekst dat op de pagina voor het registreren van nieuwe accounts wordt getoond."
+
+#: ../../Zotlabs/Module/Admin.php:513
+msgid "Site homepage to show visitors (default: login box)"
+msgstr "Homepagina van deze hub die aan bezoekers wordt getoond (standaard: inlogformulier)"
+
+#: ../../Zotlabs/Module/Admin.php:513
+msgid ""
+"example: 'public' to show public stream, 'page/sys/home' to show a system "
+"webpage called 'home' or 'include:home.html' to include a file."
+msgstr "voorbeeld: 'public' om de openbare stream te tonen, 'page/sys/home' om de webpagina 'home' van het systeemkanaal te tonen of 'include:home.html' om een gewoon bestand te gebruiken."
+
+#: ../../Zotlabs/Module/Admin.php:514
+msgid "Preserve site homepage URL"
+msgstr "Behoudt de URL van de hub (/)"
+
+#: ../../Zotlabs/Module/Admin.php:514
+msgid ""
+"Present the site homepage in a frame at the original location instead of "
+"redirecting"
+msgstr "Toon de homepagina van de hub in een frame op de oorspronkelijke locatie (/), i.p.v. een doorverwijzing naar een andere locatie (bv. .../home.html)"
+
+#: ../../Zotlabs/Module/Admin.php:515
+msgid "Accounts abandoned after x days"
+msgstr "Accounts als verlaten beschouwen na zoveel aantal dagen:"
+
+#: ../../Zotlabs/Module/Admin.php:515
+msgid ""
+"Will not waste system resources polling external sites for abandonded "
+"accounts. Enter 0 for no time limit."
+msgstr "Zal geen systeembronnen verspillen door polling van externe hubs voor verlaten accounts. Vul 0 in voor geen tijdslimiet."
+
+#: ../../Zotlabs/Module/Admin.php:516
+msgid "Allowed friend domains"
+msgstr "Toegestane domeinen"
+
+#: ../../Zotlabs/Module/Admin.php:516
+msgid ""
+"Comma separated list of domains which are allowed to establish friendships "
+"with this site. Wildcards are accepted. Empty to allow any domains"
+msgstr "Komma-gescheiden lijst van domeinen waarvan kanalen connecties kunnen aangaan met kanalen op deze $Projectname-hub. Wildcards zijn toegestaan.\nLaat leeg om alle domeinen toe te laten."
+
+#: ../../Zotlabs/Module/Admin.php:517
+msgid "Allowed email domains"
+msgstr "Toegestane e-maildomeinen"
+
+#: ../../Zotlabs/Module/Admin.php:517
+msgid ""
+"Comma separated list of domains which are allowed in email addresses for "
+"registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains"
+msgstr "Door komma's gescheiden lijst met e-maildomeinen waarvan e-mailadressen op deze hub mogen registeren. Wildcards zijn toegestaan. Laat leeg om alle domeinen toe te laten."
+
+#: ../../Zotlabs/Module/Admin.php:518
+msgid "Not allowed email domains"
+msgstr "Niet toegestane e-maildomeinen"
+
+#: ../../Zotlabs/Module/Admin.php:518
+msgid ""
+"Comma separated list of domains which are not allowed in email addresses for"
+" registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains, unless allowed domains have been defined."
+msgstr "Door komma's gescheiden lijst met e-maildomeinen waarvan e-mailadressen niet op deze hub mogen registeren. Wildcards zijn toegestaan. Laat leeg om alle domeinen toe te staan, tenzij er toegestane domeinen zijn ingesteld. "
+
+#: ../../Zotlabs/Module/Admin.php:519
+msgid "Verify Email Addresses"
+msgstr "E-mailadres verifieren"
+
+#: ../../Zotlabs/Module/Admin.php:519
+msgid ""
+"Check to verify email addresses used in account registration (recommended)."
+msgstr "Inschakelen om e-mailadressen te verifiëren die tijdens de accountregistratie worden gebruikt (aanbevolen)."
+
+#: ../../Zotlabs/Module/Admin.php:520
+msgid "Force publish"
+msgstr "Dwing kanaalvermelding af"
+
+#: ../../Zotlabs/Module/Admin.php:520
+msgid ""
+"Check to force all profiles on this site to be listed in the site directory."
+msgstr "Vink dit aan om af te dwingen dat alle kanalen op deze hub in de kanalengids worden vermeld."
+
+#: ../../Zotlabs/Module/Admin.php:521
+msgid "Import Public Streams"
+msgstr "Openbare streams importeren"
+
+#: ../../Zotlabs/Module/Admin.php:521
+msgid ""
+"Import and allow access to public content pulled from other sites. Warning: "
+"this content is unmoderated."
+msgstr "Toegang verlenen tot openbare berichten die vanuit andere hubs worden geïmporteerd. Waarschuwing: de inhoud van deze berichten wordt niet gemodereerd."
+
+#: ../../Zotlabs/Module/Admin.php:522
+msgid "Login on Homepage"
+msgstr "Inlogformulier op de homepagina"
+
+#: ../../Zotlabs/Module/Admin.php:522
+msgid ""
+"Present a login box to visitors on the home page if no other content has "
+"been configured."
+msgstr "Toon een inlogformulier voor bezoekers op de homepagina wanneer geen andere inhoud is geconfigureerd. "
+
+#: ../../Zotlabs/Module/Admin.php:523
+msgid "Enable context help"
+msgstr "Schakel contextuele hulp in"
+
+#: ../../Zotlabs/Module/Admin.php:523
+msgid ""
+"Display contextual help for the current page when the help button is "
+"pressed."
+msgstr "Toon hulp en documentatie voor de op dat moment getoonde pagina, wanneer op de hulp-knop wordt geklikt."
+
+#: ../../Zotlabs/Module/Admin.php:525
+msgid "Directory Server URL"
+msgstr "Server-URL voor de kanalengids"
+
+#: ../../Zotlabs/Module/Admin.php:525
+msgid "Default directory server"
+msgstr "Standaardserver voor de kanalengids"
+
+#: ../../Zotlabs/Module/Admin.php:527
+msgid "Proxy user"
+msgstr "Gebruikersnaam proxy"
+
+#: ../../Zotlabs/Module/Admin.php:528
+msgid "Proxy URL"
+msgstr "Proxy-URL"
+
+#: ../../Zotlabs/Module/Admin.php:529
+msgid "Network timeout"
+msgstr "Netwerktimeout"
+
+#: ../../Zotlabs/Module/Admin.php:529
+msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+msgstr "Waarde is in seconden. Zet op 0 voor onbeperkt (niet aanbevolen)"
+
+#: ../../Zotlabs/Module/Admin.php:530
+msgid "Delivery interval"
+msgstr "Afleveringsinterval"
+
+#: ../../Zotlabs/Module/Admin.php:530
+msgid ""
+"Delay background delivery processes by this many seconds to reduce system "
+"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
+"for large dedicated servers."
+msgstr "Vertraag de achtergrondprocessen voor het afleveren met een aantal seconden om de systeembelasting te verminderen. Aanbevolen: 4-5 voor shared hosts, 2-3 voor virtual private servers (VPS) en 0-1 voor grote dedicated servers."
+
+#: ../../Zotlabs/Module/Admin.php:531
+msgid "Deliveries per process"
+msgstr "Leveringen per serverproces"
+
+#: ../../Zotlabs/Module/Admin.php:531
+msgid ""
+"Number of deliveries to attempt in a single operating system process. Adjust"
+" if necessary to tune system performance. Recommend: 1-5."
+msgstr "Aantal leveringen die aan één serverproces worden meegegeven. Pas dit aan wanneer het nodig is om systeemprestaties te verbeteren. Aangeraden: 1-5"
+
+#: ../../Zotlabs/Module/Admin.php:532
+msgid "Poll interval"
+msgstr "Poll-interval"
+
+#: ../../Zotlabs/Module/Admin.php:532
+msgid ""
+"Delay background polling processes by this many seconds to reduce system "
+"load. If 0, use delivery interval."
+msgstr "De achtergrondprocessen voor het afleveren met zoveel seconden vertragen om de systeembelasting te verminderen. 0 om de afleveringsinterval te gebruiken."
+
+#: ../../Zotlabs/Module/Admin.php:533
+msgid "Maximum Load Average"
+msgstr "Maximaal gemiddelde systeembelasting"
+
+#: ../../Zotlabs/Module/Admin.php:533
+msgid ""
+"Maximum system load before delivery and poll processes are deferred - "
+"default 50."
+msgstr "Maximale systeembelasting voordat de afleverings- en polllingsprocessen worden uitgesteld. Standaard is 50."
+
+#: ../../Zotlabs/Module/Admin.php:534
+msgid "Expiration period in days for imported (grid/network) content"
+msgstr "Aantal dagen waarna geïmporteerde inhoud uit iemands grid/netwerk-pagina wordt verwijderd."
+
+#: ../../Zotlabs/Module/Admin.php:534
+msgid "0 for no expiration of imported content"
+msgstr "Dit geldt alleen voor inhoud van andere kanalen, dus niet voor iemands eigen kanaal. 0 voor het niet verwijderen van geïmporteerde inhoud."
+
+#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:678
+#: ../../Zotlabs/Module/Settings.php:722
+msgid "Off"
+msgstr "Uit"
+
+#: ../../Zotlabs/Module/Admin.php:677 ../../Zotlabs/Module/Admin.php:678
+#: ../../Zotlabs/Module/Settings.php:722
+msgid "On"
+msgstr "Aan"
+
+#: ../../Zotlabs/Module/Admin.php:678
+#, php-format
+msgid "Lock feature %s"
+msgstr " Vergrendel de functie '%s'"
+
+#: ../../Zotlabs/Module/Admin.php:686
+msgid "Manage Additional Features"
+msgstr "Beheer - Extra functies"
+
+#: ../../Zotlabs/Module/Admin.php:703
+msgid "No server found"
+msgstr "Geen hub gevonden"
+
+#: ../../Zotlabs/Module/Admin.php:710 ../../Zotlabs/Module/Admin.php:1046
+msgid "ID"
+msgstr "ID"
+
+#: ../../Zotlabs/Module/Admin.php:710
+msgid "for channel"
+msgstr "voor kanaal"
+
+#: ../../Zotlabs/Module/Admin.php:710
+msgid "on server"
+msgstr "op hub"
+
+#: ../../Zotlabs/Module/Admin.php:712
+msgid "Server"
+msgstr "Hubbeheer"
+
+#: ../../Zotlabs/Module/Admin.php:746
+msgid ""
+"By default, unfiltered HTML is allowed in embedded media. This is inherently"
+" insecure."
+msgstr "Standaard is ongefilterde HTML in ingesloten (embedded) media toegestaan. Dit is inherent onveilig."
+
+#: ../../Zotlabs/Module/Admin.php:749
+msgid ""
+"The recommended setting is to only allow unfiltered HTML from the following "
+"sites:"
+msgstr "Het wordt aanbevolen om alleen ongefilterde HTML van de volgende websites toe te staan:"
+
+#: ../../Zotlabs/Module/Admin.php:750
+msgid ""
+"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br"
+" />https://vimeo.com/<br />https://soundcloud.com/<br />"
+msgstr "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"
+
+#: ../../Zotlabs/Module/Admin.php:751
+msgid ""
+"All other embedded content will be filtered, <strong>unless</strong> "
+"embedded content from that site is explicitly blocked."
+msgstr "Alle andere ingesloten (embedded) inhoud wordt gefilterd, <strong>tenzij</strong> ingesloten (embedded) inhoud van een website expliciet wordt geblokkeerd."
+
+#: ../../Zotlabs/Module/Admin.php:756 ../../include/widgets.php:1385
+msgid "Security"
+msgstr "Beveiliging"
+
+#: ../../Zotlabs/Module/Admin.php:758
+msgid "Block public"
+msgstr "Openbare toegang blokkeren"
+
+#: ../../Zotlabs/Module/Admin.php:758
+msgid ""
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently authenticated."
+msgstr "Vink dit aan om alle normaliter openbare persoonlijke pagina's op deze hub alleen toegankelijk te maken voor leden die zich hebben geauthenticeerd."
+
+#: ../../Zotlabs/Module/Admin.php:759
+msgid "Set \"Transport Security\" HTTP header"
+msgstr "\"Transport Security\" HTTP-header inschakelen"
+
+#: ../../Zotlabs/Module/Admin.php:760
+msgid "Set \"Content Security Policy\" HTTP header"
+msgstr " \"Content Security Policy\" HTTP-header inschakelen"
+
+#: ../../Zotlabs/Module/Admin.php:761
+msgid "Allow communications only from these sites"
+msgstr "Alleen communicatie met deze hubs toestaan"
+
+#: ../../Zotlabs/Module/Admin.php:761
+msgid ""
+"One site per line. Leave empty to allow communication from anywhere by "
+"default"
+msgstr "Eén hub per regel. Laat leeg om communicatie standaard met alle hubs toe te staan"
+
+#: ../../Zotlabs/Module/Admin.php:762
+msgid "Block communications from these sites"
+msgstr "Communicatie met deze hubs blokkeren"
+
+#: ../../Zotlabs/Module/Admin.php:763
+msgid "Allow communications only from these channels"
+msgstr "Sta alleen communicatie toe met deze kanalen"
+
+#: ../../Zotlabs/Module/Admin.php:763
+msgid ""
+"One channel (hash) per line. Leave empty to allow from any channel by "
+"default"
+msgstr "Eén kanaal (hash) per regel. Laat leeg om communicatie standaard met alle kanalen toe te staan"
+
+#: ../../Zotlabs/Module/Admin.php:764
+msgid "Block communications from these channels"
+msgstr "Communicatie met deze kanalen blokkeren"
+
+#: ../../Zotlabs/Module/Admin.php:765
+msgid "Only allow embeds from secure (SSL) websites and links."
+msgstr "Alleen ingesloten (embedded) inhoud van veilige (SSL) websites en links toestaan."
+
+#: ../../Zotlabs/Module/Admin.php:766
+msgid "Allow unfiltered embedded HTML content only from these domains"
+msgstr "Alleen ongefilterde ingesloten (embedded) HTML van deze websites toestaan"
+
+#: ../../Zotlabs/Module/Admin.php:766
+msgid "One site per line. By default embedded content is filtered."
+msgstr "Eén website per regel. Standaard wordt ingesloten (embedded) inhoud gefilterd."
+
+#: ../../Zotlabs/Module/Admin.php:767
+msgid "Block embedded HTML from these domains"
+msgstr "Ingesloten (embedded) HTML vanaf deze domeinen blokkeren"
+
+#: ../../Zotlabs/Module/Admin.php:785
+msgid "Update has been marked successful"
+msgstr "Update is als succesvol gemarkeerd"
+
+#: ../../Zotlabs/Module/Admin.php:795
+#, php-format
+msgid "Executing %s failed. Check system logs."
+msgstr "Uitvoeren van %s is mislukt. Controleer systeemlogboek."
+
+#: ../../Zotlabs/Module/Admin.php:798
+#, php-format
+msgid "Update %s was successfully applied."
+msgstr "Update %s was geslaagd."
+
+#: ../../Zotlabs/Module/Admin.php:802
+#, php-format
+msgid "Update %s did not return a status. Unknown if it succeeded."
+msgstr "Update %s gaf geen melding. Het is daarom niet bekend of deze geslaagd is."
+
+#: ../../Zotlabs/Module/Admin.php:805
+#, php-format
+msgid "Update function %s could not be found."
+msgstr "Update-functie %s kon niet gevonden worden."
+
+#: ../../Zotlabs/Module/Admin.php:821
+msgid "No failed updates."
+msgstr "Geen mislukte updates."
+
+#: ../../Zotlabs/Module/Admin.php:825
+msgid "Failed Updates"
+msgstr "Mislukte updates"
+
+#: ../../Zotlabs/Module/Admin.php:827
+msgid "Mark success (if update was manually applied)"
+msgstr "Markeer als geslaagd (wanneer de update handmatig was uitgevoerd)"
+
+#: ../../Zotlabs/Module/Admin.php:828
+msgid "Attempt to execute this update step automatically"
+msgstr "Poging om deze stap van de update automatisch uit te voeren."
+
+#: ../../Zotlabs/Module/Admin.php:859
+msgid "Queue Statistics"
+msgstr "Wachtrij-statistieken"
+
+#: ../../Zotlabs/Module/Admin.php:860
+msgid "Total Entries"
+msgstr "Aantal vermeldingen"
+
+#: ../../Zotlabs/Module/Admin.php:861
+msgid "Priority"
+msgstr "Prioriteit"
+
+#: ../../Zotlabs/Module/Admin.php:862
+msgid "Destination URL"
+msgstr "Doel-URL"
+
+#: ../../Zotlabs/Module/Admin.php:863
+msgid "Mark hub permanently offline"
+msgstr "Hub als permanent offline markeren"
+
+#: ../../Zotlabs/Module/Admin.php:864
+msgid "Empty queue for this hub"
+msgstr "Berichtenwachtrij voor deze hub legen"
+
+#: ../../Zotlabs/Module/Admin.php:865
+msgid "Last known contact"
+msgstr "Voor het laatst contact"
+
+#: ../../Zotlabs/Module/Admin.php:901
+#, php-format
+msgid "%s account blocked/unblocked"
+msgid_plural "%s account blocked/unblocked"
+msgstr[0] "%s account geblokkeerd/gedeblokkeerd"
+msgstr[1] "%s accounts geblokkeerd/gedeblokkeerd"
+
+#: ../../Zotlabs/Module/Admin.php:908
+#, php-format
+msgid "%s account deleted"
+msgid_plural "%s accounts deleted"
+msgstr[0] "%s account verwijderd"
+msgstr[1] "%s accounts verwijderd"
+
+#: ../../Zotlabs/Module/Admin.php:944
+msgid "Account not found"
+msgstr "Account niet gevonden"
+
+#: ../../Zotlabs/Module/Admin.php:955
+#, php-format
+msgid "Account '%s' deleted"
+msgstr "Account '%s' verwijderd"
+
+#: ../../Zotlabs/Module/Admin.php:963
+#, php-format
+msgid "Account '%s' blocked"
+msgstr "Account '%s' geblokkeerd"
+
+#: ../../Zotlabs/Module/Admin.php:971
+#, php-format
+msgid "Account '%s' unblocked"
+msgstr "Account '%s' gedeblokkeerd"
+
+#: ../../Zotlabs/Module/Admin.php:1031 ../../Zotlabs/Module/Admin.php:1044
+#: ../../include/widgets.php:1383
+msgid "Accounts"
+msgstr "Accounts"
+
+#: ../../Zotlabs/Module/Admin.php:1033 ../../Zotlabs/Module/Admin.php:1212
+msgid "select all"
+msgstr "alles selecteren"
+
+#: ../../Zotlabs/Module/Admin.php:1034
+msgid "Registrations waiting for confirm"
+msgstr "Accounts die op goedkeuring wachten"
+
+#: ../../Zotlabs/Module/Admin.php:1035
+msgid "Request date"
+msgstr "Tijd/datum verzoek"
+
+#: ../../Zotlabs/Module/Admin.php:1036
+msgid "No registrations."
+msgstr "Geen verzoeken."
+
+#: ../../Zotlabs/Module/Admin.php:1038
+msgid "Deny"
+msgstr "Afkeuren"
+
+#: ../../Zotlabs/Module/Admin.php:1048 ../../include/group.php:267
+msgid "All Channels"
+msgstr "Alle kanalen"
+
+#: ../../Zotlabs/Module/Admin.php:1049
+msgid "Register date"
+msgstr "Geregistreerd"
+
+#: ../../Zotlabs/Module/Admin.php:1050
+msgid "Last login"
+msgstr "Laatste keer ingelogd"
+
+#: ../../Zotlabs/Module/Admin.php:1051
+msgid "Expires"
+msgstr "Verloopt"
+
+#: ../../Zotlabs/Module/Admin.php:1052
+msgid "Service Class"
+msgstr "Abonnementen"
+
+#: ../../Zotlabs/Module/Admin.php:1054
+msgid ""
+"Selected accounts will be deleted!\\n\\nEverything these accounts had posted"
+" on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Geselecteerde accounts (met bijbehorende kanalen) worden verwijderd!\\n\\nAlles wat deze accounts op deze hub hebben gepubliceerd wordt definitief verwijderd!\\n\\Weet je het zeker?"
+
+#: ../../Zotlabs/Module/Admin.php:1055
+msgid ""
+"The account {0} will be deleted!\\n\\nEverything this account has posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Account {0} (met bijbehorende kanalen) wordt verwijderd !\\n\\nAlles wat dit account op deze hub heeft gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?"
+
+#: ../../Zotlabs/Module/Admin.php:1091
+#, php-format
+msgid "%s channel censored/uncensored"
+msgid_plural "%s channels censored/uncensored"
+msgstr[0] "%s kanaal gecensureerd/ongecensureerd"
+msgstr[1] "%s kanalen gecensureerd/ongecensureerd"
+
+#: ../../Zotlabs/Module/Admin.php:1100
+#, php-format
+msgid "%s channel code allowed/disallowed"
+msgid_plural "%s channels code allowed/disallowed"
+msgstr[0] "Scripts toegestaan/niet toegestaan voor %s kanaal"
+msgstr[1] "Scripts toegestaan/niet toegestaan voor %s kanalen"
+
+#: ../../Zotlabs/Module/Admin.php:1106
+#, php-format
+msgid "%s channel deleted"
+msgid_plural "%s channels deleted"
+msgstr[0] "%s kanaal verwijderd"
+msgstr[1] "%s kanalen verwijderd"
+
+#: ../../Zotlabs/Module/Admin.php:1126
+msgid "Channel not found"
+msgstr "Kanaal niet gevonden"
+
+#: ../../Zotlabs/Module/Admin.php:1136
+#, php-format
+msgid "Channel '%s' deleted"
+msgstr "Kanaal '%s' verwijderd"
+
+#: ../../Zotlabs/Module/Admin.php:1148
+#, php-format
+msgid "Channel '%s' censored"
+msgstr "Kanaal '%s' gecensureerd"
+
+#: ../../Zotlabs/Module/Admin.php:1148
+#, php-format
+msgid "Channel '%s' uncensored"
+msgstr "Kanaal '%s' ongecensureerd"
+
+#: ../../Zotlabs/Module/Admin.php:1159
+#, php-format
+msgid "Channel '%s' code allowed"
+msgstr "Scripts toegestaan voor kanaal '%s'"
+
+#: ../../Zotlabs/Module/Admin.php:1159
+#, php-format
+msgid "Channel '%s' code disallowed"
+msgstr "Scripts niet toegestaan voor kanaal '%s'"
+
+#: ../../Zotlabs/Module/Admin.php:1210 ../../include/widgets.php:1384
+msgid "Channels"
+msgstr "Kanalen"
+
+#: ../../Zotlabs/Module/Admin.php:1214
+msgid "Censor"
+msgstr "Censureren"
+
+#: ../../Zotlabs/Module/Admin.php:1215
+msgid "Uncensor"
+msgstr "Niet censureren"
+
+#: ../../Zotlabs/Module/Admin.php:1216
+msgid "Allow Code"
+msgstr "Scripts toestaan"
+
+#: ../../Zotlabs/Module/Admin.php:1217
+msgid "Disallow Code"
+msgstr "Scripts niet toestaan"
+
+#: ../../Zotlabs/Module/Admin.php:1218 ../../include/conversation.php:1611
+msgid "Channel"
+msgstr "Kanaal"
+
+#: ../../Zotlabs/Module/Admin.php:1222
+msgid "UID"
+msgstr "UID"
+
+#: ../../Zotlabs/Module/Admin.php:1226
+msgid ""
+"Selected channels will be deleted!\\n\\nEverything that was posted in these "
+"channels on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Geselecteerde kanalen worden verwijderd!\\n\\nAlles wat in deze kanalen op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?"
+
+#: ../../Zotlabs/Module/Admin.php:1227
+msgid ""
+"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
+"channel on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Kanaal {0} wordt verwijderd!\\n\\nAlles wat in dit kanaal op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?"
+
+#: ../../Zotlabs/Module/Admin.php:1284
+#, php-format
+msgid "Plugin %s disabled."
+msgstr "Plugin %s uitgeschakeld."
+
+#: ../../Zotlabs/Module/Admin.php:1288
+#, php-format
+msgid "Plugin %s enabled."
+msgstr "Plugin %s ingeschakeld"
+
+#: ../../Zotlabs/Module/Admin.php:1298 ../../Zotlabs/Module/Admin.php:1585
+msgid "Disable"
+msgstr "Uitschakelen"
+
+#: ../../Zotlabs/Module/Admin.php:1301 ../../Zotlabs/Module/Admin.php:1587
+msgid "Enable"
+msgstr "Inschakelen"
+
+#: ../../Zotlabs/Module/Admin.php:1330 ../../Zotlabs/Module/Admin.php:1420
+#: ../../include/widgets.php:1387
+msgid "Plugins"
+msgstr "Plugins"
+
+#: ../../Zotlabs/Module/Admin.php:1331 ../../Zotlabs/Module/Admin.php:1614
+msgid "Toggle"
+msgstr "Omschakelen"
+
+#: ../../Zotlabs/Module/Admin.php:1332 ../../Zotlabs/Module/Admin.php:1615
+#: ../../Zotlabs/Lib/Apps.php:215 ../../include/widgets.php:638
+#: ../../include/nav.php:208
+msgid "Settings"
+msgstr "Instellingen"
+
+#: ../../Zotlabs/Module/Admin.php:1339 ../../Zotlabs/Module/Admin.php:1624
+msgid "Author: "
+msgstr "Auteur: "
+
+#: ../../Zotlabs/Module/Admin.php:1340 ../../Zotlabs/Module/Admin.php:1625
+msgid "Maintainer: "
+msgstr "Beheerder: "
+
+#: ../../Zotlabs/Module/Admin.php:1341
+msgid "Minimum project version: "
+msgstr "Minimum versie Hubzilla: "
+
+#: ../../Zotlabs/Module/Admin.php:1342
+msgid "Maximum project version: "
+msgstr "Maximum versie Hubzilla:"
+
+#: ../../Zotlabs/Module/Admin.php:1343
+msgid "Minimum PHP version: "
+msgstr "Minimum versie PHP: "
+
+#: ../../Zotlabs/Module/Admin.php:1344
+msgid "Requires: "
+msgstr "Vereist: "
+
+#: ../../Zotlabs/Module/Admin.php:1345 ../../Zotlabs/Module/Admin.php:1425
+msgid "Disabled - version incompatibility"
+msgstr "Uitgeschakeld - versie is incompatibel"
+
+#: ../../Zotlabs/Module/Admin.php:1394
+msgid "Enter the public git repository URL of the plugin repo."
+msgstr "Vul de openbare Git-URL in van de plugin-repository."
+
+#: ../../Zotlabs/Module/Admin.php:1395
+msgid "Plugin repo git URL"
+msgstr "Git-URL plugin-repository"
+
+#: ../../Zotlabs/Module/Admin.php:1396
+msgid "Custom repo name"
+msgstr "Handmatige repository-naam"
+
+#: ../../Zotlabs/Module/Admin.php:1396
+msgid "(optional)"
+msgstr "(optioneel)"
+
+#: ../../Zotlabs/Module/Admin.php:1397
+msgid "Download Plugin Repo"
+msgstr "Plugin-repository downloaden"
+
+#: ../../Zotlabs/Module/Admin.php:1404
+msgid "Install new repo"
+msgstr "Nieuwe repository installeren"
+
+#: ../../Zotlabs/Module/Admin.php:1405 ../../Zotlabs/Lib/Apps.php:330
+msgid "Install"
+msgstr "Installeren"
+
+#: ../../Zotlabs/Module/Admin.php:1427
+msgid "Manage Repos"
+msgstr "Repositories beheren"
+
+#: ../../Zotlabs/Module/Admin.php:1428
+msgid "Installed Plugin Repositories"
+msgstr "Toegevoegde plugin-repositories"
+
+#: ../../Zotlabs/Module/Admin.php:1429
+msgid "Install a New Plugin Repository"
+msgstr "Nieuwe plugin-repository toevoegen"
+
+#: ../../Zotlabs/Module/Admin.php:1435 ../../Zotlabs/Module/Settings.php:77
+#: ../../Zotlabs/Module/Settings.php:616 ../../Zotlabs/Lib/Apps.php:330
+msgid "Update"
+msgstr "Bijwerken"
+
+#: ../../Zotlabs/Module/Admin.php:1436
+msgid "Switch branch"
+msgstr "Branch veranderen"
+
+#: ../../Zotlabs/Module/Admin.php:1550
+msgid "No themes found."
+msgstr "Geen thema's gevonden"
+
+#: ../../Zotlabs/Module/Admin.php:1606
+msgid "Screenshot"
+msgstr "Schermafdruk"
+
+#: ../../Zotlabs/Module/Admin.php:1613 ../../Zotlabs/Module/Admin.php:1647
+#: ../../include/widgets.php:1388
+msgid "Themes"
+msgstr "Thema's"
+
+#: ../../Zotlabs/Module/Admin.php:1652
+msgid "[Experimental]"
+msgstr "[Experimenteel]"
+
+#: ../../Zotlabs/Module/Admin.php:1653
+msgid "[Unsupported]"
+msgstr "[Niet ondersteund]"
+
+#: ../../Zotlabs/Module/Admin.php:1677
+msgid "Log settings updated."
+msgstr "Logboek-instellingen bijgewerkt."
+
+#: ../../Zotlabs/Module/Admin.php:1732 ../../include/widgets.php:1409
+#: ../../include/widgets.php:1419
+msgid "Logs"
+msgstr "Logboeken"
+
+#: ../../Zotlabs/Module/Admin.php:1734
+msgid "Clear"
+msgstr "Leegmaken"
+
+#: ../../Zotlabs/Module/Admin.php:1740
+msgid "Debugging"
+msgstr "Debuggen"
+
+#: ../../Zotlabs/Module/Admin.php:1741
+msgid "Log file"
+msgstr "Logbestand"
+
+#: ../../Zotlabs/Module/Admin.php:1741
+msgid ""
+"Must be writable by web server. Relative to your top-level webserver "
+"directory."
+msgstr "Moet door de webserver beschrijfbaar zijn. Relatief ten opzichte van de bovenste map van je $Projectname-installatie."
+
+#: ../../Zotlabs/Module/Admin.php:1742
+msgid "Log level"
+msgstr "Logniveau"
+
+#: ../../Zotlabs/Module/Admin.php:2028
+msgid "New Profile Field"
+msgstr "Nieuw profielveld"
+
+#: ../../Zotlabs/Module/Admin.php:2029 ../../Zotlabs/Module/Admin.php:2049
+msgid "Field nickname"
+msgstr "Bijnaam voor veld"
+
+#: ../../Zotlabs/Module/Admin.php:2029 ../../Zotlabs/Module/Admin.php:2049
+msgid "System name of field"
+msgstr "Systeemnaam voor veld"
+
+#: ../../Zotlabs/Module/Admin.php:2030 ../../Zotlabs/Module/Admin.php:2050
+msgid "Input type"
+msgstr "Invoertype"
+
+#: ../../Zotlabs/Module/Admin.php:2031 ../../Zotlabs/Module/Admin.php:2051
+msgid "Field Name"
+msgstr "Veldnaam"
+
+#: ../../Zotlabs/Module/Admin.php:2031 ../../Zotlabs/Module/Admin.php:2051
+msgid "Label on profile pages"
+msgstr "Tekstlabel voor op profielpagina's"
+
+#: ../../Zotlabs/Module/Admin.php:2032 ../../Zotlabs/Module/Admin.php:2052
+msgid "Help text"
+msgstr "Helptekst"
+
+#: ../../Zotlabs/Module/Admin.php:2032 ../../Zotlabs/Module/Admin.php:2052
+msgid "Additional info (optional)"
+msgstr "Extra informatie (optioneel)"
+
+#: ../../Zotlabs/Module/Admin.php:2042
+msgid "Field definition not found"
+msgstr "Velddefinitie niet gevonden"
+
+#: ../../Zotlabs/Module/Admin.php:2048
+msgid "Edit Profile Field"
+msgstr "Profielveld bewerken"
+
+#: ../../Zotlabs/Module/Admin.php:2106 ../../include/widgets.php:1390
+msgid "Profile Fields"
+msgstr "Profielvelden"
+
+#: ../../Zotlabs/Module/Admin.php:2107
+msgid "Basic Profile Fields"
+msgstr "Standaard profielvelden"
+
+#: ../../Zotlabs/Module/Admin.php:2108
+msgid "Advanced Profile Fields"
+msgstr "Geavanceerde profielvelden"
+
+#: ../../Zotlabs/Module/Admin.php:2108
+msgid "(In addition to basic fields)"
+msgstr "(als toevoeging op de standaard velden)"
+
+#: ../../Zotlabs/Module/Admin.php:2110
+msgid "All available fields"
+msgstr "Alle beschikbare velden"
+
+#: ../../Zotlabs/Module/Admin.php:2111
+msgid "Custom Fields"
+msgstr "Extra (handmatig toegevoegde) velden"
+
+#: ../../Zotlabs/Module/Admin.php:2115
+msgid "Create Custom Field"
+msgstr "Extra velden aanmaken"
+
+#: ../../Zotlabs/Module/Appman.php:37 ../../Zotlabs/Module/Appman.php:53
+msgid "App installed."
+msgstr "App geïnstalleerd"
+
+#: ../../Zotlabs/Module/Appman.php:46
+msgid "Malformed app."
+msgstr "Misvormde app."
+
+#: ../../Zotlabs/Module/Appman.php:104
+msgid "Embed code"
+msgstr "Insluitcode"
+
+#: ../../Zotlabs/Module/Appman.php:110 ../../include/widgets.php:107
+msgid "Edit App"
+msgstr "App bewerken"
+
+#: ../../Zotlabs/Module/Appman.php:110
+msgid "Create App"
+msgstr "App maken"
+
+#: ../../Zotlabs/Module/Appman.php:115
+msgid "Name of app"
+msgstr "Naam van app"
+
+#: ../../Zotlabs/Module/Appman.php:116
+msgid "Location (URL) of app"
+msgstr "Locatie (URL) van app"
+
+#: ../../Zotlabs/Module/Appman.php:118
+msgid "Photo icon URL"
+msgstr "URL van pictogram"
+
+#: ../../Zotlabs/Module/Appman.php:118
+msgid "80 x 80 pixels - optional"
+msgstr "80 x 80 pixels (optioneel)"
+
+#: ../../Zotlabs/Module/Appman.php:119
+msgid "Categories (optional, comma separated list)"
+msgstr "Categorieën (optioneel, door komma's gescheiden lijst)"
+
+#: ../../Zotlabs/Module/Appman.php:120
+msgid "Version ID"
+msgstr "Versie-ID"
+
+#: ../../Zotlabs/Module/Appman.php:121
+msgid "Price of app"
+msgstr "Prijs van de app"
+
+#: ../../Zotlabs/Module/Appman.php:122
+msgid "Location (URL) to purchase app"
+msgstr "Locatie (URL) om de app aan te schaffen"
+
#: ../../Zotlabs/Module/Rbmark.php:94
msgid "Select a bookmark folder"
msgstr "Kies een bladwijzermap"
@@ -4812,7 +4751,7 @@ msgid "Membership on this site is by invitation only."
msgstr "Registreren op deze $Projectname-hub kan alleen op uitnodiging."
#: ../../Zotlabs/Module/Register.php:262 ../../include/nav.php:147
-#: ../../boot.php:1597
+#: ../../boot.php:1685
msgid "Register"
msgstr "Registreren"
@@ -4830,45 +4769,45 @@ msgid ""
"password."
msgstr "Het verwijderen van een account is niet toegestaan binnen 48 uur nadat het wachtwoord is veranderd."
-#: ../../Zotlabs/Module/Removeaccount.php:61
+#: ../../Zotlabs/Module/Removeaccount.php:56
msgid "Remove This Account"
msgstr "Verwijder dit account"
-#: ../../Zotlabs/Module/Removeaccount.php:62
-#: ../../Zotlabs/Module/Removeme.php:62
+#: ../../Zotlabs/Module/Removeaccount.php:57
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "WARNING: "
msgstr "WAARSCHUWING: "
-#: ../../Zotlabs/Module/Removeaccount.php:62
+#: ../../Zotlabs/Module/Removeaccount.php:57
msgid ""
"This account and all its channels will be completely removed from the "
"network. "
msgstr "Dit account en al zijn kanalen worden volledig uit het $Projectname-netwerk verwijderd."
-#: ../../Zotlabs/Module/Removeaccount.php:62
-#: ../../Zotlabs/Module/Removeme.php:62
+#: ../../Zotlabs/Module/Removeaccount.php:57
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "This action is permanent and can not be undone!"
msgstr "Deze handeling is van permanente aard en kan niet meer worden teruggedraaid!"
-#: ../../Zotlabs/Module/Removeaccount.php:63
-#: ../../Zotlabs/Module/Removeme.php:63
+#: ../../Zotlabs/Module/Removeaccount.php:58
+#: ../../Zotlabs/Module/Removeme.php:60
msgid "Please enter your password for verification:"
msgstr "Vul je wachtwoord in ter verificatie:"
-#: ../../Zotlabs/Module/Removeaccount.php:64
+#: ../../Zotlabs/Module/Removeaccount.php:59
msgid ""
"Remove this account, all its channels and all its channel clones from the "
"network"
msgstr "Dit account, al zijn kanalen en alle klonen van zijn kanalen uit het $Projectname-netwerk verwijderen"
-#: ../../Zotlabs/Module/Removeaccount.php:64
+#: ../../Zotlabs/Module/Removeaccount.php:59
msgid ""
"By default only the instances of the channels located on this hub will be "
"removed from the network"
msgstr "Standaard worden alleen de kanalen die zich op deze hub bevinden uit het $Projectname-netwerk verwijderd"
-#: ../../Zotlabs/Module/Removeaccount.php:65
-#: ../../Zotlabs/Module/Settings.php:703
+#: ../../Zotlabs/Module/Removeaccount.php:60
+#: ../../Zotlabs/Module/Settings.php:705
msgid "Remove Account"
msgstr "Account verwijderen"
@@ -4878,25 +4817,25 @@ msgid ""
"password."
msgstr "Het verwijderen van een kanaal is niet toegestaan binnen 48 uur nadat het wachtwoord van het account is veranderd."
-#: ../../Zotlabs/Module/Removeme.php:61
+#: ../../Zotlabs/Module/Removeme.php:58
msgid "Remove This Channel"
msgstr "Verwijder dit kanaal"
-#: ../../Zotlabs/Module/Removeme.php:62
+#: ../../Zotlabs/Module/Removeme.php:59
msgid "This channel will be completely removed from the network. "
msgstr "Dit kanaal wordt volledig uit het $Projectname-netwerk verwijderd."
-#: ../../Zotlabs/Module/Removeme.php:64
+#: ../../Zotlabs/Module/Removeme.php:61
msgid "Remove this channel and all its clones from the network"
msgstr "Dit kanaal en alle klonen hiervan uit het $Projectname-netwerk verwijderen"
-#: ../../Zotlabs/Module/Removeme.php:64
+#: ../../Zotlabs/Module/Removeme.php:61
msgid ""
"By default only the instance of the channel located on this hub will be "
"removed from the network"
msgstr "Standaard wordt alleen het kanaal dat zich op deze hub bevindt uit het $Projectname-netwerk verwijderd"
-#: ../../Zotlabs/Module/Removeme.php:65 ../../Zotlabs/Module/Settings.php:1122
+#: ../../Zotlabs/Module/Removeme.php:62 ../../Zotlabs/Module/Settings.php:1124
msgid "Remove Channel"
msgstr "Kanaal verwijderen"
@@ -4940,1015 +4879,1034 @@ msgstr "Zoekresultaten voor %s"
msgid "No service class restrictions found."
msgstr "Geen abonnementsbeperkingen gevonden."
-#: ../../Zotlabs/Module/Settings.php:67
+#: ../../Zotlabs/Module/Settings.php:69
msgid "Name is required"
msgstr "Naam is vereist"
-#: ../../Zotlabs/Module/Settings.php:71
+#: ../../Zotlabs/Module/Settings.php:73
msgid "Key and Secret are required"
msgstr "Key en secret zijn vereist"
-#: ../../Zotlabs/Module/Settings.php:75 ../../Zotlabs/Module/Settings.php:614
-#: ../../include/apps.php:252
-msgid "Update"
-msgstr "Bijwerken"
-
-#: ../../Zotlabs/Module/Settings.php:223
+#: ../../Zotlabs/Module/Settings.php:225
msgid "Not valid email."
msgstr "Geen geldig e-mailadres."
-#: ../../Zotlabs/Module/Settings.php:226
+#: ../../Zotlabs/Module/Settings.php:228
msgid "Protected email address. Cannot change to that email."
msgstr "Beschermd e-mailadres. Kan dat e-mailadres niet gebruiken."
-#: ../../Zotlabs/Module/Settings.php:235
+#: ../../Zotlabs/Module/Settings.php:237
msgid "System failure storing new email. Please try again."
msgstr "Systeemfout opslaan van nieuwe e-mail. Probeer het nog een keer."
-#: ../../Zotlabs/Module/Settings.php:252
+#: ../../Zotlabs/Module/Settings.php:254
msgid "Password verification failed."
msgstr "Wachtwoordverificatie mislukt"
-#: ../../Zotlabs/Module/Settings.php:259
+#: ../../Zotlabs/Module/Settings.php:261
msgid "Passwords do not match. Password unchanged."
msgstr "Wachtwoorden komen niet overeen. Wachtwoord onveranderd."
-#: ../../Zotlabs/Module/Settings.php:263
+#: ../../Zotlabs/Module/Settings.php:265
msgid "Empty passwords are not allowed. Password unchanged."
msgstr "Lege wachtwoorden zijn niet toegestaan. Wachtwoord onveranderd."
-#: ../../Zotlabs/Module/Settings.php:277
+#: ../../Zotlabs/Module/Settings.php:279
msgid "Password changed."
msgstr "Wachtwoord veranderd."
-#: ../../Zotlabs/Module/Settings.php:279
+#: ../../Zotlabs/Module/Settings.php:281
msgid "Password update failed. Please try again."
msgstr "Bijwerken wachtwoord mislukt. Probeer opnieuw."
-#: ../../Zotlabs/Module/Settings.php:523
+#: ../../Zotlabs/Module/Settings.php:525
msgid "Settings updated."
msgstr "Instellingen bijgewerkt."
-#: ../../Zotlabs/Module/Settings.php:587 ../../Zotlabs/Module/Settings.php:613
-#: ../../Zotlabs/Module/Settings.php:649
+#: ../../Zotlabs/Module/Settings.php:589 ../../Zotlabs/Module/Settings.php:615
+#: ../../Zotlabs/Module/Settings.php:651
msgid "Add application"
msgstr "Applicatie toevoegen"
-#: ../../Zotlabs/Module/Settings.php:590
+#: ../../Zotlabs/Module/Settings.php:592
msgid "Name of application"
msgstr "Naam van applicatie"
-#: ../../Zotlabs/Module/Settings.php:591 ../../Zotlabs/Module/Settings.php:617
+#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:619
msgid "Consumer Key"
msgstr "Consumer key"
-#: ../../Zotlabs/Module/Settings.php:591 ../../Zotlabs/Module/Settings.php:592
+#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:594
msgid "Automatically generated - change if desired. Max length 20"
msgstr "Automatische gegenereerd - verander wanneer gewenst. Maximale lengte is 20"
-#: ../../Zotlabs/Module/Settings.php:592 ../../Zotlabs/Module/Settings.php:618
+#: ../../Zotlabs/Module/Settings.php:594 ../../Zotlabs/Module/Settings.php:620
msgid "Consumer Secret"
msgstr "Consumer secret"
-#: ../../Zotlabs/Module/Settings.php:593 ../../Zotlabs/Module/Settings.php:619
+#: ../../Zotlabs/Module/Settings.php:595 ../../Zotlabs/Module/Settings.php:621
msgid "Redirect"
msgstr "Redirect/doorverwijzing"
-#: ../../Zotlabs/Module/Settings.php:593
+#: ../../Zotlabs/Module/Settings.php:595
msgid ""
"Redirect URI - leave blank unless your application specifically requires "
"this"
msgstr "URI voor redirect - laat leeg, behalve wanneer de applicatie dit vereist"
-#: ../../Zotlabs/Module/Settings.php:594 ../../Zotlabs/Module/Settings.php:620
+#: ../../Zotlabs/Module/Settings.php:596 ../../Zotlabs/Module/Settings.php:622
msgid "Icon url"
msgstr "Pictogram-URL"
-#: ../../Zotlabs/Module/Settings.php:594
+#: ../../Zotlabs/Module/Settings.php:596 ../../Zotlabs/Module/Sources.php:112
+#: ../../Zotlabs/Module/Sources.php:147
msgid "Optional"
msgstr "Optioneel"
-#: ../../Zotlabs/Module/Settings.php:605
+#: ../../Zotlabs/Module/Settings.php:607
msgid "Application not found."
msgstr "Applicatie niet gevonden."
-#: ../../Zotlabs/Module/Settings.php:648
+#: ../../Zotlabs/Module/Settings.php:650
msgid "Connected Apps"
msgstr "Verbonden applicaties"
-#: ../../Zotlabs/Module/Settings.php:652
+#: ../../Zotlabs/Module/Settings.php:654
msgid "Client key starts with"
msgstr "Client key begint met"
-#: ../../Zotlabs/Module/Settings.php:653
+#: ../../Zotlabs/Module/Settings.php:655
msgid "No name"
msgstr "Geen naam"
-#: ../../Zotlabs/Module/Settings.php:654
+#: ../../Zotlabs/Module/Settings.php:656
msgid "Remove authorization"
msgstr "Autorisatie verwijderen"
-#: ../../Zotlabs/Module/Settings.php:667
+#: ../../Zotlabs/Module/Settings.php:669
msgid "No feature settings configured"
msgstr "Geen plugin-instellingen aanwezig"
-#: ../../Zotlabs/Module/Settings.php:674
+#: ../../Zotlabs/Module/Settings.php:676
msgid "Feature/Addon Settings"
msgstr "Plugin-instellingen"
-#: ../../Zotlabs/Module/Settings.php:697
+#: ../../Zotlabs/Module/Settings.php:699
msgid "Account Settings"
msgstr "Account-instellingen"
-#: ../../Zotlabs/Module/Settings.php:698
+#: ../../Zotlabs/Module/Settings.php:700
msgid "Current Password"
msgstr "Huidig wachtwoord"
-#: ../../Zotlabs/Module/Settings.php:699
+#: ../../Zotlabs/Module/Settings.php:701
msgid "Enter New Password"
msgstr "Nieuw wachtwoord invoeren"
-#: ../../Zotlabs/Module/Settings.php:700
+#: ../../Zotlabs/Module/Settings.php:702
msgid "Confirm New Password"
msgstr "Nieuw wachtwoord bevestigen"
-#: ../../Zotlabs/Module/Settings.php:700
+#: ../../Zotlabs/Module/Settings.php:702
msgid "Leave password fields blank unless changing"
msgstr "Laat de wachtwoordvelden leeg, behalve wanneer je deze wil veranderen"
-#: ../../Zotlabs/Module/Settings.php:702
-#: ../../Zotlabs/Module/Settings.php:1039
+#: ../../Zotlabs/Module/Settings.php:704
+#: ../../Zotlabs/Module/Settings.php:1041
msgid "Email Address:"
msgstr "E-mailadres:"
-#: ../../Zotlabs/Module/Settings.php:704
+#: ../../Zotlabs/Module/Settings.php:706
msgid "Remove this account including all its channels"
msgstr "Dit account en al zijn kanalen verwijderen"
-#: ../../Zotlabs/Module/Settings.php:727
+#: ../../Zotlabs/Module/Settings.php:729
msgid "Additional Features"
msgstr "Extra functies"
-#: ../../Zotlabs/Module/Settings.php:751
+#: ../../Zotlabs/Module/Settings.php:753
msgid "Connector Settings"
msgstr "Instellingen externe koppelingen"
-#: ../../Zotlabs/Module/Settings.php:790
+#: ../../Zotlabs/Module/Settings.php:792
msgid "No special theme for mobile devices"
msgstr "Geen speciaal thema voor mobiele apparaten"
-#: ../../Zotlabs/Module/Settings.php:793
+#: ../../Zotlabs/Module/Settings.php:795
#, php-format
msgid "%s - (Experimental)"
msgstr "%s - (experimenteel)"
-#: ../../Zotlabs/Module/Settings.php:835
+#: ../../Zotlabs/Module/Settings.php:837
msgid "Display Settings"
msgstr "Weergave-instellingen"
-#: ../../Zotlabs/Module/Settings.php:836
+#: ../../Zotlabs/Module/Settings.php:838
msgid "Theme Settings"
msgstr "Thema-instellingen"
-#: ../../Zotlabs/Module/Settings.php:837
+#: ../../Zotlabs/Module/Settings.php:839
msgid "Custom Theme Settings"
msgstr "Handmatige thema-instellingen"
-#: ../../Zotlabs/Module/Settings.php:838
+#: ../../Zotlabs/Module/Settings.php:840
msgid "Content Settings"
msgstr "Inhoudsinstellingen"
-#: ../../Zotlabs/Module/Settings.php:844
+#: ../../Zotlabs/Module/Settings.php:846
msgid "Display Theme:"
msgstr "Gebruik thema:"
-#: ../../Zotlabs/Module/Settings.php:845
+#: ../../Zotlabs/Module/Settings.php:847
msgid "Mobile Theme:"
msgstr "Mobiel thema:"
-#: ../../Zotlabs/Module/Settings.php:846
+#: ../../Zotlabs/Module/Settings.php:848
msgid "Preload images before rendering the page"
msgstr "Afbeeldingen laden voordat de pagina wordt weergegeven"
-#: ../../Zotlabs/Module/Settings.php:846
+#: ../../Zotlabs/Module/Settings.php:848
msgid ""
"The subjective page load time will be longer but the page will be ready when"
" displayed"
msgstr "De laadtijd van een pagina lijkt langer, maar de pagina is wel meteen helemaal geladen wanneer deze wordt weergeven"
-#: ../../Zotlabs/Module/Settings.php:847
+#: ../../Zotlabs/Module/Settings.php:849
msgid "Enable user zoom on mobile devices"
msgstr "Inzoomen op smartphones en tablets toestaan"
-#: ../../Zotlabs/Module/Settings.php:848
+#: ../../Zotlabs/Module/Settings.php:850
msgid "Update browser every xx seconds"
msgstr "Ververs de webbrowser om de zoveel seconde"
-#: ../../Zotlabs/Module/Settings.php:848
+#: ../../Zotlabs/Module/Settings.php:850
msgid "Minimum of 10 seconds, no maximum"
msgstr "Minimaal 10 seconde, geen maximum"
-#: ../../Zotlabs/Module/Settings.php:849
+#: ../../Zotlabs/Module/Settings.php:851
msgid "Maximum number of conversations to load at any time:"
msgstr "Maximaal aantal conversaties die per keer geladen worden:"
-#: ../../Zotlabs/Module/Settings.php:849
+#: ../../Zotlabs/Module/Settings.php:851
msgid "Maximum of 100 items"
msgstr "Maximaal 100 conversaties"
-#: ../../Zotlabs/Module/Settings.php:850
+#: ../../Zotlabs/Module/Settings.php:852
msgid "Show emoticons (smilies) as images"
msgstr "Toon emoticons (smilies) als afbeeldingen"
-#: ../../Zotlabs/Module/Settings.php:851
+#: ../../Zotlabs/Module/Settings.php:853
msgid "Link post titles to source"
msgstr "Berichtkoppen naar originele locatie linken"
-#: ../../Zotlabs/Module/Settings.php:852
+#: ../../Zotlabs/Module/Settings.php:854
msgid "System Page Layout Editor - (advanced)"
msgstr "Lay-out bewerken van systeempagina's (geavanceerd)"
-#: ../../Zotlabs/Module/Settings.php:855
+#: ../../Zotlabs/Module/Settings.php:857
msgid "Use blog/list mode on channel page"
msgstr "Gebruik blog/lijst-modus op kanaalpagina"
-#: ../../Zotlabs/Module/Settings.php:855 ../../Zotlabs/Module/Settings.php:856
+#: ../../Zotlabs/Module/Settings.php:857 ../../Zotlabs/Module/Settings.php:858
msgid "(comments displayed separately)"
msgstr "(reacties worden afzonderlijk weergeven)"
-#: ../../Zotlabs/Module/Settings.php:856
+#: ../../Zotlabs/Module/Settings.php:858
msgid "Use blog/list mode on grid page"
msgstr "Gebruik blog/lijst-modus op gridpagina"
-#: ../../Zotlabs/Module/Settings.php:857
+#: ../../Zotlabs/Module/Settings.php:859
msgid "Channel page max height of content (in pixels)"
msgstr "Maximale hoogte berichtinhoud op kanaalpagina (in pixels)"
-#: ../../Zotlabs/Module/Settings.php:857 ../../Zotlabs/Module/Settings.php:858
+#: ../../Zotlabs/Module/Settings.php:859 ../../Zotlabs/Module/Settings.php:860
msgid "click to expand content exceeding this height"
msgstr "klik om inhoud uit te klappen die deze hoogte overschrijdt"
-#: ../../Zotlabs/Module/Settings.php:858
+#: ../../Zotlabs/Module/Settings.php:860
msgid "Grid page max height of content (in pixels)"
msgstr "Maximale hoogte berichtinhoud op gridpagina (in pixels)"
-#: ../../Zotlabs/Module/Settings.php:892
+#: ../../Zotlabs/Module/Settings.php:894
msgid "Nobody except yourself"
msgstr "Niemand, behalve jezelf"
-#: ../../Zotlabs/Module/Settings.php:893
+#: ../../Zotlabs/Module/Settings.php:895
msgid "Only those you specifically allow"
msgstr "Alleen connecties met uitdrukkelijke toestemming"
-#: ../../Zotlabs/Module/Settings.php:894
+#: ../../Zotlabs/Module/Settings.php:896
msgid "Approved connections"
msgstr "Geaccepteerde connecties"
-#: ../../Zotlabs/Module/Settings.php:895
+#: ../../Zotlabs/Module/Settings.php:897
msgid "Any connections"
msgstr "Alle connecties"
-#: ../../Zotlabs/Module/Settings.php:896
+#: ../../Zotlabs/Module/Settings.php:898
msgid "Anybody on this website"
msgstr "Iedereen op deze hub"
-#: ../../Zotlabs/Module/Settings.php:897
+#: ../../Zotlabs/Module/Settings.php:899
msgid "Anybody in this network"
msgstr "Iedereen in dit netwerk"
-#: ../../Zotlabs/Module/Settings.php:898
+#: ../../Zotlabs/Module/Settings.php:900
msgid "Anybody authenticated"
msgstr "Geauthenticeerd"
-#: ../../Zotlabs/Module/Settings.php:899
+#: ../../Zotlabs/Module/Settings.php:901
msgid "Anybody on the internet"
msgstr "Iedereen op het internet"
-#: ../../Zotlabs/Module/Settings.php:974
+#: ../../Zotlabs/Module/Settings.php:976
msgid "Publish your default profile in the network directory"
msgstr "Publiceer je standaardprofiel in de kanalengids"
-#: ../../Zotlabs/Module/Settings.php:979
+#: ../../Zotlabs/Module/Settings.php:981
msgid "Allow us to suggest you as a potential friend to new members?"
msgstr "Sta ons toe om jouw kanaal als mogelijke connectie voor te stellen aan nieuwe kanalen"
-#: ../../Zotlabs/Module/Settings.php:988
+#: ../../Zotlabs/Module/Settings.php:990
msgid "Your channel address is"
msgstr "Jouw kanaaladres is"
-#: ../../Zotlabs/Module/Settings.php:1030
+#: ../../Zotlabs/Module/Settings.php:1032
msgid "Channel Settings"
msgstr "Kanaal-instellingen"
-#: ../../Zotlabs/Module/Settings.php:1037
+#: ../../Zotlabs/Module/Settings.php:1039
msgid "Basic Settings"
msgstr "Basis-instellingen"
-#: ../../Zotlabs/Module/Settings.php:1038 ../../include/identity.php:1279
+#: ../../Zotlabs/Module/Settings.php:1040 ../../include/channel.php:1140
msgid "Full Name:"
msgstr "Volledige naam:"
-#: ../../Zotlabs/Module/Settings.php:1040
+#: ../../Zotlabs/Module/Settings.php:1042
msgid "Your Timezone:"
msgstr "Jouw tijdzone:"
-#: ../../Zotlabs/Module/Settings.php:1041
+#: ../../Zotlabs/Module/Settings.php:1043
msgid "Default Post Location:"
msgstr "Standaardlocatie bericht:"
-#: ../../Zotlabs/Module/Settings.php:1041
+#: ../../Zotlabs/Module/Settings.php:1043
msgid "Geographical location to display on your posts"
msgstr "Geografische locatie die bij het bericht moet worden vermeld"
-#: ../../Zotlabs/Module/Settings.php:1042
+#: ../../Zotlabs/Module/Settings.php:1044
msgid "Use Browser Location:"
msgstr "Locatie van webbrowser gebruiken:"
-#: ../../Zotlabs/Module/Settings.php:1044
+#: ../../Zotlabs/Module/Settings.php:1046
msgid "Adult Content"
msgstr "Inhoud voor volwassenen"
-#: ../../Zotlabs/Module/Settings.php:1044
+#: ../../Zotlabs/Module/Settings.php:1046
msgid ""
"This channel frequently or regularly publishes adult content. (Please tag "
"any adult material and/or nudity with #NSFW)"
msgstr "Dit kanaal publiceert regelmatig of vaak materiaal dat alleen geschikt is voor volwassenen. (Gebruik de tag #NSFW in berichten met een seksueel getinte inhoud of ander voor minderjarigen ongeschikt materiaal)"
-#: ../../Zotlabs/Module/Settings.php:1046
+#: ../../Zotlabs/Module/Settings.php:1048
msgid "Security and Privacy Settings"
msgstr "Veiligheids- en privacy-instellingen"
-#: ../../Zotlabs/Module/Settings.php:1049
+#: ../../Zotlabs/Module/Settings.php:1051
msgid "Your permissions are already configured. Click to view/adjust"
msgstr "Jouw permissies zijn al ingesteld. Klik om ze te bekijken of aan te passen."
-#: ../../Zotlabs/Module/Settings.php:1051
+#: ../../Zotlabs/Module/Settings.php:1053
msgid "Hide my online presence"
msgstr "Verberg mijn aanwezigheid"
-#: ../../Zotlabs/Module/Settings.php:1051
+#: ../../Zotlabs/Module/Settings.php:1053
msgid "Prevents displaying in your profile that you are online"
msgstr "Voorkomt dat op je kanaalpagina te zien valt dat je momenteel op $Projectname aanwezig bent"
-#: ../../Zotlabs/Module/Settings.php:1053
+#: ../../Zotlabs/Module/Settings.php:1055
msgid "Simple Privacy Settings:"
msgstr "Eenvoudige privacy-instellingen:"
-#: ../../Zotlabs/Module/Settings.php:1054
+#: ../../Zotlabs/Module/Settings.php:1056
msgid ""
"Very Public - <em>extremely permissive (should be used with caution)</em>"
msgstr "Zeer openbaar <em>(kanaal staat volledig open - moet met grote zorgvuldigheid gebruikt worden)</em>"
-#: ../../Zotlabs/Module/Settings.php:1055
+#: ../../Zotlabs/Module/Settings.php:1057
msgid ""
"Typical - <em>default public, privacy when desired (similar to social "
"network permissions but with improved privacy)</em>"
msgstr "Normaal <em>(standaard openbaar, maar privacy wanneer noodzakelijk - vergelijkbaar met die van sociale netwerken, maar met verbeterde privacy)</em>"
-#: ../../Zotlabs/Module/Settings.php:1056
+#: ../../Zotlabs/Module/Settings.php:1058
msgid "Private - <em>default private, never open or public</em>"
msgstr "Privé <em>(standaard privé en nooit openbaar)</em>"
-#: ../../Zotlabs/Module/Settings.php:1057
+#: ../../Zotlabs/Module/Settings.php:1059
msgid "Blocked - <em>default blocked to/from everybody</em>"
msgstr "Geblokkeerd <em>(standaard geblokkeerd naar/van iedereen)</em>"
-#: ../../Zotlabs/Module/Settings.php:1059
+#: ../../Zotlabs/Module/Settings.php:1061
msgid "Allow others to tag your posts"
msgstr "Anderen toestaan om je berichten te taggen"
-#: ../../Zotlabs/Module/Settings.php:1059
+#: ../../Zotlabs/Module/Settings.php:1061
msgid ""
"Often used by the community to retro-actively flag inappropriate content"
msgstr "Vaak in groepen/forums gebruikt om met terugwerkende kracht ongepast materiaal te markeren"
-#: ../../Zotlabs/Module/Settings.php:1061
+#: ../../Zotlabs/Module/Settings.php:1063
msgid "Advanced Privacy Settings"
msgstr "Geavanceerde privacy-instellingen"
-#: ../../Zotlabs/Module/Settings.php:1063
+#: ../../Zotlabs/Module/Settings.php:1065
msgid "Expire other channel content after this many days"
msgstr "Inhoud van andere kanalen na zoveel aantal dagen laten verlopen:"
-#: ../../Zotlabs/Module/Settings.php:1063
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "0 or blank to use the website limit."
+msgstr "0 of leeg om het standaard aantal dagen van deze hub te gebruiken."
+
+#: ../../Zotlabs/Module/Settings.php:1065
#, php-format
-msgid ""
-"0 or blank to use the website limit. The website expires after %d days."
-msgstr "0 of leeg om het standaard aantal dagen van deze hub te gebruiken. Deze hub laat de inhoud van andere kanalen na %d dagen verlopen."
+msgid "This website expires after %d days."
+msgstr "Deze hub laat de inhoud van andere kanalen na %d dagen verlopen."
+
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "This website does not expire imported content."
+msgstr "Deze hub laat de inhoud van andere kanalen niet verlopen."
-#: ../../Zotlabs/Module/Settings.php:1064
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "The website limit takes precedence if lower than your limit."
+msgstr "Wanneer de standaard aantal dagen van deze hub lager ligt dan jouw aantal, dan heeft de limiet van deze hub voorrang."
+
+#: ../../Zotlabs/Module/Settings.php:1066
msgid "Maximum Friend Requests/Day:"
msgstr "Maximum aantal connectieverzoeken per dag:"
-#: ../../Zotlabs/Module/Settings.php:1064
+#: ../../Zotlabs/Module/Settings.php:1066
msgid "May reduce spam activity"
msgstr "Kan eventuele spam verminderen"
-#: ../../Zotlabs/Module/Settings.php:1065
-msgid "Default Post Permissions"
-msgstr "Standaard permissies voor nieuwe berichten"
+#: ../../Zotlabs/Module/Settings.php:1067
+msgid "Default Post and Publish Permissions"
+msgstr "Standaard permissies voor nieuwe berichten en publicaties"
-#: ../../Zotlabs/Module/Settings.php:1070
+#: ../../Zotlabs/Module/Settings.php:1069
+msgid "Use my default audience setting for the type of object published"
+msgstr "Gebruik mijn standaard privacy-instelling voor dit type publicatie"
+
+#: ../../Zotlabs/Module/Settings.php:1072
msgid "Channel permissions category:"
msgstr "Kanaaltype en -permissies:"
-#: ../../Zotlabs/Module/Settings.php:1076
+#: ../../Zotlabs/Module/Settings.php:1078
msgid "Maximum private messages per day from unknown people:"
msgstr "Maximum aantal privé-berichten per dag van onbekende personen:"
-#: ../../Zotlabs/Module/Settings.php:1076
+#: ../../Zotlabs/Module/Settings.php:1078
msgid "Useful to reduce spamming"
msgstr "Kan eventuele spam verminderen"
-#: ../../Zotlabs/Module/Settings.php:1079
+#: ../../Zotlabs/Module/Settings.php:1081
msgid "Notification Settings"
msgstr "Notificatie-instellingen"
-#: ../../Zotlabs/Module/Settings.php:1080
+#: ../../Zotlabs/Module/Settings.php:1082
msgid "By default post a status message when:"
-msgstr "Plaats automatisch een statusbericht wanneer:"
+msgstr "Plaats automatisch een bericht wanneer:"
-#: ../../Zotlabs/Module/Settings.php:1081
+#: ../../Zotlabs/Module/Settings.php:1083
msgid "accepting a friend request"
msgstr "Een connectieverzoek wordt geaccepteerd"
-#: ../../Zotlabs/Module/Settings.php:1082
+#: ../../Zotlabs/Module/Settings.php:1084
msgid "joining a forum/community"
msgstr "Je lid wordt van een forum/groep"
-#: ../../Zotlabs/Module/Settings.php:1083
+#: ../../Zotlabs/Module/Settings.php:1085
msgid "making an <em>interesting</em> profile change"
msgstr "Er sprake is van een <em>interessante</em> profielwijziging"
-#: ../../Zotlabs/Module/Settings.php:1084
+#: ../../Zotlabs/Module/Settings.php:1086
msgid "Send a notification email when:"
msgstr "Verzend een notificatie per e-mail wanneer:"
-#: ../../Zotlabs/Module/Settings.php:1085
+#: ../../Zotlabs/Module/Settings.php:1087
msgid "You receive a connection request"
msgstr "Je een connectieverzoek ontvangt"
-#: ../../Zotlabs/Module/Settings.php:1086
+#: ../../Zotlabs/Module/Settings.php:1088
msgid "Your connections are confirmed"
msgstr "Jouw connecties zijn bevestigd"
-#: ../../Zotlabs/Module/Settings.php:1087
+#: ../../Zotlabs/Module/Settings.php:1089
msgid "Someone writes on your profile wall"
msgstr "Iemand iets op jouw kanaal heeft geschreven"
-#: ../../Zotlabs/Module/Settings.php:1088
+#: ../../Zotlabs/Module/Settings.php:1090
msgid "Someone writes a followup comment"
msgstr "Iemand een reactie schrijft"
-#: ../../Zotlabs/Module/Settings.php:1089
+#: ../../Zotlabs/Module/Settings.php:1091
msgid "You receive a private message"
msgstr "Je een privé-bericht ontvangt"
-#: ../../Zotlabs/Module/Settings.php:1090
+#: ../../Zotlabs/Module/Settings.php:1092
msgid "You receive a friend suggestion"
msgstr "Je een kanaalvoorstel ontvangt"
-#: ../../Zotlabs/Module/Settings.php:1091
+#: ../../Zotlabs/Module/Settings.php:1093
msgid "You are tagged in a post"
msgstr "Je expliciet in een bericht bent genoemd"
-#: ../../Zotlabs/Module/Settings.php:1092
+#: ../../Zotlabs/Module/Settings.php:1094
msgid "You are poked/prodded/etc. in a post"
msgstr "Je bent in een bericht aangestoten/gepord/etc."
-#: ../../Zotlabs/Module/Settings.php:1095
+#: ../../Zotlabs/Module/Settings.php:1097
msgid "Show visual notifications including:"
msgstr "Toon de volgende zichtbare notificaties:"
-#: ../../Zotlabs/Module/Settings.php:1097
+#: ../../Zotlabs/Module/Settings.php:1099
msgid "Unseen grid activity"
msgstr "Niet bekeken grid-activiteit"
-#: ../../Zotlabs/Module/Settings.php:1098
+#: ../../Zotlabs/Module/Settings.php:1100
msgid "Unseen channel activity"
msgstr "Niet bekeken kanaal-activiteit"
-#: ../../Zotlabs/Module/Settings.php:1099
+#: ../../Zotlabs/Module/Settings.php:1101
msgid "Unseen private messages"
msgstr "Niet bekeken privéberichten"
-#: ../../Zotlabs/Module/Settings.php:1099
-#: ../../Zotlabs/Module/Settings.php:1104
-#: ../../Zotlabs/Module/Settings.php:1105
+#: ../../Zotlabs/Module/Settings.php:1101
#: ../../Zotlabs/Module/Settings.php:1106
+#: ../../Zotlabs/Module/Settings.php:1107
+#: ../../Zotlabs/Module/Settings.php:1108
msgid "Recommended"
msgstr "Aanbevolen"
-#: ../../Zotlabs/Module/Settings.php:1100
+#: ../../Zotlabs/Module/Settings.php:1102
msgid "Upcoming events"
msgstr "Aankomende gebeurtenissen"
-#: ../../Zotlabs/Module/Settings.php:1101
+#: ../../Zotlabs/Module/Settings.php:1103
msgid "Events today"
msgstr "Gebeurtenissen van vandaag"
-#: ../../Zotlabs/Module/Settings.php:1102
+#: ../../Zotlabs/Module/Settings.php:1104
msgid "Upcoming birthdays"
msgstr "Aankomende verjaardagen"
-#: ../../Zotlabs/Module/Settings.php:1102
+#: ../../Zotlabs/Module/Settings.php:1104
msgid "Not available in all themes"
msgstr "Niet in alle thema's beschikbaar"
-#: ../../Zotlabs/Module/Settings.php:1103
+#: ../../Zotlabs/Module/Settings.php:1105
msgid "System (personal) notifications"
msgstr "(Persoonlijke) systeemnotificaties"
-#: ../../Zotlabs/Module/Settings.php:1104
+#: ../../Zotlabs/Module/Settings.php:1106
msgid "System info messages"
msgstr "Systeemmededelingen"
-#: ../../Zotlabs/Module/Settings.php:1105
+#: ../../Zotlabs/Module/Settings.php:1107
msgid "System critical alerts"
msgstr "Kritische systeemwaarschuwingen"
-#: ../../Zotlabs/Module/Settings.php:1106
+#: ../../Zotlabs/Module/Settings.php:1108
msgid "New connections"
msgstr "Nieuwe connecties"
-#: ../../Zotlabs/Module/Settings.php:1107
+#: ../../Zotlabs/Module/Settings.php:1109
msgid "System Registrations"
msgstr "Nieuwe accountregistraties op deze hub"
-#: ../../Zotlabs/Module/Settings.php:1108
+#: ../../Zotlabs/Module/Settings.php:1110
msgid ""
"Also show new wall posts, private messages and connections under Notices"
msgstr "Toon tevens nieuwe kanaalberichten, privéberichten en connecties onder Notificaties"
-#: ../../Zotlabs/Module/Settings.php:1110
+#: ../../Zotlabs/Module/Settings.php:1112
msgid "Notify me of events this many days in advance"
msgstr "Herinner mij zoveel dagen van te voren aan gebeurtenissen"
-#: ../../Zotlabs/Module/Settings.php:1110
+#: ../../Zotlabs/Module/Settings.php:1112
msgid "Must be greater than 0"
msgstr "Moet hoger dan 0 zijn"
-#: ../../Zotlabs/Module/Settings.php:1112
+#: ../../Zotlabs/Module/Settings.php:1114
msgid "Advanced Account/Page Type Settings"
msgstr "Instellingen geavanceerd account/paginatype"
-#: ../../Zotlabs/Module/Settings.php:1113
+#: ../../Zotlabs/Module/Settings.php:1115
msgid "Change the behaviour of this account for special situations"
msgstr "Verander het gedrag van dit account voor speciale situaties"
-#: ../../Zotlabs/Module/Settings.php:1116
+#: ../../Zotlabs/Module/Settings.php:1118
msgid ""
"Please enable expert mode (in <a href=\"settings/features\">Settings > "
"Additional features</a>) to adjust!"
msgstr "Schakel de expertmodus in (in <a href=\"settings/features\">Instellingen > Extra functies</a>) om aan te kunnen passen!"
-#: ../../Zotlabs/Module/Settings.php:1117
+#: ../../Zotlabs/Module/Settings.php:1119
msgid "Miscellaneous Settings"
msgstr "Diverse instellingen"
-#: ../../Zotlabs/Module/Settings.php:1118
+#: ../../Zotlabs/Module/Settings.php:1120
msgid "Default photo upload folder"
msgstr "Standaard fotoalbum voor uploads"
-#: ../../Zotlabs/Module/Settings.php:1118
-#: ../../Zotlabs/Module/Settings.php:1119
+#: ../../Zotlabs/Module/Settings.php:1120
+#: ../../Zotlabs/Module/Settings.php:1121
msgid "%Y - current year, %m - current month"
msgstr "%Y - dit jaar, %m - deze maand"
-#: ../../Zotlabs/Module/Settings.php:1119
+#: ../../Zotlabs/Module/Settings.php:1121
msgid "Default file upload folder"
msgstr "Standaard bestandsmap voor uploads"
-#: ../../Zotlabs/Module/Settings.php:1121
+#: ../../Zotlabs/Module/Settings.php:1123
msgid "Personal menu to display in your channel pages"
msgstr "Persoonlijk menu om op je kanaalpagina's weer te geven"
-#: ../../Zotlabs/Module/Settings.php:1123
+#: ../../Zotlabs/Module/Settings.php:1125
msgid "Remove this channel."
msgstr "Verwijder dit kanaal."
-#: ../../Zotlabs/Module/Settings.php:1124
+#: ../../Zotlabs/Module/Settings.php:1126
msgid "Firefox Share $Projectname provider"
msgstr "$Projectname-service voor Firefox Share"
-#: ../../Zotlabs/Module/Settings.php:1125
+#: ../../Zotlabs/Module/Settings.php:1127
msgid "Start calendar week on monday"
msgstr "Begin in de agenda de week op maandag"
-#: ../../Zotlabs/Module/Setup.php:202
+#: ../../Zotlabs/Module/Setup.php:179
msgid "$Projectname Server - Setup"
msgstr "$Projectname Hub - Setup"
-#: ../../Zotlabs/Module/Setup.php:206
+#: ../../Zotlabs/Module/Setup.php:183
msgid "Could not connect to database."
msgstr "Could not connect to database."
-#: ../../Zotlabs/Module/Setup.php:210
+#: ../../Zotlabs/Module/Setup.php:187
msgid ""
"Could not connect to specified site URL. Possible SSL certificate or DNS "
"issue."
msgstr "Could not connect to specified hub URL. Possible SSL certificate or DNS issue."
-#: ../../Zotlabs/Module/Setup.php:217
+#: ../../Zotlabs/Module/Setup.php:194
msgid "Could not create table."
msgstr "Could not create table."
-#: ../../Zotlabs/Module/Setup.php:222
+#: ../../Zotlabs/Module/Setup.php:199
msgid "Your site database has been installed."
msgstr "Your hub database has been installed."
-#: ../../Zotlabs/Module/Setup.php:226
+#: ../../Zotlabs/Module/Setup.php:203
msgid ""
"You may need to import the file \"install/schema_xxx.sql\" manually using a "
"database client."
msgstr "You may need to import the file \"install/schema_xxx.sql\" manually using a database client."
-#: ../../Zotlabs/Module/Setup.php:227 ../../Zotlabs/Module/Setup.php:289
-#: ../../Zotlabs/Module/Setup.php:739
+#: ../../Zotlabs/Module/Setup.php:204 ../../Zotlabs/Module/Setup.php:266
+#: ../../Zotlabs/Module/Setup.php:721
msgid "Please see the file \"install/INSTALL.txt\"."
msgstr "Please see the file \"install/INSTALL.txt\"."
-#: ../../Zotlabs/Module/Setup.php:286
+#: ../../Zotlabs/Module/Setup.php:263
msgid "System check"
msgstr "System check"
-#: ../../Zotlabs/Module/Setup.php:291
+#: ../../Zotlabs/Module/Setup.php:268
msgid "Check again"
msgstr "Check again"
-#: ../../Zotlabs/Module/Setup.php:313
+#: ../../Zotlabs/Module/Setup.php:290
msgid "Database connection"
msgstr "Database connection"
-#: ../../Zotlabs/Module/Setup.php:314
+#: ../../Zotlabs/Module/Setup.php:291
msgid ""
"In order to install $Projectname we need to know how to connect to your "
"database."
msgstr "In order to install $Projectname we need to know how to connect to your database."
-#: ../../Zotlabs/Module/Setup.php:315
+#: ../../Zotlabs/Module/Setup.php:292
msgid ""
"Please contact your hosting provider or site administrator if you have "
"questions about these settings."
msgstr "Please contact your hosting provider or server administrator if you have questions about these settings."
-#: ../../Zotlabs/Module/Setup.php:316
+#: ../../Zotlabs/Module/Setup.php:293
msgid ""
"The database you specify below should already exist. If it does not, please "
"create it before continuing."
msgstr "The database you specify below should already exist. If it does not, please create it before continuing."
-#: ../../Zotlabs/Module/Setup.php:320
+#: ../../Zotlabs/Module/Setup.php:297
msgid "Database Server Name"
msgstr "Database Server Name"
-#: ../../Zotlabs/Module/Setup.php:320
+#: ../../Zotlabs/Module/Setup.php:297
msgid "Default is 127.0.0.1"
msgstr "Default is 127.0.0.1"
-#: ../../Zotlabs/Module/Setup.php:321
+#: ../../Zotlabs/Module/Setup.php:298
msgid "Database Port"
msgstr "Database Port"
-#: ../../Zotlabs/Module/Setup.php:321
+#: ../../Zotlabs/Module/Setup.php:298
msgid "Communication port number - use 0 for default"
msgstr "Communication port number - use 0 for default"
-#: ../../Zotlabs/Module/Setup.php:322
+#: ../../Zotlabs/Module/Setup.php:299
msgid "Database Login Name"
msgstr "Database Login Name"
-#: ../../Zotlabs/Module/Setup.php:323
+#: ../../Zotlabs/Module/Setup.php:300
msgid "Database Login Password"
msgstr "Database Login Password"
-#: ../../Zotlabs/Module/Setup.php:324
+#: ../../Zotlabs/Module/Setup.php:301
msgid "Database Name"
msgstr "Database Name"
-#: ../../Zotlabs/Module/Setup.php:325
+#: ../../Zotlabs/Module/Setup.php:302
msgid "Database Type"
msgstr "Database Type"
-#: ../../Zotlabs/Module/Setup.php:327 ../../Zotlabs/Module/Setup.php:367
+#: ../../Zotlabs/Module/Setup.php:304 ../../Zotlabs/Module/Setup.php:344
msgid "Site administrator email address"
msgstr "Hub administrator email address"
-#: ../../Zotlabs/Module/Setup.php:327 ../../Zotlabs/Module/Setup.php:367
+#: ../../Zotlabs/Module/Setup.php:304 ../../Zotlabs/Module/Setup.php:344
msgid ""
"Your account email address must match this in order to use the web admin "
"panel."
msgstr "Your account email address must match this in order to use the web admin panel."
-#: ../../Zotlabs/Module/Setup.php:328 ../../Zotlabs/Module/Setup.php:369
+#: ../../Zotlabs/Module/Setup.php:305 ../../Zotlabs/Module/Setup.php:346
msgid "Website URL"
msgstr "Hub URL"
-#: ../../Zotlabs/Module/Setup.php:328 ../../Zotlabs/Module/Setup.php:369
+#: ../../Zotlabs/Module/Setup.php:305 ../../Zotlabs/Module/Setup.php:346
msgid "Please use SSL (https) URL if available."
msgstr "Please use SSL (https) URL if available."
-#: ../../Zotlabs/Module/Setup.php:329 ../../Zotlabs/Module/Setup.php:372
+#: ../../Zotlabs/Module/Setup.php:306 ../../Zotlabs/Module/Setup.php:349
msgid "Please select a default timezone for your website"
msgstr "Please select a default timezone for your hub"
-#: ../../Zotlabs/Module/Setup.php:356
+#: ../../Zotlabs/Module/Setup.php:333
msgid "Site settings"
msgstr "Hub settings"
-#: ../../Zotlabs/Module/Setup.php:370
+#: ../../Zotlabs/Module/Setup.php:347
msgid "Enable $Projectname <strong>advanced</strong> features?"
msgstr "Enable $Projectname <strong>advanced</strong> features?"
-#: ../../Zotlabs/Module/Setup.php:370
+#: ../../Zotlabs/Module/Setup.php:347
msgid ""
"Some advanced features, while useful - may be best suited for technically "
"proficient audiences"
msgstr "Some advanced features, while useful - may be best suited for technically proficient audiences"
-#: ../../Zotlabs/Module/Setup.php:422
+#: ../../Zotlabs/Module/Setup.php:388
+msgid "PHP version 5.5 or greater is required."
+msgstr "PHP version 5.5 or greater is required."
+
+#: ../../Zotlabs/Module/Setup.php:389
+msgid "PHP version"
+msgstr "PHP version"
+
+#: ../../Zotlabs/Module/Setup.php:404
msgid "Could not find a command line version of PHP in the web server PATH."
msgstr "Could not find a command line version of PHP in the web server PATH."
-#: ../../Zotlabs/Module/Setup.php:423
+#: ../../Zotlabs/Module/Setup.php:405
msgid ""
"If you don't have a command line version of PHP installed on server, you "
"will not be able to run background polling via cron."
msgstr "If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."
-#: ../../Zotlabs/Module/Setup.php:427
+#: ../../Zotlabs/Module/Setup.php:409
msgid "PHP executable path"
msgstr "PHP executable path"
-#: ../../Zotlabs/Module/Setup.php:427
+#: ../../Zotlabs/Module/Setup.php:409
msgid ""
"Enter full path to php executable. You can leave this blank to continue the "
"installation."
msgstr "Enter full path to php executable. You can leave this blank to continue the installation."
-#: ../../Zotlabs/Module/Setup.php:432
+#: ../../Zotlabs/Module/Setup.php:414
msgid "Command line PHP"
msgstr "Command line PHP"
-#: ../../Zotlabs/Module/Setup.php:441
+#: ../../Zotlabs/Module/Setup.php:423
msgid ""
"The command line version of PHP on your system does not have "
"\"register_argc_argv\" enabled."
msgstr "The command line version of PHP on your system does not have \"register_argc_argv\" enabled."
-#: ../../Zotlabs/Module/Setup.php:442
+#: ../../Zotlabs/Module/Setup.php:424
msgid "This is required for message delivery to work."
msgstr "This is required for message delivery to work."
-#: ../../Zotlabs/Module/Setup.php:445
+#: ../../Zotlabs/Module/Setup.php:427
msgid "PHP register_argc_argv"
msgstr "PHP register_argc_argv"
-#: ../../Zotlabs/Module/Setup.php:463
+#: ../../Zotlabs/Module/Setup.php:445
#, php-format
msgid ""
"Your max allowed total upload size is set to %s. Maximum size of one file to"
" upload is set to %s. You are allowed to upload up to %d files at once."
msgstr "Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."
-#: ../../Zotlabs/Module/Setup.php:468
+#: ../../Zotlabs/Module/Setup.php:450
msgid "You can adjust these settings in the servers php.ini."
msgstr "You can adjust these settings in the servers php.ini."
-#: ../../Zotlabs/Module/Setup.php:470
+#: ../../Zotlabs/Module/Setup.php:452
msgid "PHP upload limits"
msgstr "PHP upload limits"
-#: ../../Zotlabs/Module/Setup.php:493
+#: ../../Zotlabs/Module/Setup.php:475
msgid ""
"Error: the \"openssl_pkey_new\" function on this system is not able to "
"generate encryption keys"
msgstr "Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"
-#: ../../Zotlabs/Module/Setup.php:494
+#: ../../Zotlabs/Module/Setup.php:476
msgid ""
"If running under Windows, please see "
"\"http://www.php.net/manual/en/openssl.installation.php\"."
msgstr "If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."
-#: ../../Zotlabs/Module/Setup.php:497
+#: ../../Zotlabs/Module/Setup.php:479
msgid "Generate encryption keys"
msgstr "Generate encryption keys"
-#: ../../Zotlabs/Module/Setup.php:509
+#: ../../Zotlabs/Module/Setup.php:491
msgid "libCurl PHP module"
msgstr "libCurl PHP module"
-#: ../../Zotlabs/Module/Setup.php:510
+#: ../../Zotlabs/Module/Setup.php:492
msgid "GD graphics PHP module"
msgstr "GD graphics PHP module"
-#: ../../Zotlabs/Module/Setup.php:511
+#: ../../Zotlabs/Module/Setup.php:493
msgid "OpenSSL PHP module"
msgstr "OpenSSL PHP module"
-#: ../../Zotlabs/Module/Setup.php:512
+#: ../../Zotlabs/Module/Setup.php:494
msgid "mysqli or postgres PHP module"
msgstr "mysqli or postgres PHP module"
-#: ../../Zotlabs/Module/Setup.php:513
+#: ../../Zotlabs/Module/Setup.php:495
msgid "mb_string PHP module"
msgstr "mb_string PHP module"
-#: ../../Zotlabs/Module/Setup.php:514
+#: ../../Zotlabs/Module/Setup.php:496
msgid "mcrypt PHP module"
msgstr "mcrypt PHP module"
-#: ../../Zotlabs/Module/Setup.php:515
+#: ../../Zotlabs/Module/Setup.php:497
msgid "xml PHP module"
msgstr "xml PHP module"
-#: ../../Zotlabs/Module/Setup.php:519 ../../Zotlabs/Module/Setup.php:521
+#: ../../Zotlabs/Module/Setup.php:501 ../../Zotlabs/Module/Setup.php:503
msgid "Apache mod_rewrite module"
msgstr "Apache mod_rewrite module"
-#: ../../Zotlabs/Module/Setup.php:519
+#: ../../Zotlabs/Module/Setup.php:501
msgid ""
"Error: Apache webserver mod-rewrite module is required but not installed."
msgstr "Error: Apache webserver mod-rewrite module is required but not installed."
-#: ../../Zotlabs/Module/Setup.php:525 ../../Zotlabs/Module/Setup.php:528
+#: ../../Zotlabs/Module/Setup.php:507 ../../Zotlabs/Module/Setup.php:510
msgid "proc_open"
msgstr "proc_open"
-#: ../../Zotlabs/Module/Setup.php:525
+#: ../../Zotlabs/Module/Setup.php:507
msgid ""
"Error: proc_open is required but is either not installed or has been "
"disabled in php.ini"
msgstr "Error: proc_open is required but is either not installed or has been disabled in php.ini"
-#: ../../Zotlabs/Module/Setup.php:533
+#: ../../Zotlabs/Module/Setup.php:515
msgid "Error: libCURL PHP module required but not installed."
msgstr "Error: libCURL PHP module required but not installed."
-#: ../../Zotlabs/Module/Setup.php:537
+#: ../../Zotlabs/Module/Setup.php:519
msgid ""
"Error: GD graphics PHP module with JPEG support required but not installed."
msgstr "Error: GD graphics PHP module with JPEG support required but not installed."
-#: ../../Zotlabs/Module/Setup.php:541
+#: ../../Zotlabs/Module/Setup.php:523
msgid "Error: openssl PHP module required but not installed."
msgstr "Error: openssl PHP module required but not installed."
-#: ../../Zotlabs/Module/Setup.php:545
+#: ../../Zotlabs/Module/Setup.php:527
msgid ""
"Error: mysqli or postgres PHP module required but neither are installed."
msgstr "Error: mysqli or postgres PHP module required but neither are installed."
-#: ../../Zotlabs/Module/Setup.php:549
+#: ../../Zotlabs/Module/Setup.php:531
msgid "Error: mb_string PHP module required but not installed."
msgstr "Error: mb_string PHP module required but not installed."
-#: ../../Zotlabs/Module/Setup.php:553
+#: ../../Zotlabs/Module/Setup.php:535
msgid "Error: mcrypt PHP module required but not installed."
msgstr "Error: mcrypt PHP module required but not installed."
-#: ../../Zotlabs/Module/Setup.php:557
+#: ../../Zotlabs/Module/Setup.php:539
msgid "Error: xml PHP module required for DAV but not installed."
msgstr "Error: xml PHP module required for DAV but not installed."
-#: ../../Zotlabs/Module/Setup.php:575
+#: ../../Zotlabs/Module/Setup.php:557
msgid ""
"The web installer needs to be able to create a file called \".htconfig.php\""
" in the top folder of your web server and it is unable to do so."
msgstr "The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."
-#: ../../Zotlabs/Module/Setup.php:576
+#: ../../Zotlabs/Module/Setup.php:558
msgid ""
"This is most often a permission setting, as the web server may not be able "
"to write files in your folder - even if you can."
msgstr "This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."
-#: ../../Zotlabs/Module/Setup.php:577
+#: ../../Zotlabs/Module/Setup.php:559
msgid ""
"At the end of this procedure, we will give you a text to save in a file "
"named .htconfig.php in your Red top folder."
msgstr "At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."
-#: ../../Zotlabs/Module/Setup.php:578
+#: ../../Zotlabs/Module/Setup.php:560
msgid ""
"You can alternatively skip this procedure and perform a manual installation."
" Please see the file \"install/INSTALL.txt\" for instructions."
msgstr "You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."
-#: ../../Zotlabs/Module/Setup.php:581
+#: ../../Zotlabs/Module/Setup.php:563
msgid ".htconfig.php is writable"
msgstr ".htconfig.php is writable"
-#: ../../Zotlabs/Module/Setup.php:595
+#: ../../Zotlabs/Module/Setup.php:577
msgid ""
"Red uses the Smarty3 template engine to render its web views. Smarty3 "
"compiles templates to PHP to speed up rendering."
msgstr "Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."
-#: ../../Zotlabs/Module/Setup.php:596
+#: ../../Zotlabs/Module/Setup.php:578
#, php-format
msgid ""
"In order to store these compiled templates, the web server needs to have "
-"write access to the directory %s under the Red top level folder."
-msgstr "In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."
+"write access to the directory %s under the top level web folder."
+msgstr "In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder."
-#: ../../Zotlabs/Module/Setup.php:597 ../../Zotlabs/Module/Setup.php:618
+#: ../../Zotlabs/Module/Setup.php:579 ../../Zotlabs/Module/Setup.php:600
msgid ""
"Please ensure that the user that your web server runs as (e.g. www-data) has"
" write access to this folder."
msgstr "Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."
-#: ../../Zotlabs/Module/Setup.php:598
+#: ../../Zotlabs/Module/Setup.php:580
#, php-format
msgid ""
"Note: as a security measure, you should give the web server write access to "
"%s only--not the template files (.tpl) that it contains."
msgstr "Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."
-#: ../../Zotlabs/Module/Setup.php:601
+#: ../../Zotlabs/Module/Setup.php:583
#, php-format
msgid "%s is writable"
msgstr "%s is writable"
-#: ../../Zotlabs/Module/Setup.php:617
+#: ../../Zotlabs/Module/Setup.php:599
msgid ""
"Red uses the store directory to save uploaded files. The web server needs to"
" have write access to the store directory under the Red top level folder"
msgstr "Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"
-#: ../../Zotlabs/Module/Setup.php:621
+#: ../../Zotlabs/Module/Setup.php:603
msgid "store is writable"
msgstr "store is writable"
-#: ../../Zotlabs/Module/Setup.php:654
+#: ../../Zotlabs/Module/Setup.php:636
msgid ""
"SSL certificate cannot be validated. Fix certificate or disable https access"
" to this site."
msgstr "SSL certificate cannot be validated. Fix certificate or disable https access to this hub."
-#: ../../Zotlabs/Module/Setup.php:655
+#: ../../Zotlabs/Module/Setup.php:637
msgid ""
"If you have https access to your website or allow connections to TCP port "
"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
"NOT use self-signed certificates!"
msgstr "If you have https access to your hub or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"
-#: ../../Zotlabs/Module/Setup.php:656
+#: ../../Zotlabs/Module/Setup.php:638
msgid ""
"This restriction is incorporated because public posts from you may for "
"example contain references to images on your own hub."
msgstr "This restriction is incorporated because public posts from you may for example contain references to images on your own hub."
-#: ../../Zotlabs/Module/Setup.php:657
+#: ../../Zotlabs/Module/Setup.php:639
msgid ""
"If your certificate is not recognized, members of other sites (who may "
"themselves have valid certificates) will get a warning message on their own "
"site complaining about security issues."
msgstr "If your certificate is not recognized, members of other hubs (who may themselves have valid certificates) will get a warning message on their own hub complaining about security issues."
-#: ../../Zotlabs/Module/Setup.php:658
+#: ../../Zotlabs/Module/Setup.php:640
msgid ""
"This can cause usability issues elsewhere (not just on your own site) so we "
"must insist on this requirement."
msgstr "This can cause usability issues elsewhere (not just on your own hub) so we must insist on this requirement."
-#: ../../Zotlabs/Module/Setup.php:659
+#: ../../Zotlabs/Module/Setup.php:641
msgid ""
"Providers are available that issue free certificates which are browser-"
"valid."
msgstr "Providers are available that issue free certificates which are browser-valid."
-#: ../../Zotlabs/Module/Setup.php:661
+#: ../../Zotlabs/Module/Setup.php:643
msgid "SSL certificate validation"
msgstr "SSL certificate validation"
-#: ../../Zotlabs/Module/Setup.php:667
+#: ../../Zotlabs/Module/Setup.php:649
msgid ""
"Url rewrite in .htaccess is not working. Check your server "
"configuration.Test: "
msgstr "Url rewrite in .htaccess is not working. Check your server configuration.Test: "
-#: ../../Zotlabs/Module/Setup.php:670
+#: ../../Zotlabs/Module/Setup.php:652
msgid "Url rewrite is working"
msgstr "Url rewrite is working"
-#: ../../Zotlabs/Module/Setup.php:679
+#: ../../Zotlabs/Module/Setup.php:661
msgid ""
"The database configuration file \".htconfig.php\" could not be written. "
"Please use the enclosed text to create a configuration file in your web "
"server root."
msgstr "The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."
-#: ../../Zotlabs/Module/Setup.php:703
+#: ../../Zotlabs/Module/Setup.php:685
msgid "Errors encountered creating database tables."
msgstr "Errors encountered creating database tables."
-#: ../../Zotlabs/Module/Setup.php:737
+#: ../../Zotlabs/Module/Setup.php:719
msgid "<h1>What next</h1>"
msgstr "<h1>What next</h1>"
-#: ../../Zotlabs/Module/Setup.php:738
+#: ../../Zotlabs/Module/Setup.php:720
msgid ""
"IMPORTANT: You will need to [manually] setup a scheduled task for the "
"poller."
@@ -6029,70 +5987,76 @@ msgstr "Voorstellen, lofbetuigingen, enz. - e-mail \"redmatrix\" at librelist -
msgid "Site Administrators"
msgstr "Hubbeheerders: "
-#: ../../Zotlabs/Module/Sources.php:36
+#: ../../Zotlabs/Module/Sources.php:37
msgid "Failed to create source. No channel selected."
msgstr "Aanmaken bron mislukt. Geen kanaal geselecteerd."
-#: ../../Zotlabs/Module/Sources.php:49
+#: ../../Zotlabs/Module/Sources.php:51
msgid "Source created."
msgstr "Bron aangemaakt."
-#: ../../Zotlabs/Module/Sources.php:61
+#: ../../Zotlabs/Module/Sources.php:64
msgid "Source updated."
msgstr "Bron aangemaakt."
-#: ../../Zotlabs/Module/Sources.php:86
+#: ../../Zotlabs/Module/Sources.php:90
msgid "*"
msgstr "*"
-#: ../../Zotlabs/Module/Sources.php:92 ../../include/features.php:71
-#: ../../include/widgets.php:581
+#: ../../Zotlabs/Module/Sources.php:96 ../../include/widgets.php:630
+#: ../../include/features.php:71
msgid "Channel Sources"
msgstr "Kanaalbronnen"
-#: ../../Zotlabs/Module/Sources.php:93
+#: ../../Zotlabs/Module/Sources.php:97
msgid "Manage remote sources of content for your channel."
msgstr "Beheer externe bronnen met inhoud voor jouw kanaal"
-#: ../../Zotlabs/Module/Sources.php:94 ../../Zotlabs/Module/Sources.php:104
+#: ../../Zotlabs/Module/Sources.php:98 ../../Zotlabs/Module/Sources.php:108
msgid "New Source"
msgstr "Nieuwe bron"
-#: ../../Zotlabs/Module/Sources.php:105 ../../Zotlabs/Module/Sources.php:137
+#: ../../Zotlabs/Module/Sources.php:109 ../../Zotlabs/Module/Sources.php:143
msgid ""
"Import all or selected content from the following channel into this channel "
"and distribute it according to your channel settings."
msgstr "Importeer complete of gedeelde inhoud vanuit het volgende kanaal naar dit kanaal, en verdeel het vervolgens volgens jouw kanaalinstellingen."
-#: ../../Zotlabs/Module/Sources.php:106 ../../Zotlabs/Module/Sources.php:138
+#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
msgid "Only import content with these words (one per line)"
msgstr "Importeer alleen inhoud met deze woorden (één per regel)"
-#: ../../Zotlabs/Module/Sources.php:106 ../../Zotlabs/Module/Sources.php:138
+#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144
msgid "Leave blank to import all public content"
msgstr "Laat leeg om alle openbare inhoud te importeren"
-#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Module/Sources.php:141
+#: ../../Zotlabs/Module/Sources.php:111 ../../Zotlabs/Module/Sources.php:148
msgid "Channel Name"
msgstr "Kanaalnaam"
-#: ../../Zotlabs/Module/Sources.php:127 ../../Zotlabs/Module/Sources.php:154
+#: ../../Zotlabs/Module/Sources.php:112 ../../Zotlabs/Module/Sources.php:147
+msgid ""
+"Add the following categories to posts imported from this source (comma "
+"separated)"
+msgstr "De volgende categorieën aan berichten toevoegen die uit deze bron zijn geïmporteerd (door komma's gescheiden)"
+
+#: ../../Zotlabs/Module/Sources.php:133 ../../Zotlabs/Module/Sources.php:161
msgid "Source not found."
msgstr "Bron niet gevonden"
-#: ../../Zotlabs/Module/Sources.php:134
+#: ../../Zotlabs/Module/Sources.php:140
msgid "Edit Source"
msgstr "Bron bewerken"
-#: ../../Zotlabs/Module/Sources.php:135
+#: ../../Zotlabs/Module/Sources.php:141
msgid "Delete Source"
msgstr "Bron verwijderen"
-#: ../../Zotlabs/Module/Sources.php:162
+#: ../../Zotlabs/Module/Sources.php:169
msgid "Source removed"
msgstr "Bron verwijderd"
-#: ../../Zotlabs/Module/Sources.php:164
+#: ../../Zotlabs/Module/Sources.php:171
msgid "Unable to remove source."
msgstr "Verwijderen bron mislukt."
@@ -6116,7 +6080,7 @@ msgstr "Geen voorgestelde kanalen gevonden. Wanneer dit een nieuwe hub is, probe
msgid "Ignore/Hide"
msgstr "Negeren/Verbergen"
-#: ../../Zotlabs/Module/Tagger.php:55 ../../include/bbcode.php:257
+#: ../../Zotlabs/Module/Tagger.php:55 ../../include/bbcode.php:256
msgid "post"
msgstr "bericht"
@@ -6257,16 +6221,16 @@ msgid ""
" please import or restore these in date order (oldest first)."
msgstr "Deze back-up-bestanden kunnen geïmporteerd of hersteld worden door op jouw hub en met jouw kanaal <a href=\"%1$s\">%2$s</a> te bezoeken. Voor het beste resultaat kan je de bestanden in chronologische volgorde importeren of herstellen."
-#: ../../Zotlabs/Module/Viewconnections.php:63
+#: ../../Zotlabs/Module/Viewconnections.php:62
msgid "No connections."
msgstr "Geen connecties."
-#: ../../Zotlabs/Module/Viewconnections.php:76
+#: ../../Zotlabs/Module/Viewconnections.php:75
#, php-format
msgid "Visit %s's profile [%s]"
msgstr "Bezoek het profiel van %s [%s]"
-#: ../../Zotlabs/Module/Viewconnections.php:105
+#: ../../Zotlabs/Module/Viewconnections.php:104
msgid "View Connections"
msgstr "Connecties weergeven"
@@ -6274,20 +6238,20 @@ msgstr "Connecties weergeven"
msgid "Source of Item"
msgstr "Bron van item"
-#: ../../Zotlabs/Module/Webpages.php:186 ../../include/apps.php:136
-#: ../../include/conversation.php:1704 ../../include/nav.php:106
+#: ../../Zotlabs/Module/Webpages.php:184 ../../Zotlabs/Lib/Apps.php:217
+#: ../../include/nav.php:106 ../../include/conversation.php:1685
msgid "Webpages"
msgstr "Webpagina's"
-#: ../../Zotlabs/Module/Webpages.php:197 ../../include/page_widgets.php:41
+#: ../../Zotlabs/Module/Webpages.php:195 ../../include/page_widgets.php:41
msgid "Actions"
msgstr "Acties"
-#: ../../Zotlabs/Module/Webpages.php:198 ../../include/page_widgets.php:42
+#: ../../Zotlabs/Module/Webpages.php:196 ../../include/page_widgets.php:42
msgid "Page Link"
msgstr "Paginalink"
-#: ../../Zotlabs/Module/Webpages.php:199
+#: ../../Zotlabs/Module/Webpages.php:197
msgid "Page Title"
msgstr "Paginatitel"
@@ -6299,1004 +6263,936 @@ msgstr "Xchan opzoeken"
msgid "Lookup xchan beginning with (or webbie): "
msgstr "Zoek een xchan (of webbie) die begint met:"
-#: ../../include/Import/import_diaspora.php:17
-msgid "No username found in import file."
-msgstr "Geen gebruikersnaam in het importbestand gevonden."
+#: ../../Zotlabs/Lib/Apps.php:204
+msgid "Site Admin"
+msgstr "Hubbeheerder"
-#: ../../include/Import/import_diaspora.php:42 ../../include/import.php:44
-msgid "Unable to create a unique channel address. Import failed."
-msgstr "Niet in staat om een uniek kanaaladres aan te maken. Importeren is mislukt."
+#: ../../Zotlabs/Lib/Apps.php:205
+msgid "Bug Report"
+msgstr "Bugrapport"
-#: ../../include/dba/dba_driver.php:141
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "Kan DNS-informatie voor databaseserver '%s' niet vinden"
+#: ../../Zotlabs/Lib/Apps.php:206
+msgid "View Bookmarks"
+msgstr "Bladwijzers bekijken"
-#: ../../include/identity.php:32
-msgid "Unable to obtain identity information from database"
-msgstr "Niet in staat om identiteitsinformatie uit de database te verkrijgen"
+#: ../../Zotlabs/Lib/Apps.php:207
+msgid "My Chatrooms"
+msgstr "Mijn chatkanalen"
-#: ../../include/identity.php:66
-msgid "Empty name"
-msgstr "Ontbrekende naam"
+#: ../../Zotlabs/Lib/Apps.php:209
+msgid "Firefox Share"
+msgstr "Firefox Share"
-#: ../../include/identity.php:69
-msgid "Name too long"
-msgstr "Naam te lang"
+#: ../../Zotlabs/Lib/Apps.php:210
+msgid "Remote Diagnostics"
+msgstr "Diagnose op afstand"
-#: ../../include/identity.php:180
-msgid "No account identifier"
-msgstr "Geen account-identificator"
+#: ../../Zotlabs/Lib/Apps.php:211 ../../include/features.php:89
+msgid "Suggest Channels"
+msgstr "Kanalen voorstellen"
-#: ../../include/identity.php:192
-msgid "Nickname is required."
-msgstr "Bijnaam is verplicht"
+#: ../../Zotlabs/Lib/Apps.php:212 ../../include/nav.php:110
+#: ../../boot.php:1703
+msgid "Login"
+msgstr "Inloggen"
-#: ../../include/identity.php:206
-msgid "Reserved nickname. Please choose another."
-msgstr "Deze naam is gereserveerd. Kies een andere."
+#: ../../Zotlabs/Lib/Apps.php:214 ../../include/nav.php:179
+msgid "Grid"
+msgstr "Grid"
-#: ../../include/identity.php:211
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "Deze naam heeft niet ondersteunde karakters of is al op deze hub in gebruik."
+#: ../../Zotlabs/Lib/Apps.php:218 ../../include/nav.php:182
+msgid "Channel Home"
+msgstr "Jouw kanaal"
-#: ../../include/identity.php:287
-msgid "Unable to retrieve created identity"
-msgstr "Niet in staat om aangemaakte identiteit te vinden"
+#: ../../Zotlabs/Lib/Apps.php:221 ../../include/nav.php:201
+#: ../../include/conversation.php:1649 ../../include/conversation.php:1652
+msgid "Events"
+msgstr "Agenda"
-#: ../../include/identity.php:345
-msgid "Default Profile"
-msgstr "Standaardprofiel"
+#: ../../Zotlabs/Lib/Apps.php:222 ../../include/nav.php:167
+msgid "Directory"
+msgstr "Kanalengids"
-#: ../../include/identity.php:784
-msgid "Requested channel is not available."
-msgstr "Opgevraagd kanaal is niet beschikbaar."
+#: ../../Zotlabs/Lib/Apps.php:224 ../../include/nav.php:193
+msgid "Mail"
+msgstr "Privéberichten"
-#: ../../include/identity.php:931
-msgid "Create New Profile"
-msgstr "Nieuw profiel aanmaken"
+#: ../../Zotlabs/Lib/Apps.php:227 ../../include/nav.php:96
+msgid "Chat"
+msgstr "Chatten"
-#: ../../include/identity.php:934 ../../include/nav.php:90
-msgid "Edit Profile"
-msgstr "Profiel bewerken"
+#: ../../Zotlabs/Lib/Apps.php:229
+msgid "Probe"
+msgstr "Onderzoeken"
-#: ../../include/identity.php:951
-msgid "Visible to everybody"
-msgstr "Voor iedereen zichtbaar"
+#: ../../Zotlabs/Lib/Apps.php:230
+msgid "Suggest"
+msgstr "Voorstellen"
-#: ../../include/identity.php:1026 ../../include/identity.php:1281
-msgid "Gender:"
-msgstr "Geslacht:"
+#: ../../Zotlabs/Lib/Apps.php:231
+msgid "Random Channel"
+msgstr "Willekeurig kanaal"
-#: ../../include/identity.php:1027 ../../include/identity.php:1325
-msgid "Status:"
-msgstr "Status:"
+#: ../../Zotlabs/Lib/Apps.php:232
+msgid "Invite"
+msgstr "Uitnodigen "
-#: ../../include/identity.php:1028 ../../include/identity.php:1336
-msgid "Homepage:"
-msgstr "Homepagina:"
+#: ../../Zotlabs/Lib/Apps.php:233 ../../include/widgets.php:1386
+msgid "Features"
+msgstr "Extra functies"
-#: ../../include/identity.php:1029
-msgid "Online Now"
-msgstr "Nu online"
+#: ../../Zotlabs/Lib/Apps.php:235
+msgid "Post"
+msgstr "Bericht"
-#: ../../include/identity.php:1117 ../../include/identity.php:1193
-msgid "F d"
-msgstr "d F"
+#: ../../Zotlabs/Lib/Apps.php:335
+msgid "Purchase"
+msgstr "Aanschaffen"
-#: ../../include/identity.php:1173
-msgid "Birthday Reminders"
-msgstr "Verjaardagsherinneringen"
+#: ../../Zotlabs/Lib/Chatroom.php:27
+msgid "Missing room name"
+msgstr "Naam chatkanaal ontbreekt"
-#: ../../include/identity.php:1174
-msgid "Birthdays this week:"
-msgstr "Verjaardagen deze week:"
+#: ../../Zotlabs/Lib/Chatroom.php:36
+msgid "Duplicate room name"
+msgstr "Naam chatkanaal bestaat al"
-#: ../../include/identity.php:1225
-msgid "[No description]"
-msgstr "[Geen omschrijving]"
+#: ../../Zotlabs/Lib/Chatroom.php:86 ../../Zotlabs/Lib/Chatroom.php:94
+msgid "Invalid room specifier."
+msgstr "Ongeldige omschrijving chatkanaal"
-#: ../../include/identity.php:1243
-msgid "Event Reminders"
-msgstr "Herinneringen"
+#: ../../Zotlabs/Lib/Chatroom.php:126
+msgid "Room not found."
+msgstr "Chatkanaal niet gevonden"
-#: ../../include/identity.php:1244
-msgid "Events this week:"
-msgstr "Gebeurtenissen deze week:"
+#: ../../Zotlabs/Lib/Chatroom.php:147
+msgid "Room is full"
+msgstr "Chatkanaal is vol"
-#: ../../include/identity.php:1286
-msgid "Like this channel"
-msgstr "Vind dit kanaal leuk"
+#: ../../Zotlabs/Lib/Enotify.php:60 ../../include/network.php:1823
+msgid "$Projectname Notification"
+msgstr "$Projectname-notificatie"
-#: ../../include/identity.php:1310
-msgid "j F, Y"
-msgstr "F j Y"
+#: ../../Zotlabs/Lib/Enotify.php:61 ../../include/network.php:1824
+msgid "$projectname"
+msgstr "$projectname"
-#: ../../include/identity.php:1311
-msgid "j F"
-msgstr "F j"
+#: ../../Zotlabs/Lib/Enotify.php:63 ../../include/network.php:1826
+msgid "Thank You,"
+msgstr "Bedankt,"
-#: ../../include/identity.php:1318
-msgid "Birthday:"
-msgstr "Geboortedatum:"
+#: ../../Zotlabs/Lib/Enotify.php:65 ../../include/network.php:1828
+#, php-format
+msgid "%s Administrator"
+msgstr "Beheerder %s"
-#: ../../include/identity.php:1331
+#: ../../Zotlabs/Lib/Enotify.php:100
#, php-format
-msgid "for %1$d %2$s"
-msgstr "voor %1$d %2$s"
+msgid "%s <!item_type!>"
+msgstr "%s <!item_type!>"
-#: ../../include/identity.php:1334
-msgid "Sexual Preference:"
-msgstr "Seksuele voorkeur:"
+#: ../../Zotlabs/Lib/Enotify.php:104
+#, php-format
+msgid "[Hubzilla:Notify] New mail received at %s"
+msgstr "[Hubzilla:Notificatie] Nieuw privébericht ontvangen op %s"
-#: ../../include/identity.php:1340
-msgid "Tags:"
-msgstr "Tags:"
+#: ../../Zotlabs/Lib/Enotify.php:106
+#, php-format
+msgid "%1$s, %2$s sent you a new private message at %3$s."
+msgstr "%1$s, %2$s zond jou een nieuw privébericht om %3$s."
-#: ../../include/identity.php:1342
-msgid "Political Views:"
-msgstr "Politieke overtuigingen:"
+#: ../../Zotlabs/Lib/Enotify.php:107
+#, php-format
+msgid "%1$s sent you %2$s."
+msgstr "%1$s zond jou %2$s."
-#: ../../include/identity.php:1344
-msgid "Religion:"
-msgstr "Religie:"
+#: ../../Zotlabs/Lib/Enotify.php:107
+msgid "a private message"
+msgstr "een privébericht"
-#: ../../include/identity.php:1348
-msgid "Hobbies/Interests:"
-msgstr "Hobby's/interesses:"
+#: ../../Zotlabs/Lib/Enotify.php:108
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
+msgstr "Bezoek %s om je privéberichten te bekijken en/of er op te reageren."
-#: ../../include/identity.php:1350
-msgid "Likes:"
-msgstr "Houdt van:"
+#: ../../Zotlabs/Lib/Enotify.php:164
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
+msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]een %4$s[/zrl]"
-#: ../../include/identity.php:1352
-msgid "Dislikes:"
-msgstr "Houdt niet van:"
+#: ../../Zotlabs/Lib/Enotify.php:172
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
+msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]een %5$s van %4$s[/zrl]"
-#: ../../include/identity.php:1354
-msgid "Contact information and Social Networks:"
-msgstr "Contactinformatie en sociale netwerken:"
+#: ../../Zotlabs/Lib/Enotify.php:181
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
+msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]jouw %4$s[/zrl]"
-#: ../../include/identity.php:1356
-msgid "My other channels:"
-msgstr "Mijn andere kanalen"
+#: ../../Zotlabs/Lib/Enotify.php:192
+#, php-format
+msgid "[Hubzilla:Notify] Comment to conversation #%1$d by %2$s"
+msgstr "[Hubzilla:Notificatie] Reactie op conversatie #%1$d door %2$s"
-#: ../../include/identity.php:1358
-msgid "Musical interests:"
-msgstr "Muzikale interesses:"
+#: ../../Zotlabs/Lib/Enotify.php:193
+#, php-format
+msgid "%1$s, %2$s commented on an item/conversation you have been following."
+msgstr "%1$s, %2$s gaf een reactie op een bericht/conversatie die jij volgt."
-#: ../../include/identity.php:1360
-msgid "Books, literature:"
-msgstr "Boeken, literatuur:"
+#: ../../Zotlabs/Lib/Enotify.php:196 ../../Zotlabs/Lib/Enotify.php:211
+#: ../../Zotlabs/Lib/Enotify.php:237 ../../Zotlabs/Lib/Enotify.php:255
+#: ../../Zotlabs/Lib/Enotify.php:269
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
+msgstr "Bezoek %s om de conversatie te bekijken en/of er op te reageren."
-#: ../../include/identity.php:1362
-msgid "Television:"
-msgstr "Televisie:"
+#: ../../Zotlabs/Lib/Enotify.php:202
+#, php-format
+msgid "[Hubzilla:Notify] %s posted to your profile wall"
+msgstr "[Hubzilla:Notificatie] %s heeft een bericht op jouw kanaal geplaatst"
-#: ../../include/identity.php:1364
-msgid "Film/dance/culture/entertainment:"
-msgstr "Films/dansen/cultuur/vermaak:"
+#: ../../Zotlabs/Lib/Enotify.php:204
+#, php-format
+msgid "%1$s, %2$s posted to your profile wall at %3$s"
+msgstr "%1$s, %2$s heeft om %3$s een bericht op jouw kanaal geplaatst"
-#: ../../include/identity.php:1366
-msgid "Love/Romance:"
-msgstr "Liefde/romantiek:"
+#: ../../Zotlabs/Lib/Enotify.php:206
+#, php-format
+msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
+msgstr "%1$s, %2$s heeft een bericht op [zrl=%3$s]jouw kanaal[/zrl] geplaatst"
-#: ../../include/identity.php:1368
-msgid "Work/employment:"
-msgstr "Werk/beroep:"
+#: ../../Zotlabs/Lib/Enotify.php:230
+#, php-format
+msgid "[Hubzilla:Notify] %s tagged you"
+msgstr "[Hubzilla:Notificatie] %s heeft je genoemd"
-#: ../../include/identity.php:1370
-msgid "School/education:"
-msgstr "School/opleiding:"
+#: ../../Zotlabs/Lib/Enotify.php:231
+#, php-format
+msgid "%1$s, %2$s tagged you at %3$s"
+msgstr "%1$s, %2$s noemde jou op %3$s"
-#: ../../include/identity.php:1390
-msgid "Like this thing"
-msgstr "Vind dit ding leuk"
+#: ../../Zotlabs/Lib/Enotify.php:232
+#, php-format
+msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%3$s]noemde jou[/zrl]."
+
+#: ../../Zotlabs/Lib/Enotify.php:244
+#, php-format
+msgid "[Hubzilla:Notify] %1$s poked you"
+msgstr "[Hubzilla:Notificatie] %1$s heeft je aangestoten"
+
+#: ../../Zotlabs/Lib/Enotify.php:245
+#, php-format
+msgid "%1$s, %2$s poked you at %3$s"
+msgstr "%1$s, %2$s heeft je aangestoten op %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:246
+#, php-format
+msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%2$s]heeft je aangestoten[/zrl]."
+
+#: ../../Zotlabs/Lib/Enotify.php:262
+#, php-format
+msgid "[Hubzilla:Notify] %s tagged your post"
+msgstr "[Hubzilla:Notificatie] %s heeft jouw bericht getagd"
+
+#: ../../Zotlabs/Lib/Enotify.php:263
+#, php-format
+msgid "%1$s, %2$s tagged your post at %3$s"
+msgstr "%1$s, %2$s heeft jouw bericht om %3$s getagd"
+
+#: ../../Zotlabs/Lib/Enotify.php:264
+#, php-format
+msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+msgstr "%1$s, %2$s heeft [zrl=%3$s]jouw bericht[/zrl] getagd"
+
+#: ../../Zotlabs/Lib/Enotify.php:276
+msgid "[Hubzilla:Notify] Introduction received"
+msgstr "[Hubzilla:Notificatie] Connectieverzoek ontvangen"
+
+#: ../../Zotlabs/Lib/Enotify.php:277
+#, php-format
+msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
+msgstr "%1$s, je hebt een nieuw connectieverzoek ontvangen van '%2$s' op %3$s"
-#: ../../include/notify.php:20
+#: ../../Zotlabs/Lib/Enotify.php:278
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
+msgstr "%1$s, je hebt een [zrl=%2$s]nieuw connectieverzoek[/zrl] ontvangen van %3$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:282 ../../Zotlabs/Lib/Enotify.php:301
+#, php-format
+msgid "You may visit their profile at %s"
+msgstr "Je kan het profiel bekijken op %s"
+
+#: ../../Zotlabs/Lib/Enotify.php:284
+#, php-format
+msgid "Please visit %s to approve or reject the connection request."
+msgstr "Bezoek %s om het connectieverzoek te accepteren of af te wijzen."
+
+#: ../../Zotlabs/Lib/Enotify.php:291
+msgid "[Hubzilla:Notify] Friend suggestion received"
+msgstr "[Hubzilla:Notificatie] Kanaalvoorstel ontvangen"
+
+#: ../../Zotlabs/Lib/Enotify.php:292
+#, php-format
+msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
+msgstr "%1$s, je hebt een kanaalvoorstel ontvangen van '%2$s' om %3$s"
+
+#: ../../Zotlabs/Lib/Enotify.php:293
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
+"%4$s."
+msgstr "%1$s, je hebt [zrl=%2$s]een kanaalvoorstel[/zrl] ontvangen voor %3$s van %4$s."
+
+#: ../../Zotlabs/Lib/Enotify.php:299
+msgid "Name:"
+msgstr "Naam:"
+
+#: ../../Zotlabs/Lib/Enotify.php:300
+msgid "Photo:"
+msgstr "Foto:"
+
+#: ../../Zotlabs/Lib/Enotify.php:303
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
+msgstr "Bezoek %s om het voorstel te accepteren of af te wijzen."
+
+#: ../../Zotlabs/Lib/Enotify.php:518
+msgid "[Hubzilla:Notify]"
+msgstr "[Hubzilla:Notificatie]"
+
+#: ../../Zotlabs/Lib/Enotify.php:667
msgid "created a new post"
msgstr "maakte een nieuw bericht aan"
-#: ../../include/notify.php:21
+#: ../../Zotlabs/Lib/Enotify.php:668
#, php-format
msgid "commented on %s's post"
msgstr "gaf een reactie op een bericht van %s"
-#: ../../include/ItemObject.php:89 ../../include/conversation.php:664
+#: ../../Zotlabs/Lib/ThreadItem.php:95 ../../include/conversation.php:664
msgid "Private Message"
msgstr "Niet voor iedereen zichtbaar"
-#: ../../include/ItemObject.php:126 ../../include/conversation.php:656
+#: ../../Zotlabs/Lib/ThreadItem.php:132 ../../include/conversation.php:656
msgid "Select"
msgstr "Kies"
-#: ../../include/ItemObject.php:130
+#: ../../Zotlabs/Lib/ThreadItem.php:136
msgid "Save to Folder"
msgstr "In map opslaan"
-#: ../../include/ItemObject.php:151
+#: ../../Zotlabs/Lib/ThreadItem.php:157
msgid "I will attend"
msgstr "Aanwezig"
-#: ../../include/ItemObject.php:151
+#: ../../Zotlabs/Lib/ThreadItem.php:157
msgid "I will not attend"
msgstr "Niet aanwezig"
-#: ../../include/ItemObject.php:151
+#: ../../Zotlabs/Lib/ThreadItem.php:157
msgid "I might attend"
msgstr "Mogelijk aanwezig"
-#: ../../include/ItemObject.php:161
+#: ../../Zotlabs/Lib/ThreadItem.php:167
msgid "I agree"
msgstr "Eens"
-#: ../../include/ItemObject.php:161
+#: ../../Zotlabs/Lib/ThreadItem.php:167
msgid "I disagree"
msgstr "Oneens"
-#: ../../include/ItemObject.php:161
+#: ../../Zotlabs/Lib/ThreadItem.php:167
msgid "I abstain"
msgstr "Onthouding"
-#: ../../include/ItemObject.php:212
+#: ../../Zotlabs/Lib/ThreadItem.php:218
msgid "Add Star"
msgstr "Ster toevoegen"
-#: ../../include/ItemObject.php:213
+#: ../../Zotlabs/Lib/ThreadItem.php:219
msgid "Remove Star"
msgstr "Ster verwijderen"
-#: ../../include/ItemObject.php:214
+#: ../../Zotlabs/Lib/ThreadItem.php:220
msgid "Toggle Star Status"
msgstr "Ster toevoegen of verwijderen"
-#: ../../include/ItemObject.php:218
+#: ../../Zotlabs/Lib/ThreadItem.php:224
msgid "starred"
msgstr "met ster"
-#: ../../include/ItemObject.php:227 ../../include/conversation.php:671
+#: ../../Zotlabs/Lib/ThreadItem.php:234 ../../include/conversation.php:671
msgid "Message signature validated"
msgstr "Berichtkenmerk gevalideerd"
-#: ../../include/ItemObject.php:228 ../../include/conversation.php:672
+#: ../../Zotlabs/Lib/ThreadItem.php:235 ../../include/conversation.php:672
msgid "Message signature incorrect"
msgstr "Berichtkenmerk onjuist"
-#: ../../include/ItemObject.php:236
+#: ../../Zotlabs/Lib/ThreadItem.php:243
msgid "Add Tag"
msgstr "Tag toevoegen"
-#: ../../include/ItemObject.php:254 ../../include/taxonomy.php:328
+#: ../../Zotlabs/Lib/ThreadItem.php:261 ../../include/taxonomy.php:316
msgid "like"
msgstr "vind dit leuk"
-#: ../../include/ItemObject.php:255 ../../include/taxonomy.php:329
+#: ../../Zotlabs/Lib/ThreadItem.php:262 ../../include/taxonomy.php:317
msgid "dislike"
msgstr "vind dit niet leuk"
-#: ../../include/ItemObject.php:259
+#: ../../Zotlabs/Lib/ThreadItem.php:266
msgid "Share This"
msgstr "Delen"
-#: ../../include/ItemObject.php:259
+#: ../../Zotlabs/Lib/ThreadItem.php:266
msgid "share"
msgstr "delen"
-#: ../../include/ItemObject.php:268
+#: ../../Zotlabs/Lib/ThreadItem.php:275
msgid "Delivery Report"
msgstr "Afleveringsrapport"
-#: ../../include/ItemObject.php:286
+#: ../../Zotlabs/Lib/ThreadItem.php:293
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
msgstr[0] "%d reactie"
msgstr[1] "%d reacties weergeven"
-#: ../../include/ItemObject.php:315 ../../include/ItemObject.php:316
+#: ../../Zotlabs/Lib/ThreadItem.php:322 ../../Zotlabs/Lib/ThreadItem.php:323
#, php-format
msgid "View %s's profile - %s"
msgstr "Profiel van %s bekijken - %s"
-#: ../../include/ItemObject.php:319
+#: ../../Zotlabs/Lib/ThreadItem.php:326
msgid "to"
msgstr "aan"
-#: ../../include/ItemObject.php:320
+#: ../../Zotlabs/Lib/ThreadItem.php:327
msgid "via"
msgstr "via"
-#: ../../include/ItemObject.php:321
+#: ../../Zotlabs/Lib/ThreadItem.php:328
msgid "Wall-to-Wall"
msgstr "Kanaal-naar-kanaal"
-#: ../../include/ItemObject.php:322
+#: ../../Zotlabs/Lib/ThreadItem.php:329
msgid "via Wall-To-Wall:"
msgstr "via kanaal-naar-kanaal"
-#: ../../include/ItemObject.php:334 ../../include/conversation.php:719
+#: ../../Zotlabs/Lib/ThreadItem.php:341 ../../include/conversation.php:719
#, php-format
msgid "from %s"
msgstr "van %s"
-#: ../../include/ItemObject.php:337 ../../include/conversation.php:722
+#: ../../Zotlabs/Lib/ThreadItem.php:344 ../../include/conversation.php:722
#, php-format
msgid "last edited: %s"
msgstr "laatst bewerkt: %s"
-#: ../../include/ItemObject.php:338 ../../include/conversation.php:723
+#: ../../Zotlabs/Lib/ThreadItem.php:345 ../../include/conversation.php:723
#, php-format
msgid "Expires: %s"
msgstr "Verloopt: %s"
-#: ../../include/ItemObject.php:362 ../../bookmarker/bookmarker.php:45
+#: ../../Zotlabs/Lib/ThreadItem.php:370
msgid "Save Bookmarks"
msgstr "Bladwijzers opslaan"
-#: ../../include/ItemObject.php:363
+#: ../../Zotlabs/Lib/ThreadItem.php:371
msgid "Add to Calendar"
msgstr "Aan agenda toevoegen"
-#: ../../include/ItemObject.php:372
+#: ../../Zotlabs/Lib/ThreadItem.php:380
msgid "Mark all seen"
msgstr "Markeer alles als bekeken"
-#: ../../include/ItemObject.php:413 ../../include/js_strings.php:7
+#: ../../Zotlabs/Lib/ThreadItem.php:421 ../../include/js_strings.php:7
msgid "[+] show all"
msgstr "[+] alle"
-#: ../../include/ItemObject.php:709
+#: ../../Zotlabs/Lib/ThreadItem.php:711 ../../include/conversation.php:1215
+msgid "Bold"
+msgstr "Vet"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:712 ../../include/conversation.php:1216
+msgid "Italic"
+msgstr "Cursief"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:713 ../../include/conversation.php:1217
+msgid "Underline"
+msgstr "Onderstrepen"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:714 ../../include/conversation.php:1218
+msgid "Quote"
+msgstr "Citeren"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:715 ../../include/conversation.php:1219
+msgid "Code"
+msgstr "Broncode"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:716
msgid "Image"
msgstr "Afbeelding"
-#: ../../include/ItemObject.php:710
+#: ../../Zotlabs/Lib/ThreadItem.php:717
msgid "Insert Link"
msgstr "Link invoegen"
-#: ../../include/ItemObject.php:711
+#: ../../Zotlabs/Lib/ThreadItem.php:718
msgid "Video"
msgstr "Video"
-#: ../../include/account.php:28
-msgid "Not a valid email address"
-msgstr "Geen geldig e-mailadres"
-
-#: ../../include/account.php:30
-msgid "Your email domain is not among those allowed on this site"
-msgstr "Jouw e-maildomein is op deze hub niet toegestaan"
-
-#: ../../include/account.php:36
-msgid "Your email address is already registered at this site."
-msgstr "Jouw e-mailadres is al op deze hub geregistreerd."
-
-#: ../../include/account.php:68
-msgid "An invitation is required."
-msgstr "Een uitnodiging is vereist"
-
-#: ../../include/account.php:72
-msgid "Invitation could not be verified."
-msgstr "Uitnodiging kon niet geverifieerd worden"
-
-#: ../../include/account.php:122
-msgid "Please enter the required information."
-msgstr "Vul de vereiste informatie in."
-
-#: ../../include/account.php:189
-msgid "Failed to store account information."
-msgstr "Account-informatie kon niet opgeslagen worden."
-
-#: ../../include/account.php:249
-#, php-format
-msgid "Registration confirmation for %s"
-msgstr "Registratiebevestiging voor %s"
-
-#: ../../include/account.php:315
-#, php-format
-msgid "Registration request at %s"
-msgstr "Registratiebevestiging voor %s"
-
-#: ../../include/account.php:317 ../../include/account.php:344
-#: ../../include/account.php:404 ../../include/network.php:1875
-msgid "Administrator"
-msgstr "Beheerder"
-
-#: ../../include/account.php:339
-msgid "your registration password"
-msgstr "jouw registratiewachtwoord"
-
-#: ../../include/account.php:342 ../../include/account.php:402
-#, php-format
-msgid "Registration details for %s"
-msgstr "Registratiegegevens voor %s"
+#: ../../include/Import/import_diaspora.php:16
+msgid "No username found in import file."
+msgstr "Geen gebruikersnaam in het importbestand gevonden."
-#: ../../include/account.php:414
-msgid "Account approved."
-msgstr "Account goedgekeurd"
+#: ../../include/Import/import_diaspora.php:41 ../../include/import.php:50
+msgid "Unable to create a unique channel address. Import failed."
+msgstr "Niet in staat om een uniek kanaaladres aan te maken. Importeren is mislukt."
-#: ../../include/account.php:454
+#: ../../include/dba/dba_driver.php:171
#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registratie ingetrokken voor %s"
-
-#: ../../include/account.php:506
-msgid "Account verified. Please login."
-msgstr "Account is geverifieerd. Je kan inloggen."
-
-#: ../../include/account.php:722 ../../include/account.php:724
-msgid "Click here to upgrade."
-msgstr "Klik hier om te upgraden."
-
-#: ../../include/account.php:730
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Deze handeling overschrijdt de beperkingen die voor jouw abonnement gelden."
-
-#: ../../include/account.php:735
-msgid "This action is not available under your subscription plan."
-msgstr "Deze handeling is niet mogelijk met jouw abonnement."
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Male"
-msgstr "Momenteel man"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Female"
-msgstr "Momenteel vrouw"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Male"
-msgstr "Voornamelijk man"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Female"
-msgstr "Voornamelijk vrouw"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transgender"
-msgstr "Transgender"
-
-#: ../../include/profile_selectors.php:6
-msgid "Intersex"
-msgstr "Interseksueel"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transsexual"
-msgstr "Transseksueel"
-
-#: ../../include/profile_selectors.php:6
-msgid "Hermaphrodite"
-msgstr "Hermafrodiet"
-
-#: ../../include/profile_selectors.php:6
-msgid "Neuter"
-msgstr "Genderneutraal"
-
-#: ../../include/profile_selectors.php:6
-msgid "Non-specific"
-msgstr "Niet gespecificeerd"
-
-#: ../../include/profile_selectors.php:6
-#: ../../include/profile_selectors.php:23
-#: ../../include/profile_selectors.php:61
-#: ../../include/profile_selectors.php:97 ../../include/permissions.php:881
-msgid "Other"
-msgstr "Anders"
-
-#: ../../include/profile_selectors.php:6
-msgid "Undecided"
-msgstr "Nog niet beslist"
-
-#: ../../include/profile_selectors.php:42
-#: ../../include/profile_selectors.php:61
-msgid "Males"
-msgstr "Mannen"
-
-#: ../../include/profile_selectors.php:42
-#: ../../include/profile_selectors.php:61
-msgid "Females"
-msgstr "Vrouwen"
-
-#: ../../include/profile_selectors.php:42
-msgid "Gay"
-msgstr "Homoseksueel"
-
-#: ../../include/profile_selectors.php:42
-msgid "Lesbian"
-msgstr "Lesbisch"
-
-#: ../../include/profile_selectors.php:42
-msgid "No Preference"
-msgstr "Geen voorkeur"
-
-#: ../../include/profile_selectors.php:42
-msgid "Bisexual"
-msgstr "Biseksueel"
-
-#: ../../include/profile_selectors.php:42
-msgid "Autosexual"
-msgstr "Autoseksueel"
-
-#: ../../include/profile_selectors.php:42
-msgid "Abstinent"
-msgstr "Seksuele onthouding"
-
-#: ../../include/profile_selectors.php:42
-msgid "Virgin"
-msgstr "Maagd"
-
-#: ../../include/profile_selectors.php:42
-msgid "Deviant"
-msgstr "Afwijkend"
-
-#: ../../include/profile_selectors.php:42
-msgid "Fetish"
-msgstr "Fetisj"
-
-#: ../../include/profile_selectors.php:42
-msgid "Oodles"
-msgstr "Veel"
-
-#: ../../include/profile_selectors.php:42
-msgid "Nonsexual"
-msgstr "Aseksueel"
-
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Single"
-msgstr "Alleen"
-
-#: ../../include/profile_selectors.php:80
-msgid "Lonely"
-msgstr "Eenzaam"
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr "Kan DNS-informatie voor databaseserver '%s' niet vinden"
-#: ../../include/profile_selectors.php:80
-msgid "Available"
-msgstr "Beschikbaar"
+#: ../../include/taxonomy.php:188 ../../include/taxonomy.php:270
+#: ../../include/widgets.php:46 ../../include/widgets.php:429
+#: ../../include/contact_widgets.php:91
+msgid "Categories"
+msgstr "Categorieën"
-#: ../../include/profile_selectors.php:80
-msgid "Unavailable"
-msgstr "Niet beschikbaar"
+#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249
+msgid "Tags"
+msgstr "Tags"
-#: ../../include/profile_selectors.php:80
-msgid "Has crush"
-msgstr "Heeft een oogje op iemand"
+#: ../../include/taxonomy.php:293
+msgid "Keywords"
+msgstr "Trefwoorden"
-#: ../../include/profile_selectors.php:80
-msgid "Infatuated"
-msgstr "Smoorverliefd"
+#: ../../include/taxonomy.php:314
+msgid "have"
+msgstr "heb"
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Dating"
-msgstr "Aan het daten"
+#: ../../include/taxonomy.php:314
+msgid "has"
+msgstr "heeft"
-#: ../../include/profile_selectors.php:80
-msgid "Unfaithful"
-msgstr "Ontrouw"
+#: ../../include/taxonomy.php:315
+msgid "want"
+msgstr "wil"
-#: ../../include/profile_selectors.php:80
-msgid "Sex Addict"
-msgstr "Seksverslaafd"
+#: ../../include/taxonomy.php:315
+msgid "wants"
+msgstr "wil"
-#: ../../include/profile_selectors.php:80
-msgid "Friends/Benefits"
-msgstr "Vriendschap plus"
+#: ../../include/taxonomy.php:316
+msgid "likes"
+msgstr "vindt dit leuk"
-#: ../../include/profile_selectors.php:80
-msgid "Casual"
-msgstr "Ongebonden/vluchtig"
+#: ../../include/taxonomy.php:317
+msgid "dislikes"
+msgstr "vindt dit niet leuk"
-#: ../../include/profile_selectors.php:80
-msgid "Engaged"
-msgstr "Verloofd"
+#: ../../include/event.php:22 ../../include/event.php:69
+#: ../../include/bb2diaspora.php:485
+msgid "l F d, Y \\@ g:i A"
+msgstr "l d F Y \\@ G:i"
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Married"
-msgstr "Getrouwd"
+#: ../../include/event.php:30 ../../include/event.php:73
+#: ../../include/bb2diaspora.php:491
+msgid "Starts:"
+msgstr "Start:"
-#: ../../include/profile_selectors.php:80
-msgid "Imaginarily married"
-msgstr "Denkbeeldig getrouwd"
+#: ../../include/event.php:40 ../../include/event.php:77
+#: ../../include/bb2diaspora.php:499
+msgid "Finishes:"
+msgstr "Einde:"
-#: ../../include/profile_selectors.php:80
-msgid "Partners"
-msgstr "Partners"
+#: ../../include/event.php:812
+msgid "This event has been added to your calendar."
+msgstr "Dit evenement is aan jouw agenda toegevoegd."
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Cohabiting"
-msgstr "Samenwonend"
+#: ../../include/event.php:1012
+msgid "Not specified"
+msgstr "Niet aangegeven"
-#: ../../include/profile_selectors.php:80
-msgid "Common law"
-msgstr "Common-law-huwelijk"
+#: ../../include/event.php:1013
+msgid "Needs Action"
+msgstr "Actie vereist"
-#: ../../include/profile_selectors.php:80
-msgid "Happy"
-msgstr "Gelukkig"
+#: ../../include/event.php:1014
+msgid "Completed"
+msgstr "Voltooid"
-#: ../../include/profile_selectors.php:80
-msgid "Not looking"
-msgstr "Niet op zoek"
+#: ../../include/event.php:1015
+msgid "In Process"
+msgstr "In behandeling"
-#: ../../include/profile_selectors.php:80
-msgid "Swinger"
-msgstr "Swinger"
+#: ../../include/event.php:1016
+msgid "Cancelled"
+msgstr "Geannuleerd"
-#: ../../include/profile_selectors.php:80
-msgid "Betrayed"
-msgstr "Verraden"
+#: ../../include/import.php:29
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "Kan geen dubbele kanaal-identificator op deze hub aanmaken. Importeren mislukt."
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Separated"
-msgstr "Uit elkaar"
+#: ../../include/import.php:76
+msgid "Channel clone failed. Import failed."
+msgstr "Het klonen van het kanaal is mislukt. Importeren mislukt."
-#: ../../include/profile_selectors.php:80
-msgid "Unstable"
-msgstr "Onstabiel"
+#: ../../include/items.php:892 ../../include/items.php:937
+msgid "(Unknown)"
+msgstr "(Onbekend)"
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Divorced"
-msgstr "Gescheiden"
+#: ../../include/items.php:1136
+msgid "Visible to anybody on the internet."
+msgstr "Voor iedereen op het internet zichtbaar."
-#: ../../include/profile_selectors.php:80
-msgid "Imaginarily divorced"
-msgstr "Denkbeeldig gescheiden"
+#: ../../include/items.php:1138
+msgid "Visible to you only."
+msgstr "Alleen voor jou zichtbaar."
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "Widowed"
-msgstr "Weduwnaar/weduwe"
+#: ../../include/items.php:1140
+msgid "Visible to anybody in this network."
+msgstr "Voor iedereen in dit netwerk zichtbaar."
-#: ../../include/profile_selectors.php:80
-msgid "Uncertain"
-msgstr "Onzeker"
+#: ../../include/items.php:1142
+msgid "Visible to anybody authenticated."
+msgstr "Voor iedereen die geauthenticeerd is zichtbaar."
-#: ../../include/profile_selectors.php:80
-#: ../../include/profile_selectors.php:97
-msgid "It's complicated"
-msgstr "Het is ingewikkeld"
+#: ../../include/items.php:1144
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Voor iedereen op %s zichtbaar."
-#: ../../include/profile_selectors.php:80
-msgid "Don't care"
-msgstr "Maakt mij niks uit"
+#: ../../include/items.php:1146
+msgid "Visible to all connections."
+msgstr "Voor alle connecties zichtbaar."
-#: ../../include/profile_selectors.php:80
-msgid "Ask me"
-msgstr "Vraag het me"
+#: ../../include/items.php:1148
+msgid "Visible to approved connections."
+msgstr "Voor alle geaccepteerde connecties zichtbaar."
-#: ../../include/acl_selectors.php:218
-msgid "Visible to your default audience"
-msgstr "Voor iedereen zichtbaar, mits niet anders ingesteld"
+#: ../../include/items.php:1150
+msgid "Visible to specific connections."
+msgstr "Voor specifieke connecties zichtbaar."
-#: ../../include/acl_selectors.php:243
-msgid "Show"
-msgstr "Tonen"
+#: ../../include/items.php:3909
+msgid "Privacy group is empty."
+msgstr "Privacygroep is leeg"
-#: ../../include/acl_selectors.php:244
-msgid "Don't show"
-msgstr "Niet tonen"
+#: ../../include/items.php:3916
+#, php-format
+msgid "Privacy group: %s"
+msgstr "Privacygroep: %s"
-#: ../../include/acl_selectors.php:249
-msgid "Other networks and post services"
-msgstr "Andere netwerken en diensten"
+#: ../../include/items.php:3928
+msgid "Connection not found."
+msgstr "Connectie niet gevonden."
-#: ../../include/activities.php:42
-msgid " and "
-msgstr " en "
+#: ../../include/items.php:4277
+msgid "profile photo"
+msgstr "profielfoto"
-#: ../../include/activities.php:50
-msgid "public profile"
-msgstr "openbaar profiel"
+#: ../../include/message.php:20
+msgid "No recipient provided."
+msgstr "Geen ontvanger opgegeven."
-#: ../../include/activities.php:59
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s veranderde %2$s naar &ldquo;%3$s&rdquo;"
+#: ../../include/message.php:25
+msgid "[no subject]"
+msgstr "[geen onderwerp]"
-#: ../../include/activities.php:60
-#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Bezoek het %2$s van %1$s"
+#: ../../include/message.php:45
+msgid "Unable to determine sender."
+msgstr "Afzender kan niet bepaald worden."
-#: ../../include/activities.php:63
-#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s heeft een aangepaste %2$s, %3$s veranderd."
+#: ../../include/message.php:222
+msgid "Stored post could not be verified."
+msgstr "Opgeslagen bericht kon niet worden geverifieerd."
-#: ../../include/text.php:394
+#: ../../include/text.php:428
msgid "prev"
msgstr "vorige"
-#: ../../include/text.php:396
+#: ../../include/text.php:430
msgid "first"
msgstr "eerste"
-#: ../../include/text.php:425
+#: ../../include/text.php:459
msgid "last"
msgstr "laatste"
-#: ../../include/text.php:428
+#: ../../include/text.php:462
msgid "next"
msgstr "volgende"
-#: ../../include/text.php:438
+#: ../../include/text.php:472
msgid "older"
msgstr "ouder"
-#: ../../include/text.php:440
+#: ../../include/text.php:474
msgid "newer"
msgstr "nieuwer"
-#: ../../include/text.php:822
+#: ../../include/text.php:863
msgid "No connections"
msgstr "Geen connecties"
-#: ../../include/text.php:847
+#: ../../include/text.php:888
#, php-format
msgid "View all %s connections"
msgstr "Toon alle %s connecties"
-#: ../../include/text.php:992 ../../include/text.php:997
+#: ../../include/text.php:1033 ../../include/text.php:1038
msgid "poke"
msgstr "aanstoten"
-#: ../../include/text.php:992 ../../include/text.php:997
+#: ../../include/text.php:1033 ../../include/text.php:1038
#: ../../include/conversation.php:243
msgid "poked"
msgstr "aangestoten"
-#: ../../include/text.php:998
+#: ../../include/text.php:1039
msgid "ping"
msgstr "ping"
-#: ../../include/text.php:998
+#: ../../include/text.php:1039
msgid "pinged"
msgstr "gepingd"
-#: ../../include/text.php:999
+#: ../../include/text.php:1040
msgid "prod"
msgstr "por"
-#: ../../include/text.php:999
+#: ../../include/text.php:1040
msgid "prodded"
msgstr "gepord"
-#: ../../include/text.php:1000
+#: ../../include/text.php:1041
msgid "slap"
msgstr "slaan"
-#: ../../include/text.php:1000
+#: ../../include/text.php:1041
msgid "slapped"
msgstr "sloeg"
-#: ../../include/text.php:1001
+#: ../../include/text.php:1042
msgid "finger"
msgstr "finger"
-#: ../../include/text.php:1001
+#: ../../include/text.php:1042
msgid "fingered"
msgstr "gefingerd"
-#: ../../include/text.php:1002
+#: ../../include/text.php:1043
msgid "rebuff"
msgstr "afpoeieren"
-#: ../../include/text.php:1002
+#: ../../include/text.php:1043
msgid "rebuffed"
msgstr "afgepoeierd"
-#: ../../include/text.php:1014
+#: ../../include/text.php:1055
msgid "happy"
msgstr "gelukkig"
-#: ../../include/text.php:1015
+#: ../../include/text.php:1056
msgid "sad"
msgstr "bedroefd"
-#: ../../include/text.php:1016
+#: ../../include/text.php:1057
msgid "mellow"
msgstr "mellow"
-#: ../../include/text.php:1017
+#: ../../include/text.php:1058
msgid "tired"
msgstr "moe"
-#: ../../include/text.php:1018
+#: ../../include/text.php:1059
msgid "perky"
msgstr "parmantig"
-#: ../../include/text.php:1019
+#: ../../include/text.php:1060
msgid "angry"
msgstr "boos"
-#: ../../include/text.php:1020
+#: ../../include/text.php:1061
msgid "stupefied"
msgstr "verbijsterd"
-#: ../../include/text.php:1021
+#: ../../include/text.php:1062
msgid "puzzled"
msgstr "verward"
-#: ../../include/text.php:1022
+#: ../../include/text.php:1063
msgid "interested"
msgstr "geïnteresseerd"
-#: ../../include/text.php:1023
+#: ../../include/text.php:1064
msgid "bitter"
msgstr "verbitterd"
-#: ../../include/text.php:1024
+#: ../../include/text.php:1065
msgid "cheerful"
msgstr "vrolijk"
-#: ../../include/text.php:1025
+#: ../../include/text.php:1066
msgid "alive"
msgstr "levendig"
-#: ../../include/text.php:1026
+#: ../../include/text.php:1067
msgid "annoyed"
msgstr "geërgerd"
-#: ../../include/text.php:1027
+#: ../../include/text.php:1068
msgid "anxious"
msgstr "bezorgd"
-#: ../../include/text.php:1028
+#: ../../include/text.php:1069
msgid "cranky"
msgstr "humeurig"
-#: ../../include/text.php:1029
+#: ../../include/text.php:1070
msgid "disturbed"
msgstr "verontrust"
-#: ../../include/text.php:1030
+#: ../../include/text.php:1071
msgid "frustrated"
msgstr "gefrustreerd "
-#: ../../include/text.php:1031
+#: ../../include/text.php:1072
msgid "depressed"
msgstr "gedeprimeerd"
-#: ../../include/text.php:1032
+#: ../../include/text.php:1073
msgid "motivated"
msgstr "gemotiveerd"
-#: ../../include/text.php:1033
+#: ../../include/text.php:1074
msgid "relaxed"
msgstr "ontspannen"
-#: ../../include/text.php:1034
+#: ../../include/text.php:1075
msgid "surprised"
msgstr "verrast"
-#: ../../include/text.php:1206 ../../include/js_strings.php:70
+#: ../../include/text.php:1257 ../../include/js_strings.php:70
msgid "Monday"
msgstr "maandag"
-#: ../../include/text.php:1206 ../../include/js_strings.php:71
+#: ../../include/text.php:1257 ../../include/js_strings.php:71
msgid "Tuesday"
msgstr "dinsdag"
-#: ../../include/text.php:1206 ../../include/js_strings.php:72
+#: ../../include/text.php:1257 ../../include/js_strings.php:72
msgid "Wednesday"
msgstr "woensdag"
-#: ../../include/text.php:1206 ../../include/js_strings.php:73
+#: ../../include/text.php:1257 ../../include/js_strings.php:73
msgid "Thursday"
msgstr "donderdag"
-#: ../../include/text.php:1206 ../../include/js_strings.php:74
+#: ../../include/text.php:1257 ../../include/js_strings.php:74
msgid "Friday"
msgstr "vrijdag"
-#: ../../include/text.php:1206 ../../include/js_strings.php:75
+#: ../../include/text.php:1257 ../../include/js_strings.php:75
msgid "Saturday"
msgstr "zaterdag"
-#: ../../include/text.php:1206 ../../include/js_strings.php:69
+#: ../../include/text.php:1257 ../../include/js_strings.php:69
msgid "Sunday"
msgstr "zondag"
-#: ../../include/text.php:1210 ../../include/js_strings.php:45
+#: ../../include/text.php:1261 ../../include/js_strings.php:45
msgid "January"
msgstr "januari"
-#: ../../include/text.php:1210 ../../include/js_strings.php:46
+#: ../../include/text.php:1261 ../../include/js_strings.php:46
msgid "February"
msgstr "februari"
-#: ../../include/text.php:1210 ../../include/js_strings.php:47
+#: ../../include/text.php:1261 ../../include/js_strings.php:47
msgid "March"
msgstr "maart"
-#: ../../include/text.php:1210 ../../include/js_strings.php:48
+#: ../../include/text.php:1261 ../../include/js_strings.php:48
msgid "April"
msgstr "april"
-#: ../../include/text.php:1210
+#: ../../include/text.php:1261
msgid "May"
msgstr "mei"
-#: ../../include/text.php:1210 ../../include/js_strings.php:50
+#: ../../include/text.php:1261 ../../include/js_strings.php:50
msgid "June"
msgstr "juni"
-#: ../../include/text.php:1210 ../../include/js_strings.php:51
+#: ../../include/text.php:1261 ../../include/js_strings.php:51
msgid "July"
msgstr "juli"
-#: ../../include/text.php:1210 ../../include/js_strings.php:52
+#: ../../include/text.php:1261 ../../include/js_strings.php:52
msgid "August"
msgstr "augustus"
-#: ../../include/text.php:1210 ../../include/js_strings.php:53
+#: ../../include/text.php:1261 ../../include/js_strings.php:53
msgid "September"
msgstr "september"
-#: ../../include/text.php:1210 ../../include/js_strings.php:54
+#: ../../include/text.php:1261 ../../include/js_strings.php:54
msgid "October"
msgstr "oktober"
-#: ../../include/text.php:1210 ../../include/js_strings.php:55
+#: ../../include/text.php:1261 ../../include/js_strings.php:55
msgid "November"
msgstr "november"
-#: ../../include/text.php:1210 ../../include/js_strings.php:56
+#: ../../include/text.php:1261 ../../include/js_strings.php:56
msgid "December"
msgstr "december"
-#: ../../include/text.php:1287 ../../include/text.php:1291
+#: ../../include/text.php:1338 ../../include/text.php:1342
msgid "Unknown Attachment"
msgstr "Onbekende bijlage"
-#: ../../include/text.php:1293
+#: ../../include/text.php:1344
msgid "unknown"
msgstr "onbekend"
-#: ../../include/text.php:1329
+#: ../../include/text.php:1380
msgid "remove category"
msgstr "categorie verwijderen"
-#: ../../include/text.php:1406
+#: ../../include/text.php:1457
msgid "remove from file"
msgstr "uit map verwijderen"
-#: ../../include/text.php:1437 ../../include/bb2diaspora.php:487
-#: ../../include/event.php:22
-msgid "l F d, Y \\@ g:i A"
-msgstr "l d F Y \\@ G:i"
-
-#: ../../include/text.php:1441 ../../include/bb2diaspora.php:493
-#: ../../include/event.php:30
-msgid "Starts:"
-msgstr "Start:"
-
-#: ../../include/text.php:1445 ../../include/bb2diaspora.php:501
-#: ../../include/event.php:40
-msgid "Finishes:"
-msgstr "Einde:"
-
-#: ../../include/text.php:1735 ../../include/text.php:1807
+#: ../../include/text.php:1753 ../../include/text.php:1824
msgid "default"
msgstr "standaard"
-#: ../../include/text.php:1743
+#: ../../include/text.php:1761
msgid "Page layout"
msgstr "Pagina-lay-out"
-#: ../../include/text.php:1743
+#: ../../include/text.php:1761
msgid "You can create your own with the layouts tool"
msgstr "Je kan jouw eigen lay-out ontwerpen onder lay-outs"
-#: ../../include/text.php:1785
+#: ../../include/text.php:1803
msgid "Page content type"
msgstr "Opmaaktype pagina"
-#: ../../include/text.php:1819
+#: ../../include/text.php:1836
msgid "Select an alternate language"
msgstr "Kies een andere taal"
@@ -7304,122 +7200,611 @@ msgstr "Kies een andere taal"
msgid "activity"
msgstr "activiteit"
-#: ../../include/text.php:2248
+#: ../../include/text.php:2262
msgid "Design Tools"
msgstr "Ontwerp-hulpmiddelen"
-
-#: ../../include/text.php:2254
+#: ../../include/text.php:2268
msgid "Pages"
msgstr "Pagina's"
-#: ../../include/zot.php:680
-msgid "Invalid data packet"
-msgstr "Datapakket ongeldig"
+#: ../../include/widgets.php:103
+msgid "System"
+msgstr "Systeem"
-#: ../../include/zot.php:696
-msgid "Unable to verify channel signature"
-msgstr "Kanaalkenmerk kon niet worden geverifieerd. "
+#: ../../include/widgets.php:106
+msgid "New App"
+msgstr "Nieuwe app"
+
+#: ../../include/widgets.php:154
+msgid "Suggestions"
+msgstr "Voorgestelde kanalen"
+
+#: ../../include/widgets.php:155
+msgid "See more..."
+msgstr "Meer..."
-#: ../../include/zot.php:2332
+#: ../../include/widgets.php:175
#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Hubkenmerk voor %s kon niet worden geverifieerd"
+msgid "You have %1$.0f of %2$.0f allowed connections."
+msgstr "Je hebt %1$.0f van de %2$.0f toegestane connecties."
-#: ../../include/zot.php:3670
-msgid "invalid target signature"
-msgstr "ongeldig doelkenmerk"
+#: ../../include/widgets.php:181
+msgid "Add New Connection"
+msgstr "Nieuwe connectie toevoegen"
-#: ../../include/apps.php:128
-msgid "Site Admin"
-msgstr "Hubbeheerder"
+#: ../../include/widgets.php:182
+msgid "Enter channel address"
+msgstr "Vul kanaaladres in"
-#: ../../include/apps.php:129 ../../include/conversation.php:1694
-#: ../../include/nav.php:102
+#: ../../include/widgets.php:183
+msgid "Examples: bob@example.com, https://example.com/barbara"
+msgstr "Voorbeelden: bob@example.com, http://example.com/barbara"
+
+#: ../../include/widgets.php:199
+msgid "Notes"
+msgstr "Aantekeningen"
+
+#: ../../include/widgets.php:273
+msgid "Remove term"
+msgstr "Verwijder zoekterm"
+
+#: ../../include/widgets.php:281 ../../include/features.php:84
+msgid "Saved Searches"
+msgstr "Opgeslagen zoekopdrachten"
+
+#: ../../include/widgets.php:282 ../../include/group.php:316
+msgid "add"
+msgstr "toevoegen"
+
+#: ../../include/widgets.php:310 ../../include/contact_widgets.php:53
+#: ../../include/features.php:98
+msgid "Saved Folders"
+msgstr "Bewaarde mappen"
+
+#: ../../include/widgets.php:313 ../../include/widgets.php:432
+#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94
+msgid "Everything"
+msgstr "Alles"
+
+#: ../../include/widgets.php:354
+msgid "Archives"
+msgstr "Archieven"
+
+#: ../../include/widgets.php:516
+msgid "Refresh"
+msgstr "Vernieuwen"
+
+#: ../../include/widgets.php:556
+msgid "Account settings"
+msgstr "Account"
+
+#: ../../include/widgets.php:562
+msgid "Channel settings"
+msgstr "Kanaal"
+
+#: ../../include/widgets.php:571
+msgid "Additional features"
+msgstr "Extra functies"
+
+#: ../../include/widgets.php:578
+msgid "Feature/Addon settings"
+msgstr "Plugin-instellingen"
+
+#: ../../include/widgets.php:584
+msgid "Display settings"
+msgstr "Weergave"
+
+#: ../../include/widgets.php:591
+msgid "Manage locations"
+msgstr "Locaties beheren"
+
+#: ../../include/widgets.php:600
+msgid "Export channel"
+msgstr "Kanaal exporteren"
+
+#: ../../include/widgets.php:607
+msgid "Connected apps"
+msgstr "Verbonden applicaties"
+
+#: ../../include/widgets.php:622
+msgid "Premium Channel Settings"
+msgstr "Instellingen premiumkanaal"
+
+#: ../../include/widgets.php:651
+msgid "Private Mail Menu"
+msgstr "Privéberichten"
+
+#: ../../include/widgets.php:653
+msgid "Combined View"
+msgstr "Gecombineerd postvak"
+
+#: ../../include/widgets.php:658 ../../include/nav.php:196
+msgid "Inbox"
+msgstr "Postvak IN"
+
+#: ../../include/widgets.php:663 ../../include/nav.php:197
+msgid "Outbox"
+msgstr "Postvak UIT"
+
+#: ../../include/widgets.php:668 ../../include/nav.php:198
+msgid "New Message"
+msgstr "Nieuw bericht"
+
+#: ../../include/widgets.php:685 ../../include/widgets.php:697
+msgid "Conversations"
+msgstr "Conversaties"
+
+#: ../../include/widgets.php:689
+msgid "Received Messages"
+msgstr "Ontvangen berichten"
+
+#: ../../include/widgets.php:693
+msgid "Sent Messages"
+msgstr "Verzonden berichten"
+
+#: ../../include/widgets.php:707
+msgid "No messages."
+msgstr "Geen berichten"
+
+#: ../../include/widgets.php:725
+msgid "Delete conversation"
+msgstr "Verwijder conversatie"
+
+#: ../../include/widgets.php:751
+msgid "Events Menu"
+msgstr "Agenda-menu"
+
+#: ../../include/widgets.php:752
+msgid "Day View"
+msgstr "Dag tonen"
+
+#: ../../include/widgets.php:753
+msgid "Week View"
+msgstr "Week tonen"
+
+#: ../../include/widgets.php:754
+msgid "Month View"
+msgstr "Maand tonen"
+
+#: ../../include/widgets.php:766
+msgid "Events Tools"
+msgstr "Agenda-hulpmiddelen"
+
+#: ../../include/widgets.php:767
+msgid "Export Calendar"
+msgstr "Exporteren"
+
+#: ../../include/widgets.php:768
+msgid "Import Calendar"
+msgstr "Importeren"
+
+#: ../../include/widgets.php:842 ../../include/conversation.php:1662
+#: ../../include/conversation.php:1665
+msgid "Chatrooms"
+msgstr "Chatkanalen"
+
+#: ../../include/widgets.php:846
+msgid "Overview"
+msgstr "Overzicht"
+
+#: ../../include/widgets.php:853
+msgid "Chat Members"
+msgstr "Chatleden"
+
+#: ../../include/widgets.php:876
+msgid "Bookmarked Chatrooms"
+msgstr "Bladwijzers van chatkanalen"
+
+#: ../../include/widgets.php:899
+msgid "Suggested Chatrooms"
+msgstr "Voorgestelde chatkanalen"
+
+#: ../../include/widgets.php:1044 ../../include/widgets.php:1156
+msgid "photo/image"
+msgstr "foto/afbeelding"
+
+#: ../../include/widgets.php:1099
+msgid "Click to show more"
+msgstr "Klik voor meer"
+
+#: ../../include/widgets.php:1250
+msgid "Rating Tools"
+msgstr "Beoordelingen"
+
+#: ../../include/widgets.php:1254 ../../include/widgets.php:1256
+msgid "Rate Me"
+msgstr "Beoordeel mij"
+
+#: ../../include/widgets.php:1259
+msgid "View Ratings"
+msgstr "Bekijk beoordelingen"
+
+#: ../../include/widgets.php:1316
+msgid "Forums"
+msgstr "Forums"
+
+#: ../../include/widgets.php:1345
+msgid "Tasks"
+msgstr "Taken"
+
+#: ../../include/widgets.php:1354
+msgid "Documentation"
+msgstr "Documentatie"
+
+#: ../../include/widgets.php:1356
+msgid "Project/Site Information"
+msgstr "Project- en hub-informatie"
+
+#: ../../include/widgets.php:1357
+msgid "For Members"
+msgstr "Voor leden"
+
+#: ../../include/widgets.php:1358
+msgid "For Administrators"
+msgstr "Voor beheerders"
+
+#: ../../include/widgets.php:1359
+msgid "For Developers"
+msgstr "Voor ontwikkelaars"
+
+#: ../../include/widgets.php:1383 ../../include/widgets.php:1421
+msgid "Member registrations waiting for confirmation"
+msgstr "Accounts die op goedkeuring wachten"
+
+#: ../../include/widgets.php:1389
+msgid "Inspect queue"
+msgstr "Inspecteer berichtenwachtrij"
+
+#: ../../include/widgets.php:1391
+msgid "DB updates"
+msgstr "Database-updates"
+
+#: ../../include/widgets.php:1416 ../../include/nav.php:216
+msgid "Admin"
+msgstr "Beheer"
+
+#: ../../include/widgets.php:1417
+msgid "Plugin Features"
+msgstr "Plugin-opties"
+
+#: ../../include/follow.php:27
+msgid "Channel is blocked on this site."
+msgstr "Kanaal is op deze hub geblokkeerd."
+
+#: ../../include/follow.php:32
+msgid "Channel location missing."
+msgstr "Ontbrekende kanaallocatie."
+
+#: ../../include/follow.php:81
+msgid "Response from remote channel was incomplete."
+msgstr "Antwoord van het kanaal op afstand was niet volledig."
+
+#: ../../include/follow.php:98
+msgid "Channel was deleted and no longer exists."
+msgstr "Kanaal is verwijderd en bestaat niet meer."
+
+#: ../../include/follow.php:154 ../../include/follow.php:190
+msgid "Protocol disabled."
+msgstr "Protocol uitgeschakeld."
+
+#: ../../include/follow.php:178
+msgid "Channel discovery failed."
+msgstr "Kanaal ontdekken mislukt."
+
+#: ../../include/follow.php:216
+msgid "Cannot connect to yourself."
+msgstr "Kan niet met jezelf verbinden"
+
+#: ../../include/bookmarks.php:35
+#, php-format
+msgid "%1$s's bookmarks"
+msgstr "Bladwijzers van %1$s"
+
+#: ../../include/api.php:1336
+msgid "Public Timeline"
+msgstr "Openbare tijdlijn"
+
+#: ../../include/bbcode.php:123 ../../include/bbcode.php:844
+#: ../../include/bbcode.php:847 ../../include/bbcode.php:852
+#: ../../include/bbcode.php:855 ../../include/bbcode.php:858
+#: ../../include/bbcode.php:861 ../../include/bbcode.php:866
+#: ../../include/bbcode.php:869 ../../include/bbcode.php:874
+#: ../../include/bbcode.php:877 ../../include/bbcode.php:880
+#: ../../include/bbcode.php:883
+msgid "Image/photo"
+msgstr "Afbeelding/foto"
+
+#: ../../include/bbcode.php:162 ../../include/bbcode.php:894
+msgid "Encrypted content"
+msgstr "Versleutelde inhoud"
+
+#: ../../include/bbcode.php:178
+#, php-format
+msgid "Install %s element: "
+msgstr "Installeer %s-element: "
+
+#: ../../include/bbcode.php:182
+#, php-format
+msgid ""
+"This post contains an installable %s element, however you lack permissions "
+"to install it on this site."
+msgstr "Dit bericht heeft een te installeren %s-element, maar je hebt geen permissies om het op deze hub te installeren."
+
+#: ../../include/bbcode.php:254
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s schreef het volgende %2$s %3$s"
+
+#: ../../include/bbcode.php:331 ../../include/bbcode.php:339
+msgid "Click to open/close"
+msgstr "Klik om te openen of te sluiten"
+
+#: ../../include/bbcode.php:339
+msgid "spoiler"
+msgstr "spoiler"
+
+#: ../../include/bbcode.php:585
+msgid "Different viewers will see this text differently"
+msgstr "Deze tekst wordt per persoon anders weergeven."
+
+#: ../../include/bbcode.php:832
+msgid "$1 wrote:"
+msgstr "$1 schreef:"
+
+#: ../../include/dir_fns.php:141
+msgid "Directory Options"
+msgstr "Opties kanalengids"
+
+#: ../../include/dir_fns.php:143
+msgid "Safe Mode"
+msgstr "Veilig zoeken"
+
+#: ../../include/dir_fns.php:144
+msgid "Public Forums Only"
+msgstr "Alleen openbare forums"
+
+#: ../../include/dir_fns.php:145
+msgid "This Website Only"
+msgstr "Alleen deze hub"
+
+#: ../../include/security.php:383
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "De beveiligings-token van het tekstvak was ongeldig. Dit is mogelijk het gevolg van dat er te lang (meer dan 3 uur) gewacht is om de tekst op te slaan. "
+
+#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1702
+msgid "Logout"
+msgstr "Uitloggen"
+
+#: ../../include/nav.php:82 ../../include/nav.php:113
+msgid "End this session"
+msgstr "Beëindig deze sessie"
+
+#: ../../include/nav.php:85 ../../include/nav.php:144
+msgid "Home"
+msgstr "Home"
+
+#: ../../include/nav.php:85
+msgid "Your posts and conversations"
+msgstr "Jouw kanaal"
+
+#: ../../include/nav.php:86
+msgid "Your profile page"
+msgstr "Jouw profielpagina"
+
+#: ../../include/nav.php:88
+msgid "Manage/Edit profiles"
+msgstr "Beheer/wijzig profielen"
+
+#: ../../include/nav.php:90 ../../include/channel.php:941
+msgid "Edit Profile"
+msgstr "Profiel bewerken"
+
+#: ../../include/nav.php:90
+msgid "Edit your profile"
+msgstr "Jouw profiel bewerken"
+
+#: ../../include/nav.php:92
+msgid "Your photos"
+msgstr "Jouw foto's"
+
+#: ../../include/nav.php:93
+msgid "Your files"
+msgstr "Jouw bestanden"
+
+#: ../../include/nav.php:96
+msgid "Your chatrooms"
+msgstr "Jouw chatkanalen"
+
+#: ../../include/nav.php:102 ../../include/conversation.php:1675
msgid "Bookmarks"
msgstr "Bladwijzers"
-#: ../../include/apps.php:130
-msgid "Address Book"
-msgstr "Connecties"
+#: ../../include/nav.php:102
+msgid "Your bookmarks"
+msgstr "Jouw bladwijzers"
-#: ../../include/apps.php:131 ../../include/nav.php:110 ../../boot.php:1615
-msgid "Login"
+#: ../../include/nav.php:106
+msgid "Your webpages"
+msgstr "Jouw webpagina's"
+
+#: ../../include/nav.php:110
+msgid "Sign in"
msgstr "Inloggen"
-#: ../../include/apps.php:133 ../../include/nav.php:179
-msgid "Grid"
-msgstr "Grid"
+#: ../../include/nav.php:127
+#, php-format
+msgid "%s - click to logout"
+msgstr "%s - klik om uit te loggen"
-#: ../../include/apps.php:137 ../../include/nav.php:182
-msgid "Channel Home"
-msgstr "Jouw kanaal"
+#: ../../include/nav.php:130
+msgid "Remote authentication"
+msgstr "Authenticatie op afstand"
-#: ../../include/apps.php:140 ../../include/conversation.php:1667
-#: ../../include/conversation.php:1670 ../../include/nav.php:201
-msgid "Events"
-msgstr "Agenda"
+#: ../../include/nav.php:130
+msgid "Click to authenticate to your home hub"
+msgstr "Authenticeer jezelf via (bijvoorbeeld) jouw hub"
-#: ../../include/apps.php:141 ../../include/nav.php:167
-msgid "Directory"
+#: ../../include/nav.php:144
+msgid "Home Page"
+msgstr "Homepage"
+
+#: ../../include/nav.php:147
+msgid "Create an account"
+msgstr "Maak een account aan"
+
+#: ../../include/nav.php:159
+msgid "Help and documentation"
+msgstr "Hulp en documentatie"
+
+#: ../../include/nav.php:163
+msgid "Applications, utilities, links, games"
+msgstr "Apps"
+
+#: ../../include/nav.php:165
+msgid "Search site @name, #tag, ?docs, content"
+msgstr "Zoek een @kanaal, doorzoek inhoud hub met tekst en #tags, of doorzoek ?documentatie "
+
+#: ../../include/nav.php:167
+msgid "Channel Directory"
msgstr "Kanalengids"
-#: ../../include/apps.php:143 ../../include/nav.php:193
-msgid "Mail"
+#: ../../include/nav.php:179
+msgid "Your grid"
+msgstr "Jouw grid"
+
+#: ../../include/nav.php:180
+msgid "Mark all grid notifications seen"
+msgstr "Markeer alle gridnotificaties als bekeken"
+
+#: ../../include/nav.php:182
+msgid "Channel home"
+msgstr "Jouw kanaal"
+
+#: ../../include/nav.php:183
+msgid "Mark all channel notifications seen"
+msgstr "Alle kanaalnotificaties als gelezen markeren"
+
+#: ../../include/nav.php:189
+msgid "Notices"
+msgstr "Notificaties"
+
+#: ../../include/nav.php:189
+msgid "Notifications"
+msgstr "Notificaties"
+
+#: ../../include/nav.php:190
+msgid "See all notifications"
+msgstr "Alle notificaties weergeven"
+
+#: ../../include/nav.php:193
+msgid "Private mail"
msgstr "Privéberichten"
-#: ../../include/apps.php:146 ../../include/nav.php:96
-msgid "Chat"
-msgstr "Chatten"
+#: ../../include/nav.php:194
+msgid "See all private messages"
+msgstr "Alle privéberichten weergeven"
-#: ../../include/apps.php:148
-msgid "Probe"
-msgstr "Onderzoeken"
+#: ../../include/nav.php:195
+msgid "Mark all private messages seen"
+msgstr "Markeer alle privéberichten als bekeken"
-#: ../../include/apps.php:149
-msgid "Suggest"
-msgstr "Voorstellen"
+#: ../../include/nav.php:201
+msgid "Event Calendar"
+msgstr "Agenda"
-#: ../../include/apps.php:150
-msgid "Random Channel"
-msgstr "Willekeurig kanaal"
+#: ../../include/nav.php:202
+msgid "See all events"
+msgstr "Alle gebeurtenissen weergeven"
-#: ../../include/apps.php:151
-msgid "Invite"
-msgstr "Uitnodigen "
+#: ../../include/nav.php:203
+msgid "Mark all events seen"
+msgstr "Markeer alle gebeurtenissen als bekeken"
-#: ../../include/apps.php:152 ../../include/widgets.php:1338
-msgid "Features"
-msgstr "Extra functies"
+#: ../../include/nav.php:206
+msgid "Manage Your Channels"
+msgstr "Beheer je kanalen"
-#: ../../include/apps.php:154
-msgid "Post"
-msgstr "Bericht"
+#: ../../include/nav.php:208
+msgid "Account/Channel Settings"
+msgstr "Account-/kanaal-instellingen"
-#: ../../include/apps.php:252
-msgid "Install"
-msgstr "Installeren"
+#: ../../include/nav.php:216
+msgid "Site Setup and Configuration"
+msgstr "Hub instellen en beheren"
-#: ../../include/apps.php:257
-msgid "Purchase"
-msgstr "Aanschaffen"
+#: ../../include/nav.php:247 ../../include/conversation.php:851
+msgid "Loading..."
+msgstr "Aan het laden..."
-#: ../../include/import.php:23
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "Kan geen dubbele kanaal-identificator op deze hub aanmaken. Importeren mislukt."
+#: ../../include/nav.php:252
+msgid "@name, #tag, ?doc, content"
+msgstr "@kanaal, #tag, inhoud, ?hulp"
-#: ../../include/import.php:70
-msgid "Channel clone failed. Import failed."
-msgstr "Het klonen van het kanaal is mislukt. Importeren mislukt."
+#: ../../include/nav.php:253
+msgid "Please wait..."
+msgstr "Wachten aub..."
-#: ../../include/bb2diaspora.php:398
-msgid "Attachments:"
-msgstr "Bijlagen:"
+#: ../../include/connections.php:95
+msgid "New window"
+msgstr "Nieuw venster"
-#: ../../include/bb2diaspora.php:489
-msgid "$Projectname event notification:"
-msgstr "Notificatie $Projectname-gebeurtenis:"
+#: ../../include/connections.php:96
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Open de geselecteerde locatie in een ander venster of tab"
+
+#: ../../include/connections.php:214
+#, php-format
+msgid "User '%s' deleted"
+msgstr "Account '%s' verwijderd"
+
+#: ../../include/contact_widgets.php:11
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "%d uitnodiging beschikbaar"
+msgstr[1] "%d uitnodigingen beschikbaar"
+
+#: ../../include/contact_widgets.php:19
+msgid "Find Channels"
+msgstr "Kanalen vinden"
+
+#: ../../include/contact_widgets.php:20
+msgid "Enter name or interest"
+msgstr "Vul naam of interesse in"
+
+#: ../../include/contact_widgets.php:21
+msgid "Connect/Follow"
+msgstr "Verbinden/volgen"
+
+#: ../../include/contact_widgets.php:22
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "Voorbeeld: Robert Morgenstein, vissen"
+
+#: ../../include/contact_widgets.php:26
+msgid "Random Profile"
+msgstr "Willekeurig profiel"
+
+#: ../../include/contact_widgets.php:27
+msgid "Invite Friends"
+msgstr "Vrienden uitnodigen"
+
+#: ../../include/contact_widgets.php:29
+msgid "Advanced example: name=fred and country=iceland"
+msgstr "Geavanceerd voorbeeld (Engels): name=jan en country=nederland"
+
+#: ../../include/contact_widgets.php:122
+#, php-format
+msgid "%d connection in common"
+msgid_plural "%d connections in common"
+msgstr[0] "%d gemeenschappelijke connectie"
+msgstr[1] "%d gemeenschappelijke connecties"
+
+#: ../../include/contact_widgets.php:127
+msgid "show more"
+msgstr "meer connecties weergeven"
#: ../../include/conversation.php:204
#, php-format
@@ -7448,463 +7833,626 @@ msgstr "Bewaard onder:"
msgid "View in context"
msgstr "In context bekijken"
-#: ../../include/conversation.php:850
+#: ../../include/conversation.php:847
msgid "remove"
msgstr "verwijderen"
-#: ../../include/conversation.php:854 ../../include/nav.php:247
-msgid "Loading..."
-msgstr "Aan het laden..."
-
-#: ../../include/conversation.php:855
+#: ../../include/conversation.php:852
msgid "Delete Selected Items"
msgstr "Verwijder de geselecteerde items"
-#: ../../include/conversation.php:953
+#: ../../include/conversation.php:948
msgid "View Source"
msgstr "Bron weergeven"
-#: ../../include/conversation.php:954
+#: ../../include/conversation.php:949
msgid "Follow Thread"
msgstr "Conversatie volgen"
-#: ../../include/conversation.php:955
+#: ../../include/conversation.php:950
msgid "Unfollow Thread"
msgstr "Conversatie niet meer volgen"
-#: ../../include/conversation.php:960
+#: ../../include/conversation.php:955
msgid "Activity/Posts"
msgstr "Activiteit/berichten connectie"
-#: ../../include/conversation.php:962
+#: ../../include/conversation.php:957
msgid "Edit Connection"
msgstr "Connectie bewerken"
-#: ../../include/conversation.php:963
+#: ../../include/conversation.php:958
msgid "Message"
msgstr "Bericht"
-#: ../../include/conversation.php:1080
+#: ../../include/conversation.php:1075
#, php-format
msgid "%s likes this."
msgstr "%s vindt dit leuk."
-#: ../../include/conversation.php:1080
+#: ../../include/conversation.php:1075
#, php-format
msgid "%s doesn't like this."
msgstr "%s vindt dit niet leuk."
-#: ../../include/conversation.php:1084
+#: ../../include/conversation.php:1079
#, php-format
msgid "<span %1$s>%2$d people</span> like this."
msgid_plural "<span %1$s>%2$d people</span> like this."
msgstr[0] "<span %1$s>%2$d persoon</span> vindt dit leuk."
msgstr[1] "<span %1$s>%2$d personen</span> vinden dit leuk."
-#: ../../include/conversation.php:1086
+#: ../../include/conversation.php:1081
#, php-format
msgid "<span %1$s>%2$d people</span> don't like this."
msgid_plural "<span %1$s>%2$d people</span> don't like this."
msgstr[0] "<span %1$s>%2$d persoon</span> vindt dit niet leuk."
msgstr[1] "<span %1$s>%2$d personen</span> vinden dit niet leuk."
-#: ../../include/conversation.php:1092
+#: ../../include/conversation.php:1087
msgid "and"
msgstr "en"
-#: ../../include/conversation.php:1095
+#: ../../include/conversation.php:1090
#, php-format
msgid ", and %d other people"
msgid_plural ", and %d other people"
msgstr[0] ", en %d ander persoon"
msgstr[1] ", en %d andere personen"
-#: ../../include/conversation.php:1096
+#: ../../include/conversation.php:1091
#, php-format
msgid "%s like this."
msgstr "%s vinden dit leuk."
-#: ../../include/conversation.php:1096
+#: ../../include/conversation.php:1091
#, php-format
msgid "%s don't like this."
msgstr "%s vinden dit niet leuk."
-#: ../../include/conversation.php:1169
-msgid "Visible to <strong>everybody</strong>"
-msgstr "Voor <strong>iedereen</strong> zichtbaar"
-
-#: ../../include/conversation.php:1171
-msgid "Please enter a video link/URL:"
-msgstr "Vul een videolink/URL in:"
+#: ../../include/conversation.php:1130
+msgid "Set your location"
+msgstr "Locatie instellen"
-#: ../../include/conversation.php:1172
-msgid "Please enter an audio link/URL:"
-msgstr "Vul een audiolink/URL in:"
+#: ../../include/conversation.php:1131
+msgid "Clear browser location"
+msgstr "Locatie van webbrowser wissen"
-#: ../../include/conversation.php:1173
+#: ../../include/conversation.php:1177
msgid "Tag term:"
msgstr "Tag:"
-#: ../../include/conversation.php:1175
+#: ../../include/conversation.php:1178
msgid "Where are you right now?"
msgstr "Waar bevind je je op dit moment?"
-#: ../../include/conversation.php:1211
+#: ../../include/conversation.php:1210
msgid "Page link name"
msgstr "Linknaam pagina"
-#: ../../include/conversation.php:1214
+#: ../../include/conversation.php:1213
msgid "Post as"
msgstr "Bericht plaatsen als"
-#: ../../include/conversation.php:1222
-msgid "upload photo"
-msgstr "foto uploaden"
-
-#: ../../include/conversation.php:1224
-msgid "attach file"
-msgstr "bestand toevoegen"
-
-#: ../../include/conversation.php:1226
-msgid "web link"
-msgstr "Weblink"
-
-#: ../../include/conversation.php:1227
-msgid "Insert video link"
-msgstr "Videolink invoegen"
-
-#: ../../include/conversation.php:1228
-msgid "video link"
-msgstr "videolink"
-
-#: ../../include/conversation.php:1229
-msgid "Insert audio link"
-msgstr "Audiolink invoegen"
-
-#: ../../include/conversation.php:1230
-msgid "audio link"
-msgstr "audiolink"
-
-#: ../../include/conversation.php:1232
-msgid "set location"
-msgstr "locatie instellen"
-
-#: ../../include/conversation.php:1237
-msgid "clear location"
-msgstr "locatie wissen"
+#: ../../include/conversation.php:1223
+msgid "Toggle voting"
+msgstr "Peiling in- of uitschakelen"
-#: ../../include/conversation.php:1246
-msgid "permissions"
-msgstr "permissies"
+#: ../../include/conversation.php:1231
+msgid "Categories (optional, comma-separated list)"
+msgstr "Categorieën (optioneel, door komma's gescheiden lijst)"
-#: ../../include/conversation.php:1272
+#: ../../include/conversation.php:1254
msgid "Set publish date"
msgstr "Publicatiedatum instellen"
-#: ../../include/conversation.php:1521
+#: ../../include/conversation.php:1258
+msgid "OK"
+msgstr "OK"
+
+#: ../../include/conversation.php:1503
msgid "Discover"
msgstr "Ontdekken"
-#: ../../include/conversation.php:1524
+#: ../../include/conversation.php:1506
msgid "Imported public streams"
msgstr "Openbare streams importeren"
-#: ../../include/conversation.php:1529
+#: ../../include/conversation.php:1511
msgid "Commented Order"
msgstr "Nieuwe reacties bovenaan"
-#: ../../include/conversation.php:1532
+#: ../../include/conversation.php:1514
msgid "Sort by Comment Date"
msgstr "Berichten met nieuwe reacties bovenaan"
-#: ../../include/conversation.php:1536
+#: ../../include/conversation.php:1518
msgid "Posted Order"
msgstr "Nieuwe berichten bovenaan"
-#: ../../include/conversation.php:1539
+#: ../../include/conversation.php:1521
msgid "Sort by Post Date"
msgstr "Nieuwe berichten bovenaan"
-#: ../../include/conversation.php:1547
+#: ../../include/conversation.php:1529
msgid "Posts that mention or involve you"
msgstr "Alleen berichten die jou vermelden of waar je op een andere manier bij betrokken bent"
-#: ../../include/conversation.php:1556
+#: ../../include/conversation.php:1538
msgid "Activity Stream - by date"
msgstr "Activiteitenstroom - volgens datum"
-#: ../../include/conversation.php:1562
+#: ../../include/conversation.php:1544
msgid "Starred"
msgstr "Met ster"
-#: ../../include/conversation.php:1565
+#: ../../include/conversation.php:1547
msgid "Favourite Posts"
msgstr "Favoriete berichten"
-#: ../../include/conversation.php:1572
+#: ../../include/conversation.php:1554
msgid "Spam"
msgstr "Spam"
-#: ../../include/conversation.php:1575
+#: ../../include/conversation.php:1557
msgid "Posts flagged as SPAM"
msgstr "Berichten gemarkeerd als SPAM"
-#: ../../include/conversation.php:1632
+#: ../../include/conversation.php:1614
msgid "Status Messages and Posts"
msgstr "Berichten in dit kanaal"
-#: ../../include/conversation.php:1641
+#: ../../include/conversation.php:1623
msgid "About"
msgstr "Over"
-#: ../../include/conversation.php:1644
+#: ../../include/conversation.php:1626
msgid "Profile Details"
msgstr "Profiel"
-#: ../../include/conversation.php:1653 ../../include/photos.php:506
+#: ../../include/conversation.php:1635 ../../include/photos.php:502
msgid "Photo Albums"
msgstr "Fotoalbums"
-#: ../../include/conversation.php:1660
+#: ../../include/conversation.php:1642
msgid "Files and Storage"
msgstr "Bestanden en opslagruimte"
-#: ../../include/conversation.php:1681 ../../include/conversation.php:1684
-#: ../../include/widgets.php:794
-msgid "Chatrooms"
-msgstr "Chatkanalen"
-
-#: ../../include/conversation.php:1697
+#: ../../include/conversation.php:1678
msgid "Saved Bookmarks"
msgstr "Opgeslagen bladwijzers"
-#: ../../include/conversation.php:1707
+#: ../../include/conversation.php:1688
msgid "Manage Webpages"
msgstr "Webpagina's beheren"
-#: ../../include/conversation.php:1766
+#: ../../include/conversation.php:1747
msgctxt "noun"
msgid "Attending"
msgid_plural "Attending"
msgstr[0] "aanwezig"
msgstr[1] "aanwezig"
-#: ../../include/conversation.php:1769
+#: ../../include/conversation.php:1750
msgctxt "noun"
msgid "Not Attending"
msgid_plural "Not Attending"
msgstr[0] "niet aanwezig"
msgstr[1] "niet aanwezig"
-#: ../../include/conversation.php:1772
+#: ../../include/conversation.php:1753
msgctxt "noun"
msgid "Undecided"
msgid_plural "Undecided"
msgstr[0] "nog niet beslist"
msgstr[1] "nog niet beslist"
-#: ../../include/conversation.php:1775
+#: ../../include/conversation.php:1756
msgctxt "noun"
msgid "Agree"
msgid_plural "Agrees"
msgstr[0] "eens"
msgstr[1] "eens"
-#: ../../include/conversation.php:1778
+#: ../../include/conversation.php:1759
msgctxt "noun"
msgid "Disagree"
msgid_plural "Disagrees"
msgstr[0] "oneens"
msgstr[1] "oneens"
-#: ../../include/conversation.php:1781
+#: ../../include/conversation.php:1762
msgctxt "noun"
msgid "Abstain"
msgid_plural "Abstains"
msgstr[0] "onthouding"
msgstr[1] "onthoudingen"
-#: ../../include/bookmarks.php:35
-#, php-format
-msgid "%1$s's bookmarks"
-msgstr "Bladwijzers van %1$s"
+#: ../../include/selectors.php:30
+msgid "Frequently"
+msgstr "Regelmatig"
-#: ../../include/chat.php:23
-msgid "Missing room name"
-msgstr "Naam chatkanaal ontbreekt"
+#: ../../include/selectors.php:31
+msgid "Hourly"
+msgstr "Elk uur"
-#: ../../include/chat.php:32
-msgid "Duplicate room name"
-msgstr "Naam chatkanaal bestaat al"
+#: ../../include/selectors.php:32
+msgid "Twice daily"
+msgstr "Twee keer per dag"
-#: ../../include/chat.php:82 ../../include/chat.php:90
-msgid "Invalid room specifier."
-msgstr "Ongeldige omschrijving chatkanaal"
+#: ../../include/selectors.php:33
+msgid "Daily"
+msgstr "Dagelijks"
-#: ../../include/chat.php:122
-msgid "Room not found."
-msgstr "Chatkanaal niet gevonden"
+#: ../../include/selectors.php:34
+msgid "Weekly"
+msgstr "Wekelijks"
-#: ../../include/chat.php:143
-msgid "Room is full"
-msgstr "Chatkanaal is vol"
+#: ../../include/selectors.php:35
+msgid "Monthly"
+msgstr "Maandelijks"
-#: ../../include/Contact.php:118
-msgid "New window"
-msgstr "Nieuw venster"
+#: ../../include/selectors.php:49
+msgid "Currently Male"
+msgstr "Momenteel man"
-#: ../../include/Contact.php:119
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Open de geselecteerde locatie in een ander venster of tab"
+#: ../../include/selectors.php:49
+msgid "Currently Female"
+msgstr "Momenteel vrouw"
-#: ../../include/Contact.php:237
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Account '%s' verwijderd"
+#: ../../include/selectors.php:49
+msgid "Mostly Male"
+msgstr "Voornamelijk man"
-#: ../../include/auth.php:105
-msgid "Logged out."
-msgstr "Uitgelogd."
+#: ../../include/selectors.php:49
+msgid "Mostly Female"
+msgstr "Voornamelijk vrouw"
-#: ../../include/auth.php:212
-msgid "Failed authentication"
-msgstr "Mislukte authenticatie"
+#: ../../include/selectors.php:49
+msgid "Transgender"
+msgstr "Transgender"
-#: ../../include/security.php:383
-msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "De beveiligings-token van het tekstvak was ongeldig. Dit is mogelijk het gevolg van dat er te lang (meer dan 3 uur) gewacht is om de tekst op te slaan. "
+#: ../../include/selectors.php:49
+msgid "Intersex"
+msgstr "Interseksueel"
-#: ../../include/api.php:1338
-msgid "Public Timeline"
-msgstr "Openbare tijdlijn"
+#: ../../include/selectors.php:49
+msgid "Transsexual"
+msgstr "Transseksueel"
-#: ../../include/contact_selectors.php:56
-msgid "Frequently"
-msgstr "Regelmatig"
+#: ../../include/selectors.php:49
+msgid "Hermaphrodite"
+msgstr "Hermafrodiet"
-#: ../../include/contact_selectors.php:57
-msgid "Hourly"
-msgstr "Elk uur"
+#: ../../include/selectors.php:49
+msgid "Neuter"
+msgstr "Genderneutraal"
-#: ../../include/contact_selectors.php:58
-msgid "Twice daily"
-msgstr "Twee keer per dag"
+#: ../../include/selectors.php:49
+msgid "Non-specific"
+msgstr "Niet gespecificeerd"
-#: ../../include/contact_selectors.php:59
-msgid "Daily"
-msgstr "Dagelijks"
+#: ../../include/selectors.php:49 ../../include/selectors.php:66
+#: ../../include/selectors.php:104 ../../include/selectors.php:140
+#: ../../include/permissions.php:881
+msgid "Other"
+msgstr "Anders"
-#: ../../include/contact_selectors.php:60
-msgid "Weekly"
-msgstr "Wekelijks"
+#: ../../include/selectors.php:49
+msgid "Undecided"
+msgstr "Nog niet beslist"
-#: ../../include/contact_selectors.php:61
-msgid "Monthly"
-msgstr "Maandelijks"
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Males"
+msgstr "Mannen"
-#: ../../include/contact_selectors.php:76
-#: ../../include/contact_selectors.php:77
-msgid "Friendica"
-msgstr "Friendica"
+#: ../../include/selectors.php:85 ../../include/selectors.php:104
+msgid "Females"
+msgstr "Vrouwen"
-#: ../../include/contact_selectors.php:78
-msgid "OStatus"
-msgstr "OStatus"
+#: ../../include/selectors.php:85
+msgid "Gay"
+msgstr "Homoseksueel"
-#: ../../include/contact_selectors.php:79
-msgid "GNU-Social"
-msgstr "GNU social"
+#: ../../include/selectors.php:85
+msgid "Lesbian"
+msgstr "Lesbisch"
-#: ../../include/contact_selectors.php:80
-msgid "RSS/Atom"
-msgstr "RSS/Atom"
+#: ../../include/selectors.php:85
+msgid "No Preference"
+msgstr "Geen voorkeur"
-#: ../../include/contact_selectors.php:82
-msgid "Diaspora"
-msgstr "Diaspora"
+#: ../../include/selectors.php:85
+msgid "Bisexual"
+msgstr "Biseksueel"
-#: ../../include/contact_selectors.php:83
-msgid "Facebook"
-msgstr "Facebook"
+#: ../../include/selectors.php:85
+msgid "Autosexual"
+msgstr "Autoseksueel"
-#: ../../include/contact_selectors.php:84
-msgid "Zot"
-msgstr "Zot"
+#: ../../include/selectors.php:85
+msgid "Abstinent"
+msgstr "Seksuele onthouding"
-#: ../../include/contact_selectors.php:85
-msgid "LinkedIn"
-msgstr "LinkedIn"
+#: ../../include/selectors.php:85
+msgid "Virgin"
+msgstr "Maagd"
-#: ../../include/contact_selectors.php:86
-msgid "XMPP/IM"
-msgstr "XMPP/IM"
+#: ../../include/selectors.php:85
+msgid "Deviant"
+msgstr "Afwijkend"
-#: ../../include/contact_selectors.php:87
-msgid "MySpace"
-msgstr "MySpace"
+#: ../../include/selectors.php:85
+msgid "Fetish"
+msgstr "Fetisj"
+
+#: ../../include/selectors.php:85
+msgid "Oodles"
+msgstr "Veel"
+
+#: ../../include/selectors.php:85
+msgid "Nonsexual"
+msgstr "Aseksueel"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Single"
+msgstr "Alleen"
+
+#: ../../include/selectors.php:123
+msgid "Lonely"
+msgstr "Eenzaam"
+
+#: ../../include/selectors.php:123
+msgid "Available"
+msgstr "Beschikbaar"
+
+#: ../../include/selectors.php:123
+msgid "Unavailable"
+msgstr "Niet beschikbaar"
+
+#: ../../include/selectors.php:123
+msgid "Has crush"
+msgstr "Heeft een oogje op iemand"
+
+#: ../../include/selectors.php:123
+msgid "Infatuated"
+msgstr "Smoorverliefd"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Dating"
+msgstr "Aan het daten"
+
+#: ../../include/selectors.php:123
+msgid "Unfaithful"
+msgstr "Ontrouw"
+
+#: ../../include/selectors.php:123
+msgid "Sex Addict"
+msgstr "Seksverslaafd"
+
+#: ../../include/selectors.php:123
+msgid "Friends/Benefits"
+msgstr "Vriendschap plus"
+
+#: ../../include/selectors.php:123
+msgid "Casual"
+msgstr "Ongebonden/vluchtig"
+
+#: ../../include/selectors.php:123
+msgid "Engaged"
+msgstr "Verloofd"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Married"
+msgstr "Getrouwd"
+
+#: ../../include/selectors.php:123
+msgid "Imaginarily married"
+msgstr "Denkbeeldig getrouwd"
+
+#: ../../include/selectors.php:123
+msgid "Partners"
+msgstr "Partners"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Cohabiting"
+msgstr "Samenwonend"
+
+#: ../../include/selectors.php:123
+msgid "Common law"
+msgstr "Common-law-huwelijk"
+
+#: ../../include/selectors.php:123
+msgid "Happy"
+msgstr "Gelukkig"
+
+#: ../../include/selectors.php:123
+msgid "Not looking"
+msgstr "Niet op zoek"
+
+#: ../../include/selectors.php:123
+msgid "Swinger"
+msgstr "Swinger"
+
+#: ../../include/selectors.php:123
+msgid "Betrayed"
+msgstr "Verraden"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Separated"
+msgstr "Uit elkaar"
+
+#: ../../include/selectors.php:123
+msgid "Unstable"
+msgstr "Onstabiel"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Divorced"
+msgstr "Gescheiden"
-#: ../../include/contact_widgets.php:14
+#: ../../include/selectors.php:123
+msgid "Imaginarily divorced"
+msgstr "Denkbeeldig gescheiden"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "Widowed"
+msgstr "Weduwnaar/weduwe"
+
+#: ../../include/selectors.php:123
+msgid "Uncertain"
+msgstr "Onzeker"
+
+#: ../../include/selectors.php:123 ../../include/selectors.php:140
+msgid "It's complicated"
+msgstr "Het is ingewikkeld"
+
+#: ../../include/selectors.php:123
+msgid "Don't care"
+msgstr "Maakt mij niks uit"
+
+#: ../../include/selectors.php:123
+msgid "Ask me"
+msgstr "Vraag het me"
+
+#: ../../include/PermissionDescription.php:31
+#: ../../include/acl_selectors.php:232
+msgid "Visible to your default audience"
+msgstr "Voor iedereen zichtbaar, mits niet anders ingesteld"
+
+#: ../../include/PermissionDescription.php:115
+#: ../../include/acl_selectors.php:268
+msgid "Only me"
+msgstr "Alleen ik"
+
+#: ../../include/PermissionDescription.php:116
+msgid "Public"
+msgstr "Openbaar"
+
+#: ../../include/PermissionDescription.php:117
+msgid "Anybody in the $Projectname network"
+msgstr "Iedereen in het $Projectname-netwerk"
+
+#: ../../include/PermissionDescription.php:118
#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "%d uitnodiging beschikbaar"
-msgstr[1] "%d uitnodigingen beschikbaar"
+msgid "Any account on %s"
+msgstr "Iedereen op %s"
-#: ../../include/contact_widgets.php:22
-msgid "Find Channels"
-msgstr "Kanalen vinden"
+#: ../../include/PermissionDescription.php:119
+msgid "Any of my connections"
+msgstr "Al mijn geaccepteerde connecties"
-#: ../../include/contact_widgets.php:23
-msgid "Enter name or interest"
-msgstr "Vul naam of interesse in"
+#: ../../include/PermissionDescription.php:120
+msgid "Only connections I specifically allow"
+msgstr "Alleen connecties die uitdrukkelijk door jou zijn toegestaan"
-#: ../../include/contact_widgets.php:24
-msgid "Connect/Follow"
-msgstr "Verbinden/volgen"
+#: ../../include/PermissionDescription.php:121
+msgid "Anybody authenticated (could include visitors from other networks)"
+msgstr "Geauthenticeerde leden (kan bezoekers van andere netwerken bevatten)"
-#: ../../include/contact_widgets.php:25
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Voorbeeld: Robert Morgenstein, vissen"
+#: ../../include/PermissionDescription.php:122
+msgid "Any connections including those who haven't yet been approved"
+msgstr "Al mijn geaccepteerde en nog niet geaccepteerde connecties"
-#: ../../include/contact_widgets.php:29
-msgid "Random Profile"
-msgstr "Willekeurig profiel"
+#: ../../include/PermissionDescription.php:161
+msgid ""
+"This is your default setting for the audience of your normal stream, and "
+"posts."
+msgstr "Dit is de standaard privacy-instelling voor wie jouw berichten kan bekijken"
-#: ../../include/contact_widgets.php:30
-msgid "Invite Friends"
-msgstr "Vrienden uitnodigen"
+#: ../../include/PermissionDescription.php:162
+msgid ""
+"This is your default setting for who can view your default channel profile"
+msgstr "Dit is de standaard privacy-instelling voor wie jouw standaardprofiel kan bekijken"
-#: ../../include/contact_widgets.php:32
-msgid "Advanced example: name=fred and country=iceland"
-msgstr "Geavanceerd voorbeeld (Engels): name=jan en country=nederland"
+#: ../../include/PermissionDescription.php:163
+msgid "This is your default setting for who can view your connections"
+msgstr "Dit is de standaard privacy-instelling voor wie een lijst met jouw connecties kan bekijken"
-#: ../../include/contact_widgets.php:57 ../../include/features.php:97
-#: ../../include/widgets.php:310
-msgid "Saved Folders"
-msgstr "Bewaarde mappen"
+#: ../../include/PermissionDescription.php:164
+msgid ""
+"This is your default setting for who can view your file storage and photos"
+msgstr "Dit is de standaard privacy-instelling voor wie jouw bestanden en foto's kan bekijken"
-#: ../../include/contact_widgets.php:60 ../../include/contact_widgets.php:98
-#: ../../include/widgets.php:313
-msgid "Everything"
-msgstr "Alles"
+#: ../../include/PermissionDescription.php:165
+msgid "This is your default setting for the audience of your webpages"
+msgstr "Dit is de standaard privacy-instelling voor wie jouw webpagina's kan bekijken"
-#: ../../include/contact_widgets.php:95 ../../include/widgets.php:46
-#: ../../include/taxonomy.php:282
-msgid "Categories"
-msgstr "Categorieën"
+#: ../../include/account.php:28
+msgid "Not a valid email address"
+msgstr "Geen geldig e-mailadres"
+
+#: ../../include/account.php:30
+msgid "Your email domain is not among those allowed on this site"
+msgstr "Jouw e-maildomein is op deze hub niet toegestaan"
+
+#: ../../include/account.php:36
+msgid "Your email address is already registered at this site."
+msgstr "Jouw e-mailadres is al op deze hub geregistreerd."
+
+#: ../../include/account.php:68
+msgid "An invitation is required."
+msgstr "Een uitnodiging is vereist"
+
+#: ../../include/account.php:72
+msgid "Invitation could not be verified."
+msgstr "Uitnodiging kon niet geverifieerd worden"
+
+#: ../../include/account.php:122
+msgid "Please enter the required information."
+msgstr "Vul de vereiste informatie in."
+
+#: ../../include/account.php:189
+msgid "Failed to store account information."
+msgstr "Account-informatie kon niet opgeslagen worden."
-#: ../../include/contact_widgets.php:128
+#: ../../include/account.php:249
#, php-format
-msgid "%d connection in common"
-msgid_plural "%d connections in common"
-msgstr[0] "%d gemeenschappelijke connectie"
-msgstr[1] "%d gemeenschappelijke connecties"
+msgid "Registration confirmation for %s"
+msgstr "Registratiebevestiging voor %s"
-#: ../../include/contact_widgets.php:133
-msgid "show more"
-msgstr "meer connecties weergeven"
+#: ../../include/account.php:315
+#, php-format
+msgid "Registration request at %s"
+msgstr "Registratiebevestiging voor %s"
+
+#: ../../include/account.php:317 ../../include/account.php:344
+#: ../../include/account.php:404 ../../include/network.php:1871
+msgid "Administrator"
+msgstr "Beheerder"
+
+#: ../../include/account.php:339
+msgid "your registration password"
+msgstr "jouw registratiewachtwoord"
+
+#: ../../include/account.php:342 ../../include/account.php:402
+#, php-format
+msgid "Registration details for %s"
+msgstr "Registratiegegevens voor %s"
+
+#: ../../include/account.php:414
+msgid "Account approved."
+msgstr "Account goedgekeurd"
+
+#: ../../include/account.php:454
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Registratie ingetrokken voor %s"
+
+#: ../../include/account.php:506
+msgid "Account verified. Please login."
+msgstr "Account is geverifieerd. Je kan inloggen."
+
+#: ../../include/account.php:723 ../../include/account.php:725
+msgid "Click here to upgrade."
+msgstr "Klik hier om te upgraden."
+
+#: ../../include/account.php:731
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Deze handeling overschrijdt de beperkingen die voor jouw abonnement gelden."
+
+#: ../../include/account.php:736
+msgid "This action is not available under your subscription plan."
+msgstr "Deze handeling is niet mogelijk met jouw abonnement."
#: ../../include/attach.php:247 ../../include/attach.php:333
msgid "Item was not found."
@@ -7968,326 +8516,159 @@ msgstr "opslag in database mislukt."
msgid "Empty path"
msgstr "Ontbrekend bestandspad"
-#: ../../include/datetime.php:136
-msgid "Birthday"
-msgstr "Verjaardag of geboortedatum"
-
-#: ../../include/datetime.php:138
-msgid "Age: "
-msgstr "Leeftijd:"
-
-#: ../../include/datetime.php:140
-msgid "YYYY-MM-DD or MM-DD"
-msgstr "JJJJ-MM-DD of MM-DD"
-
-#: ../../include/datetime.php:273 ../../boot.php:2445
-msgid "never"
-msgstr "nooit"
-
-#: ../../include/datetime.php:279
-msgid "less than a second ago"
-msgstr "minder dan een seconde geleden"
-
-#: ../../include/datetime.php:297
-#, php-format
-msgctxt "e.g. 22 hours ago, 1 minute ago"
-msgid "%1$d %2$s ago"
-msgstr "%1$d %2$s geleden"
-
-#: ../../include/datetime.php:308
-msgctxt "relative_date"
-msgid "year"
-msgid_plural "years"
-msgstr[0] "jaar"
-msgstr[1] "jaren"
-
-#: ../../include/datetime.php:311
-msgctxt "relative_date"
-msgid "month"
-msgid_plural "months"
-msgstr[0] "maand"
-msgstr[1] "maanden"
-
-#: ../../include/datetime.php:314
-msgctxt "relative_date"
-msgid "week"
-msgid_plural "weeks"
-msgstr[0] "week"
-msgstr[1] "weken"
-
-#: ../../include/datetime.php:317
-msgctxt "relative_date"
-msgid "day"
-msgid_plural "days"
-msgstr[0] "dag"
-msgstr[1] "dagen"
-
-#: ../../include/datetime.php:320
-msgctxt "relative_date"
-msgid "hour"
-msgid_plural "hours"
-msgstr[0] "uur"
-msgstr[1] "uren"
-
-#: ../../include/datetime.php:323
-msgctxt "relative_date"
-msgid "minute"
-msgid_plural "minutes"
-msgstr[0] "minuut"
-msgstr[1] "minuten"
-
-#: ../../include/datetime.php:326
-msgctxt "relative_date"
-msgid "second"
-msgid_plural "seconds"
-msgstr[0] "seconde"
-msgstr[1] "seconden"
-
-#: ../../include/datetime.php:563
-#, php-format
-msgid "%1$s's birthday"
-msgstr "Verjaardag van %1$s"
-
-#: ../../include/datetime.php:564
-#, php-format
-msgid "Happy Birthday %1$s"
-msgstr "Gefeliciteerd met je verjaardag %1$s"
-
-#: ../../include/dir_fns.php:139
-msgid "Directory Options"
-msgstr "Opties kanalengids"
-
-#: ../../include/dir_fns.php:141
-msgid "Safe Mode"
-msgstr "Veilig zoeken"
-
-#: ../../include/dir_fns.php:142
-msgid "Public Forums Only"
-msgstr "Alleen openbare forums"
-
-#: ../../include/dir_fns.php:143
-msgid "This Website Only"
-msgstr "Alleen deze hub"
-
-#: ../../include/enotify.php:57 ../../include/network.php:1827
-msgid "$Projectname Notification"
-msgstr "$Projectname-notificatie"
-
-#: ../../include/enotify.php:58 ../../include/network.php:1828
-msgid "$projectname"
-msgstr "$projectname"
-
-#: ../../include/enotify.php:60 ../../include/network.php:1830
-msgid "Thank You,"
-msgstr "Bedankt,"
-
-#: ../../include/enotify.php:62 ../../include/network.php:1832
-#, php-format
-msgid "%s Administrator"
-msgstr "Beheerder %s"
-
-#: ../../include/enotify.php:96
-#, php-format
-msgid "%s <!item_type!>"
-msgstr "%s <!item_type!>"
-
-#: ../../include/enotify.php:100
-#, php-format
-msgid "[Hubzilla:Notify] New mail received at %s"
-msgstr "[Hubzilla:Notificatie] Nieuw privébericht ontvangen op %s"
-
-#: ../../include/enotify.php:102
-#, php-format
-msgid "%1$s, %2$s sent you a new private message at %3$s."
-msgstr "%1$s, %2$s zond jou een nieuw privébericht om %3$s."
-
-#: ../../include/enotify.php:103
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s zond jou %2$s."
+#: ../../include/channel.php:32
+msgid "Unable to obtain identity information from database"
+msgstr "Niet in staat om identiteitsinformatie uit de database te verkrijgen"
-#: ../../include/enotify.php:103
-msgid "a private message"
-msgstr "een privébericht"
+#: ../../include/channel.php:66
+msgid "Empty name"
+msgstr "Ontbrekende naam"
-#: ../../include/enotify.php:104
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Bezoek %s om je privéberichten te bekijken en/of er op te reageren."
+#: ../../include/channel.php:69
+msgid "Name too long"
+msgstr "Naam te lang"
-#: ../../include/enotify.php:160
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
-msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]een %4$s[/zrl]"
+#: ../../include/channel.php:180
+msgid "No account identifier"
+msgstr "Geen account-identificator"
-#: ../../include/enotify.php:168
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
-msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]een %5$s van %4$s[/zrl]"
+#: ../../include/channel.php:192
+msgid "Nickname is required."
+msgstr "Bijnaam is verplicht"
-#: ../../include/enotify.php:177
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]jouw %4$s[/zrl]"
+#: ../../include/channel.php:206
+msgid "Reserved nickname. Please choose another."
+msgstr "Deze naam is gereserveerd. Kies een andere."
-#: ../../include/enotify.php:188
-#, php-format
-msgid "[Hubzilla:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Hubzilla:Notificatie] Reactie op conversatie #%1$d door %2$s"
+#: ../../include/channel.php:211
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "Deze naam heeft niet ondersteunde karakters of is al op deze hub in gebruik."
-#: ../../include/enotify.php:189
-#, php-format
-msgid "%1$s, %2$s commented on an item/conversation you have been following."
-msgstr "%1$s, %2$s gaf een reactie op een bericht/conversatie die jij volgt."
+#: ../../include/channel.php:287
+msgid "Unable to retrieve created identity"
+msgstr "Niet in staat om aangemaakte identiteit te vinden"
-#: ../../include/enotify.php:192 ../../include/enotify.php:207
-#: ../../include/enotify.php:233 ../../include/enotify.php:251
-#: ../../include/enotify.php:265
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Bezoek %s om de conversatie te bekijken en/of er op te reageren."
+#: ../../include/channel.php:345
+msgid "Default Profile"
+msgstr "Standaardprofiel"
-#: ../../include/enotify.php:198
-#, php-format
-msgid "[Hubzilla:Notify] %s posted to your profile wall"
-msgstr "[Hubzilla:Notificatie] %s heeft een bericht op jouw kanaal geplaatst"
+#: ../../include/channel.php:791
+msgid "Requested channel is not available."
+msgstr "Opgevraagd kanaal is niet beschikbaar."
-#: ../../include/enotify.php:200
-#, php-format
-msgid "%1$s, %2$s posted to your profile wall at %3$s"
-msgstr "%1$s, %2$s heeft om %3$s een bericht op jouw kanaal geplaatst"
+#: ../../include/channel.php:938
+msgid "Create New Profile"
+msgstr "Nieuw profiel aanmaken"
-#: ../../include/enotify.php:202
-#, php-format
-msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
-msgstr "%1$s, %2$s heeft een bericht op [zrl=%3$s]jouw kanaal[/zrl] geplaatst"
+#: ../../include/channel.php:958
+msgid "Visible to everybody"
+msgstr "Voor iedereen zichtbaar"
-#: ../../include/enotify.php:226
-#, php-format
-msgid "[Hubzilla:Notify] %s tagged you"
-msgstr "[Hubzilla:Notificatie] %s heeft je genoemd"
+#: ../../include/channel.php:1031 ../../include/channel.php:1142
+msgid "Gender:"
+msgstr "Geslacht:"
-#: ../../include/enotify.php:227
-#, php-format
-msgid "%1$s, %2$s tagged you at %3$s"
-msgstr "%1$s, %2$s noemde jou op %3$s"
+#: ../../include/channel.php:1032 ../../include/channel.php:1186
+msgid "Status:"
+msgstr "Status:"
-#: ../../include/enotify.php:228
-#, php-format
-msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%3$s]noemde jou[/zrl]."
+#: ../../include/channel.php:1033 ../../include/channel.php:1197
+msgid "Homepage:"
+msgstr "Homepagina:"
-#: ../../include/enotify.php:240
-#, php-format
-msgid "[Hubzilla:Notify] %1$s poked you"
-msgstr "[Hubzilla:Notificatie] %1$s heeft je aangestoten"
+#: ../../include/channel.php:1034
+msgid "Online Now"
+msgstr "Nu online"
-#: ../../include/enotify.php:241
-#, php-format
-msgid "%1$s, %2$s poked you at %3$s"
-msgstr "%1$s, %2$s heeft je aangestoten op %3$s"
+#: ../../include/channel.php:1147
+msgid "Like this channel"
+msgstr "Vind dit kanaal leuk"
-#: ../../include/enotify.php:242
-#, php-format
-msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%2$s]heeft je aangestoten[/zrl]."
+#: ../../include/channel.php:1171
+msgid "j F, Y"
+msgstr "F j Y"
-#: ../../include/enotify.php:258
-#, php-format
-msgid "[Hubzilla:Notify] %s tagged your post"
-msgstr "[Hubzilla:Notificatie] %s heeft jouw bericht getagd"
+#: ../../include/channel.php:1172
+msgid "j F"
+msgstr "F j"
-#: ../../include/enotify.php:259
-#, php-format
-msgid "%1$s, %2$s tagged your post at %3$s"
-msgstr "%1$s, %2$s heeft jouw bericht om %3$s getagd"
+#: ../../include/channel.php:1179
+msgid "Birthday:"
+msgstr "Geboortedatum:"
-#: ../../include/enotify.php:260
+#: ../../include/channel.php:1192
#, php-format
-msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
-msgstr "%1$s, %2$s heeft [zrl=%3$s]jouw bericht[/zrl] getagd"
-
-#: ../../include/enotify.php:272
-msgid "[Hubzilla:Notify] Introduction received"
-msgstr "[Hubzilla:Notificatie] Connectieverzoek ontvangen"
+msgid "for %1$d %2$s"
+msgstr "voor %1$d %2$s"
-#: ../../include/enotify.php:273
-#, php-format
-msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
-msgstr "%1$s, je hebt een nieuw connectieverzoek ontvangen van '%2$s' op %3$s"
+#: ../../include/channel.php:1195
+msgid "Sexual Preference:"
+msgstr "Seksuele voorkeur:"
-#: ../../include/enotify.php:274
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
-msgstr "%1$s, je hebt een [zrl=%2$s]nieuw connectieverzoek[/zrl] ontvangen van %3$s."
+#: ../../include/channel.php:1201
+msgid "Tags:"
+msgstr "Tags:"
-#: ../../include/enotify.php:278 ../../include/enotify.php:297
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "Je kan het profiel bekijken op %s"
+#: ../../include/channel.php:1203
+msgid "Political Views:"
+msgstr "Politieke overtuigingen:"
-#: ../../include/enotify.php:280
-#, php-format
-msgid "Please visit %s to approve or reject the connection request."
-msgstr "Bezoek %s om het connectieverzoek te accepteren of af te wijzen."
+#: ../../include/channel.php:1205
+msgid "Religion:"
+msgstr "Religie:"
-#: ../../include/enotify.php:287
-msgid "[Hubzilla:Notify] Friend suggestion received"
-msgstr "[Hubzilla:Notificatie] Kanaalvoorstel ontvangen"
+#: ../../include/channel.php:1209
+msgid "Hobbies/Interests:"
+msgstr "Hobby's/interesses:"
-#: ../../include/enotify.php:288
-#, php-format
-msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
-msgstr "%1$s, je hebt een kanaalvoorstel ontvangen van '%2$s' om %3$s"
+#: ../../include/channel.php:1211
+msgid "Likes:"
+msgstr "Houdt van:"
-#: ../../include/enotify.php:289
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
-"%4$s."
-msgstr "%1$s, je hebt [zrl=%2$s]een kanaalvoorstel[/zrl] ontvangen voor %3$s van %4$s."
+#: ../../include/channel.php:1213
+msgid "Dislikes:"
+msgstr "Houdt niet van:"
-#: ../../include/enotify.php:295
-msgid "Name:"
-msgstr "Naam:"
+#: ../../include/channel.php:1215
+msgid "Contact information and Social Networks:"
+msgstr "Contactinformatie en sociale netwerken:"
-#: ../../include/enotify.php:296
-msgid "Photo:"
-msgstr "Foto:"
+#: ../../include/channel.php:1217
+msgid "My other channels:"
+msgstr "Mijn andere kanalen"
-#: ../../include/enotify.php:299
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Bezoek %s om het voorstel te accepteren of af te wijzen."
+#: ../../include/channel.php:1219
+msgid "Musical interests:"
+msgstr "Muzikale interesses:"
-#: ../../include/enotify.php:514
-msgid "[Hubzilla:Notify]"
-msgstr "[Hubzilla:Notificatie]"
+#: ../../include/channel.php:1221
+msgid "Books, literature:"
+msgstr "Boeken, literatuur:"
-#: ../../include/event.php:779
-msgid "This event has been added to your calendar."
-msgstr "Dit evenement is aan jouw agenda toegevoegd."
+#: ../../include/channel.php:1223
+msgid "Television:"
+msgstr "Televisie:"
-#: ../../include/event.php:978
-msgid "Not specified"
-msgstr "Niet aangegeven"
+#: ../../include/channel.php:1225
+msgid "Film/dance/culture/entertainment:"
+msgstr "Films/dansen/cultuur/vermaak:"
-#: ../../include/event.php:979
-msgid "Needs Action"
-msgstr "Actie vereist"
+#: ../../include/channel.php:1227
+msgid "Love/Romance:"
+msgstr "Liefde/romantiek:"
-#: ../../include/event.php:980
-msgid "Completed"
-msgstr "Voltooid"
+#: ../../include/channel.php:1229
+msgid "Work/employment:"
+msgstr "Werk/beroep:"
-#: ../../include/event.php:981
-msgid "In Process"
-msgstr "In behandeling"
+#: ../../include/channel.php:1231
+msgid "School/education:"
+msgstr "School/opleiding:"
-#: ../../include/event.php:982
-msgid "Cancelled"
-msgstr "Geannuleerd"
+#: ../../include/channel.php:1251
+msgid "Like this thing"
+msgstr "Vind dit ding leuk"
#: ../../include/features.php:48
msgid "General Features"
@@ -8476,10 +8857,6 @@ msgstr "Privacygroepen"
msgid "Enable management and selection of privacy groups"
msgstr "Beheer en selectie van privacygroepen inschakelen"
-#: ../../include/features.php:84 ../../include/widgets.php:281
-msgid "Saved Searches"
-msgstr "Opgeslagen zoekopdrachten"
-
#: ../../include/features.php:84
msgid "Save search terms for re-use"
msgstr "Sla zoekopdrachten op voor hergebruik"
@@ -8517,10 +8894,6 @@ msgid "Filter incoming posts from connections based on keywords/content"
msgstr "Filter binnenkomende berichten van connecties aan de hand van trefwoorden en taal"
#: ../../include/features.php:89
-msgid "Suggest Channels"
-msgstr "Kanalen voorstellen"
-
-#: ../../include/features.php:89
msgid "Show channel suggestions"
msgstr "Voor jou mogelijk interessante kanalen voorstellen"
@@ -8545,477 +8918,201 @@ msgid "Add categories to your posts"
msgstr "Voeg categorieën toe aan je berichten"
#: ../../include/features.php:97
+msgid "Emoji Reactions"
+msgstr "Emoji-reacties"
+
+#: ../../include/features.php:97
+msgid "Add emoji reaction ability to posts"
+msgstr "Emoji-reacties in berichten toestaan"
+
+#: ../../include/features.php:98
msgid "Ability to file posts under folders"
msgstr "Mogelijkheid om berichten in mappen op te slaan"
-#: ../../include/features.php:98
+#: ../../include/features.php:99
msgid "Dislike Posts"
msgstr "Vind berichten niet leuk"
-#: ../../include/features.php:98
+#: ../../include/features.php:99
msgid "Ability to dislike posts/comments"
msgstr "Mogelijkheid om berichten en reacties niet leuk te vinden"
-#: ../../include/features.php:99
+#: ../../include/features.php:100
msgid "Star Posts"
msgstr "Geef berichten een ster"
-#: ../../include/features.php:99
+#: ../../include/features.php:100
msgid "Ability to mark special posts with a star indicator"
msgstr "Mogelijkheid om speciale berichten met een ster te markeren"
-#: ../../include/features.php:100
+#: ../../include/features.php:101
msgid "Tag Cloud"
msgstr "Tagwolk"
-#: ../../include/features.php:100
+#: ../../include/features.php:101
msgid "Provide a personal tag cloud on your channel page"
msgstr "Zorgt voor een persoonlijke wolk met tags op jouw kanaalpagina"
-#: ../../include/follow.php:28
-msgid "Channel is blocked on this site."
-msgstr "Kanaal is op deze hub geblokkeerd."
-
-#: ../../include/follow.php:33
-msgid "Channel location missing."
-msgstr "Ontbrekende kanaallocatie."
-
-#: ../../include/follow.php:82
-msgid "Response from remote channel was incomplete."
-msgstr "Antwoord van het kanaal op afstand was niet volledig."
-
-#: ../../include/follow.php:99
-msgid "Channel was deleted and no longer exists."
-msgstr "Kanaal is verwijderd en bestaat niet meer."
+#: ../../include/oembed.php:324
+msgid "Embedded content"
+msgstr "Ingesloten (embedded) inhoud"
-#: ../../include/follow.php:155 ../../include/follow.php:191
-msgid "Protocol disabled."
-msgstr "Protocol uitgeschakeld."
+#: ../../include/oembed.php:333
+msgid "Embedding disabled"
+msgstr "Insluiten (embedding) uitgeschakeld"
-#: ../../include/follow.php:179
-msgid "Channel discovery failed."
-msgstr "Kanaal ontdekken mislukt."
+#: ../../include/acl_selectors.php:271
+msgid "Who can see this?"
+msgstr "Wie kan dit zien?"
-#: ../../include/follow.php:217
-msgid "Cannot connect to yourself."
-msgstr "Kan niet met jezelf verbinden"
+#: ../../include/acl_selectors.php:272
+msgid "Custom selection"
+msgstr "Handmatige selectie"
-#: ../../include/group.php:26
+#: ../../include/acl_selectors.php:273
msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "Een verwijderde collectie met deze naam is gereactiveerd. Bestaande itemrechten <strong>kunnen</strong> van toepassing zijn op deze collectie en toekomstige leden. Wanneer je dit niet zo bedoeld hebt, moet je een nieuwe collectie met een andere naam aanmaken."
+"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit"
+" the scope of \"Show\"."
+msgstr "Kies \"Tonen\" om weergave toe te staan. Met \"Niet tonen\" kan je uitzonderingen maken op \"Tonen\"."
-#: ../../include/group.php:248
-msgid "Add new connections to this privacy group"
-msgstr "Voeg nieuwe connecties aan deze privacygroep toe"
-
-#: ../../include/group.php:289
-msgid "edit"
-msgstr "bewerken"
-
-#: ../../include/group.php:312
-msgid "Edit group"
-msgstr "Privacygroep bewerken"
-
-#: ../../include/group.php:313
-msgid "Add privacy group"
-msgstr "Privacygroep toevoegen"
-
-#: ../../include/group.php:314
-msgid "Channels not in any privacy group"
-msgstr "Kanalen die zich in geen enkele privacygroep bevinden"
-
-#: ../../include/group.php:316 ../../include/widgets.php:282
-msgid "add"
-msgstr "toevoegen"
-
-#: ../../include/bbcode.php:123 ../../include/bbcode.php:813
-#: ../../include/bbcode.php:816 ../../include/bbcode.php:821
-#: ../../include/bbcode.php:824 ../../include/bbcode.php:827
-#: ../../include/bbcode.php:830 ../../include/bbcode.php:835
-#: ../../include/bbcode.php:838 ../../include/bbcode.php:843
-#: ../../include/bbcode.php:846 ../../include/bbcode.php:849
-#: ../../include/bbcode.php:852
-msgid "Image/photo"
-msgstr "Afbeelding/foto"
+#: ../../include/acl_selectors.php:274
+msgid "Show"
+msgstr "Tonen"
-#: ../../include/bbcode.php:162 ../../include/bbcode.php:863
-msgid "Encrypted content"
-msgstr "Versleutelde inhoud"
+#: ../../include/acl_selectors.php:275
+msgid "Don't show"
+msgstr "Niet tonen"
-#: ../../include/bbcode.php:179
-#, php-format
-msgid "Install %s element: "
-msgstr "Installeer %s-element: "
+#: ../../include/acl_selectors.php:281
+msgid "Other networks and post services"
+msgstr "Andere netwerken en diensten"
-#: ../../include/bbcode.php:183
+#: ../../include/acl_selectors.php:311
#, php-format
msgid ""
-"This post contains an installable %s element, however you lack permissions "
-"to install it on this site."
-msgstr "Dit bericht heeft een te installeren %s-element, maar je hebt geen permissies om het op deze hub te installeren."
-
-#: ../../include/bbcode.php:255
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s schreef het volgende %2$s %3$s"
-
-#: ../../include/bbcode.php:333 ../../include/bbcode.php:341
-msgid "Click to open/close"
-msgstr "Klik om te openen of te sluiten"
-
-#: ../../include/bbcode.php:341
-msgid "spoiler"
-msgstr "spoiler"
+"Post permissions %s cannot be changed %s after a post is shared.</br />These"
+" permissions set who is allowed to view the post."
+msgstr "Permissies van berichten %s zijn niet meer te veranderen %s nadat een bericht is gedeeld.</br />Met deze permissies bepaal je wie het bericht kan zien."
-#: ../../include/bbcode.php:556
-msgid "Different viewers will see this text differently"
-msgstr "Deze tekst wordt per persoon anders weergeven."
-
-#: ../../include/bbcode.php:801
-msgid "$1 wrote:"
-msgstr "$1 schreef:"
-
-#: ../../include/items.php:1138 ../../include/items.php:1183
-msgid "(Unknown)"
-msgstr "(Onbekend)"
-
-#: ../../include/items.php:1382
-msgid "Visible to anybody on the internet."
-msgstr "Voor iedereen op het internet zichtbaar."
-
-#: ../../include/items.php:1384
-msgid "Visible to you only."
-msgstr "Alleen voor jou zichtbaar."
-
-#: ../../include/items.php:1386
-msgid "Visible to anybody in this network."
-msgstr "Voor iedereen in dit netwerk zichtbaar."
+#: ../../include/auth.php:105
+msgid "Logged out."
+msgstr "Uitgelogd."
-#: ../../include/items.php:1388
-msgid "Visible to anybody authenticated."
-msgstr "Voor iedereen die geauthenticeerd is zichtbaar."
+#: ../../include/auth.php:212
+msgid "Failed authentication"
+msgstr "Mislukte authenticatie"
-#: ../../include/items.php:1390
-#, php-format
-msgid "Visible to anybody on %s."
-msgstr "Voor iedereen op %s zichtbaar."
+#: ../../include/datetime.php:135
+msgid "Birthday"
+msgstr "Verjaardag of geboortedatum"
-#: ../../include/items.php:1392
-msgid "Visible to all connections."
-msgstr "Voor alle connecties zichtbaar."
+#: ../../include/datetime.php:137
+msgid "Age: "
+msgstr "Leeftijd:"
-#: ../../include/items.php:1394
-msgid "Visible to approved connections."
-msgstr "Voor alle geaccepteerde connecties zichtbaar."
+#: ../../include/datetime.php:139
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "JJJJ-MM-DD of MM-DD"
-#: ../../include/items.php:1396
-msgid "Visible to specific connections."
-msgstr "Voor specifieke connecties zichtbaar."
+#: ../../include/datetime.php:272 ../../boot.php:2470
+msgid "never"
+msgstr "nooit"
-#: ../../include/items.php:5142
-msgid "Privacy group is empty."
-msgstr "Privacygroep is leeg"
+#: ../../include/datetime.php:278
+msgid "less than a second ago"
+msgstr "minder dan een seconde geleden"
-#: ../../include/items.php:5149
+#: ../../include/datetime.php:296
#, php-format
-msgid "Privacy group: %s"
-msgstr "Privacygroep: %s"
-
-#: ../../include/items.php:5161
-msgid "Connection not found."
-msgstr "Connectie niet gevonden."
-
-#: ../../include/items.php:5594
-msgid "profile photo"
-msgstr "profielfoto"
+msgctxt "e.g. 22 hours ago, 1 minute ago"
+msgid "%1$d %2$s ago"
+msgstr "%1$d %2$s geleden"
-#: ../../include/network.php:659
-msgid "view full size"
-msgstr "volledige grootte tonen"
+#: ../../include/datetime.php:307
+msgctxt "relative_date"
+msgid "year"
+msgid_plural "years"
+msgstr[0] "jaar"
+msgstr[1] "jaren"
-#: ../../include/network.php:1889
-msgid "No Subject"
-msgstr "Geen onderwerp"
+#: ../../include/datetime.php:310
+msgctxt "relative_date"
+msgid "month"
+msgid_plural "months"
+msgstr[0] "maand"
+msgstr[1] "maanden"
-#: ../../include/widgets.php:103
-msgid "System"
-msgstr "Systeem"
+#: ../../include/datetime.php:313
+msgctxt "relative_date"
+msgid "week"
+msgid_plural "weeks"
+msgstr[0] "week"
+msgstr[1] "weken"
-#: ../../include/widgets.php:106
-msgid "Create Personal App"
-msgstr "Persoonlijke app maken"
+#: ../../include/datetime.php:316
+msgctxt "relative_date"
+msgid "day"
+msgid_plural "days"
+msgstr[0] "dag"
+msgstr[1] "dagen"
-#: ../../include/widgets.php:107
-msgid "Edit Personal App"
-msgstr "Persoonlijke app bewerken"
+#: ../../include/datetime.php:319
+msgctxt "relative_date"
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "uur"
+msgstr[1] "uren"
-#: ../../include/widgets.php:154
-msgid "Suggestions"
-msgstr "Voorgestelde kanalen"
+#: ../../include/datetime.php:322
+msgctxt "relative_date"
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minuut"
+msgstr[1] "minuten"
-#: ../../include/widgets.php:155
-msgid "See more..."
-msgstr "Meer..."
+#: ../../include/datetime.php:325
+msgctxt "relative_date"
+msgid "second"
+msgid_plural "seconds"
+msgstr[0] "seconde"
+msgstr[1] "seconden"
-#: ../../include/widgets.php:175
+#: ../../include/datetime.php:562
#, php-format
-msgid "You have %1$.0f of %2$.0f allowed connections."
-msgstr "Je hebt %1$.0f van de %2$.0f toegestane connecties."
-
-#: ../../include/widgets.php:181
-msgid "Add New Connection"
-msgstr "Nieuwe connectie toevoegen"
-
-#: ../../include/widgets.php:182
-msgid "Enter channel address"
-msgstr "Vul kanaaladres in"
-
-#: ../../include/widgets.php:183
-msgid "Examples: bob@example.com, https://example.com/barbara"
-msgstr "Voorbeelden: bob@example.com, http://example.com/barbara"
-
-#: ../../include/widgets.php:199
-msgid "Notes"
-msgstr "Aantekeningen"
-
-#: ../../include/widgets.php:273
-msgid "Remove term"
-msgstr "Verwijder zoekterm"
-
-#: ../../include/widgets.php:354
-msgid "Archives"
-msgstr "Archieven"
-
-#: ../../include/widgets.php:467
-msgid "Refresh"
-msgstr "Vernieuwen"
-
-#: ../../include/widgets.php:507
-msgid "Account settings"
-msgstr "Account"
-
-#: ../../include/widgets.php:513
-msgid "Channel settings"
-msgstr "Kanaal"
-
-#: ../../include/widgets.php:522
-msgid "Additional features"
-msgstr "Extra functies"
-
-#: ../../include/widgets.php:529
-msgid "Feature/Addon settings"
-msgstr "Plugin-instellingen"
-
-#: ../../include/widgets.php:535
-msgid "Display settings"
-msgstr "Weergave"
-
-#: ../../include/widgets.php:542
-msgid "Manage locations"
-msgstr "Locaties beheren"
-
-#: ../../include/widgets.php:551
-msgid "Export channel"
-msgstr "Kanaal exporteren"
-
-#: ../../include/widgets.php:558
-msgid "Connected apps"
-msgstr "Verbonden applicaties"
-
-#: ../../include/widgets.php:573
-msgid "Premium Channel Settings"
-msgstr "Instellingen premiumkanaal"
-
-#: ../../include/widgets.php:602
-msgid "Private Mail Menu"
-msgstr "Privéberichten"
-
-#: ../../include/widgets.php:604
-msgid "Combined View"
-msgstr "Gecombineerd postvak"
-
-#: ../../include/widgets.php:609 ../../include/nav.php:196
-msgid "Inbox"
-msgstr "Postvak IN"
-
-#: ../../include/widgets.php:614 ../../include/nav.php:197
-msgid "Outbox"
-msgstr "Postvak UIT"
-
-#: ../../include/widgets.php:619 ../../include/nav.php:198
-msgid "New Message"
-msgstr "Nieuw bericht"
-
-#: ../../include/widgets.php:636 ../../include/widgets.php:648
-msgid "Conversations"
-msgstr "Conversaties"
-
-#: ../../include/widgets.php:640
-msgid "Received Messages"
-msgstr "Ontvangen berichten"
-
-#: ../../include/widgets.php:644
-msgid "Sent Messages"
-msgstr "Verzonden berichten"
-
-#: ../../include/widgets.php:658
-msgid "No messages."
-msgstr "Geen berichten"
-
-#: ../../include/widgets.php:676
-msgid "Delete conversation"
-msgstr "Verwijder conversatie"
-
-#: ../../include/widgets.php:702
-msgid "Events Menu"
-msgstr "Agenda-menu"
-
-#: ../../include/widgets.php:703
-msgid "Day View"
-msgstr "Dag tonen"
-
-#: ../../include/widgets.php:704
-msgid "Week View"
-msgstr "Week tonen"
-
-#: ../../include/widgets.php:705
-msgid "Month View"
-msgstr "Maand tonen"
-
-#: ../../include/widgets.php:717
-msgid "Events Tools"
-msgstr "Agenda-hulpmiddelen"
-
-#: ../../include/widgets.php:718
-msgid "Export Calendar"
-msgstr "Exporteren"
-
-#: ../../include/widgets.php:719
-msgid "Import Calendar"
-msgstr "Importeren"
-
-#: ../../include/widgets.php:798
-msgid "Overview"
-msgstr "Overzicht"
-
-#: ../../include/widgets.php:805
-msgid "Chat Members"
-msgstr "Chatleden"
-
-#: ../../include/widgets.php:828
-msgid "Bookmarked Chatrooms"
-msgstr "Bladwijzers van chatkanalen"
-
-#: ../../include/widgets.php:851
-msgid "Suggested Chatrooms"
-msgstr "Voorgestelde chatkanalen"
-
-#: ../../include/widgets.php:996 ../../include/widgets.php:1108
-msgid "photo/image"
-msgstr "foto/afbeelding"
-
-#: ../../include/widgets.php:1051
-msgid "Click to show more"
-msgstr "Klik voor meer"
-
-#: ../../include/widgets.php:1202
-msgid "Rating Tools"
-msgstr "Beoordelingen"
-
-#: ../../include/widgets.php:1206 ../../include/widgets.php:1208
-msgid "Rate Me"
-msgstr "Beoordeel mij"
-
-#: ../../include/widgets.php:1211
-msgid "View Ratings"
-msgstr "Bekijk beoordelingen"
-
-#: ../../include/widgets.php:1268
-msgid "Forums"
-msgstr "Forums"
-
-#: ../../include/widgets.php:1297
-msgid "Tasks"
-msgstr "Taken"
-
-#: ../../include/widgets.php:1306
-msgid "Documentation"
-msgstr "Documentatie"
-
-#: ../../include/widgets.php:1308
-msgid "Project/Site Information"
-msgstr "Project- en hub-informatie"
-
-#: ../../include/widgets.php:1309
-msgid "For Members"
-msgstr "Voor leden"
-
-#: ../../include/widgets.php:1310
-msgid "For Administrators"
-msgstr "Voor beheerders"
-
-#: ../../include/widgets.php:1311
-msgid "For Developers"
-msgstr "Voor ontwikkelaars"
-
-#: ../../include/widgets.php:1335
-msgid "Accounts"
-msgstr "Accounts"
-
-#: ../../include/widgets.php:1335 ../../include/widgets.php:1373
-msgid "Member registrations waiting for confirmation"
-msgstr "Accounts die op goedkeuring wachten"
-
-#: ../../include/widgets.php:1341
-msgid "Inspect queue"
-msgstr "Inspecteer berichtenwachtrij"
-
-#: ../../include/widgets.php:1343
-msgid "DB updates"
-msgstr "Database-updates"
-
-#: ../../include/widgets.php:1368 ../../include/nav.php:216
-msgid "Admin"
-msgstr "Beheer"
-
-#: ../../include/widgets.php:1369
-msgid "Plugin Features"
-msgstr "Plugin-opties"
-
-#: ../../include/taxonomy.php:240 ../../include/taxonomy.php:261
-msgid "Tags"
-msgstr "Tags"
+msgid "%1$s's birthday"
+msgstr "Verjaardag van %1$s"
-#: ../../include/taxonomy.php:305
-msgid "Keywords"
-msgstr "Trefwoorden"
+#: ../../include/datetime.php:563
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Gefeliciteerd met je verjaardag %1$s"
-#: ../../include/taxonomy.php:326
-msgid "have"
-msgstr "heb"
+#: ../../include/group.php:26
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
+msgstr "Een verwijderde collectie met deze naam is gereactiveerd. Bestaande itemrechten <strong>kunnen</strong> van toepassing zijn op deze collectie en toekomstige leden. Wanneer je dit niet zo bedoeld hebt, moet je een nieuwe collectie met een andere naam aanmaken."
-#: ../../include/taxonomy.php:326
-msgid "has"
-msgstr "heeft"
+#: ../../include/group.php:248
+msgid "Add new connections to this privacy group"
+msgstr "Voeg nieuwe connecties aan deze privacygroep toe"
-#: ../../include/taxonomy.php:327
-msgid "want"
-msgstr "wil"
+#: ../../include/group.php:289
+msgid "edit"
+msgstr "bewerken"
-#: ../../include/taxonomy.php:327
-msgid "wants"
-msgstr "wil"
+#: ../../include/group.php:312
+msgid "Edit group"
+msgstr "Privacygroep bewerken"
-#: ../../include/taxonomy.php:328
-msgid "likes"
-msgstr "vindt dit leuk"
+#: ../../include/group.php:313
+msgid "Add privacy group"
+msgstr "Privacygroep toevoegen"
-#: ../../include/taxonomy.php:329
-msgid "dislikes"
-msgstr "vindt dit niet leuk"
+#: ../../include/group.php:314
+msgid "Channels not in any privacy group"
+msgstr "Kanalen die zich in geen enkele privacygroep bevinden"
#: ../../include/js_strings.php:5
msgid "Delete this item?"
@@ -9041,6 +9138,10 @@ msgstr "Wachtwoord te kort"
msgid "Passwords do not match"
msgstr "Wachtwoorden komen niet overeen"
+#: ../../include/js_strings.php:13
+msgid "everybody"
+msgstr "iedereen"
+
#: ../../include/js_strings.php:14
msgid "Secret Passphrase"
msgstr "Geheim wachtwoord"
@@ -9257,190 +9358,97 @@ msgctxt "calendar"
msgid "All day"
msgstr "hele dag"
-#: ../../include/message.php:20
-msgid "No recipient provided."
-msgstr "Geen ontvanger opgegeven."
-
-#: ../../include/message.php:25
-msgid "[no subject]"
-msgstr "[geen onderwerp]"
-
-#: ../../include/message.php:45
-msgid "Unable to determine sender."
-msgstr "Afzender kan niet bepaald worden."
-
-#: ../../include/message.php:222
-msgid "Stored post could not be verified."
-msgstr "Opgeslagen bericht kon niet worden geverifieerd."
-
-#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1614
-msgid "Logout"
-msgstr "Uitloggen"
-
-#: ../../include/nav.php:82 ../../include/nav.php:113
-msgid "End this session"
-msgstr "Beëindig deze sessie"
+#: ../../include/network.php:657
+msgid "view full size"
+msgstr "volledige grootte tonen"
-#: ../../include/nav.php:85 ../../include/nav.php:144
-msgid "Home"
-msgstr "Home"
+#: ../../include/network.php:1885
+msgid "No Subject"
+msgstr "Geen onderwerp"
-#: ../../include/nav.php:85
-msgid "Your posts and conversations"
-msgstr "Jouw kanaal"
+#: ../../include/network.php:2146 ../../include/network.php:2147
+msgid "Friendica"
+msgstr "Friendica"
-#: ../../include/nav.php:86
-msgid "Your profile page"
-msgstr "Jouw profielpagina"
+#: ../../include/network.php:2148
+msgid "OStatus"
+msgstr "OStatus"
-#: ../../include/nav.php:88
-msgid "Manage/Edit profiles"
-msgstr "Beheer/wijzig profielen"
+#: ../../include/network.php:2149
+msgid "GNU-Social"
+msgstr "GNU social"
-#: ../../include/nav.php:90
-msgid "Edit your profile"
-msgstr "Jouw profiel bewerken"
+#: ../../include/network.php:2150
+msgid "RSS/Atom"
+msgstr "RSS/Atom"
-#: ../../include/nav.php:92
-msgid "Your photos"
-msgstr "Jouw foto's"
+#: ../../include/network.php:2152
+msgid "Diaspora"
+msgstr "Diaspora"
-#: ../../include/nav.php:93
-msgid "Your files"
-msgstr "Jouw bestanden"
+#: ../../include/network.php:2153
+msgid "Facebook"
+msgstr "Facebook"
-#: ../../include/nav.php:96
-msgid "Your chatrooms"
-msgstr "Jouw chatkanalen"
+#: ../../include/network.php:2154
+msgid "Zot"
+msgstr "Zot"
-#: ../../include/nav.php:102
-msgid "Your bookmarks"
-msgstr "Jouw bladwijzers"
+#: ../../include/network.php:2155
+msgid "LinkedIn"
+msgstr "LinkedIn"
-#: ../../include/nav.php:106
-msgid "Your webpages"
-msgstr "Jouw webpagina's"
+#: ../../include/network.php:2156
+msgid "XMPP/IM"
+msgstr "XMPP/IM"
-#: ../../include/nav.php:110
-msgid "Sign in"
-msgstr "Inloggen"
+#: ../../include/network.php:2157
+msgid "MySpace"
+msgstr "MySpace"
-#: ../../include/nav.php:127
+#: ../../include/photos.php:110
#, php-format
-msgid "%s - click to logout"
-msgstr "%s - klik om uit te loggen"
-
-#: ../../include/nav.php:130
-msgid "Remote authentication"
-msgstr "Authenticatie op afstand"
-
-#: ../../include/nav.php:130
-msgid "Click to authenticate to your home hub"
-msgstr "Authenticeer jezelf via (bijvoorbeeld) jouw hub"
-
-#: ../../include/nav.php:144
-msgid "Home Page"
-msgstr "Homepage"
-
-#: ../../include/nav.php:147
-msgid "Create an account"
-msgstr "Maak een account aan"
-
-#: ../../include/nav.php:159
-msgid "Help and documentation"
-msgstr "Hulp en documentatie"
-
-#: ../../include/nav.php:163
-msgid "Applications, utilities, links, games"
-msgstr "Apps"
-
-#: ../../include/nav.php:165
-msgid "Search site @name, #tag, ?docs, content"
-msgstr "Zoek een @kanaal, doorzoek inhoud hub met tekst en #tags, of doorzoek ?documentatie "
-
-#: ../../include/nav.php:167
-msgid "Channel Directory"
-msgstr "Kanalengids"
-
-#: ../../include/nav.php:179
-msgid "Your grid"
-msgstr "Jouw grid"
-
-#: ../../include/nav.php:180
-msgid "Mark all grid notifications seen"
-msgstr "Markeer alle gridnotificaties als bekeken"
-
-#: ../../include/nav.php:182
-msgid "Channel home"
-msgstr "Jouw kanaal"
-
-#: ../../include/nav.php:183
-msgid "Mark all channel notifications seen"
-msgstr "Alle kanaalnotificaties als gelezen markeren"
-
-#: ../../include/nav.php:189
-msgid "Notices"
-msgstr "Notificaties"
-
-#: ../../include/nav.php:189
-msgid "Notifications"
-msgstr "Notificaties"
-
-#: ../../include/nav.php:190
-msgid "See all notifications"
-msgstr "Alle notificaties weergeven"
-
-#: ../../include/nav.php:193
-msgid "Private mail"
-msgstr "Privéberichten"
-
-#: ../../include/nav.php:194
-msgid "See all private messages"
-msgstr "Alle privéberichten weergeven"
-
-#: ../../include/nav.php:195
-msgid "Mark all private messages seen"
-msgstr "Markeer alle privéberichten als bekeken"
-
-#: ../../include/nav.php:201
-msgid "Event Calendar"
-msgstr "Agenda"
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "Afbeelding is groter dan op deze hub toegestane limiet van %lu bytes"
-#: ../../include/nav.php:202
-msgid "See all events"
-msgstr "Alle gebeurtenissen weergeven"
+#: ../../include/photos.php:117
+msgid "Image file is empty."
+msgstr "Afbeeldingsbestand is leeg"
-#: ../../include/nav.php:203
-msgid "Mark all events seen"
-msgstr "Markeer alle gebeurtenissen als bekeken"
+#: ../../include/photos.php:255
+msgid "Photo storage failed."
+msgstr "Foto kan niet worden opgeslagen"
-#: ../../include/nav.php:206
-msgid "Manage Your Channels"
-msgstr "Beheer je kanalen"
+#: ../../include/photos.php:295
+msgid "a new photo"
+msgstr "een nieuwe foto"
-#: ../../include/nav.php:208
-msgid "Account/Channel Settings"
-msgstr "Account-/kanaal-instellingen"
+#: ../../include/photos.php:299
+#, php-format
+msgctxt "photo_upload"
+msgid "%1$s posted %2$s to %3$s"
+msgstr "%1$s plaatste %2$s op %3$s"
-#: ../../include/nav.php:216
-msgid "Site Setup and Configuration"
-msgstr "Hub instellen en beheren"
+#: ../../include/photos.php:506
+msgid "Upload New Photos"
+msgstr "Nieuwe foto's uploaden"
-#: ../../include/nav.php:252
-msgid "@name, #tag, ?doc, content"
-msgstr "@kanaal, #tag, inhoud, ?hulp"
+#: ../../include/zot.php:699
+msgid "Invalid data packet"
+msgstr "Datapakket ongeldig"
-#: ../../include/nav.php:253
-msgid "Please wait..."
-msgstr "Wachten aub..."
+#: ../../include/zot.php:715
+msgid "Unable to verify channel signature"
+msgstr "Kanaalkenmerk kon niet worden geverifieerd. "
-#: ../../include/oembed.php:267
-msgid "Embedded content"
-msgstr "Ingesloten (embedded) inhoud"
+#: ../../include/zot.php:2363
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr "Hubkenmerk voor %s kon niet worden geverifieerd"
-#: ../../include/oembed.php:276
-msgid "Embedding disabled"
-msgstr "Insluiten (embedding) uitgeschakeld"
+#: ../../include/zot.php:3712
+msgid "invalid target signature"
+msgstr "ongeldig doelkenmerk"
#: ../../include/page_widgets.php:6
msgid "New Page"
@@ -9591,32 +9599,36 @@ msgstr "Speciaal - Groepsopslag"
msgid "Custom/Expert Mode"
msgstr "Expertmodus/handmatig aanpassen"
-#: ../../include/photos.php:112
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "Afbeelding is groter dan op deze hub toegestane limiet van %lu bytes"
+#: ../../include/activities.php:41
+msgid " and "
+msgstr " en "
-#: ../../include/photos.php:119
-msgid "Image file is empty."
-msgstr "Afbeeldingsbestand is leeg"
+#: ../../include/activities.php:49
+msgid "public profile"
+msgstr "openbaar profiel"
-#: ../../include/photos.php:257
-msgid "Photo storage failed."
-msgstr "Foto kan niet worden opgeslagen"
+#: ../../include/activities.php:58
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s veranderde %2$s naar &ldquo;%3$s&rdquo;"
-#: ../../include/photos.php:297
-msgid "a new photo"
-msgstr "een nieuwe foto"
+#: ../../include/activities.php:59
+#, php-format
+msgid "Visit %1$s's %2$s"
+msgstr "Bezoek het %2$s van %1$s"
-#: ../../include/photos.php:301
+#: ../../include/activities.php:62
#, php-format
-msgctxt "photo_upload"
-msgid "%1$s posted %2$s to %3$s"
-msgstr "%1$s plaatste %2$s op %3$s"
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s heeft een aangepaste %2$s, %3$s veranderd."
-#: ../../include/photos.php:510
-msgid "Upload New Photos"
-msgstr "Nieuwe foto's uploaden"
+#: ../../include/bb2diaspora.php:398
+msgid "Attachments:"
+msgstr "Bijlagen:"
+
+#: ../../include/bb2diaspora.php:487
+msgid "$Projectname event notification:"
+msgstr "Notificatie $Projectname-gebeurtenis:"
#: ../../view/theme/redbasic/php/config.php:82
msgid "Focus (Hubzilla default)"
@@ -9754,62 +9766,62 @@ msgstr "Grootte profielfoto's van berichten instellen"
msgid "Set size of followup author photos"
msgstr "Grootte profielfoto's van reacties instellen"
-#: ../../boot.php:1075
+#: ../../boot.php:1162
#, php-format
msgctxt "opensearch"
msgid "Search %1$s (%2$s)"
msgstr "Zoek %1$s (%2$s)"
-#: ../../boot.php:1075
+#: ../../boot.php:1162
msgctxt "opensearch"
msgid "$Projectname"
msgstr "$Projectname"
-#: ../../boot.php:1392
+#: ../../boot.php:1480
#, php-format
msgid "Update %s failed. See error logs."
msgstr "Update %s mislukt. Zie foutenlogboek."
-#: ../../boot.php:1395
+#: ../../boot.php:1483
#, php-format
msgid "Update Error at %s"
msgstr "Update-fout op %s"
-#: ../../boot.php:1596
+#: ../../boot.php:1684
msgid ""
"Create an account to access services and applications within the Hubzilla"
msgstr "Maak een account aan om toegang te krijgen tot diensten en toepassingen van Hubzilla"
-#: ../../boot.php:1618
+#: ../../boot.php:1706
msgid "Password"
msgstr "Wachtwoord"
-#: ../../boot.php:1619
+#: ../../boot.php:1707
msgid "Remember me"
msgstr "Aangemeld blijven"
-#: ../../boot.php:1622
+#: ../../boot.php:1710
msgid "Forgot your password?"
msgstr "Wachtwoord vergeten?"
-#: ../../boot.php:2251
+#: ../../boot.php:2276
msgid "toggle mobile"
msgstr "mobiele weergave omschakelen"
-#: ../../boot.php:2404
+#: ../../boot.php:2425
msgid "Website SSL certificate is not valid. Please correct."
msgstr "Het SSL-certificaat van deze website is ongeldig. Corrigeer dit a.u.b."
-#: ../../boot.php:2407
+#: ../../boot.php:2428
#, php-format
msgid "[hubzilla] Website SSL error for %s"
msgstr "[hubzilla] Probleem met SSL-certificaat voor %s"
-#: ../../boot.php:2444
+#: ../../boot.php:2469
msgid "Cron/Scheduled tasks not running."
msgstr "Cron is niet actief"
-#: ../../boot.php:2448
+#: ../../boot.php:2473
#, php-format
msgid "[hubzilla] Cron tasks not running on %s"
msgstr "[hubzilla] Cron-taken zijn niet actief op %s"
diff --git a/view/nl/hstrings.php b/view/nl/hstrings.php
index 197756606..4ff83f788 100644
--- a/view/nl/hstrings.php
+++ b/view/nl/hstrings.php
@@ -29,6 +29,7 @@ App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s&#37;)
App::$strings["WARNING:"] = "WAARSCHUWING:";
App::$strings["Create new folder"] = "Nieuwe map aanmaken";
App::$strings["Upload file"] = "Bestand uploaden";
+App::$strings["Permission denied"] = "Toegang geweigerd";
App::$strings["Permission denied."] = "Toegang geweigerd.";
App::$strings["Not Found"] = "Niet gevonden";
App::$strings["Page not found."] = "Pagina niet gevonden.";
@@ -36,261 +37,6 @@ App::$strings["Remote authentication blocked. You are logged into this site loca
App::$strings["Welcome %s. Remote authentication successful."] = "Welkom %s. Authenticatie op afstand geslaagd.";
App::$strings["Requested profile is not available."] = "Opgevraagd profiel is niet beschikbaar";
App::$strings["Some blurb about what to do when you're new here"] = "Welkom op \$Projectname. Klik op de tab ontdekken of klik rechtsboven op de <a href=\"directory\">kanalengids</a>, om kanalen te vinden. Rechtsboven vind je ook <a href=\"directory\">apps</a>, waar je vrijwel alle functies van \$Projectname kunt vinden. Voor <a href=\"directory\">hulp</a> met \$Projectname klik je op het vraagteken.";
-App::$strings["network"] = "netwerk";
-App::$strings["RSS"] = "RSS";
-App::$strings["Theme settings updated."] = "Thema-instellingen bijgewerkt.";
-App::$strings["Item not found."] = "Item niet gevonden.";
-App::$strings["# Accounts"] = "# accounts";
-App::$strings["# blocked accounts"] = "# geblokkeerde accounts";
-App::$strings["# expired accounts"] = "# verlopen accounts";
-App::$strings["# expiring accounts"] = "# accounts die nog moeten verlopen";
-App::$strings["# Channels"] = "# Kanalen";
-App::$strings["# primary"] = "# primair";
-App::$strings["# clones"] = "# klonen";
-App::$strings["Message queues"] = "Berichtenwachtrij";
-App::$strings["Administration"] = "Beheer";
-App::$strings["Summary"] = "Samenvatting";
-App::$strings["Registered accounts"] = "Geregistreerde accounts";
-App::$strings["Pending registrations"] = "Accounts die op goedkeuring wachten";
-App::$strings["Registered channels"] = "Geregistreerde kanalen";
-App::$strings["Active plugins"] = "Ingeschakelde plugins";
-App::$strings["Version"] = "Versie";
-App::$strings["Site settings updated."] = "Hub-instellingen bijgewerkt.";
-App::$strings["Default"] = "Standaard";
-App::$strings["mobile"] = "mobiel";
-App::$strings["experimental"] = "experimenteel";
-App::$strings["unsupported"] = "Niet ondersteund";
-App::$strings["No"] = "Nee";
-App::$strings["Yes - with approval"] = "Ja - met goedkeuring";
-App::$strings["Yes"] = "Ja";
-App::$strings["My site is not a public server"] = "Mijn \$Projectname-hub is niet openbaar";
-App::$strings["My site has paid access only"] = "Mijn \$Projectname-hub kent alleen betaalde toegang";
-App::$strings["My site has free access only"] = "Mijn \$Projectname-hub kent alleen gratis toegang";
-App::$strings["My site offers free accounts with optional paid upgrades"] = "Mijn \$Projectname-hub biedt gratis accounts aan met betaalde uitbreidingen als optie";
-App::$strings["Site"] = "Hub-instellingen";
-App::$strings["Submit"] = "Opslaan";
-App::$strings["Registration"] = "Registratie";
-App::$strings["File upload"] = "Bestand uploaden";
-App::$strings["Policies"] = "Beleid";
-App::$strings["Advanced"] = "Geavanceerd";
-App::$strings["Site name"] = "Naam van deze \$Projectname-hub";
-App::$strings["Banner/Logo"] = "Banner/logo";
-App::$strings["Administrator Information"] = "Informatie over de beheerder van deze hub";
-App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Contactinformatie voor hub-beheerders. Getoond op pagina met hub-informatie. Er kan hier bbcode gebruikt worden.";
-App::$strings["System language"] = "Standaardtaal";
-App::$strings["System theme"] = "Standaardthema";
-App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Standaardthema voor \$Projectname-hub (kan door lid veranderd worden) - <a href='#' id='cnftheme'>verander thema-instellingen</a>";
-App::$strings["Mobile system theme"] = "Standaardthema voor mobiel";
-App::$strings["Theme for mobile devices"] = "Thema voor mobiele apparaten";
-App::$strings["Allow Feeds as Connections"] = "Sta feeds toe als connecties";
-App::$strings["(Heavy system resource usage)"] = "(sterk negatieve invloed op systeembronnen hub)";
-App::$strings["Maximum image size"] = "Maximale grootte van afbeeldingen";
-App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Maximale grootte in bytes voor afbeeldingen die worden geüpload. Standaard is 0, wat geen limiet betekend.";
-App::$strings["Does this site allow new member registration?"] = "Staat deze hub nieuwe accounts toe?";
-App::$strings["Invitation only"] = "Alleen op uitnodiging";
-App::$strings["Only allow new member registrations with an invitation code. Above register policy must be set to Yes."] = "Sta alleen nieuwe registraties toe van mensen die een uitnodigingscode hebben. Bovenstaand accountbeleid moet op Ja staan.";
-App::$strings["Which best describes the types of account offered by this hub?"] = "Wat voor soort accounts biedt deze \$Projectname-hub aan? Kies wat het meest in de buurt komt.";
-App::$strings["Register text"] = "Tekst tijdens registratie";
-App::$strings["Will be displayed prominently on the registration page."] = "Tekst dat op de pagina voor het registreren van nieuwe accounts wordt getoond.";
-App::$strings["Site homepage to show visitors (default: login box)"] = "Homepagina van deze hub die aan bezoekers wordt getoond (standaard: inlogformulier)";
-App::$strings["example: 'public' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file."] = "voorbeeld: 'public' om de openbare stream te tonen, 'page/sys/home' om de webpagina 'home' van het systeemkanaal te tonen of 'include:home.html' om een gewoon bestand te gebruiken.";
-App::$strings["Preserve site homepage URL"] = "Behoudt de URL van de hub (/)";
-App::$strings["Present the site homepage in a frame at the original location instead of redirecting"] = "Toon de homepagina van de hub in een frame op de oorspronkelijke locatie (/), i.p.v. een doorverwijzing naar een andere locatie (bv. .../home.html)";
-App::$strings["Accounts abandoned after x days"] = "Accounts als verlaten beschouwen na zoveel aantal dagen:";
-App::$strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Zal geen systeembronnen verspillen door polling van externe hubs voor verlaten accounts. Vul 0 in voor geen tijdslimiet.";
-App::$strings["Allowed friend domains"] = "Toegestane domeinen";
-App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Komma-gescheiden lijst van domeinen waarvan kanalen connecties kunnen aangaan met kanalen op deze \$Projectname-hub. Wildcards zijn toegestaan.\nLaat leeg om alle domeinen toe te laten.";
-App::$strings["Allowed email domains"] = "Toegestane e-maildomeinen";
-App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Door komma's gescheiden lijst met e-maildomeinen waarvan e-mailadressen op deze hub mogen registeren. Wildcards zijn toegestaan. Laat leeg om alle domeinen toe te laten.";
-App::$strings["Not allowed email domains"] = "Niet toegestane e-maildomeinen";
-App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Door komma's gescheiden lijst met e-maildomeinen waarvan e-mailadressen niet op deze hub mogen registeren. Wildcards zijn toegestaan. Laat leeg om alle domeinen toe te staan, tenzij er toegestane domeinen zijn ingesteld. ";
-App::$strings["Verify Email Addresses"] = "E-mailadres verifieren";
-App::$strings["Check to verify email addresses used in account registration (recommended)."] = "Inschakelen om e-mailadressen te verifiëren die tijdens de accountregistratie worden gebruikt (aanbevolen).";
-App::$strings["Force publish"] = "Dwing kanaalvermelding af";
-App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Vink dit aan om af te dwingen dat alle kanalen op deze hub in de kanalengids worden vermeld.";
-App::$strings["Import Public Streams"] = "Openbare streams importeren";
-App::$strings["Import and allow access to public content pulled from other sites. Warning: this content is unmoderated."] = "Toegang verlenen tot openbare berichten die vanuit andere hubs worden geïmporteerd. Waarschuwing: de inhoud van deze berichten wordt niet gemodereerd.";
-App::$strings["Login on Homepage"] = "Inlogformulier op de homepagina";
-App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Toon een inlogformulier voor bezoekers op de homepagina wanneer geen andere inhoud is geconfigureerd. ";
-App::$strings["Enable context help"] = "Schakel contextuele hulp in";
-App::$strings["Display contextual help for the current page when the help button is pressed."] = "Toon hulp en documentatie voor de op dat moment getoonde pagina, wanneer op de hulp-knop wordt geklikt.";
-App::$strings["Directory Server URL"] = "Server-URL voor de kanalengids";
-App::$strings["Default directory server"] = "Standaardserver voor de kanalengids";
-App::$strings["Proxy user"] = "Gebruikersnaam proxy";
-App::$strings["Proxy URL"] = "Proxy-URL";
-App::$strings["Network timeout"] = "Netwerktimeout";
-App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Waarde is in seconden. Zet op 0 voor onbeperkt (niet aanbevolen)";
-App::$strings["Delivery interval"] = "Afleveringsinterval";
-App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Vertraag de achtergrondprocessen voor het afleveren met een aantal seconden om de systeembelasting te verminderen. Aanbevolen: 4-5 voor shared hosts, 2-3 voor virtual private servers (VPS) en 0-1 voor grote dedicated servers.";
-App::$strings["Deliveries per process"] = "Leveringen per serverproces";
-App::$strings["Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5."] = "Aantal leveringen die aan één serverproces worden meegegeven. Pas dit aan wanneer het nodig is om systeemprestaties te verbeteren. Aangeraden: 1-5";
-App::$strings["Poll interval"] = "Poll-interval";
-App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "De achtergrondprocessen voor het afleveren met zoveel seconden vertragen om de systeembelasting te verminderen. 0 om de afleveringsinterval te gebruiken.";
-App::$strings["Maximum Load Average"] = "Maximaal gemiddelde systeembelasting";
-App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maximale systeembelasting voordat de afleverings- en polllingsprocessen worden uitgesteld. Standaard is 50.";
-App::$strings["Expiration period in days for imported (grid/network) content"] = "Aantal dagen waarna geïmporteerde inhoud uit iemands grid/netwerk-pagina wordt verwijderd.";
-App::$strings["0 for no expiration of imported content"] = "Dit geldt alleen voor inhoud van andere kanalen, dus niet voor iemands eigen kanaal. 0 voor het niet verwijderen van geïmporteerde inhoud.";
-App::$strings["Off"] = "Uit";
-App::$strings["On"] = "Aan";
-App::$strings["Lock feature %s"] = " Vergrendel de functie '%s'";
-App::$strings["Manage Additional Features"] = "Beheer - Extra functies";
-App::$strings["No server found"] = "Geen hub gevonden";
-App::$strings["ID"] = "ID";
-App::$strings["for channel"] = "voor kanaal";
-App::$strings["on server"] = "op hub";
-App::$strings["Status"] = "Status";
-App::$strings["Server"] = "Hubbeheer";
-App::$strings["Security"] = "Beveiliging";
-App::$strings["Block public"] = "Openbare toegang blokkeren";
-App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "Vink dit aan om alle normaliter openbare persoonlijke pagina's op deze hub alleen toegankelijk te maken voor leden die zich hebben geauthenticeerd.";
-App::$strings["Allow communications only from these sites"] = "Alleen communicatie met deze hubs toestaan";
-App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Eén hub per regel. Laat leeg om communicatie standaard met alle hubs toe te staan";
-App::$strings["Block communications from these sites"] = "Communicatie met deze hubs blokkeren";
-App::$strings["Allow communications only from these channels"] = "Sta alleen communicatie toe met deze kanalen";
-App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "Eén kanaal (hash) per regel. Laat leeg om communicatie standaard met alle kanalen toe te staan";
-App::$strings["Block communications from these channels"] = "Communicatie met deze kanalen blokkeren";
-App::$strings["Allow embedded HTML content only from these domains"] = "Alleen ingesloten (embedded) HTML vanaf deze domeinen toestaan";
-App::$strings["One site per line. Leave empty to allow from any site by default"] = "Eén per regel. Laat leeg om standaard vanaf elk domein toe te staan";
-App::$strings["Block embedded HTML from these domains"] = "Ingesloten (embedded) HTML vanaf deze domeinen blokkeren";
-App::$strings["Update has been marked successful"] = "Update is als succesvol gemarkeerd";
-App::$strings["Executing %s failed. Check system logs."] = "Uitvoeren van %s is mislukt. Controleer systeemlogboek.";
-App::$strings["Update %s was successfully applied."] = "Update %s was geslaagd.";
-App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "Update %s gaf geen melding. Het is daarom niet bekend of deze geslaagd is.";
-App::$strings["Update function %s could not be found."] = "Update-functie %s kon niet gevonden worden.";
-App::$strings["No failed updates."] = "Geen mislukte updates.";
-App::$strings["Failed Updates"] = "Mislukte updates";
-App::$strings["Mark success (if update was manually applied)"] = "Markeer als geslaagd (wanneer de update handmatig was uitgevoerd)";
-App::$strings["Attempt to execute this update step automatically"] = "Poging om deze stap van de update automatisch uit te voeren.";
-App::$strings["Queue Statistics"] = "Wachtrij-statistieken";
-App::$strings["Total Entries"] = "Aantal vermeldingen";
-App::$strings["Priority"] = "Prioriteit";
-App::$strings["Destination URL"] = "Doel-URL";
-App::$strings["Mark hub permanently offline"] = "Hub als permanent offline markeren";
-App::$strings["Empty queue for this hub"] = "Berichtenwachtrij voor deze hub legen";
-App::$strings["Last known contact"] = "Voor het laatst contact";
-App::$strings["%s account blocked/unblocked"] = array(
- 0 => "%s account geblokkeerd/gedeblokkeerd",
- 1 => "%s accounts geblokkeerd/gedeblokkeerd",
-);
-App::$strings["%s account deleted"] = array(
- 0 => "%s account verwijderd",
- 1 => "%s accounts verwijderd",
-);
-App::$strings["Account not found"] = "Account niet gevonden";
-App::$strings["Account '%s' deleted"] = "Account '%s' verwijderd";
-App::$strings["Account '%s' blocked"] = "Account '%s' geblokkeerd";
-App::$strings["Account '%s' unblocked"] = "Account '%s' gedeblokkeerd";
-App::$strings["Users"] = "Accounts";
-App::$strings["select all"] = "alles selecteren";
-App::$strings["User registrations waiting for confirm"] = "Accounts die op goedkeuring wachten";
-App::$strings["Request date"] = "Tijd/datum verzoek";
-App::$strings["Email"] = "E-mail";
-App::$strings["No registrations."] = "Geen verzoeken.";
-App::$strings["Approve"] = "Goedkeuren";
-App::$strings["Deny"] = "Afkeuren";
-App::$strings["Block"] = "Blokkeren";
-App::$strings["Unblock"] = "Deblokkeren";
-App::$strings["All Channels"] = "Alle kanalen";
-App::$strings["Register date"] = "Geregistreerd";
-App::$strings["Last login"] = "Laatste keer ingelogd";
-App::$strings["Expires"] = "Verloopt";
-App::$strings["Service Class"] = "Abonnementen";
-App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Geselecteerde accounts (met bijbehorende kanalen) worden verwijderd!\\n\\nAlles wat deze accounts op deze hub hebben gepubliceerd wordt definitief verwijderd!\\n\\Weet je het zeker?";
-App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Account {0} (met bijbehorende kanalen) wordt verwijderd !\\n\\nAlles wat dit account op deze hub heeft gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?";
-App::$strings["%s channel censored/uncensored"] = array(
- 0 => "%s kanaal gecensureerd/ongecensureerd",
- 1 => "%s kanalen gecensureerd/ongecensureerd",
-);
-App::$strings["%s channel code allowed/disallowed"] = array(
- 0 => "Scripts toegestaan/niet toegestaan voor %s kanaal",
- 1 => "Scripts toegestaan/niet toegestaan voor %s kanalen",
-);
-App::$strings["%s channel deleted"] = array(
- 0 => "%s kanaal verwijderd",
- 1 => "%s kanalen verwijderd",
-);
-App::$strings["Channel not found"] = "Kanaal niet gevonden";
-App::$strings["Channel '%s' deleted"] = "Kanaal '%s' verwijderd";
-App::$strings["Channel '%s' censored"] = "Kanaal '%s' gecensureerd";
-App::$strings["Channel '%s' uncensored"] = "Kanaal '%s' ongecensureerd";
-App::$strings["Channel '%s' code allowed"] = "Scripts toegestaan voor kanaal '%s'";
-App::$strings["Channel '%s' code disallowed"] = "Scripts niet toegestaan voor kanaal '%s'";
-App::$strings["Channels"] = "Kanalen";
-App::$strings["Censor"] = "Censureren";
-App::$strings["Uncensor"] = "Niet censureren";
-App::$strings["Allow Code"] = "Scripts toestaan";
-App::$strings["Disallow Code"] = "Scripts niet toestaan";
-App::$strings["Channel"] = "Kanaal";
-App::$strings["UID"] = "UID";
-App::$strings["Address"] = "Kanaaladres";
-App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Geselecteerde kanalen worden verwijderd!\\n\\nAlles wat in deze kanalen op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?";
-App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Kanaal {0} wordt verwijderd!\\n\\nAlles wat in dit kanaal op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?";
-App::$strings["Plugin %s disabled."] = "Plugin %s uitgeschakeld.";
-App::$strings["Plugin %s enabled."] = "Plugin %s ingeschakeld";
-App::$strings["Disable"] = "Uitschakelen";
-App::$strings["Enable"] = "Inschakelen";
-App::$strings["Plugins"] = "Plugins";
-App::$strings["Toggle"] = "Omschakelen";
-App::$strings["Settings"] = "Instellingen";
-App::$strings["Author: "] = "Auteur: ";
-App::$strings["Maintainer: "] = "Beheerder: ";
-App::$strings["Minimum project version: "] = "Minimum versie Hubzilla: ";
-App::$strings["Maximum project version: "] = "Maximum versie Hubzilla:";
-App::$strings["Minimum PHP version: "] = "Minimum versie PHP: ";
-App::$strings["Requires: "] = "Vereist: ";
-App::$strings["Disabled - version incompatibility"] = "Uitgeschakeld - versie is incompatibel";
-App::$strings["No themes found."] = "Geen thema's gevonden";
-App::$strings["Screenshot"] = "Schermafdruk";
-App::$strings["Themes"] = "Thema's";
-App::$strings["[Experimental]"] = "[Experimenteel]";
-App::$strings["[Unsupported]"] = "[Niet ondersteund]";
-App::$strings["Log settings updated."] = "Logboek-instellingen bijgewerkt.";
-App::$strings["Logs"] = "Logboeken";
-App::$strings["Clear"] = "Leegmaken";
-App::$strings["Debugging"] = "Debuggen";
-App::$strings["Log file"] = "Logbestand";
-App::$strings["Must be writable by web server. Relative to your Red top-level directory."] = "Moet door de webserver beschrijfbaar zijn. Relatief ten opzichte van de bovenste map van je \$Projectname-installatie.";
-App::$strings["Log level"] = "Logniveau";
-App::$strings["New Profile Field"] = "Nieuw profielveld";
-App::$strings["Field nickname"] = "Bijnaam voor veld";
-App::$strings["System name of field"] = "Systeemnaam voor veld";
-App::$strings["Input type"] = "Invoertype";
-App::$strings["Field Name"] = "Veldnaam";
-App::$strings["Label on profile pages"] = "Tekstlabel voor op profielpagina's";
-App::$strings["Help text"] = "Helptekst";
-App::$strings["Additional info (optional)"] = "Extra informatie (optioneel)";
-App::$strings["Save"] = "Opslaan";
-App::$strings["Field definition not found"] = "Velddefinitie niet gevonden";
-App::$strings["Edit Profile Field"] = "Profielveld bewerken";
-App::$strings["Profile Fields"] = "Profielvelden";
-App::$strings["Basic Profile Fields"] = "Standaard profielvelden";
-App::$strings["Advanced Profile Fields"] = "Geavanceerde profielvelden";
-App::$strings["(In addition to basic fields)"] = "(als toevoeging op de standaard velden)";
-App::$strings["All available fields"] = "Alle beschikbare velden";
-App::$strings["Custom Fields"] = "Extra (handmatig toegevoegde) velden";
-App::$strings["Create Custom Field"] = "Extra velden aanmaken";
-App::$strings["Authorize application connection"] = "Geef toestemming voor applicatiekoppeling";
-App::$strings["Return to your app and insert this Securty Code:"] = "Ga terug naar je app en voeg deze beveiligingscode in:";
-App::$strings["Please login to continue."] = "Inloggen om verder te kunnen gaan.";
-App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Wil je deze applicatie toestemming geven om jouw berichten en connecties te zien, en/of nieuwe berichten voor jou te plaatsen?";
-App::$strings["App installed."] = "App geïnstalleerd";
-App::$strings["Malformed app."] = "Misvormde app.";
-App::$strings["Embed code"] = "Insluitcode";
-App::$strings["Edit App"] = "App bewerken";
-App::$strings["Create App"] = "App maken";
-App::$strings["Name of app"] = "Naam van app";
-App::$strings["Required"] = "Vereist";
-App::$strings["Location (URL) of app"] = "Locatie (URL) van app";
-App::$strings["Description"] = "Omschrijving";
-App::$strings["Photo icon URL"] = "URL van pictogram";
-App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixels (optioneel)";
-App::$strings["Version ID"] = "Versie-ID";
-App::$strings["Price of app"] = "Prijs van de app";
-App::$strings["Location (URL) to purchase app"] = "Locatie (URL) om de app aan te schaffen";
-App::$strings["Apps"] = "Apps";
-App::$strings["Item not available."] = "Item is niet aanwezig.";
-App::$strings["Invalid item."] = "Ongeldig item.";
-App::$strings["Channel not found."] = "Kanaal niet gevonden.";
App::$strings["Block Name"] = "Bloknaam";
App::$strings["Blocks"] = "Blokken";
App::$strings["Block Title"] = "Bloktitel";
@@ -298,10 +44,7 @@ App::$strings["Created"] = "Aangemaakt";
App::$strings["Edited"] = "Bewerkt";
App::$strings["Share"] = "Delen";
App::$strings["View"] = "Weergeven";
-App::$strings["Bookmark added"] = "Bladwijzer toegevoegd";
-App::$strings["My Bookmarks"] = "Mijn bladwijzers";
-App::$strings["My Connections Bookmarks"] = "Bladwijzers van mijn connecties";
-App::$strings["everybody"] = "iedereen";
+App::$strings["Channel not found."] = "Kanaal niet gevonden.";
App::$strings["Permissions denied."] = "Permissies niet toegestaan";
App::$strings["l, F j"] = "l j F";
App::$strings["Link to Source"] = "Originele locatie";
@@ -311,12 +54,12 @@ App::$strings["Previous"] = "Vorige";
App::$strings["Next"] = "Volgende";
App::$strings["Export"] = "Exporteren";
App::$strings["Import"] = "Importeren";
+App::$strings["Submit"] = "Opslaan";
App::$strings["Today"] = "Vandaag";
App::$strings["You must be logged in to see this page."] = "Je moet zijn ingelogd om deze pagina te kunnen bekijken.";
App::$strings["Posts and comments"] = "Berichten en reacties";
App::$strings["Only posts"] = "Alleen berichten";
App::$strings["Insufficient permissions. Request redirected to profile page."] = "Onvoldoende permissies. Doorgestuurd naar profielpagina.";
-App::$strings["Public"] = "Openbaar";
App::$strings["Room not found"] = "Chatkanaal niet gevonden";
App::$strings["Leave Room"] = "Chatkanaal verlaten";
App::$strings["Delete Room"] = "Chatkanaal verwijderen";
@@ -338,9 +81,10 @@ App::$strings["Expiration"] = "Verloopt na";
App::$strings["min"] = "min";
App::$strings["Away"] = "Afwezig";
App::$strings["Online"] = "Online";
-App::$strings["No channel."] = "Geen kanaal.";
-App::$strings["Common connections"] = "Veel voorkomende connecties";
-App::$strings["No connections in common."] = "Geen gemeenschappelijke connecties.";
+App::$strings["Invalid item."] = "Ongeldig item.";
+App::$strings["Bookmark added"] = "Bladwijzer toegevoegd";
+App::$strings["My Bookmarks"] = "Mijn bladwijzers";
+App::$strings["My Connections Bookmarks"] = "Bladwijzers van mijn connecties";
App::$strings["Continue"] = "Ga verder";
App::$strings["Premium Channel Setup"] = "Instellen premiumkanaal ";
App::$strings["Enable premium channel connection restrictions"] = "Restricties voor connecties van premiumkanaal toestaan";
@@ -350,41 +94,13 @@ App::$strings["Potential connections will then see the following text before pro
App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Door verder te gaan ga ik automatisch akkoord met alle voorwaarden en aanwijzingen op deze pagina.";
App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(Er zijn geen speciale voorwaarden en aanwijzingen door de kanaal-eigenaar verstrekt) ";
App::$strings["Restricted or Premium Channel"] = "Beperkt of premiumkanaal";
-App::$strings["Blocked"] = "Geblokkeerd";
-App::$strings["Ignored"] = "Genegeerd";
-App::$strings["Hidden"] = "Verborgen";
-App::$strings["Archived"] = "Gearchiveerd";
-App::$strings["New"] = "Nieuw";
-App::$strings["All"] = "Alles";
-App::$strings["New Connections"] = "Nieuwe connecties";
-App::$strings["Show pending (new) connections"] = "Nog te accepteren (nieuwe) connecties weergeven";
-App::$strings["All Connections"] = "Alle connecties";
-App::$strings["Show all connections"] = "Toon alle connecties";
-App::$strings["Only show blocked connections"] = "Toon alleen geblokkeerde connecties";
-App::$strings["Only show ignored connections"] = "Toon alleen genegeerde connecties";
-App::$strings["Only show archived connections"] = "Toon alleen gearchiveerde connecties";
-App::$strings["Only show hidden connections"] = "Toon alleen verborgen connecties";
-App::$strings["Pending approval"] = "Moet nog geaccepteerd worden";
-App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-App::$strings["Edit connection"] = "Connectie bewerken";
-App::$strings["Delete connection"] = "Connectie verwijderen";
-App::$strings["Channel address"] = "Kanaaladres";
-App::$strings["Network"] = "Netwerk";
-App::$strings["Connected"] = "Verbonden";
-App::$strings["Approve connection"] = "Connectie accepteren";
-App::$strings["Ignore connection"] = "Connectie negeren";
-App::$strings["Ignore"] = "Negeren";
-App::$strings["Recent activity"] = "Recente activiteit";
-App::$strings["Connections"] = "Connecties";
-App::$strings["Search"] = "Zoeken";
-App::$strings["Search your connections"] = "Doorzoek jouw connecties";
-App::$strings["Connections search"] = "Connecties zoeken";
-App::$strings["Find"] = "Vinden";
App::$strings["Could not access contact record."] = "Kon geen toegang krijgen tot de connectie-gegevens.";
App::$strings["Could not locate selected profile."] = "Kon het gekozen profiel niet vinden.";
App::$strings["Connection updated."] = "Connectie bijgewerkt.";
App::$strings["Failed to update connection record."] = "Bijwerken van connectie-gegevens mislukt.";
App::$strings["is now connected to"] = "is nu verbonden met";
+App::$strings["No"] = "Nee";
+App::$strings["Yes"] = "Ja";
App::$strings["Could not access address book record."] = "Kon geen toegang krijgen tot de record van de connectie.";
App::$strings["Refresh failed - channel is currently unavailable."] = "Vernieuwen mislukt - kanaal is momenteel niet beschikbaar";
App::$strings["Unable to set address book parameters."] = "Niet in staat om de parameters van connecties in te stellen.";
@@ -395,9 +111,12 @@ App::$strings["Refresh Permissions"] = "Permissies vernieuwen";
App::$strings["Fetch updated permissions"] = "Aangepaste permissies ophalen";
App::$strings["Recent Activity"] = "Recente activiteit/berichten";
App::$strings["View recent posts and comments"] = "Recente berichten en reacties weergeven";
+App::$strings["Unblock"] = "Deblokkeren";
+App::$strings["Block"] = "Blokkeren";
App::$strings["Block (or Unblock) all communications with this connection"] = "Blokkeer (of deblokkeer) alle communicatie met deze connectie";
App::$strings["This connection is blocked!"] = "Deze connectie is geblokkeerd!";
App::$strings["Unignore"] = "Niet meer negeren";
+App::$strings["Ignore"] = "Negeren";
App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Negeer (of negeer niet meer) alle inkomende communicatie van deze connectie";
App::$strings["This connection is ignored!"] = "Deze connectie wordt genegeerd!";
App::$strings["Unarchive"] = "Niet meer archiveren";
@@ -413,6 +132,7 @@ App::$strings["Me"] = "Ik";
App::$strings["Family"] = "Familie";
App::$strings["Friends"] = "Vrienden";
App::$strings["Acquaintances"] = "Kennissen";
+App::$strings["All"] = "Alles";
App::$strings["Approve this connection"] = "Deze connectie accepteren";
App::$strings["Accept connection to allow communication"] = "Keur deze connectie goed om communicatie toe te staan";
App::$strings["Set Affinity"] = "Verwantschapsfilter instellen";
@@ -445,29 +165,6 @@ App::$strings["Individual Permissions"] = "Individuele permissies";
App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Sommige permissies worden mogelijk overgeërfd van de <a href=\"settings\">privacy-instellingen</a> van jouw kanaal, die een hogere prioriteit hebben dan deze individuele instellingen. Je kan je deze overgeërfde permissies hier <strong>niet</strong> veranderen.";
App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Sommige permissies worden mogelijk overgeërfd van de <a href=\"settings\">privacy-instellingen</a> van jouw kanaal, die een hogere prioriteit hebben dan deze individuele permissies. Je kan de permissies hier veranderen, maar die hebben geen effect, tenzij de overgeërfde permissies worden veranderd. ";
App::$strings["Last update:"] = "Laatste wijziging:";
-App::$strings["Image uploaded but image cropping failed."] = "Afbeelding geüpload, maar afbeelding kon niet worden bijgesneden. ";
-App::$strings["Cover Photos"] = "Omslagfoto's";
-App::$strings["Image resize failed."] = "Afbeelding kon niet van grootte veranderd worden.";
-App::$strings["Unable to process image"] = "Afbeelding kan niet verwerkt worden";
-App::$strings["Image upload failed."] = "Uploaden afbeelding mislukt";
-App::$strings["Unable to process image."] = "Niet in staat om afbeelding te verwerken.";
-App::$strings["female"] = "vrouw";
-App::$strings["%1\$s updated her %2\$s"] = "%1\$s heeft haar %2\$s bijgewerkt";
-App::$strings["male"] = "man";
-App::$strings["%1\$s updated his %2\$s"] = "%1\$s heeft zijn %2\$s bijgewerkt";
-App::$strings["%1\$s updated their %2\$s"] = "De %2\$s van %1\$s is bijgewerkt";
-App::$strings["cover photo"] = "omslagfoto";
-App::$strings["Photo not available."] = "Foto niet beschikbaar.";
-App::$strings["Upload File:"] = "Bestand uploaden:";
-App::$strings["Select a profile:"] = "Kies een profiel:";
-App::$strings["Upload Cover Photo"] = "Omslagfoto uploaden";
-App::$strings["or"] = "of";
-App::$strings["skip this step"] = "sla deze stap over";
-App::$strings["select a photo from your photo albums"] = "Kies een foto uit jouw fotoalbums";
-App::$strings["Crop Image"] = "Afbeelding bijsnijden";
-App::$strings["Please adjust the image cropping for optimum viewing."] = "Snij de afbeelding zo uit dat deze optimaal wordt weergegeven.";
-App::$strings["Done Editing"] = "Klaar met bewerken";
-App::$strings["\$Projectname channel"] = "\$Projectname-kanaal";
App::$strings["Public access denied."] = "Openbare toegang geweigerd.";
App::$strings["%d rating"] = array(
0 => "%d beoordeling",
@@ -488,6 +185,7 @@ App::$strings["Don't suggest"] = "Niet voorstellen";
App::$strings["Common connections:"] = "Gemeenschappelijke connecties:";
App::$strings["Global Directory"] = "Volledige kanalengids";
App::$strings["Local Directory"] = "Lokale kanalengids";
+App::$strings["Find"] = "Vinden";
App::$strings["Finding:"] = "Gezocht naar:";
App::$strings["Channel Suggestions"] = "Voorgestelde kanalen";
App::$strings["next page"] = "volgende pagina";
@@ -498,60 +196,66 @@ App::$strings["Reverse Alphabetic"] = "Omgekeerd alfabetisch";
App::$strings["Newest to Oldest"] = "Nieuw naar oud";
App::$strings["Oldest to Newest"] = "Oud naar nieuw";
App::$strings["No entries (some entries may be hidden)."] = "Niets gevonden (sommige kanalen kunnen verborgen zijn).";
-App::$strings["This site is not a directory server"] = "Deze hub is geen kanalengidshub (directoryserver)";
-App::$strings["This directory server requires an access token"] = "Deze kanalengidshub (directoryserver) heeft een toegangs-token nodig";
-App::$strings["Permission denied"] = "Toegang geweigerd";
-App::$strings["Invalid message"] = "Ongeldig bericht";
-App::$strings["no results"] = "geen resultaten";
-App::$strings["Delivery report for %1\$s"] = "Afleveringsrapport voor %1\$s";
-App::$strings["channel sync processed"] = "kanaalsync verwerkt";
-App::$strings["queued"] = "in wachtrij";
-App::$strings["posted"] = "verstuurd";
-App::$strings["accepted for delivery"] = "geaccepteerd om afgeleverd te worden";
-App::$strings["updated"] = "geüpdatet";
-App::$strings["update ignored"] = "update genegeerd";
-App::$strings["permission denied"] = "toegang geweigerd";
-App::$strings["recipient not found"] = "ontvanger niet gevonden";
-App::$strings["mail recalled"] = "Privébericht ingetrokken";
-App::$strings["duplicate mail received"] = "dubbel privébericht ontvangen";
-App::$strings["mail delivered"] = "privébericht afgeleverd";
+App::$strings["Item not found."] = "Item niet gevonden.";
App::$strings["Item not found"] = "Item niet gevonden";
-App::$strings["Delete block?"] = "Blok verwijderen";
-App::$strings["Bold"] = "Vet";
-App::$strings["Italic"] = "Cursief";
-App::$strings["Underline"] = "Onderstrepen";
-App::$strings["Quote"] = "Citeren";
-App::$strings["Code"] = "Broncode";
-App::$strings["Attach file"] = "Bestand toevoegen";
-App::$strings["Permission settings"] = "Permissies";
-App::$strings["Public post"] = "Openbaar bericht";
App::$strings["Title (optional)"] = "Titel (optioneel)";
-App::$strings["Categories (optional, comma-separated list)"] = "Categorieën (optioneel, door komma's gescheiden lijst)";
-App::$strings["Example: bob@example.com, mary@example.com"] = "Voorbeeld: bob@voorbeeld.nl, mary@voorbeeld.be";
-App::$strings["Preview"] = "Voorvertoning";
App::$strings["Edit Block"] = "Blok bewerken";
-App::$strings["Delete layout?"] = "Lay-out verwijderen?";
-App::$strings["Upload photo"] = "Foto uploaden";
-App::$strings["Insert YouTube video"] = "YouTube-video invoegen";
-App::$strings["Insert Vorbis [.ogg] video"] = "Vorbis-video [.ogg] invoegen";
-App::$strings["Insert Vorbis [.ogg] audio"] = "Vorbis-audio [.ogg] invoegen";
-App::$strings["Set your location"] = "Locatie instellen";
-App::$strings["Clear browser location"] = "Locatie van webbrowser wissen";
-App::$strings["Please wait"] = "Even wachten";
-App::$strings["Layout Description (Optional)"] = "Lay-out-omschrijving (optioneel)";
-App::$strings["Layout Name"] = "Naam lay-out";
-App::$strings["Set expiration date"] = "Verloopdatum instellen";
-App::$strings["Edit Layout"] = "Lay-out bewerken";
+App::$strings["No channel."] = "Geen kanaal.";
+App::$strings["Common connections"] = "Veel voorkomende connecties";
+App::$strings["No connections in common."] = "Geen gemeenschappelijke connecties.";
+App::$strings["Blocked"] = "Geblokkeerd";
+App::$strings["Ignored"] = "Genegeerd";
+App::$strings["Hidden"] = "Verborgen";
+App::$strings["Archived"] = "Gearchiveerd";
+App::$strings["New"] = "Nieuw";
+App::$strings["New Connections"] = "Nieuwe connecties";
+App::$strings["Show pending (new) connections"] = "Nog te accepteren (nieuwe) connecties weergeven";
+App::$strings["All Connections"] = "Alle connecties";
+App::$strings["Show all connections"] = "Toon alle connecties";
+App::$strings["Only show blocked connections"] = "Toon alleen geblokkeerde connecties";
+App::$strings["Only show ignored connections"] = "Toon alleen genegeerde connecties";
+App::$strings["Only show archived connections"] = "Toon alleen gearchiveerde connecties";
+App::$strings["Only show hidden connections"] = "Toon alleen verborgen connecties";
+App::$strings["Pending approval"] = "Moet nog geaccepteerd worden";
+App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
+App::$strings["Edit connection"] = "Connectie bewerken";
+App::$strings["Delete connection"] = "Connectie verwijderen";
+App::$strings["Channel address"] = "Kanaaladres";
+App::$strings["Network"] = "Netwerk";
+App::$strings["Status"] = "Status";
+App::$strings["Connected"] = "Verbonden";
+App::$strings["Approve connection"] = "Connectie accepteren";
+App::$strings["Approve"] = "Goedkeuren";
+App::$strings["Ignore connection"] = "Connectie negeren";
+App::$strings["Recent activity"] = "Recente activiteit";
+App::$strings["Connections"] = "Connecties";
+App::$strings["Search"] = "Zoeken";
+App::$strings["Search your connections"] = "Doorzoek jouw connecties";
+App::$strings["Connections search"] = "Connecties zoeken";
+App::$strings["Image uploaded but image cropping failed."] = "Afbeelding geüpload, maar afbeelding kon niet worden bijgesneden. ";
+App::$strings["Cover Photos"] = "Omslagfoto's";
+App::$strings["Image resize failed."] = "Afbeelding kon niet van grootte veranderd worden.";
+App::$strings["Unable to process image"] = "Afbeelding kan niet verwerkt worden";
+App::$strings["Image upload failed."] = "Uploaden afbeelding mislukt";
+App::$strings["Unable to process image."] = "Niet in staat om afbeelding te verwerken.";
+App::$strings["female"] = "vrouw";
+App::$strings["%1\$s updated her %2\$s"] = "%1\$s heeft haar %2\$s bijgewerkt";
+App::$strings["male"] = "man";
+App::$strings["%1\$s updated his %2\$s"] = "%1\$s heeft zijn %2\$s bijgewerkt";
+App::$strings["%1\$s updated their %2\$s"] = "De %2\$s van %1\$s is bijgewerkt";
+App::$strings["cover photo"] = "omslagfoto";
+App::$strings["Photo not available."] = "Foto niet beschikbaar.";
+App::$strings["Upload File:"] = "Bestand uploaden:";
+App::$strings["Select a profile:"] = "Kies een profiel:";
+App::$strings["Upload Cover Photo"] = "Omslagfoto uploaden";
+App::$strings["or"] = "of";
+App::$strings["skip this step"] = "sla deze stap over";
+App::$strings["select a photo from your photo albums"] = "Kies een foto uit jouw fotoalbums";
+App::$strings["Crop Image"] = "Afbeelding bijsnijden";
+App::$strings["Please adjust the image cropping for optimum viewing."] = "Snij de afbeelding zo uit dat deze optimaal wordt weergegeven.";
+App::$strings["Done Editing"] = "Klaar met bewerken";
App::$strings["Item is not editable"] = "Item is niet te bewerken";
-App::$strings["Expires YYYY-MM-DD HH:MM"] = "Verloopt op DD-MM-YYYY om HH:MM";
-App::$strings["Delete item?"] = "Item verwijderen?";
-App::$strings["Toggle voting"] = "Peiling in- of uitschakelen";
-App::$strings["OK"] = "OK";
-App::$strings["Cancel"] = "Annuleren";
App::$strings["Edit post"] = "Bericht bewerken";
-App::$strings["Delete webpage?"] = "Webpagina verwijderen?";
-App::$strings["Page link title"] = "Titel van paginalink";
-App::$strings["Edit Webpage"] = "Webpagina bewerken";
App::$strings["Calendar entries imported."] = "Agenda-items geïmporteerd.";
App::$strings["No calendar entries found."] = "Geen agenda-items gevonden.";
App::$strings["Event can not end before it has started."] = "Gebeurtenis kan niet eindigen voordat het is begonnen";
@@ -561,6 +265,7 @@ App::$strings["Event not found."] = "Gebeurtenis niet gevonden";
App::$strings["event"] = "gebeurtenis";
App::$strings["Edit event title"] = "Titel bewerken";
App::$strings["Event title"] = "Titel";
+App::$strings["Required"] = "Vereist";
App::$strings["Categories (comma-separated list)"] = "Categorieën (door komma's gescheiden lijst)";
App::$strings["Edit Category"] = "Categorie";
App::$strings["Category"] = "Categorie";
@@ -572,9 +277,12 @@ App::$strings["Finish date and time"] = "Einddatum en -tijd";
App::$strings["Adjust for viewer timezone"] = "Aanpassen aan de tijdzone van wie deze gebeurtenis bekijkt";
App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Belangrijk voor gebeurtenissen die op een bepaalde locatie plaatsvinden. Niet praktisch voor wereldwijde feestdagen.";
App::$strings["Edit Description"] = "Omschrijving bewerken";
+App::$strings["Description"] = "Omschrijving";
App::$strings["Edit Location"] = "Locatie bewerken";
App::$strings["Location"] = "Locatie";
App::$strings["Share this event"] = "Deel deze gebeurtenis";
+App::$strings["Preview"] = "Voorvertoning";
+App::$strings["Permission settings"] = "Permissies";
App::$strings["Advanced Options"] = "Geavanceerde opties";
App::$strings["Edit event"] = "Gebeurtenis bewerken";
App::$strings["Delete event"] = "Gebeurtenis verwijderen";
@@ -582,26 +290,34 @@ App::$strings["calendar"] = "agenda";
App::$strings["Event removed"] = "Gebeurtenis verwijderd";
App::$strings["Failed to remove event"] = "Verwijderen gebeurtenis mislukt";
App::$strings["Photos"] = "Foto's";
-App::$strings["Share content from Firefox to \$Projectname"] = "Deel webpagina's vanuit Firefox met ";
-App::$strings["Activate the Firefox \$Projectname provider"] = "Activeer de \$Projectname-service in Firefox";
+App::$strings["Cancel"] = "Annuleren";
+App::$strings["This site is not a directory server"] = "Deze hub is geen kanalengidshub (directoryserver)";
+App::$strings["This directory server requires an access token"] = "Deze kanalengidshub (directoryserver) heeft een toegangs-token nodig";
App::$strings["Save to Folder:"] = "Bewaar in map: ";
App::$strings["- select -"] = "- kies map -";
-App::$strings["Permission Denied."] = "Toegang geweigerd";
-App::$strings["File not found."] = "Bestand niet gevonden.";
-App::$strings["Edit file permissions"] = "Bestandsrechten bewerken";
-App::$strings["Set/edit permissions"] = "Rechten instellen/bewerken";
-App::$strings["Include all files and sub folders"] = "Toepassen op alle bestanden en submappen";
-App::$strings["Return to file list"] = "Terugkeren naar bestandlijst ";
-App::$strings["Copy/paste this code to attach file to a post"] = "Kopieer/plak deze code om het bestand aan een bericht te koppelen";
-App::$strings["Copy/paste this URL to link file from a web page"] = "Kopieer/plak deze URL om het bestand aan een externe webpagina te koppelen";
-App::$strings["Share this file"] = "Dit bestand delen";
-App::$strings["Show URL to this file"] = "Toon URL van dit bestand";
-App::$strings["Notify your contacts about this file"] = "Jouw connecties over dit bestand berichten";
+App::$strings["Save"] = "Opslaan";
+App::$strings["Invalid message"] = "Ongeldig bericht";
+App::$strings["no results"] = "geen resultaten";
+App::$strings["Delivery report for %1\$s"] = "Afleveringsrapport voor %1\$s";
+App::$strings["channel sync processed"] = "kanaalsync verwerkt";
+App::$strings["queued"] = "in wachtrij";
+App::$strings["posted"] = "verstuurd";
+App::$strings["accepted for delivery"] = "geaccepteerd om afgeleverd te worden";
+App::$strings["updated"] = "geüpdatet";
+App::$strings["update ignored"] = "update genegeerd";
+App::$strings["permission denied"] = "toegang geweigerd";
+App::$strings["recipient not found"] = "ontvanger niet gevonden";
+App::$strings["mail recalled"] = "Privébericht ingetrokken";
+App::$strings["duplicate mail received"] = "dubbel privébericht ontvangen";
+App::$strings["mail delivered"] = "privébericht afgeleverd";
+App::$strings["Layout Name"] = "Naam lay-out";
+App::$strings["Layout Description (Optional)"] = "Lay-out-omschrijving (optioneel)";
+App::$strings["Edit Layout"] = "Lay-out bewerken";
+App::$strings["Page link"] = "Paginalink";
+App::$strings["Edit Webpage"] = "Webpagina bewerken";
App::$strings["Channel added."] = "Kanaal toegevoegd.";
-App::$strings["Contact not found."] = "Contact niet gevonden";
-App::$strings["Friend suggestion sent."] = "Kanaalvoorstel verzonden.";
-App::$strings["Suggest Friends"] = "Kanalen voorstellen";
-App::$strings["Suggest a friend for %s"] = "Stel een kanaal voor aan %s";
+App::$strings["network"] = "netwerk";
+App::$strings["RSS"] = "RSS";
App::$strings["Privacy group created."] = "Privacygroep aangemaakt";
App::$strings["Could not create privacy group."] = "Kon privacygroep niet aanmaken";
App::$strings["Privacy group not found."] = "Privacygroep niet gevonden";
@@ -615,39 +331,29 @@ App::$strings["Privacy group editor"] = "Privacygroep bewerken";
App::$strings["Members"] = "Kanalen";
App::$strings["All Connected Channels"] = "Alle kanaalconnecties";
App::$strings["Click on a channel to add or remove."] = "Klik op een kanaal om deze toe te voegen of te verwijderen.";
+App::$strings["Share content from Firefox to \$Projectname"] = "Deel webpagina's vanuit Firefox met ";
+App::$strings["Activate the Firefox \$Projectname provider"] = "Activeer de \$Projectname-service in Firefox";
+App::$strings["Authorize application connection"] = "Geef toestemming voor applicatiekoppeling";
+App::$strings["Return to your app and insert this Securty Code:"] = "Ga terug naar je app en voeg deze beveiligingscode in:";
+App::$strings["Please login to continue."] = "Inloggen om verder te kunnen gaan.";
+App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Wil je deze applicatie toestemming geven om jouw berichten en connecties te zien, en/of nieuwe berichten voor jou te plaatsen?";
App::$strings["Documentation Search"] = "Zoek documentatie";
App::$strings["Help:"] = "Hulp:";
App::$strings["Help"] = "Hulp";
App::$strings["\$Projectname Documentation"] = "\$Projectname-documentatie";
-App::$strings["\$Projectname"] = "\$Projectname";
-App::$strings["Welcome to %s"] = "Welkom op %s";
-App::$strings["First Name"] = "Voornaam";
-App::$strings["Last Name"] = "Achternaam";
-App::$strings["Nickname"] = "Bijnaam";
-App::$strings["Full Name"] = "Volledige naam";
-App::$strings["Profile Photo"] = "Profielfoto";
-App::$strings["Profile Photo 16px"] = "Profielfoto 16px";
-App::$strings["Profile Photo 32px"] = "Profielfoto 32px";
-App::$strings["Profile Photo 48px"] = "Profielfoto 48px";
-App::$strings["Profile Photo 64px"] = "Profielfoto 64px";
-App::$strings["Profile Photo 80px"] = "Profielfoto 80px";
-App::$strings["Profile Photo 128px"] = "Profielfoto 128px";
-App::$strings["Timezone"] = "Tijdzone";
-App::$strings["Homepage URL"] = "URL homepagina";
-App::$strings["Language"] = "Taal";
-App::$strings["Birth Year"] = "Geboortejaar";
-App::$strings["Birth Month"] = "Geboortemaand";
-App::$strings["Birth Day"] = "Geboortedag";
-App::$strings["Birthdate"] = "Geboortedatum";
-App::$strings["Gender"] = "Geslacht";
-App::$strings["Male"] = "Man";
-App::$strings["Female"] = "Vrouw";
-App::$strings["webpage"] = "Webpagina";
-App::$strings["block"] = "blok";
-App::$strings["layout"] = "lay-out";
-App::$strings["menu"] = "menu";
-App::$strings["%s element installed"] = "%s onderdeel geïnstalleerd";
-App::$strings["%s element installation failed"] = "Installatie %s-element mislukt";
+App::$strings["Permission Denied."] = "Toegang geweigerd";
+App::$strings["File not found."] = "Bestand niet gevonden.";
+App::$strings["Edit file permissions"] = "Bestandsrechten bewerken";
+App::$strings["Set/edit permissions"] = "Rechten instellen/bewerken";
+App::$strings["Include all files and sub folders"] = "Toepassen op alle bestanden en submappen";
+App::$strings["Return to file list"] = "Terugkeren naar bestandlijst ";
+App::$strings["Copy/paste this code to attach file to a post"] = "Kopieer/plak deze code om het bestand aan een bericht te koppelen";
+App::$strings["Copy/paste this URL to link file from a web page"] = "Kopieer/plak deze URL om het bestand aan een externe webpagina te koppelen";
+App::$strings["Share this file"] = "Dit bestand delen";
+App::$strings["Show URL to this file"] = "Toon URL van dit bestand";
+App::$strings["Notify your contacts about this file"] = "Jouw connecties over dit bestand berichten";
+App::$strings["Apps"] = "Apps";
+App::$strings["Item not available."] = "Item is niet aanwezig.";
App::$strings["Your service plan only allows %d channels."] = "Jouw abonnement staat maar %d kanalen toe.";
App::$strings["Nothing to import."] = "Niets gevonden om te importeren";
App::$strings["Unable to download data from old server"] = "Niet in staat om gegevens van de oude hub te downloaden";
@@ -668,28 +374,6 @@ App::$strings["For either option, please choose whether to make this hub your ne
App::$strings["Make this hub my primary location"] = "Stel deze hub als mijn primaire locatie in";
App::$strings["Import existing posts if possible (experimental - limited by available memory"] = "Importeer bestaande berichten wanneer mogelijk (experimenteel - afhankelijk van beschikbaar servergeheugen)";
App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Dit proces kan enkele minuten in beslag nemen. Klik maar één keer op opslaan en verlaat deze pagina niet alvorens het proces is voltooid.";
-App::$strings["Import completed"] = "Importeren voltooid";
-App::$strings["Import Items"] = "Importeer items";
-App::$strings["Use this form to import existing posts and content from an export file."] = "Gebruik dit formulier om bestaande berichten en andere inhoud vanuit een exportbestand te importeren.";
-App::$strings["Total invitation limit exceeded."] = "Limiet voor aantal uitnodigingen overschreden.";
-App::$strings["%s : Not a valid email address."] = "%s : Geen geldig e-mailadres.";
-App::$strings["Please join us on \$Projectname"] = "Uitnodiging voor \$Projectname";
-App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Limiet voor aantal uitnodigingen overschreden. Neem contact op met je hub-beheerder.";
-App::$strings["%s : Message delivery failed."] = "%s: Aflevering bericht mislukt.";
-App::$strings["%d message sent."] = array(
- 0 => "%d bericht verzonden.",
- 1 => "%d berichten verzonden.",
-);
-App::$strings["You have no more invitations available"] = "Je hebt geen uitnodigingen meer beschikbaar";
-App::$strings["Send invitations"] = "Uitnodigingen verzenden";
-App::$strings["Enter email addresses, one per line:"] = "Voer e-mailadressen in, één per regel:";
-App::$strings["Your message:"] = "Jouw bericht:";
-App::$strings["Please join my community on \$Projectname."] = "Hierbij nodig ik je uit om mij, en andere vrienden en kennissen, op \$Projectname te vergezellen. Lees meer over \$Projectname op http://hubzilla.org";
-App::$strings["You will need to supply this invitation code:"] = "Je moet deze uitnodigingscode opgeven:";
-App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Registreer je op een willekeurige \$Projectname-hub (ze zijn allemaal onderling met elkaar verbonden):";
-App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Nadat je bent ingelogd en een kanaal hebt aangemaakt kan je mijn \$Projectname-kanaaladres in het zoekveld invullen:";
-App::$strings["or visit"] = "of bezoek";
-App::$strings["3. Click [Connect]"] = "3. Klik op [+ Verbinden]";
App::$strings["Unable to locate original post."] = "Niet in staat om de originele locatie van het bericht te vinden. ";
App::$strings["Empty post discarded."] = "Leeg bericht geannuleerd";
App::$strings["Executable content type not permitted to this channel."] = "Uitvoerbare bestanden zijn niet toegestaan op dit kanaal.";
@@ -702,6 +386,36 @@ App::$strings["Layouts"] = "Lay-outs";
App::$strings["Comanche page description language help"] = "Hulp met de paginabeschrijvingstaal Comanche";
App::$strings["Layout Description"] = "Lay-out-omschrijving";
App::$strings["Download PDL file"] = "Download PDL-bestand";
+App::$strings["\$Projectname"] = "\$Projectname";
+App::$strings["Welcome to %s"] = "Welkom op %s";
+App::$strings["First Name"] = "Voornaam";
+App::$strings["Last Name"] = "Achternaam";
+App::$strings["Nickname"] = "Bijnaam";
+App::$strings["Full Name"] = "Volledige naam";
+App::$strings["Email"] = "E-mail";
+App::$strings["Profile Photo"] = "Profielfoto";
+App::$strings["Profile Photo 16px"] = "Profielfoto 16px";
+App::$strings["Profile Photo 32px"] = "Profielfoto 32px";
+App::$strings["Profile Photo 48px"] = "Profielfoto 48px";
+App::$strings["Profile Photo 64px"] = "Profielfoto 64px";
+App::$strings["Profile Photo 80px"] = "Profielfoto 80px";
+App::$strings["Profile Photo 128px"] = "Profielfoto 128px";
+App::$strings["Timezone"] = "Tijdzone";
+App::$strings["Homepage URL"] = "URL homepagina";
+App::$strings["Language"] = "Taal";
+App::$strings["Birth Year"] = "Geboortejaar";
+App::$strings["Birth Month"] = "Geboortemaand";
+App::$strings["Birth Day"] = "Geboortedag";
+App::$strings["Birthdate"] = "Geboortedatum";
+App::$strings["Gender"] = "Geslacht";
+App::$strings["Male"] = "Man";
+App::$strings["Female"] = "Vrouw";
+App::$strings["webpage"] = "Webpagina";
+App::$strings["block"] = "blok";
+App::$strings["layout"] = "lay-out";
+App::$strings["menu"] = "menu";
+App::$strings["%s element installed"] = "%s onderdeel geïnstalleerd";
+App::$strings["%s element installation failed"] = "Installatie %s-element mislukt";
App::$strings["Like/Dislike"] = "Leuk/niet leuk";
App::$strings["This action is restricted to members."] = "Deze actie kan alleen door \$Projectname-leden worden uitgevoerd.";
App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "Je dient <a href=\"rmagic\">in te loggen met je \$Projectname-account</a> of <a href=\"register\">een nieuw \$Projectname-account aan te maken</a> om verder te kunnen gaan.";
@@ -722,6 +436,28 @@ App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%1\$s is niet aanwezig
App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%1\$s is mogelijk aanwezig op %2\$s's %3\$s";
App::$strings["Action completed."] = "Actie voltooid";
App::$strings["Thank you."] = "Bedankt";
+App::$strings["Import completed"] = "Importeren voltooid";
+App::$strings["Import Items"] = "Importeer items";
+App::$strings["Use this form to import existing posts and content from an export file."] = "Gebruik dit formulier om bestaande berichten en andere inhoud vanuit een exportbestand te importeren.";
+App::$strings["Total invitation limit exceeded."] = "Limiet voor aantal uitnodigingen overschreden.";
+App::$strings["%s : Not a valid email address."] = "%s : Geen geldig e-mailadres.";
+App::$strings["Please join us on \$Projectname"] = "Uitnodiging voor \$Projectname";
+App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Limiet voor aantal uitnodigingen overschreden. Neem contact op met je hub-beheerder.";
+App::$strings["%s : Message delivery failed."] = "%s: Aflevering bericht mislukt.";
+App::$strings["%d message sent."] = array(
+ 0 => "%d bericht verzonden.",
+ 1 => "%d berichten verzonden.",
+);
+App::$strings["You have no more invitations available"] = "Je hebt geen uitnodigingen meer beschikbaar";
+App::$strings["Send invitations"] = "Uitnodigingen verzenden";
+App::$strings["Enter email addresses, one per line:"] = "Voer e-mailadressen in, één per regel:";
+App::$strings["Your message:"] = "Jouw bericht:";
+App::$strings["Please join my community on \$Projectname."] = "Hierbij nodig ik je uit om mij, en andere vrienden en kennissen, op \$Projectname te vergezellen. Lees meer over \$Projectname op http://hubzilla.org";
+App::$strings["You will need to supply this invitation code:"] = "Je moet deze uitnodigingscode opgeven:";
+App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Registreer je op een willekeurige \$Projectname-hub (ze zijn allemaal onderling met elkaar verbonden):";
+App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Nadat je bent ingelogd en een kanaal hebt aangemaakt kan je mijn \$Projectname-kanaaladres in het zoekveld invullen:";
+App::$strings["or visit"] = "of bezoek";
+App::$strings["3. Click [Connect]"] = "3. Klik op [+ Verbinden]";
App::$strings["Remote privacy information not available."] = "Privacy-informatie op afstand niet beschikbaar.";
App::$strings["Visible to:"] = "Zichtbaar voor:";
App::$strings["Location not found."] = "Locatie niet gevonden.";
@@ -730,28 +466,13 @@ App::$strings["Please select another location to become primary before removing
App::$strings["Syncing locations"] = "Locaties synchronizeren";
App::$strings["No locations found."] = "Geen locaties gevonden.";
App::$strings["Manage Channel Locations"] = "Kanaallocaties beheren";
+App::$strings["Address"] = "Kanaaladres";
App::$strings["Primary"] = "Primair";
App::$strings["Drop"] = "Verwijderen";
App::$strings["Sync Now"] = "Nu synchroniseren";
App::$strings["Please wait several minutes between consecutive operations."] = "Wacht enkele minuten tussen opeenvolgende handelingen.";
App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Wij adviseren, wanneer dit (nog) mogelijk is, de locatie te verwijderen door op de hub van de kloon in te loggen en het kanaal daar te verwijderen.";
App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Gebruik dit formulier om de locatie te verwijderen wanneer de hub van de kloon niet meer operationeel is.";
-App::$strings["No valid account found."] = "Geen geldige account gevonden.";
-App::$strings["Password reset request issued. Check your email."] = "Het verzoek om je wachtwoord opnieuw in te stellen is behandeld. Controleer je e-mail.";
-App::$strings["Site Member (%s)"] = "Lid van hub (%s)";
-App::$strings["Password reset requested at %s"] = "Verzoek tot het opnieuw instellen van een wachtwoord op %s is ingediend";
-App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Het verzoek kon niet worden geverifieerd. (Mogelijk heb je al eerder een verzoek ingediend.) Opnieuw instellen van wachtwoord is mislukt.";
-App::$strings["Password Reset"] = "Wachtwoord vergeten?";
-App::$strings["Your password has been reset as requested."] = "Jouw wachtwoord is opnieuw ingesteld zoals je had verzocht.";
-App::$strings["Your new password is"] = "Jouw nieuwe wachtwoord is";
-App::$strings["Save or copy your new password - and then"] = "Kopieer of sla je nieuwe wachtwoord op - en";
-App::$strings["click here to login"] = "klik dan hier om in te loggen";
-App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Jouw wachtwoord kan worden veranderd onder <em>instellingen</em>, nadat je succesvol bent ingelogd.";
-App::$strings["Your password has changed at %s"] = "Jouw wachtwoord op %s is veranderd";
-App::$strings["Forgot your Password?"] = "Wachtwoord vergeten?";
-App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Voer je e-mailadres in en verstuur deze om je wachtwoord opnieuw in te stellen. Controleer hierna hier je e-mail voor verdere instructies.";
-App::$strings["Email Address"] = "E-mailadres";
-App::$strings["Reset"] = "Opnieuw instellen";
App::$strings["Hub not found."] = "Hub niet gevonden.";
App::$strings["Unable to lookup recipient."] = "Niet in staat om ontvanger op te zoeken.";
App::$strings["Unable to communicate with requested channel."] = "Niet in staat om met het aangevraagde kanaal te communiceren.";
@@ -760,11 +481,14 @@ App::$strings["Selected channel has private message restrictions. Send failed."]
App::$strings["Messages"] = "Berichten";
App::$strings["Message recalled."] = "Bericht ingetrokken.";
App::$strings["Conversation removed."] = "Conversatie verwijderd";
+App::$strings["Expires YYYY-MM-DD HH:MM"] = "Verloopt op DD-MM-YYYY om HH:MM";
App::$strings["Requested channel is not in this network"] = "Opgevraagd kanaal is niet in dit netwerk beschikbaar";
App::$strings["Send Private Message"] = "Privébericht versturen";
App::$strings["To:"] = "Aan:";
App::$strings["Subject:"] = "Onderwerp:";
+App::$strings["Attach file"] = "Bestand toevoegen";
App::$strings["Send"] = "Verzenden";
+App::$strings["Set expiration date"] = "Verloopdatum instellen";
App::$strings["Delete message"] = "Bericht verwijderen";
App::$strings["Delivery report"] = "Afleveringsrapport";
App::$strings["Recall message"] = "Bericht intrekken";
@@ -783,10 +507,22 @@ App::$strings["Make Default"] = "Als standaard instellen";
App::$strings["%d new messages"] = "%d nieuwe berichten";
App::$strings["%d new introductions"] = "%d nieuwe connectieverzoeken";
App::$strings["Delegated Channel"] = "Uitbesteed kanaal";
-App::$strings["Profile Match"] = "Profielovereenkomst";
-App::$strings["No keywords to match. Please add keywords to your default profile."] = "Je hebt geen trefwoorden waarmee overeenkomsten gevonden kunnen worden. Voeg enkele trefwoorden aan je standaardprofiel toe.";
-App::$strings["is interested in:"] = "is geïnteresseerd in:";
-App::$strings["No matches"] = "Geen overeenkomsten";
+App::$strings["No valid account found."] = "Geen geldige account gevonden.";
+App::$strings["Password reset request issued. Check your email."] = "Het verzoek om je wachtwoord opnieuw in te stellen is behandeld. Controleer je e-mail.";
+App::$strings["Site Member (%s)"] = "Lid van hub (%s)";
+App::$strings["Password reset requested at %s"] = "Verzoek tot het opnieuw instellen van een wachtwoord op %s is ingediend";
+App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Het verzoek kon niet worden geverifieerd. (Mogelijk heb je al eerder een verzoek ingediend.) Opnieuw instellen van wachtwoord is mislukt.";
+App::$strings["Password Reset"] = "Wachtwoord vergeten?";
+App::$strings["Your password has been reset as requested."] = "Jouw wachtwoord is opnieuw ingesteld zoals je had verzocht.";
+App::$strings["Your new password is"] = "Jouw nieuwe wachtwoord is";
+App::$strings["Save or copy your new password - and then"] = "Kopieer of sla je nieuwe wachtwoord op - en";
+App::$strings["click here to login"] = "klik dan hier om in te loggen";
+App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Jouw wachtwoord kan worden veranderd onder <em>instellingen</em>, nadat je succesvol bent ingelogd.";
+App::$strings["Your password has changed at %s"] = "Jouw wachtwoord op %s is veranderd";
+App::$strings["Forgot your Password?"] = "Wachtwoord vergeten?";
+App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Voer je e-mailadres in en verstuur deze om je wachtwoord opnieuw in te stellen. Controleer hierna hier je e-mail voor verdere instructies.";
+App::$strings["Email Address"] = "E-mailadres";
+App::$strings["Reset"] = "Opnieuw instellen";
App::$strings["Unable to update menu."] = "Niet in staat om menu aan te passen";
App::$strings["Unable to create menu."] = "Niet in staat om menu aan te maken.";
App::$strings["Menu Name"] = "Menunaam";
@@ -811,6 +547,22 @@ App::$strings["Menu title"] = "Titel van menu";
App::$strings["Menu title as seen by others"] = "Titel van menu zoals anderen dat zien.";
App::$strings["Allow bookmarks"] = "Bladwijzers toestaan";
App::$strings["Not found."] = "Niet gevonden.";
+App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s is %2\$s";
+App::$strings["Mood"] = "Stemming";
+App::$strings["Set your current mood and tell your friends"] = "Noteer je huidige stemming en toon het aan je connecties";
+App::$strings["Profile Match"] = "Profielovereenkomst";
+App::$strings["No keywords to match. Please add keywords to your default profile."] = "Je hebt geen trefwoorden waarmee overeenkomsten gevonden kunnen worden. Voeg enkele trefwoorden aan je standaardprofiel toe.";
+App::$strings["is interested in:"] = "is geïnteresseerd in:";
+App::$strings["No matches"] = "Geen overeenkomsten";
+App::$strings["No such group"] = "Collectie niet gevonden";
+App::$strings["No such channel"] = "Niet zo'n kanaal";
+App::$strings["forum"] = "forum";
+App::$strings["Search Results For:"] = "Zoekresultaten voor:";
+App::$strings["Privacy group is empty"] = "Privacygroep is leeg";
+App::$strings["Privacy group: "] = "Privacygroep: ";
+App::$strings["Invalid connection."] = "Ongeldige connectie.";
+App::$strings["No more system notifications."] = "Geen systeemnotificaties meer.";
+App::$strings["System Notifications"] = "Systeemnotificaties";
App::$strings["Unable to create element."] = "Niet in staat om onderdeel aan te maken.";
App::$strings["Unable to update menu element."] = "Menu-onderdeel kan niet worden geüpdatet.";
App::$strings["Unable to add menu element."] = "Menu-onderdeel kan niet worden toegevoegd.";
@@ -840,16 +592,6 @@ App::$strings["Menu item deleted."] = "Menu-item verwijderd.";
App::$strings["Menu item could not be deleted."] = "Menu-item kon niet worden verwijderd.";
App::$strings["Edit Menu Element"] = "Menu-element bewerken";
App::$strings["Link text"] = "Linktekst";
-App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s is %2\$s";
-App::$strings["Mood"] = "Stemming";
-App::$strings["Set your current mood and tell your friends"] = "Noteer je huidige stemming en toon het aan je connecties";
-App::$strings["No such group"] = "Collectie niet gevonden";
-App::$strings["No such channel"] = "Niet zo'n kanaal";
-App::$strings["forum"] = "forum";
-App::$strings["Search Results For:"] = "Zoekresultaten voor:";
-App::$strings["Privacy group is empty"] = "Privacygroep is leeg";
-App::$strings["Privacy group: "] = "Privacygroep: ";
-App::$strings["Invalid connection."] = "Ongeldige connectie.";
App::$strings["Name or caption"] = "Naam";
App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""] = "Voorbeelden: \"Jan Pietersen\", \"Willems weblog\", \"Computerforum\"";
App::$strings["Choose a short nickname"] = "Korte bijnaam";
@@ -862,22 +604,7 @@ App::$strings["A channel is your identity on this network. It can represent a pe
App::$strings["or <a href=\"import\">import an existing channel</a> from another location."] = "Of <a href=\"import\">importeer een bestaand kanaal</a> vanaf een andere locatie";
App::$strings["Invalid request identifier."] = "Ongeldige verzoek identificator (request identifier)";
App::$strings["Discard"] = "Annuleren";
-App::$strings["No more system notifications."] = "Geen systeemnotificaties meer.";
-App::$strings["System Notifications"] = "Systeemnotificaties";
App::$strings["Mark all system notifications seen"] = "Markeer alle systeemnotificaties als bekeken";
-App::$strings["Unable to find your hub."] = "Niet in staat om je hub te vinden";
-App::$strings["Post successful."] = "Verzenden bericht geslaagd.";
-App::$strings["OpenID protocol error. No ID returned."] = "OpenID-protocolfout. Geen ID terugontvangen.";
-App::$strings["Login failed."] = "Inloggen mislukt.";
-App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
-App::$strings["This setting requires special processing and editing has been blocked."] = "Deze instelling vereist een speciaal proces en bewerken is geblokkeerd.";
-App::$strings["Configuration Editor"] = "Configuratiebewerker";
-App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Waarschuwing: het veranderen van sommige instellingen kunnen jouw kanaal onklaar maken. Verlaat deze pagina, tenzij je weet waar je mee bezig bent en voldoende kennis bezit over hoe je deze functies moet gebruiken. ";
-App::$strings["Layout updated."] = "Lay-out bijgewerkt.";
-App::$strings["Edit System Page Description"] = "Systeempagina's bewerken";
-App::$strings["Layout not found."] = "Lay-out niet gevonden.";
-App::$strings["Module Name:"] = "Modulenaam:";
-App::$strings["Layout Help"] = "Lay-out-hulp";
App::$strings["Page owner information could not be retrieved."] = "Informatie over de pagina-eigenaar werd niet ontvangen.";
App::$strings["Profile Photos"] = "Profielfoto's";
App::$strings["Album not found."] = "Album niet gevonden.";
@@ -918,6 +645,7 @@ App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Voorbeeld:
App::$strings["Flag as adult in album view"] = "Markeer als voor volwassenen in albumweergave";
App::$strings["I like this (toggle)"] = "Vind ik leuk";
App::$strings["I don't like this (toggle)"] = "Vind ik niet leuk";
+App::$strings["Please wait"] = "Even wachten";
App::$strings["This is you"] = "Dit ben jij";
App::$strings["Comment"] = "Reactie";
App::$strings["__ctx:title__ Likes"] = "vinden dit leuk";
@@ -950,6 +678,19 @@ App::$strings["added your channel"] = "voegde jouw kanaal toe";
App::$strings["g A l F d"] = "G:i, l d F";
App::$strings["[today]"] = "[vandaag]";
App::$strings["posted an event"] = "plaatste een gebeurtenis";
+App::$strings["Unable to find your hub."] = "Niet in staat om je hub te vinden";
+App::$strings["Post successful."] = "Verzenden bericht geslaagd.";
+App::$strings["OpenID protocol error. No ID returned."] = "OpenID-protocolfout. Geen ID terugontvangen.";
+App::$strings["Login failed."] = "Inloggen mislukt.";
+App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
+App::$strings["This setting requires special processing and editing has been blocked."] = "Deze instelling vereist een speciaal proces en bewerken is geblokkeerd.";
+App::$strings["Configuration Editor"] = "Configuratiebewerker";
+App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Waarschuwing: het veranderen van sommige instellingen kunnen jouw kanaal onklaar maken. Verlaat deze pagina, tenzij je weet waar je mee bezig bent en voldoende kennis bezit over hoe je deze functies moet gebruiken. ";
+App::$strings["Layout updated."] = "Lay-out bijgewerkt.";
+App::$strings["Edit System Page Description"] = "Systeempagina's bewerken";
+App::$strings["Layout not found."] = "Lay-out niet gevonden.";
+App::$strings["Module Name:"] = "Modulenaam:";
+App::$strings["Layout Help"] = "Lay-out-hulp";
App::$strings["Poke"] = "Aanstoten";
App::$strings["Poke somebody"] = "Iemand aanstoten";
App::$strings["Poke/Prod"] = "Aanstoten/porren";
@@ -958,8 +699,6 @@ App::$strings["Recipient"] = "Ontvanger";
App::$strings["Choose what you wish to do to recipient"] = "Kies wat je met de ontvanger wil doen";
App::$strings["Make this post private"] = "Maak dit bericht privé";
App::$strings["Fetching URL returns error: %1\$s"] = "Ophalen URL gaf een foutmelding terug: %1\$s";
-App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Vernieuw de pagina met shift+R of shift+F5, of leeg je browserbuffer, wanneer de nieuwe foto niet meteen wordt weergegeven.";
-App::$strings["Upload Profile Photo"] = "Profielfoto uploaden";
App::$strings["Profile not found."] = "Profiel niet gevonden.";
App::$strings["Profile deleted."] = "Profiel verwijderd.";
App::$strings["Profile-"] = "Profiel-";
@@ -1026,6 +765,8 @@ App::$strings["Contact information and social networks"] = "Contactinformatie en
App::$strings["My other channels"] = "Mijn andere kanalen";
App::$strings["Profile Image"] = "Profielfoto";
App::$strings["Edit Profiles"] = "Bewerk profielen";
+App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Vernieuw de pagina met shift+R of shift+F5, of leeg je browserbuffer, wanneer de nieuwe foto niet meteen wordt weergegeven.";
+App::$strings["Upload Profile Photo"] = "Profielfoto uploaden";
App::$strings["Invalid profile identifier."] = "Ongeldige profiel-identificator";
App::$strings["Profile Visibility Editor"] = "Zichtbaarheid profiel ";
App::$strings["Profile"] = "Profiel";
@@ -1036,6 +777,8 @@ App::$strings["The listed hubs allow public registration for the \$Projectname n
App::$strings["Hub URL"] = "Hub-URL";
App::$strings["Access Type"] = "Toegangs-<br/>&nbsp;type";
App::$strings["Registration Policy"] = "Registratie-<br/>&nbsp;beleid";
+App::$strings["Stats"] = "Stats";
+App::$strings["Software"] = "Software";
App::$strings["Ratings"] = "Beoordelingen";
App::$strings["Rate"] = "Beoordeel";
App::$strings["Website:"] = "Website:";
@@ -1046,6 +789,261 @@ App::$strings["No ratings"] = "Geen beoordelingen";
App::$strings["Rating: "] = "Beoordeling: ";
App::$strings["Website: "] = "Website: ";
App::$strings["Description: "] = "Omschrijving: ";
+App::$strings["Theme settings updated."] = "Thema-instellingen bijgewerkt.";
+App::$strings["# Accounts"] = "# accounts";
+App::$strings["# blocked accounts"] = "# geblokkeerde accounts";
+App::$strings["# expired accounts"] = "# verlopen accounts";
+App::$strings["# expiring accounts"] = "# accounts die nog moeten verlopen";
+App::$strings["# Channels"] = "# Kanalen";
+App::$strings["# primary"] = "# primair";
+App::$strings["# clones"] = "# klonen";
+App::$strings["Message queues"] = "Berichtenwachtrij";
+App::$strings["Your software should be updated"] = "Jouw software moet worden bijgewerkt ";
+App::$strings["Administration"] = "Beheer";
+App::$strings["Summary"] = "Samenvatting";
+App::$strings["Registered accounts"] = "Geregistreerde accounts";
+App::$strings["Pending registrations"] = "Accounts die op goedkeuring wachten";
+App::$strings["Registered channels"] = "Geregistreerde kanalen";
+App::$strings["Active plugins"] = "Ingeschakelde plugins";
+App::$strings["Version"] = "Versie";
+App::$strings["Repository version (master)"] = "Versie repository (master)";
+App::$strings["Repository version (dev)"] = "Versie repository (dev)";
+App::$strings["Site settings updated."] = "Hub-instellingen bijgewerkt.";
+App::$strings["Default"] = "Standaard";
+App::$strings["mobile"] = "mobiel";
+App::$strings["experimental"] = "experimenteel";
+App::$strings["unsupported"] = "Niet ondersteund";
+App::$strings["Yes - with approval"] = "Ja - met goedkeuring";
+App::$strings["My site is not a public server"] = "Mijn \$Projectname-hub is niet openbaar";
+App::$strings["My site has paid access only"] = "Mijn \$Projectname-hub kent alleen betaalde toegang";
+App::$strings["My site has free access only"] = "Mijn \$Projectname-hub kent alleen gratis toegang";
+App::$strings["My site offers free accounts with optional paid upgrades"] = "Mijn \$Projectname-hub biedt gratis accounts aan met betaalde uitbreidingen als optie";
+App::$strings["Site"] = "Hub-instellingen";
+App::$strings["Registration"] = "Registratie";
+App::$strings["File upload"] = "Bestand uploaden";
+App::$strings["Policies"] = "Beleid";
+App::$strings["Advanced"] = "Geavanceerd";
+App::$strings["Site name"] = "Naam van deze \$Projectname-hub";
+App::$strings["Banner/Logo"] = "Banner/logo";
+App::$strings["Administrator Information"] = "Informatie over de beheerder van deze hub";
+App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Contactinformatie voor hub-beheerders. Getoond op pagina met hub-informatie. Er kan hier bbcode gebruikt worden.";
+App::$strings["System language"] = "Standaardtaal";
+App::$strings["System theme"] = "Standaardthema";
+App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Standaardthema voor \$Projectname-hub (kan door lid veranderd worden) - <a href='#' id='cnftheme'>verander thema-instellingen</a>";
+App::$strings["Mobile system theme"] = "Standaardthema voor mobiel";
+App::$strings["Theme for mobile devices"] = "Thema voor mobiele apparaten";
+App::$strings["Allow Feeds as Connections"] = "Sta feeds toe als connecties";
+App::$strings["(Heavy system resource usage)"] = "(sterk negatieve invloed op systeembronnen hub)";
+App::$strings["Maximum image size"] = "Maximale grootte van afbeeldingen";
+App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Maximale grootte in bytes voor afbeeldingen die worden geüpload. Standaard is 0, wat geen limiet betekend.";
+App::$strings["Does this site allow new member registration?"] = "Staat deze hub nieuwe accounts toe?";
+App::$strings["Invitation only"] = "Alleen op uitnodiging";
+App::$strings["Only allow new member registrations with an invitation code. Above register policy must be set to Yes."] = "Sta alleen nieuwe registraties toe van mensen die een uitnodigingscode hebben. Bovenstaand accountbeleid moet op Ja staan.";
+App::$strings["Which best describes the types of account offered by this hub?"] = "Wat voor soort accounts biedt deze \$Projectname-hub aan? Kies wat het meest in de buurt komt.";
+App::$strings["Register text"] = "Tekst tijdens registratie";
+App::$strings["Will be displayed prominently on the registration page."] = "Tekst dat op de pagina voor het registreren van nieuwe accounts wordt getoond.";
+App::$strings["Site homepage to show visitors (default: login box)"] = "Homepagina van deze hub die aan bezoekers wordt getoond (standaard: inlogformulier)";
+App::$strings["example: 'public' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file."] = "voorbeeld: 'public' om de openbare stream te tonen, 'page/sys/home' om de webpagina 'home' van het systeemkanaal te tonen of 'include:home.html' om een gewoon bestand te gebruiken.";
+App::$strings["Preserve site homepage URL"] = "Behoudt de URL van de hub (/)";
+App::$strings["Present the site homepage in a frame at the original location instead of redirecting"] = "Toon de homepagina van de hub in een frame op de oorspronkelijke locatie (/), i.p.v. een doorverwijzing naar een andere locatie (bv. .../home.html)";
+App::$strings["Accounts abandoned after x days"] = "Accounts als verlaten beschouwen na zoveel aantal dagen:";
+App::$strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Zal geen systeembronnen verspillen door polling van externe hubs voor verlaten accounts. Vul 0 in voor geen tijdslimiet.";
+App::$strings["Allowed friend domains"] = "Toegestane domeinen";
+App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Komma-gescheiden lijst van domeinen waarvan kanalen connecties kunnen aangaan met kanalen op deze \$Projectname-hub. Wildcards zijn toegestaan.\nLaat leeg om alle domeinen toe te laten.";
+App::$strings["Allowed email domains"] = "Toegestane e-maildomeinen";
+App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Door komma's gescheiden lijst met e-maildomeinen waarvan e-mailadressen op deze hub mogen registeren. Wildcards zijn toegestaan. Laat leeg om alle domeinen toe te laten.";
+App::$strings["Not allowed email domains"] = "Niet toegestane e-maildomeinen";
+App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Door komma's gescheiden lijst met e-maildomeinen waarvan e-mailadressen niet op deze hub mogen registeren. Wildcards zijn toegestaan. Laat leeg om alle domeinen toe te staan, tenzij er toegestane domeinen zijn ingesteld. ";
+App::$strings["Verify Email Addresses"] = "E-mailadres verifieren";
+App::$strings["Check to verify email addresses used in account registration (recommended)."] = "Inschakelen om e-mailadressen te verifiëren die tijdens de accountregistratie worden gebruikt (aanbevolen).";
+App::$strings["Force publish"] = "Dwing kanaalvermelding af";
+App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Vink dit aan om af te dwingen dat alle kanalen op deze hub in de kanalengids worden vermeld.";
+App::$strings["Import Public Streams"] = "Openbare streams importeren";
+App::$strings["Import and allow access to public content pulled from other sites. Warning: this content is unmoderated."] = "Toegang verlenen tot openbare berichten die vanuit andere hubs worden geïmporteerd. Waarschuwing: de inhoud van deze berichten wordt niet gemodereerd.";
+App::$strings["Login on Homepage"] = "Inlogformulier op de homepagina";
+App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Toon een inlogformulier voor bezoekers op de homepagina wanneer geen andere inhoud is geconfigureerd. ";
+App::$strings["Enable context help"] = "Schakel contextuele hulp in";
+App::$strings["Display contextual help for the current page when the help button is pressed."] = "Toon hulp en documentatie voor de op dat moment getoonde pagina, wanneer op de hulp-knop wordt geklikt.";
+App::$strings["Directory Server URL"] = "Server-URL voor de kanalengids";
+App::$strings["Default directory server"] = "Standaardserver voor de kanalengids";
+App::$strings["Proxy user"] = "Gebruikersnaam proxy";
+App::$strings["Proxy URL"] = "Proxy-URL";
+App::$strings["Network timeout"] = "Netwerktimeout";
+App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Waarde is in seconden. Zet op 0 voor onbeperkt (niet aanbevolen)";
+App::$strings["Delivery interval"] = "Afleveringsinterval";
+App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Vertraag de achtergrondprocessen voor het afleveren met een aantal seconden om de systeembelasting te verminderen. Aanbevolen: 4-5 voor shared hosts, 2-3 voor virtual private servers (VPS) en 0-1 voor grote dedicated servers.";
+App::$strings["Deliveries per process"] = "Leveringen per serverproces";
+App::$strings["Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5."] = "Aantal leveringen die aan één serverproces worden meegegeven. Pas dit aan wanneer het nodig is om systeemprestaties te verbeteren. Aangeraden: 1-5";
+App::$strings["Poll interval"] = "Poll-interval";
+App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "De achtergrondprocessen voor het afleveren met zoveel seconden vertragen om de systeembelasting te verminderen. 0 om de afleveringsinterval te gebruiken.";
+App::$strings["Maximum Load Average"] = "Maximaal gemiddelde systeembelasting";
+App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maximale systeembelasting voordat de afleverings- en polllingsprocessen worden uitgesteld. Standaard is 50.";
+App::$strings["Expiration period in days for imported (grid/network) content"] = "Aantal dagen waarna geïmporteerde inhoud uit iemands grid/netwerk-pagina wordt verwijderd.";
+App::$strings["0 for no expiration of imported content"] = "Dit geldt alleen voor inhoud van andere kanalen, dus niet voor iemands eigen kanaal. 0 voor het niet verwijderen van geïmporteerde inhoud.";
+App::$strings["Off"] = "Uit";
+App::$strings["On"] = "Aan";
+App::$strings["Lock feature %s"] = " Vergrendel de functie '%s'";
+App::$strings["Manage Additional Features"] = "Beheer - Extra functies";
+App::$strings["No server found"] = "Geen hub gevonden";
+App::$strings["ID"] = "ID";
+App::$strings["for channel"] = "voor kanaal";
+App::$strings["on server"] = "op hub";
+App::$strings["Server"] = "Hubbeheer";
+App::$strings["By default, unfiltered HTML is allowed in embedded media. This is inherently insecure."] = "Standaard is ongefilterde HTML in ingesloten (embedded) media toegestaan. Dit is inherent onveilig.";
+App::$strings["The recommended setting is to only allow unfiltered HTML from the following sites:"] = "Het wordt aanbevolen om alleen ongefilterde HTML van de volgende websites toe te staan:";
+App::$strings["https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"] = "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />";
+App::$strings["All other embedded content will be filtered, <strong>unless</strong> embedded content from that site is explicitly blocked."] = "Alle andere ingesloten (embedded) inhoud wordt gefilterd, <strong>tenzij</strong> ingesloten (embedded) inhoud van een website expliciet wordt geblokkeerd.";
+App::$strings["Security"] = "Beveiliging";
+App::$strings["Block public"] = "Openbare toegang blokkeren";
+App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "Vink dit aan om alle normaliter openbare persoonlijke pagina's op deze hub alleen toegankelijk te maken voor leden die zich hebben geauthenticeerd.";
+App::$strings["Set \"Transport Security\" HTTP header"] = "\"Transport Security\" HTTP-header inschakelen";
+App::$strings["Set \"Content Security Policy\" HTTP header"] = " \"Content Security Policy\" HTTP-header inschakelen";
+App::$strings["Allow communications only from these sites"] = "Alleen communicatie met deze hubs toestaan";
+App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Eén hub per regel. Laat leeg om communicatie standaard met alle hubs toe te staan";
+App::$strings["Block communications from these sites"] = "Communicatie met deze hubs blokkeren";
+App::$strings["Allow communications only from these channels"] = "Sta alleen communicatie toe met deze kanalen";
+App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "Eén kanaal (hash) per regel. Laat leeg om communicatie standaard met alle kanalen toe te staan";
+App::$strings["Block communications from these channels"] = "Communicatie met deze kanalen blokkeren";
+App::$strings["Only allow embeds from secure (SSL) websites and links."] = "Alleen ingesloten (embedded) inhoud van veilige (SSL) websites en links toestaan.";
+App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "Alleen ongefilterde ingesloten (embedded) HTML van deze websites toestaan";
+App::$strings["One site per line. By default embedded content is filtered."] = "Eén website per regel. Standaard wordt ingesloten (embedded) inhoud gefilterd.";
+App::$strings["Block embedded HTML from these domains"] = "Ingesloten (embedded) HTML vanaf deze domeinen blokkeren";
+App::$strings["Update has been marked successful"] = "Update is als succesvol gemarkeerd";
+App::$strings["Executing %s failed. Check system logs."] = "Uitvoeren van %s is mislukt. Controleer systeemlogboek.";
+App::$strings["Update %s was successfully applied."] = "Update %s was geslaagd.";
+App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "Update %s gaf geen melding. Het is daarom niet bekend of deze geslaagd is.";
+App::$strings["Update function %s could not be found."] = "Update-functie %s kon niet gevonden worden.";
+App::$strings["No failed updates."] = "Geen mislukte updates.";
+App::$strings["Failed Updates"] = "Mislukte updates";
+App::$strings["Mark success (if update was manually applied)"] = "Markeer als geslaagd (wanneer de update handmatig was uitgevoerd)";
+App::$strings["Attempt to execute this update step automatically"] = "Poging om deze stap van de update automatisch uit te voeren.";
+App::$strings["Queue Statistics"] = "Wachtrij-statistieken";
+App::$strings["Total Entries"] = "Aantal vermeldingen";
+App::$strings["Priority"] = "Prioriteit";
+App::$strings["Destination URL"] = "Doel-URL";
+App::$strings["Mark hub permanently offline"] = "Hub als permanent offline markeren";
+App::$strings["Empty queue for this hub"] = "Berichtenwachtrij voor deze hub legen";
+App::$strings["Last known contact"] = "Voor het laatst contact";
+App::$strings["%s account blocked/unblocked"] = array(
+ 0 => "%s account geblokkeerd/gedeblokkeerd",
+ 1 => "%s accounts geblokkeerd/gedeblokkeerd",
+);
+App::$strings["%s account deleted"] = array(
+ 0 => "%s account verwijderd",
+ 1 => "%s accounts verwijderd",
+);
+App::$strings["Account not found"] = "Account niet gevonden";
+App::$strings["Account '%s' deleted"] = "Account '%s' verwijderd";
+App::$strings["Account '%s' blocked"] = "Account '%s' geblokkeerd";
+App::$strings["Account '%s' unblocked"] = "Account '%s' gedeblokkeerd";
+App::$strings["Accounts"] = "Accounts";
+App::$strings["select all"] = "alles selecteren";
+App::$strings["Registrations waiting for confirm"] = "Accounts die op goedkeuring wachten";
+App::$strings["Request date"] = "Tijd/datum verzoek";
+App::$strings["No registrations."] = "Geen verzoeken.";
+App::$strings["Deny"] = "Afkeuren";
+App::$strings["All Channels"] = "Alle kanalen";
+App::$strings["Register date"] = "Geregistreerd";
+App::$strings["Last login"] = "Laatste keer ingelogd";
+App::$strings["Expires"] = "Verloopt";
+App::$strings["Service Class"] = "Abonnementen";
+App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Geselecteerde accounts (met bijbehorende kanalen) worden verwijderd!\\n\\nAlles wat deze accounts op deze hub hebben gepubliceerd wordt definitief verwijderd!\\n\\Weet je het zeker?";
+App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Account {0} (met bijbehorende kanalen) wordt verwijderd !\\n\\nAlles wat dit account op deze hub heeft gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?";
+App::$strings["%s channel censored/uncensored"] = array(
+ 0 => "%s kanaal gecensureerd/ongecensureerd",
+ 1 => "%s kanalen gecensureerd/ongecensureerd",
+);
+App::$strings["%s channel code allowed/disallowed"] = array(
+ 0 => "Scripts toegestaan/niet toegestaan voor %s kanaal",
+ 1 => "Scripts toegestaan/niet toegestaan voor %s kanalen",
+);
+App::$strings["%s channel deleted"] = array(
+ 0 => "%s kanaal verwijderd",
+ 1 => "%s kanalen verwijderd",
+);
+App::$strings["Channel not found"] = "Kanaal niet gevonden";
+App::$strings["Channel '%s' deleted"] = "Kanaal '%s' verwijderd";
+App::$strings["Channel '%s' censored"] = "Kanaal '%s' gecensureerd";
+App::$strings["Channel '%s' uncensored"] = "Kanaal '%s' ongecensureerd";
+App::$strings["Channel '%s' code allowed"] = "Scripts toegestaan voor kanaal '%s'";
+App::$strings["Channel '%s' code disallowed"] = "Scripts niet toegestaan voor kanaal '%s'";
+App::$strings["Channels"] = "Kanalen";
+App::$strings["Censor"] = "Censureren";
+App::$strings["Uncensor"] = "Niet censureren";
+App::$strings["Allow Code"] = "Scripts toestaan";
+App::$strings["Disallow Code"] = "Scripts niet toestaan";
+App::$strings["Channel"] = "Kanaal";
+App::$strings["UID"] = "UID";
+App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Geselecteerde kanalen worden verwijderd!\\n\\nAlles wat in deze kanalen op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?";
+App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Kanaal {0} wordt verwijderd!\\n\\nAlles wat in dit kanaal op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?";
+App::$strings["Plugin %s disabled."] = "Plugin %s uitgeschakeld.";
+App::$strings["Plugin %s enabled."] = "Plugin %s ingeschakeld";
+App::$strings["Disable"] = "Uitschakelen";
+App::$strings["Enable"] = "Inschakelen";
+App::$strings["Plugins"] = "Plugins";
+App::$strings["Toggle"] = "Omschakelen";
+App::$strings["Settings"] = "Instellingen";
+App::$strings["Author: "] = "Auteur: ";
+App::$strings["Maintainer: "] = "Beheerder: ";
+App::$strings["Minimum project version: "] = "Minimum versie Hubzilla: ";
+App::$strings["Maximum project version: "] = "Maximum versie Hubzilla:";
+App::$strings["Minimum PHP version: "] = "Minimum versie PHP: ";
+App::$strings["Requires: "] = "Vereist: ";
+App::$strings["Disabled - version incompatibility"] = "Uitgeschakeld - versie is incompatibel";
+App::$strings["Enter the public git repository URL of the plugin repo."] = "Vul de openbare Git-URL in van de plugin-repository.";
+App::$strings["Plugin repo git URL"] = "Git-URL plugin-repository";
+App::$strings["Custom repo name"] = "Handmatige repository-naam";
+App::$strings["(optional)"] = "(optioneel)";
+App::$strings["Download Plugin Repo"] = "Plugin-repository downloaden";
+App::$strings["Install new repo"] = "Nieuwe repository installeren";
+App::$strings["Install"] = "Installeren";
+App::$strings["Manage Repos"] = "Repositories beheren";
+App::$strings["Installed Plugin Repositories"] = "Toegevoegde plugin-repositories";
+App::$strings["Install a New Plugin Repository"] = "Nieuwe plugin-repository toevoegen";
+App::$strings["Update"] = "Bijwerken";
+App::$strings["Switch branch"] = "Branch veranderen";
+App::$strings["No themes found."] = "Geen thema's gevonden";
+App::$strings["Screenshot"] = "Schermafdruk";
+App::$strings["Themes"] = "Thema's";
+App::$strings["[Experimental]"] = "[Experimenteel]";
+App::$strings["[Unsupported]"] = "[Niet ondersteund]";
+App::$strings["Log settings updated."] = "Logboek-instellingen bijgewerkt.";
+App::$strings["Logs"] = "Logboeken";
+App::$strings["Clear"] = "Leegmaken";
+App::$strings["Debugging"] = "Debuggen";
+App::$strings["Log file"] = "Logbestand";
+App::$strings["Must be writable by web server. Relative to your top-level webserver directory."] = "Moet door de webserver beschrijfbaar zijn. Relatief ten opzichte van de bovenste map van je \$Projectname-installatie.";
+App::$strings["Log level"] = "Logniveau";
+App::$strings["New Profile Field"] = "Nieuw profielveld";
+App::$strings["Field nickname"] = "Bijnaam voor veld";
+App::$strings["System name of field"] = "Systeemnaam voor veld";
+App::$strings["Input type"] = "Invoertype";
+App::$strings["Field Name"] = "Veldnaam";
+App::$strings["Label on profile pages"] = "Tekstlabel voor op profielpagina's";
+App::$strings["Help text"] = "Helptekst";
+App::$strings["Additional info (optional)"] = "Extra informatie (optioneel)";
+App::$strings["Field definition not found"] = "Velddefinitie niet gevonden";
+App::$strings["Edit Profile Field"] = "Profielveld bewerken";
+App::$strings["Profile Fields"] = "Profielvelden";
+App::$strings["Basic Profile Fields"] = "Standaard profielvelden";
+App::$strings["Advanced Profile Fields"] = "Geavanceerde profielvelden";
+App::$strings["(In addition to basic fields)"] = "(als toevoeging op de standaard velden)";
+App::$strings["All available fields"] = "Alle beschikbare velden";
+App::$strings["Custom Fields"] = "Extra (handmatig toegevoegde) velden";
+App::$strings["Create Custom Field"] = "Extra velden aanmaken";
+App::$strings["App installed."] = "App geïnstalleerd";
+App::$strings["Malformed app."] = "Misvormde app.";
+App::$strings["Embed code"] = "Insluitcode";
+App::$strings["Edit App"] = "App bewerken";
+App::$strings["Create App"] = "App maken";
+App::$strings["Name of app"] = "Naam van app";
+App::$strings["Location (URL) of app"] = "Locatie (URL) van app";
+App::$strings["Photo icon URL"] = "URL van pictogram";
+App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixels (optioneel)";
+App::$strings["Categories (optional, comma separated list)"] = "Categorieën (optioneel, door komma's gescheiden lijst)";
+App::$strings["Version ID"] = "Versie-ID";
+App::$strings["Price of app"] = "Prijs van de app";
+App::$strings["Location (URL) to purchase app"] = "Locatie (URL) om de app aan te schaffen";
App::$strings["Select a bookmark folder"] = "Kies een bladwijzermap";
App::$strings["Save Bookmark"] = "Bladwijzer opslaan";
App::$strings["URL of bookmark"] = "URL van bladwijzer";
@@ -1099,7 +1097,6 @@ App::$strings["Search results for: %s"] = "Zoekresultaten voor %s";
App::$strings["No service class restrictions found."] = "Geen abonnementsbeperkingen gevonden.";
App::$strings["Name is required"] = "Naam is vereist";
App::$strings["Key and Secret are required"] = "Key en secret zijn vereist";
-App::$strings["Update"] = "Bijwerken";
App::$strings["Not valid email."] = "Geen geldig e-mailadres.";
App::$strings["Protected email address. Cannot change to that email."] = "Beschermd e-mailadres. Kan dat e-mailadres niet gebruiken.";
App::$strings["System failure storing new email. Please try again."] = "Systeemfout opslaan van nieuwe e-mail. Probeer het nog een keer.";
@@ -1191,15 +1188,19 @@ App::$strings["Allow others to tag your posts"] = "Anderen toestaan om je berich
App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "Vaak in groepen/forums gebruikt om met terugwerkende kracht ongepast materiaal te markeren";
App::$strings["Advanced Privacy Settings"] = "Geavanceerde privacy-instellingen";
App::$strings["Expire other channel content after this many days"] = "Inhoud van andere kanalen na zoveel aantal dagen laten verlopen:";
-App::$strings["0 or blank to use the website limit. The website expires after %d days."] = "0 of leeg om het standaard aantal dagen van deze hub te gebruiken. Deze hub laat de inhoud van andere kanalen na %d dagen verlopen.";
+App::$strings["0 or blank to use the website limit."] = "0 of leeg om het standaard aantal dagen van deze hub te gebruiken.";
+App::$strings["This website expires after %d days."] = "Deze hub laat de inhoud van andere kanalen na %d dagen verlopen.";
+App::$strings["This website does not expire imported content."] = "Deze hub laat de inhoud van andere kanalen niet verlopen.";
+App::$strings["The website limit takes precedence if lower than your limit."] = "Wanneer de standaard aantal dagen van deze hub lager ligt dan jouw aantal, dan heeft de limiet van deze hub voorrang.";
App::$strings["Maximum Friend Requests/Day:"] = "Maximum aantal connectieverzoeken per dag:";
App::$strings["May reduce spam activity"] = "Kan eventuele spam verminderen";
-App::$strings["Default Post Permissions"] = "Standaard permissies voor nieuwe berichten";
+App::$strings["Default Post and Publish Permissions"] = "Standaard permissies voor nieuwe berichten en publicaties";
+App::$strings["Use my default audience setting for the type of object published"] = "Gebruik mijn standaard privacy-instelling voor dit type publicatie";
App::$strings["Channel permissions category:"] = "Kanaaltype en -permissies:";
App::$strings["Maximum private messages per day from unknown people:"] = "Maximum aantal privé-berichten per dag van onbekende personen:";
App::$strings["Useful to reduce spamming"] = "Kan eventuele spam verminderen";
App::$strings["Notification Settings"] = "Notificatie-instellingen";
-App::$strings["By default post a status message when:"] = "Plaats automatisch een statusbericht wanneer:";
+App::$strings["By default post a status message when:"] = "Plaats automatisch een bericht wanneer:";
App::$strings["accepting a friend request"] = "Een connectieverzoek wordt geaccepteerd";
App::$strings["joining a forum/community"] = "Je lid wordt van een forum/groep";
App::$strings["making an <em>interesting</em> profile change"] = "Er sprake is van een <em>interessante</em> profielwijziging";
@@ -1269,6 +1270,8 @@ App::$strings["Please select a default timezone for your website"] = "Please sel
App::$strings["Site settings"] = "Hub settings";
App::$strings["Enable \$Projectname <strong>advanced</strong> features?"] = "Enable \$Projectname <strong>advanced</strong> features?";
App::$strings["Some advanced features, while useful - may be best suited for technically proficient audiences"] = "Some advanced features, while useful - may be best suited for technically proficient audiences";
+App::$strings["PHP version 5.5 or greater is required."] = "PHP version 5.5 or greater is required.";
+App::$strings["PHP version"] = "PHP version";
App::$strings["Could not find a command line version of PHP in the web server PATH."] = "Could not find a command line version of PHP in the web server PATH.";
App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron.";
App::$strings["PHP executable path"] = "PHP executable path";
@@ -1307,7 +1310,7 @@ App::$strings["At the end of this procedure, we will give you a text to save in
App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions.";
App::$strings[".htconfig.php is writable"] = ".htconfig.php is writable";
App::$strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering.";
-App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder.";
+App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder."] = "In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder.";
App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder.";
App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains.";
App::$strings["%s is writable"] = "%s is writable";
@@ -1354,6 +1357,7 @@ App::$strings["Import all or selected content from the following channel into th
App::$strings["Only import content with these words (one per line)"] = "Importeer alleen inhoud met deze woorden (één per regel)";
App::$strings["Leave blank to import all public content"] = "Laat leeg om alle openbare inhoud te importeren";
App::$strings["Channel Name"] = "Kanaalnaam";
+App::$strings["Add the following categories to posts imported from this source (comma separated)"] = "De volgende categorieën aan berichten toevoegen die uit deze bron zijn geïmporteerd (door komma's gescheiden)";
App::$strings["Source not found."] = "Bron niet gevonden";
App::$strings["Edit Source"] = "Bron bewerken";
App::$strings["Delete Source"] = "Bron verwijderen";
@@ -1402,54 +1406,72 @@ App::$strings["Page Link"] = "Paginalink";
App::$strings["Page Title"] = "Paginatitel";
App::$strings["Xchan Lookup"] = "Xchan opzoeken";
App::$strings["Lookup xchan beginning with (or webbie): "] = "Zoek een xchan (of webbie) die begint met:";
-App::$strings["No username found in import file."] = "Geen gebruikersnaam in het importbestand gevonden.";
-App::$strings["Unable to create a unique channel address. Import failed."] = "Niet in staat om een uniek kanaaladres aan te maken. Importeren is mislukt.";
-App::$strings["Cannot locate DNS info for database server '%s'"] = "Kan DNS-informatie voor databaseserver '%s' niet vinden";
-App::$strings["Unable to obtain identity information from database"] = "Niet in staat om identiteitsinformatie uit de database te verkrijgen";
-App::$strings["Empty name"] = "Ontbrekende naam";
-App::$strings["Name too long"] = "Naam te lang";
-App::$strings["No account identifier"] = "Geen account-identificator";
-App::$strings["Nickname is required."] = "Bijnaam is verplicht";
-App::$strings["Reserved nickname. Please choose another."] = "Deze naam is gereserveerd. Kies een andere.";
-App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Deze naam heeft niet ondersteunde karakters of is al op deze hub in gebruik.";
-App::$strings["Unable to retrieve created identity"] = "Niet in staat om aangemaakte identiteit te vinden";
-App::$strings["Default Profile"] = "Standaardprofiel";
-App::$strings["Requested channel is not available."] = "Opgevraagd kanaal is niet beschikbaar.";
-App::$strings["Create New Profile"] = "Nieuw profiel aanmaken";
-App::$strings["Edit Profile"] = "Profiel bewerken";
-App::$strings["Visible to everybody"] = "Voor iedereen zichtbaar";
-App::$strings["Gender:"] = "Geslacht:";
-App::$strings["Status:"] = "Status:";
-App::$strings["Homepage:"] = "Homepagina:";
-App::$strings["Online Now"] = "Nu online";
-App::$strings["F d"] = "d F";
-App::$strings["Birthday Reminders"] = "Verjaardagsherinneringen";
-App::$strings["Birthdays this week:"] = "Verjaardagen deze week:";
-App::$strings["[No description]"] = "[Geen omschrijving]";
-App::$strings["Event Reminders"] = "Herinneringen";
-App::$strings["Events this week:"] = "Gebeurtenissen deze week:";
-App::$strings["Like this channel"] = "Vind dit kanaal leuk";
-App::$strings["j F, Y"] = "F j Y";
-App::$strings["j F"] = "F j";
-App::$strings["Birthday:"] = "Geboortedatum:";
-App::$strings["for %1\$d %2\$s"] = "voor %1\$d %2\$s";
-App::$strings["Sexual Preference:"] = "Seksuele voorkeur:";
-App::$strings["Tags:"] = "Tags:";
-App::$strings["Political Views:"] = "Politieke overtuigingen:";
-App::$strings["Religion:"] = "Religie:";
-App::$strings["Hobbies/Interests:"] = "Hobby's/interesses:";
-App::$strings["Likes:"] = "Houdt van:";
-App::$strings["Dislikes:"] = "Houdt niet van:";
-App::$strings["Contact information and Social Networks:"] = "Contactinformatie en sociale netwerken:";
-App::$strings["My other channels:"] = "Mijn andere kanalen";
-App::$strings["Musical interests:"] = "Muzikale interesses:";
-App::$strings["Books, literature:"] = "Boeken, literatuur:";
-App::$strings["Television:"] = "Televisie:";
-App::$strings["Film/dance/culture/entertainment:"] = "Films/dansen/cultuur/vermaak:";
-App::$strings["Love/Romance:"] = "Liefde/romantiek:";
-App::$strings["Work/employment:"] = "Werk/beroep:";
-App::$strings["School/education:"] = "School/opleiding:";
-App::$strings["Like this thing"] = "Vind dit ding leuk";
+App::$strings["Site Admin"] = "Hubbeheerder";
+App::$strings["Bug Report"] = "Bugrapport";
+App::$strings["View Bookmarks"] = "Bladwijzers bekijken";
+App::$strings["My Chatrooms"] = "Mijn chatkanalen";
+App::$strings["Firefox Share"] = "Firefox Share";
+App::$strings["Remote Diagnostics"] = "Diagnose op afstand";
+App::$strings["Suggest Channels"] = "Kanalen voorstellen";
+App::$strings["Login"] = "Inloggen";
+App::$strings["Grid"] = "Grid";
+App::$strings["Channel Home"] = "Jouw kanaal";
+App::$strings["Events"] = "Agenda";
+App::$strings["Directory"] = "Kanalengids";
+App::$strings["Mail"] = "Privéberichten";
+App::$strings["Chat"] = "Chatten";
+App::$strings["Probe"] = "Onderzoeken";
+App::$strings["Suggest"] = "Voorstellen";
+App::$strings["Random Channel"] = "Willekeurig kanaal";
+App::$strings["Invite"] = "Uitnodigen ";
+App::$strings["Features"] = "Extra functies";
+App::$strings["Post"] = "Bericht";
+App::$strings["Purchase"] = "Aanschaffen";
+App::$strings["Missing room name"] = "Naam chatkanaal ontbreekt";
+App::$strings["Duplicate room name"] = "Naam chatkanaal bestaat al";
+App::$strings["Invalid room specifier."] = "Ongeldige omschrijving chatkanaal";
+App::$strings["Room not found."] = "Chatkanaal niet gevonden";
+App::$strings["Room is full"] = "Chatkanaal is vol";
+App::$strings["\$Projectname Notification"] = "\$Projectname-notificatie";
+App::$strings["\$projectname"] = "\$projectname";
+App::$strings["Thank You,"] = "Bedankt,";
+App::$strings["%s Administrator"] = "Beheerder %s";
+App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
+App::$strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla:Notificatie] Nieuw privébericht ontvangen op %s";
+App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s zond jou een nieuw privébericht om %3\$s.";
+App::$strings["%1\$s sent you %2\$s."] = "%1\$s zond jou %2\$s.";
+App::$strings["a private message"] = "een privébericht";
+App::$strings["Please visit %s to view and/or reply to your private messages."] = "Bezoek %s om je privéberichten te bekijken en/of er op te reageren.";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]een %4\$s[/zrl]";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]een %5\$s van %4\$s[/zrl]";
+App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]jouw %4\$s[/zrl]";
+App::$strings["[Hubzilla:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Hubzilla:Notificatie] Reactie op conversatie #%1\$d door %2\$s";
+App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s gaf een reactie op een bericht/conversatie die jij volgt.";
+App::$strings["Please visit %s to view and/or reply to the conversation."] = "Bezoek %s om de conversatie te bekijken en/of er op te reageren.";
+App::$strings["[Hubzilla:Notify] %s posted to your profile wall"] = "[Hubzilla:Notificatie] %s heeft een bericht op jouw kanaal geplaatst";
+App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s heeft om %3\$s een bericht op jouw kanaal geplaatst";
+App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s heeft een bericht op [zrl=%3\$s]jouw kanaal[/zrl] geplaatst";
+App::$strings["[Hubzilla:Notify] %s tagged you"] = "[Hubzilla:Notificatie] %s heeft je genoemd";
+App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s noemde jou op %3\$s";
+App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]noemde jou[/zrl].";
+App::$strings["[Hubzilla:Notify] %1\$s poked you"] = "[Hubzilla:Notificatie] %1\$s heeft je aangestoten";
+App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s heeft je aangestoten op %3\$s";
+App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]heeft je aangestoten[/zrl].";
+App::$strings["[Hubzilla:Notify] %s tagged your post"] = "[Hubzilla:Notificatie] %s heeft jouw bericht getagd";
+App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s heeft jouw bericht om %3\$s getagd";
+App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s heeft [zrl=%3\$s]jouw bericht[/zrl] getagd";
+App::$strings["[Hubzilla:Notify] Introduction received"] = "[Hubzilla:Notificatie] Connectieverzoek ontvangen";
+App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, je hebt een nieuw connectieverzoek ontvangen van '%2\$s' op %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, je hebt een [zrl=%2\$s]nieuw connectieverzoek[/zrl] ontvangen van %3\$s.";
+App::$strings["You may visit their profile at %s"] = "Je kan het profiel bekijken op %s";
+App::$strings["Please visit %s to approve or reject the connection request."] = "Bezoek %s om het connectieverzoek te accepteren of af te wijzen.";
+App::$strings["[Hubzilla:Notify] Friend suggestion received"] = "[Hubzilla:Notificatie] Kanaalvoorstel ontvangen";
+App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, je hebt een kanaalvoorstel ontvangen van '%2\$s' om %3\$s";
+App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, je hebt [zrl=%2\$s]een kanaalvoorstel[/zrl] ontvangen voor %3\$s van %4\$s.";
+App::$strings["Name:"] = "Naam:";
+App::$strings["Photo:"] = "Foto:";
+App::$strings["Please visit %s to approve or reject the suggestion."] = "Bezoek %s om het voorstel te accepteren of af te wijzen.";
+App::$strings["[Hubzilla:Notify]"] = "[Hubzilla:Notificatie]";
App::$strings["created a new post"] = "maakte een nieuw bericht aan";
App::$strings["commented on %s's post"] = "gaf een reactie op een bericht van %s";
App::$strings["Private Message"] = "Niet voor iedereen zichtbaar";
@@ -1489,91 +1511,54 @@ App::$strings["Save Bookmarks"] = "Bladwijzers opslaan";
App::$strings["Add to Calendar"] = "Aan agenda toevoegen";
App::$strings["Mark all seen"] = "Markeer alles als bekeken";
App::$strings["[+] show all"] = "[+] alle";
+App::$strings["Bold"] = "Vet";
+App::$strings["Italic"] = "Cursief";
+App::$strings["Underline"] = "Onderstrepen";
+App::$strings["Quote"] = "Citeren";
+App::$strings["Code"] = "Broncode";
App::$strings["Image"] = "Afbeelding";
App::$strings["Insert Link"] = "Link invoegen";
App::$strings["Video"] = "Video";
-App::$strings["Not a valid email address"] = "Geen geldig e-mailadres";
-App::$strings["Your email domain is not among those allowed on this site"] = "Jouw e-maildomein is op deze hub niet toegestaan";
-App::$strings["Your email address is already registered at this site."] = "Jouw e-mailadres is al op deze hub geregistreerd.";
-App::$strings["An invitation is required."] = "Een uitnodiging is vereist";
-App::$strings["Invitation could not be verified."] = "Uitnodiging kon niet geverifieerd worden";
-App::$strings["Please enter the required information."] = "Vul de vereiste informatie in.";
-App::$strings["Failed to store account information."] = "Account-informatie kon niet opgeslagen worden.";
-App::$strings["Registration confirmation for %s"] = "Registratiebevestiging voor %s";
-App::$strings["Registration request at %s"] = "Registratiebevestiging voor %s";
-App::$strings["Administrator"] = "Beheerder";
-App::$strings["your registration password"] = "jouw registratiewachtwoord";
-App::$strings["Registration details for %s"] = "Registratiegegevens voor %s";
-App::$strings["Account approved."] = "Account goedgekeurd";
-App::$strings["Registration revoked for %s"] = "Registratie ingetrokken voor %s";
-App::$strings["Account verified. Please login."] = "Account is geverifieerd. Je kan inloggen.";
-App::$strings["Click here to upgrade."] = "Klik hier om te upgraden.";
-App::$strings["This action exceeds the limits set by your subscription plan."] = "Deze handeling overschrijdt de beperkingen die voor jouw abonnement gelden.";
-App::$strings["This action is not available under your subscription plan."] = "Deze handeling is niet mogelijk met jouw abonnement.";
-App::$strings["Currently Male"] = "Momenteel man";
-App::$strings["Currently Female"] = "Momenteel vrouw";
-App::$strings["Mostly Male"] = "Voornamelijk man";
-App::$strings["Mostly Female"] = "Voornamelijk vrouw";
-App::$strings["Transgender"] = "Transgender";
-App::$strings["Intersex"] = "Interseksueel";
-App::$strings["Transsexual"] = "Transseksueel";
-App::$strings["Hermaphrodite"] = "Hermafrodiet";
-App::$strings["Neuter"] = "Genderneutraal";
-App::$strings["Non-specific"] = "Niet gespecificeerd";
-App::$strings["Other"] = "Anders";
-App::$strings["Undecided"] = "Nog niet beslist";
-App::$strings["Males"] = "Mannen";
-App::$strings["Females"] = "Vrouwen";
-App::$strings["Gay"] = "Homoseksueel";
-App::$strings["Lesbian"] = "Lesbisch";
-App::$strings["No Preference"] = "Geen voorkeur";
-App::$strings["Bisexual"] = "Biseksueel";
-App::$strings["Autosexual"] = "Autoseksueel";
-App::$strings["Abstinent"] = "Seksuele onthouding";
-App::$strings["Virgin"] = "Maagd";
-App::$strings["Deviant"] = "Afwijkend";
-App::$strings["Fetish"] = "Fetisj";
-App::$strings["Oodles"] = "Veel";
-App::$strings["Nonsexual"] = "Aseksueel";
-App::$strings["Single"] = "Alleen";
-App::$strings["Lonely"] = "Eenzaam";
-App::$strings["Available"] = "Beschikbaar";
-App::$strings["Unavailable"] = "Niet beschikbaar";
-App::$strings["Has crush"] = "Heeft een oogje op iemand";
-App::$strings["Infatuated"] = "Smoorverliefd";
-App::$strings["Dating"] = "Aan het daten";
-App::$strings["Unfaithful"] = "Ontrouw";
-App::$strings["Sex Addict"] = "Seksverslaafd";
-App::$strings["Friends/Benefits"] = "Vriendschap plus";
-App::$strings["Casual"] = "Ongebonden/vluchtig";
-App::$strings["Engaged"] = "Verloofd";
-App::$strings["Married"] = "Getrouwd";
-App::$strings["Imaginarily married"] = "Denkbeeldig getrouwd";
-App::$strings["Partners"] = "Partners";
-App::$strings["Cohabiting"] = "Samenwonend";
-App::$strings["Common law"] = "Common-law-huwelijk";
-App::$strings["Happy"] = "Gelukkig";
-App::$strings["Not looking"] = "Niet op zoek";
-App::$strings["Swinger"] = "Swinger";
-App::$strings["Betrayed"] = "Verraden";
-App::$strings["Separated"] = "Uit elkaar";
-App::$strings["Unstable"] = "Onstabiel";
-App::$strings["Divorced"] = "Gescheiden";
-App::$strings["Imaginarily divorced"] = "Denkbeeldig gescheiden";
-App::$strings["Widowed"] = "Weduwnaar/weduwe";
-App::$strings["Uncertain"] = "Onzeker";
-App::$strings["It's complicated"] = "Het is ingewikkeld";
-App::$strings["Don't care"] = "Maakt mij niks uit";
-App::$strings["Ask me"] = "Vraag het me";
-App::$strings["Visible to your default audience"] = "Voor iedereen zichtbaar, mits niet anders ingesteld";
-App::$strings["Show"] = "Tonen";
-App::$strings["Don't show"] = "Niet tonen";
-App::$strings["Other networks and post services"] = "Andere netwerken en diensten";
-App::$strings[" and "] = " en ";
-App::$strings["public profile"] = "openbaar profiel";
-App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s veranderde %2\$s naar &ldquo;%3\$s&rdquo;";
-App::$strings["Visit %1\$s's %2\$s"] = "Bezoek het %2\$s van %1\$s";
-App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s heeft een aangepaste %2\$s, %3\$s veranderd.";
+App::$strings["No username found in import file."] = "Geen gebruikersnaam in het importbestand gevonden.";
+App::$strings["Unable to create a unique channel address. Import failed."] = "Niet in staat om een uniek kanaaladres aan te maken. Importeren is mislukt.";
+App::$strings["Cannot locate DNS info for database server '%s'"] = "Kan DNS-informatie voor databaseserver '%s' niet vinden";
+App::$strings["Categories"] = "Categorieën";
+App::$strings["Tags"] = "Tags";
+App::$strings["Keywords"] = "Trefwoorden";
+App::$strings["have"] = "heb";
+App::$strings["has"] = "heeft";
+App::$strings["want"] = "wil";
+App::$strings["wants"] = "wil";
+App::$strings["likes"] = "vindt dit leuk";
+App::$strings["dislikes"] = "vindt dit niet leuk";
+App::$strings["l F d, Y \\@ g:i A"] = "l d F Y \\@ G:i";
+App::$strings["Starts:"] = "Start:";
+App::$strings["Finishes:"] = "Einde:";
+App::$strings["This event has been added to your calendar."] = "Dit evenement is aan jouw agenda toegevoegd.";
+App::$strings["Not specified"] = "Niet aangegeven";
+App::$strings["Needs Action"] = "Actie vereist";
+App::$strings["Completed"] = "Voltooid";
+App::$strings["In Process"] = "In behandeling";
+App::$strings["Cancelled"] = "Geannuleerd";
+App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kan geen dubbele kanaal-identificator op deze hub aanmaken. Importeren mislukt.";
+App::$strings["Channel clone failed. Import failed."] = "Het klonen van het kanaal is mislukt. Importeren mislukt.";
+App::$strings["(Unknown)"] = "(Onbekend)";
+App::$strings["Visible to anybody on the internet."] = "Voor iedereen op het internet zichtbaar.";
+App::$strings["Visible to you only."] = "Alleen voor jou zichtbaar.";
+App::$strings["Visible to anybody in this network."] = "Voor iedereen in dit netwerk zichtbaar.";
+App::$strings["Visible to anybody authenticated."] = "Voor iedereen die geauthenticeerd is zichtbaar.";
+App::$strings["Visible to anybody on %s."] = "Voor iedereen op %s zichtbaar.";
+App::$strings["Visible to all connections."] = "Voor alle connecties zichtbaar.";
+App::$strings["Visible to approved connections."] = "Voor alle geaccepteerde connecties zichtbaar.";
+App::$strings["Visible to specific connections."] = "Voor specifieke connecties zichtbaar.";
+App::$strings["Privacy group is empty."] = "Privacygroep is leeg";
+App::$strings["Privacy group: %s"] = "Privacygroep: %s";
+App::$strings["Connection not found."] = "Connectie niet gevonden.";
+App::$strings["profile photo"] = "profielfoto";
+App::$strings["No recipient provided."] = "Geen ontvanger opgegeven.";
+App::$strings["[no subject]"] = "[geen onderwerp]";
+App::$strings["Unable to determine sender."] = "Afzender kan niet bepaald worden.";
+App::$strings["Stored post could not be verified."] = "Opgeslagen bericht kon niet worden geverifieerd.";
App::$strings["prev"] = "vorige";
App::$strings["first"] = "eerste";
App::$strings["last"] = "laatste";
@@ -1638,9 +1623,6 @@ App::$strings["Unknown Attachment"] = "Onbekende bijlage";
App::$strings["unknown"] = "onbekend";
App::$strings["remove category"] = "categorie verwijderen";
App::$strings["remove from file"] = "uit map verwijderen";
-App::$strings["l F d, Y \\@ g:i A"] = "l d F Y \\@ G:i";
-App::$strings["Starts:"] = "Start:";
-App::$strings["Finishes:"] = "Einde:";
App::$strings["default"] = "standaard";
App::$strings["Page layout"] = "Pagina-lay-out";
App::$strings["You can create your own with the layouts tool"] = "Je kan jouw eigen lay-out ontwerpen onder lay-outs";
@@ -1649,32 +1631,155 @@ App::$strings["Select an alternate language"] = "Kies een andere taal";
App::$strings["activity"] = "activiteit";
App::$strings["Design Tools"] = "Ontwerp-hulpmiddelen";
App::$strings["Pages"] = "Pagina's";
-App::$strings["Invalid data packet"] = "Datapakket ongeldig";
-App::$strings["Unable to verify channel signature"] = "Kanaalkenmerk kon niet worden geverifieerd. ";
-App::$strings["Unable to verify site signature for %s"] = "Hubkenmerk voor %s kon niet worden geverifieerd";
-App::$strings["invalid target signature"] = "ongeldig doelkenmerk";
-App::$strings["Site Admin"] = "Hubbeheerder";
+App::$strings["System"] = "Systeem";
+App::$strings["New App"] = "Nieuwe app";
+App::$strings["Suggestions"] = "Voorgestelde kanalen";
+App::$strings["See more..."] = "Meer...";
+App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Je hebt %1$.0f van de %2$.0f toegestane connecties.";
+App::$strings["Add New Connection"] = "Nieuwe connectie toevoegen";
+App::$strings["Enter channel address"] = "Vul kanaaladres in";
+App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Voorbeelden: bob@example.com, http://example.com/barbara";
+App::$strings["Notes"] = "Aantekeningen";
+App::$strings["Remove term"] = "Verwijder zoekterm";
+App::$strings["Saved Searches"] = "Opgeslagen zoekopdrachten";
+App::$strings["add"] = "toevoegen";
+App::$strings["Saved Folders"] = "Bewaarde mappen";
+App::$strings["Everything"] = "Alles";
+App::$strings["Archives"] = "Archieven";
+App::$strings["Refresh"] = "Vernieuwen";
+App::$strings["Account settings"] = "Account";
+App::$strings["Channel settings"] = "Kanaal";
+App::$strings["Additional features"] = "Extra functies";
+App::$strings["Feature/Addon settings"] = "Plugin-instellingen";
+App::$strings["Display settings"] = "Weergave";
+App::$strings["Manage locations"] = "Locaties beheren";
+App::$strings["Export channel"] = "Kanaal exporteren";
+App::$strings["Connected apps"] = "Verbonden applicaties";
+App::$strings["Premium Channel Settings"] = "Instellingen premiumkanaal";
+App::$strings["Private Mail Menu"] = "Privéberichten";
+App::$strings["Combined View"] = "Gecombineerd postvak";
+App::$strings["Inbox"] = "Postvak IN";
+App::$strings["Outbox"] = "Postvak UIT";
+App::$strings["New Message"] = "Nieuw bericht";
+App::$strings["Conversations"] = "Conversaties";
+App::$strings["Received Messages"] = "Ontvangen berichten";
+App::$strings["Sent Messages"] = "Verzonden berichten";
+App::$strings["No messages."] = "Geen berichten";
+App::$strings["Delete conversation"] = "Verwijder conversatie";
+App::$strings["Events Menu"] = "Agenda-menu";
+App::$strings["Day View"] = "Dag tonen";
+App::$strings["Week View"] = "Week tonen";
+App::$strings["Month View"] = "Maand tonen";
+App::$strings["Events Tools"] = "Agenda-hulpmiddelen";
+App::$strings["Export Calendar"] = "Exporteren";
+App::$strings["Import Calendar"] = "Importeren";
+App::$strings["Chatrooms"] = "Chatkanalen";
+App::$strings["Overview"] = "Overzicht";
+App::$strings["Chat Members"] = "Chatleden";
+App::$strings["Bookmarked Chatrooms"] = "Bladwijzers van chatkanalen";
+App::$strings["Suggested Chatrooms"] = "Voorgestelde chatkanalen";
+App::$strings["photo/image"] = "foto/afbeelding";
+App::$strings["Click to show more"] = "Klik voor meer";
+App::$strings["Rating Tools"] = "Beoordelingen";
+App::$strings["Rate Me"] = "Beoordeel mij";
+App::$strings["View Ratings"] = "Bekijk beoordelingen";
+App::$strings["Forums"] = "Forums";
+App::$strings["Tasks"] = "Taken";
+App::$strings["Documentation"] = "Documentatie";
+App::$strings["Project/Site Information"] = "Project- en hub-informatie";
+App::$strings["For Members"] = "Voor leden";
+App::$strings["For Administrators"] = "Voor beheerders";
+App::$strings["For Developers"] = "Voor ontwikkelaars";
+App::$strings["Member registrations waiting for confirmation"] = "Accounts die op goedkeuring wachten";
+App::$strings["Inspect queue"] = "Inspecteer berichtenwachtrij";
+App::$strings["DB updates"] = "Database-updates";
+App::$strings["Admin"] = "Beheer";
+App::$strings["Plugin Features"] = "Plugin-opties";
+App::$strings["Channel is blocked on this site."] = "Kanaal is op deze hub geblokkeerd.";
+App::$strings["Channel location missing."] = "Ontbrekende kanaallocatie.";
+App::$strings["Response from remote channel was incomplete."] = "Antwoord van het kanaal op afstand was niet volledig.";
+App::$strings["Channel was deleted and no longer exists."] = "Kanaal is verwijderd en bestaat niet meer.";
+App::$strings["Protocol disabled."] = "Protocol uitgeschakeld.";
+App::$strings["Channel discovery failed."] = "Kanaal ontdekken mislukt.";
+App::$strings["Cannot connect to yourself."] = "Kan niet met jezelf verbinden";
+App::$strings["%1\$s's bookmarks"] = "Bladwijzers van %1\$s";
+App::$strings["Public Timeline"] = "Openbare tijdlijn";
+App::$strings["Image/photo"] = "Afbeelding/foto";
+App::$strings["Encrypted content"] = "Versleutelde inhoud";
+App::$strings["Install %s element: "] = "Installeer %s-element: ";
+App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Dit bericht heeft een te installeren %s-element, maar je hebt geen permissies om het op deze hub te installeren.";
+App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s schreef het volgende %2\$s %3\$s";
+App::$strings["Click to open/close"] = "Klik om te openen of te sluiten";
+App::$strings["spoiler"] = "spoiler";
+App::$strings["Different viewers will see this text differently"] = "Deze tekst wordt per persoon anders weergeven.";
+App::$strings["$1 wrote:"] = "$1 schreef:";
+App::$strings["Directory Options"] = "Opties kanalengids";
+App::$strings["Safe Mode"] = "Veilig zoeken";
+App::$strings["Public Forums Only"] = "Alleen openbare forums";
+App::$strings["This Website Only"] = "Alleen deze hub";
+App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "De beveiligings-token van het tekstvak was ongeldig. Dit is mogelijk het gevolg van dat er te lang (meer dan 3 uur) gewacht is om de tekst op te slaan. ";
+App::$strings["Logout"] = "Uitloggen";
+App::$strings["End this session"] = "Beëindig deze sessie";
+App::$strings["Home"] = "Home";
+App::$strings["Your posts and conversations"] = "Jouw kanaal";
+App::$strings["Your profile page"] = "Jouw profielpagina";
+App::$strings["Manage/Edit profiles"] = "Beheer/wijzig profielen";
+App::$strings["Edit Profile"] = "Profiel bewerken";
+App::$strings["Edit your profile"] = "Jouw profiel bewerken";
+App::$strings["Your photos"] = "Jouw foto's";
+App::$strings["Your files"] = "Jouw bestanden";
+App::$strings["Your chatrooms"] = "Jouw chatkanalen";
App::$strings["Bookmarks"] = "Bladwijzers";
-App::$strings["Address Book"] = "Connecties";
-App::$strings["Login"] = "Inloggen";
-App::$strings["Grid"] = "Grid";
-App::$strings["Channel Home"] = "Jouw kanaal";
-App::$strings["Events"] = "Agenda";
-App::$strings["Directory"] = "Kanalengids";
-App::$strings["Mail"] = "Privéberichten";
-App::$strings["Chat"] = "Chatten";
-App::$strings["Probe"] = "Onderzoeken";
-App::$strings["Suggest"] = "Voorstellen";
-App::$strings["Random Channel"] = "Willekeurig kanaal";
-App::$strings["Invite"] = "Uitnodigen ";
-App::$strings["Features"] = "Extra functies";
-App::$strings["Post"] = "Bericht";
-App::$strings["Install"] = "Installeren";
-App::$strings["Purchase"] = "Aanschaffen";
-App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kan geen dubbele kanaal-identificator op deze hub aanmaken. Importeren mislukt.";
-App::$strings["Channel clone failed. Import failed."] = "Het klonen van het kanaal is mislukt. Importeren mislukt.";
-App::$strings["Attachments:"] = "Bijlagen:";
-App::$strings["\$Projectname event notification:"] = "Notificatie \$Projectname-gebeurtenis:";
+App::$strings["Your bookmarks"] = "Jouw bladwijzers";
+App::$strings["Your webpages"] = "Jouw webpagina's";
+App::$strings["Sign in"] = "Inloggen";
+App::$strings["%s - click to logout"] = "%s - klik om uit te loggen";
+App::$strings["Remote authentication"] = "Authenticatie op afstand";
+App::$strings["Click to authenticate to your home hub"] = "Authenticeer jezelf via (bijvoorbeeld) jouw hub";
+App::$strings["Home Page"] = "Homepage";
+App::$strings["Create an account"] = "Maak een account aan";
+App::$strings["Help and documentation"] = "Hulp en documentatie";
+App::$strings["Applications, utilities, links, games"] = "Apps";
+App::$strings["Search site @name, #tag, ?docs, content"] = "Zoek een @kanaal, doorzoek inhoud hub met tekst en #tags, of doorzoek ?documentatie ";
+App::$strings["Channel Directory"] = "Kanalengids";
+App::$strings["Your grid"] = "Jouw grid";
+App::$strings["Mark all grid notifications seen"] = "Markeer alle gridnotificaties als bekeken";
+App::$strings["Channel home"] = "Jouw kanaal";
+App::$strings["Mark all channel notifications seen"] = "Alle kanaalnotificaties als gelezen markeren";
+App::$strings["Notices"] = "Notificaties";
+App::$strings["Notifications"] = "Notificaties";
+App::$strings["See all notifications"] = "Alle notificaties weergeven";
+App::$strings["Private mail"] = "Privéberichten";
+App::$strings["See all private messages"] = "Alle privéberichten weergeven";
+App::$strings["Mark all private messages seen"] = "Markeer alle privéberichten als bekeken";
+App::$strings["Event Calendar"] = "Agenda";
+App::$strings["See all events"] = "Alle gebeurtenissen weergeven";
+App::$strings["Mark all events seen"] = "Markeer alle gebeurtenissen als bekeken";
+App::$strings["Manage Your Channels"] = "Beheer je kanalen";
+App::$strings["Account/Channel Settings"] = "Account-/kanaal-instellingen";
+App::$strings["Site Setup and Configuration"] = "Hub instellen en beheren";
+App::$strings["Loading..."] = "Aan het laden...";
+App::$strings["@name, #tag, ?doc, content"] = "@kanaal, #tag, inhoud, ?hulp";
+App::$strings["Please wait..."] = "Wachten aub...";
+App::$strings["New window"] = "Nieuw venster";
+App::$strings["Open the selected location in a different window or browser tab"] = "Open de geselecteerde locatie in een ander venster of tab";
+App::$strings["User '%s' deleted"] = "Account '%s' verwijderd";
+App::$strings["%d invitation available"] = array(
+ 0 => "%d uitnodiging beschikbaar",
+ 1 => "%d uitnodigingen beschikbaar",
+);
+App::$strings["Find Channels"] = "Kanalen vinden";
+App::$strings["Enter name or interest"] = "Vul naam of interesse in";
+App::$strings["Connect/Follow"] = "Verbinden/volgen";
+App::$strings["Examples: Robert Morgenstein, Fishing"] = "Voorbeeld: Robert Morgenstein, vissen";
+App::$strings["Random Profile"] = "Willekeurig profiel";
+App::$strings["Invite Friends"] = "Vrienden uitnodigen";
+App::$strings["Advanced example: name=fred and country=iceland"] = "Geavanceerd voorbeeld (Engels): name=jan en country=nederland";
+App::$strings["%d connection in common"] = array(
+ 0 => "%d gemeenschappelijke connectie",
+ 1 => "%d gemeenschappelijke connecties",
+);
+App::$strings["show more"] = "meer connecties weergeven";
App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s is nu met %2\$s verbonden";
App::$strings["%1\$s poked %2\$s"] = "%1\$s heeft %2\$s aangestoten";
App::$strings["View %s's profile @ %s"] = "Bekijk het profiel van %s @ %s";
@@ -1682,7 +1787,6 @@ App::$strings["Categories:"] = "Categorieën:";
App::$strings["Filed under:"] = "Bewaard onder:";
App::$strings["View in context"] = "In context bekijken";
App::$strings["remove"] = "verwijderen";
-App::$strings["Loading..."] = "Aan het laden...";
App::$strings["Delete Selected Items"] = "Verwijder de geselecteerde items";
App::$strings["View Source"] = "Bron weergeven";
App::$strings["Follow Thread"] = "Conversatie volgen";
@@ -1707,24 +1811,16 @@ App::$strings[", and %d other people"] = array(
);
App::$strings["%s like this."] = "%s vinden dit leuk.";
App::$strings["%s don't like this."] = "%s vinden dit niet leuk.";
-App::$strings["Visible to <strong>everybody</strong>"] = "Voor <strong>iedereen</strong> zichtbaar";
-App::$strings["Please enter a video link/URL:"] = "Vul een videolink/URL in:";
-App::$strings["Please enter an audio link/URL:"] = "Vul een audiolink/URL in:";
+App::$strings["Set your location"] = "Locatie instellen";
+App::$strings["Clear browser location"] = "Locatie van webbrowser wissen";
App::$strings["Tag term:"] = "Tag:";
App::$strings["Where are you right now?"] = "Waar bevind je je op dit moment?";
App::$strings["Page link name"] = "Linknaam pagina";
App::$strings["Post as"] = "Bericht plaatsen als";
-App::$strings["upload photo"] = "foto uploaden";
-App::$strings["attach file"] = "bestand toevoegen";
-App::$strings["web link"] = "Weblink";
-App::$strings["Insert video link"] = "Videolink invoegen";
-App::$strings["video link"] = "videolink";
-App::$strings["Insert audio link"] = "Audiolink invoegen";
-App::$strings["audio link"] = "audiolink";
-App::$strings["set location"] = "locatie instellen";
-App::$strings["clear location"] = "locatie wissen";
-App::$strings["permissions"] = "permissies";
+App::$strings["Toggle voting"] = "Peiling in- of uitschakelen";
+App::$strings["Categories (optional, comma-separated list)"] = "Categorieën (optioneel, door komma's gescheiden lijst)";
App::$strings["Set publish date"] = "Publicatiedatum instellen";
+App::$strings["OK"] = "OK";
App::$strings["Discover"] = "Ontdekken";
App::$strings["Imported public streams"] = "Openbare streams importeren";
App::$strings["Commented Order"] = "Nieuwe reacties bovenaan";
@@ -1742,7 +1838,6 @@ App::$strings["About"] = "Over";
App::$strings["Profile Details"] = "Profiel";
App::$strings["Photo Albums"] = "Fotoalbums";
App::$strings["Files and Storage"] = "Bestanden en opslagruimte";
-App::$strings["Chatrooms"] = "Chatkanalen";
App::$strings["Saved Bookmarks"] = "Opgeslagen bladwijzers";
App::$strings["Manage Webpages"] = "Webpagina's beheren";
App::$strings["__ctx:noun__ Attending"] = array(
@@ -1769,54 +1864,99 @@ App::$strings["__ctx:noun__ Abstain"] = array(
0 => "onthouding",
1 => "onthoudingen",
);
-App::$strings["%1\$s's bookmarks"] = "Bladwijzers van %1\$s";
-App::$strings["Missing room name"] = "Naam chatkanaal ontbreekt";
-App::$strings["Duplicate room name"] = "Naam chatkanaal bestaat al";
-App::$strings["Invalid room specifier."] = "Ongeldige omschrijving chatkanaal";
-App::$strings["Room not found."] = "Chatkanaal niet gevonden";
-App::$strings["Room is full"] = "Chatkanaal is vol";
-App::$strings["New window"] = "Nieuw venster";
-App::$strings["Open the selected location in a different window or browser tab"] = "Open de geselecteerde locatie in een ander venster of tab";
-App::$strings["User '%s' deleted"] = "Account '%s' verwijderd";
-App::$strings["Logged out."] = "Uitgelogd.";
-App::$strings["Failed authentication"] = "Mislukte authenticatie";
-App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "De beveiligings-token van het tekstvak was ongeldig. Dit is mogelijk het gevolg van dat er te lang (meer dan 3 uur) gewacht is om de tekst op te slaan. ";
-App::$strings["Public Timeline"] = "Openbare tijdlijn";
App::$strings["Frequently"] = "Regelmatig";
App::$strings["Hourly"] = "Elk uur";
App::$strings["Twice daily"] = "Twee keer per dag";
App::$strings["Daily"] = "Dagelijks";
App::$strings["Weekly"] = "Wekelijks";
App::$strings["Monthly"] = "Maandelijks";
-App::$strings["Friendica"] = "Friendica";
-App::$strings["OStatus"] = "OStatus";
-App::$strings["GNU-Social"] = "GNU social";
-App::$strings["RSS/Atom"] = "RSS/Atom";
-App::$strings["Diaspora"] = "Diaspora";
-App::$strings["Facebook"] = "Facebook";
-App::$strings["Zot"] = "Zot";
-App::$strings["LinkedIn"] = "LinkedIn";
-App::$strings["XMPP/IM"] = "XMPP/IM";
-App::$strings["MySpace"] = "MySpace";
-App::$strings["%d invitation available"] = array(
- 0 => "%d uitnodiging beschikbaar",
- 1 => "%d uitnodigingen beschikbaar",
-);
-App::$strings["Find Channels"] = "Kanalen vinden";
-App::$strings["Enter name or interest"] = "Vul naam of interesse in";
-App::$strings["Connect/Follow"] = "Verbinden/volgen";
-App::$strings["Examples: Robert Morgenstein, Fishing"] = "Voorbeeld: Robert Morgenstein, vissen";
-App::$strings["Random Profile"] = "Willekeurig profiel";
-App::$strings["Invite Friends"] = "Vrienden uitnodigen";
-App::$strings["Advanced example: name=fred and country=iceland"] = "Geavanceerd voorbeeld (Engels): name=jan en country=nederland";
-App::$strings["Saved Folders"] = "Bewaarde mappen";
-App::$strings["Everything"] = "Alles";
-App::$strings["Categories"] = "Categorieën";
-App::$strings["%d connection in common"] = array(
- 0 => "%d gemeenschappelijke connectie",
- 1 => "%d gemeenschappelijke connecties",
-);
-App::$strings["show more"] = "meer connecties weergeven";
+App::$strings["Currently Male"] = "Momenteel man";
+App::$strings["Currently Female"] = "Momenteel vrouw";
+App::$strings["Mostly Male"] = "Voornamelijk man";
+App::$strings["Mostly Female"] = "Voornamelijk vrouw";
+App::$strings["Transgender"] = "Transgender";
+App::$strings["Intersex"] = "Interseksueel";
+App::$strings["Transsexual"] = "Transseksueel";
+App::$strings["Hermaphrodite"] = "Hermafrodiet";
+App::$strings["Neuter"] = "Genderneutraal";
+App::$strings["Non-specific"] = "Niet gespecificeerd";
+App::$strings["Other"] = "Anders";
+App::$strings["Undecided"] = "Nog niet beslist";
+App::$strings["Males"] = "Mannen";
+App::$strings["Females"] = "Vrouwen";
+App::$strings["Gay"] = "Homoseksueel";
+App::$strings["Lesbian"] = "Lesbisch";
+App::$strings["No Preference"] = "Geen voorkeur";
+App::$strings["Bisexual"] = "Biseksueel";
+App::$strings["Autosexual"] = "Autoseksueel";
+App::$strings["Abstinent"] = "Seksuele onthouding";
+App::$strings["Virgin"] = "Maagd";
+App::$strings["Deviant"] = "Afwijkend";
+App::$strings["Fetish"] = "Fetisj";
+App::$strings["Oodles"] = "Veel";
+App::$strings["Nonsexual"] = "Aseksueel";
+App::$strings["Single"] = "Alleen";
+App::$strings["Lonely"] = "Eenzaam";
+App::$strings["Available"] = "Beschikbaar";
+App::$strings["Unavailable"] = "Niet beschikbaar";
+App::$strings["Has crush"] = "Heeft een oogje op iemand";
+App::$strings["Infatuated"] = "Smoorverliefd";
+App::$strings["Dating"] = "Aan het daten";
+App::$strings["Unfaithful"] = "Ontrouw";
+App::$strings["Sex Addict"] = "Seksverslaafd";
+App::$strings["Friends/Benefits"] = "Vriendschap plus";
+App::$strings["Casual"] = "Ongebonden/vluchtig";
+App::$strings["Engaged"] = "Verloofd";
+App::$strings["Married"] = "Getrouwd";
+App::$strings["Imaginarily married"] = "Denkbeeldig getrouwd";
+App::$strings["Partners"] = "Partners";
+App::$strings["Cohabiting"] = "Samenwonend";
+App::$strings["Common law"] = "Common-law-huwelijk";
+App::$strings["Happy"] = "Gelukkig";
+App::$strings["Not looking"] = "Niet op zoek";
+App::$strings["Swinger"] = "Swinger";
+App::$strings["Betrayed"] = "Verraden";
+App::$strings["Separated"] = "Uit elkaar";
+App::$strings["Unstable"] = "Onstabiel";
+App::$strings["Divorced"] = "Gescheiden";
+App::$strings["Imaginarily divorced"] = "Denkbeeldig gescheiden";
+App::$strings["Widowed"] = "Weduwnaar/weduwe";
+App::$strings["Uncertain"] = "Onzeker";
+App::$strings["It's complicated"] = "Het is ingewikkeld";
+App::$strings["Don't care"] = "Maakt mij niks uit";
+App::$strings["Ask me"] = "Vraag het me";
+App::$strings["Visible to your default audience"] = "Voor iedereen zichtbaar, mits niet anders ingesteld";
+App::$strings["Only me"] = "Alleen ik";
+App::$strings["Public"] = "Openbaar";
+App::$strings["Anybody in the \$Projectname network"] = "Iedereen in het \$Projectname-netwerk";
+App::$strings["Any account on %s"] = "Iedereen op %s";
+App::$strings["Any of my connections"] = "Al mijn geaccepteerde connecties";
+App::$strings["Only connections I specifically allow"] = "Alleen connecties die uitdrukkelijk door jou zijn toegestaan";
+App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Geauthenticeerde leden (kan bezoekers van andere netwerken bevatten)";
+App::$strings["Any connections including those who haven't yet been approved"] = "Al mijn geaccepteerde en nog niet geaccepteerde connecties";
+App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Dit is de standaard privacy-instelling voor wie jouw berichten kan bekijken";
+App::$strings["This is your default setting for who can view your default channel profile"] = "Dit is de standaard privacy-instelling voor wie jouw standaardprofiel kan bekijken";
+App::$strings["This is your default setting for who can view your connections"] = "Dit is de standaard privacy-instelling voor wie een lijst met jouw connecties kan bekijken";
+App::$strings["This is your default setting for who can view your file storage and photos"] = "Dit is de standaard privacy-instelling voor wie jouw bestanden en foto's kan bekijken";
+App::$strings["This is your default setting for the audience of your webpages"] = "Dit is de standaard privacy-instelling voor wie jouw webpagina's kan bekijken";
+App::$strings["Not a valid email address"] = "Geen geldig e-mailadres";
+App::$strings["Your email domain is not among those allowed on this site"] = "Jouw e-maildomein is op deze hub niet toegestaan";
+App::$strings["Your email address is already registered at this site."] = "Jouw e-mailadres is al op deze hub geregistreerd.";
+App::$strings["An invitation is required."] = "Een uitnodiging is vereist";
+App::$strings["Invitation could not be verified."] = "Uitnodiging kon niet geverifieerd worden";
+App::$strings["Please enter the required information."] = "Vul de vereiste informatie in.";
+App::$strings["Failed to store account information."] = "Account-informatie kon niet opgeslagen worden.";
+App::$strings["Registration confirmation for %s"] = "Registratiebevestiging voor %s";
+App::$strings["Registration request at %s"] = "Registratiebevestiging voor %s";
+App::$strings["Administrator"] = "Beheerder";
+App::$strings["your registration password"] = "jouw registratiewachtwoord";
+App::$strings["Registration details for %s"] = "Registratiegegevens voor %s";
+App::$strings["Account approved."] = "Account goedgekeurd";
+App::$strings["Registration revoked for %s"] = "Registratie ingetrokken voor %s";
+App::$strings["Account verified. Please login."] = "Account is geverifieerd. Je kan inloggen.";
+App::$strings["Click here to upgrade."] = "Klik hier om te upgraden.";
+App::$strings["This action exceeds the limits set by your subscription plan."] = "Deze handeling overschrijdt de beperkingen die voor jouw abonnement gelden.";
+App::$strings["This action is not available under your subscription plan."] = "Deze handeling is niet mogelijk met jouw abonnement.";
App::$strings["Item was not found."] = "Item niet gevonden";
App::$strings["No source file."] = "Geen bronbestand.";
App::$strings["Cannot locate file to replace"] = "Kan het te vervangen bestand niet vinden";
@@ -1832,92 +1972,44 @@ App::$strings["Path not found."] = "Pad niet gevonden";
App::$strings["mkdir failed."] = "directory aanmaken (mkdir) mislukt.";
App::$strings["database storage failed."] = "opslag in database mislukt.";
App::$strings["Empty path"] = "Ontbrekend bestandspad";
-App::$strings["Birthday"] = "Verjaardag of geboortedatum";
-App::$strings["Age: "] = "Leeftijd:";
-App::$strings["YYYY-MM-DD or MM-DD"] = "JJJJ-MM-DD of MM-DD";
-App::$strings["never"] = "nooit";
-App::$strings["less than a second ago"] = "minder dan een seconde geleden";
-App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "%1\$d %2\$s geleden";
-App::$strings["__ctx:relative_date__ year"] = array(
- 0 => "jaar",
- 1 => "jaren",
-);
-App::$strings["__ctx:relative_date__ month"] = array(
- 0 => "maand",
- 1 => "maanden",
-);
-App::$strings["__ctx:relative_date__ week"] = array(
- 0 => "week",
- 1 => "weken",
-);
-App::$strings["__ctx:relative_date__ day"] = array(
- 0 => "dag",
- 1 => "dagen",
-);
-App::$strings["__ctx:relative_date__ hour"] = array(
- 0 => "uur",
- 1 => "uren",
-);
-App::$strings["__ctx:relative_date__ minute"] = array(
- 0 => "minuut",
- 1 => "minuten",
-);
-App::$strings["__ctx:relative_date__ second"] = array(
- 0 => "seconde",
- 1 => "seconden",
-);
-App::$strings["%1\$s's birthday"] = "Verjaardag van %1\$s";
-App::$strings["Happy Birthday %1\$s"] = "Gefeliciteerd met je verjaardag %1\$s";
-App::$strings["Directory Options"] = "Opties kanalengids";
-App::$strings["Safe Mode"] = "Veilig zoeken";
-App::$strings["Public Forums Only"] = "Alleen openbare forums";
-App::$strings["This Website Only"] = "Alleen deze hub";
-App::$strings["\$Projectname Notification"] = "\$Projectname-notificatie";
-App::$strings["\$projectname"] = "\$projectname";
-App::$strings["Thank You,"] = "Bedankt,";
-App::$strings["%s Administrator"] = "Beheerder %s";
-App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
-App::$strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla:Notificatie] Nieuw privébericht ontvangen op %s";
-App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s zond jou een nieuw privébericht om %3\$s.";
-App::$strings["%1\$s sent you %2\$s."] = "%1\$s zond jou %2\$s.";
-App::$strings["a private message"] = "een privébericht";
-App::$strings["Please visit %s to view and/or reply to your private messages."] = "Bezoek %s om je privéberichten te bekijken en/of er op te reageren.";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]een %4\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]een %5\$s van %4\$s[/zrl]";
-App::$strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]jouw %4\$s[/zrl]";
-App::$strings["[Hubzilla:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Hubzilla:Notificatie] Reactie op conversatie #%1\$d door %2\$s";
-App::$strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s gaf een reactie op een bericht/conversatie die jij volgt.";
-App::$strings["Please visit %s to view and/or reply to the conversation."] = "Bezoek %s om de conversatie te bekijken en/of er op te reageren.";
-App::$strings["[Hubzilla:Notify] %s posted to your profile wall"] = "[Hubzilla:Notificatie] %s heeft een bericht op jouw kanaal geplaatst";
-App::$strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s heeft om %3\$s een bericht op jouw kanaal geplaatst";
-App::$strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s heeft een bericht op [zrl=%3\$s]jouw kanaal[/zrl] geplaatst";
-App::$strings["[Hubzilla:Notify] %s tagged you"] = "[Hubzilla:Notificatie] %s heeft je genoemd";
-App::$strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s noemde jou op %3\$s";
-App::$strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]noemde jou[/zrl].";
-App::$strings["[Hubzilla:Notify] %1\$s poked you"] = "[Hubzilla:Notificatie] %1\$s heeft je aangestoten";
-App::$strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s heeft je aangestoten op %3\$s";
-App::$strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]heeft je aangestoten[/zrl].";
-App::$strings["[Hubzilla:Notify] %s tagged your post"] = "[Hubzilla:Notificatie] %s heeft jouw bericht getagd";
-App::$strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s heeft jouw bericht om %3\$s getagd";
-App::$strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s heeft [zrl=%3\$s]jouw bericht[/zrl] getagd";
-App::$strings["[Hubzilla:Notify] Introduction received"] = "[Hubzilla:Notificatie] Connectieverzoek ontvangen";
-App::$strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, je hebt een nieuw connectieverzoek ontvangen van '%2\$s' op %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, je hebt een [zrl=%2\$s]nieuw connectieverzoek[/zrl] ontvangen van %3\$s.";
-App::$strings["You may visit their profile at %s"] = "Je kan het profiel bekijken op %s";
-App::$strings["Please visit %s to approve or reject the connection request."] = "Bezoek %s om het connectieverzoek te accepteren of af te wijzen.";
-App::$strings["[Hubzilla:Notify] Friend suggestion received"] = "[Hubzilla:Notificatie] Kanaalvoorstel ontvangen";
-App::$strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, je hebt een kanaalvoorstel ontvangen van '%2\$s' om %3\$s";
-App::$strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, je hebt [zrl=%2\$s]een kanaalvoorstel[/zrl] ontvangen voor %3\$s van %4\$s.";
-App::$strings["Name:"] = "Naam:";
-App::$strings["Photo:"] = "Foto:";
-App::$strings["Please visit %s to approve or reject the suggestion."] = "Bezoek %s om het voorstel te accepteren of af te wijzen.";
-App::$strings["[Hubzilla:Notify]"] = "[Hubzilla:Notificatie]";
-App::$strings["This event has been added to your calendar."] = "Dit evenement is aan jouw agenda toegevoegd.";
-App::$strings["Not specified"] = "Niet aangegeven";
-App::$strings["Needs Action"] = "Actie vereist";
-App::$strings["Completed"] = "Voltooid";
-App::$strings["In Process"] = "In behandeling";
-App::$strings["Cancelled"] = "Geannuleerd";
+App::$strings["Unable to obtain identity information from database"] = "Niet in staat om identiteitsinformatie uit de database te verkrijgen";
+App::$strings["Empty name"] = "Ontbrekende naam";
+App::$strings["Name too long"] = "Naam te lang";
+App::$strings["No account identifier"] = "Geen account-identificator";
+App::$strings["Nickname is required."] = "Bijnaam is verplicht";
+App::$strings["Reserved nickname. Please choose another."] = "Deze naam is gereserveerd. Kies een andere.";
+App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Deze naam heeft niet ondersteunde karakters of is al op deze hub in gebruik.";
+App::$strings["Unable to retrieve created identity"] = "Niet in staat om aangemaakte identiteit te vinden";
+App::$strings["Default Profile"] = "Standaardprofiel";
+App::$strings["Requested channel is not available."] = "Opgevraagd kanaal is niet beschikbaar.";
+App::$strings["Create New Profile"] = "Nieuw profiel aanmaken";
+App::$strings["Visible to everybody"] = "Voor iedereen zichtbaar";
+App::$strings["Gender:"] = "Geslacht:";
+App::$strings["Status:"] = "Status:";
+App::$strings["Homepage:"] = "Homepagina:";
+App::$strings["Online Now"] = "Nu online";
+App::$strings["Like this channel"] = "Vind dit kanaal leuk";
+App::$strings["j F, Y"] = "F j Y";
+App::$strings["j F"] = "F j";
+App::$strings["Birthday:"] = "Geboortedatum:";
+App::$strings["for %1\$d %2\$s"] = "voor %1\$d %2\$s";
+App::$strings["Sexual Preference:"] = "Seksuele voorkeur:";
+App::$strings["Tags:"] = "Tags:";
+App::$strings["Political Views:"] = "Politieke overtuigingen:";
+App::$strings["Religion:"] = "Religie:";
+App::$strings["Hobbies/Interests:"] = "Hobby's/interesses:";
+App::$strings["Likes:"] = "Houdt van:";
+App::$strings["Dislikes:"] = "Houdt niet van:";
+App::$strings["Contact information and Social Networks:"] = "Contactinformatie en sociale netwerken:";
+App::$strings["My other channels:"] = "Mijn andere kanalen";
+App::$strings["Musical interests:"] = "Muzikale interesses:";
+App::$strings["Books, literature:"] = "Boeken, literatuur:";
+App::$strings["Television:"] = "Televisie:";
+App::$strings["Film/dance/culture/entertainment:"] = "Films/dansen/cultuur/vermaak:";
+App::$strings["Love/Romance:"] = "Liefde/romantiek:";
+App::$strings["Work/employment:"] = "Werk/beroep:";
+App::$strings["School/education:"] = "School/opleiding:";
+App::$strings["Like this thing"] = "Vind dit ding leuk";
App::$strings["General Features"] = "Algemene functies";
App::$strings["Content Expiration"] = "Inhoud laten verlopen";
App::$strings["Remove posts/comments and/or private messages at a future time"] = "Berichten, reacties en/of privéberichten na een bepaalde tijd verwijderen";
@@ -1962,7 +2054,6 @@ App::$strings["Search by Date"] = "Zoek op datum";
App::$strings["Ability to select posts by date ranges"] = "Mogelijkheid om berichten op datum te filteren ";
App::$strings["Privacy Groups"] = "Privacygroepen";
App::$strings["Enable management and selection of privacy groups"] = "Beheer en selectie van privacygroepen inschakelen";
-App::$strings["Saved Searches"] = "Opgeslagen zoekopdrachten";
App::$strings["Save search terms for re-use"] = "Sla zoekopdrachten op voor hergebruik";
App::$strings["Network Personal Tab"] = "Persoonlijke netwerktab";
App::$strings["Enable tab to display only Network posts that you've interacted on"] = "Sta het toe dat de tab netwerkberichten toont waarmee je interactie had";
@@ -1972,13 +2063,14 @@ App::$strings["Affinity Tool"] = "Verwantschapsfilter";
App::$strings["Filter stream activity by depth of relationships"] = "Filter wat je in jouw grid ziet op hoe goed je iemand kent of mag";
App::$strings["Connection Filtering"] = "Berichtenfilters";
App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filter binnenkomende berichten van connecties aan de hand van trefwoorden en taal";
-App::$strings["Suggest Channels"] = "Kanalen voorstellen";
App::$strings["Show channel suggestions"] = "Voor jou mogelijk interessante kanalen voorstellen";
App::$strings["Post/Comment Tools"] = "Bericht- en reactiehulpmiddelen";
App::$strings["Community Tagging"] = "Taggen door anderen";
App::$strings["Ability to tag existing posts"] = "Geeft andere mensen de mogelijkheid om jouw (bestaande) berichten te taggen";
App::$strings["Post Categories"] = "Categorieën berichten";
App::$strings["Add categories to your posts"] = "Voeg categorieën toe aan je berichten";
+App::$strings["Emoji Reactions"] = "Emoji-reacties";
+App::$strings["Add emoji reaction ability to posts"] = "Emoji-reacties in berichten toestaan";
App::$strings["Ability to file posts under folders"] = "Mogelijkheid om berichten in mappen op te slaan";
App::$strings["Dislike Posts"] = "Vind berichten niet leuk";
App::$strings["Ability to dislike posts/comments"] = "Mogelijkheid om berichten en reacties niet leuk te vinden";
@@ -1986,119 +2078,66 @@ App::$strings["Star Posts"] = "Geef berichten een ster";
App::$strings["Ability to mark special posts with a star indicator"] = "Mogelijkheid om speciale berichten met een ster te markeren";
App::$strings["Tag Cloud"] = "Tagwolk";
App::$strings["Provide a personal tag cloud on your channel page"] = "Zorgt voor een persoonlijke wolk met tags op jouw kanaalpagina";
-App::$strings["Channel is blocked on this site."] = "Kanaal is op deze hub geblokkeerd.";
-App::$strings["Channel location missing."] = "Ontbrekende kanaallocatie.";
-App::$strings["Response from remote channel was incomplete."] = "Antwoord van het kanaal op afstand was niet volledig.";
-App::$strings["Channel was deleted and no longer exists."] = "Kanaal is verwijderd en bestaat niet meer.";
-App::$strings["Protocol disabled."] = "Protocol uitgeschakeld.";
-App::$strings["Channel discovery failed."] = "Kanaal ontdekken mislukt.";
-App::$strings["Cannot connect to yourself."] = "Kan niet met jezelf verbinden";
+App::$strings["Embedded content"] = "Ingesloten (embedded) inhoud";
+App::$strings["Embedding disabled"] = "Insluiten (embedding) uitgeschakeld";
+App::$strings["Who can see this?"] = "Wie kan dit zien?";
+App::$strings["Custom selection"] = "Handmatige selectie";
+App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Kies \"Tonen\" om weergave toe te staan. Met \"Niet tonen\" kan je uitzonderingen maken op \"Tonen\".";
+App::$strings["Show"] = "Tonen";
+App::$strings["Don't show"] = "Niet tonen";
+App::$strings["Other networks and post services"] = "Andere netwerken en diensten";
+App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Permissies van berichten %s zijn niet meer te veranderen %s nadat een bericht is gedeeld.</br />Met deze permissies bepaal je wie het bericht kan zien.";
+App::$strings["Logged out."] = "Uitgelogd.";
+App::$strings["Failed authentication"] = "Mislukte authenticatie";
+App::$strings["Birthday"] = "Verjaardag of geboortedatum";
+App::$strings["Age: "] = "Leeftijd:";
+App::$strings["YYYY-MM-DD or MM-DD"] = "JJJJ-MM-DD of MM-DD";
+App::$strings["never"] = "nooit";
+App::$strings["less than a second ago"] = "minder dan een seconde geleden";
+App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "%1\$d %2\$s geleden";
+App::$strings["__ctx:relative_date__ year"] = array(
+ 0 => "jaar",
+ 1 => "jaren",
+);
+App::$strings["__ctx:relative_date__ month"] = array(
+ 0 => "maand",
+ 1 => "maanden",
+);
+App::$strings["__ctx:relative_date__ week"] = array(
+ 0 => "week",
+ 1 => "weken",
+);
+App::$strings["__ctx:relative_date__ day"] = array(
+ 0 => "dag",
+ 1 => "dagen",
+);
+App::$strings["__ctx:relative_date__ hour"] = array(
+ 0 => "uur",
+ 1 => "uren",
+);
+App::$strings["__ctx:relative_date__ minute"] = array(
+ 0 => "minuut",
+ 1 => "minuten",
+);
+App::$strings["__ctx:relative_date__ second"] = array(
+ 0 => "seconde",
+ 1 => "seconden",
+);
+App::$strings["%1\$s's birthday"] = "Verjaardag van %1\$s";
+App::$strings["Happy Birthday %1\$s"] = "Gefeliciteerd met je verjaardag %1\$s";
App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Een verwijderde collectie met deze naam is gereactiveerd. Bestaande itemrechten <strong>kunnen</strong> van toepassing zijn op deze collectie en toekomstige leden. Wanneer je dit niet zo bedoeld hebt, moet je een nieuwe collectie met een andere naam aanmaken.";
App::$strings["Add new connections to this privacy group"] = "Voeg nieuwe connecties aan deze privacygroep toe";
App::$strings["edit"] = "bewerken";
App::$strings["Edit group"] = "Privacygroep bewerken";
App::$strings["Add privacy group"] = "Privacygroep toevoegen";
App::$strings["Channels not in any privacy group"] = "Kanalen die zich in geen enkele privacygroep bevinden";
-App::$strings["add"] = "toevoegen";
-App::$strings["Image/photo"] = "Afbeelding/foto";
-App::$strings["Encrypted content"] = "Versleutelde inhoud";
-App::$strings["Install %s element: "] = "Installeer %s-element: ";
-App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Dit bericht heeft een te installeren %s-element, maar je hebt geen permissies om het op deze hub te installeren.";
-App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s schreef het volgende %2\$s %3\$s";
-App::$strings["Click to open/close"] = "Klik om te openen of te sluiten";
-App::$strings["spoiler"] = "spoiler";
-App::$strings["Different viewers will see this text differently"] = "Deze tekst wordt per persoon anders weergeven.";
-App::$strings["$1 wrote:"] = "$1 schreef:";
-App::$strings["(Unknown)"] = "(Onbekend)";
-App::$strings["Visible to anybody on the internet."] = "Voor iedereen op het internet zichtbaar.";
-App::$strings["Visible to you only."] = "Alleen voor jou zichtbaar.";
-App::$strings["Visible to anybody in this network."] = "Voor iedereen in dit netwerk zichtbaar.";
-App::$strings["Visible to anybody authenticated."] = "Voor iedereen die geauthenticeerd is zichtbaar.";
-App::$strings["Visible to anybody on %s."] = "Voor iedereen op %s zichtbaar.";
-App::$strings["Visible to all connections."] = "Voor alle connecties zichtbaar.";
-App::$strings["Visible to approved connections."] = "Voor alle geaccepteerde connecties zichtbaar.";
-App::$strings["Visible to specific connections."] = "Voor specifieke connecties zichtbaar.";
-App::$strings["Privacy group is empty."] = "Privacygroep is leeg";
-App::$strings["Privacy group: %s"] = "Privacygroep: %s";
-App::$strings["Connection not found."] = "Connectie niet gevonden.";
-App::$strings["profile photo"] = "profielfoto";
-App::$strings["view full size"] = "volledige grootte tonen";
-App::$strings["No Subject"] = "Geen onderwerp";
-App::$strings["System"] = "Systeem";
-App::$strings["Create Personal App"] = "Persoonlijke app maken";
-App::$strings["Edit Personal App"] = "Persoonlijke app bewerken";
-App::$strings["Suggestions"] = "Voorgestelde kanalen";
-App::$strings["See more..."] = "Meer...";
-App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Je hebt %1$.0f van de %2$.0f toegestane connecties.";
-App::$strings["Add New Connection"] = "Nieuwe connectie toevoegen";
-App::$strings["Enter channel address"] = "Vul kanaaladres in";
-App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Voorbeelden: bob@example.com, http://example.com/barbara";
-App::$strings["Notes"] = "Aantekeningen";
-App::$strings["Remove term"] = "Verwijder zoekterm";
-App::$strings["Archives"] = "Archieven";
-App::$strings["Refresh"] = "Vernieuwen";
-App::$strings["Account settings"] = "Account";
-App::$strings["Channel settings"] = "Kanaal";
-App::$strings["Additional features"] = "Extra functies";
-App::$strings["Feature/Addon settings"] = "Plugin-instellingen";
-App::$strings["Display settings"] = "Weergave";
-App::$strings["Manage locations"] = "Locaties beheren";
-App::$strings["Export channel"] = "Kanaal exporteren";
-App::$strings["Connected apps"] = "Verbonden applicaties";
-App::$strings["Premium Channel Settings"] = "Instellingen premiumkanaal";
-App::$strings["Private Mail Menu"] = "Privéberichten";
-App::$strings["Combined View"] = "Gecombineerd postvak";
-App::$strings["Inbox"] = "Postvak IN";
-App::$strings["Outbox"] = "Postvak UIT";
-App::$strings["New Message"] = "Nieuw bericht";
-App::$strings["Conversations"] = "Conversaties";
-App::$strings["Received Messages"] = "Ontvangen berichten";
-App::$strings["Sent Messages"] = "Verzonden berichten";
-App::$strings["No messages."] = "Geen berichten";
-App::$strings["Delete conversation"] = "Verwijder conversatie";
-App::$strings["Events Menu"] = "Agenda-menu";
-App::$strings["Day View"] = "Dag tonen";
-App::$strings["Week View"] = "Week tonen";
-App::$strings["Month View"] = "Maand tonen";
-App::$strings["Events Tools"] = "Agenda-hulpmiddelen";
-App::$strings["Export Calendar"] = "Exporteren";
-App::$strings["Import Calendar"] = "Importeren";
-App::$strings["Overview"] = "Overzicht";
-App::$strings["Chat Members"] = "Chatleden";
-App::$strings["Bookmarked Chatrooms"] = "Bladwijzers van chatkanalen";
-App::$strings["Suggested Chatrooms"] = "Voorgestelde chatkanalen";
-App::$strings["photo/image"] = "foto/afbeelding";
-App::$strings["Click to show more"] = "Klik voor meer";
-App::$strings["Rating Tools"] = "Beoordelingen";
-App::$strings["Rate Me"] = "Beoordeel mij";
-App::$strings["View Ratings"] = "Bekijk beoordelingen";
-App::$strings["Forums"] = "Forums";
-App::$strings["Tasks"] = "Taken";
-App::$strings["Documentation"] = "Documentatie";
-App::$strings["Project/Site Information"] = "Project- en hub-informatie";
-App::$strings["For Members"] = "Voor leden";
-App::$strings["For Administrators"] = "Voor beheerders";
-App::$strings["For Developers"] = "Voor ontwikkelaars";
-App::$strings["Accounts"] = "Accounts";
-App::$strings["Member registrations waiting for confirmation"] = "Accounts die op goedkeuring wachten";
-App::$strings["Inspect queue"] = "Inspecteer berichtenwachtrij";
-App::$strings["DB updates"] = "Database-updates";
-App::$strings["Admin"] = "Beheer";
-App::$strings["Plugin Features"] = "Plugin-opties";
-App::$strings["Tags"] = "Tags";
-App::$strings["Keywords"] = "Trefwoorden";
-App::$strings["have"] = "heb";
-App::$strings["has"] = "heeft";
-App::$strings["want"] = "wil";
-App::$strings["wants"] = "wil";
-App::$strings["likes"] = "vindt dit leuk";
-App::$strings["dislikes"] = "vindt dit niet leuk";
App::$strings["Delete this item?"] = "Dit item verwijderen?";
App::$strings["[-] show less"] = "[-] minder reacties weergeven";
App::$strings["[+] expand"] = "[+] uitklappen";
App::$strings["[-] collapse"] = "[-] inklappen";
App::$strings["Password too short"] = "Wachtwoord te kort";
App::$strings["Passwords do not match"] = "Wachtwoorden komen niet overeen";
+App::$strings["everybody"] = "iedereen";
App::$strings["Secret Passphrase"] = "Geheim wachtwoord";
App::$strings["Passphrase hint"] = "Wachtwoordhint";
App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Mededeling: de permissies zijn veranderd, maar zijn nog niet opgeslagen.";
@@ -2150,52 +2189,28 @@ App::$strings["__ctx:calendar__ month"] = "maand";
App::$strings["__ctx:calendar__ week"] = "week";
App::$strings["__ctx:calendar__ day"] = "dag";
App::$strings["__ctx:calendar__ All day"] = "hele dag";
-App::$strings["No recipient provided."] = "Geen ontvanger opgegeven.";
-App::$strings["[no subject]"] = "[geen onderwerp]";
-App::$strings["Unable to determine sender."] = "Afzender kan niet bepaald worden.";
-App::$strings["Stored post could not be verified."] = "Opgeslagen bericht kon niet worden geverifieerd.";
-App::$strings["Logout"] = "Uitloggen";
-App::$strings["End this session"] = "Beëindig deze sessie";
-App::$strings["Home"] = "Home";
-App::$strings["Your posts and conversations"] = "Jouw kanaal";
-App::$strings["Your profile page"] = "Jouw profielpagina";
-App::$strings["Manage/Edit profiles"] = "Beheer/wijzig profielen";
-App::$strings["Edit your profile"] = "Jouw profiel bewerken";
-App::$strings["Your photos"] = "Jouw foto's";
-App::$strings["Your files"] = "Jouw bestanden";
-App::$strings["Your chatrooms"] = "Jouw chatkanalen";
-App::$strings["Your bookmarks"] = "Jouw bladwijzers";
-App::$strings["Your webpages"] = "Jouw webpagina's";
-App::$strings["Sign in"] = "Inloggen";
-App::$strings["%s - click to logout"] = "%s - klik om uit te loggen";
-App::$strings["Remote authentication"] = "Authenticatie op afstand";
-App::$strings["Click to authenticate to your home hub"] = "Authenticeer jezelf via (bijvoorbeeld) jouw hub";
-App::$strings["Home Page"] = "Homepage";
-App::$strings["Create an account"] = "Maak een account aan";
-App::$strings["Help and documentation"] = "Hulp en documentatie";
-App::$strings["Applications, utilities, links, games"] = "Apps";
-App::$strings["Search site @name, #tag, ?docs, content"] = "Zoek een @kanaal, doorzoek inhoud hub met tekst en #tags, of doorzoek ?documentatie ";
-App::$strings["Channel Directory"] = "Kanalengids";
-App::$strings["Your grid"] = "Jouw grid";
-App::$strings["Mark all grid notifications seen"] = "Markeer alle gridnotificaties als bekeken";
-App::$strings["Channel home"] = "Jouw kanaal";
-App::$strings["Mark all channel notifications seen"] = "Alle kanaalnotificaties als gelezen markeren";
-App::$strings["Notices"] = "Notificaties";
-App::$strings["Notifications"] = "Notificaties";
-App::$strings["See all notifications"] = "Alle notificaties weergeven";
-App::$strings["Private mail"] = "Privéberichten";
-App::$strings["See all private messages"] = "Alle privéberichten weergeven";
-App::$strings["Mark all private messages seen"] = "Markeer alle privéberichten als bekeken";
-App::$strings["Event Calendar"] = "Agenda";
-App::$strings["See all events"] = "Alle gebeurtenissen weergeven";
-App::$strings["Mark all events seen"] = "Markeer alle gebeurtenissen als bekeken";
-App::$strings["Manage Your Channels"] = "Beheer je kanalen";
-App::$strings["Account/Channel Settings"] = "Account-/kanaal-instellingen";
-App::$strings["Site Setup and Configuration"] = "Hub instellen en beheren";
-App::$strings["@name, #tag, ?doc, content"] = "@kanaal, #tag, inhoud, ?hulp";
-App::$strings["Please wait..."] = "Wachten aub...";
-App::$strings["Embedded content"] = "Ingesloten (embedded) inhoud";
-App::$strings["Embedding disabled"] = "Insluiten (embedding) uitgeschakeld";
+App::$strings["view full size"] = "volledige grootte tonen";
+App::$strings["No Subject"] = "Geen onderwerp";
+App::$strings["Friendica"] = "Friendica";
+App::$strings["OStatus"] = "OStatus";
+App::$strings["GNU-Social"] = "GNU social";
+App::$strings["RSS/Atom"] = "RSS/Atom";
+App::$strings["Diaspora"] = "Diaspora";
+App::$strings["Facebook"] = "Facebook";
+App::$strings["Zot"] = "Zot";
+App::$strings["LinkedIn"] = "LinkedIn";
+App::$strings["XMPP/IM"] = "XMPP/IM";
+App::$strings["MySpace"] = "MySpace";
+App::$strings["Image exceeds website size limit of %lu bytes"] = "Afbeelding is groter dan op deze hub toegestane limiet van %lu bytes";
+App::$strings["Image file is empty."] = "Afbeeldingsbestand is leeg";
+App::$strings["Photo storage failed."] = "Foto kan niet worden opgeslagen";
+App::$strings["a new photo"] = "een nieuwe foto";
+App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s plaatste %2\$s op %3\$s";
+App::$strings["Upload New Photos"] = "Nieuwe foto's uploaden";
+App::$strings["Invalid data packet"] = "Datapakket ongeldig";
+App::$strings["Unable to verify channel signature"] = "Kanaalkenmerk kon niet worden geverifieerd. ";
+App::$strings["Unable to verify site signature for %s"] = "Hubkenmerk voor %s kon niet worden geverifieerd";
+App::$strings["invalid target signature"] = "ongeldig doelkenmerk";
App::$strings["New Page"] = "Nieuwe pagina";
App::$strings["Title"] = "Titel";
App::$strings["Can view my normal stream and posts"] = "Kan mijn normale kanaalstream en berichten bekijken";
@@ -2233,12 +2248,13 @@ App::$strings["Special Purpose"] = "Speciaal doel";
App::$strings["Special - Celebrity/Soapbox"] = "Speciaal - Beroemdheid/alleen volgen";
App::$strings["Special - Group Repository"] = "Speciaal - Groepsopslag";
App::$strings["Custom/Expert Mode"] = "Expertmodus/handmatig aanpassen";
-App::$strings["Image exceeds website size limit of %lu bytes"] = "Afbeelding is groter dan op deze hub toegestane limiet van %lu bytes";
-App::$strings["Image file is empty."] = "Afbeeldingsbestand is leeg";
-App::$strings["Photo storage failed."] = "Foto kan niet worden opgeslagen";
-App::$strings["a new photo"] = "een nieuwe foto";
-App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s plaatste %2\$s op %3\$s";
-App::$strings["Upload New Photos"] = "Nieuwe foto's uploaden";
+App::$strings[" and "] = " en ";
+App::$strings["public profile"] = "openbaar profiel";
+App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s veranderde %2\$s naar &ldquo;%3\$s&rdquo;";
+App::$strings["Visit %1\$s's %2\$s"] = "Bezoek het %2\$s van %1\$s";
+App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s heeft een aangepaste %2\$s, %3\$s veranderd.";
+App::$strings["Attachments:"] = "Bijlagen:";
+App::$strings["\$Projectname event notification:"] = "Notificatie \$Projectname-gebeurtenis:";
App::$strings["Focus (Hubzilla default)"] = "Focus (Hubzilla-standaard)";
App::$strings["Theme settings"] = "Thema-instellingen";
App::$strings["Select scheme"] = "Kies schema van thema";
diff --git a/view/pdl/mod_wiki.pdl b/view/pdl/mod_wiki.pdl
new file mode 100644
index 000000000..76ed1c70c
--- /dev/null
+++ b/view/pdl/mod_wiki.pdl
@@ -0,0 +1,4 @@
+[region=aside]
+[widget=wiki_list][/widget]
+[widget=wiki_pages][/widget]
+[/region]
diff --git a/view/php/theme_init.php b/view/php/theme_init.php
index 7c020a51f..648b144b3 100644
--- a/view/php/theme_init.php
+++ b/view/php/theme_init.php
@@ -21,7 +21,7 @@ head_add_js('spin.js');
head_add_js('jquery.spin.js');
head_add_js('jquery.textinputs.js');
head_add_js('autocomplete.js');
-head_add_js('library/jquery-textcomplete/jquery.textcomplete.min.js');
+head_add_js('library/jquery-textcomplete/jquery.textcomplete.js');
//head_add_js('library/colorbox/jquery.colorbox.js');
head_add_js('library/jquery.timeago.js');
head_add_js('library/readmore.js/readmore.js');
diff --git a/view/pt-br/htconfig.tpl b/view/pt-br/htconfig.tpl
index d0a799cf6..802b31b49 100644
--- a/view/pt-br/htconfig.tpl
+++ b/view/pt-br/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/ru/htconfig.tpl b/view/ru/htconfig.tpl
index 97155ea42..5456d12c1 100644
--- a/view/ru/htconfig.tpl
+++ b/view/ru/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/sv/htconfig.tpl b/view/sv/htconfig.tpl
index 97155ea42..5456d12c1 100644
--- a/view/sv/htconfig.tpl
+++ b/view/sv/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css
index ebabd68e4..30b0cebb4 100644
--- a/view/theme/redbasic/css/style.css
+++ b/view/theme/redbasic/css/style.css
@@ -113,9 +113,6 @@ pre code {
}
code {
- font-size: 1em;
- padding: 1em 1.5em;
- border: 1px solid #ccc;
background: #ccc;
color: #000;
}
@@ -526,6 +523,10 @@ footer {
clear: both;
}
+#nav-notifications-template {
+ display: none;
+}
+
#nav-searchbar {
float: right;
margin-top: 2px;
diff --git a/view/theme/redbasic/schema/bluegrid.css b/view/theme/redbasic/schema/bluegrid.css
index 591e820a1..64e5a2c95 100644
--- a/view/theme/redbasic/schema/bluegrid.css
+++ b/view/theme/redbasic/schema/bluegrid.css
@@ -333,6 +333,15 @@ input {
text-decoration: none;
}
+.section-content-info-wrapper {
+ color: #fff;
+ background-color: #43488A;
+}
+
+.section-content-info-wrapper a {
+ color: #fff;
+}
+
.btn, #event-edit-form .btn, input.directory-rating-submit {
border: 1px solid #FFF;
color: #FFF;
@@ -450,7 +459,7 @@ a:hover > .fa-trash-o {
.navbar-inverse .navbar-toggle .icon-bar {
background-color: #FFF;
}
- .navbar-inverse .navbar-toggle .fa-arrow-circle-down, .navbar-inverse .navbar-toggle .fa-arrow-circle-right, .navbar-inverse .navbar-toggle .fa-arrow-circle-up, .navbar-inverse .navbar-toggle .fa-arrow-circle-left {
+ .navbar-inverse .navbar-toggle .fa-arrow-circle-down, .navbar-inverse .navbar-toggle .fa-arrow-circle-right, .navbar-inverse .navbar-toggle .fa-arrow-circle-up, .navbar-inverse .navbar-toggle .fa-arrow-circle-left, .navbar-inverse .navbar-toggle .fa-question-circle {
color: #FFF;
}
.navbar-inverse .navbar-toggle:hover .fa-arrow-circle-down, .navbar-inverse .navbar-toggle:focus .fa-arrow-circle-down, .navbar-inverse .navbar-toggle:hover .fa-arrow-circle-right, .navbar-inverse .navbar-toggle:focus .fa-arrow-circle-right, .navbar-inverse .navbar-toggle:hover .fa-arrow-circle-up, .navbar-inverse .navbar-toggle:focus .fa-arrow-circle-up, .navbar-inverse .navbar-toggle:hover .fa-arrow-circle-left, .navbar-inverse .navbar-toggle:focus .fa-arrow-circle-left {
diff --git a/view/theme/redbasic/schema/dark.css b/view/theme/redbasic/schema/dark.css
index fb18a4159..ea50f50ec 100644
--- a/view/theme/redbasic/schema/dark.css
+++ b/view/theme/redbasic/schema/dark.css
@@ -63,7 +63,7 @@
background-image: linear-gradient(to bottom, #1E1E1E 0px, #1E1E1E 100%);
}
-.alert-info {
+.alert-info, .section-content-info-wrapper {
color: #CCC;
background-color:#333;
border-color: #444;
@@ -79,16 +79,35 @@
color: #fff;
}
+#acl-select {
+ background-color:#333;
+ border: 1px solid #444;
+ color: #FFF;
+}
+
#acl-showall {
- color: #fff;
+ color: #FFF;
}
+
#acl-list {
- border: 1px solid #333;
+ border: 1px solid #444;
+}
+
+#acl-search-wrapper {
+ border-bottom: 1px solid #444;
}
.acl-list-item {
- border: 1px solid #333;
+ border: 1px solid #222;
+ color: #CCC;
+ background-color:#333;
+}
+
+.abook-self {
+ border: 1px solid #222;
+ color: #555;
+ background-color:#111;
}
.modal-content {
@@ -312,7 +331,7 @@ pre {
background-image: none;
}
-.open .dropdown-toggle.btn-default {
+.open .dropdown-toggle.btn-default, .open .dropdown-toggle.btn-default:focus {
color: #ccc;
background-color: #222;
border-color: #222;
diff --git a/view/theme/redbasic/schema/simple_black_on_white.css b/view/theme/redbasic/schema/simple_black_on_white.css
index e5cfb5f46..b7cca0930 100644
--- a/view/theme/redbasic/schema/simple_black_on_white.css
+++ b/view/theme/redbasic/schema/simple_black_on_white.css
@@ -51,8 +51,21 @@
background-image: linear-gradient(to bottom, #fff 0px, #fff 100%);
}
+#acl-select {
+ border: 1px solid #000;
+ color: #000;
+}
+
+.acl-list-item {
+ border: 1px solid #000;
+ background-color: #FFF;
+
+}
+
.abook-self {
- background-color: #fff;
+ border: 1px solid #EEE;
+ color: #ccc;
+ background-color: #EEE;
}
.acl-button-show,
@@ -60,18 +73,10 @@
color: #000;
}
-#acl-showall {
- color: #000;
-}
-
#acl-list {
border: 1px solid #fff;
}
-.acl-list-item {
- border: 1px solid #fff;
-}
-
.modal-content {
background-color: #fff;
}
diff --git a/view/theme/redbasic/schema/simple_green_on_black.css b/view/theme/redbasic/schema/simple_green_on_black.css
index 7e3f901ef..990980e8f 100644
--- a/view/theme/redbasic/schema/simple_green_on_black.css
+++ b/view/theme/redbasic/schema/simple_green_on_black.css
@@ -51,8 +51,30 @@
background-image: linear-gradient(to bottom, #000 0px, #000 100%);
}
+.section-content-info-wrapper {
+ color: #50f148;
+ background-color:#000;
+ border: 1px solid #143D12 !important;
+}
+
+.modal-header {
+ border-bottom: 1px solid #143D12;
+}
+
+.modal-footer {
+ border-top: 1px solid #143D12;
+}
+
+#acl-select {
+ background-color: #000;
+ border: 1px solid #143D12;
+ color: #50f148;
+}
+
.abook-self {
- background-color: #000;
+ color: #333;
+ background-color: #000 !important;
+ border: 1px solid #111;
}
.acl-button-show,
@@ -60,16 +82,18 @@
color: #fff;
}
-#acl-showall {
- color: #fff;
+#acl-list {
+ border: 1px solid #143D12;
}
-#acl-list {
- border: 1px solid #000;
+#acl-search-wrapper {
+ border-bottom: 1px solid #143D12;
}
.acl-list-item {
- border: 1px solid #000;
+ border: 1px solid #111;
+ background-color:#111;
+
}
.modal-content {
@@ -267,7 +291,7 @@ pre {
background-image: none;
}
-.open .dropdown-toggle.btn-default {
+.open .dropdown-toggle.btn-default, .open .dropdown-toggle.btn-default:focus {
color: #50f148;
background-color: #000;
border-color: #143D12;
diff --git a/view/theme/redbasic/schema/simple_white_on_black.css b/view/theme/redbasic/schema/simple_white_on_black.css
index d86154297..c23dbaf68 100644
--- a/view/theme/redbasic/schema/simple_white_on_black.css
+++ b/view/theme/redbasic/schema/simple_white_on_black.css
@@ -47,8 +47,30 @@
background-image: linear-gradient(to bottom, #000 0px, #000 100%);
}
+.section-content-info-wrapper {
+ color: #fff;
+ background-color:#000;
+ border: 1px solid #fff !important;
+}
+
+.modal-header {
+ border-bottom: 1px solid #000;
+}
+
+.modal-footer {
+ border-top: 1px solid #000;
+}
+
+#acl-select {
+ background-color: #000;
+ border: 1px solid #fff;
+ color: #fff;
+}
+
.abook-self {
- background-color: #000;
+ color: #333;
+ background-color: #111 !important;
+ border: 1px solid #111;
}
.acl-button-show,
@@ -56,16 +78,17 @@
color: #fff;
}
-#acl-showall {
- color: #fff;
+#acl-list {
+ border: 1px solid #000;
}
-#acl-list {
- border: 1px solid #000;
+#acl-search-wrapper {
+ border-bottom: 1px solid #000;
}
.acl-list-item {
- border: 1px solid #000;
+ border: 1px solid #fff;
+ background-color:#000;
}
.modal-content {
@@ -246,10 +269,10 @@ pre {
background-image: none;
}
-.open .dropdown-toggle.btn-default {
+.open .dropdown-toggle.btn-default, .open .dropdown-toggle.btn-default:focus {
color: #fff;
background-color: #000;
- border-color: #000;
+ border-color: #fff;
}
.preview {
diff --git a/view/tpl/acl_selector.tpl b/view/tpl/acl_selector.tpl
index 0e9562157..60fae0a29 100755
--- a/view/tpl/acl_selector.tpl
+++ b/view/tpl/acl_selector.tpl
@@ -12,6 +12,19 @@
{{if $aclModalDesc}}
<div id="acl-dialog-description" class="section-content-info-wrapper">{{$aclModalDesc}}</div>
{{/if}}
+ <label for="acl-select">{{$select_label}}</label>
+ <select id="acl-select" name="optionsRadios" class="form-control form-group">
+ <option id="acl-showall" value="public" selected>{{$showall}}</option>
+ <option id="acl-onlyme" value="onlyme">{{$onlyme}}</option>
+ <option id="acl-showlimited" value="limited">{{$showlimited}}</option>
+ </select>
+
+ {{if $showallOrigin}}
+ <div id="acl-info" class="form-group">
+ <i class="fa fa-info-circle"></i>&nbsp;{{$showallOrigin}}
+ </div>
+ {{/if}}
+
{{if $jotnets}}
<div class="jotnets-wrapper" role="tab" id="jotnets-wrapper">
<a data-toggle="collapse" class="btn btn-block btn-default" href="#jotnets-collapse" aria-expanded="false" aria-controls="jotnets-collapse">{{$jnetModalTitle}} <span class="caret"></span></a>
@@ -21,25 +34,8 @@
<div class="clear"></div>
</div>
{{/if}}
+
<div id="acl-wrapper">
- <div id="acl-radiowrapper-showall" class="radio">
- <label>
- <input id="acl-showall" type="radio" name="optionsRadios" value="option1" checked>
- {{if $showallIcon}}
- <i class="fa {{$showallIcon}}"></i>
- {{/if}}
- <span id="acl-showall-caption">{{$showall}}</span>
- </label>
- {{if $showallOrigin}}
- &nbsp;<a id="acl-info-icon" role="button" tabindex="0" class="fa fa-info-circle" data-trigger="focus" data-toggle="popover" data-placement="top" data-content="{{$showallOrigin}}"></a>
- {{/if}}
- </div>
- <div id="acl-radiowrapper-showlimited" class="radio">
- <label>
- <input id="acl-showlimited" type="radio" name="optionsRadios" style="readonly" value="option2">
- <span id=acl-showlimited-caption>{{$showlimited}}</span>
- </label>
- </div>
<div id="acl-list">
<div id="acl-search-wrapper">
<input type="text" id="acl-search" placeholder="&#xf002; {{$search}}">
diff --git a/view/tpl/admin_accounts.tpl b/view/tpl/admin_accounts.tpl
new file mode 100755
index 000000000..53f5f1aba
--- /dev/null
+++ b/view/tpl/admin_accounts.tpl
@@ -0,0 +1,88 @@
+<script>
+ function confirm_delete(uname){
+ return confirm( "{{$confirm_delete}}".format(uname));
+ }
+ function confirm_delete_multi(){
+ return confirm("{{$confirm_delete_multi}}");
+ }
+ function toggle_selectall(cls){
+ $("."+cls).prop("checked", !$("."+cls).prop("checked"));
+ return false;
+ }
+</script>
+<div class="generic-content-wrapper-styled" id="adminpage">
+ <h1>{{$title}} - {{$page}}</h1>
+
+ <form action="{{$baseurl}}/admin/accounts" method="post">
+ <input type="hidden" name="form_security_token" value="{{$form_security_token}}">
+
+ <h3>{{$h_pending}}</h3>
+ {{if $pending}}
+ <table id="pending">
+ <thead>
+ <tr>
+ {{foreach $th_pending as $th}}<th>{{$th}}</th>{{/foreach}}
+ <th></th>
+ <th></th>
+ </tr>
+ </thead>
+ <tbody>
+ {{foreach $pending as $u}}
+ <tr>
+ <td class="created">{{$u.account_created}}</td>
+ <td class="email">{{$u.account_email}}</td>
+ <td class="checkbox_bulkedit"><input type="checkbox" class="pending_ckbx" id="id_pending_{{$u.hash}}" name="pending[]" value="{{$u.hash}}"></td>
+ <td class="tools">
+ <a href="{{$baseurl}}/regmod/allow/{{$u.hash}}" class="btn btn-default btn-xs" title="{{$approve}}"><i class="fa fa-thumbs-o-up admin-icons"></i></a>
+ <a href="{{$baseurl}}/regmod/deny/{{$u.hash}}" class="btn btn-default btn-xs" title="{{$deny}}"><i class="fa fa-thumbs-o-down admin-icons"></i></a>
+ </td>
+ </tr>
+ {{/foreach}}
+ </tbody>
+ </table>
+ <div class="selectall"><a href="#" onclick="return toggle_selectall('pending_ckbx');">{{$select_all}}</a></div>
+ <div class="submit"><input type="submit" name="page_users_deny" value="{{$deny}}"> <input type="submit" name="page_users_approve" value="{{$approve}}"></div>
+ {{else}}
+ <p>{{$no_pending}}</p>
+ {{/if}}
+
+
+ <h3>{{$h_users}}</h3>
+ {{if $users}}
+ <table id="users">
+ <thead>
+ <tr>
+ {{foreach $th_users as $th}}<th><a href="{{$base}}&key={{$th.1}}&dir={{$odir}}">{{$th.0}}</a></th>{{/foreach}}
+ <th></th>
+ <th></th>
+ </tr>
+ </thead>
+ <tbody>
+ {{foreach $users as $u}}
+ <tr>
+ <td class="account_id">{{$u.account_id}}</td>
+ <td class="email">{{if $u.blocked}}
+ <i>{{$u.account_email}}</i>
+ {{else}}
+ <strong>{{$u.account_email}}</strong>
+ {{/if}}</td>
+ <td class="channels">{{$u.channels}}</td>
+ <td class="register_date">{{$u.account_created}}</td>
+ <td class="login_date">{{$u.account_lastlog}}</td>
+ <td class="account_expires">{{$u.account_expires}}</td>
+ <td class="service_class">{{$u.account_service_class}}</td>
+ <td class="checkbox_bulkedit"><input type="checkbox" class="users_ckbx" id="id_user_{{$u.account_id}}" name="user[]" value="{{$u.account_id}}"><input type="hidden" name="blocked[]" value="{{$u.blocked}}"></td>
+ <td class="tools">
+ <a href="{{$baseurl}}/admin/accounts/{{if ($u.blocked)}}un{{/if}}block/{{$u.account_id}}?t={{$form_security_token}}" class="btn btn-default btn-xs" title='{{if ($u.blocked)}}{{$unblock}}{{else}}{{$block}}{{/if}}'><i class="fa fa-ban admin-icons{{if ($u.blocked)}} dim{{/if}}"></i></a><a href="{{$baseurl}}/admin/accounts/delete/{{$u.account_id}}?t={{$form_security_token}}" class="btn btn-default btn-xs" title='{{$delete}}' onclick="return confirm_delete('{{$u.name}}')"><i class="fa fa-trash-o admin-icons"></i></a>
+ </td>
+ </tr>
+ {{/foreach}}
+ </tbody>
+ </table>
+ <div class="selectall"><a href="#" onclick="return toggle_selectall('users_ckbx');">{{$select_all}}</a></div>
+ <div class="submit"><input type="submit" name="page_users_block" value="{{$block}}/{{$unblock}}"> <input type="submit" name="page_users_delete" value="{{$delete}}" onclick="return confirm_delete_multi()"></div>
+ {{else}}
+ NO USERS?!?
+ {{/if}}
+ </form>
+</div>
diff --git a/view/tpl/admin_channels.tpl b/view/tpl/admin_channels.tpl
index 6db963304..f15742f78 100755
--- a/view/tpl/admin_channels.tpl
+++ b/view/tpl/admin_channels.tpl
@@ -21,7 +21,7 @@
<table id='channels'>
<thead>
<tr>
- {{foreach $th_channels as $th}}<th>{{$th}}</th>{{/foreach}}
+ {{foreach $th_channels as $th}}<th><a href="{{$base}}&key={{$th.1}}&dir={{$odir}}">{{$th.0}}</a></th>{{/foreach}}
<th></th>
<th></th>
</tr>
diff --git a/view/tpl/admin_plugins.tpl b/view/tpl/admin_plugins.tpl
index f21a3057e..993a4dea2 100755
--- a/view/tpl/admin_plugins.tpl
+++ b/view/tpl/admin_plugins.tpl
@@ -1,33 +1,48 @@
<div class="generic-content-wrapper">
<div class="section-title-wrapper">
<div class="pull-right">
- <button class="btn btn-success btn-xs" onclick="openClose('form');">{{$addrepo}}</button>
+ <button class="btn btn-success btn-xs" onclick="openClose('form');">{{$managerepos}}</button>
</div>
<h2 id="title">{{$title}} - {{$page}}</h2>
<div class="clear"></div>
</div>
<div id="form" class="section-content-tools-wrapper"{{if !$expandform}} style="display:none;"{{/if}}>
+
+ <div class="clear"></div>
+ <div class="section-title-wrapper" style="margin-top: 20px;">
+ <h2>{{$installedtitle}}</h2>
+ <div class="clear"></div>
+ </div>
+ <div class="table-responsive section-content-tools-wrapper">
+ <table class="table table-responsive table-striped table-hover">
+ {{foreach $addonrepos as $repo}}
+ <tr>
+ <td style="width: 70%;">
+ <span class="pull-left">{{$repo.name}}</span>
+ </td>
+ <td style="width: 15%;">
+ <button class="btn btn-xs btn-primary pull-right" style="margin-left: 10px; margin-right: 10px;" onclick="updateAddonRepo('{{$repo.name}}'); return false;"><i class='fa fa-download'></i>&nbsp;{{$repoUpdateButton}}</button>
+ </td>
+ <td style="width: 15%;">
+ <button class="btn btn-xs btn-danger pull-right" style="margin-left: 10px; margin-right: 0px;" onclick="removeAddonRepo('{{$repo.name}}'); return false;"><i class='fa fa-trash-o'></i>&nbsp;{{$repoRemoveButton}}</button>
+ </td>
+ <div class="clear"></div>
+ </td></tr>
+ {{/foreach}}
+ </table>
+ </div>
+ <div class="clear"></div>
+ <div class="section-title-wrapper">
+ <h2>{{$addnewrepotitle}}</h2>
+ <div class="clear"></div>
+ </div>
{{$form}}
- </div>
- <div class="clear"></div>
+ </div>
+ <div class="clear"></div>
<div id="chat-rotator-wrapper" class="center-block">
<div id="chat-rotator"></div>
</div>
<div class="clear"></div>
- <div class="section-content-info-wrapper">
- <h3>Installed Plugin Repositories</h3>
- {{foreach $addonrepos as $repo}}
-<!-- <div class="section-content-tools-wrapper"> -->
- <div style="margin-left: 30%; margin-right: 30%;">
- <span class="pull-left">{{$repo.name}}</span>
- <!--<button class="btn btn-xs btn-primary pull-right" onclick="switchAddonRepoBranch('{{$repo.name}}'); return false;">{{$repoBranchButton}}</button>-->
- <button class="btn btn-xs btn-danger pull-right" style="margin-left: 10px; margin-right: 0px;" onclick="removeAddonRepo('{{$repo.name}}'); return false;"><i class='fa fa-trash-o'></i>&nbsp;{{$repoRemoveButton}}</button>
- <button class="btn btn-xs btn-primary pull-right" style="margin-left: 10px; margin-right: 10px;" onclick="updateAddonRepo('{{$repo.name}}'); return false;"><i class='fa fa-download'></i>&nbsp;{{$repoUpdateButton}}</button>
- </div>
-<!-- </div>-->
- <div class="clear"></div>
- {{/foreach}}
- </div>
<div class="section-content-wrapper-np">
{{foreach $plugins as $p}}
<div class="section-content-tools-wrapper" id="pluginslist">
diff --git a/view/tpl/admin_users.tpl b/view/tpl/admin_users.tpl
deleted file mode 100755
index ae77ef24c..000000000
--- a/view/tpl/admin_users.tpl
+++ /dev/null
@@ -1,88 +0,0 @@
-<script>
- function confirm_delete(uname){
- return confirm( "{{$confirm_delete}}".format(uname));
- }
- function confirm_delete_multi(){
- return confirm("{{$confirm_delete_multi}}");
- }
- function toggle_selectall(cls){
- $("."+cls).prop("checked", !$("."+cls).prop("checked"));
- return false;
- }
-</script>
-<div class="generic-content-wrapper-styled" id="adminpage">
- <h1>{{$title}} - {{$page}}</h1>
-
- <form action="{{$baseurl}}/admin/users" method="post">
- <input type="hidden" name="form_security_token" value="{{$form_security_token}}">
-
- <h3>{{$h_pending}}</h3>
- {{if $pending}}
- <table id="pending">
- <thead>
- <tr>
- {{foreach $th_pending as $th}}<th>{{$th}}</th>{{/foreach}}
- <th></th>
- <th></th>
- </tr>
- </thead>
- <tbody>
- {{foreach $pending as $u}}
- <tr>
- <td class="created">{{$u.account_created}}</td>
- <td class="email">{{$u.account_email}}</td>
- <td class="checkbox_bulkedit"><input type="checkbox" class="pending_ckbx" id="id_pending_{{$u.hash}}" name="pending[]" value="{{$u.hash}}"></td>
- <td class="tools">
- <a href="{{$baseurl}}/regmod/allow/{{$u.hash}}" class="btn btn-default btn-xs" title="{{$approve}}"><i class="fa fa-thumbs-o-up admin-icons"></i></a>
- <a href="{{$baseurl}}/regmod/deny/{{$u.hash}}" class="btn btn-default btn-xs" title="{{$deny}}"><i class="fa fa-thumbs-o-down admin-icons"></i></a>
- </td>
- </tr>
- {{/foreach}}
- </tbody>
- </table>
- <div class="selectall"><a href="#" onclick="return toggle_selectall('pending_ckbx');">{{$select_all}}</a></div>
- <div class="submit"><input type="submit" name="page_users_deny" value="{{$deny}}"> <input type="submit" name="page_users_approve" value="{{$approve}}"></div>
- {{else}}
- <p>{{$no_pending}}</p>
- {{/if}}
-
-
- <h3>{{$h_users}}</h3>
- {{if $users}}
- <table id="users">
- <thead>
- <tr>
- {{foreach $th_users as $th}}<th>{{$th}}</th>{{/foreach}}
- <th></th>
- <th></th>
- </tr>
- </thead>
- <tbody>
- {{foreach $users as $u}}
- <tr>
- <td class="account_id">{{$u.account_id}}</td>
- <td class="email">{{if $u.blocked}}
- <i>{{$u.account_email}}</i>
- {{else}}
- <strong>{{$u.account_email}}</strong>
- {{/if}}</td>
- <td class="channels">{{$u.channels}}</td>
- <td class="register_date">{{$u.account_created}}</td>
- <td class="login_date">{{$u.account_lastlog}}</td>
- <td class="account_expires">{{$u.account_expires}}</td>
- <td class="service_class">{{$u.account_service_class}}</td>
- <td class="checkbox_bulkedit"><input type="checkbox" class="users_ckbx" id="id_user_{{$u.account_id}}" name="user[]" value="{{$u.account_id}}"><input type="hidden" name="blocked[]" value="{{$u.blocked}}"></td>
- <td class="tools">
- <a href="{{$baseurl}}/admin/users/{{if ($u.blocked)}}un{{/if}}block/{{$u.account_id}}?t={{$form_security_token}}" class="btn btn-default btn-xs" title='{{if ($u.blocked)}}{{$unblock}}{{else}}{{$block}}{{/if}}'><i class="fa fa-ban admin-icons{{if ($u.blocked)}} dim{{/if}}"></i></a><a href="{{$baseurl}}/admin/users/delete/{{$u.account_id}}?t={{$form_security_token}}" class="btn btn-default btn-xs" title='{{$delete}}' onclick="return confirm_delete('{{$u.name}}')"><i class="fa fa-trash-o admin-icons"></i></a>
- </td>
- </tr>
- {{/foreach}}
- </tbody>
- </table>
- <div class="selectall"><a href="#" onclick="return toggle_selectall('users_ckbx');">{{$select_all}}</a></div>
- <div class="submit"><input type="submit" name="page_users_block" value="{{$block}}/{{$unblock}}"> <input type="submit" name="page_users_delete" value="{{$delete}}" onclick="return confirm_delete_multi()"></div>
- {{else}}
- NO USERS?!?
- {{/if}}
- </form>
-</div>
diff --git a/view/tpl/app.tpl b/view/tpl/app.tpl
index 20a1337c7..3e6b71b29 100644
--- a/view/tpl/app.tpl
+++ b/view/tpl/app.tpl
@@ -14,7 +14,7 @@
<div class="app-tools">
<form action="{{$hosturl}}appman" method="post">
<input type="hidden" name="papp" value="{{$app.papp}}" />
- {{if $install}}<button type="submit" name="install" value="{{$install}}" class="btn btn-default" title="{{$install}}" ><i class="fa fa-arrow-circle-o-down-alt" ></i></button>{{/if}}
+ {{if $install}}<button type="submit" name="install" value="{{$install}}" class="btn btn-default" title="{{$install}}" ><i class="fa fa-arrow-circle-o-down" ></i></button>{{/if}}
{{if $edit}}<input type="hidden" name="appid" value="{{$app.guid}}" /><button type="submit" name="edit" value="{{$edit}}" class="btn btn-default" title="{{$edit}}" ><i class="fa fa-pencil" ></i></button>{{/if}}
{{if $delete}}<button type="submit" name="delete" value="{{$delete}}" class="btn btn-default" title="{{$delete}}" ><i class="fa fa-trash-o drop-icons"></i></button>{{/if}}
</form>
diff --git a/view/tpl/atom_feed.tpl b/view/tpl/atom_feed.tpl
index 9e5b5a5be..37eaf954a 100755
--- a/view/tpl/atom_feed.tpl
+++ b/view/tpl/atom_feed.tpl
@@ -13,7 +13,7 @@
<id>{{$feed_id}}</id>
<title>{{$feed_title}}</title>
- <generator uri="http://getzot.com" version="{{$version}}">{{$red}}</generator>
+ <generator uri="http://hubzilla.org" version="{{$version}}">{{$red}}</generator>
<link rel="license" href="http://creativecommons.org/licenses/by/3.0/" />
<link rel="alternate" type="text/html" href="{{$profile_page}}" />
{{if $hub}}
diff --git a/view/tpl/chat.tpl b/view/tpl/chat.tpl
index e92265b5d..341ff7649 100644
--- a/view/tpl/chat.tpl
+++ b/view/tpl/chat.tpl
@@ -33,6 +33,9 @@
<li class="nav-item"><a class="nav-link" href="{{$baseurl}}/chatsvc?f=&room_id={{$room_id}}&status=online"><i class="fa fa-circle online"></i>&nbsp;{{$online}}</a></li>
<li class="nav-item"><a class="nav-link" href="{{$baseurl}}/chatsvc?f=&room_id={{$room_id}}&status=away"><i class="fa fa-circle away"></i>&nbsp;{{$away}}</a></li>
<li class="nav-item"><a class="nav-link" href="{{$baseurl}}/chat/{{$nickname}}/{{$room_id}}/leave"><i class="fa fa-circle leave"></i>&nbsp;{{$leave}}</a></li>
+ <li class="divider"></li>
+ <li class="nav-item" id="toggle-notifications"><a class="nav-link" href="" onclick="toggleChatNotifications(); return false;"><i id="toggle-notifications-icon" class="fa fa-bell-slash-o"></i>&nbsp;Toggle notifications</a></li>
+ <li class="nav-item disabled" id="toggle-notifications-audio"><a class="nav-link" href="" onclick="toggleChatNotificationAudio(); return false;"><i id="toggle-notifications-audio-icon" class="fa fa-volume-off"></i>&nbsp;Toggle sound</a></li>
{{if $bookmark_link}}
<li class="divider"></li>
<li class="nav-item"><a class="nav-link" href="{{$bookmark_link}}" target="_blank" ><i class="fa fa-bookmark"></i>&nbsp;{{$bookmark}}</a></li>
@@ -194,6 +197,7 @@ function update_chats(chats) {
else {
newNode.setAttribute('class', 'chat-item clear');
$(newNode).html('<img class="chat-item-photo" src="' + item.img + '" alt="' + item.name + '" /><div class="chat-body"><div class="chat-item-title wall-item-ago"><span class="chat-item-name">' + item.name + ' </span><span class="autotime chat-item-time" title="' + item.isotime + '">' + item.localtime + '</span></div><div class="chat-item-text">' + item.text + '</div></div>');
+ chat_issue_notification(item.name + ':\n' + item.text, 'Hubzilla Chat');
}
$('#chatLineHolder').append(newNode);
$(".autotime").timeago();
@@ -204,6 +208,9 @@ function update_chats(chats) {
}
var chat_notify_granted = false; // Initialize notification permission to denied
+var chat_notify_enabled = false;
+var chat_notify_audio_enabled = false;
+var chat_notify_audio = {};
// Request notification access from the user
// TODO: Check Hubzilla member config setting before requesting permission
function chatNotificationInit() {
@@ -226,12 +233,17 @@ function chatNotificationInit() {
}
});
}
+ // Encode a wav audio file in base64 and create the audio object for game alerts
+ //var base64string = 'UklGRr4VAABXQVZFZm10IBAAAAABAAEAIlYAACJWAAABAAgAZGF0YZkVAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBxcnJycoGNjY2NjYyMjIyMg3FxcXFxcXJycnJ0jY2NjY2NjIyMjIx1cXFxcXFxcnJycoKNjY2NjY2MjIyMgXFxcXFxcXJycnJ2jY2NjY2NjIyMjIxzcXFxcXFxcnJycoSNjY2NjY2MjIyMgHFxcXFxcXJycnJ4jY2NjY2NjIyMjIxycXFxcXFycnJycoWNjY2NjY2MjIyMf3FxcXFxcXJycnJ5jY2NjY2NjIyMjIxxcXFxcXFycnJycoeNjY2NjY2MjIyMfnFxcXFxcXJycnJ7jY2NjY2NjIyMjIpxcXFxcXFycnJycomNjY2NjYyMjIyMfHFxcXFxcXJycnJ8jY2NjY2NjIyMjIhycnJycoyLi4uLi4uLioqKfHFxcXFxcnJycnJyc4yMjIuLi4uLi4uKin5xcXFxcnJycnJyc3OMjIyMi4uLi4uLi4p/cXFxcnJycnJyc3Nzi4yMjIyLi4uLi4uLgHBwcXFxcXFxcnJycouNjY2NjYyMjIyMjIBwcHFxcXFxcXJycnKLjY2NjY2MjIyMjIyBcHFxcXFxcXJycnJyio2NjY2NjIyMjIyMgnBxcXFxcXFycnJycomNjY2NjY2MjIyMjINwcXFxcXFxcnJycnKIjY2NjY2NjIyMjIyEcHFxcXFxcXJycnJyh42NjY2NjYyMjIyMhXBxcXFxcXFycnJycoaNjY2NjY2MjIyMjIZwcXFxcXFxcnJycnKFjY2NjY2NjIyMjIyHcHFxcXFxcXJycnJyhI2NjY2NjYyMjIyMiHBxcXFxcXFycnJycoONjY2NjY2MjIyMjIlwcXFxcXFxcnJycnKCjY2NjY2NjIyMjIyKcHFxcXFxcXJycnJygY2NjYyMjIyLi4uLi4uLioqKioqKdnBxcXFxcXFycnKAi4uLi4uLioqKioJxcXFxcXFycnJydIyMi4uLi4uLi4qKdXFxcXFycnJycnKBjIyLi4uLi4uLioFxcXFycnJycXFydY2NjYyMjIyMjIyLc3BwcXFxcXFxcnKDjY2NjIyMjIyMjIBwcHFxcXFxcXJyd42NjY2MjIyMjIyMcnBxcXFxcXFycnKFjY2NjYyMjIyMjH9wcXFxcXFxcnJyeY2NjY2NjIyMjIyMcHFxcXFxcXJycnKHjY2NjY2MjIyMjH5xcXFxcXFycnJyeo2NjY2NjIyMjIyKcHFxcXFxcXJycnKIjY2NjY2MjIyMjHxxcXFxcXFycnJyfI2NjY2NjYyMjIyJcXFxcXFxcXJycnKKjY2NjY2MjIyMjHtxcXFxcXFycnJyfo2NjY2NjYyMjIyHcXFxcXFxcnJycnKMjY2NjY2MjIuLi3lycnJycnJzc3Nzf4yMjIyMjIuLi4uFcnJycnJycnNzc3OMjIyMjIyMi4uLi3hycnJycnJzc3NzgIyMjIyMjIuLi4uDcnJycnJycnNzc3SMjIyMjIyMi4uLi3dycnJycnJzc3NzgYyMjIyMjIuLi4uCcnJycnJyc3Nzc3aMjIyMjIyMi4uLi3VycnJycnJzc3Nzg4yMjIyMjIuLi4uAcnJycnJyc3Nzc3eMjIyMjIyMi4uLi3RycnJycnJzc3NzhIyMjIyMjIuLi4uAcnJycnJyc3Nzc3mMjIyMjIyMi4uLi3JycnJycnJzc3NzhoyMjIyMjIuLi4t+cnJycnJyc3Nzc3qMjIyMjIyLi4uLinJycnNzc3N0dHR0h4uLi4uLi4qKiop9c3Nzc3Nzc3R0dHyLi4uLi4uLioqKiHNzc3Nzc3N0dHR0iIuLi4uLi4qKiop8c3Nzc3Nzc3R0dH2Li4uLi4uLioqKhnNzc3Nzc3N0dHR0iYuLi4uLi4qKiop6c3Nzc3Nzc3R0dH+Li4uLi4uLioqKhXNzc3Nzc3N0dHR0i4uLi4uLi4qKiop5c3Nzc3Nzc3R0dICLi4uLi4uLioqKhHNzc3Nzc3N0dHR1i4uLi4uLi4qKiop4c3Nzc3NzdHR0dIGLi4uLi4uLioqKgnNzc3Nzc3N0dHR2i4uLi4uLi4qKiop2c3Nzc3NzdHR0dIKLi4uLi4uLioqKgXNzc3Nzc3N0dHR3i4uLi4uLi4qKiol2dHR0dHR0dHV1dYOKioqKioqKiYmJgHR0dHR0dHR0dXV5ioqKioqKiomJiYl0dHR0dHR0dHV1dYSKioqKioqKiYmJf3R0dHR0dHR0dXV7ioqKioqKiomJiYl0dHR0dHR0dHV1dYaKioqKioqKiYmJfnR0dHR0dHR1dXV8ioqKioqKioqJiYd0dHR0dHR0dHV1dYeKioqKioqKiYmJfHR0dHR0dHR1dXV9ioqKioqKiomJiYZ0dHR0dHR0dHV1dYiKioqKioqKiYmJe3R0dHR0dHR1dXV+ioqKioqKiomJiYV0dHR0dHR0dHV1dYmKioqKioqKiYmJenR0dHR0dHR1dXWAioqKiYmJiYmIiIN1dXV1dXV1dXZ2domJiYmJiYmJiYiIeXV1dXV1dXV1dnaAiYmJiYmJiYmIiIJ1dXV1dXV1dXZ2d4mJiYmJiYmJiYiIeHV1dXV1dXV1dnaBiYmJiYmJiYmIiIF1dXV1dXV1dXZ2eImJiYmJiYmJiYiId3V1dXV1dXV1dnaCiYmJiYmJiYmIiIB1dXV1dXV1dXZ2eYmJiYmJiYmJiIiIdnV1dXV1dXV1dnaDiYmJiYmJiYmIiH91dXV1dXV1dXZ2e4mJiYmJiYmJiIiIdXV1dXV1dXV1dnaFiYmJiYmJiYmIiH51dXV1dXV1dXZ2fImJiYmJiYmJiIiHdXV1dXV1dXV1dnaGiYmJiYmJiYmIiH11dXV1dXV1dXZ2fYiIiIiIiIiIiIiFdnZ2dnZ2dnZ2d3eGiIiIiIiIiIiIh3x2dnZ2dnZ2dnd3foiIiIiIiIiIiIeEdnZ2dnZ2dnZ2d3eHiIiIiIiIiIiIh3t2dnZ2dnZ2dnZ3f4iIiIiIiIiIiIeDdnZ2dnZ2dnZ2d3eIiIiIiIiIiIiIh3p2dnZ2dnZ2dnZ3gIiIiIiIiIiIiIeCdnZ2dnZ2dnZ2d3iIiIiIiIiIiIiIh3l2dnZ2dnZ2dnZ3gIiIiIiIiIiIiIeBdnZ2dnZ2dnZ2d3mIiIiIiIiIiIiHh3h2dnZ2dnZ2dnZ3goiIiIiIiIiIiIeAdnZ2dnZ2dnZ2d3qIiIiIiIiIiIiHh3d2dnZ2dnZ2dnZ3g4iIiIiIh4eHh4eAd3d3d3d3d3d3d3uHh4eHh4eHh4eHhnd3d3d3d3d3d3d3g4eHh4eHh4eHh4d/d3d3d3d3d3d3d3yHh4eHh4eHh4eHhnd3d3d3d3d3d3d4hIeHh4eHh4eHh4d+d3d3d3d3d3d3d32Hh4eHh4eHh4eHhXd3d3d3d3d3d3d4hYeHh4eHh4eHh4d9d3d3d3d3d3d3d36Hh4eHh4eHh4eHhHd3d3d3d3d3d3d4hoeHh4eHh4eHh4d8d3d3d3d3d3d3d3+Hh4eHh4eHh4eHg3d3d3d3d3d3d3d4h4eHh4eHh4eHh4d7d3d3d3d3d3d3d4CHh4eHh4eHh4eHgnd3d3d3d3d3d3d5h4aGhoaGhoaGhoZ7eHh4eHh4eHh4eICGhoaGhoaGhoaGgXh4eHh4eHh4eHh6h4aGhoaGhoaGhoZ6eHh4eHh4eHh4eIGGhoaGhoaGhoaGgHh4eHh4eHh4eHh7hoaGhoaGhoaGhoZ5eHh4eHh4eHh4eIKGhoaGhoaGhoaGgHh4eHh4eHh4eHh7hoaGhoaGhoaGhoZ4eHh4eHh4eHh4eIKGhoaGhoaGhoaGf3h4eHh4eHh4eHh8hoaGhoaGhoaGhoV4eHh4eHh4eHh4eIOGhoaGhoaGhoaGfnh4eHh4eHh4eHh9hoaGhoaGhoaGhoR4eHh4eHh4eHh4eISGhoaGhoaGhoaGfXh4eHh4eHh4eHh+hoaGhoaGhoaGhoR4eHh4eHh5eXl5eYSFhYWFhYWFhYWFfXl5eXl5eXl5eXl/hYWFhYWFhYWFhYJ5eXl5eXl5eXl5eYWFhYWFhYWFhYWFfHl5eXl5eXl5eXmAhYWFhYWFhYWFhYF5eXl5eXl5eXl5eYWFhYWFhYWFhYWFe3l5eXl5eXl5eXmAhYWFhYWFhYWFhYF5eXl5eXl5eXl5eoWFhYWFhYWFhYWFe3l5eXl5eXl5eXmAhYWFhYWFhYWFhYB5eXl5eXl5eXl5e4WFhYWFhYWFhYWFenl5eXl5eXl5eXmBhYWFhYWFhYWFhYB5eXl5eXl5eXl5fIWFhYWFhYWFhYWFeXl5eXl5eXl5eXmChYWFhYWFhYWFhX95enp6f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAA';
+ var base64string = 'UklGRvQbAABXQVZFZm10IBAAAAABAAEAIlYAAESsAAACABAAZGF0YdAbAADk/qz+y/5X/pP+Pv53/j/+UP5//p7+nf6j/rf+HP/u/gP/Ff/B/v/+3/63/qz+sf6G/pn+U/6h/hL+ef5o/qz+hf6q/tf+SP/k/i7/7v4b/6f+M//S/hv/uf7Y/nX+3/5k/sz+V/6f/nT+kf6V/uv+4v48/9T+Vf/S/vT++f72/sD+zP7c/uD+k/5t/rv+Tv7G/lX+fv6W/un+/v7//jz/KP8v/z3/E/9g/+H+m//1/kr//P5O/+r+NP/R/g//4P4a/zz/ff+6//n/jP/8/0z/cf8f/xX//f4t/+z+4v6q/gj/qv5y/kv+mP7V/oX+gP7l/gX/+f7f/pH+P/7f/UD+KP5E/hH+RP4H/m7+/v1S/gT+h/4Q/j/+GP4P/tH98P27/ST++v1F/gz+Hv6v/WH+Lf63/hz+UP43/ov+oP5y/jX+TP6C/v3+xP69/l7+nv7t/uH+MP/X/pz+uP6T/ij+V/5B/i3/d/1Q+xH7z/tL+3X7+/0oBFkF2QS1CcILQwrTDmQTChOuEfwTuw4hBaL8/fey+VH9ff20/D79f/3L+eD2bvHQ587gC9t20FnG2cN5xYPFbMV0xuHIUsqUyu3N6NxK7SL0DfqRBIoP7RecHxApjTF4M4Uvqyp6KvUpuybyIjIhPR5PHAcbVxglFf8SDRAADWEIWwNw/Pz3o/Pl8V/1fvsn/Zb9XQBtBuoJkAtaD0YVZBfDFXUUaxSHFNUVmRZDFj4WMBZbFokU1BG0D5APIg/cDZwJAAfSBeEFGAMLAOr+Tf0b+y/6CvrF+hz65fmH+R766fkD/DD9zP26/E/+1gBHAsMC8wPBBRYFlANfBJcFdgWAA68CvgLdArsByQBpAOn/cf7m/X39rfvT+V/4oPcg9QHzW/QW9vv0DPR79cT3/fZ99WL1+/aI96j4Dfkm+sH6oPwe/av98/39/2oBtwFUAa4BIQJ+AnUAZf+5/4cA6v4e/cH89fy++yj7o/lh+Ef3OfcR9xf25/SK9Db0UPPT8eLxUvSI9GvzTvMY9cj13PUh9rL30Pex+Nj58Prc+l77svyJ/sv+JQDGAPMA+f8FAO//JgD0/9z/1P94/yH9Yfte+iX7rvrz+ML3HfeP9sr1K/Ua9ov2PfaJ9un2OfeZ98T3wff8+Tz83v3x/RH/EgBYAXcCiAMyBJEE8AQwBR4FLQbaBvEHegemBrEFTAXEA9sBR/7f/KP8f/yU+oL4Ifjh9vX0XfQT9Gv06/PW853z+vOp9JL1r/aZ+Bn6RPup/Mf9xv80AfsCiwQ5BW0GVQcHCOwIFAo3C44KSAmnBzMHNAfKBg8FDQT3AawBAwE0ALz+4f1K/Xz92Pwk/eL8J/0J/P37qvxM/J77YvxN/WL+xv7D/0UAqAAQAbcBWwMkBbQGVgdIBzsIDgmICXkKJAq6Ci0L1wvrCqkKtApGC2EKWQlsCb8JYghYBzsGaAbeBrkGlQSHAgMB7wCG/wf/pv5l/jP9rvzh+y/8Wvsz+/H7EP2n/tX/NgAgAZMBzgNWBV0GGwcnCBAKIwtKDKEMVA1jDZoNFA2VDAUMggsKC20KQwo8CaEHtAZfBUwEoQK6ATYA1P8//jb9DPt9+lX6xfoB+iT6cPo0++T7yfwe/fX9l/6y/0MAmQHiAvMDCAVyBpAHpQgTCcUJHwoPCxgMdwzZDCUNJg0tDWoMswvbCm8JugimB7UGgAUtBIICUQH0/1n/SP10/Df7SPoO+YH4wPiR+ez5gfpg+k37FPxi/fD9AP8PAEwBTQI1BGQFpQeuCZ8LKg33DgMQ1xABESkR3RCWEMUPkA4wDQoLHQkgB7QF8AOXAe7+fv2X+zf6yvgf9y31KPS285XzLPSp9Rn2IPeO91L50Prk/Eb+bgBPAt0E7AbFCeoL8w2ODx4RARIdE9AS9hJgEs4RDBBsDqQMQQr5B6cFGANwAGn9l/rz9/T0kvKQ8Azv4u1Z7ffsuuyl7S3vG/AX8cvxKPS59S34QfoE/fX/awNbBT0ICwrnDCMOdg9NEO0Q0BCsEMoPHA85DUwL1wieBtoDTQGD/r37cPhT9ZHyefBZ7u7rnupz6Zjox+jU6HzpOOo06/TsYe7F8DXzJPad+Hv7rP4lAtkE2wf7CRQMcw2DDhUPtw84D3IPIQ7QDKkKdAgWBq8D+QAz/nf6b/f0853wzOzq6YznlOUa5FXjTeIo4l7iKeP24/TlNOgy6p/ske/o8uX1F/k+/I7/HgIfBfIG4QgTChsLwwtdC7IKHQlYB8wFkwL5/2H8Z/lF9ejxqu3z6RnlpOFa3u/b8tmI2HbXHNfC1q3Xq9g+2gvcct4P4aHk0eeM677vrPNw9/b6Wv5pAQ4E6gVjB4oIPQnlCKgIuAdABgQExAGM/qz7n/cE9Hzv9Orf5QTinN3V2mrXINXf0pTR1NDo0G3RCtPy1NfXKtqc3bLgMOWq6VTupfIP9wf78f5AAh8FhAetCRELHAz0C8YLZAoFCYAGuwMTADz8a/jd84PvruoY5hfh89zg2HXWctMm0VXPvs51z/3QLNN41STYfdvO3m7joOfY7Dbx9PVk+uH/pQP6B/EKjw2xDyERFRJxEroRzRCYDpAMYAn3BbkBk/0R+Tz0PO/b6ebkMOB+3MrYMtaX037SEdL00tTU0Nd52mrdmOC55EnoVO0r8hj4XP3wAsoHIA3GEF4UKRegGWIbZhyCHEscxRrjGN0V+RIYD84KtQV/AEf7P/Z/8Z7smOfK43Tg/d0e3BzbfNvh3CzffuHI5EvozeuV7xf0m/h1/TMCLggGDt4T/BcgHO8fEyM5JdcmVietJw0n+iWTI6ggnRwyGYwUmg8aCv8E/f7K+X70L/D/69voueU/5NXjsORm5g3oZeoR7mzxSvXG+B39uwG9Bs8LsRB+FskcdCIjJz4r0y1LML0xxDKTMt8xxTBULqormygsJL8fSRofFcAOYgkoA9X9n/j29K3wr+2t6/nrmuy07UbvUfH48lz1Wvhk/XkCcQg7DiQUZxk/HlkjVClLLrcyQDZzOLU6STvJO+86RDlXN1g0oDBuLJsnNyJZHFEW6A9qCkME+f7N+aP19PFX8IHv8e+y75zvi/BY8wb3AvuT/48EWwk4D/4URxuXINIlmyoGMMU0qjhTO0g9oz4tPzw/Lj58PJY5KTbfMfss6ieKIi4cbhbtD+MJDwSM/s75XfZE82rxhfDA8InwzPCU8kT1Ofht/NgA9gXyCgkRlRaJHD4hYCbwKgUwozMMN/44kTo/O2Y7eDrDOBA2EzNXLzAroyU6IJIauRS+Dq0IDwOm/Rn5U/XV8Vbvze2y7Ajtee317cbv6PJ/9hz7hf92BPsIhQ6ME/UYzx3OIt0m2iqkLcowJTIZM9IyEDLwMA0v3iu+KMQkkyBuGwkWCBC0Cu8EIv+q+RP1qvD67JjpK+dm5tflQuav563p8OtQ7oTx7fTI+Or9GALsBpIL5hB9FcoZMR1OIMYhwyM6JPMk8iPXIhkhux4VG4YXmhJLDhsJawQl/zj6v/Tn7y/rjueO49zgtd5y3QPd19yv3XjfceEB5P7m1+oy7mDy6vZr+/X/PQSOCCsMcA/BEc0T1hTuFf8VvhWEFL8ScRCuDfQJvAX6AKn8zPcK89HtT+k65GbgS9xv2QbWodSr05TTYNNe1MrVrNdQ2rvdj+BX5BXodOyl8DT1qPlu/ewAmQP5BaYHwggOCTMJxwisB/kFDQR+Ae39bvqu9m3yLe5y6Zzl/OBJ3WvZ3db602/SKNCnzyjP3s+z0D3SStSz1qnZi91c4DXkY+fP62rvcfPN9sD5+PtF/sv/PQGIAW4BtABj/wn+lfsB+Qb2P/Ly7uPq3+Yv44nf59v01wXVEtL2zxTOxc37zJ7N8c0uz7PQXdM91mDZiNxY4KnjjucA6zPvMfLu9HL3E/pw+zD9V/3V/Xv9L/2e+xL6nvfU9ODxOe/h67PomOQf4aPdMdqf15/UCdIv0BrP8s60z/vPotEb03TVxNc426Xed+ID5qjpYO0D8Zbz+/Yf+bL7Lf3C/lf/LwCa/1D/vf1+/AL6wPdt9efyi+9N7L7ohuZe44fgvd3D287ZcNhB1x7XS9cP2E/ZmdoY3UDfaeLV5Wrpee388CD0Qffp+fz8+P79ADACfAOnAzAEVgOIAscAV//0/Nb6B/iS9ajyoe8W7DTppObQ5JvipuCh3hPett2l3YfdG9+Q4ADjY+UY6OnqGe5n8Rn1kvjS+0j+GwFaAzgF8wbgB6wIjAhvCMQGhQWEA4EBov52/Cn5g/Za847wI+7966fp8+eM5V3k9+O85Nbk6uU15w7qKuyD7+XxQ/Vb+En89P/zAhYGzQktDNgOVxAGEgIS/hEAEQwQ7w6vDFgKrgfqBBQBq/3t+iT4h/Ua87Hwz+6g7UPsneto7Dvtru6T8JXzDvab+YD8VQCtAyIIHQtuD4gSvBXyF60ZThtJHEocNRyvGiUZRBbmE8kQjQ2/CbcFuQEq/nz63fZ18xTxTe887tvtfO5r79rw2PKh9e746fxhAYsFdAo3DwwU5hetG+seGCLHI/4loybuJsolEyT6IUEfFBx9GHMT8w6ECXIFqwA+/NT3j/Ql8QbvPO0M7Tvt5u7T8N3zDfcf+6n/xwQhCuEPOBWUGs4fdSSIKJQrJy6xL+YvkC+QLkEsqynTJXkhWBzwFj8RXAttBXT/vfn49Fzw9O0L62fqWOrO6+LtE/Eo9D74HP0nA9EJHBF3Fy4erSSsKmovxzOjNgc5tjlnOa83lDXmMdwtuChPIhccahUEDpQGVf9K+ePzHO8U63fotuZ95u7n0elT7UHxcfbZ+5QCFwlxEd8YOCAEJ2UtrDJdN0Q6wTxfPSI99DpeOKczti5PKBki/BpsE3ML7gPL+8n0su526XHlHuPP4VHih+QK6NjsHPIl91T9BAVeDZcVvx2yJXoseDLCNg06lzu6PL878zkYN48z3S6iKcwixRt6EyYLkAKy+szyF+3H5+Tjv+DB3+nfbuLV5d7qSfA9953+cAZNDrgWfB4/JtgsrTK5Njo55ToBO6M5GTdiM7ku0CjgIbsarRKDCo4BtPmJ8v3rDObB4brett2F3RHgs+Ph6IHuevW1/KcFCQ4tF88frCjzL8o1YDrRPLU93D0XPAU5KDTCLt4nbiB/FzAOuwNo+gnxH+ht4Gjai9Zg1GHUq9VX2NvcseK+6UHyFPvfBMsOVxnKI1EtFjWFO98/aUKWQudBSj97PK03tTHdKQEhmxZUCxj/lPOf55Ld+9SizlPJUcdnxvvH1Mrwzx7X6+Bj6672BgMrDzwaIibXMGI5Lz9jQ/VFcEZRRQBDmj8jO141yS15JHcZiAww/sjw1+Ou2CPPGce+wVq/yb4EwXHEusrC0qXdaej89CkC5g9rHEMpoDMBPExBjkS1RaNF/UPsQYc+DTpnM+0rKiKEFmQIDPm26ZfbP8/PxIy8wrc4tke2Crkbv7jGVNB62/jnv/W8AwUSVB+pK2Y1Az2JQKZCXELDQbA+zjtcN5Iy9SuVI5gYWQvM+5Lspd3BzwvDcrlQshGvea6lsD21rrz0xdfR4N447RP8gwq7GCQmzTAVOMI7mT1lPX88ljopNwgzoS0zJzQefRO0BWD27+Tl1EvFtLjZrnSouKSjpHWnKK1ttL6+c8oM2VboUPikB4wW1SJKLUMz0DaTN3o30TXVM54wgSzPJugfvBZiC8X8UOzH2rLJ2Lqzrqql2Z+SnfOeDKOYqdayvL28y3baYuqf+k4KoxhPJAMs8DAHM9kzUzI4MBstfClVJGweARZtDNz++O703R7Nx7zzrq+jKJ3zmTqaAZ2Po8KrpLYawyTSMOE98TABqBA1HVsmOiyNLocvNy+aLegq9CbzIVAb2hI0CGP6xeqo2UnJOLqirUqjxJ0em0+c4Z9lpYitbbkQx8XVM+VK9H8DJRJPHZ4lSiqLLK4sUyy8KZYmfCF9G54TAwoW/ljv1N4iz8rAtrQYqrei6J6vnnWhyKbqrTW4g8QU0mbgfe9t/qgLnxgrIsQoviukLAAswSkCJswhJxtmEw0Jdvzf7APerc6pwBi0garDoy+hzqDZo9apArGTuwnIs9Wi5Pvy5gEoD2kbBSQsKpIthi66LN0ppCVpIDwZxg+TBPf2puih2Z/LYr8Qtfetfqljp++oBq04tCC9pMg+1cnid/AN/zIM+RgbIsop2C1/LzQv7SzNKJAj9hs6E3kH//r87E/fD9Jjxru8frbpspmy87TeuX/B78o91jji+u7e/AYK0BUqIHcoPS5WMfAx9TDOLRco/iA0F2IMav8d8t/k/tmBz3XGDcAPvce8R79+w6HKttOr3iDrGPlgBkMTih4PKasv3DQ7N8A2RTQHMEMp2CBvFmkKqfxs7dzettLFx8m+27kFuK25+L2RxMPNc9kb5vf04QPPEpIgsSyqNs084T9mQC8+xjrUNC0taCKPFWgFVfTf4hXTCsXLuvSyMK+4rnWxV7iqwo3OCN0B7Uv+Fw/UH+4uijocQuVG7UfvRqZEmEDKOqoyyShpG3sKpfYO46PQ0cBJtN+r3Kj6qaqud7fnwlXRyOEu9PoG4BrcLMw7xkUwTNtOw0+2TiBMf0d+Qck5xS81IjwRnvw46ELU78Nst+6veaxZrtOzu73uyq/adOyC/yMTuiUvNkdD7UsCUTNT71IzUcBN1EiLQjo6qC9JIjERZf/s7NXcoc/nxvTB/cDtw9/KnNSY4ULvz/7PDSIdWCq6Nm5AO0e9SVdKHUjsRJg/hzhlL+gkjxjxCnb+EvTA6svjfd9Y3irfC+NP6WnxlPpHBIIOoxeFH/Yl4CqVLUMuDS3AKcgkKR7QFaMN6gTa/HT1J/B07Jjruey18Ij0b/qAAdIJQRJnGysjMyk5LWUv7S4iLQMoUiHfGLIPOgW4+i3w6eai3uDZ6dfg13XaqeAu6c3yT/7kClEXoSPTLqs3ST5+QiZEDUKZPQs2LSx9HygSdwKC89/kXdgizkHH9MMaxS3JVtDk2p3nrfWUBUAVsSQFMto95UWjSqpKCklpRPA9hjWoKZgbrwvj+n7rU9wW0HnG/cFcwRnEaMp/1A3hYO5w/ecMHxwIKaE0dTyFQdBCrEFsPkU4jS+oJWgZWQwg/vbx4uZO3jrYjdVt1bfY1d1g5lnv3fk5BKkOexitIPslminMKgcq+SWsILEZixHWCNoAa/nR8u3sH+oI6ojrae7J8uP40/9NB1QOlxSeGcocjB6RHuIbvRdsEQ8L0wMN/eH1TPDa6jvoDuea6LnrTPDj9kj+mwWoDRgV4BomHwIifiKNIfsdGBnvEd0KaALr+kvzeOvg5WXjIuP75FDozu2M9Gr8BwWzDaoVphuDICYjeSOjIQkePhiREQ8JpQAv+ATxHOoj5S7i1OGX443nGeyy8rD6RwM9CzcTHhnhHfofYSCXHlUbchUjDxMIpQBW+fnyDO0v6TXnQufE6PDr/vC99kD9PwT8CngQ4xOVFlMXRhawEzgPSAoqBOD9HPhf8yPvF+yc6hHrZewP8Pn0GPv2ANoHNA3wEm8VjhdjFxcWyxL8DTgIGwK1++z1OvBJ7ALpj+fc5oDoO+xb8RH3vP3RA+kJNw7/EZQUQhViFFgS4Q7PCoAF6QBX+2X2bvLG72vusu3S7v7w0fME90n79v5kA50GTAnGCjEM1QuiCsYI5waeA/cA1v3s+y35GfiU9wr4nPj4+f36Af2P/o8A8AH7AqUDBQT7A6sDiAKYAWEAWv9Q/r/9Wf0f/Vn9zf38/TL+Z/+c/z8AZgBpAJ3/m//S/0L/lP6X/s39Kv6//WX++P5nAOEAIgK/Ar8DrgPHA0QDmAK/AWoA9/5f/Xj7Ovpx+IH3yvZA9//3Lfmi+n38af5FAeMDOQY5CB0JMgp9CoUKPQl2B3MFFQNJALv9qvu5+fb3L/eS9ob3D/hs+WH6lfzq/X0AyQFwA44EugVyBsQGZwZbBmcFGQVjA5UCWQHnAKwAdQAGAEIAGQC5APEArQFDAncCNQL+AYMBRQGsAL3/F/5D/a38FPwV/J38TP24/f7+iAB3AjgDLgTyBA4GkQYnB9sGYQYKBfUDrwGNADr+Gf1d+4v6uPlf+Qz59vl5+tj7Df1+/hsA6wEZA4oE7wS4BXoFQAUlBP4CvQEeAPL9Ivzw+b74gPdV9jX2rPVS9gb3yvic+qD8/f6oAGMCTQQSBbIFdAVsBV4EYAMBAXz/Hf04+3P4Y/cr9aDzvPIy88fzSfQ69YT3cfny+wv+AQGWAp8EBgaaBrsGngbEBdUDOgLW/3j9xPpT+LD2pvQB87HxN/Fd8RXya/NI9UX3Nvk6/HP+YAFTA0UF8gWjBkUGTgZvBWYERwInAK79RPu2+Nf2fvT88pbxFPEC8RXydfJI9Kb13feA+Sn7Hf3F/gYAxgAmAcABMwHfAOn/Lv9V/hH9ePzH+9b6MPpf+Z34WPjg99b3APf99hr3X/eG92n3VPe29zP3svdl9/X3A/gM+X75v/oY+2T88PwI/uf+jP+1/5L/Y/9Z/23+7f1e/DL7/PiQ9xn2S/WA9HLzivKU8hbz9/Nj9VD2Kfih+RL8yf1B/3gAcwFuARYB0gC1AJj/pP5I/bf7+vmw+LX2mPVt9MH0f/QI9VT1WPZ/9yP5BPqC+7P8+P2r/nj/HQC2AGQABgAG/5r+Vf3Q/L/7+/om+nL5Ivne+Gj4DfgL+IL4Afl1+Qf6x/qW+wz8lPzu/I79R/7//or+8f4p/sz9Q/2j/BD8B/x5+/H6Mvps+qf5k/ka+cj5pPn/+Rz6DPtt+1r88PyZ/b79Sv7Q/iX/h/6v/gz+A/5f/dP8ZvwZ/In7+Pqj+p/6jvqK+r36y/p3+4v7L/y3/PH81P1j/s3+DP8g/6L/VP+n/wr/sv9X/xn/SP5P/uv9Nf6t/fH9rP2v/QP+Ff4d/oz+Rf6l/lX+pf6k/qn+Av92/3P/yP/Y/wUACADT/5EAsADZAB4BBgFXAYwBsQHXAS8BAQGYAEgA2v+8/2n/zf9I/4H/w/48/zv/9f8gAHoAGAG7AcIBdQLZAscCmwIBA3sC2QK3AvgCZwJAAqQBfwH8ALUAUAAGABQAfAAiAJMAlgCNAMEAJwFRAa4BcQKxAuwClQKUAosCmAJ8ApcCEAIRAscBrwGSAYcBRQEuAaQA6ABcAOwAxQBYAeUAcQEYAVUBZgELArwBLAJmAugC5wIMA/ICIAO3At0CVQJcAhYC8wHKAacBhQFwAYMBegGOARQBZwGcATwCWgKtAn8C6wIBAyUDKwP9AvsC/AKiArwCNQJtAtEB0QERASMBqgC1AKsAvQCoAMwAuQCuAKEA/gDLAFwBDQFuAVQB/wGPAYUBgwFxARoBKwEXAfwA2wDPAHsAsgBcAP//+v+z/4T/S/9L//r+8P5D/7z/yf+IAPr/dABVAFIAXACcALYA5gDkABIBpgCoAOr/0v9f/2//0f7w/j3+ev4a/hD+7v02/kz+';
+ chat_notify_audio = new Audio("data:audio/wav;base64," + base64string);
+
}
// Issue a pop-up notification using the web standard Notification API
// https://developer.mozilla.org/docs/Web/API/notification
var chat_issue_notification = function (theBody,theTitle) {
- if ( !chat_notify_granted ) {
+ if ( !chat_notify_granted || !chat_notify_enabled) {
return;
}
var nIcon = "/images/icons/48/group.png";
@@ -244,8 +256,38 @@ var chat_issue_notification = function (theBody,theTitle) {
n.onclick = function (event) {
setTimeout(n.close.bind(n), 300);
}
- // TODO: Allow audio notification option
- //chat_notify_audio.play();
+ if(chat_notify_audio_enabled) {
+ chat_notify_audio.play();
+ }
+}
+
+
+function toggleChatNotificationAudio() {
+ if(!chat_notify_audio_enabled) {
+ chat_notify_audio_enabled = true;
+ $('#toggle-notifications-audio-icon').removeClass('fa-volume-off');
+ $('#toggle-notifications-audio-icon').addClass('fa-volume-up');
+ }
+ else {
+ chat_notify_audio_enabled = false;
+ $('#toggle-notifications-audio-icon').removeClass('fa-volume-up');
+ $('#toggle-notifications-audio-icon').addClass('fa-volume-off');
+ }
+}
+
+function toggleChatNotifications() {
+ if(!chat_notify_enabled) {
+ chat_notify_enabled = true;
+ $('#toggle-notifications-icon').addClass('fa-bell');
+ $('#toggle-notifications-icon').removeClass('fa-bell-slash-o');
+ $('#toggle-notifications-audio').removeClass('disabled');
+ }
+ else {
+ chat_notify_enabled = false;
+ $('#toggle-notifications-icon').addClass('fa-bell-slash-o');
+ $('#toggle-notifications-icon').removeClass('fa-bell');
+ $('#toggle-notifications-audio').addClass('disabled');
+ }
}
function chatJotGetLink() {
diff --git a/view/tpl/conv_item.tpl b/view/tpl/conv_item.tpl
index d9c60fc3b..817a03028 100755
--- a/view/tpl/conv_item.tpl
+++ b/view/tpl/conv_item.tpl
@@ -78,82 +78,95 @@
</div>
{{/if}}
<div class="wall-item-tools">
- <div class="wall-item-tools-right btn-group pull-right">
- {{if $item.like}}
- <button type="button" title="{{$item.like.0}}" class="btn btn-default btn-sm" onclick="dolike({{$item.id}},'like'); return false;">
- <i class="fa fa-thumbs-o-up" ></i>
- </button>
- {{/if}}
- {{if $item.dislike}}
- <button type="button" title="{{$item.dislike.0}}" class="btn btn-default btn-sm" onclick="dolike({{$item.id}},'dislike'); return false;">
- <i class="fa fa-thumbs-o-down" ></i>
- </button>
- {{/if}}
- {{if $item.isevent}}
- <button type="button" title="{{$item.attend.0}}" class="btn btn-default btn-sm" onclick="itemAddToCal({{$item.id}}); dolike({{$item.id}},'attendyes'); return false;">
- <i class="fa fa-check" ></i>
- </button>
- <button type="button" title="{{$item.attend.1}}" class="btn btn-default btn-sm" onclick="dolike({{$item.id}},'attendno'); return false;">
- <i class="fa fa-times" ></i>
- </button>
- <button type="button" title="{{$item.attend.2}}" class="btn btn-default btn-sm" onclick="itemAddToCal({{$item.id}}); dolike({{$item.id}},'attendmaybe'); return false;">
- <i class="fa fa-question" ></i>
- </button>
- {{/if}}
-
- {{if $item.canvote}}
- <button type="button" title="{{$item.conlabels.0}}" class="btn btn-default btn-sm" onclick="dolike({{$item.id}},'agree'); return false;">
- <i class="fa fa-check" ></i>
- </button>
- <button type="button" title="{{$item.conlabels.1}}" class="btn btn-default btn-sm" onclick="dolike({{$item.id}},'disagree'); return false;">
- <i class="fa fa-times" ></i>
- </button>
- <button type="button" title="{{$item.conlabels.2}}" class="btn btn-default btn-sm" onclick="dolike({{$item.id}},'abstain'); return false;">
- <i class="fa fa-question" ></i>
- </button>
+ <div class="wall-item-tools-right pull-right">
+ {{if $item.toplevel && $item.emojis && $item.reactions}}
+ <div class="btn-group dropdown">
+ <button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" id="wall-item-react-{{$item.id}}">
+ <i class="fa fa-smile-o"></i>
+ </button>
+ <ul class="dropdown-menu dropdown-menu-left" role="menu" aria-labelledby="wall-item-react-{{$item.id}}">
+ {{foreach $item.reactions as $react}}
+ <li role="presentation"><a role="menuitem" href="#" onclick="jotReact({{$item.id}},'{{$react}}'); return false;"><img class="dropdown-menu-img-sm" src="/images/emoji/{{$react}}.png" alt="{{$react}}" /></a></li>
+ {{/foreach}}
+ </ul>
+ </div>
{{/if}}
-
- <button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" id="wall-item-menu-{{$item.id}}">
- <i class="fa fa-caret-down"></i>
- </button>
- <ul class="dropdown-menu" role="menu" aria-labelledby="wall-item-menu-{{$item.id}}">
- {{if $item.share}}
- <li role="presentation"><a role="menuitem" href="#" onclick="jotShare({{$item.id}}); return false"><i class="fa fa-retweet" title="{{$item.share.0}}"></i> {{$item.share.0}}</a></li>
- {{/if}}
- {{if $item.plink}}
- <li role="presentation"><a role="menuitem" href="{{$item.plink.href}}" title="{{$item.plink.title}}" ><i class="fa fa-external-link"></i> {{$item.plink.title}}</a></li>
- {{/if}}
- {{if $item.edpost}}
- <li role="presentation"><a role="menuitem" href="{{$item.edpost.0}}" title="{{$item.edpost.1}}"><i class="editpost fa fa-pencil"></i> {{$item.edpost.1}}</a></li>
+ <div class="btn-group dropdown">
+ {{if $item.like}}
+ <button type="button" title="{{$item.like.0}}" class="btn btn-default btn-sm" onclick="dolike({{$item.id}},'like'); return false;">
+ <i class="fa fa-thumbs-o-up" ></i>
+ </button>
{{/if}}
- {{if $item.tagger}}
- <li role="presentation"><a role="menuitem" href="#" onclick="itemTag({{$item.id}}); return false;"><i id="tagger-{{$item.id}}" class="fa fa-tag" title="{{$item.tagger.tagit}}"></i> {{$item.tagger.tagit}}</a></li>
+ {{if $item.dislike}}
+ <button type="button" title="{{$item.dislike.0}}" class="btn btn-default btn-sm" onclick="dolike({{$item.id}},'dislike'); return false;">
+ <i class="fa fa-thumbs-o-down" ></i>
+ </button>
{{/if}}
- {{if $item.filer}}
- <li role="presentation"><a role="menuitem" href="#" onclick="itemFiler({{$item.id}}); return false;"><i id="filer-{{$item.id}}" class="fa fa-folder-open" title="{{$item.filer}}"></i> {{$item.filer}}</a></li>
+ {{if $item.isevent}}
+ <button type="button" title="{{$item.attend.0}}" class="btn btn-default btn-sm" onclick="itemAddToCal({{$item.id}}); dolike({{$item.id}},'attendyes'); return false;">
+ <i class="fa fa-check" ></i>
+ </button>
+ <button type="button" title="{{$item.attend.1}}" class="btn btn-default btn-sm" onclick="dolike({{$item.id}},'attendno'); return false;">
+ <i class="fa fa-times" ></i>
+ </button>
+ <button type="button" title="{{$item.attend.2}}" class="btn btn-default btn-sm" onclick="itemAddToCal({{$item.id}}); dolike({{$item.id}},'attendmaybe'); return false;">
+ <i class="fa fa-question" ></i>
+ </button>
{{/if}}
- {{if $item.bookmark}}
- <li role="presentation"><a role="menuitem" href="#" onclick="itemBookmark({{$item.id}}); return false;"><i id="bookmarker-{{$item.id}}" class="fa fa-bookmark" title="{{$item.bookmark}}"></i> {{$item.bookmark}}</a></li>
- {{/if}}
- {{if $item.addtocal}}
- <li role="presentation"><a role="menuitem" href="#" onclick="itemAddToCal({{$item.id}}); return false;"><i id="addtocal-{{$item.id}}" class="fa fa-calendar" title="{{$item.addtocal}}"></i> {{$item.addtocal}}</a></li>
- {{/if}}
- {{if $item.star}}
- <li role="presentation"><a role="menuitem" href="#" onclick="dostar({{$item.id}}); return false;"><i id="starred-{{$item.id}}" class="fa fa-star {{$item.star.isstarred}}" title="{{$item.star.toggle}}"></i> {{$item.star.toggle}}</a></li>
- {{/if}}
- {{if $item.drop.dropping}}
- <li role="presentation"><a role="menuitem" href="#" onclick="dropItem('item/drop/{{$item.id}}', '#thread-wrapper-{{$item.id}}'); return false;" title="{{$item.drop.delete}}" ><i class="fa fa-trash-o"></i> {{$item.drop.delete}}</a></li>
- {{/if}}
- {{if $item.item_photo_menu}}
- <li role="presentation" class="divider"></li>
- {{$item.item_photo_menu}}
- {{if $item.edpost && $item.dreport}}
- <li role="presentation"><a role="menuitem" href="dreport/{{$item.mid}}">{{$item.dreport}}</a></li>
+ {{if $item.canvote}}
+ <button type="button" title="{{$item.conlabels.0}}" class="btn btn-default btn-sm" onclick="dolike({{$item.id}},'agree'); return false;">
+ <i class="fa fa-check" ></i>
+ </button>
+ <button type="button" title="{{$item.conlabels.1}}" class="btn btn-default btn-sm" onclick="dolike({{$item.id}},'disagree'); return false;">
+ <i class="fa fa-times" ></i>
+ </button>
+ <button type="button" title="{{$item.conlabels.2}}" class="btn btn-default btn-sm" onclick="dolike({{$item.id}},'abstain'); return false;">
+ <i class="fa fa-question" ></i>
+ </button>
{{/if}}
+ <button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" id="wall-item-menu-{{$item.id}}">
+ <i class="fa fa-caret-down"></i>
+ </button>
+ <ul class="dropdown-menu dropdown-menu-right" role="menu" aria-labelledby="wall-item-menu-{{$item.id}}">
+ {{if $item.share}}
+ <li role="presentation"><a role="menuitem" href="#" onclick="jotShare({{$item.id}}); return false"><i class="fa fa-retweet" title="{{$item.share.0}}"></i> {{$item.share.0}}</a></li>
+ {{/if}}
+ {{if $item.plink}}
+ <li role="presentation"><a role="menuitem" href="{{$item.plink.href}}" title="{{$item.plink.title}}" ><i class="fa fa-external-link"></i> {{$item.plink.title}}</a></li>
+ {{/if}}
+ {{if $item.edpost}}
+ <li role="presentation"><a role="menuitem" href="{{$item.edpost.0}}" title="{{$item.edpost.1}}"><i class="editpost fa fa-pencil"></i> {{$item.edpost.1}}</a></li>
+ {{/if}}
+ {{if $item.tagger}}
+ <li role="presentation"><a role="menuitem" href="#" onclick="itemTag({{$item.id}}); return false;"><i id="tagger-{{$item.id}}" class="fa fa-tag" title="{{$item.tagger.tagit}}"></i> {{$item.tagger.tagit}}</a></li>
+ {{/if}}
+ {{if $item.filer}}
+ <li role="presentation"><a role="menuitem" href="#" onclick="itemFiler({{$item.id}}); return false;"><i id="filer-{{$item.id}}" class="fa fa-folder-open" title="{{$item.filer}}"></i> {{$item.filer}}</a></li>
+ {{/if}}
+ {{if $item.bookmark}}
+ <li role="presentation"><a role="menuitem" href="#" onclick="itemBookmark({{$item.id}}); return false;"><i id="bookmarker-{{$item.id}}" class="fa fa-bookmark" title="{{$item.bookmark}}"></i> {{$item.bookmark}}</a></li>
+ {{/if}}
+ {{if $item.addtocal}}
+ <li role="presentation"><a role="menuitem" href="#" onclick="itemAddToCal({{$item.id}}); return false;"><i id="addtocal-{{$item.id}}" class="fa fa-calendar" title="{{$item.addtocal}}"></i> {{$item.addtocal}}</a></li>
+ {{/if}}
+ {{if $item.star}}
+ <li role="presentation"><a role="menuitem" href="#" onclick="dostar({{$item.id}}); return false;"><i id="starred-{{$item.id}}" class="fa fa-star {{$item.star.isstarred}}" title="{{$item.star.toggle}}"></i> {{$item.star.toggle}}</a></li>
+ {{/if}}
+ {{if $item.drop.dropping}}
+ <li role="presentation"><a role="menuitem" href="#" onclick="dropItem('item/drop/{{$item.id}}', '#thread-wrapper-{{$item.id}}'); return false;" title="{{$item.drop.delete}}" ><i class="fa fa-trash-o"></i> {{$item.drop.delete}}</a></li>
+ {{/if}}
+ {{if $item.item_photo_menu}}
+ <li role="presentation" class="divider"></li>
+ {{$item.item_photo_menu}}
- {{/if}}
- </ul>
+ {{if $item.edpost && $item.dreport}}
+ <li role="presentation"><a role="menuitem" href="dreport/{{$item.mid}}">{{$item.dreport}}</a></li>
+ {{/if}}
+
+ {{/if}}
+ </ul>
+ </div>
</div>
<div id="like-rotator-{{$item.id}}" class="like-rotator"></div>
diff --git a/view/tpl/hdr.tpl b/view/tpl/hdr.tpl
index 3770cb9a6..6a14906f6 100644
--- a/view/tpl/hdr.tpl
+++ b/view/tpl/hdr.tpl
@@ -1,5 +1,5 @@
<div id="banner" class="hidden-sm hidden-xs">{{$banner}}</div>
-<ul id="nav-notifications-template" style="display:none;" rel="template">
+<ul id="nav-notifications-template" rel="template">
<li class="{5}"><a href="{0}" title="{2} {3}"><img class="dropdown-menu-img-sm" data-src="{1}"><span class="contactname">{2}</span><span class="dropdown-sub-text">{3}<br>{4}</span></a></li>
</ul>
diff --git a/view/tpl/jot-header.tpl b/view/tpl/jot-header.tpl
index aeb661008..43df2e175 100755
--- a/view/tpl/jot-header.tpl
+++ b/view/tpl/jot-header.tpl
@@ -349,6 +349,14 @@ function enableOnUser(){
}
}
+ function jotReact(id,icon) {
+ if(id && icon) {
+ $.get('{{$baseurl}}/react?f=&postid=' + id + '&emoji=' + icon);
+ if(timer) clearTimeout(timer);
+ timer = setTimeout(NavUpdate,1000);
+ }
+ }
+
function jotClearLocation() {
$('#jot-coord').val('');
$('#profile-nolocation-wrapper').attr('disabled', true);
diff --git a/view/tpl/profile_advanced.tpl b/view/tpl/profile_advanced.tpl
index c617e6c14..a4c98b1d0 100755
--- a/view/tpl/profile_advanced.tpl
+++ b/view/tpl/profile_advanced.tpl
@@ -33,6 +33,7 @@
<div class="section-content-wrapper">
{{foreach $fields as $f}}
+
{{if $f == 'name'}}
<dl id="aprofile-fullname" class="aprofile">
<dt>{{$profile.fullname.0}}</dt>
@@ -40,6 +41,13 @@
</dl>
{{/if}}
+ {{if $f == 'fullname'}}
+ <dl id="aprofile-fullname" class="aprofile">
+ <dt>{{$profile.fullname.0}}</dt>
+ <dd>{{$profile.fullname.1}}</dd>
+ </dl>
+ {{/if}}
+
{{if $f == 'gender'}}
{{if $profile.gender}}
<dl id="aprofile-gender" class="aprofile">
@@ -72,7 +80,7 @@
{{if $profile.marital}}
<dl id="aprofile-marital" class="aprofile">
<dt><span class="heart"><i class="fa fa-heart"></i>&nbsp;</span>{{$profile.marital.0}}</dt>
- <dd>{{$profile.marital.1}}{{if in_array('with',$fields)}}{{if $profile.marital.with}} ({{$profile.marital.with}}){{/if}}{{/if}}{{if in_array('howlong',$fields)}}{{if $profile.howlong}} {{$profile.howlong}}{{/if}}{{/if}}</dd>
+ <dd>{{$profile.marital.1}}{{if in_array('partner',$fields)}}{{if $profile.marital.partner}} ({{$profile.marital.partner}}){{/if}}{{/if}}{{if in_array('howlong',$fields)}}{{if $profile.howlong}} {{$profile.howlong}}{{/if}}{{/if}}</dd>
</dl>
{{/if}}
{{/if}}
@@ -237,11 +245,11 @@
{{/if}}
- {{if $f == 'work'}}
- {{if $profile.work}}
+ {{if $f == 'employment'}}
+ {{if $profile.employment}}
<dl id="aprofile-work" class="aprofile">
- <dt>{{$profile.work.0}}</dt>
- <dd>{{$profile.work.1}}</dd>
+ <dt>{{$profile.employment.0}}</dt>
+ <dd>{{$profile.employment.1}}</dd>
</dl>
{{/if}}
{{/if}}
diff --git a/view/tpl/profile_edit.tpl b/view/tpl/profile_edit.tpl
index deabc2795..b0211d697 100755
--- a/view/tpl/profile_edit.tpl
+++ b/view/tpl/profile_edit.tpl
@@ -173,7 +173,7 @@
</div>
<div class="clear"></div>
- {{if $fields.with}}
+ {{if $fields.partner}}
{{include file="field_input.tpl" field=$with}}
{{/if}}
@@ -198,7 +198,7 @@
</div>
</div>
{{/if}}
- {{if $fields.keywords || $fields.politic || $fields.religion || $fields.about || $fields.contact || $fields.homepage || $fields.interest || $fields.likes || $fields.dislikes || $fields.channels || $fields.music || $fields.book || $fields.tv || $fields.romance || $fields.education || $extra_fields}}
+ {{if $fields.keywords || $fields.politic || $fields.religion || $fields.about || $fields.contact || $fields.homepage || $fields.interest || $fields.likes || $fields.dislikes || $fields.channels || $fields.music || $fields.book || $fields.tv || $fields.film || $fields.romance || $fields.employment || $fields.education || $extra_fields}}
<div class="panel">
<div class="section-subtitle-wrapper" role="tab" id="miscellaneous">
<h3>
@@ -269,7 +269,7 @@
{{include file="field_textarea.tpl" field=$romance}}
{{/if}}
- {{if $fields.work}}
+ {{if $fields.employment}}
{{include file="field_textarea.tpl" field=$work}}
{{/if}}
diff --git a/view/tpl/profile_vcard.tpl b/view/tpl/profile_vcard.tpl
index b4d21b6e7..7d7d2019a 100755
--- a/view/tpl/profile_vcard.tpl
+++ b/view/tpl/profile_vcard.tpl
@@ -1,6 +1,6 @@
<div class="vcard">
{{if ! $zcard}}
- <div id="profile-photo-wrapper"><img class="photo" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}"></div>
+ <div id="profile-photo-wrapper"><img class="photo" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.fullname}}"></div>
{{/if}}
{{if $connect}}
<div class="connect-btn-wrapper"><a href="{{$connect_url}}" class="btn btn-block btn-success btn-sm"><i class="fa fa-plus"></i> {{$connect}}</a></div>
@@ -25,7 +25,7 @@
{{/if}}
{{if ! $zcard}}
- <div class="fn">{{$profile.name}}{{if $profile.online}} <i class="fa fa-asterisk online-now" title="{{$profile.online}}"></i>{{/if}}</div>
+ <div class="fn">{{$profile.fullname}}{{if $profile.online}} <i class="fa fa-asterisk online-now" title="{{$profile.online}}"></i>{{/if}}</div>
{{if $reddress}}<div class="reddress" oncopy="return false;">{{$profile.reddress}}</div>{{/if}}
{{/if}}
{{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}}
diff --git a/view/tpl/settings_oauth.tpl b/view/tpl/settings_oauth.tpl
index 02ca26234..9582ef52d 100755
--- a/view/tpl/settings_oauth.tpl
+++ b/view/tpl/settings_oauth.tpl
@@ -18,7 +18,7 @@
{{foreach $apps as $app}}
<div class='oauthapp'>
<img src='{{$app.icon}}' class="{{if $app.icon}} {{else}}noicon{{/if}}">
- {{if $app.name}}<h4>{{$app.name}}</h4>{{else}}<h4>{{$noname}}</h4>{{/if}}
+ {{if $app.clname}}<h4>{{$app.clname}}</h4>{{else}}<h4>{{$noname}}</h4>{{/if}}
{{if $app.my}}
{{if $app.oauth_token}}
<div class="settings-submit-wrapper" ><button class="settings-submit" type="submit" name="remove" value="{{$app.oauth_token}}">{{$remove}}</button></div>
diff --git a/view/tpl/wiki.tpl b/view/tpl/wiki.tpl
new file mode 100644
index 000000000..1312f8518
--- /dev/null
+++ b/view/tpl/wiki.tpl
@@ -0,0 +1,277 @@
+<style type="text/css" media="screen">
+ #ace-editor {
+ position: relative;
+ width: 100%;
+ height: 500px;
+ }
+ .fade.in {
+ -webkit-transition: opacity 0.5s 0.5s ease;
+ -moz-transition: opacity 0.5s 0.5s ease;
+ -o-transition: opacity 0.5s 0.5s ease;
+ transition: opacity 0.5s 0.5s ease;
+ }
+</style>
+<div class="generic-content-wrapper">
+ <div class="section-title-wrapper">
+ <div class="pull-right">
+ {{if $showNewWikiButton}}
+ <button class="btn btn-primary btn-xs" onclick="$('#new-page-form-wrapper').hide(); openClose('new-wiki-form-wrapper');">New Wiki</button>
+ {{/if}}
+ {{if $showNewPageButton}}
+ <button class="btn btn-success btn-xs" onclick="$('#new-wiki-form-wrapper').hide(); openClose('new-page-form-wrapper');">New Page</button>
+ {{/if}}
+ <button id="fullscreen-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen();
+ adjustFullscreenTopBarHeight();"><i class="fa fa-expand"></i></button>
+ <button id="inline-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(false);
+ adjustInlineTopBarHeight();"><i class="fa fa-compress"></i></button>
+ </div>
+ <h2>{{$wikiheader}}</h2>
+ <div class="clear"></div>
+ </div>
+ <div id="new-wiki-form-wrapper" class="section-content-tools-wrapper" style="display:none;">
+ <form id="new-wiki-form" action="wiki/{{$channel}}/create/wiki" method="post" >
+ <div class="clear"></div>
+ {{include file="field_input.tpl" field=$wikiName}}
+ <div class="btn-group pull-right">
+ <div id="profile-jot-submit-right" class="btn-group">
+ <button id="dbtn-acl" class="btn btn-default btn-sm" data-toggle="modal" data-target="#aclModal" title="Permission settings" onclick="return false;">
+ <i id="jot-perms-icon" class="fa fa-{{$lockstate}} jot-icons">{{$bang}}</i>
+ </button>
+ </div>
+ <button id="new-wiki-submit" class="btn btn-primary" type="submit" name="submit" >Create Wiki</button>
+ </div>
+ <div>{{$acl}}</div>
+ </form>
+ <div class="clear"></div>
+ <hr>
+ </div>
+
+ <div id="new-page-form-wrapper" class="section-content-tools-wrapper" style="display:none;">
+ <form id="new-page-form" action="wiki/create/page" method="post" >
+ <div class="clear"></div>
+ {{include file="field_input.tpl" field=$pageName}}
+ <div class="btn-group pull-right">
+ <button id="new-page-submit" class="btn btn-success" type="submit" name="submit" >Create Page</button>
+ </div>
+ </form> <div class="clear"></div>
+ <hr>
+ </div>
+
+ <div id="wiki-content-container" class="section-content-wrapper" {{if $hideEditor}}style="display: none;"{{/if}}>
+ <ul class="nav nav-tabs" id="wiki-nav-tabs">
+ <li><a data-toggle="tab" href="#edit-pane">Edit</a></li>
+ <li class="active"><a data-toggle="tab" href="#preview-pane" id="wiki-get-preview">Preview</a></li>
+ <li {{if $hidePageHistory}}style="display: none;"{{/if}}><a data-toggle="tab" href="#page-history-pane" id="wiki-get-history">History</a></li>
+ {{if $showPageControls}}
+ <li class="dropdown">
+ <a data-toggle="dropdown" class="dropdown-toggle" href="#">Page <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a id="save-page" data-toggle="tab" href="#">Save</a></li>
+ <li><a id="delete-page" data-toggle="tab" href="#">Delete</a></li>
+ </ul>
+ </li>
+ {{/if}}
+ </ul>
+ <div class="tab-content" id="wiki-page-tabs">
+
+ <div id="edit-pane" class="tab-pane fade">
+ <div id="ace-editor"></div>
+ </div>
+ <div id="preview-pane" class="tab-pane fade in active">
+ <div id="wiki-preview" class="section-content-wrapper">
+ {{$renderedContent}}
+ </div>
+ </div>
+ <div id="page-history-pane" class="tab-pane fade" {{if $hidePageHistory}}style="display: none;"{{/if}}>
+ <div id="page-history-list" class="section-content-wrapper">
+ <table class="table-striped table-responsive table-hover" style="width: 100%;">
+ {{foreach $pageHistory as $commit}}
+ <tr><td>
+ <table>
+ <tr><td>Date</td><td>{{$commit.date}}</td></tr>
+ <tr><td>Name</td><td>{{$commit.name}}</td></tr>
+ <tr><td>Message</td><td>{{$commit.title}}</td></tr>
+ </table>
+ </td></tr>
+ {{/foreach}}
+ </table>
+ </div>
+ </div>
+
+
+ </div>
+ </div>
+ {{if $showCommitMsg}}
+ <div class="section-content-wrapper">
+ {{include file="field_input.tpl" field=$commitMsg}}
+ </div>
+ {{/if}}
+</div>
+
+<script>
+ window.wiki_resource_id = '{{$resource_id}}';
+ window.wiki_page_name = '{{$page}}';
+ window.wiki_page_content = {{$content}};
+
+ if (window.wiki_page_name === 'Home') {
+ $('#delete-page').hide();
+ }
+ $(document).ready(function () {
+ wiki_refresh_page_list();
+ // Show Edit tab first. Otherwise the Ace editor does not load.
+ $("#wiki-nav-tabs li:eq(1) a").tab('show');
+ });
+
+ var editor = ace.edit("ace-editor");
+ editor.setTheme("ace/theme/github");
+ editor.getSession().setMode("ace/mode/markdown");
+ editor.getSession().setValue(window.wiki_page_content);
+
+ $('#wiki-get-preview').click(function (ev) {
+ $.post("wiki/{{$channel}}/preview", {content: editor.getValue()}, function (data) {
+ if (data.success) {
+ $('#wiki-preview').html(data.html);
+ } else {
+ window.console.log('Error previewing page.');
+ }
+ }, 'json');
+ ev.preventDefault();
+ });
+
+ $('#wiki-get-history').click(function (ev) {
+ $.post("wiki/{{$channel}}/history/page", {name: window.wiki_page_name, resource_id: window.wiki_resource_id}, function (data) {
+ if (data.success) {
+ $('#page-history-list').html(data.historyHTML);
+ } else {
+ window.console.log('Error getting page history.');
+ }
+ }, 'json');
+ ev.preventDefault();
+ });
+
+function wiki_delete_wiki(wikiHtmlName, resource_id) {
+ if(!confirm('Are you sure you want to delete the entire wiki: ' + JSON.stringify(wikiHtmlName))) {
+ return;
+ }
+ $.post("wiki/{{$channel}}/delete/wiki", {resource_id: resource_id}, function (data) {
+ if (data.success) {
+ window.console.log('Wiki deleted');
+ // Refresh list and redirect page as necessary
+ window.location = 'wiki/{{$channel}}';
+ } else {
+ alert('Error deleting wiki!');
+ window.console.log('Error deleting wiki.');
+ }
+ }, 'json');
+}
+
+
+ $('#new-page-submit').click(function (ev) {
+ if (window.wiki_resource_id === '') {
+ window.console.log('You must have a wiki open in order to create pages.');
+ ev.preventDefault();
+ return false;
+ }
+ $.post("wiki/{{$channel}}/create/page", {name: $('#id_pageName').val(), resource_id: window.wiki_resource_id},
+ function (data) {
+ if (data.success) {
+ window.location = data.url;
+ } else {
+ window.console.log('Error creating page.');
+ }
+ }, 'json');
+ ev.preventDefault();
+ });
+
+ function wiki_refresh_page_list() {
+ if (window.wiki_resource_id === '') {
+ return false;
+ }
+ $.post("wiki/{{$channel}}/get/page/list/", {resource_id: window.wiki_resource_id}, function (data) {
+ if (data.success) {
+ $('#wiki_page_list_container').html(data.pages);
+ $('#wiki_page_list_container').show();
+ } else {
+ alert('Error fetching page list!');
+ window.console.log('Error fetching page list!');
+ }
+ }, 'json');
+ return false;
+ }
+
+ $('#save-page').click(function (ev) {
+ if (window.wiki_resource_id === '' || window.wiki_page_name === '') {
+ window.console.log('You must have a wiki page open in order to edit pages.');
+ ev.preventDefault();
+ return false;
+ }
+ var currentContent = editor.getValue();
+ if (window.wiki_page_content === currentContent) {
+ window.console.log('No edits to save.');
+ ev.preventDefault();
+ return false;
+ }
+ $.post("wiki/{{$channel}}/save/page",
+ { content: currentContent,
+ commitMsg: $('#id_commitMsg').val(),
+ name: window.wiki_page_name,
+ resource_id: window.wiki_resource_id
+ },
+ function (data) {
+ if (data.success) {
+ window.console.log('Page saved successfully.');
+ window.wiki_page_content = currentContent;
+ $('#id_commitMsg').val(''); // Clear the commit message box
+ } else {
+ alert('Error saving page.'); // TODO: Replace alerts with auto-timeout popups
+ window.console.log('Error saving page.');
+ }
+ }, 'json');
+ ev.preventDefault();
+ });
+
+ $('#delete-page').click(function (ev) {
+ if (window.wiki_resource_id === '' || window.wiki_page_name === '' || window.wiki_page_name === 'Home') {
+ window.console.log('You must have a wiki page open in order to delete pages.');
+ ev.preventDefault();
+ return false;
+ }
+ $.post("wiki/{{$channel}}/delete/page", {name: window.wiki_page_name, resource_id: window.wiki_resource_id},
+ function (data) {
+ if (data.success) {
+ window.console.log('Page deleted successfully.');
+ var url = window.location.href;
+ if (url.substr(-1) == '/') url = url.substr(0, url.length - 2);
+ url = url.split('/');
+ url.pop();
+ window.location = url.join('/');
+ } else {
+ alert('Error deleting page.'); // TODO: Replace alerts with auto-timeout popups
+ window.console.log('Error deleting page.');
+ }
+ }, 'json');
+ ev.preventDefault();
+ });
+
+ function wiki_revert_page(commitHash) {
+ if (window.wiki_resource_id === '' || window.wiki_page_name === '') {
+ window.console.log('You must have a wiki page open in order to revert pages.');
+ return false;
+ }
+ $.post("wiki/{{$channel}}/revert/page", {commitHash: commitHash, name: window.wiki_page_name, resource_id: window.wiki_resource_id},
+ function (data) {
+ if (data.success) {
+ $('button[id^=revert-]').removeClass('btn-success');
+ $('button[id^=revert-]').addClass('btn-danger');
+ $('button[id^=revert-]').html('Revert');
+ $('#revert-'+commitHash).removeClass('btn-danger');
+ $('#revert-'+commitHash).addClass('btn-success');
+ $('#revert-'+commitHash).html('Page reverted<br>but not saved');
+ // put contents in editor
+ editor.getSession().setValue(data.content);
+ } else {
+ window.console.log('Error reverting page.');
+ }
+ }, 'json');
+ }
+</script>
diff --git a/view/tpl/wiki_page_history.tpl b/view/tpl/wiki_page_history.tpl
new file mode 100644
index 000000000..6ce3ce204
--- /dev/null
+++ b/view/tpl/wiki_page_history.tpl
@@ -0,0 +1,12 @@
+<table class="table-striped table-responsive table-hover" style="width: 100%;">
+ {{foreach $pageHistory as $commit}}
+ <tr><td>
+ <table id="rev-{{$commit.hash}}" onclick="$('#details-{{$commit.hash}}').show()" width="100%">
+ <tr><td width="10%">Date</td><td width="70%">{{$commit.date}}</td><td rowspan="3" width="20%" align="right">
+ <button id="revert-{{$commit.hash}}" class="btn btn-danger btn-xs" onclick="wiki_revert_page('{{$commit.hash}}')">Revert</button></td></tr>
+ <tr><td>Name</td><td>{{$commit.name}} &lt;{{$commit.email}}&gt;</td></tr>
+ <tr><td>Message</td><td>{{$commit.title}}</td></tr>
+ </table>
+ </td></tr>
+ {{/foreach}}
+</table> \ No newline at end of file
diff --git a/view/tpl/wiki_page_list.tpl b/view/tpl/wiki_page_list.tpl
new file mode 100644
index 000000000..1c3254465
--- /dev/null
+++ b/view/tpl/wiki_page_list.tpl
@@ -0,0 +1,10 @@
+{{if $not_refresh}}<div id="wiki_page_list_container" {{if $hide}} style="display: none;" {{/if}}>{{/if}}
+<div id="wiki_page_list" class="widget" >
+ <h3>{{$header}}</h3>
+ <ul class="nav nav-pills nav-stacked">
+ {{foreach $pages as $page}}
+ <li><a href="/wiki/{{$channel}}/{{$wikiname}}/{{$page.url}}">{{$page.title}}</a></li>
+ {{/foreach}}
+ </ul>
+</div>
+{{if $not_refresh}}</div>{{/if}}
diff --git a/view/tpl/wikilist.tpl b/view/tpl/wikilist.tpl
new file mode 100644
index 000000000..be353ca5e
--- /dev/null
+++ b/view/tpl/wikilist.tpl
@@ -0,0 +1,20 @@
+<div id="wiki_list" class="widget">
+ <h3>{{$header}}</h3>
+ <ul class="nav nav-pills nav-stacked">
+ {{foreach $wikis as $wiki}}
+ <li class="dropdown" id="wiki-{{$wiki.resource_id}}">
+ <a class="dropdown-toggle" data-toggle="dropdown" href="#">
+ <b>{{$wiki.title}}</b><b class="fa fa-caret-down pull-right"></b>
+ </a>
+ <ul class="dropdown-menu pull-right">
+ <li><a href="/wiki/{{$channel}}/{{$wiki.urlName}}/Home" title="View {{$wiki.title}}">View</a></li>
+ {{if $showControls}}
+ <li class="divider"></li>
+ <li><a href="#" onclick="wiki_delete_wiki('{{$wiki.title}}','{{$wiki.resource_id}}'); return false;" title="Delete {{$wiki.title}}">Delete wiki</a></li>
+ {{/if}}
+ </ul>
+ </li>
+ {{/foreach}}
+ </ul>
+</div>
+